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

news2025/2/21 20:00:21

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

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

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

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

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

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/726551.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

步入JAVA——环境搭建与项目通览

前言 在这篇文章中,荔枝会介绍如何配置Java后端开发环境并借助一个Java web项目简单介绍一下Java的后端开发逻辑。与python的后端开发逻辑是类似的,Java的后端开发其实也是通过一个个类来实现的。对于像荔枝这种小白白来说,入门的第一个练手J…

java项目之高校四六级报名管理系统(ssm+jsp+mysql)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的高校四六级报名管理系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 💕💕作者:风歌…

mysql执行顺序以及为什么别名不能用在 where 后

1、mysql执行顺序 如下: 1. from 阶段 2. where 阶段 3. group by 阶段 4. having 阶段 5. select 阶段 6. order by 阶段 7. limit 阶段 2、为什么别名不能用在 where 后

微信小程序反编译之后运行报错“_typeof3 is not a function”

微信小程序解包之后,在微信开发者工具当中点开调试器,选择Console选项卡,发现左侧的预览界面是空白的,虽然真机调试可以有显示,但是真机预览也是跟左边的界面一样都是空白。之后发现Console里面显示 解决方法&#x…

7.5~7.6学习成果总结

关于封装,满足几个原则,一般的成员变量用privat修饰,仅暴露少量方法获取,如果是内部的操作方法也用private,除非是希望被全局使用,的才考虑用public,如果是进希望被子类用的话可以考虑用protect…

ICG NH2,1686147-55-6,吲哚菁绿氨基,安全性更好,并具有更好的光稳定性

ICG NH2,ICG-Amine,吲哚菁绿氨基|(文章编辑来源于:西安凯新生物科技有限公司小编WMJ)产品结构式: 对于ICG NH2(1686147-55-6)我们需要知道这些: CAS号为1686147-55-6&am…

专项练习21

目录 一、选择题 1、下列逻辑表达式的结果为false的是() 2、请问以下JS代码输出的结果是什么? 3、以下哪些对象是Javascript内置的可迭代对象? 二、编程题 1、找到数组参数中的最大值并返回。注意:数组中只包含数字 …

16 直线识别拟合角平分线(matlab程序)

1.简述 直线检测是数字图像处理的重要内容,在道路识别,建筑物识别,医学图像分析等领域都有十分重要的应用。通过对已经获得的图像进行边缘检测,然后用Hough变换对边缘检测进行直线检测。该方法简单,受直线中的间隙和噪声影响较小。在Matlab环境下对该方法进行了仿真实验,并对图…

【LLM】Windows本地CPU部署民间版中文羊驼模型(Chinese-LLaMA-Alpaca)踩坑记录

目录 前言 准备工作 Git Python3.9 Cmake 下载模型 合并模型 部署模型 前言 想必有小伙伴也想跟我一样体验下部署大语言模型, 但碍于经济实力, 不过民间上出现了大量的量化模型, 我们平民也能体验体验啦~, 该模型可以在笔记本电脑上部署, 确保你电脑至少有16G运行…

1.4 计算机网络性能

1.4 计算机网络性能 速率带宽延迟/时延(delay或latency)四种分组延迟排队延迟 时延带宽积分组丢失(丢包)吞吐量/率(Throughput) 速率 速率即数据率(data rate)或称数据传输速率或比特率(bit rate) 单位时间(秒&#x…

为什么我心中TOP1的编程语言是Java?我为什么选择Java?

文章目录 前言优点跨平台性面向对象编程(OOP)强大的类库和工具支持广泛的应用领域 缺点速度相对较慢内存消耗较大较高的学习曲线 Java 学习路线总结前置知识Web前端基础 后端基础1. Java基础2. 数据库技术3. Web开发技术4. 框架技术5. 服务器部署 其他技…

KKT条件

有两种情况: 原问题是非凸函数原问题是凸函数 (1)非凸函数 KKT是强对偶的必要条件,而不是充分条件,即KKT不能推出强对偶。 (2)凸函数 KKT与强对偶互为充要条件。 下面给出具体的KKT条件&a…

数据结构--二叉树的先中后序遍历

数据结构–二叉树的先中后序遍历 二叉树的遍历 层次遍历 层次遍历:基于树的层次特性确定的次序规则 二叉树的递归特性: ①要么是个空二叉树 ②要么就是由“根节点左子树右子树”组成的二叉树 先 \color{red}先 先序遍历: 根 \color{red}根 根左右( N \…

springboot 集成log4j日志,需要自定义json格式内容输出方便ES采集

背景 公司需要将服务迁移到K8S环境上,由于目前服务输出的格式不符合ES进行采集的日志格式,所有需要将日志输出的格式进行调整为JSON格式,方便ES采集 遇到的坑 之前是直接配置的输出格式的message为"message": %msg"&#x…

记录一下,linux安装环境步骤。

前文 鉴于之前都是下载压缩包方式安装环境,学习了docker之后,决定将服务器初始化,重新用docker安装相应环境 条件:自己买的阿里云centos系统。单核系统,仅学习使用。 初始化云盘 初始化云盘步骤: 1&…

Perfetto 命令行工具(Android 10 及更高版本)

Perfetto 命令行工具(Android 10 及更高版本) 1、快速入门1.1 启动跟踪服务1.2 记录跟踪1.2.1 通过 Perfetto UI 记录跟踪1.2.2 通过 cmdline 记录跟踪1.2.3 System Tracing 的系统级应用抓取 2、perfetto 工具2.1 数据源选择2.2 语法参数2.2.1 轻量模式…

数据结构--树和二叉树

目录 1.树的结构及概念1.1树的概念1.2树的相关概念1.3树的表示1.4树在实际中的运用(表示文件系统的目录结构) 2.二叉树的相关概念2.1概念2.2现实版的二叉树2.3特殊的二叉树2.4二叉树的性质2.5二叉树的存储结构 3.与二叉树有关的习题总结 1.树的结构及概念…

RabbitMQ系列(14)--Topics交换机的简介与实现

1、Topics交换机的介绍 Topics交换机能让消息只发送往绑定了指定routingkey的队列中去,不同于Direct交换机的是,Topics能把一个消息往多个不同的队列发送;Topics交换机的routingkey不能随意写,必须是一个单词列表,并以…

leetcode极速复习版-第三章哈希表

目录 哈希表 哈希表理论基础 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和 454.四数相加II 383. 赎金信 15. 三数之和 18. 四数之和 哈希表 哈希表理论基础 那么哈希表能解决什么问题呢,一般哈希表都是用来快速判断一个元素是否出…

机器人制作开源方案 | 卧式车床模型概述

1. 功能说明 本文示例将通过程序控制模拟车床的运动效果--模拟车床进行加工时各个结构的运动方式。车床的主要运动包括夹持工件主轴的旋转运动、刀具进给运动、刀具的换刀旋转运动、溜板的平动、尾座上顶针的进给运动。 2. 结构说明 该车床主轴旋转运动选择带传动的传动方式&am…