计算机组成原理
计算机组成原理学习笔记。阅读书籍为唐朔飞老师【计算机组成原理】第3版(笔记中的截图均来自第2版pdf)
概论
概论主要介绍计算机系统的基本组成、应用与发展,对整体内容进行结构性介绍。
1. 计算机系统概论
1.1 计算机系统简介
1.1.1 计算机的软硬件概念
计算机系统包括硬件和软件。
1.1.2 计算机系统的层次结构
高级程序语言,经过编译系统后,翻译得到汇编语言程序;
汇编语言程序,经过汇编系统后,得到机器语言程序;
机器语言程序会被解释为机器指令;
硬件执行机器指令。
1.1.3 计算机组成和计算机体系结构
计算机体系结构是指哪些能够被程序员所见到的计算机系统的属性,即概念性的结构与功能特性。
计算机组成是指如何实现计算机体系结构所体现的属性,包含了许多对程序员而言是透明的硬件细节。
指令系统体现了计算机的属性,这是计算机体系结构的问题,但是指令的实现(如何取指令、分析指令、取操作数、运算、送结果等)这是属于计算机组成问题。
因此,两台机器指令系统相同时,认为它们具有相同的结构,但是这两台机器是如何实现的这个指令系统,则可以完全不同。
1.2 计算机的基本组成
1.2.1 冯诺依曼计算机的特点
1.2.2 计算机的硬件框图
典型的冯诺依曼计算机是以运算器为中心的,但是现代计算机已转化为以存储器为中心了,如下图所示。以运算器为中心,会导致运算器成为计算机系统的瓶颈。
由于运算器和控制器在逻辑关系和电路结构上联系十分紧密,大规模集成电路制作工艺的出现,将运算器和控制器集成在同一个芯片上,即中央处理器CPU,输入与输出设备简称为I/O设备。
因此现代计算机可认为包括三部分:CPU、I/O设备与主存储器(Main Memory)。CPU与主存储器合起来又可称为主机,I/O设备可称为外部设备。
现代计算机组成框图如下图所示。
1.2.3 计算机的工作步骤
用计算机解决问题包括:上机前的准备和上机运行。下面用一个例子来描述整个过程。
上机前的准备 包括:
【例如】:计算{ax^{2}+bx+c}\ 。
首先,建立数学模型,已建立好了,上述公式就是解决某个问题的。
其次,确定上述公式的计算方法:
直观的结果可分为如下8步:
若是将上式子改写为:(ax+b)x+c\ ,则只需要5步:
为了更快地解决问题,选择5步的计算方法,至此计算方法确定了。
最后,编制程序。此处的程序指机器语言程序(高级语言程序最终都会被翻译为机器语言的)。我们要在某机器上运行(ax+b)x+c\ 的运算程序,需要知道该机器的相关信息。假设该机器的指令字长为16位,其中操作码占6位,地址码占10位。机器指令格式如下图:
其中,操作码表示机器所执行的各种操作,如取数、存数、加减乘除、停机、打印等。地址码表示参加运算的数字在存储器内的位置。下图表示了操作码与具体操作的对应表。
在编写上述程序之前,需要先将a、b、c、x \ 存到存储器的相应单元内。
现在可以编写程序了。
至此,面向某机器的机器语言程序就编写完成了,可以进行下一步的上机运行了。
上机运行
为了更清楚地描述计算机内部的运行过程,我们需要了解一个更细化的计算机组成框图。
在介绍程序运行过程之前,得先熟悉一下主存储器、运算器、控制器、I/O四部分。
主存储器
主存储器包括存储器M、各种逻辑部件及控制电路等。
存储体M由许多存储单元组成,每个存储单元又包含若干个存储元件,每个存储元件能存储一个二进制码0/1。存储字就是一个存储单元内存储的这串二进制码,二进制码的长度就是就是存储字长。存储字长可以是8位、16位、32位(8的倍数)。每个存储单元都有一个唯一的地址号,不会与其余存储单元冲突。
主存的工作就是按存储单元的地址号来对存储单元进行读写。这种方式就是按地址存取。为了实现按地址访问的方式,主存中配置了两个寄存器MAR和MDR。
MAR(Memory Address Register)是存储器地址寄存器,用来存放欲访问的存储单元的地址。MAR的位数与存储单元的个数是相关的,如MAR有10位,那么存储单元就有2^{10}\ 个存储单元。
MDR(Memory Data Register)是存储器数据寄存器,用来存放从存储单元中取出/写入的数据。MDR的位数与存储单元的位数,即存储字长是相等的。
随着硬件技术地发展,主存都制成大规模集成电路的芯片,MAR与MDR也都集成在了CPU芯片中。
运算器
运算器最少包括3个寄存器:ACC、MQ、X。当然现代计算机内部往往设有通用寄存器组。ACC是累加寄存器,MQ是乘商寄存器,X为操作数寄存器。
下面是个寄存器所存放的各类操作数。
控制器
控制器是计算机的神经中枢,由它指挥各部件自动、协调地工作。控制器中包括PC、IR、CU。控制器完成一条指令,具体包括3步:
I/O
I/O包括各种I/O设备及其相应的接口。每种I/O设备都由接口与主机联系,它接收CU发出的控制命令,并完成相应的操作。
熟悉完上述四部分,下面根据下图描述一下计算机完成一条取数指令(从存储体中取某个数到ACC中)的全过程。
上面机器的运行过程就是执行一条指令的过程:从存储体中取一个数到ACC的过程。执行(ax+b)x+c\ 的机器语言程序,就是机器顺序执行一条条指令的过程。
1.3 计算机硬件的主要技术指标
1.3.1 机器字长
机器字长是指CPU一次能处理数据的位数,通常与CPU的寄存器位数有关。
字长越长,数的标识范围越大,精度越高。
机器字长对硬件的造价也有较大的影响。
1.3.2 存储容量
存储容量包括主存容量和辅存容量。
主存容量是指主存中存放二进制码的总位数:存储单元的个数乘以存储字长。MAR的位数可以反应存储单元的个数,MDR的位数反应存储字长。
现代计算机以字节数来描述容量的大小。一个字节为8位。
1.3.3 运算速度
计算机的运算速度与许多因素有关:机器的主频、操作类型、主存速度等。
评价运算速度的方式: