超標量處理器設計2-cache

1. cache 介紹

影響Cache缺失的情況有3種:

  1. Compulsory: 第一次被訪問的指令或者數據肯定不會在cache中,需要通過預取來減少這種缺失
  2. Capcity: Cache容量越大,缺失就可以更少, 程序頻繁使用的三個數據來源于3個set, 但是,核由于面積的約束,只有2個set
  3. Conflict, 指多個數據映射到Cache中的同一個位置, 程序頻繁使用的三個數據來源于同一個Cache set;可以使用Victim Cache來緩解這個問題

1.1 cache的結構

cache主要由兩部分組成,Tag部分和Data部分。Data部分用來保存一片連續地址的數據,而Tag部分則是存儲這片連續數據的公共地址,一個Tag和它對應的所有數據組成的一行稱為一個Cache line; 而Cache line中的數據部分稱為數據塊(Cache data block), 如果一個數據塊可以存儲在Cache中的多個地方,這些被同一個地址找到的多個Cache line稱為一個Cache set。如TLB和Victim Cache多采用了全相連結構,而普通的I-cache和D-cache則采用組相連結構
在這里插入圖片描述

1.2 Cache的實現方式

并行訪問:如果同時訪問Tag SRAM和Data SRAM, 我們稱之為并行訪問。將讀出來的地址和數據都送到一個多路選擇器上,這個多路選擇器受到Tag比較結構的控制。然后根據存儲器地址中的block offset的值選出合適的字節,一般將選擇字節的過程稱為數據對齊。

  1. 地址計算: 計算得出存儲器的地址
  2. 沖突檢查: 對load/store指令之間存在的相關性進行檢查
  3. 并行訪問Tag SRAM和Data SRAM, 并使用結果進行選擇
  4. 使用存儲器中的block offset 從data block 種選出最終需要的數據

截屏2025-01-17 22.28.12.png

串行訪問:訪問SRAM這一級少了mux, 對于時序較為友好,但是多了一個cycle。串行訪問的功耗也更為友好,因為是根據比較之后的結果進行訪問
截屏2025-01-17 22.33.10.png

Note: 如果處理器是超標量處理器,可以亂序執行,那么我們選擇串行訪問效果更好,因為訪問cache多的這個時鐘周期可以通過執行其它指令來掩蓋掉,并且通過串行訪問,可以減少delay, 提高時鐘頻率。如果是普通的順序執行的處理器,選擇并行訪問比較好。

1.3 cache的寫入

寫通:當數據寫到D-cache的同時,也寫入到它的下級存儲器中
寫回:當數據寫到D-cache時,不會立即寫入到下級存儲器中,只會在cache line中做一個記號,只有當該cache line需要被替換時,才會寫入到下一級存儲器中
上述情況都是默認要寫入的地址總是在D-Cache中,如果發現這個地址不在D-cache上時,就發生了寫缺失(write miss), 此時最簡單的處理方法就是將數據寫到下級存儲器,稱為non-write allocate.
如果發生寫缺失時,將發生缺失的地址對應的整個數據塊取出來,將數據合并到這個數據塊中,然后將被改過的數據塊寫入到D-Cache中(wirte allocate), 之后也需要將這個數據塊寫入到下級存儲器中(write allocate)
NOTE: 寫通方式的優點是結構簡單,方便一致性管理。缺點是執行效率不高,每一次寫入都需要修改下級存儲器。在一般的處理器當中,L2 Cache會采用寫回的方式,但對于L1 cache來看,寫通的方式也是可以接受的,這樣可以簡化流水線的設計,便于在多核的情況下管理內存一致性。

1.4 提高cache的性能

  1. write buffer

截屏2025-01-17 22.35.54.png

  1. 多級cache

截屏2025-01-17 22.38.07.png

現在L1 cache一般都做成inclusive的模式,因為實現簡單,并且方便管理
3. victim cache
victim cache可以保存最近被提出cache 的數據, 因此所有的cache set 都可以利用它來提高way 的個數, 通常victim cache 采用全相連的方式,容量都比較小。
截屏2025-01-17 22.39.09.png

  1. 硬件預取 prefetch
    由于程序本身是串行執行的,因此只需要訪問I-Cache中的一個數據塊的時候,將它后面的數據塊也取出放到I-cache中就可以了,但是存在分支指令,使得不會使用的指令進入了I-cache, 這一方面降低了I-Cache實際可用的容量,一方面占用了可能有用的指令,稱為Cache 污染。為了避免這種情況的發生,我們可以將預取的指令放到一個單獨的緩存中
    截屏2025-01-17 22.40.00.png
  2. 多端口cache
    5.1 true multi-port
    真的使用一個多端口的SRAM來實現多端口的Cache,SRMA中的每個cell支持兩個讀端口和一個寫端口。缺點是多端口的CELL需要驅動多個讀端口,因此需要更多的訪問時間,功耗也會增大。
    5.2 Multiple Cache copies
    將SRAM進行復制來實現多端口的讀寫,這樣可以基本消除讀處理周期時間的影響,但是,這種方法浪費面積,并且需要保持兩個CAche的同步,功耗也比較大。
    5.3 multi-banking
    每個bank都只有一個端口,如果在一個周期之內,CACHE的多個訪問地址位于不同的bank, 則不會發生問題,如果處于同一個bank, 則會引起bank 沖突

2. cache的分類

2.1 virtual cache

  1. TLB只是加速了從虛擬地址到物理地址的轉換,但是要直接從物理內存中取數據依然很慢,因此可以用cache將物理地址到數據的轉換過程緩存起來。
    截屏2025-01-17 22.46.32.png

  2. 我們可以直接將虛擬地址和物理存儲中的數據對應起來,這樣就簡化了查找TLB的過程。但是會引入兩個問題,一個是不同的虛擬地址對應同一個物理位置,由于不同的虛擬地址會占用不同的cache line, 因此浪費了寶貴的cache空間,造成cache容量的減少,二是執行store指令時,本質上應該對同一個物理地址的cache line都應該修改。
    截屏2025-01-17 22.48.27.png

  3. 由于虛擬地址和物理地址的低12位(4K)是相等的,因此如果cache的容量小于4K, 那么尋址cache的地址就不會大于12位,此時即使兩個不同的虛擬地址對應一個物理位置,他們尋址cache的地址也會相同。

  4. 當cached的容量大于頁的大小時,我們需要通過bank結構來解決這種重命名的問題,可以使用L2 CAche來實現這個功能,使L2 cache中包括所有的L1 cache的內容,也就是之前的inclusive的方式
    截屏2025-01-17 22.51.11.png
    截屏2025-01-17 22.51.40.png

小結

cache的內容較多,涉及到cache pipeline的設計(并行結構,串行結構),cache的大小計算,cache 內部結果的設計(multi-bank, 組相連,全相聯等),對于這些分知識點,后續也需要單獨介紹。

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

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

相關文章

linux 安裝PrometheusAlert配置釘釘告警

在 Linux 上安裝 PrometheusAlert 并配置釘釘告警的步驟如下: 1. 準備工作 釘釘機器人: 在釘釘群中創建一個機器人,獲取 Webhook URL。示例 Webhook URL:https://oapi.dingtalk.com/robot/send?access_token=your_dingtalk_token。PrometheusAlert 安裝包: 從 Prometheus…

當PHP遇上區塊鏈:一場奇妙的技術之旅

PHP 與區塊鏈的邂逅 在技術的廣袤宇宙中,區塊鏈技術如同一顆耀眼的新星,以其去中心化、不可篡改、透明等特性,掀起了一場席卷全球的變革浪潮。眾多開發者懷揣著對新技術的熱忱與探索精神,紛紛投身于區塊鏈開發的領域,試…

vscode的安裝與使用

下載 地址:https://code.visualstudio.com/ 安裝 修改安裝路徑(不要有中文) 點擊下一步,創建桌面快捷方式,等待安裝 安裝中文插件 可以根據自己的需要安裝python和Jupyter插件

32單片機綜合應用案例——物聯網(IoT)環境監測站(四)(內附詳細代碼講解!!!)

無論你身處何種困境,都要堅持下去,因為勇氣和毅力是成功的基石。不要害怕失敗,因為失敗并不代表終結,而是為了成長和進步。相信自己的能力,相信自己的潛力,相信自己可以克服一切困難。成功需要付出努力和堅…

淺談云計算19 | OpenStack管理模塊 (上)

OpenStack管理模塊(上) 一、操作界面管理架構二、認證管理2.1 定義與作用2.2 認證原理與流程2.2.1 認證機制原理2.2.2 用戶認證流程 三、鏡像管理3.1 定義與功能3.2 鏡像服務架構3.3 工作原理與流程3.3.1 鏡像存儲原理3.3.2 鏡像檢索流程 四、計算管理4.…

RK3568 Android11 鎖屏界面屏蔽下拉狀態欄

參考文章: Android R鎖屏界面屏蔽下拉狀態欄_pulseexpansionhandler-CSDN博客 前提增加狀態欄控制顯隱屬性,以下面文章為前提補充功能 RK3568 Android11 狀態欄和導航欄增加顯示控制功能-CSDN博客 修改文件位置: frameworks/base/package…

彩色圖像面積計算一般方法及MATLAB實現

一、引言 在數字圖像處理中,經常需要獲取感興趣區域的面積屬性,下面給出圖像處理的一般步驟。 1.讀入的彩色圖像 2.將彩色圖像轉化為灰度圖像 3.灰度圖像轉化為二值圖像 4.區域標記 5.對每個區域的面積進行計算和顯示 二、程序代碼 %面積計算 cle…

分布式理解

分布式 如何理解分布式 狹義的分布是指,指多臺PC在地理位置上分布在不同的地方。 分布式系統 分布式系**統:**多個能獨立運行的計算機(稱為結點)組成。各個結點利用計算機網絡進行信息傳遞,從而實現共同的“目標或者任…

深入了解卷積神經網絡(CNN):圖像處理與深度學習的革命性技術

深入了解卷積神經網絡(CNN):圖像處理與深度學習的革命性技術 導語 卷積神經網絡(CNN)是現代深度學習領域中最重要的模型之一,特別在計算機視覺(CV)領域具有革命性的影響。無論是圖…

QT:IconButton的動畫效果

要實現IconButton,需要處理背景。參考: QT之IconWidget-CSDN博客 隨后就是Button的按下動畫效果。實現也簡單。思路就是記錄按下狀態,然后在繪制時偏移一個像素(也可以繪制另外一個圖)。 增加一個字段,記…

Android渲染Latex公式的開源框架比較

對比主流框架,介紹如下幾款 1、AndroidMath 官網:https://github.com/gregcockroft/AndroidMath/tree/master 基于android原生view方式渲染 優點:速度快,開源協議 MIT license 缺點:不支持文字公式混合渲染 2、Ma…

Red Hat8:搭建FTP服務器

目錄 一、匿名FTP訪問 1、新建掛載文件 2、掛載 3、關閉防火墻 4、搭建yum源 5、安裝VSFTPD 6、 打開配置文件 7、設置配置文件如下幾個參數 8、重啟vsftpd服務 9、進入圖形化界面配置網絡 10、查看IP地址 11、安裝ftp服務 12、遇到拒絕連接 13、測試 二、本地…

VS Code--常用的插件

原文網址:VS Code--常用的插件_IT利刃出鞘的博客-CSDN博客 簡介 本文介紹VS Code(Visual Studio Code)常用的插件。 插件的配置 默認情況下,插件會放到這里:C:\Users\xxx\.vscode\extensions 修改插件位置的方法 …

Re78 讀論文:GPT-4 Technical Report

諸神緘默不語-個人CSDN博文目錄 諸神緘默不語的論文閱讀筆記和分類 論文全名:GPT-4 Technical Report 官方博客:GPT-4 | OpenAI appendix懶得看了。 文章目錄 1. 模型訓練過程心得2. scaling law3. 實驗結果減少風險 1. 模型訓練過程心得 模型結構還…

推薦單通道有刷直流電機驅動芯片AT8236

單通道直流有刷電機驅動芯片AT8236 描述應用特點型號選擇典型應用原理圖管腳列表推薦工作條件 atT A 25C電氣特性 atT A 25C,V M 24VH橋控制電流控制死區時間休眠模式過流保護 (OCP)過溫保護 (TSD)欠壓鎖定保護(UVLO) PCB 版圖建議典型應用示例 描述 AT8236是一款直流有刷電機…

聚銘網絡6款產品入選CCIA《網絡安全專用產品指南》

近日,中國網絡安全產業聯盟CCIA正式發布《網絡安全專用產品指南》(第二版)(以下簡稱《指南》)。聚銘網絡憑借突出技術優勢、創新能力以及市場積累,旗下安全產品成功入選防火墻、網絡安全審計、日志分析、網…

將 AzureBlob 的日志通過 Azure Event Hubs 發給 Elasticsearch(1)

問題 項目里使用了 AzureBlob 存儲了用戶上傳的各種資源文件,近期 AzureBlob 的流量費用增長很快,想通過分析Blob的日志,獲取一些可用的信息,所以有了這個需求:將存儲賬戶的日志(讀寫,審計&…

ESP32S3基于espidf接入網絡獲取NTP時間

ESP32S3基于espidf接入網絡獲取NTP時間 📌 相關篇《ESP32S3基于espidf接入網絡配置介紹》📍官方相關SNTP 時間同步介紹文檔:https://docs.espressif.com/projects/esp-idf/zh_CN/stable/esp32/api-reference/system/system_time.html?highli…

性能測試 - Locust WebSocket client

Max.Bai 2024.10 0. 背景 Locust 是性能測試工具,但是默認只支持http協議,就是默認只有http的client,需要其他協議的測試必須自己擴展對于的client,比如下面的WebSocket client。 1. WebSocket test Client “”“ Max.Bai W…

【藍橋杯選拔賽真題63】C++奇數 第十四屆藍橋杯青少年創意編程大賽 算法思維 C++編程選拔賽真題解

目錄 C++奇數 一、題目要求 1、編程實現 2、輸入輸出 二、算法分析 三、程序編寫 四、運行結果 五、考點分析 七、推薦資料 C++奇數 第十四屆藍橋杯青少年創意編程大賽C++選拔賽真題 一、題目要求 1、編程實現 給定兩個正整數N和M(10≤N<M≤10000),請找出N到M…