由于地址码低位交叉编址,对连续的地址访问将分布在不同的存储体中,避免了存储体访问冲突。理想情况下,存储器的速度可提高n倍。
4.2.4 无访问冲突存储器
实际上,一个由n个存储体组成的低位交叉存储器的速度并不能提高n倍,其根本原因是存在访问存储的冲突。产生访问冲突的根源主要有两个,一是程序中的转移指令,二是数据被访问的随机性,后者的影响更为严重。以一维数组和二维数组为例,介绍一种多维数组的无冲突访问存储器。
4.2.4.1 一维数组的无冲突访问
若采用低位交叉访问方式的并行存储器有4个存储体,交叉存放一维数组的ao,al,a2,…如图4.8 所示。如果每次都按连续地址对数组元素顺序访问,那么一个存储周期可以访问4个存储单元。若按位移量为2的变址方式访存(对下标为奇数或偶数的数组元素进行操作),则有一半的地址发生冲突,使存储器的频宽降低一半。若按位移量为4的变址方式访存,则情况就更糟。但若把存储体的个数n选为质数,变址位移量与n互质,那么,一维数组的访问冲突就不存在了。如存储体的个数n为7,变址位移量为2、4、6、8、…等,这时都不会有访存冲突。