[TOC]
存储芯片的组成
- 存储矩阵
- 译码驱动
- 读写电路
- 读/写控制线
- 片选线
RAM随机存储器
SRAM
原理:使用双稳态触发器(六管MOS)作为存储元
特点:
集成度低,功耗大
易失性半导体
一般用于高速缓存
DRAM
原理:使用栅极电容
特点:
采用地址复用技术。地址信号分行、列两次发送
容易集成、功耗低和容量大
用于组成大容量系统
需要刷新,每隔一段时间必须刷新。通常为2ms
- 集中刷新:读写操作不受影响,但刷新时不能访问存储器(死区)
- 分散刷新:只刷新一部分,另一部分正常。但会增加存取周期
- 异步刷新:刷新周期/行数的时间间隔产生刷新请求
- 对CPU透明,不依赖于外部访问
- 刷新安排在译码阶段,不会增加存取周期也不会产生死区
- 刷新的单位是按行,刷新时只需要行地址
- 刷新时不需要选片,同时刷新。
ROM(只读存储器)
非易失性存储器,可靠性高
存储器的扩展
容量扩展
- 位扩展
- 字扩展
- 字位同时扩展
地址分配和片选
- 线选
- 片选
多模块存储器
- 单体多字
- 多提并行
- 高位交叉编址(顺序方式)
- 低位交叉编址(交叉方式)
高速缓冲存储器
原理:程序访问的局部性
建立在CPU-主存上
Cache和CPU之间的数据交换是以字为单位。Cache与内存的交换是以块为单位
Cache行的标志块包括有效位、一致性维护位(脏位)、替换算法位和标记位
Cache和主存的映射方式
直接映射
主存的数据块只能装入Cache的唯一位置。需要主存标记块用于标记主存,因为一个Cache块可能放有不同的主存块。
地址结构:主存标记块+Cache地址块+字块内地址
检索流程
- 先通过Cache地址块找到Cache对应的行号。
- 使用主存标记块与该Cache的标记位进行对比。
- 若符合命中,则通过字内块地址读取所需要的字。否则,读取内存。
全相联映射
主存数据块可以装入Cache的任何位置。
地址结构:主存块标记+字块内地址
检索流程:
- 直接使用主存块标记和Cache中所有行的标记位进行比较。
- 若符合命中,则通过字内块地址读取所需要的字。否则,读取内存。
组相连映射
将Cache分成大小相同的组,主存数据块可以装入组内的任意位置。即组间采取直接映射,组内采取全相联映射。
地址结构:主存字块地址+组地址+字块内地址
检索流程
- 先用组地址找到对应的Cache组
- 再使用主存字块地址与该Cache组的所有行的标记位进行比较。
- 若符合命中,则通过字内块地址读取所需要的字。否则,读取内存。
Cache的替换算法
使用场景:全相联映射和组相联映射
- 随机算法
- FIFO
- LRU(近期最少使用算法)
- LFU(最不经常使用算法)
Cache写策略
Cache写命中时:
全写法
写命中时写。必须同时写入Cache和主存
写回法
Cache块换出时才写回主存。需要一个脏位来判断此块是否被修改过
Cache写不命中时
写分配法
加载主存中的块到Cache中,然后更新这个块
非写分配法
只写入主存,不调块
虚拟存储器
建立在主存-辅存上
使用离散分配的内存管理方式
实现方式
页式虚拟存储器
地址结构:虚页号+页内地址
地址转换流程:
- 使用虚页号和页表基址寄存器的起始地址拼接成页表项地址
- 去页表中查找该页表项的实页号。若没有,则从辅存调用主存后再使用
- 将实页号与页内地址拼接成实地址
优点:页面长度固定,页表简单
缺点:程序不可能正好是页面的整数倍,最后一页的零头无法利用而浪费,同时页不是逻辑上独立的实体。
段式虚拟存储器
地址结构:段号+段号地址
地址转换流程和页式虚拟存储器类型,只不过查找的是段表而不是页表。
优点:段分界与程序的自然分界对应,具有逻辑独立性,便于多道程序共享
缺点:段长度可变,分配空间不便,容易在段间留下碎片
段页式虚拟存储器
地址结构:段号+段内页号|页内地址
地址转换流程:
- 先使用段号和段表基址寄存器得到段表地址,从段表中找出页表起始地址
- 再根据段内起始地址和段内页号得到页表地址,从页表中找出实页号
- 将实页号与页内地址拼接成实地址
优点:兼具页式和段式存储器的优点
缺点:两次查表,开销大
快表
快表放在Cache中,慢表放在内存中。
在页式存储器和Cache的系统中。访问顺序为TLB->页表-> Cache->主存