【计组】数据通路和流水线设计--《深入浅出计算机组成原理》(三)

 课程链接:深入浅出计算机组成原理_组成原理_计算机基础-极客时间 

目录

一、建立数据通路

(一)组合逻辑电路

1、指令周期

2、数据通路

3、CPU所需硬件电路

(二)时序逻辑电路

1、时序逻辑电路可以解决的问题

二、面向流水线的指令设计

(一)现代处理器的流水线设计

​编辑

(二)“主频战争”带来的超长流水线

1、超长流水线面临的问题

三、冒险和预测

(一)Hazard

1、结构冒险

2、数据冒险

3、通过流水线停顿解决数据冒险

(二)操作数前推 

(三)乱序执行

(四)控制冒险

1、缩短分支延迟

2、分支预测

3、动态分支预测


一、建立数据通路

(一)组合逻辑电路

1、指令周期

  • Fetch(取得指令):从 PC 寄存器里找到对应的指令地址,根据指令地址从内存里把具体的指令,加载到指令寄存器中,然后把 PC 寄存器自增,好在未来执行下一条指令。
  • Decode(指令译码):根据指令寄存器里面的指令,解析成要进行什么样的操作,是 R、I、J 中的哪一种指令,具体要操作哪些寄存器、数据或者内存地址。
  • Execute(执行指令):实际运行对应的 R、I、J 这些特定的指令,进行算术逻辑操作、数据传输或者直接的地址跳转。
  • 重复进行 1~3 的步骤。

 除了 Instruction Cycle,在 CPU 里还有另外两个常见的 Cycle。一个叫 Machine Cycle,机器周期或者 CPU 周期。CPU 内部的操作速度很快,但是访问内存的速度却要慢很多。每一条指令都需要从内存里面加载而来,所以我们一般把从内存里面读取一条指令的最短时间,叫作 CPU 周期。还有一个是Clock Cycle,也就是时钟周期以及机器的主频。一个 CPU 周期,通常会由几个时钟周期累积起来。一个 CPU 周期的时间,就是这几个 Clock Cycle 的总和。 

2、数据通路

数据通路就是处理器单元,通常由两类原件组成:

第一类叫操作元件,也叫组合逻辑元件(Combinational Element),就是 ALU。ALU的功能就是在特定的输入下,根据下面的组合电路的逻辑,生成特定的输出。

第二类叫存储元件,也有叫状态元件(State Element)的。比如我们在计算过程中需要用到的寄存器,无论是通用寄存器还是状态寄存器,其实都是存储元件。

通过数据总线的方式,把它们连接起来,就可以完成数据的存储、处理和传输了,这就是所谓的建立数据通路。

控制器会重复“Fetch - Decode - Execute“循环中的前两个步骤,然后把最后一个步骤,通过控制器产生的控制信号,交给 ALU 去处理。

3、CPU所需硬件电路

  • 首先需要ALU,它是一个没有状态的,根据输入计算输出结果的第一个电路。
  • 第二,需要有一个能够进行状态读写的电路元件,也就是寄存器,能够存储到上一次的计算结果。
  • 第三,需要有一个“自动”的电路,按照固定的周期,不停地实现 PC 寄存器自增,自动地去执行“Fetch - Decode - Execute“的步骤。
  • 第四,需要有一个“译码”的电路。无论是对指令进行 decode,还是根据内存地址获取对应的数据或者指令,都需要通过一个电路去寻找数据。

CPU在空闲状态就会停止执行,具体来说就是切断时钟信号,CPU的主频就会瞬间降低为0,功耗也会瞬间降低为0。由于这个空闲状态是十分短暂的,所以你在任务管理器里面也只会看到CPU频率下降,不会看到降低为0。当CPU从空闲状态中恢复时,就会接通时钟信号,这样CPU频率就会上升。所以你会在任务管理器里面看到CPU的频率起伏变化。

(二)时序逻辑电路

1、时序逻辑电路可以解决的问题

  • 自动运行问题。时序电路接通之后可以不停地开启和关闭开关,进入一个自动运行的状态,使得我们上一讲说的,控制器不停地让 PC 寄存器自增读取下一条指令成为可能。
  • 存储问题。通过时序电路实现的触发器,能把计算结果存储在特定的电路里面,而不是像组合逻辑电路那样,一旦输入有任何改变,对应的输出也会改变。
  • 各个功能按照时序协调。无论是程序实现的软件指令,还是到硬件层面,各种指令的操作都有先后的顺序要求。时序电路使得不同的事件按照时间顺序发生。

二、面向流水线的指令设计

(一)现代处理器的流水线设计

CPU 的指令执行过程,是由各个电路模块组成的。取指令的时候,需要一个译码器把数据从内存里面取出来,写入到寄存器中;指令译码的时候,需要另外一个译码器,把指令解析成对应的控制信号、内存地址和数据;到了指令执行的时候,需要的则是一个完成计算工作的 ALU。

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值