新四季網

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

2023-07-05 22:35:36 1

用於融合指令以在多個測試源上提供或(or)測試和與(and)測試功能的方法和裝置製造方法
【專利摘要】本發明公開了用於融合指令以在多個測試源上提供或(OR)測試和與(AND)測試功能的方法和裝置。一些實施例包括獲取指令,所述指令包括指定第一操作數目的地的第一指令、指定第二操作數源的第二指令以及指定分支條件的第三指令。將多個指令的一部分融合成單個微操作,如果所述第一操作數目的地和所述第二操作數源相同,並且所述分支條件取決於第二指令,則該部分包括第一和第二指令二者。一些實施例通過將一個邏輯指令與現有技術的測試指令融合來動態地產生新的測試指令。其他實施例通過即時編譯器產生該新的測試指令。一些實施例還將該新的測試指令與隨後的條件分支指令融合,並根據條件標誌如何被設置來執行分支。
【專利說明】用於融合指令以在多個測試源上提供或(OR)測試和與(AND)測試功能的方法和裝置

【技術領域】
[0001]本公開涉及處理邏輯、微處理器以及相關的指令集體系結構的領域,這些指令集體系結構在被處理器或其他處理邏輯執行時執行邏輯、數學或其他功能性操作。具體而言,本公開涉及用於融合指令以在多個測試源上提供或測試(OR-test)和與測試(AND-test)功能的方法和裝置。

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

【專利附圖】

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

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

【權利要求】
1.一種用於在處理器中融合指令的方法,包括: 獲取多個指令,所述多個指令包括指定第一操作數目的地的第一指令、指定第二操作數源的第二指令以及指定分支條件的第三指令;以及 將所述多個指令的一部分融合成單個微操作,如果所述第一操作數目的地和所述第二操作數源相同,並且所述分支條件取決於第二指令,則所述部分包括第一和第二指令二者。
2.如權利要求1所述的方法,其特徵在於,如果所述第一操作數目的地和所述第二操作數源相同,且第二和第三指令是相繼的,並且第二指令是測試指令,則所述部分包括第一、第二和第三指令。
3.如權利要求2所述的方法,其特徵在於,所述第一指令是邏輯或指令。
4.如權利要求2所述的方法,其特徵在於,所述第一指令是邏輯與指令。
5.如權利要求1所述的方法,其特徵在於,如果所述第一操作數目的地和所述第二操作數源相同,且第二和第三指令是相繼的,並且第二指令是邏輯與指令,則所述部分包括第一、第二和第三指令。
6.如權利要求1所述的方法,其特徵在於,如果所述第一操作數目的地和所述第二操作數源相同,且第二和第三指令是相繼的,並且第一指令是邏輯或指令,則所述部分包括第 一、第二和第三指令。
7.如權利要求1所述的方法,其特徵在於,如果所述第一操作數目的地和所述第二操作數源相同,且第二和第三指令是相繼的,並且第一指令是邏輯與指令,則所述部分包括第一、第二和第三指令。
8.一種處理器,包括: 第一流水線級,用於獲取多個指令,所述多個指令包括指定第一操作數目的地的第一指令、指定第二操作數源的第二指令以及指定分支條件的第三指令;以及 第二流水線級,用於將所述多個指令的一部分解碼成單個第一微操作,如果所述第一操作數目的地和所述第二操作數源相同,並且所述分支條件取決於第二指令,則所述部分包括第一和第二指令二者。
9.如權利要求8所述的處理器,其特徵在於,如果所述第一操作數目的地和所述第二操作數源相同,且第二和第三指令是相繼的,並且第二指令是測試指令,則所述部分包括第一、第二和第三指令。
10.如權利要求9所述的處理器,其特徵在於,所述第一指令是邏輯或指令。
11.如權利要求9所述的處理器,其特徵在於,所述第一指令是邏輯與指令。
12.如權利要求8所述的處理器,其特徵在於,如果所述第一操作數目的地和所述第二操作數源相同,且第二指令是測試指令,並且第一指令是邏輯或指令,則所述部分包括第一指令和第二指令二者。
13.如權利要求12所述的處理器,其特徵在於,包括: 第三流水線級,包括微融合邏輯,用於:如果所述分支條件取決於第二指令,則將所述第三指令的第二微操作與所述單個第一微操作融合。
14.如權利要求8所述的處理器,其特徵在於,如果所述第一操作數目的地和所述第二操作數源相同,且第二和第三指令是相繼的,並且第一指令是邏輯或指令,則所述部分包括第一、第二和第三指令。
15.如權利要求8所述的處理器,其特徵在於,如果所述第一操作數目的地和所述第二操作數源相同,且第二和第三指令是相繼的,並且第一指令是邏輯與指令,則所述部分包括第一、第二和第三指令。
16.一種用於在處理器中融合指令的系統,包括: 存儲器,用於存儲多個指令;以及 處理器,包括: 第一流水線級,用於獲取所述多個指令,所述多個指令包括指定第一操作數目的地的第一指令、指定第二操作數源的第二指令以及指定分支條件的第三指令;以及 第二流水線級,用於將所述多個指令的一部分解碼成單個微操作,如果所述第一操作數目的地和所述第二操作數源相同,並且所述分支條件取決於第二指令,則所述部分包括第一和第二指令二者。
17.如權利要求16所述的系統,其特徵在於,如果所述第一操作數目的地和所述第二操作數源相同,且第二和第三指令是相繼的,並且第二指令是測試指令,則所述部分包括第一、第二和第三指令。
18.如權利要求17所述的系統,其特徵在於,所述第一指令是邏輯或指令。
19.如權利要求17所述的系統,其特徵在於,所述第一指令是邏輯與指令。
20.如權利要求16所述的系統,其特徵在於,所述處理器包括: 第三流水線級,包括微融合邏輯,用於:如果所述分支條件取決於第二指令,則將所述第三指令的第二微操作與所述單個第一微操作融合。
21.一種處理器,包括: 解碼級,用於解碼: 第一指令,所述第一指令指定第一源/目的地數據操作數和第二源數據操作數, 第二指令,所述第二指令指定第一源數據操作數和第三源數據操作數,以及 第三指令,所述第三指令指定分支目標; 所述解碼級用於將第一指令與第二指令以及第三指令融合,以作為單個融合的微操作來執行;以及 一個或多個執行單元,響應於所述單個融合的微操作: 在來自第一源/目的地數據操作數和第二源數據操作數的數據之間執行第一邏輯操作, 在來自第三源數據操作數的數據與第一邏輯操作的結果之間執行第二邏輯操作,以設置條件標誌,以及 如果條件標誌被設置,則執行去往分支目標的條件分支。
22.如權利要求21所述的處理器,其特徵在於,執行所述第二邏輯操作包括邏輯測試操作並且條件地設置零標誌。
23.如權利要求22所述的處理器,其特徵在於,根據第一指令,在來自第一源/目的地數據操作數和第二源數據操作數的數據之間執行邏輯與操作。
24.如權利要求23所述的處理器,其特徵在於,根據第一指令,在來自第一源/目的地數據操作數和第二源數據操作數的數據之間執行邏輯或操作。
【文檔編號】G06F11/36GK104049945SQ201410097423
【公開日】2014年9月17日 申請日期:2014年3月14日 優先權日:2013年3月15日
【發明者】M·洛克西金, R·凡倫天, J·C·霍恩, M·J·查尼 申請人:英特爾公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀