0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何處理CPU亂序調(diào)度中的內(nèi)存數(shù)據(jù)依賴(lài)

數(shù)字芯片實(shí)驗(yàn)室 ? 來(lái)源:數(shù)字芯片實(shí)驗(yàn)室 ? 2024-08-06 11:49 ? 次閱讀

要處理CPU亂序調(diào)度中的內(nèi)存數(shù)據(jù)依賴(lài),通常涉及兩個(gè)步驟:

1.計(jì)算內(nèi)存訪問(wèn)的有效地址

2.檢查所有未處理完的load/store的地址,并確保沖突的load/store不能亂序執(zhí)行

A Load / Store Processing Model

load/store處理模型,如下圖所示。

a459f9f4-4019-11ef-b8af-92fbcf53809c.jpg

load和store指令首先發(fā)給reservation station ,然后發(fā)送到load單元或store 單元。

在store單元中,store 指令首先經(jīng)過(guò)有效的地址計(jì)算和地址轉(zhuǎn)換,然后駐留在“Finished ”store 緩沖區(qū)中。 “completed ”store 緩沖區(qū)中的store 指令最終會(huì)提交到內(nèi)存中。

同樣,load指令首先通過(guò)地址生成和翻譯,并最終讀取數(shù)據(jù)cache 以從內(nèi)存中獲取數(shù)據(jù)。

我們可以做出的一個(gè)假設(shè)是,store 指令需要按程序順序完成,因此WAW數(shù)據(jù)依賴(lài)性是默認(rèn)強(qiáng)制執(zhí)行的。從本質(zhì)上講,處理數(shù)據(jù)依賴(lài)項(xiàng)可以簡(jiǎn)化為處理load/store 依賴(lài)項(xiàng)(RAW和WAR)。

Handling Data Dependencies with In-order Load / Store Dispatch

最直接的解決方案是按程序順序向公共reservation station 發(fā)出load/store 指令,并從reservation station 按FIFO順序發(fā)送。只有當(dāng)store 緩沖區(qū)為空時(shí),才能發(fā)送load。然而,load指令的延遲很長(zhǎng),不可預(yù)測(cè)。盡早執(zhí)行l(wèi)oad至關(guān)重要。

改進(jìn)的方案是支持不同地址的load bypass ,如果store 緩沖區(qū)中有地址匹配,則stall load指令。因此,不同地址的load可以繼續(xù)進(jìn)行。

a4732afa-4019-11ef-b8af-92fbcf53809c.jpg

為了進(jìn)一步加快load。如果存在地址匹配,但store buffer數(shù)據(jù)不可用,則load stall;如果存在地址匹配和store 數(shù)據(jù)可用,則將數(shù)據(jù)直接forward 到load。由于load直接從store buffer接收數(shù)據(jù),因此可以盡早執(zhí)行l(wèi)oad指令,并避免數(shù)據(jù)cache 訪問(wèn)。

a4872be0-4019-11ef-b8af-92fbcf53809c.jpg

Handling Data Dependencies with Out-of-order Load / Store Dispatch

如果我們亂序調(diào)度load/store,可以在store之前發(fā)放load。由于無(wú)法檢查地址匹配,因此存在潛在的RAW依賴(lài)關(guān)系。

a4b2721e-4019-11ef-b8af-92fbcf53809c.jpg

與store指令類(lèi)似,如果從reservation station 發(fā)送的store在“finished ”load buffer中發(fā)現(xiàn)匹配的load,則應(yīng)刷新所有指令。

這種放松也引入了可能的WAR數(shù)據(jù)依賴(lài)性。load地址可能與后續(xù)store的地址匹配,因此會(huì)觸發(fā)不正確的數(shù)據(jù)forward 。一個(gè)簡(jiǎn)單的解決方案是stall 匹配地址的“finished ” store的load,僅具有匹配地址的“completed ”store上數(shù)據(jù)forward 給load。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11053

    瀏覽量

    216261
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    3115

    瀏覽量

    75061
  • 數(shù)據(jù)依賴(lài)

    關(guān)注

    0

    文章

    2

    瀏覽量

    5721

原文標(biāo)題:CPU面試題Q7:如何處理內(nèi)存中的數(shù)據(jù)依賴(lài)?

文章出處:【微信號(hào):數(shù)字芯片實(shí)驗(yàn)室,微信公眾號(hào):數(shù)字芯片實(shí)驗(yàn)室】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 0人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Cjson協(xié)議申請(qǐng)不到內(nèi)存何處理?

    最近用原子哥的ucosII例程做個(gè)東西,使用到Cjson協(xié)議,其中使用到了申請(qǐng)內(nèi)存內(nèi)存回收的問(wèn)題,用的是原子哥的內(nèi)存管理函數(shù),前幾次還可以,通信幾次就申請(qǐng)不到內(nèi)存了,感覺(jué)好像是
    發(fā)表于 04-26 21:22

    何處理好FPGA設(shè)計(jì)跨時(shí)鐘域間的數(shù)據(jù)

    跨時(shí)鐘域處理是FPGA設(shè)計(jì)中經(jīng)常遇到的問(wèn)題,而如何處理好跨時(shí)鐘域間的數(shù)據(jù),可以說(shuō)是每個(gè)FPGA初學(xué)者的必修課。如果是還是在校的學(xué)生,跨時(shí)鐘域處理也是面試中經(jīng)常常被問(wèn)到的一個(gè)問(wèn)題。在本篇
    發(fā)表于 07-29 06:19

    labview寫(xiě)入access數(shù)據(jù)庫(kù)亂序問(wèn)題

    用database insert 插入數(shù)據(jù),移位寄存器當(dāng)作順序編號(hào),發(fā)現(xiàn)不管循環(huán)框頻率設(shè)多少,到編號(hào)713這里必定會(huì)跳到737,然后中間這段會(huì)在1035后出現(xiàn),其他地方也有類(lèi)似的亂序,多次寫(xiě)入亂序
    發(fā)表于 08-09 10:23

    何處理存儲(chǔ)在非易失性設(shè)備內(nèi)存數(shù)據(jù)集損壞

    保護(hù)您的嵌入式軟件免受內(nèi)存損壞本文的目的是提供一種軟件方法,解釋如何處理存儲(chǔ)在非易失性設(shè)備(如小型 EEPROM 或閃存)內(nèi)存數(shù)據(jù)集損壞
    發(fā)表于 12-24 07:27

    何處理才能使CPU的效率更高呢?

    ,大家都知道,當(dāng)按鍵按下之后需要抖動(dòng)處理,一般會(huì)延時(shí)20MS再判斷按鍵是否有效,如果這20MS內(nèi)處在原地踏步的等待狀態(tài),那么效率會(huì)非常低。如何處理才能使CPU的效率更高呢?采用時(shí)間片輪轉(zhuǎn)算法可以解決這個(gè)
    發(fā)表于 01-27 07:28

    stm32如何處理數(shù)組數(shù)據(jù)

    更新一下博客,最近有一些朋友問(wèn)我如何處理數(shù)組數(shù)據(jù),順便發(fā)一下教程,代碼如下if(UartHandle->Instance == USART3)//stm32的串口
    發(fā)表于 02-21 07:09

    編譯器優(yōu)化的靜態(tài)調(diào)度介紹

      指令調(diào)度簡(jiǎn)介  指令調(diào)度是指對(duì)程序塊或過(guò)程的操作進(jìn)行排序以有效利用處理器資源的任務(wù)。指令調(diào)度的目的就是通過(guò)重排指令,提高指令級(jí)并行性,
    發(fā)表于 03-17 17:07

    什么是CPU分枝/亂序執(zhí)行?

    什么是分枝/亂序執(zhí)行?   分枝(branch)是指程序運(yùn)行時(shí)需要改變的節(jié)點(diǎn)。分枝有無(wú)條件分枝和有條件分枝,其中無(wú)條件分枝只
    發(fā)表于 02-04 10:49 ?956次閱讀

    何處理cpu風(fēng)扇轉(zhuǎn)速過(guò)快

    何處理cpu風(fēng)扇轉(zhuǎn)速過(guò)快 問(wèn):我前天在電腦城組裝了一臺(tái)電腦,機(jī)器運(yùn)轉(zhuǎn)還算好,可是CPU風(fēng)扇聲音很大。CPU溫度在39℃~40℃的時(shí)候,
    發(fā)表于 02-25 10:23 ?1w次閱讀

    小型Hadoop集群的數(shù)據(jù)分層調(diào)度處理算法分析

    調(diào)度處理的要求也在逐漸提高,僅依靠CPU主頻的提升并不能快速的處理數(shù)據(jù)帶來(lái)的壓力,快速有效的算法成為目前
    發(fā)表于 11-03 15:02 ?1次下載
    小型Hadoop集群的<b class='flag-5'>數(shù)據(jù)</b>分層<b class='flag-5'>調(diào)度</b><b class='flag-5'>處理</b>算法分析

    基于GPU/CPU的流程序多粒度劃分與調(diào)度

    并實(shí)現(xiàn)了面向GPU/CPU混合架構(gòu)的數(shù)據(jù)流程序任務(wù)劃分方法和多粒度調(diào)度策略,包括任務(wù)的分類(lèi)處理、GPU端任務(wù)的水平分裂和CPU端離散任務(wù)的均
    發(fā)表于 11-23 14:29 ?0次下載

    互聯(lián)車(chē)輛如何處理數(shù)據(jù):3個(gè)常見(jiàn)問(wèn)題

    互聯(lián)車(chē)輛如何處理數(shù)據(jù):3個(gè)常見(jiàn)問(wèn)題
    發(fā)表于 10-31 08:23 ?0次下載
    互聯(lián)車(chē)輛如<b class='flag-5'>何處理</b><b class='flag-5'>數(shù)據(jù)</b>:3個(gè)常見(jiàn)問(wèn)題

    Redis服務(wù)器的內(nèi)存耗盡后,Redis會(huì)如何處理呢?

    作為一臺(tái)服務(wù)器來(lái)說(shuō),內(nèi)存并不是無(wú)限的,所以總會(huì)存在內(nèi)存耗盡的情況,那么當(dāng) Redis 服務(wù)器的內(nèi)存耗盡后,如果繼續(xù)執(zhí)行請(qǐng)求命令,Redis 會(huì)如何處理呢?
    的頭像 發(fā)表于 03-08 09:26 ?734次閱讀

    證明CPU指令是亂序執(zhí)行的

    雙擊QQ.exe從磁盤(pán)加載到內(nèi)存里面,內(nèi)存里面就會(huì)有了一個(gè)進(jìn)程,進(jìn)程產(chǎn)生的時(shí)候會(huì)產(chǎn)生一個(gè)主線(xiàn)程,就是main方法所在的線(xiàn)程,cpu會(huì)找到main開(kāi)始的地方,把它的指令讀取過(guò)來(lái)放到程序計(jì)數(shù)器,把
    的頭像 發(fā)表于 03-15 09:13 ?1158次閱讀

    當(dāng)我們?cè)谡務(wù)?b class='flag-5'>cpu指令亂序的時(shí)候,究竟在談?wù)撌裁矗?/a>

    知道指令的亂序策略很重要,原因是這樣我們就能夠通過(guò)barrier(內(nèi)存屏障)等指令,在正確的位置告訴cpu或者是編譯器,這里我可以接受亂序,那里我不能接受
    的頭像 發(fā)表于 05-19 14:42 ?1724次閱讀
    當(dāng)我們?cè)谡務(wù)?b class='flag-5'>cpu</b>指令<b class='flag-5'>亂序</b>的時(shí)候,究竟在談?wù)撌裁矗? />    </a>
</div>                    </div>
                    <div   id=

    電子發(fā)燒友

    中國(guó)電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品