在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

什么是指令調度(下)

jf_78858299 ? 來源:姜海波 畢昇編譯 ? 作者:姜海波 畢昇編譯 ? 2023-02-02 09:36 ? 次閱讀

指令調度的問題與約束

指令調度受到多方面的約束,如數據依賴約束、功能部件約束、寄存器約束等^[3]^,在這些約束下,尋找到最優解,降低指令流水間的stall,就是指令調度的終極目標。

指令流水間的stall主要由數據型冒險、結構性冒險、控制型冒險導致。

  • 數據型冒險:當前指令的執行依賴與上一條指令執行的結果。數據型冒險共有三種:寫后讀(RAW)、讀后寫(WAR)、寫后寫(WAW)。數據冒險可能產生數據流依賴。
  • 結構型冒險:多條指令同時訪問一個硬件單元的時候,由于缺少相應的資源,導致結構型冒險。
  • 控制型冒險:存在分支跳轉,無法預測下一條要執行的指令,導致其產生的控制型冒險。

編譯器解決上述冒險的方法就是通過插入 NOP 指令,增加流水間的stall來化解冒險。

下面簡單介紹一下三種數據型冒險(即數據依賴):

  1. 寫后讀(RAW):一條指令讀取前一條指令的寫入結果。寫后讀是最常見的一種數據依賴類型,這種依賴被稱為真數據依賴(true dependence)。
    x = 1;
    y = x;
    
  2. 讀后寫(WAR):一條指令寫入數據到前一條指令的操作數。這種依賴被稱為反依賴或反相關(anti dependence)。
    y = x;
    x = 1;
    
  3. 寫后寫(WAW):兩條指令寫入同一個目標。這種依賴被稱為輸出依賴(output dependence)。
    x = 1;
    x = 2;
    

指令調度算法之表調度(List Scheduling)

表調度是一種貪心+啟發式方法,用以調度基本塊中的各個指令操作,是基本塊中指令調度的最常見方法。基于基本塊的指令調度不需要考慮程序的控制流,主要考慮數據依賴、硬件資源等信息。

表調度的基本思想:維護一個用來存儲已經準備執行的指令的ready列表和一個正在執行指令的active列表,ready列表的構建主要基于數據依賴約束和硬件資源信息;根據調度算法以周期為單位來執行具體的指令調度,包括從列表中選擇及調度指令,更新列表信息。

基本的表調度算法大致分為以下三步:

  1. 根據指令間依賴,建立依賴關系圖。
  2. 根據當前指令節點到根節點的長度以及指令的latency,計算每個指令的優先級。
  3. 不斷選擇一個指令,并調度它,
    • 使用兩個隊列維護ready的指令和正在執行的active的指令;
    • 在每個周期:選擇一個滿足條件的ready的指令并調度它,更新ready隊列;檢查active的指令是否執行完畢,更新active列表。

指令調度案例^[4]^

本案例選自卡內基梅隆大學(Carnegie Mellon University)的Compiler Design課程。

假設當前CPU有兩個計算單元(即每個周期可以執行兩條指令);加法指令的latency為 2 cycles,其他指令為 1 cycle。

  1. 根據數據依賴關系構建出依賴關系圖。
    圖片
  2. 計算指令節點優先級
    優先級計算公式如下:
    其中,表示當前指令節點,表示的子節點,表示 "true dependency" ,表示 "anti-dependency" 。
    圖片
    其中 I10 為葉節點,優先級為其latency,故結果為1;I4 為非葉節點,優先級為當前節點latency(I4 為加法指令,latency為2)+ 子節點的優先級,故結果為3。本例中無反依賴(anti-dependency)情形。
  3. 執行調度
    圖片
    在實際執行調度時,對于同等優先級的指令,由于具體調度方案的不同,會出現不同的情況,例如本例中出現的場景,可以通過添加其他度量標準進一步優化優先級計算方案。盡管表調度方法不能保證得到最優調度結果,但它是接近最優解的。

本文只是簡單介紹了最基本的表調度方法,在實際應用中,存在各種基于該方法的改進方案。關于LLVM編譯器中的表調度算法,可以先自行閱讀其源碼,更多相關介紹,敬請期待。

結語

本文簡單介紹了指令調度的基本概念,指令調度的原因與影響以及基本的指令調度算法。

指令調度作為NP完全問題目前依舊尚未有一個完美的解決方案,對指令調度算法的探索與優化尚有很大的發展空間。

LLVM之父Chris Lattner認為“編譯器的黃金時代”已經降臨^[5]^。隨著計算機架構的復興,未來的N年里將是每一位編譯器工程師大顯身手的時代。

參考

  1. Keith D. Cooper, Linda Torczon. Engineering a Compiler (Second Edition).
  2. https://zhuanlan.zhihu.com/p/360364235
  3. Andrew W.Apple, Maia Ginsburg. Modern Compiler Implementation in C.
  4. https://www.cs.cmu.edu/afs/cs/academic/class/15745-s19/www/lectures/L18-Instruction-Scheduling-pre-class.pdf
  5. https://zhuanlan.zhihu.com/p/502730940
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    19740

    瀏覽量

    232890
  • cpu
    cpu
    +關注

    關注

    68

    文章

    11011

    瀏覽量

    215186
  • 指令調度器
    +關注

    關注

    0

    文章

    4

    瀏覽量

    1565
收藏 人收藏

    評論

    相關推薦

    FreeRTOS任務調度器的三種調度算法講解(

    配置如下時,調度算法就會變成不帶時間片的搶占式調度
    的頭像 發表于 03-21 13:46 ?3873次閱讀
    FreeRTOS任務<b class='flag-5'>調度</b>器的三種<b class='flag-5'>調度</b>算法講解(<b class='flag-5'>下</b>)

    應急通信調度指揮系統的原理

      應急通信調度指揮系統的原理  從技術層面,我們提到的應急通信調度指揮系統原理,如圖所示,主要包括四個方面:信息采集、信息傳遞、信息處理以及指令下達和執行 。其中,虛框內表示急需  1.信息采集
    發表于 12-29 17:21

    編譯器優化的靜態調度介紹

    量與指令調度相關性更強,下面簡單介紹一這兩種模式。  流水線  將指令執行過程分成多個階段,每個階段使用不同的硬件資源,從而使得多條指令
    發表于 03-17 17:07

    基于ARM Cortex-M3的μCOS-II任務調度硬件指令實現

    本文首先多UC/OS-II的任務調度算法做了詳細的分析, 然后介紹了基于基于ARM Cortex-M3的COS-II的任務調度硬件指令實現
    發表于 03-25 15:13 ?270次下載
    基于ARM Cortex-M3的μCOS-II任務<b class='flag-5'>調度</b>硬件<b class='flag-5'>指令</b>實現

    同時多線程處理器的指令調度器設計

    同時多線程處理器的指令調度器設計_李樂
    發表于 01-08 14:55 ?0次下載

    云環境基于動態蟻群遺傳算法的調度方法研究_尚志會

    云環境基于動態蟻群遺傳算法的調度方法研究_尚志會
    發表于 01-30 23:17 ?0次下載

    柔性負荷調度,發電調度的補充

    的負荷,包含具備需求彈性的可調節負荷或可轉移負荷,具備雙向調節能力的電動汽車、儲能、蓄能,以及分布式電源、微網等。傳統發電調度中,機組需按照調控指令完全響應,而柔性負荷調度在滿足電網調度
    發表于 05-24 14:44 ?7365次閱讀
    柔性負荷<b class='flag-5'>調度</b>,發電<b class='flag-5'>調度</b>的補充

    Storm環境基于權重的任務調度算法

    問題,提出一種Storm環境基于權重的任務調度算法(TSAW-Storm)。該算法首先根據各任務的CPU資源占用情況以及任務間的數據流大小,分別確定拓撲的點權和邊權;并利用最大化邊權增益的思想,逐步構建起各工作節點中承載的任務集合,在保證集群負載均
    發表于 04-17 10:52 ?0次下載
    Storm環境<b class='flag-5'>下</b>基于權重的任務<b class='flag-5'>調度</b>算法

    如何在云計算環境進行資源調度算法的研究

    云計算作為一種新興的商業計算模型被提出以來,經過學術界與產業界的不斷推進,云計算正逐漸從理論走向實踐,國家也投入巨額人力物力來促進“云計算”在我國落地。基于云環境的資源調度是一個重要研究方向,云
    發表于 01-02 15:18 ?4次下載
    如何在云計算環境<b class='flag-5'>下</b>進行資源<b class='flag-5'>調度</b>算法的研究

    機場智能調度系統的功能及應用方案

    根據機場地勤運作特點和業務需求,易華錄提供了一體化端到端的機場無線地勤調度解決方案,為機場運作提供高效、安全、可靠并且高性價比的特有的機場調度系統,統一承載語音通話、集群語音、工作流指令、信息發布
    發表于 11-16 10:49 ?3372次閱讀

    HLS優化設計的最關鍵指令

    Unroll 指令在 for 循環的代碼區域進行優化,這個指令不包含流水線執行的概念,單純地將循環體展開使用更多地硬件資源實現,保證并行循環體在調度地過程中是彼此獨立的。
    的頭像 發表于 01-14 09:41 ?2722次閱讀

    云環境HEDSM工作流調度策略綜述

    針對傳統算法處理云環境中任務調度時出現的尋優性能差以及尋優方案不能滿足用戶多樣性需求的問題,在考慮任務完成時間、完成成本以及資源閑置率3個優化目標的情況,文中通過模擬啟發弌算法調度過程(初始化
    發表于 05-29 15:39 ?6次下載

    異構環境的多DAG任務調度算法綜述

    異構環境的多DAG任務調度算法綜述
    發表于 06-21 15:15 ?13次下載

    什么是指令調度(上)

    指令調度是指對程序塊或過程中的操作進行排序以有效利用處理器資源的任務^[1]^。指令調度的目的就是通過重排指令,提高
    的頭像 發表于 02-02 09:36 ?3252次閱讀
    什么是<b class='flag-5'>指令</b><b class='flag-5'>調度</b>(上)

    基于優先級調度的嵌入式實時操作系統內核詳解()

    基于優先級調度的嵌入式實時操作系統內核詳解()
    的頭像 發表于 09-06 12:46 ?1104次閱讀
    基于優先級<b class='flag-5'>調度</b>的嵌入式實時操作系統內核詳解(<b class='flag-5'>下</b>)
    主站蜘蛛池模板: 亚洲一区二区三区中文字幕5566 | 四虎4hu永久在线观看 | 日韩电影毛片 | 美女国产一区 | 一区二区三区欧美在线 | 欧美在线91| 欧美猛交喷潮在线播放 | 久久久午夜视频 | 欧美骚 | 久久大尺度 | h网站在线免费观看 | 看黄免费在线 | 九月婷婷综合 | 欧美日韩一区二区三区视频在线观看 | 色香欲亚洲天天综合网 | 99成人国产精品视频 | 国产片在线 | 91精品久久国产青草 | 8050午夜网| 日本一区三区二区三区四区 | 国产二三区 | 色婷婷六月 | 欧美黄又粗暴一进一出抽搐 | 天天射天天操天天干 | 中文字幕 视频一区 | 综合婷婷丁香 | 5151四虎永久在线精品免费 | 起碰成人免费公开网视频 | 另类激情网 | 很黄很暴力 很污秽的小说 很黄很黄叫声床戏免费视频 | 看黄免费在线 | 性日韩 | 婷婷激情四月 | 美女脱裤子屁屁视频 | 欧美日韩无 | 性香港xxxxx免费视频播放 | 成年网站在线 | 一区二区三区视频观看 | 欧美性猛交ⅹxxx乱大交免费 | 五月婷婷丁香花 | 色六月婷婷 |