开发者社区> 流楚丶格念> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

五段式指令流水线

简介: 五段式指令流水线
+关注继续查看

机器周期的设置


image


流水线每一个功能段部件后面都要有一个缓冲寄存器,或称为锁存器,其作用是保存本流水段的执行结果,提供给下一流水段使用。


注意


  1. 为方便流水线的设计,将每个阶段的耗时取成一样,以最长耗时为准。即此处应将机器周期设置为100ns。


  1. 理想情况下,每个机器周期(功能段)只消耗一个时钟周期。


步骤


①IF取指


②ID译码&取数


③EX 执行


④M访存


⑤WB写回寄存器


考试中常见的五类指令:


运算类指令、LOAD指令、STORE指令、条件转移指令、无条件转移指令


下面我们对这五个指令进行介绍


常见的五类指令


运算类指令的执行过程


运算类指令


image


  • IF:根据PC从指令Cache取指令至IF段的锁存器


  • ID:取出操作数至ID段锁存器


  • EX:运算,将结果存入EX段锁存器


  • M:空段


  • WB:将运算结果写回指定寄存器


举例:


image.png


注意:


  • Rs指源操作数(source)


  • Rd指目的操作数(destination)


LOAD指令的执行过程


LOAD指令


image


  • IF:根据PC从指令Cache取指令至IF段的锁存器


  • ID:将基址寄存器的值放到锁存器A,将偏移量的值放到Imm


  • EX:运算,得到有效地址


  • M:从数据Cache中取数并放入锁存器


  • WB:将取出的数写回寄存器


举例:


image.png


注意:


通常,RISC处理器只有“取数LOAD”和“存数STORE”指令才能访问主存


STORE指令的执行过程


STORE指令


image


  • IF:根据PC从指令Cache取指令至IF段的锁存器


  • ID:将基址寄存器的值放到锁存器A,将偏移量的值放到Imm。将要存的数放到B


  • EX:运算,得到有效地址。并将锁存器B的内容放到锁存器 Store。


  • M:写入数据Cache


  • WB:空段


举例


image.png


条件转移指令的执行过程


条件转移指令(转移类指令常采用相对寻址


image


  • IF:根据PC从指令Cache取指令至IF段的锁存器


  • ID:进行比较的两个数放入锁存器A、B;偏移量放入 Imm


  • EX:运算,比较两个数


  • M:将目标PC值写回PC(左图没画全)


  • WB:空段


举例:


image.png


注意:


注:通常在IF段结束止之后PC就会自动 +“1”


无条件转移指令的执行过程


无条件转移指令(转移类指令常采用相对寻址)


image


  • IF:根据PC从指令Cache取指令至IF段的锁存器


  • ID:偏移量放入 Imm


  • EX:将目标PC值写回PC(左图没画全)


  • M:空段


  • WB:空段


举例


image.png


例题


例题.假设某指令流水线采用“按序发射,按序完成”方式,没有采用转发技术处理数据相关,并且同一寄存器的读和写操作不能在同一个时钟周期内进行。若高级语言程序中某赋值语句为x=a+b,x、a和b均为int型变量,它们的存储单元地址分别表示为[x]、[a]和[b]。该语句对应的指令序列及其在指令流中的执行过程如下图所示。


image


image


则这4条指令执行过程中I3的ID段和I4的IF段被阻塞的原因各是什么?


解答


I3与I1和I2存在数据相关;
I4的IF段必须在I3进入ID段后才能开始,否则会覆盖IF段锁存器的内容
• 1
• 2
• 3


收获


只有上一条指令进入ID段后,下一条指令才能开始IF段,否则会覆盖IF段锁存器的内容

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
指令流水线影响因素分类
指令流水线影响因素分类
20 0
DevOps之流水线
一站式部署流水线
647 0
深入理解JVM虚拟机1:JVM内存的结构与永久代的消失
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a724888/article/details/77993480 所有的Jav.
1234 0
C#基础知识系列三(类和结构体、String和StringBuilder、equals和==)
前言    这一节主要来了解一下类和结构体之间的异同点、以及针对String和StringBuilder的用法、equals和==,其实可以看出很多地方都用到了上一节的值类型和引用类型、堆栈和装箱拆箱操作吧,慢慢的应用于实践,让理论与实践结合起来。
940 0
LLVM每日谈之十一 编译器相关学习资料推荐
作者:snsn1984 近来碰到一些想学习LLVM但是已经把编译原理的知识还给老师的朋友,让帮忙推荐一些学习资料,我就把手头有的一些资料,大都是自己读过的一些资料整理一下,列出来,希望对大家有所帮助。
1026 0
+关注
流楚丶格念
csdn平台优质创作者,51cto TOP博主,360图书馆科技博主,燕山大学目前大三在读,日拱一卒,功不唐捐,加油!!!
1010
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载