计组:八、CPU的结构和功能

  • 主要内容:

    • 先分析CPU的功能,再由功能,去讲解对应的结构。
    • 机器 / CPU完成一条指令的详细过程。
    • 流水技术。
    • 中断技术的原理。

8.1、CPU的结构

8.1.1、CPU的功能

  • CPU内部包括运算器控制器,这两部分必不可少(可以把寄存器组也算在CPU内,主存不算cpu内)。接下来主要介绍控制器的作用。

  • 控制器的功能/作用:负责协调、控制计算机各部件执行程序的指令序列;对于冯 . 诺 结构的计算机:code进入存储器后,由控制器来取指令、执行指令;控制器的基本功能:取指令,分析指令、执行指令。

    • 1、取指令
      控制器自动地从存储器取指令 ------> a、要求控制器能自动形成指令的地址;b、还能发出取指令的命令,将指令取回到控制器(分析)。
      第一条指令的地址可以人为指定,也可以由系统制定。
    • 2、分析指令
      a、分析操作码部分 —> 该条指令完成什么操作,发出对应的操作命令;
      b、分析形式地址部分 —> 参与这次操作的操作数地址,得到操作数的EA。
    • 3、执行命
      依据上一步得到的操作命令和操作数有效地址,形成操作控制信号序列(注意是序列,包含一定的先后顺序),作用于运算器、存储器、IO设备、寄存器,完成每一条指令。
    • 4、控制程序的输入和运算结果的输出(如主机与IO设备交换信息)。
    • 5、总线的管理。
    • 6、处理运行过程中出现的异常(如掉电)或特殊请求(如IO设备的请求),就是处理中断。
  • 控制器的功能 ------> 结构

    • 指令控制:控制程序的顺序执行 ----------------------> PC、IR
    • 操作控制:产生每条指令所需的控制命令 ----------> CU
    • 时间控制:各种操作都有时间限制
    • 数据加工:算术运算 & 逻辑运算 ---------------------> ALU、R
    • 处理中断:-------------------------------------------------> 中断系统

8.1.2、CPU结构框图

  • 取指令:需要一个寄存器来存放当前指令的地址;
  • 分析指令:需要一个寄存器来存放当前指令IR,需要一个对当前指令的操作码部分进行译码的部件( CU );通用寄存器不能承担IR的职能。
  • 执行指令:需要一个能发出各种操作命令序列的控制部件 CU;
  • 完成算逻运算:需要ALU;
  • 处理异常 & 特殊请求:需要中断系统;

,-
在这里插入图片描述

,-
在这里插入图片描述

,-

8.1.3、CPU的寄存器

  • 存储器速度、容量与位价的关系

    ,-
    在这里插入图片描述

    ,-
    最上面的寄存器速度最快,容量最小,价格最高。

  • CPU 内的寄存器分为两类:
    1、用户可见寄存器:可编程,使CPU使用此类寄存器而减少访存
    2、控制和状态寄存器:不可编程,它们被 CU or OS程序 使用。

    • 1、用户可见寄存器
      通用寄存器:可由 user 指定多种功能:存放操作数;作为基址寄存器 / 变址寄存器(需要在指令中指出寄存器编号),栈指针;间接寻址时用它来存放EA的地址。
      数据寄存器:存放操作数;有些还可以用于操作数有效地址的计算;有些机器允许使用使用两个连续的寄存器存放双倍字长的值,ACC 和 MQ 连接在一起,保存两个数的积。
      地址寄存器:存放地址;或者用于特殊寻址方式:作为基地址寻址的段指针(存放基地址)、作为变址寻址的变址寄存器、作为堆栈寻址的栈指针。(要足够长,以满足需要的寻址范围。)
      条件码寄存器:存放条件码。条件码是CPU根据运算结果由硬件设置的位,有的条件码也可以由用户设置,如最高位进位标志C,可用指令对它进行置位复位。寄存器中每一位都是一个条件码

    • 2、控制和状态寄存器:用于控制CPU的操作和运算,这类寄存器大部分对用户是透明的

      MAR:存储器地址寄存器,位数反映存储单元的个数。
      MDR:存储器数据寄存器, 位数反映存储字长。
      PC:程序计数器,在取完一条指令给CPU执行后,自动指向下一条指令;当遇到转移类指令时,PC可被修改
      IR:指令寄存器,存放当前欲执行的指令。


      PC ----> MAR ----> MDR ---->IR
    

    将现行指令地址由PC送至MAR,启动存储器读至MDR,再由MDR送至IR。

    程序状态字寄存器 PSW:存放程序状态字,用于存放条件码其它状态信息


    为了保持在早期计算机上编写的程序向上的兼容性,在设计新的计算机时经常保留原设计的寄存器组织形式,受到这种限制,所以寄存器组织的设计上只有有限的灵活性

    8.1.4、控制单元和中断系统

    • 控制单元:CU,提供完成计算机全部指令操作微操作命令序列
      形成微操作命令序列的方式有两个:第一个是组合逻辑设计方法,硬连线逻辑;第二个是微程序设计方法,是存储逻辑。

    8.2、指令周期

    8.2.1、指令周期的基本概念

    • 指令周期:CPU每取出、分析并执行一条指令所需的全部时间。
    • 取指周期取指令和分析指令所花的时间。
    • 执行周期执行指令所花的时间。
    • 不同的指令,它们的指令周期一般是不同的;

      无条件转移指令:JMP X。执行阶段不访存,可在取指阶段的后期将转移地址 X 送至PC,以达到转移的目的。所以 JMP X 的指令周期就是取指周期。
      一地址加法指令: ADD X。在执行阶段首先要从X所指示的存储单元中取出操作数,然后和ACC中的内容相加,结果存于ACC,该指令在取指和执行阶段都要访存,它一个指令周期就包括两个存取周期
      乘法指令:在执行阶段所要完成的操作比加法指令多得多,它的执行周期超过了加法指令。
      ,-
      在这里插入图片描述

    ,-
    在这里插入图片描述

    ,-

  • 间接寻址指令中,指令字给出的A是EA的地址,A是存放操作数地址的地址,因此需要先访存一次,取出EA,可放在通用寄存器中。因此间接寻址的指令周期就变成了:取指周期,间址周期,执行周期

  • CPU在每个指令周期结束前,都要查询中断。如果有中断请求,CPU要进入中断响应阶段,即中断周期。

  • 因此,一个完整的指令周期应该包括
    取指 ----> (间址)----> 执行 ----> (中断)

  • 上述四个周期都有访存的操作,但目的不同。
    如:
    取指周期访存:为了取指令到IR。
    间址周期访存:为了取有效地址EA。
    执行周期访存:为了取操作数
    中断周期访存:为了保存程序断点。到特定的存储单元?
    ,-
    在这里插入图片描述

    ,-

  • 上述是CPU的4个工作周期,可以在CPU内部设置四个工作周期标志触发器来区别它们。有利于设计控制单元。取指/间址/执行/中断 —周期标志触发器,辨别目前处于哪个周期

    在取指阶段,只要设置取指周期标志触发器FE为1,由它来控制取指阶段各个操作,便可以获得任何一条指令的取指命令序列
    间址时,间址次数可以由 IND / 间址周期标志触发器 来确定,当它为0,则表示间址次数结束。
    ,-
    在这里插入图片描述

    ,-

8.2.2、指令周期的数据流

  • 取指周期的数据流
    PC存放现行指令的地址,送到MAR至地址总线,由控制部件发出读命令使MAR对应的地址的内容送至地址总线、MDR,再送到IR。
    CU控制PC+1,形成下一条指令的地址。
    ,-
    在这里插入图片描述

    ,-

  • 间址周期的数据流
    取指周期结束后,CU检查IR的内容,确定是否有间址操作,如果有的话,
    则MDR中指示的右N位地址(记作Ad(MDR))将被送到MAR,CU发出读命令读到EA送回MDR。
    ,-
    在这里插入图片描述

    ,-

  • 执行周期的数据流
    不同指令的执行周期的操作差别很大,数据流也是多种多样的 ,无法用统一的数据流图来表示

  • 中断周期的数据流
    首先要将PC当前的内容保存起来,在执行完中断服务程序后可以返回断点,继续执行原程序。
    CU把用于保存(程序)断点的存储单元地址送到MAR,然后CU发出写命令,CU将PC的内容送到MDR并写入存储器,最后CU将中断服务程序的入口地址送入PC。
    ,-
    在这里插入图片描述

    ,-

8.3、指令流水

  • 为了提高访存速度
    提高存储芯片的性能;
    多体存储、Cache等结构。
  • 为了提高主机与IO交换信息的速度
    DMA;
    多总线结构,将速度不同的IO挂载到不同带宽的总线上。
  • 为了提高运算速度
    采用高速芯片;
    采用快速进位链等改进算法的措施。
  • 为了进一步提高处理机的速度
    提高器件的性能;
    改进系统的结构、开发系统的并行性

  • 1、提高器件的性能
    此法一直是提高整机性能的一个重要途径 。
    计算机分四代:电子管 —> 晶体管 —> 集成电路 —> 大规模集成电路
    hw每一次换代都使计算机的软件 & 硬件技术、计算机性能有突破性的发展
    如今半导体器件的集成度已经越来越接近物理极限 ----> 器件速度提高的越来越慢

  • 2、改进系统的结构,开发系统的并行性

    • 并行:两个方面 —> 同时性和并发性
      同时性:两个或多个事件在同一时刻发生。
      并发性:两个或多个事件在同一时间段发生。
      (不同的功能 / 事件,只要在时间上相互重叠,就存在并行性。

    • 并行性的等级
      粗粒度:程序级,进程级。粗粒度并行性一般用算法来实现。通常是多个处理机分别运行多个进程,多个处理机合作完成一个程序
      细粒度:指令之间,指令内部。细粒度并行性一般用硬件实现。如指令流水。

8.3.1、指令流水原理

  • 指令流水
    类似于工厂的装配线,产品装配在不同时间段的装配过程是不同的,让不同的产品处在不同的装配段,那么同一时刻每个装配段都会对不同产品进行加工,提高了效率。
    改变各条指令按序串行执行的规则,使机器在执行上一条指令的同时,取出下一条指令。

  • 如果简单的把指令处理过程分为取指令执行指令两个阶段。
    不采用指令流水的计算机指令执行过程:
    取指部件工作,执行部件空闲;执行部件工作,取指部件空闲。各部件的利用率低
    ,-
    在这里插入图片描述

    ,-
    指令的二级流水
    ,-
    在这里插入图片描述

    ,-

  • 指令预取:由指令部件取出一条指令并暂存(流水段之间设置寄存器或者锁存器),如果执行部件空闲,就将暂存的指令传给执行部件执行,同时指令部件又取下一条指令暂存。(如上图)

  • 指令预取的理想情况是效率加倍,现实限制因素:
    1、指令执行时间一般大于取指时间,要等执行完,在此之前缓存区不能空出。
    2、条件转移指令的下一条指令地址是不可知的,必须等待本条指令执行结束才能取对应的指令。

  • 指令的六级流水
    指令的处理过程细分为六步:取指 —> 指令译码 —> 计算EA —> 取操作数 —> 执行指令 —> 写操作数。
    那么处理器中这六个操作部件,同时对六条指令的不同阶段进行加工。
    但是实际情况是不是每条指令都需要六个阶段,写操作数回存储器这一步;各阶段时间不相等;遇到条件转移指令;访存冲突(同一时刻,不同部件同时要求访问存储器)…

8.3.2、影响流水线性能的因素

  • 三种相关
    1、结构相关:硬件资源满足不了指令重叠执行的要求,如访存冲突。
    2、数据相关:后面的指令要用到前面指令的结果。又写后读相关,读后写相关,写后写相关;实际只可能遇上写后读相关
    3、控制相关:遇到分支指令或其他改变PC的指令。主要就是由转移指令引起的,比起数据相关,控制相关会使流水线丧失更多的性能

  • 解决结构相关的方法:

    • 后继指令停顿一个时钟周期;
    • 指令与数据分开存储,防止取指与取数冲突;
    • 指令预取技术,要求访存周期短,那么指令执行阶段,主存会有空闲,此时只要指令队列空出,就可以取指至指令队列。实现执行K 与 分析K+1相重叠。
  • 解决数据相关的方法:

    • 后推法,延迟一个或数个周期;
    • 定向技术/旁路技术/专用通路技术:直接将上一条指令的执行结果送到后续指令需要的地方。如下图带旁路技术的ALU,图中两个暂存器,存放某一次运算的结果;当后续指令要用到本次运算的结果时,暂存器里面的内容可以通过旁路通道、多路选择开关送到ALU中,采用该后续指令的运算。(使用该技术直接设置传送数据的通路)
      ,-
      在这里插入图片描述

    ,-

  • 解决控制相关
    1、尽早判别是否需要,今早生成转移目标地址;
    2、预取转移成功和不成功两个方面的目标指令;
    3、加快、尽早生成条件码;
    4、提高猜准率

8.3.3、流水线性能

  • 衡量流水线性能三个指标
    吞吐率、加速率、效率

  • 吞吐率:单位时间内流水线完成的指令数或者输出的数目。又进一步分为最大吞吐率、实际吞吐率。

    • 最大吞吐率:连续流动时达到的吞吐率。(除去开头的建立时间和结束时的排空时间)
      建立时间:第一条指令输入后到其完成的时间。
      排空时间:最后一条指令输入后到其完成的时间。
    • 实际吞吐率:由流水线完成n条指令实际的吞吐率,算上建立时间 。
  • 加速比:m段非流水线的时间与流水线的时间之比(流水线要算上建立时间)。

  • 效率:流水线的功能段的利用率。如下图面积比或者横线比。
    就算是流水线中,各功能部件也不是100%处在工作状态的。
    ,-
    在这里插入图片描述

    ,-

8.3.4、流水线的多发技术

  • 超标量技术,超流水线技术,超长指令字技术

  • 超标量技术
    每个时钟周期内同时并发多条独立指令。要求处理机中配置多个功能部件和指令译码电路,多个寄存器端口、总线。
    相互独立,不存在数据相关的才可以实现指令级并行执行。
    不改变指令的执行顺序,通过编译优化,在高级语言翻译成机器语言时,把能并行执行的指令搭配起来并行执行

  • 超流水线技术
    将一些流水线寄存器插入流水段中,好比将一个时钟周期再分段,使超流水线处理器以3倍于原来的时钟频率运行。
    细化流水,提高主频:每一步做更简单的操作,耗时更短,从而倍频提速。
    在原来的时钟周期内,功能部件被使用三次/多次。
    不改变指令的执行顺序,也是编译来优化。

  • 超长指令字技术
    和超标量技术一样,采用多条指令和多个处理器部件并行处理的体系结构,一个时钟周期可以流出多条指令。
    但超标量指令来自同一标准的指令流,而超长指令字技术则是编译程序在编译时挖掘指令间潜在的并行性,把多条能并行操作的指令组合成一条具有多个操作码字段的超长指令(可达几百位),这个超长指令控制超长指令字处理机中多个彼此相互独立的功能部件,每个操作码字段控制一个功能部件。
    相当于一次取指,取多个可并行的指令 —> 组成一个超长指令字,内含多个操作码 —> 不同的操作码控制不同的功能部件同时执行。
    要求更高的并行处理能力,对优化编译器的要求更高,Cache的容量要求更大。
    此类机器种类很少,不容易实现
    收藏。
    ,-
    在这里插入图片描述

,-
在这里插入图片描述

,-
在这里插入图片描述

,-
在这里插入图片描述

,-

8.3.5、流水线结构

  • 指令流水线
    指令级的流水技术。
    将指令的整个执行过程用流水线进行分段处理
    典型分段:取指令 —> 指令译码 —> 形成地址 —> 取操作数 —> 执行指令 —> 回写结果 —> 修改指令指针
    指令流水线对机器性能的改善程度取决于把处理过程分成多少个相等的时间段数。如上分成七段,在不断流的理想情况下,流水线将速度提高七倍。

  • 运算流水线
    部件级的流水技术。
    如浮点加法运算,分成对阶,尾数加,结果规格化三段,每一段都有专门的逻辑电路来同时工作。并将各自的结果保存在锁存器中,作为下一段的输入。如当对阶完成后,结果存入锁存器,便可以进入下一条指令的对阶运算。
    ,-
    在这里插入图片描述

    ,-

在这里插入图片描述

,-

无论是指令级流水还是部件级流水,由于相邻两段在执行不同的操作,所需要的时间可能不同相邻的两段之间必须设置锁存器或者寄存器。要保证在一个时钟周期内流水线某一段的输入信号不变。

,-
在这里插入图片描述

,-

在a时钟周期,S1 部件有一个输入Ia ,并产生一个输出 Oa ,作为b时钟周期后续段的输入;
在b时钟周期,S1 部件有一个输入Ib ,并产生一个输出 Ob ,而在 b 时钟周期 Oa 正作为特定指令流水段的输入,如果不加锁存器,Oa 的值可能会被 Ob 代替,影响该指令段的输入,造成严重后果。

8.4、中断系统

  • 为了处理各种中断,CPU内通常设有处理中断的机构 —— 中断系统。
  • 中断的定义
    CPU在程序运行过程中,遇到异常情况或者特殊请求,需要暂停先行程序,转去处理这些时间,处理完在返回断点继续执行

8.4.1、中断概述

  • IO 中断可以使CPU与IO设备并行工作提高效率
    许多意外事件需要及时处理,这也需要中断来转入对应的中断服务程序。
    多道程序运行时,给每道程序分配一个时间片,利用时钟定时中断来进行程序切换。sc多道程序 简单来说就是数个程序同时在CPU中运行,共用内存、IO等资源,用以提高资源利用率。

  • 引起中断的因素

    • 人为设置的中断:又叫自愿中断,由人决定,意料之中的。
    • 程序性事故:如定点溢出,浮点溢出,操作码不能识别…等由程序设计不周引起的中断。
    • 硬件故障:如掉电、插件接触不良、磁表面损坏…
    • IO设备:数据交换
    • 外部事件:如用户通过键盘来中断现行程序。
  • 中断源:能引起中断就是中断源。
    除了自愿中断是人为的以外,大部分中断是随机的。
    中断分为可屏蔽中断不可屏蔽中断(如掉电)。

  • 中断流程/内容:
    中断请求 —> 中断判优 —> 中断响应 —> 保护现场 —> 中断服务

  • 中断服务程序的流程:
    保护现场 —> 设备服务 —> 恢复现场 —> 中断返回

  • 中断请求标记
    设置中断请求触发器,可以集中设在CPU,组成中断请求标记寄存器
    ,-
    在这里插入图片描述

    ,-

中断请求触发器也可以各自分开,设置在对应的中断源中。

  • 中断判优
    多个中断源提出中断请求,中断系统按优先顺序予以响应。
    可以用hw实现,也可以用sw来实现。

    • hw排队
      链式排队器,中断请求触发器分散在各个接口电路。同一时刻输出端只有一个是高电平
      下图的 INTR 在这里的意思是中断请求触发器
      ,-
      在这里插入图片描述

      ,-

      排队器集成在CPU里的情况。
      ,-
      在这里插入图片描述

      ,-

    • sw查询
      通过编写查询程序实现,即中断识别程序
      ,-
      在这里插入图片描述

      ,-

  • 中断入口地址寻找
    不同的中断源有各自的中断服务程序,有不同的中断服务程序入口地址
    找入口地址有两种方法:硬件向量法软件查询法

    • hw向量法
      利用硬件(中断向量地址形成部件,本质是设备编码器)产生向量地址,再由向量地址找到中断服务程序的入口地址
      1、在向量地址内存放无条件转移指令
      2、或者设置向量地址表,存储单元的地址是向量地址,存储单元的内容是入口地址。访问向量地址所指示的存储单元就可以获得入口地址。
      ,-
      在这里插入图片描述

      ,-

    在这里插入图片描述

    ,-

在这里插入图片描述

,-
hw向量法寻找入口地址速度快,被现代计算机普遍采用。

  • sw查询法
    不涉及硬件设备,但查询时间较长。利用中断识别程序进行查询。
    ,-

在这里插入图片描述

,-

8.4.4、中断响应

  • 中断响应的条件
    中断允许触发器EINT必须为1。
    EINT可被开中断指令置1,可被关中断指令置0。
    当EINT = 1,且INTR = 1(中断请求标记触发器)时,CPU可以响应中断。

  • 中断响应的时间
    一般是在每个指令周期执行结束后,统一向所有中断源发出中断查询信号,此时CPU才能获得中断请求。
    有些计算机中,一些指令执行周期很长,若还是每次都在指令执行结束前查询,可能会因为发现中断过迟而出差错 ----> 可在指令执行过程中设置若干个查询断点,及时查询、发现中断。
    ,-
    在这里插入图片描述

    ,-
    在这里插入图片描述

    ,-

  • 中断隐指令
    不在指令集中,由hw自动完成。
    完成三个内容,

    • 保护程序断点:将PC的内容保存到堆栈,或者存储器的特定单元
    • 寻找中断服务程序入口地址:hw向量法;将向量地址送到PC无条件转移。sw查询法。
    • 关中断:操作中断允许触发器EINT来实现(置0),中断响应后,通过逻辑电路自动控制EINT变0

8.4.5、保护现场和恢复现场

  • 保护现场

    • 保护程序断点:由中断隐指令来完成
    • 保护CPU内部各寄存器的内容:中断服务程序或者用户编程实现
  • 恢复现场
    中断返回,必须将寄存器的内容恢复到中断处理前的状态,由中断服务程序完成
    ,-
    在这里插入图片描述

    ,-

8.4.6、中断屏蔽技术

  • 主要用于多重中断

  • 多重中断可以在中断过程中响应、执行新的中断,即中断嵌套。而单重中断不行。如上图

  • 多重中断的条件

    • 提前开中断:将EINT置1,详见上图
    • 优先级高的中断可以中断优先级低的,反之则不行
      ,- 优先级:A > B > C >D
      在这里插入图片描述

    ,-

  • 如何保证高级别的中断不会被低级别的打断呢
    采用屏蔽技术,设置屏蔽触发器MASK

    • IO设备外部接口电路为例,
      完成触发器D,屏蔽寄触发器MASK,中断请求触发器INTR之间的关系,如下图。
      ,-
      在这里插入图片描述

    ,-

  • 屏蔽技术

    • 与上图不同,当排队器集中设在CPU内,也可以将屏蔽触发器设置在排队器
      每个中断请求触发器INTR就对应一个屏蔽触发器MASK
      多个屏蔽触发器MASK可组合成一个屏蔽寄存器,屏蔽寄存器的内容成为屏蔽字
      ,-
      在这里插入图片描述

      ,-

      • 利用屏蔽字改变优先等级(处理优先级)
        优先级包含响应优先级和处理优先级
        响应优先级:CPU响应各中断源的优先次序,这一般是由hw设置好的改不了
        处理优先级:CPU实际对各个中断源的处理优先次序
        不采用屏蔽技术,二者次序是相同
        采用屏蔽技术,不改变响应次序,改变处理次序
        屏蔽技术需要在中断服务程序中设置新的屏蔽字,开中断之前还要恢复屏蔽字
        ,-
        在这里插入图片描述

        ,-
        来一发例题,自己分析,巩固一下
        ,-
        在这里插入图片描述

        ,-

答案是3142。

屏蔽字的优点就是可以主动决定处理次序;也可以屏蔽某些不那么重要的非自愿中断,使程序更加灵活

  • 多重中断的断点保护

    • 中断系统对断点的保存都是由中断隐指令来完成
    • 可以保存到堆栈,依次PUSH、依次POP,各重中断都可以准确返回
      也可以保存在特定的存储单元,如第一个断点存到0单元,第二个断点来之前转存第一个断点,第二个断点进入0单元…

中断流程图

,-
在这里插入图片描述

,-

8.5、补充

  • CPU一般来是说包括ALU与CU,CPU与主存构成主机
    ,-
    在这里插入图片描述

    ,-

  • PC的位数取决于存储器的容量

  • 中断标志触发器指示CPU是否进入中断周期。四个工作周期,四个??周期标志触发器,辨别CPU目前正处在哪个周期。
    ,-
    在这里插入图片描述

    ,-

  • 地址译码器:CPU 发出地址信号到地址总线 ----> 地址译码器译码 ----> 找到对应的存储单元

  • 通用R不能代替IR,通用R可以存放数据或者地址

  • 超流水线技术:缩短原来流水线的处理器周期
    超标量技术:每个时钟周期并发多条指令
    超长指令字技术:把多条能并行操作的指令组合成一条具有多个操作码字段的指令

  • RISC机器一定采用流水技术,RISC机器的CPU里面有很多寄存器,如今CISC也采用流水线技术。

  • IR对用户是完全透明的,PC,PSW不是完全透明的

  • CPU由四个部件组成
    寄存器组:PC,IR,MAR,MDR,堆栈指示器,状态寄存器,通用寄存器
    CU:产生计算机全部指令的微操作命令序列
    ALU:算逻运算
    中断系统:处理各种中断

  • 影响指令周期的长短主要因素:执行阶段访存的次数,执行阶段所需要完成的操作

  • 中断周期时,CPU响应中断,通过一条中断隐指令,完成三个内容(断点进栈,关中断,向量地址送PC/硬件向量法 或者 中断识别程序入口地址送PC/软件查询法)

  • 指令周期下分四个周期,访存的目的
    取指周期:取指令
    间址周期:取有效地址
    执行周期 :取操作数 / 存运算结果
    中断周期:保存断点

  • 流水受阻的三种情况
    结构相关:指令重叠执行过程中,硬件资源满足不了指令重叠执行的要求
    数据相关:当一条指令需要用到前面指令的执行结果,而这些指令均在流水线中重叠执行,可能改变对操作数的读写访问顺序(只会有写后读
    结构相关:遇到分支指令时,需要等前面的一条或者几条指令有结果了才能确定转移的方向

  • 指令流水线运算流水线的共同点:由于相邻两段在执行不同的操作,所需要的时间可能不同,因此相邻两端必须设置锁存器or寄存器,保证一个时钟周期内流水线各段的输入不变

  • 指令流水线的时钟周期应该按各步操作的最大时间来考虑。

  • 计算加速比、最大吞吐率,实际吞吐率,要先算出时钟周期是多少,如果各个过程段所花时间不同,那么时钟周期按最大时间来算。

  • 中断:CPU在程序运行过程中,遇到异常情况或者特殊请求,需要暂停先行程序,转去处理这些时间,处理完在返回断点继续执行。

  • 中断过程中用到的硬件
    中断请求触发器INTR:个数与中断源的个数相同,又来标志某各中断源向CPU提出中断请求
    中断屏蔽触发器MASK:个数与中断源个数相同,为1表示对应中断请求被屏蔽
    排队器:中断判优
    向量地址形成部件:用以产生中断源的向量地址,从而找到中断服务程序的入口地址
    允许中断触发器EINT:为1,CPU允许中断
    中断标志触发器INT:为1标志系统进入中断周期
    堆栈:用来保护现场
    中断查询信号电路:每条指令执行周期结束时刻,该电路像各中断源发出查询信号

  • 用于设置中断的指令
    开关中断,置屏蔽字,中断返回等指令

  • 处理中断 ----> 两种方法找中断服务程序入口地址

    • hw向量法
      hw电路产生向量地址
      1、向量地址内设置一条无条件转移指令,转到中断服务程序入口;在中断响应周期将该指令送至PC
      2、在向量地址内直接存放中断服务程序的入口地址,通过访问向量地址的存储单元,采用间址的方式,找到入口地址
    • sw查询法
      主存中有一段中断识别程序 ,通过程序查询判断是哪个中断源提出请求;
      在中断响应周期将中断识别程序的首地址送到PC,在 CPU 中逐条执行查询,便能找到相应的中断服务地址
  • 有一题我觉得不错,关于设置中断屏蔽字改变处理优先级
    五个中断源,响应优先级:L0 > L1 > L2 > L3 > L4 ,现要求中断处理优先级为13402

,-
在这里插入图片描述

,-

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值