用于提供矢量地址沖突檢測(cè)功能的方法、裝置、指令和邏輯的制作方法
【專利說明】
[0001] 相關(guān)申請(qǐng)的交叉引用
[0002] 本申請(qǐng)涉及:2009年10月1日提交的標(biāo)題為"Vector Instructions to Enable Efficient Synchronization and Parallel Reduction Operations" 的申請(qǐng)序列號(hào) NO. 12/079, 774 ;2010 年 12 月 21 日提交的標(biāo)題為"Mechanism for Confilict Detection Using SMD"的申請(qǐng)序列號(hào)NO. 12/974, 157 ;以及2010年12月22日提交的標(biāo)題為"Vector Confict Instructions" 的申請(qǐng)序列號(hào) NO. 12/976, 616〇
技術(shù)領(lǐng)域
[0003] 本公開涉及處理邏輯、微處理器和相關(guān)聯(lián)的指令集架構(gòu)的領(lǐng)域,所述相關(guān)聯(lián)的指 令集架構(gòu)在被處理器或其它處理邏輯執(zhí)行時(shí),執(zhí)行邏輯、數(shù)學(xué)或其它功能操作。特別是,本 公開涉及提供SMD矢量地址沖突檢測(cè)功能的指令和邏輯。
【背景技術(shù)】
[0004] 現(xiàn)代處理器常常包括用于提供操作的指令,所述操作是計(jì)算密集的,但給予可以 通過使用各種數(shù)據(jù)存儲(chǔ)設(shè)備(例如,單指令多數(shù)據(jù)(SIMD)矢量寄存器)的有效實(shí)現(xiàn)來利用 的高級(jí)數(shù)據(jù)并行性。在SMD執(zhí)行中,單個(gè)指令在多個(gè)數(shù)據(jù)元素上并發(fā)或同時(shí)操作。這一般 通過擴(kuò)展各種資源(例如,寄存器和算術(shù)邏輯單元(ALU))的寬度,允許它們分別在多個(gè)數(shù) 據(jù)元素上保存或操作來實(shí)現(xiàn)。
[0005] 中央處理單元(CPU)可以提供這樣的并行硬件以支持矢量的SMD處理。矢量是保 存多個(gè)連續(xù)數(shù)據(jù)元素的數(shù)據(jù)結(jié)構(gòu)。尺寸L的矢量寄存器可以包含尺寸M的N個(gè)矢量元素, 其中N = L/M。例如,64字節(jié)矢量寄存器可以被劃分成(a)64個(gè)矢量元素,每一個(gè)元素保存 占據(jù)1個(gè)字節(jié)的數(shù)據(jù)項(xiàng),(b)32個(gè)矢量元素,用于保存每一個(gè)占據(jù)2個(gè)字節(jié)(或一個(gè)"字") 的數(shù)據(jù)項(xiàng),(c)16個(gè)矢量元素,用于保存每一個(gè)占據(jù)4個(gè)字節(jié)(或一個(gè)"雙字")的數(shù)據(jù)項(xiàng), 或(d)8個(gè)矢量元素,用于保存每一個(gè)占據(jù)8個(gè)字節(jié)(或一個(gè)"四字")的數(shù)據(jù)項(xiàng)。
[0006] 多個(gè)應(yīng)用具有大量的數(shù)據(jù)級(jí)并行性并且可能能夠受益于SMD支持。然而,一些應(yīng) 用花費(fèi)相當(dāng)大數(shù)量的時(shí)間在對(duì)一組稀疏的位置上的操作。而且,有時(shí)連續(xù)的操作在相同的 稀疏位置上被執(zhí)行,并且所以這些應(yīng)用可能只看到來自SMD、操作的有限益處。為了維持 SMD效率,一些架構(gòu)不僅允許SMD算術(shù)操作,而且允許SIMD存儲(chǔ)器讀和寫(通過聚集和分 散操作)。分散減少在很多應(yīng)用中是常見操作。例如,分散-添加操作可以用于能夠根據(jù)索 引的分布使第一陣列的多個(gè)值減少為(即添加到)第二陣列的選定元素,這常??梢允请S 機(jī)的。但是由于此,可能很難同時(shí)有效地處理多個(gè)元素(即,在SMD模式中)。一個(gè)關(guān)注是 確保標(biāo)量程序順序在必要時(shí)被保留。另一關(guān)注是確保當(dāng)數(shù)據(jù)分散到存儲(chǔ)器中時(shí),所得到的 存儲(chǔ)器地址的矢量只包括唯一的地址(即,不存在完全相同的地址)。
[0007] 例如,柱狀圖運(yùn)算在很多圖像處理應(yīng)用中是常見的操作。柱狀圖可以用于跟蹤圖 像中的像素的顏色值的分布。然而,對(duì)柱狀圖陣列的更新可能是隨機(jī)的,這取決于陣列的輸 入數(shù)據(jù)。特別是,相鄰元素的索引可以指向同一柱狀圖庫。因此,需要沖突檢測(cè)和解決方案 來檢測(cè)對(duì)相同位置的多個(gè)相關(guān)的更新并確保標(biāo)量程序順序被保留。這精確地是以下類型的 條件:該條件可以使共同或同時(shí)處理多個(gè)數(shù)據(jù)(即,使用SMD操作)變得非常難。
[0008] 目前,對(duì)這樣的沖突關(guān)注和相關(guān)的處理困難的潛在解決方案還沒有被充分探宄。
【附圖說明】
[0009] 本發(fā)明將作為示例而不是限制在附圖的圖中示出。
[0010] 圖IA是執(zhí)行提供SMD地址沖突檢測(cè)功能的指令的系統(tǒng)的一個(gè)實(shí)施例的框圖。
[0011] 圖IB是執(zhí)行提供SMD地址沖突檢測(cè)功能的指令的系統(tǒng)的另一實(shí)施例的框圖。
[0012] 圖IC是執(zhí)行提供SIMD地址沖突檢測(cè)功能的指令的系統(tǒng)的另一實(shí)施例的框圖。
[0013] 圖2是執(zhí)行提供SMD地址沖突檢測(cè)功能的指令的處理器的一個(gè)實(shí)施例的框圖。
[0014] 圖3A示出了根據(jù)一個(gè)實(shí)施例的緊縮數(shù)據(jù)類型。
[0015] 圖3B示出了根據(jù)一個(gè)實(shí)施例的緊縮數(shù)據(jù)類型。
[0016] 圖3C示出了根據(jù)一個(gè)實(shí)施例的緊縮數(shù)據(jù)類型。
[0017] 圖3D示出了根據(jù)一個(gè)實(shí)施例的編碼用于提供SMD地址沖突檢測(cè)功能的指令。
[0018] 圖3E示出了根據(jù)另一實(shí)施例的編碼用于提供SMD地址沖突檢測(cè)功能的指令。 [0019] 圖3F示出了根據(jù)另一實(shí)施例的編碼用于提供SMD地址沖突檢測(cè)功能的指令。
[0020] 圖3G示出了根據(jù)另一實(shí)施例的編碼用于提供SMD地址沖突檢測(cè)功能的指令。
[0021] 圖3H示出了根據(jù)另一實(shí)施例的編碼用于提供SMD地址沖突檢測(cè)功能的指令。
[0022] 圖4A示出了用于執(zhí)行提供SMD地址沖突檢測(cè)功能的指令的處理器微架構(gòu)的一個(gè) 實(shí)施例的元件。
[0023] 圖4B示出了執(zhí)行提供SMD地址沖突檢測(cè)功能的指令的處理器微架構(gòu)的另一實(shí)施 例的元件。
[0024] 圖5是執(zhí)行提供SMD地址沖突檢測(cè)功能的指令的處理器的一個(gè)實(shí)施例的框圖。
[0025] 圖6是執(zhí)行提供SMD地址沖突檢測(cè)功能的指令的計(jì)算機(jī)系統(tǒng)的一個(gè)實(shí)施例的框 圖。
[0026] 圖7是執(zhí)行提供SIMD地址沖突檢測(cè)功能的指令的計(jì)算機(jī)系統(tǒng)的另一實(shí)施例的框 圖。
[0027] 圖8是執(zhí)行提供SIMD地址沖突檢測(cè)功能的指令的計(jì)算機(jī)系統(tǒng)的另一實(shí)施例的框 圖。
[0028] 圖9是執(zhí)行提供SMD地址沖突檢測(cè)功能的指令的芯片上系統(tǒng)的一個(gè)實(shí)施例的框 圖。
[0029] 圖10是執(zhí)行提供SMD地址沖突檢測(cè)功能的指令的處理器的一個(gè)實(shí)施例的框圖。
[0030] 圖11是提供SIMD地址沖突檢測(cè)功能的IP核心開發(fā)系統(tǒng)的一個(gè)實(shí)施例的框圖。
[0031] 圖12示出了提供SIMD地址沖突檢測(cè)功能的架構(gòu)仿真系統(tǒng)的一個(gè)實(shí)施例。
[0032] 圖13示出了用于變換提供SMD地址沖突檢測(cè)功能的指令的系統(tǒng)的一個(gè)實(shí)施例。
[0033] 圖14A示出了使用提供SIMD矢量前導(dǎo)零計(jì)數(shù)功能的指令的示例的一個(gè)實(shí)施例的 流程圖,所述SIMD矢量前導(dǎo)零計(jì)數(shù)功能針對(duì)有效矢量地址沖突解決方案生成置換控制是 有用的。
[0034] 圖14B示出了使用提供SMD矢量地址沖突檢測(cè)功能的指令的示例的一個(gè)實(shí)施例 的流程圖。
[0035] 圖14C示出了使用向SMD矢量地址沖突解決方案提供矢量種群計(jì)數(shù)功能的指令 的示例的一個(gè)實(shí)施例的流程圖。
[0036] 圖14D示出了使用提供有效SMD矢量地址沖突解決方案的組合指令的示例的可 替換實(shí)施例的流程圖。
[0037] 圖15A示出了向SIMD置換控制提供矢量前導(dǎo)零計(jì)數(shù)功能的過程的一個(gè)實(shí)施例的 流程圖。
[0038] 圖15B示出了提供SMD矢量地址沖突檢測(cè)功能的過程的一個(gè)實(shí)施例的流程圖。
[0039] 圖15C示出了向SMD矢量地址沖突解決方案提供矢量種群計(jì)數(shù)功能的過程的一 個(gè)實(shí)施例的流程圖。
[0040] 圖IOT示出了提供有效SMD矢量地址沖突解決方案的組合過程的可替換實(shí)施例 的流程圖。
[0041] 圖16示出了用于執(zhí)行提供SIMD矢量前導(dǎo)零計(jì)數(shù)功能的指令的裝置的實(shí)施例,所 述SIMD矢量前導(dǎo)零計(jì)數(shù)功能針對(duì)有效矢量地址沖突解決方案生成置換控制是有用的。
[0042] 圖17示出了用于執(zhí)行針對(duì)有效矢量地址沖突解決方案提供SIMD矢量地址沖突檢 測(cè)功能的指令的裝置的實(shí)施例。
[0043] 圖18示出了用于執(zhí)行針對(duì)有效矢量地址沖突解決方案提供SIMD矢量種群計(jì)數(shù)功 能的指令的裝置的實(shí)施例。
【具體實(shí)施方式】
[0044] 下面的描述公開了指令和處理邏輯以在處理器、計(jì)算機(jī)系統(tǒng)或其它處理裝置內(nèi)或 與處理器、計(jì)算機(jī)系統(tǒng)或其它處理裝置相關(guān)聯(lián)地提供SMD地址沖突檢測(cè)功能。在本文中公 開了用于提供SMD地址沖突檢測(cè)功能的指令和邏輯。一些實(shí)施例包括具有寄存器的處理 器,所述寄存器帶有可變的多個(gè)數(shù)據(jù)字段,每一個(gè)數(shù)據(jù)字段用于存儲(chǔ)針對(duì)存儲(chǔ)器中的一個(gè) 數(shù)據(jù)元素的偏移。目的寄存器具有相對(duì)應(yīng)的數(shù)據(jù)字段,這些數(shù)據(jù)字段中的每一個(gè)存儲(chǔ)可變 的第二多個(gè)位以存儲(chǔ)具有針對(duì)每一個(gè)偏移的掩碼位的沖突掩碼。響應(yīng)于對(duì)矢量沖突指令進(jìn) 行解碼,執(zhí)行單元比較每一個(gè)數(shù)據(jù)字段與每個(gè)較不重要的數(shù)據(jù)字段中的偏移,以確定它們 是否保存著匹配的偏移,并且在目的寄存器中的相對(duì)應(yīng)的沖突掩碼中,設(shè)置與具有匹配偏 移的較不重要的數(shù)據(jù)字段相對(duì)應(yīng)的任何掩碼位。矢量地址沖突檢測(cè)可以與可變尺寸的元素 一起使用并生成沖突掩碼以解決在聚集-修改-分散SIMD操作中的相關(guān)性。
[0045] 下面的描述公開了多個(gè)指令、方法和處理邏輯以解決在聚集-修改-分散SMD操 作中的相關(guān)性。將認(rèn)識(shí)到,如在本文描述的實(shí)施例中的,SIMD矢量沖突指令可以用于可變尺 寸的元素或存儲(chǔ)器偏移,以提供SMD矢量地址沖突檢測(cè)功能并針對(duì)有效SMD地址沖突解 決方案來生成沖突掩碼。還將認(rèn)識(shí)到,如在本文描述的實(shí)施例中的,SMD矢量前導(dǎo)零計(jì)數(shù) 指令可以與可變尺寸的元素和沖突掩碼一起使用以提供將在下面更詳細(xì)地描述的SIMD置 換控制,從而允許在寄存器中的更有效的SMD地址沖突解決方案而不通過存儲(chǔ)器執(zhí)行相 關(guān)的計(jì)算。將進(jìn)一步認(rèn)識(shí)到,如在本文描述的實(shí)施例中的,SIMD矢量種群計(jì)數(shù)指令可以與 可變尺寸的元素和沖突掩碼一起使用,以有效地計(jì)算迭代計(jì)數(shù)并為將在下面更詳細(xì)地被描 述的SMD地址沖突解決方案的每次迭代提供SMD完全掩碼。因此本文公開的指令和邏輯 提供更有效的SIMD地址沖突解決方案,特別是在聚集-修改-分散應(yīng)用中。
[0046] 在下面的描述中,闡述了多個(gè)特定的細(xì)節(jié),例如,處理邏輯、處理器類型、微架構(gòu)條 件、事件、啟動(dòng)機(jī)制等,以便提供對(duì)本發(fā)明的實(shí)施例的更徹底的理解。然而本領(lǐng)域中的技術(shù) 人員將認(rèn)識(shí)到,本發(fā)明可以在沒有這樣的特定細(xì)節(jié)的情況下被實(shí)施。此外,沒有詳細(xì)示出一 些公知的結(jié)構(gòu)、電路等以便避免不必要地使對(duì)本發(fā)明的實(shí)施例難理解。
[0047] 雖然參考處理器描述了下面的實(shí)施例,但是其它實(shí)施例可應(yīng)用于其它類型的集成 電路和邏輯設(shè)備。本發(fā)明的實(shí)施例的類似技術(shù)和教導(dǎo)可以應(yīng)用于可以受益于較高流水線吞 吐量和改進(jìn)的性能的其它類型的電路或半導(dǎo)體設(shè)備。本發(fā)明的實(shí)施例的教導(dǎo)可應(yīng)用于執(zhí)行 數(shù)據(jù)操縱的任何處理器或機(jī)器。然而,本發(fā)明不限于執(zhí)行512位、256位、128位、64位、32 位或16位數(shù)據(jù)操作的處理器或機(jī)器,并可以應(yīng)用于數(shù)據(jù)的操縱或管理在其中被執(zhí)行的任 何處理器和機(jī)器。此外,下面的描述提供了示例,并且附圖出于說明的目的地示出了各種示 例。然而,這些示例不應(yīng)在限制的意義上被解釋,因?yàn)樗鼈儍H僅是要提供本發(fā)明的實(shí)施例的 示例而不是提供本發(fā)明的實(shí)施例的所有可能實(shí)現(xiàn)的詳盡的列表。
[0048] 雖然下面的示例在執(zhí)行單元和邏輯電路的上下文中描述了指令處理和分布,但是 本發(fā)明的其它實(shí)施例可以通過存儲(chǔ)在機(jī)器可讀、有形介質(zhì)上的數(shù)據(jù)或指令的方式來完成, 所述數(shù)據(jù)或指令當(dāng)由機(jī)器執(zhí)行時(shí)使機(jī)器執(zhí)行與本發(fā)明的至少一個(gè)實(shí)施例一致的功能。在一 個(gè)實(shí)施例中,與本發(fā)明的實(shí)施例相關(guān)聯(lián)的功能體現(xiàn)在機(jī)器可執(zhí)行指令中。所述指令能夠用 于使利用指令編程的通用或?qū)S锰幚砥鲌?zhí)行本發(fā)明的步驟。本發(fā)明的實(shí)施例可以被提供為 可以包括機(jī)器或計(jì)算機(jī)可讀介質(zhì)的計(jì)算機(jī)程序產(chǎn)品或軟件,所述機(jī)器或計(jì)算機(jī)可讀介質(zhì)具 有在其上存儲(chǔ)的指令,所述指令可以用于對(duì)計(jì)算機(jī)(或其它電子設(shè)備)進(jìn)行編程以根據(jù)本 發(fā)明的實(shí)施例執(zhí)行一個(gè)或多個(gè)操作??商鎿Q地,本發(fā)明的實(shí)施例的步驟可以由包含用于執(zhí) 行步驟的固定功能邏輯的特定的硬件部件、或由編程計(jì)算機(jī)部件和固定功能硬件部件的任 何組合執(zhí)行。
[0049]用于對(duì)邏輯進(jìn)行編程以執(zhí)行本發(fā)明的實(shí)施例的指令可以存儲(chǔ)在系統(tǒng)中的存儲(chǔ)器 (例如,DRAM、高速緩存、閃速存儲(chǔ)器或其它存儲(chǔ)裝置)內(nèi)。此外,指令可以經(jīng)由網(wǎng)絡(luò)或通過 其它計(jì)算機(jī)可讀介質(zhì)來分布。因此,機(jī)器可讀介質(zhì)可以包括用于存儲(chǔ)或發(fā)送以機(jī)器(例如, 計(jì)算機(jī))可讀的形式的信息的任何機(jī)構(gòu),但不限于軟盤、光學(xué)盤、光盤只讀存儲(chǔ)器(CD-ROM) 和磁光盤、只讀存儲(chǔ)器(ROM)、隨機(jī)存取存儲(chǔ)器(RAM)、可擦除可編程只讀存儲(chǔ)器(EPROM)、 電可擦除可編程只讀存儲(chǔ)器(EEPROM)、磁卡或光卡、閃速存儲(chǔ)器或在經(jīng)由電、光、聲或其它 形式的傳播信號(hào)(例如,載波、紅外信號(hào)、數(shù)字信號(hào)等)通過互聯(lián)網(wǎng)傳輸信息中使用的有形、 機(jī)器可讀存儲(chǔ)裝置。因此,計(jì)算機(jī)可讀介質(zhì)包括適合于存儲(chǔ)或發(fā)送以機(jī)器(例如,計(jì)算機(jī)) 可讀的形式的電子指令或信息的任何類型的有形機(jī)器可讀介質(zhì)。
[0050] 設(shè)計(jì)也可以經(jīng)歷各種級(jí),從創(chuàng)建到仿真到制造。表示設(shè)計(jì)的數(shù)據(jù)可以用多種方式 來表示設(shè)計(jì)。首先,如在仿真中有用的,可以使用硬件描述語言或另一功能描述語言來表示 硬件。此外,可以在設(shè)計(jì)過程的一些級(jí)生成具有邏輯和/或晶體管柵極的電路級(jí)模型。此 外,在一些級(jí),大部分設(shè)計(jì)達(dá)到表示在硬件模型中的各種設(shè)備的物理放置的數(shù)據(jù)的水平。在 使用常規(guī)半導(dǎo)體制造技術(shù)的情況下,表示硬件模型的數(shù)據(jù)可以是指定在用于生成集成電路 的掩模的不同掩模層上各種特征的存在或不存在的數(shù)據(jù)。在設(shè)計(jì)的任何表示中,所述數(shù)據(jù) 可以存儲(chǔ)在任何形式的機(jī)器可讀介質(zhì)中。存儲(chǔ)器或磁性或光學(xué)存儲(chǔ)裝置(例如,磁盤)可 以是機(jī)器可讀介質(zhì),其用于存儲(chǔ)經(jīng)由光波或電波傳輸?shù)男畔?,所述光波或電波被調(diào)制或否 則生成以傳輸這樣的信息。當(dāng)指示或攜帶代碼或設(shè)計(jì)的電載波被發(fā)送時(shí),在電信號(hào)的復(fù)制、 緩沖或重傳被執(zhí)行的程度上,制造新拷貝。因此,通信提供者或網(wǎng)絡(luò)提供者可以在有形、機(jī) 器可讀介質(zhì)上至少暫時(shí)性地存儲(chǔ)制品,例如,被編碼到載波中的信息,所述信息體現(xiàn)了本發(fā) 明的實(shí)施例的技術(shù)。
[0051] 在現(xiàn)代處理器中,多個(gè)不同的執(zhí)行單元用于處理并且執(zhí)行各種代碼和指令。不是 所有指令都同等地被創(chuàng)建,一些更快完成,而另一些可能花費(fèi)多個(gè)時(shí)鐘周期來完成。指令的 吞吐量越快,處理器的整體性能就越好。因此,盡可能快地執(zhí)行很多指令將是有利的。然而, 存在具有較大的復(fù)雜性并且從執(zhí)行時(shí)間和處理器資源方面來說需要更多的某些指令。例 如,存在浮點(diǎn)指令、加載/存儲(chǔ)操作、數(shù)據(jù)移動(dòng)等。
[0052] 由于在互聯(lián)網(wǎng)、文本和多媒體應(yīng)用中使用更多的計(jì)算機(jī)系統(tǒng),所以隨著時(shí)間的過 去引入了額外的處理器支持。在一個(gè)實(shí)施例中,指令集可以與一個(gè)或多個(gè)計(jì)算機(jī)架構(gòu)相關(guān) 聯(lián),所述計(jì)算機(jī)架構(gòu)包括數(shù)據(jù)類型、指令、寄存器架構(gòu)、尋址模式、存儲(chǔ)器架構(gòu)、中斷和異常 處理、和外部輸入和輸出(I/O)。
[0053] 在一個(gè)實(shí)施例中,指令集架構(gòu)(ISA)可以由一個(gè)或多個(gè)微架構(gòu)實(shí)現(xiàn),所述微架構(gòu) 包括用于實(shí)現(xiàn)一個(gè)或多個(gè)指令集的處理器邏輯和電路。相應(yīng)地,具有不同的微架構(gòu)的處理 器可以共享公共指令集的至少一部分。例如,Intel? Pentium 4處理器、Intel? Core?處 理器和來自Sunnyvale CA的Advanced Micro Devices, Inc的處理器實(shí)現(xiàn)x86指令集的幾 乎相同的版本(具有添加有較新版本的一些擴(kuò)展),但具有不同的內(nèi)部設(shè)計(jì)。類似地,由其 它處理器開發(fā)公司(例如,ARM Holdings, Ltd、MIPS或其許可證接受方或采用方)設(shè)計(jì)的 處理器可以共享公共指令集的至少一部分,但可以包括不同的處理器設(shè)計(jì)。例如,可以使用 新的或公知的技術(shù)在不同的微架構(gòu)中以不同的方式實(shí)現(xiàn)ISA的相同的寄存器架構(gòu),所述寄 存器架構(gòu)包括專用物理寄存器、使用寄存器重命名機(jī)制(例如,寄存器別名表(RAT)、記錄 器緩沖器(ROB)和引退寄存器文件的使用)的一個(gè)或多個(gè)動(dòng)態(tài)分配的物理寄存器。在一個(gè) 實(shí)施例中,寄存器可以包括一個(gè)或多個(gè)寄存器、寄存器架構(gòu)、寄存器文件或可以或可以不由 軟件編程者可尋址的其它寄存器集。
[0054] 在一個(gè)實(shí)施例中,指令可以包括一個(gè)或多個(gè)指令格式。在一個(gè)實(shí)施例中,指令格式 可以指示各種字段(位的數(shù)量、位的位置等)來指定待執(zhí)行的操作和操作數(shù),其中該操作將 在該操作數(shù)上被執(zhí)行,連同其它事物。一些指令格式可以進(jìn)一步由指令模板(或子格式) 中斷地定義。例如,給定指令格式的指令模板可以被定義為具有指令格式的字段的不同子 集和/或被定義為具有被不同地解釋的給定字段。在一個(gè)實(shí)施例中,指令使用指令格式來 進(jìn)行表示(并且,如果被定義,則在該指令格式的指令模板的給定模板中)并且指定或指示 操作和操作數(shù),其中該操作將在該操作數(shù)上操作。
[0055] 科學(xué)、金融、自動(dòng)矢量化通用、RMS(識(shí)別、挖掘和合成)、以及視覺和多媒體應(yīng)用 (例如,2D/3D圖形、圖像處理、視頻壓縮/解壓縮、語音識(shí)別算法和音頻操縱)可能需要要 在大量的數(shù)據(jù)項(xiàng)上執(zhí)行的相同的操作。在一個(gè)實(shí)施例中,單指令多數(shù)據(jù)(SMD)指使處理器 在多個(gè)數(shù)據(jù)元素上執(zhí)行操作的指令的類型??梢栽谔幚砥髦惺褂肧MD技術(shù),所述SMD技 術(shù)可以將寄存器中的位邏輯地劃分為多個(gè)固定尺寸或可變尺寸的數(shù)據(jù)元素,每一個(gè)數(shù)據(jù)元 素表示單獨(dú)的值。例如,在一個(gè)實(shí)施例中,在64位寄存器中的位可以被組織為包含四個(gè)單 獨(dú)的16位數(shù)據(jù)元素的源操作數(shù),每一個(gè)數(shù)據(jù)元素表示單獨(dú)的16位值。這類數(shù)據(jù)可以被稱 為"緊縮"數(shù)據(jù)類型或"矢量"數(shù)據(jù)類型,并且所述數(shù)據(jù)類型的操作數(shù)被稱為緊縮數(shù)據(jù)操作 數(shù)或矢量操作數(shù)。在一個(gè)實(shí)施例中,緊縮數(shù)據(jù)項(xiàng)或矢量可以是存儲(chǔ)在單個(gè)寄存器中的緊縮 數(shù)據(jù)元素的序列,并且緊縮數(shù)據(jù)操作數(shù)或矢量操作數(shù)可以是SMD指令(或"緊縮數(shù)據(jù)指令" 或"矢量指令")的源或目的操作數(shù)。在一個(gè)實(shí)施例中,SIMD指令指定單個(gè)矢量操作,所述 單個(gè)矢量操作要在兩個(gè)源矢量操作數(shù)上被執(zhí)行以生成相同或不同尺寸、具有相同或不同數(shù) 量的數(shù)據(jù)元素和以相同或不同的數(shù)據(jù)元素順序的目的矢量操作數(shù)(也被稱為結(jié)果矢量操 作數(shù))。
[0056] 例如由具有包括x86、MMXtm指令集、流式SMD擴(kuò)展(SSE)、SSE2、SSE3、SSE4. 1和 SSE4. 2指令的指令集的Intel? Core?處理器、ARM處理器(例如,具有包括矢量浮點(diǎn)(VFP) 和/或NEON指令的指令集的ARM Cortex?系列的處理器)、以及MIPS處理器(例如,由中 國(guó)科學(xué)院的計(jì)算技術(shù)研宄所(ICT)開發(fā)的Loongson系列的處理器)使用的SMD技術(shù)使在 應(yīng)用性能中的顯而易見的改進(jìn)變得可能(Core?和MMX?是Santa Clara, Calif的Intel公 司的注冊(cè)商標(biāo)或商標(biāo))。
[0057] 在一個(gè)實(shí)施例中,目的和源寄存器/數(shù)據(jù)是表示相對(duì)應(yīng)的數(shù)據(jù)或操作的源和目的 地的一般術(shù)語。在一些實(shí)施例中,它們可以由寄存器、存儲(chǔ)器或具有除了所描述的那些名 稱或功能以外的其它名稱或功能的其它存儲(chǔ)區(qū)域?qū)崿F(xiàn)。例如,在一個(gè)實(shí)施例中,"DEST1"可 以是暫時(shí)性存儲(chǔ)寄存器或其它存儲(chǔ)區(qū)域,而"SRC1"和"SRC2"可以是第一和第二源存儲(chǔ)寄 存器或其它存儲(chǔ)區(qū)域,等等。在其它實(shí)施例中,SRC和DEST存儲(chǔ)區(qū)域中的兩個(gè)或更多個(gè)可 以與在同一存儲(chǔ)區(qū)域(例如,SIMD寄存器)內(nèi)的不同數(shù)據(jù)存儲(chǔ)元件相對(duì)應(yīng)。在一個(gè)實(shí)施例 中,源寄存器中的一個(gè)也可以通過例如將在第一和第二源數(shù)據(jù)上執(zhí)行的操作的結(jié)果寫回到 用作目的寄存器的兩個(gè)源寄存器中的一個(gè)來充當(dāng)目的寄存器。
[0058] 圖IA是由包括用于根據(jù)本發(fā)明的一個(gè)實(shí)施例執(zhí)行指令的執(zhí)行單元在內(nèi)的處理器 形成的示例性計(jì)算機(jī)系統(tǒng)的框圖。根據(jù)本發(fā)明,例如在本文所的實(shí)施例中,系統(tǒng)100包括部 件(例如,處理器102),用于使用包括邏輯的執(zhí)行單元來執(zhí)行用于處理數(shù)據(jù)的算法。系統(tǒng) 100 代表基于從 Santa Clara, California 的 Intel 公司可