一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

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

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

什么是指令調(diào)度(下)

jf_78858299 ? 來源:姜海波 畢昇編譯 ? 作者:姜海波 畢昇編譯 ? 2023-02-02 09:36 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

指令調(diào)度的問題與約束

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

指令流水間的stall主要由數(shù)據(jù)型冒險(xiǎn)、結(jié)構(gòu)性冒險(xiǎn)、控制型冒險(xiǎn)導(dǎo)致。

  • 數(shù)據(jù)型冒險(xiǎn):當(dāng)前指令的執(zhí)行依賴與上一條指令執(zhí)行的結(jié)果。數(shù)據(jù)型冒險(xiǎn)共有三種:寫后讀(RAW)、讀后寫(WAR)、寫后寫(WAW)。數(shù)據(jù)冒險(xiǎn)可能產(chǎn)生數(shù)據(jù)流依賴。
  • 結(jié)構(gòu)型冒險(xiǎn):多條指令同時(shí)訪問一個(gè)硬件單元的時(shí)候,由于缺少相應(yīng)的資源,導(dǎo)致結(jié)構(gòu)型冒險(xiǎn)。
  • 控制型冒險(xiǎn):存在分支跳轉(zhuǎn),無法預(yù)測(cè)下一條要執(zhí)行的指令,導(dǎo)致其產(chǎn)生的控制型冒險(xiǎn)。

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

下面簡(jiǎn)單介紹一下三種數(shù)據(jù)型冒險(xiǎn)(即數(shù)據(jù)依賴):

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

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

表調(diào)度是一種貪心+啟發(fā)式方法,用以調(diào)度基本塊中的各個(gè)指令操作,是基本塊中指令調(diào)度的最常見方法?;诨緣K的指令調(diào)度不需要考慮程序的控制流,主要考慮數(shù)據(jù)依賴、硬件資源等信息。

表調(diào)度的基本思想:維護(hù)一個(gè)用來存儲(chǔ)已經(jīng)準(zhǔn)備執(zhí)行的指令的ready列表和一個(gè)正在執(zhí)行指令的active列表,ready列表的構(gòu)建主要基于數(shù)據(jù)依賴約束和硬件資源信息;根據(jù)調(diào)度算法以周期為單位來執(zhí)行具體的指令調(diào)度,包括從列表中選擇及調(diào)度指令,更新列表信息。

基本的表調(diào)度算法大致分為以下三步:

  1. 根據(jù)指令間依賴,建立依賴關(guān)系圖。
  2. 根據(jù)當(dāng)前指令節(jié)點(diǎn)到根節(jié)點(diǎn)的長(zhǎng)度以及指令的latency,計(jì)算每個(gè)指令的優(yōu)先級(jí)。
  3. 不斷選擇一個(gè)指令,并調(diào)度它,
    • 使用兩個(gè)隊(duì)列維護(hù)ready的指令和正在執(zhí)行的active的指令;
    • 在每個(gè)周期:選擇一個(gè)滿足條件的ready的指令并調(diào)度它,更新ready隊(duì)列;檢查active的指令是否執(zhí)行完畢,更新active列表。

指令調(diào)度案例^[4]^

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

假設(shè)當(dāng)前CPU有兩個(gè)計(jì)算單元(即每個(gè)周期可以執(zhí)行兩條指令);加法指令的latency為 2 cycles,其他指令為 1 cycle。

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

本文只是簡(jiǎn)單介紹了最基本的表調(diào)度方法,在實(shí)際應(yīng)用中,存在各種基于該方法的改進(jìn)方案。關(guān)于LLVM編譯器中的表調(diào)度算法,可以先自行閱讀其源碼,更多相關(guān)介紹,敬請(qǐng)期待。

結(jié)語

本文簡(jiǎn)單介紹了指令調(diào)度的基本概念,指令調(diào)度的原因與影響以及基本的指令調(diào)度算法。

指令調(diào)度作為NP完全問題目前依舊尚未有一個(gè)完美的解決方案,對(duì)指令調(diào)度算法的探索與優(yōu)化尚有很大的發(fā)展空間。

LLVM之父Chris Lattner認(rèn)為“編譯器的黃金時(shí)代”已經(jīng)降臨^[5]^。隨著計(jì)算機(jī)架構(gòu)的復(fù)興,未來的N年里將是每一位編譯器工程師大顯身手的時(shí)代。

參考

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

    關(guān)注

    68

    文章

    19852

    瀏覽量

    234163
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11063

    瀏覽量

    216470
  • 指令調(diào)度器
    +關(guān)注

    關(guān)注

    0

    文章

    4

    瀏覽量

    1578
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    FreeRTOS任務(wù)調(diào)度器的三種調(diào)度算法講解(

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

    應(yīng)急通信調(diào)度指揮系統(tǒng)的原理

      應(yīng)急通信調(diào)度指揮系統(tǒng)的原理  從技術(shù)層面,我們提到的應(yīng)急通信調(diào)度指揮系統(tǒng)原理,如圖所示,主要包括四個(gè)方面:信息采集、信息傳遞、信息處理以及指令下達(dá)和執(zhí)行 。其中,虛框內(nèi)表示急需  1.信息采集
    發(fā)表于 12-29 17:21

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

    量與指令調(diào)度相關(guān)性更強(qiáng),下面簡(jiǎn)單介紹一這兩種模式?! ×魉€  將指令執(zhí)行過程分成多個(gè)階段,每個(gè)階段使用不同的硬件資源,從而使得多條指令
    發(fā)表于 03-17 17:07

    基于ARM Cortex-M3的μCOS-II任務(wù)調(diào)度硬件指令實(shí)現(xiàn)

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

    同時(shí)多線程處理器的指令調(diào)度器設(shè)計(jì)

    同時(shí)多線程處理器的指令調(diào)度器設(shè)計(jì)_李樂
    發(fā)表于 01-08 14:55 ?0次下載

    云環(huán)境基于動(dòng)態(tài)蟻群遺傳算法的調(diào)度方法研究_尚志會(huì)

    云環(huán)境基于動(dòng)態(tài)蟻群遺傳算法的調(diào)度方法研究_尚志會(huì)
    發(fā)表于 01-30 23:17 ?0次下載

    柔性負(fù)荷調(diào)度,發(fā)電調(diào)度的補(bǔ)充

    的負(fù)荷,包含具備需求彈性的可調(diào)節(jié)負(fù)荷或可轉(zhuǎn)移負(fù)荷,具備雙向調(diào)節(jié)能力的電動(dòng)汽車、儲(chǔ)能、蓄能,以及分布式電源、微網(wǎng)等。傳統(tǒng)發(fā)電調(diào)度中,機(jī)組需按照調(diào)控指令完全響應(yīng),而柔性負(fù)荷調(diào)度在滿足電網(wǎng)調(diào)度
    發(fā)表于 05-24 14:44 ?7473次閱讀
    柔性負(fù)荷<b class='flag-5'>調(diào)度</b>,發(fā)電<b class='flag-5'>調(diào)度</b>的補(bǔ)充

    Storm環(huán)境基于權(quán)重的任務(wù)調(diào)度算法

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

    如何在云計(jì)算環(huán)境進(jìn)行資源調(diào)度算法的研究

    云計(jì)算作為一種新興的商業(yè)計(jì)算模型被提出以來,經(jīng)過學(xué)術(shù)界與產(chǎn)業(yè)界的不斷推進(jìn),云計(jì)算正逐漸從理論走向?qū)嵺`,國(guó)家也投入巨額人力物力來促進(jìn)“云計(jì)算”在我國(guó)落地?;谠骗h(huán)境的資源調(diào)度是一個(gè)重要研究方向,云
    發(fā)表于 01-02 15:18 ?4次下載
    如何在云計(jì)算環(huán)境<b class='flag-5'>下</b>進(jìn)行資源<b class='flag-5'>調(diào)度</b>算法的研究

    機(jī)場(chǎng)智能調(diào)度系統(tǒng)的功能及應(yīng)用方案

    根據(jù)機(jī)場(chǎng)地勤運(yùn)作特點(diǎn)和業(yè)務(wù)需求,易華錄提供了一體化端到端的機(jī)場(chǎng)無線地勤調(diào)度解決方案,為機(jī)場(chǎng)運(yùn)作提供高效、安全、可靠并且高性價(jià)比的特有的機(jī)場(chǎng)調(diào)度系統(tǒng),統(tǒng)一承載語音通話、集群語音、工作流指令、信息發(fā)布
    發(fā)表于 11-16 10:49 ?3458次閱讀

    HLS優(yōu)化設(shè)計(jì)的最關(guān)鍵指令

    Unroll 指令在 for 循環(huán)的代碼區(qū)域進(jìn)行優(yōu)化,這個(gè)指令不包含流水線執(zhí)行的概念,單純地將循環(huán)體展開使用更多地硬件資源實(shí)現(xiàn),保證并行循環(huán)體在調(diào)度地過程中是彼此獨(dú)立的。
    的頭像 發(fā)表于 01-14 09:41 ?2803次閱讀

    云環(huán)境HEDSM工作流調(diào)度策略綜述

    針對(duì)傳統(tǒng)算法處理云環(huán)境中任務(wù)調(diào)度時(shí)出現(xiàn)的尋優(yōu)性能差以及尋優(yōu)方案不能滿足用戶多樣性需求的問題,在考慮任務(wù)完成時(shí)間、完成成本以及資源閑置率3個(gè)優(yōu)化目標(biāo)的情況,文中通過模擬啟發(fā)弌算法調(diào)度過程(初始化
    發(fā)表于 05-29 15:39 ?6次下載

    異構(gòu)環(huán)境的多DAG任務(wù)調(diào)度算法綜述

    異構(gòu)環(huán)境的多DAG任務(wù)調(diào)度算法綜述
    發(fā)表于 06-21 15:15 ?13次下載

    什么是指令調(diào)度(上)

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

    基于優(yōu)先級(jí)調(diào)度的嵌入式實(shí)時(shí)操作系統(tǒng)內(nèi)核詳解()

    基于優(yōu)先級(jí)調(diào)度的嵌入式實(shí)時(shí)操作系統(tǒng)內(nèi)核詳解()
    的頭像 發(fā)表于 09-06 12:46 ?1220次閱讀
    基于優(yōu)先級(jí)<b class='flag-5'>調(diào)度</b>的嵌入式實(shí)時(shí)操作系統(tǒng)內(nèi)核詳解(<b class='flag-5'>下</b>)