我认为如果有问题让你烦恼,那么没有任何问题是愚蠢的。我有一个关于管道流水线的问题。
什么是管道流水线?
理论上说:“使用流水线技术,CPU在第一条指令执行完成之前就开始执行第二条指令。 管道流水线 提高了处理速度,因为CPU不必等待一条指令完成整个机器周期。”
我的问题是,在单处理器系统中工作时,一次只能执行一个指令,那么当我的CPU处于忙碌状态时,如何同时操作获取下一个指令呢?如果我缺乏概念上的清晰性,请为我解释一下。如果有单独的硬件可以实现同时处理,那么这个硬件是什么?请详细说明。
我认为如果有问题让你烦恼,那么没有任何问题是愚蠢的。我有一个关于管道流水线的问题。
什么是管道流水线?
理论上说:“使用流水线技术,CPU在第一条指令执行完成之前就开始执行第二条指令。 管道流水线 提高了处理速度,因为CPU不必等待一条指令完成整个机器周期。”
我的问题是,在单处理器系统中工作时,一次只能执行一个指令,那么当我的CPU处于忙碌状态时,如何同时操作获取下一个指令呢?如果我缺乏概念上的清晰性,请为我解释一下。如果有单独的硬件可以实现同时处理,那么这个硬件是什么?请详细说明。
addi $d, $s, $t
,该指令将存储在由$s
命名的寄存器中的整数与直接编码在指令中的整数$t
相加,并将结果存储在由$t
命名的寄存器中。想一想需要执行哪些步骤才能完成这个任务。下面是一种分解方式(仅供参考,不一定对应真实的硬件):
addi
指令,解析源寄存器、目标寄存器和要添加的整数。addi
指令,则可以:
确实有专门用于获取指令的硬件。这里有一整套分离的硬件,排列成一个流水线。每个部分同时执行一个独立指令的一部分。在每个时钟边沿,一个阶段的结果传递到下一个阶段。
与其试图将一年的大学课程塞进这个文本框,不如让我指向一本教科书,它清晰详细地解释了整个主题:
Hennessy, John L.; 和 Patterson, David A. 计算机体系结构,第五版:定量方法。摩根科芬。
我认为这是在代码中存在分支时使用的,逻辑预测将采取哪个分支,并将该分支的指令预加载到缓存中。如果预测被证明是错误的,则需要放弃这些指令并加载备用指令,导致损失。但我相信代码中有模式,使得预测通常是正确的,特别是现代编译器反复重复模式。
我对实际实现不是很了解,但我并不认为一定需要额外的硬件,尽管它对于最佳速度非常有用。