超标量处理器设计2-cache

1. cache 介绍

影响Cache缺失的情况有3种:

  1. Compulsory: 第一次被访问的指令或者数据肯定不会在cache中,需要通过预取来减少这种缺失
  2. Capcity: Cache容量越大,缺失就可以更少, 程序频繁使用的三个数据来源于3个set, 但是,核由于面积的约束,只有2个set
  3. Conflict, 指多个数据映射到Cache中的同一个位置, 程序频繁使用的三个数据来源于同一个Cache set;可以使用Victim Cache来缓解这个问题

1.1 cache的结构

cache主要由两部分组成,Tag部分和Data部分。Data部分用来保存一片连续地址的数据,而Tag部分则是存储这片连续数据的公共地址,一个Tag和它对应的所有数据组成的一行称为一个Cache line; 而Cache line中的数据部分称为数据块(Cache data block), 如果一个数据块可以存储在Cache中的多个地方,这些被同一个地址找到的多个Cache line称为一个Cache set。如TLB和Victim Cache多采用了全相连结构,而普通的I-cache和D-cache则采用组相连结构
在这里插入图片描述

1.2 Cache的实现方式

并行访问:如果同时访问Tag SRAM和Data SRAM, 我们称之为并行访问。将读出来的地址和数据都送到一个多路选择器上,这个多路选择器受到Tag比较结构的控制。然后根据存储器地址中的block offset的值选出合适的字节,一般将选择字节的过程称为数据对齐。

  1. 地址计算: 计算得出存储器的地址
  2. 冲突检查: 对load/store指令之间存在的相关性进行检查
  3. 并行访问Tag SRAM和Data SRAM, 并使用结果进行选择
  4. 使用存储器中的block offset 从data block 种选出最终需要的数据

截屏2025-01-17 22.28.12.png

串行访问:访问SRAM这一级少了mux, 对于时序较为友好,但是多了一个cycle。串行访问的功耗也更为友好,因为是根据比较之后的结果进行访问
截屏2025-01-17 22.33.10.png

Note: 如果处理器是超标量处理器,可以乱序执行,那么我们选择串行访问效果更好,因为访问cache多的这个时钟周期可以通过执行其它指令来掩盖掉,并且通过串行访问,可以减少delay, 提高时钟频率。如果是普通的顺序执行的处理器,选择并行访问比较好。

1.3 cache的写入

写通:当数据写到D-cache的同时,也写入到它的下级存储器中
写回:当数据写到D-cache时,不会立即写入到下级存储器中,只会在cache line中做一个记号,只有当该cache line需要被替换时,才会写入到下一级存储器中
上述情况都是默认要写入的地址总是在D-Cache中,如果发现这个地址不在D-cache上时,就发生了写缺失(write miss), 此时最简单的处理方法就是将数据写到下级存储器,称为non-write allocate.
如果发生写缺失时,将发生缺失的地址对应的整个数据块取出来,将数据合并到这个数据块中,然后将被改过的数据块写入到D-Cache中(wirte allocate), 之后也需要将这个数据块写入到下级存储器中(write allocate)
NOTE: 写通方式的优点是结构简单,方便一致性管理。缺点是执行效率不高,每一次写入都需要修改下级存储器。在一般的处理器当中,L2 Cache会采用写回的方式,但对于L1 cache来看,写通的方式也是可以接受的,这样可以简化流水线的设计,便于在多核的情况下管理内存一致性。

1.4 提高cache的性能

  1. write buffer

截屏2025-01-17 22.35.54.png

  1. 多级cache

截屏2025-01-17 22.38.07.png

现在L1 cache一般都做成inclusive的模式,因为实现简单,并且方便管理
3. victim cache
victim cache可以保存最近被提出cache 的数据, 因此所有的cache set 都可以利用它来提高way 的个数, 通常victim cache 采用全相连的方式,容量都比较小。
截屏2025-01-17 22.39.09.png

  1. 硬件预取 prefetch
    由于程序本身是串行执行的,因此只需要访问I-Cache中的一个数据块的时候,将它后面的数据块也取出放到I-cache中就可以了,但是存在分支指令,使得不会使用的指令进入了I-cache, 这一方面降低了I-Cache实际可用的容量,一方面占用了可能有用的指令,称为Cache 污染。为了避免这种情况的发生,我们可以将预取的指令放到一个单独的缓存中
    截屏2025-01-17 22.40.00.png
  2. 多端口cache
    5.1 true multi-port
    真的使用一个多端口的SRAM来实现多端口的Cache,SRMA中的每个cell支持两个读端口和一个写端口。缺点是多端口的CELL需要驱动多个读端口,因此需要更多的访问时间,功耗也会增大。
    5.2 Multiple Cache copies
    将SRAM进行复制来实现多端口的读写,这样可以基本消除读处理周期时间的影响,但是,这种方法浪费面积,并且需要保持两个CAche的同步,功耗也比较大。
    5.3 multi-banking
    每个bank都只有一个端口,如果在一个周期之内,CACHE的多个访问地址位于不同的bank, 则不会发生问题,如果处于同一个bank, 则会引起bank 冲突

2. cache的分类

2.1 virtual cache

  1. TLB只是加速了从虚拟地址到物理地址的转换,但是要直接从物理内存中取数据依然很慢,因此可以用cache将物理地址到数据的转换过程缓存起来。
    截屏2025-01-17 22.46.32.png

  2. 我们可以直接将虚拟地址和物理存储中的数据对应起来,这样就简化了查找TLB的过程。但是会引入两个问题,一个是不同的虚拟地址对应同一个物理位置,由于不同的虚拟地址会占用不同的cache line, 因此浪费了宝贵的cache空间,造成cache容量的减少,二是执行store指令时,本质上应该对同一个物理地址的cache line都应该修改。
    截屏2025-01-17 22.48.27.png

  3. 由于虚拟地址和物理地址的低12位(4K)是相等的,因此如果cache的容量小于4K, 那么寻址cache的地址就不会大于12位,此时即使两个不同的虚拟地址对应一个物理位置,他们寻址cache的地址也会相同。

  4. 当cached的容量大于页的大小时,我们需要通过bank结构来解决这种重命名的问题,可以使用L2 CAche来实现这个功能,使L2 cache中包括所有的L1 cache的内容,也就是之前的inclusive的方式
    截屏2025-01-17 22.51.11.png
    截屏2025-01-17 22.51.40.png

小结

cache的内容较多,涉及到cache pipeline的设计(并行结构,串行结构),cache的大小计算,cache 内部结果的设计(multi-bank, 组相连,全相联等),对于这些分知识点,后续也需要单独介绍。

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

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

相关文章

当PHP遇上区块链:一场奇妙的技术之旅

PHP 与区块链的邂逅 在技术的广袤宇宙中,区块链技术如同一颗耀眼的新星,以其去中心化、不可篡改、透明等特性,掀起了一场席卷全球的变革浪潮。众多开发者怀揣着对新技术的热忱与探索精神,纷纷投身于区块链开发的领域,试…

vscode的安装与使用

下载 地址:https://code.visualstudio.com/ 安装 修改安装路径(不要有中文) 点击下一步,创建桌面快捷方式,等待安装 安装中文插件 可以根据自己的需要安装python和Jupyter插件

浅谈云计算19 | OpenStack管理模块 (上)

OpenStack管理模块(上) 一、操作界面管理架构二、认证管理2.1 定义与作用2.2 认证原理与流程2.2.1 认证机制原理2.2.2 用户认证流程 三、镜像管理3.1 定义与功能3.2 镜像服务架构3.3 工作原理与流程3.3.1 镜像存储原理3.3.2 镜像检索流程 四、计算管理4.…

彩色图像面积计算一般方法及MATLAB实现

一、引言 在数字图像处理中,经常需要获取感兴趣区域的面积属性,下面给出图像处理的一般步骤。 1.读入的彩色图像 2.将彩色图像转化为灰度图像 3.灰度图像转化为二值图像 4.区域标记 5.对每个区域的面积进行计算和显示 二、程序代码 %面积计算 cle…

分布式理解

分布式 如何理解分布式 狭义的分布是指,指多台PC在地理位置上分布在不同的地方。 分布式系统 分布式系**统:**多个能独立运行的计算机(称为结点)组成。各个结点利用计算机网络进行信息传递,从而实现共同的“目标或者任…

Red Hat8:搭建FTP服务器

目录 一、匿名FTP访问 1、新建挂载文件 2、挂载 3、关闭防火墙 4、搭建yum源 5、安装VSFTPD 6、 打开配置文件 7、设置配置文件如下几个参数 8、重启vsftpd服务 9、进入图形化界面配置网络 10、查看IP地址 11、安装ftp服务 12、遇到拒绝连接 13、测试 二、本地…

Re78 读论文:GPT-4 Technical Report

诸神缄默不语-个人CSDN博文目录 诸神缄默不语的论文阅读笔记和分类 论文全名:GPT-4 Technical Report 官方博客:GPT-4 | OpenAI appendix懒得看了。 文章目录 1. 模型训练过程心得2. scaling law3. 实验结果减少风险 1. 模型训练过程心得 模型结构还…

推荐单通道有刷直流电机驱动芯片AT8236

单通道直流有刷电机驱动芯片AT8236 描述应用特点型号选择典型应用原理图管脚列表推荐工作条件 atT A 25C电气特性 atT A 25C,V M 24VH桥控制电流控制死区时间休眠模式过流保护 (OCP)过温保护 (TSD)欠压锁定保护(UVLO) PCB 版图建议典型应用示例 描述 AT8236是一款直流有刷电机…

聚铭网络6款产品入选CCIA《网络安全专用产品指南》

近日,中国网络安全产业联盟CCIA正式发布《网络安全专用产品指南》(第二版)(以下简称《指南》)。聚铭网络凭借突出技术优势、创新能力以及市场积累,旗下安全产品成功入选防火墙、网络安全审计、日志分析、网…

将 AzureBlob 的日志通过 Azure Event Hubs 发给 Elasticsearch(1)

问题 项目里使用了 AzureBlob 存储了用户上传的各种资源文件,近期 AzureBlob 的流量费用增长很快,想通过分析Blob的日志,获取一些可用的信息,所以有了这个需求:将存储账户的日志(读写,审计&…

ESP32S3基于espidf接入网络获取NTP时间

ESP32S3基于espidf接入网络获取NTP时间 📌 相关篇《ESP32S3基于espidf接入网络配置介绍》📍官方相关SNTP 时间同步介绍文档:https://docs.espressif.com/projects/esp-idf/zh_CN/stable/esp32/api-reference/system/system_time.html?highli…

【蓝桥杯选拔赛真题63】C++奇数 第十四届蓝桥杯青少年创意编程大赛 算法思维 C++编程选拔赛真题解

目录 C++奇数 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、运行结果 五、考点分析 七、推荐资料 C++奇数 第十四届蓝桥杯青少年创意编程大赛C++选拔赛真题 一、题目要求 1、编程实现 给定两个正整数N和M(10≤N<M≤10000),请找出N到M…

(学习总结20)C++11 可变参数模版、lambda表达式、包装器与部分新内容添加

C11 可变参数模版、lambda表达式、包装器与部分新内容添加 一、可变参数模版基本语法及原理包扩展emplace系列接口 二、lambda表达式lambda表达式语法捕捉列表lambda的原理lambda的应用 三、包装器bindfunction 四、部分新内容添加新的类功能1.默认的移动构造和移动赋值2.声明时…

东芝e-STUDIO2829A复印机提示“维护”该如何操作

东芝e-STUDIO2829A复印机基本参数: 产品类型 数码复合机 颜色类型 黑白 涵盖功能 复印/打印/扫描 最大原稿尺寸 A3 处 理 器 500MHz 内存容量 标配:512MB,选配:1GB 供纸容量 标配纸盒:350页(A4),最大容…

春秋杯-WEB

SSTI 可以看到主页那里有个登录测试之后为ssti {{4*4}} fenjing梭哈即可得到payload {{((g.pop.__globals__.__builtins__.__import__(os)).popen(cat flag)).read()}}file_copy 看到题目名字为file_copy&#xff0c; 当输入路径时会返回目标文件的大小&#xff0c; 通…

警惕IDEA 2024版重大Bug问题:LomBok失效、Gradle冲突、Spring Boot启动错误

一直以来我认为工具类的软件是越新越好&#xff0c;因为工具代表着一定的先进性&#xff1b;但是IDEA 2024好好的给我上了一课&#xff0c;比如lombok 不起作用、比如Spring Boot 3.4.x 启动报错、再比如MyBatis log plus冲突、再比如Gradle插件冲突. 一、Lombok 失效问题 请不…

GPT-5 传言:一场正在幕后发生的 AI 变革

新的一年&#xff0c;让我们从一个引人入胜的话题开始&#xff1a;如果我告诉你&#xff0c;GPT-5 并非虚构&#xff0c;而是真实存在呢&#xff1f;它不仅真实存在&#xff0c;而且正在你看不见的地方悄然塑造着世界。我的基本假设是&#xff1a;OpenAI 已经秘密开发出 GPT-5&…

【Unity3D】利用Hinge Joint 2D组件制作绳索效果

目录 一、动态绳索 &#xff08;可移动根节点&#xff09; 二、静态绳索 三、利用Skinning Editor(Unity2022.3.15f1正常使用) 四、注意事项 一、动态绳索 &#xff08;可移动根节点&#xff09; 动态绳索 DynamicRope空物体 Anchor和whitecircle是相同位置的物体&#xff…

【12】Word:张老师学术论文❗

目录 题目 ​NO2 NO3 NO4 NO5 NO6 NO7.8 题目 NO2 布局→页面设置→纸张&#xff1a;A4→页边距&#xff1a;上下左右边距→文档网格&#xff1a;只指定行网格→版式&#xff1a;页眉和页脚&#xff1a;页脚距边界&#xff1a;1.4cm居中设置论文页码&#xff1a;插入…

每日进步一点点(网安)

今日练习题目是PHP反序列化&#xff0c;也学习一下说明是序列化和反序列化 1.PHP序列化 序列化是指将数据结构或对象转换为可传输或可储存的格式的过程。这通常需要将数据转换为字节流或者其他编码格式&#xff0c;以便在不同系统和应用程序之间进行传输或存储 在PHP中&…