关于数据和处理器位宽不匹配导致的数据跳变问题分析

发布时间 2023-05-31 11:29:11作者: 青灰色的风

关于数据和处理器位宽不匹配导致的数据跳变问题分析

本问题来源于2023.5.31 上海创景 工程师所作讲座,仅作记录,用于参考。

问题情景

一个64位的数据(类似时钟,不断变化),在输入到32位处理器进行处理后,发现输出的数据并不和输入数据匹配,即出现跳变。

错误分析

32位处理器可以处理64位数据,但是需要将数据分为低32位和高32位处理,也就是产生两个不同的地址,需要两次Load操作。
Load操作是一种原子操作,意味着操作时不会被其他中断打断。但两次Load操作中就有短暂空隙,可能有中断在此时产生,CPU响应。等到CPU重新回到执行第二个Load操作时,地址内的数据就发生了变化,导致数据不匹配,发生跳变。

解决方法

在执行两次连续Load操作时,可以屏蔽中断操作。

2023-05-31 11:24:47 星期三