原文链接www.xiaocr.fun/index.php/2023/11/14/计算机组成原理大而快-层次化存储/
引言
关于两种局部性
- 时间局部性:如果某个数据被访问,那么在不久的将来它可能再次被访问
- 空间局部性:如果某个数据项被访问,与它相邻的数据项可能也将被访问
存储系统
根据局部性原理,构建计算机的存储系统,也称为存储层次结构
存储层次结构包括不同速度和容量的多级存储,存储速度越快,价格越昂贵,容量越小。
Tips:
同样的数据也有相似的层次性:靠近处理器那一层中的数据时那些较远层次中数据的子集
层次化存储可以由不同的层次组成,但是数据只能在两个相邻层次之间复制。在相邻两层之间信息交换的最小单元称为块(block)。
Tips:
如果处理器所需的数据在本层的存储中找到,称为命中(hit),否则为失效(miss)。
存储技术
主要有四种:
主存采用动态随机存储(DRAM);靠近处理器的存储层次使用静态随机访问(SRAM);第三种为闪存;第四种为磁盘(disk)
DRAM
在SRAM中,只要提供电源,数值会被一直保存。而在 DRAM 中,使用电容保存电荷的方式来存储数据。采用单个晶体管来访问存储的电荷,或者读取它,或者改写它。DRAM的每个比特仅使用单个晶体管来存储数据,它比SRAM的密度更高,每比特价格更低廉由于DRAM在单个晶体管上存储电荷,因此不能长久保持数据,必须进行周期性的刷新与SRAM相比,这也是该结构被称为动态的原因。
闪存
闪存是一种电可擦除的可编程只读存储器(EEPROM)内含耗损均衡技术的控制器,将写操作尽量分散
Cache基础
理解图示:
工作原理介绍
在cache中为每个存储中的数据进行位置分配的最简单方式,就是基于它在存储中的地址来分配cache中的位置,这称为直接映射
找对应数据块
(块地址) mod (cache中的数据块数量)
(图示映射)
- cache中要添加标签
这些标签(tag)保存了所需的地址信息,用来确定请求字是否在cache中
- cache中添加有效位
用来标识该表现中是否保存着有效数据
cache还可以利用时间局部性,使用最近访问的数据替换不常访问的数据
Cache进一步
- 64 位地址。
- 直接映射 cache。
- cache大小为2"数据块,因此索引字段为n位。
- 数据块大小为2”个单字(2"m+2字节),因此在单个数据块中使用m位来索引单字,使用地址的最低2位来索引字节。
例题加深理解:
关于cache容量
该直接映射的cache总容量:
- 2^n * (单个block大小 + tag位数 + 有效位一位)
处理cache失效
定义:由于所需的数据不在cache之中,对cache发送的数据请求不能被响应
处理步骤:
- 1.将PC的原始值(当前PC-4)发送到内存。
- 2.对主存进行读操作,等待主存完成本次访问
- 3.写cache 表项,将从内存获得的数据写人到该表项的数据部分,将地址的高位(来自 于ALU)写入标签字段,并将有效位置为有效。
- 4.重启指令执行。这将会重新取指,本次取指将在指令 cache 中命中。与上述相比,数据访问的 cache 控制本质上是相同的。一旦失效,简单地暂停处理器,直到内存返回数据。
处理写操作
目的就是保持主存与cache一致
- 写穿透(write through)
写穿透是总是同时更新cache和下一级存储,保证二者数据相同。但写每次都相当于访问主存,相当于miss,效率低
- 写返回(write back)
处理写操作时,只更新cache对于数据块的数值。当数据块被替换时,再将更新后的数据块写入主存
cache的性能
- 计算cache性能例题
- 计算存储平均访问时间
虚拟存储
主存可以通常由磁盘实现的辅助存储当cache,这种技术成为虚拟存储
虚拟存储提出动机
- 程序只读写分配给它的那部分主存,主存只需存储众多虚拟机中活跃的部分,就像cache只存放一个程序活跃部分
- 我们只希望每个程序否编译到它自己的地址空间中——只有这个程序能访问的一系列存储位置,而虚拟存储实现了将程序地址空间转换为物理地址,这地址转换处理加强了各个程序之间的保护
Tips
- 虚拟存储块被称为页(page),而不是block/line,这个是由于历史原因
- 虚拟存储失效称为页失效(page fault)
- 虚拟存储中,处理器产生一个虚拟地址,该地址通过软硬件转换为一个物理地址,物理地址可访问主存。
- 虚拟存储中,地址被划分为虚拟页号(VPN,virtual page number)和页内偏移(Page Offset)
缺页失效的penalty有millions of cycles!
(图示)
页的存放与查找
- 全相联映射的困难在于项的定位,全部进行检索是不切实际的
在虚拟存储中,我们实验一个索引主存的表来定位页,这个结果称为页表(PT,PageTable),位于主存
页表使用虚拟地址中的页号作为索引,找到相应的物理页号
关于缺页失效
如果虚拟也的有效位为无效,则会发生缺页失效
关于写
在虚拟存储系统中,写入存储层次结构的下一级(磁盘)可能需要数百万个时钟周期,因此写穿透是不可行的。
虚拟存储系统必须使用写回策略,对内存中的页进行单路写操作。并且当页被从主存中替换出时,将其复制到辅助存储
加快地址转换TLB
TLB(Translation Lookaside Buffer),也就是俗称的快表。由于页表存储在主存中,则程序每个访存请求至少需要两次访存。一次获得物理地址,一次访存获得数据
cache执行总结
虚拟存储中的保护
虚拟存储最重要的功能就是允许多个进程共享一个主存,同时为这些进程和OS提供内存保护
无论有意还是无意,一个恶意进程不能写另一个进程或OS的地址空间
本文由博客一文多发平台 OpenWrite 发布!