一、多模块存储器
因为双端口RAM不考,那老子学408的直接不学!!!节省时间只学【多模块存储器】
为什么要有多模块存储器?他要解决什么问题?(会考概念)
所以记住,【多模块存储器】主要是为了:
1、单体多字存储器
非重点,了解一下即可
总结一下人话:
- 只有【1个存储体】
- 每个存储单元存储m个字(在原本1个存储单元1个字的基础上,把m个小存储单元合并成1个大存储单元)
- 数据总线宽度也为m个字,能1次并行读出m个字
- 每次只能同时取m个字,不能单独取其中某个字
注意缺点:
只有指令和数据在主存中连续存放时,这种方法才能有效提升存取速度;
一旦遇到转移指令、或操作数不能连续存放时,这种方法的提升效果就不明显
(因为每次只能同时取m个字,不能单独取一个字)
然后记一下,跟【位扩展】方式完全相同
2、多体并行存储器
多体交叉存储器由多个存储模块(可理解成多个内存条)构成
- 这些模块的容量和存取速度相同
- 各模块都有独立的读写控制电路、地址寄存器和数据寄存器
- 它们既能并行工作,又能交叉工作
根据对多个模块编址方式的不同又分为以下两种:
- 高位多体交叉
- 低位多体交叉
在这之前我们需要知道一个事情:
- 程序指令通常都是在存储体中【连续存放】的(大部分情况)
- 多体并行存储器的【主存地址】分为【体号(模块地址)】+【体内地址(块内地址)】
- 【体号(模块地址)】就是代表是哪一个存储模块,【体内地址(块内地址)】就是这个模块内一个存储单元的地址(谁在高位、谁在低位,取决于不同的编制方式)
(1)高位多体交叉编址
概念考点
记住考点:
- 【体号(模块地址)】在主存地址的【高位(也就是左边)】!!!!
- 高位多体交叉编址是【顺序存取存储器】,存储方式是【串行访问中的“顺序存取”】:
- 可以发现一个模块存满了之后,【该模块最后的存储单元的主存地址】加1就是【下1个模块的第1个块存储单元的主存地址】,可以看出每个模块都是按顺序连贯着读写的,而不是并行
缺点(原因)
顺序存取的效率很慢,存取周期长。为什么:
- 1、因为【存取周期T】分为【存取时间】+【恢复时间】,假设T=4r,读写花了r,恢复时间花3r,但是因为只有一个再生电路能恢复存储单元,在恢复时间里其他单元也必须干等着上一个存储单元的恢复时间结束才能开始读取
- 2、一个程序的【指令】和【数据】基本分布在同一个主存模块,那么当一直频繁访问一个主存模块时,别的模块处于空闲状态,就没法实现多模块并行工作
由于这种顺序连续访问,导致效率不高,所以这种多模块存储器实际上只是起到了【扩容】的作用(注意:因为扩展多个存储体,因此是按【字扩展】)
耗时计算
访问n个存储字的耗时:【nT】(T是一个存储周期)
(2)低位多体交叉编址
概念考点
记住考点:
- 反过来【体内地址(块内地址)】在主存地址的【高位(也就是左边)】!!!!
- 低位多体交叉编址允许【1个模块的恢复时间】直接访问【下一个模块】(高位多体交叉编址只允许【一个模块按顺序访问完,再访问下一个模块】)
- 采用低位多体交叉编址方式的存储器叫【交叉存储器】
是【随机存储器】- 【宏观上】每个存储周期内所有模块被【并行访问】
【微观上】m个模块被【串行访问】
为提高顺序访问时各存储模块的并行性,低位多体交叉(交叉编址模式)中各存储模块均有独立的:地址寄存器、数据寄存器、读写控制电路
耗时计算
简单来说就是记公式:
访问n个存储字的耗时:【T + (n-1)r】(T是一个存储周期,r是一个读写时隙)
;
至于为什么自己看吧:
(3)应该要几个模块?(几个内存条)
结论:
为啥?自己看:
注意一个模块内【要读一个存储单元】必须等【上一个存储单元恢复时间结束】