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

用于確定寫掩碼寄存器的尾隨最低有效掩碼比特的系統(tǒng)、設(shè)備,以及方法

文檔序號:6540724閱讀:383來源:國知局
用于確定寫掩碼寄存器的尾隨最低有效掩碼比特的系統(tǒng)、設(shè)備,以及方法
【專利摘要】KZBTZ的執(zhí)行查找第一輸入掩碼中的尾隨最低有效零比特位置,并設(shè)置輸出掩碼以具有第一輸入掩碼的值,但是,比第一輸入掩碼中的尾隨最低有效零比特位置更接近于最高有效比特位置的所有比特位置都設(shè)置為0。在某些實施例中,第二輸入掩碼被用作寫掩碼,以便取決于第二輸入掩碼中的對應(yīng)的比特位置,在尾隨最低有效零比特位置計算中不考慮第一輸入掩碼的比特位置。
【專利說明】用于確定寫掩碼寄存器的尾隨最低有效掩碼比特的系統(tǒng)、設(shè)備,以及方法發(fā)明領(lǐng)域
[0001]本發(fā)明的領(lǐng)域一般涉及計算機處理器體系結(jié)構(gòu),更具體而言,涉及當執(zhí)行時導(dǎo)致特定結(jié)果的指令。
[0002]背景
[0003]指令集,或指令集體系結(jié)構(gòu)(ISA)是涉及編程的計算機體系結(jié)構(gòu)的一部分,并可以包括本機數(shù)據(jù)類型、指令、寄存器體系結(jié)構(gòu)、尋址模式、存儲器體系結(jié)構(gòu),中斷和異常處理,以及外部輸入和輸出(I/o)。應(yīng)該注意,術(shù)語“指令”在本文中一般是指宏指令一即,提供給處理器供執(zhí)行的指令一而不是由處理器的解碼器解碼宏指令所產(chǎn)生的微指令或微操作。
[0004]附圖簡述
[0005]本發(fā)明是作為示例說明的,而不僅限制于各個附圖的圖形,在附圖中,類似的參考編號表示類似的元件,其中:
[0006]圖1示出了根據(jù)本發(fā)明的一實施例的一個有效比特矢量寫掩碼元素的數(shù)量和矢量大小和數(shù)據(jù)元素大小之間的關(guān)聯(lián)。
[0007]圖2是執(zhí)行一個或多個指令的處理器(處理器核)的示例性實施例的框圖。
[0008]圖3 (A) - (B)示出了 KZBTZ的示例性操作。
[0009]圖4示出了 KZBTZ指令在處理器中的執(zhí)行的實施例。
[0010]圖5示出了用于處理KZBTZ指令的方法的實施例。
[0011]圖6是根據(jù)本發(fā)明的一個實施例的寄存器體系結(jié)構(gòu)600的框圖。
[0012]圖7A是示出了根據(jù)本發(fā)明的各實施例的示例性有序流水線和示例性寄存器重命名,無序發(fā)出/執(zhí)行流水線的框圖。
[0013]圖7B是示出了根據(jù)本發(fā)明的各實施例的要包括在處理器中的有序體系結(jié)構(gòu)核和示例性寄存器重命名,無序發(fā)出/執(zhí)行體系結(jié)構(gòu)核的示例性實施例的框圖。
[0014]圖S(A)-(B)示出了更具體的示例性有序核體系結(jié)構(gòu)的框圖,該核將是芯片中的多個邏輯塊中的一個(包括相同類型和/或不同類型的其他核)。
[0015]圖9是根據(jù)本發(fā)明的各實施例的可以具有一個以上的核,可以具有集成的存儲器控制器,并可以具有集成的圖形的處理器900的框圖。
[0016]圖10-13是示例性計算機體系結(jié)構(gòu)的框圖。
[0017]圖14是根據(jù)本發(fā)明的各實施例的對比使用軟件指令轉(zhuǎn)換器來將源指令集中的二進制指令轉(zhuǎn)換為目標指令集中的二進制指令的框圖。

【具體實施方式】
[0018]在下面的描述中,闡述了很多具體細節(jié)。然而,應(yīng)該理解,本發(fā)明的各實施例可以在沒有這些具體細節(jié)的情況下實施。在其他情況下,沒有詳細示出已知的電路、結(jié)構(gòu),以及技術(shù),以便不至于使本描述變得模糊。
[0019]說明書中對“一個實施例”、“實施例”、“示例實施例”等等的引用表示所描述的實施例可包括特定特征、結(jié)構(gòu)或特性,但是,每一個實施例可以不一定包括該特定特征、結(jié)構(gòu),或特征。此外,這樣的短語不一定是指同一個實施例。此外,當結(jié)合一個影響例描述特定特征、結(jié)構(gòu)或特性時,認為在本領(lǐng)域技術(shù)人員學識范圍內(nèi),可以與其他影響例一起影響這樣的特征、結(jié)構(gòu)或特性,無論是否對此明確描述。
[0020]概覽
[0021]指令集體系結(jié)構(gòu)與微體系結(jié)構(gòu)不同,該微體系結(jié)構(gòu)是實現(xiàn)ISA的處理器的內(nèi)部設(shè)計。帶有不同的微體系結(jié)構(gòu)的處理器可以共享共同的指令集。例如,Intel Pentium4處理器、Intel Core 處理器,以及位于 Sunnyvale CA 的 Advanced Micro Devices, Inc.處理器實現(xiàn)x86指令集的幾乎相同的版本(帶有被添加到較新的版本中的某些擴展),但是,具有不同的內(nèi)部設(shè)計。例如,ISA的相同寄存器體系結(jié)構(gòu)可以使用已知的技術(shù),以不同的微型體系結(jié)構(gòu),以不同的方式來實現(xiàn),包括專用物理寄存器,使用寄存器重命名機制(例如,寄存器別名表(RAT)的使用,重新排序緩沖器(ROB)以及退役寄存器文件,如美國專利N0.5,446,912所描述的;使用多個圖以及寄存器的池,如美國專利N0.5,207,132所描述的)的一個或多個動態(tài)地分配的物理寄存器,等等。除非另作說明,短語“寄存器體系結(jié)構(gòu)”、“寄存器文件”,以及寄存器是指對軟件/編程器以及指令指定寄存器的方式可見的東西。在需要特殊性的情況下,形容詞“邏輯、體系結(jié)構(gòu),或軟件可見的”將用于表示寄存器體系結(jié)構(gòu)中的寄存器/文件,而不同的形容詞將用于指定給定微型體系結(jié)構(gòu)中的寄存器(例如,物理寄存器、重新排序緩沖器、退役寄存器、寄存器池)。
[0022]指令集包括一個或多個指令格式。給定指令格式定義各種字段(比特數(shù)、比特的位置)以指定,其中,要執(zhí)行的操作以及將對其進行操作的操作數(shù)。給定指令是使用給定指令格式來表達的,并指定操作和操作數(shù)。指令流是特定指令序列,其中,序列中的每一指令都是某一個指令格式出現(xiàn)的指令。
[0023]科學、金融、自動矢量化的通用,RMS (識別、挖掘以及合成)/可視和多媒體應(yīng)用程序(例如,2D/3D圖形、圖像處理、視頻壓縮/解壓縮、語音識別算法和音頻操縱)常常需要對大量的數(shù)據(jù)項執(zhí)行相同操作(被稱為“數(shù)據(jù)并行性”)。單指令多數(shù)據(jù)(SMD)是指使處理器對多個數(shù)據(jù)項執(zhí)行相同操作的一種指令。SMD技術(shù)特別適于能夠在邏輯上將寄存器中的比特分割為若干個固定大小的數(shù)據(jù)元素的處理器,每一個元素都表示單獨的值。例如,64比特寄存器中的比特可以被指定為作為四個單獨的16比特數(shù)據(jù)元素來被操作的源操作數(shù),每一個數(shù)據(jù)元素都表示單獨的16比特值。作為另一個示例,256比特寄存器中的比特可以被指定為四個單獨的64比特打包的數(shù)據(jù)元素(四字(Q)大小的數(shù)據(jù)元素),八個單獨的32比特打包的數(shù)據(jù)元素(雙字(D)大小的數(shù)據(jù)元素),十六單獨的16比特打包的數(shù)據(jù)元素(一字(W)大小的數(shù)據(jù)元素),或三十二個單獨的8比特數(shù)據(jù)元素(字節(jié)(B)大小的數(shù)據(jù)元素)來被操作的源操作數(shù)。這種類型的數(shù)據(jù)被稱為打包的數(shù)據(jù)類型或矢量數(shù)據(jù)類型,這種數(shù)據(jù)類型的操作數(shù)被稱為打包的數(shù)據(jù)操作數(shù)或矢量操作數(shù)。換言之,打包的數(shù)據(jù)項或矢量是指打包的數(shù)據(jù)元素的序列;而打包的數(shù)據(jù)操作數(shù)或矢量操作數(shù)是SIMD指令(也稱為打包的數(shù)據(jù)指令或矢量指令)的源或目的地操作數(shù)。
[0024]作為示例,一種類型的SIMD指令指定要以垂直方式對兩個源矢量操作數(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ù)的數(shù)據(jù)元素位置O處的數(shù)據(jù)元素對應(yīng),每一源操作數(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指令(例如,只有一個或具有兩個以上的源矢量操作數(shù)的;以水平方式操作的;生成不同大小的結(jié)果矢量操作數(shù)的,具有不同大小的數(shù)據(jù)元素的,和/或具有不同的數(shù)據(jù)元素順序的)。應(yīng)該理解,術(shù)語“目的地矢量操作數(shù)”(或目的地操作數(shù))被定義為執(zhí)行由指令所指定的操作的直接結(jié)果,包括將該目的地操作數(shù)存儲在某一位置(寄存器或在由該指令所指定的存儲器地址),以便它可以作為源操作數(shù)由另一指令訪問(由另一指令指定該同一個位置)。
[0025]諸如由具有包括x86、MMX?、流式 SMD 擴展(SSE)、SSE2、SSE3、SSE4.1 以及 SSE4.2指令的指令集的丨ntel? Core?處理器使用的技術(shù)之類的SMD技術(shù),在應(yīng)用程序性能方面實現(xiàn)了大大的改善(Core?和MMX?是位于加利福尼亞州Santa Clara的Intel Corporat1n的注冊商標或商標。)。稱為高級矢量擴展(AVX) (AVX1和AVX2)又使用VEX編碼方案的額外的SMD擴展集已經(jīng)被發(fā)布或出版(例如,參見Intel? 64和IA_32ArchitecturesSoftware Developers Manual, 2011 年 10 月;參見Intel? Advanced Vector Extens1nsProgramming Reference,2011年 6 月X
[0026]在下面的描述中,在描述指令集體系結(jié)構(gòu)中的此特定指令的操作之前,有某些項可能需要說明。一個這樣的項叫做“寫掩碼寄存器”,其一般用于斷定(predicate)操作數(shù),以有條件地控制每元素計算操作(下面,也可以使用術(shù)語“掩碼寄存器”,是指諸如下面所討論的“k”寄存器之類的寫掩碼寄存器)。如下面使用的,寫掩碼寄存器存儲多個比特(16,32,64等等),其中寫掩碼寄存器的每一有效比特都在SMD處理過程中控制矢量寄存器的打包的數(shù)據(jù)元素的操作/更新。通常,有一個以上寫掩碼寄存器可供處理器核使用。
[0027]指令集體系結(jié)構(gòu)包括指定矢量運算并且具有從這些矢量寄存器中選擇源寄存器和/或目的地寄存器的至少某些SMD指令(示例性SMD指令可以指定要對矢量寄存器中的一個或多個的內(nèi)容執(zhí)行的矢量運算,該矢量運算的結(jié)果被存儲在矢量寄存器之一中)。本發(fā)明的不同的實施例可以具有不同大小的矢量寄存器并支持多一些/少一些/不同大小的數(shù)據(jù)元素。
[0028]由SMD指令所指定的多比特數(shù)據(jù)元素的大小(例如,字節(jié)、字、雙字、四倍長字)確定矢量寄存器內(nèi)的“數(shù)據(jù)元素位置”的比特位置,而矢量操作數(shù)的大小確定數(shù)據(jù)元素的數(shù)量。打包的數(shù)據(jù)元素是指存儲在特定位置的數(shù)據(jù)。換言之,取決于目的地操作數(shù)中的數(shù)據(jù)元素的大小和目的地操作數(shù)的大小(目的地操作數(shù)中的總比特數(shù))(或換句話說,取決于目的地操作數(shù)的大小和目的地操作數(shù)內(nèi)的數(shù)據(jù)元素的數(shù)量),所產(chǎn)生的矢量操作數(shù)內(nèi)的多比特數(shù)據(jù)元素位置的比特位置變化(例如,如果所產(chǎn)生的矢量操作數(shù)的目的地是矢量寄存器(在此討論中,矢量寄存器和打包的數(shù)據(jù)元素寄存器可互換地使用),那么,目的地矢量寄存器內(nèi)的多比特數(shù)據(jù)元素位置的比特位置會變化)。例如,多比特數(shù)據(jù)元素的比特位置在對32比特數(shù)據(jù)元素(數(shù)據(jù)元素位置O占用比特位置31: O,數(shù)據(jù)元素位置I占用比特位置63:32,依次類推)進行操作的矢量運算和對64比特數(shù)據(jù)元素(數(shù)據(jù)元素位置O占用比特位置63: O,數(shù)據(jù)元素位置I占用比特位置127:64,依次類推)進行操作的矢量運算之間是不同的。
[0029]另外,根據(jù)本發(fā)明的一實施例,在一個有效比特矢量寫掩碼元素的數(shù)量和矢量大小和數(shù)據(jù)元素大小之間有關(guān)聯(lián),如圖1所示。示出了 128比特、256比特,以及512比特的矢量大小,雖然其他寬度也是可以的??紤]了 8比特字節(jié)(B)、16比特字(W)、32比特雙字(D)或單精度浮點,以及64比特四倍字(Q)或雙精度浮點的數(shù)據(jù)元素大小,雖然其他寬度也是可以的。如圖所示,當矢量大小是128比特時,當矢量的數(shù)據(jù)元素大小是8比特時16比特可以用于掩碼,當矢量的數(shù)據(jù)元素大小是16比特時8比特可以用于掩碼,當矢量的數(shù)據(jù)元素大小是32比特時4比特可以用于掩碼,且當矢量的數(shù)據(jù)元素大小是64比特時2比特可以用于掩碼。當矢量大小是256比特時,當打包的數(shù)據(jù)元素寬度是8比特時32比特可以用于掩碼,當矢量的數(shù)據(jù)元素大小是16比特時16比特可以用于掩碼,當矢量的數(shù)據(jù)元素大小是32比特時8比特可以用于掩碼,當矢量的數(shù)據(jù)元素大小是64比特時4比特可以用于掩碼。當矢量大小是512比特時,當矢量的數(shù)據(jù)元素大小是8比特時64比特可以用于掩碼,當矢量的數(shù)據(jù)元素大小是16比特時32比特可以用于掩碼,當矢量的數(shù)據(jù)元素大小是32比特時16比特可以用于掩碼,且當矢量的數(shù)據(jù)元素大小是64比特時,8比特可以用于掩碼。
[0030]取決于矢量大小和數(shù)據(jù)元素大小的組合,無論所有64比特,或只有64比特的子集,可以被用作寫入掩碼。一般而言,當使用單個、每元素掩碼控制比特時,用于掩碼(有效比特)的矢量寫掩碼寄存器中的比特的數(shù)量等于矢量大小(以比特為單位)除以矢量的數(shù)據(jù)元素大小(以比特為單位)。
[0031]如上文所指出的,寫掩碼寄存器包含對應(yīng)于矢量寄存器(或存儲器位置)中的元素的掩碼比特并跟蹤應(yīng)該對其執(zhí)行操作的元素。因此,希望具有共同的操作,這些操作就矢量寄存器而論在這些掩碼比特上復(fù)制類似的行為,一般而言,允許調(diào)整寫掩碼寄存器內(nèi)的這些掩碼比特。
[0032]圖2是執(zhí)行一個或多個KZBTZ指令204的處理器(處理器核)200的示例性實施例的框圖。在某些實施例中,處理器可以是通用處理器(例如,用于臺式機、膝上型計算機、月艮務(wù)器等計算機的類型的)??闪磉x地,處理器可以是專用的處理器。合適的專用的處理器的示例包括,但不僅限于,網(wǎng)絡(luò)處理器、通信處理器、密碼處理器、圖形處理器、協(xié)處理器、嵌入式處理器、數(shù)字信號處理器(DSP)以及控制器,僅舉幾個例子而已。處理器可以是各種復(fù)雜指令集計算(CISC)處理器、各種精簡指令集計算(RISC)處理器、各種超長指令字(VLIW)處理器中的任何一種,其各種混合型,或其他類型的處理器。
[0033]處理器200包括在體系結(jié)構(gòu)上可見的寄存器(例如,體系結(jié)構(gòu)寄存器文件)205。體系結(jié)構(gòu)寄存器此處也可以被簡稱為寄存器。除非另作說明或顯而易見的,此處使用短語“體系結(jié)構(gòu)寄存器、寄存器文件,以及寄存器”來指對軟件和/或編程器可見的寄存器和/或通過宏指令或匯編語言指令來指定以標識操作數(shù)的寄存器。這些寄存器與給定微體系結(jié)構(gòu)中的其他非體系結(jié)構(gòu)的或非在體系結(jié)構(gòu)上可見的寄存器(例如,指令所使用的臨時寄存器,重新排序緩沖器,退役寄存器等等)不同。寄存器一般表示管芯上處理器存儲器位置。所示出的體系結(jié)構(gòu)寄存器包括打包數(shù)據(jù)寄存器206。打包數(shù)據(jù)寄存器中的每一個都可以是可操作以存儲打包或矢量數(shù)據(jù)。所示出的體系結(jié)構(gòu)寄存器還包括打包的數(shù)據(jù)操作掩碼寄存器207。打包數(shù)據(jù)操作掩碼寄存器中的每一個都可以是可操作以存儲打包數(shù)據(jù)操作掩碼。在此描述中,這些寄存器可以被稱為寫掩碼寄存器。打包數(shù)據(jù)操作數(shù)可以存儲在打包數(shù)據(jù)寄存器207中。
[0034]處理器還包括執(zhí)行邏輯208。執(zhí)行邏輯可操作用于執(zhí)行或處理一個或多個KZBTZ指令204。在某些實施例中,執(zhí)行邏輯可以包括執(zhí)行這些指令的特定邏輯(例如,潛在地與固件相結(jié)合的特定電路或硬件)。
[0035]有效率地矢量化的一個重要的算法模式是涉及從/向間接存儲器位置讀和寫的計算。例如,將A[B[i]]復(fù)制到A[C[i]]。矢量化這種類型的循環(huán)涉及對多個索引矢量(SP,B[i]和C[i])執(zhí)行收集和分散操作。然而,此矢量化假設(shè)沒有存儲器相關(guān)性被同時執(zhí)行多個讀和寫所違犯。如果,例如,來自B[i]的一組SIMD寬度元素保存與C[i]的共同值,那么,我們可能會違犯寫后讀相關(guān)性。更具體來說,如果B[0]=0、B[1]=1、C[0]=1,以及C[l]=2,那么,對A[B[1]]的讀取必須在向A[C[0]]寫入的后面。與收集指令同時執(zhí)行所有讀取,然后,與散射指令同時執(zhí)行所有寫入,將違犯此相關(guān)性,并可能導(dǎo)致不正確的回答。
[0036]為幫助解決此問題,叫做vconflict的指令將第一矢量的元素與第二矢量的所有元素進行比較,并將比較結(jié)果作為一組比特矢量輸出到矢量寄存器中。概念是檢測“沖突”,或跨不同的收集/散射的匹配的索引。如果有沖突,那么,反復(fù)執(zhí)行對給定組的SIMD-寬度元素的計算,盡可能多地同時執(zhí)行許多元素,如下面的偽代碼所示。
[0037]
for (i=0; i<N; i+=SIMD_WIDTH) {
gather_indices = vload(&B[i]);
scatterjndices = vload(&C[i]);
comparisons = vconflict(gather_indices, scatterjndices);
elements Jeft—mask = all_ones;
do {

do—these = Compute_Mask_of_Non_Conflicting_Elements(comparisons,
elements_left_mask);

Gather_Compute_Scatter(gather_indices, scatterjndices, do_these);
elements_left_mask Λ= do_these;
} while (elements_left_mask 丨=0);

}
[0038],,是非平凡的操作?,F(xiàn)有 “ Coinpute_Mask_of_Non_Conflicting_Elements
的指令,和vconflict —起,所有都承擔一個問題-在不執(zhí)行vconflict的多個實例,以及對比較結(jié)果的額外的操縱的情況下,它們不能檢測到兩組索引內(nèi)的所有可能的數(shù)據(jù)相關(guān)性。具體而言,在上面的示例中,我們示出了我們?nèi)绾伪仨殭z測收集和分散索引矢量之間的重復(fù)索引,以檢測寫后讀(RAW)相關(guān)性。然而,提出的對實施這些相關(guān)性,延遲某些元素的處理的解決方案,會導(dǎo)致寫后寫或讀后寫(WAR)相關(guān)性的違犯。例如,假設(shè)B[0]=0、B[1]=1、B[2]=2、C[0]=1、C[1]=3,以及C[2]=3。正如在上面的示例中一樣,第二迭代具有依賴于第一迭代的RAW,如此,它必須被延遲。第三迭代沒有RAW相關(guān)性,如此,可以有與第一迭代同時執(zhí)行它的選擇。然而,如果執(zhí)行此操作,那么,寫入到A[C[2]](=A[3])將在寫入到A[C[1]](=A [3])之前發(fā)生,并且將違犯WAW相關(guān)性。
[0039]下面是一般地叫做指令集的尾隨零之前的零掩碼(KZBTZ)指令的指令的實施例以及可以被用來執(zhí)行這樣的指令的系統(tǒng)、體系結(jié)構(gòu)、指令格式等等的實施例。KZBTZ的執(zhí)行查找第一輸入掩碼中的尾隨最低有效零比特位置,并設(shè)置輸出掩碼以具有第一輸入掩碼的值,但是,比第一輸入掩碼中的尾隨最低有效零比特位置更接近于最高有效比特位置的所有比特位置都設(shè)置為O。在某些實施例中,第二輸入掩碼被用作寫掩碼,以便取決于第二輸入掩碼中的對應(yīng)的比特位置,在尾隨最低有效零比特位置計算中不考慮第一輸入掩碼的比特位置。
[0040]圖3(A)_(B)示出了 KZBTZ的示例性操作。在圖3 (A)中,有兩個源寫掩碼寄存器301和303和目的地寫掩碼305。第一源寫掩碼寄存器301中的第一 “O”值出現(xiàn)在第三比特位置(SRC1[2])。在第二源寫掩碼寄存器303的對應(yīng)的比特位置,值是“1”,意味著,此比特位置是第一比特位置(在第一源寫掩碼寄存器301中是零,并在第二源寫掩碼寄存器303中啟用)。因此,目的地寫掩碼寄存器305具有第一寫掩碼寄存器301的內(nèi)容,直到比特位置3,在該比特位置以及更高有效的比特位置,目的地寫掩碼寄存器305被設(shè)置為O。
[0041]在圖3 (B)中,有兩個源寫掩碼寄存器307和309和目的地寫掩碼311。第一源寫掩碼寄存器307中的第一“O”值出現(xiàn)在第三比特位置(SRC1[2])。在第二源寫掩碼寄存器309的對應(yīng)的比特位置,值是“0”,意味著,此比特位置沒有被評估為尾隨最低有效零比特位置。符合兩個要求的第一比特位置是比特位置4(SRC1[3]和SRC2[3])。因此,目的地寫掩碼寄存器311具有第一寫掩碼寄存器307的內(nèi)容,直到比特位置4,在該比特位置以及更高有效的比特位置,目的地寫掩碼寄存器311被設(shè)置為O。
[0042]KZBTZ的示例性格式
[0043]此指令的示例性格式是“KZBTZ K1,K2,K3”,其中,目的地操作數(shù)Kl是寫掩碼寄存器,Κ2和Κ3是源寫掩碼寄存器,KZBTZ是指令的操作碼。在某些實施例中,ΚΙ, Κ2以及Κ3是如上文詳述的專用寫掩碼寄存器。在其他實施例中,Kl,Κ2以及Κ3是通用寄存器。
[0044]KZBTZ的執(zhí)行的示例性方法
[0045]圖4示出了 KZBTZ指令在處理器中的執(zhí)行的實施例。在401獲取帶有第一和第二源寫掩碼操作數(shù)、目的地寫掩碼操作數(shù)以及操作碼的KZBTZ指令。
[0046]在403由解碼邏輯來解碼KZBTZ指令。
[0047]在405檢索/讀取源操作數(shù)的值。例如,讀取源寫掩碼寄存器。
[0048]在407由諸如一個或多個功能單元之類的執(zhí)行資源來執(zhí)行已解碼的KZBTZ指令(或包括這樣的指令的操作,諸如微操作),以查找第一源寫掩碼操作數(shù)中的在第二源寫掩碼操作數(shù)的對應(yīng)的比特位置具有值一的最低有效零比特位置。此比特位置表示尾隨最低有效零比特位置。在圖3中查找此的示例。
[0049]在409,直到,但不包括尾隨最低有效零比特位置的值被存儲到對應(yīng)的比特位置處的目的地寫掩碼操作數(shù)。另外,目的地寫掩碼操作數(shù)的剩余比特位置被設(shè)置為O。盡管分別地示出了 407和409,但是在一些實施例中,它們是作為指令的執(zhí)行的一部分一起執(zhí)行的。
[0050]圖5示出了用于處理KZBTZ指令的方法的實施例。在此實施例中,假設(shè)早先已經(jīng)執(zhí)行操作401-405中的某些,如果不是全部,然而,沒有示出它們,以便不使下面呈現(xiàn)的細節(jié)模糊。例如,沒有示出獲取和解碼,也沒有示出操作數(shù)檢索。在此示例中,然而,并行地處理每一比特位置,還可以串行地評估比特位置。
[0051]在501,第一源寫掩碼寄存器的內(nèi)容被寫入到目的地寫掩碼寄存器。在某些實施例中,第一源寫掩碼寄存器的內(nèi)容可另選地被寫入到臨時寄存器或其他數(shù)據(jù)結(jié)構(gòu)中。
[0052]在502,臨時變量被設(shè)置為O。使用此臨時變量作為判斷503處的判斷的數(shù)量是否超出第一源寫掩碼寄存器中的比特位置的數(shù)量的計數(shù)器。
[0053]在503處,判斷:1)計數(shù)器是否小于第一寫掩碼源寄存器中的比特位置的數(shù)量;2)第一源寫掩碼寄存器的計數(shù)器值比特位置中的比特值是否是1,或3)第二源寫掩碼寄存器的計數(shù)器值比特位置中的比特值是否是I。如果這些判斷中的某些是假的,那么,在507處,下一步驟將是使從計數(shù)器值比特位置到最高有效比特位置的目的地寫掩碼寄存器的所有比特位置歸零。計數(shù)器判斷的假值意味著,已經(jīng)評估了整個第一寫掩碼,沒有找到尾隨最低有效零比特位置。因此,存儲在第一源寫掩碼的比特位置中不是“I”的值的“假”指示是零值的指示。當存儲在第二源寫掩碼寄存器的相同比特位置中的值是I時,那么,已經(jīng)找到尾隨最低有效零比特位置。
[0054]如果這些判斷中的某些是真的,那么,下一步驟是在505增大計數(shù)器,并再次執(zhí)行503的判斷。
[0055]下面將討論尾KZBTZ的示例性使用。在此示例中,對上文的解決方案是在以前的迭代之前不允許執(zhí)行以后的迭代;如此,矢量/SMD執(zhí)行必須在第一 RAW相關(guān)性處停止。如果輸入掩碼k2是具有為元素置位的比特的掩碼,則我們?nèi)孕枰嬎銢]有剩余的RAW相關(guān)性,且輸入掩碼k3,指示所有元素仍需要計算的掩碼,它將查找?guī)в蠷AW沖突的最早的元素,并使以后的元素的所有比特歸零。這導(dǎo)致用于矢量化循環(huán)的下列算法,類似于此:
[0056]

【權(quán)利要求】
1.一種設(shè)備,包括: 解碼尾隨零之前的零掩碼(KZBTZ)指令的解碼邏輯,所述KZBTZ指令包括第一源寫掩碼操作數(shù)和目的地寫掩碼操作數(shù); 執(zhí)行邏輯,所述執(zhí)行邏輯執(zhí)行所述已解碼的KZBTZ指令以查找所述第一源寫掩碼中的尾隨最低有效零比特位置并設(shè)置所述目的地寫掩碼以具有所述第一源寫掩碼的值,但是,比第一源寫掩碼中的所述尾隨最低有效零比特位置更接近于最高有效比特位置的所有比特位置都設(shè)置為O。
2.如權(quán)利要求1所述的設(shè)備,其特征在于,所述KZBTZ指令還包括第二源寫掩碼操作數(shù),所述尾隨最低有效零比特位置是所述源寫掩碼操作數(shù)中的設(shè)置為O的第一比特位置,其中,所述第二源寫掩碼操作數(shù)的對應(yīng)的比特位置被設(shè)置為I。
3.如權(quán)利要求1所述的設(shè)備,其特征在于,所述寫掩碼操作數(shù)是專用寫掩碼寄存器。
4.如權(quán)利要求3所述的設(shè)備,其特征在于,所述專用寫掩碼寄存器是8或16比特大小。
5.如權(quán)利要求1所述的設(shè)備,其特征在于,所述寫掩碼操作數(shù)是通用寄存器。
6.如權(quán)利要求1所述的設(shè)備,其特征在于,所述執(zhí)行邏輯從最低有效到最高有效串行地評估所述第一源操作數(shù)的每一比特位置。
7.如權(quán)利要求6所述的設(shè)備,其特征在于,所述執(zhí)行邏輯使用計數(shù)器來確定何時已經(jīng)評估了全部比特位置。
8.—種在計算機處理器中執(zhí)行尾隨零之前的零掩碼(KZBTZ)指令的方法,所述KZBTZ指令包括第一源寫掩碼操作數(shù)和目的地寫掩碼操作數(shù),所述方法包括: 查找所述第一源寫掩碼中的尾隨最低有效零比特位置; 設(shè)置所述目的地寫掩碼以具有所述第一源寫掩碼的值,但是,比第一源寫掩碼中的所述尾隨最低有效零比特位置更接近于最高有效比特位置的所有比特位置都設(shè)置為O。
9.如權(quán)利要求8所述的方法,其特征在于,所述KZBTZ指令還包括第二源寫掩碼操作數(shù),所述尾隨最低有效零比特位置是所述源寫掩碼操作數(shù)中的設(shè)置為O的第一比特位置,其中,所述第二源寫掩碼操作數(shù)的對應(yīng)的比特位置被設(shè)置為I。
10.如權(quán)利要求8所述的方法,其特征在于,所述寫掩碼操作數(shù)是專用寫掩碼寄存器。
11.如權(quán)利要求10所述的方法,其特征在于,所述專用寫掩碼寄存器是8或16比特大小。
12.如權(quán)利要求8所述的方法,其特征在于,所述寫掩碼操作數(shù)是通用寄存器。
13.如權(quán)利要求8所述的方法,其特征在于,從最低有效到最高有效串行地評估所述第一源寫掩碼操作數(shù)的每一比特位置。
14.如權(quán)利要求13所述的方法,其特征在于,基于計數(shù)器來確定何時已經(jīng)評估全部比特位置。
15.一種包括代碼的有形的機器可讀取的介質(zhì),所述代碼當由處理器執(zhí)行時使所述處理器執(zhí)行一種執(zhí)行尾隨零之前的零掩碼(KZBTZ)指令的方法,所述KZBTZ指令包括第一源寫掩碼操作數(shù)和目的地寫掩碼操作數(shù),所述方法包括: 查找所述第一源寫掩碼中的尾隨最低有效零比特位置; 設(shè)置所述目的地寫掩碼以具有所述第一源寫掩碼的值,但是,比第一源寫掩碼中的所述尾隨最低有效零比特位置更接近于最高有效比特位置的所有比特位置都設(shè)置為O。
16.如權(quán)利要求15所述的方法,其特征在于,所述KZBTZ指令還包括第二源寫掩碼操作數(shù),所述尾隨最低有效零比特位置是所述源寫掩碼操作數(shù)中的設(shè)置為O的第一比特位置,其中,所述第二源寫掩碼操作數(shù)的對應(yīng)的比特位置被設(shè)置為I。
17.如權(quán)利要求15所述的方法,其特征在于,所述寫掩碼操作數(shù)是專用寫掩碼寄存器。
18.如權(quán)利要求17所述的方法,其特征在于,所述專用寫掩碼寄存器是8或16比特大小。
19.如權(quán)利要求15所述的方法,其特征在于,所述寫掩碼操作數(shù)是通用寄存器。
20.如權(quán) 利要求15所述的方法,其特征在于,從最低有效到最高有效串行地評估所述第一源寫掩 碼操作數(shù)的每一比特位置。
【文檔編號】G06F9/30GK104049946SQ201410097430
【公開日】2014年9月17日 申請日期:2014年3月17日 優(yōu)先權(quán)日:2013年3月15日
【發(fā)明者】C·J·休斯, M·J·查尼, J·考博爾, M·B·吉爾卡爾, E·烏爾德-阿邁德-瓦爾, B·L·托爾, R·凡倫天 申請人:英特爾公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1