组成原理考研笔记

组成原理考研笔记:

一、概念篇:
  • 冯 · 诺依曼计算机结构:

在这里插入图片描述

  • 字长:

    • 机器字长:计算机进行一次定点整数运算所能处理的二进制数据的位数,一般等于内部寄存器的大小,机器字长越长,计算精度越高;一个字就是指的机器字长的位数;CPU是多少位就代表机器字长是多少位;32位的CPU不能搭载64位的OS,而64位的CPU能够运行32位的OS;
    • 存储字长:内存一个存储单元存储的二进制代码的位数;“按字节编址/按字编址”反映存储字长的位数;
    • 指令字长:一个指令字包含的二进制代码的位数;一般是存储字长的整数倍
  • 周期

    • 时钟周期:CPU中最小的时间单位,每个动作至少一个时钟周期;
      • 时钟脉冲信号:时钟脉冲信号的宽度即时钟周期,是由机器脉冲源发出的脉冲信号经整形和分频后形成的;
      • 时钟周期以相邻状态间组合逻辑电路的最大延迟为基准确定;
      • 时钟周期也以指令流水线的每个流水段的最大部件时间所确定;
    • 机器周期:一条指令的各个基本操作的时间(如一次总线事务访问一次主存或I/O的时间),由若干时钟周期组成通常由存取周期来确定
    • 指令周期:取出一条指令并执行这条指令的时间,由若干机器周期组成
      • 单周期CPU:指令周期 = 时钟周期;在指令执行过程中控制信号不变;不可采用单总线结构数据通路
      • 多周期CPU:指令周期 = n x 时钟周期;
    • 存取周期:连续两次独立访问存储器操作之间所需的最小时间间隔;
    • 总线周期:一次总线操作所需的时间;由若干个时钟周期构成;
  • 程序:

    • 翻译程序:把高级语言源程序翻译成机器语言程序(目标代码)的软件;
      • 编译程序:将高级语言源程序一次全部翻译成目标程序
      • 解释程序:将源程序的一条语句翻译成对应的目标代码并立即执行;不会生成目标程序
    • 汇编程序:把汇编语言源程序翻译成机器语言程序;和机器语言一一对应;层次低于翻译程序;
    • 系统程序:操作系统程序;
    • 应用程序:用户程序;基于操作系统之上;
  • 用户可见寄存器

    • 所有用户可见:PC、PSW、通用寄存器;
    • 所有用户透明:MAR、MDR、IR、Cache、微指令寄存器、暂存寄存器、运算器的各组件、条件寄存器;
    • 汇编程序员可见:基址寄存器 + 中断字寄存器 + 所有用户可见寄存器;
  • 局部性原理:

    • 时间局部性:将要使用的信息,可能是正在使用的信息;
    • 空间局部性:将要使用的信息,可能存储在正在使用的信息的附近;
  • 校验码原理

    • 码距:任意两个合法码字之间最少变化的二进制位数,码距不小于2才具有检错能力;
    • L − 1 = D + C , D ≥ C L - 1 = D + C, D ≥ C L1=D+C,DC,其中 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,有一个同步接口,在响应控制输入前会等待一个时钟信号,这样就能和计算机的系统总线同步;
      • 只读存储器ROM:
        • 仍然是随机存取方式;
        • 分类:
          • 掩模式MROM;
          • 一次可编程PROM;
          • 可擦除可编程EPROM;
          • 闪存:是EPROM的扩展,用MOS管的浮栅的有无存储电荷;
          • 固态硬盘:由闪存芯片构成;
        • 写入速度比读出速度慢(破坏性写,先擦除,再写入);
        • 用于:可以作为主存储器的一部分,用于存放自举程序;可以存放微程序的控制存储器;
      • 直接存取存储器:磁盘,半随机存储
      • CD-ROM:只读光盘,只能写入数据一次,信息将永久保存,顺序存储;
      • 顺序存取存储器:磁带,顺序存储;
      • RAID技术
        • 将多个独立的物理磁盘组成一个独立的逻辑盘,数据在多个物理盘上分割交叉存储并行访问,具有更好的存储性能、可靠性和安全性
        • 提高RAID可靠性的措施是对磁盘进行冗余镜像处理和奇偶校验;
      • 条带化技术
        • 将一块连续的数据分成很多小部分并把它们分别存储在不同磁盘中;
        • 多个进程同时访问数据的多个不同部分,但不会造成磁盘冲突;
      • 相联存储器:
        • 把存储单元的一部分作为检索项去检索该存储器;
        • 内容指定方式和地址指定方式相结合进行寻址的存储器;
        • 适用器件:全相联的TLB或者cache;
      • 多模块存储器:
        • 单体多字存储器:在一个存取周期内从同一地址连续取出n条指令,然后逐条传送给CPU执行;优点是:提高了存储器的速度;缺点是:指令和数据在主存中必须连续存放;
        • 多体并行存储器:
          • 高位交叉编址:高位地址表示体号,低位地址为体内地址;缺点是总是先在一个模块内访问完,再去下一模块,即顺序访问存储模块,不能提高并行度和吞吐率;
          • 低位交叉编址:低位地址表示体号,高位地址为体内地址;程序总是连续存放在相邻模块中,因此又称交叉编址;可以采用流水线进行并行存取,提高存储器的带宽;
    • 主存基本结构和工作过程:

在这里插入图片描述

  • 指令系统:

    • 指令格式:
      • 零地址指令:如NOP指令,还有运算类的堆栈指令;
      • 一地址指令;二地址指令;三地址指令;四地址指令;
    • 单字长指令:指令长度等于机器字长的指令;
    • 定长指令字结构:所有指令的长度相等;与之对应的为变长指令字结构;
    • 定长操作码指令格式:
      • 指令字的最高位部分分配固定的n位作为操作码,最多能表示 2 n 2^n 2n条指令;
    • 扩展操作码指令格式
      • 操作码的长度随着地址码的减少而增加,不同地址数的指令可具有不同长度的操作码;
      • 注意不允许短码是长码的前缀;
      • 尽量分配短码给使用频率较高的指令;
      • 设地址段长为N,每减少一条i地址,则最多可以多 2 N 2^N 2N ( i − 1 ) (i-1) (i1)地址;
  • 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+PiCi1,Gi=AiBi,Pi=AiBi;其中 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+PiCi1=j=1iGj×k=j+1iPk+k=1iPk×C0
            • 分组并行进位:
              • 单级先行进位:组内并行,组间串行,低组的最高进位作为高组的最低进位;
              • 多级先行进位:组内并行,组间并行,每组除了最高位进位之外,都可以同时产生;第二轮再同时产生每组的最高位进位
      • 寄存器:暂存寄存器;通用寄存器;累加寄存器;程序状态字寄存器PSWR;
      • 移位器;乘数计数器(控制乘除运算的操作步数);
    • 控制器:
      • 程序计数器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;
        • 串行传输
    • 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+k2k1,其中信息位是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]={x1x0x<11<x0;取值范围: 2 − n − 1 ≤ x ≤ 1 − 2 − n 2^{-n}-1\le x\le 1-2^{-n} 2n1x12n
        • 纯整数: [ 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,x2nx0x<2n2n<x0;取值范围: 1 − 2 n ≤ x ≤ 2 n − 1 1-2^{n}\le x\le 2^{n}-1 12nx2n1
      • 补码:正数的补码同原码,负数的补码是数据位各位取反末尾加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+x0x<11x<0;取值范围: − 1 ≤ x ≤ 1 − 2 − n -1\le x\le 1-2^{-n} 1x12n
        • 纯整数: [ 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+x0x<2n2nx<0;取值范围: − 2 n ≤ x ≤ 2 n − 1 -2^{n}\le x\le 2^{n}-1 2nx2n1
        • [ 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]={x22n+x0x<11<x0;取值范围: 2 − n − 1 ≤ x ≤ 1 − 2 − n 2^{-n}-1\le x\le 1-2^{-n} 2n1x12n
        • 纯整数: [ 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+11+x0x<2n2n<x0;取值范围: 1 − 2 n ≤ x ≤ 2 n − 1 1-2^{n}\le x\le 2^{n}-1 12nx2n1
      • 移码:在真值上加上一个偏置常数(一般取 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 2nx2n1
  • 定点数的运算:

    • 移位运算:

      • 算法移位:
        • 有符号数的移位,符号位保持不变,移出的空位补“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} 2n

        • 第一个余数一定为负,即商是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} 2n

          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} 12n),最小值为: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 2n1);
    • 补码规格化形式:(尾数最高位与尾数符号位相异)
      • 正数形式:0.1xx…x,最大值为0.11…1( 1 − 2 − n 1-2^{-n} 12n),最小值为:0.100…0( 1 2 \cfrac{1}{2} 21);
      • 负数形式:1.0xx…x,最大值为1.011…1( − 1 2 − 2 − n -\cfrac{1}{2}-2^{-n} 212n),最小值为: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,2223]
        • 由于尾数大于等于1,因此单精度浮点数的乘法运算肯定不需要左规
      • 双精度浮点数:
        • 最高位是1位数符;
        • 中间11位是阶码,使用移码表示,偏移量是1023;舍弃全1阶码用作正无穷;舍弃全0阶码用作机器零(尾数全零)或者非规格化数(尾数非全零);表示范围为: [ − 1022 , 1023 ] [-1022,1023] [1022,1023]
        • 最后52位是纯小数尾数,使用原码表示,隐含最高位的规格化1;表示范围为: [ 1 , 2 − 2 − 52 ] [1,2-2^{-52}] [1,2252]
    • 浮点数的表示范围的计算:
      • 最大正数:尾数正数最大,阶码正数最大;
      • 最小正数:尾数正数最小,阶码负数最小;
      • 最大负数:尾数负数最大,阶码负数最小;
      • 最小负数:尾数负数最小,阶码正数最大;
    • 加减运算:
      • 对阶:小阶向大阶看齐;需要舍入,但是不会引起阶码溢出
      • 尾数求和:补码运算;
      • 规格化:左规(可能引起阶码下溢)/ 右规(可能需要舍入,可能引起阶码上溢);
      • 舍入:
        • 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 L4L0L2L1L3
    • 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->RPCout, MARin, read
      T1M(MAR)->MDR, (PC)+1->PCMemR, MARout, MDRinE, +1
      T3(MDR)->IRMDRout, IRin
    • 间址周期微操作序列/控制信号:

      时序微操作有效控制信号
      T0Ad(IR)->MAR, 1->RIRout, MARin, read
      T1M(MAR)->MDRMemR, MARout, MDRinE
      T3(MDR)->Ad(IR)MDRout, IRin
    • 中断周期微操作序列/控制信号:

      时序微操作有效控制信号
      T00地址或(SP-1)->MAR, 1->WSPout, MARin, write
      T1(PC)->MDRPCout, MDRinE
      T3(MDR)->M(MAR),向量地址->PCMDRoutE, MemW, PCin
    • 执行周期微操作序列/控制信号:

      • ADD X :

        时序微操作有效控制信号
        T0Ad(IR)->MAR, 1->RIRout, MARin, read
        T1M(MAR)->MDRMemR, MDRinE
        T2(MDR)->YMDRout, Yin
        T3(Y)+(AC)->ZALUadd, ACout
        T4(Z)->ACZout,ACin
      • LDA X :

        时序微操作有效控制信号
        T0Ad(IR)->MAR, 1->RIRout, MARin, read
        T1M(MAR)->MDRMemR, MDRinE
        T2(MDR)->ACMDRout, ACin
      • STA X :

        时序微操作有效控制信号
        T0Ad(IR)->MAR, 1->WIRout, MARin, write
        T1(AC)->MDRACout, MDRin
        T2(MDR)->M(MAR)MDRoutE, MemW
  • 简述微程序序列的微操作序列

    • 取值微程序微操作序列:

      时序微操作
      T0M0->CMAR, CM(CMAR)->CMDR (硬件自动)
      T1(PC)->MAR, 1->R
      T2Ad(CMDR)->CMAR, CM(CMAR)->CMDR
      T3M(MAR)->MDR, (PC)+1->PC
      T4Ad(CMDR)->CMAR, CM(CMAR)->CMDR
      T5(MDR)->IR
      T6OP(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+n1)tnt1
    • 加速比:完成同样一批任务,不使用流水线的时间和使用流水线的时间之比;
      • 设时钟周期为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+n1)tknt=k+n1knk
    • 效率:完成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+n1)tknt=kS1
  • 磁盘性能指标:

    • 磁盘容量:
      • 格式化容量:按照某种特定记录方式可以记录的信息总量;格式化后少于非格式化容量;
      • 非格式化容量:可以利用的磁化单元总数;
    • 记录密度
      • 道密度:磁盘径向上单位长度上的磁道数;
      • 位密度:磁道单位长度能记录的二进制代码位数;
      • 面密度:道密度 x 位密度;
    • 平均存取时间 = 寻道时间(磁头移动到目的磁道的时间)+ 旋转延迟时间(磁头定位到所在扇区的时间,一般取半圈的旋转时间)+ 传输时间(传输数据所花费的时间,若没给出传输速度,直接按照扇区的旋转时间计算);


  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值