计算机组成原理(3)三级存储 局部性原则 存储器性能指标 扩展 DRAM编址方式 cache 三种映射 替换策略
三级存储
RAM,随机存储
ROM,只读存储 ,MROM,PROM不可编程,可编程 EPROM,E^2PROM 紫外,电 擦除
三级存储内存,cache,外存
局部性原则
- 时间局部性:一条指令或数据,被执行后很可能会被再次访问
- 空间局部性:一条指令或数据,它附近得数据可能会被访问
所以,会将访问过得内容或访问过内容得整个块放入cache
cache对程序员不可见
存储器性能指标
- 存储容量
- 存取时间 ns
- 存储周期 ns(间隔)
- 存储带宽 —— 单位时间存储器存储得信息量 位/s 字节/s
扩展
- 位扩展
8K1位变成8K8位 - 字扩展
增加片选信号,增加译码器,所以有译码器的都是字扩展
16K8->648
DRAM
四管动态存储单元
-
优缺点
优点: 外围电路简单,刷新时不用加逻辑
缺点:管子多,占用面积大 -
刷新
采用读出方式刷新
刷新分三种
集中式刷新:正常读写与刷新操作分开进行,刷新集中完成。存在读写操作的死时间,适用于cache
分散式刷新:将存储周期化为两个时间片,分别进行读写与刷新操作,不存在死时间,但是速度慢
异步式刷新:结合, 每隔一段时间刷新一次,保证在刷新周期中对整个存储器刷新
编址方式
- 顺序方式
某以模块工作,其他不工作,出错可有下一个替代,通过增加模块扩容,方便。由于串行,带宽受到影响
内存中,先选模块在选字
- 交叉存储
连续地址分布在相邻不同模块内,可以多模块流水线并行存取,提高带宽
多模交叉访问
t为总线传送周期,流水线每次启动都要延迟t
公式背下来,轻轻松松。容量不影响。
字长*模块数 为信息量
cache
解决速度不匹配
CPU与cache为字交换,cache与主存为块交换,块由若干字组成。当CPU在内存中读了个字,便把字的内存地址发到主存和cache,cache就会判断该字是否在cache中。如果是就直接送给CPU,如果不是就在读周期把从数据从主存中送CPU,然后把该字的整个数据块送到cache。这就是LRU替换算法。
- 命中率
h=Nc/Nc+Nm
访问cache次数与访问内存的次数
- 平均访问时间
t=h*tc+(1-h)tm - 访问效率
e=tc/t
h=1900/200=95%
t=95%*50+5%*250
cache与主存映射
地址映射:把主存地址定位到cache中
- 全相联映射
主存块地址与块内容都在cache的行中,这样主存中的一个块可直接拷贝到cache的任意一行。缺点就是电路难实现,适用于小cache - 直接相联映射
也是一对一映射,但是内存会放到cache中的固定位置,
i=j mod m(cache i 行号= 主存块号j mod 总行数m),电路简单,缺点就容易产生冲突, 适合大容量cache - 组相连映射
将cache分成u组,每组v行。主存存放在那个组为固定的。
组号q=j mod u.灵活,冲突减少
容量不太会算,明天再说,
替换策略
- 最不经常使用LFU
将访问次数最少的换出
在每一行中加入计数器,每次访问加1,换出后清0,需要替换时,将最小值替换。不能反应近期情况
- 近期最少使用(LRU)
每行设置计数器,每次命中清0.其他位加1。需要替换时将最大的替换。
保护了刚拷贝的数据行 - 随即替换
随机,硬件处理快
- 先进先出(FIFO)
类似于栈这种数据结构