TW201543357A - 基於同時多執行緒(smt)的中央處理單元以及用於檢測指令的資料相關性的裝置 - Google Patents
基於同時多執行緒(smt)的中央處理單元以及用於檢測指令的資料相關性的裝置 Download PDFInfo
- Publication number
- TW201543357A TW201543357A TW103134238A TW103134238A TW201543357A TW 201543357 A TW201543357 A TW 201543357A TW 103134238 A TW103134238 A TW 103134238A TW 103134238 A TW103134238 A TW 103134238A TW 201543357 A TW201543357 A TW 201543357A
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- smt
- comparators
- instructions
- comparator
- Prior art date
Links
- 238000001514 detection method Methods 0.000 claims abstract description 25
- 230000006870 function Effects 0.000 claims description 99
- 238000009826 distribution Methods 0.000 claims description 63
- 238000012545 processing Methods 0.000 claims description 27
- 238000005516 engineering process Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 14
- 238000000034 method Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 5
- 238000004590 computer program Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 229920006395 saturated elastomer Polymers 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本發明揭示了一種基於SMT(同時多執行緒)的中央處理單元,包括:指令讀取單元、指令解碼單元、指令分發單元和指令比較單元;所述指令比較單元包括用於檢測指令之間的資料相關性的複數個比較器,所述複數個比較器,被劃分成彼此相互獨立的至少兩個分組,所述比較器的分組個數與SMT功能啟用後支援的執行緒個數相同;每一組比較器用於對應檢測在SMT功能啟用後的其中一執行緒的指令之間的資料相關性,不同分組的比較器用於檢測在SMT功能啟用後的屬於不同執行緒的指令之間的資料相關性。本發明同時提供一種基於SMT的用於檢測指令的資料相關性的裝置。採用本發明提供的基於SMT的中央處理單元,能夠在不增加硬體比較器的基礎上拓寬重命名指令寬度,有效提升中央處理器的運行效率。
Description
本發明關於中央處理器技術,具體關於一種基於SMT的中央處理單元。本發明同時提供一種用於檢測指令的資料相關性的裝置。
CPU是中央處理單元(Central Preocessing Unit)的英文縮寫,是電腦的運算核心和控制核心。其基本的工作過程包括:取指、解碼、執行和寫回這樣幾個階段:取指階段從記憶體或者高速緩存中提取指令,解碼階段負責根據指令類型產生不同的控制信號,執行階段則使用運算元、按照解碼產生的控制信號在功能部件(執行單元)中執行指令,最後由寫回階段將執行結果寫回記憶體或暫存器中。
為了充分挖掘CPU的吞吐率,出現了多種提高CPU性能的技術,例如:流水線技術、超標量技術、超標量超流水線技術等,這些技術的共同點在於,透過增加單個時脈週期內執行的指令數來提高指令執行的併發度,從而提
高CPU的執行效率。然而,在實際中,由於CPU通常使用有限的系統結構暫存器(也稱ISA暫存器或通用暫存器)來保存指令的運算元與結果,因此導致了指令和指令之間可能存在某種依賴關係(也稱相關性),例如:兩條指令使用同一個暫存器,指令間的這種相關性會限制指令的併發執行。為了改善這一問題,在CPU工作過程的解碼和執行階段之間引入了暫存器重命名階段。該階段的主要任務是去除指令之間在暫存器使用上的偽依賴性(也稱錯誤依賴),同時還要甄別指令之間的真實依賴性(也稱資料相關性,即:在後執行指令的源運算元的取值是否來源於在先執行指令的目的運算元),前者透過重命名表影射來解決,後者則需要使用重命名比較器進行比較判斷。
此外,為了提高CPU執行單元的利用率,現代CPU還引入了將指令級並行和執行緒級並行相結合的同時多執行緒技術(Simultaneous multithreading-SMT),透過複製處理器上的結構狀態,同一個實體CPU可以同時執行兩個以上的獨立執行緒,並共享處理器的執行單元,由於來自兩個以上執行緒的指令流包含更多不相關的、可以並行的指令,因此能夠更有效的利用共享執行單元,從而提高CPU的吞吐率。
鑒於引入SMT機制的CPU有著更多不相關指令流,若是可以加大前端指令寬度(包括取指、解碼和重命名階段),就可以獲得更多並行處理指令,從而更為充分地利用多個執行單元。為了提高取指和解碼階段的吞吐量,目
前已經有了相應的解決方案,例如:Intel CPU引入了0級緩存,將已經解碼後的指令放置其中,這樣當CPU再次需要指令的時候可以直接從0級緩存獲取,同時可以獲取指令的寬度也從16字節變為32字節;但是關於如何拓寬重命名階段的指令寬度,一直沒有令人滿意的方法,具體說明如下。
由於執行指令的相關性檢測所需的硬體比較單元與每個週期重命名指令條數的平方相同(即:硬體比較器個數=n×n-n,n為每個週期需要重命名指令條數),也就是說為了拓寬重命名階段的指令寬度,需要大量地增加硬體比較器的個數。因此Intel帶有SMT的CPU由於沒有增加任何硬體,導致每個週期仍然只能對4條指令進行重命名,減弱了在引入SMT的情況下並行指令執行的吞吐量;而IBM的帶有SMT的CPU,為了使CPU在每個週期的重命名寬度由4條指令拓寬為6條指令,而將硬體比較器個數從12個增加到30個(6×6-6=30),不僅增加了CPU硬體成本,同時增加了硬體的複雜性。
本發明提供一種基於SMT的中央處理單元,以解決現有技術為了拓寬重命名指令寬度需要大量增加硬體比較器的問題。本發明另外提供一種基於SMT的用於檢測指令的資料相關性的裝置。
本發明提供一種基於SMT的中央處理單元,包括:
指令讀取單元,用於從指令緩存中讀取指令;指令解碼單元,用於對所述指令讀取單元輸出的指令進行解碼;指令比較單元,用於檢測解碼後指令的資料相關性,並輸出檢測結果;所述指令比較單元包括用於檢測指令之間的資料相關性的複數個比較器,所述複數個比較器,被劃分成彼此相互獨立的至少兩個分組,所述比較器的分組個數與SMT功能啟用後支援的執行緒個數相同;每一組比較器用於對應檢測在SMT功能啟用後的其中一執行緒的指令之間的資料相關性,不同分組的比較器用於檢測在SMT功能啟用後的屬於不同執行緒的指令之間的資料相關性;指令分發單元,用於將所述指令解碼單元輸出的、在SMT功能啟用後的多個執行緒的解碼後指令分發給所述指令比較單元中對應的比較器分組。
可選的,所述任一比較器均包括第一輸入端和第二輸入端、以及輸出端;其中,所述第一輸入端和第二輸入端,分別用於輸入待檢測資料相關性的兩條指令中的在先指令的目的運算元位址、和在後指令的源運算元位址;所述輸出端,用於輸出上述目的運算元位址和源運算元位址是否相同的比較結果。
可選的,所述指令讀取單元具體用於,採用輪詢的方式從指令緩存中讀取SMT功能啟用後的多個執行緒的指
令;相應的,所述指令解碼單元具體用於,採用輪詢的方式對所述指令讀取單元輸出的多個執行緒的指令進行解碼。
可選的,所述指令讀取單元具體用於,採用輪詢的方式從指令緩存中讀取SMT功能啟用後的執行緒1和執行緒2的指令;相應的,所述指令比較單元中的複數個比較器被劃分為兩個比較器分組,其中,第一比較器分組檢測屬於執行緒1的指令之間的資料相關性,第二比較器分組檢測屬於執行緒2的指令之間的資料相關性。
可選的,所述指令比較單元包含12個比較器,所述第一比較器分組和所述第二比較器分組各包含6個比較器。
可選的,所述指令比較單元中的所述複數個比較器被合併為一組,用於檢測在SMT功能禁用後的屬於同一個執行緒的指令之間的資料相關性。
可選的,所述指令分發單元用於將所述指令解碼單元輸出的、在SMT功能禁用後的屬於同一執行緒的指令發送給所述指令比較單元中的被合併後的比較器分組。
可選的,所述指令比較單元包括所述指令分發單元。
本發明還提供一種基於SMT的用於檢測指令的資料相關性的裝置,包括:指令輸入介面、結果輸出介面、以及用於檢測指令之間的資料相關性的複數個比較器;
所述複數個比較器,被劃分成彼此相互獨立的至少兩個分組,所述比較器的分組個數與SMT功能啟用後支援的執行緒個數相同;每一組比較器用於對應檢測在SMT功能啟用後的其中一執行緒的指令之間的資料相關性,不同分組的比較器用於檢測在SMT功能啟用後的屬於不同執行緒的指令之間的資料相關性;所述指令輸入介面的個數與比較器的分組個數相同,並且每一個指令輸入介面與一個比較器分組相連接,用於向所述比較器分組輸入在SMT功能啟用後的屬於同一個執行緒的指令;不同的指令輸入介面與不同的比較器分組相連接;所述結果輸出介面與所述複數個比較器相連接,用於輸出所述複數個比較器的比較結果。
可選的,所述任一比較器均包括第一輸入端和第二輸入端、以及輸出端;其中,所述第一輸入端和第二輸入端,分別用於輸入待檢測資料相關性的兩條指令中的在先指令的目的運算元位址、和在後指令的源運算元位址;所述輸出端,輸出上述目的運算元位址和源運算元位址是否相同的比較結果。
可選的,所述指令輸入介面的個數為兩個,所述複數個比較器被劃分為彼此獨立的兩個比較器分組;其中,第一指令輸入介面與第一比較器分組相連接,用於向第一比較器分組輸入在SMT功能啟用後的屬於執
行緒1的指令;第二指令輸入介面與第二比較器分組相連接,用於向第二比較器分組輸入在SMT功能啟用後的屬於執行緒2的指令。
可選的,所述比較器的個數具體為12個,所述第一比較器分組和所述第二比較器分組各包含6個比較器。
可選的,所述複數個比較器被合併為一組,用於檢測從一個指令輸入介面輸入的、在SMT功能禁用後的屬於同一個執行緒的指令之間的資料相關性。
本發明還提供一種基於SMT的用於檢測指令的資料相關性的裝置,包括:指令輸入介面、結果輸出介面、指令分發單元和指令比較單元,所述指令分發單元與所述指令輸入介面和指令比較單元相連接,所述指令比較單元與所述指令分發單元和結果輸出介面相連接;所述指令比較單元包括用於檢測指令之間資料相關性的複數個比較器,所述複數個比較器被劃分成彼此相互獨立的至少兩個分組,所述比較器的分組個數與SMT功能啟用後支援的執行緒個數相同;每一組比較器用於對應檢測在SMT功能啟用後的其中一執行緒的指令之間的資料相關性,不同分組的比較器用於檢測在SMT功能啟用後的屬於不同執行緒的指令之間的資料相關性;所述指令分發單元包括至少兩個指令分發端,每個指令分發端與所述指令比較單元中的一個比較器分組相連接,不同的指令分發端與不同的比較器分組相連接,所述指令分發端的個數與所述指令比較單元中的分組個數相
同;所述指令分發單元用於從所述指令輸入介面讀取待檢測資料相關性的指令,將SMT功能啟用後的屬於同一個執行緒的指令、透過一個指令分發端發送給一個比較器分組,將SMT功能啟用後的屬於不同執行緒的指令透過不同的指令分發端發送給不同的比較器分組。
可選的,所述指令比較單元中的任一比較器均包括第一輸入端和第二輸入端、以及輸出端;其中,所述第一輸入端和第二輸入端,分別用於輸入待檢測資料相關性的兩條指令中的在先指令的目的運算元位址、和在後指令的源運算元位址;所述輸出端,輸出上述目的運算元位址和源運算元位址是否相同的比較結果。
可選的,所述指令分發單元包括兩個指令分發端,所述指令比較單元中的複數個比較器被劃分為彼此獨立的兩個比較器分組;所述指令分發單元具體用於從所述指令輸入介面讀取待檢測資料相關性的指令,將SMT功能啟用後的屬於執行緒1的指令透過第一指令分發端發送給第一比較器分組,將SMT功能啟用後的屬於執行緒2的指令透過第二指令分發端發送給第二比較器分組。
可選的,所述指令比較單元中的比較器的個數具體為12個,所述第一比較器分組和所述第二比較器分組各包含6個比較器。
可選的,所述指令比較單元中的複數個比較器被合併為一組,用於檢測在SMT功能禁用後的屬於同一個執行緒的指令之間的資料相關性。
可選的,所述指令分發單元用於從所述指令輸入介面讀取在SMT功能禁用後的、屬於同一個執行緒的待檢測資料相關性的指令,並透過一個指令分發端發送給所述指令比較單元。
與現有技術相比,本發明具有以下優點:本發明提供的基於SMT的中央處理單元,利用了在SMT功能啟用後的不同執行緒的指令之間不存在資料相關性這一特點,透過對比較器進行分組,每一組比較器用於對應檢測在SMT功能啟用後的其中一執行緒的指令之間的資料相關性,不同分組用於檢測在SMT功能啟用後的屬於不同執行緒的指令之間的資料相關性,從而可以在不增加硬體比較器的前提下,拓寬中央處理單元的重命名指令寬度,有效提升中央處理單元的指令吞吐量。
本發明提供的基於SMT的用於檢測指令的資料相關性的裝置,利用了在SMT功能啟用後的不同執行緒的指令之間不存在資料相關性這一特點,通過對比較器進行分組,每一組比較器用於對應檢測在SMT功能啟用後的其中一執行緒的指令之間的資料相關性,不同分組用於檢測在SMT功能啟用後的屬於不同執行緒的指令之間的資料相關性,從而可以在不增加硬體比較器的前提下,拓寬了檢測資料相關性的指令寬度。
101、501‧‧‧指令讀取單元
102、502‧‧‧指令解碼單元
103、504、702‧‧‧指令分發單元
104、503、703‧‧‧指令比較單元
601-1至601-n‧‧‧指令輸入介面
圖1是本發明的一種基於SMT的中央處理單元的實施例示意圖;圖2是現有技術中CPU檢測3條指令的資料相關性的比較器示意圖;圖3是現有技術中CPU檢測第4條指令與前3條指令的資料相關性的比較器示意圖;圖4是本發明的兩個比較器分組分別用於檢測執行緒1和執行緒2的指令之間的資料相關性的比較器示意圖;圖5是本發明的基於SMT的中央處理單元的另一種實施例示意圖;圖6是本發明的基於SMT的用於檢測指令的資料相關性的裝置的實施例示意圖;圖7是本發明的另一種基於SMT的用於檢測指令的資料相關性的裝置的實施例示意圖。
在下面的描述中闡述了很多具體細節以便於充分理解本發明。但是本發明能夠以很多不同於在此描述的其它方式來實施,本領域技術人員可以在不違背本發明內涵的情況下做類似推廣,因此本發明不受下面揭示的具體實施的限制。
在本發明中,分別提供了一種基於SMT的中央處理
單元、一種基於SMT的用於檢測指令的資料相關性的裝置、以及另一種基於SMT的用於檢測指令的資料相關性的裝置。
為了便於理解,在對本發明的實施例進行描述之前,先對中央處理器(CPU)的基本工作原理、指令之間的資料相關性和SMT技術作簡要介紹。
目前的CPU都採用超標量流水線技術提高指令吞吐量,流水線技術的實質在於指令重疊執行,減少了每一條指令的平均執行時間,而超標量技術則是在同一個時脈週期內同時發射多條指令。每條流水線通常包括如下幾個基本的流水段:取指、解碼、重命名、執行和寫回,為了進一步提高並行性,上述流水線中的功能段還可以進一步細化。
其中重命名階段的主要任務是去除指令之間在暫存器使用上的偽依賴性(也稱錯誤依賴,包括寫然後寫WAW,讀然後寫WAR),同時還要甄別指令之間的資料相關性,前者可以同過重命名表映射來解決,後者則需要使用比較器進行檢測。通常將一個時脈週期內完成重命名操作的指令數目,稱作重命名指令寬度(或:重命名的寬度)。
指令之間的資料相關性,會影響指令的亂序執行(即:不按順序的併發執行),進而影響CPU的執行效率。指令之間之所以存在資料相關性,是因為在後指令的源運算元位址與在先指令的目的運算元位址相同,例如:
在先指令向某個暫存器中寫入資料,在後指令從同一個暫存器中讀取資料(這種情況也稱為寫然後讀RAW),即:在後指令的執行需要讀取在先指令的執行結果,則認為這兩條指令在執行順序上存在真實依賴關係,因此這兩條指令之間存在資料相關性。
存在資料相關性的指令不能併發執行,通常採用兩種方法解決,一是順序執行,即:將在後指令的相關操作後推,等在先指令將執行結果寫入相關的儲存位置後再開始處理在後指令;另一種是旁路技術,即不必等到在先指令將結果資料寫入到相關的儲存位置中,而是經過專門設置的資料通路讀取所需要的資料,例如,直接將在先指令的結果推送到執行單元的運算元輸入端口。
本發明提供的即為檢測指令之間的資料相關性的技術方案,為實現本發明的技術方案,利用了同步多執行緒(SMT)技術。SMT是一種在一個CPU的時脈週期內能夠執行來自多個執行緒的指令的硬體多執行緒技術,該技術結合了超標量和多執行緒處理器的特點,充分挖掘了指令級和執行緒級的並行(ILP和TLP的結合)。在啟用SMT技術的CPU中,對於可能導致處理器利用率降低的長延遲操作,只會影響相關指令所屬的執行緒,而其他執行緒依然可以利用處理器資源,例如,由於某個執行緒指令之間存在資料相關性限制了處理器每個時脈週期只能發射一到兩條指令,而另一個與之無關的執行緒指令則可以用於填充空閒的發射槽,從而在一個時脈週期內執行更多
的指令,提高處理器發射槽及功能部件的利用率,提高中央處理器的指令吞吐率。實現SMT技術只需要增加較少的硬體資源,為每個運行的執行緒設置一套單獨的硬體用於保存其執行狀態(即:執行緒上下文),而CPU中的其他部件則可以被多個執行緒共享。
由此可見,SMT技術利用了不同執行緒彼此之間的獨立性,從而在共享的基礎上實現對CPU功能部件的充分利用。而本發明的技術方案,之所以能夠在不增加硬體比較器的前提下,拓寬重命名的寬度,也是利用了不同執行緒的指令之間不存在資料相關性這一特點。
下面對本發明的實施例逐一進行詳細說明。
請參考圖1,其為本發明的基於SMT的中央處理單元的實施例示意圖,所述基於SMT的中央處理單元包括如下單元:指令讀取單元101,用於從指令緩存中讀取指令;指令解碼單元102,用於對所述指令讀取單元輸出的指令進行解碼;指令分發單元103,用於將所述指令解碼單元輸出的、在SMT功能啟用後的多個執行緒的解碼後指令分發給所述指令比較單元中對應的比較器分組;指令比較單元104,包括複數個比較器,所述複數個比較器被劃分為多個分組,分別用於檢測屬於不同執行緒的解碼後指令的資料相關性,並輸出檢測結果。
在具體的實施中,所述基於SMT的中央處理單元還包括:用於執行重命名後指令的執行單元、用於將執行結果寫回記憶體或暫存器的寫回單元、以及在各個功能單元
內部用於緩存指令的佇列等,由於這些功能單元或佇列,並不關於本發明技術方案的核心,因此沒有在圖1中示出。
本發明技術方案的核心在於,所述指令比較單元中的比較器在SMT功能啟用的情況下,被劃分為不同的分組,不同的分組檢測屬於不同執行緒的指令之間的相關性。為了實現這一核心,保證指令比較單元能夠在同一時脈週期內對不同執行緒的指令進行資料相關性檢測,所述指令讀取單元101和指令解碼單元102可以按照特定的策略進行取指和解碼,下面作進一步說明。
在現有的基於SMT的中央處理器中,指令讀取單元根據多個執行緒的PC計數器的值,採用不同的取指策略從指令緩存中取指,例如:隨機法取指、輪詢取指、以及採用Icount策略取值,即:優先選擇在CPU中佔據佇列項數最少的執行緒進行取值。上述取指策略各有各的特點,具體到本發明的技術方案中,由於指令比較單元104要充分利用不同執行緒指令之間運算元的無關性,因此本發明技術方案提供一種優選實施方式:指令讀取單元101具體用於採用輪詢的方式讀取多個執行緒的指令。例如:在一個時脈週期內採用輪詢的方式分別從兩個執行緒讀取指令,每個執行緒各取4條指令。
相應的,所述指令解碼單元102具體用於採用輪詢的方式對分屬多個執行緒的指令進行解碼。在具體的實施中,所述指令解碼單元102可以將解碼後的指令存放在解
碼佇列(decode queue)中,解碼佇列可以是一個統一的佇列,也可以是多個佇列,每個佇列儲存屬於同一個執行緒的解碼後指令。
所述指令分發單元103從解碼佇列中讀取解碼後的指令,並根據解碼後指令所屬的執行緒將所述指令分發給指令比較單元104中對應的比較器分組。例如,在SMT支援兩個執行緒的情況下,所述指令分發單元將屬於執行緒1的指令分發給第一比較器分組,將屬於執行緒2的指令分發給第二比較器分組。
所述指令比較單元104包括用於檢測指令之間的資料相關性的複數個比較器,並且任一比較器均包括第一輸入端和第二輸入端、以及輸出端;其中,所述第一輸入端和第二輸入端,分別用於輸入待檢測資料相關性的兩條指令中的在先指令的目的運算元位址、和在後指令的源運算元位址;所述輸出端,用於輸出上述目的運算元位址和源運算元位址是否相同的比較結果。
在具體的實施中,本發明所述的目的運算元位址和源運算元位址通常是指用於寫入或者從中讀取運算元的暫存器位址,對於對暫存器進行編號管理的CPU來說,本發明所述的目的運算元位址和源運算元位址是指用於寫入或者從中讀取運算元的暫存器號。
下面舉例說明如何透過比較器檢測指令之間的資料相關性。例如,兩條待檢測資料相關性的指令分別為:
指令1:a+b=c
指令2:d+e=f
其中指令1在先,那麼所述指令比較單元104用於將指令2的源運算元d和e的位址分別與指令1的目的運算元c的位址進行比較,判斷指令2的兩個源運算元的取值是否來源於指令1的執行結果c,此時需要進行兩次比較(d與c進行比較、e與c進行比較)。為了能夠在一個時脈週期內完成指令的資料相關性檢測,硬體比較器的數目與本週期內需要進行的比較次數一致,因此在同一個時脈週期比較兩條指令器的資料相關性,需要2個比較器。其中,任何一個比較器輸出的結果為相同,則說明這兩條指令之間具有資料相關性。
在現有技術中,如果在同一個時脈週期檢測三條指令的資料相關性,不僅需要將第一條指令的目的運算元位址與第二條指令、第三條的源運算元位址作比較(需要2×2=4個比較器),還需要將第二條指令的目的運算元位址與第三條指令的源運算元位址作比較(需要2個比較器),總共需要的比較器數目為6個。請參見圖2,其為現有技術中CPU檢測3條指令的資料相關性的比較器示意圖,其中,c0-c5為實體比較器,1d代表第一條指令的目標運算元的位址,2s1和2s2分別代表第二條指令的第一源運算元位址和第二源運算元位址,以此類推。
請參見圖3,其為現有技術中CPU檢測第4條指令與前3條指令的資料相關性的比較器示意圖。在現有技術中,如果將上述檢測3條指令拓寬為4條指令,即:在同
一個時脈週期檢測4條指令的資料相關性,那麼除了上述比較之外,還需要將第4條指令的兩個源運算元位址與前三條指令的目的運算元位址作比較,即:還需要增加6個比較器(c6-c11),因此總共需要6+6=12個比較器。
同樣的道理,如果需要比較n條指令之間的資料相關性,那麼第一條指令需要與後面n-1條指令比較,第二條指令需要與後面的n-2條指令比較,....第n-1條指令則需要與最後一條指令比較,而且每比較兩條指令的資料相關性都需要兩個硬體比較器,因此總共需要的比較器數目為:2×((n-1)+(n-2)+...+1)=n×(n-1)=n2-n。
由此可見,在現有技術下,進行指令的資料相關性檢測所需使用的硬體比較器的數量並不是與待檢測指令的數目成簡單的正比關係,而是與待檢測指令數目的平方成正比,也就是說,要拓寬進行資料相關性檢測的指令寬度通常需要大幅增加硬體比較器的數目,例如,將資料相關性檢測的指令寬度拓寬為6條時,需要6×6-6=30個硬體比較器。因此,在現有技術下,進行資料相關性檢測所需的比較器數目成為重命名階段的主要瓶頸,限制了重命名階段的指令吞吐量。如果能夠在不增加或者不大幅增加硬體比較器的前提下,拓寬資料相關性檢測的指令寬度,就能有效提升重命名階段的指令寬度。而本發明則針對上述問題提供了解決方案,下面進行詳細說明。
本發明技術方案的核心在於,指令比較單元104中的複數個比較器,被劃分成彼此相互獨立的至少兩個分組,
所述比較器的分組個數與SMT功能啟用後支援的執行緒個數相同;每一組比較器用於對應檢測在SMT功能啟用後的其中一執行緒的指令之間的資料相關性,不同分組的比較器用於檢測在SMT功能啟用後的屬於不同執行緒的指令之間的資料相關性。
本發明技術方案之所以要對指令比較單元104中的比較器進行分組,並使不同的分組檢測SMT功能啟用後的屬於不同執行緒的指令之間的資料相關性,是因為:在SMT功能啟用後的同時執行的多個執行緒通常是彼此獨立的,因此所述分屬多個執行緒的指令之間通常是不存在資料相關性的。基於上述考慮,在重命名階段,就沒有必要檢測屬於不同執行緒的指令之間的資料相關性,從而節省了實體比較器的開銷,使得拓寬重命名指令寬度成為可能。
考慮到目前流行的CPU通常具有12個硬體比較器,而且SMT功能啟用時可以同時執行的執行緒數目通常為兩個,因此下文以此作為一個例子,具體介紹本發明技術方案如何實現上述檢測過程。
在本發明技術方案中,所述比較器的分組個數與SMT功能啟用後支援的執行緒個數相同,因此本例中的指令比較單元104中的比較器被劃分為兩組:第一比較器分組和第二比較器分組,每個分組各包含6個比較器。指令分發單元103將指令解碼單元102輸出的解碼後指令按照其所屬執行緒進行分發,將屬於執行緒1的指令分發給第一比
較器分組,將屬於執行緒2的指令分發給第二比較器分組,第一比較器分組用於檢測執行緒1的指令之間的資料相關性,第二比較器分組用於檢測執行緒2的指令之間的資料相關性。
請參見圖4,其為兩個比較器分組分別用於檢測執行緒1和執行緒2的指令之間的資料相關性的比較器示意圖。結合所述附圖以及前面的介紹可知,6個比較器可以同時檢測3條指令的資料相關性,因此在本例子中,每一比較器分組可以同時檢測3條指令的資料相關性,兩個比較器分組就可以同時檢測6條指令的資料相關性,也就是,在SMT功能啟用的情況下,透過對比較器進行分組,仍然採用12個比較器,實現了在同一個時脈週期檢測6條指令的資料相關性,而現有技術在同樣的條件下只能檢測4條指令的資料相關性,由此可見本例在不增加硬體比較器的前提下拓寬了進行資料相關性檢測的指令寬度,可以有效提升CPU運行效率50%。
上述具體例子,僅僅是實施本發明技術方案的一種可能的實施方式,在其他實施方式中,可以採用不同於上述例子的分組方式。例如,啟用SMT功能後支援4個執行緒,那麼指令比較單元104中的比較器相應地被劃分為4個分組;同樣指令比較單元104中的比較器個數也可以不同於本例子中的12個,相應的每個比較器分組中的比較器數目也會不同,每一拍能夠檢測的指令數目自然也不同。但是不管採用何種實施方式,只要指令比較單元104
中的比較器被劃分為多個分組,並且指令分發單元103將不同執行緒的指令分發給對應的比較器分組進行檢測,就可以利用不同執行緒之間的指令無關性,實現本發明技術方案的有益效果:在不增加比較器數目的前提下,拓寬重命名寬度,提升CPU的指令吞吐率。
上面對本發明技術方案在SMT功能啟用情況下如何拓寬重命名指令寬度進行了說明。在具體實施過程中,有時需要禁用SMT功能,例如:希望保證單執行緒的執行效率,在這種情況下本發明的技術方案也可以正常工作。
在SMT功能禁用的情況下,指令比較單元104中的複數個比較器被合併為一組,指令分發單元103用於將指令解碼單元102輸出的、在SMT功能禁用後的屬於同一執行緒的指令發送給指令比較單元104中的被合併後的比較器分組,而該比較器分組用於檢測在SMT功能禁用後的屬於同一個執行緒的指令之間的資料相關性。例如,在上面的具體例子中,在SMT功能禁用的情況下,指令比較單元104中的12個比較器被合併為一組,指令分發單元103用於將解碼後的屬於同一執行緒的指令發送給指令比較單元104,指令比較單元104則利用12個比較器在一個時脈週期內檢測4條指令的資料相關性。
綜合考慮SMT啟用和禁用這兩種情況下的重命名指令寬度,以及對實體比較器的利用情況,上述具體例子採用的實施方式,也是在現有CPU常規配置情況下的優選實施方式。採用這種實施方式,在SMT功能禁用的情況
下,CPU的重命名指令寬度為4條,在SMT功能啟用的情況下,CPU的重命名指令寬度由4條擴展為6條,而且在兩種情況下,12個比較器都得到了充分利用,其利用率達到了飽和狀態。
考慮本發明技術方案的另外一種實施方式,指令比較單元包括24個比較器,在SMT功能禁用的情況下,可以將其中的20個比較器用於比較5條指令的資料相關性(5×5-5=20);在SMT功能啟用的情況下,將24個比較器分為兩組,每組的12個比較器可用於檢測4條指令的資料相關性,從而在不增加硬體比較器的情況下,使重命名指令寬度從5條拓寬為8條。但是這種實施方式與上面的優選實施方式相比較,在SMT功能禁用的情況下,有4個比較器處於閒置狀態,比較器的利用率沒有達到飽和狀態。
請參見附圖5,其為本發明的基於SMT的中央處理單元的另一種實施例示意圖。附圖5所示的功能單元模組圖示意了本發明技術方案的另外一種實施方式,即:所述基於SMT的中央處理單元包括,指令讀取單元501、指令解碼單元502和指令比較單元503;所述指令比較單元503包括指令分發單元504和被劃分為多個分組的複數個比較器。這種實施方式與上一實施例的區別在於,所述指令分發單元504和複數個比較器被集成在同一個指令比較單元503中,至於各個功能單元實現的功能和工作原理與實施例一基本相同,此處不再贅述。
在上述實施例中,提供了一種基於SMT的中央處理單元,本發明還提供一種基於SMT的用於檢測指令的資料相關性的裝置。
請參看圖6,其為本發明提供的一種基於SMT的用於檢測指令的資料相關性的裝置的實施例示意圖。由於本裝置實施例與實施例一中的對應部分相似,因此描述得比較簡單,相關的部分請參見實施例一中的對應說明即可。
本實施例的一種基於SMT的用於檢測指令的資料相關性的裝置,包括:指令輸入介面601、結果輸出介面603、以及用於檢測指令之間的資料相關性的複數個比較器602。
其中,複數個比較器602,被劃分成彼此相互獨立的至少兩個分組,所述比較器的分組個數與SMT功能啟用後支援的執行緒個數相同;每一組比較器用於對應檢測在SMT功能啟用後的其中一執行緒的指令之間的資料相關性,不同分組的比較器用於檢測在SMT功能啟用後的屬於不同執行緒的指令之間的資料相關性。
指令輸入介面601可以包含多個輸入介面,其個數與比較器的分組個數相同,如果比較器分組數目為n,則指令輸入介面也為n個,分別為601-1至601-n;並且每一個指令輸入介面與一個比較器分組相連接,用於向所述比較器分組輸入在SMT功能啟用後的屬於同一個執行緒的指令;不同的指令輸入介面與不同的比較器分組相連接。所述結果輸出介面603與所述複數個比較器602相連接,
用於輸出所述複數個比較器602的比較結果。
下面以目前常規的CPU配置,即:包括12個比較器,SMT功能啟用後可同時執行2個執行緒為例,進一步說明本實施例。所述基於SMT的用於檢測指令的資料相關性的裝置包括兩個指令輸入介面,所述複數個比較器602被分為兩個分組,每一組包含6個比較器;所述指令輸入介面601用於從指令分發單元或者是具備類似功能的單元接收解碼後指令、並將所述指令傳輸給對應的比較器分組,其中,第一指令輸入介面接收屬於執行緒1的指令並傳輸給第一比較器分組,第二指令輸入介面接收屬於執行緒2的指令並傳輸給第二比較器分組;第一比較器分組使用6個比較器檢測執行緒1的三條指令的資料相關性,第二比較器分組使用6個比較器比較執行緒2的三條指令的資料相關性,並將兩個比較器分組的檢測結果透過結果輸出介面603輸出。由此可見,在SMT功能啟用的情況下,本實施例的裝置,可以同時檢測6條指令的資料相關性。
在SMT功能禁用的情況下,所述2個指令輸入介面中只有一個處於工作狀態,即:從一個指令輸入介面輸入同一個執行緒的指令,並且12個比較器被合併為一組,用於同時檢測從所述一個指令輸入介面輸入的4條指令的資料相關性。
在本實施例的具體例子中,由於充分利用了SMT功能啟用後的不同執行緒指令之間的無關性,因此在不增加
比較器的情況下,拓寬了檢測資料相關性的指令寬度。
以上列舉了本實施例的一個具體例子,在其他的實施方式中,啟用SMT功能後支援的執行緒數目、比較器的數目等都可以不同於上述具體例子,但是只要所述複數個比較器被劃分為多個分組、並且每一分組用於對應檢測在SMT功能啟用後的其中一執行緒的指令之間的資料相關性、不同的分組用於檢測在SMT功能啟用後的屬於不同執行緒的指令之間的資料相關性,就同樣能夠在不增加硬體比較器的情況下,拓寬資料相關性檢測的指令寬度。
在上述實施例中,提供了一種基於SMT的用於檢測指令的資料相關性的裝置,本發明還提供另一種基於SMT的用於檢測指令的資料相關性的裝置。
請參看圖7,其為本發明提供的另一種基於SMT的用於檢測指令的資料相關性的裝置的實施例示意圖。由於本裝置實施例與實施例一中的對應部分相似,因此描述得比較簡單,相關的部分請參見實施例一中的對應說明即可。
本實施例的一種基於SMT的用於檢測指令的資料相關性的裝置,包括:指令輸入介面701、指令分發單元702、指令比較單元703和結果輸出介面704,各單元之間的連接關係如圖7所示。
指令比較單元703包括用於檢測指令之間資料相關性的複數個比較器,所述複數個比較器被劃分成彼此相互獨立的至少兩個分組,所述比較器的分組個數與SMT功能啟用後支援的執行緒個數相同;每一組比較器用於對應檢
測在SMT功能啟用後的其中一執行緒的指令之間的資料相關性,不同分組的比較器用於檢測在SMT功能啟用後的屬於不同執行緒的指令之間的資料相關性。
指令分發單元702包括至少兩個指令分發端,每個指令分發端與所述指令比較單元703中的一個比較器分組相連接,不同的指令分發端與不同的比較器分組相連接,所述指令分發端的個數與所述指令比較單元中的分組個數相同。
指令分發單元702用於從所述指令輸入介面701讀取待檢測資料相關性的指令,將SMT功能啟用後的屬於同一個執行緒的指令、透過一個指令分發端發送給一個比較器分組,將SMT功能啟用後的屬於不同執行緒的指令透過不同的指令分發端發送給不同的比較器分組。
下面以目前常規的CPU配置,即:包括12個比較器,SMT功能啟用後可同時執行2個執行緒為例,進一步說明本實施例。所述指令輸入介面701將來自解碼單元的解碼後指令傳輸給所述指令分發單元702,所述指令分發單元702包括兩個指令分發端,分別與所述指令比較單元703中的兩個比較器分組相連接,所述指令分發單元702透過第一指令分發端將屬於執行緒1的指令分發給第一比較器分組、透過第二指令分發端將屬於執行緒2的指令分發給第二比較器分組;兩個比較器分組各包含6個比較器,分別用於檢測屬於執行緒1和執行緒2的3條指令的資料相關性。因此,在SMT功能啟用的情況下,本實施
例的裝置,可以同時檢測6條指令的資料相關性。
在SMT功能禁用的情況下,所述指令分發單元702的兩個指令分發端中只有一個處於工作狀態,即:透過一個指令分發端向合併為一組的12個比較器發送同一個執行緒的指令,在這種情況下,所述12個比較器可同時檢測4條指令的資料相關性。
由此可見,在本實施例的具體例子中,由於充分利用了SMT功能啟用後的不同執行緒指令之間的無關性,因此在不增加比較器的情況下,拓寬了檢測資料相關性的指令寬度。
以上列舉了本實施例的一個具體例子,在其他的實施方式中,啟用SMT功能後支援的執行緒數目、比較器的數目等都可以不同於上述具體例子,但是只要指令比較單元中的比較器被劃分為不同的分組、並且每一分組用於對應檢測在SMT功能啟用後的其中一執行緒的指令之間的資料相關性、不同分組用於檢測在SMT功能啟用後的屬於不同執行緒的指令之間的資料相關性,就同樣能夠在不增加硬體比較器的前提下,拓寬資料相關性檢測的指令寬度。
本發明雖然以較佳實施例揭示如上,但其並不是用來限定本發明,任何本領域技術人員在不脫離本發明的精神和範圍內,都可以做出可能的變動和修改,因此本發明的保護範圍應當以本發明申請專利範圍所界定的範圍為準。
在一個典型的配置中,計算設備包括一個或多個處理
器(CPU)、輸入/輸出介面、網絡介面和內存。
內存可能包括電腦可讀媒體中的非永久性記憶體,隨機存取記憶體(RAM)和/或非易失性內存等形式,如唯讀記憶體(ROM)或快閃(flash RAM)。內存是電腦可讀媒體的示例。
1、電腦可讀媒體包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術來實現資訊儲存。資訊可以是電腦可讀指令、資料結構、程序的模組或其他資料。電腦的儲存媒體的例子包括,但不限於相變內存(PRAM)、靜態隨機存取記憶體(SRAM)、動態隨機存取記憶體(DRAM)、其他類型的隨機存取記憶體(RAM)、唯讀記憶體(ROM)、電可擦除可編程唯讀記憶體(EEPROM)、快閃記憶體或其他內存技術、唯讀光碟唯讀記憶體(CD-ROM)、數字多功能光碟(DVD)或其他光學儲存、磁盒式磁帶,磁帶磁磁盤儲存或其他磁性儲存設備或任何其他非傳輸媒體,可用於儲存可以被計算設備訪問的資訊。按照本文中的界定,電腦可讀媒體不包括非暫存電腦可讀媒體(transitory media),如調製的資料信號和載波。
2、本領域技術人員應明白,本發明的實施例可提供為方法、系統或電腦程序產品。因此,本發明可採用完全硬體實施例、完全軟體實施例或結合軟體和硬體方面的實施例的形式。而且,本發明可採用在一個或多個其中包含有電腦可用程序代碼的電腦可用儲存媒體(包括但不限於
磁盤記憶體、CD-ROM、光學記憶體等)上實施的電腦程序產品的形式。
101‧‧‧指令讀取單元
102‧‧‧指令解碼單元
103‧‧‧指令分發單元
104‧‧‧指令比較單元
Claims (15)
- 一種基於SMT的中央處理單元,其特徵在於,包括:指令讀取單元,用於從指令緩存中讀取指令;指令解碼單元,用於對該指令讀取單元輸出的指令進行解碼;指令比較單元,用於檢測解碼後指令的資料相關性,並輸出檢測結果;該指令比較單元包括用於檢測指令之間的資料相關性的複數個比較器,該複數個比較器,被劃分成彼此相互獨立的至少兩個分組,該比較器的分組個數與SMT功能啟用後支援的執行緒個數相同;每一組比較器用於對應檢測在SMT功能啟用後的其中一執行緒的指令之間的資料相關性,不同分組的比較器用於檢測在SMT功能啟用後的屬於不同執行緒的指令之間的資料相關性;以及指令分發單元,用於將該指令解碼單元輸出的、在SMT功能啟用後的多個執行緒的解碼後指令分發給該該指令比較單元中對應的比較器分組。
- 根據申請專利範圍第1項所述的基於SMT的中央處理單元,其中,該任一比較器均包括第一輸入端和第二輸入端、以及輸出端;其中,該第一輸入端和第二輸入端,分別用於輸入待檢測資料相關性的兩條指令中的在先指令的目的運算元位址、和在後指令的源運算元位址;並且 該輸出端,用於輸出上述目的運算元位址和源運算元位址是否相同的比較結果。
- 根據申請專利範圍第1項所述的基於SMT的中央處理單元,其中,該指令讀取單元具體用於,採用輪詢的方式從指令緩存中讀取SMT功能啟用後的多個執行緒的指令;相應地,該指令解碼單元具體用於,採用輪詢的方式對該指令讀取單元輸出的多個執行緒的指令進行解碼。
- 根據申請專利範圍第3項所述的基於SMT的中央處理單元,其中,該指令讀取單元具體用於,採用輪詢的方式從指令緩存中讀取SMT功能啟用後的執行緒1和執行緒2的指令;相應地,該指令比較單元中的複數個比較器被劃分為兩個比較器分組,其中,第一比較器分組檢測屬於執行緒1的指令之間的資料相關性,第二比較器分組檢測屬於執行緒2的指令之間的資料相關性。
- 根據申請專利範圍第4項所述的基於SMT的中央處理單元,其中,該指令比較單元包含12個比較器,該第一比較器分組和該第二比較器分組各包含6個比較器。
- 根據申請專利範圍第1項所述的基於SMT的中央處理單元,其中,該指令比較單元中的該複數個比較器被合併為一組,用於檢測在SMT功能禁用後的屬於同一個執行緒的指令之間的資料相關性。
- 根據申請專利範圍第6項所述的基於SMT的中央 處理單元,其中,該指令分發單元用於將該指令解碼單元輸出的、在SMT功能禁用後的屬於同一執行緒的指令發送給該指令比較單元中的被合併後的比較器分組。
- 根據申請專利範圍第1-7項中之任一項所述的基於SMT的中央處理單元,其中,該指令比較單元包括該指令分發單元。
- 一種基於SMT的用於檢測指令的資料相關性的裝置,其特徵在於,包括:指令輸入介面、結果輸出介面、以及用於檢測指令之間的資料相關性的複數個比較器;該複數個比較器,被劃分成彼此相互獨立的至少兩個分組,該比較器的分組個數與SMT功能啟用後支援的執行緒個數相同;每一組比較器用於對應檢測在SMT功能啟用後的其中一執行緒的指令之間的資料相關性,不同分組的比較器用於檢測在SMT功能啟用後的屬於不同執行緒的指令之間的資料相關性;該指令輸入介面的個數與比較器的分組個數相同,並且每一個指令輸入介面與一個比較器分組相連接,用於向該比較器分組輸入在SMT功能啟用後的屬於同一個執行緒的指令;不同的指令輸入介面與不同的比較器分組相連接;以及該結果輸出介面與該複數個比較器相連接,用於輸出該複數個比較器的比較結果。
- 根據申請專利範圍第9項所述的基於SMT的用於檢測指令的資料相關性的裝置,其中,該任一比較器均 包括第一輸入端和第二輸入端、以及輸出端;其中,該第一輸入端和第二輸入端,分別用於輸入待檢測資料相關性的兩條指令中的在先指令的目的運算元位址、和在後指令的源運算元位址;並且該輸出端,輸出上述目的運算元位址和源運算元位址是否相同的比較結果。
- 根據申請專利範圍第9或10項所述的基於SMT的用於檢測指令的資料相關性的裝置,其中,該指令輸入介面的個數為兩個,該複數個比較器被劃分為彼此獨立的兩個比較器分組;其中,第一指令輸入介面與第一比較器分組相連接,用於向第一比較器分組輸入在SMT功能啟用後的屬於執行緒1的指令;第二指令輸入介面與第二比較器分組相連接,用於向第二比較器分組輸入在SMT功能啟用後的屬於執行緒2的指令。
- 根據申請專利範圍第11項所述的基於SMT的用於檢測指令的資料相關性的裝置,其中,該比較器的個數具體為12個,該第一比較器分組和該第二比較器分組各包含6個比較器。
- 根據申請專利範圍第9項所述的基於SMT的用於檢測指令的資料相關性的裝置,其中,該複數個比較器被合併為一組,用於檢測從一個指令輸入介面輸入的、在SMT功能禁用後的屬於同一個執行緒的指令之間的資料相關性。
- 一種基於SMT的用於檢測指令的資料相關性的裝置,其特徵在於,包括:指令輸入介面、結果輸出介面、指令分發單元和指令比較單元,該指令分發單元與該指令輸入介面和指令比較單元相連接,該指令比較單元與該指令分發單元和結果輸出介面相連接;該指令比較單元包括用於檢測指令之間資料相關性的複數個比較器,該複數個比較器被劃分成彼此相互獨立的至少兩個分組,該比較器的分組個數與SMT功能啟用後支援的執行緒個數相同;每一組比較器用於對應檢測在SMT功能啟用後的其中一執行緒的指令之間的資料相關性,不同分組的比較器用於檢測在SMT功能啟用後的屬於不同執行緒的指令之間的資料相關性;該指令分發單元包括至少兩個指令分發端,每個指令分發端與該指令比較單元中的一個比較器分組相連接,不同的指令分發端與不同的比較器分組相連接,該指令分發端的個數與該指令比較單元中的分組個數相同;以及該指令分發單元用於從該指令輸入介面讀取待檢測資料相關性的指令,將SMT功能啟用後的屬於同一個執行緒的指令、透過一個指令分發端發送給一個比較器分組,將SMT功能啟用後的屬於不同執行緒的指令透過不同的指令分發端發送給不同的比較器分組。
- 根據申請專利範圍第14項所述的基於SMT的用於檢測指令的資料相關性的裝置,其中,該指令比較單元中的任一比較器均包括第一輸入端和第二輸入端、以及輸 出端;其中,該第一輸入端和第二輸入端,分別用於輸入待檢測資料相關性的兩條指令中的在先指令的目的運算元位址、和在後指令的源運算元位址;並且該輸出端,輸出上述目的運算元位址和源運算元位址是否相同的比較結果。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410190737.4A CN105094747B (zh) | 2014-05-07 | 2014-05-07 | 基于smt的中央处理单元以及用于检测指令的数据相关性的装置 |
??201410190737.4 | 2014-05-07 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201543357A true TW201543357A (zh) | 2015-11-16 |
TWI639951B TWI639951B (zh) | 2018-11-01 |
Family
ID=54367914
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW103134238A TWI639951B (zh) | 2014-05-07 | 2014-10-01 | 基於同時多執行緒(smt)的中央處理單元以及用於檢測指令的資料相關性的裝置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10545763B2 (zh) |
EP (1) | EP3140730B1 (zh) |
CN (1) | CN105094747B (zh) |
TW (1) | TWI639951B (zh) |
WO (1) | WO2015171862A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105528195B (zh) * | 2015-12-03 | 2017-12-15 | 上海高性能集成电路设计中心 | 一种支持同时多线程指令乱序发射的飞行记分牌处理方法 |
US10133496B1 (en) * | 2016-06-15 | 2018-11-20 | Amazon Technologies, Inc. | Bindable state maintaining components |
CN109522047B (zh) * | 2017-09-18 | 2022-10-28 | 展讯通信(上海)有限公司 | 一种同步多线程验证方法及装置 |
CN114830615B (zh) * | 2020-11-18 | 2024-05-10 | 京东方科技集团股份有限公司 | 数据分发系统及数据分发方法 |
CN113447883A (zh) * | 2021-06-25 | 2021-09-28 | 海宁奕斯伟集成电路设计有限公司 | 多工位并测的测试方法和测试系统 |
CN115629806B (zh) * | 2022-12-19 | 2023-03-31 | 苏州浪潮智能科技有限公司 | 一种处理指令的方法、系统、设备和存储介质 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5226126A (en) * | 1989-02-24 | 1993-07-06 | Nexgen Microsystems | Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags |
JPH04275628A (ja) * | 1991-03-01 | 1992-10-01 | Mitsubishi Electric Corp | 演算処理装置 |
US5416913A (en) | 1992-07-27 | 1995-05-16 | Intel Corporation | Method and apparatus for dependency checking in a multi-pipelined microprocessor |
US5937202A (en) | 1993-02-11 | 1999-08-10 | 3-D Computing, Inc. | High-speed, parallel, processor architecture for front-end electronics, based on a single type of ASIC, and method use thereof |
US5590352A (en) | 1994-04-26 | 1996-12-31 | Advanced Micro Devices, Inc. | Dependency checking and forwarding of variable width operands |
US5778248A (en) | 1996-06-17 | 1998-07-07 | Sun Microsystems, Inc. | Fast microprocessor stage bypass logic enable |
US6058466A (en) | 1997-06-24 | 2000-05-02 | Sun Microsystems, Inc. | System for allocation of execution resources amongst multiple executing processes |
US6550001B1 (en) * | 1998-10-30 | 2003-04-15 | Intel Corporation | Method and implementation of statistical detection of read after write and write after write hazards |
US6907520B2 (en) | 2001-01-11 | 2005-06-14 | Sun Microsystems, Inc. | Threshold-based load address prediction and new thread identification in a multithreaded microprocessor |
US7496915B2 (en) * | 2003-04-24 | 2009-02-24 | International Business Machines Corporation | Dynamic switching of multithreaded processor between single threaded and simultaneous multithreaded modes |
US7430654B2 (en) * | 2003-07-09 | 2008-09-30 | Via Technologies, Inc. | Dynamic instruction dependency monitor and control system |
US7263599B2 (en) * | 2004-02-06 | 2007-08-28 | Infineon Technologies | Thread ID in a multithreaded processor |
US7831979B2 (en) * | 2004-04-28 | 2010-11-09 | Agere Systems Inc. | Processor with instruction-based interrupt handling |
JP4487744B2 (ja) * | 2004-11-29 | 2010-06-23 | 富士通株式会社 | マルチスレッド制御装置及び制御方法 |
KR100573334B1 (ko) * | 2005-08-31 | 2006-04-24 | 주식회사 칩스앤미디어 | 실시간 동적 수정이 가능한 명령어 집합을 가지는 컴퓨터 |
US20090014473A1 (en) * | 2007-07-15 | 2009-01-15 | Meir Gitelis | Tube-Dispenser |
US8539485B2 (en) * | 2007-11-20 | 2013-09-17 | Freescale Semiconductor, Inc. | Polling using reservation mechanism |
CN101661385A (zh) * | 2008-08-29 | 2010-03-03 | 佛山市顺德区顺达电脑厂有限公司 | 数据处理装置及数据处理方法 |
US7941644B2 (en) * | 2008-10-16 | 2011-05-10 | International Business Machines Corporation | Simultaneous multi-thread instructions issue to execution units while substitute injecting sequence of instructions for long latency sequencer instruction via multiplexer |
US8464035B2 (en) * | 2009-12-18 | 2013-06-11 | Intel Corporation | Instruction for enabling a processor wait state |
-
2014
- 2014-05-07 CN CN201410190737.4A patent/CN105094747B/zh active Active
- 2014-10-01 TW TW103134238A patent/TWI639951B/zh active
-
2015
- 2015-05-06 US US14/705,323 patent/US10545763B2/en active Active
- 2015-05-07 EP EP15725924.3A patent/EP3140730B1/en active Active
- 2015-05-07 WO PCT/US2015/029639 patent/WO2015171862A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2015171862A1 (en) | 2015-11-12 |
US10545763B2 (en) | 2020-01-28 |
EP3140730A1 (en) | 2017-03-15 |
US20150324202A1 (en) | 2015-11-12 |
CN105094747B (zh) | 2018-12-04 |
TWI639951B (zh) | 2018-11-01 |
CN105094747A (zh) | 2015-11-25 |
EP3140730B1 (en) | 2018-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9529596B2 (en) | Method and apparatus for scheduling instructions in a multi-strand out of order processor with instruction synchronization bits and scoreboard bits | |
EP3314437B1 (en) | Verifying branch targets in a block based processor | |
TWI639951B (zh) | 基於同時多執行緒(smt)的中央處理單元以及用於檢測指令的資料相關性的裝置 | |
US9606797B2 (en) | Compressing execution cycles for divergent execution in a single instruction multiple data (SIMD) processor | |
JP5801372B2 (ja) | システム管理モードのためのプロセッサにおける状態記憶の提供 | |
US8639884B2 (en) | Systems and methods for configuring load/store execution units | |
US9250901B2 (en) | Execution context swap between heterogeneous functional hardware units | |
TWI497412B (zh) | 用於使用相依矩陣追蹤解除配置之載入指令之方法、處理器及裝置 | |
JP2005507115A (ja) | マルチコアマルチスレッドプロセッサ | |
CN110647404A (zh) | 用于多线程处理器中的屏障同步的系统、设备和方法 | |
EP3186704B1 (en) | Multiple clustered very long instruction word processing core | |
US8572355B2 (en) | Support for non-local returns in parallel thread SIMD engine | |
US8527740B2 (en) | Mechanism of supporting sub-communicator collectives with O(64) counters as opposed to one counter for each sub-communicator | |
JP4420055B2 (ja) | マルチスレッドプロセッサ及びそれに用いるスレッド間同期操作方法 | |
US9063855B2 (en) | Fault handling at a transaction level by employing a token and a source-to-destination paradigm in a processor-based system | |
US11451241B2 (en) | Setting values of portions of registers based on bit values | |
US9477628B2 (en) | Collective communications apparatus and method for parallel systems | |
US7457932B2 (en) | Load mechanism | |
US20150074378A1 (en) | System and Method for an Asynchronous Processor with Heterogeneous Processors | |
US20140201505A1 (en) | Prediction-based thread selection in a multithreading processor | |
US20110161629A1 (en) | Arithmetic processor, information processor, and pipeline control method of arithmetic processor | |
Yoshida | SPARC64™ XIfx: Fujitsu's next generation processor for HPC | |
US20150074379A1 (en) | System and Method for an Asynchronous Processor with Token-Based Very Long Instruction Word Architecture |