專利名稱:線程處理器中緩沖區(qū)在多個(gè)客戶間的動(dòng)態(tài)分配的制作方法
技術(shù)領(lǐng)域:
所要求保護(hù)的發(fā)明的實(shí)現(xiàn)方案一般涉及存儲(chǔ)器的分配,并且特別地,涉及存儲(chǔ)器在進(jìn)程(process)間的動(dòng)態(tài)分配。
背景技術(shù):
在數(shù)據(jù)處理中,有時(shí)候?qū)⒋鎯?chǔ)器在邏輯上劃分,供很多個(gè)進(jìn)程使用。例如,如果四個(gè)進(jìn)程正在運(yùn)行,則可將存儲(chǔ)器劃分為與每一個(gè)進(jìn)程對(duì)應(yīng)的四個(gè)部分。如果這些進(jìn)程是相關(guān)的(例如作為流水線進(jìn)程的一部分),則這樣的劃分方案可以給每一個(gè)進(jìn)程分配某個(gè)最小的存儲(chǔ)器量以防止死鎖(deadlock)??梢栽谶M(jìn)程間分配超過(guò)所述匯總的最小量的剩余存儲(chǔ)器量,以有助于通過(guò)所述進(jìn)程來(lái)獲得更好的性能。
當(dāng)使用存儲(chǔ)器的進(jìn)程數(shù)量改變時(shí),人們可能期望改變存儲(chǔ)器的分配,以便針對(duì)新的進(jìn)程數(shù)量(例如三個(gè)或五個(gè),而非上面實(shí)施例中的四個(gè)進(jìn)程)來(lái)優(yōu)化。但是,一些或全部的現(xiàn)有進(jìn)程在存儲(chǔ)器中可能具有相關(guān)聯(lián)的數(shù)據(jù),并且這樣的數(shù)據(jù)可能落入存儲(chǔ)器的另一個(gè)進(jìn)程的部分;或者,如果其進(jìn)程被停止(discontinue),則這些數(shù)據(jù)可能被孤立。因此,在存儲(chǔ)器可以在新數(shù)量的進(jìn)程間劃分之前,它通常被沖洗(flush)(例如清空數(shù)據(jù))。在一些情況中,進(jìn)程內(nèi)(in-process)數(shù)據(jù)可以立刻從存儲(chǔ)器中被刪除/沖洗,并且在新的劃分方案下被適當(dāng)?shù)刂匦录虞d。在其他情況中,通過(guò)在重新劃分存儲(chǔ)器之前允許進(jìn)程完全地處理進(jìn)程內(nèi)數(shù)據(jù),可以將其從存儲(chǔ)器中隱含地沖洗。
但是,無(wú)論用于沖洗的方案如何,沖洗存儲(chǔ)器可能負(fù)面影響進(jìn)程的性能。在劃分或分配之前沖洗存儲(chǔ)器可能延遲由舊進(jìn)程、新進(jìn)程或兩者對(duì)數(shù)據(jù)的處理。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的一個(gè)方面,提供了一種系統(tǒng),包括存儲(chǔ)器;以及多個(gè)可配置的功能塊,所述功能塊被分配了部分的所述存儲(chǔ)器,每一個(gè)所述功能塊包括地址界限單元,用于儲(chǔ)存定義了被所述功能塊當(dāng)前所使用的所述存儲(chǔ)器中的范圍的值,以及記分板單元,用于跟蹤所述當(dāng)前使用范圍的使用。
根據(jù)本發(fā)明的另一個(gè)方面,提供了一種方法,包括在第一流水線的第一組函數(shù)間分布存儲(chǔ)器中地址的范圍;由所述第一流水線中的所述第一組函數(shù)使用所述地址范圍對(duì)數(shù)據(jù)進(jìn)行操作;以及不等待所述第一組函數(shù)的數(shù)據(jù)被沖洗,將所述存儲(chǔ)器中不同的地址范圍在第二流水線的第二組函數(shù)間進(jìn)行重新分布。
根據(jù)本發(fā)明的又一個(gè)方面,提供了一種方法,包括使用地址界限將存儲(chǔ)器在很多個(gè)進(jìn)程間劃分;將存儲(chǔ)器空間從所述很多個(gè)進(jìn)程中的一個(gè)動(dòng)態(tài)地重新分配到所述很多個(gè)進(jìn)程中的另一個(gè),同時(shí)所述很多個(gè)進(jìn)程持續(xù)地使用所述存儲(chǔ)器。
根據(jù)本發(fā)明的再一個(gè)方面,提供了一種方法,包括在一組固定函數(shù)間分配與先前在圖形處理設(shè)備中所分配的量不同量的物理存儲(chǔ)器而不執(zhí)行對(duì)數(shù)據(jù)的完全沖洗,所述數(shù)據(jù)與所述一組固定函數(shù)相關(guān)聯(lián)。
附圖包含在本說(shuō)明書(shū)中,并且構(gòu)成了它的一部分,附圖示出了一個(gè)或更多個(gè)符合本發(fā)明原理的實(shí)現(xiàn)方案,并且與描述一起說(shuō)明了這些實(shí)現(xiàn)方案。附圖不一定按比例,而是將重點(diǎn)放在示出本發(fā)明的原理。在附圖中,圖1示出了一個(gè)示例性的系統(tǒng);圖2示出了圖1的示例性系統(tǒng)中的線程分派器(thread dispatcher);圖3示出了圖2的線程分派器中的功能塊;圖4是示出最開(kāi)始在功能塊間分配緩沖區(qū)中的地址的過(guò)程的流程圖;圖5是示出功能塊利用緩沖區(qū)中的地址的過(guò)程的流程圖;圖6是示出功能塊動(dòng)態(tài)地改變地址界限(address fence)的過(guò)程的流程圖;以及圖7示出了示范性消息格式。
具體實(shí)施方案下列詳細(xì)描述參考了附圖。在不同的圖中可能使用相同的參考數(shù)字,以標(biāo)識(shí)相同或者類似的組成部件。在下列描述中,為了說(shuō)明而非限制的目的,給出了具體細(xì)節(jié),例如特定結(jié)構(gòu)、體系結(jié)構(gòu)、接口、技術(shù)等,以提供對(duì)所要求保護(hù)的發(fā)明的各個(gè)方面的透徹理解。但是,受益于本公開(kāi)的熟練技術(shù)人員將很清楚,可以在其他不依照這些具體細(xì)節(jié)的實(shí)施例中實(shí)踐所要求保護(hù)的發(fā)明的各個(gè)方面。在某些實(shí)例中,省略了對(duì)公知器件、電路和方法的描述,以免以不必要的細(xì)節(jié)模糊了對(duì)本發(fā)明的描述。
圖1示出了示范性系統(tǒng)100。系統(tǒng)100可以包括存儲(chǔ)器分層結(jié)構(gòu)(memory hierarchy)110、線程分派器120、總線130和處理核心140-1到140-n(總起來(lái)說(shuō)為“處理核心140”)。系統(tǒng)100可以包括多個(gè)支持多線程執(zhí)行的多個(gè)處理核心140。在一些實(shí)現(xiàn)方案中,處理核心140中的每一個(gè)均支持一個(gè)或更多個(gè)線程。通過(guò)允許活動(dòng)線程被執(zhí)行而其他線程處于不活動(dòng)狀態(tài),單處理器上的多線程(例如核心140-1)可以實(shí)現(xiàn)有效率的執(zhí)行。
存儲(chǔ)器分層結(jié)構(gòu)110可以儲(chǔ)存一個(gè)或更多個(gè)處理核心140執(zhí)行期間要使用的數(shù)據(jù)和指令。存儲(chǔ)器分層結(jié)構(gòu)110可以包括動(dòng)態(tài)隨機(jī)訪問(wèn)存儲(chǔ)器(DRAM)、一層或更多層的指令緩存(cache)、一層或更多層的數(shù)據(jù)緩存,和/或一層或更多層的共享指令和數(shù)據(jù)緩存。
耦合到存儲(chǔ)器分層結(jié)構(gòu)110的線程分派器120可以接收信息(例如指令指針以及數(shù)據(jù)和/或數(shù)據(jù)指針),所述信息與新線程相關(guān)聯(lián)。線程分派器120可以通過(guò)總線130與處理核心140耦合。線程分派器120可以管理處理核心140的線程資源。在接收到新的未決線程(pending thread)后,線程分派器120可以選擇一個(gè)具有可用于執(zhí)行未決線程的資源的處理核心(例如核心140-3),并通過(guò)總線130將所述線程分派到被選擇的核心。在處理核心完成現(xiàn)有線程后,線程分派器120得到通知,并且釋放該處理核心上的線程資源,用于將來(lái)的線程。
圖2示出了線程分派器120的一個(gè)可能的實(shí)現(xiàn)方案。線程分派器120可以包括命令解析器210、多個(gè)功能塊220-1、220-2...220-n(總起來(lái)說(shuō)為“功能塊220”)、高優(yōu)先權(quán)總線接口(HPBI)230、低優(yōu)先權(quán)總線接口(LPBI)240、統(tǒng)一返回緩沖區(qū)(URB)250以及分派器260。
命令解析器210可以將某些命令和請(qǐng)求轉(zhuǎn)換為功能塊220可以處理的格式。例如,命令解析器210可以將牽涉到很多個(gè)功能塊220的單個(gè)命令分解為很多個(gè)命令和/或指令,所述很多個(gè)命令和/或指令可以被路由到各功能塊220。
功能塊220可以執(zhí)行不同的函數(shù),可能是以流水線的方式。在一些實(shí)現(xiàn)方案中,功能塊220可以實(shí)現(xiàn)固定的圖形函數(shù),例如一個(gè)或更多個(gè)頂點(diǎn)著色器(vertex shader)、多邊形細(xì)分器(tessalator)、幾何著色器(geometry shader)、裁減器(clipper)、設(shè)置模塊以及窗口器(windower)。在任意給定時(shí)間,這些固定函數(shù)中的一些(例如一些功能塊220)可以是活動(dòng)的,并且其他函數(shù)(例如其他的功能塊220)可以是不活動(dòng)的。每一個(gè)活動(dòng)的功能塊220可以使用統(tǒng)一返回緩沖區(qū)250的某個(gè)被指定部分(例如統(tǒng)一返回緩沖區(qū)250的地址組)用于其輸出。
圖3示出了功能塊220的一個(gè)可能的實(shí)現(xiàn)方案。功能塊220可以包括一組地址界限310、一組記分板320、地址/索引計(jì)算單元330,以及狀態(tài)機(jī)340。
地址界限310可以包括一組ping/pong地址界限,每一個(gè)界限具有頂部寄存器(topregister)和底部寄存器(bottom register)。頂部和底部寄存器可以儲(chǔ)存定義URB 250中的地址范圍的地址,其中功能塊220可以在URB 250中儲(chǔ)存項(xiàng)目。如這里所使用的,和表示另一組(例如“舊”組或以前的組)的“ping”相反,“pong”可以表示替代組(例如“新”的組)。在地址界限310的上下文中,初始的一組頂部和底部界限值可以儲(chǔ)存在Ping界限寄存器中,并且當(dāng)替代的一組值到達(dá)時(shí),它可以儲(chǔ)存在Pong界限寄存器中。如果另一組替代的頂部和底部值到達(dá),則它可以儲(chǔ)存在Ping界限寄存器中,Pong界限具有最近的值,等等。
記分板320可以包括ping記分板和pong記分板,每一個(gè)記分板對(duì)每個(gè)地址具有一位被記錄在URB 250中。記分板可以足夠大,以便對(duì)于該功能塊220,它可以容納URB 250的記錄(entry)的最大可預(yù)見(jiàn)分配。因此,如果給定的功能塊220可能僅僅被分配了URB250的20%,則可以將記分板320大小調(diào)整為每個(gè)該數(shù)量的URB250的記錄2位(Ping和Pong各一位)。
地址/索引計(jì)算單元330可以包括用于由索引計(jì)算地址或反過(guò)來(lái)進(jìn)行計(jì)算的邏輯。如這里所使用的,“索引”可以表示數(shù)字(例如從0開(kāi)始,并在地址界限310的大小處結(jié)束),所述數(shù)字表示由地址界限310定義的地址范圍內(nèi)的相對(duì)位置。對(duì)于功能塊220的地址界限310內(nèi)的地址,可以按如下計(jì)算和該地址對(duì)應(yīng)的索引索引=地址-頂部,其中頂部表示地址界限310的上端。類似地,單元330可以按如下從索引值計(jì)算地址地址=頂部+索引。下面將描述使用地址/索引計(jì)算單元330的實(shí)例。
一旦在地址界限310之間發(fā)生改變,狀態(tài)機(jī)340,可以在記分板320上執(zhí)行重分配。下面將更詳細(xì)地描述這種重分配。狀態(tài)機(jī)340也可以執(zhí)行其他的地址處理,例如確定保留還是沿著給定地址傳遞。狀態(tài)機(jī)340還可以為功能塊220執(zhí)行其他的控制和/或簿記功能。
回到圖2,功能塊220可以由兩個(gè)雙向總線,即HPBI 230和LPBI 240互連。在HPBI230和LPBI 240的每一個(gè)中,在每一個(gè)功能塊220之間可能橫跨兩個(gè)點(diǎn)到點(diǎn)接口,一個(gè)往“北”,另一個(gè)往“南”。例如,地址可以通過(guò)HPBI 230和/或LPBI 240的向南的接口,從第n個(gè)功能塊220FB[n]向下傳遞到第(n+1)個(gè)功能塊220FB[n+1]。類似地,F(xiàn)B[n+1]可以通過(guò)HPBI 230和/或LPBI 240的往北的接口將地址向上傳遞到FB[n]。被發(fā)出的在功能塊220之間轉(zhuǎn)移所有權(quán)的地址可以在HPBI 230上傳遞。被發(fā)出的產(chǎn)生有效載荷和/或被返回到產(chǎn)生者功能塊220的地址可以在LPBI上傳遞。
可以用幾種方法在物理上實(shí)現(xiàn)HPBI 230和LPBI 240。在一些實(shí)現(xiàn)方案中,在每一個(gè)方向上可以并行使用兩個(gè)接口。在一些實(shí)現(xiàn)方案中,每個(gè)方向上的一個(gè)接口可以與其中的2個(gè)虛擬通道一起使用。如果實(shí)現(xiàn)了虛擬通道機(jī)制,則例如第1虛擬通道(例如HPBI 230)可以是比第0虛擬通道更高的優(yōu)先權(quán),第0虛擬通道可用于LPBI 240。在一些實(shí)現(xiàn)方案中,HPBI 230、LPBI 240或兩者可以是流控制的。
URB 250可以被安排成保持這樣的的數(shù)據(jù),即所述數(shù)據(jù)為在處理核心140處理之前和/或之后與功能塊220相關(guān)聯(lián)的數(shù)據(jù)。如這里所描述的,利用其中各自的地址界限310,URB250可以由功能塊220劃分和共享。在一些實(shí)現(xiàn)方案中,URB 250可能具有1024個(gè)記錄或者更少,盡管所要求保護(hù)的發(fā)明在這個(gè)方面不一定受限制。
分派器260可以通過(guò)總線130將線程從功能塊220分派到處理核心140。在一些實(shí)現(xiàn)方案中,分派器260可以確定向核心中的哪一個(gè)發(fā)送特定線程。在一些實(shí)現(xiàn)方案中,分派器260可以將線程路由到由發(fā)信功能塊220指定的特定處理核心140。
回到圖1,總線130可以包括在存儲(chǔ)器分層結(jié)構(gòu)110、線程分派器120和處理核心140間的很多個(gè)通訊鏈路。為了便于說(shuō)明,將總線130顯示為單條線,但是實(shí)際上總線130可以包括一個(gè)或更多個(gè)控制總線、數(shù)據(jù)總線等??偩€130可以從線程分派器120輸送數(shù)據(jù)供核心140處理,并且它也可以將經(jīng)過(guò)處理的數(shù)據(jù)從核心140輸送到線程分派器120和/或存儲(chǔ)器分層結(jié)構(gòu)110。
系統(tǒng)100還可以包括多個(gè)處理核心140,每一個(gè)處理核心140均包括帶有相關(guān)聯(lián)的控制電路的執(zhí)行電路。處理核心140可以是相同的,或者可以具有不同功能。系統(tǒng)100中可以包括任意數(shù)量的處理核心140-1到140-n。在一些實(shí)現(xiàn)方案中,處理核心140可以按行排列,每一行均具有相關(guān)聯(lián)的行控制器。
圖4是示出最開(kāi)始在功能塊(FB)220間分配緩沖區(qū)250中地址的過(guò)程400的流程圖。在系統(tǒng)100啟動(dòng)以后,或者在復(fù)位和/或沖洗之后,可以假設(shè)FB 200中所有的記分板320被清空,并且頂部/底部界限寄存器310處于“不關(guān)心”狀態(tài)。從線程分派器120中的命令流讀出的第一數(shù)據(jù)序列可以包括每一個(gè)FB 220的頂部/底部界限值的列表。
處理可以通過(guò)在FB 220間分布這些頂部/底部界限值開(kāi)始[動(dòng)作410]。也可以通過(guò)HPBI230將這些頂部/底部界限寄存器值相繼以流水線方式傳過(guò)FB 220。例如,在一些實(shí)現(xiàn)方案中,F(xiàn)B 220-1可以在其地址界限310中儲(chǔ)存第一頂部/底部對(duì),并且可以將界限值的剩余部分向下傳遞到FB 220-2。FB 220-2可以將所述剩余值的最上面的對(duì)儲(chǔ)存在其地址界限310中,并將剩余部分通過(guò)HPBI 230傳遞到FB 220-3,如此繼續(xù)。最后的功能塊220-n可以消耗最后的頂部/底部對(duì)。
接下來(lái),命令流中可能是地址列表,所述地址正在FB 220間分配[動(dòng)作420]。地址列表可以通過(guò)HPBI 230被輸入第一FB 220-1。FB 220-1可以查看給定地址,并確定它是否處于地址界限310中它的地址范圍內(nèi)[動(dòng)作430]。
如果地址不在FB 220-1的地址界限310內(nèi),則它被傳遞到下一個(gè)FB[動(dòng)作440]。如果地址在FB 220-1的范圍內(nèi)(或者,如果被傳遞,在另一個(gè)FB(例如220-2)的范圍內(nèi)),則該FB可以處理所述地址[動(dòng)作450]。
在這種地址處理中,F(xiàn)B可以通過(guò)計(jì)算單元330計(jì)算相關(guān)聯(lián)的索引,索引=地址-基數(shù)。對(duì)于這個(gè)計(jì)算出的索引值,隨后可以在該FB的Ping記分板320中設(shè)置一位。如從動(dòng)作440和450返回的箭頭所指示,這種地址處理可以繼續(xù),直到所有地址已經(jīng)和適當(dāng)?shù)腇B 220相關(guān)聯(lián)為止。
在序列400的末尾,所有的FB 220可以使其Ping地址界限310有效,以及用允許它們使用的地址來(lái)更新它們的PING記分板320。在一些實(shí)現(xiàn)方案中,這些索引地址可以從零開(kāi)始,并遞增計(jì)數(shù)(0、1、2...)到序列中最后的地址,盡管所要求保護(hù)的發(fā)明在這個(gè)方面不受限制。
如果在相應(yīng)的記分板320中設(shè)置了一位,則這表示特定地址不是“未定的(in-flight)”(例如,在傳輸?shù)搅硪粋€(gè)目的地中)。因此,記分板320(在特定的地址界限區(qū)域內(nèi))中的零(例如未被設(shè)置的位)可以表示特定地址未定。非未定的地址可以被回收,并被重新用于新的去往URB 250的輸出緩沖區(qū)。相反,不可以回收未定的地址用作新的輸出緩沖區(qū)的一部分。
盡管,就在啟動(dòng)時(shí)設(shè)置記分板320而言,過(guò)程400看起來(lái)好像是不那么直接的方式,但是這樣的方案可以使得重新劃分地址界限310類似于啟動(dòng)序列的方案。不在FB 220-1之前發(fā)出地址以便用這些地址開(kāi)始流水線的優(yōu)化是可能的。為了便于理解,描述了上面的特定方案400,并且其細(xì)節(jié)不一定限制所要求保護(hù)的發(fā)明。
圖5是示出功能塊(FB)利用緩沖區(qū)250中的地址的過(guò)程500的流程圖。在初始化序列400之后,F(xiàn)B 220-1可以將其記分板讀指針設(shè)置為零。FB 220-1可以從命令流(例如命令解析器210)接收任務(wù)(例如,函數(shù)或函數(shù)的一部分)。根據(jù)該任務(wù)的緩沖要求(例如,在URB 250中所需的空間量),F(xiàn)B 220-1可以在URB 250中分配這樣的空間[動(dòng)作510]。
在動(dòng)作510中,例如,F(xiàn)B 220-1可以將當(dāng)前記分板讀指針與URB 250中針對(duì)該任務(wù)的期望記錄數(shù)量(例如,工作計(jì)數(shù)(WC))一起儲(chǔ)存在寄存器中(例如,工作指針(WP))。盡管在圖3中沒(méi)有顯式地示出,但是在一些實(shí)現(xiàn)方案中,WP和WC寄存器可以包括在記分板320中。FB 220-1可以檢查記分板320是否從其記分板讀指針開(kāi)始,將“工作計(jì)數(shù)”設(shè)為連續(xù)的1。如果記分板320中未設(shè)置那么多連續(xù)的1,則FB 220-1可以一直等待到設(shè)置了這樣的數(shù)字為止。但是,如果有這樣的“工作計(jì)數(shù)”空間可用,則FB 220-1可以清空在當(dāng)前讀指針處的位,并可以將記分板指針向前加一??梢灾貜?fù)這樣的清空和前進(jìn),直到分配了URB 250中任務(wù)所需的記錄數(shù)量(例如WC中的數(shù)字),完成動(dòng)作510。動(dòng)作510的其他實(shí)現(xiàn)方案是可能的,并且上面主要是為了便于理解而給出的。
通過(guò)地址計(jì)算單元330,從工作指針可以如下計(jì)算URB 250中與記分板320中的記錄對(duì)應(yīng)的地址URB地址=WP+頂部,其中從活動(dòng)(例如Ping或Pong)地址界限310獲得頂部。如果處理核心140要求多于一個(gè)返回地址,則可以為多個(gè)返回地址重復(fù)上面的計(jì)算。在完成了針對(duì)這部分任務(wù)的計(jì)算之后,可以將URB 250中的這些返回地址作為返回地址發(fā)到處理核心140[動(dòng)作520]。FB 220-1也可以結(jié)合動(dòng)作520,將其他和任務(wù)相關(guān)的信息分派到處理核心140。
所有的FB 220,在把工作分配到處理核心140之后,當(dāng)其各自的數(shù)據(jù)在處理后已經(jīng)返回URB 250時(shí),可以由URB 250發(fā)信令回到原態(tài)(signaled back)。這種信令可以在數(shù)據(jù)被寫(xiě)入U(xiǎn)RB 250時(shí)通過(guò)URB 250自動(dòng)發(fā)生。例如,F(xiàn)B 220-1可以通過(guò)LPBI 240接收這樣的通知[動(dòng)作530]。
當(dāng)在動(dòng)作530中接收到其數(shù)據(jù)在緩沖區(qū)250中的通知后,F(xiàn)B 220-1可以為下游的功能塊(例如FB 220-3)產(chǎn)生地址列表,用作其輸入[動(dòng)作540]。一般,F(xiàn)B 220-n可以和URB250產(chǎn)生地址+計(jì)數(shù)的列表,供接下來(lái)的FB 220-(n+x)消耗。這種地址列表消息的格式可以包括起始URB地址和字計(jì)數(shù)。這些地址(和字計(jì)數(shù))可以以FIFO(先進(jìn)先出)的方式通過(guò)LPBI 240傳輸?shù)脚彽南掠喂δ軌K(例如FB 220-(n+1))。如果FB 220-(n+1)是空函數(shù)(例如未用于任何給定的任務(wù)),則它可以將信息繼續(xù)傳遞,直到信息到達(dá)任務(wù)中的下一個(gè)功能塊220,即FB 220-(n+x)為止。
在FB 220-(n+x)已經(jīng)消耗了URB地址所指向的完整字計(jì)數(shù)長(zhǎng)度的數(shù)據(jù)以后,在發(fā)送FB 220-n中記分板320中的對(duì)應(yīng)記錄可被“釋放”。因此,F(xiàn)B 220-n等待它發(fā)送的與地址列表相關(guān)聯(lián)的數(shù)據(jù)被下一個(gè)FB 220-(n+x)消耗[動(dòng)作550]。如這里所使用的,術(shù)語(yǔ)“消耗”表示已經(jīng)從URB 250讀取了所討論的地址。但是應(yīng)該注意,這些地址可以被視作被消耗,但是也可能在去往另一個(gè)目的地FB 220的途中。例如,如果地址已經(jīng)被并非其最終目的地的FB 220讀取,則它可以被視作被消耗,同時(shí)也正在去往其目的地的途中。
在地址已經(jīng)被另一個(gè)FB 220消耗之后,F(xiàn)B 220-n可以將地址放回其記分板320上的自由列表(例如,它可以“釋放”該地址)[動(dòng)作560]。這種“自由”記錄可供在URB 250中的新返回緩沖操作中再次使用。為了釋放地址,其在記分板320中的索引可以由計(jì)算單元330如下計(jì)算索引=URB地址-活動(dòng)頂部界限??梢葬槍?duì)和此第一地址相關(guān)聯(lián)的地址的所有“計(jì)數(shù)”數(shù)字執(zhí)行這種索引計(jì)算。地址加計(jì)數(shù)數(shù)字的這種擴(kuò)展可被稱作“原子化”。例如,為10的地址和為4的計(jì)數(shù)可以被原子化為地址10、11、12和13。接著,可以如下設(shè)置索引處記分板320的特定值(例如,地址+計(jì)數(shù)),以指示地址是自由的記分板[索引]=1。
在接收到“自由”URB地址和計(jì)數(shù)(例如,或者自我產(chǎn)生的,或者通過(guò)向北或向南LPBI240接收到的)之后,F(xiàn)B 220-n可以將該地址與其當(dāng)前活動(dòng)界限310的頂部/底部對(duì)相比,并且,或者保留信息,或者將其通過(guò)LPBI 240適當(dāng)?shù)叵蚰匣蛳虮眰鬟f[動(dòng)作570]。如果地址(忽略字計(jì)數(shù))位于該FB 220的頂部/底部范圍內(nèi),則它被該功能塊保留。如果地址(忽略字計(jì)數(shù))小于該FB 220的頂部值,則它可以通過(guò)向北的LPBI 240向上傳遞,并且如果它大于FB 220的底部值,則它可以通過(guò)向南的LPBI 240向下傳遞。在動(dòng)作560中“自由”URB+計(jì)數(shù)信息的原子化之后,在動(dòng)作570中做出比較以及做出將地址向上還是向下傳遞的決定是有意的,并且允許界限310的動(dòng)態(tài)改變而無(wú)需沖洗所有的FB 220。這也允許界限310在先前的相鄰URB分配之間移動(dòng),這將在下面進(jìn)一步描述。
盡管主要針對(duì)FB 220-1描述,但是也可以由其他的功能塊以類似的方式執(zhí)行過(guò)程500,例如FB 220-2、FB 220-3等。
在一些實(shí)現(xiàn)方案中,F(xiàn)B 220可以將相同的URB 250記錄(和字計(jì)數(shù))多次發(fā)到下游FB 220。例如,一些FB 220可以使用URB 250的記錄作為緩存,并且緩存命中可以使得給定的URB記錄被另一個(gè)FB讀取超過(guò)一次。因此,該URB記錄可以多次成為未完結(jié)的(outstanding)。標(biāo)明地址是否未定的記分板320不應(yīng)該將這樣的記錄當(dāng)作“自由”,一直到它已經(jīng)被多次消耗為止。
因此,在一些實(shí)例中,某些FB 220可以維持分離的簿記,以跟蹤在地址能夠被重新放入記分板320之前需要多少“釋放”的實(shí)例。具有這種行為的那些功能塊220可以包括每當(dāng)發(fā)出給定的URB記錄時(shí)向上計(jì)數(shù)的機(jī)制,以及每當(dāng)“釋放”給定的URB記錄時(shí)向下計(jì)數(shù)的互補(bǔ)機(jī)制。盡管沒(méi)有顯式地示出,但是在一些實(shí)現(xiàn)方案中,這種計(jì)數(shù)機(jī)制可以包括在記分板320和/或狀態(tài)機(jī)340中。如果計(jì)數(shù)字段保持相同,則該計(jì)數(shù)機(jī)制只需要追蹤其發(fā)出的基URB地址而非URB 250中所有相關(guān)聯(lián)的記錄(例如地址+計(jì)數(shù))。
已描述了利用存儲(chǔ)器中的地址的過(guò)程500,現(xiàn)在將描述存儲(chǔ)器在函數(shù)間的動(dòng)態(tài)重分配。在某些時(shí)刻,可能是FB 220“改變狀態(tài)”的時(shí)間(例如,當(dāng)將一個(gè)或更多個(gè)FB 220加入給定的函數(shù)鏈或流水線或者從其中刪除時(shí))。例如,給定FB 220的流水線結(jié)構(gòu)(即頂點(diǎn)著色器后面是多邊形細(xì)分器,多邊形細(xì)分器后面是裁減器、設(shè)置以及窗口器。),則在這種結(jié)構(gòu)中假定存在一種URB 250在功能塊220間的理想劃分。對(duì)于新的流水線結(jié)構(gòu)(例如,頂點(diǎn)著色器后面是幾何著色器,幾何著色器后面是裁減器、設(shè)置以及窗口器,或者是FB 220的另一種結(jié)構(gòu),例如頂點(diǎn)著色器后面是裁減器、設(shè)置以及窗口器),則可能存在URB在FB 220間的不同的理想劃分。這種狀態(tài)上的變化通常可能涉及URB 250在FB 220間的重新劃分(例如FB 220內(nèi)地址界限的改變)。
一種實(shí)現(xiàn)這種重新劃分的方法可以是在改變地址界限之前,一直等待到?jīng)_洗了每一個(gè)連續(xù)的FB 220的數(shù)據(jù)為止。但是,這種方案將導(dǎo)致“暗含沖洗(implied flush)”,其中,在沖洗連續(xù)的FB 220的同時(shí),整個(gè)流水線將在改變狀態(tài)中被延遲。另一種重新劃分的方法將是根據(jù)FB 220的新地址界限,從一個(gè)FB 220開(kāi)始傳遞地址,但是,如果只有一個(gè)“向南”的通道并且如果它是流控制的,則這種方案可能死鎖。
根據(jù)一些實(shí)現(xiàn)方案,為了避免死鎖而且同時(shí)改變狀態(tài)并在新?tīng)顟B(tài)中處理,第一個(gè)FB220不等待下游的FB 220來(lái)沖洗。而且它也不等到任一級(jí)(stage)的記分板320被填成全1(例如,被清空)。來(lái)自舊狀態(tài)的地址在狀態(tài)改變期間可以仍在傳送中,但是FB 220不盲目地繼續(xù)向上和向下傳遞地址。相反,地址可以向上流動(dòng)以完成其從先前狀態(tài)的正常流動(dòng),同時(shí)其他的地址也通過(guò)系統(tǒng)被傳遞,以便將它們重新映射到新?tīng)顟B(tài)中。如進(jìn)一步描述的那樣,HPBI 239有助于這種不會(huì)死鎖的動(dòng)態(tài)狀態(tài)改變(例如存儲(chǔ)器的重新劃分)。
圖6是示出功能塊動(dòng)態(tài)地改變地址界限的過(guò)程600的流程圖。盡管針對(duì)鏈或流水線中的第一個(gè)功能塊(例如FB 220-1)描述,但是過(guò)程600也可以由后續(xù)的FB 220執(zhí)行,以完成URB 250的動(dòng)態(tài)重分配。
處理可以以FB 220-1接收新的一組地址界限值[動(dòng)作610]來(lái)開(kāi)始。這些新的值可以儲(chǔ)存在地址界限310的ping或pong部分中,取決于哪一個(gè)目前容納當(dāng)前操作狀態(tài)的界限。用于所有的FB 220的新的頂部/底部界限的列表可以由命令流發(fā)出,并且FB 220-1可以從列表取出第一頂部/底部組,并把它們置入其(例如pong)地址界限310。然后,F(xiàn)B 220-1可以將剩余的頂部/底部界限通過(guò)HPBI 230傳遞到下一個(gè)FB 220(例如FB 220-2)。
處理可以繼續(xù),其中FB 220-1完成它在其接收到新的地址界限之前開(kāi)始的處理/工作[動(dòng)作620]。這些工作可以包括還沒(méi)有返回URB 250的要處理的數(shù)據(jù),但是可能不包括URB250中的與FB 220-1相關(guān)聯(lián)的數(shù)據(jù)(例如在記分板320中)。不允許FB 220-1在它仍正工作于其舊狀態(tài)時(shí)就將地址“退入(retire)”其新記分板(例如記分板320的“pong”部分)。如果FB 220-1仍正工作于其舊狀態(tài),則任何未被標(biāo)明正針對(duì)所有權(quán)傳遞的地址應(yīng)該與FB220-1的當(dāng)前工作界限進(jìn)行關(guān)于界限的比較,并根據(jù)舊工作狀態(tài)向上、向下傳遞或保留。
FB 220-1完成其當(dāng)前工作后,它可以從零開(kāi)始掃描其舊記分板320,以得到在舊狀態(tài)中分配的記錄。對(duì)于記分板中每一個(gè)這樣的記錄,它可以執(zhí)行地址轉(zhuǎn)換地址=記分板索引+舊頂部。如果地址在新的頂部/底部界限內(nèi),則它執(zhí)行轉(zhuǎn)換索引=地址-新頂部,并將新記分板320中的位設(shè)置在該索引處[動(dòng)作630]。
如果地址在新地址界限的底部值以下或頂部值以上,則FB 220-1可以通過(guò)HPBI 230將地址與“傳遞所有權(quán)”指示符一起向下傳遞[動(dòng)作640]。注意,頂部值比較只和頂部FB220-1以下的FB有關(guān)。這樣的傳遞所有權(quán)指示符可以指示其他的FB 220(例如FB 220-2),該地址不應(yīng)該被傳遞回FB 220-1,而是應(yīng)該與接收FB的新地址界限比較(并且,如果在新界限內(nèi),則設(shè)置接收FB的新記分板中的對(duì)應(yīng)記錄)。對(duì)在動(dòng)作630中已經(jīng)轉(zhuǎn)換的地址或動(dòng)作640中已傳遞的地址,F(xiàn)B 220-1可以清空其舊記分板320中對(duì)應(yīng)的記錄(例如通過(guò)將其設(shè)置為零)。圖6中的虛線指示可以針對(duì)在舊記分板320中找到的所有記錄重復(fù)動(dòng)作620和動(dòng)作640。
如果舊記分板320在給定索引處為零(例如,指示沒(méi)有地址),則在動(dòng)作630和640中,在該索引上可以不執(zhí)行操作。索引可以增加,將零傳遞。如果執(zhí)行了地址計(jì)算并且地址映射到新記分板320中,則FB 220可以將零寫(xiě)入該新記分板記錄而不是僅僅將其傳遞。注意,只要舊記分板320一被掃描,則FB 220-1可以為新記分板記錄將記分板讀指針復(fù)位到零,并且可以開(kāi)始搜索連續(xù)的1,以便在URB 250中產(chǎn)生新的有效載荷要求記錄。
和動(dòng)作630和640同時(shí),地址可以通過(guò)向北的LPBI 240到達(dá)FB 220-1。這些到達(dá)的地址可以由FB 220-1針對(duì)新界限310和記分板320來(lái)處理[動(dòng)作650]。例如,如果進(jìn)入的地址在新頂部/底部界限310內(nèi)映射,則它可以被引用到新記分板索引,并且新記分板記錄可以被置為1。如果地址在新界限310的范圍以外(在第一個(gè)FB 220-1的情況下,它可能只比底部值大),則地址可以在HPBI 230上與“傳遞所有權(quán)”指示符一起,被向下發(fā)送回FB 220-2(或者不管哪一個(gè),只要是流水線中的下一個(gè)FB 220)。
當(dāng)FB 220-1準(zhǔn)備好將新?tīng)顟B(tài)的第一工作量發(fā)送到下一個(gè)FB 220(例如FB 220-2)時(shí),它在向南的LPBI 240上發(fā)送“翻轉(zhuǎn)狀態(tài)”消息[動(dòng)作660]。這樣的翻轉(zhuǎn)狀態(tài)消息指示流水線中的下一個(gè)FB開(kāi)始過(guò)程600。盡管顯示在動(dòng)作650之后,但是在一些實(shí)現(xiàn)方案中,動(dòng)作660可以在動(dòng)作620之后立刻發(fā)生。當(dāng)FB 220-2看到此消息并完成了先前狀態(tài)的工作時(shí)(例如在完成動(dòng)作620之后),它可以按順序在其向南的LPBI 240上發(fā)出另一個(gè)“翻轉(zhuǎn)狀態(tài)”消息。
為了防止不合時(shí)宜的狀態(tài)變化,人們期望一種機(jī)制,所述機(jī)制防止FB 220-1在引擎/流水線的剩余部分就緒之前就根據(jù)新?tīng)顟B(tài)發(fā)出數(shù)據(jù)。因此,F(xiàn)B 220-1可以一直等待到它從最下游的單元(例如FB 220-n,其中n表示流水線中的最后一個(gè)單元)接收到某個(gè)信號(hào)為止,所述信號(hào)指示它已經(jīng)到達(dá)其新?tīng)顟B(tài)[動(dòng)作670]。在一些實(shí)現(xiàn)方案中,當(dāng)最下游的FB 220-n響應(yīng)它通過(guò)其LPBI 240接收到的“翻轉(zhuǎn)狀態(tài)”作用時(shí),它可以將確認(rèn)信號(hào)通過(guò)向北的HPBI230發(fā)送回FB 220-1。流水線中所有其他的FB 220可以忽略此消息。在這些實(shí)現(xiàn)方案中,F(xiàn)B 220-1可以不發(fā)出新的狀態(tài)分組(packet),直到接收到確認(rèn)分組為止。但是其他的確認(rèn)和/或延遲機(jī)制既是可能的,也是預(yù)期中的。
然后,F(xiàn)B 220-1可以開(kāi)始發(fā)出新?tīng)顟B(tài)中的工作[動(dòng)作680]。
現(xiàn)在將針對(duì)下游單元,例如FB 220-2來(lái)討論過(guò)程600。FB 220-1可能已經(jīng)改變了狀態(tài)而FB 220-2仍處于舊狀態(tài)。FB 220-2“釋放”的任何落入舊界限的地址自然也落入舊記分板。FB 220-2“釋放”的任何落在其舊界限以外的地址使用向北的LPBI 240向上傳遞。FB 220-2通過(guò)其向北的LPBI 240從下游單元(例如FB 220-3)接收的任何地址的情況也是如此。當(dāng)FB 220-2完成了分派其來(lái)自舊狀態(tài)的工作,它可以執(zhí)行動(dòng)作630和640,掃描其舊記分板320,并使用向北或向南的HPBI將地址與“傳遞所有權(quán)”語(yǔ)義一起按需要傳遞。剩余的單元220可以重復(fù)過(guò)程600,以便在它們中間動(dòng)態(tài)地重分配URB 250。
圖7示出了HPBI 230和LPBI 240上的示范性消息格式。消息710示出了HPBI 230上向南的(例如到后續(xù)FB 220)消息的格式。消息720示出了HPBI 230上向北的(例如到前面的FB 220)消息的格式。類似地,消息730和消息740示出了LPBI 240上分別向南和向北的消息的格式。
可以注意到,消息710到740中所有的URB地址被示為10位的字段。這個(gè)數(shù)據(jù)長(zhǎng)度假設(shè)URB 250將具有1024個(gè)記錄或更少,并且可能基于被尋址的存儲(chǔ)器的大小有所不同。如URB 250或其他的要被重新劃分的存儲(chǔ)器需要更多或更少的地址空間,則如果要求,可以進(jìn)行調(diào)整。
如這里所描述的那樣,地址界限機(jī)制310可以包含在每一個(gè)功能塊220中。每一個(gè)功能塊220對(duì)于其自己到250中的輸出,可以使用其自己的界限范圍內(nèi)的任何地址。這些地址被傳遞到下游功能220,用于后續(xù)讀以及進(jìn)一步處理。在執(zhí)行了后續(xù)讀之后,地址或者被該功能塊保留(例如,當(dāng)?shù)刂吩谠摴δ軌K的地址范圍內(nèi)時(shí)),或者被向下傳遞(例如,當(dāng)?shù)刂反笥谠摴δ軌K的范圍時(shí)),或者被向上傳遞(例如,當(dāng)?shù)刂沸∮谠摴δ軌K的地址范圍時(shí))。當(dāng)功能塊220中發(fā)生狀態(tài)變化時(shí),地址界限310可以被動(dòng)態(tài)地重新配置,而不會(huì)死鎖或需要完全沖洗功能塊220的相關(guān)聯(lián)數(shù)據(jù)。
前面對(duì)一個(gè)或更多個(gè)實(shí)現(xiàn)的描述提供了說(shuō)明和描述,但是并非打算是窮盡性的或者將本發(fā)明的范圍限于所公開(kāi)的精確形式。根據(jù)上面的教導(dǎo),修改和變化是可能的,并且可以從本發(fā)明的各種實(shí)現(xiàn)方案的實(shí)踐中獲得。
例如,盡管已經(jīng)針對(duì)返回緩沖區(qū)250和功能塊220描述了這里的存儲(chǔ)器重分配方案,但是一般它也適用于計(jì)算函數(shù)和/或線程對(duì)存儲(chǔ)器的動(dòng)態(tài)重分配,或者是針對(duì)所述計(jì)算函數(shù)和/或線程的存儲(chǔ)器動(dòng)態(tài)重分配。并且,對(duì)于這里所描述的由地址界限310和記分板320執(zhí)行的地址排序和簿記,其他方案不但可能,而且也在預(yù)期之中。此外,盡管對(duì)于功能塊220,地址界限310假設(shè)連續(xù)的地址,但是,如果期望,緩沖區(qū)中不連續(xù)的地址也可以與給定的功能塊220相關(guān)聯(lián)其中,所述功能塊220具有與界限不同的關(guān)聯(lián)邏輯。
此外,在圖4到6中的動(dòng)作不需要按所示順序來(lái)實(shí)現(xiàn),并且也不一定要執(zhí)行所有的動(dòng)作。而且,不依賴于其他動(dòng)作的那些動(dòng)作可以與其他動(dòng)作并行執(zhí)行。此外,至少圖中動(dòng)作中的一些可以被實(shí)現(xiàn)為指令或指令群,在機(jī)器可讀介質(zhì)中實(shí)現(xiàn)。
除非在這里被顯式地描述,否則在本申請(qǐng)的描述中使用的元件、指令都不應(yīng)該被理解為對(duì)于本發(fā)明是關(guān)鍵的或必不可少的。而且,如這里所使用的,冠詞“a”旨在包括一個(gè)或更多個(gè)項(xiàng)目。不偏離本發(fā)明的精神和原理,可以對(duì)所要求保護(hù)的發(fā)明的上述實(shí)現(xiàn)作出修改和變化。本文旨在將所有這些修改和變化包括在本公開(kāi)中,并且受所附的權(quán)利要求書(shū)的保護(hù)。
權(quán)利要求
1.一種系統(tǒng),包括存儲(chǔ)器;以及多個(gè)可配置的功能塊,所述功能塊被分配了部分的所述存儲(chǔ)器,每一個(gè)所述功能塊包括地址界限單元,用于儲(chǔ)存定義了被所述功能塊當(dāng)前所使用的所述存儲(chǔ)器中的范圍的值,以及記分板單元,用于跟蹤所述當(dāng)前使用范圍的使用。
2.如權(quán)利要求1所述的系統(tǒng),其中,除了所述當(dāng)前所使用的范圍以外,所述地址界限單元還包括用于所述存儲(chǔ)器中的至少一個(gè)范圍的儲(chǔ)存器。
3.如權(quán)利要求2所述的系統(tǒng),其中,除了所述當(dāng)前所使用的范圍以外,所述記分板單元還包括用于跟蹤所述存儲(chǔ)器中的所述至少一個(gè)范圍的使用的儲(chǔ)存器。
4.如權(quán)利要求1所述的系統(tǒng),其中,每一個(gè)所述功能塊還包括計(jì)算單元,用于基于所述地址界限單元中的值,在所述存儲(chǔ)器中的地址值和所述記分板單元中的索引之間進(jìn)行轉(zhuǎn)換。
5.如權(quán)利要求4所述的系統(tǒng),其中,每一個(gè)所述功能塊還包括邏輯,用于根據(jù)來(lái)自所述計(jì)算單元的索引,設(shè)置或清空所述記分板單元中的值。
6.如權(quán)利要求1所述的系統(tǒng),還包括一個(gè)或更多個(gè)處理器,所述處理器用于從所述功能塊或者所述存儲(chǔ)器接收數(shù)據(jù),處理所述數(shù)據(jù),并將經(jīng)過(guò)處理的數(shù)據(jù)寫(xiě)入所述存儲(chǔ)器。
7.如權(quán)利要求1所述的系統(tǒng),還包括連接所述多個(gè)可配置的功能塊的高優(yōu)先權(quán)雙向總線;以及連接所述多個(gè)可配置的功能塊的低優(yōu)先權(quán)雙向總線。
8.一種方法,包括在第一流水線的第一組函數(shù)間分布存儲(chǔ)器中地址的范圍;由所述第一流水線中的所述第一組函數(shù)使用所述地址范圍對(duì)數(shù)據(jù)進(jìn)行操作;以及不等待所述第一組函數(shù)的數(shù)據(jù)被沖洗,將所述存儲(chǔ)器中不同的地址范圍在第二流水線的第二組函數(shù)間進(jìn)行重新分布。
9.如權(quán)利要求8所述的方法,其中,所述分布步驟包括在所述第一組函數(shù)間分布一組地址界限。
10.如權(quán)利要求9所述的方法,其中,所述分布步驟還包括確定地址是否在地址界限內(nèi),如果所述地址落入所述地址界限,則處理所述地址,以及如果所述地址落在所述地址界限以外,則將所述地址傳遞到另一個(gè)函數(shù)。
11.如權(quán)利要求8所述的方法,其中,所述操作步驟包括為處理任務(wù)在存儲(chǔ)器中分配空間,將所述任務(wù)分派到處理器,以及產(chǎn)生所述存儲(chǔ)器中地址的列表,所述列表和下一個(gè)函數(shù)的任務(wù)對(duì)應(yīng)。
12.如權(quán)利要求11所述的方法,其中所述操作步驟還包括一直等待到和所述地址列表相關(guān)聯(lián)的數(shù)據(jù)被消耗,以及釋放記分板中的所述地址列表。
13.如權(quán)利要求8所述的方法,其中所述重新分布步驟包括在所述第二組函數(shù)間分布新的一組地址界限,如果所述地址落入新地址界限,則將地址從舊記分板轉(zhuǎn)換到新記分板,以及如果所述地址落在新地址界限以外,則傳遞所述舊記分板中的所述地址的所有權(quán)。
14.如權(quán)利要求13所述的方法,其中,所述重新分布步驟還包括向下一個(gè)函數(shù)發(fā)送消息,以便針對(duì)其新地址界限,開(kāi)始針對(duì)其舊的和新的記分板的所述轉(zhuǎn)換和所述傳遞。
15.如權(quán)利要求8所述的方法,還包括在執(zhí)行過(guò)所述重新分布以后,由所述第二流水線中的所述第二組函數(shù)使用所述不同的地址范圍進(jìn)行操作。
16.一種方法,包括使用地址界限將存儲(chǔ)器在很多個(gè)進(jìn)程間劃分;將存儲(chǔ)器空間從所述很多個(gè)進(jìn)程中的一個(gè)動(dòng)態(tài)地重新分配到所述很多個(gè)進(jìn)程中的另一個(gè),同時(shí)所述很多個(gè)進(jìn)程持續(xù)地使用所述存儲(chǔ)器。
17.如權(quán)利要求16所述的方法,其中所述動(dòng)態(tài)地重新分配的步驟包括接收新的一組地址界限,如果地址落在所述新的一組地址界限內(nèi),則保留所述地址的所有權(quán),以及如果所述地址落在所述新的一組地址界限以外,則傳遞所述地址的所有權(quán)。
18.如權(quán)利要求17所述的方法,其中,所述傳遞所有權(quán)的步驟包括通過(guò)高優(yōu)先權(quán)總線將所述地址發(fā)送到另一個(gè)進(jìn)程。
19.如權(quán)利要求17所述的方法,其中,所述重新分布的步驟還包括發(fā)送消息到下一個(gè)進(jìn)程,以便利用其新的一組地址界限,針對(duì)其對(duì)應(yīng)的地址執(zhí)行所述保留和所述傳遞。
20.一種方法,包括在一組固定函數(shù)間分配與先前在圖形處理設(shè)備中所分配的量不同量的物理存儲(chǔ)器而不執(zhí)行對(duì)數(shù)據(jù)的完全沖洗,所述數(shù)據(jù)與所述一組固定函數(shù)相關(guān)聯(lián)。
21.如權(quán)利要求20所述的方法,其中,所述一組固定函數(shù)在所述分配期間持續(xù)地使用和訪問(wèn)所述物理存儲(chǔ)器。
22.如權(quán)利要求20所述的方法,其中,所述分配步驟包括在所述一組固定函數(shù)的舊的一組地址界限和新的一組地址界限之間轉(zhuǎn)移所述存儲(chǔ)器中的地址。
23.如權(quán)利要求22所述的方法,其中,所述分配步驟包括根據(jù)所述新的一組地址界限,在高優(yōu)先權(quán)總線上,在固定函數(shù)之間傳遞所述存儲(chǔ)器中地址的所有權(quán)。
全文摘要
本發(fā)明涉及線程處理器中緩沖區(qū)在多個(gè)客戶間的動(dòng)態(tài)分配。一種方法可以包括在第一流水線的第一組函數(shù)間分布存儲(chǔ)器中的地址范圍。所述第一流水線中的所述第一組函數(shù)可以使用所述地址范圍對(duì)數(shù)據(jù)進(jìn)行操作。存儲(chǔ)器中不同的地址范圍可以在第二流水線的第二組函數(shù)間重新分布,而不必等待所述第一組函數(shù)的數(shù)據(jù)被沖洗。
文檔編號(hào)G06F12/00GK1831778SQ20051013250
公開(kāi)日2006年9月13日 申請(qǐng)日期2005年12月23日 優(yōu)先權(quán)日2004年12月23日
發(fā)明者托馬斯·派亞扎 申請(qǐng)人:英特爾公司