Day-7 Pipeline

Pipeline

tags: IT铁人

Clock Cycle Time

Clock Cycle Time又称为时脉周期,代表电脑里面计时器一个Cycle的时间。在上一回的内容中,我们将CPU组装起来,这时候所有的零件连接在一起,代表要做完所有步骤才会轮到下一个指令,所以一个Cycle的时间就要订成最长的指令时间,也就是说假设每个指令需要的时间为:

指令类型 时间
R-type 400ps
Load word 600ps
Store word 550ps
Branch 350ps
Jump 200ps

那麽我们就要挑最长的600ps当作一个Cycle的时间。

那麽每600ps我们就只能完成一个指令,太慢了。

Pipeline

假设现在有四个人要洗衣服,步骤有洗衣服 30min、烘衣服 40min、摺衣服 20min,如果大家轮流做,并且全部做完才轮到下一个人,那麽就会发生:

不仅时间会拖很久,中间洗衣机及烘衣机都会有很大的时间处於闲置状态,如果我们能够让机器在闲置的时候就交给下一个人使用,那麽时间轴就会变成:

如此一来就可以大幅减少时间,这就是Pipeline的观念,将过程拆成多个Stage来执行,前一个Stage结束後就交给下一个指令进行该Stage。

MIPS Stage

对於MIPS我们拆成5个Stage,分别为

Stage缩写 全名 作用
IF Instruction Fetch 取得指令
ID Instruction Decode & Register Read 指令解码和读取Register
EX Execution or Address Calculation 执行或位址运算
MEM Data Memory Access 记忆体读取
WB Write Back 写回Register

以下用5个Stage划分了Datapath:

由於每个阶段做完不会刚好能马上进行下一阶段,可能发生该Stage已经做完但下一个Stage尚未执行完,所以我们需要在中间加入Pipeline Register来暂时存取前一个结果,加上去後的结果如下图:

如此一来我们能够更快速的执行多个指令,并且一个Cycle的时间也可以取最久的步骤即可,不用取所有的过程,用数字来讨论的话就是:

假设每个步骤的时间为:

IF ID EX MEM WB
> 300ps 400ps 350ps 500ps 100ps

如此一来我们的Cycle Time要取500ps,那麽执行一个指令过了五个步骤後,耗费时间为:
500 x 5 = 2500ps
假设我们用原先一个Cycle执行一个指令,以R-type来说,不会用到MEM部分,所需时间为:
300 + 400 + 350 + 100 = 1150ps

虽然看起来Pipeline比较久,不过如果把指令数量放大来看,假设两边都有N个R-type指令:
对於Pipeline来说,除了最前面4个Cycle没有完成指令外,後面每个Cycle各完成了一个指令,时间为:500 x 4 + 500 x N (ps)
对於没有Pipeline来说,时间为1150 x N (ps)
假设N趋近无限大,Pipeline速度会是Non-Pipeline的两倍以上。

Control Unit

对照前面的图会发现今天的图片还没有Control Unit,接下来就要讨论到了。

上一篇的datapath 今天的

Control Unit要注意的是,在Control Unit判断的事项,可能在後面的Stage才会用到,比如说Register, Memory是否要写入,ALUop的值是多少等等,所以这些Control bits也要塞进去Pipeline Register中,一个Stage一个Stage的传下去,最後的结果会像是这样:

What's next?

够难了吧~不过这还不够,因为Pipeline还会有另一个问题等着我们去解决,那就是Hazard。这部分就留到下一个部分再来烦恼ㄅ,就这样ㄅㄅ。

上一篇 下一篇
Build a CPU Hazard


<<:  Day 5:20. Valid Parentheses

>>:  Day04 - [丰收款] 金流API的起手式,每次沟通都机密

Flask 防止 injection

在写好flask 服务之後,可能会将服务给弱点分析软件进行扫描, 之後会显示出一些高风险的漏洞, 而...

30天学会 Python: Day 6- 你的加法不是你的加法

Python 中的字串和串列有很多相似的性质,可以想成字串是元只能是字元的串列 所以可以用索引和 S...

Day14-hprof文件分析工具:mat(一)

mat介绍 mat全名:Memory Analyzer Tool。这篇要介绍的内容比较例外一点,ma...

资安学习路上-网站常见漏洞与 Injection的爱恨情仇3

资料库类型补充 1. SQL 资料库 结构化查询语言(Structured Query Langua...

MLOps专案关於安全性与合规性的10件注意事项

在ML的专案中,从资料的收集、建构模型、测试到部署到产品。这个流程除了需要自动化之外,也需要保有该行...