TWI689866B - 使用控制操作來進行單一指令多重資料(simd)可變移位與旋轉之技術 - Google Patents

使用控制操作來進行單一指令多重資料(simd)可變移位與旋轉之技術 Download PDF

Info

Publication number
TWI689866B
TWI689866B TW101150580A TW101150580A TWI689866B TW I689866 B TWI689866 B TW I689866B TW 101150580 A TW101150580 A TW 101150580A TW 101150580 A TW101150580 A TW 101150580A TW I689866 B TWI689866 B TW I689866B
Authority
TW
Taiwan
Prior art keywords
size
vector
simd
parts
instruction
Prior art date
Application number
TW101150580A
Other languages
English (en)
Other versions
TW201339964A (zh
Inventor
艾薩夫 魯賓斯坦
湯姆 亞威蘭
Original Assignee
英特爾股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 英特爾股份有限公司 filed Critical 英特爾股份有限公司
Publication of TW201339964A publication Critical patent/TW201339964A/zh
Application granted granted Critical
Publication of TWI689866B publication Critical patent/TWI689866B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

本案提供向量單一指令多重資料(SIMD)移位與旋轉指令,其規定:包含儲存向量元件之欄位的一目的地向量暫存器、一第一向量暫存器、一向量元件大小及一第二向量暫存器。一第一元件大小之向量資料欄位經複製。複製向量資料欄位係儲存為該第一元件大小兩倍之對應資料欄位。控制邏輯接收用於執行一SIMD移位或旋轉操作之一元件大小。經由對應於一向量元件之選擇器,自複製資料欄位選擇部分,對應於任何特定向量元件之選擇器均對該第一元件大小起回應而針對該特定向量元件自該等複製資料欄位類似地選擇所有部分,但對應於任何特定向量元件之選擇器均對一第二元件大小起回應而針對該特定向量元件自該等複製資料欄位不同地選擇至少兩個部分。

Description

使用控制操作來進行單一指令多重資料(SIMD)可變移位與旋轉之技術 發明領域
本揭示案係關於處理邏輯、微處理器及相關指令集架構之領域,該相關指令集架構當由處理器或其他處理邏輯執行時執行邏輯操作、數學操作或其他功能操作。特定言之,本揭示案係關於使用控制操作來提供單一指令多重資料(SIMD)可變移位與旋轉功能之指令及邏輯。
發明背景
現代處理器經常包括提供計算密集性操作,但提供高程度資料平行度之指令,該資料平行度可經由使用各種資料儲存裝置(諸如單一指令多重資料(SIMD)向量暫存器)進行有效實施而被開發出來。
以往的一些處理器已實施執行SIMD移位(邏輯的與算術的)之指令,其使用校正電路對所有支援的向量元件大小均執行填零(用於左移或邏輯移位)或符號填充 (用於算術右移)。但此方法不易適用於SIMD旋轉。
一種常用於對單一固定寬度資料執行快速旋轉或移位之技術係稱作漏斗移位器。在漏斗移位器中,資料首先經重複或複製且經連接。接著自兩個連接複本內選擇具有所需旋轉之輸出。若需要移位而非旋轉,則可採用校正電路技術來對旋轉輸出進行填零或符號填充。
支援SIMD旋轉之問題係與使得移位器為資料之各種不同大小或寬度運作有關。理論上,可修改複製及連接來支援資料之更多大小或寬度,但因為此向移位器增加一或多種其他選擇階段,所以可能限制移位器效能且藉此減小否則例如對寬或大寬度向量架構所期待之效能優勢。迄今為止,尚未充分探索此等效能限制問題之可能解決方法。
依據本發明之一個實施例,係特地提出一種以機器實施的方法,其包含:複製一第一元件大小之多個向量資料欄位;儲存該等複製向量資料欄位作為該第一元件大小兩倍之對應經複製的資料欄位;在一控制邏輯中接收一元件大小以便對向量元件執行一SIMD旋轉;以及經由多個對應於一特定向量元件之選擇器,自該等經複製的資料欄位選擇部分,該等多個對應於任何特定向量元件之選擇器對接收用於對向量元件執行該SIMD旋轉之該第一元件大小之該控制邏輯起回應而針對該特定向量元件自該 等經複製的資料欄位類似地選擇所有部分,但該等多個對應於任何特定向量元件之選擇器對接收用於對向量元件執行該SIMD旋轉之一第二元件大小之該控制邏輯起回應而針對該特定向量元件自該等經複製的資料欄位不同地選擇至少兩個部分。
100、600、880、1000:系統
102、200、610、615、770、780、870、1314、1316、1215:處理器
104:內部快取記憶體
106、145:暫存器檔案
108、142、162、212~224、462:執行單元
109、143:緊縮指令集
110:處理器匯流排
112:通用處理器
114:加速圖形埠互連
116:系統邏輯晶片
118:頻帶寬度記憶體路徑
120、640、732、734、832、834、1140:記憶體
122:I/O系統
124:資料儲存體
126:無線收發器
128:韌體集線器/快閃BIOS
130:I/O控制器集線器
134:網路控制器
140:資料處理系統
141:匯流排
144:解碼器
146:同步動態隨機存取記憶體控制
147:靜態隨機存取記憶體控制
148:突發快閃記憶體介面
149:壓縮快閃卡控制
150:液晶顯示器控制
151:直接記憶體存取控制器
152:替代性匯流排主介面
153:I/O匯流排
154:I/O橋接器
155:通用異步接收器/發射器
156:通用串行匯流排
157:藍牙無線UART
158:I/O擴展介面
159:處理核心
160:資料處理系統
161:SIMD共處理器
163:指令集
164:暫存器檔案
165、165B:解碼器
166:主處理器
167:快取記憶體
168:輸入/輸出系統
169:無線介面
170:處理核心
171:共處理器匯流排
201:前端
202:快速排程器/uop排程器
203:亂序執行引擎
204、206:uop排程器
208、210:暫存器檔案
211:執行方塊
226:指令預取器
228:指令解碼器
230:追蹤快取記憶體
232:微碼ROM
234:uop佇列
310:緊縮位元組
320:緊縮字
330:緊縮雙字
341:緊縮一半
342:緊縮單一
343:緊縮雙
344:不帶符號之緊縮位元組表示
345:帶符號的緊縮位元組表示
346:不帶符號的緊縮字表示
347:帶符號的緊縮字表示
348:不帶符號的緊縮雙字表示
349:帶符號的緊縮雙字表示
360、380:操作編碼(操作碼)格式
361、362、371、372、383、384、387、388、392:欄位
363:MOD欄位
364、365、374、375、385、390:源運算元識別符
366、376、386:目的地運算元識別符
370:另一替代性操作編碼(操作碼)格式
373:MOD欄位
378:欄位/前綴位元組
381:條件欄位
382、389:CDP操作碼欄位
391:VEX前綴位元組/欄位
393:比例-索引-基址(SIB)識別符
394:置換識別符
395:立即位元組
396:EVEX前綴位元組
397、398:操作碼格式
400:處理器管線
402:擷取階段
404:長度解碼階段
406:解碼階段
408:分配階段
410:重新命名階段
412:定排程階段
414:暫存器讀取/記憶體讀取階段
416:執行階段
418:回寫/記憶體寫入階段
422:異常處置階段
424:確認階段
430:前端單元
432:分支預測單元
434:指令快取記憶體單元
436:指令TLB
438:指令擷取單元
440:解碼單元
450:執行引擎單元
452:重新命名/分配器單元
454:引退單元
456:排程器單元
458:實體暫存器檔案單元
460:執行叢集
464:記憶體存取單元
470:記憶體單元
472:資料TLB單元
474:資料快取記憶體單元
476:2階快取記憶體單元
490、502A、502N:核心
500:處理器
506:共享快取記憶體單元
508:整合型圖形邏輯
510:系統代理單元
512:環式互連單元
514:整合型記憶體控制器單元
516:匯流排控制器單元
620:圖形記憶體控制器集線器
645:顯示器
650:輸入/輸出控制器集線器
660:外部圖形裝置
670:周邊裝置
695:前側匯流排
700:第二系統
714、814:I/O裝置
716:第一匯流排
718:匯流排橋接器
720:第二匯流排
722:鍵盤及/或滑鼠
724:音訊I/O
727:通訊裝置
728:儲存單元
730:指令/程式碼及資料
738:高效圖形電路
739:高效能圖形介面
750:點對點互連
752、754:P-P
772、782:整合型記憶體控制器單元
776:點對點介面/點對點介面電路
778:點對點介面
786:P-P介面/點對點介面電路
788:P-P介面
790:晶片組
794、798:點對點介面電路
796:介面
800:第三系統
815:舊式I/O裝置
872:控制邏輯
882:控制邏輯
890:晶片組
900:SoC
902:互連單元
910:應用處理器
920:媒體處理器
924:影像處理器
926:音訊處理器
928:視訊處理器
930:靜態隨機存取記憶體單元
932:直接記憶體存取單元
940:顯示單元
1005、1010:CPU
1015:影像處理器
1020:視訊處理器
1025:USB控制器
1030:UART控制器
1035:SPI/SDIO控制器
1040:顯示裝置
1045:高清晰度多媒體介面控制器
1050:MIPI控制器
1055:快閃記憶體控制器
1060:雙資料速率控制器
1065:安全引擎
1070:I2S/I2C介面
1110:硬體或軟體模型
1120:模擬軟體
1130:儲存體
1150:有線連接
1160:無線連接
1205:程式
1210:仿真邏輯
1304:x86編譯器
1306:x86二進位碼
1308:替代性指令集編譯器
1310:替代性指令集二進位碼
1312:指令轉換器
1401:設備
1410:經複製的資料欄位
1420~1422、1424~1426:選擇器
1430:控制邏輯
1440、1444、1450、1454:選擇器階段
1501、1601:方法
1510~1580、1610~1680:處理方塊
本發明係在隨附圖式之圖中以實例而非限制之方式得到說明。
圖1A為一個系統之一個實施例的方塊圖,該系統使用控制操作來執行指令以提供SIMD可變移位與旋轉功能。
圖1B為一個系統之另一實施例的方塊圖,該系統使用控制操作來執行指令以提供SIMD可變移位與旋轉功能。
圖1C為一個系統之另一實施例的方塊圖,該系統使用控制操作來執行指令以提供SIMD可變移位與旋轉功能。
圖2為一個處理器之一個實施例的方塊圖,該處理器使用控制操作來執行指令以提供SIMD可變移位與旋轉功能。
圖3A例示根據一個實施例之緊縮資料類型。
圖3B例示根據一個實施例之緊縮資料類型。
圖3C例示根據一個實施例之緊縮資料類型。
圖3D例示根據一個實施例之提供SIMD可變移位與旋轉功能之指令編碼。
圖3E例示根據另一實施例之提供SIMD可變移位與旋轉功能之指令編碼。
圖3F例示根據另一實施例之提供SIMD可變移位與旋轉功能之指令編碼。
圖3G例示根據另一實施例之提供SIMD可變移位與旋轉功能之指令編碼。
圖3H例示根據另一實施例之提供SIMD可變移位與旋轉功能之指令編碼。
圖4A例示一個處理器微架構之一個實施例之元件,該處理器微架構係執行提供SIMD可變移位與旋轉功能之指令。
圖4B例示一個處理器微架構之另一實施例之元件,該處理器微架構係執行提供SIMD可變移位與旋轉功能之指令。
圖5為一個處理器之一個實施例的方塊圖,該處理器執行提供SIMD可變移位與旋轉功能之指令。
圖6為一個電腦系統之一個實施例的方塊圖,該電腦系統執行提供SIMD可變移位與旋轉功能之指令。
圖7為一個電腦系統之另一實施例的方塊圖,該電腦系統執行提供SIMD可變移位與旋轉功能之指令。
圖8為一個電腦系統之另一實施例的方塊圖,該電腦系統執行提供SIMD可變移位與旋轉功能之指令。
圖9為一個晶片上系統之一個實施例的方塊圖,該晶片上系統執行提供SIMD可變移位與旋轉功能之指令。
圖10為一處理器之一個實施例的方塊圖,該處理器執行提供SIMD可變移位與旋轉功能之指令。
圖11為一個IP核心開發系統之一個實施例之方塊圖,該IP核心開發系統提供向量混合及排列功能。
圖12例示提供向量混合及排列功能之架構仿真系統之一個實施例。
圖13例示一個系統之一個實施例,該系統轉譯提供SIMD可變移位與旋轉功能之指令。
圖14A例示使用一個設備之一個實施例之一個實例,該設備執行提供SIMD可變移位與旋轉功能之指令。
圖14B例示使用一個設備之一個實施例之另一實例,該設備執行提供SIMD可變移位與旋轉功能之指令。
圖14C例示使用一個設備之一個實施例之另一實例,該設備執行提供SIMD可變移位與旋轉功能之指令。
圖14D例示使用一個設備之一個實施例之另一實例,該設備執行提供SIMD可變移位與旋轉功能之指令。
圖15例示一種方法之一個實施例之流程圖,該方法提供SIMD可變移位與旋轉功能。
圖16例示一種方法之一個替代性實施例之流程圖,該方法提供SIMD可變移位與旋轉功能。
較佳實施例之詳細說明
以下說明書揭示指令及處理邏輯,其在處理器、電腦系統或其他處理設備內或與處理器、電腦系統或其他處理設備相聯合來提供SIMD可變移位與旋轉功能。
指令及邏輯提供SIMD可變移位與旋轉功能。在一些實施例中,SIMD移位與旋轉指令指定:包含儲存複數向量元件之欄位的一目的地向量暫存器、一第一向量暫存器、一向量元件大小及一第二向量暫存器。一第一元件大小之複數向量資料欄位經複製。複數複製向量資料欄位係儲存為第一元件大小兩倍之對應複數資料欄位。控制邏輯接收用於執行SIMD移位或旋轉操作之一元件大小指示符。經由對應於一向量元件之複數選擇器,自複數經複製的資料欄位選擇部分,對應於任何特定向量元件之複數選擇器均對接收一第一元件大小指示符之控制邏輯起回應而針對該特定向量元件自經複製的資料欄位類似地選 擇所有部分,但對應於任何特定向量元件之複數選擇器均對接收一第二元件大小指示符之控制邏輯起回應而針對該特定向量元件自經複製的資料欄位不同地選擇至少兩個部分。
因此,經由對應於一特定向量元件之複數選擇器,對控制邏輯組件起回應而使用控制操作且在不會過度需要對應於各種不同元件大小之複數向量元件之其他複數硬體選擇器下自經複製的資料欄位選擇部分,以便支援提供不同元件大小之SIMD可變移位與旋轉功能的指令。
在以下說明書中,闡述眾多特定細節,諸如處理邏輯、處理器類型、微架構條件、事件、致能機制及其類似細節,以便提供對本發明實施例較徹底之理解。然而,熟習此項技術者應瞭解,本發明可在無此等特定細節下實踐。另外,未詳細展示一些熟知結構、電路及其類似物以避免使本發明實施例不必要地變得不清楚。
儘管以下實施例係參考一處理器加以描述,但其他實施例亦適用於其他類型之積體電路及邏輯裝置。本發明實施例之類似技術及教示可應用於可受益於較高管線通量及經改良效能之其他類型電路或半導體裝置。本發明實施例之教示適用於執行資料操作之任何處理器或機器。然而,本發明不限於執行512位元、256位元、128位元、64位元、32位元或16位元資料操作之處理器或機器,且可應用於執行資料操作或管理之任何處理器及機器。另外,以下說明書提供實例,且隨附圖式展示各種實 例以達成說明目的。然而,此等實例不應以限制性含義解釋,其僅意欲提供本發明實施例之實例,而非提供本發明實施例之所有可能實施的詳盡清單。
儘管下文實例描述在執行單元及邏輯電路之情形下的指令處理及分配,但本發明之其他實施例可藉助於儲存於機器可讀的有形媒體上之資料或指令來實現,該等資料或指令當由機器執行時使得機器執行符合本發明之至少一個實施例的功能。在一個實施例中,與本發明實施例相關聯之功能體現在機器可執行指令中。指令可用來使得用指令規劃之多用處理器或專用處理器執行本發明之步驟。本發明之實施例可以電腦程式產品或軟體形式提供,該電腦程式產品或軟體可包括已儲存有指令之機器或電腦可讀媒體,該等指令可用來規劃電腦(或其他電子裝置)來執行一或多種根據本發明實施例之操作。或者,本發明實施例之步驟可由含有用於執行該等步驟之固定功能邏輯之特定硬體組件執行,或由經規劃之電腦組件與固定功能硬體組件之任何組合執行。
用以規劃邏輯以執行本發明實施例之指令可儲存在系統中之記憶體,諸如DRAM、快取記憶體、快閃記憶體或其他儲存體內。此外,指令可經由網路或藉助於其他電腦可讀媒體來分配。因此,機器可讀媒體可包括以機器(例如電腦)可讀形式儲存或傳輸資訊之任何機構,但不限於軟碟、光盤、光碟片、唯讀記憶體(CD-ROM)及磁光碟、唯讀記憶體(ROM)、隨機存取記憶體(RAM)、可抹 除可規劃唯讀記憶體(EPROM)、電可抹除可規劃唯讀記憶體(EEPROM)、磁性或光學卡片、快閃記憶體,或用於在網際網路上經由電信號、光信號、聽覺信號或其他形式傳播信號(例如載波、紅外信號、數位信號等)來傳輸資訊之有形的機器可讀儲存體。因此,電腦可讀媒體包括適於以機器(例如電腦)可讀形式儲存或傳輸電子指令或資訊之任何類型的有形機器可讀媒體。
設計可經歷各種階段,自產生至模擬至製造。表示設計之資料可以許多方式表示設計。首先,如適用於模擬,硬體可使用硬體描述語言或另一功能描述語言來表示。另外,具有邏輯閘及/或電晶體閘極之電路階層模型可在設計過程之某一階段產生。此外,大多數設計在某一階段達成表示硬體模型中各種裝置之實體置放的資料階層。在使用習知半導體製造技術之情況下,表示硬體模型之資料可為指定在用以產生積體電路之遮罩的不同遮罩層上存在或不存在各種特徵之資料。在設計之任何表示中,資料可以任何形式儲存於機器可讀媒體中。記憶體或磁性或光學儲存體(諸如碟片)可為機器可讀媒體,其儲存經由光波或電波傳輸之資訊,該光波或電波係經調變或以其他方式產生來傳輸此資訊。當傳輸指示或載運程式碼或設計之電載波,至執行複製、緩衝或再傳輸電信號之程度時,產生一個新複本。因此,通訊提供者或網路提供者可至少暫時在有形的機器可讀媒體上儲存一個項目,諸如編碼於載波中之資訊,其體現了本發明實施例之技術。
在現代處理器中,使用許多不同執行單元來處理及執行多種程式碼及指令。並非所有指令均產生得一樣,如一些完成得較快,而其他可花費許多時鐘循環來完成。指令通量愈快,則處理器之總體效能愈好。因此,有利的是使盡可能多的指令盡可能快地執行。然而,存在具有較大複雜性且需要較多執行時間及處理器資源之某些指令。舉例而言,存在浮點指令、負載/儲存操作、資料移動等。
因為更多電腦系統用於網際網路、文本及多媒體應用中,所以已隨時間引入其他處理器支援。在一個實施例中,指令集可與一或多個電腦架構相關聯,電腦架構包括資料類型、指令、暫存器架構、定址模式、記憶體架構、中斷及異常處置及外部輸入及輸出(I/O)。
在一個實施例中,指令集架構(ISA)可由一或多個微架構實施,微架構包括用以實施一或多個指令集之處理器邏輯及電路。因此,具有不同微架構之處理器可共享常見指令集之至少一部分。舉例而言,Intel® Pentium 4處理器、Intel® CoreTM處理器及Sunnyvale CA之Advanced Micro Devices公司之處理器實施幾乎相同版本之x86指令集(新版本中已增加一些擴展),但具有不同內部設計。類似地,由其他處理器開發公司(諸如ARM Holdings有限公司、MIPS)或其許可獲得者或採用者設計之處理器可共享常見指令集之至少一部分,但可包括不同處理器設計。舉例而言,ISA之相同暫存器可使用新技術 或熟知技術在不同微架構中以不同方式實施,包括專用實體暫存器、一或多個動態分派實體暫存器,其使用暫存器重新命名機構(例如使用暫存器別名表(RAT)、重新排序器緩衝器(ROB)及引退暫存器檔案。在一個實施例中,暫存器可包括一或多個暫存器、暫存器架構、暫存器檔案或其他暫存器組,其可能或可能不可由軟體程序員定址。
在一個實施例中,指令可包括一或多種指令格式。在一個實施例中,指令格式可指示各種欄位(位元數、位元位置等)來尤其指定要執行之操作及被執行該操作之運算元。一些指令格式可進一步由指令模板(或子格式)打斷界定。舉例而言,既定指令格式之指令模板可界定來具有指令格式欄位之不同子集及/或界定來具有以不同方式解譯之既定欄位。在一個實施例中,指令係使用指令格式(且若得到界定,則在指令格式之指令模板中之既定一種中)來表示,且指定或指示操作,及將被操作該操作之運算元。
科學、金融、自向量化通用目的、RMS(辨識、採掘及合成)應用,及視覺及多媒體應用(例如2D/3D圖形、影像處理、視訊壓縮/解壓縮、聲音辨識演算法及音訊操作)可能需要對大量資料項目執行相同操作。在一個實施例中,單一指令多重資料(SIMD)係指使得處理器對多重資料元件執行操作之一種類型的指令。SIMD技術可用於以下處理器中:其可將暫存器中之位元邏輯分成許多固定大小或可變大小之資料元件,其各自表示一個獨立 值。舉例而言,在一個實施例中,64位元暫存器中之位元可組織成含有四個獨立16位元資料元件之源運算元,該等元件各自表示一個獨立16位元值。此類型之資料可稱為『緊縮』資料類型或『向量』資料類型,且此資料類型之運算元稱為緊縮資料運算元或向量運算元。在一個實施例中,緊縮資料項或向量可為儲存在單一暫存器內之緊縮資料元件序列,且緊縮資料運算元或向量運算元可為SIMD指令(或『緊縮資料指令』或『向量指令』)之源運算元或目的地運算元。在一個實施例中,SIMD指令指定要對兩個源向量運算元執行來產生目的地向量運算元(亦稱為結果向量運算元)之單一向量操作,該目的地向量運算元具有相同或不同大小、具有相同或不同數目之資料元件,且呈相同或不同資料元件次序。
SIMD技術已使應用程式效能能夠顯著改善,SIMD技術諸如為以下處理器所採用之技術:Intel® CoreTM處理器,其具有包括x86、MMXTM、串流SIMD擴充(SSE)、SSE2、SSE3、SSE4.1及SSE4.2指令之指令集;ARM處理器,諸如ARM Cortex®家族處理器,其具有包括向量浮點(VFP)及/或NEON指令之指令集;及MIPS處理器,諸如中國科學院計算技術研究所(ICT)開發之Loongson家族處理器(CoreTM及MMXTM為Santa Clara,Calif.之英特爾公司的注冊商標或商標)。
在一個實施例中,目的地及源暫存器/資料為總稱,其表示對應資料或操作之來源及目的地。在一些實 施例中,其可由具有不同於所描繪之名字或功能的其他名字或功能之暫存器、記憶體或其他儲存區實施。舉例而言,在一個實施例中,「DEST1」可為暫時儲存暫存器或其他儲存區,而「SRC1」及「SRC2」可為第一及第二源儲存暫存器或其他儲存區等。在其他實施例中,SRC及DEST儲存區中兩者或兩者以上可對應於同一儲存區(例如SIMD暫存器)內之不同資料儲存元件。在一個實施例中,源暫存器中之一者亦可充當目的地暫存器,其藉由例如將對第一源資料及第二源資料執行之操作的結果回寫至用作目的地暫存器之兩個源暫存器之一中來達成。
圖1A為用處理器形成之示範性電腦系統之方塊圖,該處理器包括執行根據本發明之一個實施例之指令的執行單元。根據本發明,諸如在本文所述之實施例中,系統100包括採用執行單元之組件,諸如處理器102,包括執行過程資料演算法之邏輯。系統100代表基於以下之處理系統:PENTIUM® III、PENTIUM® 4、XeonTM、Itanium®、XScaleTM及/或StrongARMTM微處理器,其可獲自Santa Clara,California之英特爾公司,但亦可使用其他系統(包括具有其他微處理器、工程化工作站、機上盒(set-top box)及其類似物之PC)。在一個實施例中,樣本系統100可執行可獲自Redmond,Washington之微軟公司的WINDOWSTM作業系統之版本,但亦可使用其他作業系統(例如UNIX及Linux)、嵌入式軟體及/或圖形使用者介面。因此,本發明之實施例不限於硬體電路與軟體之任何 特定組合。
實施例不限於電腦系統。本發明之替代性實施例可用於其他裝置,諸如手持式裝置及嵌入式應用中。手持式裝置之一些實例包括蜂巢式電話、網際網路協定裝置、數位相機、個人數位助理(PDA)及手持式PC。嵌入式應用可包括微控制器、數位信號處理器(DSP)、晶片上系統、網路電腦(NetPC)、機上盒、網路集線器(network hub)、廣域網絡(WAN)交換器(switch)或可執行一或多個根據至少一個實施例之指令之任何其他系統。
圖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亦包括儲存某些宏指令之微碼的一微碼(microcode;ucode)ROM。對於一個實施例,執行單元108包括處理緊縮指令集109之邏輯。藉由在一通用處理器102之指令集中包括緊縮指令集109,以及執行指令之相關電路,許多多媒體應用使用之操作可使用通用處理器102中之緊縮資料來執行。因此,許多多媒體應用可藉由使用處理器之用於對緊縮資料執行操作之資料匯流排之全寬來較有效加速及執行。此可消除將較小資料單位轉移穿過處理器之資料匯流排以每次對資料元件執行一或多個操作的需要。
執行單元108之替代性實施例亦可用於微控制器、嵌入式處理器、圖形裝置、DSP及其他類型邏輯電路中。系統100包括一記憶體120。記憶體120可為動態隨機存取記憶體(DRAM)裝置、靜態隨機存取記憶體(SRAM)裝置、快閃記憶體裝置或其他記憶體裝置。記憶體120可儲存由可由處理器102執行之複數資料信號表示 之複數指令及/或資料。
系統邏輯晶片116耦接至處理器匯流排110及記憶體120。在所說明之實施例中,系統邏輯晶片116為一記憶體控制器集線器(MCH)。處理器102可經由處理器匯流排110與MCH 116通訊。MCH 116向用於指令及資料儲存及圖形命令、資料及紋理儲存之記憶體120提供高頻帶寬度記憶體路徑118。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裝置經由I/O匯流排153來通訊。此等I/O裝置可包括(但不限於)例如通用異步接收器/發射器(UART)155、通用串行匯流排(USB)156、藍牙無線UART 157及I/O擴展介面158。
資料處理系統140之一個實施例提供行動通訊、網路通訊及/或無線通訊,及能夠執行SIMD操作(包括向量混合及排列功能)之處理核心159。處理核心159可用以下規劃:各種音訊、視訊、成像及通訊演算法,包括 離散轉化,諸如沃爾什-哈達馬變換(Walsh-Hadamard transform)、快速傅里葉變換(FFT)、離散余弦變換(DCT)及其個別反向變換;壓縮/解壓縮技術,諸如色彩空間轉化、視訊編碼運動評估或視訊解碼運動補償;及調變/解調(MODEM)功能,諸如脈衝編碼調變(PCM)。
圖1C例示一個資料處理系統之另一替代性實施例,該資料處理系統能夠使用控制操作來執行指令來提供SIMD可變移位與旋轉功能。根據一個替代性實施例,資料處理系統160可包括一主處理器166、一SIMD共處理器161、一快取記憶體167及一輸入/輸出系統168。輸入/輸出系統168可任擇地耦接至一無線介面169。SIMD共處理器161能夠執行包括根據一個實施例之複數指令的複數操作。處理核心170亦可適於以一或多種處理技術製造,且藉由足夠詳細地表示於機器可讀媒體上可適於有助於製造包括處理核心170之資料處理系統160之全部或部分。
對於一個實施例,SIMD共處理器161包含一執行單元162及一暫存器檔案164之集合。主處理器166之一個實施例包含識別指令集163之複數指令的一解碼器165,該指令集163包括根據一個實施例之由執行單元162執行之複數指令。對於替代性實施例,SIMD共處理器161亦包含解碼指令集163之複數指令的解碼器165B之至少部分。處理核心170亦包括理解本發明實施例並非必需之其他電路(未圖示)。
在操作時,主處理器166執行控制一般類型資料處理操作之資料處理指令流,該等一般類型資料處理操作包括與快取記憶體167及輸入/輸出系統168相互作用。嵌入於資料處理指令流內的是SIMD共處理器指令。主處理器166之解碼器165識別具有一種類型之此等SIMD共處理器指令,其應由所連接之SIMD共處理器161執行。因此,主處理器166在共處理器匯流排171上發佈此等SIMD共處理器指令(或表示SIMD共處理器指令之控制信號),在該共處理器匯流排171中,SIMD共處理器指令係由任何連接之SIMD共處理器接收。在此情況下,SIMD共處理器161應接受及執行任何接收之意欲用於其之SIMD共處理器指令。
資料可經由無線介面169來接收以便由SIMD共處理器指令處理。對於一個實例,語音通訊可以數位信號形式接收,該數位信號可由SIMD共處理器指令處理來再生代表語音通訊之數位音訊樣本。對於另一實例,壓縮音訊及/或視訊可以數位位元流形式接收,該數位位元流可由SIMD共處理器指令處理來再生數位音訊樣本及/或運動視訊圖框。對於處理核心170之一個實施例,主處理器166與一SIMD共處理器161經整合成單一處理核心170,其包含一執行單元162、一暫存器檔案164之集合及一解碼器165來識別包括根據一個實施例之指令的指令集163之指令。
圖2為一處理器200之微架構之方塊圖,其 包括執行根據本發明之一個實施例之指令的邏輯電路。在一些實施例中,可實施根據一個實施例之一指令對具有位元組、字、雙字、四字等大小之資料元件,以及資料類型(諸如單精度及雙精度整數及浮點資料類型)進行操作。在一個實施例中,循序前端201為處理器200之部分,其擷取要執行之指令且使其準備稍後用於處理器管線中。前端201可包括幾個單元。在一個實施例中,指令預取器226自記憶體擷取指令且將其饋至指令解碼器228中,指令解碼器228又將其解碼或解譯。舉例而言,在一個實施例中,解碼器將所接收之指令解碼成一或多個稱為「微指令」或「微操作」(亦稱為微op或uop)之機器可執行之操作。在其他實施例中,解碼器將指令剖析成操作碼及對應資料及控制行,其由微架構用於執行根據一個實施例之操作。在一個實施例中,追蹤快取記憶體230獲得經解碼之uop且將其組裝成程式有序序列或追蹤於uop佇列234中以便執行。當追蹤快取記憶體230遇到複雜指令時,微碼ROM 232提供完成操作所需之uop。
一些指令轉化為單一微op,而其他需要幾個微op來完成完整操作。在一個實施例中,若需要四個以上微op來完成指令,則解碼器228存取微碼ROM 232來執行指令。對於一個實施例,一指令可解碼成少量微op以便在指令解碼器228得到處理。在另一實施例中,若實現操作需要許多微op,則一指令可儲存於微碼ROM 232內。追蹤快取記憶體230係指一入口點可規劃邏輯陣列 (PLA),其判定一正確微指令指標器以便自微碼ROM 232讀取微碼序列來完成一或多個根據一個實施例之指令。在微碼ROM 232完成指令之定序微op之後,機器之前端201恢復自追蹤快取記憶體230擷取微op。
亂序執行引擎203為使指令準備執行之處。亂序執行邏輯具有許多緩衝器,當指令流順管線而下且準備要執行時,該等緩衝器平滑傳出及重定序指令流來最佳化效能。分配器邏輯分配各uop需要循序執行之複數機器緩衝器及資源。暫存器重新命名邏輯將邏輯暫存器重新命名,於一暫存器檔案中之入口上。在指令排程器:記憶體排程器、快速排程器202、慢速/一般浮點排程器204及簡單浮點排程器206前,分配器亦為兩個uop佇列中之一者中之各uop分配一個入口,一者用於記憶體操作且一者用於非記憶體操作。依據uop之依賴性輸入暫存器運算元來源之準備狀態及uop完成其操作所需之執行資源之可得性,uop排程器202、204、206判定uop何時為執行做好準備。一個實施例之快速排程器202可定排程於主時鐘週期之各一半,而其他排程器可在每個主處理器時鐘週期僅定排程一次。排程器對分發埠進行仲裁來為uop執行定排程。
在執行方塊211中,暫存器檔案208、210位於排程器202、204、206與執行單元212、214、216、218、220、222、224之間。存在一獨立暫存器檔案208、210,其分別用於整數操作及浮點操作。一個實施例之各 暫存器檔案208、210亦包括一旁路網路,其能夠繞過(bypass)或進送(forward)剛完成、尚未寫入新依賴性uop之暫存器檔案中的結果。整數暫存器檔案208及浮點暫存器檔案210亦能夠與其他者進行資料通訊。對於一個實施例,將整數暫存器檔案208分成兩個獨立暫存器檔案,一個暫存器檔案用於低階32位元資料且第二暫存器檔案用於高階32位元資料。因為浮點指令通常具有64位元至128位元寬度之運算元,所以一個實施例之浮點暫存器檔案210具有128位元寬的入口。
執行方塊211含有複數執行單元212、214、216、218、220、222、224,其中指令事實上得到執行。此部分包括暫存器檔案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位元浮點除法器來執行除法、平方根及其餘微op。對於本發明之實施例,涉及一浮點值之指令可用浮點硬體處理。在一個實施例中,ALU操作進入高速ALU執行單元216、218。一個實施例之快速ALU 216、218可執行快速操作,有效潛時為一半的時鐘週期。對於一個實施例,最複雜整數操作進入慢速ALU 220,因為慢速ALU 220包 括用於長潛時型操作(諸如乘法、移位、旗邏輯及分支處理)之整數執行硬體。記憶體負載/儲存操作係由AGU 212、214執行。對於一個實施例,在對64位元資料運算元執行整數操作之情形下描述整數ALU216、218、220。在替代性實施例中,可實施ALU 216、218、220來支援多種資料位元,包括16、32、128、256等。類似地,可實施浮點單元222、224來支援具有各種寬度之位元的運算元範圍。對於一個實施例,與SIMD及多媒體指令結合,浮點單元222、224可對128位元寬的緊縮資料運算元進行操作。
在一個實施例中,在母負載已完成執行之前,uop排程器202、204、206分發相關操作。當uop經投機性定排程且在處理器200中執行時,處理器200亦包括處理記憶體遺漏之邏輯。若在資料快取記憶體中遺漏資料負載,則可在管線中之行程(flight)中存在依賴性操作,其已給排程器留下暫時不正確之資料。一重演機構追蹤且重執行使用不正確資料之指令。僅依賴性操作需要重演且獨立操作經允許完成。一處理器之一個實施例之排程器及重演機構亦設計來捕捉在一遮罩暫存器與一通用暫存器之間提供轉換之指令。
術語「暫存器」可指用作識別運算元之指令之部分的機載處理器儲存位置。換言之,暫存器可為在處理器外部可用之暫存器(自程序員之觀點來看)。然而,一個實施例之暫存器的含義不應受限於特定類型之電路。確 切言之,一個實施例之暫存器能夠儲存及提供資料,及執行本文所述之功能。本文所述之暫存器可由使用許多不同技術之處理器內之電路實施,該等暫存器諸如為專用實體暫存器、使用暫存器重新命名之動態分配實體暫存器、專用實體暫存器與動態分配實體暫存器之組合,等。在一個實施例中,整數暫存器儲存三十二位元整數資料。一個實施例之暫存器檔案亦含有八個用於緊縮資料之多媒體SIMD暫存器。對於下文之討論,將暫存器理解為設計來保存緊縮資料之資料暫存器,諸如用Santa Clara,California之英特爾公司的MMX技術賦能之微處理器中之64位元寬的MMXTM暫存器(在一些情況下亦稱為『mm』暫存器)。以整數形式與浮點形式均可得之此等MMX暫存器可用伴隨SIMD及SSE指令之緊縮資料元件操作。類似地,與SSE2、SSE3、SSE4或SSE4以上(在屬類上稱為「SSEx」)技術有關之128位元寬的XMM暫存器亦可用來保存此等緊縮資料運算元。在一個實施例中,在儲存緊縮資料及整數資料時,暫存器不需在兩種資料類型之間進行區分。在一個實施例中,整數及浮點含於相同暫存器檔案中或不同暫存器檔案中。此外,在一個實施例中,浮點資料及整數資料可儲存於不同暫存器或相同暫存器中。
在以下圖之實例中,描述許多資料運算元。圖3A例示根據本發明之一個實施例的多媒體暫存器中之各種緊縮資料類型表示。圖3A例示128位元寬運算元之 一緊縮位元組310、一緊縮字320及一緊縮雙字(doubleword;dword)330之資料類型。此實例之緊縮位元組格式310為128位元長且含有十六個緊縮位元組資料元件。位元組在本文中定義為資料之8位元。各位元組資料元件之資訊儲存於位元7至位元0(對於位元組0)、位元15至位元8(對於位元組1)、位元23至位元16(對於位元組2)及最終位元120至位元127(對於位元組15)中。因此,所有可得位元均用於暫存器中。此儲存配置增大處理器之儲存效率。又,在十六個資料元件得到存取下,現可對十六個資料元件平行執行一個操作。
一般而言,一資料元件為與相同長度之其他資料元件一起儲存於單一暫存器或記憶體位置之個別資料片。在與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位元或512位元以上。
圖3C例示根據本發明之一個實施例的多媒體暫存器中之各種帶符號及不帶符號的緊縮資料類型表示。不帶符號之緊縮位元組表示344說明一SIMD暫存器中一不帶符號之緊縮位元組的儲存。各位元組資料元件之資訊儲存於位元7至位元0(對於位元組0)、位元15至位元8(對於位元組1)、位元23至位元16(對於位元組2)等,及最終位元120至位元127(對於位元組15)中。因此,所有可得位元均用於暫存器中。此儲存配置可增大處理器之儲存效率。又,在十六個資料元件得到存取下,現可以平行 方式對十六個資料元件執行一個操作。帶符號的緊縮位元組表示345說明帶符號緊縮位元組之儲存。請注意,每一位元組資料元件之第八位元為符號標誌。不帶符號的緊縮字表示346說明字7至字0如何儲存於SIMD暫存器中。帶符號的緊縮字表示347類似於不帶符號的緊縮字暫存器中表示346。請注意,各字資料元件之第十六位元為符號標誌。不帶符號的緊縮雙字表示348展示如何儲存雙字資料元件。帶符號的緊縮雙字表示349類似於不帶符號的緊縮雙字暫存器中表示348。請注意,必需的符號位元為各雙字資料元件之第三十二位元。
圖3D為操作編碼(操作碼)格式360之一個實施例之描繪,其具有三十二或更多位元,及對應於在以下文件中所述之操作碼格式之一種類型的暫存器/記憶體運算元定址模式:「Intel® 64 and IA-32 Intel Architecture Software Developer's Manual Combined Volumes 2A and 2B:Instruction Set Reference A-Z」,其可在全球資訊網(www)於intel.com/products/processor/manuals/獲自Santa Clara,CA之英特爾公司。在一個實施例中,且指令可由欄位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,在一些替代性實施例中,64位元(或128位元,或256位元,或512位元或512位元以上)單一指令多重資料(SIMD)算術操作可經由一共處理器資料處理(CDP)指令來執行。操作編碼(操作碼)格式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之描繪,該另一替代性操作編碼(操作碼)格式397提供對應於在以下文件中所述之操作碼格式的一種類型的根據另一實施例之SIMD可變移位與旋轉功能:「Intel® Advanced Vector Extensions Programming Reference」,其可在全球資訊網(www)於intel.com/products/processor/manuals/獲自Santa Clara,CA之英特爾 公司。
原始x86指令集為一1位元組操作碼提供各種格式的位址字節及包含於其他位元組的立即運算元,該立即運算元之存在係自第一「操作碼」位元組可知。另外,存在保留為操作碼之修飾符的某些位元組值(因為其必須置於指令之前,所以稱為前綴)。當256個操作碼位元組(包括此等特定前綴值)之原始調色盤(original palette)耗盡時,單一位元組專用作256個操作碼之換碼(escape)之新集合。隨著添加向量指令(例如SIMD),對更多操作碼產生需要,且甚至當經由使用前綴進行擴展時,「兩個位元組」操作碼映射(opcode map)亦為不足。為此目的,在其他映射中添加新指令,其使用2個位元組加一任擇之前綴作為一識別符。
另外,為了有助於呈64位元模式之其他暫存器,可在前綴與操作碼(及判定操作碼所必需之任何換碼位元組)中間使用一額外前綴(稱為「REX」)。在一個實施例中,REX可具有4個「有效負載(payload)」位元來指示使用呈64位元模式之其他暫存器。在其他實施例中,其可具有少於或多於4個位元。以下在屬類上說明至少一個指令集之通用格式(其一般對應於格式360及/或格式370):[前綴][rex]換碼[換碼2]操作碼modrm(等)
操作碼格式397對應於操作碼格式370且包含可選擇之VEX前綴位元組391(在一個實施例中以C4 hex或C5 hex開始)來替代大多數其他常用舊式指令前綴位元組及逸出碼。舉例而言,以下說明一個使用兩個欄位來編碼一指令之實施例,其當原始指令中不存在一第二逸出碼時可得到使用。在下文說明之實施例中,舊式換碼係由新換碼值表示,舊式前綴經完全壓縮成「有效負載」位元組之部分,舊式前綴經收復且可用於未來擴展,且增加新特徵(例如增大向量長度及另一源暫存器說明符)。
Figure 101150580-A0305-02-0035-1
當原始指令中存在第二逸出碼時,或當REX欄位中之額外位元(例如XB及W欄位)需要被使用時。在下文說明之替代性實施例中,類似於上文來壓縮第一舊式換碼及舊式前綴,且第二逸出碼經壓縮於一「映射」欄位中,使得未來圖或特徵空間可得,且再次增加新特徵(例如增大向量長度及另一源暫存器說明符)。
Figure 101150580-A0305-02-0036-2
根據一個實施例之指令可由欄位391及392中一或多者編碼。每個指令可由與源運算元識別符374及375組合且與一任擇之比例-索引-基址(SIB)識別符393、一任擇之置換識別符394及一任擇之立即位元組395組合之欄位391識別出至多四個運算元位置。對於一個實施例,VEX前綴位元組391可用來識別32位元或64位元源運算元及目的地運算元及/或128位元或256位元SIMD暫存器或記憶體運算元。對於一個實施例,操作碼格式397提供之功能對於操作碼格式370可為冗餘的,而在其他實施例中其為不同的。操作碼格式360及397允許暫存器至暫存器、記憶體至暫存器、暫存器接著記憶體、暫存器接著暫存器、暫存器接著立即、暫存器至記憶體定址,其部分地由MOD欄位373及由任擇之(SIB)識別符393、一任擇之置換識別符394及一任擇之立即位元組395指定。
接著轉至圖3H,其為另一替代性操作編碼(操作碼)格式398之描繪,該另一替代性操作編碼(操作碼)格式398提供根據另一實施例之SIMD可變移位與旋轉功能。操作碼格式398對應於操作碼格式370及397且包含任擇之EVEX前綴位元組396(在一個實施例中以62 hex開始)來替代大多數其他常用舊式指令前綴位元組及逸出碼且提供其他功能。根據一個實施例之一指令可由欄位396及392中一或多者編碼。每個指令至多四個運算元位置及一遮罩可由與源運算元識別符374及375組合且與一任擇之比例-索引-基址(SIB)識別符393、一任擇之置換識別符394及一任擇之立即位元組395組合之欄位396識別出。對於一個實施例,EVEX前綴位元組396可用來識別32位元或64位元源運算元及目的地運算元及/或128位元、256位元或512位元SIMD暫存器或記憶體運算元。對於一個實施例,操作碼格式398提供之功能對於操作碼格式370或397可為冗餘的,而在其他實施例中其為不同的。操作碼格式398允許暫存器至暫存器、記憶體至暫存器、暫存器接著記憶體、暫存器接著暫存器、暫存器接著立即、暫存器至記憶體定址(用遮罩),其部分地由MOD欄位373及由任擇之(SIB)識別符393、一任擇之置換識別符394及一任擇之立即位元組395指定。以下在屬類上說明至少一個指令集之通用格式(其一般對應於格式360及/或格式370):evex1 RXBmmmmm WvvvLpp evex4操作碼modrm[sib] [disp][imm]。
對於一個實施例,根據EVEX格式398編碼之一指令可具有其他「有效負載」位元,其可用來在具有其他新特徵之一遮罩暫存器與一通用暫存器(諸如一使用者可組配式遮罩暫存器,或另一運算元,或以下中之選擇物:128位元、256位元或512位元向量暫存器,或512位元以上向量暫存器等)之間提供轉換。
舉例而言,VEX格式397或EVEX格式398可用來提供SIMD可變移位與旋轉功能。另外,其中VEX格式397或EVEX格式398可用來為128位元、256位元、512位元或512位元以上(或512位元以下)向量暫存器提供SIMD可變移位與旋轉功能。
以下實例說明使用控制操作來提供SIMD可變移位與旋轉功能之實例指令:
Figure 101150580-A0305-02-0039-3
此等移位與旋轉指令可經由對應於一特定向量元件之複數選擇器,對控制邏輯起回應而使用控制操作且在不會過度需要對應於各種不同元件大小之向量元件之其他硬體選擇器或其他資料流階段下自經複製及連接之資料欄位選擇部分,以有效提供不同元件大小之SIMD可變移位與旋轉功能。
圖4A為例示根據本發明之至少一個實施例的循序管線及一暫存器重新命名階段、亂序發佈/執行管線之方塊圖。圖4B為例示根據本發明之至少一個實施例的要包括於一處理器中之一循序架構核心及一暫存器重新命名邏輯、亂序發佈/執行邏輯之方塊圖。圖4A中之實線框例示循序管線,而虛線框例示暫存器重新命名、亂序發佈/執行管線。類似地,圖4B中之實線框例示循序架構邏輯,而虛線框例示暫存器重新命名邏輯及亂序發佈/執行邏輯。
在圖4A中,一處理器管線400包括一擷取階段402、一長度解碼階段404、一解碼階段406、一分配階段408、一重新命名階段410、一定排程(亦稱作分發或發佈)階段412、一暫存器讀取/記憶體讀取階段414、一執行階段416、一回寫/記憶體寫入階段418、一異常處置階段422及一確認階段424。
在圖4B中,箭頭表示兩個或兩個以上單元之間的耦接且箭頭方向指示彼等單元之間的資料流方向。圖 4B展示處理器核心490,其包括耦接至一執行引擎單元450之一前端單元430,且該兩者均與一記憶體單元470耦接。
核心490可為一精簡指令集計算(RISC)核心、一複雜指令集計算(CISC)核心、一極長指令字(VLIW)核心或一混合或替代性核心類型。作為又一選擇,核心490可為一專用核心,諸如一網路或通訊核心、壓縮引擎、圖形核心或其類似物。
前端單元430包括耦接至一指令快取記憶體單元434之一分支預測單元432,該指令快取記憶體單元434耦接至一指令轉譯後備緩衝器(translation lookaside buffer;TLB)436,指令TLB 436耦接至一指令擷取單元438,該指令擷取單元438耦接至一解碼單元440。解碼單元或解碼器可解碼複數指令,且產生一或多個微操作、微碼入口點、微指令、其他指令或其他控制信號作為輸出,上述各者係自原始指令解碼所得,或以其他方式反映原始指令,或係由原始指令導出。解碼器可使用各種不同機構實施。適合的機構之實例包括但不限於查找表、硬體實施、可規劃邏輯陣列(programmable logic array;PLA)、微碼唯讀記憶體(ROM)等。指令快取記憶體單元434進一步耦接至記憶體單元470中之一2階(L2)快取記憶體單元476。解碼單元440耦接至執行引擎單元450中之一重新命名/分配器單元452。
執行引擎單元450包括耦接至一引退單元454 及一或多個排程器單元456之集合的重新命名/分配器單元452。排程器單元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 of Sunnyvale,CA之MIPS指令集;ARM Holdings of Sunnyvale,CA之ARM指令集(具有可選擇之其他擴展,諸如NEON))。
應瞭解,核心可支援多執行緒處理(執行兩個或兩個以上平行的操作或執行緒集)且可以多種方式如此進行,該等方式包括時間分片多執行緒處理、同時多執行緒處理(其中單一實體核心為實體核心同時多執行緒處理之各執行緒提供邏輯核心)或其組合(例如時間分片擷取及解碼及其後之同時多執行緒處理,諸如在Intel®超多執行緒處理(Hyperthreading)技術中)。
儘管暫存器重新命名係在亂序執行之情形下描述,但應瞭解,暫存器重新命名可用於一循序架構中。儘管所說明之處理器實施例亦包括一獨立指令及資料快取記憶體單元434/474及一共享L2快取記憶體單元476,但替代性實施例可具有指令與資料之單一內部快取記憶體, 諸如一1階(L1)內部快取記憶體,或內部快取記憶體之多階。在一些實施例中,系統可包括一內部快取記憶體與一外部快取記憶體之組合,該外部快取記憶體係在核心及/或處理器之外。或者,所有快取記憶體均可在核心及/或處理器之外。
圖5為一單核心處理器及一多核心處理器500之方塊圖,其具有根據本發明實施例之整合型記憶體控制器與圖形。圖5中之實線框例示具有一單核心502A、一系統代理510、一或多個匯流排控制器單元516之集合的一處理器500,而任擇地增加虛線框例示一個替代性處理器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,Calif之英特爾公司。或者,處理器可來自另一公司,諸如ARM Holdings,Ltd,MIPS等。處理器可為專用處理器,諸如網路處理器或通訊處理器、壓縮引擎、圖形處理器、共處理器、嵌入式處理器或其類似處理器。處理器可在一或多個晶片上實施。處理器500可為一或多個基板之一部分及/或可使用許多處理技術(諸如BiCMOS、CMOS或NMOS)中任一者在一或多個基板上實施。
圖6-8為適於包括處理器500之示範性系統,而圖9為可包括核心502中的一或多者之一示範性晶片上系統(SoC)。此項技術中已知的關於以下各者之其他 系統設計及組配亦適合:膝上型電腦、桌上型電腦、手持式PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、行動電話、攜帶型媒體播放器、手持式裝置,以及各種其他電子裝置。一般而言,能夠併入如本文中所揭示之處理器及/或其他執行邏輯中的多種系統或電子裝置一般為適合的。
現參考圖6,所展示為根據本發明之一個實施例之一系統600的方塊圖。系統600可包括一或多個處理器610、615,該等處理器耦接至圖形記憶體控制器集線器(GMCH)620。其他處理器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與處理 器610、615經由多分支匯流排(multi-drop bus)(諸如一前側匯流排(FSB)695)來通訊。
此外,GMCH 620耦接至一顯示器645(諸如一平板顯示器)。GMCH 620可包括一整合型圖形加速器。GMCH 620進一步耦接至一輸入/輸出(I/O)控制器集線器(ICH)650,其可用來使各種周邊裝置耦接至系統600。圖6之實施例中例如展示一外部圖形裝置660,其可為耦接至ICH 650之一離散圖形裝置,以及另一周邊裝置670。
或者,其他或不同處理器亦可存在於系統600中。舉例而言,其他處理器615可包括與處理器610相同之其他處理器、與處理器610為異質或不對稱的其他處理器、加速器(諸如圖形加速器或數位信號處理(DSP)單元)、場可規劃閘陣列(field programmable gate array)或任何其他處理器。就優點量度範圍而言,實體資源610與615之間可能有多種差異,其中包括架構特徵、微架構特徵、熱特徵、功率消耗特徵及類似者。在處理器610、615中,此等差異可有效表現為不對稱性及異質性。對於至少一個實施例,各種處理器610、615可存在於同一模具包裝中。
現參考圖7,所展示為根據本發明之一個實施例之一第二系統700的方塊圖。如圖7中所示,多處理器系統700係一點對點互連系統,且包括一第一處理器770及一第二處理器780,該等處理器經由一點對點互連750 予以耦接。處理器770及780中之每一者可為處理器500之某一版本,如處理器610、615中一或多者。
儘管展示了僅兩個處理器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,該等記憶體可為局部地附接至個別處理器之主記憶體的部分。
處理器770、780各自可使用點對點介面電路776、794、786、798經由個別P-P介面752、754與一晶片組790交換資訊。晶片組790亦可經由一高效能圖形介面739與一高效圖形電路738交換資訊。
在任一處理器中或兩個處理器之外,可包括一共享快取記憶體(未圖示),而該共享快取記憶體經由P-P互連與該等處理器連接,以使得若一處理器被置於一低功率模式中時,可將任一處理器或兩個處理器之局域快取記憶體資訊儲存在該共享快取記憶體中。
一晶片組790可經由介面796耦接至一第一 匯流排716。在一個實施例中,第一匯流排716可為一周邊組件互連(PCI)匯流排,或者諸如高速PCI匯流排或另一第三代I/O互連匯流排之一匯流排,但本發明之範疇不限於此。
如圖7中所示,各種I/O裝置714可耦接至第一匯流排716,一匯流排橋接器718將第一匯流排716耦接至一第二匯流排720。在一個實施例中,第二匯流排720可為一低針腳數(LPC)匯流排。各種裝置可耦接至第二匯流排720,其中包括,例如,一鍵盤及/或滑鼠722、複數通訊裝置727,以及一儲存單元728(諸如磁碟機或其他大容量儲存裝置),在一個實施例中,儲存單元728可包括指令/程式碼及資料730。此外,一音訊I/O 724可耦接至第二匯流排720。請注意,其他架構係可能的。舉例而言,代替圖7之點對點架構,一系統可實施一多分支匯流排或其他此種架構。
現參考圖8,所展示為根據本發明之一個實施例之一第三系統800的方塊圖。圖7及圖8中的相似元件帶有相似參考數字,且圖8已省略圖7之某些態樣以避免混淆圖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(整合型晶片間伴音/內部積體電路(Integrated Interchip Sound/Inter-Integrated Circuit))介面1070。其他邏輯及電路可包括於圖10之處理器中,包括較多CPU或GPU及其他周邊介面控制器。
至少一個實施例之一或多個態樣可藉由儲存於一機器可讀媒體上之代表性資料來實施,機器可讀媒體表示處理器內的各種邏輯,該代表性資料在由一機器讀取時使機器製造邏輯來執行本文所述之技術。此等表示(稱為IP核心)可儲存於一有形的機器可讀媒體(「磁帶」) 上,且可供應給各種客戶或製造設施以載入至實際上製造該邏輯或處理器的製造機中。舉例而言,IP核心,諸如由ARM Holdings,Ltd.開發之CortexTM家族處理器,及由中國科學院計算技術機研究所(ICT)開發之Loongson IP核心可得到許可或出售給各種客戶或許可獲得者,諸如Texas Instruments、Qualcomm、Apple或Samsung,且在此等客戶或許可獲得者所製造之處理器中實施。
圖11展示方塊圖,其例示根據一個實施例之複數IP核心的開發。儲存體1130包括模擬軟體1120及/或硬體或軟體模型1110。在一個實施例中,可經由記憶體1140(例如,硬碟)、有線連接(例如,網際網路)1150或無線連接1160將表示IP核心設計之資料提供至儲存體1130。由模擬工具及模型產生之IP核心資訊接著可傳輸至一製造設施,在該製造設施處IP核心資訊可由一第三方製造,以執行根據至少一個實施例的至少一個指令。
在一些實施例中,一或多個指令可對應於一第一類型或架構(例如,x86)且在一不同類型或架構(例如,ARM)之一處理器上被轉譯或仿真。因此可在任何處理器或處理器類型(包括ARM、x86、MIPS、GPU或其他處理器類型或架構)上執行根據一個實施例的一指令。
圖12例示如何由不同類型之處理器來仿真根據一個實施例的一第一類型之指令。在圖12中,程式1205含有一些指令,該等指令可執行與根據一個實施例的指令相同或實質上相同之功能。然而,程式1205之指 令之類型及/或格式可能與處理器1215不同或不相容,此意味程式1205中之類型之指令可無法由處理器1215原型地執行。然而,藉助於仿真邏輯1210,將程式1205之指令轉譯為能夠由處理器1215原型地執行之複數指令。在一個實施例中,仿真邏輯係體現於硬體中。在另一實施例中,仿真邏輯係體現於一有形的機器可讀媒體中,該媒體含有軟體,用來將程式1205中之類型之指令轉譯為可由處理器1215原型地執行之類型。在其他實施例中,仿真邏輯為固定功能或可規劃硬體與儲存於一有形的機器可讀媒體上之程式之組合。在一個實施例中,處理器含有仿真邏輯,而在其他實施例中,仿真邏輯存在於處理器之外且由一第三方提供。在一個實施例中,處理器能夠藉由執行包含於處理器中或與處理器相關聯之微碼或韌體來載入仿真邏輯,該仿真邏輯係體現於含有軟體之有形的機器可讀媒體中。
圖13為根據本發明之實施例的對比使用一軟體指令轉換器將一來源指令集中之複數二進位指令轉換為目標指令集中之複數二進位指令的方塊圖。在所說明之實施例中,指令轉換器為一軟體指令轉換器,然而或者可將指令轉換器體現於軟體、韌體、硬體或其各種組合中。圖13展示,可使用x86編譯器1304來編譯用高階語言1302撰寫之程式來產生x86二進位碼1306,x86二進位碼1306可由具有至少一個x86指令集核心之一處理器1316原型地執行。具有至少一x86指令集核心之處理器1316 表示可執行與具有至少一個x86指令集核心之一Intel處理器實質上相同的功能之任何處理器,上述執行係藉由相容地執行或以其他方式處理以下各者:(1)Intel x86指令集核心之指令集的大部分,或(2)旨在在具有至少一個x86指令集核心之Intel處理器上運行的應用程式或其他軟體之目標碼版本,以達成與具有至少一個x86指令集核心之Intel處理器實質上相同的結果。x86編譯器1304表示可操作以產生x86二進位碼1306(例如,目標碼)之一編譯器,其中x86二進位碼1306在經額外連結處理或未經額外連結處理的情況下可在於具有至少一個x86指令集核心之處理器1316上執行。類似地,圖13展示,可使用替代性指令集編譯器1308來編譯用高階語言1302撰寫之程式來產生替代性指令集二進位碼1310,替代性指令集二進位碼1310可由不具有至少一個x86指令集核心之處理器1314(例如,具有複數核心之一處理器,該等核心執行Sunnyvale,CA之MIPS Technologie的MIPS指令集,及/或該等核心執行Sunnyvale,CA之ARM Holdings的ARM指令集)原型地執行。指令轉換器1312用以將x86二進位碼1306轉換為可由不具有至少一個x86指令集核心之處理器1314原型地執行之碼。此轉換後的碼不太可能與替代性指令集二進位碼1310相同,此係因為能夠實現此操作之一指令轉換器難以製造;然而,轉換後的碼將完成一般操作且由來自替代性指令集之指令構成。因此,指令轉換器1312表示經由仿真、模擬或任何其他處理來允許不 具有x86指令集處理器或核心之一處理器或其他電子裝置執行x86二進位碼1306的軟體、韌體、硬體或其組合。
圖14A例示使用一設備1401之一個實施例之一個實例,該設備1401執行提供SIMD可變移位與旋轉功能之指令。對於圖14A中所示之實例,32位元向量元件在被旋轉或移位。設備1401例示SIMD移位器之包括一複製階段的部分,該複製階段複製一第一元件大小(例如64位元(S2[63:0]))之向量資料欄位,且儲存複製向量資料欄位作為第一元件大小兩倍(例如128位元)之對應經複製的資料欄位1410。設備1401亦包括控制邏輯1430及一選擇器階段,該選擇器階段劃分成多個選擇器,即1420、1421及1422,或1424、1425及1426,其對應於一特定向量元件且與複製階段耦接。選擇器之一個實施例,即1420、1421及1422,或1424、1425及1426對應於特定32位元向量元件,且接著為再兩個選擇器階段,分別為1440及1450,或1444及1454,其中選擇器1420、1421及1422,或1424、1425及1426可用來選擇16位元(亦即0或16)中多個之部分,選擇器階段1440或1444可用來選擇4位元(亦即0、4、8或12)中多個之部分,且選擇器階段1450或1454可用來選擇1位元(亦即0、1、2或3)中多個之部分。SIMD移位器亦可包括一校正電路(未圖示)對空出之位元位置進行補零以便左移及邏輯移位,且對空出之位元位置進行符號填充以便算術右移。
當對第一元件大小(例如64位元,其在此實例中並非如此)之向量元件執行SIMD旋轉(或移位)時,對應於任何特定向量元件之多個選擇器,即1420、1421及1422,或1424、1425及1426均應對控制邏輯1430起回應而針對該特定向量元件自經複製的資料欄位1410類似地選擇所有部分。當對第二元件大小(例如在此情況下為32位元)之向量元件執行SIMD旋轉(或移位)時,對應於任何特定向量元件之多個選擇器,即1420、1421及1422,或1424、1425及1426均應對控制邏輯1430起回應而針對該特定向量元件自經複製的資料欄位不同地選擇至少兩個部分,例如選擇器1425選擇第一部分且選擇器1426選擇第三部分。應瞭解,對接收第二元件大小之控制邏輯起回應,針對特定向量元件自經複製的資料欄位1410不同地選擇至少兩個部分可使得不同地選擇(例如由1420及1422選擇)之至少兩個部分成為複製物。
對應於任何特定向量元件之多個選擇器,例如1424、1425及1426,亦根據個別移位計數及方向針對該特定向量元件自經複製的資料欄位不同地選擇至少兩個部分。舉例而言,對於零(0)至十五(15)之右旋(或右移),或對於十七(17)至三十二(32)之左旋(或左移),對應於該特定向量元件之選擇器可如圖14A中所示來選擇部分。
圖14B例示使用設備1401之一個實施例之另一實例,該設備1401執行提供SIMD可變移位與旋轉功能之複數指令。對於圖14B中所示之實例,32位元向量 元件在旋轉或移位。設備1401再次例示一SIMD移位器之包括一複製階段的部分,該複製階段複製一第一元件大小(例如64位元(S2[63:0]))之複數向量資料欄位,且儲存複製向量資料欄位作為第一元件大小兩倍(例如128位元)之對應經複製的資料欄位1410。選擇器之一個實施例,即1420、1421及1422,或1424、1425及1426對應於特定32位元向量元件且可用來選擇16位元(亦即0或16)之多個中之部分。選擇器階段1440或1444可用來選擇4位元(亦即0、4、8或12)之多個中之部分,且選擇器階段1450或1454可用來選擇1位元(亦即0、1、2或3)之多個中之部分。
當對第一元件大小(亦即64位元,再次地,在此實例中並非如此)之向量元件執行SIMD旋轉(或移位)時,對應於任何特定64位元向量元件之多個選擇器,即1420、1421、1422、1424、1425及1426均應對控制邏輯1430起回應而針對特定64位元向量元件自經複製的資料欄位1410類似地選擇所有部分。例如當對第二元件大小(例如在此情況下為32位元)之向量元件執行SIMD旋轉(或移位)時,對應於任何特定32位元向量元件之多個選擇器,即1420、1421及1422,或1424、1425及1426均應對控制邏輯1430起回應而針對該特定向量元件自複數經複製的資料欄位不同地選擇至少兩個部分,選擇器1424選擇第二部分且選擇器1425選擇第三部分。因此,經由控制邏輯1430使用控制操作可提供向量資料欄位之 足夠複製來支援其他資料元件大小。
對應於任何特定向量元件之多個選擇器,例如1424、1425及1426亦根據個別移位計數及方向針對該特定向量元件自經複製的資料欄位不同地選擇至少兩個部分。舉例而言,對於一(1)至十六(16)之左旋(或左移),或對於十六(16)至三十一(31)之右旋(或右移),對應於該特定向量元件之複數選擇器可如圖14B中所示來選擇部分。
圖14C例示使用設備1401之一個實施例之另一實例,該設備1401執行提供SIMD可變移位與旋轉功能之指令。對於圖14C中所示之實例,64位元向量元件在旋轉或移位。設備1401再次例示一SIMD移位器之包括一複製階段的複數部分,該複製階段複製一第一元件大小(例如64位元(S2[63:0]))之複數向量資料欄位,且儲存複數複製向量資料欄位作為第一元件大小兩倍(例如128位元)之對應經複製的資料欄位1410。選擇器之一個實施例,即1420、1421、1422、1424、1425及1426對應於特定64位元向量元件且可用來選擇16位元(亦即0、16、32或48)之多個中之部分。選擇器階段1440或1444可用來選擇4位元(亦即0、4、8或12)之多個中之部分,且選擇器階段1450或1454可用來選擇1位元(亦即0、1、2或3)之多個中之部分。
當對第一元件大小(亦即64位元,其在本實例中為如此)之複數向量元件執行SIMD旋轉(或移位)時,對應於任何特定64位元向量元件之多個選擇器,即 1420、1421、1422、1424、1425及1426均可對控制邏輯1430起回應而針對特定64位元向量元件自經複製的資料欄位1410類似地選擇所有部分。舉例而言,當對第一元件大小(在此情況下為64位元)之複數向量元件執行SIMD旋轉(或移位)時,所有選擇器,即1420、1421、1422、1424、1425及1426均對控制邏輯1430起回應而選擇第一部分。當對第二元件大小(亦即32位元,其在此實例中並非如此)之向量元件執行SIMD旋轉(或移位)時,對應於任何特定32位元向量元件之多個選擇器,即1420、1421及1422,或1424、1425及1426均應針對該特定向量元件自複數經複製的資料欄位不同地選擇至少兩個部分。應瞭解,對接收第一元件大小之控制邏輯起回應,針對特定向量元件自經複製的資料欄位1410類似地選擇所有部分可使得例如由1422及1424選擇之至少兩個中間部分成為複製物。
對應於任何特定向量元件之多個選擇器,例如1420、1421、1422、1424、1425及1426亦根據個別移位計數及方向針對該特定向量元件自經複製的資料欄位1410類似地選擇所有部分。舉例而言,對於零(0)至十五(15)之右旋(或右移),或對於四十九(49)至六十四(64)之左旋(或左移),對應於該特定向量元件之複數選擇器可如圖14C中所示來選擇部分。
圖14D例示使用設備1401之一個實施例之另一實例,該設備1401執行提供SIMD可變移位與旋轉功 能之指令。對於圖14D中所示之實例,64位元向量元件在旋轉或移位。設備1401再次例示一SIMD移位器之包括一複製階段的部分,該複製階段複製第一元件大小(例如64位元(S2[63:0]))之向量資料欄位,且儲存複數複製向量資料欄位作為一第一元件大小兩倍(例如128位元)之對應經複製的資料欄位1410。選擇器之一個實施例,即1420、1421、1422、1424、1425及1426對應於特定64位元向量元件且可用來選擇16位元(亦即0、16、32或48)之多個中之部分。選擇器階段1440或1444可用來選擇4位元(亦即0、4、8或12)之多個中之部分,且選擇器階段1450或1454可用來選擇1位元(亦即0、1、2或3)之多個中之部分。
當對第一元件大小(亦即64位元,其在本實例中為如此)之向量元件執行SIMD旋轉(或移位)時,對應於任何特定64位元向量元件之多個選擇器,即1420、1421、1422、1424、1425及1426均可對控制邏輯1430起回應而針對該特定64位元向量元件自經複製的資料欄位1410類似地選擇所有部分。舉例而言,當對第一元件大小(在此情況下為64位元)之向量元件執行SIMD旋轉(或移位)時,所有選擇器,即1420、1421、1422、1424、1425及1426均對控制邏輯1430起回應而選擇第三部分。當對一第二元件大小(亦即32位元,其在此實例中並非如此)之向量元件執行SIMD旋轉(或移位)時,對應於任何特定32位元向量元件之多個選擇器,即1420、1421及 1422,或1424、1425及1426均將針對該特定向量元件而自複數經複製的資料欄位不同地選擇至少兩個部分。
對應於任何特定向量元件之多個選擇器,例如1420、1421、1422、1424、1425及1426亦根據個別移位計數及方向針對該特定向量元件自經複製的資料欄位1410類似地選擇所有部分。舉例而言,對於三十二(32)至四十七(47)之右旋(或右移),或對於十七(17)至三十二(32)之左旋(或左移),對應於該特定向量元件之複數選擇器可如圖14D中所示來選擇複數部分。
因此,經由對應於一特定向量元件之複數選擇器,對控制邏輯組件起回應而使用控制操作且在不會過度需要對應於各種不同元件大小之複數向量元件之其他硬體選擇器下自經複製的資料欄位選擇部分,以便支援提供不同元件大小之SIMD可變移位與旋轉功能的指令。
應瞭解,儘管例示設備1401產生64位元之輸出,但該設備可有任何具便利之大小,例如128位元、256位元,等。亦應瞭解,儘管例示設備1401為64位元及32位元向量元件提供SIMD可變移位與旋轉功能,但亦可支援其他大小,例如16位元、8位元或80位元向量元件,等。
圖15例示一方法1501之一個實施例之流程圖,該方法1501提供SIMD可變移位與旋轉功能。方法1501及本文揭示之其他方法係藉由可包含專用硬體或軟體或韌體操作碼之處理方塊來執行,該等操作碼可由通用 機器或由專用機器或由該兩者之組合執行。
在方法1501之處理方塊1510中,複製一第一元件大小之多個向量資料欄位。在處理方塊1520中,複數複製向量資料欄位係經連接並儲存為第一元件大小兩倍之對應複數經複製的資料欄位。在處理方塊1530中,用於對向量元件執行SIMD移位或旋轉操作之元件大小係接收於一控制邏輯中。在處理方塊1540中,判定用於執行SIMD移位或旋轉操作之大小是否與第一元件大小相同,在相同之情況下,處理進行至處理方塊1550,其中經由多個對應於一特定向量元件之選擇器,針對該特定向量元件自複數經複製的資料欄位類似地選擇所有部分。否則,在處理方塊1560中,判定用於執行SIMD移位或旋轉操作之大小是否等於一第二元件大小。若不等,則處理可任擇地進行至檢查處理方塊1570中之其他元件大小。但若相等,則處理進行至處理方塊1580,其中多個對應於任何特定向量元件之選擇器均對控制邏輯起回應而針對該特定向量元件自複數經複製的資料欄位不同地選擇至少兩個部分,該控制邏輯接收用於對複數向量元件執行SIMD旋轉之第二元件大小。
應瞭解,儘管例示方法1501之處理方塊係以特定次序依次執行,但可能時,許多操作可平行執行,或以不同於所示次序之某一次序執行。
圖16例示一方法1601之另一實施例之流程圖,該方法1601提供SIMD可變移位與旋轉功能。在方 法1601之處理方塊1610中,複製第一元件大小之多個向量資料欄位。在處理方塊1620中,複製向量資料欄位係經連接並儲存為第一元件大小兩倍之對應經複製的資料欄位。在處理方塊1630中,用於對複數向量元件執行SIMD移位或旋轉操作之一元件大小指示符係接收於控制邏輯中。在處理方塊1640中,判定用於執行SIMD移位或旋轉操作之大小是否與第一元件大小相同,在相同之情況下,處理進行至處理方塊1650,其中經由多個對應於一特定向量元件之選擇器,針對該特定向量元件、根據個別移位計數及方向自經複製的資料欄位類似地選擇所有部分。否則,在處理方塊1660中,判定用於執行SIMD移位或旋轉操作之大小是否等於一第二元件大小。若不等,則處理可任擇地進行至檢查處理方塊1670中之其他元件大小。但若其等於第二元件大小,則處理進行至處理方塊1680,其中多個對應於任何特定向量元件之選擇器均針對該特定向量元件、根據個別移位計數及方向而自經複製的資料欄位不同地選擇至少兩個部分。
應瞭解,在方法1601中,以及在其他方法(諸如方法1501)中,儘管例示了執行提供SIMD可變移位與旋轉功能之指令,但亦可發生其他步驟或階段,例如一管線400之階段402-414及/或階段418-424中一或多者,以完全有助於或回應於指令來提供SIMD可變移位與旋轉功能。應再次瞭解,儘管例示方法1601之處理方塊係以特定次序依次執行,但可能時,許多操作可平行執行,或 以不同於所示次序之某一次序執行。
本發明之實施例涉及使用控制操作之指令,其中經由對應於一特定向量元件之複數選擇器,對控制邏輯起回應而使用控制操作且在不會過度需要對應於各種不同元件大小之複數向量元件之其他硬體選擇器或其他資料流階段下自經複製及連接之資料欄位選擇資料部分,以有效提供不同元件大小之SIMD可變移位與旋轉功能。
本文中揭示之機構的實施例可以硬體、軟體、韌體或者此等實施方法之組合來實施。本發明之實施例可實施為在可規劃系統上執行之電腦程式或程式碼,可規劃系統包含至少一個處理器、一儲存系統(包括依電性及非依電性記憶體及/或儲存元件)、至少一個輸入裝置及至少一個輸出裝置。
可將程式碼應用於輸入複數指令來執行本文所述之功能且產生輸出資訊。可將輸出資訊以已知方式應用於一或多個輸出裝置。為達成本申請案之目的,處理系統包括具有處理器之任何系統,諸如一數位信號處理器(DSP)、一微控制器、一特殊應用積體電路(ASIC)或一微處理器。
程式碼可以一高程序性或物件導向式程式語言來實施,以便與一處理系統通訊。必要時,程式碼亦可以組合語言或機器語言來實施。事實上,本文所述之機構的範疇不限於任何特定的程式設計語言。在任何情況下,該語言可為編譯語言或解譯語言。
至少一個實施例之一或多個態樣可藉由儲存於機器可讀媒體上之代表性指令來實施,機器可讀媒體表示處理器內的各種邏輯,該等指令在由一機器讀取時使機器製造邏輯來執行本文所述之技術。此等表示(稱為「IP核心」)可儲存於一有形的機器可讀媒體上,且可供應給各種客戶或製造設施以載入至實際上製造該邏輯或處理器的製造機中。
此等機器可讀儲存媒體可包括(不限於)由機器或裝置形成的非暫時性有形物品配置,其包括:儲存媒體,諸如硬碟、任何其他類型之碟片(包括軟碟片、光碟、光碟片唯讀記憶體(CD-ROM)、可重寫光碟片(CD-RW)及磁光碟)、半導體裝置(諸如唯讀記憶體(ROM)、隨機存取記憶體(RAM)(諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM))、可抹除可規劃唯讀記憶體(EPROM)、快閃記憶體、電氣可抹除可規劃唯讀記憶體(EEPROM)、磁性或光學卡),或者適合於儲存電子指令的任何其他類型之媒體。
因此,本發明之實施例亦包括含有指令或含有諸如硬體描述語言(HDL)之設計資料的非暫時性有形機器可讀媒體,其中設計資料定義本文所述之結構、電路、設備、處理器及/或系統特徵。此等實施例亦可被稱為程式產品。
在一些情況下,可使用一指令轉換器將一指令自一來源指令集轉換至一目標指令集。舉例而言,指令 轉換器可將一指令轉譯(例如,使用靜態二進位轉譯、包括動態編譯之動態二進位轉譯)、漸變、仿真或以其他方式轉換成將由核心處理的一或多個其他指令。指令轉換器可以軟體、硬體、韌體或其組合來實施。指令轉換器可位於處理器上、位於處理器外部,或部分位於處理器上而部分位於處理器外部。
因此,揭示用於執行一或多個根據至少一個實施例之指令的技術。儘管某些示範性實施例已描述並展示於隨附圖式中,但應瞭解此等實施例僅說明廣泛發明且不限制廣泛發明,且本發明不限於所示及所述之特定構造及配置,因為一般技術者在研究本揭示案時可想到各種其他修改。在成長快速且進一步進步不易於預見之技術領域(諸如本技術領域)中,所揭示之實施例的配置及細節可易於修改,如藉由在不脫離本揭示案之原理或隨附申請專利範圍之範疇下實現技術進步來促進。
1401:設備
1410:經複製的資料欄位
1420~1422、1424~1426:選擇器
1430:控制邏輯
1440、1444、1450、1454:選擇器階段

Claims (29)

  1. 一種以機器實施的方法,其包含下列步驟:複製一第一元件大小之多個向量資料欄位;儲存該等複製向量資料欄位成該第一元件大小兩倍之對應經複製的資料欄位;在一控制邏輯中接收用於對向量元件執行一SIMD旋轉的一元件大小;以及經由多個對應於一特定向量元件之選擇器,自該等經複製的資料欄位選擇部分,該等多個對應於任何特定向量元件之選擇器回應於接收用於對向量元件執行該SIMD旋轉之該第一元件大小之該控制邏輯,而針對該特定向量元件自該等經複製的資料欄位類似地選擇所有部分,但該等多個對應於任何特定向量元件之選擇器回應於接收用於對向量元件執行該SIMD旋轉之一第二元件大小之該控制邏輯,而針對該特定向量元件自該等經複製的資料欄位不同地選擇至少兩個部分,其中,該第一元件大小不同於該第二元件大小。
  2. 如申請專利範圍第1項之以機器實施的方法,其中所述的所有部分被類似地選擇之方式取決於用於具該第一元件大小之該特定向量元件的旋轉的一對應移位計數。
  3. 如申請專利範圍第2項之以機器實施的方法,其中該第一元件大小為64位元。
  4. 如申請專利範圍第2項之以機器實施的方法,其中回應於接收該第一元件大小之該控制邏輯而針對一特定向 量元件自該等經複製的資料欄位類似地選擇所有部分使得至少兩個中間部分成為複製物。
  5. 如申請專利範圍第4項之以機器實施的方法,其中回應於接收該第一元件大小之該控制邏輯而針對一特定向量元件自該等經複製的資料欄位類似地選擇所有部分使得至少兩個末端部分成為複製物。
  6. 如申請專利範圍第1項之以機器實施的方法,其中所述的至少兩個部分被不同地選擇之方式取決於用於具該第二元件大小之該特定向量元件的旋轉的一對應移位計數。
  7. 如申請專利範圍第6項之以機器實施的方法,其中該第二元件大小為32位元。
  8. 如申請專利範圍第6項之以機器實施的方法,其中回應於接收一第二元件大小之該控制邏輯而針對一特定向量元件自該等經複製的資料欄位不同地選擇至少兩個部分使得至少兩個被不同地選擇的部分成為複製物。
  9. 一種處理器,其包含:一或多個向量暫存器,其各自包含多個資料欄位來儲存向量元件值;一解碼級,其用以解碼一單一指令多重資料(SIMD)旋轉指令,該指令指定:該一或多個向量暫存器之一目的地運算元、該一或多個向量暫存器之一第一運算元、該等向量元件之一大小、該一或多個向量暫存器之一第二運算元;以及 一SIMD移位器,其包含:一複製級,其用以回應於解碼該SIMD旋轉指令,以自該第二運算元複製一第一元件大小之資料欄位,並且儲存該等複製資料欄位成該第一元件大小兩倍之對應經複製的資料欄位;一控制邏輯電路,其用以接收該等向量元件之該大小;以及一選擇器級,其劃分成多個對應於一特定向量元件之選擇器,且耦接至該複製級,該等多個對應於任何特定向量元件之選擇器回應於接收用作該等向量元件大小之該第一元件大小的該控制邏輯電路,而針對該特定向量元件自該等經複製的資料欄位類似地選擇所有部分,但該等多個對應於任何特定向量元件之選擇器回應於接收用作該等向量元件大小之一第二元件大小的該控制邏輯電路,而針對該特定向量元件自該等經複製的資料欄位不同地選擇至少兩個部分,其中,該第一元件大小不同於該第二元件大小。
  10. 如申請專利範圍第9項之處理器,其中所述的所有部分被類似地選擇之方式取決於來自用於具該第一元件大小之該特定向量元件的旋轉的該第一運算元的一對應移位計數。
  11. 如申請專利範圍第9項之處理器,其中所述的至少兩個部分被不同地選擇之方式取決於來自用於具該第二元件大小之該特定向量元件的旋轉的該第一運算元的一對 應移位計數。
  12. 一種單一指令多重資料(SIMD)移位器,其包含:一複製級,其用以複製一第一元件大小之向量資料欄位且用以儲存該等複製向量資料欄位成該第一元件大小兩倍之對應經複製的資料欄位;一控制邏輯電路;以及一選擇器級,其劃分成多個對應於一特定向量元件之選擇器,且耦接至該複製級,當對該第一元件大小之向量元件執行一SIMD旋轉時,該等多個對應於任何特定向量元件之選擇器回應於該控制邏輯電路,而針對該特定向量元件自該等經複製的資料欄位類似地選擇所有部分,但當對一第二元件大小之向量元件執行一SIMD旋轉時,該等多個對應於任何特定向量元件之選擇器回應於該控制邏輯電路,而針對該特定向量元件自該等經複製的資料欄位不同地選擇至少兩個部分,其中,該第一元件大小不同於該第二元件大小。
  13. 如申請專利範圍第12項之SIMD移位器,其中所述的所有部分被類似地選擇之方式取決於用於具該第一元件大小之該特定向量元件的旋轉的一對應移位計數。
  14. 如申請專利範圍第12項之SIMD移位器,其中所述的至少兩個部分被不同地選擇之方式取決於用於具該第二元件大小之該特定向量元件的旋轉的一對應移位計數。
  15. 一種處理系統,其包含:一記憶體;以及 第一多個處理器,該第一多個處理器各自包含:一或多個向量暫存器,其各自包含多個資料欄位來儲存向量元件值;一解碼階段,其解碼一單一指令多重資料(SIMD)旋轉指令,該指令指定:該一或多個向量暫存器之一目的地運算元、該一或多個向量暫存器之一第一運算元、該等向量元件之一大小、該一或多個向量暫存器之一第二運算元;以及一SIMD移位器,其包含:一複製階段,其回應於解碼該SIMD旋轉指令,而自該第二運算元複製一第一元件大小之資料欄位,並且儲存該等複製資料欄位成該第一元件大小兩倍之對應經複製的資料欄位;一控制邏輯,其接收該等向量元件之該大小;以及一選擇器階段,其劃分成多個對應於一特定向量元件之選擇器,且耦接至該複製階段,該等多個對應於任何特定向量元件之選擇器回應於接收用作該等向量元件大小之該第一元件大小的該控制邏輯,而針對該特定向量元件自該等經複製的資料欄位類似地選擇所有部分,但該等多個對應於任何特定向量元件之選擇器回應於接收用作該等向量元件大小之一第二元件大小的該控制邏輯,而針對該特定向量元件自該等經複製的資料欄位不同地選擇至少兩個部分,其中,該第一元件大小不同於該第二元件大小。
  16. 如申請專利範圍第15項之處理系統,其中所述的所有部分被類似地選擇之方式取決於來自用於具該第一元件大小之該特定向量元件的旋轉的該第一運算元的一對應移位計數。
  17. 如申請專利範圍第15項之處理系統,其中所述的至少兩個部分被不同地選擇之方式取決於來自用於具該第二元件大小之該特定向量元件的旋轉的該第一運算元的一對應移位計數。
  18. 一種設備,其包含:一解碼級,其用以解碼一單一指令多重資料(SIMD)指令,該指令指定:各自包含多個資料欄位來儲存向量元件值之一或多個向量暫存器之一目的地運算元、該一或多個向量暫存器之一第一運算元、該等向量元件之一大小、該一或多個向量暫存器之一第二運算元;以及一SIMD移位器,其包含:一複製級,其回應於解碼該SIMD指令,而自該第二運算元複製一第一元件大小之資料欄位,並且儲存該等複製資料欄位成該第一元件大小兩倍之對應經複製的資料欄位;一控制邏輯電路,其用以接收該等向量元件之該大小;以及一選擇器級,其用以劃分成多個對應於一特定向量元件之選擇器,且耦接至該複製級,該等多個對應於任何特定向量元件之選擇器回應於接收用作該等向量元件大小之 該第一元件大小的該控制邏輯電路,而針對該特定向量元件自該等經複製的資料欄位類似地選擇所有部分,但該等多個對應於任何特定向量元件之選擇器回應於接收用作該等向量元件大小之一第二元件大小的該控制邏輯電路,而針對該特定向量元件自該等經複製的資料欄位不同地選擇至少兩個部分,其中,該第一元件大小不同於該第二元件大小。
  19. 如申請專利範圍第18項之設備,其中所述的所有部分被類似地選擇之方式取決於來自用於具該第一元件大小之該特定向量元件的旋轉的該第一運算元的一對應移位計數。
  20. 如申請專利範圍第18項之設備,其中該第一元件大小為64位元。
  21. 如申請專利範圍第18項之設備,其中回應於接收該第一元件大小之該控制邏輯電路而針對一特定向量元件自該等經複製的資料欄位類似地選擇所有部分使得至少兩個中間部分成為複製物。
  22. 如申請專利範圍第18項之設備,其中回應於接收該第一元件大小之該控制邏輯電路而針對一特定向量元件自該等經複製的資料欄位類似地選擇所有部分使得至少兩個末端部分成為複製物。
  23. 如申請專利範圍第18項之設備,其中所述的至少兩個部分被不同地選擇之方式取決於來自用於具該第二元件大小之該特定向量元件的旋轉的該第一運算元的一對應 移位計數。
  24. 如申請專利範圍第18項之設備,其中該SIMD指令為一SIMD旋轉指令。
  25. 如申請專利範圍第24項之設備,其中該第二元件大小為32位元。
  26. 如申請專利範圍第25項之設備,其中回應於接收一第二元件大小之該控制邏輯電路而針對一特定向量元件自該等經複製的資料欄位不同地選擇至少兩個部分使得至少兩個被不同地選擇的部分成為複製物。
  27. 如申請專利範圍第25項之設備,其中回應於接收該第二元件大小之該控制邏輯電路而針對一特定向量元件自該等經複製的資料欄位不同地選擇至少兩個部分使得至少兩個末端部分成為複製物。
  28. 如申請專利範圍第18項之設備,其中該SIMD指令為一SIMD移位指令。
  29. 如申請專利範圍第28項之設備,該SIMD移位器包含:一校正電路,其對空出之位元位置進行補零以便左移及邏輯移位,且對空出之位元位置進行符號填充以便算術右移。
TW101150580A 2011-12-30 2012-12-27 使用控制操作來進行單一指令多重資料(simd)可變移位與旋轉之技術 TWI689866B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
PCT/US2011/068148 WO2013101198A1 (en) 2011-12-30 2011-12-30 Simd variable shift and rotate using control manipulation
WOPCT/US11/68148 2011-12-30

Publications (2)

Publication Number Publication Date
TW201339964A TW201339964A (zh) 2013-10-01
TWI689866B true TWI689866B (zh) 2020-04-01

Family

ID=48698430

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101150580A TWI689866B (zh) 2011-12-30 2012-12-27 使用控制操作來進行單一指令多重資料(simd)可變移位與旋轉之技術

Country Status (5)

Country Link
US (2) US9529591B2 (zh)
EP (1) EP2798454A4 (zh)
CN (1) CN104025033B (zh)
TW (1) TWI689866B (zh)
WO (1) WO2013101198A1 (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9905046B2 (en) * 2014-04-03 2018-02-27 Intel Corporation Mapping multi-rate shading to monolithic programs
US9851970B2 (en) * 2014-12-23 2017-12-26 Intel Corporation Method and apparatus for performing reduction operations on a set of vector elements
US20160179523A1 (en) * 2014-12-23 2016-06-23 Intel Corporation Apparatus and method for vector broadcast and xorand logical instruction
US10296334B2 (en) * 2014-12-27 2019-05-21 Intel Corporation Method and apparatus for performing a vector bit gather
US10001995B2 (en) * 2015-06-02 2018-06-19 Intel Corporation Packed data alignment plus compute instructions, processors, methods, and systems
US10169043B2 (en) * 2015-11-17 2019-01-01 Microsoft Technology Licensing, Llc Efficient emulation of guest architecture instructions
JP6694138B2 (ja) * 2016-07-26 2020-05-13 富士通株式会社 プログラマブルロジックデバイスの制御プログラム、制御方法及び情報処理装置
CN108228647B (zh) * 2016-12-21 2022-05-24 伊姆西Ip控股有限责任公司 用于数据拷贝的方法和设备
GB2553010B (en) * 2017-01-16 2019-03-06 Imagination Tech Ltd Efficient data selection for a processor
US11803377B2 (en) 2017-09-08 2023-10-31 Oracle International Corporation Efficient direct convolution using SIMD instructions
US11294672B2 (en) 2019-08-22 2022-04-05 Apple Inc. Routing circuitry for permutation of single-instruction multiple-data operands
US11256518B2 (en) 2019-10-09 2022-02-22 Apple Inc. Datapath circuitry for math operations using SIMD pipelines
US11126439B2 (en) 2019-11-15 2021-09-21 Apple Inc. SIMD operand permutation with selection from among multiple registers
CN112230995B (zh) * 2020-10-13 2024-04-09 广东省新一代通信与网络创新研究院 一种指令的生成方法、装置以及电子设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200411542A (en) * 2002-09-25 2004-07-01 Matsushita Electric Ind Co Ltd Processor executin SIMD instructions
US20050125638A1 (en) * 2003-12-09 2005-06-09 Arm Limited Data shift operations
TW200719695A (en) * 2005-08-12 2007-05-16 Microsoft Corp SIMD lapped transform-based digital media encoding/decoding
TW200727198A (en) * 2006-02-06 2007-07-16 Via Tech Inc Methods and apparatus for graphics processing
US20090300323A1 (en) * 2005-02-10 2009-12-03 Richard Hessel Vector Processor System
TW201135589A (en) * 2009-12-26 2011-10-16 Intel Corp Rotate instructions that complete execution without reading carry flag

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5379240A (en) * 1993-03-08 1995-01-03 Cyrix Corporation Shifter/rotator with preconditioned data
US6275834B1 (en) * 1994-12-01 2001-08-14 Intel Corporation Apparatus for performing packed shift operations
GB9509983D0 (en) * 1995-05-17 1995-07-12 Sgs Thomson Microelectronics Replication of data
US5896305A (en) * 1996-02-08 1999-04-20 Texas Instruments Incorporated Shifter circuit for an arithmetic logic unit in a microprocessor
US6233642B1 (en) * 1999-01-14 2001-05-15 International Business Machines Corporation Method of wiring a 64-bit rotator to minimize area and maximize performance
US6304956B1 (en) * 1999-03-25 2001-10-16 Rise Technology Company Using two barrel shifters to implement shift, rotate, rotate with carry, and shift double as specified by the X86 architecture
US6243728B1 (en) * 1999-07-12 2001-06-05 Sony Corporation Of Japan Partitioned shift right logic circuit having rounding support
US6643673B1 (en) * 1999-11-30 2003-11-04 Ati International, Srl Method and apparatus for arithmetic shifting
US6675182B1 (en) * 2000-08-25 2004-01-06 International Business Machines Corporation Method and apparatus for performing rotate operations using cascaded multiplexers
GB2411973B (en) 2003-12-09 2006-09-27 Advanced Risc Mach Ltd Constant generation in SMD processing
US20070233767A1 (en) * 2006-03-31 2007-10-04 Jeremy Anderson Rotator/shifter arrangement
US7761694B2 (en) * 2006-06-30 2010-07-20 Intel Corporation Execution unit for performing shuffle and other operations
US8270558B2 (en) * 2007-09-10 2012-09-18 St-Ericsson Sa Electronic device, barrel shifter unit and method of barrel shifting
US20090254736A1 (en) * 2008-04-07 2009-10-08 Arm Limited Data processing system for performing data rearrangement operations
US9747105B2 (en) * 2009-12-17 2017-08-29 Intel Corporation Method and apparatus for performing a shift and exclusive or operation in a single instruction
US20140013082A1 (en) * 2011-12-30 2014-01-09 Intel Corporation Reconfigurable device for repositioning data within a data word

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200411542A (en) * 2002-09-25 2004-07-01 Matsushita Electric Ind Co Ltd Processor executin SIMD instructions
TW200945190A (en) * 2002-09-25 2009-11-01 Panasonic Corp Processor
US20050125638A1 (en) * 2003-12-09 2005-06-09 Arm Limited Data shift operations
US20090300323A1 (en) * 2005-02-10 2009-12-03 Richard Hessel Vector Processor System
TW200719695A (en) * 2005-08-12 2007-05-16 Microsoft Corp SIMD lapped transform-based digital media encoding/decoding
TW200727198A (en) * 2006-02-06 2007-07-16 Via Tech Inc Methods and apparatus for graphics processing
TW201135589A (en) * 2009-12-26 2011-10-16 Intel Corp Rotate instructions that complete execution without reading carry flag

Also Published As

Publication number Publication date
US20150134937A1 (en) 2015-05-14
US20170109163A1 (en) 2017-04-20
EP2798454A4 (en) 2016-08-17
EP2798454A1 (en) 2014-11-05
WO2013101198A1 (en) 2013-07-04
US10296333B2 (en) 2019-05-21
CN104025033A (zh) 2014-09-03
CN104025033B (zh) 2017-11-21
US9529591B2 (en) 2016-12-27
TW201339964A (zh) 2013-10-01

Similar Documents

Publication Publication Date Title
TWI689866B (zh) 使用控制操作來進行單一指令多重資料(simd)可變移位與旋轉之技術
JP6930702B2 (ja) プロセッサ
TWI584192B (zh) 提供向量混合與置換功能的指令與邏輯(二)
TWI537823B (zh) 用以提供向量族群計數功能之方法、設備、指令及邏輯組件
TWI610236B (zh) 用以提供向量壓縮及旋轉功能之指令及邏輯
JP5933011B2 (ja) ストライド機能を有するベクトルロード演算/ストア演算を提供する命令及びロジック
JP5933725B2 (ja) ベクトル散乱演算機能及びベクトル収集演算機能を提供する命令及びロジック
TWI476695B (zh) 提供向量水平比較功能之指令與邏輯
TWI706323B (zh) 用於使用monitor及mwait架構之使用者層級執行緒同步的方法及裝置
JP5930558B2 (ja) ストライド機能及びマスク機能を有するベクトルロード及びベクトルストアを提供する命令及びロジック
TWI610233B (zh) 用於提供向量分組元組交叉比較功能的方法、處理器和處理系統
TWI697788B (zh) 用以提供向量包裝之直方圖功能的方法,裝置,指令及邏輯
US10157063B2 (en) Instruction and logic for optimization level aware branch prediction
TWI729029B (zh) 用於向量位元欄壓縮及擴展的指令及邏輯
JP6231155B2 (ja) ベクトル散乱演算機能及びベクトル収集演算機能を提供する命令及びロジック
JP6222859B2 (ja) ストライド機能及びマスク機能を有するベクトルロード及びベクトルストアを提供する命令及びロジック

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees