[go: up one dir, main page]

TW201723810A - 用於部分縮減操作之指令及邏輯 - Google Patents

用於部分縮減操作之指令及邏輯 Download PDF

Info

Publication number
TW201723810A
TW201723810A TW105134777A TW105134777A TW201723810A TW 201723810 A TW201723810 A TW 201723810A TW 105134777 A TW105134777 A TW 105134777A TW 105134777 A TW105134777 A TW 105134777A TW 201723810 A TW201723810 A TW 201723810A
Authority
TW
Taiwan
Prior art keywords
processor
instruction
instructions
unit
memory
Prior art date
Application number
TW105134777A
Other languages
English (en)
Inventor
威廉M 布朗
艾哈邁德 瓦爾 艾爾穆斯塔法 烏爾德
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 TW201723810A publication Critical patent/TW201723810A/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

在一項實施例中,一處理器包括有:用以擷取指令之一擷取邏輯,該等指令包括有一部分縮減指令;用以解碼該部分縮減指令並對一或多個執行單元提供該已解碼部分縮減指令之一解碼邏輯;以及回應於該已解碼部分縮減指令進行複數N個部分縮減操作以產生包括有N個輸出資料元件之一結果陣列的該一或多個執行單元,其中一輸入陣列包含有N條通道,並且其中該等N個部分縮減操作乃各用來縮減該等N條通道其中一對應通道中所包括之一輸入資料元件集合。其他實施例乃作說明並主張其權利。

Description

用於部分縮減操作之指令及邏輯
本揭露涉及處理邏輯、微處理器及相關聯指令集架構之領域,其藉由處理器或其他處理邏輯執行時,進行邏輯、數學或其他功能操作。
一指令集、或指令集架構(ISA)為電腦架構有關於程式規劃之部分,並且可包括有原生資料類型、指令、暫存器架構、定址模式、記憶體架構、中斷與例外處置、以及外部輸入與輸出(I/O)。此ISA與微架構有所區別,其為實施指令集之處理器的內部設計。具有不同微架構之處理器可共享共用指令集。在一些實例中,此ISA可包括有用於記憶體操作、算術運算、邏輯操作、控制操作等等之指令。
依據本發明之一實施例,係特地提出一種處理器,其包含:用以擷取指令之一擷取邏輯,該等指令包括一部分縮減指令;一解碼邏輯,其用以解碼該部分縮減指令並將經解碼之該部分縮減指令提供至一或多個執行單元;以及該一或多個執行單元,其用以回應於經解碼之該 部分縮減指令而進行複數N個部分縮減操作以產生包括N個輸出資料元件之一結果陣列,其中一輸入陣列包含N條通道,其中該等N個部分縮減操作之各者係用以縮減包括於該等N條通道中的一對應通道中之一組輸入資料元件。
100、600‧‧‧系統
102、200、500、770、780、610、615、1000‧‧‧處理器
104‧‧‧內部快取記憶體
106、145、164、210‧‧‧暫存器檔案
108‧‧‧執行單元
109、143‧‧‧緊縮指令集
110‧‧‧處理器匯流排
112‧‧‧圖形控制器
114‧‧‧加速圖形埠(AGP)互連件
116‧‧‧系統邏輯晶片
118‧‧‧記憶體介面
120、640、732、734、1140‧‧‧記憶體
122‧‧‧專屬集線器介面匯流排
124‧‧‧資料儲存器
126‧‧‧無線收發器
128‧‧‧韌體集線器
130‧‧‧I/O控制器集線器
134‧‧‧網路控制器
140、160‧‧‧資料處理系統
141‧‧‧匯流排
142‧‧‧執行單元
144‧‧‧解碼器
146‧‧‧同步動態隨機存取記憶體(SDRAM)控制
147‧‧‧靜態隨機存取記憶體(SRAM)控制
148‧‧‧叢發快閃記憶體介面
149‧‧‧個人電腦記憶卡國際協會(PCMCIA)/精簡快閃(CF)卡控制
150‧‧‧液晶顯示器(LCD)控制
151‧‧‧直接記憶體存取(DMA)控制器
152‧‧‧替代匯流排主控介面
153‧‧‧I/O匯流排
154‧‧‧I/O橋接器
155‧‧‧通用非同步接收器/傳送器
156‧‧‧通用串列匯流排
157‧‧‧藍牙無線UART
158‧‧‧I/O擴充介面
159‧‧‧處理核心
161‧‧‧SIMD共處理器
162‧‧‧執行單元
163‧‧‧指令集
165‧‧‧解碼器
166‧‧‧主處理器
167‧‧‧快取記憶體
168‧‧‧輸入輸出系統
169‧‧‧無線介面
170‧‧‧處理核心
201‧‧‧按次序前端
202、204、206‧‧‧排程器
203‧‧‧無次序執行引擎
211‧‧‧執行塊
212~224‧‧‧執行單元
226‧‧‧指令預取器
228‧‧‧指令解碼器
230‧‧‧追蹤快取
232‧‧‧微碼ROM
234‧‧‧uop佇列
310‧‧‧緊縮位元組
320‧‧‧緊縮字元
330‧‧‧緊縮雙字元
341‧‧‧緊縮半倍
342‧‧‧緊縮單倍
343‧‧‧緊縮雙倍
344‧‧‧無符號緊縮位元組表示型態
345‧‧‧帶正負號緊縮位元組表示型態
346‧‧‧無符號緊縮字元表示型態
347‧‧‧帶正負號緊縮字元表示型態
348‧‧‧無符號緊縮雙字元表示型態
349‧‧‧帶正負號緊縮雙字元表示型態
360‧‧‧操作碼格式
361、362‧‧‧欄位
363、373‧‧‧MOD欄位
364、365、374、375、385、390‧‧‧來源運算元識別符
366、376、386‧‧‧目的地運算元識別符
370‧‧‧操作碼格式
371、372、378‧‧‧欄位
380‧‧‧操作編碼(操作碼)格式
381‧‧‧條件欄位
382‧‧‧CDP操作碼欄位
383、384、387、388‧‧‧欄位
389‧‧‧an0064
400‧‧‧處理器管線
402‧‧‧擷取階段
404‧‧‧長度解碼階段
406‧‧‧解碼階段
408‧‧‧分配階段
410‧‧‧重新命名階段
412‧‧‧排程階段
414‧‧‧暫存器讀取/記憶體讀取階段
416‧‧‧執行階段
418‧‧‧寫回/記憶體寫入階段
422‧‧‧例外處置階段
424‧‧‧認可階段
430‧‧‧前端單元
432‧‧‧分支預測單元
434‧‧‧指令快取單元
436、1545‧‧‧轉譯旁看緩衝區
438‧‧‧指令擷取單元
440‧‧‧解碼單元
450‧‧‧執行引擎單元
452‧‧‧重新命名/分配器單元
454‧‧‧引退單元
456‧‧‧排程器單元
458‧‧‧實體暫存器檔案單元
460‧‧‧執行叢集
462‧‧‧記憶體存取單元
464‧‧‧記憶體存取單元
470‧‧‧記憶體單元
472‧‧‧資料TLB單元
474‧‧‧資料快取單元
476‧‧‧L2快取單元
490‧‧‧處理器核心
502、1406、1407‧‧‧核心
503‧‧‧快取階層
506、572、574、1525‧‧‧快取
508‧‧‧環體為基之互連單元
510‧‧‧系統代理
512‧‧‧顯示引擎
516‧‧‧直接媒體介面
552‧‧‧記憶體控制單元
560‧‧‧圖形模組
565‧‧‧媒體引擎
570‧‧‧前端
580‧‧‧無次序引擎
582‧‧‧分配模組
584‧‧‧資源排程器
586‧‧‧資源
588‧‧‧重排序緩衝器
590‧‧‧模組
595‧‧‧LLC
599‧‧‧RAM
620‧‧‧圖形記憶體控制器集線器
645、1724‧‧‧顯示器
650‧‧‧ICH
660‧‧‧外部圖形裝置
670‧‧‧週邊裝置
695‧‧‧前側匯流排
700‧‧‧第二系統
714‧‧‧I/O裝置
716‧‧‧第一匯流排
718‧‧‧匯流排橋接器
720‧‧‧第二匯流排
722‧‧‧鍵盤及/或滑鼠
724‧‧‧音訊I/O
727‧‧‧通訊裝置
728‧‧‧儲存單元
730‧‧‧指令/符碼與資料
738‧‧‧高效能圖形電路
739‧‧‧高效能圖形介面
752、754‧‧‧P-P介面
772、782‧‧‧整合式記憶體控制器單元
776、778、786、788、794、798‧‧‧點對點介面電路
790‧‧‧晶片組
796‧‧‧介面
814‧‧‧I/O裝置
815‧‧‧舊有I/O裝置
900‧‧‧SoC
902‧‧‧互連單元
908‧‧‧整合式圖形邏輯
910‧‧‧應用處理器
912‧‧‧系統代理單元
914‧‧‧整合式記憶體控制器單元
916‧‧‧匯流排控制器單元
920‧‧‧媒體處理器
924、1015‧‧‧影像處理器
926‧‧‧音訊處理器
928、1020‧‧‧視訊處理器
930‧‧‧靜態隨機存取記憶體(SRAM)單元
932‧‧‧直接記憶體存取(DMA)單元
940‧‧‧顯示單元
1005‧‧‧CPU
1010‧‧‧GPU
1025‧‧‧USB控制器
1030‧‧‧UART控制器
1035‧‧‧SPI/SDIO控制器
1040‧‧‧顯示裝置
1045‧‧‧記憶體介面控制器
1050‧‧‧MIPI控制器
1055‧‧‧快閃記憶體控制器
1060‧‧‧雙資料率(DDR)控制器
1065‧‧‧安全性引擎
1070‧‧‧I2S/I2C控制器
1110‧‧‧硬體或軟體模型
1120‧‧‧模擬軟體
1130‧‧‧儲存器
1150‧‧‧有線連接
1160‧‧‧無線連接
1205‧‧‧程式
1210‧‧‧仿真邏輯
1215‧‧‧處理器
1302‧‧‧高階語言
1304‧‧‧x86編譯器
1306‧‧‧x86二進位碼
1308‧‧‧替代指令集編譯器
1310‧‧‧替代指令集二進位碼
1312‧‧‧指令轉換器
1314‧‧‧x86指令集核心
1316‧‧‧x86指令集核心
1408‧‧‧L2快取控制
1409‧‧‧匯流排介面單元
1410‧‧‧L2快取
1415‧‧‧圖形處理單元
1420‧‧‧視訊碼
1425‧‧‧液晶顯示器(LCD)視訊介面
1430‧‧‧用戶介面模組(SIM)介面
1435‧‧‧啟動ROM介面
1440‧‧‧同步動態隨機存取記憶體(SDRAM)控制器
1445‧‧‧快閃控制器
1450‧‧‧串列週邊介面(SPI)主控單元
1470‧‧‧藍牙模組
1475‧‧‧高速3G數據機
1480‧‧‧全球定位系統模組
1485‧‧‧無線模組
1490‧‧‧行動產業處理器介面
1495‧‧‧高畫質多媒體介面
1500‧‧‧指令集架構
1510‧‧‧單元
1511‧‧‧中斷控制與配送單元
1512‧‧‧窺探控制單元
1514‧‧‧窺探篩選器
1515‧‧‧計時器
1516‧‧‧AC連接埠
1520‧‧‧匯流排介面單元
1530‧‧‧載入儲存單元
1532‧‧‧指令快取
1535‧‧‧分支預測單元
1536‧‧‧全域歷程
1537‧‧‧目標位址
1538‧‧‧回傳堆疊
1540‧‧‧記憶體系統
1543‧‧‧預取器
1544‧‧‧記憶體管理單元
1550‧‧‧雙指令解碼階段
1556‧‧‧暫存器池
1557‧‧‧分支
1560‧‧‧發出階段
1561‧‧‧指令佇列
1565‧‧‧特定處理實體
1566‧‧‧ALU/乘法單元
1567‧‧‧ALU
1568‧‧‧浮點單元
1569‧‧‧位址
1570‧‧‧寫回階段
1575‧‧‧追蹤單元
1582‧‧‧引退指標器
1600、1605~1680‧‧‧執行管線
1700‧‧‧電子裝置
1715‧‧‧低功率雙倍資料速率(LPDDR)記憶體單元
1722‧‧‧BIOS/韌體/快閃記憶體
1725‧‧‧觸控螢幕
1730‧‧‧觸控板
1735‧‧‧快速晶片組
1737‧‧‧風扇
1738‧‧‧信賴平台模組
1739‧‧‧熱感測器
1740‧‧‧感測器集線器
1741‧‧‧加速計
1742‧‧‧周圍光感測器
1743‧‧‧羅盤
1744‧‧‧陀螺儀
1745‧‧‧近場通訊(NFC)單元
1746‧‧‧鍵盤
1750‧‧‧無線區域網路(WLAN)單元
1752‧‧‧藍牙單元
1754‧‧‧相機
1756‧‧‧無線廣域網路(WWAN)單元
1757‧‧‧SIM卡
1760‧‧‧數位信號處理器
1763‧‧‧揚聲器
1764‧‧‧耳機
1765‧‧‧麥克風
1800‧‧‧簡圖
1810、2050‧‧‧來源暫存器
1820、2060‧‧‧目的地暫存器
1900‧‧‧方法
1910~1950‧‧‧程序塊
2000‧‧‧方塊圖
2010‧‧‧擷取邏輯
2020‧‧‧解碼邏輯
2030‧‧‧排程器/分配器邏輯
2040‧‧‧執行單元
圖1A根據一或多項實施例,為形成有一處理器之一例示性電腦系統的一方塊圖,此處理器可包括有用以執行一指令之執行單元。
圖1B根據一或多項實施例,繪示一資料處理系統。
圖1C根據一或多項實施例,繪示用以進行操作之一資料處理系統之另一實施例。
圖2根據一或多項實施例,為用於一處理器之微架構的一方塊圖,此處理器可包括有用以執行指令之邏輯電路。
圖3A根據一或多項實施例,繪示多媒體暫存器中的各種緊縮資料類型表示型態。
圖3B根據一或多項實施例,繪示可能之暫存器內存型資料儲存格式。
圖3C根據一或多項實施例揭露,繪示多媒體暫存器中之各種帶正負號及無符號緊縮資料類型表示型態。
圖3D根據一或多項實施例,繪示一操作編碼格式之一實施例。
圖3E根據一或多項實施例,繪示具有四十或更多位元之另一可能操作編碼格式。
圖3F根據一或多項實施例,繪示又另一可能之操作編碼格式。
圖4A根據一或多項實施例,為繪示一按次序管線及一暫存器重新命名級、無次序發出/執行管線的一方塊圖。
圖4B根據一或多項實施例,為繪示待於一處理器中所包括之一按次序架構核心及一暫存器重新命名邏輯、無次序發出/執行邏輯。
圖5A根據一或多項實施例,為一處理器的一方塊圖。
圖5B根據一或多項實施例,為一核心之一例示性實作態樣的一方塊圖。
圖6根據一或多項實施例,為一系統的一方塊圖。
圖7根據一或多項實施例,為一第二系統的一方塊圖。
圖8根據一或多項實施例,為一第三系統的一方塊圖。
圖9根據一或多項實施例,為一系統單晶片的一方塊圖。
圖10根據一或多項實施例,繪示含有一中央處理單元及一圖形處理單元之一處理器,其可執行至少一 個指令。
圖11根據一或多項實施例,為繪示IP核心開發的一方塊圖。
圖12根據一或多項實施例,繪示可採何種作法藉由一不同類型之一處理器仿真一第一類型之一指令。
圖13根據一或多項實施例,繪示與使用一軟體指令轉換器將一來源指令集中之二進位指令轉換成一目標指令集中之二進位指令形成對比的一方塊圖。
圖14根據一或多項實施例,為一處理器之一指令集架構的一方塊圖。
圖15根據一或多項實施例,為一處理器之一指令集架構的一更詳細方塊圖。
圖16根據一或多項實施例,為一處理器之一指令集架構用之一執行管線的一方塊圖。
圖17根據一或多項實施例,為用於利用一處理器之一電子裝置的一方塊圖。
圖18為根據一或多項實施例之一實例的一簡圖。
圖19為根據一或多項實施例之一方法的一流程圖。
圖20為根據一或多項實施例之一例示性操作的一方塊圖。
以下說明描述待由一處理器、虛擬處理器、 封裝體、電腦系統、或其他處理設備進行之部分縮減操作用之一指令與處理邏輯。在以下說明中,諸如處理邏輯、處理器類型、微架構條件、事件、啟用機制及類似者等許多特定細節乃為了能夠透徹理解本揭露之實施例而提出。然而,所屬技術領域中具有通常知識者將了解的是,不用此等特定細節也可實踐此等實施例。另外,一些眾所周知的結構、電路及類似者並未詳細展示,以免不必要地混淆本揭露之實施例。
「縮減操作」一詞於本文中使用時,意指為縮減一多資料元件輸入陣列以產生單一輸出值之一操作。舉例而言,基於加法之一縮減操作可將此等資料元件全部加入此輸入陣列以產生單一總和值。然而,在一些情節中,跨一整體輸入陣列進行一縮減操作可能導致低效率及/或效能。舉例而言,用以進行線性代數或分子模擬之程式可涉及具有小跳脫計數之巢狀迴圈。
在各項實施例中,可提供一指令集架構(ISA)之指令以進行部分縮減操作。可在一輸入陣列中所包括之資料元件子集中進行此等部分縮減操作。此輸入陣列之此等子集在本文中可稱為「通道」。各通道可包括有等量的資料元件。
「部分縮減操作」於本文中使用時,意指為單一通道中所包括用以產生單一輸出值之此等資料元件之一縮減型態。舉例而言,對於包括有N條通道之一輸入陣列,可在各通道中進行一單獨部分縮減操作。因此,在這 項實例中,這N個部分縮減操作之集合(即每條通道一個部分縮減操作)將會產生N個輸出值。「部分縮減指令」一詞於本文中使用時,意指為在一輸入陣列中所包括之多條通道之各通道中進行一單獨部分縮減操作。在一些情節中,部分縮減指令可用於平行進行多個計算。因此,在一些實施例中,部分縮減指令可縮減完成一總體計算所需的時間。根據一或多項實施例,下文參照圖18至20說明部分縮減指令之各項態樣。
雖然以下實施例是參照一處理器作說明,其他實施例仍適用於其他類型之積體電路及邏輯裝置。本揭露之實施例之類似技巧及教示可應用於其他類型之電路或半導體裝置,其可受恵於管線產出量更高及效能改善。本揭露之實施例之教示適用於進行資料調處之任何處理器或機器。然而,此等實施例不受限於進行512位元、256位元、128位元、64位元、32位元或16位元資料操作之處理器或機器,而是可應用於內可進行資料調處或管理之任何處理器及機器。另外,以下說明提供實例,而且附圖就例示目的展示各種實例。然而,這些實例不應視為限制概念,因為其用意僅在於提供本揭露之實施例的實例,而不是要徹底列出本揭露之實施例之所有可能實作態樣。
雖然下文的實例是以執行單元與邏輯電路為背景來說明指令處置與配送,本揭露之其他實施例仍可藉由一機器可讀、有形媒體上儲存之資料或指令來完成,其在由一機器執行時,令此機器進行與本揭露之至少一項 實施例一致的功能。在一項實施例中,與本揭露之實施例相關聯之功能乃具體實現為機器可執行指令。此等指令可用於令可利用指令進行程式規劃之一通用或特殊用途處理器進行本揭露之步驟。可提供本揭露之實施例作為電腦程式產品或軟體,其可包括上有儲存指令之一機器或電腦可讀媒體,此等指令可用於程式規劃一電腦(或其他電子裝置)以根據本揭露之實施例進行一或多個操作。再者,本揭露之實施例之步驟可能藉由含有用於進行此等步驟用之固定功能邏輯之特定硬體組件來進行,或藉由已程式規劃電腦組件或固定功能硬體組件之任何組合來進行。
進行本揭露之實施例之邏輯在進行程式規劃時所用的指令可儲存於系統中之一記憶體內,諸如DRAM、快取記憶體、或其他儲存器。再者,此等指令可經由一網路或藉由其他電腦可讀媒體來配送。因此,一機器可讀媒體可包括有以一機器(例如一電腦)可讀之一形式用於儲存或傳送資訊之任何機制,但不限於軟式磁片、光碟、光碟唯讀記憶體(CD-ROM)、以及磁光碟、唯讀記憶體(ROM)、隨機存取記憶體(RAM)、可抹除可規劃唯讀記憶體(EPROM)、電氣可抹除可規劃唯讀記憶體(EEPROM)、磁卡或光卡、快閃記憶體、或一有形、機器可讀儲存器,其乃用在經由電氣、光學、聲學或其他傳播形式之信號(例如載波、紅外線信號、數位信號等)透過網際網路傳輸資訊時。因此,此電腦可讀媒體可包括有適用於以一機器(例如一電腦)可讀之一形式儲存或傳送電子指 令或資訊之任何類型的有形機器可讀媒體。
一設計從建立、模擬到製作,可經歷各種階段。代表一設計之資料可依照若干方式代表此設計。首先,如模擬可能有用,可使用一硬體描述語言或另一功能描述語言來代表此硬體。另外,可在設計過程的一些階段產生具有邏輯及/或電晶體閘之一電路級模型。再者,於一些階段,設計可達到代表此硬體模型中各種裝置實體置放之一資料層級。在使用一些半導體製作技巧的狀況中,代表此硬體模型之資料可以是就用於生產積體電路之遮罩,指定不同遮罩層上有或無各種特徵的資料。在此設計之任何表示型態中,可在一任何形式之機器可讀媒體中儲存此資料。諸如一碟片之一記憶體或一磁性或光學儲存器可以是用以儲存經由光學波或電波傳送之資訊的機器可讀媒體,此波已經過調變或按其他方式產生以傳送此資訊。在傳送指示或攜載符碼或設計之一電氣載波時,就進行此電氣信號之複製、緩衝或再傳輸而言,可施作一新副本。因此,一通訊提供者或一網路提供者可在一有形、機器可讀媒體上至少暫時儲存一文章,諸如編碼成一載波之資訊,具體實現本揭露之實施例之技巧。
在現代的處理器中,若干不同執行單元可用於處理並執行各種符碼及指令。一些指令可更快速完成,而其他則可能需要若干時脈週期才能完成。指令產出量愈快,處理器總體效能便愈好。因此,儘可能快速執行之指令如有許多,將會有助益。然而,某些指令可能複雜度較 高,並且所需的執行時間與處理器資源也更多,諸如浮點指令、載入/儲存操作、資料移動等。
由於網際網路、文字及多媒體應用中使用的電腦系統更多,因此已隨著時間介紹另外的處理器支援。在一項實施例中,一指令集可與一或多個電腦架構相關聯,包括有資料類型、指令、暫存器架構、定址模式、記憶體架構、中斷與例外處置、以及外部輸入與輸出(I/O)。
在一項實施例中,此指令集架構(ISA)可藉由一或多個微架構來實施,其可包括有用於實施一或多個指令集之處理器邏輯與電路。因此,具有不同微架構之處理器可共享一共用指令集之至少一部分。舉例而言,Intel® Pentium 4處理器、Intel® CoreTM處理器、以及出自Advanced Micro Devices,Inc.of Sunnyvale CA之處理器實施幾乎等同版本之x86指令集(有些擴充已新增有更新的版本),但具有不同的內部設計。類似的是,諸如ARM Holdings,Ltd.、MIPS、或其被授權人或採用者等其他處理器開發公司所設計之處理器可共享一共用指令集之至少一部分,但可包括有不同的處理器設計。舉例而言,ISA之相同暫存器架構可使用新的或眾所周知的技巧按不同的微架構以不同的方式來實施,包括有專屬實體暫存器、使用一暫存器重新命名機制(例如使用暫存器別名表(RAT))之一或多個動態分配型實體暫存器、一重排序緩衝器(ROB)以及一引退暫存器檔案。在一項實施例中,暫存器可包括有一或多個暫存器、暫存器架構、暫存器檔案、 或其他暫存器集,其可或可不由一軟體程式設計師來定址。
一指令可包括有一或多種指令格式。在一項實施例中,一指令格式可指出各種欄位(位元數、位元之位置等),另外還用以指定待進行之操作、以及將於其上進行此操作之運算元。於再一實施例中,一些指令格式可藉由指令模板來進一步定義(或子格式)。舉例而言,可將一給定指令格式之指令模板定義成具有此指令格式之欄位之不同子集、及/或定義成具有按不同方式解譯之一給定欄位。在一項實施例中,一指令可使用一指令格式來表達(而且如經定義,可在此指令格式之指令模板其中一給定者中表達),並且指定或指出此操作、以及其上將運算此操作之運算元。
科學、金融、自動向量化一般目的、RMS(辨識、挖掘及分析)、以及視覺化與多媒體應用(例如2D/3D圖形、影像處理、視訊壓縮/解壓縮、語音辨識演算法及音訊調處)可能需要對大量資料項進行相同的操作。在一項實施例中,單一指令多重資料(SIMD)意指為令一處理器對多個資料元件進行一操作之一指令類型。SIMD技術可在處理器中使用,其可將一暫存器中之位元以邏輯方式區分成若干固定尺寸或可變尺寸之資料元件,其各代表一單獨值。舉例而言,在一項實施例中,可將一64位元暫存器中之位元組織為含有四個單獨16位元資料元件之一來源運算元,各16位元資料元件代表一單獨16位元值。這種資料類型可稱為「緊縮」資料類型或「向量」資料類型,並且 此資料類型之運算元可稱為緊縮資料運算元或向量運算元。在一項實施例中,一緊縮資料項或向量可以是儲存於單一暫存器內之一串緊縮資料元件,而一緊縮資料運算元或一向量運算元可以是一SIMD指令(或「緊縮資料指令」或一「向量指令」)之一來源或目的地運算元。在一項實施例中,一SIMD指定待於兩個來源向量運算元上進行之單一向量操作,用來產生相同或不同尺寸之一目的地向量運算元(亦稱為一結果向量運算元),其中資料元件數量相等或不等,且資料元件順序相同或不同。
SIMD技術乃例如由具有包括x86、MMXTM、串流SIMD擴充(SSE)、SSE2、SSE3、SSE4.1與SSE4.2指令在內之一指令集的Intel® CoreTM處理器、諸如ARM Cortex®處理器系列等具有包括向量浮點(VFP)及/或NEON指令在內之一指令集的ARM處理器、以及諸如中國科學院計算技術研究所(ICT)開發之龍芯處理器系列等MIPS處理器所運用之技術已能夠顯著改善應用效能(CoreTM與MMXTM是Intel Corporation of Santa Clara,Calif.的註冊商標或商標)。
在一項實施例中,目的地與來源暫存器/資料可以是用以代表對應資料或操作之來源與目的地的類名。在一些實施例中,其可藉由暫存器、記憶體、或其他與所繪具有其他不同名稱或功能之儲存區來實施。舉例而言,在一項實施例中,「DEST1」可以是一暫時儲存暫存器或其他儲存區,而「SRC1」與「SRC2」可以是一第一與第 二來源儲存暫存器或其他儲存區等等。在其他實施例中,SRC與DEST儲存區其中二或更多者可對應於相同儲存區內之不同資料儲存元件(例如SIMD暫存器)。在一項實施例中,此等來源暫存器其中一者亦可藉由例如將第一與第二來源資料上進行之一操作的結果寫回到這兩個來源暫存器中當作一目的地暫存器之一者而作為一目的地暫存器。
圖1A根據本揭露之實施例,為形成有一處理器之一例示性電腦系統的一方塊圖,此處理器可包括有用以執行一指令之執行單元。根據本揭露,例如在本文所述之實施例中,系統100可包括有諸如一處理器102之一組件,其運用包括有邏輯之執行單元以進行用於處理資料之演算法。系統100可代表基於可得自Intel Corporation of Santa Clara,California之PENTIUMTM III、PENTIUMTM 4、XeonTM、ItaniumTM、XScaleTM及/或StrongARMTM微處理器的處理系統,但也可使用其他系統(包括具有其他微處理器、工程工作站、機上盒及類似者的PC)。在一項實施例中,樣本系統100可執行可得自Microsoft Corporation of Redmond,Washington之WINDOWStm作業系統之一版本,但也可使用其他作業系統(例如UNIX與Linux)、嵌入式軟體、及/或圖形使用者介面。因此,本揭露之實施例並不受限於硬體電路系統與軟體之任何特定組合。
實施例並不受限於電腦系統。本揭露之實施例可用在諸如掌上型裝置與嵌入式應用等其他裝置中。掌 上型裝置之一些實例包括有蜂巢式手機、網際網路協定裝置、數位相機、個人數位助理器(PDA)、以及掌上型PC。嵌入式應用可包括有一微型控制器、一數位信號處理器(DSP)、系統單晶片、網路電腦(NetPC)、機上盒、網路集線器、廣域網路(WAN)交換器、或可根據至少一項實施例執行一或多種指令之任何其他系統。
電腦系統100可包括有一處理器102,其可包括有一或多個執行單元108,用來進行用以根據本揭露之一項實施例執行至少一種指令之一演算法。一項實施例可在單一處理器桌上型或伺服器系統的背景下作說明,但其他實施例可包括於一多處理器系統中。系統100可以是一「集線器」系統架構之一實例。系統100可包括有用於處理資料信號之一處理器102。處理器102舉例而言,可包括有一複雜指令集電腦(CISC)微處理器、一精簡指令集運算(RISC)微處理器、一超長指令字元(VLIW)微處理器、實施一指令集組合之一處理器、或任何其他處理器裝置,例如一數位信號處理器。在一項實施例中,處理器102可耦合至一處理器匯流排110,其可在處理器102與系統100中其他組件間傳送資料信號。系統100之元件可進行熟悉所屬領域者眾所周知的習知功能。
在一項實施例中,處理器102可包括有第1階(L1)內部快取記憶體104。取決於架構,處理器102可具有單一內部快取或多階內部快取。在另一實施例中,此快取記憶體可駐留於處理器102外部。其他實施例亦可包括有 內部與外部兩種快取之一組合,端視特定實作態樣與需要而定。暫存器檔案106可在包括有整數暫存器、浮點暫存器、狀態暫存器、以及指令指標暫存器在內的各種暫存器中儲存不同類型的資料。
執行單元108包括有用以進行整數與浮點操作之邏輯,亦駐留於處理器102中。處理器102亦可包括有一微碼(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可提供一高頻寬記憶體路徑118連至記憶體120,用於指令與資料儲存,並且用於圖形命令、資料與紋理之儲存。MCH 116可引導系統100中處理器102、記憶體120與其他組件間的資料信號,並且使此等資料信號在處理器匯流排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匯流排153用於與各種I/O裝置連通之一I/O橋接器154。此I/O裝置可包括有,但不限於舉例而言,通用非同步接收器/傳送器(UART)155、通用串列匯流排(USB)156、藍牙無線UART 157以及I/O擴充介面158。
資料處理系統140之一項實施例提供行動、網路及/或無線通訊以及一處理核心159,其可進行包括有一文字串比較操作在內之SIMD操作。處理核心159可程式規劃有各種音訊、視訊、成像及通訊演算法,包括有諸如 一沃爾什哈達馬德轉換、一快速傅立葉轉換(FFT)、一離散餘弦轉換(DCT)、及其各別逆轉換等離散轉換;諸如色彩空間轉換、視訊編碼移動估計或視訊解碼移動補償等壓縮/解壓縮技巧;以及諸如脈碼調變(PCM)等調變/解調變(MODEM)功能。
圖1C根據本揭露之實施例,繪示用以進行操作之一資料處理系統之另一實施例。在一項實施例中,資料處理系統160可包括有一主處理器166、一SIMD共處理器161、一快取記憶體167,以及一輸入/輸出系統168。輸入/輸出系統168可任選地耦合至一無線介面169。SIMD共處理器161可根據一項實施例執行包括有指令之操作。在一項實施例中,處理核心170可適用於依照一或多種程序技術進行製造,並且藉由在一機器可讀媒體上予以充分詳細表示,可適用於促進製造包括有處理核心170之資料處理系統160的全部或部分。
在一項實施例中,SIMD共處理器161包含有一執行單元162及一暫存器檔案集合164。主處理器165之一項實施例包含有一解碼器165,用來辨識指令集163之指令,其包括有根據一項實施例由執行單元162執行之指令。在其他實施例中,SIMD共處理器161亦包含有解碼器165之至少部分,用來解碼指令集163之指令。處理核心170亦可包括有另外的電路系統(圖未示),若要瞭解本揭露之實施例,其並非必要。
主處理器166在操作時,執行一資料處理指 令流,其控制一種一般類型之資料處理操作,包括有與快取記憶體167、及輸入/輸出系統168之互動。SIMD共處理器指令可嵌入此資料處理指令流。主處理器166之解碼器165將這些SIMD共處理器指令辨識為應該由一附接SIMD共處理器161所執行之一類型。因此,主處理器166發出共處理器匯流排166上之這些SIMD共處理器指令(或代表SIMD共處理器指令之控制信號)。這些指令出自共處理器匯流排166,可由任何附接SIMD共處理器所接收。在這種狀況中,SIMD共處理器161可接受並執行任何所收到以其為目標而發出的SIMD共處理器指令。
資料可經由無線介面169收到,以供藉由SIMD共處理器指令處理之用。就一項實例而言,語音通訊之接收形式可以是一數位信號,其可藉由SIMD共處理器指令處理,用來再生代表此等語音通訊之數位音訊樣本。就另一實例而言,已壓縮音訊及/或視訊之接收形式可以是一數位位元串流,其可藉由SIMD共處理器指令處理,用來再生數位音訊樣本及/或動作視訊框。在處理核心170之一項實施例中,主處理器166與一SIMD共處理器161可整合成單一處理核心170,其包含有一執行單元162、一暫存器檔案集合164、以及一解碼器165,用來辨識指令集163之指令,包括有根據一實施例之指令。
圖2根據本揭露之實施例,為用於一處理器200之微架構的一方塊圖,此處理器可包括有用以執行指令之邏輯電路。在一些實施例中,可根據一項實施例實施 一指令以對具有位元組、字元、雙字、四字等之尺寸之資料元件、以及諸如單與雙精確度整數及浮點資料型式等資料型式進行操作。在一項實施例中,按次序前端201可實施處理器200可擷取待執行指令之一部分,並且準備稍後要在處理器管線中使用之指令。前端201可包括有數個單元。在一項實施例中,指令預取器226從記憶體擷取指令,並將此等指令饋送至一指令解碼器228,其進而解碼或解譯此等指令。舉例而言,在一項實施例中,此解碼器將一所接收指令解碼成此機器可執行之一或多個操作,稱為「微型指令」或「微型操作」(亦稱為微型op或uop)。在其他實施例中,此解碼器將此指令剖析成一操作碼及對應之資料與控制欄位,其可由微架構用於根據一實施例進行操作。在一項實施例中,追蹤快取230可將已解碼uop組譯成uop佇列234中供執行用之程式命令序列或存取記錄。當追蹤快取230遭遇一複數指令時,微碼ROM 232提供完成此操作所需之uop。
有些指令可轉換成單一微型op,而其他指令則需要數個微型op才能完成全操作。在一項實施例中,若需要超過四個微型op才能完成一指令,解碼器228可存取微碼ROM 232以執行此指令。在一項實施例中,可將一指令解碼成用於在指令解碼器228處理之少量微型op。在另一實施例中,如需少量微型op才能完成此操作,則可在微碼ROM 232內儲存一指令。追蹤快取230意指為用以判定一正確微指令指標之一進入點可規劃邏輯陣列(PLA),用 於讀取微碼序列以根據一項實施例完成出自微碼ROM 232之一或多個指令。在微碼ROM 232對於一指令完成定序微型op之後,此機器之前端201可繼續從追蹤快取230擷取微型op。
無次序執行引擎203可準備用於執行之指令。此無次序執行邏輯具有若干緩衝器,用來使指令流動時順暢並且重排序,以最佳化其在管線行進的效能,並且進入排程以供執行之用。分配器邏輯分配為執行各uop所需之機器緩衝器與資源。此暫存器重新命名邏輯重新命名一暫存器檔案中登入項上之邏輯暫存器。此分配器亦分配兩個uop佇列其中一者中各uop之一登入項,這兩個佇列一者用於記憶體操作,而一者用於非記憶體操作,乃位在指令排程器前:記憶體排程器、快速排程器202、慢速/通用浮點排程器204、以及簡易浮點排程器206。uop排程器202、204、206基於其相依輸入暫存器運算元來源之備妥狀態、以及此等uop完成其操作所需執行來源之可用性,判定一uop何時已就緒可執行。一項實施例之快速排程器202可在主時脈週期之各半進行排程,而其他排程器則僅可每個主處理器時脈週期進行一次排程。此等排程器對調度埠進行仲裁以排程用於執行之uop。
暫存器檔案208、210可布置於排程器202、204、206與執行塊211中的執行單元212、214、216、218、220、222、224之間。各暫存器檔案208、210分別進行整數及浮點操作。各暫存器檔案208、210可包括有一旁通網 路,其可僅將已完成但尚未寫入此暫存器檔案之結果旁通或轉發至新相依uop。整數暫存器檔案208及浮點暫存器檔案210可彼此傳送資料。在一項實施例中,可將整數暫存器檔案208分割成兩個單獨暫存器檔案,一個暫存器檔案用於資料低階之三十二個位元,而一第二暫存器檔案用於資料高階之三十二個位元。浮點暫存器檔案210可包括有128位元寬之登入項,因為浮點指令一般具有寬度為64至128位元之運算元。
執行塊211可含有執行單元212、214、216、218、220、222、224。執行單元212、214、216、218、220、222、224可執行此等指令。執行塊211可包括有暫存器檔案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來執行。在一項實施例中,整數ALU 216、218、220可對64位元資料運算元執行整數運算。在其他實施例中,ALU 216、218、220可實施成用以支援各種資料位元尺寸,包括有十六、三十二、128、256等。類似的是,浮點單元222、224可實施成用以支援具有各種寬度位元的一系列運算元。在一項實施例中,浮點單元222、224可搭配SIMD與多媒體指令,對128位元寬緊縮資料運算元進行操作。
在一項實施例中,uop排程器202、204、206在上代載入完成執行前,先調度相依操作。由於處理器200中可臆測排程並執行uop,處理器200亦可包括有用以處置記憶體遺漏之邏輯。資料快取中若有一資料載入遺漏,則管線中可以有進行中之相依操作,其使得排程器留有暫時不正確資料。一重播機制追蹤並且再執行使用不正確資料之指令。只有相依操作才可能需要重播,獨立操作則可容許完成。一處理器之一項實施例之排程器及重播機制的設計旨在補捉用於文字串比較操作之指令序列。
「暫存器」一詞可意指為板面處理器儲存位置,其可當作指令之部分用於識別運算元。換句話說,暫存器可以是在處理器外可使用之暫存器(就程式設計師的觀點來看)。然而,在一些實施例中,暫存器可能不受限於一特定類型之電路。反而,一暫存器可儲存資料、提供資 料、以及進行本文中所述之功能。本文中所述之暫存器可使用任意數量的不同技巧藉由一處理器內之電路系統來實施,例如專屬實體暫存器、使用暫存器重新命名之動態分配實體暫存器、專屬與動態分配實體暫存器之組合等。在一項實作態樣中,整數暫存器儲存32位元整數資料。一項實施例之一暫存器檔案亦含有用於緊縮資料之八個多媒體SIMD暫存器。就下文之論述,此等暫存器據瞭解,可以是設計旨在保持緊縮資料之資料暫存器,例如以出自Intel Corporation of Santa Clara,California之MMX技術實現之微處理器中之64位元寬MMXtm暫存器(在一些例子中,亦稱為「mm」暫存器)。這些MMX暫存器可呈整數與浮點兩種形式,可配合附隨SIMD與SSE指令之緊縮資料元件運作。類似的是,與SSE2、SSE3、SSE4、或以上(泛稱為「SSEx」)技術有關之128位元寬XMM暫存器可保持此類緊縮資料運算元。在一項實施例中,於儲存緊縮資料及整數資料時,此等暫存器不需要在這兩種資料類型間作區別。在一項實施例中,相同的暫存器檔案或不同的暫存器檔案中可含有整數與浮點。再者,在一項實施例中,不同的暫存器或相同的暫存器中可儲存浮點與整數資料。
在下圖的實例中,可說明若干資料運算元。圖3A根據本揭露之實施例,繪示多媒體暫存器中的各種緊縮資料類型表示型態。圖3A就一緊縮位元組310、一緊縮字元320、以及128位元寬運算元用之一緊縮雙字元(dword)330繪示資料類型。這項實例之緊縮位元組格式 310可以是128位元長,並且含有十六個緊縮位元組資料元件。一位元組舉例而言,可定義為八個資料位元。各位元組資料元件之資訊可儲存於位元組0之位元7至位元0、位元組1之位元15至位元8、位元組2之位元23至位元16、以及最後是位元組15之位元120至位元127中。因此,所有可用位元都可在此暫存器中用到。這種儲存布置結構提升處理器之儲存效率。同樣地,存取的若是十六個資料元件,現可平行對十六個資料元件進行一個操作。
一般而言,一資料元件可包括有一件個別資料,其乃與相同長度之其他資料元件儲存於單一暫存器或記憶體位置中。在與SSEx技術有關之緊縮資料序列中,一XMM暫存器中所儲存資料元件之數量可以是128個位元除以一個別資料元件之位元長度。類似的是,在與MMX及SSE技術有關之緊縮資料序列中,一MMX暫存器中所儲存資料元件之數量可以是64個位元除以一個別資料元件之位元長度。雖然圖3A中所示之資料類型可以是128個位元長,本揭露之實施例亦可配合64位元寬或其他尺寸之運算元進行操作。這項實例之緊縮字元格式320可以是128位元長,並且含有八個緊縮字元資料元件。各緊縮字元含有十六個資訊位元。圖3A之緊縮雙字元格式330可以是128位元長,並且含有四個緊縮雙字元資料元件。各緊縮雙字元資料元件含有三十二個資訊位元。一緊縮四字元可以是128位元長,並且含有兩個緊縮四字元資料元件。
圖3B根據本揭露之實施例,繪示可能之暫存 器內存型資料儲存格式。各緊縮資料可包括有超過一個獨立資料元件。所示為三種緊縮資料格式:緊縮半倍341、緊縮單倍342、以及緊縮雙倍343。緊縮半倍341、緊縮單倍342、以及緊縮雙倍343之一項實施例含有固定點資料元件。對於另一實施例,緊縮半倍341、緊縮單倍342、以及緊縮雙倍343其中一或多者可含有浮點資料元件。緊縮半倍341之一項實施例可以是128位元長,其含有八個16位元資料元件。緊縮單倍342之一項實施例可以是128位元長,其含有四個32位元資料元件。緊縮雙倍343之一項實施例可以是128位元長,其含有兩個64位元資料元件。將了解的是,此類緊縮資料格式可進一步擴充至其他暫存器長度,舉例而言,可擴充至96個位元、160個位元、192個位元、224個位元、256個位元或更多位元。
圖3C根據本揭露之實施例,繪示多媒體暫存器中之各種帶正負號及無符號緊縮資料類型表示型態。無符號緊縮位元組表示型態344繪示一無符號緊縮位元組在一SIMD暫存器中之儲存。各位元組資料元件之資訊可儲存於位元組0之位元7至位元0、位元組1之位元15至位元8、位元組2之位元23至位元16、以及最後是位元組15之位元120至位元127中。因此,所有可用位元都可在此暫存器中用到。這種儲存布置結構可提升處理器之儲存效率。同樣地,存取的若是十六個資料元件,現可採用一平行方式對十六個資料元件進行一個操作。帶正負號緊縮位元組表示型態345繪示一帶正負號緊縮位元組之儲存。請注意, 每個位元組資料元件之第八個位元都可以是正負號指示元。無符號緊縮字元表示型態346繪示字元七至字元零可採何種方式儲存於一SIMD暫存器中。帶正負號緊縮字元表示型態347可類似於無符號緊縮字元暫存器內存型表示型態346。請注意,每個字元資料元件之第十六個位元都可以是正負號指示元。無符號緊縮雙字元表示型態348展示如何儲存雙字元資料元件。帶正負號緊縮雙字元表示型態349可類似於無符號緊縮雙字元暫存器內存型表示型態348。請注意,必要的正負號位元可以是各雙字元資料元件之第三十二個位元。
圖3D繪示一操作編碼之一實施例(操作碼)。再者,格式360可包括有暫存器/記憶體運算元定址模式,其與可透過intel.com/design/litcentr之全球資訊網(www)得自Intel Corporation,Santa Clara,CA之「IA-32 Intel Architecture Software Developer’s Manual Volume 2:Instruction Set Reference」中所述之一操作碼格式類型相對應。在一項實施例中,及指令可藉由欄位361與362其中一或多者來編碼。每指令可識別的運算元位置多達兩個,包括有多達兩個來源運算元識別符364與365。在一項實施例中,目的地運算元識別符366可與來源運算元識別符364相同,而在其他實施例中兩者可以不同。在另一實施例中,目的地運算元識別符366可與來源運算元識別符365相同,而在其他實施例中兩者可以不同。在一項實施例中,來源運算元識別符364與365所識別 之來源運算元其中一者可由文字串比較操作之結果所覆寫,而在其他實施例中,識別符364對應於一來源暫存器元素,且識別符365對應於一目的地暫存器元素。在一項實施例中,運算元識別符364與365可識別32位元或64位元來源與目的地運算元。
圖3E根據本揭露之實施例,繪示具有四十或更多位元之另一可能操作編碼(opcode)格式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且藉由任選量表-索引-基礎(scale-index-base)與位移位元組來部分指定暫存器對暫 存器、記憶體對暫存器、暫存器依記憶體、暫存器依暫存器、暫存器依直接、暫存器對記憶體定址。
圖3F根據本揭露之實施例,繪示又另一可能之操作編碼(操作碼)格式。64位元單一指令多重資料(SIMD)算術運算可透過一共處理器資料處理(CDP)指令來執行。操作編碼(操作碼)格式380繪示此一CDP指令,具有CDP操作碼欄位382 an0064 389。這類型之CDP指令就另一實施例而言,可藉由欄位383、384、387及388其中一或多者來編碼。每指令可識別之運算元位置多達三個,包括有多達兩個來源運算元識別符385與390、以及一個目的地運算元識別符386。此共處理器之一項實施例可對八、十六、三十二及64位元值進行操作。在一項實施例中,可對整數資料元件執行一指令。在一些實施例中,可使用條件欄位381條件式執行一指令。對於一些實施例,可藉由欄位383來編碼來源資料尺寸。在一些實施例中,零(Z)、負(N)、進位(C)及溢位(V)偵檢可在SIMD欄位上完成。對於一些指令,飽和之類型可藉由欄位384來編碼。
圖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可耦合至一指令轉譯旁看緩衝區(TLB)436。TLB 436可耦合至一指令擷取單元438,其乃耦合至一解碼單元440。解碼單元440可解碼指令,並且產生作為一輸出之一或多個微操作、微碼進入點、微指令、其他指令、或其他控制信號, 其可解碼自、或其按其他方式反映、或可推導自原始指令。此解碼器可使用各種不同機制來實施。適合的機制其實例包括有,但不限於查詢表、硬體實作態樣、可規劃邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。在一項實施例中,指令快取單元434可進一步耦合至記憶體單元470中之一第2階(L2)快取單元476。解碼單元440可耦合至執行引擎單元450中之一重新命名/分配器單元452。
執行引擎單元450可包括有耦合至引退單元454之重新命名/分配器單元452、以及一或多個排程器單元456之一集合。排程器單元456代表任意數量的不同排程器,包括有保留站、中央指令窗等。排程器單元456可耦合至實體暫存器檔案單元458。各實體暫存器檔案單元458代表一或多個實體暫存器檔案,不同的實體暫存器檔案儲存一或多種不同資料類型,例如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點等、狀態(例如一指令指標,其為下一個待執行指令之位址)等。實體暫存器檔案單元458可由引退單元154重疊以繪示可實施暫存器重新命名與無次序執行之各種方式(例如;使用一或多個重排序緩衝器與一或多個引退暫存器檔案、使用一或多個未來檔案、一或多個歷程緩衝器、及一或多個引退暫存器檔案;使用暫存器映射與一暫存器池;等)。一般而言,架構暫存器由處理器外部或由一程式設計師之觀點來看,可以是可見的。此等暫存器可能不受限於任何已知的特定電路類型。各種不同類型之暫存器只要如本文中所述儲存並 提供資料便可適用。適合的暫存器其實例包括有,但不限於專屬實體暫存器、使用暫存器重新命名之動態分配實體暫存器、專屬與動態分配實體暫存器之組合等。引退單元454及實體暫存器檔案單元458可耦合至執行叢集460。執行叢集460可包括有一或多個執行單元162之一集合、以及一或多個記憶體存取單元464之一集合。執行單元462可進行各種操作(例如位移、加法、減法、乘法),並且在各種資料類型(例如純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)上進行。儘管一些實施例可包括有專屬於特定功能或功能集合之若干執行單元,其他實施例仍可僅包括有一個執行單元、或全都執行全部功能之多個執行單元。所示排程器單元456、實體暫存器檔案單元458、以及執行叢集460可能屬於複數型態,因為某些實施例建立用於某些資料/操作類型用之單獨管線(例如一純量整數管線、一純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線、及/或一記憶體存取管線,其各具有本身的排程器單元、實體暫存器檔案單元、及/或執行叢集-而在一單獨記憶體存取管線之案例中,可實施其中此管線僅執行叢集具有記憶體存取單元464之某些實施例)。亦應瞭解的是,如使用的是單獨管線,則這些管線其中一或多者可屬於無次序發出/執行,而其餘則屬於按次序。
記憶體存取單元464之集合可耦合至記憶體單元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之任選附加擴充))。
應瞭解的是,此核心可採各種方式支援多執行緒(執行二或更多個操作或執行緒平行集合)。多執行緒支援可藉由例如包括有時間切片多執行緒、同時多執行緒 (其中單一實體核心提供一邏輯核心予各執行緒,使得實體核心進行同時多執行緒)、或以上的組合來進行。此一組合舉例而言,可包括有時間切片擷取與解碼、以及之後的同時多執行緒,例如IntelR Hyperthreading技術中的作法。
儘管暫存器重新命名可在無次序執行之背景下作說明,仍應瞭解的是,暫存器重新命名可在按次序架構中使用。儘管此處理器之所示實施例亦可包括有一單獨指令及資料快取單元434/474、以及一共享L2快取單元476,其他實施例仍可具有用於指令與資料兩者之單一內部快取,舉例而言例如一第1階(L1)內部快取、或多階之內部快取。在一些實施例中,此系統可包括有一內部快取與一外部快取之一組合,此外部快取可位在核心及/或處理器外部。在其他實施例中,此快取全都可位在核心及/或處理器外部。
圖5A根據本揭露之實施例,為一處理器500的一方塊圖。在一項實施例中,處理器500可包括有一多核心處理器。處理器500可包括有通訊性耦合至一或多個核心502之一系統代理510。再者,核心502及系統代理510可通訊性耦合至一或多個快取506。核心502、系統代理510與快取506可經由一或多個記憶體控制單元552通訊性耦合。再者,核心502、系統代理510及快取506可經由記憶體控制單元552通訊性耦合至一圖形模組560。
處理器500可包括有任何適用於使核心502、系統代理510及快取506與圖形模組560互連之機 制。在一項實施例中,處理器500可包括有一環體為基之互連單元508,用來使核心502、系統代理510及快取506與圖形處理器560互連。在其他實施例中,處理器500可包括有用於使此類單元互連之任意數量的眾所周知的技巧。環體為基之互連單元508可利用控制單元552以促進互連。
處理器500可包括有一記憶體階層,其包含有位在此等核心內之一或多階快取、諸如快取506之一或多個共享快取單元、或耦合至整合式記憶體控制器單元552之集合的外部記憶體(圖未示)。快取506可包括有任何適合的快取。在一項實施例中,快取506可包括有一或多個中階快取,例如第2階(L2)、第3階(L3)、第4階(L4)、或其他階快取、最後一階快取(LLC)、及/或以上的組合。
在各項實施例中,核心502其中一或多者可執行多執行緒。系統代理510可包括有用於協調並操作核心502之組件。系統代理單元510舉例而言,可包括有一功率控制單元(PCU)。此PCU可以是或包括有用於調節核心502之功率狀態所需的邏輯與組件。系統代理510可包括有用於驅動一或多個外部連接顯示器或圖形模組560之一顯示引擎512。系統代理510可就圖形用之匯流排,包括有一介面1214。在一項實施例中,介面1214可藉由快速PCI(PCIe)來實施。於再一實施例中,介面1214可藉由快速PCI圖形(PEG)來實施。系統代理510可包括有一直接媒體介面(DMI)516。DMI 516可在一主機板或一電腦系統之其他部分上的不同橋接器間提供鏈路。系統代理510可包括有 用於對一電腦系統之其他元件提供PCIe鏈路之一PCIe橋接器1218。PCIe橋接器1218可使用一記憶體控制器1220及同調邏輯1222來實施。
核心502可依照任何適合的方式來實施。核心502依據架構及/或指令集可以是同質性或異質性。在一項實施例中,核心502中有些可按次序,而其他則可無次序。在另一實施例中,核心502之二或更多者可執行相同的指令集,而其他核心則可僅執行此指令集之一子集、或一不同之指令集。
處理器500可包括有一通用處理器,諸如一CoreTM i3、i5、i7、2 Duo及Quad、XeonTM、ItaniumTM、XScaleTM或StrongARMTM處理器,其可得自Intel Corporation,of Santa Clara,Calif。處理器500可由另一公司提供,例如ARM Holdings,Ltd、MIPS等。處理器500可以是一特殊用途處理器,舉例而言諸如一網路或通訊處理器、壓縮引擎、圖形處理器、共處理器、嵌入式處理器、或類似者。處理器500可在一或多個晶片上實施。處理器500可以是一或多個基材之一部分、及/或可在其上使用若干處理技術其中任何一者來實施,舉例而言例如BiCMOS、CMOS或NMOS。
在一項實施例中,快取506其中一給定者可由核心502其中多者所共享。在另一實施例中,快取506其中一給定者可專屬核心502其中一者。對核心502指派快取506可藉由一快取控制器或其他適合的機制來處置。快 取506其中一給定者可藉由實施一給定快取506之時間切片而由二或更多個核心502所共享。
圖形模組560可實施一整合式圖形處理子系統。在一項實施例中,圖形模組560可包括有一圖形處理器。再者,圖形模組560可包括有一媒體引擎565。媒體引擎565可提供媒體編碼及視訊解碼。
圖5B根據本揭露之實施例,為一核心502之一例示性實作態樣的一方塊圖。核心502可包括有通訊性耦合至一無次序引擎580之一前端570。核心502可透過快取階層503通訊性耦合至處理器500之其他部分。
前端570可依照任何適合的方式來實施,例如如上述完全或部分由前端201來實施。在一項實施例中,前端570可透過快取階層503與處理器500之其他部分進行通訊。於再一實施例中,前端570可從處理器500之部分擷取指令,並且準備此等指令以待稍後將其傳遞至無次序執行引擎580時,在處理器管線中使用。
無次序執行引擎580可依照任何適合的方式來實施,諸如完全或部分藉由如上述之無次序執行引擎203來實施。無次序執行引擎580可準備從前端570收到供執行用之指令。無次序執行引擎580可包括有一分配模組582。在一項實施例中,分配模組582可分配處理器500之資源或其他資源,諸如暫存器或緩衝器,用來執行一給定指令。分配模組582可在排程器中進行分配,諸如一記憶體排程器、快速排程器、或浮點排程器。此類排程器可藉 由資源排程器584在圖5B中表示。分配模組582可完全或部分藉由搭配圖2所述之分配邏輯來實施。資源排程器584可基於一給定資源其來源之備妥狀態、以及執行一指令所需執行資源之可用性,判斷一指令何時已就緒可執行。資源排程器584舉例而言,可藉由如上述之排程器202、204、206來實施。資源排程器584可依據一或多個資源來排程指令之執行。在一項實施例中,此類資源可在核心502內部,並且舉例而言,可繪示為資源586。在另一實施例中,此類資源可在核心502外部,並且舉例而言,可由快取階層503存取。資源舉例而言,可包括有記憶體、快取、暫存器檔案、或暫存器。核心502內部之資源可由圖5B中之資源586來表示。寫至或讀自資源586之值如需要,可透過例如快取階層503,與處理器500之其他部分協調。指令如有指派資源,則可置入一重排序緩衝器588。指令如在執行,重排序緩衝器588可加以追蹤,並且可基於處理器500之任何適合的準則,選擇性重排序其執行。在一項實施例中,重排序緩衝器588可識別可獨立執行之指令或一串指令。此類指令或一串指令可與其他此類指令平行執行。核心502中可藉由任何適量之單獨執行塊或虛擬處理器進行平行執行。在一項實施例中,諸如記憶體、暫存器及快取等共享資源可由一給定核心502內之多個虛擬處理器存取。在其他實施例中,共享資源可由處理器500內之多個處理實體存取。
快取階層503可依照任何適合的方式來實 施。舉例而言,快取階層503可包括有一或多個更低、中階快取,例如快取572、574。在一項實施例中,快取階層503可包括有通訊性耦合至快取572、574之一LLC 595。在另一實施例中,LLC 595可實施於可由處理器500之全部處理實體存取之一模組590中。於再一實施例中,模組590可實施於出自Intel,Inc.之處理器之一非核心模組中。模組590可包括有核心502執行所需處理器500之部分或子系統,但可能不在核心502內實施。除了LLC 595以外,模組590舉例而言,還可包括有硬體介面、記憶體同調協調器、處理器間互連件、指令管線、或記憶體控制器。透過模組590,且更具體為透過LLC 595,可讓處理器500存取RAM 599。再者,核心502之其他個體可按類似方式存取模組590。透過模組590,可部分有助於核心502之個體之協調。
圖6至8繪示適用於包括有處理器500之例示性系統,而圖9可繪示可包括有核心502其中一或多者之一例示性系統單晶片(SoC)。所屬技術領域中已知用於膝上型、桌上型、掌上型PC、個人數位助理器、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、行動電話、可攜式媒體播放器、掌上型裝置、以及各種其他電子裝置的其他系統設定及實作態樣也可能適用。一般而言,如本文中所揭示併入一處理器及/或其他執行邏輯之多種系統或電子裝置可能大致適用。
圖6根據本揭露之實施例,為一系統600的一方塊圖。系統600可包括有一或多個處理器610、615,其可耦合至圖形記憶體控制器集線器(GMCH)620。圖6中以虛線表示附加處理器615之任選性質。
各處理器610、615可以是某版本之處理器500。然而,應知處理器610、615中可能不存在整合式圖形邏輯與整合式記憶體控制單元。圖6繪示GMCH 620可耦合至一記憶體640,其舉例而言,可以是一動態隨機存取記憶體(DRAM)。就至少一項實施例,此DRAM可與一非依電性快取相關聯。
GMCH 620可以是一晶片組、或一晶片組之一部分。GMCH 620可與處理器610、615進行通訊,並且控制處理器610、615與記憶體640間的互動。GMCH 620亦可當作介於處理器610、615與系統600之其他元件間的一加速匯流排介面。在一項實施例中,GMCH 620與處理器610、615經由一多分支匯流排進行通訊,例如一前側匯流排(FSB)695。
再者,GMCH 620可耦合至一顯示器645(例如一平板顯示器)。在一項實施例中,GMCH 620可包括有一整合式圖形加速器。GMCH 620可進一步耦合至一輸入/輸出(I/O)控制器集線器(ICH)650,其可用於將各種週邊裝置耦合至系統600。外部圖形裝置660可包括有連同另一週邊裝置670耦合至ICH 650之一分立圖形裝置。
在其他實施例中,系統600中亦可存在附加 或不同處理器。舉例而言,附加處理器610、615可包括有可與處理器610相同之附加處理器、可與處理器610呈異質性或不對稱性之附加處理器、加速器(舉例而言例如一圖形加速器或數位信號處理(DSP)單元)、可現場規劃閘陣列、或任何其他處理器。依據包括有架構、微架構、熱、功率消耗特性及類似者之一連串優點計量,實體資源610、615間可以有各種差異。這些差異可就處理器610、615間的不對稱性與異質性大效自我彰顯。就至少一項實施例,各個處理器610、615可駐留於相同的晶粒封裝體中。
圖7根據本揭露之實施例,為一第二系統700的一方塊圖。如圖7所示,多處理器系統700可包括有一點對點互連件系統,並且可包括有經由一點對點互連件750耦合之一第一處理器770與一第二處理器780。處理器770與780各可以是某版本之處理器500,如處理器610、615其中一或多者。
儘管圖7可繪示兩個處理器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耦合至一第二匯流排720之一匯流排橋接器718,耦合至第一匯流排716。在一項實施例中,第二匯流排720可以是一低接腳數(LPC)匯流排。在一項實施例中,各種裝置可耦合至第二匯流排720,舉例而言,包括有一鍵盤及/或滑鼠722、通訊裝置727、以及一儲存單元728,例如一磁碟機或其他大量儲存裝置,其可包括有指令/符碼與資料730。再者,一音訊I/O 724耦合至第二匯流排720。 請注意,其他架構也許有可能。舉例而言,一系統可實施一多分支匯流排或其他此類架構,而不是圖7之點對點架構。
圖8根據本揭露之實施例,為一第三系統700的一方塊圖。圖7與8中相似的元件有相似的參考編號,而且圖8已省略圖7之某些態樣,為的是要避免混淆圖8之其他態樣。
圖8繪示處理器770、780分別可包括有整合式記憶體及I/O控制邏輯(「CL」)772與782。就至少一項實施例,CL 772、782可包括有整合式記憶體控制器單元,諸如以上搭配圖5與7所述者。另外,CL 772、782亦可包括有I/O控制邏輯。圖8繪示不僅記憶體732、734可耦合至CL 872、882,I/O裝置814亦可耦合至控制邏輯772、782。舊有I/O裝置815可耦合至晶片組790。
圖9根據本揭露之實施例,為一SoC 900的一方塊圖。圖5中類似的元件有相似的參考編號。同樣地,虛線方塊可代表更先進SoC上的任選特徵。互連單元902可耦合至:一應用處理器910,其可包括有一或多個核心502A至502N之一集合及共享快取單元506;一系統代理單元912;一匯流排控制器單元916;一整合式記憶體控制器單元914;一或多個媒體處理器920之一集合,其可包括有整合式圖形邏輯908、用於提供靜態及/或視訊相機功能之一影像處理器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、記憶體介面控制器1045、MIPI控制器1050、快閃記憶體控制器1055、雙資料率(DDR)控制器1060、安全性引擎1065、以及I2S/I2C控制器1070。其他邏輯與電路可包括於圖10之處理器中,包括有更多CPU或GPU以及其他週邊介面控制器。
至少一項實施例之一或多項態樣可藉由代表處理器內各種邏輯之一機器可讀媒體上儲存之代表性資料來實施,其在藉由一機器讀取時,令此機器製作邏輯以進行本文中所述之技巧。此類表示型態稱為「IP核心」,可儲存於一有形、機器可讀媒體(「磁帶」)上,並且供應給各種客戶或製造設施以載入到實際施作此邏輯或處理器的製作機器。舉例而言,諸如ARM Holdings,Ltd.所開發之CortexTM系列處理器、以及中國科學院計算技術研究所(ICT)所開發之龍芯IP核心等IP核心可授權或出售給諸如德儀(Texas Instruments)、高通(Qualcomm)、蘋果(Apple)或三星(Samsung)等各種客戶或被授權人,並且可在這些客戶或被授權人所生產之處理器中實施。
圖11根據本揭露之實施例,繪示一方塊圖,其繪示IP核心之開發。儲存器1130可包括有模擬軟體1120及/或硬體或軟體模型1110。在一項實施例中,可經由記憶體1140(例如硬碟)、有線連接(例如網際網路)1150或無線連接1160對儲存器1130提供代表此IP核心設計之資料。此模擬工具與模型所產生之IP核心資訊接著可傳送至 一製作設施,可在此由一第三方製作此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指令集核心之處理器1316來原生執行。此具有至少一個x86指令集核心之處理器1316代表可實質執行與具有至少一個x86指令集核心之Intel處理器同功能之任何處理器,作法乃以相容方式執行或按其他方式處理(1)此x86指令集核心之指令集之一實質部分,或(2)目標定於在具有至少一個x86指令集核心之Intel處理器上執行之應用程式或其他軟體的物件碼版本,為的是要達到與具有至少一個x86指令集核心之一Intel處理器實質相同的結果。此x86編譯器1304代表一編譯器,可操作以產生x86二進位碼1306(例如物件碼),其可在此具有至少一個x86指令集核心之處理器1316上執行,有或沒有附加鏈接處理都可以。類似的是,圖13展示高階語言1302中之程式可使用一替代指令集編譯器1308進行編譯以產生替代指令集二進位碼1310,其可藉由沒有至少一個x86指令集核心1314之一處理器來原生執行(例如具有執行MIPS Technologies of Sunnyvale,CA之MIPS指令集、及/或執行ARM Holdings of Sunnyvale,CA之ARM指令集之核心的一處理器)。
指令轉換器1312乃用於將x86二進位碼1306轉換成替代指令集二進位碼1311,其可藉由沒有一x86指令集核心之處理器1314來原生執行。此已轉換之符碼可以或可不與起因於一替代指令集編譯器1308之替代指令集二進位碼1310相同;然而,此已轉換之符碼將會完成相同的一般操作,並且由出自此替代指令集之指令所構成。因此,此指令轉換器1312代表軟體、韌體、硬體、或以上的組合,其透過仿真、模擬或任何其他過程,容許一處理器、或不具有一x86指令集處理器或核心之其他電子裝置執行x86二進位碼1306。
圖14根據本揭露之實施例,為一處理器之一指令集架構1400的一方塊圖。指令集架構1400可包括有任何適量或適合種類之組件。
舉例而言,指令集架構1400可包括有諸如一或多個核心1406、1407及一圖形處理單元1415等處理實體。核心1406、1407可諸如透過一匯流排或快取等透過任何適合的機制,通訊性耦合至指令集架構1400之其餘部分。在一項實施例中,核心1406、1407可透過一L2快取控制1408來通訊性耦合,其可包括有一匯流排介面單元1409及一L2快取1410。核心1406、1407及圖形處理單元1415可彼此通訊性耦合,並且透過互連件1410通訊性耦合 至指令集架構1400之其餘部分。在一項實施例中,圖形處理單元1415可使用一視訊碼1420,其定義將會編碼與解碼特定視訊信號以供輸出之方式。
指令集架構1400亦可包括有用於與一電子裝置或系統之其他部分介接或通訊之任意數量或種類的介面、控制器、或其他機制。此類機制可有助於舉例而言,與週邊、通訊裝置、其他處理器、或記憶體互動。在圖14之實例中,指令集架構1400可包括有一液晶顯示器(LCD)視訊介面1425、一用戶介面模組(SIM)介面1430、一啟動ROM介面1435、一同步動態隨機存取記憶體(SDRAM)控制器1440、一快閃控制器1445、以及一串列週邊介面(SPI)主控單元1450。LCD視訊介面1425可從例如GPU 1415並且透過例如一行動產業處理器介面(MIPI)1490或一高畫質多媒體介面(HDMI)1495對一顯示器提供視訊信號輸出。此一顯示器舉例而言,可包括有一LCD。SIM介面1430可提供送至或收自一SIM卡或裝置的存取權。SDRAM控制器1440可提供送至或收自諸如一SDRAM晶片或模組等記憶體的存取權。快閃控制器1445可提供送至或收自諸如快閃記憶體或其他RAM個體的存取權。SPI主控單元1450可提供送至或收自通訊模組的存取權,例如藍牙模組1470、高速3G數據機1475、全球定位系統模組1480、或實施一諸如802.11等通訊標準之無線模組1485。
圖15根據本揭露之實施例,為一處理器之一指令集架構1500的一更詳細方塊圖。指令架構1500可實施 指令集架構1400之一或多項態樣。再者,指令集架構1500可繪示一處理器內指令執行用之模組及機制。
指令架構1500可包括有通訊性耦合至一或多個執行實體1565之一記憶體系統1540。再者,指令架構1500可包括有一快取與匯流排介面單元,例如通訊性耦合至執行實體1565及記憶體系統1540之單元1510。在一項實施例中,指令載入執行實體1564可藉由一或多個執行階段來進行。此類階段舉例而言,可包括有指令預取階段1530、雙指令解碼階段1550、暫存器重新命名階段155、發出階段1560、以及寫回階段1570。
在另一實施例中,記憶體系統1540可包括有一引退指標器1582。引退指標器1582可儲存識別最後一個引退指令之程式命令(PO)之一值。引退指標器1582舉例而言,可藉由引退單元454來設定。指令如尚未引退,則引退指標器1582可包括有一空值。
執行實體1565可包括有一處理器可藉以執行指令之任何適量與適合種類的機制。在圖15之實例中,執行實體1565可包括有ALU/乘法單元(MUL)1566、ALU 1567、以及浮點單元(FPU)1568。在一項實施例中,此類實體可利用一給定位址1569內所含有之資訊。執行實體1565結合階段1530、1550、1555、1560、1570可共同形成一執行單元。
單元1510可依照任何適合的方式來實施。在一項實施例中,單元1510進行快取控制。在此一實施例 中,單元1510因此可包括有一快取1525。於再一實施例中,可將快取1525實施成一L2統一快取,其具有任何適合的尺寸,例如零、128k、256k、512k、1M或2M個記憶體位元組。在另一、進一步實施例中,快取1525可實施成錯誤校正碼記憶體。在另一實施例中,單元1510可對一處理器或電子裝置之其他部分進行匯流排介接。在此一實施例中,單元1510因此可包括有用於透過一互連件、處理器內匯流排、處理器間匯流排、或其他通訊匯流排、連接埠、或線路進行通訊之一匯流排介面單元1520。匯流排介面單元1520可提供介接,以便舉例而言,進行記憶體與輸入/輸出位址之產生,用於在執行實體1565與一系統在指令架構1500外部之部分間轉移資料。
為了進一步促進其功能,匯流排介面單元1520可包括有用於對一處理器或電子裝置之其他部分產生中斷及其他通訊之一中斷控制與配送單元1511。在一項實施例中,匯流排介面單元1520可包括有一窺探控制單元1512,其處置多個處理核心之快取存取與同調。於再一實施例中,若要提供此功能,窺探控制單元1512可包括有一快取間轉移單元,其處置不同快取間的資訊交換。在另一、進一步實施例中,窺探控制單元1512可包括有一或多個窺探篩選器1514,其監測其他快取(圖未示)之同調,以使得諸如單元1510之一快取控制器不一定要直接進行此監測。單元1510就同步化指令架構1500之動作,可包括有任何適量計時器1515。同樣地,單元1510可包括有一AC連 接埠1516。
記憶體系統1540可包括有就指令架構1500之處理需要用於儲存資訊之任何適量且適合種類的機制。在一項實施例中,記憶體系統1504可包括有用於儲存資訊一載入儲存單元1530,諸如寫入至或讀回自記憶體或暫存器之緩衝器。在另一實施例中,記憶體系統1504可包括有一轉譯旁看緩衝區(TLB)1545,其提供介於實體與虛擬位址間的位址值查詢。在又另一實施例中,匯流排介面單元1520可包括有用於促進存取虛擬記憶體之一記憶體管理單元(MMU)1544。於再又另一實施例中,記憶體系統1504可包括有一預取器1543,用於在實際需要執行此類指令之前,先就出自記憶體之指令提出請求,以便縮減延遲。
指令架構1500執行一指令之操作可透過不同階段來進行。舉例而言,使用單元1510指令預取階段1530可透過預取器1543存取一指令。取回之指令可儲存於指令快取1532中。預取階段1530可就快速迴圈模式啟用一選項1531,其中執行的是形成一迴圈之一串指令,其小到足以適合放在一給定快取內。在一項實施例中,不需要存取出自例如指令快取1532之附加指令也可進行此一執行。待預取指令之判斷舉例而言,可藉由分支預測單元1535來進行,其可存取全域歷程1536中之執行指示、目標位址1537之指示、或一回傳堆疊1538之內容以判斷下一個將會執行的符碼是哪些分支1557。此類分支因而有可能預取。分支1557可透過如下文所述之其他操作階段來產生。 指令預取階段1530可對雙指令解碼階段提供指令以及關於未來指令之任何預測。
雙指令解碼階段1550可將一已接收指令轉譯成可執行之微碼為基之指令。雙指令解碼階段1550每時脈週期可同時解碼兩個指令。再者,雙指令解碼階段1550可傳遞其結果至暫存器重新命名階段1555。另外,雙指令解碼階段1550可由其對於此微碼之解碼與最終執行來判斷任何產生的分支。此類結果可輸入到分支1557。
暫存器重新命名階段1555可將參考移位至虛擬暫存器,或將其他資源轉譯成參考再移位至實體暫存器或資源。暫存器重新命名階段1555可包括有一暫存器池1556中此類映射關係之指示。暫存器重新命名階段1555可於收到時更改此等指令,並且將結果發送至發出階段1560。
發出階段1560可對執行實體1565發出或調度命令。此類發出可依照一無次序方式來進行。在一項實施例中,多個指令在執行前可先保持於發出階段1560。發出階段1560可包括有用於保持此類多個命令之一指令佇列1561。指令可基於諸如一給定指令執行用資源之可用性或適合性等任何可接受準則,由發出階段1560發給一特定處理實體1565。在一項實施例中,發出階段1560可重排序指令佇列1561內之指令,使得收到之第一指令可能不是執行之第一指令。基於指令佇列1561之排序,可對分支1557提供附加分支資訊。發出階段1560可傳遞指令至執行實體 1565以供執行之用。
寫回階段1570在執行時,可將資料寫入暫存器、佇列、或指令集架構1500之其他結構,以傳送一給定之完成。取決於發出階段1560中布置之指令順序,寫回階段1570之操作可實現待執行之附加指令。指令集架構1500之進行可藉由追蹤單元1575來監測或除錯。
圖16根據本揭露之實施例,為一處理器之一指令集架構用之一執行管線1600的一方塊圖。執行管線1600可例如就圖15之指令架構1500繪示操作。
執行管線1600可包括有任何適合的步驟或操作組合。於1605,可預測待執行之分支。在一項實施例中,此等預測可基於指令之前幾次執行及其結果。於1610,可將對應於所預測執行分支之指令載入一指令快取。於1615,可擷取此指令快取中之一或多個此類指令以供執行之用。於1620,可將已擷取之指令解碼成微碼或更具體之機器語言。在一項實施例中,可同時解碼多個指令。於1625,可對已解碼指令內之暫存器或其他資源重指派參考。舉例而言,對虛擬暫存器之參考可利用對相對應實體暫存器之參考來取代。於1630,可將此等指令調度至佇列以供執行之用。於1640,可執行此等指令。此類執行可依照任何適合的方式來進行。於1650,可對一適合的執行實體發出此等指令。指令執行的方式可取決於執行此指令之特定實體。舉例而言,於1655,一ALU可進行算術功能。此ALU可利用其操作用之單一時脈週期、以及兩個移位 器。在一項實施例中,可運用兩個ALU,因此,可於1655執行兩個指令。於1660,可判斷一產生的分支。可使用一程式計數器指定此分支施作之目的地。1660可於單一時脈週期內執行。於1665,浮點算術可藉由一或多個FPU來進行。此浮點運算可能需要多個時脈週期才可執行,例如二至十個週期。於1670,可進行乘法與除法運算。此類運算可在四個時脈週期中進行。於1675,可進行對暫存器或管線1600之其他部分載入並儲存操作。此等操作可包括有載入與儲存位址。此類操作可在四個時脈週期中進行。於1680,可如1655至1675之產生的操作所需進行寫回操作。
圖17根據本揭露之實施例,為用於利用一處理器1710之一電子裝置1700的一方塊圖。電子裝置1700舉例而言,可包括有一筆記型電腦、一超輕薄筆電、一電腦、一搭式伺服器、一機架伺服器、一刀鋒伺服器、一膝上型電腦、一桌上型電腦、一平板電腦、一行動裝置、一手機、一嵌入式電腦、或任何其他適合的電子裝置。
電子裝置1700可包括有通訊性耦合至任何適量或適合種類之組件、週邊、模組、或裝置的處理器1710。此耦合可藉由任何適合種類之匯流排或介面來完成,例如I2C匯流排、系統管理匯流排(sMBu)、低接腳數(LPC)匯流排、SPI、高解析音訊(HDA)匯流排、序列先進技術附件(SATA)匯流排、USB匯流排(1、2、3版)、或通用非同步接收器/傳送器(UART)匯流排。
此類組件舉例而言,可包括有一顯示器 1724、一觸控螢幕1725、一觸控板1730、一近場通訊(NFC)單元1745、一感測器集線器1740、一熱感測器1746、一快速晶片組(EC)1735、一信賴平台模組(TPM)1738、BIOS/韌體/快閃記憶體1722、一數位信號處理器1760、諸如一固態硬碟(SSD)或一硬碟機(HDD)之一驅動機1720、一無線區域網路(WLAN)單元1750、一藍牙單元1752、一無線廣域網路(WWAN)單元1756、一全球定位系統(GPS)、諸如一USB 3.0相機之一相機1754、或依照LPDDR3標準實施之一低功率雙倍資料速率(LPDDR)記憶體單元1715。這些組件各可依照任何適合的方式來實施。
再者,在各項實施例中,其他組件可透過以上論述的組件而通訊性耦合至處理器1710。舉例而言,一加速計1741、一周圍光感測器(ALS)1742、羅盤1743、以及陀螺儀1744可通訊性耦合至感測器集線器1740。一熱感測器1739、風扇1737、鍵盤1746、以及觸控板1730可通訊性耦合至EC 1735。揚聲器1763、耳機1764、以及一麥克風1765可通訊性耦合至一音訊單元1764,其可進而通訊性耦合至DSP 1760。音訊單元1764舉例而言,可包括有一音訊編解碼器及一D類放大器。一SIM卡1757可通訊性耦合至WWAN單元1756。可依照一下一代形狀因子(NGFF)實施諸如WLAN單元1750與藍牙單元1752、以及WWAN單元1756等組件。
在一些狀況中,根據一實施例使用一指令之 一軟體公用程式可具有不同於一位元遮罩之應用程式規劃介面(API)。舉例來說,此公用程式可僅接受一百分比,並且使用此正確旳位元遮罩當作此指令之引數。
現請參照圖18,所示為根據一或多項實施例之一實例的一簡圖1800。如圖18所示,一來源暫存器1810包括有十六個資料元件A1至A16,並且一目的地暫存器1820包括有四個資料元件B1至B4。假設一部分縮減指令乃使用來源暫存器1810之元素當作一輸入陣列、並且對目的地暫存器1820提供一輸出陣列來執行。進一步假設此部分縮減指令乃用來進行各資料元件之四比一縮減。因此,可將來源暫存器1810區分成四個等通道。在一或多項實施例中,執行此部分縮減指令令各通道中進行一部分縮減操作。再者,各通道中進行之部分縮減操作將此通道中所包括之多個資料元件縮減,並且導致目的地暫存器1820之單一資料元件。舉例而言,在通道1中,資料元件A1至A4之一部分縮減操作可產生輸出元件B1。類似的是,部分縮減操作可在通道2、通道3及通道4中單獨進行,並且可分別產生輸出元件B2、B3及B4。在一些情節中,部分縮減操作1800可實現平行進行四個計算。因此,在一些實施例中,可縮減完成一總體計算所需的時間。
在一或多項實施例中,一指令集架構(ISA)可包括有此部分縮減指令之多種變例。舉例而言,此ISA可包括有此部分縮減操作對應於不同縮減操作類型之變例,例如加法、減法、乘法、最大值、最小值等等。再者, 此ISA可包括有此部分縮減指令對應於不同資料類型及/或長度之變例,例如位元組整數、字組整數、雙字組整數、四字組整數、單精確度浮點、雙精確度浮點等等。再者,此部分縮減指令之變例可基於任何其他特性。
在一或多項實施例中,此ISA可包括有此部分縮減指令對應於不同特性組合之變例。舉例而言,此ISA可包括有例如此部分縮減指令對應於一加法運算及一雙字組整數資料類型之一變例。在另一實例中,此ISA可包括有此部分縮減指令對應於一乘法運算及一單精確度浮點資料類型之一變例。得以思忖其他變例或組合。
在一或多項實施例中,此部分縮減指令可使用任意數量的通道N。舉例而言,此通道數N可以是二的任何倍數(例如2、4、6、8等)。
在一或多項實施例中,各部分縮減指令可根據任意數量的運算元來執行。舉例而言,此部分縮減指令可使用一輸入運算元指定一輸入陣列之一位置。此輸入運算元可包括有一來源暫存器。再者,此部分縮減指令可使用一輸出運算元指定用以儲存此輸出陣列之一位置。此輸出運算元可包括有一目的地暫存器。
在一或多項實施例中,一編譯器可識別程式結構及/或位置,其可使用一部分縮減指令。舉例而言,一編譯器可判斷一程式包括有用於以低於一經界定臨界值(例如四或以下)之一跳脫計數,進行一縮減操作之一巢狀迴圈。此編譯器對此判斷作出回應,可使用一部分縮減指 令。再者,在一些實施例中,一程式設計師可在撰寫一程式時指定使用一部分縮減指令。
在一些實施例中,一部分縮減指令可與輸入遮罩及/或輸出遮罩配合使用。舉例而言,此部分縮減指令可基於一輸入遮罩中指示之元素位置而使用此輸入陣列之資料元件。再者,此部分縮減指令可基於一輸出遮罩中指示之元素位置而產生此輸出陣列之資料元件。在一些實施例中,可在一遮罩暫存器(圖未示)中提供此類遮罩。
現請參照圖19,所示為根據一或多項實施例之一方法1900的一流程圖。方法1900可藉由一處理器中所包括之邏輯來進行。在一些實施例中,此類邏輯可實施成硬體電路系統、軟體、及/或韌體之一組合。此類邏輯可包括有控制暫存器、諸如一或多個算術邏輯單元之運算邏輯、通訊電路系統及記憶體存取電路系統,此外還包括有各種表格及其他控制邏輯。為了說明,涉及方法1900之各種程序塊可在下文參照圖20作說明,其根據一或多項實施例展示一例示性操作的一方塊圖2000。然而,本文中所論述之各項實施例其範疇在這方面並不受限。
如圖19所示,於程序塊1910,可接收一部分縮減指令。舉例而言,請參照圖20,擷取邏輯2010擷取一指令流中所包括之一部分縮減指令。
於程序塊1920,可解碼此部分縮減指令以取得一已解碼指令。舉例而言,請參照圖20,解碼邏輯2020解碼此部分縮減指令,藉此提供一已解碼部分縮減指令。
於程序塊1930,可將此已解碼指令分配至一或多個執行單元。舉例而言,請參照圖20,排程器/分配器邏輯2030將此已解碼部分縮減指令分配至一或多個執行單元2040。在一些實施例中,各種處理器核心中可包括有執行單元2040。
於程序塊1940,可回應於此已解碼指令進行複數N個部分縮減操作,其中各部分縮減操作乃於一輸入陣列中所包括之N條通道其中一者中進行。再者,各部分縮減操作可產生一輸出元件。舉例而言,請參照圖20,執行單元2040可從一來源暫存器2050接收一輸入陣列,並且可在此輸入陣列之N條通道之各者中進行一單獨部分縮減操作。執行單元2040可因這N個部分縮減操作而產生N個輸出元件(例如圖18中所示之元素B1至B4)。
於程序塊1950,此N個輸出元件可儲存於一目的地暫存器中。舉例而言,請參照圖20,此N個輸出元件可儲存於目的地暫存器2060中。於程序塊1950之後,完成方法1900。
應知,圖18至20中所示之實例乃為了例示而提供,並非意欲限制任何實施例。特別的是,列入考量的是,可在一或多項實施例中任何地方使用圖18至20中所示實例中的特定內容。得以思忖並且可在各種實施例中使用其他變例。
根據本文中所述之實施例,一部分縮減指令可進行一輸入陣列中所包括多條通道中之單獨部分縮減操 作。在一或多項實施例中,可平行進行此等部分縮減操作。如此,在一些情節中,一部分縮減指令可縮減完成一總體計算所需的時間。舉例而言,使用一部分縮減指令可能導致包括具有小跳脫計數之巢狀迴圈的一程式改善效能。
以下實例涉及進一步實施例。
在一項實例中,一處理器包含有:用以擷取指令之一擷取邏輯,該等指令包括有一部分縮減指令;用以解碼該部分縮減指令並對一或多個執行單元提供該已解碼部分縮減指令之一解碼邏輯;以及回應於該已解碼部分縮減指令進行複數N個部分縮減操作以產生包括有N個輸出資料元件之一結果陣列的該一或多個執行單元,其中一輸入陣列包含有N條通道,其中該等N個部分縮減操作乃各用來縮減該等N條通道其中一對應通道中所包括之一輸入資料元件集合。
在一實例中,該輸入陣列之該等N條通道各包括有同一數量之輸入資料元件。
在一實例中,該處理器更包含有複數個核心,其中各核心包含有該一或多個執行單元其中一者。
在一實例中,該等輸入資料元件各為選自於下列之一者:一位元組整數、字組整數、雙字組整數、四字組整數、單精確度浮點數、以及一雙精確度浮點數。
在一實例中,該處理器更包含有複數個暫存器。在一實例中,該複數個暫存器包含有用以儲存該輸入陣列之一來源暫存器。在一實例中,該複數個暫存器包含 有用以儲存該結果陣列之一目的地暫存器。
在一實例中,各部分縮減操作乃使用選自於加法、減法、乘法、最小值、及最大值之一操作以縮減該輸入資料元件集合。
在一項實例中,一種方法包含有:藉由一處理器,接收一部分縮減指令及一來源運算元,該來源運算元指定包括有複數條通道之一輸入陣列;以及對於該複數條通道之各通道,執行該通道中所包括複數個輸入資料元件之一部分縮減操作以產生一輸出資料元件。
在一實例中,該方法更包含有在一目的地暫存器中儲存該等所產生之輸出資料元件。在一實例中,該目的地暫存器是在一目的地運算元中作指定。
在一實例中,該等輸入資料元件各為選自於下列之一者:一位元組整數、字組整數、雙字組整數、四字組整數、單精確度浮點數、以及一雙精確度浮點數。
在一實例中,該部分縮減操作乃選自於加法、減法及乘法之一者。
在一實例中,該複數條通道包括有一通道數N,其中該通道數N為二的倍數。
在一實例中,執行該部分縮減指令導致包含有N個輸出資料元件之一輸出陣列。
在一實例中,一種機器可讀媒體於其上儲存有資料,該資料若由至少一個機器所用,則令該至少一個機器製作一個積體電路以根據以上實例其中任何一者進行 一種方法。
在一項實例中,一種用於處理指令之設備被組配來進行以上實例其中任何一者之方法。
在一實例中,一種系統包含有耦合至一平台記憶體之一處理器。該處理器包含有用以儲存包括有N條通道之一輸入陣列之一來源暫存器。該處理器更包括有回應於一部分縮減指令之一接收進行下列動作之執行邏輯:在各通道中,執行該通道中所包括一輸入資料元件集合之一部分縮減操作,以及產生包括有N個輸出資料元件之一結果陣列。
在一實例中,該系統更包含有用以接收該結果陣列之一目的地暫存器。
在一實例中,該執行邏輯包含有複數個執行單元,以及其中該複數個執行單元平行執行N個部分縮減操作。
在一實例中,該系統更包含有用以解碼該部分縮減指令之一解碼器。
在一實例中,該部分縮減指令為複數個部分縮減指令其中一者,其中該複數個部分縮減指令各與縮減操作類型及資料類型之一唯一組合相關聯。
在一實例中,該部分縮減操作乃選自於加法、減法及乘法之一者。
在一實例中,該數N為二的倍數。
在一實例中,一種機器可讀媒體具有儲存於 其上之資料,該資料若由至少一個機器所用,則令該至少一個機器製作一個積體電路以進行一種方法,該方法包含有:藉由一處理器,接收一部分縮減指令及一來源運算元,該來源運算元指定包括有複數條通道之一輸入陣列;以及對於該複數條通道之各通道,執行該通道中所包括複數個輸入資料元件之一部分縮減操作以產生一輸出資料元件。
在一實例中,藉由該至少一個積體電路所進行之該方法更包含有在一目的地暫存器中儲存該等所產生之輸出資料元件。
在一實例中,該目的地暫存器是在一目的地運算元中作指定。
在一實例中,該等輸入資料元件各為選自於下列之一者:一位元組整數、字組整數、雙字組整數、四字組整數、單精確度浮點數、以及一雙精確度浮點數。
在一實例中,該部分縮減操作乃選自於加法、減法及乘法之一者。
在一實例中,該複數條通道包括有一通道數N,其中該通道數N為二的倍數。
在一實例中,執行該部分縮減指令導致包含有N個輸出資料元件之一輸出陣列。
瞭解以上實例之各種組合是有可能的。
實施例可在許多不同類型的系統中使用。舉例而言,在一項實施例中,一通訊裝置可布置來進行本文中所述之各種方法與技巧。當然,本發明之範疇並不受限 於一通訊裝置,並且取而代之地,其他實施例可針對用於處理指令之其他設備類型、或包括有指令之一或多個機器可讀媒體,該等指令回應於在一運算裝置上執行,令該裝置實行本文中所述方向與技巧其中一或多者。
實施例可實施成符碼,並且可在上有儲存指令之一非暫時性儲存媒體上儲存,此等指令可用於程式規劃一系統以執行此等指令。實施例亦可實施成資料,並且可儲存於一非暫時性儲存媒體上,其若由至少一個機器使用,則令該至少一個機器製作至少一個積體電路以進行一或多個操作。再進一步實施例可實施成包括有資訊之一電腦可讀儲存媒體,該資訊當製造成一SoC或其他處理器時,乃用來組配此SoC或其他處理器以進行一或多個操作。該儲存媒體可包括有,但不限於任何類型之包括有軟式磁片、光碟、固態驅動機(SSD)、光碟唯讀記憶體(CD-ROM)、可重寫光碟(CD-RW)、及磁光碟在內之碟片、諸如唯讀記憶體(ROM)之半導體裝置、諸如動態隨機存取記憶體(DRAM)之隨機存取記憶體(RAM)、靜態隨機存取記憶體(SRAM)、可抹除可規劃唯讀記憶體(EPROMs)、快閃記憶體、電氣可抹除可規劃唯讀記憶體(EEPROM)、磁卡或光卡、或任何其他類型之適用於儲存電子指令之媒體。
儘管已對照有限數量之實施例說明本發明,所屬技術領域中具有通常知識者仍將了解由其衍生之數種修改及變例。隨附申請專利範圍如落於本發明之真實 精神與範疇內,係意欲涵蓋所有此等修改及變例。
2000‧‧‧方塊圖
2010‧‧‧擷取邏輯
2020‧‧‧解碼邏輯
2030‧‧‧排程器/分配器邏輯
2040‧‧‧執行單元
2050‧‧‧來源暫存器
2060‧‧‧目的地暫存器

Claims (20)

  1. 一種處理器,其包含:用以擷取指令之一擷取邏輯,該等指令包括一部分縮減指令;一解碼邏輯,其用以解碼該部分縮減指令並將經解碼之該部分縮減指令提供至一或多個執行單元;以及該一或多個執行單元,其用以回應於經解碼之該部分縮減指令而進行複數N個部分縮減操作以產生包括N個輸出資料元件之一結果陣列,其中一輸入陣列包含N條通道,其中該等N個部分縮減操作之各者係用以縮減包括於該等N條通道中的一對應通道中之一組輸入資料元件。
  2. 如請求項1之處理器,其中該輸入陣列之該等N條通道之各者包括一相同數量之輸入資料元件。
  3. 如請求項1之處理器,其進一步包含複數個核心,其中各核心包含該一或多個執行單元中之一者。
  4. 如請求項1之處理器,其中該等輸入資料元件之各者係自一位元組整數、字組整數、雙字組整數、四字組整數、單精確度浮點數、以及一雙精確度浮點數中所選擇之一者。
  5. 如請求項1之處理器,其進一步包含複數個暫存器。
  6. 如請求項5之處理器,其中該複數個暫存器包含用以儲存該輸入陣列之一來源暫存器。
  7. 如請求項5之處理器,其中該複數個暫存 器包含用以儲存該結果陣列之一目的地暫存器。
  8. 如請求項1之處理器,其中各部分縮減操作係使用自加法、減法、乘法、最小值、及最大值中所選擇之一操作以縮組減該輸入資料元件。
  9. 一種具有儲存於其上的資料之機器可讀取媒體,該資料在由至少一個機器所使用時,致使該至少一個機器製作至少一個積體電路以進行一方法,該方法包含:藉由一處理器,接收一部分縮減指令及一來源運算元,該來源運算元指定包括複數條通道之一輸入陣列;以及針對該複數條通道之各通道,執行包括於該通道中的複數個輸入資料元件之一部分縮減操作以產生一輸出資料元件。
  10. 如請求項9之機器可讀取媒體,該方法進一步包含:在一目的地暫存器中儲存經產生之該等輸出資料元件。
  11. 如請求項10之機器可讀取媒體,其中該目的地暫存器係於一目的地運算元中所指定。
  12. 如請求項9之機器可讀取媒體,其中該等輸入資料元件之各者係自一位元組整數、字組整數、雙字組整數、四字組整數、單精確度浮點數、以及一雙精確度浮點數中所選擇之一者。
  13. 如請求項9之機器可讀取媒體,其中該部 分縮減操作係自加法、減法及乘法中所選擇之一者。
  14. 如請求項9之機器可讀取媒體,其中該複數條通道包括一通道數N,其中該通道數N為二的倍數。
  15. 如請求項14之機器可讀取媒體,其中執行該部分縮減指令導致包含N個輸出資料元件之一輸出陣列。
  16. 一種系統,其包含:一處理器,其包含:一來源暫存器,其用以儲存包括N條通道之一輸入陣列;執行邏輯,其用以回應於一部分縮減指令之一接收而進行:在各通道中,執行包括於該通道中的一組輸入資料元件之一部分縮減操作,及產生包括N個輸出資料元件之一結果陣列;以及耦合至該處理器之一平台記憶體。
  17. 如請求項16之系統,其進一步包含用以接收該結果陣列之一目的地暫存器。
  18. 如請求項16之系統,其中該執行邏輯包含複數個執行單元,且其中該複數個執行單元平行執行N個部分縮減操作。
  19. 如請求項16之系統,其進一步包含用以解碼該部分縮減指令之一解碼器。
  20. 如請求項16之系統,其中該部分縮減指令係複數個部分縮減指令中之一者,其中該複數個部分縮減指令中之各者係與縮減操作類型及資料類型之一唯一組合相關聯。
TW105134777A 2015-12-15 2016-10-27 用於部分縮減操作之指令及邏輯 TW201723810A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/968,990 US20170168819A1 (en) 2015-12-15 2015-12-15 Instruction and logic for partial reduction operations

Publications (1)

Publication Number Publication Date
TW201723810A true TW201723810A (zh) 2017-07-01

Family

ID=59020031

Family Applications (1)

Application Number Title Priority Date Filing Date
TW105134777A TW201723810A (zh) 2015-12-15 2016-10-27 用於部分縮減操作之指令及邏輯

Country Status (5)

Country Link
US (1) US20170168819A1 (zh)
EP (1) EP3391201A4 (zh)
CN (1) CN108351785A (zh)
TW (1) TW201723810A (zh)
WO (1) WO2017105670A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI901441B (zh) * 2024-11-07 2025-10-11 晶心科技股份有限公司 向量處理電路與向量處理方法

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11579883B2 (en) * 2018-09-14 2023-02-14 Intel Corporation Systems and methods for performing horizontal tile operations
US10896043B2 (en) * 2018-09-28 2021-01-19 Intel Corporation Systems for performing instructions for fast element unpacking into 2-dimensional registers
US11294670B2 (en) 2019-03-27 2022-04-05 Intel Corporation Method and apparatus for performing reduction operations on a plurality of associated data element values
US11841822B2 (en) 2019-04-27 2023-12-12 Cambricon Technologies Corporation Limited Fractal calculating device and method, integrated circuit and board card
WO2020220935A1 (zh) * 2019-04-27 2020-11-05 中科寒武纪科技股份有限公司 运算装置
US11061741B2 (en) * 2019-07-16 2021-07-13 Nvidia Corporation Techniques for efficiently performing data reductions in parallel processing units
US20240004647A1 (en) * 2022-07-01 2024-01-04 Andes Technology Corporation Vector processor with vector and element reduction method
US20250208878A1 (en) * 2023-12-20 2025-06-26 Advanced Micro Devices, Inc. Accumulation apertures

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7346159B2 (en) * 2002-05-01 2008-03-18 Sun Microsystems, Inc. Generic modular multiplier using partial reduction
US8356185B2 (en) * 2009-10-08 2013-01-15 Oracle America, Inc. Apparatus and method for local operand bypassing for cryptographic instructions
KR101804008B1 (ko) * 2011-09-26 2017-12-01 인텔 코포레이션 벡터 산개-op 및 집결-op 기능을 제공하는 명령어 및 로직
US9619226B2 (en) * 2011-12-23 2017-04-11 Intel Corporation Systems, apparatuses, and methods for performing a horizontal add or subtract in response to a single instruction
WO2013101147A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Configurable reduced instruction set core
CN104204989B (zh) * 2012-03-30 2017-10-13 英特尔公司 用于选择向量计算的元素的装置和方法
US9588766B2 (en) * 2012-09-28 2017-03-07 Intel Corporation Accelerated interlane vector reduction instructions
US9348558B2 (en) * 2013-08-23 2016-05-24 Texas Instruments Deutschland Gmbh Processor with efficient arithmetic units

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI901441B (zh) * 2024-11-07 2025-10-11 晶心科技股份有限公司 向量處理電路與向量處理方法

Also Published As

Publication number Publication date
CN108351785A (zh) 2018-07-31
EP3391201A4 (en) 2019-11-13
WO2017105670A1 (en) 2017-06-22
US20170168819A1 (en) 2017-06-15
EP3391201A1 (en) 2018-10-24

Similar Documents

Publication Publication Date Title
TWI739772B (zh) 處理器、用於安全指令執行管線之方法、及運算系統
US10346170B2 (en) Performing partial register write operations in a processor
TWI733710B (zh) 用於重複發生相鄰聚集的處理器、方法和單元
CN108369516A (zh) 用于加载-索引和预取-分散操作的指令和逻辑
TW201729078A (zh) 用於以通道為基礎的跨步儲存操作之指令及邏輯
CN108292215A (zh) 用于加载-索引和预取-聚集操作的指令和逻辑
TWI723075B (zh) 用於向量置換的方法和處理器以及向量置換單元
TW201723810A (zh) 用於部分縮減操作之指令及邏輯
CN106575219B (zh) 针对用于处理运算的向量格式的指令和逻辑技术领域
TW201732581A (zh) 用於載入索引與集中操作的指令及邏輯
CN108292232A (zh) 用于加载索引和分散操作的指令和逻辑
TWI729029B (zh) 用於向量位元欄壓縮及擴展的指令及邏輯
CN108369518A (zh) 用于位字段寻址和插入的指令和逻辑
TW201723817A (zh) 用於取得多重向量元素操作之指令及邏輯
TW201732619A (zh) 仿真的訊息通知中斷(msi)中斷處置
TW201729081A (zh) 用於以向量為基礎的位元操控之指令及邏輯
TW201729077A (zh) 用於設置多重向量元素操作之指令及邏輯
US20180004512A1 (en) System and Method for Out-of-Order Clustered Decoding
US9851976B2 (en) Instruction and logic for a matrix scheduler
TW201723815A (zh) 用於偶數與奇數向量取得操作之指令及邏輯
TW201729079A (zh) 用於檢測浮點消除效應之指令及邏輯
US20170177358A1 (en) Instruction and Logic for Getting a Column of Data
CN108292216A (zh) 用于压缩和循环的指令和逻辑