TW201732548A - 用於向量置換的指令和邏輯 - Google Patents

用於向量置換的指令和邏輯 Download PDF

Info

Publication number
TW201732548A
TW201732548A TW105137286A TW105137286A TW201732548A TW 201732548 A TW201732548 A TW 201732548A TW 105137286 A TW105137286 A TW 105137286A TW 105137286 A TW105137286 A TW 105137286A TW 201732548 A TW201732548 A TW 201732548A
Authority
TW
Taiwan
Prior art keywords
size
processor
logic
index
register
Prior art date
Application number
TW105137286A
Other languages
English (en)
Other versions
TWI723075B (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 TW201732548A publication Critical patent/TW201732548A/zh
Application granted granted Critical
Publication of TWI723075B publication Critical patent/TWI723075B/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code

Landscapes

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

Abstract

處理器包含用以解碼指令之前端,以及用以指定該指令至執行單元之分配器,以執行該指令,用以置換向量資料至目的地暫存器內,以供儲存元件之用。該執行單元包含用以計算元件計數的邏輯,用以計算索引尺寸的邏輯,用以計算位元組計數的邏輯,暫時目的地,來自索引向量的索引,偏移量,用以決定該暫時目的地之子集的邏輯,及用以將該子集儲存至該目的地暫存器中之一元件中的邏輯。

Description

用於向量置換的指令和邏輯
本發明有關處理邏輯、微處理器、及相關聯之指令集架構的領域,當由該處理器或其他的處理邏輯所執行時,其執行邏輯、數學、或其他功能的操作。
多重處理器系統正變得越來越常見。多重處理器系統之應用包含向量的並聯處理。多重處理器系統之應用包含動態域分區一直到桌面計算。為了要利用多重處理器系統,將予以執行的代碼可被分開成為多重線程,以供各種處理實體的執行之用。各線程可彼此並聯地執行。當它們係在處理器上接收之時的指令可被解碼成為原生的或更原生的術語或指令字,以供處理器上的執行之用。處理器可被實施於系統單晶片之中。向量處理可被使用於多媒體應用中。該等應用可包含影像及音頻。
100‧‧‧電腦系統
102、200‧‧‧處理器
104‧‧‧內部快取記憶體
106、145‧‧‧暫存器檔案
108、142‧‧‧執行單元
109、143‧‧‧緊縮指令集
110‧‧‧處理器匯流排
112‧‧‧圖形控制器
114‧‧‧AGP互連
116‧‧‧記憶體控制器集線器
118‧‧‧記憶體介面
120、640、1140‧‧‧記憶體
122‧‧‧專有集線器介面匯流排
124‧‧‧資料儲存器
126‧‧‧無線傳收器
128‧‧‧韌體集線器
130‧‧‧I/O控制器集線器
134‧‧‧網路控制器
140、160‧‧‧資料處理系統
141‧‧‧匯流排
144、165‧‧‧解碼器
159、170‧‧‧處理核心
161‧‧‧SIMD共處理器
166‧‧‧主處理器
167‧‧‧快取記憶體
168‧‧‧I/O系統
169‧‧‧無線介面
201、570‧‧‧前端
202、204、206‧‧‧排程器
203、580‧‧‧無序執行引擎
212、214‧‧‧位址產生單元(AGU)
222、224‧‧‧浮點執行區塊
226‧‧‧指令預取器
228‧‧‧指令解碼器
230‧‧‧追蹤快取
310‧‧‧緊縮位元組
320‧‧‧緊縮字
330‧‧‧緊縮雙字
341‧‧‧半緊縮
342‧‧‧單緊縮
343‧‧‧雙緊縮
364、365‧‧‧運算元識別符
378‧‧‧前置位元組
400‧‧‧處理器管道
402‧‧‧提取級
404‧‧‧長度解碼級
406‧‧‧解碼級
408‧‧‧分配級
410‧‧‧重命名級
412‧‧‧排程級
414‧‧‧暫存器讀取/記憶體讀取級
416‧‧‧執行級
418‧‧‧回寫/記憶體寫入級
422‧‧‧異常處置級
424‧‧‧提交級
432‧‧‧分支預測單元
436‧‧‧指令轉譯後備緩衝器
454‧‧‧引退單元
458‧‧‧實體暫存器檔案單元
460‧‧‧執行群集
503‧‧‧快取分層
510‧‧‧系統代理
514‧‧‧PCI快捷圖形
516‧‧‧直接媒體介面
518‧‧‧PCIe橋接器
520‧‧‧記憶體控制器
522‧‧‧連貫邏輯
560‧‧‧圖形模組
565‧‧‧媒體引擎
584‧‧‧資源排程器
586‧‧‧資源
588‧‧‧重排序緩衝器
620‧‧‧圖形記憶體控制器集線器
645‧‧‧顯示器
650‧‧‧輸入/輸出控制器集線器
660‧‧‧外部圖形裝置
670‧‧‧週邊裝置
695‧‧‧前端匯流排
700‧‧‧多處理器系統
718‧‧‧匯流排橋接器
727‧‧‧通訊裝置
728‧‧‧儲存單元
750‧‧‧點對點互連
790‧‧‧晶片組
872、882‧‧‧I/O控制邏輯
910‧‧‧應用處理器
920‧‧‧媒體處理器
924、1015‧‧‧影像處理器
926‧‧‧音頻處理器
928、1020‧‧‧視頻處理器
932‧‧‧直接記憶體存取單元
1055‧‧‧快閃記憶體控制器
1060‧‧‧雙資料速率控制器
1065‧‧‧安全引擎
1110‧‧‧硬體或軟體模型
1120‧‧‧模擬軟體
1150‧‧‧有線連接
1160‧‧‧無線連接
1205‧‧‧程式
1210‧‧‧仿真邏輯
1302‧‧‧高階語言
1312‧‧‧指令轉換器
1400、1500‧‧‧指令集架構
1415‧‧‧圖形處理單元
1425‧‧‧液晶顯示器視頻介面
1435‧‧‧引導ROM介面
1450‧‧‧串列週邊介面主控單元
1470、1752‧‧‧藍牙模組
1475‧‧‧高速3G調變解調器
1480‧‧‧全球定位系統模組
1511‧‧‧中斷控制及分佈
1512‧‧‧窺探控制單元
1540‧‧‧記憶體系統
1546‧‧‧載入儲存單元
1561‧‧‧指令佇列
1565‧‧‧執行實體
1580‧‧‧執行的指令指標
1600‧‧‧執行管道
1700‧‧‧電子裝置
1725‧‧‧觸控螢幕
1735‧‧‧高速晶片組
1740‧‧‧感測器集線器
1745‧‧‧近場通訊單元
1750‧‧‧無線局部區域網路單元
1754‧‧‧相機
1756‧‧‧無線寬頻網路單元
1760‧‧‧數位信號處理器
1763‧‧‧揚聲器
1764‧‧‧耳機
1765‧‧‧微音器
1814‧‧‧主要核心
1826‧‧‧向量置換單元
1828‧‧‧智慧財產核心
1903‧‧‧K因子
1910‧‧‧目的地SIMD暫存器
1912、1914‧‧‧記憶體位置
1928、1930‧‧‧目的地暫存器位置
2000‧‧‧方法
實施例係以實例之方式描繪於附圖的圖式中,而非限 制。
第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圖係依據本發明實施例之用於向量置換的方法之操作圖。
【發明內容及實施方式】
以下說明描述用於向量置換的指令和處理邏輯。該指令和處理邏輯可在無序處理器上實施。在以下說明中,諸如處理邏輯、處理器類型、微架構情形、事件、啟用機制、及其類似者之許多特定的細節被闡述以便提供本發明實施例的更徹底瞭解。惟,熟習本項技藝之人士將理解的是,該等實施例可無需該等特定的細節而被實行。此外,為避免不必要地使本發明之實施例混淆,一些熟知的結構、電路、及其類似者並未被詳細地顯示。
雖然以下實施例係參考處理器而予以描述,但其他的實施例可應用至其他類型的積體電路和邏輯裝置。本發明實施例之相似的技術及教義可被應用至其他類型的電路或半導體裝置,而可受益於更高的管道輸貫量和增進的性能。本發明實施例之教義可應用至執行資料調處的任何處理器或機器。然而,該等實施例並不受限於執行512位元、256位元、128位元、64位元、32位元、或16位元 之資料操作的處理器或機器,且可被應用至其中可執行資料之調處或管理的任何處理器及機器。此外,以下說明提供實例,且附圖顯示用於說明之目的的各種實例。惟,因為該等實例僅係打算要提供本發明之實施例的實例,而非提供本發明實施例之所有可能實施的詳盡列表,所以不應以限制意義解讀它們。
雖然下文之實例描述在執行單元及邏輯電路的情況中之指令處置和分配,但本發明的其他實施例可以以被儲存在機器可讀取之有形媒體上的資料或指令之方式實現,當其由機器所執行時,儲存在機器可讀取之有形媒體上的資料或指令致使該機器執行與本發明之至少一實施例一致的功能。在一實施例中,與本發明之實施例相關聯的功能係以機器可執行指令實施。該等指令可被使用以致使可以以該等指令編程的通用型或特殊目的之處理器執行本發明的步驟。本發明之實施例可被提供做為電腦程式產品或軟體,其可包含機器或電腦可讀取媒體,而指令被儲存於其上,該等指令可被使用以編程電腦(或其他的電子裝置),用以執行依據本發明實施例之一或多個操作。再者,本發明之實施例的步驟可藉由包含用以執行該等步驟之固定功能邏輯的特定硬體組件,或藉由編程的電腦組件及固定功能硬體組件的任何組合,而予以執行。
使用以編程邏輯而執行本發明之實施例的指令可被儲存在系統中之諸如,DRAM、快取、快閃記憶體、或其他儲存器的記憶體內。再者,該等指令可經由網路或利用其 他的電腦可讀取媒體而予以分佈。因此,機器可讀取媒體可包含用於以機器(例如,電腦)可讀取形式儲存或傳送資訊的任何機制,但並不受限於軟式磁片、光盤、光碟、小型碟片唯讀記憶體(CD-ROM)、及磁光碟、唯讀記憶體(ROM)、隨機存取記憶體(RAM)、可拭除可編程唯讀記憶體(EPROM)、電子拭除式可編程唯讀記憶體(EEPROM)、磁性或光學卡片、快閃記憶體、或經由電性、光學、聲學、或其他形式的傳播信號(例如,載波、紅外線訊號、數位訊號等)而透過網際網路被使用於資訊的傳輸中之有形的機器可讀取儲存器。因而,該機器可讀取媒體可包含適用於以機器(例如,電腦)可讀取形式儲存或傳送電子指令或資訊的任何類型之有形的機器可讀取媒體。
設計可經過從創作至模擬到製造的各種階段。代表設計的資料可以以許多方式表示。首先,因為可用於模擬,所以硬體可使用硬體說明語言或另一種功能說明語言來表示。此外,具有邏輯及/或電晶體閘的電路層次模型可在設計處理的一些階段產生。再者,在某些階段的設計可達到資料的層次,其表示硬體模型中之各種裝置的實體安置。在其中使用某些半導體製造技術的情況中,表示硬體模型之資料可係指明用於被使用以產生積體電路的遮罩之不同遮罩層上的各種特徵之存在或不在的資料。在設計的任何表示中,資料可被儲存在任何形式的機器可讀取媒體中。記憶體或諸如,碟片之磁性或光學儲存器可係用以儲存資訊的機器可讀取媒體,該資訊係經由被調變或另外產 生以傳送此類資訊的光或電波所傳送。當傳送指示或承載碼或設計的電性載波到達電性信號之複製、緩衝、或重傳被執行的程度時,則可做成新的拷貝。因此,通訊提供者或網路提供者可使用本發明實施例之技術,而在有形的機器可讀取媒體上至少暫時地儲存諸如,被編碼到載波中之資訊的物件。
在現代處理器中,許多不同的執行單元可被使用以處理及執行各種代碼和指令。一些指令可更快地完成,而其他者可能花費多個時脈周期來完成。指令的輸貫量越快,處理器的整體性能越好。因此,具有盡可能多的指令盡可能快速地執行將係有利的。然而,可能存在具有更大複雜性,且在執行時間及處理器資源方面需求更多的某些指令,諸如浮點指令、下載/儲存操作、資料移動、等等。
當在網際網路、簡訊、及多媒體應用中使用更多的電腦系統時,額外的處理器支援已隨著時間而被推出。在一實施例中,指令集可與一或多個電腦架構相關聯,包含資料類型、指令、暫存器架構、定址模式、記憶體架構、中斷及異常處置、以及外部輸入及輸出(I/O)。
在一實施例中,指令集架構(ISA)可藉由一或多個微架構而予以實施,其可包含處理器邏輯及電路,用以實施一或多個指令集。從而,具有不同微架構的處理器可分享共同指令集的至少一部分。例如,英特爾®奔騰4(Intel® Pentium 4)處理器、英特爾®核心TM(Intel® CoreTM)處理器、及來自加州Sunnyvale之Advanced Micro Devices, Inc.的處理器實施幾乎相同版本的x86指令集(具備已添加有較新版本的一些擴充),但具有不同的內部設計。同樣地,由諸如ARM控股有限公司、MIPS、或其許可證持有者或採用者之其他處理器發展公司所設計的處理器,可分享共同指令集的至少一部分,但可包含不同的處理器設計。例如,ISA之相同的暫存器架構可使用包含專用實體暫存器、使用暫存器重命名機制(例如,暫存器別名表(RAT)、重排緩衝區(ROB)、及退休暫存器檔案的使用)之一或多個動態分配的實體暫存器之新的或熟知的技術,而在不同的微架構中以不同的方式實施。在一實施例中,暫存器可包含一或多個暫存器、暫存器架構、暫存器檔案、或可以或不可由軟體程式設計師定址的其他暫存器組。
指令可包含一或多個指令格式。在一實施例中,指令格式可指示各種欄(位元的數目、位元的位置、等等),用以指明其中將被執行的操作及將執行操作於其上的運算元,且用以指明其它事項。在進一步的實施例中,一些指令格式可藉由指令模板(或子格式)而予以進一步地界定。例如,給定之指令格式的指令模板可被界定以具有指令格式之欄的不同子集,及/或被界定以具有不同解讀之給定的欄。在一實施例中,指令可使用指令格式(且若被界定時,在指令格式的給定指令模板之一中)以表示,並指明或指示操作及將執行操作於其上的運算元。
科學、金融、自動向量化通用、RMS(辨識、挖掘、及合成)、以及視覺及多媒體應用(例如,2D/3D圖形、影 像處理、視頻壓縮/解壓縮、語音辨識演算法、及音頻調處)可需要將被執行於大量資料項上的相同操作。在一實施例中,單指令多資料(SIMD)意指致使處理器在多資料元件上執行操作之指令的類型。SIMD技術可被使用於處理器中,而可邏輯地劃分暫存器中之位元成為若干固定尺寸或變化尺寸的資料元件,其可各自表示單獨的值。例如,在一實施例中,在64位元暫存器中的位元可被組織為包含四個單獨的16位元資料元件之來源運算元,其各自表示單獨的16位元值。此資料類型可被稱做‘緊縮’資料類型或‘向量’資料類型,且此資料類型的運算元可被稱做緊縮資料運算元或向量運算元。在一實施例中,緊縮資料項或向量可係儲存在單一暫存器內之緊縮資料元件的序列,且緊縮資料運算元或向量運算元可係SIMD指令(或‘緊縮資料指令’或‘向量指令’)的來源或目的地運算元。在一實施例中,SIMD指令指明將在兩個來源向量運算元上被執行的單一向量操作,用於產生相同或不同尺寸的目的地向量運算元(亦稱做結果向量運算元),其具有相同或不同數目的資料元件且在相同或不同的資料元件順序中。
諸如由具有包含x86、MMXTM、串流SIMD擴充(SSE)、SSE2、SSE3、SSE4.1、及SSE4.2指令之指令集的英特爾®核心TM(Intel® CoreTM)處理器,諸如具有包含向量浮點(VFP)及/或NEON指令之指令集的ARM Cortex®處理器家族的ARM處理器,及諸如由中國科學院之計算 技術學院(ICT)所發展的龍芯(Loongson)處理器家族的MIPS處理器所使用之SIMD技術,已在應用性能中致能顯著的改進(CoreTM及MMXTM係加州Santa Clara之英特爾公司(Intel Corporation)的註冊商標或商標)。
在一實施例中,目的地及來源暫存器/資料可係用以表示對應資料或操作之來源和目的地的通用術語。在一些實施例中,它們可藉由暫存器、記憶體、或具有除了所描述的該等者之外的其他名稱或功能之其他儲存區域,而予以實施。例如,在一實施例中,“DEST1”可係暫時性儲存暫存器或其他儲存區域,而“SRC1”及“SRC2”可係第一及第二來源儲存暫存器或其他儲存區域,等等。在其他實施例中,兩個或多個SRC及DEST儲存區域可對應於相同的儲存區域(例如,SIMD暫存器)內之不同的資料儲存元件。在一實施例中,該等來源暫存器的其中一者亦可藉由例如,將第一及第二來源資料上所執行之操作的結果寫回到用作目的地暫存器之該兩個來源暫存器的其中一者,而扮演目的地暫存器的角色。
第1A圖係依據本發明實施例之以可包含用以執行指令之執行單元的處理器所形成之代表性電腦系統的方塊圖。依據諸如在此所敘述之實施例中的本發明,系統100可包含諸如處理器102的組件,用以使用包含邏輯的執行單元而執行用於處理資料的演算法。系統100可代表根據販售自加州Santa Clara之英特爾公司(Intel Corporation)的PENTIUM® III、PENTIUM® 4、XeonTM、 Itanium®、XScaleTM、及/或StrongARMTM微處理器之處理系統,雖然亦可使用其他的系統(包含具有其他微處理器的PC、工程工作站、機上盒、及其類似者)。在一實施例中,實例系統100可執行販售自華盛頓州Redmond之微軟公司(Microsoft Corporation)的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的邏輯。藉由包含緊縮指令集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至I/O控制器集線器(ICH)130。在一實施例中,ICH 130可經由局部I/O匯流排而對一些I/O裝置提供直接連接。該局部I/O匯流排可包含高速I/O匯流排, 用以連接週邊至記憶體120、晶片組、及處理器102。實例可包含音頻控制器、韌體集線器(快閃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之一實施例提供用於行動、網路、及/或無線通訊,以及處理核心159,其可執行包含正文字串比較操作的SIMD操作。處理核心159可被編程以各種音頻、視頻、成像、及通訊演算法,包含諸如沃爾什-哈達瑪(Walsh-Hadamard)變換、快速傅立葉變換(FFT)、離散餘弦變換(DCT)之離散轉換、及其個別的逆變換;諸如彩色空間變換、視頻編碼移動估計、或視頻解碼移動補償的壓縮/解壓縮技術;以及諸如脈波編碼調變(PCM)的調變/解調(MODEM)功能。
第1C圖描繪執行SIMD正文字串比較操作之資料處理系統的其他實施例。在一實施例中,資料處理系統160可包含主處理器166、SIMD共處理器161、快取記憶體167、及輸入/輸出系統168。輸入/輸出系統168可被可選地耦接至無線介面169。SIMD共處理器161可執行依據一實施例之包含指令的操作。在一實施例中,處理核心170可適用於以一或多個處理技術的製造,且藉由以足夠細節而被表示於機器可讀取媒體上,可適合以促成包含處理核心170的資料處理系統160之所有或一部分的製造。
在一實施例中,SIMD共處理器161包含執行單元162及一組暫存器檔案164。一實施例之主處理器166包 含解碼器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)之機器可執行的一或多個操作。在其他實施例中,解碼器剖析指令成為操作代碼(opcode)及對應的資料和控制域,其可由微架構所使用以執行依據一實施例的操作。在一實施例中,追蹤快取230可將解碼之微操作(uop)組合成為微操作(uop)佇列234中的程式有序序列或蹤跡,以供執行之用。當追蹤快取230遭遇複雜指令時,微代碼ROM 232提供完成該操作所需的微操作(uop)。
一些指令可被轉換成為單一微操作,而其他者需要若 干微操作以完成全面操作。在一實施例中,若需要超過四個微操作以完成指令時,則解碼器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。執行單元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位元浮點除法器,用以執行除法、平方根、及餘數微操作。在各種實施例中,包含浮點值的指令可以以浮點硬體處置。在一實施例中,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位元寬的緊縮資料運算元上操作。
在一實施例中,微操作排程器202、204、206在母負載已完成執行之前配送相依的操作。當微操作可在處理器200中被推測地排程及執行時,處理器200亦可包含邏輯以處置記憶體缺失。若在資料快取中之資料載入失誤時,則可能有在管道中運行之相依操作,留下暫時不正確的資料給排程器。重播機制追蹤且重新執行使用不正確資料的指令。僅相依之操作可能需要被重播,以及獨立之操作可 以被允許完成。處理器之一實施例的排程器及重播機制亦可被設計來捕捉指令序列,以供正文字串比較操作之用。
“暫存器”之用語可意指板載處理器儲存位置,其可被使用做為用以識別運算元之指令的一部分。換言之,暫存器可係可從處理器之外部使用的該等者(從程式設計師的角度來看)。惟,在一些實施例中,暫存器可不受限於特定類型的電路。更確切地說,暫存器可儲存資料、提供資料、及執行在此所敘述的功能。在此所敘述之暫存器可使用諸如,專用實體暫存器、使用暫存器重命名的動態分配實體暫存器、專用及動態分配實體暫存器的組合、等等之許多不同的技術,而藉由處理器內之電路來加以實施。在一實施例中,整數暫存器儲存32位元的整數資料。一實施例之暫存器檔案亦包含八個多媒體SIMD暫存器,用於緊縮之資料。對於下文之討論,暫存器可被瞭解為用以保持緊縮資料所設計的資料暫存器,諸如以來自加州Santa Clara之英特爾公司(Intel Corporation)的MMX技術所致能之微處理器中的64位元寬之MMXTM暫存器(在一些情況中,亦稱作‘mm’暫存器)。以整數及浮點兩種形式提供之該等MMX暫存器可與伴隨SIMD及SSE指令的緊縮資料元件一起操作。同樣地,與SSE2、SSE3、SSE4、或更高(通常稱作“SSEx”)技術有關的128位元寬之XMM暫存器可保持該等緊縮資料運算元。在一實施例中,在儲存緊縮資料及整數資料中,該等暫存器並不需要區分該兩種資料類型。在一實施例中,整數及浮點可被包含在相同的 暫存器檔案或不同的暫存器檔案中。再者,在一實施例中,浮點及整數資料可被儲存在不同的暫存器或相同的暫存器中。
在以下圖式的實例中,可敘述多個資料運算元。第3A圖描繪依據本發明實施例之在多媒體暫存器中的各種緊縮資料類型表示。第3A圖描繪用於128位元寬之運算元的緊縮位元組310、緊縮字320、及緊縮雙字(dword)330之資料類型。此實例之緊縮位元組格式310可係128位元長度,且包含十六個緊縮位元組資料元件。例如,位元組可被界定為八位元之資料。用於各個位元組資料元件的資訊可被儲存在位元7至位元0用於位元組0,位元15至位元8用於位元組1,位元23至位元16用於位元組2,以及最後,位元120至位元127用於位元組15中。因此,所有可用的位元可在暫存器中被使用。此儲存配置增加了處理器的儲存效率。此外,在已存取十六個資料元件後,現在可對十六個資料元件並聯地執行一個操作。
通常,資料元件可包含個別件的資料,其係與相同長度之其他資料元件一起儲存在單一的暫存器或記憶體位置中。在與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位元、512位元、或更多。
第3C圖描繪依據本發明實施例之在多媒體暫存器中的各種有符號及無符號緊縮資料類型表示。無符號緊縮位元組表示344描繪SIMD暫存器中之無符號緊縮位元組的 儲存。用於各個位元組資料元件的資訊可被儲存在位元7至位元0用於位元組0,位元15至位元8用於位元組1,位元23至位元16用於位元組2,以及最後,位元120至位元127用於位元組15中。因此,所有可用的位元可在暫存器中被使用。此儲存配置增加了處理器的儲存效率。此外,在已存取十六個資料元件後,現在可對十六個資料元件以並聯方式執行一個操作。有符號緊縮位元組表示345描繪有符號緊縮位元組的儲存。應注意的是,每個位元組資料元件的第八位元可係符號指示符。無符號緊縮字表示346描繪字7至字0可如何被儲存在SIMD暫存器中。有符號緊縮字表示347可類似於無符號緊縮字在暫存器中表示346。應注意的是,各個字資料元件的第十六位元可係符號指示符。無符號緊縮雙字表示348顯示雙字資料元件如何被儲存。有符號緊縮雙字表示349可類似於無符號緊縮雙字在暫存器中表示348。應注意的是,必要的符號位元可係各個雙字資料元件的第三十二位元。
第3D圖描繪操作編碼(操作代碼(opcode))的實施例。再者,格式360可包含暫存器/記憶體運算元定址模式,其對應在全球資訊網(www)上intel.com/design/litcentr的自加州Santa Clara之英特爾公司(Intel Corporation)取得的“IA-32英特爾架構軟體開發者手冊第2冊:指令集參考”中所敘述之操作代碼的類型。在一實施例中,指令可藉由欄361及362之一或多者而予以編碼。每個指令可被識別多達兩個運算元位置,包含多達兩個來源運算元識別 符364及365。在一實施例中,目的地運算元識別符366可與來源運算元識別符364相同,而在其他實施例中,它們可能是不同的。在另一實施例中,目的地運算元識別符366可與來源運算元識別符365相同,而在其他實施例中,它們可能是不同的。在一實施例中,由來源運算元識別符364及365所識別之來源運算元的其中一者可由正文字串比較操作的結果所覆寫,而在其他實施例中,識別符364對應來源暫存器元件以及識別符365對應目的地暫存器元件。在一實施例中,運算元識別符364及365可識別32位元或64位元的來源及目的地運算元。
第3E圖描繪依據本發明實施例之具有四十或更多個位元之另一個可能的操作編碼(操作代碼(opcode))格式370。操作代碼(opcode)格式370與操作代碼(opcode)格式360對應,及包含可選前置位元組378。依據一實施例的指令可藉由欄378、371、及372之一或多者而予以編碼。每個指令可藉由來源運算元識別符374及375以及藉由前置位元組378而被識別多達兩個運算元位置。在一實施例中,前置位元組378可被使用以識別32位元或64位元的來源及目的地運算元。在一實施例中,目的地運算元識別符376可與來源運算元識別符374相同,而在其他實施例中,它們可能是不同的。對於另一實施例,目的地運算元識別符376可與來源運算元識別符375相同,而在其他實施例中,它們可能是不同的。在一實施例中,指令在藉由運算元識別符374及375而被識別之運算元的一或多 者上操作,且藉由運算元識別符374及375而被識別之一或多個運算元上操作的一或多者可由該指令的結果所覆寫,而在其他實施例中,藉由來源運算元識別符374及375而被識別之運算元可在另一個暫存器中被寫入至另一個資料元件。操作代碼(opcode)格式360及370允許藉由MOD欄363及373,以及藉由可選之縮放索引基及位移位元組而被部分指明之暫存器對暫存器的、記憶體對暫存器的、暫存器接著記憶體的、暫存器逐一的、暫存器即時的、暫存器對記憶體的定址。
第3F圖描繪依據本發明實施例之又一個可能的操作編碼(操作代碼(opcode))格式。64位元單指令多資料(SIMD)算術操作可透過共處理器資料處理(CDP)指令而予以執行。操作編碼(opcode)格式380描繪具有CDP操作代碼(opcode)欄382及389的一該CDP指令。對於另一實施例,CDP指令操作的類型可藉由欄383、384、387、及388之一或多者而予以編碼。每個指令可被識別多達三個運算元位置,包含多達兩個來源運算元識別符385及390以及一個目的地運算元識別符386。該共處理器之一實施例可在八、十六、三十二、及六十四位元值上操作。在一實施例中,指令可在整數資料元件上操作。在一些實施例中,指令可使用條件欄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及一組一或多個排程器單元456的重命名/分配器單元452。排程器單元456表示任何數量之不同的排程器,包含保留站、中央指令窗口、等等。排程器單元456可被耦接至實體暫存器檔案單元458。各個實體暫存器檔案單元458表示一或多個實體暫存器檔案,不同的實體暫存器檔案儲存諸如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、等等之一或多個不同的資料類型、狀態(例如,指令指標,其係將被執行之下一個指令的位址)、等等。實體暫存器檔案單元458可由引退單元454所重疊,用以描繪其中暫存器重命名及無序執行可被實施的各種方 式(例如,使用一或多個重排序緩衝器及一或多個引退暫存器檔案;使用一或多個未來檔案,一或多個歷史暫存器,及一或多個引退暫存器檔案;使用暫存器映像及暫存器池;等等)。一般而言,架構暫存器可以從處理器的外部或從程式設計師的角度看得見的。該等暫存器可不受限於任何已知之特殊類型的電路。各種不同類型的暫存器可係合適的,只要它們如本文所描述地儲存及提供資料。合適的暫存器之實例包含,但可不受限於專用實體暫存器、使用暫存器重命名的動態分配實體暫存器、專用及動態分配實體暫存器的組合、等等。引退單元454及實體暫存器檔案單元458可被耦接至執行群集460。執行群集460可包含一組一或多個執行單元462及一組一或多個記憶體存取單元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指令集 (具備已添加有較新版本的一些擴充);加州Sunnyvale之MIPS Technologies的MIPS指令集;加州Sunnyvale之ARM控股有限公司的ARM指令集(具有諸如NEON之可選的額外擴充))。
應瞭解的是,核心可以以各種方式支援多線程(執行兩個或更多個並行的操作或線程組)。多線程支援可藉由例如,包含時間切片多線程、同步多線程(其中單一實體核心提供邏輯核心用於實體核心係同步多線程之線程的各者)、或其組合,而被執行。該組合可包含例如,諸如Intel®超線程(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可包含顯示引擎512,用以驅動 一或多個外部連接的顯示器或圖形模組560。系統代理510可包含用於圖形之通訊匯流排的介面。在一實施例中,該介面可藉由PCI快捷(PCIe)而被實施。在進一步的實施例中,該介面可藉由PCI快捷圖形(PEG)514而予以實施。系統代理510可包含直接媒體介面(DMI)516。DMI 516可在電腦系統的主機板或其他部分上的不同橋接器之間提供鏈路。系統代理510可包含PCIe橋接器518,用以提供PCIe鏈路至電腦系統的其他元件。PCIe橋接器518可使用記憶體控制器520及連貫邏輯522而被實施。
核心502可以以任何合適的方式實施。核心502在架構及/或指令集方面可係同質或異質的。在一實施例中,某些核心502可係有序的,而其他者可係無序的。在另一實施例中,兩個或更多個核心502可執行相同的指令集,而其他者可僅執行該指令集的子集或不同的指令集。
處理器500可包含通用處理器,諸如可販售自加州Santa Clara之英特爾公司(Intel Corporation)的CoreTM i3、i5、i7、2Duo及Quad、XeonTM、ItaniumTM、XScaleTM、或StrongARMTM處理器。處理器500可被提供自另一個公司,諸如ARM控股有限公司、MIPS、等等。處理器500可係特殊目的處理器,諸如例如,網路或通訊處理器、壓縮引擎、圖形處理器、共處理器、嵌入式處理器、或其類似者。處理器500可被實施於一或多個晶片上。處理器500可係使用諸如例如,BiCMOS、CMOS、 或NMOS之多個處理技術的任一者之一或多個基板的一部分,或可被實施在使用諸如例如,BiCMOS、CMOS、或NMOS的多個處理技術之任一者的一或多個基板上。
在一實施例中,給定的一個快取506可由多個核心502所共享。在另一實施例中,給定的一個快取506可被專用於核心502的其中一者。快取506對核心502的分配可由快取控制器或其他合適的機制所處置。給定的一個快取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可包含分配模組1282。在一實施例中,分配模組1282可分配諸如暫存器或緩衝器之處理器500的資源或其他資源,用以執行給定的指令。分配模組1282可在諸如記憶體排程器、快速排程器、或浮點排程器之排程器中進行分配。該等排程器可藉由資源排程器584而被顯示於第5B圖中。分配模組1282可藉由結合第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可包含例如,硬體介面、記憶體連貫性協調器、處理器間互連、指令管道、或記憶體控制器。可用於處理器500之對RAM 599的存取可透過模組590,且更特別地,透過LLC 595而進行。再者,核心502的其他情況可類似地存取模組590。核心502之該等情況的協調可透過模組590而被部分地促成。
第6至8圖可描繪適用以包含處理器500的代表性系 統,而第9圖可描繪可包含一或多個核心502之代表性系統單晶片(SoC)。熟知於本項技藝之用於膝上型電腦、桌上型電腦、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位信號處理器(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。外部圖形裝置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圖中所示,IMC772及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,而伴隨有耦接第一匯流排716至第二匯流排720的匯流排橋接器718。在一實施例中,第二匯流排720可係低接腳數(LPC)匯流排。在一實施例中,各種裝置可被耦接至第二匯流排720,包含例如,鍵盤及/或滑鼠722、通訊裝置727、及諸如碟片驅動器或其他大容量儲存裝置的儲存單元728,其可包含指令/代碼及資料730。進一步地,音頻I/O 724可被耦接至第二匯流排720。應注意的是,其他架構可係可能的。例如,系統可實施多點匯流排或其他此類架構,以取代第7圖之點對點的架構。
第8圖描繪依據本發明實施例之第三系統800的方塊圖。在第7及8圖中之相同的元件具有相同的參考符號,且為了要避免使第8圖的其他觀點混淆,第7圖的某些觀點已從第8圖中省略。
第8圖描繪處理器870、880可各自包含整合的記憶體及I/O控制邏輯(“CL”)872及882。對於至少一實施例,CL 872、882可包含整合的記憶體控制器單元,諸如有關第5及7圖所上述之該者。此外,CL 872、882亦可包含I/O控制邏輯。第8圖描繪不僅記憶體832、834可被耦接至CL 872、882,而且I/O裝置814亦可被耦接至控制邏輯872、882。傳統I/O裝置815可被耦接至晶片組890。
第9圖描繪依據本發明實施例之SoC 900的方塊圖。第5圖中之相同的元件具有相同的參考符號。而且,虛線 框可表示更先進的SoC上之可選的特徵。互連單元902可被耦接至:應用處理器910,其可包含一組一或多個核心902A-N及共享的快取單元906;系統代理單元910;匯流排控制器單元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控股有限公司所發展的CortexTM家族之處理器,及由中國科學院的計算技術學院(ICT)所發展之龍芯(Loongson)IP核心的IP核心,可被許可或銷售至諸如德州儀器公司(Texas Instruments)、高通公司(Qualcomm)、蘋果公司(Apple)、或三星公司(Samsung)之各種顧客或被許可人,且可被實 施在由該等顧客或被許可人所生產的處理器中。
第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指令集核心之處理器1316所本機執行的x86二進制代碼1306。具有至少一x86指令集核心之處理器1316表示可藉由相容地執行或處理(1)英特爾(Intel)x86指令集核心之指令集的實質部分,或(2)針對在具有至少一x86指令集核心的英特爾(Intel)處理器上運行之應用或其他軟體的目標碼版本,以便達成與具有至少一x86指令集核心之英特爾(Intel)處理器實質相同的結果,而執行與具有至少一x86指令集核心之英特爾(Intel)處理器實質相同的功能之任何處理器。 x86編譯器1304表示可操作以產生x86二進制代碼1306(例如,目標碼)的編譯器,該x86二進制代碼1306(例如,目標碼)可以以額外的鏈接處理或無需額外的鏈接處理,在具有至少一x86指令集核心之處理器1316上被執行。同樣地,第13圖顯示高階語言1302中的程式可使用替代的指令集編譯器1308而予以編譯,用以產生可由不具有至少一x86指令集核心之處理器1314(例如,執行加州Sunnyvale之MIPS Technologies的MIPS指令集,及/或執行加州Sunnyvale之ARM控股有限公司的ARM指令集之處理器)所本機執行之替代的指令集二進制代碼1310。指令轉換器1312可被使用以轉換x86二進制代碼1306成為,可由不具有x86指令集核心之處理器1314所本機執行之替代的代碼。此轉換代碼可能不會和替代的指令組二進制代碼1310相同;然而,該轉換代碼將完成一般操作並由來自替代的指令組之指令所組成。因此,指令轉換器1312表示軟體、韌體、硬體、或其組合,而透過仿真、模擬、或任何其他處理,允許並不具有x86指令集處理器或核心的處理器或其他電子裝置執行x86二進制代碼1306。
第14圖係依據本發明實施例之處理器的指令集架構1400之方塊圖。指令集架構1400可包含任何合適數量或種類的組件。
例如,指令集架構1400可包含諸如一或多個核心1406、1407及圖形處理單元1415的處理實體。核心 1406、1407可透過任何合適的機制,諸如透過匯流排或快取,而被通訊地耦接至指令集架構1400的其餘部分。在一實施例中,核心1406、1407可透過L2快取控制1408而被通訊地耦接,該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卡或裝置,或來自SIM卡或裝置的存取。SDRAM控制器1440可提供對諸如SDRAM晶片或模組之記憶體,或來自諸如SDRAM晶片或模組之記憶體的存取。快閃控制器1445可 提供對諸如快閃記憶體或RAM的其他例子之記憶體,或來自諸如快閃記憶體或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可包含執行的指令指標1580。執行的指令指標1580可儲存識別一批指令內之最舊、未配送指令的值。最舊指令可對應最低程式順序(PO)值。PO可包含指令的唯一編號。該指令可係由多股所表示之線程內的單指令。PO可在排序指令中被使用以確保代碼之正確執行語義。PO可由諸如對編碼於指令中 之PO評估增量而非絕對值的機制所重建。該重建的PO可被稱作“RPO”。雖然PO可被參考於此,但此PO可以與RPO交換地使用。股可包含一序列的指令,其係彼此資料相依的。該股可在編譯時間由二進制轉譯器所安排。執行股的硬體可依據各種指令的PO而按順序地執行所給定之股的指令。線程可包含多股,以致使不同的股之指令可彼此相依。給定股的PO可係在尚未從發出級被配送至執行的股中之最舊指令的PO。因而,給定多股之線程而各股包含由PO所排序的指令,則執行的指令指標1580可在線程中儲存由最低數目所描繪的PO。
在另一實施例中,記憶體系統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可被實施為具有諸如零、128k、256k、512k、1M、或2M位元組的記憶體之任何合適尺寸的L2統一快取。在另一個進一步的實施例中,快取1525可被實施於糾錯碼記憶體中。在另一實施例中,單元1510可對處理器或電子裝置之其他部分執行匯流排介面。在此類實施例中,單元1510可因此包含匯流排介面單元1520,用以在互連、處理器內匯流排、處理器間匯流排、或其他的通訊匯流排、埠、或線上通訊。匯流排介面單元1520可提供介面,以便執行例如,用於執行實體1565及在指令架構1500外部之系統的該等部分之間的資料轉移之記憶體及輸入/輸出位址的產生。
為進一步促進其功能,匯流排介面單元1520可包含中斷控制及分佈單元1511,用以對處理器或電子裝置的其他部分產生中斷和其他通訊。在一實施例中,匯流排介面單元1520可包含窺探控制單元1512,其處置用於多處理核心的快取存取及連貫性。在進一步的實施例中,為提供該功能,窺探控制單元1512可包含快取對快取轉移單元,其處置不同快取之間的資訊交換。在另一個進一步的實施例中,窺探控制單元1512可包含一或多個窺探濾波器1514,其監測其他快取(未顯示)的連貫性,以致使諸如單元1510的快取控制器並不需要直接執行該監測。單元1510可包含任何合適數量的計時器1515,用以使指令架構1500的動作同步。而且,單元1510可包含AC埠1516。
記憶體系統1540可包含任何合適數量及類型的機制,用以儲存用於指令架構1500之處理需求的資訊。在一實施例中,記憶體系統1540可包含載入儲存單元1530,用以儲存諸如寫入至或讀回自記憶體或暫存器之緩衝器的資訊。在另一實施例中,記憶體系統1540可包含轉譯後備緩衝器(TLB)1545,其提供實體與虛擬位址之間的位址值查找。在又另一實施例中,匯流排介面單元1520可包含記憶體管理單元(MMU)1544,用以促進對虛擬記憶體的存取。在仍又另一實施例中,記憶體系統1540可包含預取器1543,用以在實際需要將被執行的指令之前,從記憶體請求該等指令,以便降低潛時。
用以執行指令之指令架構1500的操作可透過不同的級而予以執行。例如,指令預取級1530可使用單元1510而透過預取器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匯流排、系統管理匯流排(SMBus)、低接腳數(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、鍵盤1736、及觸控板1730可被通訊耦接至EC 1735。揚聲器1763、耳機1764、及微音器1765可被通訊耦接至音頻單元1762,其可被依序地通訊耦接至DSP 1760。音頻單元1762可包含例如,音頻編碼解碼器及D類放大器。SIM卡1757可被通訊耦接至WWAN單元1756。諸如WLAN單元1750及藍牙單元1752之組件以及WWAN單元1756可以以下一代形狀因子(NGFF)實施。
本發明之實施例包含用於向量置換的指令和處理邏輯。第18圖係用於向量置換的指令和邏輯之系統1800的 實例實施例之插圖。系統1800可包含處理器、SoC、積體電路、或其他機制。例如,系統1800可包含處理器1802。雖然處理器1802係顯示及描述為第18圖中之實例,但任何合適的機制皆可被使用。處理器1802可包含用於向量置換之任何合適的機制。在一實施例中,該等機制可以以硬體實施。處理器1802可藉由第1至17圖中所描繪的元件而予以全面或部分地實施。
在一實施例中,系統1800可包含向量置換單元1826,用以混洗向量資料到目的地暫存器內。系統1800可包含向量置換單元1826於系統1800之任何合適的部分中。例如,向量置換單元1826可被實施做為有序或無序執行管道1816內的執行單元1822。在另一實例中,向量置換單元1826可被實施於與處理器1802的主要核心1814分離的智慧財產(IP)核心1828內。向量置換單元1826可藉由處理器的電路或硬體計算邏輯之任何合適的組合,而予以實施。
向量置換可被使用於高性能的計算(HPC)和其他的應用中,包含行動及桌上型計算,用以藉由在向量化處理中擷取資料並行性而加速執行。使用SIMD能力,多件資料可以以相同的方式處理。此能力可在被緊縮成為SIMD暫存器內之毗鄰封包位元組的資料元件上,或被安置在隨機記憶體位置的資料元件上操作。向量置換致能一組資料中的任何元件至目的地暫存器中之任何位置內的混洗。在種種實施例中,向量置換單元1826可將來自記憶體的資料 元件混洗至目的地暫存器內。
置換具有置換因子的向量資料可能在計算上係昂貴的。其中當在處理器1802上解碼時,用以載入及置換資料元件的代碼係單純地在典型執行單元上執行之以軟體為基的解決方法往往係很慢的、耗功率的,或變成用於包含但不限於向量化基本數學函數之應用的瓶頸。向量置換單元1826可實施K或置換因子向量置換以有效率地混洗元件,而無需覆寫來源資料的向量索引或表。K因子可以小到2且可大於8。處理器1802可隱性地辨識出,或透過特定指令的解碼和執行而辨識出,K因子向量置換將被執行。在該等情況中,向量置換可被卸載至向量置換單元1826。在一實施例中,向量置換單元1826可藉由將在指令流1804中被執行的特定指令1830,而被訂定目標。該等特定指令可藉由例如,編譯器而被產生,或可由造成指令流1804之代碼的起草者所指定。指令可被包含於界定用於處理器1802或向量置換單元1826之執行的庫中。在另一實施例中,向量置換單元1826可藉由處理器1802的部分而被訂定目標,其中處理器1802辨識出指令流1804中的企圖,而以軟體執行K因子向量置換。指令1830可包含置換(D、Size、A、K)或置換(D、Size、A、B、K)。D可對應目的地暫存器。Size可對應緊縮至D內之資料類型的尺寸。A可對應記憶體中的基址。B可對應具有一組索引的索引向量,該組索引提供距離記憶體中之基址的偏移量。K可對應K因子或置換因子,其對應將被置換至D 內的該組資料。該等參數D、Size、A、B、及K可以以任何合適的形式,包含用於置換指令的參數旗標、明顯的參數、所需的參數、具有假定缺設值之選項的參數、或儲存在暫存器或其他已知位置中而不需要將被明顯地傳遞做為參數之資訊的固有參數。
在一實施例中,向量置換可包含用以拷貝來自記憶體的資料至暫時目的地內的邏輯。該邏輯可以以下文描述:
置換(D、Size、A、B、K)
暫時目的地=memcopy(A、Size*2K)
用於(i=0 to(Size of D/Size)-1)
目的地[i]=暫時目的地[B[i]& 2K-1]
指令可被接收自指令流1804,其可駐存在系統1800的記憶體子系統內。指令流1804可包含在系統1800之處理器1802的任何合適部分中。在一實施例中,指令流1804A可包含在SoC、系統、或其他機制中。在另一實施例中,指令流1804B可包含在處理器、積體電路、或其他機制中。處理器1802可包含前端1806,其可使用解碼管道級而從指令流1804接收及解碼指令。所解碼的指令可藉由執行管道1816之分配單元1818及排程器1820而予以配送、分配、及排程,以及被分配至特定的執行單元1822。在執行之後,指令可由引退單元1824中的回寫級或引退級所引退。若處理器1802無序地執行指令時,分配單元1818可重命名指令,且該等指令可被輸入至與引退單元相關聯的重排序緩衝器1824。該等指令可被引 退,如果它們係有序地執行的話。該執行管道的種種部份可藉由一或多個核心1814而被執行。
向量置換單元1826可以以任何合適的方式實施。在一實施例中,向量置換單元1826可藉由電路而予以實施,該電路包含用以決定要提取至快取之記憶體的邏輯、暫時目的地,以及用以置換資料至目的地暫存器內的邏輯。
在一實施例中,要提取至快取的向量資料可能已被載入至快取內,且向量置換單元可直接從該快取置換資料。在另一實施例中,該向量資料可能需要在可執行置換操作之前被提取至快取中。
在一實施例中,K因子可對應來源暫存器的數目,該等來源暫存器係藉由置換功能而被混洗至目的地暫存器內。該等來源暫存器僅可存在於記憶體中及快取中,或亦可存在於SIMD暫存器中或做為SIMD暫存器。用以索引來源所需之位元的數目可藉由找到K因子的對數基底2,而被計算出。要拷貝到快取內之記憶體的量可等於暫存器的尺寸乘以K因子。
在另一實施例中,K因子可對應於用以索引將藉由置換功能而被混洗至目的地暫存器內的特殊來源暫存器之位元的數目。要拷貝到快取內之記憶體的量可等於暫存器的尺寸乘以2至K因子次方。
用以索引特殊來源暫存器、來源記憶體、或暫時性快取內的元件所需之位元的數目,可從來源暫存器內之元件 數目的對數基底2減去1,而被計算出。來源暫存器可在長度上相等於目的地暫存器,或可具有與目的地暫存器不同的長度。在一實施例中,用以索引元件所需之位元的數目可以不同於K因子。在另一實施例中,用以索引元件所需之位元的數目可以與K因子組合,其中各特殊來源可在尺寸上相等於縮緊至目的地SIMD暫存器內的資料類型。要提取之快取行的數目可藉由將要拷貝之記憶體的量除以快取行的尺寸,而予以計算出。
向量置換單元1826可藉由決定距離索引向量的偏移量,而混洗資料至目的地SIMD暫存器的各元件內。該索引向量可包含用於目的地SIMD暫存器之各元件的位元。一些位元可對應於用以選擇特殊來源暫存器所需之位元的數目,以及一些位元可對應於要索引所選擇之來源暫存器內的元件所需之位元的數目。一些位元可保持未使用或保留。由給定K因子之向量置換所需的位元可以與可能用於索引向量,或索引向量的元件之最大數目的位元進行比較。錯誤旗標可在所需之位元超出最大可能值時出現。
向量置換單元可支援任何合適的資料類型,包含但不受限於位元組、字、雙字、四字、單精度浮點、或雙精度浮點。支援的記憶體定址可包含任何合適的類型,包含但不受限於32位元及64位元定址。K因子可被表示做為指令之參數或運算元,或可係指令之名稱或目的地的一部分。K因子可由任何合適的資料類型所界定,包含8位元立即數值、或表示為位元組、字、雙字、四字之通用暫存 器值。索引向量可由向量置換指令指明做為任何合適的來源,包含記憶體、SIMD暫存器、或自記憶體位置載入的向量。
在一實施例中,目的地暫存器的元件可被遮罩。該遮罩可指示那一個或多個元件要遮罩或修正所儲存的值。在一實施例中,若設定遮罩時,則所儲存的值保持不變。在另一實施例中,若設定遮罩時,則所儲存的值被設定為零。在進一步的實施例中,遮罩可對應於目的地暫存器。在仍另一個實施例中,遮罩可僅對應於目的地暫存器的元件。
雖然種種操作係在此發明中描述為藉由處理器1802的特定組件而被執行,但功能可藉由處理器1802之任何合適的部分而予以執行。
第19圖描繪依據本發明實施例之系統1800的實例操作及各種部份的實施。
在一實施例中,向量資料可隨機地存在。該向量資料可被動態地、靜態地、連續地、或以任何其他合適的方式載入至記憶體內。該向量資料可展現對應於該向量資料內的元件之相對位置的置換圖案。在一實施例中,該置換圖案可係在執行之前已知的。在另一實施例中,該置換圖案可係在執行之前未知的。
記憶體1902可係由向量所索引的來源記憶體,其可係任何類型的揮發性或非揮發性電腦可讀取媒體。要提取至暫時目的地1906內之記憶體的量可藉由計算所需位元 組的數量,而予以計算出。在一實施例中,所提取之記憶體1902可係來源記憶體A的全寬度。在另一實施例中,所提取之記憶體1902可係由若干快取行所組成之長的連續行。K因子1903可表示列的數目、行的數目、列及行二者的數目、或參考來源資料的一些其他值。在一實施例中,所需的位元組可係要儲存在目的地SIMD暫存器1910中之資料類型的尺寸與K因子1903的乘積。在另一實施例中,所需的位元組可係要儲存在目的地SIMD暫存器1910中之資料類型的尺寸與2至K因子次方。在進一步的實施例中,所需的位元組可係該SIMD暫存器1910的尺寸與包含K因子本身或2至K因子次方之某一形式K因子的乘積。
向量資料可被散布在記憶體及暫時目的地中。例如,目的地暫存器1910的第一元件D0可駐存在目的地暫存器位置1928中,但可來自記憶體位置1912的來源。同樣地,目的地暫存器1910的第二元件D1可駐存在目的地暫存器位置1930中,但可來自記憶體位置1914的來源。最後,第三及第四元件D2及D3可分別地駐存在目的地暫存器位置1932及1934中,但可個別地來自記憶體位置1916及1918的來源。
在暫時目的地1906中的向量資料可被實施做為快取,或可係處理器1802之快取的一部分。向量置換單元1826可使用混洗索引1904以決定要載入到目的地暫存器1910內的向量資料。例如,索引0 1920可選擇或索引暫 時目的地中的特殊暫存器,及具有該特殊暫存器的特殊元件。在一實施例中,在元件D0、D1、D2、及D3(1928、1930、1932、及1934)中的值係唯一的。在另一實施例中,該等值可在目的地暫存器中的至少兩個元件之間被分享。因而,在混洗索引1904中的索引可係相同的。例如,索引0 1920及索引1 1922可係完全相同的。
在進一步的實施例中(未示出),目的地暫存器1910的元件1928、1930、1932、或1934可被遮罩。該遮罩可防止向量置換單元1826寫入值至該元件內,或可迫使向量置換單元1826寫入所有零至該元件內,而從目的地暫存器1910的欄清除任何之前的值。
第20圖係依據本發明實施例之用於向量置換的實例方法2000之操作圖。方法2000可藉由第1至19圖中所示的任何元件而予以實施。方法2000可藉由任何合適的準則而被發起,且可在任何合適的點開始操作。在一實施例中,方法2000可在2005開始操作。方法2000可包含比所描繪之該等者更多或更少的步驟。此外,方法2000可以以與下文所描繪之該等者不同的順序執行其步驟。方法2000可在任何合適的步驟終止。而且,方法2000可在任何合適的步驟重複操作。方法2000可以與方法2000,或在其他方法中之其他步驟並行地執行其任何步驟。方法2000可在資料的任一元件上與資料之其他元件並行地執行其任何步驟,以致使方法2000以向量化的方式操作。
在2005,在一實施例中,一或多個指令可被接收用 於向量置換。該等指令可被接收、解碼、分配、及執行。該等指令可特別地指定藉由向量置換單元1826之處置,或該等指令可以被決定可藉由向量置換單元1826而予以處置。與置換向量資料有關的輸入可被移交至向量置換單元,以供處理之用。2005可藉由例如,前端、核心、執行單元、或其他合適的元件,而予以執行。
在2010,在一實施例中,在目的地暫存器中之元件的數目可根據SIMD暫存器之尺寸除以被緊縮至該暫存器內之資料類型的尺寸,而予以計算出。元件計數器可追蹤哪個元件在目的地暫存器內被參考。
在2015,可計算出每個元件之索引位元的數目。在一實施例中,目的地暫存器的每個元件所需之索引位元的數目可使用K因子而被計算出。在另一實施例中,目的地暫存器的每個元件所需之索引位元的數目可使用K因子及特殊來源中之元件的數目,而被計算出。在一實施例中,對於目的地暫存器中的所有元件,索引位元之數目可係相同的。
在2020,在一實施例中,可根據被緊縮至目的地暫存器內之資料類型的尺寸,而決定每個元件所需之索引位元的數目是否無效。在一實施例中,此錯誤可由編譯器所發現,該編譯器可具有對被緊縮至目的地暫存器內之資料類型的尺寸,及每個元件所需之索引位元的數目之存取。在另一實施例中,此錯誤可由處理器所發現,該處理器可具有對被緊縮至目的地暫存器內之資料類型的尺寸,及每 個元件所需之索引位元的數目之存取。例如,512位元暫存器可包含64個8位元的值,而需要6位元以索引各個值。對應於用以索引正確來源之3個額外的位元之8的K因子,可能需要總共9位元。惟,512位元的索引暫存器可僅具有8位元以供目的地暫存器中之64個值的各者之用。因此,所需之索引位元的數目可係無效的。在另一實施例中,每個元件所需之索引位元的數目可根據定義而非無效的。例如,512位元之資料集可包含64個8位元的值,而對應需要6位元的K因子。索引向量可因而具有用於目的地暫存器中之各元件的至少6位元。
在2025,在一實施例中,旗標可根據每個元件所需之索引位元的數目係無效之決定而被設定。
在2030,在一實施例中,要從記憶體拷貝到快取內之位元組的數目可至少根據資料類型的尺寸及K因子,而被計算出。要提取之快取行的數目可對應於,要拷貝之位元組的數目除以每個快取行之位元組的數目。
在2035,在一實施例中,所需之位元組的數目可從記憶體中的基址拷貝到暫時目的地。在一實施例中,該暫時目的地可係資料暫存器或一組資料暫存器。在另一實施例中,該暫時目的地可係快取。
在2040,在一實施例中,用於各元件的偏移量可根據資料類型之尺寸和用於各元件的識別符,而被計算出。
在2045,在一實施例中,索引向量位元範圍可根據元件偏移量,和每個元件所需之位元的數目或索引尺寸, 而被計算出。
在2050,在一實施例中,索引可根據索引向量和索引向量位元範圍,而予以決定。該索引可係儲存在索引向量位元範圍之索引向量中的生成值。
在2055,在一實施例中,暫時目的地偏移量可根據資料類型之尺寸和索引,而被計算出。
在2060,在一實施例中,暫時目的地位元範圍可根據資料類型之尺寸和暫時目的地偏移量,而被計算出。
在2065,在一實施例中,目的地暫存器位元範圍可根據資料類型之尺寸和元件偏移量,而被計算出。
在2070,在一實施例中,決定目的地暫存器之各元件是否被從暫時目的地寫入值的向量置換單元1826所遮罩。
在2075,在一實施例中,由暫時目的地位元範圍所索引之暫時目的地的元件可根據目的地暫存器之元件並未被遮罩的決定,而被儲存到由目的地暫存器位元範圍所索引之目的地暫存器的元件。一或多個指令可藉由例如,引退單元而被引退。方法2000可可選地重複或終止。
在此所揭示之機制的實施例可以以硬體、軟體、韌體、或該等實施方法的組合實施。本發明的實施例可被實施為在可編程系統上執行的電腦程式或程式代碼,該可編程系統包含至少一處理器、儲存系統(包含揮發性及非揮發性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置。
程式代碼可被施加而輸入指令,用以執行在此所敘述之功能並產生輸出資訊。該輸出資訊可以以已知方式施加至一或多個輸出裝置。為了此應用之目的,處理系統可包含具有諸如例如,數位信號處理器(DSP)、微控制器、應用特定積體電路(ASIC)、或微處理器之處理器的任何系統。
輸出資訊可以以高階程序或物件導向的編程語言實施,用於與處理系統通訊。如果需要時,程式代碼亦可以以組合或機器語言實施。事實上,在此所描述之機制並未在範疇上受限於任何特定的編程語言。在任何情況中,該語言可係編譯或解譯語言。
至少一實施例的一或多個觀點可藉由儲存在電腦可讀取媒體上之代表性指令,而被實施,該電腦可讀取媒體表示處理器內的種種邏輯,當藉由機器而予以讀取時,其致使該機器製作邏輯以執行在此所描述之技術。稱為“IP核心”的該等表示可被儲存在有形的機器可讀取媒體上,且被供應到各種顧客或製造設施,用以載入至實際做成邏輯或處理器之製造機器內。
該等電腦可讀取儲存媒體可包含但不受限於由機器或裝置所製造或形成之物品的非暫時之有形的配置,包含諸如硬碟、含光盤、光碟、小型碟片唯讀記憶體(CD-ROM)、可覆寫小型碟片(CD-RW)、及磁光碟之任何類型碟片的儲存媒體,諸如唯讀記憶體(ROM)、諸如動態隨機存取記憶體(DRAM)及靜態隨機存取記憶體(SRAM)之隨機 存取記憶體(RAM)、可拭除可編程唯讀記憶體(EPROM)、快閃記憶體、及電子拭除式可編程唯讀記憶體(EEPROM)的半導體裝置,磁性或光學卡片,或適用以儲存電子指令之任何類型的媒體。
因而,本發明之實施例亦可包含非暫時之有形的機器可讀取媒體,含指令或含諸如硬體描述語言(HDL)的設計資料,其界定在此所描述之結構、電路、設備、處理器、及/或系統的特徵。該等實施例亦可被稱作程式產品。
在某些情況中,指令轉換器可被使用以將指令從來源指令集轉換為目標指令集。例如,指令轉換器可轉譯(例如,使用靜態二進制轉譯、包含動態編譯的動態二進制轉譯)、變形、仿真、或轉換指令為將由核心所處理的一或多個其他指令。該指令轉換器可以以軟體、硬體、韌體、或其組合實施。該指令轉換器可以在處理器上、在處理器外、或部分在處理器上及部分在處理器外。
因而,揭示用以依據至少一實施例而執行一或多個指令的技術。雖然某些代表性實施例已被描述及顯示於附圖中,但應瞭解的是,該等實施例僅係說明性,且並未限制其他的實施例,以及應瞭解的是,該等實施例並不受限於所顯示及所描述之特定的結構和配置,因為對熟習本項技藝之該等人士而言,當研習此發明時,可發生各種其他的修正例。在諸如此之其中成長係快速且進一步之推進並非易於預見的技術領域中,當藉由致能技術性之進展而予以促成時,所揭示的實施例可係在配置及細節上可輕易地修 正,而不會背離本發明之原理或附錄申請專利範圍的範疇。
在本發明的一些實施例中,處理器可包含用以解碼指令的前端、執行單元、及用於以對記憶體的存取來分配指令至執行單元而執行指令的分配器或其他機制。指令可用以置換向量資料至目的地暫存器內。該目的地暫存器可用以儲存具有元件尺寸的複數個元件,該元件尺寸對應於該目的地暫存器中之元件的其中一者之尺寸。在與上述該等實施例之任何者結合的實施例中,該執行單元可包含第一邏輯,其可用以根據該目的地暫存器的尺寸及該元件尺寸而計算元件計數。在與上述該等實施例之任何者結合的實施例中,該執行單元可包含第二邏輯,其可用以至少根據置換因子而計算索引尺寸。在與上述該等實施例之任何者結合的實施例中,該執行單元可包含第三邏輯,其可用以至少根據該元件尺寸及該置換因子而計算位元組計數。在與上述該等實施例之任何者結合的實施例中,該執行單元可包含暫時目的地之識別。該暫時目的地可用以儲存位在該記憶體中的基址處對應於該位元組計數之尺寸的資料。在與上述該等實施例之任何者結合的實施例中,該執行單元可包含第五邏輯,其可用以藉由相乘該索引與該元件尺寸而計算偏移量。在與上述該等實施例之任何者結合的實施例中,該執行單元可包含第六邏輯,其可用以根據該偏移量及該元件尺寸而決定該暫時目的地的子集。在與上述該等實施例之任何者結合的實施例中,該執行單元可包含 第七邏輯,其可用以根據該元件計數器及該元件尺寸而儲存該子集於該目的地暫存器中之該等元件的其中一者之中。
在與上述該等實施例之任何者結合的實施例中,該計算之索引尺寸可根據該元件計數。在與上述該等實施例之任何者結合的實施例中,該執行單元可包含第八邏輯,其可用以決定該目的地暫存器中之該等元件的至少一者是否被遮罩,以及可用以儲存該子集於該目的地暫存器中之該等元件的其中一者之中的第七邏輯係進一步根據該元件被遮罩的該決定。在與上述該等實施例之任何者結合的實施例中,該置換因子可表示來源暫存器計數,以及該第二邏輯可用以藉由從該置換因子的對數基數2減去1而計算該索引尺寸。該來源暫存器計數可對應要置換到該目的地暫存器內的資料。在與上述該等實施例之任何者結合的實施例中,該置換因子可表示來源暫存器索引尺寸。該來源暫存器索引尺寸可對應於來源暫存器計數,其對應要置換到該目的地暫存器內的資料。在與上述該等實施例之任何者結合的實施例中,該置換因子可由該指令所界定。在與上述該等實施例之任何者結合的實施例中,該暫時目的地可係資料快取。在與上述該等實施例之任何者結合的實施例中,該置換因子可由該指令的輸入所界定。在與上述該等實施例之任何者結合的實施例中,該暫時目的地係資料快取。
在本發明的一些實施例中,方法可包含,指定元件尺 寸。該元件尺寸可對應於目的地暫存器中之複數個元件的其中一者之尺寸。在與上述該等實施例之任何者結合的實施例中,該方法可包含根據該目的地暫存器的尺寸及該元件尺寸而計算元件計數。在與上述該等實施例之任何者結合的實施例中,該方法可包含至少根據置換因子而計算索引尺寸。在與上述該等實施例之任何者結合的實施例中,該方法可包含至少根據該元件尺寸及該置換因子而計算位元組計數。在與上述該等實施例之任何者結合的實施例中,該方法可包含儲存位在記憶體中的基址處之對應於該位元組計數之尺寸的資料至暫時目的地內。在與上述該等實施例之任何者結合的實施例中,該方法可包含藉由相乘該索引與該元件尺寸而計算偏移量。在與上述該等實施例之任何者結合的實施例中,該方法可包含根據該偏移量及該元件尺寸而決定該暫時目的地的子集。在與上述該等實施例之任何者結合的實施例中,該方法可包含根據該元件計數器及該元件尺寸而儲存該子集至該目的地暫存器中之該等元件的其中一者之內。
在與上述該等實施例之任何者結合的實施例中,該方法可包含根據該元件計數而計算該索引尺寸。在與上述該等實施例之任何者結合的實施例中,該方法可包含決定該目的地暫存器中之該等元件的至少一者是否被遮罩,以及根據該元件被遮罩的該決定而修正該目的地暫存器中之該等元件的至少一者。在與上述該等實施例之任何者結合的實施例中,該方法可包含界定該置換因子為置換到該目的 地暫存器內的來源暫存器計數,以及藉由從該置換因子的對數基數2減去1而計算該索引尺寸。在與上述該等實施例之任何者結合的實施例中,該方法可包含界定該置換因子為來源暫存器索引尺寸。該來源暫存器索引尺寸可對應於要置換到該目的地暫存器內之來源暫存器計數。在與上述該等實施例之任何者結合的實施例中,該方法可包含使用其係資料快取的暫時目的地。
在本發明的一些實施例中,系統可包含用以解碼指令的前端、執行單元、及用於以對記憶體的存取來分配指令至執行單元而執行指令的分配器或其他機制。該指令可係用以置換向量資料到目的地暫存器內。該目的地暫存器可用以儲存具有元件尺寸的複數個元件,該元件尺寸對應於該目的地暫存器中之元件的其中一者之尺寸。在與上述該等實施例之任何者結合的實施例中,該執行單元可包含第一邏輯,其可用以根據該目的地暫存器的尺寸及該元件尺寸而計算元件計數。在與上述該等實施例之任何者結合的實施例中,該執行單元可包含第二邏輯,其可用以至少根據置換因子而計算索引尺寸。在與上述該等實施例之任何者結合的實施例中,該執行單元可包含第三邏輯,其可用以至少根據該元件尺寸及該置換因子而計算位元組計數。在與上述該等實施例之任何者結合的實施例中,該執行單元可包含暫時目的地之識別。該暫時目的地可用以儲存位在該記憶體中的基址處對應於該位元組計數之尺寸的資料。在與上述該等實施例之任何者結合的實施例中,該執 行單元可包含第五邏輯,其可用以藉由相乘該索引與該元件尺寸而計算偏移量。在與上述該等實施例之任何者結合的實施例中,該執行單元可包含第六邏輯,其可用以根據該偏移量及該元件尺寸而決定該暫時目的地的子集。在與上述該等實施例之任何者結合的實施例中,該執行單元可包含第七邏輯,其可用以根據該元件計數器及該元件尺寸而儲存該子集於該目的地暫存器中之該等元件的其中一者之中。
在與上述該等實施例之任何者結合的實施例中,該計算之索引尺寸可根據該元件計數。在與上述該等實施例之任何者結合的實施例中,該執行單元可包含第八邏輯,其可用以決定該目的地暫存器中之該等元件的至少一者是否被遮罩,以及可用以儲存該子集於該目的地暫存器中之該等元件的其中一者之中的第七邏輯係進一步根據該元件被遮罩的該決定。在與上述該等實施例之任何者結合的實施例中,該置換因子可表示來源暫存器計數,以及該第二邏輯可用以藉由從該置換因子的對數基數2減去1而計算該索引尺寸。該來源暫存器計數可對應要置換到該目的地暫存器內的資料。在與上述該等實施例之任何者結合的實施例中,該置換因子可表示來源暫存器索引尺寸。該來源暫存器索引尺寸可對應於來源暫存器計數,其對應要置換到該目的地暫存器內的資料。在與上述該等實施例之任何者結合的實施例中,該置換因子可由該指令所界定。在與上述該等實施例之任何者結合的實施例中,該暫時目的地可 係資料快取。在與上述該等實施例之任何者結合的實施例中,該置換因子可由該指令的輸入所界定。在與上述該等實施例之任何者結合的實施例中,該暫時目的地係資料快取。
在本發明的一些實施例中,向量置換單元可包含元件尺寸。該元件尺寸可對應於目的地暫存器中之複數個元件的其中一者之尺寸。在與上述該等實施例之任何者結合的實施例中,該向量置換單元可包含第一邏輯,其可用以根據該目的地暫存器的尺寸及該元件尺寸而計算元件計數。在與上述該等實施例之任何者結合的實施例中,該向量置換單元可包含第二邏輯,其可用以至少根據置換因子而計算索引尺寸。在與上述該等實施例之任何者結合的實施例中,該向量置換單元可包含第三邏輯,其可用以至少根據該元件尺寸及該置換因子而計算位元組計數。在與上述該等實施例之任何者結合的實施例中,該向量置換單元可包含暫時目的地之識別。該暫時目的地可用以儲存位在該記憶體中的基址處對應於該位元組計數之尺寸的資料。在與上述該等實施例之任何者結合的實施例中,該向量置換單元可包含第五邏輯,其可用以藉由相乘該索引與該元件尺寸而計算偏移量。在與上述該等實施例之任何者結合的實施例中,該向量置換單元可包含第六邏輯,其可用以根據該偏移量及該元件尺寸而決定該暫時目的地的子集。在與上述該等實施例之任何者結合的實施例中,該向量置換單元可包含第七邏輯,其可用以根據該元件計數器及該元件 尺寸而儲存該子集於該目的地暫存器中之該等元件的其中一者之中。
在與上述該等實施例之任何者結合的實施例中,該計算之索引尺寸可根據該元件計數。在與上述該等實施例之任何者結合的實施例中,該向量置換單元可包含第八邏輯,其可用以決定該目的地暫存器中之該等元件的至少一者是否被遮罩,以及該目的地暫存器中之該等元件的至少一者可根據該元件被遮罩的該決定而被修正。在與上述該等實施例之任何者結合的實施例中,該置換因子可表示來源暫存器計數,以及該第二邏輯可用以藉由從該置換因子的對數基數2減去1而計算該索引尺寸。該來源暫存器計數可對應要置換到該目的地暫存器內的資料。在與上述該等實施例之任何者結合的實施例中,該置換因子可表示來源暫存器索引尺寸。該來源暫存器索引尺寸可對應於來源暫存器計數,其對應要置換到該目的地暫存器內的資料。在與上述該等實施例之任何者結合的實施例中,該暫時目的地可係資料快取。在與上述該等實施例之任何者結合的實施例中,該置換因子可係該向量置換單元的輸入。在與上述該等實施例之任何者結合的實施例中,該暫時目的地係資料快取。
在本發明的一些實施例中,設備可包含用以界定元件尺寸的裝置。該元件尺寸對應於目的地裝置中之複數個元件的其中一者之尺寸。在與上述該等實施例之任何者結合的實施例中,該設備可包含用以根據該目的地裝置的尺寸 及該元件尺寸而計算元件計數的裝置。在與上述該等實施例之任何者結合的實施例中,該設備可包含用以至少根據置換因子而計算索引尺寸的裝置。在與上述該等實施例之任何者結合的實施例中,該設備可包含用以至少根據該元件尺寸及該置換因子而計算位元組計數的裝置。在與上述該等實施例之任何者結合的實施例中,該設備可包含用以儲存暫時性資料的裝置。用以儲存暫時性資料的該裝置可係用以儲存位在該記憶體中的基址處對應於該位元組計數之尺寸的資料之裝置。在與上述該等實施例之任何者結合的實施例中,該設備可包含用以藉由相乘該索引與該元件尺寸而計算偏移量的裝置。在與上述該等實施例之任何者結合的實施例中,該設備可包含用以根據該偏移量及該元件尺寸而決定該暫時目的地的子集的裝置。在與上述該等實施例之任何者結合的實施例中,該設備可包含儲存裝置,用以根據該元件計數器及該元件尺寸而儲存該子集於該目的地裝置中之該等元件的其中一者之中。
在與上述該等實施例之任何者結合的實施例中,該計算之索引尺寸可根據該元件計數。在與上述該等實施例之任何者結合的實施例中,該設備可包含用以決定該目的地裝置中之該等元件的至少一者是否被遮罩的裝置,以及用以根據該元件被遮罩的該決定而修正該目的地裝置之該等元件的至少一者。在與上述該等實施例之任何者結合的實施例中,該置換因子可表示來源暫存器計數,以及用以計算該索引尺寸的裝置可藉由從該置換因子的對數基數2減 去1而計算該索引尺寸。該來源暫存器計數可對應要置換到該目的地暫存器內的資料。在與上述該等實施例之任何者結合的實施例中,該置換因子可表示來源暫存器索引尺寸。該來源暫存器索引尺寸可對應於來源暫存器計數,其對應要置換到該目的地裝置內的資料。在與上述該等實施例之任何者結合的實施例中,用以儲存暫時性資料的該裝置可係資料快取。在與上述該等實施例之任何者結合的實施例中,該置換因子可該設備的輸入。在與上述該等實施例之任何者結合的實施例中,該置換因子可係到該向量置換單元的輸入。
140‧‧‧資料處理系統
141‧‧‧匯流排
142‧‧‧執行單元
143‧‧‧緊縮指令集
144‧‧‧解碼器
145‧‧‧暫存器檔案
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‧‧‧處理核心

Claims (20)

  1. 一種處理器,包含:前端,用以解碼指令,該指令係用以置換向量資料到目的地暫存器內,以供儲存具有元件尺寸的複數個元件之用,該元件尺寸對應於該目的地暫存器中之該等元件的其中一者之尺寸;執行單元;分配器,用於以對記憶體的存取來指定該指令至該執行單元,而執行該指令;其中該執行單元包含:第一邏輯,用以根據該目的地暫存器的尺寸及該元件尺寸而計算元件計數;第二邏輯,用以至少根據置換因子而計算索引尺寸;第三邏輯,用以至少根據該元件尺寸及該置換因子而計算位元組計數;暫時目的地之識別,用以儲存位在該記憶體中的基址處對應於該位元組計數之尺寸的資料;第四邏輯,用以根據該索引尺寸及對應於該目的地暫存器中之該等元件的其中一者之元件計數器,而自索引向量決定索引;第五邏輯,用以藉由相乘該索引與該元件尺寸而計算偏移量;第六邏輯,用以根據該偏移量及該元件尺寸而決定該暫時目的地的子集;以及 第七邏輯,用以根據該元件計數器及該元件尺寸而將該子集儲存於該目的地暫存器中之該等元件的其中一者之中。
  2. 如申請專利範圍第1項之處理器,其中該計算之索引尺寸係進一步根據該元件計數。
  3. 如申請專利範圍第1項之處理器,其中該執行單元進一步包含第八邏輯,用以決定該目的地暫存器中之該等元件的至少一者是否被遮罩,以及用以將該子集儲存於該目的地暫存器中之該等元件的其中一者之中的第七邏輯係進一步根據該元件被遮罩的該決定。
  4. 如申請專利範圍第1項之處理器,其中該置換因子係用以表示要置換到該目的地暫存器內的來源暫存器計數,以及該第二邏輯進一步藉由從該置換因子的對數基數2減去1而計算該索引尺寸。
  5. 如申請專利範圍第1項之處理器,其中該置換因子係用以表示對應於要置換到該目的地暫存器內之來源暫存器計數的來源暫存器索引尺寸。
  6. 如申請專利範圍第1項之處理器,其中該置換因子係由該指令所界定。
  7. 如申請專利範圍第1項之處理器,其中該暫時目的地係資料快取。
  8. 一種方法,包含:指定對應於目的地暫存器中之複數個元件的其中一者之尺寸的元件尺寸; 根據該目的地暫存器的尺寸及該元件尺寸而計算元件計數;至少根據置換因子而計算索引尺寸;至少根據該元件尺寸及該置換因子而計算位元組計數;將位在記憶體中的基址處之對應於該位元組計數之尺寸的資料儲存至暫時目的地內;根據具有該索引尺寸之索引向量及對應於該目的地暫存器中之該等元件的其中一者之元件計數器,而自該索引向量決定索引;藉由相乘該索引與該元件尺寸而計算偏移量;根據該偏移量及該元件尺寸而決定該暫時目的地的子集;以及根據該元件計數器及該元件尺寸而將該子集儲存至該目的地暫存器中之該等元件的其中一者之內。
  9. 如申請專利範圍第8項之方法,其中計算該索引尺寸的該步驟係進一步根據該元件計數。
  10. 如申請專利範圍第8項之方法,進一步包含決定該目的地暫存器中之該等元件的至少一者是否被遮罩,以及將該子集儲存於該目的地暫存器中之該等元件的其中一者之中的該步驟係進一步根據該元件被遮罩的該決定。
  11. 如申請專利範圍第8項之方法,其中計算該索引尺寸的該步驟進一步界定該置換因子為置換到該目的地暫存器內的來源暫存器計數,以及計算該索引尺寸的該步驟 進一步包含藉由從該置換因子的對數基數2減去1而計算該索引尺寸。
  12. 如申請專利範圍第8項之方法,其中計算該索引尺寸的該步驟界定該置換因子為對應於要置換到該目的地暫存器內之來源暫存器計數的來源暫存器索引尺寸。
  13. 如申請專利範圍第8項之方法,其中該暫時目的地係資料快取。
  14. 一種向量置換單元,包含:元件尺寸,對應於目的地暫存器中之複數個元件的其中一者之尺寸;第一邏輯,用以根據該目的地暫存器的尺寸及該元件尺寸而計算元件計數;第二邏輯,用以至少根據置換因子而計算索引尺寸;第三邏輯,用以至少根據該元件尺寸及該置換因子而計算位元組計數;暫時目的地之識別,用以儲存位在記憶體中的基址處對應於該位元組計數之尺寸的資料;第四邏輯,用以根據該索引尺寸及對應於該目的地暫存器中之該等元件的其中一者之元件計數器,而自索引向量決定索引;第五邏輯,用以藉由相乘該索引與該元件尺寸而計算偏移量;第六邏輯,用以根據該偏移量及該元件尺寸而決定該暫時目的地的子集;以及 第七邏輯,用以根據該元件計數器及該元件尺寸而將該子集儲存於該目的地暫存器中之該等元件的其中一者之中。
  15. 如申請專利範圍第14項之向量置換單元,其中該計算之索引尺寸係進一步根據該元件計數。
  16. 如申請專利範圍第14項之向量置換單元,進一步包含第八邏輯,用以決定該目的地暫存器中之該等元件的至少一者是否被遮罩,以及用以將該子集儲存於該目的地暫存器中之該等元件的其中一者之中的第七邏輯係進一步根據該元件被遮罩的該決定。
  17. 如申請專利範圍第14項之向量置換單元,其中該置換因子係用以表示要被置換到該目的地暫存器內的來源暫存器計數,以及該第二邏輯進一步藉由從該置換因子的對數基數2減去1而計算該索引尺寸。
  18. 如申請專利範圍第14項之向量置換單元,其中該置換因子係用以表示對應於要被置換到該目的地暫存器內之來源暫存器計數的來源暫存器索引尺寸。
  19. 如申請專利範圍第14項之向量置換單元,其中該暫時目的地係資料快取。
  20. 如申請專利範圍第14項之向量置換單元,其中該置換因子係到該向量置換單元的輸入。
TW105137286A 2015-12-20 2016-11-15 用於向量置換的方法和處理器以及向量置換單元 TWI723075B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/975,804 US10467006B2 (en) 2015-12-20 2015-12-20 Permutating vector data scattered in a temporary destination into elements of a destination register based on a permutation factor
US14/975,804 2015-12-20

Publications (2)

Publication Number Publication Date
TW201732548A true TW201732548A (zh) 2017-09-16
TWI723075B TWI723075B (zh) 2021-04-01

Family

ID=59065072

Family Applications (1)

Application Number Title Priority Date Filing Date
TW105137286A TWI723075B (zh) 2015-12-20 2016-11-15 用於向量置換的方法和處理器以及向量置換單元

Country Status (6)

Country Link
US (1) US10467006B2 (zh)
EP (1) EP3391206A4 (zh)
CN (1) CN108292271B (zh)
DE (1) DE202016009013U1 (zh)
TW (1) TWI723075B (zh)
WO (1) WO2017112170A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10467006B2 (en) 2015-12-20 2019-11-05 Intel Corporation Permutating vector data scattered in a temporary destination into elements of a destination register based on a permutation factor
US10216515B2 (en) 2016-10-18 2019-02-26 Oracle International Corporation Processor load using a bit vector to calculate effective address
WO2019136454A1 (en) * 2018-01-08 2019-07-11 Atlazo, Inc. Compact arithmetic accelerator for data processing devices, systems and methods
US11488002B2 (en) 2018-02-15 2022-11-01 Atlazo, Inc. Binary neural network accelerator engine methods and systems
US11900111B2 (en) * 2021-09-24 2024-02-13 Qualcomm Incorporated Permutation instruction

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5887183A (en) 1995-01-04 1999-03-23 International Business Machines Corporation Method and system in a data processing system for loading and storing vectors in a plurality of modes
US5933650A (en) 1997-10-09 1999-08-03 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US6446198B1 (en) 1999-09-30 2002-09-03 Apple Computer, Inc. Vectorized table lookup
US20040054877A1 (en) * 2001-10-29 2004-03-18 Macy William W. Method and apparatus for shuffling data
US7725678B2 (en) 2005-02-17 2010-05-25 Texas Instruments Incorporated Method and apparatus for producing an index vector for use in performing a vector permute operation
WO2007057832A2 (en) 2005-11-15 2007-05-24 Nxp B.V. Vector shuffle unit
US20070226469A1 (en) 2006-03-06 2007-09-27 James Wilson Permutable address processor and method
TWI348653B (en) * 2006-06-08 2011-09-11 Via Tech Inc Decoding of context adaptive binary arithmetic codes in computational core of programmable graphics processing unit
US8700884B2 (en) * 2007-10-12 2014-04-15 Freescale Semiconductor, Inc. Single-instruction multiple-data vector permutation instruction and method for performing table lookups for in-range index values and determining constant values for out-of-range index values
US8051226B2 (en) 2008-06-13 2011-11-01 Freescale Semiconductor, Inc. Circular buffer support in a single instruction multiple data (SIMD) data processor
US8635431B2 (en) * 2010-12-08 2014-01-21 International Business Machines Corporation Vector gather buffer for multiple address vector loads
US20120254591A1 (en) * 2011-04-01 2012-10-04 Hughes Christopher J Systems, apparatuses, and methods for stride pattern gathering of data elements and stride pattern scattering of data elements
DE112011105664T5 (de) * 2011-09-26 2014-08-21 Intel Corporation Instruktion und Logik zum Bereitstellen einer Vektorstreuungs-Op- und -Hol-Op-Funktionalität
US10055225B2 (en) * 2011-12-23 2018-08-21 Intel Corporation Multi-register scatter instruction
WO2013095672A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Multi-register gather instruction
CN104011616B (zh) * 2011-12-23 2017-08-29 英特尔公司 改进置换指令的装置和方法
CN107092465B (zh) * 2011-12-23 2021-06-29 英特尔公司 用于提供向量混合和置换功能的指令和逻辑
CN107220029B (zh) * 2011-12-23 2020-10-27 英特尔公司 掩码置换指令的装置和方法
US9342479B2 (en) 2012-08-23 2016-05-17 Qualcomm Incorporated Systems and methods of data extraction in a vector processor
GB2509055B (en) * 2012-12-11 2016-03-23 Gurulogic Microsystems Oy Encoder and method
CN105144720B (zh) * 2013-01-04 2018-12-28 Ge视频压缩有限责任公司 高效可伸缩编码概念
US9244684B2 (en) * 2013-03-15 2016-01-26 Intel Corporation Limited range vector memory access instructions, processors, methods, and systems
US9823925B2 (en) * 2014-03-28 2017-11-21 Intel Corporation Instruction and logic for a logical move in an out-of-order processor
US10467006B2 (en) 2015-12-20 2019-11-05 Intel Corporation Permutating vector data scattered in a temporary destination into elements of a destination register based on a permutation factor

Also Published As

Publication number Publication date
EP3391206A1 (en) 2018-10-24
TWI723075B (zh) 2021-04-01
US20170177357A1 (en) 2017-06-22
CN108292271B (zh) 2024-03-29
US10467006B2 (en) 2019-11-05
EP3391206A4 (en) 2020-05-06
DE202016009013U1 (de) 2021-06-16
CN108292271A (zh) 2018-07-17
WO2017112170A1 (en) 2017-06-29

Similar Documents

Publication Publication Date Title
CN108292229B (zh) 用于重新出现的相邻聚集的指令和逻辑
US10346170B2 (en) Performing partial register write operations in a processor
US20190121645A1 (en) Instruction And Logic For In-Order Handling In An Out-Of-Order Processor
TW201725509A (zh) 用於安全指令執行管線之指令及邏輯
US20170177360A1 (en) Instructions and Logic for Load-Indices-and-Scatter Operations
TWI588740B (zh) 包括用於移位和(shift-sum)乘法器之指令及邏輯的處理器及系統,以及用於移位和乘法的方法
US20170185402A1 (en) Instructions and logic for bit field address and insertion
US20180004526A1 (en) System and Method for Tracing Data Addresses
TWI723075B (zh) 用於向量置換的方法和處理器以及向量置換單元
US20170168819A1 (en) Instruction and logic for partial reduction operations
US10705845B2 (en) Instructions and logic for vector bit field compression and expansion
TW201729079A (zh) 用於檢測浮點消除效應之指令及邏輯
US20210096866A1 (en) Instruction length decoding
US10133582B2 (en) Instruction and logic for identifying instructions for retirement in a multi-strand out-of-order processor
US9928066B2 (en) Instruction and logic for encoded word instruction compression
US20170123799A1 (en) Performing folding of immediate data in a processor
US20160179540A1 (en) Instruction and logic for hardware support for execution of calculations
US20170177348A1 (en) Instruction and Logic for Compression and Rotation
US20170177358A1 (en) Instruction and Logic for Getting a Column of Data
US10990395B2 (en) System and method for communication using a register management array circuit
US20210303309A1 (en) Reconstruction of flags and data for immediate folding
US20170177354A1 (en) Instructions and Logic for Vector-Based Bit Manipulation

Legal Events

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