当前位置: 首页 > news >正文

Cache结构

Cache

cache的一般设计

超标量处理器每周期需要从Cache中同时读取多条指令,同时每周期也可能有多条load/store指令会访问Cache,因此需要多端口的Cache

  • L1 Cache:最靠近处理器,是流水线的一部分,包含两个物理存在 指令cache(I-Cache)和数据cache(D-Cache),I-Cache只读,D-Cache可读可写。追求
    • I-Cache:需要能够每周期读取多条指令
    • D-Cache:需要指出每周期有多条load/store指令的访问(多端口设计)
  • L2 Cache 指令和数据共享,主要功能:尽可能保存更多内容 追求
    • 访问频率不是很高(L1 Cache命中率比较高)
    • 不需要多端口设计,延迟也不是特别重要
    • 需要有较高的命中率

Cache主要由 Tag部分 和 Data部分 组成,如下图所示:
Cache结构

3C定理(影响Cache缺失的因素):

  • Compulsory
    • 第一次被访问的指令或数据一定会导致 Cache Miss
    • 缓解方法:预取 prefetching
  • Capacity 容量
  • Conflict
    • 组相连Cache,Cache set大小 小于 频繁使用的数据的数量
    • 缓解:victim cache

Cache的三种实现方式(组织方式):直接映射、组相连映射、全相连映射

  • TLB 和 victim Cache:全相连
  • I-Cache 和 D-Cache:组相连
  1. 直接映射
    在这里插入图片描述
  2. 组相连

定义:每个数据块n 个位置可放的组相联 cache 称为 n 路组相连 cache;主存中的每个数据块通过索引位映射到 cache 中对应的组,数据块可以存放在该组中的 任意位置

索引位用来选择访问数据所在的,该组内所有数据块的标签都需要比较(并行比较)

如果cache容量保持相同,增加相联度可以增加每组内数据块的数量;相联度以 2 的幂递增,索引的位长将减少 1,标签的位长将增加 1

基本实现方式:
在这里插入图片描述

  • 并行访问 Tag SRAM 和 Data SRAM 及 访问流水线
    • 同时访问
      在这里插入图片描述
    • 将整个cache访问放到几个周期完成,降低处理器的周期时间,较低的时钟频率和较大的功耗
      在这里插入图片描述
  • 串行访问 Tag SRAM 和 Data SRAM 及 访问流水线
    • 依次访问,不再需要多路选择器,只需访问指定的SRAM,节省功耗
      在这里插入图片描述
    • load指令延迟更大(访问增加了一个周期)
      在这里插入图片描述
  1. 全相连
    • 用CAM存tag,用SRAM存数据
    • 缺失率最低,延迟最大,不会有很大容量,TLB

Cache的写入

  • 写命中
    • 写通(Write Through)
      • 数据写到D-Cache的同时,也写到下级存储器中(如L2 Cache中)
    • 写回(Write Back)
      • 执行store指令时,数据写到D-Cache后,只是将被写入的cache line做一个标记(dirty 脏状态),当被标记的cache line要被替换时,才将其写入下级存储器中
  • 写缺失
    • non write allocate
      • 将数据直接写入下级存储器,不写入D-cache中
    • write allocate
      • 首先从下级存储器中取出发生缺失的地址对应的整个数据块,将要写入到D-Cache中的数据合并到这个数据块中,然后将这个数据块写入到D-cache中
      • 为了保持存储器的一致性,要将这个数据块写入下级存储器,有两种方式
        • 写通
        • 写回
  • 一般 write through 配合 Non-Write Allocate 使用
    在这里插入图片描述
  • Write Back 配合 Write Allocate 使用
    在这里插入图片描述

Cache的替换策略

  • LRU 近期最少使用法
    • 伪LRU,将所有way进行分组,每一组使用一个1位的年龄部分
      在这里插入图片描述
  • 随机替换
    • 时钟算法
    • 硬件复杂度较低,不会损失过多性能

提高cache的性能

  • 写缓存
    在这里插入图片描述

  • victim cache
    在这里插入图片描述

  • filter cache
    在这里插入图片描述

  • 预取

    • 硬件预取

      • 当I-Cache发生缺失时,除了将需要的数据块从下级存储器中取出放在I-Cache中,还会将下一个数据块也读取出来,放到stream buffer中
        在这里插入图片描述
    • 软件预取

      • 编译阶段,编译器对程序进行分析,进而知道哪些数据需要进行预取。比较有针对性
      • 需要注意 预取的时机
      • 使用软件预取时,执行预取指令时,处理器需要能继续执行(能继续从D-Cache中读取数据),要求D-Cache是非阻塞(non-blocking)结构

多端口Cache

  • True Multi-port

    • cache的控制通路和数据通路需要进行复制
    • 两套地址解码器,多路选择器,比较器,对齐器;SRAM中每个cell都需要同时支持两个并行的读取操作
    • 增大了面积,多端口的SRAM cell需要驱动多个读端口,因此需要更长的访问时间,功耗也会随之增大
  • Multiple Cache Copies

    • 将cache进行复制
      在这里插入图片描述
  • Multi-banking

    • 将cache分成很多小的bank,每个bank都只有一个端口
    • bank冲突
  • 实例:AMD Opteron的多端口cache

    • 64位处理器,但处理器地址进行了简化(虚拟地址Virtual Address VA 48位,物理地址Physical Address PA 40位)
      在这里插入图片描述

超标量处理器的取指令

  • 使数据块的大小为n个字,每周期将其全部进行输出
  • 使处理器每周期取出的指令个数多于它能够解码的指令个数,通过指令缓存(Instruction Buffer)将多余的指令缓存起来
  • 改进:使数据块变大
    • 如变为8个字

    • 实际实现用四个SRAM实现一个八个字的数据块
      在这里插入图片描述

    • 一个cache line包含的8个字占据了SRAM的两行,一个cache line只包含一个Tag值

    • 增加两个控制电路

      • 产生每个SRAM的读地址
      • 将四个SRAM输出的内容进行重排序,使其按照程序中规定的原始顺序进行排列

相关文章:

Cache结构

Cache cache的一般设计 超标量处理器每周期需要从Cache中同时读取多条指令,同时每周期也可能有多条load/store指令会访问Cache,因此需要多端口的Cache L1 Cache:最靠近处理器,是流水线的一部分,包含两个物理存在 指…...

国产版Sora复现——智谱AI开源CogVideoX-2b 本地部署复现实践教程

目录 一、CogVideoX简介二、CogVideoX部署实践流程2.1、创建丹摩实例2.2、配置环境和依赖2.3、上传模型与配置文件2.4、开始运行 最后 一、CogVideoX简介 智谱AI在8月6日宣布了一个令人兴奋的消息:他们将开源视频生成模型CogVideoX。目前,其提示词上限为…...

怎么读取FRM、MYD、MYI数据文件

一、介绍frm、MYD、MYI文件 在MySQL中,使用MyISAM存储引擎时,数据库表会被分割成几个不同的文件文件描述功能扩展名FRM 文件表结构定义文件存储表的结构信息,字段、索引等.FRMMYD 文件数据文件包含表的实际数据.MYD(MYData&#x…...

Leetcode3226. 使两个整数相等的位更改次数

Every day a Leetcode 题目来源:3226. 使两个整数相等的位更改次数 解法1:位运算 从集合的角度理解,k 必须是 n 的子集。如果不是,返回 −1。怎么用位运算判断,见上面的文章链接。 如果 k 是 n 的子集,…...

Linux笔记-3()

目录 一、Linuⅸ实操篇-定时任务调度 二、Linuⅸ实操篇-Linuⅸ磁盘分区、挂载 三、Linux实操篇-网络配置 一、Linuⅸ实操篇-定时任务调度 1 crond任务调度---crontab进行定时任务的设置1.1 概述任务调度:是指系统在某个时间执行的特定的命令或程序。任务调度分类…...

Apache漏洞复现CVE-2021-41773

Apache HTTP Server 路径穿越漏洞 漏洞简介 该漏洞是由于Apache HTTP Server 2.4.49版本存在目录穿越漏洞,在路径穿越目录 <Directory/>Require all granted</Directory>允许被访问的的情况下&#xff08;默认开启&#xff09;&#xff0c;攻击者可利用该路径穿越…...

GIT如何将远程指定分支的指定提交拉回到本地分支

一、当前我的代码在这个提交&#xff0c;但可以看到远程仓库上面还有两次新的提交 二、现在我想让我本次的代码更新到最上面这个最新的提交 三、输入git fetch命令获取远程分支的最新提交信息。 四、输入 git log origin/<remote_branch_name>查看并找到想要更新的指定提…...

鸿蒙图形开发【3D引擎接口示例】

介绍 本实例主要介绍3D引擎提供的接口功能。提供了ohos.graphics.scene中接口的功能演示。 3D引擎渲染的画面会被显示在Component3D这一控件中。点击按钮触发不同的功能&#xff0c;用户可以观察渲染画面的改变。 效果预览 使用说明 在主界面&#xff0c;可以点击按钮进入不…...

C#实现数据采集系统-系统优化服务封装

系统优化-服务封装 现在我们调用modbustcp和mqtt都直接在Program,所有加载和功能都混合在一起,比较难以维护 类似asp.net core项目的Program.cs代码如下,构建服务配置和启动 要实现的效果,Main方法中就是一个服务启动,只需要几行代码 分析代码 这里分成两部分,一…...

数据结构与算法--栈、队列篇

一、计算机领域的地位 在计算机科学的广袤领域中&#xff0c;数据结构犹如一座精巧的大厦&#xff0c;为信息的存储和处理提供了坚实的框架。而在众多的数据结构中&#xff0c;栈和队列宛如两颗璀璨的明珠&#xff0c;各自闪耀着独特的光芒。 栈和队列虽然看似简单&…...

【程序、游戏、人生】致敬飞逝的3年和新的开始

人&#xff0c;总要向前看。 感谢之前关注的朋友&#xff0c;感谢各位朋友的私信、感谢关心的评论。 不要停下 20年&#xff1a;某银行业务三方开发。 21年&#xff1a;移动内部业务平台开发移动物联网商城开发储备TPL。 22年-至今&#xff1a;手游发行技术综合北漂 经历了行…...

第三届人工智能、人机交互与机器人国际会议

国际人工智能、人机交互和机器人会议是一项年度活动&#xff0c;汇集了来自世界各地的研究人员、从业者和行业专业人士&#xff0c;分享他们在人工智能、人际交互和机器人领域的知识和专业知识。在过去的几十年里&#xff0c;这些领域在计算能力、数据分析和机器学习技术的进步…...

AWS生成式AI项目的全生命周期管理

随着人工智能技术的迅速发展&#xff0c;生成式 AI 已成为当今最具创新性和影响力的领域之一。生成式 AI 能够创建新的内容&#xff0c;如文本、图像、音频等&#xff0c;具有广泛的应用前景&#xff0c;如自然语言处理、计算机视觉、创意设计等。然而&#xff0c;构建一个成功…...

windows go grpc

windows环境安装go grpc 的工具和插件 在Windows环境下&#xff0c;安装Protocol Buffers&#xff08;proto&#xff09;和gRPC相关的工具和插件&#xff0c;可以通过以下几个步骤进行 1.安装protoc 在git 仓库下载tag 包 https://github.com/protocolbuffers/protobuf/rele…...

Leetcode 第 135 场双周赛题解

Leetcode 第 135 场双周赛题解 Leetcode 第 135 场双周赛题解题目1&#xff1a;3222. 求出硬币游戏的赢家思路代码复杂度分析 题目2&#xff1a;3223. 操作后字符串的最短长度思路代码复杂度分析 题目3&#xff1a;3224. 使差值相等的最少数组改动次数思路代码复杂度分析 题目4…...

rpc的原理

RPC&#xff08;Remote Procedure Call&#xff0c;远程过程调用&#xff09;是一种编程模型&#xff0c;它允许开发者像调用本地函数一样调用位于不同进程或者不同机器上的函数或服务。这种抽象简化了分布式系统的开发&#xff0c;使得开发人员无需关注底层网络通信细节&#…...

【无线通信发展史-第二篇】,带你走进查利·奥古斯丁·库仑的世界,了解(库伦定律)-(扭秤实验)-(如何测量出静电力常量)

前言&#xff1a;用这几个问答形式来解读下我这个系列的来龙去脉。如果大家觉得本篇文章不水的话希望帮忙点赞收藏加关注&#xff0c;你们的鼓舞是我继续更新的动力。 我为什么会写这个系列呢&#xff1f; 首先肯定是因为我本身就是一名从业通信者&#xff0c;想着更加了解自…...

CAPL使用结构体的方式组装一条DoIP车辆声明消息(方法2)

在文章CAPL使用结构体的方式组装一条DoIP车辆声明消息(方法1)中,我们声明一个结构体DoIPMessage表示完整的DoIP车辆声明消息: 上半部分是DoIP报头通用部分(也就是所有类型的DoIP消息都有的),而payload是每个类型的DoIP消息独有的部分,对于车辆声明消息来说,用另一个结…...

基于Matlab的车牌识别系统设计与实现

基于Matlab的车牌识别系统设计与实现 摘要 随着智能交通系统的不断演进&#xff0c;车牌识别技术已成为提升交通管理效率与准确性的关键。本文深入探讨了基于Matlab平台的车牌识别系统设计与实现&#xff0c;该系统通过精细的图像预处理、高效的车牌定位算法、精准的字符分割…...

使用Cisco进行模拟RIP路由协议配置

实验四 RIP路由协议配置 文章目录 实验四 RIP路由协议配置1.实验目的2.实验流程3.RIPv1实验步骤4.RIPv2实验步骤 1.实验目的 1&#xff09;理解RIP路由的原理 2&#xff09;掌握RIP路由的配置方法 2.实验流程 开始→布置拓扑→配置IP地址→配置并验证RIPv1→配置并验证RIPv2…...

Phi-3-mini-128k-instruct对比测试:与主流轻量模型性能横评

Phi-3-mini-128k-instruct对比测试&#xff1a;与主流轻量模型性能横评 最近轻量级大模型的热度一直没降下来&#xff0c;各家都在推出自己的“小钢炮”。微软前段时间发布的Phi-3-mini系列&#xff0c;尤其是那个128k超长上下文版本&#xff0c;吸引了不少眼球。参数不大&…...

畜牧检测站综合监测系统设计与实现(有完整资料)

资料查找方式&#xff1a;特纳斯电子&#xff08;电子校园网&#xff09;&#xff1a;搜索下面编号即可编号&#xff1a;T0542309M设计简介&#xff1a;本设计是基于单片机的畜牧检测站综合监测系统设计&#xff0c;主要实现以下功能&#xff1a;通过温湿度传感器检测温湿度 通…...

从仿真到算法调参:深度优化你的Prescan红绿灯识别与刹车控制模型

深度优化Prescan红绿灯识别与刹车控制模型的五大进阶策略 在自动驾驶仿真领域&#xff0c;Prescan与Matlab/Simulink的组合已成为验证感知决策算法的黄金标准。但许多开发者在完成基础功能实现后&#xff0c;往往陷入模型性能瓶颈——光照变化导致误识别、刹车距离计算不精准、…...

跨越鸿沟:Concept HDL与Cadence CIS原理图与库的双向迁移实战指南

1. 为什么需要双向迁移&#xff1f; 在电子设计自动化&#xff08;EDA&#xff09;领域&#xff0c;工具链的更新换代是常态。我见过太多团队因为历史项目迁移问题头疼——用老工具维护成本高&#xff0c;换新工具又怕数据丢失。特别是从Concept HDL转向Cadence CIS时&#xff…...

如何3步掌握Akebi-GC:原神智能辅助工具的完整使用指南

如何3步掌握Akebi-GC&#xff1a;原神智能辅助工具的完整使用指南 【免费下载链接】Akebi-GC (Fork) The great software for some game that exploiting anime girls (and boys). 项目地址: https://gitcode.com/gh_mirrors/ak/Akebi-GC 还在为《原神》中重复的收集任务…...

【SITS全球化布局深度解码】:奇点智能技术大会透露的3大战略转折点与2024出海实战路径

第一章&#xff1a;奇点智能技术大会&#xff1a;SITS系列品牌的全球化布局 2026奇点智能技术大会(https://ml-summit.org) SITS&#xff08;Singularity Intelligence Technology Series&#xff09;作为奇点智能技术大会核心IP&#xff0c;已形成覆盖亚太、欧洲与北美三大区…...

3步解放你的华硕笔记本:G-Helper轻量控制工具完全指南

3步解放你的华硕笔记本&#xff1a;G-Helper轻量控制工具完全指南 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, Sc…...

R语言建模总“跑不通”?3步定位环境污染源:从.Rprofile到Sys.getenv()的深度诊断手册

第一章&#xff1a;R语言建模环境“跑不通”现象的典型表现与危害R语言建模环境中的“跑不通”并非指语法错误导致的立即报错&#xff0c;而是一类隐蔽性强、复现性差、定位困难的系统性失配问题。这类问题常在跨平台迁移、版本升级或协作开发中集中爆发&#xff0c;表面看似代…...

OpenHRMS企业级人力资源管理系统架构解析与深度指南

OpenHRMS企业级人力资源管理系统架构解析与深度指南 【免费下载链接】OpenHRMS 项目地址: https://gitcode.com/gh_mirrors/op/OpenHRMS OpenHRMS是一款基于Odoo框架构建的开源企业级人力资源管理系统&#xff0c;采用模块化架构设计&#xff0c;为企业提供从员工入职到…...

JS 字符串截取:substr vs substring 的实战对比与记忆技巧

1. 为什么我们需要区分 substr 和 substring&#xff1f; 在日常的 JavaScript 开发中&#xff0c;字符串操作是最基础也是最频繁的需求之一。很多开发者都遇到过这样的困惑&#xff1a;当需要截取字符串时&#xff0c;到底该用 substr 还是 substring&#xff1f;这两个方法看…...