新四季網

用於掩碼寄存器擴充操作的裝置和方法

2023-06-01 10:35:26 2

用於掩碼寄存器擴充操作的裝置和方法
【專利摘要】描述用於通過向量寄存器和向量數據元素從處理器和計算系統中的掩碼寄存器擴充位的裝置和方法。例如,根據一個實施例的方法包括以下操作:讀取存儲在掩碼寄存器中的每個掩碼寄存器位,所述掩碼寄存器包含用於對存儲在向量寄存器集合中的向量值執行操作的掩碼值;以及向目的地寄存器複製每個掩碼寄存器位N次,其中N是存儲在每個向量寄存器中的向量元素的數量。
【專利說明】用於掩碼寄存器擴充操作的裝置和方法 發明領域
[0001] 本發明的實施例一般涉及計算機系統的領域。更具體地,本發明的實施例涉及用 於執行掩碼寄存器擴充操作的裝置和方法。

【背景技術】
[0002] 一般背景
[0003] 指令集、或指令集架構(ISA)是涉及編程的計算機架構的一部分,並且可包括原 生數據類型、指令、寄存器架構、尋址模式、存儲器架構、中斷和異常處理、以及外部輸入和 輸出(I/O)。術語指令在本申請中一般表示宏指令,宏指令是被提供給處理器(或指令轉 換器,該指令轉換器(利用靜態二進位轉換、包括動態編譯的動態二進位轉換)轉換、變形、 仿真或以其他方式將指令轉換成將由處理器處理的一個或多個其他指令)以供執行的指 令--作為對比,微指令或微操作(微操作)是處理器的解碼器解碼宏指令的結果。
[0004] ISA與微架構不同,微架構是實現該指令集的處理器的內部設計。具有不同微架 構的處理器可共享共同的指令集。例如,INTEL?奔騰四(Pentium4)處理器、Intel?酷 睿(Core?)處理器、以及來自加利福尼亞州桑尼威爾(Sunnyvale)的超微半導體有限公司 (Advanced Micro Devices, Inc.)的諸多處理器執行幾乎相同版本的x86指令集(在更新 的版本中加入了一些擴展),但具有不同的內部設計。例如,ISA的相同寄存器架構可以在 不同的微架構中使用公知的技術以不同方法來實現,公知的技術包括專用物理寄存器、使 用寄存器重命名機制(例如,使用寄存器別名表(RAT)、重排序緩衝器(R0B)、以及引退寄存 器組;使用多個寄存器映射和寄存器池)的一個或多個動態分配物理寄存器,等等。除非另 行指出,術語寄存器架構、寄存器組和寄存器在本文中用於指代對軟體/編程者可見的寄 存器以及指令指定寄存器的方式。在需要特殊性的場合,將使用定語邏輯的、架構的或軟體 可見的來指示寄存器架構中的寄存器/寄存器組,同時不同的定語將用於指示給定微架構 中的寄存器(例如物理寄存器、重排序緩衝器、引退寄存器、寄存器池)。
[0005] 指令集包括一個或多個指令格式。給定指令格式定義多個欄位(位的數量、位的 位置等)以指定將要被執行的操作(操作碼)以及該操作將要執行的操作數等等。通過定 義指令模板(或子格式),一些指令格式被進一步分解。例如,可將給定指令格式的指令模 板定義成具有該指令格式的欄位的不同子集(所包括的欄位通常是相同順序,但至少一些 由於包括更少的欄位而具有不同的位位置)和/或定義成對給定欄位的解釋不同。因此, 利用給定指令格式(而且如果定義,則按照該指令格式的指令模板中的給定一個模板)來 表達ISA的每個指令,並且ISA的每個指令包括用於指定其操作和操作數的欄位。例如,示 例性的ADD (加法)指令具有特定的操作碼和指令格式,該指令格式包括用於指定該操作碼 的操作碼欄位和用於選擇操作數(源1/目的地和源2)的操作數欄位;並且該ADD指令在 指令流中的出現將具有在操作數欄位中的特定內容,該特定內容選擇特定操作數。
[0006] 科學應用、金融應用、自動向量化通用應用、RMS(識別、挖掘和合成)應用以及視 覺和多媒體應用(諸如,2D/3D圖形、圖像處理、視頻壓縮/解壓縮、語音識別算法和音頻處 理)通常需要對大量數據項執行相同的操作(被稱為"數據並行性")。單指令多數據(SMD) 指的是使得處理器對多個數據項執行一操作的一種類型的指令。SMD技術尤其適用於將寄 存器中的多個位邏輯地劃分成多個固定大小的數據元素的處理器,其中每個數據元素表示 單獨的值。例如,可將256位寄存器中的位指定為要進行操作的源操作數,作為4個單獨的 64位打包數據元素(四字(Q)尺寸數據元素)、8個單獨的32位打包數據元素(雙字(D) 尺寸數據元素)、16個單獨的16位打包數據元素(字(W)尺寸數據元素)、或32個單獨的 8位數據元素(字節(B)尺寸數據元素)。該數據類型可被稱為打包數據類型或向量數據 類型,並且該數據類型的操作數被稱為打包數據操作數或向量操作數。換句話說,打包數據 項或向量指的是打包數據元素的序列,而打包數據操作數或向量操作數是SIMD指令(或稱 為打包數據指令或向量指令)的源操作數或目的地操作數。
[0007] 作為示例,一種類型的SIMD指令指定了將要以縱向方式對兩個源向量操作數執 行的單個向量操作,用於生成具有相同尺寸的、具有相同數量的數據元素並且按照相同數 據元素次序的目的地向量操作數(也被稱為結果向量操作數)。源向量操作數中的數據元 素被稱為源數據元素,而目的地向量操作數中的數據元素被稱為目的地或結果數據元素。 這些源向量操作數具有相同尺寸並且包含相同寬度的數據元素,因此它們包含相同數量的 數據元素。兩個源向量操作數中的相同位位置中的源數據元素形成數據元素對(也稱為對 應的數據元素;即,每個源操作數的數據元素位置0中的數據元素相對應,每個源操作數中 的數據元素位置1中的數據元素相對應,以此類推)。對這些源數據元素對中的每一個分別 執行該SMD指令指定的操作,以產生匹配數量的結果數據元素,並且因此每一對源數據元 素具有相應的結果數據元素。由於該操作是縱向的,且由於結果向量操作數是相同尺寸、具 有相同數量的數據元素並且結果數據元素按照與源向量操作數相同的數據元素順序被存 儲,所以結果數據元素處於結果向量操作數中與它們在源向量操作數中的相應源數據元素 對相同的位位置中。除了這種示例性類型的SMD指令之外,存在各種各樣其他類型的SMD 指令(例如僅具有一個源向量操作數或具有超過兩個源向量操作數、以橫向方式操作、產 生不同尺寸的結果向量操作數、具有不同尺寸的數據元素和/或具有不同的數據元素次序 的SMD指令)。應當理解,術語目的地向量操作數(或目的地操作數)被定義為執行由指 令指定的操作的直接結果,包括將該目的地操作數存儲在一位置處(可以是由該指令指定 的寄存器或存儲器地址處),使得它可作為源操作數由另一指令訪問(通過該另一指令指 定同一位置)。
[0008] 諸如具有包括 x86、MMX?、流式 SMD 擴展(SSE)、SSE2、SSE3、SSE4. 1 以及 SSE4. 2 指令的指令集的丨ntel? Core?處理器所採用的SMD技術之類的SMD技術已經實現了應 用性能的重大改進。已經推出和/或發布了被稱為高級向量擴展(AVX) (AVX1和AVX2)和 利用向量擴展(VEX)編碼方案的附加的SIMD擴展集(參見例如2011年10月的丨ntel K 64 和IA-32架構軟體開發者手冊;以及參見2011年6月的高級向量擴展編程參考)。
[0009] 與本發明的實施例有關的背景
[0010] 掩碼寄存器包含對應於向量寄存器中的元素並且跟蹤執行操作所應針對的元素 的位。出於這種原因,有益的是具有公共操作,其能夠如同可在向量寄存器自身上執行一樣 在這些掩碼位上執行類似操作,並且一般允許在掩碼寄存器內調整這些掩碼位。
[0011] 附圖簡述
[0012] 圖1A是示出根據本發明的實施例的一般有序流水線和一般寄存器重命名的無序 發布/執行流水線的框圖。
[0013] 圖1B是示出根據本發明的實施例的將被包括在處理器中的一般有序架構核以及 一般寄存器重命名的無序發布/執行架構核的框圖;
[0014] 圖2是根據本發明的實施例的具有集成的存儲器控制器和圖形器件的單核處理 器和多核處理器500的框圖。
[0015] 圖3示出根據本發明一個實施例的系統的框圖;
[0016] 圖4示出了根據本發明的實施例的第二系統的框圖;
[0017] 圖5示出了根據本發明的實施例的第三系統的框圖;
[0018] 圖6示出了根據本發明的實施例的片上系統(SoC)的框圖;
[0019] 圖7是根據本發明的實施例的對照使用軟體指令轉換器將源指令集中的二進位 指令轉換成目標指令集中的二進位指令的框圖。
[0020] 圖8示出根據本發明的一個實施例的用於執行掩碼寄存器擴充的裝置。
[0021] 圖9示出根據本發明的一個實施例的用於執行掩碼寄存器擴充的方法。
[0022] 圖10A-C示出根據本發明的實施例的包括VEX前綴的示例性指令格式;
[0023] 圖11A-B是示出根據本發明的實施例的通用向量友好指令格式及其指令模板的 框圖;
[0024] 圖12A-D是示出根據本發明的實施例的示例性專用向量友好指令格式的框圖。
[0025] 圖13是根據本發明的一個實施例的寄存器架構的框圖;
[0026] 圖14A是根據本發明的各實施例的單個處理器核以及它與管芯上互連網絡的連 接及其二級(L2)高速緩存的本地子集的框圖。
[0027] 圖14B是根據本發明的實施例的圖14A中處理器核的一部分的展開圖。
[0028] 詳細描述
[0029] 示例件處理器架構和數據類型
[0030] 圖1A是示出根據本發明的各實施例的示例性有序流水線和示例性的寄存器重命 名的無序發布/執行流水線的框圖。圖1B是示出根據本發明的各實施例的要包括在處理 器中的有序架構核的示例性實施例和示例性的寄存器重命名的無序發布/執行架構核的 框圖。圖1A-B中的實線框示出了有序流水線和有序核,而可選增加的虛線框示出了寄存器 重命名的、無序發布/執行流水線和核。給定有序方面是無序方面的子集的情況下,將描述 無序方面。
[0031] 在圖1A中,處理器流水線100包括取出級102、長度解碼級104、解碼級106、分配 級108、重命名級110、調度(也稱為分派或發布)級112、寄存器讀取/存儲器讀取級114、 執行級116、寫回/存儲器寫入級118、異常處理級122和提交級124。
[0032] 圖1B示出了包括耦合到執行引擎單元150的前端單元130的處理器核190,且 執行引擎單元和前端單元兩者都耦合到存儲器單元170。核190可以是精簡指令集計算 (RISC)核、複雜指令集計算(CISC)核、超長指令字(VLIW)核或混合或替代核類型。作為又 一選項,核190可以是專用核,諸如例如網絡或通信核、壓縮引擎、協處理器核、通用計算圖 形處理器單元(GPGPU)核、或圖形核等等。
[0033] 前端單元130包括耦合到指令高速緩存單元134的分支預測單元132,該指令高速 緩存單元耦合到指令轉換後備緩衝器(TLB) 136,該指令轉換後備緩衝器耦合到指令取出單 元138,指令取出單元耦合到解碼單元140。解碼單元140 (或解碼器)可解碼指令,並生成 從原始指令解碼出的、或以其他方式反映原始指令的、或從原始指令導出的一個或多個微 操作、微代碼進入點、微指令、其他指令、或其他控制信號作為輸出。解碼單元140可使用各 種不同的機制來實現。合適的機制的示例包括但不限於查找表、硬體實現、可編程邏輯陣列 (PLA)、微代碼只讀存儲器(ROM)等。在一個實施例中,核190包括(例如,在解碼單元140 中或否則在前端單元130內的)用於存儲某些宏指令的微代碼的微代碼ROM或其他介質。 解碼單元140耦合至執行引擎單元150中的重命名/分配器單元152。
[0034] 執行引擎單元150包括重命名/分配器單元152,該重命名/分配器單元152耦合 至引退單元154和一個或多個調度器單元156的集合。調度器單元156表示任何數目的不 同調度器,包括預留站、中央指令窗等。調度器單元156耦合到物理寄存器組單元158。每 個物理寄存器組單元158表示一個或多個物理寄存器組,其中不同的物理寄存器組存儲一 種或多種不同的數據類型,諸如標量整數、標量浮點、打包整數、打包浮點、向量整數、向量 浮點、狀態(例如,作為要執行的下一指令的地址的指令指針)等。在一個實施例中,物理寄 存器組單元158包括向量寄存器單元、寫掩碼寄存器單元和標量寄存器單元。這些寄存器 單元可以提供架構向量寄存器、向量掩碼寄存器、和通用寄存器。物理寄存器組單元158與 引退單元154重疊以示出可以用來實現寄存器重命名和無序執行的各種方式(例如,使用 重新排序緩衝器和引退寄存器組;使用將來的文件、歷史緩衝器和引退寄存器組;使用寄 存器映射和寄存器池等等)。引退單元154和物理寄存器組單元158耦合到執行群集160。 執行群集160包括一個或多個執行單元162的集合和一個或多個存儲器訪問單元164的集 合。執行單元162可以對各種類型的數據(例如,標量浮點、打包整數、打包浮點、向量整型、 向量浮點)執行各種操作(例如,移位、加法、減法、乘法)。儘管一些實施例可以包括專用 於特定功能或功能集合的多個執行單元,但其他實施例可包括全部執行所有功能的僅一個 執行單元或多個執行單元。調度器單元156、物理寄存器組單元158和執行群集160被示 為可能有多個,因為某些實施例為某些類型的數據/操作創建分開的流水線(例如,標量整 型流水線、標量浮點/打包整型/打包浮點/向量整型/向量浮點流水線,和/或各自具有 其自己的調度器單元、物理寄存器組單元和/或執行群集的存儲器訪問流水線--以及在 分開的存儲器訪問流水線的情況下,實現其中僅該流水線的執行群集具有存儲器訪問單元 164的某些實施例)。還應當理解,在使用分開的流水線的情況下,這些流水線中的一個或 多個可以為無序發布/執行,並且其餘流水線可以為有序發布/執行。
[0035] 存儲器訪問單元164的集合耦合到存儲器單元170,該存儲器單元包括耦合到數 據高速緩存單元174的數據TLB單元172,其中數據高速緩存單元耦合到二級(L2)高速緩 存單元176。在一個示例性實施例中,存儲器訪問單元164可包括加載單元、存儲地址單元 和存儲數據單元,其中的每一個均耦合至存儲器單元170中的數據TLB單元172。指令高速 緩存單元134還耦合到存儲器單元170中的第二級(L2)高速緩存單元176。L2高速緩存 單元176耦合到一個或多個其他級的高速緩存,並最終耦合到主存儲器。
[0036] 作為示例,示例性寄存器重命名的、無序發布/執行核架構可以如下實現流水線 100 :1)指令取出138執行取出和長度解碼級102和104 ;2)解碼單元140執行解碼級106 ; 3)重命名/分配器單元152執行分配級108和重命名級110 ;4)調度器單元156執行調度 級112 ;5)物理寄存器組單元158和存儲器單元170執行寄存器讀取/存儲器讀取級114 ; 執行群集160執行執行級116 ;6)存儲器單元170和物理寄存器組單元158執行寫回/存 儲器寫入級118 ;7)各單元可牽涉到異常處理級122 ;以及8)引退單元154和物理寄存器 組單元158執行提交級124。
[0037] 核190可支持一個或多個指令集(例如,x86指令集(具有與較新版本一起添加 的一些擴展);加利福尼亞州桑尼維爾市的MIPS技術公司的MIPS指令集;加利福尼州桑尼 維爾市的ARM控股的ARM指令集(具有諸如NEON等可選附加擴展)),其中包括本文中描述 的各指令。在一個實施例中,核190包括用於支持打包數據指令集擴展(例如,AVXUAVX2 和/或先前描述的一些形式的一般向量友好指令格式(U = 0和/或U= 1))的邏輯,從而 允許很多多媒體應用使用的操作能夠使用打包數據來執行。
[0038] 應當理解,核可支持多線程化(執行兩個或更多個並行的操作或線程的集合),並 且可以按各種方式來完成該多線程化,此各種方式包括時分多線程化、同步多線程化(其 中單個物理核為物理核正在同步多線程化的各線程中的每一個線程提供邏輯核)、或其組 合(例如,時分取出和解碼以及此後諸如用]ntel?超線程化技術來同步多線程化)。
[0039] 儘管在無序執行的上下文中描述了寄存器重命名,但應當理解,可以在有序架構 中使用寄存器重命名。儘管所示出的處理器的實施例還包括分開的指令和數據高速緩存單 元134/174以及共享L2高速緩存單元176,但替代實施例可以具有用於指令和數據兩者的 單個內部高速緩存,諸如例如一級(L1)內部高速緩存或多個級別的內部高速緩存。在一些 實施例中,該系統可包括內部高速緩存和在核和/或處理器外部的外部高速緩存的組合。 或者,所有高速緩存都可以在核和/或處理器的外部。
[0040] 圖2是根據本發明的各實施例可能具有一個以上核、可能具有集成存儲器控制 器、以及可能具有集成圖形器件的處理器200的框圖。圖2中的實線框示出具有單個核 202A、系統代理210、一個或多個總線控制器單元216的集合的處理器200,而虛線框的可 選附加示出具有多個核202A-N、系統代理單元210中的一個或多個集成存儲器控制器單元 214的集合以及專用邏輯208的替代處理器200。
[0041] 因此,處理器200的不同實現可包括:1) CPU,其中專用邏輯208是集成圖形和/或 科學(吞吐量)邏輯(其可包括一個或多個核),並且核202A-N是一個或多個通用核(例 如,通用的有序核、通用的無序核、這兩者的組合);2)協處理器,其中核202A-N是旨在主 要用於圖形和/或科學(吞吐量)的多個專用核;以及3)協處理器,其中核202A-N是多 個通用有序核。因此,處理器200可以是通用處理器、協處理器或專用處理器,諸如例如網 絡或通信處理器、壓縮引擎、圖形處理器、GPGPU (通用圖形處理單元)、高吞吐量的集成眾 核(MIC)協處理器(包括30個或更多核)、或嵌入式處理器等。該處理器可以被實現在一 個或多個晶片上。處理器200可以是一個或多個襯底的一部分,和/或可以使用諸如例如 BiCMOS、CMOS或NM0S等的多個加工技術中的任何一個技術將處理器200實現在一個或多 個襯底上。
[0042] 存儲器層次結構包括在各核內的一個或多個級別的高速緩存、一個或多個共享高 速緩存單元206的集合、以及耦合至集成存儲器控制器單元214的集合的外部存儲器(未 示出)。該共享高速緩存單元206的集合可以包括一個或多個中間級高速緩存,諸如二級 (L2)、三級(L3)、四級(L4)或其他級別的高速緩存、末級高速緩存(LLC)、和/或其組合。盡 管在一個實施例中,基於環的互連單元212將集成圖形邏輯208、共享高速緩存單元206的 集合以及系統代理單元210/集成存儲器控制器單元214互連,但替代實施例可使用任何數 量的公知技術來將這些單元互連。在一個實施例中,可以維護一個或多個高速緩存單元206 和核202A-N之間的一致性(coherency)。
[0043] 在一些實施例中,核202A-N中的一個或多個核能夠多線程化。系統代理210包括 協調和操作核202A-N的那些組件。系統代理單元210可包括例如功率控制單元(P⑶)和 顯示單元。PCU可以是或包括用於調整核202A-N和集成圖形邏輯208的功率狀態所需的邏 輯和組件。顯示單元用於驅動一個或多個外部連接的顯示器。
[0044] 核202A-N在架構指令集方面可以是同構的或異構的;S卩,這些核202A-N中的兩個 或更多個核可能能夠執行相同的指令集,而其他核可能能夠執行該指令集的僅僅子集或不 冋的指令集。
[0045] 圖3-6是示例性計算機架構的框圖。本領域已知的對膝上型設備、臺式機、手持 PC、個人數字助理、工程工作站、伺服器、網絡設備、網絡集線器、交換機、嵌入式處理器、數 字信號處理器(DSP)、圖形設備、視頻遊戲設備、機頂盒、微控制器、蜂窩電話、可攜式媒體播 放器、手持設備以及各種其他電子設備的其他系統設計和配置也是合適的。一般地,能夠包 含本文中所公開的處理器和/或其它執行邏輯的多個系統和電子設備一般都是合適的。
[0046] 現在參考圖3,所示出的是根據本發明一個實施例的系統300的框圖。系統300可 以包括一個或多個處理器310、315,這些處理器耦合到控制器中樞320。在一個實施例中, 控制器中樞320包括圖形存儲器控制器中樞(GMCH) 390和輸入/輸出中樞(Ι0Η) 350 (其可 以在分開的晶片上);GMCH390包括存儲器和圖形控制器,存儲器340和協處理器345耦合 到該存儲器和圖形控制器;I0H350將輸入/輸出(I/O)設備360耦合到GMCH390。或者,存 儲器和圖形控制器中的一個或兩者可以被集成在處理器內(如本文中所描述的),存儲器 340和協處理器345直接耦合到處理器310以及控制器中樞320,控制器中樞320與I0H350 處於單個晶片中。
[0047] 附加處理器315的任選性質用虛線表示在圖3中。每一處理器310、315可包括本 文中描述的處理核中的一個或多個,並且可以是處理器200的某一版本。
[0048] 存儲器340可以是例如動態隨機存取存儲器(DRAM)、相變存儲器(PCM)或這兩者 的組合。對於至少一個實施例,控制器中樞320經由諸如前端總線(FSB)之類的多分支總 線、諸如快速通道互連(QPI)之類的點對點接口、或者類似的連接395與處理器310、315進 行通信。
[0049] 在一個實施例中,協處理器345是專用處理器,諸如例如高吞吐量MIC處理器、網 絡或通信處理器、壓縮引擎、圖形處理器、GPGPU、或嵌入式處理器等等。在一個實施例中,控 制器中樞320可以包括集成圖形加速器。
[0050] 在物理資源310、315之間可以存在包括架構、微架構、熱、和功耗特徵等的一系列 品質度量方面的各種差異。
[0051] 在一個實施例中,處理器310執行控制一般類型的數據處理操作的指令。協處理 器指令可嵌入在這些指令中。處理器310將這些協處理器指令識別為應當由附連的協處理 器345執行的類型。因此,處理器310在協處理器總線或者其他互連上將這些協處理器指 令(或者表示協處理器指令的控制信號)發布到協處理器345。協處理器345接受並執行 所接收的協處理器指令。
[0052] 現在參考圖4,所示為根據本發明的一實施例的更具體的第一示例性系統400的 框圖。如圖4所示,多處理器系統400是點對點互連繫統,並包括經由點對點互連450耦合 的第一處理器470和第二處理器480。處理器470和480中的每一個都可以是處理器200 的某一版本。在本發明的一個實施例中,處理器470和480分別是處理器310和315,而協 處理器438是協處理器345。在另一實施例中,處理器470和480分別是處理器310和協處 理器345。
[0053] 處理器470和480被示為分別包括集成存儲器控制器(MC)單元472和482。處 理器470還包括作為其總線控制器單元的一部分的點對點(P-P)接口 476和478 ;類似地, 第二處理器480包括點對點接口 486和488。處理器470、480可以使用點對點(P-P)電路 478、488經由P-P接口 450來交換信息。如圖4所示,MC472和482將各處理器耦合至相 應的存儲器,即存儲器432和存儲器434,這些存儲器可以是本地附連至相應的處理器的主 存儲器的部分。
[0054] 處理器470、480可各自經由使用點對點接口電路476、494、486、498的各個P-P接 口 452、454與晶片組490交換信息。晶片組490可以可選地經由高性能接口 439與協處理 器438交換信息。在一個實施例中,協處理器438是專用處理器,諸如例如高吞吐量MIC處 理器、網絡或通信處理器、壓縮引擎、圖形處理器、GPGPU、或嵌入式處理器等等。
[0055] 共享高速緩存(未示出)可以被包括在任一處理器之內,或被包括在兩個處理器 外部但仍經由P-P互連與這些處理器連接,從而如果將某處理器置於低功率模式時,可將 任一處理器或兩個處理器的本地高速緩存信息存儲在該共享高速緩存中。
[0056] 晶片組490可經由接口 496耦合至第一總線416。在一個實施例中,第一總線416 可以是外圍組件互連(PCI)總線,或諸如PCI Express總線或其它第三代I/O互連總線之 類的總線,但本發明的範圍並不受此限制。
[0057] 如圖4所示,各種I/O設備414可以連同總線橋418耦合到第一總線416,總線橋 將第一總線416耦合至第二總線420。在一個實施例中,諸如協處理器、高吞吐量MIC處理 器、GPGPU的處理器、加速器(諸如例如圖形加速器或數位訊號處理器(DSP)單元)、現場可 編程門陣列或任何其他處理器的一個或多個附加處理器415耦合到第一總線416。在一個 實施例中,第二總線420可以是低引腳計數(LPC)總線。各種設備可以被耦合至第二總線 420,在一個實施例中這些設備包括例如鍵盤/滑鼠422、通信設備427以及諸如可包括指令 /代碼和數據430的盤驅動器或其它大容量存儲設備的存儲單元428。此外,音頻1/0424 可以被耦合至第二總線420。注意,其它架構是可能的。例如,代替圖4的點對點架構,系統 可以實現多分支總線或其它這類架構。
[0058] 現在參考圖5,所示為根據本發明的實施例的更具體的第二示例性系統500的框 圖。圖4和圖5中的相同部件用相同附圖標記表示,並從圖5中省去了圖4中的某些方面, 以避免使圖5的其它方面變得模糊。
[0059] 圖5示出處理器470、480可分別包括集成存儲器和I/O控制邏輯("CL")472和 482。因此,CL472、482包括集成存儲器控制器單元並包括I/O控制邏輯。圖5不僅示出存 儲器432、434耦合至CL472、482,而且還示出I/O設備514也耦合至控制邏輯472、482。傳 統I/O設備515被耦合至晶片組490。
[0060] 現在參照圖6,所示出的是根據本發明一個實施例的S〇C900的框圖。在圖2中, 相似的部件具有同樣的附圖標記。另外,虛線框是更先進的SoC的可選特徵。在圖6中,互 連單元602被耦合至:應用處理器610,該應用處理器包括一個或多個核202A-N的集合以 及共享高速緩存單元206 ;系統代理單元210 ;總線控制器單元216 ;集成存儲器控制器單 元214 ;-組或一個或多個協處理器620,其可包括集成圖形邏輯、圖像處理器、音頻處理器 和視頻處理器;靜態隨機存取存儲器(SRAM)單元630 ;直接存儲器存取(DMA)單元632 ;以 及用於耦合至一個或多個外部顯示器的顯示單元640。在一個實施例中,協處理器620包括 專用處理器,諸如例如網絡或通信處理器、壓縮引擎、GPGPU、高吞吐量MIC處理器、或嵌入 式處理器等等。
[0061] 本文公開的機制的各實施例可以被實現在硬體、軟體、固件或這些實現方法的組 合中。本發明的實施例可實現為在可編程系統上執行的電腦程式或程序代碼,該可編程 系統包括至少一個處理器、存儲系統(包括易失性和非易失性存儲器和/或存儲元件)、至 少一個輸入設備以及至少一個輸出設備。
[0062] 可將程序代碼(諸如圖4中示出的代碼430)應用於輸入指令,以執行本文描述的 各功能並生成輸出信息。可以按已知方式將輸出信息應用於一個或多個輸出設備。為了本 申請的目的,處理系統包括具有諸如例如數位訊號處理器(DSP)、微控制器、專用集成電路 (ASIC)或微處理器之類的處理器的任何系統。
[0063] 程序代碼可以用高級程序化語言或面向對象的程式語言來實現,以便與處理系統 通信。在需要時,也可用彙編語言或機器語言來實現程序代碼。事實上,本文中描述的機制 不限於任何特定程式語言的範圍。在任一情形下,該語言可以是編譯語言或解釋語言。 [0064] 至少一個實施例的一個或多個方面可以由存儲在機器可讀介質上的表示性指令 來實現,指令表示處理器中的各種邏輯,指令在被機器讀取時使得該機器製作用於執行本 文所述的技術的邏輯。被稱為"IP核"的這些表示可以被存儲在有形的機器可讀介質上,並 被提供給多個客戶或生產設施以加載到實際製造該邏輯或處理器的製造機器中。
[0065] 這樣的機器可讀存儲介質可以包括但不限於通過機器或設備製造或形成的物品 的非瞬態的有形安排,其包括存儲介質,諸如:硬碟;任何其它類型的盤,包括軟盤、光碟、 緊緻盤只讀存儲器(CD-ROM)、緊緻盤可重寫(CD-RW)以及磁光碟;半導體器件,例如只讀存 儲器(ROM)、諸如動態隨機存取存儲器(DRAM)和靜態隨機存取存儲器(SRAM)之類的隨機 存取存儲器(RAM)、可擦除可編程只讀存儲器(EPROM)、快閃記憶體、電可擦除可編程只讀存儲器 (EEPR0M);相變存儲器(PCM);磁卡或光卡;或適於存儲電子指令的任何其它類型的介質。 [0066] 因此,本發明的各實施例還包括非瞬態的有形機器可讀介質,該介質包含指令或 包含設計數據,諸如硬體描述語言(HDL),它定義本文中描述的結構、電路、裝置、處理器和 /或系統特徵。這些實施例也被稱為程序產品。
[0067] 在一些情況下,指令轉換器可用來將指令從源指令集轉換至目標指令集。例如,指 令轉換器可以變換(例如使用靜態二進位變換、包括動態編譯的動態二進位變換)、變形、 仿真或以其它方式將指令轉換成將由核來處理的一個或多個其它指令。指令轉換器可以用 軟體、硬體、固件、或其組合實現。指令轉換器可以在處理器上、在處理器外、或者部分在處 理器上且部分在處理器外。
[0068] 圖7是根據本發明的各實施例的對照使用軟體指令轉換器將源指令集中的二進 制指令轉換成目標指令集中的二進位指令的框圖。在所示的實施例中,指令轉換器是軟體 指令轉換器,但作為替代,該指令轉換器可以用軟體、固件、硬體或其各種組合來實現。圖7 示出可以使用x86編譯器704來編譯利用高級語言702的程序,以生成可以由具有至少一 個x86指令集核的處理器716原生執行的x86二進位代碼706。具有至少一個x86指令集 核的處理器716表示任何處理器,這些處理器能通過兼容地執行或以其他方式處理以下內 容來執行與具有至少一個x86指令集核的英特爾處理器基本相同的功能:1)英特爾x86指 令集核的指令集的本質部分,或2)目標為在具有至少一個x86指令集核的英特爾處理器上 運行的應用或其它程序的目標代碼版本,以便取得與具有至少一個x86指令集核的英特爾 處理器基本相同的結果。x86編譯器704表示用於生成x86二進位代碼706 (例如,目標代 碼)的編譯器,該二進位代碼706可通過或不通過附加的連結處理在具有至少一個x86指 令集核的處理器716上執行。類似地,圖7示出可以使用替代的指令集編譯器708來編譯 利用高級語言702的程序,以生成可以由不具有至少一個x86指令集核的處理器714 (例如 具有執行加利福尼亞州桑尼維爾市的MIPS技術公司的MIPS指令集、和/或執行加利福尼 亞州桑尼維爾市的ARM控股公司的ARM指令集的核的處理器)原生執行的替代指令集二進 制代碼714。指令轉換器712被用來將x86二進位代碼706轉換成可以由不具有x86指令 集核的處理器714原生執行的代碼。該轉換後的代碼不大可能與替代性指令集二進位代碼 710相同,因為能夠這樣做的指令轉換器難以製造;然而,轉換後的代碼將完成一般操作並 由來自替代指令集的指令構成。因此,指令轉換器712通過仿真、模擬或任何其它過程來表 示允許不具有x86指令集處理器或核的處理器或其它電子設備執行x86二進位代碼706的 軟體、固件、硬體或其組合。
[0069] 本發明用於向量掩碼寄存器擴充的實施例
[0070] 以下描述的本發明實施例提供在目的地寄存器中擴充掩碼寄存器位。儘管這些實 施例是在8位掩碼寄存器值和八元素向量寄存器的上下文中描述的,但本發明的基本原理 不限於這些實現方式。例如,本發明的基本原理可以用於16位(字)、32位(雙字)、和64 位(四字)掩碼寄存器值以及16(字)、32(雙字)和64(四字)元素向量寄存器的上下文。
[0071] 圖8示出根據本發明一個實施例的擴充邏輯805,其用於響應於指令(下文中被稱 為KEXPAND指令)的執行,擴充掩碼寄存器值。在一個實施例中,該指令使得存儲在源掩碼 寄存器802中的掩碼寄存器位的每一個被向目的地寄存器820中擴充η次,其中η是存儲 在源寄存器801內的向量值的向量元素數量。在圖8所示的特定示例中,源寄存器801包 含八個值,3、1'、丨、1、8、〇、6和 ¥,並且掩碼寄存器802包含值1、0、1、1、1、0、0和1。在圖8 中,開頭三個掩碼位值(101)和最後掩碼位值(1)被示為擴充到目的地寄存器820中。雖 然為了簡潔並未示出,但是可以將剩餘的掩碼位值(1100)以類似方式擴充到目的地寄存 器820中。
[0072] 在一個實施例中,選擇復用器807由擴充邏輯805控制,以讀出並擴充8個掩碼寄 存器值的每一個。類似地,復用器810由擴充邏輯控制,以將所擴充的值轉移到目的地寄存 器820中。
[0073] 圖9中例示了根據本發明的一個實施例的方法。儘管該實施例可以在圖8所示的 裝置上實現,但是該實施例並不限於任何特定裝置。
[0074] 在902,將控制變量N設置為0。在903,選擇第一掩碼位(在位位置0中)用於擴 充,並且在904,向目的地寄存器中複製所選位Μ次,其中Μ是存儲在處理器的向量寄存器中 的向量元素的數量以及掩碼寄存器位的數量(例如,在圖8所示的示例中,是8)。如果在 905確定Ν到達其最大值,則該過程結束。如果否,則在906, Ν增加1,並且選擇(在903) 並擴充(在904)下一 Ν值。該過程繼續,直到所有掩碼寄存器位被擴充。
[0075] 總之,本文所述的本發明實施例將掩碼寄存器位的集合擴充到目的地寄存器中。 這些實施例是有益的,因為向向量寄存器中全部位置或位置子集廣播並擴充一個向量元素 是常見的基本向量操作。因此,需要針對掩碼寄存器具有類似行為,以便以類似方式複製與 向量元素對應的每個掩碼位,如同向量被廣播或複製一樣。同樣需要該功能來反應如下狀 況,其中一個有條件操作的結果應用於向量中的許多元素(例如,當外循環邊界測試應用 於內循環中所有η個元素時)。當然,它們僅僅是本發明有益性的說明性示例,本發明的基 本原理不限於這種使用情形。
[0076] 本發明的實施例可以包括以上描述的各個步驟。這些步驟可在用於致使通用或專 用處理器執行這些步驟的機器可執行指令中實現。另選地,這些步驟可由包含用於執行這 些步驟的硬連線邏輯的專用硬體組件來執行,或由編程的計算機組件和自定義的硬體組件 的任何組合來執行。
[0077] 如在此所述的,指令可以指硬體的具體配置,如被配置成執行特定操作或具有預 定功能的專用集成電路(ASIC),或者指存儲在實現為非瞬態計算機可讀介質的存儲器中的 軟體指令。因而,附圖中示出的技術可以使用存儲在一個或多個電子設備(例如,終端站、 網絡元件等等)並在其上執行的代碼和數據來實現。此類電子設備通過使用諸如非瞬態計 算機機器可讀存儲介質(例如,磁碟;光碟;隨機存取存儲器;只讀存儲器;快閃記憶體設備;相變 存儲器)和瞬態計算機機器可讀通信介質(例如,電、光、聲或其它形式的傳播信號--諸 如載波、紅外信號、數位訊號等)之類的計算機機器可讀介質來(內部地和/或通過網絡與 其他電子設備)存儲和傳遞代碼和數據。另外,這類電子設備一般包括與一個或多個其它 組件耦合的一組一個或多個處理器,所述一個或多個其它組件例如是一個或多個存儲設備 (非瞬態機器可讀存儲介質)、用戶輸入/輸出設備(例如鍵盤、觸控螢幕和/或顯示器)以 及網絡連接。該組處理器和其它組件的耦合一般是通過一個或多個總線和橋(也稱總線控 制器)達成的。存儲設備和攜帶網絡流量的信號分別表示一個或多個機器可讀存儲介質以 及機器可讀通信介質。因此,給定電子設備的存儲設備通常存儲代碼和/或數據以供在該 電子設備的一個或多個處理器上執行。當然,本發明的實施例的一個或多個部分可使用軟 件、固件和/或硬體的不同組合來實現。貫穿此詳細描述,為解釋起見,闡明了眾多具體細 節以提供對本發明的全面理解。然而,對本領域技術人員將顯見的是,沒有這些具體細節也 可實踐本發明。在某些實例中,並不詳細描述眾所周知的結構和功能以免淡化本發明的主 題。因此,本發明的範圍和精神應根據所附權利要求書來判斷。
[0078] 示例性指令格式
[0079] 本文中所描述的指令的實施例可以不同的格式體現。另外,在下文中詳述示例性 系統、架構、以及流水線。指令的實施例可在這些系統、架構、以及流水線上執行,但是不限 於詳述的系統、架構、以及流水線。
[0080] VEX編碼允許指令具有兩個以上操作數,並且允許SMD向量寄存器比128位長。 VEX前綴的使用提供了三個操作數(或者更多)句法。例如,先前的兩操作數指令執行改寫 源操作數的操作(諸如A = A+B)。VEX前綴的使用使操作數執行非破壞性操作,諸如A = B+C。
[0081] 圖10A示出示例性AVX指令格式,包括VEX前綴1002、實操作碼欄位1030、M〇D R/ Μ字節1040、SIB字節1050、位移欄位1062以及IMM81072。圖10B示出來自圖10A的哪些 欄位構成完整操作碼欄位1074和基礎操作欄位1042。圖10C示出來自圖10A的哪些欄位 構成寄存器索引欄位1044。
[0082] VEX前綴(字節0-2) 1002以三字節形式進行編碼。第一字節是格式欄位1040 (VEX 字節0,位[7:0]),該格式欄位1040包含明確的C4位元組值(用於區分C4指令格式的唯一 值)。第二-第三字節(VEX字節1-2)包括提供專用能力的多個位欄位。具體地,REX欄位 1005 (VEX 字節 1,位[7-5])由 VEX. R 位欄位(VEX 字節 1,位[7] - R)、VEX. X 位欄位(VEX 字 節1,位[6] - X)以及VEX. B位欄位(VEX字節1,位[5] - B)組成。這些指令的其他欄位對如 在本領域中已知的寄存器索引的較低三個位(rrr、XXX以及bbb)進行編碼,由此可通過增 加 VEX. R、VEX. X以及VEX. B來形成Rrrr、Xxxx以及Bbbb。操作碼映射欄位1015 (VEX字節 1,位[4:0] -mmmmm)包括對隱含的前導操作碼字節進行編碼的內容。W欄位1064(VEX字節 2,位[7] -W)由記號VEX. W表示,並且提供取決於該指令而不同的功能。VEX. WW1020 (VEX 字節2,位[6:3]-vvvv)的作用可包括如下:l)VEX.vvvv編碼第一源寄存器操作數且對具有 兩個或兩個以上源操作數的指令有效,第一源寄存器操作數以反轉(1補碼)形式被指定; 2) VEX. vvvv編碼目的地寄存器操作數,目的地寄存器操作數針對特定向量位移以1補碼的 形式被指定;或者3) VEX. vvvv不編碼任何操作數,保留該欄位,並且應當包含1111b。如果 VEX. L1068尺寸欄位(VEX字節2,位[2]-L) = 0,則它指示128位向量;如果VEX. L= 1,則 它指示256位向量。前綴編碼欄位1025(VEX字節2,位[1:0]-ρρ)提供了用於基礎操作字 段的附加位。
[0083] 實操作碼欄位1030(字節3)還被稱為操作碼字節。操作碼的一部分在該欄位中 被指定。
[0084] MOD R/Μ 欄位 1040(字節 4)包括 MOD 欄位 1042(位[7-6])、Reg 欄位 1044(位 [5-3])、以及R/Μ欄位1046(位[2-0])。Reg欄位1044的作用可包括如下:對目的地寄存 器操作數或源寄存器操作數(Rrrr中的rrr)進行編碼;或者被視為操作碼擴展且不用於對 任何指令操作數進行編碼。R/Μ欄位1046的作用可包括如下:對引用存儲器地址的指令操 作數進行編碼;或者對目的地寄存器操作數或源寄存器操作數進行編碼。
[0085] 比例、索弓丨、基址(SIB)-比例欄位1050(字節5)的內容包括用於存儲器地址生 成的SS652(位[7-6])。先前已經針對寄存器索引Xxxx和Bbbb參考了 SIB. xxxl054(位 [5-3])和 SIB.bbbl056(位[2-0])的內容。
[0086] 位移欄位1062和立即數欄位(IMM8) 1072包含地址數據。
[0087] 通用向量友好指令格式
[0088] 向量友好指令格式是適於向量指令(例如,存在專用於向量操作的特定欄位)的 指令格式。儘管描述了其中通過向量友好指令格式支持向量和標量運算兩者的實施例,但 是替代實施例僅使用通過向量友好指令格式的向量運算。
[0089] 圖11A-11B是示出根據本發明的實施例的通用向量友好指令格式及其指令模板 的框圖。圖11A是示出根據本發明的實施例的通用向量友好指令格式及其A類指令模板的 框圖;而圖11B是示出根據本發明的實施例的通用向量友好指令格式及其B類指令模板的 框圖。具體地,針對通用向量友好指令格式1100定義A類和B類指令模板,兩者包括無存 儲器訪問1105的指令模板和存儲器訪問1120的指令模板。在向量友好指令格式的上下文 中的術語"通用"指不束縛於任何專用指令集的指令格式。
[0090] 儘管將描述其中向量友好指令格式支持以下情況的本發明的實施例,即64位元組 向量操作數長度(或尺寸)與32位(4位元組)或64位(8位元組)數據元素寬度(或尺寸) (並且由此,64位元組向量由16雙字尺寸的元素或者替代地8四字尺寸的元素組成)、64位元組 向量操作數長度(或尺寸)與16位(2位元組)或8位(1位元組)數據元素寬度(或尺寸)、 32位元組向量操作數長度(或尺寸)與32位(4位元組)、64位(8位元組)、16位(2位元組)、或 8位(1位元組)數據元素寬度(或尺寸)、以及16位元組向量操作數長度(或尺寸)與32位 (4位元組)、64位(8位元組)、16位(2位元組)、或8位(1位元組)數據元素寬度(或尺寸),但是 替代實施例可支持更大、更小、和/或不同的向量操作數尺寸(例如,256位元組向量操作數) 與更大、更小或不同的數據元素寬度(例如,128位(16位元組)數據元素寬度)。
[0091] 圖11A中的A類指令模板包括:1)在無存儲器訪問1105的指令模板內,示出無 存儲器訪問的完全捨入控制型操作1110的指令模板、以及無存儲器訪問的數據變換型操 作1115的指令模板;以及2)在存儲器訪問1120的指令模板內,示出存儲器訪問的時效性 1125的指令模板和存儲器訪問的非時效性1130的指令模板。圖11B中的B類指令模板包 括:1)在無存儲器訪問1105的指令模板內,示出無存儲器訪問的寫掩碼控制的部分捨入控 制型操作1112的指令模板以及無存儲器訪問的寫掩碼控制的vsize型操作1117的指令模 板;以及2)在存儲器訪問1120的指令模板內,示出存儲器訪問的寫掩碼控制1127的指令 模板。
[0092] 通用向量友好指令格式1100包括以下列出的按照在圖11A-11B中示出的順序的 如下欄位。
[0093] 格式欄位1140 -該欄位中的特定值(指令格式標識符值)唯一地標識向量友好 指令格式,並且由此標識指令在指令流中以向量友好指令格式出現。由此,該欄位對於僅具 有通用向量友好指令格式的指令集是不需要的,在這個意義上該欄位是任選的。
[0094] 基礎操作欄位1142 -其內容區分不同的基礎操作。
[0095] 寄存器索引欄位1144-其內容直接或者通過地址生成來指定源或目的地操作數 在寄存器中或者在存儲器中的位置。這些欄位包括足夠數量的位以從PxQ(例如,32x512、 16xl28、32xl024、64xl024)個寄存器組選擇N個寄存器。儘管在一個實施例中N可高達三個 源和一個目的地寄存器,但是替代實施例可支持更多或更少的源和目的地寄存器(例如, 可支持高達兩個源,其中這些源中的一個源還用作目的地,可支持高達三個源,其中這些源 中的一個源還用作目的地,可支持高達兩個源和一個目的地)。
[0096] 修飾符(modifier)欄位1146 -其內容將指定存儲器訪問的以通用向量指令格式 出現的指令與不指定存儲器訪問的以通用向量指令格式出現的指令區分開;即在無存儲器 訪問1105的指令模板與存儲器訪問1120的指令模板之間進行區分。存儲器訪問操作讀 取和/或寫入到存儲器層次(在一些情況下,使用寄存器中的值來指定源和/或目的地地 址),而非存儲器訪問操作不這樣(例如,源和/或目的地是寄存器)。儘管在一個實施例 中,該欄位還在三種不同的方式之間選擇以執行存儲器地址計算,但是替代實施例可支持 更多、更少或不同的方式來執行存儲器地址計算。
[0097] 擴充操作欄位1150 -其內容區分除基礎操作以外還要執行各種不同操作中的哪 一個操作。該欄位是針對上下文的。在本發明的一個實施例中,該欄位被分成類欄位1168、 α欄位1152、以及β欄位1154。擴充操作欄位1150允許在單一指令而非2、3或4個指令 中執行多組共同的操作。
[0098] 比例欄位1160 -其內容允許用於存儲器地址生成(例如,用於使用2_*索引+ 基址的地址生成)的索引欄位的內容的按比例縮放。
[0099] 位移欄位1162Α -其內容用作存儲器地址生成的一部分(例如,用於使用2_* 索引+基址+位移的地址生成)。
[0100] 位移因數欄位1162Β (注意,位移欄位1162Α直接在位移因數欄位1162Β上的並置 指示使用一個或另一個)一其內容用作地址生成的一部分,它指定通過存儲器訪問的尺寸 (Ν)按比例縮放的位移因數,其中Ν是存儲器訪問中的字節數量(例如,用於使用2?*索引 +基址+按比例縮放的位移的地址生成)。忽略冗餘的低階位,並且因此將位移因數欄位的 內容乘以存儲器操作數總尺寸(Ν)以生成在計算有效地址中使用的最終位移。Ν的值由處 理器硬體在運行時基於完整操作碼欄位1174(稍後在本文中描述)和數據操縱欄位1154C 確定。位移欄位1162A和位移因數欄位1162B可以不用於無存儲器訪問1105的指令模板 和/或不同的實施例可實現兩者中的僅一個或不實現兩者中的任一個,在這個意義上位移 欄位1162A和位移因數欄位1162B是任選的。
[0101] 數據元素寬度欄位1164-其內容區分使用多個數據元素寬度中的哪一個(在一 些實施例中用於所有指令,在其他實施例中只用於一些指令)。如果支持僅一個數據元素寬 度和/或使用操作碼的某一方面來支持數據元素寬度,則該欄位是不需要的,在這個意義 上該欄位是任選的。
[0102] 寫掩碼欄位1170 -其內容在每一數據元素位置的基礎上控制目的地向量操作數 中的數據元素位置是否反映基礎操作和擴充操作的結果。A類指令模板支持合併-寫掩碼 操作,而B類指令模板支持合併寫掩碼操作和歸零寫掩碼操作兩者。當合併時,向量掩碼允 許在執行任何操作期間保護目的地中的任何元素集免於更新(由基礎操作和擴充操作指 定);在另一實施例中,保持其中對應掩碼位具有〇的目的地的每一元素的舊值。相反,當 歸零時,向量掩碼允許在執行任何操作期間使目的地中的任何元素集歸零(由基礎操作和 擴充操作指定);在一個實施例中,目的地的元素在對應掩碼位具有〇值時被設為〇。該功 能的子集是控制執行的操作的向量長度的能力(即,從第一個到最後一個要修改的元素的 跨度),然而,被修改的元素不一定要是連續的。由此,寫掩碼欄位1170允許部分向量操作, 這包括加載、存儲、算術、邏輯等。儘管描述了其中寫掩碼欄位1170的內容選擇了多個寫掩 碼寄存器中的包含要使用的寫掩碼的一個寫掩碼寄存器(並且由此寫掩碼欄位1170的內 容間接地標識了要執行的掩碼操作)的本發明的實施例,但是替代實施例相反或另外允許 掩碼寫欄位1170的內容直接地指定要執行的掩碼操作。
[0103] 立即數欄位1172 -其內容允許對立即數的指定。該欄位在實現不支持立即數的 通用向量友好格式中不存在且在不使用立即數的指令中不存在,在這個意義上該欄位是任 選的。
[0104] 類欄位1168 -其內容在不同類的指令之間進行區分。參考圖11A-B,該欄位的內 容在A類和B類指令之間進行選擇。在圖11A-B中,圓角方形用於指示專用值存在於欄位 中(例如,在圖11A-B中分別用於類欄位1168的A類1168A和B類1168B)。
[0105] A類指令模板
[0106] 在A類非存儲器訪問1105的指令模板的情況下,α欄位1152被解釋為其內容 區分要執行不同擴充操作類型中的哪一種(例如,針對無存儲器訪問的捨入型操作1110 和無存儲器訪問的數據變換型操作1115的指令模板分別指定捨入1152Α. 1和數據變換 1152Α.2)的RS欄位1152Α,而β欄位1154區分要執行指定類型的操作中的哪一種。在無 存儲器訪問1105指令模板中,比例欄位1160、位移欄位1162Α以及位移比例欄位1162Β不 存在。
[0107] 無存儲器訪問的指令模板一完全捨入控制型操作
[0108] 在無存儲器訪問的完全捨入控制型操作1110的指令模板中,β欄位1154被解釋 為其內容提供靜態捨入的捨入控制欄位1154Α。儘管在本發明的所述實施例中捨入控制字 段1154Α包括抑制所有浮點異常(SAE)欄位1156和捨入操作控制欄位1158,但是替代實施 例可支持、可將這些概念兩者都編碼成相同的欄位或者僅具有這些概念/欄位中的一個或 另一個(例如,可僅有捨入操作控制欄位1158)。
[0109] SAE欄位1156 -其內容區分是否停用異常事件報告;當SAE欄位1156的內容指示 啟用抑制時,給定指令不報告任何種類的浮點異常標誌且不喚起任何浮點異常處理程序。
[0110] 捨入操作控制欄位1158 -其內容區分執行一組捨入操作中的哪一個(例如,向上 捨入、向下捨入、向零捨入、以及就近捨入)。由此,捨入操作控制欄位1158允許在每一指令 的基礎上改變捨入模式。在其中處理器包括用於指定捨入模式的控制寄存器的本發明的一 個實施例中,捨入操作控制欄位1150的內容優先於該寄存器值。
[0111] 無存儲器訪問的指令模板一數據變換型操作
[0112] 在無存儲器訪問的數據變換型操作1115的指令模板中,β欄位1154被解釋為數 據變換欄位1154Β,其內容區分要執行多個數據變換中的哪一個(例如,無數據變換、混合、 廣播)。
[0113] 在Α類存儲器訪問1120的指令模板的情況下,α欄位1152被解釋為驅逐提示 欄位1152Β,其內容區分要使用驅逐提示中的哪一個(在圖11Α中,對於存儲器訪問時效性 1125的指令模板和存儲器訪問非時效性1130的指令模板分別指定時效性的1152Β. 1和非 時效性的1152Β.2),而β欄位1154被解釋為數據操縱欄位1154C,其內容區分要執行多 個數據操縱操作(也稱為基元(primitive))中的哪一個(例如,無操縱、廣播、源的向上轉 換、以及目的地的向下轉換)。存儲器訪問1120的指令模板包括比例欄位1160、以及任選 的位移欄位1162A或位移比例欄位1162B。
[0114] 向量存儲器指令使用轉換支持來執行來自存儲器的向量加載並將向量存儲到存 儲器。如同尋常的向量指令,向量存儲器指令以數據元素式的方式與存儲器來回傳輸數據, 其中實際傳輸的元素由選為寫掩碼的向量掩碼的內容規定。
[0115] 存儲器訪問的指令模板一時效性的
[0116] 時效性的數據是可能足夠快地重新使用以從高速緩存受益的數據。然而,這是提 示,且不同的處理器可以不同的方式實現它,包括完全忽略該提示。
[0117] 存儲器訪問的指令模板一非時效性的
[0118] 非時效性的數據是不可能足夠快地重新使用以從第一級高速緩存中的高速緩存 受益且應當被給予驅逐優先級的數據。然而,這是提示,且不同的處理器可以不同的方式實 現它,包括完全忽略該提示。
[0119] B類指令模板
[0120] 在B類指令模板的情況下,α欄位1152被解釋為寫掩碼控制⑵欄位1152C,其 內容區分由寫掩碼欄位1170控制的寫掩碼操作應當是合併還是歸零。
[0121] 在Β類非存儲器訪問1105的指令模板的情況下,β欄位1154的一部分被解釋 為RL欄位1157Α,其內容區分要執行不同擴充操作類型中的哪一種(例如,針對無存儲器 訪問的寫掩碼控制部分捨入控制類型操作1112的指令模板和無存儲器訪問的寫掩碼控制 VSIZE型操作1117的指令模板分別指定捨入1157Α. 1和向量長度(VSIZE) 1157Α. 2),而β 欄位1154的其餘部分區分要執行指定類型的操作中的哪一種。在無存儲器訪問1105指令 模板中,比例欄位1160、位移欄位1162Α以及位移比例欄位1162Β不存在。
[0122] 在無存儲器訪問的寫掩碼控制的部分捨入控制型操作1110的指令模板中,β字 段1154的其餘部分被解釋為捨入操作欄位1159Α,並且停用異常事件報告(給定指令不報 告任何種類的浮點異常標誌且不喚起任何浮點異常處理程序)。
[0123] 捨入操作控制欄位1159Α -正如捨入操作控制欄位1158,其內容區分執行一組舍 入操作中的哪一個(例如,向上捨入、向下捨入、向零捨入、以及就近捨入)。由此,捨入操作 控制欄位1159Α允許在每一指令的基礎上改變捨入模式。在其中處理器包括用於指定捨入 模式的控制寄存器的本發明的一個實施例中,捨入操作控制欄位1150的內容優先於該寄 存器值。
[0124] 在無存儲器訪問的寫掩碼控制VSIZE型操作1117的指令模板中,β欄位1154的 其餘部分被解釋為向量長度欄位1159Β,其內容區分要執行多個數據向量長度中的哪一個 (例如,128位元組、256位元組、或512位元組)。
[0125] 在Β類存儲器訪問1120的指令模板的情況下,β欄位1154的一部分被解釋為廣 播欄位1157Β,其內容區分是否要執行廣播型數據操縱操作,而β欄位1154的其餘部分被 解釋為向量長度欄位1159Β。存儲器訪問1120的指令模板包括比例欄位1160、以及任選的 位移欄位1162Α或位移比例欄位1162Β。
[0126] 針對通用向量友好指令格式1100,示出完整操作碼欄位1174包括格式欄位1140、 基礎操作欄位1142以及數據元素寬度欄位1164。儘管示出了其中完整操作碼欄位1174包 括所有這些欄位的一個實施例,但是在不支持所有這些欄位的實施例中,完整操作碼欄位 1174包括少於所有的這些欄位。完整操作碼欄位1174提供操作碼(opcode)。
[0127] 擴充操作欄位1150、數據元素寬度欄位1164以及寫掩碼欄位1170允許在每一指 令的基礎上以通用向量友好指令格式指定這些特徵。
[0128] 寫掩碼欄位和數據元素寬度欄位的組合創建各種類型的指令,因為這些指令允許 基於不同的數據元素寬度應用該掩碼。
[0129] 在A類和B類內出現的各種指令模板在不同的情形下是有益的。在本發明的一些 實施例中,不同處理器或者處理器內的不同核可支持僅A類、僅B類、或者可支持兩類。舉 例而言,旨在用於通用計算的高性能通用無序核可僅支持B類,旨在主要用於圖形和/或科 學(吞吐量)計算的核可僅支持A類,並且旨在用於兩者的核可支持兩者(當然,具有來自 兩類的模板和指令的一些混合、但是並非來自兩類的所有模板和指令的核在本發明的範圍 內)。同樣,單一處理器可包括多個核,所有核支持相同的類或者其中不同的核支持不同的 類。舉例而言,在具有單獨的圖形和通用核的處理器中,圖形核中的旨在主要用於圖形和/ 或科學計算的一個核可僅支持A類,而通用核中的一個或多個可以是具有旨在用於通用計 算的僅支持B類的無序執行和寄存器重命名的高性能通用核。不具有單獨的圖形核的另一 處理器可包括既支持A類又支持B類的一個或多個通用有序或無序核。當然,在本發明的不 同實施例中,來自一類的特徵也可在其他類中實現。可使以高級語言撰寫的程序成為(例 如,及時編譯或者統計編譯)各種不同的可執行形式,包括:1)僅具有用於執行的目標處理 器支持的類的指令的形式;或者2)具有使用所有類的指令的不同組合而編寫的替代例程 且具有選擇這些例程以基於由當前正在執行代碼的處理器支持的指令而執行的控制流代 碼的形式。
[0130] 圖12A-D是示出根據本發明的實施例的示例性專用向量友好指令格式的框圖。圖 12示出專用向量友好指令格式1200,其指定位置、尺寸、解釋和欄位的次序、以及那些欄位 中的一些欄位的值,在這個意義上向量友好指令格式1200是專用的。專用向量友好指令格 式1200可用於擴展x86指令集,並且由此一些欄位類似於在現有x86指令集及其擴展(例 如,AVX)中使用的那些欄位或與之相同。該格式保持與具有擴展的現有x86指令集的前綴 編碼欄位、實操作碼字節欄位、MOD R/M欄位、SIB欄位、位移欄位、以及立即數欄位一致。示 出來自圖11的欄位,來自圖12的欄位映射到來自圖11的欄位。
[0131] 應當理解,雖然出於說明的目的在通用向量友好指令格式1100的上下文中參考 專用向量友好指令格式1200描述了本發明的實施例,但是本發明不限於專用向量友好指 令格式1200,除非另有聲明。例如,通用向量友好指令格式1100構想各種欄位的各種可能 的尺寸,而專用向量友好指令格式1200被示為具有特定尺寸的欄位。作為具體示例,儘管 在專用向量友好指令格式1200中數據元素寬度欄位1164被示為一位欄位,但是本發明不 限於此(即,通用向量友好指令格式1100構想數據元素寬度欄位1164的其他尺寸)。
[0132] 通用向量友好指令格式1100包括以下列出的按照圖12A中示出的順序的如下字 段。
[0133] EVEX前綴(字節0-3) 1202 -以四字節形式進行編碼。
[0134] 格式欄位1140(EVEX字節0,位[7:0]) -第一字節(EVEX字節0)是格式欄位 1140,並且它包含0x62 (在本發明的一個實施例中用於區分向量友好指令格式的唯一值)。
[0135] 第二一第四字節(EVEX字節1-3)包括提供專用能力的多個位欄位。
[0136] REX 欄位 1205 (EVEX 字節 1,位[7-5]) -由 EVEX. R 位欄位(EVEX 字節 1,位[7]-R)、EVEX.X 位欄位(EVEX 字節 1,位[6] -X)以及(1157BEX 字節 1,位[5] -B)組成。EVEX. R、EVEX. X和EVEX. B位欄位提供與對應VEX位欄位相同的功能,並且使用1補碼的形式進行 編碼,g卩ΖΜΜ0被編碼為1111B,ZMM15被編碼為0000B。這些指令的其他欄位對如在本領域 中已知的寄存器索引的較低三個位(rrr、XXX、以及bbb)進行編碼,由此可通過增加 EVEX. R、EVEX. X 以及 EVEX. B 來形成 Rrrr、Xxxx 以及 Bbbb。
[0137] REX'欄位1110-這是REX'欄位1110的第一部分,並且是用於對擴展的32個 寄存器集合的較高16個或較低16個寄存器進行編碼的EVEX. R'位欄位(EVEX字節1,位
[4] -R')。在本發明的一個實施例中,該位與以下指示的其他位一起以位反轉的格式存儲 以(在公知x86的32位模式下)與實操作碼字節是62的BOUND指令進行區分,但是在MOD R/M欄位(在下文中描述)中不接受MOD欄位中的值11 ;本發明的替代實施例不以反轉的 格式存儲該指示的位以及其他指示的位。值1用於對較低16個寄存器進行編碼。換句話 說,通過組合EVEX. R'、EVEX. R、以及來自其他欄位的其他RRR來形成R' Rrrr。
[0138] 操作碼映射欄位1215(EVEX字節1,位[3:0] -_m)-其內容對隱含的前導操作 碼字節(0F、0F38、或0F3)進行編碼。
[0139] 數據元素寬度欄位1164 (EVEX字節2,位[7] -W) -由記號EVEX. W表示。EVEX. W 用於定義數據類型(32位數據元素或64位數據元素)的粒度(尺寸)。
[0140] EVEX. vvvvl220 (EVEX 字節 2,位[6:3]-vvvv) - EVEX. vvvv 的作用可包括如下:1) EVEX. vvvv編碼第一源寄存器操作數且對具有兩個或兩個以上源操作數的指令有效,第一 源寄存器操作數以反轉(1補碼)的形式被指定;2)EVEX. vvvv編碼目的地寄存器操作數, 目的地寄存器操作數針對特定向量位移以1補碼的形式被指定;或者3)EVEX. vvvv不編碼 任何操作數,保留該欄位,並且應當包含1111b。由此,EVEX. ww欄位1220對以反轉(1補 碼)的形式存儲的第一源寄存器指定符的4個低階位進行編碼。取決於該指令,額外不同 的EVEX位欄位用於將指定符尺寸擴展到32個寄存器。
[0141] EVEX. U1168類欄位(EVEX字節2,位[2]-U) -如果EVEX. U = 0,則它指示A類或 EVEX. U0 ;如果 EVEX. U = 1,則它指示 B 類或 EVEX. U1。
[0142] 前綴編碼欄位1225(EVEX字節2,位[1:0]-ρρ) -提供了用於基礎操作欄位的附加 位。除了對以EVEX前綴格式的傳統SSE指令提供支持以外,這也具有壓縮SMD前綴的益 處(EVEX前綴只需要2位,而不是需要字節來表達SMD前綴)。在一個實施例中,為了支 持使用以傳統格式和以EVEX前綴格式的SMD前綴(66H、F2H、F3H)的傳統SSE指令,將這 些傳統SMD前綴編碼成SMD前綴編碼欄位;並且在運行時在提供給解碼器的PLA之前被 擴展成傳統SMD前綴(因此PLA可執行傳統和EVEX格式的這些傳統指令,而無需修改)。 雖然較新的指令可將EVEX前綴編碼欄位的內容直接作為操作碼擴展,但是為了一致性,特 定實施例以類似的方式擴展,但允許由這些傳統SIMD前綴指定不同的含義。替代實施例可 重新設計PLA以支持2位SMD前綴編碼,並且由此不需要擴展。
[0143] α 欄位 1152 (EVEX 字節 3,位[7] -H1,也稱為 EVEX. HI、EVEX. rs、EVEX. RL、EVEX. 寫掩碼控制、以及EVEX. N;也以α示出)一如先前所述,該欄位是針對上下文的。
[0144] β欄位1154(EVEX字節3,位[6:4]-SSS,也稱為EVEX·s2_(l、EVEX·r 2_(l、EVEX·rrl、 EVEX. LL0、EVEX. LLB;也以β β β示出)一如先前所述,該欄位是針對上下文的。
[0145] REX'欄位1110 -這是REX'欄位的其餘部分,並且是可用於對擴展的32個寄存器 集合的較高16個或較低16個寄存器進行編碼的EVEX. V'位欄位(EVEX字節3,位[3] -V')。 該位以位反轉的格式存儲。值1用於對較低16個寄存器進行編碼。換句話說,通過組合 EVEX. V'、EVEX. vvvv 來形成 V' VVVV。
[0146] 寫掩碼欄位1170(EVEX字節3,位[2:0]_kkk)-其內容指定寫掩碼寄存器中的寄 存器索引,如先前所述。在本發明的一個實施例中,特定值EVEX. kkk = 000具有暗示沒有 寫掩碼用於特定指令的特殊行為(這可以各種方式實現,包括使用硬連線到所有的寫掩碼 或者旁路掩碼硬體的硬體來實現)。
[0147] 實操作碼欄位1230(字節4)還被稱為操作碼字節。操作碼的一部分在該欄位中 被指定。
[0148] MOD R/M欄位1240(字節5)包括MOD欄位1242、Reg欄位1244、以及R/M欄位 1246。如先前所述的,MOD欄位1242的內容將存儲器訪問和非存儲器訪問操作區分開。Reg 欄位1244的作用可被歸結為兩種情形:對目的地寄存器操作數或源寄存器操作數進行編 碼;或者被視為操作碼擴展且不用於對任何指令操作數進行編碼。R/M欄位1246的作用可 包括如下:對引用存儲器地址的指令操作數進行編碼;或者對目的地寄存器操作數或源寄 存器操作數進行編碼。
[0149] 比例、索引、基址(SIB)字節(字節6)-如先前所述的,比例欄位1150的內容用於 存儲器地址生成。SIB. xxxl254和SIB. bbbl256 -先前已經針對寄存器索引Xxxx和Bbbb 提及了這些欄位的內容。
[0150] 位移欄位1162A (字節7-10) -當MOD欄位1242包含10時,字節7-10是位移字 段1162A,並且它與傳統32位位移(disp32) -樣地工作,並且以字節粒度工作。
[0151] 位移因數欄位1162B(字節7) -當MOD欄位1242包含01時,字節7是位移因數 欄位1162B。該欄位的位置與傳統x86指令集8位位移(disp8)的位置相同,它以字節粒 度工作。由於disp8是符號擴展的,因此它僅能在-128和127位元組偏移量之間尋址;在64 字節高速緩存行的方面,disp8使用可被設為僅四個真正有用的值-128、-64、0和64的8 位;由於常常需要更大的範圍,所以使用disp32 ;然而,disp32需要4個字節。與disp8和 disp32對比,位移因數欄位1162B是disp8的重新解釋;當使用位移因數欄位1162B時,通 過將位移因數欄位的內容乘以存儲器操作數訪問的尺寸(N)來確定實際位移。該類型的位 移被稱為disp8*N。這減小了平均指令長度(單個字節用於位移,但具有大得多的範圍)。 這種壓縮位移基於有效位移是存儲器訪問的粒度的倍數的假設,並且由此地址偏移量的冗 餘低階位不需要被編碼。換句話說,位移因數欄位1162B替代傳統x86指令集8位位移。由 此,位移因數欄位1162B以與x86指令集8位位移相同的方式(因此在ModRM/SIB編碼規 則中沒有變化)進行編碼,唯一的不同在於,將disp8超載至disp8*N。換句話說,在編碼規 則或編碼長度中沒有變化,而僅在通過硬體對位移值的解釋中有變化(這需要按存儲器操 作數的尺寸按比例縮放位移量以獲得字節式地址偏移量)。
[0152] 立即數欄位1172如先前所述地操作。
[0153] 完整操作碼欄位
[0154] 圖12B是示出根據本發明的實施例的構成完整操作碼欄位1174的具有專用向量 友好指令格式1200的欄位的框圖。具體地,完整操作碼欄位1174包括格式欄位1140、基礎 操作欄位1142、以及數據元素寬度(W)欄位1164。基礎操作欄位1142包括前綴編碼欄位 1225、操作碼映射欄位1215以及實操作碼欄位1230。
[0155] 寄存器索引欄位
[0156] 圖12C是示出根據本發明的一個實施例的構成寄存器索引欄位1144的具有專用 向量友好指令格式1200的欄位的框圖。具體地,寄存器索引欄位1144包括REX欄位1205、 REX' 欄位 1210、M0DR/M. reg 欄位 1244、M0DR/M. r/m 欄位 1246、VVVV 欄位 1220、XXX 欄位 1254以及bbb欄位1256。
[0157] 擴充操作欄位
[0158] 圖12D是示出根據本發明的一個實施例的構成擴充操作欄位1150的具有專用向 量友好指令格式1200的欄位的框圖。當類(U)欄位1168包含0時,它表明EVEX.U0(A類 1,168A);當它包含1時,它表明EVEX. U1(B類1168B)。當U = 0且MOD欄位1242包含11(表 明無存儲器訪問操作)時,α欄位1152(EVEX字節3,位[7] -EH)被解釋為rs欄位1152A。 當rs欄位1152A包含1(捨入1,152A. 1)時,β欄位1154(EVEX字節3,位[6:4] -SSS)被 解釋為捨入控制欄位1154A。捨入控制欄位1154A包括一位SAE欄位1156和兩位捨入操作 欄位1158。當rs欄位1152A包含0(數據變換1,152A. 2)時,β欄位1154(EVEX字節3, 位[6:4] - SSS)被解釋為三位數據變換欄位1154B。當U = 0且MOD欄位1242包含00、01 或10 (表明存儲器訪問操作)時,α欄位1152 (EVEX字節3,位[7] - EH)被解釋為驅逐提 示(ΕΗ)欄位1152Β且β欄位1154(EVEX字節3,位[6:4] -SSS)被解釋為三位數據操縱字 段 1154C。
[0159] 當U= 1時,α欄位1152(EVEX字節3,位[7] -EH)被解釋為寫掩碼控制(Z)欄位 1152C。當U= 1且MOD欄位1242包含11 (表明無存儲器訪問操作)時,β欄位1154的一 部分(EVEX字節3,位[4] -SQ)被解釋為RL欄位1157Α;當它包含1(捨入1157Α. 1)時,β 欄位1154的其餘部分(EVEX字節3,位[6-5] - S2J被解釋為捨入操作欄位1159Α,而當RL 欄位1157A包含0(VSIZE1157.A2)時,β欄位1154的其餘部分(EVEX字節3,位[6-5=-?^) 被解釋為向量長度欄位1159B(EVEX字節3,位[6-5] -Lg)。當U= 1且MOD欄位1242包 含00、01或10(表明存儲器訪問操作)時,β欄位1154(EVEX字節3,位[6:4] -SSS)被解 釋為向量長度欄位1159B(EVEX字節3,位[6-5] -Lg)和廣播欄位1157B(EVEX字節3,位 [4] - B)。
[0160] 圖13是根據本發明的一個實施例的寄存器架構1300的框圖。在所示出的實施 例中,有32個512位寬的向量寄存器1310 ;這些寄存器被引用為zmmO到zmm31。較低的 16zmm寄存器的較低階256個位覆蓋在寄存器ymm〇-16上。較低的16zmm寄存器的較低階 128個位(ymm寄存器的較低階128個位)覆蓋在寄存器xmmO-15上。專用向量友好指令格 式1200對這些覆蓋的寄存器組操作,如在以下表格中所示的。
[0161]
[0162]

【權利要求】
1. 一種用於執行一個或多個指令以執行以下操作的處理器: 讀取存儲在掩碼寄存器中的每個掩碼寄存器位,所述掩碼寄存器包含用於對存儲在向 量寄存器集合中的向量值執行操作的掩碼值;以及 向目的地寄存器複製每個掩碼寄存器位N次,其中N是存儲在每個向量寄存器中的向 量元素的數量。
2. 如權利要求1所述的處理器,其特徵在於,N等於8,並且所述掩碼寄存器存儲8個 掩碼寄存器位。
3. 如權利要求1所述的處理器,其特徵在於,還包括: 執行指令以使用存儲在所述目的地寄存器中的所複製掩碼寄存器位執行操作。
4. 如權利要求1所述的處理器,其特徵在於,N等於數據字。
5. 如權利要求1所述的處理器,其特徵在於,N等於雙字。
6. 如權利要求1所述的處理器,其特徵在於,N等於四字。
7. -種方法,包括: 讀取存儲在掩碼寄存器中的每個掩碼寄存器位,所述掩碼寄存器包含用於對存儲在向 量寄存器集合中的向量值執行操作的掩碼值;以及 向目的地寄存器複製每個掩碼寄存器位N次,其中N是存儲在每個向量寄存器中的向 量元素的數量。
8. 如權利要求7所述的方法,其特徵在於,N等於8,並且所述掩碼寄存器存儲8個掩 碼寄存器位。
9. 如權利要求7所述的方法,其特徵在於,還包括: 執行指令以使用存儲在所述目的地寄存器中的所複製掩碼寄存器位執行操作。
10. 如權利要求7所述的方法,其特徵在於,N等於數據字。
11. 如權利要求7所述的方法,其特徵在於,N等於雙字。
12. -種設備,包括: 用於讀取存儲在掩碼寄存器中的每個掩碼寄存器位的裝置,所述掩碼寄存器包含用於 對存儲在向量寄存器集合中的向量值執行操作的掩碼值;以及 用於向目的地寄存器複製每個掩碼寄存器位N次的裝置,其中N是存儲在每個向量寄 存器中的向量元素的數量。
13. 如權利要求12所述的設備,其特徵在於,N等於8,並且所述掩碼寄存器存儲8個 掩碼寄存器位。
14. 如權利要求12所述的設備,其特徵在於,還包括: 用於執行指令以使用存儲在所述目的地寄存器中的所複製掩碼寄存器位執行操作的 裝直。
15. 如權利要求12所述的設備,其特徵在於,Ν等於數據字。
16. 如權利要求12所述的設備,其特徵在於,Ν等於雙字。
17. -種計算機系統,包括: 用於存儲程序指令和數據的存儲器; 用於執行所述程序指令中的一個或多個以執行以下操作的處理器: 讀取存儲在掩碼寄存器中的每個掩碼寄存器位,所述掩碼寄存器包含用於對存儲在向 量寄存器集合中的向量值執行操作的掩碼值;以及 向目的地寄存器複製每個掩碼寄存器位N次,其中N是存儲在每個向量寄存器中的向 量元素的數量。
18. 如權利要求17所述的系統,其特徵在於,N等於8,並且所述掩碼寄存器存儲8個 掩碼寄存器位。
19. 如權利要求17所述的系統,其特徵在於,還包括: 執行指令以使用存儲在所述目的地寄存器中的所複製掩碼寄存器位執行操作。
20. 如權利要求17所述的系統,其特徵在於,N等於數據字。
21. 如權利要求17所述的系統,其特徵在於,N等於雙字。
【文檔編號】G06F9/30GK104126172SQ201180076402
【公開日】2014年10月29日 申請日期:2011年12月22日 優先權日:2011年12月22日
【發明者】E·烏爾德-阿邁德-瓦爾 申請人:英特爾公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀