计算机体系结构基础知识介绍之缓存性能的十大进阶优化之编译器优化和硬件预取(六)

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

优化七:编译器优化,降低miss率

处理器和主内存之间不断扩大的性能差距促使编译器编写者仔细检查内存层次结构,看看编译时优化是否可以提高性能。再次,研究分为指令缺失的改进和数据缺失的改进。接下来介绍的优化可以在许多现代编译器中找到。

有些程序具有嵌套循环,以非连续的顺序访问内存中的数据。 只需交换循环的嵌套即可使代码按照数据存储的顺序访问数据。 假设数组不适合缓存,该技术通过提高空间局部性来减少丢失; 重新排序可以在缓存块中的数据被丢弃之前最大限度地利用它们。 例如,如果 x 是大小为 [5000,100] 的二维数组,且分配的 x[i,j] 和 x[i,j +1] 相邻(称为行主序,因为数组是按行),那么以下两段代码显示了如何优化访问:

计算机体系结构基础知识介绍之缓存性能的十大进阶优化之编译器优化和硬件预取(六),计算机体系结构学习笔记,缓存,risc-v,嵌入式硬件

 原始代码将以 100 个字的步幅跳过内存,而修订版本会在进入下一个块之前访问一个缓存块中的所有字。 这种优化在不影响执行指令数量的情况下提高了缓存性能。

优化八:指令和数据的硬件预取,减少丢失惩罚或丢失率

预取技术是一种通过提前将可能需要的数据或指令从主存中取出,放入缓存或外部缓冲区中,从而减少缓存不命中的代价,提高处理器性能的方法。预取技术可以分为指令预取和数据预取,可以分为硬件预取和软件预取。具体来说:

  • 指令预取通常是在硬件上实现的,不依赖于缓存。典型的做法是,在发生缓存不命中时,处理器会同时取出所需的块和下一个连续的块。所需的块在返回后放入指令缓存中,而预取的块则放入指令流缓冲区中。如果所需的块已经在指令流缓冲区中,那么原来的缓存请求就会被取消,直接从指令流缓冲区中读取该块,并发出下一个预取请求。
  • 数据预取也可以采用类似的方法(Jouppi, 1990)。Palacharla and Kessler (1994) 研究了一组科学计算程序,并考虑了多个可以处理指令或数据的流缓冲区。他们发现,使用八个流缓冲区可以捕获50%~70%的所有缓存不命中,对于一个拥有两个64 KiB四路组相联缓存(一个用于指令,一个用于数据)的处理器来说,这是一个很好的结果。

预取技术依赖于利用原本未被使用的内存带宽,但是如果它干扰了需求不命中,它实际上会降低性能。编译器的帮助可以减少无用的预取。当预取技术工作得很好时,它对功耗的影响可以忽略不计。当预取的数据没有被使用或者有用的数据被替换时,预取技术会对功耗有非常负面的影响。

下图为由于 Intel Pentium 4 上的硬件预取而加速,并且针对 12 个 SPECint2000 基准测试中的 2 个和 14 个 SPECfp2000 基准测试中的 9 个打开了硬件预取。 仅显示从预取中获益最多的程序; 预取使缺失的 15 个 SPECCPU 基准测试速度加快了15%。

计算机体系结构基础知识介绍之缓存性能的十大进阶优化之编译器优化和硬件预取(六),计算机体系结构学习笔记,缓存,risc-v,嵌入式硬件文章来源地址https://www.toymoban.com/news/detail-532505.html

到了这里,关于计算机体系结构基础知识介绍之缓存性能的十大进阶优化之编译器优化和硬件预取(六)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索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

领红包