Cache结构

news2024/11/24 6:35:19

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输出的内容进行重排序,使其按照程序中规定的原始顺序进行排列

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

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

相关文章

解决windows安装docker desktop打开报错问题

下载docker windows版本: https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe?utm_sourcedocker&utm_mediumwebreferral&utm_campaigndd-smartbutton&utm_locationmodule 正常安装,然后运行,弹出这个报错: 试了…

力扣 两数之和

致每一个初学算法的你。 题目 时间复杂度&#xff1a;O(N^2)&#xff0c; 空间复杂度&#xff1a;O(1) 。 class Solution {public int[] twoSum(int[] nums, int target) {int n nums.length;for (int i 0; i < n; i) {for (int j i 1; j < n; j) {if (nums[i] …

RK3568平台开发系列讲解(文件系统篇)Linux内核中 文件的三个数据结构

在内核中,与文件描述符相关的三个主要数据结构分别是: 文件描述符表(进程级):这是每个进程所拥有的数据结构,用于维护进程中打开的所有文件描述符。每个 fd 在这个表中都有一个对应的条目,指向更底层的文件表示结构。 打开文件列表(系统级):这是一个全系统范围内的数…

DC-5靶场实战模拟

信息收集 端口和网段信息&#xff1a;使用nmap扫描 //扫描网段中存货的主机 nmap -sP 192.168.10.0/24 //进行对主机进行猜测-》发现接口&#xff1a;80存活 nmap -sV 192.168.10.245 目录信息 &#xff1a;使用dirbuster 指纹信息 找漏洞 发现web 中contact有提交界面进行…

[设备] 关于手机设备中几种传感器的研究

一、手机设备中三位坐标系概念 X轴的方向&#xff1a;沿着屏幕水平方向从左到右&#xff0c;如果手机如果不是是正方形的话&#xff0c;较短的边需要水平 放置&#xff0c;较长的边需要垂直放置。Y轴的方向&#xff1a;从屏幕的左下角开始沿着屏幕的的垂直方向指向屏幕的顶端Z轴…

linux操作——yum、systemctl、firewall、hostname、、、

一、什么是yum yum是一种在Linux操作系统中使用的软件包管理器。它可以用来从软件仓库中下载、安装、更新和删除软件包。yum可以自动解决软件包之间的依赖关系&#xff0c;并且可以方便地查找和安装各种软件。在大多数基于Red Hat的Linux发行版中&#xff0c;如CentOS和Fedora&…

牛客 JZ31.栈的压入,弹出序列 C++写法

牛客 JZ31.栈的压入&#xff0c;弹出序列 C写法 思路&#x1f914;&#xff1a; 创建一个栈&#xff0c;push压入序列&#xff0c;然后用栈顶跟弹出序列比&#xff0c;如果一样就出栈并且继续比较&#xff0c;不一样就再次push入栈&#xff0c;直到压入序列走完&#xff0c;如果…

部署伪分布式 Hadoop集群

部署伪分布式 Hadoop集群 一、JDK安装配置1.1 下载JDK1.2 上传解压1.3 java环境配置 二、伪分布式 Hadoop 安装配置2.1 Hadoop 下载2.2 上传解压2.3 Hadoop 文件目录介绍2.4 Hadoop 配置2.4.1 修改 core-site.xml 配置文件2.4.2 修改 hdfs-site.xml 配置文件2.4.3 修改 hadoop-…

【从零开始一步步学习VSOA开发】URL 资源标识

URL 资源标识 概念 在 VSOA 的世界里&#xff0c;所有的差异化均得到统一&#xff0c;所有的硬件、软件服务均提供统一的资源标签 URL。类似 http://&#xff0c;VSOA 的 URL 以 vsoa:// 开始。下面通过 2 个例子介绍 VSOA 统一资源标识的好处&#xff1a; 匹配规则 URL 标…

Modbus poll和Modbus Mbslave的使用

读取Modbus Mbslave中的数据 首先创建COM1和COM2端口 然后 using System.IO.Ports; ​ namespace 通信 {internal class Program{static void Main(string[] args){Console.WriteLine("Hello, World!");SerialPort serialPort new SerialPort("COM1",960…

前缀和专题

板子&#xff1a; &#xff08;占坑&#xff09; Leetcode 238. 除自身以外数组的乘积 优化前&#xff1a;使用前后缀数组记录 class Solution { public:vector<int> productExceptSelf(vector<int>& nums) {int n nums.size();vector<int> pre(n, 1),…

JMeter 压测Http接口

前言 今天产品在会议上吐槽说我们的服务接口连一点点压力都扛不住&#xff0c;用户稍微用下翻译功能&#xff0c;就报错 429。我一听 429 就觉得不对劲&#xff0c;明明4xx 的错误码应该找前端才对的&#xff0c;怎么能找我这个前端后端运维测试工程师呢&#xff1f; 如果是产…

如何在生成式AI里使用 Ray Data 进行大规模 RAG 应用的 Embedding Inference

检索增强生成 (RAG) 是企业级生成式 AI&#xff08;GenAI&#xff09;应用的热门案例之一。多数 RAG 教程演示了如何利用 OpenAI API 结合 Embedding 模型和大语言模型&#xff08;LLM&#xff09;来进行推理&#xff08;Inference&#xff09;。然而&#xff0c;在开发过程中&…

【第16章】Spring Cloud之Gateway全局过滤器(安全认证)

文章目录 前言一、公共模块1. 引入依赖2. 工具类 二、用户服务1. 新建模块2. 引入依赖3. 启动类4. 基本配置5. 登录接口 三、网关服务1. 引入依赖2. 应用配置3. 自定义过滤器 四、单元测试1.介绍2. 登录接口3. 提供者接口3.1 无token3.2 有token 总结 前言 我们已经接入了网关…

构造散列表以及处理冲突问题

目录 一. 散列表的基本概念 二. 散列表的冲突问题 三. 构造散列函数 四. 处理冲突 一. 散列表的基本概念 散列表简而言之就是一个根据一个对应关系&#xff08;这个对应关系也叫散列函数&#xff09;来存储关键码&#xff08;关键字&#xff09;的一个表。 例如&#xff0c;…

SSM电子商务系统-计算机毕业设计源码68470

基于SSM框架的电子商务系统的设计与实现 摘 要 随着电子商务的迅猛发展和计算机信息技术的全面跃升&#xff0c;网上购物系统由于其迎合了人们诉求和期望而渗入社会生活各个层面和角落。本文设计并实现了一个基于SSM框架的电子商务系统。该系统旨在为用户提供一个舒适且快捷的…

创建第一个Spring MVC项目

上篇文章&#xff0c;我们围绕什么是Spring MVC进行讲述了&#xff0c;这篇&#xff0c;我们将在IDEA创建我们的第一个Spring MVC项目。 创建我们的第一个Spring MVC项目 创建项目模块 如果你出现上面小图这样的&#xff0c;代表你就成功创建成功了一个Web项目&#xff0c;当…

商品购物网页的设计

系统名称&#xff1a; 基于TCP网络通信及数据库的网页查询系统 文档作者&#xff1a;清馨 创作时间&#xff1a;2024-8-3 最新修改时间&#xff1a;2024-8-6 最新版本号&#xff1a; 1.0 1.背景描述&#xff1a; 该系统为创建网络并发服务器&#xff0c;通过HTTP超文本网络…

【ML】 如何训练transform model, 模型训练实现细节

【ML】 如何训练transform model, 模型训练实现细节 1. transform 训练 原理2. transform 训练TIPS2.1 copy mechanism![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/69fb84a73d0240cc9042e17ae10bbef7.jpeg) 2. bean search束搜索的工作原理&#xff1a;束搜索的特…

部署DR模式集群

一、配置实验环境 每台主机的防火墙和SELinux都要关掉 systemctl stop firewalld setenforce 0 1、client(eth0为nat模式) 配置好网卡IP和网关IP&#xff0c;然后重启网卡 nmcli connection reload nmcli connection up eth0 [rootclient ~]# cat /etc/NetworkManager/syst…