计算机组成原理学习笔记(5.中央处理器 6.总线)

第五章 中央处理器

知识点回顾

现代计算机的结构

  • CPU主要有运算器和控制器组成

在这里插入图片描述
运算器的基本组成
在这里插入图片描述
控制器的基本组成
在这里插入图片描述
计算机的工作过程(经典图)

  • 控制单元根据当前要执行的指令,完成接下来要完成的小步骤

在这里插入图片描述
在这里插入图片描述
问题思考

  • 控制单元控制数据的流动,CU如何确定每一步如何动作

在这里插入图片描述

中央处理器–CPU的功能和基本结构

基于前面学的知识对CPU的功能和基本结构进行补充

CPU的功能

  • 操作控制:每个指令的功能需要多种微操作信号的组合实现
  • 时间控制:每个微操作有对应的控制信号,这些控制信号需要按照一定顺序逐一发出,确保微操作按顺序执行
  • 中断处理:CPU正常情况按顺序逐条执行指令,如果遇到突发情况,比如一次单击鼠标操作,这时,CPU暂停当前正在执行的程序,并记录执行到哪一条指令,转而执行中断处理程序,中断处理程序也是由一系列指令组成(这里就是处理鼠标单击的程序),执行完中断处理程序后,回到原来的程序,继续执行指令;如果没有中断处理的设计,意味着CPU只能处理完当前程序,才可以去执行另一个程度,中间点击鼠标操作也不会有任何反应

在这里插入图片描述
运算器和控制器的功能

  • 分析指令:操作码译码,值得就是前面所受的译码器读取出操作码,得出对应哪一种操作;读出操作数的有效地址,就是上一章中的根据形式地址的得到真正的操作数的存放地址
  • 执行指令:每条指令的执行需要若干个微操作,不同的微操作不同的控制信号控制,执行指令的过程,就是形成操作信号控制序列的过程,然后逐一的发出这些操作信号,控制后续的操作
  • 中断处理:每执行完一条指令,CPU都要检查是否有中断信号需要处理,这个阶段控制器需要对总线和输入输出设备的处理,做出该有的响应;除了外部操作会导致中断处理,内部异常也会导致中断处理,比如出除法操作中分母为0

在这里插入图片描述
运算器的基本结构

  • 为了保存将要参与运算的数据,我们准备了通用寄存器组,如AX,BX等等,图中的AH和AL其实是AX的高位部分和低位部分(x86架构CPU对通用寄存器的命名规则),跟R0 R1表示都一样
  • SP是堆栈寄存器,保存堆栈指针,指向栈顶,有些教材将SP归为通用寄存器,有的则单独算一个特殊的寄存器

在这里插入图片描述
运算器的基本结构–专用数据通路方式

  • 每个通用寄存器都应该有两组传送数据的线路(具体多少位看实际情况),一个传给A,一个传给B,
  • 专用数据通路方式:图中就是这种方式,这意味着随着寄存器的增多,电路设计越来越复杂,工艺成本增大
  • ALU同时连接多个寄存器,如何控制哪个寄存器输入信号
    • 使用多路选择器,根据控制信号选择一路输出
    • 使用三态门,每个三态门有三个接口,输入,输出,控制接口,只有控制接口接收信号,三态门的输入输出才能导通,图中我们给三态门命名R0out
  • 专用数据通路方式:基本不会数据冲突,但是结构复杂,硬件量大,不易实现

在这里插入图片描述
运算器的基本结构–CPU内部单总线方式

  • 所有寄存器都连接在内部总线上,可以输出信号到总线,也可以从内部总线接受信号
  • 寄存器输入信号到总线使用三态门控制(蓝色),数据由总线进入到寄存器也受一个输入控制信号的控制(绿色)
  • 结构加单,容易实现,但是数据传输存在冲突的现象,性能较低
  • ALU连接内部总线,用于接收数据,如果两个数据同时传给ALU的A和B,也会在总线上产生冲突
  • 可以给A的前面增加一个暂存寄存器,先把给A的数据通过总线放到暂存寄存器中,再让另一寄存器导通,把数据输出到B端,这样ALU可以同时从AB读取数据
  • 如果是从主存读取的数据也会放到暂存寄存器中,不能放到通用寄存器中,因为会会破坏原有内容
  • ALU计算的结果也会通总线保存到通用寄存器中,一开始ALU接收的输入可能是不稳定的,会导致计算结果错误,因此,在ALU的输出位置加上一个暂存寄存器,在接一个三态门,ALU计算的结果先保存暂存寄存器,等待ALU的输入信号稳定,正确的计算结果保存到了暂存寄存器,三态门才会打开,将结果通过内部总线保存到对应的通用寄存器
  • 为了实现一些功能,ALU输出端连接的暂存寄存器可能还会增加一些功能,增加移位功能,累加功能,也可单独准备一个寄存器,比如ACC用于存放一些中间结果
  • 还要有程序状态字寄存器PSW,上一章有介绍过(减法运算),CPU在进行微操作之前,除了判断当前指令的操作码是什么,还要了解PSW的状态信息,再决定下一步操作
  • 计数器用于控制乘除运算的操作步数
    在这里插入图片描述
    控制器的基本结构
  • 控制器用于取指令,分析指令,执行指令
  • 程序计数器:PC,指明下一条指令在主存中的地址,PC能自增,有些计算机也用加法实现
  • 指令寄存器:IR,保存当前正在执行的指令,其中操作码Ad地址码指明操作数的地址,需要输出到内部总线,操作码OP经过指令译码器进行译码(前面讲的),向控制器提供特定的操作信号,也就是给了微操作信号发生器
  • 微操作根据IR指令内容,PSW状态信息和时序系统,产生所需要的各种控制信号,一个指令会对应很多控制信号,需要有序的执行
  • 时序系统产生时序信号,给微操作发生一个节拍,微操作信号发生器按照节拍有序的有节奏的产生控制信号
  • 图中的绿色表示寄存器的输入信号,蓝色表示寄存器的输出信号,微操作信号发生器就控制着各个寄存器的输入和输出是否可以有效
  • MAR地址寄存器,接收总线的地址信息,交给地址总线,内存通过外部的地址总线的地址信息找到对应的存储单元,主存在通过外部的数据总线,把数据交给MDR数据寄存器
  • 图中的寄存器的输入输出控制,黄色加E结尾的,表示该信号控制与外部总线的输入输出
  • CPU内部总线指CPU内部用于控制各个部件之间进行数据传送的公共同路,外部总线指CPU与其他部件之间的数据传送的公共部分

在这里插入图片描述
CPU的基本结构

  • 有的寄存器是用户可见的,即用户可以通过汇编语言进行修改,图中用黄色标出
  • 哪些寄存器对用户透明,哪些不透明,也是选择题高频考点
  • 本章重点探讨CU

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
知识点小结
在这里插入图片描述

中央处理器–指令执行过程

指令周期

  • CPU从主存中取出并执行一条指令的全部时间
  • 指令周期可以分为取指周期和执行周期
  • 有些地方将分析指令的过程单独看做一个部分,这里将它划分在取指周期中,因为取指需要访存,接下来的分析指令速度会很快,所以将它划分在取指周期里
  • 执行指令过程,有些访存,有些不访存,因此不同的指令对应的执行周期可能相差很大
  • 这里的取值周期和执行周期就是两个机器周期,指令周期常常有若干个机器周期,又叫CPU周期
  • 一个机器周期又包含若干个时钟周期(节拍,T周期,CPU时钟周期)他是CPU操作的最基本单位
  • 以上名字很容易混淆,注意区分
  • 图中CLK一个方波就是一个节拍,CPU的主频指的就是一秒发出多少个节拍
  • 我们之前说过执行指令过程需要若干个微操作完成,一个微操作就对应一个节拍
  • 一个指令内如果所有的机器周期对应的节拍都相同,这就是定长的机器周期的CPU;实际上,一个指令周期内的机器周期各不相同,这就是不定长的机器周期的CPU
  • 不同的指令包含的机器周期数量可能不同,每个机器周期内的节拍数也可以不同

在这里插入图片描述
指令周期实际举例

  • 空指令只取指令,然后什么也不做,继续执行下一条指令
  • 乘法指令在执行指令期间,需要多次加法或移位
  • 间接寻址的指令,取指得到主存地址,还要根据主存中保存的地址信息,再进行访存得到操作数,这就是间址周期,
  • 带有终端指令的中断周期,正常每一条指令快要结束时都会留一段时间作为中断周期,除非CPU关中断
  • 因此不同的指令,执行过程是不同的

在这里插入图片描述
指令周期流程

  • 如何区分CPU处在哪一个阶段?使用触发器用来标识当前CPU处在哪个机器周期上
  • 四个阶段都可能访存,只是访存的目的不同

在这里插入图片描述
指令周期的数据流–取指周期

  • 主存可以提供两个接口,分别控制读和写,比如,R和W
  • 注意这里的PC+1带双引号
  • 取指周期完成时,主存中保存的指令经由数据总线,MDR,保存到IR中

在这里插入图片描述
指令周期的数据流–间址周期

  • 如果当前指令采用间接寻址的方式,还要有间址周期
  • 在间址周期之前,从主存读取到指令保存在MDR中,又传递到IR中,因此第一步中,既可以从IR中取出地址也可以从MDR中取出地址,再送入到MAR中,通过地址总线,传送给主存
  • CU通过控制总线命令主存执行读操作,读书的数据经由数据总线保存到MDR中,此时MDR中存放的是操作数的有效地址EA
  • 可以将MDR中的EA直接送给MAR中,也可以将EA拼接到IR的形式地址上,再执行IR的指令
  • 将MAR所指的主存中的数据经由数据总线送入到MDR,此时MDR保存的就是操作数

在这里插入图片描述
指令周期的数据流–执行周期

  • 不同的指令执行周期不同,本节先不做讨论

在这里插入图片描述
指令周期的数据流–中断周期

  • 中断:当前程序有多条指令,执行完一条指令后,如果检测到中断程序,暂停当前程序,转而去执行中断处理程序的指令,需要保存断点
  • 中断处理程序可能也包含很多条指令,执行完中断处理程序,再回到之前的程序,继续往下执行指令
  • 一般用堆栈保存断点,程序运行时,操作系统会给进程开辟主存空间保存当前进程的运行堆栈,堆栈里保存的就是指令地址,SP指向当前这个堆栈的栈顶元素
  • 实际的情况中,栈顶一般在低地址方向
  • 第一步,执行中断,SP-1,SP中的地址送给MAR,因为接下来需要将PC保存的指令地址写入堆栈,所以需要把新的堆栈顶的地址给MAR;SP-1并传给MAR是CU控制的,有的教材也会写成CU直接指向MAR
  • 第二步,CU通过控制总线,对主存发出写信号,此时MAR也已经指明了需要写的地址
  • 第三步,PC数据复制到MDR,通过数据总线,写入到主存
  • 以上操作,实现当前程序的指令的PC值压入了栈顶,完成保存断点
  • 第四步,CU将PC的值修改为中断处理程序的第一条指令的地址,这里的向量地址第六章再解释
  • 当中断处理程序执行结束,SP又会指向栈顶,栈顶元素就是上一个程序保存的指令地址,将这个元素出栈,传给PC,实现了对上一个程序的恢复

在这里插入图片描述
指令执行方案

  • 当我们需要执行多条指令时有哪些执行方案
  • 单指令周期:不同的指令执行不同,但是我们将他们统一成相同的周期,短周期的指令执行完也继续等待周期结束;可以使控制电路设计简单,会降低整个系统的运行速度,而且只能串行执行,即一条接着一条的执行
  • 多指令周期:还是各条指令串行执行,不同的指令设置不同的时钟周期数,减少无用的等待时间,需要更复杂的电路设计
  • 流水线方案:详细情况最后一章讲解,这里简单了解
    • 一条指令在不同的阶段使用部件不同,当第一条指令完成第一阶段,进入第二阶段,可以执行其他指令进入到第一阶段,以此类推
    • 这样尽量使每个部件都有处在不同阶段的指令使用,提高利用效率,使得指令之间并行执行

在这里插入图片描述
知识点小结
在这里插入图片描述

中央处理器–数据通路的功能 单总线结构

指令周期的数据流

  • 一条指令包含不同的阶段,每个阶段的数据流走向不相同
  • 总体来书,数据的流动有三类,寄存器之间,寄存器与主存之间,寄存器与ALU之间

在这里插入图片描述
数据通路

  • 对于各种寄存器来说,控制信号有两种,控制输入信号,控制输出信号,
  • 图中所有的控制信号in/out都是由微操作发生器发出的,微操作发生器发出不一样的控制信号,使得各个寄存器之间数据流动,为了不让线太乱,省略了in/out和微操作发生器之间的连线
  • 数据通路的基本结构
    • CPU内部单总线方式,CPU内部多总线方式,专用数据通路方式
    • 单总线意味着同一时刻只能两个部件之间独占总线,因此为了解决这个问题,有些CPU设计为内部多总线方式
    • 专用数据通路方式,就是只要两个寄存器之间有数据流动就在这两个部件之间建立专门的数据通路
    • 本小节介绍以CPU内部单总线的方式如何实现信息流动

在这里插入图片描述
CPU内部单总线方式

  • 内部总线和系统总线
  • 图中bus表示总线,解题时,回答数据的流动方向,还要标明哪些控制信号是有效的,也有些教材把一些数据流动的步骤合二为一,但我们也要注明哪些控制信号有效
  • 微操作信号发生器如何控制数据流动,归根到底为,输出控制信号,让需要输入信号的部件和需要输出信号的部件有效即可;
  • 所以解决问题的关键是,清楚的理解,一条指令的各个阶段,各个微操作的数据走向,知道了数据应该如何走,就知道该给出什么控制信号

寄存器之间的数据传送
在这里插入图片描述
主存与CPU之间的数据传送

  • 图中从MAR指向地址线的地方画的不全,应该有一根控制总线,CU通过控制总线给主存发出读信号,再给MAR发出一个out的控制信号,MAR左侧还应该有一个三态门作为MAR的输出控制;其他寄存器同理自行不全一下
  • 图中MDR既可以由外部的数据总线流入,也可以由内部总线流入数据,这其实由不同的控制信号控制,图中只给了一个内部的MDRin不严谨,应该再加一个MDRinE表示从外部总线流入数据的控制信号
  • 实际的考试中不会出现这样的失误
  • 答题时不要忘掉CU向主存发出的读写信号,这里时1→R

在这里插入图片描述
执行算术逻辑运算

  • 执行加法指令,其中一个操作数已经存放在ACC累加寄存器中了
  • 根据IR中的指令执行加法操作,需要根据指令中的操作数地址到主存进行取数
  • 因此需要将操作数地址传给MAR,这个操作数地址可以从IR传,也可以由MDR传,因为上一阶段的取指令,MDR中还保存着这个加法操作的指令,指令中就包含操作数地址
  • 从注主存中读取操作数保存到MDR,这时已经将旧的数据(加法指令)覆盖了
  • ALU无法同时从内部总线获取两个寄存器送来的输入信号,因此MDR数据先通过内部总线进入暂存寄存器Y,累加寄存器ACC保存的另一个操作通过内部总线传给ALU,这样ALU同时接收两个端口信号,实现加法
  • 需要注意的是暂存寄存器Y到ALU,ALU到暂存寄存器Z(或移位寄存器等等),使用的是专用数据通路,不占内部总线
  • 如果CPU内部是双总线或多总线,就可以不设置暂存寄存器,两个操作直接从两个总线传给ALU
  • 单总线可以降低成本,多总线可以提高数据传送效率,考试一般考单总线
  • 每个微操作至少消耗一个时钟周期,每个时钟周期CPU释放一组控制信号,比如一个寄存器输入和另一个寄存器输出

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
CPU内部单总线方式–例题

  • 主存的MemR表示读操作,MemW表示主存的写操作
  • 正确理解这个加法指令,最右侧的是源操作数R1,说明R1寄存器里保存的就是操作数本身,中间的是目的操作数,写成(R0)说明,R0寄存器中保存的是操作数的地址,需要进行一次间接寻址,
  • 这两个数的加法操作结果还要放回目的操作数的位置,即R0中保存的主存地址的位置
  • 按照指令周期中的各个阶段来分析答题
  • 答题时,如果某一个微操作的某些控制信号题中没有注明,可以不写
  • 关于间址周期的理解,不同的教材有不同的理解,有的理解为,把间接地址转为有效地址即可,有的理解为,需把间接地址所对应的时机的操作数读入CPU,题中的理解属于后者
  • 考试中不会有这种歧义
  • 这一部分出过两年答题,题型相对比较固定,熟悉套路就好

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
知识点小结

  • 计组答题高频考点,给指令,让分析微操作,根据微操作给出控制信号

在这里插入图片描述

中央处理器–数据通路 专用通路结构

专用数据通路方式

  • 在需要建立联系的两个部件之间建立专用的数据通路
  • 图中的C表示控制信号

在这里插入图片描述
专用数据通路方式–例题

  • 题干分析:状态寄存器就是PSW,也叫标志寄存器
  • 第一问:能自动+1的一定是PC,PC保存的是指令地址,因此PC直接指向的一定是MAR,能直接指向微操作发生器的一定是指令寄存器IR,能与主存相连的只有MAR和MDR,只有MDR是双向的
  • 第二问:本地的重点在于考察数据通路,题干也没给控制信号,因此答题时只写数据通路即可
  • 第三问:题中给的是运算器和主存之间的数据通路,实际上ALU不是寄存器没有存储功能,ALU的结果会送到ACC,问的其实是ACC与主存之间存取访问的数据同路;MDR拿到数据,没有直接的通路指向ACC,其实MDR的数据可以直接通过ALU,然后保存在ACC中,只是这个过程ALU不坐任何计算,或者理解为+0;这里的给出的答案,读取的时候假设读取地址已经提前放在MAR中了,同样保存时,也是假设保存地址已经存储在MAR中
  • 第456问连在一起理解,从主存地址X取数存在ACC,在从主存地址Y取数,与ACC执行加法,结果保存在ACC,在保存结果到主存地址Z中
  • 第四问:这么写,直接给出指令,表明默认指令已经在IR中了,
  • 第五问:ACC里的(x)与MDR保存的(y)同时输入到ALU完成加法运算,结果保存ACC,这里ALU没有接暂存寄存器,严格以上已经接一个,等输出稳定,才能把暂存寄存器的值输出
  • 第六问:上一步ACC保存的结果传入MDR,再保存到主存地址Z中

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

知识点小结

  • 建立专用数据通路虽然成本更高,但是多个数据通路可以独立执行,降低单总线方式带来的不变,提高执行效率
  • 寄存器采用了专用数据通路,意味着寄存器可能会有多个输入,如何选择哪个输入,可以采用多路选择器或者三态门,再通过CU控制哪个通路有效
  • 这一部分考题都是给出指令,让我们描述各个阶段的微操作序列,数据流向,已经对应的控制信号,出题相对固定
  • 不能只看,一定要动手自己做,才能理解巩固其中的技巧

在这里插入图片描述

硬布线控制器的设计

在这里插入图片描述
内容回顾

  • 每个指令周期有若干个机器周期,每个机器周期有若干个时钟周期,每个时钟周期可以执行一个或多个微命令
  • CU每发出一个微命令,就会有对应的微操作,当部件不冲突,通路不冲突是,有些微操作可以并行运行
  • 因此一个时钟周期内,可以并行多个微操作
  • 图中给出的是定长机器周期的策略,每个机器周期节拍数相同,因此有的机器周期即使执行微操作用不了那么多,也要凑足节拍数
  • 本节的以定长机器周期的策略,可以使电路设计更简单
  • 已知指令操作码,可以确定所需的机器周期,每个周期的微命令,我们再对每个机器周期的微命令进行合理的编排,分到对应的节拍上,这样根据节拍信号,机器状态信号(FE IND EX INT),可以确定当前节拍应该发出哪些微命令

在这里插入图片描述
硬布线控制器

  • CU控制单元采用硬布线的方式设计,称为硬布线控制器
  • 图中的不同颜色,就代表了控制单元获取各个信息的来源
  • 节拍发生器伸出m+1根线,对应了一个机器周期内m+1个节拍,CU可以根据哪根线发来的节拍,判断当前处在机器周期内的哪个节拍上,由于是定长机器周期,每个机器周期的节拍数相同
  • 通过图中的几个条件,设计出逻辑表达式,可以确保只有在特定的条件下CU才会产生特定的微操作信号,即相应的in/out控制信号,有了逻辑表达式,也就得到了对应的电路

在这里插入图片描述
微操作命令逻辑表达式

  • 考试不会考这么复杂的,这里举例是为了理解原理,这里的乘法和加法对应了逻辑表达式中的与和或
  • 这是一个取指的指令,从MAR中保存的主存地址中取出数据,保存到MDR中
  • 这个表达式由三部分组成,意思就是这个微操作命令可能在三种情况下被使用
  • 分别是,FE阶段的T1节拍,IND阶段的T1节拍,EX阶段的T1节拍
  • 括号内就是对应的具体指令,这个指令就是IR读出操作码经过译码器得出指令信号,即图中蓝色指令,就是由上一个图中的操作码译码器发出的,不同的指令对应不同的译码器输出线
  • 接下来讨论如何得到这样的逻辑表达式

在这里插入图片描述
硬布线控制器的设计

  • 考试不考具体设计,但是理解这个设计过程,有助于理解工作原理

在这里插入图片描述
步骤一:分析每个阶段的微操作序列

  • 这个过程需要把所有的指令都分析一遍,因此一个指令集的指令越多,这一阶段越长
  • 取指周期和间址周期,所有的指令其实都一样,而执行周期,每个指令各不相同,需要各个指令单独分析
  • 这些微操作,有些是可以并行运行的,这里的ID是指令译码器
  • 图中标红的是取数的微操作,可以看出,取数在这三个阶段都有可能会使用

在这里插入图片描述
步骤二:选择CPU的控制方式

  • 这里已经明确

步骤三:安排微操作时序

  • 安排微操作时序需要遵循以下原则
    • 原则一,比如只有PC将地址传给MAR,才能有后续从主存指定的地址中取数,并保存到MDR
    • 原则二,被控对象不同的微操作,说明他们在并行执行时是不会相互影响的
    • 原则三,结合实际举例
  • 图中给出的是取指周期对应的微命令,和按照安排原则进行编排后的效果

取指周期

  • 4和5虽然有依赖关系,4和5对应的部件都是CPU内部的部件,他们都在CPU内部实现,操作时间很短,也可以安排在同一个节拍内;数据可以快速的从MDR到IR,IR到ID
  • 3和4也有前后依赖关系,是否可以安排在一个节拍内?不可以,3操作从主存读数据,耗时较长,必须用一个节拍保证充足的时间读到数据,否则可能会来不及给4执行

在这里插入图片描述
在这里插入图片描述
间址周期
在这里插入图片描述
执行周期

  • 如果一个微操作的时间很短,在不违反顺序的情况,尽量安排在一个机器周期的末尾阶段执行,如CLA放在了T2上
  • 这里不用纠结每条指令的具体含义,但是要理解每个指令必须清楚的安排在具体的哪个节拍上执行
  • 图中列出非访存指令和访存指令的安排情况,便于对比理解
  • 需要注意的是,访存指令有可能导致后续进入到间址周期

在这里插入图片描述
步骤四:电路设计

  • 电路设计又分为三个步骤
  • 王道书5.1图有所有指令操作时间表
  • 写出微操作命令的最简表达式,简化有助于电路设计更简洁
  • 画出逻辑图

在这里插入图片描述
组合逻辑设计–列出操作时间表

  • 图中标1表示这个指令需要对应的微操作,比如,ADD在取指阶段的T0周期,需要PC→MAR和1→R这两个微操作
  • 状态条件的含义,描述间接址特征,因为取值结束时需要判断是否要进入到间址周期
  • 如果是间接寻址I,1→IDN,接下来进入到间接寻址阶段
  • 如果没有间接寻址特征位I,则1→EX,表示进入到执行阶段
  • 非访存指令不涉及访存,一定会直接进入到执行指令阶段,所以没有给1;访存指令和跳转指令是有可能进入到间址阶段的,所以给1;最后的进入到执行指令阶段1→EX,是表中所有指令都有可能进入到的,因此都给1

取指阶段
在这里插入图片描述
间址阶段

  • 同上,非访存指令不会进入到间址阶段,其他指令有可能进入到间址阶段
  • 状态条件,由于存在多级间接寻址,只有个当IND为0时,表名完成了最后一级的间接寻址,如果IND为1,还要进入下一个间址阶段;注意,刚进入到间址阶段的时候IND是为1的

在这里插入图片描述
执行阶段

  • 注意,这里是把每个节拍内所有可能用的微操作放在了一起,并不是这一个节拍要执行这么多的微操作
  • 指令太多,图中只列出了部分
  • 中断周期的指令不再列举

在这里插入图片描述
微操作信号综合

  • 逐一分析每条微操作都在哪些情况下被使用,比如这里的M(MAR)→MDR
  • 得出当前微操作命令的逻辑表达式,即这个微操作在什么周期,什么节拍,哪些指令的情况下被用到
  • 得到的逻辑表达式可进一步化简

在这里插入图片描述
画出逻辑图
在这里插入图片描述
硬布线控制器的设计小结

  • 硬布线控制器适合RISC精简指令集,因为RISC涉及的指令条数不会特别多
  • CISC涉及的指令很多,如果单纯的用硬布线设计,会非常困难
  • 硬布线控制器如果扩充指令,就要电路大改,很多设计的电路都要作废,扩充指令困哪
  • 硬件执行速度会很快,

在这里插入图片描述

微程序控制器的基本原理

微程序的考察频率比硬布线更高一些,甚至可能出大题

微程序控制器的设计思路

  • 把一个时序之内,可以同时进行的微操作用一个微指令来指明,比如微指令a会导致微操作1和2的执行
  • 由整个一系列微指令构成了一个微程序,一个微程序就对应一个指令
  • 不同的指令对应的微指令序列不同
  • 指令是程序执行步骤的描述,微指令是对指令执行步骤的描述
  • CPU出厂前,将所有指令的微程序存入控制器存储器中
  • 注意区分概念,微命令就是微操作,微指令中可能包含多个微命令
  • 微指令基本格式:操作控制和顺序控制
    • 操作控制指明这个微指令对应哪些微操作
    • 顺序控制指明下一条微指令的地址

在这里插入图片描述
微程序控制器的基本结构

  • 类比从主存中读取指令执行指令的过程,理解微指令的读取和执行过程
  • 控制存储器CM的引文缩写出现频率很高
  • CM采用ROM的好处,读取比RAM更快,非易失性,断电不丢失数据
  • 每个指令对应的微指令序列由CPU厂商设计并写入CM
  • CMAR又叫μPC,微地址寄存器,功能相当于PC和MAR的结合体,接收微地址形成部件送来的微指令的地址,为CM读取微指令做准备
  • CMAR中的地址码经过地址译码器转为存储单元的控制信号,因为CM根据这个控制信号读取对应的地址的微指令序列
  • 从CM中读出的微指令先存入CMDR微指令寄存器中,CMDR又叫μIR,CMDR位数与微指令字长相同
  • CU外面的IR得到机器指令后,微地址形成部件根据IR中的操作码确定所对应的微程序的起始地址,
  • 顺序逻辑用于控制微指令的执行顺序
  • CMDR收到微指令后,下地址传给顺序逻辑,明确下一个微指令的执行地址,操作控制部分发出控制信号,对应具体微操作

在这里插入图片描述
微程序控制器的工作原理

  • 所有指令的取指周期,间址周期,中断周期对应的微指令序列都是一样,可以共享,他们在CM中分别只用一个微程序保存
  • 执行指令阶段,每个指令不同,因此每个指令对应的微程序分别保存在CM中
  • 取值周期完成后,下地址指向3,3对应间址周期,有些指令其实不需要间址周期;
  • 顺序逻辑根据下地址,指令地址码的寻址特征,判断是否要跳过间址周期
  • 如果要跳过间址周期,进入执行周期,微地址形成部件可以将具体执行周期的微程序首地址传给顺序逻辑,相当于从微指令的执行位置从3跳到了某一执行周期的首地址,比如13
  • 执行周期结束,如果没有中断周期,又会进入到下一个指令的阶段,跳回0的取指周期首地址
  • 间址周期的最后,有转执行周期,含义是可以在顺序逻辑的控制下,直接转到对应的指令的执行周期的首地址,开启执行周期
  • 中断周期的转取指周期,就是中断周期结束,会跳回取指周期的起始地址

在这里插入图片描述
注意的点

  • N条机器指令对应微程序至少n+1,因为包含一个共用的取指周期微程序
  • 为什么没有算上间址周期和中断周期,早期的CPU可以不包含这两个周期,选择题高频考点
  • 有的选择题中,不认为取指周期的微程序和执行周期的微程序是两个微程序,而是认为他们在逻辑上是一个整体(也包括间址周期,中断周期),因此认为一条指令就对应一个微程序,这种说法也对
  • 这又跟绿色的文字产生了冲突,因为绿色认为取指周期对应单独的微程序,改造一下,CM中微程序段的个数至少n+1

在这里插入图片描述
知识点小结
在这里插入图片描述

微指令的设计

接上节

  • CMDR得到微指令后,如何根据操作控制发出对应的控制信号?
  • 一个微指令可能对应多个微命令(微操作),一个微命令对应一个输出线(这一根输出线再根据具体情况开分支,结合门电路去控制多个in/out)

在这里插入图片描述
微指令的格式

  • 相容性微命令:可以并行完成的微命令;互斥性微命令,不能并行完成的微命令
  • 格式分类:水平型微指令,垂直型微指令,混合型微指令
  • 水平型微指令
    • 一条微指令可以定义多个可并行微指令
    • 对应的操作控制码比较长,看起来胖胖的,因为需要有能力控制多个微操作的执行
    • 纵向看起来比较短
  • 垂直型微指令
    • 一条微指令只能定义一个微命令,微操作码字段规定具体功能
    • 微操作码长度可以略短一些,纵向看瘦瘦的,想要实现同样的功能就要纵向上有更多的微指令
  • 混合型微指令(大概了解就好)
    • 在垂直型的基础上增加一些不太复杂的并行操作,相当于前两种的综合
  • 考试常考水平型和垂直型

在这里插入图片描述
水平型微指令编码方式(高频考点)

  • 如何用微指令的操作控制位来表示控制信号,尽可能保证速度,尽可能缩短微指令字长
  • 直接编码方式:每一位代表一个微操作命令
    • 优点:简单,直观,执行速度快,操作并行性良好
    • 缺点:n个微命令就会要求操作控制达到n位,导致指令字长过长,最终导致控存CM的面基太大
    • 实际情况中,Intel的CPU采用微程序控制器,他的控存芯片占CPU很大的面积
  • 字段直接编码方式:将微指令的控制字段分成若干个段,每个段经过译码后发出控制信号
    • 分段遵循原则
  • 字段间接编码方式:一个字段经过译码得出信号,与其他字段译码得出的信号,再进行译码得出控制信号,了解就好
  • 考试主要考前两种

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
微指令的地址形成方式

  • 1.断定方式:微指令中的下地址字段直接指明了后继微指令的地址,比如0地址的微指令下地址为1
  • 2.根据操作码形成:机器指令到IR后,操作码经过微地址形成部件生成微指令地址
  • 3.增量计数法:类似于PC+1,CMAR地址也会+1
  • 4.分支转移:根据转移方式进行条件判断,转移成功后调到转移地址
  • 5.通过测试网络:即顺序逻辑或接收一些标志信息,结合当前指令的信息,决定下一条微指令地址
  • 图中标红的断定方式和增量计数器法常考
  • 6.有硬件产生微程序入口地址:取指周期和中断周期的微指令是所有微指令共用的,因此可以用专门用硬件记录

在这里插入图片描述
在这里插入图片描述
知识点小结
在这里插入图片描述

微程序控制单元的设计

微程序控制单元设计步骤

  • 1.分析每个阶段的微操作序列,与硬布线基本相同
    • 最后一步不同,硬布线方式IR得到指令后,将操作码传给ID操作码译码器;微程序方式IR得到指令后,将操作码传给微地址形成部件

在这里插入图片描述
2.写出对应机器指令的微操作命令即节拍安排

  • 以取指周期为例,对微操作序列进行编排,补充
  • 还需要考虑如何读出微指令,以及如何转入下一个机器周期
  • 这里我们简化流程,不考虑间址周期和中断周期,因此取指周期结束直接进入到执行周期
  • 取指周期内,除了最后一个微指令,其他微指令执行完,都要再安排一个节拍读取下一个微指令地址(第一个微指令地址由硬件提供了)
  • 取指周期最后一个微指令结束,还要再有一个节拍用于微地址形成部件将执行周期的第一个微指令地址传给CMAR
  • 王道书里,将IR到微地址形成部件,微地址形成部件到CMAR都归到了最后一个节拍,也对
  • 显然微程序控制器速度比硬布线控制器速度更慢,因为节拍更多
    在这里插入图片描述
    在这里插入图片描述
    设计步骤
  • 考试为了简化,通常取指周期结束,直接进入执行周期
  • 取指周期的最后一个节拍指明了执行周期的第一条微指令地址
  • 执行周期除了最后一个微指令,其余微指令执行结束也要有一个节拍负责将下一条微指令传入MAR
  • 执行周期最后一个微指令结束,需要一个节拍指明取指周期的第一条指令首地址,进入下一个指令周期

在这里插入图片描述
3.确定微指令格式

  • 上小节已经详细探讨
  • 何种编码方式:直接,字段直接,字段间接
  • 确定控制字段位数
  • 根据CM中微指令总数,确定下地址位数
  • 确定微指令字长

4.编写微指令码点

  • 就是根据已经选择好的编码方式,给每个微指令进行编码,每一个微指令对应一个控制字段的编码,对应相应的控制信号

在这里插入图片描述
微程序设计分类

  • 静态微程序设计和动态微程序设计:动态的有利于优化,使用可擦除的ROM,Intel用的就是动态的
  • 毫微程序设计:用来解释微程序的,了解就好

在这里插入图片描述
硬布线与微程序的比较
在这里插入图片描述
知识点小结

  • 红框是考试重点

在这里插入图片描述

中央处理器–指令流水线基本概念性能指标

指令流水的定义

  • 这里的举例都不是绝对的,是为了辅助理解流线的含义
  • 传统的冯诺依曼机就是采用顺序执行方式,又称串行执行方式
  • 一次重叠,二次重叠
  • 这里给出的情况只是最理想情况下,各个阶段时间相同,各阶段硬件使用不冲突,实际上不可能这么完美
  • 理论上,指令分三阶段的话,同一时间最多会有三条指令在执行;理想条件下,指令分几个阶段,同一时间就可以同时执行几条指令;考试场考分五个阶段的

在这里插入图片描述
在这里插入图片描述
流水线的表示方法

  • 指令执行过程图,横向看,表示一条指令,纵向看表示多条指令并行
  • 时空图,纵向斜着看,表示一条指令,纵向看表示多条指令并行

在这里插入图片描述
流水线的性能指标:吞吐率,加速比,效率

吞吐率

  • 对于指令流水线,大多数情况下,吞吐率指的就是单位时间内完成的指令条数
  • 吞吐率,这里δ取了一个时钟周期,其实也是理想情况,一个阶段一个节拍
  • 装入时间,排空时间

在这里插入图片描述
加速比
在这里插入图片描述
效率

  • 图中红框内面积比整体蓝框面积

在这里插入图片描述
知识点小结
在这里插入图片描述

中央处理器–指令流水线影响因素分类

上小节给出的理论都是基于理想情况下的结构,实际情况无法做到这么完美,有很多因素影响指令流水线

机器周期的设置

  • 这里以经典的五段式指令流水线为例,由MIPS架构提出(第一个精简指令集系统),考试最常考的模式
  • IF取指令,ID指令译码,EX指令执行,M访存,WB写回
  • 在MIPS架构下,所有指令都安排五段式结构,即使某些阶段某些指令无需执行,也要经历这些阶段
  • 为了方便设计,这里设定每个阶段耗时一样,以最长耗时为准100ns
  • 由于各个阶段的实际耗时不一样,执行阶段快的需要人为的等待至标准时间,刚好赶在规定时间的时候把数据流出
  • 需要再各个阶段的中间添加缓冲寄存器,也叫锁存器,用于上一阶段准备好下一阶段需要用的数据

在这里插入图片描述
各阶段分析

  • 重点:这个图王道书里没有,但是非常重要,考试有很多大题一定要理解这个过程
  • IF阶段:取指令
    • 根据PC中的地址,原本应该到主存中取指令,然而大多数时候我们可以直接从Instruction Cache中找到指令,不用访存
  • M阶段:访问缓存
    • 我们需要访问指令具体操作的某些数据,大多情况下可以直接从Cache中直接命中这个数据,因此称为Data Cache
    • 因此存储指令和数据用的是不同的Cache,他们可以并行运行的
    • 如果没有命中Cache怎么办?指令流水线会出现断流,必须访存,这种情况以后后面再讨论
  • ID阶段:指令译码
    • 完成指令译码,并且从通用寄存器Registers中取出操作数,再存放到锁存器里(这里是A和B)
    • 我们之前将操作数来自主存,但是在RISC下,操作数不可能来自主存,一定是先放到通用寄存器内,才能取数
    • Imm锁存器用于存储立即数,有些指令使用的立即寻址,地址码保存的就是立即数
  • EX阶段:执行指令
    • ALU从上一步的锁存器中取数,进行运算,输出结果到锁存器(ALU紧挨着右侧的)
  • M阶段:访存阶段
    • 来自上一部锁存器保存的ALU运算结果,可能需要写回主存,也可能不需要写主存,而是写到下一步的一个寄存器中(Data Cache正下方的没名的寄存器),并通过最后一步WB写回到通用寄存器Registers
  • WB阶段:写回
    • 运算结果有可能需要写回到通用寄存器Registers中,用于下一步的计算使用
  • 分析,可以看出,通用寄存器Registers有可能被读,也有可能被写,因此可能会产生一些问题

在这里插入图片描述
影响流水线的因素

  • 1.结构相关(资源冲突),就是之前提到的互斥问题
  • 2.数据相关(数据冲突),就是之前提到的同步问题
  • 3.控制相关(控制冲突)

在这里插入图片描述
结构相关(资源冲突)

  • 多条指令同一时间,争夺同一资源
  • 结合五段式指令流水线理解,图中的Mem是主存,Reg是通用寄存器,IF取值如果不用寄存器的话就要访问主存
  • 颜色相同的部分就是同一时间多条指令争夺同一资源
    • 图1,Load指令要对Mem访问保存数据,对Reg进行写回数据;Instr3要对Mem取指,从Reg取操作数
  • 解决办法:后一个相关指令暂停一个周期;资源重复配置,数据和指令分开存储,即第二个图的蓝框部分

在这里插入图片描述
在这里插入图片描述
数据相关(数据冲突)

  • 数据相关是最常考的,小题大题都有
  • 图1,对Reg的使用产生了冲突,因为Reg保存着r1
    • add要对r2 r3求和存到r1
    • sub要对r1 r3减法存到r4
    • and要对r1 r7求与存到r6
    • or要对r1 r9求或存到r8
    • xor不会和add产生冲突,因为r1已经写回Reg了
  • 正常逻辑下,要想使用r1,应该等上一步的结果写回到r1之后,才能进行下一步的取数操作,这样对于现有的完美的指令流水线就出现了问题

在这里插入图片描述
解决办法1:等待

  • 图1,用硬件实现几个气泡bubble,执行空拍子,直到相关指令不冲突,再执行,具体实现不用深究
  • 图2,软件实现空指令NOP,编译器发现有冲突,为我们插入几条空指令,空指令也会经历完整的五段式,再启动相关指令,具体插几条由机器语言程序员或汇编语言程序员决定
    在这里插入图片描述
    在这里插入图片描述
    解决办法2:数据旁路技术
  • 实际上add中r2 r3的结果在ALU出来就了,可以直接送回ALU,供sub指令使用
  • 其他指令同理

在这里插入图片描述
解决办法3:编译优化

  • 如果后续有些指令不涉及r1这样的数据冲突,可以提前到sub前面执行,执行完已经过了冲突周期,再执行sub指令
  • 与空操作是一样的效果,但是这样操作没有浪费时间,执行效率更高

在这里插入图片描述
控制相关(控制冲突)

  • 如图中,第一条是条件转移指令,如果Mem得出的结果不满足转移条件,正常顺序执行,如果满足条件,会直接跳转1000的位置
  • 发生跳转以后,红框的指令已经开始执行了,并产生断流
  • 解决办法1:转移指令分支预测
    • 简单预测
    • 动态预测,
  • 解决办法2:预取指令
    • 提前取出转移成功和不成功的指令,需要增加硬件,比如指令寄存器
  • 解决办法3
    • 加法器中进位加法器是一个一个传递的,我们可以改造电路提前产生进位信息
    • 这里的加快和提前形成条件码也是同理
  • 解决办法4:提高转移方向猜准率。其实就是对第一个方法的优化,提高预测的成功率

在这里插入图片描述
影响流水线的因素小结
在这里插入图片描述
流水线的分类

  • 部件功能级,处理机级,处理机间级流水线
    • 部件功能级流水:对复杂算术逻辑运算在分阶段,榨干部件的性能
    • 处理机级流水:就是我们学的指令流水线
    • 处理机间流水:每个CPU处理专门任务,多个处理机形成一个组合,处理多个流水
  • 单功能流水线和多功能流水线
    • 单功能流水线:比如某一条流水线就是专门处理浮点加法操作
    • 多功能流水线:可以实现多功能的流水线,指令流水线就是多功能流水线
  • 动态流水线和静态流水线
    • 静态流水线:同一时间,一个流水线的部件只能处理同一种功能,比如浮点加法
    • 动态流水线:同一时间,一个流水线的不同部件可能在处理不同种类的运算,比如浮点加法,定点数假发
  • 线性流水线和非线性流水线
    • 线性流水线:从输入到输出,每个功能只允许经过一次,不存在反馈电路
    • 非线性流水线:存在反馈电路,比如前面为了解决数据冲突,ALU的输出结果从新进入到输入端;适合现行递归运算的含义,比如ALU只能加法,如果需要乘法运算,就要在执行阶段数次流过流水线

在这里插入图片描述
流水线的多发技术

超标量技术

  • 一个周期内同时发出多条指令
  • 需要确保同时发出的这几条指令不会冲突,因此需要配置多个功能部件,如寄存器,ALU等
  • 经过编译后,得到了最终机器指令序列,不能再调整指令顺序(有些CPU可能支持乱序发射,即可以调整顺序)
  • 需要编译优化技术,把可以并行执行的指令搭配起来
  • 相当于空间复用技术

在这里插入图片描述
超流水技术

  • 一个时钟周期再分段,每个部件在一个周期内使用多次
  • 这里所谓的一个时钟周期可以理解为机器周期,可以对其再细分
  • 指令顺序有编译器决定,也不能调整执行顺序,除非优化编译技术
  • 相当于时分复用技术

在这里插入图片描述
超长指令字

  • 多条指令如果在执行阶段用的部件不一样,可以整合成一条,其他阶段都统一执行的,到了EX阶段,由多个功能部件同时执行
  • 具有多个操作码,组成超长指令字
  • 也需要多个独立的功能部件,确保可以同时执行

在这里插入图片描述
知识点小结

  • 红框重点,影响因素尤其是数据相关是高频考点,熟悉指令流程图和时空图画法

在这里插入图片描述

五段式指令流水线

本节是补充考点
在这里插入图片描述

重点介绍考试中常见的五类指令(基于五段式流水线)

  • 运算类指令,LOAD指令,STORE指令,条件转移指令,无条件转移指令

运算类指令

  • Rs是源操作数,Rd是目的操作数,箭头所指就是结果保存的位置,一般是Rd,#加数字表示立即数
  • 包括两个寄存器相加,寄存器与立即数相加,算数左移指令
  • IF阶段:从指令Cache取指令,存放到IF阶段的锁存器
  • ID阶段:对指令操作码译码;将操作数存放到ID阶段的锁存器,有三个可供选择,Imm用于存放立即数
  • EX阶段:ALU根据上一阶段给的操作数计算,将结果保存到锁存器
  • M阶段:之前将会保存主存。但是RISC中,运算类指令取操作数一定是来自于寄存器(或立即数),保存也是放到寄存器,不可以随意访问主存;因此这一阶段是空段,数据由上一阶段的锁存器,保存到M阶段锁存器;时间正常消耗
  • WB阶段:M阶段锁存器的数据,进入到这里,被写回到通用寄存器Registers

在这里插入图片描述
LOAD指令

  • LOAD指令用于从内存中取数,放到寄存器中
  • 在Rs地址的基础上,加上一个偏移量,在基于新的地址值,到主存中取出数据,存放到Rd中
    • 这么做的用途,访问一个进程的变量,通常采用基址寻址,Rs指明了进程的起始地址,加上偏移量就是要找的数据
    • 也有的简写为(mem)→Rd
  • IF阶段:根据PC指示,从指令Cache中取指令到IF段的锁存器
  • ID阶段:指令译码,还要将LOAD中指明的Rs(基址寄存器的值)放到锁存器A,把偏移量,这里是立即数996放到Imm里
  • EX阶段:ALU完成基址地址+偏移量,结果输出到锁存器,得到有效地址EA
  • M阶段:根据EA从DataCache数据缓存中,得到数据,放到DataCache右侧的锁存器中
  • WB阶段:将上一阶段的锁存器里的数据,写回到寄存器中Registers中
  • 注意点:EX阶段也要计算,因为数据的存放地址有偏移量,M阶段,正常可以访主存,但是有较大概率会被DataCache命中,没命中才会访问主存,当然如果访问主存,一个时钟周期也是不够的
  • RISC处理器,只有取数LOAD和存数STORE指令才能访问主存,可以使指令集设计更加简单

在这里插入图片描述
STORE指令

  • 保存数据到主存中
  • 图中表示,将Rs中的操作数保存到996(Rd)中,996(Rd)表示Rd保存的地址加上偏移量996才是真正要保存数据的主存地址
  • 也可以写成Rs→(mem)
  • IF阶段:根据PC从指令Cache取指令,保存到IF段的锁存器
  • ID阶段:指令译码器,还要将基地址寄存器的地址保存到锁存器A,偏移量存放到Imm;此时要操作的数已经保存在Resgister中,将操作数保存到锁存器B中,
  • EX阶段:基地址+偏移量求出EA,要保存的操作数从锁存器B转移到锁存器store中
  • M阶段:根据有效地址EA,将数据写入主存,当然,大概率会命中,因此图中是写入DataCache
  • WB阶段:空段,已经保存主存或DataCache,无需写回

在这里插入图片描述
条件转移指令

  • 转移类指令都会采用相对寻址,即相对于PC的偏移量来寻址
  • 第一条指令:beq表示branch equal,两个寄存器里的数值相等,才会转移,转移多少。根据给出的偏移量,PC,指令字长算出
  • 当前PC指向的是当前指令的起始地址,偏移是相对于下一条指令的偏移,因此偏移量指的是从下一条指令的起始位置开始偏移
  • 如果如果条件满足,则按照偏移来跳转,如果不满足,则PC+1,通常PC+1会在取指令结束后自动完成
  • 第二条指令:bne表示branch not equal,如果两个寄存器的数值不相等,则满足条件,否不满足,跳转和beq类似
  • IF阶段:从指令Cache取指令,保存到当前阶段的锁存器,
  • ID阶段:从Reg中取出需要的两个操作数,分别存到锁存器A和B,偏移量存放Imm
  • EX阶段:两个操作数进行运算,比较结果存放到当前阶段锁存器
  • M阶段:跳转指令无需访存;但是这里要修改PC的值并写回PC,图中没画全
  • WB阶段:空段,这里一般只进行Reg的写回
  • 很多教材将写回PC的功能段称为WrPC段,耗时比M阶段端,可以安排在M阶段时间内完成,所以效果上和图中是一样的

在这里插入图片描述
无条件转移指令

  • 采用相对寻址,无需条件判断,直接相对于PC进行偏移,PC是当前的指令位置,偏移量是相对于下一条指令的偏移,因此公式里有一个+指令字长
  • IF阶段:同上
  • ID阶段:同上
  • EX阶段:无需判断,拿到Imm里的偏移量直接写回PC,因此WrPC段发生在EX阶段,图中没有画全
  • M阶段:空段
  • WB阶段:空段
  • 尽早修改PC值,可以尽早避免控制冲突,因为转移类指令往往跳跃一段距离,因此面对流水线指令,原本按顺序将要执行的指令就会和跳转后的指令形成控制冲突,因此尽早修改PC可以尽量避,也有个别CPU放在WB阶段写回

在这里插入图片描述
真题讲解

  • 只分析其中一部分
  • 分析各条指令的作用,绿色文字
  • I3指令中ID阶段被阻塞的原因
    • I3的ID阶段取数,必须等到I1 I2指令进行到WB,即完成写回操作,I3的ID才能进行
  • I4指令的IF阶段被阻塞的原因
    • I3的IF段锁存器得到指令地址后,由于阻塞一直拖着没有进入ID阶段
    • 如果I4的IF早于I3的ID执行,就会提前修改IF阶段的锁存器,因此必须等到I3进入到ID阶段,释放锁存器

在这里插入图片描述
知识点小结

  • 本节书上没有,但是考察大题的几率非常高,并且大题的难度较大

第六章 总线

本章以选择题为主,不难,逻辑链路清晰不深,记忆偏多

总线概述

总线的物理实现

  • 说是一根,其实可能包含多跟
  • 同一时刻,只能一个部件发数据,多个可以接收

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
本章概览
在这里插入图片描述
总线的定义
在这里插入图片描述
总线的特性

  • 传输方向,比如CPU可以用地址总线传给主存或硬盘,而不能有主存或硬盘传给CPU,数据总线CPU则可以主存互相传输

在这里插入图片描述
总线的分类
在这里插入图片描述
串行总线与并行总线

  • 串行每次只能传一位,并行每次可以传多位
  • CPU与主存之间的数据总线就是并行总线,USB规范就是串行总线
  • 串行总线抗干扰能力强,适合长距离传输,发送频率可以做的很高
  • 并行总线信号线多,信息之间可能会干扰,造成电平跳变,因此工作频率不能过高
  • 因此并行总线不一定就比串行总线快

在这里插入图片描述
按总线的功能分类

  • 片内总线
  • 系统总线又分地址总线,数据总线,控制总线
    • 数据总线,传递方向为双向,总线个数需要参考机器字长,存储字长;比如,总线个数是CPU机器字长的一般,则CPU需要两次从数据总线读取或存储数据,同理总线个数与存储字长的关系
    • 地址总线,总线个数与主存地址空间和设备数量有关,一个输入或输出设备需要一个地址,信息传递传递单向,由CPU发送到总线
    • 控制总线,有多个控制线,每个控制线控制一个信号,对于单根线是单向的,有CPU发出的,也有部件反馈给CPU的,对于控制总线整体来说,控制总线是双向的
  • 区分数据通路与数据总线,数据通路是逻辑上的描述,数据总线是承载的物理媒介
  • 通信总线,计算机系统之间的,网线就是一种通信总线
  • 本章重点探讨系统总线

在这里插入图片描述
在这里插入图片描述
系统总线的结构

  • 单总线,双总线,三总线
  • 这里的总线指包含了地址,数据,控制的总线的统称

单总线结构

  • 可能会导致多个部件争用总线,因此带宽低
  • 不支持并发操作表示的其实是不能并行,即同一时刻只能一组部件传递信息,
  • 传输速度不匹配,CPU和主存比较快,外部设备传输比较慢,容易导致快速的设备性能浪费

在这里插入图片描述
双总线结构

  • 通道可以理解为阉割版的CPU,专门用来管理IO设备
  • 通道和主存总线设计的快一些,I/O总线设计的慢一些
  • 缓和快速设备和慢速设备之间的矛盾
  • 运行通道也需要响应的代码,也保存在主存里
  • 支持突发,CPU指明主存的一个地址信息,可以对主存的多个连续地址进行访问,比如一个指令序列

在这里插入图片描述
三总线结构

  • 主存总线,I/O总线,DMA总线
  • CPU通过主存总线,主存,DMA总线与高速外设传递数据,比如磁盘机
  • CPU通过I/O总线与慢速设备传递数据,打印机,键盘等
  • 由于慢速的I/O设备可以直接与CPU连接,可以更快速的响应CPU发出的命令,这一点比双总线更优秀,提高系统吞吐量
  • 这三个总线同一时刻,只能有一个在工作,因此系统效率低

在这里插入图片描述
四总线结构

  • CPU总线速度最快,其次系统总线和高速总线,
  • 不同总线通过桥接器,缓冲数据,转换,控制,
  • 控制功能用于总线仲裁
  • 北桥芯片和南桥芯片就是桥接器
  • 现代计算机常见的使用结构,考试基本不会考四总线结构

在这里插入图片描述
知识点小结
在这里插入图片描述

总线的性能指标

在这里插入图片描述
总线的性能指标

  • 认真理解,区分概念的含义
  • 总线周期和总线工作频率为倒数关系,总线时钟周期和总线的时钟频率倒数关系,图中用红蓝区分开
  • 总线周期和总线时钟周期可能是,一对一,一对多,多对一(比较魔幻)
  • 一个时钟周期对多个总线周期的情况,一个时钟周期有上升沿和下降沿,分别完成了一次总线操作
  • 早期总线时钟周期就是机器的时钟周期,现代计算机,总线时钟周期也有可能由桥接器提供(四总线结构),因为其他一些设备的频率跟不上CPU,所以由桥接器在高速总线里控制总线发送频率更慢的时钟信号

在这里插入图片描述
总线的性能指标

  • 总线宽度指数据总线的根数
  • 总线带宽可以用字节表示也可以用比特表示
  • 总线一个工作周期传送一次数据
  • 总线带宽是总线能达到的最高传输速率,实际上传输的数据包含了校验等冗余信息,而有效数据的传输率是实际传输的数据量除以耗时

在这里插入图片描述
例题
在这里插入图片描述
因此总线的带宽和工作频率,总线宽度都有关系,串行总线的宽度小,但是频率可以更高,所以串行总线的带宽可能高于并行总线
在这里插入图片描述
总线的性能指标

  • 总线复用,通常指地址总线和数据总线的复用,需要分时复用,会导致速度下降
  • 总线信号数,三种总线数的总和

在这里插入图片描述
知识点小结

  • 概念容易混淆,因此用不同的颜色区分开

在这里插入图片描述

总线仲裁

概述

  • 一个时间段只能提供给一组设备使用,当多组设备需要使用,需要仲裁的机制来决定谁来使用

总线仲裁

  • 集中仲裁相当于一个老大统一决定,分布式仲裁指下面的人自己商量
  • 考试常考集中仲裁
  • 总线仲裁由硬件实现

在这里插入图片描述
集中仲裁

  • 总线控制器来判断优先级,一般集成在CPU内,也可以在桥接器中,总线时钟周期也是总线控制器发出的
  • 包含链式查询,计数器查询,独立请求三种方式

在这里插入图片描述
链式查询方式

  • BG BR BS这三个线属于总线控制线
  • BR为蓝线,由设备发出表示要使用总线;BG为黄线,由总线发出表示允许使用;BS为红线,由被允许使用的设备发出表示已获得总线控制权
  • 1.某一设备要使用总线,用BR蓝线发送信号到总线控制器,这里设备1和n都想使用
  • 2.总线控制器通过BG黄线,沿着设备顺序发送允许的信号
  • 3.如果经过设备不想使用,则继续传递,知道遇到想要使用的设备停下,这里是设备1
  • 4.被允许使用的设备通过BS红线向总线控制发送信号表示总线忙
  • 5.总线收到红线的信号,撤销黄线信号
  • 6.此时,获得控制权的主设备开始使用总线进行数据交互
  • 7.直到设备1使用完总线,撤销红线信号,总线控制器发现仍有蓝线请求信号,继续发送黄线允许使用的信号
  • 8.直到允许信号传递到n号设备,开始使用总线,后续同上
  • 优先级固定,与总线控制器越近,优先级越高
  • 缺点,如果某一设备损坏,后面的设备会一直得不到总线允许的信号,对硬件电路敏感;优先级低的设备可能一直得不到使用

在这里插入图片描述
计数器查询方式

  • 包括BS红线总线忙线,BR蓝线总线请求线,设备地址线,没有BG总线响应线,总线控制器增加计数器
  • 设备地址是一组线,可以表示编码0-n这些设备
  • 1.设备1和设备n都用蓝线请求控制器,控制器收到请求信号,但不知道是哪个设备的
  • 2.控制器从0开始计数,发给黄线地址线0,0号设备能接到地址信号,但是0不需要用总线,其他设备发现编号不是自己的,不回应
  • 3.计数器为1,1号设备接收,且自己需要用总线,通过红线发给控制器
  • 4.控制器接到BS红线信号,不再计数,设备1开始使用总线交换数据
  • 5.设备1不需要使用总线了,停止红线信号,控制器仍然检测到蓝线请求信号,计数器继续工作,寻找下一个需要使用的设备
    • 计数器计数方式可以每次都从0开始,优先级高的设备就会一直优先级高;也可以从上一次终点开始,到最大值再从头开始,相当每个设备优先级一样;也可以用程序设置更复杂的计数方式
  • 对电路的故障没有链式敏感,某一设备损坏,不会影响其他设备;
  • 控制线数量的计算,+2指的就是BR BS

在这里插入图片描述
独立请求方式

  • 每个部件都和控制器有一个BR请求线蓝线,和一个BG请求允许线黄线,一个公共的BS总线忙线,红线控制器里有排队器
  • 排队器决定优先把总线使用权分配给谁
  • 哪个设备收到黄线允许,这个设备就会向红线发送总线忙信号,接着控制器撤销黄线信号
  • 当设备使用完总线,撤销红线信号,控制器检测红线信号结束,通过排队器将总线使用权分配下一个设备
  • 响应速度快,总线直接指向需要使用的设备,排队器可硬件实现可软件实现
  • 控制线数量多,2n+1条,+1就是共用的BS红线,控制逻辑更复杂

在这里插入图片描述
集中仲裁方式小结
在这里插入图片描述
分布式仲裁方式

  • 不需要中央仲裁器,每个潜在主模块都有自己的仲裁器和仲裁号,多个仲裁器竞争使用总线
  • 需要使用的设备将自己的仲裁号放在共享的仲裁总线上
  • 仲裁号优先级高的保留在仲裁总线上

在这里插入图片描述
知识点小结
在这里插入图片描述

总线操作和定时

总线周期的四个阶段

  • 上一节的总线仲裁属于申请分配阶段
  • 四种总线定时方式,掌握前两种(王道书里),选择题常考,后两种了解即可

在这里插入图片描述
同步定时方式–读命令

  • 适用于总线长度短,因为长度短意味着信号稳定,电平跳变概率低,

在这里插入图片描述
在这里插入图片描述
异步定时方式

  • 请求和应答信号的撤销是否互锁,进一步把异步方式分三种类型

在这里插入图片描述
在这里插入图片描述
半同步通信

  • 同步和异步的结合
  • 主设备按节奏发送地址和命令,从设备如果跟不上就发送等待信号,
  • 直到从设备准备好数据,取消等待信号,发送数据到主设备,主设备收到数据,取消命令信号,取消地址信号
  • 除了等待阶段的时钟周期,其他阶段是固定节拍的

在这里插入图片描述
分离式通信

  • 充分利用从设备准备数据的时间,将使用权分给其他设备使用,提高效率
  • 要求分离设备也具备申请总线使用权

在这里插入图片描述
知识点小结
在这里插入图片描述

总线标准

在这里插入图片描述
总线标准的基本概念

  • 系统总线最快,其次局部总线,再次设备总线/通信总线
  • 考试曾经出题,给名字判断是系统总线,局部总线,设备总线/通信总线
  • 举例,打印机既可以认为是设备,也可以认为是另一台机器,因此称为设备总线/通信总线

在这里插入图片描述
各种总线简介

  • 学习要点,无需过多深究每个总线标准,但是要根据缩写知道这是什么什么总线(系统,局部,设备/通信)
  • 英文全称有助于理解,下面的问题了解可,速度之类的无需即

在这里插入图片描述
在这里插入图片描述
PCI曾经作为系统总线使用,因此有些教材也称他是系统总线
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
速度对比

  • 红框是常考点,当然速度不用记

在这里插入图片描述
知识点小结
在这里插入图片描述
补充知识点

  • 虽说是串行,但是可以用多个总线分别传送串行的数据包,看起来像并行,但和真正的并行是有区别的
  • 串行一根线就能传送完整数据,并行需要多根线才能传送完整数据

在这里插入图片描述
实例
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值