• 内容讲解

1. 存储器的模块化组织

速度和容量是主存储器设计的两大主要课题,计算机的发展对主存储器提出了更高速度和更大容量的要求。如果主存储体由物理上互相分隔的若干个模块构成,并给每个模块配置自己的存储器地址寄存器(MAR)、存储器数据寄存器(MDR)和读写电路,使每个模块都成为一个能独立进行读写操作的存储器,那么就有可能在任一给定时刻对几个模块同时执行读或写操作,从而提高整个主存的平均存取时间。由多个能独立操作的模块所组成的存储器,称为多模块存储器(多体存储器),其地址分配方案有两种:

1)顺序方式

在常规的主存储器设计中,访问地址采用顺序方式,如图3-7所示。CPU送来的主存地址被分成高n位和低m位。主存地址的高n位表示模块号,其模块号为0,1,2,…,2n-1,共2n个,译码后从2n个模块中选中一个模块;主存地址的低m位表示块内地址,m位译码后,选定模块中的一个具体的存储字单元。在一个模块内,程序从低位地址连续存放。这样,当CPU执行对主存连续单元的读写请求时,只有一个模块和CPU进行数据存取操作,其他模块则可停止工作或与外部设备进行直接存储器存取(DMA)操作。

317.gif

顺序方式的优点是可以通过简单地增加模块而方便地扩展系统存储容量,并且一旦发生故障,出现故障的模块仅仅影响存储空间的一个局部区域,其他模块可以照常工作。但在这种结构中,各模块彼此串行工作,存储器带宽受到很大限制,难以有效提高主存速度。

2)交叉方式

多模块存储器的另一种地址分配方案是交叉方式,如图3-8所示。图中的存储器容量为32个字,分成4个模块,每个模块8个字。将4个线性地址0,1,2,3依次分配给M0,M1,M2,M3模块,再将线性地址4,5,6,7依次分给M0,M1,M2,M3模块,……。当存储器寻址时,用地址寄存器的低2位选择4个模块中的1个,而用高3位选择模块中的8个字。

318.gif

主存地址的低n位表示模块号,高m位表示块内地址,使得连续地址分布在相邻的不同模块内,而同一个模块内的地址都是不连续的,容量相同的不同模块各自以等同的方式与CPU交换信息。图中的模块M0,M1,M2,M3采用地址交叉编址方法,即将单元地址依次排在各个模块中,称为模4交叉编址。若有m个模块,则称为模m交叉编址。

由于采用交叉存储编址,对于任何CPU读写访问或与外设DMA传送,只要是对主存连续字的成块传送,就可以实现多模块流水式并行存取,亦即使多个模块在任一时刻同时并行工作,大大提高存储器的带宽(如图3-9所示)。由于CPU的速度比主存快,同时从主存取出多条指令,必然会提高机器的运行速度。

319.gif

CPU访问4个存储体,可以分时启动、分时控制,即每经过 个存储周期T就访问一个模块。在0时刻启动模块M0,在 时刻分别启动模块M1,M2,M3,经T周期后,四个模块就都进入了并行工作状态,各模块在存储周期内互相重叠访问。这样,对每个存储体来说,存储周期是T,而对CPU来说,存储周期为 。在理想情况下,主存的周期缩短为 ,n为模块数,T为每个存储体的存储周期。程序转移及操作数寻址通常会导致对存储器的访问不是按顺序地址,甚至有可能多个地址访问同一个模块,这些都使得交叉存储器的实际有效周期略低于理论上的有效周期,但交叉存储器能大大提高存取速度则是显而易见的。

这种方案也有明显的不足,即任一模块一旦出现故障,都将影响到整个存储器。

2. 多模块交叉存储器的基本结构

图3-10所示为四模块交叉存储器的结构框图。

320.gif

主存被分为4个相互独立、容量相同的模块,每个模块有自己的读写控制电路、地址寄存器和数据寄存器,各自以同等的方式与CPU交换信息。地址码的低位字段经过译码选择不同的模块,而高位字段则指向相应模块内的存储字。连续地址分布在相邻的不同模块内,同一个模块内的地址都是不连续的。

因此,借由交叉存储方式,可以实现对连续字成块传送的多模块流水式并行存取。CPU同时访问4个模块,由存储器控制部件控制它们分时使用数据总线进行信息传递。对每一个存储器模块而言,从CPU给出访存命令直到读出信息仍然使用一个存取周期时间,但对CPU而言,它可以在一个存取周期内连续访问4个模块,各模块的读写过程重叠进行。所以多模块交叉存储器是一种并行存储器结构,可以大大提高存储器的带宽。