1. 单拷贝原子性大小
单拷贝原子性大小定义了一个传输被保证以原子方式更新的数据字节数。
单拷贝原子性大小是为一组通信组件定义的。例如:
- 一个处理器、一个数字信号处理器(DSP)和一个动态随机存取存储器(DRAM)控制器属于64位单拷贝原子组。
- 一个更大的组,包括一个处理器、一个DSP、一个直接存储器访问(DMA)、一个DRAM、一个静态随机存取存储器(SRAM)和外围设备,属于32位单拷贝原子组。
一个传输的单拷贝原子性保证永远不可能大于其起始地址的对齐方式。例如,在一个64位单拷贝原子组中的突发传输,如果不是对齐到8字节边界的,则没有任何64位单拷贝原子性保证。
当写传输更新一个内存位置时,必须保证观察者将看到以下情况之一:
- 位置没有更新。
- 至少一个单拷贝原子性大小数据量的更新。
不允许另一个观察者在某一时间点看到单拷贝原子性大小内的一些数据字节被更新,然后在相同单拷贝原子性大小内的其他数据字节在另一个时间点被更新。
与传输相关联的字节选通信号不影响单拷贝原子性大小。
要求大于单拷贝原子性大小的传输必须至少以单拷贝原子性大小的块更新内存。
注意:
- 在确定单拷贝原子性大小时,不考虑数据值被更新的确切瞬间。必须确保的是,没有任何master可以观察到原子数据的部分更新形式。
- 例如,在许多系统中,像链表这样的数据结构由32位原子元素组成。这些元素的原子更新要求整个32位值同时更新,不允许任何master在某一时间点观察到只有16位的更新,然后在另一个时间点观察到另外16位的更新。
更复杂的系统需要支持更大的原子元素,特别是64位原子元素,以便master可以使用基于这些更大原子元素的数据结构进行通信。
2. 多拷贝原子性
AHB5定义了Multi_Copy_Atomicity(多拷贝原子性)属性。这个属性被定义为指定系统提供多拷贝原子性。
如果Multi_Copy_Atomicity属性被设置为True(真),则定义系统具有此属性。 不支持Multi_Copy_Atomicity属性的系统具有默认值False(假)。
如果满足以下条件,则定义系统是多拷贝原子的:
- 所有设备以相同的顺序观察到对同一位置的写入。
- 除了发起写入的设备外,其他设备也能观察到对某个位置的写入。
可以通过避免使用转发缓冲区来确保多拷贝原子性,转发缓冲区可以使系统中的一些设备看到传输,但并非所有设备都可见。