计算机的组成
- 控制器:是分析和执行指令的部件,也是统一指挥并控制计算机各部件协调工作的中心部件,依据机器指令。
- 运算器:也称算数逻辑单元ALU,主要功能是在控制器的控制下完成更重算数运算和逻辑运算。
- 主存储器:也称内存储器,存储现场操作的信息和中间结果,包括机器指令和数据。
- 辅助存储器:也称外存储器,存储需要长时间保存的各种信息。
- 输入设备:把外部的程序和原始数据传送到计算机中,并转换为计算机内部能识别和接收的信息,如键盘,鼠标,扫描仪。
- 输出设备:将计算机处理结果传输出计算机,如打印机,显示器等。
控制器组成
- 程序计数器PC:存储下一条要执行指令的地址。
- 指令寄存器IR:存储即将要执行的指令。
- 指令编译器ID:对指令中的操作码字段进行分析解释。
- 时序部件:提供时序控制信号。
运算器组成
- 算术逻辑单元ALU:数据算术运算和逻辑运算。
- 累加计算器AC:通用寄存器,为ALU提供工作区,用于暂存数据。
- 数据缓存寄存器DR:写内存时,暂存指令或数据。
- 状态条件寄存器PSW:存储状态标志和控制标志(也可以归为控制器)
计算机系统结构的分类
存储程序:冯•诺依曼
- 计算机(指硬件)应由运算器、存储器、控制器、输入设备和输出设备五大基本部件组成。
- 计算机内部采用二进制来表示指令和数据。
- 将编好的程序和原始数据事先存入存储器中,然后再启动计算机工作
Flynn 分类:提出根据指令流、数据流的多倍性特征对计算机系统进行分类
- 指令流:指机器执行的指令序列;
- 数据流:指由指令流调用的数据序列,包括输入数据和中间结果,但不包括输出数据。
Flynn 把计算机系统分成以下四类
- 单指令流单数据流SISD:是传统的顺序执行的单处理器计算机,其指令部件每次只对一条指令进行译码,并只对一个操作部件分配数据
- 单指令流多数据流SIMD:以并行处理机(矩阵处理机)为代表,并行处理机包括多个重复的处理单元,由单一指令部件控制,按照同一指令流的要求为它们分配各自所需的不同数据
- 多指令流单数据流MISD:具有 n 个处理单元,按 n 条不同指令的要求对同一数据流及其中间结果进行不同的处理。一个处理单元的输出又作为另一个处理单元的输入。这类系统实际上很少见到。有文献把流水线看作多个指令部件
- 多指令流多数据流MIMD:指能实现作业、任务、指令等各级全面并行的多机系统。如多核处理器、多处理机
复杂指令集系统与精简指令集系统
- CISC:(Complex Instruction Set Computing)复杂指令系统计算机,把一些原来由软件实现的、常用的功能改用硬件的指令系统来实现,
- RISC:(Reduced Instruction Set Computing)精简指令系统计算机,尽量简化指令功能,较复杂的功能用一段子程序来实现
CISC复杂指令集系统的主要特点如下:
- 指令数量众多
- 指令使用频率相差悬殊
- 支持很多种寻址方式
- 变长的指令
- 指令可以对主存单元中的数据直接进行处理
- 以微程序控制为主
RISC精简指令集系统的特点
- 指令数量少
- 指令的寻址方式少
- 指令长度固定,指令格式种类少
- 以硬布线逻辑控制为主,提高数据
- 单周期指令执行,采用流水线技术
- 优化的编译器,生成高效率执行的机器代码
- CPU 中的通用寄存器数量多
总线
- 概念:一组能为多个部件分时共享的公共信息传输线路。
总线CPU内外分类
- 内部总线:在CPU内部,寄存器之间和算术逻辑部件ALU与控制部件间传输数据。
- 外部总线:在CPU外部,CPU与内存和输入输出设备之间通讯的通路
总线功能分类
- 地址总线:传送地址信息。
- 数据总线:传送数据信息。
- 控制总线:传送各种控制信号。
存储器
- 概念:用来存放程序和数据的部件
- 主存储器:存储现场操作的信息与中间结果,包括机器指令和数据
- 辅助存储器:辅助存储器也称为外存储器,通常简称为外存或辅存。存储需要长期保存的各种信息
- 输入设备:输入设备的任务是把人们编好的程序和原始数据送到计算机中去,并且将它们转换成计算机内部所能识别和接受的信息方式。按输入信息的形态可分为字符(包括汉字)输入、图形输入、图像输入及语音输入等。目前,常见的输入设备有键盘、 鼠标、扫描仪等。
- 输出设备:输出设备的任务是将计算机的处理结果以人或其他设备所能接受的形式送出计算机。目前,最常用的输出设备是打印机和显示器。有些设备既可以是输入设备,同时也可以是输出设备,例如,辅助存储器、自动控制和检测系统中使用的数模转换装置等。
存储器分类
- 高速缓冲存储器cache:存取比主存还快,容量很小,一般存储当前急需处理的程序和数据。
- 主存:cpu直接访问,存取速度快,但容量小,一般存储当天的程序和数据。
- 辅存:主机外的存储,容量大价格低,但存取慢,一般存储暂时不参与运行的程序和数据。
存储器存取方式
- 顺序存取:存储器的数据以记录的形式进行组织。对数据的访问必须按特定的线性顺序进行。磁带存储器采用顺序存取的方式。
- 直接存取:与顺序存取相似,直接存取也使用一个共享的读写装置对所有的数据进行访问。但是,每个数据块都拥有唯一的地址标识,读写装置可以直接移动到目的数据块所在位置进行访问。存取时间也是可变的。磁盘存储器采用直接存取的方式。
- 随机存取:存储器的每一个可寻址单元都具有自己唯一的地址和读写装置,系统可以在相同的时间内对任意一个存储单元的数据进行访问,而与先前的访问序列无关。主存储器采用随机存取的方式。
- 相联存取:相联存取也是一种随机存取的形式,但是选择某一单元进行读写是取决于其内容而不是其地址。与普通的随机存取方式一样,每个单元都有自己的读写装置,读写时间也是一个常数。使用相联存取方式,可以对所有的存储单元的特定位进行比较,选择符合条件的单元进行访问。为了提高地址映射的速度,Cache 采取相联存取的方式。
主存分类
- 随机存取存储器:既可以写入也可以读出,但断电后信息无法保存,因此只能用于暂存数据。
- 只读存储器:可以看作 RAM 的一种特殊形式,其特点是:存储器的内容只能随机读出而不能写入。
内存编址计算
题:内存地址从AC000H到C7FFFH,共有多少个地址单元,如果该内存地址按字(16bit)编址,由28片存储器芯片构成。已知构成此内存的芯片每片有16K个存储单元,则该芯片每个存储单元存储 多少 位
- 内存地址从 AC000H 到 C7FFFH,则共有 C7FFFFH-AC000H=1BFFFH 个地址单元(转换为十进制后,为 112KB)。
- 如果该内存地址按字(16bit)编址,则共有 112KB*16 位。
- 假设该内存由 28 片存储器芯片构成,已知构成此内存的芯片每片有 16KB 个存储单元,
- 则该芯片每个存储单元存储(112KB*16)/(28*16KB)=4 位。
内存编址实例
- 题:地址区间A4000到CBFFFH,每个存储单元存储16位二进制,则有(CBFFF-A4000)+1个字节,28000H个,28000=0010 1000 0000 0000 0000H = 2(17次方)+2(15次方) = 2的10次方*(2的5次方+2的7次方) = 1024b * (32+128) = 160 kb。
- 如为4片存储器芯片 = 160kb/4 = 40kb
辅助存储器磁盘组成
- 柱面:几个磁盘有多个柱面
- 磁道:每个柱面有N个圈磁道
- 扇区:每个柱面有N个扇区把磁道分分割
Cache 存储器
CPU 需要读取数据时,首先在 Cache 中查找是否有所需内容,如果有,则直接从 Cache 中
读取;若没有,再从内存中读取该数据,然后同时送往 CPU 和 Cache。
题:设某计算机主存的读/写时间为 100ns,有一个指令和数据合一的 Cache,已知该Cache 的读/写时间为 10ns,取指令的命中率为 98%,取数的命中率为 95%。在执行某类程序时,约有 1/5 指令需要存/取一个操作数。假设指令流水线在任何时候都不阻塞,则设
置 Cache 后,每条指令的平均访存时间约为:
(0.02*100ns+0.98*10ns)+1/5*(0.05*100ns+0.95*10ns)=2+9.8+ 14.5/5 = 14.7ns
cache存储器数据映射方法
当 CPU 发出访存请求后,存储器地址先被送到 Cache 控制器以确定所需数据是否已在 Cache 中,若命中则直接对 Cache 进行访问.
- 直接映射:直接映像方式以随机存取存储器作为 Cache 存储器,硬件电路较简单,在进行映像时,主存地址被分成三个部分,从高到低依次为:区号、页号以及页内地址。
- 题:内存容量为 1GB,Cache 容量为 8MB,页面的大小为 512KB,求分页数
- 先分区,再分页,
- 区大小为Cache 容量,1GB/8MB = 128个区, log2(128) = 2^7,7个分区号。
- 计算分区分页数,8MB/512KB =16个分页,log2(16) = 2^4 , 所以有4个页号。
- 全相联映射:使用相联存储器组成的 Cache 存储器。在全相联映像方式中,主存的每一页可以映像到 Cache 的任一页。如果淘汰 Cache 中某一页的内容,则可调入任一主存页的内容,因而较直接映像方式灵活。
- 组相联映射:介于直接映像和全相联映像之间,是这两种映像的一种折衷方案。全相联映像方式以页为单位,可自由映像,没有固定的对应关系。
cache数据替换(淘汰)算法
- 随机算法:根据随机数进行替换。
- 先进先出算法FIFO:按进入cache的先后顺序淘汰,先淘汰最先进入cache的数据块。系统开销小,可能会替换掉常用的。
- 最近最少使用算法LRU:把CPU最近最少使用的块替换掉,实现比较复杂,系统开销大,需要通过计数器来记录使用情况来实现。
cache写操作方法
- 写直达:当要写 Cache 时,数据同时写回内存,有时也称为写通。当某一块需要替换时,也不必把这一块写回到主存中去,新调入的块可以立即把这一块覆盖掉。这种方法实现简单,而且能随时保持主存数据的正确性,但可能增加多次不必要的主存写入,会降低存取速度。
- 写回:CPU 修改 Cache 的某一块后,相应的数据并不立即写入内存单元,而是当该块从 cache 中被淘汰时,才把数据写回到内存中。这种方法的优点是操作速度快,缺点是因主存中的字块未随时修改而有可能出错。
- 标记法:对 Cache 中的每一个数据设置一个有效位。
流水线
- 概念:流水线技术把一个任务分解为若干顺序执行的子任务,不同的子任务由不同的执行机构负责执行,而这些机构可以同时并行工作。在任一时刻,任一任务只占用其中一个执行机构,这样就可以实现多个任务的重叠执行,以提高工作效率。
- 流水线周期:流水线应用过程中,会将需要处理的工作分为 N 个阶段,最耗时的那一段所消耗的时间为流水线周期。如:使用流水线技术执行 100 条指令,每条指令取指 2ms,分析 4ms,执行 1ms,则流水线周期为最长时间操作指令时间4ms。
流水线执行时间计算
- 流水线执行时间=第 1 条指令的执行时间+(n-1)*流水线周期
- 题:某计算机系统,一条指令的执行需要经历取指(2ms)、分析(4ms)、执行(1ms)三个阶段,现要执行 100 条指令,利用流水线技术需要多长时间?
- 解:理论流水线执行时间=2ms+4ms+1ms+(100-1)*4=403ms。
- 而实际上,真正做流水线处理时,考虑到处理的复杂性,会将指令的每个执行阶段的时间都统一为流水线周期,即 1 条指令的执行时间为:4ms+4ms+4ms=12ms。
- 所以:实际流水线执行时间=4ms+4ms+4ms+(100-1)*4=408ms。