免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: jwwzhh
打印 上一主题 下一主题

arm中mov r0, r0的作用是? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2011-07-15 16:12 |只看该作者
等高手啊。

论坛徽章:
0
12 [报告]
发表于 2011-07-15 16:40 |只看该作者
这可能是一个临界问题,如果不加nop,从arm5级流水线来看在"movs pc, lr"执行阶段正好是ldmdb回写寄存器阶段,这条ldmdb指令是恢复user模式下的r0-lr寄存器,movs指令一旦执行就会切回user模式并丢弃之后预取指令,如果ldmdb回写操作和cpu模式切换寄存器恢复操作同时发生就可能在切回user模式后寄存器的值是错误的,如果加了一句nop就能错开这两个操作了。

论坛徽章:
0
13 [报告]
发表于 2011-07-15 18:17 |只看该作者
我也是记得跟ARM三级流水线有关,比如MMU enable前的2条语句就是废语句,无法执行到的,所以就用类似nop来填充。但是中断返回时总是说起lr -4,这里的mov r0 r0后面也还有一条,所以我都不明白了,我认为要么最后2句都废了,不然一条nop也没用

论坛徽章:
0
14 [报告]
发表于 2011-07-15 21:55 |只看该作者
非常感谢12楼,我刚才认真研究了一下,arm的5级流水线结构,确实是这样。这就是为什么加nop指令的真正原因了。谢谢!

论坛徽章:
0
15 [报告]
发表于 2011-07-16 14:59 |只看该作者
为了达到指令流水线平衡,CPU的执行顺序是预取,译码,执行三步,插入一条空指令可以使流水线更加流畅,更加高效

论坛徽章:
0
16 [报告]
发表于 2011-07-18 22:44 |只看该作者
本帖最后由 fei1700 于 2011-07-18 22:56 编辑

回复 12# xzko

完了,我还是不明白,把印象的三级替换成五级,我看的某五级资料写的是回写和执行会错开,那么也就不应该有所描述的问题了?

由于采用冯-诺依曼体系结构,不能够同时访问数据存储器和指令存储器

ldmdb   取指    译码   算地址   访存   回写
add                 取指   译码      执行
movs                        取指       译码   执行
             T1       T2      T3        T4     T5
T5可能冲突,但流水线应该是下面这种吧

ldmdb   取指     译码   算地址   访存   回写
add                 取指                译码             执行
movs                         取指               译码             执行
             T1       T2       T3       T4      T5      T6     T7
多了2个周期,没冲突



图片要怎么显示出来啊

论坛徽章:
0
17 [报告]
发表于 2011-07-19 18:32 |只看该作者
有没有可能是为了设置标记位

论坛徽章:
0
18 [报告]
发表于 2011-07-25 22:25 |只看该作者
我还是顶一下,后来我问的,因为处理器本身已经有做到 执行和会回写不同时,而隔开一个周期,那么为什么还要认为只有mov r0,r0来避免处理器缺陷呢?

不是这个T5时段的冲突
ldmdb   取指    译码   算地址   访存   回写
add                 取指   译码      执行
movs                       取指      译码   执行
             T1       T2      T3        T4     T5

而是下面这个,早就错开了
ldmdb   取指     译码   算地址   访存   回写
add                 取指                译码             执行
movs                         取指               译码             执行
             T1       T2       T3       T4      T5      T6     T7

论坛徽章:
0
19 [报告]
发表于 2011-07-26 10:39 |只看该作者
我还是顶一下,后来我问的,因为处理器本身已经有做到 执行和会回写不同时,而隔开一个周期,那么为什么还要 ...
fei1700 发表于 2011-07-25 22:25


请问关于这句话“处理器本身已经有做到 执行和会回写不同时,而隔开一个周期”,有哪本书或者资料上提到过吗。
另外,你前文里说是冯诺依曼结构,arm处理器不是哈佛结构吗?

论坛徽章:
0
20 [报告]
发表于 2011-07-26 13:33 |只看该作者
回复 19# azzurris


http://wenku.baidu.com/view/b261f0d376a20029bd642de7.html

ARM流水线关键技术分析与代码优化
时间: 2009-03-30 10:15:21 来源:单片机与嵌入式系统  作者:大连理工大学 邱铁 西方 迟宗正

2.1 带有存储器访问指令的流水线
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP