計算機組成與體系結構:緩存設計概述(Cache Design Overview)

目錄

Block Placement(塊放置)

?Block Identification(塊識別)

Block Replacement(塊替換)

Write Strategy(寫策略)

總結:


高速緩存設計包括四個基礎核心概念,它們分別是:Block Placement(塊放置)、Block Identification(塊識別)、Block Replacement(塊替換)以及Write Strategy(寫策略)。這四者共同構成了高速緩存的基本工作機制,理解它們是深入學習緩存設計 的前提。

Block Placement(塊放置)

這是指主存中的數據塊應該被放置到 Cache 的哪個位置。

核心問題:

一個主存塊可以放在 Cache 的哪些位置??

📚 三種主要的映射方式:

直接映射(Direct-Mapped)

  • 每個主存塊只能映射到 Cache 中的一個特定位置。

  • 優點:實現簡單,訪問速度快

  • 缺點:沖突率高,多個主存塊可能爭用同一個位置

全相聯映射(Fully Associative)

  • 主存中的任意數據塊都可以放入 Cache 的任意位置。

  • 優點:沖突最小化

  • 缺點:硬件復雜,查找開銷大

組相聯映射(Set-Associative)

  • Cache 分成多個集合(Set),每個集合中有多個行(Way)。

  • 每個主存塊映射到一個集合,再在集合中任意位置放置。

  • 常見形式如:2-way, 4-way 等

  • 折中方案:在沖突率和復雜度之間取得平衡

?Block Identification(塊識別)

當我們訪問某個內存地址時,Cache 必須判斷這個地址是否在 Cache 中。

核心問題:

如何在 Cache 中識別這個塊是否存在?如果存在,是哪一塊?

🧱 Cache 的地址劃分:

  • Tag(標記位):用于識別主存塊是否和 Cache 中的塊匹配

  • Index(索引位):用于定位塊應該在哪個集合或位置

  • Block Offset:用于在塊內部定位具體的字節

?匹配流程:

對于一個內存訪問,系統會從地址中提取出:

  1. Index:找到對應的 Set(或直接映射的位置)

  2. Tag:與 Set 中每個塊的 Tag 比較(比較命中即是命中)

  3. 若命中,使用 Offset 訪問數據;否則觸發缺失(Miss)

直接映射?

組相聯映射

全相聯映射

Block Replacement(塊替換)

當 Cache 中的目標位置已經被占用,而新的主存塊又必須裝入 Cache 時,我們需要替換掉某個已經存在的塊。

核心問題:

如果緩存滿了,哪一個塊應該被替換掉?

?? 替換動作的標準流程:

  1. 判斷是否命中(如果命中則直接訪問);

  2. 如果不命中,判斷 Cache 是否有空位(組或全相聯中);

  3. 若無空位 → 觸發 Block Replacement 策略:

    • 找到最“合適”被淘汰的塊;

    • 若該塊為“臟塊” → 寫回到主存;

    • 裝載新的主存塊進入該位置。

🤖 替換策略:

  1. LRU(Least Recently Used):替換最近最少使用的數據塊(常用)

  2. FIFO(First-In First-Out):替換最早進入緩存的塊(簡單但可能非最優)

  3. Random Replacement:隨機選擇一個塊替換(實現簡單)

  4. Pseudo-LRU:近似 LRU,用于減少硬件實現的復雜性

?策略選擇的影響:

  • 替換策略直接影響 命中率(Hit Rate) 和 系統性能

  • LRU 在局部性較強的訪問模式中表現良好,但實現開銷高

Write Strategy(寫策略)

在計算機系統中,CPU 與 Cache 通信非常快,而與主存通信相對較慢。Cache 作為主存的“高速中介”,用于加速數據訪問。但當 CPU 向內存寫數據時,如果寫入 cache 后主存中數據不更新,就可能出現 一致性問題。

為了保證數據的一致性和性能,寫策略定義了“數據何時從 cache 寫入主存”的規則。

兩大類策略:

? 寫命中策略(Write Hit Policy):

Write Through(直寫)

  • 定義:數據在寫入 cache 的同時,也立即寫入主存。

  • 優點:主存與 cache 保持一致,簡單可靠。

  • 缺點:寫操作較慢(因為每次都涉及主存寫入);可能帶來寫放大。

  • 適合場景:對數據一致性要求高的系統。

CPU -> Cache(寫入) -> Memory(立即也寫入)

Write Back(回寫)

  • 定義:數據只寫入 cache,不立即寫入主存,直到該 cache 塊被替換(evict)時,才寫回主存。

  • 優點:寫操作延遲小、性能好,減少對主存訪問。

  • 缺點:主存與 cache 不總是一致;系統復雜度更高,需要“臟位”(Dirty Bit)追蹤是否修改過。

  • 適合場景:高性能計算,對延遲敏感但一致性可以稍后維護的系統。

CPU -> Cache(寫入)
↓
稍后被替換時 -> Memory(回寫)

?

? 寫缺失策略(Write Miss Policy):

發生未命中時(cache 中沒有對應數據)該怎么處理,有兩個選項:?

  1. Write Allocate(寫分配)

    • 缺失時先將塊讀入 Cache,然后寫入 Cache(常用于 Write-Back)

  2. No Write Allocate(非寫分配)

    • 缺失時直接寫主存,不將數據加載到 Cache(常用于 Write-Through)

總結:

這四部分實際上是一個閉環的機制:

  1. 塊放置決定了一個主存塊被映射到 Cache 的哪個位置;

  2. 塊識別決定我們如何判斷一個內存訪問是否命中 Cache;

  3. 塊替換決定當位置沖突時該替換誰;

  4. 寫策略決定了寫入數據時 Cache 和主存的一致性如何維護。

它們密切關聯,共同定義了 Cache 的工作行為和性能表現。

?有了以上四個基礎組成部分的理解,我們就可以正式邁入 Cache Design 的大門了。Cache

Design 是對這些策略的組合與優化,使得 Cache 在訪問速度、能效、硬件成本和命中率之間達成

平衡。一個好的設計往往結合特定應用場景,對上述四大機制做出權衡和創新。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/81721.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/81721.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/81721.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Tomcat多應用部署與靜態資源路徑問題全解指南

🧑 博主簡介:CSDN博客專家、CSDN平臺優質創作者,高級開發工程師,數學專業,10年以上C/C, C#, Java等多種編程語言開發經驗,擁有高級工程師證書;擅長C/C、C#等開發語言,熟悉Java常用開…

Python----目標檢測(labelimg和labelme的安裝與使用,Pycharm配置教程)

一、labelimg labelimg是一款開源的圖像標注工具,標簽可用于分類和目標檢測,它是用python寫的,并使用Qt作為其圖形界面,簡單好用(雖然是英文版的)。其注釋以 PASCAL VOC格式保存為XML文件,這是I…

Vue項目部署服務器

Vue項目部署服務器 目錄 Vue項目部署服務器環境配置nginx開放端口打包vue項目配置nginx 環境 vue 2.6.14 nginx 1.26.0配置nginx 準備一個服務器實例 安裝nginx所需依賴 yum -y install pcre* yum -y install openssl*下載wget yum install wget下載nginx到/usr/local cd…

spring框架中的本地緩存:spring cache基本使用

基本概念及原理 處理邏輯 Spring Cache 是 Spring 提供的一整套的緩存解決方案。 雖然它本身并沒有提供緩存的實現,但是它提供了一整套的接口和代碼規范、配置、注解等,這樣它就可以整合各種緩存方案了 處理邏輯:每次調用某方法&#xff…

AI大模型學習二十四、實踐QEMU-KVM 虛擬化:ubuntu server 25.04 下云鏡像創建Ubuntu 虛擬機

一、說明 雖然說大部分的場合,docker都能解決問題,但是有些大型的軟件安裝時如果修改配置會很麻煩,比方說前面遇到的code-server和dify 默認都是80和443端口要使用,安裝在一起就會端口沖突,通過該端口來解決問題&#…

安卓中0dp和match_parent區別

安卓中的 0dp 和 match_parent 的區別? 第一章 前言 有段時間,看到同事在編寫代碼的時候,寫到的是 0dp 有時候自己寫代碼的時候,編寫的是 match_parent 發現有時候效果很類似。 后來通過一個需求案例,才發現兩者有著…

二十、案例特訓專題3【系統設計篇】web架構設計

一、前言 二、內容提要 三、單機到應用與數據分離 四、集群與負載均衡 五、集群與有狀態無狀態服務 六、ORM 七、數據庫讀寫分離 八、數據庫緩存Memcache與Redis 九、Redis數據分片 哈希分片如果新增分片會很麻煩,需要把之前數據取出來再哈希除模 一致性哈希分片是…

基于Rust語言的Rocket框架和Sqlx庫開發WebAPI項目記錄(一)

前置說明 開發語言:Rust Web框架:Rocket 數據庫:PostgreSQL 開發步驟 新建項目: cargo new projectname 在Cargo.toml文件里配置如下依賴: [dependencies] rocket {version"0.5.0",features["json&qu…

中國城市間交通駕車距離矩陣(2024)

中國城市間交通駕車距離矩陣(2024) 1852 數據簡介 中國城市中心的交通駕車距離,該數據為通過審圖號GS(2024)0650的中國城市地圖得其城市中心距離,再通過高德地圖api計算得出其交通駕車最短距離矩陣,單位為KM,方便大家研究使用。…

MySQL替換瀚高數據庫報錯: TO_DAYS()不存在(APP)

文章目錄 環境癥狀問題原因解決方案報錯編碼 環境 系統平臺:中標麒麟(海光)7,中標麒麟(飛騰)7 版本:4.5 癥狀 MySQL替換為瀚高數據庫進行應用系統適配報錯:TO_DAYS()不…

驅動-Linux定時-timer_list

了解內核定時相關基礎知識 文章目錄 簡要介紹timer_list 特點API 函數實驗測試程序 - timer_mod.c編譯文件-Makefile實驗驗證 注意事項總結 簡要介紹 硬件為內核提供了一個系統定時器來計算流逝的時間(即基于未來時間點的計時方式, 以當前時刻為計時開始…

計算機網絡概要

?絡相關基礎知識 協議 兩設備之間使?光電信號傳輸信息數據 要想傳遞不同信息 那么?者?就需要約定好的數據格式 層 封裝 繼承 多態是計算機的性質 它們?持了軟硬件分層的實現 同層協議可以?接通信 同層協議?不直接通信 是各?調?下層提供的結構能?完成通信 分層…

QT 使用QPdfWriter和QPainter繪制PDF文件

QT如何生產pdf文件,網上有許多文章介紹,我也是看了網上的文章,看他們的代碼,自己琢磨琢磨,才有了本編博客; 其他什么就不詳細說了,本篇博客介紹的QPdfWriter和QPainter繪制PDF文件;…

企業標準信息公共服務平臺已開放標準通編輯器訪問入口

標準通 數字化標準編輯器 專業、高效、便捷 企業標準信息公共服務平臺 近日,企業標準信息公共服務平臺已開放標準通編輯器訪問入口,可進入官網指定版塊使用! 核心功能亮點 解決企業痛點 傳統標準編制,需反復核對格式、逐條…

【Hadoop】--HA高可用搭建--3.2.2

修改環境配置文件 hadoop-env.sh # 在文件末尾添加以下內容: # java_home記得修改 export JAVA_HOME/usr/java/jdk1.8.0xxxx export HDFS_NAMENODE_USERroot export HDFS_DATANODE_USERroot export HDFS_ZKFC_USERroot export HDFS_JOURNALNODE_USERroot export YA…

【skywalking】index“:“skywalking_metrics-all“},“status“:404}

skywalking 啟動報錯 java.lang.RuntimeException: {"error":{"root_cause":[{"type":"index_not_found_exception","reason":"no such index [skywalking_metrics-all]","resource.t ype":"inde…

【Android】從垂直同步到屏幕刷新機制(一)

【Android】從垂直同步到屏幕刷新機制 本文參考以及部分圖片來源: 垂直同步_小科普:“垂直同步”究竟是什么?-CSDN博客 “終于懂了” 系列:Android屏幕刷新機制—VSync、Choreographer 全面理解!-騰訊云開發者社區-騰訊…

ACL完全解析:從權限管理到網絡安全的核心防線

訪問控制列表(ACL)是一種用于管理資源訪問權限的核心安全機制,廣泛應用于操作系統和網絡設備中。以下是對ACL的詳細解析: 1. 基本概念 定義:ACL是由多個訪問控制條目(ACE)組成的列表&#xff0…

代碼審計-php框架開發,實戰tp項目,打擊微交易,源碼獲取,擴大戰果

實戰,不安全寫法引發的注入 這個bc靶場源碼沒有,看老師演示 打開很明顯的tp框架源碼 拿到tp框架之后第一步,搜索版本信息5.0.5 兩個思路 1.代碼的不安全寫法 2.版本自身存在的漏洞 全局搜索where看看也沒有不安全的 哎?&…

大模型的實踐應用43-基于Qwen3(32B)+LangChain框架+MCP+RAG+傳統算法的旅游行程規劃系統

大家好,我是微學AI,今天給大家介紹一下大模型的實踐應用43-基于Qwen3(32B)+LangChain框架+MCP+RAG+傳統算法的旅游行程規劃系統。本報告將闡述基于大模型Qwen3(32B)、LangChain框架、MCP協議、RAG技術以及傳統算法構建的智能旅游行程規劃系統。該系統通過整合多種技術優勢,實…