原文链接www.xiaocr.fun/index.php/2023/11/14/计算机组成原理大而快-层次化存储/
根据局部性原理,构建计算机的存储系统,也称为存储层次结构
存储层次结构包括不同速度和容量的多级存储,存储速度越快,价格越昂贵,容量越小。
Tips:
同样的数据也有相似的层次性:靠近处理器那一层中的数据时那些较远层次中数据的子集
层次化存储可以由不同的层次组成,但是数据只能在两个相邻层次之间复制。在相邻两层之间信息交换的最小单元称为块(block)。
Tips:
如果处理器所需的数据在本层的存储中找到,称为命中(hit),否则为失效(miss)。
主要有四种:
主存采用动态随机存储(DRAM);靠近处理器的存储层次使用静态随机访问(SRAM);第三种为闪存;第四种为磁盘(disk)
在SRAM中,只要提供电源,数值会被一直保存。而在 DRAM 中,使用电容保存电荷的方式来存储数据。采用单个晶体管来访问存储的电荷,或者读取它,或者改写它。DRAM的每个比特仅使用单个晶体管来存储数据,它比SRAM的密度更高,每比特价格更低廉由于DRAM在单个晶体管上存储电荷,因此不能长久保持数据,必须进行周期性的刷新与SRAM相比,这也是该结构被称为动态的原因。
闪存是一种电可擦除的可编程只读存储器(EEPROM)内含耗损均衡技术的控制器,将写操作尽量分散
理解图示:
在cache中为每个存储中的数据进行位置分配的最简单方式,就是基于它在存储中的地址来分配cache中的位置,这称为直接映射
找对应数据块
(块地址) mod (cache中的数据块数量)
(图示映射)
这些标签(tag)保存了所需的地址信息,用来确定请求字是否在cache中
用来标识该表现中是否保存着有效数据
cache还可以利用时间局部性,使用最近访问的数据替换不常访问的数据
例题加深理解:
该直接映射的cache总容量:
定义:由于所需的数据不在cache之中,对cache发送的数据请求不能被响应
处理步骤:
目的就是保持主存与cache一致
写穿透是总是同时更新cache和下一级存储,保证二者数据相同。但写每次都相当于访问主存,相当于miss,效率低
处理写操作时,只更新cache对于数据块的数值。当数据块被替换时,再将更新后的数据块写入主存
主存可以通常由磁盘实现的辅助存储当cache,这种技术成为虚拟存储
缺页失效的penalty有millions of cycles!
(图示)
在虚拟存储中,我们实验一个索引主存的表来定位页,这个结果称为页表(PT,PageTable),位于主存
页表使用虚拟地址中的页号作为索引,找到相应的物理页号
如果虚拟也的有效位为无效,则会发生缺页失效
在虚拟存储系统中,写入存储层次结构的下一级(磁盘)可能需要数百万个时钟周期,因此写穿透是不可行的。
虚拟存储系统必须使用写回策略,对内存中的页进行单路写操作。并且当页被从主存中替换出时,将其复制到辅助存储
TLB(Translation Lookaside Buffer),也就是俗称的快表。由于页表存储在主存中,则程序每个访存请求至少需要两次访存。一次获得物理地址,一次访存获得数据
虚拟存储最重要的功能就是允许多个进程共享一个主存,同时为这些进程和OS提供内存保护
无论有意还是无意,一个恶意进程不能写另一个进程或OS的地址空间
本文由博客一文多发平台 OpenWrite 发布!