TWI733717B - 從亂序處理器中的不良儲存-至-負載轉發復原的方法與設備 - Google Patents
從亂序處理器中的不良儲存-至-負載轉發復原的方法與設備 Download PDFInfo
- Publication number
- TWI733717B TWI733717B TW105138709A TW105138709A TWI733717B TW I733717 B TWI733717 B TW I733717B TW 105138709 A TW105138709 A TW 105138709A TW 105138709 A TW105138709 A TW 105138709A TW I733717 B TWI733717 B TW I733717B
- Authority
- TW
- Taiwan
- Prior art keywords
- load
- instruction
- command
- hardware
- memory
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 16
- 230000015654 memory Effects 0.000 claims abstract description 108
- 238000003860 storage Methods 0.000 claims description 44
- 238000001514 detection method Methods 0.000 claims description 13
- 238000012795 verification Methods 0.000 claims description 13
- 230000004048 modification Effects 0.000 claims description 10
- 238000012986 modification Methods 0.000 claims description 10
- 230000004044 response Effects 0.000 claims description 9
- 230000001419 dependent effect Effects 0.000 claims description 3
- 238000012790 confirmation Methods 0.000 claims 1
- 238000002372 labelling Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 23
- 238000013519 translation Methods 0.000 description 15
- 238000007667 floating Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 9
- 230000007246 mechanism Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 239000003795 chemical substances by application Substances 0.000 description 5
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 239000000872 buffer Substances 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 239000012536 storage buffer Substances 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000004907 flux Effects 0.000 description 1
- 238000012432 intermediate storage Methods 0.000 description 1
- 230000005055 memory storage Effects 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
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
Images
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/30181—Instruction operation extension or modification
- G06F9/30185—Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
-
- 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/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
-
- 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
- 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/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3865—Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
於此描述檢測在亂序處理器中的不正確記憶體相依推測與自其復原的設備與方法的實施例。例如,一方法實施例包含:執行第一負載指令;在執行時,檢測何時該第一負載指令經歷不良儲存-至-負載轉發事件;追蹤於執行時由該第一負載指令所經歷的不良儲存-至-負載轉發事件的發生;根據所追蹤的發生,控制在該第一負載指令中之S-位元的致能;回應於在該第一負載指令中之致能S-位元,產生多數負載指令,其中該多數負載指令的執行產生等效於該第一負載指令執行所產生的結果。
Description
本發明大致關係於電腦處理器的領域。更明確地說,本發明關係於從亂序處理器中的不良儲存-至-負載轉發復原的設備與方法。
在管線執行系統中,指令被擷取、解碼與推測地執行。例如重排序記憶體運算(例如,將負載提升至較舊儲存之上)、移除重複負載指令、及使用儲存-至-負載轉發的技術已經證明對改良亂序(OoO)微處理器的效能為很有效的機制。有關於指令的推測執行為要被觀察的規則及檢測這些規則何時被違反的機制,使得適當校正手段可以被採用。另外,如果某些指令(例如,不良負載)的結果可以在被執行前被預測,則也是有利的。
例如,在儲存-至-負載轉發的情況下,現行實施法典型被限制為只有全重疊儲存/負載存取,其中較舊
儲存緩衝器登錄項完全覆蓋為較新負載指令所讀取的記憶體的區域。當儲存/負載存取只重疊一部份或者為不同大小,使得較新負載指令想要存取未為較舊儲存緩衝器登錄項所覆蓋的記憶體區域時,儲存-至-負載轉發機制將失敗。這經常造成處理器失速直到違反狀況被清除為止,這狀況隨後造成效能的劣化。再者,由於不良儲存-至-負載轉發發生並沒有歷史或作記憶體保存,因此,不良負載指令只有當儲存緩衝器中之查找在執行時間被執行時才會被檢測到。這經常造成不必要/複製的查找並花用原本可以避免的額外電力與效能成本。
100‧‧‧執行核心管線
102‧‧‧前端硬體
104‧‧‧分割器電路
106‧‧‧執行引擎硬體
108‧‧‧檢測電路
110‧‧‧預測電路
112‧‧‧退役硬體
202‧‧‧來自二進制轉譯器的碼
204‧‧‧轉譯快取
206‧‧‧擷取指令
208‧‧‧S-位元=0?
210‧‧‧執行指令
212‧‧‧不良儲存-至-負載轉發
214‧‧‧止用
216‧‧‧分割指令
218‧‧‧執行分割指令
220‧‧‧更新S-位元=1
302‧‧‧來自二進制轉譯器的碼
304‧‧‧轉譯快取
306‧‧‧擷取指令
308‧‧‧S=0
310‧‧‧執行指令
312‧‧‧不良儲存-至-負載轉發
314‧‧‧退役
316‧‧‧分割指令
318‧‧‧執行分割指令
320‧‧‧在CAM中之指令
322‧‧‧在CAM中建立登錄項
324‧‧‧計數器增量
326‧‧‧計數器<臨限值?
328‧‧‧更新S-位元=1
602‧‧‧執行負載指令
604‧‧‧加入負載指令並標記為保護
606‧‧‧接收/執行儲存指令
608‧‧‧廣播儲存指令至硬體混淆表
610‧‧‧檢查所有已保護負載指令的儲存指令
612‧‧‧混淆存取
614‧‧‧清除保護負載指令
616‧‧‧提出問題並採取校正手段
890‧‧‧核心
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‧‧‧資料TLB硬體
874‧‧‧資料快取硬體
876‧‧‧第二階快取硬體
900‧‧‧處理器
902A-N‧‧‧核心
906‧‧‧共享快取硬體
908‧‧‧整合圖形邏輯
910‧‧‧系統代理硬體
912‧‧‧環為主互連硬體
914‧‧‧整合記憶體控制器硬體
916‧‧‧匯流排控制器硬體
1000‧‧‧系統
1010‧‧‧處理器
1015‧‧‧處理器
1020‧‧‧控制器集線器
1040‧‧‧記憶體
1045‧‧‧共處理器
1050‧‧‧IOH
1060‧‧‧輸入/輸出裝置
1090‧‧‧GMCH
1100‧‧‧系統
1114‧‧‧I/O裝置
1115‧‧‧處理器
1116‧‧‧第一匯流排
1118‧‧‧匯流排橋接器
1120‧‧‧第二匯流排
1127‧‧‧通訊裝置
1128‧‧‧儲存硬體
1130‧‧‧碼及資料
1132‧‧‧記憶體
1134‧‧‧記憶體
1138‧‧‧共處理器
1139‧‧‧高效介面
1150‧‧‧點對點互連
1152‧‧‧點對點互連
1170‧‧‧第一處理器
1172‧‧‧整合記憶體控制器硬體
1176‧‧‧點對點介面
1178‧‧‧點對點介面
1180‧‧‧第二處理器
1182‧‧‧整合記憶體控制器硬體
1186‧‧‧P-P介面
1188‧‧‧P-P介面
1190‧‧‧晶片組
1192‧‧‧介面
1194‧‧‧點對點介面電路
1196‧‧‧介面
1154‧‧‧點對點介面
1198‧‧‧點對點介面電路
1200‧‧‧系統
1214‧‧‧I/O裝置
1215‧‧‧I/O裝置
1300‧‧‧系統晶片
1302‧‧‧互連硬體
1310‧‧‧應用處理器
1320‧‧‧共處理器
1330‧‧‧SRAM硬體
1332‧‧‧DMA硬體
1340‧‧‧顯示硬體
1402‧‧‧高階語言
1404‧‧‧x86編譯器
1406‧‧‧X86二進制碼
1408‧‧‧指令集編譯器
1410‧‧‧指令集二進制碼
1412‧‧‧指令轉換器
1414‧‧‧x86指令集核心
1416‧‧‧x86指令集核心
本發明的較佳了解可以由以下詳細說明配合附圖加以取得,其中:圖1為依據本發明一實施例之執行核心的方塊圖;圖2為依據一實施例之本發明的運算與邏輯的流程圖;圖3為利用依據一實施例之CAM表的本發明的運算與邏輯的流程圖;圖4A為依據實施例之CAM表;圖4B為一CAM表,其利用依據一實施例之臨限值欄位;圖5A為依據一實施例之具有去能S-位元的負
載指令;圖5B為依據一實施例之具有致能S-位元的負載指令;圖6為依據一實施例之用以實現硬體混淆表的運算與邏輯方塊圖;圖7為依據一實施例之例示硬體混淆表;圖8A為依據本發明實施例之例示循序管線與例示暫存器重命名亂序派發/執行管線兩者的方塊圖;圖8B為予以包含在依據本發明實施例之處理器中的循序架構核心的例示實施例與例示暫存器重命名亂序派發/執行架構核心的方塊圖;圖9為單一核心處理器及依據本發明實施例之具有整合記憶體控制器與圖形的多核心處理器的方塊圖;圖10為依據本發明一實施例之系統的方塊圖;圖11為依據本發明實施例之第二系統的方塊圖;圖12為依據本發明實施例之第三系統的方塊圖;圖13為依據本發明實施例之系統晶片(SoC)的方塊圖;第14圖為依據本發明實施例之針對使用軟體指令轉換器以將於源指令集中的二進制指令轉換為目標指
令集中的二進制指令的方塊圖。
在以下說明中,為了解釋目的,各種特定細節係被描述以對以下所述本發明實施例提供完整的了解。然而,明顯地,熟習於本技藝者了解,本發明之實施例可以在沒有部份的這些特定細節下加以實現。在其他實例中,已知結構與裝置係被以方塊圖形式顯示,以避免模糊本發明實施例所內藏的原理。
在整個說明書中所提之"一實施例"或"實施例"表示有關包含在本發明的至少一實施例中的實施例有關的特定特性、結構或特徵。因此,在本說明書中各處所出現的用語"在一實施例中"或"在實施例中"並不必然所有表示相同的實施例。再者,特定特性、結構或特徵可以在一或更多實施例中,以任何適當方式組合。為了清楚起見,在此圖中的個別元件可以以其圖中之標示加以表示,而不是為特定元件符號所表示。
於此描述,用以檢測在亂序處理器中的不正確記憶體相依推測並自其復原的設備與方法實施例。藉由預測違反負載指令應否分割成兩或更多指令,以匹配儲存指令的存取大小,一實施例可以降低由於不完全重疊的儲存/負載存取或失配存取大小所造成的不良儲存-至-負載轉發發生。依據一實施例,不良儲存-至-負載轉發發生的歷史係被維持,以致能有效預測並在其造成不良儲存-至-負
載轉發事件前識別違反的負載指令。例如,S-位元可以併入每一負載指令,以指出給定負載指令應否在管線的前端被分割。開始時,S-位元被去能(即,設定至0)。當檢測到不良儲存-至-負載轉發問題時,異常被提出,使得在違反負載指令中的該S-位元致能(即,設定至1)。致能S-位元表示負載指令應在管線的前端被分割,以避免造成另一不良儲存-至-負載轉發事件的風險。因此,當下次執行相同負載指令時,其將在管線的前端被分割,以匹配在儲存佇列中之前一執行儲存指令的存取大小。
圖1為依據本發明實施例之執行核心管線100的方塊圖。核心100包含耦接至執行引擎硬體106的前端硬體102,執行引擎硬體106係耦接至預測電路110與退役硬體112。前端硬體102提供予以執行的指令給執行硬體106。在一實施例中,前端硬體102更包含二進制轉譯器(BT),其將源碼轉譯為暫存器指令並將所轉譯指令快取於轉譯快取中。在一實施例中,分割器電路104係被包含於前端硬體102中,用以分割指令。在另一實施例(未例示)中,分割器電路104為耦接至前端硬體102與執行引擎硬體106的分開硬體。當"標記"(例如,S-位元=1)指令在前端硬體102中接收或檢測到時,分割器電路104根據該"標記"指令,藉由產生兩或更多替代指令而反應地分割該"標記"指令。當執行引擎硬體106個別執行時,兩或更多替代指令產生結果,當合併時係等效於由執行該"標記"指令所造成的結果。
執行引擎硬體106被耦接以自前端硬體102接收指令。在一實施例中,執行引擎硬體106包含檢測電路108,用以檢測不良儲存-至-負載轉發事件。在另一實施例(未示出)中,檢測電路108為耦接至執行引擎硬體106與預測電路110的分開硬體。檢測電路108於負載指令執行期間檢測到不良儲存-至-負載轉發事件發生時,回應地對預測電路110指示該發生。耦接以自檢測電路108接收指示的預測電路110追蹤不良儲存-至-負載轉發事件的發生並預測是否給定指令應在其下一次執行時在前端中分割。
圖2為依據一實施例之本發明的運算與邏輯的流程圖。在方塊202中,在前端硬體中的二進制轉譯器將源碼轉譯為指令,例如負載與儲存。去能S-位元(例如,S=0)被加至各個指令中。在方塊204中,轉譯指令被儲存於轉譯快取中。在方塊206中,例如負載之指令係由轉譯快取擷取得到。在方塊208中,分割器電路檢查是否所擷取指令的S位元被致能。如果S-位元未被致能(例如,S=0),則執行硬體在方塊210中執行指令。在方塊212中,檢測電路檢測是否不良儲存-至-負載轉發事件由於執行該指令而發生。在未檢測出不良儲存-至-負載轉發事件時,在方塊214中,該指令被止用及該執行的結果被確定並寫回至快取/記憶體。然而,如果在方塊212中檢測到不良儲存-至-負載轉發事件,則執行結果被清除並指示該發生,並與該指令一起被送至預測電路。在方塊220
中,該預測電路回應於此藉由致能指令的S-位元(例如,設定S=1)而更新該指令。在方塊204中,具有致能S-位元之更新的指令然後被重新插入該轉譯快取中。隨後,所更新指令在方塊206中再次被擷取。在方塊208中,更新指令的S-位元被檢查。這時因為該更新指令的S-位元被致能(例如,S=1),所以在方塊216中,更新指令被分割為一或更多替代指令。在方塊218中,各個替代指令係為執行引擎電路所執行。在方塊214中,所執行替代指令被止用及其結果被確定或寫回至快取/記憶體。
圖3為類似於圖2的流程圖,例示依據另一實施例之本發明的運算與邏輯。然而,不像圖2,內容可定址記憶體(CAM)查找表係為圖3的預測電路所實施。在方塊302中,在前端硬體中的二進制轉譯器將源碼轉譯為指令。去能S-位元(例如,S=0)被加至該等指令。在方塊304中,包含S-位元的指令係被儲存於轉譯快取中。在方塊306中,例如負載的指令係被由轉譯快取中擷取得到。在方塊308中,分割器電路檢查是否所擷取的指令之S-位元被致能。如果S-位元並未被致能(例如,S=0),則在方塊310中,執行硬體執行所述指令。在方塊312中,檢測電路檢測是否不良儲存-至-負載轉發事件在指令執行期間發生。當未發現檢測有不良的儲存-至-負載轉發事件時,在方塊314中,所執行指令被止用並且來自該執行的結果確定或寫回至快取/記憶體。然而,如果不良儲存-至-負載轉發事件在方塊312中被檢出,則來自指令的執行結果被
清除及該指令與發生的指示一起被送至預測電路。在方塊320中,預測電路決定是否指令在CAM表中具有對應登錄項。如果在CAM中並未找到匹配登錄項,則在方塊322中,對應於該指令的新登錄項可以被建立在CAM表中。新登錄項包含啟始被設定為0的計數器。再者,在方塊324中,對應於該指令的登錄項的計數器增量。在方塊326中,計數器被與有關於該登錄項的預定臨限值相比。依據一實施例,該預定臨限值可以與在CAM表中的各個登錄項不同。或者,依據另一實施例,預定臨限可以與所有CAM登錄項相同。如果增量計數器超出預定臨限值,則在方塊328中,對應於該登錄項的指令之S-位元致能(例如,設定S=1)。更新的指令然後被送至轉譯快取並被儲存於其中。另一方面,如果增量計數器並未超出預定臨限值,則該指令被重新插入該轉譯快取中,而不再採行其他動作。
隨後,更新的指令在方塊306中再次被擷取予以被執行。在方塊308中,指令的S-位元被檢查。如果更新指令的S-位元致能(例如,S=1),則在方塊316中,更新指令係被分割成一或更多替代指令。在方塊318中,各個替代指令係為執行引擎電路所執行。在方塊314中,所執行替代指令被止用並且其結果被確定或寫回至快取/記憶體。
圖4A例示依據一實施例之CAM表。儲存於CAM表中的各個指令具有相關計數器,用以追蹤為該指
令所經歷的不良儲存-至-負載轉發事件的數目。在另一實施例中,如圖4B所例示,CAM表更包含用於各個表登錄項的臨限欄位,用以儲存有關於在CAM表中之各個指令的臨限值。該臨限值決定在指令的S-位元被致能前,為負載指令所經歷的不良儲存-至-負載轉發事件的最大(或最小)數量。圖5A及圖5B例示包含該S-位元的例示負載指令。用於負載指令的S-位元在圖5A中被去能(設定至0)及在圖5B中致能(被設定至1)。
在另一實施例中,硬體混淆表被實施,以追蹤推測提升負載指令並驗證其所有儲存指令有關記憶體存取重疊或混淆。在一實施例中,軟體機制識別所有需要額外驗證的推測指令並且將其資訊傳送給硬體元件作為在碼中之註解。硬體元件然後依據所注解的碼在執行時間執行正確性檢查。依據該實施例,各個未能在靜態證明安全的推測記憶體存取(即負載或儲存指令)進入硬體混淆表並被標記為"保護"指令。各個修改記憶體位置的指令(即儲存指令)都被檢查所有作動保護的指令有關記憶體存取重疊(混淆)。如同以下所詳述,各個界定混淆集合邊界(即保護範圍)的執行儲存指令清除在該混淆集合內的所有指令之"保護"狀態。已經被清除"保護"狀態的指令被視為安全並在該硬體混淆表中變成不動作。依據一實施例,在該混淆表中的各個負載指令以及界定該混淆集合的相關儲存指令將包含額外的註解,以識別保護狀態與混淆集合資訊。註解可以以軟體或硬體完成。在一實施例中,註解為在前端
硬體中之二進制轉譯器所加至所述指令。
各個混淆集合包含一群推測記憶體存取(即負載指令),並被記憶體修改指令(即儲存指令)所定義。依據一實施例,各個混淆集合係為在所有儲存指令中之其上有一或更多記憶體存取(即負載指令)推測的最新儲存所定義。例如,考量以下的碼片段:
1)st %r1,[%r2]
2)ld %r3,[%r4]
3)st %r5,[%r5]
4)st %r6,[%r7]
5)ld %r8,[%r5+4]
6)ld %r9,[%r6+3]
當推測提升所有負載指令於儲存指令上時,負載指令2將推測於儲存指令1上及負載指令5及6將推測於儲存指令1、3及4之上,造成:
2)ld %r3,[%r4]
5)ld %r8,[%r5+4]
6)ld %r9,[%r6+3]
1)st %r1,[%r2]
3)st %r5,[%r5]
4)st %r6,[%r7]
因此,因為指令1為唯一被指令2所推測的記憶體修改指令(即儲存指令),所以指令2屬於有關於邊界定義指令1的混淆集合。因為指令4為指令5及6所推
測的所有儲存指令(即指令1、3及4)中之最新者,所以,指令5及6屬於有關於邊界定義指令4的混淆集合。因為如果這些指令已經依序加以執行,指令4在該順序中較後執行,所以,指令4為指令1、3及4中之最新者。推測提升指令2、5及6將因此建立兩混淆集合,各個係有關於定義該混淆集合的儲存指令。
2)ld %r3,[%r4]--混淆集合0
5)ld %r8,[%r5+4]--混淆集合1
6)ld %r9,[%r6+3]--混淆集合1
1)st %r1,[%r2]--定義混淆集合0
3)st %r5,[%r5]
4)st %r6,[%r7]--定義混淆集合1
如上所述,提升負載將被保護及混淆-集合-定義儲存的執行將清除在混淆集合中之提升負載的該保護。各個中介儲存(例如指令3)也將被檢查所有動作保護負載的記憶體重疊或混淆。所得註解碼如下:
2)ld.p.0 %r3,[%r4]--混淆集合0
5)ld.p.1 %r8,[%r5+4]--混淆集合1
6)ld.p.1 %r9,[%r6+3]--混淆集合1
1)st.c1.0 %r1,[%r2]--定義混淆集合0
3)st %r5,[%r5]
4)st.c1.1 %r6,[%r7]--定義混淆集合1
".p"註解表示保護及".c1"表示清除。有關於註解的數目表示有關於該運算的混淆集合。
圖6為依據實施例之本發明的運算與邏輯的方塊圖。在方塊602,執行引擎硬體推測執行所有負載指令。在方塊604,不能靜態證明安全的各個推測執行負載指令係被標記為"保護"指令並加入至硬體混淆表。在方塊606,執行引擎接收並執行儲存指令。在方塊608,已執行的儲存指令被傳送硬體混淆表。在方塊610,硬體混淆表接收儲存指令並檢查在該表中的所有"保護"負載的可能記憶體存取重疊(混淆)。在方塊612,對是否檢測到任何存取重疊(混淆)作出決定。如果未檢測到此違規,則在方塊614中,與已執行儲存指令在相同混淆集合中的保護負載指令被清除。如果沒有有關於已執行儲存指令的混淆資訊,例如中介儲存(例如,上例中之指令3),則沒有保護負載指令被清除。然而,如果在612檢出存取重疊(混淆),則在方塊616中,故障或中斷被報告給前端硬體,作為具有一特定信號的分裂。回應於接收到分裂信號,前端硬體採取校正手段,例如,再轉譯沒有特定推測的碼,以防止未來相同的混淆故障。
圖7為依據一實施例之例示硬體混淆表。各個表登錄項對應於需要進一步校正驗證的推測執行負載指令。為該負載指令所存取的實體與邏輯位址,及該指令所屬之混淆集合係被儲存於該登錄項內。各個登錄項更包含"保護"欄位,用以表示對應指令應否再次檢查儲存指令。當登錄項被首先插入該表中時,"保護"欄位被致能或標記(即設定為1)。隨後,因為推測執行負載指令係為定義儲
存指令的混淆集合所驗證與清除,所以,"保護"欄位被去能或者未標記(即,設定為0)。具有"保護"欄位被去能的登錄項變成不動作並且不再需要驗證後續儲存。有關於未動作登錄項的負載指令被視為安全。
圖8A為例示循序管線與依據本發明實施例之例示暫存器重命名亂序派發/執行管線兩者的方塊圖。圖8B為循序架構核心的例示實施例與依據本發明實施例之予以包含在處理器中之例示暫存器重命名亂序派發/執行架構核心兩者的方塊圖。圖8A-B中之實線方塊例示循序管線與循序核心,而選加的虛線方塊表示暫存器重命名亂序派發/執行管線與核心。假設循序態樣為亂序態樣的子集,將描述亂序態樣。
在圖8A中,處理器管線800包含擷取級802、長度解碼級804、解碼級806、配置級808、重命名級810、排程(也稱為派發或發出)級812、暫存器讀取/記憶體讀取級814、執行級816、寫回/記憶體寫入級818、異常處置級822、及確定級824。
圖8B顯示處理器核心890,其包含耦接至執行引擎硬體850的前端硬體830,及兩者均耦接至記憶體硬體870。核心890可以為精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、很長指令字元(VLIW)核心、或混合或替代核心類型。在另一選擇中,核心890可以為特殊目的核心,例如,網路或通訊核心、壓縮引擎、共處理器核心、通用計算圖形處理單元(GPGPU)核心、圖形核
心或類似物。
前端硬體830包含分支預測硬體832,耦接至指令快取硬體834,其係耦接至指令轉譯旁看緩衝器(TLB)836,其係耦接至指令擷取硬體838,其係耦接至解碼硬體840。解碼硬體840(或解碼器)可以解碼指令,並產生一或更多微運算、微碼登錄點、微指令、其他指令、或其他控制信號作為輸出,這些係由原始指令所解碼、或以其他方式反射、或衍生。解碼硬體840可以使用各種不同機制加以實施。適當機制的例子包含但並不限於查找表、硬體實施法、可程式邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等等。在一實施例中,核心890包含微碼ROM或用以儲存用於某些巨指令(例如,在解碼硬體840中或以其他方式在前端硬體830內)的微碼的其他媒體。解碼硬體840係耦接至在執行引擎硬體850內的重命名/配置器硬體852。
執行引擎硬體850包含耦接至退役硬體854及一組一或更多排程器硬體856的重命名/配置器硬體852。排程器硬體856代表任何數量的不同排程器,包含保留台、中央指令窗等等。排程器硬體856被耦接至實體暫存器檔案硬體858。各個實體暫存器檔案硬體858代表一或更多實體暫存器檔案、其不同者係儲存一或更多不同資料類型,例如,純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如,指令指標為下一個予以執行的指令的位址)等等。在一實施例中,實體
暫存器檔案硬體858包含向量暫存器硬體、寫入遮罩暫存器硬體及純量暫存器硬體。這些暫存器硬體可以提供架構向量暫存器、向量遮罩暫存器及通用暫存器。實體暫存器檔案硬體858係為退役硬體854所重疊,以例示可以在其中執行暫存器重命名及亂序執行的各種方式(例如,使用重排序緩衝器及退役暫存器檔案;使用未來檔案、歷史緩衝器、及退役暫存器檔案;使用暫存器圖及一池暫存器等等)。退役硬體854及實體暫存器檔案硬體858係耦接至執行叢集860。執行叢集860包含一組一或更多執行硬體862及一組一或更多記憶體存取硬體864。執行硬體862可以執行各種運算(例如,移位、加、減、乘)並針對各種類型資料(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)。雖然一些實施例可以包含若干專用於特定函數或函數組的執行硬體,但其他實施例也可以包含只有一執行硬體或多數執行硬體,其所有執行所有函數。排程器硬體856、實體暫存器檔案硬體858、及執行叢集860係被顯示為可能是多數,因為某些實施例建立分開管線用於某些類型的資料/運算(例如,純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線、及/或記憶體存取管線,其各個具有其本身排程器硬體、實體暫存器檔案硬體、及/或執行叢集-及在分開的記憶體存取管線中,某些實施係被實施,其中只有此管線的執行叢集具有記憶體存取硬體864)。應了解的是,當使用分開管線時,一或更多這些管線可以為亂序發出/執行及其他為循
序。
該組記憶體存取硬體864係耦接至記憶體硬體870,其包含資料TLB硬體872,耦接至耦接至第二階(L2)快取硬體876的資料快取硬體874。在一例示實施例中,記憶體存取硬體864可以包含負載硬體、儲存位址硬體、及儲存資料硬體,其各個被耦接至記憶體硬體870中之資料TLB硬體872。該指令快取硬體834被進一步耦接至記憶體硬體870中之第二階(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指令集(及已經加入較新版的一些擴充版);美國加州的Sunnyvale的MIPS科技的MIPS指令集;美國加州的
Sunnyvale的ARM控股的ARM指令集(具有例如NEON的選用額外擴充版),包含於此所述之指令。在一實施例中,核心890包含邏輯,用以支援緊縮資料指令集擴充(例如,AVX1、AVX2、及/或一些形式之上位向量友善指令格式(U=0及/或U=1)如上述,藉以允許為很多多媒體應用所用的運算被使用緊縮資料加以執行。
應了解的是,核心可以支援多線程(執行兩或更多並列組的運算或線程),並也可以以各種方式如此作,包含時間切割多線程、同時多線程(其中,單一實體核心提供邏輯核心給實體核心為同時多線程的各個線程),或其組合(例如,時間切割擷取及解碼並且隨後同時多線程,例如於英特爾®的Hyperthreading技術中)。
雖然暫存器重命名係以亂序執行的情況下加以說明,但應了解的是,暫存器重命名也可以用於循序架構中。雖然處理器的例示實施例也包含分開的指令與資料快取硬體834/874與共享L2快取硬體876,但替代實施例也可以具有單一內部快取,用於指令與資料兩者,例如,第一階(L1)內部快取、或多個階之內部快取。在一些實施例中,系統可以包含內部快取與外部快取的組合,外部快取係為核心及/或處理器的外部。或者,所有的快取可以在核心及/或處理器的外部。
圖9為處理器900的方塊圖,其依據本發明實施例可以具有一個以上的核心,可以具有整合記憶體控制,並可以具有整合圖形。圖9中之實線方塊例示處理器
900具有單一核心902A、系統代理910、一組一或更多匯流排控制器硬體916,而虛線方塊的選加則例示替代處理器900,其具有多核心902A-N、一組一或更多整合記憶體控制器硬體914在系統代理硬體910中、及特殊目的邏輯908。
因此,處理器900的不同實施法可以包含:1)具有特殊目的邏輯908為整合圖形及/或科學(通量)邏輯的CPU(其可以包含一或更多核心),及核心902A-N為或一更多通用核心(例如,通用循序核心、通用亂序核心、兩者之組合);2)具有核心902A-N的共處理器,核心902A-N為大數量的特殊目的核心,主要用於圖形及/或科學(通量);及3)具有核心902A-N的共處理器,核心902A-N為大數量的通用循序核心。因此,處理器900可以為通用處理器、共處理器或特殊目的處理器,例如,網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高通量多整合核心(MIC)共處理器(包含30或更多核心)、嵌式處理器或類似物。處理器可以實施於一或更多晶片上。處理器900可以使用若干製程技術之任一,例如BiCMOS、CMOS或NMOS為一或更多基板的一部份及/或實施在一或更多基板上。
記憶體架構包含在該等核心內的一或更多階的快取、一組或一或更多共享快取硬體906、及耦接至該組整合記憶體控制器硬體914的外部記憶體(未示出)。該組共享快取硬體906可以包含一或更多中階快取,例如第
二階(L2)、第三階(L3)、第四階(L4)或其他階的快取、最後階快取(LLC)、及/或其組合。雖然在一實施例中,環為主的互連硬體912互連整合圖形邏輯908、該組共享快取硬體906、及系統代理硬體910/整合記憶體控制器硬體914,但替代實施例也可以使用任何數量的已知技術用於互連這些硬體。在一實施例中,在一或更多快取硬體906與核心902A-N間的一致性被維持。
在一些實施例中,一或更多核心902A-N能作多線程。系統代理910包含這些元件,協調與操作核心902A-N。系統代理硬體910可以包含例如電源控制單元(PCU)及一顯示器硬體。PCU可以為邏輯與元件或包含邏輯與元件,其係調整核心902A-N與整合圖形邏輯908的電力狀態所需者。顯示器硬體係用以驅動一或更多外部連接的顯示器。
核心902A-N以架構指令集看來可以為同質或異質;即,兩或更多核心902A-N可以執行相同指令集,而其他可以僅執行該指令集的次組或不同指令集。在一實施例中,核心902A-N為異質並包含下述之"小"核心與"大"核心。
圖10-13為例示電腦架構的方塊圖。用於在膝上型、桌上型、手持PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、開關、嵌式處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、手機、攜帶式媒體播放器、手持裝
置、及各種其他電子裝置的本技藝中已知的其他系統設計及架構也是適當的。通常,能夠加入其他在此所揭示的處理器及/或其他執行邏輯的大量各種系統或電子裝置通常係合適的。
現參考圖10,顯示依據本發明一實施例之系統1000的方塊圖。系統1000可以包含一或更多處理器1010、1015,其被耦接至控制器集線器1020。在一實施例中,控制器集線器1020包含圖形記憶體控制器集線器(GMCH)1090及輸入/輸出集線器(IOH)1050(其可以是在分開晶片上);GMCH 1090包含對所耦接記憶體1040及共處理器1045的記憶體及圖形控制器;IOH 1050係將輸入/輸出(I/O)裝置1060耦接至GMCH 1090。或者,記憶體及圖形控制器之一或兩者係整合在處理器(如此所述)內,記憶體1040及共處理器1045係直接耦接至處理器1010,及控制器集線器1020係在具有IOH 1050的單一晶片內。
額外處理器1015的選用本質係以虛線被表示於圖10中。各個處理器1010、1015可以包含於此所述之一或更多處理核心,並可以具有一些版本的處理器900。
記憶體1040可以例如為動態隨機存取記憶體(DRAM)、相變記憶體(PCM)、或兩者的組合。對於至少一實施例,控制器集線器1020與處理器1010、1015透過例如前側匯流排(FSB)之多投匯流排、點對點介面、或類型連接1095通訊。
在一實施例中,共處理器1045為特殊目的處
理器,例如,高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌式處理器或類似物。在一實施例中,控制器集線器1020可以包含一整合圖形加速器。
以頻譜度量表示在實體資源1010、1015間有各種差異,包含架構、微架構、熱、電力消耗特性及類似物。
在一實施例中,處理器1010執行控制一般類型的資料處理運算的指令。內藏在該等指令內的可以為共處理器指令。處理器1010認出這些共處理器指令為應為附著共處理器1045所執行的類型。因此,處理器1010發出這些共處理器指令(或代表共處理器指令的控制信號)在共處理器匯流排或其他互連上,給共處理器1045。共處理器1045接受及執行所接收的共處理器指令。
現參考圖11,顯示依據本發明實施例之第一更特定例示系統1100的方塊圖。如圖11所示,多處理器系統1100為點對點互連系統,並包含第一處理器1170及第二處理器1180,經由點對點互連1150耦接。各個處理器1170及1180可以為處理器900的一些版本。在本發明之一實施例中,處理器1170及1180係分別為處理器1010及1015,而共處理器1138為共處理器1045。在另一實施例中,處理器1170及1180分別為處理器1010及共處理器1045。
處理器1170及1180係被顯示分別包含整合
記憶體控制器(IMC)硬體1172及1182。處理器1170也包含其匯流排控制器硬體點對點(P-P)介面1176及1178的一部份;類似地,第二處理器1180包含P-P介面1186及1188。處理器1170、1180可經由點對點(P-P)介面1150使用P-P介面電路1178、1188交換資訊。如圖11所示,IMC 1172及1182將這些處理器耦接至個別記憶體,即記憶體1132及記憶體1134,其可以為本地附著至個別處理器的主記憶體的部份。
處理器1170、1180可以各個經由個別P-P介面1152、1154使用點對點介面電路1176、1194、1186、1198與晶片組1190交換資訊。晶片組1190可以選用地與共處理器1138經由高效介面1139交換資訊。在一實施例中,共處理器1138為特殊目的處理器,例如,高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌式處理器或類似物。
共享快取(未示出)可以包含在任一處理器內或在兩處理器之外,同時,經由P-P互連與處理器連接,使得如果處理器置於低功率模式時,任一或兩處理器的本地快取資訊可以被儲存在共享快取中。
晶片組1190可以經由介面1196耦接至第一匯流排1116。在一實施例中,第一匯流排1116可以為週邊元件互連(PCI)匯流排,或例如PCI加速匯流排或另一第三代I/O互連匯流排的匯流排,但本發明的範圍並不限於此。
如於圖11所示,各種I/O裝置1114可以耦接至第一匯流排1116,並具有匯流排橋接器1118,其將第一匯流排1116耦接至第二匯流排1120。在一實施例中,一或更多額外處理器1115,例如,共處理器、高通量MIC處理器、GPGPU的加速器(例如,圖形加速器或數位信號處理器(DSP)硬體)、場可程式閘陣列、或任何其他處理器,其係耦接至第一匯流排1116。在一實施例中,第二匯流排1120可以為低接腳計數(LPC)匯流排。在一實施例中,各種裝置可以耦接至第二匯流排1120,包含例如鍵盤及/或滑鼠1122、通訊裝置1127及儲存硬體1128,例如磁碟機或其他大量儲存裝置,其可以包含指令/碼與資料1130。再者,音訊I/O 1124可以耦接至第二匯流排1120。注意,其他架構也有可能。例如,不同於圖11的點對點架構,系統也可以實施多投匯流排或其他此等架構。
現參考圖12,顯示依據本發明實施例之第二更特定例示系統1200的方塊圖。在圖11及12中之類似元件係有類似元件符號,及圖11的某些態樣已經由圖12中省略,以避免模糊圖12的其他態樣。
圖12例示處理器1170、1180可以分別包含整合記憶體及I/O控制邏輯(CL)1172及1182。因此,CL 1172、1182包含整合記憶體控制器硬體及包含I/O控制邏輯。圖12例示不只是記憶體1132、1134耦接至CL 1172、1182,同時,I/O裝置1214也耦接至控制邏輯
1172、1182。傳統I/O裝置1215係耦接至晶片組1190。
現參考圖13,顯示依據本發明實施例之SoC 1300的方塊圖。在圖9的類似元件具有類似元件符號。同時,虛線方塊為在更多先進SoC上的選用特性。在圖13中,互連硬體1302係耦接至:應用處理器1310,其包含一組一或更多核心902A-N及共享快取硬體906;系統代理硬體910;匯流排控制器硬體916;一整合記憶體控制器硬體914;一組或一或更多共處理器1320,其可以包含整合圖形邏輯、影像處理器、音訊處理器、及視訊處理器;靜態隨機存取記憶體(SRAM)硬體1330;直接記憶體存取(DMA)硬體1332;及顯示硬體1340,用以耦接至一或更多外部顯示器。在一實施例中,共處理器1320包含特殊目的處理器、例如,網路或通訊處理器、壓縮引擎、GPGPU、高通量MIC處理器、嵌式處理器、或類似物。
於此所揭露之機制的實施例可以實施為硬體、軟體、韌體或此等實施方式的組合。本發明之實施例可以實施為電腦程式或執行於可程式系統上的程式碼,可程式系統包含至少一處理器、儲存系統(包含揮發及非揮發記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置。
例如示於圖11的碼1130的程式碼可以應用至輸入指令,以執行於此所述之功能並產生輸出資訊。輸出資訊可以用已知方式應用至一或更多輸出裝置。為了本案的目的,處理系統包含任何系統,其具有處理器,例
如,數位信號處理器(DSP)、微控制器、特定應用積體電路(ASIC)、或微處理器。
程式碼可以以高階程序或物件導向程式語言實施,以與處理系統通訊。如果想要的話,程式碼也可以實施為組合或機器語言。事實上,於此所述之機制並不限於任何特定程式語言的範圍。在任何情況下,語言可以為編譯或解譯語言。
至少一實施例的一或更多態樣可以以儲存於機器可讀取媒體中的代表指令加以實施,其代表在處理器內的各種邏輯,其當為機器所讀取時使得機器製造邏輯以執行於此所述之技術。稱為"IP核心"的此等代表可以儲存有形機器可讀取媒體並被供給至各客戶或製造設施,以載入製造機器,其實際作成該邏輯或處理器。
此機器可讀取儲存媒體可以包含但並不限於非暫態有形配置的製造物體或為機器或裝置所製成形成的物體,包含儲存媒體,例如硬碟,任何其他類型的碟片,包含軟碟、光碟、光碟唯讀記憶體(CD-ROM)、光碟可寫(CD-RW)、及磁光碟、例如唯讀記憶體(ROM)、隨機存取記憶體(RAM)的半導體裝置,RAM係例如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可程式唯讀記憶體(EPROM)、快閃記憶體、電氣可抹除可程式唯讀記憶體(EEPROM)、相變記憶體(PCM)、磁或光學卡、或任何其他類型的媒體,其適用以儲存電子指令者。
因此,本發明實施例也包含非暫態有形機器
可讀取媒體,包含指令或含有設計資料,例如,硬體描述語言(HDL),其界定於此所述之結構、電路、設備、處理器及/或系統特性。此等實施例也可以稱為程式產品。
在一些情況下,指令轉換器可以被用以將來自源指令集的指令轉換為目標指令集。例如,指令轉換器可以轉譯(例如,使用靜態二進制轉譯、動態二進制轉譯,包含動態編譯)、漸變、仿真或轉換指令為一或更多其他予以為該核心所處理的指令。指令轉換器可以實施為軟體、硬體、韌體或兩者的組合。指令轉換器可以在處理器上、在處理器外、或部份在處理器內部份在處理器外。
圖14為依據本發明實施例之對比使用軟體指令轉換器以將源指令集中的二進制指令轉換為目標指令集中的二進制指令的方塊圖。在例示實施例中,指令轉換器為軟體指令轉換器,但或者指令轉換器可以被實施為軟體、硬體、韌體、或其各種組合。圖14顯示以高階語言1402表示的程式,其可以使用x86編譯器1404編譯,以產生x86二進制碼1406,其可以為具有至少一x86指令集核心1416的處理器所本機執行。具有至少一x86指令集核心1416的處理器代表任何處理器,其可以執行與具有至少一x86指令集核心的英特爾處理器實質相同的功能,藉由相容執行或以其他方式處理(1)英特爾x86指令集核心的指令集的相當大部份或(2)軟體或其他針對執行於具有至少一x86指令集核心的英特爾處理器的其他軟體的目標碼版本,以完成與具有至少一x86指令集核心的英
特爾處理器實質相同結果。x86編譯器1404代表編譯器,其可操作以產生x86二進制碼1406(例如目標碼),其可以在有或沒有額外鏈結處理下被執行於具有至少一x86指令集核心1416的處理器上。類似地,圖14顯示以高階語言1402表示的程式可以使用另一指令集編譯器1408編譯,以產生另一指令集二進制碼1410,其可以為在沒有至少一x86指令集核心1414的處理器(例如,具有執行美國加州Sunnyvale的MIPS科技的MIPS指令集及/或美國加州Sunnyvale的ARM控股的ARM指令集的核心的處理器)所本機執行。指令轉換器1412係被用以將x86二進制碼1406轉換為沒有x86指令集核心1414的處理器所本機執行的碼。此轉換碼似乎不與另一指令集二進制碼1410相同,因為指令轉換器可以很困難製作;然而,所轉換碼將完成一般運算並可以由其他指令集作成指令。因此,指令轉換器1412代表軟體、韌體、硬體或其組合,透過仿真、模擬、或任何其他處理以允許處理器或其他電子裝置,在沒有x86指令集處理器或核心下,執行x86二進制碼1406。
100‧‧‧執行核心管線
102‧‧‧前端硬體
104‧‧‧分割器電路
106‧‧‧執行引擎硬體
108‧‧‧檢測電路
110‧‧‧預測電路
112‧‧‧退役硬體
Claims (14)
- 一種由不良儲存-至-負載轉發事件復原的設備,包含:執行電路,用以執行第一負載指令;檢測電路,用以檢測在執行期間何時該第一負載指令經歷不良儲存-至-負載轉發事件;預測電路,耦接至該檢測電路,用以追蹤在執行期間該第一負載指令經歷的該不良儲存-至-負載轉發事件的發生並根據所追蹤的發生,控制在該第一負載指令中的S-位元的致能;分割器電路,耦接以接收該第一負載指令,其中該分割器電路被架構以反應於在該第一負載指令中的致能S-位元,產生多數負載運算,其中該執行硬體執行的所述多數負載運算產生等效於由該第一負載指令的執行所造成的結果。
- 如請求項1之設備,其中當執行該第一負載指令期間所存取的多數位元組包含回應於前一未確定儲存運算所更新的至少第一位元組以及也包含回應於前一未確定儲存運算未更新的至少第二位元組時,該第一負載指令的不良儲存-至-負載轉發事件發生。
- 如請求項1之設備,其中當執行該第一負載指令期間所存取的第一多數位元組在大小上與回應於前一未確定儲存運算的更新的第二多數位元組不同時,該第一負載指令的不良儲存-至-負載轉發事件發生。
- 如請求項1之設備,其中該預測電路用以包含計數器,用以追蹤該第一負載指令所經歷的所述不良儲存-至-負載轉發事件的發生。
- 如請求項4之設備,其中該預測電路用以包含臨限值,以控制在該第一負載指令中的該S-位元的所述致能。
- 如請求項5之設備,其中該預測電路用以每次該第一負載指令經歷該不良儲存-至-負載轉發事件發生增量該計數器並用以於該計數器超出該臨限值時,致能在該第一負載指令中的該S-位元。
- 一種由不良儲存-至-負載轉發事件復原的方法,包含:執行第一負載指令;檢測在執行期間何時該第一負載指令經歷不良儲存-至-負載轉發事件;追蹤在執行期間該第一負載指令經歷之所述不良儲存-至-負載轉發事件的發生;根據該所追蹤的發生,控制在該第一負載指令中的S-位元的致能;回應於在該第一負載指令中的致能的S-位元,產生多數負載運算,其中執行該所產生的多數負載運算產生等效於執行該第一負載指令所造成的結果。
- 如請求項7之方法,其中當執行該第一負載指令期間所存取的多數位元組包含回應於前一未確定 儲存運算所更新的至少第一位元組以及也包含回應於前一未確定儲存運算未更新的至少第二位元組時,該第一負載指令經歷不良儲存-至-負載轉發事件。
- 如請求項7之方法,其中當執行該第一負載指令期間所存取的第一多數位元組在大小上與回應於前一未確定儲存運算的更新的第二多數位元組不同時,該第一負載指令經歷不良儲存-至-負載轉發事件。
- 如請求項7之方法,更包含:用以每次該第一負載指令經歷該不良儲存-至-負載轉發事件發生,增量一計數器;用以於該計數器超出臨限值時,致能在該第一負載指令中的該S-位元。
- 一種檢測不正確記憶體相依推測的設備,包含:標註電路,用以識別與標註:一或更多推測提升記憶體存取指令,其中如果記憶體存取指令被重排序以在處理器指令管線中的一或更多記憶體修改指令前執行,則該記憶體存取指令被推測提升;由一或更多記憶體修改指令選出的驗證指令,該一或更多記憶體存取指令被推測提升於其上,該驗證指令係為在該處理器指令管線中的該一或更多記憶體修改指令中予以執行的最後指令;檢測電路,用以檢測是否該驗證指令與該一或更多記 憶體存取指令混淆,其中當該驗證指令執行至與該一或更多記憶體存取指令的任一所存取的記憶體位址不可區分的記憶體位址時,混淆發生;確認電路,耦接以根據來自該檢測電路的結果,追蹤並確認該一或更多推測提升記憶體存取指令的推測,其中該確認電路當未檢測到混淆時,確認該推測並當檢測到混淆時,推翻該推測。
- 如請求項11之設備,其中該驗證指令為在該處理器指令管線中的該一或更多記憶體修改指令的最新者。
- 一種檢測不正確記憶體相依推測的方法,包含:識別與標註:一或更多推測提升記憶體存取指令,其中如果所述記憶體存取指令被重排序予以在處理器指令管線中的一或更多記憶體修改指令前執行,則所述記憶體存取指令被推測提升;由一或更多記憶體修改指令選出的驗證指令,該一或更多記憶體存取指令係被推測提升於其上,該驗證指令係為在該處理器指令管線中的該一或更多記憶體修改指令中予以執行的最後指令;檢測所述驗證指令是否與該一或更多記憶體存取指令混淆,其中當該驗證指令執行至為該一或更多記憶體存取指令的任一所存取的記憶體位址不可區分的記憶體位址 時,發生混淆;根據來自該混淆檢測的結果,確認該一或更多推測提升記憶體存取指令的推測,其中當未檢測混淆時,該推測被確認以及當檢測到混淆時推翻該推測。
- 如請求項13之方法,更包含選擇在該處理器指令管線中的該一或更多記憶體修改指令的最新者作為該驗證指令。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/998,299 US9996356B2 (en) | 2015-12-26 | 2015-12-26 | Method and apparatus for recovering from bad store-to-load forwarding in an out-of-order processor |
US14/998,299 | 2015-12-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201732566A TW201732566A (zh) | 2017-09-16 |
TWI733717B true TWI733717B (zh) | 2021-07-21 |
Family
ID=59087213
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105138709A TWI733717B (zh) | 2015-12-26 | 2016-11-24 | 從亂序處理器中的不良儲存-至-負載轉發復原的方法與設備 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9996356B2 (zh) |
TW (1) | TWI733717B (zh) |
WO (1) | WO2017112361A2 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9934009B2 (en) | 2016-06-01 | 2018-04-03 | International Business Machines Corporation | Processor that includes a special store instruction used in regions of a computer program where memory aliasing may occur |
US10169010B2 (en) | 2016-06-01 | 2019-01-01 | International Business Machines Corporation | Performing register promotion optimizations in a computer program in regions where memory aliasing may occur and executing the computer program on processor hardware that detects memory aliasing |
US10169009B2 (en) | 2016-06-01 | 2019-01-01 | International Business Machines Corporation | Processor that detects memory aliasing in hardware and assures correct operation when memory aliasing occurs |
US11822923B1 (en) * | 2018-06-26 | 2023-11-21 | Advanced Micro Devices, Inc. | Performing store-to-load forwarding of a return address for a return instruction |
US10853078B2 (en) * | 2018-12-21 | 2020-12-01 | Intel Corporation | Method and apparatus for supporting speculative memory optimizations |
US11392387B2 (en) * | 2020-11-04 | 2022-07-19 | Microsoft Technology Licensing, Llc | Predicting load-based control independent (CI) register data independent (DI) (CIRDI) instructions as CI memory data dependent (DD) (CIMDD) instructions for replay in speculative misprediction recovery in a processor |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6021485A (en) * | 1997-04-10 | 2000-02-01 | International Business Machines Corporation | Forwarding store instruction result to load instruction with reduced stall or flushing by effective/real data address bytes matching |
US6230254B1 (en) * | 1992-09-29 | 2001-05-08 | Seiko Epson Corporation | System and method for handling load and/or store operators in a superscalar microprocessor |
US20030065908A1 (en) * | 2001-09-28 | 2003-04-03 | Rajesh Patel | Method and apparatus for increasing load bandwidth |
US6662280B1 (en) * | 1999-11-10 | 2003-12-09 | Advanced Micro Devices, Inc. | Store buffer which forwards data based on index and optional way match |
US20140281408A1 (en) * | 2013-03-15 | 2014-09-18 | Soft Machines, Inc. | Method and apparatus for predicting forwarding of data from a store to a load |
US20150067305A1 (en) * | 2013-08-30 | 2015-03-05 | Advanced Micro Devices, Inc. | Specialized memory disambiguation mechanisms for different memory read access types |
US20150095629A1 (en) * | 2012-06-15 | 2015-04-02 | Soft Machines, Inc. | Method and system for implementing recovery from speculative forwarding miss-predictions/errors resulting from load store reordering and optimization |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6128775A (en) | 1998-06-16 | 2000-10-03 | Silicon Graphics, Incorporated | Method, system, and computer program product for performing register promotion via load and store placement optimization within an optimizing compiler |
US6651161B1 (en) | 2000-01-03 | 2003-11-18 | Advanced Micro Devices, Inc. | Store load forward predictor untraining |
US6564297B1 (en) | 2000-06-15 | 2003-05-13 | Sun Microsystems, Inc. | Compiler-based cache line optimization |
US9213665B2 (en) | 2008-10-28 | 2015-12-15 | Freescale Semiconductor, Inc. | Data processor for processing a decorated storage notify |
US8392757B2 (en) | 2010-10-22 | 2013-03-05 | Advanced Micro Devices, Inc. | Method and apparatus for processing load instructions in a microprocessor having an enhanced instruction decoder and an enhanced load store unit |
US9442735B1 (en) * | 2012-04-13 | 2016-09-13 | Marvell International Ltd. | Method and apparatus for processing speculative, out-of-order memory access instructions |
US9535695B2 (en) * | 2013-01-25 | 2017-01-03 | Apple Inc. | Completing load and store instructions in a weakly-ordered memory model |
-
2015
- 2015-12-26 US US14/998,299 patent/US9996356B2/en active Active
-
2016
- 2016-11-24 TW TW105138709A patent/TWI733717B/zh not_active IP Right Cessation
- 2016-11-28 WO PCT/US2016/063890 patent/WO2017112361A2/en active Application Filing
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6230254B1 (en) * | 1992-09-29 | 2001-05-08 | Seiko Epson Corporation | System and method for handling load and/or store operators in a superscalar microprocessor |
US6021485A (en) * | 1997-04-10 | 2000-02-01 | International Business Machines Corporation | Forwarding store instruction result to load instruction with reduced stall or flushing by effective/real data address bytes matching |
US6662280B1 (en) * | 1999-11-10 | 2003-12-09 | Advanced Micro Devices, Inc. | Store buffer which forwards data based on index and optional way match |
US20030065908A1 (en) * | 2001-09-28 | 2003-04-03 | Rajesh Patel | Method and apparatus for increasing load bandwidth |
US20150095629A1 (en) * | 2012-06-15 | 2015-04-02 | Soft Machines, Inc. | Method and system for implementing recovery from speculative forwarding miss-predictions/errors resulting from load store reordering and optimization |
US20140281408A1 (en) * | 2013-03-15 | 2014-09-18 | Soft Machines, Inc. | Method and apparatus for predicting forwarding of data from a store to a load |
US20150067305A1 (en) * | 2013-08-30 | 2015-03-05 | Advanced Micro Devices, Inc. | Specialized memory disambiguation mechanisms for different memory read access types |
Also Published As
Publication number | Publication date |
---|---|
WO2017112361A3 (en) | 2017-07-27 |
US20170185404A1 (en) | 2017-06-29 |
US9996356B2 (en) | 2018-06-12 |
WO2017112361A2 (en) | 2017-06-29 |
TW201732566A (zh) | 2017-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI733717B (zh) | 從亂序處理器中的不良儲存-至-負載轉發復原的方法與設備 | |
TWI769595B (zh) | 用以保護影子堆疊之處理器、方法、系統和指令 | |
JP6507435B2 (ja) | 命令エミュレーションプロセッサ、方法、およびシステム | |
JP5984865B2 (ja) | 命令エミュレーションプロセッサ、方法、およびシステム | |
JP6143872B2 (ja) | 装置、方法、およびシステム | |
US20210357213A1 (en) | Hardware apparatuses and methods to switch shadow stack pointers | |
TW202314486A (zh) | 原子式儲存至寬於原生支援資料寬度之記憶體資料的處理器、方法、系統與指令 | |
TWI465920B (zh) | 結構存取處理器、方法、系統及指令 | |
JP2017527902A (ja) | 例外からの復帰時のマスク不可割り込みの早期有効化の回避 | |
US10867031B2 (en) | Marking valid return targets | |
US20160092227A1 (en) | Robust and High Performance Instructions for System Call | |
US11048516B2 (en) | Systems, methods, and apparatuses for last branch record support compatible with binary translation and speculative execution using an architectural bit array and a write bit array | |
US20220413870A1 (en) | Technology For Optimizing Memory-To-Register Operations | |
US10635465B2 (en) | Apparatuses and methods to prevent execution of a modified instruction | |
US20190370038A1 (en) | Apparatus and method supporting code optimization | |
US9904549B2 (en) | Method and apparatus for loop-invariant instruction detection and elimination | |
US9710389B2 (en) | Method and apparatus for memory aliasing detection in an out-of-order instruction execution platform | |
US10853078B2 (en) | Method and apparatus for supporting speculative memory optimizations | |
CN113568663A (zh) | 代码预取指令 | |
TW202416123A (zh) | 硬體處理器及處理器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |