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

news2024/10/7 18:29:07

优化二:减少命中时间的方式预测

路预测是一种高速缓存优化技术,它在高速缓存中保存额外的位来预测下一次高速缓存访问的路(或者组内的块)。这种预测可以提前设置多路选择器来选择期望的块,并且在那个时钟周期内,只进行一次标记比较,同时读取高速缓存数据。如果预测正确,高速缓存访问延迟就是快速命中时间。如果不正确,就尝试另一个块,改变路预测位,并且延迟多一个时钟周期。路预测可以减少冲突不命中,同时保持直接映射高速缓存的命中速度。

模拟表明,两路组相联高速缓存的组预测准确度超过 90%,四路组相联高速缓存的组预测准确度超过 80%,I 高速缓存的准确度高于 D 高速缓存。

I高速缓存和D高速缓存是指L1级别的高速缓存,分别用于缓存指令和数据。它们的作用是加速CPU对内存的访问,提高程序的执行效率。I高速缓存和D高速缓存一般是私有的,每个CPU核心都有自己的I高速缓存和D高速缓存。它们的容量一般比较小,通常在几十KB到几百KB之间。

I高速缓存和D高速缓存之间可能存在一致性问题,即当数据被修改为指令时,I高速缓存和D高速缓存中的内容可能不同步。这种情况一般发生在自修改代码(self-modifying code)或者调试器(debugger)等场景中。为了解决这个问题,可以采用硬件或者软件的方法来维护一致性。硬件方法是让I高速缓存和D高速缓存之间进行通信,每次修改数据时,检查并更新I高速缓存中的内容。软件方法是让操作系统在修改数据时,清除D高速缓存中的内容,并使I高速缓存中的内容失效,从而保证从主存中读取新的指令。

路预测还可以扩展为一种形式来降低功耗,通过使用路预测位来决定实际访问哪个高速缓存块(路预测位本质上是额外的地址位);这种方法,也许可以叫做路选择(way selection),在路预测正确时节省功耗,但是在路预测错误时增加了很多时间,因为访问,而不仅仅是标记匹配和选择,必须重复。这种优化可能只适合低功耗处理器。路选择的一个重要缺点是它使得很难流水线化高速缓存访问;然而,随着能源问题的增加,不需要给整个高速缓存供电的方案变得更有意义。

不能流水化原因:每个访问都可能需要两个时钟周期,而不能在一个时钟周期内完成。

优化三:流水线访问和多组缓存以增加带宽

这些优化方法都是通过流水线化高速缓存访问或者增加高速缓存的多路并行性来提高高速缓存的带宽;这些优化方法相当于超流水线和超标量技术提高指令吞吐量的对偶。

超流水线和超标量技术是两种提高CPU性能的技术,它们都利用了指令级并行的思想,但是实现方式不同。

超流水线技术是通过将每个流水线阶段细分为更小的子阶段,从而缩短机器周期,提高时钟频率,使得在相同的时间内执行更多的指令。超流水线技术可以看作是流水线技术的一种延伸,它不需要增加太多的硬件资源,但是会增加流水线级数,从而增加分支预测错误和数据相关的开销。

超标量技术是通过在CPU中设置多条流水线,并且每个时钟周期内可以发射和执行多条指令,从而提高指令吞吐率。超标量技术可以看作是标量流水线技术的一种扩展,它需要增加硬件资源的重复,例如多个取指、译码、执行和写回部件,并且需要由硬件来完成指令调度。

这些优化方法主要针对L1级别的高速缓存,因为访问带宽限制了指令吞吐量。多路并行也用在L2和L3级别的高速缓存中,但主要是作为一种功耗管理技术。流水线化L1可以提高时钟周期,但代价是增加了延迟。例如,Intel Pentium处理器在1990年代中期的指令高速缓存访问流水线需要1个时钟周期;Pentium Pro到Pentium III在1990年代中期到2000年的需要2个时钟周期;Pentium 4在2000年推出的和当前的Intel Core i7需要4个时钟周期。

流水线化指令高速缓存实际上增加了流水线阶段的数量,导致错误预测分支的惩罚更大。相应地,流水线化数据高速缓存导致发出加载指令和使用数据之间的时钟周期更多。

今天,所有的处理器都使用一些L1的流水线化,即使只是为了简单地分离访问和命中检测,而且许多高速处理器有三个或更多级别的高速缓存流水线。流水线化指令高速缓存比数据高速缓存更容易,因为处理器可以依赖高性能的分支预测来限制延迟效应。许多超标量处理器可以每个时钟周期发出和执行多于一个内存引用。

为了处理每个时钟周期多个数据高速缓存访问,我们可以将高速缓存划分为独立的路,每一路支持一个独立的访问。路最初用来提高主存储器的性能,并且现在用在现代DRAM芯片以及高速缓存中。

路并行工作得最好是当访问自然地分布在各路上,所以地址到路的映射影响了内存系统的行为。一个简单的映射方法是将块的地址顺序地分布在各路上,叫做顺序交错(sequential interleaving)。例如,如果有四路,路0有所有地址模4等于0的块,路1有所有地址模4等于1的块,以此类推。

多路并行也是一种降低高速缓存和DRAM功耗的方法。多路并行也用在L2或者L3级别的高速缓存中,但是出于不同的原因。有了多路并行的L2,我们可以处理多于一个未完成的L1不命中,如果各路没有冲突。

多路并行技术和多路关联技术的区别是:

多路并行技术是指在一个程序中,将一个任务划分为多个子任务,让它们在不同的处理器或线程上同时执行,以提高程序的运行效率和响应速度。
多路关联技术是指在一个处理器中,设置多条流水线,并且每个时钟周期内可以选择其中一条流水线发射和执行一条指令,以提高处理器的指令吞吐率。

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

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

相关文章

ModaHub魔搭社区:ChatGLM 集成进LangChain的教程

目录 接入自己的LLM 搭建ChatGLM的api 封装ChatGLM的LLM 测试 总结 参考 最新一段时间一直在学习LangChain相关的文档,发现LangChain提供了非常丰富的生态,并且也可以让业务非常方便的封装自己的工具,接入到LangcChain的生态中&#xf…

Hystrix前言--什么是服务雪崩

什么是服务雪崩 这是在高并发的前提下,比如A、B只有100个线程,都在做这样一个操作,100个线程不能回收,当第101个客户来访问的时候直接报503。 服务雪崩的本质:线程没有及时回收。 不管是调用成功还是失败,只…

干货整理,Selenium 自动化测试常见异常问题 +解决方法(详细)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 异常1&#xff1a…

SpringIoc容器之Aware | 京东云技术团队

1 前言 Aware是Spring提供的一个标记超接口,指示bean有资格通过回调样式的方法由Spring容器通知特定的框架对象,以获取到容器中特有对象的实例的方法之一。实际的方法签名由各个子接口确定,但通常只包含一个接受单个参数的void返回方法。 2…

【接口测试】Postman —— 接口测试知识准备

1.0 前言 ​应用程序编程接口(Application Programming Interface, API)是这些年来最流行的技术之一,强大的Web应用程序和领先的移动应用程序都离不开后端强大的API。API技术的应用给系统开发带来了便利,但也对测试人员提出了更高…

[JAVA数据结构]HashMap

目录 1.HashMap 1.1Map的常用方法 1.2HashMap的使用案例 1.HashMap 基于哈希表的实现的Map接口。 Map底层结构HashMap底层结构哈希桶插入/删除/查找时间复杂度O(1)是否有序无序线程安全不安全插入/删除/查找区别通过哈希函数计算哈希地址比较与覆写自定义类型需要覆写equal…

leetcode.1504. 统计全 1 子矩形(单调栈-java)

统计全 1 子矩形 leetcode.1504. 统计全 1 子矩形题目描述单调栈解题代码演示 单调栈专题 leetcode.1504. 统计全 1 子矩形 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/count-submatrices-with-all-ones 题目描述 给…

pytest之配置文件pytest.ini

前言: pytest.ini文件是pytest的主配置文件,可以改变pytest的运行方式,它是一个固定的文件pytest.ini文件,读取配置信息,按指定的方式去运行。 pytest.ini文件的位置一般放在项目的根目录下,不能随便放&a…

Vant入门介绍

Vant 介绍 Vant是有赞开源的一套基于Vue2.0的Mobile组件库。Vant 是一套轻量、可靠的移动端组件库。通过 Vant,可以搭建出风格统一的,提升开发效率。通过Vant,可以搭建出风格统一的,提升开发效率。目前已有近50个组件,这些组件被广泛使用于有赞的各个移…

LVS-DR排错思路

一.LVS-DR实验排错思路 1.案例架构图 DR服务器:192.168.27.11 web服务器1:192.168.27.12 web服务器2:192.168.27.13 vip:192.168.27.180 客户端:192.168.27.2 1:配置负载调度器:&#xff…

【集群】脑裂是什么?Zookeeper是如何解决的?

文章目录 什么是脑裂Zookeeper集群中的脑裂场景过半机制 什么是脑裂 脑裂(split-brain)就是“大脑分裂”,也就是本来一个“大脑”被拆分了两个或多个“大脑”,我们都知道,如果一个人有多个大脑,并且相互独立的话,那么…

[HDCTF2019]MFC

前言 mfc逆向,有一个VM壳一看到它就头疼,好在这道题用不到,可以直接通过xspy获取mfc自定义消息 分析 工具下载: https://bbs.kanxue.com/thread-170033.htm 开始时完全没有头绪,有虚拟壳,用ida打开也看…

AMEYA360:Panasonic松下HF系列压敏电阻器

Panasonic HF系列压敏电阻器符合AEC-Q200标准,最大允许额定电压为16VDC,钳位电压高达43A。这些紧凑型SMD压敏电阻器适合用于汽车应用,采用模制结构,因此能够耐受很强的“焊接热冲击”。这些压敏电阻器符合ISO7637-2和ISO16750-2负…

迪赛智慧数——饼图(玫瑰饼图):抑郁症发病群体年龄

效果图 痛心,震惊了全网,著名歌手李玟,抑郁症自杀离世! 为什么看起来阳光开朗的人,也会得抑郁症?据数据调查显示,15-30岁为抑郁症的高发年纪,由于思想不够成熟,经验少&a…

QT开发技巧之QComboBox通过qss设置item高度,增加间隔

1.问题描述 QComboBox默认的下拉item间距太小,字挤在一起不好看,直接qss设置item高度但是没效果 2.解决后效果 可通过qss设置item的最小高度,增加间距,不同字体大小的combobox都能使用,简单方便 3.代码实现 &#xf…

葡萄牙语翻译,北京哪个公司比较好?

近年来,随着中国与各葡语系国家,特别是与巴西经贸、科技、文化交流的不断扩大,葡萄牙语翻译的需求也越来越大,但是专业葡语翻译人才紧缺。那么,如何做好葡萄牙语翻译,北京葡语翻译公司哪家好? 我…

分布式消息服务设计

分布式消息服务设计 背景 为了解决当A系统的一个“操作”需要发送一个通知(生产者),由关心这个操作的业务(消费者)订阅消息并处理时,实现业务解耦,并适合分布式。本文主要讲解以消息中间件Rab…

Debug_性能分析工具_Perf +

目录 1. perf 作用 2. perf 安装 3. perf 使用示例 3.1 耗时统计,画出火焰图 1. 下载绘制火焰图的开源pl代码 2. 执行以下命令 3. 用浏览器打开svg文件,看当前进程各子模块耗时占比 1. perf 作用 Perf 是Linux kernel自带的系统性能优化工具。 P…

HCIA-HarmonyOS Application Developer学习笔记

目录 一、HarmonyOS 介绍二、HarmonyOS 应用开发流程HarmonyOS 系统架构HarmonyOS 子系统集DevEco StudioHarmonyOS 应用包结构使用资源文件的方法权限管理分布式能力 三、Ability 设计与开发Ability 的概念和分类页面生命周期Intent载体页面间导航Particle Ability 开发 四、U…

使用Vue脚手架2

ref属性 src/components/SchoolName.vue <template><div class"school"><h2>学校名称&#xff1a;{{name}}</h2><h2>学校地址&#xff1a;{{address}}</h2></div> </template><script>export default {name:…