計算機組成與體系結構:組相聯映射(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.pswp.cn/pingmian/80619.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/80619.shtml
英文地址,請注明出處:http://en.pswp.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;當你拿到一個實物的時…