ARM流水线技术

ARM流水线技术nbsp ARM 流水线技术 nbsp nbsp nbsp nbsp 流水线技术通过多个功能部件并行工作来缩短程序执行时间 提高处理器的效率和吞吐率 ARM7 是冯 诺依曼结构 采用了典型的三级流水线 而 ARM9 则是哈佛结构 采用五级流水线技术 而 ARM11 则更是使用了 7 级流水线 通过增加流水线级数 简化了流水线的各级逻辑 进一步提高了处理器的性能 nbsp nbsp nbsp nbsp 在 ARM7 中 执行单元完成了大量的工作 包括与操作数相关的寄存器和

 

ARM流水线技术

      流水线技术通过多个功能部件并行工作来缩短程序执行时间,提高处理器的效率和吞吐率。ARM7是冯·诺依曼结构,采用了典型的三级流水线,而ARM9则是哈佛结构,采用五级流水线技术,而ARM11则更是使用了7级流水线。通过增加流水线级数,简化了流水线的各级逻辑,进一步提高了处理器的性能。

      在ARM7中,执行单元完成了大量的工作,包括与操作数相关的寄存器和存储器的读写操作、ALU操作和相关器件之间的数据传输,因此占用了多个时钟周期。ARM9增加了两个功能部件,分别访问存储器并写回结果,同时,ARM9将读寄存器的操作转移到译码部件上,使得流水线各部件的功能更平衡。

三级流水线的最佳运行图

ARM流水线技术

五级流水线的最佳运行图

ARM流水线技术

      在执行的过程中,通过R15寄存器直接访问PC的时候,必须考虑此事流水线执行过程的真实情况。程序计数器R15PC)总是指向取指的指令,而不是指向正在执行的指令或者正在译码的指令。一般情况下,人们总是习惯把正在执行的指令作为参考点,称之为当前第1条指令,因此PC总是指向第3条指令。

对于ARM状态下指令,PC=当前程序执行位置+8;对与Thumb指令,则PC=当前程序执行位置+4.

 

      三级流水线有它的缺点,当出现多周期指令、跳转分支指令和中断发生的时候,流水线都会发生阻塞,而且相邻指令之间也可能因为寄存器冲突导致流水线阻塞,降低流水线效率。

带分支情况下:

      当指令序列中含有具有分支功能的指令(BL)时,流水线也会被阻断,如图3所示。分支指令在执行时,其后第1条指令被译码,其后第2条指令进行取指,但是这两步操作的指令并不被执行。因为分支指令执行完毕后,程序应该转到跳转的目标地址处执行,因此在流水线上需要丢弃这两条指令,同时程序计数器就会转移到新的位置接着进行取指、译码和执行。此外还有一些特殊的转移指令需要在跳转完成的同时进行写链接寄存器、程序计数寄存器,如BL执行过程中包括两个附加操作——写链接寄存器和调整程序指针。这两个操作仍然占用执行单元,这时处于译码和取指的流水线被阻断了。

中断流水线

      处理器中断的发生具有不确定性,与当前所执行的指令没有任何关系。在中断发生时,处理器总是会执行完当前正被执行的指令,然后去响应中断。如图4所示,在Ox90000处的指令ADD执行期间IRQ中断发生,这时要等待ADD指令执行完毕,IRQ才获得执行单元,处理器开始处理IRQ中断,保存程序返回地址并调整程序指针指向Oxl8内存单元。在Oxl8处有IRO中断向量(也就是跳向IRQ中断服务的指令),接下来执行跳转指令转向中断服务程序,流水线又被阻断,执行0x18处指令的过程同带有分支指令的流水线。

 ARM流水线技术

      五级流水线也有它的缺点,即使存在一种互锁,即寄存器冲突。读寄存器是在译码阶段,写寄存器是在回写阶段。如果当前指令(A)的目的操作数寄存器和下一条指令(B)的源操作数寄存器一致,B指令就需要等A回写之后才能译码。这就是五级流水线中的寄存器冲突。

虽然流水线互锁会增加代码执行时间,但是为初期的设计者提供了巨大的方便,可以不必考虑使用的寄存器会不会造成冲突;而且编译器以及汇编程序员可以通过重新设计代码的顺序或者其他方法来减少互锁的数量。另外分支指令和中断的发生仍然会阻断五级流水线。

 

 [1] ARM流水线关键技术分析与代码优化

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/231146.html原文链接:https://javaforall.net

(0)
上一篇 2026年1月25日 下午4:01
下一篇 2026年1月25日 下午4:22


相关推荐

  • linux 同步北京时间 局域网同步时间

    linux 同步北京时间 局域网同步时间如果不是北京时间先改成北京时间1.删除自带的localtimerm-rf/etc/localtime2.创建软链接到localtimeln-s/usr/share/zoneinfo/Asia/Shanghai/etc/localtime在同步时间方法一:使用ntpdate比较简单安装ntpdateyuminstallntpdatentpdate…

    2022年7月16日
    17
  • 古代文人一种无拘无束的自由心态

    古代文人一种无拘无束的自由心态

    2021年7月28日
    60
  • 关系型和非关系型数据库的区别

    关系型和非关系型数据库的区别转载自 https blog csdn net longxingzhiw article details 当前主流的关系型数据库有 Oracle DB2 MicrosoftSQL MicrosoftAcc MySQL 等 非关系型数据库有 NoSql Cloudant nosql 和关系型数据库比较 优点 1 成本 nosql 数据库简单易部

    2026年3月17日
    2
  • 最新面试题汇总(附带答案)【建议看看】

    最新面试题汇总(附带答案)【建议看看】1.性能测试关注的指标是什么?从外部看,性能测试主要关注如下三个指标:吞吐量:每秒钟系统能够处理的请求数、任务数响应时间:服务处理一个请求或一个任务的耗时错误率:一批请求中结果出错的请求所占比例从服务器的角度看,性能测试主要关注CPU、内存、服务器负载、网络、磁盘IO等。2.性能测试怎么做的?/如果你要进行性能测试,你是如何展开操作的?1.确定关键业务,关键路径;2.确定测试的关键数据。比如并发量,响应时间,循环次数等;3.准备测试环境,完成脚本录制或脚本开发;4.执行测试,观察或监控

    2026年4月16日
    4
  • asp.net dropdownlist的值怎么设置_redis skiplist

    asp.net dropdownlist的值怎么设置_redis skiplistList productlist = ProductAdapter.Instance.GetList();dlproductname.DataSource = productlist;dlproductname.DataTextField = “ProductName”;dlproductname.DataValueField = “id”;dlproduc

    2022年10月8日
    5
  • 腾讯旗下有哪些产品线

    腾讯旗下有哪些产品线

    2026年3月13日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号