国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

計算機體系結(jié)構(gòu)基礎(chǔ)知識介紹之指令級并行性:概念和挑戰(zhàn)

這篇具有很好參考價值的文章主要介紹了計算機體系結(jié)構(gòu)基礎(chǔ)知識介紹之指令級并行性:概念和挑戰(zhàn)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、相關(guān)概念

自 1985 年以來,所有處理器都使用流水線來重疊指令的執(zhí)行并提高性能。 指令之間的這種潛在重疊稱為指令級并行性(ILP)。?

具體來說:流水線和指令級并行是兩個相關(guān)的概念。

流水線是一種將每條指令分解為多個階段,并讓不同階段的操作重疊進行的一種技術(shù),可以提高指令的執(zhí)行效率和吞吐率。指令級并行是指在一個時鐘周期內(nèi),可以同時執(zhí)行多條指令的一種技術(shù),可以提高處理器的性能和利用率。

流水線和指令級并行之間的關(guān)系是,流水線是實現(xiàn)指令級并行的一種基本方法,但是流水線也會受到一些因素的限制,如指令之間的相關(guān)性、結(jié)構(gòu)沖突、控制沖突等。為了克服這些限制,需要采用一些技術(shù),如指令調(diào)度、寄存器換名、分支預(yù)測、動態(tài)調(diào)度等。

利用 ILP 有兩種基本上可分離的方法:(1) 依賴硬件來幫助動態(tài)發(fā)現(xiàn)和利用并行性的方法;(2) 依賴軟件技術(shù)在編譯時靜態(tài)發(fā)現(xiàn)并行性的方法。

使用動態(tài)、基于硬件的方法的處理器(包括所有最新的英特爾和許多 ARM 處理器)在桌面和服務(wù)器市場占據(jù)主導(dǎo)地位。 在個人移動設(shè)備市場,平板電腦和高端手機的處理器也采用相同的方法。?

增加 ILP 的最簡單且最常見的方法是利用循環(huán)迭代之間的并行性。 這種類型的并行性通常稱為循環(huán)級并行性。 下面是一個簡單的循環(huán)示例,它將兩個 1000 元素的數(shù)組相加并且完全并行:

計算機體系結(jié)構(gòu)基礎(chǔ)知識介紹之指令級并行性:概念和挑戰(zhàn),計算機體系結(jié)構(gòu)學(xué)習(xí)筆記,risc-v,嵌入式硬件

循環(huán)的每次迭代都可以與任何其他迭代重疊,盡管在每次循環(huán)迭代內(nèi),重疊的機會很少。?

我們將研究多種將這種循環(huán)級并行性轉(zhuǎn)換為指令級并行性的技術(shù)。 基本上,此類技術(shù)的工作原理是由編譯器靜態(tài)展開循環(huán)或由硬件動態(tài)展開循環(huán)。

二、相關(guān)挑戰(zhàn)

2.1 數(shù)據(jù)依賴性和危險

確定一條指令如何依賴另一條指令對于確定程序中存在多少并行性以及如何利用該并行性至關(guān)重要。 特別是,為了利用指令級并行性,我們必須確定哪些指令可以并行執(zhí)行。 如果兩條指令是并行的,它們可以在任意深度的管道中同時執(zhí)行,而不會導(dǎo)致任何停頓,假設(shè)管道有足夠的資源(因此不存在結(jié)構(gòu)危險)。 如果兩條指令是相關(guān)的,則它們不是并行的,必須按順序執(zhí)行,盡管它們通??赡懿糠种丿B。 這兩種情況的關(guān)鍵是確定一條指令是否依賴于另一條指令。

2.1.1 數(shù)據(jù)依賴

依賴關(guān)系分為三種不同類型:數(shù)據(jù)依賴關(guān)系(也稱為真正的數(shù)據(jù)依賴關(guān)系)、名稱依賴關(guān)系和控制依賴關(guān)系。 如果以下任一條件成立,則指令 j 與指令 i 數(shù)據(jù)相關(guān):

■ 指令i 產(chǎn)生可由指令j 使用的結(jié)果。
■ 指令j 數(shù)據(jù)依賴于指令k,指令k 數(shù)據(jù)依賴于指令i。

第二個條件簡單地表明,如果兩條指令之間存在第一類型的依賴鏈,則一條指令依賴于另一條指令。 這個依賴鏈可以和整個程序一樣長。 注意,單個指令內(nèi)的依賴關(guān)系(例如 add x1,x1,x1)不被視為依賴關(guān)系。

例如,考慮以下 RISC-V 代碼序列,該序列將內(nèi)存中的值向量(從 0(x1) 開始,到最后一個元素 0(x2) 結(jié)束)增加寄存器 f2 中的標(biāo)量。計算機體系結(jié)構(gòu)基礎(chǔ)知識介紹之指令級并行性:概念和挑戰(zhàn),計算機體系結(jié)構(gòu)學(xué)習(xí)筆記,risc-v,嵌入式硬件

?此代碼序列中的數(shù)據(jù)依賴性涉及浮點數(shù)據(jù):

計算機體系結(jié)構(gòu)基礎(chǔ)知識介紹之指令級并行性:概念和挑戰(zhàn),計算機體系結(jié)構(gòu)學(xué)習(xí)筆記,risc-v,嵌入式硬件

?和整數(shù)數(shù)據(jù):計算機體系結(jié)構(gòu)基礎(chǔ)知識介紹之指令級并行性:概念和挑戰(zhàn),計算機體系結(jié)構(gòu)學(xué)習(xí)筆記,risc-v,嵌入式硬件

?可以通過兩種不同的方式克服依賴性:(1)保持依賴性但避免危險,(2)通過轉(zhuǎn)換代碼消除依賴性。代碼調(diào)度是在不改變依賴關(guān)系的情況下避免危險的主要方法,這種調(diào)度既可以由編譯器完成,也可以由硬件完成。

流經(jīng)內(nèi)存位置的依賴關(guān)系更難以檢測,因為兩個地址可能引用同一位置但看起來不同:例如,100(x4) 和 20(x6) 可能是相同的內(nèi)存地址。 此外,加載或存儲的有效地址可能會從指令的一次執(zhí)行到另一次執(zhí)行而改變(因此 20(x4) 和 20(x4) 可能不同),從而使依賴性檢測進一步復(fù)雜化。

2.1.2?名稱依賴

第二種類型的依賴是名稱依賴。 當(dāng)兩條指令使用相同的寄存器或內(nèi)存位置(稱為名稱)時,就會發(fā)生名稱依賴,但與該名稱關(guān)聯(lián)的指令之間沒有數(shù)據(jù)流。 按程序順序位于指令 j 之前的指令 i 之間存在兩種類型的名稱相關(guān)性:?

1. 當(dāng)指令 j 寫入指令 i 讀取的寄存器或內(nèi)存位置時,指令 i 和指令 j 之間會出現(xiàn)反依賴性。 必須保留原始順序以確保讀取正確的值。
2. 當(dāng)指令 i 和指令 j 寫入相同的寄存器或內(nèi)存位置時,會出現(xiàn)輸出相關(guān)性。 必須保留指令之間的順序,以確保最終寫入的值對應(yīng)于指令 j。

由于名稱依賴不是真正的依賴,因此如果指令中使用的名稱(寄存器號或內(nèi)存位置)發(fā)生更改,則涉及名稱依賴的指令可以同時執(zhí)行或重新排序,從而使指令不會發(fā)生沖突。

對于寄存器操作數(shù)來說,這種重命名可以更容易地完成,稱為寄存器重命名。 寄存器重命名可以由編譯器靜態(tài)完成,也可以由硬件動態(tài)完成。 在描述分支產(chǎn)生的依賴之前,我們先來看看依賴和管道數(shù)據(jù)危險之間的關(guān)系。

2.1.3?數(shù)據(jù)危害

只要指令之間存在名稱或數(shù)據(jù)依賴關(guān)系,并且它們足夠接近,執(zhí)行期間的重疊會改變對依賴關(guān)系中涉及的操作數(shù)的訪問順序,就會存在危險。 由于依賴性,我們必須保留所謂的程序順序,即如果按原始源程序確定的一次順序執(zhí)行指令的執(zhí)行順序。 我們的軟件和硬件技術(shù)的目標(biāo)是通過僅在影響程序結(jié)果的情況下保留程序順序來利用并行性。 檢測和避免危險可確保保留必要的程序順序。

數(shù)據(jù)危險可以分為三種類型,具體取決于指令中讀寫訪問的順序。按照慣例,危險是按程序中必須由管道保存的順序命名的??紤]兩條指令 i 和 j,其中 i 按程序順序位于 j 之前。可能的數(shù)據(jù)危險是:
■ RAW(寫入后讀?。猨 嘗試在寫入源之前讀取源,因此 j 錯誤地獲取舊值。 這種危險是最常見的類型,對應(yīng)于真正的數(shù)據(jù)依賴性。 必須保留程序順序以確保 j 接收來自 i 的值。
■ WAW(寫后寫)—j 嘗試在 i 寫入操作數(shù)之前寫入該操作數(shù)。 寫入最終以錯誤的順序執(zhí)行,將 i 寫入的值而不是 j 寫入的值留在目標(biāo)中。 這種危險對應(yīng)于輸出依賴性。 WAW 危險僅存在于在多個管道階段寫入或允許指令繼續(xù)執(zhí)行(即使前一條指令已停止)的管道中。
■ WAR(讀后寫)—j 嘗試在 i 讀取目標(biāo)之前寫入目標(biāo), 所以我錯誤地得到了新值。 這種危險是由反依賴性(或名稱依賴性)引起的。?當(dāng)某些指令在指令管道中早期寫入結(jié)果而其他指令在管道中后期讀取源時,或者當(dāng)指令被重新排序時,就會發(fā)生 WAR 危險。

2.1.4?控制依賴

最后一種依賴是控制依賴。 控制依賴性確定指令 i 相對于分支指令的順序,以便指令 i 僅在應(yīng)該執(zhí)行時才以正確的程序順序執(zhí)行。 除了程序的第一個基本塊中的指令之外,每條指令都依賴于某些分支集,并且一般來說,必須保留這些控制依賴性以保持程序順序。 例如,在代碼段中計算機體系結(jié)構(gòu)基礎(chǔ)知識介紹之指令級并行性:概念和挑戰(zhàn),計算機體系結(jié)構(gòu)學(xué)習(xí)筆記,risc-v,嵌入式硬件

S1 控制依賴于 p1,S2 控制依賴于 p2,但不依賴于 p1。 一般來說,控制依賴性會施加兩個約束:?
1. 控制依賴于分支的指令不能移到分支之前,從而使其執(zhí)行不再受分支控制。 例如,我們不能從 if 語句的 then 部分取出指令并將其移到 if 語句之前。
2. 不依賴于分支的控制的指令不能移動到分支之后,從而使其執(zhí)行由分支控制。 例如,我們不能將 if 語句之前的語句移到 then 部分。

簡單來說,控制依賴性表示一條指令是否執(zhí)行取決于另一條指令的結(jié)果。例如,如果一條指令是一個條件分支,那么它就控制了分支目標(biāo)的執(zhí)行??刂埔蕾囆苑从沉顺绦虻目刂屏鹘Y(jié)構(gòu),對于理解程序的語義和進行優(yōu)化有重要作用。

當(dāng)處理器保留嚴(yán)格的程序順序時,它們確保控制依賴性也被保留。 然而,如果我們能夠在不影響程序正確性的情況下這樣做,我們可能愿意執(zhí)行不應(yīng)該執(zhí)行的指令,從而違反控制依賴性。 因此,控制依賴性不是必須保留的關(guān)鍵屬性。 相反,對程序正確性至關(guān)重要的兩個屬性是異常行為和數(shù)據(jù)流。

?保留異常行為意味著指令執(zhí)行順序的任何更改都不得改變程序中引發(fā)異常的方式。 通常,這被寬松地表示指令執(zhí)行的重新排序不得在程序中引起任何新的異常。 考慮以下代碼序列:

計算機體系結(jié)構(gòu)基礎(chǔ)知識介紹之指令級并行性:概念和挑戰(zhàn),計算機體系結(jié)構(gòu)學(xué)習(xí)筆記,risc-v,嵌入式硬件

在這種情況下,很容易看出,如果我們不維護涉及x2的數(shù)據(jù)依賴性,我們可以改變程序的結(jié)果。 不太明顯的是,如果我們忽略控制依賴性并將加載指令移到分支之前,則加載指令可能會導(dǎo)致內(nèi)存保護異常。?

通過維護數(shù)據(jù)依賴性和控制依賴性而保留的第二個屬性是數(shù)據(jù)流。 數(shù)據(jù)流是產(chǎn)生結(jié)果的指令和使用結(jié)果的指令之間數(shù)據(jù)值的實際流動。 分支使數(shù)據(jù)流變得動態(tài),因為它們允許給定指令的數(shù)據(jù)源來自多個點。 換句話說,僅僅維護數(shù)據(jù)依賴性是不夠的,因為一條指令可能依賴于多個前驅(qū)指令的數(shù)據(jù)。文章來源地址http://www.zghlxwxcb.cn/news/detail-533887.html

到了這里,關(guān)于計算機體系結(jié)構(gòu)基礎(chǔ)知識介紹之指令級并行性:概念和挑戰(zhàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 計算機體系結(jié)構(gòu)基礎(chǔ)知識介紹之緩存性能的十大進階優(yōu)化之編譯器控制的預(yù)取和利用HBM擴展內(nèi)存層次(七)

    計算機體系結(jié)構(gòu)基礎(chǔ)知識介紹之緩存性能的十大進階優(yōu)化之編譯器控制的預(yù)取和利用HBM擴展內(nèi)存層次(七)

    硬件預(yù)取的替代方案是編譯器在處理器需要數(shù)據(jù)之前插入預(yù)取指令來請求數(shù)據(jù)。 預(yù)取有兩種類型: ■ 寄存器預(yù)取將值加載到寄存器中。 ■ 高速緩存預(yù)取僅將數(shù)據(jù)加載到高速緩存。 這兩種類型都可以分為有錯或無錯的,即預(yù)取的地址是否會導(dǎo)致虛擬地址錯誤或保護錯誤的異

    2024年02月13日
    瀏覽(30)
  • 計算機體系結(jié)構(gòu)基礎(chǔ)知識介紹之緩存性能的十大進階優(yōu)化之關(guān)鍵詞優(yōu)先和提前重啟以減少失誤處罰、合并寫入緩沖區(qū)以減少懲罰(五)

    計算機體系結(jié)構(gòu)基礎(chǔ)知識介紹之緩存性能的十大進階優(yōu)化之關(guān)鍵詞優(yōu)先和提前重啟以減少失誤處罰、合并寫入緩沖區(qū)以減少懲罰(五)

    處理器通常一次只需要緩存塊中的一個字(word)。不要等待整個塊被加載,而是在請求的字到達(dá)后就立即發(fā)送給處理器,并讓處理器繼續(xù)執(zhí)行,同時填充塊中的其他字。這兩種具體的策略是: 優(yōu)先(Critical word first)——從內(nèi)存中先請求缺失的字,并在它到達(dá)后立即發(fā)

    2024年02月13日
    瀏覽(27)
  • 計算機體系結(jié)構(gòu)

    計算機體系結(jié)構(gòu)

    目錄 第一章 基本概念 1.虛擬計算機 2.計算機系統(tǒng)結(jié)構(gòu)的定義 3.佛林(Flynn)分類法 4.Amdahl定律 5.CPU性能公式 6.程序訪問的局部性原理 第二章 指令系統(tǒng) 1.數(shù)據(jù)表示與數(shù)據(jù)類型 2.浮點數(shù)的表示方式 3.編址方式 4.尋址方式 5.指令系統(tǒng)的優(yōu)化設(shè)計? 6.Huffman編碼法 7.拓展編碼 8.兩種方

    2024年02月06日
    瀏覽(27)
  • 【體系結(jié)構(gòu)】山東大學(xué)計算機體系結(jié)構(gòu)知識點清單

    【體系結(jié)構(gòu)】山東大學(xué)計算機體系結(jié)構(gòu)知識點清單

    涵蓋所有考點,復(fù)習(xí)絕對高效,點贊+留郵箱獲取pdf版本 1. 計算機系統(tǒng)的層次結(jié)構(gòu) 語言實現(xiàn)的兩種基本技術(shù): 翻譯:先把 N+1 級程序全部轉(zhuǎn)換成 N 級程序后,再去執(zhí)行新產(chǎn)生的 N 級程序,在執(zhí)行過程中 N+1 級程序不再被訪問。 解釋:每當(dāng)一條 N+1 級指令被譯碼后,就直接去執(zhí)

    2024年02月11日
    瀏覽(133)
  • [Linux]計算機軟硬體系結(jié)構(gòu)

    [Linux]計算機軟硬體系結(jié)構(gòu)

    馮諾依曼體系結(jié)構(gòu)的組成 現(xiàn)代計算機大多都遵守馮諾依曼體系結(jié)構(gòu) 馮諾依曼體系結(jié)構(gòu)的示意圖如下: 馮諾依曼體系結(jié)構(gòu)計算機由五大部件組成: 輸入設(shè)備 輸出設(shè)備 存儲器(內(nèi)存) 運算器 控制器 注:如今大多的計算機都將運算器和控制器集成到一起,被稱作中央處理器,簡稱

    2024年02月13日
    瀏覽(18)
  • 【Linux】—— 詳解計算機體系結(jié)構(gòu)

    【Linux】—— 詳解計算機體系結(jié)構(gòu)

    前言: 在之前,我們已經(jīng)對Linux環(huán)境開發(fā)的基本工具進行了詳細(xì)的學(xué)習(xí)。接下來,我們將要學(xué)習(xí)的第一大塊便是關(guān)于計算機體系結(jié)構(gòu)的知識??! 目錄 前言 (一)馮諾依曼體系結(jié)構(gòu) 基本介紹 木桶原理 數(shù)據(jù)流動過程 (二)操作系統(tǒng) 1、概念 2、感性理解 總結(jié) 在我寫的《操作系

    2024年02月09日
    瀏覽(24)
  • 計算機體系結(jié)構(gòu)(復(fù)習(xí)資料)

    計算機體系結(jié)構(gòu)(復(fù)習(xí)資料)

    1.存儲程序計算機 (馮諾依曼):4部分 ????????????????運算器(用于完成數(shù)值運算) ????????????????存儲器(用于存儲程序和數(shù)據(jù)) ????????????????輸入輸出設(shè)備(用于完成計算機與外部信息交互) ????????????????控制器(根據(jù)程序形成控

    2024年02月02日
    瀏覽(16)
  • 第一章、計算機組成與體系結(jié)構(gòu)

    第一章、計算機組成與體系結(jié)構(gòu)

    第一節(jié).數(shù)據(jù)的表示 ? 二進制轉(zhuǎn)十進制:權(quán)值相加。即一個二進制數(shù)為1010.1,轉(zhuǎn)為十進制為: $$ 小數(shù)點左邊從0開始冪,小數(shù)點右邊就是-1 ? 十六進制轉(zhuǎn)十進制:同樣的,權(quán)值相加。即一個十六進制為100121,轉(zhuǎn)為十進制為: $$ 十進制轉(zhuǎn)二進制:整數(shù)位用短除法,除二取余,直到

    2024年02月03日
    瀏覽(21)
  • 【計算機組成原理與體系結(jié)構(gòu)】指令系統(tǒng)

    【計算機組成原理與體系結(jié)構(gòu)】指令系統(tǒng)

    目錄 一、指令概述 二、指令分類 三、擴展操作碼 四、指令尋址 五、數(shù)據(jù)尋址 六、x86匯編指令 計算機指令 :指示計算機硬件進行某種操作的命令 機器指令 :使用二進制編碼來表示的計算機指令 能被計算機硬件系統(tǒng)識別并執(zhí)行的特殊的0/1代碼串(機器碼) 指定了計算機硬

    2024年02月08日
    瀏覽(37)
  • 【計算機體系結(jié)構(gòu)】什么是流水線?

    【計算機體系結(jié)構(gòu)】什么是流水線?

    ??個人主頁:highman110 ??作者簡介:一名硬件工程師,持續(xù)學(xué)習(xí),不斷記錄,保持思考,輸出干貨內(nèi)容? 目錄 參考資料 前言 流水線 提高流水線效率的技術(shù) 超級流水線 超標(biāo)量 分支預(yù)測 亂序執(zhí)行 (21條消息) 流水線、超流水線、超標(biāo)量(superscalar)技術(shù)對比(轉(zhuǎn))_沉迷科研劉

    2024年02月03日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包