计算机运行机制
计算机历史:机械计算机(BC ~ 1940s)Gen-1:真空管(1948 ~ 1959)Gen-2:晶体管(1960 ~ 1968)Gen-3:集成电路(1969 ~ 1977)Gen-4:大规模集成电路(1978 ~ present)Gen-5:Optical? Quantum? Biology?
图灵机(Turing Machine)
确定型图灵机
Von Neumann结构计算机
指令是计算机运行的最小的功能单元
指令的功能分类:
性能指标:
MIPS (Microprocessor without Interlocked Piped Stages) 无内部互锁流水级的微处理器
工作原理
嵌入存储器 Block RAM(BRAM) :本质上是RAM,是FPGA内部的存储器,共有135个BRAM,总的BRAM
容量为4860Kb
数字系统设计的重要指标:
ASCII : 8bit
Unicode : 16 bit
UTF-8 : 变长
浮点数表示: ( − 1 ) s M 2 E (-1)^s M 2^E (−1)sM2E
单精度浮点数:exp域宽度为8 bits,frac域宽度为23 bits,总共32 bits。
双精度浮点数:exp域宽度为11 bits,frac域宽度为52bits,总共64 bits。
向偶数舍入(Round-To-Even)
当int(32位宽), float, 与double等类型间进行转换时,基本的原则如下:
浮点数加减法运算
检错纠错码:
码距(最小码距)的概念:是指任意两个合法码之间至少有几个二进制位不相同。
奇偶校验码:并行数据传输
海明校验码:并行数据传输
位数r和k的关系:2r ≥k+r+1,即用2r 个编码分别表示k个数据位,r个校验位中哪一位出错,都不错
2r-1 ≥k+r,用r-1位校验码为出错位编码,再单独设一位用以区分1位还是2位同时出错,更实用
实现方案
循环冗余校验码:串行数据传输
布斯乘法:使用5位的整数来计算3×(-7)
00/11结尾不变,01结尾+被乘数,10结尾-被乘数
3 × ( − 7 ) ⇒ 00011 × 11001 3\times (-7)\Rightarrow 00011 \times 11001 3×(−7)⇒00011×11001
-3 : 11101 3 : 00011
加减交替除法:
最小精简指令集:SBNZ a,b,c,d
控制器的主要功能
指令表示:指令中的内容,包括指令操作码(指出指令完成的运算处理功能和数据类型)和操作数或指令的地址(指明用到的数据或地址)两部分
指令字长是指组成一条指令的二进制数的位数
指令操作码的位数限制指令系统中的指令条数
指令操作数个数
若需要在16位字长的指令中能够同时支持三地址、二地址、一地址指令各15条,零地址指令16条,则可以选用如下方案的变长操作码实现:
指令分类:
寻址方式:立即数寻址、直接寻址、寄存器寻址、变址寻址、相对寻址、间接寻址(指令的地址码字段是操作数地址的地址)、基址寻址、堆栈寻址
现代x86指令系统的运行模式
寄存器是数据通路的一部分
jal 将跳转指令的返回地址放到寄存器$ra中,由于延迟槽,因此为PC+8
被调用者保存寄存器
调用者保存寄存器
立即数跳转指令:PC = (PC+4) + (immediate*4)
把一条指令的执行过程划分为如下的5 个阶段
每条指令平均使用的CPU周期个数被称为CPI
Datapath:实现数据的移动和运算
控制器:指挥数据的移动和运算
D触发器:在时钟的上升沿写入输入数据,一直保持到下一个上升沿
单周期CPU特点
控制器的组成:程序计数器PC,指令寄存器IR,指令执行步骤标记线路,控制信号产生线路
根据指令步骤标记线路和控制信号产生线路不同的组成和不同的运行原理,有两种不同类型的控制器:
硬连线控制器由程序计数器PC、指令寄存器IR、节拍发生器Timer和控制信号产生部件4 部分组成
微程序控制器:采用控制存储器存储每条指令的每个执行步骤所需要的全部控制信号,用微地址进行访问,读出控制信号并输出。采用下地址逻辑实现执行步骤之间的衔接,根据指令操作码映射出该指令的首条微指令的地址,每条微指令给出其下一步骤的微地址
MIPS计算机硬件系统:存储器、寄存器堆、ALU部件、控制部件
流水线操作的前提
流水线的特点
流水线需要有装入时间和排空时间。装入时间是指第一个任务进入流水线到输出流水线的时间。排空时间是指第n个(最后一个)任务进入流水线到输出流水线的时间。
PC值多路选择器被移到IF段,这样做的目的是保证对PC值的写操作只出现在一个流水段内,否则当分支转移成功的时候,流水线中两条指令都试图在不同的流水段修改PC值,从而发生写冲突。
流水线分类:
流水线中的“冲突”:在流水线中经常有一些被称为“冲突”的情况发生,它使得指令序列中下一条指令无法按照设计的时钟周期执行
结构冲突:
寄存器文件结构冲突:
内存结构冲突:
数据冲突:
数据冲突的动态调度:由硬件动态调整指令执行顺序以减少暂停的影响
数据冲突影响到的仅仅是本条指令附近少数几条指令,所以称为局部冲突。而控制冲突影响的范围要大得多,它会引起程序执行方向的改变,使流水线损失更多的性能,所以称为全局冲突。
控制冲突的处理:
在流水线中尽早判断出分支转移是否成功;尽早计算出分支成功转移时的PC值(如分支目标地址)。
数据通路:增加比较器,完成源操作数的比较;调整加法器到ID段,完成转移地址的计算
分支目标缓冲技术:缓冲区的每一项内容被用来预测分支转移是否成功,并且根据实际的分支情况对内容进行修改。将分支转移成功的分支指令的地址和它的分支目标地址都放到一个缓冲区中保存起来,缓冲区以分支指令的地址作为标志;在取指令阶段,所有的指令地址都与保存的标志作比较,如果相同,就认为本条指令是分支指令,而且认为它分支转移成功,同时它的分支目标(下一条指令)地址就是保存在缓冲区中的分支目标地址。
连续两次预测错误时才改变预测方向,对多重循环,可进一步提高预测准确率
延迟槽:无论分支转移成功与否,延迟槽内的指令都要执行。如果分支转移失败,只需要按取来的指令执行;否则,按照分支目标地址的指令执行
分支延迟调度方法:
异常处理的实现:
精确异常处理
水银延迟线存储器,磁芯存储器,半导体存储器( ROM、RAM、SRAM、DRAM)
访问方式:
层次存储器系统
程序运行时的局部性原理:在一小段时间内,最近被访问过的程序和数据很可能再次被访问
现代计算机存储器系统
数据总线用于在计算机各功能部件之间传送数据,地址总线用于选择主存储器的一个存储单元,控制总线用于指明总线的工作周期类型和本次入/出完成的时刻
动态存储器,是用金属氧化物半导体(MOS)的单个MOS管来存储一个二进制位(bit)信息的。信息被存储在MOS管T的源极的寄生电容CS中
动态存储器的工作特点:
动态存储器的特点:存储容量高,访问速度慢,能耗低,成本低
Cache参数:块是数据交换的最小单位
全相联:如果主存空间有2m块,则标志位要有m位。
直接映射
四路组相连:
一致性保证:
Cache缺失:
替换策略:
Cache接入系统的体系结构:
多级Cache的一致性保证
写主存顺序
地址空间:
虚拟存储器:
段式存储管理:
页式存储管理:
转换旁路缓冲(TLB)
易失性存储:
静态存储器:SRAM,Cache
动态存储器:DRAM
非易失性存储器:
磁表面存储设备:
页容量大,为什么扇区却如此小呢?
可用性:可以在扇区物理损坏时不再使用该扇区。
检错纠错码分布在每个扇区,扇区容量小,检错速度快,效率高
灵活性。 使用不同的操作系统,不同的页面大小。
可靠性:设备出现故障的几率来衡量。
可用性:系统能正常运行的几率来衡量。
RAID:独立磁盘的冗余阵列
RAID0:DataStriping 适合数据请求量比较大的情况
RAID1:DriveMirroring 写性能不高,但读性能却提高了两倍
RAID2:工作单位为字,对每个半字节加上3位海明码形成7位字
RAID3:对每个字计算一个校验位
RAID4:Data Guarding 将对带的校验写在额外的驱动器上
RAID5:Distributed Data Guarding
固态硬盘
嵌套异常的服务程序必须用一些主存空间来保存寄存器的值,使用的数据结构叫异常帧,多个嵌套异常的异常帧通常保存在栈中
中断屏蔽字
TLB维护:
输入输出方式
程序直接控制:CPU查询接口状态,直到外设已经接收到该字符;外设方往接口数据缓冲中送字符,处理完后置状态寄存器。严重占用CPU资源
程序中断:外部设备发起请求,CPU暂停正在执行的程序,进行响应,对CPU干扰较大
直接存储访问(DMA),专用输入/输出控制器:I/O设备和主存储器之间的直接数据通路
通道:一对多的连接关系,适应不同速度、不同种类的外部设备,可并行工作
外围处理机,独立完成输入/输出功能
中断设备接口组成
计算机总线:共享的信息通道,用于连接计算机多个子系统(部件)
总线:
单总线系统
双总线系统
三总线系统:大大减少处理器-主存总线负载
总线类型:
总线组成:
总线主设备:有能力控制总线,发起总线事务
总线从设备:响应主设备请求
总线仲裁:
总线仲裁器
优先权:优先级高的设备应该得到优先服务
公平性:最低优先级的设备也不能永远被排除在总线服务之外
集中仲裁和分布仲裁
菊链仲裁:所有设备共用一个总线请求信号,无法保证公平性,总线授权信号的逐级传递限制了总线的速度
集中平行仲裁:
同步总线:逻辑简单、高速,总线上所有设备必须按时钟频率工作,防止时钟信号扭曲,高速工作时,总线距离必须足够短
异步总线:不使用统一的时钟,可适应设备的不同速度,不用担心时钟信号扭曲,距离可较长,使用握手协议
增加总线带宽:
增加总线的宽度,可增加每个周期传送数据的量,提高了成本
采用成组传送方式:一个总线事务传送多个数据,每次只需要在开始的时候传送一个地址,直到数据传送完毕才释放总线,复杂度提高,延长后续总线请求的等待时间
多主设备总线提高事务数量
PCI总线:33MHz或66MHz,集中仲裁方式,带宽达133MB(33MHz)或528MB(66MHz)所有事务可无限制成组传送
输入/输出系统:
接口的基本功能:
接口内部组成
串行传送
USB接口:最多可以连接127个设备,可以从电缆上得到电源,不必重新启动计算机,用户不必再设置卡上、设备上的开关或跳线
设备检测:根HUB定时查询接口状态,若检测到有设备接入到接口上,则为该设备赋地址(7位)。设备初始地址为0,每个设备上应有ROM,保存设备参数。
USB帧:控制帧,同步帧,块传送帧,中断帧
每1ms,定时发出一个SOF包,进行时间同步(所有设备)。
外部设备功能