随着计算机技术的发展,处理的信息量越来越多,对存储器的速度和容量要求也越来越高;而且随着CPU性能的不断提高、IO设备数量不断增加,导致主存的存取速度已经称为了整个计算机系统的性能瓶颈。这就要求我们必须提高主存的访问速度。
1.单体多字存储器
在主存中,程序和数据是连续存放的,所以CPU访问主存取出的信息也是连续的。
如果将存储器的存储单元进行扩展,让它能够存储更多的字,
那么就可以在一个存取周期内,从同一地址取出更多的指令。
这样就相当于增大了主存的带宽,提高了速度。
这种方式是对单独的存储器进行扩展,类似于位拓展的思路,不过是把一个地址对应的数据扩展到了多个存储字。
所以这种结构的存储器被称为单体多字存储器。
例:单体四字,每字W位的存储器,可以在一个存取周期内取出四个字的信息。假设指令字长就是一个存储字,那么带宽则提高了四倍。
对于一体M字存储器:
- 结构特点:存储器中只有一个存储体,每个存储单元存储m个字,总线宽度也为m个字。
- 访问方式:一次并行读出m个字,地址必须顺序排列并处于同一存储单元
- 优点:宽度为单体单字存储器的近m倍
- 缺点:如果发生访问冲突(需要的内容不在同一行)或遇到转移指令,效率会显著降低。
2.多体并行系统
另外一种思路是采用多模块组成存储器,各个模块都有自己独立的MAR、MDR、地址译码/驱动电路和读/写电路,他们能并行工作也可以交叉工作。
并行工作:CPU可以同时访问N个板块,同时启动,同时读出;当然,由于总线是公共的,同时读出的N个字需要在总线上分时传送。
我们可以根据对这N个模块不同的编制方式分为:
- 多体高位交叉存储器
- 多体低位交叉存储器
2.1多体高位交叉存储器
多体高位交叉存储器采用高位交叉方式编址。
高位交叉方式编址:地址分为两部分,高位地址表示体号,低位地址表示体内地址。
一个模块内部的地址都是连续的,程序存储时会按照体内地址的顺序存放
也就是说,我们会先存一个模块,存满了再存下一个。
因此,这种方式我们也叫“顺序存储”。
只要调用合理,使不同的请求访问不同的模块,就可以实现并行工作。
例:CPU访问M0的同时,IO设备去访问另外一个模块,这样两个体就是并行工作的
2.2多体低位交叉存储器
多体低位交叉存储器采用低位交叉方式编址。
低位交叉方式编址:主存地址的低位指明存储器模块,高位指明模块内的字地址。
这种编址方式下,连续的地址分布在相邻的模块中,同一模块内的地址是不连续的,因此也叫做“交叉存储”。有M个模块的低位交叉编址又称为模M编址。
程序按照地址连续存放在相邻模块中,采用低位交叉编址后,可以在不改变每个模块存取周期的前提下,采用流水线方式并行存取、提高存储器的带宽。