19
3.2.3 主存储器的基本组成
下图是主存储器的基本组成框图,其中由一个个存储0或1的记忆单元(也称存储元件)构成的存储矩阵(也称存储体)是存储器的核心部分。存储单元进行编号,现代计算机按字节编址。
CPU访问主存过程:
CPU首先把被访问单元的地址送到MAR中;通过地址线将主存地址送到主存中的地址寄存器,以便地址译码器进行译码选中相应单元
CPU将读写信号通过控制线送到主存的读写控制电路
写操作:CPU同时将要写的信息送到MDR中,在读写控制电路的控制下,经数据线将信号写入选中的单元
读操作:主存读出选中单元的内容送到数据线,然后送到MDR中
数据线的宽度与MDR的宽度相同,地址线的宽度与MAR的宽度相同。地址线的位数决定了主存地址空间的最大可寻址范围。例如,36位地址的最大寻址范围为0~236-1,即地址从0开始编号。
例1:某一SRAM芯片,其容量为1024×8位,除电源和接地端外,该芯片的引脚的最小数目为()
按字节(8位)取地址,需要8位数据线;共有1024=210个存储单元,SRAM不复用地址线,需要10位地址线;还需要1片选线,2位读写控制线,共8+10+1+2=21位
例2:某一DRAM芯片,其容量为1024×8位,除电源和接地端外,该芯片的引脚的最小数目为()
DRAM复用地址线,分两次传递地址,地址线减半,需要5位地址线;片选线需要行选通线和列选通线,增加到2根,共8+5+2+2=17
注意SRAM和DRAM的区别,DRAM采用地址复用技术,而SRAM不采用。
3.2.4 双端口RAM和多模块存储器
双端口RAM
双端口顾名思义就是存储器芯片提供两个端口给两个CPU进行访问。
两个端口对同一主存操作有以下4种情况:
1.两个端口不同时对同一地址单元存取数据。成功。
2.两个端口同时对同一地址单元读出数据。成功。
3.两个端口同时对同一地址单元写入数据。写入错误。
4.两个端口同时对局一地址单完,二个写入数据,另一不读出数据。读出错误。
解决办法:
置“忙”信号为0,由判断逻辑决定暂时关闭一个端口(即被延时),未被关闭的端口正常访问,被关闭的端口延长一个很短的时间段后再访问。
单体多字存储器
单体多字系统的特点是存储器中只有一个存储体,每个存储单元存储m个字,总线宽度也为m个字。一次并行读出m个字,地址必须顺序排列并处于同一存储单元。
单体多字系统在一个存取周期内,从同一地址取出m条指令,然后将指令逐条送至CPU执行,即每隔1/m存取周期,CPU向主存取一条指令。这显然提高了单体存储器的工作速度。
缺点:指令和数据在主存内必须是连续存放的,一旦遇到转移指令,或操作数不能连续存放,这种方法的效果就不明显。
多体并行存储器
多体并行存储器由多体模块组成。每个模块都有相同的容量和存取速度,各模块都有独立的读写控制电路、地址寄存器和数据寄存器。它们既能并行工作,又能交叉工作。
多体并行存储器分为高位交叉编址和低位交叉编址两种。
高位交叉编址(顺序方式)
高位地址表示体号,低位地址为体内地址。如图所示,存储器共有4个模块M0~M3,每个模块有n个单元,各模块的地址范围如图中所示。
特点:
高位交叉方式下,总是把低位的体内地址送到由高位体号确定的模块内进行译码。
顺序串行存取。访问一个连续主存块时,总是先在一个模块内访问,等到该模块访问完才转到下一个模块访问,CPU总是按顺序访问存储模块,各模块不能被并行访问,因而不能提高存储器的吞吐率。
低位交叉编址(交叉方式)
低位地址为体号,高位地址为体内地址。
每个模块按“模m”交叉编址,模块号=单元地址%m,假定有m个模块,每个模块有k个单元,则0,m,…,(k-1)m单元位于M0;第1,m+1,…,(k-1)m+1单元位于M1;以此类推。
特点:
低位交叉方式下,总是把高位的体内地址送到由低位体号确定的模块内进行译码。
程序连续存放在相邻模块中,因此称采用此编址方式的存储器为交叉存储器。
采用低位交叉编址后,可在不改变每个模块存取周期的前提下,采用流水线的方式并行存取,提高存储器的带宽。
设模块字长等于数据总线宽度,模块存取一个字的存取周期为T,总线传送周期为r,为实现流水线方式存取,存储器交叉模块数应大于等于
m = T / r m=T/r
m=T/r
式中,m称为交叉存取度。每经过时间延迟后启动下一个模块,交叉存储器要求其模块数必须大于等于m,以保证启动某模块后经过m×r的时间后再次启动该模块时,其上次的存取操作已经完成(即流水线不间断)。这样,连续存取m个字所需的时间为
t 1 = T + ( m − 1 ) r t_1=T+(m-1)r
t
1
=T+(m−1)r
而顺序方式连续读取m个字所需的时间为t 2 = m T t_2=mTt
2
=mT。可见低位交叉存储器的带宽大大提高。
【例】设存储器容量为32个字,字长为64位,模块数m=4,分别采用顺序方式和交叉方式进行组织。存储周期T=200ns,数据总线宽度为64位,总线传输周期r=50ns。在连续读出4个字的情况下,求顺序存储器和交叉存储器各自的带宽。
解:顺序存储和交叉存储器连续读出m=4个字的的信息总量为
q = 64 位 × 4 = 256 位 q=64位×4=256位
q=64位×4=256位
顺序存储器和交叉存储器连续读出4个字所需时间为
t 1 = m T = 4 × 200 n s = 800 n s = 8 × 1 0 − 7 s t 2 = T + ( m − 1 ) r = 200 n s + 3 × 50 n s = 350 n s = 3.5 × 1 0 − 7 s t_1=mT=4×200ns=800ns=8×10^{-7}s\\ t_2=T+(m-1)r=200ns+3×50ns=350ns=3.5×10^{-7}s
t
1
=mT=4×200ns=800ns=8×10
−7
s
t
2
=T+(m−1)r=200ns+3×50ns=350ns=3.5×10
−7
s
顺序存储器和交叉存储器的带宽分别是
W 1 = q / t 1 = 256 / ( 8 × 1 0 − 7 ) = 3.2 × 1 0 8 b / s W 2 = q / t 2 = 256 / ( 3.5 × 1 0 − 7 ) = 7.3 × 1 0 8 b / s W_1=q/t_1=256/(8×10^{-7})=3.2×10^8b/s\\ W_2=q/t_2=256/(3.5×10^{-7})=7.3×10^8b/s
W
1
=q/t
1
=256/(8×10
−7
)=3.2×10
8
b/s
W
2
=q/t
2
=256/(3.5×10
−7
)=7.3×10
8
b/s