计算机组成原理:大而快——层次化存储

原文链接www.xiaocr.fun/index.php/2023/11/14/计算机组成原理大而快-层次化存储/

引言

关于两种局部性

  • 时间局部性:如果某个数据被访问,那么在不久的将来它可能再次被访问
  • 空间局部性:如果某个数据项被访问,与它相邻的数据项可能也将被访问

存储系统

根据局部性原理,构建计算机的存储系统,也称为存储层次结构

存储层次结构包括不同速度和容量的多级存储,存储速度越快,价格越昂贵,容量越小。

计算机组成原理:大而快——层次化存储_第1张图片


Tips:

同样的数据也有相似的层次性:靠近处理器那一层中的数据时那些较远层次中数据的子集

层次化存储可以由不同的层次组成,但是数据只能在两个相邻层次之间复制。在相邻两层之间信息交换的最小单元称为(block)。

计算机组成原理:大而快——层次化存储_第2张图片


Tips:

如果处理器所需的数据在本层的存储中找到,称为命中(hit),否则为失效(miss)。

存储技术

主要有四种:

主存采用动态随机存储(DRAM);靠近处理器的存储层次使用静态随机访问(SRAM);第三种为闪存;第四种为磁盘(disk)

DRAM

在SRAM中,只要提供电源,数值会被一直保存。而在 DRAM 中,使用电容保存电荷的方式来存储数据。采用单个晶体管来访问存储的电荷,或者读取它,或者改写它。DRAM的每个比特仅使用单个晶体管来存储数据,它比SRAM的密度更高,每比特价格更低廉由于DRAM在单个晶体管上存储电荷,因此不能长久保持数据,必须进行周期性的刷新与SRAM相比,这也是该结构被称为动态的原因。

闪存

闪存是一种电可擦除的可编程只读存储器(EEPROM)内含耗损均衡技术的控制器,将写操作尽量分散

Cache基础

理解图示:

计算机组成原理:大而快——层次化存储_第3张图片

工作原理介绍

在cache中为每个存储中的数据进行位置分配的最简单方式,就是基于它在存储中的地址来分配cache中的位置,这称为直接映射

找对应数据块

(块地址) mod (cache中的数据块数量)

(图示映射)

计算机组成原理:大而快——层次化存储_第4张图片

  • cache中要添加标签

这些标签(tag)保存了所需的地址信息,用来确定请求字是否在cache中

  • cache中添加有效位

用来标识该表现中是否保存着有效数据

  • cache还可以利用时间局部性,使用最近访问的数据替换不常访问的数据

    Cache进一步

    • 64 位地址。
    • 直接映射 cache。
    • cache大小为2"数据块,因此索引字段为n位。
    • 数据块大小为2”个单字(2"m+2字节),因此在单个数据块中使用m位来索引单字,使用地址的最低2位来索引字节。

计算机组成原理:大而快——层次化存储_第5张图片


例题加深理解:

计算机组成原理:大而快——层次化存储_第6张图片

关于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性能例题

计算机组成原理:大而快——层次化存储_第7张图片

  • 计算存储平均访问时间

计算机组成原理:大而快——层次化存储_第8张图片


虚拟存储

主存可以通常由磁盘实现的辅助存储当cache,这种技术成为虚拟存储 计算机组成原理:大而快——层次化存储_第9张图片


虚拟存储提出动机

  • 程序只读写分配给它的那部分主存,主存只需存储众多虚拟机中活跃的部分,就像cache只存放一个程序活跃部分
  • 我们只希望每个程序否编译到它自己的地址空间中——只有这个程序能访问的一系列存储位置,而虚拟存储实现了将程序地址空间转换为物理地址,这地址转换处理加强了各个程序之间的保护

Tips

  • 虚拟存储块被称为页(page),而不是block/line,这个是由于历史原因
  • 虚拟存储失效称为页失效(page fault)
  • 虚拟存储中,处理器产生一个虚拟地址,该地址通过软硬件转换为一个物理地址,物理地址可访问主存。
  • 虚拟存储中,地址被划分为虚拟页号(VPN,virtual page number)和页内偏移(Page Offset)

缺页失效的penalty有millions of cycles!

(图示)

计算机组成原理:大而快——层次化存储_第10张图片

计算机组成原理:大而快——层次化存储_第11张图片


页的存放与查找

  • 全相联映射的困难在于项的定位,全部进行检索是不切实际的

在虚拟存储中,我们实验一个索引主存的表来定位页,这个结果称为页表(PT,PageTable),位于主存

页表使用虚拟地址中的页号作为索引,找到相应的物理页号

计算机组成原理:大而快——层次化存储_第12张图片


关于缺页失效

如果虚拟也的有效位为无效,则会发生缺页失效

计算机组成原理:大而快——层次化存储_第13张图片

关于写

在虚拟存储系统中,写入存储层次结构的下一级(磁盘)可能需要数百万个时钟周期,因此写穿透是不可行的。

虚拟存储系统必须使用写回策略,对内存中的页进行单路写操作。并且当页被从主存中替换出时,将其复制到辅助存储

加快地址转换TLB

TLB(Translation Lookaside Buffer),也就是俗称的快表。由于页表存储在主存中,则程序每个访存请求至少需要两次访存。一次获得物理地址,一次访存获得数据

计算机组成原理:大而快——层次化存储_第14张图片


计算机组成原理:大而快——层次化存储_第15张图片


计算机组成原理:大而快——层次化存储_第16张图片


cache执行总结

计算机组成原理:大而快——层次化存储_第17张图片

虚拟存储中的保护

虚拟存储最重要的功能就是允许多个进程共享一个主存,同时为这些进程和OS提供内存保护

无论有意还是无意,一个恶意进程不能写另一个进程或OS的地址空间

计算机组成原理:大而快——层次化存储_第18张图片


本文由博客一文多发平台 OpenWrite 发布!

你可能感兴趣的:(青少年编程,c++)