- 用于提高 CPU 访问存储器的速度的技术有:双端口存储器技术和多模块存储器技术,都是一种并行技术,前者时空间并行,后者是时间并行。
一、双端口存储器
- 一般是双端口
RAM
,这种RAM
左、右两边都有相互独立的地址线、数据线和读写控制线,允许两个独立的控制器同时异步地访问存储单元;这类存储器在编址时有两种情况:
1、异址编址
- 指的是两个端口使用不同地地址编号,好处就是读写操作不会发生冲突,缺点是同一个芯片由两个地址编号,会造成地址浪费或地址线线数增加一倍。
2、同址编址
- 指的是存储器地两个端口使用同一个地址编号,这样一来两个端口对同一主存操作可能发生如下四种情况:
- 1)两个端口不同时对同一地址单元存取数据。
- 2)两个端口同时对同一地址单元读出数据。
- 3)两个端口同时对同一地址单元写入数据。
- 4)两个端口同时对同一地址单元操作,一个写入数据,另一个读出数据。
- 第 1)和 2)情况不会发生错误,而第三种情况则会出现写入错误;第四种情况会出现读出错误。
为了解决上述可能出现的数据冲突(存储错误或读出错误),设置一个信号BUSY
,并置为0
,由逻辑判断决定暂时关闭一个端口(延时),未被关闭的端口正常访问,被关闭的端口延长一个很短的时间段才能被访问。
二、多模块存储器
- 采用多模块存储器也可以提高处理器对存储器的访问速度,常用的有单体多字存储器和多体低位交叉存储器。CPU 的速度比存储器快,若同时从存储器中取出多条指令,就可以充分利用
CPU
资源,提高运行速度,多体交叉存储器就是在这种思想基础上出现的。
1、单体多字存储器
- 这种存储器中只有一个存储体,每个存储单元储存
m
个字,总线宽度m
个字,地址必须顺序排列并处于同一个存储单元;在一个存取周期内,从同一地址取出m
条指令并逐条送到CPU
执行。 - 优点:增大了存储器的带宽,提高了存储器的工作速度。
- 缺点:指令和数据在主存内必须连续存放,遇到转移指令或操作数不能连续存放,这种方法效果不明显。
2、多体并行存储器
- 指有多个多体模块组成的存储器;每个模块容量和存取速度一样,每个模块有各自独立的控制电路、地址寄存器和数据寄存器。模块之间既能并行工作也能交叉工作。
- 主要有高位交叉编址和低位交叉编址两种多体并行存储器。
2.1、高位交叉
- 高位地址表示体号,低位地址表示体内地址。
- 这种编址方式下,总是把低位的体内地址送到由高位体号确定的模块内进行译码。访问时,先在同一个模块内访问直到访问完该模块再访问下一个模块,按顺序访问各个模块,不能并行访问,因为模块内的地址是连续的,存取方式仍是串行存取,因此这种编址方式并不能提高存储器的吞吐率。
2.2、低位交叉
- 低位地址作体号,高位地址为体内地址,每个模块按“模m”交叉编址,
模块号=单元地址%m
,若有 n 个模块,每个模块右 x 个单元,则0, n, …, (x-1)n
单元位于N0
,第1,n+1,…,(x-1)n+1
单元位于N1
,依次类推。 - 低位交叉编址下,总是把高位的体内地址送到由低位体号确定的模块内进行译码,程序可以连续存放在相邻的模块中。采用低位交叉编址方式的存储器称为交叉存储器。
- 优点:可在不改变模块存取周期的情况下,采用流水线方式并行存取,提高存储器带宽。
- 在模块字长和数据总线宽度一样的条件下:
- 存储器交叉模块应大于等于
m=T/r
m
为交叉存取度,T
为模块存取一个字的周期,r
总线传送周期。连续存取m
个字所需的时间:
t1 = T + (m - 1)r
- 顺序方式连续存取
m
个字的时间:
t2 = mT
例题:
- 设存储器容量
32
个字,字长64
位,模块数m=4
,分别采用顺序方式和交叉方式进行组织;存储周期T=200ns
,数据总线宽度64 位
,总线传输周期r=50ns
,连续读出4
个字的情况下,求顺序存储器和交叉存储器各自的带宽。
解:- 顺序存储器和交叉存储器连续读出 4 个字的信息总量都是:
q = 64 位*4 = 256 位
- 顺序存储器和交叉存储器连续读出 4 个字各自所需的时间:
t1 = mT = 4*200ns = 800ns = 8*10E(-7)s
t2 = T + (m - 1)r = 200ns + 3*50ns = 350ns = 35*10E(-8)s
- 顺序存储器和交叉存储器的带宽分别:
W1 = q/t1 = 256/(8*10E(-7)) = 32 * 10^7 (b/s)
W2 = q/t2 = 73*10^7(b/s)
- 顺序存储器和交叉存储器连续读出 4 个字的信息总量都是: