一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲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 ? 來(lái)源:姜海波 畢昇編譯 ? 作者:姜海波 畢昇編譯 ? 2023-02-02 09:36 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

指令調(diào)度簡(jiǎn)介

指令調(diào)度是指對(duì)程序塊或過程中的操作進(jìn)行排序以有效利用處理器資源的任務(wù)^[1]^。指令調(diào)度的目的就是通過重排指令,提高指令級(jí)并行性,使得程序在擁有指令流水線的CPU上更高效的運(yùn)行。指令調(diào)度優(yōu)化的一個(gè)必要前提就是CPU硬件支持指令并行,否則,指令調(diào)度是毫無(wú)意義的。

根據(jù)指令調(diào)度發(fā)生的階段,可以把其分為靜態(tài)調(diào)度和動(dòng)態(tài)調(diào)度^[2]^。

  • 靜態(tài)調(diào)度:發(fā)生在程序編譯時(shí)期。靜態(tài)調(diào)度由編譯器完成,在生成可執(zhí)行文件之前通過指令調(diào)度相關(guān)優(yōu)化,完成指令重排。
  • 動(dòng)態(tài)調(diào)度:發(fā)生在程序運(yùn)行時(shí)期。需要提供相應(yīng)的硬件支持,比如亂序執(zhí)行(OoOE: out-of-order execution),此時(shí)指令的發(fā)射順序和執(zhí)行順序可能是不一致,但CPU會(huì)保證程序執(zhí)行的正確性。

無(wú)論是靜態(tài)調(diào)度還是動(dòng)態(tài)調(diào)度,都是通過指令重排以提高指令流水,進(jìn)而提高程序執(zhí)行性能。靜態(tài)調(diào)度和動(dòng)態(tài)調(diào)度二者相輔相成,可以彌補(bǔ)對(duì)方的一些天然不足,協(xié)同完成指令流水優(yōu)化,提高程序性能。本文主要介紹靜態(tài)調(diào)度,如無(wú)特殊說(shuō)明,后續(xù)指令調(diào)度均指靜態(tài)指令調(diào)度。

現(xiàn)代計(jì)算機(jī)的指令并行方案

現(xiàn)代計(jì)算機(jī)的三種并行模式:流水線、超標(biāo)量、多核。其中流水線和超標(biāo)量與指令調(diào)度相關(guān)性更強(qiáng),下面簡(jiǎn)單介紹一下這兩種模式。

  1. 流水線
    將指令執(zhí)行過程分成多個(gè)階段,每個(gè)階段使用不同的硬件資源,從而使得多條指令的執(zhí)行時(shí)間可以重疊。
    經(jīng)典五段式流水線:IF(取指)、ID(譯碼)、EX(執(zhí)行)、MEM(訪存)、WB(回寫)。在五段式流水線中將一條指令的執(zhí)行過程分成了5個(gè)階段。
    圖片
    • 使能流水線之前
      圖片

    • 使能流水線之后
      圖片

      在最優(yōu)情況下,一個(gè)cycle中,由于指令執(zhí)行的每個(gè)階段使用不同的硬件資源,不存在競(jìng)爭(zhēng)關(guān)系,從而可以使每個(gè)指令執(zhí)行在不同的階段。而由于數(shù)據(jù)依賴等原因的存在,流水線的并行程度一般很難達(dá)到最優(yōu),具體的并行程度需要依賴于指令調(diào)度的效果。

對(duì)于如下原始指令序列

ldr    x1, [x2, x3]
add    x1, x1, #1
ldr    x5, [x2, x4]
sub    x5, x5, #1
mul    x6, x1, x5

在指令調(diào)度之前,耗時(shí)17個(gè)cycle:

圖片

在指令調(diào)度之后,耗時(shí)13個(gè)cycle:

ldr    x1, [x2, x3]
ldr    x5, [x2, x4]
add    x1, x1, #1
sub    x5, x5, #1
mul    x6, x1, x5

圖片

  1. 超標(biāo)量
    具備超標(biāo)量結(jié)構(gòu)的CPU在一個(gè)內(nèi)核上集成了多個(gè)譯碼器、ALU等單元。相比于具備普通流水線技術(shù)的CPU,具備超標(biāo)量技術(shù)的CPU可以在同一個(gè)階段執(zhí)行多條處在相同階段的指令。
    圖片
    超標(biāo)量流水線:
    圖片

    指令調(diào)度與寄存器分配的關(guān)系

講到指令調(diào)度,不可避免的會(huì)想到寄存器分配,而指令調(diào)度和寄存器分配之間可以說(shuō)具有相互約束、相互作用的關(guān)系。

指令調(diào)度通過重排指令順序,降低指令間依賴,提高程序的并行度,相應(yīng)的,改變指令的執(zhí)行時(shí)機(jī)也會(huì)改變指令所使用的寄存器的生命周期;而寄存器分配又是挖掘程序的局部性,盡量縮短寄存器的生命周期,以能夠讓更多的數(shù)據(jù)直接存儲(chǔ)在寄存器中。

寄存器分配同樣也會(huì)影響指令調(diào)度,例如當(dāng)對(duì)寄存器的需求超過寄存器數(shù)量時(shí),會(huì)選擇增加一些訪存指令,這些指令也需要納入到指令調(diào)度的考慮范疇之內(nèi)。

所以說(shuō)兩者相互約束??梢灾?,將指令調(diào)度問題和寄存器分配問題作為兩個(gè)約束條件進(jìn)行聯(lián)合求解得到的解決方案是相對(duì)更優(yōu)的,但由于無(wú)論是指令調(diào)度還是寄存器分配,都是很復(fù)雜的NP完全問題,綜合考慮下,編譯器一般會(huì)分別處理二者^[1]^。

在LLVM編譯器的設(shè)計(jì)中,寄存器分配之前和寄存器分配之后都會(huì)執(zhí)行指令調(diào)度。

  • 寄存器分配之前執(zhí)行指令調(diào)度:當(dāng)前LLVM IR中分配的寄存器為虛擬寄存器,寄存器數(shù)量不受限制,此時(shí)指令調(diào)度受到的約束最小,可以更大程度上提高指令并行度。但是在寄存器分配階段,使用物理寄存器替換虛擬寄存器,由于物理寄存器數(shù)量有限,寄存器壓力增大,可能產(chǎn)生寄存器spill場(chǎng)景影響程序性能。
  • 寄存器分配之后執(zhí)行指令調(diào)度:寄存器分配階段由于寄存器復(fù)用等情況會(huì)增加指令間依賴,破壞在寄存器分配之前做好的指令調(diào)度優(yōu)化,所以在寄存器分配之后還要再次執(zhí)行指令調(diào)度。

圖片

聲明:本文內(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

    文章

    19863

    瀏覽量

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

    關(guān)注

    68

    文章

    11066

    瀏覽量

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

    關(guān)注

    0

    文章

    4

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    一種改進(jìn)的SEDF調(diào)度算法

    法引入一種比較機(jī)制來(lái)執(zhí)行多處理器間的負(fù)載平衡.當(dāng)VCPU調(diào)度時(shí),將就緒VCPU遷移到總運(yùn)行時(shí)間最少的處理器.仿真實(shí)驗(yàn)結(jié)果表明:IEDF調(diào)度算法性能有較大的提升【關(guān)鍵詞】:SMP;;SEDF;;負(fù)載平衡
    發(fā)表于 04-24 10:03

    μC/OS的任務(wù)調(diào)度實(shí)現(xiàn)方法及PowerPC的優(yōu)化

    那些具有優(yōu)先級(jí)算法硬件指令的CPU,僅做移植是很不夠的?! ? 基于優(yōu)先級(jí)的任務(wù)調(diào)度  一個(gè)基于優(yōu)先級(jí)的實(shí)時(shí)多任務(wù)內(nèi)核的任務(wù)調(diào)度機(jī)制需要實(shí)現(xiàn)下面三個(gè)核心的處理功能:  ◆ 將任務(wù)置于就緒態(tài);  ◆ 將
    發(fā)表于 04-16 09:18

    應(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

    請(qǐng)問ucos多任務(wù)使用全局變量什么時(shí)候需要關(guān)中斷或者關(guān)調(diào)度?

    在STM32用ucos ,有的時(shí)候不方便用郵箱 和隊(duì)列 只能用全局變量,那么問題來(lái)了,因?yàn)椴僮魅肿兞康臅r(shí)候有時(shí)是多條匯編指令,如果現(xiàn)在中斷來(lái)了,進(jìn)行任務(wù)調(diào)度的話就破壞了該全局變量,結(jié)果不可預(yù)料
    發(fā)表于 10-23 00:20

    在BLE broadcaster基礎(chǔ)測(cè)試TMOS調(diào)度,無(wú)法正常調(diào)度是為什么?

    在BLE broadcaster基礎(chǔ)測(cè)試TMOS調(diào)度,發(fā)現(xiàn)在ProcessEvent里第一行增加PRINT("LED_Process:%x ",events
    發(fā)表于 08-11 06:26

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

      指令調(diào)度簡(jiǎn)介  指令調(diào)度是指對(duì)程序塊或過程中的操作進(jìn)行排序以有效利用處理器資源的任務(wù)。指令調(diào)度
    發(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次下載

    跳轉(zhuǎn)指令B及帶連接的跳轉(zhuǎn)指令BLX 

    跳轉(zhuǎn)(B)和跳轉(zhuǎn)連接(BL)指令是改變指令執(zhí)行順序的標(biāo)準(zhǔn)方式。ARM一般按照字地址順序執(zhí)行指令,需要時(shí)使用條件執(zhí)行跳過某段指令。只要程序必須偏離順序執(zhí)行,就要使用控制流
    發(fā)表于 10-19 10:26 ?2次下載
    跳轉(zhuǎn)<b class='flag-5'>指令</b>B及帶連接的跳轉(zhuǎn)<b class='flag-5'>指令</b>BLX<b class='flag-5'>上</b> 

    柔性負(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 ?7485次閱讀
    柔性負(fù)荷<b class='flag-5'>調(diào)度</b>,發(fā)電<b class='flag-5'>調(diào)度</b>的補(bǔ)充

    計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)教程之指令級(jí)并行的詳細(xì)資料說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)教程之指令級(jí)并行的詳細(xì)資料說(shuō)明包括了:1 指令級(jí)并行的概念,2 指令的動(dòng)態(tài)調(diào)度,3 動(dòng)態(tài)分支預(yù)測(cè)技術(shù),4 多
    發(fā)表于 12-10 08:00 ?0次下載
    計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)教程之<b class='flag-5'>指令</b>級(jí)并行的詳細(xì)資料說(shuō)明

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

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

    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 ?2806次閱讀

    什么是調(diào)度?如何進(jìn)行調(diào)度?

    進(jìn)程調(diào)度是操作系統(tǒng)最重要的內(nèi)容之一,也是學(xué)習(xí)操作系統(tǒng)的重點(diǎn)和難點(diǎn)。關(guān)于進(jìn)程調(diào)度,我們首先就會(huì)問出一些問題,什么是進(jìn)程調(diào)度,為什么要進(jìn)程調(diào)度,如何進(jìn)行
    發(fā)表于 08-05 09:04 ?1.5w次閱讀

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

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