TW201732569A - 用以監控位址衝突的計數器 - Google Patents
用以監控位址衝突的計數器 Download PDFInfo
- Publication number
- TW201732569A TW201732569A TW105139274A TW105139274A TW201732569A TW 201732569 A TW201732569 A TW 201732569A TW 105139274 A TW105139274 A TW 105139274A TW 105139274 A TW105139274 A TW 105139274A TW 201732569 A TW201732569 A TW 201732569A
- Authority
- TW
- Taiwan
- Prior art keywords
- address
- instruction
- conflict
- unit
- processor
- Prior art date
Links
- 238000012544 monitoring process Methods 0.000 claims abstract description 23
- 238000000034 method Methods 0.000 claims abstract description 19
- 230000015654 memory Effects 0.000 claims description 81
- 238000003860 storage Methods 0.000 claims description 22
- 239000013598 vector Substances 0.000 description 36
- 238000010586 diagram Methods 0.000 description 19
- 238000012545 processing Methods 0.000 description 17
- 238000007667 floating Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 8
- 238000001514 detection method Methods 0.000 description 8
- 235000012431 wafers Nutrition 0.000 description 8
- 239000003795 chemical substances by application Substances 0.000 description 7
- 238000013519 translation Methods 0.000 description 7
- 238000006243 chemical reaction Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 239000000872 buffer Substances 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000000605 extraction Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 230000000052 comparative effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 238000012546 transfer 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/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3471—Address tracing
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/88—Monitoring involving counting
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Advance Control (AREA)
Abstract
說明了用於監控位址衝突的系統、方法及設備的實施例。在一些實施例中,設備包括:執行電路,用以執行指令;複數個暫存器,用以儲存耦合至執行電路的資料;以及效能監控電路,用以藉由至少判定執行指令與先前執行的指令之間的位址衝突及計數各個衝突的實例來進行位址衝突計數。
Description
發明之技術領域一般係關於電腦處理器架構,且更特別的是關於衝突偵測。
衝突偵測指令使得用於其中無法在附近的疊代中判定存取的位址之迴圈的向量化能夠在編譯時間上是相依的。然而,衝突偵測指令和相應的順序為高代價的且他們的使用是否造成加速或降速係取決於在等值疊代的一個向量內實際發生多少衝突。
101‧‧‧核心
105‧‧‧位址衝突計數器
107‧‧‧潛在衝突位址儲存器
107‧‧‧記憶體單元
109‧‧‧暫存器
111‧‧‧特定模型暫存器
113‧‧‧單一指令多重資料電路
115‧‧‧單一指令多重資料電路
117‧‧‧比較電路
119‧‧‧有限狀態機
501‧‧‧先前使用的位址
503‧‧‧比較硬體
505‧‧‧先前使用的位址
507‧‧‧用以測試的位址
509‧‧‧及閘
511‧‧‧或閘
513‧‧‧結果
700‧‧‧暫存器架構
710‧‧‧向量暫存器
715‧‧‧寫入遮罩暫存器
725‧‧‧通用暫存器
745‧‧‧純量浮點堆疊暫存器檔案
750‧‧‧MMX封包整數平面暫存器檔案
800‧‧‧協同處理器管線
802‧‧‧提取級
804‧‧‧長度解碼級
806‧‧‧解碼級
808‧‧‧分配級
810‧‧‧更名級
812‧‧‧排程級
814‧‧‧暫存器讀取/記憶體讀取級
816‧‧‧執行級
818‧‧‧寫回/記憶體寫入級
822‧‧‧例外處置級
824‧‧‧提交級
830‧‧‧前端單元
832‧‧‧支預測單元
834‧‧‧指令快取單元
836‧‧‧指令轉譯側查緩衝器
838‧‧‧指令提取單元
840‧‧‧解碼單元
850‧‧‧執行引擎單元
852‧‧‧更名/分配器單元
854‧‧‧退役單元
856‧‧‧排程器單元
858‧‧‧實體暫存器檔案單元
860‧‧‧執行叢集
862‧‧‧執行單元
864‧‧‧記憶體存取單元
870‧‧‧記憶體單元
872‧‧‧資料轉譯側查緩衝器單元
874‧‧‧資料快取單元
876‧‧‧2級(L2)快取單元
890‧‧‧核心
900‧‧‧指令解碼器
902‧‧‧晶粒上互連網路
904‧‧‧2級(L2)快取
906‧‧‧L1快取
908‧‧‧純量單元
910‧‧‧向量單元
912‧‧‧純量暫存器
914‧‧‧向量暫存器
906A‧‧‧L1資料快取
920‧‧‧拌和單元
922A‧‧‧數值轉換單元
922B‧‧‧數值轉換單元
924‧‧‧複製單元
926‧‧‧寫入遮罩暫存器
928‧‧‧算術邏輯單元
1000‧‧‧處理器
1002A~1002N‧‧‧核心
1004A~1004N‧‧‧快取單元
1006‧‧‧快取單元
1008‧‧‧專用邏輯
1010‧‧‧系統代理器
1012‧‧‧基於環狀的互連單元
1014‧‧‧積體記憶體控制器單元
1016‧‧‧匯流排控制器單元
1100‧‧‧系統
1110‧‧‧處理器
1115‧‧‧處理器
1120‧‧‧控制器中樞
140‧‧‧記憶體
145‧‧‧協同處理器
1150‧‧‧輸入/輸出中樞
1160‧‧‧輸入/輸出(I/O)裝置
1190‧‧‧圖形記憶體控制器中樞
1195‧‧‧連接
1200‧‧‧系統
1214‧‧‧I/O裝置
1215‧‧‧處理器
1216‧‧‧第一匯流排
1218‧‧‧匯流排橋
1220‧‧‧第二匯流排
1222‧‧‧鍵盤及/或滑鼠
1224‧‧‧音頻I/O
1227‧‧‧通訊裝置
1228‧‧‧儲存單元
1230‧‧‧指令/代碼及資料
1232‧‧‧記憶體
1234‧‧‧記憶體
1238‧‧‧協同處理器
1239‧‧‧高效能介面
1250‧‧‧點對點(P-P)介面
1252‧‧‧點對點(P-P)介面
1254‧‧‧點對點(P-P)介面
1270‧‧‧處理器
1272‧‧‧積體記憶體控制器單元
1276‧‧‧點對點介面電路
1278‧‧‧點對點介面電路
1280‧‧‧處理器
1282‧‧‧積體記憶體控制器單元
1286‧‧‧點對點介面電路
1288‧‧‧點對點介面電路
1290‧‧‧晶片組
1294‧‧‧點對點介面電路
1296‧‧‧介面
1298‧‧‧點對點介面電路
1300‧‧‧系統
1314‧‧‧I/O裝置
1315‧‧‧舊有的I/O裝置
1400‧‧‧晶片上系統
1402‧‧‧互連單元
1410‧‧‧應用處理器
1420‧‧‧協同處理器
1430‧‧‧靜態隨機存取記憶體單元
1432‧‧‧直接記憶體存取單元
1440‧‧‧顯示單元
1502‧‧‧高階語言
1504‧‧‧x86編譯器
1506‧‧‧x86二進位碼
1508‧‧‧指令集編譯器
1510‧‧‧指令集二進位碼
1512‧‧‧指令轉換器
1514‧‧‧處理器
1516‧‧‧處理器
本發明係藉由範例的方法來闡述而非以附加的圖式的圖來限制,其中相似的參考指的是類似的元件,並且其中:圖1闡述支援位址衝突計數的處理器(核心)之實施例;圖2闡述用於使用位址衝突計數器之位址衝突計數的
方法之實施例;圖3闡述使用組態指令來執行用以組態位址衝突計數器的指令的實施例;圖4闡述位址比較硬體之實施例;圖5闡述比較硬體之實施例;圖6闡述用於在一向量疊代內追蹤儲存位址衝突的假碼之範例;圖7為依據本發明之一實施例的暫存器架構之方塊圖;圖8A為依據本發明之實施例闡述示範性循序管線和示範性暫存器更名、亂序派發/執行管線兩者的方塊圖;圖8B為依據本發明之實施例闡述用以被包括在處理器中的示範性循序架構核心和示範性暫存器更名、亂序派發/執行架構核心兩者的方塊圖;圖9A~B闡述更特定的示範性循序核心架構之方塊圖,其核心會為在晶片中幾個邏輯方塊之其中一者(包括相同類型及/或不同類型的其它核心);圖10為依據本發明之實施例可具有多於一個核心、可具有積體記憶體控制器以及可具有積體圖形的處理器之方塊圖;圖11~14為示範性電腦架構之方塊圖;以及圖15為依據本發明之實施例對比用以將在來源指令集中的二進位指令轉換成在目標指令集中的二進位指令的軟體指令轉換器的使用之方塊圖。
在下列發明說明中,提出了眾多的特定細節。然而,了解的是,本發明之實施例可不以這些特定細節來實踐。在其它實例中,周知的電路、結構及技術已被詳細地繪示以為了不去模糊本發明說明的了解。
在說明書中對「一實施例」、「實施例」、「範例實施例」等的參考指示所述的實施例可包括特定特徵、結構或特性,但每一個實施例可不必然包括該特定特徵、結構或特性。再者,這類詞彙不必然指的是相同的實施例。進一步,當特定特徵、結構或特性關連於實施例來說明時,要提出的是,影響與其它實施例關連的這類特徵、結構或特性是否被明白的說明是在於本領域具有通常知識者的知識內。
為了有益地將在向量元素之間的真實相依(real dependence)或衝突向量化(vectorize),衝突被有效地動態地偵測且施行。在用於各個向量疊代之指令中的成本(亦即,各個VLEN純量疊代)為衝突偵測指令+(原始指令/除以SIMD效益)+衝突處置指令,其中中間術語之分母為計算缺乏衝突偵測和施行的SIMD效益。
一個直接了當的方法是偵測複製索引是具有暴力純量比較迴圈。對於各個索引,作成針對在向量中具有較早索引的品質的檢查。要對此作偵測的另一個方法係為使用SIMD指令來進行所有需要的比較(例如,
vpconflict指令)。不幸的,這樣的指令是非常高代價的。
為了保證在衝突之存在中的正確性,一個方法選擇使用純量執行。對於在其中在給定的向量中偵測衝突的向量化迴圈,對於該向量和該迴圈之所有未來疊代或是在其之間的任何處,可完成回落至用於就是該向量的純量執行。
由於純量回落(fallback)在出現大量衝突中對SIMD效率具有這類戲劇性的效果,故吾人可僅當偵測到足夠的複製時選擇使用純量執行。這可以意味非獨一或在向量中最多共同索引其一者之足夠的索引元件具有足夠的複本。
下面細節為用以使用效能計數器來追蹤位址衝突之數目的實施例。能使用此資訊來幫助軟體開發人員限制使用衝突偵測指令之效能損失(performance penalty)並且從使用這類指令(包括使用純量指令代替向量執行等)來最大化效能加速。此計數器可取決於微架構以及需要的剖析(profiling)之類型以若干個方式來實行(或組態)。例如,其能被組態成在迴圈內任何處計數所有位址衝突。或者,其能被組態成位址衝突的特定情形。例如,能使用計數器來計數其中衝突係在若干疊代內發生的相同陣列內對不同位置的儲存位址之間的計數情形。典型地來說,n會對應於向量的尺寸,像是用於64位元的8個疊代或是當使用512位元時用於32位元資料類型的16
個。
圖1闡述支援位址衝突計數的處理器之實施例。在本實施例中,核心101包括純量及單一指令多重資料(SIMD;single-instruction,multiple data)電路113及115兩者,用以分別執行純量及SIMD/向量指令。
執行電路113及115耦接至記憶體單元107和暫存器109。記憶體單元107存取記憶體位置,記憶體像是隨機存取記憶體(RAM;random access memory)和非揮發性記憶體(像是碟片)。暫存器109包括由純量執行電路113使用的通用暫存器(general purpose register)和浮點暫存器以及由SIMD執行電路115使用的封包/緊縮資料暫存器(packed data register)(像是128位元、256位元或512位元的裝配/緊縮資料暫存器)。
效能監控電路103(有時稱「perfmon」)監控核心之功能,像是執行周期(execution cycle)、功率狀態、等。效電監控電路103之實施例包括位址衝突計數器105,用以計數在指令之分組中的指令之間位址衝突的實例。例如,位址衝突計數器105係可組態以計數在迴圈內位址衝突之實例(包括將該計數限制到迴圈之若干個疊代),計數特定類型、指令之數目、描繪標記群組的指令之間、該些者之任一的結合等的實例等。典型地來說,此計數器105經由應用程式介面(API;application program interface)呼叫而可對程控器(programmer)存取或是執行指令以取得計數器值。在一些實施例中,計數器105為
暫存器。
效能監控電路103包括或具有對下列之存取:用以儲存先前執行的指令之儲存位址的潛在衝突位址儲存器107。典型地來說,僅儲存獨一的位址。在一些實施例中,該儲存器係為內容可定址記憶體(CAM;content addressable memory),其允許針對匹配平行地搜尋項目。在其它實施例中,此儲存器為位址的陣列。在其它實施例中,此儲存器為一或多個暫存器(像是複數個通用暫存器或裝包/緊縮資料暫存器,其中裝配/緊縮資料暫存器之資料元件為位址)。
在一些實施例中,效能監控電路103包括特定模型暫存器(MSR;model specific register)111,用以界定位址檢查之參數。典型地來說,此暫存器經由高特權或ring0應用而可存取。
效能監控電路包括比較電路117,用以作成執行的指令之位址對潛在衝突位址儲存之比較。
在一些實施例中,效電監控電路包括有限狀態機(FSM;finite state machine)119,用以在位址衝突計數期間追蹤指令之分組。例如,FSM追蹤經處理的指令之數目到要用來比較的指令之數目,或是追蹤衝突計數所欲的迴圈之疊代的數目等。
在一些實施例中,效能監控電路在由開始和停止指令所描繪的指令之分組之上進行位址衝突計數。在一些實施例中,效能監控電路用以在由開始指令和指示用
以在開始指令之後評估的指令之數目之值所描繪的指令之分組之上進行位址衝突計數。
圖2闡述用於使用位址衝突計數器之位址衝突計數的方法之實施例。在201處,第一指令係由執行電路所執行。例如,執行引起寫入/儲存到位址或多個位址中的任何指令。取決於指令,可藉由純量或SIMD執行電路來完成執行。
在203處,來自第一指令的位執係儲存到潛在衝突位址儲存器中。例如,若第一指令為儲存,則儲存目的地位址到潛在衝突位址儲存器中,像是儲存器107。
在205處,隨後指令係由執行電路所執行。例如,執行第二儲存。
在207處作成判定隨後指令之位址是否在潛在衝突位址儲存器中。例如,目的地位址已如藉由將位址對先前在儲存器位置中儲存的該些位址比較所判定的來被先前使用嗎?當由該隨後的指令使用的位址未曾被先前使用時,在209處,該位址係儲存在潛在衝突位址儲存器中,並且評估下一個隨後的指令。
當由該隨後的指令使用的位址曾被先前使用時,在211處,位址衝突計數器累加,並且評估下一個隨後的指令。
在本示範性實施例中未繪示但出現在許多實施例中的是判定何時計數應停止。例如,在迴圈之終點或在迴圈之若干個疊代之後。
沒有繪示計數器的輸出,但在許多使用的型樣中,程控器將呼叫計數器值以在檔案中被讀出或是到螢幕上以用於檢視。可由程控器或其它實體來使用讀取計數器之值以對於像是上面詳述的向量化作決定。不同的向量化處境需要不同的最佳化決策:1)若已知在迴圈(用於64位元資料的8個疊代或是用於32位元資料的16個疊代)之任何向量內沒有衝突,不使用衝突偵測指令下藉由向量化正常地獲得較佳的效能;2)若在一向量疊代內有平均高數目的衝突(實際臨界值為微架構相依的),則通常最佳方式是一點都不要向量化(不使用衝突決定指令來向量化)並且運行純量序列來代替;以及3)若在一向量疊代內的衝突之數目為小的(小於微架構相依臨界值),接著通常隨著使用衝突偵測指令之向量化產出最佳效能。
圖3闡述使用組態指令來執行用以組態位址衝突計數器的指令的實施例。在301處,提取指令。取決於實施例,指令包括運算碼(opcode)以及包括一或多個欄位來指令迴圈之開始、迴圈的結束、衝突類型、疊代之數目等。
在303處,解碼該指令。
在305處,與欄位關聯的資料當需要時被取回。例如,從暫存器或記憶體取回資料。
在307處,執行解碼的指令以組態位址衝突計數器。在一些實施例中,設定特定模型暫存器來指示在效能監控電路內的組態。
圖4闡述位址比較硬體之實施例。將先前使用的位址之群組401對用以檢查之位址的位址407比較。例如,指令之位址相對先前使用的位址比較。如上所述,用以再次測試的位址係典型地儲存在效能監控電路之儲存位置中或是對於效能監控電路為可存取的。
比較硬體(電路)403進行比較。在一些實施例中,比較係一次完成一個。在其它實施例中,比較係平行地完成。
比較405之結果指示何時應更新位址衝突計數器。此結果饋送至位址衝突暫存器,像是如所需要的位址衝突計數器105。在一些實施例中,僅對計數器之累加饋送至計數器。
圖5闡述比較硬體之實施例。硬體503指示複數個及閘(AND gate)509。將先前使用的位址(501和505)及用以測試的位址507反饋各個及閘。
或閘(OR gate)511接收進行AND的結果且輸出結果513。來自AND閘509的任何「1」指示位址已被先前使用因而應該累加計數器。
圖6闡述用於在一向量疊代內追蹤儲存位址衝突的假碼之範例。
下面的圖詳述用以實行上面之實施例的示範性架構和系統。在一些實施例中,上述的一或多個硬體組件及/或指令係如下面詳細說明來仿真或如軟體模組來實行。
示範性暫存器架構
圖7為依據本發明之一實施例的暫存器架構700之方塊圖。在闡述的實施例中,有32個向量暫存器710,其為512位元寬,這些暫存器係參照為zmm0直到zmm31。低16 zmm暫存器之低位256位元係在暫存器ymm0~16上重疊。低16 zmm暫存器之低位128位元(ymm暫存器之低位128位元)係在暫存器xmm0~15上重疊。
純量運算係為在zmm/ymm/xmm暫存器中於最低位資料元素位置上進行的運算,較高位資料元素位置係取決於實施例如他們曾在指令前的左方或被歸零的任一者。
寫入遮罩暫存器(mask register)715--在闡述的實施例中,有8個遮罩暫存器(k0到k7),各者在尺寸上為64位元。在選替的實施例中,寫入遮罩暫存器715在尺寸上為16位元的。如先前所述,在本發明之一實施例中,向量遮罩暫存器k0不能被使用為寫入遮罩;當正常指示k0的編碼係使用於寫入遮罩時,其選定0xFFFF之硬連線的(hardwired)寫入遮罩,有效地對於該指令禁能寫入庶罩。
通用暫存器725--在所述的實施例中,有16個64位元通用暫存器,其連同現存的x86定址模式使用以定址記憶體運算元。這些暫存器係由名稱RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP及R8到R15來參照。
於其上化名MMX封包整數平面暫存器檔案(MMX packed integer flat register file)750的純量浮點堆疊暫存器檔案(x87堆疊)745--在闡述的實施例中,x87堆疊為8元素堆疊,其係使用以使用x87指令集延伸來在32/64/80位元浮點資料上進行純量浮點運算;同時使用MMX暫存器來在64位元封包整數資料上進行運算,以及針對在MMX和XMM暫存器之間進行的一些運算保持運算元。
本發明之選替的實施例可使用較寬的或較窄的暫存器。此外,本發明之選替的實施例可使用更多、更少或不同的暫存器檔案和暫存器。
示範性核心架構、處理器及電腦架構
處理器核心可針對不同的目的以不同的方式及以不同的處理器來實行。舉例而言,這類核心之實行可包括:1)打算用於通用計算的通用循序核心;2)打算用於通用計算的高效能通用亂序核心;3)打算主要用於圖形及/或科學的(處理量)計算的專用核心。不同處理器之實行可包括:1)包括打算用於通用計算的一或多個通用循序核心和打算用於通用計算的一或多個通用亂序核心的CPU;以及;2)包括打算主要用於圖形及/或科學的(處理量)的一或多個專用核心的協同處理器。這樣不同的處理器導致不同的電腦系統架構,其可包括:1)在與CPU分開的晶片上的協同處理器;2)在與CPU相同的封裝中分開的晶粒上的協同處理器;3)在與CPU相同的晶粒上的協同
處理器(在其情形中,這類的協同處理器有時稱為專用邏輯,像是積體圖形及/或科學(處理量)邏輯,或稱為專用核心);4)晶片上系統可包括在相同的晶粒上所述的CPU(有時稱為應用核心或應用處理器)、上述協同處理器以及額外的功能特性。接著說明示範性核心架構,其次是示範性處理器及電腦架構之說明。
示範性核心架構
圖8A為依據本發明之實施例闡述示範性循序管線和示範性暫存器更名、亂序派發/執行管線兩者的方塊圖。圖8B為依據本發明之實施例闡述用以被包括在處理器中的示範性循序架構核心和示範性暫存器更名、亂序派發/執行架構核心兩者的方塊圖。在圖8A~B中的實線框闡述循序管線和循序核心,同時選擇性添加的虛線框闡述暫存器更名、亂序派發/執行管線及核心。給定循序態樣為亂序態樣的子集,將說明亂序態樣。
在圖8A中,協同處理器管線800包括提取級802、長度解碼級804、解碼級806、分配級808、更名級810、排程(亦已知為指派或派發)級812、暫存器讀取/記憶體讀取級814、執行級816、寫回/記憶體寫入級818、例外處置級822以及提交級824。
圖8B繪示處理器核心890,其包括耦接至執行引擎單元850的前端單元830,並且兩者耦接至記憶體
單元870。核心890可為精簡指令集計算(RISC;reduced instruction set computing)核心、複雜指令集計算(CISC;complex instruction set computing)核心、超長指令字(VLIW;very long instruction word)或者是混合或選替的核心類型。又如另一個選擇,核心890可為專用核心,例如像是網路或通訊核心、壓縮引擎、協同處理器核心、通用計算圖形處理單元(GPGPU;general purpose computing graphics processing unit)核心、圖形核心或類似者。
前端單元830包括耦接至指令快取單元834的分支預測單元832,分支預測單元832耦接至指令轉譯側查緩衝器(TLB;translation lookaside buffer)836,指令轉譯側查緩衝器836耦接至指令提取單元838,指令提取單元838耦接至解碼單元840。解碼單元840(或解碼器)可解碼指令,並且產生一或多個微運算、微碼進入點(micro-code entry point)、微指令、其它指令或其它控制信號作為輸出,其係從原始指令來解碼、或其另以反映原始指令或衍生自原始指令。解碼單元840可使用各種不同的機制來實行。合適的機制之範例包括(但不限於)查找表、硬體實行、可編程邏輯陣列(PLA;programmable logic array)、微碼唯讀記體(ROM;read only memory)等。在一實施例中,核心890包括微碼ROM或儲存用於某些巨集指令(macroinstruction)的微碼之其它媒體(例如,在解碼單元840中其另以在前端單元830中)。解碼
單元840係耦接至在執行引擎單元850中的更名/分配器單元852。
執行引擎單元850包括更名/分配器單元852,其耦接至退役單元854和成組的一或多個排程器單元856。排程器單元856代表任何數目不同的排程器,包括保留站(reservation station)、中央指令窗等。排程器單元856係耦接至實體暫存器檔案單元858。實體暫存器檔案單元858之各者代表一或多個實體暫存器檔案,其之不同者儲存一或多個不同資料類型,像是純量整數、純量浮點、封包整數、封包浮點、向量整數、向量浮點、狀態(例如,係為要執行的下一個指令之位址指令指標)等。在一實施例中,實體暫存器單元858包含向量暫存器單元、寫入遮罩暫存器單元以及純量暫存器單元。這些暫存器可提供架構性向量暫存器、向量遮罩暫存器以及通用暫存器。實體暫存器檔案單元858係由退役單元854重疊以闡述暫存器更名和亂序執行可以其來實行的各種方式(例如,使用重排序緩衝器以及退役暫存器檔案;使用未來檔案、歷史緩衝器以及退役暫存器檔案;使用暫存器映射和暫存器之池等)。退役單元854和實體暫存器檔案單元858係耦接至執行叢集860。執行叢集860包括成組的一或多個執行單元862和成組的一或多個記憶體存取單元864。執行單元862可進行各種運算(例如,位移、加法、減法、乘法)以及在各種類型的資料上進行(例如,純量浮點、封包整數、封包浮點、向量整數、向量浮
點)。在當一些實施例可包括專用於特定的功能或成組的功能的若干個執行單元的同時,其它實施例可包括僅一個執行單元或多個執行單元,其所有者進行所有功能。排程器單元856、實體暫存器檔案單元858以及執行叢集860係繪示為可能的複數,因為某些實施例創建用於某些類型的資料/運算之分開的管線(例如,純量整數管線、純量浮點管線及/或各者具有他們自己的排程器單元、實體暫存器檔案單元及/或執行叢集的記憶體存取管線--以及在分開的記憶體存取管線的情形中,實行其中僅此管線之執行叢集具有記憶體存取單元864的某些實施例)。亦應了解的是,在使用分開的管線時,這些管線之一或多者可為亂序派發/執行且剩餘為循序的。
該組記憶體存取單元864耦接至記憶體單元870,其包括資料TLB單元872,該資料TLB單元872耦接至資料快取單元874,該資料快取單元874耦接至2級(L2)快取單元876。在一示範性實施例中,記憶體存取單元864可包括載入單元、儲存位址單元以及儲存資料單元,其之各者係耦接至在記憶體單元870中的資料TLB單元872。指令快取單元834係更耦接至在記憶體單元870中的2級(L2)快取單元876。L2快取單元876係耦接至一或多個其它級的快取並且最終耦接至主記憶體。
藉由範例的方式,示範性暫存器更名、亂序派發/執行核心架構可如下列實行管線800:1)指令提取838進行提取和長度解碼級802及804;2)解碼單元840
進行解碼級806;3)更名/分配器單元852進行分配級808和更名級810;4)排程器單元856進行排程級812;5)實體暫存器檔案單元858和記憶體單元870進行暫存器讀取/記憶體讀取級814;執行叢集860進行執行級816;6)記憶體單元870和實體暫存器檔案單元858進行寫回/記憶體寫入級818;7)可在例外處置級822中包含各種單元;以及8)退役單元854和實體暫存器檔案單元858進行提交級824。
核心890可支援一或多個指令集(例如,x86指令集(具有已添加有較新版本的一些延伸);加州桑尼維爾的MIPS技術之MIPS指令集;加州桑尼維爾的安謀控股(ARM Holding)的ARM指令集(具有像是NEON的可選額外的延伸),包括於此說明的指令。在一實施例中,核心890包括用以支援封包資料指令集延伸的邏輯(例如,AVX1、AVX2),從而使用封包資料而允許由許多多媒體應用的運算來被進行。
應了解,核心可支援多緒執行(multithreading)(執行二或多個平行組的運算或執行緒),並且可以各種方式這樣做,包括時間切片多緒執行(time sliced multithreading)、同時多緒執行(其中單一實體核心提供邏輯核心,以用於實體核心正同步多緒執行的執行緒之各者),或其結合(例如像是在英特爾超執行緒技術(Intel® Hyperthreading technology)中的時間切片提取和解碼和同步多緒執行)。
在當於亂序執行之上下文中說明暫存器更名的同時,應了解,可在循序架構中使用暫存器更名。在當闡述的處理器之實施例亦包括分開的指令及資料快取單元834/874和共用的L2快取單元876的同時,選替的實施例可具有用於指令和資料兩者的單一內部快取,例如像是1級(L1)內部快取或多級的內部快取。在一些實施例中,系統可包括內部快取和外部於核心及/或處理器的外部快取之結合。或者,所有的快取可外部於核心及/或處理器。
特定示範性循序核心架構
圖9A~B闡述更特定的示範性循序核心架構之方塊圖,其核心會為在晶片中幾個邏輯方塊之其中一者(包括相同類型及/或不同類型的其它核心)。取決於應用,邏輯方塊透過高頻寬互連網路(例如,環狀網路(ring network))與一些固定功能邏輯,記憶體I/O介面以及其它必要的I/O邏輯通訊。
圖9A為依據本發明之實施例單一處理器核心連同其對晶粒上互連網路902的連接以及具有其2級(L2)快取904之區域子集的方塊圖。在一實施例中,指令解碼器900支援具有封包資料指令集延伸的x86指令集。L1快取906允許低延時(low-latency)存取來將記憶體快取到純量及向量單元中。在當在一實施例中(為了簡化設計),純量單元908和向量單元910使用分開的暫存器組(分別為純量暫存器912和向量暫存器914)並且
他們之間的資料傳輸被寫到記憶體且接著讀回到1級(L1)快取906/自1級快906取讀回的同時,本發明之選替的實施例可使用不同的方法(例如,使用單一暫存器組或包括允許資料在兩個暫存器檔案之間傳輸而不用寫入且讀回的通訊路徑)。
L2快取904之區域子集為部分的全域L2快取,其被分成分開的區域子集,每處理器核心一個。各個處理器核心具有到它自己的L2快取904之區域子集的直接存取路徑。由處理器核心讀取的資料係儲存在其L2快取子集904中並且能被迅速地存取,與其它處理器存取他們自己的區域L2快取子集平行的進行。由處理器核心寫入的資料係儲存在它自己的L2快取子集904且若必要的話,從其它子集排清(flush)。環狀網路確保用於共同資料的一致性/同調性(coherency)。環狀網路為雙方向的,用以允許像是處理核心、L2快取及其它邏輯方塊的代理器來在晶片內彼此通訊。各個環狀資料路徑為每方向1012位元寬。
圖9B為依據本發明之實施例在圖9A中部分的處理器核心之展開圖。圖9B包括L1資料快取906A、部分的L1快取904以及關於向量單元910和向量暫存器914之更多細節。具體而言,向量單元910為16寬向量處理單元(VPU;vector processing unit)(請見16寬ALU 928),其執行整數、單精度浮點以及雙精度浮點指令其中之一或多者。VPU支援以拌和單元920來拌和
(swizzle)暫存器輸入、利用數值轉換單元922A~B的數值轉換以及在記憶體輸入上利用複製單元924的複製。寫入遮罩暫存器926允許斷定造成向量寫入。
圖10為依據本發明之實施例可具有多於一個核心、可具有積體記憶體控制器以及可具有積體圖形的處理器1000之方塊圖。在圖10中的實線框闡述具有單一核心1002A的處理器1000、系統代理器1010、成組的一或多個匯流排控制器單元1016,同時虛線框之可選的添加闡述具有多個核心1002A~N之選替的處理器、在系統代理器單元1010中成組的一或多個積體記憶體控制器單元1014以及專用邏輯1008。
因此,處理器1000之不同的實行可包括:1)具有專用邏輯1008的CPU為積體圖形及/或科學(處理量)邏輯(其可包括一或多個核心),以及核心1002A~N為一或多個通用核心(例如,通用循序核心、通用亂序核心、兩者的結合);2)具有核心1002A~N的協同處理器為主要打算用於圖形及/或科學(處理量)之大量的專用核心;以及3)具有核心1002A~N的協同處理器為大量的通用循序核心。因此,處理器1000可為通用處理器、協同處理器或專用處理器,例如像是網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(general purpose graphics processing unit)、高處理量眾多積體核心(MIC;many integrated core)協同處理器(包括30或更多的核心)、內嵌處理器或類似者。處理器可在一或多個晶片上
實行。處理器1000可為部分的基板及/或使用若干個處理器技術之任一者來在一或多個基板上實行,例如像是BiCMOS、CMOS或NMOS。
記憶體階層(hierarchy)包括在核心內快取的一或多個層級、成組的或一或多個共用快取單元1006以及耦接至該組積體記憶體控制器單元1014的外部記憶體(未繪示)。該組共用的快取單元1006可包括一或多個中級快取,像是2級(L2)、3級(L3)、4級(L4)或快取的其它層級、最終級快取(LLC;last level cache)及/或其結合。在當在一實施例中基於環狀的互連單元1012將積體圖形邏輯1008、該組共用的快取單元1006以及系統代理單元1010/積體記憶體控制器單元1014互連的同時,選替的實施例可使用任何數目周知的技術以用於將這類單元互連。在一實施例中,在一或多個快取單元1006及核心1002-A~N之間維持一致性。
在一些實施例中,核心1002A~N之一或多者能夠多緒執行。系統代理器1010包括協調及操作核心1002A~N的該些組件。系統代理器單元1010可例如包括電源控制單元(PCU;power control unit)和顯示單元。PCU可為或包括需要用於調節核心1002A~N及積體圖形邏輯1008之電源狀態的邏輯和組件。顯示單元係用於驅動一或多個外部連接的顯示器。
核心1002A~N按架構指令集來說可為同質的或異質的;亦即,核心1002A~N之二或多者能夠執行相
同的指令集,同時其餘者可能夠執行僅該指令集之子集或不同的指令集。
示範性電腦架構
圖11~14為示範性電腦架構之方塊圖。亦合適用於膝上型電腦、桌上型電腦、手持PC、個人數位助理、工程工作站(engineering workstation)、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位信號處理器(DSP;digital signal processor)、圖形裝置、視訊遊戲裝置、機上盒(set-top box)、微控制器、行動電話、可攜媒體播放器、手持裝置及各種其它電子裝置的在本領域已知的其它系統設計及組態。一般而言,如於此揭示能夠包含處理器及/或其它執行邏輯的各種各樣的系統或電子裝置一般是合適的。
現參照至圖11,所繪示的是依據本發明之一實施例的系統1100之方塊圖。系統1100可包括一或多個處理器1110、1115,其耦接至控制器中樞(controller hub)1120。在一實施例中,控制器中樞1120包括圖形記憶體控制器中樞(GMCH;graphics memory controller hub)1190以及輸入/輸出中樞(IOH;Input/Output Hub)1150(其可在分開的晶片上);GMCH 190包括記憶體和圖形控制器,記憶體1140和協同處理器1145耦接至該控制器;IOH 1150係為輸入/輸出(I/O)裝置1160對GMCH 1190的耦合。或者,記憶體和圖形控制器其中一者或兩者係整合在處理器內(如於此所說明的),記憶體
1140和協同處理器1145係直接耦接至處理器1110,並且控制器中樞1120在具有IOH 1150的單晶片中。
額外的處理器1115之可選的本質以虛線表示在圖11中。各個處理器1110、1115可包括於此所述的處理核心之一或多者且可為處理器1000的某個版本。
記憶體1140可例如為動態隨機存取記憶體(DRAM;dynamic random access memory)、相變記憶體(PCM;phase change memory)或兩者的結合。對於至少一實施例,控制器中樞1120經由多點下傳匯流排(multi-drop bus),像是前側匯流排(FSB;frontside bus)、諸如快速通道互連(QPI;QuickPath Interconnect)的點對點介面,或類似的連接1195來與處理器1110、1115通訊。
在一實施例中,協同處理器1145為專用處理器,例如像是高處理量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器或類似者。在一實施例中,控制器中樞1120可包括積體圖形加速器。
按指標度量譜(spectrum of metrics of merit)來說,能有實體資源1110、1115之間的各種差異,包括架構性、微架構性、熱、功率消耗特性及類似者。
在一實施例中,處理器1110執行控制一般類型的資料處理運算的指令。在指令內嵌入的可為協同處理器指令。處理器1110認出這些協同處理器指令為應由附
接的協同處理器1145執行之類型的。據此,處理器1110在協同處理器匯流排或其它互連上派發這些協同處理器指令(或代表協同處理器的控制信號)給協同處理器1145。協同處理器1145接受且執行接收的協同處理器指令。
現參照至圖12,所繪示的是依據本發明之實施例的第一更特定的示範性系統1200之方塊圖。如圖12所繪示,多處理器系統1200為點對點互連系統,並且包括經由點對點互連1250耦接的第一處理器1270及第二處理器1280。處理器1270和1280之各者可為處理器1000之某個版本。在本發明之一實施例中,處理器1270和1280分別為處理器1110和1115,同時協同處理器1238為協同處理器1145。在另一實施例中,處理器1270和1280分別為處理器1110、協同處理器1145。
處理器1270和1280係繪示分別包括積體記憶體控制器(IMC;integrated memory controller)單元1272和1282。處理器1270亦包括作為其匯流排控制器單元之部分的點對點(P-P)介面1276和1278;類似地,第二處理器1280包括P-P介面1286和1288。處理器1270、1280可經由點對點(P-P)介面1250使用P-P介面電路1278、1288來交換資訊。如在圖12中所繪示,IMC 1272和1282將處理器耦接至分別的記憶體,即記憶體1232和記憶體1234,其可為區域地附接至分別的處理器的主記憶體的部分。
處理器1270、1280可經由個別P-P介面1252、1254使用點對點介面電路1276、1294、1286、1298來與晶片組1290交換資訊。晶片組1290可經由高效能介面1239可選擇地與協同處理器1238交換資訊。在一實施例中,協同處理器1238為專用處理器,例如像是高處理量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器或類似者。
共用快取(未繪示)可被包括在兩處理器之其一處理器中或在兩處理器之外側,還是經由P-P互連與處理器連接,使得若處理器被放置到低功率模式中,則其一者或兩者的處理器的區域快取資訊可儲存在共用快取中。
晶片組1290可經由介面1296耦接至第一匯流排1216。在一實施例中,第一匯流排1216可為周邊組件互連(PCI;Peripheral Component Interconnect)匯流排,或像是快速PIC匯流排(PCI Express)或另一個第三代I/O互連匯流排,雖然本發明之範圍並不如此限制。
如在圖12中所繪示,各種I/O裝置1214可耦接至第一匯流排1216,連同將第一匯流排1216耦接至第二匯流排1220的匯流排橋1218。在一實施例中,一或多個額外的處理器1215,像是協同處理器、高處理量MIC處理器、GPGPU、加速器(例如像是圖形加速器或數位信號處理(DSP)單元)、場可編程閘陣列或任何其它處理器,係耦接至第一匯流排1216。在一實施例中,第
二匯流排1220可為低針腳數(LPC;low pin count)匯流排。在一實施例中,各種裝置可耦接至第二匯流排1220,例如包括鍵盤及/或滑鼠1222、通訊裝置1227和像是磁碟驅動或可包括指令/代碼及資料1230的其它大量儲存裝置的儲存單元1228。進一步,音頻I/O 1224可耦接至第二匯流排1220。注意,其它架構是可能的。例如,取代圖12之點對點架構的是,系統可實行多點下傳匯流排或其它這類架構。
現參照至圖13,所繪示的是依據本發明之實施例的第一更特定的示範性系統1300之方塊圖。在圖12及13中相似的元件承接相似的參考數字,並且圖12之某些態樣已從圖13省略,以為了避免模糊圖13之其它態樣。
圖13闡述處理器1270、1280可分別包括積體記憶體及I/O控制邏輯(「CL」)1272和1282。因此,CL 1272、1282包括積體記憶體控制器單元且包括I/O控制邏輯。圖13不只是闡述記憶體1232、1234耦接至CL 1272、1282,亦闡述I/O裝置1314也耦接至控制邏輯1272、1282。舊有的I/O裝置1315係耦接至晶片組1290。
現參照至圖14,所繪示的是依據本發明之實施例的SoC 1400之方塊圖。在圖10中相似的元件承接相似的參考數字。亦如是者,虛線框為在更先進的SoC上為可選的特徵。在圖14中,互連單元1402係耦接至:包括
成組的一或多個核心202A~N和共用的快取單元1006的應用處理器1410;系統代理器單元1010;匯流排控制器單元1016;積體記憶體控制器單元1014;可包括積體圖形邏輯、影像處理器、音訊處理器及視訊處理器的成組的一或多個協同處理器1420;靜態隨機存取記憶體(SRAM;static random access memory)單元1430;直接記憶體存取(DMA;direct memory access)單元1432;以及用於耦接至一或多個外部顯示器的顯示單元1440。在一實施例中,協同處理器1420包括專用處理器,例如像是網路或通訊處理器、壓縮引擎、GPGPU、高處理量MIC處理器、嵌入式處理器或類似者。
於此揭示之機制的實施例可以硬體、軟體、韌體或這類實行方法之結合來實行。本發明之實施例可實行為在包含至少一處理器、儲存系統(包括揮發性及非揮發性記憶體及/或儲存元件)、至少一輸入裝置及至少一輸出裝置的可編程系統上執行的電腦程式或程式碼。
程式代碼,像是在圖12中闡述的代碼1230,可應用到輸入指令,用以進行於此所述的功能且產生輸出資訊。輸出資訊可以已知的方式應用至一或多個輸出裝置。為了此應用的目的,處理系統包括具有處理器的任何系統,例如像是數位信號處理器(DSP)、微控制器、特定應用積體電路(ASIC;application specific integrated circuit)或微處理器。
程式碼可以高階程序或物件導向程式語言來
實行,用以與處理系統通訊。若想要的話,程式碼亦可以組合或機器語言來實行。事實上,於此說明的機制在範圍上並不限於任何特定的程式語言。在任何情形中,語言可為編譯的或解譯的語言。
至少一實施例之一或多個態樣可藉由在機器可讀媒體上儲存的代表性指令來實行,其代表在處理器內的各種邏輯,其當由機器讀取時,引起機器製造邏輯來進行於此所述的技術。這類的表示法,已知為「IP核心」,可儲存在有形、機器可讀媒體且供應至各種客戶或製造設施,用以載入到實際作成邏輯或處理器的製造機器。
這類機器可讀媒體可包括,但不限於:製造或由機器或裝置形成的物件之非暫態、有形配置,包括儲存媒體,像是硬碟、包括軟碟、光碟、壓縮磁碟唯讀記憶體(CD-ROM)、可複寫光碟(CD-RW)以及磁光碟(magneto-optical disk)的任何其它類型的磁碟,包括半導體裝置,像是唯讀記憶體(ROM)、諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)的隨機存取記憶體(RAM)、可抹除可編程唯讀記憶體(EPROM)、快閃記憶體、電可抹除可編程唯讀記憶體(EEPROM)、相變記憶體(PCM)、磁或光卡或合適用於儲存電子指令的其它任何類型的媒體。
據此,本發明之實施例亦包括非暫態、有形機器可讀媒體,其包含指令或包含設計資料,像是硬體描述語言(HDL;Hardware Description Language),其界定
結構、電路、設備、處理器及/或於此說明的系統特徵。這類實施例亦可稱為程式產品。
仿真(包括二進位轉譯、變碼(code morphing)等)
在一些情形中,可使用指令轉換器來將指令從來源指令集轉換到目標指令集。例如,指令轉換器可轉譯(例如使用靜態二進位轉譯、包括動態編譯的動態二進位轉譯)、形變、仿真或另以將指令轉換至要由核心處理的一或多個其它指令。指令轉換器可以軟體、硬體、韌體或其結合來實行。指令轉換器可在處理器上、處理器外,或部分在處理器上且部分在處理器外。
圖15為依據本發明之實施例對比用以將在來源指令集中的二進位指令轉換成在目標指令集中的二進位指令的軟體指令轉換器的使用之方塊圖。在闡述的實施例中,指令轉換器為軟體指令轉換器,雖然選替地,指令轉換器可以軟體、韌體、硬體或其各種結合來實行。圖15繪示在高階語言1502中的程式可使用x86編譯器1504來編譯,用以產生x86二進位碼1506,其可由具有至少一x86指令集核心的處理器1516來原生地執行。具有至少一x86指令集核心的處理器1516代表藉由相容地執行或另以處理以下列舉者而能實質進行與具有至少一x86指令集核心的英特爾處理器相同的功能:(1)英特爾x86指令集核心之指令集的實質部分,或(2)應用之物件碼版本或其它對準的軟體,用以在具有至少一x86指令集核心
的英特爾處理器上運行,以為了實質達成與具有至少一x86指令集核心的英特爾處理器相同的結果。該x86編譯器1504代表可操作以產生x86二進位碼1506(例如,物件碼)的編譯器,其在或不在額外的連結處理下,以至少一x86指令集核心1516來在處理器上執行。類似地,圖15繪示在高階語言1502中的程式可使用選替的指令集編譯器1508來編譯,用以產生選替的指令集二進位碼1510,其可在不具有至少一x86指令集核心1514下由處理器原生地執行(例如,具有執行加州桑尼維爾的MIPS技術之MIPS指令集及/或加州桑尼維爾的安謀控股之ARM指令集之核心的處理器)。指令轉換器1512係使用以將x86二進位碼1506轉換成不具有x86指令集核心1514下由處理器原生地執行的核心。此轉換碼不太可能與選替的指令集二進位碼1510相同,因為能夠這樣的指令轉換器是難以製作的;然而,轉換的碼將完成一般運算並且由來自選替的指令集的指令組成。因此,指令轉換器1512代表軟體、韌體、硬體或其結合,雖然仿真、模擬或任何其它過程允許處理器或其它不具有x86指令集處理器或核心的電子裝置執行x86二進位碼1506。
Claims (19)
- 一種設備,包含:執行電路,用以執行指令;複數個暫存器,用以儲存耦合至該執行電路的資料;以及效能監控電路,用以藉由至少判定在執行指令與先前執行的指令之間的位址衝突並且計數衝突之各個實例來進行位址衝突計數。
- 如申請專利範圍第1項的設備,其中該效能監控電路包含:位址衝突計數器,用以儲存衝突的各個實例之計數值;以及潛在衝突位址儲存器,用以儲存先前執行指令之位址;以及比較電路,用以作成執行的指令之位址對在潛在衝突位址儲存器中儲存之位址的比較。
- 如申請專利範圍第2項的設備,其中該效能監控電路更包含:特定模型暫存器,用以針對位址衝突計數組態該效能監控電路。
- 如申請專利範圍第2項的設備,其中該效能監控電路更包含:有限狀態機,用以追蹤在位址衝突計數期間指令之分組。
- 如申請專利範圍第1項的設備,其中該位址為寫入位址。
- 如申請專利範圍第1項的設備,其中該執行電路為純量。
- 如申請專利範圍第1項的設備,其中該執行電路為單一指令多重資料(SIMD)。
- 如申請專利範圍第1項的設備,其中該效能監控電路用以在迴圈之單一疊代之上進行位址衝突計數。
- 如申請專利範圍第1項的設備,其中該效能監控電路用以在迴圈之多重疊代之上進行位址衝突計數。
- 如申請專利範圍第1項的設備,其中該效能監控電路用以在由開始和停止指令所描繪的指令之分組之上進行位址衝突計數。
- 如申請專利範圍第1項的設備,其中該效能監控電路用以在由開始指令和指示用以在開始指令之後評估的指令之數目的值所描繪的指令之分組之上進行位址衝突計數。
- 一種方法,包含:執行第一指令;將該第一指令之位址儲存到潛在位址衝突儲存器中,該潛在位址衝突儲存器儲存先前執行的指令之位址;執行第二指令;判定該第二指令之位址匹配在該潛在位址衝突儲存器中的位址;以及 累加位址衝突計數器。
- 如申請專利範圍第13項的方法,其中在潛在位址衝突儲存器中儲存的位址是獨一的。
- 如申請專利範圍第13項的方法,更包含:輸出該位址衝突計數器的值。
- 如申請專利範圍第13項的方法,其中在潛在位址衝突儲存器中儲存的位址是一列表。
- 如申請專利範圍第13項的方法,其中該潛在位址衝突儲存器是內容可定址記憶體。
- 如申請專利範圍第13項的方法,其中該位址為寫入位址。
- 如申請專利範圍第13項的方法,其中該方法在處理器之效能監控電路中進行。
- 如申請專利範圍第13項的方法,其中該判定係藉由將該第二指令之位址與該潛在位址衝突儲存器之各個位址進行AND且將該AND的結果進行OR。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/984,115 US20170192791A1 (en) | 2015-12-30 | 2015-12-30 | Counter to Monitor Address Conflicts |
US14/984,115 | 2015-12-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201732569A true TW201732569A (zh) | 2017-09-16 |
TWI751125B TWI751125B (zh) | 2022-01-01 |
Family
ID=59225554
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105139274A TWI751125B (zh) | 2015-12-30 | 2016-11-29 | 用以監控位址衝突的計數器 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20170192791A1 (zh) |
EP (1) | EP3398072A4 (zh) |
CN (1) | CN108292269A (zh) |
TW (1) | TWI751125B (zh) |
WO (1) | WO2017117392A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113742252B (zh) * | 2020-05-28 | 2024-03-29 | 华为技术有限公司 | 一种检测内存乱序的方法及装置 |
JP2023079640A (ja) * | 2021-11-29 | 2023-06-08 | 富士通株式会社 | 演算処理装置および演算処理方法 |
US20230214217A1 (en) * | 2022-01-06 | 2023-07-06 | Maziar Goudarzi | Method and device for providing a vector stream instruction set architecture extension for a cpu |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4789925A (en) * | 1985-07-31 | 1988-12-06 | Unisys Corporation | Vector data logical usage conflict detection |
US5694577A (en) * | 1995-06-06 | 1997-12-02 | Matsushita Electric Industrial Co., Ltd. | Memory conflict buffer for achieving memory disambiguation in compile-time code schedule |
US6963964B2 (en) * | 2002-03-14 | 2005-11-08 | International Business Machines Corporation | Method and apparatus for detecting pipeline address conflict using parallel compares of multiple real addresses |
US7433803B2 (en) * | 2005-04-27 | 2008-10-07 | Freescale Semiconductor, Inc. | Performance monitor with precise start-stop control |
US8688957B2 (en) * | 2010-12-21 | 2014-04-01 | Intel Corporation | Mechanism for conflict detection using SIMD |
JP5762878B2 (ja) * | 2011-08-08 | 2015-08-12 | 株式会社東芝 | key−valueストアを有するメモリシステム |
US9575753B2 (en) * | 2012-03-15 | 2017-02-21 | International Business Machines Corporation | SIMD compare instruction using permute logic for distributed register files |
US20140075124A1 (en) * | 2012-09-07 | 2014-03-13 | International Business Machines Corporation | Selective Delaying of Write Requests in Hardware Transactional Memory Systems |
US9229745B2 (en) * | 2012-09-12 | 2016-01-05 | International Business Machines Corporation | Identifying load-hit-store conflicts |
US9665368B2 (en) * | 2012-09-28 | 2017-05-30 | Intel Corporation | Systems, apparatuses, and methods for performing conflict detection and broadcasting contents of a register to data element positions of another register |
US9842046B2 (en) * | 2012-09-28 | 2017-12-12 | Intel Corporation | Processing memory access instructions that have duplicate memory indices |
US9411584B2 (en) * | 2012-12-29 | 2016-08-09 | Intel Corporation | Methods, apparatus, instructions, and logic to provide vector address conflict detection functionality |
US9411592B2 (en) * | 2012-12-29 | 2016-08-09 | Intel Corporation | Vector address conflict resolution with vector population count functionality |
US9477603B2 (en) * | 2013-09-05 | 2016-10-25 | Facebook, Inc. | System and method for partitioning of memory units into non-conflicting sets |
US9710279B2 (en) * | 2014-09-26 | 2017-07-18 | Intel Corporation | Method and apparatus for speculative vectorization |
-
2015
- 2015-12-30 US US14/984,115 patent/US20170192791A1/en not_active Abandoned
-
2016
- 2016-11-29 TW TW105139274A patent/TWI751125B/zh active
- 2016-12-29 CN CN201680069933.3A patent/CN108292269A/zh active Pending
- 2016-12-29 EP EP16882662.6A patent/EP3398072A4/en not_active Withdrawn
- 2016-12-29 WO PCT/US2016/069214 patent/WO2017117392A1/en unknown
Also Published As
Publication number | Publication date |
---|---|
WO2017117392A1 (en) | 2017-07-06 |
TWI751125B (zh) | 2022-01-01 |
EP3398072A4 (en) | 2019-10-09 |
CN108292269A (zh) | 2018-07-17 |
EP3398072A1 (en) | 2018-11-07 |
US20170192791A1 (en) | 2017-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11645135B2 (en) | Hardware apparatuses and methods for memory corruption detection | |
JP6466388B2 (ja) | 方法及び装置 | |
US9710279B2 (en) | Method and apparatus for speculative vectorization | |
TWI715686B (zh) | 用於容錯及錯誤偵測之系統、方法和裝置 | |
US20140095828A1 (en) | Vector move instruction controlled by read and write masks | |
JP5806748B2 (ja) | 書き込みマスク・レジスタの末尾の最下位マスキング・ビットを判定するためのシステム、装置、および方法 | |
US20130297917A1 (en) | System and method for real time instruction tracing | |
JP2018500659A (ja) | 高速ベクトルによる動的なメモリ競合検出 | |
TWI751125B (zh) | 用以監控位址衝突的計數器 | |
US11169809B2 (en) | Method and apparatus for converting scatter control elements to gather control elements used to sort vector data elements | |
US10545757B2 (en) | Instruction for determining equality of all packed data elements in a source operand | |
US9207942B2 (en) | Systems, apparatuses,and methods for zeroing of bits in a data element |