什么是流水线?它如何提高执行速度?

mk.*_*k.. 12 architecture assembly arm pipelining

我相信,如果这是在惹你生气,那就毫无疑问是愚蠢的.我有关于管道衬里的问题吗?

什么是管道衬里?

Theory说:" 通过流水线操作,CPU在第一条指令完成之前开始执行第二条指令.流水线操作可以加快处理速度,因为CPU不必等待一条指令完成机器周期."

我的问题是考虑我正在开发一个单处理器系统,一次只能执行一条指令,当CPU忙时,如何同时执行取出下一条指令?如果我缺乏概念清晰度,请对我有所启发.如果有单独的硬件使同时处理发生,它是什么?请解释一下.

jac*_*obm 11

流水线操作与单处理器系统无关.它与在硬件中对在机器上执行单个指令所采取的步骤进行认真思考有关.

想象一下,你想要实现MIPS"add-immediate"指令,addi $d, $s, $t它将存储在寄存器中的整数添加$s$t指令中直接编码的整数中,并将结果存储在名为的寄存器中$t.考虑一下您需要采取的步骤.这是分解它的一种方法(例如,这不一定与真实硬件相对应):

  1. 解析(二进制编码)指令以找出它是哪条指令.
  2. 一旦您认识到它是一条addi指令,就会解析源寄存器和目标寄存器以及要添加的文字整数.
  3. 读取相应的寄存器,并计算其值和立即整数的总和.
  4. 将结果写入命名结果寄存器.

现在请记住,所有这些都需要在硬件中构建,这意味着存在与这些事物相关的物理电路.如果你一次执行一条指令,这些电路的四分之三将处于空闲状态,一直无所事事.流水线技术利用了这一观察结果:如果处理器需要addi连续执行两条指令,那么它可以:

  1. 确定第一个
  2. 解析第一个,并用电路确定第二个,否则这些电路将处于空闲状态
  3. 添加第一个,然后解析第二个
  4. 写出第一个,然后添加第二个
  5. 写出第二个

所以现在,即使每条指令需要4个处理轮次,处理器总共只完成了5轮完成两条指令.

这很复杂,因为有时你必须等到一条指令完成才知道下一条指令要做什么(甚至是下一条指令),但那是基本的想法.


Oli*_*rth 9

确实存在用于获取的单独硬件.有一大堆独立的硬件,排列在一个管道中.每个部分同时执行单独指令的一部分.在每个时钟边沿,一个阶段的结果传递到下一个阶段.


Cra*_*rks 5

我没有尝试将一年的大学课程塞进这个文本框,而是指向一本教科书,详细解释了整个主题:

轩尼诗,John L.; 和帕特森,大卫A. 计算机体系结构,第五版:定量方法.摩根考夫曼