计算机体系结构量化研究方法(五)

术语解释

  • 缓存(cache):是指地址离开处理器后遇到的最高级或第一级存储器层次结构。由于局域性原理适用于许多级别,而且充分利用局域性来提高性能的做法非常普遍。
  • 缓存命中(cache hit):处理器在缓存中找到了所需要的数据项
  • 缓存缺失(cache miss):处理器没有在缓存中找到所需要的数据项就是缓存缺失
  • 时域局域性:使用过的数据可能在将来不久在用到这个字
  • 空间局域性:在用到这个块的数据后,马上用到这个块中的其他数据的可能性也很高
  • 虚拟存储器(virtual memory):虚拟存储器是计算机系统内存管理的一种技术,它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。
  • 存储器停顿周期:处理器在等待存储器访问而停顿时的周期数目
  • 缺失代价:每次存储器缺失的成本
  • 缺失率分量:就是缓存访问中导致缺失的访问比例(导致缺失的访问数除以总访问数)

缓存性能回顾

性能结果为处理器周期与存储器停顿周期之和与时钟周期时间的乘积:
CPU执行时间=(CPU时钟周期+存储器停顿周期)X时钟周期时间
此公式假定CPU时钟周期包括处理缓存命中的时间,并假定处理器在发射缓存缺失时的停顿。
存储器停顿周期数取决于缺失数目和每次缺失的成本,后者称为缺失代价:

四个存储器层次结构问题

1、一个快可以放在缓存中的什么位置?
根据对块防止位置的限制,可以将缓存组织方式分为三类:

  • 直接映射
  • 全相联
  • 组相联
    2、如果一个块就在缓存中,如何找到它
    缓存中拥有每个块帧的地址标志,给出块地址。每个缓存块的标志中可能包含所需要的信息,会对这些标志进行查看,以了解它是否来自处理器的块地址匹配。
    必须存在一种方式来获取缓存块中不包含有效信息。最常见的就是向标志添加一个有效位。

先讨论处理器地址与缓存的关系。下图显示了址地址是如何划分的。第一次划分是块地址和块偏移之间,然后再将块帧地址进一步分为标志字段和索引字段,块偏移字段从块中选择期望数据,索引字段选择组,通过对比标志字段来判断是否命中。

3、在缓存缺失时应当替换哪个块?
当发生缺失时,缓存控制器必须选择一个用期望数据替换的块。直接映射布置方式的好处就是简化了硬件判决。实际上,只会看一个块帧,以确定是否命中,而且只有这个块可以替换。对于全相联或组相联布置方式,主要有三种策略:

  • 随机——为进行均匀分配,候选块是随机选择的。好处是易于用硬件实现
  • 最近最少使用(LRU)——为避免抱起不就就会用到的信息(时间局域性?)。LRU成本比较高
  • 先入先出(FIFO)——因为LRU的设计可能非常复杂

一种常见的近似方法称为伪LRU,是为缓存中的每个组设定一组比特,每个比特应于缓存中的一路,一路就是组相连缓存中的条。在访问一组是开启一个特定比特,这一比特与包换所需块的路相对应;如果与一个组相联的所有比特都被开启,除最近刚被开启的比特直往外,将其他比特都关闭。在必须特换一个块是,处理器从相应被关闭的路中选择一个块,如果有多种选择,则随机选择。

4、在写入时发生什么?
吸入策略通常可以用来区分缓存设计。在写入缓存时,有下面两种基本选项。

  • 直写——信息被写入缓存中的块和第一级存储器的块。
  • 写回——信息仅被写到缓存中的块。修改后的缓存仅在被替换时才被写到主存储器。写入操作的速度与缓存存储器的速度相同,一个块中的多个写入操作只需要对低一级存储器进行一次写入。

为减少在替换时写回块的频率,通常会使用一种称为重写位的功能。这一状态位表示一个块是脏的还是干净的。

举例

为了展示思想本质,下图展示处理器中数据缓存的组织方式。该缓存包含64KB字节的数据,块大小为64字节,次用两路组相连布置方式、最近使用最少替代策略、写缺失时采用写入分派。
通过图中标注的命中步骤来跟踪一次缓存命中的过程(这四个步骤用带圆圈的数字表示)。
进入缓存的物理地址被分为两个字段:34位块地址和6位块偏移量(64=2^6,,34+6=40)。块地址进一步分为地址标志和缓存索引。第一步显示了这一划分。
缓存索引选择要测试的标志,以查看所需块是否在此缓存中,索引大小取决于缓存大小、块大小和级相连度。缓存的组相连度被设置为2,索引的计算公式为:
因为索引宽9位,标志宽34-9=25位,尽管这是选择正确块所需要的索引,但太多了。

在读取这两个标志后,将他们与处理器所提供的快递至的biao9zhi部分进行对比,这是第三步。为了确保标志中包含有效信息,必须设置有效位,否则对比结果将被忽略。

假设一个标志匹配,最后一步是通知处理器,使用2选1多工器的获胜输入从缓冲中载入正确数据。opteron可以在2个时钟周期内完成这四个步骤,因此,如果后面2个周期中的指令需要使用载入结果,那就是等待。

写入操作的处理要比读取才做更加负载,这一点在任何缓存中都是一致的,前三步都是一致的。由于是乱序执行的,所以只有在它发出指令已提交而且缓存标志比对结果显示命中的信号后,才会将数据写入到缓存中。

缺失时会发生什么呢?在读取时缺失时,缓存器会发出信号,告诉他数据还不可用,并从下一级读取64字节。对于该块的前8个字节,延迟为7个时钟周期,对其余部分,为每8个字节需要2个时钟周期。由于是组相联的,所以需要选择替换哪个块。

缓存性能

由于指令的数目和硬件无关,所以用这个数值来评价处理器性能还是有诱惑力的。

存储器平均访问时间=命中时间+缺失时间x缺失代价
其中,命中时间是指缓存中命中的时间。

因缓存缺失导致的存储器平均访问能否预测处理器性能。
首先,还有其他原因导致停顿,但是存储器层次结构导致的停顿远多于其他原因导致的停顿。第二,处理器会在确实期间停顿,存储器停顿时间与存储器平均访问时间存在很强的相关性。

缓存特性可能会对性能产生巨大影响。此外对于低CPI、高时钟频率的处理器,缓存缺失会产生双重影响。
(1)CPI越低,固定数目的缓存缺失时钟周期产生的相对影响越高
(2)在计算CPI时,一次缺失的缓存缺失代价是以处理器时钟进行计算的

缺失代价与乱序执行处理器

6种基本的缓存优化


大致分为3类:

  • 降低缺失率——较大的块、较大的缓存、较高的关联度
  • 降低缺失代价——多级缓存,为读取操作设定高于写入操作的优先级
  • 缩短在缓存中命中的时间——在索引缓存时一面地址转换

改进缓存特性的经典方法是降低缺失率,我们给出3种实现技术。首先介绍一个模型将所有确实分为三个简单类别。

  • 强制缺失——在第一次访问某个块
  • 容量缺失——如果缓存无法容纳程序执行期间所需要的全部块,由于一些块会被放弃,过后再另行提取,所以会发生容量缺失
  • 冲突缺失——如果块不知策略为组相连或直接映射,则会发生冲突缺失,这是因为如果有太多的块被映射到一个组中,这个组中的摸个快可能会被放弃。这种缺失也被成为碰撞缺失。

增大块大小以降低缺失率

这是最简单方法,这是充分利用了空间局域性的优势。但较大的块也会增加缺失代价。由于他们降低了缓存的快熟,所以较大块可能增大冲突。

增大缓存

容量缺失的最明显的方法是增加缓存的容量,其缺点是可能延长命中时间、增加成本和功耗。

提高相联度

对于特定大小的缓存,从实际降低缺失数的功效来说,八路组相连和全相联是一样有效的。
大小为N的直接映射缓存与大小为N/2的两路组相联缓存具有大体相同的缺失率。

多级缓存

使读取缺失的优先级大于写入缺失,以降低缺失代价

这一优化方法在完成西写入操作之前就可以为读取操作提供服务。写入才做比读取操作更加复杂。

避免在索引期间间地址转换,以缩短命中时间

缓存必须能够将虚拟地址转换成物理地址。我们必须弄清索引缓存中当成还是用虚拟地址还是物理地址。在标志对比中使用物理地址还是虚拟地址。
但不是索引和标志都完全采取虚拟地址,虽然这样会阶跃地址转换的时间。原因如下:1、提高保护,在转换是必须坚持页级保护,一种解决方案是在缺失时从TLB复制保护信息,添加一个字段老保存这一信息;2、在每次切换进程时,虚拟地址会指向不同的物理地址,需要对缓存进行刷新;操作系统和用户程序可能为同一物理地址使用两种不同的虚拟地址,称为同议地址或者别名地址;最后是I/O,IO口通常使用物理地址。

基本缓存优化方法小结

虚拟存储器

计算在任何时候都在运行多个进程,每个进程有自己的地址空间。让每个经常都有每个存储器的完整地址空间,成本太高。所以使用虚拟存储器。
虚拟储存器将物理存储器划分为块,并分配给不同的进程。这种方法必要要采取一种保护机制来下限值各个进程,使其仅能访问属于自己的块。虚拟存储器能够自动管理表示为主存储器和辅助存储器的两级存储器层次结构。除了共享受保护的存储器空间和自动管理存储器结构之外,虚拟存储器还简化了为执行程序而进行的加载过程。这种被称为再定位的极值允许同一程序在物理存储器中的任意位置而运行。

处理器会给出虚拟器存储器,处理器会给出虚拟地址,由软硬组合方式转换为物理地址,再访问主存储器。

虚拟存储器还有几种相关技术。虚拟存储器系统可分为两类:页,采用大小固定的块;段,采用大小可变的块。页大小通常固定为4096至8192。而段大小是变化的。

使用页虚拟存储器还是段虚拟存储器,这一决定会影响处理器。页寻址方式的地址是单一固定大小,分为页编号和页内偏移量。单一地址对分段地址无效,可变大小的段需要一个字来表示段号,一个字表示表示段内的偏移量,共两个字。对编译器来说,不分段的地址空间更简单点。下面是优缺点的对比:

四个问题

一个块可以放在主存储器的什么位置?

虚拟存储器的缺失代价设计旋转磁存储设备。**如果在较低缺失率和简单放置算法之间进行选择,操作系统图设计人员通常选择较低的缺失率,因为其确实代价会很多。**所以可以放在任意位置

如果一个块在主存储器中,如何找到他

分段和分页都依靠一种按也或短号所以的数据结构。这种数据结构包含块的物理地址。对于分段,会将偏移量加到短的物理地址中个,以获得最终物理地址。

在写入时会发生什么

主存储器的下一级包换旋转磁盘,其访问会耗时数百万个时钟周期。由于访问时间的巨大差异,还没有人构建一种虚拟存储器操作系统,在处理器每次执行存储操作时将主存储器直写到磁盘上。总是采取写回策略。
由于对低一级的非必需访问会带来如此之高的成本,所以虚拟存储器通常会包含一个重写位。利用这一重写位,可以将上次读取磁盘之后经过修改的块写至磁盘。

快速地址变换技术

分页意味着每次存储器访问在逻辑上至少要分两次进行,第一次存储器访问是为了获得物理地址,第二次访问是为了获得数据。 我们可以使用局域性原理来避免增加存储器访问次数。将地址变换局限在一个特殊缓存中,存储器访问就很少需要第二次访问来转换数据。这特殊地址变换缓存被称为变换旁视缓冲区(TLB),有时也成为变换缓冲区(TB)。

TLB项就先给一个缓存项目,其中的标志保存了虚拟地址部分,数据部分保存了特殊页帧编号、保护字段、有效位,通常还有一个使用位和重写位。要改变页表中某一项的特殊页帧编号或者保护字段,操作系统必须确保旧项不在TLB中;否则系统就不能正常运行。重写位意味着对应页曾被改写过,而不是指TLB中的地址变换或数据缓存中的特殊快经过改写。操作系统通过改变页表中的值,然后再使相应TLB项失效来重置这些位。在从分页表中重新加载该项时,TLB会获得这些位的准确副本。
上图中的TLB使用全相联布置。变换首先向所有标志位发送虚拟地址。当然,这些标志必须标记为有效,以进行匹配。同时根据TLB中的保护信息核对存储器访问的类型,以确认其是否有效。TLB中也不需要页偏移量的12个位。匹配标志通过该一个40选1多工器,高效地发送相应的物理地址。然后将页偏移量与物理页帧合并生成一个完整的物理地址。地址大小为40位。

选择页大小

最显而易见的体系结构参数是页大小。也大小的选择就是在偏向较大页和偏向较小页的力量进行平衡。

  • 页表的大小与页大小成反比,因此,增大页的大小可以节省存储器。
  • 分页较大时,运行缓存命中时间较短的较大缓存
  • 与传递较小页相比,从辅助存储传递较大页的效率更高一些
  • TLB数量受限,所以分页较大意味着可以高效地映射更多存储器,从而降低TLB缺失数量。

总结

这是一个从64位虚拟地址到41位物理地址的假设实例。它采取两级缓存。这一L1缓存 的大小和页大小都是8K,所以他是虚拟寻址,物理标记的。L2缓存时4MB。
1、64位虚拟地址在逻辑上被划分为虚拟页号和页编译量。前者被发送到TLB,以备变化为物理地址,后者的高位被发送到L1缓存,充当索引。如果TLB匹配命中,则将物理页号发送到L1缓存标志,检测是否匹配。如果匹配,则是L1缓存命中
2 、如果L1缓存显示为缺失,则使用物理地址尝试L2缓存。物理地址中间部分作用于4MB l2缓存的索引。将得到的L缓存标志与物理地址的上半部分对比,以检查是否匹配。如果匹配,我们得到一次L2缓存命中,数据被送往处理器,它使用块偏移量来选择所需字。在L2缺失时,会使用物理地址从存储器获取该块。

虚拟存储器的保护与示例

保护进程

使进程拥有自己的分页表,分别指向存储器的不同页表,这样可以为进程保护,避免相互损害。

分页虚拟存储器

在每个页表中使用64位的项目。前12位为保留位,提供以后使用,接下来的52位包换物理页帧编号,最后12Wie提供保护、使用信息。

  • 存在位——表明页存在于存储器中
  • 读取/写入位——表明一个页是只读的还是读写的
  • 用户/管理位——表明用户可以访问
  • 脏位——表明该页是否已经被修改
  • 访问位——表明自该位上次清零依赖,是否读取或写入过
  • 页面大小位——表明最后一级是4KB还是4MB
  • 不执行位——防止代码在某些页内支线
  • 页级缓存禁用——表明是否可以缓存该页
  • 页级直写——表明该页对数据缓存应用写回还是直写

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值