简单的流水线和超标量体系结构

时间:2011-06-17 17:28:49

标签: instructions instruction-set pipelining

考虑这个指令流程图....

  

指令获取 - >指令解码 - >操作数提取 - >指令执行 - >回写

假设支持

的处理器
  

cisc和risc ......就像intel 486

现在如果我们发出一个risc指令,它需要一个时钟周期才能执行,所以没有问题......但是如果发出cisc指令,它的执行需要时间......

  

所以让执行cisc指令需要三个时钟周期,每个时钟周期都由执行前的阶段执行....

现在在超标量结构中,在处理第一个指令时发出的两个指令被转移到其他可用的功能单元中......但是在简单的流水线操作中没有这样的转移,因为只有一个功能单元可用于执行指令。 ...

  

那么在简单的流水线情况下避免指令拥塞的原因是什么?

1 个答案:

答案 0 :(得分:1)

从技术上讲,x86不是RISC处理器。它是CISC处理器。有些指令花费的时间较少,但这些指令不是RISC指令。我相信英特尔在内部将指令转换为RISC指令,但这并不是真正相关的。

如果我们有不同时间的指令,那么它就变成了CISC处理器。管道CISC处理器几乎是不可能的 - 据我所知,没有人能够做到这一点。您可以在CPU内部执行许多操作以加快执行速度,例如无序执行。因此,您无法拥有管道拥塞,因为所有指令都必须按顺序执行。

  

现在如果我们发出一个risc指令,它需要一个时钟周期才能执行,所以没有问题......但是如果发出cisc指令,它的执行需要时间......

RISC指令不一定需要一个时钟周期。在MIPS上,它需要5.但是,流水线操作的重点是在执行一条指令后,下一条指令将在当前一条指令完成后的一个时钟周期内完成。

  

现在在超标量结构中,第一个处理时发出的两条指令被转移到其他可用的功能单元中......

在超标量体系结构中,执行两条指令并同时完成。在纯超标量体系结构中,循环看起来像这样(F = Fetch,D = Decode,X = eXecute,M = Memory,W = Writeback):

(inst. 1) F D X M W
(inst. 2) F D X M W
(inst. 3)          F D X M W
(inst. 4)          F D X M W
  

但简单的流水线操作不存在这样的转移,因为只有一个功能单元可用于执行指令....

是的,所以循环看起来像这样:

(inst. 1) F D X M W
(inst. 2)   F D X M W
(inst. 3)     F D X M W
(inst. 4)       F D X M W

现在,如果我们有不同时间的指令(CISC计算机),那么管道就更难了,因为只有一个执行单元,我们可能不得不等待前面的指令才能完成执行。指令1需要2个执行周期,指令2需要5个,指令3需要2个,指令4在这个例子中只需要1个

(inst. 1) F D X X M W
(inst. 2)         F D X X X X X M W
(inst. 3)                       F D X X M W
(inst. 4)                               F D X M W

因此,我们无法真正管道CISC处理器 - 我们必须等待执行周期才能完成下一条指令。我们不必在MIPS中执行此操作,因为它可以确定指令是否是解码阶段中的分支和目标。