亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

用于執(zhí)行置換操作的設(shè)備和方法

文檔序號:6485350閱讀:256來源:國知局
用于執(zhí)行置換操作的設(shè)備和方法
【專利摘要】描述了用于使用掩碼置換數(shù)據(jù)元素的裝置和方法。例如,根據(jù)一個(gè)實(shí)施例的方法包括以下操作:從掩碼數(shù)據(jù)結(jié)構(gòu)讀取值以確定是否針對目的地操作數(shù)的每個(gè)數(shù)據(jù)元素實(shí)現(xiàn)掩碼;如果針對特定數(shù)據(jù)元素不實(shí)現(xiàn)掩碼,則基于存儲在目的地操作數(shù)中的索引值從第一源操作數(shù)和第二源操作數(shù)選擇要拷貝到目的地操作數(shù)內(nèi)的數(shù)據(jù)元素位置的數(shù)據(jù)元素,其中來自第一源操作數(shù)和第二源操作數(shù)中任一者的數(shù)據(jù)元素中的任一個(gè)可被拷貝到目的地操作數(shù)內(nèi)的數(shù)據(jù)元素位置中的任一個(gè);并且如果針對所述目的地操作數(shù)的特定數(shù)據(jù)元素實(shí)現(xiàn)掩碼,則相對于此特定數(shù)據(jù)元素執(zhí)行指定掩碼操作。
【專利說明】用于執(zhí)行置換操作的設(shè)備和方法
發(fā)明領(lǐng)域
[0001]本發(fā)明的實(shí)施例一般涉及計(jì)算機(jī)系統(tǒng)的領(lǐng)域。具體地,本發(fā)明的實(shí)施例涉及用于執(zhí)行置換操作一在一個(gè)實(shí)施例中蓋寫諸如表或索引之類的數(shù)據(jù)結(jié)構(gòu)一的裝置和方法。
【背景技術(shù)】
[0002]【背景技術(shù)】
[0003]指令集,或指令集架構(gòu)(ISA)是涉及編程的計(jì)算機(jī)架構(gòu)的一部分,并可以包括本機(jī)數(shù)據(jù)類型、指令、寄存器架構(gòu)、尋址模式、存儲器架構(gòu),中斷和異常處理,以及外部輸入和輸出(I/o)。在本文中術(shù)語指令一般指宏指令一即被提供給處理器(或指令轉(zhuǎn)換器,該指令轉(zhuǎn)換器(例如使用靜態(tài)二進(jìn)制翻譯、包括動(dòng)態(tài)編譯的動(dòng)態(tài)二進(jìn)制翻譯)翻譯、變形、仿真,或以其他方式將指令轉(zhuǎn)換成要由處理器處理的一個(gè)或多個(gè)指令)的指令)以用于執(zhí)行的指令一而不是微指令或微操作(miCTo-op)—它們是處理器的解碼器解碼宏指令的結(jié)果。
[0004]ISA與微架構(gòu)不同,微架構(gòu)是實(shí)現(xiàn)指令集的處理器的內(nèi)部設(shè)計(jì)。帶有不同的微架構(gòu)的處理器可以共享共同的指令集。例如,INTED?奔騰四(Pentium4)處理器、?_1?酷睿(Core?)處理器、以及來自加利福尼亞州桑尼威爾(Sunnyvale)的超微半導(dǎo)體有限公司(Advanced Micro Devices, Inc.)的諸多處理器執(zhí)行幾乎相同版本的x86指令集(在更新的版本中加入了一些擴(kuò)展),但具有不同的內(nèi)部設(shè)計(jì)。例如,ISA的相同寄存器架構(gòu)在不同的微架構(gòu)中可使用已知的技術(shù)以不同方法來實(shí)現(xiàn),包括專用物理寄存器、使用寄存器重命名機(jī)制(諸如,使用寄存器別名表RAT、重排序緩沖器R0B、以及隱退寄存器組;使用多映射和寄存器池)的一個(gè)或多個(gè)動(dòng) 態(tài)分配物理寄存器等。除非另作說明,短語寄存器架構(gòu)、寄存器組,以及寄存器在本文中被用來指代對軟件/編程器以及指令指定寄存器的方式可見的東西。在需要特殊性的情況下,形容詞邏輯、架構(gòu),或軟件可見的將用于表示寄存器架構(gòu)中的寄存器/文件,而不同的形容詞將用于指定給定微型架構(gòu)中的寄存器(例如,物理寄存器、重新排序緩沖器、退役寄存器、寄存器池)。
[0005]指令集包括一個(gè)或多個(gè)指令格式。給定指令格式定義各個(gè)字段(比特的數(shù)量、t匕特的位置)以指定要執(zhí)行的操作(操作碼)以及對其要執(zhí)行該操作的操作碼等。通過指令模板(或子格式)的定義來進(jìn)一步分解一些指令格式。例如,給定指令格式的指令模板可被定義為具有指令格式的字段(所包括的字段通常在相同的階中,但是至少一些字段具有不同的比特位置,因?yàn)榘ǜ俚淖侄?的不同子集,和/或被定義為具有不同解釋的給定字段。由此,ISA的每一指令使用給定指令格式(并且如果定義,則在該指令格式的指令模板的給定一個(gè)中)來表達(dá),并且包括用于指定操作和操作碼的字段。例如,示例性ADD指令具有專用操作碼以及包括指定該操作碼的操作碼字段和選擇操作數(shù)的操作數(shù)字段(源I/目的地以及源2)的指令格式,并且該ADD指令在指令流中的出現(xiàn)將具有選擇專用操作數(shù)的操作數(shù)字段中的專用內(nèi)容。
[0006]科學(xué)、金融、自動(dòng)矢量化的通用,RMS(識別、挖掘以及合成),以及可視和多媒體應(yīng)用程序(例如,2D/3D圖形、圖像處理、視頻壓縮/解壓縮、語音識別算法和音頻操縱)常常需要對大量的數(shù)據(jù)項(xiàng)執(zhí)行相同操作(被稱為“數(shù)據(jù)并行性”)。單指令多數(shù)據(jù)(SIMD)是指使處理器對多個(gè)數(shù)據(jù)項(xiàng)執(zhí)行操作的一種指令。SMD技術(shù)特別適于能夠在邏輯上將寄存器中的比特分割為若干個(gè)固定大小的數(shù)據(jù)元素的處理器,每一個(gè)元素都表示單獨(dú)的值。例如,256比特寄存器中的比特可以被指定為四個(gè)單獨(dú)的64比特打包的數(shù)據(jù)元素(四字(Q)大小的數(shù)據(jù)元素),八個(gè)單獨(dú)的32比特打包的數(shù)據(jù)元素(雙字(D)大小的數(shù)據(jù)元素),十六單獨(dú)的16比特打包的數(shù)據(jù)元素(一字(W)大小的數(shù)據(jù)元素),或三十二個(gè)單獨(dú)的8比特?cái)?shù)據(jù)元素(字節(jié)(B)大小的數(shù)據(jù)元素)來被操作的源操作數(shù)。這種類型的數(shù)據(jù)被稱為打包的數(shù)據(jù)類型或矢量數(shù)據(jù)類型,這種數(shù)據(jù)類型的操作數(shù)被稱為打包的數(shù)據(jù)操作數(shù)或矢量操作數(shù)。換句話說,打包數(shù)據(jù)項(xiàng)或矢量指的是打包數(shù)據(jù)元素的序列,并且打包數(shù)據(jù)操作數(shù)或矢量操作數(shù)是SIMD指令(也稱為打包數(shù)據(jù)指令或矢量指令)的源操作數(shù)或目的地操作數(shù)。
[0007]作為示例,一種類型的SIMD指令指定要以垂直方式對兩個(gè)源矢量操作數(shù)執(zhí)行的單個(gè)矢量操作,以利用相同數(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ù)元素。兩個(gè)源矢量操作數(shù)中的相同比特位置中的源數(shù)據(jù)元素形成數(shù)據(jù)元素對(也稱為相對應(yīng)的數(shù)據(jù)元素;即,每個(gè)源操作數(shù)的數(shù)據(jù)元素位置O中的數(shù)據(jù)元素相對應(yīng),每個(gè)源操作數(shù)的數(shù)據(jù)元素位置I中的數(shù)據(jù)元素相對應(yīng),等等)。由該SIMD指令所指定的操作分別地對這些源數(shù)據(jù)元素對中的每一對執(zhí)行,以生成匹配的數(shù)量的結(jié)果數(shù)據(jù)元素,如此,每一對源數(shù)據(jù)元素都具有對應(yīng)的結(jié)果數(shù)據(jù)元素。由于操作是垂直的并且由于結(jié)果矢量操作數(shù)大小相同,具有相同數(shù)量的數(shù)據(jù)元素,并且結(jié)果數(shù)據(jù)元素與源矢量操作數(shù)以相同數(shù)據(jù)元素順序來存儲,因此,結(jié)果數(shù)據(jù)元素與源矢量操作數(shù)中的它們的對應(yīng)的源數(shù)據(jù)元素對處于結(jié)果矢量操作數(shù)的相同比特位置。除此示例性類型的SMD指令之外,還有各種其他類型的SMD指令(例如,只有一個(gè)或具有兩個(gè)以上的源矢量操作數(shù)的;以水平方式操作的;生成不同大小的結(jié)果矢量操作數(shù)的,具有不同大小的數(shù)據(jù)元素的,和/或具有不同的數(shù)據(jù)元素順序的)。應(yīng)該理解,術(shù)語目的地矢量操作數(shù)(或目的地操作數(shù))被定義為執(zhí)行由指令所指定的操作的直接結(jié)果,包括將該目的地操作數(shù)存儲在某一位置(寄存器或在由該指令所指定的存儲器地址),以便它可以作為源操作數(shù)由另一指令訪問(由另一指令指定該同一個(gè)位置)。
[0008]諸如由具有包括x86、MMX?、流式 SMD 擴(kuò)展(SSE)、SSE2、SSE3、SSE4.1 以及 SSE4.2指令的指令集的Intel? Core?處理器使用的技術(shù)之類的SMD技術(shù),在應(yīng)用程序性能方面實(shí)現(xiàn)了大大的改善。已經(jīng)發(fā)布和/或公布了涉及高級矢量擴(kuò)展(AVX) (AVX1和AVX2)且使用矢量擴(kuò)展(VEX)編碼方案的附加SMD擴(kuò)展集(例如,參見2011年10月的Inte_ 64和IA-32架構(gòu)軟件開發(fā)手冊,并且參見2011年6月的Intel?高級矢量擴(kuò)展編程參考)。
[0009]與本發(fā)明的實(shí)施例有關(guān)的背景
[0010]現(xiàn)有指令集架構(gòu)(ISA)已使用從源操作數(shù)拷貝雙字(或字)并將其插入到由第一源操作數(shù)中的索引指向的位置處的目的地操作數(shù)中的指令。然而,期望特定應(yīng)用(例如,表查找)能使用分開的索引從兩個(gè)不同的源進(jìn)行置換。
[0011]附圖簡述
[0012]圖1A是示出根據(jù)本發(fā)明的實(shí)施例的示例性有序流水線以及示例性寄存器重命名的無序發(fā)布/執(zhí)行流水線兩者的框圖;
[0013]圖1B是示出根據(jù)本發(fā)明的實(shí)施例的有序架構(gòu)核的示例性實(shí)施例以及包括在處理器中的示例性寄存器重命名的無序發(fā)布/執(zhí)行架構(gòu)核兩者的框圖;
[0014]圖2是根據(jù)本發(fā)明的實(shí)施例的單核處理器和多核處理器的框圖,具有集成的存儲器控制器和圖形器件;
[0015]圖3示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的系統(tǒng)的框圖;
[0016]圖4示出了根據(jù)本發(fā)明的實(shí)施例的第二系統(tǒng)的框圖;
[0017]圖5示出了根據(jù)本發(fā)明的實(shí)施例的第三系統(tǒng)的框圖;
[0018]圖6示出了根據(jù)本發(fā)明的實(shí)施例的片上系統(tǒng)(SoC)的框圖;
[0019]圖7示出了對比根據(jù)本發(fā)明實(shí)施例的使用軟件指令轉(zhuǎn)換器將源指令集中的二進(jìn)制指令轉(zhuǎn)換為目標(biāo)指令集中的二進(jìn)制指令的框圖;
[0020]圖8示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于置換數(shù)據(jù)元素的處理器架構(gòu);
[0021]圖9示出了根據(jù)本發(fā)明的另一實(shí)施例的用于置換數(shù)據(jù)元素的處理器架構(gòu);
[0022]圖1OA示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于置換數(shù)據(jù)元素的方法;
[0023]圖11示出了根據(jù)本發(fā)明的另一個(gè)實(shí)施例的用于置換數(shù)據(jù)元素的方法;
[0024]圖12A和12B是示出根據(jù)本發(fā)明的實(shí)施例的通用矢量友好指令格式及其指令模板的框圖;
[0025]圖13A-D是示出根據(jù)本發(fā)明的實(shí)施例的示例性專用矢量友好指令格式的框圖;
[0026]圖14是根據(jù)本發(fā)明的一個(gè)實(shí)施例的寄存器架構(gòu)的框圖;
[0027]圖15A是根據(jù)本發(fā)明的實(shí)施例的連接到管芯上(on-die)互聯(lián)網(wǎng)絡(luò)且具有第二級(L2)高速緩存的本地子集的單處理器核的方框圖;以及
[0028]圖15B是根據(jù)本發(fā)明的各實(shí)施例的圖14A中的處理器核的一部分的展開圖。
[0029]詳細(xì)描述
[0030]示例性處理器架構(gòu)和數(shù)據(jù)類型
[0031]圖1A是示出根據(jù)本發(fā)明的各實(shí)施例的示例性有序流水線和示例性的寄存器重命名的無序發(fā)布/執(zhí)行流水線的框圖。圖1B是示出根據(jù)本發(fā)明的各實(shí)施例的要包括在處理器中的有序架構(gòu)核的示例性實(shí)施例和示例性的寄存器重命名的無序發(fā)布/執(zhí)行架構(gòu)核的框圖。圖1A-B中的實(shí)線框解說了有序流水線和有序核,而虛線框中的可選附加項(xiàng)解說了寄存器重命名的、無序發(fā)布/執(zhí)行流水線和核。給定有序方面是無序方面的子集的情況下,無序方面將被描述。
[0032]在圖1A中,處理器流水線100包括提取級102、長度解碼級104、解碼級106、分配級108、重命名級110、調(diào)度(也稱為分派或發(fā)布)級112、寄存器讀取/存儲器讀取級114、執(zhí)行級116、寫回/存儲器寫入級118、異常處理級122和提交級124。
[0033]圖1B示出了包括耦合到執(zhí)行引擎單元150的前端單元130的處理器核190,且執(zhí)行引擎單元和前端單元兩者都耦合到存儲器單元170。核190可以是精簡指令集合計(jì)算(RISC)核、復(fù)雜指令集合計(jì)算(CISC)核、非常長的指令字(VLIW)核或混合或替代核類型。作為又一選項(xiàng),核190可以是專用核,諸如例如網(wǎng)絡(luò)或通信核、壓縮引擎、協(xié)處理器核、通用計(jì)算圖形處理器單元(GPGPU)核、或圖形核等等。
[0034]前端單元130包括稱合到指令高速緩存單元132的分支預(yù)測單元134,該指令高速緩存單元136被耦合到指令翻譯后備緩沖器(TLB) 138,該指令翻譯后備緩沖器140被耦合到指令獲取單元838,指令獲取單元838被耦合到解碼單元840。解碼單元140 (或解碼器)可解碼指令,并生成從原始指令解碼出的、或以其他方式反映原始指令的、或從原始指令導(dǎo)出的一個(gè)或多個(gè)微操作、微代碼進(jìn)入點(diǎn)、微指令、其他指令、或其他控制信號作為輸出。解碼單元140可使用各種不同的機(jī)制來實(shí)現(xiàn)。合適的機(jī)制的示例包括但不限于查找表、硬件實(shí)現(xiàn)、可編程邏輯陣列(OLA)、微代碼只讀存儲器(ROM)等。在一個(gè)實(shí)施例中,核190包括存儲(例如,在解碼單元140中或否則在前端單元130內(nèi)的)某些宏指令的微代碼的微代碼ROM或其他介質(zhì)。解碼單元140耦合至執(zhí)行引擎單元150中的重命名/分配器單元152。
[0035]執(zhí)行引擎單元150包括重命名/分配器單元152,該重命名/分配器單元154耦合至引退單元156和一個(gè)或多個(gè)調(diào)度器單元(多個(gè))956的集合。調(diào)度器單元156表示任何數(shù)目的不同調(diào)度器,包括預(yù)留站、中央指令窗等。調(diào)度器單元156被耦合到物理寄存器組(多個(gè))單元(多個(gè))158。每個(gè)物理寄存器組(多個(gè))單元158表示一個(gè)或多個(gè)物理寄存器組,其中不同的物理寄存器組存儲一種或多種不同的數(shù)據(jù)類型,諸如標(biāo)量整數(shù)、標(biāo)量浮點(diǎn)、打包整數(shù)、打包浮點(diǎn)、矢量整數(shù)、矢量浮點(diǎn)、狀態(tài)(例如,作為要執(zhí)行的下一指令的地址的指令指針)等。在一個(gè)實(shí)施例中,物理寄存器組單元158包括矢量寄存器單元、寫掩碼寄存器單元和標(biāo)量寄存器單元。這些寄存器單元可以提供架構(gòu)矢量寄存器、矢量掩碼寄存器、和通用寄存器。物理寄存器組(多個(gè))單元(多個(gè))158被引退單元154覆蓋以示出可以用來實(shí)現(xiàn)寄存器重命名和無序執(zhí)行的各種方式(例如,使用記錄器緩沖器(多個(gè))和引退寄存器組(多個(gè));使用將來的文件(多個(gè))、歷史緩沖器(多個(gè))和引退寄存器組(多個(gè));使用寄存器圖和寄存器池等等)。引退單元154和物理寄存器組(多個(gè))單元(多個(gè))158被耦合到執(zhí)行群集(多個(gè))160。執(zhí)行群集(多個(gè))160包括一個(gè)或多個(gè)執(zhí)行單元162的集合和一個(gè)或多個(gè)存儲器訪問單元164的集合。執(zhí)行單元162可以執(zhí)行各種操作(例如,移位、加法、減法、乘法),以及對各種類型的數(shù)據(jù)(例如,標(biāo)量浮點(diǎn)、打包整數(shù)、打包浮點(diǎn)、矢量整型、矢量浮點(diǎn))執(zhí)行。盡管某些實(shí)施例可以包括專用于特定功能或功能集合的多個(gè)執(zhí)行單元,但其他實(shí)施例可包括全部執(zhí)行所有函數(shù)的僅一個(gè)執(zhí)行單元或多個(gè)執(zhí)行單元。調(diào)度器單元(多個(gè))156、物理寄存器組(多個(gè))單元(多個(gè))158和執(zhí)行群集(多個(gè))160被示為可能有多個(gè),因?yàn)槟承?shí)施例為某些類型的數(shù)據(jù)/操作(例如,標(biāo)量整型流水線、標(biāo)量浮點(diǎn)/打包整型/打包浮點(diǎn)/矢量整型/矢量浮點(diǎn)流水線,和/或各自具有其自己的調(diào)度器單元、物理寄存器組(多個(gè))單元和/或執(zhí)行群集的存儲器訪問流水線一以及在分開的存儲器訪問流水線的情況下,實(shí)現(xiàn)其中僅該流水線的執(zhí)行群集具有存儲器訪問單元(多個(gè))164的某些實(shí)施例)創(chuàng)建分開的流水線。還應(yīng)當(dāng)理解,在分開的流水線被使用的情況下,這些流水線中的一個(gè)或多個(gè)可以為無序發(fā)布/執(zhí)行,并且其余流水線可以為有序發(fā)布/執(zhí)行。
[0036]存儲器訪問單元164的集合被耦合到存儲器單元170,該存儲器單元170包括耦合到數(shù)據(jù)高速緩存單元174的數(shù)據(jù)TLB單元172,其中數(shù)據(jù)高速緩存單元174耦合到二級(L2)高速緩存單元176。在一個(gè)示例性實(shí)施例中,存儲器訪問單元164可包括加載單元、存儲地址單元和存儲數(shù)據(jù)單元,其中的每一個(gè)均耦合至存儲器單元170中的數(shù)據(jù)TLB單元172。指令高速緩存單元134還耦合到存儲器單元170中的第二級(L2)高速緩存單元176。L2高速緩存單元176被耦合到一個(gè)或多個(gè)其他級的高速緩存,并最終耦合到主存儲器。
[0037]作為示例,示例性寄存器重命名的、無序發(fā)布/執(zhí)行核架構(gòu)可以如下實(shí)現(xiàn)流水線100:1)指令獲取138執(zhí)行獲取和長度解碼級102和104 ;2)解碼單元140執(zhí)行解碼級106 ;3)重命名/分配器單元152執(zhí)行分配級108和重命名級110 ;4)調(diào)度器單元156執(zhí)行調(diào)度級112 ;5)物理寄存器組單元158和存儲器單元170執(zhí)行寄存器讀取/存儲器讀取級114 ;執(zhí)行群集160執(zhí)行執(zhí)行級116 ;6)存儲器單元170和物理寄存器組單元158執(zhí)行寫回/存儲器寫入級118 ;7)各單元可牽涉到異常處理級122 ;以及8)引退單元154和物理寄存器組單元158執(zhí)行提交級124。
[0038]核190可支持一個(gè)或多個(gè)指令集合(例如,x86指令集合(具有與較新版本一起添加的某些擴(kuò)展);加利福尼亞州桑尼維爾市的MIPS技術(shù)公司的MIPS指令集合;加利福尼州桑尼維爾市的ARM控股的ARM指令集合(具有諸如NEON等可選附加擴(kuò)展)),其中包括本文中描述的各指令。在一個(gè)實(shí)施例中,核190包括支持打包數(shù)據(jù)指令集擴(kuò)展(例如,AVXUAVX2和/或以下描述的一些形式的一般矢量友好指令格式(U = O和/或U= I))的邏輯,從而允許很多多媒體應(yīng)用使用的操作能夠使用打包數(shù)據(jù)來執(zhí)行。
[0039]應(yīng)當(dāng)理解,核可支持多線程化(執(zhí)行兩個(gè)或更多個(gè)并行的操作或線程的集合),并且可以按各種方式來完成該多線程化,此各種方式包括時(shí)分多線程化、同步多線程化(其中單個(gè)物理核為物理核正同步多線程化的各線程中的每一個(gè)線程提供邏輯核)、或其組合(例如,時(shí)分提取和解碼以及此后諸如用丨meA;超線程化技術(shù)來同步多線程化)。
[0040]盡管在無序執(zhí)行的上下文中描述了寄存器重命名,但應(yīng)當(dāng)理解,可以在有序架構(gòu)中使用寄存器重命名。盡管所解說的處理器的實(shí)施例還包括分開的指令和數(shù)據(jù)高速緩存單元134/174以及共享L2高速緩存單元176,但替換實(shí)施例可以具有用于指令和數(shù)據(jù)兩者的單個(gè)內(nèi)部高速緩存,諸如例如一級(LI)內(nèi)部高速緩存或多個(gè)級別的內(nèi)部緩存。在某些實(shí)施例中,該系統(tǒng)可包括內(nèi)部高速緩存和在核和/或處理器外部的外部高速緩存的組合?;蛘?,所有高速緩存都可以在核和/或處理器的外部。
[0041]圖2是根據(jù)本發(fā)明的實(shí)施例的可具有一個(gè)以上核、可具有集成存儲器控制器、并且可具有集成圖形的處理器200的框圖。圖2的實(shí)線框示出了處理器200,處理器200具有單個(gè)核202A、系統(tǒng)代理210、一組一個(gè)或多個(gè)總線控制器單元216,而可選附加的虛線框示出了替代的處理器200,具有多個(gè)核202A-N、系統(tǒng)代理單元210中的一組一個(gè)或多個(gè)集成存儲器控制器單元214以及專用邏輯208。
[0042]因此,處理器200的不同實(shí)現(xiàn)可包括:I) CPU,其中專用邏輯208是集成圖形和/或科學(xué)(吞吐量)邏輯(其可包括一個(gè)或多個(gè)核),并且核202A-N是一個(gè)或多個(gè)通用核(例如,通用的有序核、通用的無序核、這兩者的組合);2)協(xié)處理器,其中核202A-N是主要預(yù)期用于圖形和/或科學(xué)(吞吐量)的大量專用核;以及3)協(xié)處理器,其中核202A-N是大量通用有序核。因此,處理器200可以是通用處理器、協(xié)處理器或?qū)S锰幚砥鳎T如例如網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、GPGPU (通用圖形處理單元)、高吞吐量的集成眾核(MIC)協(xié)處理器(包括30個(gè)或更多核)、或嵌入式處理器等。該處理器可以被實(shí)現(xiàn)在一個(gè)或多個(gè)芯片上。處理器200可以是一個(gè)或多個(gè)襯底的一部分,和/或可以使用諸如例如BiCMOSXMOS或NMOS等的多個(gè)加工技術(shù)中的任何一個(gè)技術(shù)將其實(shí)現(xiàn)在一個(gè)或多個(gè)襯底上。
[0043]存儲器層次結(jié)構(gòu)包括在各核內(nèi)的一個(gè)或多個(gè)級別的高速緩存、一個(gè)或多個(gè)共享高速緩存單元206的集合、以及耦合至集成存儲器控制器單元214的集合的外部存儲器(未示出)。該共享高速緩存單元206的集合可以包括一個(gè)或多個(gè)中間級高速緩存,諸如二級(L2)、三級(L3)、四級(L4)或其他級別的高速緩存、末級高速緩存(LLC)、和/或其組合。盡管在一個(gè)實(shí)施例中,基于環(huán)的互連單元212將集成圖形邏輯208、共享高速緩存單元206的集合以及系統(tǒng)代理單元210/集成存儲器控制器單元214互連,但替代實(shí)施例可使用任何數(shù)量的公知技術(shù)來將這些單元互連。在一個(gè)實(shí)施例中,在一個(gè)或多個(gè)高速緩存單元206與核202-A-N之間維持相干性。
[0044]在某些實(shí)施例中,核202A-N中的一個(gè)或多個(gè)核能夠多線程化。系統(tǒng)代理210包括協(xié)調(diào)和操作核202A-N的那些組件。系統(tǒng)代理單元210可包括例如功率控制單元(P⑶)和顯示單元。P⑶可以是或包括調(diào)整核202A-N和集成圖形邏輯208的功率狀態(tài)所需的邏輯和組件。顯示單元用于驅(qū)動(dòng)一個(gè)或多個(gè)外部連接的顯示器。
[0045]核202A-N在架構(gòu)指令集合方面可以是同構(gòu)的或異構(gòu)的;8卩,這些核202A-N中的兩個(gè)或更多個(gè)核可能能夠執(zhí)行相同的指令集合,而其他核可能能夠執(zhí)行該指令集合的僅僅子集或不同的指令集合。
[0046]圖3-6是示例性計(jì)算機(jī)架構(gòu)的框圖。本領(lǐng)域已知的對膝上型設(shè)備、臺式機(jī)、手持PC、個(gè)人數(shù)字助理、工程工作站、服務(wù)器、網(wǎng)絡(luò)設(shè)備、網(wǎng)絡(luò)集線器、交換機(jī)、嵌入式處理器、數(shù)字信號處理器(DSP)、圖形設(shè)備、視頻游戲設(shè)備、機(jī)頂盒、微控制器、蜂窩電話、便攜式媒體播放器、手持設(shè)備以及各種其他電子設(shè)備的其他系統(tǒng)設(shè)計(jì)和配置也是合適的。一般來說,能夠納入本文中所公開的處理器和/或其它執(zhí)行邏輯的大量系統(tǒng)和電子設(shè)備一般都是合適的。
[0047]現(xiàn)在參考圖3,所示出的是根據(jù)本發(fā)明一實(shí)施例的系統(tǒng)300的框圖。系統(tǒng)300可以包括一個(gè)或多個(gè)處理器310、315,這些處理器耦合到控制器中樞320。在一個(gè)實(shí)施例中,控制器中樞320包括圖形存儲器控制器中樞(GMCH) 390和輸入/輸出中樞(IOH) 350 (其可以在分開的芯片上);GMCH390包括存儲器340和協(xié)處理器345耦合到的存儲器和圖形控制器;10H350將輸入/輸出(I/O)設(shè)備360耦合到GMCH390。替代地,存儲器和圖形控制器中的一個(gè)或兩個(gè)在處理器(如本文中所描述的)內(nèi)集成,存儲器340和協(xié)處理器345直接耦合到處理器310、以及單一芯片中的具有10H350的控制器中樞320。
[0048]附加處理器315的任選性質(zhì)用虛線表示在圖3中。每一處理器310、315可包括本文中描述的處理核中的一個(gè)或多個(gè),并且可以是處理器200的某一版本。
[0049]存儲器340可以是例如動(dòng)態(tài)隨機(jī)存取存儲器(DRAM)、相變化存儲器(PCM)或這兩者的組合。對于至少一個(gè)實(shí)施例,控制器中樞320經(jīng)由諸如前側(cè)總線(FSB)之類的多分總線(mult1-drop bus)、諸如快速通道互連(QPI)之類的點(diǎn)對點(diǎn)接口、或者類似的連接395與處理器310、315進(jìn)行通信。
[0050]在一個(gè)實(shí)施例中,協(xié)處理器345是專用處理器,諸如例如高吞吐量MIC處理器、網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、GPGPU、或嵌入式處理器等等。在一個(gè)實(shí)施例中,控制器中樞320可以包括集成圖形加速計(jì)。
[0051]按照包括架構(gòu)、微架構(gòu)、熱、功耗特征等等優(yōu)點(diǎn)的度量譜,物理資源310、315之間存在各種差別。
[0052]在一個(gè)實(shí)施例中,處理器310執(zhí)行控制一般類型的數(shù)據(jù)處理操作的指令。嵌入在這些指令中的可以是協(xié)處理器指令。處理器310識別如具有應(yīng)當(dāng)由附連的協(xié)處理器345執(zhí)行的類型的這些協(xié)處理器指令。因此,處理器310在協(xié)處理器總線或者其他互連上將這些協(xié)處理器指令(或者表示協(xié)處理器指令的控制信號)發(fā)布到協(xié)處理器345。協(xié)處理器345接受并執(zhí)行所接收的協(xié)處理器指令。
[0053]現(xiàn)在參考圖4,示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的第一更專用的示例性系統(tǒng)400的框圖。如圖4所示,多處理器系統(tǒng)400是點(diǎn)對點(diǎn)互連系統(tǒng),并包括經(jīng)由點(diǎn)對點(diǎn)互連450耦合的第一處理器470和第二處理器480。處理器470和480中的每一個(gè)都可以是處理器200的某一版本。在本發(fā)明的一個(gè)實(shí)施例中,處理器470和480分別是處理器310和315,而協(xié)處理器438是協(xié)處理器345。在另一實(shí)施例中,處理器470和480分別是處理器310和協(xié)處理器345。
[0054]處理器470和480被示為分別包括集成存儲器控制器(MC)單元472和482。處理器470還包括作為其總線控制器單元的一部分的點(diǎn)對點(diǎn)(P-P)接口 476和478 ;類似地,第二處理器480包括點(diǎn)對點(diǎn)接口 486和488。處理器470、480可以使用點(diǎn)對點(diǎn)(P-P)電路478、488經(jīng)由P-P接口 450來交換信息。如圖4所示,IMC472和482將各處理器耦合至相應(yīng)的存儲器,即存儲器432和存儲器434,這些存儲器可以是本地附連至相應(yīng)的處理器的主存儲器的一部分。
[0055]處理器470、480可各自使用點(diǎn)對點(diǎn)接口電路476、494、486、498通過各個(gè)P-P接口452,454與芯片組490交換信息。芯片組490可以可選地經(jīng)由高性能接口 439與協(xié)處理器438交換信息。在一個(gè)實(shí)施例中,協(xié)處理器438是專用處理器,諸如例如高吞吐量MIC處理器、網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、GPGPU、或嵌入式處理器等等。
[0056]共享高速緩存(未示出)可以被包括在任一處理器之內(nèi)或被包括兩個(gè)處理器外部但仍經(jīng)由P-P互連與這些處理器連接,從而如果將某處理器置于低功率模式時(shí),可將任一處理器或兩個(gè)處理器的本地高速緩存信息存儲在該共享高速緩存中。
[0057]芯片組490可經(jīng)由接口 496耦合至第一總線416。在一個(gè)實(shí)施例中,第一總線416可以是外圍部件互連(PCI)總線,或諸如PCI Express總線或其它第三代I/O互連總線之類的總線,但本發(fā)明的范圍并不受此限制。
[0058]如圖4所示,各種I/O設(shè)備414可以連同總線橋418耦合到第一總線416,總線橋418將第一總線416耦合至第二總線420。在一個(gè)實(shí)施例中,諸如協(xié)處理器、高吞吐量MIC處理器、GPGPU的處理器、加速計(jì)(諸如例如圖形加速計(jì)或數(shù)字信號處理器(DSP)單元)、場可編程門陣列或任何其他處理器的一個(gè)或多個(gè)附加處理器415被耦合到第一總線416。在一個(gè)實(shí)施例中,第二總線420可以是低引腳計(jì)數(shù)(LPC)總線。各種設(shè)備可以被耦合至第二總線420,在一個(gè)實(shí)施例中這些設(shè)備包括例如鍵盤/鼠標(biāo)422、通信設(shè)備427以及諸如可包括指令/代碼和數(shù)據(jù)430的盤驅(qū)動(dòng)器或其它海量存儲設(shè)備的存儲單元428。此外,音頻I/0424可以被耦合至第二總線420。注意,其它架構(gòu)是可能的。例如,取代圖4的點(diǎn)對點(diǎn)架構(gòu),系統(tǒng)可以實(shí)現(xiàn)多站總線或其它這類架構(gòu)。
[0059]現(xiàn)在參考圖5,示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的第二更專用的示例性系統(tǒng)500的框圖。圖4和5中的類似元件使用類似附圖標(biāo)記,且在圖5中省略了圖4的某些方面以避免混淆圖5的其它方面。
[0060]圖5示出處理器470、480可分別包括集成存儲器和I/O控制邏輯(“CL”)472和482。因此,CL472、482包括集成存儲器控制器單元并包括I/O控制邏輯。圖5不僅示出耦合至CL472、482的存儲器432、434,而且還示出同樣耦合至控制邏輯472、482的I/O設(shè)備514。傳統(tǒng)I/O設(shè)備515被耦合至芯片組490。[0061]現(xiàn)在參照圖6,所示出的是根據(jù)本發(fā)明一個(gè)實(shí)施例的SoC600的框圖。在圖2中,相似的部件具有同樣的附圖標(biāo)記。另外,虛線框是更先進(jìn)的SoC的可選特征。在圖6中,互連單元(多個(gè))602被耦合至:應(yīng)用處理器610,該應(yīng)用處理器包括一個(gè)或多個(gè)核202A-N的集合以及共享高速緩存單元206 ;系統(tǒng)代理單元210 ;總線控制器單元216 ;集成存儲器控制器單元214 ;—組或一個(gè)或多個(gè)協(xié)處理器620,其可包括集成圖形邏輯、圖像處理器、音頻處理器和視頻處理器;靜態(tài)隨機(jī)存取存儲器(SRAM)單元630 ;直接存儲器存取(DMA)單元632 ;以及用于耦合至一個(gè)或多個(gè)外部顯示器的顯示單元640。在一個(gè)實(shí)施例中,協(xié)處理器620包括專用處理器,諸如例如網(wǎng)絡(luò)或通信處理器、壓縮引擎、GPGPU、高吞吐量MIC處理器、或嵌入式處理器等等。
[0062]本文公開的機(jī)制的各實(shí)施例可以被實(shí)現(xiàn)在硬件、軟件、固件或這些實(shí)現(xiàn)方法的組合中。本發(fā)明的實(shí)施例可實(shí)現(xiàn)為在可編程系統(tǒng)上執(zhí)行的計(jì)算機(jī)程序或程序代碼,該可編程系統(tǒng)包括至少一個(gè)處理器、存儲系統(tǒng)(包括易失性和非易失性存儲器和/或存儲元件)、至少一個(gè)輸入設(shè)備以及至少一個(gè)輸出設(shè)備。
[0063]可將程序代碼(諸如圖4中解說的代碼430)應(yīng)用于輸入指令,以執(zhí)行本文描述的各功能并生成輸出信息。輸出信息可以按已知方式被應(yīng)用于一個(gè)或多個(gè)輸出設(shè)備。為了本申請的目的,處理系統(tǒng)包括具有諸如例如數(shù)字信號處理器(DSP)、微控制器、專用集成電路(ASIC)或微處理器之類的處理器的任何系統(tǒng)。
[0064]程序代碼可以用高級程序化語言或面向?qū)ο蟮木幊陶Z言來實(shí)現(xiàn),以便與處理系統(tǒng)通信。程序代碼也可以在需要的情況下用匯編語言或機(jī)器語言來實(shí)現(xiàn)。事實(shí)上,本文中描述的機(jī)制不僅限于任何特定編程語言的范圍。在任一情形下,語言可以是編譯語言或解釋
;五古
P口口 ο
[0065]至少一個(gè)實(shí)施例的一個(gè)或多個(gè)方面可以由存儲在機(jī)器可讀介質(zhì)上的表征性指令來實(shí)現(xiàn),該指令表示處理器中的各種邏輯,該指令在被機(jī)器讀取時(shí)使得該機(jī)器制作用于執(zhí)行本文所述的技術(shù)的邏輯。被稱為“IP核”的這些表示可以被存儲在有形的機(jī)器可讀介質(zhì)上,并被提供給多個(gè)客戶或生產(chǎn)設(shè)施以加載到實(shí)際制造該邏輯或處理器的制造機(jī)器中。
[0066]這樣的機(jī)器可讀存儲介質(zhì)可以包括但不限于通過機(jī)器或設(shè)備制造或形成的物品的非瞬態(tài)、有形安排,其包括存儲介質(zhì),諸如硬盤;任何其它類型的盤,包括軟盤、光盤、緊致盤只讀存儲器(CD-ROM)、緊致盤可重寫(CD-RW)的以及磁光盤;半導(dǎo)體器件,例如只讀存儲器(ROM)、諸如動(dòng)態(tài)隨機(jī)存取存儲器(DRAM)和靜態(tài)隨機(jī)存取存儲器(SRAM)的隨機(jī)存取存儲器(RAM)、可擦除可編程只讀存儲器(EPROM)、閃存、電可擦除可編程只讀存儲器(EEPROM);相變化存儲器(PCM);磁卡或光卡;或適于存儲電子指令的任何其它類型的介質(zhì)。
[0067]因此,本發(fā)明的各實(shí)施例還包括非瞬態(tài)、有形機(jī)器可讀介質(zhì),該介質(zhì)包含指令或包含設(shè)計(jì)數(shù)據(jù),諸如硬件描述語言(HDL),它定義本文中描述的結(jié)構(gòu)、電路、裝置、處理器和/或系統(tǒng)特性。這些實(shí)施例也被稱為程序產(chǎn)品。
[0068]在某些情況下,指令轉(zhuǎn)換器可用來將指令從源指令集轉(zhuǎn)換至目標(biāo)指令集。例如,指令轉(zhuǎn)換器可以變換(例如使用靜態(tài)二進(jìn)制變換、包括動(dòng)態(tài)編譯的動(dòng)態(tài)二進(jìn)制變換)、變形、仿真或以其它方式將指令轉(zhuǎn)換成將由核來處理的一個(gè)或多個(gè)其它指令。指令轉(zhuǎn)換器可以用軟件、硬件、固件、或其組合實(shí)現(xiàn)。指令轉(zhuǎn)換器可以在處理器上、在處理器外、或者部分在處理器上部分在處理器外。[0069]圖7是根據(jù)本發(fā)明的各實(shí)施例的對照使用軟件指令轉(zhuǎn)換器將源指令集中的二進(jìn)制指令轉(zhuǎn)換成目標(biāo)指令集中的二進(jìn)制指令的框圖。在所示的實(shí)施例中,指令轉(zhuǎn)換器是軟件指令轉(zhuǎn)換器,但作為替代該指令轉(zhuǎn)換器可以用軟件、固件、硬件或其各種組合來實(shí)現(xiàn)。圖7示出了用高級語言702的程序可以使用x86編譯器704來編譯,以生成可以由具有至少一個(gè)x86指令集核716的處理器原生執(zhí)行的x86 二進(jìn)制代碼706。具有至少一個(gè)x86指令集核716的處理器表示任何處理器,這些處理器能通過兼容地執(zhí)行或以其他方式處理以下內(nèi)容來執(zhí)行與具有至少一個(gè)x86指令集核的英特爾處理器基本相同的功能:1)英特爾x86指令集核的指令集的本質(zhì)部分,或2)被定向?yàn)樵诰哂兄辽僖粋€(gè)x86指令集核的英特爾處理器上運(yùn)行的應(yīng)用或其它程序的對象代碼版本,以便取得與具有至少一個(gè)x86指令集核的英特爾處理器基本相同的結(jié)果。x86編譯器704表示用于生成x86 二進(jìn)制代碼706 (例如,對象代碼)的編譯器,該二進(jìn)制代碼706可通過或不通過附加的鏈接處理在具有至少一個(gè)x86指令集核716的處理器上執(zhí)行。類似地,圖7示出用高級語言702的程序可以使用替代的指令集編譯器708來編譯,以生成可以由不具有至少一個(gè)x86指令集核714的處理器(例如具有執(zhí)行加利福尼亞州桑尼維爾市的MIPS技術(shù)公司的MIPS指令集,和/或執(zhí)行加利福尼亞州桑尼維爾市的ARM控股公司的ARM指令集的核的處理器)原生執(zhí)行的替代指令集二進(jìn)制代碼710。指令轉(zhuǎn)換器712被用來將x86 二進(jìn)制代碼706轉(zhuǎn)換成可以由不具有x86指令集核714的處理器原生執(zhí)行的代碼。該轉(zhuǎn)換后的代碼不大可能與替換性指令集二進(jìn)制代碼710相同,因?yàn)槟軌蜻@樣做的指令轉(zhuǎn)換器難以制造;然而,轉(zhuǎn)換后的代碼將完成一般操作并由來自替換性指令集的指令構(gòu)成。因此,指令轉(zhuǎn)換器712通過仿真、模擬或任何其它過程來表示允許不具有x86指令集處理器或核的處理器或其它電子設(shè)備執(zhí)行x86 二進(jìn)制代碼706的軟件、固件、硬件或其組合。
[0070]本發(fā)明用于執(zhí)行置換操作的實(shí)施例
[0071]以下所描述的本發(fā)明的實(shí)施例包括用于將兩個(gè)源和索引作為置換操作的輸入的新指令。在一個(gè)實(shí)施例中,在目的地中編碼第二源(即,存儲在目的地寄存器中的數(shù)據(jù)被蓋寫)。在操作中,該指令置換來自第一操作數(shù)(即,目的地)和第三操作數(shù)(即,第二源輸入)的16比特、32比特或64比特值,并將它們插入到由第二操作數(shù)(即,第一源輸入)中的索引指向的位置處的目的地操作數(shù)。在一個(gè)實(shí)施例中,所描述的指令允許源操作數(shù)中的16比特、32比特或64比特值被拷貝到目的地操作數(shù)中的一個(gè)以上的位置。在此情形中,相同的索引(存儲在第一源輸入中)可被重用,例如,用于第二次迭代,而被置換的表元素(存儲在目的地操作數(shù)中)被蓋寫。
[0072]在另一實(shí)施例中,存儲在第二操作數(shù)中的索引值被蓋寫,而表(存儲在目的地操作數(shù)中)被保持。由于被保持,因此相同表可被重用,例如,用于另一次迭代,而索引元素被
蓋與O
[0073]圖8例示了其中存儲在第一源(SRCl)中的索引元素(IN1-1N4)被保持的處理器800的實(shí)施例。在此實(shí)施例中,置換邏輯805從第二源(SRC2)803和目的地(DST)804選擇數(shù)據(jù)元素并基于存儲在第一源(SRC1)802內(nèi)的索引值將所選數(shù)據(jù)元素置換回目的地(DST) 804。因而,如所例示的,響應(yīng)于索引的第一部分(INl),置換邏輯805選擇元素E-L中的任一個(gè)來拷貝到目的地804中的第一數(shù)據(jù)元素(比特0:31);響應(yīng)于索引的第二部分(IN2),置換邏輯805選擇元素E-L中的任一個(gè)來拷貝到目的地804中的第二數(shù)據(jù)元素(比特32:63);響應(yīng)于索引的第三部分(IN3),置換邏輯805選擇元素E-L中的任一個(gè)來拷貝到目的地804中的第三數(shù)據(jù)元素(比特64:96);以及響應(yīng)于索引的第四部分(IN4),置換邏輯805選擇元素E-L中的任一個(gè)來拷貝到目的地804中的第四數(shù)據(jù)元素(比特96:127)。
[0074]在一個(gè)實(shí)施例中,也可在掩碼數(shù)據(jù)結(jié)構(gòu)870中為目的地寄存器數(shù)據(jù)元素中的每一個(gè)指定掩碼比特。如果與目的地寄存器中的特定數(shù)據(jù)元素相關(guān)聯(lián)的掩碼比特被設(shè)為真,則置換邏輯805將數(shù)據(jù)元素E-L置換到目的地寄存器804中,如以上所描述的。如果掩碼比特被設(shè)為假,則在一個(gè)實(shí)施例中,置換邏輯805將全零寫入相關(guān)聯(lián)目的地寄存器條目。例如,如果與目的地寄存器比特0:31相關(guān)聯(lián)的掩碼比特被設(shè)為假值,則在一個(gè)實(shí)施例中,置換邏輯805將全零寫入比特0:31。前述用于響應(yīng)于掩碼值將零寫入目的地?cái)?shù)據(jù)元素的技術(shù)在本文中稱為“填零掩碼。”當(dāng)然,以上所描述的掩碼比特值可被逆反,同時(shí)仍遵循本發(fā)明的基本原理(例如,真=掩碼,假=無掩碼)。
[0075]替代地,本發(fā)明的一個(gè)實(shí)施例使用“合并掩碼”,其中存儲在目的地寄存器805中的先前數(shù)據(jù)元素值被保持。因而,返回到以上示例,如果使用“合并掩碼”,則比特0:31將保持其在前值。
[0076]值得注意的是,在圖8中所示的實(shí)施例中,索引值被保持(即,不被蓋寫),且可由此被用于程序循環(huán)的后繼迭代。然而,存儲在目的地寄存器804中的數(shù)據(jù)值(例如,用于特定操作的表值)被蓋寫。
[0077]相比之下,在圖9中所示的處理器800的實(shí)施例中,被存儲在目的地操作數(shù)(DST)804內(nèi)的索引值被蓋寫,同時(shí)置換邏輯805將存儲在第一源(SRCl)802或第二源(SRC2) 803中的數(shù)據(jù)值A(chǔ)-H中的任一個(gè)置換到目的地操作數(shù)804內(nèi)的數(shù)據(jù)元素。具體地,如所例示的,響應(yīng)于索引的第一部分(INl),置換邏輯805選擇元素A-H中的任一個(gè)來拷貝到目的地804中的第一數(shù)據(jù)元素(比特0:31)。響應(yīng)于索引的第二部分(IN2),置換邏輯805選擇元素A-H中的任一個(gè)來拷貝到目的地804中的第二數(shù)據(jù)元素(比特32:63);響應(yīng)于索弓I的第三部分(IN3),置換邏輯805選擇元素A-H中的任一個(gè)來拷貝到目的地804中的第三數(shù)據(jù)元素(比特64:96);以及響應(yīng)于索引的第四部分(IN4),置換邏輯805選擇元素A-H中的任一個(gè)來拷貝到目的地804中的第四數(shù)據(jù)元素(比特96:127)。
[0078]如圖8中所示的實(shí)施例中,也可在掩碼數(shù)據(jù)結(jié)構(gòu)870中為目的地寄存器數(shù)據(jù)元素中的每一個(gè)指定掩碼比特。如果與目的地寄存器中的特定數(shù)據(jù)元素相關(guān)聯(lián)的掩碼比特被設(shè)為真,則置換邏輯805將數(shù)據(jù)元素E-L置換到目的地寄存器804中,如以上所描述的。如果掩碼比特被設(shè)為假,則在一個(gè)實(shí)施例中,置換邏輯805將全零寫入相關(guān)聯(lián)目的地寄存器條目。例如,如果與目的地寄存器比特0:31相關(guān)聯(lián)的掩碼比特被設(shè)為真值,則在一個(gè)實(shí)施例中,置換邏輯805將全零寫入比特0:31。前述用于響應(yīng)于掩碼值將零寫入目的地?cái)?shù)據(jù)元素的技術(shù)在本文中稱為“填零掩碼”。
[0079]替代地,本發(fā)明的一個(gè)實(shí)施例使用“合并掩碼”,其中存儲在目的地寄存器805中的先前數(shù)據(jù)元素值被保持。因而,返回到以上示例,如果使用“合并掩碼”,則比特0:31將保持其在前值。
[0080]值得注意的是,在此實(shí)施例中,存儲在第一源操作數(shù)802中的數(shù)據(jù)(例如,表數(shù)據(jù))可被重用于程序循環(huán)的后繼迭代,同時(shí)索引值(IN1-1N4)被蓋寫。
[0081]圖10中例示了根據(jù)本發(fā)明的一個(gè)實(shí)施例的方法。此實(shí)施例可在圖8中所示的處理器架構(gòu)的上下文中實(shí)現(xiàn),但是不限于任何特定處理器架構(gòu)。
[0082]在1002,將控制變量N初始化為零,并且在1003,從第一源操作數(shù)(SRCl)讀取索引值。基于索引值,選擇目的地中的數(shù)據(jù)元素。例如,索引值INl可標(biāo)識數(shù)據(jù)元素1,索引值IN2可標(biāo)識數(shù)據(jù)元素2以此類推。如果在1005確定對于所選目的地?cái)?shù)據(jù)元素,存在具有假值的寫掩碼,則在1006,根據(jù)所指定的掩碼操作更新數(shù)據(jù)元素。例如,如以上所提及的,如果選擇“填零掩碼”,則置換邏輯將全零寫入所選目的地?cái)?shù)據(jù)元素。替代地,如果使用“合并掩碼”,則維持存儲在目的地操作數(shù)中的先前數(shù)據(jù)元素值。因而,返回到以上示例,如果使用“合并掩碼”,則數(shù)據(jù)元素N將保持其在前值。
[0083]如果寫掩碼沒有被設(shè)為真值,則基于索引值選擇要置換的數(shù)據(jù)元素,并且在1008,用來自第二源操作數(shù)(SRC2)或目的地(DST)的數(shù)據(jù)元素中的任一個(gè)來更新數(shù)據(jù)元素N(即,執(zhí)行置換操作)。如果在1010確定N的值已達(dá)到其最大值(即,目的地操作數(shù)的最后數(shù)據(jù)元素已被寫入),則過程終止。若否,則將N增加一(選擇目的地的下一數(shù)據(jù)元素),并且過程返回至1003。
[0084]圖11中例示了根據(jù)本發(fā)明的一個(gè)實(shí)施例的另一方法。此實(shí)施例可在圖9中所示的處理器架構(gòu)的上下文中實(shí)現(xiàn),但是不限于任何特定處理器架構(gòu)。
[0085]在1102,將控制變量N被初始化為零,并且在1103,從目的地(DST)讀取索引值?;谒饕?,選擇目的地中的數(shù)據(jù)元素。例如,索引值INl可標(biāo)識目的地的數(shù)據(jù)元素1,索引值IN2可標(biāo)識數(shù)據(jù)元素2以此類推。如果在1005確定對于所選目的地?cái)?shù)據(jù)元素,存在具有假值的寫掩碼,則在1006,根據(jù)所指定的掩碼操作更新目的地中的數(shù)據(jù)元素。例如,如以上所提及的,如果選擇“填零掩碼”,則置換邏輯將全零寫入所選目的地?cái)?shù)據(jù)元素。替代地,如果使用“合并掩碼”,則維持存儲在目的地操作數(shù)中的先前數(shù)據(jù)元素值。因而,返回到以上示例,如果使用“合并掩碼”,則數(shù)據(jù)元素N將保持其在前值。
[0086]如果寫掩碼沒有被設(shè)為真值,則基于索引值選擇要置換的數(shù)據(jù)元素,并且在1008,用來自第一源操作數(shù)(SRCl)或第二源操作數(shù)(SRC2)的數(shù)據(jù)元素中的任一個(gè)來更新數(shù)據(jù)元素N(即,執(zhí)行置換操作)。如果在1010確定N的值已達(dá)到其最大值(即,目的地操作數(shù)的最后數(shù)據(jù)元素已被寫入),則過程終止。若否,則將N增加一(選擇目的地的下一數(shù)據(jù)元素),并且過程返回至1003。
[0087]總之,本文中所描述的實(shí)施例基于索引置換數(shù)據(jù)元素,并且基于存儲在掩碼數(shù)據(jù)結(jié)構(gòu)中的值執(zhí)行掩碼操作。在一個(gè)實(shí)施例中,索引值被保持且可由此被用在后繼迭代中。在另一實(shí)施例中,存儲在第二源操作數(shù)中的數(shù)據(jù)值被保持以用在后繼迭代中。在兩個(gè)實(shí)施例中,寫掩碼可被用于每個(gè)目的地?cái)?shù)據(jù)元素(如所描述的)。
[0088]以下闡述了描述本發(fā)明的一個(gè)實(shí)施例的實(shí)現(xiàn)的偽代碼。然而,將理解,本發(fā)明的基本原理不限于偽代碼中描述的特定實(shí)現(xiàn)。在以上描述的上下文內(nèi),本領(lǐng)域普通技術(shù)人員將更好地理解偽代碼的細(xì)節(jié)。這樣,以下不需要偽代碼的附加描述。
[0089]
【權(quán)利要求】
1.一種用于執(zhí)行指令以通過執(zhí)行包括以下各項(xiàng)的操作來使用掩碼置換數(shù)據(jù)元素的處理器: 從掩碼數(shù)據(jù)結(jié)構(gòu)讀取值以確定是否針對目的地操作數(shù)的每個(gè)數(shù)據(jù)元素實(shí)現(xiàn)掩碼; 如果針對特定數(shù)據(jù)元素不實(shí)現(xiàn)掩碼,則基于存儲在目的地操作數(shù)中的索引值從第一源操作數(shù)和第二源操作數(shù)選擇要拷貝到目的地操作數(shù)內(nèi)的數(shù)據(jù)元素位置的數(shù)據(jù)元素,其中來自第一源操作數(shù)和第二源操作數(shù)中任一者的數(shù)據(jù)元素中的任一個(gè)可被拷貝到目的地操作數(shù)內(nèi)的數(shù)據(jù)元素位置中的任一個(gè);以及 如果針對所述目的地操作數(shù)的特定數(shù)據(jù)元素實(shí)現(xiàn)掩碼,則相對于此特定數(shù)據(jù)元素執(zhí)行指定掩碼操作。
2.如權(quán)利要求1所述的處理器,其特征在于,所述指定掩碼操作包括將零寫入所述特定數(shù)據(jù)元素內(nèi)的每個(gè)比特。
3.如權(quán)利要求1所述的處理器,其特征在于,所述指定掩碼操作包括使存儲在所述特定數(shù)據(jù)元素中的當(dāng)前比特值保持不變。
4.如權(quán)利要求1所述的處理器,其特征在于,所述目的地操作數(shù)以及所述第一和第二源操作數(shù)在長度上各自為128比特。
5.如權(quán)利要求4所述的處理器,其特征在于,所述數(shù)據(jù)元素在長度上各自為32比特。
6.如權(quán)利要求4所述的處理器,其特征在于,所述數(shù)據(jù)元素在長度上各自為16比特。
7.如權(quán)利要求4所述的處理器,其特征在于,所述數(shù)據(jù)元素在長度上各自為64比特。
8.一種用于使用掩碼來置換數(shù)據(jù)元素的方法,包括: 從掩碼數(shù)據(jù)結(jié)構(gòu)讀取值以確定是否針對目的地操作數(shù)的每個(gè)數(shù)據(jù)元素實(shí)現(xiàn)掩碼; 如果針對特定數(shù)據(jù)元素不實(shí)現(xiàn)掩碼,則基于存儲在目的地操作數(shù)中的索引值從第一源操作數(shù)和第二源操作數(shù)選擇要拷貝到目的地操作數(shù)內(nèi)的數(shù)據(jù)元素位置的數(shù)據(jù)元素,其中來自第一源操作數(shù)和第二源操作數(shù)中任一者的數(shù)據(jù)元素中的任一個(gè)可被拷貝到目的地操作數(shù)內(nèi)的數(shù)據(jù)元素位置中的任一個(gè);以及 如果針對所述目的地操作數(shù)的特定數(shù)據(jù)元素實(shí)現(xiàn)掩碼,則相對于此特定數(shù)據(jù)元素執(zhí)行指定掩碼操作。
9.如權(quán)利要求8所述的方法,其特征在于,所述指定掩碼操作包括將零寫入所述特定數(shù)據(jù)元素內(nèi)的每個(gè)比特。
10.如權(quán)利要求8所述的方法,其特征在于,所述指定掩碼操作包括使存儲在所述特定數(shù)據(jù)元素中的當(dāng)前比特值保持不變。
11.如權(quán)利要求8所述的方法,其特征在于,所述目的地操作數(shù)以及所述第一和第二源操作數(shù)在長度上各自為128比特。
12.如權(quán)利要求11所述的方法,其特征在于,所述數(shù)據(jù)元素在長度上各自為32比特。
13.如權(quán)利要求11所述的方法,其特征在于,所述數(shù)據(jù)元素在長度上各自為16比特。
14.如權(quán)利要求11所述的方法,其特征在于,所述數(shù)據(jù)元素在長度上各自為64比特。
15.一種處理器,包括: 掩碼裝置,其從掩碼數(shù)據(jù)結(jié)構(gòu)讀取值以確定是否針對目的地操作數(shù)的每個(gè)數(shù)據(jù)元素實(shí)現(xiàn)掩碼; 置換裝置,其中如果針對特定數(shù)據(jù)元素不實(shí)現(xiàn)掩碼,則所述置換裝置基于存儲在目的地操作數(shù)中的索引值從第一源操作數(shù)和第二源操作數(shù)選擇要拷貝到目的地操作數(shù)內(nèi)的數(shù)據(jù)元素位置的數(shù)據(jù)元素,其中來自第一源操作數(shù)和第二源操作數(shù)中任一者的數(shù)據(jù)元素中的任一個(gè)可被拷貝到目的地操作數(shù)內(nèi)的數(shù)據(jù)元素位置中的任一個(gè);以及 如果針對所述目的地操作數(shù)的特定數(shù)據(jù)元素實(shí)現(xiàn)掩碼,則所述掩碼裝置相對于此特定數(shù)據(jù)元素執(zhí)行指定掩碼操作。
16.如權(quán)利要求15所述的處理器,其特征在于,所述指定掩碼操作包括將零寫入所述特定數(shù)據(jù)元素內(nèi)的每個(gè)比特。
17.如權(quán)利要求15所述的處理器,其特征在于,所述指定掩碼操作包括使存儲在所述特定數(shù)據(jù)元素中的當(dāng)前比特值保持不變。
18.如權(quán)利要求15所述的處理器,其特征在于,所述目的地操作數(shù)以及所述第一和第二源操作數(shù)在長度上各自為128比特。
19.如權(quán)利要求18所述的處理器,其特征在于,所述數(shù)據(jù)元素在長度上各自為32比特。
20.如權(quán)利要求18所述的處理器,其特征在于,所述數(shù)據(jù)元素在長度上各自為16比特。
21.如權(quán)利要求18所述的處理器,其特征在于,所述數(shù)據(jù)元素在長度上各自為64比特。
22.一種用于使用掩碼執(zhí)行置換操作的計(jì)算機(jī)系統(tǒng),包括: 用于存儲程序代 碼的存儲器;以及 用于處理所述程序代碼以執(zhí)行包括以下各項(xiàng)的操作的處理器; 從掩碼數(shù)據(jù)結(jié)構(gòu)讀取值以確定是否針對目的地操作數(shù)的每個(gè)數(shù)據(jù)元素實(shí)現(xiàn)掩碼; 如果針對特定數(shù)據(jù)元素不實(shí)現(xiàn)掩碼,則基于存儲在目的地操作數(shù)中的索引值從第一源操作數(shù)和第二源操作數(shù)選擇要拷貝到目的地操作數(shù)內(nèi)的數(shù)據(jù)元素位置的數(shù)據(jù)元素,其中來自第一源操作數(shù)和第二源操作數(shù)中任一者的數(shù)據(jù)元素中的任一個(gè)可被拷貝到目的地操作數(shù)內(nèi)的數(shù)據(jù)元素位置中的任一個(gè); 如果針對所述目的地操作數(shù)的特定數(shù)據(jù)元素實(shí)現(xiàn)掩碼,則相對于此特定數(shù)據(jù)元素執(zhí)行指定掩碼操作。
23.如權(quán)利要求22所述的系統(tǒng),其特征在于,所述指定掩碼操作包括將零寫入所述特定數(shù)據(jù)元素內(nèi)的每個(gè)比特。
24.如權(quán)利要求22所述的系統(tǒng),其特征在于,所述指定掩碼操作包括使存儲在所述特定數(shù)據(jù)元素中的當(dāng)前比特值保持不變。
25.如權(quán)利要求22所述的系統(tǒng),其特征在于,所述目的地操作數(shù)以及所述第一和第二源操作數(shù)在長度上各自為128比特。
26.如權(quán)利要求25所述的系統(tǒng),其特征在于,所述數(shù)據(jù)元素在長度上各自為32比特。
27.如權(quán)利要求4所述的系統(tǒng),其特征在于,所述數(shù)據(jù)元素在長度上各自為16比特。
28.如權(quán)利要求4所述的系統(tǒng),其特征在于,所述數(shù)據(jù)元素在長度上各自為64比特。
29.如權(quán)利要求22所述的系統(tǒng),其特征在于,還包括: 顯示適配器,用于響應(yīng)于所述處理器對所述程序代碼的執(zhí)行而呈現(xiàn)圖形圖像。
30.如權(quán)利要求29所述的系統(tǒng),其特征在于,還包括: 用戶輸入界面,用于從用戶輸入設(shè)備接收控制信號,所述處理器響應(yīng)于所述控制信號執(zhí)行所述程序代碼。
【文檔編號】G06F9/30GK104011671SQ201180075863
【公開日】2014年8月27日 申請日期:2011年12月22日 優(yōu)先權(quán)日:2011年12月22日
【發(fā)明者】E·烏爾德-阿邁德-瓦爾, R·凡倫天, M·哈高格, J·考博爾圣阿德里安, B·L·托爾, M·J·查尼, T·尤里爾, Z·斯波伯, A·格雷德斯廷 申請人:英特爾公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1