系列目录
前言
上一章 单周期设计与多周期设计 一章中提到了两种微架构模型。这一章主要会讲解基本流水线的工作原理,控制电路的形式以及功能模块的调度。
在开始这一章之前有必要复习一下计算机性能的指标。指标很简单:对应程序的长度除以执行所花的时间。这里程序的长度定义不是很明确,所以我们通常不会直接使用这个公式。事实上,我们会找一个基准机器和基准程序作为参考,让新机器也运行这个基准程序以获得新机器的执行时间,把这两者之比作为相对指标。这种方法能比较准确的反映出机器的实际性能,但是不适合引导我们进行设计,因为我们至少先得把样机/模拟器做出之后才能做这个测试。通常我们使用Instruction Per Cycle(IPC)来近似表现机器的理想工作性能。
五级流水线
在上一章的末尾的多周期设计中,我们发现了最长一条指令是由5个不一样的小任务顺序执行得来的。这几个任务的名字分别是:取指,译码,计算,访存,写回。在理想状态下,任何两条指令都是独立的互不影响的,可以发现这五个步骤刚好也是互不相关的。这样一来,我们没有必要让一条指令占用所有的功能单元,反而可以让5条不同的指令分别占用所需要的模块以达到加速的效果。
这里有一个误区:在五级流水线里,每条指令都会执行5个周期,而多周期机器里却只有最长的指令才执