專利名稱:用于對可重構(gòu)處理器進(jìn)行仿真的設(shè)備和方法
技術(shù)領(lǐng)域:
以下描述涉及對執(zhí)行應(yīng)用程序的處理器的性能進(jìn)行仿真并可用于改進(jìn)應(yīng)用程序的處理的處理器仿真(simulation)技術(shù)。
背景技術(shù):
可重構(gòu)(reconfigurable)計(jì)算的概念基于處理器連同可重構(gòu)硬件元件陣列的方案。這種可重構(gòu)硬件元件的運(yùn)轉(zhuǎn)行為(behavior)(包括可重構(gòu)硬件元件之間的數(shù)據(jù)流)可被定制以執(zhí)行特定任務(wù)??芍貥?gòu)處理器可具有與專用硬件的性能相同的處理性能。可重構(gòu)陣列(array)包括多個處理元件或功能單元。這種功能單元的大小或功能單元的復(fù)雜度(例如,功能單元中包括的ALU或寄存器的數(shù)量)被稱為粒度 (granularity)。粒度較大的處理器可被稱為粗粒度可重構(gòu)體系結(jié)構(gòu)(CGRA),粒度較小的處理器可被稱為細(xì)粒度可重構(gòu)體系結(jié)構(gòu)。當(dāng)執(zhí)行特定任務(wù)時,可基于配置信息動態(tài)地設(shè)置單獨(dú)的功能單元之間的配置。例如,可基于能夠從配置存儲器(例如,復(fù)用器)讀取的配置信息動態(tài)地建立單獨(dú)的功能單元之間的路由路徑。執(zhí)行文件(execution file)可基于建立的體系結(jié)構(gòu)來執(zhí)行。執(zhí)行文件的指令可被存儲在指令存儲器中。指令可具有將由各個處理元件執(zhí)行的指令代碼和操作數(shù)(operand)信息的序列的形式。CGRA可被實(shí)施為可用于提高程序的特定段(例如,迭代循環(huán))的執(zhí)行速度的加速器。與現(xiàn)有專用集成電路(ASIC)相比,由于CGRA處理器具有高靈活度和與ASIC相似的性能等級,故CGRA處理器的目標(biāo)是作為用于下一代數(shù)字信號處理器(DSP)的有效手段。為了估計(jì)特定應(yīng)用程序使用基于CGRA的平臺可獲得的性能的程度,并糾正源代碼以更有效地使用CGRA,可使用允許性能調(diào)試的仿真器(simulator)。用于CGRA的仿真器應(yīng)具有足夠高的速度,從而仿真不會成為軟件開發(fā)的瓶頸。此外,仿真器應(yīng)確保周期準(zhǔn)確性以進(jìn)行準(zhǔn)確的性能調(diào)試。由于CGRA像超長指令字(VLIW)機(jī)一樣在編譯時間期間決定所有調(diào)度,故仿真器可確保周期準(zhǔn)確性。然而,與通過寄存器執(zhí)行在功能單元之間傳遞的所有操作數(shù)的通用處理器不同,CGRA使用明顯復(fù)雜的互連邏輯在功能單元之間傳遞操作數(shù)。由于這個原因,仿真器必須對大量互連邏輯的操作進(jìn)行建模,從而增加負(fù)擔(dān)。監(jiān)控大量的互連是限制仿真速度的主要因素。
發(fā)明內(nèi)容
在一個總體方面,提供了一種可重構(gòu)處理器的仿真器,包括處理器建模單元,用于產(chǎn)生包括表示在產(chǎn)生操作數(shù)的功能單元與消耗所述操作數(shù)的功能單元之間的路由路徑的隊(duì)列的處理器模型,其中,處理器模型基于功能單元之間的路由延遲以及根據(jù)模調(diào)度的迭代循環(huán)的階段信息;仿真單元,用于基于由處理器建模單元產(chǎn)生的處理器模型來對從編譯器接收的二進(jìn)制文件進(jìn)行仿真,并輸出仿真的結(jié)果。由處理器建模單元表示的隊(duì)列可具有多個時隙,所述多個時隙相應(yīng)于路由路徑上的路由延遲與階段的啟動間隔(initiation interval)的比率。仿真單元可將在每個功能單元中產(chǎn)生的操作數(shù)寫入到相應(yīng)隊(duì)列的第一時隙,并可在每個啟動間隔將寫入到每個時隙中的信息移動到下一時隙。從編譯器接收的二進(jìn)制文件可包括配置文件和執(zhí)行文件。仿真器還可包括建模代碼DB,存儲用于路由隊(duì)列的操作的面向主機(jī)的二進(jìn)制代碼,其中,仿真單元通過從提取自建模代碼DB的面向主機(jī)的二進(jìn)制代碼重構(gòu)路由隊(duì)列的互連來執(zhí)行仿真。在另一方面,提供了一種可重構(gòu)處理器的仿真方法,包括產(chǎn)生包括表示在產(chǎn)生操作數(shù)的功能單元與消耗所述操作數(shù)的功能單元之間的路由路徑的隊(duì)列的處理器模型,其中,處理器模型基于功能單元之間的路由延遲以及根據(jù)模調(diào)度的迭代循環(huán)的階段信息;以及基于產(chǎn)生的處理器模型來對從編譯器接收的二進(jìn)制文件進(jìn)行仿真,并輸出仿真的結(jié)果。在產(chǎn)生處理器模型的步驟中表示的隊(duì)列可具有多個時隙,所述多個時隙相應(yīng)于路由路徑上的路由延遲與階段的啟動間隔的比率。對二進(jìn)制文件進(jìn)行仿真的步驟可包括將在每個功能單元中產(chǎn)生的操作數(shù)寫入到相應(yīng)隊(duì)列的第一時隙,并在每個啟動間隔將寫入到每個時隙中的信息移動到鄰近時隙。階段信息可包括迭代的階段劃分信息以及關(guān)于分配到單獨(dú)的階段的功能單元、產(chǎn)生操作數(shù)的功能單元與消耗所述操作數(shù)的功能單元之間的關(guān)系的信息。從編譯器接收的二進(jìn)制文件可包括配置文件和執(zhí)行文件。對二進(jìn)制文件進(jìn)行仿真的步驟可包括,通過以下處理來執(zhí)行仿真讀取二進(jìn)制文件,從存儲用于路由隊(duì)列的操作的面向主機(jī)的二進(jìn)制代碼的建模代碼DB提取與所述二進(jìn)制文件相應(yīng)的面向主機(jī)的二進(jìn)制代碼以及執(zhí)行所述面向主機(jī)的二進(jìn)制代碼。在另一方面,提供了一種其上存儲有用于使處理器實(shí)現(xiàn)可重構(gòu)處理器的仿真方法的程序指令的計(jì)算機(jī)可讀存儲介質(zhì),所述仿真方法包括產(chǎn)生包括表示在產(chǎn)生操作數(shù)的功能單元與消耗所述操作數(shù)的功能單元之間的路由路徑的隊(duì)列的處理器模型,其中,處理器模型基于功能單元之間的信息路由延遲以及根據(jù)模調(diào)度的迭代循環(huán)的階段信息;以及基于產(chǎn)生的處理器模型來對從編譯器接收的二進(jìn)制文件進(jìn)行仿真,并輸出仿真的結(jié)果。在另一方面,提供了一種可重構(gòu)處理器的仿真器,包括處理器建模單元,用于產(chǎn)生表示在產(chǎn)生操作數(shù)的功能單元與消耗所述操作數(shù)的功能單元之間的路由路徑的抽象體系結(jié)構(gòu)模型(abstracted architecture model),其中,抽象體系結(jié)構(gòu)模型基于功能單元之間的路由延遲以及根據(jù)模調(diào)度的迭代循環(huán)的階段信息;仿真單元,用于基于由處理器建模單元產(chǎn)生的抽象體系結(jié)構(gòu)模型來對二進(jìn)制文件進(jìn)行仿真,并輸出仿真的結(jié)果。二進(jìn)制文件可包括配置信息,所述配置信息包括關(guān)于如何映射可重構(gòu)處理器的功能單元以執(zhí)行特定應(yīng)用程序的信息。二進(jìn)制文件可包括執(zhí)行文件,所述執(zhí)行文件包括由可重構(gòu)處理器中的各個功能單元在預(yù)定時間段期間基于具有固定結(jié)構(gòu)的功能單元所執(zhí)行的指令。抽象體系結(jié)構(gòu)模型可包括將產(chǎn)生操作數(shù)的功能單元映射到消耗所述操作數(shù)的功
5能單元的隊(duì)列。功能單元Π可在時間tl產(chǎn)生操作數(shù),隊(duì)列可將功能單元Π的目的端口與消耗所述操作數(shù)的功能單元f2的源端口連接。處理器建模單元可基于功能單元的調(diào)度信息更新抽象體系結(jié)構(gòu)模型,所述調(diào)度信息接收自調(diào)度器。通過以下描述、附圖和權(quán)利要求,其它特點(diǎn)和方面將會清楚。
圖1是示出可用于對可重構(gòu)處理器進(jìn)行仿真的程序開發(fā)系統(tǒng)的示例的示圖。圖2是示出具有仿真器的可重構(gòu)處理器的示例的示圖。圖3是示出具有仿真器的可重構(gòu)處理器的另一示例的示圖。圖4是示出傳統(tǒng)體系結(jié)構(gòu)模型的示例的示圖。圖5是示出可應(yīng)用于處理器的建模方法的示例的示圖。圖6是示出具有粗粒度可重構(gòu)體系結(jié)構(gòu)(CGRA)處理器的模調(diào)度的示例的示圖。圖7是示出當(dāng)圖6的CGRA處理器執(zhí)行由四個階段構(gòu)成的迭代循環(huán)時,單獨(dú)的功能單元的處理流程的示例的示圖。圖8是示出可應(yīng)用于模調(diào)度的結(jié)果的處理器模型的示例的示圖。貫穿附圖和說明書,除非另外描述,相同的附圖標(biāo)號應(yīng)被理解為表示相同的元件、 特點(diǎn)和結(jié)構(gòu)。為了清楚、示例性和方便的目的,可夸大這些元件的相對大小和描述。
具體實(shí)施例方式提供以下描述以助于讀者全面理解在此描述的方法、設(shè)備和/或系統(tǒng)。因此,在此描述的方法、設(shè)備和/或系統(tǒng)的各種改變、修改和等同物可被建議給本領(lǐng)域的普通技術(shù)人員。另外,為了更加清楚和簡明,可省略已知功能和構(gòu)造的描述。圖1示出可用于對可重構(gòu)處理器進(jìn)行仿真的程序開發(fā)系統(tǒng)的示例。參照圖1,程序開發(fā)系統(tǒng)包括編譯器/調(diào)度器300和仿真器100。編譯器/調(diào)度器300讀取可重構(gòu)處理器的體系結(jié)構(gòu)信息510以及將基于體系結(jié)構(gòu)信息510被執(zhí)行的程序源530。編譯器/調(diào)度器300對體系結(jié)構(gòu)信息510和程序源530進(jìn)行編譯和調(diào)度,并隨后將調(diào)度的結(jié)果作為執(zhí)行文件930和配置信息910存儲在存儲器中。仿真器100從編譯器/調(diào)度器300接收調(diào)度信息,從存儲器讀取配置信息910和執(zhí)行文件930,并對執(zhí)行文件930的執(zhí)行進(jìn)行仿真。例如,程序開發(fā)系統(tǒng)可包括在移動裝置或家庭裝置中。例如,程序開發(fā)系統(tǒng)可包括在移動終端裝置、嵌入式系統(tǒng)等中。仿真器100可用于對由單核或多核處理器執(zhí)行的處理進(jìn)行仿真。在圖1的示例中,從編譯器/調(diào)度器300傳送到仿真器100的二進(jìn)制文件900包括配置信息910 (或配置文件)和執(zhí)行文件930。通過仿真,可估計(jì)在具有給定體系結(jié)構(gòu)的可重構(gòu)處理器中執(zhí)行的特定應(yīng)用程序可達(dá)到的性能的程度,并且還可通過調(diào)試來校正程序源530以達(dá)到更高效的執(zhí)行。體系結(jié)構(gòu)信息510可包括例如關(guān)于可重構(gòu)處理器的功能單元的體系結(jié)構(gòu)、數(shù)據(jù)體系結(jié)構(gòu)(例如,功能單元之間的路徑互連數(shù)據(jù))、控制流的體系結(jié)構(gòu)等的信息。配置信息910可包括關(guān)于如何構(gòu)造可重構(gòu)處理器的功能單元之間的路徑互連以執(zhí)行應(yīng)用程序的信息。執(zhí)行文件930可包括由可重構(gòu)處理器中的各個功能單元在基于配置信息910的預(yù)定時間段期間基于具有固定結(jié)構(gòu)的功能單元執(zhí)行的指令。配置信息910和指令代碼可被彼此整合并被一起處理。例如,必須在一個時鐘周期中處理的配置信息和指令代碼可被以彼此相鄰的方式存儲在存儲器中,從而所述配置信息和指令代碼可被處理器同時提取。 在程序開發(fā)系統(tǒng)中,仿真器100可從編譯器/調(diào)度器300接收與調(diào)度有關(guān)的信息。 作為另一示例,調(diào)度信息可被存儲在存儲器900中,并可被仿真器100從存儲器900中讀取。作為示例,仿真器100可使用抽象體系結(jié)構(gòu)模型。如在此所述的,抽象體系結(jié)構(gòu)模型將功能單元之間的操作數(shù)路由路徑建模為隊(duì)列。抽象體系結(jié)構(gòu)可對在產(chǎn)生操作數(shù)的功能單元與消耗所述操作數(shù)的功能單元之間的路由路徑進(jìn)行建模,而不是使用實(shí)際互連邏輯的序列來表示操作數(shù)路由路徑。因此,由于極大地減小了在每個仿真周期中必須檢查操作的互連組件的數(shù)量,故可提高仿真速度。圖2示出具有仿真器的可重構(gòu)處理器的示例。如圖2所示,仿真器100包括處理器建模單元110和仿真單元130。處理器建模單元110通過將在產(chǎn)生操作數(shù)的功能單元與消耗所述操作數(shù)的功能單元之間的路由路徑表示為隊(duì)列來對處理器進(jìn)行建模。處理器建模單元110可基于關(guān)于功能單元之間的路由延遲的信息以及根據(jù)從調(diào)度器接收的模調(diào)度信息的迭代循環(huán)的階段信息來對處理器進(jìn)行建模。仿真單元130對從編譯器接收的二進(jìn)制文件進(jìn)行仿真。仿真單元130基于由處理器建模單元110產(chǎn)生的處理器模型113來對二進(jìn)制文件進(jìn)行仿真,并輸出仿真的結(jié)果。如圖2中示出的示例所示,處理器建模單元110和仿真單元130可以以程序來實(shí)現(xiàn)。另外,處理器模型113和/或體系結(jié)構(gòu)信息510可以是存儲在存儲器中的數(shù)據(jù)或數(shù)據(jù)結(jié)構(gòu)。在粗粒度可重構(gòu)體系結(jié)構(gòu)(CGRA)中,處理器具有的功能單元之間的互連邏輯是稀少的。結(jié)果,在體系結(jié)構(gòu)中存在的功能單元之間可能不存在在一個周期中對特定操作數(shù)進(jìn)行路由的直接路徑。因此,CGRA處理器通常使用兩個或更多互連組件對一個操作數(shù)進(jìn)行路由。例如,由特定功能單元產(chǎn)生的值可順序地通過寄存器文件、復(fù)用器、其它功能單元等, 以被路由到合適的功能單元。隨后,所述值可被傳送到消耗所述值的功能單元。CGRA處理器的調(diào)度器可在編譯時間期間確定在每個功能單元中必須置入哪個操作。此外,CGRA處理器可確定互連組件的哪條鏈必須被用于對操作之間的操作數(shù)進(jìn)行路由。如在此所述的,處理器模型113將功能單元之間的操作數(shù)路由路徑建模為隊(duì)列。 例如,處理器模型113可對在產(chǎn)生操作數(shù)的功能單元與消耗所述操作數(shù)的功能單元之間的路由路徑進(jìn)行建模,而不是使用互連邏輯的序列來尋址操作數(shù)路由路徑。例如,當(dāng)功能單元 Π在時間tl產(chǎn)生任意操作數(shù),并且隨后功能單元f2在時間t2消耗了所述任意操作數(shù)時, 隊(duì)列可被建模為將功能單元Π在時間tl的目的端口與功能單元f2在時間t2的源端口連接。圖4示出傳統(tǒng)體系結(jié)構(gòu)模型的示例。在圖4中,由虛線指示的區(qū)域是不存在有意義的操作數(shù)的區(qū)域,填充黑色的區(qū)域示出由功能單元Π產(chǎn)生的操作數(shù)的流,由實(shí)線指示的區(qū)域示出由功能單元f2產(chǎn)生的操作數(shù)的流。例如,功能單元fl到功能單元f4可以是算術(shù)
7邏輯單元(ALU),功能單元Ul可以是本地寄存器文件。在時間t,由功能單元fl產(chǎn)生的第一操作數(shù)到達(dá)功能單元fl的輸出緩沖器。在時間t+Ι,第一操作數(shù)到達(dá)功能單元ul的輸入緩沖器以被鎖存在功能單元ul的輸入緩沖器中,同時,由功能單元f2產(chǎn)生的第二操作數(shù)到達(dá)功能單元f2的輸出緩沖器。在時間t+2,由功能單元fl產(chǎn)生的第一操作數(shù)到達(dá)功能單元ul的輸出緩沖器以被鎖存在功能單元f4的左輸入緩沖器中,此外,由功能單元f2產(chǎn)生的第二操作數(shù)到達(dá)功能單元ul的功能緩沖器以被鎖存在功能單元ul的功能緩沖器中。在時間t+3,鎖存在功能單元ul中的操作數(shù)到達(dá)功能單元ul的輸出緩沖器并被鎖存在功能單元f4的右輸入緩沖器中。如該示例中所示,由功能單元fl在時間t產(chǎn)生的第一操作數(shù)經(jīng)由功能單元Ul在時間t+2到達(dá)功能單元f4,并準(zhǔn)備被消耗。由功能單元f2在時間t+Ι產(chǎn)生的第二操作數(shù)經(jīng)由功能單元ul在時間t+3到達(dá)功能單元f4,并準(zhǔn)備被消耗。因此,由功能單元f4在時間 t+3執(zhí)行這兩個操作數(shù)的操作。因此,由功能單元fl輸出的第一操作數(shù)到第一操作數(shù)在功能單元f4中被消耗為止需要三個時鐘周期,由功能單元f2輸出的第二操作數(shù)到該操作數(shù)在功能單元f4中被消耗為止需要兩個時鐘周期。也就是說,第一操作數(shù)在時間t+2準(zhǔn)備好被消耗,但是第一操作數(shù)直到第二操作數(shù)也準(zhǔn)備好被消耗的時間t+3才被消耗。圖5示出可應(yīng)用于處理器的建模方法的示例。在圖5中,功能單元fl到功能單元 f4的輸入緩沖器被省略,并且本地寄存器文件(圖4的ul)被建模為具有與延遲的程度相應(yīng)的時隙的隊(duì)列。操作數(shù)路由隊(duì)列存在的目的是僅傳送有意義的操作數(shù)。結(jié)果,仿真器僅將與有意義的操作數(shù)相應(yīng)的隊(duì)列認(rèn)為是用于對操作數(shù)進(jìn)行路由的互連組件。通過僅考慮有意義的操作數(shù),減小了每周期必須考慮的互連組件的數(shù)量,結(jié)果減小了仿真時間。如圖5所示,仿真器對包括四個功能單元的可重構(gòu)處理器陣列的處理進(jìn)行仿真。 然而,這僅是用于示例的目的??芍貥?gòu)處理器陣列可包括多個功能單元,例如,兩個單元、四個單元、八個單元、十二個單元、十六個單元、二十四個單元或更多。為了更新數(shù)據(jù)流圖以產(chǎn)生體系結(jié)構(gòu)模型,可使用關(guān)于如何將數(shù)據(jù)流圖映射到體系結(jié)構(gòu)的信息。例如,可從調(diào)度器提供所述信息。調(diào)度器可產(chǎn)生用于數(shù)據(jù)流上存在的組件的源操作和目的操作的調(diào)度信息,并可將所述調(diào)度信息提供到仿真器。用于CGRA處理器的調(diào)度可包括列表調(diào)度構(gòu)架和模調(diào)度構(gòu)架。例如,在列表調(diào)度構(gòu)架中,路由隊(duì)列可實(shí)施為緩沖器。也就是說,可通過允許產(chǎn)生操作數(shù)的組件在產(chǎn)生值時將所述值寫入緩沖器并允許消耗操作數(shù)的組件在消耗所述值時從緩沖器讀取所述值,來實(shí)施路由隊(duì)列。模調(diào)度與軟件流水線(software pipelining)相應(yīng)。模調(diào)度具有用于使循環(huán)的不同迭代交錯的指令調(diào)度的形式。軟件流水線通過重疊(overlap)循環(huán)的不同迭代的執(zhí)行來提高性能。迭代可在先前迭代完成之前開始執(zhí)行。迭代開始的間隔稱為啟動間隔。軟件流水線優(yōu)化的一個目的是找到重疊迭代并使用最短的可行啟動間隔的調(diào)度。模調(diào)度構(gòu)架可產(chǎn)生在重疊的同時執(zhí)行多個循環(huán)迭代的重疊調(diào)度。在產(chǎn)生的調(diào)度中,迭代被劃分為多個階段,每個階段具有與啟動間隔相應(yīng)的執(zhí)行周期。在每個啟動間隔周期中,與來自不同循環(huán)迭代的不同階段相應(yīng)的操作以重疊方式被調(diào)度。結(jié)果,對于模調(diào)度構(gòu)架,調(diào)度被產(chǎn)生以在每個啟動間隔重復(fù)地執(zhí)行包括在不同迭代中的相同操作。由于循環(huán)的迭代被重疊,所以如果由操作數(shù)路由路徑消耗的周期的數(shù)量超過啟動間隔,則隊(duì)列中包含的值會在消耗所述值的組件可獲得所述值之前被復(fù)寫并會消失。圖6示出具有CGRA處理器的模調(diào)度的示例。圖7示出當(dāng)圖6的CGRA處理器執(zhí)行由四個階段構(gòu)成的迭代循環(huán)時,單獨(dú)的功能單元Π到f4的處理流程。圖6中所示的四個功能單元Π到f4的每一個負(fù)責(zé)執(zhí)行構(gòu)成迭代的一個階段,并且四個功能單元Π到f4的每一個基于軟件流水線執(zhí)行處理以處理從先前階段接收的數(shù)據(jù)并隨后將處理的數(shù)據(jù)輸出到下一階段。參照圖7,在時間t,功能單元fl處理第一迭代循環(huán)的第一階段,功能單元f2、f3 和f4等待來自先前步驟的處理結(jié)果。在時間t+Ι,功能單元Π處理第二迭代循環(huán)的第一階段,功能單元f2從功能單元Π接收對第一迭代循環(huán)的第一階段的處理結(jié)果并處理第一迭代循環(huán)的第二階段,功能單元f3和f4繼續(xù)等待來自先前步驟的處理結(jié)果。在時間t+2,功能單元Π處理第三迭代循環(huán)的第一階段,功能單元f2從功能單元Π接收對第二迭代循環(huán)的第一階段的處理結(jié)果并處理第二迭代循環(huán)的第二階段,功能單元f3從功能單元f2接收對第一迭代循環(huán)的第二階段的處理結(jié)果并處理第一迭代循環(huán)的第三階段,功能單元f4繼續(xù)等待來自先前步驟的處理結(jié)果。在時間t+3,功能單元fl處理第四迭代循環(huán)的第一階段, 功能單元f2從功能單元f 1接收對第三迭代循環(huán)的第一階段的處理結(jié)果并處理第三迭代循環(huán)的第二階段,功能單元f3從功能單元f2接收對第二迭代循環(huán)的第二階段的處理結(jié)果并處理第二迭代循環(huán)的第三階段,功能單元f4從功能單元f3接收對第一迭代循環(huán)的第三階段的處理結(jié)果并處理第一迭代循環(huán)的第四階段。在圖7示出的示例中,每個時鐘周期與啟動間隔相應(yīng)。第一時鐘周期與第一啟動間隔相應(yīng),第二時鐘周期與第二啟動間隔相應(yīng),第三時鐘周期與第三啟動間隔相應(yīng),第四時鐘周期與第四啟動間隔相應(yīng)。因此,如果當(dāng)使用根據(jù)當(dāng)前示例的處理器模型對在模調(diào)度構(gòu)架中產(chǎn)生的結(jié)果進(jìn)行仿真時,路由隊(duì)列被實(shí)施為單個緩沖器,并且如果由操作數(shù)路由路徑消耗的周期的數(shù)量超過啟動間隔,則隊(duì)列中包含的值會在消耗所述值的組件可獲得所述值之前被復(fù)寫并消失。 這是由于產(chǎn)生所述操作數(shù)的組件每啟動間隔將新值寫入路由隊(duì)列。如在此所述,由處理器建模單元110(在圖2中示出)定義的隊(duì)列具有多個時隙, 所述多個時隙相應(yīng)于相應(yīng)路由路徑上的路由延遲與階段的啟動間隔的比率。仿真單元 130(在圖2中示出)可將在每個功能單元中產(chǎn)生的操作數(shù)寫入到相應(yīng)隊(duì)列的第一時隙,并可在每個啟動間隔將記錄在每個時隙中的信息移動到下一時隙。例如,當(dāng)在模調(diào)度構(gòu)架中執(zhí)行仿真時,路由隊(duì)列可被實(shí)施為與上限值(ceiling value)相應(yīng)的數(shù)量同樣多的時隙。例如,可通過以啟動間隔劃分路由延遲來確定上限值。路由隊(duì)列在每個啟動間隔將記錄在時隙中的值移動到下一時隙,并且消耗操作數(shù)的組件讀取路由隊(duì)列的最終時隙中記錄的值。圖8示出可應(yīng)用于模調(diào)度的結(jié)果的處理器模型113的示例。在本示例中,啟動間隔已經(jīng)被調(diào)度為兩個周期。由于圖8中示出的兩個操作數(shù)均具有大于啟動間隔的路由延遲, 故與每個操作數(shù)相應(yīng)的路由隊(duì)列被劃分為兩個時隙。如上所述,由于功能單元在每個啟動間隔產(chǎn)生新值,故當(dāng)啟動間隔過去時仿真單元130將先前產(chǎn)生的值移動到相應(yīng)的路由隊(duì)列的下一時隙。這樣,通過管理用于每個操作數(shù)的路由隊(duì)列,仿真單元130可對用于模調(diào)度的結(jié)果的操作進(jìn)行建模。圖3示出具有仿真器的可重構(gòu)處理器的另一示例。參照圖3,仿真器100還可包括存儲用于路由隊(duì)列的操作的面向主機(jī)的二進(jìn)制代碼的建模代碼數(shù)據(jù)庫(DB) 131。在本示例中,仿真單元130可讀取二進(jìn)制文件900,并可從建模代碼DB 131提取與二進(jìn)制文件900 相應(yīng)的面向主機(jī)的二進(jìn)制代碼以執(zhí)行該面向主機(jī)的二進(jìn)制代碼,從而執(zhí)行仿真。作為另一示例,仿真器100可通過從提取自建模代碼DB 131的面向主機(jī)的二進(jìn)制代碼重構(gòu)路由隊(duì)列的互連來執(zhí)行仿真。在圖3所示的示例中,調(diào)度器330、處理器建模單元110、體系結(jié)構(gòu)信息 510和處理器模型113與圖2中示出的具有相同標(biāo)號的元件相應(yīng)。二進(jìn)制翻譯可被用于通過將針對仿真器的目標(biāo)機(jī)的二進(jìn)制指令替換為執(zhí)行與目標(biāo)機(jī)等同操作的主機(jī)的二進(jìn)制代碼來提高仿真速度。因此,替換的主機(jī)的二進(jìn)制代碼可在對等同代碼塊進(jìn)行仿真時被執(zhí)行。與從指令存儲器讀取相應(yīng)于由程序計(jì)數(shù)器指示的地址的值并執(zhí)行相應(yīng)的操作的通用處理器相似,CGRA處理器可在每個周期從配置存儲器的特定地址讀取配置信息,以執(zhí)行由用于每個組件的相應(yīng)周期的配置信息所指示的操作。例如,可對配置存儲器的每個地址產(chǎn)生用于配置信息的主機(jī)二進(jìn)制代碼。隨后,當(dāng)對存在于配置存儲器的相同地址的配置信息的仿真被執(zhí)行時,可使用先前產(chǎn)生的二進(jìn)制代碼來執(zhí)行所述仿真。在圖3示出的示例中,將二進(jìn)制翻譯技術(shù)應(yīng)用于處理器模型113。例如,存儲對路由隊(duì)列的操作進(jìn)行建模的二進(jìn)制代碼(而不是產(chǎn)生主機(jī)二進(jìn)制代碼)以表示實(shí)際存在于處理器體系結(jié)構(gòu)上的互連邏輯的運(yùn)轉(zhuǎn)行為。在本示例中,可存儲對路由隊(duì)列的操作進(jìn)行建模的二進(jìn)制代碼,而不是存儲與存在于實(shí)際處理器體系結(jié)構(gòu)中的互連邏輯的運(yùn)轉(zhuǎn)行為有關(guān)的主機(jī)二進(jìn)制代碼。例如,操作被映射到數(shù)據(jù)流圖的組件可被描述為使用路由隊(duì)列,而不是被描述為通過互連邏輯來交換產(chǎn)生的值或消耗的值。同時,對于路由隊(duì)列的操作,所有需要被建模的是每當(dāng)啟動間隔過去時存在于路由隊(duì)列中的值到下一的時隙的移動,這引起二進(jìn)制翻譯的簡單應(yīng)用。在圖3示出的示例中,建模代碼DB 131可存儲與配置存儲器的每個地址相應(yīng)的用于配置信息的主機(jī)二進(jìn)制代碼。配置信息是描述數(shù)據(jù)流圖上的組件之間的路由隊(duì)列的操作的信息。仿真單元130可基于從建模代碼DB 131讀取的主機(jī)二進(jìn)制代碼來重構(gòu)處理器模型113,并可從二進(jìn)制文件900讀取執(zhí)行文件以基于重構(gòu)的處理器模型113執(zhí)行仿真。可將抽象體系結(jié)構(gòu)模型認(rèn)為是通過對實(shí)際體系結(jié)構(gòu)進(jìn)行建模而得到的體系結(jié)構(gòu)圖和數(shù)據(jù)流圖。在抽象體系結(jié)構(gòu)模型中,存在于數(shù)據(jù)流圖上的每個邊緣(edge)可被建模為隊(duì)列。例如,在實(shí)際體系結(jié)構(gòu)中保持?jǐn)?shù)據(jù)流圖的節(jié)點(diǎn)被映射到組件(諸如,功能單元、常量單元(constant unit)等)的同時,抽象體系結(jié)構(gòu)模型可用于將數(shù)據(jù)流圖的邊緣被映射到的組件抽象為隊(duì)列。通過這樣做,對應(yīng)用的操作具有較少影響或沒有影響的互連組件可被移除,并且用于對與數(shù)據(jù)流邊緣相應(yīng)的操作數(shù)進(jìn)行路由的互連組件的序列可被簡化。通過上述示例可看出,對可重構(gòu)處理器進(jìn)行仿真的方法包括通過將功能單元之間的路由路徑表示為隊(duì)列來對處理器進(jìn)行建模的操作。所述建模操作可根據(jù)從調(diào)度器接收的模調(diào)度,基于關(guān)于功能單元之間的路由延遲的信息和迭代循環(huán)的階段信息來對產(chǎn)生操作數(shù)的功能單元和消耗所述操作數(shù)的功能單元的路徑進(jìn)行路由??苫谔幚砥鹘V挟a(chǎn)生的處理器模型執(zhí)行從編譯器接收的二進(jìn)制文件的仿真,并可輸出仿真的結(jié)果。在處理器建模中定義的隊(duì)列可具有多個時隙,所述多個時隙相應(yīng)于相應(yīng)路由路徑上的路由延遲與階段的啟動間隔的比率。在每個仿真操作中,可將在每個功能單元中產(chǎn)生的操作數(shù)寫入到相應(yīng)隊(duì)列的第一時隙,并可在每個啟動間隔將寫入到每個時隙中的信息移動到鄰近時隙。階段信息包括迭代的階段劃分信息以及關(guān)于分配到單獨(dú)的階段的功能單元、產(chǎn)生操作數(shù)的功能單元與消耗所述操作數(shù)的功能單元之間的關(guān)系的信息。此外,從編譯器接收的二進(jìn)制文件可包括配置文件和執(zhí)行文件。根據(jù)另一示例,在仿真操作中,可通過讀取二進(jìn)制文件并執(zhí)行從存儲用于路由隊(duì)列的操作的面向主機(jī)的二進(jìn)制代碼的建模代碼DB提取的與二進(jìn)制文件相應(yīng)的面向主機(jī)的二進(jìn)制代碼,來執(zhí)行仿真。上述處理、功能、方法和/或軟件可在包括程序指令的一個或多個計(jì)算機(jī)可讀存儲介質(zhì)中被記錄、存儲或固定,其中,所述程序指令將由計(jì)算機(jī)執(zhí)行以使處理器運(yùn)行或執(zhí)行所述程序指令。所述介質(zhì)還可單獨(dú)包括數(shù)據(jù)文件、數(shù)據(jù)結(jié)構(gòu)等或者包括它們與程序指令的組合。計(jì)算機(jī)可讀存儲介質(zhì)的示例包括磁介質(zhì)(諸如,硬盤、軟盤和磁帶)、光介質(zhì)(諸如, CD-ROM盤和DVD)、磁光介質(zhì)(諸如,光盤)和專門配置用于存儲和執(zhí)行程序指令的硬件裝置(諸如,只讀存儲器(ROM)、隨機(jī)存取存儲器(RAM)、閃存等)。程序指令的示例包括機(jī)器碼(諸如,由編譯器產(chǎn)生)和包含可由計(jì)算機(jī)使用解釋器執(zhí)行的更高級代碼的文件。所述硬件裝置可被配置作為一個或多個軟件模塊以執(zhí)行上述操作和方法,反之亦然。此外,計(jì)算機(jī)可讀存儲介質(zhì)可被分布在通過網(wǎng)絡(luò)連接的計(jì)算機(jī)系統(tǒng),計(jì)算機(jī)可讀代碼或程序指令可以分散方式存儲和執(zhí)行。僅作為非窮盡描述,在此描述的終端裝置可表示能夠執(zhí)行與在此公開的內(nèi)容一致的無線通信或網(wǎng)絡(luò)通信的移動裝置(諸如,蜂窩式電話、個人數(shù)字助理(PDA)、數(shù)碼相機(jī)、便攜式游戲機(jī)、MP3播放機(jī)、便攜式/個人多媒體播放機(jī)(PMP)、手持電子書、便攜式膝上型個人計(jì)算機(jī)(PC)、全球定位系統(tǒng)(GPS)導(dǎo)航儀)和裝置(諸如,臺式PC、高清晰度電視(HDTV)、 光盤播放機(jī)、機(jī)頂盒)等。計(jì)算系統(tǒng)或計(jì)算機(jī)可包括電連接到總線、用戶接口和存儲器控制器的微處理器。 計(jì)算系統(tǒng)或計(jì)算機(jī)還可包括閃存裝置。閃存裝置可經(jīng)由存儲器控制器存儲N位數(shù)據(jù)。N位數(shù)據(jù)被微處理器處理或?qū)⒈晃⑻幚砥魈幚?,N可以是1或大于1的整數(shù)。當(dāng)計(jì)算系統(tǒng)或計(jì)算機(jī)是移動設(shè)備時,可另外提供電池以供應(yīng)計(jì)算系統(tǒng)或計(jì)算機(jī)的操作電壓。本領(lǐng)域的普通技術(shù)人員所清楚的是,計(jì)算系統(tǒng)或計(jì)算機(jī)還可包括應(yīng)用芯片組、相機(jī)圖像處理器(CIS)、移動動態(tài)隨機(jī)存取存儲器(DRAM)等。存儲器控制器和閃存裝置可構(gòu)成使用非易失性存儲器存儲數(shù)據(jù)的固態(tài)驅(qū)動器/盤(SSD)。以上已經(jīng)描述了一些示例。然而,應(yīng)該理解可做出各種修改。例如,如果以不同順序執(zhí)行所述技術(shù)和/或如果以不同方式組合所述系統(tǒng)、體系結(jié)構(gòu)、裝置或電路中的組件和/ 或通過其它組件或等同物代替或補(bǔ)充所述系統(tǒng)、體系結(jié)構(gòu)、裝置或電路中的組件,則會得到合適的結(jié)果。因此,其它實(shí)施方式落入權(quán)利要求的范圍內(nèi)。
權(quán)利要求
1.一種可重構(gòu)處理器的仿真器,包括處理器建模單元,用于產(chǎn)生包括表示在產(chǎn)生操作數(shù)的功能單元與消耗所述操作數(shù)的功能單元之間的路由路徑的隊(duì)列的處理器模型,其中,處理器模型基于功能單元之間的路由延遲以及根據(jù)模調(diào)度的迭代循環(huán)的階段信息;和仿真單元,用于基于由處理器建模單元產(chǎn)生的處理器模型來對從編譯器接收的二進(jìn)制文件進(jìn)行仿真,并輸出仿真的結(jié)果。
2.如權(quán)利要求1所述的仿真器,其中,由處理器建模單元表示的隊(duì)列具有多個時隙,所述多個時隙相應(yīng)于路由路徑上的路由延遲與階段的啟動間隔的比率。
3.如權(quán)利要求2所述的仿真器,其中,仿真單元將在每個功能單元中產(chǎn)生的操作數(shù)寫入到相應(yīng)隊(duì)列的第一時隙,并在每個啟動間隔將寫入到每個時隙中的信息移動到下一時隙。
4.如權(quán)利要求1所述的仿真器,其中,從編譯器接收的二進(jìn)制文件包括配置文件和執(zhí)行文件。
5.如權(quán)利要求1所述的仿真器,還包括建模代碼數(shù)據(jù)庫,存儲用于路由隊(duì)列的操作的面向主機(jī)的二進(jìn)制代碼,其中,仿真單元通過從提取自建模代碼數(shù)據(jù)庫的面向主機(jī)的二進(jìn)制代碼重構(gòu)路由隊(duì)列的互連來執(zhí)行仿真。
6.一種可重構(gòu)處理器的仿真方法,包括產(chǎn)生包括表示在產(chǎn)生操作數(shù)的功能單元與消耗所述操作數(shù)的功能單元之間的路由路徑的隊(duì)列的處理器模型,其中,處理器模型基于功能單元之間的路由延遲以及根據(jù)模調(diào)度的迭代循環(huán)的階段信息;以及基于產(chǎn)生的處理器模型來對從編譯器接收的二進(jìn)制文件進(jìn)行仿真,并輸出仿真的結(jié)^ ο
7.如權(quán)利要求6所述的仿真方法,其中,在產(chǎn)生處理器模型的步驟中表示的隊(duì)列具有多個時隙,所述多個時隙相應(yīng)于路由路徑上的路由延遲與階段的啟動間隔的比率。
8.如權(quán)利要求7所述的仿真方法,其中,對二進(jìn)制文件進(jìn)行仿真的步驟包括將在每個功能單元中產(chǎn)生的操作數(shù)寫入到相應(yīng)隊(duì)列的第一時隙,并在每個啟動間隔將寫入到每個時隙中的信息移動到鄰近時隙。
9.如權(quán)利要求6所述的仿真方法,其中,階段信息包括迭代的階段劃分信息以及關(guān)于分配到單獨(dú)的階段的功能單元、產(chǎn)生操作數(shù)的功能單元與消耗所述操作數(shù)的功能單元之間的關(guān)系的信息。
10.如權(quán)利要求6所述的仿真方法,其中,從編譯器接收的二進(jìn)制文件包括配置文件和執(zhí)行文件。
11.如權(quán)利要求6所述的仿真方法,其中,對二進(jìn)制文件進(jìn)行仿真的步驟包括通過以下處理來執(zhí)行仿真讀取二進(jìn)制文件、從存儲用于路由隊(duì)列的操作的面向主機(jī)的二進(jìn)制代碼的建模代碼數(shù)據(jù)庫提取與所述二進(jìn)制文件相應(yīng)的面向主機(jī)的二進(jìn)制代碼以及執(zhí)行所述面向主機(jī)的二進(jìn)制代碼。
12.—種可重構(gòu)處理器的仿真器,包括處理器建模單元,用于產(chǎn)生表示在產(chǎn)生操作數(shù)的功能單元與消耗所述操作數(shù)的功能單元之間的路由路徑的抽象體系結(jié)構(gòu)模型,其中,抽象體系結(jié)構(gòu)模型基于功能單元之間的路由延遲以及根據(jù)模調(diào)度的迭代循環(huán)的階段信息;和仿真單元,用于基于由處理器建模單元產(chǎn)生的抽象體系結(jié)構(gòu)模型來對二進(jìn)制文件進(jìn)行仿真,并輸出仿真的結(jié)果。
13.如權(quán)利要求12所述的仿真器,其中,二進(jìn)制文件包括配置信息,所述配置信息包括關(guān)于如何映射可重構(gòu)處理器的功能單元以執(zhí)行特定應(yīng)用程序的信息。
14.如權(quán)利要求12所述的仿真器,其中,二進(jìn)制文件包括執(zhí)行文件,所述執(zhí)行文件包括由可重構(gòu)處理器中的各個功能單元在預(yù)定時間段期間基于具有固定結(jié)構(gòu)的功能單元所執(zhí)行的指令。
15.如權(quán)利要求12所述的仿真器,其中,抽象體系結(jié)構(gòu)模型包括將產(chǎn)生操作數(shù)的功能單元映射到消耗所述操作數(shù)的功能單元的隊(duì)列。
16.如權(quán)利要求15所述的仿真器,其中,功能單元fl在時間tl產(chǎn)生操作數(shù),隊(duì)列將功能單元Π的目的端口與消耗所述操作數(shù)的功能單元f2的源端口連接。
17.如權(quán)利要求12所述的仿真器,其中,處理器建模單元基于功能單元的調(diào)度信息更新抽象體系結(jié)構(gòu)模型,所述調(diào)度信息被從調(diào)度器接收。
全文摘要
提供了一種用于對可重構(gòu)處理器進(jìn)行仿真的設(shè)備和方法。提供了一種用于估計(jì)執(zhí)行應(yīng)用程序的處理器的性能的處理器仿真技術(shù)。所述處理器仿真技術(shù)可用于優(yōu)化應(yīng)用程序的執(zhí)行。包括多個功能單元的可重構(gòu)處理器的仿真器通過表示在產(chǎn)生操作數(shù)的功能單元與消耗所述操作數(shù)的功能單元之間的路由路徑來對處理器進(jìn)行建模。可基于關(guān)于功能單元之間的路由延遲的信息和根據(jù)從調(diào)度器接收的模調(diào)度的迭代循環(huán)的階段信息來決定每個隊(duì)列的大小。還提供了一種存儲用于路由隊(duì)列的操作的面向主機(jī)的二進(jìn)制代碼的建模代碼DB??赏ㄟ^執(zhí)行與二進(jìn)制文件相應(yīng)的面向主機(jī)的二進(jìn)制代碼而不是執(zhí)行二進(jìn)制文件來執(zhí)行所述仿真。
文檔編號G06F11/36GK102207904SQ20111008995
公開日2011年10月5日 申請日期2011年3月31日 優(yōu)先權(quán)日2010年3月31日
發(fā)明者吳泰煜, 徐雄, 曹暎喆, 樸日鉉, 柳秀晶, 金潤進(jìn) 申請人:三星電子株式會社