操作系统基础知识介绍之内存层次结构(一)

news2024/11/26 8:56:42

传统上,内存层次结构的设计者专注于优化平均内存访问时间,这由缓存访问时间、未命中率和未命中惩罚决定。 然而,最近,功率已成为主要考虑因素。 在高端微处理器中,可能有 60 MiB 或更多的片上高速缓存,并且大型二级或三级高速缓存将消耗大量功率。 这个问题在 PMD 中的处理器中更为严重,其中 CPU 的攻击性较低,功率预算可能小 20 到 50 倍。 在这种情况下,缓存可以占总功耗的 25% 到 50%。 因此,更多的设计必须同时考虑性能和功耗的权衡。

当在缓存中找不到一个词时,必须从层次结构中的较低级别(可能是另一个缓存或主存储器)中取出该词并将其放入缓存中,然后再继续。 多个单词,称为块(或行),出于效率原因而被移动,并且由于空间局部性可能很快需要它们。 每个缓存块都包含一个标记,用于指示它对应于哪个内存地址。

缓存与内存:

  • 缓存是CPU的一部分,存在于CPU里,而内存是一个独立的硬件设备,连接在CPU和主板之间。
  • 缓存的速度比内存快得多,但是容量比内存小得多。缓存的作用是暂时存放CPU经常访问的数据,以减少CPU和内存之间的数据交换,提高CPU的运算效率。
  • 缓存一般有多级,例如L1、L2、L3等,等级越高,速度越慢,容量越大。缓存之间采用不同的映射方式,例如直接映射、组关联或全关联等,来决定如何把主存中的块映射到缓存中的位置。
  • 内存是以二进制的形式来存储数据的,所有的信息都是用0和1来表示的。内存中没有文档结构或图像格式之类的概念,只有计算机能够识别的二进制代码。内存中的每个单元都有一个唯一的地址,用来标识其位置和内容。

一个关键的设计决定是块(或行)可以放在缓存中的什么地方。 最流行的方案是集合关联,其中集合是缓存中的一组块。 一个块首先被映射到一个集合上,然后这个块可以被放置在该集合中的任何地方。 查找块包括首先将块地址映射到集合,然后搜索集合(通常是并行的)以查找块。 该集合由数据地址选择:

(Block address) MOD (Number of sets in cache)

也就是(区块地址) /(缓存组数)

如果一个集合中有 n 个块,则缓存放置称为 n 路集合关联。 集合结合性的端点有自己的名字。 直接映射缓存每组只有一个块(因此块总是放在同一位置),而完全关联缓存只有一组(因此块可以放在任何地方)。

1. 直接映射缓存(Direct mapped cache)

每个内存块只能存储到一个缓存槽。一个简单方案是通过块索引把内存块映射到缓存槽(块索引 % 缓存槽数量(即取余数操作))。映射到同一个槽的内存块不能同时存储在缓存中。

2. N路关联缓存(N-way set associative cache)

每个内存块映射到N个特定缓存槽的任意一个槽。例如一个16路缓存,任何一个内存块能够被映射到16个不同的缓存槽。通常,具有相同低bit位地址的内存块共享相同的16个槽。

3. 完全关联缓存(Fully associative cache)

每个内存块可以被映射到任意一个缓存槽(cache slot)。事实上,缓存操作和哈希表很像。

直接映射会遭遇冲突的问题——当多个块同时竞争缓存的同一个槽时,它们不停地将对方踢出缓存,这将降低命中率。另一方面,完全关联过于复杂,很难在硬件层面实现。N路关联是典型的处理器缓存设计方案,因为它在实现难度和提高命中率之间做了良好的折衷。

例如,我电脑上的4M L2 缓存采用 16 路关联的方案。所有的64字节大小的内存块被分配到集合中(基于块索引的低字节),同一个集合中的块竞争使用 L2 缓存的16个槽。

由于 L2 缓存有65536 个槽,而每个集合需要16个槽,因此我们有4096个集合。由此,块索引的低12比特能够确定这个块所在的集合(2^12 = 4096)。进而可以计算出,相差262144字节倍数的地址(4096*64)会竞争同一个槽。

缓存只读取的数据很容易,因为缓存和内存中的副本是相同的。 缓存写入比较困难; 例如,缓存和内存中的副本如何保持一致? 有两个主要策略。 直写高速缓存更新高速缓存中的项目并直写更新主内存。 回写缓存仅更新缓存中的副本。 当块即将被替换时,它被复制回内存。 两种写策略都可以使用写缓冲区来允许缓存在数据放入缓冲区后立即继续,而不是等待完全延迟将数据写入内存。

衡量不同缓存组织优势的一项指标是未命中率。 未命中率只是导致未命中的高速缓存访​​问的分数,即未命中的访问次数除以访问次数。

失败类别如下:

■ 强制性——对块的第一次访问不能在缓存中,因此必须将块放入缓存中。 强制未命中是即使拥有无限大小的缓存也会发生的那些。
■ 容量——如果缓存不能包含程序执行期间所需的所有块,容量缺失(除了强制缺失之外)将会发生,因为块被丢弃并在稍后检索。
■ 冲突——如果块放置策略不是完全关联的 ,冲突未命中(除了强制和容量未命中)将会发生,因为如果多个块映射到它的集合并且对不同块的访问混合在一起,那么一个块可能会被丢弃并稍后被检索。

 

 其中命中时间是命中缓存的时间,未命中惩罚是从内存中替换块的时间(即未命中的成本)。 平均内存访问时间仍然是性能的间接衡量标准; 尽管它比未命中率更好,但不能替代执行时间。

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

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

相关文章

并查集-- 一种路径压缩实现

并查集用于计算图连通分量。 比如回答这样的问题: 社交媒体中,用户A和用户B是否属于同一个圈子里的?一个城市到另一个城市是否是可达的? 并查集适用于并不需要计算出图上具体的路径,只需要计算是否连通。 public i…

JavaScript 链表

(成功的唯一秘诀——坚持最终一分钟。——柏拉图) 链表 众所周知,数组的查询比链表快,但插入比链表慢。 这是因为链表是一种动态的数据结构,不同于数组的是,链表分配内存空间的灵活性,它不会像…

解决车载U盘:USB设备未连接 问题

U盘是一种常用的便携式存储设备,用于存储和传输数据。在U盘上使用的文件系统类型决定了它可以支持的文件大小、安全性和其他特性。以下是几种常见的U盘文件系统类型: 1. FAT32:这是U盘上最常用的文件系统类型之一。FAT32文件系统支持的最大文件大小为4GB…

Revit楼板:建筑楼板和结构楼板区别和垫层生成

一、Revit中建筑楼板和结构楼板的区别 Revit中,在我们做项目时楼板是最常见的结构之一,几乎每次都需要使用它。分为建筑楼板和结构楼板,是不是有很多小伙伴就很好奇,为什么分为两种楼板,那么他们是什么时候使用的呢?之间又有何区…

从测试小白成功转型自动化测试,我是如何一步步掌握坚持下来的?

目录 学习自动化测试的初衷 克服困难,掌握自动化测试技能 自动化测试在日常工作中的应用 第一个自动化测试脚本的完成 自动化测试技能带来的机会和挑战 【自动化测试工程师学习路线】 学习自动化测试的初衷 作为一名测试新人,刚进入测试行业的时候…

工业视觉检测的8个技术优势

工业4.0时代,自动化生产线成为了这个时代的主旋律,而工业视觉检测技术也成为其中亮眼的表现,其机器视觉技术为设备提供了智慧的双眼,让自动化的脚步得以加速! 在实际的生产应用中,视觉技术方案往往先被着手…

zed2i相机中imu内参的标定及外参标定

zed2i中imu内参的标定 参考: https://blog.csdn.net/weixin_42681311/article/details/126109617 https://blog.csdn.net/weixin_43135184/article/details/123444090 值得注意,imu内参的标定其实不是那么重要,大致上给一个值应该影响不大…

金字塔特征融合

金字塔的三种主要结构 FPN: Feature Pyramid Networks for Object Detection (CVPR 2017) PANet: Path Aggregation Network for Instance Segmentation (CVPR 2018) BiFPN: EfficientDet: Scalable and Efficient Object Detection (CVPR 2020) Deep High-Resolution Repre…

神奇哈哈镜-第14届蓝桥杯省赛Scratch初级组真题第3题

[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第132讲。 神奇哈哈镜,本题是2023年5月7日举行的第14届蓝桥杯省赛Scratch图形化编程初级组真题第3题&#…

颜值经济崛起,伽蓝开启采购数字化之旅

今天,数字化转型已成为颠覆性力量,很多行业被裹挟其中,或主动或被动,美妆行业也不例外。 作为国内最大的化妆品企业之一的伽蓝,在过去的几年当中,一直是以 7% 到 10% 的速度快速增长,在此过程中…

计算机组成原理---第二章 习题详解版

(一)课内习题 1. (二)课后练习 1.写出下列各整数的原码、反码和补码表示(用8位二进制表示)。其中MSB是最高位(符号位),LSB是最低位。 (1)-35 &#…

DVWA之文件包含漏洞

文件包含漏洞原理 1、什么是文件包含 程序开发人员一般会把重复使用的函数写到单个文件中,需要使用某个函数时直接调用此文件,而无需再次编写,这中文件调用的过程一般被称为文件包含。 2、文件包含漏洞 程序开发人员一般希望代码更灵活&a…

自学网络安全【黑客】,一般人我劝你还是算了吧

前言:我是劝一般人算了,看你是一般人还是。。。 一、网络安全学习的误区 1.不要试图以编程为基础去学习网络安全2.不要刚开始就深度学习网络安全3.收集适当的学习资料4.适当的报班学习二、学习网络安全的些许准备 1.硬件选择2.软件选择3.外语能力三、网…

数据结构:双向链表(带头循环)

朋友们、伙计们,我们又见面了,本期来给大家解读一下数据结构方面有关双向链表的相关知识点,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言&#xff1a…

时至今日,Linux会开源,也是一种态度

什么是开源?开源通常指开发者公开系统/应用程序源代码。通过对代码进行共享和重用,可以快速开发出高质量、低维护成本的应用程序。这意味着你不再需要花很多时间来学习新技术或编写复杂的代码。 一、Linux永远的神 就拿linux来举例子。 Linux系统的发起…

分享Python采集190个jQuery代码,总有一款适合您

分享Python采集190个jQuery代码,总有一款适合您 Python采集的190个jQuery代码下载链接:https://pan.baidu.com/s/1KxEOw7IfgZJq7yhYBM1nwg?pwdz3r1 提取码:z3r1 可拖拽的谷歌样式纯javascript模态窗口插件 简单实用的轻量级jQuery评分插…

ubuntu系统配置大恒相机驱动并读取ros话题

文章目录 0. 说明1. 安装大恒相机sdk1.1 下载1.2 安装sdk(用于配置ip和调试相机参数)(1) 电脑网卡配置(网卡固定ip)(2)查看相机图像以及配置相机参数 2. 安装ros驱动包(注:大恒相机官方没ros驱动)2.0 正确流程2.1 错误示范2.1 报错1--缺包2.2 报错2--包编译顺序问题…

CnOpenData缺陷产品召回数据

一、数据简介 缺陷产品召回,是指缺陷产品的生产商、销售商、进口商在得知其生产、销售或进口的产品存在可能引发消费者健康、安全问题的缺陷时,依法向职能部门报告,及时通知消费者,设法从市场上、消费者手中收回缺陷产品&#xff…

Python神经网络学习(六)--机器学习--强化学习

前言: 属实是失踪人口回归了。继续神经网络系列。 强化学习: 强化学习也是一个很重要的方向了,很多人用强化学习玩游戏,可能有人觉得强化学习很难(包括我),但是我今天用网上流传很广的、很经…

error: static assertion failed: std::atomic requires a trivially copy type

1. 报错信息 编译期错误&#xff0c;gcc version 7.5.0 错误示例代码&#xff1a; #include <atomic> #include <iostream> #include <vector>int main() {std::atomic<std::vector<int>> a; }2. 问题分析 报错信息里明确说了&#xff0c;ato…