專利名稱:多核心數(shù)據(jù)處理系統(tǒng)中的工作項分布的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及多處理器數(shù)據(jù)處理系統(tǒng),特別是涉及配置有多個處理單元的數(shù)據(jù)處理系統(tǒng)上的操作。更特別地,本發(fā)明涉及在并行處理分布在多核心數(shù)據(jù)處理系統(tǒng)的多個處理單元上的工作中利用高速緩存線大小的方法和系統(tǒng)。
背景技術(shù):
多核心數(shù)據(jù)處理系統(tǒng)被廣泛用于啟用可被分成多個部分以便完成的數(shù)據(jù)的并行處理。多核心系統(tǒng)存在各種不同的拓?fù)?,其中非均勻存儲器存?NUMA)系統(tǒng)拓?fù)涫且粋€例子。過去,還不允許直接將調(diào)諧屬性附加于在數(shù)據(jù)的并行處理中使用的存儲器對象上以調(diào)諧軟件管理的高速緩存。
發(fā)明內(nèi)容
公開了操作可包含多個處理器核心或可與其耦合的數(shù)據(jù)處理系統(tǒng)的方法、計算機系統(tǒng)架構(gòu)和計算機程序產(chǎn)品。在一個或多個實施例中,多個存儲器對象中的每一個可被工作項填充,并且可與可包含信息的屬性相關(guān),所述信息可被用于描述每個存儲器對象的數(shù)據(jù)和/或可被用于處理每個存儲器對象的數(shù)據(jù)。屬性可被用于指示高速緩存策略、高速緩存大小和高速緩存線大小等中的一個或多個。在一個或多個實施例中,多個處理器核心中的一個處理器核心的本地存儲(local store)或存儲器可基于一個或多個存儲器對象的屬性而被分割。例如,本地存儲可被分成兩個區(qū)段,這里,每個區(qū)段與一個存儲器對象對應(yīng)。在一個或多個實施例中,可基于與相應(yīng)的存儲器對象相關(guān)的屬性來產(chǎn)生每個區(qū)段。例如,可基于由與相應(yīng)的存儲器對象相關(guān)的屬性所指示的高速緩存策略、高速緩存大小和高速緩存線大小中的一個或多個來產(chǎn)生區(qū)段。在一個或多個實施例中,來自存儲器對象的工作項可被復(fù)制到處理器核心的本地存儲的區(qū)段中,并且處理器核心可處理來自區(qū)段的工作項。在一個或多個實施例中,本地存儲中的區(qū)段可包含或可以是軟件高速緩存。例如,可通過軟件產(chǎn)生區(qū)段,并且軟件可被用于管理區(qū)段。在一個或多個實施例中,與存儲器對象相關(guān)的屬性可被用作存儲器對象被如何使用的歷史。例如,可以使用屬性來指示區(qū)段的高速緩存歷史統(tǒng)計數(shù)據(jù)(例如,命中率、錯失率等)。以上概述不是要作為所要求主題的全面描述,而是要提供與其相關(guān)的功能中的一些的簡要回顧。對于本領(lǐng)域技術(shù)人員來說,在檢查以下的附圖和詳細(xì)書寫的描述時,所要求主題的其它系統(tǒng)、方法、功能、特征和優(yōu)點將變得明顯。
下面參照附圖描述本發(fā)明的實施例,其中圖I提供根據(jù)一個或多個實施例的多節(jié)點分布式數(shù)據(jù)處理系統(tǒng)的框圖;圖2提供根據(jù)一個或多個實施例的多節(jié)點數(shù)據(jù)處理系統(tǒng)的邏輯流程的框圖;圖3提供根據(jù)一個或多個實施例的處理節(jié)點的框圖4提供根據(jù)一個或多個實施例的數(shù)據(jù)處理系統(tǒng)的一部分的框圖;圖5A提供根據(jù)一個或多個實施例的本地存儲或存儲器的框圖;圖5B提供根據(jù)一個或多個實施例的其中多個工作項可占據(jù)一個高速緩存線的本地存儲或存儲器的框圖;圖5C提供根據(jù)一個或多個實施例的其中一個工作項可占據(jù)多個高速緩存線的本地存儲或存儲器的框圖;圖6提供根據(jù)一個或多個實施例的本地存儲或存儲器的框圖; 圖7提供根據(jù)一個或多個實施例的操作數(shù)據(jù)處理系統(tǒng)的方法;圖8示出根據(jù)一個或多個實施例的產(chǎn)生存儲器對象的方法;圖9示出根據(jù)一個或多個實施例的設(shè)定存儲器對象的屬性的方法。圖10示出根據(jù)一個或多個實施例的設(shè)定存儲器對象的屬性的方法。
具體實施例方式公開了操作可包含多個處理器核心或可與其耦合的數(shù)據(jù)處理系統(tǒng)的方法、計算機系統(tǒng)架構(gòu)和計算機程序產(chǎn)品。在一個或多個實施例中,多個存儲器對象中的每一個可被工作項填充,并且可與可包含信息的屬性相關(guān),所述信息可被用于描述每個存儲器對象的數(shù)據(jù)和/或可被用于處理每個存儲器對象的數(shù)據(jù)。屬性可被用于指示高速緩存策略、高速緩存大小和高速緩存線大小等中的一個或多個。在一個或多個實施例中,多個處理器核心中的一個處理器核心的本地存儲或存儲器可基于一個或多個存儲器對象的屬性而被分割。例如,本地存儲可被分成兩個區(qū)段,這里,每個區(qū)段與一個存儲器對象對應(yīng)。在一個或多個實施例中,可基于與相應(yīng)的存儲器對象相關(guān)的屬性來產(chǎn)生每個區(qū)段。例如,可基于由與相應(yīng)的存儲器對象相關(guān)的屬性所指示的高速緩存策略、高速緩存大小和高速緩存線大小中的一個或多個來產(chǎn)生區(qū)段。在一個或多個實施例中,來自存儲器對象的工作項可被復(fù)制到處理器核心的本地存儲的區(qū)段中,并且處理器核心可處理來自區(qū)段的工作項。在本發(fā)明的示例性實施例的以下詳細(xì)描述中,足夠詳細(xì)地描述了可實現(xiàn)本發(fā)明的特定的示例性實施例,以使得本領(lǐng)域技術(shù)人員能夠?qū)嵤┍景l(fā)明,并且應(yīng)當(dāng)理解,可以利用其它實施例,并且在不背離本發(fā)明的精神或范圍的情況下,可以提出邏輯、架構(gòu)、程序、機械、電氣和其它的變化。因此,不是以限制的意義給出以下的詳細(xì)描述,而是本發(fā)明的范圍僅由所附的權(quán)利要求限定。在附圖的描述中,向類似的要素提供與前面的附圖的要素類似的名稱和附圖標(biāo)記。提供分配給要素的特定數(shù)字僅是為了幫助描述,而不意味著對于本發(fā)明的任何限制(結(jié)構(gòu)或功能上的)。應(yīng)當(dāng)理解,特定部件、設(shè)備和/或參數(shù)名稱的使用僅是例子,并且不意味著對于本發(fā)明的任何限制。因此,可沒有限制地通過用于描述這里的部件/設(shè)備/參數(shù)的不同的命名/術(shù)語實現(xiàn)本發(fā)明。給定利用術(shù)語的上下文,這里利用的每個術(shù)語要被賦予其最寬的解釋。特別地,在這里利用的以下術(shù)語被定義如下(I)工作項(Work Item):數(shù)據(jù)組的基本要素(例如,字節(jié)、字符串、整數(shù)、浮點數(shù)、像素、陣列、數(shù)據(jù)結(jié)構(gòu)等)。(2) NDRange大小(NDRange Size):指數(shù)空間中的工作項的數(shù)量
(3)內(nèi)核(Kernel):處理工作項以產(chǎn)生結(jié)果的功能,其中該功能是通過可由處理器核心執(zhí)行的一個或多個指令實現(xiàn)的。(4)內(nèi)核對象(Kernel Object):當(dāng)執(zhí)行內(nèi)核時使用的內(nèi)核和(一個或多個)自變量(5)剩余工作項(WIR)計數(shù)器(Work Item Remaining (WIR) Counter):跟蹤工作要素內(nèi)的工作項的數(shù)量的計數(shù)器,并且每次處理器核心或節(jié)點去除一個或多個工作項時,該計數(shù)器就遞減。遞減的數(shù)量等于由處理器核心或節(jié)點去除的工作項的數(shù)量,并且計數(shù)器遞減,直到計數(shù)器值達(dá)到或低于零。如這里提供的那樣,本發(fā)明適用于任意數(shù)量的不同配置的這種多核心系統(tǒng),包括被配置為大規(guī)模并行處理系統(tǒng)的系統(tǒng)或被配置為非均勻存儲器存取(NUMA)處理系統(tǒng)的系統(tǒng)或包括并行處理系統(tǒng)的其它類型的多核心處理系統(tǒng)。除了多核心架構(gòu)以外,這里提供的描述不采取特定的架構(gòu)。但是,假定在其中一個或多個處理節(jié)點在訪問全局/共享存儲器結(jié)構(gòu)時展現(xiàn)低的等待時間的多節(jié)點架構(gòu)(即,具有多個處理節(jié)點的系統(tǒng))中實現(xiàn)某些特征,而假定在其中一個或多個處理節(jié)點在訪問全局/共享存儲器結(jié)構(gòu)時展現(xiàn)高的等待時間的多節(jié)點架構(gòu)中實現(xiàn)其它特征。如下面進(jìn)一步描述的那樣,本發(fā)明的功能特征的實現(xiàn)在處理節(jié)點內(nèi)被提供,并且包含硬件、固件以及幾個軟件級結(jié)構(gòu)的組合的使用。在其中通過通用系統(tǒng)互連和/或網(wǎng)絡(luò)接口設(shè)備(NID)和/或主機組織接口(Host Fabric Interface,HFI)和/或一種或更多種其它形式的互連(例如,開關(guān)等)互連的多個物理上分離的處理節(jié)點提供通過多個處理器核心執(zhí)行一個或多個ND工作組的分布式數(shù)據(jù)處理系統(tǒng)的示例性分布式多節(jié)點計算環(huán)境內(nèi),給出的示圖示出了硬件和軟件組件。解釋性的所描述的實施例假定系統(tǒng)架構(gòu)可被縮放到更多數(shù)量的處理節(jié)點?,F(xiàn)在轉(zhuǎn)到附圖,具體而言,轉(zhuǎn)到圖1,圖I示出了根據(jù)一個或多個實施例的多節(jié)點分布式數(shù)據(jù)處理系統(tǒng)(DPS)的框圖。如圖所示,DPS 1000包括處理系統(tǒng)1005,處理系統(tǒng)1005可通過諸如網(wǎng)絡(luò)組織(network fabric)或開關(guān)之類的互連1600與一個或多個遠(yuǎn)程處理系統(tǒng)1015和1020耦合。如圖所示,處理系統(tǒng)1005可包含這些處理節(jié)點1100和1150中的兩個或更多個處理節(jié)點。處理節(jié)點1100和1150與用作并且可互換地稱為數(shù)據(jù)總線的系統(tǒng)互連1500耦合。在一個或多個實施例中,系統(tǒng)互連1500在處理系統(tǒng)1005內(nèi)提供與包含存儲器控制器1400和1410、存儲介質(zhì)1310、處理器1300和輸入/輸出(1/0)控制器1420的兩個或更多個設(shè)備的連接。在一個或多個實施例中,1/0控制器1420經(jīng)由/通過諸如指示設(shè)備和顯示監(jiān)視器等的一個或多個1/0設(shè)備1425提供控制。存儲器控制器1400和1410控制對于各個系統(tǒng)存儲設(shè)備1405和1415的存取。根據(jù)系統(tǒng)設(shè)計,存儲器控制器1400和1410可被分配給各個處理節(jié)點1100或1150和/或可在物理上位于處理器芯片上或者在總體系統(tǒng)架構(gòu)的一些其它位置上??梢岳斫?,多個存儲器控制器1400和1410的存在是設(shè)計參數(shù),并且,根據(jù)一個或多個實施例,處理系統(tǒng)1005可配置有單個存儲器控制器。除了處理系統(tǒng)1005的系統(tǒng)存儲設(shè)備1405和1415以外,處理節(jié)點1100和1150可與各個相關(guān)的節(jié)點本地存儲器1105和1195耦合,這可允許在不需要處理節(jié)點從系統(tǒng)存儲器(例如,系統(tǒng)存儲器1405和1415中的一個)或其它遠(yuǎn)程(或高等待時間)位置單獨地檢索每一件工作的情況下在處理節(jié)點上將工作分級(staging)。在一個或多個實施例中,節(jié)點本地存儲器1105可以是用于處理器核心1110 1117中的每一個的共享存儲器,和/或節(jié)點本地存儲器1195可以是用于處理器核心1160 1167中的每一個的共享存儲器。例如,可通過處理器核心1110 1117中的每一個以異步的方式訪問節(jié)點本地存儲器1105,并且可通過處理器核心1160 1167中的每一個以異步的方式訪問節(jié)點本地存儲器1195。例如,可通過處理器核心1110 1117中的每一個通過直接存儲器存取(DMA)訪問節(jié)點本地存儲器1105,和/或可通過處理器核心1160 1167中的每一個通過DMA訪問節(jié)點本地存儲器1195。在一個或多個實施例中,雖然節(jié)點可以是單個核心節(jié)點,但是,處理節(jié)點1100和1150中的每一個包含兩個或更多個處理器核心。如所示的那樣,處理器節(jié)點1100包含標(biāo)號為core_0 core_N的N+1個核心,這里N是大于零的整數(shù)。類似地,處理器節(jié)點1150包含標(biāo)號為core_0 core_M的M+1個核心,這里M是大于零的整數(shù)。為了簡化一個或多個實施例的描述,N和M均被假定為整數(shù)七(7),以使得處理節(jié)點1100包含八(8)個處理核心1110 1117,而處理節(jié)點1150包含八(8)個處理器核心1160 1167。當(dāng)在這里利用時,術(shù)語處理單元被假定為與處理器核心同步。在一個或多個實施例中,處理器核心1110 1117和1160 1167的每個處理器核心可實現(xiàn)指令組架構(gòu)(ISA),并且可執(zhí)行來自ISA的指令。在一個或多個實施例中,處理器核心1110 1117可實現(xiàn)與可由處理器核心1160 1167實現(xiàn)的ISA不同的ISA。使用整數(shù)變量“N”和“Μ”來給各個處理節(jié)點1100和1150中的處理器核心的數(shù)量定個上限僅表示每個處理節(jié)點可包含可變數(shù)量的單獨的處理器核心,而N和M是大于零
(O)的任何大小的整數(shù)(假定各個處理節(jié)點的多核心實施方式)。在給定系統(tǒng)架構(gòu)中部署的處理節(jié)點的數(shù)量是依賴于實施方式的,并且可改變??梢岳斫?,這里描述的實施例使得能夠縮放到更多數(shù)量的處理節(jié)點,甚至更多數(shù)量的處理器核心。在一個或多個實施例中,處理系統(tǒng)1005可以是通過DPS架構(gòu)1000內(nèi)的處理器核心產(chǎn)生和處理的一個或多個ND Range工作組的源。如進(jìn)一步示出的那樣,處理系統(tǒng)1005包含存儲裝置1310,其中存儲了使得能夠產(chǎn)生供處理節(jié)點中的一個或多個執(zhí)行的工作和NDRange工作組的固件和軟件組件中的一個或多個。在一個或多個實施例中,存儲裝置1310可存儲一個或多個操作系統(tǒng)(OS) 1320 1322、一個或多個應(yīng)用(APP) 1330 1332、編譯器1325、應(yīng)用編程界面(API) 1340和調(diào)度器1335中的一個或多個。在一個或多個實施例中,調(diào)度器1335可包含被處理器1330、處理器1310或處理核心(例如,處理核心1110 1117和1160 1167)執(zhí)行以從編譯器接收一個或多個內(nèi)核并調(diào)度要分派給DPS架構(gòu)1000內(nèi)的多個處理器核心中的一個或多個和/或由器分派的工作(例如,一個或多個內(nèi)核和/或數(shù)據(jù)組)的邏輯和/或程序指令。在一個或多個實施例中,通過編譯器1325從應(yīng)用1330 1332和/或OS 1320 1322中的一個或多個或從一些其它源(這里未示出)檢索要對其操作的數(shù)據(jù)組。在一個或多個實施例中,編譯器1325包含可根據(jù)與數(shù)據(jù)組的處理相關(guān)的方法或過程產(chǎn)生一個或多個內(nèi)核的及時(Just-In-Time,JIT)編譯器。例如,應(yīng)用1330可實現(xiàn)與處理數(shù)據(jù)組相關(guān)的方法或過程,并且響應(yīng)于應(yīng)用1330的執(zhí)行,JIT編譯器可產(chǎn)生用于處理數(shù)據(jù)組的一個或多個內(nèi)核。在一個或多個實施例中,處理系統(tǒng)1005包含可連接多個其它處理系統(tǒng)的開關(guān)或其它全局互連(例如,互連1600)或與其耦合。如所示出的那樣,處理系統(tǒng)1005通過互連、1600,其可以是或者包含網(wǎng)絡(luò)組織或開關(guān),與遠(yuǎn)程處理系統(tǒng)1015和1020通信連接。如所示的那樣,通過網(wǎng)絡(luò)接口控制器(NIC) 1430,其可以是或包含主機組織接口(HFI),提供與互連1600的連接。如所示的那樣,NIC 1430與系統(tǒng)互連1500耦合。在幾個替代性配置之一中,互連1600可以是與所有節(jié)點連接的單個通用互連,或者可包含使處理節(jié)點的子集相互連接和/或與處理系統(tǒng)1005連接的一個或多個子集(未示出)。在一個或多個實施例中,處理系統(tǒng)1015和1020中的一個或多個可在DPS 1000內(nèi)提供附加的計算資源。例如,處理系統(tǒng)1015和1020中的每一個可包含與參照處理系統(tǒng)1005描述的結(jié)構(gòu)和/或功能類似或相同的一個或多個結(jié)構(gòu)和/或功能。在一個或多個實施例中,根據(jù)遠(yuǎn)程計算裝置(例如,處理系統(tǒng)1015和1020中的一個)距離處理系統(tǒng)1005內(nèi)的工作分級區(qū)域的相對距離,包含于遠(yuǎn)程計算裝置中的一個或多個處理核心可被描述為在共享的工作檢索和/或平衡中展現(xiàn)出高的等待時間。本領(lǐng)域技術(shù)人員可以理解,DPS架構(gòu)1000可包含附加的部件,諸如互連橋和用于與網(wǎng)絡(luò)或附著的裝置連接的端口等(這里均未示出)。現(xiàn)在參照圖2,圖2示出了根據(jù)一個或多個實施例的多節(jié)點數(shù)據(jù)處理系統(tǒng)的邏輯流程的框圖。除了前面已經(jīng)描述的圖I的硬件結(jié)構(gòu)表示的處理系統(tǒng)1005以外,圖2還提供了參照圖I描述的使得能夠?qū)崿F(xiàn)一個或多個實施例的一個或多個功能特征的軟件和/或固·件部件的一個或多個配置和/或功能。如所示的那樣,處理節(jié)點1100與節(jié)點掩碼(匪)2100相關(guān),并且處理節(jié)點1150與匪2150相關(guān)。在一個或多個實施例中,節(jié)點掩碼(匪)2100和2150中的每一個可提供用于識別相關(guān)的處理節(jié)點的唯一位掩碼標(biāo)識符。在一個或多個實施例中,如以下進(jìn)一步描述的那樣,節(jié)點掩碼被用于啟用工作的節(jié)點級調(diào)度和/或路由。以類似的方式,核心掩碼(CM)或處理單元掩碼(PUM)可提供用于在包含相關(guān)/鏈接/編碼的處理核心的節(jié)點內(nèi)識別相關(guān)/鏈接/編碼的處理核心并且從其它處理器核心唯一地識別特定的處理器核心的位掩碼標(biāo)識符。如所示的那樣,核心1110 1117分別與核心掩碼(CM) 2110 2117相關(guān),并且核心1160 1167分別與CM 2160 2167相關(guān)。例如,core_0 1110標(biāo)有位掩碼2110,core_l 1111標(biāo)有位掩碼2111,core_0 1117標(biāo)有位掩碼 2117。在一個例子中,匪2100和2150中的每一個可包含位掩碼XtjX1,這里,Xi可包含值“O”和“I”。例如,匪2100可包含位掩碼“10”,并且在另一情況下,NM 2150可包含位掩碼“01”。在另一例子中,處理器核心1110 1117和1160 1167中的每一個可包含位掩碼YtlY1 Y2Y3Y4Y5Y6Y7,這里,Yj可包含值“O”和“I”。在一種情況下,核心1110和1160可包含位掩碼“10000000”。在第二情況下,核心1111和1161可包含位掩碼“01000000”。在另一情況下,核心1117和1167可包含位掩碼“00000001”。在一個或多個實施例中,可通過節(jié)點掩碼和核心掩碼的組合來尋址和/或識別各單個處理核心。在一個例子中,根據(jù)實施方式,可通過X0X1Y0Y1Y2Y3Y4Y5Y6Y7或YqY1Y2Y3Y4Y5Y6Y7XqX1識別處理核心。在一個或多個實施例中,處理系統(tǒng)1005可包含可與多個節(jié)點掩碼相關(guān)的多個節(jié)點。在一個例子中,與多個處理器核心相關(guān)的多個節(jié)點掩碼中的每一個可包含Xtl…XP,這里,P可以是大于零(O)的整數(shù)。在一個或多個實施例中,多個處理節(jié)點中的每一個可包含可與多個核心掩碼相關(guān)的多個處理核心。在一個例子中,多個核心掩碼中的每一個可包含Yy Yq,這里,Q可以是大于零(O)的整數(shù)。
現(xiàn)在轉(zhuǎn)到圖上部的功能塊,根據(jù)一個或多個實施例,示例性應(yīng)用1330的可執(zhí)行/執(zhí)行代碼被轉(zhuǎn)發(fā)到編譯器1325,該編譯器1325處理該指令/代碼以從數(shù)據(jù)組2020 2021中的一個或多個產(chǎn)生一個或多個命令和/或一個或多個內(nèi)核2010 2014和/或一個或多個工作項2040 2042。例如,一個或多個命令可提供分成一個或多個工作項2040 2042(其每一個與內(nèi)核(例如,內(nèi)核2010 2014中的一個內(nèi)核)相關(guān))的工作。內(nèi)核2010 2014被轉(zhuǎn)發(fā)到調(diào)度器1335。在一個或多個實施例中,調(diào)度器1350包含執(zhí)行以下功能的調(diào)度器
(I)將工作要素調(diào)度(放置)到命令隊列1350中;(2)選擇性地將工作項分配到所選處理器核心;產(chǎn)生與分配/分派有工作項的所選處理核心對應(yīng)的附加處理單元(APU)(例如,節(jié)點)掩碼(例如,包含節(jié)點掩碼和核心掩碼的組合的位掩碼);和通過將APU掩碼轉(zhuǎn)發(fā)到命令隊列1350,附加/鏈接或以其它方式關(guān)聯(lián)APU掩碼與工作要素。在一個或多個實施例中,向所選處理器核心選擇性地分配工作項包含和/或基于可由調(diào)度器的設(shè)計員編程的調(diào)度準(zhǔn)則,所述調(diào)度準(zhǔn)則考慮了處理系統(tǒng)1005和/或DPS 1000上的工作負(fù)擔(dān)分配和工作平衡、例如CPU (中央處理單元)、GPU (圖形處理單元)、SPU (流處 理單元)等不同類型的處理單元的處理能力和其它因素。在一個或多個實施例中,工作的分割可基于每個處理節(jié)點,而不是處理器核心的粒度,APU掩碼代表識別特定的處理器節(jié)點的節(jié)點掩碼,并且在該所選處理節(jié)點上的任何處理器核心可然后消耗與節(jié)點掩碼相關(guān)的工作項。在一個或多個實施例中,與位掩碼相關(guān)的工作項可通過相關(guān)的位掩碼從命令隊列1350被路由到一個或多個處理核心。在一個例子中,與位掩碼相關(guān)的工作項可從命令隊列1350由處理器(例如,核心1110、核心1160、處理器1300等)通過相關(guān)的位掩碼被路由到一個或多個核心。在另一例子中,通過使用相關(guān)的位掩碼來從命令隊列1350中檢索一個或多個工作項的一個或多個核心,與位掩碼相關(guān)的工作項可從命令隊列1350通過相關(guān)的位掩碼被路由到一個或多個核心。現(xiàn)在轉(zhuǎn)到圖3,圖3示出了根據(jù)一個或多個實施例的處理節(jié)點的框圖。如所示的那樣,處理節(jié)點1100可包含上述的處理器核心1110 1117。如所示的那樣,處理器核心1110可包含執(zhí)行單元(XU_0)3110、與XU_0 3110耦合的本地存儲(LS_0)或存儲器3210、和與LS_0 3210耦合的存儲器控制器(MC_0) 3310 ;處理器核心1111可包含執(zhí)行單元(UX_1)3111、與XU_1 3111耦合的本地存儲(LS_1)或存儲器3211、和與LS_1 3211耦合的存儲器控制器(MC_1 )3311 ;并且處理器核心1117可包含執(zhí)行單元(XU_N)3117、與XU_N 3117耦合的本地存儲(LS_N)或存儲器3217、和與LS_1 3217耦合的存儲器控制器(MC_N) 3317。在一個或多個實施例中,本地存儲3210 3217可存儲用于各個處理器核心1110 1117的數(shù)據(jù)和/或執(zhí)行單元指令。如所示的那樣,處理器核心1110 1117可通過各個存儲器控制器3110 3117與互連總線3005耦合。在一個或多個實施例中,互連總線3005可使兩個或更多個處理節(jié)點元件相互耦合。如所示的那樣,節(jié)點存儲器控制器3400和總線接口控制器3410可與互連總線3005耦合。如所示的那樣,總線接口控制器3410可與數(shù)據(jù)總線1500耦合。在一個或多個實施例中,處理節(jié)點1100可包含節(jié)點本地存儲器1105,并且節(jié)點本地存儲器1105可與節(jié)點存儲器控制器3400耦合。在一個或多個實施例中,諸如存儲器控制器3310的處理器核心的存儲器控制器可包含可用于將來自節(jié)點本地存儲器1105和/或存儲器1405的信息復(fù)制到本地存儲3210的直接存儲器存取(DMA)控制器,并且DMA控制器可被用于將來自本地存儲3210的信息復(fù)制到節(jié)點本地存儲器1105和/或存儲器1405。在一個或多個實施例中,這些數(shù)據(jù)傳送可以是異步的。現(xiàn)在轉(zhuǎn)到圖4,圖4示出了根據(jù)一個或多個實施例的數(shù)據(jù)處理系統(tǒng)的一部分的框圖。如所示的那樣,存儲器1405可包含可包含各個工作項2040 2042的存儲器對象4005 4015和各個屬性(ATTRS) 4100 4102。在一個或多個實施例中,可利用可包含信息的一個或多個屬性來產(chǎn)生存儲器對象(0BJ),所述信息可被用于描述存儲器對象的數(shù)據(jù)和/或可被用于處理存儲器對象的數(shù)據(jù)。在一個例子中,屬性4100可包含關(guān)于工作項2040的工作項的數(shù)據(jù)大小的信息。例如,工作項2040的工作項可包含二百五十六(256)字節(jié)的 數(shù)據(jù)大小。在一個或多個實施例中,可在產(chǎn)生存儲器對象之后為存儲器對象設(shè)定屬性。在一個或多個實施例中,與存儲器對象相關(guān)的屬性可包含可使用存儲器對象來更新的數(shù)據(jù)。例如,屬性4100可包含高速緩存歷史統(tǒng)計數(shù)據(jù)。例如,屬性4100的高速緩存歷史統(tǒng)計數(shù)據(jù)可包含命中率和錯失率中的一個或多個。如所示的那樣,節(jié)點本地存儲器1105可包含工作項4040 4044、4050 4054和4060 4064和內(nèi)核2010。例如,工作項4040 4044包含于工作項2040中,工作項4050 4054包含于工作項2041中,并且工作項4060 4064包含于工作項2042中。例如,從各個存儲器對象4005 4015復(fù)制工作項4040 4044、4050 4054和4060 4064。在一個或多個實施例中,屬性4100 4102繼承自各個存儲器對象4005 4015,以提供關(guān)于各個工作項4040 4044、4050 4054和4060 4064的操作和/或處理的信息。現(xiàn)在轉(zhuǎn)到圖5A,圖5A示出了根據(jù)一個或多個實施例的本地存儲或存儲器的框圖。如所示的那樣,本地存儲或存儲器3210可被分成兩個或更多個區(qū)段5310 5312。在一個或多個實施例中,區(qū)段5310 5312與各個存儲器對象4005 4015對應(yīng)。在一個或多個實施例中,可以使用屬性4100 4102中的一個或多個屬性以將本地存儲3210分成兩個或更多個區(qū)段5310 5312。如所示的那樣,區(qū)段5310 5312可包含相應(yīng)的多個高速緩存線5320 5324、5330 5334和5340 5344。在一個或多個實施例中,可通過使用軟件(例如,通過API1340)配置多個高速緩存線。在一個或多個實施例中,存儲器對象屬性中的一個或多個可包含指示高速緩存大小和高速緩存線大小中的一個或多個的信息。在一個例子中,高速緩存大小可與區(qū)段的大小對應(yīng)。在另一例子中,區(qū)段的多個高速緩存線中的每一個可包含可與高速緩存線大小對應(yīng)的數(shù)據(jù)大小。在一種情況下,數(shù)據(jù)大小可包含用于工作項的多個字節(jié)。如所示的那樣,高速緩存線5320 5324可包含第一數(shù)據(jù)大小,高速緩存線5330 5334可包含第二數(shù)據(jù)大小,而高速緩存線5340 5344可包含第三數(shù)據(jù)大小。在一個或多個實施例中,第一到第三數(shù)據(jù)大小可包含相同的數(shù)據(jù)大小,第一到第三數(shù)據(jù)大小中的兩個可包含相同的數(shù)據(jù)大小,或者第一到第三數(shù)據(jù)大小可包含各不同的數(shù)據(jù)大小。在一個或多個實施例中,存儲器對象屬性中的一個或多個可包含指示故障策略和存取策略中的一個或多個的信息。在一個例子中,屬性4100可包含指示隨機存取策略的信息。在另一例子中,屬性4100可包含指示依次存取策略的信息。例如,依次存取策略可指示一個或多個工作項可以以推測(speculative)方式被復(fù)制到本地存儲。例如,工作項4040可被復(fù)制到本地存儲3210,并且基于與工作項4040相關(guān)(例如,從存儲器對象4005繼承)的依次存取策略,可指示工作項4041 4042也可被復(fù)制到本地存儲3210。如所示的那樣,高速緩存線5320 5322可包含各個工作項4040 4042,高速緩存線5330 5332可包含各個工作項4050 4052,而高速緩存線5340 5342可包含各個工作項4060 4062。如所示的那樣,本地存儲3210可包含內(nèi)核2010,并且本地存儲3210可被用于存儲可在處理器核心1110上執(zhí)行的數(shù)據(jù)和指令。現(xiàn)在轉(zhuǎn)到圖5B,圖5B示出了根據(jù)一個或多個實施例的其中多個工作項可占據(jù)一條高速緩存線的本地存儲或存儲器的框圖。如所示的那樣,本地存儲或存儲器3210可被分成兩個或更多個區(qū)段5310 5312。在一個或多個實施例中,區(qū)段5310 5312與各個存儲器對象4005 4015對應(yīng)。在一個或多個實施例中,屬性4100 4102的一個或多個屬性可被用于將本地存儲3210分成兩個或更多個區(qū)段5310 5312。在一個或多個實施例中,數(shù)據(jù)大小可包含用于多個工作項的多個字節(jié)。例如,工作項可包含邊界體積層次(BVH)節(jié)點,并且由于可在通過和/或處理邊界體積層次時測試兩個兄弟(sibling)BVH節(jié)點,因此數(shù)據(jù)大小可被設(shè)為兩個BHV節(jié)點。如所示的那樣,高速緩存線5320可包含工作項4040和4041,并且高速緩存線5321可包含工作項4042和4043。現(xiàn)在轉(zhuǎn)到圖5C,圖5C示出了根據(jù)一個或多個實施例的其中一個工作項可占據(jù)多個高速緩存線的本地存儲或存儲器的框圖。如所示的那樣,本地存儲或存儲器3210可被分成兩個或更多個區(qū)段5310 5312。在一個或多個實施例中,區(qū)段5310 5312與各個存儲器對象4005 4015對應(yīng)。在一個或多個實施例中,屬性4100 4102中的一個或多個屬性可被用于將本地存儲3210分成兩個或更多個區(qū)段5310 5312。在一個或多個實施例中,數(shù)據(jù)大小可包含可存儲工作項的一部分的多個字節(jié)。如所示的那樣,高速緩存線5320和5321可包含工作項4040,這里,高速緩存線5320可包含工作項4040的第一部分,并且高速緩存線5321可包含工作項4040的第二部分。如所示的那樣,高速緩存線5322和5323可包含工作項4041,這里,高速緩存線5322可包含工作項4041的第一部分,并且高速緩存線5323可包含工作項4041的第二部分?,F(xiàn)在轉(zhuǎn)到圖6,圖6示出了根據(jù)一個或多個實施例的本地存儲或存儲器的框圖。如所示的那樣,本地存儲或存儲器3211可被分成兩個或更多個區(qū)段6310 6312。在一個或多個實施例中,區(qū)段6310 6312與各個存儲器對象4005 4015對應(yīng)。在一個或多個實施例中,屬性4100 4102中的一個或多個屬性可被用于將本地存儲3211分成兩個或更多個區(qū)段6310 6312。如所示的那樣,高速緩存線6320和6321可包含各個工作項4043和4044,高速緩存線6330和6331可包含各個工作項4053和4054,而高速緩存線6330和6331可包含各個工作項4063和4064。如所示的那樣,本地存儲3211可包含內(nèi)核2010,并且本地存儲3211可被用于存儲可在處理器核心1111上執(zhí)行的數(shù)據(jù)和指令。
現(xiàn)在轉(zhuǎn)到圖7,圖7示出了根據(jù)一個或多個實施例的操作數(shù)據(jù)處理系統(tǒng)的方法。方法在初始塊7005開始。在塊7010,API 1340可用兩個或更多個工作項填充第一存儲器對象。例如,API 1340可用工作項2040填充存儲器對象4005。在塊7015,API 1340可用兩個或更多個工作項填充第二存儲器對象。例如,API 1340可用工作項2041填充存儲器對象4010。在塊7020,處理節(jié)點1100可將第一存儲器對象的第一部分復(fù)制到節(jié)點存儲器。例如,處理節(jié)點1100可將工作項4040 4044從存儲器對象4005復(fù)制到節(jié)點本地存儲器1105。
在塊7025,處理節(jié)點110可將第二存儲器對象的第二部分復(fù)制到節(jié)點存儲器。例如,處理節(jié)點1100可將工作項4050 4054從存儲器對象4010復(fù)制到節(jié)點本地存儲器1105。在塊7030,處理器核心1110可確定第一數(shù)據(jù)大小。例如,處理器核心1110可由屬性4100確定第一數(shù)據(jù)大小。在塊7035,處理器核心1110可確定第二數(shù)據(jù)大小。例如,處理器核心1110可由屬性4101確定第二數(shù)據(jù)大小。在塊7040,處理器核心1110可基于第一數(shù)據(jù)大小將第一工作項從第一存儲器對象的第一部分復(fù)制到處理器核心1110的第一存儲器存儲(memory store)。例如,處理器核心1110可基于第一數(shù)據(jù)大小將工作項4040從節(jié)點本地存儲器1105復(fù)制到本地存儲3210。在一個或多個實施例中,處理器核心1110可包含DMA控制器,并且DMA控制器可基于第一數(shù)據(jù)大小將工作項4040從節(jié)點本地存儲器1105復(fù)制到本地存儲3210。在塊7045,處理器核心1110可基于第二數(shù)據(jù)大小將第二工作項從第二存儲器對象的第二部分復(fù)制到處理器核心1110的第一存儲器存儲。例如,處理器核心1110可基于第二數(shù)據(jù)大小將工作項4050從節(jié)點本地存儲器1105復(fù)制到本地存儲3210。在一個或多個 實施例中,處理器核心1110可包含DMA控制器,并且DMA控制器可基于第一數(shù)據(jù)大小將工作項4050從節(jié)點本地存儲器1105復(fù)制到本地存儲3210。在塊7050,處理器核心1110可確定與第一存儲器對象相關(guān)的依次存取策略。例如,處理器核心1110可由屬性4100確定依次存取策略。在塊7055,處理器核心1110可基于第一數(shù)據(jù)大小將第三工作項從第一存儲器對象的第一部分復(fù)制到處理器核心1110的第一存儲器存儲。例如,處理器核心1110可基于第一數(shù)據(jù)大小將工作項4041從節(jié)點本地存儲器1105復(fù)制到本地存儲3210。在一個或多個實施例中,可響應(yīng)于依次存取策略的確定而自動執(zhí)行塊7055。例如,依次存取策略可指示可推測性地高速緩存附加的工作項。例如,工作項4041可以是序列中工作項4040之后的下一工作項。在塊7060,處理器核心1110可處理第一工作項。在塊7065,處理器核心1110可處理第二工作項。在塊7070,處理器核心1110可處理第三工作項。方法然后在塊7075結(jié)束?,F(xiàn)在轉(zhuǎn)到圖8,圖8示出了根據(jù)一個或多個實施例的產(chǎn)生存儲器對象的方法。方法在初始塊8005開始。在塊8010,API 1340可在用于存儲器對象的存儲器中分配空間。例如,API 1340可在用于存儲器對象4005的存儲器1405中分配空間。在一個或多個實施例中,為存儲器對象4005分配的空間不與另一存儲器對象共享地址。在塊8015,API 1340可設(shè)定與存儲器對象相關(guān)的屬性。例如,API 1340可設(shè)定屬性4100。在一個或多個實施例中,API 1340可設(shè)定屬性4100以指示高速緩存策略、高速緩存大小和高速緩存線大小等中的一個或多個。方法然后在塊8020結(jié)束?,F(xiàn)在轉(zhuǎn)到圖9,圖9示出了根據(jù)一個或多個實施例的設(shè)定存儲器對象的屬性的方法。方法在初始塊9005開始。在塊9010上,API 1340可設(shè)定與存儲器對象相關(guān)的屬性。例如,API 1340可設(shè)定存儲器對象4010的屬性4101。在一種情況下,存儲器對象4010可被事先分配,并且API 1340可設(shè)定存儲器對象4010的屬性4101。在另一情況下,存儲器對象4010可事先與屬性4101相關(guān),并且API 1340可設(shè)定存儲器對象4010的屬性4101中的一個或多個不同屬性。在一個或多個實施例中,API 1340可設(shè)定屬性4101,以指示高速緩存策略、高速緩存大小和高速緩存線大小等中的一個或多個。方法然后在塊9015結(jié)束?,F(xiàn)在轉(zhuǎn)到圖10,圖10示出了根據(jù)一個或多個實施例的設(shè)定存儲器對象的屬性的方法。方法在初始塊10005開始。在塊10010,處理器1110可接收與第一存儲器對象相關(guān)的第一屬性。例如,處理器1110可接收與存儲器對象4005相關(guān)的屬性4100。在塊10015,處理器1110可接收與第二存儲器對象相關(guān)的第二屬性。例如,處理器1110可接收與存儲器對象4010相關(guān)的屬性4101。在塊10020,處理器1110可基于第一屬性產(chǎn)生第一區(qū)段。例如,處理器1110可基于屬性4100在本地存儲3210中產(chǎn)生區(qū)段5310。在塊10025,處理器1110可基于第一屬性在第一區(qū)段中產(chǎn)生兩個或更多個高速緩存線。例如,處理器1110可基于屬性4100在區(qū)段5310中產(chǎn)生高速緩存線5320 5324。在塊10030,處理器1110可基于第二屬性產(chǎn)生第二區(qū)段。例如,處理器1110可基于屬性4101在本地存儲3210中產(chǎn)生區(qū)段5311。在塊10035,處理器1110可基于第二屬性在第二區(qū)段中產(chǎn)生兩個或更多個高速緩存線。例如,處理器1110可基于屬性4101在區(qū)段5311中產(chǎn)生高速緩存線5330 5334。在塊10040,處理器1110可用兩個或更多個工作項填充第一區(qū)段的兩個或更多個高速緩存線。例如,處理器1110可用工作項4040 4042填充高速緩存線5320 5322。在一個或多個實施例中,處理器1110的MC 03310可用工作項4040 4042填充高速緩存線5320 5322。在塊10045上,處理器1110可用兩個或更多個工作項填充第二區(qū)段的兩個或更多個高速緩存線。例如,處理器1110可用工作項4050 4052填充高速緩存線5330 5332。在一個或多個實施例中,處理器1110的MC_03310可用工作項4050 4052填充高速緩存線5330 5332。方法然后在塊10050結(jié)束。在其中處理器核心和DPS的存儲器位置之間展現(xiàn)出低數(shù)據(jù)傳送和交叉通信等待時間(cross communication latency)的多節(jié)點處理系統(tǒng)中可有利地實現(xiàn)所提供實施例的特征。假定節(jié)點可從中央/公共命令隊列檢索工作,那么對于用于不同節(jié)點的命令隊列的等待時間可能相對較短,使得總工作檢索處理在用于從命令隊列抓取工作的處理核心的總處理時間中導(dǎo)致可接受的等待時間懲罰。利用單個命令隊列的實施方式,基本不再需要使多個節(jié)點的多個命令隊列同步,并且可允許動態(tài)分配各種子設(shè)備或虛擬設(shè)備。所描述的實施例適于當(dāng)在計算機節(jié)點之間進(jìn)行同步時展現(xiàn)出小的懲罰(等待時間)的多處理器計算系統(tǒng)(或系統(tǒng)架構(gòu))上的實施方式。例如,利用通過“本地”組織一諸如在單個物理系統(tǒng)(例如,處理系統(tǒng)1005)內(nèi)一連接的NUMA節(jié)點,當(dāng)使單個內(nèi)核的分布式工作與多個節(jié)點上的工作項同步時,存在相對較小的等待時間懲罰。這進(jìn)一步以低的交叉節(jié)點等待時間實現(xiàn)了工作和數(shù)據(jù)密集操作到NUMA系統(tǒng)的擴展/在其上的實現(xiàn)。利用所述實施例,NUMA親合性(affinity)可以不要求與單獨的各節(jié)點關(guān)聯(lián)的多個單個命令隊列,并且提供單個命令隊列結(jié)構(gòu)。利用單個命令隊列實施方式。以上的實施例可適用于具有足夠接近的NUMA區(qū)域的系統(tǒng),使得它們可有效地共享公共命令/工作隊列。對于其中多次獨立地執(zhí)行公共功能的工作負(fù)載尤其如此。公共/全局命令隊列被所有NUMA節(jié)點使用。該GCQ中的每個工作要素從而包含APU掩碼(N0DEMASK)、工作剩余計數(shù)(在處理多次迭代的情況下)和看到的計數(shù)。通過該配置,工作被如下調(diào)度(a)處理單元檢查是否在下一工作要素的APU掩碼中設(shè)定單元的NUMA位;(b)如果單元的NUMA位沒有被設(shè)定,那么處理單元將看到的計數(shù)遞增,以指示單元已完成該工作要素,并且,前進(jìn)到下一要素;(c)如果單元的NUMA位被設(shè)定,那么,基于處理單元從工作要素檢索的實際工作量,單元將工作剩余計數(shù)遞減可調(diào)的“塊大小”;(d)如果遞減的結(jié)果是表示不再存在工作的值(例如,O或-1),那么處理單元將看到的計數(shù)遞增,這表示處理單元已完成該要素。處理單元然后前進(jìn)到下一工作要素;(Θ)如果處理單元是看到要素的最后一個處理器核心(即,看到的計數(shù)等于零),這表示所有的處理核心均已至少一次地看到工作項,那么處理單元將全局隊列中的位置標(biāo)記為“空閑”。所描述實施例的某些特征可適合于諸如由OpenCL 和在多核心數(shù)據(jù)處理系統(tǒng)上執(zhí)行的類似地構(gòu)建的應(yīng)用提供的范例之類的N維(N Dimensional,ND)Range處理/執(zhí)行范例,在所述多核心數(shù)據(jù)處理系統(tǒng)中執(zhí)行命令包含有效地執(zhí)行和平衡該命令的工作負(fù)載所必需的信息,其可包含數(shù)據(jù)或任務(wù)并行處理要求。每個命令包含與要被執(zhí)行的命令內(nèi)的工作組的總數(shù)、要被計算的剩余的工作組的數(shù)量、已處理的工作組的數(shù)量、要一次處理的工作組的數(shù)量(保留大小)對應(yīng)的信息。由命令提供的其它信息可包含要在命令中處理的執(zhí)行線程的數(shù)量和已看到命令的執(zhí)行線程的數(shù)量。在該執(zhí)行范例內(nèi),并且根據(jù)當(dāng)前描述的實施例,執(zhí)行單元可處理來自包含多個隊列條目的單個全局命令隊列的命令。如所描述實施例提供的那樣,執(zhí)行單元是可位于分布式網(wǎng)絡(luò)上的處理核心。但是,雖然在描述和解釋性實施例中始終作為執(zhí)行單元的例子使用 處理器核心,但是在其它的實施例中,執(zhí)行單元可以是執(zhí)行命令的任何設(shè)備,包含但不限于處理核心、CPU、GPU、SPU、線程以及甚至整個計算系統(tǒng)。在以上的流程圖中的每一個中,可在包含計算機可讀代碼的計算機可讀介質(zhì)中體現(xiàn)方法中的一個或多個,使得當(dāng)在計算裝置上執(zhí)行計算機可讀代碼時執(zhí)行一系列的步驟。在一些實現(xiàn)中,在不背離本發(fā)明的精神和范圍的情況下,組合、同時或者以不同的次序執(zhí)行或者可能省略方法的某些步驟。因此,雖然以特定的次序描述和示出方法步驟,但是,步驟的特定的次序的使用不意味著對于本發(fā)明的任何限制。在不背離本發(fā)明的精神或范圍的情況下,可關(guān)于步驟的次序提出變化。因此,使用特定的次序不是出于限制的意義,并且本發(fā)明的范圍僅由所附的權(quán)利要求限定。本領(lǐng)域技術(shù)人員可以理解,本發(fā)明的方面可體現(xiàn)為系統(tǒng)、方法或計算機程序產(chǎn)品。因此,本發(fā)明的方面可采取完全硬件實施例、完全軟件實施例(包含固件、駐留軟件、微代碼等)或組合軟件和硬件方面的實施例的形式,所有這些均可統(tǒng)稱為“電路”、“模塊”或“系統(tǒng)”。并且,本發(fā)明的方面可采取體現(xiàn)于上面體現(xiàn)有計算機可讀程序代碼的一個或多個計算機可讀介質(zhì)中的計算機程序產(chǎn)品的形式??梢岳靡粋€或多個計算機可讀介質(zhì)的任意組合。計算機可讀介質(zhì)可以是計算機可讀信號介質(zhì)或計算機可讀存儲介質(zhì)。計算機可讀存儲介質(zhì)可以為例如但不限于電子、磁、光學(xué)、電磁、紅外或半導(dǎo)體系統(tǒng)、裝置或器件或者以上的任意適當(dāng)?shù)慕M合。計算機可讀存儲介質(zhì)的更特定的例子(非詳盡列表)會包含以下方面具有一個或多個導(dǎo)線的電連接、便攜式計算機盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦寫可編程只讀存儲器(EPR0M或快擦寫存儲器)、光纖、便攜式緊致盤只讀存儲器(CD-ROM)、光學(xué)存儲設(shè)備、磁存儲設(shè)備或以上方面的任意適當(dāng)?shù)慕M合。在本文獻(xiàn)的上下文中,計算機可讀存儲介質(zhì)可以是可包含或存儲供指令執(zhí)行系統(tǒng)、裝置或設(shè)備使用與其相關(guān)聯(lián)的程序的任何可觸知介質(zhì)。計算機可讀信號介質(zhì)可包含例如基帶中或作為載波的一部分的具有體現(xiàn)于其中的例如計算機可讀程序代碼的傳播數(shù)據(jù)信號。這種傳播信號可采取包含但不限于電磁、光學(xué)或它們的任意適當(dāng)?shù)慕M合的各種形式中的任一種。計算機可讀信號介質(zhì)可以是不是計算機可讀存儲介質(zhì)并且可傳送、傳播或傳輸供指令執(zhí)行系統(tǒng)、裝置或設(shè)備使用與其相關(guān)聯(lián)的程序的任何計算機可讀存儲介質(zhì)。可通過使用包含但不限于無線、有線、光纖電纜、R. F等或任何以上的任意適當(dāng)組合的任意適當(dāng)?shù)慕橘|(zhì)傳送體現(xiàn)于計算機可讀介質(zhì)上的程序代碼??梢砸园T如Java、SmalltalKC++等的面向?qū)ο缶幊陶Z言和諸如“C”編程語言或類似的編程語言的常規(guī)的過程編程語言的一種或多種編程語言的任意的組合書寫用于實施本發(fā)明的各方面的操作的計算機程序代碼。可完全在用戶的計算機上、部分在用戶的計算機上、作為獨立的軟件包、部分在用戶的計算機上并且部分在遠(yuǎn)程計算機上或者完全在遠(yuǎn)程計算機或服務(wù)器上執(zhí)行計算機代碼。在后一種方案中,遠(yuǎn)程計算機可通過包括局域網(wǎng)絡(luò)(LAN)或廣域網(wǎng)絡(luò)(WAN)的任意類型的網(wǎng)絡(luò)與用戶的計算機連接,或者可與外部計算機進(jìn)行連接(例如,通過使用Internet Service Provider (因特網(wǎng)服務(wù)提供商)的因特網(wǎng))。以下關(guān)于根據(jù)本發(fā)明的實施例的方法、裝置(系統(tǒng))和計算機程序產(chǎn)品的流程圖和/或框圖描述了本發(fā)明的方面。應(yīng)當(dāng)理解,可通過計算機程序指令實現(xiàn)流程圖和/或框圖的 每個塊和流程圖和/或框圖中的塊的組合。這些計算機程序指令可被提供給通用計算機、特定用途計算機或其它可編程數(shù)據(jù)處理裝置的處理器以制成機器,使得通過計算機或其它可編程數(shù)據(jù)處理裝置的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖和/或框圖的一個或多個塊中規(guī)定的功能/作用的裝置。這些計算機程序指令也可被存儲于可指導(dǎo)計算機、其它可編程數(shù)據(jù)處理裝置或其它裝置以特定的方式起作用的計算機可讀介質(zhì)中,使得存儲于計算機可讀介質(zhì)中的指令產(chǎn)生包含實現(xiàn)在流程圖和/或框圖的一個或多個塊中規(guī)定的功能/作用的指令的制造物品。計算機程序指令也可被加載到計算機、其它可編程數(shù)據(jù)處理裝置或其它裝置上,以導(dǎo)致在計算機、其它可編程裝置或其它裝置上執(zhí)行一系列的動作步驟以產(chǎn)生計算機實現(xiàn)的處理, 使得在計算機或其它可編程裝置上執(zhí)行的指令提供用于實現(xiàn)在流程圖和/或框圖的一個或多個塊中規(guī)定的功能/作用的處理。還可理解,可通過使用軟件、固件或硬件中的任意組合實現(xiàn)本發(fā)明的實施例中的處理。作為用軟件實現(xiàn)本發(fā)明的準(zhǔn)備步驟,一般在諸如固定(硬)驅(qū)動、盤、光盤、磁帶、諸如ROM、PROM等的半導(dǎo)體存儲器的一個或多個機器可讀存儲介質(zhì)中存儲編程代碼(軟件或固件),由此制作根據(jù)本發(fā)明的制造物品。通過任意地直接從存儲設(shè)備執(zhí)行代碼、通過將代碼從存儲設(shè)備復(fù)制到諸如硬盤、RAM等的另一存儲設(shè)備中或者通過用諸如數(shù)字和模擬通信鏈接的傳送型介質(zhì)傳送用于遠(yuǎn)程執(zhí)行的代碼,使用包含編程代碼的制造物品??赏ㄟ^組合包含根據(jù)本發(fā)明的代碼的一個或多個機器可讀存儲設(shè)備與適當(dāng)?shù)奶幚碛布詧?zhí)行包含于其中的代碼,實現(xiàn)本發(fā)明的方法。用于實現(xiàn)本發(fā)明的裝置可以是包含或具有對于根據(jù)本發(fā)明編碼的程序的網(wǎng)絡(luò)訪問的一個或多個處理裝置和存儲系統(tǒng)。因此,重要的是,雖然在具有安裝(或執(zhí)行)軟件的完全功能計算機(服務(wù)器)的背景下描述了本發(fā)明的解釋性實施例,但是本領(lǐng)域技術(shù)人員可以理解,本發(fā)明的解釋性實施例的軟件方面能夠分發(fā)為各種形式的程序產(chǎn)品,并且不管用于實際實施分發(fā)的介質(zhì)的特別類型如何,本發(fā)明的解釋性實施例都同樣適用。雖然參照示例性實施例描述了本發(fā)明,但是,本領(lǐng)域技術(shù)人員可以理解,在不背離本發(fā)明的范圍的情況下,可以提出各種變化,并且可用等同物替代其要素。另外,可以提出許多修改以使特定的系統(tǒng)、裝置或其組件在不背離本發(fā)明基本范圍的情況下適于本發(fā)明的教導(dǎo)。因此,本發(fā)明不是要限于公開的用于實施本發(fā)明的特定實施例,而是,本發(fā)明將包括落入所附權(quán)利要求的范圍內(nèi)的所有實施例。并且,使用術(shù)語第一、第二等不表示任何次序或重要性,而使用術(shù)語第一、第二等是為了使要素相互區(qū)分開。這里使用的術(shù)語僅是出于描述特定的實施例的目的,而不是要限制本發(fā)明。如這里使用的那樣,除非上下文清楚地另外指出,否則,單數(shù)形式“一種”、“一種”、“該”也要包括復(fù)數(shù)形式。還應(yīng)理解,在本說明書中使用的術(shù)語“包括”和/或“包含”規(guī)定所陳述的特征、整數(shù)、步驟、操作、元件和/或部件的存在,但不排除一個或多個其它特征、整數(shù)、步驟、操作、元件、部件和/或它們的組的存在或添加。
以下權(quán)利要求中的所有手段或步驟的相應(yīng)的結(jié)構(gòu)、材料、動作和等同物加上功能要素要包括用于與具體要求的其它要求的要素組合地執(zhí)行功能的任何結(jié)構(gòu)、材料或動作。本發(fā)明的描述的給出是出于解釋和描述的目的,而不是詳盡的或者不是要將本發(fā)明限于公開的形式。在不背離本發(fā)明的范圍和精神的情況下,許多的修改和變更對于本領(lǐng)域技術(shù)人員來說是十分明顯的。選擇和描述實施例是為了最好地解釋本發(fā)明的原理和實際的應(yīng)用,并且是為了使得本領(lǐng)域技術(shù)人員理解本發(fā)明的具有適于設(shè)想的特定用途的各種修改的各種實施例。
權(quán)利要求
1.一種操作包括具有多個處理器核心的處理器節(jié)點的數(shù)據(jù)處理系統(tǒng)的方法,包括 用第一多個工作項填充全局存儲器中的第一存儲器對象; 用第二多個工作項填充所述全局存儲器中的第二存儲器對象,其中,所述第二存儲器對象不與所述第一存儲器對象共享公共地址空間; 將所述第一存儲器對象的第一部分復(fù)制到處理器節(jié)點存儲器; 根據(jù)與所述第一存儲器對象相關(guān)的至少第一屬性確定第一數(shù)據(jù)大??;以及基于所述第一數(shù)據(jù)大小將第一工作項從所述第一存儲器對象的所述第一部分復(fù)制到所述多個處理器核心的第一處理器核心的存儲器存儲。
2.根據(jù)權(quán)利要求I所述的方法,還包括 根據(jù)與所述第一存儲器對象相關(guān)的至少第二屬性確定依次存取策略。
3.根據(jù)權(quán)利要求2所述的方法,還包括 響應(yīng)于所述確定所述依次存取策略,基于所述第一數(shù)據(jù)大小自動將第二工作項從所述第一存儲器對象的所述第一部分復(fù)制到所述多個處理器核心的所述第一處理器核心的所述存儲器存儲,其中所述第二工作項在次序上是在所述第一工作項之后的下一個。
4.根據(jù)權(quán)利要求I所述的方法,其中所述基于所述第一數(shù)據(jù)大小將第一工作項從所述第一存儲器對象的所述第一部分復(fù)制到所述多個處理器核心的所述第一處理器核心的存儲器存儲包括 使用與所述第一處理器核心相關(guān)的直接存儲器存取(DMA)控制器。
5.根據(jù)權(quán)利要求I所述的方法,還包括 處理來自所述存儲器存儲的所述第一工作項。
6.根據(jù)權(quán)利要求I所述的方法,還包括 接收與所述第一存儲器對象和所述第二存儲器對象相關(guān)并至少包含所述第一屬性的多個屬性;和 基于所述多個屬性將所述第一處理器核心的所述存儲器存儲分成多個區(qū)段; 其中,所述基于所述第一數(shù)據(jù)大小將所述第一工作項從所述第一存儲器對象的所述第一部分復(fù)制到所述多個處理器核心的所述第一處理器核心的所述存儲器存儲包含將所述第一工作項從所述第一存儲器對象的所述第一部分復(fù)制到所述多個區(qū)段的第一區(qū)段。
7.根據(jù)權(quán)利要求6所述的方法,還包括 將所述第二存儲器對象的第二部分復(fù)制到所述節(jié)點存儲器; 根據(jù)所述多個屬性確定第二數(shù)據(jù)大??;和 基于所述第二數(shù)據(jù)大小將第二工作項從所述第二存儲器對象的所述第二部分復(fù)制到所述多個區(qū)段的第二區(qū)段。
8.一種計算機程序產(chǎn)品,包括 計算機可讀存儲介質(zhì);和 所述計算機可讀存儲介質(zhì)上的程序代碼,所述程序代碼在被處理器執(zhí)行時,提供如任一在前權(quán)利要求所請求保護的操作數(shù)據(jù)處理系統(tǒng)的方法。
9.一種數(shù)據(jù)處理系統(tǒng),包括 處理器; 與所述處理器耦合的全局存儲器;與所述全局存儲器耦合的節(jié)點存儲器;和 包含與所述節(jié)點存儲器耦合的多個處理核心的第一節(jié)點;和 能夠在所述處理器上執(zhí)行以使得所述數(shù)據(jù)處理系統(tǒng)能夠提供如權(quán)利要求I一 7中任一項中所請求保護的操·作數(shù)據(jù)處理系統(tǒng)的方法的程序代碼。
全文摘要
本公開涉及多核心數(shù)據(jù)處理系統(tǒng)中的工作項分布。數(shù)據(jù)處理系統(tǒng)包含多個處理器核心或者與其耦合。多個存儲器對象中的每一個可被工作項填充,并且可與可包含信息的屬性相關(guān),所述信息可被用于描述每個存儲器對象的數(shù)據(jù)和/或可被用于處理每個存儲器對象的數(shù)據(jù)。屬性可被用于指示高速緩存策略、高速緩存大小和高速緩存線大小等中的一個或多個。在一個或多個實施例中,屬性可被用作如何使用每個存儲器對象的歷史。屬性可被用于指示高速緩存歷史統(tǒng)計數(shù)據(jù)(例如,命中率、錯失率等)。
文檔編號G06F9/50GK102687129SQ201080059921
公開日2012年9月19日 申請日期2010年12月9日 優(yōu)先權(quán)日2009年12月30日
發(fā)明者B·米諾爾, G·H·比婁斯, J·馬德魯加, R·A·米庫什 申請人:國際商業(yè)機器公司