專利名稱:操作數(shù)據(jù)結(jié)構(gòu)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明總體上涉及數(shù)據(jù)處理。
背景技術(shù):
當(dāng)前,多個趨勢影響服務(wù)器類型和大型機計算機系統(tǒng)的開發(fā)。尤其是,根據(jù)Moore 定律,集成電路內(nèi)部的晶體管密度繼續(xù)增加,在其當(dāng)前形勢下,假定在集成電路上每單位區(qū)域的晶體管的數(shù)量將在大約每18個月翻一番。此外,處理器頻率持續(xù)在大約每2年則翻一番。再者,系統(tǒng)規(guī)模(也即,系統(tǒng)中的中央處理單元(CPU)的數(shù)量)持續(xù)增長至數(shù)十、數(shù)百, 而在某些情況下,甚至達(dá)到數(shù)千個處理器。這些趨勢的結(jié)果是,服務(wù)器類型和大型機計算機系統(tǒng)的峰值性能已經(jīng)越來越快。在近些年來,已經(jīng)開發(fā)的大型高性能計算(HPC)系統(tǒng)聲稱, 峰值性能的數(shù)量級是數(shù)百TFLOPS (每秒萬億次浮點運算)。遺憾的是,在高性能計算系統(tǒng)中,持久性能沒有以峰值性能的節(jié)奏改進,并且雖然實際上持久性能相對于峰值性能的比率目前較低(例如,1 10),該比率大體上在下降。對于此類未被利用的可用計算能力,現(xiàn)在已經(jīng)投入了大量關(guān)注以便實現(xiàn)更強的持久性能。
發(fā)明內(nèi)容
本發(fā)明指出,如果加速數(shù)據(jù)處理系統(tǒng)的一個或者多個處理器內(nèi)地址的生成被加速,則可以實現(xiàn)更強的性能(以及更強的持久性能-峰值性能比)。在一個實施方式中,處理器包括至少一個執(zhí)行單元,用于執(zhí)行指令;指令序列單元,用于獲取由至少一個執(zhí)行單元執(zhí)行的指令;操作數(shù)據(jù)結(jié)構(gòu),標(biāo)識將由處理器執(zhí)行的一個或者多個迭代操作;以及計算引擎,響應(yīng)于來自指令序列單元的發(fā)起信號,訪問操作數(shù)據(jù)結(jié)構(gòu),并執(zhí)行由操作數(shù)據(jù)結(jié)構(gòu)標(biāo)識的一個或者多個迭代的操作之一。
現(xiàn)在將參見附圖,僅借助于示例描述本發(fā)明的實施方式,在附圖中圖1是根據(jù)本發(fā)明一個實施方式的數(shù)據(jù)處理系統(tǒng)的高級框圖;圖2是來自圖1的處理單元的高級框圖;圖3是來自圖2的處理器核的更詳細(xì)的框圖;圖4是一個示例性過程的高級框圖,該圖示出了輔助由圖3的浮點單元(FDU)進行的浮點指令執(zhí)行的步驟;圖5是圖3的塊計算引擎(BCE)的示例性實施方式的更詳細(xì)的框圖;圖6A繪出了圖5的操作數(shù)數(shù)據(jù)結(jié)構(gòu)的一個示例性實施方式;圖6B繪出了圖5的操作數(shù)據(jù)結(jié)構(gòu)的一個示例性實施方式;圖7是繪出來自處理后代碼(諸如目標(biāo)代碼)的預(yù)處理代碼(諸如源代碼)的生成、以及支持代碼塊處理的相關(guān)聯(lián)操作數(shù)和操作數(shù)據(jù)結(jié)構(gòu)的處理流程圖;以及圖8是根據(jù)本發(fā)明一個實施方式的塊驅(qū)動計算的示例性方法的高級邏輯流程圖。
具體實施例方式現(xiàn)在參見附圖尤其是參見圖1,其中示出了根據(jù)本發(fā)明的多處理器數(shù)據(jù)處理系統(tǒng)的一個示例性實施方式的高級框圖。如所示出,數(shù)據(jù)處理系統(tǒng)100包括多個處理節(jié)點102a、 102b用于處理數(shù)據(jù)和指令。處理節(jié)點102a、102b耦合至系統(tǒng)互聯(lián)110用于轉(zhuǎn)換地址、數(shù)據(jù)和控制信息。系統(tǒng)互聯(lián)110例如可以實現(xiàn)為總線連接的互聯(lián)、交換機連接的互聯(lián)或者混合互聯(lián)在繪出的實施方式中,每個處理節(jié)點102實現(xiàn)為包括4個處理單元l(Ma-104d的多芯片模塊(MCM),每個處理單元104a-104d優(yōu)選地實現(xiàn)為相應(yīng)的集成電路。每個處理節(jié)點 102內(nèi)的處理單元104a-104d被耦合用于由本地互聯(lián)114通信,其例如系統(tǒng)互聯(lián)110,可以以一個或者多個總線和/或交換機實現(xiàn)。耦合至每個本地互聯(lián)114的設(shè)備不但包括處理單元104,還包括一個或者多個系統(tǒng)存儲器108a-108d。駐留在系統(tǒng)存儲器108中的數(shù)據(jù)和指令通常可以由處理器核200 (圖 2)來訪問和修改,該處理器核200在數(shù)據(jù)處理系統(tǒng)100的任何處理節(jié)點102的任何處理單元104中。在本發(fā)明的備選實施方式中,一個或者多個系統(tǒng)存儲器108可以耦合至系統(tǒng)互聯(lián)110而不是本地互聯(lián)114。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,數(shù)據(jù)處理系統(tǒng)100可以包括多個附加的未示出組件, 諸如外圍設(shè)備、互聯(lián)橋接設(shè)備、非易失性存儲器、用于連接至網(wǎng)絡(luò)或者附接設(shè)備的端口等。 由于此類附加組件不是理解本發(fā)明所必須的,在圖1中未示出這些組件,在此也未作進一步討論。然而,還應(yīng)當(dāng)理解,由本發(fā)明提供的增強適用于各種架構(gòu)的數(shù)據(jù)處理系統(tǒng),并且并不意在限制于在圖1中示出的概括的數(shù)據(jù)處理系統(tǒng)架構(gòu)。現(xiàn)在參見圖2,繪出了根據(jù)本發(fā)明實施方式的一個示例性處理單元104的更詳細(xì)的框圖。在繪出的實施方式中,每個處理單元104包括多個(例如,2個)處理器核200a、 200b用于獨立地處理指令和數(shù)據(jù)。每個處理器核200的操作由多級易失性存儲器層級支持,該多級易失性存儲器層級具有最低級別共享系統(tǒng)存儲器108a-108d,以及在其較高層級是高速緩沖存儲器的一個或者多個級別。在繪出的實施方式中,每個處理單元104包括集成存儲器控制器(IMC) 206,該集成存儲器控制器(IMC) 206響應(yīng)于從處理器核200a-200b 接收的請求和在本地互聯(lián)114上窺探到的操作,控制對其處理節(jié)點102內(nèi)部的系統(tǒng)存儲器 108a-108d中相應(yīng)的一個的讀訪問和寫訪問。在示意性實施方式中,處理器單元104的高速緩沖存儲器層級包括每個處理器核 200內(nèi)的直存(store-through)級別1 (Li)高速緩存、以及由處理器單元104的全部存儲器核200a、200b共享的級別2 (L2)高速緩存230。L2高速緩存230包括L2陣列和目錄234, 以及包括管理器(master) 232和窺探器236的高速緩存控制器。管理器232響應(yīng)于從相關(guān)聯(lián)的存儲器核200a-200b接收的存儲器訪問(和其他)請求,發(fā)起本地互聯(lián)114和系統(tǒng)互聯(lián)110上的事務(wù),并且訪問L2陣列和目錄234。窺探器236窺探本地互聯(lián)114上的操作,提供適當(dāng)響應(yīng)并對L2陣列和目錄234執(zhí)行操作所需的任何訪問。盡管示出的高速緩存層級僅包括兩級高速緩存,但本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,備選實施方式可以包括片上或者片下內(nèi)聯(lián)、或者后備高速緩存的附加的級別(L3、L4等),這可以是全部包括、部分包括或者不包括較高級別高速緩存的內(nèi)容。此外,高速緩存層級的各種級別中的任一項對于特定存儲器核200可以是私有的,或者由多個處理器核200共享。仍然參見圖2,每個處理器單元104進一步包括響應(yīng)邏輯210的實例,其實現(xiàn)分布式的、基于窺探的一致性信令機制的部分,該機制維護數(shù)據(jù)處理系統(tǒng)100內(nèi)的高速緩存的一致性。另外,每個處理單元104包括轉(zhuǎn)發(fā)邏輯212的實例,用于在其本地互聯(lián)114和系統(tǒng)互聯(lián)110之間選擇性地轉(zhuǎn)發(fā)通信。最終,每個處理單元104包括集成1/0(輸入/輸出)控制器214,其支持附接一個或者多個I/O設(shè)備(諸如I/O設(shè)備216)。I/O控制器214可以響應(yīng)于I/O設(shè)備216的請求而發(fā)出對本地互聯(lián)114和/或系統(tǒng)互聯(lián)110的操作?,F(xiàn)在參見圖3,示出了來自圖2的處理器核200之一的更詳細(xì)框圖。如所示出,處理器核200包括分叉的級別I(Ll)指令和數(shù)據(jù)高速緩存302和304,其臨時地分別緩存指令和操作數(shù)數(shù)據(jù),這類似于由處理器核200訪問。另外,處理器核200具有指令序列單元 (ISU) 306,該指令序列單元(ISU) 306利用真實地址從Ll I高速緩存302獲取指令,該真實地址是通過指令存儲器管理單元(IMMU) 308執(zhí)行的有效-真實地址轉(zhuǎn)換(ERAT)獲取的。如本領(lǐng)域技術(shù)人員所理解,ISU 306可以要求獲取(例如,非投機地(non-speculatively)獲取)執(zhí)行的一個或者多個有效線程內(nèi)的指令,或者投機獲取可用被最終執(zhí)行或者不被最終執(zhí)行的指令。在任一情況下,如果請求的指令集沒有駐留在Ll I高速緩存302中,則ISU 306經(jīng)由I高速緩存重載總線310從L2高速緩存230 (和/或較低級別存儲器)請求相關(guān)指令集。由ISU 306獲取的指令初始在ISU 306內(nèi)緩存,并且可以被預(yù)處理例如用以利用微代碼翻譯指令或者執(zhí)行分支預(yù)測。ISU 306分配由特定指令所需的資源并且繼而向執(zhí)行單元(諸如,執(zhí)行單元320-328)分派指令,基于指令類型該分派可能以不同于程序順序的順序進行。由此,條件寄存器修改指令和分支指令被分別分派至條件寄存器單元(CRU) 320 和分支執(zhí)行單元(BEU)322,定點指令和加載/存儲指令被分被分派至定點單元(FXU)3M和加載-存儲單元(LSU) 326,而浮點指令被分派至浮點單元(FPU)328。當(dāng)然,還可以實現(xiàn)一個或者多個其他類型的執(zhí)行單元(諸如,矢量執(zhí)行單元)和一個或者多個類型的寄存器文件(例如,矢量寄存器文件)。在可能的排隊和緩存之后,由執(zhí)行單元320-3 依機會執(zhí)行或者依順序執(zhí)行所分派的指令。在執(zhí)行單元320-3 之一的執(zhí)行期間,指令可以接收操作數(shù),如果存在的話,從耦合到執(zhí)行單元的寄存器文件330-334內(nèi)的一個或者多個架構(gòu)化的和/或重命名寄存器接收。如果存在的話,指令執(zhí)行(也即,目的地操作數(shù))的數(shù)據(jù)結(jié)果類似地由執(zhí)行單元320-328 寫入寄存器文件330-334。例如,F(xiàn)XU 3M接收從通用寄存器文件(GPRF) 332接收操作數(shù), 并向其存儲目的地操作數(shù);而FPU 3 從浮點寄存器文件(FPRF) 334接收輸入操作數(shù),并向其存儲目的地操作數(shù)。LSU 3 類似地從GPRF 332接收輸入操作數(shù),計算目的地有效地址, 并且通過遵循數(shù)據(jù)存儲器管理單元(DMMU) 340進行的有效地址至真實地址翻譯,使得數(shù)據(jù)在Ll D高速緩存304與GPRF 332和FPRF 334兩者之間傳輸。類似地,當(dāng)執(zhí)行條件寄存器修改或者條件寄存器依賴的指令時,CRU 320和BEU 322訪問控制寄存器文件(CRF) 330, 其中每個例如可以包括條件寄存器、鏈接寄存器、計數(shù)寄存器和重命名寄存器。BEU 322訪問條件寄存器、鏈接寄存器和計數(shù)寄存器的值,以求解獲得路徑地址的條件分支,其中BEU 322供給指令序列單元306,以發(fā)起沿著所指示路徑進行指令獲取。在執(zhí)行單元完成指令執(zhí)行之后,執(zhí)行單元通知ISU 306,該ISU 306調(diào)度指令的完成。
處理器核200還可選地但優(yōu)選地包括數(shù)據(jù)預(yù)獲取單元(DPFU) 328,其投機地在需求之前預(yù)獲取數(shù)據(jù)。也即,基于最近觀察到的存儲器訪問模式,DPFU 3 向L2高速緩存230 或者較低級別存儲器提供投機性數(shù)據(jù)獲取地址,以便取回可能由處理器核200訪問的數(shù)據(jù)到Ll D高速緩存304中。以此方式,平均數(shù)據(jù)訪問延遲可以得到改進。如從處理器核200的操作的先前描述中所見,執(zhí)行單元320-3 對指令的執(zhí)行通常遵循普通模式。作為此模式的示例,考慮到輔助執(zhí)行浮點指令的步驟,在圖4繪出的高級邏輯流程圖中概括了這些步驟。圖4中繪出的過程開始于塊400(在指令流執(zhí)行中的任意點處),繼而前進至塊 402。塊402示出了 3M執(zhí)行一個或者多個定點指令以確定后續(xù)在塊406處執(zhí)行的浮點指令的一個或者多個源操作數(shù)的有效地址。隨著執(zhí)行,F(xiàn)XU 3 在GPRF 332中的一個或者多個 GI3R中存儲源操作數(shù)的有效地址。接著,在塊404處,LSU 3 執(zhí)行浮點加載指令。在浮點加載指令的執(zhí)行中,LSU 3 從GPRF 332讀取浮點源操作數(shù)的有效地址,訪問存儲器層級中的浮點源操作數(shù),并在FPRF 334中的一個或者多個FI^R中存儲浮點源操作數(shù)。在塊406, FPU 3 執(zhí)行浮點指令。在執(zhí)行浮點指令中,F(xiàn)PU 3 訪問FPRF 334中的一個或者多個浮點源操作數(shù),計算一個或者多個浮點目的地操作數(shù),并在FPRF 334中的一個或者多個FPR 中存儲浮點目的地操作數(shù)。最終,在塊408處,LSU 3 執(zhí)行浮點存儲指令,以將浮點指令的執(zhí)行結(jié)果置入存儲器層級。在執(zhí)行浮點存儲指令中,LSU 3 從GPRF 332讀取一個或者多個源操作數(shù)(其計算可能需要由一個或者多個附加頂點指令的FXU 3M執(zhí)行),計算目標(biāo)有效地址,并在存儲器層級中與目標(biāo)有效地址相關(guān)聯(lián)的位置處存儲浮點目的地操作數(shù)。跟隨塊408,在塊410示出了過程終止。應(yīng)當(dāng)理解,在圖4示出的過程通常在程序執(zhí)行期間(例如,在處理科學(xué)任務(wù)時) 重復(fù)多次。因為多個科學(xué)程序針對輸入操作數(shù)(在有效地址空間內(nèi)具有已定義分布)重復(fù)執(zhí)行相同的浮點計算,并且在具有已定義分布的有效地址空間內(nèi)存儲計算所得的目的地操作數(shù)。本發(fā)明提出,性能可以通過尤其是加速輸入和目的地操作數(shù)的有效地址生成而改進性能。由此,在至少某些實施方式中,包括圖3所繪出,處理器核200還包括塊計算引擎 (BCE) 350,其加速針對指令塊的輸入和目的地操作數(shù)的有效地址的計算。在示出的實施方式中,BCE 350耦合至ISU 306,其發(fā)起由BCE 350進行處理;并且耦合至DMMU 340,其將由 BCE 350生成的存儲器訪問的有效地址轉(zhuǎn)換為被利用以訪問存儲器層級的相應(yīng)真實地址。現(xiàn)在參考圖5,該圖示出了圖3的塊計算引擎(BCE)350的更詳細(xì)的框圖。如所示出,BCE 350包括地址生成加速器(AGA) 500,其生成并輸出指定將從存儲器層級讀取的源操作數(shù)的有效地址(EA)的讀取請求。AGA 500還生成并輸出指定將向存儲器層級寫入的目的地操作數(shù)的EA的寫請求。如下文進一步示出,AGA 500通過引用對AGA 500可訪問的一個或者多個操作數(shù)的數(shù)據(jù)結(jié)構(gòu)502來生成讀和寫請求。如通過在圖3中耦合BCE 350和 DMMU 340所指示,地址生成加速器500向DMMU 340提供存儲器訪問請求的EA,其將EA翻譯為用以訪問存儲器層級的真實地址。在至少某些實施方式中,由AGA 500生成的EA被用于支持由執(zhí)行單元 320-328(以及如果存在的話,矢量執(zhí)行單元)執(zhí)行指令,其將與AGA生成的EA相關(guān)聯(lián)的一個或者多個輸入操作數(shù)用作輸入,并且產(chǎn)生與AGA生成的EA相關(guān)聯(lián)的一個或者多個目的地地址作為輸出。在其他實施方式中,AGA 500進一步包括計算引擎510,其向與AGA生成的EA相關(guān)聯(lián)的輸入操作數(shù)應(yīng)用由操作數(shù)據(jù)結(jié)構(gòu)512指示的操作,以獲得與AGA生成的EA相關(guān)聯(lián)的一個或者多個目的地操作數(shù)。AGA 500和計算引擎510例如可以利用可編程邏輯陣列(PLA)、現(xiàn)場可編程門陣列 (FPGA)或者一個或者多個算術(shù)邏輯單元(ALU)來實現(xiàn)。應(yīng)當(dāng)理解,盡管圖5繪出的操作數(shù)數(shù)據(jù)結(jié)構(gòu)502和操作數(shù)據(jù)結(jié)構(gòu)512是駐留于BCE 350內(nèi)的專用存儲裝置,在其他實施方式中,操作數(shù)數(shù)據(jù)結(jié)構(gòu)502和操作數(shù)據(jù)結(jié)構(gòu)512可以備選地駐留于Ll D高速緩存304中,或者在處理器核200的其他數(shù)據(jù)存儲裝置設(shè)施中?,F(xiàn)在參考圖6A至圖6B,其中示出了操作數(shù)數(shù)據(jù)結(jié)構(gòu)502和操作數(shù)據(jù)結(jié)構(gòu)512的示例性實施方式的框圖。首先轉(zhuǎn)向圖6A,繪出的操作數(shù)數(shù)據(jù)結(jié)構(gòu)502的實施方式包括一個或者多個操作數(shù)表600a、600b-600n,其中的每個提供由AGA 500利用的信息,以針對相應(yīng)的代碼塊計算操作數(shù)EA。也即,響應(yīng)于由ISU 306的命令,AGA 500訪問操作數(shù)表600a,以針對第一代碼塊計算EA,訪問操作數(shù)表600b以針對第二代碼塊計算EA,以及訪問操作數(shù)表 600η以針對后續(xù)的第三代碼塊計算ΕΑ。如圖6Α進一步示出,在繪出的示例性實施方式中,每個操作數(shù)表600包括至少三個條目,也即,源操作數(shù)A(SA)條目602a、源操作數(shù)B (SB)條目602b以及目的地操作數(shù) C(DC)條目602c。當(dāng)然,如果必要可以實現(xiàn)支持附加源操作數(shù)和目的地操作數(shù)的附加條目。 在示出的實施方式中,每個條目602包括多個字段,包括算法字段604,指示用于計算給定類型的下一操作數(shù)的EA的算法;操作數(shù)大小字段606,指示與EA相關(guān)聯(lián)的目的地操作數(shù)或者輸入的大??;距離字段608,指示將要針對條目計算的EA的數(shù)量;以及高速緩存提示字段 610,指示高速緩存策略,例如,操作數(shù)是否優(yōu)選地被高速緩存,如果是,則在高速緩存層級中的哪個高速緩存級別處。每個條目602可以選擇性地包括附加字段,用于指示將要從其中計算其他操作數(shù)EA的基準(zhǔn)有效地址。該基準(zhǔn)有效地址信息可以備選地作為塊計算發(fā)起信號的參數(shù)而傳輸,如下文進一步詳述。現(xiàn)參考如圖6B,操作數(shù)據(jù)結(jié)構(gòu)512可以類似地實現(xiàn)為表。在此實施方式中,實現(xiàn)了一個操作數(shù)據(jù)結(jié)構(gòu)512并且包括多個條目620a-620n用于指示將要針對一個或者多個源操作數(shù)執(zhí)行以便獲取一個或者多個目的地操作數(shù)的操作。多個條目620a-620n中的每個優(yōu)選地(但不必)唯一地對應(yīng)于特定代碼塊,這意味著計算引擎520向由AGA 500從存儲器層級取回的輸入操作數(shù)的每個集合應(yīng)用由每個條目620指示的操作,用于獲取一個或者多個目的地操作數(shù)。盡管圖6A至圖6B示出了其中可以使用表的操作數(shù)數(shù)據(jù)結(jié)構(gòu)502和操作數(shù)據(jù)結(jié)構(gòu) 512的示例性實施方式,應(yīng)當(dāng)理解,在其他實施方式中,可以備選地或者附加地使用一個或者多個其他類型的數(shù)據(jù)結(jié)構(gòu),諸如陣列、鏈接列表等?,F(xiàn)在參見圖7,示出了一個數(shù)據(jù)流程圖,該數(shù)據(jù)流程圖示出了用于生成一個或者多個操作數(shù)數(shù)據(jù)結(jié)構(gòu)502和一個或者多個操作數(shù)據(jù)結(jié)構(gòu)512的示例性過程。在繪出的過程中, 程序代碼(諸如,編譯器70 可以駐留于易失性或者非易失性有形數(shù)據(jù)存儲中,并且可以在諸如圖1的數(shù)據(jù)處理系統(tǒng)100的數(shù)據(jù)處理系統(tǒng)(或者任何其他適合的數(shù)據(jù)處理系統(tǒng))上執(zhí)行、接收預(yù)處理代碼(諸如,源代碼700)或者中間代碼,以及編譯預(yù)處理代碼以便獲得處理后的代碼(諸如,目標(biāo)代碼704或者某些中間代碼)。在編譯過程中,編譯器702還生成一個或者多個操作數(shù)數(shù)據(jù)結(jié)構(gòu)502和一個或者多個操作數(shù)據(jù)結(jié)構(gòu)512。
通常,源代碼700包括例如以高級編程語言或者腳本編寫的指令、聲明或者命令。 在繪出的示例中,源代碼700包括代碼部分710a、710b,其不是用于由BCE 350處理的候選。 例如,代碼部分710a包括依賴于變量χ和y的相對值的條件分支。另外,源代碼700包括一個或者多個代碼塊,諸如代碼塊712,該代碼塊712是由BCE 350處理的候選。在繪出的示例中,代碼塊712包括“while”循環(huán),該循環(huán)針對陣列b、c和d(由循環(huán)變量χ的值選擇) 內(nèi)的浮點值執(zhí)行浮點“乘加(multiply-add) ”操作,并且繼而將每個計算的結(jié)果置于陣列 a (同樣由循環(huán)變量χ的值選擇)內(nèi)的某位置。響應(yīng)于接收源代碼700,編譯器702標(biāo)識代碼部分不是用于加速的候選,并且生成相應(yīng)的目標(biāo)代碼714(例如,匯編語言代碼或者機器代碼)。例如,在本示例中,編譯器702 生成對應(yīng)于由代碼部分710a指示的條件分支的匯編指令。另外,編譯器702標(biāo)識一個或者多個代碼塊(諸如,代碼塊71 ,這些代碼塊是用于加速的候選,針對每個此類代碼塊而生成包括相應(yīng)條目(諸如,操作數(shù)數(shù)據(jù)結(jié)構(gòu)502和操作數(shù)據(jù)結(jié)構(gòu)512)的數(shù)據(jù)結(jié)構(gòu)。然而,編譯器702不生成顯示地指示代碼塊712功能的匯編代碼(或者其他低級代碼)。代替的是,編譯器702向目標(biāo)代碼704插入塊計算命令(BCC) 716,當(dāng)由包括BCE 350 的處理器核200處理時,將調(diào)取針對操作數(shù)數(shù)據(jù)結(jié)構(gòu)502和操作數(shù)據(jù)結(jié)構(gòu)512中的條目的 BCE 350的操作,以便實現(xiàn)由代碼塊712指定的功能。由于BCC并不旨在在處理器核200的執(zhí)行單元中直接執(zhí)行,BCC不必屬于或者一致于由執(zhí)行單元320-3 執(zhí)行的指令所使用的指令集架構(gòu)。在繪出的示例中,編譯器702創(chuàng)建操作數(shù)表600,該表包括用于源操作數(shù)b[x]、 C[χ]和d[x]的三個操作數(shù)條目602,以及用于目的地操作數(shù)a[x]的目的地操作數(shù)條目 602。編譯器702繼而將算法χ = x+y置于這些條目602中每一個的算法字段604中,并且將操作數(shù)大小8h (表示8字節(jié)單精度浮點值的大小)置于每個條目602的操作數(shù)大小字段 606中。在每個條目602的距離字段608中,編譯器702置入對應(yīng)于十進制值10的值,該值表示代碼塊704中“while”循環(huán)將被執(zhí)行的次數(shù)。最后,如果存在的話,編譯器702將與源操作數(shù)和目的地操作數(shù)相關(guān)聯(lián)的高速緩存提示置入高速緩存提示字段610。編譯器702確定高速緩存提示,例如通過引用源操作數(shù)和目的地操作數(shù)的未來使用進行。例如,如果計算了目的地操作數(shù),但是從未再次引用,則編譯器702指示高速緩存指示字段610 目的地操作數(shù)不應(yīng)被高速緩存。備選的是,如果目的地操作數(shù)在其計算之后被立刻再次引用(例如, 作為后續(xù)目的地操作數(shù)的計算的輸入操作數(shù)),則編譯器702在高速緩存提示字段610中指示目的地操作數(shù)應(yīng)當(dāng)被緩存,例如在Ll D高速緩存304中進行高速緩存?,F(xiàn)在參考圖8,示出了根據(jù)本發(fā)明實施方式的塊驅(qū)動計算的示例性處理的高級邏輯流程圖。示出的流程例如可以通過圖3的處理器核200執(zhí)行,在某些實現(xiàn)中,處理的多個實例可以由處理器核200在一個或者多個硬件線程中并發(fā)地執(zhí)行。作為邏輯流程,繪出的至少某些步驟可以并發(fā)地執(zhí)行或者以不同于示出順序執(zhí)行。如所示出,處理在塊800開始,繼而前進至塊802,該塊802繪出了 ISU 306在用于處理的目標(biāo)代碼704中獲取下一代碼集。圖8繪出的過程繼而形成分支,并前進至塊804 并前進至塊810?,F(xiàn)在首先參考塊804,ISU 306分配資源(例如,重命名和架構(gòu)化的寄存器、緩存等),該資源將由執(zhí)行單元320-3 在所獲取代碼集內(nèi)的指令執(zhí)行中使用,并且向執(zhí)行單元320-328分配所獲取代碼集內(nèi)的指令。響應(yīng)于接收所分派的指令,一個或者多個執(zhí)行單元 320-3 執(zhí)行利用所分派的資源執(zhí)行所分派的指令(塊806)。指令執(zhí)行隨后,ISU 306完成并且釋放或者重新分配在指令執(zhí)行期間使用的資源。繼而,處理返回塊802?,F(xiàn)在參見塊810,ISU 306確定獲取的代碼集是否包括至少一個塊計算命令 (BCC)。如果沒有,則過程返回塊802,已經(jīng)對該塊802進行了描述。然而,如果ISU 306確定獲取的代碼集合包括至少一個BCC JUlSU 306向BCE 350傳輸對應(yīng)于每個BCC的塊計算發(fā)起請求,如塊812所示。在至少某些實施方式中,塊計算發(fā)起信號包括或者引用指針,該指針指向操作數(shù)數(shù)據(jù)結(jié)構(gòu)502中的適當(dāng)操作數(shù)表600以及操作數(shù)據(jù)結(jié)構(gòu)512中的適當(dāng)條目 620。如果在操作數(shù)表600中不存在,則塊計算發(fā)起請求還優(yōu)選地包括或者引用指針,該指針指向用于每個源操作數(shù)或者目的地操作數(shù)的有效地址(例如,SA、SB、DC)。響應(yīng)于接收每個塊計算發(fā)起信號,AGA 500訪問對應(yīng)于BCC的操作數(shù)表600。使用由算法字段604指示的算法,AGA 500生成用于資源操作數(shù)的一個或者多個EA,并且在讀取請求中向DMMU 340發(fā)送EA (塊814)。DMMU 340將EA翻譯為真實地址,繼而將讀取請求轉(zhuǎn)發(fā)至存儲器層級。存儲器層級通過向計算引擎510提供與真實地址相關(guān)聯(lián)的資源操作數(shù), 來響應(yīng)讀取請求。只要不存在數(shù)據(jù)依賴,則可以以任何順序從存儲器層級取回由操作數(shù)據(jù)結(jié)構(gòu)512指示的操作的一個或者多個迭代。另外在塊816處,計算引擎510使用由操作數(shù)據(jù)結(jié)構(gòu)512的特定條目指示的操作, 從經(jīng)由在塊814繪出的步驟獲取的源操作數(shù)計算一個或者多個目的地操作數(shù)。計算引擎 510可以以任何順序執(zhí)行操作的多個迭代,這是由于如果觀察到數(shù)據(jù)依賴,則源操作數(shù)變得可用。計算引擎510優(yōu)選地根據(jù)在高速緩存提示字段610指示的一個或者多個高速緩存策略,將操作的源操作數(shù)和/或目的地操作數(shù)高速緩存在高速緩存層級中。由此,基于關(guān)于操作數(shù)數(shù)據(jù)重用的編譯器提供的信息,可以將不同的高速緩存策略應(yīng)用于相同操作或者不同操作的不同操作數(shù)。在塊816繪出的操作之前、期間和/或之后,AGA 500再次訪問對應(yīng)于BCC的操作數(shù)表600。利用針對目的地操作數(shù)而由算法字段604指示的算法,AGA 500為目的地操作數(shù)生成一個或者多個EA的序列(塊818)。由于目的地操作數(shù)計算引擎510生成,而相關(guān)聯(lián)的 EA由AGA 500生成,BCE 350經(jīng)由DMMU 340向存儲器層級發(fā)布指定目的地操作數(shù)的寫請求以及相關(guān)聯(lián)的EA (塊820),該DMMU 340將EA翻譯為真實地址,并向存儲器層級轉(zhuǎn)發(fā)用于服務(wù)的寫請求。在塊820隨后,處理返回塊802,已經(jīng)描述了該塊802。盡管已經(jīng)特別示出和描述了一個或者多個實施方式,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解, 在不脫離本發(fā)明范圍的情況下,在此可以執(zhí)行形式和細(xì)節(jié)上的各種變化。例如,盡管已經(jīng)針對執(zhí)行程序代碼的計算機系統(tǒng)而描述了本發(fā)明的方面,其中該程序代碼引導(dǎo)至少某些功能;應(yīng)當(dāng)理解,本發(fā)明的一個或者多個實施方式可以備選地實現(xiàn)為與數(shù)據(jù)處理系統(tǒng)一起使用的程序產(chǎn)品。例如,編譯器702可以實現(xiàn)為程序產(chǎn)品。另外,操作數(shù)數(shù)據(jù)結(jié)構(gòu)和處理后的代碼(諸如目標(biāo)代碼704)以及可選地,操作數(shù)據(jù)結(jié)構(gòu)可以一起實現(xiàn)為程序產(chǎn)品。此類程序產(chǎn)品包括計算機可讀介質(zhì),其編碼引導(dǎo)本發(fā)明的功能的程序代碼。計算機可讀介質(zhì)例如可以實現(xiàn)為有形的存儲介質(zhì)(例如,CD-R0M、DVD、磁帶或者硬盤、系統(tǒng)存儲器、閃存等)或者傳輸介質(zhì)(諸如數(shù)字和模擬網(wǎng)絡(luò))。本申請涉及以下共同未決的申請,在此通過引用其全部內(nèi)容引入
(1)美國專利申請序列號12/336,315(律師方案號AUS920070385US1);(2)美國專利申請序列號12/336,;342(律師方案號AUS920080285US1);(3)美國專利申請序列號12/336,350(律師方案號AUS920080286US1);以及(4)美國專利申請序列號12/336,301 (律師方案號AUS92008(^87US1)。
權(quán)利要求
1.一種在數(shù)據(jù)處理系統(tǒng)中編譯代碼的方法,所述方法包括響應(yīng)于接收預(yù)處理的代碼,編譯器標(biāo)識不是用于加速的候選的所述預(yù)處理代碼中的代碼部分,并且標(biāo)識用于加速的候選的所述預(yù)處理的代碼中的代碼塊,其中所述代碼塊指定迭代的操作;響應(yīng)于標(biāo)識所述代碼部分,所述編譯器生成包括對應(yīng)于已標(biāo)識的代碼部分的一個或者多個較低級別指令的處理后的代碼;響應(yīng)于標(biāo)識所述代碼塊,所述編譯器創(chuàng)建并輸出分離于所述處理后代碼的操作數(shù)據(jù)結(jié)構(gòu),其中所述操作數(shù)據(jù)結(jié)構(gòu)標(biāo)識所述迭代的操作;所述編譯器將塊計算命令置入所述處理后的代碼,所述處理后的代碼調(diào)取所述操作數(shù)據(jù)結(jié)構(gòu)的處理以執(zhí)行所述迭代的操作;以及所述編譯器輸出所述處理后的代碼。
2.根據(jù)權(quán)利要求1所述的方法,其中所述迭代的操作具有至少第一操作數(shù)和第二操作數(shù);以及所述方法進一步包括所述編譯器創(chuàng)建并輸出操作數(shù)數(shù)據(jù)結(jié)構(gòu),所述操作數(shù)數(shù)據(jù)結(jié)構(gòu)定義在多個第一操作數(shù)的地址之間的第一尋址關(guān)系以及多個第二操作數(shù)的地址之間的第二尋址關(guān)系。
3.根據(jù)權(quán)利要求2所述的方法,其中所述第一尋址關(guān)系指示所述多個第一操作數(shù)的有效地址之間的尋址關(guān)系;以及所述第二尋址關(guān)系指示所述多個第二操作數(shù)的有效地址之間的尋址關(guān)系。
4.根據(jù)權(quán)利要求2所述的方法,其中所述第一操作數(shù)是源操作數(shù),而所述第二操作數(shù)是目的地操作數(shù)。
5.根據(jù)權(quán)利要求2所述的方法,進一步包括所述編譯器在所述操作數(shù)數(shù)據(jù)結(jié)構(gòu)中置入關(guān)于將所述第一操作數(shù)和第二操作數(shù)進行高速緩存的信息。
6.根據(jù)權(quán)利要求2所述的方法,進一步包括所述編譯器在所述操作數(shù)數(shù)據(jù)結(jié)構(gòu)中指示,第一數(shù)量的地址將被生成以訪問所述多個第一操作數(shù),以及第二數(shù)量的地址將被生成以訪問所述多個第二操作數(shù)。
7.根據(jù)權(quán)利要求2所述的方法,其中創(chuàng)建操作數(shù)數(shù)據(jù)結(jié)構(gòu)包括創(chuàng)建操作數(shù)表。
8.一種代碼編譯器,包括編譯器程序代碼,當(dāng)由數(shù)據(jù)處理系統(tǒng)處理時所述編譯器程序代碼執(zhí)行根據(jù)前述權(quán)利要求中的任一項所述的方法。
9.一種處理器,包括至少一個執(zhí)行單元,用于執(zhí)行指令;指令序列化單元,用于獲取由所述至少一個執(zhí)行單元執(zhí)行的指令; 操作數(shù)據(jù)結(jié)構(gòu),用于標(biāo)識將由所述處理器執(zhí)行的一個或者多個迭代的操作;以及計算引擎,響應(yīng)于來自所述指令序列化單元的發(fā)起信號,用于訪問所述操作數(shù)據(jù)結(jié)構(gòu)以及執(zhí)行由所述操作數(shù)據(jù)結(jié)構(gòu)標(biāo)識的所述一個或者多個迭代的操作中的一個。
10.根據(jù)權(quán)利要求9所述的處理器,其中 所述迭代的操作具有第一操作數(shù)和第二操作數(shù);所述處理器包括操作數(shù)數(shù)據(jù)結(jié)構(gòu),所述操作數(shù)數(shù)據(jù)結(jié)構(gòu)指定用于所述迭代的操作的多個迭代的多個第一操作數(shù)的地址之間的第一關(guān)系,并且指定用于所述迭代的操作的多個迭代的多個第二操作數(shù)的地址之間的第二關(guān)系;以及地址生成加速器,用于通過引用由所述操作數(shù)數(shù)據(jù)結(jié)構(gòu)指定的所述第一關(guān)系,計算和輸出所述多個第一操作數(shù)的地址,以及通過引用由所述操作數(shù)數(shù)據(jù)結(jié)構(gòu)指定的所述第二關(guān)系,計算和輸出所述多個第二操作數(shù)的地址。
11.根據(jù)權(quán)利要求10所述的處理器,其中針對所述迭代的操作的每個迭代,所述計算引擎可操作以從存儲器層級獲取的所述多個第二操作數(shù)之一以及所述多個第一操作數(shù)之一,來計算目的地操作數(shù)。
12.根據(jù)權(quán)利要求10所述的處理器,其中所述地址是有效地址。
13.根據(jù)權(quán)利要求9所述的處理器,其中所述第一操作數(shù)是源操作數(shù),而所述第二操作數(shù)是目的地操作數(shù)。
14.根據(jù)權(quán)利要求10所述的處理器,其中所述操作數(shù)數(shù)據(jù)結(jié)構(gòu)包括將利用所述第一關(guān)系生成的第一數(shù)量的地址、以及將利用所述第二關(guān)系生成的第二數(shù)量的地址的指示。
全文摘要
設(shè)計了一種編譯器,該編譯器響應(yīng)于接收預(yù)處理的代碼而標(biāo)識不是用于加速的候選的代碼部分,并且標(biāo)識用于加速的候選的迭代操作的代碼塊。響應(yīng)于標(biāo)識代碼部分,編譯器生成包括對應(yīng)于已標(biāo)識代碼部分的一個或者多個較低級別指令的處理后的代碼;并且響應(yīng)于標(biāo)識代碼塊,編譯器創(chuàng)建并輸出分離于處理后代碼的操作數(shù)據(jù)結(jié)構(gòu),其中代碼數(shù)據(jù)結(jié)構(gòu)標(biāo)識迭代的操作。編譯器將塊計算命令置入處理后的代碼,處理后的代碼調(diào)取操作數(shù)據(jù)結(jié)構(gòu)的處理以執(zhí)行迭代的操作并輸出處理后的代碼。
文檔編號G06F9/45GK102257478SQ200980150930
公開日2011年11月23日 申請日期2009年10月20日 優(yōu)先權(quán)日2008年12月16日
發(fā)明者B·辛哈羅伊, R·K·阿里米利 申請人:國際商業(yè)機器公司