时钟周期、机器周期与指令周期 您所在的位置:网站首页 周期和w 时钟周期、机器周期与指令周期

时钟周期、机器周期与指令周期

#时钟周期、机器周期与指令周期| 来源: 网络整理| 查看: 265

1. 时钟周期、机器周期与指令周期的概念与联系

我们首先对时钟周期、机器周期、指令周期的概念进行明确,再讨论三者之间的关系。

1.1 指令周期(Instruction Cycle)

CPU从存储器中取出并执行一条指令所需的全部时间称之为指令周期。

CPU执行一条指令的过程

计算机每执行一条指令的过程,可分解为如下步骤:

Instruction Fetch(取指令):指令放在存储器,通过PC寄存器和指令寄存器取出指令的过程,由控制器(Control Unit)操作。 从PC寄存器找到对应指令地址,据指令地址从内存把具体指令加载到指令寄存器,然后PC寄存器自增;Instruction Decode(译码):据指令寄存器里面的指令,是哪一种类型的指令,解析成要进行什么操作,具体要操作哪些寄存器、数据或内存地址。该阶段也是由控制器执行;Execute(执行):实际执行算术逻辑操作、数据传输或者直接的地址跳转操作。无论是算术操作、逻辑操作的指令,还是数据传输、条件分支的指令,都由算术逻辑单元(ALU)操作,即由运算器处理。如果是一个简单的无条件地址跳转,那可直接在控制器里完成,无需运算器

重复1~3的过程,这个循环完成的时间即指令周期。

不同类型指令的指令周期不相同

注意:这里将指令周期划分为3个步骤(IF,ID,EX),实际上还可以有其他的划分方式,例如划分为4个步骤:IF,ID,EX,WB(Write Back,即将运算结果写回存储器或者寄存器),再例如划分为5个步骤:IF,ID,OF(Operand Fetch,即取得操作数),EX,WB。

这与机器周期与指令流水线有关,下面会讲。

1.2 时钟周期(cycle,clock cycle)

主频:计算机内部主时钟的频率,通常以MHz或者GHz为单位,是生产设计CPU时就已经确定下来的。

主频越高,CPU的运算速度越快,时钟周期越短,硬件技术水平的提高可以提升主频。

主频可能会发生变化(例如Intel的Turbo Boost技术),也可能保持不变(例如ARM、RISC-V架构的处理器)

时钟周期(cycle):定义为主频的倒数,有时也称之为节拍(pulse)

时钟周期是计算机中最基本的、最小的时间单位,在一个时钟周期内计算机仅能完成一个“微操作”或若干相容的(数据通路上不发生冲突、互不干扰的)“微操作”

微命令与微操作

微命令:控制器控制执行单元所发出的控制信号,称为微命令

微操作:执行单元接受微命令进行的操作称之为微操作

举例:对于下面的计算机模型的数据通路示意图。将通用寄存器R1的数据经总线传送到地址寄存器MAR,该微操作记为R1→DBUS→AR,为了完成这个微操作,需要控制器发出控制信号RS1 RS0 = 01,RS-BUS#=0,LDAR=1,使得这两个寄存器的数据通路连通,进行数据传送。一个计算机模型的数据通路示意图

微指令

微指令:在一个机器周期中,一组实现一定操作功能的微命令的组合,构成一条微指令。

微指令由微指令实现,由微操作负责执行,执行时间通常为1时钟周期。

(这是不那么严格来讲,而事实是微指令也会有多个时钟周期才能执行完的情况,但对于RICS/ARM芯片,大多微指令都是一个时钟周期执行完)

举例:对于机器指令ADD R1, R2的执行周期(是一个机器周期),需要将寄存器R1与R2的值相加后结果送入R1,对应的微指令是R1+R2→R1。为了实现这个微指令,对应的微操作是R1→DR1,R2→DR2,DR1+DR2→DBUS→R1,这些微操作需要对应的微命令进行控制。

小结:时钟周期 = 节拍 ≈ 微指令周期

1.3 机器周期(Machine Cycle)

或者称为CPU周期(CPU Cycle)

机器周期是人为规定的,实际上是对一条指令执行过程阶段的划分。具体的划分方法随计算机的不同而不同

机器周期的规定

CPU内部操作速度很快,但访问内存速度却慢很多。 每条指令都需要从内存里面加载而来,所以一般把从内存里面读取一条指令的最短时间(与数据通路相关),规定为机器周期。

机器周期与时钟周期的关系

一个机器周期内包含若干时钟周期,包含时钟周期的个数称之为机器周期的时间宽度

如果每个机器周期的时间宽度相等,称为定长机器周期;如果不相等,称为变长机器周期。

时钟周期、机器周期、指令周期之间的关系如(a)图所示,这里将某一条指令的指令周期划分为3个机器周期,表示指令执行的3个阶段:取指令、取有效地址、执行指令;如(b)图所示,又将某一条指令的指令周期划分为2个机器周期,且机器周期的时间宽度不等,表示这条指令执行需要2个阶段:取指令、执行指令。

机器周期与流水线的关系

机器周期是为了实现指令流水线而引入的概念,实际上对应的是指令流水线的各个阶段,称之为流水阶段(或功能段,流水级等)

例如对于上面(a)图的3个机器周期,作为3个流水阶段,令其重叠执行,可以得到一个三段流水线,其时空图如下所示:

三级流水线的时空图

其中每一个流水阶段需要4个时钟周期,流水线满载时,每4个时钟周期(或1个机器周期)完成一条指令,此时CPI = 4。如果不采用流水线的方式,需要12个时钟周期(或3个机器周期)完成一条指令,此时CPI = 12。

需要特别注意的是,机器周期 时钟周期,仍以上述计算机模型为例,说明机器周期与时钟周期的关系。

举例:执行LOAD R1, [R2]指令,完成[R2]→R1操作(将R2所指存储器地址的数据加载到R1):取指周期:根据PC提供的指令地址,从存储器中取出指令送入IR,并PC+1在T2节拍,指令被读出并加载到IBUS上在T3节拍,IBUS上的数据存入IR分析周期:对指令进行译码,R2通过DBUS送入AR,获得操作数的有效地址在T1节拍,R1加载到DBUS上在T2节拍,DBUS上的数据存入AR执行周期:根据AR提供的数据地址,从存储器中取出数据送入R1在T2节拍,数据被读出并加载到DBUS上在T3节拍,DBUS上的数据存入R1

以执行周期为例,说明执行周期应当至少包含2个时钟周期的原因:

如下图所示,存储器接收到时钟的第一个上升沿后开始读存储器,需要经过一段时间才能够在总线上形成数据,如果此时就触发寄存器的锁存,寄存器是无法从总线上获得数据的,所以寄存器需要等到第二个上升沿才能够触发锁存,将总线上的数据锁存到寄存器内。计算机内部存储器与寄存器之间数据传输的时序图

这个计算机模型是简化的模型,但是已经可以说明机器周期可能需要包含若干时钟周期,这两者并非同一个概念。

机器周期是人为规定的,机器周期的名称也是人为规定的(上例中,也可以把分析周期认为是执行周期)。但是为了使得设计机器的方便、也为了能够实现流水化,会考虑如下因素:

总是希望机器周期的时间宽度相等。如果各个机器周期的时间宽度不相等,执行时间最长的流水段将会形成整个流水线的瓶颈;尽可能避免流水线的各个阶段使用的部件产生冲突,这也就是很难以时钟周期作为流水线各个阶段划分的原因。

指令流水线的细分

指令流水线的优化方向就是增加流水线的级数,使得机器周期尽可能等于时钟周期,所以这是时钟周期容易与机器周期混淆的原因。

为了实现指令流水线,不可避免地需要在各个流水段的部件之间加入寄存器暂存结果(这是由于各个流水段延迟(实际耗费的时钟周期)不可能完全一致),加入寄存器后,指每条指令的实际执行时间会增加,即每一条指令的延迟会增加,但是由于提高了指令并行度,所以吞吐量会增加,使得整个程序的执行时间大大缩短。

指令流水线的细分

假设当前机器,IF(取指)、ID(译码)、OF(取操作数)、EX(执行)、OS(写回),5个基本运算分量的延迟总共为280 ns。

图(a)中的4级流水线设计和图(b)中的11级流水线设计的机器周期分別是80 ns和30 ns。

4级流水线总延迟为320 ns(80 ns × 4),吞吐率是非流水设计的3.5倍(280 ns/80 ns)11级流水线总的延迟为330 ns (30 ns × 11),吞吐率是非流水设计9.3倍(280 ns/30 ns)小结:时钟周期、机器周期、指令周期之间的关系

一个指令周期包含多个机器周期,而一个机器周期包含多个时钟周期。

2. 一些常见的谬误2.1 混淆时钟周期与指令周期

这幅图出自CSAPP,这几张示意图本质上是想说明将CPU流水化后,每条指令的延迟会增加而吞吐量会上升,但是问题出在Figure 4.34,这里流水段A、B、C均对应1个时钟周期,这是不准确的,如上文所述,复杂的组合逻辑电路不可能在一个上升沿即完成所有的数据传输与计算。

这是维基百科对于指令流水线的时空图描述,这里的流水线有4个流水段,但是每一个流水段并非1个时钟周期就可以完成的。

2.2 其他错误表述

“简单的指令只需要一个时钟周期就可以完成。”

这样的表述也是错误的,如上文所述,一个指令需要经过取指令、译码、执行等各个步骤,以取指令为例,要从存储器取出指令,这一个步骤就至少要耗费2个时钟周期。

但是可以说,对于理想的标量流水线,每一个时钟周期可以完成一条指令。

参考资料

计算机组成原理(第7版),白中英 主编

这本组成原理的教材的主编是研究CPU的,因此对于上述概念的理解是比较到位的,这篇笔记的概念与案例主要来源于这本书。

计算机系统结构(第3版),白中英 主编

这本书是在组成原理的基础上深入解读了指令流水线,并以定量分析的方式说明指令流水线的性能。

现代处理器设计,John P. Shen, Mikko Lipasti著

这本书提到了流水线设计的目标,流水线细化这方面的知识

深入理解计算机系统,Randal E. Bryant著

参考了知乎上的一个问答

https://www.zhihu.com/question/53670481



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有