关于数据和处理器位宽不匹配导致的数据跳变问题分析
本问题来源于2023.5.31 上海创景 工程师所作讲座,仅作记录,用于参考。
问题情景
一个64位的数据(类似时钟,不断变化),在输入到32位处理器进行处理后,发现输出的数据并不和输入数据匹配,即出现跳变。
错误分析
32位处理器可以处理64位数据,但是需要将数据分为低32位和高32位处理,也就是产生两个不同的地址,需要两次Load
操作。
Load
操作是一种原子操作,意味着操作时不会被其他中断打断。但两次Load
操作中就有短暂空隙,可能有中断在此时产生,CPU响应。等到CPU重新回到执行第二个Load
操作时,地址内的数据就发生了变化,导致数据不匹配,发生跳变。
解决方法
在执行两次连续Load操作时,可以屏蔽中断操作。
2023-05-31 11:24:47 星期三
标签:Load,跳变,32,处理器,操作,数据 From: https://www.cnblogs.com/68786C/p/17445622.html