專利名稱:編譯程序的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)處理設(shè)備。
本發(fā)明還涉及操作數(shù)據(jù)處理設(shè)備的方法。
本發(fā)明還涉及編譯程序的方法。
現(xiàn)代信號處理系統(tǒng)被設(shè)計(jì)成支持多種標(biāo)準(zhǔn)并提供高性能。多媒體和電信是可找到此類組合要求的典型領(lǐng)域。對高性能的需求產(chǎn)生了可包括專用硬件加速器的體系結(jié)構(gòu)。在HW/SW共同設(shè)計(jì)共同體中,“映射”是指將應(yīng)用程序的功能分配到由可獲得的硬件部件執(zhí)行的一組操作的問題[1][2]。操作可按照其復(fù)雜性安排成兩組細(xì)粒(fine-grain)和粗粒(coarse-grain)操作。
細(xì)粒操作的示例有加、乘和條件轉(zhuǎn)移。它們在幾個(gè)時(shí)鐘周期中執(zhí)行,且一次僅處理少數(shù)輸入值。粗粒操作處理更加多的數(shù)據(jù),并執(zhí)行更復(fù)雜的功能,諸如FFT蝶(FFT-butterfly)、DCT或復(fù)數(shù)乘法。
執(zhí)行粗粒操作的硬件部件的特征在于具有從幾個(gè)周期到幾百個(gè)周期不等的等待時(shí)間。另外,所述部件使用和產(chǎn)生的數(shù)據(jù)并不集中于粗粒操作的結(jié)束與開始時(shí)。相反地,來自所述部件以及傳送到所述部件的數(shù)據(jù)分布于整個(gè)粗粒操作執(zhí)行過程中。因此,功能部件根據(jù)輸入輸出行為展示(復(fù)雜)時(shí)形(timeshape)[9]。根據(jù)操作的粒度(粗度),體系結(jié)構(gòu)可分組到兩個(gè)不同類別中,即處理器體系結(jié)構(gòu)和異種多處理器體系結(jié)構(gòu),定義如下-處理器體系結(jié)構(gòu)該體系結(jié)構(gòu)包括諸如ALU和乘法器的功能部件(FU)的異種集。在此環(huán)境中的典型體系結(jié)構(gòu)是多用途CPU和DSP體系結(jié)構(gòu)。其中的一些體系結(jié)構(gòu),諸如VLIW和超標(biāo)量體系結(jié)構(gòu),可具有并行執(zhí)行的多個(gè)操作。FU執(zhí)行細(xì)粒操作,數(shù)據(jù)一般具有“字”的粒度。
-異種多處理器體系結(jié)構(gòu)該體系結(jié)構(gòu)包括通過總線連接的專門的專用指令集處理器(ASIP)、ASIC和標(biāo)準(zhǔn)DSP以及CPU。硬件執(zhí)行諸如256輸入FFT的粗粒操作,因而數(shù)據(jù)具有“字組”粒度。在此環(huán)境中,操作經(jīng)常被視為任務(wù)或處理。
上述兩種體系結(jié)構(gòu)方法始終是分開的。
本發(fā)明的目的是提供一種數(shù)據(jù)處理設(shè)備,其中(協(xié))處理器作為FU嵌入在VLIW處理器數(shù)據(jù)路徑中,其中VLIW處理器可具有FU,該FU執(zhí)行具有不同等待時(shí)間的操作并同時(shí)在多種數(shù)據(jù)粒度下操作。
本發(fā)明的另一目的是提供一種操作這樣的數(shù)據(jù)處理設(shè)備的方法。
本發(fā)明的另一目的是提供一種用于編譯程序的方法,它有效地調(diào)度細(xì)粒和粗粒操作的混合,使調(diào)度長度(schedule’s length)和VLIW指令寬度最小。
按照本發(fā)明的數(shù)據(jù)處理設(shè)備至少包括主控制器、第一功能單元和第二功能單元,第一功能單元包括從控制器,功能單元共享公用存儲器,所述設(shè)備被編程用于執(zhí)行第一功能單元的指令,所述指令的執(zhí)行包括第一功能單元的輸入/輸出操作,其中,在所述執(zhí)行期間由第二功能單元來處理第一功能單元的輸出數(shù)據(jù),和/或在所述執(zhí)行期間由第二功能單元生成輸入數(shù)據(jù)。
例如,第一功能單元是專用指令集處理器(ASIP)、ASIC、標(biāo)準(zhǔn)DSP或CPU。第二功能單元一般執(zhí)行細(xì)粒操作,諸如ALU或乘法器。由所述第一和第二單元共享的公用存儲器可以是程序存儲器,該存儲器包括要由所述單元執(zhí)行的指令。另外,公用存儲器可用于數(shù)據(jù)存儲。
引入粗粒操作對微碼寬度具有有益的影響。首先,由于執(zhí)行粗粒操作的FU內(nèi)部具有其自己的控制器。因此,VLIW控制器需要較少的指令比特來操縱整個(gè)數(shù)據(jù)路徑。其次,采用I/O時(shí)形后使得即使操作本身未被完成也可以提供和使用數(shù)據(jù),因而縮短了信號的壽命,并因此減少了數(shù)據(jù)路徑寄存器的數(shù)量。尋址數(shù)據(jù)路徑寄存器所需的指令比特和并行操縱大量數(shù)據(jù)路徑資源是導(dǎo)致VLIW微碼大寬度的兩個(gè)重要因素。最終,增強(qiáng)指令層并行度(ILP)對調(diào)度長度有積極的影響,并因而對微碼長度有積極的影響。對于針對高性能并處理長而復(fù)雜的程序代碼的嵌入式應(yīng)用程序,保持小的微碼區(qū)是基本的必要條件。在調(diào)度應(yīng)用程序時(shí),F(xiàn)U的內(nèi)部調(diào)度將部分地被考慮。這樣,F(xiàn)U的內(nèi)部調(diào)度可視為嵌入在應(yīng)用程序的VLIW調(diào)度中。這樣做時(shí),可采用有關(guān)I/O時(shí)形的知識,以便以“準(zhǔn)時(shí)”方式從FU抽取數(shù)據(jù)或提供數(shù)據(jù)。即使不是所有由所述單元使用的數(shù)據(jù)可用,操作也可以開始。執(zhí)行粗粒操作的FU也可被重新使用。這意味著它可保持在VLIW數(shù)據(jù)路徑中,而其輸出數(shù)據(jù)的實(shí)際使用將會不同。
注意到已知通過商業(yè)途徑可獲得的基于VLIW體系結(jié)構(gòu)的DSP,這些DSP限制數(shù)據(jù)路徑的FU執(zhí)行的定制操作的復(fù)雜性。例如,R.E.A.L.DSP[3]允許引入定制單元,稱為專用執(zhí)行單元(AXU)。然而,這些功能單元的等待時(shí)間限于一個(gè)時(shí)鐘周期。象TI‘C6000[4]的其它DSP可包含具有一到四個(gè)周期的等待時(shí)間的FU。Philips Trimedia VLIW體系結(jié)構(gòu)[5]允許一到三個(gè)周期的多個(gè)周期流水線操作。體系結(jié)構(gòu)層合成工具Phideo[10]可處理具有時(shí)形的操作,但不適用于控制支配的應(yīng)用。在信號傳到FU的不同I/O端口的限制下,Mistral2[11]允許定義時(shí)形。當(dāng)前,調(diào)度程序不能適當(dāng)?shù)靥幚砭哂袕?fù)雜時(shí)形的FU。為簡化調(diào)度程序的工作,傳統(tǒng)上執(zhí)行粗粒操作的單元的特征僅在于其等待時(shí)間,且操作視為是原子操作。因此,此方法延長了調(diào)度,因?yàn)樗袛?shù)據(jù)必須在開始操作前可用,而不顧在不具有整個(gè)輸入數(shù)據(jù)的情況下所述單元已經(jīng)可以執(zhí)行其部分計(jì)算的事實(shí)。此方法也延長了信號的壽命,增加了所需寄存器的數(shù)量。
提供一種對按照本發(fā)明的數(shù)據(jù)處理器設(shè)備進(jìn)行操作的方法。該設(shè)備至少包括-主控制器,用于控制所述設(shè)備的操作,-第一功能單元,它包括從控制器,第一功能單元被安排用于執(zhí)行第一類型指令,該第一類型指令對應(yīng)于具有相對長等待時(shí)間的操作,
-第二功能單元,它能夠執(zhí)行第二類型的指令,該第二類型的指令對應(yīng)于具有相對短等待時(shí)間的操作。按照本發(fā)明的方法,在執(zhí)行第一類型的指令期間,第一功能單元接收輸入數(shù)據(jù)并提供輸出數(shù)據(jù),按照本發(fā)明的方法,在所述執(zhí)行期間由第二功能單元處理所述輸出數(shù)據(jù),和/或在所述執(zhí)行期間由第二功能單元生成所述輸入數(shù)據(jù)。
本發(fā)明還提供一種用于將程序編譯成按照本發(fā)明對處理設(shè)備進(jìn)行操作的指令序列的方法。按照此編譯方法-構(gòu)成了一種模型,它代表第一功能單元執(zhí)行指令中所涉及的輸入/輸出操作;-根據(jù)所述模型,調(diào)度一個(gè)或多個(gè)第二功能單元的指令,用于在所述第一功能單元正在執(zhí)行要使用輸入數(shù)據(jù)的指令時(shí)為所述第一功能單元提供所述輸入數(shù)據(jù),和/或用于在所述第一功能單元正在執(zhí)行計(jì)算輸出數(shù)據(jù)的指令時(shí)從所述第一功能單元檢索所述輸出數(shù)據(jù)。
下面參照附圖對本發(fā)明的這些特征與其它方面進(jìn)行更詳細(xì)的描述,附圖中
圖1示出數(shù)據(jù)處理設(shè)備,圖2示出圖1中數(shù)據(jù)處理設(shè)備可執(zhí)行的操作的示例,圖3A示出操作的信號流圖(SFG),圖3B示出操作的調(diào)度及其時(shí)形功能,圖4A示意性示出圖2的操作,圖4B示出用于在可保持定制功能單元(FU)中對圖4A的操作執(zhí)行進(jìn)行調(diào)度的信號流圖,圖4C示出用于在非可保持定制功能單元(FU)中對圖4A的操作執(zhí)行進(jìn)行調(diào)度的信號流圖,圖5示出包括圖2的操作的嵌套循環(huán),圖6A示出SFG中圖5的嵌套循環(huán)的傳統(tǒng)調(diào)度,圖6B示出按照本發(fā)明的SFG中所述嵌套循環(huán)的調(diào)度。
圖1示意性示出按照本發(fā)明的數(shù)據(jù)處理設(shè)備。該數(shù)據(jù)處理設(shè)備至少包括主控制器1、第一功能單元2及第二功能單元3,其中第一功能單元2包括從控制器20。兩個(gè)功能單元2和3把包括微碼的存儲器11共享為公用存儲器。數(shù)據(jù)處理設(shè)備被編程用于執(zhí)行第一功能單元2的指令,其中所述指令的執(zhí)行涉及第一功能單元2的輸入/輸出操作。在所述執(zhí)行期間由第二功能單元3處理第一功能單元2的輸出數(shù)據(jù),和/或在所述執(zhí)行期間由第二功能單元3生成輸入數(shù)據(jù)。在所示實(shí)施例中,數(shù)據(jù)處理設(shè)備還包括功能單元4和5。
圖1所示的數(shù)據(jù)處理設(shè)備的實(shí)施例的特征在于第一功能單元2被安排用于處理第一類型指令,第一類型的指令對應(yīng)于具有相對長等待時(shí)間的操作,而第二功能單元3被安排用于處理第二類型指令,第二類型的指令對應(yīng)于具有相對短等待時(shí)間的操作。
作為示例,F(xiàn)FT算法的可能變化可以被考慮,可以使用“FFT基-4(FFT radix-4)”來實(shí)現(xiàn)。于是,此定制FU可被重新使用,雖然是從時(shí)間抽選到頻率抽選FFT來修改所述算法。在嵌入式定制FU忙于其粗粒操作時(shí),VLIW處理器可執(zhí)行其它細(xì)粒操作。因此,長等待時(shí)間的粗粒操作可以被看作在硬件上實(shí)現(xiàn)的微線程[6],它在剩余數(shù)據(jù)路徑的資源正執(zhí)行其它計(jì)算時(shí)執(zhí)行單獨(dú)線程的,屬于主線程。
在介紹調(diào)度問題前,將信號流圖(SFG)[7][8][9]定義為表示給定應(yīng)用程序代碼的一種方式。SFG描述了在所述代碼中執(zhí)行的原始操作及這些操作之間的相關(guān)性。
定義1.信號流圖SFG。
SFG是個(gè)8元組(V,I,O,T,Ed,Es,w,),其中·V是頂點(diǎn)(操作)集合,·I是輸入集合,·O是輸出集合,· 是I/O操作端子的集合,· 是數(shù)據(jù)邊緣(data edge)的集合,· 是序列邊緣(sequence edge)的集合,以及
·wEs→Z是描述與每個(gè)序列邊緣相關(guān)的定時(shí)延遲(按時(shí)鐘周期)的函數(shù);·δV→Z是描述與每個(gè)SFG的操作相關(guān)的執(zhí)行延遲(按時(shí)鐘周期)的函數(shù)。
在SFG定義中,對有向數(shù)據(jù)邊緣與有向及加權(quán)的序列邊緣加以區(qū)別。它們在調(diào)度問題上施加不同的約束條件,其中“調(diào)度”是為每個(gè)操作v∈V確定開始時(shí)間s(v)的任務(wù),以SFG指定的優(yōu)先約束條件為條件。正式地定義2.傳統(tǒng)調(diào)度問題。
給定SFG(V,I,O,T,Ed,Es,w,δ),找出操作sV→Z+的整數(shù)標(biāo)記,其中s(vj)≥s(vi)+δ(vi) i,j,h,k∶((vi,oh),(vj,ik))∈Eds(vj)≥s(vi)+w((ti,tj)) i,j∶(ti,tj)∈Es且調(diào)度的等待時(shí)間maxi=1...n{s(vi)}為最小值。
如上所定義一樣,在調(diào)度問題中,對每個(gè)操作做單獨(dú)判定,即其開始時(shí)間。因?yàn)镮/O時(shí)形未包括在分析中,因而在完成操作前,沒有輸出信號被認(rèn)為有效。同樣地,僅在所有輸入信號可用時(shí),操作本身才開始。這的確是安全的假設(shè),但在操作的數(shù)據(jù)消耗(dataconsumption)與產(chǎn)生時(shí)間和SFG中其它操作的開始時(shí)間之間不允許同步。
在正式敘述問題之前,定義操作的時(shí)形如下定義3.操作的時(shí)形。
給定SFG,對于每個(gè)操作v∈V,時(shí)形定義為函數(shù)σ∶Tv→Z+,其中Tv={t∈T|t=(v,p),且p∈I∪O}是操作v∈V的I/O端子的集合。
分配給每個(gè)I/O端子的編號對相對于操作開始時(shí)間的I/O活動的延遲進(jìn)行模仿。因此,對于執(zhí)行延遲δ的操作,時(shí)形函數(shù)將0到δ-1之間的整數(shù)值與每個(gè)I/O端子相關(guān)。圖3描述了操作的時(shí)形的示例。
在傳統(tǒng)調(diào)度問題中,每個(gè)操作在圖形中被看成是原子操作。為了采用操作的I/O時(shí)形的觀念,重訪問調(diào)度問題。其中對每個(gè)操作進(jìn)行單獨(dú)的判定,現(xiàn)在進(jìn)行多個(gè)判定。每個(gè)調(diào)度判定旨在確定屬于給定操作的每個(gè)I/O端子的開始時(shí)間。因此,將操作的時(shí)形考慮在內(nèi)的再訪問的調(diào)度問題的定義如下定義4.I/O時(shí)形調(diào)度問題給定SFG和SFG中每個(gè)操作v∈V的時(shí)形函數(shù),找出端子sT→Z+的整數(shù)標(biāo)志,其中s((vj,ik))≥s((vi,oh)) i,j,h,k∶(t(vi,oh),(vj,ik))∈Eds(ti)≥s(ti)+w((ti,tj)) i,j∶(ti,tj)∈Es且調(diào)度的等待時(shí)間maxi=1...n{s(vi)}是最小值。
重要的是要注意到,引入時(shí)形的概念后,不再需要操作的等待時(shí)間函數(shù)δ,且對每個(gè)操作的端子進(jìn)行調(diào)度判定。找到的調(diào)度必須滿足有關(guān)數(shù)據(jù)邊緣、序列邊緣的約束條件,并考慮I/O端子的定時(shí)關(guān)系,如時(shí)形函數(shù)中定義的那樣。為采用操作的I/O時(shí)形特征,時(shí)形函數(shù)σ被轉(zhuǎn)換成多個(gè)序列邊緣,被添加在集合Es中。對于任何可行的調(diào)度,這些額外約束條件強(qiáng)迫I/O操作端子的開始時(shí)間如此,以便原粗粒操作的時(shí)形被考慮。
視實(shí)施粗粒操作的FU是否可在其計(jì)算期間停止而定,時(shí)形函數(shù)到序列邊緣的轉(zhuǎn)換可以以不同的方式來完成。這將參照圖4來進(jìn)行更詳細(xì)的描述。如果操作可以停止,假如保持I/O端子的并發(fā)和順序,則操作的時(shí)形可以變長。如果該單元無法停止,則在圖形中必須添加額外約束條件,以確保I/O端子之間不僅順序而且相對距離也得以保持,如時(shí)形函數(shù)所強(qiáng)制的那樣。
通過示例,考慮屬于相同原粗粒操作的兩個(gè)I/O端子,即t1和t2。于是會發(fā)生三種不同的情況1)并發(fā)性如果兩個(gè)I/O端子t1和t2按照粗粒操作的時(shí)形在相同周期期間出現(xiàn),則添加兩個(gè)序列邊緣。那些額外緣保證對于給定的SFG,任何可行調(diào)度中的操作t1和t2將在相同周期中出現(xiàn)(例如,圖4B中的o1和i2)。
如果σ(t1)=σ(t2),則(t1,t2),(t2,t1)∈Es且w(t1,t2)=w(t2,t1)=0按照再訪問的調(diào)度問題的定義,那兩個(gè)添加的邊緣強(qiáng)制s(t1)≥s(t2)和s(t2)≥s(t1)2)串行化(可保持操作)如果兩個(gè)I/O端子t1和t2按照粗粒操作的時(shí)形不是并發(fā)的,則添加一個(gè)序列邊緣。此額外緣保證在任何可行調(diào)度中將保持兩個(gè)操作的次序。總之,它允許相對于操作t1,可延遲操作t2(例如,圖4B中i1和i2)。
如果s(t2)-s(t1)=λ>0,則(t1,t2)∈Es,且w(t1,t2)=λ按照再訪問的調(diào)度問題的定義,此添加的邊緣強(qiáng)制s(i2)≥s(i1)+w(i1,i2)=s(i1)+λ因此s(i2)-s(i1)≥λ3)串行化(非可保持操作)對于任何可行調(diào)度,兩個(gè)I/O端子t1和t2的開始時(shí)間之間的距離被強(qiáng)制,如粗粒時(shí)形所定義的那樣(例如,圖4C中的i1和i2)。這通過添加兩個(gè)序列邊緣來完成如果s(t2)-s(t1)=λ>0,則(t1,t2),(t2,t1)∈Es且w(t1,t2)=λ,w(t2,t1)=-λ按照再訪問的調(diào)度問題的定義,那兩個(gè)添加的緣強(qiáng)制s(t2)≥s(t1)+w(t1,t2)=s(t1)+λs(t1)≥s(t2)+w(t2,t1)=s(t2)-λ根據(jù)上兩個(gè)等式,t1和t2之間的開始時(shí)間的差異等于時(shí)形中強(qiáng)制的值。
因此s(t2)-s(t1)=λ
對于每個(gè)操作,該方法會添加大量邊緣,大約為|I∪O|2。然而,其中許多緣可以刪除,例如在操作端子的集合中引入偏序(partialorder)。刪除步驟通常不重要,因而此處不做描述。一旦操作由其I/O操作集描述,且添加了序列邊緣,則SFG使用已知的常規(guī)技術(shù)來調(diào)度。假設(shè)由于操作的時(shí)形的約束條件被考慮,則每個(gè)操作的I/O端子現(xiàn)在可相互分離,并可以獨(dú)立地被調(diào)度。
通過示例,假定給定應(yīng)用程序正在密集執(zhí)行圖2中所示的“2Dtransform(二維變換)”函數(shù)。為使示例更實(shí)際,所考慮的函數(shù)正在執(zhí)行2D圖形操作。按照圖2中所描述的代碼,采用矢量(x,y)并返回矢量(X,Y)。為提高處理器的性能,對于定制FU,用硬件實(shí)現(xiàn)“2Dtransform”。由于函數(shù)在硬件上執(zhí)行,它可以真正視為單個(gè)粗粒操作。圖3A描述了此函數(shù)的信號流圖。圖3B描述了(粗粒)操作的可行內(nèi)部調(diào)度,其中定制FU內(nèi)可提供一個(gè)加法器和一個(gè)乘法器,兩個(gè)均具有一個(gè)周期的等待時(shí)間。操作具有四個(gè)I/O端子并且由定制FU在四個(gè)時(shí)鐘周期σ=0,...3中執(zhí)行。
在此示例中,雖然FU在所有四個(gè)周期期間均是有效的(圖3B),但在周期2并未執(zhí)行I/O操作。從VLIW數(shù)據(jù)路徑,看不到由定制FU執(zhí)行的內(nèi)部操作,且僅I/O時(shí)形實(shí)際上需要模仿操作耗用與產(chǎn)生其數(shù)據(jù)的方式(圖3B)。
圖4A中的原粗粒操作的內(nèi)容現(xiàn)在不描述,它被改變?yōu)樗膫€(gè)單周期操作的圖,每個(gè)操作模仿一個(gè)I/O端子。必須添加序列邊緣以保證在任何可能的可行調(diào)度中考慮原粗粒單元的時(shí)形。圖中,序列邊緣由虛線表示,虛線從第一操作開始,并用以箭頭在第二操作結(jié)束。圖4B中,示出了模仿可保持定制FU行為的所得到的SFG。特別地,按照粗粒操作的時(shí)形,在不同周期執(zhí)行的I/O端子被串行化,以便保持它們的次序。例如,在所述圖形中,操作i1和i2之間存在具有λ=1值的邊緣w(i1,i2)。因此,s(i2)≥s(i1)+w(i1,i2)=s(i1)+λ。兩個(gè)或兩個(gè)以上I/O端子的并發(fā)性也被保持。例如,圖4B的時(shí)形包括第一邊緣w(i2,o1)和第二邊緣w(o1,i2),兩個(gè)邊緣均具有λ=0值,以便保證操作i2和o1的并發(fā)性。因此,當(dāng)保持機(jī)制適合于所述單元時(shí),調(diào)度程序可延長將I/O端子彼此移開的粗粒操作,直到序列邊緣不違例。對硬件的影響是FU可能被停止,以更好地同步傳送到其它操作和從其它操作傳來的數(shù)據(jù)。
圖4C示出當(dāng)保持機(jī)制不適合于定制FU時(shí)描述I/O端子中的粗粒操作而獲得的圖形。在這種情況下,添加的序列邊緣保證在任何可行調(diào)度中,I/O端子的任何連接之間的相對距離不得與粗粒操作的時(shí)形所強(qiáng)制的距離不同。
現(xiàn)在,考慮一個(gè)代碼,其中使用映射在復(fù)雜FU上的“2Dtransform”函數(shù),如圖5所示。在此示例中,“2Dtransform”操作是循環(huán)體的一部分,環(huán)形中諸如ALU操作和乘法操作的其它細(xì)粒操作也被執(zhí)行。假定在VLIW處理器上執(zhí)行所述代碼,該VLIW處理器在其數(shù)據(jù)路徑中包含乘法器、加法器和“2Dtransform”FU。
圖6A描述了上述環(huán)形的SFG的常規(guī)調(diào)度。粗粒操作被認(rèn)為是“原子的”,且無另一操作與它平行執(zhí)行。在圖6B中,復(fù)雜單元的I/O調(diào)度被擴(kuò)展并嵌入在循環(huán)體的SFG中。復(fù)雜操作與其它細(xì)粒操作同時(shí)被執(zhí)行。按照所述調(diào)度,在實(shí)際需要時(shí),用于復(fù)雜FU的數(shù)據(jù)被提供到剩余的數(shù)據(jù)路徑,反之亦然,因而減少了調(diào)度的等待時(shí)間。當(dāng)某數(shù)據(jù)不適合于復(fù)雜FU并且計(jì)算不能繼續(xù)進(jìn)行時(shí),單元會停止(例如,圖6B中的周期2)。停止周期在算法的調(diào)度期間被隱含地確定。利用建議的解決方案,算法的等待時(shí)間從10個(gè)周期減少到8個(gè)周期。所需寄存器的數(shù)量也減少。圖6A的周期0中產(chǎn)生的值必須在兩個(gè)周期中保持有效,而圖6B的調(diào)度中的相同信號直接被使用。就VLIW處理器的微碼區(qū)域而言,建議的解決方案是有效的。復(fù)雜FU包含其自己的控制器,而留給VLIW控制器的僅有任務(wù)是將粗粒FU與其余的數(shù)據(jù)路徑資源同步。必須發(fā)送給所述單元的僅有指令是開始和停止命令。這可在VLIW指令字中用幾個(gè)比特來編碼。
在嵌入式復(fù)雜FU忙于其計(jì)算時(shí),VLIW處理器可執(zhí)行其它操作。
長等待時(shí)間單元可看成是硬件上執(zhí)行的微線程,在其余的數(shù)據(jù)路徑使用其余的數(shù)據(jù)路徑的資源正在執(zhí)行其它計(jì)算的同時(shí)執(zhí)行一個(gè)任務(wù)。
作為實(shí)例研究,已經(jīng)使用FFT基4算法測試了所述方法的有效性。用分布式寄存器堆實(shí)現(xiàn)了用于VLIW體系結(jié)構(gòu)的FFT,用在HP-UX機(jī)器上運(yùn)行的Frontier Design的體系結(jié)構(gòu)層合成工具“A|RT designer”進(jìn)行了合成。形成所考慮的FFT算法的核心的基4功能處理4個(gè)復(fù)合數(shù)據(jù)值和3個(gè)復(fù)合系數(shù),返回4個(gè)復(fù)合輸出值。定制單元“基4”內(nèi)部包含加法器、乘法器及其自己的控制器。該單元消耗14個(gè)(實(shí))輸入值并產(chǎn)生8個(gè)(實(shí))輸出值。表1給出了“基4”的其它細(xì)節(jié)。
表1基4功能單元
如表2所示,測試了三種不同的VLIW實(shí)現(xiàn)。體系結(jié)構(gòu)(“FFT_org”和“FFT_2ALU’s”)包含相同的硬件資源,但在可以執(zhí)行的操作的粗度方面有所不同。
表2測試的數(shù)據(jù)路徑體系結(jié)構(gòu)
對于每個(gè)體系結(jié)構(gòu)實(shí)例,表3列出了時(shí)鐘周期方面的執(zhí)行的FFT基4算法的性能和存儲應(yīng)用程序代碼的VLIW微碼存儲器的大小。如果第一實(shí)現(xiàn)(“FFT_org”)作為參考,則從表3可以看到“FFT_2ALU’s”表現(xiàn)出更高的并行度和最佳的性能。
表3性能與微碼的大小,實(shí)驗(yàn)結(jié)果
然而,數(shù)據(jù)路徑中可用的額外ALU必須直接由VLIW控制器控制,且注意到微碼的指令寬度大大增加。另一方面,“FFT_radix4”達(dá)到介于開始的兩個(gè)實(shí)驗(yàn)之間的性能,但合成了窄得多的微碼存儲器。通常,并行所必需的代碼部分是整個(gè)代碼的一小部分。如果FFT是在長得多的應(yīng)用程序代碼中的核心功能,則在所述代碼的其它部分中將不會適當(dāng)使用微碼寬度,因此“FFT 2ALU’s”中所需的ILP也將不會在所述代碼的其它部分中得到適當(dāng)使用,導(dǎo)致微碼區(qū)域的浪費(fèi)。“FFT_2ALU’s”和“FFT_radix4”在體系結(jié)構(gòu)中均提供2個(gè)ALU和一個(gè)乘法器,用于處理重要的FFT循環(huán)體,但在后者的微碼中需要較少的比特來操縱可用并行。
對于每一個(gè)示例,表4列出了體系結(jié)構(gòu)中所需的寄存器數(shù)。特別地,在最后的體系結(jié)構(gòu)中,寄存器的總數(shù)是VLIW處理器中出現(xiàn)的寄存器和“基4”單元中實(shí)現(xiàn)的寄存器的總和。完成的實(shí)驗(yàn)證實(shí)了調(diào)度FFT SFG、采用“基4”粗粒操作的I/O時(shí)形會減少所需寄存器的數(shù)量。
表4寄存器壓力,實(shí)驗(yàn)結(jié)果
按照本發(fā)明的方法允許靈活的HW/SW劃分,其中復(fù)雜函數(shù)可用硬件實(shí)現(xiàn),作為VLIW數(shù)據(jù)路徑中的FU。建議的“I/O時(shí)形調(diào)度”方法允許單獨(dú)調(diào)度每個(gè)I/O操作事件的開始時(shí)間,并最終使操作時(shí)形本身變長,以便更好地使操作與其環(huán)境相適應(yīng)。通過在VLIW體系結(jié)構(gòu)中使用粗粒操作,可實(shí)現(xiàn)高的指令層并行,而無需在微碼存儲器寬度方面付出太多。對旨在提供高性能并處理長而復(fù)雜程序代碼的嵌入式應(yīng)用程序,保持小的VLIW微碼寬度是基本必要條件。
參考資料[1]“COSY用于在芯片上創(chuàng)建視頻系統(tǒng)的模塊的接口層”(Jean-Yves Brunel,Alberto Sangiovanni-Vincentinelli,Yorsinori Watanabe,Luciano Lavagno Wido Kruytzer and Frédéric Pétrot,“COSYlevels ofinterfaces for modules used to ereate a video system on chip”,EMMSEC’99 Stockholm 21-23 June 1999.)?!白鳛橄到y(tǒng)級設(shè)計(jì)方法學(xué)驅(qū)動器的MPEG-2解碼器實(shí)例研究”(Pieter van der Wolf,Paul Lieverse,Mudit Goel,David La Hei and KeesVissers,“An MPEG-2 Decoder Case Study as a Driver for a System LevelDesign Methodology”,Proceedings 7th International Workshop onHardware/Software Codesign(CODES’99),pp 33-37,May3-5 1999.)?!癛.E.A.L.DSP低功率/低成本電信與用戶應(yīng)用的可重配置嵌入式DSP體系結(jié)構(gòu)”(Rob Woudsma et al.,“R.E.A.L.DSPReconfigurable Embedded DSP Architecture for Low-Power/Low-CostTelecommunication and Consumer Applications”,PhilipsSemiconductor.)?!癟MS320C6000 CPU與指令集參考指南”(Texas Instruments,“TMS320C6000 CPU and Instruction Set Reference Guide”,LiteratureNumberSPRU189D March 1999.)?!癟rimedia,TM1300初級數(shù)據(jù)手冊”(Philips Electronics,“Trimedia,TM1300 Preliminary Data Book”,October 1999 FirstDraft.)?!巴瑫r(shí)的從屬微線程(SSMT)”(R.Chappel,J.Stark,S.P.Kim,S.K.Reinhardt,Y.N.Patt,“Simultaneous subordinate microthreading(SSMT)”,ISCA Proc.of the International Symposium on ComputerArchitecture,pp.186-95 Atlanta,GA,USA,2-4 May 1999.)。“DSP代碼生成約束條件分析”(Bart Mesman,Adwin H.Timmer,Jef L.van Meerbergen and Jochen Jess,“Constraints Analysis for DSPCode Generation”,IEEE Transactions on CAD,pp 44-57,Vol.18,No.1,January 1999.)?!熬哂蟹植际郊拇嫫鞫训奶幚砥魃螪SP代碼的有效調(diào)度”(B.Mesman,Carlos A.Alba Pinto,and Koen A.J.van Eijk,“EfficientScheduling of DSP Code on Processors with Distributed Register files”Proc.International Symposium on System Syntesis,San Jose,November1999,pp.100-106.)?!岸嗑S定期調(diào)度模型和復(fù)雜性”(W.Verhaegh,P.Lippens,J.Meerbergen,A.Van der Werf et al.,“Multidimensional periodicscheduling model and complexity”,Proceedings of European Conferenceon Parallel Processing EURO-PAR’96,pp.226-35,vol.2,Lyon,F(xiàn)rance,26-29 Aug,1996.)?!癙HIDEO高吞吐量應(yīng)用的高級合成”(W.Verhaegh,P.Lippens,J.Meerbergen,A.Van der Werf,“PHIDEOhigh-level synthesisfor high throughput applications”,Journal of VLSI Signal Procesing(Netherlands),vol.9,no.1-2,p.89-104,Jan.1995.)?!癕istral2數(shù)據(jù)表”(Frontier Design Inc,“Mistral2 Datasheet”,Danville,California CA 94506 U.S.A)。“Phideo中的模塊設(shè)計(jì)和分層抽取”(P.E.R.Lippens,J.L.vanMeerbergen,W.F.J.Verhaegh,and A.van der Welf,“Modular design andhierarchical abstraction in Phideo”,Proceedings of VLSI SignalProcessing VI,1993,pp.197-205.)。
權(quán)利要求
1.數(shù)據(jù)處理設(shè)備,至少包括一個(gè)主控制器(1)、包括從控制器(20)的第一功能單元(2)和第二功能單元(3),所述功能單元(2,3)共享公用存儲器(11),所述設(shè)備被編程用于執(zhí)行所述第一功能單元(2)的指令,所述指令的執(zhí)行涉及所述第一功能單元(2)的輸入/輸出操作,其中,在所述執(zhí)行期間,所述第二功能單元(3)處理所述第一功能單元(2)的輸出數(shù)據(jù),和/或在所述執(zhí)行期間,所述第二功能單元(3)生成輸入數(shù)據(jù)。
2.如權(quán)利要求1所述的數(shù)據(jù)處理設(shè)備,其特征在于所述第一功能單元(2)被安排用于處理第一類型指令,所述第一類型指令對應(yīng)于具有相對長等待時(shí)間的操作,以及所述第二功能單元(3)被安排用于處理第二類型指令,所述第二類型指令對應(yīng)于具有相對短等待時(shí)間的操作。
3.如權(quán)利要求1所述的數(shù)據(jù)處理,其特征在于具有可由所述主控制器(1)控制的停止裝置,用于停止所述第一功能單元(2)的操作。
4.一種操作數(shù)據(jù)處理器設(shè)備的方法,所述設(shè)備至少包括-主控制器(1),用于控制所述設(shè)備的操作;-第一功能單元(2),它包括從控制器(20),所述第一功能單元(2)被安排用于執(zhí)行第一類型指令,所述第一類型指令對應(yīng)于具有相對長等待時(shí)間的操作;-第二功能單元(3),他能夠執(zhí)行第二類型的指令,所述第二類型的指令對應(yīng)于具有相對短等待時(shí)間的操作,其中,在所述第一類型的指令的執(zhí)行期間,所述第一功能單元(2)接收輸入數(shù)據(jù),并提供輸出數(shù)據(jù),按照所述方法,在所述執(zhí)行期間,所術(shù)述第二功能單元(3)處理所述輸出數(shù)據(jù),和/或在所述執(zhí)行期間,所述第二功能單元(3)生成所述輸入數(shù)據(jù)。
5.如權(quán)利要求4所述的方法,其特征在于在所述第一類型的指令的執(zhí)行期間,所述主控制器(1)暫時(shí)停止所述第一功能單元(2)的操作。
6.一種用于將程序編譯成指令序列的方法,所述指令序列用于操作如權(quán)利要求1所述的處理設(shè)備,按照所述編譯方法-構(gòu)成模型,所述模型代表第一功能單元(2)執(zhí)行指令中所涉及輸入/輸出操作;-根據(jù)所述模型,調(diào)度一個(gè)或多個(gè)第二功能單元(3)的指令,用于在所述第一功能單元(2)正在執(zhí)行要使用輸入數(shù)據(jù)的指令時(shí)為所述第一功能單元(2)提供所述輸入數(shù)據(jù),和/或用于在所述第一功能單元(2)正在執(zhí)行計(jì)算輸出數(shù)據(jù)的指令時(shí)從所述第一功能單元(2)檢索所述輸出數(shù)據(jù)。
7.如權(quán)利要求6所述的方法,其特征在于所述模型是信號流圖。
全文摘要
描述一種數(shù)據(jù)處理設(shè)備,至少包括一個(gè)主控制器(1)、包括從控制器(20)的第一功能單元(2)和第二功能單元(3),功能單元(2,3)共享公用存儲器(11),設(shè)備被編程用于執(zhí)行第一功能單元(2)的指令,指令的執(zhí)行涉及第一功能單元(2)的輸入/輸出操作,其中,在所述執(zhí)行期間,第二功能單元(3)處理第一功能單元(2)的輸出數(shù)據(jù),和/或在所述執(zhí)行期間,第二功能單元(3)生成輸入數(shù)據(jù)。
文檔編號G06F9/45GK1372661SQ01801174
公開日2002年10月2日 申請日期2001年2月28日 優(yōu)先權(quán)日2000年3月10日
發(fā)明者N·G·布薩, A·范德維爾夫, P·E·R·利彭斯 申請人:皇家菲利浦電子有限公司