计算机组成与体系结构:组相联映射(Set-Associative Mapping)

目录

🧩 映射方式问题回顾

🏗️ 组相联映射 

 工作流程 

 地址结构

♻️ 替换策略

示例: 

优点 

⚖️ 与其他映射方式对比


🧩 映射方式问题回顾

直接映射的问题:

  • 优点:实现简单,查找速度快(单一比较器)

  • 缺点:

    • 冲突未命中(Conflict Miss)严重:即使缓存没满,某些块也只能映射到唯一行,造成不必要的替换

例子:如果地址 A 和地址 B 都映射到第 3 行,则每次访问都会把对方替换掉,即使缓存中还有空位。

全相联映射的问题:

  • 优点:消除了冲突未命中(Conflict Miss 几乎为 0)

  • 缺点:

    • 查找成本高:需要并行比较所有缓存行的 Tag → 成本高、功耗大、速度慢

    • 不易扩展到大容量 Cache

🏗️ 组相联映射 

组相联映射 是一种折中策略,它将 Cache 分为多个 集合(sets),每个集合中包含 多条 Cache 行。

每个主存块根据其地址映射到 唯一一个集合,但在这个集合中,它可以存储在 任意一行中。

 

 工作流程 

  • 地址分解:将地址拆分为 Tag, Set Index, Block Offset

  • 定位集合:使用 Set Index 定位到 Cache 中的一个集合

  • 并行比较:在这个集合中并行比较所有行的 Tag 字段

  • 命中判断:

    • 如果某一行的 Tag 匹配且 Valid Bit = 1,则 Hit

    • 否则 Miss,需要替换策略

 地址结构

设:

  • 主存地址长度 = 32 bits

  • Cache 有 2ⁿ 个集合,每个集合有 k 行(称为 k-way set-associative)

那么地址被分为以下几部分:

部分中文功能
Tag标记位用于与 Cache 中存储的 tag 比较
Set Index集合索引确定该块应映射到哪个集合
Block Offset块内偏移定位块内数据位置

如果 Cache 是 4-way set-associative,共有 256 sets,则需要:

  • log₂(256) = 8 位用于 Set Index

  • Block Size = 64 Bytes → Block Offset = 6 位

  • 剩余 32 - 6 - 8 = 18 位为 Tag

♻️ 替换策略

当一个 Set 中所有 Cache Line 都被占满,需要替换一个块,策略包括:

策略中文特点
LRU (Least Recently Used)最近最少使用最常用,也最能提高命中率
Random随机替换简单但命中率较低
FIFO (First-In First-Out)先进先出实现简单,性能一般

每个集合内部相当于是一个 小型的全相联 Cache。

示例: 

访问示例(以地址 77 为例)

  1. 地址 77 → 二进制:1001101

    • Block offset: 01(第2个字节)

    • Set index: 11 → Set 3

    • Tag: 100

  2. Cache 会在 Set 3 的两个 line 中,查找是否有 tag = 100 的块。

    • 若某一行中 tag 匹配 → 命中(Hit)

    • 否则 → 未命中(Miss),触发替换策略(如 LRU)

 映射过程:

优点 

优点说明
更低的冲突失效(Conflict Miss)比 Direct-Mapped Cache 更灵活,一个 Set 内多个行减少映射冲突
接近 Fully Associative 的命中率特别是当 k 比较大时
查找效率适中只需比较一个 Set 中的多个行,而不是所有行(比 Fully Associative 更快)
适配性强可调节“k-way”来平衡速度和命中率

⚖️ 与其他映射方式对比

特性Direct MappingFully AssociativeSet-Associative
映射方式每块 → 1 行每块 → 任意行每块 → 1 个集合中的任意行
冲突未命中极低
硬件复杂度最低最高中等
查找时间最快最慢中等
替换策略无需需要每个集合内部需要

 

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

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

相关文章

机器学习第八讲:向量/矩阵 → 数据表格的数学表达,如Excel表格转数字阵列

机器学习第八讲:向量/矩阵 → 数据表格的数学表达,如Excel表格转数字阵列 资料取自《零基础学机器学习》。 查看总目录:学习大纲 关于DeepSeek本地部署指南可以看下我之前写的文章:DeepSeek R1本地与线上满血版部署:…

基于Spring AI实现多轮对话系统架构设计

文章目录 基于Spring AI实现多轮对话系统架构设计 前言 一、多轮对话系统核心架构 1.1 架构概览 1.2 Spring AI核心优势 二、ChatClient与多轮对话设计 2.1 ChatClient的特性与角色 2.2 实现多轮对话方法 三、Advisors拦截器机制 3.1 Advisors概念与工作原理 3.2 对…

C++中的虚表和虚表指针的原理和示例

一、基本概念 1. 什么是虚函数(virtual function)? 虚函数是用 virtual 关键字修饰的成员函数,支持运行时多态(dynamic polymorphism)。通过基类指针或引用调用派生类重写的函数。 class Base { public:…

FPGA:XILINX FPGA产品线以及器件选型建议

本文将详细介绍Xilinx(现为AMD的一部分)当前的FPGA产品线及其主要特点,并提供器件选型的建议。以下内容基于Xilinx FPGA的最新信息,涵盖产品系列、特性及选型指导。由于Xilinx已被AMD收购,产品线以AMD Xilinx品牌为主&…

【C++】多线程和多进程

在C++中,多线程通信(同一进程内的线程间交互)和进程间通信(IPC,不同进程间的数据交换)是构建并发系统的核心技术。以下是两种通信机制的详细介绍和典型实现: 一、多线程通信(线程间同步与数据共享) 1. 共享内存与同步原语 通过全局变量或对象成员变量实现数据共享,…

PC Cleaner软件,它能帮助用户轻松清理和优化电脑,提升系统性能。

不用破解就能用!这款超神的电脑清理 Pro 版,绝了! 宝子们,我是你们的数码小助手蓝木云!不知道大家有没有这种感觉,电脑用久了,就像住久了没打扫的屋子,越来越 “乱”,运…

linux中fork()函数的小问题

问题描述&#xff1a;分析下列代码&#xff0c;分别能产生多少a // 1 for(int i0; i<3; i){ printf("a\n"); fork(); }// 2 for(int i0; i<3; i){ fork(); printf("a\n"); }// 3 for(int i0; i<3; i){ fork(); printf("a"); } fflus…

阿克曼-幻宇机器人系列教程2- 机器人交互实践(Topic)

在上一篇文章中&#xff0c;我们介绍了两种登录机器人的方式&#xff0c;接下来我们介绍登录机器人之后&#xff0c;我们如何通过topic操作命令实现与机器人的交互。 1. 启动 & 获取topic 在一个终端登录树莓派后&#xff0c;执行下列命令运行机器人 roslaunch huanyu_r…

51c嵌入式~电路~合集27

我自己的原文哦~ 一、7805应用电路 简介 如上图&#xff0c;7805 集成稳压电路。 7805是串联式三端稳压器&#xff0c;三个端口分别是电压输入端&#xff08;IN&#xff09;&#xff0c;地线&#xff08;GND&#xff09;&#xff0c;稳压输出&#xff08;OUT&#xff09;…

Vitrualbox完美显示系统界面(只需三步)

目录 1.使用vitrualbox的增强功能&#xff1a;​编辑 2.安装增强功能&#xff08;安装完后要重启虚拟机&#xff09;&#xff1a; 3. 调整界面尺寸&#xff08;如果一个选项不行的话&#xff0c;就多试试其他不同的百分比&#xff09;&#xff1a; 先看看原来的&#xff0c;…

2025年第十六届蓝桥杯软件赛省赛C/C++大学A组个人解题

文章目录 题目A题目C&#xff1a;抽奖题目D&#xff1a;红黑树题目E&#xff1a;黑客题目F&#xff1a;好串的数目 https://www.dotcpp.com/oj/train/1166/ 题目A 找到第2025个素数 #include <iostream> #include <vector> using namespace std; vector<i…

电机控制储备知识学习(一) 电机驱动的本质分析以及与磁相关的使用场景

目录 电机控制储备知识学习&#xff08;一&#xff09;一、电机驱动的本质分析以及与磁相关的使用场景1&#xff09;电机为什么能够旋转2&#xff09;电磁原理的学习重要性 二、电磁学理论知识1&#xff09;磁场基础知识2&#xff09;反电动势的公式推导 附学习参考网址欢迎大家…

JMeter同步定时器 模拟多用户并发访问场景

同步定时器 JMter同步定时器的作用主要在于模拟多用户并发访问的场景&#xff0c;确保多个线程能够同时执行某个操作&#xff0c;达到真正的并发效果。 当多个线程同时启动时&#xff0c;它们可能会在不同的时间间隔内执行&#xff0c;这样就无法达到真正的并发效果。&#xff…

C++11异步编程 --- async

C11异步编程 — async和future C11引入了async和future机制&#xff0c;用于简化异步编程和并发操作。这两个组件位于<future>头文件中&#xff0c;提供了高级的异步任务管理接口。 一、async 1.定义 std::async std::async是一个函数模板&#xff0c;用于启动一个异…

(七)深度学习---神经网络原理与实现

分类问题回归问题聚类问题各种复杂问题决策树√线性回归√K-means√神经网络√逻辑回归√岭回归密度聚类深度学习√集成学习√Lasso回归谱聚类条件随机场贝叶斯层次聚类隐马尔可夫模型支持向量机高斯混合聚类LDA主题模型 一.神经网络原理概述 二.神经网络的训练方法 三.基于Ker…

[Java实战]Spring Boot 整合 Swagger2 (十六)

[Java实战]Spring Boot 整合 Swagger2 &#xff08;十六&#xff09; 一、Swagger 的价值与痛点 为什么需要 API 文档工具&#xff1f; 开发阶段&#xff1a;前后端高效协作&#xff0c;实时验证接口测试阶段&#xff1a;提供标准化测试用例维护阶段&#xff1a;降低新人理解…

系统稳定性之上线三板斧

&#x1f4d5;我是廖志伟&#xff0c;一名Java开发工程师、《Java项目实战——深入理解大型互联网企业通用技术》&#xff08;基础篇&#xff09;、&#xff08;进阶篇&#xff09;、&#xff08;架构篇&#xff09;清华大学出版社签约作家、Java领域优质创作者、CSDN博客专家、…

题海拾贝:P1833 樱花

Hello大家好&#xff01;很高兴我们又见面啦&#xff01;给生活添点passion&#xff0c;开始今天的编程之路&#xff01; 我的博客&#xff1a;<但凡. 我的专栏&#xff1a;《编程之路》、《数据结构与算法之美》、《题海拾贝》、《C修炼之路》 欢迎点赞&#xff0c;关注&am…

摆脱拖延症的详细计划示例

以下是一个以一周为周期&#xff0c;帮助你摆脱拖延症的详细计划示例&#xff0c;你可以根据自己的实际情况进行调整和完善。 --- # 摆脱拖延症一周计划 ## 一、计划目标 通过一系列有针对性的方法和行动&#xff0c;逐步克服拖延习惯&#xff0c;提高任务执行效率和自我管理…

实物工厂零件画图案例(上)

文章目录 滑台气缸安装板旋转气缸安装板张紧调节块长度调节块双轴气缸安装板步进电机安装板梯形丝杆轴承座 简介&#xff1a;案例点击此处下载&#xff0c;这次的这几个案例并没有很大的难度&#xff0c;练习这几个案例最为重要的一点就是知道&#xff1a;当你拿到一个实物的时…