用于從通用寄存器向向量寄存器進(jìn)行廣播的裝置和方法
【專利摘要】描述了用于從通用源寄存器向目的地向量寄存器進(jìn)行廣播的裝置和方法。例如,根據(jù)一個(gè)實(shí)施例的方法包括以下操作:選擇所述目的地向量寄存器內(nèi)的要被更新的數(shù)據(jù)元素位置N;如果掩碼指示符被設(shè)置為第一指示,從所述通用源寄存器向所述目的地向量寄存器內(nèi)的數(shù)據(jù)元素位置N廣播數(shù)據(jù)集;以及如果所述掩碼指示符被設(shè)置為第二指示,向所述目的地向量寄存器內(nèi)的數(shù)據(jù)元素位置N復(fù)制零,或者保持存儲(chǔ)在所述目的地向量寄存器內(nèi)的數(shù)據(jù)元素位置N中的現(xiàn)有值。
【專利說(shuō)明】用于從通用寄存器向向量寄存器進(jìn)行廣播的裝置和方法 發(fā)明領(lǐng)域
[0001] 本發(fā)明的實(shí)施例一般涉及計(jì)算機(jī)系統(tǒng)的領(lǐng)域。更具體地,本發(fā)明的實(shí)施例涉及用 于從通用寄存器向向量寄存器廣播的裝置和方法。
【背景技術(shù)】
[0002] 一般背景
[0003] 指令集、或指令集架構(gòu)(ISA)是涉及編程的計(jì)算機(jī)架構(gòu)的一部分,并且可包括原 生數(shù)據(jù)類型、指令、寄存器架構(gòu)、尋址模式、存儲(chǔ)器架構(gòu)、中斷和異常處理、以及外部輸入和 輸出(I/O)。術(shù)語(yǔ)指令在本申請(qǐng)中一般表示宏指令,宏指令是被提供給處理器(或指令轉(zhuǎn) 換器,該指令轉(zhuǎn)換器(利用靜態(tài)二進(jìn)制轉(zhuǎn)換、包括動(dòng)態(tài)編譯的動(dòng)態(tài)二進(jìn)制轉(zhuǎn)換)轉(zhuǎn)換、變形、 仿真或以其他方式將指令轉(zhuǎn)換成將由處理器處理的一個(gè)或多個(gè)其他指令)以供執(zhí)行的指 令--作為對(duì)比,微指令或微操作(微操作)是處理器的解碼器解碼宏指令的結(jié)果。
[0004] ISA與微架構(gòu)不同,微架構(gòu)是實(shí)現(xiàn)該指令集的處理器的內(nèi)部設(shè)計(jì)。具有不同微架 構(gòu)的處理器可共享共同的指令集。例如,INTEL?奔騰四(Pentium 4)處理器、Intel?酷 睿(Core?)處理器、以及來(lái)自加利福尼亞州桑尼威爾(Sunnyvale)的超微半導(dǎo)體有限公司 (Advanced Micro Devices, Inc.)的諸多處理器執(zhí)行幾乎相同版本的x86指令集(在更新 的版本中加入了一些擴(kuò)展),但具有不同的內(nèi)部設(shè)計(jì)。例如,ISA的相同寄存器架構(gòu)可以在 不同的微架構(gòu)中使用公知的技術(shù)以不同方法來(lái)實(shí)現(xiàn),公知的技術(shù)包括專用物理寄存器、使 用寄存器重命名機(jī)制(例如,使用寄存器別名表(RAT)、重排序緩沖器(R0B)、以及引退寄存 器組;使用多個(gè)寄存器映射和寄存器池)的一個(gè)或多個(gè)動(dòng)態(tài)分配物理寄存器,等等。除非另 行指出,術(shù)語(yǔ)寄存器架構(gòu)、寄存器組和寄存器在本文中用于指代對(duì)軟件/編程者可見(jiàn)的寄 存器以及指令指定寄存器的方式。在需要特殊性的場(chǎng)合,將使用定語(yǔ)邏輯的、架構(gòu)的或軟件 可見(jiàn)的來(lái)指示寄存器架構(gòu)中的寄存器/寄存器組,同時(shí)不同的定語(yǔ)將用于指示給定微架構(gòu) 中的寄存器(例如物理寄存器、重排序緩沖器、引退寄存器、寄存器池)。
[0005] 指令集包括一個(gè)或多個(gè)指令格式。給定指令格式定義多個(gè)字段(位的數(shù)量、位的 位置等)以指定將要被執(zhí)行的操作(操作碼)以及該操作將要執(zhí)行的操作數(shù)等等。通過(guò)定 義指令模板(或子格式),一些指令格式被進(jìn)一步分解。例如,可將給定指令格式的指令模 板定義成具有該指令格式的字段的不同子集(所包括的字段通常是相同順序,但至少一些 由于包括更少的字段而具有不同的位位置)和/或定義成對(duì)給定字段的解釋不同。因此, 利用給定指令格式(而且如果定義,則按照該指令格式的指令模板中的給定一個(gè)模板)來(lái) 表達(dá)ISA的每個(gè)指令,并且ISA的每個(gè)指令包括用于指定其操作和操作數(shù)的字段。例如,示 例性的ADD (加法)指令具有特定的操作碼和指令格式,該指令格式包括用于指定該操作碼 的操作碼字段和用于選擇操作數(shù)(源1/目的地和源2)的操作數(shù)字段;并且該ADD指令在 指令流中的出現(xiàn)將具有在操作數(shù)字段中的特定內(nèi)容,該特定內(nèi)容選擇特定操作數(shù)。
[0006] 科學(xué)應(yīng)用、金融應(yīng)用、自動(dòng)向量化通用應(yīng)用、RMS(識(shí)別、挖掘和合成)應(yīng)用以及視 覺(jué)和多媒體應(yīng)用(諸如,2D/3D圖形、圖像處理、視頻壓縮/解壓縮、語(yǔ)音識(shí)別算法和音頻處 理)通常需要對(duì)大量數(shù)據(jù)項(xiàng)執(zhí)行相同的操作(稱為"數(shù)據(jù)并行性")。單指令多數(shù)據(jù)(SMD) 指的是使得處理器對(duì)多個(gè)數(shù)據(jù)項(xiàng)執(zhí)行一操作的一種類型的指令。SMD技術(shù)尤其適用于將寄 存器中的多個(gè)位邏輯地劃分成多個(gè)固定大小的數(shù)據(jù)元素的處理器,其中每個(gè)數(shù)據(jù)元素表示 單獨(dú)的值。例如,可將256位寄存器中的位指定為要進(jìn)行操作的源操作數(shù),作為4個(gè)單獨(dú)的 64位打包數(shù)據(jù)元素(四字(Q)尺寸數(shù)據(jù)元素)、8個(gè)單獨(dú)的32位打包數(shù)據(jù)元素(雙字(D) 尺寸數(shù)據(jù)元素)、16個(gè)單獨(dú)的16位打包數(shù)據(jù)元素(字(W)尺寸數(shù)據(jù)元素)、或32個(gè)單獨(dú)的 8位數(shù)據(jù)元素(字節(jié)(B)尺寸數(shù)據(jù)元素)。該數(shù)據(jù)類型可被稱為打包數(shù)據(jù)類型或向量數(shù)據(jù) 類型,并且該數(shù)據(jù)類型的操作數(shù)被稱為打包數(shù)據(jù)操作數(shù)或向量操作數(shù)。換句話說(shuō),打包數(shù)據(jù) 項(xiàng)或向量指的是打包數(shù)據(jù)元素的序列,而打包數(shù)據(jù)操作數(shù)或向量操作數(shù)是SIMD指令(或稱 為打包數(shù)據(jù)指令或向量指令)的源操作數(shù)或目的地操作數(shù)。
[0007] 作為示例,一種類型的SIMD指令指定了將要以縱向方式對(duì)兩個(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ù)元素對(duì)(也稱為對(duì) 應(yīng)的數(shù)據(jù)元素;即,每個(gè)源操作數(shù)的數(shù)據(jù)元素位置0中的數(shù)據(jù)元素相對(duì)應(yīng),每個(gè)源操作數(shù)中 的數(shù)據(jù)元素位置1中的數(shù)據(jù)元素相對(duì)應(yīng),以此類推)。對(duì)這些源數(shù)據(jù)元素對(duì)中的每一個(gè)分別 執(zhí)行該SMD指令指定的操作,以產(chǎn)生匹配數(shù)量的結(jié)果數(shù)據(jù)元素,并且因此每一對(duì)源數(shù)據(jù)元 素具有相應(yīng)的結(jié)果數(shù)據(jù)元素。由于該操作是縱向的,且由于結(jié)果向量操作數(shù)是相同尺寸、具 有相同數(shù)量的數(shù)據(jù)元素并且結(jié)果數(shù)據(jù)元素按照與源向量操作數(shù)相同的數(shù)據(jù)元素順序被存 儲(chǔ),所以結(jié)果數(shù)據(jù)元素處于結(jié)果向量操作數(shù)中與它們?cè)谠聪蛄坎僮鲾?shù)中的相應(yīng)源數(shù)據(jù)元素 對(duì)相同的位位置中。除了這種示例性類型的SMD指令之外,存在各種各樣其他類型的SMD 指令(例如僅具有一個(gè)源向量操作數(shù)或具有超過(guò)兩個(gè)源向量操作數(shù)、以橫向方式操作、產(chǎn) 生不同尺寸的結(jié)果向量操作數(shù)、具有不同尺寸的數(shù)據(jù)元素和/或具有不同的數(shù)據(jù)元素次序 的SMD指令)。應(yīng)當(dāng)理解,術(shù)語(yǔ)目的地向量操作數(shù)(或目的地操作數(shù))被定義為執(zhí)行由指 令指定的操作的直接結(jié)果,包括將該目的地操作數(shù)存儲(chǔ)在一位置處(可以是由該指令指定 的寄存器或存儲(chǔ)器地址處),使得它可作為源操作數(shù)由另一指令訪問(wèn)(通過(guò)該另一指令指 定同一位置)。
[0008] 諸如具有包括 x86、MMX?、流式 SMD 擴(kuò)展(SSE)、SSE2、SSE3、SSE4. 1 以及 SSE4. 2 指令的指令集的丨ntel? Core?處理器所采用的SMD技術(shù)之類的SMD技術(shù)已經(jīng)實(shí)現(xiàn)了應(yīng)用 性能的重大改進(jìn)。已經(jīng)推出和/或發(fā)布了被稱為高級(jí)向量擴(kuò)展(AVX) (AVX1和AVX2)和利 用向量擴(kuò)展(VEX)編碼方案的附加的SIMD擴(kuò)展集(參見(jiàn)例如2011年10月的丨meP 64和 IA-32架構(gòu)軟件開(kāi)發(fā)者手冊(cè);以及參見(jiàn)2011年6月的Intel?高級(jí)向量擴(kuò)展編程參考)。
[0009] 與本發(fā)明的實(shí)施例有關(guān)的背景
[0010] 廣播來(lái)自存儲(chǔ)器或向量寄存器的值已被引入多種現(xiàn)有指令集架構(gòu)中。然而,在某 些情形中,期望能夠廣播在諸如圖8所示的通用寄存器850中存儲(chǔ)的值815。在當(dāng)前處理器 架構(gòu)中,這只能通過(guò)使用至少兩個(gè)指令來(lái)完成:用于首先將值815寫(xiě)入到存儲(chǔ)器809的第一 指令(INST1)以及用于向其它處理器組件860(例如其它寄存器、緩沖器等)廣播值815的 第二指令(INST2)。以這種方式需要兩個(gè)指令是低效的,尤其是在這些指令之一是系統(tǒng)存儲(chǔ) 器訪問(wèn)的情況下。
[0011] 附圖簡(jiǎn)述
[0012] 圖1A是示出根據(jù)本發(fā)明的實(shí)施例的示例性有序流水線以及示例性寄存器重命名 的無(wú)序發(fā)布/執(zhí)行流水線兩者的框圖;
[0013] 圖1B是示出根據(jù)本發(fā)明的各實(shí)施例的要包括在處理器中的有序架構(gòu)核的示例性 實(shí)施例和示例性的寄存器重命名的無(wú)序發(fā)布/執(zhí)行架構(gòu)核的框圖。
[0014] 圖2是根據(jù)本發(fā)明的實(shí)施例的具有集成的存儲(chǔ)器控制器和圖形器件的單核處理 器和多核處理器的框圖。
[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í)施例的對(duì)照使用軟件指令轉(zhuǎn)換器將源指令集中的二進(jìn)制指 令轉(zhuǎn)換成目標(biāo)指令集中的二進(jìn)制指令的框圖。
[0020] 圖8示出現(xiàn)有技術(shù),其中使用系統(tǒng)訪問(wèn)從源通用寄存器向向量目的地寄存器廣播 數(shù)據(jù)。
[0021] 圖9A-B示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的架構(gòu)。
[0022] 圖10A-B示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的方法。
[0023] 圖11A和11B是示出根據(jù)本發(fā)明實(shí)施例的通用向量友好指令格式及其指令模板的 框圖;
[0024] 圖12A-D是示出根據(jù)本發(fā)明實(shí)施例的示例性專用向量友好指令格式的框圖。
[0025] 圖13是根據(jù)本發(fā)明的一個(gè)實(shí)施例的寄存器架構(gòu)的框圖;
[0026] 圖14A是根據(jù)本發(fā)明的實(shí)施例的單個(gè)處理器核以及它與管芯上互連網(wǎng)絡(luò)的連接 及其二級(jí)(L2)高速緩存的本地子集的框圖。
[0027] 圖14B是根據(jù)本發(fā)明的實(shí)施例的圖14A中處理器核的一部分的展開(kāi)圖。
[0028] 詳細(xì)描述
[0029] 示例件處理器架構(gòu)和數(shù)據(jù)類型
[0030] 圖1A是示出根據(jù)本發(fā)明的各實(shí)施例的示例性有序流水線和示例性的寄存器重命 名的無(wú)序發(fā)布/執(zhí)行流水線的框圖。圖1B是示出根據(jù)本發(fā)明的各實(shí)施例的要包括在處理 器中的有序架構(gòu)核的示例性實(shí)施例和示例性的寄存器重命名的無(wú)序發(fā)布/執(zhí)行架構(gòu)核的 框圖。圖1A-B中的實(shí)線框示出了有序流水線和有序核,而可選增加的虛線框示出了寄存器 重命名的、無(wú)序發(fā)布/執(zhí)行流水線和核。給定有序方面是無(wú)序方面的子集的情況下,將描述 無(wú)序方面。
[0031] 在圖1A中,處理器流水線100包括取出級(jí)102、長(zhǎng)度解碼級(jí)104、解碼級(jí)106、分配 級(jí)108、重命名級(jí)110、調(diào)度(也稱為分派或發(fā)布)級(jí)112、寄存器讀取/存儲(chǔ)器讀取級(jí)114、 執(zhí)行級(jí)116、寫(xiě)回/存儲(chǔ)器寫(xiě)入級(jí)118、異常處理級(jí)122和提交級(jí)124。
[0032] 圖1B示出了包括耦合到執(zhí)行引擎單元150的前端單元130的處理器核190,且 執(zhí)行引擎單元和前端單元兩者都耦合到存儲(chǔ)器單元170。核190可以是精簡(jiǎn)指令集計(jì)算 (RISC)核、復(fù)雜指令集計(jì)算(CISC)核、超長(zhǎng)指令字(VLIW)核或混合或替代核類型。作為又 一選項(xiàng),核190可以是專用核,諸如例如網(wǎng)絡(luò)或通信核、壓縮引擎、協(xié)處理器核、通用計(jì)算圖 形處理器單元(GPGPU)核、或圖形核等等。
[0033] 前端單元130包括稱合到指令高速緩存單元134的分支預(yù)測(cè)單元132,該指令高速 緩存單元耦合到指令轉(zhuǎn)換后備緩沖器(TLB) 136,該指令轉(zhuǎn)換后備緩沖器耦合到指令取出單 元138,指令取出單元耦合到解碼單元140。解碼單元140 (或解碼器)可解碼指令,并生成 從原始指令解碼出的、或以其他方式反映原始指令的、或從原始指令導(dǎo)出的一個(gè)或多個(gè)微 操作、微代碼進(jìn)入點(diǎn)、微指令、其他指令、或其他控制信號(hào)作為輸出。解碼單元140可使用各 種不同的機(jī)制來(lái)實(shí)現(xiàn)。合適的機(jī)制的示例包括但不限于查找表、硬件實(shí)現(xiàn)、可編程邏輯陣列 (PLA)、微代碼只讀存儲(chǔ)器(ROM)等。在一個(gè)實(shí)施例中,核190包括(例如,在解碼單元140 中或否則在前端單元130內(nèi)的)用于存儲(chǔ)某些宏指令的微代碼的微代碼ROM或其他介質(zhì)。 解碼單元140耦合至執(zhí)行引擎單元150中的重命名/分配器單元152。
[0034] 執(zhí)行引擎單元150包括重命名/分配器單元152,該重命名/分配器單元152耦合 至引退單元154和一個(gè)或多個(gè)調(diào)度器單元156的集合。調(diào)度器單元156表示任何數(shù)目的不 同調(diào)度器,包括預(yù)留站、中央指令窗等。調(diào)度器單元156耦合到物理寄存器組單元158。每 個(gè)物理寄存器組單元158表示一個(gè)或多個(gè)物理寄存器組,其中不同的物理寄存器組存儲(chǔ)一 種或多種不同的數(shù)據(jù)類型,諸如標(biāo)量整數(shù)、標(biāo)量浮點(diǎn)、打包整數(shù)、打包浮點(diǎn)、向量整數(shù)、向量 浮點(diǎn)、狀態(tài)(例如,作為要執(zhí)行的下一指令的地址的指令指針)等。在一個(gè)實(shí)施例中,物理寄 存器組單元158包括向量寄存器單元、寫(xiě)掩碼寄存器單元和標(biāo)量寄存器單元。這些寄存器 單元可以提供架構(gòu)向量寄存器、向量掩碼寄存器、和通用寄存器。物理寄存器組單元158與 引退單元154重疊以示出可以用來(lái)實(shí)現(xiàn)寄存器重命名和無(wú)序執(zhí)行的各種方式(例如,使用 重新排序緩沖器和引退寄存器組;使用將來(lái)的文件、歷史緩沖器和引退寄存器組;使用寄 存器映射和寄存器池等等)。引退單元154和物理寄存器組單元158耦合到執(zhí)行群集160。 執(zhí)行群集160包括一個(gè)或多個(gè)執(zhí)行單元162的集合和一個(gè)或多個(gè)存儲(chǔ)器訪問(wèn)單元164的集 合。執(zhí)行單元162可以對(duì)各種類型的數(shù)據(jù)(例如,標(biāo)量浮點(diǎn)、打包整數(shù)、打包浮點(diǎn)、向量整型、 向量浮點(diǎn))執(zhí)行各種操作(例如,移位、加法、減法、乘法)。盡管一些實(shí)施例可以包括專用 于特定功能或功能集合的多個(gè)執(zhí)行單元,但其他實(shí)施例可包括全部執(zhí)行所有功能的僅一個(gè) 執(zhí)行單元或多個(gè)執(zhí)行單元。調(diào)度器單元156、物理寄存器組單元158和執(zhí)行群集160被示 為可能有多個(gè),因?yàn)槟承?shí)施例為某些類型的數(shù)據(jù)/操作創(chuàng)建分開(kāi)的流水線(例如,標(biāo)量整 型流水線、標(biāo)量浮點(diǎn)/打包整型/打包浮點(diǎn)/向量整型/向量浮點(diǎn)流水線,和/或各自具有 其自己的調(diào)度器單元、物理寄存器組單元和/或執(zhí)行群集的存儲(chǔ)器訪問(wèn)流水線--以及在 分開(kāi)的存儲(chǔ)器訪問(wèn)流水線的情況下,實(shí)現(xiàn)其中僅該流水線的執(zhí)行群集具有存儲(chǔ)器訪問(wèn)單元 164的某些實(shí)施例)。還應(yīng)當(dāng)理解,在使用分開(kāi)的流水線的情況下,這些流水線中的一個(gè)或 多個(gè)可以為無(wú)序發(fā)布/執(zhí)行,并且其余流水線可以為有序發(fā)布/執(zhí)行。
[0035] 存儲(chǔ)器訪問(wèn)單元164的集合耦合到存儲(chǔ)器單元170,該存儲(chǔ)器單元包括耦合到數(shù) 據(jù)高速緩存單元174的數(shù)據(jù)TLB單元172,其中數(shù)據(jù)高速緩存單元耦合到二級(jí)(L2)高速緩 存單元176。在一個(gè)示例性實(shí)施例中,存儲(chǔ)器訪問(wèn)單元164可包括加載單元、存儲(chǔ)地址單元 和存儲(chǔ)數(shù)據(jù)單元,其中的每一個(gè)均耦合至存儲(chǔ)器單元170中的數(shù)據(jù)TLB單元472。指令高速 緩存單元134還耦合到存儲(chǔ)器單元170中的第二級(jí)(L2)高速緩存單元176。L2高速緩存 單元176耦合到一個(gè)或多個(gè)其他級(jí)的高速緩存,并最終耦合到主存儲(chǔ)器。
[0036] 作為示例,示例性寄存器重命名的、無(wú)序發(fā)布/執(zhí)行核架構(gòu)可以如下實(shí)現(xiàn)流水線 100 :1)指令取出138執(zhí)行取出和長(zhǎng)度解碼級(jí)102和104 ;2)解碼單元140執(zhí)行解碼級(jí)106 ; 3)重命名/分配器單元152執(zhí)行分配級(jí)108和重命名級(jí)110 ;4)調(diào)度器單元156執(zhí)行調(diào)度 級(jí)112 ;5)物理寄存器組單元158和存儲(chǔ)器單元170執(zhí)行寄存器讀取/存儲(chǔ)器讀取級(jí)114 ; 執(zhí)行群集160執(zhí)行執(zhí)行級(jí)116 ;6)存儲(chǔ)器單元170和物理寄存器組單元158執(zhí)行寫(xiě)回/存 儲(chǔ)器寫(xiě)入級(jí)118 ;7)各單元可牽涉到異常處理級(jí)122 ;以及8)引退單元154和物理寄存器 組單元158執(zhí)行提交級(jí)124。
[0037] 核190可支持一個(gè)或多個(gè)指令集(例如,x86指令集(具有與較新版本一起添加 的一些擴(kuò)展);加利福尼亞州桑尼維爾市的MIPS技術(shù)公司的MIPS指令集;加利福尼州桑尼 維爾市的ARM控股的ARM指令集(具有諸如NEON等可選附加擴(kuò)展)),其中包括本文中描述 的各指令。在一個(gè)實(shí)施例中,核190包括用于支持打包數(shù)據(jù)指令集擴(kuò)展(例如,AVXUAVX2 和/或先前描述的一些形式的一般向量友好指令格式(U = 0和/或U= 1))的邏輯,從而 允許很多多媒體應(yīng)用使用的操作能夠使用打包數(shù)據(jù)來(lái)執(zhí)行。
[0038] 應(yīng)當(dāng)理解,核可支持多線程化(執(zhí)行兩個(gè)或更多個(gè)并行的操作或線程的集合),并 且可以按各種方式來(lái)完成該多線程化,此各種方式包括時(shí)分多線程化、同步多線程化(其 中單個(gè)物理核為物理核正在同步多線程化的各線程中的每一個(gè)線程提供邏輯核)、或其組 合(例如,時(shí)分取出和解碼以及此后諸如用Intel?超線程化技術(shù)來(lái)同步多線程化)。
[0039] 盡管在無(wú)序執(zhí)行的上下文中描述了寄存器重命名,但應(yīng)當(dāng)理解,可以在有序架構(gòu) 中使用寄存器重命名。盡管所示出的處理器的實(shí)施例還包括分開(kāi)的指令和數(shù)據(jù)高速緩存單 元134/174以及共享L2高速緩存單元176,但替代實(shí)施例可以具有用于指令和數(shù)據(jù)兩者的 單個(gè)內(nèi)部高速緩存,諸如例如一級(jí)(L1)內(nèi)部高速緩存或多個(gè)級(jí)別的內(nèi)部高速緩存。在一些 實(shí)施例中,該系統(tǒng)可包括內(nèi)部高速緩存和在核和/或處理器外部的外部高速緩存的組合。 或者,所有高速緩存都可以在核和/或處理器的外部。
[0040] 圖2是根據(jù)本發(fā)明的各實(shí)施例可能具有一個(gè)以上核、可能具有集成存儲(chǔ)器控制 器、以及可能具有集成圖形器件的處理器200的框圖。圖2中的實(shí)線框示出具有單個(gè)核 202A、系統(tǒng)代理210、一個(gè)或多個(gè)總線控制器單元216的集合的處理器200,而虛線框的可 選附加示出具有多個(gè)核202A-N、系統(tǒng)代理單元210中的一個(gè)或多個(gè)集成存儲(chǔ)器控制器單元 214的集合以及專用邏輯208的替代處理器200。
[0041] 因此,處理器200的不同實(shí)現(xiàn)可包括:1) CPU,其中專用邏輯208是集成圖形和/或 科學(xué)(吞吐量)邏輯(其可包括一個(gè)或多個(gè)核),并且核202A-N是一個(gè)或多個(gè)通用核(例 如,通用的有序核、通用的無(wú)序核、這兩者的組合);2)協(xié)處理器,其中核202A-N是旨在主 要用于圖形和/或科學(xué)(吞吐量)的多個(gè)專用核;以及3)協(xié)處理器,其中核202A-N是多 個(gè)通用有序核。因此,處理器200可以是通用處理器、協(xié)處理器或?qū)S锰幚砥鳎T如例如網(wǎng) 絡(luò)或通信處理器、壓縮引擎、圖形處理器、GPGPU (通用圖形處理單元)、高吞吐量的集成眾 核(MIC)協(xié)處理器(包括30個(gè)或更多核)、或嵌入式處理器等。該處理器可以被實(shí)現(xiàn)在一 個(gè)或多個(gè)芯片上。處理器200可以是一個(gè)或多個(gè)襯底的一部分,和/或可以使用諸如例如 BiCMOS、CMOS或NM0S等的多個(gè)加工技術(shù)中的任何一個(gè)技術(shù)將處理器200實(shí)現(xiàn)在一個(gè)或多 個(gè)襯底上。
[0042] 存儲(chǔ)器層次結(jié)構(gòu)包括在各核內(nèi)的一個(gè)或多個(gè)級(jí)別的高速緩存、一個(gè)或多個(gè)共享高 速緩存單元206的集合、以及耦合至集成存儲(chǔ)器控制器單元214的集合的外部存儲(chǔ)器(未 示出)。該共享高速緩存單元206的集合可以包括一個(gè)或多個(gè)中間級(jí)高速緩存,諸如二級(jí) (L2)、三級(jí)(L3)、四級(jí)(L4)或其他級(jí)別的高速緩存、末級(jí)高速緩存(LLC)、和/或其組合。盡 管在一個(gè)實(shí)施例中,基于環(huán)的互連單元212將集成圖形邏輯208、共享高速緩存單元206的 集合以及系統(tǒng)代理單元210/集成存儲(chǔ)器控制器單元214互連,但替代實(shí)施例可使用任何數(shù) 量的公知技術(shù)來(lái)將這些單元互連。在一個(gè)實(shí)施例中,可以維護(hù)一個(gè)或多個(gè)高速緩存單元206 和核202A-N之間的一致性(coherency)。
[0043] 在一些實(shí)施例中,核202A-N中的一個(gè)或多個(gè)核能夠多線程化。系統(tǒng)代理210包括 協(xié)調(diào)和操作核202A-N的那些組件。系統(tǒng)代理單元210可包括例如功率控制單元(P⑶)和 顯示單元。PCU可以是或包括用于調(diào)整核202A-N和集成圖形邏輯208的功率狀態(tài)所需的邏 輯和組件。顯示單元用于驅(qū)動(dòng)一個(gè)或多個(gè)外部連接的顯示器。
[0044] 核202A-N在架構(gòu)指令集方面可以是同構(gòu)的或異構(gòu)的;S卩,這些核202A-N中的兩個(gè) 或更多個(gè)核可能能夠執(zhí)行相同的指令集,而其他核可能能夠執(zhí)行該指令集的僅僅子集或不 冋的指令集。
[0045] 圖3-6是示例性計(jì)算機(jī)架構(gòu)的框圖。本領(lǐng)域已知的對(duì)膝上型設(shè)備、臺(tái)式機(jī)、手持 PC、個(gè)人數(shù)字助理、工程工作站、服務(wù)器、網(wǎng)絡(luò)設(shè)備、網(wǎng)絡(luò)集線器、交換機(jī)、嵌入式處理器、數(shù) 字信號(hào)處理器(DSP)、圖形設(shè)備、視頻游戲設(shè)備、機(jī)頂盒、微控制器、蜂窩電話、便攜式媒體播 放器、手持設(shè)備以及各種其他電子設(shè)備的其他系統(tǒng)設(shè)計(jì)和配置也是合適的。一般地,能夠包 含本文中所公開(kāi)的處理器和/或其它執(zhí)行邏輯的多個(gè)系統(tǒng)和電子設(shè)備一般都是合適的。
[0046] 現(xiàn)在參考圖3,所示出的是根據(jù)本發(fā)明一個(gè)實(shí)施例的系統(tǒng)600的框圖。系統(tǒng)300可 以包括一個(gè)或多個(gè)處理器310、315,這些處理器耦合到控制器中樞320。在一個(gè)實(shí)施例中, 控制器中樞320包括圖形存儲(chǔ)器控制器中樞(GMCH) 390和輸入/輸出中樞(Ι0Η) 350 (其可 以在分開(kāi)的芯片上);GMCH 390包括存儲(chǔ)器和圖形控制器,存儲(chǔ)器340和協(xié)處理器345耦合 到該存儲(chǔ)器和圖形控制器;Ι0Η 350將輸入/輸出(I/O)設(shè)備360耦合到GMCH 390?;蛘?, 存儲(chǔ)器和圖形控制器中的一個(gè)或兩者可以被集成在處理器內(nèi)(如本文中所描述的),存儲(chǔ) 器340和協(xié)處理器345直接耦合到處理器310以及控制器中樞320,控制器中樞320與Ι0Η 350處于單個(gè)芯片中。
[0047] 附加處理器315的任選性質(zhì)用虛線表示在圖3中。每一處理器310、315可包括本 文中描述的處理核中的一個(gè)或多個(gè),并且可以是處理器200的某一版本。
[0048] 存儲(chǔ)器340可以是例如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、相變存儲(chǔ)器(PCM)或這兩者 的組合。對(duì)于至少一個(gè)實(shí)施例,控制器中樞320經(jīng)由諸如前端總線(FSB)之類的多分支總 線、諸如快速通道互連(QPI)之類的點(diǎn)對(duì)點(diǎn)接口、或者類似的連接395與處理器310、315進(jìn) 行通信。
[0049] 在一個(gè)實(shí)施例中,協(xié)處理器345是專用處理器,諸如例如高吞吐量MIC處理器、網(wǎng) 絡(luò)或通信處理器、壓縮引擎、圖形處理器、GPGPU、或嵌入式處理器等等。在一個(gè)實(shí)施例中,控 制器中樞320可以包括集成圖形加速器。
[0050] 在物理資源310、315之間可以存在包括架構(gòu)、微架構(gòu)、熱、和功耗特征等的一系列 品質(zhì)度量方面的各種差異。
[0051] 在一個(gè)實(shí)施例中,處理器310執(zhí)行控制一般類型的數(shù)據(jù)處理操作的指令。協(xié)處理 器指令可嵌入在這些指令中。處理器310將這些協(xié)處理器指令識(shí)別為應(yīng)當(dāng)由附連的協(xié)處理 器345執(zhí)行的類型。因此,處理器310在協(xié)處理器總線或者其他互連上將這些協(xié)處理器指 令(或者表示協(xié)處理器指令的控制信號(hào))發(fā)布到協(xié)處理器345。協(xié)處理器345接受并執(zhí)行 所接收的協(xié)處理器指令。
[0052] 現(xiàn)在參考圖4,所示為根據(jù)本發(fā)明的一實(shí)施例的更具體的第一示例性系統(tǒng)400的 框圖。如圖4所示,多處理器系統(tǒng)400是點(diǎn)對(duì)點(diǎn)互連系統(tǒng),并包括經(jīng)由點(diǎn)對(duì)點(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。
[0053] 處理器470和480被示為分別包括集成存儲(chǔ)器控制器(MC)單元472和482。處 理器470還包括作為其總線控制器單元的一部分的點(diǎn)對(duì)點(diǎn)(P-P)接口 476和478 ;類似地, 第二處理器480包括點(diǎn)對(duì)點(diǎn)接口 486和488。處理器470、480可以使用點(diǎn)對(duì)點(diǎn)(P-P)電路 478、488經(jīng)由P-P接口 450來(lái)交換信息。如圖4所示,MC 472和482將各處理器耦合至相 應(yīng)的存儲(chǔ)器,即存儲(chǔ)器432和存儲(chǔ)器434,這些存儲(chǔ)器可以是本地附連至相應(yīng)的處理器的主 存儲(chǔ)器的部分。
[0054] 處理器470、480可各自經(jīng)由使用點(diǎn)對(duì)點(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、或嵌入式處理器等等。
[0055] 共享高速緩存(未示出)可以被包括在任一處理器之內(nèi),或被包括在兩個(gè)處理器 外部但仍經(jīng)由P-P互連與這些處理器連接,從而如果將某處理器置于低功率模式時(shí),可將 任一處理器或兩個(gè)處理器的本地高速緩存信息存儲(chǔ)在該共享高速緩存中。
[0056] 芯片組490可經(jīng)由接口 496耦合至第一總線416。在一個(gè)實(shí)施例中,第一總線416 可以是外圍組件互連(PCI)總線,或諸如PCI Express總線或其它第三代I/O互連總線之 類的總線,但本發(fā)明的范圍并不受此限制。
[0057] 如圖4所示,各種I/O設(shè)備414可以連同總線橋418耦合到第一總線416,總線橋 將第一總線416耦合至第二總線420。在一個(gè)實(shí)施例中,諸如協(xié)處理器、高吞吐量MIC處理 器、GPGPU的處理器、加速器(諸如例如圖形加速器或數(shù)字信號(hào)處理器(DSP)單元)、現(xiàn)場(chǎng)可 編程門(mén)陣列或任何其他處理器的一個(gè)或多個(gè)附加處理器415耦合到第一總線416。在一個(gè) 實(shí)施例中,第二總線420可以是低引腳計(jì)數(shù)(LPC)總線。各種設(shè)備可以被耦合至第二總線 420,在一個(gè)實(shí)施例中這些設(shè)備包括例如鍵盤(pán)/鼠標(biāo)422、通信設(shè)備427以及諸如可包括指令 /代碼和數(shù)據(jù)430的盤(pán)驅(qū)動(dòng)器或其它大容量存儲(chǔ)設(shè)備的存儲(chǔ)單元428。此外,音頻I/O 424 可以被耦合至第二總線420。注意,其它架構(gòu)是可能的。例如,代替圖4的點(diǎn)對(duì)點(diǎn)架構(gòu),系統(tǒng) 可以實(shí)現(xiàn)多分支總線或其它這類架構(gòu)。
[0058] 現(xiàn)在參考圖5,所示為根據(jù)本發(fā)明的實(shí)施例的更具體的第二示例性系統(tǒng)500的框 圖。圖4和圖5中的相同部件用相同附圖標(biāo)記表示,并從圖5中省去了圖4中的某些方面, 以避免使圖5的其它方面變得模糊。
[0059] 圖5示出處理器470、480可分別包括集成存儲(chǔ)器和I/O控制邏輯("CL")472和 482。因此,CL 472、482包括集成存儲(chǔ)器控制器單元并包括I/O控制邏輯。圖5不僅示出 存儲(chǔ)器432、434耦合至CL 472、482,而且還示出I/O設(shè)備514也耦合至控制邏輯472、482。 傳統(tǒng)I/O設(shè)備515被耦合至芯片組490。
[0060] 現(xiàn)在參照?qǐng)D6,所示出的是根據(jù)本發(fā)明一個(gè)實(shí)施例的SoC 600的框圖。在圖2中, 相似的部件具有同樣的附圖標(biāo)記。另外,虛線框是更先進(jìn)的SoC的可選特征。在圖6中,互 連單元602被耦合至:應(yīng)用處理器610,該應(yīng)用處理器包括一個(gè)或多個(gè)核202A-N的集合以 及共享高速緩存單元206 ;系統(tǒng)代理單元210 ;總線控制器單元216 ;集成存儲(chǔ)器控制器單 元214 ;-組或一個(gè)或多個(gè)協(xié)處理器620,其可包括集成圖形邏輯、圖像處理器、音頻處理器 和視頻處理器;靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)單元630 ;直接存儲(chǔ)器存?。―MA)單元632 ;以 及用于耦合至一個(gè)或多個(gè)外部顯示器的顯示單元640。在一個(gè)實(shí)施例中,協(xié)處理器620包括 專用處理器,諸如例如網(wǎng)絡(luò)或通信處理器、壓縮引擎、GPGPU、高吞吐量MIC處理器、或嵌入 式處理器等等。
[0061] 本文公開(kāi)的機(jī)制的各實(shí)施例可以被實(shí)現(xiàn)在硬件、軟件、固件或這些實(shí)現(xiàn)方法的組 合中。本發(fā)明的實(shí)施例可實(shí)現(xiàn)為在可編程系統(tǒng)上執(zhí)行的計(jì)算機(jī)程序或程序代碼,該可編程 系統(tǒng)包括至少一個(gè)處理器、存儲(chǔ)系統(tǒng)(包括易失性和非易失性存儲(chǔ)器和/或存儲(chǔ)元件)、至 少一個(gè)輸入設(shè)備以及至少一個(gè)輸出設(shè)備。
[0062] 可將程序代碼(諸如圖4中示出的代碼430)應(yīng)用于輸入指令,以執(zhí)行本文描述的 各功能并生成輸出信息??梢园匆阎绞綄⑤敵鲂畔?yīng)用于一個(gè)或多個(gè)輸出設(shè)備。為了本 申請(qǐng)的目的,處理系統(tǒng)包括具有諸如例如數(shù)字信號(hào)處理器(DSP)、微控制器、專用集成電路 (ASIC)或微處理器之類的處理器的任何系統(tǒng)。
[0063] 程序代碼可以用高級(jí)程序化語(yǔ)言或面向?qū)ο蟮木幊陶Z(yǔ)言來(lái)實(shí)現(xiàn),以便與處理系統(tǒng) 通信。在需要時(shí),也可用匯編語(yǔ)言或機(jī)器語(yǔ)言來(lái)實(shí)現(xiàn)程序代碼。事實(shí)上,本文中描述的機(jī)制 不限于任何特定編程語(yǔ)言的范圍。在任一情形下,該語(yǔ)言可以是編譯語(yǔ)言或解釋語(yǔ)言。 [0064] 至少一個(gè)實(shí)施例的一個(gè)或多個(gè)方面可以由存儲(chǔ)在機(jī)器可讀介質(zhì)上的表示性指令 來(lái)實(shí)現(xiàn),指令表示處理器中的各種邏輯,指令在被機(jī)器讀取時(shí)使得該機(jī)器制作用于執(zhí)行本 文所述的技術(shù)的邏輯。被稱為"IP核"的這些表示可以被存儲(chǔ)在有形的機(jī)器可讀介質(zhì)上,并 被提供給多個(gè)客戶或生產(chǎn)設(shè)施以加載到實(shí)際制造該邏輯或處理器的制造機(jī)器中。
[0065] 這樣的機(jī)器可讀存儲(chǔ)介質(zhì)可以包括但不限于通過(guò)機(jī)器或設(shè)備制造或形成的物品 的非瞬態(tài)的有形安排,其包括存儲(chǔ)介質(zhì),諸如:硬盤(pán);任何其它類型的盤(pán),包括軟盤(pán)、光盤(pán)、 緊致盤(pán)只讀存儲(chǔ)器(CD-ROM)、緊致盤(pán)可重寫(xiě)(CD-RW)以及磁光盤(pán);半導(dǎo)體器件,例如只讀存 儲(chǔ)器(ROM)、諸如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)和靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)之類的隨機(jī) 存取存儲(chǔ)器(RAM)、可擦除可編程只讀存儲(chǔ)器(EPROM)、閃存、電可擦除可編程只讀存儲(chǔ)器 (EEPR0M);相變存儲(chǔ)器(PCM);磁卡或光卡;或適于存儲(chǔ)電子指令的任何其它類型的介質(zhì)。 [0066] 因此,本發(fā)明的各實(shí)施例還包括非瞬態(tài)的有形機(jī)器可讀介質(zhì),該介質(zhì)包含指令或 包含設(shè)計(jì)數(shù)據(jù),諸如硬件描述語(yǔ)言(HDL),它定義本文中描述的結(jié)構(gòu)、電路、裝置、處理器和 /或系統(tǒng)特征。這些實(shí)施例也被稱為程序產(chǎn)品。
[0067] 在一些情況下,指令轉(zhuǎn)換器可用來(lái)將指令從源指令集轉(zhuǎn)換至目標(biāo)指令集。例如,指 令轉(zhuǎn)換器可以變換(例如使用靜態(tài)二進(jìn)制變換、包括動(dòng)態(tài)編譯的動(dòng)態(tài)二進(jìn)制變換)、變形、 仿真或以其它方式將指令轉(zhuǎn)換成將由核來(lái)處理的一個(gè)或多個(gè)其它指令。指令轉(zhuǎn)換器可以用 軟件、硬件、固件、或其組合實(shí)現(xiàn)。指令轉(zhuǎn)換器可以在處理器上、在處理器外、或者部分在處 理器上且部分在處理器外。
[0068] 圖7是根據(jù)本發(fā)明的各實(shí)施例的對(duì)照使用軟件指令轉(zhuǎn)換器將源指令集中的二進(jìn) 制指令轉(zhuǎn)換成目標(biāo)指令集中的二進(jìn)制指令的框圖。在所示的實(shí)施例中,指令轉(zhuǎn)換器是軟件 指令轉(zhuǎn)換器,但作為替代,該指令轉(zhuǎn)換器可以用軟件、固件、硬件或其各種組合來(lái)實(shí)現(xiàn)。圖7 示出可以使用x86編譯器704來(lái)編譯利用高級(jí)語(yǔ)言702的程序,以生成可以由具有至少一 個(gè)x86指令集核的處理器716原生執(zhí)行的x86二進(jìn)制代碼706。具有至少一個(gè)x86指令集 核的處理器716表示任何處理器,這些處理器能通過(guò)兼容地執(zhí)行或以其他方式處理以下內(nèi) 容來(lái)執(zhí)行與具有至少一個(gè)x86指令集核的英特爾處理器基本相同的功能:1)英特爾x86指 令集核的指令集的本質(zhì)部分,或2)目標(biāo)為在具有至少一個(gè)x86指令集核的英特爾處理器上 運(yùn)行的應(yīng)用或其它程序的目標(biāo)代碼版本,以便取得與具有至少一個(gè)x86指令集核的英特爾 處理器基本相同的結(jié)果。x86編譯器704表示用于生成x86二進(jìn)制代碼706 (例如,目標(biāo)代 碼)的編譯器,該二進(jìn)制代碼706可通過(guò)或不通過(guò)附加的鏈接處理在具有至少一個(gè)x86指 令集核的處理器716上執(zhí)行。類似地,圖7示出可以使用替代的指令集編譯器708來(lái)編譯 利用高級(jí)語(yǔ)言702的程序,以生成可以由不具有至少一個(gè)x86指令集核的處理器714 (例如 具有執(zhí)行加利福尼亞州桑尼維爾市的MIPS技術(shù)公司的MIPS指令集、和/或執(zhí)行加利福尼 亞州桑尼維爾市的ARM控股公司的ARM指令集的核的處理器)原生執(zhí)行的替代指令集二進(jìn) 制代碼710。指令轉(zhuǎn)換器712被用來(lái)將x86二進(jìn)制代碼706轉(zhuǎn)換成可以由不具有x86指令 集核的處理器714原生執(zhí)行的代碼。該轉(zhuǎn)換后的代碼不大可能與替代性指令集二進(jìn)制代碼 710相同,因?yàn)槟軌蜻@樣做的指令轉(zhuǎn)換器難以制造;然而,轉(zhuǎn)換后的代碼將完成一般操作并 由來(lái)自替代指令集的指令構(gòu)成。因此,指令轉(zhuǎn)換器712通過(guò)仿真、模擬或任何其它過(guò)程來(lái)表 示允許不具有x86指令集處理器或核的處理器或其它電子設(shè)備執(zhí)行x86二進(jìn)制代碼706的 軟件、固件、硬件或其組合。
[0069] 用于從通用寄存器向向量寄存器廣播的本發(fā)明實(shí)施例
[0070] 以下描述的本發(fā)明的實(shí)施例包括用于從通用寄存器(GPR)向向量目的地廣播字 節(jié)、字、雙字或四字值的新指令。在一個(gè)實(shí)施例中,向量目的地是長(zhǎng)度為128位、256位或512 位的向量寄存器。然而,應(yīng)當(dāng)注意,本發(fā)明的基本原理不限于任何特定的寄存器尺寸或格 式。
[0071] 參照?qǐng)D9A,處理器950的一個(gè)實(shí)施例包括用于執(zhí)行"VBROADCAST DEST,SCT"形式 的指令的廣播邏輯955,該指令從通用寄存器950(源)向向量輸出寄存器960(目的地)廣 播值集合。廣播邏輯955向目的地960內(nèi)的特定位置(或多個(gè)位置)廣播存儲(chǔ)在源寄存器 950中的值915。在圖9A所示的特定實(shí)施例中,存儲(chǔ)在源寄存器950中的8位值915被廣 播到目的地960內(nèi)的第一 8位位置971。
[0072] 在本發(fā)明的一個(gè)實(shí)施例中,使用掩碼操作來(lái)確定向量中的目的地元素接收操作的 值(在本情形中,從源廣播的值)還是接收其它值。存在由本發(fā)明不同實(shí)施例采用的兩種 類型的掩碼操作:(1)歸零掩碼在這種情形中,相應(yīng)掩碼位為0的每個(gè)目的地元素將接收零 值;以及(2)合并掩碼:在這種情形中,掩碼位為〇的每個(gè)目的地元素保持其舊倌。在一個(gè) 實(shí)施例中,對(duì)于允許掩碼操作的每個(gè)指令,存在決定使用哪類掩碼操作的一位,換言之,對(duì) 于該指令,掩碼位為0的所有目的地元素保持其舊值或者全部接收0。
[0073] 圖9A示出使用歸零掩碼操作的實(shí)施例,而圖9B示出使用合并掩碼操作的實(shí)施例。 因此,在圖9A中,廣播邏輯955向接下來(lái)兩個(gè)8位位置972-973(跟隨廣播了數(shù)據(jù)的第一 8 位位置之后)復(fù)制零值,并且在圖9B中,廣播邏輯955響應(yīng)于檢測(cè)到與接下來(lái)兩個(gè)8位位 置972-973關(guān)聯(lián)的掩碼位為0,在這些位置上保持目的地寄存器973的先前值不變。
[0074] 在一個(gè)實(shí)施例中,對(duì)于目的地向量寄存器960內(nèi)的給定位置,響應(yīng)于寫(xiě)掩碼902執(zhí) 行如下判斷:廣播來(lái)自源的新值或復(fù)制零,還是保持目的地寄存器中的先前值。在一個(gè)實(shí) 施例中,如果對(duì)目的地內(nèi)給定位置指定掩碼值1,則廣播來(lái)自源950的值。如果對(duì)于目的地 向量寄存器中的特定位置,寫(xiě)掩碼位被設(shè)置為〇,則廣播邏輯955向該位置的所有位復(fù)制零 (如果使用歸零掩碼操作)或者保持該位置的當(dāng)前位不變(如果使用合并掩碼操作)。
[0075] 在一個(gè)實(shí)施例中,源寄存器950可以存儲(chǔ)8位、16位、32位或64位值,并且目的地 向量寄存器可以具有長(zhǎng)度分別為8位、16位、32位或64位的位位置。如上所述,目的地向 量寄存器的長(zhǎng)度可以是128位、256位、或512位。然而,本發(fā)明的基本原理不限于源寄存器 950或目的地向量寄存器960的任何特定尺寸。
[0076] 在如圖9A-B所述的特定實(shí)施例中,廣播邏輯955通過(guò)控制第一復(fù)用器906從源寄 存器950讀取值915,并且通過(guò)控制一組一個(gè)或多個(gè)附加復(fù)用器962向目的地向量寄存器寫(xiě) 入值。當(dāng)然,本發(fā)明的基本原理不限于該具體實(shí)現(xiàn)選擇。
[0077] 圖10A-B示出根據(jù)本發(fā)明一個(gè)實(shí)施例的方法。圖10A示出采用歸零掩碼操作的方 法,而圖10B示出采用合并掩碼操作的方法。這些方法可在圖9A-B中所示的架構(gòu)的上下文 內(nèi)執(zhí)行,但這些方法并不限于任何特定硬件架構(gòu)。
[0078] 在圖10A和10B二者中,在1001,將控制變量N設(shè)置為等于零,并且在1002,選擇 輸出向量寄存器中的要被更新的位置N。在1005,判定對(duì)于指定位置N,寫(xiě)掩碼具有第一值 (例如〇)或是第二值(例如1)。如果寫(xiě)掩碼具有第一值,則在1004,向指定位置N廣播存 儲(chǔ)在源寄存器中的值。如果寫(xiě)掩碼具有第二值,則在1006,對(duì)于圖10A所示的歸零掩碼,向 位置N內(nèi)的所有位復(fù)制零。如果使用如圖10B所示的合并掩碼,則在1007,保持位置N內(nèi)的 先前值。
[0079] 如果在1008判定N到達(dá)其最大值(即輸出向量寄存器內(nèi)的最后位置已被處理), 則該過(guò)程結(jié)束。如果否,則在1009, N增加1(選擇輸出向量寄存器中的下一位置)并且該 過(guò)程返回操作1002。
[0080] 下文中針對(duì)如所述的8位、16位、32位、和64位源寄存器尺寸,闡述本發(fā)明若干實(shí) 施例的偽代碼。然而,應(yīng)該注意,使用偽代碼僅僅是出于說(shuō)明目的。本發(fā)明的基本原理可以 并行執(zhí)行其操作(例如同時(shí)更新目的地寄存器中的所有位置),而不是如偽代碼中以及圖 10的方法中所表示的并行方式。
[0081] 1.用于8位源寄存器的偽代碼
[0082] VPBROADCAST B (KL, VL) = (16, 128, (32, 256), (64, 512) FOR j TO KL- 1 IH * 8 頂1^1[]]011*無(wú)寫(xiě)掩碼* THEN DEST[i+7:i] - SRC[7:0] ELSE IF*合并掩碼合并掩碼 THEN *DEST[i+7:i]保持+變* ELSE ;歸零掩碼 DEST[i+7:i] - 0 FI FI; ENDFOR DEST[MAX_VL-] :VL] - 0
[0083] 2.用于16位源寄存器的偽代碼
[0084] VPBORADCASTW (KL, VL) = (I, 128), (16, 256), (32, 512) FORj^OTOKL-1 i-?-j* 16 IFkl[j]OR*無(wú)寫(xiě)掩碼* THEN DEST[i+15:i] ^SRC:[15:0] ELSE IF *合并掩碼* ;合并掩碼
[0085] THEN*DEST[i+15:i]保持不變* ELSE ?,歸零掩碼 DEST[i+15:i] - 0 FI FI ENDFOR DEST[MAX_VL-1 :VL] - 0
[0086] 3.用于32位源寄存器的偽代碼
[0087] VPBORADCASTD (KL, VL) = (4, 128), (8, 256), (16, 512) FOR j ^ 0 TO KL-1 iH* 32 kl〇]OR*無(wú)寫(xiě)掩碼* THEN DEST[i+31 :i] -SRC:[31 :0] ELSE IF *合并掩碼* ;合并掩碼 THEN *DEST[i+31:i]保持+變* ELSE ;歸零掩碼 DBST[i+31:i] FI FI ENDFOR DEST[MAX_VL-1 :VL] - 0
[0088] 4.用于64位源寄存器的偽代碼
[0089] VPBORADCASTQ (KL, VL) = (2, 128), (4, 256), (8, 512) FOR j ^ 0 TO KL-1 i-j* 64
[0090] THEN DEST[i+63:i] ^SRC[63:0] ELSE IF *合并掩碼* ;合并掩碼 丁HEN *DEST[i+63:i]保持不變* ELSE ;歸零掩碼 DEST[i+63:i] ^ 0 FI FI ENDFOR DEST[MAX_VL-1 :VL] ^ 0
[0091] 總之,本文所述的本發(fā)明的實(shí)施例向目的地向量寄存器廣播存儲(chǔ)在源通用寄存器 中的值集合,而無(wú)需訪問(wèn)外部存儲(chǔ)器,因此節(jié)約了處理時(shí)間和資源。這些實(shí)施例提供優(yōu)于當(dāng) 前技術(shù)的顯著優(yōu)勢(shì),現(xiàn)有技術(shù)具有由存儲(chǔ)器訪問(wèn)操作造成的指令數(shù)增加的缺點(diǎn)。
[0092] 示例性指令格式
[0093] 本文中所描述的指令的實(shí)施例可以不同的格式體現(xiàn)。另外,在下文中詳述示例性 系統(tǒng)、架構(gòu)、以及流水線。指令的實(shí)施例可在這些系統(tǒng)、架構(gòu)、以及流水線上執(zhí)行,但是不限 于詳述的系統(tǒng)、架構(gòu)、以及流水線。
[0094] 向量友好指令格式是適于向量指令(例如,存在專用于向量操作的特定字段)的 指令格式。盡管描述了其中通過(guò)向量友好指令格式支持向量和標(biāo)量運(yùn)算兩者的實(shí)施例,但 是替代實(shí)施例僅使用通過(guò)向量友好指令格式的向量運(yùn)算。
[0095] 圖11A-11B是示出根據(jù)本發(fā)明的實(shí)施例的通用向量友好指令格式及其指令模板 的框圖。圖11A是示出根據(jù)本發(fā)明的實(shí)施例的通用向量友好指令格式及其A類指令模板的 框圖;而圖11B是示出根據(jù)本發(fā)明的實(shí)施例的通用向量友好指令格式及其B類指令模板的 框圖。具體地,針對(duì)通用向量友好指令格式1100定義A類和B類指令模板,兩者包括無(wú)存 儲(chǔ)器訪問(wèn)1105的指令模板和存儲(chǔ)器訪問(wèn)1120的指令模板。在向量友好指令格式的上下文 中的術(shù)語(yǔ)"通用"指不束縛于任何專用指令集的指令格式。
[0096] 盡管將描述其中向量友好指令格式支持以下情況的本發(fā)明的實(shí)施例,即64字節(jié) 向量操作數(shù)長(zhǎng)度(或尺寸)與32位(4字節(jié))或64位(8字節(jié))數(shù)據(jù)元素寬度(或尺寸) (并且由此,64字節(jié)向量由16雙字尺寸的元素或者替代地8四字尺寸的元素組成)、64字節(jié) 向量操作數(shù)長(zhǎng)度(或尺寸)與16位(2字節(jié))或8位(1字節(jié))數(shù)據(jù)元素寬度(或尺寸)、 32字節(jié)向量操作數(shù)長(zhǎng)度(或尺寸)與32位(4字節(jié))、64位(8字節(jié))、16位(2字節(jié))、或 8位(1字節(jié))數(shù)據(jù)元素寬度(或尺寸)、以及16字節(jié)向量操作數(shù)長(zhǎng)度(或尺寸)與32位 (4字節(jié))、64位(8字節(jié))、16位(2字節(jié))、或8位(1字節(jié))數(shù)據(jù)元素寬度(或尺寸),但是 替代實(shí)施例可支持更大、更小、和/或不同的向量操作數(shù)尺寸(例如,256字節(jié)向量操作數(shù)) 與更大、更小或不同的數(shù)據(jù)元素寬度(例如,128位(16字節(jié))數(shù)據(jù)元素寬度)。
[0097] 圖11A中的A類指令模板包括:1)在無(wú)存儲(chǔ)器訪問(wèn)1105的指令模板內(nèi),示出無(wú) 存儲(chǔ)器訪問(wèn)的完全舍入控制型操作1110的指令模板、以及無(wú)存儲(chǔ)器訪問(wèn)的數(shù)據(jù)變換型操 作1115的指令模板;以及2)在存儲(chǔ)器訪問(wèn)1120的指令模板內(nèi),示出存儲(chǔ)器訪問(wèn)的時(shí)效性 1125的指令模板和存儲(chǔ)器訪問(wèn)的非時(shí)效性1130的指令模板。圖11B中的B類指令模板包 括:1)在無(wú)存儲(chǔ)器訪問(wèn)1105的指令模板內(nèi),示出無(wú)存儲(chǔ)器訪問(wèn)的寫(xiě)掩碼控制的部分舍入控 制型操作1112的指令模板以及無(wú)存儲(chǔ)器訪問(wèn)的寫(xiě)掩碼控制的vsize型操作1117的指令模 板;以及2)在存儲(chǔ)器訪問(wèn)1120的指令模板內(nèi),示出存儲(chǔ)器訪問(wèn)的寫(xiě)掩碼控制1127的指令 模板。
[0098] 通用向量友好指令格式1100包括以下列出的按照在圖11A-11B中示出的順序的 如下字段。
[0099] 格式字段1140 -該字段中的特定值(指令格式標(biāo)識(shí)符值)唯一地標(biāo)識(shí)向量友好 指令格式,并且由此標(biāo)識(shí)指令在指令流中以向量友好指令格式出現(xiàn)。由此,該字段對(duì)于僅具 有通用向量友好指令格式的指令集是不需要的,在這個(gè)意義上該字段是任選的。
[0100] 基礎(chǔ)操作字段1142 -其內(nèi)容區(qū)分不同的基礎(chǔ)操作。
[0101] 寄存器索引字段1144-其內(nèi)容直接或者通過(guò)地址生成來(lái)指定源或目的地操作數(shù) 在寄存器中或者在存儲(chǔ)器中的位置。這些字段包括足夠數(shù)量的位以從PxQ(例如,32x512、 16xl28、32xl024、64xl024)個(gè)寄存器組選擇N個(gè)寄存器。盡管在一個(gè)實(shí)施例中N可高達(dá)三個(gè) 源和一個(gè)目的地寄存器,但是替代實(shí)施例可支持更多或更少的源和目的地寄存器(例如, 可支持高達(dá)兩個(gè)源,其中這些源中的一個(gè)源還用作目的地,可支持高達(dá)三個(gè)源,其中這些源 中的一個(gè)源還用作目的地,可支持高達(dá)兩個(gè)源和一個(gè)目的地)。
[0102] 修飾符(modifier)字段1146 -其內(nèi)容將指定存儲(chǔ)器訪問(wèn)的以通用向量指令格式 出現(xiàn)的指令與不指定存儲(chǔ)器訪問(wèn)的以通用向量指令格式出現(xiàn)的指令區(qū)分開(kāi);即在無(wú)存儲(chǔ)器 訪問(wèn)1105的指令模板與存儲(chǔ)器訪問(wèn)1120的指令模板之間進(jìn)行區(qū)分。存儲(chǔ)器訪問(wèn)操作讀 取和/或?qū)懭氲酱鎯?chǔ)器層次(在一些情況下,使用寄存器中的值來(lái)指定源和/或目的地地 址),而非存儲(chǔ)器訪問(wèn)操作不這樣(例如,源和/或目的地是寄存器)。盡管在一個(gè)實(shí)施例 中,該字段還在三種不同的方式之間選擇以執(zhí)行存儲(chǔ)器地址計(jì)算,但是替代實(shí)施例可支持 更多、更少或不同的方式來(lái)執(zhí)行存儲(chǔ)器地址計(jì)算。
[0103] 擴(kuò)充操作字段1150 -其內(nèi)容區(qū)分除基礎(chǔ)操作以外還要執(zhí)行各種不同操作中的哪 一個(gè)操作。該字段是針對(duì)上下文的。在本發(fā)明的一個(gè)實(shí)施例中,該字段被分成類字段1168、 α字段1152、以及β字段1154。擴(kuò)充操作字段1150允許在單一指令而非2、3或4個(gè)指令 中執(zhí)行多組共同的操作。
[0104] 比例字段1160 -其內(nèi)容允許用于存儲(chǔ)器地址生成(例如,用于使用2_*索引+ 基址的地址生成)的索引字段的內(nèi)容的按比例縮放。
[0105] 位移字段1162Α-其內(nèi)容用作存儲(chǔ)器地址生成的一部分(例如,用于使用2 索引+基址+位移的地址生成)。
[0106] 位移因數(shù)字段1162B (注意,位移字段1162A直接在位移因數(shù)字段1162B上的并置 指示使用一個(gè)或另一個(gè))一其內(nèi)容用作地址生成的一部分,它指定通過(guò)存儲(chǔ)器訪問(wèn)的尺寸 (N)按比例縮放的位移因數(shù),其中N是存儲(chǔ)器訪問(wèn)中的字節(jié)數(shù)量(例如,用于使用2?*索引 +基址+按比例縮放的位移的地址生成)。忽略冗余的低階位,并且因此將位移因數(shù)字段的 內(nèi)容乘以存儲(chǔ)器操作數(shù)總尺寸(N)以生成在計(jì)算有效地址中使用的最終位移。N的值由處 理器硬件在運(yùn)行時(shí)基于完整操作碼字段1174(稍后在本文中描述)和數(shù)據(jù)操縱字段1154C 確定。位移字段1162A和位移因數(shù)字段1162B可以不用于無(wú)存儲(chǔ)器訪問(wèn)1105的指令模板 和/或不同的實(shí)施例可實(shí)現(xiàn)兩者中的僅一個(gè)或不實(shí)現(xiàn)兩者中的任一個(gè),在這個(gè)意義上位移 字段1162A和位移因數(shù)字段1162B是任選的。
[0107] 數(shù)據(jù)元素寬度字段1164-其內(nèi)容區(qū)分使用多個(gè)數(shù)據(jù)元素寬度中的哪一個(gè)(在一 些實(shí)施例中用于所有指令,在其他實(shí)施例中只用于一些指令)。如果支持僅一個(gè)數(shù)據(jù)元素寬 度和/或使用操作碼的某一方面來(lái)支持?jǐn)?shù)據(jù)元素寬度,則該字段是不需要的,在這個(gè)意義 上該字段是任選的。
[0108] 寫(xiě)掩碼字段1170 -其內(nèi)容在每一數(shù)據(jù)元素位置的基礎(chǔ)上控制目的地向量操作數(shù) 中的數(shù)據(jù)元素位置是否反映基礎(chǔ)操作和擴(kuò)充操作的結(jié)果。A類指令模板支持合并-寫(xiě)掩碼 操作,而B(niǎo)類指令模板支持合并寫(xiě)掩碼操作和歸零寫(xiě)掩碼操作兩者。當(dāng)合并時(shí),向量掩碼允 許在執(zhí)行任何操作期間保護(hù)目的地中的任何元素集免于更新(由基礎(chǔ)操作和擴(kuò)充操作指 定);在另一實(shí)施例中,保持其中對(duì)應(yīng)掩碼位具有〇的目的地的每一元素的舊值。相反,當(dāng) 歸零時(shí),向量掩碼允許在執(zhí)行任何操作期間使目的地中的任何元素集歸零(由基礎(chǔ)操作和 擴(kuò)充操作指定);在一個(gè)實(shí)施例中,目的地的元素在對(duì)應(yīng)掩碼位具有〇值時(shí)被設(shè)為〇。該功 能的子集是控制執(zhí)行的操作的向量長(zhǎng)度的能力(即,從第一個(gè)到最后一個(gè)要修改的元素的 跨度),然而,被修改的元素不一定要是連續(xù)的。由此,寫(xiě)掩碼字段1170允許部分向量操作, 這包括加載、存儲(chǔ)、算術(shù)、邏輯等。盡管描述了其中寫(xiě)掩碼字段1170的內(nèi)容選擇了多個(gè)寫(xiě)掩 碼寄存器中的包含要使用的寫(xiě)掩碼的一個(gè)寫(xiě)掩碼寄存器(并且由此寫(xiě)掩碼字段1170的內(nèi) 容間接地標(biāo)識(shí)了要執(zhí)行的掩碼操作)的本發(fā)明的實(shí)施例,但是替代實(shí)施例相反或另外允許 掩碼寫(xiě)字段1170的內(nèi)容直接地指定要執(zhí)行的掩碼操作。
[0109] 立即數(shù)字段1172 -其內(nèi)容允許對(duì)立即數(shù)的指定。該字段在實(shí)現(xiàn)不支持立即數(shù)的 通用向量友好格式中不存在且在不使用立即數(shù)的指令中不存在,在這個(gè)意義上該字段是任 選的。
[0110] 類字段1168 -其內(nèi)容在不同類的指令之間進(jìn)行區(qū)分。參考圖11A-B,該字段的內(nèi) 容在A類和B類指令之間進(jìn)行選擇。在圖11A-B中,圓角方形用于指示專用值存在于字段 中(例如,在圖11A-B中分別用于類字段1168的A類1168A和B類1168B)。
[0111] A類指令模板
[0112] 在A類非存儲(chǔ)器訪問(wèn)1105的指令模板的情況下,α字段1152被解釋為其內(nèi)容 區(qū)分要執(zhí)行不同擴(kuò)充操作類型中的哪一種(例如,針對(duì)無(wú)存儲(chǔ)器訪問(wèn)的舍入型操作1110 和無(wú)存儲(chǔ)器訪問(wèn)的數(shù)據(jù)變換型操作1115的指令模板分別指定舍入1152Α. 1和數(shù)據(jù)變換 1152Α.2)的RS字段1152Α,而β字段1154區(qū)分要執(zhí)行指定類型的操作中的哪一種。在無(wú) 存儲(chǔ)器訪問(wèn)1105指令模板中,比例字段1160、位移字段1162Α以及位移比例字段1162Β不 存在。
[0113] 無(wú)存儲(chǔ)器訪問(wèn)的指令模板一完全舍入控制型操作
[0114] 在無(wú)存儲(chǔ)器訪問(wèn)的完全舍入控制型操作1110的指令模板中,β字段1154被解釋 為其內(nèi)容提供靜態(tài)舍入的舍入控制字段1154Α。盡管在本發(fā)明的所述實(shí)施例中舍入控制字 段1154Α包括抑制所有浮點(diǎn)異常(SAE)字段1156和舍入操作控制字段1158,但是替代實(shí)施 例可支持、可將這些概念兩者都編碼成相同的字段或者僅具有這些概念/字段中的一個(gè)或 另一個(gè)(例如,可僅有舍入操作控制字段1158)。
[0115] SAE字段1156-其內(nèi)容區(qū)分是否停用異常事件報(bào)告;當(dāng)SAE字段1156的內(nèi)容指示 啟用抑制時(shí),給定指令不報(bào)告任何種類的浮點(diǎn)異常標(biāo)志且不喚起任何浮點(diǎn)異常處理程序。
[0116] 舍入操作控制字段1158 -其內(nèi)容區(qū)分執(zhí)行一組舍入操作中的哪一個(gè)(例如,向上 舍入、向下舍入、向零舍入、以及就近舍入)。由此,舍入操作控制字段1158允許在每一指令 的基礎(chǔ)上改變舍入模式。在其中處理器包括用于指定舍入模式的控制寄存器的本發(fā)明的一 個(gè)實(shí)施例中,舍入操作控制字段1150的內(nèi)容優(yōu)先于該寄存器值。
[0117] 無(wú)存儲(chǔ)器訪問(wèn)的指令模板一數(shù)據(jù)變換型操作
[0118] 在無(wú)存儲(chǔ)器訪問(wèn)的數(shù)據(jù)變換型操作1115的指令模板中,β字段1154被解釋為數(shù) 據(jù)變換字段1154Β,其內(nèi)容區(qū)分要執(zhí)行多個(gè)數(shù)據(jù)變換中的哪一個(gè)(例如,無(wú)數(shù)據(jù)變換、混合、 廣播)。
[0119] 在Α類存儲(chǔ)器訪問(wèn)1120的指令模板的情況下,α字段1152被解釋為驅(qū)逐提示 字段1152Β,其內(nèi)容區(qū)分要使用驅(qū)逐提示中的哪一個(gè)(在圖11Α中,對(duì)于存儲(chǔ)器訪問(wèn)時(shí)效性 1125的指令模板和存儲(chǔ)器訪問(wèn)非時(shí)效性1130的指令模板分別指定時(shí)效性的1152Β. 1和非 時(shí)效性的1152Β.2),而β字段1154被解釋為數(shù)據(jù)操縱字段1154C,其內(nèi)容區(qū)分要執(zhí)行多 個(gè)數(shù)據(jù)操縱操作(也稱為基元(primitive))中的哪一個(gè)(例如,無(wú)操縱、廣播、源的向上轉(zhuǎn) 換、以及目的地的向下轉(zhuǎn)換)。存儲(chǔ)器訪問(wèn)1120的指令模板包括比例字段1160、以及任選 的位移字段1162A或位移比例字段1162B。
[0120] 向量存儲(chǔ)器指令使用轉(zhuǎn)換支持來(lái)執(zhí)行來(lái)自存儲(chǔ)器的向量加載并將向量存儲(chǔ)到存 儲(chǔ)器。如同尋常的向量指令,向量存儲(chǔ)器指令以數(shù)據(jù)元素式的方式與存儲(chǔ)器來(lái)回傳輸數(shù)據(jù), 其中實(shí)際傳輸?shù)脑赜蛇x為寫(xiě)掩碼的向量掩碼的內(nèi)容規(guī)定。
[0121] 存儲(chǔ)器訪問(wèn)的指令模板一時(shí)效性的
[0122] 時(shí)效性的數(shù)據(jù)是可能足夠快地重新使用以從高速緩存受益的數(shù)據(jù)。然而,這是提 示,且不同的處理器可以不同的方式實(shí)現(xiàn)它,包括完全忽略該提示。
[0123] 存儲(chǔ)器訪問(wèn)的指令模板一非時(shí)效性的
[0124] 非時(shí)效性的數(shù)據(jù)是不可能足夠快地重新使用以從第一級(jí)高速緩存中的高速緩存 受益且應(yīng)當(dāng)被給予驅(qū)逐優(yōu)先級(jí)的數(shù)據(jù)。然而,這是提示,且不同的處理器可以不同的方式實(shí) 現(xiàn)它,包括完全忽略該提示。
[0125] B類指令模板
[0126] 在B類指令模板的情況下,α字段1152被解釋為寫(xiě)掩碼控制⑵字段1152C,其 內(nèi)容區(qū)分由寫(xiě)掩碼字段1170控制的寫(xiě)掩碼操作應(yīng)當(dāng)是合并還是歸零。
[0127] 在Β類非存儲(chǔ)器訪問(wèn)1105的指令模板的情況下,β字段1154的一部分被解釋 為RL字段1157Α,其內(nèi)容區(qū)分要執(zhí)行不同擴(kuò)充操作類型中的哪一種(例如,針對(duì)無(wú)存儲(chǔ)器 訪問(wèn)的寫(xiě)掩碼控制部分舍入控制類型操作1112的指令模板和無(wú)存儲(chǔ)器訪問(wèn)的寫(xiě)掩碼控制 VSIZE型操作1117的指令模板分別指定舍入1157Α. 1和向量長(zhǎng)度(VSIZE) 1157Α. 2),而β 字段1154的其余部分區(qū)分要執(zhí)行指定類型的操作中的哪一種。在無(wú)存儲(chǔ)器訪問(wèn)1105指令 模板中,比例字段1160、位移字段1162Α以及位移比例字段1162Β不存在。
[0128] 在無(wú)存儲(chǔ)器訪問(wèn)的寫(xiě)掩碼控制的部分舍入控制型操作1110的指令模板中,β字 段1154的其余部分被解釋為舍入操作字段1159A,并且停用異常事件報(bào)告(給定指令不報(bào) 告任何種類的浮點(diǎn)異常標(biāo)志且不喚起任何浮點(diǎn)異常處理程序)。
[0129] 舍入操作控制字段1159A -正如舍入操作控制字段1158,其內(nèi)容區(qū)分執(zhí)行一組舍 入操作中的哪一個(gè)(例如,向上舍入、向下舍入、向零舍入、以及就近舍入)。由此,舍入操作 控制字段1159A允許在每一指令的基礎(chǔ)上改變舍入模式。在其中處理器包括用于指定舍入 模式的控制寄存器的本發(fā)明的一個(gè)實(shí)施例中,舍入操作控制字段1150的內(nèi)容優(yōu)先于該寄 存器值。
[0130] 在無(wú)存儲(chǔ)器訪問(wèn)的寫(xiě)掩碼控制VSIZE型操作1117的指令模板中,β字段1154的 其余部分被解釋為向量長(zhǎng)度字段1159Β,其內(nèi)容區(qū)分要執(zhí)行多個(gè)數(shù)據(jù)向量長(zhǎng)度中的哪一個(gè) (例如,128字節(jié)、256字節(jié)、或512字節(jié))。
[0131] 在Β類存儲(chǔ)器訪問(wèn)1120的指令模板的情況下,β字段1154的一部分被解釋為廣 播字段1157Β,其內(nèi)容區(qū)分是否要執(zhí)行廣播型數(shù)據(jù)操縱操作,而β字段1154的其余部分被 解釋為向量長(zhǎng)度字段1159Β。存儲(chǔ)器訪問(wèn)1120的指令模板包括比例字段1160、以及任選的 位移字段1162Α或位移比例字段1162Β。
[0132] 針對(duì)通用向量友好指令格式1100,示出完整操作碼字段1174包括格式字段1140、 基礎(chǔ)操作字段1142以及數(shù)據(jù)元素寬度字段1164。盡管示出了其中完整操作碼字段1174包 括所有這些字段的一個(gè)實(shí)施例,但是在不支持所有這些字段的實(shí)施例中,完整操作碼字段 1174包括少于所有的這些字段。完整操作碼字段1174提供操作碼(opcode)。
[0133] 擴(kuò)充操作字段1150、數(shù)據(jù)元素寬度字段1164以及寫(xiě)掩碼字段1170允許在每一指 令的基礎(chǔ)上以通用向量友好指令格式指定這些特征。
[0134] 寫(xiě)掩碼字段和數(shù)據(jù)元素寬度字段的組合創(chuàng)建各種類型的指令,因?yàn)檫@些指令允許 基于不同的數(shù)據(jù)元素寬度應(yīng)用該掩碼。
[0135] 在A類和B類內(nèi)出現(xiàn)的各種指令模板在不同的情形下是有益的。在本發(fā)明的一些 實(shí)施例中,不同處理器或者處理器內(nèi)的不同核可支持僅A類、僅B類、或者可支持兩類。舉 例而言,旨在用于通用計(jì)算的高性能通用無(wú)序核可僅支持B類,旨在主要用于圖形和/或科 學(xué)(吞吐量)計(jì)算的核可僅支持A類,并且旨在用于兩者的核可支持兩者(當(dāng)然,具有來(lái)自 兩類的模板和指令的一些混合、但是并非來(lái)自兩類的所有模板和指令的核在本發(fā)明的范圍 內(nèi))。同樣,單一處理器可包括多個(gè)核,所有核支持相同的類或者其中不同的核支持不同的 類。舉例而言,在具有單獨(dú)的圖形和通用核的處理器中,圖形核中的旨在主要用于圖形和/ 或科學(xué)計(jì)算的一個(gè)核可僅支持A類,而通用核中的一個(gè)或多個(gè)可以是具有旨在用于通用計(jì) 算的僅支持B類的無(wú)序執(zhí)行和寄存器重命名的高性能通用核。不具有單獨(dú)的圖形核的另一 處理器可包括既支持A類又支持B類的一個(gè)或多個(gè)通用有序或無(wú)序核。當(dāng)然,在本發(fā)明的不 同實(shí)施例中,來(lái)自一類的特征也可在其他類中實(shí)現(xiàn)。可使以高級(jí)語(yǔ)言撰寫(xiě)的程序成為(例 如,及時(shí)編譯或者統(tǒng)計(jì)編譯)各種不同的可執(zhí)行形式,包括:1)僅具有用于執(zhí)行的目標(biāo)處理 器支持的類的指令的形式;或者2)具有使用所有類的指令的不同組合而編寫(xiě)的替代例程 且具有選擇這些例程以基于由當(dāng)前正在執(zhí)行代碼的處理器支持的指令而執(zhí)行的控制流代 碼的形式。
[0136] 圖12是示出根據(jù)本發(fā)明的實(shí)施例的示例性專用向量友好指令格式的框圖。圖12 示出專用向量友好指令格式1200,其指定位置、尺寸、解釋和字段的次序、以及那些字段中 的一些字段的值,在這個(gè)意義上向量友好指令格式1200是專用的。專用向量友好指令格式 1200可用于擴(kuò)展x86指令集,并且由此一些字段類似于在現(xiàn)有x86指令集及其擴(kuò)展(例如, AVX)中使用的那些字段或與之相同。該格式保持與具有擴(kuò)展的現(xiàn)有x86指令集的前綴編碼 字段、實(shí)操作碼字節(jié)字段、MOD R/M字段、SIB字段、位移字段、以及立即數(shù)字段一致。示出來(lái) 自圖11的字段,來(lái)自圖12的字段映射到來(lái)自圖11的字段。
[0137] 應(yīng)當(dāng)理解,雖然出于說(shuō)明的目的在通用向量友好指令格式1100的上下文中參考 專用向量友好指令格式1200描述了本發(fā)明的實(shí)施例,但是本發(fā)明不限于專用向量友好指 令格式1200,除非另有聲明。例如,通用向量友好指令格式1100構(gòu)想各種字段的各種可能 的尺寸,而專用向量友好指令格式1200被示為具有特定尺寸的字段。作為具體示例,盡管 在專用向量友好指令格式1200中數(shù)據(jù)元素寬度字段1164被示為一位字段,但是本發(fā)明不 限于此(即,通用向量友好指令格式1100構(gòu)想數(shù)據(jù)元素寬度字段1164的其他尺寸)。
[0138] 通用向量友好指令格式1100包括以下列出的按照?qǐng)D12A中示出的順序的如下字 段。
[0139] EVEX前綴(字節(jié)0-3) 1202 -以四字節(jié)形式進(jìn)行編碼。
[0140] 格式字段1140(EVEX字節(jié)0,位[7:0]) -第一字節(jié)(EVEX字節(jié)0)是格式字段 1140,并且它包含0x62 (在本發(fā)明的一個(gè)實(shí)施例中用于區(qū)分向量友好指令格式的唯一值)。
[0141] 第二一第四字節(jié)(EVEX字節(jié)1-3)包括提供專用能力的多個(gè)位字段。
[0142] REX 字段 1205 (EVEX 字節(jié) 1,位[7-5]) -由 EVEX. R 位字段(EVEX 字節(jié) 1,位[7]-R)、EVEX.X 位字段(EVEX 字節(jié) 1,位[6] -X)以及(757BEX 字節(jié) 1,位[5] -B)組成。EVEX. R、EVEX. X和EVEX. B位字段提供與對(duì)應(yīng)VEX位字段相同的功能,并且使用1補(bǔ)碼的形式進(jìn)行 編碼,g卩ΖΜΜ0被編碼為1111B,ZMM15被編碼為0000B。這些指令的其他字段對(duì)如在本領(lǐng)域 中已知的寄存器索引的較低三個(gè)位(rrr、XXX、以及bbb)進(jìn)行編碼,由此可通過(guò)增加 EVEX. R、EVEX. X 以及 EVEX. B 來(lái)形成 Rrrr、Xxxx 以及 Bbbb。
[0143] REX'字段1110-這是REX'字段1110的第一部分,并且是用于對(duì)擴(kuò)展的32個(gè) 寄存器集合的較高16個(gè)或較低16個(gè)寄存器進(jìn)行編碼的EVEX. R'位字段(EVEX字節(jié)1,位 [4] -R')。在本發(fā)明的一個(gè)實(shí)施例中,該位與以下指示的其他位一起以位反轉(zhuǎn)的格式存儲(chǔ) 以(在公知x86的32位模式下)與實(shí)操作碼字節(jié)是62的BOUND指令進(jìn)行區(qū)分,但是在MOD R/M字段(在下文中描述)中不接受MOD字段中的值11 ;本發(fā)明的替代實(shí)施例不以反轉(zhuǎn)的 格式存儲(chǔ)該指示的位以及其他指示的位。值1用于對(duì)較低16個(gè)寄存器進(jìn)行編碼。換句話 說(shuō),通過(guò)組合EVEX. R'、EVEX. R、以及來(lái)自其他字段的其他RRR來(lái)形成R' Rrrr。
[0144] 操作碼映射字段1215(EVEX字節(jié)1,位[3:0] -mmmm)-其內(nèi)容對(duì)隱含的前導(dǎo)操作 碼字節(jié)(0F、0F 38、或0F 3)進(jìn)行編碼。
[0145] 數(shù)據(jù)元素寬度字段1164 (EVEX字節(jié)2,位[7] -W) -由記號(hào)EVEX. W表示。EVEX. W 用于定義數(shù)據(jù)類型(32位數(shù)據(jù)元素或64位數(shù)據(jù)元素)的粒度(尺寸)。
[0146] EVEX. vvvv 1220 (EVEX 字節(jié) 2,位[6:3]-vvvv) - EVEX. vvvv 的作用可包括如下: 1)EVEX. vvvv編碼第一源寄存器操作數(shù)且對(duì)具有兩個(gè)或兩個(gè)以上源操作數(shù)的指令有效,第 一源寄存器操作數(shù)以反轉(zhuǎn)(1補(bǔ)碼)的形式被指定;2)EVEX. vvvv編碼目的地寄存器操作 數(shù),目的地寄存器操作數(shù)針對(duì)特定向量位移以1補(bǔ)碼的形式被指定;或者3)EVEX. vvvv不編 碼任何操作數(shù),保留該字段,并且應(yīng)當(dāng)包含1111b。由此,EVEX. ww字段1220對(duì)以反轉(zhuǎn)(1 補(bǔ)碼)的形式存儲(chǔ)的第一源寄存器指定符的4個(gè)低階位進(jìn)行編碼。取決于該指令,額外不 同的EVEX位字段用于將指定符尺寸擴(kuò)展到32個(gè)寄存器。
[0147] EVEX.U 1168類字段(EVEX字節(jié)2,位[2]-U) -如果EVEX.U = 0,則它指示A類或 EVEX. U0 ;如果 EVEX. U = 1,則它指示 B 類或 EVEX. U1。
[0148] 前綴編碼字段1225(EVEX字節(jié)2,位[1:0]-ρρ) -提供了用于基礎(chǔ)操作字段的附加 位。除了對(duì)以EVEX前綴格式的傳統(tǒng)SSE指令提供支持以外,這也具有壓縮SMD前綴的益 處(EVEX前綴只需要2位,而不是需要字節(jié)來(lái)表達(dá)SMD前綴)。在一個(gè)實(shí)施例中,為了支 持使用以傳統(tǒng)格式和以EVEX前綴格式的SMD前綴(66H、F2H、F3H)的傳統(tǒng)SSE指令,將這 些傳統(tǒng)SMD前綴編碼成SMD前綴編碼字段;并且在運(yùn)行時(shí)在提供給解碼器的PLA之前被 擴(kuò)展成傳統(tǒng)SMD前綴(因此PLA可執(zhí)行傳統(tǒng)和EVEX格式的這些傳統(tǒng)指令,而無(wú)需修改)。 雖然較新的指令可將EVEX前綴編碼字段的內(nèi)容直接作為操作碼擴(kuò)展,但是為了一致性,特 定實(shí)施例以類似的方式擴(kuò)展,但允許由這些傳統(tǒng)SIMD前綴指定不同的含義。替代實(shí)施例可 重新設(shè)計(jì)PLA以支持2位SMD前綴編碼,并且由此不需要擴(kuò)展。
[0149] α字段1152(EVEX字節(jié)3,位[7]-H^,也稱為EVEX·H^、EVEX·rs、EVEX·RL、EVEX· 寫(xiě)掩碼控制、以及EVEX. N;也以a示出)一如先前所述,該字段是針對(duì)上下文的。
[0150] β字段1154(EVEX字節(jié)3,位[6:4]-SSS,也稱為EVEX·s2_。、EVEX·r 2_。、EVEX·rrl、 EVEX. LL0、EVEX. LLB;也以β β β示出)一如先前所述,該字段是針對(duì)上下文的。
[0151] REX'字段1110 -這是REX'字段的其余部分,并且是可用于對(duì)擴(kuò)展的32個(gè)寄存器 集合的較高16個(gè)或較低16個(gè)寄存器進(jìn)行編碼的EVEX. V'位字段(EVEX字節(jié)3,位[3] -V')。 該位以位反轉(zhuǎn)的格式存儲(chǔ)。值1用于對(duì)較低16個(gè)寄存器進(jìn)行編碼。換句話說(shuō),通過(guò)組合 EVEX. V'、EVEX. vvvv 來(lái)形成 V' VVVV。
[0152] 寫(xiě)掩碼字段1170(EVEX字節(jié)3,位[2:0]_kkk)-其內(nèi)容指定寫(xiě)掩碼寄存器中的寄 存器索引,如先前所述。在本發(fā)明的一個(gè)實(shí)施例中,特定值EVEX. kkk = 000具有暗示沒(méi)有 寫(xiě)掩碼用于特定指令的特殊行為(這可以各種方式實(shí)現(xiàn),包括使用硬連線到所有的寫(xiě)掩碼 或者旁路掩碼硬件的硬件來(lái)實(shí)現(xiàn))。
[0153] 實(shí)操作碼字段1230(字節(jié)4)還被稱為操作碼字節(jié)。操作碼的一部分在該字段中 被指定。
[0154] MOD R/M字段1240(字節(jié)5)包括MOD字段1242、Reg字段1244、以及R/M字段 1246。如先前所述的,MOD字段1242的內(nèi)容將存儲(chǔ)器訪問(wèn)和非存儲(chǔ)器訪問(wèn)操作區(qū)分開(kāi)。Reg 字段1244的作用可被歸結(jié)為兩種情形:對(duì)目的地寄存器操作數(shù)或源寄存器操作數(shù)進(jìn)行編 碼;或者被視為操作碼擴(kuò)展且不用于對(duì)任何指令操作數(shù)進(jìn)行編碼。R/M字段1246的作用可 包括如下:對(duì)引用存儲(chǔ)器地址的指令操作數(shù)進(jìn)行編碼;或者對(duì)目的地寄存器操作數(shù)或源寄 存器操作數(shù)進(jìn)行編碼。
[0155] 比例、索引、基址(SIB)字節(jié)(字節(jié)6)-如先前所述的,比例字段1150的內(nèi)容用 于存儲(chǔ)器地址生成。SIB. XXX 1254和SIB.bbb 1256 -先前已經(jīng)針對(duì)寄存器索引Xxxx和 Bbbb提及了這些字段的內(nèi)容。
[0156] 位移字段1162A (字節(jié)7-10) -當(dāng)MOD字段1242包含10時(shí),字節(jié)7-10是位移字 段1162A,并且它與傳統(tǒng)32位位移(disp32) -樣地工作,并且以字節(jié)粒度工作。
[0157] 位移因數(shù)字段1162B(字節(jié)7) -當(dāng)MOD字段1242包含01時(shí),字節(jié)7是位移因數(shù) 字段1162B。該字段的位置與傳統(tǒng)x86指令集8位位移(disp8)的位置相同,它以字節(jié)粒 度工作。由于disp8是符號(hào)擴(kuò)展的,因此它僅能在-128和127字節(jié)偏移量之間尋址;在64 字節(jié)高速緩存行的方面,disp8使用可被設(shè)為僅四個(gè)真正有用的值-128、_64、0和64的8 位;由于常常需要更大的范圍,所以使用disp32 ;然而,disp32需要4個(gè)字節(jié)。與disp8和 disp32對(duì)比,位移因數(shù)字段1162B是disp8的重新解釋;當(dāng)使用位移因數(shù)字段1162B時(shí),通 過(guò)將位移因數(shù)字段的內(nèi)容乘以存儲(chǔ)器操作數(shù)訪問(wèn)的尺寸(N)來(lái)確定實(shí)際位移。該類型的位 移被稱為disp8*N。這減小了平均指令長(zhǎng)度(單個(gè)字節(jié)用于位移,但具有大得多的范圍)。 這種壓縮位移基于有效位移是存儲(chǔ)器訪問(wèn)的粒度的倍數(shù)的假設(shè),并且由此地址偏移量的冗 余低階位不需要被編碼。換句話說(shuō),位移因數(shù)字段1162B替代傳統(tǒng)x86指令集8位位移。由 此,位移因數(shù)字段1162B以與x86指令集8位位移相同的方式(因此在ModRM/SIB編碼規(guī) 則中沒(méi)有變化)進(jìn)行編碼,唯一的不同在于,將disp8超載至disp8*N。換句話說(shuō),在編碼規(guī) 則或編碼長(zhǎng)度中沒(méi)有變化,而僅在通過(guò)硬件對(duì)位移值的解釋中有變化(這需要按存儲(chǔ)器操 作數(shù)的尺寸按比例縮放位移量以獲得字節(jié)式地址偏移量)。
[0158] 立即數(shù)字段1172如先前所述地操作。
[0159] 完整操作碼字段
[0160] 圖12B是示出根據(jù)本發(fā)明的實(shí)施例的構(gòu)成完整操作碼字段1174的具有專用向量 友好指令格式1200的字段的框圖。具體地,完整操作碼字段1174包括格式字段1140、基礎(chǔ) 操作字段1142、以及數(shù)據(jù)元素寬度(W)字段1164?;A(chǔ)操作字段1142包括前綴編碼字段 1225、操作碼映射字段1215以及實(shí)操作碼字段1230。
[0161] 寄存器索引字段
[0162] 圖12C是示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的構(gòu)成寄存器索引字段1144的具有專用 向量友好指令格式1200的字段的框圖。具體地,寄存器索引字段1144包括REX字段1205、 REX' 字段 1210、MODR/M. reg 字段 1244、MODR/M. r/m 字段 1246、VVVV 字段 1220、XXX 字段 1254以及bbb字段1256。
[0163] 擴(kuò)充操作字段
[0164] 圖12D是示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的構(gòu)成擴(kuò)充操作字段1150的具有專用向 量友好指令格式1200的字段的框圖。當(dāng)類(U)字段1168包含0時(shí),它表明EVEX.U0(A類 1168A);當(dāng)它包含1時(shí),它表明EVEX. U1 (B類1168B)。當(dāng)U = 0且MOD字段1242包含11 (表 明無(wú)存儲(chǔ)器訪問(wèn)操作)時(shí),α字段1152(EVEX字節(jié)3,位[7] -EH)被解釋為rs字段1152A。 當(dāng)rs字段1152A包含1(舍入1152A. 1)時(shí),β字段1154(EVEX字節(jié)3,位[6:4] -SSS)被 解釋為舍入控制字段1154A。舍入控制字段1154A包括一位SAE字段1156和兩位舍入操作 字段1158。當(dāng)rs字段1152A包含0(數(shù)據(jù)變換1,152A. 2)時(shí),β字段1154(EVEX字節(jié)3, 位[6:4] - SSS)被解釋為三位數(shù)據(jù)變換字段1154B。當(dāng)U = 0且MOD字段1242包含00、01 或10 (表明存儲(chǔ)器訪問(wèn)操作)時(shí),α字段1152 (EVEX字節(jié)3,位[7] -EH)被解釋為驅(qū)逐提 示(ΕΗ)字段1152Β且β字段1154(EVEX字節(jié)3,位[6:4] -SSS)被解釋為三位數(shù)據(jù)操縱字 段 1154C。
[0165] 當(dāng)U= 1時(shí),α字段1152(EVEX字節(jié)3,位[7] -EH)被解釋為寫(xiě)掩碼控制(Z)字段 1152C。當(dāng)U= 1且MOD字段1242包含11 (表明無(wú)存儲(chǔ)器訪問(wèn)操作)時(shí),β字段1154的一 部分(EVEX字節(jié)3,位[4] -SQ)被解釋為RL字段1157Α ;當(dāng)它包含1(舍入1157Α. 1)時(shí),β字 段1154的其余部分(EVEX字節(jié)3,位[6-5] -S2_i)被解釋為舍入操作字段1159A,而當(dāng)RL字 段1157A包含0(VSIZE 1157.A2)時(shí),β字段1154的其余部分(EVEX字節(jié)3,位[6-5]-^) 被解釋為向量長(zhǎng)度字段1159B(EVEX字節(jié)3,位[6-5] -Lg)。當(dāng)U= 1且MOD字段1242包 含00、01或10(表明存儲(chǔ)器訪問(wèn)操作)時(shí),β字段1154(EVEX字節(jié)3,位[6:4] -SSS)被解 釋為向量長(zhǎng)度字段1159B(EVEX字節(jié)3,位[6-5] -Lg)和廣播字段1157B(EVEX字節(jié)3,位 [4] - B)。
[0166] 圖13A-D是根據(jù)本發(fā)明的一個(gè)實(shí)施例的寄存器架構(gòu)1300的框圖。在所示出的實(shí) 施例中,有32個(gè)512位寬的向量寄存器1310 ;這些寄存器被引用為zmmO到zmm31。較低的 16zmm寄存器的較低階256個(gè)位覆蓋在寄存器ymm〇-16上。較低的16zmm寄存器的較低階 128個(gè)位(ymm寄存器的較低階128個(gè)位)覆蓋在寄存器xmmO-15上。專用向量友好指令格 式1200對(duì)這些覆蓋的寄存器組操作,如在以下表格中所示的。
[0167]
[0168]
【權(quán)利要求】
1. 一種執(zhí)行指令以通過(guò)執(zhí)行以下操作從通用源寄存器向目的地向量寄存器進(jìn)行廣播 的處理器: 選擇所述目的地向量寄存器內(nèi)的要被更新的數(shù)據(jù)元素位置N ; 如果掩碼指示符被設(shè)置為第一指示,從所述通用源寄存器向所述目的地向量寄存器內(nèi) 的數(shù)據(jù)元素位置N廣播數(shù)據(jù)集;以及 如果所述掩碼指示符被設(shè)置為第二指示,向所述目的地向量寄存器內(nèi)的數(shù)據(jù)元素位置 N復(fù)制零,或者保持存儲(chǔ)在所述目的地向量寄存器內(nèi)的數(shù)據(jù)元素位置N中的現(xiàn)有值。
2. 如權(quán)利要求1所述的處理器,其特征在于,所述第一指示是不采用掩碼操作。
3. 如權(quán)利要求2所述的處理器,其特征在于,所述第二指示表明采用掩碼操作。
4. 如權(quán)利要求3所述的處理器,其特征在于,所述第一指示表明第一掩碼值,并且所述 第二指示表明第二掩碼值。
5. 如權(quán)利要求4所述的處理器,其特征在于,所述第一掩碼值包括布爾假值,并且所述 第二掩碼值包括布爾真值。
6. 如權(quán)利要求1所述的處理器,其特征在于,所述通用源寄存器包括8位、16位、32位 或64位寄存器。
7. 如權(quán)利要求6所述的處理器,其特征在于,所述目的地向量寄存器內(nèi)的數(shù)據(jù)元素位 置的每一個(gè)分別存儲(chǔ)8位、16位、32位或64位值。
8. 如權(quán)利要求1所述的處理器,其特征在于,所述目的地向量寄存器包括128位、256 位或512位寄存器。
9. 一種從通用源寄存器向目的地向量寄存器進(jìn)行廣播的方法,包括: 選擇所述目的地向量寄存器內(nèi)的要被更新的數(shù)據(jù)元素位置N ; 如果掩碼指示符被設(shè)置為第一指示,從所述通用源寄存器向所述目的地向量寄存器內(nèi) 的數(shù)據(jù)元素位置N廣播數(shù)據(jù)集;以及 如果所述掩碼指示符被設(shè)置為第二指示,向所述目的地向量寄存器內(nèi)的數(shù)據(jù)元素位置 N復(fù)制零,或者保持存儲(chǔ)在所述目的地向量寄存器內(nèi)的數(shù)據(jù)元素位置N中的現(xiàn)有值。
10. 如權(quán)利要求1所述的方法,其特征在于,所述第一指示是不采用掩碼操作。
11. 如權(quán)利要求10所述的方法,其特征在于,所述第二指示表明采用掩碼操作。
12. 如權(quán)利要求11所述的方法,其特征在于,所述第一指示表明第一掩碼值,并且所述 第二指示表明第二掩碼值。
13. 如權(quán)利要求12所述的方法,其特征在于,所述第一掩碼值包括布爾假值,并且所述 第二掩碼值包括布爾真值。
14. 如權(quán)利要求9所述的方法,其特征在于,所述通用源寄存器包括8位、16位、32位或 64位寄存器。
15. 如權(quán)利要求14所述的方法,其特征在于,所述目的地向量寄存器內(nèi)的數(shù)據(jù)元素位 置的每一個(gè)分別存儲(chǔ)8位、16位、32位或64位值。
16. 如權(quán)利要求9所述的方法,其特征在于,所述目的地向量寄存器包括128位、256位 或512位寄存器。
17. -種從通用源寄存器向目的地向量寄存器進(jìn)行廣播的計(jì)算機(jī)系統(tǒng),包括: 用于存儲(chǔ)程序代碼的存儲(chǔ)器;以及 用于處理所述程序代碼以執(zhí)行以下操作的處理器: 選擇所述目的地向量寄存器內(nèi)的要被更新的數(shù)據(jù)元素位置N ; 如果掩碼指示符被設(shè)置為第一指示,從所述通用源寄存器向所述目的地向量寄存器內(nèi) 的數(shù)據(jù)元素位置N廣播數(shù)據(jù)集;以及 如果所述掩碼指示符被設(shè)置為第二指示,向所述目的地向量寄存器內(nèi)的數(shù)據(jù)元素位置 N復(fù)制零,或者保持存儲(chǔ)在所述目的地向量寄存器內(nèi)的數(shù)據(jù)元素位置N中的現(xiàn)有值。
18. 如權(quán)利要求17所述的系統(tǒng),其特征在于,所述第一指示是不采用掩碼操作。
19. 如權(quán)利要求18所述的系統(tǒng),其特征在于,所述第二指示表明采用掩碼操作。
20. 如權(quán)利要求19所述的系統(tǒng),其特征在于,所述第一指示表明第一掩碼值,并且所述 第二指示表明第二掩碼值。
21. 如權(quán)利要求20所述的系統(tǒng),其特征在于,所述第一掩碼值包括布爾假值,并且所述 第二掩碼值包括布爾真值。
22. 如權(quán)利要求17所述的系統(tǒng),其特征在于,所述通用源寄存器包括8位、16位、32位 或64位寄存器。
23. 如權(quán)利要求22所述的系統(tǒng),其特征在于,所述目的地向量寄存器內(nèi)的數(shù)據(jù)元素位 置的每一個(gè)分別存儲(chǔ)8位、16位、32位或64位值。
24. 如權(quán)利要求17所述的系統(tǒng),其特征在于,所述目的地向量寄存器包括128位、256 位或512位寄存器。
25. 如權(quán)利要求17所述的系統(tǒng),其特征在于,還包括: 顯示適配器,用于響應(yīng)于所述處理器對(duì)所述程序代碼的執(zhí)行而呈現(xiàn)圖形圖像。
26. 如權(quán)利要求17所述的系統(tǒng),其特征在于,還包括: 用戶輸入接口,用于從用戶輸入設(shè)備接收控制信號(hào),所述處理器響應(yīng)于所述控制信號(hào) 執(zhí)行所述程序代碼。
28. -種執(zhí)行指令以從通用源寄存器向目的地向量寄存器進(jìn)行廣播的處理器,包括: 用于選擇所述目的地向量寄存器內(nèi)的要被更新的數(shù)據(jù)元素位置N的裝置; 用于如果掩碼指示符被設(shè)置為第一指示則從所述通用源寄存器向所述目的地向量寄 存器內(nèi)的數(shù)據(jù)元素位置N廣播數(shù)據(jù)集的裝置;以及 用于如果所述掩碼指示符被設(shè)置為第二指示則向所述目的地向量寄存器內(nèi)的數(shù)據(jù)元 素位置N復(fù)制零或者保持存儲(chǔ)在所述目的地向量寄存器內(nèi)的數(shù)據(jù)元素位置N中的現(xiàn)有值的 裝直。
29. 如權(quán)利要求28所述的處理器,其特征在于,所述第一指示是不采用掩碼操作。
30. 如權(quán)利要求29所述的處理器,其特征在于,所述第二指示表明采用掩碼操作。
31. 如權(quán)利要求30所述的處理器,其特征在于,所述第一指示表明第一掩碼值,并且所 述第二指示表明第二掩碼值。
32. 如權(quán)利要求31所述的處理器,其特征在于,所述第一掩碼值包括布爾假值,并且所 述第二掩碼值包括布爾真值。
33. 如權(quán)利要求28所述的處理器,其特征在于,所述通用源寄存器包括8位、16位、32 位或64位寄存器。
34. 如權(quán)利要求33所述的處理器,其特征在于,所述目的地向量寄存器內(nèi)的數(shù)據(jù)元素 位置的每一個(gè)分別存儲(chǔ)8位、16位、32位或64位值。
35.如權(quán)利要求28所述的處理器,其特征在于,所述目的地向量寄存器包括128位、256 位或512位寄存器。
【文檔編號(hào)】G06F9/305GK104126167SQ201180076414
【公開(kāi)日】2014年10月29日 申請(qǐng)日期:2011年12月23日 優(yōu)先權(quán)日:2011年12月23日
【發(fā)明者】E·烏爾德-阿邁德-瓦爾, R·凡倫天, J·考博爾, B·L·托爾, M·J·查尼, Z·斯波伯, A·格雷德斯廷 申請(qǐng)人:英特爾公司