并行存储器的无冲突访问:二维数组错位存放策略

需积分: 46 2 下载量 72 浏览量 更新于2024-08-21 收藏 300KB PPT 举报
"这篇资料主要讨论了在并行存储器中如何实现无冲突访问,特别是在一个4*5的二维数组在7个存储分体上的存放例子。内容涉及到阵列处理机的设计,以及如何通过行、列、对角线等方式存取数据以避免冲突。" 在并行存储器系统中,尤其是在阵列处理机的环境下,高效率的数据存取是至关重要的。当处理大尺寸的二维数组时,如何进行无冲突访问是一个关键问题。在这个4*5的二维数组例子中,数组被分布在7个存储分体上,这种分布方式旨在优化访问效率并避免访存冲突。 首先,我们了解到访问需求可能包括对数组的行、列或对角线的并行访问。然而,存储器带宽的限制可能导致访问速度无法匹配向量处理的速度,从而产生冲突。为了解决这个问题,可以采用多体交叉存储器设计,这样可以增加存储器带宽,以适应向量处理的需求。此外,通过对向量进行分组操作,可以进一步缓解因存储器带宽不足导致的问题。 对于一维数组,连续访问多个元素时,如果访问步长与数组大小互质,可以避免冲突。例如,访问一个长度为m的一维数组时,选择质数m作为步长,可以使得所有元素都被访问到而不会产生冲突。而在二维数组中,访问同一行或对角线上的元素通常没有冲突,但访问同一列则可能引发冲突,访问效率降低至四分之一。 为了解决二维数组的冲突访问问题,提出了错位存放策略。在n*n的二维数组中,元素的存储地址可以通过体号地址j=(aδ+bβ+c) mod m计算,其中i表示体内地址,a、b为数组下标,δ、β为常数,m为一个质数。这种错位存放方式可以根据不同的δ和β值来实现行、列错开,从而实现无冲突访问。 具体到4*5的二维数组,在7个存储体上的存放示例中,我们可以看到元素按照一定的规则分布在各个体中,如行、列或者对角线元素错开存放,以确保在并行访问时不会产生冲突。通过将二维数组转换成一维数组,可以更直观地理解这种存放策略,并且可以按一维数组的方式处理数据,以达到高效无冲突的访问。 实现并行存储器中的无冲突访问涉及到对数组的合理布局、存储体的组织以及访问模式的设计。通过采用多体交叉存储器、对向量分组操作和错位存放策略,可以在一定程度上克服存储器带宽限制,提高并行处理的效率。