在屏蔽寄存器中反轉(zhuǎn)和置換位的裝置和方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明的實施例總體上涉及計算機系統(tǒng)領(lǐng)域。更具體地,本發(fā)明的實施例涉及用 于在屏蔽寄存器中反轉(zhuǎn)和置換位的裝置和方法。
【背景技術(shù)】
[0002] -般背景
[0003] 指令集或指令集架構(gòu)(ISA)是計算機架構(gòu)中涉及編程的部分,包括本機數(shù)據(jù)類 型、指令、寄存器架構(gòu)、尋址模式、存儲器架構(gòu)、中斷和異常處理、以及外部輸入和輸出(1/ 0)。應(yīng)當注意的是,在本文中術(shù)語"指令" 一般指的是宏指令,即提供給處理器以供執(zhí)行的 指令,與作為處理器解碼器對宏指令解碼的結(jié)果的微指令或微操作完全不同。
[0004] 指令集架構(gòu)與微架構(gòu)不同,微架構(gòu)是用于實現(xiàn)指令集的一組處理器設(shè)計技術(shù)。具 有不同微架構(gòu)的處理器能夠共享共同的指令集。例如,Intel?Pentium4處理器、Intel? Core?處理器以及來自SunnyvaleCA的AdvancedMicroDevices公司的處理器實現(xiàn)基本 相同版本的x86指令集(具有添加有更新版本的一些擴展),但是具有不同的內(nèi)部設(shè)計。例 如,ISA的相同寄存器架構(gòu)可以以不同的方式在不同微架構(gòu)中使用已知的技術(shù)來實施,包括 專用物理寄存器、使用寄存器重命名機制的一個或多個動態(tài)分配物理寄存器(例如,如美 國專利號5, 446, 912描述的使用寄存器別名表(RAT)、重排序緩沖器(R0B)和引退寄存器文 件;如美國專利號5, 207, 132描述的使用多個映射和寄存器池)等。除非另有指定,否則本 文使用的短語"寄存器架構(gòu)"、"寄存器文件"和"寄存器"指的是對軟件/程序員可見的那 些以及指令指定寄存器的方式。當需要區(qū)別時,可以使用形容詞邏輯的、架構(gòu)的或軟件可見 的來表示寄存器架構(gòu)中的寄存器/文件,同時不同的形容詞將用于給定微架構(gòu)中的指定寄 存器(例如,物理寄存器、重排序緩沖器、引退寄存器、寄存器池)。
[0005] 指令集包括一個或多個指令格式。給定指令格式定義各個字段(位數(shù)、位的位置) 以指定(除了其它方面)要執(zhí)行的操作以及要在其上執(zhí)行操作的操作數(shù)。雖然定義了指令 模板(或子格式),但一些指令格式還被進一步分解。例如,給定指令格式的指令模板可以 被定義為具有指令格式字段的不同子集(所包含的字段通常采用相同次序,但是因為包含 了較少字段所以至少一些具有不同的位位置)和/或被定義為具有不同解釋的給定字段。 給定的指令利用給定的指令格式(并且如果被定義,則采用所述指令格式的指令模板的給 定的一種)來表達,并且指定操作和操作數(shù)。指令流是指令的特定序列,其中序列中的每條 指令是采用指令格式(并且如果被定義,則采用所述指令格式的指令模板的給定的一種) 的指令的發(fā)生。
[0006] 科學、金融、自動向量化通用目的、RMS(識別、挖掘和綜合)以及視覺和多媒體應(yīng) 用(例如,2D/3D圖形、圖像處理、視頻壓縮/解壓縮、語音識別算法和視頻操縱)通常需要 在大量數(shù)據(jù)項上執(zhí)行相同的操作(稱作"數(shù)據(jù)并行性")。單指令多數(shù)據(jù)(SHffi)指的是使 得處理器在多個數(shù)據(jù)項上執(zhí)行操作的一類指令。S頂D技術(shù)尤其適合于能夠邏輯地將寄存器 中的位劃分為多個固定大小的數(shù)據(jù)元素的處理器,每個數(shù)據(jù)元素表示單獨的值。例如,64位 寄存器中的位可以指定為將在四個單獨的16位數(shù)據(jù)元素上被操作的源操作數(shù),四個單獨 的16位數(shù)據(jù)元素中的每個表示單獨的16位值。這種類型的數(shù)據(jù)稱作緊縮數(shù)據(jù)類型或向量 數(shù)據(jù)類型,并且這種數(shù)據(jù)類型的操作數(shù)被稱作緊縮數(shù)據(jù)操作數(shù)或向量操作數(shù)。換言之,緊縮 數(shù)據(jù)項或向量指的是緊縮數(shù)據(jù)元素的序列;并且緊縮數(shù)據(jù)操作數(shù)或向量操作數(shù)是sn?指 令(也被認為是緊縮數(shù)據(jù)指令或向量指令)的源操作數(shù)或目的操作數(shù)。
[0007] 以示例的方式,一種類型的sn?指令指定以垂直方式在兩個源向量操作數(shù)上執(zhí) 行單個向量操作,以生成相同大小、具有相同數(shù)量的數(shù)據(jù)元素并采用相同數(shù)據(jù)元素次序的 目的向量操作數(shù)(也稱作結(jié)果向量操作數(shù))。在源向量操作數(shù)中的數(shù)據(jù)元素稱作源數(shù)據(jù)元 素,而在目的向量操作數(shù)中的數(shù)據(jù)元素被稱作目的或結(jié)果數(shù)據(jù)元素。這些源向量操作數(shù)具 有相同大小且包含相同寬度的數(shù)據(jù)元素,并因此它們包含相同數(shù)量的數(shù)據(jù)元素。在兩個源 向量操作數(shù)中相同位位置處的源數(shù)據(jù)元素形成數(shù)據(jù)元素對(也稱作相對應(yīng)的數(shù)據(jù)元素)。 分別在這些源數(shù)據(jù)元素對中的每對上執(zhí)行sn?指令所指定的操作,以生成結(jié)果數(shù)據(jù)元素 的匹配數(shù),并因此每對源數(shù)據(jù)元素具有相對應(yīng)的結(jié)果數(shù)據(jù)元素。由于操作是垂直的且由于 結(jié)果向量操作數(shù)是相同大小的、具有相同數(shù)量的數(shù)據(jù)元素,并且結(jié)果數(shù)據(jù)元素存儲為與源 向量操作數(shù)相同的數(shù)據(jù)元素次序,所以結(jié)果數(shù)據(jù)元素處于結(jié)果向量操作數(shù)中的、與它們在 源向量操作數(shù)中對應(yīng)的源數(shù)據(jù)元素對相同的位位置處。除了該示例性類型的SIMD指令外, 存在多種其它類型的sn?指令(例如,只具有一個或具有多個兩個源向量操作數(shù)的;以水 平方式操作的;生成具有不同大小、具有不同大小的數(shù)據(jù)元素和/或具有不同數(shù)據(jù)元素次 序的結(jié)果向量操作數(shù)的)。應(yīng)該理解的是,術(shù)語"目的向量操作數(shù)"(或目的操作數(shù))被定 義為執(zhí)行由指令指定的操作數(shù)的直接結(jié)果,包括將目的操作數(shù)存儲在某位置(在該指令所 指定的寄存器或存儲器地址處),從而它可以作為源操作數(shù)由另一指令訪問(通過由另一 指令指定相同位置)。
[0008] S頂D技術(shù),例如Core?處理器采用的、具有包括x86、MMX?、流S頂D擴展 (SSE)、SSE2、SSE3、SSE4. 1和SSE4. 2指令的指令集的S頂D技術(shù),已經(jīng)使得在應(yīng)用性能上得 到顯著改善(Core?和MMX?是IntelCorporationofSantaClare,Calif.的注冊商標 或商標)。已經(jīng)發(fā)布了涉及高級向量擴展(AVX)且使用VEX編碼方案的未來SB?擴展的額 外集合。
【附圖說明】
[0009] 圖1A是示出了根據(jù)本發(fā)明的實施例的示例性有序管線和示例性寄存器重命名、 亂序發(fā)布/執(zhí)行管線的框圖;
[0010] 圖1B是示出了根據(jù)本發(fā)明的實施例的要包括在處理器中的有序架構(gòu)核心的示例 性實施例和示例性寄存器重命名、亂序發(fā)布/執(zhí)行架構(gòu)核心二者的框圖;
[0011] 圖2是根據(jù)本發(fā)明的實施例的具有集成的存儲器控制器和圖形的單核心處理器 和多核心處理器的框圖;
[0012] 圖3示出了根據(jù)本發(fā)明的一個實施例的系統(tǒng)的框圖;
[0013] 圖4示出了根據(jù)本發(fā)明的實施例的第二系統(tǒng)的框圖;
[0014] 圖5示出了根據(jù)本發(fā)明的實施例的第三系統(tǒng)的框圖;
[0015] 圖6示出了根據(jù)本發(fā)明的實施例的片上系統(tǒng)(SoC)的框圖;
[0016] 圖7示出了根據(jù)本發(fā)明的實施例的對比使用軟件指令轉(zhuǎn)換器將源指令集中的二 進制指令轉(zhuǎn)換為目標指令集中的二進制指令的框圖;
[0017]圖8示出了根據(jù)本發(fā)明的一個實施例的執(zhí)行屏蔽位反轉(zhuǎn)操作的裝置;
[0018] 圖9示出了根據(jù)本發(fā)明的另一實施例的執(zhí)行屏蔽位置換操作的裝置;
[0019] 圖10示出了包括分組數(shù)據(jù)寄存器和緊縮數(shù)據(jù)操作屏蔽寄存器的處理器架構(gòu);
[0020] 圖11示出了根據(jù)本發(fā)明的一個實施例的用于執(zhí)行屏蔽位反轉(zhuǎn)操作的方法;
[0021] 圖12示出了根據(jù)本發(fā)明的另一實施例的用于執(zhí)行屏蔽位置換操作的方法。
【具體實施方式】
[0022] 示例性處理器架構(gòu)和數(shù)據(jù)類型
[0023]圖1A是示出了根據(jù)本發(fā)明的實施例的示例性有序管線和示例性寄存器重命名、 亂序發(fā)布/執(zhí)行管線的框圖。圖1B是示出了根據(jù)本發(fā)明的實施例的要包括在處理器中的 有序架構(gòu)核心的示例性實施例和示例性寄存器重命名、亂序發(fā)布/執(zhí)行架構(gòu)核心二者的框 圖。圖1A-B中的實線框示出了有序管線和有序核心,而虛線框的可選添加示出了寄存器重 命名、亂序發(fā)布/執(zhí)行管線和核心??紤]到有序方面是亂序方面的子集,將描述亂序方面。
[0024] 在圖1A中,處理器管線100包括提取階段102、長度解碼階段104、解碼階段106、 分配階段108、重命名階段110、調(diào)度(也被認為是分派或發(fā)布)階段112、寄存器讀取/存 儲器讀取階段114、執(zhí)行階段116、寫回/存儲器寫入階段118、異常處理階段122、以及提交 階段124。
[0025] 圖1B示出了處理器核心190,其包括耦合到執(zhí)行引擎單元150的前端單元130,且 二者均親合到存儲器單元170。核心190可以是精簡指令集計算(RISC)核心、復雜指令集 計算(CISC)核心、超長指令字(VLIW)核心,或者混合或可替代的核心類型。作為又一選項, 核心190可以是專用核心,例如,網(wǎng)絡(luò)或通信核心、壓縮引擎、協(xié)處理器核心、通用計算圖形 處理單元(GPGPU)核心、圖形核心等。
[0026] 前端單元130包括親合到指令高速緩存單元134上的分支預測單元132,所述指 令高速緩存單元134耦合到指令轉(zhuǎn)譯后備緩沖器(TLB) 136,所述TLB136耦合到指令提取 單元138,所述指令提取單元138耦合到解碼單元140。解碼單元140(或解碼器)可以解 碼指令,并生成一個或多個微操作、微代碼入口點、