概述

众所周知,CPU速度远高于主存速度。

CPU表示我带不动你这个队友,所有要做一些事情来让访存更快一些。

采用层次结构Cache-主存

这也是目前广泛使用的结构,经济实用。利用更高速的材料做Cache缓存主存的内容,使得CPU无需和主存通信直接从Cache中获取数据。

调整主存结构

单体多字系统

图片加载失败单体多字系统

假如我的机器字长是8位,我可以用一个32位的数据寄存器,每次从主存中取出32位的数据,这样我一次存取周期就可以取出32位的数据,而不是8位数据。

但是也存在问题,如果要写图一个8位的数据,实际上我是要用8位数据去填充32位的数据寄存器,写入主存的时候也是一次性写入32位,为了避免覆盖掉其他数据,需要对主存的电路进行更改,引入了新的复杂性。

多体并行系统

高位交叉 顺序编址

图片加载失败高位交叉 顺序编址

这种方式可以使得多个存储体并行工作,但是当某个程序执行的时候,因为频繁读取指令,会导致某个存储器一直处于繁忙状态,而其他存储体却相对空闲。

低位交叉 各个体轮流编址

图片加载失败低位交叉 各个体轮流编址

显然这种方式非常适合于当前广泛使用的多级流水线,因为顺序访问的时候会访问到多个存储体,这样多个存储体就可以并行工作。显然也非常契合分离式通信。

图片加载失败并行存取

如上图所示,可以在一个存取周期内启动多个存取操作,当然是在使用分离式通信的情况下。

图片加载失败

上图很容易理解,不用说了。

采用高速器件

如果富得流油,一般可以采用这种方式。

SDRAM

Synchronous Dynamic Random-Access Memory,即同步动态随机存储器。特点是速度非常快,可以和CPU进行同步通信。

RDRAM

已经凉透了,想了解额可以自行查询资料。

带Cache的DRAM(EDRAM)

在DRAM中集成一个小的SRAM,也称增强型的DRAM(EDRAM),特别适合猝发式读取。

猝发式读取:CPU给出不变的行地址和连续变化的列地址,存储器将相应的数据连续取出。

图片加载失败EDRAM结构举例

  1. 当得到一个行地址的时候与上次得到的行地址进行比较。
  2. 如果相同则直接从Cache中读取到相应信息。
  3. 反之则从存储阵列中获取信息且驱动存储阵列刷新Cache。