计算机体系结构基础知识介绍之缓存性能的十大进阶优化之编译器控制的预取和利用HBM扩展内存层次(七)

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

优化九:编译器控制的预取以减少丢失惩罚或丢失率

硬件预取的替代方案是编译器在处理器需要数据之前插入预取指令来请求数据。

预取有两种类型:
■ 寄存器预取将值加载到寄存器中。
■ 高速缓存预取仅将数据加载到高速缓存。

这两种类型都可以分为有错或无错的,即预取的地址是否会导致虚拟地址错误或保护错误的异常。使用这个术语,一个普通的加载指令可以被认为是一个“有错的寄存器预取指令”。无错的预取指令如果遇到异常,就会变成空操作。

最有效的预取是“对程序语义不可见”的:它不改变寄存器和内存的内容,也不会引起虚拟内存错误。现在大多数处理器都提供无错的缓存预取指令。这一节假设使用无错的缓存预取,也叫非绑定预取。

预取技术只有在处理器可以在预取数据的同时继续执行时才有意义;也就是说,缓存不会停顿,而是在等待预取数据返回的同时继续提供指令和数据。这样的计算机的数据缓存通常是非阻塞的。和硬件控制的预取一样,目标是让执行和预取数据重叠。

循环是重要的目标,因为它们适合于预取优化。如果不命中代价很小,编译器只需要展开循环一次或两次,并将预取和执行调度起来。如果不命中代价很大,它就使用软件流水或者展开很多次来预取未来迭代的数据。发出预取指令会产生指令开销,所以编译器必须小心确保这种开销不会超过收益。通过专注于可能是缓存不命中的引用,程序可以避免不必要的预取,同时显著提高平均内存访问时间。

优化十:利用HBM扩展内存层次

HBM是High Bandwidth Memory的缩写,是一种高速的计算机内存接口,用于三维堆叠的同步动态随机存取存储器(SDRAM)。HBM的特点是将多个DRAM芯片通过硅通孔(TSV)技术垂直堆叠在一起,并与处理器封装在同一个芯片内,实现了高容量、高带宽、低功耗和低延迟的内存方案。

 由于大多数通用服务器处理器需要的内存容量超过了HBM封装技术能够提供的范围,所以有人提出了将封装在处理器内部的DRAM用作大容量的L4缓存,这些缓存的容量可以达到128 MiB到1 GiB甚至更多,远远超过了当前片上L3缓存的容量。使用这样大的基于DRAM的缓存会引起一个问题:标记(tag)应该放在哪里?这取决于标记的数量。假设我们使用64B的块大小,那么一个1 GiB的L4缓存需要96 MiB的标记,这比CPU上的缓存中存在的静态内存还要多。将块大小增加到4 KiB,可以显著减少标记存储,只需要256 K个条目或者不到1 MiB的总存储空间,这可能是可以接受的,考虑到下一代多核处理器中L3缓存的容量为4~16 MiB或者更多。

然而,这样大的块大小有两个主要问题。第一,缓存可能会被低效地使用,当许多块中的内容不需要时;这被称为碎片化问题,它也出现在虚拟内存系统中。此外,传输这样大的块如果大部分数据没有被使用也是低效的。第二,由于块大小很大,缓存中能够保存的不同块的数量就很低,这可能导致更多的不命中,特别是冲突和一致性不命中。解决第一个问题的一个部分解决方案是添加子块(subblock)。子块允许块中的部分数据是无效的,需要在不命中时才获取它们。子块技术,然而,并不能解决第二个问题。

标记存储是使用较小块大小的主要障碍。一个可能的解决方案是将L4缓存的标记存储在HBM中。乍一看这似乎是行不通的,因为每次访问L4缓存都需要两次访问DRAM:一次是为了标记,另一次是为了数据本身。由于随机访问DRAM所需的时间很长,通常是100个或更多处理器时钟周期,所以这种方法被放弃了。Loh和Hill(2011)提出了一个巧妙的解决方案:将标记和数据放在HBM SDRAM中的同一行中。虽然打开行(最终关闭它)需要很长时间,但是访问行中不同部分所需的CAS延迟只有新行访问时间的三分之一左右。因此我们可以先访问块中的标记部分,如果命中了,那么再使用列访问来选择正确的字。Loh和Hill(L-H)提出了一种组织L4 HBM缓存的方法,使得每个SDRAM行由一组标记(在块头部)和29个数据段组成,构成一个29路组相联缓存。当访问L4时,打开适当的行并读取标记;如果命中,则再进行一次列访问以获取匹配数据。

Qureshi和Loh(2012)提出了一种改进方法,称为合金缓存(alloy cache),可以减少命中时间。合金缓存将标记和数据融合在一起,并使用直接映射的缓存结构。这样可以将L4访问时间减少到一个HBM周期,通过直接索引HBM缓存并进行标记和数据的突发传输。

合金缓存相比L-H方案,将命中时间减少了超过两倍,但是以增加不命中率1.1~1.2倍为代价。在这两种方案中,不命中都需要两次完整的DRAM访问:一次是为了获取初始标记,另一次是为了访问主存(这甚至更慢)。如果我们能够加快不命中检测,我们就能够减少不命中时间。有两种不同的解决方案来解决这个问题:一种是使用一个映射来跟踪缓存中的块(不是块的位置,只是是否存在);另一种是使用一个内存访问预测器,使用历史预测技术来预测可能的不命中,类似于用于全局分支预测的技术。

计算机体系结构基础知识介绍之缓存性能的十大进阶优化之编译器控制的预取和利用HBM扩展内存层次(七),计算机体系结构学习笔记,缓存,risc-v,嵌入式硬件

 

运行 LH 方案、SRAM 标签方案和理想 L4(理想)的 SPECrate 基准测试时的性能加速; 加速 1 表示 L4 缓存没有任何改进,如果 L4 完美并且不占用访问时间,则可以实现 2 的加速。 使用 10 个内存密集型基准测试,每个基准测试运行八次。 使用随附的未命中预测方案。 理想情况假设仅需要访问和传输 L4 中请求的 64 字节块,并且 L4 的预测精度是完美的(即,以零成本知道所有未命中)。 文章来源地址https://www.toymoban.com/news/detail-542771.html

到了这里,关于计算机体系结构基础知识介绍之缓存性能的十大进阶优化之编译器控制的预取和利用HBM扩展内存层次(七)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    2024年02月03日
    浏览(60)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包