五段式指令流水线

简介: 五段式指令流水线

机器周期的设置



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


注意


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


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


步骤


①IF取指


②ID译码&取数


③EX 执行


④M访存


⑤WB写回寄存器


考试中常见的五类指令:


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


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


常见的五类指令


运算类指令的执行过程


运算类指令



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


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


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


  • M:空段


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


举例:


image.png


注意:


  • Rs指源操作数(source)


  • Rd指目的操作数(destination)


LOAD指令的执行过程


LOAD指令



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


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


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


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


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


举例:


image.png


注意:


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


STORE指令的执行过程


STORE指令



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


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


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


  • M:写入数据Cache


  • WB:空段


举例


image.png


条件转移指令的执行过程


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



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


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


  • EX:运算,比较两个数


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


  • WB:空段


举例:


image.png


注意:


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


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


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



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


  • ID:偏移量放入 Imm


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


  • M:空段


  • WB:空段


举例


image.png


例题


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




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


解答


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


收获


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

相关文章
|
存储 前端开发 数据可视化
3D激光SLAM:LeGO-LOAM---两步优化的帧间里程计及代码分析
**LeGO-LOAM**的全称是 Lightweight and Ground-Optimized Lidar Odometry and Mapping on Variable Terrain 其中LeGO就是轻量级和利用地面优化,轻量级的实现就是通过两步的优化方式,利用地面优化的部分也在两步优化的第一步中。 和原始LOAM一样,通过前后两帧点云来估计两帧之间的运动,从而累加得到前端里程计的输出,和上述方法使用线面约束同时优化六自由度帧间位姿不同,LeGO-LOAM的前端分成两个步骤,每个步骤估计三自由度的变量。 通过这种方式进行帧间里程计的运算,可以提供运算效率,使得可以在嵌入式平台
3D激光SLAM:LeGO-LOAM---两步优化的帧间里程计及代码分析
|
1月前
|
人工智能 弹性计算 API
阿里云杀疯了!7.9 元解锁 8 款顶尖 AI 编程模型,OpenClaw 终于实现算力自由
OpenClaw/Claude Code 用户Token焦虑终结者!阿里云百炼上线Coding Plan订阅服务,首发7.9元/月起,集成Qwen3.5、GLM-5、Kimi2.5等8款顶级编程模型,按次计费(非Token),Lite/Pro双套餐灵活选择,5分钟极速对接,彻底告别高额账单。
|
9月前
|
网络协议 算法 Java
基于Reactor模型的高性能网络库之Tcpserver组件-上层调度器
TcpServer 是一个用于管理 TCP 连接的类,包含成员变量如事件循环(EventLoop)、连接池(ConnectionMap)和回调函数等。其主要功能包括监听新连接、设置线程池、启动服务器及处理连接事件。通过 Acceptor 接收新连接,并使用轮询算法将连接分配给子事件循环(subloop)进行读写操作。调用链从 start() 开始,经由线程池启动和 Acceptor 监听,最终由 TcpConnection 管理具体连接的事件处理。
295 2
|
8月前
|
机器学习/深度学习 自然语言处理 数据可视化
Python:简洁而强大的通用语言
Python:简洁而强大的通用语言
|
小程序 前端开发 IDE
校园二手书交易小程序源码下载
校园二手书交易小程序有四个模块:首页、发布、消息和我的。用户可以在小程序上进行二手书交易、扫码或者输入ISBN发布二手书、用户之间可以发送聊天消息,同时小程序支持购买书籍后跑腿兼职配送,以及对订单评价等多个特色功能。
549 0
校园二手书交易小程序源码下载
|
算法 编译器 C++
C++20之2025年上桌我坐哪里?
C++20是C++语言的一次重大更新,引入了模块、协程、概念、范围等革命性特性。相比老版本,它显著提高了开发效率、增强了代码可读性和可维护性,并通过优化编译和运行性能提升了整体表现。这些改进推动了现代C++编程范式的发展,帮助开发者应对复杂软件工程挑战。文章回顾了C++发展历程,详细分析了C++20的新特性及其优势,展望了其未来潜力。
484 1
|
Ubuntu 虚拟化 Windows
将Vmware虚拟机磁盘映射到本地实现文件传输
将虚拟机磁盘映射到本地,可以实现文件互传,更方便使用,在开发时可以替代SecureFx等FTP客户端软件
1828 0
|
自然语言处理 开发者 Python
Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档,然后转换成格式丰富的 HTML 内容。Markdown 的语法简洁明了、学习容易,而且功能比纯文本更强。
Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档,然后转换成格式丰富的 HTML 内容。Markdown 的语法简洁明了、学习容易,而且功能比纯文本更强。
|
开发者 C# UED
WPF与多媒体:解锁音频视频播放新姿势——从界面设计到代码实践,全方位教你如何在WPF应用中集成流畅的多媒体功能
【8月更文挑战第31天】本文以随笔形式介绍了如何在WPF应用中集成音频和视频播放功能。通过使用MediaElement控件,开发者能轻松创建多媒体应用程序。文章详细展示了从创建WPF项目到设计UI及实现媒体控制逻辑的过程,并提供了完整的示例代码。此外,还介绍了如何添加进度条等额外功能以增强用户体验。希望本文能为WPF开发者提供实用的技术指导与灵感。
826 0

热门文章

最新文章

下一篇
开通oss服务