计算机体系结构基础知识介绍之缓存性能的十大进阶优化之非阻塞缓存(四)

这篇具有很好参考价值的文章主要介绍了计算机体系结构基础知识介绍之缓存性能的十大进阶优化之非阻塞缓存(四)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

优化四:非阻塞缓存,提高缓存带宽

对于允许乱序执行的流水线计算机,处理器不需要因数据高速缓存未命中而停止。 例如,处理器可以继续从指令高速缓存获取指令,同时等待数据高速缓存返回丢失的数据。 非阻塞高速缓存或无锁高速缓存允许数据高速缓存在未命中期间继续提供高速缓存命中,从而增强了这种方案的潜在优势。 这种“未命中下的命中”优化通过在未命中期间提供帮助而不是忽略处理器的请求来减少有效的未命中损失。 一个微妙而复杂的选项是,如果缓存可以重叠多个未命中,则可以进一步降低有效未命中惩罚:“多次未命中下的命中”或“未命中下的未命中”优化。 仅当内存系统可以处理多次未命中时,第二个选项才有用。 大多数高性能处理器(例如英特尔酷睿处理器)通常都支持两者,而许多低端处理器仅在 L2 中提供有限的非阻塞支持。

简单来说,非阻塞缓存是一种数据缓存,它可以在处理一个缓存不命中的请求时,继续响应其他缓存命中的请求,从而减少处理器的等待时间。

非阻塞缓存有以下几种优化方式:

  • 命中在不命中下(hit under miss):一种非阻塞缓存优化方式,它允许在处理一个缓存不命中的请求时,同时响应一个缓存命中的请求。
  • 命中在多重不命中下(hit under multiple miss)或不命中在不命中下(miss under miss):一种非阻塞缓存优化方式,它允许在处理多个缓存不命中的请求时,同时响应多个缓存命中或不命中的请求。这种方式需要内存系统能够同时服务多个不命中的请求。

 文章来源地址https://www.toymoban.com/news/detail-530762.html

  • Farkas和Jouppi (1994) 的研究:他们假设了一个8 KiB的单层次缓存和一个14周期的不命中惩罚,并观察了允许一个命中在不命中下优化时,对于SPECINT92和SPECFP92基准测试程序的有效不命中惩罚(effective miss penalty)的减少情况。他们发现对于SPECINT92程序平均减少了20%,对于SPECFP92程序平均减少了30%。
  • Li等人 (2011) 的研究:他们更新了前一项研究,使用了一个多层次缓存、更现代化的不命中惩罚假设和更大更具挑战性的SPECCPU2006基准测试程序。他们的研究基于一个类似于Intel i7的单核处理器模型。图显示了允许1、2和64个命中在不命中下优化时,数据缓存访问延迟的减少情况。他们发现由于缓存变大和增加了三级缓存,非阻塞缓存的效果有所降低,对于SPECINT2006程序平均减少了约9%,对于SPECFP2006程序平均减少了约12.5%。

计算机体系结构基础知识介绍之缓存性能的十大进阶优化之非阻塞缓存(四),计算机体系结构学习笔记,缓存,嵌入式硬件,risc-v

 

评估非阻塞缓存性能的难点是,缓存不命中并不一定会导致处理器停顿。在这种情况下,很难判断任何一个不命中的影响,从而计算平均内存访问时间。有效的不命中惩罚并不是所有不命中的时间之和,而是处理器停顿的不重叠的时间。非阻塞缓存的效益是复杂的,它取决于以下几个因素:

  • 当有多个不命中时,不命中惩罚的大小,这决定了处理器能否在等待数据时继续执行其他指令。
  • 内存引用模式,这决定了处理器在一个不命中期间需要访问多少其他数据。
  • 处理器能够同时处理多少个不命中的请求,这决定了非阻塞缓存能够提供多少优化方式。

一般来说,乱序执行的处理器能够隐藏大部分一级数据缓存不命中但在二级缓存命中的惩罚,但是不能隐藏很大一部分低层次缓存不命中的惩罚。决定支持多少个未完成的不命中请求取决于以下几个因素:

  • 不命中流中的时间和空间局部性,这决定了一个不命中是否可以启动一个新的访问到低层次缓存或内存。
  • 响应内存或缓存的带宽,这决定了一个不命中需要等待多长时间才能得到数据。
  • 要允许在最低层次缓存有更多的未完成的不命中请求(因为这里的不命中时间最长),就需要在高层次缓存至少支持同样多的不命中请求,因为一个不命中必须从最高层次缓存开始。
  • 内存系统的延迟,这决定了一个不命中需要等待多长时间才能得到响应。

实现非阻塞缓存有以下两个主要的问题:

  • 如何在命中和不命中之间进行仲裁,解决冲突。在一个阻塞缓存中,不命中会导致处理器停顿,不会有更多的访问发生,直到不命中处理完毕。在一个非阻塞缓存中,命中可能与从下一级存储器返回的不命中发生碰撞。如果允许多个未完成的不命中,这种碰撞就更有可能发生。这些碰撞必须被解决,通常的方法是先给予命中优先于不命中,其次是对碰撞的不命中进行排序(如果可能的话)。
  • 如何跟踪未完成的不命中,知道何时可以让加载或存储继续执行。在一个阻塞缓存中,我们总是知道哪个不命中正在返回,因为只有一个可以未完成。在一个非阻塞缓存中,这种情况很少成立。考虑一下在一级缓存发生的一个不命中。它可能在二级缓存产生一个命中或不命中;如果二级缓存也是非阻塞的,那么返回到一级缓存的不命中的顺序就不一定和它们最初发生的顺序相同。多核和其他多处理器系统由于有非均匀缓存访问时间也会引入这种复杂性。当一个不命中返回时,处理器必须知道哪个加载或存储导致了这个不命中,以便这条指令可以继续执行;并且必须知道数据应该放在缓存的哪个位置(以及这个块的标记位的设置)。

在非阻塞高速缓存中,命中可能与从内存层次结构的下一级返回的未命中发生冲突。如果我们允许多个未完成的未命中,则未命中甚至有可能发生冲突。

为什么?

因为非阻塞缓存需要在有限的缓存空间和带宽内处理多个请求,而这些请求可能访问相同或相邻的缓存块。例如:

  • 如果一个命中请求和一个未命中请求访问同一个缓存块,那么它们就会发生冲突,因为它们需要同时读写这个块。通常的解决方法是让命中请求优先于未命中请求,以减少处理器的等待时间。
  • 如果一个未命中请求和另一个未命中请求访问同一个缓存组(set),那么它们就会发生冲突,因为它们需要同时占用这个组的一个空闲位置。通常的解决方法是对未命中请求进行排序,以保证一定的顺序和公平性。
  • 如果多个未命中请求返回的数据量超过了缓存到处理器的总线带宽,那么它们就会发生冲突,因为它们需要同时传输数据给处理器。通常的解决方法是增加总线带宽或使用压缩技术,以减少数据量。

非阻塞缓存需要额外的逻辑,因此在能量上有一些代价。然而,很难准确地评估它们的能量消耗,因为它们可能减少停顿时间,从而降低执行时间和能量消耗。除了上述问题之外,多处理器内存系统(无论是在单个芯片上还是多个芯片上)还必须处理与内存一致性和一致性相关的复杂实现问题。而且由于缓存不命中不再是原子性的(因为请求和响应被分开并且可能被多个请求交错),还有死锁的可能性。

 

到了这里,关于计算机体系结构基础知识介绍之缓存性能的十大进阶优化之非阻塞缓存(四)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机体系结构基础知识介绍之缓存性能的十大进阶优化之减少命中时间和流水线访问和多组缓存增加带宽(三)

    路预测是一种高速缓存优化技术,它在高速缓存中保存额外的位来预测下一次高速缓存访问的路(或者组内的块)。这种预测可以提前设置多路选择器来选择期望的块,并且在那个时钟周期内,只进行一次标记比较,同时读取高速缓存数据。如果预测正确,高速缓存访问延迟

    2024年02月12日
    浏览(33)
  • 计算机体系结构基础知识介绍之缓存性能的十大进阶优化之关键词优先和提前重启以减少失误处罚、合并写入缓冲区以减少惩罚(五)

    处理器通常一次只需要缓存块中的一个字(word)。不要等待整个块被加载,而是在请求的字到达后就立即发送给处理器,并让处理器继续执行,同时填充块中的其他字。这两种具体的策略是: 优先(Critical word first)——从内存中先请求缺失的字,并在它到达后立即发

    2024年02月13日
    浏览(38)
  • 计算机体系结构

    目录 第一章 基本概念 1.虚拟计算机 2.计算机系统结构的定义 3.佛林(Flynn)分类法 4.Amdahl定律 5.CPU性能公式 6.程序访问的局部性原理 第二章 指令系统 1.数据表示与数据类型 2.浮点数的表示方式 3.编址方式 4.寻址方式 5.指令系统的优化设计  6.Huffman编码法 7.拓展编码 8.两种方

    2024年02月06日
    浏览(44)
  • 【体系结构】山东大学计算机体系结构知识点清单

    涵盖所有考点,复习绝对高效,点赞+留邮箱获取pdf版本 1. 计算机系统的层次结构 语言实现的两种基本技术: 翻译:先把 N+1 级程序全部转换成 N 级程序后,再去执行新产生的 N 级程序,在执行过程中 N+1 级程序不再被访问。 解释:每当一条 N+1 级指令被译码后,就直接去执

    2024年02月11日
    浏览(48)
  • [Linux]计算机软硬体系结构

    冯诺依曼体系结构的组成 现代计算机大多都遵守冯诺依曼体系结构 冯诺依曼体系结构的示意图如下: 冯诺依曼体系结构计算机由五大部件组成: 输入设备 输出设备 存储器(内存) 运算器 控制器 注:如今大多的计算机都将运算器和控制器集成到一起,被称作中央处理器,简称

    2024年02月13日
    浏览(34)
  • 【Linux】—— 详解计算机体系结构

    前言: 在之前,我们已经对Linux环境开发的基本工具进行了详细的学习。接下来,我们将要学习的第一大块便是关于计算机体系结构的知识!! 目录 前言 (一)冯诺依曼体系结构 基本介绍 木桶原理 数据流动过程 (二)操作系统 1、概念 2、感性理解 总结 在我写的《操作系

    2024年02月09日
    浏览(35)
  • 计算机体系结构(复习资料)

    1.存储程序计算机 (冯诺依曼):4部分                 运算器(用于完成数值运算)                 存储器(用于存储程序和数据)                 输入输出设备(用于完成计算机与外部信息交互)                 控制器(根据程序形成控

    2024年02月02日
    浏览(41)
  • 第一章、计算机组成与体系结构

    第一节.数据的表示   二进制转十进制:权值相加。即一个二进制数为1010.1,转为十进制为: $$ 小数点左边从0开始幂,小数点右边就是-1   十六进制转十进制:同样的,权值相加。即一个十六进制为100121,转为十进制为: $$ 十进制转二进制:整数位用短除法,除二取余,直到

    2024年02月03日
    浏览(32)
  • 【计算机组成原理与体系结构】指令系统

    目录 一、指令概述 二、指令分类 三、扩展操作码 四、指令寻址 五、数据寻址 六、x86汇编指令 计算机指令 :指示计算机硬件进行某种操作的命令 机器指令 :使用二进制编码来表示的计算机指令 能被计算机硬件系统识别并执行的特殊的0/1代码串(机器码) 指定了计算机硬

    2024年02月08日
    浏览(47)
  • 【计算机体系结构】什么是流水线?

    👉个人主页:highman110 👉作者简介:一名硬件工程师,持续学习,不断记录,保持思考,输出干货内容  目录 参考资料 前言 流水线 提高流水线效率的技术 超级流水线 超标量 分支预测 乱序执行 (21条消息) 流水线、超流水线、超标量(superscalar)技术对比(转)_沉迷科研刘

    2024年02月03日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包