午夜毛片免费看,老师老少妇黄色网站,久久本道综合久久伊人,伊人黄片子

源到源的分區(qū)編譯的制作方法

文檔序號:6413340閱讀:203來源:國知局
專利名稱:源到源的分區(qū)編譯的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種在源代碼中分區(qū)規(guī)約的方法。
本發(fā)明進一步涉及生成目標(biāo)系統(tǒng)的協(xié)同設(shè)計方法,其中目標(biāo)系統(tǒng)包括一個第一處理器和至少一個第二處理器,協(xié)同設(shè)計方法包括所述用于在源代碼中分區(qū)規(guī)約的方法。
本發(fā)明進一步涉及一種分區(qū)編譯器程序產(chǎn)品,當(dāng)所述編譯器程序產(chǎn)品在計算機中運行時,經(jīng)設(shè)置用來執(zhí)行所述在源代碼中分區(qū)規(guī)約的方法的全部步驟。
背景技術(shù)
目標(biāo)系統(tǒng)包括兩個或者多個處理器,允許結(jié)合靈活相和速度,以加快執(zhí)行一組函數(shù)。這種目標(biāo)系統(tǒng)的一個例子是具有在控制處理器控制之下執(zhí)行應(yīng)用程序的兩個或多個協(xié)同處理器的系統(tǒng)。另一個例子是具有一個通用處理器和一個協(xié)同處理器的系統(tǒng),該系統(tǒng)中,兩個處理器均用于執(zhí)行部分應(yīng)用程序。通用處理器是軟件控制的,通過采用適當(dāng)?shù)能浖?,通用處理器能夠滿足多種不同的需求,提供了很好的靈活性。然而,對于一個給定的函數(shù),軟件控制處理器執(zhí)行起來,通常要比專門用于執(zhí)行該函數(shù)的協(xié)同處理器要慢。協(xié)同處理器的例子,可以是固定的硬件加速器,可參數(shù)化硬件加速器,可重配置硬件,應(yīng)用程序特定指令集處理器和作為加速器使用的專用可編程處理器。當(dāng)采用協(xié)同處理器后,在犧牲靈活性的同時提高了操作速度。而且,協(xié)同處理器的使用提高了目標(biāo)系統(tǒng)的功率效率。協(xié)同處理器適合用于已經(jīng)設(shè)計好的任務(wù)處理,但是可能不適合于該任務(wù)的修改版本。然而,在可重新配置電路中,比如現(xiàn)場可編程門陣列(FPGA),定義一個協(xié)同處理器能夠增加硬件的靈活性。這種邏輯電路可以采用不同的方式重復(fù)配置。
對于既包括一個通用處理器又包括一個協(xié)同處理器的系統(tǒng),協(xié)同處理器用來執(zhí)行特定的函數(shù),例如對執(zhí)行速度有要求的函數(shù),而通用處理器能夠在軟件的控制下執(zhí)行其余的函數(shù)。這種目標(biāo)系統(tǒng)的設(shè)計叫做所謂的硬件/軟件協(xié)同設(shè)計。在設(shè)計過程中,對于一個具有期望函數(shù)的目標(biāo)系統(tǒng),需要確定哪些函數(shù)由協(xié)同處理器執(zhí)行,哪些函數(shù)由軟件控制的通用處理器執(zhí)行。這就叫做所謂的硬件/軟件分區(qū)。在把期望的函數(shù)規(guī)約,一部分分區(qū)給軟件執(zhí)行,而一部分分區(qū)給協(xié)同處理器執(zhí)行之后,必須實現(xiàn)實際的執(zhí)行。編譯器把由軟件執(zhí)行的部分轉(zhuǎn)換成通用處理器執(zhí)行的機器代碼,例如,硬件綜合工具對硬件進行配置或者生成一個連線表,如同其規(guī)約部分所定義的。
對于包括一個控制處理器和兩個或多個協(xié)同處理器的其他目標(biāo)系統(tǒng),協(xié)同處理器用來執(zhí)行應(yīng)用程序,而控制處理器控制目標(biāo)系統(tǒng),例如處理操作系統(tǒng)和用戶接口。協(xié)同處理器可以專門用于有效處理特定的函數(shù)集。在設(shè)計這樣的目標(biāo)系統(tǒng)時就采用了協(xié)同設(shè)計方法,用于決定哪些函數(shù)由特定的協(xié)同處理器執(zhí)行。規(guī)約被分區(qū)為至少一部分由第一協(xié)同處理器執(zhí)行,一部分由第二協(xié)同處理器執(zhí)行。
WO00/38087描述了構(gòu)成電子電路的協(xié)同設(shè)計系統(tǒng),包括一個協(xié)同處理器和軟件控制的資源。協(xié)同設(shè)計系統(tǒng)接收一個目標(biāo)電子系統(tǒng)的性能描述,并且自動把所要求的函數(shù)在硬件和軟件之間分區(qū)。分區(qū)器從抽象語法樹中產(chǎn)生一個控制/數(shù)據(jù)流程圖。然后對尚未由用戶指派給資源的描述部分進行操作。
現(xiàn)有的協(xié)同設(shè)計方法存在的缺點在于,一旦完成對規(guī)約的分區(qū)之后,就不可能把硬件部分和/或軟件部分還原為規(guī)約的原始源代碼。這將帶來兩個嚴(yán)重的缺點。第一,分區(qū)以后對于用戶來說就不可能對已經(jīng)分區(qū)的規(guī)約作任何手動修改。而事實上,通過手動將附加函數(shù)轉(zhuǎn)移到特定的協(xié)同處理器,對于提高目標(biāo)系統(tǒng)的性能具有很大的幫助。第二,在硬件/軟件協(xié)同設(shè)計的情況中,軟件編譯和硬件綜合不得不在所獲取的控制/數(shù)據(jù)流程圖描述中執(zhí)行,這就意味著這些步驟將不得不采用相同的、用于硬件/軟件分區(qū)的工具來實現(xiàn)。實際上,該工具也許并不能生成最有效的機器代碼和/或硬件配置。使用專門用于通用處理器的編譯器以及專門用于協(xié)同處理器的設(shè)計工具和/或編譯器,能夠為目標(biāo)系統(tǒng)獲得最優(yōu)性能。在協(xié)同設(shè)計具有一個控制處理器和兩個或多個用于執(zhí)行應(yīng)用程序的協(xié)同處理器的系統(tǒng)時,也會遇到類似的問題。在這種情況中,用于設(shè)計協(xié)同處理器的專用工具的使用也能夠?qū)δ繕?biāo)系統(tǒng)作最優(yōu)設(shè)計。
發(fā)明公開本發(fā)明的一個目標(biāo)是提供一種分區(qū)規(guī)約的方法,經(jīng)過分區(qū)以后,允許由第一處理器執(zhí)行的部分轉(zhuǎn)換成源代碼語言中的規(guī)約,以及允許由第二處理器執(zhí)行的部分轉(zhuǎn)換成源代碼語言中的規(guī)約。
該目標(biāo)是通過在源代碼中分區(qū)規(guī)約的方法來實現(xiàn)的,其特點在于該方法包括以下步驟將規(guī)約轉(zhuǎn)換成多個抽象語法樹,將多個語法樹分區(qū)為至少第一組和第二組,抽象語法樹的第一組由第一處理器執(zhí)行,抽象語法樹的第二組由第二處理器執(zhí)行。
分區(qū)方法在多個代表源程序的抽象語法樹上操作。以抽象語法樹形式描述的規(guī)約可以翻譯回源代碼語言中的規(guī)約。因此,在分區(qū)以后,這種翻譯可以用于由第一處理器執(zhí)行的部分以及第二處理器執(zhí)行的部分。
本發(fā)明的一個實施例的特點在于,用于分區(qū)的方法進一步包括一下步驟把第一組抽象語法樹轉(zhuǎn)換成源代碼中的第一部分規(guī)約,以及把第二組抽象語法樹轉(zhuǎn)換成源代碼中的第二部分規(guī)約。該實施例的一大優(yōu)點在于它極大地方便了用戶把手工修改加入到第一和第二部分規(guī)約。該實施例的另一大優(yōu)點在于第一處理器和第二處理器可以分別采用特定的編譯器和特定設(shè)計的工具執(zhí)行第一和第二部分規(guī)約。
本發(fā)明的一個實施例的特點在于,把多個抽象語法樹分區(qū)成第一組抽象語法樹和第二組抽象語法樹的步驟包括下述步驟根據(jù)概況數(shù)據(jù)至少提取(out-lining)一個抽象語法樹。該實施例的一大優(yōu)點在于,通過提供識別該關(guān)鍵部分的信息,允許將規(guī)約的關(guān)鍵部分轉(zhuǎn)換成由協(xié)同處理器執(zhí)行的部分。而且,通過使用作為分區(qū)編譯器程序的輸入數(shù)據(jù)的概況數(shù)據(jù),能夠自動進行硬件/軟件分區(qū)。
本發(fā)明的一個實施例,提供一種產(chǎn)生目標(biāo)系統(tǒng)的協(xié)同設(shè)計方法,其中目標(biāo)系統(tǒng)包括一個第一處理器和至少一個第二處理器,協(xié)同設(shè)計方法包括依照權(quán)利要求1的分區(qū)方法。該實施例的一大優(yōu)點在于,由于經(jīng)分區(qū)后的規(guī)約可以轉(zhuǎn)換成原始源代碼語言,所以可以很容易對規(guī)約作手動修改。例如,手動轉(zhuǎn)換附加函數(shù),從第一處理器執(zhí)行部分轉(zhuǎn)換成第二處理器執(zhí)行部分,反之亦然。而且,在設(shè)計目標(biāo)系統(tǒng)過程中,供通用處理器特別使用的編譯器程序以及供協(xié)同處理器使用的設(shè)計工具和/或編譯器,都能夠使用。從而使目標(biāo)系統(tǒng)獲得了最優(yōu)性能。
本發(fā)明的一個實施例的特點在于第二處理器是一個協(xié)同處理器,并且其中第二部分規(guī)約轉(zhuǎn)換成協(xié)同處理器執(zhí)行的規(guī)約。本發(fā)明的一個實施例的特點在于第一處理器是一個通用處理器,并且其中第一部分規(guī)約通過編譯器轉(zhuǎn)換成目標(biāo)代碼。目標(biāo)系統(tǒng)包括一個通用處理器和一個協(xié)同處理器,結(jié)合了通用處理器的靈活性和協(xié)同處理器的高性能。
本發(fā)明的一個實施例的特點在于協(xié)同設(shè)計方法進一步包括在通用處理器和協(xié)同處理器之間定義一個接口的步驟。該實施例的一大優(yōu)點在于能夠在通用處理器和協(xié)同處理器之間交換信息,例如用于同步目的或者用作讀和寫數(shù)據(jù)的交換引用。
本發(fā)明的一個實施例的特點在于通用處理器和協(xié)同處理器之間的接口包括一個遠程函數(shù)調(diào)用;該遠程函數(shù)調(diào)用具有一組參數(shù);該組參數(shù)包括一個待調(diào)用的函數(shù)的標(biāo)識符,至少有一個指向待調(diào)用的函數(shù)的輸入數(shù)據(jù)的引用,以及至少有一個指向待調(diào)用的函數(shù)的結(jié)果數(shù)據(jù)的引用。該實施例的一大優(yōu)點在于遠程函數(shù)調(diào)用能夠?qū)⑼ㄓ锰幚砥骱蛥f(xié)同處理器同步,以及轉(zhuǎn)移用于輸入數(shù)據(jù)和結(jié)果數(shù)據(jù)的引用。
本發(fā)明的一個實施例的特點在于遠程函數(shù)調(diào)用的參數(shù)組進一步包括一個存儲位置的引用,該存儲位值用于存儲與待調(diào)用函數(shù)的返回狀態(tài)值有關(guān)的信息。在待協(xié)同處理器執(zhí)行的函數(shù)具有多于一個出口點的情況下,必須把確切出口點的有關(guān)信息提供給通用處理器,以便確定在軟件的哪個點重新啟動執(zhí)行。通過使用存儲位置的一個引用,而該存儲位置存儲由協(xié)同處理器執(zhí)行的函數(shù)的返回狀態(tài)的信息,通用處理器對該信息作出訪問。
本發(fā)明的一個實施例的特點在于通用處理器是一個數(shù)字信號處理器。通常數(shù)字信號處理器處理應(yīng)用程序,其中往往是那些在規(guī)約中相對較小的部分確定整個執(zhí)行時間。采用協(xié)同處理器執(zhí)行所述部分應(yīng)用程序,可以提高整體的性能。
根據(jù)本發(fā)明,當(dāng)所述分區(qū)編譯器程序產(chǎn)品運行在計算機系統(tǒng)時,該分區(qū)編譯器程序產(chǎn)品經(jīng)設(shè)置用來執(zhí)行根據(jù)權(quán)利要求1的分區(qū)方法的所有步驟。該產(chǎn)品的一大優(yōu)點在于能夠自動進行分區(qū),從而提高了效率。
附圖簡述所描述的實施例的特征將參考附圖作進一步的闡述

圖1圖示了在對源代碼段掃描以及作出解析以后獲取的多個抽象語法樹。
圖2圖示了在對圖1所示的多個抽象語法樹進行分區(qū)之后獲取的第一和第二組抽象語法樹。
圖3圖示了根據(jù)本發(fā)明的一種協(xié)同方法,用于產(chǎn)生一個目標(biāo)系統(tǒng)。
圖4圖示了在分區(qū)之前通過一部分規(guī)約執(zhí)行語句的流程。
圖5圖示了分區(qū)之后執(zhí)行語句的流程。
圖6圖示了由根據(jù)本發(fā)明的協(xié)同方法產(chǎn)生的第一目標(biāo)系統(tǒng)。
圖7圖示了由根據(jù)本發(fā)明的協(xié)同方法產(chǎn)生的第二目標(biāo)系統(tǒng)。
優(yōu)選實施例描述在根據(jù)本發(fā)明的分區(qū)方法的第一實施例中,用戶用C作為源代碼語言寫了一個程序,需要對該程序進行分區(qū),使第一部分由通用處理器執(zhí)行,而第二部分由協(xié)同處理器執(zhí)行。舉個例子,C程序源代碼的一段包括三個函數(shù)f,g和h,每個函數(shù)具有一個整型參數(shù)作為輸入?yún)?shù)以及兩條必須執(zhí)行的任意語句。
f(int x){s1;s2;}g(int y){s3;s4;}h(int z){s5;s6;}示出的分區(qū)方法采用了上述提到的源代碼段。在第一步,源代碼翻譯成多個抽象語法樹(AST)。這些語法樹通過采用樹作為數(shù)據(jù)結(jié)構(gòu)用抽象語法代表源代碼的內(nèi)部結(jié)構(gòu)。AST具有多個標(biāo)有生成名稱的節(jié)點,以及樹葉,代表語法中的終端。把源代碼翻譯成多個抽象語法樹,能夠由解析器來實現(xiàn),解析器從掃描器中獲得輸入,并且隨后構(gòu)造多個抽象語法樹。掃描技術(shù)和隨后的源代碼解析技術(shù)都是編譯技術(shù)領(lǐng)域中所熟知的原理。所產(chǎn)生的源代碼的多個抽象語法樹101包括圖1所示出的函數(shù)f,g和h。在圖1中,所圖示的三個抽象語法樹具有節(jié)點FD1,F(xiàn)D2和FD3,分別指源代碼段的函數(shù)f,g和h。縮寫FD指函數(shù)定義,F(xiàn)H為函數(shù)頭,F(xiàn)B為函數(shù)體以及PL為參數(shù)列表。這些縮寫后跟隨一個引用數(shù)字。參考列表PL1,PL2和PL3不作進一步的說明。
在第二步中,多個抽象語法樹101分區(qū)為第一和第二組。第一組抽象語法樹由通用處理器執(zhí)行,而第二組抽象語法樹由協(xié)同處理器來執(zhí)行。由協(xié)同處理器執(zhí)行的抽象語法樹經(jīng)選擇轉(zhuǎn)移到第二組抽象語法樹。所選擇的抽象語法樹可以對應(yīng)于包括函數(shù)f,g和h的源代碼段中的特定的函數(shù)或語句。把來自多個抽象語法樹101的特定的語法樹轉(zhuǎn)移到第二組抽象語法樹的過程稱作為提取。當(dāng)提取一個抽象語法樹時,要么對應(yīng)于一個語句,或者對應(yīng)于一個被其他函數(shù)調(diào)用的函數(shù),該語法樹被第一組中的一個新的、對應(yīng)于某個函數(shù)的語法樹所替換,而該函數(shù)要么調(diào)用所轉(zhuǎn)移的語句,或者調(diào)用函數(shù)。如果所轉(zhuǎn)移的語句或函數(shù)具有變量,這些變量作為參數(shù)傳遞給所轉(zhuǎn)移的語句或函數(shù)。
參考圖1,對應(yīng)于源代碼段中的函數(shù)h、具有節(jié)點FD3及其分支的抽象語法樹,被選擇并將其轉(zhuǎn)移到第二組抽象語法樹。而且,對應(yīng)于源代碼段的函數(shù)g中的語句s4的只具有樹葉s4的抽象語法樹,被選擇將其轉(zhuǎn)移到第二組抽象語法樹。語句s4使用變量y,沒有圖示在源代碼段中。通過提取和替換抽象語法樹,多個語法樹101被分區(qū)為第一組抽象語法樹201和第二組抽象語法樹203。
參考圖2,圖示了分區(qū)多個抽象語法樹101后獲取的第一組抽象語法樹201和第二組抽象語法樹203。多個抽象語法樹101的抽象語法樹s4的提取是通過在第二組抽象語法樹203中創(chuàng)建一個函數(shù)來實現(xiàn)的,對應(yīng)于具有節(jié)點FD7及其分支的抽象語法樹。在多個抽象語法樹101中提取抽象語法樹s4之后,以第二組抽象語法樹203中的抽象語法樹節(jié)點FD7出現(xiàn)的函數(shù)k的函數(shù)調(diào)用替換抽象語法樹s4。變量y作為參數(shù)傳遞給在第二組抽象語法樹203中創(chuàng)建的新的函數(shù)k。第一組抽象語法樹201包括具有節(jié)點FD4及其分支的抽象語法樹,對應(yīng)于源代碼段中的函數(shù)。第一組抽象語法樹201進一步包括具有節(jié)點FD5的抽象語法樹,并且抽象數(shù)k在其分支的其中之一中。第二組抽象語法樹203包括具有節(jié)點FD6及其分支的抽象語法樹,對應(yīng)于源代碼段中的函數(shù)。第二組抽象語法樹203進一步包括具有節(jié)點FD7及其分支的抽象語法樹,對應(yīng)于源代碼段中的g函數(shù)的語句s4。
需要轉(zhuǎn)移到第二組抽象語法樹203的抽象語法樹,可以通過手動標(biāo)記源代碼段中的對應(yīng)的函數(shù)或語句來加以選擇。用戶必須對需要轉(zhuǎn)移到協(xié)同處理器的函數(shù)作出選擇。該信息在源代碼段轉(zhuǎn)換成多個抽象語法樹時,被加入到多個抽象語法樹中101,并且隨后該信息用于分區(qū)。第一組抽象語法樹201和第二組抽象語法樹203,可以翻譯回源代碼語言中的規(guī)約。所有必要的源代碼內(nèi)部信息仍然保持在抽象語法樹中,從而使翻譯得以實現(xiàn)。
在某些實施例中,規(guī)約被分區(qū)為兩組以上抽象語法樹,例如三組抽象語法樹。第一組由通用處理器執(zhí)行,而第二第三組分別由第一和第二協(xié)同處理器執(zhí)行。該實施例的一大優(yōu)點在于允許定義多個協(xié)同處理器,每個處理器專門用于執(zhí)行規(guī)約中的特定部分。
而在另一個實施例中,規(guī)約被分區(qū)為至少兩組抽象語法樹。每個組都由協(xié)同處理器執(zhí)行。結(jié)果,可以定義一組協(xié)同處理器來有效執(zhí)行應(yīng)用程序。
在一個有利的實施例中,第一組抽象語法樹201轉(zhuǎn)換成源代碼語言中的第一部分規(guī)約,而第二組抽象語法樹203轉(zhuǎn)換成源代碼語言中的第二部分規(guī)約。在轉(zhuǎn)換第一組抽象語法樹201的過程中,獲得了下列第一部分規(guī)約f(int x){s1;s2;}g(int y){s3;
k(y);}在轉(zhuǎn)換第二組抽象語法樹203的過程中,獲得了下列第二部分規(guī)約h(int z){s5;s6;}k(int y){s4;}用戶可以把手動修改加入到第一和第二部分規(guī)約。分別在通用處理器和協(xié)同處理器中進行的第一和第二部分規(guī)約的執(zhí)行,可以通過特定的編譯器和特定的設(shè)計工具和/或編譯器來實現(xiàn)。
在另一個實施例中,把多個抽象語法樹101分區(qū)成第一組抽象語法樹201和第二組抽象語法樹203的步驟,包括根據(jù)概況數(shù)據(jù)提取至少一個抽象語法樹。規(guī)約的關(guān)鍵部分是由協(xié)同處理器執(zhí)行是很明顯的。通過運行由采用典型輸入數(shù)據(jù)的規(guī)約所定義的應(yīng)用程序,可以獲得概況數(shù)據(jù)。有關(guān)概況數(shù)據(jù)的類型,尤其取決于協(xié)同處理器的特性。例如,如果協(xié)同處理器能夠快速執(zhí)行并行操作,則概況數(shù)據(jù)把重點放在操作執(zhí)行的次數(shù)以及所占的并行性的數(shù)量。概況數(shù)據(jù)用來選擇規(guī)約中關(guān)鍵部分的操作,以便使對應(yīng)的抽象語法樹能夠轉(zhuǎn)移到第二組抽象語法樹203。其結(jié)果是,協(xié)同處理器將執(zhí)行規(guī)約的關(guān)鍵部分。而且,概況數(shù)據(jù)的使用允許把規(guī)約自動分區(qū)成第一和第二部分規(guī)約。
參考圖3,示意性地圖示了一種用于產(chǎn)生目標(biāo)系統(tǒng)的協(xié)同設(shè)計方法。該目標(biāo)系統(tǒng)包括一個通用處理器和一個協(xié)同處理器。在第一步303,源代碼語言C301中的規(guī)約被分區(qū)成待通用處理器執(zhí)行的第一部分C語言規(guī)約309以及待協(xié)同處理器執(zhí)行的第二部分C語言規(guī)約311,步驟303包括根據(jù)先前描述的實施例分區(qū)源代碼中的規(guī)約的分區(qū)方法,該實施例中
—通過掃描器和解析器把源代碼語言C301中的規(guī)約轉(zhuǎn)換成多個抽象語法樹。
—采用概況數(shù)據(jù)把多個抽象語法樹分區(qū)成第一組和第二組抽象語法樹,該概況數(shù)據(jù)用于識別須由協(xié)同處理器執(zhí)行的關(guān)鍵部分操作。
—把第一組抽象語法樹翻譯成使用C語言的第一部分規(guī)約309,以及把第二組抽象語法樹翻譯成使用C語言的第二部分規(guī)約311。
在下一個步驟中,用戶可以把手動修改305和307分別加入到第一部分規(guī)約309和第二部分規(guī)約311。例如,如果需要,函數(shù)可以從第一部分規(guī)約轉(zhuǎn)移動第二部分規(guī)約。這些規(guī)約以初始源代碼的形式這一事實,極大地方便了用戶對規(guī)約作手動修改。
在后續(xù)步驟313,采用特定的用于通用處理器的編譯器,把使用C語言的第一部分規(guī)約309轉(zhuǎn)換成可執(zhí)行的機器代碼315。在步驟317,該步驟可以與步驟313并行執(zhí)行,采用特定的設(shè)計工具和/或編譯器,把第二部分規(guī)約311轉(zhuǎn)換成協(xié)同處理器319的規(guī)約。在某些實施例中,協(xié)同處理器的規(guī)約是硬件規(guī)約,例如連線表的形式,用于設(shè)計特定用途集成電路(AISC)。在其他實施例中,協(xié)同處理器規(guī)約是一個硬件設(shè)計和一個可配置處理器的配置規(guī)約,或者,如果使用的是已存在的可配置處理器,則僅僅是一個配置規(guī)約。在某些進一步的實施例中,協(xié)同處理器規(guī)約是一個硬件設(shè)計和一個軟件規(guī)約,例如,用于可編程處理器,以微代碼或者可執(zhí)行機器代碼形式的規(guī)約,或者,如果采用了已經(jīng)存在的可編程處理器,則可以僅僅是一個軟件規(guī)約。
在另一個實施例中,目標(biāo)系統(tǒng)包括一個控制處理器以及第一和第二協(xié)同處理器。規(guī)約301映射到這些協(xié)同處理器。采用特定的設(shè)計工具和/或編譯器,把第一部分規(guī)約309轉(zhuǎn)換成第一協(xié)同處理器規(guī)約。也采用特定的設(shè)計工具和/或編譯器,把第二部分規(guī)約311轉(zhuǎn)換成第二協(xié)同處理器規(guī)約。
在一個不同的實施例中,在協(xié)同設(shè)計方法的第一步303,定義一個通用處理器和協(xié)同處理器之間的接口。該接口可以在第一部分規(guī)約309和第二部分規(guī)約311分區(qū)之后進行定義。該接口可以包括用于數(shù)據(jù)讀和寫的存儲器地址,以及包括通用處理器和協(xié)同處理器之間同步所必須的控制信息的讀和寫的存儲器地址。
在一個有利實施例中,通用處理器和協(xié)同處理器之間的接口包括一個遠程函數(shù)調(diào)用。通過遠程函數(shù)調(diào)用,通用處理器調(diào)用一個由協(xié)同處理器執(zhí)行的函數(shù),并且在協(xié)同處理器完成執(zhí)行特定的函數(shù)的同時,重新執(zhí)行。可選地,通用處理器在此期間可以轉(zhuǎn)向不同的任務(wù)。通過使用遠程函數(shù)調(diào)用,通用處理器和協(xié)同處理器之間的同步是隱式存在的。當(dāng)實施遠程函數(shù)調(diào)用時,待協(xié)同處理器執(zhí)行的函數(shù)的一個標(biāo)識符作為參數(shù)傳遞。此外,用于獲取輸入數(shù)據(jù)的存儲器地址以及用于寫特定函數(shù)的結(jié)果數(shù)據(jù)的存儲器地址,作為遠程函數(shù)調(diào)用的參數(shù)傳遞。協(xié)同處理器能夠從系統(tǒng)存儲器讀出輸入數(shù)據(jù),以及把輸出數(shù)據(jù)寫入系統(tǒng)存儲器。
在某些實施例中,用于保存有關(guān)協(xié)同處理器執(zhí)行的函數(shù)的返回狀態(tài)的存儲器索引也作為遠程函數(shù)調(diào)用的參數(shù)傳遞。在特定函數(shù)具有多于一個出口點,并且在函數(shù)執(zhí)行之后控制返回到通用處理器的情況中,通用處理器訪問有關(guān)必須從軟件中哪個點恢復(fù)執(zhí)行的信息。通過該存儲器索引,通用處理器能夠檢索特定函數(shù)的返回狀態(tài)。
在某些實施例中,在協(xié)同設(shè)計方法的第一步303,轉(zhuǎn)移到第二組抽象語法樹的函數(shù),在第一組抽象語法樹中得到復(fù)制。參考圖4,示意性地圖示了通過一部分規(guī)約的函數(shù)調(diào)用的流程。在一個執(zhí)行點,向語句S1作出函數(shù)調(diào)用FC,該語句包含一個if then-else結(jié)構(gòu)。語句S1可以后隨語句S4和語句S2,具體取決于if then-else結(jié)構(gòu)的監(jiān)護的評價結(jié)果。執(zhí)行語句S4之后執(zhí)行語句S2。語句S2執(zhí)行之后,執(zhí)行語句S3。隨后,語句S3返回控制。臨界路徑CP包括語句S1,S2和S3,這些語句的形式對應(yīng)于轉(zhuǎn)移到第二組抽象語法樹的抽象語法樹。在第一組抽象語法樹中,語句S1所對應(yīng)的抽象語法樹,由一個新的抽象語法樹所替換來對所概述的語句S1,S2和S3作函數(shù)調(diào)用。在執(zhí)行期間,語句S1,S2和S3由協(xié)同處理器執(zhí)行。然而,偶偶地,語句S1可被語句S4跟隨,這種情況中,控制返回到通用處理器。為了減少由通用處理器和協(xié)同處理器之間的函數(shù)調(diào)用所引起的開銷,語句S2和S3通過添加其對應(yīng)的抽象語法樹復(fù)制在第一組抽象語法樹中。所導(dǎo)致的語句執(zhí)行流程圖示在圖5中。參考該圖,所復(fù)制的語句分別示作為語句S2’和S3’。協(xié)同處理器執(zhí)行由501所指的語句,而通用處理器執(zhí)行503所指的語句。語句S3和語句S3’在完成執(zhí)行以后都具有相同的返回點。在語句S2’和S3’偶然由通用處理器執(zhí)行的情況下,性能損失可以被由減少總體開銷所帶來的性能的提高所超越。
參考圖6,圖示了一個目標(biāo)系統(tǒng)601,其設(shè)計采用了根據(jù)本發(fā)明的實施例的協(xié)同設(shè)計方法。目標(biāo)系統(tǒng)包括一個系統(tǒng)存儲器SM,一個通用處理器GP,一個協(xié)同處理器COP和一個系統(tǒng)總線SB。系統(tǒng)存儲器SM,通用處理器GP和協(xié)同處理器COP經(jīng)由系統(tǒng)總線SB耦合。在一個可選實施例中,協(xié)同處理器COP和系統(tǒng)存儲器SM直接耦合。在另一個實施例中,通用處理器GP和協(xié)同處理器COP直接耦合。系統(tǒng)存儲器SM包括多個寄存器603。通用處理器GP包括一個寄存器堆605。協(xié)同處理器COP包括一個寄存器堆607,一個配置存儲器CM,一個控制邏輯CL和一個程序計數(shù)器PC。在分區(qū)規(guī)約之后,在協(xié)同處理器中實現(xiàn)多個函數(shù)。協(xié)同處理器COP由配置存儲器CM配置,以實施這些函數(shù)。該實施例中由協(xié)同處理器COP實現(xiàn)的函數(shù)是一個向量加C[i]=A[i]+B[i]其中A,B和C為所涉及的三個向量,i代表一個數(shù)組索引。
在該實施例中,協(xié)同處理器是一個可配置處理器,例如一個現(xiàn)場可編程門陣列(FPGA)。在其他實施例中,協(xié)同處理器是一個可編程處理器,例如超長指令字(VLIW)處理器或者特定用途集成處理器(ASIP),或者協(xié)同處理器包括一個特定用途集成電路(ASIC)。
通用處理器GP啟動執(zhí)行應(yīng)用程序。在通用處理器GP想把控制轉(zhuǎn)向協(xié)同處理器COP時,進行遠程函數(shù)調(diào)用。例如,需要執(zhí)行向量加法程序的情況中。在遠程函數(shù)調(diào)用過程中,下列參數(shù)傳遞給協(xié)同處理器func_id協(xié)同處理器COP中向量加法函數(shù)的標(biāo)識符。
&A,&B,&C,涉及計算的三個向量的系統(tǒng)存儲器SM中的地址。
&ret_stat變量在系統(tǒng)存儲器SM中的地址,該變量用于保存協(xié)同處理器COP執(zhí)行的函數(shù)的返回狀態(tài)。
在遠程函數(shù)調(diào)用之前,所有參數(shù)都保存在通用處理器GP的寄存器堆605中。在遠程函數(shù)調(diào)用過程中,這些參數(shù)被傳遞給協(xié)同處理器COP。在該實施例中,這些參數(shù)經(jīng)由通用處理器GP和協(xié)同處理器COP的一個端口的直接連接,寫入到寄存器堆607,該連接沒有在圖6中示出。在某些實施例中,協(xié)同處理器COP能夠從存儲器、預(yù)定義虛擬寄存器堆讀取這些參數(shù)。在其他實施例中,通用處理器GP能夠經(jīng)由存儲器匹配的IO把這些參數(shù)直接寫入到寄存器堆607。
保存在協(xié)同處理器COP的寄存器堆607的參數(shù)func_id,由控制邏輯CL讀出并且被翻譯成一個程序計數(shù)器PC,該計數(shù)器指向配置存儲器CM中的向量加法程序的第一次配置。在向量加法并不適合單個配置的情況中,大規(guī)模計算可能要求在運行期間改變多次配置。在這種情況中,程序計數(shù)器PC將指向配置組中的第一配置。
協(xié)同處理器COP經(jīng)由系統(tǒng)總線SB訪問獨立于通用處理器GP的系統(tǒng)存儲器SM。向量A和B的值從系統(tǒng)存儲器SM的多個寄存器堆603中對應(yīng)的寄存器中讀出。向量加法程序由協(xié)同處理器COP采用向量A和B的值執(zhí)行。在執(zhí)行之后,所計算的值C由協(xié)同處理器COP,通過系統(tǒng)總線SB寫入到寄存器堆603中對應(yīng)的寄存器。變量ret_stat的值也由協(xié)同處理器COP使用保存在寄存器堆607中的變量ret_stat的地址,通過系統(tǒng)總線SB寫入到寄存器堆603中對應(yīng)的寄存器。提供了同步裝置,沒有圖示在圖6中,其目的是協(xié)同處理器COP能夠向通用處理器GP發(fā)送信號通知其任務(wù)已經(jīng)完成,例如通過中斷。隨后,通用處理器GP能夠經(jīng)由系統(tǒng)總線SB,從系統(tǒng)存儲器SM的多個寄存器堆603中對應(yīng)的寄存器中讀出參數(shù)ret_stat的值。利用ret_stat的值,通用處理器GP能夠確定接下來從哪個點持續(xù)其執(zhí)行,并實際恢復(fù)應(yīng)用程序或任務(wù)的執(zhí)行。
參考圖7,圖示了通過根據(jù)本發(fā)明的實施例的協(xié)同設(shè)計方法設(shè)計的目標(biāo)系統(tǒng)701。該目標(biāo)系統(tǒng)包括一個系統(tǒng)存儲器SM,一個控制器CTR,協(xié)同處理器COPA,COPB和COPC,一條系統(tǒng)總線SB,一個輸入/輸出(I/O)模塊IOM,和本地存儲器LM,LM1和LM2。系統(tǒng)存儲器SM,協(xié)同處理器COPA,COPB和COPC,控制器CTR和輸入/輸出模塊IOM經(jīng)由系統(tǒng)總線SB耦合。在一個可選實施例中,目標(biāo)系統(tǒng)的不同部件之間的通信是基于先入先出緩沖器受阻之上的,經(jīng)由數(shù)據(jù)驅(qū)動通信網(wǎng)絡(luò)來安排的。協(xié)同處理器COPA與本地存儲器LM耦合,協(xié)同處理器COPB與本地存儲器LM1和LM2耦合。標(biāo)準(zhǔn)系統(tǒng)控制任務(wù),比如操作系統(tǒng)處理,中斷以及用戶接口,被映射到控制處理器CTR。要求相對較高性能的應(yīng)用程序,例如媒體編碼/解碼應(yīng)用程序,如MPEG或MP3,映射到協(xié)同處理器COPA,COPB和COPC。協(xié)同處理器COPA,COPB和COPC是能夠執(zhí)行大量并行操作的處理器,例如超長指令字(VLIW)處理器或者超大規(guī)模處理器。這些類型的處理器包括大量發(fā)射槽,其中每個發(fā)射槽對應(yīng)一個或多個函數(shù)單元。數(shù)據(jù)路徑受一組控制字控制。每個控制字控制部分?jǐn)?shù)據(jù)路徑,而這部分路徑可以包括寄存器地址和用于算術(shù)邏輯單元或其他函數(shù)單元的操作代碼。通常,通過指令解碼器把二進制格式的指令翻譯成對應(yīng)的控制字,或者通過微存儲,也即直接包含控制字的存儲器,每組指令產(chǎn)生一組新的控制字。通常,一個控制字代表一個類操作RISC,包括一個操作碼,兩個操作數(shù)寄存器索引和一個結(jié)果寄存器索引。操作數(shù)寄存器索引和結(jié)果寄存器索引指寄存器堆中的寄存器。在VLIW處理器的情況中,多個指令壓縮到一個叫做超長指令字VLIW指令的長指令中。VLIW處理器采用多個、獨立函數(shù)單元來并行執(zhí)行這些多指令。處理器允許利用程序中的指令并行性,從而能夠同時執(zhí)行多條指令。在該實施例中,處理器COPA,COPB和COPC包括不同數(shù)量的發(fā)射槽,也即協(xié)同處理器COPA包括5個發(fā)射槽,協(xié)同處理器COPB包括15個發(fā)射槽,協(xié)同處理器COPC包括8個發(fā)射槽。這些處理器因此能夠處理不同指令并行性的函數(shù)。例如,MPEG編碼/解碼應(yīng)用程序被映射到協(xié)同處理器COPA,COPB和COPC。MPEG應(yīng)用程序由多個不同的函數(shù)組成,也即,離散余弦轉(zhuǎn)換(DCT)函數(shù),量化函數(shù)和一個運動估計函數(shù)。采用根據(jù)本發(fā)明的規(guī)約分區(qū)方法在系統(tǒng)處理器COPA,COPB和COPC之間分區(qū)MPEG應(yīng)用程序。由于該函數(shù)包含固有的較大程度的指令并行性,運動估計函數(shù)被映射到協(xié)同處理器COPB。運動估計函數(shù)的執(zhí)行,至少跨越連續(xù)視頻中兩個不同的幀,該兩個幀能夠分別被保存在本地存儲器LM1和LM2中。DCT函數(shù)具有固有的指令并行性并且只需要較少數(shù)量的本地存儲容量,因此映射到協(xié)同處理器COPC。量化函數(shù)是一個固有的順序函數(shù),也即,不具有指令并行性。該函數(shù)不要求最優(yōu)存儲在本地存儲器上的檢查表,從而減少了系統(tǒng)總線事務(wù)。因此,最好,量化函數(shù)映射到協(xié)同處理器COPA中。在分區(qū)MPEG應(yīng)用程序之后,映射到協(xié)同處理器的每個部分能夠通過專用工具分別轉(zhuǎn)換成協(xié)同處理器規(guī)約。其結(jié)果是,獲得了用于處理MPEG應(yīng)用程序的目標(biāo)系統(tǒng)701的最優(yōu)設(shè)計。
需要注意的是,上文提到的實施例闡述而非限制了本發(fā)明,那些本領(lǐng)域的技術(shù)人員將能夠設(shè)計出多種不同的實施例,而不背離本發(fā)明附屬權(quán)利要求中的范圍。在權(quán)利要求中,任何括號中的參考符號不應(yīng)當(dāng)被理解為是限制權(quán)利要求。字“包括”不排除存在權(quán)利要求中沒有列出的其他元件和步驟。前面敘述一個元件的字“一個”,不排除多個這種元件的使用。本發(fā)明能夠通過包括多個獨立元件的硬件,通過適當(dāng)編程的計算機來實現(xiàn)。在設(shè)備權(quán)利要求中,列舉了多個裝置,這些裝置能夠由一個或多個相同的硬件的體現(xiàn)。在多個不同的互相關(guān)聯(lián)的權(quán)利中敘述的特定的措施這樣一個事實,并不表明這些措施不能結(jié)合起來使用以提供有點。
權(quán)利要求
1.一種用于在源代碼(301)中劃分分區(qū)規(guī)范規(guī)約的方法;其特點在于該方法包括一下步驟把規(guī)范規(guī)約轉(zhuǎn)換成多個抽象語法樹(101);把多個抽象語法樹(101)劃分分區(qū)成至少一個第一組(201)和一個第二組(203),第一組抽象語法樹(201)由第一處理器(GP,COPA)執(zhí)行,而第二組抽象語法樹(203)由第二處理器(COP,COPB)。
2.根據(jù)權(quán)利要求1的用于在源代碼中劃分分區(qū)規(guī)范規(guī)約的方法,其中第二處理器是一個協(xié)同處理器。
3.根據(jù)權(quán)利要求2的用于在源代碼中劃分分區(qū)規(guī)范規(guī)約的方法,其中第一處理器是一個通用處理器。
4.根據(jù)權(quán)利要求1的用于在源代碼中劃分分區(qū)規(guī)范規(guī)約的方法進一步包括以下步驟把第一組抽象語法樹(201)轉(zhuǎn)換成源代碼(309)中的第一部分規(guī)范規(guī)約,以及把第二組抽象語法樹(203)轉(zhuǎn)換成源代碼(311)中的第二部分規(guī)范規(guī)約。
5.根據(jù)權(quán)利要求1的用于在源代碼中劃分分區(qū)規(guī)范規(guī)約的方法,其中把多個抽象語法樹(101)劃分分區(qū)成至少一個第一組抽象語法樹(201)和一個第二組抽象語法樹(203)的步驟包括根據(jù)概況數(shù)據(jù)提取至少一個抽象語法樹的步驟。
6.根據(jù)權(quán)利要求1的用于在源代碼中劃分分區(qū)規(guī)范規(guī)約的方法,其中把多個抽象語法樹(101)劃分分區(qū)成至少一個第一組抽象語法樹(201)和一個第二組抽象語法樹(203)的步驟包括根據(jù)程序設(shè)計器所提供的信息提取至少一個抽象語法樹的步驟。
7.一種用于產(chǎn)生目標(biāo)系統(tǒng)(601,701)的協(xié)同設(shè)計方法,其中目標(biāo)系統(tǒng)包括一個第一處理器(GP,COPA)和至少一個第二處理器(COP,COPB);協(xié)同設(shè)計方法博阿克包括根據(jù)權(quán)利要求1的用于在源代碼中劃分分區(qū)規(guī)范規(guī)約的方法。
8.一種根據(jù)權(quán)利要求7的用于產(chǎn)生目標(biāo)系統(tǒng)的協(xié)同設(shè)計方法,其中用于在源代碼中劃分分區(qū)規(guī)范規(guī)約的方法進一步包括以下步驟把第一組抽象語法樹(201)轉(zhuǎn)換成在源代碼(309)中的第一部分規(guī)范規(guī)約,以及把第二組抽象語法樹(203)轉(zhuǎn)換成源代碼(311)中第二部分規(guī)范規(guī)約。
9.一種根據(jù)權(quán)利要求8的用于產(chǎn)生目標(biāo)系統(tǒng)的協(xié)同設(shè)計方法,其中第一二處理器是一個通用處理器以及其中,第一二部分規(guī)范規(guī)約(31109)被轉(zhuǎn)換成協(xié)同系統(tǒng)處理器(319)的規(guī)范規(guī)約。
10.一種根據(jù)權(quán)利要求9的用于產(chǎn)生目標(biāo)系統(tǒng)的協(xié)同設(shè)計方法,其中第一處理器是一個通用處理器以及其中,,而第一部分規(guī)范規(guī)約(309)通過編譯器轉(zhuǎn)換成目標(biāo)代碼(315)。
11.一種根據(jù)權(quán)利要求10的用于產(chǎn)生目標(biāo)系統(tǒng)的協(xié)同設(shè)計方法,進一步包括定義一個通用處理器(GP)和協(xié)同處理器(COP)之間的接口的步驟。
12.根據(jù)權(quán)利要求9的協(xié)同設(shè)計方法,其中協(xié)同處理器的規(guī)范規(guī)約包括一個ASIC規(guī)范規(guī)約。
13.一種根據(jù)權(quán)利要求9的協(xié)同設(shè)計方法,其中協(xié)同處理器的規(guī)范規(guī)約包括一個可編程處理器規(guī)范規(guī)約。
14.一種根據(jù)權(quán)利要求9的協(xié)同設(shè)計方法,其中協(xié)同處理器的規(guī)范規(guī)約包括一個可重新配置處理器規(guī)范規(guī)約。
15.一種根據(jù)權(quán)利要求11的協(xié)同設(shè)計方法,其中通用處理器(GP)和協(xié)同處理器(COP)之間的接口包括一個遠程函數(shù)調(diào)用;遠程函數(shù)調(diào)用具有一組參數(shù);該組參數(shù)包括一個用于待調(diào)用的函數(shù)的標(biāo)識符,至少一個指向待調(diào)用函數(shù)的輸入數(shù)據(jù)的引用和至少一個指向待調(diào)用函數(shù)的結(jié)果數(shù)據(jù)的引用。
16.一種根據(jù)權(quán)利要求15的協(xié)同設(shè)計方法,其中遠程調(diào)用函數(shù)的參數(shù)組進一步包括指向存儲單元位置的引用,該存儲位置單元用于保存待調(diào)用的函數(shù)的返回狀態(tài)的信息。
17.一種根據(jù)權(quán)利要求7的協(xié)同設(shè)計方法,其中目標(biāo)系統(tǒng)(601,701)進一步包括一個系統(tǒng)存儲器(SM)和一條系統(tǒng)總線(SB);系統(tǒng)存儲器(SM)第一處理器和第二處理器通過系統(tǒng)總線(SB)耦合在一起。
18.一種根據(jù)權(quán)利要求10的協(xié)同設(shè)計方法,其中通用處理器(GP)是一個數(shù)字信號處理器。
19.一種劃分分區(qū)編譯程序產(chǎn)品,其中當(dāng)所述劃分分區(qū)編譯程序產(chǎn)品在計算機系統(tǒng)中運行時,該劃分分區(qū)編譯程序產(chǎn)品經(jīng)設(shè)置用來執(zhí)行根據(jù)權(quán)利要求1的用于劃分分區(qū)源代碼種的規(guī)范規(guī)約的方法的所有步驟。
全文摘要
結(jié)合多個不同處理器的目標(biāo)系統(tǒng),例如一個通用處理器(GP)和至少一個協(xié)同處理器(COP),或者可選地,兩個或者更多協(xié)同處理器(COPA,COPB,COPC),能夠把靈活性和速度結(jié)合起來用來執(zhí)行一組函數(shù)。這種目標(biāo)系統(tǒng)的設(shè)計要求把規(guī)約分區(qū)成一部分由通用處理器執(zhí)行,一部分由協(xié)同處理器執(zhí)行,或者分區(qū)成多個部分,由不同的協(xié)同處理器執(zhí)行。本發(fā)明描述了一種用于分區(qū)源代碼中的規(guī)約的方法。在第一步,規(guī)約301被轉(zhuǎn)換成多個抽象語法樹101。在第二步中,多個抽象語法樹101分區(qū)成至少第一組201和第二組203。第一組抽象語法樹201待由第一處理器(GP,COPA)執(zhí)行,而第二組抽象語法樹203待由第二處理器(COP,COPB)執(zhí)行。第一組抽象語法樹201和第二組抽象語法樹203都能夠分別被翻譯成原始源代碼語言中的規(guī)約309和311,允許用戶把手動修改305和307加入到規(guī)約309和311中。此外,特定的編譯器工具以及特定的設(shè)計工具能夠用來把規(guī)約309和311轉(zhuǎn)換成例如,對應(yīng)的可執(zhí)行機器代碼315和協(xié)同處理器319的規(guī)約。
文檔編號G06F17/50GK1672132SQ03817466
公開日2005年9月21日 申請日期2003年6月23日 優(yōu)先權(quán)日2002年7月25日
發(fā)明者B·德奧里維拉卡斯特魯普佩, A·奧古斯泰恩, O·M·皮雷斯多斯雷斯莫雷拉, P·A·C·J·范魯恩 申請人:皇家飛利浦電子股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1