Bonky Zhu
If someone is able to show me that what I think or do is not right, I will happily change, for I seek the truth, by which no one was ever truly harmed. It is the person who continues in his self-deception and ignorance who is harmed.

计算机组成 – CPU的结构与功能

计算机组成 - 结构与功能

CPU 的结构

控制单元 CU

  • 组合逻辑设计:硬连线逻辑
  • 微程序设计:存储逻辑

指令周期

CPU 工作周期

CPU 访存有四种性质:

  • 取指令 - 取指周期
  • 取地址 - 间址周期
  • 取操作数 - 执行周期
  • 存程序断点 - 中断周期

指令流水

系统的并行性

并行包括并发方式和同时方式。并行性的等级有过程级(程序、进程),指令级(指令之间或者指令内部),指令级一般使用硬件实现。

指令流水原理

因为取指令的时候只会使用取指令部件,执行的时候只会使用执行部件。所以我们可以在执行指令的时候,同时进行取指。下面是一个二级流水的例子:

影响指令流水效率加倍的因素

执行时间 > 取指时间

加入一个缓冲区:

条件转移指令

必须等上条指令执行结束,才能确定下条指令的地址, 造成时间损失。解决的一个方法是猜测法。

影响指令流水线性能的因素

  • 不同指令争用同一功能部件产生资源冲突:停顿
    • 指令存储器和数据存储器分开(典型的胡佛架构)
    • 指令预取技术 (适用于访存周期短的情况)
  • 不同指令因重叠操作,可能改变操作数的读/写访问顺序:意思就是加入两条执行假如都对同一个单元进行读写,要注意他们的先后性,否则会影响执行的正确性。如下面这个,必须等第一个写入 R1,第二条指令才能开始读
    • 后推法:就是推迟读写
    • 旁路技术:就是如果使用的同一个的话,可以直接运算完直接送到下一条指令。
  • 由转移指令引起:必须要等待前面的结果出来了,才能执行条件转移。

流水线性能

吞吐率

即单位时间内流水线所完成指令或输出结果的数量

设 m 段的流水线各段时间为 Δt,最大吞吐率为:$T_{p m a x}=\frac{1}{\Delta t}$,长度全部为1,实际吞吐率为$T_{p}=\frac{n}{(m+n-1) \cdot \Delta t}$,其实很简单,执行 n 条指令一共花了 m+n-1 的时间,然后一共执行了 n 条指令。

加速比 Sp

使用不使用流水线和使用流水线的比。
$$
S_{p}=\frac{n m \Delta t}{m \Delta t+(n-1) \Delta t}=\frac{n m}{m+n-1}
$$

效率

其实效率就是平行四边形面积除以矩形面积:
$$
效率=\frac{流水线各段处于工作时间的时空区}{流水线中各段总的时空区}=\frac{m n \Delta t}{m(m+n-1) \Delta t}
$$

流水线的多发技术

超标量技术

超标量技术在一个周期取出多条指令并行执行,,其实质是以空间换取时间。但由于指令之间的相关性,即后一条指令需要前一条指令的结果,超标量CPU 需要增加大量的硬件电路来调度这些同时取出的指令,比如寄存器重命名,预约站,重排序缓冲区等。

超流水线技术

在一个时钟周期内再分段,在一个时钟周期内一个功能部件使用多次。

超长指令字技术

由编译程序挖掘出指令间潜在的并行性,将多条能并行操作的指令组合成一条具有多个操作码字段的超长指令字(可达几百位)

流水线结构

指令流水线结构

每次需要将执行后的结果放在锁存器中

运算流水线结构

分段的原则是每个操作时间都一致。

中断系统

中断请求标记 INTR

下面是一个中断判优逻辑的寄存器:

中断判优逻辑

硬件实现(排队器)

INTR1,INTR2,INTR3,INTR4 优先级按降序排列

软件实现(程序查询)

中断服务程序入口地址的寻找

硬件向量法

根据硬件直接在主存找到中断向量的入口地址。

软件查询法

直接根据条件进行跳转即可

中断响应

  • 响应中断的条件:允许中断触发器 EINT = 1
  • 响应中断的时间:在执行阶段以后执行

中断隐指令

  • 保护程序断点:中断结束后,继续执行源程序。一般都是放在内存特定单元,或者进栈
  • 寻找服务程序入口地址:硬件向量法(向量地址→PC),软件服务法(中断识别查询入口→ PC)
  • 硬件关中断:首先排队器生成一个,然后与 EINT 相与,如果 EINT 为1的话,INT 的 S 端输入的是1

保护现场和恢复现场

多重中断

一个中断中断另外一中断:(注意返回的地址)

实现条件

  • 开中断为1,即 EINT 为 1
  • 优先级别高的中断源有权中断优先级别低的中断源

屏蔽技术

  • 响应优先级指cpu响应各中断源请求的优先顺序,这种顺序往往是硬件电路设置好的,不便于改动
  • 处理优先级指cpu实际对各中断源请求处理的优先次序,可以通过中断屏蔽技术来改变处理优先次序。若不采用屏蔽技术,则响应的优先次序就是处理的优先次序。

屏蔽触发器:

使得中断源既不能执行中断服务请求,也不能进入排队

屏蔽处理字:

只需要修改屏蔽字就可以修改优先级:

注意:响应优先级不可改变,处理优先级可通过重新设置屏蔽字改变。

多重中断的断点保护

  1. 断点进栈
  2. 断点存入“ 0 ” 地址

下面主要讲讲多重中断中断点存入“ 0 ” 地址的方法:

实际上很简单,每次执行中断之前,先将零地址的内容先转存,

Share

You may also like...

发表评论