TWI743064B - 用於取得多重向量元素操作之指令及邏輯 - Google Patents
用於取得多重向量元素操作之指令及邏輯 Download PDFInfo
- Publication number
- TWI743064B TWI743064B TW105137055A TW105137055A TWI743064B TW I743064 B TWI743064 B TW I743064B TW 105137055 A TW105137055 A TW 105137055A TW 105137055 A TW105137055 A TW 105137055A TW I743064 B TWI743064 B TW I743064B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- vector register
- data elements
- instruction
- register
- Prior art date
Links
- 239000013598 vector Substances 0.000 claims abstract description 846
- 238000000034 method Methods 0.000 claims description 84
- 238000003860 storage Methods 0.000 claims description 40
- 230000000873 masking effect Effects 0.000 claims description 36
- 230000001419 dependent effect Effects 0.000 abstract description 11
- 102100035972 ATPase GET3 Human genes 0.000 abstract description 7
- 102100040000 Golgi to ER traffic protein 4 homolog Human genes 0.000 abstract description 7
- 101001074983 Homo sapiens ATPase GET3 Proteins 0.000 abstract description 7
- 101000886726 Homo sapiens Golgi to ER traffic protein 4 homolog Proteins 0.000 abstract description 7
- 230000015654 memory Effects 0.000 description 224
- 238000012545 processing Methods 0.000 description 81
- 238000010586 diagram Methods 0.000 description 38
- 238000007667 floating Methods 0.000 description 31
- 230000007246 mechanism Effects 0.000 description 23
- 238000004891 communication Methods 0.000 description 21
- 238000005516 engineering process Methods 0.000 description 21
- 230000006870 function Effects 0.000 description 17
- 239000000872 buffer Substances 0.000 description 14
- 239000003795 chemical substances by application Substances 0.000 description 14
- 238000013461 design Methods 0.000 description 13
- 238000004519 manufacturing process Methods 0.000 description 13
- 238000012856 packing Methods 0.000 description 11
- 230000002093 peripheral effect Effects 0.000 description 10
- 230000003287 optical effect Effects 0.000 description 8
- 238000012546 transfer Methods 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 7
- 230000009977 dual effect Effects 0.000 description 7
- 230000033001 locomotion Effects 0.000 description 7
- 230000003068 static effect Effects 0.000 description 7
- 238000013500 data storage Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 230000003993 interaction Effects 0.000 description 5
- 239000003607 modifier Substances 0.000 description 5
- 238000004088 simulation Methods 0.000 description 5
- 238000013519 translation Methods 0.000 description 5
- 238000003491 array Methods 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 4
- 230000006835 compression Effects 0.000 description 4
- 238000007906 compression Methods 0.000 description 4
- 238000000605 extraction Methods 0.000 description 4
- 230000005291 magnetic effect Effects 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 239000004973 liquid crystal related substance Substances 0.000 description 3
- 230000036316 preload Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000000717 retained effect Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 230000001360 synchronised effect Effects 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
- 230000001413 cellular effect Effects 0.000 description 2
- 230000001427 coherent effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 238000000329 molecular dynamics simulation 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
- 230000002829 reductive effect Effects 0.000 description 2
- 239000000758 substrate Substances 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
- 230000009471 action Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 238000012937 correction Methods 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
- 239000012634 fragment Substances 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000003278 mimic effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
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
-
- 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/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/30101—Special purpose registers
-
- 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/30112—Register structure comprising data of variable length
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Advance Control (AREA)
Abstract
一種處理器包括一執行單元,其用以執行用以自向量暫存器中封裝之多個資料結構取得相同類型之資料元素的指令。該執行單元包括用以取決於一指令編碼而自每一資料結構內之特定位置擷取資料元素的邏輯。一向量GET3指令編碼指定應自每一XYZ型資料結構中之第一、第二或第三位置擷取資料元素。一向量GET4指令編碼指定應自每一XYZW型資料結構中之第一、第二、第三或第四位置擷取資料元素,且應將該等經擷取資料元素置放於一目的地向量之上半部或下半部中。該執行單元包括用以將該等經擷取資料元素置放於該目的地向量中之相連位置中的邏輯。該執行單元包括用以將該目的地向量儲存至在該指令中所指定之一目的地向量暫存器的邏輯。
Description
發明領域 本發明係關於處理邏輯、微處理器及關聯指令集架構之領域,關聯指令集架構在由處理器或其他處理邏輯執行時執行邏輯、數學或其他功能操作。
發明背景 多處理器系統正變得愈來愈常見。多處理器系統之應用包括自始至終進行動態域分割直至桌上型計算。為了利用多處理器系統,可將待執行之程式碼分成多個執行緒以供各種處理實體執行。每一執行緒可彼此並行地執行。指令在其接收於一處理器上時可解碼成原生或更加原生之項或指令字,以供在該處理器上執行。處理器可實施於系統單晶片中。以三個或四個元素之元組而組織的資料結構可在媒體應用程式、高效能計算應用程式及分子動力學應用程式中使用。
依據本發明之一實施例,係特地提出一種處理器,包含:用以接收一指令之一前端;用以解碼該指令之一解碼器;一第一源向量暫存器,用以儲存至少兩個元組之資料元素,每一元組包括至少三個資料元素;一第二源向量暫存器,用以儲存至少兩個元組之資料元素,每一元組包括至少三個資料元素;用以執行該指令之一核心,包括:一第一邏輯,用以自該第一源向量暫存器中之每一元組內之一特定位置擷取一各別資料元素,該特定位置係取決於該指令之一編碼;一第二邏輯,用以自該第二源向量暫存器中之每一元組內之該特定位置擷取一各別資料元素;一第三邏輯,用以將要自該第一源向量暫存器擷取之該等資料元素儲存於一目的地向量暫存器中之相連位置中;一第四邏輯,用以將要自該第二源向量暫存器擷取之該等資料元素儲存於該目的地向量暫存器中之相連位置中;以及用以引退該指令之一引退單元。
較佳實施例之詳細說明 以下實施方式描述用於在處理設備上執行用以取得多重向量元素之操作之指令及處理邏輯。此處理設備可包括無序處理器。在以下實施方式中,闡述諸如處理邏輯、處理器類型、微架構條件、事件、啟用機制及類似者之眾多特定細節,以便提供對本發明之實施例之更透徹的理解。然而,熟習此項技術者應瞭解,可在無此等特定細節的情況下實踐實施例。另外,尚未詳細地展示一些熟知結構、電路及類似者以避免不必要地混淆本發明之實施例。
儘管以下實施例係參考處理器予以描述,但其他實施例適用於其他類型之積體電路及邏輯裝置。本發明之實施例之相似技術及教示可應用於可受益於較高管線輸送量及經改良效能的其他類型之電路或半導體裝置。本發明之實施例之教示適用於執行資料操縱之任一處理器或機器。然而,該等實施例並不限於執行512位元、256位元、128位元、64位元、32位元或16位元資料操作之處理器或機器,且可應用於可執行資料之操縱或管理之任一處理器及機器。此外,以下實施方式提供實例,且隨附圖式出於說明之目的而展示各種實例。然而,不應在限制性意義上解釋此等實例,此係因為該等實例僅僅意欲提供本發明之實施例之實例,而非提供本發明之實施例的所有可能實施方案之詳盡清單。
儘管以下實例在執行單元及邏輯電路之上下文中描述指令處置及散佈,但本發明之其他實施例可藉由儲存於機器可讀有形媒體上之資料或指令而實現,該資料或該等指令在由機器執行時致使機器執行與本發明之至少一個實施例一致的功能。在一個實施例中,與本發明之實施例相關聯的功能係以機器可執行指令予以體現。該等指令可用以致使可運用該等指令而規劃之一般用途或特殊用途處理器執行本發明之步驟。本發明之實施例可被提供為電腦程式產品或軟體,其可包括機器或電腦可讀媒體,該媒體具有儲存於其上之指令,該等指令可用以規劃電腦(或其他電子裝置)以執行根據本發明之實施例的一或多個操作。此外,本發明之實施例的步驟可由含有用於執行該等步驟之固定功能邏輯的特定硬體組件執行,或由經規劃電腦組件與固定功能硬體組件之任何組合執行。
用以規劃邏輯以執行本發明之實施例的指令可儲存於系統中之記憶體內,諸如DRAM、快取記憶體、快閃記憶體或其他儲存體。此外,該等指令可經由網路或藉由其他電腦可讀媒體而散佈。因此,機器可讀媒體可包括用於以可由機器(例如,電腦)讀取之形式儲存或傳輸資訊的任何機構,但不限於軟碟、光碟、緊密光碟唯讀記憶體(CD-ROM)及磁光碟、唯讀記憶體(ROM)、隨機存取記憶體(RAM)、可抹除可規劃唯讀記憶體(EPROM)、電可抹除可規劃唯讀記憶體(EEPROM)、磁卡或光卡、快閃記憶體,或用於在網際網路上經由電、光學、聲學或其他形式之傳播信號(例如,載波、紅外線信號、數位信號等等)來傳輸資訊的有形機器可讀儲存體。因此,電腦可讀媒體可包括適合於以可由機器(例如,電腦)讀取之形式儲存或傳輸電子指令或資訊的任何類型之有形機器可讀媒體。
一設計可經歷各種階段:自建立至模擬至製造。表示設計之資料可以數種方式表示設計。首先,可使用硬體描述語言或另一功能描述語言來表示硬體,此在模擬中可為有用的。另外,可在設計程序之一些階段產生具有邏輯及/或電晶體閘極之電路層級模型。此外,在某一階段,設計可達到表示各種裝置在硬體模型中之實體置放的資料層級。在使用一些半導體製造技術之狀況下,表示硬體模型之資料可為指定各種特徵在用於用以生產積體電路之遮罩之不同遮罩層上之存在或不存在的資料。在設計之任何表示中,可以機器可讀媒體之任一形式儲存資料。記憶體或磁性或光學儲存體(諸如光碟)可為用以儲存資訊之機器可讀媒體,該資訊係經由經調變或以其他方式產生以傳輸此資訊之光波或電波而傳輸。當傳輸指示或攜載程式碼或設計之電載波時,在執行電信號之複製、緩衝或重新傳輸的程度上,可產生新複本。因此,通訊提供者或網路提供者可至少臨時地在有形機器可讀媒體上儲存體現本發明之實施例之技術的物品,諸如被編碼成載波之資訊。
在現代處理器中,數個不同執行單元可用以處理及執行多種程式碼及指令。一些指令之完成可較快,而其他指令之完成可花費數個時脈循環。指令之輸送量愈快,則處理器之總體效能愈好。因此,將有利的是使一樣多的指令儘可能快地執行。然而,可存在具有較大複雜性且在執行時間及處理器資源方面需要更多之某些指令,諸如浮點指令、載入/儲存操作、資料移動等等。
隨著較多電腦系統用於網際網路、文字及多媒體應用程式中,已隨著時間推移而引入額外處理器支援。在一個實施例中,一指令集可與一或多個電腦架構相關聯,該一或多個電腦架構包括資料類型、指令、暫存器架構、定址模式、記憶體架構、中斷及例外狀況處置,以及外部輸入及輸出(I/O)。
在一個實施例中,指令集架構(ISA)可由可包括用以實施一或多個指令集之處理器邏輯及電路的一或多個微架構實施。因此,具有不同微架構之處理器可共用共同指令集之至少一部分。舉例而言,Intel® Pentium 4處理器、Intel® Core™處理器及來自Sunnyvale CA之Advanced Micro Devices公司之處理器實施x86指令集之幾乎相同的版本(其中已運用較新版本而添加一些延伸),但具有不同的內部設計。相似地,由其他處理器開發公司(諸如ARM Holdings有限公司、MIPS,或其使用人或採用者)設計之處理器可共用共同指令集之至少一部分,但可包括不同的處理器設計。舉例而言,可在使用新技術或熟知技術之不同微架構中以不同方式實施ISA之相同暫存器架構,包括專用實體暫存器、使用暫存器重新命名機制(例如,使用暫存器別名表格(RAT)之一或多個動態分配實體暫存器、重新排序緩衝器(ROB)及引退暫存器檔案。在一個實施例中,暫存器可包括一或多個暫存器、暫存器架構、暫存器檔案,或可為或可不為軟體規劃師可定址之其他暫存器集。
一指令可包括一或多個指令格式。在一個實施例中,指令格式可指示用以尤其指定待執行之運算及彼運算將被執行之運算元的各種欄位(位元之數目、位元之位置等等)。在一另外實施例中,一些指令格式可進一步由指令範本(或子格式)界定。舉例而言,給定指令格式之指令範本可被界定為具有指令格式之欄位的不同子集,及/或被界定為具有經不同解譯之給定欄位。在一個實施例中,指令可使用指令格式(且在被界定的情況下,以彼指令格式之指令範本中之給定者)予以表達,且指定或指示運算及運算元,該運算將對該等運算元進行運算。
科學、金融、自動向量化一般用途、RMS (辨識、採擷及合成)以及視覺及多媒體應用程式(例如,2D/3D圖形、影像處理、視訊壓縮/解壓縮、語音辨識演算法及音訊操縱)可需要對大量資料項目執行相同操作。在一個實施例中,單指令多資料(SIMD)指代致使處理器對多個資料元素執行操作的一類型之指令。SIMD技術可用於可邏輯上將暫存器中之位元劃分成數個固定大小或可變大小之資料元素的處理器中,該等資料元素中之每一者表示一單獨值。舉例而言,在一個實施例中,64位元暫存器中之位元可被組織為含有四個單獨16位元資料元素之源運算元,該等資料元素中之每一者表示一單獨16位元值。此類型之資料可被稱作「封裝」資料類型或「向量」資料類型,且此資料類型之運算元可被稱作封裝資料運算元或向量運算元。在一個實施例中,封裝資料項目或向量可為儲存於單一暫存器內之一連串封裝資料元素,且封裝資料運算元或向量運算元可為SIMD指令(或「封裝資料指令」或「向量指令」)之源或目的地運算元。在一個實施例中,SIMD指令指定待對兩個源向量運算元執行以產生具有相同或不同大小、具有相同或不同數目個資料元素且呈相同或不同資料元素次序之目的地向量運算元(亦被稱作結果向量運算元)的單一向量運算。
諸如由以下處理器使用之技術的SIMD技術已實現應用效能之顯著改良:Intel® Core™處理器,其具有包括x86、MMX™、串流SIMD延伸(SSE)、SSE2、SSE3、SSE4.1及SSE4.2指令之指令集;ARM處理器,諸如ARM Cortex®處理器家族,其具有包括向量浮點(VFP)及/或NEON指令之指令集;及MIPS處理器,諸如由中國科學院計算技術研究所開發之Loongson處理器家族(Core™及MMX™為Santa Clara, Calif.之Intel Corporation的註冊商標或商標)。
在一個實施例中,目的地及源暫存器/資料可為表示對應資料或操作之源及目的地之一般術語。在一些實施例中,其可由暫存器、記憶體或具有與所描繪之名稱或功能不同之名稱或功能的其他儲存區域實施。舉例而言,在一個實施例中,「DEST1」可為臨時儲存暫存器或其他儲存區域,而「SRC1」及「SRC2」可為第一及第二源儲存暫存器或其他儲存區域等等。在其他實施例中,SRC及DEST儲存區域中之兩者或多於兩者可對應於同一儲存區域(例如,SIMD暫存器)內之不同資料儲存元件。在一個實施例中,源暫存器中之一者亦可藉由(例如)將對第一及第二源資料執行之運算之結果寫回至充當目的地暫存器之兩個源暫存器中之一者來充當目的地暫存器。
圖1A為根據本發明之實施例的例示性電腦系統之方塊圖,該電腦系統被形成有可包括用以執行指令之執行單元的處理器。根據本發明,諸如在本文中所描述之實施例中,系統100可包括諸如用以使用執行單元之處理器102的組件,該等執行單元包括用以執行用於程序資料之演算法的邏輯。系統100可表示基於可購自Santa Clara, California之Intel Corporation的PENTIUMÒ
III、PENTIUMÒ
4、XeonTM
、ItaniumÒ
、XScaleTM
及/或StrongARMTM
微處理器之處理系統,但亦可使用其他系統(包括具有其他微處理器、工程設計工作站、機上盒及類似者之PC)。在一個實施例中,樣本系統100可執行可購自Redmond, Washington之Microsoft Corporation的WINDOWSTM
作業系統之版本,但亦可使用其他作業系統(例如,UNIX及Linux)、嵌入式軟體及/或圖形使用者介面。因此,本發明之實施例並不限於硬體電路系統與軟體之任何特定組合。
實施例並不限於電腦系統。本發明之實施例可用於諸如手持型裝置及嵌入式應用之其他裝置中。手持型裝置之一些實例包括蜂巢式電話、網際網路協定裝置、數位攝影機、個人數位助理(PDA)及手持型PC。嵌入式應用可包括微控制器、數位信號處理器(DSP)、系統單晶片、網路電腦(NetPC)、機上盒、網路集線器、廣域網路(WAN)交換器,或可執行根據至少一個實施例之一或多個指令之任何其他系統。
電腦系統100可包括處理器102,處理器102可包括一或多個執行單元108以執行演算法以執行根據本發明之一個實施例的至少一個指令。可在單一處理器桌上型電腦或伺服器系統之上下文中描述一個實施例,但其他實施例可包括於多處理器系統中。系統100可為「集線器」系統架構之實例。系統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的邏輯。藉由在一般用途處理器102之指令集中包括封裝指令集109,連同用以執行指令之關聯電路系統,可使用一般用途處理器102中之封裝資料來執行由許多多媒體應用程式使用之操作。因此,可藉由使用處理器之資料匯流排的全寬以用於對封裝資料執行操作來更高效地加速及執行許多多媒體應用程式。此可消除對橫越處理器之資料匯流排傳送較小資料單元以每次對一個資料元素執行一或多個操作的需要。
亦可在微控制器、嵌入式處理器、圖形裝置、DSP及其他類型之邏輯電路中使用執行單元108之實施例。系統100可包括記憶體120。記憶體120可被實施為動態隨機存取記憶體(DRAM)裝置、靜態隨機存取記憶體(SRAM)裝置、快閃記憶體裝置或其他記憶體裝置。記憶體120可儲存由可由處理器102執行之資料信號表示的指令119及/或資料121。
系統邏輯晶片116可耦接至處理器匯流排110及記憶體120。系統邏輯晶片116可包括記憶體控制器集線器(MCH)。處理器102可經由處理器匯流排110而與MCH 116通訊。MCH 116可提供至記憶體120之高頻寬記憶體路徑118以用於指令119及資料121之儲存及用於圖形命令、資料及紋理之儲存。MCH 116可在處理器102、記憶體120與系統100中之其他組件之間引導資料信號,且在處理器匯流排110、記憶體120與系統I/O 122之間橋接資料信號。在一些實施例中,系統邏輯晶片116可提供用於耦接至圖形控制器112之圖形埠。MCH 116可透過記憶體介面118而耦接至記憶體120。圖形卡112可透過加速圖形埠(AGP)互連件114而耦接至MCH 116。
系統100可使用專屬集線器介面匯流排122以將MCH 116耦接至I/O控制器集線器(ICH) 130。在一個實施例中,ICH 130可經由本機I/O總線而提供至一些I/O裝置之直接連接。本機I/O匯流排可包括用於將周邊設備連接至記憶體120、晶片組及處理器102之高速I/O匯流排。實例可包括音訊控制器129、韌體集線器(快閃BIOS) 128、無線收發器126、資料儲存體124、含有使用者輸入介面125 (其可包括鍵盤介面)之舊版I/O控制器123、諸如通用串列匯流排(USB)之串列擴展埠127,及網路控制器134。資料儲存裝置124可包含硬碟機、軟碟機、CD-ROM裝置、快閃記憶體裝置,或其他大容量儲存裝置。
對於系統之另一實施例,根據一個實施例之指令可與系統單晶片一起使用。系統單晶片之一個實施例包含處理器及記憶體。用於一個此類系統之記憶體可包括快閃記憶體。快閃記憶體可與處理器及其他系統組件位於同一晶粒上。另外,諸如記憶體控制器或圖形控制器之其他邏輯區塊亦可位於系統單晶片上。
圖1B說明實施本發明之實施例之原理的資料處理系統140。熟習此項技術者應容易瞭解,在不脫離本發明之實施例之範疇的情況下,本文中所描述之實施例可與替代性處理系統一起操作。
電腦系統140包含用於執行根據一個實施例之至少一個指令之處理核心159。在一個實施例中,處理核心159表示任一類型之架構的處理單元,該架構包括但不限於CISC、RISC或VLIW類型架構。處理核心159亦可適合於以一或多種程序技術之製造,且藉由足夠詳細地在機器可讀媒體上予以表示而可適合於促進該製造。
處理核心159包含執行單元142、一組暫存器檔案145,及解碼器144。處理核心159亦包括對於理解本發明之實施例可為不必要的額外電路系統(未圖示)。執行單元142可執行由處理核心159接收之指令。除了執行典型處理器指令以外,執行單元142亦可執行封裝指令集143中之指令以用於對封裝資料格式執行操作。封裝指令集143可包括用於執行本發明之實施例之指令以及其他封裝指令。執行單元142可由內部匯流排耦接至暫存器檔案145。暫存器檔案145可表示處理核心159上的用於儲存資訊(包括資料)之儲存區域。如先前所提到,應理解,儲存區域可儲存可能並非關鍵之封裝資料。執行單元142可耦接至解碼器144。解碼器144可將由處理核心159接收之指令解碼成控制信號及/或微碼入口點。回應於此等控制信號及/或微碼入口點,執行單元142執行適當操作。在一個實施例中,解碼器可解譯指令之作業碼,其將指示應對指令內所指示之對應資料執行何操作。
處理核心159可與匯流排141耦接以用於與各種其他系統裝置通訊,該等其他系統裝置可包括但不限於(例如)同步動態隨機存取記憶體(SDRAM)控制146、靜態隨機存取記憶體(SRAM)控制147、叢發快閃記憶體介面148、個人電腦記憶體卡國際協會(PCMCIA)/緊密快閃(CF)卡控制149、液晶顯示器(LCD)控制150、直接記憶體存取(DMA)控制器151,及替代性匯流排主控器介面152。在一個實施例中,資料處理系統140亦可包含I/O橋接器154以用於經由I/O匯流排153而與各種I/O裝置通訊。此等I/O裝置可包括但不限於(例如)通用非同步接收器/傳輸器(UART) 155、通用串列匯流排(USB) 156、藍芽無線UART 157,及I/O擴展介面158。
資料處理系統140之一個實施例提供行動、網路及/或無線通訊,及可執行包括文字字串比較操作之SIMD操作之處理核心159。處理核心159可運用以下各者予以規劃:各種音訊、視訊、成像及通訊演算法,包括離散變換,諸如沃爾什-哈達瑪(Walsh-Hadamard)變換、快速傅立葉變換(FFT)、離散餘弦變換(DCT)及其各別反變換;壓縮/解壓縮技術,諸如色彩空間變換、視訊編碼運動估計或視訊解碼運動補償;及調變/解調變(數據機)功能,諸如脈碼調變(PCM)。
圖1C說明執行SIMD文字字串比較操作之資料處理系統之其他實施例。在一個實施例中,資料處理系統160可包括主處理器166、SIMD共處理器161、快取記憶體167,及輸入/輸出系統168。輸入/輸出系統168可視情況耦接至無線介面169。SIMD共處理器161可執行包括根據一個實施例之指令之操作。在一個實施例中,處理核心170可適合於以一或多種程序技術之製造,且藉由足夠詳細地在機器可讀媒體上予以表示而可適合於促進包括處理核心170之資料處理系統160之全部或部分的製造。
在一個實施例中,SIMD共處理器161包含執行單元162,及一組暫存器檔案164。主處理器166之一個實施例包含解碼器165以辨識包括用於由執行單元162執行之根據一個實施例之指令的指令集163之指令。在其他實施例中,SIMD共處理器161亦包含解碼器165 (被展示為165B)之至少部分以解碼指令集163之指令。處理核心170亦可包括對於理解本發明之實施例可為不必要的額外電路系統(未圖示)。
在操作中,主處理器166執行控制一般類型之資料處理操作(包括與快取記憶體167及輸入/輸出系統168之互動)的資料處理指令串流。嵌入於資料處理指令串流內的可為SIMD共處理器指令。主處理器166之解碼器165將此等SIMD共處理器指令辨識為屬於應由附接式SIMD共處理器161執行之類型。因此,主處理器166在共處理器匯流排166上發行此等SIMD共處理器指令(或表示SIMD共處理器指令之控制信號)。自共處理器匯流排171,此等指令可由任何附接式SIMD共處理器接收。在此狀況下,SIMD共處理器161可接受及執行意欲用於SIMD共處理器161的任何經接收SIMD共處理器指令。
可經由無線介面169接收資料以供SIMD共處理器指令處理。對於一個實例,可以數位信號之形式接收語音通訊,該數位信號可由SIMD共處理器指令處理以再生表示語音通訊之數位音訊樣本。對於另一實例,可以數位位元串流之形式接收經壓縮音訊及/或視訊,該數位位元串流可由SIMD共處理器指令處理以再生數位音訊樣本及/或運動視訊圖框。在處理核心170之一個實施例中,主處理器166及SIMD共處理器161可整合至單一處理核心170中,單一處理核心170包含執行單元162、一組暫存器檔案164,及用以辨識包括根據一個實施例之指令的指令集163之指令的解碼器165。
圖2為根據本發明之實施例的用於處理器200之微架構之方塊圖,處理器200可包括用以執行指令之邏輯電路。在一些實施例中,可實施根據一個實施例之指令以對具有位元組、字、雙字、四倍字等等之大小以及諸如單精確度及雙精確度整數及浮點資料類型之資料類型的資料元素進行操作。在一個實施例中,有序前端201可實施處理器200之部分,其可提取待執行之指令且準備使該等指令稍後在處理器管線中使用。前端201可包括若干單元。在一個實施例中,指令預提取器226自記憶體提取指令且將該等指令饋送至又解碼或解譯該等指令之指令解碼器228。舉例而言,在一個實施例中,解碼器將經接收指令解碼成機器可執行之一或多個操作,其被稱為「微指令」或「微操作(micro-operation)」(亦被稱為微op或uop)。在其他實施例中,解碼器將指令剖析成可由微架構使用以執行根據一個實施例之操作的作業碼以及對應資料及控制欄位。在一個實施例中,追蹤快取記憶體230可將經解碼uop組譯成uop佇列234中之程式有序序列或追蹤以供執行。當追蹤快取記憶體230遇到複雜指令時,微碼ROM 232提供完成操作所需要之uop。
一些指令可被轉換成單一微op,而其他指令需要若干微op來完成全部操作。在一個實施例中,若完成一指令需要多於四個微op,則解碼器228可存取微碼ROM 232以執行該指令。在一個實施例中,可將指令解碼成少量微op以供在指令解碼器228處處理。在另一實施例中,若需要數個微op來實現操作,則指令可儲存於微碼ROM 232內。追蹤快取記憶體230指代入口點可規劃邏輯陣列(PLA)以判定用於自微碼ROM 232讀取微碼序列以完成根據一個實施例之一或多個指令的正確微指令指標。在微碼ROM 232完成針對一指令之定序微op之後,機器之前端201可繼續自追蹤快取記憶體230提取微op。
無序執行引擎203可準備指令以供執行。無序執行邏輯具有數個緩衝器以隨著指令通過管線且經排程以供執行而使指令之流動平穩且將指令之流動重新排序以使效能最佳化。分配器/暫存器重新命名器215中之分配器邏輯分配每一uop所需要以便執行之機器緩衝器及資源。分配器/暫存器重新命名器215中之暫存器重新命名邏輯將邏輯暫存器重新命名至暫存器檔案中之輸入項目上。分配器215亦在指令排程器之前方分配用於兩個uop佇列中之一者中的每一uop之入口,一個用於記憶體操作(記憶體uop佇列207)且一個用於非記憶體操作(整數/浮點uop佇列205):記憶體排程器209、快速排程器202、慢速/一般浮點排程器204,及簡單浮點排程器206。uop排程器202、204、206基於其相依輸入暫存器運算元源之就緒及uop完成其操作所需要之執行資源之可用性來判定uop何時就緒以執行。一個實施例之快速排程器202可按每半個主時脈循環而排程,而其他排程器可在每主處理器時脈循環僅排程一次。該等排程器對分派埠仲裁以排程uop以供執行。
暫存器檔案208、210可配置於排程器202、204、206與執行區塊211中之執行單元212、214、216、218、220、222、224之間。暫存器檔案208、210中之每一者分別執行整數及浮點運算。每一暫存器檔案208、210可包括旁路網路,其可繞過尚未寫入至暫存器檔案中的剛剛完成之結果或將該等結果轉遞至新相依uop。整數暫存器檔案208及浮點暫存器檔案210可與其他者傳達資料。在一個實施例中,可將整數暫存器檔案208分裂成兩個單獨暫存器檔案,一個暫存器檔案用於資料之低階三十二位元且第二暫存器檔案用於資料之高階三十二位元。浮點暫存器檔案210可包括128位元寬之輸入項目,此係因為浮點指令通常具有寬度為64位元至128位元之運算元。
執行區塊211可含有執行單元212、214、216、218、220、222、224。執行單元212、214、216、218、220、222、224可執行指令。執行區塊211可包括儲存微指令需要執行之整數及浮點資料運算元值的暫存器檔案208、210。在一個實施例中,處理器200可包含數個執行單元:位址產生單元(AGU) 212、AGU 214、快速ALU 216、快速ALU 218、慢速ALU 220、浮點ALU 222、浮點移動單元224。在另一實施例中,浮點執行區塊222、224可執行浮點、MMX、SIMD及SSE或其他操作。在又一實施例中,浮點ALU 222可包括64位元乘64位元之浮點除法器以執行除法、平方根及餘數微op。在各種實施例中,可運用浮點硬體來處置涉及浮點值之指令。在一個實施例中,可將ALU運算傳遞至高速ALU執行單元216、218。高速ALU 216、218可運用一半之時脈循環之有效潛時來執行快速運算。在一個實施例中,最複雜的整數運算轉至慢速ALU 220,此係因為慢速ALU 220可包括用於長潛時類型之運算的整數執行硬體,諸如乘法器、移位、旗標邏輯及分支處理。記憶體載入/儲存操作可由AGU 212、214執行。在一個實施例中,整數ALU 216、218、220可對64位元資料運算元執行整數運算。在其他實施例中,可實施ALU 216、218、220以支援多種資料位元大小,包括十六、三十二、128、256等等。相似地,可實施浮點單元222、224以支援具有各種寬度之位元的一系列運算元。在一個實施例中,浮點單元222、224可結合SIMD及多媒體指令而對128位元寬之封裝資料運算元進行運算。
在一個實施例中,uop排程器202、204、206在親代載入已完成執行之前分派相依操作。因為可在處理器200中推測性地排程及執行uop時,所以處理器200亦可包括用以處置記憶體遺漏的邏輯。若資料載入在資料快取記憶體中遺漏,則管線中可存在使排程器具有臨時不正確資料的運作中之相依操作。重新執行機構追蹤及再執行使用不正確資料之指令。可僅需要重新執行相依操作且可允許獨立操作完成。處理器之一個實施例的排程器及重新執行機構亦可經設計以捕捉指令序列以用於文字字串比較操作。
術語「暫存器」可指代可用作用以識別運算元之指令之部分的機載處理器儲存位置。換言之,暫存器可為可自處理器外部(根據規劃師之觀點)使用的暫存器。然而,在一些實施例中,暫存器可不限於特定類型之電路。實情為,暫存器可儲存資料,提供資料,且執行本文中所描述之功能。本文中所描述之暫存器可由使用任何數目個不同技術之處理器內之電路系統(諸如專用實體暫存器、使用暫存器重新命名之動態分配實體暫存器、專用與動態分配實體暫存器之組合等等)實施。在一個實施例中,整數暫存器儲存32位元整數資料。一個實施例之暫存器檔案亦含有用於封裝資料之八個多媒體SIMD暫存器。對於以下論述,可將暫存器理解為經設計以保持封裝資料之資料暫存器,諸如運用來自Santa Clara, California之Intel Corporation之MMX技術而啟用的微處理器中之64位元寬MMXTM
暫存器(在一些情況下亦被稱作「mm」暫存器)。以整數及浮點形式兩者可用之此等MMX暫存器可運用伴隨SIMD及SSE指令之封裝資料元素而操作。相似地,與SSE2、SSE3、SSE4或更高(一般被稱作「SSEx」)技術相關之128位元寬XMM暫存器可保持此等封裝資料運算元。在一個實施例中,在儲存封裝資料及整數資料時,暫存器並不需要區分兩個資料類型。在一個實施例中,整數及浮點資料可含於同一暫存器檔案或不同暫存器檔案中。此外,在一個實施例中,浮點及整數資料可儲存於不同暫存器或相同暫存器中。
在以下諸圖之實例中,描述數個資料運算元。圖3A說明根據本發明之實施例的多媒體暫存器中之各種封裝資料類型表示。圖3A說明用於128位元寬運算元之封裝位元組310、封裝字320及封裝雙字(dword) 330之資料類型。此實例之封裝位元組格式310可為128個位元長且含有十六個封裝位元組資料元素。舉例而言,可將位元組界定為八個資料位元。用於每一位元組資料元素之資訊可儲存於用於位元組0之位元7至位元0、用於位元組1之位元15至位元8、用於位元組2之位元23至位元16及最後用於位元組15之位元120至位元127中。因此,所有可用位元可用於暫存器中。此儲存配置增加處理器之儲存效率。同樣,在存取十六個資料元素的情況下,現在可並行地對十六個資料元素執行一個操作。
通常,資料元素可包括與具有相同長度之其他資料元素一起儲存於單一暫存器或記憶體位置中的個別資料片段。在與SSEx技術相關之封裝資料序列中,儲存於XMM暫存器中之資料元素的數目可為128個位元除以個別資料元素之位元長度。相似地,在與MMX及SSE技術相關之封裝資料序列中,儲存於MMX暫存器中之資料元素的數目可為64位元除以個別資料元素之位元長度。儘管圖3A所說明之資料類型可為128個位元長,但本發明之實施例亦可運用64位元寬或其他大小之運算元而操作。此實例之封裝字格式320可為128個位元長且含有八個封裝字資料元素。每一封裝字含有十六個資訊位元。圖3A之封裝雙字格式330可為128位元個長且含有四個封裝雙字資料元素。每一封裝雙字資料元素含有三十二個資訊位元。封裝四倍字可為128個位元長且含有兩個封裝四倍字資料元素。
圖3B說明根據本發明之實施例的可能暫存器內資料儲存格式。每一封裝資料可包括多於一個獨立資料元素。說明三個封裝資料格式:封裝半341、封裝單342及封裝雙343。封裝半341、封裝單342及封裝雙343之一個實施例含有定點資料元素。對於另一實施例,封裝半341、封裝單342及封裝雙343中之一或多者可含有浮點資料元素。封裝半341之一個實施例可為128個位元長,含有八個16位元資料元素。封裝單342之一個實施例可為128個位元長且含有四個32位元資料元素。封裝雙343之一個實施例可為128個位元長且含有兩個64位元資料元素。應瞭解,此等封裝資料格式可進一步延伸至其他暫存器長度,例如,延伸至96位元、160位元、192位元、224位元、256位元或更多。
圖3C說明根據本發明之實施例的多媒體暫存器中之各種有正負號及無正負號封裝資料類型表示。無正負號封裝位元組表示344說明無正負號封裝位元組在SIMD暫存器中之儲存。用於每一位元組資料元素之資訊可儲存於用於位元組0之位元7至位元0、用於位元組1之位元15至位元8、用於位元組2之位元23至位元16及最後用於位元組15之位元120至位元127中。因此,所有可用位元可用於暫存器中。此儲存配置可增加處理器之儲存效率。同樣,在存取十六個資料元素的情況下,現在可以並行方式對十六個資料元素執行一個操作。有正負號封裝位元組表示345說明有正負號封裝位元組之儲存。應注意,每一位元組資料元素之第八個位元可為正負號指示符。無正負號封裝字表示346說明字七至字零可如何儲存於SIMD暫存器中。有正負號封裝字表示347可相似於無正負號封裝字暫存器內表示346。應注意,每一字資料元素之第十六個位元可為正負號指示符。無正負號封裝雙字表示348展示如何儲存雙字資料元素。有正負號封裝雙字表示349可相似於無正負號封裝雙字暫存器內表示348。應注意,必要的正負號位元可為每一雙字資料元素之第三十二位元。
圖3D說明操作編碼(作業碼)之實施例。此外,格式360可包括暫存器/記憶體運算元定址模式,其與「IA-32 Intel Architecture Software Developer's Manual Volume 2: Instruction Set Reference」中所描述的一類型之作業碼格式對應,其可在全球資訊網(www)上在intel.com/design/litcentr自Intel Corporation (Santa Clara, CA)獲得。在一個實施例中,指令可由欄位361及362中之一或多者編碼。可每指令識別高達兩個運算元位置,包括高達兩個源運算元識別符364及365。在一個實施例中,目的地運算元識別符366可與源運算元識別符364相同,而在其他實施例中,其可不同。在另一實施例中,目的地運算元識別符366可與源運算元識別符365相同,而在其他實施例中,其可不同。在一個實施例中,由源運算元識別符364及365識別的源運算元中之一者可被文字字串比較操作之結果覆寫,而在其他實施例中,識別符364對應於源暫存器元素且識別符365對應於目的地暫存器元素。在一個實施例中,運算元識別符364及365可識別32位元或64位元之源運算元及目的地運算元。
圖3E說明根據本發明之實施例的具有四十或更多位元之另一可能操作編碼(作業碼)格式370。作業碼格式370與作業碼格式360對應且包含可選首碼位元組378。根據一個實施例之指令可由欄位378、371及372中之一或多者編碼。每指令高達兩個運算元位置可由源運算元識別符374及375且由首碼位元組378識別。在一個實施例中,首碼位元組378可用以識別32位元或64位元源運算元及目的地運算元。在一個實施例中,目的地運算元識別符376可與源運算元識別符374相同,而在其他實施例中,其可不同。對於另一實施例,目的地運算元識別符376可與源運算元識別符375相同,而在其他實施例中,其可不同。在一個實施例中,指令對由運算元識別符374及375識別之運算元中之一或多者操作,且由運算元識別符374及375識別之一或多個運算元可被指令結果覆寫,而在其他實施例中,由識別符374及375識別之運算元可被寫入至另一暫存器中之另一資料元素。作業碼格式360及370允許由MOD欄位363及373及由可選比例-索引-基址及位移位元組部分地指定之暫存器至暫存器定址、記憶體至暫存器定址、按記憶體之暫存器定址、逐暫存器定址、即刻暫存器定址、暫存器至記憶體定址。
圖3F說明根據本發明之實施例的又一可能操作編碼(作業碼)格式。64位元單指令多資料(SIMD)算術運算可透過共處理器資料處理(CDP)指令而執行。操作編碼(作業碼)格式380描繪具有CDP作業碼欄位382及389之一個此類CDP指令。對於另一實施例,CDP指令之類型,操作可由欄位383、384、387及388中之一或多者編碼。可每指令識別高達三個運算元位置,包括高達兩個源運算元識別符385及390以及一個目的地運算元識別符386。共處理器之一個實施例可對八、十六、三十二及64位元值操作。在一個實施例中,可對整數資料元素執行指令。在一些實施例中,可使用條件欄位381有條件地執行指令。對於一些實施例,源資料大小可由欄位383編碼。在一些實施例中,可對SIMD欄位進行零(Z)、負數(N)、進位(C)及溢位(V)偵測。對於一些指令,飽和之類型可由欄位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,指令提取單元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,記憶體單元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 (Sunnyvale, CA)之MIPS指令集;ARM Holdings (Sunnyvale, CA)之ARM指令集(具有可選額外延伸,諸如NEON))。
應理解,核心可以多種方式支援多執行緒處理(執行操作或執行緒之兩個或更多平行集合)。多執行緒處理支援可藉由(例如)包括時間分片多執行緒處理、同時多執行緒處理(其中單一實體核心為實體核心同時進行多執行緒處理的執行緒中之每一者提供邏輯核心)或其組合而執行。此組合可包括(例如)時間分片提取及解碼,及此後的同時多執行緒處理,諸如在Intel®超執行緒處理技術中。
雖然可在無序執行之上下文中描述暫存器重新命名,但應理解,暫存器重新命名可用於有序架構中。雖然處理器之所說明實施例亦可包括單獨指令快取記憶體單元434及資料快取記憶體單元474以及共用L2快取記憶體單元476,但其他實施例可具有用於指令及資料兩者之單一內部快取記憶體,諸如層級1 (L1)內部快取記憶體或多個層級之內部快取記憶體。在一些實施例中,系統可包括內部快取記憶體與可在核心及/或處理器外部的外部快取記憶體之組合。在其他實施例中,所有快取記憶體可在核心及/或處理器外部。
圖5A為根據本發明之實施例的處理器500之方塊圖。在一個實施例中,處理器500可包括多核心處理器。處理器500可包括以通訊方式耦接至一或多個核心502之系統代理510。此外,核心502及系統代理510可以通訊方式耦接至一或多個快取記憶體506。核心502、系統代理510及快取記憶體506可經由一或多個記憶體控制單元552而以通訊方式耦接。此外,核心502、系統代理510及快取記憶體506可經由記憶體控制單元552而以通訊方式耦接至圖形模組560。
處理器500可包括用於互連核心502、系統代理510及快取記憶體506與圖形模組560之任何合適機構。在一個實施例中,處理器500可包括基於環之互連單元508,以將核心502、系統代理510及快取記憶體506與圖形模組560互連。在其他實施例中,處理器500可包括用於互連此等單元之任何數目個熟知技術。基於環之互連單元508可利用記憶體控制單元552來促進互連。
處理器500可包括一記憶體階層,其包含核心內之一或多個快取記憶體層級、一或多個共用快取記憶體單元(諸如快取記憶體506),或耦接至該組整合式記憶體控制器單元552之外部記憶體(未圖示)。快取記憶體506可包括任何合適快取記憶體。在一個實施例中,快取記憶體506可包括一或多個中間層級快取記憶體,諸如層級2 (L2)、層級3 (L3)、層級4 (L4)或其他層級之快取記憶體、最後層級快取記憶體(LLC),及/或其組合。
在各種實施例中,核心502中之一或多者可執行多執行緒處理。系統代理510可包括用於協調及操作核心502之組件。系統代理單元510可包括(例如)電力控制單元(PCU)。PCU可為或可包括調節核心502之電力狀態所需要的邏輯及組件。系統代理510可包括用於驅動一或多個外部連接顯示器或圖形模組560之顯示引擎512。系統代理510可包括介面514以用於針對圖形之通訊匯流排。在一個實施例中,介面514可由快速PCI (PCIe)實施。在一另外實施例中,介面514可由快速圖形PCI (PEG)實施。系統代理510可包括直接媒體介面(DMI) 516。DMI 516可提供電腦系統之主機板或其他部分上之不同橋接器之間的連結。系統代理510可包括用於提供至計算系統之其他元件之PCIe連結之PCIe橋接器518。PCIe橋接器518可使用記憶體控制器520及同調邏輯522予以實施。
核心502可以任何合適方式予以實施。在架構及/或指令集方面,核心502可為均質的或異質的。在一個實施例中,核心502中之一些可為有序的,而其他可為無序的。在另一實施例中,核心502中之兩個或更多核心可執行同一指令集,而其他核心可僅執行彼指令集中之子集或不同指令集。
處理器500可包括一般用途處理器,諸如可購自Santa Clara, Calif.之Intel Corporation的Core™ i3、i5、i7、2 Duo及Quad、Xeon™、Itanium™、XScale™或StrongARM™處理器。處理器500可提供自另一公司,諸如ARM Holdings有限公司、MIPS等等。處理器500可為特殊用途處理器,諸如網路或通訊處理器、壓縮引擎、圖形處理器、共處理器、嵌入式處理器或類似者。處理器500可實施於一或多個晶片上。處理器500可為一或多個基板之部分及/或可使用數種程序技術中之任一者(諸如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可包括分配模組582。在一個實施例中,分配模組582可分配處理器500之資源或其他資源(諸如暫存器或緩衝器)以執行給定指令。分配模組582可在排程器(諸如記憶體排程器、快速排程器或浮點排程器)中進行分配。此等排程器在圖5B中可由資源排程器584表示。分配模組582可由結合圖2所描述之分配邏輯完全地或部分地實施。資源排程器584可基於給定資源之源之就緒及執行指令所需要之執行資源之可用性來判定指令何時就緒以執行。資源排程器584可由(例如)如上文所論述之排程器202、204、206實施。資源排程器584可在一或多個資源上排程指令之執行。在一個實施例中,此等資源可在核心502內部,且可被說明為(例如)資源586。在另一實施例中,此等資源可在核心502外部且可為可由(例如)快取記憶體階層503存取。舉例而言,資源可包括記憶體、快取記憶體、暫存器檔案或暫存器。在核心502內部之資源可由圖5B中之資源586表示。必要時,可透過(例如)快取記憶體階層503來協調寫入至資源586或自其讀取之值與處理器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)。此項技術中所知的用於以下各者之其他系統設計及實施方案亦可為合適的:膝上型電腦、桌上型電腦、手持型PC、個人數位助理、工程設計工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、蜂巢式電話、攜帶型媒體播放器、手持型裝置,及各種其他電子裝置。一般而言,併有如本文中所揭示之處理器及/或其他執行邏輯之很多種系統或電子裝置可為大體上合適的。
圖6說明根據本發明之實施例的系統600之方塊圖。系統600可包括可耦接至圖形記憶體控制器集線器(GMCH) 620之一或多個處理器610、615。在圖6中運用虛線來表示額外處理器615之可選本質。
每一處理器610、615可為處理器500之某一版本。然而,應注意,整合式圖形邏輯及整合式記憶體控制單元可不存在於處理器610、615中。圖6說明GMCH 620可耦接至可為(例如)動態隨機存取記憶體(DRAM)之記憶體640。對於至少一個實施例,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可進一步耦接至可用以將各種周邊裝置耦接至系統600之輸入/輸出(I/O)控制器集線器(ICH) 650。外部圖形裝置660可包括連同另一周邊裝置670耦接至ICH 650之離散圖形裝置。
在其他實施例中,額外或不同處理器亦可存在於系統600中。舉例而言,額外處理器610、615可包括可與處理器610相同之額外處理器、可與處理器610異質或不對稱之額外處理器、加速器(諸如圖形加速器或數位信號處理(DSP)單元)、場可規劃閘陣列,或任何其他處理器。在包括架構、微架構、熱、功率消耗特性及類似者之一系列優點度量方面,實體資源610、615之間可存在多種差異。此等差異可有效地將其自身顯現為處理器610、615之間的不對稱性及異質性。對於至少一個實施例,各種處理器610、615可駐留於同一晶粒封裝體中。
圖7說明根據本發明之實施例的第二系統700之方塊圖。如圖7所展示,多處理器系統700可包括點對點互連系統,且可包括經由點對點互連件750而耦接之第一處理器770及第二處理器780。處理器770及780中之每一者可為處理器500之某一版本,如處理器610、615中之一或多者。
雖然圖7可說明兩個處理器770、780,但應理解,本發明之範疇並不受到如此限制。在其他實施例中,一或多個額外處理器可存在於給定處理器中。
處理器770及780被展示為分別包括整合式記憶體控制器單元772及782。處理器770亦可包括作為其匯流排控制器單元之部分的點對點(P-P)介面776及778;相似地,第二處理器780可包括P-P介面786及788。處理器770、780可使用P-P介面電路778、788經由點對點(P-P)介面750而交換資訊。如圖7所展示,IMC 772及782可將該等處理器耦接至各別記憶體(即,記憶體732及記憶體734),該等記憶體在一個實施例中可為在本機附接至各別處理器的主記憶體之部分。
處理器770、780可各自使用點對點介面電路776、794、786、798經由個別P-P介面752、754而與晶片組790交換資訊。在一個實施例中,晶片組790亦可經由高效能圖形介面739而與高效能圖形電路738交換資訊。
共用快取記憶體(未圖示)可包括於兩個處理器中之任一處理器中或在兩個處理器外部,但經由P-P互連件而與該等處理器連接,使得可將任一處理器或兩個處理器之本機快取記憶體資訊儲存於共用快取記憶體中(若處理器被置於低電力模式)。
晶片組790可經由介面796而耦接至第一匯流排716。在一個實施例中,第一匯流排716可為周邊組件互連(PCI)匯流排,或諸如PCI高速匯流排或另一第三代I/O互連件匯流排之匯流排,但本發明之範疇並不受到如此限制。
如圖7所展示,各種I/O裝置714可連同匯流排橋接器718耦接至第一匯流排716,匯流排橋接器718將第一匯流排716耦接至第二匯流排720。在一個實施例中,第二匯流排720可為低接腳計數(LPC)匯流排。在一個實施例中,各種裝置可耦接至第二匯流排720,包括(例如)鍵盤及/或滑鼠722、通訊裝置727及儲存單元728 (諸如可包括指令/程式碼及資料730之磁碟機或其他大容量儲存裝置)。另外,音訊I/O 724可耦接至第二匯流排720。應注意,其他架構可為可能的。舉例而言,代替圖7之點對點架構,系統可實施多點匯流排或其他此類架構。
圖8說明根據本發明之實施例的第三系統800之方塊圖。圖7及圖8中之類似元件具有類似參考數字,且已自圖8省略圖7之某些態樣,以便避免混淆圖8之其他態樣。
圖8說明處理器770、780可分別包括整合式記憶體及I/O控制邏輯(「CL」) 872及882。對於至少一個實施例,CL 872、882可包括整合式記憶體控制器單元,諸如上文關於圖5及圖7所描述之整合式記憶體控制器單元。此外,CL 872、882亦可包括I/O控制邏輯。圖8說明不僅記憶體732、734可耦接至CL 872、882,而且I/O裝置814亦可耦接至控制邏輯872、882。舊版I/O裝置815可耦接至晶片組790。
圖9說明根據本發明之實施例的SoC 900之方塊圖。圖5中之相似元件具有類似參考數字。又,虛線方框可表示較進階的SoC上之可選特徵。互連單元902可耦接至:應用程式處理器910,其可包括一組一或多個核心502A至502N及共用快取記憶體單元506;系統代理單元510;匯流排控制器單元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,及I2
S/I2
C控制器1070。圖10之處理器中可包括其他邏輯及電路,包括較多CPU或GPU以及其他周邊介面控制器。
至少一個實施例之一或多個態樣可由儲存於機器可讀媒體上之代表性資料實施,該資料表示處理器內之各種邏輯,其在由機器讀取時致使機器製造用以執行本文中所描述之技術的邏輯。被稱為「IP核心」之此等表示可儲存於有形機器可讀媒體(「磁帶」)上,且供應至各種消費者或製造設施以載入至實際上製造該邏輯或處理器之製造機器中。舉例而言,IP核心(諸如由ARM Holdings有限公司開發之Cortex™處理器家族及由中國科學院計算技術研究所(ICT)開發之Loongson IP核心)可有使用權或出售給各種消費者或使用人(諸如Texas Instruments、Qualcomm、Apple或Samsung)且實施於由此等消費者或使用人生產之處理器中。
圖11為說明根據本發明之實施例的IP核心之開發之方塊圖。儲存體1100可包括模擬軟體1120及/或硬體或軟體模型1110。在一個實施例中,可經由記憶體1140 (例如,硬碟)、有線連接(例如,網際網路) 1150或無線連接1160將表示IP核心設計之資料提供至儲存體1100。可接著將由模擬工具及模型產生之IP核心資訊傳輸至製造設施1165,其中可由第3方製造IP核心資訊以執行根據至少一個實施例之至少一個指令。
在一些實施例中,一或多個指令可對應於第一類型或架構(例如,x86)且在不同類型或架構(例如,ARM)之處理器上予以轉譯或模仿。根據一個實施例之指令因此可在包括ARM、x86、MIPS、GPU或其他處理器類型或架構之任一處理器或處理器類型上執行。
圖12說明根據本發明之實施例的第一類型之指令可如何由不同類型之處理器模仿。在圖12中,程式1205含有可執行與根據一個實施例之指令相同或實質上相同之功能的一些指令。然而,程式1205之指令可屬於與處理器1215不同或不相容之類型及/或格式,此意謂程式1205中之類型的指令可不能夠由處理器1215原生地執行。然而,藉助於模仿邏輯1210,程式1205之指令可轉譯成原生地可由處理器1215執行之指令。在一個實施例中,可以硬體體現模仿邏輯。在另一實施例中,可以有形機器可讀媒體體現模仿邏輯,有形機器可讀媒體含有用以將程式1205中之類型之指令轉譯成原生地可由處理器1215執行之類型的軟體。在其他實施例中,模仿邏輯可為固定功能或可規劃硬體與儲存於有形機器可讀媒體上之程式的組合。在一個實施例中,處理器含有模仿邏輯,而在其他實施例中,模仿邏輯存在於處理器外部且可由第三方提供。在一個實施例中,處理器可藉由執行含於處理器中或與處理器相關聯之微碼或韌體來載入體現於含有軟體之有形機器可讀媒體中的模仿邏輯。
圖13說明根據本發明之實施例的對比軟體指令轉換器之使用之方塊圖,該軟體指令轉換器用以將源指令集中之二進位指令轉換至目標指令集中之二進位指令。在所說明實施例中,指令轉換器可為軟體指令轉換器,但指令轉換器可以軟體、韌體、硬體或其各種組合予以實施。圖13展示可使用x86編譯器1304來編譯呈高階語言1302之程式以產生x86二進位碼1306,x86二進位碼1306可原生地由具有至少一個x86指令集核心之處理器1316執行。具有至少一個x86指令集核心之處理器1316表示可藉由相容地執行或以其他方式處理以下各者以便達成與具有至少一個x86指令集核心之Intel處理器實質上相同的結果而執行與具有至少一個x86指令集核心之Intel處理器實質上相同的功能的任一處理器:(1) Intel x86指令集核心之指令集的實質部分,或(2)目標為在具有至少一個x86指令集核心之Intel處理器上執行的應用程式或其他軟體之物件碼版本。x86編譯器1304表示可操作以產生x86二進位碼1306 (例如,物件碼)之編譯器,x86二進位碼1306可在具有或不具有額外連結處理的情況下在具有至少一個x86指令集核心之處理器1316上執行。相似地,圖13展示可使用替代性指令集編譯器1308來編譯呈高階語言1302之程式以產生替代性指令集二進位碼1310,替代性指令集二進位碼1310可原生地由不具有至少一個x86指令集核心之處理器1314 (例如,具有執行MIPS Technologies (Sunnyvale, CA)之MIPS指令集及/或執行ARM Holdings (Sunnyvale, CA)之ARM指令集的核心之處理器)執行。指令轉換器1312可用以將x86二進位碼1306轉換成可原生地由不具有x86指令集核心之處理器1314執行的程式碼。此經轉換程式碼可不與替代性指令集二進位碼1310相同;然而,該經轉換程式碼將實現一般操作且由來自替代性指令集之指令構成。因此,指令轉換器1312表示透過模仿、模擬或任何其他程序而允許不具有x86指令集處理器或核心之處理器或其他電子裝置執行x86二進位碼1306的軟體、韌體、硬體或其組合。
圖14為根據本發明之實施例的處理器之指令集架構1400之方塊圖。指令集架構1400可包括任何合適數目或種類之組件。
舉例而言,指令集架構1400可包括處理實體,諸如一或多個核心1406、1407及圖形處理單元1415。核心1406、1407可透過任何合適機構(諸如透過匯流排或快取記憶體)而以通訊方式耦接至指令集架構1400之其餘部分。在一個實施例中,核心1406、1407可透過L2快取記憶體控制1408 (其可包括匯流排介面單元1409及L2快取記憶體1411)而以通訊方式耦接。核心1406、1407及圖形處理單元1415可透過互連件1410而以通訊方式耦接至彼此及至指令集架構1400之剩餘部分。在一個實施例中,圖形處理單元1415可使用界定將編碼及解碼特定視訊信號以供輸出之方式的視訊程式碼1420。
指令集架構1400亦可包括用於與電子裝置或系統之其他部分介接或通訊的任何數目或種類之介面、控制器或其他機構。此等機構可促進與(例如)周邊設備、通訊裝置、其他處理器或記憶體之互動。在圖14之實例中,指令集架構1400可包括液晶顯示器(LCD)視訊介面1425、用戶介面模組(SIM)介面1430、開機ROM介面1435、同步動態隨機存取記憶體(SDRAM)控制器1440、快閃控制器1445,及串列周邊介面(SPI)主控器單元1450。LCD視訊介面1425可將視訊信號之輸出自(例如) GPU 1415且透過(例如)行動產業處理器介面(MIPI) 1490或高清晰度多媒體介面(HDMI) 1495而提供至顯示器。舉例而言,此顯示器可包括LCD。SIM介面1430可提供至或自SIM卡或裝置之存取。SDRAM控制器1440可提供至或自記憶體(諸如SDRAM晶片或模組1460)之存取。快閃控制器1445可提供至或自記憶體(諸如快閃記憶體1465或RAM之其他執行個體)之存取。SPI主控器單元1450可提供至或自通訊模組(諸如實施諸如802.11之通訊標準的藍芽模組1470、高速3G數據機1475、全球定位系統模組1480或無線模組1485)之存取。
圖15為根據本發明之實施例的處理器之指令集架構1500之更詳細方塊圖。指令架構1500可實施指令集架構1400之一或多個態樣。此外,指令集架構1500可說明用於在處理器內執行指令之模組及機構。
指令架構1500可包括以通訊方式耦接至一或多個執行實體1565之記憶體系統1540。此外,指令架構1500可包括以通訊方式耦接至執行實體1565及記憶體系統1540之快取及匯流排介面單元,諸如單元1510。在一個實施例中,指令至執行實體1565中之載入可由一或多個執行級執行。舉例而言,此等級可包括指令預提取級1530、雙指令解碼級1550、暫存器重新命名級1555、發行級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可被實施為具有任何合適大小之L2統一快取記憶體,諸如零、128k、256k、512k、1M或2M位元組之記憶體。在另一另外實施例中,快取記憶體1525可實施於錯誤校正碼記憶體中。在另一實施例中,單元1510可執行至處理器或電子裝置之其他部分的匯流排介接。在此實施例中,單元1510可因此包括用於在互連件、處理器內匯流排、處理器間匯流排或其他通訊匯流排、埠或線路上通訊之匯流排介面單元1520。匯流排介面單元1520可提供介接以便執行(例如)記憶體及輸入/輸出位址之產生以用於在執行實體1565與系統的在指令架構1500外部之部分之間傳送資料。
為了進一步促進匯流排介面單元1520之功能,匯流排介面單元1520可包括用於產生中斷及至處理器或電子裝置之其他部分之其他通訊的中斷控制及散佈單元1511。在一個實施例中,匯流排介面單元1520可包括處置快取記憶體存取及多個處理核心之同調性的窺探控制單元1512。在一另外實施例中,為了提供此功能性,窺探控制單元1512可包括處置不同快取記憶體之間的資訊交換之快取記憶體至快取記憶體傳送單元。在另一另外實施例中,窺探控制單元1512可包括一或多個窺探篩選器1514,窺探篩選器1514監測其他快取記憶體(未圖示)之同調性,使得快取記憶體控制器(諸如單元1510)不必直接執行此監測。單元1510可包括用於使指令架構1500之動作同步的任何合適數目個計時器1515。單元1510亦可包括AC埠1516。
記憶體系統1540可包括用於儲存用於指令架構1500之處理需要之資訊的任何合適數目及種類之機構。在一個實施例中,記憶體系統1540可包括用於儲存資訊之載入儲存單元1546,諸如寫入至記憶體或暫存器或自記憶體或暫存器讀取之緩衝器。在另一實施例中,記憶體系統1540可包括轉譯後援緩衝器(TLB) 1545,其提供位址值在實體位址與虛擬位址之間的查找。在又一實施例中,記憶體系統1540可包括用於促進對虛擬記憶體之存取的記憶體管理單元(MMU) 1544。在再一實施例中,記憶體系統1540可包括預提取器1543以用於在指令實際上需要執行之前向記憶體請求此等指令,以便縮減潛時。
用以執行指令之指令架構1500之操作可透過不同級而執行。舉例而言,在使用單元1510的情況下,指令預提取級1530可透過預提取器1543來存取指令。可將所擷取之指令儲存於指令快取記憶體1532中。預提取級1530可啟用用於快速迴路模式之選項1531,其中執行形成足夠小以擬合於給定快取記憶體內之迴路之一系列指令。在一個實施例中,可執行此執行而無需自(例如)指令快取記憶體1532存取額外指令。對預提取何指令之判定可由(例如)分支預測單元1535進行,分支預測單元1535可存取全域歷史1536中之執行之指示、目標位址1537之指示,或傳回堆疊1538之內容,以判定接下來將執行程式碼之分支1557中的哪一者。結果,可能可預提取此等分支。分支1557可透過如下文所描述之其他操作級而產生。指令預提取級1530可將指令以及關於未來指令之任何預測提供至雙指令解碼級1550。
雙指令解碼級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。此耦接可由諸如以下各者的任何合適種類之匯流排或介面實現:I2
C匯流排、系統管理匯流排(SMBus)、低接腳計數(LPC)匯流排、SPI、高清晰度音訊(HDA)匯流排、串列進階附接技術(SATA)匯流排、USB匯流排(版本1、2、3),或通用非同步接收器/傳輸器(UART)匯流排。
舉例而言,此等組件可包括顯示器1724、觸控螢幕1725、觸控板1730、近場通訊(NFC)單元1745、感測器集線器1740、熱感測器1746、快速晶片組(EC) 1735、受信任平台模組(TPM) 1738、BIOS/韌體/快閃記憶體1722、數位信號處理器1760、磁碟機1720 (諸如固態磁碟(SSD)或硬碟機(HDD))、無線區域網路(WLAN)單元1750、藍芽單元1752、無線廣域網路(WWAN)單元1756、全球定位系統(GPS)1775、攝影機1754 (諸如USB 3.0攝影機),或以(例如) LPDDR3標準而實施之低電力雙資料速率(LPDDR)記憶體單元1715。此等組件可各自以任何合適方式予以實施。
此外,在各種實施例中,其他組件可透過上文所論述之組件而以通訊方式耦接至處理器1710。舉例而言,加速度計1741、環境光感測器(ALS) 1742、羅盤1743及迴轉儀1744可以通訊方式耦接至感測器集線器1740。熱感測器1739、風扇1737、鍵盤1736及觸控板1730可以通訊方式耦接至EC 1735。揚聲器1763、頭戴式耳機1764及麥克風1765可以通訊方式耦接至音訊單元1762,音訊單元1762又可以通訊方式耦接至DSP 1760。音訊單元1762可包括(例如)音訊編解碼器及D類放大器。SIM卡1757可以通訊方式耦接至WWAN單元1756。諸如WLAN單元1750及藍芽單元1752之組件以及WWAN單元1756可以下一代外觀尺寸(next generation form factor;NGFF)予以實施。
本發明之實施例涉及用於執行目標為向量暫存器之一或多個向量運算之指令及處理邏輯,該等向量運算中之至少一些對儲存於含有多個元素之向量暫存器中之結構進行操作。圖18為根據本發明之實施例的用於用以取得相同類型之多重向量元素之操作之指令及邏輯的實例系統1800之說明。
用於一些應用程式中之資料結構可包括可個別地存取之元素之元組。在一些狀況下,此等類型之資料結構可被組織為陣列。在本發明之實施例中,此等資料結構中之多個資料結構可儲存於單一向量暫存器中。舉例而言,每一資料結構可包括不同類型之多個資料元素,且該等資料結構中之每一者可儲存於向量暫存器內之不同「通道(lane)」中。在此上下文中,術語「通道」可指代向量暫存器的保持多個資料元素之固定寬度部分。舉例而言,512位元向量暫存器可包括四個128位元通道。在本發明之實施例中,可將此等資料結構內之個別資料元素重新組織成類似元素之多個單獨向量,以便以相同方式對類似元素進行操作。舉例而言,可執行一或多個「GET多重向量元素」指令以自資料結構擷取類似元素且將類似元素一起儲存於各別目的地向量中。在對該等資料元素中之至少一些進行操作之後,可調用一或多個其他指令以將該等單獨向量中之資料元素排列回為其元組之原始資料結構。
系統1800可包括處理器、SoC、積體電路或其他機構。舉例而言,系統1800可包括處理器1804。儘管在圖18中將處理器1804展示及描述為實例,但可使用任何合適機構。處理器1804可包括用於執行目標為向量暫存器之向量運算之任何合適機構,包括對儲存於含有多個元素之向量暫存器中的結構進行操作之彼等操作。在一個實施例中,此等機構可以硬體予以實施。處理器1804可由圖1至圖17所描述之元件完全地或部分地實施。
將在處理器1804上執行之指令可包括於指令串流1802中。指令串流1802可由(例如)編譯器、適時(just-in-time)解譯器或其他合適機構(其可或可不包括於系統1800中)產生,或可由引起指令串流1802之程式碼之描圖器指定。舉例而言,編譯器可採取應用程式碼且產生呈指令串流1802之形式的可執行碼。指令可由處理器1804自指令串流1802接收。指令串流1802可以任何合適方式載入至處理器1804。舉例而言,待由處理器1804執行之指令可自儲存體、自其他機器或自其他記憶體(諸如記憶體系統1830)載入。該等指令可到達且可用於駐留記憶體(諸如RAM),其中自儲存體提取指令以由處理器1804執行。 該等指令可由(例如)預提取器或提取單元(諸如指令提取單元1808)自駐留記憶體提取。
在一個實施例中,指令串流1802可包括用以執行用以自儲存於一或多個向量暫存器中之資料結構取得相同類型之多重向量元素的操作之指令。舉例而言,在一個實施例中,指令串流1802可包括一或多個「VPGET3」型指令,以自儲存於多個源向量暫存器中之三元素資料結構取得相同類型之多重向量元素且將其一起儲存於單一目的地向量暫存器中。在另一實施例中,指令串流1802可包括一或多個「VPGET4」型指令,以自儲存於多個源向量暫存器中之四元素資料結構取得相同類型之多重向量元素且將其一起儲存於單一目的地向量暫存器中。應注意,指令串流1802可包括除執行向量運算之指令以外的指令。
處理器1804可包括前端1806,前端1806可包括指令提取管線級(諸如指令提取單元1808)及解碼管線級(諸如解碼單元1810)。前端1806可自指令串流1802接收指令且使用解碼單元1810來解碼該等指令。經解碼指令可由管線之分配級(諸如分配器1814)分派、分配及排程以供執行且分配至特定執行單元1816以供執行。待由處理器1804執行之一或多個特定指令可包括於經界定以由處理器1804執行之程式庫中。在另一實施例中,特定指令可為處理器1804之特定部分之目標。舉例而言,處理器1804可辨識指令串流1802中用以在軟體中執行向量運算的嘗試且可將該指令發行至執行單元1816中之特定者。
在執行期間,對資料或額外指令(包括駐留於記憶體系統1830中之資料或指令)之存取可透過記憶體子系統1820而進行。此外,來自執行之結果可儲存於記憶體子系統1820中且隨後可清空至記憶體系統1830。記憶體子系統1820可包括(例如)記憶體、RAM或快取記憶體階層,該快取記憶體階層可包括一或多個層級1 (L1)快取記憶體1822或層級2 (L2)快取記憶體1824,該等快取記憶體中之一些可由多個核心1812或處理器1804共用。在由執行單元1816執行之後,指令可由引退單元1818中之寫回級或引退級引退。此執行管線化之各種部分可由一或多個核心1812執行。
執行向量指令之執行單元1816可以任何合適方式實施。在一個實施例中,執行單元1816可包括或可以通訊方式耦接至記憶體元件,以儲存執行一或多個向量運算所必要之資訊。在一個實施例中,執行單元1816可包括用以執行用以自儲存於向量暫存器中之資料結構取得相同類型之多重向量元素的操作之電路系統。舉例而言,執行單元1816可包括用以實施一或多個形式之「VPGET3」型指令之電路系統。在另一實例中,執行單元1816可包括用以實施一或多個形式之「VPGET4」型指令之電路系統。下文更詳細地描述此等指令之實例實施方案。
在本發明之實施例中,處理器1804之指令集架構可實施被定義為Intel®進階向量延伸512 (Intel® AVX-512)指令之一或多個延伸向量指令。處理器1804可辨識(隱含地或透過特定指令之解碼及執行)將執行此等延伸向量運算中之一者。在此等狀況下,延伸向量運算可被引導至執行單元1816中之特定者以用於指令之執行。在一個實施例中,指令集架構可包括針對512位元SIMD操作之支援。舉例而言,由執行單元1816實施之指令集架構可包括各自為512位元寬之32個向量暫存器,及針對高達512位元寬之向量的支援。由執行單元1816實施之指令集架構可包括用於目的地運算元之有條件執行及高效合併的八個專用遮罩暫存器。至少一些延伸向量指令可包括針對廣播的支援。至少一些延伸向量指令可包括針對嵌入式遮蔽之支援以實現預測。
至少一些延伸向量指令可同時將相同操作應用於儲存於向量暫存器中之向量之每一元素。其他延伸向量指令可將相同操作應用於多個源向量暫存器中之對應元素。舉例而言,相同操作可藉由延伸向量指令而應用於儲存於向量暫存器中的封裝資料項目之個別資料元素中之每一者。在另一實例中,延伸向量指令可指定將對兩個源向量運算元之各別資料元素執行以產生目的地向量運算元之單一向量運算。
在本發明之實施例中,至少一些延伸向量指令可由處理器核心內之SIMD共處理器執行。舉例而言,核心1812內之執行單元1816中之一或多者可實施SIMD共處理器之功能性。SIMD共處理器可由圖1至圖17所描述之元件完全地或部分地實施。在一個實施例中,指令串流1802內由處理器1804接收之延伸向量指令可被引導至實施SIMD共處理器之功能性的執行單元1816。
如圖18所說明,在一個實施例中,VPGET3型指令可包括指示將擷取每一資料結構中之哪些資料元素的{X/Y/Z}參數。VPGET3型指令亦可包括{size}參數,其指示每一資料結構中的資料元素之大小。在一個實施例中,所有資料元素可為相同的大小及類型。在一個實施例中,VPGET3型指令可包括識別用於指令之三個源向量暫存器之三個REG參數,三個源向量暫存器中之一者亦為用於指令之目的地向量暫存器。在一個實施例中,若將應用遮蔽,則VPGET3型指令可包括識別特定遮罩暫存器之{kn
}參數。若將應用遮蔽,則VPGET3型指令可包括指定遮蔽類型之{z}參數。在一個實施例中,VPGET4型指令可包括指示將擷取每一資料結構中之哪些資料元素的{X/Y/Z/W}參數。VPGET4型指令亦可包括{size}參數,其指示每一資料結構中的資料元素之大小。在一個實施例中,所有資料元素可為相同的大小及類型。在一個實施例中,VPGET4型指令可包括三個REG參數,該等參數中之兩者識別用於指令之兩個源向量暫存器,且該等參數中之一者識別用於指令之目的地向量暫存器。在一個實施例中,VPGET4型指令可包括值表示用於指令之目的地偏移之即刻參數。在一個實施例中,若將應用遮蔽,則VPGET4型指令可包括識別特定遮罩暫存器之{kn
}參數。若將應用遮蔽,則VPGET4型指令可包括指定遮蔽類型之{z}參數。
圖18展示之VPGET3及VPGET4型指令之參數中之一或多者對於指令可為固有的。舉例而言,在不同實施例中,此等參數之任何組合可編碼於用以指令之作業碼格式之位元或欄位中。在其他實施例中,圖18展示之VPGET3及VPGET4型指令之參數中之一或多者對於指令可為可選的。舉例而言,在不同實施例中,可在調用指令時指定此等參數之任何組合。
圖19說明根據本發明之實施例的執行SIMD操作之資料處理系統之實例處理器核心1900。處理器1900可由圖1至圖18所描述之元件完全地或部分地實施。在一個實施例中,處理器核心1900可包括主處理器1920及SIMD共處理器1910。SIMD共處理器1910可由圖1至圖17所描述之元件完全地或部分地實施。在一個實施例中,SIMD共處理器1910可實施圖18所說明之執行單元1816中之一者之至少一部分。在一個實施例中,SIMD共處理器1910可包括SIMD執行單元1912及延伸向量暫存器檔案1914。SIMD共處理器1910可執行延伸SIMD指令集1916之操作。延伸SIMD指令集1916可包括一或多個延伸向量指令。此等延伸向量指令可控制包括與駐留於延伸向量暫存器檔案1914中之資料之互動的資料處理操作。
在一個實施例中,主處理器1920可包括解碼器1922,以辨識延伸SIMD指令集1916之指令以由SIMD共處理器1910執行。在其他實施例中,SIMD共處理器1910可包括解碼器之至少部分(未圖示)以解碼延伸SIMD指令集1916之指令。處理器核心1900亦可包括對於理解本發明之實施例可為不必要的額外電路系統(未圖示)。
在本發明之實施例中,主處理器1920可執行控制一般類型之資料處理操作(包括與快取記憶體1924及/或暫存器檔案1926之互動)的資料處理指令串流。嵌入於資料處理指令串流內的可為延伸SIMD指令集1916之SIMD共處理器指令。主處理器1920之解碼器1922可將此等SIMD共處理器指令辨識為屬於應由附接式SIMD共處理器1910執行之類型。因此,主處理器1920可在共處理器匯流排1915上發行此等SIMD共處理器指令(或表示SIMD共處理器指令之控制信號)。自共處理器匯流排1915,此等指令可由任何附接式SIMD共處理器接收。在圖19所說明之實例實施例中,SIMD共處理器1910可接受及執行意欲用於在SIMD共處理器1910上執行的任何經接收SIMD共處理器指令。
在一個實施例中,主處理器1920及SIMD共處理器1920可整合至單一處理器核心1900中,單一處理器核心1900包括一執行單元、一組暫存器檔案及一解碼器以辨識延伸SIMD指令集1916之指令。
圖18及圖19所描繪之實例實施方案僅僅為說明性的且並不意謂對本文中所描述之用於執行延伸向量運算之機制之實施方案的限制性。
圖20為說明根據本發明之實施例的實例延伸向量暫存器檔案1914之方塊圖。延伸向量暫存器檔案1914可包括32個SIMD暫存器(ZMM0至ZMM31),其中之每一者為512位元寬。ZMM暫存器中之每一者的下部256個位元混疊至各別256位元YMM暫存器。YMM暫存器中之每一者的下部128個位元混疊至各別128位元XMM暫存器。舉例而言,暫存器ZMM0 (被展示為2001)之位元255至0混疊至暫存器YMM0,且暫存器ZMM0之位元127至0混疊至暫存器XMM0。相似地,暫存器ZMM1 (被展示為2002)之位元255至0混疊至暫存器YMM1,暫存器ZMM1之位元127至0混疊至暫存器XMM1,暫存器ZMM2 (被展示為2003)之位元255至0混疊至暫存器YMM2,暫存器ZMM2之位元127至0混疊至暫存器XMM2,等等。
在一個實施例中,延伸SIMD指令集1916中之延伸向量指令可對延伸向量暫存器檔案1914中之暫存器中之任一者進行操作,該等暫存器包括暫存器ZMM0至ZMM31、暫存器YMM0至YMM15及暫存器XMM0至XMM7。在另一實施例中,在開發出Intel® AVX-512指令集架構之前所實施的舊版SIMD指令可對延伸向量暫存器檔案1914中之YMM或XMM暫存器之子集進行操作。舉例而言,在一些實施例中,由一些舊版SIMD指令進行之存取可限於暫存器YMM0至YMM15或暫存器XMM0至XMM7。
在本發明之實施例中,指令集架構可支援存取高達四個指令運算元之延伸向量指令。舉例而言,在至少一些實施例中,延伸向量指令可存取圖20所展示的32個延伸向量暫存器ZMM0至ZMM31中之任一者作為源或目的地運算元。在一些實施例中,延伸向量指令可存取八個專用遮罩暫存器中之任一者。在一些實施例中,延伸向量指令可存取十六個一般用途暫存器中之任一者作為源或目的地運算元。
在本發明之實施例中,延伸向量指令之編碼可包括指定待執行之特定向量運算的作業碼。延伸向量指令之編碼可包括識別八個專用遮罩暫存器k0至k7中之任一者之編碼。經識別遮罩暫存器之每一位元可控管向量運算在其被應用於各別源向量元素或目的地向量元素時的行為。舉例而言,在一個實施例中,此等遮罩暫存器中之七個(k1至k7)可用以有條件地控管延伸向量指令之每資料元素計算運算。在此實例中,若未設定對應遮罩位元,則對於給定向量元素不執行運算。在另一實施例中,遮罩暫存器k1至k7可用以有條件地控管對延伸向量指令之目的地運算元之每元素更新。在此實例中,若未設定對應遮罩位元,則不運用運算之結果來更新給定目的地元素。
在一個實施例中,延伸向量指令之編碼可包括指定待應用於延伸向量指令之目的地(結果)向量之遮蔽之類型的編碼。舉例而言,此編碼可指定是否將合併遮蔽或零遮蔽應用於向量運算之執行。若此編碼指定合併遮蔽,則遮罩暫存器中之其對應位元未經設定的任何目的地向量元素之值可保留於目的地向量中。若此編碼指定零遮蔽,則遮罩暫存器中之對應位元未經設定的任何目的地向量元素之值可在目的地向量中運用零值予以替換。在一個實例實施例中,不使用遮罩暫存器k0作為用於向量運算之述詞運算元。在此實例中,在其他情況下將選擇遮罩k0之編碼值可代替地選擇全部為1之隱含遮罩值,藉此實際上停用遮蔽。在此實例中,可將遮罩暫存器k0用於採取一或多個遮罩暫存器作為源或目的地運算元之任何指令。
下文展示延伸向量指令之使用及語法之一個實例: VADDPS zmm1, zmm2, zmm3 在一個實施例中,上文所展示之指令可將向量加法運算應用於源向量暫存器zmm2及zmm3之所有元素。在一個實施例中,上文所展示之指令可將結果向量儲存於目的地向量暫存器zmm1中。
替代地,下文展示用以有條件地應用向量運算之指令: VADDPS zmm1 {k1}{z}, zmm2, zmm3
在此實例中,該指令可將向量加法運算應用於源向量暫存器zmm2及zmm3之元素,遮罩暫存器k1中之對應位元已針對該等元素而設定。在此實例中,若設定{z}修飾符,則對應於遮罩暫存器k1中未經設定之位元的儲存於目的地向量暫存器zmm1中之結果向量之元素之值可運用零值予以替換。否則,若未設定{z}修飾符,或若未指定{z}修飾符,則可保留對應於遮罩暫存器k1中未經設定之位元的儲存於目的地向量暫存器zmm1中之結果向量之元素之值。
在一個實施例中,一些延伸向量指令之編碼可包括用以指定嵌入式廣播之使用的編碼。若針對載入來自記憶體之資料且執行某一計算或資料移動操作之指令包括指定嵌入式廣播之使用的編碼,則來自記憶體之單一源元素可橫越有效源運算元之所有元素而廣播。舉例而言,當相同純量運算元將用於應用於源向量之所有元素的計算中時,可針對向量指令指定嵌入式廣播。在一個實施例中,延伸向量指令之編碼可包括指定封裝至源向量暫存器中或將封裝至目的地向量暫存器中之資料元素之大小的編碼。舉例而言,編碼可指定每一資料元素為位元組、字、雙字或四倍字等等。在另一實施例中,延伸向量指令之編碼可包括指定封裝至源向量暫存器中或將封裝至目的地向量暫存器中之資料元素之資料類型的編碼。舉例而言,編碼可指定資料表示單精確度或雙精確度整數,或多個支援之浮點資料類型中之任一者。
在一個實施例中,延伸向量指令之編碼可包括指定用來存取源或目的地運算元之記憶體位址或記憶體定址模式的編碼。在另一實施例中,延伸向量指令之編碼可包括指定作為指令之運算元的純量整數或純量浮點數的編碼。雖然本文中描述若干特定延伸向量指令及其編碼,但此等指令及編碼僅僅為可實施於本發明之實施例中的延伸向量指令之實例。在其他實施例中,更多、更少或不同之延伸向量指令可實施於指令集架構中,且該等指令之編碼可包括更多、更少或不同之資訊以控制其執行。
以可個別地存取之三個或四個元素之元組而組織的資料結構在許多應用程式中係常見的。舉例而言,RGB (紅-綠-藍)為在用於媒體應用程式中之許多編碼方案中之常見格式。儲存此類型之資訊的資料結構可由三個資料元素(R分量、G分量及B分量)組成,該三個資料元素被相連地儲存且具有相同大小(例如,該等資料元素可全部為32位元整數)。對於在高性能計算應用程式中編碼資料為常見之格式包括共同地表示多維空間內之位置的兩個或多於兩個座標值。舉例而言,資料結構可儲存表示2D空間內之位置的X及Y座標,或可儲存表示3D空間內之位置的X、Y及Z座標。具有較高數目個元素之其他常見資料結構可出現在此等及其他類型之應用程式中。
在一些狀況下,此等類型之資料結構可被組織為陣列。在本發明之實施例中,此等資料結構中之多者可儲存於單一向量暫存器(諸如上文所描述之XMM、YMM或ZMM向量暫存器中之一者)中。在一個實施例中,此等資料結構內之個別資料元素可被重新組織為可接著在SIMD迴圈中使用的類似元素之向量,此係因為此等元素在資料結構自身中可能並不彼此緊鄰地儲存。應用程式可包括用以以相同方式對一個類型之所有資料元素進行操作的指令,及用以以不同方式對不同類型之所有資料元素進行操作的指令。在一個實例中,對於各自包括RGB色彩空間中之R分量、G分量及B分量之資料結構之陣列,與應用於該陣列之列中的每一者(每一資料結構)中之G分量或B分量的計算運算不同的計算運算可應用於該陣列之列中的每一者中之R分量。在本發明之實施例中,為了對此等類型之分量中之個別者進行操作,可使用一或多個向量GET3指令以將來自RGB資料結構之陣列的R值、G值及B值擷取至含有相同類型之元素的單獨向量中。結果,該等向量中之一者可包括所有R值,一者可包括所有G值,且一者可包括所有B值。
在另一實例中,許多分子動力學應用程式對由XYZW資料結構之陣列組成的相鄰者清單進行操作。在此實例中,該等資料結構中之每一者可包括X分量、Y分量、Z分量及W分量。在本發明之實施例中,為了對此等類型之分量中之個別者進行操作,可使用一或多個向量GET4指令以將來自XYZW資料結構之陣列的X值、Y值、Z值及W值擷取至含有相同類型之元素的單獨向量中。結果,該等向量中之一者可包括所有X值,一者可包括所有Y值,一者可包括所有Z值,且一者可包括所有W值。在一些狀況下,在對此等單獨向量內的資料元素中之至少一些進行操作之後,應用程式可包括整體地對XYZW資料結構進行操作之指令。舉例而言,在更新單獨向量中的X、Y、Z或W值中之至少一些之後,應用程式可包括存取資料結構中之一者以整體地擷取XYZW資料結構或對XYZW資料結構進行操作之指令。在此狀況下,可調用一或多個其他指令,以便將XYZW值返回儲存為其原始格式。
在本發明之實施例中,由處理器核心(諸如系統1800中之核心1812)或由SIMD共處理器(諸如SIMD共處理器1910)實施的用於執行延伸向量運算之指令可包括用以執行向量運算以自包括不同類型之三個資料元素之資料結構取得相同類型之資料元素或執行向量運算以自包括不同類型之四個資料元素之資料結構取得相同類型之資料元素的指令。舉例而言,此等指令可包括一或多個「VPGET3」或「VPGET4」指令。在本發明之實施例中,此等VPGET3及VPGET4指令可用以自包括多個類型之元素的資料結構擷取不同類型之資料元素。VPGET3及VPGET4指令可將經擷取資料元素儲存至記憶體中含有資料結構之不同資料元素之各別向量中。在一個實施例中,此等指令可用以自資料元素一起儲存於一或多個源向量暫存器內之相連位置中的資料結構擷取資料元素。在一個實施例中,多重元素資料結構中之每一者可表示陣列之列。
在本發明之實施例中,向量暫存器內之不同「通道」可用以保持不同類型之資料元素。在一個實施例中,每一通道可保持單一類型之多個資料元素。在另一實施例中,保持於單一通道中之資料元素可不屬於相同類型,但其可由應用程式以相同方式予以操作。舉例而言,一個通道可保持X值,一個通道可保持Y值,等等。在此上下文中,術語「通道」可指代向量暫存器之保持待以相同方式處理之多個資料元素的部分,而非向量暫存器之保持單一資料元素的部分。在另一實施例中,向量暫存器內之不同「通道」可用以保持不同資料結構之資料元素。在此上下文中,術語「通道」可指代向量暫存器之保持單一資料結構之多個資料元素的部分。在此實例中,儲存於每一通道中之資料元素可屬於兩個或多於兩個不同類型。在向量暫存器為512位元寬之一個實施例中,可存在四個128位元通道。舉例而言,512位元向量暫存器內之最低階128個位元可被稱作第一通道,接下來的128個位元可被稱作第二通道,等等。在此實例中,128位元通道中之每一者可儲存兩個64位元資料元素、四個32位元資料元素、八個16位元資料元素或四個8位元資料元素。在向量暫存器為512位元寬之另一實施例中,可存在兩個256位元通道,其中之每一者儲存各別資料結構之資料元素。在此實例中,256位元通道中之每一者可儲存各自高達128個位元之多個資料元素。
在一個實施例中,表示多個XYZ型資料結構之資料可儲存於諸如ZMM暫存器之延伸向量暫存器中。在此實例中,每一資料結構之X、Y及Z分量可各自為32位元。ZMM暫存器中之每一者可將表示第一資料結構之資料元素儲存於第一通道中、將表示第二資料結構之資料元素儲存於第二通道中、將表示第三資料結構之資料元素儲存於第三通道中,且將表示第四資料結構之資料元素儲存於第四通道中。在一個實施例中,XYZ型資料結構可共同地儲存於三個不同向量暫存器中。舉例而言,每一ZMM暫存器可儲存來自構成三個資料結構之48資料元素當中的十六個32位元資料元素。在一個實施例中,「VPGET3」指令可用以自共同地儲存於三個源ZMM暫存器中之三個XYZ型資料結構擷取X分量,且將其儲存至目的地向量暫存器。在一個實施例中,源向量暫存器中之一者亦可充當目的地向量暫存器。在此狀況下,雙用途向量暫存器中表示多個XYZ型資料結構之源資料可運用單一類型之經擷取資料元素(用於三個源向量暫存器中之所有資料結構的X分量)被覆寫。在另一實施例中,目的地向量暫存器可為諸如ZMM暫存器之另一延伸向量暫存器。在此實例中,VPGET3指令可排列自源ZMM暫存器擷取之資料元素以產生目的地向量。舉例而言,由VPGET3指令產生且由VPGET3指令儲存至目的地ZMM暫存器之目的地向量可包括按以下次序的來自儲存於三個源ZMM暫存器中之資料結構之X資料元素:X1、X2、X3……X16。在此實例中,兩個額外VPGET3指令可用以分別自三個源ZMM暫存器中之資料結構擷取Y及Z分量,且將其儲存至單獨目的地向量暫存器。
在一個實施例中,可將表示十六個XYZW型資料結構之資料儲存於諸如ZMM暫存器之四個延伸向量暫存器中。在此實例中,每一資料結構之X、Y、Z及W分量可各自為32位元。ZMM暫存器中之每一者可將表示第一資料結構之資料元素儲存於第一通道中、將表示第二資料結構之資料元素儲存於第二通道中、將表示第三資料結構之資料元素儲存於第三通道中,且將表示第四資料結構之資料元素儲存於第四通道中。在一個實施例中,「VPGET4」指令可用以自前兩個源ZMM暫存器中之每一者中的四個XYZW型資料結構擷取X分量,且將其儲存至目的地向量暫存器之最低階半部。在一個實施例中,源向量暫存器中之一者亦可充當目的地向量暫存器。在此狀況下,雙用途向量暫存器中的表示多個XYZW型資料結構之源資料可運用單一類型之經擷取資料元素(用於三個源向量暫存器中之所有資料結構的X分量)被覆寫。在另一實施例中,目的地向量暫存器可為諸如ZMM暫存器之另一延伸向量暫存器。在此實例中,VPGET4指令可排列自兩個源ZMM暫存器擷取之資料元素以產生目的地向量。舉例而言,由VPGET4指令產生且由VPGET4指令儲存至目的地ZMM暫存器之目的地向量可包括按以下次序的來自前兩個源ZMM暫存器之四個通道之X資料元素:X1、X2、X3……X8。在此實例中,第二VPGET4指令可用以自第三及第四源ZMM暫存器中之每一者中的四個XYZW型資料結構擷取X分量,且將其儲存至同一目的地向量暫存器之最高階半部,或儲存至不同目的地暫存器(有或無自最低階位置之偏移)。相似地,VPGET4指令可用以一次自源ZMM暫存器中之兩者中的四個XYZW型資料結構擷取Y、Z或W分量,且將其儲存於目的地向量暫存器之一個半部中。
圖21為根據本發明之實施例的用以執行向量運算以取得相同類型之多個元素的操作之說明。在一個實施例中,系統1800可執行用以執行向量GET操作之指令。舉例而言,可執行VPGET3指令或VPGET4指令。指令可包括任何合適數目及種類之運算元、位元、旗標、參數或其他元素。在一個實施例中,用於VPGET3及VPGET4指令之編碼可包括相同欄位中之一些或全部,且對於此等指令之相似變體,此等常見欄位可以相同方式進行填入。在一個實施例中,VPGET3及VPGET4指令之編碼中的單一位元或欄位之值可指示資料元素將由指令擷取的資料結構是否含有三個或四個資料元素。在另一實施例中,VPGET3及VPGET4指令可共用作業碼,且指令之調用中所包括的指令參數可指示資料元素將由指令擷取的資料結構是否含有三個或四個資料元素。
在一個實施例中,VPGET3指令或VPGET4指令之調用可參考三個源向量暫存器。源向量暫存器中之每一者可為含有表示兩個或多於兩個資料結構之多個資料元素的封裝資料之延伸向量暫存器。資料結構中之每一者之資料元素可儲存於源向量暫存器中之相連位置中。VPGET3指令或VPGET4指令之調用亦可參考目的地向量暫存器。目的地向量暫存器可為相同類型之資料元素可在由指令自儲存於源向量暫存器內之資料結構擷取之後儲存至的延伸向量暫存器。在圖21所說明之實例中,第一參考源向量暫存器亦充當用於指令之目的地向量暫存器。在一個實例中,執行VPGET3指令可致使源向量暫存器中之每一三元素資料結構內之相同位置中的資料元素被寫入至在VPGET3指令之調用中所參考的目的地向量暫存器中之相連位置。相似地,執行VPGET4指令可致使源向量暫存器中之每一四元素資料結構內之相同位置中的資料元素被寫入至在VPGET4指令之調用中所參考的目的地向量暫存器中之相連位置。
在一個實施例中,VPGET3或VPGET4指令之調用可指定由儲存於源向量暫存器中之資料表示之資料結構中的資料元素之大小。在另一實施例中,VPGET3或VPGET4指令之調用可指定儲存於源向量暫存器中之資料結構內的待擷取之資料元素之位置。舉例而言,VPGET3指令之調用可包括指定是否應自源向量暫存器中之每一資料結構擷取第一(X)、第二(Y)或第三(Z)元素的編碼或參數。相似地,VPGET4指令之調用可包括指定是否應自源向量暫存器中之每一資料結構擷取第一(X)、第二(Y)、第三(Z)或第四(W)元素的編碼或參數。在一個實施例中,VPGET4指令之調用可包括指示目的地向量(及目的地向量暫存器)內由VPGET4指令擷取之資料元素應開始被儲存之位置的目的地偏移參數。在一個實施例中,VPGET3或VPGET4指令之調用可指定當將執行之結果寫入至目的地向量暫存器時待應用於執行之結果的遮罩暫存器。在又一實施例中,VPGET3或VPGET4指令之調用可指定待應用於結果的遮蔽之類型,諸如合併遮蔽或零遮蔽。在又其他實施例中,可在VPGET3或VPGET4指令之調用中參考更多、更少或不同之參數。
在圖21所說明之實例實施例中,在(1)處,可由SIMD執行單元1912接收VPGET3或VPGET4指令及其參數(其可包括上文所描述之任何或所有源及目的地向量暫存器、每一資料結構中的資料元素之大小之指示、每一資料結構中之哪些資料元素將被擷取之指示、指定VPGET4指令之目的地偏移之參數、識別特定遮罩暫存器之參數,或指定遮蔽類型之參數)。舉例而言,在一個實施例中,VPGET3或VPGET4指令可由核心1812內之分配器1814發行至SIMD共處理器1910內之SIMD執行單元1912。在另一實施例中,VPGET3或VPGET4指令可由主處理器1920之解碼器1922發行至SIMD共處理器1910內之SIMD執行單元1912。VPGET3或VPGET4指令可邏輯上由SIMD執行單元1912執行。
在此實例中,表示多個資料結構之封裝資料可儲存於延伸向量暫存器檔案1914內之第一源向量暫存器2101、第二源向量暫存器2102及第三源向量暫存器2103中。資料可儲存於此等延伸向量暫存器ZMMn中之每一者中,使得可將構成資料結構中之每一者之資料元素一起儲存於延伸向量暫存器中。舉例而言,包括延伸向量暫存器2101之最低階位元的第一通道可儲存第一資料結構之多個資料元素,包括延伸向量暫存器2101之接下來的最低階位元的第二通道可儲存第二資料結構之多個資料元素,等等。在此實例中,第一源向量暫存器2101亦充當用於指令之目的地向量暫存器。
由SIMD執行單元1912執行VPGET3或VPGET4指令可包括:在(2)處,獲得表示儲存於延伸向量暫存器檔案1914中之第一源向量暫存器2101中的資料結構中之每一者之單一分量之資料元素。舉例而言,VPGET3或VPGET4指令之參數可將延伸向量暫存器2101識別為由VPGET3或VPGET4指令儲存至目的地向量暫存器的資料之第一源,且SIMD執行單元1912可自儲存於識別之第一源向量暫存器中之多個通道中的封裝資料擷取指定資料元素。由SIMD執行單元1912執行VPGET3或VPGET4指令可包括:在(3)處,獲得表示儲存於延伸向量暫存器檔案1914中之第二源向量暫存器2102中的資料結構中之每一者之相同單一分量之資料元素。舉例而言,VPGET3或VPGET4指令之參數可將延伸向量暫存器2102識別為待由VPGET3或VPGET4指令儲存至目的地向量暫存器的資料之第二源,且SIMD執行單元1912可自儲存於識別之第二源向量暫存器中之多個通道中的封裝資料擷取指定資料元素。由SIMD執行單元1912執行VPGET3或VPGET4指令可包括:在(4)處,獲得表示儲存於延伸向量暫存器檔案1914中之第三源向量暫存器2103中的資料結構中之每一者之相同單一分量之資料元素。舉例而言,VPGET3或VPGET4指令之參數可將延伸向量暫存器2103識別為待由VPGET3或VPGET4指令儲存至目的地向量暫存器的資料之第三源,且SIMD執行單元1912可自儲存於識別之第三源向量暫存器中之多個通道中的封裝資料擷取指定資料元素。
由SIMD執行單元1912執行VPGET3或VPGET4指令可包括:在(5)處,排列自儲存於三個識別之源向量暫存器中之資料結構內之指定位置獲得的源資料以包括於目的地向量中。在一個實施例中,排列由VPGET3指令獲得之資料可包括將自三個源暫存器擷取的相同類型之資料元素彼此緊鄰地組譯以用於包括於目的地向量中。舉例而言,自第一源向量暫存器中之第一資料結構擷取的資料元素可彼此緊鄰地置放於目的地向量中。在一個實施例中,排列由第一VPGET4指令獲得之資料可包括組譯來自兩個源向量暫存器的相同類型之資料元素且將其置放於目的地暫存器之下階半部中(具有偏移0)。隨後,排列由第二VPGET4指令獲得之資料可包括組譯來自兩個其他源向量暫存器的相同類型之資料元素且將其置放於目的地暫存器之上階半部中(具有偏移8),同時將目的地暫存器之下階半部之內容保持為資料元素之額外源。
在一個實施例中,執行VPGET3或VPGET4指令可包括針對資料作為封裝資料而儲存於三個源向量暫存器2101、2102及2103中之資料結構中之每一者重複圖21所說明之操作之任何或所有步驟。在此實例中,在將自第一源向量暫存器中之第一資料結構擷取的資料元素置放於目的地向量中之後,可將自第一源向量暫存器中之剩餘資料結構擷取的資料元素彼此緊鄰地置放於目的地向量中。隨後,可將自第二源向量暫存器中之資料結構擷取的資料元素彼此緊鄰地置放於目的地向量中,且可將自第三源向量暫存器中之資料結構擷取的資料元素彼此緊鄰地置放於目的地向量中。舉例而言,可針對資料元素將被擷取且包括於目的地向量中的資料結構中之每一者將步驟(2)、(3)、(4)及(5)執行一次。在一個實施例中,對於每一額外反覆,SIMD執行單元1912可自三個源向量暫存器內之資料結構中之一者中的相同位置擷取資料元素且將其彼此緊鄰地組譯以用於包括於目的地向量中。
在組譯目的地向量之後,執行VPGET3或VPGET4指令可包括:在(6)處,將目的地向量寫入至延伸向量暫存器檔案1914中由VPGET3或VPGET4指令之參數識別之目的地向量暫存器,此後可引退VPGET3或VPGET4指令。在此實例中,經識別為第一源向量暫存器(2101)之向量暫存器亦充當用於此指令之目的地(結果)向量暫存器。因此,儲存於向量暫存器2101中的源資料中之至少一些可由目的地向量中之資料覆寫(取決於遮蔽是否應用於目的地向量)。在另一實例中,VPGET3或VPGET4指令之參數可將另一延伸向量暫存器ZMMn識別為用於VPGET3或VPGET4指令之目的地(結果)向量暫存器,且SIMD執行單元1912可將自三個源向量暫存器(2101、2102、2103)中之資料結構擷取之資料元素儲存至經識別目的地向量暫存器。在一個實施例中,針對VPGET4指令所指定之偏移參數可指示目的地向量暫存器中自兩個源向量暫存器擷取之資料元素每次將被儲存至之位置。在一個實施例中,若在VPGET3或VPGET4指令之調用中指定合併遮蔽操作,則將目的地向量寫入至目的地向量暫存器可包括將此遮蔽操作應用於目的地向量。在另一實施例中,若在VPGET3或VPGET4指令之調用中指定零遮蔽操作,則將目的地向量寫入至目的地向量暫存器可包括將此遮蔽操作應用於目的地向量。
在一個實施例中,當自源向量暫存器擷取來自每一資料結構之資料元素且將其彼此緊鄰地組譯時,可將其儲存至目的地向量暫存器。舉例而言,一旦已自第一資料結構擷取且已在目的地向量中組譯指定資料元素,就可將此等經擷取資料元素寫入至目的地向量暫存器中之相連位置。隨後,一旦已自第二資料結構擷取且已在目的地向量中組譯指定資料元素,就可將此等額外經擷取資料元素寫入至目的地向量暫存器中之相連位置,等等。
在一個實施例中,延伸SIMD指令集架構可實施多個版本或形式之操作以自封裝向量暫存器擷取相同類型之資料元素,其包括(例如)下文所展示之資料元素: VPGET3{X/Y/Z}{size} {kn} {z} (REG, REG, REG) VPGET4{X/Y/Z/W}{size} {kn} {z} (REG, REG, REG, imm)
在此等實例形式之VPGET3及VPGET4指令中,用於VPGET3指令的參數{X/Y/Z}之值可指示每一三元素資料結構中的資料元素中之哪些應由該指令擷取。相似地,用於VPGET4指令的參數{X/Y/Z/W}之值可指示每一四元素資料結構中的資料元素中之哪些應由該指令擷取。在此等實例中,第一REG參數可識別充當用於指令之第一源向量暫存器且亦充當用於指令之目的地向量暫存器的延伸向量暫存器。在此等實例中,第二REG參數可識別用於指令之第二源向量暫存器,且第三REG參數可識別用於指令之第三源向量暫存器。在此等實例中,「大小(size)」修飾符可指定源向量暫存器中的資料元素之大小及/或類型。此可對應於每一資料結構中由儲存於源向量暫存器中之封裝資料表示的資料元素之大小及/或類型。在一個實施例中,指定大小/類型可為{B/W/D/Q/PS/PD}中之一者。
在此等實例中,可選指令參數「kn
」可識別多個遮罩暫存器中之特定者。當將遮蔽應用至用於VPGET3或VPGET4指令之目的地(結果)向量時,可指定此參數。在將應用遮蔽之實施例中(例如,若針對指令指定遮罩暫存器),可選指令參數「z」可指示是否應應用調零遮蔽(zeroing-masking)。在一個實施例中,若設定此可選參數,則可應用零遮蔽,且若未設定此可選參數或若省略此可選參數,則可應用合併遮蔽。在上文所展示的實例形式之VPGET4指令中,即刻參數可指定用於VPGET4指令之整數目的地偏移值。此目的地偏移值可指示目的地向量暫存器中應寫入指令之結果的開始位置。在其他實施例(未圖示)中,VPGET3或VPGET4指令可包括指示源向量暫存器中之每一者中的通道或資料結構之數目(例如,4、3或2)之參數。
圖22A至圖22D說明根據本發明之實施例的各別形式之VPGET3及VPGET4指令之操作。更具體言之,圖22A說明無遮蔽的實例VPGET3XD指令(「VPGET3XD (REG, REG, REG)」指令)之操作。在此實例中,共同地儲存於三個源向量暫存器(例如,ZMMn暫存器) 2101、2102及2103中之封裝資料包括用於十六個資料結構之資料元素,其中之每一者包括三個32位元雙字。在一個實施例中,資料結構中之每一者可表示陣列之列。在此實例中,在每一資料結構(或列)中包括一X分量、一Y分量及一Z分量。用於陣列中之每一資料結構(列)的資料元素已載入至源向量暫存器中之一者中的96個位元中,或在執行VPGET3XD指令之前橫越源向量暫存器中之兩者的96個位元中。在此實例中,第一源向量暫存器2101儲存前五個資料結構,各自包括三個32位元雙字:一X分量、一Y分量及一Z分量。在此實例中,第一源向量暫存器2101之最高階32個位元亦儲存第六資料結構之第一資料元素(X6),而第六資料結構之剩餘資料元素(Y6及Z6)儲存於第二源向量暫存器2102之最低階64個位元中。在此實例中,第二源向量暫存器2102亦儲存接下來的四個資料結構(各自包括一X分量、一Y分量及一Z分量)及第十一資料結構之前兩個元素(X11及Y11)。最後,第三源向量暫存器2103儲存第十一資料結構之剩餘資料元素(Z11),及最後五個資料結構,各自包括一X分量、一Y分量及一Z分量。
在一個實施例中,VPGET3XD指令可用以擷取表示共同地儲存於三個源向量暫存器2101、2102及2103中的資料結構中之每一者之X分量之資料元素。舉例而言,執行VPGET3XD指令可致使儲存於三個源向量暫存器(X分量)中之每一資料結構內的第一位置中之資料元素自三個源向量暫存器擷取。執行VPGET3XD指令可致使此等經擷取資料元素儲存至目的地向量暫存器2103中之相連位置。
圖22B說明根據本發明之實施例的具有遮蔽之實例VPGET3YD指令(「VPGET3XD kn z (REG, REG,REG)」指令)之操作。在此實例中,源向量暫存器2101、2102及2103可為圖22A所說明之相同源向量暫存器。在此實例中,此等源向量暫存器被預載入有對應於十六個三元素資料結構之資料元素,如上文所描述。在一個實施例中,VPGET3YD指令可用以擷取表示共同地儲存在三個源向量暫存器2101、2102及2103中的資料結構中之每一者之Y分量之資料元素。舉例而言,執行VPGET3YD指令可致使在儲存於三個源向量暫存器中之每一資料結構內的第二位置中之資料元素(Y分量)自三個源向量暫存器擷取且置放於目的地向量2201中。然而,在此實例中,在將其儲存至目的地向量暫存器2103中之相連位置前,可將遮蔽操作應用於目的地向量2201。在此實例中,指定遮罩暫存器2202包括第四、第五、第十、第十四及第十五位元(例如,位元3、4、9、13及14)中之零。因此,並非將目的地向量內之此等位置中的資料元素儲存至目的地向量暫存器,而是可將零寫入至目的地向量暫存器中之對應位置中。在一個實施例中,可執行VPGET3Z指令以擷取表示共同地儲存於三個源向量暫存器2101、2102及2103中的資料結構中之每一者之Z分量之資料元素。舉例而言,執行VPGET3ZD指令可致使在儲存於三個源向量暫存器中之每一資料結構內的第三位置中之資料元素(Z分量)自三個源向量暫存器擷取且置放於目的地向量中。
圖22C說明根據本發明之實施例的具有目的地偏移參數值0之實例VPGET4XD指令(「VPGET4XD (REG, REG, REG, 0)」指令)之操作。在此實例中,亦充當目的地向量暫存器之第一源向量暫存器2101不含有表示用於VPGET4XD指令之源資料元素的任何資料。然而,在執行VPGET4XD指令之後,可保留第一源向量暫存器2101中的資料中之一些。在此實例中,儲存於兩個源向量暫存器2102及2103中之每一者中的封裝資料包括用於四個資料結構之資料元素,其中之每一者含有四個32位元雙字。在一個實施例中,四個資料結構中之每一者可表示陣列之列。在此實例中,在每一資料結構(或列)中包括一X分量、一Y分量、一Z分量及一W分量。用於陣列中之每一資料結構(列)的資料元素已在執行VPGET4XD指令之前載入至第二源向量暫存器(延伸向量暫存器ZMMn 2102)及第三源向量暫存器(延伸向量暫存器ZMMn 2103)之各別128位元通道中。在此實例中,可被稱作第二源向量暫存器之第一通道的源向量暫存器2102之最低階128個位元含有四個32位元雙字,其表示儲存於源向量暫存器中的第一資料結構之資料元素:X1、Y1、Z1及W1。在此實例中,可被稱作第二源向量暫存器之第二通道的第二源向量暫存器2102之接下來的最低階128個位元含有四個32位元雙字,其表示儲存於源向量暫存器中的第二資料結構之資料元素:X2、Y2、Z2及W2。相似地,可被稱作第二源向量暫存器之第三通道的第二源向量暫存器2102之接下來的最低階128個位元含有四個32位元雙字,其表示儲存於源向量暫存器中的第三資料結構之資料元素:X3、Y3、Z3及W3;且可被稱作第二源向量暫存器之第四通道的第二源向量暫存器2101之最高階128個位元含有四個32位元雙字,其表示儲存於源向量暫存器中的第四資料結構之資料元素:X4、Y4、Z4及W4。
在此實例中,可被稱作第三源向量暫存器之第一通道的第三源向量暫存器2103之最低階128個位元含有四個32位元雙字,其表示儲存於源向量暫存器中的第五資料結構之資料元素:X5、Y5、Z5及W5。在此實例中,可被稱作第三源向量暫存器之第二通道的第三源向量暫存器2103之接下來的最低階128個位元含有四個32位元雙字,其表示儲存於源向量暫存器中的第六資料結構之資料元素:X6、Y6、Z6及W6。相似地,可被稱作第三源向量暫存器之第三通道的第三源向量暫存器2103之接下來的最低階128個位元含有四個32位元雙字,其表示儲存於源向量暫存器中的第七資料結構之資料元素:X7、Y7、Z7及W7;且可被稱作第三源向量暫存器之第四通道的第三源向量暫存器2102之最高階128個位元含有四個32位元雙字,其表示儲存於源向量暫存器中的第八資料結構之資料元素:X8、Y8、Z8及W8。
在一個實施例中,具有偏移0之VPGET4XD指令可用以自兩個源向量暫存器2102及2103擷取X資料元素。執行VPGET4XD指令可致使此等經擷取資料元素儲存至目的地向量暫存器2101中在最低低位置(在偏移0)處開始之相連位置。在此實例中,目的地向量暫存器2101之上部分未使用,且其內容可因執行VPGET4XD指令而未改變。
圖22D說明根據本發明之實施例的第二VPGET4XD指令(「VPGET4XD (REG, REG, REG, 8)」指令)之操作。在此實例中,第二VPGET4XD指令具有目的地偏移參數值8。在此實例中,亦充當用於此指令之目的地向量暫存器的第一源向量暫存器2101之最低階八個位置含有由圖22C中所說明且上文描述的VPGET4XD指令儲存至第一源向量暫存器2101之結果資料。因此,第一源向量暫存器2101可將此結果資料貢獻給用於第二VPGET4XD指令之目的地向量。在此實例中,儲存於兩個源向量暫存器2102及2103中之每一者中的封裝資料可包括用於四個額外資料結構之資料元素,其中之每一者含有四個32位元雙字。在一個實施例中,四個資料結構中之每一者可表示陣列之列。在此實例中,在每一資料結構(或列)中包括一X分量、一Y分量、一Z分量及一W分量。更具體言之,源向量暫存器2102已被載入有第九、第十、第十一及第十二資料結構之資料元素,且源向量暫存器2103已被載入有第十三、第十四、第十五及第十六資料結構之資料元素。
在一個實施例中,具有偏移8之VPGET4XD指令可用以自已載入至兩個源向量暫存器2102及2103之額外資料結構擷取X資料元素。執行VPGET4XD指令可致使此等經擷取資料元素儲存至目的地向量2203中在第九位置(在偏移8)處開始之相連位置。在此實例中,目的地向量2203之下階部分未由第二VPGET4XD指令使用。在此實例中,僅藉由執行第二VPGET4XD指令而產生之資料元素由第二VPGET4XD指令儲存至目的地向量暫存器2101,且將其儲存於目的地向量暫存器2101之上半部中(在與在目的地向量2203中相同的位置中)。第一VPGET4XD指令之結果在下半部目的地向量暫存器2101中保持未改變。因此,在執行第一及第二VPGET4XD指令之後,目的地向量暫存器可含有每次由此等VPGET4XD指令擷取八個的用於十六個源資料結構之所有X分量。
在一個實施例中,可執行額外VPGET4指令以每次擷取儲存於兩個源向量暫存器2101及2102中的資料結構之所有Y分量、Z分量或W分量。作為每一此指令之執行之結果,可將經擷取資料元素彼此緊鄰地儲存於目的地向量暫存器之一個半部中(取決於針對該指令所指定之目的地偏移參數)。藉由執行目標為相同資料結構分量(Y、Z或W分量)但具有不同目的地偏移值(0或8)之兩個VPGET4指令,可自來自四個源向量暫存器之高達十六個資料結構擷取相似分量。
圖22A至圖22D所說明的VPGET3及VPGET4指令之形式僅僅為此等指令可採取的許多形式之實例。在其他實施例中,VPGET3及VPGET4指令可採取多種其他形式中之任一者,其中指令修飾符值與指令參數值之不同組合包括於指令中且當調用VPGET3或VPGET4指令時被指定。舉例而言,若針對VPGET3或VPGET4指令指定合併遮蔽,則可保留對應於彼遮罩暫存器位元之資料元素在其他情況下將儲存至的目的地向量暫存器中之位置之內容。
圖23說明根據本發明之實施例的用於自不同源暫存器中之資料結構取得相同類型之多重向量元素之實例方法2300。方法2300可由圖1至圖22所展示之元件中之任一者實施。方法2300可由任何合適準則起始且可在任何合適點起始操作。在一個實施例中,方法2300可在2305處起始操作。方法2300可包括比所說明之步驟更多或更少的步驟。此外,方法2300可按與下文所說明之次序不同的次序執行其步驟。方法2300可在任何合適步驟處終止。此外,方法2300可在任何合適步驟處重複操作。方法2300可與方法2300之其他步驟並行地或與其他方法之步驟並行地執行其步驟中之任一者。此外,可將方法2300執行多次,以執行自不同源暫存器中之資料結構取得相同類型之多重向量元素。
在2305處,在一個實施例中,可接收及解碼用以執行用以自儲存於三個源向量暫存器中之資料結構取得資料元素之子集之操作的指令(例如,VPGET3或VPGET4指令)。在2310處,可將指令及指令之一或多個參數引導至SIMD執行單元以供執行。在一些實施例中,指令參數可包括三個源向量暫存器之識別符,其中之至少兩者含有封裝資料、目的地向量暫存器(其可與第一源向量暫存器相同)之識別符、應擷取每一資料結構之資料元素中之哪些的指示、由封裝資料表示之每一資料結構中的資料元素之大小之指示、由封裝資料表示之每一資料結構中的資料元素之數目之指示、目的地偏移參數值、識別一特定遮罩暫存器之參數,或指定遮蔽類型之參數。
在2315處,可自儲存於第一源向量暫存器中之資料結構內之給定位置擷取資料元素之指定子集中的第一資料元素。在一個實施例中,指令之編碼(作業碼)可指示每一資料結構之第一、第二、第三或第四資料元素是否將由指令擷取。在一個實施例中,指令之編碼中的單一位元或欄位之值可指示三個或四個資料元素是否包括於資料元素將由指令擷取的資料結構中。
若(在2320處)判定對應於經擷取資料元素之目的地遮罩位元經設定或尚未針對VPGET3或VPGET4操作指定遮蔽,則在2325處,取決於針對該指令所指定之偏移參數(若有的話)之值,可將經擷取資料元素儲存於第一源/目的地向量暫存器中之下一可用位置中。在一個實施例中,可針對源向量暫存器中之每一資料元素(例如,針對待儲存於目的地向量暫存器中之每一資料元素)在經識別遮罩暫存器中存在一各別位元。在另一實施例中,可針對源向量暫存器中之每一通道或資料結構在經識別遮罩暫存器中存在一各別位元。在又一實施例中,可針對目的地向量暫存器中之每一通道在經識別遮罩暫存器中存在一各別位元。若(在2320處)判定對應於經擷取資料元素之目的地遮罩位元未經設定,且若(在2330處)判定指定零遮蔽,則在2335處,可將零儲存於目的地向量暫存器中在其他情況下將被儲存經擷取資料元素之位置中。若(在2320處)判定對應於經擷取資料元素之目的地遮罩位元未經設定,且若(在2330處)判定未指定零遮蔽(例如,若指定合併遮蔽,或既不指定零遮蔽亦不指定合併遮蔽),則在2340處,可保留當前儲存於目的地向量暫存器內在其他情況下將被儲存經擷取資料元素之位置中之值。
若在2350處判定在源資料之指定子集中存在待自源向量暫存器擷取之更多資料元素,則在2360處,可自源向量暫存器中之一者擷取來自三個源向量暫存器的源資料之指定子集中之下一資料元素。在此狀況下,可針對新擷取之資料元素重複2320至2340所說明的操作中之至少一些。在一個實施例中,可將2320至2360所說明之操作重複一或多次,以便自儲存於源向量暫存器中之資料結構擷取源資料之指定子集中之所有資料元素。舉例而言,可重複此等操作,直到已自源向量暫存器中之資料結構擷取給定類型之所有資料元素。一旦不存在待自源向量暫存器擷取之額外資料元素(如在2350處所判定),就可在2370處引退該指令。
在本發明之實施例中,可執行第一指令序列以在執行VPGET3或VPGET4指令之前將多個資料結構之資料元素預載入至源向量暫存器中。隨後,可執行包括多個VPGET3及VPGET4指令的第二指令序列以將不同類型之資料元素擷取至單獨向量暫存器中。用以針對VPGET3指令預載入資料的第一指令序列之一實例係由以下實例偽碼說明。在此實例中,假定在執行第一指令序列之前,將十六個XYZ型資料結構之資料元素儲存於記憶體中之相連位置中,作為X1Y1Z1、X2Y2Z2等等。 VPMOVD zmm3, [mem] //zmm3= x1y1z1x2y2z2…x5y5z5x6 VPMOVD zmm4, [mem+64] //zmm4= y6z6x7y7z7…x10y10z10x11y11 VPMOVD zmm5, [mem+128] //zmm5= z11x12y12z12…x16y16z16
在此實例中,使用三個向量移動指令以運用表示一共十六個XYZ型資料結構之資料元素來封裝三個延伸向量暫存器(ZMM3至ZMM5)中之每一者。更具體言之,使用此等向量移動指令以將記憶體中的各別資料結構之三個32位元值(一X分量、一Y分量及一Z分量)封裝至延伸向量暫存器中之一者中的96個位元中,或封裝至跨越延伸向量暫存器中之兩者的96個位元中。第二指令序列之實例係由以下實例偽碼說明。 VPMOVD zmm1, zmm3 VPGET3XD zmm1, zmm4, zmm5 //zmm1= x1...x16 VPMOVD zmm2, zmm3 VPGET3YD zmm2, zmm4, zmm5 //zmm2= y1...y16 VPGET3ZD zmm3, zmm4, zmm5 //zmm3= z1...z16
在此實例中,VPGET3指令之VPGET3D形式指定每一資料元素為32位元四倍字。在此實例中,一旦向量暫存器ZMM3至ZMM5已被封裝有表示十六個資料結構之資料元素,其就可充當用於三個VPGET3D指令之源向量暫存器。在此實例中,執行第一VPGET3D指令(在此狀況下,VPGET3XD指令)以自源向量暫存器擷取所有X分量且將其置放於目的地向量暫存器中。相似地,執行第二VPGET3D指令(在此狀況下,VPGET3YD指令)以自源向量暫存器擷取所有Y分量且將其置放於第二目的地向量暫存器中,且執行第三VPGET3D指令(在此狀況下,VPGET3ZD指令)以自源向量暫存器擷取所有Z分量且將其置放於第三目的地向量暫存器中。應注意,由於用於每一指令之第一源向量暫存器亦充當用於該指令之目的地向量暫存器,因此在執行該指令之前,目的地將寫入至的源向量暫存器之原始內容經複製至另一向量暫存器。作為此等三個指令之執行之結果,向量暫存器ZMM1至ZMM3中之每一者可儲存自源向量暫存器ZMM3至ZMM5擷取的相同類型之十六個資料元素(例如,分別為十六個X分量、十六個Y分量或十六個Z分量)。
圖24A及圖24B中說明向量GET3型操作之一個實例應用。更具體言之,圖24A說明根據本發明之實施例的用於利用多個向量GET3操作以獲得及排列來自不同源之多個資料結構之資料元素之實例方法2400。在此實例方法中,將三個源向量暫存器預載入有表示十六個資料結構之封裝資料元素,此後調用多個向量GET3指令以擷取不同類型之資料元素且將其儲存於單獨目的地向量暫存器中。方法2400可由圖1至圖22所展示之元件中之任一者實施。方法2400可由任何合適準則起始且可在任何合適點起始操作。在一個實施例中,方法2400可在2405處起始操作。方法2400可包括比所說明之步驟更多或更少的步驟。此外,方法2400可按與下文所說明之次序不同的次序執行其步驟。方法2400可在任何合適步驟處終止。此外,方法2400可在任何合適步驟處重複操作。方法2400可與方法2400之其他步驟並行地或與其他方法之步驟並行地執行其步驟中之任一者。此外,可將方法2400執行多次,以利用多個向量GET3操作以獲得及排列來自不同源之多個資料結構之資料元素。
在2405處,在一個實施例中,可開始執行包括多個延伸向量指令之指令串流。在2410處,可將三個512位元源向量暫存器載入有十六個三元素資料結構,使得將每一資料結構之32位元X、Y及Z分量共同地橫越三個源向量暫存器而彼此緊鄰地置放。每一資料結構中之三個資料元素可屬於不同類型。在一個實施例中,可將資料元素自記憶體載入至源向量暫存器中。在另一實施例中,可將資料元素自一般用途暫存器載入至源向量暫存器中。在又一實施例中,可將資料元素自其他向量暫存器載入至向量暫存器中。
在2415處,在一個實施例中,可將來自第一源向量暫存器之十六個最低階資料元素複製至用於VPGET3XD指令之第一源/目的地向量暫存器。在2420處,可執行VPGET3XD指令以自第一源/目的地暫存器中及第二及第三源向量暫存器中之每一資料結構擷取X分量,且將經擷取資料元素置放於第一源/目的地向量暫存器中。在2425處,在一個實施例中,可將來自第一源向量暫存器之十六個最低階資料元素複製至用於VPGET3YD指令之第二源/目的地向量暫存器。在2430處,可執行VPGET3YD指令以自第二源/目的地暫存器中及第二及第三源向量暫存器中之每一資料結構擷取Y分量,且將經擷取資料元素置放於第二源/目的地向量暫存器中。
在2435處,可執行VPGET3ZD指令以自第三源/目的地暫存器中及第二及第三源向量暫存器中之每一資料結構擷取Z分量,且將經擷取資料元素置放於第三源/目的地向量暫存器中。在此實例中,在執行方法2400之後,第一、第二及第三目的地向量暫存器中之每一者可儲存自在原始三個源向量暫存器中表示的十六個資料結構中之每一者內之相同位置擷取的相同類型之資料元素。
圖24B進一步說明圖24A所展示之實例方法2400。在此實例中,在執行上文所描述之向量指令序列之前,向量暫存器ZMM1 (2402)儲存十六個XYZ資料結構之資料元素之前三分之一,向量暫存器ZMM2 (2404)儲存十六個XYZ資料結構之資料元素之第二個三分之一,且向量暫存器ZMM3(2406)儲存十六個XYZ資料結構之剩餘資料元素。在執行圖24B所展示之指令序列之後,向量暫存器ZMM1 (2402)儲存十六個資料結構之X分量中的所有十六個,向量暫存器ZMM2 (2404)儲存十六個資料結構之Y分量中的所有十六個,且向量暫存器ZMM3(2406)儲存十六個資料結構之Z分量中的所有十六個。
用以針對VPGET4指令預載入資料的第一指令序列之一實例係由以下實例偽碼說明。在此實例中,假定在執行第一指令序列之前,將十六XYZW型資料結構之資料元素儲存於記憶體中之相連位置中,作為X1Y1Z1W1、X2Y2Z2W2等等。 VPMOVD zmm5, [mem] //zmm5= x1y1z1w1x2y2z2w2…x4y4z4w4 VPMOVD zmm6, [mem+64] //zmm6= x5y5z5w5…x8y8z8w8 VPMOVD zmm7, [mem+128] //zmm7= x9y9z9w9…x12y12z12w12 VPMOVD zmm8, [mem+192] //zmm8= x13y13z13w13…x16y16z16w16
在此實例中,使用四個向量移動指令以運用表示一共十六個XYZW型資料結構之資料元素來封裝四個延伸向量暫存器(ZMM5至ZMM8)中之每一者。更具體言之,此等向量移動指令用以將記憶體中的每一各別資料結構之四個32位元值(一X分量、一Y分量、一Z分量及一W分量)封裝至延伸向量暫存器中之一者中的128位元通道中。用於使用多個VPGET4指令來產生類似元素之向量的第二指令序列之實例係由以下實例偽碼說明。 VPGET4XD zmm1, zmm5, zmm6, 0 //zmm1= x1...x8, UUUUUUUU ====字母U意謂未使用之元素 VPGET4XD zmm1, zmm7, zmm8, 8 //zmm1= x1...x16 VPGET4YD zmm2, zmm5, zmm6, 0 //zmm2= y1...y8, UUUUUUUU VPGET4YD zmm2, zmm7, zmm8, 8 //zmm2= y1...y16 VPGET4ZD zmm3, zmm5, zmm6, 0 //zmm3= z1...z8, UUUUUUUU VPGET4ZD zmm3, zmm7, zmm8, 8 //zmm3= z1...z16 VPGET4WD zmm4, zmm5, zmm6, 0 //zmm4= w1...w8, UUUUUUUU VPGET4WD zmm4, zmm7, zmm8, 8 //zmm4= w1...w16
在此實例中,VPGET4指令之VPGET4D形式指定每一資料元素為32位元四倍字。在此實例中,一旦向量暫存器ZMM5至ZMM8已被封裝有表示十六個資料結構之資料元素,其就可充當用於四個VPGET4D指令之源向量暫存器。在此實例中,執行第一VPGET4D指令(在此狀況下,具有偏移0之VPGET4XD指令)以自前兩個源向量暫存器擷取所有X分量且將其置放於第一目的地向量暫存器之下半部中。隨後,執行第二VPGET4D指令(在此狀況下,具有偏移8之VPGET4XD指令)以自第三及第四源向量暫存器擷取所有X分量且將其置放於同一(第一)目的地向量暫存器之上半部中。相似地,執行第二對VPGET3D指令(在此狀況下,具有不同目的地偏移值之一對VPGET3YD指令)以自源向量暫存器擷取所有Y分量且分別將其置放於第二目的地向量暫存器之下半部及上半部中,執行第三對VPGET3D指令(在此狀況下,具有不同目的地偏移值之一對VPGET3ZD指令)以自源向量暫存器擷取所有Z分量且分別將其置放於第三目的地向量暫存器之下半部及上半部中,且執行第四對VPGET3D指令(在此狀況下,具有不同目的地偏移值之一對VPGET3WD指令)以自源向量暫存器擷取所有W分量且分別將其置放於第四目的地向量暫存器之下半部及上半部中。
在此實例中,由於用於每一指令之第一源向量暫存器亦充當用於指令之目的地向量暫存器,但目的地暫存器之僅半部受到每一指令影響,因此由每一對中之第一VPGET3D指令寫入至目的地向量暫存器中之每一者的結果資料可對該對中之第二VPGET3D指令之結果有影響。作為此等八個指令之執行之結果,向量暫存器ZMM1至ZMM4中之每一者可儲存自源向量暫存器ZMM5至ZMM8擷取的相同類型之十六個資料元素(例如,分別十六個X分量、十六個Y分量、十六個Z分量或十六個W分量)。
圖25A及圖25B中說明向量GET4型操作之一個實例應用。更具體言之,圖25A說明根據本發明之實施例的用於利用多個向量GET4操作以獲得及排列來自不同源之多個資料結構之資料元素之實例方法2500。在此實例方法中,將四個源向量暫存器預載入有表示十六個資料結構之封裝資料元素,此後調用多個向量GET4指令以擷取不同類型之資料元素且將其儲存於單獨目的地向量暫存器中。方法2500可由圖1至圖22所展示之元件中之任一者實施。方法2500可由任何合適準則起始且可在任何合適點起始操作。在一個實施例中,方法2500可在2505處起始操作。方法2500可包括比所說明之步驟更多或更少的步驟。此外,方法2500可按與下文所說明之次序不同的次序執行其步驟。方法2500可在任何合適步驟處終止。此外,方法2500可在任何合適步驟處重複操作。方法2500可與方法2500之其他步驟並行地或與其他方法之步驟並行地執行其步驟中之任一者。此外,可將方法2500執行多次,以利用多個向量GET4操作以獲得及排列來自不同源之多個資料結構之資料元素。
在2505處,在一個實施例中,可將四個源向量暫存器中之每一者載入有多個四元素資料結構,使得可將每一資料結構之32位元X、Y、Z及W資料元素彼此緊鄰地置放於四個源向量暫存器中之一者中。在2510處,在一個實施例中,可執行第一VPGET4XD指令以自第一及第二源向量暫存器中之資料結構擷取X分量且將其置放於第一源/目的地向量暫存器中之八個最低階位置(無偏移)中。在2515處,在一個實施例中,可執行第二VPGET4XD指令以自第三及第四源向量暫存器中之資料結構擷取X分量且將其置放於第一源/目的地向量暫存器中之八個最高階位置(具有偏移8)中。在2520處,可執行第一VPGET4YD指令以自第一及第二源向量暫存器中之資料結構擷取Y分量且將其置放於第二源/目的地向量暫存器中之八個最低階位置(無偏移)中。在2525處,在一個實施例中,可執行第二VPGET4YD指令以自第三及第四源向量暫存器中之資料結構擷取Y分量且將其置放於第二源/目的地向量暫存器中之八個最高階位置(具有偏移8)中。
在2530處,在一個實施例中,可執行第一VPGET4ZD指令以自第一及第二源向量暫存器中之資料結構擷取Z分量且將其置放於第三源/目的地向量暫存器中之八個最低階位置(無偏移)中。在2535處,在一個實施例中,可執行第二VPGET4ZD指令以自第三及第四源向量暫存器中之資料結構擷取Z分量且將其置放於第三源/目的地向量暫存器中之八個最高階位置(具有偏移8)中。在2540處,在一個實施例中,可執行第一VPGET4WD指令以自第一及第二源向量暫存器中之資料結構擷取W分量且將其置放於第四源/目的地向量暫存器中之八個最低階位置(無偏移)中。在2545處,在一個實施例中,可執行第二VPGET4WD指令以自第三及第四源向量暫存器中之資料結構擷取W分量且將其置放於第四源/目的地向量暫存器中之八個最高階位置(具有偏移8)中。
在此實例中,在執行方法2500之後,第一、第二、第三及第四目的地向量暫存器中之每一者可儲存自在原始四個源向量暫存器中表示的十六個資料結構中之每一者內之相同位置擷取的相同類型之資料元素。
圖25B進一步說明圖25A所展示之實例方法2500。在此實例中,在執行上文所描述之向量指令序列之前,向量暫存器ZMM5 (2502)儲存十六個XYZW資料結構中之前四個之資料元素,向量暫存器ZMM6(2504)儲存十六個XYZW資料結構中之第二個四個之資料元素,向量暫存器ZMM7(2506)儲存十六個XYZW資料結構中之接下來的四個,且向量暫存器ZMM8(2508)儲存十六個XYZW資料結構中之最後四個。在執行圖25B所展示之指令序列之後,向量暫存器ZMM1 (2512)儲存十六個資料結構之X分量中之所有十六個,向量暫存器ZMM2 (2514)儲存十六個資料結構之Y分量中之所有十六個,向量暫存器ZMM3(2516)儲存十六個資料結構之Z分量中之所有十六個,且向量暫存器ZMM4(2518)儲存十六個資料結構之W分量中之所有十六個。
在本發明之其他實施例中,可執行其他序列之VPGET3及/或VPGET4操作以自具有不同數目個資料元素的資料結構之集合擷取相同類型之資料元素之向量。在本發明之其他實施例中,可執行其他序列之VPGET3及/或VPGET4操作以自不同數目個資料結構擷取相同類型之資料元素之向量。在本發明之又其他實施例中,可執行其他序列之VPGET3及/或VPGET4操作以自具有各種步幅的資料結構之集合擷取相同類型之資料元素之向量。
雖然若干實例描述對儲存於延伸向量暫存器(ZMM暫存器)中之封裝資料元素進行操作的VPGET3或VPGET4指令之形式,但在其他實施例中,此等指令可對儲存於具有少於512個位元之向量暫存器中的封裝資料元素進行操作。舉例而言,若用於VPGET3或VPGET4指令之源及/或目的地向量包括256位元或更少,則VPGET3或VPGET4指令可對YMM暫存器或XMM暫存器進行操作。
在上文所描述之實例中之若干者中,每一分量類型之資料元素相對小(例如,32個位元),且存在足夠少的資料元素,使得其全部可儲存於為用於VPGET3或VPGET4指令之目的地向量暫存器的單一ZMM暫存器中。在其他實施例中,每一分量類型可存在足夠資料元素,使得(取決於資料元素之大小)其可填充多個ZMM目的地暫存器。舉例而言,可存在值為X值之多於512個位元、值為Y值之多於512個位元等等。在一個實施例中,可藉由多個VPGET3或VPGET4指令將所得資料結構之各別子集之組分分量封裝至多個ZMM暫存器中之每一者中。在其他實施例中,每一分量類型可存在足夠少的資料元素,使得(取決於資料元素之大小)其可適合於XMM或YMM目的地暫存器。
如以上實例中所說明,不同於可自源運算元採取資料且將其不變地儲存至目的地運算元之標準GET指令,本文中所描述之VPGET3及VPGET4操作可用以擷取資料元素且排列一起儲存於源向量暫存器內之多個資料結構之資料元素,以便在將資料儲存至其目的地運算元之前分出表示每一資料結構之不同分量的資料元素。以上若干實例描述使用VPGET3及VPGET4指令以擷取表示記憶體中的多個資料結構(諸如陣列)之組分分量的資料元素。在其他實施例中,更一般而言,此等操作可用以自源向量暫存器內之不同位置擷取封裝資料元素,且當將向量暫存器之內容儲存至目的地位置時取決於供擷取封裝資料元素之位置來排列封裝資料元素,而不管該等資料元素彼此如何(或甚至是否)相關。
本文中所揭示之機制之實施例可以硬體、軟體、韌體或此等實施方法之組合予以實施。本發明之實施例可被實施為執行於可規劃系統上之電腦程式或程式碼,該可規劃系統包含至少一個處理器、一儲存系統(包括依電性及非依電性記憶體及/或儲存元件)、至少一個輸入裝置,及至少一個輸出裝置。
可將程式碼應用於輸入指令以執行本文中所描述之功能且產生輸出資訊。可以已知方式將輸出資訊應用於一或多個輸出裝置。出於此應用之目的,處理系統可包括具有諸如數位信號處理器(DSP)、微控制器、特殊應用積體電路(ASIC)或微處理器之處理器的任何系統。
可以高階程序性或物件導向式規劃語言實施程式碼以與處理系統通訊。視需要,亦可以組譯語言或機器語言實施程式碼。事實上,本文中所描述之機制之範疇並不限於任一特定規劃語言。在任何狀況下,該語言可為編譯或解譯語言。
可由儲存於機器可讀媒體上的表示處理器內之各種邏輯的代表性指令實施至少一實施例之一或多個態樣,該等代表性指令在由機器讀取時致使該機器製造用以執行本文中所描述之技術的邏輯。被稱為「IP核心」之此等表示可儲存於有形機器可讀媒體上,且供應至各種消費者或製造設施以載入至實際上製造該邏輯或處理器之製造機器中。
此等機器可讀儲存媒體可包括但不限於由機器或裝置製造或形成之物品的非暫時性有形配置,包括儲存媒體,諸如硬碟、包括軟碟的任何其他類型之光碟、光學光碟、緊密光碟唯讀記憶體(CD-ROM)、可重寫緊密光碟(CD-RW)及磁光碟、諸如唯讀記憶體(ROM)之半導體裝置、諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)之隨機存取記憶體(RAM)、可抹除可規劃唯讀記憶體(EPROM)、快閃記憶體、電可抹除可規劃唯讀記憶體(EEPROM)、磁卡或光卡,或適合於儲存電子指令的任何其他類型之媒體。
因此,本發明之實施例亦可包括含有指令或含有界定本文中所描述之結構、電路、設備、處理器及/或系統特徵之設計資料(諸如硬體描述語言(HDL))的非暫時性有形機器可讀媒體。此等實施例亦可被稱作程式產品。
在一些狀況下,指令轉換器可用以將指令自源指令集轉換至目標指令集。舉例而言,指令轉換器可將指令轉譯(例如,使用靜態二進位轉譯、包括動態編譯之動態二進位轉譯)、轉化、模仿或以其他方式轉換至待由核心處理之一或多個其他指令。指令轉換器可以軟體、硬體、韌體或其組合予以實施。指令轉換器可在處理器上、在處理器外,或部分地在處理器上且部分地在處理器外。
因此,揭示用於執行根據至少一個實施例之一或多個指令之技術。雖然已描述且在隨附圖式中展示某些例示性實施例,但應理解,此等實施例僅僅說明而不限定其他實施例,且此等實施例並不限於所展示及描述之特定構造及配置,此係因為一般熟習此項技術者在研究本發明後就可想到各種其他修改。在諸如此技術之技術領域(其中增長快速且另外進步不易於預見)中,在不脫離本發明之原理或隨附申請專利範圍之範疇的情況下,可如藉由實現技術進步所促進而易於對所揭示實施例之配置及細節進行修改。
本發明之一些實施例包括一種處理器。在此等實施例中之至少一些中,該處理器可包括用以接收一指令之一前端、用以解碼該指令之一解碼器、用以執行該指令之一核心,以及用以引退該指令之一引退單元。為了執行該指令,該核心可包括:用以儲存至少兩個元組之資料元素的一第一源向量暫存器,每一元組用以包括至少三個資料元素;用以儲存至少兩個元組之資料元素的一第二源向量暫存器,每一元組用以包括至少三個資料元素;用以自待儲存於該第一源向量暫存器中之每一元組內之一特定位置擷取一各別資料元素的一第一邏輯,該特定位置係取決於用於該指令之一編碼;用以自待儲存於該第二源向量暫存器中之每一元組內之該特定位置擷取一各別資料元素的一第二邏輯;用以將待自該第一源向量暫存器擷取之該等資料元素儲存於一目的地向量暫存器中的一第三邏輯;以及用以將待自該第二源向量暫存器擷取之該等資料元素儲存於該目的地向量暫存器中的一第四邏輯。結合以上實施例中之任一者,該核心可進一步包括:用以儲存至少兩個元組之資料元素的一第三源向量暫存器,每一元組用以包括至少三個資料元素;用以自待儲存於該第三源向量暫存器中之每一元組內之該特定位置擷取一各別資料元素的一第五邏輯;以及用以將待自該第三源向量暫存器擷取之該等資料元素儲存於該目的地向量暫存器中的一第六邏輯。在以上實施例中之任一者中,待儲存於該第一源向量暫存器中及該第二源向量暫存器中之每一元組用以表示一資料結構,且該資料結構用以包括不同類型之至少三個資料元素。在以上實施例中之任一者中,待儲存於該第一源向量暫存器中及該第二源向量暫存器中之每一元組用以包括不同類型之三個資料元素,待儲存於每一元組內之相同位置中之資料元素將屬於相同類型,且用於該指令之該編碼用以指定待擷取之該等資料元素之該類型。結合以上實施例中之任一者,待儲存於該第一源向量暫存器中及該第二源向量暫存器中之每一元組用以包括不同類型之四個資料元素,待儲存於每一元組內之相同位置中之資料元素將屬於相同類型,用於該指令之該編碼用以指定每一元組內將供擷取該等資料元素之該特定位置,且該第三邏輯用以將待自該第一源向量暫存器擷取之該等資料元素儲存於該目的地向量暫存器中在取決於待針對該指令所指定之一偏移參數之一位置處開始的相連位置中。在以上實施例中之任一者中,該目的地向量暫存器可為該等源向量暫存器中之一者。在以上實施例中之任一者中,該第一源暫存器亦可為該目的地暫存器。結合以上實施例中之任一者,該核心可進一步包括一第五邏輯,該第五邏輯用以當將待自該第一源向量暫存器及該第二源向量暫存器擷取之該等資料元素儲存於該目的地向量暫存器中時應用一遮蔽操作,使得對於在該指令中所識別之一遮罩暫存器中經設定的一或多個位元中之每一者,待儲存於該目的地向量暫存器中之一資料元素將儲存至該目的地向量暫存器,且對於在該指令中所識別之該遮罩暫存器中未經設定的一或多個位元中之每一者,在其他情況下將被儲存至該目的地向量暫存器之一資料元素將不儲存至該目的地向量暫存器。結合以上實施例中之任一者,該核心可包括一第五邏輯,該第五邏輯用以當將待自該第一源向量暫存器及該第二源向量暫存器擷取之該等資料元素儲存於該目的地向量暫存器中時應用一遮蔽操作,使得對於在該指令中所識別之一遮罩暫存器中未經設定的每一位元,該遮蔽操作運用零來替換在其他情況下將被儲存於該目的地向量中之一資料元素。結合以上實施例中之任一者,該核心可包括一第五邏輯,該第五邏輯用以當將待自該第一源向量暫存器及該第二源向量暫存器擷取之該等資料元素儲存於該目的地向量暫存器中時應用一遮蔽操作,使得對於在該指令中所識別之一遮罩暫存器中未經設定的每一位元,該遮蔽操作保留該目的地向量暫存器中在其他情況下將被儲存一資料元素之該位置中之當前值。結合以上實施例中之任一者,該核心可包括用以取決於針對該指令所指定之一參數值而判定每一元組中之資料元素之數目的一第五邏輯。結合以上實施例中之任一者,該核心可包括用以取決於針對該指令所指定之一參數值而判定儲存於該第一源向量暫存器內供擷取資料元素之元組之數目的一第五邏輯。結合以上實施例中之任一者,該核心可包括用以取決於針對該指令所指定之一參數值而判定待自儲存於該第一源向量暫存器內之該等元組中之每一者擷取的該等資料元素之大小的一第五邏輯。在以上實施例中之任一者中,該核心可包括用以實施該指令之執行的一單指令多資料(SIMD)共處理器。在以上實施例中之任一者中,該處理器可包括一向量暫存器檔案,其包括該源向量暫存器。
本發明之一些實施例包括一種方法。在此等實施例中之至少一些中,該方法可包括在一處理器中進行以下操作:接收一第一指令;解碼該第一指令;執行該第一指令;以及引退該第一指令。執行該第一指令可包括:自儲存於一第一源向量暫存器中之多個資料結構中之每一者內之一特定位置擷取一各別資料元素,該特定位置係取決於用於該第一指令之一編碼;自儲存於一第二源向量暫存器中之多個資料結構中之每一者內之該特定位置擷取一各別資料元素;將自該第一源向量暫存器擷取之該等資料元素儲存於一第一目的地向量暫存器中;將自該第二源向量暫存器擷取之該等資料元素儲存於該第一目的地向量暫存器中;以及引退該指令。結合以上實施例中之任一者,該方法可進一步包括自儲存於該第三源向量暫存器中之多個資料結構中之每一者內之該特定位置擷取一各別資料元素,以及將自該第三源向量暫存器擷取之該等資料元素儲存於該第一目的地向量暫存器中。在以上實施例中之任一者中,儲存於該第一源向量暫存器中及該第二源向量暫存器中之每一資料結構可包括不同類型之三個資料元素,儲存於每一資料結構內之相同位置中之資料元素可屬於相同類型,且用於該指令之該編碼可指定待擷取之該等資料元素之該類型。在以上實施例中之任一者中,儲存於該第一源向量暫存器中及該第二源向量暫存器中之每一資料結構可包括不同類型之四個資料元素,儲存於每一資料結構內之相同位置中之資料元素可屬於相同類型,用於該指令之該編碼可指定每一資料結構內將供擷取該等資料元素之該特定位置,且儲存自該第一及該第三源向量暫存器擷取之該等資料元素可包括將自該第一及該第三源向量暫存器擷取之該等資料元素儲存於該第一目的地向量暫存器中在取決於針對該第一指令所指定之一偏移參數之一位置處開始的相連位置中。在以上實施例中之任一者中,該目的地向量暫存器可為該等源向量暫存器中之一者。在以上實施例中之任一者中,該第一源暫存器亦可為該目的地暫存器。結合以上實施例中之任一者,該方法可包括當將該目的地向量儲存至該目的地向量暫存器時將一遮蔽操作應用於該目的地向量,使得對於在該指令中所識別之一遮罩暫存器中經設定的一或多個位元中之每一者,待儲存於該目的地向量暫存器中之一資料元素將儲存至該目的地向量暫存器,且對於在該指令中所識別之該遮罩暫存器中未經設定的一或多個位元中之每一者,在其他情況下將被儲存至該目的地向量暫存器之一資料元素將不儲存至該目的地向量暫存器。結合以上實施例中之任一者,該方法可包括當將該目的地向量儲存至該目的地向量暫存器時將一遮蔽操作應用於該目的地向量,使得對於在該第一指令中所識別之一遮罩暫存器中未經設定的每一位元,該遮蔽操作運用零來替換彼此緊鄰地置放於該目的地向量中之兩個或多於兩個資料元素。結合以上實施例中之任一者,該方法可包括當將該目的地向量儲存至該目的地向量暫存器時將一遮蔽操作應用於該目的地向量,使得對於在該第一指令中所識別之一遮罩暫存器中未經設定的每一位元,該遮蔽操作保留該目的地向量暫存器中彼此緊鄰地置放於該目的地向量中之兩個或多於兩個資料元素在其他情況下將被寫入之位置中之當前值。結合以上實施例中之任一者,該方法可包括取決於針對該第一指令所指定之一參數值而判定該等資料結構中之每一者中之資料元素之數目。結合以上實施例中之任一者,該方法可包括取決於針對該第一指令所指定之一參數值而判定該第一源向量暫存器內供擷取資料元素之資料結構之數目。結合以上實施例中之任一者,該方法可包括取決於針對該第一指令所指定之一參數值而判定待自儲存於該第一源向量暫存器內之該等資料結構中之每一者擷取的該等資料元素之大小。在以上實施例中之任一者中,該處理器可包括實施該第一指令之執行的一單指令多資料(SIMD)共處理器。結合以上實施例中之任一者,該方法可進一步包括在執行該第一指令之前進行以下操作:執行一第二指令,包括將多個資料結構之資料元素載入至該第一源向量暫存器中,每一資料結構包括不同類型之三個資料元素;執行一第三指令,包括將多個資料結構之資料元素載入至該第二源向量暫存器中,每一資料結構包括不同類型之三個資料元素;以及執行一第四指令,包括將多個資料結構之資料元素載入至一第三源向量暫存器中,每一資料結構包括不同類型之三個資料元素。在以上實施例中之任一者中,執行該第一指令可包括自儲存於該三個源向量暫存器中之該等資料結構中之每一者內之該特定位置擷取一第一類型之一各別資料元素,以及將該第一類型之該等經提取資料元素儲存於該第一目的地向量暫存器中。結合以上實施例中之任一者,該方法可進一步包括在執行該第一指令之後進行以下操作:執行一第五指令,包括自儲存於該三個源向量暫存器中之該等資料結構中之每一者內的取決於用於該第五指令之一編碼之一位置擷取一第二類型之一各別資料元素,且將該第二類型之該等資料元素儲存於一第二目的地向量暫存器中;以及執行一第六指令,包括自儲存於該三個源向量暫存器中之該等資料結構中之每一者內的取決於用於該第六指令之一編碼之一位置擷取一第三類型之一各別資料元素,且將該第三類型之該等資料元素儲存於一第三目的地向量暫存器中。結合以上實施例中之任一者,該方法可進一步包括在執行該第一指令之前進行以下操作:執行一第二指令,包括將多個資料結構之資料元素載入至該第一源向量暫存器中,每一資料結構包括不同類型之四個資料元素;執行一第三指令,包括將多個資料結構之資料元素載入至該第二源向量暫存器中,每一資料結構包括不同類型之四個資料元素;以及執行一第四指令,包括將多個資料結構之資料元素載入至一第三源向量暫存器中,每一資料結構包括不同類型之四個資料元素;以及執行一第五指令,包括將多個資料結構之資料元素載入至一第四源向量暫存器中,每一資料結構包括不同類型之四個資料元素。在以上實施例中之任一者中,執行該第一指令可包括自儲存於該第一及該第二源向量暫存器中之該等資料結構中之每一者內之該特定位置擷取一第一類型之一各別資料元素,以及將自該第一及該第二源向量暫存器擷取的該第一類型之該等資料元素儲存於該第一目的地向量暫存器之一低階部分中。結合以上實施例中之任一者,該方法可進一步包括在執行該第一指令之後進行以下操作:執行一第六指令,包括自儲存於該第三及該第四源向量暫存器中之該等資料結構中之每一者內之該特定位置擷取該第一類型之一各別資料元素,以及將自該第三及該第四源向量暫存器擷取的該第一類型之該等資料元素儲存於該第一目的地向量暫存器之一高階部分中,且對於一第二資料元素類型、一第三資料元素類型及一第四資料元素類型中之每一給定者,執行一各別指令對。執行該指令對中之該第一指令可包括自儲存於該第一及該第二源向量暫存器中之該等資料結構中之每一者內的取決於用於該指令對中之該第一指令之一編碼之一位置擷取該給定資料元素類型之一各別資料元素,將自該第一及該第二源向量暫存器擷取的該給定類型之該等資料元素儲存於用於該給定資料元素類型之一目的地向量暫存器之一低階部分中。執行該指令對中之該第二指令可包括自儲存於該第三及該第四源向量暫存器中之該等資料結構中之每一者內的取決於用於該指令對中之該第二指令之該第二指令之一編碼之一位置擷取該給定資料元素類型之一各別資料元素,以及將自該第三及該第四源向量暫存器擷取的該給定類型之該等資料元素儲存於用於該給定資料元素類型之該目的地向量暫存器之一高階部分中。
本發明之一些實施例包括一種系統。在此等實施例中之至少一些中,該系統可包括用以接收一指令之一前端、用以解碼該指令之一解碼器、用以執行該指令之一核心,以及用以引退該指令之一引退單元。為了執行該指令,該核心可包括:用以儲存至少兩個元組之資料元素的一第一源向量暫存器,每一元組用以包括至少三個資料元素;用以儲存至少兩個元組之資料元素的一第二源向量暫存器,每一元組用以包括至少三個資料元素;用以自待儲存於該第一源向量暫存器中之每一元組內之一特定位置擷取一各別資料元素的一第一邏輯,該特定位置係取決於用於該指令之一編碼;用以自待儲存於該第二源向量暫存器中之每一元組內之該特定位置擷取一各別資料元素的一第二邏輯;用以將待自該第一源向量暫存器擷取之該等資料元素儲存於一目的地向量暫存器中的一第三邏輯;以及用以將待自該第二源向量暫存器擷取之該等資料元素儲存於該目的地向量暫存器中的一第四邏輯。結合以上實施例中之任一者,該核心可進一步包括:用以儲存至少兩個元組之資料元素的一第三源向量暫存器,每一元組用以包括至少三個資料元素;用以自待儲存於該第三源向量暫存器中之每一元組內之該特定位置擷取一各別資料元素的一第五邏輯;以及用以將待自該第三源向量暫存器擷取之該等資料元素儲存於該目的地向量暫存器中的一第六邏輯。在以上實施例中之任一者中,待儲存於該第一源向量暫存器中及該第二源向量暫存器中之每一元組用以表示一資料結構,且該資料結構用以包括不同類型之至少三個資料元素。在以上實施例中之任一者中,待儲存於該第一源向量暫存器中及該第二源向量暫存器中之每一元組用以包括不同類型之三個資料元素,待儲存於每一元組內之相同位置中之資料元素將屬於相同類型,且用於該指令之該編碼用以指定待擷取之該等資料元素之該類型。結合以上實施例中之任一者,待儲存於該第一源向量暫存器中及該第二源向量暫存器中之每一元組用以包括不同類型之四個資料元素,待儲存於每一元組內之相同位置中之資料元素將屬於相同類型,用於該指令之該編碼用以指定每一元組內將供擷取該等資料元素之該特定位置,且該第三邏輯用以將待自該第一源向量暫存器擷取之該等資料元素儲存於該目的地向量暫存器中在取決於待針對該指令所指定之一偏移參數之一位置處開始的相連位置中。在以上實施例中之任一者中,該目的地向量暫存器為該等源向量暫存器中之一者。在以上實施例中之任一者中,該第一源暫存器亦為該目的地暫存器。結合以上實施例中之任一者,該核心可進一步包括一第五邏輯,該第五邏輯用以當將待自該第一源向量暫存器及該第二源向量暫存器擷取之該等資料元素儲存於該目的地向量暫存器中時應用一遮蔽操作,使得對於在該指令中所識別之一遮罩暫存器中經設定的一或多個位元中之每一者,待儲存於該目的地向量暫存器中之一資料元素將儲存至該目的地向量暫存器,且對於在該指令中所識別之該遮罩暫存器中未經設定的一或多個位元中之每一者,在其他情況下將被儲存至該目的地向量暫存器之一資料元素將不儲存至該目的地向量暫存器。結合以上實施例中之任一者,該核心可包括一第五邏輯,該第五邏輯用以當將待自該第一源向量暫存器及該第二源向量暫存器擷取之該等資料元素儲存於該目的地向量暫存器中時應用一遮蔽操作,使得對於在該指令中所識別之一遮罩暫存器中未經設定的每一位元,該遮蔽操作運用零來替換在其他情況下將被儲存於該目的地向量中之一資料元素。結合以上實施例中之任一者,該核心可包括一第五邏輯,該第五邏輯用以當將待自該第一源向量暫存器及該第二源向量暫存器擷取之該等資料元素儲存於該目的地向量暫存器中時應用一遮蔽操作,使得對於在該指令中所識別之一遮罩暫存器中未經設定的每一位元,該遮蔽操作保留該目的地向量暫存器中在其他情況下將儲存一資料元素之該位置中之當前值。結合以上實施例中之任一者,該核心可包括用以取決於針對該指令所指定之一參數值而判定每一元組中之資料元素之數目的一第五邏輯。結合以上實施例中之任一者,該核心可包括用以取決於針對該指令所指定之一參數值而判定儲存於該第一源向量暫存器內供擷取資料元素之元組之數目的一第五邏輯。結合以上實施例中之任一者,該核心可包括用以取決於針對該指令所指定之一參數值而判定待自儲存於該第一源向量暫存器內之該等元組中之每一者擷取的該等資料元素之大小的一第五邏輯。在以上實施例中之任一者中,該核心可包括用以實施該指令之執行的一單指令多資料(SIMD)共處理器。在以上實施例中之任一者中,該系統可包括一處理器。在以上實施例中之任一者中,該系統可包括一向量暫存器檔案,其包括該源向量暫存器。
本發明之一些實施例包括一種用於執行指令之系統。在此等實施例中之至少一些中,該系統可包括用於進行以下操作的構件:接收一第一指令;解碼該第一指令;執行該第一指令;以及引退該第一指令。該用於執行該第一指令的構件可包括:用於自儲存於一第一源向量暫存器中之多個資料結構中之每一者內之一特定位置擷取一各別資料元素的構件,該特定位置係取決於用於該第一指令之一編碼;用於自儲存於一第二源向量暫存器中之多個資料結構中之每一者內之該特定位置擷取一各別資料元素的構件;用於將自該第一源向量暫存器擷取之該等資料元素儲存於一第一目的地向量暫存器中的構件;以及用於將自該第二源向量暫存器擷取之該等資料元素儲存於該第一目的地向量暫存器中的構件。結合以上實施例中之任一者,該系統可進一步包括用於自儲存於該第三源向量暫存器中之多個資料結構中之每一者內之該特定位置擷取一各別資料元素的構件,以及用於將自該第三源向量暫存器擷取之該等資料元素儲存於該第一目的地向量暫存器中的構件。在以上實施例中之任一者中,儲存於該第一源向量暫存器中及該第二源向量暫存器中之每一資料結構可包括不同類型之三個資料元素,儲存於每一資料結構內之相同位置中之資料元素可屬於相同類型,且用於該指令之該編碼可指定待擷取之該等資料元素之該類型。在以上實施例中之任一者中,儲存於該第一源向量暫存器中及該第二源向量暫存器中之每一資料結構可包括不同類型之四個資料元素,儲存於每一資料結構內之相同位置中之資料元素可屬於相同類型,用於該指令之該編碼可指定每一資料結構內將供擷取該等資料元素之該特定位置,且儲存自該第一及該第三源向量暫存器擷取之該等資料元素可包括將自該第一及該第三源向量暫存器擷取之該等資料元素儲存於該第一目的地向量暫存器中在取決於針對該第一指令所指定之一偏移參數之一位置處開始的相連位置中。在以上實施例中之任一者中,該目的地向量暫存器可為該等源向量暫存器中之一者。在以上實施例中之任一者中,該第一源暫存器亦可為該目的地暫存器。結合以上實施例中之任一者,該系統可包括用於進行以下操作的構件:當將該目的地向量儲存至該目的地向量暫存器時將一遮蔽操作應用於該目的地向量,使得對於在該指令中所識別之一遮罩暫存器中經設定的一或多個位元中之每一者,待儲存於該目的地向量暫存器中之一資料元素將儲存至該目的地向量暫存器,且對於在該指令中所識別之該遮罩暫存器中未經設定的一或多個位元中之每一者,在其他情況下將被儲存至該目的地向量暫存器之一資料元素將不儲存至該目的地向量暫存器。結合以上實施例中之任一者,該系統可包括用於進行以下操作的構件:當將該目的地向量儲存至該目的地向量暫存器時將一遮蔽操作應用於該目的地向量,使得對於在該第一指令中所識別之一遮罩暫存器中未經設定的每一位元,該遮蔽操作運用零來替換彼此緊鄰地置放於該目的地向量中之兩個或多於兩個資料元素。結合以上實施例中之任一者,該系統可包括用於進行以下操作的構件:當將該目的地向量儲存至該目的地向量暫存器時將一遮蔽操作應用於該目的地向量,使得對於在該第一指令中所識別之一遮罩暫存器中未經設定的每一位元,該遮蔽操作保留該目的地向量暫存器中彼此緊鄰地置放於該目的地向量中之兩個或多於兩個資料元素在其他情況下將被寫入之位置中之當前值。結合以上實施例中之任一者,該系統可包括用於取決於針對該第一指令所指定之一參數值而判定該等資料結構中之每一者中之資料元素之數目的構件。結合以上實施例中之任一者,該系統可包括用於取決於針對該第一指令所指定之一參數值而判定該第一源向量暫存器內供擷取資料元素之資料結構之數目的構件。結合以上實施例中之任一者,該系統可包括用於取決於針對該第一指令所指定之一參數值而判定待自儲存於該第一源向量暫存器內之該等資料結構中之每一者擷取的該等資料元素之大小的構件。在以上實施例中之任一者中,該處理器可包括實施該第一指令之執行的一單指令多資料(SIMD)共處理器。結合以上實施例中之任一者,該系統可進一步包括:用於在執行該第一指令之前執行一第二指令的構件,包括用於將多個資料結構之資料元素載入至該第一源向量暫存器中的構件,每一資料結構包括不同類型之三個資料元素;用於執行一第三指令的構件,包括用於將多個資料結構之資料元素載入至該第二源向量暫存器中的構件,每一資料結構包括不同類型之三個資料元素;以及用於執行一第四指令的構件,包括用於將多個資料結構之資料元素載入至一第三源向量暫存器中的構件,每一資料結構包括不同類型之三個資料元素。在以上實施例中之任一者中,該用於執行該第一指令的構件可包括用於自儲存於該三個源向量暫存器中之該等資料結構中之每一者內之該特定位置擷取一第一類型之一各別資料元素的構件,以及用於將該第一類型之該等經提取資料元素儲存於該第一目的地向量暫存器中的構件。結合以上實施例中之任一者,該系統可進一步包括:用於在執行該第一指令之後執行一第五指令的構件,包括用於自儲存於該三個源向量暫存器中之該等資料結構中之每一者內的取決於用於該第五指令之一編碼之一位置擷取一第二類型之一各別資料元素的構件,以及用於將該第二類型之該等資料元素儲存於一第二目的地向量暫存器中的構件;以及用於執行一第六指令的構件,包括用於自儲存於該三個源向量暫存器中之該等資料結構中之每一者內的取決於用於該第六指令之一編碼之一位置擷取一第三類型之一各別資料元素的構件,以及用於將該第三類型之該等資料元素儲存於一第三目的地向量暫存器中的構件。結合以上實施例中之任一者,該系統可進一步包括:用於在執行該第一指令之前執行一第二指令的構件,包括用於將多個資料結構之資料元素載入至該第一源向量暫存器中的構件,每一資料結構包括不同類型之四個資料元素;用於執行一第三指令的構件,包括用於將多個資料結構之資料元素載入至該第二源向量暫存器中的構件,每一資料結構包括不同類型之四個資料元素;以及用於執行一第四指令的構件,包括用於將多個資料結構之資料元素載入至一第三源向量暫存器中的構件,每一資料結構包括不同類型之四個資料元素;以及用於執行一第五指令的構件,包括將多個資料結構之資料元素載入至一第四源向量暫存器中,每一資料結構包括不同類型之四個資料元素。在以上實施例中之任一者中,該用於執行該第一指令的構件可包括用於自儲存於該第一及該第二源向量暫存器中之該等資料結構中之每一者內之該特定位置擷取一第一類型之一各別資料元素的構件,以及用於將自該第一及該第二源向量暫存器擷取的該第一類型之該等資料元素儲存於該第一目的地向量暫存器之一低階部分中的構件。結合以上實施例中之任一者,該系統可進一步包括用於在執行該第一指令之後執行一第六指令的構件,包括用於自儲存於該第三及該第四源向量暫存器中之該等資料結構中之每一者內之該特定位置擷取該第一類型之一各別資料元素的構件,以及用於將自該第三及該第四源向量暫存器擷取的該第一類型之該等資料元素儲存於該第一目的地向量暫存器之一高階部分中的構件,且對於一第二資料元素類型、一第三資料元素類型及一第四資料元素類型中之每一給定者,用於執行一各別指令對的構件。該用於執行該指令對中之該第一指令的構件可包括用於自儲存於該第一及該第二源向量暫存器中之該等資料結構中之每一者內的取決於用於該指令對中之該第一指令之一編碼之一位置擷取該給定資料元素類型之一各別資料元素的構件,以及用於將自該第一及該第二源向量暫存器擷取的該給定類型之該等資料元素儲存於用於該給定資料元素類型之一目的地向量暫存器之一低階部分中的構件。該用於執行該指令對中之該第二指令的構件可包括用於自儲存於該第三及該第四源向量暫存器中之該等資料結構中之每一者內的取決於用於該指令對中之該第二指令之該第二指令之一編碼之一位置擷取該給定資料元素類型之一各別資料元素的構件,以及用於將自該第三及該第四源向量暫存器擷取的該給定類型之該等資料元素儲存於用於該給定資料元素類型之該目的地向量暫存器之一高階部分中的構件。
100‧‧‧電腦系統102、200、500、610、615、1000、1215、1710、1804‧‧‧處理器104‧‧‧層級1 (L1)內部快取記憶體106、145、164、208、210、1926‧‧‧暫存器檔案108、142、162、462、1816‧‧‧執行單元109、143‧‧‧封裝指令集110‧‧‧處理器匯流排112‧‧‧圖形控制器/圖形卡114‧‧‧加速圖形埠(AGP)互連件116‧‧‧記憶體控制器集線器(MCH)118‧‧‧記憶體介面119‧‧‧指令120、640、732、734、1140‧‧‧記憶體121‧‧‧資料122‧‧‧專屬集線器介面匯流排123‧‧‧舊版I/O控制器124‧‧‧資料儲存體125‧‧‧使用者輸入介面126‧‧‧無線收發器127‧‧‧串列擴展埠128‧‧‧韌體集線器(快閃BIOS)129‧‧‧音訊控制器130‧‧‧I/O控制器集線器(ICH)134‧‧‧網路控制器140‧‧‧資料處理系統/電腦系統141‧‧‧匯流排144、165、165B、1922‧‧‧解碼器146‧‧‧同步動態隨機存取記憶體(SDRAM)控制147‧‧‧靜態隨機存取記憶體(SRAM)控制148‧‧‧叢發快閃記憶體介面149‧‧‧個人電腦記憶體卡國際協會(PCMCIA)/緊密快閃(CF)卡控制150‧‧‧液晶顯示器(LCD)控制151‧‧‧直接記憶體存取(DMA)控制器152‧‧‧替代性匯流排主控器介面153‧‧‧I/O匯流排154‧‧‧I/O橋接器155‧‧‧通用非同步接收器/傳輸器(UART)156‧‧‧通用串列匯流排(USB)157‧‧‧藍芽無線UART158‧‧‧I/O擴展介面159、170‧‧‧處理核心160‧‧‧資料處理系統161、1910‧‧‧SIMD共處理器163‧‧‧指令集166、1920‧‧‧主處理器167、506、572、574、1525、1532、1924‧‧‧快取記憶體168‧‧‧輸入/輸出系統169‧‧‧無線介面171、1915‧‧‧共處理器匯流排201‧‧‧有序前端202‧‧‧快速排程器/uop排程器203‧‧‧無序執行引擎204‧‧‧慢速/一般浮點排程器/uop排程器205‧‧‧整數/浮點uop佇列206‧‧‧簡單浮點排程器/uop排程器207、234‧‧‧uop佇列209‧‧‧記憶體排程器211‧‧‧執行區塊212、214‧‧‧位址產生單元(AGU)/執行單元215‧‧‧分配器/暫存器重新命名器216、218‧‧‧快速ALU/執行單元220‧‧‧慢速ALU/執行單元222‧‧‧浮點ALU/執行單元224‧‧‧浮點移動單元/執行單元226‧‧‧指令預提取器228‧‧‧指令解碼器230‧‧‧追蹤快取記憶體232‧‧‧微碼ROM310‧‧‧封裝位元組320‧‧‧封裝字330‧‧‧封裝雙字(dword)341‧‧‧封裝半342‧‧‧封裝單343‧‧‧封裝雙344‧‧‧無正負號封裝位元組表示345‧‧‧有正負號封裝位元組表示346‧‧‧無正負號封裝字表示347‧‧‧有正負號封裝字表示348‧‧‧無正負號封裝雙字表示349‧‧‧有正負號封裝雙字表示360‧‧‧格式361、362、383、384、387、388、371、372‧‧‧欄位363、373‧‧‧MOD欄位364、365、374、375、385、390‧‧‧源運算元識別符366、376、386‧‧‧目的地運算元識別符370、380‧‧‧操作編碼(作業碼)格式378‧‧‧首碼位元組381‧‧‧條件欄位382、389‧‧‧CDP作業碼欄位400‧‧‧處理器管線402‧‧‧提取級404‧‧‧長度解碼級406‧‧‧解碼級408‧‧‧分配級410‧‧‧重新命名級412‧‧‧排程級414‧‧‧暫存器讀取/記憶體讀取級416‧‧‧執行級418‧‧‧寫回/記憶體寫入級422‧‧‧例外狀況處置級424‧‧‧認可級430‧‧‧前端單元432、1535‧‧‧分支預測單元434‧‧‧指令快取記憶體單元436‧‧‧指令轉譯後援緩衝器(TLB)438、1808‧‧‧指令提取單元440、1810‧‧‧解碼單元450‧‧‧執行引擎單元452‧‧‧重新命名/分配器單元454、1818‧‧‧引退單元456‧‧‧排程器單元458‧‧‧實體暫存器檔案單元460‧‧‧執行叢集464‧‧‧記憶體存取單元470‧‧‧記憶體單元472‧‧‧資料TLB單元474‧‧‧資料快取記憶體單元476‧‧‧層級2 (L2)快取記憶體單元490、502、502A、502N、1406、1407、1812‧‧‧核心503‧‧‧快取記憶體階層508‧‧‧基於環之互連單元510‧‧‧系統代理512‧‧‧顯示引擎514、796‧‧‧介面516‧‧‧直接媒體介面(DMI)518‧‧‧PCIe橋接器520‧‧‧記憶體控制器522‧‧‧同調邏輯552‧‧‧記憶體控制單元560‧‧‧圖形模組565‧‧‧媒體引擎570、1806‧‧‧前端580‧‧‧無序引擎582‧‧‧分配模組584‧‧‧資源排程器586‧‧‧資源588‧‧‧重新排序緩衝器590‧‧‧模組595‧‧‧最後層級快取記憶體(LLC)599‧‧‧隨機存取記憶體(RAM)600、1800‧‧‧系統620‧‧‧圖形記憶體控制器集線器(GMCH)645、1724‧‧‧顯示器650‧‧‧輸入/輸出(I/O)控制器集線器(ICH)660‧‧‧外部圖形裝置670‧‧‧另一周邊裝置695‧‧‧前側匯流排(FSB)700‧‧‧多處理器系統714、814‧‧‧I/O裝置716‧‧‧第一匯流排718‧‧‧匯流排橋接器720‧‧‧第二匯流排722‧‧‧鍵盤及/或滑鼠724‧‧‧音訊I/O727‧‧‧通訊裝置728‧‧‧儲存單元730‧‧‧指令/程式碼及資料738‧‧‧高效能圖形電路739‧‧‧高效能圖形介面750‧‧‧點對點互連件752、754‧‧‧P-P介面770‧‧‧第一處理器772、782‧‧‧記憶體控制器單元(IMC)776、778、786、788‧‧‧點對點(P-P)介面/點對點介面電路780‧‧‧第二處理器790‧‧‧晶片組794、798‧‧‧點對點介面電路800‧‧‧第三系統815‧‧‧舊版I/O裝置872、882‧‧‧整合式記憶體及I/O控制邏輯(「CL」)900‧‧‧SoC裝置902‧‧‧互連單元908‧‧‧整合式圖形邏輯910‧‧‧應用程式處理器914‧‧‧整合式記憶體控制器單元916‧‧‧匯流排控制器單元920‧‧‧媒體處理器924、1015‧‧‧影像處理器926‧‧‧音訊處理器928、1020‧‧‧視訊處理器930‧‧‧靜態隨機存取記憶體(SRAM)單元932‧‧‧直接記憶體存取(DMA)單元940‧‧‧顯示單元1005‧‧‧中央處理單元(CPU)1010、1415‧‧‧圖形處理單元(GPU)1025‧‧‧USB控制器1030‧‧‧UART控制器1035‧‧‧SPI/SDIO控制器1040‧‧‧顯示裝置1045‧‧‧記憶體介面控制器1050‧‧‧MIPI控制器1055‧‧‧快閃記憶體控制器1060‧‧‧雙資料速率(DDR)控制器1065‧‧‧安全引擎1070‧‧‧I2
S/I2
C控制器1100‧‧‧儲存體1110‧‧‧硬體或軟體模型1120‧‧‧模擬軟體1150‧‧‧有線連接1160‧‧‧無線連接1165‧‧‧製造設施1205‧‧‧程式1210‧‧‧模仿邏輯1302‧‧‧高階語言1304‧‧‧x86編譯器1306‧‧‧x86二進位碼1308‧‧‧替代性指令集編譯器1310‧‧‧替代性指令集二進位碼1312‧‧‧指令轉換器1314‧‧‧不具有x86指令集核心之處理器1316‧‧‧具有至少一個x86指令集核心之處理器1400‧‧‧指令集架構1408‧‧‧L2快取記憶體控制1409、1520‧‧‧匯流排介面單元1410‧‧‧互連件1411‧‧‧L2快取記憶體1420‧‧‧視訊程式碼1425‧‧‧液晶顯示器(LCD)視訊介面1430‧‧‧用戶介面模組(SIM)介面1435‧‧‧開機ROM介面1440‧‧‧同步動態隨機存取記憶體(SDRAM)控制器1445‧‧‧快閃控制器1450‧‧‧串列周邊介面(SPI)主控器單元1460‧‧‧SDRAM晶片或模組1465‧‧‧快閃記憶體1470‧‧‧藍芽模組1475‧‧‧高速3G數據機1480‧‧‧全球定位系統模組1485‧‧‧無線模組1490‧‧‧行動產業處理器介面(MIPI)1495‧‧‧高清晰度多媒體介面(HDMI)1500‧‧‧指令架構1510‧‧‧單元1511‧‧‧中斷控制及散佈單元1512‧‧‧窺探控制單元1514‧‧‧窺探篩選器1515‧‧‧計時器1516‧‧‧AC埠1530‧‧‧預提取級1531‧‧‧選項1536‧‧‧全域歷史1537‧‧‧目標位址1538‧‧‧傳回堆疊1540、1830‧‧‧記憶體系統1543‧‧‧預提取器1544‧‧‧記憶體管理單元(MMU)1545‧‧‧轉譯後援緩衝器(TLB)1546‧‧‧載入儲存單元1550‧‧‧雙指令解碼級1555‧‧‧暫存器重新命名級1556‧‧‧暫存器集區1557‧‧‧分支1560‧‧‧發行級1561‧‧‧指令佇列1565‧‧‧執行實體1566‧‧‧ALU/乘法單元(MUL)1567‧‧‧ALU1568‧‧‧浮點單元(FPU)1569‧‧‧給定位址1570‧‧‧寫回級1575‧‧‧追蹤單元1580‧‧‧經執行指令指標1582‧‧‧引退指標1600‧‧‧執行管線1700‧‧‧電子裝置1715‧‧‧低電力雙資料速率(LPDDR)記憶體單元1720‧‧‧磁碟機1722‧‧‧BIOS/韌體/快閃記憶體1725‧‧‧觸控螢幕1730‧‧‧觸控板1735‧‧‧快速晶片組(EC)1736‧‧‧鍵盤1737‧‧‧風扇1738‧‧‧受信任平台模組(TPM)1739、1746‧‧‧熱感測器1740‧‧‧感測器集線器1741‧‧‧加速度計1742‧‧‧環境光感測器(ALS)1743‧‧‧羅盤1744‧‧‧迴轉儀1745‧‧‧近場通訊(NFC)單元1750‧‧‧無線區域網路(WLAN)單元1752‧‧‧藍芽單元1754‧‧‧攝影機1756‧‧‧無線廣域網路(WWAN)單元1757‧‧‧SIM卡1760‧‧‧數位信號處理器1762‧‧‧音訊單元1763‧‧‧揚聲器1764‧‧‧頭戴式耳機1765‧‧‧麥克風1802‧‧‧指令串流1814‧‧‧分配器1820‧‧‧記憶體子系統1822‧‧‧層級1 (L1)快取記憶體1824‧‧‧層級2 (L2)快取記憶體1900‧‧‧處理器/處理器核心1912‧‧‧SIMD執行單元1914‧‧‧延伸向量暫存器檔案1916‧‧‧延伸SIMD指令集2001‧‧‧暫存器ZMM02002‧‧‧暫存器ZMM12003‧‧‧暫存器ZMM22101‧‧‧第一源向量暫存器2102‧‧‧第二源向量暫存器2103‧‧‧第三源向量暫存器2201、2203‧‧‧目的地向量2202‧‧‧指定遮罩暫存器2300、2400、2500‧‧‧方法2402、2512‧‧‧向量暫存器ZMM12404、2514‧‧‧向量暫存器ZMM22406、2516‧‧‧向量暫存器ZMM32502‧‧‧向量暫存器ZMM52504‧‧‧向量暫存器ZMM62506‧‧‧向量暫存器ZMM72508‧‧‧向量暫存器ZMM82518‧‧‧向量暫存器ZMM4
在隨附圖式之各圖中作為實例而非限制來說明實施例: 圖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為說明根據本發明之實施例的實例延伸向量暫存器檔案之方塊圖; 圖21為根據本發明之實施例的用以執行向量GET操作以取得相同類型之多個元素的操作之說明; 圖22A至圖22D說明根據本發明之實施例的各別形式之VPGET3及VPGET4指令之操作; 圖23說明根據本發明之實施例的用於自不同源暫存器中之資料結構取得相同類型之多重向量元素的實例方法; 圖24A及圖24B說明根據本發明之實施例的用於利用多個向量GET3操作以獲得及排列來自不同源之多個資料結構之資料元素的實例方法; 圖25A及圖25B說明根據本發明之實施例的用於利用多個向量GET4操作以獲得及排列來自不同源之多個資料結構之資料元素的實例方法。
1800‧‧‧系統
1802‧‧‧指令串流
1804‧‧‧處理器
1806‧‧‧前端
1808‧‧‧指令提取單元
1810‧‧‧解碼單元
1812‧‧‧核心
1814‧‧‧分配器
1816‧‧‧執行單元
1818‧‧‧引退單元
1820‧‧‧記憶體子系統
1822‧‧‧層級1(L1)快取記憶體
1824‧‧‧層級2(L2)快取記憶體
1830‧‧‧記憶體系統
Claims (20)
- 一種處理器,包含:用以接收一指令之一前端;用以解碼該指令之一解碼器;一第一源向量暫存器,用以儲存至少兩個元組之資料元素,每一元組包括至少三個資料元素;一第二源向量暫存器,用以儲存至少兩個元組之資料元素,每一元組包括至少三個資料元素;用以執行該指令之一核心,包括:一第一邏輯,用以自該第一源向量暫存器中之每一元組內之一特定位置擷取一各別資料元素,該特定位置係取決於該指令之一編碼;一第二邏輯,用以自該第二源向量暫存器中之每一元組內之該特定位置擷取一各別資料元素;一第三邏輯,用以將要自該第一源向量暫存器擷取之該等資料元素儲存於一目的地向量暫存器中之相連位置中;一第四邏輯,用以將要自該第二源向量暫存器擷取之該等資料元素儲存於該目的地向量暫存器中之相連位置中;以及用以引退該指令之一引退單元。
- 如請求項1之處理器,其中:該處理器進一步包括:一第三源向量暫存器,用以儲存至少兩個元組之 資料元素,每一元組用以包括至少三個資料元素;且該核心進一步包括:一第五邏輯,用以自儲存於該第三源向量暫存器中之每一元組內之該特定位置擷取一各別資料元素;一第六邏輯,用以將要自該第三源向量暫存器擷取之該等資料元素儲存於該目的地向量暫存器中之相連位置中。
- 如請求項1之處理器,其中:該第一源向量暫存器中及該第二源向量暫存器中之每一元組係表示一資料結構,該資料結構包括不同類型之至少三個資料元素。
- 如請求項1之處理器,其中:該第一源向量暫存器中及該第二源向量暫存器中之每一元組用以包括不同類型之三個資料元素;儲存於每一元組內之相同位置中之資料元素為相同類型;且該指令之編碼係指定要擷取之該等資料元素之類型。
- 如請求項1之處理器,其中:該第一源向量暫存器中及該第二源向量暫存器中之每一元組包括不同類型之四個資料元素;儲存於每一元組內之相同位置中之資料元素為相同類型;該指令之編碼係指定每一元組內從中擷取該等資料元素之該特定位置;且 該第三邏輯用以將要自該第一源向量暫存器擷取之該等資料元素儲存於該目的地向量暫存器中由取決於來自該指令之編碼之一偏移參數之一位置處開始的相連位置中。
- 如請求項1之處理器,其中:該核心進一步包括一第五邏輯,用以在將自該第一源向量暫存器及該第二源向量暫存器擷取之該等資料元素儲存於該目的地向量暫存器中時應用一遮蔽操作;對於在該指令中所識別之一遮罩暫存器中經設定的一或多個位元中之每一者,要被儲存於該目的地向量暫存器中之一資料元素將儲存至該目的地向量暫存器;且對於在該指令中所識別之該遮罩暫存器中未經設定的一或多個位元中之每一者,在其他情況下將儲存至該目的地向量暫存器之一資料元素則不儲存至該目的地向量暫存器。
- 如請求項1之處理器,其中該核心包括用以實施該指令之執行的一單指令多資料(SIMD)共處理器。
- 一種用於取得多重向量元素操作之方法,包含在一處理器中:接收一第一指令;解碼該第一指令;執行該第一指令,包括:自儲存於一第一源向量暫存器中之多個資料結構中之每一者內之一特定位置擷取一各別資料元 素,該特定位置係取決於用於該第一指令之一編碼;自儲存於一第二源向量暫存器中之多個資料結構中之每一者內之該特定位置擷取一各別資料元素;將自該第一源向量暫存器擷取之該等資料元素儲存於一第一目的地向量暫存器中之相連位置中;將自該第二源向量暫存器擷取之該等資料元素儲存於該第一目的地向量暫存器中之相連位置中;以及引退該第一指令。
- 如請求項8之方法,進一步包含:自儲存於該第三源向量暫存器中之多個資料結構中之每一者內之該特定位置擷取一各別資料元素;以及將自該第三源向量暫存器擷取之該等資料元素儲存於該第一目的地向量暫存器中之相連位置中。
- 如請求項8之方法,其中:儲存於該第一源向量暫存器中及該第二源向量暫存器中之每一資料結構包括不同類型之三個資料元素;儲存於每一資料結構內之相同位置中之資料元素為相同類型;且該第一指令之編碼指定要擷取之該等資料元素之該類型。
- 如請求項8之方法,其中:儲存於該第一源向量暫存器中及該第二源向量暫存器中之每一資料結構包括不同類型之四個資料元素; 儲存於每一資料結構內之相同位置中之資料元素為相同類型;該第一指令之編碼指定每一資料結構內從中擷取該等資料元素之該特定位置;且儲存自該等第一及該第三源向量暫存器擷取之該等資料元素包含將自該等第一及該第三源向量暫存器擷取之該等資料元素儲存於該第一目的地向量暫存器中由取決於該第一指令之編碼之一偏移參數之一位置處開始的相連位置中。
- 如請求項8之方法,其中:該方法進一步包含,在執行該第一指令之前:執行一第二指令,包括:將多個資料結構之資料元素載入至該第一源向量暫存器中,每一資料結構包括不同類型之三個資料元素;執行一第三指令,包括:將多個資料結構之資料元素載入至該第二源向量暫存器中,每一資料結構包括不同類型之三個資料元素;以及執行一第四指令,包括:將多個資料結構之資料元素載入至一第三源向量暫存器中,每一資料結構包括不同類型之三個資料元素;執行該第一指令包含: 自儲存於該等三個源向量暫存器中之該等資料結構中之每一者內之該特定位置擷取一第一類型之一各別資料元素;以及將該第一類型之該等經擷取資料元素儲存於該第一目的地向量暫存器中之相連位置中;且該方法進一步包含,在執行該第一指令之後:執行一第五指令,包括:自儲存於該等三個源向量暫存器中之該等資料結構中之每一者內取決於該第五指令之一編碼之一位置擷取一第二類型之一各別資料元素;以及將該第二類型之該等資料元素儲存於一第二目的地向量暫存器中之相連位置中;以及執行一第六指令,包括:自儲存於該等三個源向量暫存器中之該等資料結構中之每一者內取決於該第六指令之一編碼之一位置擷取一第三類型之一各別資料元素;以及將該第三類型之該等資料元素儲存於一第三目的地向量暫存器中之相連位置中。
- 如請求項8之方法,其中:執行該第一指令包含:自儲存於該等第一及該第二源向量暫存器中之該等資料結構中之每一者內之該特定位置擷取一第 一類型之一各別資料元素;以及將自該等第一及該第二源向量暫存器擷取的該第一類型之該等資料元素儲存於該第一目的地向量暫存器之一低階部分中;且該方法進一步包含,在執行該第一指令之後:執行一第二指令,包括:自儲存於該等第三及該第四源向量暫存器中之該等資料結構中之每一者內之該特定位置擷取該第一類型之一各別資料元素;以及將自該等第三及該第四源向量暫存器擷取的該第一類型之該等資料元素儲存於該第一目的地向量暫存器之一高階部分中;且對於一第二資料元素類型、一第三資料元素類型及一第四資料元素類型中之每一給定者,執行一各別指令對,其中:執行該指令對中之該第一指令包括:自儲存於該等第一及該第二源向量暫存器中之該等資料結構中之每一者內取決於該指令對中之該第一指令之一編碼之一位置擷取該給定資料元素類型之一各別資料元素;將自該等第一及該第二源向量暫存器擷取的該給定類型之該等資料元素儲存於該給定資料元素類型之一目的地向量暫存 器之一低階部分中;且執行該指令對中之該第二指令包括:自儲存於該等第三及該第四源向量暫存器中之該等資料結構中之每一者內取決於該指令對中之該第二指令之一該第二指令之編碼之一位置擷取該給定資料元素類型之一各別資料元素;以及將自該等第三及該第四源向量暫存器擷取的該給定類型之該等資料元素儲存於該給定資料元素類型之該目的地向量暫存器之一高階部分中。
- 一種運算系統,包含:用以接收一指令之一前端;用以解碼該指令之一解碼器;一第一源向量暫存器,用以儲存至少兩個元組之資料元素,每一元組包括至少三個資料元素;一第二源向量暫存器,用以儲存至少兩個元組之資料元素,每一元組用以包括至少三個資料元素;用以執行該指令之一核心,包括:一第一邏輯,用以自儲存於該第一源向量暫存器中之每一元組內之一特定位置擷取一各別資料元素,該特定位置係取決於用於該指令之一編碼;一第二邏輯,用以自儲存於該第二源向量暫存器中之每一元組內之該特定位置擷取一各別資料元素; 一第三邏輯,用以將要自該第一源向量暫存器擷取之該等資料元素儲存於一目的地向量暫存器中之相連位置中;一第四邏輯,用以將要自該第二源向量暫存器擷取之該等資料元素儲存於該目的地向量暫存器中之相連位置中;以及用以引退該指令之一引退單元。
- 如請求項14之運算系統,其中:該系統進一步包括:一第三源向量暫存器,用以儲存至少兩個元組之資料元素,每一元組用以包括至少三個資料元素;且該核心進一步包括:一第五邏輯,用以自儲存於該第三源向量暫存器中之每一元組內之該特定位置擷取一各別資料元素;一第六邏輯,用以將要自該第三源向量暫存器擷取之該等資料元素儲存於該目的地向量暫存器中之相連位置中。
- 如請求項14之運算系統,其中:儲存於該第一源向量暫存器中及該第二源向量暫存器中之每一元組表示一資料結構,該資料結構包括不同類型之至少三個資料元素。
- 如請求項14之運算系統,其中:儲存於該第一源向量暫存器中及該第二源向量暫存器中之每一元組用以包括不同類型之三個資料元素; 儲存於每一元組內之相同位置中之資料元素為相同類型;且該指令之編碼係指定要擷取之該等資料元素之類型。
- 如請求項14之運算系統,其中:儲存於該第一源向量暫存器中及該第二源向量暫存器中之每一元組係包括不同類型之四個資料元素;儲存於每一元組內之相同位置中之資料元素為相同類型;該指令之該編碼係指定每一元組內從中擷取該等資料元素之該特定位置;且該第三邏輯用以將要自該第一源向量暫存器擷取之該等資料元素儲存於該目的地向量暫存器中取決於來自該指令之編碼之一偏移參數之一位置處開始的相連位置中。
- 如請求項14之運算系統,其中:該核心進一步包括一第五邏輯,該第五邏輯在自該第一源向量暫存器及該第二源向量暫存器擷取之該等資料元素儲存於該目的地向量暫存器中時應用一遮蔽操作;對於在該指令中所識別之一遮罩暫存器中經設定的一或多個位元中之每一者,要儲存於該目的地向量暫存器中之一資料元素將儲存至該目的地向量暫存器;且對於在該指令中所識別之該遮罩暫存器中未經設定的一或多個位元中之每一者,在其他情況下將儲存至該目的地向量暫存器之一資料元素則不儲存至該目的地向量暫存器。
- 如請求項14之運算系統,其中該核心包括 用以實施該指令之執行的一單指令多資料(SIMD)共處理器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/975,098 US10338920B2 (en) | 2015-12-18 | 2015-12-18 | Instructions and logic for get-multiple-vector-elements operations |
US14/975,098 | 2015-12-18 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201723817A TW201723817A (zh) | 2017-07-01 |
TWI743064B true TWI743064B (zh) | 2021-10-21 |
Family
ID=59057280
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105137055A TWI743064B (zh) | 2015-12-18 | 2016-11-14 | 用於取得多重向量元素操作之指令及邏輯 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10338920B2 (zh) |
EP (1) | EP3391236A4 (zh) |
CN (1) | CN108292293A (zh) |
TW (1) | TWI743064B (zh) |
WO (1) | WO2017105717A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10338920B2 (en) | 2015-12-18 | 2019-07-02 | Intel Corporation | Instructions and logic for get-multiple-vector-elements operations |
US10506139B2 (en) * | 2017-08-03 | 2019-12-10 | Mediatek Inc. | Reconfigurable pin-to-pin interface capable of supporting different lane combinations and/or different physical layers and associated method |
US20190272175A1 (en) * | 2018-03-01 | 2019-09-05 | Qualcomm Incorporated | Single pack & unpack network and method for variable bit width data formats for computational machines |
US10970072B2 (en) * | 2018-12-21 | 2021-04-06 | Intel Corporation | Systems and methods to transpose vectors on-the-fly while loading from memory |
US10725788B1 (en) * | 2019-03-25 | 2020-07-28 | Intel Corporation | Advanced error detection for integer single instruction, multiple data (SIMD) arithmetic operations |
EP3739839A1 (en) * | 2019-05-11 | 2020-11-18 | INTEL Corporation | Vector processor for heterogeneous data streams |
US11126430B2 (en) * | 2019-05-11 | 2021-09-21 | Intel Corporation | Vector processor for heterogeneous data streams |
CN110516793B (zh) * | 2019-08-27 | 2022-06-17 | Oppo广东移动通信有限公司 | 一种池化处理方法及装置、存储介质 |
US11086625B2 (en) * | 2019-09-10 | 2021-08-10 | Apple Inc. | Compression assist instructions |
CN114064125B (zh) * | 2022-01-18 | 2022-06-24 | 北京大学 | 指令解析方法、装置及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100274988A1 (en) * | 2002-02-04 | 2010-10-28 | Mimar Tibet | Flexible vector modes of operation for SIMD processor |
US20130275730A1 (en) * | 2011-12-23 | 2013-10-17 | Elmoustapha Ould-Ahmed-Vall | Apparatus and method of improved extract instructions |
US20140181464A1 (en) * | 2012-12-26 | 2014-06-26 | Andrew T. Forsyth | Coalescing adjacent gather/scatter operations |
TW201530309A (zh) * | 2013-09-27 | 2015-08-01 | Intel Corp | 向量索引化記憶體存取加上運算及/或邏輯操作之處理器、方法、系統與指令 |
Family Cites Families (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS60136872A (ja) | 1983-12-26 | 1985-07-20 | Hitachi Ltd | ベクトル処理装置 |
US5991531A (en) | 1997-02-24 | 1999-11-23 | Samsung Electronics Co., Ltd. | Scalable width vector processor architecture for efficient emulation |
US5933650A (en) | 1997-10-09 | 1999-08-03 | Mips Technologies, Inc. | Alignment and ordering of vector elements for single instruction multiple data processing |
US20040054877A1 (en) * | 2001-10-29 | 2004-03-18 | Macy William W. | Method and apparatus for shuffling data |
US6954841B2 (en) | 2002-06-26 | 2005-10-11 | International Business Machines Corporation | Viterbi decoding for SIMD vector processors with indirect vector element access |
US6904511B2 (en) | 2002-10-11 | 2005-06-07 | Sandbridge Technologies, Inc. | Method and apparatus for register file port reduction in a multithreaded processor |
GB2409060B (en) * | 2003-12-09 | 2006-08-09 | Advanced Risc Mach Ltd | Moving data between registers of different register data stores |
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 |
US7933405B2 (en) | 2005-04-08 | 2011-04-26 | Icera Inc. | Data access and permute unit |
US7421566B2 (en) | 2005-08-12 | 2008-09-02 | International Business Machines Corporation | Implementing instruction set architectures with non-contiguous register file specifiers |
US9495724B2 (en) | 2006-10-31 | 2016-11-15 | International Business Machines Corporation | Single precision vector permute immediate with “word” vector write mask |
US8078836B2 (en) | 2007-12-30 | 2011-12-13 | Intel Corporation | Vector shuffle instructions operating on multiple lanes each having a plurality of data elements using a common set of per-lane control bits |
CN101833441B (zh) * | 2010-04-28 | 2013-02-13 | 中国科学院自动化研究所 | 并行向量处理引擎结构 |
US20130305020A1 (en) * | 2011-04-01 | 2013-11-14 | Robert C. Valentine | Vector friendly instruction format and execution thereof |
US20120278591A1 (en) | 2011-04-27 | 2012-11-01 | Advanced Micro Devices, Inc. | Crossbar switch module having data movement instruction processor module and methods for implementing the same |
WO2013081588A1 (en) | 2011-11-30 | 2013-06-06 | Intel Corporation | Instruction and logic to provide vector horizontal compare functionality |
CN104011646B (zh) * | 2011-12-22 | 2018-03-27 | 英特尔公司 | 用于产生按照数值顺序的连续整数的序列的处理器、方法、系统和指令 |
US9639354B2 (en) | 2011-12-22 | 2017-05-02 | Intel Corporation | Packed data rearrangement control indexes precursors generation processors, methods, systems, and instructions |
US20140223138A1 (en) | 2011-12-23 | 2014-08-07 | Elmoustapha Ould-Ahmed-Vall | Systems, apparatuses, and methods for performing conversion of a mask register into a vector register. |
WO2013095658A1 (en) | 2011-12-23 | 2013-06-27 | Intel Corporation | Systems, apparatuses, and methods for performing a horizontal add or subtract in response to a single instruction |
WO2013095657A1 (en) | 2011-12-23 | 2013-06-27 | Intel Corporation | Instruction and logic to provide vector blend and permute functionality |
CN104011653B (zh) | 2011-12-29 | 2017-09-15 | 英特尔公司 | 打包数据操作掩码比较处理器、方法、系统 |
US9459867B2 (en) * | 2012-03-15 | 2016-10-04 | International Business Machines Corporation | Instruction to load data up to a specified memory boundary indicated by the instruction |
US9626333B2 (en) * | 2012-06-02 | 2017-04-18 | Intel Corporation | Scatter using index array and finite state machine |
US9342479B2 (en) | 2012-08-23 | 2016-05-17 | Qualcomm Incorporated | Systems and methods of data extraction in a vector processor |
US10049061B2 (en) * | 2012-11-12 | 2018-08-14 | International Business Machines Corporation | Active memory device gather, scatter, and filter |
US9378017B2 (en) | 2012-12-29 | 2016-06-28 | Intel Corporation | Apparatus and method of efficient vector roll operation |
US9513908B2 (en) * | 2013-05-03 | 2016-12-06 | Samsung Electronics Co., Ltd. | Streaming memory transpose operations |
CN104331497A (zh) * | 2014-11-19 | 2015-02-04 | 中国科学院自动化研究所 | 一种利用向量指令并行处理文件索引的方法及装置 |
US9875214B2 (en) * | 2015-07-31 | 2018-01-23 | Arm Limited | Apparatus and method for transferring a plurality of data structures between memory and a plurality of vector registers |
US20170177351A1 (en) | 2015-12-18 | 2017-06-22 | Intel Corporation | Instructions and Logic for Even and Odd Vector Get Operations |
US20170177352A1 (en) | 2015-12-18 | 2017-06-22 | Intel Corporation | Instructions and Logic for Lane-Based Strided Store Operations |
US10338920B2 (en) | 2015-12-18 | 2019-07-02 | Intel Corporation | Instructions and logic for get-multiple-vector-elements operations |
US20170177359A1 (en) | 2015-12-21 | 2017-06-22 | Intel Corporation | Instructions and Logic for Lane-Based Strided Scatter Operations |
-
2015
- 2015-12-18 US US14/975,098 patent/US10338920B2/en active Active
-
2016
- 2016-11-14 TW TW105137055A patent/TWI743064B/zh active
- 2016-11-15 CN CN201680067678.9A patent/CN108292293A/zh active Pending
- 2016-11-15 EP EP16876293.8A patent/EP3391236A4/en not_active Ceased
- 2016-11-15 WO PCT/US2016/061962 patent/WO2017105717A1/en unknown
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100274988A1 (en) * | 2002-02-04 | 2010-10-28 | Mimar Tibet | Flexible vector modes of operation for SIMD processor |
US20130275730A1 (en) * | 2011-12-23 | 2013-10-17 | Elmoustapha Ould-Ahmed-Vall | Apparatus and method of improved extract instructions |
US20140181464A1 (en) * | 2012-12-26 | 2014-06-26 | Andrew T. Forsyth | Coalescing adjacent gather/scatter operations |
TW201530309A (zh) * | 2013-09-27 | 2015-08-01 | Intel Corp | 向量索引化記憶體存取加上運算及/或邏輯操作之處理器、方法、系統與指令 |
Also Published As
Publication number | Publication date |
---|---|
CN108292293A (zh) | 2018-07-17 |
WO2017105717A1 (en) | 2017-06-22 |
US10338920B2 (en) | 2019-07-02 |
EP3391236A4 (en) | 2019-08-07 |
US20170177353A1 (en) | 2017-06-22 |
EP3391236A1 (en) | 2018-10-24 |
TW201723817A (zh) | 2017-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI731892B (zh) | 用於以通道為基礎的跨步儲存操作之指令及邏輯 | |
TWI739772B (zh) | 處理器、用於安全指令執行管線之方法、及運算系統 | |
TWI730016B (zh) | 用於跨步分散運算的指令與邏輯的處理器、方法及系統 | |
TWI743064B (zh) | 用於取得多重向量元素操作之指令及邏輯 | |
TWI733710B (zh) | 用於重複發生相鄰聚集的處理器、方法和單元 | |
TWI738674B (zh) | 與快取控制操作有關的處理器、系統及非暫時性機器可讀媒體 | |
TWI720056B (zh) | 用於設置多重向量元素操作之指令及邏輯 | |
TWI738682B (zh) | 用於載入索引和散佈元件的處理器、方法及系統 | |
TWI738679B (zh) | 處理器、運算系統及用以執行運算操作之方法 | |
TWI697788B (zh) | 用以提供向量包裝之直方圖功能的方法,裝置,指令及邏輯 | |
TWI715681B (zh) | 用於位元欄位位址和插入之指令及邏輯 | |
TWI729029B (zh) | 用於向量位元欄壓縮及擴展的指令及邏輯 | |
TW201723815A (zh) | 用於偶數與奇數向量取得操作之指令及邏輯 | |
TWI723075B (zh) | 用於向量置換的方法和處理器以及向量置換單元 | |
TW201723810A (zh) | 用於部分縮減操作之指令及邏輯 | |
TW201723812A (zh) | 用於以亂序載入來排列之指令及邏輯 | |
US9851976B2 (en) | Instruction and logic for a matrix scheduler | |
TWI738681B (zh) | 處理器、用於檢測消抵效應之方法及消抵效應檢測單元 | |
US20160364237A1 (en) | Processor logic and method for dispatching instructions from multiple strands | |
TW201729080A (zh) | 用於排列序列之指令及邏輯 | |
TWI773654B (zh) | 處理器、運算系統及用於執行以向量為基礎的位元操控之方法 | |
CN107408035B (zh) | 用于缕程间通信的装置和方法 |