在上述n×n二维数组的并行存储方案中,有1/(n+1)的存储单元是浪费的,这种存储方案实际上浪费了一个存储体。如果不要求同一行中的数组元素按地址顺序存储,则n×n的二维数组实际上只需要用n个并行存储体就能实现按行、列、对角线和反对角线的无冲突访问。这时,并行存储器的利用率最高,没有浪费的存储单元。
|
||||||||||||||||||||||||||||||
图4.20 4×4数组用4个存储体的无访问冲突存储方案 | ||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||
当数组的维数n大于4时,可以把数组划分成多个4×4的子阵。只要每个子阵都能实现按行、列、对角线和反对角线的无冲突访问,则整个数组必然也能实现这种无冲突访问。例如,可以把一个16×16二维数组划分成4个4×4子阵。实际上,在图4.20中的每个2×2子阵也都能实现按行、列、对角线和反对角线的无冲突访问。 |
||||||||||||||||||||||||||||||