用于執(zhí)行點(diǎn)積運(yùn)算的指令和邏輯的制作方法
【專利說明】
[0001] 本申請是分案申請,其母案申請的發(fā)明名稱是"用于執(zhí)行點(diǎn)積運(yùn)算的指令和邏 輯",其母案申請的申請日是2007年9月20日,其母案申請的申請?zhí)柺?200710180647. 7。
技術(shù)領(lǐng)域
[0002] 本發(fā)明涉及執(zhí)行數(shù)學(xué)運(yùn)算的處理裝置及相關(guān)軟件和軟件序列的領(lǐng)域。
【背景技術(shù)】
[0003] 計(jì)算機(jī)系統(tǒng)已經(jīng)越來越深入我們的社會。計(jì)算機(jī)的處理能力已經(jīng)提高了各種職業(yè) 的工人的效率和生產(chǎn)力。由于購買和擁有計(jì)算機(jī)的費(fèi)用持續(xù)下降,所以越來越多的消費(fèi)者 能夠利用更新、更快的機(jī)器。此外,許多人由于使用自由而樂于使用筆記本電腦。移動(dòng)計(jì)算 機(jī)使用戶可在離開辦公室或旅行時(shí)輕松地傳輸他們的數(shù)據(jù)以及利用所述移動(dòng)計(jì)算機(jī)進(jìn)行 工作。這種情況在營銷人員、公司管理人員甚至學(xué)生中是常見的。
[0004] 隨著處理器技術(shù)的進(jìn)步,還產(chǎn)生了更新的軟件代碼來在具有這些處理器的機(jī)器上 運(yùn)行。用戶一般預(yù)期并要求來自他們的計(jì)算機(jī)的更高性能,而不管所使用的軟件類型。從 處理器內(nèi)實(shí)際執(zhí)行的指令和操作的種類中可能產(chǎn)生一個(gè)這樣的問題。根據(jù)操作的復(fù)雜度和 /或所需電路的類型,某些類型的操作需要更多時(shí)間來完成。這提供了優(yōu)化在處理器內(nèi)部執(zhí) 行某些復(fù)雜操作的方式的機(jī)會。
[0005]十多年來,媒體應(yīng)用推動(dòng)了微處理器的發(fā)展。實(shí)際上,媒體應(yīng)用推動(dòng)了近年來的大 多數(shù)計(jì)算升級。這些升級主要在消費(fèi)者方面發(fā)生,但是,為了娛樂性增強(qiáng)的教育和通信目 的,在企業(yè)方面也看到顯著的進(jìn)步。然而,未來的媒體應(yīng)用需要更高的計(jì)算要求。因此,將 來的個(gè)人計(jì)算體驗(yàn)在視聽效果方面將更為豐富,并且更容易使用,更重要的是,計(jì)算將與通 信融合。
[0006] 因此,圖像的顯示以及統(tǒng)稱為內(nèi)容的音頻和視頻數(shù)據(jù)的回放已經(jīng)逐漸成為當(dāng)前計(jì) 算設(shè)備的流行應(yīng)用。濾波和卷積操作是對內(nèi)容數(shù)據(jù)、如圖像音頻和視頻數(shù)據(jù)執(zhí)行的最常見 操作的一部分。這類操作是計(jì)算密集的,但是提供可通過采用各種數(shù)據(jù)存儲設(shè)備(如單指令 多數(shù)據(jù)(snffi)寄存器)的有效實(shí)現(xiàn)來利用的高級數(shù)據(jù)并行性。多個(gè)當(dāng)前的體系結(jié)構(gòu)還需要 多個(gè)操作、指令或子指令(通常稱作"微操作"或"y〇p")來對多個(gè)操作數(shù)執(zhí)行各種數(shù)學(xué)運(yùn) 算,由此減小吞吐量并增加執(zhí)行數(shù)學(xué)運(yùn)算所需的時(shí)鐘周期數(shù)量。
[0007]例如,可能需要由多個(gè)指令組成的指令序列來執(zhí)行產(chǎn)生點(diǎn)積所必需的一個(gè)或多個(gè) 運(yùn)算,包括將由處理裝置、系統(tǒng)或計(jì)算機(jī)程序內(nèi)的各種數(shù)據(jù)類型所表示的兩個(gè)或兩個(gè)以上 數(shù)值之積相加。但是,這類現(xiàn)有技術(shù)可能需要許多處理周期,并且可能使處理器或系統(tǒng)消耗 不必要的功率以產(chǎn)生點(diǎn)積。此外,一些現(xiàn)有技術(shù)可能在可進(jìn)行操作的操作數(shù)的數(shù)據(jù)類型方 面受到限制。
【發(fā)明內(nèi)容】
[0008] 根據(jù)本發(fā)明的一個(gè)方面,提供了一種已在其中存儲了指令的機(jī)器可讀介質(zhì),所述 指令在由機(jī)器執(zhí)行時(shí),使所述機(jī)器執(zhí)行包括以下步驟的方法:確定各具有第一數(shù)據(jù)類型的 多個(gè)打包值的至少兩個(gè)操作數(shù)的點(diǎn)積結(jié)果;存儲所述點(diǎn)積結(jié)果。
[0009]根據(jù)本發(fā)明的另一方面,提供了一種裝置,包括:第一邏輯,對第一數(shù)據(jù)類型的至 少兩個(gè)打包操作數(shù)執(zhí)行單指令多數(shù)據(jù)點(diǎn)積指令。
[0010] 根據(jù)本發(fā)明的又一方面,提供了一種系統(tǒng),包括:第一存儲器,存儲單指令多數(shù)據(jù) 點(diǎn)積指令;處理器,耦合到所述第一存儲器以執(zhí)行所述單指令多數(shù)據(jù)點(diǎn)積指令。
[0011] 根據(jù)本發(fā)明的再一方面,提供了一種方法,包括:將第一打包操作數(shù)的第一數(shù)據(jù)元 素與第二打包操作數(shù)的第一數(shù)據(jù)元素相乘,以產(chǎn)生第一乘積;將所述第一打包操作數(shù)的第 二數(shù)據(jù)元素與所述第二打包操作數(shù)的第二數(shù)據(jù)元素相乘,以產(chǎn)生第二乘積;將所述第一乘 積與所述第二乘積相加,以產(chǎn)生點(diǎn)積結(jié)果。
[0012] 此外,本發(fā)明還提供了一種處理器,包括:源寄存器,存儲包括第一數(shù)據(jù)值和第二 數(shù)據(jù)值的第一打包操作數(shù);目標(biāo)寄存器,存儲包括第三數(shù)據(jù)值和第四數(shù)據(jù)值的第二打包操 作數(shù);根據(jù)所述點(diǎn)積指令所指示的控制值來執(zhí)行單指令多數(shù)據(jù)點(diǎn)積指令的邏輯,所述邏輯 包括將所述第一數(shù)據(jù)值和第三數(shù)據(jù)值相乘以產(chǎn)生第一乘積的第一乘法器、將所述第二數(shù)據(jù) 值和第四數(shù)據(jù)值相乘以產(chǎn)生第二乘積的第二乘法器,所述邏輯還包括將所述第一乘積和第 二乘積相加以產(chǎn)生至少一個(gè)和數(shù)的至少一個(gè)加法器。
【附圖說明】
[0013]通過附圖、作為實(shí)例而非限制地來說明本發(fā)明: 圖1A是根據(jù)本發(fā)明的一個(gè)實(shí)施例采用處理器組成的計(jì)算機(jī)系統(tǒng)的框圖,所述處理器 包括執(zhí)行點(diǎn)積操作的指令的執(zhí)行單元; 圖1B是根據(jù)本發(fā)明的一個(gè)備選實(shí)施例的另一個(gè)示范性計(jì)算機(jī)系統(tǒng)的框圖; 圖1C是根據(jù)本發(fā)明的另一個(gè)備選實(shí)施例的再一個(gè)示范性計(jì)算機(jī)系統(tǒng)的框圖; 圖2是根據(jù)本發(fā)明的一個(gè)實(shí)施例的處理器的微體系結(jié)構(gòu)的框圖,所述處理器包括執(zhí)行 點(diǎn)積操作的邏輯電路; 圖3A示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的多媒體寄存器中的各種打包(packed)數(shù)據(jù)類型表不; 圖3B示出根據(jù)一備選實(shí)施例的打包數(shù)據(jù)類型; 圖3C示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的多媒體寄存器中的各種有符號和無符號打包數(shù) 據(jù)類型表示; 圖3D示出一種操作編碼(操作碼)格式的一個(gè)實(shí)施例; 圖3E示出一種備選操作編碼(操作碼)格式; 圖3F示出又一種備選操作編碼格式; 圖4是根據(jù)本發(fā)明對打包數(shù)據(jù)操作數(shù)執(zhí)行點(diǎn)積操作的邏輯(logic)的一個(gè)實(shí)施例的框 圖; 圖5A是根據(jù)本發(fā)明的一個(gè)實(shí)施例對單精度打包數(shù)據(jù)操作數(shù)執(zhí)行點(diǎn)積操作的邏輯的框 圖; 圖5B是根據(jù)本發(fā)明的一個(gè)實(shí)施例對雙精度打包數(shù)據(jù)操作數(shù)執(zhí)行點(diǎn)積操作的邏輯的框 圖; 圖6A是根據(jù)本發(fā)明的一個(gè)實(shí)施例用于執(zhí)行點(diǎn)積操作的電路的框圖; 圖6B是根據(jù)本發(fā)明的另一個(gè)實(shí)施例用于執(zhí)行點(diǎn)積操作的電路的框圖; 圖7是根據(jù)一個(gè)實(shí)施例對數(shù)據(jù)進(jìn)行打包符號操作的示意圖。
[0014] 圖7A是根據(jù)一個(gè)實(shí)施例可通過執(zhí)行DPPS指令來執(zhí)行的操作的偽碼表示; 圖7B是根據(jù)一個(gè)實(shí)施例可通過執(zhí)行DPH)指令來執(zhí)行的操作的偽碼表示。
【具體實(shí)施方式】
[0015] 以下說明描述了在處理裝置、計(jì)算機(jī)系統(tǒng)或軟件程序中執(zhí)行點(diǎn)積操作的一種技術(shù) 的實(shí)施例。在以下描述中,闡述諸如處理器類型、微體系結(jié)構(gòu)條件、事件、啟用機(jī)制等的大量 具體細(xì)節(jié),以提供對本發(fā)明的充分理解。然而,本領(lǐng)域的技術(shù)人員會理解,沒有這類具體細(xì) 節(jié),也可實(shí)施本發(fā)明。另外,沒有詳細(xì)說明一些公知的結(jié)構(gòu)、電路等,以免不必要地影響對本 發(fā)明的理解。
[0016]雖然參照處理器來描述以下實(shí)施例,但是,其它實(shí)施例適用于其它類型的集成電 路和邏輯設(shè)備。本發(fā)明的相同技術(shù)和理論可容易地應(yīng)用到可獲益于較高流水線吞吐量和改 進(jìn)的性能的其它類型的電路或半導(dǎo)體器件。本發(fā)明的理論適用于執(zhí)行數(shù)據(jù)操作的任何處理 器或機(jī)器。但是,本發(fā)明不限于執(zhí)行256位、128位、64位、32位或16位數(shù)據(jù)操作的處理器 或機(jī)器,而是可適用于其中需要操縱打包數(shù)據(jù)的任何處理器和機(jī)器。
[0017]為便于說明,以下描述中闡述了大量具體細(xì)節(jié),以便提供對本發(fā)明的充分理解。但 是,本領(lǐng)域的技術(shù)人員會理解,這些具體細(xì)節(jié)不是實(shí)施本發(fā)明所必需的。在其它情況下,沒 有對公知的電氣結(jié)構(gòu)和電路進(jìn)行特別詳細(xì)的闡述,以免不必要地影響對本發(fā)明的理解。另 外,為了說明的目的,以下描述提供實(shí)例,以及附圖示出各種實(shí)例。但是,這些實(shí)例不應(yīng)當(dāng)以 限制的意義來理解,因?yàn)樗鼈儍H旨在提供本發(fā)明的實(shí)例,而不是提供本發(fā)明的所有可能實(shí) 現(xiàn)的窮盡列表。
[0018]雖然以下實(shí)例在執(zhí)行單元和邏輯電路的上下文中來描述指令處理和分配,但是, 本發(fā)明的其它實(shí)施例可通過軟件來實(shí)現(xiàn)。在一個(gè)實(shí)施例中,本發(fā)明的方法以機(jī)器可執(zhí)行指 令來體現(xiàn)。這些指令可用于使采用指令編程的通用或?qū)S锰幚砥鲌?zhí)行本發(fā)明的步驟。本發(fā) 明可作為計(jì)算機(jī)程序產(chǎn)品或軟件來提供,它可包括其中已存儲指令的機(jī)器或計(jì)算機(jī)可讀介 質(zhì),這些指令可用于對計(jì)算機(jī)(或其它電子設(shè)備)編程以執(zhí)行根據(jù)本發(fā)明的過程。作為備選 的方案,本發(fā)明的步驟可由包含用于執(zhí)行所述步驟的硬連線邏輯的特定硬件部件來執(zhí)行, 或者由已編程計(jì)算機(jī)部件和定制硬件部件的任何組合來執(zhí)行。這種軟件可存儲在系統(tǒng)中的 存儲器內(nèi)。類似地,代碼可經(jīng)由網(wǎng)絡(luò)或者通過其它計(jì)算機(jī)可讀媒體來分配。
[0019] 因此,機(jī)器可讀介質(zhì)可包括用于存儲或傳輸機(jī)器(例如計(jì)算機(jī))可讀形式的信息 的任何機(jī)構(gòu),包括但不限于軟盤、光盤、光盤只讀存儲器(CD-ROM)以及磁光盤、只讀存儲器 (R0M)、隨機(jī)存取存儲器(RAM)、可擦除可編程只讀存儲器(EPR0M)、電可擦除可編程只讀存 儲器(EEPR0M)、磁或光卡、閃存(flashmemory)、通過因特網(wǎng)的傳輸、電、光、聲或其它形式 的傳播信號(例如載波、紅外信號、數(shù)字信號等)等。相應(yīng)地,計(jì)算機(jī)可讀介質(zhì)包括適于存儲 或傳輸機(jī)器(如計(jì)算機(jī))可讀形式的電子指令或信息的任何類型的媒體/機(jī)器可讀介質(zhì)。此 外,本發(fā)明還可作為計(jì)算機(jī)程序產(chǎn)品來下載。因此,程序可從遠(yuǎn)程計(jì)算機(jī)(例如服務(wù)器)傳送 到請求計(jì)算機(jī)(例如客戶機(jī))。程序的傳送可通過電、光、聲或者在載波或其它傳播介質(zhì)中包 含的其它形式的數(shù)據(jù)信號經(jīng)由通信鏈路(例如調(diào)制解調(diào)器、網(wǎng)絡(luò)連接等)來進(jìn)行。
[0020] 設(shè)計(jì)可能經(jīng)過從創(chuàng)建到仿真(simulation)直到制造的各種階段。表示設(shè)計(jì)的數(shù) 據(jù)可通過多種方式來表示設(shè)計(jì)。首先,如在仿真中有用的那樣,硬件可采用硬件描述語言或 者另一種功能描述語言來表示。另外,采用邏輯和/或晶體管門電路的電路級模型可在設(shè) 計(jì)過程的某些階段產(chǎn)生。此外,在某個(gè)階段,大部分設(shè)計(jì)達(dá)到表示硬件模型中的各種設(shè)備的 物理設(shè)置的數(shù)據(jù)級。在采用常規(guī)半導(dǎo)體制造技術(shù)的情況下,表示硬件模型的數(shù)據(jù)可以是指 定用于生產(chǎn)集成電路的掩模的不同掩模層上的各種特征是否存在的數(shù)據(jù)。在該設(shè)計(jì)的任何 表示中,數(shù)據(jù)可存儲在任何形式的機(jī)器可讀介質(zhì)中。經(jīng)調(diào)制或者以其它方式產(chǎn)生來傳輸這 種信息的光或電波、存儲器或者磁或光存儲裝置(storage)(如磁盤)可以是機(jī)器可讀介質(zhì)。 這些介質(zhì)的任一種可"攜帶"或"指示"設(shè)計(jì)或軟件信息。在傳輸指示或攜帶代碼或設(shè)計(jì)的 電載波達(dá)到執(zhí)行電信號的復(fù)制、緩沖或重傳的程度時(shí),就制作了新的副本。因此,通信提供 商或網(wǎng)絡(luò)提供商可能制作體現(xiàn)本發(fā)明的技術(shù)的產(chǎn)品(載波)的復(fù)制品。
[0021] 在現(xiàn)代處理器中,多個(gè)不同的執(zhí)行單元用來處理和執(zhí)行各種代碼及指令。并非所 有指令都同等地創(chuàng)建,因?yàn)橐恍┲噶顣^快地完成,而其它指令則耗用大量時(shí)鐘周期。指令 的吞吐量越大,處理器的整體性能就越好。因此,讓許多指令盡可能快地執(zhí)行是有利的。