專利名稱:用于執(zhí)行點積運算的指令和邏輯的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及執(zhí)行數(shù)學運算的處理裝置及相關(guān)軟件和軟件序列的領(lǐng)域。
背景技術(shù):
計算機系統(tǒng)已經(jīng)越來越深入我們的社會。計算機的處理能力已經(jīng)提高了各種職業(yè) 的工人的效率和生產(chǎn)力。由于購買和擁有計算機的費用持續(xù)下降,所以越來越多的消費者 能夠利用更新、更快的機器。此外,許多人由于使用自由而樂于使用筆記本電腦。移動計算 機使用戶可在離開辦公室或旅行時輕松地傳輸他們的數(shù)據(jù)以及利用所述移動計算機進行 工作。這種情況在營銷人員、公司管理人員甚至學生中是常見的。隨著處理器技術(shù)的進步,還產(chǎn)生了更新的軟件代碼來在具有這些處理器的機器上 運行。用戶一般預期并要求來自他們的計算機的更高性能,而不管所使用的軟件類型。從 處理器內(nèi)實際執(zhí)行的指令和操作的種類中可能產(chǎn)生一個這樣的問題。根據(jù)操作的復雜度和 /或所需電路的類型,某些類型的操作需要更多時間來完成。這提供了優(yōu)化在處理器內(nèi)部執(zhí) 行某些復雜操作的方式的機會。十多年來,媒體應用推動了微處理器的發(fā)展。實際上,媒體應用推動了近年來的大 多數(shù)計算升級。這些升級主要在消費者方面發(fā)生,但是,為了娛樂性增強的教育和通信目 的,在企業(yè)方面也看到顯著的進步。然而,未來的媒體應用需要更高的計算要求。因此,將 來的個人計算體驗在視聽效果方面將更為豐富,并且更容易使用,更重要的是,計算將與通 信融合。因此,圖像的顯示以及統(tǒng)稱為內(nèi)容的音頻和視頻數(shù)據(jù)的回放已經(jīng)逐漸成為當前計 算設備的流行應用。濾波和卷積操作是對內(nèi)容數(shù)據(jù)、如圖像音頻和視頻數(shù)據(jù)執(zhí)行的最常見 操作的一部分。這類操作是計算密集的,但是提供可通過采用各種數(shù)據(jù)存儲設備(如單指 令多數(shù)據(jù)(SIMD)寄存器)的有效實現(xiàn)來利用的高級數(shù)據(jù)并行性。多個當前的體系結(jié)構(gòu)還 需要多個操作、指令或子指令(通常稱作“微操作”或“μop”)來對多個操作數(shù)執(zhí)行各種數(shù) 學運算,由此減小吞吐量并增加執(zhí)行數(shù)學運算所需的時鐘周期數(shù)量。例如,可能需要由多個指令組成的指令序列來執(zhí)行產(chǎn)生點積所必需的一個或多個 運算,包括將由處理裝置、系統(tǒng)或計算機程序內(nèi)的各種數(shù)據(jù)類型所表示的兩個或兩個以上 數(shù)值之積相加。但是,這類現(xiàn)有技術(shù)可能需要許多處理周期,并且可能使處理器或系統(tǒng)消耗 不必要的功率以產(chǎn)生點積。此外,一些現(xiàn)有技術(shù)可能在可進行操作的操作數(shù)的數(shù)據(jù)類型方 面受到限制。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的一個方面,提供了一種已在其中存儲了指令的機器可讀介質(zhì),所述
3指令在由機器執(zhí)行時,使所述機器執(zhí)行包括以下步驟的方法確定各具有第一數(shù)據(jù)類型的 多個打包值的至少兩個操作數(shù)的點積結(jié)果;存儲所述點積結(jié)果。根據(jù)本發(fā)明的另一方面,提供了一種裝置,包括第一邏輯,對第一數(shù)據(jù)類型的至 少兩個打包操作數(shù)執(zhí)行單指令多數(shù)據(jù)點積指令。根據(jù)本發(fā)明的又一方面,提供了一種系統(tǒng),包括第一存儲器,存儲單指令多數(shù)據(jù) 點積指令;處理器,耦合到所述第一存儲器以執(zhí)行所述單指令多數(shù)據(jù)點積指令。根據(jù)本發(fā)明的再一方面,提供了一種方法,包括將第一打包操作數(shù)的第一數(shù)據(jù)元 素與第二打包操作數(shù)的第一數(shù)據(jù)元素相乘,以產(chǎn)生第一乘積;將所述第一打包操作數(shù)的第 二數(shù)據(jù)元素與所述第二打包操作數(shù)的第二數(shù)據(jù)元素相乘,以產(chǎn)生第二乘積;將所述第一乘 積與所述第二乘積相加,以產(chǎn)生點積結(jié)果。此外,本發(fā)明還提供了一種處理器,包括源寄存器,存儲包括第一數(shù)據(jù)值和第二 數(shù)據(jù)值的第一打包操作數(shù);目標寄存器,存儲包括第三數(shù)據(jù)值和第四數(shù)據(jù)值的第二打包操 作數(shù);根據(jù)所述點積指令所指示的控制值來執(zhí)行單指令多數(shù)據(jù)點積指令的邏輯,所述邏輯 包括將所述第一數(shù)據(jù)值和第三數(shù)據(jù)值相乘以產(chǎn)生第一乘積的第一乘法器、將所述第二數(shù)據(jù) 值和第四數(shù)據(jù)值相乘以產(chǎn)生第二乘積的第二乘法器,所述邏輯還包括將所述第一乘積和第 二乘積相加以產(chǎn)生至少一個和數(shù)的至少一個加法器。
通過附圖、作為實例而非限制地來說明本發(fā)明圖IA是根據(jù)本發(fā)明的一個實施例采用處理器組成的計算機系統(tǒng)的框圖,所述處 理器包括執(zhí)行點積操作的指令的執(zhí)行單元;圖IB是根據(jù)本發(fā)明的一個備選實施例的另一個示范性計算機系統(tǒng)的框圖;圖IC是根據(jù)本發(fā)明的另一個備選實施例的再一個示范性計算機系統(tǒng)的框圖;圖2是根據(jù)本發(fā)明的一個實施例的處理器的微體系結(jié)構(gòu)的框圖,所述處理器包括 執(zhí)行點積操作的邏輯電路;圖3A示出根據(jù)本發(fā)明的一個實施例的多媒體寄存器中的各種打包(packed)數(shù)據(jù) 類型表示;圖3B示出根據(jù)一備選實施例的打包數(shù)據(jù)類型;圖3C示出根據(jù)本發(fā)明的一個實施例的多媒體寄存器中的各種有符號和無符號打 包數(shù)據(jù)類型表示;圖3D示出一種操作編碼(操作碼)格式的一個實施例;圖3E示出一種備選操作編碼(操作碼)格式;圖3F示出又一種備選操作編碼格式;圖4是根據(jù)本發(fā)明對打包數(shù)據(jù)操作數(shù)執(zhí)行點積操作的邏輯(logic)的一個實施例 的框圖;圖5A是根據(jù)本發(fā)明的一個實施例對單精度打包數(shù)據(jù)操作數(shù)執(zhí)行點積操作的邏輯 的框圖;圖5B是根據(jù)本發(fā)明的一個實施例對雙精度打包數(shù)據(jù)操作數(shù)執(zhí)行點積操作的邏輯 的框4
圖6A是根據(jù)本發(fā)明的一個實施例用于執(zhí)行點積操作的電路的框圖;圖6B是根據(jù)本發(fā)明的另一個實施例用于執(zhí)行點積操作的電路的框圖;圖7是根據(jù)一個實施例對數(shù)據(jù)進行打包符號操作的示意圖。圖7A是根據(jù)一個實施例可通過執(zhí)行DPPS指令來執(zhí)行的操作的偽碼表示;圖7B是根據(jù)一個實施例可通過執(zhí)行DPPD指令來執(zhí)行的操作的偽碼表示。
具體實施例方式以下說明描述了在處理裝置、計算機系統(tǒng)或軟件程序中執(zhí)行點積操作的一種技術(shù) 的實施例。在以下描述中,闡述諸如處理器類型、微體系結(jié)構(gòu)條件、事件、啟用機制等的大量 具體細節(jié),以提供對本發(fā)明的充分理解。然而,本領(lǐng)域的技術(shù)人員會理解,沒有這類具體細 節(jié),也可實施本發(fā)明。另外,沒有詳細說明一些公知的結(jié)構(gòu)、電路等,以免不必要地影響對本 發(fā)明的理解。雖然參照處理器來描述以下實施例,但是,其它實施例適用于其它類型的集成電 路和邏輯設備。本發(fā)明的相同技術(shù)和理論可容易地應用到可獲益于較高流水線吞吐量和改 進的性能的其它類型的電路或半導體器件。本發(fā)明的理論適用于執(zhí)行數(shù)據(jù)操作的任何處理 器或機器。但是,本發(fā)明不限于執(zhí)行256位、128位、64位、32位或16位數(shù)據(jù)操作的處理器 或機器,而是可適用于其中需要操縱打包數(shù)據(jù)的任何處理器和機器。為便于說明,以下描述中闡述了大量具體細節(jié),以便提供對本發(fā)明的充分理解。但 是,本領(lǐng)域的技術(shù)人員會理解,這些具體細節(jié)不是實施本發(fā)明所必需的。在其它情況下,沒 有對公知的電氣結(jié)構(gòu)和電路進行特別詳細的闡述,以免不必要地影響對本發(fā)明的理解。另 外,為了說明的目的,以下描述提供實例,以及附圖示出各種實例。但是,這些實例不應當以 限制的意義來理解,因為它們僅旨在提供本發(fā)明的實例,而不是提供本發(fā)明的所有可能實 現(xiàn)的窮盡列表。雖然以下實例在執(zhí)行單元和邏輯電路的上下文中來描述指令處理和分配,但是, 本發(fā)明的其它實施例可通過軟件來實現(xiàn)。在一個實施例中,本發(fā)明的方法以機器可執(zhí)行指 令來體現(xiàn)。這些指令可用于使采用指令編程的通用或?qū)S锰幚砥鲌?zhí)行本發(fā)明的步驟。本 發(fā)明可作為計算機程序產(chǎn)品或軟件來提供,它可包括其中已存儲指令的機器或計算機可讀 介質(zhì),這些指令可用于對計算機(或其它電子設備)編程以執(zhí)行根據(jù)本發(fā)明的過程。作為 備選的方案,本發(fā)明的步驟可由包含用于執(zhí)行所述步驟的硬連線邏輯的特定硬件部件來執(zhí) 行,或者由已編程計算機部件和定制硬件部件的任何組合來執(zhí)行。這種軟件可存儲在系統(tǒng) 中的存儲器內(nèi)。類似地,代碼可經(jīng)由網(wǎng)絡或者通過其它計算機可讀媒體來分配。因此,機器可讀介質(zhì)可包括用于存儲或傳輸機器(例如計算機)可讀形式的信息 的任何機構(gòu),包括但不限于軟盤、光盤、光盤只讀存儲器(CD-ROM)以及磁光盤、只讀存儲器 (ROM)、隨機存取存儲器(RAM)、可擦除可編程只讀存儲器(EPROM)、電可擦除可編程只讀存 儲器(EEPROM)、磁或光卡、閃存(flash memory)、通過因特網(wǎng)的傳輸、電、光、聲或其它形式 的傳播信號(例如載波、紅外信號、數(shù)字信號等)等。相應地,計算機可讀介質(zhì)包括適于存儲 或傳輸機器(如計算機)可讀形式的電子指令或信息的任何類型的媒體/機器可讀介質(zhì)。 此外,本發(fā)明還可作為計算機程序產(chǎn)品來下載。因此,程序可從遠程計算機(例如服務器) 傳送到請求計算機(例如客戶機)。程序的傳送可通過電、光、聲或者在載波或其它傳播介
5質(zhì)中包含的其它形式的數(shù)據(jù)信號經(jīng)由通信鏈路(例如調(diào)制解調(diào)器、網(wǎng)絡連接等)來進行。設計可能經(jīng)過從創(chuàng)建到仿真(simulation)直到制造的各種階段。表示設計的數(shù) 據(jù)可通過多種方式來表示設計。首先,如在仿真中有用的那樣,硬件可采用硬件描述語言 或者另一種功能描述語言來表示。另外,采用邏輯和/或晶體管門電路的電路級模型可在 設計過程的某些階段產(chǎn)生。此外,在某個階段,大部分設計達到表示硬件模型中的各種設備 的物理設置的數(shù)據(jù)級。在采用常規(guī)半導體制造技術(shù)的情況下,表示硬件模型的數(shù)據(jù)可以是 指定用于生產(chǎn)集成電路的掩模的不同掩模層上的各種特征是否存在的數(shù)據(jù)。在該設計的任 何表示中,數(shù)據(jù)可存儲在任何形式的機器可讀介質(zhì)中。經(jīng)調(diào)制或者以其它方式產(chǎn)生來傳輸 這種信息的光或電波、存儲器或者磁或光存儲裝置(storage)(如磁盤)可以是機器可讀介 質(zhì)。這些介質(zhì)的任一種可“攜帶”或“指示”設計或軟件信息。在傳輸指示或攜帶代碼或設 計的電載波達到執(zhí)行電信號的復制、緩沖或重傳的程度時,就制作了新的副本。因此,通信 提供商或網(wǎng)絡提供商可能制作體現(xiàn)本發(fā)明的技術(shù)的產(chǎn)品(載波)的復制品。在現(xiàn)代處理器中,多個不同的執(zhí)行單元用來處理和執(zhí)行各種代碼及指令。并非所 有指令都同等地創(chuàng)建,因為一些指令會較快地完成,而其它指令則耗用大量時鐘周期。指令 的吞吐量越大,處理器的整體性能就越好。因此,讓許多指令盡可能快地執(zhí)行是有利的。但 是,存在具有較高復雜度并且在執(zhí)行時間和處理器資源方面要求更多的某些指令。例如存 在浮點指令、加載/存儲操作、數(shù)據(jù)移動等。隨著越來越多的計算機系統(tǒng)用于互聯(lián)網(wǎng)和多媒體應用,隨時間引入了附加處理器 支持。例如,單指令多數(shù)據(jù)(SIMD)整數(shù)/浮點指令和流式(streaming) SIMD擴展(SSE)是 減少執(zhí)行特定程序任務所需的指令的總體數(shù)量的指令,它又可降低功耗。通過并行地對多 個數(shù)據(jù)元素進行操作,這些指令可加速軟件執(zhí)行。因此,可在包括視頻、語音和圖像/照片 處理的大量應用中實現(xiàn)性能增益。微處理器以及相似類型的邏輯電路中的SIMD指令的實 現(xiàn)通常涉及多個問題。此外,SIMD操作的復雜度通常導致需要附加電路,以正確地處理和 操縱數(shù)據(jù)。當前,SIMD點積指令不可用。在不存在SIMD點積指令的情況下,在諸如音頻/視 頻壓縮、處理和操縱之類的應用中可能需要大量指令和數(shù)據(jù)寄存器來實現(xiàn)同樣的結(jié)果。因 此,根據(jù)本發(fā)明的實施例的至少一個點積指令可減少代碼開銷和資源要求。本發(fā)明的實施 例提供一種實現(xiàn)作為使用SIMD相關(guān)硬件的算法的點積操作的方式。當前,對SIMD寄存器 中的數(shù)據(jù)執(zhí)行點積操作有些困難且冗長。一些算法需要比執(zhí)行那些操作的指令的實際數(shù)量 更多的指令來設置用于算術(shù)運算的數(shù)據(jù)。通過實現(xiàn)根據(jù)本發(fā)明的實施例的點積操作,實現(xiàn) 點積處理所需的指令數(shù)量可顯著減少。本發(fā)明的實施例包括用于實現(xiàn)點積操作的指令。點積操作一般包括將至少兩個值 相乘并將該乘積加到至少兩個其它值的乘積上??蓪νㄓ命c積算法進行其它變更,包括將 各個點積操作的結(jié)果相加以產(chǎn)生另一個點積。例如,根據(jù)一個實施例,應用于數(shù)據(jù)元素的點 積操作可一般表示為DESTl — SRC1*SRC2 ;DEST2 — SRC3*SRC4 ;DEST3 — DEST1+DEST2 ;對于打包SIMD數(shù)據(jù)操作數(shù),該流程可應用于各個操作數(shù)的各個數(shù)據(jù)元素。
在以上流程中,“DEST”和“SRC”是表示相應數(shù)據(jù)或操作的源和目標(destination) 的一般術(shù)語。在一些實施例中,它們可通過具有不同于所述的名稱或功能的寄存器、存儲器 或其它存儲區(qū)來實現(xiàn)。例如,在一個實施例中,DESTl和DEST2可以是第一和第二暫時存儲 區(qū)(例如“TEMPI和“TEMP2”寄存器),SRCl和SRC3可以是第一和第二目標存儲區(qū)(例如 “DEST1”和“DEST2”寄存器)等。在其它實施例中,SRC和DEST存儲區(qū)的兩個或兩個以上可 對應于相同存儲區(qū)(例如SIMD寄存器)中的不同數(shù)據(jù)存儲單元(data storage element) 0 此外,在一個實施例中,點積操作可產(chǎn)生通過上述一般流程所產(chǎn)生的點積之和。圖IA是根據(jù)本發(fā)明的一個實施例采用處理器組成的示范性計算機系統(tǒng)的框圖, 所述處理器包括執(zhí)行點積操作的指令的執(zhí)行單元。根據(jù)本發(fā)明,例如在本文所描述的實施 例中,系統(tǒng)100包括采用包含執(zhí)行用于處理數(shù)據(jù)的算法的邏輯的執(zhí)行單元的部件,例如處 理器 102。系統(tǒng) 100 表示基于可向 Intel Corporation(Snata Clara,California)購買的 PENTIUM III、PENTIUM 4、Xeon 、Itanium 、XScale 和 / 或 StrongARM 微處理器的處 理系統(tǒng),但是也可采用其它系統(tǒng)(包括具有其它微處理器的個人計算機(PC)、工程工作站、 機頂盒等)。在一個實施例中,示例系統(tǒng)100可運行可向Microsoft Corporation (Redmond, Washington)購買的一種版本的WINDOWS 操作系統(tǒng),但也可采用其它操作系統(tǒng)(例如UNIT 和Linux)、嵌入式軟件和/或圖形用戶接口。因此,本發(fā)明的實施例不限于硬件電路和軟件 的任何特定結(jié)合。實施例不限于計算機系統(tǒng)。本發(fā)明的備選實施例可用于其它設備(如手持設備) 和嵌入式應用。手持設備的一些實例包括蜂窩電話、因特網(wǎng)協(xié)議裝置、數(shù)字照相機、個人數(shù) 字助理(PDA)和手持PC。嵌入式應用可包括微控制器、數(shù)字信號處理器(DSP)、片上系統(tǒng)、 網(wǎng)絡計算機(NetPC)、機頂盒、網(wǎng)絡集線器、廣域網(wǎng)(WAN)交換機或者對操作數(shù)執(zhí)行點積操 作的任何其它系統(tǒng)。此外,已經(jīng)實現(xiàn)一些體系結(jié)構(gòu)以使指令能夠同時對若干數(shù)據(jù)進行操作, 從而提高多媒體應用的效率。隨著數(shù)據(jù)的類型和容量增加,必須增強計算機及其處理器以 通過更有效的方法來操縱數(shù)據(jù)。圖IA是根據(jù)本發(fā)明的一個實施例采用處理器102組成的計算機系統(tǒng)100的框圖, 所述處理器包括一個或多個執(zhí)行單元108來執(zhí)行計算一個或多個操作數(shù)中的數(shù)據(jù)元素的 點積的算法。一個實施例可在單處理器臺式或服務器系統(tǒng)的上下文中來描述,但是備選實 施例可包含在多處理器系統(tǒng)中。系統(tǒng)100是中心(hub)體系結(jié)構(gòu)的一實例。計算機系統(tǒng) 100包括處理數(shù)據(jù)信號的處理器102。處理器102可以是復雜指令集計算機(CISC)微處理 器、簡化指令集計算(RISC)微處理器、超長指令字(VLIW)微處理器、實現(xiàn)指令集的組合的 處理器或者例如數(shù)字信號處理器之類的任何其它處理器設備。處理器102耦合到可在處理 器102與系統(tǒng)100中的其它部件之間傳輸數(shù)據(jù)信號的處理器總線110。系統(tǒng)100的元件執(zhí) 行本領(lǐng)域的技術(shù)人員公知的常規(guī)功能。在一個實施例中,處理器102包括第一級(Li)內(nèi)部高速緩沖存儲器104。根據(jù)該 體系結(jié)構(gòu),處理器102可具有單個內(nèi)部高速緩存或多級內(nèi)部高速緩存。作為備選的方案,在 另一個實施例中,高速緩沖存儲器可位于處理器102的外部。根據(jù)具體實現(xiàn)和需要,其它實 施例也可包括內(nèi)部和外部兩種高速緩存的組合。寄存器文件(register file) 106可在包 括整數(shù)寄存器、浮點寄存器、狀態(tài)寄存器和指令指針寄存器的各種寄存器中存儲不同類型 的數(shù)據(jù)。
包含執(zhí)行整數(shù)和浮點運算的邏輯的執(zhí)行單元108也位于處理器102中。處理器 102還包括存儲某些宏指令的微碼的微碼(μ code)ROM。對于該實施例,執(zhí)行單元108包括 處理打包指令集109的邏輯。在一個實施例中,打包指令集109包括用于計算多個操作數(shù) 的點積的打包點積指令。通過在通用處理器102的指令集中包含打包指令集109,結(jié)合執(zhí) 行指令的相關(guān)電路,許多多媒體應用使用的操作可采用通用處理器102中的打包數(shù)據(jù)來執(zhí) 行。因此,通過采用處理器的數(shù)據(jù)總線的全寬度(full width)對打包數(shù)據(jù)執(zhí)行操作,可加 速并且更有效地執(zhí)行許多多媒體應用。這可消除通過處理器的數(shù)據(jù)總線來傳送較小的數(shù)據(jù) 單元以一次對一個數(shù)據(jù)元素執(zhí)行一個或多個操作的需要。執(zhí)行單元108的備選實施例也可用于微控制器、嵌入式處理器、圖形設備、DSP和 其它類型的邏輯電路。系統(tǒng)100包括存儲器120。存儲器120可以是動態(tài)隨機存取存儲器 (DRAM)設備、靜態(tài)隨機存取存儲器(SRAM)設備、閃存設備或者其它存儲設備。存儲器120 可存儲通過可由處理器102執(zhí)行的數(shù)據(jù)信號所表示的指令和/或數(shù)據(jù)。系統(tǒng)邏輯芯片116耦合到處理器總線110和存儲器120。所述實施例中的系統(tǒng)邏 輯芯片116是存儲器控制器中心(memory controller hub) (MCH)。處理器102可經(jīng)由處理 器總線110與MCH 116通信。MCH 116為指令和數(shù)據(jù)存儲以及為圖形命令、數(shù)據(jù)和文本的 存儲提供到存儲器120的高帶寬存儲器通路118。MCH 116引導處理器102、存儲器120和 系統(tǒng)100中的其它部件之間的數(shù)據(jù)信號,并且作為處理器總線110、存儲器120和系統(tǒng)1/0 122之間的數(shù)據(jù)信號的橋梁。在一些實施例中,系統(tǒng)邏輯芯片116可提供用于耦合到圖形控 制器112的圖形端口。MCH 116通過存儲器接口 118耦合到存儲器120。圖形卡112通過 加速圖形端口(AGP)互連114耦合到MCH 116。系統(tǒng)100采用專有中心(hub)接口總線122將MCH 116耦合到1/0控制器中心 (ICH) 130。ICH 130通過本地1/0總線提供對一些1/0裝置的直接連接。本地1/0總線是 用于將外圍設備連接到存儲器120、芯片組和處理器102的高速1/0總線。一些實例是音 頻控制器、固件中心(閃速BIOS) 128、無線收發(fā)器126、數(shù)據(jù)存儲設備124、包含用戶輸入和 鍵盤接口的傳統(tǒng)1/0控制器、諸如通用串行總線(USB)之類的串行擴展端口和網(wǎng)絡控制器 134。數(shù)據(jù)存儲設備124可包括硬盤驅(qū)動器、軟盤驅(qū)動器、⑶-ROM設備、閃存設備或者其它 海量存儲設備。對于系統(tǒng)的另一個實施例,執(zhí)行具有點積指令的算法的執(zhí)行單元可與片上系統(tǒng)配 合使用。片上系統(tǒng)的一個實施例包括處理器和存儲器。一種這樣的系統(tǒng)的存儲器是閃存。 閃存可與處理器和其它系統(tǒng)部件位于相同的管芯上。另外,諸如存儲控制器或圖形控制器 等其它邏輯塊也可設置在片上系統(tǒng)中。圖IB示出實現(xiàn)本發(fā)明的一個實施例的原理的數(shù)據(jù)處理系統(tǒng)140。本領(lǐng)域的技術(shù)人 員容易理解,本文所述的實施例可與備選處理系統(tǒng)配合使用,而不會背離本發(fā)明的范圍。計算機系統(tǒng)140包括能夠執(zhí)行包括點積操作的SIMD操作的處理核心159。對于一 個實施例,處理核心159表示任何類型的體系結(jié)構(gòu)的處理單元,包括但不限于CISC、RISC或 VLIW類型的體系結(jié)構(gòu)。處理核心159還可適于以一種或多種加工技術(shù)制造,并且通過在機 器可讀媒體上充分詳細地表示,可適合于促進所述制造。處理核心159包括執(zhí)行單元142、寄存器文件集合145和解碼器144。處理核心 159還包括對本發(fā)明的理解不必要的附加電路(圖中未示出)。執(zhí)行單元142用于執(zhí)行處理核心159所接收的指令。除了識別典型的處理器指令之外,執(zhí)行單元142還可識別用于 對打包數(shù)據(jù)格式執(zhí)行操作的打包指令集143中的指令。打包指令集143包括用于支持點積 操作的指令,并且還可包括其它打包指令。執(zhí)行單元142通過內(nèi)部總線耦合到寄存器文件 145。寄存器文件145表示處理核心159上用于存儲包括數(shù)據(jù)在內(nèi)的信息的存儲區(qū)。如前 所述,會理解到,用于存儲打包數(shù)據(jù)的存儲區(qū)不是關(guān)鍵的。執(zhí)行單元142耦合到解碼器144。 解碼器144用于將處理核心159所接收的指令解碼為控制信號和/或微碼入口點(entry point)。響應這些控制信號和/或微碼入口點,執(zhí)行單元142執(zhí)行適當?shù)牟僮鳌L幚砗诵?59與總線141耦合,用于與各種其它系統(tǒng)設備進行通信,它們例如可 包括但不限于同步動態(tài)隨機存取存儲器(SDRAM)控制裝置(control) 146、靜態(tài)隨機存取 存儲器(SDRAM)控制裝置147、突發(fā)(burst)閃存接口 148、個人計算機存儲卡國際聯(lián)盟 (PCMCIA)/壓縮閃存(compact flash) (CF)卡控制裝置149、液晶顯示器(LCD)控制裝置 150、直接存儲器存取(DMA)控制器151以及備選總線主接口 152。在一個實施例中,數(shù)據(jù) 處理系統(tǒng)140還可包括I/O橋接器154,用于經(jīng)由I/O總線153與各種I/O設備進行通信。 這類I/O設備例如可包括但不限于通用異步接收器/發(fā)射器(UART) 155、通用串行總線 (USB) 156、藍牙無線UART 157和I/O擴展接口 158。數(shù)據(jù)處理系統(tǒng)140的一個實施例提供移動、網(wǎng)絡和/或無線通信以及能夠執(zhí)行包 括點積操作在內(nèi)的SIMD操作的處理核心159。處理核心159可采用各種音頻、視頻、成像和 通信算法來編程,所述算法包括諸如沃爾什_哈達瑪變換、快速傅立葉變換(FFT)、離散余 弦變換(DCT)及其各自的逆變換之類的離散變換,諸如色彩空間變換、視頻編碼運動估計 或視頻解碼運動補償之類的壓縮/解壓縮技術(shù),以及諸如脈沖編碼調(diào)制(PCM)之類的調(diào)制 /解調(diào)(MODEM)功能。本發(fā)明的一些實施例還可適用于圖形應用,例如三維(“3D”)建模、 呈現(xiàn)(rendering)、對象沖突檢測、3D對象變換和照明等。圖IC示出能夠執(zhí)行SIMD點積操作的數(shù)據(jù)處理系統(tǒng)的又一備選實施例。根據(jù)一個 備選實施例,數(shù)據(jù)處理系統(tǒng)160可包括主處理器166、SIMD協(xié)處理器161、高速緩沖存儲器 167和輸入/輸出系統(tǒng)168。輸入/輸出系統(tǒng)168可任選地耦合到無線接口 169。SIMD協(xié) 處理器161能夠執(zhí)行包括點積操作在內(nèi)的SIMD操作。處理核心170可適合于以一種或多 種加工技術(shù)制造,并且通過在機器可讀媒體上充分詳細地表示,可適合于促進包括處理核 心170在內(nèi)的數(shù)據(jù)處理系統(tǒng)160的全部或部分的制造。對于一個實施例,SIMD協(xié)處理器161包括執(zhí)行單元162和寄存器文件集合164。主 處理器165的一個實施例包括解碼器165,以識別供執(zhí)行單元162執(zhí)行的包括SIMD點積計 算指令在內(nèi)的指令集163的指令。對于備選實施例,SIMD協(xié)處理器161還包括解碼器165B 的至少一部分,以對指令集163的指令進行解碼。處理核心170還包括對本發(fā)明的實施例 的理解不必要的附加電路(圖中未示出)。在操作中,主處理器166執(zhí)行數(shù)據(jù)處理指令流,所述指令控制包括與高速緩沖存 儲器167和輸入/輸出系統(tǒng)168進行交互在內(nèi)的一般類型的數(shù)據(jù)處理操作。嵌入數(shù)據(jù)處理 指令流中的是SIMD協(xié)處理器指令。主處理器166的解碼器165將這些SIMD協(xié)處理器指令 識別為屬于應當由附屬的SIMD協(xié)處理器161來執(zhí)行的類型。因此,主處理器166在協(xié)處理 器總線166上發(fā)出這些SIMD協(xié)處理器指令(或者表示SIMD協(xié)處理器指令的控制信號), 它們從所述總線上由任何附屬的SIMD協(xié)處理器來接收。在這種情況下,SIMD協(xié)處理器161
9將接受并執(zhí)行發(fā)送給它的任何所接收的SIMD協(xié)處理器指令。數(shù)據(jù)可經(jīng)由無線接口 169來接收,以供SIMD協(xié)處理器指令進行處理。對于一個實 例,可采取數(shù)字信號的形式來接收語音通信,其可由SIMD協(xié)處理器指令進行處理,以再生 (regenerate)表示語音通信的數(shù)字音頻樣本。對于另一個實例,可采取數(shù)字比特流的形式 來接收壓縮音頻和/或視頻,其可由SIMD協(xié)處理器指令進行處理,以再生數(shù)字音頻樣本和 /或運動視頻幀。對于處理核心170的一個實施例,主處理器166和SIMD協(xié)處理器161集 成到包括執(zhí)行單元162、寄存器文件集合164和解碼器165的單個處理核心170中,以識別 包括SIMD點積指令在內(nèi)的指令集163的指令。圖2是根據(jù)本發(fā)明的一個實施例的處理器200的微體系結(jié)構(gòu)的框圖,所述處理器 包括執(zhí)行點積指令的邏輯電路。對于點積指令的一個實施例,該指令可將第一數(shù)據(jù)元素與 第二數(shù)據(jù)元素相乘,并且將該乘積與第三和第四數(shù)據(jù)元素之積相加。在一些實施例中,點積 指令可實現(xiàn)成對于具有字節(jié)、字、雙字、四字等大小以及諸如單和雙精度整數(shù)及浮點數(shù)據(jù)類 型之類的數(shù)據(jù)類型的數(shù)據(jù)元素進行操作。在一個實施例中,有序前端201是處理器200的 組成部分,它取出待執(zhí)行的宏指令,并對它們進行準備以供之后在處理器流水線中使用。前 端201可包括若干單元。在一個實施例中,指令預取器226從存儲器中取出宏指令,并將 其饋送到指令解碼器228,指令解碼器228轉(zhuǎn)而將這些宏指令解碼為稱作微指令或微操作 (又稱作micro op或μ op)的機器可執(zhí)行的原語。在一個實施例中,追蹤高速緩存(trace cache) 230取出解碼后的μ op,并將其組裝為μ op隊列234中的程序排序序列或路線 (trace)供執(zhí)行。當追蹤高速緩存230遇到復雜宏指令時,微碼ROM 232提供完成該操作所 需的μ op ο許多宏指令被轉(zhuǎn)換為單個微操作,而其它的則需要若干微操作來完成整個操作。 在一個實施例中,若需要四個以上微操作來完成宏指令,則解碼器228訪問微碼ROM 232來 對宏指令進行處理。對于一個實施例,可將打包點積指令解碼為少量微操作以在指令解碼 器228上進行處理。在另一個實施例中,若需要多個微操作來完成該操作,則打包點積算法 的指令可存儲在微碼ROM 232中。追蹤高速緩存230參照入口點可編程邏輯陣列(PLA)來 確定用于讀取微碼ROM 232中的點積算法的微碼序列的正確微指令指針。在微碼ROM 232 完成當前宏指令的定序(sequencing)微操作之后,機器的前端201繼續(xù)從追蹤高速緩存 230中取出微操作。某種SIMD和其它多媒體類型的指令被看作復雜指令。大多數(shù)浮點相關(guān)的指令也 是復雜指令。因此,當指令解碼器228遇到復雜宏指令時,在適當位置上對微碼ROM 232進 行訪問,以檢索那個宏指令的微碼序列。將執(zhí)行那個宏指令所需的各個微操作傳送給無序 執(zhí)行引擎203,以在適當?shù)恼麛?shù)和浮點執(zhí)行單元上執(zhí)行。無序執(zhí)行引擎203是在其中準備微指令供執(zhí)行的單元。無序執(zhí)行邏輯具有多個緩 沖器以在微指令沿流水線前進并被安排執(zhí)行時對所述微指令的流程進行平滑處理及重新 排序來優(yōu)化性能。分配器邏輯分配各μ op執(zhí)行所需的機器緩沖器和資源。寄存器重命名 邏輯將邏輯寄存器重命名到寄存器文件的條目上。在以下指令調(diào)度器之前,分配器還分配 兩個μ op隊列之一中的各μ op的條目,所述兩個隊列中的一個用于存儲器操作,一個用于 非存儲器操作存儲器調(diào)度器,快速調(diào)度器202,慢速/通用浮點調(diào)度器204,以及簡單浮點 調(diào)度器206。μ op調(diào)度器202、204、206根據(jù)它們的相關(guān)輸入寄存器操作數(shù)源的預備狀態(tài)以及μ OP完成其操作所需的執(zhí)行資源的可用性來確定何時μ OP準備好執(zhí)行。該實施例的快 速調(diào)度器202可在主時鐘周期的每一半上進行調(diào)度,而其它調(diào)度器在每個主處理器時鐘周 期只可調(diào)度一次。調(diào)度器對分配端口進行仲裁,以調(diào)度μ OP來執(zhí)行。寄存器文件208、210位于調(diào)度器202、204、206與執(zhí)行塊211中的執(zhí)行單元212、 214、216、218、220、222、224之間。存在分別用于整數(shù)和浮點操作的獨立寄存器文件208、 210。該實施例的各寄存器文件208、210還包括旁路網(wǎng)絡(bypass network),它可向新的相 關(guān)μ op分流(bypass)或轉(zhuǎn)發(fā)還未寫入寄存器文件的剛完成的結(jié)果。整數(shù)寄存器文件208 和浮點寄存器文件210還能互相傳送數(shù)據(jù)。對于一個實施例,整數(shù)寄存器文件208被分為 兩個獨立寄存器文件,一個寄存器文件用于數(shù)據(jù)的低階32位,而第二寄存器文件用于數(shù)據(jù) 的高階32位。一個實施例的浮點寄存器文件210具有128位寬的條目,因為浮點指令通常 具有從64到128位寬的操作數(shù)。執(zhí)行塊211包含執(zhí)行單元212、214、216、218、220、222、224,指令實際上在這些執(zhí) 行單元中執(zhí)行。該部分包括寄存器文件208、210,它們存儲微指令需要執(zhí)行的整數(shù)和浮點 數(shù)據(jù)操作數(shù)值。該實施例的處理器200包括多個執(zhí)行單元地址生成單元(AGU)212,AGU 214,快速ALU 216,快速ALU 218,慢速ALU 220,浮點ALU 222,浮點移動單元224。對于該 實施例,浮點執(zhí)行塊222、224執(zhí)行浮點、MMX、SIMD和SSE操作。該實施例的浮點ALU 222 包括64位除64位浮點除法器,以執(zhí)行除法、平方根及求余(remainder)微操作。對于本發(fā) 明的實施例,涉及浮點值的任何動作采用浮點硬件進行。例如,整數(shù)格式與浮點格式之間的 轉(zhuǎn)換涉及浮點寄存器文件。類似地,浮點除法操作在浮點除法器上進行。另一方面,非浮點 數(shù)值和整數(shù)類型采用整數(shù)硬件資源來處理。非常頻繁的簡單ALU運算轉(zhuǎn)到高速ALU執(zhí)行單 元216、218。該實施例的快速ALU 216、218可采用半個時鐘周期的有效等待時間來執(zhí)行快 速運算。對于一個實施例,大多數(shù)復雜整數(shù)操作轉(zhuǎn)到慢速ALU 220,因為慢速ALU 220包括 用于長等待時間類型的操作的整數(shù)執(zhí)行硬件,所述操作例如乘數(shù)、移位、標志(flag)邏輯 和分支處理。存儲器加載/存儲操作由AGU 212、214執(zhí)行。對于該實施例,在對64位數(shù)據(jù) 操作數(shù)執(zhí)行整數(shù)操作的上下文中描述整數(shù)ALU 216、218、220。在備選實施例中,ALU 216、 218、220可被實現(xiàn)為支持包括16、32、128、256等的各種數(shù)據(jù)位。類似地,浮點單元222、224 可被實現(xiàn)為支持具有各種寬度的位的一系列操作數(shù)。對于一個實施例,結(jié)合SIMD和多媒體 指令,浮點單元222、224可對128位寬的打包數(shù)據(jù)操作數(shù)進行操作。在該實施例中,4 0 調(diào)度器202、204、206在父加載已經(jīng)完成執(zhí)行之前分派 (dispatch)相關(guān)操作。由于μ op在處理器200中推測地調(diào)度和執(zhí)行,所以處理器200還包 括處理存儲器未命中的邏輯。若數(shù)據(jù)加載在數(shù)據(jù)高速緩存中未命中,則在流水線中可能存 在為調(diào)度器留下了暫時不正確數(shù)據(jù)的執(zhí)行中(in flight)相關(guān)操作。重放(Mplay)機構(gòu) 跟蹤并重新執(zhí)行采用不正確數(shù)據(jù)的指令。只有相關(guān)操作才需要被重放,而允許不相關(guān)操作 完成。處理器的一個實施例的調(diào)度器和重放機構(gòu)還設計成捕捉點積操作的指令序列。術(shù)語“寄存器”在本文中用來表示用作標識操作數(shù)的宏指令的一部分的板載 (on-board)處理器存儲單元。換言之,本文提到的寄存器是從處理器外部(從程序員的角 度)可見的。但是,實施例的寄存器的含義不應當限于特定類型的電路。而是,實施例的寄 存器只需要能夠存儲和提供數(shù)據(jù)以及執(zhí)行本文所述的功能。本文所述的寄存器可通過處理 器中的電路采用任何數(shù)量的不同技術(shù)來實現(xiàn),例如專用物理寄存器、采用寄存器重命名的動態(tài)分配物理寄存器、專用和動態(tài)分配物理寄存器的組合等。在一個實施例中,整數(shù)寄存 器存儲32位整數(shù)數(shù)據(jù)。一個實施例的寄存器文件還包含用于打包數(shù)據(jù)的16個XMM和通 用寄存器、8個多媒體(例如“EM64T”加法)多媒體SIMD寄存器。對于以下論述,寄存器 被理解為設計成保存打包數(shù)據(jù)的數(shù)據(jù)寄存器,例如采用Intel Corporation (Santa Clara, California)開發(fā)的MMX技術(shù)實現(xiàn)的微處理器中的64位寬MMX 寄存器(在某些情況下 又稱作“mm”寄存器)??捎糜谡麛?shù)和浮點這兩種形式的這些MMX寄存器可與伴隨SIMD和 SSE指令的打包數(shù)據(jù)元素配合操作。類似地,與SSE2、SSE3、SSE4或者以上(一般性地稱作 “SSEx”)的技術(shù)有關(guān)的128位寬XMM寄存器也可用于保存這類打包數(shù)據(jù)操作數(shù)。在該實施 例中,在存儲打包數(shù)據(jù)和整數(shù)數(shù)據(jù)時,寄存器無需區(qū)分這兩種數(shù)據(jù)類型。在以下附圖的實例中,描述了多個數(shù)據(jù)操作數(shù)。圖3A示出根據(jù)本發(fā)明的一個實施 例的多媒體寄存器中的各種打包數(shù)據(jù)類型表示。圖3A示出128位寬操作數(shù)的打包字節(jié)310、 打包字320和打包雙字(dword)330的數(shù)據(jù)類型。該實例的打包字節(jié)格式310是128位長 的,并包含16個打包字節(jié)數(shù)據(jù)元素。字節(jié)在這里定義為8位的數(shù)據(jù)。各字節(jié)數(shù)據(jù)元素的信 息是這樣存儲的字節(jié)0存儲在0至7位,字節(jié)1存儲在8至15位,字節(jié)2存儲在16至23 位,以及最后,字節(jié)15存儲在120至127位。這樣,寄存器中的所有可用的位都被使用。這 種存儲設置增加了處理器的存儲效率。另外,通過訪問16個數(shù)據(jù)元素,現(xiàn)在可并行地對16 個數(shù)據(jù)元素執(zhí)行一個操作。一般來說,數(shù)據(jù)元素是與相同長度的其它數(shù)據(jù)元素一起存儲在單個寄存器或存儲 單元中的一段單獨的數(shù)據(jù)。在與SSEx技術(shù)相關(guān)的打包數(shù)據(jù)序列中,XMM寄存器中存儲的數(shù) 據(jù)元素的數(shù)量是128位除以單獨的數(shù)據(jù)元素的位的長度。類似地,在與MMX和SSE技術(shù)相 關(guān)的打包數(shù)據(jù)序列中,MMX寄存器中存儲的數(shù)據(jù)元素的數(shù)量是64位除以單獨的數(shù)據(jù)元素的 位的長度。雖然圖3A所示的數(shù)據(jù)類型為128位長,但是,本發(fā)明的實施例還可與64位寬或 者其它大小的操作數(shù)配合操作。該實例的打包字格式320是128位長的,并且包含8個打 包字數(shù)據(jù)元素。各打包字包含16位的信息。圖3A的打包雙字格式330是128位長,并且 包含四個打包雙字數(shù)據(jù)元素。各打包雙字數(shù)據(jù)元素包含32位的信息。打包四字是128位 長的,并包含兩個打包四字數(shù)據(jù)元素。圖3B示出備選的寄存器中數(shù)據(jù)存儲格式。各打包數(shù)據(jù)可包括一個以上獨立數(shù)據(jù) 元素。示出三種打包數(shù)據(jù)格式,即打包半字341、打包單字342和打包雙字343。打包半字 341、打包單字342和打包雙字343的一個實施例包含定點數(shù)據(jù)元素。對于一備選實施例, 打包半字341、打包單字342和打包雙字343這三者中的一個或多個可包含浮點數(shù)據(jù)元素。 打包半字341的一個備選實施例是包含八個16位數(shù)據(jù)元素的128位長的。打包單字342的 一個實施例為128位長,并且包含四個32位數(shù)據(jù)元素。打包雙字343的一個實施例為128 位長,并且包含兩個64位數(shù)據(jù)元素。大家會理解,這類打包數(shù)據(jù)格式還可擴展到其它寄存 器長度,例如擴展到96位、160位、192位、224位、256位或者更大的長度。圖3C示出根據(jù)本發(fā)明的一個實施例的多媒體寄存器中的各種有符號和無符號打 包數(shù)據(jù)類型表示。無符號打包字節(jié)表示344示出在SIMD寄存器中的無符號打包字節(jié)的存 儲。各字節(jié)數(shù)據(jù)元素的信息是這樣存儲的字節(jié)零存儲在零至七位,字節(jié)一存儲在八至十五 位,字節(jié)二存儲在十六至二十三位,以及最后,字節(jié)十五存儲在一百二十至一百二十七位。 這樣,寄存器中的所有可用的位都被使用。這種存儲設置可增加處理器的存儲效率。另外,
12通過訪問十六個數(shù)據(jù)元素,現(xiàn)在可通過并行方式對十六個數(shù)據(jù)元素執(zhí)行一個操作。有符號 打包字節(jié)表示345示出有符號打包字節(jié)的存儲。注意,每一個字節(jié)數(shù)據(jù)元素的第八位是符 號指示符。無符號打包字表示346示出如何在SIMD寄存器中存儲字七至字零。有符號打 包字表示347與無符號打包字的寄存器內(nèi)(in-register)表示346相似。注意,各字數(shù)據(jù) 元素的第十六位是符號指示符。無符號打包雙字表示348示出如何存儲雙字數(shù)據(jù)元素。有 符號打包雙字表示349與無符號打包雙字的寄存器內(nèi)表示348相似。注意,必要的符號位 是各雙字數(shù)據(jù)元素的第三十二位。圖3D是對操作編碼(操作碼)格式360的一個實施例的描述,其中具有三十二或 者更多位,以及寄存器/存儲器操作數(shù)尋址模式符合在以下文獻中描述的一種類型的操作 碼格式“IA-32 Intel體系結(jié)構(gòu)軟件開發(fā)人員手冊第2卷指令集參考”,可在萬維網(wǎng)(www) StJ intel. com/design/litcentr Intel Corporation (Santa Clara, CA)獲得0 在一f 實施例中,點積操作可通過字段361和362這兩者中的一個或多個來編碼??勺R別每個指 令總共兩個操作數(shù)位置,包括總共兩個源操作數(shù)標識符364和365。對于點積指令的一個 實施例,目標操作數(shù)標識符366與源操作數(shù)標識符364相同,而在其它實施例中,它們是不 同的。對于一備選實施例,目標操作數(shù)標識符366與源操作數(shù)標識符365相同,而在其它實 施例中,它們是不同的。在點積指令的一個實施例中,通過源操作數(shù)標識符364和365標識 的源操作數(shù)之一被點積操作的結(jié)果重寫,而在其它實施例中,標識符364對應于源寄存器 元件,以及標識符365對應于目標寄存器元件。對于點積指令的一個實施例,操作數(shù)標識符 364和365可用來標識32位或64位源和目標操作數(shù)。圖3E是對具有四十或更多位的另一種備選操作編碼(操作碼)格式370的描述。 操作碼格式370與操作碼格式360 —致,并包括任選的前置字節(jié)378。點積操作的類型可通 過字段378、371和372這三者中的一個或多個來編碼??赏ㄟ^源操作數(shù)標識符374和375 以及通過前置字節(jié)378來標識每個指令總共兩個操作數(shù)位置。對于點積指令的一個實施 例,前置字節(jié)378可用來標識32位或64位源和目標操作數(shù)。對于點積指令的一個實施例, 目標操作數(shù)標識符376與源操作數(shù)標識符374相同,而在其它實施例中,它們是不同的。對 于一備選實施例,目標操作數(shù)標識符376與源操作數(shù)標識符375相同,而在其它實施例中, 它們是不同的。在一個實施例中,點積操作將操作數(shù)標識符374和375所標識的操作數(shù)之 一與操作數(shù)標識符374和375所標識的另一個操作數(shù)相乘,該點積操作的結(jié)果會重寫所述 操作數(shù)中的一個,而在其它實施例中,標識符374和375所標識的操作數(shù)的點積被寫入另 一個寄存器中的另一個數(shù)據(jù)元素。操作碼格式360和370允許部分由MOD字段363和373 以及由任選的scale-index-base和偏移字節(jié)(displacement byte)指定的寄存器到寄存 器(register to register)、存儲器到寄存器(memory to register)、寄存器通過存儲器 (register by memory)、寄存器通過寄存器(register by register)、寄存器通過立艮口尋址 (register by immediate)、寄存器至Ij存儲器(register to memory)的尋址。接下來看圖3F,在一些備選實施例中,64位單指令多數(shù)據(jù)(SIMD)算術(shù)運算可通過 協(xié)處理器數(shù)據(jù)處理(CDP)指令來執(zhí)行。操作編碼(操作碼)格式380示出具有CDP操作碼 字段382和389的一種這樣的⑶P指令。對于點積操作的備選實施例,⑶P指令的類型可 通過字段383、384、387和388這四者中的一個或多個來編碼??蓸俗R每個指令總共三個操 作數(shù)位置,包括總共兩個源操作數(shù)標識符385、390和一個目標操作數(shù)標識符386。協(xié)處理器的一個實施例可對8、16、32和64位的值進行操作。對于一個實施例,對整數(shù)數(shù)據(jù)元素執(zhí)行 點積操作。在一些實施例中,可采用選擇字段381來有條件地執(zhí)行點積指令。對于一些點 積指令,源數(shù)據(jù)大小可通過字段383來編碼。在點積指令的一些實施例中,可在SIMD字段 上進行零(Z)、負值(N)、進位(C)和溢出(V)檢測。對于一些指令,飽和的類型可通過字段 384來編碼。圖4是根據(jù)本發(fā)明對打包數(shù)據(jù)操作數(shù)執(zhí)行點積操作的邏輯的一個實施例的框圖。 本發(fā)明的實施例可實現(xiàn)為與諸如以上所述之類的各種類型的操作數(shù)配合工作。對于一種實 現(xiàn),根據(jù)本發(fā)明的點積操作實現(xiàn)為對指定數(shù)據(jù)類型進行操作的指令集。例如,提供點積打包 單精度(DPPS)指令以確定包括整數(shù)和浮點在內(nèi)的32位數(shù)據(jù)類型的點積。類似地,提供點 積打包雙精度(DPPD)指令以確定包括整數(shù)和浮點在內(nèi)的64位數(shù)據(jù)類型的點積。雖然這些 指令具有不同名稱,但它們執(zhí)行的一般點積操作是相似的。為了簡潔起見,以下論述和實例 在處理數(shù)據(jù)元素的點積指令的上下文中進行。在一個實施例中,點積指令識別各種信息,包括第一數(shù)據(jù)操作數(shù)DATA A 410的 標識符和第二數(shù)據(jù)操作數(shù)DATA B 420的標識符,以及點積操作的所得結(jié)果RESULTANT440 的標識符(在一個實施例中,它可能與第一數(shù)據(jù)操作數(shù)標識符之一相同)。對于以下論述, DATA A、DATA B和RESULTANT—般稱作操作數(shù)或數(shù)據(jù)塊,但不限于此,并且還包括寄存器、 寄存器文件和存儲單元。在一個實施例中,將各點積指令(DPPS、DPPD)解碼為一個微操作。 在一備選實施例中,可將各指令解碼為各種數(shù)量的微操作,以對數(shù)據(jù)操作數(shù)執(zhí)行點積操作。 對于該實例,操作數(shù)410、420是在具有字寬數(shù)據(jù)元素的源寄存器/存儲器中存儲的128位 寬的信息段。在一個實施例中,操作數(shù)410、420保存在128位長的SIMD寄存器(如128 位SSEx XMM寄存器)中。對于一個實施例,RESULTANT 440也是XMM數(shù)據(jù)寄存器。此外, RESULTANT 440也可能是與源操作數(shù)之一相同的寄存器或存儲單元。根據(jù)具體實現(xiàn),操作 數(shù)和寄存器可能是諸如32、64和256位等的其它長度,并且具有字節(jié)、雙字或四字大小的數(shù) 據(jù)元素。雖然該實例的數(shù)據(jù)元素為字大小,但是,同樣的概念可擴展到字節(jié)和雙字大小的元 素。在其中的數(shù)據(jù)操作數(shù)為64位寬的一個實施例中,MMX寄存器用來代替XMM寄存器。該實例中的第一操作數(shù)410包括八個數(shù)據(jù)元素的集合A3、A2、Al和AO。各個單 獨的數(shù)據(jù)元素對應于所得結(jié)果440中的數(shù)據(jù)元素位置。第二操作數(shù)420包括八個數(shù)據(jù)段的 另一個集合B3、B2、B1和B0。在這里,數(shù)據(jù)段具有相等長度,并且各包括數(shù)據(jù)的單字(32 位)。但是,數(shù)據(jù)元素和數(shù)據(jù)元素位置可具有與字不同的其它粒度(granularity)。若各數(shù) 據(jù)元素為字節(jié)(8位)、雙字(32位)或四字(64位),則128位操作數(shù)分別具有十六字節(jié)寬、 四個雙字寬或者兩個四字寬的數(shù)據(jù)元素。本發(fā)明的實施例不限于特定長度的數(shù)據(jù)操作數(shù)或 數(shù)據(jù)段,而是可能對于各實現(xiàn)來適當?shù)卮_定大小。操作數(shù)410、420可駐留在寄存器或存儲單元或寄存器文件或者它們的組合中。數(shù) 據(jù)操作數(shù)410、420與點積指令一起被發(fā)送到處理器中的執(zhí)行單元的點積計算邏輯430。在 一個實施例中,當點積指令到達執(zhí)行單元時,先前應當已經(jīng)在處理器流水線中對指令進行 了解碼。因此,點積指令可能采取微操作(μορ)或者某種其它已解碼格式的形式。對于一 個實施例,在點積計算邏輯430上接收兩個數(shù)據(jù)操作數(shù)410、420。點積計算邏輯430產(chǎn)生第 一操作數(shù)410的兩個數(shù)據(jù)元素的第一乘積,以及處于第二操作數(shù)420的對應數(shù)據(jù)元素位置 中的兩個數(shù)據(jù)元素的第二乘積,以及將第一和第二乘積之和存儲在所得結(jié)果440中的適當位置中,所得結(jié)果可能與第一或第二操作數(shù)對應于相同的存儲單元。在一個實施例中,第一 和第二操作數(shù)中的數(shù)據(jù)元素為單精度(例如32位),而在其它實施例中,第一和第二操作數(shù) 中的數(shù)據(jù)元素為雙精度(例如64位)。對于一個實施例,并行處理所有數(shù)據(jù)位置的數(shù)據(jù)元素。在另一個實施例中,一次 可一起處理某個部分的數(shù)據(jù)元素位置。在一個實施例中,根據(jù)是執(zhí)行DPPD還是DPPS,所得 結(jié)果440分別包括兩個或四個可能的點積結(jié)果位置dot-productA31_q、dot_productA63_32、 D0T-PR0DUCTA95_64、D0T-PR0DUCTA127_96 (對于 DPPS 指令的結(jié)果),以及 dot-PRODUCTA63_q、 D0T-PR0DUCTa127_64 (對于 DPPD 指令的結(jié)果)。在一個實施例中,所得結(jié)果440中的點積結(jié)果的位置取決于與點積指令相關(guān)聯(lián)的 選擇字段。例如,對于DPPS指令,所得結(jié)果440中的點積結(jié)果的位置在選擇字段等于第一值 時為DOT-PRODUCTa3K,在選擇字段等于第二值時為DOT-PRODUCTA63_32,在選擇字段等于第三 值時為DOT-PRODUCTA95_64,以及在選擇字段等于第四值時為DOT-PRODUCTa127_64。在DPPD指令 的情況下,所得結(jié)果440中的點積結(jié)果的位置在選擇字段為第一值時是D0T-PR0DUCTA63_q, 在選擇字段為第二值時是DOT-PRODUCTa127_64。圖5A示出根據(jù)本發(fā)明的一個實施例的點積指令的操作。具體來說,圖5A示出根 據(jù)一個實施例的DPPS指令的操作。在一個實施例中,圖5A所示的實例的點積操作實質(zhì)上 可由圖4的點積計算邏輯430來執(zhí)行。在其它實施例中,圖5A的點積操作可由包括硬件、 軟件或者它們的某種結(jié)合在內(nèi)的其它邏輯來執(zhí)行。在其它實施例中,圖4、圖5A和圖5B所示的操作可按照任何組合或順序來執(zhí)行,以 產(chǎn)生點積結(jié)果。在一個實施例中,圖5A示出包括總共存儲各為32位的四個單精度浮點或整 數(shù)值A0-A3的存儲單元的128位源寄存器501a。類似地,圖5A中所示的是包括總共存儲各 為32位的四個單精度浮點或整數(shù)值B0-B3的存儲單元的128位目標寄存器505a。在一個實 施例中,源寄存器中存儲的各值A0-A3與目標寄存器的對應位置中存儲的對應值B0-B3相 乘,以及各所得值A0*B0、A1*B1、A2*B2、A3*B3(本文中稱作“乘積”)存儲在包括總共存儲各 為32位的四個單精度浮點或整數(shù)值的存儲單元的第一 128位臨時寄存器(“TEMPl”)510a 的對應存儲單元中。在一個實施例中,將乘積對相加在一起,以及各個和數(shù)(本文中稱作“中間和數(shù)”) 存儲到第二 128位臨時寄存器(“TEMP2”) 515a和第三128位臨時寄存器(“TEMP3,,) 520a 的存儲單元中。在一個實施例中,乘積存儲到第一和第二臨時寄存器的最低有效32位元素 存儲單元中。在其它實施例中,它們可存儲在第一和第二臨時寄存器的其它元素存儲單元 中。此外,在一些實施例中,乘積可存儲在相同寄存器(如第一或第二臨時寄存器)中。在一個實施例中,中間和數(shù)相加在一起(本文中稱作“最終和數(shù)”),并存儲到第四 128位臨時寄存器(“TEMP4”)525a的存儲單元中。在一個實施例中,最終和數(shù)存儲到TEMP4 的最低有效32位存儲單元中,而在其它實施例中,最終和數(shù)存儲到TEMP4的其它存儲單元 中。最終和數(shù)然后存儲到目標寄存器505a的存儲單元中。最終和數(shù)將要存儲到其中的準 確存儲單元可取決于點積指令中可配置的變量。在一個實施例中,包含多個位存儲單元的 立即字段(“IMMy[x]”)可用來確定最終和數(shù)將要存儲到其中的目標寄存器存儲單元。例 如,在一個實施例中,若IMM8
字段包含第一值(例如“1”),則最終和數(shù)存儲到目標寄存 器的存儲單元BO中,若IMM8[1]字段包含第一值(例如“1”),則最終和數(shù)存儲到存儲單元
15Bl中,若IMM8[2]字段包含第一值(例如“1”),則最終和數(shù)存儲到目標寄存器的存儲單元 B2中,以及若IMM8[3]字段包含第一值(例如“1”),則最終和數(shù)存儲到目標寄存器的存儲 單元B3中。在其它實施例中,其它立即字段可用來確定最終和數(shù)將要存儲到其中的目標寄 存器中的存儲單元。在一個實施例中,立即字段可用來控制各乘法和加法運算是否在圖5A所示的操 作中執(zhí)行。例如,IMM8[4]可用來表明(例如通過設置為“0”或“1”)A0是否將與BO相乘 且結(jié)果被存儲到TEMPI中。類似地,IMM8[5]可用來表明(例如通過設置為“0”或“ 1”)Al 是否將與Bl相乘且結(jié)果被存儲到TEMPI中。同樣,IMM8[6]可用來表明(例如通過設置為 “0”或“1”)A2是否將與B2相乘且結(jié)果被存儲到TEMPI中。最后,IMM8[7]可用來表明(例 如通過設置為“0”或“1”)A3是否將與Β3相乘且結(jié)果被存儲到TEMPI中。圖5B示出根據(jù)一個實施例的DPPD指令的操作。DPPS與DPPD指令之間的一個差 別在于,DPPD對雙精度浮點和整數(shù)值(例如64位值)而不是單精度值進行操作。相應地, 在一個實施例中,執(zhí)行DPPD指令與執(zhí)行DPPS指令相比,存在更少要管理的數(shù)據(jù)元素,因此 涉及更少的中間操作和存儲裝置(例如寄存器)。在一個實施例中,圖5B示出包括總共存儲各為64位的兩個雙精度浮點或整數(shù)值 AO-Al的存儲單元的128位源寄存器501b。類似地,圖5B中所示的是包括總共存儲各為64 位的兩個雙精度浮點或整數(shù)值BO-Bl的存儲單元的128位目標寄存器505b。在一個實施 例中,源寄存器中存儲的各個值AO-Al與目標寄存器的對應位置中存儲的對應值BO-Bl相 乘,以及各所得結(jié)果值A0*B0、A1*B1 (本文中稱作“乘積”)存儲在包括總共存儲各為64位 的兩個雙精度浮點或整數(shù)值的存儲單元的第一 128位臨時寄存器(“TEMPl”)510b的對應 存儲單元中。在一個實施例中,乘積對相加在一起,以及各個和數(shù)(本文中稱作“最終和數(shù)”)存 儲到第二 128位臨時寄存器(“TEMP2”)515b的存儲單元中。在一個實施例中,乘積與最終 和數(shù)分別存儲到第一和第二臨時寄存器的最低有效64位元素存儲單元中。在其它實施例 中,它們可存儲在第一和第二臨時寄存器的其它元素存儲單元中。在一個實施例中,最終和數(shù)存儲到目標寄存器505b的存儲單元中。最終和數(shù)將要 存儲到其中的準確存儲單元可取決于點積指令中可配置的變量。在一個實施例中,包含多 個位存儲單元的立即字段(“IMMy[x]”)可用來確定最終和數(shù)將要存儲到其中的目標寄存 器存儲單元。例如,在一個實施例中,若IMM8
字段包含第一值(例如“1”),則最終和數(shù) 存儲到目標寄存器的存儲單元BO中,若IMM8[1]字段包含第一值(例如“1”),則最終和數(shù) 存儲到存儲單元Bl中。在其它實施例中,其它立即字段可用來確定最終和數(shù)將要存儲到其 中的目標寄存器中的存儲單元。在一個實施例中,立即字段可用來控制各乘法運算是否在圖5B所示的點積操作 中執(zhí)行。例如,IMM8[4]可用來表明(例如通過設置為“0”或“1”)A0是否將與BO相乘且 結(jié)果被存儲到TEMPI中。類似地,IMM8[5]可用來表明(例如通過設置為“0”或“ 1”)Al是 否將與Bl相乘且結(jié)果被存儲到TEMPI中。在其它實施例中,可采用用于確定是否執(zhí)行點積 的乘法運算的其它控制技術(shù)。圖6A是根據(jù)一個實施例對單精度整數(shù)或浮點值執(zhí)行點積操作的電路600a的框 圖。該實施例的電路600a通過乘法器610a-613a將兩個寄存器601a和605a的對應單精度元素相乘,其結(jié)果可采用立即字段IMM8 [7:4]由復用器615a-618a進行選擇。作為備選的方 案,復用器615a-618a可選擇零值而不是各元素的乘法運算的對應乘積。復用器615a-618a 選擇的結(jié)果然后由加法器620a相加在一起,且相加的結(jié)果被存儲在結(jié)果寄存器630a的單 元的任一個中,根據(jù)立即字段IMM8 [3 0]的值,所述結(jié)果寄存器采用復用器625a-628a來選 擇來自加法器620a的對應和數(shù)結(jié)果。在一個實施例中,若和數(shù)結(jié)果沒有被選擇來存儲在結(jié) 果單元中,則復用器625a-628a可選擇零值來填充結(jié)果寄存器630a的單元。在其它實施例 中,更多加法器可用來產(chǎn)生各個乘積之和。此外,在一些實施例中,中間存儲單元可用來存 儲乘積或和數(shù)結(jié)果,直到對它們進行進一步操作為止。圖6B是根據(jù)一個實施例對單精度整數(shù)或浮點值執(zhí)行點積操作的電路600b的框 圖。該實施例的電路600b通過乘法器610b、612b將兩個寄存器601b和605b的對應單精 度元素相乘,其結(jié)果可采用立即字段IMM8[7:4]由復用器615b、617b進行選擇。作為備選 的方案,復用器615b、618b可選擇零值而不是各元素的乘法運算的對應乘積。復用器615b、 618b選擇的結(jié)果然后由加法器620b相加在一起,且相加的結(jié)果被存儲在結(jié)果寄存器630b 的單元的任一個中,根據(jù)立即字段IMM8 [3 0]的值,所述結(jié)果寄存器采用復用器625b、627b 來選擇來自加法器620b的對應和數(shù)結(jié)果。在一個實施例中,若和數(shù)結(jié)果沒有被選擇來存儲 在結(jié)果單元中,則復用器625b-627b可選擇零值來填充結(jié)果寄存器630b的單元。在其它實 施例中,更多加法器可用來產(chǎn)生各個乘積之和。此外,在一些實施例中,中間存儲單元可用 來存儲乘積或和數(shù)結(jié)果,直到對它們進行進一步操作為止。圖7A是根據(jù)一個實施例執(zhí)行DPPS指令的操作的偽碼表示。圖7A所示的偽碼表 明,源寄存器(“SRC”)中在31-0位中存儲的單精度浮點或整數(shù)值將與目標寄存器(“DEST”) 中在31-0位中存儲的單精度浮點或整數(shù)值相乘,且僅當立即字段(“IMM8[4]”)中存儲的 立即值等于“1”時,才將結(jié)果存儲在臨時寄存器(“TEMPI”)的31-0位中。否則,位存儲單 元31-0可包含空值,如全零。圖7A中還示出了偽碼來表明,SRC寄存器中在63_32位中存儲的單精度浮點或整 數(shù)值將與DEST寄存器中在63-32位中存儲的單精度浮點或整數(shù)值相乘,且僅當立即字段 (“IMM8[5]”)中存儲的立即值等于“1”時,才將結(jié)果存儲在TEMPI寄存器的63-32位中。 否則,位存儲單元63-32可包含空值,如全零。類似地,圖7A中還示出了偽碼來表明,SRC寄存器中在95-64位中存儲的單精度 浮點或整數(shù)值將與DEST寄存器中在95-64位中存儲的單精度浮點或整數(shù)值相乘,且僅當立 即字段(“IMM8[6]”)中存儲的立即值等于“1”時,才將結(jié)果存儲在TEMPI寄存器的95-64 位中。否則,位存儲單元95-64可包含空值,如全零。最后,圖7A中還示出了偽碼來表明,SRC寄存器中在127-96位中存儲的單精度浮 點或整數(shù)值將與DEST寄存器中在127-96位中存儲的單精度浮點或整數(shù)值相乘,且僅當立 即字段(“IMM8[7]”)中存儲的立即值等于“1”時,才將結(jié)果存儲在TEMPI寄存器的127-96 位中。否則,位存儲單元127-96可包含空值,如全零。接下來,圖7A示出TEMPI的31_0位被加到TEMPI的63_32位,且結(jié)果被存儲到第 二臨時寄存器(“TEMP2”)的位存儲單元31-0中。類似地,TEMPI的95-64位被加到TEMPI 的127-96位,且結(jié)果被存儲到第三臨時寄存器(“TEMP3”)的位存儲單元31-0中。最后, TEMP2的31-0位被加到TEMP3的31-0位,且結(jié)果被存儲到第四臨時寄存器(“TEMP4”)的位存儲單元31-0中。在一個實施例中,臨時寄存器中存儲的數(shù)據(jù)然后被存儲到DEST寄存器中。要存儲 數(shù)據(jù)的DEST寄存器中的具體位置可取決于DPPS指令中的其它字段,如IMM8 [χ]中的字段。 具體來說,圖7Α說明,在一個實施例中,ΤΕΜΡ4的31-0位在ΙΜΜ8
等于“ 1 ”時存儲到DEST 位存儲單元31-0中,在ΙΜΜ8[1]等于“1”時存儲到DEST位存儲單元63-32中,在ΙΜΜ8[2] 等于“ 1 ”時存儲到DEST位存儲單元95-64中,或者在ΙΜΜ8 [3]等于“ 1 ”時存儲到DEST位 存儲單元127-96中。否則,對應的DEST位存儲單元將包含空值,如全零。圖7Β是根據(jù)一個實施例執(zhí)行DPPD指令的操作的偽碼表示。圖7Β所示的偽碼表 明,源寄存器(“SRC”)中在63-0位中存儲的單精度浮點或整數(shù)值將與目標寄存器(“DEST”) 中在63-0位中存儲的單精度浮點或整數(shù)值相乘,且僅當立即字段(“ΙΜΜ8[4]”)中存儲的 立即值等于“1”時,才將結(jié)果存儲在臨時寄存器(“TEMPI”)的63-0位中。否則,位存儲單 元63-0可包含空值,如全零。圖7B中還示出了偽碼來表明,SRC寄存器中在127-64位中存儲的單精度浮點或 整數(shù)值將與DEST寄存器中在127-64位中存儲的單精度浮點或整數(shù)值相乘,且僅當立即字 段(“IMM8[5]”)中存儲的立即值等于“1”時,才將結(jié)果存儲在TEMPI寄存器的127-64位 中。否則,位存儲單元127-64可包含空值,如全零。接下來,圖7B示出,TEMPI的63_0位被加到TEMPI的127-64位,且結(jié)果被存儲到 第二臨時寄存器(“TEMP2”)的位存儲單元63-0中。在一個實施例中,臨時寄存器中存儲 的數(shù)據(jù)然后可存儲到DEST寄存器中。要存儲數(shù)據(jù)的DEST寄存器中的具體位置可取決于 DPPS指令中的其它字段,如IMM8[x]中的字段。具體地說,圖7A示出,在一個實施例中,若 IMM8
等于“ 1 ”,則TEMP2的63-0位存儲到DEST位存儲單元63-0中,或者若IMM8 [1]等 于“ 1 ”,則TEMP2的63-0位存儲在DEST位存儲單元127-64中。否則,對應的DEST位存儲 單元將包含空值,如全零。圖7A和圖7B中公開的操作只是可用于本發(fā)明的一個或多個實施例的操作的一種 表示。具體地說,圖7A和圖7B所示的偽碼對應于按照具有128位寄存器的一個或多個處 理器體系結(jié)構(gòu)所執(zhí)行的操作。其它實施例可在具有任何大小的寄存器或者其它類型的存儲 區(qū)的處理器體系結(jié)構(gòu)中執(zhí)行。此外,其它實施例可能不采用與圖7A和圖7B中所示的寄存 器完全相同的寄存器。例如,在一些實施例中,不同數(shù)量的臨時寄存器或者根本沒有寄存器 可用來存儲操作數(shù)。最后,本發(fā)明的實施例可采用任何數(shù)量的寄存器或數(shù)據(jù)類型在眾多處 理器或處理核心之間來執(zhí)行。這樣,公開了用于執(zhí)行點積操作的技術(shù)。雖然在附圖中描述和示出了某些示范性 實施例,但是要理解,這些實施例只是對寬泛的發(fā)明的說明而不是限制,并且本發(fā)明不限于 所示及所述的具體構(gòu)造和設置,因為本領(lǐng)域的技術(shù)人員在研究本公開之后可能會想到其它 各種修改。在例如成長迅速并且不易預見進一步發(fā)展的這樣的技術(shù)領(lǐng)域中,通過實現(xiàn)技術(shù) 發(fā)展來推動,可在不背離本公開的原理或所附權(quán)利要求的范圍的前提下,容易地對所公開 的實施例在設置和細節(jié)方面進行修改。
權(quán)利要求
1.一種執(zhí)行點積操作的處理器,包括 取出器,用于取出點積指令;解碼器,用于對所述取出器取出的點積指令進行解碼; 調(diào)度器,用于對所述點積指令進行調(diào)度;執(zhí)行單元,用于對至少兩個操作數(shù)執(zhí)行所述點積指令,每個操作數(shù)具有第一數(shù)據(jù)類型 的多個打包值,以便生成點積結(jié)果;以及寄存器文件,用于存儲所述至少兩個操作數(shù)和所述點積結(jié)果。
2.如權(quán)利要求1所述的處理器,其中,所述第一數(shù)據(jù)類型為整數(shù)數(shù)據(jù)類型。
3.如權(quán)利要求1所述的處理器,其中,所述第一數(shù)據(jù)類型為浮點數(shù)據(jù)類型。
4.如權(quán)利要求1所述的處理器,其中,所述至少兩個操作數(shù)均具有僅僅兩個打包值。
5.如權(quán)利要求1所述的處理器,其中,所述至少兩個操作數(shù)均具有僅僅四個打包值。
6.如權(quán)利要求1所述的處理器,其中,所述多個打包值的每個為單精度值,并且由32位 來表不。
7.如權(quán)利要求1所述的處理器,其中,所述多個打包值的每個為雙精度值,并且由64位來表不。
8.如權(quán)利要求1所述的處理器,其中,所述至少兩個操作數(shù)和所述點積結(jié)果將被存儲 在存儲多達128位數(shù)據(jù)的所述寄存器文件中的至少兩個寄存器中。
9.如權(quán)利要求1所述的處理器,其中,所述點積指令包括源操作數(shù)指示符、目標操作數(shù)指示符以及至少一個立即值指示符。
10.如權(quán)利要求9所述的處理器,其中,所述源操作數(shù)指示符包括具有存儲多個打包值 的多個元素的所述寄存器文件中的源寄存器的地址。
11.如權(quán)利要求9所述的處理器,其中,所述目標操作數(shù)指示符包括具有存儲多個打包 值的多個元素的所述寄存器文件中的目標寄存器的地址。
12.—種數(shù)據(jù)處理系統(tǒng),包括主處理器,用于執(zhí)行數(shù)據(jù)處理指令流;SIMD協(xié)處理器,用于接受并執(zhí)行所述數(shù)據(jù)處理指令流中的SIMD協(xié)處理器指令; 與處理器耦合的高速緩沖存儲器;和 輸入/輸出系統(tǒng);其中所述指令控制包括與高速緩沖存儲器和輸入/輸出系統(tǒng)進行交互的一般類型的 數(shù)據(jù)處理操作。
全文摘要
本發(fā)明涉及一種用于執(zhí)行點積運算的指令和邏輯。本發(fā)明提供了用于執(zhí)行點積操作的方法、裝置和程序部件。在一個實施例中,裝置包括執(zhí)行第一指令的執(zhí)行資源。響應第一指令,所述執(zhí)行資源將等于至少兩個操作數(shù)的點積的結(jié)果值存儲到某個存儲單元中。
文檔編號G06F9/305GK102004628SQ20101053566
公開日2011年4月6日 申請日期2007年9月20日 優(yōu)先權(quán)日2006年9月20日
發(fā)明者C·德西爾瓦, M·塞科尼, M·布克斯頓, R·佐哈, R·帕塔薩拉蒂, S·欽努帕蒂 申請人:英特爾公司