專利名稱:運(yùn)算標(biāo)志寄存器的延遲重新分配的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及處理器,更特別涉及處理器中的寄存器管理。
背景技術(shù):
處理器的作用,諸如微處理器,是執(zhí)行程序。程序包含一組指令。每個指令被分成一個或多個操作,被稱為微操作(這里被稱為”uops”)。處理器通過從一個或多個源寄存器中讀取操作數(shù)并在一個或多個目的寄存器中存儲結(jié)果來執(zhí)行uops。寄存器是處理器內(nèi)部的一個暫時存儲區(qū),用于保持處理器使用的運(yùn)算的及其他結(jié)果。寄存器分別地由比特組成。一個比特是二進(jìn)制數(shù)字并且表示或者“0”值或者“1”值。不同的寄存器可以被用于不同的功能。例如,可互換地使用通用寄存器以便保特用于邏輯與運(yùn)算操作的操作數(shù)。專用寄存器可以例如,由各個標(biāo)志位來保留狀態(tài)信息。
術(shù)語“IA-32”指的是眾所周知的由intel家族處理器使用的指令系統(tǒng),例如美國英特爾公司公司制造的奔騰II處理器和奔騰Pro微處理器。IA-32定義了被稱為EFLAGS寄存器的專用寄存器。本EFLAGS寄存器包括32位標(biāo)志寄存器,它保持一組狀態(tài)標(biāo)志、控制標(biāo)志和系統(tǒng)標(biāo)志。圖1是該EFLAGS寄存器的示意圖。如圖1所示,該狀態(tài)標(biāo)志由“S”表示,控制標(biāo)志由“C”表示,系統(tǒng)標(biāo)志由一個“X”表示。包括在EFLAGS寄存器中的狀態(tài)標(biāo)志使得一個指令結(jié)果影響后面的指令。狀態(tài)標(biāo)志(還被稱為運(yùn)算標(biāo)志)包括比特“0”處D的一個進(jìn)位標(biāo)志、比特“2”處的一個奇偶標(biāo)志、比特“4”處的一個輔助進(jìn)位標(biāo)志、比特“6”處的一個零標(biāo)志、比特“7”處的一個符號標(biāo)記、比特“8”處的一個俘獲標(biāo)志和比特“11”處的一個溢出標(biāo)志。包含在EFLAGS寄存器中的控制標(biāo)志控制信息串指令。該EFLAGS寄存器的控制標(biāo)志在比特“10”處被存儲,如圖1所示。EFLAGS寄存器的系統(tǒng)標(biāo)志控制輸入/輸出、可屏蔽中斷、調(diào)試、任務(wù)交換和能夠執(zhí)行有效的8086。該系統(tǒng)標(biāo)志存儲在EFLAGS寄存器的“9”、“12”、“14”、“16”、“17”位,如圖1所示。
傳統(tǒng)上,一處理器具有單個指令系統(tǒng),諸如IA-32指令系統(tǒng),例如,IA-32指令系統(tǒng)。典型地,處理器只能接受那個指令系統(tǒng)的操作系統(tǒng)和應(yīng)用程序。如果處理機(jī)體系結(jié)構(gòu)和指令系統(tǒng)被從根本上改變,那么該處理器就不再能夠執(zhí)行現(xiàn)有的操作系統(tǒng)和應(yīng)用程序的軟件庫。結(jié)果,基礎(chǔ)的改變因此在處理機(jī)體系結(jié)構(gòu)與指令方面的較大的改進(jìn)是不可能的,因而與先前的指令系統(tǒng)兼容是期望的設(shè)計目標(biāo)。
然而,轉(zhuǎn)讓給美國英特爾公司的美國專利no.5,638,525,(′525專利),描述一處理機(jī)體系結(jié)構(gòu)能夠接受多種操作系統(tǒng)和利用不同指令系統(tǒng)的應(yīng)用程序。此結(jié)構(gòu)允許同時執(zhí)行使用第一指令系統(tǒng)的第一程序和使用與第一指令系統(tǒng)不兼容的不同的指令系統(tǒng)的第二程序。該′525專利所示的一個具體實施例包括一個微處理器,它能夠接受32位指令系統(tǒng)和64位指令系統(tǒng)兩者這里使用的術(shù)語“兼容”指的是一個指令系統(tǒng)結(jié)構(gòu)的指令與不同的指令系統(tǒng)結(jié)構(gòu)操作的能力。例如,該指令可以來自該指令系統(tǒng)結(jié)構(gòu)的先前的版本。為了在保持與先前的指令系統(tǒng)的兼容性的同時提供一個改善的處理機(jī)體系結(jié)構(gòu)與指令系統(tǒng),則希望減少專用于先前的指令系統(tǒng)的硬件。新型硬件(諸如執(zhí)行部件和寄存器組)用于盡可能多地支持先前的指令系統(tǒng)。
為了使處理器能夠接受多指令系統(tǒng)以便接受IA-32指令系統(tǒng)等等和與IA-32指令系統(tǒng)不兼容的第二指令系統(tǒng)等等兩者,則最好處理器能夠以兼容第二指令系統(tǒng)的方式管理包含在IA-32指令系統(tǒng)EFLAG寄存器中的信息。如果第二指令系統(tǒng)缺乏一個相當(dāng)于該EFLAGS的寄存器或者如果第二指令系統(tǒng)假定以IA32指令系統(tǒng)同樣的方式通過保持EFLAGS寄存器或者EFLAGS寄存器的一部分而經(jīng)歷極大的性能惡化,那么可以不必希望處理器執(zhí)行現(xiàn)有的利用IA-32位指令系統(tǒng)等操作系統(tǒng)和應(yīng)用程序的軟件庫。
從而,需要一種方法和相應(yīng)的設(shè)計,使在多指令系統(tǒng)處理器結(jié)構(gòu)中提供與INTEL的32位結(jié)構(gòu)處理器指令的兼容性。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的一個方面,本發(fā)明的系統(tǒng)處理具有一個運(yùn)算標(biāo)志的第一指令系統(tǒng)結(jié)構(gòu)的指令。該系統(tǒng)還處理與第一指令系統(tǒng)結(jié)構(gòu)不兼容的第二指令系統(tǒng)結(jié)構(gòu)的指令。為了處理隱含地更新運(yùn)算標(biāo)志寄存器的第一指令系統(tǒng)結(jié)構(gòu)的第一指令,該運(yùn)算標(biāo)志寄存器與包含第一指令結(jié)果的通用寄存器共享一個物理目的寄存器。不更新運(yùn)算標(biāo)志但是將重新分配包含運(yùn)算標(biāo)志的寄存器的一個指令觸發(fā)本發(fā)明的延遲的重新分配機(jī)構(gòu)。
通過閱讀以下詳細(xì)說明并參考附圖,本發(fā)明的其他實施例、一些方面和優(yōu)點(diǎn)將變得顯而易見。
圖1是一個EFLAGS寄存器的方框圖。
圖2根據(jù)本發(fā)明系統(tǒng)的一個實施例的方框圖;圖3是諸如圖2所示處理器的處理器實施例的功能方框圖。
圖4是圖3微處理器的延遲重新分配機(jī)構(gòu)的一個實施例的方框圖。
圖5是概述當(dāng)重新分配包含運(yùn)算標(biāo)志的物理寄存器被延遲時的一個列表。
圖6是用于說明根據(jù)本發(fā)明管理寄存器方法的一個實施例的流程圖;圖7A,7B,7C,7D,7E,7F,7G,7H,7I,和7J說明對根據(jù)本發(fā)明的邏輯寄存器進(jìn)行操作的指令序列例子的數(shù)據(jù)流。
圖8是概述7A,7B,7C,7D,7E,7F,7G,7H,7I,和且7J所示指令序列的列表。
具體實施例方式
對能夠延遲運(yùn)算標(biāo)志的重新分配的一個新的處理器進(jìn)行描述。在下面實施例的詳細(xì)說明中,對此部分的附圖進(jìn)行參考,并且利用實際應(yīng)用本發(fā)明的具體實施例的說明書進(jìn)行表述。應(yīng)理解,可以使用其他實施例,并且可以進(jìn)行結(jié)構(gòu)的變化而不脫離本發(fā)明的范圍。
隨后詳細(xì)說明中的某些部分是根據(jù)對系統(tǒng)內(nèi)數(shù)據(jù)位的運(yùn)算的符號表示法和算法來表示。這些算法描述和表示是處理器領(lǐng)域技術(shù)人員使用的手段以便最有效地將其工作實質(zhì)傳送到本領(lǐng)域其它技術(shù)人員。通常這里的算法被認(rèn)為是引導(dǎo)至要求結(jié)果的自給操作序列。這種運(yùn)算是采用對物理量進(jìn)行操縱的那些運(yùn)算。通常,可是不一定,這些參數(shù)采取能夠存儲、傳送、組合、比較及其他操作的電或磁信號形式。主要由于公共使用原因,已經(jīng)證明有時把這些信號稱為比特、數(shù)值、元素、符號、字符、項、號碼等等是方便的。然而應(yīng)該考慮到,所有這些和類似術(shù)語將與適當(dāng)?shù)奈锢韰?shù)有關(guān)并且僅僅是施加到這些參數(shù)上的適宜標(biāo)簽。除非另外具體聲明,否則從以下討論中顯而易見,即,意識到本發(fā)明實施例的所有描述,利用諸如“處理”或者“計算”或者“運(yùn)算”或者“確定”或者“顯示”等等術(shù)語指的是計算機(jī)系統(tǒng)或者類似的電子計算機(jī)的動作和處理,或者這些動作和處理將計算機(jī)系統(tǒng)的寄存器和存儲器中的表示為物理(電的)參數(shù)的數(shù)據(jù)操縱和轉(zhuǎn)換為計算機(jī)系統(tǒng)存儲器或寄存器或其他這種信息存儲器傳輸或顯示設(shè)備內(nèi)的表示為類似物理參數(shù)的其他數(shù)據(jù)。
本發(fā)明的延遲重新分配機(jī)理提供了一個裝置和方法,用于在多指令系統(tǒng)結(jié)構(gòu)中保持一種指令系統(tǒng)的運(yùn)算標(biāo)志。在處理器中重命名的寄存器環(huán)境中使用術(shù)語“重新分配”。這種術(shù)語指的是對對應(yīng)于一個邏輯寄存器的物理寄存器進(jìn)行重新分配。當(dāng)重新分配一物理寄存器時,該物理寄存器可用于儲存用于另外運(yùn)算的數(shù)據(jù)。在一個實施例中,該延遲重新分配機(jī)構(gòu)提供了一種結(jié)構(gòu)以便表示何時物理寄存器包含有效的運(yùn)算標(biāo)志,并且當(dāng)不更新該運(yùn)算標(biāo)志的一個后續(xù)指令將另外重新分配給包含該有效運(yùn)算標(biāo)志的寄存器時,則延遲對該物理寄存器的重新分配。因此,通過延遲重新分配包含有效運(yùn)算標(biāo)志的物理寄存器,來保存該運(yùn)算標(biāo)志直至該運(yùn)算標(biāo)志被另外的后續(xù)指令所更新并且存儲在不同的物理寄存器中。
系統(tǒng).圖2是一個系統(tǒng)的方框圖,諸如本發(fā)明一個實施例的計算機(jī)系統(tǒng)205。計算機(jī)系統(tǒng)205包含總線200、鍵盤接口201、外存儲器202、大容量存貯器203和處理器204??偩€200可以是單個總線或者是組合的多條總線。總線200提供系統(tǒng)中部件間的通信鏈接。鍵盤接口201可以是一專用設(shè)備或者可以是存在于另一個設(shè)備比如一總線控制器或者其他控制器中。鍵盤接口201允許將鍵盤耦合到該系統(tǒng)并且從鍵盤向系統(tǒng)發(fā)送信號。外存儲器202可以包含一動態(tài)隨機(jī)存取存儲器(DRAM)設(shè)備,一靜態(tài)隨機(jī)存取存儲器(SRAM)設(shè)備,或者其他儲存設(shè)備。外存儲器202存儲來自大容量存儲器203和處理器204的信息以便供處理器204使用。大容量存儲器203可以是硬盤驅(qū)動器、軟盤驅(qū)動器、光盤設(shè)備、或者閃速存儲器設(shè)備。大容量存儲器203向外存儲器202提供信息。
處理器204能夠解碼并執(zhí)行計算機(jī)程序,諸如一個應(yīng)用程序或者帶有來自多指令系統(tǒng)指令的操作系統(tǒng)。處理器204包括用于延遲重新分配結(jié)構(gòu)的邏輯電路。該處理器204可以兼容,而不是限于,諸如美國英特爾公司的INTEL微處理器結(jié)構(gòu)的一個微處理器,該處理器由美國加利福尼亞的Santa Clara的英特爾公司-本發(fā)明的受讓人所制造。在替換的實施例中,該處理器204可以與powerPCTM結(jié)構(gòu)的微處理器、AlphaTM結(jié)構(gòu)的微處理器兼容等等。
在一個實施例中,本發(fā)明的處理器204被設(shè)計為按照高性能超級標(biāo)量處理機(jī)那樣操作,超級標(biāo)量處理機(jī)意思指每一時鐘周期執(zhí)行多于一個uop。當(dāng)情況允許時,處理器204還能夠無次序執(zhí)行uop。處理器204內(nèi)部的無次序處理包括允許要處理的指令不按原程序進(jìn)行以便增強(qiáng)性能和增加并行性以及有效率的資源使用。真數(shù)據(jù)依賴指令不能無次序執(zhí)行,但是程序指令內(nèi)部的許多指令往往不直接取決于早先指令的結(jié)果。如果處理器204包含足夠的資源,那么這些指令可以無次序地處理。
本發(fā)明的處理器204還具有推理執(zhí)行的能力。這意味著處理器204的前端可以在特別的分支指令處推測程序代碼的通道,并且遵循和執(zhí)行實際應(yīng)該和不應(yīng)該根據(jù)預(yù)定分支精度執(zhí)行的程序路徑。直至處理器204實際確定前端預(yù)測正確通道,在遇到推測的分支指令之后,處理器204執(zhí)行和處理每個指令和uop。不允許推測的指令更新處理器204的某些部分,所述的某些部分是保持表現(xiàn)非推測指令的“實時結(jié)果”或者結(jié)構(gòu)上的可見結(jié)果。如果處理器204的前端取正確的路徑,那么該推測的指令“收回”,并且其結(jié)果可以更新為處理器204在結(jié)構(gòu)上可見的部分。如果處理器204的前端預(yù)言錯誤的通道,那么該推測的指令要清除,并且處理器204要沿著正確的通道設(shè)置。因此,指令“收回”的參考意味著指令或者uop已經(jīng)決定來被推測并且實際將更新處理器結(jié)構(gòu)上看得見的部分。在一個實施例中,本發(fā)明的處理器204是管道傳輸?shù)摹?br>
圖3是諸如圖2所示處理器204的處理器實施例的功能方框圖。微處理器實施例204的例子包含存儲群(cluster)318、總線接口單元304、指令取出/解碼單元306、分配器單元308、數(shù)據(jù)依賴單元310、指令收回單元312、調(diào)度程序314和一個或多個執(zhí)行單元316。
該存儲群318提供用于該處理器204的一個存儲子系統(tǒng)。該總線接口單元304提供一個接口,用于微處理器實施例204的外部運(yùn)算。要執(zhí)行的指令和用于處理進(jìn)程數(shù)據(jù)通過總線302被供給總線接口單元304。該總線接口單元304傳送指令到指令取出和解碼單元306。
該指令取出和解碼單元306從存儲器中或者一個已知的存儲單元中取出一個指令并且將該指令解碼為被稱為微指令(這里還被稱為“uops”)的一個或多個運(yùn)算。對全面理解本發(fā)明來說,沒有必要描述指令取出/解碼單元306的精確運(yùn)算。而是可以使用任何眾所周知的指令取出和解碼單元306。足以注意到,指令取出/解碼單元306以程序代碼次序取出程序指令,對這些指令解碼,并為每個uop進(jìn)行隔離邏輯源寄存器和邏輯目標(biāo)寄存器。在一個實施例中,邏輯源和目的寄存器是那些寄存器,即美國英特爾公司體系結(jié)構(gòu)的寄存器組例如EAX、EBX、ECX、AH、BH、DI、EDI等等。該uop和其相關(guān)邏輯寄存器由指令取出和解碼單元306提供到數(shù)據(jù)依賴單元310和分配器單元308。
該分配器單元308為數(shù)據(jù)依賴單元310提供表示可用的物理寄存器的一系列指針。在一個實施例中,該物理寄存器駐留在指令收回單元312中。然而在替換的實施例中,該物理寄存器駐留在其他單元。對全面理解延遲重新分配結(jié)構(gòu)來說,不需要描述分配器單元308的精確操作。足以注意到,分配器308為數(shù)據(jù)依賴單元310提供空閑的物理寄存器列表以便供當(dāng)前的uop組使用。
該數(shù)據(jù)依賴單元310重命名邏輯寄存器為大一些類的物理寄存器,所述物理寄存器駐留在指令312中并被一個或多個執(zhí)行單元316使用。在一個實施例中,該數(shù)據(jù)依賴單元310保持寄存器別名列表(RAT)311。該RAT311用于重命名由微處理器實施例204例子中的指令取出/解碼單元306提供的邏輯寄存器。該重命名處理包括將邏輯寄存器標(biāo)識符轉(zhuǎn)換為物理寄存器標(biāo)識符。對用于操作的每一個該源寄存器來說,邏輯寄存器標(biāo)識符被轉(zhuǎn)換為物理寄存器標(biāo)識符。此外,至于用于操作的目的寄存器,則一個新的物理寄存器標(biāo)識符被分配給該邏輯寄存器標(biāo)識符。數(shù)據(jù)依賴單元310耦合到保持該物理寄存器的一個指令收回單元312和調(diào)度程序314。該數(shù)據(jù)依賴單元310包括一個結(jié)構(gòu),用于保持如下進(jìn)一步描述的運(yùn)算標(biāo)志寄存器。
調(diào)度程序314在該操作數(shù)已經(jīng)重命名為物理寄存器之后接收一個給定uop的操作數(shù)。當(dāng)即將執(zhí)行該uop和當(dāng)可以使用當(dāng)執(zhí)行單元時,調(diào)度程序314發(fā)送一個特別的uop到執(zhí)行單元316中的適當(dāng)?shù)囊粋€中。
執(zhí)行單元316執(zhí)行該uop。在一個實施例中,執(zhí)行單元316是超級標(biāo)量。該超級標(biāo)量執(zhí)行單元包含多重運(yùn)算邏輯單元(ALU)。該執(zhí)行單元316還支持無次序執(zhí)行和推測性執(zhí)行。執(zhí)行單元316的源數(shù)據(jù)來源于重排序隊列(ROQ)313。
指令收回單元312包含物理寄存器和在重排序隊列(RQQ)等中指令執(zhí)行狀態(tài)信息。在推理地執(zhí)行的一個實施例中,諸如實施例204中的微處理器例子,可以在一開始就推測uop。包含在重排序隊列中用于推測的uop的數(shù)據(jù)在結(jié)構(gòu)上是不可見的。這是這種情形,即因為微處理器實施例不能確保正確的程序路徑傳下去,因此該數(shù)據(jù)可以無效。然而,一旦微處理器實施例決定預(yù)知了正確的程序路徑,就不再推測數(shù)據(jù)并且數(shù)據(jù)可以收回。意識到那些微處理器實施例204的例子不必以程序代碼次序執(zhí)行uop,然而,在此實施例中收回了以程序代碼次序執(zhí)行的uop。由于uops收回,則指令收回單元312在不再使用的重排序隊列313中識別物理寄存器。不再使用的該物理寄存器被重新分配并且分配器單元308使用該空閑的物理寄存器更名其他邏輯寄存器。然而,本發(fā)明的延遲重新分配結(jié)構(gòu)在重排序隊列313中延遲了物理寄存器的重新分配,所述重排序隊列313包含有效運(yùn)算標(biāo)志,如下進(jìn)一步所述。
延遲重新分配結(jié)構(gòu)。在一個實施例中,本發(fā)明的延遲重新分配機(jī)理提供了一個裝置,用于在多指令系統(tǒng)結(jié)構(gòu)中保持一種指令系統(tǒng)的運(yùn)算標(biāo)志。圖3的微處理器實施例204能夠解碼并執(zhí)行計算機(jī)程序,諸如一個應(yīng)用程序或者帶有來自多指令系統(tǒng)的操作系統(tǒng)。為了使微處理器實施例204既能接受來自具有一個運(yùn)算標(biāo)志寄存器的第一指令系統(tǒng)結(jié)構(gòu)的uop,又能接受來自與第一指令系統(tǒng)不兼容的第二指令系統(tǒng)的uop,則微處理器實施例204必須以與第二指令系統(tǒng)兼容的方式管理包含在第一指令系統(tǒng)的運(yùn)算標(biāo)志寄存器中的狀態(tài)信息。這里使用的術(shù)語“運(yùn)算標(biāo)志”是指狀態(tài)標(biāo)志,諸如包含在圖1所示的IA-32 EFLAGS寄存器中的狀態(tài)標(biāo)志等等。
圖4是圖3微處理器實施例204的延遲重新分配機(jī)構(gòu)的一個實施例的方框圖。在一個實施例中,延遲重新分配結(jié)構(gòu)400包含數(shù)據(jù)依賴單元310和指令收回單元312。該數(shù)據(jù)依賴單元310包含寄存器別名列表(RAT)311,運(yùn)算標(biāo)志緩沖器402和比較邏輯404。該RAT 311更名用于IA-32指令等等的邏輯寄存器。該RAT 311還識別更新該運(yùn)算標(biāo)志寄存器的那些指令。
運(yùn)算標(biāo)志緩沖器402包含含有該運(yùn)算標(biāo)志寄存器結(jié)構(gòu)上的有效狀態(tài)的物理寄存器的一個指針。如圖4所示,運(yùn)算標(biāo)志緩沖器402從RAT 311中分離。然而,在替換的實施例中,運(yùn)算標(biāo)志緩沖器402維持在RAT 311中,這認(rèn)為是在發(fā)明的范圍之內(nèi)。
指令收回單元312保持重排序隊列(ROQ)313。ROQ 313包含多個物理寄存器。聯(lián)接到邏輯寄存器的每個物理寄存器包含第一入口以表示何時該物理寄存器被通用的邏輯寄存器和運(yùn)算標(biāo)志寄存器共享。每個物理寄存器還包含第二入口以便表示是否延遲寄存器的重新分配以便保存運(yùn)算標(biāo)志。在一個替換的實施例中,ROQ 313在uop的后續(xù)次序中被組織為先進(jìn)/先出(FIFO)隊列。在一個實施例中,延遲緩沖器410包含其重新分配正在延遲的寄存器的指針。
重排序隊列313中的第一入口和一第二入口用來識別和保存包含該運(yùn)算標(biāo)志的一個物理寄存器。在一個實施例例子中,重排序隊列中的每個寄存器具有第一入口以便表示何時該寄存器包含此運(yùn)算標(biāo)志。在一個實施例中,第一入口是在此被稱為“AF”比特的一個比特。重排序序列中的每個寄存器還具有第二入口以便表示此寄存器的重新分配將被延遲直至后續(xù)指令更新此運(yùn)算標(biāo)志。在一個實施例中,第二入口在此被稱為“DD”比特的一個比特。
當(dāng)一個指令不更新運(yùn)算標(biāo)志但是將重新分配包含此有效運(yùn)算標(biāo)志的寄存器時,則觸發(fā)本發(fā)明的延遲重新分配結(jié)構(gòu)。含有運(yùn)算標(biāo)志的物理目的寄存器的延遲重新分配附有比較邏輯404,它將當(dāng)前分配的物理寄存器與更名為新的物理目的寄存器的一個邏輯寄存器的先前的物理目的寄存器相比。如果比較邏輯404表示含有運(yùn)算標(biāo)志的當(dāng)前狀態(tài)的物理寄存器是邏輯寄存器更名時將重新分配的物理寄存器,那么一個入口設(shè)置在此重排序隊列313中,以便表示含有此運(yùn)算標(biāo)志當(dāng)前狀態(tài)的物理寄存器被保存而不是當(dāng)收回和恢復(fù)此可用的寄存器池時進(jìn)行重新分配。在一個實施例中,通過在ROQ 313中設(shè)置“DD”比特來使發(fā)送信號匹配。此物理寄存器一直被保存直至后續(xù)指令更新此運(yùn)算標(biāo)志并且因此將該運(yùn)算標(biāo)志移動到不同的物理寄存器為止。在一個實施例中,比較操作結(jié)果是“不管”條件,用于除觸發(fā)本發(fā)明的延遲重新分配結(jié)構(gòu)的指令之外的所有指令。
圖5是概述當(dāng)重新分配包含運(yùn)算標(biāo)志的物理寄存器被延遲時的一個列表。一個指令可以明確地更新運(yùn)算標(biāo)志,隱含地更新運(yùn)算標(biāo)志,或者未受影響地離開運(yùn)算標(biāo)志。指令對運(yùn)算標(biāo)志的影響確定了是否延遲含有運(yùn)算標(biāo)志當(dāng)前狀態(tài)的物理寄存器的重新分配。
如圖5所示,當(dāng)一個指令明確地更新運(yùn)算標(biāo)志時,則不延遲含有該運(yùn)算標(biāo)志的先前的重新分配。當(dāng)一個uop規(guī)定該運(yùn)算標(biāo)志寄存器作為邏輯目標(biāo)寄存器時,發(fā)生對該運(yùn)算標(biāo)志的一個明確更新。明確更新該運(yùn)算標(biāo)志的指令產(chǎn)生新的運(yùn)算標(biāo)志并且因此含有該運(yùn)算標(biāo)志的先前的寄存器能夠被重新分配,因為先前的寄存器不再含有該運(yùn)算標(biāo)志的當(dāng)前狀態(tài)。在一個實施例中,該RAT 311重命名一邏輯運(yùn)算標(biāo)志寄存器,該邏輯運(yùn)算標(biāo)志寄存器是到一個物理目的寄存器的一個的明確目的地。當(dāng)該指令收回時,該物理目的寄存器分配給同樣明確更新該運(yùn)算標(biāo)志的一個先前的指令。
同樣如圖5所示,當(dāng)一個指令隱含地更新運(yùn)算標(biāo)志時,則不延遲含有該運(yùn)算標(biāo)志的先前的重新分配。當(dāng)指令同時更新該運(yùn)算標(biāo)志寄存器和第二邏輯寄存器時出現(xiàn)一個隱含的更新。隱含地更新運(yùn)算標(biāo)志寄存器的一個指令不指定該運(yùn)算標(biāo)志寄存器為邏輯目標(biāo)寄存器;而是通常規(guī)定通用寄存器作為邏輯目標(biāo)寄存器。例如,隱含的更新以許多算術(shù)邏輯部件(ALU)操作的副作用形式出現(xiàn)。在一個實施例中,RAT 311解釋隱含地更新那些運(yùn)算標(biāo)志的一個指令,使得該運(yùn)算標(biāo)志存儲在如該指令的邏輯目標(biāo)寄存器的相同的物理目的寄存器中。因此,兩個邏輯寄存器(該運(yùn)算標(biāo)志寄存器和一通用寄存器)允許共享ROQ 313中相同的物理寄存器。隱含地更新該運(yùn)算標(biāo)志的指令產(chǎn)生新的運(yùn)算標(biāo)志并且因此含有該運(yùn)算標(biāo)志的先前的寄存器能夠被重新分配,因此先前的寄存器不再含有該運(yùn)算標(biāo)志的當(dāng)前狀態(tài)。當(dāng)該指令收回時,則重新分配分給該邏輯目標(biāo)寄存器的先前的物理寄存器。在把IA-32 EFLAGS寄存器的運(yùn)算標(biāo)志部分與第二64比特指令系統(tǒng)綜合在一起的實施例例子中,對該運(yùn)算標(biāo)志的隱含更新存儲在ROQ 313中的第二指令系統(tǒng)的64位物理目的寄存器的較高的32位。
然而,不是所有的指令都更新運(yùn)算標(biāo)志。在不更新運(yùn)算標(biāo)志的指令的情況下,RAT不重命名該運(yùn)算標(biāo)志寄存器。而是,運(yùn)算標(biāo)志保留在舊的物理目的寄存器中。由于寄存器仍然保持有效信息-該運(yùn)算標(biāo)志的當(dāng)前狀態(tài),那么這使重新分配該舊的物理目的寄存器變復(fù)雜了。為解決此問題,該延遲重新分配機(jī)構(gòu)提供了一種結(jié)構(gòu)以便表示何時物理寄存器包含有效的運(yùn)算標(biāo)志并且當(dāng)不更新該運(yùn)算標(biāo)志的一個后續(xù)指令將另外重新分配給包含該有效運(yùn)算標(biāo)志的寄存器時,延遲該物理寄存器的重新分配。因此,通過延遲重新分配包含有效運(yùn)算標(biāo)志的物理寄存器,來保存該運(yùn)算標(biāo)志直至該運(yùn)算標(biāo)志被另一個后續(xù)指令所更新并且存儲在不同的物理寄存器中。
如圖5所示,當(dāng)一個指令不更新運(yùn)算標(biāo)志以及不重新分配含有該運(yùn)算標(biāo)志的物理寄存器時,則延遲重新分配結(jié)構(gòu)不被觸發(fā),因為含有該運(yùn)算標(biāo)志的寄存器不會被重新分配。
然而,當(dāng)一個指令不更新該運(yùn)算標(biāo)志(它將把該運(yùn)算標(biāo)志移動到一個新的物理寄存器)時,而是該指令將重新分配給含有該運(yùn)算標(biāo)志的寄存器時,則觸發(fā)本發(fā)明的延遲重新分配結(jié)構(gòu)。
在此情況下,將出現(xiàn)重新分配含有有效運(yùn)算標(biāo)志的寄存器,因為該操作重命名了與更新該運(yùn)算標(biāo)志的上次指令的邏輯目標(biāo)寄存器相同的一個邏輯目標(biāo)寄存器。根據(jù)本發(fā)明,雖然,重新分配包含有效運(yùn)算標(biāo)志的物理寄存器被延遲,直至該運(yùn)算標(biāo)志被一后續(xù)指令更新并且因此重命名為不同的物理寄存器為止。當(dāng)該指令收回時,而不是重新分配含有該運(yùn)算標(biāo)志的該物理寄存器時,則重新分配被延遲的先前的物理目的寄存器就被重新分配。在圖4所示的實施例中,延遲緩沖器410包含到重新分配被延遲的先前的物理目的寄存器的一個指針。
如上所指出的,指令對運(yùn)算標(biāo)志的影響確定了是否延遲含有運(yùn)算標(biāo)志當(dāng)前狀態(tài)的物理寄存器的重新分配。
方法實施形式。圖6是用于說明根據(jù)本發(fā)明的管理寄存器方法的一個實施形式的流程圖。在一個實施形式中,當(dāng)指令被重命名時開始圖6所示的方法(方框602)。檢查該指令以便確定是否該指令更新該運(yùn)算標(biāo)志寄存器(方框604)。如果該指令更新該運(yùn)算標(biāo)志,那么在收回時被重新分配的物理目的寄存器就是分配給指令正在被收回的邏輯目標(biāo)寄存器的那個先前的寄存器(方框607)。如果該指令不更新該運(yùn)算標(biāo)志,則核對該指令來看是否指令的收回將重新分配包含有效運(yùn)算標(biāo)志的寄存器(方框605)。如果指令的收回不重新分配包含該有效運(yùn)算標(biāo)志的寄存器,那么在收回時取操作數(shù)重新分配的物理目的寄存器是分配給指令正在收回的邏輯目標(biāo)寄存器的那個先前的寄存器(方框607)。如果該指令的收回不更新含有有效運(yùn)算標(biāo)志的寄存器,則根據(jù)本發(fā)明,包含運(yùn)算標(biāo)志的物理寄存器的重新分配被延遲(方框608)。
數(shù)據(jù)流例子。圖7A,7B,7C,7D,7E,7F,7G,7H,7I,和7J說明對邏輯寄存器進(jìn)行操作的指令序列例子的數(shù)據(jù)流。指令序列例子包括可以明確地更新運(yùn)算標(biāo)志,含蓄地更新運(yùn)算標(biāo)志,并且未受影響地離開運(yùn)算標(biāo)志的指令。如上所述,指令對運(yùn)算標(biāo)志的影響確定了是否延遲含有運(yùn)算標(biāo)志當(dāng)前狀態(tài)的物理寄存器的重新分配。
如圖7A所示,RAT 311最初把邏輯寄存器EBX 20影射到ROQ 313中的物理寄存器“53”。11同樣RAT 311同樣把邏輯寄存器EBX影射到物理寄存器“49”并且把EFLAGS寄存器影射到物理寄存器“33”。該運(yùn)算標(biāo)志緩沖器表示運(yùn)算標(biāo)志(AFLAGS)的當(dāng)前狀態(tài)位于物理寄存器“53”。
圖7B、7C、7D、7E、7F、7G、7H、7I和7J表示在每九例子指令的收回之后RAT 311、ROQ 313和運(yùn)算標(biāo)志緩沖器402的結(jié)構(gòu)狀態(tài)。如圖7B所示,指令一是一個運(yùn)算,它寫入EBX并隱含地更新該運(yùn)算標(biāo)志。結(jié)果,對此指令一的收回,運(yùn)算標(biāo)志緩沖器指向物理寄存器“61”作為運(yùn)算標(biāo)志的當(dāng)前狀態(tài)。因為指令一隱含地更新此運(yùn)算標(biāo)志,此運(yùn)算標(biāo)志共享與邏輯目標(biāo)寄存器EBX相同的物理寄存器。因此,此用于EBX的RAT入口同樣指向物理寄存器“61”。用于物理寄存器“61”的AF比特表示此寄存器含有運(yùn)算標(biāo)志。不進(jìn)行重新分配的延遲,因為此指令隱含地更新了運(yùn)算標(biāo)志。用于EBX物理寄存器“53”的舊的物理目的寄存器被重新分配。
如圖7C所示,指令二是一個運(yùn)算,它寫入EBX并隱含地寫入該運(yùn)算標(biāo)志。結(jié)果,對此指令二的收回,運(yùn)算標(biāo)志緩沖器指向物理寄存器“50”作為運(yùn)算標(biāo)志的當(dāng)前狀態(tài)。因為指令2隱含地更新此運(yùn)算標(biāo)志,此運(yùn)算標(biāo)志共享與邏輯目標(biāo)寄存器ECX相同的物理寄存器。因此,此用于ECX的RAT入口同樣指向物理寄存器“50”。用于物理寄存器“50”的AF比特表示此寄存器含有運(yùn)算標(biāo)志。另外,因為此指令隱含地更新了運(yùn)算標(biāo)志,那么不延遲先前的用于ECX的物理目的寄存器的重新分配。所以,用于ECX物理寄存器“49”的舊的物理目的寄存器被重新分配。
如圖7D所示,指令三是一個運(yùn)算,它寫入ECX,而不更新運(yùn)算標(biāo)志。結(jié)果,對此指令三的收回,用于ECX的RAT入口指向物理寄存器“94”,但是運(yùn)算標(biāo)志未改變并保持在運(yùn)算標(biāo)志緩沖器402所示的物理寄存器“50”中。在先前的系統(tǒng)中,指令三的收回將重新分配物理寄存器“50”,因為其含有此邏輯寄存器ECX先前的值。然而,根據(jù)本發(fā)明,因為物理寄存器“50”仍然含有運(yùn)算標(biāo)志的當(dāng)前狀態(tài),那么此物理寄存器“50”重新分配被延遲。用于物理寄存器94的DD比特表示運(yùn)算標(biāo)志的重新分配將被延遲。物理寄存器“50”被保存并且代之以對以前延遲的無論什么物理寄存器都將進(jìn)行重新分配。
如圖7E所示,指令四執(zhí)行另一個寫入ECX而不必更新運(yùn)算標(biāo)志。這時候,針對指令四的收回,用于ECX的RAT入口現(xiàn)在指向物理寄存器“80”。運(yùn)算標(biāo)志緩沖器402仍然指向含有運(yùn)算標(biāo)志的當(dāng)前狀態(tài)的物理寄存器“50”。在這種情況下,指令四的收回將重新分配物理寄存器“94”,因為其含有此邏輯寄存器ECX先前的值。由于物理寄存器94不含有運(yùn)算標(biāo)志的當(dāng)前狀態(tài),那么物理寄存器94被重新分配。雖然指令四不更新運(yùn)算標(biāo)志,但不利用指令四觸發(fā)本發(fā)明的延遲重新分配結(jié)構(gòu),因為指令四的收回不重新分配含有運(yùn)算標(biāo)志物理寄存器(即物理寄存器“50”)。
如圖7F所示,指令五執(zhí)行一寫入EBX并隱含的寫入運(yùn)算標(biāo)志寄存器中。針對指令五的收回,用于寄存器EBX的EBX的RAT入口現(xiàn)在指向物理寄存器42。運(yùn)算標(biāo)志緩沖器現(xiàn)在同樣指向物理寄存器“42″,因為隱含地更新的運(yùn)算標(biāo)志被存儲在與邏輯目標(biāo)寄存器EBX相同的物理寄存器。用于物理寄存器“42”的AF比特表示此寄存器含有運(yùn)算標(biāo)志。由于出現(xiàn)一個隱含的寫,則重新分配的寄存器是用于物理寄存器“61”EBX的舊的物理目的寄存器。
所示圖7G所示,指令六個執(zhí)行一寫入到EBX但是不更新此運(yùn)算標(biāo)志。針對指令六的收回,用于寄存器EBX的RAT入口現(xiàn)在指向物理寄存器″63″。因為指令六不寫給運(yùn)算標(biāo)志,那么運(yùn)算標(biāo)志保持在當(dāng)指令五收回時所處的相同的物理寄存器中,并且運(yùn)算標(biāo)志緩沖器402仍然指向含有運(yùn)算標(biāo)志當(dāng)前狀態(tài)的物理寄存器″42″中。類似于指令三,指令六的收回將重新分配物理寄存器“42”,因為其含有此邏輯寄存器EBX先前的值。然而,根據(jù)本發(fā)明,因為物理寄存器“42”仍然含有運(yùn)算標(biāo)志的當(dāng)前狀態(tài),那么此物理寄存器“42”的重新分配被延遲。用于物理寄存器63的DD比特表示運(yùn)算標(biāo)志的重新分配將被延遲。物理寄存器“42”被保存并且代之以以前延遲物理寄存器″50″被重新分配。
如圖7H所示,指令七對運(yùn)算標(biāo)志執(zhí)行一個明確的更新。針對指令七的收回,用于EFLAGS的RAT入口現(xiàn)在指向物理寄存器“73”,運(yùn)算標(biāo)志緩沖器因此也如此。用于物理寄存器“73”的AF比特表示此寄存器含有運(yùn)算標(biāo)志。EFLAGS的舊的物理寄存器″33″被重新分配。
如圖7I所示,指令八執(zhí)行一寫入到EBX并隱含的寫入運(yùn)算標(biāo)志寄存器中。針對指令八的收回,用于EBX的RAT入口和運(yùn)算標(biāo)志緩沖器402兩者都指向物理寄存器“56”用于物理寄存器“56”的AF比特表示此寄存器含有運(yùn)算標(biāo)志。由于這是一個隱含的寫給運(yùn)算標(biāo)志,則需要不延遲重新分配并且用于EBX的舊的物理寄存器″63″被重新分配。
如圖7J所示,指令九個執(zhí)行一寫入EBX但是不影響此運(yùn)算標(biāo)志。針對指令九的收回,用于寄存器EBX的RAT入口現(xiàn)在指向物理寄存器″67″。然而,指令九不影響此運(yùn)算標(biāo)志,此運(yùn)算標(biāo)志緩沖器402仍然指向物理寄存器″56″。類似于指令三和指令六,指令九的收回將重新分配物理寄存器“56”,因為其含有此邏輯寄存器EBX先前的值。然而,根據(jù)本發(fā)明,因為物理寄存器“56”仍然含有運(yùn)算標(biāo)志的當(dāng)前狀態(tài),那么此物理寄存器“56”的重新分配被延遲。用于物理寄存器″67″的DD比特表示運(yùn)算標(biāo)志的重新分配將被延遲。物理寄存器“56”被保存并且代之以對以前延遲物理寄存器″42″進(jìn)行重新分配。
圖8是概述7A、7B、7C、7D、8E、7F、7G、7H、7I和7J所示指令序列的一個列表。
雖然這里舉例說明和描述了具體實施例,但本領(lǐng)域技術(shù)人員將意識到,能夠獲得相同目的的任意布置可以代替所展示的具體實施例。此申請希望覆蓋本發(fā)明任意的修改或者變化。因此,希望本發(fā)明僅由權(quán)利要求和等效物所限定。
權(quán)利要求
1.在多指令系統(tǒng)處理機(jī)中管理運(yùn)算標(biāo)志寄存器的一種方法,此方法包含處理第一指令系統(tǒng)結(jié)構(gòu)的指令,其中第一指令系統(tǒng)結(jié)構(gòu)包括一個運(yùn)算標(biāo)志寄存器;處理第二指令系統(tǒng)結(jié)構(gòu)的指令,其中第二指令系統(tǒng)結(jié)構(gòu)與第一指令系統(tǒng)結(jié)構(gòu)不兼容;存儲由第一指令系統(tǒng)結(jié)構(gòu)的一個指令更新的通用寄存器的值,其中此值存儲在第二指令系統(tǒng)結(jié)構(gòu)的一個物理目的寄存器中;和在相同的物理目的寄存器中存儲由第一指令系統(tǒng)結(jié)構(gòu)更新的用于運(yùn)算標(biāo)志寄存器的值作為通用寄存器的值。
2.根據(jù)權(quán)利要求1所述的方法,其中第一指令系統(tǒng)結(jié)構(gòu)包含一個32位指令系統(tǒng)。
3.根據(jù)權(quán)利要求2所述的方法,其中第二指令系統(tǒng)結(jié)構(gòu)包含一64比特指令系統(tǒng)。
4.根據(jù)權(quán)利要求3所述的方法,其中運(yùn)算標(biāo)志寄存器存儲在該物理目的寄存器較高的32位。
5.延遲重新分配一個運(yùn)算標(biāo)志寄存器的一種方法,此方法包含確定是否一個指令更新該運(yùn)算標(biāo)志寄存器;如果指令更新了運(yùn)算標(biāo)志寄存器,那么對分配給用于該指令的邏輯目標(biāo)寄存器的一個先前的物理寄存器進(jìn)行重新分配;當(dāng)運(yùn)算標(biāo)志值不受該指令影響時,確定是否該指令重新分配了含有該運(yùn)算標(biāo)志的一個物理寄存器;當(dāng)運(yùn)算標(biāo)志值不受該指令影響時,如果指令重新分配給了運(yùn)算標(biāo)志寄存器,而不是含有該運(yùn)算標(biāo)志的物理寄存器,那么對分配給用于該指令的邏輯目標(biāo)寄存器的一個先前的物理寄存器進(jìn)行重新分配;和如果運(yùn)算標(biāo)志值不受指令影響并且指令重新分配含有該運(yùn)算標(biāo)志的物理寄存器,那么延遲對含有該運(yùn)算標(biāo)志物理寄存器的重新分配,其中延遲先前的物理寄存器的重新分配保存該運(yùn)算標(biāo)志。
6.根據(jù)權(quán)利要求5所述的方法,進(jìn)一步包含在用于該指令的物理目的寄存器中設(shè)置一個入口,其中第一入口表示該指令更新了運(yùn)算標(biāo)志。
7.根據(jù)權(quán)利要求5所述的方法,進(jìn)一步包含在用于該指令的物理目的寄存器中設(shè)置一個入口,其中該入口表示含有該運(yùn)算標(biāo)志的物理寄存器的重新分配將被延遲。
8.根據(jù)權(quán)利要求5所述的方法,其中含有該運(yùn)算標(biāo)志的物理寄存器的重新分配被延遲,直至一后續(xù)指令更新那些運(yùn)算標(biāo)志為止。
9.一微處理器,包含一數(shù)據(jù)依賴單元,用于重命名一邏輯寄存器為較大類的物理寄存器;一個指令收回單元,用于表示是否物理寄存器含有運(yùn)算標(biāo)志的當(dāng)前狀態(tài)和用于表示是否含有運(yùn)算標(biāo)志當(dāng)前狀態(tài)的物理寄存器將被延遲。
10.根據(jù)權(quán)利要求9所述的微處理器,其中該數(shù)據(jù)依賴單元包含寄存器別名列表。
11.根據(jù)權(quán)利要求9所述的微處理器,其中該數(shù)據(jù)依賴單元進(jìn)一步包含含有到該物理寄存器的一個指針的一個運(yùn)算標(biāo)志緩沖器,所述物理寄存器含有該運(yùn)算標(biāo)志寄存器的當(dāng)前狀態(tài)。
12.根據(jù)權(quán)利要求9所述的微處理器,進(jìn)一步包含比較邏輯以便將相應(yīng)于被重命名的邏輯寄存器的物理寄存器與含有該運(yùn)算標(biāo)志的物理寄存器相比,其中如果物理寄存器是相同的并且指令聽任運(yùn)算標(biāo)志未受影響,則含有該運(yùn)算標(biāo)志的物理寄存器的重新分配被延遲。
13.根據(jù)權(quán)利要求9所述的微處理器,進(jìn)一步包含一個緩沖器,該緩沖器含有包含到以前延遲的重新分配的物理寄存器的一個指針。
14.一計算機(jī)系統(tǒng),包含一條總線;耦合到該總線的一個外存儲器;和耦合到外存儲器和總線的一個微處理器,該微處理器包括多個物理寄存器,每個物理寄存器具有第一標(biāo)識符以便表示該物理寄存器包含一個運(yùn)算標(biāo)志寄存器,具有第二標(biāo)識符以便表示是否該物理寄存器的重新分配將被延遲;寄存器別名列表,用于重命名邏輯寄存器和用于識別隱含地更新該運(yùn)算標(biāo)志寄存器的一個指令;一個運(yùn)算標(biāo)志緩沖器,包含含有一個運(yùn)算標(biāo)志寄存器當(dāng)前狀態(tài)的物理寄存器的一個指針;比較邏輯,將相應(yīng)于被重命名的邏輯寄存器的物理寄存器與含有該運(yùn)算標(biāo)志的物理寄存器相比,其中如果物理寄存器是相同的并且指令聽任運(yùn)算標(biāo)志未受影響,則含有該運(yùn)算標(biāo)志的物理寄存器的重新分配被延遲,第二標(biāo)識符設(shè)定在包含該運(yùn)算標(biāo)志的物理寄存器中,使得該物理寄存器的重新分配被延遲。
15.根據(jù)權(quán)利要求14所述的微處理器,進(jìn)一步包含含有到該物理寄存器指針的緩沖器,其中所述物理寄存器的重新分配以前被延遲。
16.一個物品,包含一計算機(jī)可讀介質(zhì),該介質(zhì)上存儲有指令,用于使計算機(jī)執(zhí)行一種延遲一個運(yùn)算標(biāo)志寄存器的重新分配方法,該方法包含確定是否一個指令更新該運(yùn)算標(biāo)志寄存器;如果該指令更新該運(yùn)算標(biāo)志寄存器,則對分配給用于該指令的一個邏輯目標(biāo)寄存器的一個先前的物理寄存器進(jìn)行重新分配;當(dāng)該運(yùn)算標(biāo)志值不受該指令影響時,確定是否該指令重新分配含有該運(yùn)算標(biāo)志的一個物理寄存器;當(dāng)運(yùn)算標(biāo)志值不受該指令影響時,如果指令重新分配給了運(yùn)算標(biāo)志寄存器,而不是含有該運(yùn)算標(biāo)志的物理寄存器,那么對分配給用于該指令的邏輯目標(biāo)寄存器的一個先前的物理寄存器進(jìn)行重新分配;如果運(yùn)算標(biāo)志值不受指令影響并且指令重新分配給含有該運(yùn)算標(biāo)志的物理寄存器,那么延遲對含有該運(yùn)算標(biāo)志物理寄存器進(jìn)行重新分配,其中延遲先前的物理寄存器的重新分配保存該運(yùn)算標(biāo)志。
17.一微處理器,包含裝置,用于重命名一邏輯寄存器為較大類的物理寄存器;裝置,用于表示是否一個物理寄存器含有運(yùn)算標(biāo)志的當(dāng)前狀態(tài)和用于表示是否對含有該運(yùn)算標(biāo)志的當(dāng)前狀態(tài)物理寄存器之重新分配將被延遲。
18.根據(jù)權(quán)利要求17所述的微處理器,其中用于重命名的裝置包含寄存器別名列表。
19.根據(jù)權(quán)利要求17所述的微處理器,其中用于重命名的裝置進(jìn)一步包含含有到該物理寄存器的一個指針的一個運(yùn)算標(biāo)志緩沖器,所述物理寄存器含有該運(yùn)算標(biāo)志寄存器的當(dāng)前狀態(tài)。
20.根據(jù)權(quán)利要求17所述的微處理器,進(jìn)一步包括裝置,用于將相應(yīng)于被重命名的邏輯寄存器的物理寄存器與含有該運(yùn)算標(biāo)志的物理寄存器相比,其中如果物理寄存器是相同的并且指令聽任運(yùn)算標(biāo)志未受影響,則含有該運(yùn)算標(biāo)志的物理寄存器的重新分配被延遲。
21.根據(jù)權(quán)利要求17所述的微處理器,進(jìn)一步包含一個緩沖器,包含到以前延遲的重新分配的物理寄存器的一個指針。
22.一計算機(jī)系統(tǒng),包含一條總線;耦合到該總線的一個外存儲器;和耦合到外存儲器和總線的一個微處理器,該微處理器包括多個物理寄存器,每個物理寄存器具有第一標(biāo)識符以便表示該物理寄存器包含一個運(yùn)算標(biāo)志寄存器,具有第二標(biāo)識符以便表示是否該物理寄存器的重新分配將被延遲;裝置,用于重命名邏輯寄存器和用于識別隱含地更新該運(yùn)算標(biāo)志寄存器的一個指令;一個運(yùn)算標(biāo)志緩沖器,包含含有一個運(yùn)算標(biāo)志寄存器當(dāng)前狀態(tài)的物理寄存器的一個指針;裝置,用于將相當(dāng)于被重命名的邏輯寄存器的物理寄存器與含有該運(yùn)算標(biāo)志的物理寄存器相比,其中如果物理寄存器是相同的并且指令聽任運(yùn)算標(biāo)志未受影響,則含有該運(yùn)算標(biāo)志的物理寄存器的重新分配被延遲,第二標(biāo)識符設(shè)定在包含該運(yùn)算標(biāo)志的物理寄存器中,使得該物理寄存器的重新分配被延遲。
全文摘要
公開了能夠?qū)\(yùn)算標(biāo)志寄存器進(jìn)行延遲重新分配的一個微處理器。一個系統(tǒng)處理具有一個運(yùn)算標(biāo)志寄存器的第一指令系統(tǒng)的指令。該系統(tǒng)還處理與第一指令系統(tǒng)不兼容的第二指令系統(tǒng)結(jié)構(gòu)的指令。為了處理隱含地更新運(yùn)算標(biāo)志寄存器的第一指令系統(tǒng)結(jié)構(gòu)的第一指令,該運(yùn)算標(biāo)志寄存器與含有第一指令結(jié)果的一個通用寄存器共享一個物理目的寄存器。不更新運(yùn)算標(biāo)志而是將重新分配含有該運(yùn)算標(biāo)志寄存器的一個指令觸發(fā)本發(fā)明的延遲重新分配機(jī)構(gòu)。
文檔編號G06F9/318GK1641566SQ20051000572
公開日2005年7月20日 申請日期1999年12月30日 優(yōu)先權(quán)日1998年12月31日
發(fā)明者R·拉米雷茲, M·莫里森 申請人:英特爾公司