針對(duì)具有多個(gè)功能單元的處理器調(diào)度循環(huán)的方法
【技術(shù)領(lǐng)域】
[0001] 以下描述涉及一種循環(huán)調(diào)度方法。
【背景技術(shù)】
[0002] 超長(zhǎng)指令字(VLIW)處理器或粗粒度可重構(gòu)陣列(CGRA)處理器使用多個(gè)功能單元 (FU)。為了使FU相互通信,F(xiàn)U可通過數(shù)據(jù)路徑相互連接。
[0003] 在處理器中選擇數(shù)據(jù)路徑和FU的配置中,若干組合是可能的。
【發(fā)明內(nèi)容】
[0004] 提供本
【發(fā)明內(nèi)容】
以按簡(jiǎn)化形式介紹對(duì)構(gòu)思的選擇,其中,所述構(gòu)思在以下的具體 實(shí)施方式中被進(jìn)一步描述。本
【發(fā)明內(nèi)容】
不意圖確定被要求權(quán)利的主題的關(guān)鍵特征或顯著特 征,也不意圖用作對(duì)確定被要求保護(hù)的主題的范圍的幫助。
[0005] 在一個(gè)總的方面,一種循環(huán)調(diào)度方法包括:使用執(zhí)行單元調(diào)度較高優(yōu)先級(jí)循環(huán); 使用作為調(diào)度較高優(yōu)先級(jí)循環(huán)的結(jié)果而可用的執(zhí)行單元來調(diào)度較低優(yōu)先級(jí)循環(huán)。
[0006] 調(diào)度較高優(yōu)先級(jí)循環(huán)的步驟可包括:使用執(zhí)行單元調(diào)度最高優(yōu)先級(jí)循環(huán)。
[0007] 調(diào)度較低優(yōu)先級(jí)循環(huán)的步驟可包括:使用在較高優(yōu)先級(jí)循環(huán)被調(diào)度的周期中未被 分配給較高優(yōu)先級(jí)循環(huán)的執(zhí)行單元來調(diào)度較低優(yōu)先級(jí)循環(huán)的至少一部分。
[0008] 調(diào)度較高優(yōu)先級(jí)循環(huán)的步驟可包括:從在源代碼中包括的循環(huán)中選擇獨(dú)立的多個(gè) 循環(huán);確定被選擇的多個(gè)循環(huán)的優(yōu)先級(jí)。
[0009] 較高優(yōu)先級(jí)循環(huán)的優(yōu)先級(jí)可高于較低優(yōu)先級(jí)循環(huán)的優(yōu)先級(jí),并且循環(huán)的優(yōu)先級(jí)可 基于以下項(xiàng)中的至少一個(gè)被計(jì)算:循環(huán)的迭代計(jì)數(shù)和用于循環(huán)的單次迭代的周期數(shù)。
[0010] 調(diào)度較低優(yōu)先級(jí)循環(huán)的步驟可包括:基于在較低優(yōu)先級(jí)循環(huán)中包括的指令之間的 數(shù)據(jù)依賴性,將所述指令分配給在較高優(yōu)先級(jí)循環(huán)被調(diào)度的周期中的可用執(zhí)行單元。
[0011] 調(diào)度較低優(yōu)先級(jí)循環(huán)的步驟可包括:確定將被用于調(diào)度較低優(yōu)先級(jí)循環(huán)的執(zhí)行單 元;驗(yàn)證被確定的執(zhí)行單元是否可用于較低優(yōu)先級(jí)循環(huán)被調(diào)度的周期中。
[0012] 調(diào)度較高優(yōu)先級(jí)循環(huán)的步驟可包括:基于在最高優(yōu)先級(jí)循環(huán)中包括的指令之間的 數(shù)據(jù)依賴性,將所述指令分配給在周期中的執(zhí)行單元。
[0013] 所述方法還可包括:響應(yīng)于較低優(yōu)先級(jí)循環(huán)未使用可用執(zhí)行單元被調(diào)度,展開調(diào) 度較高優(yōu)先級(jí)循環(huán)的結(jié)果;使用作為被展開的調(diào)度結(jié)果而可用的執(zhí)行單元來調(diào)度較低優(yōu)先 級(jí)循環(huán)。
[0014] 所述展開步驟可包括:基于用于展開計(jì)數(shù)的閾值和用于被展開的調(diào)度結(jié)果的周期 數(shù)的閾值中的至少一個(gè),確定是否將展開調(diào)度較高優(yōu)先級(jí)循環(huán)的結(jié)果。
[0015] 調(diào)度較低優(yōu)先級(jí)循環(huán)的步驟可包括:響應(yīng)于較高優(yōu)先級(jí)循環(huán)的迭代計(jì)數(shù)大于較低 優(yōu)先級(jí)循環(huán)的迭代計(jì)數(shù),在較低優(yōu)先級(jí)循環(huán)被迭代之后,使用聲明防護(hù)來限制較低優(yōu)先級(jí) 循環(huán)的執(zhí)行。
[0016] 所述方法還可包括:響應(yīng)于較高優(yōu)先級(jí)循環(huán)的迭代計(jì)數(shù)小于較低優(yōu)先級(jí)循環(huán)的迭 代計(jì)數(shù),在較高優(yōu)先級(jí)循環(huán)被迭代之后,調(diào)度較低優(yōu)先級(jí)循環(huán)以迭代較低優(yōu)先級(jí)循環(huán)的剩 余部分。
[0017] 所述方法還可包括:在較高優(yōu)先權(quán)循環(huán)被迭代之后,調(diào)度用于存儲(chǔ)較低優(yōu)先級(jí)循 環(huán)的中間數(shù)據(jù)的指令。
[0018] 執(zhí)行單元可包括在粗粒度可重構(gòu)陣列(CGRA)處理器或超長(zhǎng)指令字(VLIW)處理器 中。
[0019] 執(zhí)行單元可包括標(biāo)量功能單元(FU)、打包/解包FU、矢量加載/存儲(chǔ)FU和矢量 FU,其中,標(biāo)量FU被配置為處理標(biāo)量數(shù)據(jù)操作,打包/解包FU被配置為處理標(biāo)量數(shù)據(jù)和矢 量數(shù)據(jù)之間的轉(zhuǎn)換,矢量加載/存儲(chǔ)FU被配置為處理對(duì)矢量數(shù)據(jù)的加載和存儲(chǔ),矢量FU被 配置為處理對(duì)矢量數(shù)據(jù)的操作。
[0020] 在另一總的方面,一種循環(huán)調(diào)度方法包括:使用執(zhí)行單元調(diào)度第一循環(huán);使用作 為調(diào)度第一循環(huán)的結(jié)果而可用的執(zhí)行單元來調(diào)度第二循環(huán)。
[0021] 調(diào)度第二循環(huán)的步驟可包括:使用在第一循環(huán)被調(diào)度的周期中未被分配給第一循 環(huán)的執(zhí)行單元來調(diào)度第二循環(huán)的至少一部分。
[0022] 所述方法還可包括:從在源代碼中包括的循環(huán)中選擇兩個(gè)獨(dú)立的循環(huán);將能夠使 可用執(zhí)行單元的數(shù)量增加的被選擇的循環(huán)確定為第一循環(huán),并將剩余的被選擇的循環(huán)確定 為第二循環(huán)。
[0023] 第一循環(huán)的優(yōu)先級(jí)可高于第二循環(huán)的優(yōu)先級(jí),并且循環(huán)的優(yōu)先級(jí)可基于以下項(xiàng)中 的至少一個(gè)被計(jì)算:循環(huán)的迭代計(jì)數(shù)和用于循環(huán)的單次迭代的周期數(shù)。
[0024] 調(diào)度第二循環(huán)的步驟可包括:基于在第二循環(huán)中包括的指令之間的數(shù)據(jù)依賴性, 將所述指令分配給在第一循環(huán)被調(diào)度的周期中的可用執(zhí)行單元。
[0025] 調(diào)度第二循環(huán)的步驟可包括:確定將被用于調(diào)度第二循環(huán)的執(zhí)行單元;驗(yàn)證被確 定的執(zhí)行單元是否可用于第二循環(huán)被調(diào)度的周期中。
[0026] 調(diào)度第一循環(huán)的步驟可包括:基于在第一循環(huán)中包括的指令之間的數(shù)據(jù)依賴性, 將所述指令分配給在周期中的執(zhí)行單元。
[0027] 所述方法還可包括:響應(yīng)于第二循環(huán)未使用可用執(zhí)行單元被調(diào)度,展開調(diào)度第一 循環(huán)的結(jié)果;使用作為被展開的調(diào)度結(jié)果而可用的執(zhí)行單元來調(diào)度第二循環(huán)。
[0028] 所述展開步驟可包括:基于用于展開計(jì)數(shù)的閾值和用于被展開的調(diào)度結(jié)果的周期 數(shù)的閾值中的至少一個(gè),確定是否將展開調(diào)度第一循環(huán)的結(jié)果。
[0029] 調(diào)度第二循環(huán)的步驟可包括:響應(yīng)于第一循環(huán)的迭代計(jì)數(shù)大于第二循環(huán)的迭代計(jì) 數(shù),在第二循環(huán)被迭代之后,使用聲明防護(hù)來限制第二循環(huán)的執(zhí)行。
[0030] 所述方法還可包括:響應(yīng)于第一循環(huán)的迭代計(jì)數(shù)小于第二循環(huán)的迭代計(jì)數(shù),在第 一循環(huán)被迭代之后,調(diào)度第二循環(huán)以迭代第二循環(huán)的剩余部分。
[0031] 所述方法還可包括:在第一循環(huán)被迭代之后,調(diào)度用于存儲(chǔ)第二循環(huán)的中間數(shù)據(jù) 的指令。
[0032] 在另一總的方面,提供一種存儲(chǔ)用于循環(huán)調(diào)度的程序的非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ) 介質(zhì),所述程序包括用于使計(jì)算機(jī)執(zhí)行以上所述的第一個(gè)方法的指令。
[0033] 在另一總的方面,一種控制器包括:選擇器,被配置為從在源代碼中包括的多個(gè)循 環(huán)中選擇獨(dú)立的多個(gè)循環(huán);檢測(cè)器,被配置為在被選擇的多個(gè)循環(huán)中確定具有較高優(yōu)先級(jí) 的第一循環(huán)和具有較低優(yōu)先級(jí)的第二循環(huán);調(diào)度器,被配置為使用執(zhí)行單元調(diào)度第一循環(huán), 并使用作為調(diào)度第一循環(huán)的結(jié)果而可用的執(zhí)行單元來調(diào)度第二循環(huán);產(chǎn)生器,被配置為產(chǎn) 生包括調(diào)度第一循環(huán)的結(jié)果和調(diào)度第二循環(huán)的結(jié)果的目標(biāo)代碼。
[0034] 調(diào)度第二循環(huán)的步驟可包括:使用在第一循環(huán)被調(diào)度的周期中未被分配給第一循 環(huán)的執(zhí)行單元來調(diào)度第二循環(huán)的至少一部分。
[0035] 所述確定步驟可包括:基于以下項(xiàng)中的至少一個(gè)來計(jì)算第一循環(huán)的優(yōu)先級(jí)和第二 循環(huán)的優(yōu)先級(jí):循環(huán)的迭代計(jì)數(shù)和用于循環(huán)的單次迭代的周期數(shù)。
[0036] 調(diào)度第二循環(huán)的步驟可包括:將第二循環(huán)的數(shù)據(jù)流圖(DFG)映射到在第二循環(huán)被 調(diào)度的周期中可用的執(zhí)行單元。
[0037] 調(diào)度第二循環(huán)的步驟可包括:確定將被用于調(diào)度第二循環(huán)的執(zhí)行單元;驗(yàn)證被確 定的執(zhí)行單元是否可用于第二循環(huán)被調(diào)度的周期中。
[0038] 調(diào)度第一循環(huán)的步驟可包括:在周期中將第一循環(huán)的數(shù)據(jù)流圖(DFG)調(diào)度至執(zhí)行 單元。
[0039] 調(diào)度器還可被配置為:響應(yīng)于第二循環(huán)未使用可用執(zhí)行單元被調(diào)度,展開調(diào)度第 二循環(huán)的結(jié)果;使用作為被展開的調(diào)度結(jié)果而可用的執(zhí)行單元來調(diào)度第二循環(huán)。
[0040] 調(diào)度第二循環(huán)的步驟可包括:在第一循環(huán)的迭代計(jì)數(shù)大于第二循環(huán)的迭代計(jì)數(shù)的 情況下,在第二循環(huán)被迭代之后,使用聲明防護(hù)來限制第二循環(huán)的執(zhí)行。
[0041] 調(diào)度器還可被配置為:響應(yīng)于第一循環(huán)的迭代計(jì)數(shù)小于第二循環(huán)的迭代計(jì)數(shù),調(diào) 度第二循環(huán)以迭代第二循環(huán)的剩余部分。
[0042] 在另一總的方面,一種循環(huán)調(diào)度方法包括:使用執(zhí)行單元調(diào)度較高優(yōu)先級(jí)循環(huán); 使用作為調(diào)度較高優(yōu)先級(jí)循環(huán)的結(jié)果而可用的執(zhí)行單元來調(diào)度較低優(yōu)先級(jí)循環(huán)。
[0043] 調(diào)度較高優(yōu)先級(jí)循環(huán)的步驟可包括:使用執(zhí)行單元調(diào)度最高優(yōu)先級(jí)循環(huán)。
[0044] 調(diào)度較低優(yōu)先級(jí)循環(huán)