新四季網

線程處理器中緩衝區在多個客戶間的動態分配的製作方法

2023-05-07 04:26:11

專利名稱:線程處理器中緩衝區在多個客戶間的動態分配的製作方法
技術領域:
所要求保護的發明的實現方案一般涉及存儲器的分配,並且特別地,涉及存儲器在進程(process)間的動態分配。
背景技術:
在數據處理中,有時候將存儲器在邏輯上劃分,供很多個進程使用。例如,如果四個進程正在運行,則可將存儲器劃分為與每一個進程對應的四個部分。如果這些進程是相關的(例如作為流水線進程的一部分),則這樣的劃分方案可以給每一個進程分配某個最小的存儲器量以防止死鎖(deadlock)。可以在進程間分配超過所述匯總的最小量的剩餘存儲器量,以有助於通過所述進程來獲得更好的性能。
當使用存儲器的進程數量改變時,人們可能期望改變存儲器的分配,以便針對新的進程數量(例如三個或五個,而非上面實施例中的四個進程)來優化。但是,一些或全部的現有進程在存儲器中可能具有相關聯的數據,並且這樣的數據可能落入存儲器的另一個進程的部分;或者,如果其進程被停止(discontinue),則這些數據可能被孤立。因此,在存儲器可以在新數量的進程間劃分之前,它通常被衝洗(flush)(例如清空數據)。在一些情況中,進程內(in-process)數據可以立刻從存儲器中被刪除/衝洗,並且在新的劃分方案下被適當地重新加載。在其他情況中,通過在重新劃分存儲器之前允許進程完全地處理進程內數據,可以將其從存儲器中隱含地衝洗。
但是,無論用於衝洗的方案如何,衝洗存儲器可能負面影響進程的性能。在劃分或分配之前衝洗存儲器可能延遲由舊進程、新進程或兩者對數據的處理。

發明內容
根據本發明的一個方面,提供了一種系統,包括存儲器;以及多個可配置的功能塊,所述功能塊被分配了部分的所述存儲器,每一個所述功能塊包括地址界限單元,用於儲存定義了被所述功能塊當前所使用的所述存儲器中的範圍的值,以及記分板單元,用於跟蹤所述當前使用範圍的使用。
根據本發明的另一個方面,提供了一種方法,包括在第一流水線的第一組函數間分布存儲器中地址的範圍;由所述第一流水線中的所述第一組函數使用所述地址範圍對數據進行操作;以及不等待所述第一組函數的數據被衝洗,將所述存儲器中不同的地址範圍在第二流水線的第二組函數間進行重新分布。
根據本發明的又一個方面,提供了一種方法,包括使用地址界限將存儲器在很多個進程間劃分;將存儲器空間從所述很多個進程中的一個動態地重新分配到所述很多個進程中的另一個,同時所述很多個進程持續地使用所述存儲器。
根據本發明的再一個方面,提供了一種方法,包括在一組固定函數間分配與先前在圖形處理設備中所分配的量不同量的物理存儲器而不執行對數據的完全衝洗,所述數據與所述一組固定函數相關聯。


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

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀