arm memory类型分为normal memory和device memory。
normal memory就是我们平常所说的内存,对该种memory访问时无副作用(side effect),即第n次访问与第n+1次访问没有任何差别(对比device memory的side effect特性,更容易理解一些)。
进一步地,通过memory attribute可以对normal memory进行细分,一段vma(virtual memory address)的memory attribute定义在页表的描述符中。【vma应该是linux内核中的概念,而这里讨论的是arm的memory定义,应该是有误的,望指教】
定义: The Device memory type attributes define memory locations where an access to the location can cause side-effects, or where the value returned for a load can vary depending on the number of loads performed. Typically, the Device memory attributes are used for memory-mapped peripherals and similar locations.
简言之,device memory是外设对应的物理地址空间,对该部分memory访问时,可能存在副作用(side effect),比如
进一步地,通过memory attribute可以对device memory进行细分
写入是否可中途返回(Early Write Acknowledgement–EWA)(E or nE)
PE对内存的访问是有问有答的(专业术语叫transaction),对于写入操作,PE需要收到write ack才能确定完成了一个transaction。为了加快写的速度,系统的中间环节可能会设定一些write buffer(比如cache),nE代表写操作的write ack必须来自最终目的地,而不是中间的write buffer。