两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

用于融合指令以在多個(gè)測(cè)試源上提供或(or)測(cè)試和與(and)測(cè)試功能的方法和裝置制造方法

文檔序號(hào):6540723閱讀:240來(lái)源:國(guó)知局
用于融合指令以在多個(gè)測(cè)試源上提供或(or)測(cè)試和與(and)測(cè)試功能的方法和裝置制造方法
【專(zhuān)利摘要】本發(fā)明公開(kāi)了用于融合指令以在多個(gè)測(cè)試源上提供或(OR)測(cè)試和與(AND)測(cè)試功能的方法和裝置。一些實(shí)施例包括獲取指令,所述指令包括指定第一操作數(shù)目的地的第一指令、指定第二操作數(shù)源的第二指令以及指定分支條件的第三指令。將多個(gè)指令的一部分融合成單個(gè)微操作,如果所述第一操作數(shù)目的地和所述第二操作數(shù)源相同,并且所述分支條件取決于第二指令,則該部分包括第一和第二指令二者。一些實(shí)施例通過(guò)將一個(gè)邏輯指令與現(xiàn)有技術(shù)的測(cè)試指令融合來(lái)動(dòng)態(tài)地產(chǎn)生新的測(cè)試指令。其他實(shí)施例通過(guò)即時(shí)編譯器產(chǎn)生該新的測(cè)試指令。一些實(shí)施例還將該新的測(cè)試指令與隨后的條件分支指令融合,并根據(jù)條件標(biāo)志如何被設(shè)置來(lái)執(zhí)行分支。
【專(zhuān)利說(shuō)明】用于融合指令以在多個(gè)測(cè)試源上提供或(OR)測(cè)試和與(AND)測(cè)試功能的方法和裝置

【技術(shù)領(lǐng)域】
[0001]本公開(kāi)涉及處理邏輯、微處理器以及相關(guān)的指令集體系結(jié)構(gòu)的領(lǐng)域,這些指令集體系結(jié)構(gòu)在被處理器或其他處理邏輯執(zhí)行時(shí)執(zhí)行邏輯、數(shù)學(xué)或其他功能性操作。具體而言,本公開(kāi)涉及用于融合指令以在多個(gè)測(cè)試源上提供或測(cè)試(OR-test)和與測(cè)試(AND-test)功能的方法和裝置。

【背景技術(shù)】
[0002]當(dāng)代處理器可包括用于提高處理性能和/或利用專(zhuān)用指令的微體系結(jié)構(gòu)和技術(shù)。例如,這些微體系結(jié)構(gòu)和技術(shù)可包括無(wú)序執(zhí)行、用于將宏指令融合成融合指令的解碼器、微指令或微操作(或微0p、“uop”)高速緩存、或追蹤高速緩存、或用于處理壓縮和/或融合指令或微操作的隊(duì)列。
[0003]指令融合是將兩個(gè)指令組合成單個(gè)指令的動(dòng)態(tài)過(guò)程,該過(guò)程在運(yùn)行時(shí)間在處理器內(nèi)產(chǎn)生一個(gè)操作、微操作、序列。存儲(chǔ)在處理器指令隊(duì)列(IQ)中的指令可在從IQ中被讀出之后以及被發(fā)送至指令解碼器之前、或在被指令解碼器解碼之后被“融合”。典型地,在指令被解碼之前進(jìn)行的指令融合被稱(chēng)為“宏融合”,而在指令被解碼(例如解碼成微指令)之后進(jìn)行的指令融合被稱(chēng)為“微融合”。宏融合的示例是將比較(“CMP”)指令或測(cè)試指令(“TEST”)(“CMP/TEST”)與條件轉(zhuǎn)移(“ JCC”)指令進(jìn)行組合。在程序中,CMP/TEST和JCC指令對(duì)可能會(huì)在循環(huán)末尾時(shí)規(guī)則地出現(xiàn),例如,在循環(huán)末尾時(shí)進(jìn)行比較、并基于比較結(jié)果進(jìn)行分支或不進(jìn)行分支。由于宏融合可有效提高指令吞吐量,故期望盡可能找出更多機(jī)會(huì)來(lái)融合指令。
[0004]Web瀏覽器可包括對(duì)一種或多種解釋性計(jì)算機(jī)編程語(yǔ)言的支持,從而客戶(hù)機(jī)側(cè)腳本可與用戶(hù)交互、控制瀏覽器、異步地通信以及在顯示文檔內(nèi)容時(shí)改變文檔內(nèi)容、等等。解釋性的計(jì)算機(jī)編程或腳本語(yǔ)言(諸如JavaScript、Jscript或ECMAScript)可能是動(dòng)態(tài)的并且是弱類(lèi)型的,且可能支持面向?qū)ο?、命令性的以及功能性的編程風(fēng)格。這樣的解釋性計(jì)算機(jī)編程語(yǔ)言可能得到即時(shí)(JIT)編譯器的形式的瀏覽器支持,該即時(shí)編譯器將解釋性語(yǔ)言動(dòng)態(tài)地編譯成機(jī)器指令序列。JIT編譯器可優(yōu)化所存儲(chǔ)的值以實(shí)現(xiàn)更快的處理,但然后需要在運(yùn)行時(shí)間期間動(dòng)態(tài)地測(cè)試對(duì)象類(lèi)型以實(shí)現(xiàn)這樣的優(yōu)化。這些動(dòng)態(tài)測(cè)試會(huì)引入附加的處理開(kāi)銷(xiāo),從而需要更高能耗,并且限制這樣的優(yōu)化的任何性能優(yōu)勢(shì)。
[0005]到目前為止,尚未充分探索針對(duì)這樣的性能受限問(wèn)題、能耗擔(dān)憂以及其它運(yùn)行時(shí)間瓶頸的潛在解決方案。

【專(zhuān)利附圖】

【附圖說(shuō)明】
[0006]在附圖的各圖中通過(guò)示例而非限制地示出本發(fā)明。
[0007]圖1A是執(zhí)行指令以在多個(gè)測(cè)試源上提供或測(cè)試和與測(cè)試功能的系統(tǒng)的一個(gè)實(shí)施例的框圖。
[0008]圖1B是執(zhí)行指令以在多個(gè)測(cè)試源上提供或測(cè)試和與測(cè)試功能的系統(tǒng)的另一實(shí)施例的框圖。
[0009]圖1C是執(zhí)行指令以在多個(gè)測(cè)試源上提供或測(cè)試和與測(cè)試功能的系統(tǒng)的另一實(shí)施例的框圖。
[0010]圖2是執(zhí)行指令以在多個(gè)測(cè)試源上提供或測(cè)試和與測(cè)試功能的處理器的一個(gè)實(shí)施例的框圖。
[0011]圖3A示出根據(jù)一個(gè)實(shí)施例的打包數(shù)據(jù)類(lèi)型。
[0012]圖3B示出根據(jù)一個(gè)實(shí)施例的打包數(shù)據(jù)類(lèi)型。
[0013]圖3C示出根據(jù)一個(gè)實(shí)施例的打包數(shù)據(jù)類(lèi)型。
[0014]圖3D示出根據(jù)一個(gè)實(shí)施例的用于在多個(gè)測(cè)試源上提供或測(cè)試和與測(cè)試功能的指令編碼。
[0015]圖3E示出根據(jù)另一個(gè)實(shí)施例的用于在多個(gè)測(cè)試源上提供或測(cè)試和與測(cè)試功能的指令編碼。
[0016]圖3F示出根據(jù)另一個(gè)實(shí)施例的用于在多個(gè)測(cè)試源上提供或測(cè)試和與測(cè)試功能的指令編碼。
[0017]圖3G示出根據(jù)另一個(gè)實(shí)施例的用于在多個(gè)測(cè)試源上提供或測(cè)試和與測(cè)試功能的指令編碼。
[0018]圖3H示出根據(jù)另一個(gè)實(shí)施例的用于在多個(gè)測(cè)試源上提供或測(cè)試和與測(cè)試功能的指令編碼。
[0019]圖4A示出用于執(zhí)行在多個(gè)測(cè)試源上提供或測(cè)試和與測(cè)試功能的指令的處理器微體系結(jié)構(gòu)的一個(gè)實(shí)施例的要素。
[0020]圖4B示出用于執(zhí)行在多個(gè)測(cè)試源上提供或測(cè)試和與測(cè)試功能的指令的處理器微體系結(jié)構(gòu)的另一實(shí)施例的要素。
[0021]圖5是用于執(zhí)行在多個(gè)測(cè)試源上提供或測(cè)試和與測(cè)試功能的指令的處理器的一個(gè)實(shí)施例的框圖。
[0022]圖6是用于執(zhí)行在多個(gè)測(cè)試源上提供或測(cè)試和與測(cè)試功能的指令的計(jì)算機(jī)系統(tǒng)的一個(gè)實(shí)施例的框圖。
[0023]圖7是用于執(zhí)行在多個(gè)測(cè)試源上提供或測(cè)試和與測(cè)試功能的指令的計(jì)算機(jī)系統(tǒng)的另一實(shí)施例的框圖。
[0024]圖8是用于執(zhí)行在多個(gè)測(cè)試源上提供或測(cè)試和與測(cè)試功能的指令的計(jì)算機(jī)系統(tǒng)的另一實(shí)施例的框圖。
[0025]圖9是用于執(zhí)行在多個(gè)測(cè)試源上提供或測(cè)試和與測(cè)試功能的指令的芯片上系統(tǒng)的一個(gè)實(shí)施例的框圖。
[0026]圖10是用于執(zhí)行在多個(gè)測(cè)試源上提供或測(cè)試和與測(cè)試功能的指令的處理器的實(shí)施例的框圖。
[0027]圖11是在多個(gè)測(cè)試源上提供或測(cè)試和與測(cè)試功能的IP核開(kāi)發(fā)系統(tǒng)的一個(gè)實(shí)施例的框圖。
[0028]圖12示出在多個(gè)測(cè)試源上提供或測(cè)試和與測(cè)試功能的體系結(jié)構(gòu)仿真系統(tǒng)的一個(gè)實(shí)施例。
[0029]圖13示出用于轉(zhuǎn)換在多個(gè)測(cè)試源上提供或測(cè)試和與測(cè)試功能的指令的系統(tǒng)的一個(gè)實(shí)施例。
[0030]圖14示出用于融合在多個(gè)測(cè)試源上提供或測(cè)試和與測(cè)試功能的指令的處理器微體系結(jié)構(gòu)的一個(gè)替代實(shí)施例的要素。
[0031]圖15A示出用于在多個(gè)測(cè)試源上提供或測(cè)試和與測(cè)試功能的融合指令結(jié)構(gòu)的一個(gè)實(shí)施例的流程圖。
[0032]圖15B示出用于在多個(gè)測(cè)試源上提供或測(cè)試和與測(cè)試功能的融合指令結(jié)構(gòu)的替代實(shí)施例的流程圖。
[0033]圖15C示出用于在多個(gè)測(cè)試源上提供或測(cè)試和與測(cè)試功能的融合指令結(jié)構(gòu)的另一替代實(shí)施例的流程圖。
[0034]圖16A示出用于融合指令以在多個(gè)測(cè)試源上提供或測(cè)試和與測(cè)試功能的過(guò)程的一個(gè)實(shí)施例的流程圖。
[0035]圖16B示出用于融合指令以在多個(gè)測(cè)試源上提供或測(cè)試和與測(cè)試功能的過(guò)程的替代實(shí)施例的流程圖。
[0036]圖16C示出用于融合指令以在多個(gè)測(cè)試源上提供或測(cè)試和與測(cè)試功能的過(guò)程的另一替代實(shí)施例的流程圖。
[0037]圖16D示出用于融合指令以在多個(gè)測(cè)試源上提供或測(cè)試和與測(cè)試功能的過(guò)程的另一替代實(shí)施例的流程圖。
[0038]圖17示出用于執(zhí)行指令以在多個(gè)測(cè)試源上提供或測(cè)試和與測(cè)試功能的過(guò)程的一個(gè)實(shí)施例的流程圖。

【具體實(shí)施方式】
[0039]以下說(shuō)明書(shū)公開(kāi)了用于在處理器、計(jì)算機(jī)系統(tǒng)或其他處理裝置之中的多個(gè)測(cè)試源上或在與處理器、計(jì)算機(jī)系統(tǒng)或其他處理裝置相關(guān)聯(lián)的多個(gè)測(cè)試源上提供或測(cè)試和與測(cè)試功能的可融合指令和邏輯。
[0040]Web瀏覽器可包括對(duì)一種或多種解釋性的計(jì)算機(jī)編程語(yǔ)言(諸如JavaScript、Jscript或ECMAScript)的支持,這些解釋性的計(jì)算機(jī)編程語(yǔ)言可能是動(dòng)態(tài)的并且是弱類(lèi)型的,且可能支持面向?qū)ο?、命令性的以及功能性的編程風(fēng)格。這樣的解釋性計(jì)算機(jī)編程語(yǔ)言可能得到即時(shí)(JIT)編譯器的形式的瀏覽器支持,該即時(shí)編譯器將解釋性語(yǔ)言動(dòng)態(tài)地編譯成機(jī)器指令序列。在運(yùn)行時(shí)間期間,JIT編譯器可優(yōu)化所存儲(chǔ)的值以實(shí)現(xiàn)更快的處理,但然后可能需要?jiǎng)討B(tài)地測(cè)試對(duì)象類(lèi)型以實(shí)現(xiàn)這樣的優(yōu)化。例如,JIT編譯器可能使用一位或多位機(jī)器字來(lái)區(qū)分和/或指定一值是經(jīng)優(yōu)化的整數(shù)而不是更一般的浮點(diǎn)值或字符串。可在訪問(wèn)該值之前在運(yùn)行時(shí)間動(dòng)態(tài)地檢查這些一位或多位的存在。這樣的動(dòng)態(tài)類(lèi)型測(cè)試會(huì)引入以頻繁執(zhí)行的類(lèi)型測(cè)試指令序列習(xí)語(yǔ)的形式所體現(xiàn)的附加處理開(kāi)銷(xiāo),從而需要更高的能耗并且限制這樣的編譯器優(yōu)化的任何性能優(yōu)勢(shì)。
[0041]這些頻繁執(zhí)行的指令序列習(xí)語(yǔ)可包括:將兩個(gè)源數(shù)據(jù)操作數(shù)組合的邏輯操作(例如,當(dāng)測(cè)試各個(gè)源中的位是否為I時(shí)的或(OR)操作,當(dāng)測(cè)試各個(gè)源中的位是否為零時(shí)的與(AND)操作);比較或測(cè)試指令(例如TEST,用于測(cè)試對(duì)于掩碼的邏輯操作的結(jié)果);以及條件分支(例如如果TEST曾設(shè)置/未曾設(shè)置零標(biāo)志,則跳轉(zhuǎn)至更慢的一般代碼序列的JZ/JNZ)。處理解碼邏輯在將比較指令或測(cè)試指令(例如TEST)與條件分支指令(例如JZ)組合時(shí)可利用宏融合。
[0042]公開(kāi)了用于融合指令以在多個(gè)測(cè)試源上提供或(OR)測(cè)試和與(AND)測(cè)試功能的方法和裝置的實(shí)施例。一些實(shí)施例包括獲取指令,所述指令包括指定第一操作數(shù)目的地的第一指令、指定第二操作數(shù)源的第二指令以及指定分支條件的第三指令。將多個(gè)指令的一部分融合成單個(gè)微操作,如果所述第一操作數(shù)目的地和所述第二操作數(shù)源相同,并且所述分支條件取決于第二指令,則該部分包括第一和第二指令二者。一些實(shí)施例通過(guò)將一個(gè)邏輯指令與現(xiàn)有技術(shù)的測(cè)試指令融合來(lái)動(dòng)態(tài)地產(chǎn)生新的測(cè)試指令。其他實(shí)施例通過(guò)JIT編譯器動(dòng)態(tài)地產(chǎn)生測(cè)試指令。一些實(shí)施例還將測(cè)試指令與隨后的條件分支指令(例如JZ)融合,并根據(jù)條件標(biāo)志如何被設(shè)置而執(zhí)行分支。因此,在運(yùn)行時(shí)間,頻繁執(zhí)行的指令序列習(xí)語(yǔ)可被融合成單個(gè)指令,該單個(gè)指令導(dǎo)致處理器內(nèi)的一個(gè)微操作序列。
[0043]將理解,用于在多個(gè)測(cè)試源上提供或測(cè)試和/或與測(cè)試功能的可融合指令和邏輯至少可消除與由JIT編譯器所產(chǎn)生的頻繁執(zhí)行的類(lèi)型測(cè)試指令相關(guān)聯(lián)的性能限制問(wèn)題、能耗擔(dān)憂以及其他運(yùn)行時(shí)間瓶頸。
[0044]在以下描述中,陳述了諸如處理邏輯、處理器類(lèi)型、微體系結(jié)構(gòu)條件、事件、啟用機(jī)制等多種特定細(xì)節(jié),以提供對(duì)本發(fā)明實(shí)施例的更透徹理解。然而,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)領(lǐng)會(huì),沒(méi)有這些具體細(xì)節(jié)也可實(shí)踐本發(fā)明。此外,沒(méi)有詳細(xì)示出一些公知的結(jié)構(gòu)、電路等等,以避免不必要地混淆本發(fā)明的實(shí)施例。
[0045]雖然下述的諸個(gè)實(shí)施例參照處理器來(lái)描述,但其他實(shí)施例也適用于其他類(lèi)型的集成電路和邏輯設(shè)備。本發(fā)明的實(shí)施例的類(lèi)似技術(shù)和教導(dǎo)可應(yīng)用于其它類(lèi)型的電路或半導(dǎo)體器件,這些其它類(lèi)型的電路或半導(dǎo)體器件也可受益于更高的流水線吞吐量和提高的性能。本發(fā)明的諸個(gè)實(shí)施例的教示適用于執(zhí)行數(shù)據(jù)操縱的任何處理器或機(jī)器。然而,本發(fā)明不限于執(zhí)行512位、256位、128位、64位、32位、或16位數(shù)據(jù)運(yùn)算的處理器或機(jī)器,并適用于執(zhí)行數(shù)據(jù)操作或管理的任何處理器和機(jī)器。此外,下述描述提供了示例,并且附圖出于示意性目的示出了多個(gè)示例。然而,這些示例不應(yīng)該被理解為具有限制性目的,因?yàn)樗鼈儍H僅旨在提供本發(fā)明的諸個(gè)實(shí)施例的示例,而并非對(duì)本發(fā)明的實(shí)施例的所有可能實(shí)現(xiàn)方式進(jìn)行窮舉。
[0046]雖然下述的示例描述了在執(zhí)行單元和邏輯電路情況下的指令處理和分配,但本發(fā)明的其他實(shí)施例也可通過(guò)存儲(chǔ)在機(jī)器可讀有形介質(zhì)上的數(shù)據(jù)和/或指令來(lái)完成,這些數(shù)據(jù)和/或指令在被機(jī)器執(zhí)行時(shí)使得機(jī)器執(zhí)行與本發(fā)明至少一個(gè)實(shí)施例相一致的功能。在一個(gè)實(shí)施例中,與本發(fā)明的實(shí)施例相關(guān)聯(lián)的功能被具體化在機(jī)器可執(zhí)行指令中。這些指令可用來(lái)使通過(guò)這些指令編程的通用處理器或?qū)S锰幚砥鲌?zhí)行本發(fā)明的步驟。本發(fā)明的諸個(gè)實(shí)施例也可以作為計(jì)算機(jī)程序產(chǎn)品或軟件來(lái)提供,該計(jì)算機(jī)程序產(chǎn)品或軟件可包括其上存儲(chǔ)有指令的機(jī)器或計(jì)算機(jī)可讀介質(zhì),這些指令可被用來(lái)對(duì)計(jì)算機(jī)(或其他電子設(shè)備)進(jìn)行編程來(lái)執(zhí)行根據(jù)本發(fā)明的實(shí)施例的一個(gè)或多個(gè)操作。另選地,本發(fā)明的諸個(gè)實(shí)施例的這些步驟可由包含用于執(zhí)行這些步驟的固定功能邏輯的專(zhuān)用硬件組件來(lái)執(zhí)行,或由經(jīng)編程的計(jì)算機(jī)組件以及固定功能硬件組件的任何組合來(lái)執(zhí)行。
[0047]被用于對(duì)邏輯進(jìn)行編程以執(zhí)行本發(fā)明的諸個(gè)實(shí)施例的指令可被存儲(chǔ)在系統(tǒng)中的存儲(chǔ)器(諸如,DRAM、高速緩存、閃存、或其他存儲(chǔ)器)內(nèi)。進(jìn)一步的,指令可經(jīng)由網(wǎng)絡(luò)或其他計(jì)算機(jī)可讀介質(zhì)來(lái)分發(fā)。因此,計(jì)算機(jī)可讀介質(zhì)可包括用于以機(jī)器(諸如,計(jì)算機(jī))可讀的格式存儲(chǔ)或發(fā)送信息的任何機(jī)制,但不限于:磁盤(pán)、光盤(pán)、致密盤(pán)只讀存儲(chǔ)器(CD-ROM)、磁光盤(pán)、只讀存儲(chǔ)器(ROM)、隨機(jī)存取存儲(chǔ)器(RAM)、可擦除可編程只讀存儲(chǔ)器(EPR0M)、電可擦除可編程只讀存儲(chǔ)器(EEPR0M)、磁卡或光卡、閃存、或在經(jīng)由互聯(lián)網(wǎng)通過(guò)電、光、聲、或其他形式的傳播信號(hào)(諸如,載波、紅外信號(hào)、數(shù)字信號(hào)等)發(fā)送信息中所用的有形機(jī)器可讀存儲(chǔ)器。因此,計(jì)算機(jī)可讀介質(zhì)包括用于存儲(chǔ)或發(fā)送機(jī)器(例如,計(jì)算機(jī))可讀形式的電子指令或信息的任何類(lèi)型的有形機(jī)器可讀介質(zhì)。
[0048]設(shè)計(jì)會(huì)經(jīng)歷多個(gè)階段,從創(chuàng)新到仿真到制造。表示設(shè)計(jì)的數(shù)據(jù)可用多種方式來(lái)表示該設(shè)計(jì)。首先,如仿真中將有用的,可使用硬件描述語(yǔ)言或其他功能性描述語(yǔ)言來(lái)表示硬件。此外,可在設(shè)計(jì)過(guò)程的某些階段產(chǎn)生具有邏輯和/或晶體管門(mén)電路的電路級(jí)模型。此夕卜,大多數(shù)設(shè)計(jì)在某些階段都達(dá)到表示硬件模型中多種設(shè)備的物理布置的數(shù)據(jù)水平。在使用常規(guī)半導(dǎo)體制造技術(shù)的情況下,表示硬件模型的數(shù)據(jù)可以是指定在用于制造集成電路的掩模的不同掩模層上存在或不存在各種各樣特征的數(shù)據(jù)。在任何的設(shè)計(jì)表示中,數(shù)據(jù)可被存儲(chǔ)在任何形式的機(jī)器可讀介質(zhì)中。存儲(chǔ)器或磁/光存儲(chǔ)器(諸如,盤(pán))可以是存儲(chǔ)信息的機(jī)器可讀介質(zhì),這些信息是經(jīng)由光學(xué)或電學(xué)波來(lái)發(fā)送的,這些光學(xué)或電學(xué)波被調(diào)制或以其他方式生成以傳送這些信息。當(dāng)發(fā)送指示或承載代碼或設(shè)計(jì)的電學(xué)載波達(dá)到實(shí)現(xiàn)電信號(hào)的復(fù)制、緩沖或重新發(fā)送的程度時(shí),即產(chǎn)生了新的副本。因此,通信提供商或網(wǎng)絡(luò)提供商會(huì)在有形機(jī)器可讀介質(zhì)上至少臨時(shí)地存儲(chǔ)具體化本發(fā)明的諸個(gè)實(shí)施例的技術(shù)的物品(諸如,編碼在載波中的信息)。
[0049]在現(xiàn)代處理器中,多個(gè)不同執(zhí)行單元被用于處理和執(zhí)行多種代碼和指令。并不是所有指令都被同等地創(chuàng)建,因?yàn)槠渲杏幸恍└斓乇煌瓿啥硪恍┬枰鄠€(gè)時(shí)鐘周期來(lái)完成。指令的吞吐量越快,則處理器的總體性能越好。因此,使大量指令盡可能快地執(zhí)行將會(huì)是有利的。然而,某些指令具有更大的復(fù)雜度,并需要更多的執(zhí)行時(shí)間和處理器資源。例如,存在浮點(diǎn)指令、加載/存儲(chǔ)操作、數(shù)據(jù)移動(dòng)等等。
[0050]因?yàn)楦嗟挠?jì)算機(jī)系統(tǒng)被用于互聯(lián)網(wǎng)、文本以及多媒體應(yīng)用,所以逐漸地引進(jìn)更多的處理器支持。在一個(gè)實(shí)施例中,指令集可與一個(gè)或多個(gè)計(jì)算機(jī)體系結(jié)構(gòu)相關(guān)聯(lián),一個(gè)或多個(gè)計(jì)算機(jī)體系結(jié)構(gòu)包括數(shù)據(jù)類(lèi)型、指令、寄存器體系結(jié)構(gòu)、尋址模式、存儲(chǔ)器體系結(jié)構(gòu)、中斷和例外處理、外部輸入輸出(I/o)。
[0051]在一個(gè)實(shí)施例中,指令集體系結(jié)構(gòu)(ISA)可由一個(gè)或更多微體系結(jié)構(gòu)來(lái)執(zhí)行,微體系結(jié)構(gòu)包括用于實(shí)現(xiàn)一個(gè)或多個(gè)指令集的處理器邏輯和電路。因此,具有不同微體系結(jié)構(gòu)的諸個(gè)處理器可共享公共指令集的至少一部分。例如,INTEL?奔騰四(Pentium4)處理器、丨ntel?酷睿(Core?)處理器、以及來(lái)自加利福尼亞州桑尼威爾(Sunnyvale)的超微半導(dǎo)體有限公司(Advanced Micro Devices, Inc.)的諸多處理器執(zhí)行幾乎相同版本的x86指令集(在更新的版本中加入了一些擴(kuò)展),但具有不同的內(nèi)部設(shè)計(jì)。類(lèi)似地,由其他處理器開(kāi)發(fā)公司(諸如,ARM控股有限公司、MIPS或它們的授權(quán)方或兼容方)所設(shè)計(jì)的諸多處理器可共享至少一部分公共指令集,但可包括不同的處理器設(shè)計(jì)。例如,ISA的相同寄存器體系結(jié)構(gòu)在不同的微體系結(jié)構(gòu)中可使用新的或已知的技術(shù)以不同方法來(lái)實(shí)現(xiàn),包括專(zhuān)用物理寄存器、使用寄存器重命名機(jī)制(諸如,使用寄存器別名表RAT、重排序緩沖器R0B、以及隱退寄存器文件)的一個(gè)或多個(gè)動(dòng)態(tài)分配物理寄存器。在一個(gè)實(shí)施例中,寄存器可包括:可由軟件編程者尋址或不可尋址的一個(gè)或多個(gè)寄存器、寄存器體系結(jié)構(gòu)、寄存器文件、或其他寄存器隹A
口 O
[0052]在一個(gè)實(shí)施例中,指令可包括一個(gè)或多個(gè)指令格式。在一個(gè)實(shí)施例中,指令格式可指示多個(gè)字段(位的數(shù)目、位的位置等)以特別指定將要被執(zhí)行的操作以及將要被執(zhí)行的操作的操作數(shù)。一些指令格式可進(jìn)一步被指令模板(或子格式)所細(xì)分定義。例如,給定指令格式的指令模板可被定義為具有指令格式字段的不同的子集,和/或被定義為具有不同解釋的給定字段。在一個(gè)實(shí)施例中,使用指令格式(并且,如果定義過(guò),則以該指令格式的一個(gè)給定指令模板)來(lái)表示指令,并且該指令指定或指示操作以及該操作將操作的操作數(shù)。
[0053]科學(xué)應(yīng)用、金融應(yīng)用、自動(dòng)向量化通用應(yīng)用、RMS (識(shí)別、挖掘和合成)應(yīng)用以及視覺(jué)和多媒體應(yīng)用(諸如,2D/3D圖形、圖像處理、視頻壓縮/解壓縮、語(yǔ)音識(shí)別算法和音頻處理)可能需要對(duì)大量數(shù)據(jù)項(xiàng)執(zhí)行相同的操作。在一個(gè)實(shí)施例中,單指令多數(shù)據(jù)(SMD)指的是使得處理器在多個(gè)數(shù)據(jù)元素上執(zhí)行一操作的一種類(lèi)型的指令。SMD技術(shù)可被用于處理器中,這些處理器將寄存器中的諸個(gè)位(bit)邏輯地劃分入多個(gè)固定大小或可變大小的數(shù)據(jù)元素,每個(gè)數(shù)據(jù)元素表示單獨(dú)的值。例如,在一個(gè)實(shí)施例中,64位寄存器中的諸個(gè)位可被組織為包含四個(gè)單獨(dú)的16位數(shù)據(jù)元素的源操作數(shù),每個(gè)數(shù)據(jù)元素表示單獨(dú)的16位值。該數(shù)據(jù)類(lèi)型可被稱(chēng)為“打包”數(shù)據(jù)類(lèi)型或“向量”數(shù)據(jù)類(lèi)型,并且該數(shù)據(jù)類(lèi)型的操作數(shù)被稱(chēng)為打包數(shù)據(jù)操作數(shù)或向量操作數(shù)。在一個(gè)實(shí)施例中,打包數(shù)據(jù)項(xiàng)或向量可以是存儲(chǔ)在單個(gè)寄存器中的打包數(shù)據(jù)元素的序列,并且打包數(shù)據(jù)操作數(shù)或向量操作數(shù)可以是SMD指令(或“打包數(shù)據(jù)指令”或“向量指令”)的源操作數(shù)或目的地操作數(shù)。在一個(gè)實(shí)施例中,SIMD指令指定了將要被執(zhí)行在兩個(gè)源向量操作數(shù)上的單個(gè)向量操作,以生成具有相同或不同大小的、具有相同或不同數(shù)量的數(shù)據(jù)元素的、具有相同或不同數(shù)據(jù)元素次序的目的地向量操作數(shù)(也被稱(chēng)為結(jié)果向量操作數(shù))。
[0054]諸如由Intel?酷睿(Core?)處理器(具有包括x86、MMX?、流SMD擴(kuò)展(SSE)、SSE2、SSE3、SSE4.1、SSE4.2指令的指令集)、ARM處理器(諸如,ARM Cortex?處理器族,具有包括向量浮點(diǎn)(VFP)和/或NEON指令的指令集)、MIPS處理器(諸如,中國(guó)科學(xué)院計(jì)算機(jī)技術(shù)研究所(ICT)開(kāi)發(fā)的龍芯處理器族)所使用的SMD技術(shù)之類(lèi)的SMD技術(shù)在應(yīng)用性能上帶來(lái)了極大的提高(Core?和MMX?是加利福尼亞州圣克拉拉市的英特爾公司的注冊(cè)商標(biāo)或商標(biāo))。
[0055]在一個(gè)實(shí)施例中,目的地寄存器/數(shù)據(jù)和源寄存器/數(shù)據(jù)是表示對(duì)應(yīng)數(shù)據(jù)或操作的源和目的地的通用術(shù)語(yǔ)。在一些實(shí)施例中,它們可由寄存器、存儲(chǔ)器或具有與所示出的那些名稱(chēng)或功能不同的名稱(chēng)或功能的其他存儲(chǔ)區(qū)域所實(shí)現(xiàn)。例如,在一個(gè)實(shí)施例中,“DEST1”可以是臨時(shí)存儲(chǔ)寄存器或其他存儲(chǔ)區(qū)域,而“SRC1”和“SRC2”是第一和第二源存儲(chǔ)寄存器或其他存儲(chǔ)區(qū)域,等等。在其他實(shí)施例中,SRC和DEST存儲(chǔ)區(qū)域中的兩個(gè)或更多區(qū)域可對(duì)應(yīng)于相同存儲(chǔ)區(qū)域中的不同數(shù)據(jù)存儲(chǔ)元素(例如,SIMD寄存器)。在一個(gè)實(shí)施例中,例如通過(guò)將對(duì)第一和第二源數(shù)據(jù)執(zhí)行的操作的結(jié)果寫(xiě)回至兩個(gè)源寄存器中作為目的地寄存器的那個(gè)寄存器,源寄存器中的一個(gè)也可以作為目的地寄存器。
[0056]圖1A是根據(jù)本發(fā)明的一個(gè)實(shí)施例的示例性計(jì)算機(jī)系統(tǒng)的框圖,該計(jì)算機(jī)系統(tǒng)被形成為具有包括執(zhí)行單元以執(zhí)行指令的處理器。根據(jù)本發(fā)明,諸如根據(jù)在此所描述的實(shí)施例,系統(tǒng)100包括諸如處理器102之類(lèi)的組件,以采用包括邏輯的執(zhí)行單元來(lái)執(zhí)行算法以處理數(shù)據(jù)。系統(tǒng)100代表基于可從美國(guó)加利福尼亞州圣克拉拉市的英特爾公司獲得的PENTIUM? III, PENTIUM? 4,Xeontm, Itanium?、XScaletn'和 / 或 StrongARMtni 微處理器的處理系統(tǒng),不過(guò)也可使用其它系統(tǒng)(包括具有其它微處理器的PC、工程工作站、機(jī)頂盒等)。在一個(gè)實(shí)施例中,樣本系統(tǒng)100可執(zhí)行可從美國(guó)華盛頓州雷蒙德市的微軟公司買(mǎi)到的WINDOWStm操作系統(tǒng)的一個(gè)版本,不過(guò)也可使用其它操作系統(tǒng)(例如UNIX和Linux)、嵌入式軟件、和/或圖形用戶(hù)界面。因此,本發(fā)明的各實(shí)施例不限于硬件和軟件的任何具體組合。
[0057]實(shí)施例不限于計(jì)算機(jī)系統(tǒng)。本發(fā)明的替換實(shí)施例可被用于其他設(shè)備,諸如手持式設(shè)備和嵌入式應(yīng)用。手持設(shè)備的一些示例包括蜂窩電話、網(wǎng)際協(xié)議設(shè)備、數(shù)碼相機(jī)、個(gè)人數(shù)字助理(PDA)以及手持PC。嵌入式應(yīng)用可包括:微控制器、數(shù)字信號(hào)處理器(DSP)、芯片上系統(tǒng)、網(wǎng)絡(luò)計(jì)算機(jī)(NetPC)、機(jī)頂盒、網(wǎng)絡(luò)中樞、廣域網(wǎng)(WAN)交換機(jī)、或可執(zhí)行根據(jù)至少一個(gè)實(shí)施例的一個(gè)或多個(gè)指令的任何其他系統(tǒng)。
[0058]圖1A是計(jì)算機(jī)系統(tǒng)100的框圖,計(jì)算機(jī)系統(tǒng)100被形成為具有處理器102,處理器102包括一個(gè)或多個(gè)執(zhí)行單元108以執(zhí)行算法,以執(zhí)行根據(jù)本發(fā)明的一個(gè)實(shí)施例的至少一個(gè)指令。參照單處理器桌面或服務(wù)器系統(tǒng)來(lái)描述了一個(gè)實(shí)施例,但替代實(shí)施例可被包括在多處理器系統(tǒng)中。系統(tǒng)100是“中樞”系統(tǒng)體系結(jié)構(gòu)的示例。計(jì)算機(jī)系統(tǒng)100包括處理器102以處理數(shù)據(jù)信號(hào)。處理器102可以是復(fù)雜指令集計(jì)算機(jī)(CISC)微處理器、精簡(jiǎn)指令集計(jì)算(RISC)微處理器、超長(zhǎng)指令字(VLIW)微處理器、實(shí)現(xiàn)指令集組合的處理器或任意其它處理器設(shè)備(諸如數(shù)字信號(hào)處理器)。處理器102耦合至處理器總線110,處理器總線110可在處理器102和系統(tǒng)100內(nèi)的其他組件之間傳輸數(shù)據(jù)信號(hào)。系統(tǒng)100的諸個(gè)元素執(zhí)行本領(lǐng)域所熟知的常規(guī)功能。
[0059]在一個(gè)實(shí)施例中,處理器102包括第一級(jí)(LI)內(nèi)部高速緩存存儲(chǔ)器104。取決于體系結(jié)構(gòu),處理器102可具有單個(gè)內(nèi)部高速緩存或多級(jí)內(nèi)部高速緩存?;蛘?,在另一個(gè)實(shí)施例中,高速緩存存儲(chǔ)器可位于處理器102的外部。其他實(shí)施例也可包括內(nèi)部高速緩存和外部高速緩存的組合,這取決于特定實(shí)現(xiàn)和需求。寄存器文件106可在多個(gè)寄存器(包括整數(shù)寄存器、浮點(diǎn)寄存器、狀態(tài)寄存器、指令指針寄存器)中存儲(chǔ)不同類(lèi)型的數(shù)據(jù)。
[0060]執(zhí)行單元108 (包括執(zhí)行整數(shù)和浮點(diǎn)操作的邏輯)也位于處理器102中。處理器102還包括微代碼(Ucode)ROM,其存儲(chǔ)用于特定宏指令的微代碼。對(duì)于一個(gè)實(shí)施例,執(zhí)行單元108包括處理打包指令集109的邏輯。通過(guò)將打包指令集109包括在通用處理器102的指令集內(nèi)并包括相關(guān)的電路以執(zhí)行這些指令,可使用通用處理器102中的打包數(shù)據(jù)來(lái)執(zhí)行許多多媒體應(yīng)用所使用的操作。因此,通過(guò)將處理器數(shù)據(jù)總線的全帶寬用于對(duì)打包數(shù)據(jù)進(jìn)行操作,許多多媒體應(yīng)用可獲得加速,并更為有效率地執(zhí)行。這能減少在處理器數(shù)據(jù)總線上傳輸更小數(shù)據(jù)單元以在一個(gè)時(shí)間對(duì)一個(gè)數(shù)據(jù)元素執(zhí)行一個(gè)或多個(gè)操作的需要。
[0061]執(zhí)行單元108的替換實(shí)施例也可被用于微控制器、嵌入式處理器、圖形設(shè)備、DSP以及其他類(lèi)型的邏輯電路。系統(tǒng)100包括存儲(chǔ)器120。存儲(chǔ)器設(shè)備120可以是動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)設(shè)備、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)設(shè)備、閃存設(shè)備或其他存儲(chǔ)器設(shè)備。存儲(chǔ)器120可存儲(chǔ)可由處理器102執(zhí)行的指令和/或數(shù)據(jù),數(shù)據(jù)由數(shù)據(jù)信號(hào)表示。
[0062]系統(tǒng)邏輯芯片116耦合至處理器總線110和存儲(chǔ)器120。在所示出的實(shí)施例中的系統(tǒng)邏輯芯片116是存儲(chǔ)器控制器中樞(MCH)。處理器102可經(jīng)由處理器總線110與MCH116通信。MCHl 16提供至存儲(chǔ)器120的高帶寬存儲(chǔ)器路徑118,用于指令和數(shù)據(jù)存儲(chǔ),以及用于存儲(chǔ)圖形命令、數(shù)據(jù)和文本。MCH116用于引導(dǎo)處理器102、存儲(chǔ)器120以及系統(tǒng)100內(nèi)的其他組件之間的數(shù)據(jù)信號(hào),并在處理器總線110、存儲(chǔ)器120和系統(tǒng)1/0122之間橋接數(shù)據(jù)信號(hào)。在一些實(shí)施例中,系統(tǒng)邏輯芯片116可提供耦合至圖形控制器112的圖形端口。MCHl 16經(jīng)由存儲(chǔ)器接口 118耦合至存儲(chǔ)器120。圖形卡112通過(guò)加速圖形端口(AGP)互連114耦合至 MCHl 16。
[0063]系統(tǒng)100使用外圍設(shè)備中樞接口總線122以將MCH116耦合至I/O控制器中樞(ICH) 130。ICH130經(jīng)由本地I/O總線向一些I/O設(shè)備提供直接連接。本地I/O總線是高速I(mǎi)/O總線,用于將外圍設(shè)備連接至存儲(chǔ)器120、芯片組以及處理器102。一些示例是音頻控制器、固件中樞(閃存B1S) 128、無(wú)線收發(fā)機(jī)126、數(shù)據(jù)存儲(chǔ)器124、包括用戶(hù)輸入和鍵盤(pán)接口的傳統(tǒng)I/O控制器、串行擴(kuò)展端口(諸如通用串行總線USB)以及網(wǎng)絡(luò)控制器134。數(shù)據(jù)存儲(chǔ)設(shè)備124可以包括硬盤(pán)驅(qū)動(dòng)器、軟盤(pán)驅(qū)動(dòng)器、⑶-ROM設(shè)備、閃存設(shè)備、或其他大容量存儲(chǔ)設(shè)備。
[0064]對(duì)于系統(tǒng)的另一個(gè)實(shí)施例,根據(jù)一個(gè)實(shí)施例的指令可被用于芯片上系統(tǒng)。芯片上系統(tǒng)的一個(gè)實(shí)施例包括處理器和存儲(chǔ)器。用于這樣一個(gè)系統(tǒng)的存儲(chǔ)器是閃存存儲(chǔ)器。閃存存儲(chǔ)器可位于與處理器和其他系統(tǒng)組件相同的管芯上。此外,諸如存儲(chǔ)器控制器或圖形控制器之類(lèi)的其他邏輯塊也可位于芯片上系統(tǒng)上。
[0065]圖1B示出數(shù)據(jù)處理系統(tǒng)140,數(shù)據(jù)處理系統(tǒng)140實(shí)現(xiàn)本發(fā)明的一個(gè)實(shí)施例的原理。本領(lǐng)域的技術(shù)人員將容易理解,在此描述的諸個(gè)實(shí)施例可用于替代處理系統(tǒng),而不背離本發(fā)明的實(shí)施例的范圍。
[0066]計(jì)算機(jī)系統(tǒng)140包括處理核心159,處理核心159能執(zhí)行根據(jù)一個(gè)實(shí)施例的至少一個(gè)指令。對(duì)于一個(gè)實(shí)施例,處理核心159表示任何類(lèi)型的體系結(jié)構(gòu)的處理單元,包括但不限于:CISC、RISC或VLIW類(lèi)型體系結(jié)構(gòu)、處理核心159也可適于以一種或多種處理技術(shù)來(lái)制造,并且通過(guò)充分詳細(xì)地表示在機(jī)器可讀介質(zhì)上可以便于其制造。
[0067]處理核心159包括執(zhí)行單元142、一組寄存器文件145以及解碼器144。處理核心159也包括對(duì)于理解本發(fā)明的實(shí)施例不是必需的額外電路(沒(méi)有示出)。執(zhí)行單元142用于執(zhí)行處理核心159所接收到的指令。除了執(zhí)行典型的處理器指令外,執(zhí)行單元142也執(zhí)行打包指令集143中的指令,用于對(duì)打包數(shù)據(jù)格式執(zhí)行操作。打包指令集143包括用于執(zhí)行本發(fā)明的諸個(gè)實(shí)施例的指令以及其他打包指令。執(zhí)行單元142通過(guò)內(nèi)部總線耦合至寄存器文件145。寄存器文件145表示處理核心159上的存儲(chǔ)區(qū)域,用于存儲(chǔ)包括數(shù)據(jù)的信息。如前所述的,可以理解,該存儲(chǔ)區(qū)域被用于存儲(chǔ)打包數(shù)據(jù)不是關(guān)鍵。執(zhí)行單元142耦合至解碼器144。解碼器144用于將處理核心159所接收到的指令解碼為控制信號(hào)和/或微代碼進(jìn)入點(diǎn)。響應(yīng)于這些控制信號(hào)和/或微代碼進(jìn)入點(diǎn),執(zhí)行單元142執(zhí)行合適的操作。在一個(gè)實(shí)施例中,解碼器用于解釋指令的操作碼,操作碼指示應(yīng)當(dāng)對(duì)該指令內(nèi)所指示的對(duì)應(yīng)數(shù)據(jù)執(zhí)行何種操作。
[0068]處理核心159耦合至總線141,用于與多個(gè)其他系統(tǒng)設(shè)備進(jìn)行通信,這些系統(tǒng)設(shè)備包括但不限于:例如,同步動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(SDRAM)控制器146、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)控制器147、猝發(fā)閃存接口 148、個(gè)人計(jì)算機(jī)存儲(chǔ)卡國(guó)際協(xié)會(huì)(PCMCIA)/致密閃存(CF)卡控制器149、液晶顯示器(IXD)控制器150、直接存儲(chǔ)器存取(DMA)控制器151、以及替代的總線主接口 152。在一個(gè)實(shí)施例中,數(shù)據(jù)處理系統(tǒng)140也包括I/O橋154,用于經(jīng)由I/O總線153與多個(gè)I/O設(shè)備進(jìn)行通信。這樣的I/O設(shè)備可包括但不限于:例如,通用異步接收機(jī)/發(fā)射機(jī)(UART) 155、通用串行總線(USB) 156、藍(lán)牙無(wú)線UART157、以及I/O擴(kuò)展接Π 158。
[0069]數(shù)據(jù)處理系統(tǒng)140的一個(gè)實(shí)施例提供了移動(dòng)通信、網(wǎng)絡(luò)通信和/或無(wú)線通信,并提供了能夠執(zhí)行SMD操作的處理核心159,SIMD操作包括文本串比較操作。處理核心159可編程有多種音頻、視頻、圖像和通信算法,包括離散變換(諸如Walsh-Hadamard變換、快速傅立葉變換(FFT)、離散余弦變換(DCT)、以及它們相應(yīng)的逆變換)、壓縮/解壓縮技術(shù)(諸如色彩空間變換)、視頻編碼運(yùn)動(dòng)估計(jì)或視頻解碼運(yùn)動(dòng)補(bǔ)償、以及調(diào)制/解調(diào)(MODEM)功能(諸如脈沖編碼調(diào)制PCM)。
[0070]圖1C示出能夠執(zhí)行用于在多個(gè)測(cè)試源上提供或測(cè)試和與測(cè)試功能的數(shù)據(jù)處理系統(tǒng)的另一替代實(shí)施例。根據(jù)一個(gè)替代實(shí)施例,數(shù)據(jù)處理系統(tǒng)160可包括主處理器166、SMD協(xié)處理器161、高速緩存處理器167以及輸入/輸出系統(tǒng)168。輸入/輸出系統(tǒng)168可選地耦合至無(wú)線接口 169。SMD協(xié)處理器161能夠執(zhí)行包括根據(jù)一個(gè)實(shí)施例的指令的操作。處理核心170可適于以一種或多種處理技術(shù)來(lái)制造,并且通過(guò)充分詳細(xì)地表示在機(jī)器可讀介質(zhì)上可以便于包括處理核心170的數(shù)據(jù)處理系統(tǒng)160的全部或一部分的制造。
[0071]對(duì)于一個(gè)實(shí)施例,SMD協(xié)處理器161包括執(zhí)行單元162以及一組寄存器文件164。主處理器166的一個(gè)實(shí)施例包括解碼器165,用于識(shí)別指令集163的指令,指令集163包括根據(jù)一個(gè)實(shí)施例的用于由執(zhí)行單元162所執(zhí)行的指令。對(duì)于替換實(shí)施例,SMD協(xié)處理器161也包括解碼器165B的至少一部分以解碼指令集163的指令。處理核心170也包括對(duì)于理解本發(fā)明的實(shí)施例不是必需的額外電路(沒(méi)有示出)。
[0072]在操作中,主處理器166執(zhí)行數(shù)據(jù)處理指令流,數(shù)據(jù)處理指令流控制通用類(lèi)型的數(shù)據(jù)處理操作,包括與高速緩存存儲(chǔ)器167以及輸入/輸入系統(tǒng)168的交互。SMD協(xié)處理器指令嵌入數(shù)據(jù)處理指令流中。主處理器166的解碼器165將這些SMD協(xié)處理器指令識(shí)別為可由附連的SMD協(xié)處理器161來(lái)執(zhí)行的類(lèi)型。因此,主處理器166在協(xié)處理器總線171上發(fā)出這些SMD協(xié)處理器指令(或表示SMD協(xié)處理器指令的控制信號(hào)),任何附連的SMD協(xié)處理器從協(xié)處理器總線171接收到這些指令。在該情況中,SMD協(xié)處理器161將接受并執(zhí)行任何接收到的針對(duì)該SMD協(xié)處理器的SMD協(xié)處理器指令。
[0073]可經(jīng)由無(wú)線接口 169接收數(shù)據(jù)以通過(guò)SMD協(xié)處理器指令進(jìn)行處理。對(duì)于一個(gè)示例,語(yǔ)音通信可以數(shù)字信號(hào)的形式被接收到,其將被SMD協(xié)處理器指令所處理,以重新生成表示該語(yǔ)音通信的數(shù)字音頻采樣。對(duì)于另一個(gè)示例,壓縮音頻和/或視頻可以數(shù)字位流的形式被接收到,其將被SMD協(xié)處理器指令所處理,以重新生成數(shù)字音頻采樣和/或運(yùn)動(dòng)視頻巾貞。對(duì)于處理核心170的一個(gè)實(shí)施例,主處理器166和SIMD協(xié)處理器161被集成在單個(gè)處理核心170中,該單個(gè)處理核心170包括執(zhí)行單元162、一組寄存器文件164、以及解碼器165以識(shí)別指令集163的指令,指令集163包括根據(jù)一個(gè)實(shí)施例的指令。
[0074]圖2是包括邏輯電路以執(zhí)行根據(jù)本發(fā)明的一個(gè)實(shí)施例的指令的處理器200的微體系結(jié)構(gòu)的框圖。在一些實(shí)施例中,根據(jù)一個(gè)實(shí)施例的指令可被實(shí)現(xiàn)為對(duì)具有字節(jié)大小、字大小、雙字大小、四字大小等并具有諸多數(shù)據(jù)類(lèi)型(諸如單精度和雙精度整數(shù)和浮點(diǎn)數(shù)據(jù)類(lèi)型)的數(shù)據(jù)元素執(zhí)行操作。在一個(gè)實(shí)施例中,有序前端201是處理器200的一部分,其獲取將要被執(zhí)行的指令,并準(zhǔn)備這些指令以在稍后供處理器流水線使用。前端201可包括諸個(gè)單元。在一個(gè)實(shí)施例中,指令預(yù)取器226從存儲(chǔ)器獲取指令,并將指令饋送至指令解碼器228,指令解碼器228隨后解碼或解釋指令。例如,在一個(gè)實(shí)施例中,解碼器將所接收到的指令解碼為機(jī)器可執(zhí)行的被稱(chēng)為“微指令”或“微操作”(也稱(chēng)為微操作數(shù)或UOP)的一個(gè)或多個(gè)操作。在其他實(shí)施例中,解碼器將指令解析為操作碼和對(duì)應(yīng)的數(shù)據(jù)及控制字段,它們被微體系結(jié)構(gòu)用于執(zhí)行根據(jù)一個(gè)實(shí)施例的操作。在一個(gè)實(shí)施例中,追蹤高速緩存230接受經(jīng)解碼的微操作,并將它們組裝為程序有序序列或微操作隊(duì)列234中的蹤跡,以用于執(zhí)行。當(dāng)追蹤高速緩存230遇到復(fù)雜指令時(shí),微代碼ROM232提供完成操作所需的微操作。
[0075]—些指令被轉(zhuǎn)換為單個(gè)微操作,而其他指令需要若干個(gè)微操作以完成整個(gè)操作。在一個(gè)實(shí)施例中,如果需要超過(guò)四個(gè)微操作來(lái)完成指令,則解碼器228訪問(wèn)微代碼R0M232以進(jìn)行該指令。對(duì)于一個(gè)實(shí)施例,指令可被解碼為少量的微操作以用于在指令解碼器228處進(jìn)行處理。在另一個(gè)實(shí)施例中,如果需要若干微操作來(lái)完成操作,則可將指令存儲(chǔ)在微代碼R0M232中。追蹤高速緩存230參考進(jìn)入點(diǎn)可編程邏輯陣列(PLA)來(lái)確定正確的微指令指針,以從微代碼R0M232讀取微代碼序列以完成根據(jù)一個(gè)實(shí)施例的一個(gè)或多個(gè)指令。在微代碼R0M232完成對(duì)于指令的微操作序列化之后,機(jī)器的前端201恢復(fù)從追蹤高速緩存230提取微操作。
[0076]無(wú)序執(zhí)行引擎203是將指令準(zhǔn)備好用于執(zhí)行的單元。無(wú)序執(zhí)行邏輯具有若干個(gè)緩沖器,用于將指令流平滑并且重排序,以?xún)?yōu)化指令流進(jìn)入流水線后的性能,并調(diào)度指令流以供執(zhí)行。分配器邏輯分配每個(gè)微操作需要的機(jī)器緩沖器和資源,以用于執(zhí)行。寄存器重命名邏輯將諸個(gè)邏輯寄存器重命名為寄存器文件中的條目。在指令調(diào)度器(存儲(chǔ)器調(diào)度器、快速調(diào)度器202、慢速/通用浮點(diǎn)調(diào)度器204、簡(jiǎn)單浮點(diǎn)調(diào)度器206)之前,分配器也將每個(gè)微操作的條目分配在兩個(gè)微操作隊(duì)列中的一個(gè)之中,一個(gè)微操作隊(duì)列用于存儲(chǔ)器操作,另一個(gè)微操作隊(duì)列用于非存儲(chǔ)器操作。微操作調(diào)度器202、204、206基于對(duì)它們的依賴(lài)輸入寄存器操作數(shù)源的準(zhǔn)備就緒以及微操作完成它們的操作所需的執(zhí)行資源的可用性來(lái)確定微操作何時(shí)準(zhǔn)備好用于執(zhí)行。一個(gè)實(shí)施例的快速調(diào)度器202可在主時(shí)鐘周期的每半個(gè)上進(jìn)行調(diào)度,而其他調(diào)度器可僅僅在每個(gè)主處理器時(shí)鐘周期上調(diào)度一次。調(diào)度器對(duì)分配端口進(jìn)行仲裁以調(diào)度微操作以便執(zhí)行。
[0077]寄存器文件208、210位于調(diào)度器202、204、206和執(zhí)行塊211中的執(zhí)行單元212、214、216、218、220、222、224之間。也存在單獨(dú)的寄存器文件208、210,分別用于整數(shù)和浮點(diǎn)操作。一個(gè)實(shí)施例的每個(gè)寄存器文件208、210也包括旁路網(wǎng)絡(luò),旁路網(wǎng)絡(luò)可將剛完成的還沒(méi)有被寫(xiě)入寄存器文件的結(jié)果旁路或轉(zhuǎn)發(fā)給新的依賴(lài)微操作。整數(shù)寄存器文件208和浮點(diǎn)寄存器文件210也能夠彼此通信數(shù)據(jù)。對(duì)于一個(gè)實(shí)施例,整數(shù)寄存器文件208被劃分為兩個(gè)單獨(dú)的寄存器文件,一個(gè)寄存器文件用于低階的32位數(shù)據(jù),第二個(gè)寄存器文件用于高階的32位數(shù)據(jù)。一個(gè)實(shí)施例的浮點(diǎn)寄存器文件210具有128位寬度的條目,因?yàn)楦↑c(diǎn)指令通常具有從64至128位寬度的操作數(shù)。
[0078]執(zhí)行塊211 包括執(zhí)行單元 212、214、216、218、220、222、224,在執(zhí)行單元 212、214、216、218、220、222、224中實(shí)際執(zhí)行指令。該區(qū)塊包括寄存器文件208、210,寄存器文件208、210存儲(chǔ)微指令需要執(zhí)行的整數(shù)和浮點(diǎn)數(shù)據(jù)操作數(shù)值。一個(gè)實(shí)施例的處理器200包括有多個(gè)執(zhí)行單元:地址生成單元(AGU) 212、AGU214、快速ALU216、快速ALU218、慢速ALU220、浮點(diǎn)ALU222、浮點(diǎn)移動(dòng)單元224。對(duì)于一個(gè)實(shí)施例,浮點(diǎn)執(zhí)行塊222、224執(zhí)行浮點(diǎn)、MMX、SIMD、SSE以及其他操作。一個(gè)實(shí)施例的浮點(diǎn)ALU222包括64位/64位浮點(diǎn)除法器,用于執(zhí)行除法、平方根、以及余數(shù)微操作。對(duì)于本發(fā)明的諸個(gè)實(shí)施例,涉及浮點(diǎn)值的指令可使用浮點(diǎn)硬件來(lái)處理。在一個(gè)實(shí)施例中,ALU操作進(jìn)入高速ALU執(zhí)行單元216、218。一個(gè)實(shí)施例的高速ALU216、218可執(zhí)行高速操作,有效等待時(shí)間為半個(gè)時(shí)鐘周期。對(duì)于一個(gè)實(shí)施例,大多數(shù)復(fù)雜整數(shù)操作進(jìn)入慢速ALU220,因?yàn)槁貯LU220包括用于長(zhǎng)等待時(shí)間類(lèi)型操作的整數(shù)執(zhí)行硬件,諸如,乘法器、移位器、標(biāo)記邏輯和分支處理。存儲(chǔ)器加載/存儲(chǔ)操作由AGU212、214來(lái)執(zhí)行。對(duì)于一個(gè)實(shí)施例,整數(shù)ALU216、218、220被描述為對(duì)64位數(shù)據(jù)操作數(shù)執(zhí)行整數(shù)操作。在替代實(shí)施例中,可實(shí)現(xiàn)ALU216、218、220以支持包括16、32、128、256等各種數(shù)據(jù)位。類(lèi)似地,可實(shí)現(xiàn)浮點(diǎn)單元222、224以支持具有各種位寬的多個(gè)操作數(shù)。對(duì)于一個(gè)實(shí)施例,浮點(diǎn)單元222、224可結(jié)合SMD和多媒體指令對(duì)128位寬度打包數(shù)據(jù)操作數(shù)進(jìn)行操作。
[0079]在一個(gè)實(shí)施例中,在父加載完成執(zhí)行之前,微操作調(diào)度器202、204、206就分派依賴(lài)操作。因?yàn)樵谔幚砥?00中微操作被投機(jī)地調(diào)度和執(zhí)行,所以處理器200也包括處理存儲(chǔ)器未命中的邏輯。如果數(shù)據(jù)加載在數(shù)據(jù)高速緩存中未命中,則可能存在帶有臨時(shí)錯(cuò)誤數(shù)據(jù)離開(kāi)調(diào)度器并運(yùn)行在流水線中的依賴(lài)操作。重放機(jī)制跟蹤使用錯(cuò)誤數(shù)據(jù)的指令,并重新執(zhí)行這些指令。僅僅依賴(lài)操作需要被重放,而允許獨(dú)立操作完成。處理器的一個(gè)實(shí)施例的調(diào)度器和重放機(jī)制還被設(shè)計(jì)成捕捉在多個(gè)測(cè)試源上提供或測(cè)試和與測(cè)試功能的指令。
[0080]術(shù)語(yǔ)“寄存器”指代被用作為指令的一部分以標(biāo)識(shí)操作數(shù)的板上處理器存儲(chǔ)位置。換句話說(shuō),寄存器是那些處理器外部(從編程者的角度來(lái)看)可用的處理器存儲(chǔ)位置。然而,一實(shí)施例的寄存器不限于表不特定類(lèi)型的電路。相反,一實(shí)施例的寄存器能夠存儲(chǔ)并提供數(shù)據(jù),能夠執(zhí)行在此所述的功能。本文所描述的寄存器可利用任何數(shù)量的不同技術(shù)通過(guò)處理器中的電路來(lái)實(shí)現(xiàn),這些不同技術(shù)諸如專(zhuān)用物理寄存器、利用寄存器重命名的動(dòng)態(tài)分配物理寄存器、專(zhuān)用和動(dòng)態(tài)分配物理寄存器的組合等。在一個(gè)實(shí)施例中,整數(shù)寄存器存儲(chǔ)32位整數(shù)數(shù)據(jù)。一個(gè)實(shí)施例的寄存器文件也包含八個(gè)多媒體SIMD寄存器,用于打包數(shù)據(jù)。對(duì)于以下討論,寄存器應(yīng)被理解為設(shè)計(jì)成保存打包數(shù)據(jù)的數(shù)據(jù)寄存器,諸如來(lái)自美國(guó)加利福尼亞州圣克拉拉市的英特爾公司的啟用了 MMX技術(shù)的微處理器的64位寬MMXtm寄存器(在一些實(shí)例中也稱(chēng)為“mm寄存器)?!边@些MMX寄存器(可用在整數(shù)和浮點(diǎn)格式中)可與伴隨SIMD和SSE指令的打包數(shù)據(jù)元素一起操作。類(lèi)似地,涉及SSE2、SSE3、SSE4或更新的技術(shù)(統(tǒng)稱(chēng)為“SSEx”)的128位寬XMM寄存器也可被用于保持這樣打包數(shù)據(jù)操作數(shù)。在一個(gè)實(shí)施例中,在存儲(chǔ)打包數(shù)據(jù)和整數(shù)數(shù)據(jù)時(shí),寄存器不需要區(qū)分這兩類(lèi)數(shù)據(jù)類(lèi)型。在一個(gè)實(shí)施例中,整數(shù)和浮點(diǎn)數(shù)據(jù)可被包括在相同的寄存器文件中,或被包括在不同的寄存器文件中。進(jìn)一步的,在一個(gè)實(shí)施例中,浮點(diǎn)和整數(shù)數(shù)據(jù)可被存儲(chǔ)在不同的寄存器中,或被存儲(chǔ)在相同的寄存器中。
[0081]在下述附圖的示例中,描述了多個(gè)數(shù)據(jù)操作數(shù)。圖3A示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的多媒體寄存器中的各種打包數(shù)據(jù)類(lèi)型表示。圖3A示出用于128位寬操作數(shù)的打包字節(jié)310、打包字320以及打包雙字(dword)330的數(shù)據(jù)類(lèi)型。本示例的打包字節(jié)格式310是128位長(zhǎng),并且包含十六個(gè)打包字節(jié)數(shù)據(jù)元素。字節(jié)在此被定義為是8位數(shù)據(jù)。每一個(gè)字節(jié)數(shù)據(jù)元素的信息被存儲(chǔ)為:對(duì)于字節(jié)O存儲(chǔ)在位7到位0,對(duì)于字節(jié)I存儲(chǔ)在位15到位8,對(duì)于字節(jié)2存儲(chǔ)在位23到位16,最后對(duì)于字節(jié)15存儲(chǔ)在位120到位127。因此,在該寄存器中使用了所有可用的位。該存儲(chǔ)配置提高了處理器的存儲(chǔ)效率。同樣,因?yàn)樵L問(wèn)了十六個(gè)數(shù)據(jù)元素,所以現(xiàn)在可對(duì)十六個(gè)數(shù)據(jù)元素并行地執(zhí)行一個(gè)操作。
[0082]通常,數(shù)據(jù)元素是單獨(dú)的數(shù)據(jù)片,與具有相同長(zhǎng)度的其他數(shù)據(jù)元素一起存儲(chǔ)在單個(gè)寄存器或存儲(chǔ)器位置中。在涉及SSEx技術(shù)的打包數(shù)據(jù)序列中,存儲(chǔ)在XMM寄存器中的數(shù)據(jù)元素的數(shù)目是128位除以單個(gè)數(shù)據(jù)元素的位長(zhǎng)。類(lèi)似地,在涉及MMX和SSE技術(shù)的打包數(shù)據(jù)序列中,存儲(chǔ)在MMX寄存器中的數(shù)據(jù)元素的數(shù)目是64位除以單個(gè)數(shù)據(jù)元素的位長(zhǎng)。雖然圖3A中所示的數(shù)據(jù)類(lèi)型是128位長(zhǎng),但本發(fā)明的諸個(gè)實(shí)施例也可操作64位寬、256位寬、512位寬或其他大小的操作數(shù)。本示例的打包字格式320是128位長(zhǎng),并且包含八個(gè)打包字?jǐn)?shù)據(jù)元素。每個(gè)打包字包含十六位的信息。圖3A的打包雙字格式330是128位長(zhǎng),并且包含四個(gè)打包雙字?jǐn)?shù)據(jù)元素。每個(gè)打包雙字?jǐn)?shù)據(jù)元素包含三十二位信息。打包四字是128位長(zhǎng),并包含兩個(gè)打包四字?jǐn)?shù)據(jù)元素。
[0083]圖3B示出了替代的寄存器內(nèi)數(shù)據(jù)存儲(chǔ)格式。每個(gè)打包數(shù)據(jù)可包括超過(guò)一個(gè)獨(dú)立數(shù)據(jù)元素。示出了三個(gè)打包數(shù)據(jù)格式:打包半數(shù)據(jù)元素314、打包單數(shù)據(jù)元素342、以及打包雙數(shù)據(jù)元素343。打包半數(shù)據(jù)元素341、打包單數(shù)據(jù)元素342、打包雙數(shù)據(jù)元素343的一個(gè)實(shí)施例包含定點(diǎn)數(shù)據(jù)元素。對(duì)于替代實(shí)施例中,一個(gè)或多個(gè)打包半數(shù)據(jù)元素341、打包單數(shù)據(jù)元素342、打包雙數(shù)據(jù)元素343可包含浮點(diǎn)數(shù)據(jù)元素。打包半數(shù)據(jù)元素341的一個(gè)替代實(shí)施例是一百二十八位長(zhǎng)度,包含八個(gè)16位數(shù)據(jù)元素。打包單數(shù)據(jù)元素342的一個(gè)替代實(shí)施例是一百二十八位長(zhǎng)度,且包含四個(gè)32位數(shù)據(jù)元素。打包雙數(shù)據(jù)元素343的一個(gè)實(shí)施例是一百二十八位長(zhǎng)度,且包含兩個(gè)64位數(shù)據(jù)元素??梢岳斫獾氖牵@樣的打包數(shù)據(jù)格式進(jìn)一步可被擴(kuò)展至其他寄存器長(zhǎng)度,例如,96位、160位、192位、224位、256位、512位或更長(zhǎng)。
[0084]圖3C示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的多媒體寄存器中的多種有符號(hào)和無(wú)符號(hào)打包數(shù)據(jù)類(lèi)型表示。無(wú)符號(hào)打包字節(jié)表示344示出了 SMD寄存器中的無(wú)符號(hào)打包字節(jié)的存儲(chǔ)。每一個(gè)字節(jié)數(shù)據(jù)元素的信息被存儲(chǔ)為:對(duì)于字節(jié)O存儲(chǔ)在位7到位0,對(duì)于字節(jié)I存儲(chǔ)在位15到位8,對(duì)于字節(jié)2存儲(chǔ)在位23到位16,等等,最后對(duì)于字節(jié)15存儲(chǔ)在位120到位127。因此,在該寄存器中使用了所有可用的位。該存儲(chǔ)配置可提高處理器的存儲(chǔ)效率。同樣,因?yàn)樵L問(wèn)了十六個(gè)數(shù)據(jù)元素,所以可對(duì)十六個(gè)數(shù)據(jù)元素并行地執(zhí)行一個(gè)操作。有符號(hào)打包字節(jié)表示345示出了有符號(hào)打包字節(jié)的存儲(chǔ)。注意到,每個(gè)字節(jié)數(shù)據(jù)元素的第八位是符號(hào)指示符。無(wú)符號(hào)打包字表示346示出了 SMD寄存器中字7到字O如何被存儲(chǔ)。有符號(hào)打包字表示347類(lèi)似于無(wú)符號(hào)打包字寄存器內(nèi)表示346。注意到,每個(gè)字?jǐn)?shù)據(jù)元素的第十六位是符號(hào)指示符。無(wú)符號(hào)打包雙字表示348示出了雙字?jǐn)?shù)據(jù)元素如何存儲(chǔ)。有符號(hào)打包雙字表示349類(lèi)似于無(wú)符號(hào)打包雙字寄存器內(nèi)表示348。注意到,必要的符號(hào)位是每個(gè)雙字?jǐn)?shù)據(jù)元素的第三十二位。
[0085]圖3D是與可從美國(guó)加利福尼亞艸丨圣克拉拉市的英特爾公司的萬(wàn)維網(wǎng)(www)intel.com/products/processor/manuals/ 上獲得的 “hitel? 64 和 IA-32 英特爾體系結(jié)構(gòu)軟件開(kāi)發(fā)者手冊(cè)卷2:指令集參考(丨ntel? 64和IA_32Intel Architecture SoftwareDeveloper’s Manual Volume2:1nstruct1n Set Reference),,中描述的操作碼格式類(lèi)型相對(duì)應(yīng)的具有32或更多位的操作編碼(操作碼)格式360以及寄存器/存儲(chǔ)器操作數(shù)尋址模式的一個(gè)實(shí)施例的描述。在一個(gè)實(shí)施例中,可通過(guò)一個(gè)或更多個(gè)字段361和362來(lái)編碼指令??梢詷?biāo)識(shí)每個(gè)指令高達(dá)兩個(gè)操作數(shù)位置,包括高達(dá)兩個(gè)源操作數(shù)標(biāo)識(shí)符364和365。對(duì)于一個(gè)實(shí)施例,目的地操作數(shù)標(biāo)識(shí)符366與源操作數(shù)標(biāo)識(shí)符364相同,而在其他實(shí)施例中它們不相同。對(duì)于可選實(shí)施例,目的地操作數(shù)標(biāo)識(shí)符366與源操作數(shù)標(biāo)識(shí)符365相同,而在其他實(shí)施例中它們不相同。在一個(gè)實(shí)施例中,由源操作數(shù)標(biāo)識(shí)符364和365所標(biāo)識(shí)的源操作數(shù)中的一個(gè)被指令的結(jié)果所覆寫(xiě),而在其他實(shí)施例中,標(biāo)識(shí)符364對(duì)應(yīng)于源寄存器元素,而標(biāo)識(shí)符365對(duì)應(yīng)于目的地寄存器元素。對(duì)于一個(gè)實(shí)施例,操作數(shù)標(biāo)識(shí)符364和365可被用于標(biāo)識(shí)32位或64位的源和目的地操作數(shù)。
[0086]圖3E示出了具有四十個(gè)或更多位的另一個(gè)替代操作編碼(操作碼)格式370。操作碼格式370對(duì)應(yīng)于操作碼格式360,并包括可選的前綴字節(jié)378。根據(jù)一個(gè)實(shí)施例的指令可通過(guò)字段378、371和372中的一個(gè)或多個(gè)來(lái)編碼。通過(guò)源操作數(shù)標(biāo)識(shí)符374和375以及通過(guò)前綴字節(jié)378,可標(biāo)識(shí)每個(gè)指令中高達(dá)兩個(gè)操作數(shù)位置。對(duì)于一個(gè)實(shí)施例,前綴字節(jié)378可被用于標(biāo)識(shí)32位或64位的源和目的地操作數(shù)。對(duì)于一個(gè)實(shí)施例,目的地操作數(shù)標(biāo)識(shí)符376與源操作數(shù)標(biāo)識(shí)符374相同,而在其他實(shí)施例中它們不相同。對(duì)于替代實(shí)施例,目的地操作數(shù)標(biāo)識(shí)符376與源操作數(shù)標(biāo)識(shí)符375相同,而在其他實(shí)施例中它們不相同。在一個(gè)實(shí)施例中,指令對(duì)由操作數(shù)標(biāo)識(shí)符374和375所標(biāo)識(shí)的一個(gè)或多個(gè)操作數(shù)進(jìn)行操作,并且由操作數(shù)標(biāo)識(shí)符374和375所標(biāo)識(shí)的一個(gè)或多個(gè)操作數(shù)被指令的結(jié)果所覆寫(xiě),然而在其他實(shí)施例中,由標(biāo)識(shí)符374和375所標(biāo)識(shí)的操作數(shù)被寫(xiě)入另一個(gè)寄存器中的另一個(gè)數(shù)據(jù)元素中。操作碼格式360和370允許由MOD字段363和373以及由可選的比例-變址-基址(scale-1ndex-base)和位移(displacement)字節(jié)所部分指定的寄存器到寄存器尋址、存儲(chǔ)器到寄存器尋址、由存儲(chǔ)器對(duì)寄存器尋址、由寄存器對(duì)寄存器尋址、直接對(duì)寄存器尋址、寄存器至存儲(chǔ)器尋址。
[0087]接下來(lái)轉(zhuǎn)到圖3F,在一些替換實(shí)施例中,64位(或128位、或256位、或512位或更多)單指令多數(shù)據(jù)(SMD)算術(shù)操作可經(jīng)由協(xié)處理器數(shù)據(jù)處理(CDP)指令來(lái)執(zhí)行。操作編碼(操作碼)格式380示出了一個(gè)這樣的CDP指令,其具有CDP操作碼字段382和389。對(duì)于替代實(shí)施例,該類(lèi)型⑶P指令操作可由字段383、384、387和388中的一個(gè)或多個(gè)來(lái)編碼??梢詫?duì)每個(gè)指令標(biāo)識(shí)高達(dá)三個(gè)操作數(shù)位置,包括高達(dá)兩個(gè)源操作數(shù)標(biāo)識(shí)符385和390以及一個(gè)目的地操作數(shù)標(biāo)識(shí)符386。協(xié)處理器的一個(gè)實(shí)施例可對(duì)8、16、32和64位值操作。對(duì)于一個(gè)實(shí)施例,對(duì)整數(shù)數(shù)據(jù)元素執(zhí)行指令。在一些實(shí)施例中,使用條件字段381,可有條件地執(zhí)行指令。對(duì)于一些實(shí)施例,源數(shù)據(jù)大小可通過(guò)字段383來(lái)編碼。在一些實(shí)施例中,可對(duì)SMD字段執(zhí)行零(Z)、負(fù)(N)、進(jìn)位(C)和溢出(V)檢測(cè)。對(duì)于一些指令,飽和類(lèi)型可通過(guò)字段384來(lái)編碼。
[0088]現(xiàn)在轉(zhuǎn)到圖3G,其描繪了根據(jù)另一實(shí)施例的與可從美國(guó)加利福尼亞州圣克拉拉市的英特爾公司的萬(wàn)維網(wǎng)(www) intel.com/products/processor/manuals/上獲得的“Intel? 高級(jí)向量擴(kuò)展編程參考(Intel? Advanced Vector Extens1ns ProgrammingReference)”中描述的操作碼格式類(lèi)型相對(duì)應(yīng)的用于在多個(gè)測(cè)試源上提供或測(cè)試和與測(cè)試功能的另一替代操作編碼(操作碼)格式397。
[0089]原始x86指令集向I字節(jié)操作碼提供多種地址字節(jié)(syllable)格式以及包含在附加字節(jié)中的直接操作數(shù),其中可從第一個(gè)“操作碼”字節(jié)中獲知附加字節(jié)的存在。此外,特定字節(jié)值被預(yù)留給操作碼作為修改符(稱(chēng)為前綴prefix,因?yàn)樗鼈儽环胖迷谥噶钪?。當(dāng)256個(gè)操作碼字節(jié)的原始配置(包括這些特殊前綴值)耗盡時(shí),指定單個(gè)字節(jié)以跳出(escape)到新的256個(gè)操作碼集合。因?yàn)樘砑恿讼蛄恐噶?諸如,SIMD),即便通過(guò)使用前綴進(jìn)行了擴(kuò)展以后,也需要產(chǎn)生更多的操作碼,并且“兩字節(jié)”操作碼映射也已經(jīng)不夠。為此,將新指令加入附加的映射中,附加的映射使用兩字節(jié)加上可選的前綴作為標(biāo)識(shí)符。
[0090]除此外,為了便于在64位模式中實(shí)現(xiàn)額外的寄存器,在前綴和操作碼(以及任何的用于確定操作碼所需的跳出字節(jié))之間使用額外的前綴(被稱(chēng)為“REX”)。在一個(gè)實(shí)施例中,REX具有4個(gè)“有效載荷”位,以指示在64位模式中使用附加的寄存器。在其他實(shí)施例中,可具有比4位更少或更多的位。至少一個(gè)指令集的通用格式(一般對(duì)應(yīng)于格式360和/或格式370)被一般地不出如下:
[0091][prefixes] [rex] escape [escape2] opcode modrm (等等)
[0092]操作碼格式397對(duì)應(yīng)于操作碼格式370,并包括可選的VEX前綴字節(jié)391 (在一個(gè)實(shí)施例中,以十六進(jìn)制的C4開(kāi)始)以替換大部分的其他公共使用的傳統(tǒng)指令前綴字節(jié)和跳出代碼。例如,以下示出了使用兩個(gè)字段來(lái)編碼指令的實(shí)施例,其可在原始指令中存在第二跳出代碼時(shí)、或在需要在REX字段中使用額外位(諸如,XB和W字段)時(shí)被使用。在以下所示的實(shí)施例中,傳統(tǒng)跳出由新的跳出值所表示,傳統(tǒng)前綴被完全壓縮為“有效載荷(payload)”字節(jié)的一部分,傳統(tǒng)前綴被重新申明并可用于未來(lái)的擴(kuò)展,第二跳出代碼被壓縮在“映射(map)”字段中且未來(lái)的映射或特征空間可用,并且加入新的特征(諸如,增加的向量長(zhǎng)度以及額外的源寄存器區(qū)分符)。
[0093]

【權(quán)利要求】
1.一種用于在處理器中融合指令的方法,包括: 獲取多個(gè)指令,所述多個(gè)指令包括指定第一操作數(shù)目的地的第一指令、指定第二操作數(shù)源的第二指令以及指定分支條件的第三指令;以及 將所述多個(gè)指令的一部分融合成單個(gè)微操作,如果所述第一操作數(shù)目的地和所述第二操作數(shù)源相同,并且所述分支條件取決于第二指令,則所述部分包括第一和第二指令二者。
2.如權(quán)利要求1所述的方法,其特征在于,如果所述第一操作數(shù)目的地和所述第二操作數(shù)源相同,且第二和第三指令是相繼的,并且第二指令是測(cè)試指令,則所述部分包括第一、第二和第三指令。
3.如權(quán)利要求2所述的方法,其特征在于,所述第一指令是邏輯或指令。
4.如權(quán)利要求2所述的方法,其特征在于,所述第一指令是邏輯與指令。
5.如權(quán)利要求1所述的方法,其特征在于,如果所述第一操作數(shù)目的地和所述第二操作數(shù)源相同,且第二和第三指令是相繼的,并且第二指令是邏輯與指令,則所述部分包括第一、第二和第三指令。
6.如權(quán)利要求1所述的方法,其特征在于,如果所述第一操作數(shù)目的地和所述第二操作數(shù)源相同,且第二和第三指令是相繼的,并且第一指令是邏輯或指令,則所述部分包括第 一、第二和第三指令。
7.如權(quán)利要求1所述的方法,其特征在于,如果所述第一操作數(shù)目的地和所述第二操作數(shù)源相同,且第二和第三指令是相繼的,并且第一指令是邏輯與指令,則所述部分包括第一、第二和第三指令。
8.一種處理器,包括: 第一流水線級(jí),用于獲取多個(gè)指令,所述多個(gè)指令包括指定第一操作數(shù)目的地的第一指令、指定第二操作數(shù)源的第二指令以及指定分支條件的第三指令;以及 第二流水線級(jí),用于將所述多個(gè)指令的一部分解碼成單個(gè)第一微操作,如果所述第一操作數(shù)目的地和所述第二操作數(shù)源相同,并且所述分支條件取決于第二指令,則所述部分包括第一和第二指令二者。
9.如權(quán)利要求8所述的處理器,其特征在于,如果所述第一操作數(shù)目的地和所述第二操作數(shù)源相同,且第二和第三指令是相繼的,并且第二指令是測(cè)試指令,則所述部分包括第一、第二和第三指令。
10.如權(quán)利要求9所述的處理器,其特征在于,所述第一指令是邏輯或指令。
11.如權(quán)利要求9所述的處理器,其特征在于,所述第一指令是邏輯與指令。
12.如權(quán)利要求8所述的處理器,其特征在于,如果所述第一操作數(shù)目的地和所述第二操作數(shù)源相同,且第二指令是測(cè)試指令,并且第一指令是邏輯或指令,則所述部分包括第一指令和第二指令二者。
13.如權(quán)利要求12所述的處理器,其特征在于,包括: 第三流水線級(jí),包括微融合邏輯,用于:如果所述分支條件取決于第二指令,則將所述第三指令的第二微操作與所述單個(gè)第一微操作融合。
14.如權(quán)利要求8所述的處理器,其特征在于,如果所述第一操作數(shù)目的地和所述第二操作數(shù)源相同,且第二和第三指令是相繼的,并且第一指令是邏輯或指令,則所述部分包括第一、第二和第三指令。
15.如權(quán)利要求8所述的處理器,其特征在于,如果所述第一操作數(shù)目的地和所述第二操作數(shù)源相同,且第二和第三指令是相繼的,并且第一指令是邏輯與指令,則所述部分包括第一、第二和第三指令。
16.一種用于在處理器中融合指令的系統(tǒng),包括: 存儲(chǔ)器,用于存儲(chǔ)多個(gè)指令;以及 處理器,包括: 第一流水線級(jí),用于獲取所述多個(gè)指令,所述多個(gè)指令包括指定第一操作數(shù)目的地的第一指令、指定第二操作數(shù)源的第二指令以及指定分支條件的第三指令;以及 第二流水線級(jí),用于將所述多個(gè)指令的一部分解碼成單個(gè)微操作,如果所述第一操作數(shù)目的地和所述第二操作數(shù)源相同,并且所述分支條件取決于第二指令,則所述部分包括第一和第二指令二者。
17.如權(quán)利要求16所述的系統(tǒng),其特征在于,如果所述第一操作數(shù)目的地和所述第二操作數(shù)源相同,且第二和第三指令是相繼的,并且第二指令是測(cè)試指令,則所述部分包括第一、第二和第三指令。
18.如權(quán)利要求17所述的系統(tǒng),其特征在于,所述第一指令是邏輯或指令。
19.如權(quán)利要求17所述的系統(tǒng),其特征在于,所述第一指令是邏輯與指令。
20.如權(quán)利要求16所述的系統(tǒng),其特征在于,所述處理器包括: 第三流水線級(jí),包括微融合邏輯,用于:如果所述分支條件取決于第二指令,則將所述第三指令的第二微操作與所述單個(gè)第一微操作融合。
21.一種處理器,包括: 解碼級(jí),用于解碼: 第一指令,所述第一指令指定第一源/目的地?cái)?shù)據(jù)操作數(shù)和第二源數(shù)據(jù)操作數(shù), 第二指令,所述第二指令指定第一源數(shù)據(jù)操作數(shù)和第三源數(shù)據(jù)操作數(shù),以及 第三指令,所述第三指令指定分支目標(biāo); 所述解碼級(jí)用于將第一指令與第二指令以及第三指令融合,以作為單個(gè)融合的微操作來(lái)執(zhí)行;以及 一個(gè)或多個(gè)執(zhí)行單元,響應(yīng)于所述單個(gè)融合的微操作: 在來(lái)自第一源/目的地?cái)?shù)據(jù)操作數(shù)和第二源數(shù)據(jù)操作數(shù)的數(shù)據(jù)之間執(zhí)行第一邏輯操作, 在來(lái)自第三源數(shù)據(jù)操作數(shù)的數(shù)據(jù)與第一邏輯操作的結(jié)果之間執(zhí)行第二邏輯操作,以設(shè)置條件標(biāo)志,以及 如果條件標(biāo)志被設(shè)置,則執(zhí)行去往分支目標(biāo)的條件分支。
22.如權(quán)利要求21所述的處理器,其特征在于,執(zhí)行所述第二邏輯操作包括邏輯測(cè)試操作并且條件地設(shè)置零標(biāo)志。
23.如權(quán)利要求22所述的處理器,其特征在于,根據(jù)第一指令,在來(lái)自第一源/目的地?cái)?shù)據(jù)操作數(shù)和第二源數(shù)據(jù)操作數(shù)的數(shù)據(jù)之間執(zhí)行邏輯與操作。
24.如權(quán)利要求23所述的處理器,其特征在于,根據(jù)第一指令,在來(lái)自第一源/目的地?cái)?shù)據(jù)操作數(shù)和第二源數(shù)據(jù)操作數(shù)的數(shù)據(jù)之間執(zhí)行邏輯或操作。
【文檔編號(hào)】G06F11/36GK104049945SQ201410097423
【公開(kāi)日】2014年9月17日 申請(qǐng)日期:2014年3月14日 優(yōu)先權(quán)日:2013年3月15日
【發(fā)明者】M·洛克西金, R·凡倫天, J·C·霍恩, M·J·查尼 申請(qǐng)人:英特爾公司
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
乌鲁木齐县| 孝感市| 衡南县| 上虞市| 大厂| 建德市| 北碚区| 牡丹江市| 河曲县| 安阳县| 丹东市| 庆安县| 合川市| 龙游县| 鄯善县| 手游| 阜城县| 东乡| 上饶县| 高碑店市| 三门县| 桦南县| 临泉县| 平罗县| 北海市| 宜春市| 台东县| 西华县| 霍邱县| 汤阴县| 治县。| 汉阴县| 齐河县| 清苑县| 常宁市| 宁波市| 邓州市| 镇康县| 崇信县| 突泉县| 上杭县|