组成原理考研笔记:
一、概念篇:
- 冯 · 诺依曼计算机结构:
-
字长:
- 机器字长:计算机进行一次定点整数运算所能处理的二进制数据的位数,一般等于内部寄存器的大小,机器字长越长,计算精度越高;一个字就是指的机器字长的位数;CPU是多少位就代表机器字长是多少位;32位的CPU不能搭载64位的OS,而64位的CPU能够运行32位的OS;
- 存储字长:内存一个存储单元存储的二进制代码的位数;“按字节编址/按字编址”反映存储字长的位数;
- 指令字长:一个指令字包含的二进制代码的位数;一般是存储字长的整数倍;
-
周期:
- 时钟周期:CPU中最小的时间单位,每个动作至少一个时钟周期;
- 时钟脉冲信号:时钟脉冲信号的宽度即时钟周期,是由机器脉冲源发出的脉冲信号经整形和分频后形成的;
- 时钟周期以相邻状态间组合逻辑电路的最大延迟为基准确定;
- 时钟周期也以指令流水线的每个流水段的最大部件时间所确定;
- 机器周期:一条指令的各个基本操作的时间(如一次总线事务访问一次主存或I/O的时间),由若干时钟周期组成;通常由存取周期来确定;
- 指令周期:取出一条指令并执行这条指令的时间,由若干机器周期组成;
- 单周期CPU:指令周期 = 时钟周期;在指令执行过程中控制信号不变;不可采用单总线结构数据通路
- 多周期CPU:指令周期 = n x 时钟周期;
- 存取周期:连续两次独立访问存储器操作之间所需的最小时间间隔;
- 总线周期:一次总线操作所需的时间;由若干个时钟周期构成;
- 时钟周期:CPU中最小的时间单位,每个动作至少一个时钟周期;
-
程序:
- 翻译程序:把高级语言源程序翻译成机器语言程序(目标代码)的软件;
- 编译程序:将高级语言源程序一次全部翻译成目标程序;
- 解释程序:将源程序的一条语句翻译成对应的目标代码并立即执行;不会生成目标程序;
- 汇编程序:把汇编语言源程序翻译成机器语言程序;和机器语言一一对应;层次低于翻译程序;
- 系统程序:操作系统程序;
- 应用程序:用户程序;基于操作系统之上;
- 翻译程序:把高级语言源程序翻译成机器语言程序(目标代码)的软件;
-
用户可见寄存器:
- 所有用户可见:PC、PSW、通用寄存器;
- 所有用户透明:MAR、MDR、IR、Cache、微指令寄存器、暂存寄存器、运算器的各组件、条件寄存器;
- 汇编程序员可见:基址寄存器 + 中断字寄存器 + 所有用户可见寄存器;
-
局部性原理:
- 时间局部性:将要使用的信息,可能是正在使用的信息;
- 空间局部性:将要使用的信息,可能存储在正在使用的信息的附近;
-
校验码原理:
- 码距:任意两个合法码字之间最少变化的二进制位数,码距不小于2才具有检错能力;
- L − 1 = D + C , D ≥ C L - 1 = D + C, D ≥ C L−1=D+C,D≥C,其中 L L L是码距, D D D是检错位数, C C C是纠错位数;
- 码距越大,检错纠错的能力越强,而且检错能力不小于纠错能力;
-
大端/小端方式:首地址存储最高/最低有效字节是大端/小端;
-
数据通路:
- 指令执行过程中,数据所经过的路径和路径上的部件,包括算术逻辑运算部件(ALU)、取值部件、寄存器、cache、MMU、浮点运算逻辑、异常和中断处理逻辑、组合逻辑和时序逻辑等;
- 数据通路中的数据流动路径由控制部件控制,因此数据通路不包括控制部件;
-
中断类型:
- 内中断/异常:
- CPU内部产生,不可屏蔽,一旦发现应立即处理;
- 同步中断,在程序执行过程产生的;
- 分类:
- 陷阱:访管指令/自陷指令,用于断点调试、系统调用;处理后返回陷阱后的下一条指令继续执行
- 故障:如缺页,段错误;处理后返回缺页时的指令重新执行;
- 终止:非法指令、除0异常、上溢出;无法处理,直接终止程序;
- 外中断/中断:
- 通过中断请求线从CPU外部发出的中断请求;
- 异步中断,在指令周期结束时检测并响应,与CPU正在执行的内容无关;
- 分类:
- INTR(可屏蔽中断):如来自I/O设备的I/O中断;由中断屏蔽字规定处理优先级;可由中断标志位屏蔽(IF=1,可以响应中断;IF=0,屏蔽中断);
- NMI(不可屏蔽中断):如时钟中断(主要工作是处理系统时间、进程时间片、使用CPU时间、各种定时器等)、内存故障、电源掉电;不受中断标志位影响,即即使关中断也会被响应;处理优先级最高;
- 内中断/异常:
-
存储器:
-
时间指标:
- 存取时间:启动一次存储器操作到完成该操作的时间;
- 存取周期:连续两次独立访问存储器操作之间所需的最小时间间隔,通常大于存取时间(读写操作后需要内部复原时间);
- 读周期/写周期:连续两次读操作/写操作之间的最小时间间隔;
- 读出周期:从给出有效地址开始,到读出所选中单元的内容并在数据总线上稳定地出现所需的时间;
-
存储器的分类:
- 随机存储器RAM:
- SRAM:
- 存储元件:双稳态触发器(6个MOS晶体管);
- 优点:非破坏性读出,存取速度快;缺点:集成度低,功耗大,成本高;
- 适合器件:cache和TLB;
- DRAM:
- 存储元件:栅极电容的电荷;
- 优点:只用一个晶体管,集成度高,容量大,功耗低,成本低;缺点:破坏性读出,速度慢,需要刷新;
- 适合器件:主存;
- 刷新方式:(刷新周期一般为2ms;按行刷新,因此行数越少,刷新开销越小)
- 集中刷新:在一个刷新周期内,利用一段固定的时间(该时间不能访存,称死区),依次对存储器的所有行进行逐一再生;优点是:读写操作不受刷新工作的影响,速度高;缺点是:存在死区;
- 分散刷新:工作周期前半部分用作正常读写,后半部分用作刷新某一行;优点是没有死区,缺点是延长了存取周期;
- 异步刷新:刷新周期除以行数(下取整),得到两次刷新的最长时间间隔t,则每隔时间t产生一次刷新请求;结合了集中刷新和分散刷新的优点;
- 采用地址复用技术,只需要一半的地址线,地址信号分行、列两次传送;要求行列的地址线个数差别不能太大;
- 双端口RAM:
- 同一个RAM存储器有两个独立的端口,分别具有两组独立的地址线、数据线和读写控制线;
- 允许两个独立的控制器同时异步地访问存储单元;
- 但当同时访问同一个地址单元时,可能发生冲突(可用判断逻辑决定暂时关闭一个端口以解决冲突);
- SDRAM:
- 同步DRAM,有一个同步接口,在响应控制输入前会等待一个时钟信号,这样就能和计算机的系统总线同步;
- SRAM:
- 只读存储器ROM:
- 仍然是随机存取方式;
- 分类:
- 掩模式MROM;
- 一次可编程PROM;
- 可擦除可编程EPROM;
- 闪存:是EPROM的扩展,用MOS管的浮栅的有无存储电荷;
- 固态硬盘:由闪存芯片构成;
- 写入速度比读出速度慢(破坏性写,先擦除,再写入);
- 用于:可以作为主存储器的一部分,用于存放自举程序;可以存放微程序的控制存储器;
- 直接存取存储器:磁盘,半随机存储;
- CD-ROM:只读光盘,只能写入数据一次,信息将永久保存,顺序存储;
- 顺序存取存储器:磁带,顺序存储;
- RAID技术:
- 将多个独立的物理磁盘组成一个独立的逻辑盘,数据在多个物理盘上分割交叉存储,并行访问,具有更好的存储性能、可靠性和安全性;
- 提高RAID可靠性的措施是对磁盘进行冗余镜像处理和奇偶校验;
- 条带化技术:
- 将一块连续的数据分成很多小部分并把它们分别存储在不同磁盘中;
- 多个进程同时访问数据的多个不同部分,但不会造成磁盘冲突;
- 相联存储器:
- 把存储单元的一部分作为检索项去检索该存储器;
- 按内容指定方式和地址指定方式相结合进行寻址的存储器;
- 适用器件:全相联的TLB或者cache;
- 多模块存储器:
- 单体多字存储器:在一个存取周期内从同一地址连续取出n条指令,然后逐条传送给CPU执行;优点是:提高了存储器的速度;缺点是:指令和数据在主存中必须连续存放;
- 多体并行存储器:
- 高位交叉编址:高位地址表示体号,低位地址为体内地址;缺点是总是先在一个模块内访问完,再去下一模块,即顺序访问存储模块,不能提高并行度和吞吐率;
- 低位交叉编址:低位地址表示体号,高位地址为体内地址;程序总是连续存放在相邻模块中,因此又称交叉编址;可以采用流水线进行并行存取,提高存储器的带宽;
- 随机存储器RAM:
-
主存基本结构和工作过程:
-
-
指令系统:
- 指令格式:
- 零地址指令:如NOP指令,还有运算类的堆栈指令;
- 一地址指令;二地址指令;三地址指令;四地址指令;
- 单字长指令:指令长度等于机器字长的指令;
- 定长指令字结构:所有指令的长度相等;与之对应的为变长指令字结构;
- 定长操作码指令格式:
- 指令字的最高位部分分配固定的n位作为操作码,最多能表示 2 n 2^n 2n条指令;
- 扩展操作码指令格式:
- 操作码的长度随着地址码的减少而增加,不同地址数的指令可具有不同长度的操作码;
- 注意不允许短码是长码的前缀;
- 尽量分配短码给使用频率较高的指令;
- 设地址段长为N,每减少一条i地址,则最多可以多 2 N 2^N 2N个 ( i − 1 ) (i-1) (i−1)地址;
- 指令格式:
-
CISC和RISC的对比:
-
指令寻址方式:
- 指令寻址:
- 顺序寻址:PC自动+1;
- 跳跃寻址:修改PC内容为指令中的地址(绝对地址或者相对地址);
- 数据寻址:
- 隐含寻址;立即数寻址;
- 直接寻址;间接寻址;
- 相对寻址(主要用于解决程序浮动问题,注意PC值先会自动跳到下条指令地址,然后再加上形式地址,另外内存地址为无符号整数,如果形式地址用补码表示,得转化成真值计算);
- 寄存器寻址:操作数在寄存器中,指令地址字段是寄存器的编码;
- 寄存器间接寻址:寄存器中存放的是有效地址;
- 基址寻址:基址寄存器+指令字段偏移量得到有效地址,主要用于多道程序设计,扩大了寻址范围;
- 变址寻址:变址寄存器偏移量+指令字段基址得到有效地址,主要用于数组寻址,扩大了寻址范围;
- 堆栈寻址:利用存储器(软堆栈)或者寄存器组(硬堆栈)构成一块特殊的存储区,由堆栈指针SP给出地址以隐含寻址;
- 指令寻址:
-
X86汇编指令:
- 指令机器码长度固定为1B;
- 第一个地址为目的地址,第二个地址为源地址;
- 数据传送指令:move;push;pop;
- 算术/逻辑运算指令:add/sub;inc/dec;imul/idiv;and/or/xor;not;neg;shl/shr;
- 控制流指令:jmp;jcondition;cmp;call/ret;
-
条件转移指令的状态切换:
- ZF:相减结果为0时ZF=1;
- SF:结果为负数时SF=1;
- CF是进行无符号数运算时记录最高有效位向更高位为进位值/借位值:
- 两数相加,如果最高位有进位,则CF=1,否则为0;
- 两数相减,如果被减数最高位有借位,则CF=1,否则为0;
- OF是进行有符号数运算时记录溢出标志:
- 只有当两个相同符号的数相加,或者两个不同符号的数相减,而运算结果的符号与原数符号相反时,才可能产生溢出,此时OF为1;
-
CPU的基本结构:
- 运算器:
- 算术逻辑单元ALU:
-
加法器:
- 串行加法器:只有一个全加器,数据诸位串行送入加法器,具有器件少、成本低的优点和速度慢的缺点;
- 并行加法器:
- 串行进位: C i = G i + P i C i − 1 , G i = A i B i , P i = A i ⊕ B i C_i = G_i + P_iC_{i-1},G_i = A_iB_i,P_i=A_i\oplus B_i Ci=Gi+PiCi−1,Gi=AiBi,Pi=Ai⊕Bi;其中 G i G_i Gi称为, P i P_i Pi称为
- 并行进位: C i = G i + P i C i − 1 = ∑ j = 1 i G j × ∏ k = j + 1 i P k + ∏ k = 1 i P k × C 0 C_i = G_i + P_iC_{i-1} = \sum\limits_{j=1}^iG_j\times\prod\limits_{k=j+1}^iP_k+\prod\limits_{k=1}^iP_k\times C_0 Ci=Gi+PiCi−1=j=1∑iGj×k=j+1∏iPk+k=1∏iPk×C0;
- 分组并行进位:
- 单级先行进位:组内并行,组间串行,低组的最高进位作为高组的最低进位;
- 多级先行进位:组内并行,组间并行,每组除了最高位进位之外,都可以同时产生;第二轮再同时产生每组的最高位进位;
-
- 寄存器:暂存寄存器;通用寄存器;累加寄存器;程序状态字寄存器PSWR;
- 移位器;乘数计数器(控制乘除运算的操作步数);
- 算术逻辑单元ALU:
- 控制器:
- 程序计数器PC;指令寄存器IR;指令译码器;
- 存储器地址寄存器MAR;存储器数据寄存器MDR;
- 时序系统:产生各种时序信号,由统一的时钟分频得到;
- 微操作信号发生器:根据IR、PSW以及时序信号、外来信号(如中断请求、DMA请求)等输入控制信号产生CPU内部以及系统控制总线上的输出控制信号;
- 运算器:
-
CU控制方式:
-
硬布线控制:
- 根据指令要求,按照时序和内外部的状态,发送一系列微操作控制信号;
- 速度快,但是灵活性不好;适合于RISC;
-
微程序控制:
-
将每条机器指令转化成一段微程序,并存入专门的存储器(控制存储器,在CPU内部,用ROM实现)中,微操作控制信号由微程序中的微指令产生;速度慢,但是规整性、灵活性和可维护性好;适合于CISC;目前大部分计算机都采用微程序设计技术;
-
一条微指令可能有若干条微命令,每条微命令对应一个微操作;
-
控制存储器CM:存放微程序的存储器,在CPU内部,使用ROM实现;
-
微地址寄存器CMAR:存放微指令的地址;可以由微地址形成部件、下地址、入口地址硬件、计数器等方式产生,因此需要一个多路选择器,选择一个地址来源;
-
微指令寄存器CMDR:存放微指令;
-
工作过程:
1)执行公共的取指微程序:机器自动将其取值微程序入口地址装入CMAR(硬件直接产生),从CM中读出微指令送入CMDR,然后执行取指操作; 2)取到机器指令的地址后,由其操作码字段经过微地址形成部件,形成该指令对应微程序的入口地址,并送入CMAR中(OP(IR)->形成部件->CMAR); 3)从CM中逐条取出对应的微指令并执行,下一条指令的地址由上一条指令的下地址字段直接给出,送入CMAR(AD(CMDR)-> CMAR);地址译码后,从控制存储器取出微指令(CM(CMAR)->CMDR); 4)指令执行完毕后,最后一条微指令的下地址字段给出取指微程序的入口地址,以进行下一条机器指令的取指;
-
微指令编码方式:
- 直接编码/直接控制方式:无需译码,微指令的微命令字段中每一位都代表一个微命令,即有N条微命令,微命令字段就有N位,该微指令中需要执行哪条微命令,其对应位为1;
- 字段直接编码方式:将微命令字段分成若干子字段,互斥性微命令组合在同一字段,相容性微命令组合在不同字段,每个字段独立编码,且需要留出1个状态用于表示自己没有命令,因此如果该段有n个微命令,则需要 ⌈ log ( n + 1 ) ⌉ \lceil\log(n+1)\rceil ⌈log(n+1)⌉位表示该段;可以缩短微指令字长,但是需译码,速度慢;
-
字段间接编码:字段之间并不独立,一个字段的微命令需由另一个字段中的某些微命令解释,即需要其他字段的译码输出;
-
混合编码:经常用的微命令使用直接编码,不常用的微命令使用字段编码;
-
微指令格式:
- 水平型微指令:可以定义并执行几种并行的基本操作;微程序短,但是微指令长;上述的编码方式都是属于水平型微指令;
- 垂直型微指令:类似机器指令,只能定义并执行一种基本操作;微指令短,但微程序长;执行速度慢,工作效率低;
-
-
-
CPU流水线技术:
-
5段流水方式:取指(IF) -> 译码/取数(ID) -> 执行(EX) -> 访存存储器(M) -> 写回寄存器(WB);
-
锁存器:每两个功能段之间增加锁存器,暂存前一个功能段的操作结果,为后一个功能段提供操作信号;
-
装入时间:第一个任务进入流水线到输出流水线的时间;
-
排空时间:最后一个任务进入流水线到输出流水线的时间;
-
流水线分类:
-
-
流水线冲突:
-
资源冲突:多条指令同一时刻争用同一资源(功能部件)形成的冲突;解决办法有:
- 暂停时钟周期;
- 采用数据cache和指令cache分离技术;
-
数据冲突:下一条指令用到该条指令的结果,分为RAW,WAR和WAW(按序流动的流水线只可能出现RAW相关);解决办法有:
- 暂停时钟周期(硬件阻塞或者软件插入NOP指令);
- 数据旁路技术:直接把前一条指令ALU计算结果作为该指令的输入,即可以在上一条指令的WB段开始取数段,提前一个机器周期;
- 编译优化;
-
控制冲突:下一条指令的位置要根据该条指令的结果判断;解决办法有:
- 分支预测:静态预测总是预测条件不满足,即继续执行;动态预测根据程序执行的历史情况动态预测调整;
- 预取转移成功和不成功两个控制流方向上的目标指令;
- 加快和提前形成条件码;
-
超标量流水线:每个时钟周期(每条流水线)可并发多条独立的指令,需要配置多个功能部件;不能调整指令的执行顺序,需要靠编译程序解决优化问题;
-
超流水线技术:在一个时钟周期内再分段,让一个功能部件在一个时钟周期内使用多次;不能调整指令的执行顺序,需要靠编译程序解决优化问题;
-
超长指令字:将多条能并行的指令组合成一个具有多个操作码字段的超长指令字,需要多个处理部件;
-
-
总线分类:
- 片内总线;系统总线;通信总线/外部总线;
-
总线性能指标:
- 总线时钟周期:机器的时钟周期;总线时钟频率:总线时钟周期的倒数;
- 总线传输周期:一次总线操作的时间,包含若干总线时钟周期;总线工作频率:总线传输周期的倒数;
- 总线宽度:总线上同时传输的数据位数,通常指数据总线的根数;
- 总线带宽:单位时间内传输的数据位数 = 总线宽度 x 总线工作频率;
- 并行和串行传输速度比较:
- 并行总线传输通常比串行总线传输速度更块;
- 但是当时钟频率很高时,并行导线之间相互干扰越来越严重,数据难以恢复;
- 串行传输比并行传输最大的好处就是稳定性和支持更大的传输距离,且导线少,线间干扰易控制;
-
总线特性:
- 机械/物理特性(尺寸、形状);电气特性(传输方向和有效的电平范围);
- 功能特性(每根传输线的功能);时间特性(信号和时序的关系);
-
总线结构:
- 单总线结构:只有一根系统总线,按照传送信息的不同细分为地址总线、数据总线和控制总线;
- 双总线结构:
- 主存总线:用于CPU、主存和通道之间传送数据;
- I/O总线:用于外部设备和通道之间传送数据;
- 三总线结构:在双总线结构的基础上,增加一个DMA总线,用于主存和高速外设之间直接传送数据;
- 各总线之间通过桥接器相连;
-
总线传输方式:
- 常规传输:在一个传输周期中,传输一个地址和一单位数据(需要2个总线时钟周期传送1单位数据);
- 猝发传输:在一个传输周期中,传输一个地址和一批以该地址为首地址的地址连续的数据(需要n+1个总线时钟周期传送n单位数据);
-
总线仲裁方式:
-
集中仲裁:
- 链式查询:需要 3 3 3条控制线(BS,BR,BG);优先级固定;对电路故障敏感
- 计数器定时查询:需要 2 + ⌈ log n ⌉ 2+\lceil \log n\rceil 2+⌈logn⌉条控制线(BS,BR,设备地址);优先级可变;
- 独立请求:需要 2 n + 1 2n+1 2n+1条控制线(n条BR,n条BG,以及1条BS线);响应速度快,优先级灵活;但控制复杂;
-
-
分布仲裁:每个主模块都有自己的仲裁号和仲裁器,当有总线请求时,则发送自己的仲裁号到共享的仲裁总线上,通过仲裁器比较仲裁总线上的仲裁号和自己的仲裁号,如果自己的优先级更低则则撤销请求;最终优先级最高的仲裁号留在仲裁总线上;
-
总线传输阶段:
- 申请分配阶段:需要使用总线的主设备提出申请,通过总线仲裁进行分配;
- 寻址阶段:取得使用权的主设备通过总线发出要访问的从设备的地址或命令,并启动从设备;
- 传输阶段:主设备和从设备之间的数据交换;
- 结束阶段:主设备相关信息撤出总线,让出总线使用权;
-
总线通信方式:
- 同步通信:
- 使用一个统一的时钟信号;每个部件或设备发送或接收信息都在固定的总线传送周期上;
- 优点:传送速度快,总线控制简单;缺点:强制性同步;无法保证可靠传输;
- 适合于:总线长度较短及各部件存取时间比较接近的系统;
- 异步通信:
- 依靠传送双方的握手信号实现定时控制,主设备提出请求信号,从设备回复应答信号;
- 每次通信往往交换多位数据;
- 不互锁方式:主设备提出请求信号,不必等待从设备的应答信号,而是经过一段时间自动撤销;从设备发出应答信号,也经过一段时间便自动撤销;
- 半互锁方式:主设备提出请求信号,必须等待从设备的应答信号后才撤销;但从设备发出应答信号后,经过一段时间便自动撤销;
- 全互锁方式:主设备提出请求信号,必须等待从设备的应答信号后才撤销;从设备发出应答信号后,必须等待主设备请求信号已撤销的信号,才撤销应答信号;
- 优点:总线传输周期长度可变,保证可靠传输;缺点:速度更慢,控制更复杂;
- 适用于 速度差异较大的设备之间,如I/O接口和打印机;
- 半同步通信:
- 同步异步相结合;
- 同步方面:发送方用系统时钟前沿发信号,接收方用系统时钟后沿判断、识别;
- 异步方面:增加一条“等待”响应信号,允许不同速度的模块和谐工作;
- 分离式通信:
- 充分挖掘系统总线每个瞬间的潜力;各模块有权申请占用总线;
- 采用同步方式通信,不等对方回答;
- 各模块准备数据时,不占用总线;
- 同步通信:
-
总线标准:
- 系统总线:
- ISA:最早出现的微型计算机总线;
- EISA:ISA的扩展;
- 局部总线:
- VESA:针对系统高速传输图像的局部总线;
- PCI:
- 为外围设备使用的局部总线;即插即用,桥连接;并行传输;
- 与CPU和时钟频率无关,采用猝发传送;
- 扩展性好,可以采用多级PCI总线,常用于声卡、显卡和网卡;
- AGP:视频接口标准,用于连接主存和图形存储器;
- PCI-Express:替代PCI和AGP的最新总线标准;每一个通道是串行传输,但是通常PCI-E都是并行多个通道以实现更快的传输速度;
- 设备总线:
- USB:
- 连接外部设备的I/O总线;是设备与设备控制器之间的接口;
- 即插即用,热插拔;
- 采用菊花链的形式连接多个外设,有很好的扩充性,一个USB控制器可扩充127个外部USB设备
- 高速传输,速度可达480Mbps;
- 串行传输;
- USB:
- IDE:集成设备电路,是一种IDE接口磁盘启动器接口标准;
- SCSI:用于计算机和智能设备之间系统接口的标准;
- SATA:基于行业标准的串行硬件驱动器接口;
- 系统总线:
-
I/O接口:
-
功能:实现主机和外设的通信联络;进行地址译码和设备选择;实现数据缓冲;信号格式转换;传送控制命令和状态信息;
-
基本结构:
-
-
I/O总线:
- 数据线:数据、状态和控制命令、中断类型号;
- 地址线:传送端口地址;
- 控制线:传送读写信号;
-
数据传送格式:并行接口(一字节或者一个字所有位同时传送);串行接口(一位一位地传送);
-
常见I/O接口:即I/O控制器,比如打印机适配器、网络控制器、可编程中断控制器;
-
I/O端口:
- 指接口电路中能够被CPU直接访问的寄存器,主要有:数据端口 / 数据缓冲寄存器(可读写),状态端口(只读)和控制端口 / 状态/控制寄存器(只写);
- 若干端口加上相应的控制逻辑电路组成接口;
- I/O端口编址方式:
- 统一编址/存储器映射方式:I/O端口当成存储器的单元进行地址分配;用统一的访存指令就可以访问,无需专门的I/O指令;
- 独立编址/I/O映射方式:专门的I/O指令访问独立的编址空间;
-
I/O控制方式:
-
程序查询方式:
- 至少每传输一个端口大小的数据后,为防止该端口数据被冲刷,得进行一次查询;
-
中断方式:
- 中断隐指令:硬件实现的中断前的准备工作,包括关中断 (置0允许中断触发器,此时不涉及关中断指令)、保存端点和取中断向量(中断服务程序的入口地址);
- CPU在每 指令执行阶段的结束时刻响应外部中断,CPU响应中断请求后,将中断应答信号(INTR)发回到数据总线上,CPU从数据总线上读取中断类型号(中断向量表中的地址),查找中断向量表,找到对应的中断向量;
- 中断响应次序:由硬件排队器的优先级确定;
- 中断处理次序:由中断屏蔽字的优先级确定(因此当高响应优先级低处理优先级的中断源响应后,再开中断之后就会被更高处理优先级的中断源抢占);
- 多重中断处理流程:(单重中断程序中,只保留恢复现场后的开中断即可)
-
DMA方式:
- DMA控制器结构:
- DMA数据传送过程:
-
DMA请求:发生在一个总线事务完成后,可以在每个机器周期结束后,只要在CPU不占用总线时,就能被响应;DMA请求的优先级高于中断方式;
-
周期挪用:DMA通过周期窃取的方式与主存交互数据;DMA和CPU存在访存冲突时,CPU暂时放弃总线占有权(DMA总线使用权优先级更高),由DMA挪用几个存取周期,传输一个数据端口的数据后,释放总线使用权,接着再进行DMA请求,直到整个数据块传输结束;但是CPU正在访存时,必须等待存取周期结束才会放弃总线;
-
通道方式:
-
通道是一种硬件,或特殊的处理器,有自己的指令但是没有自己的内存,和CPU共享内存;
-
在系统中设有通道控制部件,每个通道挂接若干外设,主机在执行I/O指令时,只需启动有关通道,通道执行通道程序(置于内存),即可完成I/O操作;
-
通道方式工作过程:
① 在用户程序中使用访管指令进入操作系统管理程序,由CPU通过管理程序组织一个通道程序,并使用I/O指令启动通道;
② 通道处理器执行通道程序,完成数据的传输;
③ 通道程序结束后,向CPU发出中断请求,CPU响应中断请求并再次进入管理程序处理中断;
-
-
二、技术篇:
-
计算机各性能指标计算:
- 时钟周期 = 1/f,其中f是主频;
- 平均CPI = 各种指令的CPI的使用占比的加权和;
- MIPS = f/CPI,其中f是主频;
- MFLOPS: 每秒执行多少百万次浮点运算;
- CPU执行时间 = 指令条数 x CPI x 时钟周期 x 命中率 + 访存次数 x 缺失率 x 一次访存时间;
-
各种编码的计算:
- BCD码:每位十进制数都采用4位二进制数来表示,有:
- 8421码:各位权值分别为8,4,2,1,当两个8421码相加的结果落入10~15,则需要加6进行修正;
- 余3码:在8421码的基础上加上偏移量3;
- 2421码:各位权值分别为2,4,2,1,大于等于5的最高位为1,小于5的最高位为0;
- ASCII码:7位二进制字符编码,可以表示128个基本字符;
- 汉字编码:汉字编码包括汉字的输入编码、汉字内码、汉字字形码三种;
- 校验码:
- 奇偶校验码:
- 奇校验:增加1位校验位,使得所有位中的1的个数为奇数;
- 偶校验:增加1位校验位,使得所有位中的1的个数为偶数;
- 只能发现奇数位错误;
- 汉明码:
- 能纠正一位错的汉明码满足: n + k ≤ 2 k − 1 n+k \le 2^k-1 n+k≤2k−1,其中信息位是n位,校验位是k位;
- 通过校验矩阵可以分组对数据位进行校验并填入相应的校验位;
- 7位汉明码有1位纠错能力,2位检错能力;
- 循环冗余校验码:
- 将传送的K位信息码左移R位,与生成多项式G(x)做模2除法,其R位余数作为校验码附加在信息码低R位;
- 接收方用K+R位的新码与G(x)做模2除法,若余数为0则无错误,若余数不为0,则出错;
- 纠错:1位出错位置和余数的对应关系是确定的,因此通过余数就能确定1位的出错位置并纠错;
- 奇偶校验码:
- 有符号数的机器表示码:(以下机器字长均为n+1位,数据位为n位)
- 原码:数据位不变,正数最高符号位为0,负数符号位为1;真值零的原码有两种表示;
- 纯小数: [ x ] 原 = { x 0 ≤ x < 1 1 − x − 1 < x ≤ 0 [x]_{原}=\begin{cases}x&0\le x <1\\1-x&-1<x\le 0 \end{cases} [x]原={x1−x0≤x<1−1<x≤0;取值范围: 2 − n − 1 ≤ x ≤ 1 − 2 − n 2^{-n}-1\le x\le 1-2^{-n} 2−n−1≤x≤1−2−n;
- 纯整数: [ x ] 原 = { 0 , x 0 ≤ x < 2 n 2 n − x − 2 n < x ≤ 0 [x]_{原}=\begin{cases}0,x&0\le x <2^n\\2^n-x&-2^n<x\le 0 \end{cases} [x]原={0,x2n−x0≤x<2n−2n<x≤0;取值范围: 1 − 2 n ≤ x ≤ 2 n − 1 1-2^{n}\le x\le 2^{n}-1 1−2n≤x≤2n−1;
- 补码:正数的补码同原码,负数的补码是数据位各位取反末尾加1,符号位为1;真值零有唯一表示;
- 纯小数: [ x ] 补 = { x 0 ≤ x < 1 2 + x − 1 ≤ x < 0 [x]_{补}=\begin{cases}x&0\le x <1\\2+x&-1\le x< 0 \end{cases} [x]补={x2+x0≤x<1−1≤x<0;取值范围: − 1 ≤ x ≤ 1 − 2 − n -1\le x\le 1-2^{-n} −1≤x≤1−2−n;
- 纯整数: [ x ] 补 = { 0 , x 0 ≤ x < 2 n 2 n + 1 + x − 2 n ≤ x < 0 [x]_{补}=\begin{cases}0,x&0\le x <2^n\\2^{n+1}+x&-2^n\le x< 0 \end{cases} [x]补={0,x2n+1+x0≤x<2n−2n≤x<0;取值范围: − 2 n ≤ x ≤ 2 n − 1 -2^{n}\le x\le 2^{n}-1 −2n≤x≤2n−1;
- 由 [ X ] 补 [X]_{补} [X]补求 [ − X ] 补 [-X]_{补} [−X]补:连同符号位一起变反,末尾加1;
- 反码:正数的反码同原码,负数的反码是数据位各位取反,符号位为1;真值零有两种表示;
- 纯小数: [ x ] 反 = { x 0 ≤ x < 1 2 − 2 − n + x − 1 < x ≤ 0 [x]_{反}=\begin{cases}x&0\le x <1\\2-2^{-n}+x&-1< x\le 0 \end{cases} [x]反={x2−2−n+x0≤x<1−1<x≤0;取值范围: 2 − n − 1 ≤ x ≤ 1 − 2 − n 2^{-n}-1\le x\le 1-2^{-n} 2−n−1≤x≤1−2−n;
- 纯整数: [ x ] 反 = { 0 , x 0 ≤ x < 2 n 2 n + 1 − 1 + x − 2 n < x ≤ 0 [x]_{反}=\begin{cases}0,x&0\le x <2^n\\2^{n+1}-1+x&-2^n< x\le 0 \end{cases} [x]反={0,x2n+1−1+x0≤x<2n−2n<x≤0;取值范围: 1 − 2 n ≤ x ≤ 2 n − 1 1-2^{n}\le x\le 2^{n}-1 1−2n≤x≤2n−1;
- 移码:在真值上加上一个偏置常数(一般取
2
n
2^n
2n);真值零有唯一表示;与真值的补码表示只有符号位不同;
- 纯整数: [ x ] 移 = 2 n + x [x]_{移}=2^n+x [x]移=2n+x;取值范围: − 2 n ≤ x ≤ 2 n − 1 -2^{n}\le x\le 2^{n}-1 −2n≤x≤2n−1;
- 原码:数据位不变,正数最高符号位为0,负数符号位为1;真值零的原码有两种表示;
- BCD码:每位十进制数都采用4位二进制数来表示,有:
-
定点数的运算:
-
移位运算:
- 算法移位:
- 有符号数的移位,符号位保持不变,移出的空位补“0”(补码/反码负数的高位,1表示0);
- 补码左移需要最高有效位和符号位相同,否则会丢失数据;
- 双符号位的移位只有低符号位需要参与移位(高符号位才是真正的符号位);
- 逻辑移位:无符号数的移位,左右移位的空位均补零;
- 循环移位:
- 带进位标志位左移:数据的最高位移入CF,CF移入最低位;
- 不带进位标志位左移:数据的最高位移入最低位;
- 算法移位:
-
加减法:
- 原码加减法:使用绝对值进行加减,符号位单独考虑,溢出位丢弃;
- 补码加减法:正常加减,溢出位丢弃;
-
乘除法:
-
原码一位乘法:
-
使用绝对值进行乘法,符号位单独异或形成;
-
对于n位数据位的原码乘法,需要n次加法,n次移位;
-
被乘数和部分积都采用双符号位,以便溢出位的右移;
1)被乘数绝对值为x,乘数绝对值为y,部分积为0; 2)取出乘数的最低位,若为1,则部分积加上x;若为0,则部分积加上0; 3)乘数逻辑右移一位,移出位丢弃;部分积逻辑右移一位,移出位占据乘数的最高空位; 4)重复2~3,直到原乘数的所有数据位都被取出,此时部分积作为高位部分积,乘数作为低位部分积;
-
-
补码一位乘法/Booth算法:
-
符号位参与运算,被乘数和部分积都采用双符号位;
-
对于n位数据位的补码乘法,需要n+1次加法,n次移位;
1)被乘数的补码是x1,被乘数相反数的补码是x2,乘数的补码是y,部分积是0; 2)取出乘数的最低位和移出位(第一次移出位令为0): ① 若为00或者11,则部分积加上0; ② 若为01,则部分积加上x1; ③ 若为10,则部分积加上x2; 3)乘数算术右移一位,移出位保留;部分积算术右移一位,移出位占据乘数的最高空位; 4)重复2~3,直到原乘数的所有数据位都被取出,此时部分积作为高位部分积,乘数作为低位部分积; 5)再额外执行一次2,此时乘数的最低位是低位部分积的最低位,移出位是原乘数的符号位; 6)5计算出的部分积作为真正的高位部分积,低位部分积除最低位之外作为真正的低位部分积;
-
-
原码加减交替除法:
-
使用绝对值进行除法,符号位单独异或形成;
-
对于n位数据位的原码除法,需要n+1或者n+2(最后余数为负,需要额外一次加法来恢复余数)次上商/加法,n次移位;
-
被除数、除数、商、余数均采用一位符号位即可;
-
由于左移了n次,因此最终得到的余数也是被放大了 2 n 2^n 2n倍的余数,需要乘以 2 − n 2^{-n} 2−n;
-
第一个余数一定为负,即商是0,被除数的绝对值小于除数;若第一个余数为正,上商1,则发生溢出,停止运算;
1)被除数的绝对值是x,除数绝对值的补码是y1,除数绝对值的相反数的补码是y2,商是0; 2)三种情况: ① 若是第一次,则直接用x加上y2(做减法试探),得到第一个余数; ② 若余数为正,则商的最低位置1,余数和商逻辑左移1位,再加上y2(做减法); ③ 若余数为负,则商的最低位置0,余数和商逻辑左移1位,再加上y1(做加法); 3)重复2,直到第一次上的商左移到符号位; 4)得到最终的商和余数: ① 此时如果余数为正,则商的最低位置1; ② 如果余数为负,则则商的最低位置1,还需要再加上y1以恢复余数;
-
-
补码加减交替除法:
-
符号位参与运算;被除数和余数采用两位符号位;
-
对于n位数据位的补码除法,需要n+1次上商/加法,n次移位;
-
由于左移了n次,因此最终得到的余数也是被放大了 2 n 2^n 2n倍的余数,需要乘以 2 − n 2^{-n} 2−n;
1)被除数的补码是x,除数的补码是y1,除数的相反数的补码是y2,商是0; 2)三种情况: ① 若是第一次,若x和y1同号,则x+y2;若x和y1异号,则x+y1(做减法试探); ② 若余数与除数同号,则商的最低位置1,余数和商算术左移1位,再加上y2(做减法); ③ 若余数与除数异号,则商的最低位置0,余数和商算术左移1位,再加上y1(做加法); 3)重复2,直到第一次上的商左移到符号位; 4)得到最终的商和余数:此时不管余数是同号还是异号,商的最低位恒置1;
-
-
-
-
溢出判断:
- 仅当两个符号相同的数相加或者两个符号相异的数相减才会溢出;
- 采用一位符号位:参与操作的两个数的符号相同,但与结果的符号不同,则溢出;
- 采用双符号位:(最高符号位代表真正的符号)
- 00:结果为正数,无溢出;
- 11:结果为负数,无溢出;
- 01:结果正溢出;
- 10:结果负溢出;
- 采用1位符号位和最高有效位的进位:
- 符号位的进位Cs和最高数位C1的进位相同,则没有溢出;
- Cs = 0, C1 = 1:正溢出;Cs = 1, C1 = 0:负溢出;
-
类型转换:
- 无符号数和有符号数:不改变数码内容,改变解释方式;
- 长整数变短整数:高位截断,保留低位;
- 短整数变长整数:符号扩展;
- 整数变浮点数:若浮点数尾数精度高于整数精度,则不丢失数据,否则丢失精度;
- 浮点数变整数:若没有溢出,则向0方向截断,可能丢失精度;
-
边界对齐:占b字节的数据,首地址需要整除b;
-
浮点数的表示和运算:
- N = M × r E N = M \times r^E N=M×rE,其中M是尾数,r是尾数基值,E是阶码;
- 规格化原则:
- 基数是r,则要求尾数最高的前r个有效位不能全是0(补码负数,则不能全是1);
- 即规格化尾数的绝对值应该大于等于 1 r \cfrac{1}{r} r1;
- 原码规格化形式:
- 正数形式:0.1xx…x,最大值为0.11…1( 1 − 2 − n 1-2^{-n} 1−2−n),最小值为:0.100…0( 1 2 \cfrac{1}{2} 21);
- 负数形式:1.1xx…x,最大值为1.100…0( − 1 2 -\cfrac{1}{2} −21),最小值为:1.11…1( 2 − n − 1 2^{-n}-1 2−n−1);
- 补码规格化形式:(尾数最高位与尾数符号位相异)
- 正数形式:0.1xx…x,最大值为0.11…1( 1 − 2 − n 1-2^{-n} 1−2−n),最小值为:0.100…0( 1 2 \cfrac{1}{2} 21);
- 负数形式:1.0xx…x,最大值为1.011…1( − 1 2 − 2 − n -\cfrac{1}{2}-2^{-n} −21−2−n),最小值为:1.00…0( − 1 -1 −1);
- 规格化操作:
- 左规:当浮点数运算结果为非规格化时,尾数左移一位,阶码减1(基数为2);可能需要多次;
- 右规:当浮点数运算结果溢出时,尾数右移一位,阶码加1(基数为2);最多一次;
- 溢出:
- 上溢:运算结果的绝对值超过最大绝对值,此时产生异常,执行溢出中断处理;
- 下溢:运算结果的绝对值小于最小绝对值,此时当作机器零处理(没有溢出中断处理);
- 机器零:
- 浮点数运算结果在0到最小正数之间(正下溢)和最大负数到0之间(负下溢)时,称该趋于0的数为机器零;
- 定点数的零是真实零,而非趋于零的机器零;
- IEEE 754单精度浮点数和双精度浮点数标准:
- 单精度浮点数:
- 最高位是1位数符;
- 中间8位是阶码,使用移码表示,偏移量是127;舍弃全1阶码用作正无穷;舍弃全0阶码用作机器零(尾数全零)或者非规格化数(尾数非全零);表示范围为: [ − 126 , 127 ] [-126,127] [−126,127];
- 最后23位是纯小数尾数,使用原码表示,隐含最高位的规格化1;表示范围为: [ 1 , 2 − 2 − 23 ] [1,2-2^{-23}] [1,2−2−23];
- 由于尾数大于等于1,因此单精度浮点数的乘法运算肯定不需要左规;
- 双精度浮点数:
- 最高位是1位数符;
- 中间11位是阶码,使用移码表示,偏移量是1023;舍弃全1阶码用作正无穷;舍弃全0阶码用作机器零(尾数全零)或者非规格化数(尾数非全零);表示范围为: [ − 1022 , 1023 ] [-1022,1023] [−1022,1023];
- 最后52位是纯小数尾数,使用原码表示,隐含最高位的规格化1;表示范围为: [ 1 , 2 − 2 − 52 ] [1,2-2^{-52}] [1,2−2−52];
- 单精度浮点数:
- 浮点数的表示范围的计算:
- 最大正数:尾数正数最大,阶码正数最大;
- 最小正数:尾数正数最小,阶码负数最小;
- 最大负数:尾数负数最大,阶码负数最小;
- 最小负数:尾数负数最小,阶码正数最大;
- 加减运算:
- 对阶:小阶向大阶看齐;需要舍入,但是不会引起阶码溢出;
- 尾数求和:补码运算;
- 规格化:左规(可能引起阶码下溢)/ 右规(可能需要舍入,可能引起阶码上溢);
- 舍入:
-
0舍1入法:当1入(末尾加1)时,尾数可能溢出,此时又需要右规,可能引起阶码上溢;
-
恒置1法;
-
- 乘除运算:略;
-
存储器性能指标计算:
- 存储容量 = 存储字数 x 字长;
- 存储速度 = 数据宽度 / 存储周期;
-
主存芯片的扩展:
-
位扩展:选择N个M x k位的芯片,组成M x Nk位的芯片;
-
字扩展:选择N个M x k位的芯片,组成NM x k位的芯片;
-
与CPU的连接:
1)合理选择存储芯片; 2)连接地址线:低位连接各个芯片的片内地址引脚,高位通过译码器连接各个芯片的片选信号; 3)连接数据线:位扩展的一组芯片的引脚依次连接各条数据线; 4)连接读写命令线:直接连接每个芯片的读写控制端; 5)连接片选线:将CPU的MREQ片选有效信号连接到各个芯片的CS片选控制端;
-
交叉存储器的模块个数最小值(交叉存取度m)的计算:
- 设数据总线一次能存取一个字,而模块存取一个字的存取周期为T,总线传输周期为r(即每经过r时间延迟后启动下一个模块):
- m = T/r(这样才能保证某模块再次启动前,上一次启动的存取操作已完成);
- 通常模块个数直接取m;
-
连续存取n个字所需的时间:
- 顺序方式:t1 = nT;传输单位数据的平均时间为:T;
- 交叉方式:t2 = T + (n-1)r;传输单位数据的平均时间为:T/n;
-
-
中断屏蔽字设置:
- 假设有五个中断源 L 4 L 3 L 2 L 1 L 0 L_4L_3L_2L_1L_0 L4L3L2L1L0,中断屏蔽字为 M 4 M 3 M 2 M 1 M 0 M_4M_3M_2M_1M_0 M4M3M2M1M0;
- M i = 1 M_i = 1 Mi=1表示对 L i L_i Li进行屏蔽;
- 设中断处理优先级从高到低的顺序为: L 4 → L 0 → L 2 → L 1 → L 3 L_4\rightarrow L_0 \rightarrow L_2 \rightarrow L_1 \rightarrow L_3 L4→L0→L2→L1→L3;
- 则 L 1 L_1 L1的中断屏蔽字为: 01010 01010 01010;即将比自己低优先级以及自己的屏蔽字设为1;
-
cache的工作过程和相关计算:
- cache工作原理:
-
cache和主存的映射方式:
- 直接映射:(块冲突概率最高,命中率最低)
-
全相联映射:(块冲突概率最小,命中率最高,但是搜索速度慢,cache成本高,常用相联存储器进行映射)
-
组相联映射:
-
cache替换算法:随机算法;先进先出;LRU;
-
cache写策略:
- 写命中:
- 全写法:cache和主存都要写;可以随时保持主存数据的正确性,但也增加了访存次数;为了匹配速度差异,增加一个写缓冲,CPU同时向cache和buffer里写,后续再从buffer往主存里写;频繁写时会造成写缓冲溢出;
- 写回法:只写cache,等到此块需要被替换时再写回主存(需要给每一块增加一个修改位标志);减少了访存次数,但存在不一致的隐患;
- 写不命中:
- 写分配法:加载主存块到cache,然后更新cache中的对应块;
- 非写分配法:只写主存,不调块到cache;
- 写命中:
-
多级cache:每一级可以采用不同的写策略,如:靠近CPU的cache之间采用全写法+非写分配,远离CPU的cache之间采用写回法+写分配,有效避免频繁写造成的写缓冲溢出问题;
-
cache的相关计算:
- 命中率a = 存取cache的次数 / 总存取次数;
- 平均存取时间 = a x 访存cache的时间 + (1-a) x 访存主存的时间;
- cache效率 = 访存cache的时间 / 平均存取时间;
- cache地址计算:
- 块内地址(位数);
- 块号/组号/标记(位数);
- 总容量:包括存储容量和标记阵列容量(每行cache必含有效位1位,和标记若干位,可能有修改位1位和替换算法控制位 log k \log k logk位,k为k路组相联,即每次可替换的范围标号);
-
虚拟存储方式下的地址转换过程:
- 虚拟分页:
- 虚拟分段:
-
虚拟段页式:
- 把程序逻辑上分段,每段再划分成固定的页;
- 虚地址分为:段号、段内页号、页内偏移;
- 访存过程:CPU根据段号得到段表地址,再段表中取出该段的页表起始地址,再找到对应页中段内页号对应的页框号,加上页内偏移得到物理地址;
-
带TLB的页式虚拟存储器的访存过程:
- 各种寻址方式下有效地址的计算:
- 指令周期的数据通路:
-
分析指令序列的微操作序列和所需的控制信号:
-
取指微操作序列/控制信号:
时序 微操作 有效控制信号 T0 (PC)->MAR, 1->R PCout, MARin, read T1 M(MAR)->MDR, (PC)+1->PC MemR, MARout, MDRinE, +1 T3 (MDR)->IR MDRout, IRin -
间址周期微操作序列/控制信号:
时序 微操作 有效控制信号 T0 Ad(IR)->MAR, 1->R IRout, MARin, read T1 M(MAR)->MDR MemR, MARout, MDRinE T3 (MDR)->Ad(IR) MDRout, IRin -
中断周期微操作序列/控制信号:
时序 微操作 有效控制信号 T0 0地址或(SP-1)->MAR, 1->W SPout, MARin, write T1 (PC)->MDR PCout, MDRinE T3 (MDR)->M(MAR),向量地址->PC MDRoutE, MemW, PCin -
执行周期微操作序列/控制信号:
-
ADD X :
时序 微操作 有效控制信号 T0 Ad(IR)->MAR, 1->R IRout, MARin, read T1 M(MAR)->MDR MemR, MDRinE T2 (MDR)->Y MDRout, Yin T3 (Y)+(AC)->Z ALUadd, ACout T4 (Z)->AC Zout,ACin -
LDA X :
时序 微操作 有效控制信号 T0 Ad(IR)->MAR, 1->R IRout, MARin, read T1 M(MAR)->MDR MemR, MDRinE T2 (MDR)->AC MDRout, ACin -
STA X :
时序 微操作 有效控制信号 T0 Ad(IR)->MAR, 1->W IRout, MARin, write T1 (AC)->MDR ACout, MDRin T2 (MDR)->M(MAR) MDRoutE, MemW
-
-
-
简述微程序序列的微操作序列:
-
取值微程序微操作序列:
时序 微操作 T0 M0->CMAR, CM(CMAR)->CMDR (硬件自动) T1 (PC)->MAR, 1->R T2 Ad(CMDR)->CMAR, CM(CMAR)->CMDR T3 M(MAR)->MDR, (PC)+1->PC T4 Ad(CMDR)->CMAR, CM(CMAR)->CMDR T5 (MDR)->IR T6 OP(IR)->微地址形成部件->CMAR
-
-
计算各种I/O控制方式下占用CPU的时间比率:
- 程序查询方式:设每次传送b字节数据,需要k次查询,一次查询消耗n个时钟周期,传输率是s,时钟周期是t,则时间比率为:knt/(b/s);
- 中断方式:设每次中断响应和中断处理程序的总消耗为n个时钟周期,单位传送数据为b字节,传输率为s,时钟周期是t,则时间比率为:nt/(b/s);
- DMA方式:设DMA预处理和后处理的总消耗为n个时钟周期,平均传输的数据长度为b字节,传输率为s,时钟周期是t,则时间比率为:nt/(b/s);
-
CPU流水线时空图绘制:
- 数据冲突:对于RAW相关,后一条指令的ID段应该在前一条指令的WB段结束后进入,即写完了才能译码
- 按序发射,按序完成:前一条指令若在ID段阻塞,则后一条指令只有在前一条进入ID段后才能进入IF段;防止后一条指令先于前一条指令执行完毕;
-
CPU流水线性能指标计算:
- 吞吐率:单位时间内流水线完成的任务数量;
- 设时钟周期为t,则一条k段线性流水线能够在k+n-1个时钟周期内完成n条指令,其吞吐率为: T P = n ( k + n − 1 ) t → 1 t TP = \cfrac{n}{(k+n-1)t}\rightarrow\cfrac{1}{t} TP=(k+n−1)tn→t1;
- 加速比:完成同样一批任务,不使用流水线的时间和使用流水线的时间之比;
- 设时钟周期为t,则一条k段线性流水线能够在k+n-1个时钟周期内完成n条指令,而顺序执行需要kn个时钟周期,其加速比为: S = k n t ( k + n − 1 ) t = k n k + n − 1 → k S = \cfrac{knt}{(k+n-1)t} = \cfrac{kn}{k+n-1}\rightarrow k S=(k+n−1)tknt=k+n−1kn→k;
- 效率:完成n个任务所用的时空区有效面积,和总面积之比;
- 设时钟周期为t,则一条k段线性流水线能够在k+n-1个时钟周期内完成n条指令,而有效的需要kn个时钟周期,其效率为: E = k n t k ( k + n − 1 ) t = S k → 1 E = \cfrac{knt}{k(k+n-1)t} = \cfrac{S}{k}\rightarrow 1 E=k(k+n−1)tknt=kS→1;
- 吞吐率:单位时间内流水线完成的任务数量;
-
磁盘性能指标:
- 磁盘容量:
- 格式化容量:按照某种特定记录方式可以记录的信息总量;格式化后少于非格式化容量;
- 非格式化容量:可以利用的磁化单元总数;
- 记录密度:
- 道密度:磁盘径向上单位长度上的磁道数;
- 位密度:磁道单位长度能记录的二进制代码位数;
- 面密度:道密度 x 位密度;
- 平均存取时间 = 寻道时间(磁头移动到目的磁道的时间)+ 旋转延迟时间(磁头定位到所在扇区的时间,一般取半圈的旋转时间)+ 传输时间(传输数据所花费的时间,若没给出传输速度,直接按照扇区的旋转时间计算);
- 磁盘容量: