TW200529071A

Across-thread out of order instruction dispatch in a multithreaded microprocessor

Abstract

Instruction dispatch in a multithreaded microprocessor such as a graphics processor is not constrained by an order among the threads. Instructions are fetched into an instruction buffer that is configured to store an instruction from each of the threads. A dispatch circuit determines which instructions in the buffer are ready to execute and may issue any ready instruction for execution. An instruction from one thread may be issued prio to an instruction from another thread regardless of which instruction was fetched into the buffer first. Once an instruction from a particular thread has issued, the fetch circuit fills the available buffer location with the following instruction from that thread.

Term

No projected expiry on record.

  1. Priority
  2. Filed
  3. Published
  4. Today

24 claims: 11 independent, 13 dependent

  1. 1
    一種被配置用於複數個執行緒的平行處理之微處理器,其中每個執行緒係包含一個指令序列,該微處理器係包括:一個執行模組,其係被配置以執行所有複數個執行緒之指令;一個指令緩衝器,其係包含複數個儲存位置,每個儲存位置係與該複數個執行緒中之一個別的執行緒相關連;一個提取電路,其係被配置以至少部分是根據在該指令緩衝器中之相關連的儲存位置是否為可利用的,來選擇該複數個執行緒中之一個執行緒,並且提取在該複數個執行緒中之該所選的執行緒之序列中的下一個指令到該指令緩衝器中;以及一個分派電路,其係被配置以判斷在該指令緩衝器所儲存的指令中之哪些指令是備妥可執行的,並且選擇該些備妥的指令中之一個指令以被發出至該執行模組。
  2. 2
    如申請專利範圍第1項之微處理器,其中該提取電路係以第一順序提取指令到該指令緩衝器中,並且該分派電路係以不同於該第一順序的第二順序來選擇備妥的指令。
  3. 3
    如申請專利範圍第1項之微處理器,其更包括一個被配置以儲存指令的指令快取記憶體,其中該提取電路係進一步被配置以藉由傳送一個包含一程式計數器的值之請求至該指令快取記憶體來提取該下一個指令。
  4. 4
    如申請專利範圍第3項之微處理器,其中該提取電路係包含:程式計數器邏輯,其係被配置以對於該複數個執行緒的每個執行緒產生一個候選的程式計數器的值;一個選擇邏輯電路,其係被配置以至少部分是根據判斷在該指令緩衝器中的哪一個儲存位置是可利用的來選擇該複數個執行緒中之一個執行緒,該選擇邏輯電路係進一步被配置以提供一個對應的選擇信號;以及一個仲裁電路,其係被配置以接收該選擇信號,並且傳送對應於該所選的執行緒之候選的程式計數器的值至該指令快取記憶體。
  5. 5
    如申請專利範圍第4項之微處理器,其中該選擇邏輯電路係包含:一個優先權編碼器,其係被配置以根據該些執行緒之間的一個優先權等級來選擇該複數個執行緒中之一個在該指令緩衝器中並不具有一個指令的執行緒,該優先權等級係根據一個優先權控制信號來加以決定;以及一個相位計數器,其係被配置以產生該優先權控制信號,其中在不同的時間點,該優先權控制信號係將不同的優先權等級給予該些執行緒中之不同的執行緒。
  6. 6
    如申請專利範圍第4項之微處理器,其中該選擇邏輯電路係進一步被配置以只有在從先前發生的選擇一個第一執行緒開始而經過一段最小的時間之後,才會選擇該第一執行緒。
  7. 7
    如申請專利範圍第4項之微處理器,其中該複數個執行緒係包含一個具有一第一執行緒類型的第一執行緒群組以及一個具有一第二執行緒類型的第二執行緒群組,並且其中該選擇邏輯電路係進一步被配置以至少部分是根據該複數個執行緒的每個執行緒之個別的執行緒類型來選擇該複數個執行緒中之一個執行緒。
  8. 8
    如申請專利範圍第7項之微處理器,其中該選擇邏輯電路係進一步被配置以選擇一個具有該第一執行緒類型之第一候選的執行緒以及一個具有該第二執行緒類型之第二候選的執行緒,並且根據其個別的執行緒類型來在該第一候選的執行緒與第二候選的執行緒之間做選擇。
  9. 9
    如申請專利範圍第1項之微處理器,其更包括一個被配置以儲存該複數個執行緒的每個執行緒之資料的暫存器檔,該資料係包含由該執行模組所產生的結果資料。
  10. 10
    如申請專利範圍第9項之微處理器,其中該分派電路係包含:一個記分板電路,其係耦接至該指令緩衝器與暫存器檔,並且其係被配置以對於在該指令緩衝器中的每個指令產生一個備妥信號,其中每個指令的備妥信號至少部分是根據該指令的一個來源運算元是否存在於該暫存器檔中而被致能或不被致能;一個排程器電路,其係耦接至該記分板與指令緩衝器,該排程器電路係被配置以選擇在該指令緩衝器中的一個指令,該指令的備妥信號被致能以作為下一個要發出的指令,並且該排程器電路係傳送一個對應的許可信號至該指令緩衝器;以及一個發出器電路,其係耦接至該指令緩衝器,其中該指令緩衝器係進一步被配置以回應於該許可信號來傳送藉由該排程器電路所選的指令至該發出器電路,該發出器電路係被配置以從該暫存器檔收集該所選的指令之來源運算元並且傳送該所選的指令以及來源運算元至該執行模組。
  11. 11
    如申請專利範圍第10項之微處理器,其中該排程器電路係進一步被配置以至少部分是根據每個指令已經儲存在該指令緩衝器中的一段時間長度來選擇下一個要發出的指令。
  12. 12
    如申請專利範圍第10項之微處理器,其中該排程器電路係包含:一個優先權編碼器,其係被配置以選擇該複數個執行緒中之一個執行緒,該執行緒係在該指令緩衝器中具有一個其備妥信號被致能的指令,其中該些執行緒中之一個執行緒係根據該些執行緒之間的一個優先權等級而被選出,該優先權等級係根據一個優先權控制信號來加以決定;以及一個相位計數器,其係被配置以產生該優先權控制信號,其中在不同的時間點,該優先權控制信號係將不同的優先權等級給予該些執行緒中之不同的執行緒。
  13. 13
    如申請專利範圍第10項之微處理器,其中該複數個執行緒係包含一個具有一第一執行緒類型的第一執行緒群組以及一個具有一第二執行緒類型的第二執行緒群組,並且其中該排程器電路係進一步被配置以至少部分是根據該複數個執行緒的每個執行緒之個別的執行緒類型來選擇該複數個執行緒中之一個執行緒。
  14. 14
    如申請專利範圍第10項之微處理器,其中該排程器電路係進一步被配置以至少部分是根據與該些執行緒的每個執行緒之個別的指令相關之運算之間的一個相對的優先權來選擇該複數個執行緒中之一個執行緒。
  15. 15
    如申請專利範圍第10項之微處理器,其中該執行模組係包含複數個執行管線,並且該排程器電路係進一步被配置以至少部分是根據一項對於該複數個執行管線中的哪一個執行管線不是忙碌的判斷來選擇該複數個執行緒中之一個執行緒。
  16. 16
    一種用於在一個被配置用於複數個執行緒的平行處理之微處理器中處理指令之方法,該方法係包括:從該複數個執行緒中之一個第一執行緒提取一個第一指令到一個指令緩衝器中,該指令緩衝器係被配置以儲存來自該複數個執行緒的每個執行緒之一個指令;接著從該複數個執行緒中之一個第二執行緒提取一個第二指令到該指令緩衝器中;判斷該第一指令與第二指令中之一或多個指令是否備妥以執行;以及發出該第一指令與第二指令中之一個備妥的指令用於執行,其中在該第二指令是備妥以執行,而該第一指令並未備妥以執行的情形中,該第二指令係在發出該第一指令之前被發出。
  17. 17
    如申請專利範圍第16項之方法,其更包括動作有:在該發出的動作之後,判斷該被發出的指令是針對該第一執行緒或是該第二執行緒而被提取的;以及提取一個第三指令到該指令緩衝器中,其中該第三指令是在對應於該被發出的指令之執行緒中的下一個指令。
  18. 18
    如申請專利範圍第16項之方法,其中提取該第一指令的動作係包含動作有:從該複數個執行緒的每個執行緒接收一個候選的程式計數器的值;指定一個優先權等級給該複數個執行緒的每個執行緒,其中該優先權等級在不同的時間點是不同的;以及在該第一執行緒是其指令並未儲存在該指令緩衝器中之最高優先權的執行緒之情形中,從該複數個執行緒中選擇該第一執行緒,其中該第一指令係回應於選擇該第一執行緒而被提取。
  19. 19
    如申請專利範圍第18項之方法,其更包括動作有:在從先前發生選擇該第一執行緒開始而經過的一段時間小於一最小的時間之情形中,禁止選擇該第一執行緒的動作。
  20. 20
    如申請專利範圍第16項之方法,其中該複數個執行緒係包含一個具有一第一執行緒類型的第一執行緒群組以及一個具有一第二執行緒類型的第二執行緒群組,其中該第一執行緒是該第一執行緒群組中之一執行緒,並且其中提取該第一指令的動作係包含動作有:從該複數個執行緒的每個執行緒接收一個候選的程式計數器的值;指定一個優先權等級給該第一執行緒群組的每個執行緒,其中該優先權等級在不同的時間點是不同的;在該第一執行緒是該第一執行緒群組中之其指令並未儲存在該指令緩衝器中之最高優先權的執行緒之情形中,從該第一執行緒群組中選擇該第一執行緒;從該第二執行緒群組中選擇一個第三執行緒;以及至少部分是根據該第一執行緒與第三執行緒之個別的執行緒類型來選擇該第一執行緒與第三執行緒中之一執行緒,其中該第一指令是在該選擇的動作導致選擇該第一執行緒的情形中被提取。
  21. 21
    如申請專利範圍第16項之方法,其中該判斷的動作係包含動作有:判斷該第一指令的一個來源運算元是否為可利用的;以及判斷該第二指令的一個來源運算元是否為可利用的。
  22. 22
    如申請專利範圍第16項之方法,其更包括:指定一個優先權等級給該複數個執行緒的每個執行緒,其中該優先權等級在不同的時間點是不同的;其中在該第一指令與第二指令兩者都備妥以被執行的情形中,選擇該第一指令與第二指令中之一備妥的指令之動作係包含判斷該第一執行緒與第二執行緒中的哪個執行緒擁有較高的優先權之動作。
  23. 23
    如申請專利範圍第16項之方法,其中該第一執行緒係具有一個第一執行緒類型,而該第二執行緒係具有一個第二執行緒類型,並且其中在該第一指令與第二指令兩者都備妥以被執行的情形中,該選擇該第一指令之一備妥的指令之動作係包含至少部分是根據其個別的執行緒類型來在該第一指令與第二指令之間做選擇。
  24. 24
    一種繪圖處理系統,其係包括:一個包含複數個執行核心的繪圖處理器;以及一個耦接至該繪圖處理器的繪圖記憶體,其中該複數個執行核心的每個執行核心係包含:一個執行模組,其係被配置以執行所有該複數個執行緒之指令;一個指令緩衝器,其係包含複數個儲存位置,每個儲存位置係與該複數個執行緒中之一個別的執行緒相關連;一個提取電路,其係被配置以至少部分是根據在該指令緩衝器中之相關連的儲存位置是否為可利用的,來選擇該複數個執行緒中之一個執行緒,並且提取在該複數個執行緒中之該所選的一個執行緒之序列中的下一個指令到該指令緩衝器中;以及一個分派電路,其係被配置以判斷在該指令緩衝器中之哪個所儲存的指令係備妥以執行,並且選擇該些讀取出的指令中之一個指令以被發出至該執行模組。
Independent claims24