嵌入式:ARM的流水线技术
2023-02-18 16:27:05 时间
三级流水线ARM的组织
ARM的3级流水线介绍
到ARM7为止的ARM处理器使用的简单3级流水线分别为
- 取指级 :读取指令。
- 译码级 :对指令进行译码。占有“译码逻辑”,不占有“数据路径”。
- 执行级 :指令占有“数据路径”,寄存器堆栈被读取,操作数在桶式移位器中被移位,ALU产生相应的运算结果,并写回目的寄存器中。并根据需求更改状态寄存器的条件位。
ARM3级流水线下PC的行为
在3级流水线的执行过程中,当通过R15寄存器直接访问PC时,必须考虑到此时流水线的执行过程的真实情况
程序执行时间计算公式
五级流水线ARM的组织
使用5级流水线的ARM处理器包含下面5个流水线级:
- 取指:取指令。
- 译码 :读取寄存器操作数,寄存器堆中有3个操作数读端口,大多数ARM指令能在一个周期内读取其操作数。
- 执行 :把一个操作数移位,并产生ALU结果,如果是Load/Store指令,在ALU中计算存储器地址。
- 缓冲\数据 :如果需要,则访问数据存储器,否则ALU的结果只是简单地缓冲一个时钟周期,以便使得所有指令都有相同的流水线流程。
- 回写 :将指令产生的结果写回到寄存器堆,包括任何从存储器读取的数据。
进一步减少CPI
要改进CPI,必须增加指令存储器的带宽,ARM10TDMI采用64位存储器结构来解决存储器的瓶颈问题。
- 采用转移预测逻辑。可以把时钟频率提高,达到每一时钟周期取2条指令。转移预测单元在流水线的发射阶段之前(在流水线的取指阶段),能识别转移指令,并把它从指令流中移去,从而,尽可能地把转移所引起的周期损失降至零。
- 采用非阻塞(Non-blocking)存取执行。一般的存储器存储加载指令,不能在单一存储器周期中完成。采用非阻塞存取措施,就不会在流水线的执行阶段产生停顿。
- 采用64位数据存储器。这样,允许在每个时钟周期传送2个寄存器的指令存取。ARM10TDMI的寄存器组具有4个读端口和3个写端口。
参考文献:
孟祥莲.嵌入式系统原理及应用教程(第2版)[M].北京:清华大学出版社,2017.
相关文章
- Django框架:11、from组件校验用户数据、渲染标签、展示报错信息、校验参数补充、源码刨析、modelform组件、django中间件
- Django框架:10、Ajax补充说明、多对多三种创建方法、Django内置序列化组件、批量操作数据方法、分页器思路
- Django框架:9、Ajax简介、基本语法、数据编码格式、携带文件数据
- Django框架:8、聚合查询、分组查询、F与Q查询、ORM查询优化、ORM事务操作、ORM常用字段类型、ORM常用字段参数
- Django框架:7、模型层之ORM执行SQL语句、双下划线查询、ORM外键字段的创建、ORM跨表查询
- Django框架:6、模型层之ORM查询关键字、SQL语句转换
- Djiango框架:5、pycharm虚拟环境,视图层之三板斧、JsonResponse对象、request对象、FBV与CBV,模板层之模板语法、模板传值、模板过滤器
- Django框架:4、视图层之路由匹配、转换器、正则匹配、路由反向解析、路由分发、名称空间
- Django框架:3、Django请求生命周期(重要)
- Django框架:2、静态文件配置、form表单、request对象、pycharm链接数据库、django链接数据库、ORM框架
- Django框架:1、手撸web框架、Django框架简介、安装与使用和小白必会三板斧
- 记录在linux上单机elasticsearch8和kibana8
- 《痞子衡嵌入式半月刊》 第 69 期
- 痞子衡嵌入式:对比恩智浦全系列MCU(包含Kinetis/LPC/i.MXRT/MCX)的GPIO电平中断设计差异
- 痞子衡嵌入式:我被邀请做科锐国际旗下数科同道主办的技术沙龙嘉宾
- 痞子衡嵌入式:低功耗&高性能边缘人工智能应用的新答案 - MCXN947
- 《痞子衡嵌入式半月刊》 第 68 期
- 痞子衡嵌入式:我为2021 TencentOS Tiny AIoT应用创新大赛做了场直播培训
- 痞子衡嵌入式:我被邀请做贸泽电子&与非网联合推出的《对话工程师》节目嘉宾
- 痞子衡嵌入式:存储器大厂Micron的NOR Flash芯片特殊丝印设计(FBGA代码)