HNU計算機體系結構-實驗3:多cache一致性算法

文章目錄

  • 實驗3 多cache一致性算法
    • 一、實驗目的
    • 二、實驗說明
    • 三 實驗內容
      • 1、cache一致性算法-監聽法模擬
      • 2、cache一致性算法-目錄法模擬
    • 四、思考題
    • 五、實驗總結

實驗3 多cache一致性算法

一、實驗目的

熟悉cache一致性模擬器(監聽法和目錄法)的使用,并且理解監聽法和目錄法的基本思想,加深對多cache一致性的理解。

做到給出指定的讀寫序列,可以模擬出讀寫過程中發生的替換、換出等操作,同時模擬出cache塊的無效、共享和獨占態的相互切換。

二、實驗說明

學習cache一致性監聽法和目錄法,并且進行一致性算法的模擬實驗,同時熟悉相關知識。

三 實驗內容

1、cache一致性算法-監聽法模擬

1) 利用監聽法模擬器進行下述操作,并填寫下表

以下 I 表示無效, S表示共享, E表示獨占。模擬器采用不優化設置.

所進行的訪問是否發生了替換?是否發生了寫回?監聽協議進行的操作與塊狀態改變
CPU A 讀第5塊替換 Cache A的塊1CPU A讀不命中, Cache A發出BusRd信號, 存儲器第5塊經Bus傳送到Cache A第1塊, Cache A第1塊狀態從I變成S
CPU B 讀第5塊替換Cache B的塊1CPU B讀不命中, Cache B發出BusRd信號, 存儲器第5塊經Bus傳送到Cache B第1塊, Cache B第1塊狀態從I變成S
CPU C 讀第5塊替換Cache C的塊1CPU C讀不命中, Cache C發出BusRd信號, 存儲器第5塊經Bus傳送到Cache C第1塊, Cache C第1塊狀態從I變成S
CPU B 寫第5塊CPU B寫命中, Cache B向Bus發出寫作廢信號, Cache A第1塊和Cache C第1塊狀態都從S變成I, Cache B第1塊狀態從S變成E
CPU D 讀第5塊替換 Cache D的塊1Cache B的塊1寫回CPU D讀不命中, Cache D發出BusRd信號, Cache B監聽到后把它的第1塊寫回到存儲器第5塊, 然后狀態從E變成I。之后該塊又從存儲器傳送到Cache D第1塊, 狀態設為E
CPU B 寫第21塊替換CacheB 的塊1CPU B寫不命中, Cache B發出BusRdx信號, 存儲器第21塊經Bus傳送到Cache B第1塊, 將原本的第1塊替換出去, 狀態設為E
CPU A 寫第23塊替換CacheA的塊3CPU A讀不命中, Cache A發出BusRdx信號, 存儲器第23塊經Bus傳送到Cache A第3塊, 狀態設為E
CPU C 寫第23塊替換CacheC的塊3CacheA的塊3寫回CPU C寫不命中, Cache C發出BusRdx信號, Cache A監聽到該信號, 將其第3塊寫回到存儲器第23塊, 同時Cache A中該塊狀態改為I。之后存儲器第23塊傳送到Cache C第3塊, 狀態設為E
CPU B 讀第29塊替換CacheB的塊1CacheB的塊1寫回CPU B讀不命中, Cache B發出BusRd信號, 存儲器第29塊經Bus傳送到Cache B第1塊, 將原來的塊替換出去, 將狀態設為S
CPU B 寫第5塊替換CacheB的塊1CPU B寫不命中, Cache B發出BusRdx信號, Cache D監聽到該信號后將其第1塊作廢, 存儲器第5塊傳送到Cache B第1塊, 替換原來的塊, 狀態設為E

2) 請截圖,展示執行完以上操作后整個cache系統的狀態

image-20231209105438044

監聽法的基本原理是,每個處理器核心的緩存都可以監視(監聽)其他核心對共享數據的讀寫操作。當一個處理器核心對共享數據進行寫入時,它會發送一個寫入操作的通知(invalidate、update等)給其他核心的緩存,告知它們更新或無效化相應的緩存行。其他核心的緩存會在收到通知后,根據通知的類型進行相應的操作。

以下是監聽法模擬的基本步驟:

  1. 每個處理器核心的緩存行都包含一個有效位(valid bit)用于表示緩存行是否有效,以及一個標簽(tag)用于唯一標識該緩存行所存儲的內存地址。
  2. 當一個處理器核心對共享數據進行寫入操作時,它首先檢查自己的緩存中是否存在該數據的緩存行。如果存在,它將更新緩存行中的數據,并將該緩存行標記為“已修改(modified)”。
  3. 同時,該核心會發送一個寫入操作的通知給其他核心的緩存,通知它們該緩存行已經被修改。這個通知可以是無效化(invalidate)操作或更新(update)操作,具體的實現方式取決于具體的監聽法協議。
  4. 其他核心的緩存在接收到通知后,根據通知的類型進行相應的操作:
    1. 如果接收到無效化操作,則將自己的緩存行標記為無效(invalid),以后再訪問該數據時需要從主內存或其他核心的緩存中重新獲取。
    2. 如果接收到更新操作,則將自己的緩存行中的數據更新為最新的數據。
  5. 當一個處理器核心需要讀取共享數據時,它首先檢查自己的緩存中是否存在有效的緩存行。如果存在有效的緩存行,則直接讀取緩存中的數據。如果緩存行無效,則需要從主內存或其他核心的緩存中獲取最新的數據。

通過監聽法模擬,每個核心都能感知到其他核心對共享數據的操作,并及時進行相應的緩存行更新或無效化,從而保持多核系統中緩存中的數據一致性。這種方式能夠有效解決多核處理器中共享數據的一致性問題,提高系統的可靠性和性能。

2、cache一致性算法-目錄法模擬

1)利用目錄法模擬器進行下述操作,并填寫下表

所進行的訪問監聽協議進行的操作與塊狀態改變
CPU A 讀第6塊Cache A讀不命中 從本地存儲器中傳送第6塊到Cache A第2塊, Cache A該塊狀態設為S, 存儲器中第6塊狀態也設為S, 將對應A的presence bit置1
CPU B 讀第6塊Cache B讀不命中, 通過互聯網絡從宿主存儲器中傳送第6塊到Cache B第2塊, Cache B該塊狀態設為S, 存儲器中將對應B的presence bit置1
CPU D 讀第6塊Cache D讀不命中, 通過互聯網絡從宿主存儲器中傳送第6塊到Cache D第2塊, Cache D該塊狀態設為S, 存儲器中將對應D的presence bit置1
CPU B 寫第6塊Cache B寫命中, 向宿主存儲器發送寫命中信號, 宿主存儲器向A, D發送作廢信號, 將第6塊的A, D對應的presence bit復位, 將塊狀態設為E。 Cache B寫第2塊, 將塊狀態設為E
CPU C 讀第6塊Cache C讀不命中, 向宿主存儲器發送讀缺失信號, 宿主存儲器向Cache B發送Fetch信號, Cache B將其第2塊狀態設為S, 向宿主存儲器寫回該塊。宿主存儲器收到該塊后將狀態設為S, 將C對應的presence bit置1, 將該塊傳送給Cache C, Cache C將該塊狀態設為S
CPU D 寫第20塊Cache D寫不命中, Memory C通過互聯網絡從宿主存儲器中傳送第20塊到Cache D第0塊, Cache D該塊狀態設為E, 存儲器中將對應D的presence bit置1, 塊狀態設為E
CPU A 寫第20塊Cache A寫不命中, 向宿主存儲器中發送Write miss, 宿主存儲器向Cache D發送Fectch信號, Cache D將其第0塊寫回宿主存儲器, 將塊狀態設為I。 存儲器中將對應D的presence bit復位, 將A對應的presence bit置1, 塊狀態設為E, 將該塊傳送給Cache A。 Cache A中該塊狀態設為E
CPU D 寫第6塊Cache D寫不命中, 向宿主存儲器發送Write miss, 宿主存儲器向Cache D傳送該塊, 將對應B, C的presence bit復位, 將D對應的presence bit置1, 塊狀態設為E, 向Cache B, C發出作廢信號。Cache D中該塊狀態設為E。 Cache B, C均將該塊狀態設為I
CPU A 讀第12塊Cache A讀不命中, 第12塊要替換出Cache A中的第0塊, 先將原本的第0塊寫回到宿主存儲器第20塊, 存儲器中第20塊狀態變成未緩沖。宿主存儲器將第12塊的狀態設為S, 將A對應的presence bit置1, 將該塊傳送給Cache A。 然后換入, 塊狀態設為S

2)請截圖,展示執行完以上操作后整個cache系統的狀態

image-20231209105457476

目錄法的基本原理是,每個緩存塊都有一個對應的目錄項。目錄項中記錄了該緩存塊在哪些核心的緩存中被緩存,以及該緩存塊的共享狀態。

以下是目錄法模擬的基本步驟:

  1. 每個處理器核心的緩存塊都包含一個有效位(valid bit)用于表示緩存塊是否有效,以及一個標簽(tag)用于唯一標識該緩存塊所存儲的內存地址。
  2. 每個緩存塊的目錄項記錄了哪些核心的緩存中包含該緩存塊的副本,并記錄了每個核心對該緩存塊的共享狀態,例如“獨占(exclusive)”、“共享(shared)”、“無效(invalid)”等。
  3. 當一個處理器核心需要讀取共享數據時,它首先檢查自己的緩存中是否存在該數據的緩存塊。如果存在有效的緩存塊,它會從該緩存塊中讀取數據。如果緩存塊無效,則需要從主內存或其他核心的緩存中獲取最新的數據。
  4. 當一個處理器核心對共享數據進行寫入操作時,它首先檢查自己的緩存中是否存在該數據的緩存塊。如果存在有效的緩存塊,并且該緩存塊的共享狀態為“獨占”,表示該核心是唯一一個擁有該數據副本的核心,那么該核心可以直接在緩存塊中更新數據。
  5. 如果存在有效的緩存塊,但其共享狀態為“共享”,表示其他核心也擁有該數據的副本,那么該核心需要向目錄發送一個請求,請求將該緩存塊的共享狀態變為“獨占”。同時,目錄會向其他包含該數據副本的核心發送無效化操作,讓它們將緩存塊標記為無效。
  6. 當其他核心的緩存接收到無效化操作時,它們將對應的緩存塊標記為無效。如果其他核心的緩存塊在之后的訪問中需要讀取或寫入該數據,它們需要從主內存或其他核心的緩存中重新獲取最新的數據。

通過目錄法的模擬,每個核心都可以通過目錄來獲取共享數據的最新狀態,同時協調共享數據的訪問。目錄維護了所有共享數據的副本信息和共享狀態,通過協調緩存之間的通信和狀態轉換,確保多核處理器系統中緩存的一致性。

四、思考題

目錄法和監聽法分別是集中式和基于總線,兩者優劣是什么?

答:

監聽法

  • 優點:核數較少時,總線壓力較小,成本低,效果好.

  • 缺點:需要通過總線廣播一致性相關信息. 總線上能夠連接的處理器數目有限。當核數增多時,總線沖突增加, 監聽帶寬成為瓶頸

目錄法

  • 優點:使用集中目錄來記錄每個cache塊的狀態,不需要總線廣播一致性信息, 總線壓力小。

  • 缺點:需要維護目錄數據結構, 隨著核數增加時目錄的開銷變大。

五、實驗總結

在我進行對cache一致性模擬器的實驗過程中,我深入研究了監聽法和目錄法這兩種常見的cache一致性協議。通過實際的模擬器操作,我對這兩種協議的原理和工作機制有了更深入的理解。

首先,我發現監聽法是一種基于總線的cache一致性協議。在這個協議中,所有的緩存控制器都通過總線來監聽其他緩存控制器的操作。當一個緩存控制器修改了共享數據時,它會通過總線發送一個信號,讓其他緩存控制器將對應的緩存行置為無效。這樣,其他緩存控制器在需要訪問這個緩存行時,就會重新從內存中讀取最新的數據,保證了數據的一致性。通過實驗,我清晰地觀察到了監聽法的特點:簡單、易于實現,但是總線的帶寬成為性能瓶頸,并且在大規模系統中會導致嚴重的總線競爭問題。

其次,我研究了目錄法,這是一種基于目錄的cache一致性協議。在這個協議中,每個緩存控制器都維護了一個目錄表,用于記錄共享數據的狀態和位置。當一個緩存控制器修改了共享數據時,它會向目錄表發送一個更新請求,將對應的緩存行置為無效或者共享狀態。其他緩存控制器在需要訪問這個緩存行時,需要先向目錄表發出請求,獲取該數據的狀態和位置信息,然后根據相應的狀態進行操作。通過實驗,我發現目錄法相對于監聽法來說,減輕了總線的壓力,提高了并發度和擴展性。然而,目錄的維護和更新會帶來一定的開銷,特別是在多處理器系統中。

其他緩存控制器在需要訪問這個緩存行時,需要先向目錄表發出請求,獲取該數據的狀態和位置信息,然后根據相應的狀態進行操作。通過實驗,我發現目錄法相對于監聽法來說,減輕了總線的壓力,提高了并發度和擴展性。然而,目錄的維護和更新會帶來一定的開銷,特別是在多處理器系統中。

通過這次實驗,我不僅對cache一致性的概念和原理有了更深入的理解,還通過實際模擬操作加深了對監聽法和目錄法的理解。我認識到在設計和選擇cache一致性協議時,需要綜合考慮系統規模、性能需求、開銷以及硬件限制等方面的因素。不同的協議適用于不同的場景,了解它們的特點和優缺點有助于我們做出合適的選擇。同時,我也意識到cache一致性對于多處理器系統的正確性和性能具有重要影響,因此在實際應用中需要仔細權衡

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

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

相關文章

從零構建屬于自己的GPT系列4:模型訓練3(訓練過程解讀、序列填充函數、損失計算函數、評價函數、代碼逐行解讀)

🚩🚩🚩Hugging Face 實戰系列 總目錄 有任何問題歡迎在下面留言 本篇文章的代碼運行界面均在PyCharm中進行 本篇文章配套的代碼資源已經上傳 從零構建屬于自己的GPT系列1:數據預處理 從零構建屬于自己的GPT系列2:模型訓…

[力扣100] 10.滑動窗口的最大值

添加鏈接描述 class Solution:def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]:# 思路是使用單調隊列,把滑動窗口中最大的元素放在最頭quecollections.deque()nlen(nums)res[]# 初始化隊列,隊頭保存最大的數的下標,因為需要下標來…

Spring Security 6.x 系列(10)—— SecurityConfigurer 配置器及其分支實現源碼分析(二)

一、前言 在本系列文章: Spring Security 6.x 系列(4)—— 基于過濾器鏈的源碼分析(一) 中著重分析了Spring Security在Spring Boot自動配置、 DefaultSecurityFilterChain和FilterChainProxy 的構造過程。 Spring …

Oauth2.0 認證

目錄 前言 1.介紹 2.Oauth2.0過程詳解 3.Oauth 整合到 Spring Boot 實踐 4.方法及配置詳解: 總結 前言 Oauth2.0 是非常流行的網絡授權表準,已經廣泛應用在全球范圍內,比較大的公司,如騰訊等都有大量的應用場景。 1.介紹 …

ARP欺騙攻擊

一.大概原理 ARP:address solution protocol 地址解析協議 ARP是一種基于局域網的TCP/IP協議,arp欺騙就是基于此協議的漏洞來達成我們的目的的,局域網中的數據傳輸并不是用ip地址傳輸的,而是靠mac地址。 我們如果出于某種目的想…

vue打包完成后出現空白頁原因及解決

vue打包完成后出現空白頁原因及解決 原因 資源路徑不對 路由模式:使用history, 此模式上線后易出現404 解決 1、vue.config.js中配置: publicPath: ./2、在后端要求做重定向 如在nginx中使用rewrite做重定向

【Fastadmin】利用 build_select 做一個樹狀下拉選擇框

1.效果展示 系統crud生成的下拉分類有些不是很好看,并且選擇困難,看不出級差,效果如下: 經過 build_select 加工后的效果,美觀好看,并添加上搜索功能: 2. 首先需要寫一個樹狀圖的數據格式 protected $datalist []; pu…

前沿科技與醫藥領域碰撞,《AI制藥方法與實踐》課程重磅上線

藥物發現是生物學、化學、醫學、藥學等基礎研究與工業轉化的重要窗口。近年來,AI技術的發展,為高投入、高失敗率的制藥行業帶來了全新機遇,或將徹底改變傳統制藥的研究范式。為了幫助更多人了解并掌握這一前沿技術,百度飛槳聯合清…

LeedCode刷題---滑動窗口問題

顧得泉:個人主頁 個人專欄:《Linux操作系統》 《C/C》 《LeedCode刷題》 鍵盤敲爛,年薪百萬! 一、長度最小的子數組 題目鏈接:長度最小的子數組 題目描述 給定一個含有 n 個正整數的數組和一個正整數 target 。…

29 水仙花數

題目描述 所謂水仙花數,是指一個n位的正整數,其各位數字的n次方和等于該數本身。 例如153是水仙花數,153是一個3位數,并且1531^35^33^3. 輸入描述 第一行輸入一個整數n,表示一個n位的正整數。n在3到7之間,…

uniapp各種小程序分享 share - 主要流程 - 微信、抖音、快手、qq

參考 小程序環境 分享 | uni-app官網uni-app,uniCloud,serverless,分享,uni.share(OBJECT),分享到微信聊天界面示例代碼,分享到微信朋友圈示例代碼,uni.share 在App端各社交平臺分享配置說明,uni.shareWithSystem(OBJECT),plus.share.sendWithhttps://uniapp.dcloud.net.cn/a…

MCS-51系列與AT89C5x系列單片機的介紹與AT系列的命名規則

MCS-51系列與AT89C5x系列單片機 主要涉及MCS-51系列與AT89C5x系列單片機的介紹與AT系列單片機的命名規則 文章目錄 MCS-51系列與AT89C5x系列單片機一、 MCS-51系列單片機二、AT89C5x系列單片機2.1 AT89C5x/AT89S5x系列單片機的特點2.2 AT89系列單片機的型號說明2.2.1 前綴2.2.2…

數組區段的最大最小值

題干 本題要求實現一個函數,找出數組中一部分數據的最大值和最小值。 題目保證沒有無效數據。 函數接口定義: void sublistMaxMin ( int* from, int* to, int* max, int* min ); 其中 from和to都是用戶傳入的參數,分別存放數組部分數據的起…

深度綁定的二維碼

南京西祠 500 萬股股份被以 1 元價格掛牌轉讓。 唏噓不已,就像現在的孩子們都知道玩抖音,我們那個時代,西祠胡同就是互聯網的代名詞。在一個叫做西祠胡同的地方,住著一群村里的年輕人,他們痛并快樂著,渴望…

節省時間,提高效率:深入解析MyBatis Plus

1. MyBatis Plus 概述 將Mybatis 通用Mapper PageHelper 升級成 MyBatis Plus 1.1 簡介 官網:https://baomidou.com/ 參考教程:https://baomidou.com/pages/24112f/ MyBatis-Plus(簡稱 MP)是一個 MyBatis 的增強工具&#…

QT之常用按鈕組件

QT之常用按鈕組件 導入圖標 布局 顯示選中 實驗結果 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }void Widget::on_push…

mybatis 的快速入門以及基于spring boot整合mybatis(一)

MyBatis基礎 MyBatis是一款非常優秀的持久層框架,用于簡化JDBC的開發 準備工作: 1,創建sprong boot工程,引入mybatis相關依賴2,準備數據庫表User,實體類User3, 配置MyBatis(在applic…

前端打包環境配置步驟

獲取node安裝包并解壓 獲取node安裝包 wget https://npmmirror.com/mirrors/node/v16.14.0/node-v16.14.0-linux-x64.tar.xz 解壓 tar -xvf node-v16.14.0-linux-x64.tar.xz 創建軟鏈接 sudo ln -s 此文件夾的絕對路徑/bin/node /usr/local/bin/node,具體執行如下…

實現手機掃碼——掃描識別路由器參數

有個應用是批量自動檢測無線路由器,檢測前需要自動登錄路由器的管理界面進行設置,如設置wifi參數、連接模式,或者恢復出廠設置等。進入管理界面的登錄用戶名是admin,密碼則各不相同。此外也需要知道路由器的MAC地址,因…