帶有旁路多個實例化表的移動消除的系統(tǒng)和方法
【專利摘要】本申請公開了帶有旁路多個實例化表的移動消除的系統(tǒng)和方法。帶有旁路多個實例化表(MIT)邏輯的用于移動操作消除的系統(tǒng)和方法。示例處理系統(tǒng)可以包括:被配置成存儲多個物理寄存器值的第一數(shù)據(jù)結(jié)構(gòu);被配置成存儲多個指針的第二數(shù)據(jù)結(jié)構(gòu),每一指針都引用第一數(shù)據(jù)結(jié)構(gòu)的元素;包括多個移動消除集的第三數(shù)據(jù)結(jié)構(gòu),每一移動消除集都包括表示多個邏輯寄存器的多個比特;以及被配置成通過使第二數(shù)據(jù)結(jié)構(gòu)的元素引用第一數(shù)據(jù)結(jié)構(gòu)的元素來執(zhí)行數(shù)據(jù)操縱操作的邏輯,所述邏輯進(jìn)一步被配置成通過執(zhí)行第三數(shù)據(jù)結(jié)構(gòu)的單個更新來反映兩個或更多數(shù)據(jù)操縱操作的結(jié)果。
【專利說明】帶有旁路多個實例化表的移動消除的系統(tǒng)和方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明一般涉及計算機(jī)系統(tǒng),具體而言,涉及提高由計算機(jī)系統(tǒng)執(zhí)行數(shù)據(jù)復(fù)制指令的效率。
[0002]背景
[0003]物理寄存器之間的數(shù)據(jù)復(fù)制操作代表由處理器執(zhí)行的大部分操作。因此,優(yōu)化它們的執(zhí)行可以提高處理器的總體性能。
[0004]附圖簡述
[0005]本發(fā)明是通過示例而不是作為限制來說明的,當(dāng)與附圖一起考慮時并參考下列詳細(xì)描述時,可以更完全地理解本發(fā)明,在附圖中:
[0006]圖1描繪了根據(jù)本公開的一個或多個方面的示例計算機(jī)系統(tǒng)的高級組件圖示;
[0007]圖2描繪了根據(jù)本公開的一個或多個方面的處理器的框圖;
[0008]圖3a_3b示意地示出了根據(jù)本公開的一個或多個方面的處理器微體系結(jié)構(gòu)的要素;
[0009]圖4示意地示出了根據(jù)本公開的一個或多個方面的圖1的示例計算機(jī)系統(tǒng)100的示例處理器及其他組件的多個方面;
[0010]圖5示意地示出了根據(jù)本公開的一個或多個方面的通過寄存器別名使用(aliasing)來執(zhí)行移動操作的示例;
[0011]圖6a_6c不意地不出了根據(jù)本公開的一個或多個方面的使用多個實例化表(MIT)來進(jìn)行物理寄存器文件(PRF)條目跟蹤;
[0012]圖7a_7c示意地示出了根據(jù)本公開的一個或多個方面的MIT分配和預(yù)留邏輯;
[0013]圖8a_8c示意地示出了根據(jù)本公開的一個或多個方面的MIT孤立回收邏輯;
[0014]圖9a_9c、IOa-1Oc以及Ila-1lc示意地示出了根據(jù)本公開的一個或多個方面的通過旁路MIT邏輯來實現(xiàn)的數(shù)據(jù)操縱操作的多個示例;
[0015]圖12示意地示出了根據(jù)本公開的一個或多個方面實現(xiàn)移動消除邏輯的示例電路;
[0016]圖13描繪了根據(jù)本公開的一個或多個方面的示例方法的流程圖;以及
[0017]圖14描繪了根據(jù)本公開的一個或多個方面的示例計算機(jī)系統(tǒng)的框圖。
【具體實施方式】
[0018]此處描述了用于利用旁路多個實例化表(MIT)邏輯來實現(xiàn)移動消除的計算機(jī)系統(tǒng)以及相關(guān)的技術(shù)。此處的“移動消除(move elimination)”應(yīng)該是指執(zhí)行寄存器復(fù)制操作,而不使用執(zhí)行單元(例如,通過修改寄存器別名表中的條目)。
[0019]出于提高指令執(zhí)行的效率的目的,處理器可以實現(xiàn)寄存器別名使用:可以使用稱為物理寄存器文件(PRF)的第一數(shù)據(jù)結(jié)構(gòu)來存儲物理寄存器值,并且可以使用稱為寄存器別名表(RAT)的第二數(shù)據(jù)結(jié)構(gòu)來存儲將邏輯寄存器標(biāo)識符(諸如,例如,R8或AX)映射到存儲在PRF中的值的指針。寄存器別名使用允許通過修改別名表中的條目而不將這些指令發(fā)送到執(zhí)行單元,來執(zhí)行某些指令。這樣的指令的示例包括寄存器歸零指令(諸如,例如,XORAX, AX)和寄存器復(fù)制指令(諸如MOV指令)。由于寄存器復(fù)制指令不會創(chuàng)建新的值,因此,可以將源寄存器指針復(fù)制到RAT中的目的地寄存器指針,以便指令將不需要使用執(zhí)行單元和另一 PRF條目。此過程被稱為“移動消除”,因為從發(fā)送到執(zhí)行單元的流中消除了移動指令。
[0020]在上文所描述的寄存器別名使用方案中,可能需要跟蹤PRF表條目的使用,以便確定何時可以釋放PRF條目以供新指令使用。可以使用稱為多個實例化表(MIT)的第三數(shù)據(jù)結(jié)構(gòu)來跟蹤PRF表條目的使用,如下面更詳細(xì)地描述的。
[0021]此處所描述的系統(tǒng)和方法可以預(yù)先計算兩個或更多數(shù)據(jù)操縱操作的依賴關(guān)系,然后執(zhí)行單個MIT更新以反映兩個或更多操作的結(jié)果,如此,改善移動消除操作的時序和功率消耗方面。下面作為示例而并非作為限制地詳細(xì)描述了上面引用的方法和系統(tǒng)的各方面。
[0022]在下面的描述中,闡述了很多具體細(xì)節(jié),諸如特定類型的處理器和系統(tǒng)配置、特定硬件結(jié)構(gòu)、特定體系結(jié)構(gòu)和微體系結(jié)構(gòu)細(xì)節(jié)、特定寄存器配置、特定指令類型、特定系統(tǒng)組件、特定測量值/高度、特定處理器流水線級和操作等等的示例,以便提供對本發(fā)明的全面的理解。然而,對本領(lǐng)域普通技術(shù)人員顯而易見的是,可以不必使用這些具體細(xì)節(jié)來實施本發(fā)明。在其他情況下,沒有詳細(xì)描述已知的組件或方法,諸如特定和替代處理器體系結(jié)構(gòu)、特定邏輯電路/用于描述算法的代碼、特定固件代碼、特定互連操作、特定邏輯配置、特定制造技術(shù)和材料、特定編譯器實現(xiàn)、代碼中的算法的特定表達(dá)、特定斷電和選通技術(shù)/邏輯及計算機(jī)系統(tǒng)的其他特定操作細(xì)節(jié),以避免對本發(fā)明造成不必要的模糊。
[0023]雖然將處理器參考來描述下列各實施例,但是,其他實施例也適用于其他類型的集成電路和邏輯設(shè)備。可以將本發(fā)明的各實施例的類似的技術(shù)和原理應(yīng)用于可以得益于較高流水線吞吐量和改善的性能的其他類型的電路或半導(dǎo)體器件。本發(fā)明的各實施例的原理適用于執(zhí)行數(shù)據(jù)操縱的任何處理器或機(jī)器。然而,本發(fā)明不僅限于執(zhí)行512比特、256比特、128比特、64比特、32比特或16比特數(shù)據(jù)操作的處理器或機(jī)器,并可以應(yīng)用于其中執(zhí)行對數(shù)據(jù)的操縱或管理的任何處理器和機(jī)器。另外,下列描述提供了示例,為便于說明,各個附圖示出了各種示例。然而,這些示例不應(yīng)該以限制的方式來解釋,因為它們只是提供本發(fā)明的各實施例的示例,而并非提供本發(fā)明的各實施例的所有可能的實現(xiàn)的詳細(xì)清單。
[0024]雖然下面的示例在執(zhí)行單元以及邏輯電路的上下文中描述了指令處理和分布,但是本發(fā)明的其他實施例可以通過存儲在機(jī)器可讀的、有形的介質(zhì)上的數(shù)據(jù)或指令來完成,這些數(shù)據(jù)或指令當(dāng)由機(jī)器執(zhí)行時,使機(jī)器執(zhí)行根據(jù)本發(fā)明的至少一個實施例的功能。在一個實施例中,與本發(fā)明的各實施例相關(guān)聯(lián)的功能是以機(jī)器可執(zhí)行指令來實現(xiàn)的。指令可以用來使利用指令編程的通用或?qū)S玫奶幚砥鱽韴?zhí)行本發(fā)明的步驟。本發(fā)明的各實施例可以作為計算機(jī)程序產(chǎn)品或軟件來提供,該計算機(jī)程序產(chǎn)品或軟件可以包括在其上存儲了機(jī)器或計算機(jī)可讀介質(zhì),指令可以被用來編程計算機(jī)(或其他電子器件)以執(zhí)行根據(jù)本發(fā)明的各實施例的一個或多個操作。可另選地,可以由包含用于執(zhí)行操作的固定功能邏輯的特定硬件組件,或由編程的計算機(jī)組件和固定功能硬件組件的任何組合,來執(zhí)行本發(fā)明的各實施例的操作。
[0025]用于編程邏輯以執(zhí)行本發(fā)明的各實施例的指令可以存儲在系統(tǒng)中的存儲器內(nèi),諸如DRAM、緩存、閃存,或其他存儲器。此外,指令還可以通過網(wǎng)絡(luò)或通過其他計算機(jī)可讀介質(zhì)來分發(fā)。如此,機(jī)器可讀的介質(zhì)可以包括用于以機(jī)器(例如,計算機(jī))可讀的形式存儲或傳輸信息的任何機(jī)制,但不僅限于,軟盤、光盤、壓縮光盤、只讀存儲器(CD-ROM),以及磁光盤、只讀存儲器(ROMs)、隨機(jī)存取存儲器(RAM)、可擦與可編程只讀存儲器(EPR0M)、電可擦可編程只讀存儲器(EEPR0M)、磁卡或光卡、閃存,或用于通過電的、光學(xué)的、聲音或其他形式的傳播信號(例如,載波、紅外信號、數(shù)字信號等等)通過因特網(wǎng)來傳輸信息的有形的,機(jī)器可讀的存儲器。相應(yīng)地,計算機(jī)可讀介質(zhì)包括適于以可由機(jī)器(例如,計算機(jī))讀取的形式來存儲或傳輸電子指令或信息的任何類型的有形的機(jī)器可讀取的介質(zhì)。
[0026]此處“處理器”應(yīng)該是指能夠執(zhí)行指令編碼算術(shù)、邏輯或I/O操作的設(shè)備。在一個說明性示例中,處理器可以遵循馮諾依曼體系結(jié)構(gòu)模型,并可以包括算術(shù)邏輯單元(ALU)、控制單元以及多個寄存器。另一方面,處理器可以包括一個或多個處理器核,因此可以是通常能夠處理單指令流水線的單核處理器,或同時可以處理多個指令流水線的多核處理器。在另一方面,處理器可以實現(xiàn)為單個集成電路,兩個或更多個集成電路,或可以是多芯片模塊(例如,其中,單個微處理器晶片被包括在單個集成電路封裝中,因此共享單個插槽)的組件。
[0027]圖1描繪了根據(jù)本發(fā)明一個或多個方面的計算機(jī)系統(tǒng)的一個示例的高級的組件圖示。根據(jù)此處所描述的實施例,計算機(jī)系統(tǒng)100可以包括處理器102來使用包括執(zhí)行用于處理數(shù)據(jù)的算法的邏輯的執(zhí)行單元。系統(tǒng)100是基于位于加利福尼亞州圣克拉拉市的英特爾公司所提供的 PENTIUMIIITM、PENTIUM4TM、XeonTM、Itanium、XScaleTM 和 / 或 StrongARM?的微處理器的處理系統(tǒng)的代表,雖然也可以被用來其他系統(tǒng)(包括具有其他微處理器的PC、工程工作站、機(jī)頂盒等等)。在一個實施例中,示例系統(tǒng)100執(zhí)行位于美國華盛頓州雷蒙德市的微軟公司所提供的WINDOWS?操作系統(tǒng)的一種版本,雖然也可以使用其他操作系統(tǒng)(例如,UNIX和Linux)、嵌入式軟件和/或圖形用戶界面。如此,本發(fā)明的各實施例不僅限于硬件電路和軟件的任何特定的組合。
[0028]各實施例不僅限于計算機(jī)系統(tǒng)。本發(fā)明的替換實施例可以用于諸如手持式設(shè)備和嵌入式應(yīng)用之類的其他設(shè)備中。手持式設(shè)備的某些示例包括蜂窩電話、網(wǎng)際協(xié)議設(shè)備、數(shù)碼相機(jī)、個人數(shù)字助理(PDA)以及手持式PC。嵌入式應(yīng)用可包括微控制器、數(shù)字信號處理器(DSP)、芯片上系統(tǒng)、網(wǎng)絡(luò)計算機(jī)(NetPC)、機(jī)頂盒、網(wǎng)絡(luò)集線器、廣域網(wǎng)(WAN)交換機(jī)、或能夠執(zhí)行根據(jù)至少一個實施例的一個或多個指令的任何其他系統(tǒng)。
[0029]在此所示出的實施例中,處理器102包括實現(xiàn)將執(zhí)行至少一個指令的算法的一個或多個執(zhí)行單元108??梢栽趩翁幚砥髋_式機(jī)或服務(wù)器系統(tǒng)的上下文中來描述一個實施例,但是,替換實施例可以被包括在多處理器系統(tǒng)中。系統(tǒng)100是“中樞”系統(tǒng)體系結(jié)構(gòu)的示例。計算機(jī)系統(tǒng)100包括處理數(shù)據(jù)信號的處理器102。作為一個說明性示例,處理器102包括復(fù)雜指令集計算機(jī)(Cl SC )微處理器、精簡指令集計算(RI SC )微處理器、超長指令字(VLIW )微處理器、實現(xiàn)指令集的組合的處理器或任何其他處理器設(shè)備,諸如,例如,數(shù)字信號處理器。處理器102耦合到在處理器102及系統(tǒng)100中的其他組件之間傳輸數(shù)據(jù)信號的處理器總線110。系統(tǒng)100的元件(例如,圖形加速器112、存儲器控制器中樞116、存儲器120、1/0控制器中樞124、無線收發(fā)器126、閃存B10S128、網(wǎng)絡(luò)控制器134、音頻控制器136、串行擴(kuò)展端口138、I/O控制器140、等等)執(zhí)行本領(lǐng)域普通技術(shù)人員所共知的它們的常規(guī)功能。
[0030]在一個實施例中,處理器102包括I級(LI)內(nèi)部高速緩存104。取決于體系結(jié)構(gòu),處理器102可以具有單個內(nèi)部高速緩存或多級內(nèi)部高速緩存。取決于特定實現(xiàn)以及需求,其他實施例包括內(nèi)部和外部高速緩存兩者的組合。寄存器文件106將不同類型的數(shù)據(jù)存儲在各種寄存器中,包括整數(shù)寄存器、浮點寄存器、向量寄存器、分組寄存器、影子寄存器(shadow register)、檢查點寄存器、狀態(tài)寄存器以及指令指針寄存器。
[0031]執(zhí)行單元108 (包括執(zhí)行整數(shù)以及浮點運算的邏輯)也駐留在處理器102中。在一個實施例中,處理器102包括存儲微代碼的微代碼(ucode) ROM,該微代碼在被執(zhí)行時將執(zhí)行某些宏指令的算法或處理復(fù)雜情況。這里,微代碼是潛在地可更新的,以為處理器102處理邏輯缺陷/修補(bǔ)。對于一個實施例,執(zhí)行單元108包括處理打包的指令集109的邏輯。通過與執(zhí)行指令的相關(guān)聯(lián)的電路一起將打包的指令集109包括在通用處理器102的指令集中,許多多媒體應(yīng)用程序所使用的操作可以使用通用處理器102中的打包的數(shù)據(jù)來執(zhí)行。如此,通過使用全寬的處理器的數(shù)據(jù)總線來對打包的數(shù)據(jù)執(zhí)行操作,許多多媒體應(yīng)用程序被加速并且更有效率地被執(zhí)行。這潛在地消除了跨處理器的數(shù)據(jù)總線來傳輸較小單位的數(shù)據(jù)以執(zhí)行一個或多個操作(一次一個數(shù)據(jù)元素)的必要性。
[0032]執(zhí)行單元108的替換實施例也可以用于微控制器、嵌入式處理器、圖形設(shè)備、DSP及其他類型的邏輯電路中。系統(tǒng)100包括存儲器120。存儲器120包括動態(tài)隨機(jī)存取存儲器(DRAM)設(shè)備、靜態(tài)隨機(jī)存取存儲器(SRAM)設(shè)備、閃存設(shè)備或其他存儲器設(shè)備。存儲器120存儲要由處理器102執(zhí)行的指令和/或通過數(shù)據(jù)信號來表示的數(shù)據(jù)。
[0033]系統(tǒng)邏輯芯片116耦合到處理器總線110和存儲器120。在所示出的實施例中,系統(tǒng)邏輯芯片116可以是存儲器控制器中樞(MCH)。處理器102可以通過處理器總線110與MCHl 16進(jìn)行通信。MCHl 16提供到存儲器120的高帶寬存儲器路徑118,用于指令和數(shù)據(jù)存儲,并用于存儲圖形命令、數(shù)據(jù)和紋理。MCH116將在處理器102、存儲器120及系統(tǒng)100中的其他組件之間定向數(shù)據(jù)信號,并在處理器總線110、存儲器120以及系統(tǒng)1/0122之間橋接數(shù)據(jù)信號。在某些實施例中,系統(tǒng)邏輯芯片116可以提供用于耦合到圖形控制器112的圖形端口。MCH116通過存儲器接口 118耦合到存儲器120。圖形卡112通過加速圖形端口(AGP)互連114耦合到MCH116。
[0034]系統(tǒng)100使用專有的中樞接口總線122來將MCHl 16耦合到I/O控制器中樞(ICH)130。ICH130通過本地I/O總線來提供到某些I/O設(shè)備的直接連接。本地I/O總線是用于將外圍設(shè)備連接到存儲器120、芯片組以及處理器102的高速I/O總線。音頻控制器、固件中樞(閃存B10S)128、無線收發(fā)器126、數(shù)據(jù)存儲器124、包含用戶輸入和鍵盤接口的傳統(tǒng)I/O控制器、諸如通用串行總線(USB)之類的串行擴(kuò)展端口以及網(wǎng)絡(luò)控制器134是一些示例。數(shù)據(jù)存儲設(shè)備124可以包括硬盤驅(qū)動器、軟盤驅(qū)動器、CD-ROM設(shè)備、閃存設(shè)備或其他大容量存儲設(shè)備。
[0035]對于系統(tǒng)的另一個實施例,根據(jù)一個實施例的指令可以與芯片上系統(tǒng)一起使用。芯片上系統(tǒng)的一個實施例包括處理器和存儲器。一個這樣的系統(tǒng)的存儲器是閃存。閃存可以與處理器及其他系統(tǒng)組件位于同一個晶片上。另外,諸如存儲器控制器或圖形控制器之類的其他邏輯塊也可以位于芯片上系統(tǒng)之上。
[0036]圖2是根據(jù)本發(fā)明的一個實施例的包括執(zhí)行指令的邏輯電路的處理器200的微體系結(jié)構(gòu)的框圖。在某些實施例中,根據(jù)一個實施例的指令可被實現(xiàn)為對具有字節(jié)、字、雙字、四倍字等等的大小以及諸如單和雙精度整數(shù)和浮點數(shù)據(jù)類型之類的數(shù)據(jù)類型的數(shù)據(jù)元素進(jìn)行操作。在一個實施例中,有序前端201是獲取要被執(zhí)行的指令并準(zhǔn)備好它們供稍后在處理器流水線中使用的處理器200的一部分。前端201可以包括多個單元。在一個實施例中,指令預(yù)取器226從存儲器中獲取指令,并將它們饋送到指令解碼器228,該指令解碼器228又解碼或解釋它們。例如,在一個實施例中,解碼器將接收到的指令解碼為機(jī)器可以執(zhí)行的一個或多個叫做“微指令”或“微操作”的操作。在其他實施例中,解碼器將指令解析為微體系結(jié)構(gòu)用來執(zhí)行根據(jù)一個實施例的操作的操作碼和對應(yīng)的數(shù)據(jù)和控制字段。在一個實施例中,跟蹤高速緩存230獲取已解碼的微操作,并將它們組裝為程序有序序列或uop隊列234中的跟蹤以供執(zhí)行。當(dāng)跟蹤高速緩存230遇到復(fù)雜指令時,微代碼R0M232提供完成操作所需的微操作。
[0037]某些指令被轉(zhuǎn)換為單個微操作,而其他指令需要多個微操作才能完成完全操作。在一個實施例中,如果需要四個以上的微操作才能完成指令,則解碼器228訪問微代碼R0M232來執(zhí)行指令。對于一個實施例,指令可以被解碼為少量的微操作,用于在指令解碼器228處進(jìn)行處理。在另一個實施例中,指令可以存儲在微代碼R0M232內(nèi),以防需要若干個微操作才能完成該操作。跟蹤高速緩存230引用入口點可編程邏輯陣列(PLA)來確定用于從微代碼R0M232中讀取微代碼序列的正確的微指令指針,以完成根據(jù)一個實施例的一個或多個指令。在微代碼R0M232完成對用于指令的微操作的排序之后,機(jī)器的前端201恢復(fù)從跟蹤高速緩存230獲取微操作。
[0038]無序執(zhí)行引擎203是準(zhǔn)備指令以供執(zhí)行的地方。無序執(zhí)行邏輯具有若干個緩沖器,以平緩和重新排序指令的流,以在它們離開流水線并被調(diào)度供執(zhí)行時優(yōu)化性能。分配器邏輯分配每一個微操作需要的以便執(zhí)行的機(jī)器緩沖器和資源。寄存器別名使用邏輯將邏輯寄存器映射到寄存器文件中的條目。分配器還在指令調(diào)度器(存儲器調(diào)度器、快速調(diào)度器202、慢/ 一般浮點調(diào)度器204以及簡單浮點調(diào)度器206)的前面,為兩個微操作隊列中的一個中的每一個微操作分配條目,一個用于存儲器操作而一個用于非存儲器操作。微操作調(diào)度器202、204、206基于它們的依賴的輸入寄存器操作數(shù)源的就緒狀態(tài)以及微操作完成它們的操作所需的執(zhí)行資源的可用性,來確定微操作何時準(zhǔn)備好執(zhí)行。一個實施例的快速調(diào)度器202可以在主時鐘周期的每一半調(diào)度,而其他調(diào)度器只能每個主處理器時鐘周期調(diào)度一次。調(diào)度器仲裁分派端口,來調(diào)度微操作以供執(zhí)行。
[0039]物理寄存器文件208、210在調(diào)度器202、204、206和執(zhí)行塊211中的執(zhí)行單元212、214、216、218、220、222、224之間。對于整數(shù)和浮點運算,分別有單獨的寄存器文件208、210。一個實施例的每一個寄存器文件208、210還包括旁路網(wǎng)絡(luò),該旁路網(wǎng)絡(luò)可以將還沒有被寫入到寄存器文件中的剛剛完成的結(jié)果旁路或轉(zhuǎn)發(fā)到新依賴的微操作。整數(shù)寄存器文件208和浮點寄存器文件210還能夠與其他文件進(jìn)行數(shù)據(jù)交換。對于一個實施例,整數(shù)寄存器文件208被拆分成兩個單獨的寄存器文件,一個寄存器文件用于低階32比特的數(shù)據(jù),第二寄存器文件用于高階32比特的數(shù)據(jù)。一個實施例的浮點寄存器文件210具有128比特寬的條目,因為浮點指令通常具有寬度從64到128比特的操作數(shù)。
[0040]執(zhí)行塊211包含其中實際執(zhí)行指令的執(zhí)行單元212、214、216、218、220、222、224。此部分包括寄存器文件208、210,這些寄存器文件208,210存儲微指令需要執(zhí)行的整數(shù)和浮點數(shù)據(jù)操作數(shù)值。一個實施例的處理器200包括若干個執(zhí)行單元:地址生成單元(AGU)212、AGU214、快速ALU216、快速ALU218、慢速ALU220、浮點ALU222、浮點移動單元224。對于一個實施例,浮點執(zhí)行塊222、224執(zhí)行浮點、MMX、SIMD以及SSE或其他操作。一個實施例的浮點ALU222包括64比特x64比特浮點除法器,以執(zhí)行除法、平方根,以及剩余微操作。對于本發(fā)明的各實施例,可以利用浮點硬件來處理涉及浮點值的指令。在一個實施例中,ALU運算進(jìn)入高速ALU執(zhí)行單元216、218。一個實施例的快速ALU216、218可以執(zhí)行快速的操作,帶有一半時鐘周期的有效延遲。對于一個實施例,大多數(shù)復(fù)雜的整數(shù)操作進(jìn)入慢速ALU220,因為慢速ALU220包括用于長延遲類型的操作的整數(shù)執(zhí)行硬件,諸如乘法器、移位器、標(biāo)記邏輯以及分支處理。存儲器加載/存儲操作是由AGU212、214執(zhí)行的。對于一個實施例,整數(shù)ALU216、218、220是在對64比特數(shù)據(jù)操作數(shù)執(zhí)行整數(shù)操作的上下文中描述的。在替換實施例中,ALU216、218、220可被實現(xiàn)為支持各種數(shù)據(jù)比特,包括16、32、128、256等等。類似地,浮點單元222,224可被實現(xiàn)為支持具有各種寬度的比特的操作數(shù)的范圍。對于一個實施例,浮點單元222、224可以結(jié)合SMD和多媒體指令對128比特寬的打包數(shù)據(jù)操作數(shù)進(jìn)行操作。
[0041]在一個實施例中,微操作調(diào)度器202、204、206在父加載完成執(zhí)行之前分派依賴的操作。由于微操作是在處理器200中投機(jī)性地調(diào)度和執(zhí)行的,因此處理器200還包括處理存儲器未命中的邏輯。如果數(shù)據(jù)加載在數(shù)據(jù)高速緩存中未命中,則在流水線中可能會有帶有臨時不正確的數(shù)據(jù)的離開調(diào)度器的正在執(zhí)行的依賴的操作。重播機(jī)制跟蹤并重新執(zhí)行使用不正確的數(shù)據(jù)的指令。依賴的操作應(yīng)該被重播,而獨立的操作被允許完成。處理器的一個實施例的調(diào)度器和重播機(jī)制還被設(shè)計為捕捉用于文本字符串比較操作的指令序列。
[0042]術(shù)語“寄存器”可以表示被用作標(biāo)識操作數(shù)的指令的一部分的板上的處理器存儲器位置。換言之,寄存器可以是從處理器外部可使用的那些寄存器(從編程器的角度來看)。然而,實施例的寄存器在特定類型的電路的意義上不應(yīng)該受限制。相反,實施例的寄存器能夠存儲和提供數(shù)據(jù)并執(zhí)行此處所描述的功能。此處所描述的寄存器可以通過處理器內(nèi)的電路使用任意數(shù)量的不同的技術(shù)來實現(xiàn),諸如專用物理寄存器、使用寄存器別名的動態(tài)地分配的物理寄存器、專用和動態(tài)地分配的物理寄存器的組合等等。在一個實施例中,整數(shù)寄存器存儲32比特整型數(shù)據(jù)。一個實施例的寄存器文件還包含用于打包的數(shù)據(jù)的八個多媒體SMD寄存器。對于下面的討論,寄存器被理解為是被設(shè)計為保存打包的數(shù)據(jù)的數(shù)據(jù)寄存器,諸如利用加利福尼亞州Santa Clara的Intel Corporation的MMX?技術(shù)實現(xiàn)的微處理器中的64比特寬MMXTM寄存器(在某些情況下,也簡稱為“mm”寄存器)。以整數(shù)和浮點形式存在的這些MMX寄存器,可以與伴隨SMD和SSE指令的打包數(shù)據(jù)元件一起操作。類似地,也可以使用涉及SSE2、SSE3、SSE4或以外的(一般地稱為“SSEx”)技術(shù)的128比特寬的XMM寄存器來保存這樣的打包數(shù)據(jù)操作數(shù)。在一個實施例中,在存儲打包的數(shù)據(jù)和整型數(shù)據(jù)時,寄存器不需要區(qū)分兩種數(shù)據(jù)類型。在一個實施例中,整數(shù)和浮點包含在同一個寄存器文件或者不同的寄存器文件中。此外,在一個實施例中,浮點和整型數(shù)據(jù)可以存儲在不同的寄存器中或相同寄存器中。
[0043]圖3a_3b示意地示出了根據(jù)本發(fā)明的一個或多個方面的處理器微體系結(jié)構(gòu)的元件。在圖3a中,處理器流水線400包括獲取級402、長度解碼級404、解碼級406、分配級408、重命名級410、調(diào)度(也稱為分派或發(fā)布)級412、寄存器讀取/存儲器讀取級414、執(zhí)行級416、寫回/存儲器寫入級418、異常處理級422以及提交級424。
[0044]在圖3b中,箭頭表示兩個或更多單元之間的耦合,箭頭的方向指出那些單元之間的數(shù)據(jù)流動的方向。圖3b示出了處理器核490,包括耦合到執(zhí)行引擎單元450的前端單元430,執(zhí)行引擎單元450和前端單元430兩者都耦合到存儲器單元470。
[0045]核490可以是精簡指令集計算(RISC)核、復(fù)雜指令集計算(CISC)核、超長指令字(VLIW)核或混合型或替代核類型。作為另一種選項,核490可以是專用的核,諸如例如網(wǎng)絡(luò)或通信核、壓縮引擎、圖形核等等。
[0046]前端單元430包括耦合到指令高速緩存單元434的轉(zhuǎn)移預(yù)測單元432,指令高速緩存單元434耦合到指令轉(zhuǎn)換后備緩沖器(TLB)436,指令轉(zhuǎn)換后備緩沖器436耦合到指令獲取單元438,指令獲取單元438耦合到解碼單元440。解碼單元或解碼器可以解碼指令,并生成一個或多個微操作、微代碼入口點、微指令、其他指令或其他控制信號作為輸出,它們從原始指令解碼得出、或以別的方式反映、或來源于原始指令。解碼器可以使用各種不同的機(jī)制來實現(xiàn)。合適的機(jī)制的示例包括但不僅限于查找表、硬件實現(xiàn)、可編程邏輯陣列(PLA)、微代碼只讀存儲器(ROM)等等。指令高速緩存單元434進(jìn)一步耦合到存儲器單元470中的2級(L2)高速緩存單元476。解碼單元440耦合到執(zhí)行引擎單元450中的重命名/分配器單元452。
[0047]執(zhí)行引擎單元450包括耦合到隱退單元454的重命名/分配器單元452和一組一個或多個調(diào)度器單元456。調(diào)度器單元456表示任意數(shù)量的不同的調(diào)度器,包括預(yù)留站、中心指令窗口等等。調(diào)度器單元456耦合到物理寄存器文件單元458。物理寄存器文件單元458中的每一個都表示一個或多個物理寄存器文件,其中不同的文件存儲一種或多種不同的數(shù)據(jù)類型,諸如標(biāo)量整數(shù)、標(biāo)量浮點、打包整數(shù)、打包浮點、向量整數(shù)、向量浮點等等、狀態(tài)(例如,是要被執(zhí)行的下一指令的地址的指令指針)等等。物理寄存器文件單元458被隱退單元454重疊,以示出可以實現(xiàn)寄存器別名使用和無序執(zhí)行的各種方式(例如,使用重新排序緩沖器和隱退寄存器文件,使用未來的文件,歷史緩沖器,以及隱退寄存器文件;使用寄存器圖和寄存器的池;等等)。一般而言,體系結(jié)構(gòu)寄存器從處理器的外部或從編程器的角度可見。寄存器不僅限于任何已知的特定類型的電路。各種不同類型的寄存器都是合適的,只要它們能夠存儲和提供如此處所描述的數(shù)據(jù)。合適的寄存器的示例包括,但不僅限于,專用物理寄存器,使用寄存器別名的動態(tài)地分配的物理寄存器,專用和動態(tài)地分配的物理寄存器的組合,等等。隱退單元454和物理寄存器文件單元458耦合到執(zhí)行群集460。執(zhí)行群集460包括一組一個或多個執(zhí)行單元162和一組一個或多個存儲器訪問單元464。執(zhí)行單元462可以對各種類型的數(shù)據(jù)(例如,標(biāo)量浮點、打包整數(shù)、打包浮點、向量整數(shù)、向量浮點)執(zhí)行各種操作(例如,位移、加法、減法、乘法)。盡管一些實施例可以包括專用于特定功能或功能組的若干個執(zhí)行單元,但是,其他實施例可以包括一個執(zhí)行單元或所有都執(zhí)行所有功能的多個執(zhí)行單元。調(diào)度器單元456、物理寄存器文件單元458,以及執(zhí)行群集460被示為可能是多個,因為某些實施例對于某些類型的數(shù)據(jù)/操作創(chuàng)建單獨的流水線(例如,標(biāo)量整數(shù)流水線、標(biāo)量浮點/打包整數(shù)/打包浮點/向量整數(shù)/向量浮點流水線,和/或存儲器訪問流水線,每一個流水線都具有它們自己的調(diào)度器單元、物理寄存器文件單元,和/或執(zhí)行群集一在單獨的存儲器訪問流水線的情況下,實現(xiàn)了其中只有此流水線的執(zhí)行群集具有存儲器訪問單元464的某些實施例)。還應(yīng)該理解,使用單獨的流水線,這些流水線中的一個或多個可以是無序發(fā)布/執(zhí)行,其余的是有序的。
[0048]存儲器訪問單元組464耦合到存儲器單元470,該存儲器單元470包括耦合到數(shù)據(jù)高速緩存單元474的數(shù)據(jù)TLB單元472,該數(shù)據(jù)高速緩存單元474耦合到2級(L2)高速緩存單元476。在一個示例性實施例中,存儲器訪問單元464可以包括加載單元、存儲地址單元以及存儲數(shù)據(jù)單元,其中每一個都耦合到存儲器單元470中的數(shù)據(jù)TLB單元472。L2高速緩存單元476耦合到一個或多個其他級別的高速緩存,最終耦合到主存儲器。
[0049]作為示例,示例性寄存器重命名,無序發(fā)布/執(zhí)行核體系結(jié)構(gòu)可以按如下方式實現(xiàn)流水線400:指令獲取438執(zhí)行獲取和長度解碼級402以及404 ;解碼單元440執(zhí)行解碼級406 ;重命名/分配器單元452執(zhí)行分配級408和重命名級410 ;調(diào)度器單元456執(zhí)行調(diào)度級412 ;物理寄存器文件單元458和存儲器單元470執(zhí)行寄存器讀取/存儲器讀取級414 ;執(zhí)行群集460執(zhí)行“執(zhí)行級416” ;存儲器單元470和物理寄存器文件單元458執(zhí)行寫回/存儲器寫入級418 ;涉及異常處理級422中可以涉及各種單元;以及,隱退單元454和物理寄存器文件單元458執(zhí)行提交級424。
[0050]核490可以支持一個或多個指令集(例如,x86指令集(帶有與較新的版本一起添加的某些擴(kuò)展);位于美國加州桑尼維爾的MIPS Technologies的MIPS指令集;位于美國加州桑尼維爾的ARM Holdings的ARM指令集(帶有諸如NEON之類的可選的額外的擴(kuò)展)。
[0051]在某些實現(xiàn)中,核可以支持多線程(執(zhí)行操作或線程的兩個或更多并行組),并可以以各種方式達(dá)到這一目的,包括時間切片多線程、同時的多線程(其中,單個物理核為物理核同時正在多線程處理的每一個線程提供一種邏輯核)或其組合(例如,時間切片獲取和解碼和此后的同時的多線程處理,諸如右:1 nte I:K) Hyperthreading技術(shù)中)。
[0052]盡管寄存器別名使用是在無序執(zhí)行的上下文中描述的,但是,應(yīng)該理解,寄存器別名可以用于有序體系結(jié)構(gòu)中。盡管處理器的所示出的實施例還包括單獨的指令和數(shù)據(jù)高速緩存單元434/474以及共享的L2高速緩存單元476,但是,替換實施例對于指令和數(shù)據(jù)兩者可以具有單個內(nèi)部高速緩存,諸如,例如,I級(LI)內(nèi)部高速緩存,或多級內(nèi)部高速緩存。在某些實施例中,系統(tǒng)可以包括內(nèi)部高速緩存和核和/或處理器外部的外部高速緩存的組合。可另選地,全部高速緩存都可以位于核和/或處理器外部。
[0053]圖4示出了根據(jù)本發(fā)明的一個或多個方面的示例處理器102及計算機(jī)系統(tǒng)100的其他組件的框圖。參考圖4,處理器核490可以包括獲取單元438以獲取用于由核490執(zhí)行的指令??梢詮囊粋€或多個存儲設(shè)備,諸如存儲器115和/或其他存儲器設(shè)備(諸如數(shù)據(jù)存儲設(shè)備124)獲取指令。處理器核490還可以包括解碼單元440以將獲取的指令解碼為一個或多個微操作。處理器核490還可以包括調(diào)度單元446以存儲從解碼單元440接收到的解碼的指令,直到指令準(zhǔn)備被發(fā)布,例如,直到解碼的指令的操作數(shù)值變得可用。調(diào)度單元446可以調(diào)度和/或向執(zhí)行單元450發(fā)布解碼的指令。
[0054]執(zhí)行單元450可以包括一個或多個算術(shù)邏輯單元(ALU)、一個或多個整數(shù)執(zhí)行單元、一個或多個浮點執(zhí)行單元和/或其他執(zhí)行單元。在某些實現(xiàn)中,執(zhí)行單元450可以無序(000)地執(zhí)行指令。處理器核490還可以包括隱退單元454以在提交執(zhí)行的指令之后隱退執(zhí)行的指令。
[0055]處理器核490還可以包括RAT421、PRF423、MIT425以及邏輯150以實現(xiàn)如下面更詳細(xì)地描述的數(shù)據(jù)操縱功能。盡管在圖4中邏輯150被示為在核490內(nèi)部,但是,也可以在計算機(jī)系統(tǒng)100中的別處提供邏輯150。此外,邏輯150和/或其組件中的一些可以在多個處理器核之間共享。
[0056]如上文所指出的,可以通過將源寄存器指針復(fù)制到RAT中的目的地寄存器指針來消除移動指令。圖5示意地示出了通過寄存器別名使用來執(zhí)行MOV DX, AX指令:邏輯寄存器AX的RAT條目的內(nèi)容(指向PRF中的條目X的指針)被復(fù)制到邏輯寄存器DX的RAT條目。如圖5所示出的,在某些實現(xiàn)中,PRF可以通過物理寄存器值的陣列來提供,RAT可以通過指向PRF的指針的陣列來提供。
[0057]在指令被發(fā)送到執(zhí)行單元之前,可以分配PRF條目,用于接收該指令的結(jié)果。由于多個RAT條目可以指向同一個PRF條目,因此,一旦多個RAT條目已經(jīng)被一個或多個指令(因此被隱退)改寫,可以將PRF條目標(biāo)記為對后續(xù)指令可用。MIT可以用于跟蹤對PRF條目的引用以確定何時可以釋放PRF條目,以供新指令使用。
[0058]MIT可以通過具有代表寄存器被跟蹤的多個行的二維陣列(例如,比特矩陣)來提供。每一 MIT列都可以代表移動消除集,其中,一個置位比特表示對應(yīng)的邏輯寄存器參與移動消除集。
[0059]當(dāng)移動操作被消除時,對應(yīng)于源和目的地邏輯寄存器的比特被置位,表示這些邏輯寄存器是移動消除集的一部分,如圖6a示意地示出。如果移動指令的源是已經(jīng)參與移動消除集的邏輯寄存器,則將目的地邏輯寄存器添加到該集中,如圖6b示意地示出的。當(dāng)邏輯寄存器被另一指令改寫時,可以在MIT中清除為該寄存器設(shè)置的比特,如此將邏輯寄存器與移動消除集分離,如圖6c示意地示出的。一旦對物理寄存器的所有引用被一個或多個指令改寫,并且那些指令已經(jīng)隱退,不是任何移動消除集的一部分或是移動消除集的唯一成員的對應(yīng)的物理寄存器可以被新指令重復(fù)使用。
[0060]在某些實現(xiàn)中,移動消除集跟蹤是在微操作分配到微操作分配之間執(zhí)行的,而不依賴于微操作隱退。即,在分配移動微操作時,創(chuàng)建移動消除集。進(jìn)一步地,在分配改寫邏輯寄存器的微操作時,從現(xiàn)有的移動消除集中刪除邏輯寄存器。當(dāng)分配改寫移動消除集中的最后一個邏輯寄存器的微操作時,當(dāng)該改寫微操作隨后隱退時,PRF條目被標(biāo)記為釋放。釋放PRF條目取決于最后一個改寫微操作的微操作隱退。執(zhí)行對PRF條目的釋放的邏輯是在MIT的外面執(zhí)行的。然而,由MIT實現(xiàn)的移動消除集可以在最后一個改寫微操作分配之后立即被回收,并可以被重復(fù)使用以跟蹤另一移動消除集。
[0061]由于移動消除集是通過MIT列來提供的,以便跟蹤N個邏輯寄存器中的移動消除的所有可能的組合,因此,可能需要N/2個MIT列。如果MIT具有少于N/2的移動消除集,并且它們?nèi)慷急皇褂?,則可以將下一移動指令作為消耗新PRF條目的普通指令發(fā)送到執(zhí)行單元。在任一種情況下,MIT向RAT發(fā)送信號以指示指令是否需要消耗PRF條目。
[0062]在超級標(biāo)量M-寬發(fā)布處理器中,每周期高達(dá)M個指令可以是數(shù)據(jù)復(fù)制指令,MIT只有足夠的空閑集以消除發(fā)布指令的子集是可能的。為進(jìn)一步提高執(zhí)行效率,處理器可以不判斷移動指令是否與預(yù)先存在的或新移動消除集有關(guān),而是假設(shè)每一移動指令都將需要新移動消除集。因此,處理器可以將可用的移動消除集的數(shù)量與移動指令的數(shù)量進(jìn)行比較,并選擇要被移動消除的頭K個移動指令,同時將其他移動指令發(fā)送到執(zhí)行單元。
[0063]圖7a_7c示意地示出了根據(jù)本發(fā)明的一個或多個方面的MIT分配和預(yù)留邏輯。圖7a示出了 MIT的初始狀態(tài)(周期N):列1-3是空閑的,可用于分配。隨后預(yù)留列1_2,用于執(zhí)行兩個移動操作(MOV AX, CX和M0VR9,R8)。在(N+1)周期,如圖7b示意地示出,Reserve (預(yù)留)比特被置位,F(xiàn)ree (釋放)比特在MIT中被清除,以反映列1_2的上文指出的分配。隨后,兩個額外的移動消除機(jī)會向MIT呈現(xiàn)它們自己,如此預(yù)留MIT列3用于執(zhí)行第三移動操作(MOV BX,DX),并將第四移動操作發(fā)送到執(zhí)行單元,因為在MIT (MOV AX,R8)中沒有可用的移動消除集。在(N+2)周期,如圖7c示意地示出的,取消從周期N的預(yù)留,因此,相應(yīng)的Reserve比特被清除。MIT利用來自周期N的指令的結(jié)果更新,并入列O,在列2中創(chuàng)建新集。考慮到MIT更新,重新計算Empty (空)比特,通過對于受影響的MIT列,從Empty比特減去Reserve比特,更新Free比特。因此,對于要利用新移動消除信息來更新的MIT集,可以有兩周期延遲。
[0064]當(dāng)只有一個寄存器映射仍保留移動消除集中,以便對應(yīng)的PRF條目只有一個引用保留時,由MIT列所提供的移動消除集仍可能不可用于向另一移動指令分配。這樣的集可以稱為“孤立”集,因為它只有一個寄存器映射。在沒有用于清除孤立集的一些動作的情況下,它可能仍不可用,直到最后一個邏輯寄存器被改寫,如此減少可能的移動消除的數(shù)量。
[0065]在某些實現(xiàn)中,作為MIT分配搜索的一部分,處理器可以檢測并清除孤立移動消除集。如果移動消除集被判斷為是孤立集,則處理器可以為下一周期斷言將釋放該集用于分配的清除信號。因此,孤立集可以在三個或多個周期變得可用,包括用于初始分配寫入的兩個周期和用于清除孤立集的一個周期,如下面更詳細(xì)地描述的。
[0066]圖8a_8c示意地示出了根據(jù)本發(fā)明的一個或多個方面的MIT孤立回收邏輯功能的一個示例。圖8a示意地表示在執(zhí)行移動指令和部分地改寫新分配的移動消除集的后續(xù)指令之前的MIT列的初始狀態(tài)(稱為周期N)。圖8b示意地表示在在周期N+2中更新之后MIT列的狀態(tài)。在此階段,MIT列是孤立集,并可以如此被檢測。圖8c示意地表示在孤立回收之后MIT列的狀態(tài)。然而,值得注意的是,周期N+1中的移動消除指令使用AX寄存器作為其源,則在周期N+3中將不會有孤立回收,因為移動消除集將利用來自周期N+1的指令的結(jié)果進(jìn)行更新。
[0067]在某些實現(xiàn)中,邏輯150可以預(yù)先計算兩個或更多數(shù)據(jù)操縱操作的依賴關(guān)系,然后執(zhí)行單個MIT更新以反映兩個或更多操作的結(jié)果,如此,改善移動消除操作的時序和功率消耗方面。MIT更新可包括創(chuàng)建新移動消除集、修改移動消除集或回收孤立移動消除集。
[0068]與序列化更新邏輯不同,邏輯150更新MIT—次,以反映兩個或更多數(shù)據(jù)操縱操作的結(jié)果。將被序列化的更新排序中的對應(yīng)的MIT更新反映的中間MIT狀態(tài)不由邏輯150執(zhí)行。例如,如果將寄存器添加到移動消除集中并被下一操作改寫,則MIT將不會反映包含寄存器的移動消除集的中間狀態(tài)。
[0069]為了預(yù)先計算兩個或更多數(shù)據(jù)操縱操作的依賴關(guān)系,邏輯150可以檢測多種類型的移動操作,包括但不限于:具有被用作同一個處理線中的隨后的移動操作的源的目的地寄存器的移動操作,如圖9a_9c示意地示出的;相同線中的使用同一個寄存器作為源的兩個移動操作,如圖1Oa-1Oc示意地示出的;以及,具有與隨后的移動操作的源匹配的目的地寄存器的移動操作,并帶有對該目的地/源寄存器的中間寫入,如圖1la-1lc示意地示出的。
[0070]為了檢測上文引用的組合,邏輯150可以比較多個指令的源和目的地,判斷是否已經(jīng)為移動消除選擇了移動指令,判斷移動消除操作的源是否存在于已經(jīng)存在的移動消除集中,以及判斷新的或現(xiàn)有的移動消除集中涉及的任何邏輯寄存器是否隨后被改寫。鑒于確定的MIT列分配數(shù)據(jù),邏輯150可以生成要被寫入到受影響的MIT列的新的數(shù)據(jù),選擇新的或現(xiàn)有的數(shù)據(jù)作為與每一指令相關(guān)聯(lián)的更新數(shù)據(jù),使用上文引用的源和目的地比較將數(shù)據(jù)一個指令旁路到另一指令,并更新MIT。
[0071]如上文所指出的,移動消除邏輯可以以硬件或軟件或其組合來實現(xiàn)。在圖12中示意地示出了實現(xiàn)邏輯150的示例電路800。
[0072]電路800可以包括對應(yīng)于特定MIT列(移動消除集)中的特定邏輯寄存器的每比特邏輯802。電路800還可以進(jìn)一步包括對應(yīng)于特定MIT列(移動消除集)的每列邏輯804。
[0073]電路800可以接收多個輸入信號,包括:反映每一個矩陣比特的MIT的前一狀態(tài)的PreviousData信號805 ;每行的SourceMatch信號810,該信號810標(biāo)識處理線中的具有匹配該行的邏輯源的每一移動消除指令;每個處理線指令的SelectorCopy信號815,該信號標(biāo)識是否將數(shù)據(jù)從一個MIT行復(fù)制到另一行(移動消除指令邏輯源行到移動消除指令邏輯目的地行),由此,將目的地邏輯寄存器從移動消除指令添加到以前存在的移動消除集中(還將它與所有其他移動消除集解除關(guān)聯(lián));以及,包含每個處理線指令的要被寫入到MIT行中的新的數(shù)據(jù)的AllocationData信號820。此數(shù)據(jù)可以是零以從所有移動消除集中清除由MIT行所標(biāo)識的邏輯寄存器,或者它可以包含將邏輯寄存器分配到移動消除集的數(shù)據(jù)。電路800可以處理上面的引用的信號以產(chǎn)生新MIT數(shù)據(jù)輸出信號830。
[0074]可以通過利用SourceMatch信號選拔現(xiàn)有的MIT數(shù)據(jù),以從表示是移動指令的源的邏輯寄存器的MIT中的一行中選擇數(shù)據(jù),來生成CopyData信號832。
[0075]由SelectorCopy信號815控制的Copy/Set多路復(fù)用器840可以選擇CopyData信號或Al1cData信號。SelectorCopy表示來自表示移動指令的源的MIT行的數(shù)據(jù)應(yīng)該被寫入到表示移動指令的目的地的另一行中,如此將目的地寄存器添加到現(xiàn)有的移動消除集中。當(dāng)邏輯150確定移動消除指令的源已經(jīng)參與移動消除集并且邏輯寄存器沒有被處理線中的前一指令改寫時,SelectorCopy信號被置位。通過使用SourceMatch信號810來選拔來自MIT的一行,并檢查以查看在該行中是否有任何比特被置位,來確定參與移動消除集中。
[0076]對串聯(lián)旁路多路復(fù)用器835的控制可以計算執(zhí)行線內(nèi)部的依賴關(guān)系,例如,將第一移動指令的目的地與第二移動指令的源進(jìn)行比較。如果檢測到依賴關(guān)系,則在835中可以將前一指令的數(shù)據(jù)旁路到稍后的指令。串聯(lián)旁路多路復(fù)用器835的輸出信號可以被饋送到更新數(shù)據(jù)多路復(fù)用器845的輸入端。更新數(shù)據(jù)多路復(fù)用器845的另一輸入可以通過PreViousData信號805來提供,通過指示MIT列中是否只有一個比特被置位的ClearOrphan信號850來選拔。由選擇器更新數(shù)據(jù)信號825控制的更新數(shù)據(jù)多路復(fù)用器845可以輸出新MIT數(shù)據(jù)信號850。選擇器更新數(shù)據(jù)信號825是優(yōu)先級編碼的,以便來自最后一個對邏輯寄存器的引用的旁路數(shù)據(jù)被輸出到新MIT數(shù)據(jù)信號850。
[0077]參考圖9-11的示例進(jìn)一步示出了例如由電路800實現(xiàn)的邏輯150的功能。圖9a_9c示意地示出了移動操作,該移動操作的目的地寄存器被用作由示例鏈移動AX->BX->CX所提供的同一個處理線中的隨后的移動操作的源。圖9a示出了 MIT的初始狀態(tài)。圖9b示出了 MIT分配:列O和I分別是針對uopO (MOV BX, AX)和uopl (MOV CX, BX)而分配。由于任一操作的源都不是現(xiàn)有的移動消除集的成員,因此,兩個微操作的CopyData信號832都是0,并且SelectorCopy信號815通過復(fù)制/置位多路復(fù)用器840將兩個微操作的AllocData820發(fā)送到串聯(lián)旁路多路復(fù)用器835。如圖9c所示出的,邏輯150檢測到第一移動操作(MOV BX,AX)的目的地匹配第二移動操作(MOV CX,BX)的源。串聯(lián)旁路多路復(fù)用器835選擇對應(yīng)于第一移動操作(AlloCData[UopO])的復(fù)制/分配數(shù)據(jù),而并非對應(yīng)于第二移動操作(AlloCData[Uopl])的數(shù)據(jù),以作為輸入數(shù)據(jù)饋送到更新數(shù)據(jù)多路復(fù)用器845。如此,UpdateData[UopO]和UpdateData[Uopl]相同。由于更新數(shù)據(jù)多路復(fù)用器845的輸出是優(yōu)先級編碼的,因此,對應(yīng)于引用邏輯寄存器的最后一個操作的旁路的數(shù)據(jù)變?yōu)樾翸IT數(shù)據(jù)。更新數(shù)據(jù)多路復(fù)用器845選擇對應(yīng)于第一移動操作(UpdateData[UopO])的數(shù)據(jù)作為AX的新的數(shù)據(jù),選擇對應(yīng)于第二移動操作(UpdateData[UopI])的旁路的數(shù)據(jù)作為BX和CX兩者的新的數(shù)據(jù),因為第二移動操作是引用這些寄存器的最后一個操作。然而,由于旁路機(jī)制,相同數(shù)據(jù)被寫入到所有三個條目中。
[0078]圖1Oa-1Oc示意地示出了由MOV BX, DX ;M0V AX, DX的示例所提供的使用相同寄存器作為源的一個線中的兩個移動操作。圖1Oa示出了 MIT的初始狀態(tài)。圖1Ob示出7 MIT分配:列I和2分別是為uopO (MOV BX, DX)和uopl (MOV AX, DX)而分配。由于任一操作的源都不是現(xiàn)有的移動消除集的成員,因此兩個微操作的CopyData信號832都是0,并且SelectorCopy信號815將通過復(fù)制/置位多路復(fù)用器840將兩個微操作的AllocData820發(fā)送到串聯(lián)旁路多路復(fù)用器835。如圖1Oc所示出的,類似于圖9a_9c的示例,邏輯150判斷是否為第一移動操作選擇副本或分配數(shù)據(jù)。對于第二移動操作,邏輯150確定移動操作與前一移動消除操作共享源,因此,串聯(lián)旁路多路復(fù)用器835選擇對應(yīng)于第一移動操作(All0cData[U0pO])的復(fù)制/分配數(shù)據(jù),而不是對應(yīng)于第二移動操作(AlloCData[Uopl])的數(shù)據(jù),以作為輸入數(shù)據(jù)饋送到更新多路復(fù)用器845。如此,UpdateData [UopO]和UpdateData [Uopl]相同。更新數(shù)據(jù)多路復(fù)用器845選擇對應(yīng)于第一移動操作(UpdateData[UopO])的數(shù)據(jù)作為BX(UpdateData[uopO])的新的數(shù)據(jù),選擇對應(yīng)于第二移動操作的旁路的數(shù)據(jù)作為DX和AX(UpdateData[UOpl])兩者的新的數(shù)據(jù),因為第二移動操作是引用這些寄存器的最后一個操作。然而,由于旁路機(jī)制,相同數(shù)據(jù)被寫入到所有三個條目中。
[0079]圖1la-1lc示意地示出了一行中的兩個移動指令的示例,其中移動鏈被向移動消除寄存器的中間寫入(MOV BX, AX;overwrite BX;MOV DX, BX)打斷。圖1la示出了 MIT的初始狀態(tài)。圖1lb示出了 MIT分配:MIT列I和2分別是為uopO (MOV BX, AX)和uop2 (MOVDX, BX)而分配。如圖1lc所示出的,類似于圖9a-9c和IOa-1Oc的示例,邏輯150判斷移動操作的源是否已經(jīng)是現(xiàn)有移動消除集的成員,并將對應(yīng)的數(shù)據(jù)饋送到復(fù)制/置位多路復(fù)用器840。在此情況下,復(fù)制/置位多路復(fù)用器840對于uopO經(jīng)過CopyData [uopO],對于uopl 經(jīng)過 Al1cData[uopI],對于 uop2 經(jīng)過 Al1cData[uop2]。請注意,uopl 的 AllocData全部都是零,因為它不會創(chuàng)建移動消除集,而是從任何集中移除該寄存器。邏輯150確定第二移動操作的源匹配第一移動操作的目的地,并且中間操作改寫寄存器。因此,取消了旁路機(jī)制,并且分別地處理三個移動操作的結(jié)果:AX接收第一移動操作(CopyData[UopO]信號)的數(shù)據(jù),BX和DX接收第二移動操作(Al1cData[Uop2])的數(shù)據(jù)。由于更新數(shù)據(jù)多路復(fù)用器845的輸入是優(yōu)先級編碼的,所以對應(yīng)于第二移動操作的數(shù)據(jù)變?yōu)锽X的新的數(shù)據(jù)。如此,由于旁路邏輯運算,沒有作出對BX的中間更新(該中間更新是將它置于MIT列0,從列O中刪除它,然后,將它置于列2)。
[0080]在某些實現(xiàn)中,處理器可以消除整數(shù)通用邏輯寄存器(INT)和流式單指令多數(shù)據(jù)(SIMD)擴(kuò)展(SSE)邏輯寄存器域內(nèi)部的移動指令。SSE域還可以包含高級向量擴(kuò)展(AVX)的邏輯寄存器域,這是SSE的超集域。為進(jìn)一步改善實現(xiàn)的效率,處理器可以為每一個移動操作預(yù)留SSE和INTMIT中的移動消除集,不管移動操作中涉及的寄存器的類型是什么。盡管潛在地減少實際執(zhí)行的移動消除的數(shù)量,由于SSE移動操作可以預(yù)留否則可能被INT指令所使用的的INT移動消除集,因此,上文所描述的統(tǒng)一的預(yù)留機(jī)制還可以進(jìn)一步提高處理器執(zhí)行指令的總效率。
[0081]如此,此處所描述的旁路MIT設(shè)計通過由于并行計算而縮短MIT更新的延遲、執(zhí)行對孤立列的積極的清除以及實現(xiàn)統(tǒng)一的預(yù)留機(jī)制,提高了處理器性能。
[0082]圖13描繪了根據(jù)本發(fā)明的一個或多個方面的帶有旁路MIT的移動消除的示例方法的流程圖。方法900可以由可以包括硬件(例如,電路、專用邏輯和/或可編程邏輯)、軟件(例如,可在計算機(jī)系統(tǒng)上執(zhí)行以執(zhí)行硬件模擬的指令)或其組合的計算機(jī)系統(tǒng)來執(zhí)行。方法900和/或其函數(shù)、例程、子例程或操作中的每一個都可以由執(zhí)行方法的計算機(jī)系統(tǒng)的一個或多個物理處理器來執(zhí)行。方法900的兩個或更多函數(shù)、例程、子例程,或操作可以并行地或按照可以不同于上文所描述的順序的順序來執(zhí)行。在一個示例中,如圖13所示出的,方法900可以由圖1的計算機(jī)系統(tǒng)100來執(zhí)行。
[0083]參考圖13,在框910,處理器可以將多個寄存器值存儲在PRF中。
[0084]在框920,處理器可以將多個指針存儲在RAT中,每一 RAT指針都引用PRF元素。
[0085]在框930,處理器可以將多個移動消除集存儲在MIT中。每一移動消除集都可以包括表示多個邏輯寄存器的多個比特。
[0086]在框940,處理器可以預(yù)先計算兩個或更多數(shù)據(jù)操縱操作的依賴關(guān)系。
[0087]在框950,處理器可以通過更新RAT和/或MIT來反映兩個或更多數(shù)據(jù)操縱操作的結(jié)果。如上文所指出的,在某些實現(xiàn)中,處理器可以預(yù)先計算兩個或更多數(shù)據(jù)操縱操作的依賴關(guān)系,然后執(zhí)行單個MIT更新以反映兩個或更多操作的結(jié)果,如此改善移動消除操作的時序和功率消耗方面。在完成了由框950引用的操作時,方法可以結(jié)束。
[0088]圖14描繪了根據(jù)本發(fā)明的一個或多個方面的示例計算機(jī)系統(tǒng)的框圖。如圖14所不,多處理器系統(tǒng)700是點對點互連系統(tǒng),并包括通過點對點互連750稱合的第一處理器770和第二處理器780。處理器770和780中的每一個都可以是能夠執(zhí)行事務(wù)性的存儲器訪問操作和/或非事務(wù)性的存儲器訪問操作的處理器102的某種版本,諸如下面更詳細(xì)地描述的。
[0089]盡管只利用兩個處理器770780來示出,但是,可以理解,本發(fā)明的范圍不僅限于此。在其他實施例中,一個或多個額外的處理器可以存在于給定處理器中。
[0090]處理器770和780被示為分別包括集成存儲器控制器單元772和782。處理器770還包括點對點(P-P)接口 776和778,作為其總線控制器單元的一部分;類似地,第二處理器780包括P-P接口 786和788。處理器770,780可以使用P-P接口電路778、788通過點對點(P-P)接口 750來交換信息。如圖14所示,IMC772和782將處理器耦合到相應(yīng)的存儲器,即存儲器732和存儲器734,它們可以是本地連接到相應(yīng)的處理器的主存儲器的部分。[0091 ] 處理器770、780中的每一個都可以使用點對點接口電路776、794、786、798通過單個P-P接口 752、754與芯片組790交換信息。芯片組790還可以通過高性能的圖形接口739與高性能的圖形電路738交換信息。
[0092]共享高速高速緩存器(未示出)可以被包括在任一處理器中或者兩個處理器的外面,通過P-P互連與處理器相連接,以便處理器中的任何一個或兩者的本地高速緩存信息可以存儲在共享高速高速緩存器中(如果處理器被置于低功率模式下)。
[0093]芯片組790可以通過接口 796耦合到第一總線716。在一個實施例中,第一總線716可以是外圍組件互連(PCI)總線,或諸如PCI Express總線之類的總線,或另一第三代I/O互連總線,雖然本發(fā)明的范圍不僅限于此。
[0094]如圖14所示,各種I/O設(shè)備714可以耦合到第一總線716,以及將第一總線716耦合到第二總線720的總線橋接器718。在一個實施例中,第二總線720可以是低管腳數(shù)(LPC)總線。在一個實施例中,各種設(shè)備可以耦合到第二總線720,包括例如鍵盤和/或鼠標(biāo)722、通信設(shè)備727和存儲單元728 (諸如磁盤驅(qū)動器或可以包括指令/代碼和數(shù)據(jù)730的其他大容量存儲設(shè)備)。進(jìn)一步地,音頻1/0724可以耦合到第二總線720。請注意,其他體系結(jié)構(gòu)也是可以的。例如,代替圖14的點對點體系結(jié)構(gòu),系統(tǒng)可以實現(xiàn)多點分支總線或其他這樣的體系結(jié)構(gòu)。
[0095]下列示例示出了根據(jù)本發(fā)明的一個或多個方面的各種實現(xiàn)。
[0096]示例I是處理系統(tǒng),包括:被配置成存儲多個物理寄存器值的第一數(shù)據(jù)結(jié)構(gòu);被配置成存儲多個指針的第二數(shù)據(jù)結(jié)構(gòu),每一指針引用第一數(shù)據(jù)結(jié)構(gòu)的元素;包括多個移動消除集的第三數(shù)據(jù)結(jié)構(gòu),每一移動消除集包括表示多個邏輯寄存器的多個比特;以及,被配置成通過使所述第二數(shù)據(jù)結(jié)構(gòu)的元素引用所述第一數(shù)據(jù)結(jié)構(gòu)的元素來執(zhí)行數(shù)據(jù)操縱操作的邏輯,所述邏輯進(jìn)一步被配置成通過執(zhí)行所述第三數(shù)據(jù)結(jié)構(gòu)的單次更新來反映兩個或更多數(shù)據(jù)操縱操作的結(jié)果。
[0097]在示例2中,示例I的處理系統(tǒng)的第三數(shù)據(jù)結(jié)構(gòu)的更新可以包括下列各項中的至少一項:創(chuàng)建移動消除集、修改移動消除集或回收移動消除集。
[0098]在示例3中,示例I的處理系統(tǒng)的邏輯可以被配置成基于預(yù)先計算兩個或更多數(shù)據(jù)操縱操作的依賴關(guān)系來更新第三數(shù)據(jù)結(jié)構(gòu)。
[0099]在示例4中,示例I的處理系統(tǒng)的邏輯可以被配置成預(yù)留下列各項中的至少一項:整數(shù)通用邏輯寄存器域中的第一移動消除集或流式單指令多數(shù)據(jù)(SIMD)擴(kuò)展(SSE)邏輯寄存器域中的第二移動消除集。
[0100]在示例5中,示例I的處理系統(tǒng)的邏輯可以被配置成通過處理下列各項中的至少一項來輸出更新第三數(shù)據(jù)結(jié)構(gòu)的信號:反映第三數(shù)據(jù)結(jié)構(gòu)的前一狀態(tài)的第一信號、標(biāo)識用于數(shù)據(jù)操縱操作的源邏輯寄存器的第二信號、標(biāo)識用于數(shù)據(jù)操縱操作的目的地邏輯寄存器的第三信號、標(biāo)識現(xiàn)有的移動消除集是否包含至少一項引用的第四信號、標(biāo)識所述第三數(shù)據(jù)結(jié)構(gòu)內(nèi)的新移動消除集的第五信號、以及標(biāo)識是否選擇了用于移動消除的所述數(shù)據(jù)操縱操作的第六信號。
[0101]在示例6中,示例I的處理系統(tǒng)的邏輯可以被配置成檢測下列各項中的至少一項:第一數(shù)據(jù)操縱操作所具有的目的地寄存器匹配第二數(shù)據(jù)操縱操作的源;兩個數(shù)據(jù)操縱操作使用公用寄存器作為源,并帶有向所述源寄存器的中間寫入;兩個數(shù)據(jù)操縱操作使用公用寄存器作為源;第一數(shù)據(jù)操縱操作所具有的目的地寄存器匹配第二數(shù)據(jù)操縱操作的源,且?guī)в邢蛩瞿康牡丶拇嫫鞯闹虚g寫入;或第一數(shù)據(jù)操縱操作改寫由現(xiàn)有的移動消除集引用的并且是第二數(shù)據(jù)操縱操作的源的寄存器。
[0102]示例7是一種執(zhí)行數(shù)據(jù)操縱操作的方法,包括:通過計算機(jī)系統(tǒng),將多個物理寄存器值存儲在第一數(shù)據(jù)結(jié)構(gòu)中;在第二數(shù)據(jù)結(jié)構(gòu)中,存儲多個指針,每一指針都引用所述第一數(shù)據(jù)結(jié)構(gòu)的元素;在第三數(shù)據(jù)結(jié)構(gòu)中,存儲多個移動消除集,每一移動消除集都包括表示多個邏輯寄存器的多個比特;通過使所述第二數(shù)據(jù)結(jié)構(gòu)的元素引用所述第一數(shù)據(jù)結(jié)構(gòu)的元素來執(zhí)行數(shù)據(jù)操縱操作;以及,通過執(zhí)行所述第三數(shù)據(jù)結(jié)構(gòu)的單次更新來反映兩個或更多數(shù)據(jù)操縱操作的結(jié)果。
[0103]在示例8中,示例7的方法的更新第三數(shù)據(jù)結(jié)構(gòu)可以包括下列各項中的至少一項:創(chuàng)建移動消除集,修改移動消除集,或回收移動消除集。
[0104]在示例9中,示例7的方法還可以進(jìn)一步包括預(yù)留下列各項中的至少一項:整數(shù)通用邏輯寄存器域中的第一移動消除集或流式單指令多數(shù)據(jù)(SIMD)擴(kuò)展(SSE)邏輯寄存器域中的第二移動消除集。
[0105]在示例10中,示例7的方法還可以進(jìn)一步包括通過處理下列各項中的至少一項來輸出更新第三數(shù)據(jù)結(jié)構(gòu)的信號:反映第三數(shù)據(jù)結(jié)構(gòu)的前一狀態(tài)的第一信號、標(biāo)識用于數(shù)據(jù)操縱操作的源邏輯寄存器的第二信號、標(biāo)識用于數(shù)據(jù)操縱操作的目的地邏輯寄存器的第三信號、標(biāo)識現(xiàn)有的移動消除集是否包含至少一項引用的第四信號、標(biāo)識所述第三數(shù)據(jù)結(jié)構(gòu)內(nèi)的新移動消除集的第五信號、以及標(biāo)識是否選擇了用于移動消除的所述數(shù)據(jù)操縱操作的第六信號。
[0106]在示例11中,示例7的方法還可以進(jìn)一步包括檢測下列各項中的至少一項:第一數(shù)據(jù)操縱操作所具有的目的地寄存器匹配第二數(shù)據(jù)操縱操作的源;兩個數(shù)據(jù)操縱操作使用公用寄存器作為源,且?guī)в邢蛩鲈醇拇嫫鞯闹虚g寫入;兩個數(shù)據(jù)操縱操作使用公用寄存器作為源;第一數(shù)據(jù)操縱操作所具有的目的地寄存器匹配第二數(shù)據(jù)操縱操作的源,且?guī)в邢蛩瞿康牡丶拇嫫鞯闹虚g寫入,或第一數(shù)據(jù)操縱操作改寫由現(xiàn)有的移動消除集引用的并是第二數(shù)據(jù)操縱操作的源的寄存器。
[0107]在示例12中,示例7的方法的更新第三數(shù)據(jù)結(jié)構(gòu)可以基于預(yù)先計算兩個或更多數(shù)據(jù)操縱操作的依賴關(guān)系來執(zhí)行。
[0108]示例13是處理系統(tǒng),包括:被配置成存儲多個物理寄存器值的第一數(shù)據(jù)結(jié)構(gòu);被配置成存儲多個指針的第二數(shù)據(jù)結(jié)構(gòu),每一指針都引用第一數(shù)據(jù)結(jié)構(gòu)的元素;包括第一多個移動消除集和第二多個移動消除集的第三數(shù)據(jù)結(jié)構(gòu),所述第一多個移動消除集的每一移動消除集包括表示多個整數(shù)邏輯寄存器的多個比特,所述第二多個移動消除集的每一移動消除集都包括表示多個流式單指令多數(shù)據(jù)(SMD)擴(kuò)展(SSE)邏輯寄存器的多個比特;以及,被配置成預(yù)留所述第一多個移動消除集的第一移動消除集和所述第二多個移動消除集的第二移動消除集的邏輯,所述邏輯進(jìn)一步被配置成通過更新所述第二數(shù)據(jù)結(jié)構(gòu)和下列各項中的一項來執(zhí)行數(shù)據(jù)操縱操作:所述第一移動消除集或所述第二移動消除集。
[0109]在示例14中,示例13的處理系統(tǒng)的邏輯可以進(jìn)一步被配置成通過處理下列各項中的至少一項來輸出更新第三數(shù)據(jù)結(jié)構(gòu)的信號:反映第三數(shù)據(jù)結(jié)構(gòu)的前一狀態(tài)的第一信號、標(biāo)識用于數(shù)據(jù)操縱操作的源邏輯寄存器的第二信號、標(biāo)識用于數(shù)據(jù)操縱操作的目的地邏輯寄存器的第三信號、標(biāo)識現(xiàn)有的移動消除集是否包含至少一項引用的第四信號、標(biāo)識所述第三數(shù)據(jù)結(jié)構(gòu)內(nèi)的新移動消除集的第五信號、以及標(biāo)識是否選擇了用于移動消除的所述數(shù)據(jù)操縱操作的第六信號。
[0110]在示例15中,示例13的處理系統(tǒng)的邏輯可以進(jìn)一步被配置成檢測下列各項中的至少一項:第一數(shù)據(jù)操縱操作所具有的目的地寄存器匹配第二數(shù)據(jù)操縱操作的源的;兩個數(shù)據(jù)操縱操作使用公用寄存器作為源,且?guī)в邢蛩鲈醇拇嫫鞯闹虚g寫入;兩個數(shù)據(jù)操縱操作使用公用寄存器作為源;第一數(shù)據(jù)操縱操作所具有的目的地寄存器匹配第二數(shù)據(jù)操縱操作的源,且?guī)в邢蛩瞿康牡丶拇嫫鞯闹虚g寫入;或第一數(shù)據(jù)操縱操作改寫由現(xiàn)有的移動消除集引用的并是第二數(shù)據(jù)操縱操作的源的寄存器。
[0111]在示例16中,示例13的處理系統(tǒng)的邏輯可以進(jìn)一步被配置成:預(yù)先計算兩個或更多數(shù)據(jù)操縱操作的依賴關(guān)系;以及,通過執(zhí)行所述第三數(shù)據(jù)結(jié)構(gòu)的單次更新來反映所述兩個或更多數(shù)據(jù)操縱操作的結(jié)果。
[0112]在示例17中,示例13的處理系統(tǒng)的邏輯可以進(jìn)一步被配置成執(zhí)行下列各項中的至少一項:創(chuàng)建移動消除集,修改移動消除集,或回收移動消除集。
[0113]示例18是一種執(zhí)行數(shù)據(jù)操縱操作的方法,包括:通過計算機(jī)系統(tǒng),將多個物理寄存器值存儲在第一數(shù)據(jù)結(jié)構(gòu)中;在第二數(shù)據(jù)結(jié)構(gòu)中,存儲多個指針,每一指針都引用所述第一數(shù)據(jù)結(jié)構(gòu)的元素;在第三數(shù)據(jù)結(jié)構(gòu)中存儲第一多個移動消除集和第二多個移動消除集,所述第一多個移動消除集的每一移動消除集都包括表示多個整數(shù)邏輯寄存器的多個比特,所述第二多個移動消除集的每一移動消除集都包括表示多個流式單指令多數(shù)據(jù)(SIMD)擴(kuò)展(SSE)邏輯寄存器的多個比特;預(yù)留所述第一多個移動消除集的第一移動消除集和所述第二多個移動消除集的第二移動消除集的邏輯;以及,通過更新所述第二數(shù)據(jù)結(jié)構(gòu)和下列各項中的一項來執(zhí)行數(shù)據(jù)操縱操作:所述第一移動消除集或所述第二移動消除集。
[0114]在示例19中,示例18的方法還可以進(jìn)一步包括通過處理下列各項中的至少一項來輸出更新第三數(shù)據(jù)結(jié)構(gòu)的信號:反映第三數(shù)據(jù)結(jié)構(gòu)的前一狀態(tài)的第一信號、標(biāo)識用于數(shù)據(jù)操縱操作的源邏輯寄存器的第二信號、標(biāo)識用于數(shù)據(jù)操縱操作的目的地邏輯寄存器的第三信號、標(biāo)識現(xiàn)有的移動消除集是否包含至少一項引用的第四信號、標(biāo)識所述第三數(shù)據(jù)結(jié)構(gòu)內(nèi)的新移動消除集的第五信號、以及標(biāo)識是否選擇了所述數(shù)據(jù)操縱操作以用于移動消除的第六信號。
[0115]在示例20中,示例18的方法還可以進(jìn)一步包括檢測下列各項中的至少一項:第一數(shù)據(jù)操縱操作所具有的目的地寄存器匹配第二數(shù)據(jù)操縱操作的源;兩個數(shù)據(jù)操縱操作使用公用寄存器作為源,且?guī)в邢蛩鲈醇拇嫫鞯闹虚g寫入;兩個數(shù)據(jù)操縱操作使用公用寄存器作為源;第一數(shù)據(jù)操縱操作所具有的目的地寄存器匹配第二數(shù)據(jù)操縱操作的源,且?guī)в邢蛩瞿康牡丶拇嫫鞯闹虚g寫入;或第一數(shù)據(jù)操縱操作改寫由現(xiàn)有的移動消除集引用的并是第二數(shù)據(jù)操縱操作的源的寄存器。
[0116]在示例21中,示例18的方法還可以進(jìn)一步包括:預(yù)先計算兩個或更多數(shù)據(jù)操縱操作的依賴關(guān)系;以及,通過執(zhí)行所述第三數(shù)據(jù)結(jié)構(gòu)的單次更新來反映所述兩個或更多數(shù)據(jù)操縱操作的結(jié)果。
[0117]在示例22中,示例18的方法還可以進(jìn)一步包括:執(zhí)行下列各項中的至少一項:創(chuàng)建移動消除集、修改移動消除集或回收移動消除集。
[0118]示例23是包括可執(zhí)行指令的計算機(jī)可讀取的非瞬態(tài)的存儲介質(zhì),可執(zhí)行指令在由計算機(jī)系統(tǒng)執(zhí)行時使計算機(jī)系統(tǒng)執(zhí)行下列操作包括:通過計算機(jī)系統(tǒng),將多個物理寄存器值存儲在第一數(shù)據(jù)結(jié)構(gòu)中;在第二數(shù)據(jù)結(jié)構(gòu)中存儲多個指針,每一指針都引用所述第一數(shù)據(jù)結(jié)構(gòu)的元素;在第三數(shù)據(jù)結(jié)構(gòu)中存儲多個移動消除集,每一移動消除集都包括表示多個邏輯寄存器的多個比特;通過使所述第二數(shù)據(jù)結(jié)構(gòu)的元素引用所述第一數(shù)據(jù)結(jié)構(gòu)的元素來執(zhí)行數(shù)據(jù)操縱操作;以及通過執(zhí)行所述第三數(shù)據(jù)結(jié)構(gòu)的單次更新來反映兩個或更多數(shù)據(jù)操縱操作的結(jié)果。
[0119]在示例24中,更新示例23的第三數(shù)據(jù)結(jié)構(gòu)可以包括下列各項中的至少一項:創(chuàng)建移動消除集、修改移動消除集、或回收移動消除集。
[0120]在示例25中,存儲在示例23的計算機(jī)可讀取的非瞬態(tài)的存儲介質(zhì)上的可執(zhí)行指令還可以進(jìn)一步基于預(yù)先計算兩個或更多數(shù)據(jù)操縱操作的依賴關(guān)系來使計算機(jī)系統(tǒng)更新第三數(shù)據(jù)結(jié)構(gòu)。
[0121]在示例26中,存儲在示例23的計算機(jī)可讀取的非瞬態(tài)的存儲介質(zhì)上的可執(zhí)行指令還可以使計算機(jī)系統(tǒng)預(yù)留下列各項中的至少一項:整數(shù)通用邏輯寄存器域中的第一移動消除集或流式單指令多數(shù)據(jù)(SIMD)擴(kuò)展(SSE)邏輯寄存器域中的第二移動消除集。
[0122]在示例27中,存儲在示例23的計算機(jī)可讀取的非瞬時的存儲介質(zhì)上的可執(zhí)行指令還可以進(jìn)一步通過處理下列各項中的至少一項來使計算機(jī)系統(tǒng)輸出更新第三數(shù)據(jù)結(jié)構(gòu)的信號:反映第三數(shù)據(jù)結(jié)構(gòu)的前一狀態(tài)的第一信號、標(biāo)識用于數(shù)據(jù)操縱操作的源邏輯寄存器的第二信號、標(biāo)識用于數(shù)據(jù)操縱操作的目的地邏輯寄存器的第三信號、標(biāo)識現(xiàn)有的移動消除集是否包含至少一項引用的第四信號、標(biāo)識所述第三數(shù)據(jù)結(jié)構(gòu)內(nèi)的新移動消除集的第五信號、以及標(biāo)識是否選擇了用于移動消除的所述數(shù)據(jù)操縱操作的第六信號。
[0123]在示例28中,存儲在示例23的計算機(jī)可讀取的非瞬態(tài)的存儲介質(zhì)上的可執(zhí)行指令還可以使計算機(jī)系統(tǒng)檢測下列各項中的至少一項:第一數(shù)據(jù)操縱操作所具有的目的地寄存器匹配第二數(shù)據(jù)操縱操作的源;兩個數(shù)據(jù)操縱操作使用公用寄存器作為源,且?guī)в邢蛩鲈醇拇嫫鞯闹虚g寫入;兩個數(shù)據(jù)操縱操作使用公用寄存器作為源;第一數(shù)據(jù)操縱操作所具有的目的地寄存器匹配第二數(shù)據(jù)操縱操作的源,且?guī)в邢蛩瞿康牡丶拇嫫鞯闹虚g寫入;或第一數(shù)據(jù)操縱操作改寫由現(xiàn)有的移動消除集引用的并是第二數(shù)據(jù)操縱操作的源的寄存器。
[0124]示例29是包括可執(zhí)行指令的計算機(jī)可讀取的非瞬態(tài)的存儲介質(zhì),可執(zhí)行指令在由計算機(jī)系統(tǒng)執(zhí)行時使計算機(jī)系統(tǒng)執(zhí)行下列操作,包括:將多個物理寄存器值存儲在第一數(shù)據(jù)結(jié)構(gòu)中;在第二數(shù)據(jù)結(jié)構(gòu)中,存儲多個指針,每一指針都引用所述第一數(shù)據(jù)結(jié)構(gòu)的元素;在第三數(shù)據(jù)結(jié)構(gòu)中存儲第一多個移動消除集和第二多個移動消除集,所述第一多個移動消除集的每一移動消除集包括表示多個整數(shù)邏輯寄存器的多個比特,所述第二多個移動消除集的每一移動消除集包括表示多個流式單指令多數(shù)據(jù)(SIMD)擴(kuò)展(SSE)邏輯寄存器的多個比特;預(yù)留所述第一多個移動消除集的第一移動消除集和所述第二多個移動消除集的第二移動消除集的邏輯;以及,通過更新所述第二數(shù)據(jù)結(jié)構(gòu)和下列各項中的一項來執(zhí)行數(shù)據(jù)操縱操作:所述第一移動消除集或所述第二移動消除集。
[0125]在示例30中,存儲在示例29的計算機(jī)可讀取的非瞬態(tài)的存儲介質(zhì)上的可執(zhí)行指令還可以進(jìn)一步通過處理下列各項中的至少一項來使計算機(jī)系統(tǒng)更新第三數(shù)據(jù)結(jié)構(gòu):反映第三數(shù)據(jù)結(jié)構(gòu)的前一狀態(tài)的第一信號、標(biāo)識用于數(shù)據(jù)操縱操作的源邏輯寄存器的第二信號、標(biāo)識用于數(shù)據(jù)操縱操作的目的地邏輯寄存器的第三信號、標(biāo)識現(xiàn)有的移動消除集是否包含至少一項引用的第四信號、標(biāo)識第三數(shù)據(jù)結(jié)構(gòu)內(nèi)的新移動消除集的第五信號、以及標(biāo)識是否選擇了用于移動消除的數(shù)據(jù)操縱操作的第六信號。
[0126]在示例31中,存儲在示例29的計算機(jī)可讀取的非瞬態(tài)的存儲介質(zhì)上的可執(zhí)行指令還可以使計算機(jī)系統(tǒng)檢測下列各項中的至少一項:第一數(shù)據(jù)操縱操作所具有的目的地寄存器匹配第二數(shù)據(jù)操縱操作的源;兩個數(shù)據(jù)操縱操作使用公用寄存器作為源,且?guī)в邢蛟醇拇嫫鞯闹虚g寫入;兩個數(shù)據(jù)操縱操作使用公用寄存器作為源;第一數(shù)據(jù)操縱操作所具有的目的地寄存器匹配第二數(shù)據(jù)操縱操作的源,且?guī)в邢蚰康牡丶拇嫫鞯闹虚g寫入;或第一數(shù)據(jù)操縱操作改寫由現(xiàn)有的移動消除集引用的并是第二數(shù)據(jù)操縱操作的源的寄存器。
[0127]在示例32中,存儲在示例29的計算機(jī)可讀取的非瞬態(tài)的存儲介質(zhì)上的可執(zhí)行指令還可以使計算機(jī)系統(tǒng)檢測下列各項中的至少一項:預(yù)先計算兩個或更多數(shù)據(jù)操縱操作的依賴關(guān)系;以及,通過執(zhí)行所述第三數(shù)據(jù)結(jié)構(gòu)的單次更新來反映所述兩個或更多數(shù)據(jù)操縱操作的結(jié)果。
[0128]在示例33中,存儲在示例29的計算機(jī)可讀取的非瞬態(tài)的存儲介質(zhì)上的可執(zhí)行指令還可以使計算機(jī)系統(tǒng)執(zhí)行下列各項中的至少一項:創(chuàng)建移動消除集、修改移動消除集、或回收移動消除集。
[0129]示例34是一種裝置,包括存儲器和耦合到存儲器的處理系統(tǒng),其中處理系統(tǒng)被配置成執(zhí)行示例7-12中的任何一個的方法。
[0130]示例34是一種裝置,包括存儲器和耦合到存儲器的處理系統(tǒng),其中處理系統(tǒng)被配置成執(zhí)行示例18-22中的任何一個的方法。
[0131]詳細(xì)描述的某些部分以算法、和對計算機(jī)存儲器內(nèi)的數(shù)據(jù)位的操作的符號表示法的形式存在。這些算法描述和表示法是那些精通數(shù)據(jù)處理技術(shù)的人所使用的最有效地將他們的工作的實質(zhì)傳遞到精通技術(shù)的其他人的手段。算法,這里一般是指導(dǎo)致所希望的結(jié)果的操作的獨立的序列。操作是那些需要對物理量進(jìn)行物理操縱的操作。通常,盡管不一定,這些量呈現(xiàn)電的和/或磁性信號的形式,這些信號能夠被存儲、傳輸、組合、比較,以及以別的方式操縱。已經(jīng)證明有時,主要由于共同的用途原因,將這些信號稱為比特、值、元素、符號、字符、術(shù)語、數(shù)字等等比較方便。
[0132]然而,應(yīng)該記住,所有這些和/或類似的術(shù)語將與適當(dāng)?shù)奈锢砹筷P(guān)聯(lián),僅僅是應(yīng)用于這些量的方便的標(biāo)記。除非特別聲明,從上文的討論中顯而易見地看出,應(yīng)該理解,在整個本說明書中,利用諸如“加密”、“解密”、“存儲”、“提供”、“導(dǎo)出”、“獲取”、“接收”、“認(rèn)證”、“刪除”、“執(zhí)行”、“請求”、“通信”等等之類的術(shù)語的討論,引用了計算機(jī)系統(tǒng),和/或類似的電子計算設(shè)備的動作和/或進(jìn)程,它們操縱和/或轉(zhuǎn)換表示為計算機(jī)系統(tǒng)的寄存器和存儲器內(nèi)的物理(例如,電子)量的數(shù)據(jù),將這些數(shù)據(jù)轉(zhuǎn)換為類似地表示為計算機(jī)系統(tǒng)存儲器或寄存器和/或其他這樣的信息存儲器、傳輸和/或顯示設(shè)備內(nèi)的物理量的其他數(shù)據(jù)。
[0133]在此可使用詞語“示例”或“示例性”意指用作示例、實例或說明。本文中被描述為“示例”或“示例性”的任何方面或設(shè)計不一定被解釋為優(yōu)選于或更優(yōu)于其他方面或設(shè)計。相反,使用詞語“示例”或“示例性”旨在以具體的方式呈現(xiàn)各個概念。如本申請中所使用的,術(shù)語“或”意指包括性“或”而非互斥性“或”。即,除非另有指定或從上下文可以清楚,“X包括A或B”意指任何自然的包括性排列。S卩,如果X包括A ;X包括B ;或X包括A和B兩者,則在任何以上情況下,都滿足“X包括A或B?!贝送?,本申請中和所附權(quán)利要求書所使用的冠詞“一”和“一個” 一般應(yīng)解釋為“一個或多個”,除非另有指定或從上下文將清楚是指單數(shù)形式。此外,術(shù)語“實施例”或“一個實施例”或“實現(xiàn)”或“一個實現(xiàn)”不旨在意指同一個實施例或?qū)崿F(xiàn),除非這樣描述。此外,如此處所使用的術(shù)語“第一”、“第二”、“第三”、“第四”等等旨在用作區(qū)別不同的元件的標(biāo)記,可以不一定具有根據(jù)它們的數(shù)字表示的序數(shù)含義。
[0134]此處所描述的各實施例還可以涉及用于執(zhí)行此處的操作的設(shè)備。可以為所需的用途專門地設(shè)計此設(shè)備,也可以包括由存儲在計算機(jī)中的計算機(jī)程序有選擇地激活和/或重新配置的通用計算機(jī)。這樣的計算機(jī)程序可以存儲在非瞬時的計算機(jī)可讀取的存儲介質(zhì)上,諸如,但不僅限于,任何類型的磁(光)盤,包括軟盤、光盤、CD-ROM,以及磁性光盤、只讀存儲器(ROM)、隨機(jī)存取存儲器(RAM)、EPROM、EEPR0M、磁卡或光卡,閃存,或適于存儲電子指令的任何類型的介質(zhì)。術(shù)語“計算機(jī)可讀取的存儲介質(zhì)”應(yīng)該被視為包括存儲一個或多個指令集的單個介質(zhì)或多個介質(zhì)(例如,集中式或分布式數(shù)據(jù)庫和/或相關(guān)聯(lián)的高速緩存和服務(wù)器)。術(shù)語“計算機(jī)可讀介質(zhì)”還應(yīng)該被視為包括能夠存儲、編碼或攜帶由機(jī)器執(zhí)行的一組指令并且使機(jī)器執(zhí)行各實施例的方法中的任何一個或多個的任何介質(zhì)。術(shù)語“計算機(jī)可讀取的存儲介質(zhì)”相應(yīng)地應(yīng)該被視為包括,但不局限于,固態(tài)存儲器、光學(xué)介質(zhì)、磁性介質(zhì),能夠存儲由機(jī)器執(zhí)行的一組指令并且使機(jī)器執(zhí)行各實施例的方法中的任何一個或多個的任何介質(zhì)。
[0135]此處呈現(xiàn)的算法和/或顯示不固有地涉及任何特定計算機(jī)或其他設(shè)備。各種通用系統(tǒng)可以與根據(jù)此處的原理編寫的程序一起使用,或者構(gòu)建更加專業(yè)化的設(shè)備來執(zhí)行所需的方法操作也是比較方便的。根據(jù)下面的描述,這些系統(tǒng)中的各種系統(tǒng)的所需的結(jié)構(gòu)將變得顯而易見。另外,沒有參考任何特定編程語言來描述各實施例。應(yīng)該理解,可以使用各種編程語言來實現(xiàn)此處所描述的各實施例的各實施例的原理。
[0136]上面的描述闡述了諸如特定系統(tǒng)、組件、方法等等的示例之類的很多具體細(xì)節(jié),以便提供對多個實施例的更全面的理解。然而,對那些精通本技術(shù)的人顯而易見的是,可以在沒有這些具體細(xì)節(jié)的情況下實施至少一些實施例。在其他情況下,沒有詳細(xì)示出或以簡單框圖格式來呈現(xiàn)已知的組件或方法,以便避免對各實施例造成不必要的模糊。如此,上文闡述的具體細(xì)節(jié)只是示例性的。特定實現(xiàn)可能不同于這些示例性細(xì)節(jié),仍在各實施例的范圍內(nèi)。
[0137]可以理解,上文的描述只是說明性的,而不是限制性的。在閱讀和理解上面的描述之后,許多其他實施例對本領(lǐng)域的技術(shù)人員是顯而易見的。各實施例的范圍完全由所附權(quán)利要求書以及這些權(quán)利要求所授權(quán)的等效技術(shù)方案的完整范圍來確定。
【權(quán)利要求】
1.一種處理系統(tǒng),包括: 第一數(shù)據(jù)結(jié)構(gòu),被配置成存儲多個物理寄存器值; 第二數(shù)據(jù)結(jié)構(gòu),被配置成存儲多個指針,每一指針引用第一數(shù)據(jù)結(jié)構(gòu)的元素; 第三數(shù)據(jù)結(jié)構(gòu),包括多個移動消除集,每一移動消除集都包括表示多個邏輯寄存器的多個比特;以及 邏輯,被配置成通過使所述第二數(shù)據(jù)結(jié)構(gòu)的元素引用所述第一數(shù)據(jù)結(jié)構(gòu)的元素來執(zhí)行數(shù)據(jù)操縱操作,所述邏輯進(jìn)一步被配置成通過執(zhí)行所述第三數(shù)據(jù)結(jié)構(gòu)的單次更新來反映兩個或更多數(shù)據(jù)操縱操作的結(jié)果。
2.如權(quán)利要求1所述的處理系統(tǒng),其特征在于,對所述第三數(shù)據(jù)結(jié)構(gòu)的所述更新包括下列各項中的至少一項:創(chuàng)建移動消除集、修改移動消除集、或回收移動消除集。
3.如權(quán)利要求1所述的處理系統(tǒng),其特征在于,所述邏輯被配置成基于預(yù)先計算兩個或更多數(shù)據(jù)操縱操作的依賴關(guān)系來更新所述第三數(shù)據(jù)結(jié)構(gòu)。
4.如權(quán)利要求1所述的處理系統(tǒng),其特征在于,所述邏輯進(jìn)一步被配置成預(yù)留下列各項中的至少一項:整數(shù)通用邏輯寄存器域中的第一移動消除集或流式單指令多數(shù)據(jù)(SIMD)擴(kuò)展(SSE)邏輯寄存器域中的第二移動消除集。
5.如權(quán)利要求1所述的處理系統(tǒng),其特征在于,所述邏輯被配置成通過處理下列各項中的至少一項來輸出更 新所述第三數(shù)據(jù)結(jié)構(gòu)的信號:反映所述第三數(shù)據(jù)結(jié)構(gòu)的前一狀態(tài)的第一信號、標(biāo)識用于數(shù)據(jù)操縱操作的源邏輯寄存器的第二信號、標(biāo)識用于數(shù)據(jù)操縱操作的目的地邏輯寄存器的第三信號、標(biāo)識現(xiàn)有的移動消除集是否包含至少一項引用的第四信號、標(biāo)識所述第三數(shù)據(jù)結(jié)構(gòu)內(nèi)的新移動消除集的第五信號、以及標(biāo)識是否選擇了所述數(shù)據(jù)操縱操作以用于移動消除的第六信號。
6.如權(quán)利要求1所述的處理系統(tǒng),其特征在于,所述邏輯被配置成檢測下列各項中的至少一項:第一數(shù)據(jù)操縱操作所具有的目的地寄存器匹配第二數(shù)據(jù)操縱操作的源;兩個數(shù)據(jù)操縱操作使用公用寄存器作為源,并帶有向所述源寄存器的中間寫入;兩個數(shù)據(jù)操縱操作使用公用寄存器作為源;第一數(shù)據(jù)操縱操作所具有的目的地寄存器匹配第二數(shù)據(jù)操縱操作的源,并帶有向所述目的地寄存器的中間寫入;或第一數(shù)據(jù)操縱操作改寫由現(xiàn)有的移動消除集引用的并是第二數(shù)據(jù)操縱操作的源的寄存器。
7.一種執(zhí)行數(shù)據(jù)操縱操作的方法,包括: 通過計算機(jī)系統(tǒng),將多個物理寄存器值存儲在第一數(shù)據(jù)結(jié)構(gòu)中; 在第二數(shù)據(jù)結(jié)構(gòu)中存儲多個指針,每一指針引用所述第一數(shù)據(jù)結(jié)構(gòu)的元素; 在第三數(shù)據(jù)結(jié)構(gòu)中存儲多個移動消除集,每一移動消除集包括表示多個邏輯寄存器的多個比特; 通過使所述第二數(shù)據(jù)結(jié)構(gòu)的元素引用所述第一數(shù)據(jù)結(jié)構(gòu)的元素來執(zhí)行數(shù)據(jù)操縱操作;以及 通過執(zhí)行所述第三數(shù)據(jù)結(jié)構(gòu)的單次更新來反映兩個或更多數(shù)據(jù)操縱操作的結(jié)果。
8.如權(quán)利要求7所述的方法,其特征在于,對所述第三數(shù)據(jù)結(jié)構(gòu)的所述更新包括下列各項中的至少一項:創(chuàng)建移動消除集、修改移動消除集或回收移動消除集。
9.如權(quán)利要求7所述的方法,還包括預(yù)留下列各項中的至少一項:整數(shù)通用邏輯寄存器域中的第一移動消除集或流式單指令多數(shù)據(jù)(SIMD)擴(kuò)展(SSE)邏輯寄存器域中的第二移動消除集。
10.如權(quán)利要求7所述的方法,還包括通過處理下列各項中的至少一項來輸出更新所述第三數(shù)據(jù)結(jié)構(gòu)的信號:反映所述第三數(shù)據(jù)結(jié)構(gòu)的前一狀態(tài)的第一信號、標(biāo)識用于數(shù)據(jù)操縱操作的源邏輯寄存器的第二信號、標(biāo)識用于數(shù)據(jù)操縱操作的目的地邏輯寄存器的第三信號、標(biāo)識現(xiàn)有的移動消除集是否包含至少一項引用的第四信號、標(biāo)識所述第三數(shù)據(jù)結(jié)構(gòu)內(nèi)的新移動消除集的第五信號、以及標(biāo)識是否選擇了所述數(shù)據(jù)操縱操作以用于移動消除的第六信號。
11.如權(quán)利要求7所述的方法,還包括檢測下列各項中的至少一項:第一數(shù)據(jù)操縱操作所具有的目的地寄存器匹配第二數(shù)據(jù)操縱操作的源;兩個數(shù)據(jù)操縱操作使用公用寄存器作為源,且?guī)в邢蛩鲈醇拇嫫鞯闹虚g寫入;兩個數(shù)據(jù)操縱操作使用公用寄存器作為源;第一數(shù)據(jù)操縱操作所具有的目的地寄存器匹配第二數(shù)據(jù)操縱操作的源,且?guī)в邢蛩瞿康牡丶拇嫫鞯闹虚g寫入;或第一數(shù)據(jù)操縱操作改寫由現(xiàn)有的移動消除集引用的并是第二數(shù)據(jù)操縱操作的源的寄存器。
12.如權(quán)利要求7所述的方法,其特征在于,基于預(yù)先計算兩個或更多數(shù)據(jù)操縱操作的依賴關(guān)系來執(zhí)行對所述第三數(shù)據(jù)結(jié)構(gòu)的所述更新。
13.—種處理系統(tǒng),包括: 第一數(shù)據(jù)結(jié)構(gòu),被配置成存儲多個物理寄存器值; 第二數(shù)據(jù)結(jié)構(gòu),被配置成存儲多個指針,每一指針引用第一數(shù)據(jù)結(jié)構(gòu)的元素; 第三數(shù)據(jù)結(jié)構(gòu),包 括第一多個移動消除集和第二多個移動消除集,所述第一多個移動消除集的每一移動消除集包括表示多個整數(shù)邏輯寄存器的多個比特,所述第二多個移動消除集的每一移動消除集包括表示多個流式單指令多數(shù)據(jù)(SIMD)擴(kuò)展(SSE)邏輯寄存器的多個比特;以及 邏輯,被配置成預(yù)留所述第一多個移動消除集的第一移動消除集和所述第二多個移動消除集的第二移動消除集,所述邏輯進(jìn)一步被配置成通過更新所述第二數(shù)據(jù)結(jié)構(gòu)和下列各項中的一項來執(zhí)行數(shù)據(jù)操縱操作:所述第一移動消除集或所述第二移動消除集。
14.如權(quán)利要求13所述的處理系統(tǒng),其特征在于,所述邏輯進(jìn)一步被配置成通過處理下列各項中的至少一項來輸出更新所述第三數(shù)據(jù)結(jié)構(gòu)的信號:反映所述第三數(shù)據(jù)結(jié)構(gòu)的前一狀態(tài)的第一信號、標(biāo)識用于數(shù)據(jù)操縱操作的源邏輯寄存器的第二信號、標(biāo)識用于數(shù)據(jù)操縱操作的目的地邏輯寄存器的第三信號、標(biāo)識現(xiàn)有的移動消除集是否包含至少一項引用的第四信號、標(biāo)識所述第三數(shù)據(jù)結(jié)構(gòu)內(nèi)的新移動消除集的第五信號、以及標(biāo)識是否選擇了所述數(shù)據(jù)操縱操作以用于移動消除的第六信號。
15.如權(quán)利要求13所述的處理系統(tǒng),其特征在于,所述邏輯進(jìn)一步被配置成檢測下列各項中的至少一項:第一數(shù)據(jù)操縱操作所具有的目的地寄存器匹配第二數(shù)據(jù)操縱操作的源;兩個數(shù)據(jù)操縱操作使用公用寄存器作為源,且?guī)в邢蛩鲈醇拇嫫鞯闹虚g寫入;兩個數(shù)據(jù)操縱操作使用公用寄存器作為源;第一數(shù)據(jù)操縱操作所具有的目的地寄存器匹配第二數(shù)據(jù)操縱操作的源,且?guī)в邢蛩瞿康牡丶拇嫫鞯闹虚g寫入;或第一數(shù)據(jù)操縱操作改寫由現(xiàn)有的移動消除集引用的并是第二數(shù)據(jù)操縱操作的源的寄存器。
16.如權(quán)利要求13所述的處理系統(tǒng),其特征在于,所述邏輯進(jìn)一步被配置成: 預(yù)先計算兩個或更多數(shù)據(jù)操縱操作的依賴關(guān)系;以及通過執(zhí)行所述第三數(shù)據(jù)結(jié)構(gòu)的單次更新來反映所述兩個或更多數(shù)據(jù)操縱操作的結(jié)果。
17.如權(quán)利要求13所述的處理系統(tǒng),其特征在于,所述邏輯進(jìn)一步被配置成執(zhí)行下列各項中的至少一項:創(chuàng)建移動消除集、修改移動消除集、或回收移動消除集。
18.一種執(zhí)行數(shù)據(jù)操縱操作的方法,包括: 通過計算機(jī)系統(tǒng),將多個物理寄存器值存儲在第一數(shù)據(jù)結(jié)構(gòu)中; 在第二數(shù)據(jù)結(jié)構(gòu)中存儲多個指針,每一指針引用所述第一數(shù)據(jù)結(jié)構(gòu)的元素; 在第三數(shù)據(jù)結(jié)構(gòu)中存儲第一多個移動消除集和第二多個移動消除集,所述第一多個移動消除集的每一移動消除集包括表示多個整數(shù)邏輯寄存器的多個比特,所述第二多個移動消除集的每一移動消除集包括表示多個流式單指令多數(shù)據(jù)(SIMD)擴(kuò)展(SSE)邏輯寄存器的多個比特; 預(yù)留所述第一多個移動消除集的第一移動消除集和所述第二多個移動消除集的第二移動消除集;以及 通過更新所述第二數(shù)據(jù)結(jié)構(gòu)和下列各項中的一項來執(zhí)行數(shù)據(jù)操縱操作:所述第一移動消除集或所述第二移動消除集。
19.如權(quán)利要求 18所述的方法,還包括通過處理下列各項中的至少一項來輸出更新所述第三數(shù)據(jù)結(jié)構(gòu)的信號:反映所述第三數(shù)據(jù)結(jié)構(gòu)的前一狀態(tài)的第一信號、標(biāo)識用于數(shù)據(jù)操縱操作的源邏輯寄存器的第二信號、標(biāo)識用于數(shù)據(jù)操縱操作的目的地邏輯寄存器的第三信號、標(biāo)識現(xiàn)有的移動消除集是否包含至少一項引用的第四信號、標(biāo)識所述第三數(shù)據(jù)結(jié)構(gòu)內(nèi)的新移動消除集的第五信號、以及標(biāo)識是否選擇了用于移動消除的所述數(shù)據(jù)操縱操作的第六信號。
20.如權(quán)利要求18所述的方法,還包括檢測下列各項中的至少一項:第一數(shù)據(jù)操縱操作所具有的目的地寄存器匹配第二數(shù)據(jù)操縱操作的源;兩個數(shù)據(jù)操縱操作使用公用寄存器作為源,且?guī)в邢蛩鲈醇拇嫫鞯闹虚g寫入;兩個數(shù)據(jù)操縱操作使用公用寄存器作為源;第一數(shù)據(jù)操縱操作所具有的目的地寄存器匹配第二數(shù)據(jù)操縱操作的源,且?guī)в邢蛩瞿康牡丶拇嫫鞯闹虚g寫入;或第一數(shù)據(jù)操縱操作改寫由現(xiàn)有的移動消除集引用的并是第二數(shù)據(jù)操縱操作的源的寄存器。
21.如權(quán)利要求18所述的方法,還包括: 預(yù)先計算兩個或更多數(shù)據(jù)操縱操作的依賴關(guān)系;以及 通過執(zhí)行所述第三數(shù)據(jù)結(jié)構(gòu)的單次更新來反映所述兩個或更多數(shù)據(jù)操縱操作的結(jié)果。
22.如權(quán)利要求18所述的方法,還包括執(zhí)行下列各項中的至少一項:創(chuàng)建移動消除集、修改移動消除集或回收移動消除集。
【文檔編號】G06F9/318GK104049950SQ201410098517
【公開日】2014年9月17日 申請日期:2014年3月17日 優(yōu)先權(quán)日:2013年3月15日
【發(fā)明者】J·R·安德森 申請人:英特爾公司