3.主存容量的扩展
1.位扩展:数据总线宽度>存储芯片字长
扩展方式:将多个存储芯片的地址段、片选端和读写控制端并联(同时对所有芯片操作),数据段分别引出(数据总线可以把每一个芯片的数据送给CPU)(地址线连接相同,数据线连接不同)
上图中将8个8K * 1位(可以同时读写1位)的存储芯片位扩展为8K * 8位(可以同时读写8位)的存储器,总容量位8KB
2.字扩展:增加存储器中字的数量,而位数不变
字扩展将地址线、数据线、读写控制线并联,通过片选线(连接译码器)控制读写哪个存储芯片(地址范围)
图中A0 - A12位低13位的地址(片内地址),A13 - A14通过译码器来控制选择读取哪个芯片(当A13A14 = 00时,译码器输出端0有效,读取芯片0)
此时,A15无论输出什么都无效,只看A0 - A14
芯片1地址:00 0000 000000000 - 00 1111111111111
芯片2地址:01 0000 000000000 - 01 1111111111111
芯片3地址:10 0000 000000000 - 10 1111111111111
芯片4地址:11 0000 000000000 - 11 1111111111111
3.字位同时扩展
字位同时扩展既增加存储字的数量(字扩展),又增加存储字长(位扩展)
4.外部存储器
4.1磁盘存储器
4.1.1.磁盘设备的组成
磁盘可以由双面构成
4.1.2.磁盘的性能指标
1.格式化容量 < 非格式化容量(格式化后会保留一些备用空间作为坏点的替换)
2.每个磁道能存的数据量相等
3.旋转延迟时间通常取旋转半圈的平均时间
4.1.3.磁盘地址
4.1.4.硬盘的工作过程
来自总线的控制数据是并行的,因此,需要一个并行转串行的电路对磁盘进行控制;磁盘取出数据后,再通过一个串行转并行的电路将数据送往总线
4.1.5.磁盘阵列
类似低位交叉编址,将逻辑上连续的地址,物理上分散存储
4.2.固态硬盘SSD
1.由闪存翻译层和存储介质组成
闪存翻译层:负责找到逻辑块号,然后再找到对应的页
存储介质:由多个存储芯片构成;存储芯片由多个块构成;块由多个页构成
2.读写以页为单位(相当于磁盘的扇区)
3.支持随机访问(SSD采用电路,机械硬盘采用移动磁臂寻找磁道)
4.以块为单位擦除:若想对A页写入数据,则A页需要为空,若A不为空时,则需要将包含页A的块B的除了页A的部分复制到空块C中,再对C中相对于原来页A的页中写入相应数据(读比写快)
5.块被擦除次数过多,则可能会坏掉(机械硬盘不会)
磨损均衡:平均分布擦除的块,提升寿命
5.高速缓冲存储器(Cache)
5.1.cache的基本概念和原理
5.1.1.程序访问的局部性原理
1.空间局部性原理:未来使用的信息可能和正在使用的信息很可能再存储空间上是相邻的(图中二维数组在存储时是一维的方式,遍历数组时,访问的是连续的地址空间)(顺序访问)
2.时间局部性原理:未来使用的信息可能和正在使用的信息是相同的(循环结构)
5.1.2.cache的基本工作原理
cache仅保存主存中最活跃的若干块的副本,预测CPU在未来将会访问的数据,将其放入Cache
1.两种访问方式:
①先访问cache,cache未命中再去访问主存
②同时访问cache和主存,cache命中则停止访问主存(平均访问时间更低)
若访问主存的块,则一定会将改块立即调入cache(复制)
2.主存与cache之间以块为单位进行数据交换
5.2.Cache和主存的映射方式
有效位为1时,标记位才有效
5.2.1.全相联映射
①主存的块存进CACHE时,可以存放在任意位置(Cache存储空间利用率高,但是,可能需要查找所有块的标记,查找速度最慢),其有效位置为1,标记位为该块在主存中的块号
②在访问CACHE进行匹配时,不仅要进行标记位的匹配,还需判定有效位是否为1
Ⅰ标记位匹配成功且有效位为1,则访问该CACHE块的块内地址
Ⅱ标记位匹配失败或有效位为0,则访问主存中相应块号的块内地址
5.2.2.直接映射
①如图,Cache中有8块,可以用3位二进制数表示。因此,根据主存块号的末尾3位可以唯一确定该主存块将会存入Cache的哪个块(唯一确定Cache内块号,查找速度最快,但是,Cache里利用率最低),若该块原先由数据,则直接替换;并且,标记位也可以将末尾的3位省略,仅需19位
②先根据主存块号的末位3位确定该主存块在Cache的位置,然后比对该位置的标记号是否跟前19位相对应,并且有效位是否为1
5.2.3.组相联映射
①如图,Cache中有4组,可以用2位二进制数表示。因此,根据主存块号的末尾2位可以唯一确定该主存块将会存入属于Cache的哪个组,该块可以存放在该组中的任意位置(集合前两种映射的有点,综合效果最好);并且,标记位也可以将末尾的2位省略,仅需20位
②先根据主存块号的末位2位确定该主存块在Cache的组号,然后比对该组的中每块的标记号是否有跟前20个块号相匹配,并且有效位为1的块
③m路组相联映射:Cache中每组有m个块