首页
社区
课程
招聘
[求助]CPU乱序执行问题???
发表于: 2015-10-17 10:20 5905

[求助]CPU乱序执行问题???

2015-10-17 10:20
5905
看到一篇关于函数可重入的文章,提到了CPU可能乱序执行。
文章如下:



但偶一直调试的时候发现指令都是一条一条往下执行的。
有什么方法可以调试,单步调试指令的时候看的出这种乱序执行吗???

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 39
活跃值: (2866)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
函数重入是多线程。
你先实现多线程,再在函数首地址设断点,就可以观察到了。
2015-10-17 11:01
0
雪    币: 878
活跃值: (496)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
函数重入, 应该不是LZ所想的指令级别乱序, 而是指多线程.后者开多个线程就可以调试出, 前者估计要借助cpu厂商的特殊工具
2015-10-17 11:03
0
雪    币: 11
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
汇编RDTSC指令
2015-10-17 11:23
0
雪    币: 96
活跃值: (36)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
你的这本书不怎么样,会把人带的走火入魔的,就算加上barrier这个东西也是有bug,虽然我不懂barrier是什么东西
2015-10-17 13:14
0
雪    币: 11
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
CPU的乱序执行是指CPU执行未完一条指令就立即执行下一条指令的功能。如:
1-NOP
2-MOV EAX,[12345678]
3-MOV EBX,87654321
4-XOR EAX,EAX
当执行第二条指令的时候,需要访问内存,而内存的速度远低于CPU,这个时候CPU就要等待,这是不划算的。CPU探测到第二条指令和第三条并不存在依赖关系,先执行第二条还是第三条并不重要,反正结果一样,所以趁着第二条指令访问内存的时候执行第三条指令。这就叫做乱序执行。
2015-10-17 13:49
0
雪    币: 96
活跃值: (36)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
[QUOTE=乙酸乙酯;1397236]CPU的乱序执行是指CPU执行未完一条指令就立即执行下一条指令的功能。如:
1-NOP
2-MOV EAX,[12345678]
3-MOV EBX,87654321
4-XOR EAX,EAX
当执行第二条指令的时候,需要访问内存,而内存的速度远低于CPU,这个时候CPU就要等待,这是不...[/QUOTE]
这个是cpu流水线优化,和LZ遇到的问题有些距离的
2015-10-17 14:22
0
雪    币: 77
活跃值: (2435)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
你想多了,只有一种情况,就是先执行构造函数才会赋值。
2015-10-17 15:38
0
雪    币: 245
活跃值: (93)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
9
单步调试设置TF位,它的工作原理其实是发生一次single step exception,而乱序执行保证,在发生异常的时候现场要和顺序执行一致(至于怎么一致,那就是处理器实现了),所以此时你是看不到一条指令以外的乱序的。
2015-10-18 09:38
0
游客
登录 | 注册 方可回帖
返回
//