第一章 计算机硬件
1.计算机组成
硬件系统构成:运算器、控制器、存储器、输入设备、输出设备五大部分。
(运算器+控制器)= 中央处理单元(CPU)
CPU是硬件系统的核心,主要用于数据的加工处理,能完成各种算术、逻辑运算以及控制功能。
存储器是计算机系统中的记忆设备,分为内部存储器和外部存储器。前者速度快、容量小一般用于临时存储程序、数据和中间结果。后者容量大,速度慢,可以长期保存程序和数据。
输入输出设备简称外设
1.1.CPU
运算器:数据处理。算术运算和逻辑运算
控制器:
程序控制:控制程序的执行顺序。
操作控制:控制相应部件执行指令的功能。
时间控制:对各个操作进行时间控制。
CPU组成:
控制器+运算器+寄存器组+内部总线
运算器:算术逻辑单元ALU、累加计算器AC(存储运算结果或源操作数)、数据缓冲寄存器DR(暂时存放内存的指令或数据)、状态条件寄存器PSW(保存指令运行结果的条件码内容,如溢出标志)
控制器:程序计数器PC(存放指令执行地址)、指令寄存器IR(暂存CPU执行指令)、地址寄存器AR(保存当前CPU访问的内存地址)、指令译码器ID(分析指令操作码)
1.2.校验码
码距:两个编码,从A码转成B码的距离。如A00转换成B11,码距为2。码距越大,越利于纠错。
1.2.1.奇偶校验码
在编码中增加一位校验码使编码中1的个数为奇数(奇校验)或偶数(偶校验),从而使码距为2。
奇偶校验只能识别1位错,且不能纠错。
1.2.2.CRC校验码
只能检错,不能纠错。
过程:约定一个生成多项式G(x),最高位和最低为必须为1。假设原始信息有m位,对应多项式M(x)。
思想:在原始信息位后追加若干校验位,是的追加的信息能被G(x)整除,余数位0,则无错,否则有错。
例:
原始信息串:10110,CRC生成多项式:G(x)=x^4+x+1
第一步:在原始信息位后添加0,G(x)是几阶r,就加几个0。例子中为4阶(r=4)。得到新串10110 0000
第二步:由多项式得到除数。在生成多项式中x的幂指数的位置为1,不存在则为0。在本例中得到除数:10011
第三步:生成CRC校验码 。前两步的结果进行模二除法(异或运算,不进位,也不借位)得到余数,添加到原数末尾。例:
余数为1111
添加余数之后,为10011 1111
注意如果余数不足r位,则应在余数之前补0,直到其满足r位。(例:余数00,r=4,则余数应为0011)
第四步:接收方校验。用G(x)作除法。在本例中位10011 1111 模2除 10011。余数位0。视为正确,否则错误。
1.3.指令系统
1.3.1.指令
指令的组成
操作码:要完成的操作
操作数(地址码):参加运算的数据及其所在单元的地址
指令执行过程
取指令:从pc中取出指令的地址,送入总线。Cpu依据地址从内存中取出指令内容存入指令寄存器IR。
分析指令:指令译码器分析指令操作码。
执行指令:取出指令所需要的源操作数。
指令寻址方式
顺序寻址:当执行一段程序时,一条指令运行完再去PC程序计数器中拿取下一条指令的地址。
跳跃寻址:下一条指令的地址不在程序计数器中获取,而是从本条指令直接给出。程序跳转后,按新的指令地址开始顺序执行。因此程序计数器的内容也必须相应改变。
指令操作数的寻址方式
立即寻址:指令的地址码字段指出的不是地址,而是操作数本身。
直接寻址:在指令的地址码字段中直接指出操作数在主存中的地址。
间接寻址:指令地址码字段中存储的是操作数地址的地址。
寄存器寻址:指令的地址码存储的是寄存器的编号。
基址寻址:将基址寄存器的内容加上指令中的形式地址而形成操作数的有效地址。
变址寻址:将变址寄存器的内容加上指令中的形式地址而形成操作数的有效地址。
1.3.2.指令系统
指令系统类型
CISC复杂指令系统
RISC精简指令系统
指令系统类型 | 指令 | 寻址方式 | 实现方式 | 其他 |
---|---|---|---|---|
CISC | 数量多、使用频率差别大、可变长度 | 支持多种 | 微程序控制技术(微码) | 研制周期长 |
RISC | 数量少、使用频率接近、定长格式、大部分为单周期指令,操作寄存器,只有load和store操作内存 | 支持方式少 | 增加了通用寄存器;硬布线逻辑控制为主;适合采用流水线 | 优化编译,有效支持高级语 |
指令系统流水线原理
将指令分成不同段,每段由不通的部分去处理,所有部件去执行指令的不同段。
RSIC中的流水线技术
1 超流水线技术:通过细化流水、增加级数和提高主频使得每个机器周期内能完成一个甚至两个浮点数操作。以时间换空间。
2 超标量技术:内装多条流水线来同时执行多个命令。以空间换时间
3 超长指令字技术:通过软件的手段让多条命令能够并行。
流水线计算
1 流水线周期:执行时间最长的一段。例:指令读取时间为8,指令分析时间为5,指令执行时间为10,则流水线周期为10。
2 流水线执行时间:1条指令的执行周期+(n-1)*流水线的周期。n为总共有多少条指令;1条指令的执行周期为该指令各个阶段时间之和。
3 流水线的吞吐率:单位时间内执行的指令条数。指令条数/流水线执行时间。
4 流水线加速比计算:不使用流水线的计算时间/使用流水线的计算时间
例题:
答案:D、B
解析
第一个问题由于只有一个缓冲区,所以从硬盘读入缓冲区和从缓冲区送入用户是不能并行执行的,所以整个过程只有两段:(15+5)和1。此时花费时间为21+920 = 201
第二个问题,由于有两个缓冲区,所以第一步和第二步可以并行执行。此时整个过程由三段:15、5、1。此时花费为21+159 = 156
1.4.存储系统
1.4.1.分级存储系统
目的:解决存储容量、成本、速度之间的矛盾。
层级:
1.4.2.两级存储
Cache-主存
主存-辅存
1.4.3.局部原理
总的来说,在cpu运行时,所访问的数据趋向于一个较小的局部空间地址内,主要包含以下两方面:
时间局部性原理:如果一个数据正在被访问,那么它近期可能会被再次访问,即相邻时间会访问同一个数据。
空间局部性原理:在最近的将来会用到的数据的地址和现在正在被访问的数据地址很可能相近,即相邻的空间地址会被连续访问。
1.4.4.Cache
用来存储当前最活跃的数据和程序,直接与cpu交互,位于cpu和主存之间。容量小,速度是主存的5到10倍。其内容主要是主存内容的副本拷贝。
由控制部分和存储器组成。存储器存储数据,控制部分判断cpu要访问的数据是否在cache中。在则命中,不在则依据算法从主存中替换。
地址映射:在cpu工作时,送出的是主存单元的地址,而应从cache存储器中读写信息。所以应该存在一种机制用于映射主存和cache,即将主存地址映射为cache地址,由硬件自动完成映射。主要分三种方法。
三种地址映像方法
直接映像
将cache等分成块,主存也等分成块并编号。主存中的块和cache中的块对应关系是固定的,即两者块号相同才能命中。地址变换简单但不灵活,容易造成资源浪费,最容易发生块冲突(因为cache的一个块可能对应主存中大的多个块,此时如果该位置被占用,那么原来的块会被无条件替换出去)。例:
全相联映像
同样都等分成块并编号。主存中任一块都与cache 中任一块对应。不限制块号相等,因此可以随意调入cache任意位置,但地址变换复杂,速度慢。最不容易发生块冲突。因为主存可以随意调入cache块,所以只有cache满了才会发生冲突。
组组相联映像
前两种映像的结合。将cache先分块再分组,主存也同样先分块再分组,组间采用直接映像,即主存中组号与cache中组号相同的组才能命中,但是组内的块全映像,即组号相同的两个组内的块可以任意调换。
替换算法
目标:主存的内容的副本存储在cache中,当cache满了之后需要替换掉其中不常用的块。算法目标是使cache获得尽可能高的命中率。
随机替换法
随机数发生器产生一个替换的块号,将该块替换出去。
先进先出替换法
将最先进入的cache信息块替换出去。
近期最少使用算法
将近期最少使用的的cache中的信息块替换出去
优化替换算法
先执行一次程序,统计cache的替换情况,第二次替换根据这个情况选择最有效的方式。
命中率和平均时间计算
例
假设读取一次cache的时间是1ns,读取一次主存的时间是1000ns,若命中率为90%,则 cpu读取一次的平均时间是多少?
答案:90%*1ns+10%*1000ns
如何提高命中率?增加cache的容量。
1.4.5.磁盘
磁盘由多个同心圆,每个盘面有多个同心圆,每个同心圆是一个磁道,而一个磁道被划分为多个扇区,数据就被存放在各个扇区中。
磁头首先要寻到对应的磁道,然后等待磁盘进行周期旋转,旋转到指定的扇区,才能取到对应的数据(旋转方向是固定的,且旋转过程即时读写过程)。因此会产生寻道时间和等待时间。
存取时间=寻道时间+等待时间(平均定位时间+转动延迟)
寻道时间为磁头移动到对应磁道所需的时间。
等待时间为等待读写的扇区旋转到磁头下的时间。
注:寻道时间比较长
磁盘调度算法
先来先服务fcfs
根据进程访问的前后次序进行调度
最短寻道时间优先sstf
请求访问的磁道与当前磁道最近的进程优先调度。但是会产生饥饿现象,即某些进程可能永远访问不到磁盘。
扫描算法scan
又称电梯算法,磁头在磁盘上双向移动。选择离磁头当前距离最近的访问磁道,并且与磁道移动的方向一致。磁头永远都是从里向外,或者从外向里移动完才掉头。
单向扫描调度算法csscan
与scan不同,其只能从里向外或者从外向里。(单向移动)
例题1
答案C\B
过程:
第一个问题:旋转周期33ms,总共11个块,则磁头划过一个块的时间为33/11 = 3ms,即读取一个块到缓冲区的时间是3ms,缓冲区处理一个块时间是3ms(注意此时磁盘会继续旋转)。
一开始块在RS0处,读取3ms,此时磁头在RS1处,缓冲区处理3ms后磁头在RS2处。因为题目明确要顺序处理各个块,所以下一个要处理的块是RS1。所以需要将磁头移动到RS1处,需要耗时103=30ms。同理rs0之后来所有块都要进行类似运算:磁头旋转时间:103+读取耗时:3+处理耗时:3。最终计算:3+3+10*(10*3+3+3)=366
时间计算如下:
块号 | 磁头转动到块开始位置耗时 | 读取耗时 | 处理耗时 | 处理完磁头所在位置 |
---|---|---|---|---|
RS0 | 0 | 3 | 3 | RS2 |
RS1 | 10*3 | 3 | 3 | RS3 |
RS2 | 10*3 | 3 | 3 | RS4 |
RS3 | 10*3 | 3 | 3 | RS5 |
RS4 | 10*3 | 3 | 3 | RS6 |
RS5 | 10*3 | 3 | 3 | RS7 |
RS6 | 10*3 | 3 | 3 | RS8 |
RS7 | 10*3 | 3 | 3 | RS9 |
RS8 | 10*3 | 3 | 3 | RS10 |
RS9 | 10*3 | 3 | 3 | RS0 |
RS10 | 10*3 | 3 | 3 | RS1 |
第二个问题:
存储经过优化后最短耗时,经过第一问推算得知只要保证一块处理完之后立刻处理下一块避免多余的磁盘旋转时间即可将总耗时降到最低,块分布见下图:
时间计算如下:6*11 = 66ms
块号 | 磁头转动到块开始位置耗时 | 读取耗时 | 处理耗时 | 处理完磁头所在位置 |
---|---|---|---|---|
RS0 | 0 | 3 | 3 | RS1 |
RS1 | 0 | 3 | 3 | RS2 |
RS2 | 0 | 3 | 3 | RS3 |
RS3 | 0 | 3 | 3 | RS4 |
RS4 | 0 | 3 | 3 | RS5 |
RS5 | 0 | 3 | 3 | RS6 |
RS6 | 0 | 3 | 3 | RS7 |
RS7 | 0 | 3 | 3 | RS8 |
RS8 | 0 | 3 | 3 | RS9 |
RS9 | 0 | 3 | 3 | RS10 |
RS10 | 0 | 3 | 3 | RS0 |
例题2
答案:D
柱面号是指柱面是多个盘片上相同编号的磁道的集合。在本题中近似看成磁道号更容易解题。磁头号又叫盘面号,本题中不用考虑磁头号。
最开始移动臂位于21柱面号,离他最近的柱面号为23,即请求序列号2、3、8。但是2 的扇区号是3,3的扇区号是6,8的扇区号是4,由于磁盘是按照一定方向旋转所以一定是先读扇区号小的块,所以顺序应该是2、8、3。此时排除BC。
接下来最近的应该是157,所以排除A。故选D。
1.4.6.输入输出技术
内存和接口地址的编址方法
内存与接口地址独立编址:内存地址和接口地址完全独立,访问数据的指令也完全不同。缺点:用于接口的指令太少,功能弱。
内存与接口统一编址:内存地址和接口地址统一存放在一个公共的地址空间中,即共用地址。优点:内存的指令全部用于接口。缺点:整个地址空间被划分成了两个部分,一部分给接口用,一部分给内存用,可能跟造成内存地址不连续。
输入输出设备和计算机的数据交互方式
程序控制(查询)方式
CPU主动查询外设是否完成数据传输,效率极低(因为外设的计算速度远慢于cpu)。
程序中断方式
外设完成数据传输后,向cpu发送终端请求,等待cpu处理数据,效率相对较高。
中断响应时间:发生中断请求到开始进入中断处理程序的时间。
中断处理时间:中断开始处理到结束处理的时间。
中断向量:提供中断服务的程序入口地址。多级中断嵌套,使用堆栈来保护断点和现场。
DMA方式
直接主存存取。在主存和外设之间建立一个直接的数据通道。CPU只需完成必要的初始化等操作,数据传输的整个过程都由DMA控制器来完成。效率很高。
备注
在一个总线周期结束后,CPU会响应DMA请求开始读取数据;CPU响应程序中断方式请求是在一条指令结束之后。
1.4.7.总线结构
总线
指计算机设备和设备之间传输信息的公共数据通道。总线是连接计算机硬件系统内多种设备的通信线路,有一个重要特征:由总线上的所有设备共享,计算机系统内有多种设备连接到总线上。
理论上任何连接两个及以上电子元器件的导线都可成为总线。可分类:
内部总线:内部芯片级别的总线,芯片与处理器之间的通信的总线。
系统总线:是板机总线,用于计算机内部各部分之间的连接。具体分为数据总线(并行数据传输位数)、地址总线(系统可管理的内存空间大小)、控制总线(传送控制命令)。代表有ISA总线、EISA总线、PCI总线。
外部总线:设备一级的总线,微机和外部设备的总线。代表有RS232、SCSI、USB。
注:考试中只要回答数据总线、地址总线或者控制总线。
例题
答案:C
解析:
串行和并行的区别:
并行速度快,但是只适合短距离传输(成本考虑)。
串行适合长距离,但是速度低。
单总线和多总线:
单总线:在一条总线上挂在多个不通种类的设备,设计复杂,性能低。同一时间只有一个设备能发送数据。但是都可以接收数据。
全双工、半双工、单工
单工:只能由A传输给B,只能单向传输
半双工:可以双向传输,但是同一时间只能有一个方向能传输数据。
全双工:可以双向传输,且可以同时传输数据。