TWI585680B - 用於執行緒佇列安排之方法、裝置與系統(二) - Google Patents

用於執行緒佇列安排之方法、裝置與系統(二) Download PDF

Info

Publication number
TWI585680B
TWI585680B TW102102032A TW102102032A TWI585680B TW I585680 B TWI585680 B TW I585680B TW 102102032 A TW102102032 A TW 102102032A TW 102102032 A TW102102032 A TW 102102032A TW I585680 B TWI585680 B TW I585680B
Authority
TW
Taiwan
Prior art keywords
thread
command
descriptor
indicator value
status
Prior art date
Application number
TW102102032A
Other languages
English (en)
Other versions
TW201319937A (zh
Inventor
江宏
湯姆斯A 皮阿薩
布萊恩D 勞斯福斯
斯里戴維 查拉桑尼
史蒂芬J 史潘勒
Original Assignee
英特爾公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 英特爾公司 filed Critical 英特爾公司
Publication of TW201319937A publication Critical patent/TW201319937A/zh
Application granted granted Critical
Publication of TWI585680B publication Critical patent/TWI585680B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Image Processing (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Multi Processors (AREA)
  • Bus Control (AREA)

Description

用於執行緒佇列安排之方法、裝置與系統(二)
本發明係關於執行緒佇列安排之方法、裝置與系統。
發明背景
為了提升效能,一處理系統可能具有不只能執行一個執行緒的效能。例如,一處理系統可能能夠執行一個執行緒,直到一或多個事件發生為止,例如受強迫要進入停止模式而同時等待資料,以隨後再次開始執行另一個執行緒。
在一種多執行緒處理系統中,一執行單元具有多個通道,其中二或更多個通道具有能執行二或更多個執行緒的效能。
不管多執行緒系統的目前狀態為何,在多執行緒系統中產生及/或執行執行緒的進一步方法與裝置是目前所欲的。
依據本發明之一實施例,係特地提出一種方法,其包含下列步驟:接收一用以產生一執行緒的請求;以及至少部分地回應於所接收之該請求,對一佇列提供一請求;其中該接收一用以產生一執行緒的請求之步驟包含:接收請求一執行緒之一命令序列,且其包括下列至少一者:(i)一狀態指標值命令,其提供一指標值給一狀態描述符;(ii)一原始命令,其包括針對欲產生之一執行緒的資訊;或是(iii)一非管線狀態命令,其控制一固定功能或與一管線相關聯的記憶體。
100‧‧‧系統
110‧‧‧輸入裝置
120‧‧‧處理系統
130‧‧‧輸出裝置
140、150‧‧‧通訊鏈路
210‧‧‧處理器
215‧‧‧記憶體單元
220‧‧‧執行單元
230‧‧‧指令記憶體單元
240‧‧‧資料記憶體單元
250、260‧‧‧通訊鏈路
300、300A、300B、300C、300D、‧‧‧執行單元
310‧‧‧執行緒產生器
320‧‧‧執行緒表
330‧‧‧指令佇列
340‧‧‧解碼器
350‧‧‧指令調度器
360‧‧‧執行單元管線
370‧‧‧信號線
380‧‧‧信號線及/或匯流排
390‧‧‧執行單元
402‧‧‧命令串流器
404‧‧‧視訊前端
406‧‧‧執行緒產出器
410‧‧‧多工器
412‧‧‧記憶體、統一返回緩衝器(URB)
414‧‧‧執行緒調度器
500‧‧‧命令
510‧‧‧介面/狀態描述符
512‧‧‧狀態指標值命令
514‧‧‧VFE狀態指標值
516‧‧‧非管線狀態命令
518‧‧‧原始命令
520‧‧‧VFE狀態描述符
522‧‧‧介面描述符基礎指標值
524‧‧‧介面描述符
526‧‧‧執行緒指標值
528‧‧‧執行緒資源描述符
530‧‧‧取樣器狀態指標值
532‧‧‧配聯表指標值
534‧‧‧取樣器狀態表
536‧‧‧配聯表
540‧‧‧表面狀態描述符
600‧‧‧單一樹狀結構
602‧‧‧單一根執行緒
604、606、608、610、612、614、 616、618、620、622‧‧‧子執行緒
700、701‧‧‧不連接樹狀結構
702‧‧‧第一根執行緒
704、706‧‧‧子執行緒
708、710、712‧‧‧根執行緒
714、716、718、720‧‧‧子執行緒
802‧‧‧根執行緒請求佇列
804‧‧‧輸入緩衝器
806‧‧‧輸出緩衝器、頭端
808、810、812、814‧‧‧緩衝器
816‧‧‧控制單元
818‧‧‧多工器
822‧‧‧產出執行緒請求佇列
824‧‧‧輸入緩衝器
826‧‧‧輸出緩衝器
828、830、832、834‧‧‧緩衝器
838‧‧‧執行緒產生單元
840‧‧‧介面描述符提取單元
842‧‧‧持續URB控制數
844‧‧‧執行緒調度佇列
900‧‧‧方法
902、904‧‧‧步驟
第1圖展示出根據本發明某些實施例的一種系統。
第2圖展示出根據本發明某些實施例之第1圖中該系統的 一處理系統。
第3A圖展示出根據本發明某些實施例之第1圖中該處理系統的一部分。
第3B圖展示出根據本發明某些實施例之第1圖中該處理系統的一部分。
第4圖展示出根據本發明某些實施例之第1圖中的一執行緒產生器。
第5圖展示出根據本發明某些實施例的一種狀態模型以及命令。
第6圖展示出根據本發明某些實施例的一種執行緒關係。
第7圖展示出根據本發明某些實施例的一種執行緒關係。
第8圖展示出根據本發明某些實施例之第4圖中該執行緒產生器的一執行緒產出器。
第9圖展示出根據本發明某些實施例的一種方法。
詳細說明
本文所述的實施例係與一種“處理系統”相關聯。如本文使用地,所謂的“處理系統”可表示處理資料的任何系統。在某些實施例中,一種處理系統係與處理圖形資料及/或任何媒體資訊類型的一圖形引擎相關聯。在某種狀況中,可藉著使用一SIMD執行單元來改進一處理系統的效能。例如,一SIMD執行單元可同時針對多個資料通道執行一單一浮點SIMD指令(例如,以加速轉換及/或呈現三維幾何形狀)。處理系統的其他實例包括中央處理單元(CPU)以及數位信號處理器(DSP)。
第1圖展示出根據本發明某些實施例的一種系統100。請參照第1圖,系統100包括輸入裝置110、處理系統120、以及輸出裝置130。輸入裝置110透過通訊鏈路140耦合至處理系統120。處理系統120透過通 訊鏈路150耦合至輸出裝置130。
在操作中,輸入裝置110透過通訊鏈路140對處理系統提供資訊。處理系統120接收輸入裝置110提供的資訊,且透過通訊鏈路150把資訊儲存到輸出裝置130(例如顯示器裝置130)及/或對輸出裝置130提供資訊。
如本文使用地,通訊鏈路可為任何類型的通訊鏈路,例如但不限於:有線(例如,導體、光纖電纜)或無線(例如,聲學鏈路、電磁鏈路、或該等的任何組合,包括但不限於:微波鏈路、衛星鏈路、紅外線鏈路),及/或該等之組合,其各為公用或私有的、專屬及/或共享的(例如,一網路)。通訊鏈路可或不可為永久通訊鏈路。通訊鏈路可支援任何形式的任何類型資訊,例如但不限於:呈串列及/或並行形式的類比及/或數位(例如,一連串二進位值,即一位元串)信號。可或不可把該資訊劃分為區塊。如果劃分為區塊,一區塊中的資訊量可為預定地、或動態地受判定、及/或為固定的(例如,統一的)、或為變化的。通訊鏈路可使用一種協定或多種協定的組合,包括但不限於:網際網路協定。
在某些實施例中,一處理系統包括一或多個處理器。如本文使用地,一處理器可為任何類型的處理器。例如,一處理器可為可編程或為不可編程、一般用途或特殊用途、專屬或非專屬、分散或非分散、共享或非共享、及/或該等的任何組合。如果該處理器具有二或更多個分散部分,該等二或更多個部分可透過一通訊鏈路彼此通訊。例如,一處理器可包括但不限於:硬體、軟體、韌體、硬佈線電路及/或該等的任何組合。
第2圖展示出根據本發明某些實施例的一種處理系統120。請參照第2圖,在某些實施例中,處理系統120包括處理器210以及記憶體單元215。處理器210包括執行單元220並且可與例如一般用途處理器、數位信號處理器、媒體處理器、圖形處理器及/或通訊處理器等相關聯。
記憶體單元215儲存指令及/或資料(例如,與二維影像、三維影像、及/或移動影像相關聯的純量與向量),並且透過一或多個通訊鏈路耦合至處理器210。在某些實施例中,記憶體單元215或其一部份包含硬碟驅動機(例如,用以儲存且提供媒體資訊)、依電性記憶體,例如隨機存取記憶體(RAM)及/或非依電性記憶體,例如快閃記憶體。
在某些實施例中,記憶體單元215包括可儲存指令的指令記憶體單元230,以及可儲存資料的資料記憶體單元240。指令記憶體單元230透過通訊鏈路250耦合至處理器。資料記憶體單元240透過通訊鏈路260耦合至處理器。在某些實施例中,指令記憶體單元230及/或資料記憶體單元240係與分離指令與資料快取記憶體相關聯、與共享指令與資料快取記憶體相關聯、與一般共享快取記憶體支援的分離指令與資料快取記憶體相關聯、或與任何其他快取記憶體體系相關聯。
第3A圖展示出根據本發明某些實施例之一處理系統的一部分。請參照第3A圖,在某些實施例中,處理系統可包括執行單元300以及執行緒產生器310。在某些實施例中,執行單元300可包括執行緒表320、多個指令佇列330、多個解碼器340、指令調度器350以及執行單元管線360。
在某些實施例中,可透過通訊鏈路140把命令提供給執行緒產生器310的一輸入端。可從任何命令來源提供該等命令,包括但不限於:主機及/或輸入裝置110(第1圖)。在某些實施例中,執行緒產生器亦可透過一或多個信號線及/或匯流排380接收來自執行單元管線360的命令。執行緒產生器310可處理包括用以產生一或多個執行緒之請求的該等命令,並且可至少對其響應而產生一或多個執行緒。執行緒產生器310的一或多個輸出端可提供一或多個執行緒,而可透過一或多個信號線370把其定義提供給執行緒表320的一或多個輸入端。各個執行緒可包括擷取自一指令快取記憶體或其他記憶體的一組指令,該(等)記憶體可儲存界定正受處理系統執行及/或欲由該處理系統執行之一或多個程式中的一個、某些、或全部的多個指令。可把由執行緒表界定之各個執行緒的指令提供給指令佇列330中的個別佇列,其大小可受到調整以儲存少量的指令,例如6到8個指令。可把來自各個指令佇列330的指令提供給解碼器340中之個別解碼器的一輸入端。解碼器340可提供已解碼指令給指令調度器350,其把用於正受執行之一或多個執行緒的已解碼指令提供給執行該已解碼指令的執行管線360。
第3B圖展示出根據本發明某些實施例之第1圖中該處理系統的一部分。請參照第3B圖,在某些實施例中,處理系統包括執行單元390以及執行緒產生器310。在某些實施例中,執行單元390可包括多個執行單 元,例如執行單元300A至300D。在某些實施例中,各個該等執行單元300A至300D可與執行單元300(第3A圖)相同及/或相似。
在某些實施例中,可透過通訊鏈路140把命令提供給執行緒產生器310的一輸入端。可從任何命令來源提供該等命令,包括但不限於:主機及/或輸入裝置110(第1圖)。在某些實施例中,執行緒產生器亦可接收來自執行單元300A至300D中之一或多個的命令。執行緒產生器310可處理包括用以產生一或多個執行緒之請求的該等命令,並且至少對其響應而產生一或多個執行緒。執行緒產生器310的一或多個輸出端可提供一或多個執行緒,而可把其定義提供給一或多個執行單元300A至300D,例如一或多個執行單元300A至300D之一或多個執行緒表的一或多個輸入端(例如,請參見執行緒表320(第3A圖)。在某些實施例中,執行單元300A至300D的操作可與上述執行單元300(第3A圖)的操作相同及/或相似。
在某些實施例中,執行單元(300A、300B、300C、或300D)可包含SIMD執行單元。在某些實施例中,SIMD執行單元可接收一指令(例如,來自一指令記憶體單元)以及一個具有四個部件資料的向量(例如,向量部件)。執行單元隨後在該向量中針對該部件的所有部分同時地執行指令。此種方法稱為“水平式”、“通道並形”、或“結構陣列(AOS)”實行方案。在某些實施例中,SIMD執行單元可接收一指令以及四個運算域的資料,其中各個運算域係與一個不同向量相關聯。例如,各個向量可包括與一個三維圖形位置相關聯的三個位置值(例如,X、Y、與Z)。執行單元隨後在一單一指令期間中針對該等運算域的所有部分同時地執行該指令。此種方法稱為“垂直式”、“通道串列”、或“陣列結構(SOA)”實行方案。
雖然本文所述的某些實施例係與一個四通道以及八通道SIMD執行單元相關聯,要注意的是,SIMD執行單元可具有除了一以外的任何通道數量(例如,實施例可與一個32通道執行單元相關聯)。
第4圖展示出根據本發明某些實施例的一種執行緒產生器310。請參照第4圖,在某些實施例中,執行緒產生器310包括命令串流器402、視訊前端404、執行緒產出器406、多工器410、記憶體(有時在本文中稱為統一返回緩衝器(URB))412、以及執行緒調度器414。
命令串流器耦合至視訊前端404與多工器410。視訊前端404 耦合至執行緒產出器406與多工器410。多工器耦合至該統一返回緩衝器,而該統一返回緩衝器則耦合至執行緒調度器。
在某些實施例中,處理系統400之多個不同部分之間的耦合方式(例如電性耦合)可為專屬的、共享的(例如,一匯流排)及/或該等的任何組合。於此,在某些實施例中,耦合方式,例如從命令串流器、視訊前端、以及執行單元對記憶體(例如,URB)的電性連線,可包含一或多個共享資料匯流排。在某些實施例中,各種其他耦合方式,例如電性連線,可包含一或多個專屬信號線。
命令串流器402的輸入端可接收命令。可由任何命令來源提供所輸入命令,包括但不限於:主機處理器及/或輸入裝置110(第1圖)。在某些實施例中,命令串流器402包含用以從記憶體提取該等命令的直接記憶體存取(DMA)引擎。在該等實施例中,係把DMA引擎組配為環形緩衝器。
一或多個該等命令包含用以產生一執行緒的一請求。該種命令可具有任何形式。在某些實施例中,該種請求包括可用於產生該執行緒過程中的資訊。
可把請求一執行緒之一命令的一或多個部分提供給視訊前端404的輸入端。如果一命令請求一執行緒,視訊前端404可對其響應而提供一執行緒請求。由視訊前端404提供的執行緒請求可具有任何形式。因此,由視訊前端404提供的執行緒請求可或不可與提供給命令串流器402及/或視訊前端404的請求具有相同形式。在某些實施例中,執行緒請求包括可用來產生執行緒的資訊。
可把來自視訊前端404的執行緒請求提供給執行緒產出器406的一第一輸出端,而其第二輸入端接收運轉該執行單元之一或多個執行緒產生的執行緒請求。要注意的是,在本文中,有時把源自於一主機命令的一執行緒請求稱為根執行緒請求。在本文中,有時把來自執行單元的一執行緒請求稱為產出執行緒請求。由運轉一執行單元之另一個執行緒產生的一執行緒稱為一子執行緒。子執行緒可產生額外的執行緒,其均在一種根執行緒的樹狀結構下。
第6圖展示出根據本發明某些實施例的一種執行緒關係。 請參照第6圖,在某些實施例中,執行緒關係可包括單一樹狀結構600。單一樹狀結構600可包括產生多個子執行緒604至612的單一根執行緒602。某些子執行緒可產生後續子執行緒。例如,子執行緒606可產生子執行緒614、616。子執行緒608可產生子執行緒618、620。子執行緒610可產生子執行緒622。根執行緒608、610、612依據根執行緒602,且稱為同步化根執行緒,如以下所述。
第7圖展示出根據本發明某些實施例的一種執行緒關係。請參照第7圖,在某些實施例中,執行緒關係可包括多個不連接樹狀結構700、701。第一樹狀結構700具有包括子執行緒704、706的第一根執行緒702。子執行緒706可產生子執行緒714、716。根執行緒708可具有同屬根執行緒710、712。根執行緒708可產生子執行緒718、720。根執行緒708可產生子執行緒718、720。根執行緒702可具有同屬根執行緒708、710、712。根執行緒702以及同屬根執行緒708、710、712為獨立的,且稱為非同步化根執行緒,如以下所述。
請再次參照第4圖,執行緒產出器406可使執行緒請求排入佇列及/或受到調停,且可至少部分地跟與該等請求提供執行緒請求。由執行緒產出器406提供的一執行緒請求可具有任何形式,且因此可或不可與對命令串流器402提供的請求、對視訊前端404提供的請求、及/或對執行緒產出器406提供的請求具有相同形式。
可把來自執行緒產出器406的執行緒請求提供給執行緒調度器414的第一輸入端,如以下所述。
在某些實施例中,命令串流器402與視訊前端404亦可提供資訊給多工器410的輸入端。多工器的另一個輸入端可接收來自執行單元的資訊。
多工器410的一輸出端可提供從命令串流器402、視訊前端404、與執行單元接收到的資訊,可把該資訊提供給記憶體412,其如上所述地有時稱為統一返回緩衝器(URB)。
在某些實施例中,可把記憶體412劃分為二或更多個分割區。在該種實施例中,一索引(在本文中有時稱為控制數或URB控制數)可用來做為一指標值,以參照該記憶體中該等分割區中之一。可使用該等分 割區中之一(在本文中有時稱為常數URB)來儲存一或多個常數。
在某些實施例中,可把記憶體的一或多個部分配置在與命令串流器402、視訊前端404、執行緒產出器406及/或執行緒調度器414相同的晶片上。
記憶體或URB 412的一輸出端可提供資訊,將把該資訊提供給執行緒調度器414的一第二輸入端。執行緒調度器414可針對對其提供的各個該等執行緒調度一執行緒。在某些實施例中,執行緒調度器414一次處理一個執行緒請求。換言之,執行緒調度器414不可請求及/或接受一執行緒請求,直到調度器414已經針對先前對其供應的執行緒請求調度一執行緒為止。
在某些實施例中,可把控制資訊提供給執行緒調度器,並且可使用該資訊來調度該(等)執行緒,例如組配及/或配置該(等)執行緒可能需要的暫存器數量。
可利用任何方式來調度執行緒。於此,在某些實施例中,執行緒調度器414可利用一種“循環”方式來調度執行緒。例如,在某些實施例中,執行單元可包含能各執行多個執行緒的多個執行單元。在該種實施例中,執行緒調度器可對一第一執行單元中的一第一執行緒時槽分派一第一執行緒、對一第二執行單元中的一第一時槽分派一第二執行緒、對一第三執行單元中的一第一執行緒時槽分派一第三執行緒、對一第四執行單元中的一第一執行緒時槽分派一第四執行緒、對該第一執行單元中的一第二時槽分派一第五執行緒,以此類推。如果執行單元完成了執行一執行緒的動作,可由該執行單元產生一執行緒結束訊息,並且提供給執行緒產出器406。
第5圖展示出根據本發明某些實施例之可提供給處理系統以請求一執行緒的一連串命令500,以及可用來界定與一執行緒有關之資訊的狀態模型510。請參照第4圖,在某些實施例中,用以請求一執行緒的一連串命令可包括狀態指標值命令512、非管線狀態命令516與原始命令518。
狀態指標值命令512可“間接地”提供狀態資訊,其藉著對含容狀態資訊的一狀態描述符提供至少一指標值來控制該管線(例如,視訊前端404及/或執行緒產出器406)中的固定功能。在某些實施例中,狀態 指標值命令可包括指向VFE狀態描述符520的VFE狀態指標值514。在該種實施例中,VFE狀態描述符包括指向介面描述符之基礎的一介面描述符基礎指標值。
非管線狀態命令516可“直接地”提供狀態資訊,其控制固定功能以及與該管線相關聯的記憶體。一種非管線狀態命令可組配記憶體的分割動作,其如上所述地與命令串流器402、視訊前端404、執行緒產出器406及/或執行緒調度器414配置在相同晶片上。另一種類型非管線狀態命令為一常數命令(有時在本文中稱為一常數URB命令),其可界定常數資料,例如一或多個常數。在某些實施例中,可利用間接方式(例如,由一或多個指標值對記憶體識別出來)及/或以線內方式(例如,包括在命令中)來定義資料。
原始命令518為可使用的另一種命令。在某些實施例中,可使用一原始命令來請求要產生一或多個執行緒。在某些實施例中,一原始命令包括針對欲產生之一或多個執行緒的資訊,即控制及/或資料。在某些實施例中,控制資訊可包括用來組配該(等)執行緒的資訊,例如組配及/或配置該(等)執行緒可能需要的暫存器數量。在某些實施例中,控制資訊包括針對欲產生之一執行緒的一介面描述符差距值。在某些實施例中,可根據介面描述符差距值以及介面描述符基礎指標值(如上所述,在某些實施例中,視訊前端404備置有包括指向VFE狀態描述符520之VFE狀態指標值514的一狀態指標值命令,其可包括介面描述符基礎指標值)而針對一執行緒判定介面描述符指標值。
可使用介面描述符510來界定與一執行緒有關的資訊。介面與狀態描述符模型包括介面描述符基礎指標值522以及多個介面描述符524。介面描述符基礎指標值522提供該等多個介面描述符524之一或多個介面描述符(例如,第一介面描述符)的一位置。
在某些實施例中,介面描述符524提供已受到調度及/或欲受調度之執行緒的狀態資訊。在某些實施例中,各個介面描述符524包括供執行緒產出器406及/或執行緒調度器414調度一執行緒的充分資訊。
在某些實施例中,各個該等多個介面描述符524包括執行緒指標值526、執行緒資源描述符528、取樣器狀態指標值530、配聯表指 標值532、及/或可用於記憶體存取及/或存取其他硬體功能的一或多個其他指標值。執行緒指標值526可把一或多個指令的位置(例如一第一指令)提供給一執行緒。執行緒資源描述符528可指出該執行緒可能需要的資源,例如該執行緒及/或浮點模式可能需要的暫存器檔案數量。取樣器狀態指標值530可提供取樣器狀態表534中一或多個描述符的位置(例如,一第一描述符)。在某些實施例中,取樣器狀態表534可包括高達十六個取樣器狀態描述符。在某些實施例中,一或多個該等取樣器狀態描述符係結合三維圖形使用。在某些實施例中,一或多個該等取樣器狀態描述符提供一取樣器裝置的一或多個狀態(例如,一圖形結構取樣器單元(未展示))。
配聯表指標值532提供配聯表536之一或多個分錄的位置(例如,一第一分錄)。在某些實施例中,配聯表536包括高達256個分錄。配聯表536中該等分錄的一或多個可界定提供表面狀態描述符540之位置的一指標值。在某些實施例中,一或多個該等表面狀態可界定記憶體中的一資料陣列及/或與一資料緩衝器相關聯的一資料程序。在某些實施例中,一或多個該等表面狀態描述符540可描述如何掌管針對一二維影像的出站資料存取動作。
可把各個該等介面描述符524儲存在其本身記憶體位置中,即不同於儲存有其他介面描述符之記憶體位置的一或多個記憶體位置。可藉著對介面描述符基礎指標值增加一索引或差距值來判定一特定介面描述符524的位置,其在本文中有時稱為一介面描述符索引。因此,此模型的一或多個面向可使用二位準的定址技術。再者,一或多個該等定址位準可包含基礎加上差距值定址。
在某些實施例中,所有該等介面描述符具有相同大小及/或受組織為記憶體中的鄰接陣列。在某些其他實施例,一或多個該等介面描述符具有不同大小及/或係儲存在並不與其他介面描述符鄰接的記憶體部分中。
請同時參照第4圖,在某些實施例中,提供給命令串流器402的命令係與展示於第5圖及/或參照第5圖所述的命令相同及/或相似。在某些該等實施例中,命令串流器402首先接收一狀態指標值命令。在接收到狀態指標值命令512(第5圖)時,命令串流器402可遞送對該視訊前端 指出VFE狀態描述符520(第5圖)之位置的狀態指標值。該命令串流器此後可接收一或多個原始命令。如上所述,在某些實施例中,一原始命令可代表一或多個執行緒產生的一請求。在某些實施例中,一原始命令可包括一或多個執行緒產生的資訊,即控制及/或資料。在某些實施例中,控制資訊包括用以組配該(等)執行緒的資訊,例如組配及/或配置該(等)執行緒可能需要的暫存器數量。在某些實施例中,控制資訊包括欲產生之一執行緒的一介面描述符差距值。在某些實施例中,可根據介面描述符差距值以及介面描述符基礎指標值來判定一執行緒的介面描述符指標值(如上所述,在某些實施例中,視訊前端404可備置有包括可能指向VFE狀態描述符520之VFE狀態指標值514的一狀態指標值命令,其可包括介面描述符基礎指標值)。在某些實施例中,視訊前端404可根據介面描述符差距值(其如上所述,可能包括在原始命令518中(第5圖))來判定一執行緒的介面描述符指標值以及介面描述符基礎指標值522(如上所述,在某些實施例中,視訊前端可備置有包括指向VFE狀態描述符520之VFE狀態指標值514的一狀態指標值命令,其可包括介面描述符基礎指標值522)。
在某些實施例中,提供給執行緒產出器406的執行緒請求可包括介面描述符指標值。在某些實施例中,視訊前端404可產生包括在提供給執行緒產出器406之執行緒請求中的一索引或URB控制數。在某些實施例中,執行緒請求可包括指出對欲產生執行緒配置之暫存器數量的控制資訊,以及執行緒是否將使用儲存有常數的記憶體部分,例如常數URB。
第8圖展示出根據本發明某些實施例之的一種執行緒產出器406。請參照第8圖,在某些實施例中,可把視訊前端404(第4圖)提供的根執行緒請求提供給根執行緒請求佇列802的一輸入端。在某些實施例中,根執行緒請求佇列802可包含先進先出(FIFO)緩衝器,其表示進入佇列802的第一根執行緒請求亦為退出佇列802的第一根執行緒請求。在某些該等實施例中,根執行緒請求佇列802包括輸入緩衝器804、輸出緩衝器806、以及在其間耦合的一或多個緩衝器,例如緩衝器808至814。有時在本文中把輸出緩衝器806稱為佇列802的頭端806。在某些實施例中,輸出緩衝器806或該佇列的頭端可儲存下一個將退出根執行緒請求佇列802的根執行緒請求。
可把根執行緒請求佇列802提供的根執行緒請求提供給多工器818的一第一輸入端。該根執行緒請求佇列提供的執行緒請求可呈任何形式。在某些實施例中,根執行緒請求佇列802提供的執行緒請求可與從視訊前端404對執行緒產出器406提供的執行緒請求具有相同組態。
在某些實施例中,控制單元816控制用以從根執行緒請求佇列802提供根執行緒請求的時序。在某些實施例中,控制部分816可提供一或多個信號同步化及/或調定,如以下進一步所述。可把來自控制單元816的一或多個信號提供給根執行緒請求佇列802。此外,可把來自控制單元816的一或多個信號提供給多工器818的一或多個控制輸入端。
在某些實施例中,執行緒產出器404另包括產出執行緒請求佇列822,其一輸入端可接收該執行單元提供的產出執行緒請求。產出執行緒請求佇列822可把對其提供的產出執行緒請求排入佇列。在某些實施例中,產出執行緒請求佇列822包含一先進先出(FIFO)緩衝器。在某些該等實施例中,產出執行緒請求佇列822可包括輸入緩衝器824、輸出緩衝器826、以及在其間耦合的一或多個緩衝器,例如緩衝器828至834。有時在本文中把輸出緩衝器826稱為佇列的頭端或佇列緩衝器的頭端。在某些實施例中,輸出緩衝器826或該佇列的頭端可儲存下一個將退出產出執行緒請求佇列822的產出執行緒請求。
在某些實施例中,根執行緒佇列802及/或產出執行緒佇列822可包含一或多個任何類型的佇列,除了FIFO緩衝器之外或者置換FIFO緩衝器。例如,在某些實施例中,可對根執行緒請求各分派一優先順序,且具有最高優先順序的根執行緒請求可為對退出佇列802的第一根執行緒請求。例如,在某些實施例中,可對產出執行緒請求各分派一優先順序,且具有最高優先順序的產出執行緒請求可為退出佇列822的第一產出執行緒請求。
可把產出執行緒佇列822提供的一執行緒請求提供給多工器818的一第二輸入端。該產出執行緒請求佇列提供的執行緒請求可呈任何形式。在某些實施例中,產出執行緒請求佇列822提供的執行緒請求可與從視訊前端404對執行緒產出器406提供的執行緒請求具有相同組態。
在某些實施例中,控制部分816控制用以從產出執行緒請 求佇列822提供產出執行緒請求的時序。在某些實施例中,控制部分816可提供一或多個信號以供進行同步化及/或調定,如下進一步所述。
在某些實施例中,可所欲地僅一次提供一個執行緒請求(即,從根執行緒請求佇列802提供一執行緒請求或從產出執行緒請求佇列822提供一執行緒請求)。例如,執行緒產生單元可能只能一次掌管一個執行緒請求。於此,可提供調定技術。在某些實施例中,可對產出執行緒請求佇列822中的執行緒請求給予高於根執行緒請求佇列中之執行緒請求的優先順序。在某些實施例中,此種調定方式可協助避免可能發生的死結問題。
於此,在某些實施例中,控制單元816可對根執行緒請求佇列802提供一或多個控制信號及/或對產出執行緒請求佇列822提供一或多個控制信號,以控制根執行緒請求佇列802及/或產出執行緒請求佇列822,藉此一次僅提供一個執行緒請求(即,從根執行緒請求佇列802提供一執行緒請求或從產出執行緒請求佇列822提供一執行緒請求)。在該等實施例中,控制單元816亦可對多工器818提供一或多個控制信號以控制多工器818,藉此對多工器818的輸出端提供執行緒請求。
此外,某些實施例可針對任何給定時間中允許的根執行緒數量界定一限制(可編程或不可編程)。在某些實施例中,此限制小於系統中執行緒的最大數量,以協助防止死結狀況。針對一根執行緒的一請求到達佇列802的頭端806,且根執行緒的數量達到了限制,根執行緒請求佇列802將等待直到根執行緒的數量小於該經界定限制為止。在某些實施例中,只要尚未達到執行緒的最大數量,執行緒產出器可繼續提供執行緒請求。
在某些實施例中,可使根執行緒同步化或不同步化。一同步化根執行緒可用來確保不會產生根執行緒,直到一事件發生為止。例如,所欲的可能是使針對一程式之一部分的一執行緒延期,直到針對該程式之先前部分的一執行緒已運轉結束為止。
在某些實施例中,可對相同的根執行緒請求佇列802提供針對同步化根執行緒的請求以及針對未同步化根執行緒的請求。在某些該等實施例中,針對一同步化根執行緒的一請求可能不會前進超過根執行緒請求佇列802的頭端806,直到提供了一同步化信號為止。在某些實施例中, 如果把一訊息(在本文中有時稱為一產出根訊息)提供給產出執行緒請求佇列822,且該訊息到達了產出執行緒請求佇列822的頭端826,便將產生一同步化信號。如果針對一同步化根執行緒的請求到達了佇列802的頭端806,在產出根訊息到達佇列822的頭端826之前,根執行緒請求佇列802將等待產出根訊息到達佇列822的頭端826。為了協助防止死結狀況,在針對同步化根執行緒的請求到達根執行緒請求佇列的頭端806之前,該產出根訊息可能不受允許能前進超過產出執行緒請求佇列802的頭端826。於此,在針對該同步化根執行緒的請求到達佇列802的頭端806之前,如果該產出根訊息到達佇列822的頭端826,產出執行緒請求佇列822將等待針對同步化根執行緒的請求到達佇列802的頭端806。在某些該等實施例中,針對同步化根執行緒的請求以及產出根執行緒訊息可連續地退出其個別佇列。
在某些實施例中,一同步化根執行緒可源自於請求一同步化根執行緒的一命令。在某些實施例中,一命令包括一同步化欄位,並且將藉著設定該欄位中的一位元來請求一同步化根執行緒。在某些實施例中,該產出根訊息可由一根執行緒及/或一子執行緒啟始。
某些實施例並未對同步化根執行緒的數量設下任何限制,然而,針對同步化根的請求數量以及產出根訊息的數量應該是相同的。否則,在某些實施例中,死結狀況便會發生。
如上所述,在某些實施例中,控制單元816可對根執行緒請求佇列802提供一或多個控制信號及/或對產出執行緒請求佇列822提供一或多個控制信號,以控制根執行緒請求佇列802及/或產出執行緒請求佇列822來提供所欲操作。在該等實施例中,控制單元816亦可對多工器818提供一或多個控制信號,以控制多工器818,藉此把執行緒請求提供給多工器818的輸出端。
多工器818的輸出端可對執行緒產生單元838的一輸入端提供執行緒請求,執行緒產生單元838的一輸出端可提供一執行緒請求。執行緒產生單元838提供的執行緒請求可具有任何形式;在某些實施例中,該種形式可包括但不限於:一介面描述符及/或針對記憶體的一索引,例如常數URB控制數。
在某些實施例中,執行緒產生單元838可對介面描述符提取單元840提供提取介面描述符(例如,從一介面描述符快取記憶體)的介面描述符指標值,並且對執行緒產生單元838提供介面描述符。此外,如果提供給執行緒產生單元838的執行緒請求指出欲產生的執行緒將使用儲存有常數(例如該常數URB)記憶體的部分,執行緒產生單元838亦可接收針對儲存有常數之記憶體部分的一索引,例如來自一常數URB控制數單元的常數URB控制數。
可把執行緒產生單元838提供的執行緒請求提供給執行緒調度佇列844的輸入端。在某些實施例中,執行緒調度佇列844可協助解除執行緒產生器單元與執行緒調度器的耦合。在該等實施例中,執行緒調度佇列可協助使產生單元838與執行緒調度器414能彼此同時地及/或異步地(不進行同步化)運作。在某些實施例中,根執行緒請求佇列844可包含先進先出(FIFO)緩衝器,或任何類型的佇列。
在某些實施例中,根執行緒佇列802可協助解除視訊前端404與執行緒產生單元838的耦合。在該等實施例中,根執行緒請求佇列802可協助使視訊前端404與執行緒產生器838能彼此同時地及/或異步地(不進行同步化)運作,即使該視訊前端與該執行緒產生器彼此並不具有相同的延遲。
在某些實施例中,當一(母)執行緒產生一子執行緒時,該母執行緒將如固定功能般運作(例如視訊前端404)。它可藉著組合URB中的酬載並且隨後傳送出一產出執行緒訊息到執行緒產出器406來提供用以開啟該子執行緒的所有必要資訊,其具有子執行緒的一介面描述符指標值以及記憶體(例如URB)中之資料的指標值。
在某些實施例中,針對一子執行緒的介面描述符可不同於針對該母執行緒的介面描述符一該母執行緒如何判定該子介面描述符的方式係取決於該母執行緒。某些實施例可能需要該子介面描述符來自相同介面描述符基址上之介面描述符陣列的介面描述符。
在某些實施例中,一根執行緒可負責管理預先配置的資源,例如記憶體(如URB)、空間,並且擦除其直接以及間接子執行緒的空間。例如,在某些實施例中,一根執行緒可把其URB空間劃分為數個區段。它 可使用一區段來對一子執行緒遞送酬載,並且轉送此區段到該子執行緒,以做為返回的URB空間。該子執行緒可另把該URB區段再劃分為子區段,並且針對其本身的子執行緒使用該等子區段。此種程序可重複進行。相似地,一根執行緒可把其受擦除記憶體空間劃分為數個區段,並且把一擦除區段給予一子執行緒。
在某些實施例中,多個根執行緒可同時地在一執行單元中運轉。在某些實施例中,僅有一個擦除空間狀態變數可供所有根執行緒共享,且需要擦除空間的所有同時根執行緒可共享相同的擦除記憶體大小。
第9圖展示出根據本發明某些實施例的一種方法。本文所述的流程圖未必暗示著動作的固定順序,並且可呈成任何可實現順序來進行實施例。要注意的是,本文所述的任何方法可由硬體、軟體(包括微碼)、韌體、或該等的任何組合來進行。在某些實施例中,該方法可用於本文所揭露的一或多個實施例中。
在步驟902中,在某些實施例中,可接收到用以產生一執行緒的一請求。在某些實施例中,該請求可包括一第一指標值。在某些該等實施例中,第一指標值可包括一介面描述符指標值。
在步驟904中,至少部分地響應於該接收請求而對一佇列提供一請求。在某些實施例中,該接收請求及/或該提供請求包括一第一指標值。在某些該等實施例中,該第一指標值可包括一介面描述符指標值。
某些實施例可另包括至少部分地響應於對佇列提供的請求提取多個指令,並且執行該等多個指令中的至少一個。執行該等多個指令中之至少一個的動作可包括提供該至少一指令給一執行單元以執行該至少一指令。某些其他實施例可另包括接收來自一執行單元而要產生一執行緒的一請求;以及至少部分地響應於來自該執行單元的該請求,提供一請求給一佇列。
除非另外指明地,例如“根據”等用語係表示“至少部分地根據”,因此並不排除“正根據”。此外,除非另外指明地,例如“包含”、“具有”、“包括”等用語以及其所有變化形式為開放描述形式,且因此並不排除額外的元件及/或特徵。此外,除非另外指明地,例如“一”、“一個”、“第一”等用語係為開放描述形式,且並非分別表示 “僅有一”、“僅有一個”以及“僅有一第一個”。再者,除非另外指明的以外,“第一個”此用語本身並不要求會有“第二(個)”。
已經參照SIMD執行單元在本文中說明了某些實施例。然而,要注意的是,實施例可與任何類型的執行單元相關聯,例如多個指令、多個資料(MIMD)執行單元。
本文所述的數個實施例僅為了展示目的而提出。熟知技藝者將可了解的是,可實行具有修改方案以及替代方案的其他實施例,其僅受申請專利範圍的限制。
900‧‧‧方法
902、904‧‧‧步驟

Claims (17)

  1. 一種用於執行緒佇列安排之方法,其包含:接收一用以產生一執行緒的請求;以及至少部分地回應於所接收之該請求,對一佇列提供一請求;其中該接收一用以產生一執行緒的請求之步驟包含:接收請求一執行緒之一命令序列,且其包括下列至少一者:(i)一狀態指標值命令,其提供一指標值給一狀態描述符;(ii)一原始命令,其包括針對欲產生之一執行緒的資訊;或是(iii)一非管線狀態命令,其控制一固定功能或與一管線相關聯的記憶體。
  2. 如申請專利範圍第1項之方法,進一步包含:至少部分地回應於對該佇列提供的該請求,提取多個指令;以及執行該等多個指令之至少一者。
  3. 如申請專利範圍第1項之方法,其中該接收請求一執行緒之一命令序列之步驟包含:接收包括一原始命令之一命令序列,該原始命令包括可被使用在下列至少一者之資訊:(i)組配可被由一執行緒所需要的暫存器數量;或是(ii)配置可被由一執行緒所需要的暫存器數量。
  4. 如申請專利範圍第1項之方法,其中該接收請求一執行緒之一命令序列之步驟包含: 接收一命令序列,其包括:(i)一狀態指標值命令,其提供一視訊前端(VFE)狀態指標值,其指向包括一介面描述符基礎指標值之一VEF狀態描述符;以及(ii)一原始命令,其包括一介面描述符差距值;該方法進一步包含:根據下列來判定一提供針對欲產生之該執行緒的狀態資訊之介面描述符:(a)包括在該原始命令中的該介面描述符差距值;以及(b)包括在該VEF狀態描述符中的該介面描述符基礎指標值,其藉由該命令序列之該狀態指標值命令所提供之該視訊前端(VFE)狀態指標值所指向。
  5. 如申請專利範圍第4項之方法,其中該判定一提供針對欲產生之該執行緒的狀態資訊之介面描述符係根據(a)包括在該原始命令中的該介面描述符差距值;以及(b)該介面描述符基礎指標值之步驟包含:判定一介面描述符,其包括下列至少一者:(1)一執行緒指標值,其提供一指令的位置給欲產生之該執行緒;(2)一執行緒資源描述符,其指出欲產生之可被由該執行緒所需要的資源;(3)一取樣器狀態指標值,其提供在一取樣器狀態表中之一描述符的位置,在該取樣器狀態表中之該描述符係結合三維圖形使用或提供一取樣器裝置的一個狀態;或是(4)一配聯表指標值,其提供一配聯表分錄之位置,該分錄界定提供一表面狀態描述符之位置的一指標值。
  6. 如申請專利範圍第5項之方法,其中該判定一提供針對欲產生之該執行緒的狀態資訊之介面描述符係根據(a)包括在該原始命令中的該介面描述符差距值;以及(b)該介面描述符基礎指標值之步驟包含:判定一介面描述符,其包括:(1)一執行緒指標值,其提供一指令的位置給欲產生之該執行緒;(2)一執行緒資源描述符,其指出欲產生之可被由該執行緒所需要的資源;(3)一取樣器狀態指標值,其提供在一取樣器狀態表中之一描述符的位置,在該取樣器狀態表中之該描述符係結合三維圖形使用或提供一取樣器裝置的一個狀態;以及(4)一配聯表指標值,其提供一配聯表分錄之位置,該分錄界定提供一表面狀態描述符之位置的一指標值。
  7. 如申請專利範圍第1項之方法,其中該接收請求一執行緒之一命令序列之步驟包含:接收一命令序列,其包括:(i)一狀態指標值命令,其提供一指標值給一狀態描述符;(ii)一原始命令,其包括針對欲產生之一執行緒的資訊;或是(iii)一非管線狀態命令,其控制一固定功能或與一管線相關聯的記憶體。
  8. 一種用於執行緒佇列安排之裝置,其包含:用於接收一用以產生一執行緒的請求,並且至少部分地回應於所接收之該請求用於佇列用以產生一執行緒的該請求之電路;其中該接收一用以產生一執行緒的請求包含: 接收請求一執行緒之一命令序列,且其包括下列至少一者:(i)一狀態指標值命令,其提供一指標值給一狀態描述符;(ii)一原始命令,其包括針對欲產生之一執行緒的資訊;或是(iii)一非管線狀態命令,其控制一固定功能或與一管線相關聯的記憶體。
  9. 如申請專利範圍第8項之裝置,進一步包含:用於至少部分地回應於對該佇列提供的該請求提取多個指令,並且用於執行該等多個指令之至少一者的電路。
  10. 如申請專利範圍第8項之裝置,其中該接收請求一執行緒之一命令序列包含:接收一命令序列,其包括:(i)一狀態指標值命令,其提供一視訊前端(VFE)狀態指標值,其指向包括一介面描述符基礎指標值之一VEF狀態描述符;以及(ii)一原始命令,其包括一介面描述符差距值;該裝置進一步包含:用於根據下列來判定一提供針對欲產生之該執行緒的狀態資訊之介面描述符的電路:(a)包括在該原始命令中的該介面描述符差距值;以及(b)包括在該VEF狀態描述符中的該介面描述符基礎指標值,其藉由該命令序列之該狀態指標值命令所提供之該視訊前端(VFE)狀態指標值所指向。
  11. 如申請專利範圍第10項之裝置,其中該判定一提供針對欲產生之該執行緒的狀態資訊之介面描述符係根據(a)包括在 該原始命令中的該介面描述符差距值;以及(b)該介面描述符基礎指標值包含:判定一介面描述符,其包括下列至少一者:(1)一執行緒指標值,其提供一指令的位置給欲產生之該執行緒;(2)一執行緒資源描述符,其指出欲產生之可被由該執行緒所需要的資源;(3)一取樣器狀態指標值,其提供在一取樣器狀態表中之一描述符的位置,在該取樣器狀態表中之該描述符係結合三維圖形使用或提供一取樣器裝置的一個狀態;或是(4)一配聯表指標值,其提供一配聯表分錄之位置,該分錄界定提供一表面狀態描述符之位置的一指標值。
  12. 一種用於執行緒佇列安排之裝置,其包含:一具有指令儲存於其上之儲存媒體,該等指令當由一機器執行時會導致下列動作進行:接收一用以產生一執行緒的請求;以及至少部分地回應於所接收之該請求,對一佇列提供一請求;其中該接收一用以產生一執行緒的請求之動作包含:接收請求一執行緒之一命令序列,且其包括下列至少一者:(i)一狀態指標值命令,其提供一指標值給一狀態描述符;(ii)一原始命令,其包括針對欲產生之一執行緒的資訊;或是(iii)一非管線狀態命令,其控制一固定功能或與一管線相關聯的記憶體。
  13. 如申請專利範圍第12項之裝置,其中該等指令更包含當由一機器執行時會進一步導致下列動作進行之指令: 至少部分地回應於對該佇列提供的該請求,提取多個指令;以及執行該等多個指令之至少一者。
  14. 如申請專利範圍第12項之裝置,其中該接收請求一執行緒之一命令序列之動作包含:接收一命令序列,其包括:(i)一狀態指標值命令,其提供一視訊前端(VFE)狀態指標值,其指向包括一介面描述符基礎指標值之一VEF狀態描述符;以及(ii)一原始命令,其包括一介面描述符差距值;該等指令更包含當由一機器執行時會進一步導致下列動作進行之指令:用於根據下列來判定一提供針對欲產生之該執行緒的狀態資訊之介面描述符的電路:(a)包括在該原始命令中的該介面描述符差距值;以及(b)包括在該VEF狀態描述符中的該介面描述符基礎指標值,其藉由該命令序列之該狀態指標值命令所提供之該視訊前端(VFE)狀態指標值所指向。
  15. 如申請專利範圍第14項之裝置,其中該判定一提供針對欲產生之該執行緒的狀態資訊之介面描述符係根據(a)包括在該原始命令中的該介面描述符差距值;以及(b)該介面描述符基礎指標值之動作包含:判定一介面描述符,其包括下列至少一者:(1)一執行緒指標值,其提供一指令的位置給欲產生之該執行緒;(2)一執行緒資源描述符,其指出欲產生之可被 由該執行緒所需要的資源;(3)一取樣器狀態指標值,其提供在一取樣器狀態表中之一描述符的位置,在該取樣器狀態表中之該描述符係結合三維圖形使用或提供一取樣器裝置的一個狀態;或是(4)一配聯表指標值,其提供一配聯表分錄之位置,該分錄界定提供一表面狀態描述符之位置的一指標值。
  16. 一種用於執行緒佇列安排之系統,其包含:用於接收一用以產生一執行緒的請求,並且至少部分地回應於所接收之該請求用於佇列用以產生一執行緒的該請求之電路;一用於儲存針對該執行緒之至少一個指令的記憶體單元;其中該接收一用以產生一執行緒的請求包含:接收請求一執行緒之一命令序列,且其包括下列至少一者:(i)一狀態指標值命令,其提供一指標值給一狀態描述符;(ii)一原始命令,其包括針對欲產生之一執行緒的資訊;或是(iii)一非管線狀態命令,其控制一固定功能或與一管線相關聯的記憶體。
  17. 如申請專利範圍第16項之系統,進一步包含:用於至少部分地回應於對該佇列提供的該請求提取多個指令,並且用於執行該等多個指令之至少一者的電路。
TW102102032A 2006-12-30 2007-12-04 用於執行緒佇列安排之方法、裝置與系統(二) TWI585680B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/647,608 US7975272B2 (en) 2006-12-30 2006-12-30 Thread queuing method and apparatus

Publications (2)

Publication Number Publication Date
TW201319937A TW201319937A (zh) 2013-05-16
TWI585680B true TWI585680B (zh) 2017-06-01

Family

ID=39585925

Family Applications (2)

Application Number Title Priority Date Filing Date
TW096146031A TWI393048B (zh) 2006-12-30 2007-12-04 用於執行緒佇列安排之方法、裝置與系統
TW102102032A TWI585680B (zh) 2006-12-30 2007-12-04 用於執行緒佇列安排之方法、裝置與系統(二)

Family Applications Before (1)

Application Number Title Priority Date Filing Date
TW096146031A TWI393048B (zh) 2006-12-30 2007-12-04 用於執行緒佇列安排之方法、裝置與系統

Country Status (7)

Country Link
US (2) US7975272B2 (zh)
EP (1) EP2097814A4 (zh)
JP (1) JP5112449B2 (zh)
CN (1) CN101573690B (zh)
RU (1) RU2427029C2 (zh)
TW (2) TWI393048B (zh)
WO (1) WO2008082964A1 (zh)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7975272B2 (en) 2006-12-30 2011-07-05 Intel Corporation Thread queuing method and apparatus
US7953878B1 (en) * 2007-10-09 2011-05-31 Netapp, Inc. Multi-threaded internet small computer system interface (iSCSI) socket layer
US8838817B1 (en) 2007-11-07 2014-09-16 Netapp, Inc. Application-controlled network packet classification
US8566833B1 (en) 2008-03-11 2013-10-22 Netapp, Inc. Combined network and application processing in a multiprocessing environment
US8310492B2 (en) * 2009-09-03 2012-11-13 Ati Technologies Ulc Hardware-based scheduling of GPU work
KR101080845B1 (ko) * 2009-10-30 2011-11-07 (주)지노게임즈 교착 상태의 방지를 위한 데이터 처리 방법 및 시스템
US8671400B2 (en) * 2009-12-23 2014-03-11 Intel Corporation Performance analysis of software executing in different sessions
CN104281489B (zh) * 2013-07-12 2017-11-21 上海携程商务有限公司 Soa架构下的多线程请求方法及系统
US9606870B1 (en) 2014-03-31 2017-03-28 EMC IP Holding Company LLC Data reduction techniques in a flash-based key/value cluster storage
US9348644B2 (en) * 2014-10-08 2016-05-24 International Business Machines Corporation Application-level dispatcher control of application-level pseudo threads and operating system threads
US9824413B2 (en) * 2014-11-15 2017-11-21 Intel Corporation Sort-free threading model for a multi-threaded graphics pipeline
US10152527B1 (en) 2015-12-28 2018-12-11 EMC IP Holding Company LLC Increment resynchronization in hash-based replication
US10310951B1 (en) 2016-03-22 2019-06-04 EMC IP Holding Company LLC Storage system asynchronous data replication cycle trigger with empty cycle detection
US10324635B1 (en) 2016-03-22 2019-06-18 EMC IP Holding Company LLC Adaptive compression for data replication in a storage system
US10565058B1 (en) 2016-03-30 2020-02-18 EMC IP Holding Company LLC Adaptive hash-based data replication in a storage system
US9959063B1 (en) 2016-03-30 2018-05-01 EMC IP Holding Company LLC Parallel migration of multiple consistency groups in a storage system
US9959073B1 (en) 2016-03-30 2018-05-01 EMC IP Holding Company LLC Detection of host connectivity for data migration in a storage system
US10095428B1 (en) 2016-03-30 2018-10-09 EMC IP Holding Company LLC Live migration of a tree of replicas in a storage system
US10013200B1 (en) 2016-06-29 2018-07-03 EMC IP Holding Company LLC Early compression prediction in a storage system with granular block sizes
US10152232B1 (en) 2016-06-29 2018-12-11 EMC IP Holding Company LLC Low-impact application-level performance monitoring with minimal and automatically upgradable instrumentation in a storage system
US9983937B1 (en) 2016-06-29 2018-05-29 EMC IP Holding Company LLC Smooth restart of storage clusters in a storage system
US10083067B1 (en) * 2016-06-29 2018-09-25 EMC IP Holding Company LLC Thread management in a storage system
US10048874B1 (en) 2016-06-29 2018-08-14 EMC IP Holding Company LLC Flow control with a dynamic window in a storage system with latency guarantees
US11003664B2 (en) * 2016-08-29 2021-05-11 Oracle International Corporation Efficient hybrid parallelization for in-memory scans
CN109213607B (zh) * 2017-06-30 2021-07-23 武汉斗鱼网络科技有限公司 一种多线程渲染的方法和装置
CN111803950B (zh) * 2019-04-26 2022-08-16 厦门雅基软件有限公司 网页游戏的数据处理方法、装置、电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030147409A1 (en) * 2002-02-01 2003-08-07 Gilbert Wolrich Processing data packets
TW200428192A (en) * 2003-03-13 2004-12-16 Ibm Apparatus and method for controlling resource transfers in a logically partitioned computer system
TW200508892A (en) * 2003-03-13 2005-03-01 Ibm Apparatus and method for controlling resource transfers in a logically partitioned computer system
US6907520B2 (en) * 2001-01-11 2005-06-14 Sun Microsystems, Inc. Threshold-based load address prediction and new thread identification in a multithreaded microprocessor

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0752402B2 (ja) * 1989-11-24 1995-06-05 三菱電機株式会社 データ処理装置
US5430850A (en) * 1991-07-22 1995-07-04 Massachusetts Institute Of Technology Data processing system with synchronization coprocessor for multiple threads
JP2882475B2 (ja) * 1996-07-12 1999-04-12 日本電気株式会社 スレッド実行方法
US6505229B1 (en) * 1998-09-25 2003-01-07 Intelect Communications, Inc. Method for allowing multiple processing threads and tasks to execute on one or more processor units for embedded real-time processor systems
US6542991B1 (en) * 1999-05-11 2003-04-01 Sun Microsystems, Inc. Multiple-thread processor with single-thread interface shared among threads
US6889319B1 (en) * 1999-12-09 2005-05-03 Intel Corporation Method and apparatus for entering and exiting multiple threads within a multithreaded processor
US6609193B1 (en) 1999-12-30 2003-08-19 Intel Corporation Method and apparatus for multi-thread pipelined instruction decoder
JP2002140201A (ja) * 2000-11-02 2002-05-17 Nec Eng Ltd データベース更新方法及びそれを用いたデータベース管理システム
US7234139B1 (en) 2000-11-24 2007-06-19 Catharon Productions, Inc. Computer multi-tasking via virtual threading using an interpreter
US6721873B2 (en) 2000-12-29 2004-04-13 Intel Corporation Method and apparatus for improving dispersal performance in a processor through the use of no-op ports
US7149880B2 (en) 2000-12-29 2006-12-12 Intel Corporation Method and apparatus for instruction pointer storage element configuration in a simultaneous multithreaded processor
US7178145B2 (en) 2001-06-29 2007-02-13 Emc Corporation Queues for soft affinity code threads and hard affinity code threads for allocation of processors to execute the threads in a multi-processor system
JP3696531B2 (ja) * 2001-07-09 2005-09-21 独立行政法人科学技術振興機構 キューvliwプロセッサ
US7134002B2 (en) * 2001-08-29 2006-11-07 Intel Corporation Apparatus and method for switching threads in multi-threading processors
US20030126416A1 (en) * 2001-12-31 2003-07-03 Marr Deborah T. Suspending execution of a thread in a multi-threaded processor
US7054950B2 (en) 2002-04-15 2006-05-30 Intel Corporation Network thread scheduling
US7117498B2 (en) 2002-06-14 2006-10-03 Intel Corporation Thread optimization for lock and unlock operations in a multi-thread environment
US6810472B2 (en) 2002-06-24 2004-10-26 Intel Corporation Page handling efficiency in a multithreaded processor
US20040111594A1 (en) * 2002-12-05 2004-06-10 International Business Machines Corporation Multithreading recycle and dispatch mechanism
US20040226011A1 (en) * 2003-05-08 2004-11-11 International Business Machines Corporation Multi-threaded microprocessor with queue flushing
EP1660993B1 (en) * 2003-08-28 2008-11-19 MIPS Technologies, Inc. Integrated mechanism for suspension and deallocation of computational threads of execution in a processor
US20060123423A1 (en) * 2004-12-07 2006-06-08 International Business Machines Corporation Borrowing threads as a form of load balancing in a multiprocessor data processing system
US8607235B2 (en) 2004-12-30 2013-12-10 Intel Corporation Mechanism to schedule threads on OS-sequestered sequencers without operating system intervention
US7613904B2 (en) 2005-02-04 2009-11-03 Mips Technologies, Inc. Interfacing external thread prioritizing policy enforcing logic with customer modifiable register to processor internal scheduler
US8230423B2 (en) * 2005-04-07 2012-07-24 International Business Machines Corporation Multithreaded processor architecture with operational latency hiding
US7188041B1 (en) 2005-05-18 2007-03-06 Xilinx, Inc. Queue for simplified communication within a multithreaded testbench
US20070074217A1 (en) 2005-09-26 2007-03-29 Ryan Rakvic Scheduling optimizations for user-level threads
US7975272B2 (en) 2006-12-30 2011-07-05 Intel Corporation Thread queuing method and apparatus

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6907520B2 (en) * 2001-01-11 2005-06-14 Sun Microsystems, Inc. Threshold-based load address prediction and new thread identification in a multithreaded microprocessor
US20030147409A1 (en) * 2002-02-01 2003-08-07 Gilbert Wolrich Processing data packets
TW200428192A (en) * 2003-03-13 2004-12-16 Ibm Apparatus and method for controlling resource transfers in a logically partitioned computer system
TW200508892A (en) * 2003-03-13 2005-03-01 Ibm Apparatus and method for controlling resource transfers in a logically partitioned computer system

Also Published As

Publication number Publication date
RU2009129258A (ru) 2011-02-10
US7975272B2 (en) 2011-07-05
TW200832221A (en) 2008-08-01
US20110314479A1 (en) 2011-12-22
CN101573690A (zh) 2009-11-04
CN101573690B (zh) 2013-10-16
US8544019B2 (en) 2013-09-24
RU2427029C2 (ru) 2011-08-20
US20080163215A1 (en) 2008-07-03
EP2097814A1 (en) 2009-09-09
WO2008082964A1 (en) 2008-07-10
JP2010515161A (ja) 2010-05-06
EP2097814A4 (en) 2010-09-01
TW201319937A (zh) 2013-05-16
TWI393048B (zh) 2013-04-11
JP5112449B2 (ja) 2013-01-09

Similar Documents

Publication Publication Date Title
TWI585680B (zh) 用於執行緒佇列安排之方法、裝置與系統(二)
EP2593862B1 (en) Out-of-order command execution in a multimedia processor
WO2017166777A1 (zh) 一种任务调度方法及装置
US8661440B2 (en) Method and apparatus for performing related tasks on multi-core processor
US20090300324A1 (en) Array type processor and data processing system
EP3274853B1 (en) Direct memory access descriptor processing
US20080022288A1 (en) Signal Processing Appatatus
US9378533B2 (en) Central processing unit, GPU simulation method thereof, and computing system including the same
CN111158867B (zh) 时间同步处理方法、线程调度方法、装置及电子设备
US20150143378A1 (en) Multi-thread processing apparatus and method for sequentially processing threads
CN110245024B (zh) 静态存储块的动态分配系统及其方法
US6909836B2 (en) Multi-rate real-time players
US9304772B2 (en) Ordering thread wavefronts instruction operations based on wavefront priority, operation counter, and ordering scheme
TW202107408A (zh) 波槽管理之方法及裝置
US20220300322A1 (en) Cascading of Graph Streaming Processors
JP6222079B2 (ja) 計算機システム、その処理方法、及びプログラム
CN116339944B (zh) 任务处理方法、芯片、多芯片模块、电子设备和存储介质
JP2024511765A (ja) マルチアクセラレータ計算ディスパッチ
US8375155B2 (en) Managing concurrent serialized interrupt broadcast commands in a multi-node, symmetric multiprocessing computer
US10346322B2 (en) Onboard Kahn network type system comprising a plurality of source and destination actors in order to manage buffer memories based on tokens
CN109800064B (zh) 一种处理器和线程处理方法
KR20140134484A (ko) 멀티 코어 프로세서에 할당된 공유 자원의 데이터 처리 방법, 멀티 코어 프로세서를 갖는 전자 장치 및 데이터 출력 장치
CN113641502A (zh) 分布式数据处理方法、装置、电子设备和存储介质
CN112506677A (zh) TensorFlow的分布式矩阵计算实现方法与系统
JP2012003345A (ja) レンダリングプロセッサ

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees