PC_多模块存储器
文章目录
多模块存储器🎈
- 多模块存储器是一种空间并行技术
- cpu的速度比存储器快,如果同时从存储器中读取n条指令,可以更充分利用cpu资源
- 利用多个结构完全相同的存储模块的并行工作来提高存储器的吞吐率
- 常用的方式有2种
- 将地址分为两部分低地址
单体多字存储器
- 一个存储体的每个存储单元包含m个字(总线宽度也为m字)
- 一次并行读出m个字
- 前提: 地址必须顺序排列并且处于同一个存储单元
- 在一个存取周期内,从同一地址取出m条指令,然后逐送至cpu
- 相当于,1m\frac{1}{m}m1个存取周期cpu就可以取得一条指令
多体并行存储器
- 此处将存储体芯片也称为模块
- 每个模块具有相同的容量和速度
- 假设存储器有m个模块,分别记为M0∼Mn−1M_0\sim{M_{n-1}}M0∼Mn−1
- 每个模块具有k个存储单元
高位交叉编址(顺序存储)
-
程序按照体内地址顺序存放(一个存储体放满后再存入下一个存储体也叫顺序存储)
-
地址结构
-
这种方式通过合理调动,使不用的请求原同时访问不同的存储体,可以实现并行工作
- 例如
- 当一个存储体正在和cpu交换信息时,另一个存储体在通过DMA方式直接和外部设备进行直接存储器访问
- 实现两个体并行工作
- 由于体内地址连续,有利于存储器扩充
-
这种方式依然是串行存取,不能提高存储器的吞吐率
低位交叉编址(交叉存储)
- 多体并行系统:
- 采用多体模块组成的存储器
- 每个模块具有相同的容量和存取速度
- 各模块各自都有独立的
- 地址寄存器MAR
- 数据寄存器MDR
- 地址译码器
- 驱动电路
- 读写电路
- 可以并行工作/交叉工作
- 并行工作:
- 同时访问N个模块,同时启动,同时读出
- 完全并行地工作
- 但是传送的时候,受到数据总线的限制,是串行的传送的(分时传送)
地址结构
-
高地址为存储体的体内地址
-
低地址为存储体的体号
-
通常体内地址位数远远多于体号(地址)(好几个数量级)
-
程序连续地存放在相邻xianglin的模块中(因此,采用此方式编址的存储器也叫交叉存储器)
-
每个模块按照modm\mod{m}modm交叉编址(也称低位交叉编址为模m编址)
-
m是参与编址的存储体模块数
-
通常m是2的方幂,可以使得电路简单
-
m也可以是质数,有利于减少存储器冲突
-
模块号i=单元地址/m模块号i=单元地址/m模块号i=单元地址/m
- KaTeX parse error: Undefined control sequence: \set at position 5: i\in\̲s̲e̲t̲{0,1,\cdots{m-1…
-
地址为0,m,⋯(k−1)m0,m,\cdots{(k-1)m}0,m,⋯(k−1)m(等差数列)的存储单元位于同一个模块M0M_0M0
- 假设每个模块有k个存储字(存储单元)
- Mj[i]=j+i⋅mM_j[i]=j+i\cdot{m}Mj[i]=j+i⋅m
- j∈{1,2,⋯,m}j\in\{1,2,\cdots,m\}j∈{1,2,⋯,m}
- i∈{0,⋯,k−1}i\in\{0,\cdots,k-1\}i∈{0,⋯,k−1}
- 例如:
- 0号存储体的各个单元的地址分配:M0[i]=0+mM_0[i]=0+mM0[i]=0+m
-
| index of Storage Unit | M0M_0M0 | M1M_1M1 | M2M_2M2 | M3M_3M3 |
|---|
| 0 | 0 | 1 | 2 | 3 |
| 1 | 4 | 5 | 6 | 7 |
| 2 | 8 | 9 | 10 | 11 |
| 3 | 12 | 13 | 14 | 15 |
| … | … | … | … | … |
| k−1k-1k−1 | 4(k−1)4(k-1)4(k−1) | 1+4(k−1)1+4(k-1)1+4(k−1) | 2+4(k−1)2+4(k-1)2+4(k−1) | 3+4(k−1)3+4(k-1)3+4(k−1) |
- 采用低位交叉编址方式,可以在不改变每个模块的存取周期的前提下,采用流水线的方式并行存取
流水方式存取
例题
- 假设存取器容量为32字(字长为64bit=8Byte)
- 模块数为m=4
- 分别采用顺序方式和交叉方式进行组织
- 存取周期T=200ns
- 总线传输周期r=50ns
- 在连续读出m个字的情况下,求顺序存储器和交叉存储器各自的带宽
- 分析:
- 读出m=4个字的总数据量为q=4×64=256bitq=4\times{64}=256bitq=4×64=256bit
- 顺序存储器读取时间为t1=mT=4×200=800nst_1=mT=4\times{200}=800nst1=mT=4×200=800ns
- 交叉存储器读取时间:
- 交叉存取度mD=⌈T/r⌉=4m_D=\lceil T/r\rceil=4mD=⌈T/r⌉=4
- 恰好等于给定的模块数m=4
- t2=T+(m−1)r=200+3×50=350nst_2=T+(m-1)r=200+3\times{50=350}nst2=T+(m−1)r=200+3×50=350ns
- 各自的带宽
- W1=q/t1=32×10b/sW_1=q/t_1=32\times{10b/s}W1=q/t1=32×10b/s
- W2=q/t2=73×107b/sW_2=q/t_2=73\times{10^7}b/sW2=q/t2=73×107b/s
相关内容