目录
一、前言(一些废话)& 单周期CPU传送门
如果还没有实现过单周期的朋友建议先去实践一下单周期再来钻研流水线哦~点击下方链接转至单周期CPU实现过程
单周期CPU传送门
二、流水线特性解析
2.1 为什么我们需要流水线?
单周期CPU的实现从某种意义上来说是为了给流水线CPU打基础,毕竟单周期CPU无论是理论还是工程实现上的意义都不大,将CPU所有的工作全部交给一个时钟周期搞定,未免有些浪费本就珍贵的硬件资源,为了体现分治策略思想,同时更重要的是为了提升CPU的主频以实现更高的性能,在硬件条件不能更改时,流水线是一种非常经典的性能优化策略。
2.2 流水线思想以及示意图
也许我们都知道在一个忙碌的工作间里面,工人们热火朝天地干活,一个工业器件从原料到成品的加工可能要经过多个步骤,设想如果将所有的工作全部堆到一个工人的头上,将是一件多么恐怖的任务,但如果我们将这个加工过程分解,譬如:原料,设计,成形,打磨,质检;并且每个工人只负责一个步骤,那么这项本来很繁重的任务将变得更加轻松。
这就是流水线的思想,和分治思想有着异曲同工之妙,通过分解任务,将原本单周期需要在一个CPU周期内解决的问题分成多个周期解决,大幅度减轻了CPU在单个时钟周期内的工作负担,从而使得CPU完成一个任务所需时间变短,从而使得CPU频率得以提高。
流水线的工作示意图如图1所示
图1
此图中IM为指令存储器,Reg为寄存器堆,DM为数据存储器。
三、理想流水线预备知识
3.1 单周期CPU知识
没有单周期CPU理论知识基础的话,即便设计出流水线也是瞎猫碰到死耗子的巧合罢了,所以基础知识一定要夯实打牢!
3.2 寄存器(触发器)
后序章节中的流水线寄存器之原型,为数字逻辑设计中时序逻辑部分重点内容:触发器;建议充分掌握其理论内容,这里仅简单列出D触发器的部分。
D触发器,最简单的触发器之一,其工作原理是:若第一个时钟周期其输入D改变,则第二个时钟周期其输出Q将跟随D的改变而改变,即输出跟随输入变化而变化,并且在输入D每个周期都变化的基础下,输出Q总是“落后“D”一个时钟周期,并且就像是D的跟屁虫一般对其如影随形,此特性决定了我们要想人为分割一条指令的执行,就必须设置对应的触发器以完成这一时序逻辑电路。
四、理想流水线关键部件 & 划分
4.1 流水线寄存器
我们将CPU的工作划分成5个步骤的工作仅仅是理论层面的,实际在Verilog中需要我们通过一些特殊的模块来实现这个划分功能。
虽然叫“寄存器”,但是其本质仍是触发器,至于存储什么样的内容,则要仔细分析我们对一条指令分割的过程。
4.2 流水线划分
我们可以简单的将一条指令的执行过程分为五个部分(也可以分成更多的部分,这里仅讨论最简单的五级流水线),其实这一划分在单周期CPU设计中就有所体现,这五个阶段分别是:取指、译码、执行、访存、写回;(其中控制单元被放入译码阶段)也就是说在我们的流水线中,可能在某一个CPU周期内,同时有5条指令在进行着不同阶段的处理,不妨拿图1中的例子来说明:
在CC5(CPU clock 5)中,从纵向时间切面来看,流水线此刻有5条指令正在被处理,且第一条指令ld x10, 40(x1)会在下一CPU周期流出流水线,而第六条指令(图中没有列出)将在下一CPU周期流入流水线。同理,在其他的CPU周期里,譬如CC1,此时流水线刚好开始工作,仅有第一条指令流入流水线,而CC
7330




被折叠的 条评论
为什么被折叠?



