找回密码
 注册
关于网站域名变更的通知
查看: 157|回复: 2
打印 上一主题 下一主题

ARM处理器三级流水线与PC,LR的关系

  [复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-5-24 10:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

  H3 y9 p7 u8 W6 L- iARM处理器使用流水线来增加处理器指令流的速度,这样可使几个操作同时进行,并使处理与存储器系统之间的操作更加流畅,连续,能提供0.9MIPS/MHZ的指令执行速度。
! Q6 e9 l  M( i$ N3 O    PC代表程序计数器,流水线使用三个阶段,因此指令分为三个阶段执行:1.取指(从存储器装载一条指令);2.译码(识别将要被执行的指令);3.执行(处理指令并将结果写回寄存器)。而R15(PC)总是指向“正在取指”的指令,而不是指向“正在执行”的指令或正在“译码”的指令。一般来说,人们习惯性约定将“正在执行的指令作为参考点”,称之为当前第一条指令,因此PC总是指向第三条指令。当ARM状态时,每条指令为4字节长,所以PC始终指向该指令地址加8字节的地址,即:PC值=当前程序执行位置+8;
+ j4 [% Z# w2 n2 N; H   ARM指令是三级流水线,取指,译指,执行时同时执行的,现在PC指向的是正在取指的地址,那么cpu正在译指的指令地址是PC-4(假设在ARM状态下,一个指令占4个字节),cpu正在执行的指令地址是PC-8,也就是说PC所指向的地址和现在所执行的指令地址相差8。2 s8 A$ l& S" d
   当突然发生中断的时候,保存的是PC的地址
3 j( ~' A. @( ]7 ^( C   这样你就知道了,如果返回的时候返回PC,那么中间就有一个指令没有执行,所以用SUB pc lr-irq #4。" y. `& v' C6 ~5 H

% s8 o2 o& ]6 v7 r4 {   但是在ADS中PC确实是指向即将执行的指令处,这个是软件处理后的结果,主要是为了用户调试程序方便.# X, i# U3 }  F; |8 p9 f  U! i1 {
  需要注意的是,当前使用指令STM/STR保存R15时候,保存的可能是当前指令地址值+8字节,也可能保存的是当前的指令地址+12字节.到底是哪种,取决于芯片的具体的设计方式。无论如何,在同一芯片中,要么采用当前的指令地址+8,要么采用当前的指令地址+12。因此对于用户来讲,尽量避免使用STM/STR指令来保存R15的值。但是可以在开始的时候用一段程序对芯片的offset进行测试!
2 W9 `# Y+ z& l( x; Z% o- k; N, T: z, ]
代码如下:
6 ?1 y/ v# z& ?0 W$ H/ vSUB R1, PC, #4  ;获得下面的存放下面存放STR指令的地址
6 c1 a4 U$ {- O) u  [& ^( S2 o3 ESTR PC,[R0]
6 A4 z) p' w6 A$ `6 w7 b& [) i9 FLDR R0,[RO]# I, V1 J% S% N
SUB R0, R0, R1
: B6 R; H, N6 O" q! |) ^% |) F$ _8 X7 W0 ?) Z3 \6 O
ARM7中断与PC、LR的问题:# Z% u7 o. e. T, H
1,假设当前是PC,PC-4,PC-8(三级流水)
! d& B( k5 H" M' D- i2,发生IRQ异常,执行保护操作,LR中保存由于FIQ或IRQ占先而没有被执行的指令的地址(即有些资料上把这个地址写成PC或者当前地址,很费解甚至误解)的下一条地址. V8 q& T7 }: N# @
3,清空流水线
  P- A5 A0 n& K( }9 k  p( v/ Z5 d4,进入中断服务程序
+ Z/ ~9 S9 o3 h  S: x- _+ R. K  v5,待流水线填满,执行操作才被重新挂起(解释了ARM7为什么是0.9MIPS)3 U+ v. A2 Z: C! S6 N" U
6,中断返回前,对LR处理,LR=LR-4,指向之前被清空的已译码但没被执行的指令的地址/ [# W5 q- N  s
7,清空流水线,返回. y; N' T5 |' x1 }7 J
8,重新对丢弃的前一次已译码指令取指, [7 B& n+ t5 F8 L6 c1 w
9,待流水线满,开始继续执行

该用户从未签到

推荐
发表于 2022-5-24 14:34 | 只看该作者
能够引起PC发生更新的只有数据访问中止和FIQ和IRQ,其他都不会引起PC更新,但是不同的工作模式下,中断返回执行的地址不一样,这一点 要注意。

该用户从未签到

3#
发表于 2022-5-24 15:53 | 只看该作者
小小的眼睛,大大的疑惑。( |4 \1 O+ i- ]. W+ p! ]0 M
O(∩_∩)O哈哈~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-6-29 17:02 , Processed in 0.078125 second(s), 24 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表