计算机体系结构基础知识介绍之缓存性能的十大进阶优化之减少命中时间和流水线访问和多组缓存增加带宽(三)
优化二:减少命中时间的方式预测
路预测是一种高速缓存优化技术,它在高速缓存中保存额外的位来预测下一次高速缓存访问的路(或者组内的块)。这种预测可以提前设置多路选择器来选择期望的块,并且在那个时钟周期内,只进行一次标记比较,同时读取高速缓存数据。如果预测正确,高速缓存访问延迟就是快速命中时间。如果不正确,就尝试另一个块,改变路预测位,并且延迟多一个时钟周期。路预测可以减少冲突不命中,同时保持直接映射高速缓存的命中速度。
模拟表明,两路组相联高速缓存的组预测准确度超过 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不命中,如果各路没有冲突。
多路并行技术和多路关联技术的区别是:
多路并行技术是指在一个程序中,将一个任务划分为多个子任务,让它们在不同的处理器或线程上同时执行,以提高程序的运行效率和响应速度。
多路关联技术是指在一个处理器中,设置多条流水线,并且每个时钟周期内可以选择其中一条流水线发射和执行一条指令,以提高处理器的指令吞吐率。
计算机体系结构基础知识介绍之缓存性能的十大进阶优化之减少命中时间和流水线访问和多组缓存增加带宽(三)相关推荐
- 计算机体系结构基础知识
1.计算机体系结构是什么? ▪ 计算机体系结构--传统是研究如何在给定工艺限制和软件要求下设计更好的计算机.最早指的是指令集的设计: ▪ 后来发展为:涉及计算机硬件(逻辑设计和封装技术).指令集体系结 ...
- 计算机等级考试光敏电阻,光敏电阻的基础知识介绍
原标题:光敏电阻的基础知识介绍 一.光敏电阻 光敏电阻是用硫化隔或硒化隔等半导体材料制成的特殊电阻器,表面还涂有防潮树脂,具有光电导效应. 二.特性 光敏电阻对光线十分敏感.光照愈强,阻值就愈低.随着 ...
- 【学习笔记】高性能计算之胡伟武《计算机体系结构基础》(第三版)
自2022年3月1日起每天更新,3.3已更新至第三章 写在前面 1. 引言 1.1 计算机体系结构的研究内容 1.2 衡量计算机的指标 1.3 计算机体系结构的发展 1.4 体系结构设计的基本原则 2 ...
- 计算机内存知识txt,计算机内存基础知识专题
计算机内存基础知识专题 计算机是由哪几部分组成的呢?简单的说,一个完整的计算机系统是由软件和硬件组成的.其中,硬件部分由中央处理单元(运算器和控制器).存储器和输入/输出设备构成.这次我们要谈的是存储 ...
- 字长为16位的计算机_必看!计算机考试基础知识总结1
必看!计算机考试基础知识总结1 1. 1946年,美国宾夕法尼亚大学研制成功了电子数字积分式计算机ENIAC 2. 美籍匈牙利数学家冯•诺依曼总结并归纳了ENIAC以下3点. •采用二进制:在计算机内 ...
- 计算机文化基础简单要学什么,计算机文化基础简单介绍
计算机文化基础简单介绍 <计算机文化基础>是为我院各专业开设的一门公共基础课,属于通识性课程,在整个人才培养目标各环节中处于核心基础地位,十几年来一直是学院重点建设课程之一.下面是小编整理 ...
- 计算机专业基础知识(中)
大纲 分专题讲解 4. 操作系统的基本概念.功能.组成及分类 概念理解 主要功能 组成和分类 主流的操作系统 推荐书籍和课程 5. Windows 操作系统的基本概念和常用术语,文件.文件夹.库等 W ...
- 计算机体系结构基础中的问题(可能的问题)回答(胡伟武)
计算机体系结构基础中的问题回答(胡伟武) 文章目录 计算机体系结构基础中的问题回答(胡伟武) 从按下键盘到PPT翻页的过程? 卡顿的原因? CPU微结构中影响性能的因素? 独显的数据传输问题? 什么是 ...
- 计算机应用基础李雪第三版答案,计算机应用基础--李雪 第3章计算机的基础知识.ppt...
文档介绍: 第3章计算机的基础知识3.1计算机系统的基本组成3.2计算机的常见硬件设备3.3计算机的常见软件配置3.4信息编码与数据表示3.1计算机系统的基本组成一个系统就是一个整体,计算机系统是能够 ...
最新文章
- 旋转遍历矩阵 Spiral Matrix
- 图解使用PowerTool对Windows内核做初步研究探索
- Android 打开网页搜索关键词
- [Vue warn]: Property or method id is not defined on the instance but referenced during render.
- 【To Do】LeetCode 142. Linked List Cycle II
- 免费自学编程的12个网站
- 逼死强迫症?聊聊应用推送角标的那些事儿
- vs2015运行编译器遇到堆空间不足问题
- WinXP系统连接网络教程
- LaTeX 使用 \begin{aligned} 出现错误代码 Environment aligned undefined. \begin{aligned}
- `英语` 2022/8/23
- 中国电子学会-青少年电子信息等级考试标准 (1-6 级)
- html5视频播放器 知乎,6款让人赞不绝口的电脑软件,知乎超10W人推荐,建议悄悄收藏...
- 23.卷积神经网络实战-ResNet
- 我的电脑中多了CD驱动器怎么办
- 离开外包之后,花了10000小时,最后我走进字节跳动拿到了offer
- JSON字符串转数组并取值
- 卷积神经网络发展(网络骨架:Backbone)
- GBASE 8C——SQL参考6 sql语法(12)
- 燕十八ajax笔记,燕十八商城笔记资料.doc
热门文章
- 餐饮O2O创业:你可以从这10个点切入
- 2017Android面试回忆录「下」(今日头条/小米/网易/知乎...)
- redis3.2.100在windows不支持daemonize命令后台启动
- php 模拟微信浏览器打开微信链接
- php邮箱验证怎么实现,php实现邮箱验证
- c语言中fputc函数的作用是,C语言中文件的读写函数之 fputc、fgetc
- SparkCore:Spark原理初探(执行流程图)
- 前端开发——JavaScript的数据类型和引用类型
- 新版《GB/ T 38661-2020 》简介
- 手机ttl刷机linux,求助,TTl刷机遇到的问题