在某些体系结构中,处理器可以在单个命令中执行多个内存访问:
- 位字段:设置存储器的某些位;这通常使用read-modify-write实现,具有单独的读写访问。
- 未对齐访问:在某些CPU体系结构中,处理器对访问多字节值时可以使用的地址施加约束,尤其是跨越字边界时。大多数现代处理器没有这个问题,因为它们可以执行多次读取以覆盖所需的地址范围;如果从0x01读取到0x05,则会将其拆分为0x01-0x04和0x05读取。如果你需要在那里写,这就复杂了;与对齐的地址(地址是4的倍数)相比,相同的区域将首先被读取,然后写入,执行所需的3倍的内存操作。 (请记住,在现代CPU上,问题更复杂,因为您有一个非常深的内存层次结构,具有不同的每层对齐约束)。
在这些情况下,操作需要跨越多个内存访问,因此有可能出现竞争条件,因此没有原子性保证。