从MOV PC,PC;看ARM的三级流水线过程

发布者:SereneSerenity最新更新时间:2016-03-31 来源: eefocus关键字:ARM  流水线过程 手机看文章 扫描二维码
随时随地手机看文章
乍看这个指令好像是NOP;实际上远远不是,他实现的功能是跳转到当前指令下面第二条指令处执行:

原因是PC寄存器中存储的是当前指令的地址+8,当人为改变PC寄存器的值之后,程序会跳转执行,这样,这条命令之后,假设这条命令的地址为X,那么PC在执行这条命令之后为X+8,

之后周期开始fetch X+8,

下一个周期开始decode X+8同时fetch X+12,

再一个周期开始excute X+8,同时decode X+12,同时fetch X+16,

这时候PC的值已经变成X+16, 也就是正在执行的X+8再加上8,如此继续。。。

实现同样目的的还有 ADD PC,PC,#0;当然B PC也可以,但是没有前者来的快速。

请高手看看这样理解是否正确?

+======以下为转载==========

看到汇编中很多关于程序返回与中断返回时处理地址都很特别,仔细想想原来是流水线作用的效果。所以,决定总结学习下ARM流水线。

ARM7处理器采用3级流水线来增加处理器指令流的速度,能提供0.9MIPS/MHz的指令处理速度。

PS:

MIPS(Million Instruction Per Second)表示每秒多少百万条指令。比如0.9MIPS,表示每秒九十万条指令。

MIPS/MHz表示CPU在每MHz的运行速度下可以执行多少个MIPS,如0.9MIPS/MHz则表示如果CPU运行在1MHz的频率下,每秒可执行90万条指令。

如果CPU在20MHz的频率下,每秒可运行1800万条指令。MIPS/MHz可以很好的反映CPU的速度。

3级流水线如上图所示(PC为程序计数器),流水线使用3个阶段,因此指令分3个阶段执行。

⑴ 取指从存储器装载一条指令

⑵ 译码识别将要被执行的指令

⑶ 执行处理指令并将结果写会寄存器

以前学过的51单片机,因为比较简单,所以它的处理器只能完成一条指令的读取和执行后,才会执行下一条指令。这样,PC始终指向的正在“执行”的指令。

而对于ARM7来说因为是3级流水线,所以把指令的处理分为了上面所述的3个阶段。

所以处理时实际是这样的:ARM正在执行第1条指令的同时对第2条指令进行译码,并将第3条指令从存储器中取出。

所以,ARM7流水线只有在取第4条指令时,第1条指令才算完成执行。

下图生动形象的说明了3级流水线的处理机制

下面一句话很关键:无论处理器处于何种状态,程序计数器R15(PC)总是指向“正在取指”的指令,而不是指向“正在执行”的指令或者正在“译码”的指令。

人们一般会习惯性的将正在执行的指令作为参考点,即当前第1条指令。

所以,PC总是指向第3条指令,

或者说PC总是指向当前正在执行的指令地址再加2条指令的地址。

 

处理器处于ARM状态时,每条指令为4个字节,所以PC值为正在执行的指令地址加8字节,即是:

PC值 = 当前程序执行位置 + 8字节

处理器处于Thumb状态时,每条指令为2字节,所以PC值为正在执行的指令地址加4字节,即是:

PC值 = 当前程序执行位置 + 4字节

下面一个例子就很好的说明了这个问题。

  1. 0x4000 ADDPC,PC,#4 ;正在被执行的指令,将地址值PC+4写入PC 
  2. 0x4004 ...;正在被译码的指令 
  3. 0x4008 ...;正在被取指的指令,PC=0x4008 
  4. 0x400C ...;PC+4=0x400C 

另外补充说明就是根据以上描述,流水线只有被指令填满时才能发挥最大效能,即每时钟周期完成一条指令的执行(仅单周期指令)。

如果程序发生跳转,流水线会被清空,这将需要几个时钟才能使流水线被再次填满。因此,尽量地少使用跳转指令可以提高程序的执行效率

    这样你就知道了,如果返回的时候返回PC,那么中间就有一个指令没有执行,所以用SUB pclr-irq #4。

关键字:ARM  流水线过程 引用地址: 从MOV PC,PC;看ARM的三级流水线过程

上一篇:ARM指令中的立即数
下一篇:ARM 内核SP,LR,PC寄存器

推荐阅读最新更新时间:2024-03-16 14:48

ARM笔记:虚拟机Linux系统和开发板通过USB转串口连接的方法
一、让虚拟Linux系统直接和物理串口相连 1. 启动虚拟机,进入Linux系统,点击虚拟机菜单栏的【虚拟机】选项, 接着点击【移除设备】接着选择【prolific USB-serial Controller】 选择【与 主机 连接或断开连接】 通过以上操作可以让USB转串口设备与主机断开连接,即让USB转串口设备直接和虚拟机内的Linux系统直接连接,通过以上操作,Linux系统内/dev目录下会出现一个ttyUSB0的字符设备文件,接着我们在minicom串口通信工具中配置,具体如下: 选择【Serial port setup】设置串口 输入【a】选择串口驱动,写入刚才出现的串口控制终端文件/dev/ttyU
[单片机]
<font color='red'>ARM</font>笔记:虚拟机Linux系统和开发板通过USB转串口连接的方法
Xilinx、Arm、Cadence和台积公司构建全球首款7纳米CCIX测试芯片
集微网消息,赛灵思、Arm、Cadence和台积公司今日宣布一项合作,将共同构建首款基于台积7纳米FinFET工艺的支持芯片间缓存一致性(CCIX)的加速器测试芯片,并计划在2018年交付。这一测试芯片旨在从硅芯片层面证明CCIX能够支持多核高性能Arm CPU和FPGA加速器实现一致性互联。 出于功耗及空间方面的考虑,在数据中心内对应用进行加速的需求日益增长,诸如大数据分析、搜索、机器学习、4G/5G无线、内存内数据处理、视频分析及网络处理等应用,都已受益于可在多个系统部件中无缝移动数据的加速器引擎。CCIX将支持部件在无需复杂编程环境的情况下,获取并处理位于任何地方的数据。 CCIX将利用现有的服务器互连基础架构,实现对共享内
[手机便携]
ARM9 S3C2440—中断和定时器的初始化配置
ARM9 S3C2440的寄存器特别多,这也是它和单片机不同处之一,对ARM的编程主要也是对寄存器的操作,可是寄存器多了以后,就很容易忘记对某个寄存器的设置,如果能够总结一下寄存器配置的步骤,使得其有章可循,那么应用的时候就可以对号入座了。如果长时间不去使用ARM的话,再次使用的时候重新翻看烦人的芯片用户手册,显得就浪费时间了,这样,趁着熟悉的时候记录下这些要点,以后稍加翻看就能唤起记忆,这也是自己写这些博客的缘由。 定时器初始化配置步骤主要有: 1、rTCFG0和rTCFG1的设置 首先要设置定时器的时钟频率, Timer input clock Frequency= PCLK / {prescaler va
[单片机]
ARM为多核SoC 开发提供优化的调试和追踪解决方案
    ARM公司近日宣布针对复杂片上系统(SoC)设计推出高度可配置的调试和追踪解决方案 ARM CoreSight SoC-400。随着多核产品的日益普及,ARM CoreSight SoC-400提供了一个系统解决方案,为包括移动电话、平板电脑、家庭、无线基础设施、网络和游戏在内的各种应用提供高性能。为实现最优性能,软件开发人员在SoC设计方面需要更高的可视性。CoreSight SoC-400提供强大的、模块化的调试和追踪基础结构以及工具链,来满足这一需求。另外,CoreSight SoC-400能够帮助SoC设计人员提高生产效率并缩短新产品上市时间。     TI无线业务部门调试技术产品经理Stephen Lau表示:“
[手机便携]
基于ARM双内核的平台化网络产品设计
新兴的无线连接技术促使更多产品向新一代商务及家庭网络应用方向发展。因此,网络市场中的用户终端设备(CPE:customer premises equipment)部分,也正朝着消费市场的状态转变。 CPE产品的成功,需要由一个设计平台及灵活的产品开发流程来支撑,以满足各种新兴网络协议的性能需求,加快研发进程,最终提供经济而节能的终端产品。 图1网络市场中设备数量分布 技术发展动力 对网络设备而言,日益增长的带宽需求是最为显著的技术发展动力。曾有人指出带宽正以类似于摩尔定律的方式增长,如:客户端的带宽每18-24个月增加一倍,而核心/光纤带宽约每8月增长一倍 。   然而,日益增长的带宽需求并不
[单片机]
基于<font color='red'>ARM</font>双内核的平台化网络产品设计
Arm任命 Rene Haas为新任首席执行官
新闻重点: • Rene Haas接任 Simon Segars成为Arm首席执行官,并加入Arm董事会 • Rene Haas将带领公司加速增长,为IPO进行准备工作 2022年2月8日,英国剑桥——Arm今日宣布其董事会已经任命Rene Haas成为新任首席执行官,并加入董事会。此项人事任命即刻生效。Rene Haas拥有35年丰富的半导体行业经验,他将接任已为Arm服务30年的原首席执行官与董事会成员的Simon Segars。短期内,Simon Segars仍将担任公司的顾问,支持领导层交接工作。 软银集团董事长兼首席执行官孙正义表示:“在Arm准备重新上市的阶段,Rene是带领Arm加速增长的合适领导
[嵌入式]
赛普拉斯宣布支持Arm平台安全架构(PSA)的Trusted Firmware-M
先进 嵌入式解决方案的领导者赛普拉斯半导体公司(纳斯达克代码:CY)近日宣布,推 出 基于PSoC®6 MCU的支持Arm®平台安全架构(PSA)Trusted Firmware-M的参考实例,是符合PSA标准的最高级别保护能力的解决方案。通过利用PSA全套威胁模型、安全分析、硬件和固件架构规范以及Trusted Firmware-M设计参考,物联网(IoT)设计人员可以快速、轻松地使用PSoC 6 MCU实现安全设计。 Arm物联网设备IP业务部副总裁兼总经理 Paul Williamson 表示:“互联设备正在快速发展,为了真正实现这些技术所带来的效益,安全性不可忽视。在广大物联网应用中实现安全的MCU开发是
[物联网]
赛普拉斯宣布支持<font color='red'>Arm</font>平台安全架构(PSA)的Trusted Firmware-M
基于MAX194在ARM单片机系统中的设计
火力发电厂和大型工业锅炉,通常采用向炉水中添加少量磷酸盐以防止钙、镁水垢的生成,磷酸根浓度不够,不能有效防止结垢,磷酸根离子含量过高,会导致炉水的pH值变高。因此磷酸根离子浓度是炉水检测的重要参数。ARM处理器具备高性能、低功耗、低成本等优点,将其应用于在线磷酸根离子分析仪的管理控制系统,可以提高磷酸根分析仪的处理速度和精度。 1 结构及测量原理简介 磷酸根离子分析仪整体结构包括光路系统、水路系统和管理控制系统三个部分。 光路系统主要包括:专用的单色LED冷光源、比色皿和光电传感器。 水路系统由比色皿、柱塞泵、多通道切换阀、流通池、样水/标液切换阀、流量计、排污阀、溢流管等组成。 利用化学吸光法原理,即在一定的
[单片机]
基于MAX194在<font color='red'>ARM</font>单片机系统中的设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved