LSU介紹

LSU(Load Store Unit)是一個專門的執行單元,負責執行所有的加載(load)和存儲(store)指令等,生成load和store操作的虛擬地址,并從內存中加載數據或將數據從寄存器中存儲回內存。LSU里一般包括L1 D-cache、D-TLB、AGU、load queue、store queue等模塊。

下文以(Berkeley out-of-order machine(BOOM)為例子)

  • 負責決定什么時候將memory operations送到memory system;
  • load instruction產生uopLD, 會計算出將要訪問的地址,并將結果存在LDQ中;
  • store instruction會產生兩個微指令,uopSTA(store addr generation)和u哦怕STD(store data generation)
    • STA: 計算store的地址,同時將地址存放在STQ中;
    • STD:將store data存入STQ中;
  • uopLD/STA/STD都是亂序進行的;

?

?Store Instructions

  • 在decode stage, 會申請store queue entry; (stq[i].valid = 1);
  • 每個valid bit對應兩個其他的valid, 分別是
    • valid addr(stq[i].bits.addr.valid);
    • valid data(stq[i].bits.data.valid);
  • 當store instruction提交了,則對應的store queue中的entry也被標記成commited, 可以在合適的時候,將其釋放掉;
  • store queue中的entry, 是按照PO的順序,給到memory系統中;

Store Micro-Op

  • store是作為一條單獨的指令插入到issue window中;而不是被分解為單獨的addr-gen和data-gen UOP);
  • 這樣做的好處是不會浪費昂貴的issue window entries, 也不會給送往LSU的issue ports帶來額外的競爭問題;
  • 兩個操作數都準備好的存儲可以作為一個UOP發送給LSU, UOP同時向LSU提供地址和數據。
  • 雖然這要求存儲指令能夠訪問兩個寄存器文件的讀端口,但這樣做是為了不讓store-heavy code的性能降低一半。
  • Sequences involving stores to the stack should operate at IPC=1!
  • 然而,通常在store addr知曉之前,就知道store addr。
    • store addr應該盡快放到STQ,可以使得后續進來的load, 能夠進行沖突檢查,以避免任何內存排序失敗。
    • 因此,issue windows會根據需要發出uopSTA或uopSTD UOP s,然后等待第二個操作數準備好。

Load Instructions

  • 在decode stage申請LDQ entry;
  • 在decode stage,每個load entry會帶一個store mask信息,ldq[i].bits.st_dep_mask, 這個標志記錄了當前這條load, 依賴于STQ中的哪些store?instruction;
  • 當store fired to memory,and leaves the Store Queue, 對應的mask標志被清除;
  • 當load對應的地址被計算出來,放入LDQ后,ldq[i].addr.valid =1;
  • load指令在LDQ中的執行過程:
    • load inst到達LSU后,會盡快的送到memory system中;
    • 這樣的做法,對于亂序pipeline有巨大的好處;
    • load指令,會和store queue中的entry, 進行地址比較,檢查是否依賴于store addr;
      • 如果match, 則memory request會被kill掉;
      • 如果對應的store data已經存在,在store data會forwarded to load,load標記為完成;
      • 如過對應的store data不存在,則load會sleep, 稍后會再次進行訪問memory的申請;

?

?The BOOM Memory Model

  • 遵循RVWMO memory consistency model;
    • Write -> Read constraint is relaxed (newer loads may execute before older stores).
    • Read -> Read constraint is maintained (loads to the same address appear in order).
    • A thread can read its own writes early.
  • ordering loads to the same addr;
    • RVWMO要求,loads to the same addr should be orded;
    • 這就要求,每個load,需要和其他的load做檢查,看是否有沖突的地址;
    • 如果younger load在older load之前已經執行,則younger load將會被replay, 其后面的指令,也要在pipeline中被flush掉;
    • 這種場景,出現在當memory coherence的snoop,能夠探測到core‘s memory時,并將這種reorder暴露給其他的threads時,需要處理,否則,這種reoder也是ok的;

Memory Ordering Failures?

?考慮如下的場景:

? ??

  • 如果X2和X4的物理地址相同,那么load實際上應該是依賴于之前的store; 如果load先執行,那么就會讀到錯誤的數據,此時稱之為發生了memory ordering failure;
  • 一旦發生了memory ordering failure,則pipeline必須flush, RAT也要重置,這是相當expensive 的operation;

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

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

相關文章

關于前端原生技術-Jsonp的理解與簡述

【版權聲明】未經博主同意,謝絕轉載!(請尊重原創,博主保留追究權) https://blog.csdn.net/m0_69908381/article/details/134777717 出自【進步*于辰的博客】 在學習了Jsoup這個知識點之后,發覺js的這一特點…

基于appium的常用元素定位方法

一、元素定位工具   app應用的元素使用的是控件定位,不同于web網頁,web網頁定位元素通常使用的是F12工具,那么在app當中我們則要借助其它的工具來輔助定位。 1.uiautomatorviewer.bat   uiautomatorviewer.bat工具在安裝完ADT工具之后&a…

【Docker】進階之路:(十一)Docker存儲

【Docker】進階之路:(十一)Docker存儲 Docker存儲簡介storage driverdata volumevolumebind mounttmpfs mount Docker提供了4種存儲方式:默認存儲、volume(數據卷)、bind mounts(綁定掛載)、tmpfsmount(僅在Linux環境中提供)。其中…

Jemeter,提取響應體中的數據:正則表達式、Json提取器

一、正則表達式 1、線程組--創建線程組; 2、線程組--添加--取樣器--HTTP請求; 3、Http請求--添加--后置處理器--正則表達式提取器; 4、線程組--添加--監聽器--查看結果樹; 5、線程組--添加--取樣器--調試取樣器。 響應體數據…

docker mysql8 設置不區分大小寫

docker安裝Mysql8.0的坑之lower_case_table_names_docker mysql lower_case_table_names-CSDN博客https://blog.csdn.net/p793049488/article/details/108365929 docker run ‐di ‐‐nametensquare_mysql ‐p 33306:3306 ‐e MYSQL_ROOT_PASSWORD123456 mysql

運籌學經典問題(一):指派問題

問題描述 有 N N N個任務,需要 N N N個人去完成,每個人完成不同工作的效率不同(或者資源、收益等等),需要怎么分配使得整體的效率最高(成本最低等等)呢?這就是經典的指派問題啦&…

金蝶EAS如何增加報表

金蝶EAS如何增加銷售毛利報表? 文章目錄 菜單路徑:導入授權發布管理 菜單路徑: 商業分析———擴展報表中心——報表工具 ——報表工具 汽車 4S——整車管理——整車銷售——擴展報表 導入 選擇報表文件進行導入 授權 發布管理

(純原創)基于JavaWeb的寵物領養商城(詳細源碼以及開發設計報告)

摘要 本寵物領養系統以MVC分層為原則,數據持久化使用Mybatis,數據庫使用MySQL,這些技術目前相對比較成熟,方便系統的維護與擴展 商城系統包括了寵物領養、用戶注冊、用戶登錄、商品查詢、商品添加到購物車、刪除商品等幾大功能…

Linux基礎項目開發2:物聯網監控——視頻監控方案介紹(一)

前言: 這次我們來做一個關于視頻監控的基礎小項目,需要我們用到網絡的相關知識,還會學到好多優秀的網絡協議,下面讓我們開始對物聯網視頻監控進行一個大體框架的介紹吧 目錄 項目內容: 1.視頻監控方案介紹 2.視頻監控…

手寫VUE后臺管理系統10 - 封裝Axios實現異常統一處理

目錄 前后端交互約定安裝創建Axios實例攔截器封裝請求方法業務異常處理 axios 是一個易用、簡潔且高效的http庫 axios 中文文檔:http://www.axios-js.com/zh-cn/docs/ 前后端交互約定 在本項目中,前后端交互統一使用 application/json;charsetUTF-8 的請…

云計算 云原生

一、引言 云計算需要終端把信息上傳到服務器,服務器處理后再返回給終端。在之前人手一臺手機的情況下,云計算還是能handle得過來的。但是隨著物聯網的發展,什么東西都要聯網,那數據可就多了去了,服務器處理不過來&…

汽車標定技術(十二)--A2L文件生成的方法

目錄 1.工具生成 1.1 CANape/ASAP2 Studio 1.2 ASAP2ToolKit 1.3 Matlab/Simulink 2.手寫A2L要點 3.小結 A2L文件的制作一直以來是一個很少有人關注的方向,不管是標定工程師還是Slave協議棧的開

MachMap:End-to-End Vectorized Solution for Compact HD-Map Construction

參考代碼:None 動機與出發點 地平線的MapTR展現出了構建高精地圖的能力,但是它的機制確實是有點復雜了。為了兼容不同車道線的朝向,環形車道線的起終點等情況,針對性設計了permute-equal的匹配邏輯,這樣的邏輯真的是太…

軟件測試之壓力測試詳解

一、什么是壓力測試 軟件測試中:壓力測試(Stress Test),也稱為強度測試、負載測試。壓力測試是模擬實際應用的軟硬件環境及用戶使用過程的系統負荷,長時間或超大負荷地運行測試軟件,來測試被測系統的性能、…

leetcode206. 反轉鏈表

題目描述 給你單鏈表的頭節點 head ,請你反轉鏈表,并返回反轉后的鏈表。 示例 1: 輸入:head [1,2,3,4,5] 輸出:[5,4,3,2,1]示例 2: 輸入:head [1,2] 輸出:[2,1]示例 3&#xf…

appium安卓app自動化,遇到搜索框無搜索按鈕元素時無法搜索的解決方案

如XX頭條,搜索框后面有“搜索”按鈕,這樣實現搜索操作較為方便。 但有些app沒有設置該搜索按鈕,初學者就要花點時間去學習怎么實現該功能了,如下圖。 這時候如果定位搜索框,再點擊操作,再輸入文本后&#x…

SpringBootWeb請求響應之前言及狀態碼的詳細解析

SpringBootWeb請求響應 前言 在上一次的課程中,我們開發了springbootweb的入門程序。 基于SpringBoot的方式開發一個web應用,瀏覽器發起請求 /hello 后 ,給瀏覽器返回字符串 “Hello World ~”。 其實呢,是我們在瀏覽器發起請求…

【算法與數據結構】332、LeetCode重新安排行程

文章目錄 一、題目二、解法三、完整代碼 所有的LeetCode題解索引,可以看這篇文章——【算法和數據結構】LeetCode題解。 一、題目 二、解法 思路分析:本題比較屬于困難題目,難點在于完成機票、出發機場和到達機場之間的映射關系,再…

使用yum/dnf管理軟件包

本章主要介紹使用 yum 對軟件包進行管理。 yum 的介紹搭建yum源創建私有倉庫yum客戶端的配置yum的基本使用使用第三方yum源 使用rpm安裝包時經常會遇到一個問題就是包依賴,如下所示。 [rootrhel03 ~]# rpm -ivh /mnt/AppStream/Packages/httpd-2.4.37-41.modulee…

【三維重建】對極幾何

極幾何描述了同一場景或者物體的兩個視點圖像間的幾何關系 可以發現P在左右相機的投影點一定在各自的極線上,如果求出極線就能縮小求解對應點的范圍。 本質矩陣對規范化攝像機拍攝的兩個視點圖像間的極幾何關系進行代數描述 規范化相機指的是相機的內參…