第五章 计算机组成
引言:计算机的组成部件可以氛围三大类(或三个子系统):中央处理单元(CPU),主存储器和输入输出子系统。接下来的部分将讨论这些子系统以及如何将这些子系统组成一个计算机。
5.1 中央处理单元
中央处理器(CPU)用于数据的运算。在大多数体系中,它有三个组成部分:算术逻辑单元(ALU),控制单元,寄存器组(快速存储单元)。
5.1.1 算术逻辑单元
算术逻辑单元对数据进行逻辑、移位和算术运算。
相关运算见计算机科学导论学习笔记(四),第四章数据运算
5.1.2 寄存器
寄存器是用来临时存放数据的高速独立的存储单元。CPU中通常有多个寄存器。
1.数据寄存器
计算机在CPU中使用几十个数据寄存器来存储输入数据和输出结果,并且需要一些寄存器来保存运算的中间结果。
2.指令寄存器
计算机存储的不仅是数据,还有存储在内存中相应的程序。CPU的主要只能是从内存中逐条地取出指令,并将取出地指令存储在指令寄存器中并解释执行指令。
3.程序计数器
CPU中另一个通用寄存器是程序计数器。程序计数器中保存当前正在执行地指令,当前地指令执行完后,计数器自动加1,指向下一条指令地内存地址。
5.1.3 控制单元
控制单元控制各个子系统地操作,控制是通过控制单元发送到其他子系统地信号来进行的。
5.2 主存储器
主存储器是存储单元的集合,每一个存储单元都有唯一的标识,称为地址。数据以称为字的位组的形式在内存中传入和传出。字可以是8位、16位、32位或64位等。如果是8位,一般称为一个字节。
5.2.1 地址空间
在存储器中存取每个字都需要有相应的标识符,在硬件层次上,每个字都是通过地址来标识的。所有在存储器中标识 的地址单元的总数称为地址空间。下表给出了经常用来表示存储大小的单位名称:
单位 | 字节数的准确值 | 近似值 |
千字节 | 2^10(1024) | 10^3 |
兆字节 | 2^20(1048576) | 10^6 |
千兆字节 | 2^30 | 10^9 |
兆兆字节 | 2^40 | 10^12 |
作为位模式的地址
由于计算机中都是以位模式存储数,因此存储地址也是位模式表示的。如果一个内存是64K(2^16),字长为一个字节,那么就需要16位的位模式来表示地址。第三章提到,地址用无符号整数来表示,则起始地址通常是0000000000000,最后一个地址位11111111111111111。
通常,一个计算机有N个字的存储空间的话,那么就需要Log2N位无符号整数来确定每一个存储单元。
5.2.2 存储器的类别
主要有两种类型的存储器:RAM和ROM。
1.RAM
随机存取存储器(RAM)可以使用存储单元地址来随机存取一个数据项,而不需要存取位于它前面的所有数据项。RAM与ROM的区别在于,用户可以读写RAM,即用户可以在RAM中写信息,之后可以方便地通过覆盖来擦出原有信息。RAM的另一个特点是易失性。当系统断电后,信息将丢失。即断电后,RAM中的信息会被删除。
2.ROM
只读存储器的内容是制造商写进去的,用户只能读但不能写,它的优点是非易失性。切断电源后,信息也不会丢失。
5.2.3 存储器的层次结构
为了满足速度快且价格低廉的存储器的需求,通常采用存储器的层次结果,即:
·当对速度要求很苛刻时可以使用少量高速存储器。如CPU中的寄存器。
·用适量的中速存储器来存储经常需要访问的数据。例如高速缓冲存储器
·用大量的低速存储器存储那些不经常访问的数据。例如主存
5.2.5 高速缓冲存储器
高速缓冲存储器的存取速度比主存快,但比CPU及其内部寄存器慢。高速缓冲存储器通常容量较小,常被置于主存和CPU之间。
高速缓冲存储器在任何时间都含有主存中的一部分内容的副本。当CPU要存取主存中的一个字时,将按一下步骤进行:
1)CPU首先检查高速缓存
2)如果要存取的字存在,CPU就把它复制;如果不存在,CPU就从主存中拷贝一份需要读取的字的数据块,该数据块将覆盖高速缓冲存储器中的内容。
3)CPU在高速缓存中存取并拷贝该字
由于80-20规则,计算机通常花费80%的时间来读取20%的数据。相同的数据往往被存取多次,因此高速缓存可以存储这20%的数据,使得存取至少快80%。
5.3 输入/输出子系统
输入/输出设备可以分为两大类:非存储设备和存储设备
5.3.1 非存储设备
非存储设备使得CPU与外界可以通信,但它们不能存储信息。
1.键盘和监视器
键盘提供输入功能;监视器显示输出并响应键盘的输入。
其他还有:鼠标、操纵杆等。
2.打印机
5.3.1 存储设备
尽管存储设备被分为输入/输出设备,但它也可以存储大量的信息。它们更见便宜且存储的数据不易丢失。有时称它们为辅助存储设备,通常分为磁介质和光介质两种。
1.磁介质存储设备:磁盘、磁带等
2.光存储设备:
1)CD-ROM 制度光盘
2)CD-R可刻录光盘
3)CD-RW 可重写光盘
5.4 子系统的互连
5.4.1 CPU与存储器的连接
CPU与内存之间通常由称为总线的三组线路连接在一起,分别是:数据总线、地址总线和控制总线。
1.数据总线
数据总线由多根线构成,每根线上每次传送1个位的数据。线的数量取决于字的大小。
2.地址总线
地址总线允许访问存储器的每个字,地址总线的线数取决于存储空间的大小。
3.控制总线
控制总线负责在中央处理器和内存之间传送信息。线数取决于计算机所需要的控制命令的总数。
5.4.2 I/O设备的连接
输入/输出设备的本质与内存和CPU不同,后两者是电子设备,而前者是机电、磁性或光学设备。输入/输出设备相比操作速度慢很多。因此必须要有中介来处理这种差异,通过一种被称为输入/输出控制器或接口的器件连接到总线上。
控制器,或者说接口,可以是串行或并行的设备。串行控制器一次只有一根数据线连接到设备,并行控制器则有数根数据线,使得一次能传送多个位。
(1)SCSI 并行接口
(2)火线 串行接口
(3)USB(通行串行总线)
多个设备可以被连接到一个USB接口上,这个控制器也被称为根集线器。
5.4.3 输入/输出设备的寻址
1.I/O独立寻址
用来读写内存的指令和输入/输出设备的指令是完全不同
2.I/O存储器映射寻址
CPU将输入/输出控制器中的每一个寄存器都看成是内存中的某个字,即没有单独的指令来操作内存或输入输出设备。
5.5 程序执行
通用计算机使用称为程序的一系列指令来处理数据。
5.5.1 机器周期
1.取指令
控制单元命令系统将下一条要执行的指令复制到CPU的指令寄存器中,被复制的指令的地址保存在程序计数器中。复制完成后,程序计数器自动加1指向内存中的下一条指令。
2.译码
当指令置于寄存器后,控制单元进行译码,得到可以执行的二进制代码。
3.执行
控制单元发送任务命令到CPU的某个部件。
5.5.2 输入/输出操作
1.程序控制输入/输出
采用最简单的同步,CPU等待I/O设备
2.中断控制输入/输出
首先CPU告知I/O设备即将开始传输,但是CPU并不需不停地查询I/O设备的状态。当I/O设备准备好了,它通知(中断)CPU。在这种方法中CPU没有被浪费。
3.直接存储器存取(DMA)
这种方法需要一个DMA来承担CPU的一些功能。
5.6 不同的体系结构
5.6.1 CISC
CISI(复杂指令集计算机)体系结构的设计策略是使用大量的指令,包括复杂指令。因此在CISC中进行程序设计较容易,但是指令集的复杂性使得CPU和控制单元的电路非常复杂。减少复杂度的解决方案为程序在两个层面上执行,CPU不直接执行机器语言指令,而是只执行被称为微操作的简单操作。复杂的指令被转换成一系列简单操作然后执行,这种执行机制需要一个被称为微内存的特殊内存,它负责保存机器集中的每个复杂指令的一系列操作。CISC的一个例子就是英特尔奔腾系列处理器。
5.6.2 RISC
RISC(精简指令集计算机)体系结构的设计策略是使用少量的指令完成最少的简单操作。
5.6.3 流水线
现代计算机使用称为流水线的技术来改善吞吐量(单位时间内完成的指令数)。这个理念是如果控制单元能同时执行两个或三个阶段,那下一个指令就可以在前一条指令完成前开始。
5.6.4 并行处理
随着技术的进步和计算机硬件成本的下降,如今可以拥有多个控制单元、多个算术逻辑单元和多个内存单元的计算机。这个思想称为并行处理,可以改善吞吐量。