简单的流水线和超标量架构

问题描述 投票:0回答:1

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

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

假设处理器支持

cisc 和 risc...如 intel 486

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

因此,执行 cisc 指令需要三个时钟周期,并且执行之前的阶段各需要一个时钟周期....

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

那么在简单的流水线情况下,如何避免指令拥塞呢?

cpu-architecture instruction-set instructions pipelining
1个回答
1
投票

从技术上讲,x86 不是 RISC 处理器。 这是一个 CISC 处理器。 有些指令花费的时间更少,但它们不是 RISC 指令。 我相信 Intel 在内部将指令转换为 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 中执行此操作,因为它可以在解码阶段确定指令是否是分支以及目的地。

© www.soinside.com 2019 - 2025. All rights reserved.