目录
一、多级存储系统
概念
多级存储系统是指将多级存储器结合起来的一种方式
概念辨析
- 多级存储器指多个级别的存储器,包括寄存器、cache、主存、辅存
作用
要讨论多级存储系统的作用必须首先建立一个参考对象
多级存储系统的好处有:
- 以全部使用低级存储器为参考,速度快(或解决了CPU与较低速存储器速度不匹配)
- 以全部使用高级存储器为参考,容量大,成本低
透明性
- 主存和cache之间的数据调用是由硬件自动完成的,对所有程序员透明
- 主存和辅存之间的数据调用是有操作系统参与的,因此仅对应用程序员透明,对系统级程序是不透明
cache-主存结构的性能评价指标
主要有命中率、平均访存时间、效率三个指标
- 命中率 = 命中 c a c h e 的次数 访问总次数 命中率=\frac{命中cache的次数}{访问总次数} 命中率=访问总次数命中cache的次数
- 平均访存时间=cache和主存存取周期的加权平均,权为命中率
- 效率 = c a c h e 存取周期 平均访存时间 效率=\frac{cache存取周期}{平均访存时间} 效率=平均访存时间cache存取周期
二、多模块存储器
概念
多模块存储器是一种空间并行技术,利用多个结构完全相同的存储模块的并行工作来提高存储器的吞吐率。常用的有单体多字存储器和多体低位交叉存储器
概念辨析
- 模块:指一个存储单元中的存储字长与机器字长相等的一个逻辑体
- 目的:提高存储器吞吐率(单位时间内实际上被取走的数据量)
- 各模块的结构需要完全相同
引入多模块存储器的原因
- CPU向单模块主存发起一次数据访存操作的时候,一个访存周期
T
c
T_c
Tc=访存时间
T
a
T_a
Ta+恢复时间
T
r
T_r
Tr,也就是说在一个访存周期内无法进行第二次访问,想要在同样时间内从主存取出更多的数据,就需要引入多模块存储器技术
- 单体多字存储器的思路是:既然在一个访存周期内只给一次取数据的机会,那就一次尽可能的多取一些数据出来。不过这样势必需要增加总线位宽和逻辑上增大存储字长,也就是划分更大的区域为新的一个存储字长
- 多体并行存储器的思路是:既然在一个访存周期内只给一次取数据的机会,那么就同时从不同的模块那里取数据
根据 存取周期数 计算 向CPU提供数据位数
- 根据 存取周期数 计算 发送的数据bit数时,以流水线的方式考虑,即不考虑末尾的一个完整T
- 根据 发送的bit数 计算 需要的存取周期数时,要考虑末尾的一个完整T
字扩展 和 多模块高位交叉编址 的区别和联系
- 联系:二者看上去都像是多块芯片并在一起,然后顺序编址
- 区别:
- 维度不同:字扩展是把多个芯片拼在一起变成一个模块;高位交叉是把多个模块拼在一起
- 访问权限不同:字扩展中同一时间只能有一块芯片在传送数据;高位交叉中同一时间可以有多个模块在传送数据
- 译码器个数不同:字扩展中多块芯片共用一个译码器,因此所有芯片的恢复期是同步的;高位交叉中每个模块都有自己的译码器,当一个模块进入恢复期的时候,其他的模块还可以工作。译码器个数的不同造成的恢复期的差异是字扩展和高位交叉最根本的区别
三、主存与CPU的连接
概念
主存储器和CPU的接线
概念辨析
主存指主存储器,下面的所有内容都是以单模块存储为前提的
连接过程中对于主存来说的几种线
- 地址线:接CPU的低位地址线
- 如果在多模块存储器体系中,这里的CPU的“低位地址线”指的是除了表示体号的最低几位之后剩下的“低位”
- 数据线:接数据总线
- 注意:存储器的数据线数必须和CPU的数据线数相等,如果不相等的话有两种解决措施:
- 进行位扩展 或 继续进行位扩展 :直到扩展到存储器的数据线数(即存储字长)等于CPU的数据线数
- 采用多体并行存储器:每次读写都同时启动多个模块,以凑足数据总线宽度
- 字扩展解决不了这个问题
- 注意:存储器的数据线数必须和CPU的数据线数相等,如果不相等的话有两种解决措施:
- 读写命令线:有时1条线,有时两条线
- 片选线:接CPU的高位地址线
- 片选线的连接是关键,片选线可能有好几根
- 对于CPU来说,和片选线连接的仅仅是高位地址线而已,表示的是地址空间,因为“片”这个概念对于CPU来说是透明的
- 顺带一提,对于“片选”中的“片”的理解:无论多少个芯片进行位扩展,扩展后依然只是一个“片”
四、一次搞懂 寻址、编址、寻址范围、寻址空间、寻址能力,CPU支持的最大内存、计算机支持的最大内存、主存地址空间
- 寻址空间 和 寻址能力 和 主存地址空间 和 CPU支持的最大内存 是同义词,指的是CPU所能寻找的最大地址空间,仅取决于CPU中地址线的个数n,即寻址空间=主存地址空间=寻址能力= 2 n 2^n 2n×寻址单元大小,如CPU中有16根地址线,按字节寻址(8bit),则寻址空间= 2 16 × 8 b i t 2^{16}×8bit 216×8bit=64KB,另外,MAR的位数决定了寻址空间,也即MAR位数、CPU地址线个数、寻址空间三个概念是相互绑定的,只有其中一个确定,另外两个就是确定的
- 寻址范围 指的是CPU实际所能寻找的最大地址范围,取决于CPU寻址空间和实际内存大小中的较小值,一般情况下就取决于实际内存大小,计算方式为 寻址范围=0~ 实际内存大小 寻址单元大小 \frac{实际内存大小}{寻址单元大小} 寻址单元大小实际内存大小
- 计算机支持的最大内存 指的是在经过 CPU支持的最大内存 的限制后,又经过操作系统和主板的限制,最后这台机器实际支持的最大内存,决定因素较为复杂
- 编址:内存划分编址单元的方式(非存储单元),即连续地址空间中每个地址值的唯一对应一个编址单元,如按字节编址是指地址号0001H到地址号0002H之间有1个字节即8bit的空间,再如按字编址(假设存储字是32位)指的是地址号0001H到地址号0002H之间有1个存储字即32位的空间。现代计算机一般都采用按字节编址
- 寻址:CPU按照地址号去内存中找到想要的数据和指令的过程,比如一个同样的地址54FC5421H,按字寻址是指该地址号的单位是一个字,按字节寻址是指该地址号的单位是一个字节
- 寻址和编址的关系:一般来说,寻址和编址的单元是相同的,这时CPU里的地址号可直接对应一个内存中的单元,然后取出那个单元所在的一整个机器字长。假如寻址和编址的单元不相同,这时候CPU里的地址号需要经过转换才能到内存里面找数据,比如如果按字节编址,按字(字长32位)寻址的话,CPU中的0001对应的是1号字,转换过去到内存中则是0004即4号字节
五、快速计算一个存储器的数据线数和地址线数的方法
首先,一个存储器的容量表达式可以写成4MB,16Kb等形式,这种时候是不知道该存储器的具体组织的,因此也确定不了数据线数和地址线数,因此需要使用其它条件推出容量表达式为4M×32b,5K×16B等形式,下面以n×aB表示
数据线数
- 数据线数=8bit/B × aB=8a条
- 注意,任何情况下,aB都是和存储字长唯一绑定的,aB一定是存储字长,也和MDR位数绑定
地址线数
- 地址线数的计算方法稍微复杂一些,因为既然是地址那就涉及到编址问题,首先要把乘号后面的部分化成和编址单元一样大,比如4M×32b的存储器,按字节寻址,要求地址线数那就要先写成16M×8b,然后地址线数= l o g 2 ( 16 M ) log_2(16M) log2(16M)条
六、计算MAR和MDR位数
MAR
- CPU地址线个数为n,则MAR位数= n n n
MDR
- MDR位数=存储字长
七、
杂项
- DRAM采用地址复用技术,而SRAM不采用
- 存储器可以分为3类:
- RAM=Random Access Memory 随机存取存储器 或 随机存储器
- SRAM=Static Random Access Memory
- DRAM=Dynamic Random Access Memory
- ROM=Read-Only Memory 只读存储器
- MROM=Mask Read-Only Memory
- PROM=Programmable Read-Only Memory
- EPROM=Erasable Programmable Read-Only Memory
- EEPROM或 E 2 E^2 E2PROM=Electrically Erasable Programmable Read-Only Memory
- Flash存储器
- SSD =Solid State Drives
- 串行访问存储器
- SAM=Sequential Access Memory 顺序存取存储器
- DAM =Direct Access Memory 直接存取存储器
- RAM=Random Access Memory 随机存取存储器 或 随机存储器
- “随机存取”并不是专属“随机存取存储器RAM”的,ROM也是随机存取的,不过因为读取速度比较慢,做不了“随机存储器”,换句话说随机存储器这个概念默认暗含“随机存取的速度很快”的特点
- CPU可以直接访问的存储器是寄存器、cache、RAM