欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于執(zhí)行選擇操作的方法和裝置的制作方法

文檔序號:6376447閱讀:179來源:國知局
專利名稱:用于執(zhí)行選擇操作的方法和裝置的制作方法
技術領域
本發(fā)明涉及計算機系統(tǒng),更具體地說,涉及用于執(zhí)行選擇操作的方法和裝置。
背景技術
在典型的計算機系統(tǒng)中,處理器被實現(xiàn)為使用指令在由大量位(例如,64)所表示的值上進行操作以產(chǎn)生一個結果。例如,執(zhí)行加法指令會將第一個64位值與第二個64位值加在一起,并且將結果存儲為第三個64位值。多媒體應用(例如,以計算機支持的協(xié)作為 目標的應用(CSC-具有混合媒體數(shù)據(jù)操作的遠程電信會議集合)、2D/3D圖形、圖像處理、視頻壓縮/解壓縮、識別算法和音頻操作)要求大量的數(shù)據(jù)操作。數(shù)據(jù)可以由單個大值(例如,64位或128位)表示,或者可以替代地以少量位(例如,8或16或32位)來表示。例如,圖形數(shù)據(jù)可以由8或16位表示,聲音數(shù)據(jù)可以由8或16位表示,整數(shù)數(shù)據(jù)可以由8、16或32位表示,而浮點數(shù)據(jù)可以由32或64位表示。為了改善多媒體應用(以及具有相同特性的其它應用)的效率,處理器可以提供緊縮數(shù)據(jù)格式。緊縮數(shù)據(jù)格式是其中通常被用于表示單個值的位被分為多個固定大小的數(shù)據(jù)元素的數(shù)據(jù)格式,其中每個數(shù)據(jù)元素表示一個分離值。例如,128位寄存器可以被分為四個32位元素,其中每個32位元素表示一個分離的32位值。以這種方式,這些處理器能夠更有效地處理多媒體應用。

發(fā)明內(nèi)容
根據(jù)本發(fā)明的實施例,提供了一種處理器,包括用來存儲數(shù)據(jù)的高速緩存;用來提供對隨機存取存儲器的訪問的存儲器控制器;用來解碼指令的指令解碼邏輯;包括128位緊縮數(shù)據(jù)寄存器的集合的寄存器文件,每個寄存器用來存儲多個緊縮單精度浮點數(shù)據(jù)元素;以及用來執(zhí)行第一指令的執(zhí)行單元,所述第一指令包括至少一個識別源緊縮數(shù)據(jù)寄存器的源操作數(shù)以及至少一個識別目標緊縮數(shù)據(jù)寄存器的目標操作數(shù),而且,響應于執(zhí)行所述第一指令,要將至少第一數(shù)據(jù)值從源緊縮數(shù)據(jù)寄存器設置到目標緊縮數(shù)據(jù)寄存器中。根據(jù)本發(fā)明的一個方面,公開一種方法,包括接收指令代碼,所述指令代碼的指令格式包括第一字段和第二字段,第一字段指示第一多位操作數(shù),且第二字段指示第二多位操作數(shù);以及當?shù)谝徊僮鲾?shù)中的一個或多個數(shù)據(jù)元素的符號位非O時,響應于與第一操作數(shù)相關聯(lián)的符號位修改第二操作數(shù)。根據(jù)本發(fā)明的另一方面,公開一種用于執(zhí)行上述方法的裝置,包括執(zhí)行單元;以及包括數(shù)據(jù)的機器可訪問介質(zhì),當所述數(shù)據(jù)被所述執(zhí)行單元訪問時,使所述執(zhí)行單元執(zhí)行上述方法。根據(jù)本發(fā)明的又一方面,公開一種裝置,包括第一輸入,接收第一數(shù)據(jù);第二輸入,接收包括與第一數(shù)據(jù)相同位數(shù)的第二數(shù)據(jù);電路,響應于第一處理器指令,基于控制位從第一操作數(shù)選擇第一數(shù)據(jù)元素,其中所述控制位用于當所述控制位非O時選擇第一數(shù)據(jù)元素。 根據(jù)本發(fā)明的再一方面,公開一種計算機系統(tǒng),包括可尋址存儲器,用于存儲數(shù)據(jù);處理器,包括體系結構可見的存儲區(qū)域,用于存儲控制位;解碼器,用于解碼指令,所述指令的第一字段用于指定N位的源操作數(shù),且第二字段用于指定N位的目標操作數(shù);和執(zhí)行單元,響應于所述解碼器解碼所述指令,基于控制位從所述源操作數(shù)選擇第一數(shù)據(jù)元素,其中所述控制位用于當所述控制位非O時選擇第一數(shù)據(jù)元素。


通過附圖中圖的例子對本發(fā)明進行說明,而并不是限制本發(fā)明。圖Ia-Ic示出根據(jù)本發(fā)明備選實施例的示例計算機系統(tǒng)。圖2a_2b示出根據(jù)本發(fā)明備選實施例的處理器的寄存器文件。圖3示出處理器執(zhí)行來操作數(shù)據(jù)的過程的至少一個實施例的流程圖。圖4示出根據(jù)本發(fā)明備選實施例的緊縮數(shù)據(jù)類型。圖5示出根據(jù)本發(fā)明至少一個實施例的寄存器內(nèi)緊縮字節(jié)和寄存器內(nèi)緊縮字數(shù)據(jù)表示。圖6示出根據(jù)本發(fā)明至少一個實施例的寄存器內(nèi)緊縮雙字和寄存器內(nèi)緊縮四字數(shù)據(jù)表示。圖7是示出用于執(zhí)行選擇操作的過程實施例的流程圖。圖8是示出用于執(zhí)行立即選擇操作的過程實施例的流程圖。圖9a_9c示出用于執(zhí)行立即選擇操作的電路的各種實施例。圖10是示出用于執(zhí)行可變選擇操作的過程實施例的流程圖。圖Ila-Ilc示出用于執(zhí)行可變選擇操作的電路的各種實施例。圖12是示出處理器指令的操作代碼格式的各種實施例的框圖。
具體實施例方式在此公開的方法、系統(tǒng)和電路的實施例包括用于響應控制信號而在數(shù)據(jù)的多位上執(zhí)行選擇操作的處理器指令。包括在選擇操作中的數(shù)據(jù)可以是緊縮或非緊縮的數(shù)據(jù)。對于至少一個實施例,處理器被連接到存儲器。存儲器已經(jīng)在其中存儲有第一數(shù)據(jù)和第二數(shù)據(jù)。所述處理器基于控制信號,響應于接收到一個指令,在第一數(shù)據(jù)和第二數(shù)據(jù)中的數(shù)據(jù)元素上執(zhí)行選擇操作,并且將結果存儲在第二數(shù)據(jù)中。本發(fā)明的這些和其它實施例可以依照以下示教而實現(xiàn),并且明顯的是,在以下示教中可以進行各種修改和變化,并沒有背離本發(fā)明的較寬精神和范圍。因此,說明書和附圖應當被認為是說明性的,而不是限制意義,并且本發(fā)明僅依據(jù)權利要求書進行衡量。計算機系統(tǒng)
圖Ia示出根據(jù)本發(fā)明一個實施例的示例計算機系統(tǒng)100。計算機系統(tǒng)100包括用于傳遞信息的互連101。互連101可以包括多點總線、一個或多個點到點互連或二者的任意組合,以及任意其它通信硬件和/或軟件。圖Ia示出了用于處理信息的處理器109,其與互連101連接。處理器109代表任意類型體系結構的中央處理單元,包括CISC或RISC類型體系結構。計算機系統(tǒng)100還包括連接到互連101的用于存儲信息和要被處理器109執(zhí)行的指令的隨機存取存儲器(RAM)或其它動態(tài)存儲設備(稱作主存儲器104)。在處理器109執(zhí)行指令期間,主存儲器104還可以用于存儲臨時變量或其它中間信息。計算機系統(tǒng)100還包括連接到互連101的用于為處理器109存儲靜態(tài)信息和指令的只讀存儲器(ROM) 106和/或其它靜態(tài)存儲設備。數(shù)據(jù)存儲設備107連接到互連101用于存儲信息和指令。圖Ia還示出了處理器109包括執(zhí)行單元130、寄存器文件150、高速緩存160、解碼·器165和內(nèi)部互連170。當然,處理器109還包括對于理解本發(fā)明不需要的額外電路。解碼器165用于解碼由處理器109接收的指令,并且執(zhí)行單元130用于執(zhí)行由處理器109接收的指令。除了識別通常在通用處理器中執(zhí)行的指令之外,如這里所描述的,解碼器165和執(zhí)行單元130還識別用于執(zhí)行條件復制操作(BLEND)操作的指令。解碼器165和執(zhí)行單元130識別用于對緊縮或非緊縮數(shù)據(jù)執(zhí)行BLEND操作的指令。執(zhí)行單元130通過內(nèi)部互連170連接到寄存器文件150。此外,內(nèi)部互連170不需要必需是多點總線,在備選實施例中,可以是點到點互連和其它類型的通信路徑。寄存器文件150表示處理器109的用于存儲信息包括數(shù)據(jù)的存儲區(qū)域。要理解的是,本發(fā)明的一個方面是所描述的用于對緊縮或非緊縮數(shù)據(jù)執(zhí)行BLEND操作的指令實施例。根據(jù)本發(fā)明的該方面,用于存儲數(shù)據(jù)的存儲區(qū)域不是關鍵的。然而,寄存器文件150的實施例在后面參考圖2a_2b進行描述。執(zhí)行單元130連接到高速緩存160和解碼器165。高速緩存160被用于高速緩存數(shù)據(jù)和/或例如來自主存儲器104的控制信號。解碼器165用于將處理器109所接收的指令解碼為控制信號和/或微代碼進入點。這些控制信號和/或微代碼進入點可以從解碼器165轉發(fā)至執(zhí)行單元130。執(zhí)行單元130響應于這些控制信號和/或微代碼進入點而執(zhí)行適當?shù)牟僮???梢允褂萌我鈹?shù)量的不同機制(例如,查找表、硬件實現(xiàn)、PLA等)來實現(xiàn)解碼器165。由此,盡管在此可以用一系列如果/則(if/then)語句來表示由解碼器165和執(zhí)行單元130進行的各種指令執(zhí)行,但是要理解的是,指令的執(zhí)行不需要串行處理這些如果/則語句。而是,用于邏輯執(zhí)行該如果/則處理的任何機制都被認為處于本發(fā)明的范圍之內(nèi)。圖Ia額外地示出了能夠連接到計算機系統(tǒng)100的數(shù)據(jù)存儲設備107(例如,磁盤、光盤和/或其它機器可讀介質(zhì))。此外,數(shù)據(jù)存儲設備107顯示為包括用于由處理器109執(zhí)行的代碼195。代碼195能夠包括一個或多個BLEND指令142的實施例,并且能夠被寫入,以使處理器109為了任意數(shù)量的目的(例如,運動視頻壓縮/解壓縮、圖像濾波、音頻信號壓縮、濾波或合成、調(diào)制/解調(diào)等)而用BLEND指令142來執(zhí)行位測試。計算機系統(tǒng)100還能夠經(jīng)由互連101連接到用于向計算機用戶顯示信息的顯示設備121。顯示設備121能夠包括幀緩沖器、專用圖形再現(xiàn)設備、液晶顯示器(LCD)和/或平板顯不器。包括字母數(shù)字和其它鍵的輸入設備122可以連接到互連101,用于向處理器109傳遞信息和命令選擇。另一種類型的用戶輸入設備是光標控制123,例如鼠標、跟蹤球、筆、觸摸屏或用于向處理器109傳遞方向信息和命令選擇并用于控制顯示設備121上光標移動的光標方向鍵。該輸入設備通常在兩個軸即第一軸(例如,X)和第二軸(例如,y)具有兩種自由度,其允許該設備在平面中指定位置。然而,本發(fā)明不應當局限于僅具有兩種自由度的輸入設備。可以連接到互連101的另一種設備是硬復制設備124,其可以被用于打印指令、數(shù)據(jù)或諸如紙、膠片或相似類型介質(zhì)的介質(zhì)上的其它信息。此外,計算機系統(tǒng)100能夠連接到用于聲音記錄和/或重放的設備125,例如連接到麥克風的用于記錄信息的音頻數(shù)字轉換器。此外,設備125可以包括連接到數(shù)模(D/A)轉換器的用于重放數(shù)字化聲音的揚聲器。計算機系統(tǒng)100能夠是計算機網(wǎng)絡(例如,LAN)中的終端。那么計算機系統(tǒng)100 可以是計算機網(wǎng)絡的計算機子系統(tǒng)。計算機系統(tǒng)100任選地包括視頻數(shù)字化設備126和/或通信設備190(例如,串行通信芯片、無線接口、以太網(wǎng)芯片或調(diào)制解調(diào)器,其提供與外部設備或網(wǎng)絡的通信)。視頻數(shù)字化設備126能夠被用于捕捉視頻圖像,該視頻圖像能夠被傳送至計算機網(wǎng)絡上的其它設備。對于至少一個實施例,處理器109支持與加利福尼亞圣塔克拉拉的Intel公司制造的現(xiàn)有處理器(例如,比如Intel Petitium&處理器、Intel Pentiuiii F*ro處理器、Intel Pentium 〗〗處理器、丨ntdOl· Peiitiiim I 丨1 處理器、丨trk'l·》)Pentium.R 4處理器、
Intel Itanium⑩處理器、Inte騰Itanium 2處理器或Intel· Core Duo處理器)所使用的指令集相兼容的指令集。結果,除了本發(fā)明的操作之外,處理器109還能夠支持現(xiàn)有的處理器操作。處理器109還可以適于以一種或多種處理技術來制造,并且通過被足夠詳細地表示在機器可讀介質(zhì)上可能適于方便所述制造。盡管本發(fā)明在下面結合了基于x86的指令集進行描述,但是備選實施例能夠?qū)⒈景l(fā)明與其它指令集相結合。例如,本發(fā)明能夠結合于使用不同于基于x86的指令集的指令集的64位處理器。圖Ib示出了實現(xiàn)本發(fā)明原理的數(shù)據(jù)處理系統(tǒng)102的備選實施例。數(shù)據(jù)處理系統(tǒng)102的一個實施例是采用Intel XScale 技術的應用處理器。本領域技術人員將容易理解的是,在此描述的實施例能夠采用備選處理系統(tǒng),并沒有背離本發(fā)明的范圍。計算機系統(tǒng)102包括能夠執(zhí)行BLEND操作的處理核心110。對于一個實施例,處理核心110代表任意類型體系結構的處理單元,包括但不限于CISC、RISC或VLIW類型體系結構。處理核心110還可適于以一種或多種處理技術進行制造,并且通過將其足夠詳細地表示在機器可讀介質(zhì)上可能適于方便所述制造。處理核心110包括執(zhí)行單兀130、一組寄存器文件150和解碼器165。處理核心110還包括對于理解本發(fā)明不需要的額外電路(未示出)。執(zhí)行單元130被用于執(zhí)行由處理核心110所接收的指令。除了識別典型的處理器指令之外,執(zhí)行單元130還識別用于對緊縮和非緊縮數(shù)據(jù)格式執(zhí)行BLEND操作的指令。由解碼器165和執(zhí)行單元130所識別的指令集可以包括一個或多個用于BLEND操作的指令,并且還可以包括其它緊縮指令。執(zhí)行單元130通過內(nèi)部總線(再者,其可以是包括多點總線、點到點互連等的任意類型的通信路徑)連接到寄存器文件150。寄存器文件150代表處理核心110用于存儲信息包括數(shù)據(jù)的存儲區(qū)域。如之前所述,要理解的是,用于存儲數(shù)據(jù)的存儲區(qū)域不是關鍵的。執(zhí)行單元130連接到解碼器165。解碼器165被用于將處理核心110所接收的指令解碼為控制信號和/或微代碼進入點。響應于這些控制信號和/或微代碼進入點。這些控制信號和/或微代碼進入點可以被轉發(fā)至執(zhí)行單元130。響應于接收到控制信號和/或微代碼進入點,執(zhí)行單元130可執(zhí)行適當?shù)牟僮?。例如,對于至少一個實施例,執(zhí)行單元130可執(zhí)行在此所述的邏輯比較,并且還可設置如在此所述的狀態(tài)標志或到指定代碼位置的分支,或二者。處理核心110與總線214連接,用于與各種其它系統(tǒng)設備進行通信,例如,所述系統(tǒng)設備可以包括同步動態(tài)隨機存取存儲器(SDRAM)控制器271、靜態(tài)隨機存取存儲器(SRAM)控制器272、突發(fā)閃存接口 273、個人計算機存儲卡國際協(xié)會(PCMCIA)/小型閃存(CF)卡控制器274、液晶顯示器(IXD)控制器275、直接存儲器存取(DMA)控制器276和備選總線主接口 277,但并不局限于此。對于至少一個實施例,數(shù)據(jù)處理系統(tǒng)102還可以包括用于經(jīng)由I/O總線295與各 種I/o設備進行通信的I/O橋290。例如,這樣的I/O設備可以包括例如通用異步接收器/發(fā)送器(UART) 291、通用串行總線(USB) 292、藍牙無線UART 293和I/O擴展接口 294,但并不局限于此。如上述的其它總線,I/O總線295可以是包括多點總線、點到點互連等的任意類型的通信路徑。數(shù)據(jù)處理系統(tǒng)102的至少一個實施例為移動應用提供網(wǎng)絡和/或無線通信,并且處理核心110能夠?qū)o縮和非緊縮數(shù)據(jù)執(zhí)行BLEND操作。處理核心110可以用各種音頻、視頻、成像和通信算法進行編程,包括離散變換、濾波器或卷積;例如色空間變換、視頻編碼運動估計或視頻解碼運動補償?shù)膲嚎s/解壓縮技術;以及例如脈沖編碼調(diào)制(PCM)的調(diào)制/解調(diào)(MODEM)功能。圖Ic示出了能夠?qū)o縮和非緊縮數(shù)據(jù)執(zhí)行BLEND操作的數(shù)據(jù)處理系統(tǒng)103的備選實施例。依據(jù)一個備選實施例,數(shù)據(jù)處理系統(tǒng)103可以包括包含主處理器224以及一個或多個協(xié)處理器226的芯片包310。附加的協(xié)處理器226的可選特性在圖Ic中由虛線表示。例如,一個或多個協(xié)處理器226可以是例如能夠執(zhí)行SMD指令的圖形協(xié)處理器。圖Ic示出了數(shù)據(jù)處理系統(tǒng)103還可以包括高速緩存存儲器278和輸入/輸出系統(tǒng)295,二者均連接到芯片包310。輸入/輸出系統(tǒng)295可以可選擇地連接到無線接口 296。協(xié)處理器226能夠執(zhí)行通用計算操作,并且還能夠執(zhí)行SMD操作。對于至少一個實施例,協(xié)處理器226能夠?qū)o縮和非緊縮數(shù)據(jù)執(zhí)行BLEND操作。對于至少一個實施例,協(xié)處理器226包括執(zhí)行單元130和寄存器文件209。主處理器224的至少一個實施例包括對指令集的指令進行識別和解碼的解碼器165,該指令集包括由執(zhí)行單元130執(zhí)行的BLEND指令。對于備選實施例,協(xié)處理器226還包括對包括BLEND指令的指令集的指令進行解碼的至少一部分解碼器166。數(shù)據(jù)處理系統(tǒng)103還包括對于理解本發(fā)明不需要的額外電路(未示出)。在運行中,主處理器224執(zhí)行控制包括與高速緩存存儲器278和輸入/輸出系統(tǒng)295的交互的通用類型的數(shù)據(jù)處理操作的數(shù)據(jù)處理指令流。嵌入在數(shù)據(jù)處理指令流中的是協(xié)處理器指令。主處理器224的解碼器165將這些協(xié)處理器指令識別為應當由所附的協(xié)處理器226執(zhí)行的類型。相應地,主處理器224在任何附加的協(xié)處理器從其接收指令的協(xié)處理器互連236上發(fā)出這些協(xié)處理器指令(或表示協(xié)處理器指令的控制信號)。對于圖Ic中所示的單個協(xié)處理器實施例,協(xié)處理器226接受并執(zhí)行所接收的供其使用的任何協(xié)處理器指令。協(xié)處理器互連可以是包括多點總線、點到點互連等的任意類型的通信路徑。數(shù)據(jù)可以通過無線接口 296接收,以由協(xié)處理器指令進行處理。對于一個示例,語音通信可以數(shù)字信號形式被接收,這種形式可以由協(xié)處理器指令處理以再生成表示語音通信的數(shù)字音頻采樣。對于另一個示例,壓縮的音頻和/或視頻可以數(shù)字位流形式被接收,這種形式可以由協(xié)處理器指令處理以再生成數(shù)字音頻采樣和/或運動視頻幀。對于至少一個備選實施例,主處理器224和協(xié)處理器226可以被集成到單個處理核心中,所述處理核心包括執(zhí)行單元130、寄存器文件209和解碼器165以識別包括由執(zhí)行單元130執(zhí)行的BLEND指令的指令集的指令。 圖2a示出根據(jù)本發(fā)明一個實施例的處理器的寄存器文件。寄存器文件150可以用于存儲信息,包括控制/狀態(tài)信息、整數(shù)數(shù)據(jù)、浮點數(shù)據(jù)和緊縮數(shù)據(jù)。本領域技術人員將認識到,前述的信息和數(shù)據(jù)列表不是詳盡的、全包含在內(nèi)的列表。對于圖2a所示的實施例,寄存器文件150包括整數(shù)寄存器201、寄存器209、狀態(tài)寄存器208和指令指針寄存器211。狀態(tài)寄存器208指示處理器109的狀態(tài),并且可以包括各種狀態(tài)寄存器。指令指針寄存器211存儲下一個要被執(zhí)行的指令的地址。整數(shù)寄存器201、寄存器209、狀態(tài)寄存器208和指令指針寄存器211均連接到內(nèi)部互連170。附加的寄存器也可以連接到內(nèi)部互連170。內(nèi)部互連170可以是多點總線,但并非必須如此。作為替代,內(nèi)部互連170還可以是任意其它類型的通信路徑,包括點到點互連。對于一個實施例,寄存器209可以被用于緊縮數(shù)據(jù)和浮點數(shù)據(jù)二者。在一個這樣的實施例中,在任意給定時刻,處理器109將寄存器209視為堆棧參考的浮點寄存器或非堆棧參考的緊縮數(shù)據(jù)寄存器。在該實施例中,包括一種機制以允許處理器109在操作在作為堆棧參考的浮點寄存器和非堆棧參考的緊縮數(shù)據(jù)寄存器的寄存器209上之間進行切換。在另一個這樣的實施例中,處理器109可以同時操作在作為非堆棧參考的浮點和緊縮數(shù)據(jù)寄存器的寄存器209上。作為另一個示例,在另一個實施例中,這些相同的寄存器可以用于存儲整數(shù)數(shù)據(jù)。當然,備選實施例可以實現(xiàn)包含更多或更少的寄存器集合。例如,一個備選實施例可包括一個單獨的浮點寄存器集合用于存儲浮點數(shù)據(jù)。作為另一個示例,備選實施例可以包括第一寄存器集合,其中每個寄存器用于存儲控制/狀態(tài)信息,以及第二寄存器集合,其中每個寄存器能夠存儲整數(shù)、浮點和緊縮數(shù)據(jù)。為了清楚起見,實施例的寄存器不應局限于是指特定類型的電路。而是,實施例的寄存器僅需要能夠存儲和提供數(shù)據(jù),并且執(zhí)行在此所描述的功能。各種寄存器集合(例如,整數(shù)寄存器201、寄存器209)可以被實現(xiàn)為包括不同數(shù)量的寄存器和/或不同大小的寄存器。例如,在一個實施例中,整數(shù)寄存器201被實現(xiàn)為存儲32位,而寄存器209被實現(xiàn)為存儲80位(所有的80位被用于存儲浮點數(shù)據(jù),而僅有64被用于緊縮數(shù)據(jù))。此外,寄存器209可以包含8個寄存器,RJUa到&21211。Ri212b、R2212C和R3212d是寄存器209中的個別寄存器的示例。寄存器209中寄存器的32位能夠被移至整數(shù)寄存器201中的整數(shù)寄存器。相似地,整數(shù)寄存器中的值能夠被移至寄存器209中寄存器的32位。在另一個實施例中,整數(shù)寄存器201各包含64位,并且數(shù)據(jù)的64位可以在整數(shù)寄存器201和寄存器209之間移動。在另一個備選實施例中,寄存器209各包含64位,并且寄存器209包含16個寄存器。在另一個備選實施例中,寄存器209包含32個寄存器。圖2b示出了根據(jù)本發(fā)明一個備選實施例的處理器的寄存器文件。寄存器文件150可以被用于存儲信息,包括控制/狀態(tài)信息、整數(shù)數(shù)據(jù)、浮點數(shù)據(jù)和緊縮數(shù)據(jù)。在圖2b所示的實施例中,寄存器文件150包括整數(shù)寄存器201、寄存器209、狀態(tài)寄存器208、擴展寄存器210和指令指針寄存器211。狀態(tài)寄存器208、指令指針寄存器211、整數(shù)寄存器201、寄存器209全都連接到內(nèi)部互連170。此外,擴展寄存器210也連接到內(nèi)部互連170。內(nèi)部互連170可以是多點總線,但并非必須如此。作為替代,內(nèi)部互連170還可以是任意其它類型的通信路徑,包括點到點互連。對于至少一個實施例,擴展寄存器210被用于緊縮的整數(shù)數(shù)據(jù)和緊縮的浮點數(shù)據(jù)。對于備選實施例,擴展寄存器210可以被用于標量數(shù)據(jù)、緊縮的布爾數(shù)據(jù)、緊縮的整數(shù)數(shù)據(jù)和/或緊縮的浮點數(shù)據(jù)。當然,備選實施例可以被實現(xiàn)為包含更多或更少的寄存器集合、每個集合中更多或更少的寄存器或者每個寄存器中更多或更少的數(shù)據(jù)存儲位,并不背 離本發(fā)明的較寬范圍。對于至少一個實施例,整數(shù)寄存器201被實現(xiàn)為存儲32位,寄存器209被實現(xiàn)為存儲80位(所有的80位被用于存儲浮點數(shù)據(jù),而僅有64被用于緊縮數(shù)據(jù)),并且擴展寄存器210被實現(xiàn)為存儲128位。此外,擴展寄存器210可以包括8個寄存器,XRc^Ua到XR7213h。XRQ213a、XR^nb和XR2213c是寄存器210中個別寄存器的示例。對于另一個實施例,整數(shù)寄存器201各包含64位,擴展寄存器210各包含64位,并且擴展寄存器210包含16個寄存器。對于一個實施例,擴展寄存器210的兩個寄存器可以成對操作。對于另一個備選實施例,擴展寄存器210包含32個寄存器。圖3示出了根據(jù)本發(fā)明一個實施例用于操作數(shù)據(jù)的過程300的一個實施例的流程圖。也就是說,圖3示出了在對緊縮數(shù)據(jù)執(zhí)行BLEND操作、對非緊縮數(shù)據(jù)執(zhí)行BLEND操作或執(zhí)行一些其它操作時例如處理器109 (例如,見圖Ia)所進行的過程。在此所公開的過程300和其它過程由處理塊執(zhí)行,所述處理塊可以包括專用硬件或者可由通用機器或?qū)S脵C器或這二者的組合執(zhí)行的軟件或固件操作代碼。圖3示出了方法的處理在“開始”處開始,并且進行至處理塊301。在處理塊301,解碼器165 (例如,見圖Ia)從高速緩存160 (例如,見圖Ia)或互連101 (例如,見圖Ia)接收控制信號。對于至少一個實施例,在塊301所接收的控制信號可以是通常被稱作軟件“指令”的控制信號類型。解碼器165對控制信號進行解碼以確定將要執(zhí)行的操作。處理從處理塊301進行至處理塊302。在處理塊302,解碼器165訪問寄存器文件150(圖Ia)或存儲器(例如,見圖Ia的主存儲器104或高速緩存存儲器160)中的位置。寄存器文件150中的寄存器或存儲器中的存儲器位置根據(jù)控制信號中所指定的寄存器地址進行訪問。例如,用于操作的控制信號能夠包括SRCl、SRC2和DEST寄存器地址。SRCl是第一源寄存器的地址。SRC2是第二源寄存器的地址。在一些情形下,由于并非所有操作都需要兩個源地址,所以SRC2地址是可選的。如果操作不需要SRC2地址,則僅使用SRCl地址。DEST是存儲結果數(shù)據(jù)的目標寄存器的地址。對于至少一個實施例,在由解碼器165所識別的至少一個控制信號中,SRCl或SRC2也可以被用作DEST。存儲在對應寄存器中的數(shù)據(jù)分別被稱作Sourcel、Source2和Result。在一個實施例中,這些數(shù)據(jù)中的每一個的長度均可以是64位。對于備選實施例,這些數(shù)據(jù)中的一個或多個可以是其它長度,例如長度為128位。對于本發(fā)明的另一個實施例,SRC1、SRC2和DEST中的任意一個或全部能夠定義處理器109(圖Ia)或處理核心110(圖Ib)的可尋址存儲空間中的存儲器位置。例如,SRCl可以標識主存儲器104中的存儲器位置,而SRC2標識整數(shù)寄存器201中的第一寄存器,并且DEST標識寄存器209中的第二寄存器。為了在此簡要說明,本發(fā)明將結合訪問寄存器文件150進行描述。然而,本領域技術人員將認識到,作為替代,這些所描述的訪問也可以對存儲器進行。處理從塊302進行至處理塊303。在處理塊303,啟用執(zhí)行單元130 (例如,見圖Ia)對所訪問的數(shù)據(jù)執(zhí)行操作。處理從處理塊303進行至處理塊304。在處理塊304,根據(jù)控制信號的要求,將結果存儲回寄存器文件150或存儲器。然后,處理在“停止”處結束。數(shù)據(jù)存儲格式圖4示出了根據(jù)本發(fā)明一個實施例的緊縮數(shù)據(jù)類型。示出了四個緊縮和一個非緊縮數(shù)據(jù)格式,包括緊縮字節(jié)421、緊縮半倍422、緊縮單倍423、緊縮雙倍424和非緊縮雙四字412。對于至少一個實施例,緊縮字節(jié)格式421為包含16個數(shù)據(jù)元素(B0-B15)的128位長。每個數(shù)據(jù)元素(B0-B15)為I字節(jié)(例如,8位)長度。對于至少一個實施例,緊縮半倍格式422為包含8個數(shù)據(jù)元素(HalfO至HalfT)的128位長。每個數(shù)據(jù)元素(HalfO至Half7)可以保存16位信息。作為選擇,這些16位數(shù)據(jù)元素中的每一個可以被稱作“半字”或“短字”,或者簡單地稱作“字”。對于至少一個實施例,緊縮單倍格式423可以為128位長,且可以保存4個423數(shù)據(jù)元素(SingleO至Single3)。數(shù)據(jù)元素(SingleO至Single3)中的每一個可以保存32位信息。作為選擇,32位數(shù)據(jù)元素中的每一個可以被稱作“dword”或“雙字”。例如,數(shù)據(jù)元素(SingleO至Single3)中的每一個可以表示32位單精度浮點值,因而稱作“緊縮單倍”格式。對于至少一個實施例,緊縮雙倍格式424可以為128位長,并且可以保存2個數(shù)據(jù)元素。緊縮雙倍格式424的每個數(shù)據(jù)元素(DoubleO,Doublel)可以保存64位信息。作為選擇,64位數(shù)據(jù)元素中的每一個可以被稱作“qword”或“四字”。例如,數(shù)據(jù)元素(DoubleO,Doublel)中的每一個可以表示64位雙精度浮點值,因而稱作“緊縮雙倍”格式。非緊縮雙四字格式412可以保存高達128位的數(shù)據(jù)。所述數(shù)據(jù)不需要必需為緊縮數(shù)據(jù)。例如,對于至少一個實施例,非緊縮雙四字格式412的128位信息可以表示單個標量數(shù)據(jù),例如字符、整數(shù)、浮點值或二進制位掩碼值。作為選擇,非緊縮雙四字格式412的128位可以表示不相關位的集合(例如每一位或位組表示不同標志的狀態(tài)寄存器值)等。對于本發(fā)明的至少一個實施例,緊縮單倍423和緊縮雙倍424格式的數(shù)據(jù)元素可以是上面指示的緊縮浮點數(shù)據(jù)元素。在本發(fā)明的備選實施例中,緊縮單倍423和緊縮雙倍424格式的數(shù)據(jù)元素可以是緊縮整數(shù)、緊縮布爾或緊縮浮點數(shù)據(jù)元素。對于本發(fā)明的另一個備選實施例,緊縮字節(jié)421、緊縮半倍422、緊縮單倍423和緊縮雙倍424格式的數(shù)據(jù)元素可以是緊縮整數(shù)或緊縮布爾數(shù)據(jù)元素。對于本發(fā)明的備選實施例,并非全部的緊縮字節(jié)421、緊縮半倍422、緊縮單倍423和緊縮雙倍424數(shù)據(jù)格式都可以被允許或支持。圖5和6示出了根據(jù)本發(fā)明至少一個實施例的寄存器內(nèi)緊縮數(shù)據(jù)存儲表示。圖5分別示出了無符號和有符號的緊縮字節(jié)寄存器內(nèi)格式510和511。例如,無符號緊縮字節(jié)寄存器內(nèi)表示510示出了在128位擴展寄存器XRQ213a到XR7213h (例如,見圖2b)之一中無符號緊縮字節(jié)數(shù)據(jù)的存儲。每個16字節(jié)數(shù)據(jù)元素的信息存儲在字節(jié)O的位7至位O、字節(jié)I的位15至位8、字節(jié)2的位23至位16、字節(jié)3的位31至位24、字節(jié)4的位 39至位32、字節(jié)5的位47至位40、字節(jié)6的位55至位48、字節(jié)7的位63至位56、字節(jié)8的位71至位64、字節(jié)9的位79至位72、字節(jié)10的位87至位80、字節(jié)11的位95至位88、字節(jié)12的位103至位96、字節(jié)13的位111至位104、字節(jié)14的位119至位112和字節(jié)15的位127至位120。因此,在寄存器中所有可用位都被使用。這樣的存儲配置增加了處理器的存儲效率。而且,用所訪問的16個數(shù)據(jù)元素,現(xiàn)在能夠同時在16個數(shù)據(jù)元素上執(zhí)行一個操作。有符號緊縮字節(jié)寄存器內(nèi)表示511示出了有符號緊縮字節(jié)的存儲。注意,每字節(jié)數(shù)據(jù)元素的第8位(MSB)為符號指示(“s”)。圖5還分別不出了無符號和有符號緊縮字寄存器內(nèi)表不512和513。無符號緊縮字寄存器內(nèi)表示512示出了擴展寄存器210如何存儲8個字(每個16位)數(shù)據(jù)元素。字O存儲在寄存器的位15到位O。字I存儲在寄存器的位31到位16。字2存儲在寄存器的位47到位32。字3存儲在寄存器的位63到位48。字4存儲在寄存器的位79到位64。字5存儲在寄存器的位95到位80。字6存儲在寄存器的位111到位96。字7存儲在寄存器的位127到位112。有符號緊縮字寄存器內(nèi)表示513與無符號緊縮字寄存器內(nèi)表示512相似。注意,符號位(“s”)存儲在每個字數(shù)據(jù)元素的第16位(MSB)。圖6分別示出了無符號和有符號緊縮雙字寄存器內(nèi)格式514和515。無符號緊縮雙字寄存器內(nèi)表示514示出了擴展寄存器210如何存儲4個雙字(每個32位)數(shù)據(jù)元素。雙字O存儲在寄存器的位31至位O。雙字I存儲在寄存器的位63至位32。雙字2存儲在寄存器的位95至位64。雙字3存儲在寄存器的位127至位96。有符號緊縮雙字寄存器內(nèi)表示515與無符號緊縮雙字寄存器內(nèi)表示514相似。注意,符號位(“s”)是每個雙字數(shù)據(jù)元素的第32位(MSB)。圖6還分別示出了無符號和有符號緊縮四字寄存器內(nèi)格式516和517。無符號緊縮四字寄存器內(nèi)表示516示出了擴展寄存器210如何存儲2個四字(每個64位)數(shù)據(jù)元素。四字O存儲在寄存器的位63至位O。四字I存儲在寄存器的位127至位64。有符號緊縮四字寄存器內(nèi)表示517與無符號緊縮四字寄存器內(nèi)表示516相似。注意,符號位(“s”)是每個四字數(shù)據(jù)元素的第64位(MSB)。BLEND 操作圖7是根據(jù)本發(fā)明至少一個實施例用于執(zhí)行BLEND操作的一般方法700的流程圖。在此所公開的過程700和其它過程由處理塊執(zhí)行,所述處理塊可以包括專用硬件或者可由通用機器或?qū)S脵C器或這二者的組合執(zhí)行的軟件或固件操作代碼。
圖7示出了所述方法在“開始”處開始,并且進行至處理塊705。在處理塊705,解碼器165對處理器109所接收的控制信號進行解碼。這樣,解碼器165對BLEND指令的操作代碼進行解碼。處理接著從處理塊705進行至處理塊710。在處理塊710,給定在指令中編碼的SRCl和DEST地址,解碼器165經(jīng)由內(nèi)部總線170訪問寄存器文件150中的寄存器209。對于至少一個實施例,在指令中編碼的地址各指示一個擴展寄存器(例如,見圖2b的擴展寄存器210)。對于這樣的實施例,在塊710訪問所指示的擴展寄存器210,以便向執(zhí)行單元130提供在SRCl寄存器(Sourcel)中存儲的數(shù)據(jù)以及在DEST寄存器(Dest)中存儲的數(shù)據(jù)。對于至少一個實施例,擴展寄存器210經(jīng)由內(nèi)部總線170向執(zhí)行單元130傳遞數(shù)據(jù)。處理從處理塊710進行至處理塊715。在處理塊715,解碼器165啟用執(zhí)行單元130來執(zhí)行指令。對于至少一個實施例,通過向執(zhí)行單元發(fā)送一個或多個控制信號來指示所希望的操作(BLEND),而執(zhí)行這種使能715。
處理從處理塊715進行至處理塊720。在處理塊720,所希望的操作獲取在指令中存儲的數(shù)據(jù)。處理從處理塊720進行至處理塊725。在處理塊725,處理器確定該數(shù)據(jù)元素的控制位是否被設置為“I”。所述數(shù)據(jù)元素可以基于數(shù)據(jù)存儲格式而變化。如圖4所示,有各種緊縮數(shù)據(jù)類型。對于至少一個實施例,緊縮字節(jié)格式421為包含16個數(shù)據(jù)元素(B0-B15)的128位長度。每個數(shù)據(jù)元素(B0-B15)為I字節(jié)(例如,8位)長度。對于至少一個實施例,緊縮半倍格式422為包含8個數(shù)據(jù)元素(HalfO至HalfT)的128位長度。每個數(shù)據(jù)元素(HalfO至Half7)可以保存16位信息。作為選擇,這些16位數(shù)據(jù)元素中的每一個可以被稱作“半字”或“短字”,或者簡單地被稱作“字”。對于至少一個實施例,緊縮單倍格式423可以為128位長,且可以保存4個423數(shù)據(jù)元素(SingleO至Single3)。數(shù)據(jù)元素(SingleO至Single3)中的每一個可以保存32位信息。作為選擇,32位數(shù)據(jù)元素中的每一個可以被稱作“dword”或“雙字”。例如,數(shù)據(jù)元素(SingleO至Single3)中的每一個可以表示32位單精度浮點值,因而稱作“緊縮單倍”格式。對于至少一個實施例,緊縮雙倍格式424可以為128位長,并且可以保存2個數(shù)據(jù)元素。緊縮雙倍格式424的每個數(shù)據(jù)元素(DoubleO,Double I)可以保存64位信息。作為選擇,64位數(shù)據(jù)元素中的每一個可以被稱作“qword”或“四字”。例如,數(shù)據(jù)元素(DoubleO,Doublel)中的每一個可以表示64位雙精度浮點值,因而稱作“緊縮雙倍”格式。對于本發(fā)明的至少一個實施例,緊縮423和緊縮雙倍424格式的數(shù)據(jù)元素可以是上面指示的緊縮浮點數(shù)據(jù)元素。在本發(fā)明的備選實施例中,緊縮單倍423和緊縮雙倍424格式的數(shù)據(jù)元素可以是緊縮的整數(shù)、緊縮的布爾或緊縮的浮點數(shù)據(jù)元素。對于本發(fā)明的至少一個實施例,控制位可以指的是數(shù)據(jù)元素的MSB。MSB還可以被稱為符號指示或符號位。例如,每字節(jié)數(shù)據(jù)元素的第8位(MSB)是符號指示;每個字數(shù)據(jù)元素的第16位(MSB)是符號位;每個雙字數(shù)據(jù)元素的第32位(MSB)是符號位;并且每個四字數(shù)據(jù)元素的第64位(MSB)是符號位。如果Sourcel數(shù)據(jù)元素的控制位是“ I ”,則處理進行至處理塊730。在處理塊730,多路復用器選擇控制位為“I”的Sourcel數(shù)據(jù)元素。多路復用器的數(shù)量取決于指令的粒度。SRCl中的數(shù)據(jù)元素被復制到DEST。處理進行至處理塊735。在塊735,存儲器將所選擇的數(shù)據(jù)元素存儲至DEST寄存器。一旦存儲了,則所述處理結束。如果控制位是“0”,則處理結束。DEST中的數(shù)據(jù)元素保持原樣,并且不被復制。豐即BLEND操作圖8示出了圖7所示一般方法700的立即選擇操作800過程的至少一個實施例的流程圖。對于圖8所示的具體實施例800,立即BLEND操作在128位長的Sourcel和Dest數(shù)據(jù)值上執(zhí)行,且所述數(shù)據(jù)值可以是或可以不是緊縮數(shù)據(jù)。而且,本領域技術人員會認識到,圖8所示的操作還能夠?qū)τ谄渌L度的數(shù)據(jù)值執(zhí)行,包括更小或更大長度的那些數(shù)據(jù)值。立即BLEND指令使用位掩碼而不是字節(jié)、字或雙字掩碼。通過使用位掩碼,這考慮到小的立即操作數(shù)(而不是64位或128位),從而可以發(fā)生更小的代碼大小和更有效的解碼。方法800的處理塊805至820的操作實質(zhì)上與以上結合圖7所示的方法700所描述的處理塊705至720的操作相同。在塊815解碼器165啟用執(zhí)行單元130來執(zhí)行指令時,所述指令是用于選擇Sourcel和Dest值的相應數(shù)據(jù)元素的BLEND指令。處理從處理塊820進行至處理塊825。在處理塊825,執(zhí)行以下內(nèi)容?!τ诹⒓碆LEND指令,助記術如下BLEND xmml, xmm2/ml28, i_8。指令取3個操作數(shù)。第一操作數(shù)可以是源操作數(shù),第二操作數(shù)可以是目標操作數(shù),并且第三操作數(shù)可以是立即位。立即BLEND指令基于位掩碼從Sourcel (xmml)和Dest(xmm2)中選擇值。位掩碼可以是存儲在數(shù)據(jù)元素立即字段中的位。立即位(Ib[])可以被用于控制目的,并且在指令內(nèi)進行編碼,并被用作控制位。處理從處理塊825進行至處理塊830。在處理塊830,如果Sourcel的立即位中的位掩碼是“1”,則來自Sourcel的輸入被多路復用器選擇。如之前所提到的,多路復用器的數(shù)量取決于指令的粒度。處理接著進行至處理塊835。在處理塊835,所選擇的輸入被存儲在最終Dest。這樣,如果Sourcel的立即位是“ 1”,則該數(shù)據(jù)值被存儲在最終Dest。如果Sourcel的立即位中的位掩碼是“0”,則處理從處理塊825進行至“停止”,則Dest中的值沒有變化。Sourcel數(shù)據(jù)值未存儲在Dest中。由于立即BLEND指令使用立即操作數(shù),其允許使用靜態(tài)掩碼模式的圖形應用被編碼,而無需模式數(shù)據(jù)的任何加載。例如,在像PowerPoint之類的圖形應用中的模式填充,或紋理映射,或水面上的陽光閃爍或其它動畫效果。立即BLEND指令還提供結果的快速緊縮,其中各成分必須被區(qū)別對待,并且模式是事先已知的。例如,復數(shù)或紅-綠-藍-Ct像素格式。有利地,由于立即BLEND指令不需要加載操作或比較操作來設置掩碼,所以指令可以兩倍速度運行。圖9a示出了用于圖8所示的立即選擇操作800的過程的至少一個具體實施例的電路圖。對于圖9a所示的具體實施例,指令是BLEND緊縮雙精度浮點值(BLENDTO) oBLENDPD操作在128位長度的Sourcel和Dest數(shù)據(jù)值上執(zhí)行,并且所述數(shù)據(jù)值可以是或可以不是緊縮數(shù)據(jù)。而且,本領域技術人員將認識到,圖9a所示的操作還可對于其它長度的數(shù)據(jù)值執(zhí)行,包括更小或更大長度的那些數(shù)據(jù)值。
現(xiàn)在參考圖9a,對于BLENDro操作,根據(jù)立即操作數(shù)915a中的位,來自例如xmml905a的源操作數(shù)的雙精度浮點值可以被有條件地寫入例如xmm2910a的目標操作數(shù)。如之前所提及的,立即位確定目標操作數(shù)中的對應雙精度浮點值是否從源操作數(shù)選擇和/或復制。如果掩碼中的對應于一個字的立即位是“1”,則雙精度浮點值被選擇和/或復制,否則目標中的值保持不變。由于BLENDH)是緊縮雙精度浮點元素類型,所以其可以為28位長并且可以為每個xmm寄存器保存兩個數(shù)據(jù)元素。例如,源操作數(shù)xmml寄存器可以保存數(shù)據(jù)元素920a和925a,而目標操作數(shù)xmm2寄存器可以保存數(shù)據(jù)元素930a和935a。緊縮雙倍格式424的每個數(shù)據(jù)元素可以保存64位信息。該實例的立即位是每個數(shù)據(jù)元素的Ib [] 915a?;趚mml寄存器905a中每個數(shù)據(jù)元素的立即位915a,多路復用器940a選擇目標值是否從xmml寄存器905a進行復制。參考圖9a,如果操作如下ALENDFiD xmml, xmm2, Olb0該操作表示將數(shù)據(jù)元素從立 即位為“I”的源操作數(shù)放到目標寄存器中。由于Ib
915a包含位“1”,所以數(shù)據(jù)元素925a被MUX 940a選擇并且存儲在目標寄存器910a中。由于Ib [I] 915a包含位“0”,所以數(shù)據(jù)元素930a在目標寄存器910a中保持原樣。一旦操作完成,最終目標寄存器910a就包含數(shù)據(jù)元素930a和925a。該值現(xiàn)在可以被存儲在存儲器中。圖9b示出了用于圖8所示的立即選擇操作800的過程的至少一個具體實施例的電路圖。對于圖9b所示的具體實施例,指令是BLEND緊縮單精度浮點值(BLENDPS) BLENDPS操作在128位長度的Sourcel和Dest數(shù)據(jù)值上執(zhí)行,并且所述數(shù)據(jù)值可以是或可以不是緊縮數(shù)據(jù)。而且,本領域技術人員將認識到,圖9b所示的操作還可對于其它長度的數(shù)據(jù)值執(zhí)行,包括更小或更大長度的那些數(shù)據(jù)值?,F(xiàn)在參考圖%,對于BLENDPS操作,基于立即操作數(shù)915b中的位,來自諸如xmml905b的源操作數(shù)的單精度浮點值可以被有條件地寫入例如xmm2910b的目標操作數(shù)。如之前所提及的,立即位確定目標操作數(shù)中的對應單精度浮點值是否從源操作數(shù)選擇和/或復制。如果掩碼中的對應于一個字的立即位是“I”,則單精度浮點值被MUX 940b選擇和/或復制,否則目標中的值保持不變。由于BLENDPS是緊縮單精度浮點元素類型,所以其可以為28位長并且可以為每個xmm寄存器保存4個423數(shù)據(jù)元素。例如,源操作數(shù)xmml寄存器可以保存數(shù)據(jù)元素920b、925b、926b和927b。目標操作數(shù)xmm2寄存器可以保存數(shù)據(jù)元素930b、935b、936b和937b。緊縮單倍格式423的每個數(shù)據(jù)元素可以保存32位信息。該實例的立即位是每個數(shù)據(jù)元素的Ib[] 915b。基于xmml寄存器905b中每個數(shù)據(jù)元素的立即位915b,多路復用器940b選擇目標值是否從xmml寄存器905b進行復制。參考圖%,如果操作如下BLENDPS xmml,xmm2,OlOlb0該操作表示將數(shù)據(jù)元素從立即位為“I”的源操作數(shù)放到目標寄存器中。由于Ib
915b包含位“1”,所以數(shù)據(jù)元素927b被選擇并且存儲在目標寄存器910b中。由于Ib[l]915b包含位“0”,所以數(shù)據(jù)元素936b在目標寄存器910b中保持原樣。Ib [2] 915b包含位“ I ”,數(shù)據(jù)元素925b被選擇并且存儲在目標寄存器910b中。最后,Ib[3]包含位“0”,數(shù)據(jù)元素930b在目標寄存器910b中保持原樣。一旦操作完成,最終目標寄存器910b就包含數(shù)據(jù)元素930b、925b、936b和927b。該值現(xiàn)在可被存儲在存儲器中。
圖9c示出了用于圖8所示的立即選擇操作800的過程的至少一個具體實施例的電路圖。對于圖9c所示的具體實施例,指令是BLEND緊縮字(PBLENDDW)。PBLENDDW操作在128位長度的Sourcel和Dest數(shù)據(jù)值上執(zhí)行,并且所述數(shù)據(jù)值可以是或可以不是緊縮數(shù)據(jù)。而且,本領域技術人員將會認識到,圖9c所示的操作還可對于其它長度的數(shù)據(jù)值執(zhí)行,包括更小或更大長度的那些數(shù)據(jù)值?,F(xiàn)在參考圖9c,對于PBLENDDW操作,基于立即操作數(shù)915c中的位,來自諸如xmml905c的源操作數(shù)的字值可以被有條件地寫入例如xmm2910c的目標操作數(shù)。如之前所提及的,立即位確定目標操作數(shù)中的對應字值是否從源操作數(shù)被多路復用器選擇。如果掩碼中的對應于一個字的立即位是“1”,則字值被選擇和/或復制,否則目標中的值保持不變。由于PBLENDDW是緊縮字元素類型,所以其可以為28位長并且可以為每個xmm寄存器保存8個數(shù)據(jù)元素。例如,源操作數(shù)xmml寄存器可以保存數(shù)據(jù)元素920c、925c、926c、·927c、928c、929c、921c和922c。目標操作數(shù)xmm2寄存器可以保存數(shù)據(jù)元素930c、935c、936c、937c、938c、939c、931c和932c。緊縮雙倍格式422的每個數(shù)據(jù)元素可以保存16位信息。該實例的立即位是每個數(shù)據(jù)元素的Ib[] 915c。基于xmml寄存器905c中每個數(shù)據(jù)元素的立即位915c,多路復用器940c選擇目標值是否從xmml寄存器905c進行復制。參考圖9c,如果操作如下PBLENDDW xmml,xmm2,0000111 lb。該操作表示將數(shù)據(jù)元素從立即位為“I”的源操作數(shù)放到目標寄存器中。由于Ib
915c包含位“1”,所以數(shù)據(jù)元素922c被MUX 940c選擇并且存儲在目標寄存器910c中。Ib [I] 915c包含位“ 1”,數(shù)據(jù)元素921c被MUX940C選擇并且存儲在目標寄存器910c中。由于Ib [2] 915c包含位“ I ”,所以數(shù)據(jù)元素929c被MUX 940c選擇并且存儲在目標寄存器910c中。Ib [3] 915c包含位“ 1”,數(shù)據(jù)元素928c被MUX 940c選擇并且存儲在目標寄存器910c中。由于Ib [4] 915c包含位“0”,所以數(shù)據(jù)元素937c在目標寄存器910c中保持原樣。Ib[5]915c包含位“0”,數(shù)據(jù)元素936c在目標寄存器910c中保持原樣。由于Ib[6]915c包含位“0”,所以數(shù)據(jù)元素935c在目標寄存器910c中保持原樣。由于Ib[7]915c包含位“0”,所以數(shù)據(jù)元素930c在目標寄存器910c中保持原樣。一旦操作完成,最終目標寄存器910c就包含數(shù)據(jù)兀素930c、935c、936c、937c、928c、929c、921c和922c。該值現(xiàn)在可以被存儲在存儲器中??勺傿LEND操作圖10示出了圖7所示的一般方法700的立即選擇操作1000的過程的至少一個實施例的流程圖。對于圖10所示的具體實施例1000,可變BLEND操作在128位長的Sourcel和Dest數(shù)據(jù)值上執(zhí)行,并且所述數(shù)據(jù)值可以是或可以不是緊縮數(shù)據(jù)。而且,本領域技術人員將認識到,圖10所示的操作還可對于其它長度的數(shù)據(jù)值執(zhí)行,包括更小或更大長度的那些數(shù)據(jù)值。此外,可變BLEND指令對每個數(shù)據(jù)元素使用符號位,或最高有效位(MSB)。方法1000的處理塊1005至1020的操作實質(zhì)上與以上結合圖7所示方法700所描述的處理塊705至720的操作相同。當在塊1015解碼器165啟用執(zhí)行單元130來執(zhí)行指令時,所述指令是用于選擇Sourcel和Dest值的相應數(shù)據(jù)元素的BLEND指令。處理從處理塊1020進行至處理塊1025。在處理塊1025,執(zhí)行以下內(nèi)容。對于可變BLEND指令,助記術如下BLEND xmml, xmm2/ml28, <χΜΜ0>。所述指令取3個操作數(shù)。第一操作數(shù)可以是源操作數(shù),第二操作數(shù)可以是目標操作數(shù),并且第三操作數(shù)可以是控制寄存器??勺傿LEND指令基于隱式寄存器xmmO中的最高有效位從Sourcel (xmml)和DeSt(Xmm2)中選擇值??刂苼碓从诿總€字段的MSB。字段寬度對應于指令類型的字段。處理從處理塊1025進行至處理塊1030。在處理塊1030,如果Sourcel的xmmO寄存器中的MSB是“1”,則來自Sourcel的輸入被多路復用器選擇。如之前所提到的,多路復用器的數(shù)量取決于指令的粒度。處理接著進行至處理塊1035。在處理塊1035,所選擇的輸入被存儲在最終Dest。這樣,如果Sourcel的MSB是“ 1”,則該數(shù)據(jù)值被存儲在最終Dest。如果Sourcel的MSB是“0”,則處理從處理塊1025進行至“停止”,則Dest中的值沒有變化。Sourcel數(shù)據(jù)值沒有存儲在Dest中。由于可變BLEND操作使用每個字段的MSB,其允許將任何算術結果(浮點或整數(shù))用作掩碼。其還允許使用比較結果(例如,32位浮點z緩沖器操作能夠被用于掩碼32位像素)。
有利地,可變BLEND操作允許為多種目的(例如動畫效果)設計掩碼。可以首先 使用最高有效位,接著將掩碼向左移,并且使用第二最高有效位,接著是第三,等等。通過利用該技術,能夠大大減少掩碼的預計算序列、加載操作和存儲。圖Ila示出了用于圖10所示可變選擇操作1000的過程的至少一個具體實施例的電路圖。對于圖Ila所示的具體實施例,指令是可變BLEND緊縮雙精度浮點值(BLENDVPD)。BLENDVPD操作在128位長的Sourcel和Dest數(shù)據(jù)值上執(zhí)行,并且所述數(shù)據(jù)值可以是或可以不是緊縮數(shù)據(jù)。而且,本領域技術人員將認識到,圖Ila所示的操作還可對于其它長度的數(shù)據(jù)值執(zhí)行,包括更小或更大長度的那些數(shù)據(jù)值?,F(xiàn)在參考圖11a,對于BLENDVPD操作,根據(jù)隱式第三寄存器xmm01115a中的MSB,來自例如xmml 1105a的源操作數(shù)的雙精度浮點值可以被有條件地寫入例如xmm2 IllOa的目標操作數(shù)。第三操作數(shù)的寄存器分配可以是體系結構寄存器ΧΜΜ0。如之前所提及的,每個Sourcel的隱式第三寄存器中的MSB確定目標操作數(shù)中的對應雙精度浮點值是否從源操作數(shù)選擇和/或復制。如果掩碼中的MSB對應于“1”,則雙精度浮點值被選擇和/或復制,否則目標中的值保持不變。由于BLENDVPD是緊縮雙精度浮點元素類型,所以其可以為28位長并且可以為每個xmm寄存器保存兩個數(shù)據(jù)元素。例如,源操作數(shù)xmml寄存器1105a可以保存數(shù)據(jù)元素1120a和1125a,而目標操作數(shù)xmm2寄存器IllOa可以保存數(shù)據(jù)元素1130a和1135a。緊縮雙倍格式424的每個數(shù)據(jù)元素可以保存64位信息?;趚mml寄存器1105中每個數(shù)據(jù)元素的寄存器1115a中的MSB,多路復用器1140a選擇目標值是否從xmml寄存器1105a被選擇。參考圖11a,如果操作如下BLENDVPD xmml, xmm2, <ΧΜΜ0>。該操作表示將數(shù)據(jù)元素從隱式寄存器XMMO中的MSB為“I”的源操作數(shù)放到目標寄存器中。由于寄存器XMMO1117a的MSB包含位“0”,所以數(shù)據(jù)元素1125a沒有被MUX 1140a選擇。寄存器xmm2 IllOa中的數(shù)據(jù)元素1135a保持在目標寄存器中。然而,寄存器XMMO 1116a的MSB包含位“ 1”,數(shù)據(jù)元素1120a被MUX 1140a選擇并且存儲在目標寄存器IllOa中。一旦操作完成,最終目標寄存器IllOa就包含數(shù)據(jù)元素1120a和1135a。該值現(xiàn)在可以被存儲在存儲器中。圖Ilb示出了用于圖10所示可變選擇操作1000的過程的至少一個具體實施例的電路圖。對于圖Ilb所示的具體實施例,指令是可變BLEND緊縮單精度浮點值(BLENDVPS)。BLENDVPS操作在128位長的Sourcel和Dest數(shù)據(jù)值上執(zhí)行,并且所述數(shù)據(jù)值可以是或可以不是緊縮數(shù)據(jù)。而且,本領域技術人員將認識到,圖Ilb所示的操作還可對于其它長度的數(shù)據(jù)值執(zhí)行,包括更小或更大長度的那些數(shù)據(jù)值。現(xiàn)在參考圖Ilb,對于BLENDVPS操作,根據(jù)隱式第三寄存器xmmOl115b中的MSB,來自例如xmml 1105b的源操作數(shù)的單精度浮點值可以被有條件地寫入例如xmm2 IllOb的目標操作數(shù)。第三操作數(shù)的寄存器分配可以是體系結構寄存器ΧΜΜ0。如之前所提及的,每個Sourcel的隱式第三寄存 器中的MSB確定目標操作數(shù)中的對應單精度浮點值是否從源操作數(shù)被選擇和/或復制。如果掩碼中的MSB對應于“ I ”,則單精度浮點值被MUX 1140b選擇和/或復制,否則目標中的值保持不變。由于BLENDVPS是緊縮單精度浮點元素類型,所以其可以為28位長并且可以為每個xmm寄存器保存4個423數(shù)據(jù)元素。例如,源操作數(shù)xmml寄存器可以保存數(shù)據(jù)元素1120b、1125b、1126b和1127b,而目標操作數(shù)xmm2寄存器可以保存數(shù)據(jù)元素1130b、1135b、1136b和1137b。緊縮單倍格式423的每個數(shù)據(jù)元素可以保存32位信息。基于xmml寄存器1105b中每個數(shù)據(jù)元素的寄存器1115b中的MSB,多路復用器1140b選擇目標值是否從xmml寄存器1105b被選擇。參考圖11b,如果操作如下BLENDVPS xmml,xmm2,〈XMMO〉。該操作表示將數(shù)據(jù)元素從隱式寄存器XMMO中的MSB為“I”的源操作數(shù)放到目標寄存器中。由于寄存器XMMO 1117b的MSB包含位“0”,所以數(shù)據(jù)元素1127b沒有被MUX 1140b選擇。目標寄存器1137b的值保持不變。由于寄存器XMMO 1118b的MSB包含位“1”,所以數(shù)據(jù)元素1126b被MUX 1140b選擇并且存儲在目標寄存器IllOb中。目標寄存器1136b中的值被源操作數(shù)置換。寄存器XMMO1117b的MSB包含位“0”,所以數(shù)據(jù)元素1125b沒有被MUX 1140b選擇。目標寄存器1135b的值保持不變。最后,寄存器XMMO 1116b的MSB包含位“1”,數(shù)據(jù)元素1120b被MUX 1140b選擇。目標寄存器1130b的值被源操作數(shù)置換。一旦操作完成,最終目標寄存器IllOb就包含數(shù)據(jù)元素1120b、1135b、1126b和1137b。該值現(xiàn)在可以被存儲在存儲器中。圖Ilc示出了用于圖10所示可變選擇操作1000的過程的至少一個具體實施例的電路圖。對于圖Ilc所示的具體實施例,指令是可變BLEND緊縮字節(jié)(PBLENDVB)。PBLENDVB操作在128位長的Sourcel和Dest數(shù)據(jù)值上執(zhí)行,并且所述數(shù)據(jù)值可以是或可以不是緊縮數(shù)據(jù)。而且,本領域技術人員將認識到,圖Ilc所示的操作還可對于其它長度的數(shù)據(jù)值執(zhí)行,包括更小或更大長度的那些數(shù)據(jù)值?,F(xiàn)在參考圖11c,對于PBLENDVB操作,根據(jù)隱式第三寄存器xmmOl 115c中的MSB,來自例如xmml 1105c的源操作數(shù)的字節(jié)值可以被有條件地寫入例如xmm2 IllOc的目標操作數(shù)。第三操作數(shù)的寄存器分配可以是體系結構寄存器ΧΜΜ0。如之前所提及的,每個Sourcel的隱式第三寄存器中的MSB確定目標操作數(shù)中的對應字節(jié)值是否從源操作數(shù)被選擇和/或復制。如果掩碼中的MSB對應于“1”,則字節(jié)值被MUX 1140c選擇并復制,否則目標中的值保持不變。由于PBLENDVB是緊縮字節(jié)元素類型,所以其可以為28位長并且可以為每個xmm寄存器保存16個數(shù)據(jù)元素。例如,源操作數(shù)xmml寄存器可以保存數(shù)據(jù)元素1120cl至1120cl6o其中cl至cl6表不:寄存器xmmlll05c的16個數(shù)據(jù)兀素;寄存器xmm21110c的16個數(shù)據(jù)元素;16個多路復用器1140c ;和16個隱式寄存器XMMO 1115c。
目標操作數(shù)xmm2寄存器可以保存數(shù)據(jù)元素1130cl至1130cl6。緊縮字節(jié)格式421的每個數(shù)據(jù)元素可以保存16位信息?;趚mml寄存器1105c中每個數(shù)據(jù)元素的寄存器1115c中的MSB,多路復用器1140c選擇目標值是否從xmml寄存器1105c被選擇。參考圖11c,如果操作如下PBLENDVB xmml, xmm2,〈XMMO〉。該操作表示將數(shù)據(jù)元素從隱式寄存器XMMO中的MSB為“I”的源操作數(shù)放到目標寄存器中。如之前所提及的,源操作數(shù)1120c由MUX 1140c基于隱式寄存器1115c中的MSB進行選擇。如果MSB是“1”,則源操作數(shù)被選擇并復制到目標寄存器IllOc中。如果MSB是“0”,則目標寄存器保持不變。值然后被存儲在存儲器中。參考圖12,其示出了可以用于對BLEND指令的控制信號(操作代碼)進行編碼的操作代碼的各種實施例。圖12示出了根據(jù)本發(fā)明一個實施例的指令格式1200。指令格式1200包括各種字段;這些字段可以包括前綴字段1210、操作碼字段1220和操作數(shù)說明符字段(例如,modR/M、比例-變址-基址、位移、立即等)。操作數(shù)說明符字段是可選的,并且包括modR/M字段1230、SIB字段1240、位移字段1250和立即字段1260。 本領域技術人員將認識到,圖12中所闡述的格式1200是說明性的,并且所公開的實施例可以利用指令代碼內(nèi)的其它數(shù)據(jù)組織形式。例如,字段1210、1220、1230、1240、1250、1260無需以所示的順序進行組織,而是可以相對于彼此重新組織在其它位置,并且無需是連續(xù)的。而且,在此討論的字段長度不應當被認為是限定性的。在備選實施例中,作為特定字節(jié)數(shù)討論的字段可以被實現(xiàn)為更大或更小的字段。而且,盡管在此使用的術語“字節(jié)”表示8位的分組,但在其它實施例中可以被實現(xiàn)為任意其它大小的分組,包括4位、16位和32位。如這里所使的,為了指示所希望的操作,諸如BLEND指令的指令的特定實例的操作碼可在指令格式200的字段中包括某些值。這種指令有時被稱作“實際指令”。實際指令的位值有時在此共同稱作“指令代碼”。對于每個指令代碼,對應的解碼指令代碼唯一地表示要由執(zhí)行單元(比如,例如圖Ia的130)響應于指令代碼而執(zhí)行的操作。解碼的指令代碼可以包括一個或多個微操作。操作碼字段1220的內(nèi)容規(guī)定操作。對于至少一個實施例,在此所討論的BLEND指令的實施例的操作碼字段1220為3字節(jié)長。操作碼字段1220可以包括I個、2個或3個字節(jié)的信息。對于至少一個實施例,操作碼字段1220的2字節(jié)轉義字段118c中的3字節(jié)轉義操作碼值與操作碼字段1220的第三字節(jié)1225的內(nèi)容組合來規(guī)定BLEND操作。該第三字節(jié)1225在此被稱作指令特定操作碼。對于至少一個實施例,前綴值0x66置于前綴字段1210中,并且被用作定義所希望操作的指令操作碼的一部分。也就是說,前綴字段1210中的值被解碼為操作碼的一部分,而不是被解釋為僅僅對后續(xù)的操作碼進行限定。例如,對于至少一個實施例,前綴值0x66被用于指示BLEND指令的目標和源操作數(shù)存在于128位Intel(DSSE2XMM寄存器中??梢韵嗨频厥褂闷渌熬Y。然而,對于BLEND指令的至少一些實施例,在一些操作條件下,替代地,前綴可以被用于傳統(tǒng)的增強操作碼或限定操作碼的作用。指令格式的第一實施例1226和第二實施例1228均包括3字節(jié)轉義操作碼字段118c和指令特定操作碼字段1225。對于至少一個實施例,3字節(jié)轉義操作碼字段118c為2字節(jié)長。指令格式1226使用稱為3字節(jié)轉義操作碼的4個特殊轉義操作碼中的一個。3字節(jié)轉義操作碼為2字節(jié)長,并且它們指示解碼器硬件該指令使用操作碼字段1220中的第三
字節(jié)來定義指令。3字節(jié)轉義操作碼字段118c可以處于指令操作碼內(nèi)的任意位置,并且不
需要必需是指令內(nèi)的最高階或最低階字段。以下表I闡述了使用前綴和3字節(jié)轉義操作碼的BLEND指令代碼的示例。表I
權利要求
1.一種處理器,包括 用來存儲數(shù)據(jù)的高速緩存; 用來提供對隨機存取存儲器的訪問的存儲器控制器; 用來解碼指令的指令解碼邏輯; 包括128位緊縮數(shù)據(jù)寄存器的集合的寄存器文件,每個寄存器用來存儲多個緊縮單精度浮點數(shù)據(jù)元素;以及 用來執(zhí)行第一指令的執(zhí)行單元,所述第一指令包括至少一個識別源緊縮數(shù)據(jù)寄存器的源操作數(shù)以及至少一個識別目標緊縮數(shù)據(jù)寄存器的目標操作數(shù),而且,響應于執(zhí)行所述第一指令,要將至少第一數(shù)據(jù)值從源緊縮數(shù)據(jù)寄存器設置到目標緊縮數(shù)據(jù)寄存器中。
2.如權利要求I所述的處理器,其中所述寄存器文件是用來存儲緊縮整數(shù)數(shù)據(jù)元素的。
3.如權利要求2所述的處理器,其中所述緊縮整數(shù)數(shù)據(jù)元素以包括緊縮字節(jié)、半字或字的多個緊縮數(shù)據(jù)格式來存儲。
全文摘要
本發(fā)明的名稱是“用于執(zhí)行選擇操作的方法和裝置”。一種方法和裝置,包括用于對緊縮或非緊縮數(shù)據(jù)執(zhí)行選擇操作的處理器指令。在一個實施例中,處理器連接到存儲器。所述存儲器已將第一緊縮數(shù)據(jù)存儲在源操作數(shù)中并將第二緊縮數(shù)據(jù)存儲在目標操作數(shù)中。如果源操作數(shù)的控制位被設置為“1”,則處理器選擇第一緊縮數(shù)據(jù)并且將所述數(shù)據(jù)存儲到目標操作數(shù)中。否則,處理器保持目標操作數(shù)中的數(shù)據(jù)。目標操作數(shù)的最終值被存儲在存儲器中。
文檔編號G06F9/30GK102915226SQ20121032656
公開日2013年2月6日 申請日期2007年9月21日 優(yōu)先權日2006年9月22日
發(fā)明者R.佐哈, M.阿布達拉, B.薩巴寧, M.塞科尼 申請人:英特爾公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
民和| 台北县| 昌黎县| 永泰县| 仪陇县| 东平县| 浮梁县| 余江县| 潮州市| 巴林右旗| 会东县| 应城市| 长垣县| 呼玛县| 盘山县| 德安县| 南澳县| 资兴市| 苍梧县| 安义县| 南充市| 唐海县| 资源县| 南通市| 泉州市| 霍城县| 长顺县| 竹山县| 凤山市| 枞阳县| 新闻| 陆良县| 衡水市| 石屏县| 应城市| 永春县| 达拉特旗| 绵竹市| 德令哈市| 固阳县| 赞皇县|