1. 计算机组成原理概论
计算机:数字电子计算机
组成:计算机硬件系统的逻辑实现
原理:不以具体机型为依托的,基本实现原理。
计算机组成原理:掌握如何实现的具体细节。
1.1 计算机系统简介
计算机系统由两大部分组成:硬件和软件。软件又包括系统软件和应用软件。
系统软件可以管理整个计算机系统:
应用软件是按照任务需要编制成的程序。
可以简单将软件看作一个层次结构,硬件为软件提供接口,系统软件又为应用软件形成接口,来完成不同的程序。
对于计算机的物理结构层次,我们这门课主要研究逻辑层和微电路层的具体实现方式。
计算机系统的指令层次如下图所示
操作系统可以管理软硬件的资源。
计算机系统结构定义了系统软硬件的交界面,定义了哪些功能由软件实现,哪些功能由硬件实现,定义为==程序员所见到的计算机系统的属性概念性的结构与功能特性==。(指令系统,数据类型,寻址技术,I/O机理),即程序员需要理解的东西。
计算机组成:实现计算机体系结构所体现的属性,即具体指令的实现。
1.2 计算机的基本组成 1.2.1 冯诺依曼结构
上图实线表示数据流动,虚线表示控制反馈。
冯诺依曼结构以运算器为中心,容易形成瓶颈。我们可以使用存储器作为中心来进行优化,但是还不够。
1.2.2 现代计算机硬件框图
指令和数据都是保存在存储器中的。
1.2.3 存储器的基本组成
MAR是存储器地址寄存器,保存了存储单元的地址和编号,长度反映存储单元的个数。
MDR是存储器数据寄存器,保存了要存入存储体的数据或刚从存储体拿出来的数据,长度反映存储字长。
利用MAR和MDR来将数据放入存储器。
1.2.4 运算器的结构
ALU(算术逻辑单元),通常是一个组合电路,输入撤销,输出也撤销,因此需要加上寄存器保存参与运算的计算。
数据寄存器X保存输入参数,ACC为累加寄存器,保存结果,乘法可能使得数据位数保存不下,使用MQ寄存器保存低位。
上表中存放了不同运算中,运算器的工作过程,以乘法为例,操作过程如下:
这些操作的过程顺序是由控制器来控制完成的。
1.2.5 控制器的基本结构
控制器的功能是解释指令(完成指令)、保证指令的按序执行。
下面以取数指令为例分析指令执行过程(取数送到ACC中)
CU分析控制这些步骤的过程。
1.3 计算机硬件的主要技术指标
第一台计算机,1946年ENIAC,十进制运算。
电子技术的发展与计算机体系结构技术的发展对计算机的发展产生了决定性作用。
根据硬件技术来对计算机进行划分代码
电子管→晶体管→大规模集成电路→大规模集成电路→超大规模集成电路
软件技术的发展:机器语言(面向机器)、汇编语言(面向机器)、高级语言(面向问题)。
2.2 计算机的应用
总线是连接各个部件的信息传输线,是各个部件共享的传输介质,是信号的公共传输线。
如果使用单总线结构(系统总线),那么同时只能有一对部件进行信号传输,效率较低,使用双总线结构效率会更高。
上面的结构,无法在I/O和主存之间进行直接的信息传输,必须要通过CPU。
3.2 总线的分类
总线印刷到电路板上(主板),其他设备插板插到电路板上。
总线的性能指标:
3.4 总线结构
增加了DMA(直接存储器访问)总线,外部设备直接访问存储器内存。高速设备直接通过DMA访问主存。
CPU与cache通过局部总线进行相连,扩展总线将外部设备连接。
高速设备和低速设备分离,分别连接到高速总线和扩展总线上。
PCI高速总线来连接高速设备,PCI总线可以通过桥来进行扩展。
3.5 总线控制 3.5.1 总线判优控制
通过是否能对总线发出占用请求,我们将设备分为主设备(主模块)和从设备(从模块)。主设备可以对总线有控制权,从设备响应从主设备发来的总线命令。
总线判优控制可以分为两种:集中式和分布式。下面介绍几种集中式的总线判优控制结构。
主设备通过BR申请总线的控制权,有设备在使用总线,则设置BS。总线控制部件通过BG来链式查询这些接口是否提出了BR,遇到了BR则交出控制权。
因此,优先顺序则为BG的查询顺序。这种结构对电路故障特别敏感,尤其是BG,如果BG后面出了问题,会导致后面的设备一直不会响应。
数据线用于数据的传输,地址线用于从设备的查找。通过设备地址线来查找某个设备是否发出总线请求。计数器的值通过设备地址线进行传输,来查找某个设备是否发出请求。可以自定义计数器的计数方式,来改变从哪个设备先查询等。
为每个I/O接口增加了BR和BG,通过排队器来进行优先级排队。这种方式使用的线数较多。
3.5.2 总线通信控制
为了解决通信双方(主从设备)协调配合的问题。
总线的传输周期(完成一次主从设备完整可靠的传输所需要的时间):
强制同步,如果设备之间速度不同,快的设备需要等慢的设备。
不互锁:不管从设备是否接收到请求信号,过段时间主设备都会撤销请求。不管主设备是否接收到应答信号,从设备多段时间都会撤销应答。
半互锁和全互锁针对上面进行改进。
增加等待响应信号,当wait为低电平,则等待一个T。
使用分离式通信来将总线空闲的时间也充分利用起来。
4. 存储器 4.1 概述
按照存取方式对存储器进行分类:
按照在计算机中的作用分类:
存储器的层次结构:
主存的基本组成:
主存与CPU之间的联系:
主存中存储单元地址的分配:
主存的技术指标:
4.2.2 主存储器半导体芯片简介
基本结构:
译码驱动方式:
第一种方法是线选法
第二种方法是重合法
SRAM的基本电路:
SRAM芯片举例(Intel 2114):
DRAM的基本电路:
还有一种结构是单管动态RAM:
三管DRAM芯片举例(Intel 1103):
单管DRAM芯片举例(Intel 4116 16k×1位):
动态RAM的刷新:
ROM中一般保存系统信息或系统程序。早期是只读的,不可以写,经过多年的发展和改进,现在的ROM可以自己多次读写。
存储器容量扩展可以通过位扩展(增加存储字长)、字扩展(增加存储字的数量)、同时扩展。
CPU与存储器的连接:
校验,检测合法代码,对非法代码进行纠错。
编码的纠错、检错能力与编码的最小距离有关。最小距离为任意两组合法代码之间二进制位数的最小差异。$$ L-1 = D + C\ (D≥C) $$L为最小距离,D为检测错误的位数,C为纠正错误的位数。
汉明码是具有一位纠错能力的编码,汉明码都采用了奇偶校验和分组校验(分组的奇偶校验,分组之间是有重叠的,校验位放在2 ^ k处,k=0,1,2,3...)。
汉明码的分组,将代码中每一位进行分组(1,2,3,4,5,6,7序号),将每一位的序号进行分组,序号的二进制最右边一位为1的,第一组,右边第二位为1的,第二组......
==最后的校验结果,哪一位是1,那么这位对应的那组中的那个序号的代码位出错。如果出现了多个1,那么就是这几个组中公共的那位出错了。==
4.2.7 提高主存的访问以及存储速度
CPU速度提升很快,但是存储器的速度提升较慢。
我们可以采用高速器件,采用层次结构(Cache-主存),==调整主存结构。==
CPU与主存(DRAM)之间存在速度差异,为了避免CPU“空等”的现象,使用cache。
程序访问的局部性原理:
cache的工作原理:
把主存和cache分成大小相等的块,每个块大小相等,主存的块数量远远大于cache的块数量。==主存与cache之间的信息传送是按块传送,块内地址不变,cache的每个块的标记,标记了这个块是主存的哪个块。==
主存块调入了缓存(即cache标记了),称为命中,CPU可直接在缓存中取得数据;如果没有调入,称为未命中。
我们希望,每次执行程序,都尽可能的在cache中提取数据,这样速度会很快。CPU欲访问的信息在Cache中的比率称为命中率,命中率与Cache的容量和块长有关。一般每块取4-8个字,一般为一个存取周期内从主存调出的信息长度。
cache与主存的访问效率:
这里面平均访问时间为每次访问的平均时间(可能从cache,可能从主存)。
4.3.2 cache的基本结构与读写操作
cache的基本结构:
读写操作:
cache的改进:
即主存的任意一块加载到cache中的哪块。
直接映射:
即主存中任意一个块,只能映射到指定的一个cache块中,cache块可以是一对多的。相当于将主存分区,每个区内的这些块,对应于cache的所有块;这样在cache的标记中,有t位的标记,表示当前该cache块存放的是主存哪个区的对应位置信息。
这种方法cache块的利用率比较低,且可能会冲突。
全相联映射:
主存中任意一个块,可以被放入cache中的任意一个块中。
这样的话,虽然块的利用率高了,但是因为块可以映射到任意一个位置,如果查询某个主存块是否已经放入cache,需要比较所有的cache标记,速度较慢。
==组相联映射==:
与直接映射相似,==将cache分组,每个组可以有多个块;将主存分区,每个区的大小为cache的组数==。这样每个区的第0块,可以放入cache第0组的任何一个位置,因为每个组有多个块,解决了直接映射的冲突问题;想查询某个主存的块是否放入了cache,只需要在对应的组进行查询即可,解决了全相联映射的问题。
4.3.4 替换算法
如果内存块满了,如何替换,将谁弹出。
先进先出(FIFO)算法
近期最少使用(LRU)算法
4.4 辅助存储器
辅助存储器的主要作用是保存程序、文档和影音资料,不能直接与CPU交换信息,需要调入主存才能进行读写。
包括磁盘存储器和光盘存储器等。
免费领入学礼包有礼
现在入学礼包等你来领