TWI539373B - 用以提供向量子位元解壓縮功能之方法、機器可讀取媒體、處理器及 處理系統 - Google Patents

用以提供向量子位元解壓縮功能之方法、機器可讀取媒體、處理器及 處理系統 Download PDF

Info

Publication number
TWI539373B
TWI539373B TW103125319A TW103125319A TWI539373B TW I539373 B TWI539373 B TW I539373B TW 103125319 A TW103125319 A TW 103125319A TW 103125319 A TW103125319 A TW 103125319A TW I539373 B TWI539373 B TW I539373B
Authority
TW
Taiwan
Prior art keywords
bit
vector
sub
elements
byte
Prior art date
Application number
TW103125319A
Other languages
English (en)
Other versions
TW201519087A (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 TW201519087A publication Critical patent/TW201519087A/zh
Application granted granted Critical
Publication of TWI539373B publication Critical patent/TWI539373B/zh

Links

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/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/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
    • 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/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)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Description

用以提供向量子位元解壓縮功能之方法、機器可讀取媒體、處理器及 處理系統 發明領域
本文揭示係有關於處理邏輯、微處理器、及相聯結的指令集架構之領域,其當由該處理器或其它處理邏輯執行時進行邏輯、數學、或其它函數運算。更明確言之,本文揭示係有關於用以提供向量子位元解壓縮功能之指令及邏輯。
發明背景
近代處理器經常包括指令以提供運算密集的操作,但提供高階資料並列性,其可使用各種資料儲存裝置諸如,單指令多資料(SIMD)向量暫存器經由有效具現而予探勘。於SIMD執行中,單一指令在多個資料元件上併同地或同時地操作。如此典型地係藉擴延各種資源諸如暫存器及算術邏輯單元(ALU)之寬度具現,允許其保有或分別地在多個資料元件上操作。
中央處理單元(CPU)可提供此種並列硬體以支援向量之SIMD處理。一向量為保有多個連續資料元件之一資 料結構。大小L的一向量暫存器可含有N個大小M的向量元件,於該處N=L/M。例如,一64-位元組向量暫存器可劃分成(a)64向量元件,各個元件保有占有1位元組的一資料項目,(b)32向量元件以保有各自占有2位元組(或一個「字元」)的資料項目,(c)16向量元件以保有各自占有4位元組(或一個「雙字組」)的資料項目,或(d)8向量元件以保有各自占有8位元組(或一個「四字組」)的資料項目。
多種應用具有大量資料層級並列性且可從SIMD支援中獲益。但有些應用可具有資料元件其係比8-位元更小及/或與記憶體內之8-位元(位元組)邊界位置不對齊。為了維持SIMD效率,在被並列處理之前,此等子位元組元件須被解壓縮至各自占有一個位元組。結果,此等應用從SIMD操作可獲得略為有限的效能效益。
舉例言之,資料庫計算為用在及/或由許多型別之應用所使用的常見操作。在一紀錄內部之有些欄位可識別少於256選擇中之一者,例如:(7-位元)摩托車騎士的年齡,(6-位元)全美50州中之一州,(5-位元)一個月中之幾號,(4-位元)一年中的月份,(3-位元)星期幾,(2-位元)基因體序列中之四個鹼基核苷酸中之一者,及(1-位元)性別。特別用於極大型資料庫,此等欄位常被壓縮以少於8-位元表示以占用較少的儲存空間。因此,當計數、分類、計算或比較資料庫中具有相同特性的族群時,要求用於處理的各個子位元組欄位首先須經解壓縮。此點恰是造成併同地或同時地處理多個資料(亦即使用SIMD操作)極其困難的該種情 況。
至今為止尚未充分探勘此等子位元組表示型態需要之潛在解決方案,諸如解壓縮及相關處理困難。
依據本發明之一實施例,係特地提出一種處理器,其包含:一解碼階段,用以解碼一第一指令指明一向量子位元組解壓縮操作、位元組元件之一目的地向量、子位元組元件之一來源及一子位元組元件大小;以及一或多個執行單元,回應於該經解碼之第一指令以進行下列動作:從該來源,將含有一第一位元對齊之一第一子位元組元件之一第一兩個位元組混洗入一第一向量元件之一最低有效部分,及將含有該相同第一位元對齊之一第二子位元組元件之一第二兩個位元組混洗入該第一向量元件之一最高有效部分;從該來源,將含有一第二位元對齊之一第三子位元組元件之一第三兩個位元組混洗入一第二向量元件之一最低有效部分,及將含有該相同第二位元對齊之一第四子位元組元件之一第四兩個位元組混洗入該第二向量元件之一最高有效部分;移位該第一向量元件達一第一移位計數及該第二向量元件達一第二移位計數以將該等子位元組元件對齊至其個別位元組之一最低有效位元;以及將一位元組從該等經移位之第一及第二向量元件的最低有效部分各自混洗入一第一目的地向量元件及從該等經移位之第一及第二向量元件的最高有效部分各自混洗入一第二目的地向量元件以至少部分地恢復其原始子位元組順序。
100‧‧‧電腦系統
102、200‧‧‧處理器
104‧‧‧層級1(L1)內部快取記憶體
106、145、164、208、210‧‧‧暫存器檔案
108、142、162、212-224‧‧‧執行單元
109、143‧‧‧壓縮指令集
110‧‧‧處理器匯流排
112‧‧‧圖形控制器
114‧‧‧加速圖形埠(AGP)互連體
116‧‧‧記憶體控制器中樞器(MCH)、系統邏輯晶片
118‧‧‧記憶體介面
120‧‧‧記憶體
122‧‧‧輸入/輸出(I/O)
124‧‧‧資料儲存裝置
126‧‧‧無線收發器
128‧‧‧快閃BIOS、韌體中樞器
130‧‧‧輸入/輸出控制中樞器(ICH)
134‧‧‧網路控制器
140‧‧‧電腦系統、資料處理系統
141‧‧‧匯流排
144、165、165B‧‧‧解碼器
146‧‧‧同步動態隨機存取記憶體(SDRAM)控制
147‧‧‧靜態隨機存取記憶體(SRAM)控制
148‧‧‧叢發快閃記憶體介面
149‧‧‧PCMCIA/CF卡控制
150‧‧‧液晶顯示器(LCD)控制
151‧‧‧直接記憶體存取(DMA)控制器
152‧‧‧替代匯流排主機介面
153‧‧‧I/O匯流排
154‧‧‧I/O橋接器
155‧‧‧通用非同步接收器/發射器(UART)
156‧‧‧通用串列匯流排(USB)
157‧‧‧藍牙無線UART
158‧‧‧I/O擴增介面
159、170‧‧‧處理核心
160‧‧‧資料處理系統
161‧‧‧SIMD共處理器
163‧‧‧指令集
166‧‧‧主處理器
167‧‧‧快取記憶體
168‧‧‧輸出入系統
169‧‧‧無線介面
171‧‧‧共處理器匯流排
201‧‧‧前端
202‧‧‧快速排程器
203‧‧‧亂序執行引擎
204‧‧‧慢/通用浮點排程器
206‧‧‧簡單浮點排程器
211‧‧‧執行區塊
212、214‧‧‧位址生成單元(AGU)
216、218‧‧‧快速ALU
220‧‧‧慢ALU
222‧‧‧浮點ALU
224‧‧‧浮點移動單元
226‧‧‧指令預提取器
228‧‧‧指令解碼器
230‧‧‧軌跡快取
232‧‧‧微碼ROM
234‧‧‧uop佇列
310‧‧‧壓縮位元組格式
320‧‧‧壓縮字元格式
330‧‧‧壓縮雙字組格式
341‧‧‧壓縮半
342‧‧‧壓縮單
343‧‧‧壓縮雙
344‧‧‧無符號壓縮位元組表示型態
345‧‧‧有符號壓縮位元組表示型態
346‧‧‧無符號壓縮字元表示型態
347‧‧‧有符號壓縮字元表示型態
348‧‧‧無符號壓縮雙字組表示型態
349‧‧‧有符號壓縮雙字組表示型態
360、370、380、397‧‧‧操作編碼(opcode)格式
361、362、371、372、383、384、387、388‧‧‧欄位
363、373‧‧‧MOD欄位
364、365、374、375、385、390‧‧‧來源運算元識別符
366、376、386‧‧‧目的地運算元識別符
381‧‧‧條件欄位
382、389‧‧‧CDP opcode欄位
391‧‧‧VEX前綴符位元組、欄位
392‧‧‧OP欄位
393‧‧‧定標指數基礎(SIB)識別符
394‧‧‧DISP位移識別符
395‧‧‧IMM即刻位元組
396‧‧‧EVEX前綴符位元組
398‧‧‧EVEX格式、opcode格式
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‧‧‧執行叢集
462‧‧‧執行單元
464‧‧‧記憶體存取單元
470‧‧‧記憶體單元
472‧‧‧資料TLB單元
474‧‧‧資料快取單元
476‧‧‧層級2(L2)快取單元
490‧‧‧處理器核心
500‧‧‧多核心處理器
502A-N‧‧‧核心
504A-N‧‧‧快取單元
506‧‧‧共享快取單元
508‧‧‧整合式圖形邏輯
510‧‧‧系統代理器
512‧‧‧以環為基礎之互連體單元
514、772、782‧‧‧整合式記憶體控制器(IMC)單元
516‧‧‧匯流排控制器單元
600、700、800‧‧‧系統
610、615、770、780、870、880、1000、1215‧‧‧處理器
620‧‧‧圖形記憶體控制中樞器(GMCH)
640、732、734、832、834‧‧‧記憶體
645‧‧‧顯示器
650‧‧‧輸入/輸出控制中樞器(ICH)
660‧‧‧外部圖形裝置
670‧‧‧周邊裝置
695‧‧‧前端匯流排(FSB)
714、814‧‧‧I/O裝置
716‧‧‧第一匯流排
718‧‧‧匯流排橋接器
720‧‧‧第二匯流排
722‧‧‧鍵盤/滑鼠
724‧‧‧音訊I/O
727‧‧‧通訊裝置
728‧‧‧儲存裝置
730‧‧‧指令/碼及資料
738‧‧‧高效能圖形電路
739‧‧‧高效能圖形介面
750‧‧‧點對點互連體
752、754‧‧‧P-P介面
776、778、786、788、794、798‧‧‧P-P介面電路
790、890‧‧‧晶片組
796‧‧‧介面
815‧‧‧舊式I/O
872、882‧‧‧I/O控制邏輯(CL)
900‧‧‧單晶片系統(SoC)
902‧‧‧互連體單元
910‧‧‧應用程式處理器
920‧‧‧媒體處理器
924、1015‧‧‧影像處理器
926‧‧‧音訊處理器
928、1020‧‧‧視訊處理器
930‧‧‧SRAM單元
932‧‧‧直接記憶體存取(DMA)單元
1005‧‧‧CPU
1010‧‧‧GPU
1025‧‧‧USB控制器
1030‧‧‧UART控制器
1035‧‧‧SPI/SDIO控制器
1040‧‧‧顯示裝置
1045‧‧‧高畫質多媒體介面(HDMI)控制器
1050‧‧‧MIPI控制器
1055‧‧‧快閃記憶體控制器
1060‧‧‧雙倍資料速率(DDR)控制器
1065‧‧‧安全引擎
1070‧‧‧整合式晶片間聲音/積體電路晶片間(I2S/I2C)介面
1110‧‧‧硬體或軟體模型
1120‧‧‧模擬軟體
1130‧‧‧儲存媒體
1140‧‧‧記憶體
1150‧‧‧有線連結
1160‧‧‧無線連結
1205‧‧‧程式
1210‧‧‧模擬邏輯
1302‧‧‧高階語言
1304‧‧‧x86編譯器
1306‧‧‧x86二進制碼
1308‧‧‧另一指令集編譯器
1310‧‧‧另一指令集二進制碼
1312‧‧‧指令轉換器
1314‧‧‧沒有一x86指令集核心之處理器
1316‧‧‧有至少一個x86指令集核心之處理器
1401、1402、1403‧‧‧指令及/或方法
1404、1405、1406、1409、1427、1428、1429‧‧‧混洗處理方塊
1407、1408、1417、1418‧‧‧移位處理方塊
1410、1411‧‧‧來源
1415、1416、1420、1421、1422、1425、1426、1430、1431、1435、1440、1441、1450‧‧‧向量
1433‧‧‧OR處理方塊
1434‧‧‧摻混處理方塊
1443、1444‧‧‧AND處理方塊
1501、1502、1503‧‧‧處理
1510-1595‧‧‧處理方塊
1601、1602、1603‧‧‧設備、執行設備
1605、1609、1619‧‧‧混洗器
1611‧‧‧來源向量
1615、1625、1626‧‧‧中間向量暫存器
1617‧‧‧移位器
1630、1631、1635、1641、1650‧‧‧向量暫存器
1634‧‧‧摻混器
1644‧‧‧算術邏輯單元(ALU)
1661、1663、1665、1667、1669‧‧‧UOP、微碼序列
本發明係於附圖之各幅圖中舉例說明但非限制性。
圖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為用以執行指令其提供SIMD向量子位元組解壓縮功能之一IP核心發展系統之一個實施例之一方塊圖。
圖12例示提供SIMD向量子位元組解壓縮功能之一架構模擬系統之一個實施例。
圖13例示用以轉譯指令其提供SIMD向量子位元組解壓縮功能之一系統之一個實施例。
圖14A例示使用一指令及/或方法以提供SIMD向 量子位元組解壓縮功能之一範例的一個實施例之一流程圖。
圖14B例示使用一指令及/或方法以提供SIMD向量子位元組解壓縮功能之一範例的另一實施例之一流程圖。
圖14C例示使用一指令及/或方法以提供SIMD向量子位元組解壓縮功能之一範例的另一替代實施例之一流程圖。
圖15A例示用以提供SIMD向量子位元組解壓縮功能之一方法的一個實施例之一流程圖。
圖15B例示用以提供SIMD向量子位元組解壓縮功能之一方法的一替代實施例之一流程圖。
圖15C例示用以提供SIMD向量子位元組解壓縮功能之一方法的另一替代實施例之一流程圖。
圖16A例示用以提供SIMD向量子位元組解壓縮功能以執行一指令或方法之設備之一個實施例。
圖16B例示用以提供SIMD向量子位元組解壓縮功能以執行一指令或方法之設備之一替代實施例。
圖16C例示用以提供SIMD向量子位元組解壓縮功能以執行一指令或方法之設備之另一替代實施例。
較佳實施例之詳細說明
後文詳細說明部分揭示用以提供SIMD向量子位元組解壓縮功能之方法、設備、指令及邏輯。實施例包括 處理器用於將含有具第一位元對齊之一第一子位元組元件之一第一及第二位元組混洗入一第一向量元件之一最低有效部分,及含有具該相同第一位元對齊之一第二子位元組元件之一第三及第四位元組混洗入該第一向量元件之一最高有效部分。處理繼續進行將含有具第二位元對齊之一第三子位元組元件之一第五及第六位元組混洗入一第二向量元件之一最低有效部分,及含有具該相同第二位元對齊之一第四子位元組元件之一第七及第八位元組混洗入該第二向量元件之一最高有效部分。然後移位該第一向量元件達一第一移位計數及該第二向量元件達一第二移位計數,將子位元組元件對齊其個別位元組之該最低有效位元。然後處理繼續進行將一位元組從該等經移位之第一及第二向量元件之最低有效部分各自混洗入一目的地向量元件之位元組位置及從該等經移位之第一及第二向量元件之最高有效部分各自混洗入另一目的地向量元件之位元組位置以恢復其原始子位元組順序。此時或其後,其個別位元組之該等最高有效位元視需要可被清除或符號擴延以複製該原始未經壓縮值。依據若干實施例,該SIMD向量子位元組解壓縮功能可提供為單一SIMD巨集指令,其可實行為一序列之微指令(或micro-ops或uops)。依據若干替代實施例,該SIMD向量子位元組解壓縮功能可提供為一序列之SIMD巨集指令。
於後文描述中,列舉無數特定細節諸如處理邏輯、處理器型別、微架構狀況、事件、致動機制等以供更 加徹底地瞭解本發明之實施例。但熟諳技藝人士將瞭解可無此等特定細節而實施本發明。此外,若干眾所周知之結構、電路等並不以細節顯示以免不必要地遮掩了本發明之實施例。
雖然後文實施例係參考一處理器描述,但其它實施例可適用於其它型別之積體電路及邏輯裝置。本發明之實施例之類似技術及教示可應用至可從較高管線通量及改良效能獲益的其它型別之電路或半導體裝置。本發明之實施例之教示可應用至實行資料操控的任何處理器或機器。但本發明並不限於實行512位元、256位元、128位元、64位元、32位元、或16位元資料操作之處理器或機器,而可應用至其中執行資料之操控或管理的任何處理器或機器。此外,後文詳細說明部分提供實施例,及附圖顯示用於例示目的之各種實施例。但此等實施例不應解譯為限制性意義,原因在於其僅意圖提供本發明之實施例範例而非提供本發明之實施例之全部可能具現之一排它列表。
雖然下列實施例描述於執行單元及邏輯電路脈絡中之處理及分配指令,但本發明之其它實施例可藉儲存在一機器可讀取有形媒體上之資料及/或指令完成,該等資料及/或指令當藉一機器執行時使得該機器實行符合本發明之至少一個實施例的功能。於一個實施例中,與本發明之實施例相聯結的功能係以機器可執行指令實施。該等指令可用以使得以該等指令程式規劃的一通用或特用處理器實行本發明之步驟。本發明之實施例可提供為電腦程式產 品或軟體,其可包括一機器或電腦可讀取媒體,其上儲存有指令,該等指令可用以規劃一電腦(或其它電子裝置)以實行依據本發明之一實施例一或多項操作。另外,本發明之實施例之步驟可藉含有固定功能邏輯用以實行該等步驟之特定硬體組件,或藉已規劃電腦組件與固定功能硬體組件之任一項組合執行。
用以規劃邏輯以實行本發明之實施例的指令可儲存於該系統之一記憶體中,諸如DRAM、快取記憶體、快閃記憶體、或其它儲存裝置。又復,指令可透過網路分送或藉由其它電腦可讀取媒體分送。因而一機器可讀取媒體可包括以由一機器(例如電腦)可讀取形成儲存或傳輸資訊的任何機構,但非受此所限,軟碟、光碟、雷射光碟、光碟-唯讀記憶體(CD-ROM)、及磁光碟、唯讀記憶體(ROM)、隨機存取記憶體(RAM)、可抹除可規劃唯讀記憶體(EPROM)、可電氣抹除可規劃唯讀記憶體(EEPROM)、磁卡或光卡、快閃記憶體、或用以藉電氣、光學、聲學或其它形式之傳播信號(例如載波、紅外線信號、數位信號等)透過網際網路傳輸資訊的有形機器可讀取媒體。據此,該電腦可讀取媒體包括適合用以由一機器(例如電腦)可讀取形成儲存或傳輸資訊的任何型別之有形機器可讀取媒體。
一設計可通過各種階段,從創新至模擬至製造。表示一設計之資料可以多種方式表示該設計。首先,如同於模擬中有用,硬體可使用硬體描述語言或其它功能描述語言表示。此外,在設計過程的某些階段可產生具有邏輯 閘及/或電晶體閘之一電路層級模型。又復,在某個階段,大部分設計到達表示在該硬體模型中各個裝置之實體配置之一資料層面。以使用習知半導體製造技術為例,表示該硬體模型之資料可為針對用以製造該積體電路之遮罩,指明於不同遮罩層上是否存在有各種特性件。於該設計之任何表示型態中,該資料可儲存於任何形式之機器可讀取媒體內。一記憶體或磁性或光學儲存裝置諸如碟片可為該機器可讀取媒體用以儲存透過經調變之或否則經生成以發送此種資訊之光波或電波傳輸之資訊。當指示或攜載該碼或該設計之一電氣載波被發射時,至執行該電氣信號之複製、緩衝、或重新發射之程度,做出新複本。如此,一通訊提供者或一網路提供者可在一有形機器可讀取媒體上至少暫時地儲存一物件,編碼入一載波具體實施本發明之實施例之技術的資訊。
於近代處理器中,多個不同執行單元用以處理與執行多種碼及指令。並非全部指令皆相等,有些指令的完成較快,而其它指令耗用許多時鐘週期才能完成。指令之通量愈快,則處理器之總體效能愈佳。因而較佳地係儘快地有許多指令被執行。但某些指令具有較大複雜度,要求較多執行時間及處理器資源。舉例言之,有些浮點指令、載入/儲存操作、資料移動等。
因更多電腦系統之用於網際網路、文字、及多媒體應用,隨著時間已經導入額外處理器支援。於一個實施例中,一指令集可與一或多個電腦架構相聯結,包括資料 型別、指令、暫存器架構、定址模式、記憶體架構、中斷及例外處理、及外部輸入及輸出(I/O)。
於一個實施例中,該指令集架構(ISA)可由一或多個微架構具現,其包括用以具現一或多個指令集之處理器邏輯及電路。據此,具有不同微架構的處理器可分享一共通指令集之至少一部分。舉例言之,英特爾®奔騰4處理器、英特爾®核心TM處理器、及得自加州桑尼維爾超微公司之處理器具現x86指令集之接近相同版本(較新版本已經增加某些延伸),但有不同的內部設計。同理,由其它處理器發展公司諸如ARM控股公司、MIPS、或其被授權人或技術採用者設計的處理器可共享至少部分之一共用指令集,但可包括不同的處理器設計。舉例言之,ISA之相同暫存器架構可使用新穎的或眾所周知的技術於不同微架構以不同方式具現,包括專用實體暫存器、使用暫存器重新命名機制(例如使用暫存器別名表(RAT)、整序緩衝器(ROB)及報廢暫存器檔案)之一或多個動態配置實體暫存器。於一個實施例中,暫存器可包括一或多個暫存器、暫存器架構、暫存器檔案、或可由或無法由軟體程式師定址之其它暫存器集合。
於一個實施例中,一指令可包括一或多個指令格式。於一個實施例中,一指令格式可指示各種欄位(位元數目、位元位置等)以指明欲實行的操作及欲於其上實行操作之運算元等。有些指令格式可進一步藉指令樣板(或子格式)分解定義。舉例言之,一給定指令格式之指令樣板可經定義而具有該指令格式之欄位的不同子集及/或可經定義而 具有差異解譯的一給定欄位。於一個實施例中,一指令係使用一指令格式表示(及若定義時,以該指令格式之該等指令樣板中之一給定者表示)及指明與指示該操作及將在其上實行操作之該等運算元。
科學、財務金融、自動向量化通用、RMS(辨識、採礦、及合成)、及視覺及多媒體應用(例如2D/3D繪圖、影像處理、視訊壓縮/解壓縮、語音辨識演算法及音訊操控)可能要求在大量資料項上執行相同操作。於一個實施例中,單指令多資料(SIMD)係指一型別之指令其造成一處理器在多個資料元件上執行操作。SIMD技術可用於處理器,能夠將一暫存器內之該等位元邏輯劃分成多個固定大小或可變大小資料元件,其各自表示一分開值。舉例言之,於一個實施例中,64-位元暫存器內之位元可組織為含有四個分開16-位元資料元件的一來源運算元,其各自表示一分開16-位元值。此型資料可稱作「壓縮」資料型別或「向量」資料型別,及此資料型別之運算元係稱作壓縮資料運算元或向量運算元。於一個實施例中,一壓縮資料項目或向量可為儲存於單一暫存器內部之序列之壓縮資料元件,及一壓縮資料運算元或向量運算元可為一SIMD指令之一來源或目的地運算元(或「壓縮資料指令」或「向量指令」)。於一個實施例中,一SIMD指令指明欲在兩個來源向量運算元上執行的單一向量操作,以生成具有相同或相異大小,具有相同或相異之資料元件數目,及呈相同或相異之資料元件順序之一目的地向量運算元(又稱結果向量運算元)。
SIMD技術諸如,由具有含x86之一指令集的英特爾®核心TM處理器、MMXTM、串流SIMD擴延(SSE)、SSE2、SSE3、SSE4.1、及SSE4.2指令、ARM處理器、諸如具有指令集含向量浮點(VFP)及/或尼翁指令之ARM皮質®家族處理器、及MIPS處理器,諸如中國科學院計算技術研究所(ICT)發展的龍芯家族處理器所採用者已經使得應用效能有顯著改良(核心TM及MMXTM為加州聖塔克拉拉英特爾公司之註冊商標或商標)。
於一個實施例中,目的地及來源暫存器/資料為通稱以表示相對應資料或操作之來源及目的地。於若干實施例中,其可藉暫存器、記憶體、或具有該等描繪者之其它名稱或功能的其它儲存區具現。舉例言之,於一個實施例中,「DEST1」可為暫時儲存暫存器或其它儲存區,而「SRC1」及「SRC2」可為第一及第二來源儲存暫存器或其它儲存區,等等。於其它實施例中,SRC及DEST儲存區中之二或多者可相對應於在相同儲存區(例如SIMD暫存器)內部之不同資料儲存元件。於一個實施例中,來源暫存器中之一者也可作為目的地暫存器,例如,藉將在第一及第二來源資料上執行的一操作結果回寫至用作為一目的地暫存器的該等兩個來源暫存器中之一者。
圖1A為依據本發明之一實施例形成有一處理器之電腦系統實施例之一方塊圖,該處理器包括執行單元以執行一指令。依據本發明,諸如於此處描述之實施例中,系統100包括一組件,諸如一處理器102用以採用執行單元 包括實行處理資料之演算法的邏輯。系統100之代表例為以得自加州聖塔克拉拉英特爾公司之奔騰® III、奔騰® 4、席翁TM、伊塔寧®、叉標TM及/或強臂TM微處理器為基礎之處理系統,但也可使用任何其它系統(包括具有其它微處理器之PC、工程工作站、機上盒等)。於一個實施例中,試樣系統100可執行得自華盛頓州李德蒙微軟公司之視窗TM作業系統之一版本,但也可使用其它作業系統(例如UNIX及Linux)、嵌入式軟體、及/或圖形使用者介面。如此,本發明之實施例並不限於硬體電路與軟體之任何特定組合。
實施例並不限於電腦系統。本發明之替代實施例可用於其它裝置,諸如掌上型裝置及嵌入式應用。掌上型裝置之若干實施例包括手機、網際網路協定裝置、數位相機、個人數位助理器(PDA)、及掌上型PC。嵌入式應用可包括微控制器、數位信號處理器(DSP)、單晶片系統、網路電腦(NetPC)、機上盒、網路中樞器、廣域網路(WAN)交換器、或依據至少一個實施例能夠執行一或多個指令之任何其它系統。
圖1A為依據本發明之一個實施例形成有一處理器102之一電腦系統100之方塊圖,其包括一或多個執行單元108以實行一演算法以執行至少一個指令。一個實施例可以單處理器桌上型電腦或伺服器系統之脈絡描述,但替代實施例可含括於多處理器系統。系統100為「中樞器」系統架構之一實施例。電腦系統100包括一處理器102以處理資料信號。該處理器102可為複雜指令集電腦(CISC)微處理 器、精簡指令集電腦(RISC)微處理器、極長指令字(VLIW)微處理器、具現一指令集之組合的處理器、或任何其它處理器裝置,諸如數位信號處理器。該處理器102係耦接至一處理器匯流排110,其可在系統100中之該處理器102與其它組件間傳輸資料信號。系統100之元件執行熟諳技藝人士眾所周知之習知功能。
於一個實施例中,處理器102包括層級1(L1)內部快取記憶體104。取決於該架構,處理器102可具有單一內部快取記憶體或內部快取記憶體之多個層級。另外,於另一個實施例中,快取記憶體可駐在處理器102外部。取決於特定具現及需要,其它實施例也可包括內部與外部快取記憶體之一組合。暫存器檔案106可將不同型資料儲存於各種暫存器,包括整數暫存器、浮點暫存器、狀態暫存器、及指令指標器暫存器。
執行單元108包括執行整數運算及浮點運算的邏輯也駐在處理器102內。處理器102也包括微碼(ucode)ROM其儲存某些巨集指令之微碼。針對一個實施例,執行單元108包括處理一壓縮指令集109之邏輯。藉由含括壓縮指令集109於一通用處理器102之指令集中,連同相聯結的電路以執行該等指令,由許多多媒體應用所使用的操作可使用於一通用處理器102之壓縮資料進行。如此,藉由使用一處理器的資料匯流排之全頻寬於在壓縮資料上執行操作,許多多媒體應用可被加速且更有效地執行。如此可免除需要轉移較小的資料單元橫過處理器的資料匯流排以一次執行 一個資料元件的一或多個操作。
執行單元108之替代實施例也可用於微控制器、嵌入式處理器、圖形裝置、DSP、及其它型別之邏輯電路。系統100包括一記憶體120。記憶體120可為動態隨機存取記憶體(DRAM)裝置、靜態隨機存取記憶體(SRAM)裝置、快閃記憶體裝置、或其它記憶體裝置。記憶體120可儲存指令及/或可由處理器102執行的資料信號表示之資料。
系統邏輯晶片116係耦接至處理器匯流排110及記憶體120。於該具體實施例中,系統邏輯晶片116為記憶體控制器中樞器(MCH)。處理器102可透過處理器匯流排110與MCH 116通訊。MCH 116提供高頻寬記憶體路徑118給記憶體120用於指令及資料儲存及用於圖形指令、資料及紋理之儲存。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至輸入/輸出控制中樞器(ICH)130。ICH 130透過本地I/O匯流排提供直接連結給某些I/O裝置。本地I/O匯流排為用以連結周邊裝置至記憶體120、晶片組、及處理器102的一高速I/O匯流排。有些實施例為音訊控制器、韌體中樞 器(快閃BIOS)128、無線收發器126、資料儲存裝置124、含有使用者輸入及鍵盤介面之舊式I/O控制器、串列擴充埠諸如通用串列匯流排(USB)、及一網路控制器134。資料儲存裝置124可包含硬碟機、軟碟機、CD-ROM裝置、快閃記憶體裝置、或其它大容量儲存裝置。
針對一系統之另一實施例,依據一個實施例之一指令可用於單晶片系統。單晶片系統之一個實施例包含一處理器及一記憶體。針對一個此種系統之記憶體為快閃記憶體。該快閃記憶體可位在處理器及其它系統組件的相同晶粒上。此外,其它邏輯區塊諸如記憶體控制器或圖形控制器也可位在單晶片系統上。
圖1B例示具現本發明之一個實施例的原理之一資料處理系統140。熟諳技藝人士將容易瞭解不背離本發明之實施例之範圍,此處描述之實施例可用於其它處理系統。
電腦系統140包含能夠執行至少一個依據一個實施例之指令的一處理核心159。針對一個實施例,處理核心159表示任何架構型別之一處理單元,包括但非僅限於CISC、RISC或VLIW型架構。處理核心159也適合用於一或多個方法技術中之製造,及藉以足夠細節表示於機器可讀取媒體上製造,適用於輔助該製造。
處理核心159包含一執行單元142、一集合之暫存器檔案145、及一解碼器144。處理核心159也包括並非瞭解本發明之實施例所必需的額外電路(圖中未顯示)。執行單元142係用以執行由處理核心159所接收的指令。除了執行典 型處理器指令之外,執行單元142可執行壓縮指令集143中之指令以進行壓縮資料格式上之操作。壓縮指令集143包括用以執行本發明之實施例之指令及其它壓縮指令。執行單元142係藉一內部匯流排耦接至暫存器檔案145。暫存器檔案145表示處理核心159上用以儲存資訊包括資料的一儲存區。如前述,用以儲存壓縮資料的儲存區並無特殊限制。執行單元142耦接至解碼器144。解碼器144係用以將處理核心159接收的指令解碼成控制信號及/或微碼進入點。回應於此等控制信號及/或微碼進入點,執行單元142執行適當操作。於一個實施例中,解碼器係用以解譯該指令之操作碼,其將指示在該指令內部指示的相對應資料上須執行何種操作。
處理核心159係耦合匯流排141以與各種其它系統裝置通訊,其可包括,但非限制性,例如SDRAM控制146、SRAM控制147、叢發快閃記憶體介面148、個人電腦記憶卡國際協會(PCMCIA)/閃存(CF)卡控制149、液晶顯示器(LCD)控制150、直接記憶體存取(DMA)控制器151、及其它匯流排主機介面152。於一個實施例中,資料處理系統140也可包含一I/O橋接器154用以透過一I/O匯流排153與各種I/O裝置通訊。此等I/O裝置可包括但非僅限於,例如,通用非同步接收器/發射器(UART)155、通用串列匯流排(USB)156、藍牙無線UART 157及I/O擴充介面158。
資料處理系統140之一個實施例提供用於行動、網路及/或無線通訊及能夠執行SIMD操作包括文字串比較 操作的一處理核心159。處理核心159可以各種音訊、視訊、成像及通訊演算法程式規劃,包括離散變換,諸如華許-哈德瑪變換、快速富利葉變換(FFT)、離散餘弦變換(DCT)、及其個別反變換;壓縮/解壓縮技術諸如色彩空間變換、視訊編碼移動估計、或視訊解碼移動補償;及調變/解調(MODEM)功能諸如脈衝編碼調變(PCM)。
圖1C例示能夠執行指令以提供SIMD向量子位元組解壓縮功能之一資料處理系統之另一替代實施例。依據一個替代實施例,資料處理系統160可包括一主處理器166、一SIMD共處理器161、一快取記憶體167、及一輸入/輸出系統168。該輸入/輸出系統168可選擇性地耦接至一無線介面169。依據一個實施例SIMD共處理器161能夠執行操作包括指令。處理核心170可適合用於一或多個方法技術中之製造,及藉以足夠細節表示於機器可讀取媒體上製造,適用於輔助全部或部分資料處理系統160包括處理核心170的製造。
針對一個實施例,SIMD共處理器161包含一執行單元162及一集合之暫存器檔案164。主處理器166之一個實施例包含一解碼器165以辨識指令集163的指令,包括依據一個實施例由執行單元162執行的指令。針對替代實施例,SIMD共處理器161也包含至少部分解碼器165B以解碼指令集163的指令。處理核心170也包括額外電路(圖中未顯示),此乃並非瞭解本發明之實施例所必需。
於操作中,主處理器166執行一串流之資料處理 指令,其控制通用類型之資料處理操作包括與快取記憶體167及輸入/輸出系統168互動。嵌置於資料處理指令之串流內部者為SIMD共處理器指令。主處理器166之解碼器165辨識此等SIMD共處理器指令為須由附接的SIMD共處理器161處理的一型指令。據此,主處理器166簽發此等SIMD共處理器指令(或表示SIMD共處理器指令的控制信號)在共處理器匯流排171上,從該處該等指令由任何附接的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或uops)。於其它實施例中,解碼器將該指令剖析成操作碼及相對應資料及控制欄位,依據一個實施例由微架構用以執行操作。於一個實施例中,軌跡快取記憶體230取解碼的uops及組裝成程式有序序列或軌跡於該uop佇列234中以供執行。當該軌跡快取記憶體230遭逢一複合指令時,微碼ROM 232提供完成操作需要的uops。
有些指令被轉換成單一微操作,而其它指令需要數個微操作以完成完整操作。於一個實施例中,若需要多於四個微操作以完成一指令,則解碼器228存取微碼ROM 232以完成指令。針對一個實施例,一指令可解碼成少數微操作用以於指令解碼器228處理。於另一個實施例中,若需多個微操作以完成該操作,則一指令可儲存於微碼ROM 232內部。軌跡快取記憶體230係指一進入點可規劃邏輯陣列(PLA)以決定一正確微指令指標器,依據一個實施例用以讀取該微碼序列以完成來自微碼ROM 232之一或多個指令。微碼ROM 232完成針對一指令定序微操作之後,該機器的前端201恢復自該軌跡快取記憶體230提取微操作。
亂序執行引擎203為指令準備執行之處。亂序執行邏輯具有多個緩衝器以平順化及重新排序指令流以當指令沿管線前進且排程以供執行時最佳化其效能。配置器邏輯配置各個微操作需要以便執行的該等機器緩衝器及資源。暫存器重新命名邏輯重新命名邏輯暫存器成為一暫存器檔案中之分錄。配置器也針對在指令排程器前方兩個微操作佇列中之一者中的各個微操作配置一分錄,一個用於記憶體操作及一個用於非記憶體操作:記憶體排程器、快速排程器202、緩慢/通用浮點排程器204、及簡單浮點排程器206。微操作排程器202、204、206根據其相依性輸入暫存器運算元來源之易得性及微操作完成其操作所需的執行資源之可利用性而決定何時準備執行一微操作。一個實施例之快速排程器202可在該主時鐘週期之各半上排程,而其它排程器針對每個主處理器時鐘週期則只能排程一次。排程器仲裁調度埠以排程微操作以供執行。
暫存器檔案208、210位在排程器202、204、206與執行區塊211中的執行單元212、214、216、218、220、222、224間。有一分開暫存器檔案208、210分別用於整數及浮點操作。一個實施例的各個暫存器檔案208、210也包括旁通網路,其可繞道或前傳尚未寫入暫存器檔案的剛完成結果至新的相依性微操作。整數暫存器檔案208及浮點暫存器檔案210也能與另一者通訊資料。針對一個實施例,整數暫存器檔案208分裂成兩個分開的暫存器檔案,一個暫存器檔案用於低排序之32位元資料,及第二暫存器檔案用於 高排序之32位元資料。一個實施例之浮點暫存器檔案210具有128位元寬分錄,原因在於浮點指令典型地具有寬64至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位元x64位元浮點除法器以執行除法、平方根、及其餘微操作。針對本發明之實施例,涉及浮點值之指令可使用浮點硬體處理。於一個實施例中,ALU操作送至高速ALU執行單元216、218。一個實施例之快ALU 216、218可以半個時鐘週期之有效延遲執行快速操作。針對一個實施例,最複雜的整數運算送至慢ALU 220,原因在於慢ALU 220包括整數執行硬體用於長延遲型運算,諸如乘法器、移位、旗標邏輯、及分支處理。記憶體載入/儲存操作係藉AGU 212、214執行。針對一個實施例,整數ALU 216、218、220係以在64位元資料運算元上執行整數運算之脈絡描述。於替代實施例中,ALU 216、218、220可具現以支援多種資料位元含16、32、128、256等。同理,浮點單元222、224可具現以支援具有各種寬度之位元的一範圍之運算元。針 對一個實施例,浮點單元222、224可結合SIMD及多媒體指令在128位元寬壓縮資料運算元上操作。
於一個實施例中,uops排程器202、204、206在親代負載已經完成執行之前調度相依性操作。因uops於處理器200中經推理排程及執行,處理器200也包括邏輯以處理記憶體遺漏。若一資料負載在該資料快取中遺漏,則於管線於飛行中可有相依性操作,造成排程器有時間不正確資料。再度播放機制追蹤及重新執行使用不正確資料的指令。只有相依性操作需再度播放,非相依性操作允許其完成。一處理器之一個實施例的排程器及再度播放機制也經設計以快取提供SIMD向量子位元組解壓縮的指令。
「暫存器」一詞可指板上處理器儲存位置,用作為識別運算元之部分指令。換言之,暫存器可為從處理器外部(從程式師觀點)為有用的暫存器。但一實施例之暫存器不應限於表示特定型別之電路。反而,一實施例之暫存器能儲存及提供資料,及執行此處描述之功能。此處描述的暫存器可使用任何數目之不同技術在一處理器內部藉電路具現,諸如專用實體暫存器、使用暫存器重新命名之動態配置的實體暫存器、專用與動態配置的實體暫存器之組合等。於一個實施例中,整數暫存器儲存32位元整數資料。一個實施例之一暫存器檔案也含有針對壓縮資料的8多媒體SIMD暫存器。針對後文討論,須瞭解暫存器為設計用以保有壓縮資料之資料暫存器,諸如以得自加州聖塔克拉拉之英特爾公司的MMX技術致動的微處理器中之64位元寬 MMXTM暫存器(於某些情況下,也稱為「mm」暫存器)。以整數及浮點兩種形式可資利用的此等MMX暫存器可以伴隨SIMD及SSE指令之壓縮資料元件操作。同理,SSE2、SSE3、SSE4、或以上(通稱為「SSEx」)技術相關的128位元寬XMM暫存器也可用以保有此等壓縮資料運算元。於一個實施例中,於儲存壓縮資料及整數資料中,暫存器無需區別兩型資料。於一個實施例中,整數及浮點係含於相同暫存器檔案或不同暫存器檔案。此外,於一個實施例中,浮點及整數資料可儲存於不同暫存器或相同暫存器。
於後述圖式之實施例中,描述多個資料運算元。圖3A例示依據本發明之一個實施例於多媒體暫存器中之各種壓縮資料型別表示型態。圖3A例示針對128位元寬運算元用於一壓縮位元組310、一壓縮字元320、及一壓縮雙字組(dword)330之資料型別。本實施例之壓縮位元組格式310為長128位元及含有16壓縮位元組資料元件。一位元組於此處定義為8位元資料。針對各個位元組資料元件之資訊針對位元組0係儲存於位元7至位元0,針對位元組1係儲存於位元15至位元8,針對位元組2係儲存於位元23至位元16,及最後針對位元組15係儲存於位元120至位元127。因此全部可用位元皆用於該暫存器。此種儲存配置提高了處理器之儲存效率。存取16資料元件,一次操作現在可並列地在16資料元件上進行。
概略言之,一資料元件為與等長的其它資料元件儲存於單一暫存器或記憶體位置的個別一塊資料。於SSEx 技術之相關壓縮資料序列中,儲存於XMM暫存器中之資料元件之數目為128位元除以個別資料元件之長度,以位元表示。同理,於MMX及SSE技術之相關壓縮資料序列中,儲存於MMX暫存器中之資料元件之數目為64位元除以個別資料元件之長度,以位元表示。雖然圖3A中例示之資料型別為128位元長度,但本發明之實施例也可以64位元寬、256位元寬、512位元寬、或其它大小的運算元操作。本實施例之壓縮字元格式320為128位元長度及含有八個壓縮字元資料元件。各個壓縮字元含有16位元資訊。圖3A之壓縮雙字組格式330為128位元長度及含有四個壓縮雙字組資料元件。各個壓縮雙字組資料元件含有32位元資訊。一壓縮四字組為128位元長度及含有兩個壓縮四字組資料元件。
圖3B例示其它暫存器內資料儲存格式。各個壓縮資料可包括多於一個非相依性資料元件。例示三種壓縮資料格式;壓縮半341、壓縮單342、及壓縮雙343。壓縮半341、壓縮單342、及壓縮雙343之一個實施例含有定點資料元件。針對一替代實施例,壓縮半341、壓縮單342、及壓縮雙343中之一或多者可含有浮點資料元件。壓縮半341之一個替代實施例為含有八個16-位元資料元件之128位元長。壓縮單342之一個實施例為128位元長及含有四個32-位元資料元件。壓縮雙343之一個實施例為128位元長及含有兩個64-位元資料元件。須瞭解此等壓縮資料格式可進一步擴延至其它暫存器長度,例如擴延至96-位元、160-位元、192-位元、224-位元、256-位元、512-位元或以上。
圖3C例示依據本發明之一個實施例於多媒體暫存器中各種有符號及無符號壓縮資料型別表示型態。無符號壓縮位元組表示型態344例示一無符號壓縮位元組之儲存於一SIMD暫存器。針對各個位元組資料元件之資訊針對位元組0係儲存於位元7至位元0,針對位元組1係儲存於位元15至位元8,針對位元組2係儲存於位元23至位元16等,及最後針對位元組15係儲存於位元120至位元127。因此全部可用位元皆用於該暫存器。此種儲存配置提高了處理器之儲存效率。存取16資料元件,一次操作現在可以並列方式在16資料元件上進行。有符號壓縮位元組表示型態345例示一有符號壓縮位元組之儲存。注意每個位元組資料元件之第八位元為符號指示器。無符號壓縮字元表示型態346例示字元7至字元0如何儲存於SIMD暫存器。有符號壓縮字元表示型態347係類似無符號壓縮字元暫存器內表示型態346。注意每個字元資料元件之第16位元為符號指示器。無符號壓縮雙字組表示型態348顯示雙字組資料元件如何儲存。有符號壓縮雙字組表示型態349係類似無符號壓縮雙字組暫存器內表示型態348。注所需符號位元為各個雙字組資料元件之32位元。
圖3D為具有32個或以上之位元之一操作編碼(opcode)格式360之一個實施例之描繪,及暫存器/記憶體運算元定址模式相對應於一型微操作格式,描述於全球資訊網(www)於intel.com/products/processor/manuals/得自加州聖塔克拉拉英特爾公司的「英特爾® 64及IA-32英特爾架構 軟體發展器手冊合輯2A及2B:指令集參考A-Z」。於一個實施例中,一指令可由欄位361及362中之一或多者編碼。每個指令至多可識別兩個運算元位置,包括至多兩個來源運算元識別符364及365。針對一個實施例,目的地運算元識別符366係與來源運算元識別符364相同,而於其它實施例中,兩者為相異。針對另一個實施例,目的地運算元識別符366係與來源運算元識別符365相同,而於其它實施例中,兩者為相異。於一個實施例中,藉來源運算元識別符364及365所識別的來源運算元中之一者係由指令之結果覆寫,而於其它實施例中,識別符364相對應於一來源暫存器元件,及識別符365相對應於一目的地暫存器元件。針對一個實施例,運算元識別符364及365可用以識別32-位元或64-位元來源及目的地運算元。
圖3E為具有40個或以上之位元之另一操作編碼(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及由選擇性定標指數基礎所部分指明的記憶體定址,及位移位元組。
其次轉向參考圖3F,於若干替代實施例中,64-位元(或128-位元,或256-位元,或512-位元或以上)單指令多資料(SIMD)算術運算可經由一共處理器資料處理(CDP)指令執行。操作編碼(opcode)格式380描繪具有CDP opcode欄位382及389之一個此種CDP指令。針對替代實施例,CDP指令之型別可藉欄位383、384、387、及388中之一或多者編碼。可識別每個指令至多三個運算元位置,包括至多兩個來源運算元識別符385及390及一個目的地運算元識別符386。共處理器之一個實施例可於8、16、32、及64位元值上操作。針對一個實施例,一指令係於整數資料元件上執行。於若干實施例中,一指令可使用條件欄位381條件式地執行。針對若干實施例,來源資料大小可藉欄位383編碼。於若干實施例中,於SIMD欄位上可進行零(Z)、負(N)、進位(C)、及溢位(V)偵測。針對某些指令,飽和型別可藉欄位384編碼。
其次轉向參考圖3G乃依據另一個實施例操作編碼(opcode)格式397之另一替代描繪以提供SIMD向量子位元組解壓縮,相對應於一型操作碼格式描述於「英特爾®進階向量擴延規劃參考」,其係於全球資訊網(www)於intel.com/products/processor/manuals/得自加州聖塔克拉拉英特爾公司。
針對1-位元組操作編碼提供的原始x86指令集具有位址音節之各種格式及令在額外位元組中之緊鄰運算元,其存在係從第一「操作編碼」位元組為已知。此外,有某些位元組值保留作為操作編碼的修飾符(稱作前綴符,原因在於其必須置於指令前方)。當256操作編碼位元組之原始主色調(含特殊前綴符值)耗盡時,單一位元組貢獻以逃逸至256操作編碼之一新集合。因加入向量指令(例如SIMD),故產生更多操作編碼之一需要,「2位元組」操作編碼對映圖也不足,即便透過前綴符的使用擴充亦復如此。為了達成此項目的,於額外對映圖中加入新指令,其使用2位元組加一選擇性前綴符作為一識別符。
此外,為了協助於64-位元模式中的額外暫存器,在該等前綴符與該操作碼(及決定操作碼所需任何逃逸位元組)間可使用額外前綴符(稱作「REX」)。於一個實施例中,該REX可具有4「酬載」位元以指示於64-位元模式中額外暫存器的使用。於其它實施例中,可具有少於或多於4位元。至少一個指令集之通用格式(通常相對應於格式360及/或格式370)通用地藉如下例示: [prefixes][rex]escape[escape2]opcode modrm(等)
操作編碼格式397相對應於操作編碼格式370及包含選擇性VEX前綴符位元組391(於一個實施例中,始於C4 hex)以置換大部分其它常用舊式指令前綴符位元組及逃逸碼。舉例言之,後文例示使用兩個欄位以編碼一指令之一實施例,其可用於第二逃逸碼存在於原始指令時,或可用於須使用REX欄位中之額外位元(例如XB及W欄位)時。於後文例示之實施例中,舊式逃逸係以新逃逸值表示,舊式前綴符完全壓縮成「酬載」位元組之一部分,舊式前綴符被回收且可用於未來擴充,第二逃逸碼係於「對映圖」欄位壓縮,具有可用的未來對映圖或特性件空間,及加入新特性件(例如增加向量長度及額外來源暫存器說明符)。
依據一個實施例一指令可藉欄位391及392中之一或多者編碼。每個指令至多四個運算元位置可藉欄位391組合來源運算元識別符374及375編碼,及組合一選擇性定標指數基礎識別符393、一選擇性位移識別符394、及一選擇性緊鄰位元組395編碼。針對一個實施例,VEX前綴符位元組391可用以辨識32-位元或64-位元來源及目的地運算元及/或128-位元或256-位元SIMD暫存器或記憶體運算元。針 對一個實施例,由操作編碼格式397提供的功能可與操作編碼格式370為冗餘,而於其它實施例中兩者可不同。操作編碼格式370及397允許暫存器對暫存器、記憶體對暫存器、暫存器並記憶體、暫存器並暫存器、暫存器並緊鄰者、暫存器對部分由MOD欄位373及由選擇性(SIB)識別符393、一選擇性位移識別符394、及一選擇性緊鄰位元組395所指明的記憶體定址。
其次轉向參考圖3H乃依據另一個實施例操作編碼(opcode)格式398之另一替代描繪以功能性地提供SIMD向量子位元組解壓縮。操作編碼格式398相對應於操作編碼格式370及397且包含選擇性EVEX前綴符位元組396(於一個實施例中,始於62hex)以置換大部分其它常用舊式指令前綴符位元組及逃逸碼,及提供額外功能。依據一個實施例之指令可藉欄位396及392中之一或多者編碼。每個指令至多四個運算元位置及一遮罩可藉欄位396組合來源運算元識別符374及375及組合一選擇性定標指數基礎(SIB)識別符393、一選擇性位移識別符394、及一選擇性緊鄰位元組395識別。針對一個實施例,EVEX前綴符位元組396可用以辨識32-位元或64-位元來源及目的地運算元及/或128-位元、256-位元或512-位元SIMD暫存器或記憶體運算元。針對一個實施例,由操作編碼格式398提供的功能可與操作編碼格式370或397為冗餘,而於其它實施例中兩者可不同。操作編碼格式398允許暫存器對暫存器、記憶體對暫存器、暫存器並記憶體、暫存器並暫存器、暫存器並緊鄰者、暫 存器對記憶體定址,該定址係具有遮罩部分由MOD欄位373及由選擇性(SIB)識別符393、一選擇性位移識別符394、及一選擇性緊鄰位元組395所指明。至少一個指令集之通用格式(大致上相對應於格式360及/或格式370)係通用地例示如下:evex1 RXBmmmmm WvvvLpp evex4 opcode modrm[sib][disp][imm]
針對一個實施例,依據EVEX格式398編碼之一指令可具有額外「酬載」位元,可用以提供SIMD向量族群計數功能,具有額外新穎特性件,諸如一使用者可組配遮罩暫存器、或一額外運算元、或選自128-位元、256-位元或512-位元向量暫存器、或可選用的更多暫存器等。
舉例言之,VEX格式397可用以提供SIMD向量族群計數功能而無一遮罩,EVEX格式398可用以提供SIMD向量族群計數功能而有一明確使用者可組配遮罩。此外,VEX格式397可用以在128-位元或256-位元向量暫存器上提供SIMD向量族群計數功能,EVEX格式398可用以在128-位元、256-位元、512-位元或更大(或更小)向量暫存器上提供SIMD向量族群計數功能。
提供SIMD向量子位元組解壓縮功能用以將經壓縮的或緊縮子位元組資料欄位有效解壓縮之指令實施例係藉下列實施例例示:
須瞭解如上實施例中,SIMD向量子位元組解壓縮指令可用於例如於大型資料庫中,從每個元件格式壓縮1-位元至7-位元之資料欄位有效向量解壓縮成每個位元組元件格式8-位元之資料欄位。
於若干實施例中,SIMD向量子位元組解壓縮指令可經解碼成且具現為微碼指令之一序列或多序列。舉例言之,處理一個此種序列可能涉及將含有一第一位元排齊 之第一子位元組元件之第一及第二位元組混洗入一第一32-位元向量元件之最低有效部分,及將含有相同第一位元排齊之第二子位元組元件之第三及第四位元組混洗入該第一32-位元向量元件之最高有效部分。然後處理該微碼序列涉及將含有一第二位元排齊之第三子位元組元件之第五及第六位元組混洗入一第二32-位元向量元件之最低有效部分,及將含有相同第二位元排齊之第四子位元組元件之第七及第八位元組混洗入該第二32-位元向量元件之最高有效部分。然後藉移位該第一32-位元向量元件達一第一移位計數及移位該第二32-位元向量元件達一第二移位計數,微碼將子位元組元件對齊至其個別位元組的最低有效位元。然後處理該微碼序列涉及將來自移位第一及第二向量元件的最低有效部分各自之一位元組混洗入一目的地向量元件之位元組位置,及將來自移位第一及第二向量元件的最高有效部分各自之一位元組混洗入另一目的地向量元件之位元組位置以至少部分地恢復其原始子位元組順序。當時或其後,其個別位元組的最高有效位元可被清除或視需要藉該微碼標示擴延以重製該原始未經壓縮值。據此,SIMD向量子位元組解壓縮功能之實施例可被提供作為單一SIMD巨集指令,其可執行為一序列之微指令(或micro-ops或uops)。依據若干替代實施例,SIMD向量子位元組解壓縮功能可提供為一序列之二或多個SIMD巨集指令(例如VBitHdcmprsUB),然後其結果可一起組合以完成原始子位元組順序。
圖4A為一方塊圖例示依據本發明之至少一個實施例一有序管線及一暫存器重新命名階段,亂序簽發/執行管線。圖4B為一方塊圖例示依據本發明之至少一個實施例一有序架構核心及一暫存器重新命名階段,亂序簽發/執行邏輯。圖4A之實線框例示有序管線,而虛線框例示暫存器重新命名,亂序簽發/執行管線。同理,圖4B之實線框例示有序架構邏輯,而虛線框例示暫存器重新命名邏輯及亂序簽發/執行邏輯。
於圖4A中,一處理器管線400包括一提取階段402、一長度解碼階段404、一解碼階段406、一配置階段408、一重新命名階段410、一排程(又稱調度或簽發)階段412、一暫存器讀取/記憶體讀取階段414、一執行階段416、一回寫/記憶體寫入階段418、一例外處理階段422、及一委付階段424。
於圖4B中,箭頭標示二或多個單元間之耦合,及箭頭方向指示該等單元間之資料流向。圖4B顯示處理器核心490指示一前端單元430耦接至一執行引擎單元450,及兩者係耦接至一記憶體單元470。
該核心490可為精簡指令集電腦(RISC)核心、複雜指令集電腦(CISC)核心、極長指令字(VLIW)核心、或混合或其它核心型別。至於又另一選項,核心490可為特定用途核心諸如,網路或通訊核心、壓縮引擎、圖形核心等。
前端單元430包括一分支預測單元432耦接至一指令快取單元434,其係耦接至一指令轉譯後備緩衝器 (TLB)436,其係耦接至一指令提取單元438,其係耦接至一解碼單元440。解碼單元或解碼器可解碼指令,及產生一或多個微操作、微碼進入點、微指令、其它指令、或其它控制信號作為一輸出,其係解碼自原始指令或否則反映出或導出自該等原始指令。該解碼器可使用各種不同機制具現。合宜機制之實施例包括,但非限制性,詢查表、硬體具現、可規劃邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。指令快取單元434進一步耦接至記憶體單元470內之一層級2(L2)快取單元476。解碼單元440係耦接至執行引擎單元450中之一重新命名/配置器單元452。
執行引擎單元450包括該重新命名/配置器單元452耦接至一報廢單元454及一集合之一或多個排程器單元456。該排程器單元456表示任何數目之不同排程器,包括保留站、中心指令窗等。排程器單元456係耦接至實體暫存器檔案單元458。實體暫存器檔案單元458各自表示一或多個實體暫存器檔案,其中之不同者儲存一或多個不同資料型別,諸如純量整數、純量浮點、壓縮整數、壓縮浮點、向量整數、向量浮點等、狀態(例如一指令指標器其為欲執行的下個指令之位址)等。實體暫存器檔案單元458係由報廢單元454重疊以例示其中可具現暫存器重新命名及亂序執行的各種方式(例如使用一整序緩衝器及一報廢暫存器檔案;使用一未來檔案、一過去史緩衝器及一報廢暫存器檔案;使用一暫存器對映圖及一池之暫存器;等)。概略言之,架構暫存器從處理器外部或從程式師觀點為可見。暫 存器並不限於任何特定型別之電路。各種不同型別之暫存器為適合,只要其能夠儲存及提供如此處描述之資料即可。合宜暫存器之實施例包括,但非限制性,專用實體暫存器、使用暫存器重新命名之動態配置的實體暫存器、專用與動態配置的實體暫存器之組合等。該報廢單元454及該實體暫存器檔案單元458係耦接至執行叢集460。執行叢集460包括一集合之一或多個執行單元462及一集合之一或多個記憶體存取單元464。執行單元462可在各型資料(例如純量浮點、壓縮整數、壓縮浮點、向量整數、向量浮點)上執行各種運算(例如移位、加法、減法、及乘法)。雖然有些實施例可包括特定功能或特定功能集合專用的多個執行單元,但其它實施例可只包括一個執行單元或全部皆執行全部功能的多個執行單元。排程器單元456、實體暫存器檔案單元458、及執行叢集460係顯示可能為多數,原因在於某些實施例針對某些型別之資料/操作產生分開的管線(例如一純量整數管線、一純量浮點/壓縮整數/壓縮浮點/向量整數/向量浮點管線、及/或一記憶體存取管線,其各自具有其本身的排程器單元、實體暫存器檔案單元、及/或執行叢集,且以一分開記憶體存取管線為例,具現某些實施例其中只有此一管線之執行叢集具有記憶體存取單元464)。也須瞭解當使用分開的管線時,此等管線中之一或多者可為亂序簽發/執行,而其餘者為有序。
該集合之記憶體存取單元464係耦接至記憶體單元470,其包括一資料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技術公司之MIPS指令集;加州山尼維爾ARM控股公司之ARM指令集(帶有選擇性額外擴充,諸如NEON))。
須瞭解核心可支援多執行緒(執行二或多個並列集合之操作或執行緒),且可以多種方式進行,包括時間截割多執行緒、同時多執行緒(當單一實體核心針對各個執行緒提供一邏輯核心時,該實體核心為同時多執行緒)、或其 組合(例如時間截割提取與解碼及隨後同時多執行緒,諸如於英特爾®超執行緒技術)。
雖然暫存器重新命名係以亂序執行之脈絡描述,但須瞭解暫存器重新命名可用於有序架構。雖然處理器之例示實施例也包括一分開指令及資料快取單元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中之二或多者可執行相同指令集,而其它者可只執行該指令集之一子集或一不同指令集。
該處理器可為一通用處理器,諸如核心TMi3、i5、i7、2雙重及四重、席翁TM、伊塔尼TM、叉標TM或強臂TM處理器,其係得自加州聖塔克拉拉英特爾公司。另外,該處理器可得自其它公司,諸如ARM控股公司、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,其可為例如動態隨機存取記憶體(DRAM)。針對至少一個實施例,該DRAM可與非依電性快取記憶體相聯結。
GMCH 620可為一晶片組,或為一晶片組之一部分。該GMCH 620可與處理器610、615通訊及控制處理器610、615與記憶體640間之互動。該GMCH 620也可用作為該處理器610、615與該系統600之其它元件間之一加速匯流排介面。針對至少一個實施例,GMCH 620透過一多點匯流 排諸如一前端匯流排(FSB)695與處理器610、615通訊。
此外,GMCH 620係耦接至一顯示器645(諸如平板顯示器)。GMCH 620可包括一整合式圖形加速器。GMCH 620進一步耦接至一輸入/輸出(I/O)控制中樞器(ICH)650,其可用以耦接各種周邊裝置至系統600。例如於圖6之實施例中顯示者為一外部圖形裝置660其可為耦接至ICH 650之一離散圖形裝置,連同另一周邊裝置670。
另外,額外的或不同的處理器也可存在於系統600。舉例言之,額外處理器615可包括與處理器610相同的額外處理器、與處理器610異質或非對稱性的額外處理器、加速器(諸如圖形加速器或數位信號處理器(DSP)單元)、可現場程式規劃閘陣列、或任何其它處理器。就優劣量表範圍而言,包括架構、微架構、熱、耗電特性等,實體資源610、615間可有多種差異。此等差異本身可有效地表現為處理器610、615間之非對稱性及異質性。針對至少一個實施例,各種處理器610、615可駐在相同晶粒封裝體內。
現在參考圖7,顯示依據本發明之一實施例第二系統700之一方塊圖。如圖7所示,多處理器系統700為點對點互連體系統,及包括透過一點對點互連體750耦接的一第一處理器770及一第二處理器780。如同處理器610、615中之一或多者,處理器770及780各自可為處理器500之某個版本。
雖然圖中只顯示兩個處理器770、780,但須瞭解本發明之範圍並非受此所限。於其它實施例中,一或多個 額外處理器可存在於一給定處理器。
處理器770及780顯示為分別包括整合式記憶體控制器(IMC)單元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,諸如碟片驅動裝置或其它大容量儲存裝置,於一個實施例中,其可包括指令/碼及資料730。又,一音訊I/O 724可耦接至第二匯流排720。注意其它架構亦屬可能。舉例言之,替代圖7之點對點架構,一系統可具現多點匯流排或其它此種架構。
現在參考圖8,顯示依據本發明之一實施例第三系統800之一方塊圖。圖7與圖8中相似的元件載有相似的參考元件符號,及圖7之某個面向已經從圖8刪除以免遮掩圖8之其它面向。
圖8例示處理器870、880可分別包括整合式記憶體及I/O控制邏輯(CL)872及882。針對至少一個實施例,CL 872、882可包括整合式記憶體控制器單元,諸如前文連結圖5及7描述者。此外,CL 872、882也可包括I/O控制邏輯。圖8例示不僅記憶體832、834耦接至CL 872、882,同時I/O裝置814也耦接至控制邏輯872、882。舊式I/O裝置815係耦接至晶片組890。
現在參考圖9,顯示依據本發明之一實施例SoC 900之一方塊圖。圖5中之相似元件載有相似的元件符號。又,虛線框為更先進SoC上的選擇性特性件。於圖9中,一互連體單元902係耦接至:一應用程式處理器910其包括一集合之一或多個核心502A-N及共享快取單元506;一系統代 理器單元510;一匯流排控制器單元516;一整合式記憶體控制器單元514;一集合之一或多個媒體處理器920其可包括整合式圖形邏輯508、一影像處理器924用以提供靜像及/或視訊相機功能、一音訊處理器926用以提供硬體音訊加速度、及一視訊處理器928用以提供視訊編碼/解碼加速度;一靜態隨機存取記憶體(SRAM)單元930;一直接記憶體存取(DMA)單元932;及一顯示器單元940用以耦接至一或多個外部顯示器。
圖10例示依據一個實施例可執行至少一個指令之含有一中央處理單元(CPU)及一圖形處理單元(GPU)及一處理器。於一個實施例中,依據至少一個實施例執行操作之一指令可藉該CPU實行。於另一個實施例中,該指令可藉該GPU實行。於又另一個實施例中,該指令可藉該GPU與該CPU實行之操作之一組合執行。舉例言之,於一個實施例中,依據一個實施例之一指令可被接收及解碼用以在GPU上執行。但解碼指令內部之一或多個操作可藉一CPU執行,及結果回送至GPU用於指令之最終報廢。相反地,於若干實施例中,CPU可用作為主要處理器,及GPU用作為共處理器。
於若干實施例中,從高度並列通量處理器獲益之指令可藉GPU執行,而從深度管線化架構獲益之從處理器效能獲益的指令可藉CPU執行。舉例言之,繪圖、科學應用、財務應用及其它並列工作負載可從GPU之效能獲益及據此執行,而較為串列應用諸如作業系統核心或應用程式 碼較為適用於CPU。
於圖10中,處理器1000包括CPU 1005、GPU 1010、影像處理器1015、視訊處理器1020、USB控制器1025、UART控制器1030、SPI/SDIO控制器1035、顯示裝置1040、高畫質多媒體介面(HDMI)控制器1045、MIPI控制器1050、快閃記憶體控制器1055、雙倍資料速率(DDR)控制器1060、安全引擎1065、及整合式晶片間聲音/積體電路間(I2S/I2C)介面1070。其它邏輯及電路可含括於圖10之該處理器內,包括更多CPU或GPU及其它周邊介面控制器。
至少一個實施例之一或多個面向可藉儲存於一機器可讀取媒體上之代表性資料具現,表示在該處理器內部之各種邏輯,當由一機器讀取時使得該機器製造邏輯以實行此處描述的技術。稱作為「IP核心」的此等表示型態可儲存於一有形機器可讀取媒體(「磁帶」)上及供應各種客戶或製造設備以載入實際上製作該邏輯或處理器的製造機器內。舉例言之,IP核心諸如由ARM控股公司發展的皮質TM家族處理器及中國科學院計算技術研究所(ICT)發展的龍芯IP核心可授權或銷售給各種客戶或被授權人,諸如德州儀器公司、高通公司、蘋果公司、或三星公司及在由此等客戶或被授權人生產的處理器中具現。
圖11顯示一方塊圖例示依據一個實施例IP核心之發展。儲存裝置1130包括模擬軟體1120及/或硬體或軟體模型1110。於一個實施例中,表示IP核心設計之資料可透過記憶體1140(例如硬碟)、有線連結(例如網際網路)1150或 無線連結1160供給儲存裝置1130。由模擬工具及模型所產生的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表示藉相容性地執行或以其它方式處理(1)該英特爾x86指令集核心之指令集之實質部分,或(2)鎖定在一具有至少一個x86指令集核心之英特爾處理器上跑的應用程式之目的碼版本或其它軟體,以便達成與具有至少一個x86指令集核心之英特爾處理器實質上相同結果,而可實現與具有至少一個x86指令集核心之英特爾處理器實質上相同功能的任何處理器。x86編譯器1304表示可操作以產生x86二進制碼1306(例如目的碼)的一編譯器,其有或無額外鏈聯處理,能在具有至少一個x86指令集核心之處理器1316上執行。同理,圖13顯示於高階語言1302之程式可使用替代指令集編譯器1308編譯以產生替代指令集二進制碼1310其可藉沒有至少一個x86指令集核心之處理器1314執行(例如具有執行加州山尼維爾MIPS技術公司之MIPS指令集及/或執行加州山尼維爾ARM控股公司之ARM指令集的核心之一處理器)。指令轉換器1312係用以將x86二進制碼1306轉換 成碼,其可藉沒有x86指令集核心之處理器1314執行。此種已轉換碼不可能與替代指令集二進制碼1310相同,原因在於難以製作能夠執行此種功能的一指令轉換器;但已轉換碼將完成一般操作,且係由來自替代指令集的指令組成。如此,指令轉換器1312表示軟體、韌體、硬體、或其組合,其透過仿真、模擬或任何其它處理,許可不具有x86指令集處理器或核心之處理器或其它電子裝置執行x86二進制碼1306。
圖14A例示使用一指令及/或方法1401以提供SIMD向量子位元組解壓縮功能之一範例的一個實施例之流程圖。例示之實施例為從每個元件格式壓縮7-位元至每個位元組元件格式8-位元之一實施例。方法1401及此處揭示之其它方法係藉處理方塊執行,處理方塊可包含由通用機器或由特用機器或由兩者之組合可執行的專用硬體或軟體或韌體操作碼。
於方法1401之混洗處理方塊1405中,來源1410的含有至少第一子位元組元件a之第一位元組零(0)及第二位元組一(1)係經混洗或複製入向量1415之第一向量元件(例如32-位元向量元件)之最低有效部分內。於準備移位中,含有至少第二子位元組元件i之第三位元組七(7)及第四位元組八(8)係經混洗或複製入向量1415之第一向量元件之最高有效部分內。於混洗處理方塊1405中也顯示,來源1410的含有至少第三子位元組元件b之第五位元組零(0)及第六位元組一(1)係經混洗或複製入向量1415之第二向量元件之 最低有效部分內,及於準備移位中,含有至少第四子位元組元件j之第七位元組七(7)及第八位元組八(8)係經混洗或複製入向量1415之第二向量元件之最高有效部分內。須瞭解該等第一及第二子位元組元件兩者可具有相同初位元對齊,及該等第三及第四子位元組元件兩者可具有相同初位元對齊。於混洗處理方塊1405中也顯示,來源1410的含有至少第五子位元組元件c之第九位元組一(1)及第十位元組二(2)係經混洗或複製入向量1415之第三向量元件之最低有效部分內,及含有至少第六子位元組元件k之第十一位元組八(8)及第十二位元組九(9)係經混洗或複製入向量1415之第三向量元件之最高有效部分內。來源1410的含有至少第七子位元組元件d之第十三位元組二(2)及第十四位元組三(3)係經混洗或複製入向量1415之第四向量元件之最低有效部分內,及於準備移位中,含有至少第八子位元組元件l之第十五位元組九(9)及第十六位元組十(10)係經混洗或複製入向量1415之第四向量元件之最高有效部分內。
於移位處理方塊1407中,保有該等第一及第二子位元組元件(亦即a及i)的向量1415之該第一向量元件係藉向量1420中之一第一移位計數零(0)移位;保有該等第三及第四子位元組元件(亦即b及j)的該第二向量元件係藉一第二移位計數七(7)移位;保有該等第五及第六子位元組元件(亦即c及k)的該第三向量元件係藉一第三移位計數六(6)移位;及保有該等第七及第八子位元組元件(亦即d及l)的該第四向量元件係藉一第四移位計數五(5)移位,以將該等子位 元組元件對齊向量1425中之其個別位元組的一最低有效位元。於一個實施例中,此等移位係藉SIMD移位器在向量1415之32-位元向量元件上併同執行。於替代實施例中,更小的或更大的移位可用以取而代之,且並非全部移位皆可併同執行。
於混洗處理1427中,來自經移位的第一、第二、第三及第四向量元件之最低有效部分各自之一位元組被混洗或複製入向量1430之一第一向量元件(例如32-位元向量元件)中,及來自經移位的第一、第二、第三及第四向量元件之最高有效部分各自之一位元組被混洗或複製入向量1430之一第二向量元件中以至少部分地恢復其原始子位元組順序。於一個實施例中,該混洗或複製可依據從解碼一或多個指令所產生的一單一微操作或micro-op,藉SIMD混洗器併同地執行以提供SIMD向量子位元組解壓縮功能。於替代實施例中,該混洗或複製可依據多於一個微操作或micro-op,藉SIMD混洗器或其它SIMD執行單元併同地執行。
於混洗處理方塊1406中,來源1410的含有至少第一子位元組元件e之第一位元組三(3)及第二位元組四(4)係經混洗或複製入向量1416之第一向量元件(例如32-位元向量元件)之最低有效部分內。於準備移位中,含有至少第二子位元組元件m之第三位元組十(10)及第四位元組十一(11)係經混洗或複製入向量1416之第一向量元件之最高有效部分內。於混洗處理方塊1406中也顯示,來源1410的含有至 少第三子位元組元件f之第五位元組四(4)及第六位元組五(5)係經混洗或複製入向量1416之第二向量元件之最低有效部分內,及於準備移位中,含有至少第四子位元組元件n之第七位元組十一(11)及第八位元組十二(12)係經混洗或複製入向量1416之第二向量元件之最高有效部分內。於混洗處理方塊1406中也顯示,來源1410的含有至少第五子位元組元件g之第九位元組五(5)及第十位元組六(6)係經混洗或複製入向量1416之第三向量元件之最低有效部分內,及含有至少第六子位元組元件o之第十一位元組十二(12)及第十二位元組十三(13)係經混洗或複製入向量1416之第三向量元件之最高有效部分內。來源1410的含有至少第七子位元組元件h之第十三位元組六(6)及第十四位元組七(7)係經混洗或複製入向量1416之第四向量元件之最低有效部分內,及於準備移位中,含有至少第八子位元組元件p之第十五位元組十三(13)及第十六位元組十四(14)係經混洗或複製入向量1416之第四向量元件之最高有效部分內。
於移位處理方塊1408中,保有該等第一及第二子位元組元件(亦即e及m)的向量1416之該第一向量元件係藉向量1421中之一第一移位計數四(4)移位;保有該等第三及第四子位元組元件(亦即f及n)的該第二向量元件係藉一第二移位計數三(3)移位;保有該等第五及第六子位元組元件(亦即g及o)的該第三向量元件係藉一第三移位計數二(2)移位;及保有該等第七及第八子位元組元件(亦即h及p)的該第四向量元件係藉一第四移位計數一(1)移位,以將該等子位 元組元件對齊向量1426中之其個別位元組的一最低有效位元。
於混洗處理1429中,來自經移位的第一、第二、第三及第四向量元件之最低有效部分各自之一位元組被混洗或複製入向量1431之一第一向量元件(例如32-位元向量元件)中,及來自經移位的第一、第二、第三及第四向量元件之最高有效部分各自之一位元組被混洗或複製入向量1431之一第二向量元件中以至少部分地恢復其原始子位元組順序。
於OR處理方塊1433中,向量1430之該等第一及第二向量元件係與向量1431之該等第一及第二向量元件摻混,例如根據從解碼一或多個指令產生的一SIMD逐一位元OR微操作或micro-op,以產生向量1435之向量元件及恢復其原始子位元組順序。於替代實施例中,該項摻混也可藉SIMD混洗器及/或其它SIMD執行單元進行。
於AND處理方塊1443中,已摻混目的地向量之各個位元組之最高有效位元之一數目係經校正或遮罩(例如使用向量1440)。如圖所示,於一個實施例中,校正該位元之數目,設定於已摻混目的地向量元件之各個位元組中的k位元為零,於該處k係等於8減子位元組元件大小(本例中為7-位元)。於替代實施例中,校正該位元之數目可將各個子位元組元件符號擴延至一有符號位元組。已解壓縮子位元組係儲存於一向量目的地(亦即向量1450),其為一向量暫存器或為記憶體中之一向量。
須瞭解如上實施例中,SIMD向量子位元組解壓縮指令可用於例如於大型資料庫中,從每個元件格式壓縮1-位元至7-位元之資料欄位有效向量解壓縮成每個位元組元件格式8-位元之資料欄位。於若干實施例中,SIMD向量子位元組解壓縮指令可經解碼成且具現為微碼指令之一序列或多序列。
圖14B例示使用一指令及/或方法1402以提供SIMD向量子位元組解壓縮功能之一範例的一個實施例之流程圖。例示之實施例為從每個元件格式壓縮2-位元至每個位元組元件格式8-位元之一實施例。
於方法1402之混洗處理方塊1409中,來源1411的含有至少第一子位元組元件a之第一位元組零(0)及第二位元組一(1)係經混洗或複製入向量1415之第一向量元件(例如32-位元向量元件)之最低有效部分內。含有至少第二子位元組元件i之第三位元組二(2)及第四位元組三(3)係經混洗或複製入向量1415之第一向量元件之最高有效部分內。於混洗處理方塊1409中也顯示,來源1411的含有至少第三子位元組元件b之第五位元組零(0)及第六位元組一(1)係經混洗或複製入向量1415之第二向量元件之最低有效部分內,及於準備移位中,含有至少第四子位元組元件j之第七位元組二(2)及第八位元組三(3)係經混洗或複製入向量1415之第二向量元件之最高有效部分內。須瞭解該等第一及第二子位元組元件兩者可具有相同初位元對齊,及該等第三及第四子位元組元件兩者可具有相同初位元對齊。於 混洗處理方塊1409中也顯示,來源1411的含有至少第五子位元組元件c之第九位元組零(0)及第十位元組一(1)係經混洗或複製入向量1415之第三向量元件之最低有效部分內,及含有至少第六子位元組元件k之第十一位元組二(2)及第十二位元組三(3)係經混洗或複製入向量1415之第三向量元件之最高有效部分內。來源1411的含有至少第七子位元組元件d之第十三位元組零(0)及第十四位元組一(1)係經混洗或複製入向量1415之第四向量元件之最低有效部分內,及於準備移位中,含有至少第八子位元組元件l之第十五位元組二(2)及第十六位元組三(3)係經混洗或複製入向量1415之第四向量元件之最高有效部分內。
於移位處理方塊1417中,保有該等第一及第二子位元組元件(亦即a及i)的向量1415之該第一向量元件係藉向量1422中之一第一移位計數零(0)移位;保有該等第三及第四子位元組元件(亦即b及j)的該第二向量元件係藉一第二移位計數二(2)移位;保有該等第五及第六子位元組元件(亦即c及k)的該第三向量元件係藉一第三移位計數四(4)移位;及保有該等第七及第八子位元組元件(亦即d及l)的該第四向量元件係藉一第四移位計數六(6)移位,以將該等子位元組元件對齊向量1425中之其個別位元組的一最低有效位元。於一個實施例中,此等移位係藉SIMD移位器在向量1415之32-位元向量元件上併同執行。於替代實施例中,更小的或更大的移位可用以取而代之,且並非全部移位皆可併同執行。
於混洗處理1427中,來自經移位的第一、第二、第三及第四向量元件之最低有效部分各自之一位元組被混洗或複製入向量1430之一第一向量元件(例如32-位元向量元件)中,及來自經移位的第一、第二、第三及第四向量元件之最高有效部分各自之一位元組被混洗或複製入向量1430之一第二向量元件中以至少部分地恢復其原始子位元組順序。於一個實施例中,該混洗或複製可依據從解碼一或多個指令所產生的一單一微操作或micro-op,藉SIMD混洗器併同地執行以提供SIMD向量子位元組解壓縮功能。於替代實施例中,該混洗或複製可依據多於一個微操作或micro-op,藉SIMD混洗器或其它SIMD執行單元併同地執行。
於混洗處理方塊1404中,來源1411的含有至少第一子位元組元件e之第一位元組一(1)及第二位元組二(2)係經混洗或複製入向量1416之第一向量元件(例如32-位元向量元件)之最低有效部分內。於準備移位中,含有至少第二子位元組元件m之第三位元組三(3)及第四位元組四(4)係經混洗或複製入向量1416之第一向量元件之最高有效部分內。於混洗處理方塊1404中也顯示,來源1411的含有至少第三子位元組元件f之第五位元組一(1)及第六位元組二(2)係經混洗或複製入向量1416之第二向量元件之最低有效部分內,及於準備移位中,含有至少第四子位元組元件n之第七位元組三(3)及第八位元組四(4)係經混洗或複製入向量1416之第二向量元件之最高有效部分內。於混洗處理方塊 1404中也顯示,來源1411的含有至少第五子位元組元件g之第九位元組一(1)及第十位元組二(2)係經混洗或複製入向量1416之第三向量元件之最低有效部分內,及含有至少第六子位元組元件o之第十一位元組三(3)及第十二位元組四(4)係經混洗或複製入向量1416之第三向量元件之最高有效部分內。來源1411的含有至少第七子位元組元件h之第十三位元組一(1)及第十四位元組二(2)係經混洗或複製入向量1416之第四向量元件之最低有效部分內,及於準備移位中,含有至少第八子位元組元件p之第十五位元組三(3)及第十六位元組四(4)係經混洗或複製入向量1416之第四向量元件之最高有效部分內。
於移位處理方塊1418中,保有該等第一及第二子位元組元件(亦即e及m)的向量1416之該第一向量元件係藉向量1421中之一第一移位計數零(0)移位;保有該等第三及第四子位元組元件(亦即f及n)的該第二向量元件係藉一第二移位計數二(2)移位;保有該等第五及第六子位元組元件(亦即g及o)的該第三向量元件係藉一第三移位計數四(4)移位;及保有該等第七及第八子位元組元件(亦即h及p)的該第四向量元件係藉一第四移位計數六(6)移位,以將該等子位元組元件對齊向量1426中之其個別位元組的一最低有效位元。
於混洗處理1429中,來自經移位的第一、第二、第三及第四向量元件之最低有效部分各自之一位元組被混洗或複製入向量1431之一第一向量元件(例如32-位元向量 元件)中,及來自經移位的第一、第二、第三及第四向量元件之最高有效部分各自之一位元組被混洗或複製入向量1431之一第二向量元件中以至少部分地恢復其原始子位元組順序。
於摻混處理方塊1434中,向量1430之該等第一及第二向量元件係與向量1431之該等第一及第二向量元件摻混,例如根據從解碼一或多個指令產生的一SIMD32-位元摻混微操作或micro-op,以產生向量1435之向量元件及恢復其原始子位元組順序。於替代實施例中,該項摻混也可藉SIMD混洗器及/或其它SIMD執行單元進行。
於AND處理方塊1444中,已摻混目的地向量之各個位元組之最高有效位元之一數目係經校正或遮罩(例如使用向量1441)。如圖所示,於一個實施例中,校正該位元之數目,設定於已摻混目的地向量元件之各個位元組中的k位元為零,於該處k係等於8減子位元組元件大小(本例中為2-位元)。於替代實施例中,校正該位元之數目可將各個子位元組元件符號擴延至一有符號位元組。已解壓縮子位元組係儲存於一向量目的地(亦即向量1450),其為一向量暫存器或為記憶體中之一向量。
圖14C例示使用一指令及/或方法1403以提供SIMD向量子位元組解壓縮功能之一範例的一個實施例之流程圖。例示之實施例為從每個元件格式壓縮2-位元至每個位元組元件格式8-位元之一實施例。因2可將8整除,每個元件格式壓縮2-位元之各個位元組含有4個元件,此乃各 自可能的初位元對齊中之一者。
於方法1403之混洗處理方塊1409中,來源1411的含有至少首二子位元組元件a及e之第一位元組零(0)及第二位元組一(1)係經混洗或複製入向量1415之第一向量元件(例如32-位元向量元件)之最低有效部分內。含有至少第二兩個子位元組元件i及m之第三位元組二(2)及第四位元組三(3)係經混洗或複製入向量1415之第一向量元件之最高有效部分內。於混洗處理方塊1409中也顯示,來源1411的含有至少第三兩個子位元組元件b及f之第五位元組零(0)及第六位元組一(1)係經混洗或複製入向量1415之第二向量元件之最低有效部分內,及於準備移位中,含有至少第四兩個子位元組元件j及n之第七位元組二(2)及第八位元組三(3)係經混洗或複製入向量1415之第二向量元件之最高有效部分內。須瞭解該等首二個及第二兩個子位元組元件全部皆可具有相同初位元對齊,及該等第三兩個及第四兩個子位元組元件全部皆可具有相同初位元對齊。於混洗處理方塊1409中也顯示,來源1411的含有至少第五兩個子位元組元件c及g之第九位元組零(0)及第十位元組一(1)係經混洗或複製入向量1415之第三向量元件之最低有效部分內,及含有至少第六兩個子位元組元件k及o之第十一位元組二(2)及第十二位元組三(3)係經混洗或複製入向量1415之第三向量元件之最高有效部分內。來源1411的含有至少第七兩個子位元組元件d及h之第十三位元組零(0)及第十四位元組一(1)係經混洗或複製入向量1415之第四向量元件之最低有效部 分內,及於準備移位中,含有至少第八兩個子位元組元件l及p之第十五位元組二(2)及第十六位元組三(3)係經混洗或複製入向量1415之第四向量元件之最高有效部分內。
於移位處理方塊1417中,保有該等首二個及第二兩個子位元組元件(亦即a、e、i及m)的向量1415之該第一向量元件係藉向量1422中之一第一移位計數零(0)移位;保有該等第三兩個及第四兩個子位元組元件(亦即b、f、j及n)的該第二向量元件係藉一第二移位計數二(2)移位;保有該等第五兩個及第六兩個子位元組元件(亦即c、g、k及o)的該第三向量元件係藉一第三移位計數四(4)移位;及保有該等第七兩個及第八兩個子位元組元件(亦即d、h、l及p)的該第四向量元件係藉一第四移位計數六(6)移位,以將該等子位元組元件對齊向量1425中之其個別位元組的一最低有效位元。於一個實施例中,此等移位係藉SIMD移位器在向量1415之32-位元向量元件上併同執行。於替代實施例中,更小的或更大的移位可用以取而代之,且並非全部移位皆可併同執行。
於混洗處理1428中,來自經移位的第一、第二、第三及第四向量元件之最低有效部分各自之一位元組被混洗或複製入向量1430之一第一向量元件(例如32-位元向量元件)中;來自經移位的第一、第二、第三及第四向量元件之第二最低有效部分各自之一位元組被混洗或複製入向量1430之一第二向量元件中;來自經移位的第一、第二、第三及第四向量元件之第二最高有效部分各自之一位元組被 混洗或複製入向量1430之一第三向量元件中;及來自經移位的第一、第二、第三及第四向量元件之最高有效部分各自之一位元組被混洗或複製入向量1430之一第四向量元件中以至少部分地恢復其原始子位元組順序。於一個實施例中,該混洗或複製可依據從解碼一或多個指令所產生的一單一微操作或micro-op,藉SIMD混洗器併同地執行以提供SIMD向量子位元組解壓縮功能。於替代實施例中,該混洗或複製可依據多於一個微操作或micro-op,藉SIMD混洗器或其它SIMD執行單元併同地執行。
於AND處理方塊1444中,已摻混目的地向量之各個位元組之最高有效位元之一數目係經校正或遮罩(例如使用向量1441)。如圖所示,於一個實施例中,校正該位元之數目,設定於已摻混目的地向量元件之各個位元組中的k位元為零,於該處k係等於8減子位元組元件大小(本例中為2-位元)。於替代實施例中,校正該位元之數目可將各個子位元組元件符號擴延至一有符號位元組。已解壓縮子位元組係儲存於一向量目的地(亦即向量1450),其為一向量暫存器或為記憶體中之一向量。
於若干實施例中,SIMD向量子位元組解壓縮可具現為一序列之巨集指令,或一序列之微碼指令,或具現為兩者之組合。
圖15A例示針對提供SIMD向量子位元組解壓縮功能之一方法之一個實施例之流程圖。方法1501及此處揭示之其它方法係藉處理方塊執行,其可包含可藉通用機器 或藉特用機器或藉兩者之組合執行的專用硬體或軟體或韌體操作碼。
方法1501始於處理方塊1510於該處提供SIMD向量子位元組解壓縮功能之一或多個指令係於解碼階段(例如解碼406)或解碼器(例如解碼單元440)中解碼。於處理方塊1520中,存取得自向量暫存器(例如於實體暫存器檔案單元458內)或得自記憶體的一資料來源SRC1及針對該1-位元至7-位元子位元組資料元件之一大小指示器。於處理方塊1530中,於執行階段(例如執行階段416)中一或多個執行單元(例如執行單元462)係以解碼指令致動。
於處理方塊1540中(如圖14A-14C所見),於移位之準備中,含有至少第一子位元組元件之一第一及一第二位元組係被混洗或複製入一第一向量元件之一最低有效部分,及含有至少第二子位元組元件之一第三及一第四位元組係被混洗或複製入該第一向量元件之一最高有效部分。於處理方塊1545中,於移位之準備中,含有至少第三子位元組元件之一第五及一第六位元組係被混洗或複製入一第二向量元件之一最低有效部分,及含有至少第四子位元組元件之一第七及一第八位元組係被混洗或複製入該第二向量元件之一最高有效部分。須瞭解該等第一及第二子位元組元件兩者可具有相同初位元對齊,及該等第三及第四子位元組元件兩者可具有相同初位元對齊。於處理方塊1550中,保有該等第一及第二子位元組元件之該第一向量元件係以一第一移位計數移位,及於處理方塊1555中,保有該 等第三及第四子位元組元件之該第二向量元件係以一第二移位計數移位,以將該等子位元組元件對齊至其個別位元組的一最低有效位元。於一個實施例中,此等移位係在32-位元向量元件上藉SIMD移位器併同執行。於替代實施例中,取而代之可使用更小的或更大的移位,及並非全部移位皆可併同執行。
於處理方塊1560中,得自已移位第一及第二向量元件之最低有效部分各自的一位元組係混洗或複製入一第一目的地向量元件,及於處理方塊1565中,得自已移位第一及第二向量元件之最高有效部分各自的一位元組係混洗或複製入一第二目的地向量元件以至少部分恢復其原始子位元組順序。於一個實施例中,該混洗或複製可根據從解碼該等一或多個指令所產生的單一微操作或micro-op,藉SIMD混洗器併同地進行以提供SIMD向量子位元組解壓縮功能。於替代實施例中,混洗或複製也可根據多於一個微操作或micro-op,藉SIMD混洗器或其它SIMD執行單元進行。於處理方塊1570中,該等第一及第二目的地向量元件係與一中間向量之向量元件摻混,例如,根據從解碼該等一或多個指令以提供SIMD向量子位元組解壓縮功能所產生的一SIMD 32-位元摻混微操作或micro-op。於替代實施例中,該項摻混也可藉SIMD混洗器及/或其它SIMD執行單元進行。於處理方塊1580中,經摻混目的地向量之各個位元組的最高有效位元之一數目係經校正或遮罩。於一個實施例中,校正該位元之數目,設定於已摻混目的地向量元 件之各個位元組中的k位元為零,於該處k係等於8減該大小指示器。於替代實施例中,校正該位元之數目可將各個子位元組元件符號擴延至一有符號位元組。於處理方塊1590中,已解壓縮子位元組結果係儲存於一向量目的地DEST,其或為一向量暫存器(例如於實體暫存器檔案單元458中)或為記憶體中之一向量,及方法1501終止。
須瞭解如上實施例中,SIMD向量子位元組解壓縮指令可用於例如於大型資料庫中,從每個元件格式壓縮1-位元至7-位元之資料欄位有效向量解壓縮成每個位元組元件格式8-位元之資料欄位。於若干實施例中,SIMD向量子位元組解壓縮指令可經解碼成且具現為微碼指令之一序列或多序列。於替代實施例中,SIMD向量子位元組解壓縮可具現為巨集指令之一序列或多序列。
圖15B例示針對提供SIMD向量子位元組解壓縮功能之一方法1503之一替代實施例之流程圖。方法1502始於處理方塊1520,於該處存取得自一向量暫存器(例如於實體暫存器檔案單元458中)或得自記憶體的一資料來源SRC1,及針對1-位元至7-位元子位元組資料元件之一大小指示器。於處理方塊1540中,於準備移位中,含至少一第一子位元組元件之一第一及第二位元組係混洗或複製入一第一向量元件之一最低有效部分,含至少一第二子位元組元件之一第三及第四位元組係混洗或複製入該第一向量元件之一最高有效部分。於處理方塊1545中,於準備移位中,含至少一第三子位元組元件之一第五及第六位元組係混洗 或複製入一第二向量元件之一最低有效部分,含至少一第四子位元組元件之一第七及第八位元組係混洗或複製入該第二向量元件之一最高有效部分。再度須瞭解該等第一及第二子位元組元件兩者可具有相同初位元對齊,及該等第三及第四子位元組元件兩者也可具有相同初位元對齊。於處理方塊1550中,保有該等第一及第二子位元組元件之該第一向量元件係被移位達一第一移位計數,及於處理方塊1555中,保有該等第三及第四子位元組元件之該第二向量元件係被移位達一第二移位計數以對齊該等子位元組元件至其個別位元組之一最低有效位元。於一個實施例中,此等移位係藉SIMD移位器在32-位元向量元件上併同進行。於替代實施例中,取而代之可使用更小的或更大的移位,且非全部移位可併同進行。
於處理方塊1560中,得自已移位之第一及第二向量元件之最低有效部分各自之一位元組係混洗或複製入一第一目的地向量元件,及於處理方塊1565中,得自已移位之第一及第二向量元件之最高有效部分各自之一位元組係混洗或複製入一第二目的地向量元件以至少部分地恢復其原始子位元組順序。於一個實施例中,該混洗或複製可藉SIMD混洗器根據從解碼一或多個指令所產生的單一微操作或micro-op進行以提供SIMD向量子位元組解壓縮功能。於替代實施例中,該混洗或複製可藉SIMD混洗器或其它SIMD執行單元根據多於一個微操作或micro-op執行。於處理方塊1570中,該等第一及第二目的地向量元件係摻混一 中間向量之向量元件,該摻混例如根據從解碼該等一或多個指令所產生的SIMD 32-位元摻混微操作或micro-op進行以提供SIMD向量子位元組解壓縮功能。於若干替代實施例中,該摻混也可藉SIMD混洗器及/或其它SIMD執行單元執行。於處理方塊1580中,該經摻混目的地向量之各個位元組之最高有效位元之一數目係經校正或遮罩。於一個實施例中,校正位元之數目設定於該經摻混目的地向量元件之各個位元組中之k位元為零,於該處k係等於8減該大小指示器。於替代實施例中,校正位元之數目可符號擴延各個子位元組元件至一有符號位元組。於處理方塊1590中,已解壓縮子位元組結果係儲存入一向量目的地DEST,或為一向量暫存器(例如於實體暫存器檔案單元458中)或為記憶體內之一向量,及方法1502終止。
係如前文描述,方法1501、1502及此處揭示之其它方法可藉處理方塊進行,其可包含可由通用機器或由特用機器或由兩者的組合執行之專用硬體或軟體或韌體操作碼。以下例如為呈軟體或微碼提供256-位元SIMD向量子位元組解壓縮功能之一個實施例之範例。
圖15C例示針對提供SIMD向量子位元組解壓縮功能之一方法1503之另一替代實施例之流程圖。方法1503始於處理方塊1511,於該處一集合之低混洗指數及一集合之高混洗指數從由該子位元組元件大小所檢索之一混洗指數表(例如混洗表1)載入向量暫存器mm_lo及mm_hi(例如實體暫存器檔案單元458內之一向量暫存器)內。於處理方塊 1516中,一集合之低移位計數及一集合之高移位計數從由該子位元組元件大小所檢索之一計數表(例如移位表)載入向量暫存器mm_clo及mm_chi內。於處理方塊1521中,一集合之終混洗指數從一混洗指數表(例如混洗表2)載入一向量暫存器mm_end內。於處理方塊1521中,一集合之逐一位元遮罩位元組係從由該子位元組元件大小所檢索之一遮罩表載入一向量暫存器mm_masks內。
於處理方塊1531中,一資料來源SRC1(例如實體暫存器檔案單元458內之一向量暫存器)係從記憶體中之Data[i]載入。於處理方塊1540中,於準備移位中,含有至少一第一子位元組元件之一或多個位元組係根據於mm_lo中之該集合之低混洗指數,而從SRC1混洗或複製入一第一向量元件之一最低有效部分,及含有至少一第二子位元組元件之一或多個位元組係混洗或複製入該第一向量元件之一最高有效部分。於處理方塊1545中,於準備移位中,含有至少一第三子位元組元件之一或多個位元組係根據於mm_hi中之該集合之高混洗指數,而從SRC1混洗或複製入一第二向量元件之一最低有效部分,及含有至少一第四子位元組元件之一或多個位元組係混洗或複製入該第二向量元件之一最高有效部分。須瞭解該等第一及第二子位元組元件兩者可具有相同初位元對齊,及該等第三及第四子位元組元件兩者可具有相同初位元對齊。於處理方塊1550中,保有該等第一及第二子位元組元件之該第一向量元件係根據於mm_clo中之該集合之低移位計數以一第一移位計 數移位,及於處理方塊1555中,保有該等第三及第四子位元組元件之該第二向量元件係根據於mm_chi中之該集合之高移位計數以一第二移位計數移位,以將該等子位元組元件對齊至其個別位元組的一最低有效位元。於一個實施例中,此等移位係在32-位元向量元件上藉SIMD移位器併同執行。於替代實施例中,取而代之可使用更小的或更大的移位,及並非全部移位皆可併同執行。
於處理方塊1560中,得自低移位向量元件之最低有效部分各自的一位元組係根據於mm_end中之該集合之終混洗指數而混洗或複製入一第一目的地向量元件,及得自低移位向量元件之最高有效部分各自的一位元組係根據於mm_end中之該集合之終混洗指數而混洗或複製入一第二目的地向量元件,以至少部分地恢復其原始子位元組順序。於處理方塊1565中,得自高移位向量元件之最低有效部分各自的一位元組係根據於mm_end中之該集合之終混洗指數而混洗或複製入一第一目的地向量元件,及得自高移位向量元件之最高有效部分各自的一位元組係根據於mm_end中之該集合之終混洗指數而混洗或複製入一第二目的地向量元件,以至少部分地恢復其原始子位元組順序。於一個實施例中,該混洗或複製可依據從解碼一或多個指令所產生的一單一微操作或micro-op,藉SIMD混洗器併同地執行以提供SIMD向量子位元組解壓縮功能。於處理方塊1570中,由處理方塊1560所產生的目的地向量元件可摻混由處理方塊1565所產生的目的地向量元件,例如根據 從解碼一或多個指令所產生的一SIMD 32-位元摻混微操作或micro-op,藉SIMD混洗器併同地執行以提供SIMD向量子位元組解壓縮功能。於若干替代實施例中,該摻混也可藉SIMD混洗器及/或其它SIMD執行單元執行。於處理方塊1580中,該經摻混之目的地向量mm_DEST之各個位元組之最高有效位元之數目係經校正或遮罩(例如使用mm_masks)。於一個實施例中,校正位元之數目設定於該經摻混目的地向量元件之各個位元組中之k位元為零,於該處k係等於8減該大小指示器。於替代實施例中,校正位元之數目可符號擴延各個子位元組元件至一有符號位元組。於處理方塊1590中,儲存入一向量目的地mm_DEST中之已解壓縮子位元組結果可寫出至記憶體作為未經壓縮的位元組。於處理方塊1595中,進行一測試以決定該經壓縮之子位元組元件是否全部皆已經處理。若否,則處理始於處理方塊1531迭代重複。否則中止方法1503。
須瞭解如上實施例中,SIMD向量子位元組解壓縮指令可用於例如於大型資料庫中,從每個元件格式壓縮1-位元至7-位元之資料欄位有效向量解壓縮成每個位元組元件格式8-位元之資料欄位。於若干實施例中,SIMD向量子位元組解壓縮指令可經解碼成且具現為微碼指令之一序列或多序列。於替代實施例中,SIMD向量子位元組解壓縮可具現為巨集指令之一序列或多序列。
圖16A例示用以執行一指令或方法以提供SIMD向量子位元組解壓縮功能之一設備1601之一實施例。設備 1601及此處揭示之其它設備之實施例可為用以執行一指令或方法以提供SIMD向量子位元組解壓縮功能之一管線400之一部分(例如執行階段416)或一核心490之一部件(例如執行單元462)。該SIMD向量子位元組解壓縮功能之實施例可提供作為單一SIMD巨集指令,其可實行為一序列之微操作或micro-op(例如其可包括UOP 1661、UOP 1663、UOP 1665、UOP 1667及UOP 1669)。依據若干替代實施例,SIMD向量子位元組解壓縮功能可提供為一序列之二或多個SIMD巨集指令(例如VBitHdcomprsUB,其可包括UOP 1661、UOP 1663及UOP 1665),然後其結果可一起組合(例如使用UOP 1667及UOP 1669)以完成原始子位元組順序。設備1601及此處揭示之其它設備之實施例可耦合一解碼階段(例如解碼406)或一解碼器(例如解碼單元440)以解碼用於一SIMD向量子位元組解壓縮之一指令,其可允許從每個元件格式壓縮1-位元至7-位元有效向量解壓縮成每個位元組元件格式8-位元。例示之實施例係類似於圖14B中從每個元件格式壓縮2-位元向量解壓縮成每個位元組元件格式8-位元之該實施例。
於一個實施例中一或多個執行單元(例如執行設備1601之混洗器1605)回應於一單一解碼指令指明:一向量子位元組解壓縮操作、位元組元件之一目的地向量(例如向量暫存器1650)、子位元組元件之一來源(例如16-位元組來源記憶體向量運算元或向量暫存器1611),及一子位元組元件大小;從該來源向量1611,複製或混洗含有一第一位元 對齊之一第一子位元組元件(例如a)之一第一兩個位元組(例如位元組0-1)成一中間向量暫存器1615之一第一32-位元向量元件之一最低有效部分,及含有該相同第一位元對齊之一第二子位元組元件(例如i)之一第二兩個位元組(例如位元組2-3)成該第一32-位元向量元件之一最高有效部分。舉例言之,設備1601之實施例可耦合包含各種多數n個可變大小資料欄位之向量暫存器(例如實體暫存器檔案單元458)以儲存各種多數n個可變大小資料元件之值。然後該等一或多個執行單元(例如混洗器1605)可從該來源向量1611,複製或混洗含有一第二位元對齊之一第三子位元組元件(例如b)之一第三兩個位元組(例如位元組0-1)成一中間向量暫存器1615之一第二32-位元向量元件之一最低有效部分,及含有該相同第二位元對齊之一第四子位元組元件(例如j)之一第四兩個位元組(例如位元組2-3)成該第二32-位元向量元件之一最高有效部分。於一個實施例中,該中間向量暫存器1615可為一64-位元向量暫存器,其中該等第一及第二32-位元向量元件可表示該整個中間向量暫存器1615。於一替代實施例中,中間向量暫存器1615可為一256-位元向量暫存器,其中該中間向量暫存器1615可具有32位元組或八個32-位元向量元件之一容量。
於圖16A例示之該實施例中,中間向量暫存器1615可為一128-位元向量暫存器,其中該中間向量暫存器1615可具有16位元組或四個32-位元向量元件之一容量。因此,該等一或多個執行單元(例如混洗器1605)可從該來源向 量1611,複製或混洗含有一第三位元對齊之一第五子位元組元件(例如c)之一第五兩個位元組(例如位元組0-1)成一中間向量暫存器1615之一第三32-位元向量元件之一最低有效部分,及含有該相同第三位元對齊之一第六子位元組元件(例如k)之一第六兩個位元組(例如位元組2-3)成該第三32-位元向量元件之一最高有效部分;含有一第四位元對齊之一第七子位元組元件(例如d)之一第七兩個位元組(例如位元組0-1)成一中間向量暫存器1615之一第四32-位元向量元件之一最低有效部分,及含有該相同第四位元對齊之一第八子位元組元件(例如l)之一第八兩個位元組(例如位元組2-3)成該第四32-位元向量元件之一最高有效部分。
然後該等一或多個執行單元(例如執行設備1601之移位器1617)可移位該第一32-位元向量元件達一第一移位計數(例如0)及該第二32-位元向量元件達一第二移位計數(例如2)以將該等子位元組元件對齊至於中間向量暫存器1625中其個別位元組之一最低有效位元。如圖16A中例示,取決於該中間向量暫存器之大小,該等一或多個執行單元(例如移位器1617)也可移位一第三32-位元向量元件達一第三移位計數(例如4)及一第四32-位元向量元件達一第四移位計數(例如6)以將該等子位元組元件對齊至於中間向量暫存器1625中其個別位元組之一最低有效位元。如此藉將相似位元對齊的子位元組元件群集在一起,多個子位元組元件可藉移位器1617之各個個別32-位元移位器而排齊其個別位元組之一最低有效位元。須瞭解因針對該等子位元組 元件至多有八個可能的位元對齊,故處理16元件非常適合使用移位器1617之個別32-位元移位器。於替代實施例中,也可使用個別16-位元或64-位元移位器。
於一個實施例中,回應於單一解碼指令,該等一或多個執行單元(例如執行設備1601之混洗器1609)可將一個位元組從移位第一、第二、第三及第四32-位元向量元件的最低有效部分之該中間向量暫存器1625各自(例如分別地含有a、b、c及d)混洗入一第一(潛在中間)目的地32-位元向量元件,及從移位第一、第二、第三及第四32-位元向量元件的最高有效部分之該中間向量暫存器1625各自(例如分別地含有i、j、k及l)混洗入一第二(潛在中間)目的地32-位元向量元件以至少部分地恢復其原始子位元組順序。
須瞭解回應於類似的單一解碼指令(例如VBitHdcmprsUB)或微碼序列1661、1663、1665,於一個實施例中,一或多個執行單元(例如混洗器1609)如同於向量暫存器1631,其可相對應於向量暫存器1431,也可產生一第三及一第四(潛在中間)目的地32-位元向量元件。然後,該等一或多個執行單元(例如執行設備1601之摻混器1634)可摻混向量暫存器1630之該等第一及第二(潛在中間)目的地向量元件與向量暫存器1631之該等第三及第四(潛在中間)目的地向量元件,藉此在(潛在中間)向量暫存器1635中產生兩倍量的解壓縮子位元組元件。於一個實施例中,該等一或多個執行單元(例如執行設備1601之ALU 1644)可校正或遮罩經摻混之(潛在中間)向量暫存器1635之各個位元組之 位元數目(例如等於8減指定子位元組元件大小)以產生位元組元件之解壓縮目的地向量(例如向量暫存器1650)。
圖16B例示用以執行一指令或方法以提供SIMD向量子位元組解壓縮功能之一設備1602之一替代實施例。該SIMD向量子位元組解壓縮功能之實施例可提供作為單一SIMD巨集指令,其可實行為一序列之微操作或micro-op(例如其可包括UOP 1661、UOP 1663、UOP 1665、UOP 1666及UOP 1669)。依據若干替代實施例,SIMD向量子位元組解壓縮功能可提供為一序列之二或多個SIMD巨集指令(例如VBitHdcomprsUB,其可包括UOP 1661及UOP 1663),然後其結果可一起組合(例如使用UOP 1665、UOP 1666及UOP 1669)以完成原始子位元組順序。設備1602及此處揭示之其它設備之實施例可耦合一解碼階段(例如解碼406)或一解碼器(例如解碼單元440)以解碼用於一SIMD向量子位元組解壓縮之一指令,其可允許從每個元件格式壓縮1-位元至7-位元有效向量解壓縮成每個位元組元件格式8-位元。例示之實施例係類似於圖14B中從每個元件格式壓縮2-位元向量解壓縮成每個位元組元件格式8-位元之該實施例。
於一個實施例中一或多個執行單元(例如執行設備1602之混洗器1605)回應於一單一解碼指令指明:一向量子位元組解壓縮操作、位元組元件之一目的地向量(例如向量暫存器1650)、子位元組元件之一來源(例如16-位元組來源記憶體向量運算元或向量暫存器1611),及一子位元組元 件大小;從該來源向量1611,複製或混洗含有一第一位元對齊之一第一子位元組元件(例如a)之一第一兩個位元組(例如位元組0-1)成一中間向量暫存器1615之一第一32-位元向量元件之一最低有效部分,及含有該相同第一位元對齊之一第二子位元組元件(例如i)之一第二兩個位元組(例如位元組2-3)成該第一32-位元向量元件之一最高有效部分。舉例言之,設備1602之實施例可耦合包含各種多數n個可變大小資料欄位之向量暫存器(例如實體暫存器檔案單元458)以儲存各種多數n個可變大小資料元件之值。然後該等一或多個執行單元(例如混洗器1605)可從該來源向量1611,複製或混洗含有一第二位元對齊之一第三子位元組元件(例如b)之一第三兩個位元組(例如位元組0-1)成一中間向量暫存器1615之一第二32-位元向量元件之一最低有效部分,及含有該相同第二位元對齊之一第四子位元組元件(例如j)之一第四兩個位元組(例如位元組2-3)成該第二32-位元向量元件之一最高有效部分。於一個實施例中,該中間向量暫存器1615可為一64-位元向量暫存器,其中該等第一及第二32-位元向量元件可表示該整個中間向量暫存器1615。於一替代實施例中,中間向量暫存器1615可為一256-位元向量暫存器,其中該中間向量暫存器1615可具有32位元組或八個32-位元向量元件之一容量。
於圖16B例示之該實施例中,中間向量暫存器1615可為一128-位元向量暫存器,其中該中間向量暫存器1615可具有16位元組或四個32-位元向量元件之一容量。因 此,該等一或多個執行單元(例如混洗器1605)可從該來源向量1611,複製或混洗含有一第三位元對齊之一第五子位元組元件(例如c)之一第五兩個位元組(例如位元組0-1)成一中間向量暫存器1615之一第三32-位元向量元件之一最低有效部分,及含有該相同第三位元對齊之一第六子位元組元件(例如k)之一第六兩個位元組(例如位元組2-3)成該第三32-位元向量元件之一最高有效部分;含有一第四位元對齊之一第七子位元組元件(例如d)之一第七兩個位元組(例如位元組0-1)成一中間向量暫存器1615之一第四32-位元向量元件之一最低有效部分,及含有該相同第四位元對齊之一第八子位元組元件(例如l)之一第八兩個位元組(例如位元組2-3)成該第四32-位元向量元件之一最高有效部分。
然後該等一或多個執行單元(例如執行設備1602之移位器1617)可移位該第一32-位元向量元件達一第一移位計數(例如0)及該第二32-位元向量元件達一第二移位計數(例如2)以將該等子位元組元件對齊至於中間向量暫存器1625中其個別位元組之一最低有效位元。如圖16B中例示,取決於該中間向量暫存器之大小,該等一或多個執行單元(例如移位器1617)也可移位一第三32-位元向量元件達一第三移位計數(例如4)及一第四32-位元向量元件達一第四移位計數(例如6)以將該等子位元組元件對齊至於中間向量暫存器1625中其個別位元組之一最低有效位元。如此藉將相似位元對齊的子位元組元件群集在一起,多個子位元組元件可藉移位器1617之各個個別32-位元移位器而排齊其個 別位元組之一最低有效位元。須瞭解因針對該等子位元組元件至多有八個可能的位元對齊,故處理16元件非常適合使用移位器1617之個別32-位元移位器。於替代實施例中,也可使用個別16-位元或64-位元移位器。
於一個實施例中,回應於單一解碼指令,該等一或多個執行單元(例如執行設備1602之混洗器1609)可將一個位元組從移位第一、第二、第三及第四32-位元向量元件的最低有效部分之該中間向量暫存器1625各自(例如分別地含有a、b、c及d)混洗入一第一(潛在中間)目的地32-位元向量元件(例如於向量暫存器1630中),及從移位第一、第二、第三及第四32-位元向量元件的最高有效部分之該中間向量暫存器1625各自(例如分別地含有i、j、k及l)混洗入一第二(潛在中間)目的地32-位元向量元件(例如於向量暫存器1630中)以至少部分地恢復其原始子位元組順序。
須瞭解回應於類似的單一解碼指令(例如VBitHdcmprsUB)或微碼序列1661、1663,於一個實施例中,一或多個執行單元(例如移位器1617)也可對齊一奇半通道之子位元組元件至於中間向量暫存器1626,其可相對應於向量暫存器1426,內之其個別位元組之一最低有效位元。該等一或多個執行單元(例如執行設備1602之混洗器1619)可將一個位元組從移位第一、第二、第三及第四32-位元向量元件的最低有效部分之該中間向量暫存器1626各自(例如分別地含有e、f、g及h)混洗入一第三(潛在中間)目的地32-位元向量元件(例如於向量暫存器1630中),及從移 位第一、第二、第三及第四32-位元向量元件的最高有效部分之該中間向量暫存器1626各自(例如分別地含有m、n、o及p)混洗入一第四(潛在中間)目的地32-位元向量元件(例如於向量暫存器1630中)以至少部分地恢復其原始子位元組順序,從而產生兩倍多的經解壓縮之子位元組元件於(潛在中間)向量暫存器1630中。於一個實施例中,微操作UOP 1666可使用一遮罩運算元以免覆寫向量暫存器1630中之該等第一及第二(潛在中間)目的地32-位元向量元件。
於一個實施例中,該等一或多個執行單元(例如執行設備1602之ALU 1644)可校正或遮罩該(潛在中間的)目的地向量暫存器1630之各個位元組之一位元數目(例如等於8減所指明的子位元組元件大小)以產生位元組元件之一解壓縮目的地向量(例如向量暫存器1650)。
圖16C例示用以執行一指令或方法以提供SIMD向量子位元組解壓縮功能之一設備1603之一替代實施例。該SIMD向量子位元組解壓縮功能之實施例可提供作為單一SIMD巨集指令,其可實行為一序列之微操作或micro-op(例如其可包括UOP 1661、UOP 1663、UOP 1665及UOP 1669)。設備1603及此處揭示之其它設備之實施例可耦合一解碼階段(例如解碼406)或一解碼器(例如解碼單元440)以解碼用於一SIMD向量子位元組解壓縮又產生一序列之微操作或micro-op之一指令,其可允許從每個元件格式壓縮1-位元、2-位元或4-位元有效向量解壓縮成每個位元組元件格式8-位元。例示之實施例係類似於圖14C中從每個元 件格式壓縮2-位元向量解壓縮成每個位元組元件格式8-位元之該實施例。
於一個實施例中一或多個執行單元(例如執行設備1603之混洗器1605)回應於一單一解碼指令指明:一向量子位元組解壓縮操作、位元組元件之一目的地向量(例如向量暫存器1650)、子位元組元件之一來源(例如16-位元組來源記憶體向量運算元或向量暫存器1611),及一子位元組元件大小;從該來源向量1611,複製或混洗含有一第一位元對齊之子位元組元件(例如a及e)之一第一兩個位元組(例如位元組0-1)成一中間向量暫存器1615之一第一32-位元向量元件之一最低有效部分,及含有該相同第一位元對齊之子位元組元件(例如i及m)之一第二兩個位元組(例如位元組2-3)成該第一32-位元向量元件之一最高有效部分。舉例言之,設備1603之實施例可耦合包含各種多數n個可變大小資料欄位之向量暫存器(例如實體暫存器檔案單元458)以儲存各種多數n個可變大小資料元件之值。然後該等一或多個執行單元(例如混洗器1605)可從該來源向量1611,複製或混洗含有一第二位元對齊之子位元組元件(例如b及f)之一第三兩個位元組(例如位元組0-1)成一中間向量暫存器1615之一第二32-位元向量元件之一最低有效部分,及含有該相同第二位元對齊之子位元組元件(例如j及n)之一第四兩個位元組(例如位元組2-3)成該第二32-位元向量元件之一最高有效部分。於一個實施例中,該中間向量暫存器1615可為一64-位元向量暫存器,其中該等第一及第二32-位元向量元件 可表示該整個中間向量暫存器1615。於一替代實施例中,中間向量暫存器1615可為一256-位元向量暫存器,其中該中間向量暫存器1615可具有32位元組或八個32-位元向量元件之一容量。
於圖16C例示之該實施例中,中間向量暫存器1615可為一128-位元向量暫存器,其中該中間向量暫存器1615可具有16位元組或四個32-位元向量元件之一容量。因此,該等一或多個執行單元(例如混洗器1605)可從該來源向量1611,複製或混洗含有一第三位元對齊之子位元組元件(例如c及g)之一第五兩個位元組(例如位元組0-1)成一中間向量暫存器1615之一第三32-位元向量元件之一最低有效部分,及含有該相同第三位元對齊之子位元組元件(例如k及o)之一第六兩個位元組(例如位元組2-3)成該第三32-位元向量元件之一最高有效部分;含有一第四位元對齊之子位元組元件(例如d及h)之一第七兩個位元組(例如位元組0-1)成一中間向量暫存器1615之一第四32-位元向量元件之一最低有效部分,及含有該相同第四位元對齊之子位元組元件(例如l及p)之一第八兩個位元組(例如位元組2-3)成該第四32-位元向量元件之一最高有效部分。
然後該等一或多個執行單元(例如執行設備1603之移位器1617)可移位該第一32-位元向量元件達一第一移位計數(例如0)及該第二32-位元向量元件達一第二移位計數(例如2)以將該等子位元組元件對齊至於中間向量暫存器1625中其個別位元組之一最低有效位元。如圖16B中例示, 取決於該中間向量暫存器之大小,該等一或多個執行單元(例如移位器1617)也可移位一第三32-位元向量元件達一第三移位計數(例如4)及一第四32-位元向量元件達一第四移位計數(例如6)以將該等子位元組元件對齊至於中間向量暫存器1625中其個別位元組之一最低有效位元。如此藉將相似位元對齊的子位元組元件群集在一起,多個子位元組元件可藉移位器1617之各個個別32-位元移位器而排齊其個別位元組之一最低有效位元。須瞭解因針對該等子位元組元件至多有八個可能的位元對齊,故處理16元件非常適合使用移位器1617之個別32-位元移位器。於替代實施例中,也可使用個別8-位元、16-位元或64-位元移位器。
於一個實施例中,回應於單一解碼指令,該等一或多個執行單元(例如執行設備1603之混洗器1609)可將一個位元組從移位第一、第二、第三及第四32-位元向量元件的最低有效部分之該中間向量暫存器1625各自(例如分別地含有a、b、c及d)混洗入一第一(潛在中間)目的地32-位元向量元件(例如於向量暫存器1630中);從移位第一、第二、第三及第四32-位元向量元件的最低有效部分之該中間向量暫存器1625各自(例如分別地含有e、f、g及h)混洗入一第二(潛在中間)目的地32-位元向量元件(例如於向量暫存器1630中);從移位第一、第二、第三及第四32-位元向量元件的最高有效部分之該中間向量暫存器1625各自(例如分別地含有i、j、k及l)混洗入一第三(潛在中間)目的地32-位元向量元件(例如於向量暫存器1630中);及從移位第一、第 二、第三及第四32-位元向量元件的最高有效部分之該中間向量暫存器1625各自(例如分別地含有m、n、o及p)混洗入一第四(潛在中間)目的地32-位元向量元件(例如於向量暫存器1630中)以至少部分地恢復其原始子位元組順序。
於一個實施例中,該等一或多個執行單元(例如執行設備1602之ALU 1644)可校正或遮罩該(潛在中間的)目的地向量暫存器1630之各個位元組之一位元數目(例如等於8減所指明的子位元組元件大小)以產生位元組元件之一解壓縮目的地向量(例如向量暫存器1650)。
須瞭解如上實施例中,SIMD向量子位元組解壓縮指令可用於例如於大型資料庫中,從每個元件格式壓縮1-位元至7-位元之資料欄位有效向量解壓縮成每個位元組元件格式8-位元之資料欄位。於若干實施例中,SIMD向量子位元組解壓縮指令可經解碼成且具現為微碼指令之一序列或多序列。於替代實施例中,SIMD向量子位元組解壓縮可具現為巨集指令之一序列或多序列。
此處揭示之機制之實施例可於硬體、軟體、韌體、或此等具現辦法之組合中具現。本發明之實施例可具現為電腦程式或在可規劃系統包含至少一個處理器、一儲存系統(包括依電性及非依電性記憶體及/或儲存元件)、至少一個輸入裝置、及至少一個輸出裝置上執行的程式碼。
程式碼可施加至輸入指令以執行此處描述的功能及產生輸出資訊。輸出資訊可以已知方式施用至一或多個輸出裝置。用於本案之目的,一處理系統包括具有一處 理器之任何系統,諸如:數位信號處理器(DSP)、微控制器、特定應用積體電路(ASIC)、或微處理器。
該程式碼可於一高階程序導向或對象導向之程式語言中具現以與一處理系統通訊。若有所需,該程式碼也可於組合語言或機器語言中具現。實際上,此處描述的機制之範圍並非限於任何特定程式語言。總而言之,該語言可為編譯語言或解譯語言。
至少一個實施例之一或多個面向可藉儲存於一機器可讀取媒體上的代表性指令具現,其表示在該處理器內部之各種邏輯,該等指令當由一機器讀取時使得該機器製作邏輯以實行此處描述的該等技術。稱作為「IP核心」的此等表示型態可儲存於一有形機器可讀取媒體上及供應各種客戶或製造設備以載入實際上製作該邏輯或處理器的製造機器內。
此等機器可讀取儲存媒體可包括,但非限制性,由機器或裝置所製造或形成的非過渡物件之有形配置,包括儲存媒體諸如硬碟、任何其它型別之碟片包括軟碟、光碟、光碟-唯讀記憶體(CD-ROM)、可覆寫式光碟(CD-RW)、及磁光碟、半導體裝置諸如唯讀記憶體(ROM)、隨機存取記憶體(RAM)諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可規劃唯讀記憶體(EPROM)、快閃記憶體、可電氣抹除可規劃唯讀記憶體(EEPROM)、磁卡或光卡、或任何其它型別之適用以儲存電子指令之媒體。
據此,本發明之實施例也包括含有指令或含有設 計資料之非過渡有形機器可讀取媒體,諸如硬體描述語言(HDL)其定義此處描述的結構、電路、設備、處理器及/或系統特性件。此等實施例也可稱作程式產品。
於某些情況下,一指令轉換器可用以將一指令從一來源指令集轉換成一目標指令集。舉例言之,該指令轉換器可將一指令轉譯(例如使用靜態二進制轉譯、動態二進制轉譯含動態編譯)、變態、模擬、或以其它方式將一指令轉換成欲藉該核心處理的一或多個其它指令。該指令轉換器可於軟體、硬體、韌體、或其組合內具現。該指令轉換器可在處理器上、非在處理器上、或部分在及部分非在處理器上。
如此,揭示依據至少一個實施例執行一或多個指令之技術。雖然於附圖中已經描述與顯示某些具體實施例,但須瞭解此等實施例僅供例示而非限制廣義發明,及本發明並非限於所顯示的及所描述的特定組構及配置,多種其它修正為熟諳技藝人士當研讀本文揭示時所顯然易知。於一區之技術中諸如本技術,於該處成長快速且未來進展不易預知,不背離本文揭示之原理或隨附申請專利範圍各項之範圍,該等揭示之實施例於配置及細節上借助於技術之進展容易被修改。
200‧‧‧處理器
201‧‧‧有序前端
202‧‧‧快速排程器
203‧‧‧亂序執行引擎
204‧‧‧慢/通用浮點排程器
206‧‧‧簡單浮點排程器
208、210‧‧‧暫存器檔案
211‧‧‧執行區塊
212、214‧‧‧位址生成單元(AGU)
216、218‧‧‧快ALU
220‧‧‧慢ALU
222‧‧‧浮點ALU
224‧‧‧浮點移動單元
226‧‧‧指令預提取器
228‧‧‧指令解碼器
230‧‧‧軌跡快取
232‧‧‧微碼ROM
234‧‧‧uop佇列

Claims (38)

  1. 一種處理器,其包含:一解碼級,用以解碼一第一指令,其指明一向量子位元組解壓縮操作、位元組元件之一目的地向量、子位元組元件之一來源及一子位元組元件大小;以及一或多個執行單元,回應於該經解碼之第一指令,以進行下列動作:從該來源,將含有一第一位元對齊之一第一子位元組元件之一第一兩個位元組混洗入一第一向量元件之一最低有效部分,及將含有相同之該第一位元對齊之一第二子位元組元件之一第二兩個位元組混洗入該第一向量元件之一最高有效部分;從該來源,將含有一第二位元對齊之一第三子位元組元件之一第三兩個位元組混洗入一第二向量元件之一最低有效部分,及將含有相同之該第二位元對齊之一第四子位元組元件之一第四兩個位元組混洗入該第二向量元件之一最高有效部分;移位該第一向量元件達一第一移位計數及該第二向量元件達一第二移位計數以將該等子位元組元件對齊至其個別位元組之一最低有效位元;以及將來自各個該等經移位之第一及第二向量元件的最低有效部分之一位元組混洗入一第一目的 地向量元件,及將來自各個該等經移位之第一及第二向量元件的最高有效部分之一位元組混洗入一第二目的地向量元件,以至少部分地恢復其原始子位元組順序。
  2. 如請求項1之處理器,其中該等第一兩個位元組及第二兩個位元組係與該等第三兩個位元組及第四兩個位元組相同。
  3. 如請求項1之處理器,其中該等第一兩個位元組含有相同之該第一位元對齊之一第五子位元組元件,該等第二兩個位元組含有相同之該第一位元對齊之一第六子位元組元件,該等第三兩個位元組含有相同之該第二位元對齊之一第七子位元組元件,及該等第四兩個位元組含有相同之該第二位元對齊之一第八子位元組元件。
  4. 如請求項1之處理器,該等一或多個執行單元進一步回應於該經解碼之第一指令,用以進行下列動作:摻混該等第一及第二目的地向量元件與一中間向量之向量元件;以及校正該經摻混之目的地向量的各個位元組之一些位元。
  5. 如請求項4之處理器,其中校正該些位元的動作將於該經摻混之目的地向量元件之各個位元組中之k位元設定為零,且k係等於8減該經指明之子位元組元件大小。
  6. 如請求項4之處理器,其中校正該些位元的動作將於該經摻混之目的地向量元件之各個位元組中之k位元設定 等於該個別子位元組元件之一最高有效位元,且k係等於8減該經指明之子位元組元件大小。
  7. 一種處理器,其包含:一記憶體,用以保有指明從子位元組元件之一來源至位元組元件之一目的地向量的一向量子位元組解壓縮操作之一或多個指令;一解碼級,用以解碼指明該向量子位元組解壓縮操作的該等一或多個指令;一或多個執行單元,回應於該等一或多個經解碼指令,以進行下列動作:從該來源,將含有一第一位元對齊之一第一子位元組元件之一第一兩個位元組複製入一第一向量元件之一最低有效部分,及將含有相同之該第一位元對齊之一第二子位元組元件之一第二兩個位元組複製入該第一向量元件之一最高有效部分;從該來源,將含有一第二位元對齊之一第三子位元組元件之一第三兩個位元組複製入一第二向量元件之一最低有效部分,及將含有相同之該第二位元對齊之一第四子位元組元件之一第四兩個位元組複製入該第二向量元件之一最高有效部分;移位該第一向量元件達一第一移位計數及該第二向量元件達一第二移位計數以將該等子位元組元件對齊至其個別位元組之一最低有效位元;以及 將來自各個該等經移位之第一及第二向量元件的最低有效部分之一位元組複製入一第一目的地向量元件,及將來自各個該等經移位之第一及第二向量元件的最高有效部分之一位元組複製入一第二目的地向量元件,以至少部分地恢復其原始子位元組順序。
  8. 如請求項7之處理器,該等一或多個執行單元進一步回應於該等一或多個經解碼之指令,用以進行下列動作:遮罩該等目的地向量元件之各個位元組的一些位元。
  9. 如請求項8之處理器,其中該等第一兩個位元組及第二兩個位元組係與該等第三兩個位元組及第四兩個位元組相同。
  10. 如請求項7之處理器,該等一或多個執行單元進一步回應於該等一或多個經解碼之指令,用以進行下列動作:從該來源,將含有一第三位元對齊之一第五子位元組元件之一第五兩個位元組複製入一第三向量元件之一最低有效部分,及將含有相同之該第三位元對齊之一第六子位元組元件之一第六兩個位元組複製入該第三向量元件之一最高有效部分;從該來源,將含有一第四位元對齊之一第七子位元組元件之一第七兩個位元組複製入一第四向量元件之一最低有效部分,及將含有相同之該第四位元對齊之一第八子位元組元件之一第八兩個位元組複製入該第四 向量元件之一最高有效部分;移位該第三向量元件達一第三移位計數及該第四向量元件達一第四移位計數以將該等子位元組元件對齊至其個別位元組之一最低有效位元;以及將來自各個該等經移位之第三及第四向量元件的最低有效部分之一位元組複製入一第一中間向量元件,及將來自各個從該等經移位之第三及第四向量元件的最高有效部分之一位元組複製入一第二中間向量元件,以至少部分地恢復其原始子位元組順序。
  11. 如請求項7之處理器,該等一或多個執行單元進一步回應於該等一或多個經解碼之指令,用以進行下列動作:將該等第三及第四中間向量元件與該等第一及第二目的地向量元件摻混成該目的地向量;以及校正該經摻混之目的地向量的各個位元組之一些位元。
  12. 如請求項11之處理器,其中校正該些位元的動作將於該經摻混之目的地向量元件之各個位元組中之k位元設定為零,且k係等於8減該等子位元組元件之一大小。
  13. 如請求項7之處理器,其中該記憶體為一快取記憶體。
  14. 如請求項7之處理器,其中該記憶體為一微碼儲存記憶體。
  15. 一種用以提供向量子位元解壓縮功能之方法,其包含:將含有一第一子位元組元件之一第一及一第二位元組混洗入一第一向量元件之一最低有效部分,及將含 有一第二子位元組元件之一第三及一第四位元組混洗入該第一向量元件之一最高有效部分;將含有一第三子位元組元件之一第五及一第六位元組混洗入一第二向量元件之一最低有效部分,及將含有一第四子位元組元件之一第七及一第八位元組混洗入該第二向量元件之一最高有效部分;移位該第一向量元件達一第一移位計數及該第二向量元件達一第二移位計數以將該等子位元組元件對齊至其個別位元組之一最低有效位元;以及將來自各個該等經移位之第一及第二向量元件的最低有效部分之一位元組混洗入一第一目的地向量元件,及將來自各個該等經移位之第一及第二向量元件的最高有效部分之一位元組混洗入一第二目的地向量元件以至少部分地恢復其原始子位元組順序。
  16. 如請求項15之方法,其進一步包含:遮罩該等目的地向量元件之各個位元組的一些位元。
  17. 如請求項16之方法,其中該目的地向量元件保有至少4位元組。
  18. 如請求項17之方法,其中該目的地向量元件保有至少8位元組。
  19. 如請求項16之方法,其中遮罩該些位元之步驟將於該目的地向量元件之各個位元組中之k位元設定為零。
  20. 如請求項16之方法,其中k為1至7間之一整數。
  21. 如請求項16之方法,其中該等混洗、移位及遮罩係回應於解碼用於一向量子位元組解壓縮之一SIMD指令,藉於一微處理器中之微操作來進行。
  22. 如請求項15之方法,其進一步包含:摻混該等第一及第二目的地向量元件與一中間向量之向量元件;以及校正該經摻混之目的地向量的各個位元組之一些位元。
  23. 如請求項22之方法,其中校正該些位元之步驟將於該經摻混之目的地向量元件之各個位元組中之k位元設定為零。
  24. 如請求項22之方法,其中校正該些位元之步驟將於該經摻混之目的地向量元件之各個位元組中之k位元設定等於個別之該等子位元組元件之一最高有效位元。
  25. 一種用以記錄包括一或多個可執行指令之功能描述材料之機器可讀取媒體,該等指令若代表一機器之一執行緒而被執行時,致使該機器用以進行下列動作:將含有一第一位元對齊的一第一子位元組元件之一第一及一第二位元組混洗入一第一向量元件之一最低有效部分,及將含有相同之該第一位元對齊的一第二子位元組元件之一第三及一第四位元組混洗入該第一向量元件之一最高有效部分;將含有一第二位元對齊的一第三子位元組元件之一第五及一第六位元組混洗入一第二向量元件之一最 低有效部分,及將含有相同之該第二位元對齊的一第四子位元組元件之一第七及一第八位元組混洗入該第二向量元件之一最高有效部分;移位該第一向量元件達一第一移位計數及該第二向量元件達一第二移位計數;以及將來自各個該等經移位之第一及第二向量元件的最低有效部分之一位元組混洗入一第一目的地向量元件,及將來自各個從該等經移位之第一及第二向量元件的最高有效部分之一位元組混洗入一第二目的地向量元件,以至少部分地恢復其原始子位元組順序。
  26. 如請求項25之機器可讀取媒體,其中該第二位元組含有相同之該第一位元對齊之一第五子位元組元件,該第四位元組含有相同之該第一位元對齊之一第六子位元組元件,該第六位元組含有相同之該第二位元對齊之一第七子位元組元件,及該第八位元組含有相同之該第二位元對齊之一第八子位元組元件。
  27. 如請求項26之機器可讀取媒體,其中該一或多個可執行指令若代表一機器之一執行緒而被執行時,致使該機器用以進行下列動作:將來自各個該等經移位之第一及第二向量元件的最低有效部分之另一位元組混洗入一第三目的地向量元件及來自各個該等經移位之第一及第二向量元件的最高有效部分之另一位元組混洗入一第四目的地向量元件,以至少部分地恢復其原始子位元組順序。
  28. 如請求項25之機器可讀取媒體,其中該目的地向量元件保有4位元組。
  29. 如請求項25之機器可讀取媒體,其中該目的地向量元件保有至少8位元組。
  30. 如請求項25之機器可讀取媒體,其進一步包含:摻混該等第一及第二目的地向量元件與一中間向量之向量元件;以及校正該經摻混之目的地向量的各個位元組之一些位元。
  31. 如請求項30之機器可讀取媒體,其中校正該些位元的動作將於該經摻混之目的地向量元件之各個位元組中之k位元設定為零。
  32. 如請求項31之機器可讀取媒體,其中k為1至7間之一整數。
  33. 如請求項30之機器可讀取媒體,其中校正該些位元的動作將於該經摻混之目的地向量元件之各個位元組中之k位元設定等於個別之該等子位元組元件之一最高有效位元。
  34. 一種處理系統,其包含:一系統記憶體,用以保有指明從子位元組元件之一來源至位元組元件之一目的地向量的一向量子位元組解壓縮操作之一或多個指令;以及多個處理器,各個處理器包含:一解碼級,用以解碼指明該向量子位元組解壓 縮操作的該等一或多個指令;一或多個執行單元,回應於該等一或多個經解碼指令以進行下列動作:從該來源,將含有一第一位元對齊之一第一子位元組元件之一第一兩個位元組複製入一第一向量元件之一最低有效部分,及將含有相同之該第一位元對齊之一第二子位元組元件之一第二兩個位元組複製入該第一向量元件之一最高有效部分;從該來源,將含有一第二位元對齊之一第三子位元組元件之一第三兩個位元組複製入一第二向量元件之一最低有效部分,及將含有相同之該第二位元對齊之一第四子位元組元件之一第四兩個位元組複製入該第二向量元件之一最高有效部分;移位該第一向量元件達一第一移位計數及該第二向量元件達一第二移位計數以將該等子位元組元件對齊至其個別位元組之一最低有效位元;以及將來自各個該等經移位之第一及第二向量元件的最低有效部分之一位元組複製入一第一目的地向量元件及將來自各個該等經移位之第一及第二向量元件的最高有效部分之一位元組複製入一第二目的地向量元件,以至少部分地 恢復其原始子位元組順序。
  35. 如請求項34之處理系統,該等一或多個執行單元進一步回應於該等一或多個經解碼之指令以進行下列動作:從該來源,將含有一第三位元對齊之一第五子位元組元件之一第五兩個位元組複製入一第三向量元件之一最低有效部分,及將含有相同之該第三位元對齊之一第六子位元組元件之一第六兩個位元組複製入該第三向量元件之一最高有效部分;從該來源,將含有一第四位元對齊之一第七子位元組元件之一第七兩個位元組複製入一第四向量元件之一最低有效部分,及將含有相同之該第四位元對齊之一第八子位元組元件之一第八兩個位元組複製入該第四向量元件之一最高有效部分;移位該第三向量元件達一第三移位計數及該第四向量元件達一第四移位計數以將該等子位元組元件對齊至其個別位元組之一最低有效位元;以及將來自各個該等經移位之第三及第四向量元件的最低有效部分之一位元組複製入一第一中間向量元件及將來自各個該等經移位之第三及第四向量元件的最高有效部分之一位元組複製入一第二中間向量元件以恢復其原始子位元組順序。
  36. 如請求項35之處理系統,該等一或多個執行單元進一步回應於該等一或多個經解碼之指令以進行下列動作:將該等第三及第四中間向量元件與該等第一及第 二目的地向量元件摻混成該目的地向量;以及校正該經摻混之目的地向量的各個位元組之一些位元。
  37. 如請求項36之處理系統,其中校正該些位元之動作將於該經摻混目的地向量元件之各個位元組中之k位元設定為零,且k係等於8減該等子位元組元件之一大小。
  38. 如請求項36之處理系統,其中該等目的地向量元件及中間向量元件各自保有4位元組。
TW103125319A 2013-07-31 2014-07-24 用以提供向量子位元解壓縮功能之方法、機器可讀取媒體、處理器及 處理系統 TWI539373B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/956,347 US9405539B2 (en) 2013-07-31 2013-07-31 Providing vector sub-byte decompression functionality

Publications (2)

Publication Number Publication Date
TW201519087A TW201519087A (zh) 2015-05-16
TWI539373B true TWI539373B (zh) 2016-06-21

Family

ID=52428766

Family Applications (1)

Application Number Title Priority Date Filing Date
TW103125319A TWI539373B (zh) 2013-07-31 2014-07-24 用以提供向量子位元解壓縮功能之方法、機器可讀取媒體、處理器及 處理系統

Country Status (5)

Country Link
US (2) US9405539B2 (zh)
EP (1) EP3028170A4 (zh)
CN (1) CN105612509A (zh)
TW (1) TWI539373B (zh)
WO (1) WO2015017870A1 (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9405539B2 (en) * 2013-07-31 2016-08-02 Intel Corporation Providing vector sub-byte decompression functionality
US9274835B2 (en) * 2014-01-06 2016-03-01 International Business Machines Corporation Data shuffling in a non-uniform memory access device
EP3207500A1 (en) * 2014-10-15 2017-08-23 Nucleushealth, Llc Remote viewing of large image files
US10387150B2 (en) 2015-06-24 2019-08-20 International Business Machines Corporation Instructions to count contiguous register elements having a specific value in a selected location
US10592468B2 (en) 2016-07-13 2020-03-17 Qualcomm Incorporated Shuffler circuit for lane shuffle in SIMD architecture
US11036503B2 (en) 2016-08-15 2021-06-15 Arm Limited Predicate indicator generation for vector processing operations
US11080054B2 (en) * 2016-08-15 2021-08-03 Arm Limited Data processing apparatus and method for generating a status flag using predicate indicators
CN110383243B (zh) * 2017-04-06 2024-05-10 英特尔公司 具有两个存储器位置的向量压缩2指令和扩展2指令
GB2577890B (en) * 2018-10-08 2021-03-10 Advanced Risc Mach Ltd Data processing with swizzle operation
CN110221807B (zh) * 2019-06-06 2021-08-03 龙芯中科(合肥)技术有限公司 数据移位方法、装置、设备及计算机可读存储介质
US11074667B1 (en) * 2020-03-17 2021-07-27 Qualcomm Incorporated Fast partial scalarization
US11204889B1 (en) * 2021-03-29 2021-12-21 SambaNova Systems, Inc. Tensor partitioning and partition access order
US11366783B1 (en) 2021-03-29 2022-06-21 SambaNova Systems, Inc. Multi-headed multi-buffer for buffering data for processing
US11709611B2 (en) 2021-10-26 2023-07-25 SambaNova Systems, Inc. Determining and using memory unit partitioning solutions for reconfigurable dataflow computing systems

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5509129A (en) * 1993-11-30 1996-04-16 Guttag; Karl M. Long instruction word controlling plural independent processor operations
EP0847551B1 (en) * 1995-08-31 2012-12-05 Intel Corporation A set of instructions for operating on packed data
US6009191A (en) * 1996-02-15 1999-12-28 Intel Corporation Computer implemented method for compressing 48-bit pixels to 16-bit pixels
US6223320B1 (en) * 1998-02-10 2001-04-24 International Business Machines Corporation Efficient CRC generation utilizing parallel table lookup operations
US20040054877A1 (en) * 2001-10-29 2004-03-18 Macy William W. Method and apparatus for shuffling data
US7035331B2 (en) * 2002-02-20 2006-04-25 Intel Corporation Method and apparatus for performing a pixel averaging instruction
US8078836B2 (en) * 2007-12-30 2011-12-13 Intel Corporation Vector shuffle instructions operating on multiple lanes each having a plurality of data elements using a common set of per-lane control bits
US7962727B2 (en) 2008-12-05 2011-06-14 Globalfoundries Inc. Method and apparatus for decompression of block compressed data
US9086872B2 (en) * 2009-06-30 2015-07-21 Intel Corporation Unpacking packed data in multiple lanes
CN103502935B (zh) 2011-04-01 2016-10-12 英特尔公司 向量友好指令格式及其执行
US9342314B2 (en) * 2011-12-08 2016-05-17 Oracle International Corporation Efficient hardware instructions for single instruction multiple data processors
US9268626B2 (en) * 2011-12-23 2016-02-23 Intel Corporation Apparatus and method for vectorization with speculation support
CN104011673B (zh) 2011-12-30 2016-12-07 英特尔公司 向量频率压缩指令
US9405539B2 (en) * 2013-07-31 2016-08-02 Intel Corporation Providing vector sub-byte decompression functionality

Also Published As

Publication number Publication date
EP3028170A4 (en) 2017-03-15
US9405539B2 (en) 2016-08-02
TW201519087A (zh) 2015-05-16
US20160342417A1 (en) 2016-11-24
EP3028170A1 (en) 2016-06-08
CN105612509A (zh) 2016-05-25
US20150039851A1 (en) 2015-02-05
WO2015017870A1 (en) 2015-02-05

Similar Documents

Publication Publication Date Title
TWI539373B (zh) 用以提供向量子位元解壓縮功能之方法、機器可讀取媒體、處理器及 處理系統
JP6207095B2 (ja) 条件付きループをベクトル化する命令及び論理
KR101748535B1 (ko) 벡터 개체군 카운트 기능성을 제공하는 방법, 장치, 명령어 및 로직
CN107729048B (zh) 提供向量压缩和旋转功能的指令和逻辑
TWI584192B (zh) 提供向量混合與置換功能的指令與邏輯(二)
TWI476695B (zh) 提供向量水平比較功能之指令與邏輯
JP5933725B2 (ja) ベクトル散乱演算機能及びベクトル収集演算機能を提供する命令及びロジック
JP5933011B2 (ja) ストライド機能を有するベクトルロード演算/ストア演算を提供する命令及びロジック
KR101775294B1 (ko) 게놈 시퀀싱 및 정렬을 위해 개체군 카운트 기능성을 제공하는 방법, 장치, 명령어 및 로직
TWI610233B (zh) 用於提供向量分組元組交叉比較功能的方法、處理器和處理系統
TWI595413B (zh) 用以提供在遮罩暫存器與通用暫存器或記憶體間的轉換之指令及邏輯(二)
TW201704989A (zh) 用以提供向量水平式多數決投票功能之指令與邏輯(二)
TWI715681B (zh) 用於位元欄位位址和插入之指令及邏輯
TWI641993B (zh) 用以反轉與置換在一遮罩暫存器內的位元之設備及方法(二)
TWI483126B (zh) 提供向量線性內插功能之指令與邏輯
JP6231155B2 (ja) ベクトル散乱演算機能及びベクトル収集演算機能を提供する命令及びロジック

Legal Events

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