用于執(zhí)行沖突檢測(cè)并將寄存器的內(nèi)容廣播到另一個(gè)寄存器的數(shù)據(jù)元素位置的系統(tǒng)、裝置 ...的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明的領(lǐng)域一般涉及計(jì)算機(jī)處理器架構(gòu),更具體地涉及在執(zhí)行時(shí)導(dǎo)致特定結(jié)果 的指令。
【背景技術(shù)】
[0002] 指令集或指令集架構(gòu)(ISA)是計(jì)算機(jī)架構(gòu)中與編程有關(guān)的部分,并且可包括原生 數(shù)據(jù)類型、指令、寄存器架構(gòu)、尋址模式、存儲(chǔ)器架構(gòu)、中斷和異常處理、以及外部輸入和輸 出(I/O)。應(yīng)該注意,術(shù)語指令在本文中一般是指宏指令一一即,提供給處理器供執(zhí)行的指 令一一而不是由處理器的解碼器解碼宏指令所產(chǎn)生的微指令或微操作。
[0003] 指令集架構(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)可以使用已知的技術(shù),以不同的微型架構(gòu), 以不同的方式來實(shí)現(xiàn),包括專用物理寄存器,使用寄存器重命名機(jī)制(例如,寄存器別名表 (RAT)的使用,重新排序緩沖器(ROB)以及退役寄存器文件,如美國(guó)專利No. 5, 446, 912所描 述的;使用多個(gè)圖以及寄存器的池,如美國(guó)專利No. 5, 207, 132所描述的)的一個(gè)或多個(gè)動(dòng) 態(tài)地分配的物理寄存器,等等。除非另作說明,短語寄存器架構(gòu)、寄存器組以及寄存器是指 對(duì)軟件/編程器以及指令指定寄存器的方式可見的東西。在需要特殊性的情況下,形容詞 邏輯、架構(gòu)、或軟件可見的將用于表示寄存器架構(gòu)中的寄存器/寄存器組,而不同的形容詞 將用于指定給定微架構(gòu)中的寄存器(例如,物理寄存器、重新排序緩沖器、引退寄存器、寄 存器池)。
[0004] 指令集包括一個(gè)或多個(gè)指令格式。給定指令格式定義各個(gè)字段(位的數(shù)量、位的 位置)以指定要執(zhí)行的操作(操作碼)以及對(duì)其要執(zhí)行該操作的操作數(shù)等。給定指令是使 用給定指令格式來表達(dá)的,并指定操作和操作數(shù)。指令流是特定指令序列,其中該序列中的 每一指令都是指令格式的指令出現(xiàn)。
[0005] 科學(xué)、金融、自動(dòng)向量化的通用、RMS(識(shí)別、挖掘以及合成)/可視和多媒體應(yīng)用程 序(例如,2D/3D圖形、圖像處理、視頻壓縮/解壓縮、語音識(shí)別算法和音頻操縱)常常需要 對(duì)大量的數(shù)據(jù)項(xiàng)執(zhí)行相同操作(被稱為"數(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ù)元素(四字(?尺寸的數(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ù)。這種類型的數(shù)據(jù)被稱為緊縮數(shù)據(jù)類型或向量數(shù)據(jù)類型,這種數(shù)據(jù)類型的操作 數(shù)被稱為緊縮數(shù)據(jù)操作數(shù)或向量操作數(shù)。換句話說,緊縮數(shù)據(jù)項(xiàng)或向量指的是緊縮數(shù)據(jù)元 素的序列;并且緊縮數(shù)據(jù)操作數(shù)或向量操作數(shù)是SMD指令(也稱為緊縮數(shù)據(jù)指令或向量指 令)的源操作數(shù)或目的地操作數(shù)。
[0006] 作為示例,一種類型的SMD指令指定要以縱向方式對(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ù)元素位置〇中的數(shù)據(jù)元素相對(duì)應(yīng),每個(gè)源操作數(shù)的數(shù)據(jù)元素 位置1中的數(shù)據(jù)元素相對(duì)應(yīng),以此類推)。分別地對(duì)這些源數(shù)據(jù)元素對(duì)中的每一對(duì)執(zhí)行由該 SMD指令所指定的操作,以生成匹配數(shù)量的結(jié)果數(shù)據(jù)元素,如此,每一對(duì)源數(shù)據(jù)元素都具有 對(duì)應(yīng)的結(jié)果數(shù)據(jù)元素。由于操作是縱向的,并且由于結(jié)果向量操作數(shù)尺寸相同、具有相同數(shù) 量的數(shù)據(jù)元素、且結(jié)果數(shù)據(jù)元素以與源向量操作數(shù)相同的數(shù)據(jù)元素順序來存儲(chǔ),因此,結(jié)果 數(shù)據(jù)元素處于與其對(duì)應(yīng)的源數(shù)據(jù)元素對(duì)在源向量操作數(shù)中的位置相同的,結(jié)果向量操作數(shù) 的位的位置處。除此示例性類型的SMD指令之外,還有各種其他類型的SMD指令(例如, 僅有一個(gè)或具有兩個(gè)以上的源向量操作數(shù)的SMD指令;以水平方式操作的SMD指令;生 成不同尺寸的結(jié)果向量操作數(shù)的SIMD指令;具有不同尺寸的數(shù)據(jù)元素的SIMD指令;和/或 具有不同的數(shù)據(jù)元素順序的SIMD指令)。應(yīng)該理解,術(shù)語目的地向量操作數(shù)摂(或目的地 操作數(shù))被定義為執(zhí)行由指令所指定的操作的直接結(jié)果,包括將該目的地操作數(shù)存儲(chǔ)在某 一位置(寄存器或在由該指令所指定的存儲(chǔ)器地址),以便它可以作為源操作數(shù)由另一指 令訪問(由另一指令指定該同一個(gè)位置)。
[0007]諸如由具有包括 x86、MMX?、流式 SMD 擴(kuò)展(SSE)、SSE2、SSE3、SSE4. 1 以及 SSE4. 2 指令的指令集的Intel?Core?處理器使用的技術(shù)之類的SMD技術(shù),在應(yīng)用性能方面實(shí)現(xiàn)了 顯著的改善(Core?和MMX?是位于加利福尼亞州Santa Clara的Intel Corporation的注 冊(cè)商標(biāo)或商標(biāo)。)。稱為高級(jí)向量擴(kuò)展(AVX) (AVX1和AVX2)又使用VEX編碼方案的額外的 SMD擴(kuò)展集已經(jīng)被發(fā)布或出版(例如,參見2011年10月的丨ntel?64和IA-32架構(gòu)軟件 開發(fā)手冊(cè),并且參見2011年6月的丨ntel?高級(jí)向量擴(kuò)展編程參考)。
【附圖說明】
[0008] 本發(fā)明在附圖中作為示例而非限制地示出,其中類似的附圖標(biāo)記指示相似的元 件,附圖中:
[0009] 圖1示出VPTESTCONF的操作的示例性圖示。
[0010] 圖2示出處理器中VPTESTCONF指令的執(zhí)行的實(shí)施例。
[0011] 圖3示出用于處理VPTESTCONF指令的方法的實(shí)施例。
[0012] 圖4示出用于廣播的示例性過程。
[0013] 圖5示出VPBROADCASTM的操作的示例性圖示。
[0014] 圖6示出處理器中VPBROADCASTM指令的執(zhí)行的實(shí)施例。
[0015] 圖7示出處理VPBROADCASTM指令的方法的實(shí)施例。
[0016] 圖8示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的一個(gè)有效位向量寫掩碼元素的數(shù)量同向量 尺寸和數(shù)據(jù)元素尺寸之間的相關(guān)性。
[0017] 圖9是根據(jù)本發(fā)明的一個(gè)實(shí)施例的寄存器架構(gòu)900的框圖。
[0018] 圖10A是示出根據(jù)本發(fā)明的各實(shí)施例的示例性有序流水線和示例性的寄存器重 命名的無序發(fā)布/執(zhí)行流水線的框圖。
[0019] 圖10B是示出根據(jù)本發(fā)明的各實(shí)施例的要包括在處理器中的有序架構(gòu)核的示例 性實(shí)施例和示例性的寄存器重命名的無序發(fā)布/執(zhí)行架構(gòu)核的框圖。
[0020] 圖11A-B示出了更具體的示例性有序核架構(gòu)的框圖,該核將是芯片中的若干邏輯 塊之一(包括相同類型和/或不同類型的其他核)。
[0021] 圖12是根據(jù)本發(fā)明的各實(shí)施例可能具有一個(gè)以上核、可能具有集成存儲(chǔ)器控制 器、以及可能具有集成圖形器件的處理器1200的框圖。
[0022] 圖13-16是示例性計(jì)算機(jī)架構(gòu)的框圖。
[0023] 圖17是根據(jù)本發(fā)明的實(shí)施例的對(duì)比使用軟件指令變換器將源指令集中的二進(jìn)制 指令變換成目標(biāo)指令集中的二進(jìn)制指令的框圖。
[0024] 圖18示出比較的輸出結(jié)果作為一組位向量。
【具體實(shí)施方式】
[0025] 在以下描述中,陳述了多個(gè)具體細(xì)節(jié)。然而,應(yīng)當(dāng)理解的是,可不通過這些具體細(xì) 節(jié)來實(shí)施本發(fā)明的實(shí)施例。在其它實(shí)例中,未詳細(xì)示出公知的電路、結(jié)構(gòu)以及技術(shù),以免模 糊對(duì)本描述的理解。
[0026] 說明書中對(duì)"一個(gè)實(shí)施例"、"實(shí)施例"、"示例實(shí)施例"等等的引用表示所描述的實(shí) 施例可包括特定特征、結(jié)構(gòu)或特性,但是,每一個(gè)實(shí)施例可以不一定包括該特定特征、結(jié)構(gòu), 或特征。此外,這些短語不一定表示同一實(shí)施例。此外,當(dāng)結(jié)合實(shí)施例描述特定的特征、結(jié) 構(gòu)或特性時(shí),認(rèn)為本領(lǐng)域普通技術(shù)人員能夠知曉結(jié)合其它實(shí)施例來實(shí)現(xiàn)這種特征、結(jié)構(gòu)或 特性,無論是否明確描述。
[0027]概覽
[0028] 在以下描述中,在描述該指令集架構(gòu)中的該特定指令的操作之前,需要解釋一些 項(xiàng)目。一個(gè)這樣的項(xiàng)叫做"寫掩碼寄存器",其一般用于斷定(predicate)操作數(shù),以有條件 地控制每元素計(jì)算操作(下面,也可以使用術(shù)語掩碼寄存器,是指諸如下面所討論的"k"寄 存器之類的寫掩碼寄存器)。如下文中使用,寫掩碼寄存器存儲(chǔ)多個(gè)位(16、32、64等等), 其中寫掩碼寄存器中的每個(gè)有效位控制向量寄存器的緊縮數(shù)據(jù)元素在SMD處理期間的操 作/更新。典型地,存在超過一個(gè)寫掩碼寄存器可供處理器核使用。
[0029] 該指令集架構(gòu)包括至少一些SMD指令,該至少一些SMD指令指定向量操作并具 有用于從這些向量寄存器中選擇源寄存器和/或目的地寄存器的字段(示例性的SMD指 令可指定要對(duì)向量寄存器中的一個(gè)或多個(gè)向量寄存器的內(nèi)容執(zhí)行的向量操作,并且將該向 量操作的結(jié)果存儲(chǔ)在向量寄存器之一中)。本發(fā)明的不同實(shí)施例可具有不同尺寸的向量寄 存器,并支持更多/更少/不同尺寸的數(shù)據(jù)元素。
[0030] 由SIMD指令所指定的多位數(shù)據(jù)元素的尺寸(例如,字節(jié)、字、雙字、四倍長(zhǎng)字)確 定向量寄存器內(nèi)的"數(shù)據(jù)元素位置"的位位置,而向量操作數(shù)的尺寸確定數(shù)據(jù)元素的數(shù)量。 緊縮數(shù)據(jù)元素指的是存儲(chǔ)在特定位置中的數(shù)據(jù)。換言之,取決于目的地操作數(shù)中數(shù)據(jù)元素 的尺寸以及目的地操作數(shù)的尺寸(目的地操作數(shù)中位的總數(shù))(或換言之,取決于目的地操 作數(shù)的尺寸和目的地操作數(shù)中數(shù)據(jù)元素的數(shù)量),所得到的向量操作數(shù)內(nèi)多位數(shù)據(jù)元素位 置的位定位(bit location)改變(例如,如果所得到的向量操作數(shù)的目的地是向量寄存器 (在該討論中,向量寄存器和緊縮數(shù)據(jù)元素寄存器互換地使用),則目的地向量寄存器內(nèi)多 位數(shù)據(jù)元素位置的位定位改變)。例如,在對(duì)32位數(shù)據(jù)元素進(jìn)行操作的向量操作(數(shù)據(jù)元 素位置0占據(jù)位位置31:0,數(shù)據(jù)元素位置1占據(jù)位位置63:32,以此類推)與對(duì)64位數(shù)據(jù) 元素進(jìn)行操作的向量操作(數(shù)據(jù)元素位置〇占據(jù)位位置63:0,數(shù)據(jù)元素位置1占據(jù)位位置 127:64,以此類推)之間,多位數(shù)據(jù)元素的位位置不同。
[0031] 此外,根據(jù)本發(fā)明的一個(gè)實(shí)施例,在1有效位向量寫掩碼元素的數(shù)量與向量尺寸 和數(shù)據(jù)元素尺寸之間存在如圖8所示的關(guān)聯(lián)。示出了 128位、256位以及512位的向量尺 寸,不過其他寬度也是可能的。考慮了 8位字節(jié)(B)、16位字(W)、32位雙字(D)或單精度 浮點(diǎn)以及64位四字(?或雙精度浮點(diǎn)的數(shù)據(jù)元素尺寸,不過其他寬度也是可能的。如圖所 示,當(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 位可以