TWI483126B - 提供向量線性內插功能之指令與邏輯 - Google Patents
提供向量線性內插功能之指令與邏輯 Download PDFInfo
- Publication number
- TWI483126B TWI483126B TW101147289A TW101147289A TWI483126B TW I483126 B TWI483126 B TW I483126B TW 101147289 A TW101147289 A TW 101147289A TW 101147289 A TW101147289 A TW 101147289A TW I483126 B TWI483126 B TW I483126B
- Authority
- TW
- Taiwan
- Prior art keywords
- value
- processor
- instruction
- vector
- size
- Prior art date
Links
- 239000013598 vector Substances 0.000 title claims description 145
- 238000012545 processing Methods 0.000 claims description 98
- 238000000034 method Methods 0.000 claims description 38
- 230000006870 function Effects 0.000 claims description 35
- 238000002156 mixing Methods 0.000 claims description 3
- 230000004044 response Effects 0.000 claims description 2
- 238000007667 floating Methods 0.000 description 42
- 238000003860 storage Methods 0.000 description 33
- 238000010586 diagram Methods 0.000 description 28
- 230000008569 process Effects 0.000 description 19
- 235000012431 wafers Nutrition 0.000 description 15
- 238000005516 engineering process Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 11
- 238000013461 design Methods 0.000 description 11
- 239000000463 material Substances 0.000 description 10
- 238000013500 data storage Methods 0.000 description 9
- 230000007246 mechanism Effects 0.000 description 9
- 238000004519 manufacturing process Methods 0.000 description 8
- 239000000872 buffer Substances 0.000 description 7
- 238000006243 chemical reaction Methods 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 7
- 238000004088 simulation Methods 0.000 description 7
- 238000000605 extraction Methods 0.000 description 6
- 230000003068 static effect Effects 0.000 description 6
- VOXZDWNPVJITMN-ZBRFXRBCSA-N 17β-estradiol Chemical compound OC1=CC=C2[C@H]3CC[C@](C)([C@H](CC4)O)[C@@H]4[C@@H]3CCC2=C1 VOXZDWNPVJITMN-ZBRFXRBCSA-N 0.000 description 5
- 230000008901 benefit Effects 0.000 description 5
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 230000009977 dual effect Effects 0.000 description 5
- 238000011161 development Methods 0.000 description 4
- 230000033001 locomotion Effects 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 239000003795 chemical substances by application Substances 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 101100285899 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SSE2 gene Proteins 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 229910052754 neon Inorganic materials 0.000 description 2
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- 101000912503 Homo sapiens Tyrosine-protein kinase Fgr Proteins 0.000 description 1
- 102000001332 SRC Human genes 0.000 description 1
- 108060006706 SRC Proteins 0.000 description 1
- 102100026150 Tyrosine-protein kinase Fgr Human genes 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000003638 chemical reducing agent Substances 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000004907 flux Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000001568 sexual effect Effects 0.000 description 1
- 239000012536 storage buffer Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30109—Register structure having multiple operands in a single register
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30185—Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/17—Function evaluation by approximation methods, e.g. inter- or extrapolation, smoothing, least mean square method
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/40—Scaling of whole images or parts thereof, e.g. expanding or contracting
- G06T3/4007—Scaling of whole images or parts thereof, e.g. expanding or contracting based on interpolation, e.g. bilinear interpolation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Advance Control (AREA)
Description
本發明係有關於處理邏輯、微處理器以及相關指令集架構,當由處理器或其他處理邏輯、執行邏輯、運算的或其他功能運算所執行。特別係有關於提供向量線性內插功能之指令與邏輯。
現代處理器往往包括指令以提供密集計算的運算,但透過使用如單指令多資料(SIMD)向量暫存器之不同資料儲存裝置的有效實現可提供高階資料平行度。
若干處理器,特別如圖形處理器,以往提供線性內插(通常稱為LERP)。線性內插為數無形及音訊處理所廣泛使用之運算。一般定義於a與b兩點間以及介於0至1間的分數w,如:a+w×(b-a)。若線性內插根據定義加以實現,減法運算於乘法運算之後,而乘法運算於加法運算之後。因此第一線性內插運算具有3個串聯相關運算。此外,線性內差運算通常定義如:a×(1-w)+w×b。因此第二線性內插運算也具有3個串聯相關運算以及要求一或多乘法。以上實現可能會限制如寬或大寬度向量架構之效能優點。
迄今,並無適當方式可用於解決前述執行限制問題及瓶頸。
於下描述揭露於一處理器、計算機系統或其他處理裝置中或與其相關用以提供向量線性內插功能之指令及處理邏輯。
指令與邏輯提供向量線性內插功能。在若干實施例中,
反應於指令規定:來自一組向量暫存器之第一運算元、每一向量元素之尺寸、根據向量元素之一部分計算線性內插、來自一組向量暫存器之第二運算元以及第三運算元;執行單元依次從第一、第二以及第三運算元中向量元素之尺寸之對應資料欄位中讀取第一值、第二值以及第三值;並且計算內插值為將第一值乘以第二值減去第二值乘以第三值加上第三值。
應理解的是在一種實現中支援平行的乘法,兩個乘法可在不互相依賴的情形下平行計算。再者,在一種實現中支援平行的加法及/或減法,加法及減法可平行計算僅依賴乘法運算。然在另一實現中可支援加法及/或減法以乘法運算部分積之和平行計算,線性內插運算整體可平行計算而不依賴任何運算。因此線性內插運算可與乘法運算具相同延遲(latency)被實質提供。
於下描述中,設定若干特定細節,如處理邏輯、處理器類型、微架構條件、事件、致能機制等類似細節,其用於提供本發明實施例中全般理解。然而,必須了解的是任何熟習本發明之技藝領域者可加以實施不限於所規定細
節。此外,眾所周知的架構、電路等類似技術未顯示其細節以免造成說明描述中不必要的模糊。
雖然以下實施例參照為處理器,其他實施例可應用其他類型的積體電路及邏輯裝置。本發明實施例之類似技術及教示可施用於其他類型之半導體裝置電路,其可獲致較高管線(pipeline)通量(throughout)及效能改善。本發明實施例之教示可施用於任何執行資料處理之處理器或機器。然而,本發明不限於執行512位元、256位元、128位元、64位元、32位元或16位元資料運算之處理器或機器,而可施用於任何執行資處理及管理之處理器或機器。此外,以下描述為說明之故提供不同範例輔以圖式,然此等範例非用以限定本發明,其僅用以提供本發明實施例之範例而非本發明所有可能之列表。
雖然以下範例描述以執行單元及邏輯電路之內容進行指令處理及分配,然本發明之其他實施例可以儲存於機器可讀取、實體媒體加以實現,當由一機器執行時,促使機器執行與本發明至少一實施例相關之功能。指令可用於引發通用目的或專用目的處理器,其具程式化指令以執行本發明之步驟。本發明之實施例可提供作為計算機程式產品或軟體,其可包含具有指令之機器或計算機可讀取媒體,該等指令用以程式話計算機(或其他電子裝置)以根據本發明之實施例執行一或多運算。此外,本發明實施例之步驟亦可由包含執行此等步驟的固定功能邏輯之專用硬體元件執行,或由可程式化計算機元件及固定功能硬體元件之結
合執行。
用於程式化邏輯以執行本發明實施例之指令可儲存於系統記憶體中,如DRAM、快取(cache)、快閃記憶體(flash memory)或其他儲存媒體。再者,指令可透過網路或其他計算機可讀取媒體進行分配。因此計算機可讀取媒體可包括,但不限於,任何機制以機器(如計算機)可讀取型態儲存或傳輸資訊,軟碟(floppy diskette)、光碟(optical disk)、Compact Disc、CD-ROM、及磁光碟(magneto-optical disk)、唯讀記憶體(ROM)、隨機存取記憶體(RAM)、可抹除可程式化唯讀記憶體(EPROM)、電子可抹除可程式化唯讀記憶體(EEPROM)、磁或光卡、快閃記憶體(flash memory)或經由網路透過電子、光、聲或其他方式傳播信號(如載波、紅外線信號、數位信號等)用於資訊傳輸之實體、機器可讀取儲存。因此,計算機可讀取媒體包括以適合以機器(如計算機)可讀取型態儲存傳輸電子指令或資訊之任何類型實體機器可讀取媒體。
設計可非為許多階段,從創建到模擬到工廠。代表設計的資料可以不同方式表示設計。首先,對模擬有用,硬體可用硬體描述語言或其他功能描述語言加以表示。此外,具邏輯及/或電晶體閘極之電路階層模型可產於設計過程中之某些階段。再者,大部分設計,在某些階段,達到代表硬體模型中不同裝置實體配置之資料階層。在此情形下,若使用傳統半導體製造技術,代表硬體模型之資料可用於產出積體電路,代表硬體模型之資料可為規定遮罩
之不同遮罩層上不同特性出現與不出現之資料。在設計的任何表示中,資料可儲存於任何類型之機器可讀取媒體中。如磁碟之記憶體或磁或光儲存媒體可為機器可讀取媒體,其用以儲存透過光或電波調變或產生以傳輸此等資訊之資訊。因此,溝通提供者或網路提供者可儲存於實體、機器可讀取媒體,或至少暫態、如資訊編碼為載波、本發明實施例之內嵌技術等之物件。
現代處理器中,許多不同的執行單元用以處理及執行不同程式碼及指令。並非所有指令都相同,一些指令可快速完成而另一些指令則可能需要多個時脈週期才能完成。指令通量越快,處理器總體效能越好。因此,具有月多執行快速的指令則獲益越多。然而,存在具較大複雜度及需要較多執行時間與處理器資源之特定指令,例如,浮點指令、載入/儲存操作、資料搬移等等。
隨著越多計算機系統使用於網際網路、文本及多媒體應用程式,額外處理器支援也隨之被引用。在一實施例中,指令集可與一或多計算機架構相關連,包括資料類型、指令、暫存器架構、定址模式、記憶體架構、中斷及異常處理以及外部輸入/輸出(I/O)。
在一實施例中,指令集架構(ISA)可以一或多微架構加以實現,其包括用以實現一或多指令集之處理器邏輯及電路。因此,具有不同微架構之處理器可共享共同指令及的至少一部分。例如,Intel®
Pentium 4處理器、Intel®
CoreTM
處理器、以及Advanced Micro Devices,inc.,Sunnyvale CA近
來所實現之x86指令集之相同版本(具較新版本所加入之擴充),但具有不同的內部設計。類似地,由其處理器發展公司所設計之處理器,如ARM Holdings,Ltd.、MIPS或其授權者或採用者,可共享共同指令集之一部分,但可包括不同處理器設計。例如,ISA的相同暫存器架構可使用新的或已知技術於不同微架構中以不同方式加以實現,包括專用實體暫存器(dedicated physical register)、始用暫存器重命名(renaming)機制之一或多動態配置實體暫存器(如使用Register Alias Table(RAT)、Reorder Buffer(ROB)以及報廢(retirement)暫存器檔案)。在一實施例中,暫存器可包含一或多暫存器、暫存器架構、暫存器檔案或可由或不可由軟體程式人員定址之其他暫存器組。
在一實施例中,指令可包括一或多指令格式。在一實施例中,指令格式可指示不同欄位(位元數目、位元位置等)以規定所執行之運算以及執行於其中之運算元。若干指令格式可再由指令模板(template)(或子格式)所細分。例如,給定指令格式之指令模板可定義為具有指令格式欄位的不同子集及/或定義為具有不同解譯之給定欄位。在一實施例中,使用指令格式來表示指令(以及,若有定義,於指令格式之給定模板中)及規定運算及其中之運算元。
科學的、金融的、自動向量化通用目的、RMS(識別、探勘與合成)以及視覺及多媒體應用程式(如2D/3D圖形、影像處理、視訊壓縮/解壓縮、聲音辨識演算法及音訊處理)可要求於大量資料項目上執行相同運算。在一實
施例中,單一指令多重資料(SIMD)指出一類型的指令其導致處理器於多重資料元素上執行運算。SIMD技術可使用於將暫存器中的位元邏輯上切分為相同尺寸或不同尺寸資料元素之處理器中,其各一者代表不同值。例如,在一實施例中,於64-位元暫存器中的位元可組織為包含4個個別16-位元的資料元素,各一者代表個別16-位元值。此種資料類型參照為封裝(packed)資料類型或向量資料類型,以及此種資料類型的運算元參照為封裝資料運算元或向量運算元。在一實施例中,封裝資料項目或向量可參照為一序列儲存於單一暫存器中之封裝資料元素,以及封裝資料運算元或向量運算元可為SIMD指令(也稱為封裝資料指令或向量指令)的來源或目的運算元。在一實施例中,SIMD指令規定執行在2個來源向量運算元上之單一向量運算以產生具有相同或不同尺寸之目的向量運算元(同時參照為結果向量運算元)、具有相同或不同數目之資料元素、以及具有相同或不同資料元素順序。
SIMD技術,可應用於如具有x86指令集之Intel®
CoreTM
處理器、MMXTM
、Streaming SIMD Extensions(SSE)、SSE2、SSE3、SSE4.1、SSE4.2指令、ARM處理器,如ARM Cortex®
具有包含Vector Floating Pouint(VFP)及/或NEON指令之指令集之處理器家族、以及MIPS處理器,如由中國科學研究院所ICT所研發之Loongson處理器家族,其已引發應用程式執行效能之重大改善(CoreTM
及MMXTM
為Intel Corp.,Santa Clara,Calif.之註冊商標或商
標)。
在一實施例中,目的及來源暫存器/資料為通用名以代表對應資料或運算之來源或目的。在若干實施例中,可以暫存器、記憶體或具其他名稱或功能的其他儲存區域。例如,在一實施例中,“DEST1”可為暫態儲存暫存器或其他儲存區域,而“SRC1”及“SRC2”可為第一及第二來源儲存暫存器或其他儲存區域等。在其他實施例中,SRC及DEST儲存區域之二或多可對應至相同儲存區域中之不同資料儲存元素(如SIMD暫存器)。在一實施例中,來源暫存器之一可作為目暫存器,例如將執行於第一及第二來源資料上的運算結果寫回2個來源暫存器之一以作為目的暫存器之用。
第1A圖為根據本發明之實施例,包括執行指令之執行單元之處理器所形成之範例計算機系統之區塊圖。根據本發明在此所述之實施範例,系統100包括如處理器102之元件採用包含處理資料之執行演算法的執行單元。系統100代表性的處理系統基於來自Intel Corp.,Santa Clara,California之PENTIUM®
III、PENTIUM®
4、XeonTM
、Itanium®
、XScaleTM
及/或StrongARMTM
微處理器,然也可使用其他系統(包括具有其他微處理器之PC、工程工作站、機頂盒及其他類似裝置)。在一實施例中,範例系統100可執行來自Microsoft Corp.,Redmond,Washington之WINDOWSTM
作業系統版本,然也可使用其他作業系統(如UNIX及Linux)、內嵌軟體及/或圖形使用者介面。因此,
本發明之實施例不限於任何規定硬體電路與軟體之結合。
實施例不限於計算機系統。本發明之其他實施例可用於如手持裝置及內嵌應用程式之其他裝置。手持裝置之若干範如手機、網際網路協定裝置、數位相機、個人數位助理(PDA)及手持PC。內嵌應用程式可包含微控制器、數位信號處理器(DSP)、晶片上系統(system on a chip)、網路電腦(NetPc)、機頂盒(set-top box)、網路中樞(network hub)、廣域網路(WAN)切換器或任何根據至少一實施例可執行一或多指令之其他系統。
第1A圖為根據本發明之實施例,包括一或多執行演算法以執行一或多指令之執行單元108之處理器102所形成之計算機系統100之區塊圖。在一實施例中可為單一處理器之桌上型或伺服器系統,但在其他實施例中可包括多處理器系統。系統100為“中樞(hub)”系統架構範例。計算機系統100包括處理器102以處理資料信號。處理器102可為複雜指令集計算機(CISC)微處理器、精簡指令集(RISC)微處理器、超長指令集(VLIW)微處理器、實現指令集結合之處理器或任何如數位信號處理器之其他處理器裝置。處理器102耦接至用以於處理器102與系統100其他元件間傳輸之資料處理器匯流排110。系統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)裝置、快閃記憶體(flash memory)裝置或其他記憶體裝置。記憶體120可儲存指令及/或由資料信號所代表之資料,其可由處理器102執行。
系統邏輯晶片116耦接至處理器匯流排110及記憶體120。系統邏輯晶片116如圖示實施例說明為記憶體控制
器中樞(MCH)。處理器102透過處理器匯流排110與MCH 116溝通。MCH 116為指令及資料儲存以及為圖形命令、資料及結構(texture)提供高頻寬記憶體路徑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。若干範例為音訊控制器、韌體中樞(flash 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所接收之指令解碼為控制信號及/或微程式碼入口點(entry point)。反應於此等控制信號及/或微程
式碼入口點,執行單元142執行適當運算。在一實施例中,解碼器用以解譯指令的運算碼(opcode),其將指示執行何種運算於指令中所指示之對應資料上。
處理核心159與匯流排141相耦接以與其他不同系統裝置進行溝通,可包括但不限於,例如同步動態隨機存取記憶體(SDRAM)控制146、靜態隨機存取記憶體(SRAM)控制147、突發(burst)快閃記憶體介面148、個人電腦記憶卡國際協會(PCMCIA)/CF卡(compact flash)控制149、液晶顯示(LCD)控制150、直接記憶體存取(DMA)控制器151以及選擇性匯流排主介面152。在一實施例中,資料處理系統140也可包括透過I/O匯流排153溝通不同I/O裝置之I/O橋接器154。I/O裝置可包含但不限於,如通用非同步收發器(UART)155、通用串列匯流排(USB)156、藍牙無線UART 157以及I/O擴充介面158。
資料處理系統140之一實施例提供予移動、網路及/或無線通信,以及處理核心159用以執行SIMD運算,包括向量線性內插功能。處理核心159可以不同音訊、視訊、影像及通信演算法進行程式化,包括離散轉換(discrete transformation)如Walsh-Hadamard轉換、快速Fourier轉換(FFT)、離散餘弦轉換(DCT)及其逆轉換;壓縮/解壓縮技術如色彩空間轉換、視訊編碼運動估計或視訊解碼運動補償;以及調變/解調變(MODEM)功能如脈碼調變(PCM)。
第1C圖為執行指令以提供向量線性內插功能之系統
之另一實施例之區塊圖。根據另一實施例,資料處理系統160可包含主處理器166、SIMD協同處理器161、快取記憶體167以及輸入/輸出系統168。輸入/輸出系統168可選擇性的耦接至無線救援169。SIMD協同處理器161用以根逼實施例執行指令中所包含之運算。處理核心170適用以一或多處理技術進行製造且藉由於機器可讀取媒體中表示足夠的細節,可利於製造包括處理核心170之所有或部分資處理系統160。
針對一實施例,SIMD協同處理器161包括執行單元162以及暫存器檔案集164。主處理器166之一實施例包括解碼器165以辨識指令集163之指令,根據一實施例指令集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協同處理器指令處理以產生數位音訊樣本及/或移動視訊框(motion video frame)。針對處理核心170之一實施例,主處理器166以及SIMD協同處理器161係整合於單一處理核心170中包括執行單元162、暫存器檔案集164以及解碼器165以根據一實施例辨識指令集163所包含之指令。
第2圖為根據本發明實施例包含執行指令邏輯電路之處理器200的微架構區塊圖。在若干實施例中,根據一實施例之指令可實現運算於具有位元組尺寸、字組、雙字組、四字組等之資料元素上,以及如單與雙精度整數及浮點資料類型之資料類型上。在一實施例中,循序前端201為處理器200之一部分,用以提取指執行及備妥為後續處理器管線使用。循序前端201可包若干單元。在一實施例中,指令前提取器(prefetcher)226由記憶體提取指令並饋入指令解碼器228以進行解碼及解譯。例如,在一實施例中,解碼器解碼所接收指令為機器可執行之一或多運算稱為“微-指令(micro-instruction)”或“微-運算(micro-operation)”(也稱為微操作(micro op)或uops)。在一實施例中,解碼器分
析指令為運算碼,對應資料及控制欄位由微-架構用以根據一實施例執行運算。在一實施例中,追蹤快取(trace cache)230提取已解碼uop並將其組合為程式順序序列或追蹤至uop佇列234以待執行。當追蹤快取230遇上複雜指令,微程序碼ROM 232提供所需uop以完成運算。
若干指令轉換為單一微-操作,而其他可能需要多個微-操作以完成運算。在一實施例中,若多於4個微-操作才可完成運算,解碼器228存取微程式碼ROM 232以進行指令。針對一實施例,指令可被解碼為小量微操作以便於指令解碼器228中進行處理。在另一實施例中,指令可儲存於微程式碼ROM 232中應為完成運算所需的微-操作數。追蹤快取230參照可程式邏輯陣列(PLA)之入口點以決定正確微-指令指標,用以從微程式碼ROM 232讀取微-程式碼序列以根據一實施例完成一或多指令。微程式碼ROM 232完成指令的微-操作序列後,機器的前端201假設從追蹤快取230提取微-操作。
失序執行引擎203為指令準備執行之所在。失序執行邏輯具有一些緩衝器用於順出及重排序指令流,以使當下入管線及獲得執行排序時,得到最佳化執行效能。配置器邏輯配置每一uop執行所需之機器緩衝器及資源。暫存器重命名邏輯重命名邏輯暫存器為暫存器檔案中之項目。配置器也為每一uop於二uop佇列之一中配置項目,為記憶體運算之一及非記憶體運算之一,於指令排程器前:記憶體排程器、快速排程器202、慢速/一般浮點排程器204以
及簡單浮點排程器206。uop排程器202、204、206基於依賴輸入暫存器運算元來源之準備程度以及uop完成運算所需執行資源之可用度,決定uop何時備妥執行。一實施例中快速排程器202可於每主要處理器時鐘週期中排程一次。排程器調度派配埠以排程執行的uop。
暫存器檔案208、210位於排程器202、204、206間,以及執行單元212、214、216、218、220、222、224位於執行區塊211。對於整數與浮點浮點運算依次存在個別暫存器檔案208、210。在一實施例中,每一暫存器檔案208、210也包括繞行網路(bypass network),其可繞行或向前剛完成之結果,這些結果尚未被寫入暫存器檔案中予新依賴uop。整數暫存器檔案208及浮點暫存器檔案210也用於彼此溝通資料。針對一實施例,整數暫存器檔案208分為2個個別的暫存器檔案,一暫存器檔案針對資料低順位32位元以及第二個暫存器檔案針對資料高順位32位元。一實施例之浮點暫存器檔案210具有128位元寬度項目係因浮點指令一般具有運算元由64至128位元寬度。
執行區塊211包含執行單元212、214、216、218、220、222、224,此為指令實際執行之所在。此區包括用以儲存微-指令執行所需之整數及浮點資料運算元值之暫存器檔案208、210。一實施例之處理器200由若干執行單元所組成:位址產生單元(AGU)212、AGU214、快速ALU216、快速ALU218、慢速ALU220、浮點ALU222、浮
點移動ALU224。針對一實施例,浮點執行區塊222、224執行浮點、MMX、SIMD以及SSE,或其他運算。一實施例之浮點ALU222包括64位元-by-64位元浮點除法器(divider)以執行除法、平方根(square root)以及餘數(remainder)微操作。對本發明之實施例而言,包含浮點值之指令可由浮點硬體處理。在一實施例中,ALU運算轉至高速ALU執行單元216、218。一實施例之快速ALU216、218可以半時鐘週期之有效延遲執行快速運算。針對一實施例,大部分的複雜整數運算轉至慢速ALU220,因為慢速ALU220包括針對長延遲類型運算之整數執行硬體,如乘法、移位、旗標邏輯以及分支處理。記憶體載入/儲存運算係由AGU212、214執行。針對一實施例,整數ALU216、218、220係以執行整數運算於64位元資料運算元上之內容加以描述。在另一實施例中,ALU216、218、220可實現以支援不同資料位元包括16、32、128、256等。類似地,浮點單元222、224可實現以支援具不同寬度位元之運算元。針對一實施例,浮點單元222、224可結合SIMD以及多媒體指令運算於128位元寬封裝資料運算元上。
在一實施例中,uop排程器202、204、206於父代載入(parent load)已完成執行前派配相依運算。當uop預測排程及執行於處理器200中,處理器200也包含處理記憶體漏失之邏輯。若資料載入漏失於資料快取中,可能於管線中存在運行的依賴運算使排程器具暫時不正確資料。重
播機制追蹤及重執行使永不正確資料之指令。僅依賴運算需要重播而獨立運算可允許完成。一處理器的一實施例之排程器及重播機制也設計以捕捉提供遮罩暫存器與通用目的暫存器間轉換之指令。
“暫存器(register)”一詞可參照為板載(on-board)處理器儲存位置,其使用作為指令之一部分以識別運算元。換言之,暫存器可為處理器外部(從程式人員觀點)可用的。然而,一實施例之暫存器不應受限於特殊類型之電路。而是,一實施例之暫存器用以儲存及提供資料並執行前述功能。在此所述之暫存器可以處理器中電路使用不同技術加以實現,如專用實體暫存器、使用暫存器重命名之之動態配置實體暫存器、專用及動態配置實體暫存器之結合等。在一實施例中,整數暫存器儲存32位元整數。一實施例之暫存器檔案也包含對封裝資料之8個多媒體SIMD暫存器檔案。針對以下所討論,暫存器理解為設計以保留封裝資料之資料暫存器,如來自Intel Corp.,Santa Clara,California,64位元寬MMXTM
暫存器(在某些情形下亦參照為’mm’暫存器)於微處理器中以MMX技術致能。此等MMX暫存器於整數及浮點形式下均可用,可伴隨SIMD及SSE指令與封裝資料元素運算。類似地,128位元寬MMX暫存器關於SSE2、SSE3、SSE4或超過(通常參照命名為“SSEx”)技術也可用於保留封裝資料運算元。在一實施例中,於儲存的封裝資料及整數資料中,暫存器無需分辨兩種資料類型。在一實施例中,整數及浮點可包含於相同暫
存器檔案或不同暫存器檔案。再者,在一實施例中,浮點及整數資料可儲存於不同或相同暫存器中。
以下圖示範例中,描述若干資料運算元。第3A圖說明根據本發明之一實施例,不同封裝資料表示於多媒體暫存器中。第3A圖說明封裝資料310、封裝字組320以及封裝雙字組(dword)330對128位元寬運算元之資料類型。此範例之封裝位元格式310為128位元長以及包含16個封裝位元組資料元素。位元組在此定義為8位元資料,每一位元組資料元素資訊儲存於位元組0之位元7至位元0、位元組1之位元15至位元8、位元組2之位元23至位元16以及最後位元組15之位元120至位元127。因此,所有可用位元均使用於暫存器中。此儲存配置增加處理器之儲存效能。同時,具16資料元素存取,一運算可平行執行於16個資料元素上。
通常,資料元素為資料的個別片段,其儲存於單一暫存器或記憶體位置中與其他資料元素具有相同長度。在關於SSEx技術的封裝資料序列中,儲存於XMM暫存器中之資料元素數目為128位元,長度以個別資料元素位元切分。類似地,在關於MMX及SSE技術的封裝資料序列中,儲存於XMM暫存器中之資料元素數目為64位元,長度以個別資料元素位元切分。雖然於第3A圖中所示之資料類型長度為128位元,本發明之實施例也可以64位元寬、256位元寬、512位元寬或其他尺寸運算元。本範例之封裝字組格式320為128位元長且包含8個封裝字組資
料元素。每一封裝字組包含16位元資訊。如第3A圖所示之封裝雙字組格式330為128位元長且包含4個封裝雙字組資料元素。每一封裝四字組為128位元長且包含2個封裝四字組資料元素。
第3B圖說明另一暫存器中資料儲存格式。每一封裝資料可包括大於一獨立資料元素。3封裝資料格式說明;半封裝341、單一封裝342、以及雙封裝343。半封裝341、單一封裝342、以及雙封裝343之一實施例包含定點(fixed point)資料元素。對另一實施例一或多半封裝341、單一封裝342、以及雙封裝343可包含浮點資料元素。半封裝341之另一實施例為128位元長包含8個16-位元資料元素。單一封裝342之一實施例為128位元長包含4個32-位元資料元素。雙封裝3432之一實施例為128位元長包含2個64-位元資料元素。應理解的是此等封裝資料格式可進一步擴至其他暫存器,如96-位元、160-位元、192-位元、224-位元、256-位元、512-位元或更多。
第3C圖說明根據本發明之一實施例,具正負號(signed)及不具正負號(unsigned)不同資料類型表示法於多媒體暫存器中。不具正負號封裝位元組表示法344說明不具正負號封裝位元組於SIMD暫存器中之儲存。每一位元組資料元素資訊儲存於位元組0之位元7至位元0、位元組1之位元15至位元8、位元組2之位元23至位元16等,以及最後位元組15之位元120至位元127。因此,所有可用位元均使用於暫存器中。此儲存配置增加處理器之
儲存效能。同時,具16資料元素存取,一運算可平行執行於16個資料元素上。具正負號封裝位元組表示法345說明具正負號封裝位元組之儲存。請注意每位元組資料元素的第8位元為正負號指示器。不具正負號封裝字組表示法346說明字組7至字組0於SIMD暫存器中之儲存。具正負號封裝字組表示法347與不具正負號封裝字組暫存器中表示法346類似。請注意每字組資料元素的第16位元為正負號指示器。不具正負號封裝雙字組表示法348說明雙字組資料元素之儲存。具正負號封裝雙字組表示法349與不具正負號封裝雙字組暫存器中表示法348類似。請注意每一雙字組資料元素之第32位元為必要的正負號位元。
第3D圖為運算編碼(opcode)格式360之一實施例之說明,其具有32或更多位元,以及暫存器/記憶體運算元定址模式對應運算碼格式類型如下所述“Intel®
64及IA-32 Intel Architecture Software Developer’s Manual Combined Volumes 2A及2B:Instruction Set Reference A-Z”,其可由Intel Corp.,Santa Clara,CA.於全球資訊網(www)intel.com/products/process/manuals中取得。在一實施例中,指令可藉由欄位361及362被編碼。每一指令多達2個運算元位置可被識別,包括多達2個來源運算元識別器364及365。在一實施例中,目的運算元識別器366與來源運算元識別器364相同,而在其他實施例中兩者為不同。對另一實施例而言,目的運算元識別器366與
來源運算元識別器365相同,而在其他實施例中兩者為不同。在一實施例中,由來源運算元識別器364及365識別的來源運算元之一以指令結果重寫,而在其他實施例中識別器364對應至來源暫存器元素以及識別器365對應至目的暫存器元素。針對一實施例,運算元識別器364及365可用於識別32-位元或64-位元來源及目的運算元。
第3E圖為另一運算碼(opcode)格式370之說明,其具有40或更多位元。運算碼格式370對應運算碼格式360且包含選擇性前綴位元組378。根據一實施例指令可藉由一或多欄位378、371及372進行編碼。每一指令多達2個運算元位置可由來源運算元識別器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指令具有CDP運算碼欄位382及389。在另一實施例中,CDP指令類型,運算可由一或多欄位383、384、387及388編碼。每一指令多達3個運算元位置可被識別,包括多達2個來源運算元識別器385及390以及一目的運算元識別器386。協同處理器之一實施例可運算於8、16、32及64位元值上。針對一實施例,指令執行於整數資料元素上。在若干實施例中,指令可有條件的被執行,使用條件欄位381。針對若干實施例,來源資料尺寸可由欄位383進行編碼。在若干實施例中,Zero(z)、negative(N)、carry(C)及overflow(v)偵測可於SIMD欄位上完成。在某些範例中,飽和(saturation)的類型可由欄位384進行編碼。
接著請參照第3G圖為另一運算碼(opcode)格式397之說明,根據另一實施例提供向量線性內插功能對應運算碼格式類型如下所述“Intel Advanced Vector Extensions Programming Reference”,其可由Intel Corp.,Santa Clara,CA.於全球資訊網(www)intel.com/products/process/manuals中取得。
原始x86指令集以位址片段之不同格式以及包含於額外位元組中之即時運算元(其出現由第一“opcode”位組得
知)提供予1-位元組運算碼。此外,存在特定位元組值以作為opcode的修正器(稱為前綴,當其被置於指令前時)。當原始256 opcode位元組(包括特殊前綴值)用盡時,單一位元組專用為逃遁(escape)對新的一組256 opcode。當加入向量指令(如SIMD)時產生對更多運算碼的需求,且“2位元組”運算碼映射可能不足,即使由前綴使擴充。最終,新指令會加入額外映射中,使用2位元組加選擇性前綴以作為識別器。
此外,為以64-位元模式簡化增加的暫存器,於前綴與運算碼(以及任何必要escape位元組以決定運算碼)間會使用附加前綴(稱為“REX”)。在一實施例中,REX可具有4“payload”位元以指示額外暫存器以64-位元模式之使用。在其他實施例中,可具較少或多於4位元。至少一指令集(其通常對應格式360及/或格式370)之一般格式之通常說明如下:[prefixes][rex]escape[escape2]opcode modrm(等)。
運算碼格式397對應運算碼格式370且包含選擇性VEX前綴位元組391(在一實施例中以C4 hex或C5 hex開始)以取代大部分其他共同使用之傳統指令前綴位元組及逃遁碼。例如,以下說明一實施例使用2欄位以編碼指令,其使用於當第二逃遁碼未出現於原始指令中時。在以下所述範例中,傳統逃遁以新的逃遁值代表,傳統前綴完
全壓縮作為“payload”位元組之一部分,傳統前綴會被糾正及可用於未來擴充之用,以及會增加新的特徵(如增加向量長度以及額外來源暫存器規定器)。
當第二逃遁碼表示於原始指令,或當附加位元(如XB及W欄位)於REX欄位必須被使用時。於以下所示之實施例中,第一傳統逃遁及逃遁前綴類似前述方式壓縮,以及第一逃遁碼壓縮於“map”欄位,具未來映射或可用特徵空間,以及再一次增加新的特徵(如增加向量長度及額外來源暫存器規定器)。
根據一實施例之指令可藉由一或多欄位391及392進行編碼。每一指令多達4個運算元位置可由欄位391結合來源運算元識別器374及375識別,以及結合選擇性尺標-索引-基礎(SIB)識別器393、選擇性置換識別器394、
以及選擇性即時位元組395。針對一實施例,VEX前綴位元組391可用於識別32-位元或64-位元來源及目的運算元,及/或128-位元或256-位元SIMD暫存器或記憶體運算元。針對一實施例,由運算碼格式397所提供之此功能可能對運算碼格式370為冗餘的,然在其他實施例中兩者則不同。運算碼格式370及397允許暫存器至暫存器、記憶體至暫存器、暫存器由記憶體、暫存器由暫存器、暫存器由即時、暫存器至記憶體由MOD欄位373部分以及由選擇性SIB識別器393、選擇性置換識別器394、以及選擇性即時位元組395規定定址。
請參照第3H圖為另一運算碼(opcode)格式398之說明,根據另一實施例提供向量線性內插功能。運算碼格式398對應運算碼格式370及397且包含選擇性EVEX前綴位元組396(在一實施例中以62 hex開始)以取代大部分其他共同使用之傳統指令前綴位元組及逃遁碼並提供額外功能。根據一實施例指令可由一或多欄位396及392進行編碼。每一指令多達4個運算元位置可被識別,以及遮罩可由欄位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可具有額外“payload”位元用於提供指令額外新的特徵,如使組配遮罩暫存器,或額外運算元,或由128-位元、256-位元或512-位元向量暫存器,或更多暫存器由其中選擇等等。
舉例而言,當VEX格式397可以隱式(implicit)遮罩用於提供向量線性內插功能或當來源運算元之一由結果內差值重寫,EVEX格式398可以隱式(implicit)使用者可組配遮罩及額外隱式運算元用於規定目暫存器。此外,當VEX格式397可用於提供向量線性內插功能對128-位元或256-位元向量暫存器,EVEX格式398可用於提供向量線性內插功能對128-位元、256-位元或512-位元或更大(或更小)向量暫存器。
提供向量線性內插功能之範例指令如下所示:
應理解的是,指令之若干實施例提供向量線性內插功能可包括額外特徵,如廣播純量元素至一或兩者內插終點之每一對應向量元素位置,或每一對應部分來源元素。此外,指令之若干實施例提供向量線性內插功能可包括轉換一或多來源向量,例如由16-位元浮點值至32-位元浮點值,或由32-位元浮點值至64-位元浮點值。指令之若干實施例提供向量線性內插功能也可包括於一或多來源向量中
拌和(swizzling)或置換(permuting)元素,如4個向量元素D、C、B、A,成對互換得到C、D、A、B,或雙向互換得到B、A、D、C,或旋轉產品得到D、A、C、B等。
第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,指令轉譯後備緩衝器436耦接至指令提取單元438,指令提取單元438耦接至解碼單元440。解碼單元或解碼器可解碼指令,並產生一或多微操作、微程式碼入口點、微指令、其他指令或其他控制信號作為輸出,其由原始指令解碼、或反射、或推衍而得。解碼器可以不同機制加以實現。適合的機制範例包括,但不限於,查找表(look-up table)、硬體實現、可程式邏輯陣列(PLA)微程式碼唯讀記憶體(microcode ROM)等。指令快取單元434更耦接至記憶體單元470中之階層2(L2)快取單元476。解碼單元440耦接至執行引擎單元450中之重命名/分配器單元452。
執行引擎單元450包括耦接至報廢單元(retirement unit)454之重命名/分配器單元452以及一或多排程器(scheduler)單元456組。排程器單元456代表任數目的不同排程器,包括保留站(reservation station)、中央指令窗(central instruction window)等。排程器單元456耦接至實體暫存器檔案單元458。每一實體暫存器檔案單元458代表一或多實體暫存器檔案,不同實體暫存器檔案儲存一或多不同資料類型,如純量整數、純量浮點、封裝整數、封裝浮點、向量整數、向量浮點、狀態(如指令指標為下一被執行指令之位址)等。在一實施例中,實體暫存器檔案
單元458與報廢單元454重疊以說明暫存去重命名及失序執行可實現之不同方式(如使用記錄器緩衝器及報廢暫存器檔案;使用未來檔案、歷史緩衝器及報廢暫存器檔案;使用暫存器映射及暫存器庫(pool)等)。通常,架構暫存器為從處理器外部或從程式人員角度為可見的。可用以儲存及提供在此所述之資料的不同類型暫存器均可適用。適用之暫存器例如,但不限於,專用實體暫存器、使用重命名之動態配置實體暫存器、專用及動態配置實體暫存器之結合等。報廢單元454及實體暫存器檔案單元458耦接至執行叢集(cluster)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指令集[已增加較新版本具有若干擴充]:MIPS Technologies of Sunnyvale,CA之MIPS指令集;ARM Holdings of Sunnyvale,CA之ARM指令集[具選擇性增加擴充如NEON])。
應理解的是核心可支援多緒(multithreading)(執行2
或多操作或執行緒之平行集),以及可以不同方式實現包括分時多緒(time sliced multithreading)、共時多緒(simultaneous multithreading)(在此單一時體核心提供每一執緒邏輯核心以使實體核心為共時多緒)、或兩者之結合(例如分時提取及解碼及共時多緒如Intel® Hyperthreadiug技術)。
當暫存器重命名以失序執行之內容描述,應理解的是暫存器重命名也可使用於循序架構中。雖然處理器之說明實施例也包括分別指令及資料快取單元434/474以及共享L2快取單元476,其他實例可具有指令及資料之單一內部快取,例如階層1(L1)內部快取,或內部快取之多重階層。在若干實施例中,系統可包括內部快取及外部快取之結合,外部快取於核心及/或處理器外部。此外,所有快取可於核心及/或處理器外部。
第5圖為根據本發明之實施例,單一核心處理器及具整合記憶體控制器及圖形多核處理器500之區塊圖。第5圖中之實線方塊說明具單一核心502A之處理器500、系統代理器510、一或多匯流排控制器單元組516,而虛線方塊選擇性增加說明具有多核心502A-N之另一處理器500、系統代理單元510中一或多整合記憶體控制器單元組514以及專用目的邏輯508。
記憶體階層架構包含核心中快取之一或多階層、一或多共享快取單元506組以及耦接至整合記憶體控制器單元514組之外部記憶體(未圖示)。共享快取單元506集可包
括一或多中階層快取,如階層2(L2)、階層3(L3)、階層4(L4)、或其他階層之快取、最終階層快取(LLC)、及/或其結合。然在一實施例中,一環(ring)基於互連單元512與整合圖形邏輯508、共享快取單元06組以及系統代理單元510進行互連,另一實施例可使用任何已知互連技術對前述單元進行互連。
在若干實施例中,一或多核心502A-N為多緒。系統代理單元510包括核心502A-N協調及操作之元件。系統代理單元510可包含如功率控制單元(PCU)及顯示單元。PCU可為或包含調節核心502A-N功率狀態之邏輯及元件以及整合圖形邏輯508。顯示單元用以驅動一或多外部連接顯示器。
核心502A-N以架構及/或指令集而言可為同質(homogeneous)或異質(heterogeneous)的。例如,核心502A-N的部分可為循序的,而其他可為失例如,核心502A-N的部分可為循序的,而其他可為失序。在另一範例中,核心502A-N的2或多可執行相同指令集,而其他僅可執行此指令集之子集或不同指令集。
處理器可為通用目的處理器,如Intel Corp.,Santa Clara,Cailf.所提供的CoreTM
i3、i5、i7、2 Duo及Quad、XeonTM
、ItaniumTM
、XscaleTM
或StrongARMTM
處理器。處理器可為專用目的處理器,例如網路或溝通處理器、壓縮引擎、圖形處理器、協同處理器、內嵌處理器或其他類似處理器。處理器可實現於一或多晶片上。處理器
500可為一或多基底之一部分及/或可由其實現,使用任何數目之處理器技術,例如BiCMOS、CMOS或NMOS。
第6-8圖為包含處理器500之範例系統,而第9圖為可包括一或多核心502之晶片上系統(SoC)之範例系統。其他本技術領域已知之系統設計及組配,用於筆記型電腦(laptop)、桌上型電腦(desktop)、手持PC、個人數位助理、工程工作站(engineering workstation)、伺服器、網路伺服器、網路中樞(network hub)、切換開關(switch)、內嵌處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲裝置、機頂盒、微控制器、手機(cell phone)、可攜式媒體播放器、手持裝置及其他各種電子裝置也都適用。一般而言,可與所揭露處理器及/或其他執行邏輯協同合作之各種不同系統或電子裝置均適用。
請參照第6圖,第20圖為根據本發明之一實施例之一系統600之區塊圖。系統600可包括一或多處理器610、615,其耦接至控制器中樞(GMCH)620。選擇性的額外處理器615於第6圖中以虛線表示。
每一處理器610、615可包含在此所述之一或多處理核心以及可為處理器500之若干版本。然而,應注意整合圖形邏輯及整合記憶體控制器不會殂在處理器610、615。第6圖說明GMCH620耦接至如動態隨機存取記憶體(DRAM)之記憶體640。在至少一實施例中,DRAM與非揮發性快取有關。
GMCH620可為晶片集,晶片集之部分。GMCH620可
與處理器610、615溝通並控制處理器610、615與記憶體640之互動。GMCH620也可作為處理器610、615與系統600其他元素間之加速匯流排介面。針對至少一實施例,GMCH620透過如前端匯流排(FSB)695之多點匯流排與處理器610、615溝通。
再者,GMCH620耦接至顯示器645(如平板顯示器)。GMCH620可包含整合圖形加速器。GMCH620更耦接至輸入/輸出(I/O)控制器中樞(ICH)650,其用以耦接不同週邊裝置至系統600。第6圖中所顯示之實施例範例為外部圖形裝置660,其為伴隨另一週邊裝置670耦接至ICH650之離散圖形裝置。
此外,額外或不同處理器也可表示於系統600中。例如,額外處理器615可包含與處理器610相同之額外處理器,其對處理器610、加速器(如圖形加速器或數位信號處理(DSP)單元)、可程式閘陣列或任何其他處理器為異質或非對稱的。在實體資源610、615間存在各種不同,一系列度量範圍包括架構、微架構、熱、功耗特性等等。這些不同可有效的顯示於處理器610、615中其為非對稱及異質的。針對至少一實施例,不同處理器610、615可位於相同晶片封裝中。
請參照第7圖根據本發明之一實施例顯示第二系統700之區塊圖。如第7圖所示,多處理器系統700為點對點互連系統,以及包括透過點對點互連750所互連之第一處理器770及第二處理器780。每一處理器770及780可
為處理器500作為處理器610、615之若干版本。
雖然圖示僅二處理器770及780,應理解此非用以限制本發明。在其他實施例中,一多額外處理器可表示於一給定處理器中。
處理器770及780顯示依次包含整合記憶體控制器(IM)單元772及782。處理器770也包含作為匯流排控制器單元點-對-點(P-P)介面776及778;類似地,第二處理器780包含P-P介面786及788。處理器770及780可透過點-對-點(P-P)介面750使用P-P介面電路778、788交換資訊。如第7圖所示,IMC 772及782耦接處理器依次至記憶體,即記憶體732及記憶體734,其可為部分主記憶體依次本地附加於處理器。
處理器770、780可以晶片集790透過個別P-P介面752、754使用點對點介面776、794、786、798彼此交換資訊。晶片集790可透過高效能圖形介面739與高效能圖形電路738交換資訊。
共享快取(未圖示)可包含於處理器之一中或在處理器兩者外,然而透過P-P互連與處理器連接,以使若處理器進入低功率模式時,處理器之一中或兩者的本地快取資訊可被儲存於共享快取中。
晶片790可透過介面796耦接至第一匯流排716。在一實施例中,第一匯流排716可為週邊元件互連(PCI)匯流排,或者如PCI Express匯流排或其他第三代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也可包含整合控制邏輯。第8圖不僅說明耦接至CL 872、882之記憶體832、834,也說明耦接至CL 872、882之I/O裝置814。傳統I/O裝置815耦接至晶片集890。
請參照第9圖,根據本發明之一實施例SoC 900之區塊圖。與第5圖類似元件具類似參照符號。同時,虛線方塊為進階SoC之選擇性特徵。在第9圖中,互連單元902耦接至:包含一或多核心502A-N組之應用程式處理器
910以及共享快取單元506;系統代理單元510;匯流排控制器單元516;整合記憶體控制器單元514;包含整合圖形邏輯508、提供靜態及/或視訊相機功能之影像處理器924、提供硬體音訊加速之音訊處理器926以及提供視訊編碼/解碼加速之視訊處理器928之一或多媒體處理器920;靜態隨機存取記憶體(SRAM)單元930;直接記憶體存取(DMA)單元932;以及耦接至一或多外部顯示器之顯示器單元940。
第10圖說明處理器包含中央處理單元(CPU)及圖形處單元(GPU),根據一實施例可執行至少一指令。在一實施例中,根據至少一實施例執行運算之指令可由CPU執行。在另一實施例中,指令可由GPU執行。在又一實施例中,指令可由CPU及GPU之結合加以執行。例如,在一實施例中,指令可被接收及解碼以便於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、以及I2
S/I2
C(整合晶片間音效/整合電路)介面1070。其他邏輯及電路包括如第10圖的處理器中,包括多個CPU或GPU及其他周邊介面控制器。
至少一實施例之一或多面向可由代表性指令實現,代表性指令儲存於代表處理器中不同邏輯之機器可讀取儲存媒體,其由機器讀取時促使機器製造邏輯以執行前述技術。此種表示法,稱為“IP core”可儲存於實體、機器可讀取媒體(“tape”)並提供給不同客戶或製造商以載入實際製作製造機器之邏輯或處理器。例如,由ARM Holdings,1td.所發展之CortexTM
家族以及由中國科學院Institute of Computing Technology(ICT)所發展的Loongson 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二進制程式碼1306,其可由具有至少一x86指令集核心之處理器1316本機執行。具有至少一x86指令集核心之處理器1316代表可實際執行與具有至少一x86指令集核心Intel處理器相同功能之處理器,藉由相容執行或其處理(1)Intel x86指令集核心之指令集之一實體部分為(2)在具有至少一x86指令集核心Intel處理器上執行之應用程式或其他軟體的機械碼(object code)版本,以實際完成與具有至少一x86指令集核心Intel處理器之相同結果。x86編譯器1304代表可操作以產生x86二進制碼1306(如機械碼),其可在有或無額外鏈結處理的情況下,在具有至少一x86指令集核心1316之Intel處理器上執行。同樣地,第13圖顯示高階語言程式1302可使用另一指令集編譯器1308進行編譯以產生另一二元制程式碼1310,其可由不具有至少一x86指令集核心之處理器1314本機執行(如具有執行MIPS Technologies of Sunnyvale CA之MIPS指令核心之處理器及/或執行ARM holdings of Sunnyvale,CA之ARM指令集)。指令轉換器1312用以轉換x86二進制碼1306為可在不具有x86指令集核心之處理器1314上執行之程式碼。轉換後程式碼不像另一指令集二進制碼1310,因為指
令轉換器能以製作;無論如何,轉換後程式碼將完成通用操作並由來自另一指令集的指令所組成。因此,指令轉換器1312代表軟體、韌體、硬體其結合體或透過仿真、模擬或任何其他程序,允許不具x86指令集處理器或核心的處理器或其他電子裝置可執行x86二進制程式碼1306。
第14圖說明提供向量線性內插功能之裝置1401之一實施例。裝置1401包括雙精度乘法器1410以接收Y輸入1414以及負U輸入1411,以及雙精度乘法器1420以接收X輸入1422以及U輸入1421。雙精度乘法器1410及1420平行將Y輸入值乘以負U輸入值以產生一組部分積作為至加法器1402的冗餘算術減算器(RAR)邏輯1431之輸入1413,以及將X輸入值乘以U輸入值以產生另一組部分積作為至加法器1402的RAR邏輯1432之輸入1423。加法器1402之RAR邏輯1436及承載傳遞加法器(CPA)1437加總由校準邏輯1434及1435與Y輸入1433所輸出之部分積簡化組計算內插值1405如Z=U×X-U×Y+Y。
應理解的是裝置1401之實施例提供支援平行計算之向量線性內插功能,兩個乘法可不依賴另一運算而執行。再者,在實施上其支援加法及/或減法平行處理,加法及減法兩者僅依賴乘法運算。然於實施1401中,支援加法及/或減法平行於乘法運算之部分積的加總,整體內插運匴可平行執行而不依賴任何其他運算。因此由裝置1401所提供之線性內插運算實質上與簡單乘法運算具有相同延遲。
第15圖說明提供向量線性內插功能之裝置1501之另一實施例。裝置1501包括雙精度乘法器1410,其分為一單精度乘法器1551以接收Y2輸入1514以及負U1輸入1511,以及另一單精度乘法器1552以接收X1輸入1512以及U1輸入1515。裝置1501也包括雙精度乘法器1420,其分為一單精度乘法器1553以接收Y2輸入1524以及負U2輸入1521,以及另一單精度乘法器1554以接收X2輸入1522以及U2輸入1525。
單精度乘法器1551及1552平行將Y1輸入值乘以負U1輸入值以產生一組部分積作為至可分割加法器1402的RAR邏輯1531之輸入1513,以及將X1輸入值乘以U1輸入值以產生另一組部分積作為至可分割加法器1402的RAR邏輯1532之輸入1516。單精度乘法器1553及1554平行將Y2輸入值乘以負U2輸入值以產生一組部分積作為至加法器1402的RAR邏輯1541之輸入1523,以及將X2輸入值乘以U2輸入值以產生另一組部分積作為至可分割加法器1402的RAR邏輯1542之輸入1526。
加法器1402之RAR邏輯1536及CPA 1537加總由校準邏輯1534及1535與Y1輸入1533所輸出之部分積簡化組計算內插值1505如Z1=U1×X1-U1×Y1+Y1。可分割加法器1402之RAR邏輯1546及CPA 1547加總由校準邏輯1544及1545與Y2輸入1543所輸出之部分積簡化組計算內插值1506如Z2=U2×X2-U2×Y2+Y2。
應理解的是由裝置1501之可分割乘法/加法邏輯提供
之多重線性內插運算實質上與簡單乘法運算具有相同延遲。
第16圖說明提供向量線性內插功能之處理1601之一實施例之流程圖。處理1601及在此所述之由處理區塊所執行之其他處理可包括由通用目的機器或專用目的機器或兩者之結合可執行運算程式碼之專用硬體或軟體或韌體。
於處理1601之處理區塊1610中,指令執行以提供向量線性內插功能開始。於處理區塊1620中,決定向量來源之部分向量元素。應理解的是在此處理1601雖以遞迴方式說明,但在某些情形下可平行執行多個運算。於處理區塊1630中,由第一來源運算元中之下一向量元素讀取X值。於處理區塊1640中,由第二來源運算元中之下一向量元素讀取U值。於處理區塊1650中,由第三來源運算元中之下一向量元素讀取Y值。於處理區塊1660中,由第一、第二及第三來源運算元計算內插值。
X×U-U×Y+Y
於處理區塊1670中,內插值儲存至目的運算元中之下一向量元素。處理接著至處理區塊1680,在此決定向量來源中之向量元素部分是否均內插完成。若否回到處理區塊1630重覆執行。若是則提供向量線性內插功能之指令處理結束於處理區塊1690。
第17圖說明提供向量線性內插功能之處理器之裝置
之另一實施例之流程圖。於處理1701之處理區塊1710中,指令執行以提供向量線性內插功能開始。於處理區塊1730中,由第一向量來源運算元讀取下一未遮罩來源元素值X。於處理區塊1740中,由第二向量來源運算元讀取下一未遮罩來源元素值U。於處理區塊1750中,由第三向量來源運算元讀取下一未遮罩來源元素值Y。於處理區塊1760中,由第一、第二及第三來源運算元計算內插值Z如:Z=X×U-U×Y+Y
於處理區塊1770中,內插值Z儲存至下一未遮罩向量目的元素。處理接著至處理區塊1780,在此決定是否達到遮罩以及所有未遮罩元素均已處理完成。若否回到處理區塊1730重覆執行。若是則提供向量線性內插功能之指令處理結束於處理區塊1790。當然,應理解的是在此處理1701雖以遞迴方式說明,但在某些情形下可平行執行多個運算。
第18圖說明提供向量線性內插功能之處理1801之又一實施例之流程圖。於處理1801之處理區塊1810中,指令執行以提供向量線性內插功能開始。於處理區塊1815中,決定提供向量線性內插功能之指令是否要求交叉混合、廣播或對向量運算元之一(即第三)精度向上收斂。若是,則於處理區塊1820中對第三向量來源運算元執行交
叉混合、廣播或精度向上收斂。若否處理直接來到處理區塊1830,在此由第一向量來源運算元讀取下一未遮罩來源元素值X。於處理區塊1840中,由第二向量來源運算元讀取下一未遮罩來源元素值U。於處理區塊1850中,由第三向量來源運算元讀取下一未遮罩來源元素值Y。於處理區塊1860中,由第一、第二及第三來源運算元計算內插值Z如:Z=X×U-U×Y+Y
再次,應理解的是在此處理1801雖以遞迴方式說明,但在某些情形下可平行執行多個運算。於處理區塊1870中,內插值Z儲存至下一未遮罩向量目的元素。處理接著至處理區塊1880,在此決定是否達到遮罩以及所有未遮罩元素均已處理完成。若否回到處理區塊1830重覆執行。若是則提供向量線性內插功能之指令處理結束於處理區塊1890。
應理解的是於處理1601中如同於其他處理如處理1701及1801中,雖說明提供向量線性內插功能指令的執行,其他步驟或階段也可發生,例如管線中之一或多步驟402-414及/或階段418-424,以便完全利用或反應提供向量線性內插功能指令。同時應理解的是藉由使用與單一乘法運算具相同延遲之可分割乘法/加法邏輯可平行提供多重線性內插運算。
在此所述機制之實施例可以硬體、軟體、韌體或其結合加以實現。本發明之實施例可實現為於包含至少一處理器、一儲存系統(包括揮發及非揮發記憶體及/或儲存元素)、至少一輸入裝置以及至少一輸出裝置之可程式化系統上執行之計算機程式或程式碼。
程式碼可施用於輸入指令以執行在此所述之功能並產生輸出資訊。輸出資訊可以已知方式施用於一或多輸出裝置。為應用程式之故,處理系統包括任何具有處理器之系統,如數位信號處理器(DSP)、微控制器、應用程式專用積體電路(ASIC)或微處理器。
程式碼可以高階程序或物件導向式程式語言加以實現以便與處理系進統行溝通。如有需要,程式碼也可以組合語言或機器語言加以實現。事實上,在此所述之機制不限於使用任何一種特定程式語言。在任何情形下,語言可為編譯或直譯語言。
至少一實施例之一或多面向可由代表性指令實現,代表性指令儲存於代表處理器中不同邏輯之機器可讀取儲存媒體,其由機器讀取時促使機器製造邏輯以執行前述技術。此種表示法,稱為“IP core”可儲存於實體、機器可讀取媒體並提供給不同客戶或製造商以載入實際製作製造機器之邏輯或處理器。
此等機器可讀取儲存媒體包括,但不限於,非暫態、由機器或裝置所製造或形成之實體配置物件,包括儲存媒體如硬碟(hard disk)、任何其他類型磁碟包括軟碟(floppy
diskette)、光碟(optical disk)、唯讀光碟記憶體(CD-ROM)、可抹寫光碟(CD-RW)及磁光碟(magneto-optical disk),半導體裝置如唯讀記憶體(ROM)、隨機存取記憶體(RAM)、如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、電子可抹除可程式化唯讀記憶體(EEPROM)、快閃記憶體(flash memory)、電子可抹除可程式化唯讀記憶體(EEPROM)、相變化記憶體(phase change memory)、磁或光卡、或適合儲存電子指令之其他類型媒體。
因此,本發明之實施例同時包含非暫態、實體機器可讀取媒體,其包含指令或包含如硬體描述語言(HDL)之設計資料,用以定義在此描述之架構、電路、裝置、處理器及/或系統特徵。此等實施例也可參照為程式產品。
在若干情形下,指令轉換器可使用於轉換指令由來源指令集至目標指令集。例如,指令轉換器可轉換(如使用靜態二進制轉換、包括動態編譯之動態二進制轉換)、變形、仿真或轉換指令至一或多由核心所處理之其他指令。指令轉換器可以軟體、硬體、韌體或其結合加以實現。指令轉換器可於處理器上、不在處理器上或部分在及部分不在處理器上。
因此,本發明揭露根據至少一實施例執行一或多指令之技術。特定實施例輔以圖式說明於上,係用以說明而非用以限定本發明,以及本發明不限於前述特定結構及配置,在不脫離本發明之精神和範圍內,任何熟習此技藝者當可更動與潤飾,本發明之保護範圍當視後附之申請專利
範圍所界定者為準。
102‧‧‧處理器
104‧‧‧快取
106‧‧‧暫存器檔案
108‧‧‧執行單元
109‧‧‧封裝指令組
110‧‧‧處理器匯流排
112‧‧‧圖形/視訊卡
116‧‧‧記憶體控制器中樞
120‧‧‧記憶體
124‧‧‧資料儲存
126‧‧‧無線收發器
128‧‧‧快閃Bios
130‧‧‧I/O控制器中樞
134‧‧‧網路控制器
159‧‧‧處理核心
146‧‧‧SDRAM控制
147‧‧‧SRAM控制
148‧‧‧突發快閃介面
149‧‧‧PCMIA/CF卡控制
150‧‧‧LCD控制
151‧‧‧DMA控制
152‧‧‧選擇性匯流排主介面
154‧‧‧I/O橋接器
155‧‧‧UART
156‧‧‧USB
157‧‧‧藍牙UART
158‧‧‧I/O擴充介面
161‧‧‧SIMD協同處理器
166‧‧‧主處理器
167‧‧‧快取
168‧‧‧I/O系統
169‧‧‧無線介面
200‧‧‧處理器
201‧‧‧前端
226‧‧‧指令前提取器
228‧‧‧指令解碼器
230‧‧‧追蹤快取
232‧‧‧微程式碼ROM
234‧‧‧UOP佇列
203‧‧‧失序引擎
202‧‧‧快速排程器
204‧‧‧慢速/一般浮點排程器
206‧‧‧簡單浮點排程
208‧‧‧整數暫存器檔案/繞行網路
210‧‧‧點暫存器檔案/繞行網路
211‧‧‧執行區塊
400‧‧‧管線
402‧‧‧提取
404‧‧‧長度解碼
406‧‧‧解碼
408‧‧‧分配
422‧‧‧重命名
424‧‧‧排程
414‧‧‧暫存器讀取/記憶體讀取
416‧‧‧執行階段
418‧‧‧寫回/記憶體寫入
422‧‧‧異常處理
424‧‧‧確認
430‧‧‧前端單元
432‧‧‧分支預測單元
434‧‧‧指令快取單元
436‧‧‧指令TLB單元
438‧‧‧指令提取
440‧‧‧解碼單元
450‧‧‧執行引擎單元
452‧‧‧重命名/分配器單元
454‧‧‧報廢單元
456‧‧‧排程器單元
458‧‧‧實體暫存器檔案單元
462‧‧‧執行單元
464‧‧‧記憶體存取單元
460‧‧‧執行叢集
470‧‧‧記憶體單元
472‧‧‧資料TLB單元
474‧‧‧資料快取單元
476‧‧‧快取單元
490‧‧‧核心
500‧‧‧處理器
502A,502N‧‧‧核心
504A,504N‧‧‧快取單元
506‧‧‧共享快取單元
508‧‧‧整合圖形
510‧‧‧系統代理單元
512‧‧‧環
514‧‧‧整合記憶體控制單元
516‧‧‧匯流排控制單元
610,615‧‧‧處理器
620‧‧‧GMCH
640‧‧‧記憶體
645‧‧‧顯示器
650‧‧‧ICH
660‧‧‧外部圖形裝置
670‧‧‧週邊
770,780‧‧‧處理器
732,734‧‧‧記憶體
790‧‧‧晶片集
738‧‧‧高效能圖形
718‧‧‧匯流棑橋接器
714‧‧‧I/O裝置
724‧‧‧音訊I/O
722‧‧‧鍵盤/滑鼠
727‧‧‧溝通裝置
728‧‧‧資料儲存
730‧‧‧程式碼及資料
814‧‧‧I/O裝置
870,880‧‧‧處理器
832,834‧‧‧記憶體
890‧‧‧晶片集
815‧‧‧傳統I/O
910‧‧‧應用程式處理器
920‧‧‧媒體處理器
902‧‧‧互連單元
924‧‧‧影像處理器
926‧‧‧音訊處理器
928‧‧‧視訊處理器
940‧‧‧顯示單元
930‧‧‧SRAM單元
932‧‧‧DMA單元
1005‧‧‧CPU
1010‧‧‧GPU
1015‧‧‧影像處理器
1020‧‧‧視訊處理器
1025‧‧‧USB
1030‧‧‧UART
1035‧‧‧SPI SDIO
1040‧‧‧顯示器
1045‧‧‧HDMI
1050‧‧‧MIPI
1055‧‧‧快閃
1060‧‧‧DDR
1065‧‧‧保全引擎
1070‧‧‧I2S I2C
1110‧‧‧硬體模型(HDL或實體設計資料)
1120‧‧‧模擬軟體
1130‧‧‧儲存媒體
1165‧‧‧製造廠
1205‧‧‧程式
1210‧‧‧仿真邏輯
1215‧‧‧處理器
本發明之較佳實施例輔以圖式說明,其中:第1A圖為執行指令以提供向量線性內插功能之系統之一實施例之區塊圖。
第1B圖為執行指令以提供向量線性內插功能之系統之另一實施例之區塊圖。
第1C圖為執行指令以提供向量線性內插功能之系統之另一實施例之區塊圖。
第2圖為執行指令以提供向量線性內插功能之處理器之一實施例之區塊圖。
第3A圖說明根據一實施例之封裝資料類型。
第3B圖說明根據一實施例之封裝資料類型。
第3C圖說明根據一實施例之封裝資料類型。
第3D圖說明根據一實施例編碼指令以提供向量線性內插功能。
第3E圖說明根據另一實施例編碼指令以提供向量線性內插功能。
第3F圖說明根據另一實施例編碼指令以提供向量線性內插功能。
第3G圖說明根據另一實施例編碼指令以提供向量線性內插功能。
第3H圖說明根據另一實施例編碼指令以提供向量線
性內插功能。
第4A圖說明用以提供向量線性內插功能之執行指令的處理器微架構之一實施例之元件。
第4B圖說明用以提供向量線性內插功能之執行指令的處理器微架構之另一實施例之元件。
第5圖為用以執行指令以提供向量線性內插功能之處理器之一實施例之區塊圖。
第6圖為用以執行指令以提供向量線性內插功能之計算機系統之一實施例之區塊圖。
第7圖為用以執行指令以提供向量線性內插功能之計算機系統之另一實施例之區塊圖。
第8圖為用以執行指令以提供向量線性內插功能之計算機系統之另一實施例之區塊圖。
第9圖為用以執行指令以提供向量線性內插功能之晶片上系統之一實施例之區塊圖。
第10圖為用以執行指令以提供向量線性內插功能之處理器之一實施例之區塊圖。
第11圖為提供向量線性內插功能之IP程式碼發展系統之一實施例之區塊圖。
第12圖說明提供向量線性內插功能之架構仿真系統之一實施例。
第13圖說明提供向量線性內插功能之指令轉換系統之一實施例。
第14圖說明提供向量線性內插功能之裝置之一實施
例。
第15圖說明提供向量線性內插功能之裝置之另一實施例。
第16圖說明提供向量線性內插功能之處理器之裝置之一實施例之流程圖。
第17圖說明提供向量線性內插功能之處理器之裝置之另一實施例之流程圖。
第18圖說明提供向量線性內插功能之處理器之裝置之又一實施例之流程圖。
100‧‧‧系統
102‧‧‧處理器
104‧‧‧快取
106‧‧‧暫存器檔案
108‧‧‧執行單元
109‧‧‧封裝指令組
110‧‧‧處理器匯流排
112‧‧‧圖形/視訊卡
114‧‧‧互連
116‧‧‧記憶體控制器中樞
118‧‧‧記憶體介面
120‧‧‧記憶體
122‧‧‧匯流排
124‧‧‧資料儲存
126‧‧‧無線收發器
128‧‧‧快閃Bios
130‧‧‧I/O控制器中樞
134‧‧‧網路控制器
Claims (31)
- 一種處理器,包括:一或多向量暫存器,其各一者包括用以儲存向量元素值之一第一複數資料欄位;一解碼階段,其用以解碼一第一指令,該第一指令規定:該一或多向量暫存器之一第一運算元、該等向量元素之一尺寸、該等第一複數資料欄位之一部分、該一或多向量暫存器之一第二運算元以及一第三運算元;以及一執行單元,反應於已解碼之該第一指令以及針對該等第一複數資料欄位之該部分之每一資料欄位,進行:依次從該第一、該第二以及該第三運算元中向量元素之該尺寸之對應資料欄位中讀取一第一值、一第二值以及一第三值;以及平行計算一內插值為將該第一值乘以該第二值減去該第二值乘以該第三值加上該第三值。
- 如申請專利範圍第1項所述之處理器,其中該執行單元反應於已解碼之該第一指令以及針對該等第一複數資料欄位之該部分之每一資料欄位,更進行依次儲存已計算之每一內插值在由該第一指令所規定之一目的運算元中向量元素之該尺寸之對應的資料欄位中。
- 如申請專利範圍第1項所述之處理器,其中已規定之該第三運算元為該一或多向量暫存器之一。
- 如申請專利範圍第1項所述之處理器,其中已規定之該第三運算元為一記憶體位置。
- 如申請專利範圍第1項所述之處理器,該第一指令規定用以識別該等第一複數資料欄位之該部分之一遮罩,其中由該來源運算元中資料欄位所讀取之該等值對應該來源運算元中未被該第一指令所規定之該遮罩所遮罩之向量元素。
- 如申請專利範圍第1項所述之處理器,其中向量元素之該尺寸為64-位元。
- 如申請專利範圍第1項所述之處理器,該執行單元用以:依次從該第一、該第二以及該第三運算元中向量元素之該尺寸之對應的資料欄位中讀取一第四值、一第五值以及一第六值;以及平行計算該內插值為將該第一值乘以該第二值減去該第二值乘以該第三值加上該第三值,計算另一內插值為將該第四值乘以該第五值減去該第五值乘以該第六值加上該第六值。
- 如申請專利範圍第7項所述之處理器,其中向量元素之該尺寸為32-位元。
- 如申請專利範圍第7項所述之處理器,其中向量元素之該尺寸為16-位元。
- 一種機器可實現之方法,包括:由一第一可執行指令所規定向量元素之一尺寸之對應的資料欄位中在由該第一可執行指令所規定之一第一、一第二以及一第三運算元中依次讀取一第一值、一第二值以 及一第三值;以及計算一第一內插值為將該第一值乘以該第二值減去該第二值乘以該第三值加上該第三值。
- 如申請專利範圍第10項所述之機器可實現方法,其中向量元素之該尺寸為64-位元。
- 如申請專利範圍第10項所述之機器可實現方法,包括:依次從該第一、該第二以及該第三運算元中向量元素之該尺寸之對應的資料欄位中讀取一第四值、一第五值以及一第六值;以及平行於計算該第一內插值,計算一第二內插值為將該第四值乘以該第五值減去該第五值乘以該第六值加上該第六值。
- 如申請專利範圍第12項所述之機器可實現方法,其中向量元素之該尺寸為32-位元。
- 如申請專利範圍第12項所述之機器可實現方法,其中向量元素之該尺寸為16-位元。
- 如申請專利範圍第10項所述之機器可實現方法,其中已規定之該第三運算元為一組向量暫存器之一。
- 如申請專利範圍第10項所述之機器可實現方法,其中已規定之該第三運算元為一記憶體位置。
- 如申請專利範圍第10項所述之機器可實現方法,該第一執行指令規定用以識別向量元素該尺寸之該資料欄位一部分之一遮罩,其中由該第一、該第二以及該第三運 算元對應資料欄位所讀取之該等值對應在該第一、該第二以及該第三運算元中未被該第一執行指令所規定之該遮罩所遮罩之向量元素。
- 一種具有用以提供向量線性內插功能之指令與邏輯的裝置,包括一暫存器/記憶體存取邏輯,用以由一第一可執行指令所規定向量元素之一尺寸之對應的資料欄位中在由該第一可執行指令所規定之一第一、一第二以及一第三運算元中依次讀取一第一值、一第二值以及一第三值,;以及一可分割乘法/加法邏輯,用以計算一第一內插值,首先平行的將該第一值乘以該第二值以產生一第一組部分乘積,以及將該第二值乘以該第三值以產生一第二組負的部分乘積,接著將該第一組部分乘積加上該第二組負的部分乘積加上該第三值。
- 如申請專利範圍第18項所述之裝置,進行儲存該第一內插值至由該第一可執行指令所規定之一目的運算元中向量元素之該尺寸之一對應的資料欄位中。
- 如申請專利範圍第19項所述之裝置,其中由該第一可執行指令所規定之該目的運算元為不同於由該第一可執行指令所規定之該第一、該第二以及該運算元之一向量暫存器。
- 如申請專利範圍第18項所述之裝置,該暫存器/記憶體存取邏輯用以由該第一可執行指令所規定在該第一、該第二以及該第三運算元中向量元素之該尺寸之對應的資 料欄位中依次讀取一第四值、一第五值以及一第六值;以及該可分割乘法/加法邏輯用以計算一第二內插值,平行的將該第四值乘以該第五值以產生一第三組部分乘積以及將該第五值乘以該第六值以產生一第四組負的部分乘積,接著將該第三組部分乘積加上該第四組負的部分乘積加上該第六值。
- 如申請專利範圍第21項所述之裝置,其中為該第三值及該第六值所讀取之對應的資料欄位轉換為由該第一可執行指令所規定之向量元素之該尺寸。
- 如申請專利範圍第22項所述之裝置,其中用於該第三值及該第六值所讀取之對應的資料欄位係從該第一可執行指令所規定之該第三運算元進行廣播。
- 如申請專利範圍第22項所述之裝置,其中用於該第三及該第六值所讀取之對應的資料欄位係從該第一可執行指令所規定之該第三運算元進行拌合。
- 一種處理系統,包括:一記憶體;以及一第一複數處理器,每一該等第一複數處理器包括:一或多向量暫存器,其各一者包括用以儲存向量元素值之一第一複數資料欄位;一解碼階段,其用以解碼一第一指令,該指令規定:該一或多向量暫存器之一第一運算元、該等向量元素之一尺寸、該等第一複數資料欄位之一部分、該一或多向量暫 存器之一第二運算元以及一第三運算元;一暫存器/記憶體讀取存取階段,用以依次從該第一、該第二以及該第三運算元中向量元素之該尺寸之對應的資料欄位中讀取一第一值、一第二值以及一第三值;以及一執行階段,其用以反應於已解碼之該第一指令以及針對該等第一複數資料欄位之該部分之每一資料欄位,平行計算一第一內插值為將該第一值乘以該第二值減去該第二值乘以該第三值加上該第三值。
- 如申請專利範圍第25項所述之處理系統,其中向量元素之該尺寸為64-位元。
- 如申請專利範圍第25項所述之處理系統,該暫存器/記憶體讀取存取階段從該第一、該第二以及該第三運算元中向量元素之該尺寸之對應資料欄位中依次讀取一第四值、一第五值以及一第六值;以及該執行階段,對該等第一複數資料欄位之該部分之每一對資料欄位以及平行於計算該第一內插值,進行計算另一內插值為將該第四值乘以該第五值減去該第五值乘以該第六值加上該第六值。
- 如申請專利範圍第27項所述之處理系統,其中用於該第三值及該第六值所讀取之對應的資料欄位轉換直到由該第一可執行指令所規定之向量元素之該尺寸。
- 如申請專利範圍第28項所述之處理器系統,其中向量元素之該尺寸為32-位元。
- 如申請專利範圍第28項所述之處理器系統,其中用於該第三及該第六值所讀取之對應資料欄位係從該第一可執行指令所規定之該第三運算元進行廣播。
- 如申請專利範圍第28項所述之處理器系統,其中用於該第三及該第六值所讀取之對應資料欄位係從該第一可執行指令所規定之該第三運算元進行拌合。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/065635 WO2013089791A1 (en) | 2011-12-16 | 2011-12-16 | Instruction and logic to provide vector linear interpolation functionality |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201346590A TW201346590A (zh) | 2013-11-16 |
TWI483126B true TWI483126B (zh) | 2015-05-01 |
Family
ID=48613059
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101147289A TWI483126B (zh) | 2011-12-16 | 2012-12-13 | 提供向量線性內插功能之指令與邏輯 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9766886B2 (zh) |
CN (1) | CN104011658B (zh) |
TW (1) | TWI483126B (zh) |
WO (1) | WO2013089791A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10228941B2 (en) * | 2013-06-28 | 2019-03-12 | Intel Corporation | Processors, methods, and systems to access a set of registers as either a plurality of smaller registers or a combined larger register |
US10152321B2 (en) * | 2015-12-18 | 2018-12-11 | Intel Corporation | Instructions and logic for blend and permute operation sequences |
US20170185402A1 (en) * | 2015-12-23 | 2017-06-29 | Intel Corporation | Instructions and logic for bit field address and insertion |
EP3286638A4 (en) * | 2016-03-31 | 2018-09-05 | Hewlett-Packard Enterprise Development LP | Logical operations |
US10402413B2 (en) * | 2017-03-31 | 2019-09-03 | Intel Corporation | Hardware accelerator for selecting data elements |
WO2020099935A2 (en) * | 2018-10-04 | 2020-05-22 | Zafar Atif | Dynamic processing memory core on a single memory chip |
CN110413948B (zh) * | 2019-07-30 | 2023-08-11 | 广东三维家信息科技有限公司 | 方位矩阵计算方法及装置 |
US11354123B2 (en) | 2019-10-18 | 2022-06-07 | Macronix International Co., Ltd. | Memory device and computing in memory method thereof |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5935198A (en) * | 1996-11-22 | 1999-08-10 | S3 Incorporated | Multiplier with selectable booth encoders for performing 3D graphics interpolations with two multiplies in a single pass through the multiplier |
US6373494B1 (en) * | 1998-01-29 | 2002-04-16 | Sony Corporation | Signal processing apparatus and image processing apparatus |
US6529922B1 (en) * | 1997-07-02 | 2003-03-04 | Creative Technology Ltd. | Instruction set for controlling a processor to convert linear data to logarithmic data in a single instruction that define the exponent filed of the logarithmic value |
TW581978B (en) * | 2001-09-14 | 2004-04-01 | Samsung Electronics Co Ltd | Apparatus for processing digital image and method and computer readable medium therefor |
US8037119B1 (en) * | 2006-02-21 | 2011-10-11 | Nvidia Corporation | Multipurpose functional unit with single-precision and double-precision operations |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5805875A (en) * | 1996-09-13 | 1998-09-08 | International Computer Science Institute | Vector processing system with multi-operation, run-time configurable pipelines |
US5832288A (en) * | 1996-10-18 | 1998-11-03 | Samsung Electronics Co., Ltd. | Element-select mechanism for a vector processor |
US5850227A (en) * | 1996-12-20 | 1998-12-15 | Compaq Computer Corporation | Bit map stretching using operand routing and operation selective multimedia extension unit |
JP5748935B2 (ja) * | 2004-11-03 | 2015-07-15 | インテル コーポレイション | Simd命令をサポートするプログラマブルデータ処理回路 |
US20090172348A1 (en) * | 2007-12-26 | 2009-07-02 | Robert Cavin | Methods, apparatus, and instructions for processing vector data |
-
2011
- 2011-12-16 US US13/977,736 patent/US9766886B2/en active Active
- 2011-12-16 CN CN201180075531.1A patent/CN104011658B/zh active Active
- 2011-12-16 WO PCT/US2011/065635 patent/WO2013089791A1/en active Application Filing
-
2012
- 2012-12-13 TW TW101147289A patent/TWI483126B/zh active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5935198A (en) * | 1996-11-22 | 1999-08-10 | S3 Incorporated | Multiplier with selectable booth encoders for performing 3D graphics interpolations with two multiplies in a single pass through the multiplier |
US6529922B1 (en) * | 1997-07-02 | 2003-03-04 | Creative Technology Ltd. | Instruction set for controlling a processor to convert linear data to logarithmic data in a single instruction that define the exponent filed of the logarithmic value |
US6373494B1 (en) * | 1998-01-29 | 2002-04-16 | Sony Corporation | Signal processing apparatus and image processing apparatus |
TW581978B (en) * | 2001-09-14 | 2004-04-01 | Samsung Electronics Co Ltd | Apparatus for processing digital image and method and computer readable medium therefor |
US8037119B1 (en) * | 2006-02-21 | 2011-10-11 | Nvidia Corporation | Multipurpose functional unit with single-precision and double-precision operations |
Non-Patent Citations (1)
Title |
---|
DORIT NAISHLOS et al. 'Vectorizing for a SIMdD DSP Architecture' ACM 2003 Article. ISBN 1-58113-676-5. * |
Also Published As
Publication number | Publication date |
---|---|
WO2013089791A1 (en) | 2013-06-20 |
TW201346590A (zh) | 2013-11-16 |
CN104011658B (zh) | 2017-04-05 |
US20160266902A1 (en) | 2016-09-15 |
CN104011658A (zh) | 2014-08-27 |
US9766886B2 (en) | 2017-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6207095B2 (ja) | 条件付きループをベクトル化する命令及び論理 | |
US10459877B2 (en) | Instruction and logic to provide vector compress and rotate functionality | |
TWI550509B (zh) | 提供向量混合與置換功能的指令與邏輯 | |
TWI731892B (zh) | 用於以通道為基礎的跨步儲存操作之指令及邏輯 | |
TWI476695B (zh) | 提供向量水平比較功能之指令與邏輯 | |
TWI578155B (zh) | 用於條件式記憶體錯誤輔助抑制的處理器、處理系統及方法 | |
TWI483126B (zh) | 提供向量線性內插功能之指令與邏輯 | |
JP6467742B2 (ja) | プロセッサ、方法、およびプロセッシングシステム | |
TWI706323B (zh) | 用於使用monitor及mwait架構之使用者層級執行緒同步的方法及裝置 | |
TWI539373B (zh) | 用以提供向量子位元解壓縮功能之方法、機器可讀取媒體、處理器及 處理系統 | |
TWI697788B (zh) | 用以提供向量包裝之直方圖功能的方法,裝置,指令及邏輯 | |
TWI610233B (zh) | 用於提供向量分組元組交叉比較功能的方法、處理器和處理系統 | |
TWI743064B (zh) | 用於取得多重向量元素操作之指令及邏輯 | |
JP2016527650A (ja) | ベクトルポピュレーションカウント機能性を提供する方法、装置、命令、およびロジック | |
TWI715681B (zh) | 用於位元欄位位址和插入之指令及邏輯 | |
TWI546735B (zh) | 用以提供在遮罩暫存器與通用暫存器或記憶體間的轉換之指令及邏輯 | |
TWI720056B (zh) | 用於設置多重向量元素操作之指令及邏輯 | |
JP2014530426A (ja) | ストライド機能及びマスク機能を有するベクトルロード及びベクトルストアを提供する命令及びロジック | |
TW201339964A (zh) | 使用控制操作來進行單一指令多重資料(simd)可變移位與旋轉之技術 | |
TW201723815A (zh) | 用於偶數與奇數向量取得操作之指令及邏輯 | |
TWI773654B (zh) | 處理器、運算系統及用於執行以向量為基礎的位元操控之方法 | |
JP6231155B2 (ja) | ベクトル散乱演算機能及びベクトル収集演算機能を提供する命令及びロジック |