TWI578155B - 用於條件式記憶體錯誤輔助抑制的處理器、處理系統及方法 - Google Patents
用於條件式記憶體錯誤輔助抑制的處理器、處理系統及方法 Download PDFInfo
- Publication number
- TWI578155B TWI578155B TW104104386A TW104104386A TWI578155B TW I578155 B TWI578155 B TW I578155B TW 104104386 A TW104104386 A TW 104104386A TW 104104386 A TW104104386 A TW 104104386A TW I578155 B TWI578155 B TW I578155B
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- operations
- error
- instruction
- processor
- Prior art date
Links
- 230000015654 memory Effects 0.000 title claims description 357
- 230000001629 suppression Effects 0.000 title claims description 179
- 238000012545 processing Methods 0.000 title claims description 131
- 238000000034 method Methods 0.000 title claims description 41
- 239000013598 vector Substances 0.000 claims description 163
- 238000003860 storage Methods 0.000 claims description 95
- 239000000872 buffer Substances 0.000 claims description 77
- 230000005055 memory storage Effects 0.000 claims description 18
- 230000000873 masking effect Effects 0.000 claims description 12
- 230000004044 response Effects 0.000 claims description 9
- 238000001514 detection method Methods 0.000 claims description 5
- 230000003139 buffering effect Effects 0.000 claims description 2
- 238000007667 floating Methods 0.000 description 36
- 238000010586 diagram Methods 0.000 description 27
- 230000008569 process Effects 0.000 description 21
- 230000006870 function Effects 0.000 description 18
- 238000013507 mapping Methods 0.000 description 18
- 238000004519 manufacturing process Methods 0.000 description 16
- 238000006243 chemical reaction Methods 0.000 description 12
- 239000000463 material Substances 0.000 description 12
- 230000007246 mechanism Effects 0.000 description 12
- 238000013461 design Methods 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 10
- 235000012431 wafers Nutrition 0.000 description 10
- 230000008901 benefit Effects 0.000 description 9
- 230000003287 optical effect Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 230000003111 delayed effect Effects 0.000 description 8
- 239000003795 chemical substances by application Substances 0.000 description 6
- 230000006835 compression Effects 0.000 description 6
- 238000007906 compression Methods 0.000 description 6
- 238000013500 data storage Methods 0.000 description 6
- 230000001419 dependent effect Effects 0.000 description 6
- 230000003068 static effect Effects 0.000 description 6
- 230000002093 peripheral effect Effects 0.000 description 5
- 238000013519 translation Methods 0.000 description 5
- VOXZDWNPVJITMN-ZBRFXRBCSA-N 17β-estradiol Chemical compound OC1=CC=C2[C@H]3CC[C@](C)([C@H](CC4)O)[C@@H]4[C@@H]3CCC2=C1 VOXZDWNPVJITMN-ZBRFXRBCSA-N 0.000 description 4
- 230000008878 coupling Effects 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 4
- 238000005859 coupling reaction Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 4
- 238000006073 displacement reaction Methods 0.000 description 4
- 238000004088 simulation Methods 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 3
- 101100285899 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SSE2 gene Proteins 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 230000000763 evoking effect Effects 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 238000003384 imaging method Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 229910052754 neon Inorganic materials 0.000 description 2
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000036961 partial effect Effects 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 208000000044 Amnesia Diseases 0.000 description 1
- 101000912503 Homo sapiens Tyrosine-protein kinase Fgr Proteins 0.000 description 1
- 208000026139 Memory disease Diseases 0.000 description 1
- 241000283984 Rodentia Species 0.000 description 1
- 102000001332 SRC Human genes 0.000 description 1
- 108060006706 SRC Proteins 0.000 description 1
- 102100026150 Tyrosine-protein kinase Fgr Human genes 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 239000013078 crystal Substances 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000006984 memory degeneration Effects 0.000 description 1
- 208000023060 memory loss Diseases 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 229920006395 saturated elastomer Polymers 0.000 description 1
- 239000012536 storage buffer Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/079—Root cause analysis, i.e. error or fault diagnosis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0721—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/073—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
Description
本揭示係關於當由處理器或其它處理邏輯執行時,條件式地執行邏輯、數學、及/或例如載入或儲存記憶體資料等其它功能運算之處理邏輯、微處理器、及相關指令集架構的領域。特別地,本發明關於提供條件式記憶體錯誤輔助抑制的指令執行邏輯。
現代的處理器通常包含指令,以提供計算上強化但供應高度資料平行度的運算,經由使用例如單指令多資料(SIMD)向量暫存器等各種資料儲存裝置之有效率實施而利用高度資料平行度。
將應用或軟體碼向量化包含使應用在例如寬或大寬度向量架構等特定系統或指令集架構上編譯、安裝、及/或運行。對於某些應用,記憶體存取是複雜的、不一致的、或不連續的,舉例而言,隨著向量寬度增加(例如,對於例如三維(3D)影像描繪等運算)。用於向量化處理的記憶體可以儲存在非連續的或非相鄰的記憶體處。有些架構
要求額外指令,來使指令輸貫量最小化及顯著地增加時脈循環的數目,以在執行任何算術運算之前,將資料在暫存器中排序。
用於增進對較寬向量之記憶體存取及排序資料的機制包含實施收集及散佈運算,用於對來自其它非局部及/或非連續記憶體位置的資料,產生局部連續的記憶體存取。收集運算從儲存裝置中的不連續或隨機記憶體位置的集合收集資料,以及將不同的資料結合成緊縮結構。散佈運算將緊縮結構中的元素分散於不連續的或隨機的記憶體位置。其它機制包含以規律的幅度載入及儲存,以從儲存裝置中不連續的記憶體位置集合收集資料並將資料結合成緊縮結構,或是將緊縮結構中的元素分散於儲存裝置中不連續的記憶體位置集合。又有其它機制包含載入及儲存以從儲存裝置中的連續記憶體位置集合收集資料以及將資料稀疏地散佈於向量結構中,或是將稀疏向量結構中的元素併入於儲存裝置中的連續記憶體位置。使用這些機制以將應用或軟體碼向量化可以包含使用預定遮罩之條件式載入及儲存記憶體位置。這些記憶體位置中的某些位置不會被快取,或是自實體記憶體分頁。
假使這些運算在載入及儲存記憶體位置的中途因頁錯誤或某些其它原因而被打斷,則根據某些架構,機器的狀態不會被儲存,而要求重複整個運算而不是從運算被打斷處重新開始。由於在任何重複運算上,會要求多重記憶體存取,所以,為了完成會需要很多時脈循環,因而任何後
續相依的算術運算必須等待。在某些替代架構中,在記憶體位置之任何成功的載入及儲存之後,取代地儲存機器狀態,但是,任何發生的故障會被延擱直到向量指令退出為止。在使用預測遮罩之條件式載入及儲存記憶體位置的情形中,某些發生的錯誤或例外是對應於假定的記憶體存取,為此,使用預測遮罩以抑制真實的記憶體存取。但是,即使使用預測遮罩以抑制錯誤的記憶體時,在向量指令退出時任何延擱的錯誤或例外處理仍會造成延遲。這些延遲代表瓶頸,限制來自寬或大寬度向量架構之其它情形中期望的性能優點。
直至今日,對於這些性能限制議題及瓶頸之可能的解決之道尚未適當地開發。
100‧‧‧電腦系統
140‧‧‧資料處理系統
160‧‧‧資料處理系統
170‧‧‧處理核心
200‧‧‧處理器
490‧‧‧核心
500‧‧‧處理器
600‧‧‧系統
700‧‧‧第二系統
800‧‧‧第三系統
900‧‧‧系統晶片
1000‧‧‧處理器
在附圖中,以舉例方式而非限定方式,說明本發明。
圖1A是執行具有預測遮罩向量載入及/或儲存以提供條件式記憶體錯誤輔助抑制的系統之一實施例的方塊圖。
圖1B是執行具有預測遮罩的向量載入及/或儲存以提供條件式記憶體錯誤輔助抑制的系統之另一實施例的方塊圖。
圖1C是執行具有預測遮罩的向量載入及/或儲存以提供條件式記憶體錯誤輔助抑制的系統之另一實施例的方塊圖。
圖2是以預測遮罩執行向量載入及/或儲存以提供條件式記憶體錯誤輔助抑制的處理器之一實施例的方塊圖。
圖3A顯示根據一實施例的緊縮資料型式。
圖3B顯示根據一實施例的緊縮資料型式。
圖3C顯示根據一實施例的緊縮資料型式。
圖3D顯示根據一實施例的提供條件式記憶體錯誤輔助抑制之具有預測遮罩之向量載入及/或儲存的指令編碼。
圖3E顯示根據另一實施例的提供條件式記憶體錯誤輔助抑制之具有預測遮罩之向量載入及/或儲存的指令編碼。
圖3F顯示根據另一實施例的提供條件式記憶體錯誤輔助抑制之具有預測遮罩之向量載入及/或儲存的指令編碼。
圖3G顯示根據另一實施例的提供條件式記憶體錯誤輔助抑制之具有預測遮罩之向量載入及/或儲存的指令編碼。
圖3H顯示根據另一實施例的提供條件式記憶體錯誤輔助抑制之具有預測遮罩之向量載入及/或儲存的指令編碼。
圖4A顯示執行具有預測遮罩之向量載入及/或儲存以提供條件式記憶體錯誤輔助抑制之處理器微架構的一實施例的元素。
圖4B顯示執行具有預測遮罩之向量載入及/或儲存
以提供條件式記憶體錯誤輔助抑制之處理器微架構的另一實施例的元素。
圖5是執行具有預測遮罩之向量載入及/或儲存以提供條件式記憶體錯誤輔助抑制之處理器的一實施例的方塊圖。
圖6是執行具有預測遮罩之向量載入及/或儲存以提供條件式記憶體錯誤輔助抑制之電腦系統的一實施例的方塊圖。
圖7是執行具有預測遮罩之向量載入及/或儲存以提供條件式記憶體錯誤輔助抑制之之電腦系統的另一實施例的方塊圖。
圖8是執行具有預測遮罩之向量載入及/或儲存以提供條件式記憶體錯誤輔助抑制之電腦系統的另一實施例的方塊圖。
圖9是執行具有預測遮罩之向量載入及/或儲存以提供條件式記憶體錯誤輔助抑制之系統晶片的一實施例的方塊圖。
圖10是執行具有預測遮罩之向量載入及/或儲存以提供條件式記憶體錯誤輔助抑制之處理器的一實施例的方塊圖。
圖11是執行具有預測遮罩之向量載入及/或儲存以提供條件式記憶體錯誤輔助抑制之IP核心發展系統的一實施例的方塊圖。
圖12顯示執行具有預測遮罩之向量載入及/或儲存
以提供條件式記憶體錯誤輔助抑制之架構模擬系統的一實施例。
圖13顯示用以用預測遮罩將向量載入及/或儲存轉譯來提供條件式記憶體錯誤抑制的系統之一實施例。
圖14顯示執行具有預測遮罩之向量載入及/或儲存以提供條件式記憶體錯誤輔助抑制之處理器微架構的一替代實施例的元素。
圖15A顯示將預測遮罩對映至指令緩衝器中的錯誤抑制以提供條件式記憶體錯誤輔助抑制之一實施例。
圖15B顯示將預測遮罩對映至指令緩衝器中的錯誤抑制以提供條件式記憶體錯誤輔助抑制之一替代實施例。
圖15C顯示將預測遮罩對映至指令緩衝器中的錯誤抑制以提供條件式記憶體錯誤輔助抑制之另一替代實施例。
圖15D顯示將預測遮罩對映至指令緩衝器中的錯誤抑制以提供條件式記憶體錯誤輔助抑制之另一替代實施例。
圖16A顯示執行具有預測遮罩之條件式載入及/或儲存以提供條件式記憶體錯誤輔助抑制之一實施例的流程圖。
圖16B顯示執行具有預測遮罩之向量儲存以提供條件式記憶體錯誤輔助抑制之一實施例的流程圖。
圖16C顯示執行具有預測遮罩之向量載入以提供條件式記憶體錯誤輔助抑制之一實施例的流程圖。
下述說明揭示在處理器、電腦系統或其它處理設備之內或與其相關連地提供具有預測遮罩之向量載入及/或儲存向量以提供條件式記憶體錯誤輔助抑制的指令及處理邏輯。
此處揭示的某些實施例包含指令執行邏輯,以提供特別用於向量記憶體運算之條件式記憶體錯誤輔助抑制。處理器的某些實施例包括解碼級以將明定下述的指令解碼:記憶體運算、源暫存器、及一或更多記憶體位址。在某些實施例中,該指令可為單指令多資料(SIMD)指令。一或更多執行單元產生用於記憶體運算之該一或更多記憶體位址以回應被解碼的指令。指令執行邏輯記錄一或更多錯誤抑制位元以指示記憶體運算中之一或更多部份是否被遮罩。無論何時該組記憶體運算中之一或更多對應於被指示為由該一或更多錯誤抑制位元遮罩時,錯誤產生邏輯都會被抑制免於考慮對應於記憶體運算中之一或更多之記憶體錯誤。
在某些實施例中,SIMD指令可為向量載入運算類的指令,明定一組記憶體載入運算由算術運算或型式轉換跟隨在後,或是單純為向量載入指令。在某些實施例中,SIMD指令也為向量儲存運算類指令,明定算術運算或型式轉換在一組記憶體儲存運算之前,或是單純為向量儲存指令。回應經過解碼的SIMD指令,一或更多微運算可以儲存在微運算佇列中。一或更多微運算可以儲存為簡單的微運算、或是複雜的微運算、或是微碼登入點、或是融合
的微運算。在處理器管線的某些實施例中,分配器/重命名器會分配資源(例如暫存器等等)給包含指令緩衝器項的指令。指令緩衝器包括例如重排序緩衝器(ROB),以特別地追蹤處理器的依序及失序執行引擎中的指令執行的順序次序。在某些實施例中,向量載入微運算及向量算術微運算佔據單一指令緩衝器項以最終同時退出。類似地,向量儲存位址微運算及向量儲存資料微運算都佔據單一指令緩衝器項以最終同時退出。在替代實施例中,它們均佔據分別的指令緩衝器項。
一或更多執行單元產生用於對應的記憶體運算之記憶體位址,以回應一或更多經過解碼的指令。在某些實施例中,一或更多SIMD指令使用一或更多預測遮罩以將用於特定向量元素的指定運算條件式地賦能/禁能,或是使用一或更多完成遮罩以追蹤特定向量元素的成功完成及避免在重新啟動指令之後重複存取。在某些處理器架構中,在成功載入或儲存記憶體位置之後,保留機器的狀態,但是任何發生的錯誤或例外會被延擱直到向量指令退出為止。在使用預測遮罩或完成遮罩以條件式地載入或儲存記憶體位置的情形中,某些發生的錯誤或例外對應於預測遮罩或完成遮罩被用以抑制真正記憶體存取的某部份之記憶體存取。在此情形中,在向量指令退出時任何延擱的錯誤或例外之處理包含錯誤輔助級,以檢查預測遮罩或完成遮罩是否被用以抑制錯誤記憶體存取,藉以避免喚起用於被遮罩的記憶體錯誤之錯誤/例外處理器。
雖然錯誤輔助級可避免真正地喚起用於被遮罩的記憶體錯誤之錯誤處理器,但是,其仍然要求某些處理(例如,在微碼中以讀取遮罩暫存器及將其與錯誤元素比較),在當無錯誤未被遮罩時的情形中,這些處理會造成可以與分支誤預測損失相比之管線性能損失。因此,某些實施例在執行級中包含邏輯以讀取遮罩暫存器及記錄一或更多錯誤抑制位元於對應的指令緩衝器項中之Z指示器(例如被視為用於採用零以遮罩向量元素之遮罩的零(0)指示器)。在Z指示器中的一或更多錯誤抑制位元可用以指示記憶體運算的一或更多部份是否被遮罩以抑制退出時對應的延擱錯誤。將瞭解,即使記憶體錯誤有些罕見,仍然可以比任何時候指令退出時被要求檢查遮罩暫存器,在分配上更有效率地在執行級中讀取遮罩暫存器以及將一或更多錯誤抑制位元記錄於對應的指令緩衝器項之Z指示器中。此外,在某些實施例中,由於使載入或儲存位址取決於遮罩會延遲運算及使性能變差,所以,載入運算或儲存位址運算絕不會存取遮罩暫存器。因此,用於執行載入運算或儲存位址運算的執行邏輯不會緊密地接近遮罩實體暫存器檔案、或甚至對遮罩實體暫存器檔案具有可用的存取。基於此理由,在向量載入運算及向量算術運算佔據單指令緩衝器項的實施例會允許在算術運算的執行級中存取遮罩暫存器以及允許二運算最終同時退出。類似地,向量儲存位址運算及向量儲存資料運算佔據單指令緩衝器項的實施例會允許在儲存資料運算的執行級中存取遮罩暫
存器以將一或更多錯誤抑制位元記錄在對應的指令緩衝器項的Z指示器中,以及二運算再度地最終同時退出。因此,在退出時,假使當無錯誤未被遮罩時,Z指示器提供給錯誤輔助邏輯以抑制進一步處理錯誤,藉以避免處理器管線中誤預測的分支等級之性能損失。
因此,無論記憶體運算中之一或更多何時對應於被指示成被Z指示器中的錯誤抑制位元遮罩之記憶體運算的部份,抑制錯誤輔助級的錯誤產生邏輯可免於考慮對應於記憶體運算中之一或更多之記憶體錯誤。將瞭解,當被遮罩的錯誤以任何頻率發生時(例如,在未捲動迴路存取結束時,或是當對記憶體中稀疏散佈的位置特別作向量載入/儲存時),造成的性能損失代表瓶頸,限制來自寬或大寬度向量架構之其它情形中期望的性能優點。因此,執行具有預測遮罩的向量載入及/或儲存以提供條件式記憶體錯誤輔助抑制之根據管線的實施例避免此性能損失,代表管線處理之顯著的技術進步。
在下述說明中,揭示例如處理邏輯、處理器型式、微架構條件、事件、賦能機制、等等眾多特定細節,以提供本發明的實施例的更完整瞭解。但是,習於此技藝者將瞭解,沒有這些特定細節,仍可實施本發明。此外,未詳細地顯示某些習知的結構、電路、等等,以免不必要地模糊本發明的實施例。
雖然參考處理器而說明下述實施例,但是,其它實施例可以應用至其它型式的積體電路及邏輯裝置。本發明的
實施例之類似技術及揭示可以應用至其它型式的電路或半導體裝置,其能從更高的管道輸貫量及增進的性能獲利。本發明的實施例的揭示可應用至執行資料操作的任何處理器或機器。但是,本發明不限於執行512位元、256位元、128位元、64位元、32位元、或16位元資料運算的處理器或機器,且能應用至執行資料操作或管理的任何處理器及機器。此外,下述說明提供實例,且附圖顯示用於說明的各種實例。但是,這些實例不應被解釋為限定之意,它們僅是要提供本發明的實施例的實例,而不是提供本發明的實施例的所有可能的實施之耗盡清單。
雖然下述實施以執行單元及邏輯電路的背景來說明指令操作及分佈,但是,本發明的其它實施例可由儲存在機器可讀取的、實體的媒體上的資料或指令實施,這些資料或指令當由機器執行時會促使機器執行至少符合本發明的一實施例之功能。在一實施例中,與本發明的實施例相關連的功能以機器可執行的指令具體實施。指令被用以促使以指令程式化的一般用途或特定用途的處理器執行本發明的步驟。本發明的實施例可作為電腦程式產品或是軟體,包含具有指令儲存於上的機器或電腦可讀取的媒體,所述指令用以將電腦(或其它電子裝置)程式化以執行根據本發明的實施例之一或更多運算。替代地,本發明的實施例的步驟可由含有用於執行步驟的固定功能邏輯的特定的硬體組件、或是由程式化的電腦組件及固定功能的硬體組件的任何組合執行。
用以將邏輯程式化以執行本發明的實施例之指令儲存在例如動態隨機存取記憶體(DRAM)、快取記憶體、快閃記憶體、或其它儲存器等系統中的記憶體內。此外,可經由網路或是藉由其它電腦可讀取的媒體,以散佈指令。因此,機器可讀取的媒體包含以機器(例如電腦)可讀取的形式來儲存或傳送資訊的任何機構,包含但不限於軟碟、光碟、唯讀光碟(CD-ROM)、及磁光碟、唯讀記憶體(ROM)、隨機存取記憶體(RAM)、可抹拭可編程唯讀記憶體(EPROM)、電可抹拭可編程唯讀記憶體(EEPROM)、磁性或光學卡、快閃記憶體、或是經由電方式、光學方式、聲學方式或其它形式的傳播訊號(例如,載波、紅外線訊號、數位訊號、等等)而於網際網路上傳送資訊時使用的實體的、機器可讀取的儲存器。因此,電腦可讀取的媒體包含任何型式的實體的機器可讀取的媒體,適用於儲存或傳送可由機器(例如電腦)讀取的電子指令或資訊。
設計經過不同的階段,從產生到模擬到製造。代表設計的資料可以代表多種方式的設計。首先,如同模擬中使用的一般,使用硬體說明語言或是另一功能說明語言,代表硬體。此外,可以在設計過程中的某些階段,產生設有邏輯及/或電晶體閘的電路級模型。此外,大部份的設計在某階段達到代表硬體模型中的不同裝置的實體配置之資料等級。在使用傳統的半導體製造技術之情形中,代表硬體模型的資料可為明定用以產生積體電路的遮罩之不同遮
罩層上是否存有不同的特徵之資料。在任何設計表示中,資料可以儲存在任何形式的機器可讀取的媒體中。例如碟片等磁性或光學儲存器或記憶體可以是機器可讀取的媒體,用以儲存經由調變或其它方式產生之用以傳送此資訊的光波或電波傳送來的資訊。當指示或載送碼或設計的電載波被傳送至達到執行電訊號的複製、緩衝、或再傳送的程度時,產生新的複製。因此,通訊提供者或網路提供者可以將具體實施本發明的實施例之例如編碼成載波的資訊等物件至少暫時地儲存在實體的、機器可讀取的媒體上。
在現代的處理器中,使用很多不同的執行單元以處理及執行各式各樣的碼及指令。並非所有指令均等地產生,有些是較快地完成而其它耗費一些時脈循環以完成。指令輸貫量愈快,則處理器的整體性能愈佳。因此,有利的是使很多指令儘可能快速地執行。但是,以執行時間及處理器資源的觀點而言,某些指令具有更大複雜度且要求更多。舉例而言,有浮點指令、載入/儲存運算、資料移動、等等。
隨著愈來愈多的電腦系統被用於網際網路、文書、及多媒體應用,也隨著時間而導入增加的處理器支援。在一實施例中,指令集可以與包含資料型式、指令暫存器架構、定址模式、記憶體架構、中斷及例外處理、以及外部輸入和輸出(I/O)的一或更多電腦架構相關連。
在一實施例中,指令集架構(ISA)可以由包含用以實施一或更多指令集的處理器邏輯及電路之一或更多微架
構實施。因此,設有不同微架構的複數個處理器可以共用至少部份共同指令集。舉例而言,Intel® Pentium 4處理器、Intel® CoreTM處理器、及來自加州太陽谷的超微公司的處理器實施幾乎相同版本的x86指令集(某些程度上增加較新的版本),但具有不同的內部設計。類似地,由例如ARM Holdings,Ltd.、MIPS等其它處理器開發公司設計的處理器、或是它們的獲授權者或採用者可以共用至少部份共同指令集,但是包含不同的處理器設計。舉例而言,在使用新的或習知的技術之不同微架構中,以不同方式實施ISA的相同暫存器架構,其包含專用的實體暫存器、使用暫存器重命名機制(例如使用暫存器別名表(RAT)、重排序緩衝器(ROB)及退出暫存器檔案)的一或更多動態分配實體暫存器。在一實施例中,暫存器包含一或更多暫存器、暫存器架構、暫存器檔案、或可或不可由軟體程式人員定址的其它暫存器集。
在一實施例中,指令包含一或更多指令格式。在一實施例中,指令格式表示不同的欄位(位元數目、位元位置、等等)以特別明定要被執行的運算以及運算要於其上執行的運算元。某些指令格式可以由指令樣板(或副格式)進一步間斷地界定。舉例而言,給定的指令格式的指令樣板可以被界定為具有不同子集合的指令格式欄位及/或被界定為具有被不同地解譯之給定欄位。在一實施例中,使用指令格式(以及,假使被界定時,在該指令格式的多個指令樣板中的給定之一中)以表示指令,以及,指
定或指示運算及運算將於其上操作的運算元。
科學的、財務的、自動向量化的一般目的、RMS(辨識、開發及合成)、以及影像和多媒體應用(例如,2D/3D圖形、影像處理、影像壓縮/解壓縮、語音辨識演繹法及音頻操作)要求對大量的資料項執行相同的操作。在一實施例中,單指令多資料(SIMD)意指促使處理器對多資料元素執行運算之指令型式。SIMD技術可用於處理器中,所述處理器能將暫存器中的多個位元邏輯上分成一些固定大小或可變大小的資料元,各資料元代表分別的值。舉例而言,在一實施例中,在64位元暫存器中的位元被組織成含有四個分別的16位元資料元素之源運算元,各16位元資料元素代表分別的16位元值。此型式的資料被稱為「緊縮」資料型式或是「向量」資料型式,以及,此資料型式的運算元被稱為緊縮資料運算元或是向量運算元。在一實施例中,緊縮資料項或向量可以是儲存在單一暫存器內的緊縮資料元素的序列,且緊縮資料運算元或向量運算元可以是SIMD指令的源或目的地運算元(或是「緊縮資料指令」或「向量指令」)。在一實施例中,SIMD指令明定單一向量運算對二源向量運算元執行,以產生相同或不同大小、具有相同或不同數目的資料元素、以及依相同或不同資料元素次序之目的地向量運算元(也稱為結果向量運算元)。
例如具有包含x86的指令集、MMXTM、串流SIMD擴充(SSE)、SSE2、SSE3、SSE4.1、及SSE4.2、AVX、
AVX2及AVX512指令之Intel® CoreTM處理器、例如具有包含向量浮點(VFP)及/或NEON指令的指令集之ARM Cortex®系列處理器等ARM處理器、以及由中國科學院的計算技術研究所(ICT)開發的龍芯(Loongson)系統處理器等MIPS處理器所採用的SIMD技術,能夠顯著地增進應用性能(CoreTM及MMXTM是註冊商標或是加州聖克拉拉(Santa Clara)之英特爾公司的商標)。
在一實施例中,目的地及源暫存器/資料是代表對應的資料或運算的源及目的地之一般名詞。在某些實施例中,它們由具有所述的名稱或功能之外的名稱或功能之暫存器、記憶體、或其它儲存區實施。舉例而言,在一實施例中,「DEST 1」是暫時儲存暫存器或是其它儲存區,而「SRC1」及「SRC2」是第一及第二源儲存暫存器或其它儲存區、等等。在其它實施例中,二或更多SRC及DEST儲存區對應相同儲存區內不同的資料儲存元素(例如SIMD暫存器)。在一實施例中,舉例而言,藉由將對第一及第二源資料執行的運算結果寫回至作為目的地暫存器的二源暫存器中之一,源暫存中之一也作為目的地暫存器。
圖1A是根據本發明的一實施例之由包含執行指令的執行單元的處理器形成之舉例說明的電腦系統的方塊圖。根據本發明,例如此處所述的實施例,系統100包含例如處理器102等組件,以使用執行單元,所述的執行單元包含執行用於處理資料的演繹法之邏輯。系統100是根據可
從加州聖克拉拉(Santa Clara)之英特爾公司取得的PENTIUM®III、PENTIUM®4、XeonTM、Itanium®、XScaleTM及/或StrongARMTM微處理器之處理系統的代表,但是,也可以使用其它系統(包含具有其它微處理器的個人電腦、工程工作站、機上盒等等)。在一實施例中,樣品系統100執行可從華盛頓州雷德蒙德的微軟公司之視窗(WINDOWSTM)版本的作業系統,但是,也可以使用其它作業系統(舉例而言,UNIX及Linux)、嵌入軟體、及/或圖形使用者介面。因此,本發明的實施例不限於硬體電路及軟體的任何特定組合。
實施例不限於電腦系統。本發明的替代實施例可以用於例如手持裝置及嵌入式應用等其它裝置中。手持裝置的某些實例包含蜂巢式電話、網際網路協定裝置、數位相機、個人數位助理(PDA)、及手持個人電腦(PC)。嵌入式應用包含微控制器、數位訊號處理器(DSP)、系統晶片、網路電腦(NetPC)、機上盒、網路集線器、廣域網路(WAN)交換機、或是能執行根據至少一實施例之一或更多指令的任何其它系統。
圖1A是由處理器102形成的電腦系統100的方塊圖,處理器102包含一或更多執行單元108以執行演繹法來執行根據本發明的一實施例之至少一指令。在單一處理器桌上型或伺服器系統的環境中,說明一實施例,但是,替代實施例可以包含於多處理器系統中。系統100是「集線器」系統架構的實例。電腦系統100包含處理器102以
處理資料訊號。舉例而言,處理器102是複雜指令集計算(CISC)微處理器、精簡指令集計算(RISC)微處理器、超長指令字(VLIW)微處理器、實施複數指令集的結合之處理器、或是例如數位訊號處理器等任何其它處理器裝置。處理器102耦合至處理器匯流排110,處理器匯流排110能在處理器102與系統100中的其它組件之間傳輸資料訊號。系統100的元素執行習於此技藝者熟知之它們的習知功能。
在一實施例中,處理器102包含階層1(L1)內部快取記憶體104。取決於架構,處理器102具有單一的內部快取記憶體或多層級的內部快取記憶體。替代地,在另一實施例中,快取記憶體設於處理器102的外部。取決於特定實施及需求,其它實施例也包含內部及外部快取記憶體的組合。暫存器檔案106將不同型式的資料儲存在包含整數暫存器、浮點暫存器、狀態暫存器、及指令指標暫存器等不同的暫存器中。
包含執行整數及浮點運算的邏輯之執行單元108也設於處理器102中。處理器102也包含儲存用於某些巨集指令的微碼(μ碼)ROM。對於一實施例,執行單元108包含邏輯以處理緊縮指令集109。藉由將緊縮指令集109包含在一般用途處理器102的指令集中,伴隨著執行指令的相關電路,可以在一般用途處理器102中使用緊縮資料,以執行由很多多媒體應用使用的運算。因此,以處理器的資料匯流排的全寬度用於對緊縮資料執行運算,能更有效
率地加速及執行很多多媒體應用。這能夠不須在處理器的資料匯流排上傳送較小單位的資料來一次對一資料元執行一或更多運算。
執行單元108的替代實施例也用於微控制器、嵌入式處理器、圖形裝置、DSP、及其它型式的邏輯單元中。系統100包含記憶體120。記憶體120可為動態隨機存取記憶體(DRAM)裝置、靜態隨機存取記憶體(SRAM)裝置、快閃記憶體裝置、或其它記憶體裝置。記憶體120儲存由處理器102執行的資料訊號所代表的指令及/或資料。
系統邏輯晶片116耦合至處理器匯流排110及記憶體120。在所示的實施例中系統邏輯晶片116是記憶體控制器集線器(MCH)。處理器102經由處理器匯流排110而與MCH 116通訊。MCH 116提供高頻寬記憶體路徑118給記憶體120,記憶體120用於指令及資料儲存及用於圖形命令、資料和組織的儲存。MCH 116在處理器102、記憶體120、及系統100中其它組件之間引導資料訊號,以及在處理器匯流排110、記憶體120、及系統I/O介面匯流排122之間橋接資料訊號。在某些實施例中,系統邏輯晶片116提供用於耦合至圖形控制器112的圖形埠。MCH 116經由記憶體介面118而耦合至記憶體120。圖形卡112經由加速圖形埠(AGP)互連114而耦合至MCH 116。
系統100使用專有集線器介面122,以將MCH 116耦合至輸入/輸出(I/O)控制器集線器(ICH)130。ICH
130經由本地I/O匯流排而提供對某些I/O裝置的直接連接。本地I/O匯流排是用於連接週邊至記憶體120、晶片組、及處理器102的高速I/O匯流排。某些實例是音頻控制器、韌體集線器(快閃BIOS)128、無線收發器126、資料儲存器124、含有使用者輸入及鍵盤介面的舊制I/O控制器、例如通用序列匯流排(USB)等序列擴充埠、及網路控制器134。資料儲存裝置124包括硬碟機、磁碟機、CD-ROM裝置、快閃記憶體裝置、或其它大量儲存裝置。
對於系統的另一實施例,根據一實施例的指令可以用於系統晶片。系統晶片的一實施例包括處理器及記憶體。用於一此系統的記憶體是快閃記憶體。快閃記憶體與處理器及其它系統組件設於相同晶粒上。此外,例如記憶體控制器或圖形控制器等其它邏輯區塊也位於系統晶片上。
圖1B顯示資料處理系統140,其實施本發明的一實施例的原理。在不悖離本發明的實施例的範圍之下,習於此技藝者將瞭解此處所述的實施例可以用於替代的處理系統。
電腦系統140包括能夠執行根據一實施例的至少一指令的處理核心159。對於一實施例,處理核心159代表任何型式的架構之處理單元,包含但不限於CISC、RISC、或VLIW型架構。處理核心159也適合以一或更多處理技術製造,且藉由以充份細節呈現在機器可讀取的媒體上,而適合便於該製造。
處理核心159包括執行單元142、暫存器檔案集145、及解碼器144。處理核心159也包含增加的電路(未顯示),這些增加的電路對於瞭解本發明的實施例並非必須。執行單元142用於執行由處理核心159接收的指令。除了執行典型的處理器指令之外,執行單元142執行用於對緊縮資料格式執行運算的緊縮指令集143中的指令。緊縮指令集143包含用於執行本發明的實施例的指令以及其它緊縮指令。執行單元142藉由內部匯流排而耦合至暫存器檔案145。暫存器檔案145代表用於儲存包含資料的資訊之處理核心159上的儲存區。如先前所述般,可知用於儲存緊縮資料的儲存區不是關鍵的。執行單元142耦合至解碼器144。解碼器144用於將處理核心159接收的指令解碼成控制訊號及/或微碼登入點。為回應這些控制訊號及/或微碼登入點,執行單元142執行適當的運算。在一實施例中,解碼器用以將指令的運算碼解譯,所述指令運算碼指示對指令內所指示的對應資料應執行什麼運算。
處理核心159與用於與不同的其它系統裝置通訊之匯流排141耦合,舉例而言,這些系統裝置包含但不限於同步動態隨機存取記憶體(SDRAM)控制146、靜態隨機存取記憶體(SRAM)控制147、猝發快閃記憶體介面148、個人電腦記憶體卡國際協會(PCMCIA)/輕巧快閃(CF)卡控制149、液晶顯示器(LCD)控制150、直接記憶體存取(DMA)控制器151、及交替匯流排主介面152。在
一實施例中,資料處理系統140也包括I/O橋接器154,用於經由I/O匯流排153而與不同的I/O裝置通訊。這些I/O裝置包含但不限於例如通用不同步接收器/發射器(UART)155、通用序列匯流排(USB)156、藍芽無線UART 157及I/O擴充介面158。
資料處理系統140的一實施例提供行動、網路及/或無線通訊及能夠執行包含文字串比較運算之SIMD運算的處理核心159。處理核心159以不同的音頻、視頻、成像及通訊演繹法程式化,這些演繹法包含例如沃爾什哈達馬德(Walsh-Hadamard)轉換、快速傅立葉轉換(TFT)、離散餘弦轉換(DCT)、及它們各別的逆轉換等離散轉換;例如顏色空間轉換、視頻編解碼動作評估或是視頻解碼動作壓縮等壓縮/解壓縮技術;以及,例如脈衝碼化調變(PCM)等調變/解調變(MODEM)功能。
圖1C顯示能夠執行具有預測遮罩之向量載入及/或儲存以提供條件式記憶體錯誤輔助抑制的資料處理系統之另一替代實施例。根據一替代實施例,資料處理系統160包含主處理器166、單指令多資料(SIMD)共處理器161、快取記憶體167、及輸入/輸出系統168。輸入/輸出系統168選加地耦合至無線介面169。SIMD共處理器161能夠執行包含根據一實施例的指令之運算。處理核心170適用於以一或更多處理技術製造,以及藉由以足夠的細節呈現在機器可讀取的媒體上而適合便於包含處理核心170的資料處理系統160的全部或部份之製造。
對於一實施例,SIMD共處理器161包括執行單元162及暫存器檔案集164。主處理器166的一實施例包括解碼器165以辨識包含用於由執行單元162執行之根據一實施例的指令之指令集163的指令。對於替代實施例,SIMD共處理器161也包括解碼器165B的至少部份以將指令集163的指令解碼。處理核心170也包含對於本發明的實施例的瞭解並非必須之增加的電路(未顯示)。
在操作上,主處理器166執行資料處理指令串,這些資料處理指令控制一般型式的資料處理運算,一般型式的資料處理運算包含與快閃記憶體167、及輸入/輸出系統168的交互作用。嵌入於資料處理指令串之內的是SIMD共處理器指令。主處理器166的解碼器165將這些SIMD共處理器指令辨識為應由附接的SIMD共處理器161執行的型式。因此,主處理器166在共處理器匯流排171上核發這些SIMD共處理器指令(或是代表SIMD共處理器指令的控制訊號),它們由任何附接的SIMD共處理器從共處理器匯流排171接收。在此情形中,SIMD共處理器161將接受及執行任何用於它之收到的SIMD共處理器指令。
資料可經由無線介面169接收以用於由SIMD共處理器處理。對於一實例,以數位訊號形式接收語音通訊,而由SIMD共處理器指令處理以再產生代表語音通訊的數位音頻取樣。對於另一實例,以數位位元串形式接收壓縮的音頻及/或視頻,而由SIMD共處理器指令處理以再產生
數位音頻取樣及/或動作視頻格。對於處理核心170的一實施例,主處理器166、及SIMD共處理器161整合於單一處理核心170中,處理核心170包括執行單元162、暫存器檔案集164、及解碼器165,以辨識包含根據一實施例的指令之指令集163的指令。
圖2是用於處理器200的微架構的方塊圖,其包含執行根據本發明的一實施例之指令的邏輯電路。在某些實施例中,根據一實施例的指令能實施以對具有位元組、字、雙倍字、四倍字等尺寸、以及例如單一及雙倍精度整數及浮點資料型式等資料型式之資料元素操作。在一實施例中,依序前端201是處理器200的一部份,其提取要執行的指令及準備它們以稍後用於處理器管線中。前端201包含數個單元。在一實施例中,指令預提取器226從記憶體提取指令以及將它們饋送至指令解碼器228,指令解碼器228接著將它們解碼或解譯。舉例而言,在一實施例中,解碼器將收到的指令解碼成機器能執行之稱為「微指令」或「微運算」(也稱為微op或uops)的一或更多運算。在其它實施例中,解碼器將指令剖析成為運算碼及對應的資料以及控制欄位,以由微架構使用來執行根據一實施例的運算。在一實施例中,追蹤快取230取得已解碼的微運算並將它們組合成微運算佇列234中用於執行的程式依序序列或是軌跡。當追蹤快取230遇到複雜指令時,微碼ROM 232提供完成運算所需的微運算。
某些指令被轉換成單一微運算,而其它的指令需要數
個微運算以完成整個運算。在一實施例中,假使需要多於四個微運算以完成指令時,解碼器228存取微碼ROM 232以執行指令。對於一實施例,指令被解碼成少數的微運算以用於在指令解碼器228處理。在另一實施例中,假使需要一些微運算以完成運算,則指令儲存在微碼ROM 232之內。追蹤快取230參考登入點可編程邏輯陣列(PLA)以決定正確的微指令指標,用於從微碼ROM 232讀取微碼序列以完成根據一實施例的一或更多指令。在微碼ROM 232完成用於指令的序列微運算之後,機器的前端201恢復從追蹤快取230提取微運算。
失序引擎203製備用於執行的指令。失序執行邏輯具有多個緩衝器,以便當指令沿管線下行及被排定執行排程時,使指令的流動平順及重新排序,而將性能最佳化。分配器邏輯分配各微運算為了執行而需要的機器緩衝器及資源。暫存器重命名邏輯將邏輯暫存器重命名至暫存器檔案中的登錄。在指令排程器之前,分配器邏輯也分配用於二微運算佇列之一中各微運算之登錄,二微運算佇列中之一用於記憶體運算,而另一佇列用於非記憶體運算,所述指令排程器可為:記憶體排程器、快速排程器202、緩慢/一般浮點排程器204、及簡單浮點排程器206。微運算排程器202、204、206根據它們的相依輸入暫存器運算元來源的準備度及微運算完成它們的運算所需的執行資源的可利用性,而決定微運算何時已準備好執行。一實施例的快速排程器202在主時脈循環的各半部上排程,而其它排程器
僅每一主處理時脈循環排程一次。排程器仲裁派遣埠以將微運算排程而用於執行。
暫存器檔案208、210位於排程器202、204、206與執行區211中的執行單元212、214、216、218、220、222、224之間。有分別的暫存器檔案208、210以分別用於整數及遮罩或浮點運算。一實施例的各暫存器檔案208、210也包含旁通網路,以將尚未被寫入暫存器檔案的剛完成的結果旁通或遞送至新的相依微運算。整數暫存器檔案208及浮點暫存器檔案210也能夠與其它方傳輸資料。對於一實施例,整數暫存器檔案208分開成二個分別的暫存器檔案,其一為用於資料的低序32位元之暫存器檔案,另一為用於資料的高序32位元之第二暫存器檔案。由於浮點指令典型上具有寬度為32、64、80至128位元的運算元,所以,一實施例的浮點暫存器檔案210具有128位元寬的登錄。如此處所述的向量運算不僅是浮點運算。各種實施例可以包括具有緊縮整數資料元素的指令、以及具有緊縮浮點資料元素的指令。
執行區211含有執行單元212、214、216、218、220、222、224,在這些單元中,指令被真正地執行。此區包含暫存器檔案208、210,暫存器檔案208、210儲存微指令執行時所需的整數及浮點資料運算元值。一實施例的處理器200包括一些執行單元:位址產生單元(AGU)212、AGU 214、快速ALU 216、快速ALU 218、緩慢ALU 220、浮點ALU 222、浮點移動單元224。對於一實
施例,浮點執行區222、224執行浮點、MMX、SIMD、及SSE、或其它運算。一實施例的浮點ALU 222包含64位元乘64位元的浮點除法器,以執行除法、平方根、及餘數微運算。對於本發明的實施例,涉及浮點值的指令可以由浮點硬體處理。在一實施例中,ALU運算進行至高速ALU執行單元216、218。一實施例的快速ALU 216、218以時脈循環的一半之有效潛時,執行快速運算。對於一實施例,當緩慢ALU 220包含例如乘法器、偏移器、旗標邏輯、及分支處理等用於長潛時型運算的整數執行硬體時,大部份的複雜整數運算前往緩慢ALU 220。記憶體載入/儲存運算由AGU 212、214執行。對於一實施例,在對64位元資料運算元執行整數運算的環境中,說明整數ALU 216、218、220。在替代實施例中,ALU 216、218、220實施成支援各種資料位元,包含16、32、128、256、等等。類似地,浮點單元222、224實施成支援具有各種寬度位元的運算元範圍。對於一實施例,浮點單元222、224配合SIMD及多媒體指令而對128位元寬的緊縮資料運算元操作。
在一實施例中,微運算排程器202、204、206在母載入完成執行之前派遣相依運算。當微運算在處理器200中被預測地排程及執行時,處理器200也包含邏輯以處理記憶體遺失。假使資料載入在資料快取中遺失時,會有相依運算在管線中飛行,所述相依操作留下暫時不正確的資料給排程器。重進行機構追蹤及再執行使用不正確資料的指
令。僅有相依運算需要重新進行,而獨立的運算被允許完成。處理器的一實施例之排程器及重新進行機構也設計成捕捉提供具有預測遮罩的向量載入及/或儲存以提供條件式記憶體錯誤輔助抑制之指令。
「暫存器」一詞意指作為辨識運算元的指令的一部份之板上處理器儲存位置。換言之,暫存器是可從處理器的外部使用的(從程式設計人員的觀點而言)。但是,實施例的暫存器不應侷限於意指特定型式的電路。相反地,實施例的暫存器能夠儲存及提供資料,以及執行此處所述的功能。此處所述的暫存器能由使用任何數目的不同技術之處理器內的電路實施,例如專用實體暫存器、使用暫存器重命名之動態分配實體暫存器、專用及動態分配實體暫存器的組合、等等。在一實施例中,整數暫存器儲存三十二位元的整數資料。一實施例的暫存器檔案也含有用於緊縮資料之八個多媒體SIMD暫存器。對於下述說明,暫存器被視為設計成固持緊縮資料的資料暫存器,例如以來自加州聖克拉拉(Santa Clara)之英特爾公司的MMX技術賦能之微處器中64位元寬的MMXTM暫存器(在某些情形中也稱為「mm」暫存器)。能以整數及浮點形式取得的這些MMX暫存器以伴隨SIMD及SSE指令的緊縮資料元操作。類似地,與SSE2、SSE3、SSE4、或是之外(一般稱為「SSEx」)的技術有關的128位元寬的XMM暫存器也用以固持這些緊縮資料運算元。在一實施例中,在儲存緊縮資料及整數資料時,暫存器不需要區分二資料型式。在
一實施例中,整數及浮點被含在相同暫存器檔案或不同的暫存器檔案中。此外,在一實施例中,浮點及整數資料可以儲存在不同的暫存器或相同的暫存器中。
在下述圖形的實例中,說明多個資料運算元。圖3A顯示根據本發明的一實施例之多媒體暫存器中不同的緊縮資料型式的代表。圖3A顯示用於128位元寬運算元之緊縮位元組310、緊縮字320、及緊縮雙倍字(dword)330的資料型式。本實例之緊縮位元組格式310是128位元長且含有十六個緊縮位元組資料元素。此處,一位元組定義為8位元資料。用於各位元組資料元素的資訊儲存在位元組0的位元7至位元0、位元組1的位元15至位元8、位元組2的位元23至位元16、及位元組15的最後位元120至位元127中。因此,所有可取得的位元被用於暫存器中。此儲存配置增加處理器的儲存效率。而且,以十六個資料元素被存取,現在可對十六個資料元素平行地執行一運算。
一般而言,資料元素是各別件資料,其與具有相同長度的其它資料元素儲存在單一暫存器或是記憶體位置中。在與SSEx技術有關的緊縮資料序列中,儲存在XMM暫存器中的資料元素的數目是128位元除以各別資料元的位元長度。類似地,在與MMX及SSE技術有關的緊縮資料序列中,儲存在MMX暫存器中的資料元的數目是64位元除以個別資料元的位元長度。雖然圖3A中所示的資料型式是128位元長,但是,本發明的實施例也以64位元
寬、256位元寬、512位元寬、或是其它大小的運算元操作。本實例的緊縮字格式320是128位元長且含有八個緊縮字資料元。各緊縮字含有十六位元的資訊。圖3A的緊縮雙倍字格式330是128位元長且含有四個緊縮雙倍字資料元素。各緊縮雙倍字資料元素含有三十二位元的資訊。緊縮四倍字是128位元長且含有二個緊縮四倍字資料元素。
圖3B顯示替代的暫存器中資料儲存格式。各緊縮資料包含一個以上的獨立資料元素。顯示三種緊縮資料格式;減半緊縮341、單倍緊縮342、及雙倍緊縮343。減半緊縮341、單倍緊縮342、及雙倍緊縮343的一實施例含有固定點資料元素。對於替代實施例,減半緊縮341、單倍緊縮342、及雙倍緊縮343中之一或更多含有浮點資料元素。減半緊縮341的一替代實施例是含有八個16位元資料元素之一佰二十八位元長。單倍緊縮342的一實施例是一佰二十八位元長且含有四個32位元資料元素。雙倍緊縮343的一實施例是一佰二十八位元長且含有二個64位元資料元素。將瞭解,這些緊縮資料格式可以進一步擴充至其它暫存器長度,例如擴充至96位元、160位元、192位元、224位元、256位元、512位元或更多。
圖3C顯示根據本發明的一實施例之多媒體暫存器中各種有符號及無符號的緊縮資料型式代表。無符號的緊縮位元組代表344顯示SIMD暫存器中無符號的緊縮位元組的儲存。用於各位元組資料元素的資訊儲存在位元組0的
位元7至位元0、位元組1的位元15至位元8、位元組2的位元23至位元16、等等、以及位元組15之最後位元120至127中。因此,所有可取得的位元用於暫存器中。此儲存配置增加處理器的儲存效率。而且,以十六資料元被存取,現在以平行方式對十六資料元執行一操作。有符號的緊縮位元組代表345顯示有符號的緊縮位元組的儲存。注意,每一位元組資料元素的第八位元是符號指示器。無符號的緊縮字代表346顯示字7至字0如何儲存在SIMD暫存器中。有符號的緊縮字代表347類似於無符號的緊縮字暫存器中代表346。注意,各字資料元素的第十六位元是符號指示器。無符號的緊縮雙倍字代表348顯示雙倍字資料元素如何被儲存。有符號的緊縮雙倍字代表349類似於無符號的緊縮雙倍字暫存器中代表348。注意,所需的符號位元是各雙倍字資料元素的第三十二位元。
圖3D是具有三十二或更多位元、以及暫存器/記憶體運算元定址模式的運算編碼(運算碼)格式360的一實施例的說明,其符合「Intel® 64及IA-32英特爾架構軟體開發者手冊結合冊2A及2B:指令集代號A-Z」中所述的運算碼格式的型式,所述手冊可從加州聖克拉拉(Santa Clara)之英特爾公司的全球網頁(www)intel.com/products/processor/manuals/取得。在一實施例中,指令可由一或更多欄位361及362編碼。可以辨識高達一指令二個運算元位置,包含高達二個源運算元識別符
364和365。對於一實施例,目的地運算元識別符366與源運算元識別符364相同,而在其它實施例中它們是不同的。對於替代實施例,目的地運算元識別符366與源運算元識別符365相同,而在其它實施例中它們是不同的。在一實施例中,以源運算元識別符364和365識別的源運算元之一由指令的結果覆寫,而在其它實施例中,識別符364對應於源暫存器元素,以及識別符365對應於目的地暫存器元素。對於一實施例,運算元識別符364及365可用以識別32位元或64位元的源及目的地運算元。
圖3E說明具有四十或更多位元的另一替代運算編碼(運算碼)格式370。運算碼格式370符合運算碼格式360及包括選加的前置位元組378。根據一實施例的指令可由欄位378、371、及372中之一或更多編碼。可由源運算元識別符374和375以及由前置位元組378識別高達每一指令二個運算元位置。對於一實施例,前置位元組378可以用以識別32位元或64位元源及目的地運算元。對於一實施例,目的地運算元識別符376與源運算元識別符374相同,而在其它實施例中它們可以是不同的。對於替代實施例,目的地運算元識別符376與源運算元識別符375相同,而在其它實施例中它們是不同的。在一實施例中,指令對運算元識別符374和375識別的運算元中之一或更多操作,以及,由運算元識別符374和375識別的一或更多運算元由指令的結果覆寫,而在其它實施例中,由識別符374和375識別的運算元被寫至另一暫存器中的另
一資料元素。運算碼格式360和370允許部份地由MOD欄363和373及由選加的量表-指標-基礎和位移位元組指定的暫存器對暫存器、記憶體對暫存器、暫存器接記憶體、暫存器接暫存器、暫存器接直接、暫存器對記憶體定址。
接著,轉至圖3F,在某些替代實施例中,經由共處理器資料處理(CDP)指令,執行64位元(或是128位元、或是256位元、或是512位元或更多)單一指令多資料(SIMD)算術運算。運算編碼(運算碼)格式380說明具有CDP運算碼欄位382和389之一此CDP指令。CDP指令的型式對於替代實施例而言,運算可由欄位383、384、387、及388中之一或更多編碼。可以辨識每一指令高達三運算元位置,包含高達二個源運算元識別符385和390以及一目的地運算元識別符386。共處理器的一實施例可對8、16、32、及64位元值操作。對於一實施例,對整數資料元素執行指令。在某些實施例中,使用條件欄位381,條件式地執行指令。對於某些實施例,源資料大小可由欄位383編碼。在某些實施例中,對SIMD欄位進行零(Z)、負(N)、進位(C)、及溢位(V)偵測。對於某些指令,飽和的型式可由欄位384編碼。
接著轉至圖3G,說明根據另一實施例之另一替代的運算編碼(運算碼)格式397,提供具有預測遮罩的向量載入及/或儲存以提供條件式記憶體錯誤輔助抑制,其符合可從加州聖克拉拉(Santa Clara)之英特爾公司的全球
網頁(www)intel.com/products/processor/manuals/取得之「Intel®先進向量擴充程式化參考」中所述的運算碼格式的型式。
原始x86指令集提供1位元組運算碼不同格式的位址字節及含於增加的位元組中的直接運算元,直接運算元的存在是從第一「運算碼」位元組得知的。此外,有被保留作為運算碼的修飾符(當它們必須被置於指令之前時稱為前置)之某些位元組值。當256運算碼位元組(包含這些特別的前置值)的原始調色耗盡時,單一位元組專用作為逸出至新的256運算碼集合。當增加向量指令(例如,SIMD)時,產生更多運算碼需求,以及,即使當經由使用前置而擴充時,「二位元組」運算碼對映也仍是不足的。為達此目的,在使用2位元組加上選加選加的前置作為識別符的增加對映中,添加新的指令。
此外,為了方便64位元模式的增加暫存器,在前置與運算碼(以及決定運算碼所需的任何脫逸位元組)中使用增加的前置(稱為「REX」)。在一實施例中,REX具有4「酬載」位元以指示使用64位元模式的增加暫存器。在其它實施例中,可以具有多於或少於4位元。至少一指令集(大致上符合格式360及/或格式370)的一般格式大致上以下述表示:[prefixes][rex]escape[escape2]opcode modrm(等等)
運算碼格式397符合運算碼格式370以及包括選加的VEX前置位元組391(在一實施例中,始於C4十六進
位)以取代大部份的其它通常使用的舊制指令前置位元組及脫逸碼。舉例而言,下述顯示使用二欄位以將指令編碼的二欄位,當第二脫逸碼存在於原始指令中時、或是當在REX欄位中的額外位元(例如XB及W欄位)需要被使用時,所述指令可被使用。在下述實施例中,舊制脫逸以新的脫逸值表示,舊制前置被完全壓縮為「酬載」位元組的一部份,舊制的前置被重新主張且可用於未來的擴充,以及,第二脫逸碼被壓縮於「對映」欄位中,有未來對映或特徵脫逸可取得,以及,增加新的特點(例如,增加的向量長度及增加的源暫存器說明符)。
根據一實施例的指令可以由一或更多欄位391及392編碼。以欄位391結合源運算元識別符374及375以及結合選加的量表-指標-基礎(SIB)識別符393、選加的位移識別符394、及選加的直接位元組395,來識別高達每一指令四個運算元位置。對於一實施例,VEX前置位元組391可以用以識別32位元或64位元源及目的地運算元以及/或128位元或256位元SIMD暫存器或記憶體運算元。對於一實施例,由運算碼格式397提供的功可能因為運算碼格式370而為多餘的,而在其它實施例中,它們是不同的。運算碼格式370及397允許部份地由MOD欄
373及由選加(SIB)識別符393、選加的位移識別符394、以及選加的直接位元組395明定的暫存器對暫存器、記憶體對暫存器、暫存器接記憶體、暫存器接暫存器、暫存器接直接、暫存器記憶體定址。
接著參考圖3H,說明根據另一實施例的另一替代的運算編碼(運算碼)格式398,以提供具有預測遮罩之向量載入及/或儲存,以提供條件式記憶體錯誤輔助抑制。運算碼格式398符合運算碼格式370和397以及包括選加的EVEX前置位元組396(在一實施例中始於62十六進位)以取代大部份的其它通常使用的舊制指令前置位元組及脫逸碼以及提供增加的功能。根據一實施例的指令可由欄位396及392中之一或更多編碼。以欄位396結合源運算元識別符374及375以及結合選加的量表-指標-基礎(SIB)識別符393、選加的位移識別符394、及選加的直接位元組395,以識別每一指令及遮罩高達四個運算元位置。對於一實施例,EVEX前置位元組396可以用以識別32位元或64位元源及目的地運算元以及/或128位元、256位元或512位元的SIMD暫存器或記憶體運算元。對於一實施例,由運算碼格式398提供的功可能因為運算碼格式370或397而為多餘的,而在其它實施例中,它們是不同的。運算碼格式398允許部份地由MOD欄373及由選加(SIB)識別符393、選加的位移識別符394、以及選加的直接位元組395明定之具有遮罩的暫存器對暫存器、記憶體對暫存器、暫存器接記憶體、暫存器接暫存器、暫
存器接直接、暫存器對記憶體定址。至少一指令集的一般格式(一般符合格式360及/或格式370)一般由下述說明:evex1 RXBmmmmm WvvvLpp evex4 opcode modrm[sib][disp][imm]
對於一實施例,根據EVEX格式398編碼的指令具有增加的「酬載」位元,可用以提供具有預測遮罩之向量載入及/或儲存以提供具有新特點之條件式記憶體錯誤輔助抑制,舉例而言,新特點可為使用者可規劃的遮罩暫存器、或是增加的運算元、或是從128位元、256位元或512位元向量暫存器中選取、或是可選取的更多暫存器、等等。
舉例而言,VEX格式397可用以提供具有預測遮罩之向量載入及/或儲存以提供具有隱含遮罩之條件式記憶體錯誤輔助抑制,VEX格式398可用以提供具有預測遮罩之向量載入及/或儲存以提供具有明確的使用者可規劃遮罩之條件式記憶體錯誤輔助抑制。此外,在VEX格式397被用以在128位元或256位元的向量暫存器上提供具有預測遮罩之向量載入及/或儲存以提供條件式記憶體錯誤輔助抑制之情形中,EVEX格式398可被用以在128位元、256位元、512位元或更大的(或更小的)向量暫存器上提供具有預測遮罩之向量載入及/或儲存以提供條件式記憶體錯誤輔助抑制。
以下述實例說明提供條件式記憶體錯誤輔助抑制之具有預測遮罩之向量或條件式載入及/或儲存的某些實例:
圖4A是方塊圖,顯示根據本發明的至少一實施例之依序管路及暫存器重命名級、失序核發/執行管路。圖4B是方塊圖,顯示根據本發明的至少一實施例之要包含於處理器中之依序架構核心及暫存器重命名邏輯、失序核發/執行邏輯。圖4A中的實線框顯示依序管線,而虛線框顯示暫存器重命名、失序核發/執行管線。類似地,圖4B中的實線框顯示依序架構邏輯,而虛線框顯示暫存器重命名邏輯及失序核發/執行邏輯。
在圖4A中,處理器管線400包含提取級402、長度解碼級404、解碼級406、分配級408、指令緩衝級409、重命名級410、排程(也稱為派遣或核發)級412、暫存器讀取/記憶體讀取級414、執行級416、錯誤輔助抑制儲存器417、寫回/記憶體寫入級418、錯誤輔助抑制退出級
419、錯誤輔助級423、例外處理級422、及委託級424。
在一實施例中,解碼級406將明定一組記憶體載入運算、目的地暫存器、及一或更多記憶體位址之單指令多資料(SIMD)指令解碼。SIMD指令可為向量載入運算類的指令,舉例而言,其明定一組記憶體載入運算由算術運算或型式轉換跟隨在後,或是單純為向量載入指令。跟隨在解碼級406之後,某些實施例包含分配級408,其中,資源分配給包含緩衝器409位置的指令。舉例而言,緩衝器409包括重排序緩衝器(ROB),以特別地追蹤失序執行引擎中的指令執行的順序次序。在某些實施例中,向量載入運算及向量算術運算佔據單一緩衝器409位置以最終同時退出。在替代實施例中,它們可以佔據分別的指令緩衝器409項。
一或更多執行單元產生用於載入運算之記憶體位址,以回應經過解碼的指令。在某些實施例中,SIMD指令使用預測遮罩以將用於特定向量元素的指定運算條件式地賦能/禁能,或是使用完成遮罩以追蹤特定向量元素的成功完成及避免在重新啟動指令之後重複存取。在某些處理器架構中,在成功載入或儲存記憶體位置之後,保留機器的狀態,但是任何發生的錯誤或例外會被延擱直到向量指令退出為止。在使用預測遮罩或完成遮罩以條件式地載入或儲存記憶體位置的情形中,某些發生的錯誤或例外對應於預測遮罩或完成遮罩被用以抑制真正記憶體存取中的某些存取。在此情形中,在向量指令退出之任何延擱的錯誤或
例外之處理包含錯誤輔助級423,以檢查預測遮罩或完成遮罩是否被用以抑制錯誤記憶體存取,藉以避免喚起用於被遮罩的記憶體錯誤之例外處理級422。
雖然錯誤輔助級423可避免真正地喚起用於被遮罩的記憶體錯誤之錯誤處理器,但是,其仍然要求某些處理(例如,在微碼中以讀取遮罩暫存器及將其與錯誤元素比較),在當無錯誤未被遮罩時的情形中,這些處理會造成可以與分支誤預測損失的等級相比之管線性能損失。因此,管線400的實施例包含執行級416以讀取遮罩暫存器及記錄一或更多錯誤抑制位元於對應的指令緩衝器409項中之Z指示器417,以指示載入運算的一或更多部份是否被遮罩以抑制在退出級419的延擱錯誤。因此,在退出時,假使當無錯誤未被遮罩時,Z指示器419提供給錯誤輔助級423以抑制進一步處理錯誤,藉以避免管線400中誤預測分支等級之性能損失。
因此,無論載入運算中之一或更多運算何時對應於被指示成被Z指示器419中的一或更多錯誤抑制位元遮罩之載入運算的一部份,在輔助級423的錯誤產生邏輯被抑制免於考慮對應於載入運算中之該一或更多運算之記憶體錯誤。將瞭解,當被遮罩的錯誤以任何頻率發生時(例如,在未捲動迴路存取結束時,或是當對記憶體中稀疏散佈的位置特別地作向量載入/儲存時),造成的性能損失代表瓶頸,限制來自寬或大寬度向量架構之其它情形中期望的性能優點。因此,執行具有預測遮罩的向量載入及/或儲
存以提供條件式記憶體錯誤輔助抑制之根據管線400的實施例避免此性能損失,代表管線處理之顯著的技術進步。
在圖4B中,箭頭代表二或更多單元之間的耦合以及箭頭的方向表示在這些單元之間的資料流動方向。圖4B顯示處理器核心490,處理器核心490包含耦合至執行引擎單元450之前端單元430,引擎單元450及前端單元430都耦合至記憶體單元470。
核心490可為精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、超長指令字(VLIW)核心、或是混合或替代核心型式。關於又另一選項,核心490可為特別用途的核心,舉例而言,例如網路或通訊核心、壓縮引擎、圖形核心、等等。
前端單元430包含分支預測單元432,分支預測單元432耦合至指令快取單元434,指令快取單元434耦合至指令轉譯旁看緩衝器(TLB)436,指令轉譯旁看緩衝器(TLB)436耦合至指令提取單元438,指令提取單元438耦合至解碼單元440。解碼單元或解碼器將指令解碼,以及產生一或更多微運算、微碼登入點、微指令、其它指令、或是從原始指令解碼、或是其它方式反應原始指令或從原始指令導出的其它控制訊號,作為輸出。使用各種不同的機構,以實施解碼器。適當的機構實例包含但不限於查詢表、硬體實施、可編程邏輯陣列(PLA)、微碼唯讀記憶體(ROM)、等等。指令快取單元434又耦合至記憶體單元470中的階層2(L2)快取單元476。解碼單元
440耦合至執行引擎單元450中的重命名/分配器單元452。
執行引擎單元450包含重命名/分配器單元452,命名/分配器單元452耦合至退出單元454及一或更多排程器單元456的集合。排程器單元456代表任何數目的不同排程器,包含保留站、中央指令窗、等等。排程器單元456耦合至實體暫存器檔案單元458。各實體暫存器檔案單元458代表一或更多實體暫存器檔案,不同的實體暫存器檔案儲存例如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、等等一或更多不同的資料型式、狀態(例如,指令指標,指令指標是要被執行的下一指令的位址)、等等。實體暫存器檔案458由退出單元454重疊,以顯示實施暫存器重命名及失序執行的各種方式(例如,使用重排序緩衝器及退出暫存器檔案,使用未來檔案、歷史緩衝器、及退出暫存器檔案;使用暫存器對映及暫存器庫;等等)。一般而言,從處理器外部或是從程式設計人員的觀點,可看到架構暫存器。暫存器不限於任何習知的特定型式的電路。只要能夠如此處所述般儲存及提供資料,則各種不同型式的暫存器都是適合的。適合的暫存器實例包含但不限於專用實體暫存器、使用暫存器重命名的動態分配實體暫存器、專用及動態分配的實體暫存器的組合、等等。退出單元454及實體暫存器檔案458耦合至執行叢集460。執行叢集460包含一或更多執行單元462的集合以及一或更多記憶體存取單元464的集合。執
行單元462執行不同的運算(例如,偏移、加法、減法、乘法)以及對不同型式的資料執行(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)。雖然某些實施例包含專用於特定功能或功能集的一些執行單元,但是,其它實施例可以僅包含一執行單元或是多個都執行所有功能的執行單元。由於某些實施例產生用於某些型式的資料/運算之分別的管線(例如,均具有它們自己的排程器單元、實體暫存器檔案單元、及/或執行叢集的純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線、及/或記憶體存取管線,以及,在分別的記憶體存取管線的情形中,實施某些實施例,其中,僅有此管線的執行叢集具有記憶體存取單元464),所以,排程器單元456、實體暫存器檔案單元458、及執行叢集460顯示為可能是複數的。也應瞭解,在使用分別的管路時,這些管路中之一或更多可以是失序核發/執行,而其它的是依序的。
記憶體存取單元464的集合耦合至記憶體單元470,記憶體單元470包含耦合至資料快取單元474的資料TLB單元472,資料快取單元474耦合至階層2(L2)快取單元476。在一舉例說明的實施例中,記憶體存取單元464包含載入單元、儲存位址單元、及儲存資料單元,各單元耦合至記憶體單元470中的資料TLB單元472。L2快取單元476耦合至一或更多其它階層的快取記憶體以及最後耦合至主記憶體。
舉例而言,舉例說明的暫存器重命名、失序核發/執行核心架構如下所述地實施管線400:1)指令提取438執行提取及長度解碼級402和404;2)解碼單元440執行解碼級406;3)重命名/分配器單元452執行分配級408及重命名級410;4)排程器單元456執行排程級412;5)實體暫存器檔案單元458及記憶體單元470執行暫存器讀取/記憶體讀取級414;執行叢集460執行執行級416;6)記憶體單元470及實體暫存器檔案單元458執行寫回/記憶體寫入級418;7)各種單元,涉及例外處理級422;以及,8)退出單元454及實體暫存器檔案單元458執行委託級424。
核心490支援一或更多指令集(例如,x86指令集(加上較新版本的某些擴充);加州太陽谷的MIPS Technologies的MIPS指令集;加州太陽谷的ARM Holdings的ARM指令集(加上選加的例如NEON等增加擴充))。
應瞭解,核心支援多緒(執行二或更多平行的運算或緒),以及,以各種方式如此執行,這些方式包含時間切割多緒、同時多緒(其中,單一實體核心提供用於實體核心同時正多緒化的多個緒中的各緒之邏輯核心)、或是其組合(例如,時間切割提取及解碼以及其後的同時多緒,例如Intel® Hyperthreading technology中所示)。
雖然在失序執行的環境中說明暫存器重命名,但是,應瞭解,暫存器重命名可用於依序架構中。雖然所示的處
理器的實施例也包含分別的指令及資料快取單元434/474以及共用的快取單元476,替代實施例具有用於指令及資料之單一內部快取,例如階層1(L1)內部快取、或是多階層的內部快取。在某些實施例中,系統包含內部快取及外部快取的組合,外部快取是核心及/或處理器的外部。替代地,所有的快取可以是核心及/或處理器的外部。
圖5是根據本發明的實施例之設有整合的記憶體控制及圖形之單核心處理器及多核心處理器500的方塊圖。圖5中的實線框顯示處理器500,其設有單一核心502A、系統代理器510、一或更多匯流排控制器單元516的集合,而選加增加的虛線框顯示替代處理器500,其設有多核心502A-N、系統代理器單元510中的一或更多整合的記憶體控制單元514的集合、以及整合圖形邏輯508。
記憶體階層包含核心之內的一或更多層級快取記憶體、一集合或一或更多共用的快取單元506、及耦合至整合的記憶體控制器單元514的集合之外部記憶體(未顯示)。共用快取單元506的集合包含一或更多中層級快取記憶體,例如階層2(L2)、階層3(L3)、階層4(L4)、或其它階層的快取記憶體、最後階層快取記憶體(LLC)、及/或其組合。雖然在一實施例中,環式互連單元512互連整合的圖形邏輯508、共用快取單元506的集合、及系統代理器單元510,但是,替代實施例可以使用任何數目的用於互連這些單元之習知技術。
在某些實施例中,一或更多核心502A-N能夠多緒
的。系統代理器單元510包含協調及操作核心502A-N的那些組件。舉例而言,系統代理器單元510包含電力控制單元(PCU)及顯示單元。PCU可為或包含調整核心502A-N及整合圖形邏輯508的電力狀態所需之邏輯及組件。顯示單元是用於驅動一或更多外部連接的顯示器。
以架構及/或指令集的觀點而言,核心502A-N可以是同質的或是異質的。舉例而言,核心502A-N中的某些核心可以是依序的,而其它是失序的。關於另一實例,核心502A-N中的二或更多核心能夠執行相同的指令集,而其它核心能夠僅執行該指令集的子集合或是不同的指令集。
處理器可為一般用途的處理器,例如CoreTM i3、i5、i7、2 Duo及Quad、XeonTM、ItaniumTM、XScaleTM或是StrongARMTM處理器,這些處理器可從加州聖克拉拉(Santa Clara)之英特爾公司取得。替代地,可以從例如ARM Holdings,Ltd.、MIPS、等公司取得處理器。處理器可以是特別用途的處理器,舉例而言,例如網路或通訊處理器、壓縮引擎、圖形處理器、共處理器、嵌入式處理器、等等。可以在一或更多晶片上實施處理器。使用例如BiCMOS、CMOS、或NMOS等一些製程技術中的任何技術,處理器500可以實施在一或更多基底上或是其一部份。
圖6-8是適合包含處理器500的舉例說明的系統,而圖9是舉例說明的系統晶片(SoC),其包含一或更多核
心502。用於膝上型電腦、桌上型電腦、手持個人電腦、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換機、嵌入式處理器、數位訊號處理器(DSP)、圖形裝置、電子遊戲裝置、機上盒、微處理器、蜂巢式電話、可攜式媒體播放器、手持裝置、及各式各樣的其它電子裝置之此技藝中習知的其它系統設計及配置也是適用的。一般而言,能夠包含如此處所揭示的處理器及/或其它執行邏輯的眾多各式各樣的系統或電子裝置一般也適用。
現在參考圖6,其顯示根據本發明的一實施例之系統600的方塊圖。系統600包含耦合至圖形記憶體控制器集線器(GMCH)620之一或更多處理器610、615。增加的處理器615的選加本質於圖6中以虛線指示。
各處理器610、615可為某版本的處理器500。但是,應注意,整合的圖形邏輯及整合的記憶體控制單元不可能存在於處理器610、615中。圖6顯示GMCH 620耦合至記憶體640,舉例而言,記憶體640可為動態隨機存取記憶體(DRAM)。對於至少一實施例,DRAM可以是與非依電性快取記憶體相關連的。
GMCH 620可為晶片組或部份晶片組。GMCH 620與處理器610、615通訊以及控制處理器610、615與記憶體640之間的相互作用。GMCH 620也作為處理器610、615與系統600的其它元素之間的加速匯流排介面。對於至少一實施例,GMCH 620經由例如前側匯流排(FSB)695
等多點連接匯流排而與處理器610、615通訊。
此外,GMCH 620耦合至顯示器645(例如平板顯示器)。GMCH 620包含整合的圖形加速器。GMCH 620又耦合至輸入/輸出(I/O)控制器集線器(ICH)650,ICH 650用以耦合各式各樣的週邊裝置至系統600。舉例而言,圖6的實施例中顯示外部圖形裝置660,外部圖形裝置660是與另一週邊裝置670一起耦合至ICH 650的離散圖形裝置。
替代地,增加的或不同的處理器也存在於系統600中。舉例而言,增加的處理器615包含與處理器610相同之增加的處理器、與處理器610異質的或是不對稱的增加的處理器、加速器(舉例而言,例如圖形加速器或數位訊號處理(DSP)單元)、現場可編程閘陣列、或是任何其它處理器。以包含架構、微架構、熱、耗電特徵、等等指標度量之範圍而言,在實體資源610、615之間有各式各樣的差異。這些差異有效地突顯它們本身在處理器610、615之間的不對稱性及異質性。對於至少一實施例,各式各樣的處理器610、615設於相同晶粒封裝中。
現在參考圖7,其顯示根據本發明的實施例之第二系統700的方塊圖。如圖7所示,多處理器系統700是點對點互連系統,以及包含經由點對點互連750而耦合的第一處理器770和第二處理器780。如同處理器610、615中之一或更多般,各處理器770和780可為某些版本的處理器500。
雖然僅顯示二處理器770、780,但是,須瞭解本發明的範圍不侷限於此。在其它實施例中,一或更多增加的處理器可以存在於給定的處理器中。
處理器770及780顯示為分別包含整合的記憶體控制器單元772和782。處理器770也包含點對點(P-P)介面776和778作為其匯流排控制器單元的部份;類似地,第二處理器780包含P-P介面786和788。處理器770、780使用P-P介面電路778、788而經由點對點(P-P)介面750來交換資料。如圖7中所示,IMC 772及782將處理器耦合至各別記憶體,亦即記憶體732和記憶體734,它們可為本地地附著至各別處理器之主記憶體的部份。
使用點對點介面電路776、794、786、798,處理器770、780經由個別的P-P介面752、754而各別地與晶片組790交換資訊。晶片組790經由高性能圖形介面739,也與高性能圖形電路738交換資訊。
共用的快取記憶體(未顯示)可以包含在二處理器外部中、或任一處理器中,又經由P-P互連而與處理器連接,以致於假使處理器被置於低功率模式中時,任一或二處理器的本地快取記憶體資訊可以儲存在共用快取記憶體中。
晶片組790經由介面796而耦合至第一匯流排716。在一實施例中,第一匯流排716可為週邊組件互連(PCI)匯流排、或是例如快速PCI匯流排等匯流排或是其它第三代的I/O互連匯流排,但是,本發明的範圍不受
限於此。
如圖7所示,各式I/O裝置714可以與匯流排橋接器718耦合至第一匯流排716,匯流排橋接器718將第一匯流排716耦合至第二匯流排720。在一實施例中,第二匯流排720是低腳數(LPC)匯流排。各式裝置可以耦合至第二匯流排720,在一實施例中,舉例而言,各式裝置包含鍵盤及/或滑鼠722、通訊裝置727及例如包含指令/碼及資料730的其它大量儲存裝置及硬碟機等儲存單元728。此外,音頻I/O 724耦合至第二匯流排720。注意,其它架構是可能的。舉例而言,取代圖7的點對點架構,系統可以實施多點連接匯流排或是其它此類架構。
現在參考圖8,其顯示根據本發明的實施例之第三系統800的方塊圖。圖7和圖8中的類似元素帶有類似代號,圖7的某些態樣在圖8中省略,以免模糊圖8的其它態樣。
圖8顯示處理器870、880分別包含整合的記憶體及I/O控制邏輯(CL)872和882。對於至少一實施例,CL 872、882包含整合的記憶體控制器單元,例如上述配合圖5及7所述的整合的記憶體控制器單元。此外,CL 872、882也包含I/O控制邏輯。圖8顯示不僅記憶體832、834耦合至CL 872、882,輸入/輸出(I/O)裝置814也耦合至控制邏輯872、882。舊制輸入/輸出(I/O)裝置815耦合至晶片組890。
現在參考圖9,其顯示根據本發明的實施例之系統晶
片(SoC)900的方塊圖。圖5中類似的元素帶有類似的代號。而且,虛線框是更先進的SoC上選加的特點。在圖9中,互連單元902耦合至:應用處理器910,其包含一或更多核心502A-N及共用快取單元506之集合;系統代理器單元510;匯流排控制器單元516;整合記憶體控制單元514;一組一或更多媒體處理器920,其包含整合圖形邏輯508、用於提供靜態及/或攝影相機功能的影像處理器924、用於提供硬體音頻加速的音頻處理器926、以及用於提供視頻編碼/解碼加速的視頻處理器928;靜態隨機存取記憶體(SRAM)單元930;直接記憶體存取(DMA)單元932;以及,用於耦合至一或更多外部顯示器的顯示單元940。
圖10顯示含有中央處理單元(CPU)及圖形處理單元(GPU)的處理器,其可執行根據一實施例之至少一指令。在一實施例中,根據至少一實施例之用以執行運算的指令可由CPU執行。在另一實施例中,指令可由GPU執行。在又另一實施例中,經由GPU及CPU執行的運算的組合,執行指令。舉例而言,在一實施例中,接收及解碼根據一實施例的指令以在GPU上執行。但是,在已解碼的指令之內的一或更多運算可由CPU執行且結果歸還至GPU以用於指令的最後退出。相反地,在某些實施例中,CPU作為主處理器及GPU作為共處理器。
在某些實施例中,從高度平行、輸貫量處理器得利的指令可以由GPU執行,而從深度管線化架構得利的處理
器性能而得利的指令可由CPU執行。舉例而言,圖形、科學應用、財務應用及其它平行酬載可從GPU的性能得利並因而被執行,而例如作業系統核心或應用碼等更多的順序應用可以較佳地適合CPU。
在圖10中,處理器1000包含CPU 1005、GPU 1010、影像處理器1015、視頻處理器1020、USB控制器1025、UART控制器1030、SPI/SDIO控制器1035、顯示裝置1040、高清晰度多媒體介面(HDMI)控制器1045、MIPI控制器1050、快閃記憶體控制器1055、雙倍資料速率(DDR)控制器1060、安全引擎1065、及I2S/I2C(整合的晶片間聲音/整合電路之間)介面1070。其它邏輯及電路可以包含在圖10的處理器中,所述處理器包含更多CPU或GPU及其它週邊介面控制器。
至少一實施例的一或更多態樣可由儲存在機器可讀取的媒體上的代表資料實施,所述代表資料代表處理器之內的各種邏輯,當由機器讀取時促使機器製造邏輯以執行此處所述的技術。這些代表,稱為「IP核心」,可以儲存在實體的、機器可讀取的媒體(磁帶(tape))中及供應給各式各樣的客戶或製造設備以載入真正製造邏輯或處理器的製造機器中。舉例而言,例如ARM Holdings,Ltd.開發的CortexTM系列處理器、以及由中國科學院的計算技術研究所(ICT)開發的龍芯(Loongson)IP核心等IP核心可以授權或賣給例如德州儀器(Texas Instruments)、高通(Qualcomm)、蘋果(Apple)、或三星(Samsung)等
各式各樣的客戶或被授權者,且實施於這些客戶或被授權者製造的處理器中。
圖11顯示根據一實施例的IP核心開發的方塊圖。儲存器1130包含模擬軟體1120及/或硬體或軟體模型1110。在一實施例中,代表IP核心設計的資料經由記憶體1140而提供給儲存器1130(例如,硬碟機)、有線連結(例如網際網路)1150或是無線連結1160。由模擬工具及模型產生的IP核心資訊接著被傳送至製造設備,其中,製造設備由第三方製造以執行根據至少一實施例的至少一指令。
在某些實施例中,一或更多指令對應於第一型或架構(例如,x86)且在不同型式或架構(例如ARM)的處理器上被轉譯或模仿。根據一實施例的指令因而可在包含ARM、x86、MIPS、GPU、或其它處理器型式或架構等任何處理器或處理器型式上執行。
圖12顯示根據一實施例之第一型式的指令如何由不同型式的處理器模仿。在圖12中,程式1205含有執行與根據一實施例的指令相同或是實質上相同的功能之某些指令。但是,程式1205的指令可以是不同於或不並容於處理器1215之型式及/或格式,意指程式1205中的型式的指令不能夠由處理器1215自然地執行。但是,藉由模仿邏輯1210的幫助,程式1205的指令被轉譯成自然地能夠由處理器1215執行的指令。在一實施例中,模仿邏輯以硬體具體實施。在另一實施例中,模仿邏輯具體地實施於
含有軟體的實體的、機器可讀取的媒體中,以將程式1205中的型式的指令轉譯成可由處理器1215自然地執行的型式。在其它實施例中,模仿邏輯是固定功能或是可編程的硬體及儲存在實體的、機器可讀取的媒體上的程式之結合。在一實施例中,處理器含有模仿邏輯,而在其它實施例中,模仿邏輯存在於處理器的外部且由第三方提供。在一實施例中,藉由執行含於處理器中或是與處理器相關連的微碼或韌體,處理器能夠載入具體實施於含有軟體之實體的、機器可讀取的媒體中的模仿邏輯。
圖13是方塊圖,用以對比根據本發明之實施例中使用軟體指令轉換器以將源指令集中的二進位指令轉換成目標指令集中的二進位指令。在所示的實施例中,指令轉換器是軟體指令轉換器,但是,替代地,指令轉換器可以以軟體、韌體、硬體、或其各式各樣的組合實施。圖13顯示高階語言程式1302,可以使用x86編譯器1304將其編譯以產生x86二進位碼1306,x86二進位碼1806可由設有至少一x86指令集核心1316的處理器自然地執行。設有至少一x86指令集核心1316的處理器代表執行與設有至少一x86指令集核心的英特爾處理器實質相同的功能之任何處理器,其藉由並容地執行或是以其它方式處理:(1)Intel x86指令集核心的指令的實質部份、或是(2)以在設有至少一x86指令集核心的英特爾處理器上運行為目標之其它程式或應用程式的物件碼版本,以取得與設有至少一x86指令集核心的英特爾處理器實質上相同的結
果。x86編譯器1304代表可操作以產生x86二進位碼1306(例如物件碼)之編譯器,無論是否有增加的鏈結處理,二進位碼1306都可以在設有至少一x86指令集核心1316的處理器上執行。類似地,圖13顯示高階語言程式1302,可以使用替代的指令集編譯器1308以將其編譯,以產生替代的指令集二進位碼1310,指令集二進位碼1310可由未設有至少一x86指令集核心1314的處理器自然地執行(例如,設有執行位於加州太陽谷的MIPS TECHNOLOGIES的MIPS指令集、及/或位於加州太陽谷的ARM Holdings的ARM指令集的核心之處理器)。指令轉換器1312用以將x86二進位碼1306轉換成可由未設有x86指令集核心1314的處理器自然地執行的碼。由於能夠這樣的指令轉換器難以製作,所以,此轉換碼難以與替代指令集二進位碼1310相同;但是,轉換碼將完成一般操作及由來自替代指令集的指令組成。因此,指令轉換器1312代表軟體、韌體、硬體、或其組合,其經由模仿、模擬或任何其它處理,允許未具有x86指令集處理器或是核心的處理器或其它電子裝置執行x86二進位碼1306。
圖14顯示包含管線1400以執行具有預測遮罩之向量載入及/或儲存以提供條件式記憶體錯誤輔助抑制之處理器微架的一替代實施例的元素。處理器管線1400包含預提取器1412、解碼器1416、分配器/重命名器1420、指令緩衝器1419、位址產生器1422、暫存器讀取/記憶體讀取
級1424、執行引擎1426、錯誤輔助抑制儲存器1427、寫回/記憶體寫入級1428、在退出級1433中的錯誤輔助抑制1429、錯誤輔助級1432、及委託級1434預提取器1412將指令(例如1402和1403)提取至指令佇列(IQ)1413中,解碼器1416將指令解碼以在微運算(uOP)佇列1417中產生微運算(例如1404、1405、1406及1407)。
在一實施例中,解碼器1416將明定一組記憶體載入運算、源/目的地暫存器、及一或更多記憶體位址之一或更多單指令多資料(SIMD)指令解碼。一或更多SIMD指令可為向量載入op類指令(例如,1402),其明定一組記憶體載入運算,用以被算術運算或類型變換所跟隨,或者可簡單地為向量載入指令。一或多個SIMD指令可為向量儲存op類指令。其明定一組記憶體儲存運算,用以被算術運算或類型變換所領先,或者可簡單地為向量儲存指令(例如,1403)。跟隨在解碼級1416之後,一或更多微運算可以儲存在uOP佇列1417中。一或更多微運算可以儲存為簡單的微運算(例如1404-1407)或複雜的微運算或微碼登入點、或融合的微運算。管線1400的某些實施例包含分配器/重命名器1420,其中,資源(例如暫存器等等)分配給包含緩衝器1419位置的指令。舉例而言,緩衝器1419包括重排序緩衝器(ROB),以特別地追蹤有序及失序執行引擎1426中的指令執行的順序次序。在某些實施例中,向量載入微運算(例如1404)及向量算術微運算(例如1405)都佔據單一緩衝器1419位
置(例如1408)以最終同時退出。類似地,向量儲存位址微運算(例如1406)及向量儲存資料微運算(例如1407)都佔據單一緩衝器1419位置(例如1409)以最終同時退出。在替代實施例中,它們都佔據分別的指令緩衝器1419項。
位址產生器1422的一或更多執行單元產生用於對應的記憶體運算之記憶體位址,以回應經過解碼的一或更多SIMD指令。在某些實施例中,一或更多SIMD指令使用預測遮罩以將用於特定向量元素的指定運算條件式地賦能/禁能,或是使用一或更多完成遮罩以追蹤特定向量元素的成功完成及避免在重新啟動指令之後重複存取。在某些處理器架構中,在成功載入或儲存記憶體位置之後,保留機器的狀態,但是任何發生的錯誤或例外會被延擱直到向量指令退出1433為止。在使用預測遮罩或完成遮罩以條件式地載入或儲存記憶體位置的情形中,某些發生的錯誤或例外對應於預測遮罩或完成遮罩被用以抑制真正記憶體存取中的某些存取。在此情形中,在向量指令退出1433之任何延擱的錯誤或例外之處理包含錯誤輔助級1432,以檢查預測遮罩或完成遮罩是否被用以抑制錯誤記憶體存取,藉以避免喚起用於被遮罩的記憶體錯誤之例外處理器4。
雖然錯誤輔助級1432可避免真正地喚起用於被遮罩的記憶體錯誤之錯誤處理器,但是,其仍然要求某些處理(例如,在微碼中以讀取遮罩暫存器及將其與錯誤元素比
較),在當無錯誤未被遮罩時的情形中,這些處理會造成可以與分支誤預測損失的等級之管線1400的性能損失。因此,管線1400的實施例包含執行級1426以讀取遮罩暫存器及記錄一或更多錯誤抑制位元於對應的緩衝器1419項中之Z指示器1427(也稱為錯誤抑制欄),以指示記憶體運算的一或更多部份是否被遮罩以抑制在退出1433的延擱錯誤。因此,在退出1433,假使當無錯誤未被遮罩時,Z指示器1429提供給錯誤輔助邏輯1432以抑制進一步處理錯誤,藉以避免管線1400中誤預測分支等級之性能損失。
因此,無論記憶體運算中之一或更多運算何時對應於被指示成被Z指示器1429中的一或更多錯誤抑制位元遮罩之記憶體運算的一部份,在錯誤輔助級1432的錯誤產生邏輯被抑制免於考慮對應於記憶體運算中之該一或更多運算之記憶體錯誤。將瞭解,當被遮罩的錯誤以任何頻率發生時(例如,在未捲動迴路存取結束時,或是當對記憶體中稀疏散佈的位置特別地作向量載入/儲存時),造成的性能損失代表瓶頸,限制來自寬或大寬度向量架構之其它情形中期望的性能優點。因此,執行具有預測遮罩的向量載入及/或儲存以提供條件式記憶體錯誤輔助抑制之根據管線1400的實施例避免此性能損失,代表管線處理之顯著的技術進步。
一或更多錯誤抑制位元(例如417或1427)會一次發生或是替代地在不同的級中發生。舉例而言,對應於用
於載入/儲存的元素之各遮罩位元可被記錄於指令緩衝器項中。替代地,指示所有元素的遮罩位元是零(0)之一個單一錯誤抑制位元可記錄於指令緩衝器項中。在其它實施例中,一或更多錯誤抑制位元可以記錄於錯誤抑制欄位中,以指示一或更多最高有效遮罩位元(例如,最後二個、最後四個、等等)或是一或更多最高有效及/或最低有效遮罩位元(例如最後一半及/或前面一半)是零(0)。記錄一或更多錯誤抑制位元的這些替代方式之某些實施例顯示於下述實例中。
圖15A顯示的實施例為預測遮罩對映1501至指令緩衝器中的錯誤抑制欄位以提供條件式記憶體錯誤輔助抑制。在從最低有效位元(LSB)1521開始且不一定包含最高有效位元(MSB)1522的一實施例中,如同預測遮罩的對映1501(以及此處所示的其它對映)中所示般,暫存器1518的各元素1510-1517對應於遮罩1520中的特定遮罩位元素值。根據錯誤抑制欄位中一或更多錯誤抑制位元的記錄,對應於記憶體運算組(例如,用於向量載入/儲存指令)的指令緩衝器項1519與錯誤抑制欄位相關連以提供條件式記憶體錯誤輔助抑制。舉例而言,緩衝器1519包括重排序緩衝器(ROB)中的項,以追蹤其中失序執行引擎中的指令執行的順序次序。在某些實施例中,向量載入微運算及向量算術微運算都佔據單一緩衝器項1519位置以最終同時退出。類似地,向量儲存位址微運算及向量儲存資料微運算都佔據單一緩衝器項1519位置
以最終同時退出。在替代實施例中,它們可在ROB中各佔據分別的緩衝器項1519位置。如同預測遮罩1520對映1501至錯誤抑制欄1527所示般,在錯誤抑制欄1527中一個單一錯誤抑制位元被用以指示所有元素的遮罩1520是零(0),以及,在某些實施例中,僅有一單一錯誤抑制位元會被記錄於指令緩衝器項1519的錯誤抑制欄1527中。在某些替代實施例中,一個以上的錯誤抑制位元可以記錄在錯誤抑制欄1527中。
圖15B顯示預測遮罩1520對映1502至指令緩衝器中的一或更多錯誤抑制欄位以提供條件式記憶體錯誤輔助抑制之一實施例。如同預測遮罩1520對映1502至錯誤抑制欄1527-1529中所示般,錯誤抑制欄1529中一或更多錯誤抑制位元可被用以指示二最高有效元素的(例如1516-1517)的遮罩1520位元是零(0);錯誤抑制欄1528中一或更多錯誤抑制位元可被用以指示四最高有效元素(例如1514-1517)的遮罩1520是零(0);…以及,錯誤抑制欄1527中一或更多錯誤抑制位元可被用以指示所有元素(例如1510-1517)的遮罩1520是零(0)。在某些實施例中,僅有一單一錯誤抑制位元會被記錄於指令緩衝器項1519的各錯誤抑制欄1527-1529中。在某些替代實施例中,舉例而言,一個以上的錯誤抑制位元可以記錄在各錯誤抑制欄1527-1529中,以使二最高有效的元素錯誤抑制欄1529賦能/禁能、使四最高有效的元素錯誤抑制欄1528賦能/禁能、等等。
圖15C顯示預測遮罩對映1503至指令緩衝器中的錯誤抑制欄位以提供條件式記憶體錯誤輔助抑制之另一替代實施例。如同預測遮罩1520對映1503至錯誤抑制欄1526中所示般,用於元素的遮罩1520之一錯誤抑制位元可被用以指示任何元素的遮罩1520位元是零(0)以及可被記錄於指令緩衝器項1519的錯誤抑制欄1526中。在某些替代實施例中,舉例而言,用於各元素的遮罩1520位元之一個以上的錯誤抑制位元可以記錄在錯誤抑制欄1526中,以指示向量大小、長度或計數。
圖15D顯示預測遮罩對映1504至指令緩衝器中的錯誤抑制欄位以提供條件式記憶體錯誤輔助抑制之另一替代實施例。如同預測遮罩1520對映1504至錯誤抑制欄1524-1525中所示般,錯誤抑制欄1525中一或更多錯誤抑制位元可被用以指示一半最高有效元素的(例如1514-1517)的遮罩1520位元是零(0);錯誤抑制欄1524中一或更多錯誤抑制位元可被用以指示一半最低有效元素(例如1510-1513)的遮罩1520是零(0)。在某些實施例中,僅有一單一錯誤抑制位元會被記錄於指令緩衝器項1519的各錯誤抑制欄1524-1525中。在某些替代實施例中,舉例而言,一個以上的錯誤抑制位元可以記錄在各錯誤抑制欄1524-1525中,以指示向量大小、長度或計數。
本發明的實施例涉及在執行向量載入/儲存指令以指示記憶體運算中的一或更多部份是否被遮罩之期間,根據對應的指令緩衝器項1519之錯誤制欄中一或更多錯誤抑
制位元(例如1524-1529中任一或更多)的記錄,執行用於具有預測遮罩之向量載入及/或儲存以提供條件式記憶體錯誤輔助抑制之指令。
圖16A顯示執行具有預測遮罩之條件式載入及/或儲存以提供條件式記憶體錯誤輔助抑制的處理1601的一實施例的流程圖。藉由包括可由一般用途機器或是特定目的機器或是二者的組合執行之軟體或韌體運算碼或專用硬體之處理區塊,執行此處揭示的處理1601及其它處理。
在處理1601的處理區1610中,記憶體運算被緩衝於對應於一或更多條件式載入/儲存指令之一或更多指令緩衝器項中。在某些實施例中,一或更多條件式載入/儲存指令是提供條件式記憶體錯誤輔助抑制之具有預測遮罩的單指令多資料(SIMD)指令。在某些替代實施例中,一或更多條件式載入/儲存指令可為一或更多條件式移動(CMOVcc)指令。在處理區1620中,產生對應於記憶體運算中的下一記憶體運算之下一記憶體位址。在處理區1630中,作成對下一記憶體位址的對應存取是否產生錯誤的決定。假使為否,則在處理區1640中,產生自/到該下一記憶體位址之向量元素的條件式載入/儲存且處理接著進行到處理區1650。否則,處理直接進行至處理區1650,於其中作成對應的存取是否被遮罩的決定。假使為是,則在處理區1660中,錯誤抑制欄在對應的指令緩衝器項中被更新,以致於為了一或更多延擱的錯誤而抑制錯誤輔助,以及,處理接著進行至處理區1670。假使為
否,則處理直接進行至處理區1670,於其中決定一或更多條件式載入/儲存中之一或更多的處理是否完成。假使條件式載入/儲存的處理未完成,則處理在處理區1620再迭代開始。否則,在處理區1680中,在一或更多條件式載入/儲存指令退出期間,記錄在對應的一或更多指令緩衝器項的錯誤抑制欄中的任何錯誤抑制位元可以送至錯誤輔助邏輯,以致於假使需要時不採取錯誤輔助,但是,替代地可以根據記錄在對應的一或更多指令衝器項的錯誤抑制欄中的錯誤抑制位元而受抑制。最後,在處理區1690中,一或更多條件式載入/儲存的結果被儲存或被委託給架構上可見的狀態。
將瞭解,雖然處理1601顯示為依元素迭代的,但是,在一或更多條件式載入/儲存指令執行以指示記憶體運算的一或更多部份是否被遮罩期間,將一或多個錯誤抑制位元記錄在對應的指令緩衝器項的錯誤抑制欄中將會全部一次發生,或者替代地在不同的級中發生。舉例而言,如同上述圖5C的一實施例中所示般,各遮罩位元可被記錄於指令緩衝器項中。或者,如同上述圖5A的一實施例中所示般,指示所有遮罩位元為零(0)之單一錯誤抑制位元可以記錄於指令緩衝器項中。在其它實施例中,一或更多錯誤抑制位元可以記錄在錯誤抑制欄中以指示一或更多最高有效遮罩位元(例如,如圖5B和圖5D的實施例中所示般)或是一或更多最低有效遮罩位元(例如,如圖5D的一實施例中所示般)為零(0)。
圖16B顯示執行具有預測遮罩之向量儲存以提供條件式記憶體錯誤輔助抑制的處理1602的一實施例的流程圖。在處理1602的處理區1612中,記憶體儲存運算被緩衝於對應於向量儲存指令之指令緩衝器項中(例如在重排序緩衝器中)。在某些實施例中,向量儲存指令是提供條件式儲存執行及記憶體錯誤輔助抑制之具有預測遮罩的SIMD指令。在處理區1620中,產生對應於記憶體儲存運算中的下一記憶體儲存運算之下一記憶體位址。在處理區1630中,決定對下一記憶體位址的對應存取是否產生錯誤。假使為否,則在處理區1642中,緩衝對下一記憶體位址之向量元素的儲存(例如,在儲存緩衝器中)以及處理進行至處理區1645。否則,處理直接進行至處理區1645,於其中決定是否完成用於向量儲存的最後向量元素之最後儲存運算的產生。假使用於向量儲存的最後向量元素之最後儲存運算的產生尚未完成,則處理在處理區1620再迭代開始。否則,在處理區1652中,決定一或更多錯誤是否被遮罩。假使為是,則在處理區1662中,錯誤抑制欄於對應的指令緩衝器項中被更新,以致於為了一或更多延擱錯誤而抑制錯誤輔助,以及,處理接著進行至處理區1672。假使為否,則處理直接進行至處理區1672,於其中決定向量儲存的處理是否完成。假使向量儲存的處理未完成,則處理再迭代處理區1672。否則,在處理區1680中,在向量儲存指令退出期間,記錄在對應的指令緩衝器項的錯誤抑制欄中的任何錯誤抑制位元可以
送至錯誤輔助邏輯,以致於假使需要時採取錯誤輔助,但是,替代地可以根據記錄在對應的指令衝器項的錯誤抑制欄中的錯誤抑制位元而受抑制。最後,在處理區1692中,向量儲存指令退出或被委託給架構上可見的狀態。
圖16C顯示執行具有預測遮罩之向量載入以提供條件式記憶體錯誤輔助抑制的處理的一實施例的流程圖。在處理1603的處理區1613中,一組記憶體載入運算被緩衝於對應於向量儲存指令之指令緩衝器項中(例如在重排序緩衝器中)。在某些實施例中,向量載入指令是提供條件式載入執行及記憶體錯誤輔助抑制之具有預測遮罩的SIMD指令。在某些實施例中,向量載入指令也明定在將結果儲存至目的地暫存器之前,對被載入的資料元素執行條件式算術或轉換運算。在處理區1620中,產生對應於一組記憶體載入運算中的下一記憶體載入運算之下一記憶體位址。在處理區1630中,決定對下一記憶體位址的對應存取是否產生錯誤。假使為否,則在處理區1643中,從下一記憶體位址載入向量元素以及處理接著進行至處理區1645。否則,處理直接進行至處理區1645,於其中決定是否完成用於向量載入的最後向量元素之最後載入運算的產生。假使用於向量載入的最後向量元素之最後載入運算的產生尚未完成,則處理在處理區1620再迭代開始。否則,在處理區1652中,決定一或更多錯誤是否被遮罩。假使為是,則在處理區1662中,錯誤抑制欄於對應的指令緩衝器項中被更新,以致於為了一或更多延擱錯誤而抑
制錯誤輔助,以及,處理接著進行至處理區1680。假使為否,則處理直接進行至處理區1680,於其中,在向量載入指令退出期間,記錄在對應的指令緩衝器項的錯誤抑制欄中的任何錯誤抑制位元可以送至錯誤輔助邏輯,以致於假使需要時採取錯誤輔助,但是,替代地可以根據記錄在對應的指令衝器項的錯誤抑制欄中的錯誤抑制位元而受抑制。最後,在處理區1693中,向量儲存指令退出或被委託給架構上可見的狀態。
本發明的實施例涉及在執行向量載入/儲存指令以指示記憶體運算中的一或更多部份是否被遮罩之期間,根據對應的指令緩衝器項之錯誤制欄中一或更多錯誤抑制位元的記錄,執行用於具有預測遮罩之向量載入及/或儲存以提供條件式記憶體錯誤輔助抑制之指令。記錄一或多個錯誤抑制位元將會全部一次發生,或者替代地在不同的級中發生。舉例而言,如同上述圖5C所示般,對應於用於載入/儲存的向量元素之各遮罩位元可被記錄於指令緩衝器項中。或者,如同上述圖5A中所示般,指示所有向量元素的遮罩位元為零(0)之一個單一錯誤抑制位元可以記錄於指令緩衝器項中。在其它實施例中,一或更多錯誤抑制位元可以記錄在錯誤抑制欄中以指示一或更多最高有效遮罩位元(例如,如圖5B中所示般,最後二個、最後四個、等等,或者如圖5D中所示般最後一半)或是一或更多最低有效遮罩位元(例如,如圖5D中所示般前一半)為零(0)。
因此,無論何時記憶體運算中之一或更多符合被指示為由對應的指令緩衝器項(例如Z指示器1429)之錯誤抑制欄中的一或更多錯誤抑制位元所遮罩時,錯誤輔助會被抑制免於考慮對應於記憶體運算中之一或更多之記憶體錯誤。將瞭解,當被遮罩的錯誤以任何頻率發生時(例如,在未捲動迴路存取結束時,或是當自/到記憶體中稀疏散佈的位置特別作向量載入/儲存時),造成的性能損失限制來自寬或大寬度向量架構之其它情形中期望的性能優點。因此,根據執行具有預測遮罩的向量載入及/或儲存以及提供條件式記憶體錯誤輔助抑制之實施例避免此性能損失,代表管線處理之顯著的技術進步。
此處揭示的機制的實施例可以以硬體、軟體、韌體、或這些實施方式的組合實施。本發明的實施例可以實施為在包括至少一處理器、儲存系統(包含依電性及非依電性記憶體及/或儲存元素)、至少一輸入裝置、及至少一輸出裝置的可編程系統上執行的電腦程式或程式碼。
程式碼可以應用至輸入指令以執行此處所述的功能及產生輸出資訊。輸出資訊可以以已知方式應用至一或更多輸出裝置。為了此應用目的,處理系統包含具有處理器的任何系統,舉例而言,處理器可為數位訊號處理器(DSP)、微控制器、特定應用積體電路(ASIC)、或是微處理器。
程式碼可以以高階程序或物件導向程式語言實施,以與處理系統通訊。於需要時程式碼也可由組合語言或機器
語言實施。事實上,此處所述的機制不限於任何特定程式語言的範圍。在任何情形中,語言可為經過編譯或解譯的語言。
至少一實施例的一或更多態樣可由代表處理器之內的各種邏輯之儲存在機器可讀取的媒體上的代表指令實施,當由機器讀取時,這些指令會促使機器製造邏輯以執行此處所述的技術。這些表示,例如「IP核心」,可以儲存在實體的、機器可讀取的媒體中及供應給各式各樣的客戶或製造設備以載入真正製造邏輯或處理器的製造機器中。
此機器可讀取的儲存媒體包含但不限於由機器或裝置製造或形成的物體之非暫時的實體配置,包含例如硬碟等儲存媒體、包括軟碟、光碟、光碟唯讀記憶體(CD-ROM)、光碟可重寫(CD-RW)、及磁光碟等任何其它型式的碟片、例如唯讀記憶體(ROM)、例如動態隨機存取記憶體(DRAM)等隨機存取記憶體(RAM)、靜態隨機存取記憶體(SRAM)、可抹拭可編程唯讀記憶體(EPROM)、快閃記憶體、電氣可抹拭可編程唯讀記憶體(EEPROM)等半導體裝置、磁或光學卡、或任何適用於儲存電子指令的其它型式的媒體。
因此,本發明的實施例也包含非暫時的、實體的機器可讀取的媒體,其含有指令或含有設計資料,例如硬體說明語言(HDL),以界定此處所述的結構、電路、設備、處理器及/或系統特定。這些實施例也將稱為程式產品。
在某些情形中,指令轉換器可以用以將指令從源指令
集轉換成目標指令集。舉例而言,指令轉換器可以將指令轉譯(例如,使用靜態二進位轉譯、包含動態編譯之動態二進位轉譯)、變種、模仿、或其它方式轉換成為一或更多要由核心處理的其它指令。指令轉換器可以以軟體、硬體、韌體、或其組合實施。指令轉換器可以在處理器上、離開處理器、或是部份在或部份離開處理器。
因此,揭示執行根據至少一實施例的一或更多指令之技術。雖然在附圖中說明及顯示某些舉例說明的實施例,但是,須瞭解這些實施例僅為說明性而非寬廣發明的限定,且由於習於此技藝者在瞭解本揭示之後,可以產生各種其它修改,所以,本發明不限於所述及所示的特定構造及配置。在例如本技術領域等成長快速且不易預測未來進步之技術領域中,在不悖離本揭示的原理或後附申請專利範圍的範圍之下,揭示的實施例在配置及細節上容易修改以方便技術進步。
100‧‧‧電腦系統
102‧‧‧處理器
104‧‧‧快取
106‧‧‧暫存器檔案
108‧‧‧執行單元
109‧‧‧緊縮指令集
110‧‧‧處理器匯流排
112‧‧‧圖形/視頻卡
116‧‧‧記憶體控制器集線器
120‧‧‧記憶體
122‧‧‧集線器介面
124‧‧‧資料儲存器
126‧‧‧無線收發器
128‧‧‧快閃BIOS
130‧‧‧I/O控制器集線器
134‧‧‧網路控制器
Claims (25)
- 一種處理器,包括:解碼級,用以解碼單指令多資料(SIMD)的指令,該指令指明:目的地暫存器、及一或更多記憶體位址一組記憶體載入運算;以及,一或更多執行單元,執行下述,以回應該經過解碼的SIMD指令:產生用於該組載入運算的該一或更多記憶體位址;記錄一或更多錯誤抑制位元以指示該組載入運算中之一或更多部份是否被遮罩;無論何時該組載入運算中之該一或更多者符合被指示為由該一或更多錯誤抑制位元遮罩之該組載入運算的一部份時,將錯誤產生邏輯抑制而免於考慮對應於該組載入運算之一或更多者,其中該錯誤產生邏輯包括錯誤輔助邏輯,用以:當該一或更多錯誤抑制位元指示該組記憶體載入運算中之一或更多者未被遮罩時,促使對應於該組記憶體載入運算的遮罩在退出級期間被檢查,以回應該組記憶體載入運算的執行級期間之錯誤條件偵測。
- 如申請專利範圍第1項之處理器,其中,該SIMD指令又明定遮罩暫存器以指示該組記憶體載入運算中哪些個別記憶體載入運算被遮罩。
- 如申請專利範圍第2項之處理器,其中,該一或更多錯誤抑制位元是要指示該組記憶體載入運算中之所有 運算何時被遮罩。
- 如申請專利範圍第2項之處理器,其中,該一或更多錯誤抑制位元是要指示該目的地暫存器中元素之連續的最高有效部份及它們對應的個別記憶體載入運算何時被遮罩。
- 如申請專利範圍第1項之處理器,其中,為回應具有第一值之該一或更多錯誤抑制位元,喚醒對應於該錯誤輔助邏輯的微碼常式以檢查對應於該組記憶體載入運算的遮罩來決定是否產生記憶體錯誤,以及,為回應具有第二值之該一或更多錯誤抑制位元,沒有對應於該錯誤輔助邏輯的微碼常式被喚醒來檢查對應於該組記憶體載入運算的遮罩。
- 如申請專利範圍第5項之處理器,其中,該一或更多錯誤抑制位元被設定於該第一值以指示該組記憶體載入運算中的一或更多運算何時未被遮罩。
- 如申請專利範圍第5項之處理器,其中,該一或更多錯誤抑制位元被設定於該第二值以指示該組記憶體載入運算中的所有運算何時被遮罩。
- 如申請專利範圍第1項之處理器,其中,該SIMD指令又明定:在資料元素要被儲存於該目的地暫存器中之前對來自該組記憶體載入運算的對應的個別記憶體載入運算之資料元素執行的一組運算,以及,遮罩暫存器以指示該運算及該組記憶體載入運算中對應的個別記憶體載入運算的哪些被遮罩。
- 一種處理器,包括:解碼級,用以解碼單指令多資料(SIMD)的指令,該指令指明:源暫存器、及一或更多記憶體位址一組記憶體儲存運算以及,一或更多執行單元,執行下述,以回應該經過解碼的SIMD指令:產生用於該組記憶體儲存運算的該一或更多記憶體位址;記錄一或更多錯誤抑制位元以指示該組記憶體儲存運算中之一或更多部份是否被遮罩;無論何時該組記憶體儲存運算中之該一或更多運算對應於被指示為由該一或更多錯誤抑制位元遮罩之該組記憶體儲存運算的一部份時,抑制錯誤產生邏輯免於考慮對應於一或更多該組記憶體儲存運算之記憶體錯誤,其中該錯誤產生邏輯包括錯誤輔助邏輯,用以:無論何時該一或更多錯誤抑制位元於執行級期間被設定,為回應該組記憶體儲存運算的錯誤條件偵測,促使對應於該組記憶體儲存運算的遮罩在退出級期間被檢查,以指示該組記憶體儲存運算中之一或更多者未被遮罩。
- 如申請專利範圍第9項之處理器,其中,該SIMD指令又明定遮罩暫存器指示該組記憶體儲存運算中哪些個別記憶體儲存運算被遮罩。
- 如申請專利範圍第9項之處理器,其中,該 SIMD指令又明定:在資料元素要由該組記憶體儲存運算之對應的個別記憶體儲存運算儲存之前要對來自該源暫存器的資料元素執行的運算,以及,遮罩暫存器以指示該運算中哪些運算及該組記憶體儲存運算中對應的個別記憶體儲存運算被遮罩。
- 一種處理系統,包括:記憶體;及眾多處理器,均各包括:解碼級,用以解碼單指令多資料(SIMD)的指令,該指令指明:向量暫存器、及一或更多記憶體位址一組記憶體載入運算;以及,一或更多執行單元,執行下述,以回應該經過解碼的SIMD指令:產生用於該組記憶體運算的該一或更多記憶體位址;記錄一或更多錯誤抑制位元以指示該組記憶體運算中之一或更多部份是否被遮罩;無論何時該組記憶體運算中之該一或更多運算對應於被指示為由該一或更多錯誤抑制位元遮罩之該組記憶體運算的一部份時,抑制錯誤產生邏輯免於考慮對應於一或更多該組記憶體運算之記憶體錯誤,其中該錯誤產生邏輯包括錯誤輔助邏輯,用以:無論何時該一或更多錯誤抑制位元於執行級期間被設定,回應於該組記憶體運算的錯誤條件偵測,促使對應於該組記憶體運算的遮罩在退出級期間被檢查,以指示 該組記憶體運算中之任一者未被遮罩。
- 如申請專利範圍第12項之處理系統,其中,該SIMD指令又明定遮罩暫存器指示該組記憶體運算中哪些個別記憶體運算被遮罩。
- 如申請專利範圍第12項之處理系統,其中,該SIMD指令又明定:在資料元素要由該組記憶體運算之對應的個別記憶體運算儲存之前要對來自該向量暫存器的資料元素執行的運算,以及,遮罩暫存器以指示該運算中哪些運算及該組記憶體運算中對應的個別記憶體運算被遮罩。
- 如申請專利範圍第12項之處理系統,其中,該SIMD指令又明定:在資料元素要被儲存在該向量暫存器中之前要對來自該一或更多記憶體位址的資料元素執行的運算,以及,遮罩暫存器以指示該運算中哪些運算及該組記憶體運算中對應的個別記憶體運算被遮罩。
- 一種方法,包括:將記憶體運算緩衝於對應單指令多資料(SIMD)指令的緩衝器項中;產生對應於該組記憶體運算之記憶體位址組,在該SIMD指令執行期間,將一或更多錯誤抑制位元記錄於該緩衝器項中以指示該組記憶體運算的一或更多部份是否被遮罩;在該SIMD指令退出期間,將該一或更多錯誤抑制位元從該緩衝器項傳送至錯誤產生邏輯,以抑制該錯誤產生 邏輯免於考慮對應於被指示為由該一或更多錯誤抑制位元遮罩之一或更多部份之該組記憶體運算之任何記憶體錯誤。
- 如申請專利範圍第16項之方法,其中,該SIMD指令明定:在資料元素要被儲存在向量暫存器中之前要對來自該記憶體位址集的資料元素執行的運算,以及,遮罩暫存器以指示該運算中哪些運算及該組記憶體運算中對應的記憶體位置被遮罩。
- 如申請專利範圍第16項之方法,其中,該SIMD指令明定:在資料元素要被儲存在對應於該組記憶體運算之記憶體位置之前要對來自向量暫存器的資料元素執行的運算,以及,遮罩暫存器以指示該運算中哪些運算及該組記憶體運算中對應的記憶體位置被遮罩。
- 如申請專利範圍第16項之方法,其中,該一或更多錯誤抑制位元是要指示該組記憶體運算中的所有運算何時被遮罩。
- 如申請專利範圍第16項之方法,其中,該一或更多錯誤抑制位元是要指示向量暫存器中元素之連續的最高有效第一部份及該組記憶體運算中對應的記憶體運算何時被遮罩。
- 如申請專利範圍第20項之方法,其中,該一或更多錯誤抑制位元也是要指示該向量暫存器中元素之連續的最低有效第二部份及該組記憶體運算中對應的記憶體運算何時被遮罩。
- 如申請專利範圍第20項之方法,其中,該一或更多錯誤抑制位元也是要指示該向量暫存器中的元素之大於該第一部份的連續的最高有效第二部份及該組記憶體運算中對應的記憶體運算何時被遮罩。
- 一種處理器,包括:解碼級,將明定一或更多記憶體運算、一或更多暫存器、及一或更多記憶體位址之一或更多條件式移動指令解碼;以及,一或更多執行單元,執行下述,以回應該經過解碼的一或更多條件式移動指令:產生用於該一或更多記憶體運算的該一或更多記憶體位址;記錄一或更多錯誤抑制位元以指示該一或更多記憶體運算之一或更多部份是否被遮罩;無論何時該一或更多記憶體運算中之錯誤的一運算對應於被指示為由該一或更多錯誤抑制位元遮罩之該一或更多記憶體運算的一部份時,抑制錯誤產生邏輯免於考慮對應於該一或更多記憶體運算中之該錯誤的一運算的記憶體錯誤;以及無論何時該一或更多錯誤抑制位元於執行該一或更多條件式移動指令期間被設定,回應於該一或更多記憶體運算的錯誤條件偵測,促使對應於該一或更多記憶體運算的一或更多旗標條件碼被檢查,以指示該一或更多記憶體運算中之任一者未被遮罩。
- 如申請專利範圍第23項之處理器,其中,該錯誤產生邏輯包括錯誤輔助邏輯以促使對應於該一或更多記憶體運算的該一或更多旗標條件碼被檢查。
- 如申請專利範圍第23項之處理器,其中,該條件式移動指令又明定旗標條件碼以指示該一或更多記憶體運算中的哪些個別記憶體運算被遮罩。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/214,910 US9396056B2 (en) | 2014-03-15 | 2014-03-15 | Conditional memory fault assist suppression |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201546610A TW201546610A (zh) | 2015-12-16 |
TWI578155B true TWI578155B (zh) | 2017-04-11 |
Family
ID=54068995
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104104386A TWI578155B (zh) | 2014-03-15 | 2015-02-10 | 用於條件式記憶體錯誤輔助抑制的處理器、處理系統及方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9396056B2 (zh) |
CN (1) | CN104915181B (zh) |
TW (1) | TWI578155B (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9715432B2 (en) | 2014-12-23 | 2017-07-25 | Intel Corporation | Memory fault suppression via re-execution and hardware FSM |
GB2540948B (en) * | 2015-07-31 | 2021-09-15 | Advanced Risc Mach Ltd | Apparatus with reduced hardware register set |
GB2543302B (en) | 2015-10-14 | 2018-03-21 | Advanced Risc Mach Ltd | Vector load instruction |
GB2543306B (en) * | 2015-10-14 | 2019-05-01 | Advanced Risc Mach Ltd | Exception handling |
GB2543303B (en) | 2015-10-14 | 2017-12-27 | Advanced Risc Mach Ltd | Vector data transfer instruction |
GB2543554B (en) * | 2015-10-22 | 2019-01-23 | Advanced Risc Mach Ltd | Handling exceptional conditions for vector arithmetic instruction |
US9990452B2 (en) * | 2015-11-13 | 2018-06-05 | Mentor Graphics Corporation | Low power corruption of memory in emulation |
US9898563B2 (en) * | 2015-11-13 | 2018-02-20 | Mentor Graphics Corporation | Modeling memory in emulation based on cache |
US9767237B2 (en) | 2015-11-13 | 2017-09-19 | Mentor Graphics Corporation | Target capture and replay in emulation |
US9507598B1 (en) * | 2015-12-15 | 2016-11-29 | International Business Machines Corporation | Auxiliary branch prediction with usefulness tracking |
US10248488B2 (en) * | 2015-12-29 | 2019-04-02 | Intel Corporation | Fault tolerance and detection by replication of input data and evaluating a packed data execution result |
GB2546510B (en) * | 2016-01-20 | 2018-09-26 | Advanced Risc Mach Ltd | Vector atomic memory update instruction |
US10261790B2 (en) * | 2016-03-31 | 2019-04-16 | Intel Corporation | Memory copy instructions, processors, methods, and systems |
US10761979B2 (en) * | 2016-07-01 | 2020-09-01 | Intel Corporation | Bit check processors, methods, systems, and instructions to check a bit with an indicated check bit value |
US10296416B2 (en) * | 2016-07-02 | 2019-05-21 | Intel Corporation | Read from memory instructions, processors, methods, and systems, that do not take exception on defective data |
US10019288B2 (en) | 2016-09-12 | 2018-07-10 | Mediatek, Inc. | Fast and stable mechanism for allocating contiguous memory |
GB2558955B (en) * | 2017-01-24 | 2020-12-23 | Advanced Risc Mach Ltd | An apparatus and method for generating and processing a trace stream indicative of execution of predicated vector memory access instructions |
US11042375B2 (en) * | 2017-08-01 | 2021-06-22 | Arm Limited | Counting elements in data items in a data processing apparatus |
KR102456582B1 (ko) * | 2017-12-19 | 2022-10-20 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
CN109032666B (zh) * | 2018-07-03 | 2021-03-23 | 中国人民解放军国防科技大学 | 一种用于向量处理的确定断言活跃元素个数的方法和装置 |
US11842200B2 (en) * | 2019-09-27 | 2023-12-12 | Advanced Micro Devices, Inc. | Multi-modal gather operation |
CN113542043B (zh) * | 2020-04-14 | 2024-06-07 | 中兴通讯股份有限公司 | 网络设备的数据采样方法、装置、设备及介质 |
US20230409238A1 (en) * | 2022-06-21 | 2023-12-21 | Advanced Micro Devices, Inc. | Approach for processing near-memory processing commands using near-memory register definition data |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7480787B1 (en) * | 2006-01-27 | 2009-01-20 | Sun Microsystems, Inc. | Method and structure for pipelining of SIMD conditional moves |
TW201007472A (en) * | 2008-08-15 | 2010-02-16 | Freescale Semiconductor Inc | Provision of extended addressing modes in a single instruction multiple data (SIMD) data processor |
US20120117420A1 (en) * | 2010-11-05 | 2012-05-10 | Advanced Micro Devices, Inc. | Processor and method implemented by a processor to implement mask load and store instructions |
US20120216011A1 (en) * | 2011-02-18 | 2012-08-23 | Darryl Gove | Apparatus and method of single-instruction, multiple-data vector operation masking |
US20120284560A1 (en) * | 2008-08-15 | 2012-11-08 | Apple Inc. | Read xf instruction for processing vectors |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7043625B2 (en) * | 2000-03-27 | 2006-05-09 | Infineon Technologies Ag | Method and apparatus for adding user-defined execution units to a processor using configurable long instruction word (CLIW) |
US7546446B2 (en) * | 2002-03-08 | 2009-06-09 | Ip-First, Llc | Selective interrupt suppression |
US7380109B2 (en) * | 2002-04-15 | 2008-05-27 | Ip-First, Llc | Apparatus and method for providing extended address modes in an existing instruction set for a microprocessor |
TWI220042B (en) * | 2002-08-22 | 2004-08-01 | Ip First Llc | Non-temporal memory reference control mechanism |
TWI245221B (en) * | 2002-08-22 | 2005-12-11 | Ip First Llc | Apparatus and method for selective memory attribute control |
US8019976B2 (en) * | 2007-05-14 | 2011-09-13 | Apple, Inc. | Memory-hazard detection and avoidance instructions for vector processing |
-
2014
- 2014-03-15 US US14/214,910 patent/US9396056B2/en active Active
-
2015
- 2015-02-10 TW TW104104386A patent/TWI578155B/zh not_active IP Right Cessation
- 2015-02-13 CN CN201510080157.4A patent/CN104915181B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7480787B1 (en) * | 2006-01-27 | 2009-01-20 | Sun Microsystems, Inc. | Method and structure for pipelining of SIMD conditional moves |
TW201007472A (en) * | 2008-08-15 | 2010-02-16 | Freescale Semiconductor Inc | Provision of extended addressing modes in a single instruction multiple data (SIMD) data processor |
US20120284560A1 (en) * | 2008-08-15 | 2012-11-08 | Apple Inc. | Read xf instruction for processing vectors |
US20120117420A1 (en) * | 2010-11-05 | 2012-05-10 | Advanced Micro Devices, Inc. | Processor and method implemented by a processor to implement mask load and store instructions |
US20120216011A1 (en) * | 2011-02-18 | 2012-08-23 | Darryl Gove | Apparatus and method of single-instruction, multiple-data vector operation masking |
Also Published As
Publication number | Publication date |
---|---|
CN104915181B (zh) | 2018-06-05 |
CN104915181A (zh) | 2015-09-16 |
TW201546610A (zh) | 2015-12-16 |
US20150261590A1 (en) | 2015-09-17 |
US9396056B2 (en) | 2016-07-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI578155B (zh) | 用於條件式記憶體錯誤輔助抑制的處理器、處理系統及方法 | |
JP6207095B2 (ja) | 条件付きループをベクトル化する命令及び論理 | |
TWI476695B (zh) | 提供向量水平比較功能之指令與邏輯 | |
US20170357514A1 (en) | Instruction and logic to provide vector scatter-op and gather-op functionality | |
KR101767025B1 (ko) | 벡터 어드레스 충돌 검출 기능을 제공하기 위한 방법, 장치, 명령어들 및 로직 | |
KR102512315B1 (ko) | 원자적 범위 연산들을 제공하기 위한 명령어들 및 로직 | |
JP5933011B2 (ja) | ストライド機能を有するベクトルロード演算/ストア演算を提供する命令及びロジック | |
JP5930558B2 (ja) | ストライド機能及びマスク機能を有するベクトルロード及びベクトルストアを提供する命令及びロジック | |
US20170177352A1 (en) | Instructions and Logic for Lane-Based Strided Store Operations | |
KR102472894B1 (ko) | 벡터 패킹된 투플 교차 비교 기능을 제공하기 위한 방법, 장치, 명령어들 및 로직 | |
JP2014089699A (ja) | ベクトル圧縮及びローテート機能を提供する命令及び論理 | |
TW201732564A (zh) | 用於使用monitor及mwait架構之使用者層級執行緒同步的方法及裝置 | |
US20170177353A1 (en) | Instructions and Logic for Get-Multiple-Vector-Elements Operations | |
US9715388B2 (en) | Instruction and logic to monitor loop trip count and remove loop optimizations | |
US20170177351A1 (en) | Instructions and Logic for Even and Odd Vector Get Operations | |
US10157063B2 (en) | Instruction and logic for optimization level aware branch prediction | |
JP6222859B2 (ja) | ストライド機能及びマスク機能を有するベクトルロード及びベクトルストアを提供する命令及びロジック | |
TWI773654B (zh) | 處理器、運算系統及用於執行以向量為基礎的位元操控之方法 | |
JP6231155B2 (ja) | ベクトル散乱演算機能及びベクトル収集演算機能を提供する命令及びロジック |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |