计算机组成原理 第三章 存储系统
第三章 存储系统
存储器层次化结构
多级存储系统


主存——辅存:实现虚拟存储系统,解决了贮存容量不够的问题
Cache——主存:解决了主存与CPU速度不匹配问题

存储器的分类
存储介质分类
半导体存储器
磁表面存储器
光存储器
存取方式
相联存储器(Associative Memory) 如:"快表",按照内容检索到存储位置进行读写
CAM(Content Addressed Memory)存储器
RAM(Random Access Memory)随机存取存储器
SAM(Sequential Access Memory)顺序存取存储器
DAM(Direct Access Memory)直接存取存储器
信息的可改性
读写存储器(Read/Write Memory)可读可写(磁盘、内存、Cache)
只写存储器(Read Only Memory)可读不可写(CD-ROM,BIOS通常写在ROM)
信息的可保存性

存储器的性能指标

主存储体的基本组成

一行存储元就是一个存储字,存储字长:8bit



计算引脚数量(数据线引脚+地址线引脚+读/写控制线引脚+片选线引脚+等等)

可以通过描述如

将按字寻址转换为对应的按字节寻址:将字地址算术左移两位后转为相应的十进制
字地址:1
算数左移2位后:100
转为十进制:100 ——> 4
SRAM和DRAM
存储器特性对比



3.2 DRAM的刷新(由存储器独立完成,不需要CPU控制)

左侧为单个的行地址译码 直接将地址送到译码器
0000 0000 选择0号存储单元
右侧为行列译码 高位地址送到行地址译码器 低位地址送到列地址译码器
0000 0000 选中0,0号存储单元

地址线复用

ROM
ROM的类型

计算机内的重要ROM
内存=内存条+BIOS的芯片
RAM和ROM统一编制

主存储器与CPU的连接

数据总线(宽度=存储字长)
位扩展(解决:数据总线宽度>存储芯片字长)


带横线表示低电平有效,不带横线表示高电平有效
CPU连接单个主存

CPU连接两块主存

1号主存和2号主存连接相同的地址线,接收相同的地址,CPU可以同时对两块主存的同一地址进行读写
CPU连接多块主存

字扩展(增加主存的存储字数)
线选法

高地址11和00时产生总线冲突 高地址为11和00时不能使用
译码器片选法

字位同时扩展法

译码器

双端口RAM和多模块存储器(优化多核CPU访问一根内存条的速度)
双端口RAM


问题:



优化多喝CPU访问一根内存条的速度
对比操作系统“读者”“写者”问题
可以同时读不可同时写
多体并行存储器

低位交叉编制可以降低存取时间

例题:
(1)计算连续取n个存储字的时间?

(2)给定一个地址x,如何确定它属于第几个存储体?
例如:01101在哪个存储体?
法1:直接通过低位体号求得
法2:对地址的十进制数求余
多模块存储器

一次读一行
适用于连续读写
高速缓冲存储器Cache
Cache工作原理
程序的局部性原理


性能分析


例题

剩余问题



Cache-主存映射方式
三种映射
添加标记为和有效位



全相联映射

直接映射

当两块冲突时无法解决

对标记位进行优化:

CPU访存:


组相联映射


CPU访存:


总结

Cache替换算法(解决Cache被装满的问题)
Cache完全装满了才需要替换,需要在全局选择替换哪一块

如果对应位置非空,直接替换

分组内满了才需要替换需要在分组内选择替换哪一块

随机算法(RAND)
随机选择一块替换
算法性能:
实现简单,但完全没有考虑局部性原理,命中率低,实际效果很不稳定

先进先出算法(FIFO)
替换最先调入Cache的块
实现简单,最开始#0#1#2#3放入Cache,之后轮流替换#0#1#2#3
算法性能:
没有考虑局部性原理,最先调入Cache的块也可能是被频繁访问的

抖动现象:频繁的换入换出现象(刚被替换掉块很快又被调入)
近期最少使用算法(LRU)
为每一个Cache块设置一个计数器,用于记录每个Cache块已经有多久没有被访问了,当Cache满后替换计数器最大的
(1)命中时,所命中的行的计数器清零,比其低的计数器加1,其余不变
(2)未命中且还有空闲行时,新装入的行的计数器置0,其余非空闲行全加1
(3)未命中且无空闲行时,计数值最大的行的信息块被淘汰,新装行的块的计数器置0,其余全加1
算法性能:
基于局部性原理,近期被访问过的主存块,在不久的将来也很可能再次被访问,因此淘汰最久没访问过的块是合理的,实际运行效果优秀,Cache命中率高

最不经常使用算法(LFU)
为每一个Cache块设置一个计数器,用于记录每个Cache块被访问过几次,当Cache满后替换计数器最小的
算法性能:
曾经被经常访问的主存块在未来不一定会用到,算法实际运行效果不让LRU

总结

Cache的写策略(如何保持Cache里的数据和内存里的数据保持一致)

写命中
写回法


全写法


写不命中
写分配法


非写分配法


多级Cache


总结

虚拟存储器
页式虚拟存储器
原理



虚地址与实地址
Cache-主存分块是���向物理地址
程序的分页是面向逻辑地址

页表(记录逻辑页号与主存块号的关系)


查询过程:

快表(TLB)
快表是一种相联存储器,可以按内容访存
将近期访问的页表项放入更高速的存储器中可加快地址转换的速度

快表和Cache的区别
快表中储存的是页表项的副本
Cache中储存的是主存块的副本
访问策略
访问快表根据页号查找
命中根据快表页表项得到主存块号
去Cache中寻找相应主存的副本
命中访存

浙公网安备 33010602011771号