組合式CPU/GPU體系結(jié)構(gòu)系統(tǒng)中的裝置發(fā)現(xiàn)和拓?fù)鋱?bào)告背景發(fā)明領(lǐng)域本發(fā)明大體上是針對(duì)計(jì)算機(jī)系統(tǒng)。更具體來(lái)說(shuō),本發(fā)明是針對(duì)計(jì)算機(jī)系統(tǒng)拓?fù)洹?br/>
背景技術(shù):對(duì)使用圖形處理單元(GPU)來(lái)進(jìn)行一般計(jì)算的渴望在最近由于GPU的示例性每單位功率性能和/或成本而變得更加顯著。一般來(lái)說(shuō),GPU的計(jì)算能力已以超過(guò)對(duì)應(yīng)中央處理器(CPU)平臺(tái)的計(jì)算能力的速率增長(zhǎng)。隨著移動(dòng)計(jì)算市場(chǎng)(例如,筆記本計(jì)算機(jī)、移動(dòng)智能電話、平板計(jì)算機(jī)等)和其所必需的支持服務(wù)器/企業(yè)系統(tǒng)的蓬勃發(fā)展,這種增長(zhǎng)已被用來(lái)提供指定品質(zhì)的所需用戶體驗(yàn)。因此,組合使用CPU和GPU來(lái)執(zhí)行具有數(shù)據(jù)并行內(nèi)容的工作量正在成為一項(xiàng)體積技術(shù)(volumetechnology)。然而,GPU傳統(tǒng)上已在約束程序設(shè)計(jì)環(huán)境中進(jìn)行操作,其可主要用于圖形的加速。這些約束由以下事實(shí)而引起:GPU并不具有與CPU一樣豐富的程序設(shè)計(jì)生態(tài)系統(tǒng)。因此,它們的使用已主要限于二維(2D)和三維(3D)圖形以及少數(shù)前沿的多媒體應(yīng)用,這些多媒體應(yīng)用已被習(xí)慣地用于處理圖形和視頻應(yīng)用程序設(shè)計(jì)接口(API)。隨著多廠商支持的OpenCL和DirectCompute標(biāo)準(zhǔn)API和支持工具的出現(xiàn),GPU在傳統(tǒng)應(yīng)用中的限制已被擴(kuò)展到傳統(tǒng)圖形的范圍之外。雖然OpenCL和DirectCompute是有希望的開端,但是在創(chuàng)建允許將CPU和GPU組合來(lái)像CPU一樣流暢地用于大多數(shù)程序設(shè)計(jì)任務(wù)的環(huán)境和生態(tài)系統(tǒng)方面仍存在著許多障礙?,F(xiàn)有的計(jì)算系統(tǒng)常常包括多個(gè)處理裝置。例如,一些計(jì)算系統(tǒng)包括在獨(dú)立芯片上的CPU和GPU(例如,CPU可能位于母板上,而GPU可能位于圖形卡上)或在單個(gè)芯片封裝中的CPU和GPU。然而,這兩種布置仍包括與以下各項(xiàng)相關(guān)的重大挑戰(zhàn):(i)獨(dú)立的存儲(chǔ)系統(tǒng)、(ii)有效調(diào)度、(iii)提供進(jìn)程之間的服務(wù)質(zhì)量(QoS)保證、(iv)程序設(shè)計(jì)模型以及(v)編譯至多個(gè)目標(biāo)指令集體系結(jié)構(gòu)(ISA)—全部都要同時(shí)使功耗降到最小。例如,離散的芯片布置迫使系統(tǒng)和軟件體系結(jié)構(gòu)設(shè)計(jì)者利用芯片間接口來(lái)使每一個(gè)處理器存取存儲(chǔ)器。雖然這些外部接口(例如,芯片間接口)對(duì)用于配合異構(gòu)型處理器的存儲(chǔ)器等待時(shí)間和功耗具有負(fù)效應(yīng),但是獨(dú)立的存儲(chǔ)系統(tǒng)(即,獨(dú)立的地址空間)和驅(qū)動(dòng)器管理的共享存儲(chǔ)器產(chǎn)生開銷,所述開銷對(duì)細(xì)粒卸荷(finegrainoffload)來(lái)說(shuō)變得不可接受。離散芯片布置和單芯片布置兩者都會(huì)限制能夠發(fā)送至GPU來(lái)執(zhí)行的命令的類型。舉例來(lái)說(shuō),常常不應(yīng)將計(jì)算命令(例如,物理或人工智能命令)發(fā)送至GPU來(lái)執(zhí)行。存在這個(gè)基于性能的限制是因?yàn)镃PU可能相對(duì)快速地需要由這些計(jì)算命令執(zhí)行的操作的結(jié)果。然而,由于當(dāng)前系統(tǒng)中的向GPU分派工作的高開銷以及這些命令可能必須排隊(duì)等候首先執(zhí)行其它先前發(fā)出的命令的事實(shí),所以將計(jì)算命令發(fā)送至GPU所引發(fā)的等待時(shí)間常常是不可接受的。假定傳統(tǒng)GPU可能不會(huì)有效地執(zhí)行一些計(jì)算命令,則所述命令必須在CPU內(nèi)部執(zhí)行。必須在CPU上執(zhí)行命令增加了對(duì)CPU的處理負(fù)擔(dān)并且會(huì)阻礙總的系統(tǒng)性能。雖然GPU為計(jì)算卸荷提供了極好的機(jī)會(huì),但是傳統(tǒng)GPU可能并不適合于系統(tǒng)-軟件-驅(qū)動(dòng)進(jìn)程管理,所述系統(tǒng)-軟件-驅(qū)動(dòng)進(jìn)程管理是在多處理器環(huán)境中進(jìn)行有效操作所需要的。這些限制會(huì)產(chǎn)生若干問(wèn)題。例如,由于進(jìn)程無(wú)法被有效地識(shí)別和/或搶先,所以流氓進(jìn)程可以在任意長(zhǎng)的時(shí)間內(nèi)占用GPU硬件。在其它情況下,對(duì)硬件進(jìn)行上下文切斷的能力受到嚴(yán)重約束,此情形發(fā)生在非常粗略的粒度下,而且只發(fā)生在程序執(zhí)行過(guò)程中一組極為有限的點(diǎn)上。存在這個(gè)約束是因?yàn)椴恢С止?jié)省必要的體系結(jié)構(gòu)和微體系結(jié)構(gòu)狀態(tài)來(lái)恢復(fù)和繼續(xù)進(jìn)程。缺乏對(duì)精確異常的支持會(huì)阻止有故障的作業(yè)在稍晚的點(diǎn)上進(jìn)行上下文切出和恢復(fù),從而導(dǎo)致較低的硬件利用率,因?yàn)橛泄收系木€程占用了硬件資源而且在故障處理期間處于閑置狀態(tài)。將CPU、GPU、I/O存儲(chǔ)器管理組合成統(tǒng)一體系結(jié)構(gòu)以使得計(jì)算任務(wù)可以有效地進(jìn)行調(diào)度和分配,這需要系統(tǒng)和應(yīng)用軟件具有統(tǒng)一CPU/GPU系統(tǒng)體系結(jié)構(gòu)的特征、特性、互連和屬性等方面的某些知識(shí)。
技術(shù)實(shí)現(xiàn)要素:所需要的是用于發(fā)現(xiàn)并報(bào)告裝置和系統(tǒng)拓?fù)涞奶匦缘母倪M(jìn)的方法和設(shè)備,所述特性與向?qū)嵤┙M合式CPU/GPU體系結(jié)構(gòu)的系統(tǒng)的各種計(jì)算資源有效地調(diào)度和分配計(jì)算任務(wù)有關(guān)。雖然GPU、加速處理單元(APU)以及通用用途的圖形處理單元(GPGPU)是這個(gè)領(lǐng)域中常用的術(shù)語(yǔ),但是表述“加速處理設(shè)備(APD)”被認(rèn)為是更廣義的表述。例如,APD是指硬件和/或軟件的任何配合集合,與常規(guī)CPU、常規(guī)GPU、軟件和/或其組合相比,所述任何配合集合以加速方式完成與加速圖形處理任務(wù)、數(shù)據(jù)并行任務(wù)或嵌套數(shù)據(jù)并行任務(wù)相關(guān)的那些功能和計(jì)算。作為組合式CPU/APD體系結(jié)構(gòu)系統(tǒng)的一個(gè)方面,提供用于發(fā)現(xiàn)并報(bào)告裝置和系統(tǒng)拓?fù)涞奶匦缘姆椒ê驮O(shè)備,所述特性與向組合式CPU/APD體系結(jié)構(gòu)系統(tǒng)的各種計(jì)算資源有效地調(diào)度和分配計(jì)算任務(wù)有關(guān)。組合式CPU/APD體系結(jié)構(gòu)在靈活的計(jì)算環(huán)境中對(duì)CPU和APD進(jìn)行統(tǒng)一。在一些實(shí)施方案中,在單個(gè)集成電路中實(shí)施組合式CPU/APD體系結(jié)構(gòu)能力,所述集成電路的元件可以包括一個(gè)或多個(gè)CPU核心和一個(gè)或多個(gè)APD核心。組合式CPU/APD體系結(jié)構(gòu)創(chuàng)造了一個(gè)基礎(chǔ),在此基礎(chǔ)上可以構(gòu)建現(xiàn)有和新的編程框架、語(yǔ)言和工具。附圖說(shuō)明圖1A是根據(jù)本發(fā)明的處理系統(tǒng)的說(shuō)明性方框圖。圖1B是圖1A中所示的APD的說(shuō)明性方框圖。圖2是組合式CPU/APD體系結(jié)構(gòu)系統(tǒng)的說(shuō)明性方框圖。圖3是APU的說(shuō)明性方框圖,所述APU是具有CPU、APD而且進(jìn)一步具有存儲(chǔ)器管理和I/O存儲(chǔ)器管理電路的集成電路,其中所述CPU具有多個(gè)核心,所述APD具有多個(gè)單指令多數(shù)據(jù)(SIMD)引擎。圖4是專用APD的說(shuō)明性方框圖。圖5是根據(jù)本發(fā)明的實(shí)施方案的說(shuō)明性進(jìn)程的流程圖。圖6是根據(jù)本發(fā)明的實(shí)施方案的說(shuō)明性進(jìn)程的流程圖。具體實(shí)施方式一般來(lái)說(shuō),軟件應(yīng)該知曉基礎(chǔ)硬件的特性,從而能夠更好地利用平臺(tái)的執(zhí)行能力,以便進(jìn)行特征利用和任務(wù)調(diào)度。為了有效地利用組合式CPU/APD體系結(jié)構(gòu)系統(tǒng)的計(jì)算資源,必須發(fā)現(xiàn)平臺(tái)的特征、特性、互連、屬性和/或特點(diǎn)并且將其報(bào)告給軟件。作為組合式CPU/APD體系結(jié)構(gòu)系統(tǒng)的一個(gè)方面,提供用于發(fā)現(xiàn)并報(bào)告裝置和系統(tǒng)拓?fù)涞奶匦缘姆椒ê驮O(shè)備,所述特性與向組合式CPU/APD體系結(jié)構(gòu)系統(tǒng)的各種計(jì)算資源有效地調(diào)度和分配計(jì)算任務(wù)有關(guān)。根據(jù)本發(fā)明的組合式CPU/APD體系結(jié)構(gòu)在靈活的計(jì)算環(huán)境中對(duì)CPU和APD進(jìn)行統(tǒng)一。在一些實(shí)施方案中,在單個(gè)集成電路中實(shí)施組合式CPU/APD體系結(jié)構(gòu)能力,所述集成電路的元件可以包括一個(gè)或多個(gè)CPU核心和一個(gè)或多個(gè)統(tǒng)一APD核心,如下文更詳細(xì)地解釋。與CPU和APD通常分離(例如,位于單獨(dú)的卡或板上或者位于單獨(dú)的封裝中)的傳統(tǒng)計(jì)算環(huán)境相反,組合式CPU/APD體系結(jié)構(gòu)創(chuàng)造了一個(gè)基礎(chǔ),在此基礎(chǔ)上可以構(gòu)建現(xiàn)有和新的編程框架、語(yǔ)言和工具。組合式CPU/APD系統(tǒng)體系結(jié)構(gòu)的統(tǒng)一環(huán)境使得程序員能夠編寫相應(yīng)的應(yīng)用程序,所述應(yīng)用程序無(wú)縫地在CPU與APD之間轉(zhuǎn)變數(shù)據(jù)處理,進(jìn)而從每個(gè)設(shè)備必須提供的最佳屬性中獲益。統(tǒng)一的單個(gè)編程平臺(tái)可以提供強(qiáng)大的基礎(chǔ),用來(lái)開發(fā)可以采用并行方式的語(yǔ)言、框架和應(yīng)用程序。在以下詳述中,對(duì)“一個(gè)實(shí)施方案”、“實(shí)施方案”、“示例實(shí)施方案”等的參考指示所描述的實(shí)施方案可以包括具體特征、結(jié)構(gòu)或特點(diǎn),但是每個(gè)實(shí)施方案可能并沒(méi)有必要包括所述具體特征、結(jié)構(gòu)或特點(diǎn)。此外,這類短語(yǔ)沒(méi)有必要是指同一實(shí)施方案。另外,當(dāng)結(jié)合一個(gè)實(shí)施方案描述具體特征、結(jié)構(gòu)或特點(diǎn)時(shí),所主張的是本領(lǐng)域技術(shù)人員知道結(jié)合無(wú)論是否被明確地描述的其它實(shí)施方案來(lái)實(shí)現(xiàn)這種特征、結(jié)構(gòu)或特點(diǎn)。術(shù)語(yǔ)“本發(fā)明的實(shí)施方案”不要求本發(fā)明的所有實(shí)施方案都包括所論述的特征、優(yōu)點(diǎn)或操作模式。在不脫離本發(fā)明的范圍的情況下,可以設(shè)計(jì)出替代實(shí)施方案,并且可能并未詳細(xì)描述或可能省略本發(fā)明的眾所周知的元件,以免模糊本發(fā)明的相關(guān)細(xì)節(jié)。另外,本文所使用的術(shù)語(yǔ)僅出于描述具體實(shí)施方案的目的,而并不意圖限制本發(fā)明。例如,如本文所使用,單數(shù)形式的“一個(gè)(種)”以及“所述”也意圖包括復(fù)數(shù)形式,除非上下文另有明確指示。還將進(jìn)一步理解的是,術(shù)語(yǔ)“包括”、“包括了”、“包含”和/或“包含了”在本文中使用時(shí)指明所陳述的特征、步驟、操作、元件和/或部件的存在,但是并不排除一個(gè)或多個(gè)其它特征、步驟、操作、元件、部件和/或其群組的存在或添加。用于進(jìn)行基于CPU的特征檢測(cè)和調(diào)度的常規(guī)機(jī)制(如CPU識(shí)別(CPUID))甚至對(duì)同構(gòu)型且相對(duì)簡(jiǎn)單的CPU拓?fù)涠即嬖趪?yán)重的限制,所述CPU拓?fù)淦毡橛糜谌缃竦牟僮飨到y(tǒng)和平臺(tái)中。為了恰當(dāng)?shù)嘏渲幂斎?輸出存儲(chǔ)器管理單元(IOMMU),有必要發(fā)現(xiàn)CPU/存儲(chǔ)器/APD/網(wǎng)絡(luò)的拓?fù)?例如,附加板、存儲(chǔ)控制器、北橋/南橋等)。類似地,為了合適地做出調(diào)度和工作量決策,應(yīng)用軟件需要相應(yīng)的信息,如有多少不同的APD和計(jì)算單元可以使用以及APD和計(jì)算單元擁有什么特性。因此,需要一個(gè)或多個(gè)進(jìn)程、一個(gè)或多個(gè)硬件機(jī)制或者這兩方面的組合來(lái)進(jìn)行根據(jù)本發(fā)明的裝置發(fā)現(xiàn)和拓?fù)鋱?bào)告。更一般來(lái)說(shuō),需要至少一個(gè)機(jī)制、至少一個(gè)進(jìn)程或者至少一個(gè)機(jī)制和至少一個(gè)進(jìn)程來(lái)進(jìn)行裝置發(fā)現(xiàn)和拓?fù)鋱?bào)告。在本發(fā)明的一個(gè)實(shí)施方案中,關(guān)于裝置和拓?fù)涞男畔⒃趫?bào)告給應(yīng)用軟件之前被編碼。一種方式是將根據(jù)高級(jí)配置和電源接口(ACPI)規(guī)格的表提供給操作系統(tǒng)層面,然后提供給用戶模式層面。與裝置和拓?fù)浒l(fā)現(xiàn)有關(guān)的并且對(duì)調(diào)度和工作量決策制定有用的信息可以借助此類表進(jìn)行傳遞。所述表可以包括(但不限于)位點(diǎn)信息(例如,哪個(gè)存儲(chǔ)器最接近于APD)。對(duì)于“最接近”來(lái)說(shuō),通常意味著那個(gè)存儲(chǔ)器在物理上最接近,因?yàn)檩^短的信號(hào)路徑通常意味著較輕的負(fù)載和較短的信號(hào)渡越時(shí)間。然而,本文所使用的“最接近”更廣泛來(lái)說(shuō)包括可操作來(lái)最快地傳送數(shù)據(jù)的存儲(chǔ)器。對(duì)于CPU/標(biāo)量計(jì)算核心來(lái)說(shuō),可發(fā)現(xiàn)的特性包括(但不限于)核心的數(shù)量、高速緩存的數(shù)量,以及高速緩存拓?fù)?例如,高速緩存關(guān)聯(lián)、層級(jí)、等待時(shí)間)、翻譯旁視緩沖區(qū)(TLB)、浮點(diǎn)單元(FPU)、性能狀態(tài)、功率狀態(tài)等等。一些特性(例如,每個(gè)插槽內(nèi)的核心的數(shù)量以及高速緩存大小)目前是通過(guò)CPUID指令來(lái)暴露的。額外的特性(例如,插槽的數(shù)量、插槽拓?fù)洹⑿阅?功率狀態(tài)等)是或者將通過(guò)ACPI表來(lái)暴露,所述ACPI表是通過(guò)適用于常規(guī)系統(tǒng)的ACPI定義來(lái)定義的。CPU核心可以分布在不同的“位點(diǎn)域”非均勻性存儲(chǔ)器體系結(jié)構(gòu)(NUMA)上;然而,在第一順序上,核心由OS和虛擬存儲(chǔ)器管理器(VMM)調(diào)度器統(tǒng)一管理。對(duì)于APD計(jì)算核心來(lái)說(shuō),可發(fā)現(xiàn)的特性包括(但不限于)單指令多數(shù)據(jù)(SIMD)大小、SIMD布置、本地?cái)?shù)據(jù)儲(chǔ)存器關(guān)聯(lián)、工作隊(duì)列特性、CPU核心,以及IOMMU關(guān)聯(lián)、硬件上下文存儲(chǔ)器大小等。一些離散APD核心可以附接至活動(dòng)平臺(tái)或者從活動(dòng)平臺(tái)解除附接,而集成APD核心可以是硬連線的,或者也可以是根據(jù)本發(fā)明的實(shí)施方案的加速處理單元的一部分。對(duì)于支持部件來(lái)說(shuō),可發(fā)現(xiàn)的部件包括擴(kuò)展式外圍部件互連(PCIe)開關(guān)、APU或離散APD上的存儲(chǔ)控制器通道和存儲(chǔ)體以及非計(jì)算I/O裝置(AHCI、USB、顯示控制器等)。系統(tǒng)和APD本地存儲(chǔ)器可以暴露各種相干和不相干的存取范圍,操作系統(tǒng)按照不同方式管理這些存取范圍,而且這些存取范圍可以對(duì)CPU或APD具有特定關(guān)聯(lián)。其它數(shù)據(jù)路徑特性,包括(但不限于)類型、寬度、速度、相干性特性和等待時(shí)間,可以是可發(fā)現(xiàn)的。一些特性通過(guò)PCI-E能力結(jié)構(gòu)或ACPI表來(lái)暴露;然而,目前并非所有與裝置發(fā)現(xiàn)和拓?fù)鋱?bào)告有關(guān)的特性都可以利用常規(guī)機(jī)制加以表達(dá)。CPUID是指相應(yīng)的指令,當(dāng)由計(jì)算資源(如CPU)執(zhí)行時(shí),所述指令提供與其具體特征和特點(diǎn)相關(guān)的信息。舉例來(lái)說(shuō),x86體系結(jié)構(gòu)CPU可以提供相應(yīng)的信息,如賣方ID、處理器信息和特征位、高速緩存和TLB描述符信息、處理器序列號(hào)、所支持的最高擴(kuò)展功能、擴(kuò)展處理器信息和特征位、處理器品牌字符串、L1高速緩存和TLB識(shí)別符、擴(kuò)展L2高速緩存特征、高級(jí)電源管理信息以及虛擬和物理地址大小。圖1A是包括CPU102和APD104的統(tǒng)一計(jì)算系統(tǒng)100的示例性圖解。CPU102可以包括一個(gè)或多個(gè)單核或多核CPU。在本發(fā)明的一個(gè)實(shí)施方案中,系統(tǒng)100被形成在單個(gè)硅芯片或封裝上,組合CPU102和APD104以提供統(tǒng)一的程序設(shè)計(jì)和執(zhí)行環(huán)境。這個(gè)環(huán)境使得APD104能夠像CPU102一樣流暢地用于一些程序設(shè)計(jì)任務(wù)。然而,CPU102和APD104被形成在單個(gè)硅芯片上并不是本發(fā)明的絕對(duì)要求。在一些實(shí)施方案中,CPU102和APD104有可能被單獨(dú)地形成并且被安裝在相同或不同的襯底上。在一個(gè)實(shí)施例中,系統(tǒng)100還包括存儲(chǔ)器106、操作系統(tǒng)108以及通信基礎(chǔ)設(shè)施109。以下更詳細(xì)地論述操作系統(tǒng)108和通信基礎(chǔ)設(shè)施109。系統(tǒng)100還包括內(nèi)核模式驅(qū)動(dòng)器(KMD)110、軟件調(diào)度器(SWS)112,以及存儲(chǔ)器管理單元116,如IOMMU。系統(tǒng)100的部件可以被實(shí)施為硬件、固件、軟件或其任何組合。本領(lǐng)域技術(shù)人員將會(huì)理解,除了圖1A中所示的實(shí)施方案中所示的各項(xiàng)之外,系統(tǒng)100可以包括一個(gè)或多個(gè)軟件、硬件以及固件部件,或與圖1A中所示的實(shí)施方案中所示的各項(xiàng)不同的一個(gè)或多個(gè)軟件、硬件以及固件部件。在一個(gè)實(shí)施例中,驅(qū)動(dòng)器(如KMD110)典型地通過(guò)計(jì)算機(jī)總線或通信子系統(tǒng)來(lái)與裝置進(jìn)行通信,硬件連接至所述計(jì)算機(jī)總線或通信子系統(tǒng)。當(dāng)調(diào)用程序調(diào)用驅(qū)動(dòng)器中的例程時(shí),所述驅(qū)動(dòng)器向裝置發(fā)出命令。一旦裝置將數(shù)據(jù)發(fā)送回到驅(qū)動(dòng)器,所述驅(qū)動(dòng)器就可以調(diào)用原始調(diào)用程序中的例程。在一個(gè)實(shí)施例中,驅(qū)動(dòng)器是與硬件有關(guān)的并且是操作系統(tǒng)特定的。所述驅(qū)動(dòng)器常常提供任何必要的異步的時(shí)間有關(guān)的硬件接口所需要的中斷處理。裝置驅(qū)動(dòng)器,特別是在現(xiàn)代MicrosoftWindows平臺(tái)上的,能夠以內(nèi)核模式(環(huán)0)或以用戶模式(環(huán)3)進(jìn)行運(yùn)行。以用戶模式運(yùn)行驅(qū)動(dòng)器的主要益處是改進(jìn)的穩(wěn)定性,因?yàn)閷懭氩涣嫉挠脩裟J窖b置驅(qū)動(dòng)器不會(huì)通過(guò)蓋寫內(nèi)核存儲(chǔ)器來(lái)使系統(tǒng)崩潰。另一方面,用戶/內(nèi)核模式轉(zhuǎn)換常常強(qiáng)加相當(dāng)大的性能開銷,從而針對(duì)短等待時(shí)間和高吞吐量要求禁止用戶模式驅(qū)動(dòng)器。內(nèi)核空間可以由用戶模塊僅通過(guò)使用系統(tǒng)調(diào)用來(lái)存取。最終用戶程序,像UNIX操作系統(tǒng)外殼或其它基于GUI的應(yīng)用程序,是用戶空間的一部分。這些應(yīng)用程序通過(guò)內(nèi)核支持的功能來(lái)與硬件進(jìn)行交互。CPU102可以包括(未圖示)控制處理器、現(xiàn)場(chǎng)可編程門陣列(FPGA)、專用集成電路(ASIC)或數(shù)字信號(hào)處理器(DSP)中的一個(gè)或多個(gè)。例如,CPU102執(zhí)行控制計(jì)算系統(tǒng)100的操作的控制邏輯,所述控制邏輯包括操作系統(tǒng)108、KMD110、SWS112以及應(yīng)用程序111。在這個(gè)說(shuō)明性實(shí)施方案中,根據(jù)一個(gè)實(shí)施方案,CPU102通過(guò)例如以下操作來(lái)發(fā)起并且控制應(yīng)用程序111的執(zhí)行:在CPU102和其它處理資源(如APD104)上分配與那個(gè)應(yīng)用程序相關(guān)的處理。尤其是APD104執(zhí)行用于所選定的功能的命令和程序,所述所選定的功能如圖形操作和可能例如特別適用于并行處理的其它操作。一般來(lái)說(shuō),APD104可以被頻繁地用于執(zhí)行圖形流水線操作(如像素操作、幾何計(jì)算),并且將圖像渲染至顯示器。在本發(fā)明的各種實(shí)施方案中,APD104還可以基于從CPU102所接收的命令或指令來(lái)執(zhí)行計(jì)算處理操作(例如,與圖形無(wú)關(guān)的那些操作,例如像視頻操作、物理模擬、計(jì)算流體動(dòng)力學(xué)等)。例如,命令可以被認(rèn)為是典型地不是定義在指令集體系結(jié)構(gòu)(ISA)中的特殊指令。可以通過(guò)特殊處理器(如分派處理器、命令處理器或網(wǎng)絡(luò)控制器)來(lái)執(zhí)行命令。另一方面,指令可以被認(rèn)為是例如計(jì)算機(jī)體系結(jié)構(gòu)內(nèi)部的處理器的單一操作。在一個(gè)實(shí)施例中,當(dāng)使用兩個(gè)ISA集時(shí),一些指令被用于執(zhí)行x86程序,而一些指令被用于執(zhí)行APD計(jì)算單元上的內(nèi)核。在一個(gè)說(shuō)明性實(shí)施方案中,CPU102將所選定的命令傳輸至APD104。這些所選定的命令可以包括圖形命令和服從并行執(zhí)行的其它命令??梢源笾律溪?dú)立于CPU102來(lái)執(zhí)行還可以包括計(jì)算處理命令在內(nèi)的這些所選定的命令。APD104可以包括其自己的計(jì)算單元(未圖示),如但不限于一個(gè)或多個(gè)SIMD處理核心。如本文所提及,SIMD是流水線或程序設(shè)計(jì)模型,其中通過(guò)每個(gè)處理元件自己的數(shù)據(jù)和共享的程序計(jì)數(shù)器,在多個(gè)處理元件中的每一個(gè)上同時(shí)地執(zhí)行內(nèi)核。所有處理元件執(zhí)行一個(gè)完全相同的指令集。預(yù)測(cè)的使用使得工作項(xiàng)目能夠參與或不參與每個(gè)所發(fā)出的命令。在一個(gè)實(shí)施例中,每個(gè)APD104計(jì)算單元可以包括一個(gè)或多個(gè)標(biāo)量和/或向量浮點(diǎn)單元和/或算術(shù)邏輯單元(ALU)。APD計(jì)算單元還可以包括專用處理單元(未圖示),如反平方根單元和正弦/余弦單元。在一個(gè)實(shí)施例中,APD計(jì)算單元在本文中統(tǒng)稱為著色器核心122。一般來(lái)說(shuō),具有一個(gè)或多個(gè)SIMD使得APD104理想地適用于數(shù)據(jù)并行任務(wù)(如在圖形處理中常見(jiàn)的那些)的執(zhí)行。一些圖形流水線操作(如像素處理)和其它并行計(jì)算操作可能要求對(duì)輸入數(shù)據(jù)元素的流或集合執(zhí)行同一命令流或計(jì)算內(nèi)核。同一計(jì)算內(nèi)核的相應(yīng)實(shí)例化可以在著色器核心122中的多個(gè)計(jì)算單元上同時(shí)地執(zhí)行,以便并行地處理這類數(shù)據(jù)元素。如本文所提及,例如,計(jì)算內(nèi)核是含有在程序中陳述并且在APD計(jì)算單元上執(zhí)行的指令的功能。這個(gè)功能還被稱為內(nèi)核、著色器、著色器程序或程序。在一個(gè)說(shuō)明性實(shí)施方案中,每個(gè)計(jì)算單元(例如,SIMD處理核心)可以執(zhí)行特定工作項(xiàng)目的相應(yīng)實(shí)例化來(lái)處理傳入數(shù)據(jù)。工作項(xiàng)目是由命令在裝置上所調(diào)用的內(nèi)核的并行執(zhí)行的集合中的一個(gè)。工作項(xiàng)目可以由一個(gè)或多個(gè)處理元件執(zhí)行為在計(jì)算單元上執(zhí)行的工作群組的一部分。工作項(xiàng)目通過(guò)其全局ID和局部ID來(lái)與所述集合內(nèi)的其它執(zhí)行區(qū)別開。在一個(gè)實(shí)施例中,一起同時(shí)在SIMD上執(zhí)行的工作群組中的工作項(xiàng)目子集可以被稱為波前136。波前的寬度是計(jì)算單元(例如,SIMD處理核心)的硬件的特點(diǎn)。如本文所提及,工作群組是在單一計(jì)算單元上執(zhí)行的相關(guān)工作項(xiàng)目的集合。群組中的工作項(xiàng)目執(zhí)行同一內(nèi)核并且共享本地存儲(chǔ)器和工作群組屏障。在示例性實(shí)施方案中,在同一SIMD處理核心上處理來(lái)自工作群組的所有波前。一次一個(gè)地發(fā)出波前上的指令,并且在所有工作項(xiàng)目遵循同一控制流時(shí),每個(gè)工作項(xiàng)目執(zhí)行同一程序。波前還可以被稱為彎曲、向量或線程。執(zhí)行掩碼和工作項(xiàng)目預(yù)測(cè)用于使得發(fā)散的控制流能夠在一個(gè)波前內(nèi),其中每個(gè)單獨(dú)的工作項(xiàng)目實(shí)際上可以采取通過(guò)內(nèi)核的唯一的代碼路徑。當(dāng)工作項(xiàng)目的全集不可在波前開始時(shí)間使用時(shí),可以處理部分填充的波前。例如,著色器核心122可以同時(shí)執(zhí)行預(yù)定數(shù)量的波前136,每個(gè)波前136包括多個(gè)工作項(xiàng)目。在系統(tǒng)100內(nèi),APD104包括其自己的存儲(chǔ)器,如圖形存儲(chǔ)器130(但存儲(chǔ)器130不限于僅供圖形使用)。圖形存儲(chǔ)器130提供用于在APD104中進(jìn)行計(jì)算期間使用的本地存儲(chǔ)器。著色器核心122內(nèi)的單獨(dú)計(jì)算單元(未圖示)可以具有其自己的本地?cái)?shù)據(jù)儲(chǔ)存器(未圖示)。在一個(gè)實(shí)施方案中,APD104包括存取本地圖形存儲(chǔ)器130以及存取存儲(chǔ)器106。在另一個(gè)實(shí)施方案中,APD104可以包括存取動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)或直接附接至APD104并且與存儲(chǔ)器106分離的其它此類存儲(chǔ)器(未圖示)。在所示實(shí)施例中,APD104還包括一個(gè)或“n”數(shù)量個(gè)命令處理器(CP)124。CP124控制APD104內(nèi)的處理。CP124還從存儲(chǔ)器106中的命令緩沖區(qū)125檢索待執(zhí)行的命令,并且對(duì)這些命令在APD104上的執(zhí)行進(jìn)行協(xié)調(diào)。在一個(gè)實(shí)施例中,CPU102將基于應(yīng)用程序111的命令輸入適當(dāng)?shù)拿罹彌_區(qū)125中。如本文所提及,應(yīng)用程序是將在CPU和APD內(nèi)的計(jì)算單元上執(zhí)行的程序部分的組合。多個(gè)命令緩沖區(qū)125可以用被調(diào)度來(lái)在APD104上執(zhí)行的每個(gè)進(jìn)程來(lái)維護(hù)。CP124可以用硬件、固件或軟件或其組合來(lái)實(shí)施。在一個(gè)實(shí)施方案中,CP124被實(shí)施為具有用于實(shí)施包括調(diào)度邏輯在內(nèi)的邏輯的微代碼的精簡(jiǎn)指令集計(jì)算機(jī)(RISC)引擎。APD104還包括一個(gè)或“n”數(shù)量個(gè)分派控制器(DC)126。在本申請(qǐng)中,術(shù)語(yǔ)“分派”是指由分派控制器執(zhí)行的命令,所述分派控制器使用上下文狀態(tài)來(lái)為計(jì)算單元集合上的工作群組集合發(fā)起內(nèi)核的執(zhí)行的開始。DC126包括用以發(fā)起著色器核心122中的工作群組的邏輯。在一些實(shí)施方案中,DC126可以被實(shí)施為CP124的一部分。系統(tǒng)100還包括用于從運(yùn)行列表150選擇進(jìn)程以在APD104上執(zhí)行的硬件調(diào)度器(HWS)128。HWS128可以使用循環(huán)法、優(yōu)先級(jí)或基于其它調(diào)度策略來(lái)從運(yùn)行列表150選擇進(jìn)程。例如,可以動(dòng)態(tài)地確定優(yōu)先級(jí)。HWS128還可以包括用以管理運(yùn)行列表150的功能性,例如通過(guò)添加新的進(jìn)程以及通過(guò)從運(yùn)行列表150刪除現(xiàn)有進(jìn)程來(lái)管理。HWS128的運(yùn)行列表管理邏輯有時(shí)被稱為運(yùn)行列表控制器(RLC)。在本發(fā)明的各種實(shí)施方案中,當(dāng)HWS128發(fā)起執(zhí)行來(lái)自RLC150的進(jìn)程時(shí),CP124開始從對(duì)應(yīng)的命令緩沖區(qū)125檢索并且執(zhí)行命令。在一些情況下,CP124可以生成待在APD104內(nèi)部執(zhí)行的一個(gè)或多個(gè)命令,這些命令對(duì)應(yīng)于從CPU102接收的命令。在一個(gè)實(shí)施方案中,CP124與其它部件一起對(duì)APD104上的命令進(jìn)行區(qū)分優(yōu)先次序并且調(diào)度,其方式為改進(jìn)或最大化對(duì)APD104和/或系統(tǒng)100的資源的利用率。APD104可以存取或可以包括中斷生成器146。中斷生成器146可以由APD104配置來(lái)在APD104遇到如頁(yè)面錯(cuò)誤等中斷事件時(shí)中斷操作系統(tǒng)108。例如,APD104可以依賴于IOMMU116內(nèi)的中斷生成邏輯來(lái)產(chǎn)生以上所指出的頁(yè)面錯(cuò)誤中斷。APD104還可以包括用于搶先取得當(dāng)前正在著色器核心122內(nèi)運(yùn)行的一個(gè)進(jìn)程的搶先和上下文切換邏輯120。例如,上下文切換邏輯120包括用以停止所述進(jìn)程并且保存其當(dāng)前狀態(tài)(例如,著色器核心122狀態(tài)和CP124狀態(tài))的功能性。如本文所提及,術(shù)語(yǔ)“狀態(tài)”可以包括初始狀態(tài)、中間狀態(tài)和/或最終狀態(tài)。初始狀態(tài)是機(jī)器根據(jù)程序設(shè)計(jì)次序處理輸入數(shù)據(jù)集以產(chǎn)生數(shù)據(jù)輸出集合的開始點(diǎn)。存在例如需要在幾個(gè)點(diǎn)處被存儲(chǔ)以使得處理能夠向前進(jìn)的中間狀態(tài)。這個(gè)中間狀態(tài)有時(shí)被存儲(chǔ)來(lái)允許當(dāng)由某一其它進(jìn)程中斷時(shí)在稍后時(shí)間處繼續(xù)執(zhí)行。還存在可以被記錄為輸出數(shù)據(jù)集的一部分的最終狀態(tài)。搶先和上下文切換邏輯120還可以包括用以將另一個(gè)進(jìn)程上下文切換至APD104中的邏輯。用以將另一個(gè)進(jìn)程上下文切換成在APD104上運(yùn)行的功能性可以包括例如通過(guò)CP124和DC126來(lái)實(shí)例化所述進(jìn)程以在APD104上運(yùn)行,為這個(gè)進(jìn)程恢復(fù)任何先前保存的狀態(tài),并且開始其執(zhí)行。存儲(chǔ)器106可以包括非永久性存儲(chǔ)器,如DRAM(未圖示)。存儲(chǔ)器106可以在執(zhí)行應(yīng)用程序或其它處理邏輯的若干部分期間存儲(chǔ)例如處理邏輯指令、常量值以及變量值。例如,在一個(gè)實(shí)施方案中,用以在CPU102上執(zhí)行一個(gè)或多個(gè)操作的控制邏輯的若干部分可以在由CPU102執(zhí)行操作的相應(yīng)部分期間駐留在存儲(chǔ)器106內(nèi)。在執(zhí)行期間,相應(yīng)的應(yīng)用程序、操作系統(tǒng)功能、處理邏輯命令以及系統(tǒng)軟件可以駐留在存儲(chǔ)器106中。對(duì)操作系統(tǒng)108很重要的控制邏輯命令在執(zhí)行期間通常將駐留在存儲(chǔ)器106中。包括例如內(nèi)核模式驅(qū)動(dòng)器110和軟件調(diào)度器112在內(nèi)的其它軟件命令在系統(tǒng)100的執(zhí)行期間也可以駐留在存儲(chǔ)器106中。在這個(gè)實(shí)施例中,存儲(chǔ)器106包括由CPU102使用來(lái)將命令發(fā)送到APD104的命令緩沖區(qū)125。存儲(chǔ)器106還包含進(jìn)程列表和進(jìn)程信息(例如,活動(dòng)列表152和進(jìn)程控制塊154)。這些列表以及信息由在CPU102上執(zhí)行的調(diào)度軟件使用來(lái)將調(diào)度信息傳遞至APD104和/或相關(guān)調(diào)度硬件。存取存儲(chǔ)器106可以由耦合到存儲(chǔ)器106的存儲(chǔ)器控制器140管理。例如,來(lái)自CPU102或來(lái)自其它裝置的對(duì)從存儲(chǔ)器106讀取或?qū)懭氪鎯?chǔ)器106的請(qǐng)求由所述存儲(chǔ)器控制器140管理。轉(zhuǎn)回參看系統(tǒng)100的其它方面,IOMMU116是一個(gè)多上下文存儲(chǔ)器管理單元。如本文所使用,上下文可以認(rèn)為是內(nèi)核在其中執(zhí)行的環(huán)境和在其中定義同步與存儲(chǔ)器管理的領(lǐng)域。上下文包括裝置集合、可由這些裝置存取的存儲(chǔ)器、對(duì)應(yīng)的存儲(chǔ)器特性以及用來(lái)調(diào)度一個(gè)或多個(gè)內(nèi)核的執(zhí)行或在存儲(chǔ)器對(duì)象上的操作的一個(gè)或多個(gè)命令隊(duì)列。轉(zhuǎn)回參看圖1A中所示的實(shí)施例,IOMMU116包括用以執(zhí)行用于包括APD104在內(nèi)的裝置的存儲(chǔ)器頁(yè)面存取的虛擬至物理地址翻譯的邏輯。IOMMU116還可以包括用以生成中斷的邏輯,例如當(dāng)由如APD104等裝置的頁(yè)面存取導(dǎo)致頁(yè)面錯(cuò)誤時(shí)生成中斷。IOMMU116還可以包括或能夠存取TLB118。作為實(shí)例,TLB118可以在內(nèi)容可尋址存儲(chǔ)器(CAM)中實(shí)施,以便應(yīng)由APD104對(duì)存儲(chǔ)器106中的數(shù)據(jù)所做出的請(qǐng)求而加速邏輯(即,虛擬)存儲(chǔ)器地址至物理存儲(chǔ)器地址的翻譯。在所示實(shí)施例中,通信基礎(chǔ)設(shè)施109視需要互連系統(tǒng)100的部件。通信基礎(chǔ)設(shè)施109可以包括(未圖示)外圍部件互連(PCI)總線、擴(kuò)展的PCI(PCI-E)總線、高級(jí)微控制器總線體系結(jié)構(gòu)(AMBA)總線、高級(jí)圖形端口(AGP)或其它此類通信基礎(chǔ)設(shè)施中的一個(gè)或多個(gè)。通信基礎(chǔ)設(shè)施109還可以包括以太網(wǎng),或類似網(wǎng)絡(luò),或滿足應(yīng)用程序的數(shù)據(jù)傳送速率要求的任何適當(dāng)物理通信基礎(chǔ)設(shè)施。通信基礎(chǔ)設(shè)施109包括用以互連包括計(jì)算系統(tǒng)100的部件在內(nèi)的部件的功能性。在這個(gè)實(shí)施例中,操作系統(tǒng)108包括用以管理系統(tǒng)100的硬件部件以及用以提供常見(jiàn)服務(wù)的功能性。在各種實(shí)施方案中,操作系統(tǒng)108可以在CPU102上執(zhí)行,并且提供常見(jiàn)服務(wù)。這些常見(jiàn)服務(wù)可以包括例如調(diào)度用于在CPU102內(nèi)部執(zhí)行的應(yīng)用程序、錯(cuò)誤管理、中斷服務(wù)以及處理其它應(yīng)用程序的輸入和輸出。在一些實(shí)施方案中,基于由如中斷控制器148的中斷控制器生成的中斷,操作系統(tǒng)108調(diào)用適當(dāng)?shù)闹袛嗵幚砝獭@?,在檢測(cè)到頁(yè)面錯(cuò)誤中斷之后,操作系統(tǒng)108可以即刻調(diào)用中斷處理程序來(lái)起始將相關(guān)頁(yè)面加載到存儲(chǔ)器106中,并且更新對(duì)應(yīng)頁(yè)面表。操作系統(tǒng)108還可以包括用以通過(guò)確保以下操作來(lái)保護(hù)系統(tǒng)100的功能性:存取硬件部件是通過(guò)操作系統(tǒng)管理的內(nèi)核功能性來(lái)進(jìn)行調(diào)解。事實(shí)上,操作系統(tǒng)108確保了應(yīng)用程序(如應(yīng)用程序111)在用戶空間中在CPU102上運(yùn)行。操作系統(tǒng)108還確保了應(yīng)用程序111調(diào)用由操作系統(tǒng)提供的內(nèi)核功能性,以便存取硬件和/或輸入/輸出功能性。舉例來(lái)說(shuō),應(yīng)用程序111包括用以執(zhí)行用戶計(jì)算的各種程序或命令,這些用戶計(jì)算也在CPU102上執(zhí)行。CPU102能夠無(wú)縫地發(fā)送所選定的命令以用于在APD104上處理。在一個(gè)實(shí)施例中,KMD110實(shí)施應(yīng)用程序設(shè)計(jì)接口(API),通過(guò)所述應(yīng)用程序設(shè)計(jì)接口,CPU102或在CPU102上執(zhí)行的應(yīng)用程序或其它邏輯可以調(diào)用APD104功能性。例如,KMD110可以使來(lái)自CPU102的命令排隊(duì)到命令緩沖區(qū)125,APD104隨后將從命令緩沖區(qū)檢索這些命令。此外,KMD110可以與SWS112一起執(zhí)行待在APD104上執(zhí)行的進(jìn)程的調(diào)度。例如,SWS112可以包括用以維護(hù)待在APD上執(zhí)行的進(jìn)程的已區(qū)分優(yōu)先次序的列表的邏輯。在本發(fā)明的其它實(shí)施方案中,在CPU102上執(zhí)行的應(yīng)用程序可以在對(duì)命令進(jìn)行排隊(duì)時(shí)完全繞過(guò)KMD110。在一些實(shí)施方案中,SWS112維護(hù)待在APD104上執(zhí)行的進(jìn)程的在存儲(chǔ)器106中的活動(dòng)列表152。SWS112還在活動(dòng)列表152中選擇進(jìn)程子集來(lái)由硬件中的HWS128管理。關(guān)于在APD104上運(yùn)行每個(gè)進(jìn)程的信息通過(guò)進(jìn)程控制塊(PCB)154而從CPU102傳遞至APD104。用于應(yīng)用程序、操作系統(tǒng)以及系統(tǒng)軟件的處理邏輯可以包括在如C語(yǔ)言的程序設(shè)計(jì)語(yǔ)言中和/或如Verilog、RTL或網(wǎng)表的硬件描述語(yǔ)言中指定的命令,以便使得能夠最終通過(guò)掩模作品(maskwork)/光掩模的產(chǎn)生而配置制造過(guò)程,從而生產(chǎn)體現(xiàn)本文所描述的本發(fā)明的方面的硬件裝置。本領(lǐng)域技術(shù)人員在閱讀本描述后將了解,計(jì)算系統(tǒng)100可以包括比圖1A中所示更多或更少的部件。例如,計(jì)算系統(tǒng)100可以包括一個(gè)或多個(gè)輸入接口、非易失性儲(chǔ)存器、一個(gè)或多個(gè)輸出接口、網(wǎng)絡(luò)接口以及一個(gè)或多個(gè)顯示器或顯示器接口。圖1B為示出圖1A中所示的APD104的更詳細(xì)的圖解的實(shí)施方案。在圖1B中,CP124可以包括CP流水線124a、124b以及124c。CP124可以被配置來(lái)處理命令列表,這些命令列表被提供為來(lái)自圖1A中所示的命令緩沖區(qū)125的輸入。在圖1B的示例性操作中,CP輸入0(124a)負(fù)責(zé)將命令驅(qū)動(dòng)到圖形流水線162中。CP輸入1和2(124b和124c)將命令轉(zhuǎn)發(fā)到計(jì)算流水線160。還提供了用于控制HWS128的操作的控制器機(jī)構(gòu)166。在圖1B中,圖形流水線162可以包括塊集合,本文稱為有序流水線164。作為一個(gè)實(shí)例,有序流水線164包括頂點(diǎn)群組翻譯器(VGT)164a、圖元匯編器(PA)164b、掃描變換器(SC)164c以及著色器輸出后期渲染單元(SX/RB)176。有序流水線164內(nèi)的每個(gè)塊可以表示圖形流水線162內(nèi)的不同圖形處理級(jí)。有序流水線164可以是固定功能硬件流水線??梢允褂靡矊⒃诒景l(fā)明的精神和范圍內(nèi)的其它實(shí)施方式。盡管只有少量數(shù)據(jù)可以被提供為到圖形流水線162的輸入,但這些數(shù)據(jù)將在被提供為從圖形流水線162的輸出時(shí)被放大。圖形流水線162還包括用于在從CP流水線124a接收的工作項(xiàng)目群組內(nèi)的整個(gè)范圍中進(jìn)行計(jì)數(shù)的DC166。通過(guò)DC166提交的計(jì)算工作與圖形流水線162是半同步的。計(jì)算流水線160包括著色器DC168和170。所述DC168和170中的每一個(gè)被配置來(lái)在從CP流水線124b和124c接收的工作群組內(nèi)的整個(gè)計(jì)算范圍中進(jìn)行計(jì)數(shù)。在圖1B中示出的DC166、168以及170接收輸入范圍,將這些范圍分解成工作群組,然后將這些工作群組轉(zhuǎn)發(fā)到著色器核心122。由于圖形流水線162通常是固定功能流水線,因而難以保存并恢復(fù)其狀態(tài),并且因此,圖形流水線162難以進(jìn)行上下文切換。因此,在大多數(shù)情況下,如本文所論述,上下文切換不涉及在圖形進(jìn)程之間進(jìn)行上下文切換。一個(gè)例外是對(duì)于在著色器核心122中的圖形工作,它可以進(jìn)行上下文切換。在圖形流水線162內(nèi)部的工作處理已經(jīng)完成之后,通過(guò)后期渲染單元176處理所完成的工作,所述后期渲染單元進(jìn)行深度和色彩計(jì)算,并且然后將其最終結(jié)果寫入存儲(chǔ)器130。著色器核心122可以由圖形流水線162和計(jì)算流水線160共享。著色器核心122可以是被配置來(lái)運(yùn)行波前的一般處理器。在一個(gè)實(shí)施例中,在計(jì)算流水線160內(nèi)部的所有工作是在著色器核心122中進(jìn)行處理的。著色器核心122運(yùn)行可編程的軟件代碼,并且包括各種形式的數(shù)據(jù),例如狀態(tài)數(shù)據(jù)。當(dāng)所有工作項(xiàng)目都不能存取APD資源時(shí),發(fā)生QoS破壞。本發(fā)明的實(shí)施方案有助于向APD104內(nèi)的資源有效地且同時(shí)地啟動(dòng)兩個(gè)或更多個(gè)任務(wù),從而使得所有工作項(xiàng)目都能夠存取各種APD資源。在一個(gè)實(shí)施方案中,APD輸入方案通過(guò)管理APD的工作量來(lái)使得所有工作項(xiàng)目都能夠有權(quán)并行使用APD資源。當(dāng)APD的工作量接近最大水平時(shí)(例如,在達(dá)到最大I/O速率期間),這個(gè)APD輸入方案會(huì)提供幫助,因?yàn)樵疚词褂玫奶幚碣Y源可以在眾多情景下被同時(shí)使用。例如,能夠使串行輸入流抽象化為看起來(lái)像對(duì)APD的并行同時(shí)輸入。舉例來(lái)說(shuō),每個(gè)CP124都可以將一個(gè)或多個(gè)任務(wù)作為輸入提交給APD104內(nèi)的其它資源,其中每個(gè)任務(wù)都可以表示多個(gè)波前。在提交第一任務(wù)作為輸入之后,可以允許這個(gè)任務(wù)在一段時(shí)間上斜升,從而利用完成相應(yīng)任務(wù)所必需的所有APD資源。單獨(dú)地,這個(gè)第一任務(wù)可以達(dá)到或者可以不達(dá)到最大APD利用率閾值。然而,隨著其它任務(wù)進(jìn)行排隊(duì)并且等待在APD104內(nèi)進(jìn)行處理,可以管理APD資源的分配以確保所有任務(wù)可以同時(shí)使用APD104,每個(gè)任務(wù)實(shí)現(xiàn)APD的最大利用率的某個(gè)百分比。這種多個(gè)任務(wù)對(duì)APD104的同時(shí)使用以及它們的組合利用率百分比確保實(shí)現(xiàn)預(yù)定的最大APD利用率閾值。下文結(jié)合圖2所示的代表性系統(tǒng)來(lái)描述組合式CPU/APD體系結(jié)構(gòu)系統(tǒng)的特性的發(fā)現(xiàn)。如下文將更詳細(xì)地描述,代表性系統(tǒng)包括:兩個(gè)APU,這兩個(gè)APU借助處理器間通信鏈路而彼此連接;第一附加板,其連接至所述兩個(gè)APU中的第一APU,所述第一附加板具有專用APD和本地存儲(chǔ)器;以及第二附加板,其連接至這兩個(gè)APU中的第二APU,所述第二附加板具有兩個(gè)專用APD,這兩個(gè)APD中的每一個(gè)連接至其自己的本地存儲(chǔ)器;并且,這兩個(gè)APD通過(guò)共享PCIe橋來(lái)連接至第二APU。這個(gè)示例性系統(tǒng)用來(lái)說(shuō)明各種特征、特性和能力,當(dāng)軟件(如但不限于應(yīng)用軟件)獲知它們的存在、特性、互連和/或?qū)傩詴r(shí),所述各種特征、特性和能力可以由所述軟件加以使用,從而更為有效地利用平臺(tái)的計(jì)算資源。如本領(lǐng)域技術(shù)人員將了解的,具有不同配置和布置的替代實(shí)施方案也是意料之中的。根據(jù)本發(fā)明,提供針對(duì)已建立的平臺(tái)基礎(chǔ)結(jié)構(gòu)發(fā)現(xiàn)機(jī)制的若干個(gè)延展情形(例如,針對(duì)ACPI的延展情形),其允許用靈活、可延展并且一致的方式將組合式CPU/APD體系結(jié)構(gòu)系統(tǒng)體系結(jié)構(gòu)的特性并入到可發(fā)現(xiàn)的平臺(tái)特性中。除了ACPI之外或者替代ACPI,其它通信協(xié)議也可以由其它實(shí)施方案來(lái)使用。本發(fā)明的各種實(shí)施方案引入相應(yīng)特征和改進(jìn)內(nèi)容,從而將CPU、APU和APD特性并入到一致的基礎(chǔ)結(jié)構(gòu)中,用來(lái)支持軟件。這個(gè)軟件也可以稱為操作系統(tǒng)平臺(tái)/電源管理軟件(OSPM)。圖2是本文所公開的模型內(nèi)的說(shuō)明性異構(gòu)型平臺(tái)設(shè)計(jì)的方框圖,并且說(shuō)明各種部件和/或子系統(tǒng),其中它們的存在和/或?qū)傩缘陌l(fā)現(xiàn)會(huì)將所需的信息提供給系統(tǒng)和/或應(yīng)用軟件,從而使得可以執(zhí)行任務(wù)的有效調(diào)度。在下文的描述中,圖2將用來(lái)幫助概括與各種部件相關(guān)聯(lián)的特性。出于這個(gè)原因,作為一個(gè)說(shuō)明性實(shí)施例來(lái)提供帶有兩個(gè)APU的平臺(tái)。本發(fā)明并不限于圖2的說(shuō)明性實(shí)施方案,并且應(yīng)注意到,本發(fā)明的實(shí)施方案包括樣式類似的帶有兩個(gè)以上或帶有一個(gè)APU插槽的較大和較小平臺(tái)設(shè)計(jì)。本文所描述的實(shí)施方案是出于說(shuō)明性目的,并且應(yīng)了解,根據(jù)本發(fā)明的其它實(shí)施方案也是可能的。根據(jù)本發(fā)明的特定平臺(tái)設(shè)計(jì)的詳細(xì)實(shí)施特性可以是不同的。參看圖2,平臺(tái)部件分解為許多塊,每個(gè)塊都可以含有不同的特征、特性、互連和/或?qū)傩?。軟?更小程度上來(lái)說(shuō)包括應(yīng)用軟件)列舉了這些特征、特性、互連和/或?qū)傩裕⑶覍⑦@些方面并入到代碼操作中。根據(jù)本發(fā)明的系統(tǒng)平臺(tái)200。系統(tǒng)平臺(tái)200包括第一APU202和第二APU204。APU202和APU204通過(guò)第一處理器間通信鏈路206以通信方式連接。在一個(gè)實(shí)施方案中,第一處理器間通信鏈路206是HyperTransport鏈路。APU202、204各自包括帶有多個(gè)核心的CPU、帶有多個(gè)SIMD核心的APD以及輸入/輸出存儲(chǔ)器管理器單元。說(shuō)明性系統(tǒng)平臺(tái)200進(jìn)一步包括第一系統(tǒng)存儲(chǔ)器208,第一系統(tǒng)存儲(chǔ)器208通過(guò)第一存儲(chǔ)器總線210連接至第一APU202。第一系統(tǒng)存儲(chǔ)器208包括相干可高速緩存部分209a和不相干不可高速緩存部分209b。系統(tǒng)平臺(tái)202進(jìn)一步包括第一附加板218和第二附加板230。第一附加板218通過(guò)第一PCIe總線250連接至第一APU202。第二附加板230通過(guò)第二PCIe總線252連接至第二APU。在各種替代實(shí)施方案中,第一附加板218和第二附加板230中的一者或兩者的一些或所有物理部件和/或軟件、固件或微代碼設(shè)置在帶有一個(gè)或多個(gè)APU的共同襯底(例如,印刷電路板)上。第一附加板218包括第一專用APD220、通過(guò)存儲(chǔ)器總線224連接至第一專用APD220的第一本地存儲(chǔ)器222,以及第一固件存儲(chǔ)器226,第一固件存儲(chǔ)器226中存儲(chǔ)有固件,如VBIOSUEFIGOP(視頻基本輸入輸出系統(tǒng)、統(tǒng)一可延展固件接口、圖形輸出協(xié)議)。第一固件存儲(chǔ)器226實(shí)際上通常實(shí)施為非易失性存儲(chǔ)器,但這種實(shí)施方式并不是本發(fā)明的要求。第一專用APD220包括一個(gè)或多個(gè)SIMD單元。第一本地存儲(chǔ)器222包括相干的第一部分223a和不相干的第二部分223b。第一本地存儲(chǔ)器222實(shí)際上通常體現(xiàn)為易失性存儲(chǔ)器,但這種實(shí)施方式并不是本發(fā)明的要求。第二附加板230包括第二專用APD232、通過(guò)存儲(chǔ)器總線236連接至第二APD232的第二本地存儲(chǔ)器、第三專用APD238、通過(guò)存儲(chǔ)器總線242連接至第三專用APD238的第三本地存儲(chǔ)器240、通過(guò)PCIe總線246連接至第二專用APD232的PCIe橋244、通過(guò)PCIe總線248進(jìn)一步連接至第三專用APD238的PCIe橋244。第二本地存儲(chǔ)器234包括相干的第一部分235a和不相干的第二部分235b。第三本地存儲(chǔ)器240包括相干的第一部分241a和不相干的第二部分241b。第二本地存儲(chǔ)器234和第三本地存儲(chǔ)器240實(shí)際上通常實(shí)施為易失性存儲(chǔ)器,但這種實(shí)施方式并不是本發(fā)明的要求。第二附加板230進(jìn)一步包括第二固件存儲(chǔ)器254,其中存儲(chǔ)有固件,如VBIOSUEFIGOP。傳統(tǒng)上,CPU功能性和資源是通過(guò)CPUID指令以及ACPI表和方法來(lái)暴露(例如,對(duì)于能力和特征、功率和性能狀態(tài)等),而對(duì)于系統(tǒng)中的其它裝置(例如,外圍裝置)來(lái)說(shuō),使用PCIe能力結(jié)構(gòu)。通過(guò)這些機(jī)制來(lái)描述的基本特點(diǎn)包括資源功能性和資源關(guān)聯(lián);前者通常被描述為帶有相同特征和特點(diǎn)的統(tǒng)一部件“池”(例如,CPU核心),后者一般需要描述這些資源之間的拓?fù)浜完P(guān)系的層級(jí)表達(dá)。這些表示中的每一個(gè)針對(duì)某些任務(wù)來(lái)說(shuō)具有相應(yīng)益處,因此可以保留在本發(fā)明的實(shí)施方案的列舉進(jìn)程中。下文將結(jié)合組合式CPU/APD計(jì)算系統(tǒng)體系結(jié)構(gòu)來(lái)陳述針對(duì)列舉所暴露的各種設(shè)計(jì)原則和詳細(xì)部件特性,以及用于暴露這些特性的方法和機(jī)制。一些特性可以經(jīng)由一個(gè)或多個(gè)執(zhí)行的指令(例如,CPUID)進(jìn)行暴露,而一些特性可以經(jīng)由信息結(jié)構(gòu)(如表)進(jìn)行暴露。在各種替代實(shí)施方案中,具體特性可以通過(guò)CPUID、信息結(jié)構(gòu)或者這兩者進(jìn)行暴露。組合式CPU/APD計(jì)算系統(tǒng)體系結(jié)構(gòu)平臺(tái)的基本檢測(cè)可以通過(guò)執(zhí)行CPUID指令來(lái)完成。然而,應(yīng)注意到,執(zhí)行CPUID指令一般并不會(huì)提供組合式CPU/APD計(jì)算系統(tǒng)部件的詳細(xì)能力發(fā)現(xiàn)。恰恰相反,此機(jī)制通常只提供關(guān)于系統(tǒng)本身是不是組合式CPU/APD計(jì)算系統(tǒng)的是/否答案。因此,根據(jù)本發(fā)明的某些方面,組合式CPU/APD計(jì)算系統(tǒng)體系結(jié)構(gòu)詳細(xì)特征一般經(jīng)由信息結(jié)構(gòu)(如改進(jìn)的ACPI表)來(lái)提供,所述信息結(jié)構(gòu)詳細(xì)指明組合式CPU/APD計(jì)算系統(tǒng)體系結(jié)構(gòu)平臺(tái)的相關(guān)特征。在一個(gè)實(shí)施方案中,包含具體的CPU,從而使得其可以執(zhí)行改進(jìn)的CPUID指令,并且所述CPUID指令在執(zhí)行時(shí)會(huì)暴露與組合式CPU/APD體系結(jié)構(gòu)系統(tǒng)有關(guān)的基本信息。在這個(gè)說(shuō)明性實(shí)施方案中,CPUIDFn8000_001EEDX用于組合式CPU/APD體系結(jié)構(gòu)系統(tǒng)的基本信息暴露(參見(jiàn)下面的表1)。應(yīng)用軟件和其它軟件可以使用位0來(lái)識(shí)別其是否正在具組合式CPU/APD體系結(jié)構(gòu)能力的平臺(tái)上運(yùn)行。在具組合式CPU/APD體系結(jié)構(gòu)能力的平臺(tái)上運(yùn)行意味著,所述平臺(tái)具有至少一個(gè)APU,所述APU含有組合式CPU/APD體系結(jié)構(gòu)依從性CPU和APD功能性,即,計(jì)算單元和SIMD。然后,軟件可以使用對(duì)改進(jìn)的ACPI表的內(nèi)容的發(fā)現(xiàn)和評(píng)估來(lái)檢索可用功能性和拓?fù)涞脑敿?xì)信息。應(yīng)注意到,本發(fā)明并不限于針對(duì)CPUID指令的此具體操作代碼,也不限于如表1所示的具體位或字段布置。表1根據(jù)本發(fā)明的實(shí)施方案,如圖2所示的平臺(tái)上的發(fā)現(xiàn)進(jìn)程基于位點(diǎn)來(lái)零散地按照層級(jí)順序暴露與可用部件有關(guān)的信息。發(fā)現(xiàn)進(jìn)程在概念上類似于ACPINUMA節(jié)點(diǎn)定義(ACPI4.0規(guī)范),但是加以了改進(jìn)而將具體的APD/SIMD特性和IOMMU功能性包括到節(jié)點(diǎn)特性中。組合式CPU/APD體系結(jié)構(gòu)系統(tǒng)平臺(tái)的具體特征表現(xiàn)為含有依從于CPU/APD體系結(jié)構(gòu)的一個(gè)或多個(gè)處理單元(參見(jiàn)圖3A和圖3B),其中至少一個(gè)是APU(即,含有CPU計(jì)算單元和APD-SIMD執(zhí)行單元兩者)。每個(gè)處理單元大致上通過(guò)其物理表示(例如,“APU插槽”、APD“適配器”/裝置)來(lái)定義,并且具有可發(fā)現(xiàn)的內(nèi)部子部件和特性,如但不限于CPU計(jì)算單元和高速緩存(任選地,可以在組合式體系結(jié)構(gòu)依從性離散APD裝置中不表達(dá)任何內(nèi)容)、APDSIMD和高速緩存(如果表達(dá)傳統(tǒng)的CPU特性,則是任選的)、存儲(chǔ)控制器和連接、IOMMU(任選地,可以針對(duì)組合式體系結(jié)構(gòu)依從性離散APD不表達(dá)任何內(nèi)容)以及IO連接接口(例如,PCIe、HyperTransport、DMI、內(nèi)部或其它接口)。由于并非所有存儲(chǔ)器資源(例如,APD本地存儲(chǔ)器)必定都是相干全局存儲(chǔ)器的一部分,所以要小心來(lái)相應(yīng)地表達(dá)這些特性。因此,不是使用系統(tǒng)資源關(guān)聯(lián)表(SRAT),而是提供改進(jìn)的信息結(jié)構(gòu)來(lái)容納與組合式CPU/APD系統(tǒng)體系結(jié)構(gòu)相關(guān)的信息。更具體來(lái)說(shuō),引入根據(jù)本發(fā)明的新基本結(jié)構(gòu)(本文稱為部件資源關(guān)聯(lián)表(CRAT))和許多相關(guān)子結(jié)構(gòu)。應(yīng)注意到,這是一個(gè)說(shuō)明性實(shí)施方案,并且其它信息結(jié)構(gòu)布置也在本發(fā)明的范圍內(nèi)。在所述示例性實(shí)施方案中,CRAT是可發(fā)現(xiàn)的組合式CPU/APD體系結(jié)構(gòu)平臺(tái)特性的頭部結(jié)構(gòu)。軟件從語(yǔ)法上分析所述表,從而找到可發(fā)現(xiàn)的處理單元、特性和它們的關(guān)聯(lián),這樣允許軟件去識(shí)別部件位點(diǎn)。隨著一些物理部件到達(dá)或者離開系統(tǒng)(例如,CPU/APD和/或離散APD的熱插入),CRAT內(nèi)容可以在運(yùn)行時(shí)期間發(fā)生變化。表2識(shí)別并描述CRAT的字段。表2-CRAT標(biāo)頭結(jié)構(gòu)CRAT標(biāo)頭包括并領(lǐng)先于含有實(shí)際部件信息的子部件結(jié)構(gòu)。下文通過(guò)子部件表來(lái)描述子部件。本發(fā)明的各種實(shí)施方案提供APU關(guān)聯(lián)信息結(jié)構(gòu)。此子部件描述APU節(jié)點(diǎn)部件、可用I/O接口和它們的帶寬,并且將此信息提供給軟件??梢葬槍?duì)同一個(gè)節(jié)點(diǎn)表達(dá)多個(gè)此類結(jié)構(gòu),從而充分地描述較復(fù)雜的APU平臺(tái)特性。表3識(shí)別并描述CRATAPU關(guān)聯(lián)信息結(jié)構(gòu)的字段。應(yīng)注意到,這是一個(gè)說(shuō)明性實(shí)施方案,并且其它信息結(jié)構(gòu)布置也在本發(fā)明的范圍內(nèi)。表3-CRATAPU關(guān)聯(lián)信息結(jié)構(gòu)表4描述APU關(guān)聯(lián)信息結(jié)構(gòu)的旗標(biāo)字段,并且提供關(guān)于參數(shù)的進(jìn)一步信息。應(yīng)注意到,這是一個(gè)說(shuō)明性實(shí)施方案,并且其它信息結(jié)構(gòu)布置也在本發(fā)明的范圍內(nèi)。表4:CRATAPU關(guān)聯(lián)結(jié)構(gòu)的旗標(biāo)字段表5展示存儲(chǔ)器部件關(guān)聯(lián)結(jié)構(gòu),所述結(jié)構(gòu)指示結(jié)構(gòu)拓?fù)渲写鎯?chǔ)器節(jié)點(diǎn)的存在。同一個(gè)結(jié)構(gòu)用于描述系統(tǒng)存儲(chǔ)器和可見(jiàn)的裝置本地存儲(chǔ)器資源。應(yīng)注意到,這是一個(gè)說(shuō)明性實(shí)施方案,并且其它信息結(jié)構(gòu)布置也在本發(fā)明的范圍內(nèi)。表5:CRAT存儲(chǔ)器部件關(guān)聯(lián)結(jié)構(gòu)表6展示存儲(chǔ)器關(guān)聯(lián)結(jié)構(gòu)的旗標(biāo)字段,所述旗標(biāo)字段提供與此節(jié)點(diǎn)的參數(shù)相關(guān)的進(jìn)一步信息。應(yīng)注意到,這是一個(gè)說(shuō)明性實(shí)施方案,并且其它信息結(jié)構(gòu)布置也在本發(fā)明的范圍內(nèi)。表6:CRAT存儲(chǔ)器關(guān)聯(lián)部件結(jié)構(gòu)的旗標(biāo)字段表7展示高速緩存關(guān)聯(lián)信息結(jié)構(gòu),所述信息結(jié)構(gòu)向操作系統(tǒng)提供下述拓?fù)湫畔ⅲ焊咚倬彺?、高速緩存的相?duì)級(jí)別(即,L1、L2或L3)以及高速緩存所屬的組合式體系結(jié)構(gòu)鄰近域之間的關(guān)聯(lián);以及與高速緩存是否被啟用、大小和線路相關(guān)的信息。高速緩存關(guān)聯(lián)結(jié)構(gòu)用于按照系統(tǒng)性方式向軟件表達(dá)“傳統(tǒng)”CPU高速緩存拓?fù)浜虯PD高速緩存特性。應(yīng)注意到,這是一個(gè)說(shuō)明性實(shí)施方案,并且其它信息結(jié)構(gòu)布置也在本發(fā)明的范圍內(nèi)。表7:CRAT高速緩存關(guān)聯(lián)信息結(jié)構(gòu)對(duì)于表7的“高速緩存等待時(shí)間”字段來(lái)說(shuō),應(yīng)注意到,各種替代實(shí)施方案可以使用更多或更少的時(shí)間粒度和/或不同的取整策略。應(yīng)進(jìn)一步注意到,替代實(shí)施方案可以包括與高速緩存替換策略相關(guān)的信息,甚至鑒于賣方產(chǎn)品上存在的當(dāng)前微體系結(jié)構(gòu)差別來(lái)說(shuō),也是如此。表8識(shí)別并描述存儲(chǔ)在CRAT高速緩存關(guān)聯(lián)信息結(jié)構(gòu)的旗標(biāo)字段中的信息。應(yīng)注意到,這是一個(gè)說(shuō)明性實(shí)施方案,并且其它信息結(jié)構(gòu)布置也在本發(fā)明的范圍內(nèi)。表8:CRAT高速緩存關(guān)聯(lián)信息結(jié)構(gòu)的旗標(biāo)字段現(xiàn)代處理器可以包括TLB。TLB是用于物理處理器的頁(yè)面翻譯的高速緩存。表9所示的TLB關(guān)聯(lián)結(jié)構(gòu)向處理器的操作系統(tǒng)固定地提供下述拓?fù)湫畔ⅲ篢LB部件、TLB部件的相對(duì)級(jí)別(即,L1、L2或L3)以及共享所述部件的同屬處理器之間的關(guān)聯(lián);與TLB關(guān)聯(lián)結(jié)構(gòu)是否被啟用以及其是否含有數(shù)據(jù)或指令翻譯相關(guān)的信息。TLB關(guān)聯(lián)結(jié)構(gòu)是用于平臺(tái)的靜態(tài)資源分配結(jié)構(gòu)列表的延展。在未來(lái)體系結(jié)構(gòu)中對(duì)頁(yè)面級(jí)別支持做出改變將需要此表的延展。應(yīng)注意到,此結(jié)構(gòu)可以是子結(jié)構(gòu)陣列,各個(gè)子結(jié)構(gòu)描述不同的頁(yè)面大小。應(yīng)注意到,這是一個(gè)說(shuō)明性實(shí)施方案,并且其它信息結(jié)構(gòu)布置也在本發(fā)明的范圍內(nèi)。表9:CRAT翻譯旁視緩沖區(qū)關(guān)聯(lián)結(jié)構(gòu)表10:CRATTLB關(guān)聯(lián)結(jié)構(gòu)的旗標(biāo)字段本發(fā)明的各種實(shí)施方案包括FPU關(guān)聯(lián)信息結(jié)構(gòu),所述結(jié)構(gòu)向操作系統(tǒng)提供下述拓?fù)湫畔ⅲ篎PU與共享FPU的邏輯處理器(CPU’s)之間的關(guān)聯(lián);以及大小。FPU關(guān)聯(lián)結(jié)構(gòu)是用于平臺(tái)的靜態(tài)資源分配結(jié)構(gòu)列表的延展。此信息可能對(duì)應(yīng)用程序有用,所述應(yīng)用程序使用AVX指令來(lái)確立同屬處理器之間的聯(lián)系。表11中展示CRATFPU關(guān)聯(lián)信息結(jié)構(gòu)的細(xì)節(jié)。應(yīng)注意到,這是一個(gè)說(shuō)明性實(shí)施方案,并且其它信息結(jié)構(gòu)布置也在本發(fā)明的范圍內(nèi)。表11:CRATFPU關(guān)聯(lián)信息結(jié)構(gòu)本發(fā)明的各種實(shí)施方案包括IO關(guān)聯(lián)信息結(jié)構(gòu)(參見(jiàn)表13和表14)。CRATIO關(guān)聯(lián)信息結(jié)構(gòu)向操作系統(tǒng)提供下述拓?fù)湫畔ⅲ嚎砂l(fā)現(xiàn)的IO接口與共享所述IO接口的組合式CPU/APD體系結(jié)構(gòu)節(jié)點(diǎn)之間的關(guān)聯(lián);最大、最小帶寬和等待時(shí)間表征;以及大小。IO關(guān)聯(lián)結(jié)構(gòu)是用于平臺(tái)的資源分配結(jié)構(gòu)列表的延展。此信息可能對(duì)應(yīng)用程序有用,所述應(yīng)用程序使用AVX指令來(lái)確立同屬處理器之間的聯(lián)系。應(yīng)注意到,這是一個(gè)說(shuō)明性實(shí)施方案,并且其它信息結(jié)構(gòu)布置也在本發(fā)明的范圍內(nèi)。表13:CRATIO關(guān)聯(lián)信息結(jié)構(gòu)表14:CRATIO關(guān)聯(lián)結(jié)構(gòu)的旗標(biāo)字段本發(fā)明的各種實(shí)施方案包括部件位點(diǎn)距離信息表(“CDIT”)。此表為組合式CPU/APD體系結(jié)構(gòu)平臺(tái)提供相應(yīng)機(jī)制,用來(lái)指示所有組合式CPU/APD體系結(jié)構(gòu)系統(tǒng)位點(diǎn)之間的相對(duì)距離(就事務(wù)等待時(shí)間來(lái)說(shuō)),這些位點(diǎn)在本文中也稱為組合式CPU/APD體系結(jié)構(gòu)鄰近域。這些實(shí)施方案表示對(duì)ACPI4.0規(guī)范中所定義的系統(tǒng)位點(diǎn)距離信息表(SLIT)的改進(jìn)之處。CDIT中的每個(gè)條目[i,j]的值(其中i表示矩陣的行,而j表示矩陣的列)指示從部件位點(diǎn)/鄰近域i到系統(tǒng)中的各個(gè)其它部件位點(diǎn)j(包括其本身)的相對(duì)距離。i,j行列值與CRAT表中所定義的聯(lián)合鄰近域相關(guān)。在這個(gè)說(shuō)明性實(shí)施方案中,條目值為1字節(jié)無(wú)符號(hào)整數(shù)。從部件位點(diǎn)i到部件位點(diǎn)j的相對(duì)距離是矩陣中的第(i*N+J)個(gè)條目(索引值是2字節(jié)無(wú)符號(hào)整數(shù)),其中N是組合式CPU/APD體系結(jié)構(gòu)鄰近域的數(shù)量。除了部件位點(diǎn)到其自身的相對(duì)距離之外,每個(gè)相對(duì)距離在矩陣中都存儲(chǔ)兩次。這提供相應(yīng)的能力來(lái)描述部件位點(diǎn)之間在兩個(gè)方向上的相對(duì)距離不同的情景。如果一個(gè)部件位點(diǎn)無(wú)法從另一個(gè)部件位點(diǎn)到達(dá),那么255(0xFF)的值便會(huì)存儲(chǔ)在那個(gè)表?xiàng)l目中。從部件位點(diǎn)到其自身的相對(duì)距離被正規(guī)化為數(shù)值10,并且距離值0至9保留且沒(méi)有意義。表15:CDIT標(biāo)頭結(jié)構(gòu)本發(fā)明的各種實(shí)施方案包括組合式CPU/APD體系結(jié)構(gòu)表發(fā)現(xiàn)裝置。當(dāng)評(píng)估位于組合式CPU/APD體系結(jié)構(gòu)裝置ACPI節(jié)點(diǎn)處的“CRAT”方法時(shí),返回CRAT。當(dāng)評(píng)估位于組合式CPU/APD體系結(jié)構(gòu)裝置ACPI節(jié)點(diǎn)處的CDIT方法時(shí),返回部件位點(diǎn)距離信息表(CDIT)。組合式CPU/APD體系結(jié)構(gòu)發(fā)現(xiàn)裝置的存在允許將一致的通知機(jī)制用于組合式CPU/APD體系結(jié)構(gòu)部件的熱插入和熱拔除通知,這又需要對(duì)表和方法進(jìn)行重新評(píng)估。對(duì)于組合式CPU/APD體系結(jié)構(gòu)系統(tǒng)兼容平臺(tái)來(lái)說(shuō),需要此邏輯ACPI裝置。圖5是示出根據(jù)本發(fā)明的一個(gè)進(jìn)程的流程圖,所述進(jìn)程用于發(fā)現(xiàn)和報(bào)告組合式CPU/APD體系結(jié)構(gòu)系統(tǒng)的特性和拓?fù)洹Kl(fā)現(xiàn)的特性可以與在組合式CPU/APD體系結(jié)構(gòu)系統(tǒng)的計(jì)算資源之間進(jìn)行計(jì)算任務(wù)的調(diào)度和分配有關(guān)。這種計(jì)算任務(wù)的調(diào)度和分配可以由操作系統(tǒng)、應(yīng)用軟件或這兩者進(jìn)行處置。所述說(shuō)明性進(jìn)程包括發(fā)現(xiàn)各種CPU計(jì)算核心特性中的一個(gè)或多個(gè)特性502,如核心的數(shù)量、高速緩存的數(shù)量、高速緩存關(guān)聯(lián)、層級(jí)和等待時(shí)間、TLB、FPU、性能狀態(tài)、功率狀態(tài)等等。圖5的說(shuō)明性進(jìn)程進(jìn)一步包括下述步驟:發(fā)現(xiàn)APD計(jì)算核心的特性,包括SIMD大小、SIMD布置、本地?cái)?shù)據(jù)儲(chǔ)存器關(guān)聯(lián)、工作隊(duì)列特性、IOMMU關(guān)聯(lián)和硬件上下文存儲(chǔ)器大小中的一個(gè)或多個(gè)504;發(fā)現(xiàn)支持部件的特性,包括總線開關(guān)以及存儲(chǔ)控制器通道和存儲(chǔ)體中的一個(gè)或多個(gè)506;發(fā)現(xiàn)系統(tǒng)存儲(chǔ)器和APD本地存儲(chǔ)器的特性,包括(但不限于)相干和不相干的存取范圍508;發(fā)現(xiàn)一個(gè)或多個(gè)數(shù)據(jù)路徑的特性,包括類型、寬度、速度、相干性和等待時(shí)間中的一個(gè)或多個(gè)510;編碼所發(fā)現(xiàn)的特性的至少一部分512;以及提供一個(gè)或多個(gè)信息結(jié)構(gòu),并且將信息存儲(chǔ)在所述一個(gè)或多個(gè)信息結(jié)構(gòu)中的至少一個(gè)結(jié)構(gòu)中,所存儲(chǔ)的信息表示所發(fā)現(xiàn)的特性的至少一部分514。應(yīng)注意到,本發(fā)明并不限于各種特性被發(fā)現(xiàn)的任何具體順序。還應(yīng)注意到,本發(fā)明并不限于所發(fā)現(xiàn)的特性被存儲(chǔ)、編碼、報(bào)告或按照其它方式傳遞、傳輸或供任何硬件、固件、操作系統(tǒng)或應(yīng)用軟件使用、處理或檢查的任何具體順序。另外應(yīng)注意到,本發(fā)明并不限于存儲(chǔ)根據(jù)本發(fā)明的一個(gè)或多個(gè)信息結(jié)構(gòu)的存儲(chǔ)器的任何具體存儲(chǔ)器地址范圍和物理類型。本發(fā)明并不限于特性發(fā)現(xiàn)的任何具體方式或方法。舉例來(lái)說(shuō)但并非限制性的,一些特性可以通過(guò)由多個(gè)計(jì)算資源中的至少一個(gè)計(jì)算資源執(zhí)行一個(gè)或多個(gè)指令來(lái)暴露或發(fā)現(xiàn),此類指令執(zhí)行會(huì)在一個(gè)或多個(gè)寄存器中或一個(gè)或多個(gè)存儲(chǔ)器位置中提供信息。另外應(yīng)注意到,本發(fā)明并不受限于操作系統(tǒng)或應(yīng)用軟件使用哪些具體特性來(lái)在組合式CPU/APD體系結(jié)構(gòu)系統(tǒng)的計(jì)算資源之間調(diào)度或分配計(jì)算任務(wù)。圖6是根據(jù)本發(fā)明的操作組合式CPU/APD體系結(jié)構(gòu)系統(tǒng)的說(shuō)明性方法的流程圖。這種說(shuō)明性方法包括下述步驟:發(fā)現(xiàn)與組合式CPU/APD體系結(jié)構(gòu)系統(tǒng)中的計(jì)算任務(wù)的調(diào)度和分配有關(guān)的一個(gè)或多個(gè)特性602;提供一個(gè)或多個(gè)信息結(jié)構(gòu),并且將信息存儲(chǔ)在所述一個(gè)或多個(gè)信息結(jié)構(gòu)中的至少一個(gè)結(jié)構(gòu)中,所存儲(chǔ)的信息表示所發(fā)現(xiàn)的特性的至少一部分604;確定一個(gè)或多個(gè)硬件資源是否已經(jīng)添加至組合式CPU/APD體系結(jié)構(gòu)系統(tǒng),或者是否已經(jīng)從組合式CPU/APD體系結(jié)構(gòu)系統(tǒng)中移除606;以及在確定一個(gè)或多個(gè)硬件資源已經(jīng)添加至組合式CPU/APD體系結(jié)構(gòu)系統(tǒng)或者已經(jīng)從組合式CPU/APD體系結(jié)構(gòu)系統(tǒng)中移除之后,發(fā)現(xiàn)與組合式CPU/APD系統(tǒng)中的計(jì)算任務(wù)的調(diào)度和分配有關(guān)的至少一個(gè)特性608。如果在計(jì)算任務(wù)的調(diào)度和/或分配過(guò)程中,特性信息由組合式CPU/APD體系結(jié)構(gòu)系統(tǒng)的一個(gè)或多個(gè)計(jì)算資源加以使用,那么這個(gè)特性便與計(jì)算任務(wù)的調(diào)度和分配有關(guān)。結(jié)合這個(gè)對(duì)圖6中的說(shuō)明性實(shí)施方案的描述,硬件資源可以提供下述資源:(i)至少一個(gè)計(jì)算資源,所述計(jì)算資源可以由操作系統(tǒng)軟件、應(yīng)用軟件或這兩者的調(diào)度和分配邏輯指派來(lái)執(zhí)行一個(gè)或多個(gè)計(jì)算任務(wù);或者(ii)存儲(chǔ)器,所述存儲(chǔ)器可以由操作系統(tǒng)軟件、應(yīng)用軟件或這兩者的調(diào)度和分配邏輯指派給一個(gè)或多個(gè)計(jì)算任務(wù)。應(yīng)注意到,硬件資源的添加可以作為將板或卡“熱插入”到系統(tǒng)中的結(jié)果而發(fā)生。或者,硬件資源可以實(shí)際存在于系統(tǒng)中,但是只有在通過(guò)固件或軟件的動(dòng)作來(lái)添加硬件資源而使其對(duì)操作系統(tǒng)軟件、應(yīng)用軟件或這兩者的調(diào)度和分配邏輯為可用或可見(jiàn)之后,硬件資源才可以被指派計(jì)算任務(wù)。在此情況下,“添加”可以稱為啟用。類似地,可以通過(guò)實(shí)際移除硬件資源或者通過(guò)停用硬件資源或使其對(duì)操作系統(tǒng)軟件、應(yīng)用軟件或這兩者的調(diào)度和分配邏輯為不可見(jiàn)來(lái)將硬件資源從系統(tǒng)中移除。在此情況下,“移除”可以稱為停用。應(yīng)注意到,本發(fā)明并不限于啟用和停用硬件資源的任何具體方式或方法。此類硬件資源可以被啟用來(lái)實(shí)現(xiàn)具體的性能水平,也可以被停用來(lái)減少功率消耗。或者,因?yàn)橛布Y源已經(jīng)被保留用于另一個(gè)目的,所以可以停用那個(gè)硬件資源,也就是,使那個(gè)硬件資源無(wú)法從調(diào)度和分配邏輯接收任務(wù)。在本發(fā)明的一個(gè)說(shuō)明性實(shí)施方案中,一種系統(tǒng)包括(但不限于):第一計(jì)算機(jī)存儲(chǔ)器,其具有預(yù)定物理存儲(chǔ)大小和邏輯布置;第一CPU,其連接至第一計(jì)算機(jī)存儲(chǔ)器,所述第一CPU具有預(yù)定數(shù)量的可發(fā)現(xiàn)特性;第一APD,其連接至第一計(jì)算機(jī)存儲(chǔ)器,所述第一APD具有預(yù)定數(shù)量的可發(fā)現(xiàn)特性;以及如下構(gòu)件,其用于確定第一CPU的可發(fā)現(xiàn)特性的至少一部分和第一APD的可發(fā)現(xiàn)特性的至少一部分,編碼所發(fā)現(xiàn)的特性,并且將所編碼的特性存儲(chǔ)在存儲(chǔ)器表中。應(yīng)注意到,這個(gè)用于確定的構(gòu)件包括(但不限于)第一CPU所執(zhí)行的軟件、第一APD所執(zhí)行的軟件或第一CPU和第一APD都執(zhí)行的軟件。根據(jù)本發(fā)明的一種操作組合式CPU/APD體系結(jié)構(gòu)系統(tǒng)的說(shuō)明性方法包括下述步驟:發(fā)現(xiàn)一個(gè)或多個(gè)CPU計(jì)算核心的特性;發(fā)現(xiàn)一個(gè)或多個(gè)APD計(jì)算核心的特性;發(fā)現(xiàn)一個(gè)或多個(gè)支持部件的特性;發(fā)現(xiàn)系統(tǒng)存儲(chǔ)器的特性;如果存在APD本地存儲(chǔ)器,那么發(fā)現(xiàn)APD本地存儲(chǔ)器的特性;發(fā)現(xiàn)數(shù)據(jù)路徑的特性,包括類型、寬度、速度、相干性和等待時(shí)間中的一個(gè)或多個(gè);編碼所發(fā)現(xiàn)的特性的至少一部分;以及提供一個(gè)或多個(gè)信息結(jié)構(gòu),并且將信息存儲(chǔ)在所述一個(gè)或多個(gè)信息結(jié)構(gòu)中的至少一個(gè)結(jié)構(gòu)中,所存儲(chǔ)的信息表示所發(fā)現(xiàn)的特性的至少一部分。通常,所發(fā)現(xiàn)的特性與向組合式CPU/APD體系結(jié)構(gòu)系統(tǒng)中的多個(gè)計(jì)算資源中的一個(gè)或多個(gè)調(diào)度計(jì)算任務(wù)有關(guān)。在一些實(shí)施方案中,通過(guò)在多個(gè)計(jì)算資源中的至少一個(gè)上執(zhí)行一個(gè)或多個(gè)指令來(lái)發(fā)現(xiàn)所發(fā)現(xiàn)的特性的至少一部分,此類指令執(zhí)行會(huì)在執(zhí)行所述一個(gè)或多個(gè)指令的計(jì)算資源的一個(gè)或多個(gè)寄存器中或者在連接至計(jì)算資源的存儲(chǔ)器的一個(gè)或多個(gè)存儲(chǔ)器位置中提供信息。在各種替代實(shí)施方案中,操作組合式CPU/APD體系結(jié)構(gòu)系統(tǒng)的方法包括在檢測(cè)到添加或移除至少一個(gè)硬件資源之后,重復(fù)所述發(fā)現(xiàn)操作中的一個(gè)或多個(gè)。以此方式,關(guān)于計(jì)算任務(wù)調(diào)度和分配的信息便可以被動(dòng)態(tài)更新,從而及時(shí)反映具體某個(gè)點(diǎn)上可以使用的硬件資源。根據(jù)本發(fā)明的另一種操作組合式CPU/APD體系結(jié)構(gòu)系統(tǒng)的說(shuō)明性方法包括下述步驟:通過(guò)組合式CPU/APD體系結(jié)構(gòu)系統(tǒng)的操作來(lái)發(fā)現(xiàn)與組合式CPU/APD體系結(jié)構(gòu)系統(tǒng)中的計(jì)算任務(wù)的調(diào)度和分配有關(guān)的特性;通過(guò)組合式CPU/APD體系結(jié)構(gòu)系統(tǒng)的操作來(lái)提供一個(gè)或多個(gè)信息結(jié)構(gòu),并且將信息存儲(chǔ)在所述一個(gè)或多個(gè)信息結(jié)構(gòu)中的至少一個(gè)結(jié)構(gòu)中,所存儲(chǔ)的信息表示所發(fā)現(xiàn)的特性的至少一部分;通過(guò)組合式CPU/APD體系結(jié)構(gòu)系統(tǒng)的操作來(lái)確定一個(gè)或多個(gè)硬件資源是否已經(jīng)添加至組合式CPU/APD體系結(jié)構(gòu)系統(tǒng)或者是否已經(jīng)從組合式CPU/APD體系結(jié)構(gòu)系統(tǒng)中移除;以及在確定一個(gè)或多個(gè)硬件資源已經(jīng)添加至組合式CPU/APD體系結(jié)構(gòu)系統(tǒng)或者已經(jīng)從組合式CPU/APD體系結(jié)構(gòu)系統(tǒng)中移除之后,通過(guò)組合式CPU/APD體系結(jié)構(gòu)系統(tǒng)的操作來(lái)發(fā)現(xiàn)與組合式CPU/APD系統(tǒng)中的計(jì)算任務(wù)的調(diào)度和分配有關(guān)的至少一個(gè)特性。應(yīng)注意到,本發(fā)明并不限于x86CPU核心與APD的組合,而是適用于與APD組合的各種CPU或指令集體系結(jié)構(gòu)。結(jié)論本文所示出和描述的示例性方法和設(shè)備至少可以在計(jì)算裝置(包括但不限于筆記本計(jì)算機(jī)、桌上型計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、手持式計(jì)算機(jī)、移動(dòng)計(jì)算機(jī)和平板計(jì)算機(jī)、機(jī)頂盒、媒體服務(wù)器、電視機(jī)和類似裝置)、圖形處理和異構(gòu)型計(jì)算資源的統(tǒng)一編程環(huán)境等領(lǐng)域中找到應(yīng)用。應(yīng)了解,本發(fā)明并不限于上文所述的說(shuō)明性實(shí)施方案,而是涵蓋屬于所附權(quán)利要求和其等效物的范圍內(nèi)的任何和所有實(shí)施方案。