用于基于兩個(gè)源寫(xiě)掩碼寄存器生成依賴(lài)向量的系統(tǒng)、裝置和方法
【專(zhuān)利摘要】描述了用于響應(yīng)于包括第一和第二源寫(xiě)掩碼向量寄存器操作數(shù)、目的地向量寄存器操作數(shù)、以及操作碼的指令而在計(jì)算機(jī)處理器中執(zhí)行依賴(lài)索引向量計(jì)算的系統(tǒng)、裝置以及方法的各實(shí)施例。
【專(zhuān)利說(shuō)明】用于基于兩個(gè)源寫(xiě)掩碼寄存器生成依賴(lài)向量的系統(tǒng)、裝置 和方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明的領(lǐng)域一般涉及計(jì)算機(jī)處理器架構(gòu),更具體地涉及在執(zhí)行時(shí)導(dǎo)致特定結(jié)果 的指令。
[0002] 置量
[0003] 指令集,或指令集架構(gòu)(ISA)是涉及編程的計(jì)算機(jī)架構(gòu)的一部分,并可以包括原 生數(shù)據(jù)類(lèi)型、指令、寄存器架構(gòu)、尋址模式、存儲(chǔ)器架構(gòu)、中斷和異常處理、以及外部輸入和 輸出(I/O)。應(yīng)注意術(shù)語(yǔ)指令在本文中一般指的是宏指令--即提供給處理器以供執(zhí)行的 指令--與從處理器的解碼器解碼宏指令得到的微指令或微操作不同。
[0004] 指令集架構(gòu)與微架構(gòu)不同,微架構(gòu)是實(shí)現(xiàn)ISA的處理器的內(nèi)部設(shè)計(jì)。帶有不同的 微架構(gòu)的處理器可以共享共同的指令集。例如,英特爾Pentium(奔騰)4處理器、英特爾 Core (酷眷)處理器、以及位于Sunnyvale CA的Advanced Micro Devices公司的處理器實(shí) 現(xiàn)x86指令集的幾乎相同的版本(帶有被添加到較新的版本中的某些擴(kuò)展),但是,具有不 同的內(nèi)部設(shè)計(jì)。例如,ISA的相同寄存器架構(gòu)在不同的微架構(gòu)中使用已知的技術(shù)以不同方 法來(lái)實(shí)現(xiàn),包括專(zhuān)用物理寄存器、使用寄存器重命名機(jī)制(諸如,如美國(guó)專(zhuān)利No. 5, 446, 912 所述,使用寄存器假名表(RAT)、重排序緩沖器(ROB)、以及引退寄存器組;如美國(guó)專(zhuān)利 No. 5, 207, 132所述,使用多個(gè)寄存器映射和寄存器池)的一個(gè)或多個(gè)動(dòng)態(tài)分配物理寄存 器,等等。除非另行指出,術(shù)語(yǔ)寄存器架構(gòu)、寄存器組和寄存器是指對(duì)軟件/編程者可見(jiàn)的 寄存器以及指令指定寄存器的方式。在需要特殊性的情況下,形容詞"邏輯"、"架構(gòu)"、或"軟 件可見(jiàn)的"將用于表示寄存器架構(gòu)中的寄存器/寄存器組,而不同的形容詞將用于指定給定 微架構(gòu)中的寄存器(例如,物理寄存器、重新排序緩沖器、引退寄存器、寄存器池)。
[0005] 指令集包括一個(gè)或多個(gè)指令格式。給定指令格式定義各個(gè)字段(位的數(shù)量、位的 位置)以指定要執(zhí)行的操作(操作碼)以及對(duì)其要執(zhí)行該操作的操作數(shù)等。給定指令是使 用給定指令格式來(lái)表達(dá)的,并指定操作和操作數(shù)。指令流是特定指令序列,其中該序列中的 每一指令都是指令格式的指令出現(xiàn)。
[0006] 科學(xué)、金融、自動(dòng)向量化的通用、RMS(識(shí)別、挖掘以及合成)/可視和多媒體應(yīng)用程 序(例如,2D/3D圖形、圖像處理、視頻壓縮/解壓縮、語(yǔ)音識(shí)別算法和音頻操縱)常常需要 對(duì)大量的數(shù)據(jù)項(xiàng)執(zhí)行相同操作(被稱(chēng)為"數(shù)據(jù)并行性")。單指令多數(shù)據(jù)(SMD)是指使處理 器對(duì)多個(gè)數(shù)據(jù)項(xiàng)執(zhí)行相同操作的一種指令。SMD技術(shù)特別適于能夠在邏輯上將寄存器中的 位分割為若干個(gè)固定尺寸的數(shù)據(jù)元素的處理器,其中每一個(gè)數(shù)據(jù)元素都表示單獨(dú)的值。例 如,64位寄存器中的位可被指定為作為四個(gè)單獨(dú)的16位數(shù)據(jù)元素的、將對(duì)其操作的源操作 數(shù),每一個(gè)數(shù)據(jù)元素都表示單獨(dú)的16位值。作為另一個(gè)示例,256位寄存器中的位可被指定 為作為四個(gè)單獨(dú)的64位打包數(shù)據(jù)元素(四字(Q)尺寸的數(shù)據(jù)元素)、八個(gè)單獨(dú)的32位打包 數(shù)據(jù)元素(雙字(D)尺寸的數(shù)據(jù)元素)、十六個(gè)單獨(dú)的16位打包數(shù)據(jù)元素(字(W)尺寸的 數(shù)據(jù)元素)、或三十二個(gè)單獨(dú)的8位數(shù)據(jù)元素(字節(jié)(B)尺寸的數(shù)據(jù)元素)的、將對(duì)其操作 的源操作數(shù)。這種類(lèi)型的數(shù)據(jù)被稱(chēng)為打包數(shù)據(jù)類(lèi)型或向量數(shù)據(jù)類(lèi)型,這種數(shù)據(jù)類(lèi)型的操作 數(shù)被稱(chēng)為打包數(shù)據(jù)操作數(shù)或向量操作數(shù)。換句話(huà)說(shuō),打包數(shù)據(jù)項(xiàng)或向量指的是打包數(shù)據(jù)元 素的序列;并且打包數(shù)據(jù)操作數(shù)或向量操作數(shù)是SMD指令(也稱(chēng)為打包數(shù)據(jù)指令或向量指 令)的源操作數(shù)或目的地操作數(shù)。
[0007] 作為示例,一種類(lèi)型的SIMD指令指定要以縱向方式對(duì)兩個(gè)源向量操作數(shù)執(zhí)行的 單個(gè)向量操作,以生成相同尺寸的、具有相同數(shù)量的數(shù)據(jù)元素、且有相同數(shù)據(jù)元素順序的目 的地向量操作數(shù)(也稱(chēng)為結(jié)果向量操作數(shù))。源向量操作數(shù)中的數(shù)據(jù)元素被稱(chēng)為源數(shù)據(jù)元 素,而目的地向量操作數(shù)中的數(shù)據(jù)元素被稱(chēng)為目的地或結(jié)果數(shù)據(jù)元素。這些源向量操作數(shù) 具有相同尺寸,并包含相同寬度的數(shù)據(jù)元素,因此它們包含相同數(shù)量的數(shù)據(jù)元素。兩個(gè)源 向量操作數(shù)中的相同位位置中的源數(shù)據(jù)元素形成數(shù)據(jù)元素對(duì)(也稱(chēng)為相對(duì)應(yīng)的數(shù)據(jù)元素; 艮P,每個(gè)源操作數(shù)的數(shù)據(jù)元素位置〇中的數(shù)據(jù)元素相對(duì)應(yīng),每個(gè)源操作數(shù)的數(shù)據(jù)元素位置1 中的數(shù)據(jù)元素相對(duì)應(yīng),以此類(lèi)推)。分別地對(duì)這些源數(shù)據(jù)元素對(duì)中的每一對(duì)執(zhí)行由該SIMD 指令所指定的操作,以生成匹配數(shù)量的結(jié)果數(shù)據(jù)元素,如此,每一對(duì)源數(shù)據(jù)元素都具有對(duì)應(yīng) 的結(jié)果數(shù)據(jù)元素。由于操作是縱向的,并且由于結(jié)果向量操作數(shù)尺寸相同、具有相同數(shù)量的 數(shù)據(jù)元素、且結(jié)果數(shù)據(jù)元素與源向量操作數(shù)以相同數(shù)據(jù)元素順序來(lái)存儲(chǔ),因此,結(jié)果數(shù)據(jù)元 素與源向量操作數(shù)中的它們的對(duì)應(yīng)的源數(shù)據(jù)元素對(duì)處于結(jié)果向量操作數(shù)的相同位位置中。 除此示例性類(lèi)型的SMD指令之外,還有各種其他類(lèi)型的SMD指令(例如,僅有一個(gè)或具有 兩個(gè)以上的源向量操作數(shù)的SMD指令;以水平方式操作的SMD指令;生成不同尺寸的結(jié) 果向量操作數(shù)的SIMD指令;具有不同尺寸的數(shù)據(jù)元素的SIMD指令;和/或具有不同的數(shù)據(jù) 元素順序的SMD指令)。應(yīng)該理解,術(shù)語(yǔ)"目的地向量操作數(shù)"(或目的地操作數(shù))被定義 為執(zhí)行由指令所指定的操作的直接結(jié)果,包括將該目的地操作數(shù)存儲(chǔ)在某一位置(寄存器 或在由該指令所指定的存儲(chǔ)器地址),以便它可以作為源操作數(shù)由另一指令訪(fǎng)問(wèn)(由另一 指令指定該同一個(gè)位置)。
[0008] 諸如由具有包括 x86、MMX?、流式 SMD 擴(kuò)展(SSE)、SSE2、SSE3、SSE4. 1 以及 SSE4. 2 指令的指令集的Intel? Core?處理器使用的技術(shù)之類(lèi)的SMD技術(shù),在應(yīng)用性能方面實(shí)現(xiàn) 了顯著的改善(Core?和MMX?是位于加利福尼亞州Santa Clara的Intel Corporation的 注冊(cè)商標(biāo)或商標(biāo)。)。稱(chēng)為高級(jí)向量擴(kuò)展(AVX) (AVX1和AVX2)并使用VEX編碼方案的附加 SMD擴(kuò)展集已經(jīng)被發(fā)布和/或公開(kāi)(例如,參見(jiàn)丨mel·? 64和IA-32架構(gòu)軟件開(kāi)發(fā)者手冊(cè) (Architectures Software Developers Manual),2011 年 10月;參見(jiàn)丨ntel? 高級(jí)向量擴(kuò)展 編程參考(Advanced Vector Extensions Programming Reference), 2011 年 6 月)。
[0009] 許多現(xiàn)代處理器擴(kuò)展其能力以執(zhí)行SMD操作來(lái)解決主流科學(xué)和工程學(xué)數(shù)值應(yīng) 用、視覺(jué)處理、識(shí)別、數(shù)據(jù)挖掘/合成、游戲、物理學(xué)、密碼術(shù)和其他應(yīng)用領(lǐng)域中對(duì)向量浮點(diǎn) 性能的持續(xù)要求。另外,一些處理器利用預(yù)測(cè),包括使用寫(xiě)掩碼來(lái)對(duì)SMD寄存器的特定數(shù) 據(jù)元素執(zhí)行操作。
[0010] 編譯器被用于向量化循環(huán)以用于使用SIMD指令的高性能執(zhí)行。然而,傳統(tǒng)架構(gòu)的 編譯器不能向量化具有由跨迭代的(即,循環(huán)攜帶的)依賴(lài)所導(dǎo)致的依賴(lài)回環(huán)(dependence cycle)的循環(huán)。這些依賴(lài)中的一些可能是有條件的(conditional),或它們的存在只能在 運(yùn)行時(shí)獲知。一種解決方案是,通過(guò)在循環(huán)體內(nèi)包括特定指令從而在動(dòng)態(tài)檢測(cè)到的第一依 賴(lài)后將向量劃分開(kāi)(即,使用斷言來(lái)將一組向量通道關(guān)閉)并隨后在剩余的向量通道上類(lèi) 似地迭代,來(lái)向量化循環(huán)。編譯器使用用于依賴(lài)檢測(cè)的特殊指令并將基于所檢測(cè)的依賴(lài)生 成斷言掩碼。這些掩碼隨后被用于劃分向量循環(huán)。
[0011] 在具有依賴(lài)回環(huán)(其涉及變量的有條件定義和該變量的有條件使用之間的循環(huán) 攜帶的依賴(lài),其中用于定義和使用的條件不同)的循環(huán)中,如當(dāng)前技術(shù)所定義的指令致使 不必要的動(dòng)態(tài)向量劃分,這導(dǎo)致性能損失。替代地,可使用復(fù)合指令序列來(lái)避免不必要的劃 分,而這再次劣化了性能。
[0012] 附圖簡(jiǎn)沭
[0013] 本發(fā)明是通過(guò)示例說(shuō)明的,而不僅局限于各個(gè)附圖的圖示,在附圖中,類(lèi)似的參考 標(biāo)號(hào)表示類(lèi)似的元件,其中:
[0014] 圖 1 (A)不出 ConditionPairStop 的操作的不例。
[0015] 圖1 (B)示出ConditionPairStop的操作的另一示例。
[0016] 圖2示出在處理器中使用ConditionPairStop指令的實(shí)施例。
[0017] 圖3示出用于處理包括第一和第二源寫(xiě)掩碼寄存器、目的地向量寄存器、和操作 碼的ConditionPairStop指令的方法的實(shí)施例。
[0018] 圖4示出ConditionPairStop指令的示例性偽代碼。
[0019] 圖5示出向量友好格式的ConditionPairStop的另一種格式。
[0020] 圖6示出根據(jù)本發(fā)明一個(gè)實(shí)施例的1有效位向量寫(xiě)掩碼元素的數(shù)量與向量尺寸和 數(shù)據(jù)元素尺寸之間的關(guān)聯(lián)。
[0021] 圖7A-7B是示出根據(jù)本發(fā)明的實(shí)施例的通用向量友好指令格式及其指令模板的 框圖。
[0022] 圖8A-D是示出根據(jù)本發(fā)明的實(shí)施例的示例性專(zhuān)用向量友好指令格式的框圖。
[0023] 圖9是根據(jù)本發(fā)明的一個(gè)實(shí)施例的寄存器架構(gòu)的框圖。
[0024] 圖10A是示出根據(jù)本發(fā)明的各實(shí)施例的示例性有序流水線(xiàn)和示例性的寄存器重 命名的無(wú)序發(fā)布/執(zhí)行流水線(xiàn)的框圖。
[0025] 圖10B是示出根據(jù)本發(fā)明的各實(shí)施例的要包括在處理器中的有序架構(gòu)核的示例 性實(shí)施例和示例性的寄存器重命名的無(wú)序發(fā)布/執(zhí)行架構(gòu)核的框圖。
[0026] 圖11A-B示出了更具體的示例性有序核架構(gòu)的框圖,該核將是芯片中的若干邏輯 塊之一(包括相同類(lèi)型和/或不同類(lèi)型的其他核)。
[0027] 圖12是根據(jù)本發(fā)明的實(shí)施例的可具有超過(guò)一個(gè)的核、可具有集成的存儲(chǔ)器控制 器、并且可具有集成圖形的處理器的框圖。
[0028] 圖13所示的是根據(jù)本發(fā)明的一個(gè)實(shí)施例的系統(tǒng)的框圖。
[0029] 圖14是根據(jù)本發(fā)明的實(shí)施例的第一更具體的示例性系統(tǒng)的框圖。
[0030] 圖15是根據(jù)本發(fā)明的實(shí)施例的第二更具體的示例性系統(tǒng)的框圖。
[0031] 圖16是根據(jù)本發(fā)明的實(shí)施例的SoC的框圖。
[0032] 圖17是根據(jù)本發(fā)明的各實(shí)施例的對(duì)照使用軟件指令轉(zhuǎn)換器將源指令集中的二進(jìn) 制指令轉(zhuǎn)換成目標(biāo)指令集中的二進(jìn)制指令的框圖。
[0033] 詳細(xì)描沭
[0034] 在以下描述中,陳述了多個(gè)具體細(xì)節(jié)。然而,應(yīng)當(dāng)理解的是,可不通過(guò)這些具體細(xì) 節(jié)來(lái)實(shí)施本發(fā)明的實(shí)施例。在其它實(shí)例中,未詳細(xì)示出公知的電路、結(jié)構(gòu)以及技術(shù),以免模 糊對(duì)本描述的理解。
[0035] 說(shuō)明書(shū)中對(duì)"一個(gè)實(shí)施例"、"實(shí)施例"、"示例實(shí)施例"等等的引用表明所描述的實(shí) 施例可以包括特定的特征、結(jié)構(gòu)或特性,但是每個(gè)實(shí)施例不一定都包括該特定的特征、結(jié)構(gòu) 或特性。此外,這些短語(yǔ)不一定表示同一實(shí)施例。此外,當(dāng)結(jié)合實(shí)施例描述特定的特征、結(jié) 構(gòu)或特性時(shí),認(rèn)為本領(lǐng)域普通技術(shù)人員能夠知曉結(jié)合其它實(shí)施例來(lái)實(shí)現(xiàn)這種特征、結(jié)構(gòu)或 特性,無(wú)論是否明確描述。
[0036] 概覽
[0037] 在以下描述中,在描述該指令集架構(gòu)中的該特定指令的操作之前,需要解釋一些 項(xiàng)目。一個(gè)這樣的項(xiàng)目稱(chēng)為"寫(xiě)掩碼寄存器",通常用于斷言用于有條件地控制逐個(gè)元素的 計(jì)算操作的操作數(shù)(在下文中,也可能使用術(shù)語(yǔ)掩碼寄存器,表示寫(xiě)掩碼寄存器,諸如下文 討論的"k"寄存器)。如下文中使用,寫(xiě)掩碼寄存器存儲(chǔ)多個(gè)位(16、32、64等等),其中寫(xiě) 掩碼寄存器中的每個(gè)有效位控制向量寄存器的打包數(shù)據(jù)元素在SMD處理期間的操作/更 新。典型地,存在超過(guò)一個(gè)寫(xiě)掩碼寄存器可供處理器核使用。
[0038] 該指令集架構(gòu)包括至少一些SMD指令,該至少一些SMD指令指定向量操作并具 有用于從這些向量寄存器中選擇源寄存器和/或目的地寄存器的字段(示例性的SIMD指 令可指定要對(duì)向量寄存器中的一個(gè)或多個(gè)向量寄存器的內(nèi)容執(zhí)行的向量操作,并且將該向 量操作的結(jié)果存儲(chǔ)在向量寄存器之一中)。本發(fā)明的不同實(shí)施例可具有不同尺寸的向量寄 存器,并支持更多/更少/不同尺寸的數(shù)據(jù)元素。
[0039] 由SIMD指令指定的多位數(shù)據(jù)元素的尺寸(例如字節(jié)、字、雙字、四字)確定向量 寄存器中的"數(shù)據(jù)元素位置"的位位置,并且向量操作數(shù)的尺寸確定數(shù)據(jù)元素的數(shù)量。打包 數(shù)據(jù)元素指的是存儲(chǔ)在特定位置中的數(shù)據(jù)。換句話(huà)說(shuō),依賴(lài)于目的地操作數(shù)中的數(shù)據(jù)元素 的尺寸和目的地操作數(shù)的尺寸(目的地操作數(shù)中總的位數(shù)量)(或者換句話(huà)說(shuō),依賴(lài)于目 的地操作數(shù)的尺寸和該目的地操作數(shù)中的數(shù)據(jù)元素的數(shù)量),作為結(jié)果的向量操作數(shù)內(nèi)的 多位數(shù)據(jù)元素位置的位位置改變(例如,如果作為結(jié)果的向量操作數(shù)的目的地是向量寄存 器,則該目的地向量寄存器內(nèi)的多位數(shù)據(jù)元素位置的位位置改變)。例如,在對(duì)32位數(shù)據(jù) 元素進(jìn)行操作的向量操作(數(shù)據(jù)元素位置〇占據(jù)位位置31:0,數(shù)據(jù)元素位置1占據(jù)位位置 63:32,以此類(lèi)推)與對(duì)64位數(shù)據(jù)元素進(jìn)行操作的向量操作(數(shù)據(jù)元素位置0占據(jù)位位置 63:0,數(shù)據(jù)元素位置1占據(jù)位位置127:64,以此類(lèi)推)之間,多位數(shù)據(jù)元素的位位置不同。
[0040] 此外,根據(jù)本發(fā)明的一個(gè)實(shí)施例,在1有效位向量寫(xiě)掩碼元素的數(shù)量與向量尺寸 和數(shù)據(jù)元素尺寸之間存在如圖6所示的關(guān)聯(lián)。示出了 128位、256位以及512位的向量尺 寸,不過(guò)其他寬度也是可能的??紤]了 8位字節(jié)(B)、16位字(W)、32位雙字(D)或單精度 浮點(diǎn)以及64位四字(Q)或雙精度浮點(diǎn)的數(shù)據(jù)元素尺寸,不過(guò)其他寬度也是可能的。如圖所 示,當(dāng)向量尺寸是128位時(shí),當(dāng)向量的數(shù)據(jù)元素尺寸是8位時(shí)可將16位用于掩碼操作,當(dāng)向 量的數(shù)據(jù)元素尺寸是16位時(shí)可將8位用于掩碼操作,當(dāng)向量的數(shù)據(jù)元素尺寸是32位時(shí)可 將4位用于掩碼操作,以及當(dāng)向量的數(shù)據(jù)元素尺寸是64位時(shí)可將2位用于掩碼操作。當(dāng)向 量尺寸是256位時(shí),當(dāng)打包數(shù)據(jù)元素寬度是8位時(shí)可將32位用于掩碼操作,當(dāng)向量的數(shù)據(jù) 元素尺寸是16位時(shí)可將16位用于掩碼操作,當(dāng)向量的數(shù)據(jù)元素尺寸是32位時(shí)可將8位用 于掩碼操作,以及當(dāng)向量的數(shù)據(jù)元素尺寸是64位時(shí)可將4位用于掩碼操作。當(dāng)向量尺寸是 512位時(shí),當(dāng)向量的數(shù)據(jù)元素尺寸是8位時(shí)可將64位用于掩碼操作,當(dāng)向量的數(shù)據(jù)元素尺寸 是16位時(shí)可將32位用于掩碼操作,當(dāng)向量的數(shù)據(jù)元素尺寸是32位時(shí)可將16位用于掩碼 操作,以及當(dāng)向量的數(shù)據(jù)元素尺寸是64位時(shí)可將8位用于掩碼操作。
[0041] 依賴(lài)于向量尺寸和數(shù)據(jù)元素尺寸的組合,可將所有64位、或僅64位的子集用作寫(xiě) 掩碼。一般而言,當(dāng)使用單個(gè)逐個(gè)元素的掩碼控制位時(shí),用于掩碼操作的向量寫(xiě)掩碼寄存器 中的位(有效位)的數(shù)量等于以位表示的向量尺寸除以以位表示的向量的數(shù)據(jù)元素尺寸。 [0042] 以下所述的本發(fā)明的實(shí)施例通過(guò)定義指令來(lái)解決高效向量化此類(lèi)循環(huán)的問(wèn)題,所 述指令將提供相比當(dāng)前所需的用于避免不必要的向量劃分的復(fù)合指令序列而言更高的性 能。考慮以下給出的示例:
【權(quán)利要求】
1. 一種響應(yīng)于指令在計(jì)算機(jī)處理器中執(zhí)行依賴(lài)索引向量計(jì)算的方法,所述指令包括第 一和第二源寫(xiě)掩碼向量寄存器操作數(shù)、目的地向量寄存器操作數(shù)、以及操作碼,所述方法包 括以下步驟: 執(zhí)行所述指令以為所述第一源寫(xiě)掩碼寄存器的每個(gè)位位置確定依賴(lài)值,所述依賴(lài)值為 與該位位置對(duì)應(yīng)的迭代指示該迭代依賴(lài)于哪個(gè)位位置; 將所確定的依賴(lài)值存儲(chǔ)在所述目的地向量寄存器的對(duì)應(yīng)數(shù)據(jù)元素位置中。
2. 如權(quán)利要求1所述的方法,其特征在于,所述目的地向量寄存器是128位向量寄存 器。
3. 如權(quán)利要求1所述的方法,其特征在于,所述目的地向量寄存器是256位向量寄存 器。
4. 如權(quán)利要求1所述的方法,其特征在于,所述目的地向量寄存器是512位向量寄存 器。
5. 如權(quán)利要求1所述的方法,其特征在于,所述源寫(xiě)掩碼寄存器是16位寄存器。
6. 如權(quán)利要求1所述的方法,其特征在于,所述源寫(xiě)掩碼寄存器是64位寄存器。
7. 如權(quán)利要求1所述的方法,其特征在于,所述確定和儲(chǔ)存步驟還包括: 將計(jì)數(shù)器值和臨時(shí)值設(shè)為〇 ; 判定所述第一源寫(xiě)掩碼寄存器的所述計(jì)數(shù)器值的位位置中的值是否為1 ; 當(dāng)所述第一源寫(xiě)掩碼寄存器的所述計(jì)數(shù)器值的位位置中的值是1時(shí),將在位置計(jì)數(shù)器 值處的目的地向量寄存器數(shù)據(jù)元素設(shè)為所述臨時(shí)值; 當(dāng)所述第一源寫(xiě)掩碼寄存器的所述計(jì)數(shù)器值的位位置中的值是〇時(shí),將在位置計(jì)數(shù)器 值處的目的地向量寄存器數(shù)據(jù)元素設(shè)為0 ; 判定所述第二源寫(xiě)掩碼寄存器的所述計(jì)數(shù)器值的位位置中的值是否為1 ; 當(dāng)所述第二源寫(xiě)掩碼寄存器的所述計(jì)數(shù)器值的位位置中的值是1時(shí),將所述臨時(shí)值設(shè) 為所述計(jì)數(shù)器值加1 ; 將所述計(jì)數(shù)器值遞增1 ;以及 重復(fù)上述步驟,直至所述第一和第二源寫(xiě)掩碼寄存器的所有必要位位置已被處理。
8. -種制品,包括: 其上存儲(chǔ)有指令表示的有形機(jī)器可讀存儲(chǔ)介質(zhì),其中所述指令的格式指定第一和第二 寫(xiě)掩碼寄存器作為其源操作數(shù),并指定單個(gè)向量寄存器作為其目的地,并且其中所述指令 格式包括操作碼,該操作碼響應(yīng)于所述單個(gè)指令的單次發(fā)生而指令機(jī)器:為所述第一源寫(xiě) 掩碼寄存器的每個(gè)位位置確定依賴(lài)值,所述依賴(lài)值為對(duì)應(yīng)于該位位置的迭代指示該迭代依 賴(lài)于哪個(gè)位位置;并將所確定的依賴(lài)值存儲(chǔ)在所述目的地向量寄存器的對(duì)應(yīng)數(shù)據(jù)元素位置 中。
9. 如權(quán)利要求8所述的制品,其特征在于,所述目的地向量寄存器是128位向量寄存 器。
10. 如權(quán)利要求8所述的制品,其特征在于,所述目的地向量寄存器是256位向量寄存 器。
11. 如權(quán)利要求8所述的制品,其特征在于,所述目的地向量寄存器是512位向量寄存 器。
12. 如權(quán)利要求8所述的制品,其特征在于,所述源寫(xiě)掩碼寄存器是16位寄存器。
13. 如權(quán)利要求8所述的制品,其特征在于,所述源寫(xiě)掩碼寄存器是64位寄存器。
14. 如權(quán)利要求8所述的制品,其特征在于,所述確定和存儲(chǔ)還包括: 將計(jì)數(shù)器值和臨時(shí)值設(shè)為〇 ; 判定所述第一源寫(xiě)掩碼寄存器的所述計(jì)數(shù)器值的位位置中的值是否為1 ; 當(dāng)所述第一源寫(xiě)掩碼寄存器的所述計(jì)數(shù)器值的位位置中的值是1時(shí),將在位置計(jì)數(shù)器 值處的目的地向量寄存器數(shù)據(jù)元素設(shè)為所述臨時(shí)值; 當(dāng)所述第一源寫(xiě)掩碼寄存器的所述計(jì)數(shù)器值的位位置中的值是〇時(shí),將在位置計(jì)數(shù)器 值處的目的地向量寄存器數(shù)據(jù)元素設(shè)為0 ; 判定所述第二源寫(xiě)掩碼寄存器的所述計(jì)數(shù)器值的位位置中的值是否為1 ; 當(dāng)所述第二源寫(xiě)掩碼寄存器的所述計(jì)數(shù)器值的位位置中的值是1時(shí),將所述臨時(shí)值設(shè) 為所述計(jì)數(shù)器值加1 ; 將所述計(jì)數(shù)器值遞增1 ;以及 重復(fù)上述步驟,直至所述第一和第二源寫(xiě)掩碼寄存器的所有必要位位置已被處理。
15. -種裝置,包括: 硬件解碼器,用于解碼單個(gè)依賴(lài)索引向量計(jì)算指令,所述指令包括第一和第二源寫(xiě)掩 碼寄存器操作數(shù)、目的地向量寄存器操作數(shù)、和操作碼;以及 執(zhí)行邏輯,用于為所述第一源寫(xiě)掩碼寄存器的每個(gè)位位置確定依賴(lài)值,所述依賴(lài)值為 對(duì)應(yīng)于該位位置的迭代指示該迭代依賴(lài)于哪個(gè)位位置,并將所確定的依賴(lài)值存儲(chǔ)在所述目 的地向量寄存器的相應(yīng)數(shù)據(jù)元素位置中。
16. 如權(quán)利要求15所述的裝置,其特征在于,所述目的地向量寄存器是128位向量寄存 器。
17. 如權(quán)利要求15所述的裝置,其特征在于,所述目的地向量寄存器是256位向量寄存 器。
18. 如權(quán)利要求15所述的裝置,其特征在于,所述目的地向量寄存器是512位向量寄存 器。
19. 如權(quán)利要求15所述的裝置,其特征在于,所述源寫(xiě)掩碼寄存器是16位寄存器或64 位寄存器。
20. 如權(quán)利要求15所述的裝置,其特征在于,所述執(zhí)行邏輯通過(guò)以下操作來(lái)進(jìn)行確定 和存儲(chǔ): 將計(jì)數(shù)器值和臨時(shí)值設(shè)為〇 ; 判定所述第一源寫(xiě)掩碼寄存器的所述計(jì)數(shù)器值的位位置中的值是否為1 ; 當(dāng)所述第一源寫(xiě)掩碼寄存器的所述計(jì)數(shù)器值的位位置中的值是1時(shí),將在位置計(jì)數(shù)值 處的目的地向量寄存器數(shù)據(jù)元素設(shè)為所述臨時(shí)值; 當(dāng)所述第一源寫(xiě)掩碼寄存器的所述計(jì)數(shù)器值的位位置中的值是〇時(shí),將在位置計(jì)數(shù)值 處的目的地向量寄存器數(shù)據(jù)元素設(shè)為〇 ; 判定所述第二源寫(xiě)掩碼寄存器的所述計(jì)數(shù)器值的位位置中的值是否為1 ; 當(dāng)所述第二源寫(xiě)掩碼寄存器的所述計(jì)數(shù)器值的位位置中的值是1時(shí),將所述臨時(shí)值設(shè) 為所述計(jì)數(shù)器值加1 ; 將所述計(jì)數(shù)器值遞增1 ;以及 重復(fù)上述步驟,直至所述第一和第二源寫(xiě)掩碼寄存器的所有必要位位置已被處理。
【文檔編號(hào)】G06F9/06GK104126171SQ201180076457
【公開(kāi)日】2014年10月29日 申請(qǐng)日期:2011年12月27日 優(yōu)先權(quán)日:2011年12月27日
【發(fā)明者】J·巴拉德瓦杰 申請(qǐng)人:英特爾公司