亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

用于跟蹤完成表中更大量未完成指令的方法和處理器的制作方法

文檔序號:6517149閱讀:306來源:國知局
專利名稱:用于跟蹤完成表中更大量未完成指令的方法和處理器的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及微處理器領(lǐng)域,更具體說,是涉及一種完成表,用于跟蹤更大量的未完成指令。
背景技術(shù)
如果微處理器(“處理器”)能在每一時鐘周期內(nèi)完成多項指令,該微處理器被分類為超級標(biāo)量的。超級標(biāo)量處理器的體系結(jié)構(gòu),利用處理器內(nèi)多個并行處理單元,能在每一時鐘周期內(nèi)完成更多的指令。這些處理單元一般包括多個并行操作的執(zhí)行單元、用于向執(zhí)行單元發(fā)送指令和數(shù)據(jù)的調(diào)度單元、和為執(zhí)行單元預(yù)裝入指令的重命名緩沖器(重命名寄存器)。這些處理單元還可以包括,含有用于跟蹤指令和使指令退役的(“完成表”)。例如,完成單元可以對指令何時已經(jīng)“完成”保持跟蹤。當(dāng)一條指令已經(jīng)執(zhí)行并處于任何例外都不會再發(fā)布該指令的狀態(tài),該指令可以說被“完成”。
在典型的超標(biāo)量處理器中,從指令高速緩沖存儲器檢索多條指令,并放進隊列,通常稱為指令隊列。在進入隊列之后,由調(diào)度單元把指令向各個執(zhí)行單元發(fā)布。在執(zhí)行接收的指令時。執(zhí)行單元可以向完成單元發(fā)送指示,表明該接收的指令的執(zhí)行。這一信息可以存儲在完成表中。然后,完成單元完成該指令,或使該指令退役,并向其余執(zhí)行單元發(fā)送完成信號,使已結(jié)束的數(shù)據(jù)寫回構(gòu)建的寄存器。
完成表的大小與被跟蹤的未完成指令數(shù)對應(yīng)。例如,被跟蹤的未完成指令數(shù)越大,完成表的大小越大。但是,完成表的大小越大,消耗的功率越多和使用更大的硅片面積。雖然較小的完成表縮減硅片面積和功耗,但跟蹤的未完成指令變少,性能也隨之下降。
因此,本領(lǐng)域需要能跟蹤更大量未完成指令,但不增加它的大小的完成表。

發(fā)明內(nèi)容
上面列舉的問題,通過能跟蹤完成表每一表目中未完成指令的連續(xù)數(shù),例如超高速緩沖存儲器一行的長度,借助只存儲該表目中未完成指令連續(xù)數(shù)的第一個的有效地址和標(biāo)識(“ITAG”),至少在一些實施例中已部分被解決。于是,該完成表能跟蹤更大量未完成指令,但不增加它的大小。
在本發(fā)明的一個實施例中,一種在完成表中跟蹤更大量未完成指令的方法,可以包括向第一和第二執(zhí)行單元發(fā)布指令的步驟。本方法還可以包括,在第一和第二執(zhí)行單元之一上,選擇已結(jié)束的指令或現(xiàn)役的指令之一的標(biāo)識。本方法還可以包括,使用被選擇指令的標(biāo)識,計算下一條要完成的指令的標(biāo)識。本方法還可以包括,在完成表的表目中,選擇未完成指令連續(xù)數(shù)的第一個的指令地址和標(biāo)識。本方法還可以包括,使用下一條要完成的指令及被選擇的指令的標(biāo)識,和完成表的表目中未完成指令連續(xù)數(shù)的第一個的標(biāo)識,計算下一條要完成的指令的指令地址。
在本發(fā)明的另一個實施例中,完成表可以包括多個表目,其中該多個表目的每一個,跟蹤一個未完成指令的連續(xù)數(shù)。此外,該多個表目的每一個,可以用于存儲未完成指令連續(xù)數(shù)的第一個的指令地址和標(biāo)識。
前面很一般地列舉了本發(fā)明的一個或多個實施例的特征和技術(shù)優(yōu)點,是為了對本發(fā)明下面的詳細(xì)說明有更好的理解。本發(fā)明另外的特征及優(yōu)點將在本文后面說明,這些特征及優(yōu)點構(gòu)成本發(fā)明權(quán)利要求書的主題。


當(dāng)結(jié)合下面的附圖,閱讀后面的詳細(xì)說明時,能夠獲得對本發(fā)明更好的理解,附圖有圖1畫出一種計算機系統(tǒng)的本發(fā)明的實施例;
圖2畫出一種處理器的本發(fā)明的實施例;圖3A和3B是一種方法的流程圖,用于按照本發(fā)明的一個實施例,計算下一條要完成的指令的有效地址和標(biāo)識;和圖4是一種方法的流程圖,用于按照本發(fā)明的一個實施例,選擇適當(dāng)指令的標(biāo)識,以便為非順序的處理器計算下一條要完成的指令的標(biāo)識。
具體實施例方式
本發(fā)明包括一種方法、完成表、和處理器,用于跟蹤完成表中更大量的未完成指令。在本發(fā)明的一個實施例中,完成表可以包括多個表目,其中每一個表目跟蹤一個未完成指令的連續(xù)數(shù)。每一個表目可以用于存儲未完成指令連續(xù)數(shù)的第一個的指令地址和標(biāo)識。通過能跟蹤完成表每一表目中未完成指令的連續(xù)數(shù),例如超高速緩沖存儲器一行的長度,借助只存儲該表目中未完成指令連續(xù)數(shù)的第一個的指令地址和標(biāo)識,該完成表能跟蹤更大量未完成指令,但不增加它的大小。
在下面的說明中,闡明許多專門的細(xì)節(jié),以提供對本發(fā)明的完整的理解。但是,本領(lǐng)域熟練人員顯然知道,沒有這些專門的細(xì)節(jié),也能實施本發(fā)明。在其他情況下,熟知的電路以方框圖形式表示,以便不使本發(fā)明被不必要的細(xì)節(jié)掩蓋。絕大部分關(guān)于定時考慮的細(xì)節(jié)等等都被省略,因為這種細(xì)節(jié)對完整理解本發(fā)明不是必需的,且屬于本領(lǐng)域普通人員的技能之內(nèi)。
圖1-計算機系統(tǒng)圖1畫出計算機系統(tǒng)100的典型硬件配置,它代表實施本發(fā)明的硬件環(huán)境。計算機系統(tǒng)100可以有處理器110,通過總線112與各種其他部件耦合。處理器110更為詳細(xì)的說明,將在下面結(jié)合圖2給出。操作系統(tǒng)140可以在處理器110上運行,并提供控制和協(xié)調(diào)圖1各部件的功能。按照本發(fā)明原理的應(yīng)用程序150可以結(jié)合操作系統(tǒng)140運行,并向操作系統(tǒng)140提供調(diào)用,在操作系統(tǒng)上,調(diào)用可以實現(xiàn)由應(yīng)用程序150施行的各種功能或服務(wù)。只讀存儲器(ROM)116可以與系統(tǒng)總線112耦合,并包括控制計算機系統(tǒng)100某些基本功能的基本輸入/輸出系統(tǒng)(“BIOS”)。隨機存取存儲器(RAM)114和磁盤適配器118,也可以與系統(tǒng)總線112耦合。應(yīng)當(dāng)指出,包括操作系統(tǒng)140和應(yīng)用程序150的軟件成分,可以裝入RAM 114,RAM 114可以是計算機系統(tǒng)100用于執(zhí)行的主要存儲器。磁盤適配器118可以是與磁盤單元120如磁盤驅(qū)動器通信的集成驅(qū)動電子線路(“IDE”)適配器。
現(xiàn)在參考圖1,計算機系統(tǒng)100還可以包括與總線112耦合的通信適配器134。通信適配器134可以把總線112與外部網(wǎng)絡(luò)互連,使計算機系統(tǒng)100能與其他該類系統(tǒng)通信。I/O裝置也可以通過用戶接口適配器122和顯示適配器136,與系統(tǒng)總線112連接。鍵盤124、鼠標(biāo)126、和揚聲器130,可以全都通過用戶接口適配器122與總線112互連。事件數(shù)據(jù)可以通過這些裝置的任一個,輸入計算機系統(tǒng)100。顯示監(jiān)控器138可以經(jīng)由顯示適配器136與系統(tǒng)總線112連接。這樣,用戶能通過鍵盤124或鼠標(biāo)126,向計算機系統(tǒng)100輸入,和經(jīng)過顯示器138或揚聲器130,從計算機系統(tǒng)100接收輸出。
圖2-處理器圖2畫出處理器110(圖1)的一個實施例。處理器110可以包括取指令單元201。取指令單元201可以包括取指令地址寄存器(IFAR,Instruction Fetch Address Register)202和指令高速緩沖存儲器203。取指令單元201可以用于,例如從多流系統(tǒng)中的程序計數(shù)器取指令,也可以把取出的指令地址裝入IFAR 202。裝入IFAR 202的地址可以是代表來自程序或編譯程序地址的有效地址。與接收的有效地址對應(yīng)的指令,可以存儲在指令高速緩沖存儲器203中。
取指令單元201還可以用于發(fā)布被取出的指令的有效地址、與被取出的指令關(guān)聯(lián)的標(biāo)識(本文稱為“ITAG”)、和被取出的指令是否對與取指令單元201耦合的完成單元204有效的指示。ITAG可以指完成表某一特定表目的超高速緩沖存儲器一行中,用于識別某一長度較長地址的特定指令的較少量的比特,例如完成表有8個表目,例如該長度較長地址是64比特的地址,例如該超高速緩沖存儲器一行是超高速緩沖存儲器一行中32條指令,那么該較少量的比特例如是8比特(下面還要討論)。
完成單元204可以用于對被取出的指令何時已經(jīng)“完成”保持跟蹤。本文使用的“完成”,可以指一條指令已經(jīng)被執(zhí)行單元執(zhí)行,并處于任何例外都不會再發(fā)布該指令的狀態(tài)。完成單元204借助包括一個表205,對指令何時已經(jīng)“完成”保持跟蹤,本文稱該表為“完成表”。完成表205可以包括多個表目。在完成表205中的每一表目,可以用于對未完成指令的連續(xù)數(shù)保持跟蹤。在一個實施例中,可以用每一表目,對等于超高速緩沖存儲器一行長度的未完成指令連續(xù)數(shù)保持跟蹤,該超高速緩沖存儲器一行的長度例如是32條指令。
現(xiàn)在參考圖2,完成表205中每一表目,可以用于存儲未完成表目,例如32條相繼指令,的連續(xù)數(shù)第一指令的有效地址。該有效地址本文稱“基本指令有效地址(Base IEA)”。完成表205中每一表目還可以用于存儲該第一指令的ITAG,本文稱之為“Base ITAG”。完成表205中每一表目還可以用于存儲該第一指令是否有效的指示,有效的指令在完成表205中以“V”標(biāo)記。通過能跟蹤完成表中每一表目中未完成指令的連續(xù)數(shù),例如超高速緩沖存儲器一行的長度,借助只存儲該表目未完成指令連續(xù)數(shù)的第一個的有效地址和標(biāo)識(“ITAG”),該完成表能跟蹤更大量未完成指令,但不增加它的大小。
參考圖2,處理器110可以包括與取指令單元201耦合的指令調(diào)度單元206。取指令單元201可以用于從指令高速緩沖存儲器203接收指令。這些指令可以存儲在指令調(diào)度單元206的隊列207中,本文稱該隊列為“指令隊列”。指令隊列207可以包括“N”個表目,存儲總共N條指令。在任何時鐘周期中,可以用指令調(diào)度單元206,把存儲在指令隊列207中的指令,調(diào)度至適當(dāng)?shù)膱?zhí)行單元,如浮點單元、定點單元、裝入/存儲單元、分支單元。在調(diào)度指令前,該指令可以存儲在適當(dāng)鎖存器208-210中,以便調(diào)度至適當(dāng)?shù)膱?zhí)行單元211-213。例如,定點指令可以存儲在鎖存器208,以便稍后調(diào)度至定點執(zhí)行單元“FXU”,例如“FXU0”211。另外,定點指令可以存儲在鎖存器209中,以便稍后調(diào)度至定點執(zhí)行單元“FXU”,例如“FXU1”212。在另一個實施例中,浮點指令可以存儲在鎖存器210中,以便稍后調(diào)度至浮點執(zhí)行單元“FPU”213。應(yīng)當(dāng)指出,處理器110可以包括比畫出的和圖2所示的更多的執(zhí)行單元(在數(shù)量和類型上更多)。
在完成指令的執(zhí)行時,執(zhí)行單元211-213向完成單元204發(fā)送指示,表明指令已經(jīng)“結(jié)束”。本文使用的“結(jié)束”是指一條指令已經(jīng)被適當(dāng)?shù)膱?zhí)行單元執(zhí)行結(jié)束。執(zhí)行單元211-213可以把結(jié)束的指令的標(biāo)識(“ITAG”)分別放進鎖存器214-216。
處理器110余下的單元,將結(jié)合圖3和4在下面討論。圖3是一種方法的流程圖,用于按照本發(fā)明的一個實施例,計算下一條要完成的指令的有效地址和標(biāo)識。圖4是一種方法的流程圖,用于按照本發(fā)明的一個實施例,選擇指令的標(biāo)識,以便為非順序的處理器計算下一條要完成的指令的標(biāo)識。
在一個實施例中,處理器110可以是順序處理器,是指它同時執(zhí)行相同類型的指令,如定點指令,如果這些指令在同一周期中被調(diào)度的話。在另一個實施例中,處理器110可以是非順序處理器,是指它執(zhí)行不同類型的指令,如定點和浮點指令,按與調(diào)度不同的次序執(zhí)行這些指令。例如,浮點指令的執(zhí)行一般比定點指令要用更長的時間。因此,如果在同一周期調(diào)度兩種類型的指令,則定點指令將在浮點指令之前“結(jié)束”。本文使用的“結(jié)束”是指一條指令已經(jīng)被適當(dāng)?shù)膱?zhí)行單元執(zhí)行結(jié)束。為在定點單元和浮點單元之間維持輸送(指被執(zhí)行的指令流),下一調(diào)度群(即指令調(diào)度單元206要調(diào)度的下一指令群)必須在調(diào)度上拖延,并等待浮點單元的執(zhí)行結(jié)束。但是,為了改進性能,最好在每一周期都調(diào)度定點指令流,即使在浮點指令已被調(diào)度之后。當(dāng)出現(xiàn)這種情況時,許多比浮點指令年輕(即指令調(diào)度單元206較新近的調(diào)度)的定點指令,在較老(即指令調(diào)度單元206較早調(diào)度)的浮點指令結(jié)束時早已結(jié)束。因此,浮點指令的結(jié)束相對于定點指令是非順序的。
如上所述,完成單元204可以使用完成表205,對取出的指令何時已經(jīng)完成保持跟蹤。在一個實施例中,完成單元204可以通過跟蹤指令,對取出的指令何時已經(jīng)完成保持跟蹤,該指令本文稱為“下一條要完成的指令”。該下一條要完成的指令,可以是完成單元204將要完成的下一個指令。
如在背景信息段所述,完成表的大小與被跟蹤的未完成指令數(shù)對應(yīng)。例如,被跟蹤的未完成指令數(shù)越大,完成表的大小越大。但是,完成表的大小越大,消耗的功率越多和使用更大的硅片面積。雖然較小的完成表縮減硅片面積和功耗,但跟蹤的未完成指令變少,性能也隨之下降。因此,本領(lǐng)域需要能跟蹤更大量未完成指令,但不增加它的大小的完成表。在一個實施例中,完成表通過能跟蹤完成表內(nèi)每一表目中未完成指令的連續(xù)數(shù),借助只存儲未完成指令連續(xù)數(shù)的第一個的有效地址和標(biāo)識(“ITAG”),該完成表能夠跟蹤更大量未完成指令,但不增加它的大小。完成表204通過跟蹤下一條要完成的指令的狀態(tài),可以在完成表205內(nèi)每一表目的未完成指令的連續(xù)數(shù)中,跟蹤每一指令的完成。為了跟蹤下一條要完成的指令的狀態(tài),完成單元206需要確定下一條要完成指令的有效地址和標(biāo)識。完成單元206可以用圖3說明的方法,為順序處理器確定下一條要完成的指令的有效地址和標(biāo)識,或用圖3和4說明的方法,為非順序處理器確定下一條要完成的指令的有效地址和標(biāo)識。
圖3-用于計算下一條要完成指令的有效地址和標(biāo)識的方法圖3是本發(fā)明的一個實施例的流程圖,用于計算下一條要完成指令的有效地址和標(biāo)識。
現(xiàn)在結(jié)合圖2參考圖3,在步驟301,取指令單元201取出指令。在步驟302,取指令單元201把取出的指令的有效地址(“IEA”)和標(biāo)識(“ITAG”),連同指示取出的指令的有效性,發(fā)送至完成單元204。
在步驟303,完成單元204確定,接收的IEA是否與前面取出的IEA相鄰。就是說,完成單元204確定,取出的指令的有效地址,是否緊隨前面取出的指令的有效地址。
如果取出的指令的有效地址,是緊隨前面取出的指令的有效地址,那么,在步驟304,完成單元204確定,完成表205的“Head-1”位置是否已滿?!癏ead-1”位置是指完成表205中的表目,新近用未完成指令連續(xù)數(shù)第一個的有效地址和標(biāo)識,以及指示該指令有效性填充的。“Head”位置是緊隨著的表目,也就是將要填充的表目。
如果完成表205的“Head-1”位置沒有滿,那么,取指令單元201在步驟301取出另一條指令。應(yīng)當(dāng)指出,在方法300的任一步驟的完成之中或完成之后,取指令單元201可以取出下一條指令,并且舉例說明,另一條指令的取出,是在完成表205的“Head-1”位置沒有滿時進行的。
但是,如果完成表205的“Head-1”位置已滿,或者,如果取出的指令的有效地址,不是緊隨前面取出的指令的有效地址,那么,在步驟305,完成單元204確定,完成表205是否已滿。
如果完成表205已滿,那么取指令單元201在步驟306,再取出該指令(指步驟301中取出的指令)。在步驟306再取出該指令時,取指令單元201在步驟302,把取出的指令的有效地址(“IEA”)和標(biāo)識(“ITAG”),連同指示取出的指令的有效性,發(fā)送至完成單元204。
如果完成表205沒有滿,那么在步驟307,完成單元204把接收的有效地址、標(biāo)識、和有效性的指示,寫入完成表205的表目中對應(yīng)的“Head”位置。因為接收的取出指令的有效地址,不是緊隨前面取出的指令的有效地址,該取出的指令可以是下一群相繼的未完成指令,例如在緊隨的超高速緩沖存儲器一行中的第一指令。
在步驟308,完成單元204把“Head”指針前推,指向與下一個空位置對應(yīng)的“Head+1”位置。在一個實施例中,完成單元204可以使指針指向完成表205中下一個空表目。
現(xiàn)在參考步驟301,在取指令單元201取出指令后,取指令單元201在步驟309,把取出的指令寫入指令隊列207。在步驟310,指令調(diào)度單元206把存儲指令隊列207中的指令,發(fā)布至一個或多個執(zhí)行單元211-213。在步驟311,執(zhí)行單元211、212、或213在執(zhí)行指令時,向完成單元204發(fā)送指示。
在步驟312,完成單元204選擇新近被執(zhí)行單元211、212、或213執(zhí)行,或被執(zhí)行單元211、212、或213結(jié)束的指令的標(biāo)識(“ITAG”),這里,該被選擇的ITAG,可以用來計算下一條要完成指令的標(biāo)識(“ITAG”),說明如下。
在順序處理器的實施例中,完成單元204接收最新近結(jié)束,即最后結(jié)束的指令的標(biāo)識(“ITAG”)。該接收的最后結(jié)束指令的標(biāo)識,與完成單元204的機構(gòu)217為計算下一條要完成指令的標(biāo)識而選擇的標(biāo)識對應(yīng),討論如下。在一個實施例中,存儲在鎖存器214、215、或216中已結(jié)束的指令的標(biāo)識(“ITAG”),可以發(fā)送至機構(gòu)217,然后被存儲在完成單元204的鎖存器218中。因為在該處理器110是順序處理器的實施例中,完成單元204可以不包括用于存儲最老的現(xiàn)役浮點指令的鎖存器219。鎖存器219可以用在非順序處理器中,下面還要結(jié)合圖4說明。在該處理器110是非順序處理器的實施例中,機構(gòu)217可以用于從鎖存器214、215、216、或219之一,選擇ITAG,計算下一條要完成的指令的ITAG,現(xiàn)討論如下。如果機構(gòu)217從鎖存器219選擇ITAG(“最老的現(xiàn)役浮點指令”,下面要解釋),然后,選擇的ITAG存儲在鎖存器221中,而不是在鎖存器218中,說明如下。
在非順序處理器的實施例中,完成單元204的機構(gòu)217,選擇新近被執(zhí)行單元211、212、或213執(zhí)行的,或被執(zhí)行單元211、212、或213結(jié)束的指令的標(biāo)識(“ITAG”),如下面結(jié)合圖4的說明。應(yīng)當(dāng)指出,圖4說明用于非順序處理器的步驟312中,定點指令和浮點指令可以不按上述次序執(zhí)行。還應(yīng)當(dāng)指出,這些是舉例說明的,而且圖4可以用于任何能夠不按次序執(zhí)行的兩種不同類型的指令。
在討論圖4之前,先適當(dāng)?shù)赜懻?種定點指令和浮點指令執(zhí)行次序的可能情況。
第一種可能情況是,定點指令和浮點指令同時結(jié)束。例如,假定指令FX0、FX1、FX2、FP1、和FX4在同一周期被指令調(diào)度單元206調(diào)度,并同時結(jié)束。在此情況中,選擇浮點指令FP1的標(biāo)識(“ITAG”)來計算下一條要完成的指令的標(biāo)識(“ITAG”)。選擇浮點指令FP1的標(biāo)識(“ITAG”),部分是由于浮點指令一般比定點指令需要更長的執(zhí)行時間。因此,下一條要完成的指令,很可能是下一個浮點指令。
第二種可能情況是,假如沒有浮點指令正在結(jié)束(由浮點單元,如浮點單元213執(zhí)行的浮點指令尚未完成),和新近已經(jīng)結(jié)束一條定點指令。那么,該新近結(jié)束的定點指令與最老的現(xiàn)役浮點指令比較(指尚未結(jié)束但目前正在被浮點單元執(zhí)行的最早被調(diào)度的浮點指令)。假如最年輕的正在結(jié)束的定點指令(最新近結(jié)束的定點指令),比最老的現(xiàn)役浮點指令更老,那么,選擇該最年輕正在結(jié)束的定點指令的ITAG,用來計算下一條要完成的指令的ITAG。例如,假定指令FX0、FX1、和FP1,在相同的周期中,按上面指出的次序,被指令調(diào)度單元206調(diào)度。定點指令FX0結(jié)束后,跟著是定點指令FX1。浮點指令FP1仍然是現(xiàn)役。在這種情況中,選擇定點指令FX1的標(biāo)識(“ITAG”)來計算下一條要完成的指令的標(biāo)識(“ITAG”)。選擇浮點指令FX1的標(biāo)識(“ITAG”),部分是因為它是已經(jīng)結(jié)束的最老指令。在上述情況中,下一條要完成的指令將是FP1。FP1的ITAG可以用下一條要完成的指令的ITAG確定,說明如下。
第三種可能情況是,假如沒有浮點指令正在結(jié)束(由浮點單元,如浮點單元213執(zhí)行的浮點指令尚未完成),和新近已經(jīng)結(jié)束一條定點指令。那么,該新近結(jié)束的定點指令與最老的現(xiàn)役浮點指令比較(指尚未結(jié)束但目前正在被浮點單元執(zhí)行的最早被調(diào)度的浮點指令)。假如最年輕的正在結(jié)束的定點指令(最新近結(jié)束的定點指令),比最老的現(xiàn)役浮點指令更年輕,那么,選擇該最老的現(xiàn)役浮點指令的ITAG,用來計算下一條要完成的指令的ITAG。例如,假定指令FX0、FP1、和FX1在相同的周期中,按上面指出的次序,被指令調(diào)度單元206調(diào)度。定點指令FX0結(jié)束后,跟著是定點指令FX1。在這種情況中,選擇浮點指令FP1的標(biāo)識(“ITAG”)來計算下一條要完成的指令的標(biāo)識(“ITAG”)。在該情況下,浮點指令FP1的標(biāo)識ITAG,是下一條要完成的指令的ITAG。選擇浮點指令FP1的標(biāo)識(“ITAG”),部分是因為,浮點指令的執(zhí)行一般比定點指令要用更長的時間,還因為它是最老的現(xiàn)役浮點指令。在該情況中,選擇FP1的ITAG為下一條要完成的指令的ITAG。此外,可以保存最年輕的正在結(jié)束的定點指令(最新近結(jié)束的定點指令)的ITAG。該保存的定點指令,可以在下面的情況中使用。
第四種可能情況是,當(dāng)最老的現(xiàn)役浮點指令結(jié)束,且假如沒有更老的浮點指令在輸送(指在一周期中被調(diào)度的浮點指令流)中,假定沒有已經(jīng)結(jié)束的更年輕的定點指令,那么,選擇該保存的最年輕的定點指令的ITAG,來計算下一條要完成的指令的ITAG。如果有任何比保存的定點指令更年輕的已經(jīng)結(jié)束的定點指令,那么,選擇該更年輕定點指令的ITAG,來計算下一條要完成的指令的ITAG。例如,參考第三種情況的例子,當(dāng)浮點指令FP1結(jié)束時,那么用保存的定點指令(在本例中是FX1)的ITAG計算下一條要完成的指令的ITAG,除非有更年輕的定點指令已經(jīng)結(jié)束??梢赃x擇保存的,或可能更年輕的浮點指令的標(biāo)識(“ITAG”),部分是因為它是已經(jīng)結(jié)束的最老的指令。然后,用該保存的,或可能更年輕的浮點指令的ITAG,確定下一條要完成的指令的ITAG。
在上述第四種情況中,使用下面結(jié)合圖4說明的方法,處理器110的機構(gòu)217,可以用于選擇適當(dāng)?shù)腎TAG來計算下一條要完成的指令的ITAG。
現(xiàn)在結(jié)合圖2參考圖4,在步驟401中,完成單元204確定,定點單元211、212是否結(jié)束執(zhí)行一條定點指令。
如果定點單元211、212已經(jīng)結(jié)束執(zhí)行一條定點指令,那么在步驟402,完成單元204確定,是否有最老的現(xiàn)役浮點指令。如果沒有最老的現(xiàn)役浮點指令,那么在步驟403,完成單元204選擇已結(jié)束的定點指令的標(biāo)識(“ITAG”)。
但是,如果有最老的現(xiàn)役浮點指令(存儲在鎖存器219中),那么,在步驟404,完成單元204確定,該已經(jīng)結(jié)束的定點指令,是否比該最老的現(xiàn)役浮點指令更年輕。
如果該已經(jīng)結(jié)束的定點指令,不比該最老的現(xiàn)役浮點指令更年輕,那么在步驟403,完成單元204選擇該結(jié)束的定點指令的標(biāo)識(“ITAG”),計算下一條要完成的指令的ITAG。然后,完成單元204確定,定點單元211、212是否已經(jīng)在步驟401結(jié)束執(zhí)行一條定點指令。
但是,如果結(jié)束的定點指令,比最老的現(xiàn)役浮點指令更年輕,那么在步驟405,完成單元204選擇該最老的現(xiàn)役浮點指令,作為計算下一條要完成的指令I(lǐng)TAG的ITAG。如上所述,在該情況下,最老的現(xiàn)役浮點指令的ITAG,是下一條要完成的指令的ITAG。然后,完成單元204確定,定點單元211、212是否已經(jīng)在步驟401結(jié)束執(zhí)行一條定點指令。
現(xiàn)在回到步驟401,如果定點單元211、212沒有結(jié)束執(zhí)行一條定點指令,那么在步驟406,完成單元204確定,浮點單元213是否已經(jīng)結(jié)束執(zhí)行一條指令。如果浮點單元213沒有結(jié)束執(zhí)行一條浮點指令,那么完成單元204確定,定點單元211、212是否已經(jīng)在步驟401結(jié)束執(zhí)行一條定點指令。
但是,如果浮點單元213已經(jīng)結(jié)束執(zhí)行一條浮點指令,那么在步驟407,完成單元204確定,是否有任何保存的定點指令(指最年輕的正在結(jié)束的定點指令)。
如果沒有保存的定點指令,那么在步驟408,完成單元204選擇已結(jié)束的浮點指令的ITAG,作為要確定下一條要完成的指令I(lǐng)TAG的ITAG。然后,完成單元204確定,定點單元211、212是否已經(jīng)在步驟401結(jié)束執(zhí)行一條定點指令。
但是,如果有保存的定點指令,那么在步驟409,完成單元204確定,是否有任何比該保存的定點指令更年輕的已結(jié)束的定點指令。如果沒有比該保存的定點指令更年輕的已結(jié)束的定點指令,那么在步驟410,完成單元204選擇該保存的定點指令的ITAG,作為要確定下一條要完成的指令I(lǐng)TAG的ITAG。然后,完成單元204確定,定點單元211、212是否已經(jīng)在步驟401結(jié)束執(zhí)行一條定點指令。
但是,如果有比保存的定點指令更年輕的已結(jié)束的定點指令,那么在步驟411,完成單元204選擇該更年輕已結(jié)束的定點指令的ITAG,作為要確定下一條要完成的指令I(lǐng)TAG的ITAG。然后,完成單元204確定,定點單元211、212是否已經(jīng)在步驟401結(jié)束執(zhí)行一條定點指令。
現(xiàn)在回到圖3,在步驟313,完成單元204確定,選擇的ITAG是否為最老的現(xiàn)役浮點指令的ITAG。在一個實施例中,機構(gòu)217包含確定被選擇的ITAG是否為最老現(xiàn)役浮點指令的ITAG的邏輯。
如果選擇的ITAG不是最老現(xiàn)役浮點指令的ITAG,那么,完成單元204可以在步驟314,通過把邏輯值“1”加到被選擇標(biāo)識的標(biāo)識上,計算下一條要完成的指令的標(biāo)識。在一個實施例中,完成單元204可以通過增量器220,把選擇的標(biāo)識(“ITAG”)增加邏輯值1,來計算下一條要完成的指令的標(biāo)識,并把結(jié)果存儲在鎖存器221中。鎖存器221可以用于存儲下一條要完成的指令的ITAG。
但是,如果選擇的ITAG是最老現(xiàn)役浮點指令的ITAG,那么,完成單元204可以在步驟315中,通過令選擇的ITAG(最老現(xiàn)役浮點指令的ITAG)為下一條要完成的指令的ITAG,來計算下一條要完成的指令的標(biāo)識。在一個實施例中,可以用機構(gòu)217把選擇的ITAG(最老現(xiàn)役浮點指令的ITAG)存儲在鎖存器221中。
在步驟316,完成單元204確定,選擇的指令(指機構(gòu)217選擇的ITAG標(biāo)識的指令),是否比完成表205“Tail+1”位置中未完成指令連續(xù)數(shù)的第一個對應(yīng)的指令更老。“Tail”位置可以指完成表205中最老的表目。“Tail+1”位置可以指完成表205中次最老的表目。在一個實施例中,完成單元204可以通過比較器222,把Tail+1位置中的Base ITAG,與選擇的指令的ITAG比較,確定最后結(jié)束的指令,是否比完成表205“Tail+1”位置中未完成指令連續(xù)數(shù)的第一個對應(yīng)的指令更老。比較結(jié)果可以存儲在鎖存器223、224、和225中。
如果選擇的指令,比完成表205“Tail+1”位置中未完成指令連續(xù)數(shù)第一個對應(yīng)的指令更老,那么在步驟317,完成單元204選擇完成表205中Tail位置表目的Base ITAG和Base IEA。如果選擇的指令,比完成表205“Tail+1”位置中未完成指令連續(xù)數(shù)第一個對應(yīng)的指令更老,那么選擇的指令,與完成表205的Tail位置中代表的指令之一對應(yīng)。在一個實施例中,完成單元204可以通過把完成表205中Tail和Tail+1兩個位置的Base ITAG,輸入復(fù)用器226,以選擇完成表205中Tail位置表目中的Base ITAG。復(fù)用器226通過復(fù)用器226選擇從鎖存器227接收適當(dāng)?shù)闹?,?或邏輯值“1”的輸入,選擇適當(dāng)?shù)腎TAG(在本例中,是完成表205的Tail位置的Base ITAG)。然后,復(fù)用器226選擇的ITAG,可以存儲在鎖存器227中。在一個實施例中,完成單元204可以通過把完成表205中Tail和Tail+1兩個位置的Base IEA,輸入復(fù)用器228,以選擇完成表205中Tail位置表目中的Base IEA。復(fù)用器228通過復(fù)用器228選擇從鎖存器223接收適當(dāng)?shù)闹?,?或邏輯值“1”的輸入,選擇適當(dāng)?shù)腎EA(在本例中,是完成表205的Tail位置的Base IEA)。然后,復(fù)用器228選擇的ITAG,可以存儲在鎖存器229中。
在步驟318,完成單元204計算地址偏移。在一個實施例中,完成單元204從步驟314或315計算的下一條要完成的指令的ITAG中,減去選擇的Base ITAG,計算地址偏移。在一個實施例中,完成單元204通過減法器230,從步驟314或315中計算的下一條要完成指令的ITAG,減去選擇的Base ITAG,計算地址偏移。然后,該地址偏移可以存儲在鎖存器231內(nèi)。
在步驟319,完成單元204計算下一條要完成的指令的有效地址。在一個實施例中,完成單元204通過把步驟318中計算的地址偏移,與選擇的Base IEA相加,計算下一條要完成的指令的有效地址。在一個實施例中,完成單元204通過加法器232,把步驟318中計算的地址偏移,與選擇的Base IEA相加,計算下一條要完成的指令的有效地址。然后,該下一條要完成的指令的有效地址,可以存儲在鎖存器233中。
在計算下一條要完成的指令的有效地址后,取指令單元201在步驟301取出另一條指令。應(yīng)當(dāng)指出,取指令單元201可以在方法300的任一步驟之中或之后,取出下一條指令,并舉例說明,取出是在計算下一條要完成的指令的有效地址時進行的。
現(xiàn)在回到步驟316,如果選擇的指令,不比完成表“Tail+1”位置中未完成指令連續(xù)數(shù)第一個對應(yīng)的指令更老,那么在步驟320,完成單元204選擇完成表205的Tail+1位置表目中的Base ITAG和Base IEA。如果選擇的指令,不比完成表“Tail+1”位置中未完成指令連續(xù)數(shù)的第一個對應(yīng)的指令更老,那么,選擇的指令與完成表205的Tail+1位置中代表的指令之一對應(yīng)。在一個實施例中,完成單元204可以通過把完成表205中Tail和Tail+1兩個位置的Base ITAG,輸入復(fù)用器226,以選擇完成表205中Tail+1位置表目中的Base ITAG。復(fù)用器226通過復(fù)用器226選擇從鎖存器225接收適當(dāng)?shù)闹?,?或邏輯值“1”的輸入,選擇適當(dāng)?shù)腎TAG(在本例中,是完成表205的Tail+1位置的Base ITAG)。然后,復(fù)用器226選擇的ITAG,可以存儲在鎖存器227中。在一個實施例中,完成單元204可以通過把完成表205中Tail和Tail+1兩個位置的BaseIEA,輸入復(fù)用器228,以選擇完成表205中Tail+1位置表目中的BaseIEA。復(fù)用器228通過復(fù)用器228選擇從鎖存器223接收適當(dāng)?shù)闹担?或邏輯值“1”的輸入,選擇適當(dāng)?shù)腎EA(在本例中,是完成表205的Tail+1位置的Base IEA)。然后,復(fù)用器228選擇的ITAG,可以存儲在鎖存器229中。
在步驟321,完成單元204計算地址偏移。在一個實施例中,完成單元204從步驟314或315計算的下一條要完成的指令的ITAG中,減去選擇的Base ITAG,計算地址偏移。在一個實施例中,完成單元204通過減法器230,從步驟314或315中計算的下一條要完成的指令的ITAG中,減去選擇的Base ITAG,計算地址偏移。然后,該地址偏移可以存儲在鎖存器231內(nèi)。
在步驟322,完成單元204計算下一條要完成的指令的有效地址。在一個實施例中,完成單元204通過把步驟321中計算的地址偏移,與選擇的Base IEA相加,計算下一條要完成的指令的有效地址。在一個實施例中,完成單元204通過加法器232,把步驟321中計算的地址偏移,與選擇的Base IEA相加,計算下一條要完成的指令的有效地址。然后,該下一條要完成的指令的有效地址,可以存儲在鎖存器233中。
在步驟323,完成單元204對完成表205位于Tail位置的表目,解除分配。完成單元204對完成表205位于Tail位置的表目,解除分配,是因為該表目代表的所有指令的連續(xù)數(shù)已經(jīng)完成。在一個實施例中,完成單元204的邏輯單元234從鎖存器224接收適當(dāng)?shù)闹?,?或邏輯值“1”時,對完成表205位于Tail位置的表目,解除分配。
在對完成表205位于Tail位置的表目解除分配后,取指令單元201在步驟301取出另一條指令。應(yīng)當(dāng)指出,在方法300的任一步驟的完成之中或完成之后,取指令單元201可以取出下一條指令,并且舉例說明,取出是在對完成表205位于Tail位置的表目解除分配時進行的。
應(yīng)當(dāng)指出,為按順序的或不按順序的處理器之一計算下一條要完成指令的有效地址和指示(“ITAG”)所使用的上述方法,可以用來處理例外的情形。在執(zhí)行單元211、212、或213結(jié)束一條指令的執(zhí)行時,執(zhí)行單元211、212、或213可以報告存在例外的條件。然后,完成單元204可以用上述方法,為按順序的或不按順序的處理器之一計算下一條要完成的指令的有效地址和指示(“ITAG”)。下一條要完成的指令的有效地址和ITAG,可以作為例外條件已經(jīng)處理后送回的有效地址和ITAG而保存起來。
還應(yīng)當(dāng)指出,方法300可以包括為清楚起見沒有畫出的其他和/或另外的步驟。還應(yīng)當(dāng)指出,方法300可以按不同于給出次序的次序執(zhí)行,且圖3和4討論中給出的次序,是示例性的。還應(yīng)當(dāng)指出,方法300中包含的步驟,可按同時方式執(zhí)行。
雖然本方法、完成表、和處理器,是結(jié)合若干個實施例說明的,但這不意味限制在本文闡明的特定形式,相反,應(yīng)當(dāng)認(rèn)為,附于后面的權(quán)利要求書規(guī)定的本發(fā)明的精神和范圍中,合理地包括那些變化、修改、和等價的內(nèi)容。應(yīng)當(dāng)指出,標(biāo)題僅用于組織的目的,不是對說明或權(quán)利要求的限制。
權(quán)利要求
1.一種完成表,包括多個表目,其中,所述多個表目的每一個跟蹤未完成指令的連續(xù)數(shù),其中,所述多個表目的每一個用于存儲所述未完成指令連續(xù)數(shù)第一個的指令地址和所述未完成指令連續(xù)數(shù)所述第一個的標(biāo)識。
2.按照權(quán)利要求1的完成表,其中所述未完成指令的連續(xù)數(shù)包括超高速緩沖存儲器一行的長度。
3.按照權(quán)利要求1的完成表,其中所述指令地址是有效地址。
4.按照權(quán)利要求1的完成表,其中在所述完成表的選擇表目中下一條要完成的指令的指令地址和標(biāo)識是用所述未完成指令連續(xù)數(shù)的所述第一個的所述指令地址和所述未完成指令連續(xù)數(shù)的所述第一個的所述標(biāo)識分別計算的。
5.按照權(quán)利要求4的完成表,其中所述表目是根據(jù)執(zhí)行單元上最老的現(xiàn)役指令和已結(jié)束指令之一選擇的。
6.一種跟蹤完成表中更大量未完成指令的方法,包括如下步驟向第一和第二執(zhí)行單元發(fā)布指令;在所述第一和第二執(zhí)行單元之一上選擇已結(jié)束指令和現(xiàn)役指令之一的標(biāo)識;用所述選擇指令的所述標(biāo)識計算下一條要完成的指令的標(biāo)識;選擇位于所述完成表表目中未完成指令連續(xù)數(shù)的第一個的指令地址和標(biāo)識;和用所述下一條要完成指令的所述標(biāo)識和所述完成表所述表目中所述未完成指令連續(xù)數(shù)所述第一個的所述選擇的指令地址及標(biāo)識計算所述下一條要完成指令的指令地址。
7.按照權(quán)利要求6的方法,還包括步驟用位于所述完成表所述表目中所述未完成指令連續(xù)數(shù)所述第一個的所述選擇的標(biāo)識和所述下一條要完成指令的所述標(biāo)識計算地址偏移。
8.按照權(quán)利要求7的方法,其中,如果所述選擇的指令比位于所述完成表尾位置前一個的表目中未完成指令連續(xù)數(shù)的第一個更老,則所述未完成指令連續(xù)數(shù)所述第一個的所述選擇的指令地址及標(biāo)識從位于所述完成表的所述尾位置的表目中選擇。
9.按照權(quán)利要求7的方法,其中,如果所述選擇的指令不比位于所述完成表尾位置前一個的位于表目中未完成指令連續(xù)數(shù)的第一個更老,則所述未完成指令連續(xù)數(shù)所述第一個的所述選擇的指令地址及標(biāo)識從位于所述完成表所述尾位置前一個的所述表目中選擇。
10.按照權(quán)利要求7的方法,還包括步驟用所述計算的地址偏移和所述選擇的指令地址計算所述下一條要完成的指令的指令地址。
11.按照權(quán)利要求10的方法,其中所述下一條要完成指令的所述指令地址是通過把所述計算的地址偏移與所述選擇的指令地址相加來計算的。
12.按照權(quán)利要求9的方法,還包括步驟如果所述選擇的指令不比位于所述完成表所述尾位置前一個表目中所述未完成指令連續(xù)數(shù)所述第一個更老,則對位于所述完成表所述尾位置的所述表目解除分配。
13.按照權(quán)利要求6的方法,其中所述選擇的指令是在所述第一和所述第二執(zhí)行單元上最新近結(jié)束的指令。
14.按照權(quán)利要求13的方法,其中所述下一條要完成的指令的所述標(biāo)識是通過在所述選擇的指令的所述標(biāo)識上加上邏輯值1來計算的。
15.按照權(quán)利要求6的方法,其中所述第一執(zhí)行單元是浮點單元,其中所述第二執(zhí)行單元是定點單元。
16.按照權(quán)利要求15的方法,其中,如果在所述浮點單元上執(zhí)行的所述選擇的指令與在所述定點單元上執(zhí)行的指令同時結(jié)束,則所述選擇的指令是在所述浮點單元上已結(jié)束的指令,其中,所述下一條要完成的指令的所述標(biāo)識是通過在所述選擇的指令的所述標(biāo)識上加上邏輯值1來計算的。
17.按照權(quán)利要求15的方法,其中,如果在所述浮點單元上沒有指令正在結(jié)束和所述選擇的指令比所述浮點單元上最老的現(xiàn)役指令更老,則所述選擇的指令是在所述定點單元上已結(jié)束的指令,其中,所述下一條要完成的指令的所述標(biāo)識是通過在所述選擇的指令的所述標(biāo)識上加上邏輯值1來計算的。
18.按照權(quán)利要求15的方法,其中,如果在所述浮點單元上沒有指令正在結(jié)束和所述選擇的指令比所述浮點單元上最老的現(xiàn)役指令更年輕,則所述選擇的指令是在所述浮點單元上所述最老的現(xiàn)役指令,其中,在所述定點單元上最年輕的正在結(jié)束的指令被保存,其中,所述下一條要完成的指令的所述標(biāo)識是所述選擇的指令的所述標(biāo)識。
19.按照權(quán)利要求18的方法,其中,如果在所述浮點單元上所述最老的現(xiàn)役指令已經(jīng)結(jié)束,和在所述浮點單元上沒有比所述浮點單元上所述已結(jié)束的最老現(xiàn)役指令更老的指令,又如果在所述定點單元上沒有其他更年輕的指令,則所述選擇的指令是所述保存的指令,其中,所述下一條要完成的指令的所述標(biāo)識是通過在所述選擇的指令的所述標(biāo)識上加上邏輯值1來計算的。
20.按照權(quán)利要求18的方法,其中,如果在所述浮點單元上所述最老的現(xiàn)役指令已經(jīng)結(jié)束,和在所述浮點單元上沒有比所述浮點單元上所述已結(jié)束的最老現(xiàn)役指令更老的指令,又如果在所述定點單元上最年輕的正在結(jié)束的指令比所述保存的指令更年輕,則所述選擇的指令是所述定點單元上所述最年輕的正在結(jié)束的指令,其中,所述下一條要完成的指令的所述標(biāo)識是通過在所述選擇的指令的所述標(biāo)識上加上邏輯值1來計算的。
21.一種處理器,包括取指令單元,用于取出指令;與所述取指令單元耦合的指令調(diào)度單元,其中,所述取指令單元還用于向所述指令調(diào)度單元發(fā)布所述取出的指令,其中,所述指令調(diào)度單元包括指令隊列,用于存儲所述取出的指令;與所述指令調(diào)度單元耦合的第一和第二執(zhí)行單元,其中所述調(diào)度單元用于把所述存儲的取出的指令調(diào)度至所述第一和所述第二執(zhí)行單元;和與所述取指令單元耦合的完成單元,其中,所述取指令單元還用于向所述完成單元發(fā)布指令地址和每一個所述取出的指令的標(biāo)識,其中,所述完成單元用于對所述取出的指令何時已經(jīng)完成保持跟蹤,其中,所述完成單元包括完成表,其中,所述完成表包括多個表目,其中,每一所述多個表目跟蹤未完成指令的連續(xù)數(shù),其中,每一所述多個表目用于存儲所述未完成指令連續(xù)數(shù)的第一個的指令地址和所述未完成指令連續(xù)數(shù)所述第一個的標(biāo)識。
22.按照權(quán)利要求21的處理器,其中所述完成單元包括用于選擇標(biāo)識的邏輯,該邏輯在所述第一和所述第二執(zhí)行單元之一上選擇已結(jié)束指令和現(xiàn)役指令之一的標(biāo)識;用于計算標(biāo)識的邏輯,該邏輯使用所述選擇的指令的所述標(biāo)識計算下一條要完成的指令的標(biāo)識;用于選擇指令地址和標(biāo)識的邏輯,該邏輯選擇位于所述完成表表目中未完成指令連續(xù)數(shù)第一個的指令地址和標(biāo)識;和用于計算指令地址的邏輯,該邏輯使用所述下一條要完成的指令的所述標(biāo)識和位于所述完成表所述表目中所述未完成指令連續(xù)數(shù)所述第一個的所述選擇的指令地址及標(biāo)識計算所述下一條要完成的指令的指令地址。
23.按照權(quán)利要求22的處理器,其中所述完成單元還包括用于計算地址偏移的邏輯,該邏輯使用位于所述完成表所述表目中所述未完成指令連續(xù)數(shù)所述第一個所述選擇的標(biāo)識和所述下一條要完成的指令的所述標(biāo)識計算地址偏移。
24.按照權(quán)利要求23的處理器,其中,如果所述選擇的指令比位于所述完成表尾位置前一個的表目中未完成指令連續(xù)數(shù)的第一個更老,則所述未完成指令連續(xù)數(shù)所述第一個的所述選擇的指令地址及標(biāo)識從位于所述完成表的所述尾位置的表目中選擇。
25.按照權(quán)利要求23的處理器,其中,如果所述選擇的指令不比位于所述完成表尾位置前一個的位于表目中未完成指令連續(xù)數(shù)的第一個更老,則所述未完成指令連續(xù)數(shù)所述第一個的所述選擇的指令地址及標(biāo)識從位于所述完成表所述尾位置前一個的所述表目中選擇。
26.按照權(quán)利要求23的處理器,其中,所述完成單元還包括用于計算指令地址的邏輯,該邏輯使用所述計算的地址偏移和所述選擇的指令地址計算所述下一條要完成的指令的指令地址。
27.按照權(quán)利要求26的處理器,其中所述下一條要完成的指令的所述指令地址是通過在所述選擇的指令地址上加上所述計算的地址偏移計算的。
28.按照權(quán)利要求25的處理器,其中,所述完成單元還包括用于解除分配的邏輯,如果所述選擇的指令不比位于所述完成表所述尾位置前一個的表目中所述未完成指令連續(xù)數(shù)所述第一個更老,則該邏輯對位于所述完成表所述尾位置的所述表目解除分配。
29.按照權(quán)利要求22的處理器,其中所述選擇的指令是在所述第一和所述第二執(zhí)行單元之一上最新近結(jié)束的指令。
30.按照權(quán)利要求29的處理器,其中所述下一條要完成的指令的所述標(biāo)識是通過在所述選擇的指令的所述標(biāo)識上加上邏輯值1來計算的。
31.按照權(quán)利要求22的處理器,其中所述第一執(zhí)行單元是浮點單元,其中所述第二執(zhí)行單元是定點單元。
32.按照權(quán)利要求31的處理器,其中,如果在所述浮點單元上執(zhí)行的所述選擇的指令與在所述定點單元上執(zhí)行的指令同時結(jié)束,則所述選擇的指令是在所述浮點單元上已結(jié)束的指令,其中,所述下一條要完成的指令的所述標(biāo)識是通過在所述選擇的指令的所述標(biāo)識上加上邏輯值1來計算的。
33.按照權(quán)利要求31的處理器,其中,如果在所述浮點單元上沒有指令正在結(jié)束,和所述選擇的指令比所述浮點單元上最老的現(xiàn)役指令更老,則所述選擇的指令是在所述定點單元上已結(jié)束的指令,其中,所述下一條要完成的指令的所述標(biāo)識是通過在所述選擇的指令的所述標(biāo)識上加上邏輯值1來計算的。
34.按照權(quán)利要求31的處理器,其中,如果在所述浮點單元上沒有指令正在結(jié)束,和所述選擇的指令比所述浮點單元上最老的現(xiàn)役指令更年輕,則所述選擇的指令是在所述浮點單元上所述最老的現(xiàn)役指令,其中,在所述定點單元上最年輕的正在結(jié)束的指令被保存,其中,所述下一條要完成的指令的所述標(biāo)識是所述選擇的指令的所述標(biāo)識。
35.按照權(quán)利要求34的處理器,其中,如果在所述浮點單元上所述最老的現(xiàn)役指令已經(jīng)結(jié)束,和在所述浮點單元上沒有比所述浮點單元上所述已結(jié)束的最老現(xiàn)役指令更老的指令,又如果在所述定點單元上沒有其他更年輕的指令,則所述選擇的指令是所述保存的指令,其中,所述下一條要完成的指令的所述標(biāo)識是通過在所述選擇的指令的所述標(biāo)識上加上邏輯值1來計算的。
36.按照權(quán)利要求34的處理器,其中,如果在所述浮點單元上所述最老的現(xiàn)役指令已經(jīng)結(jié)束,和在所述浮點單元上沒有比所述浮點單元上所述已結(jié)束的最老現(xiàn)役指令更老的指令,又如果在所述定點單元上最年輕的正在結(jié)束的指令比所述保存的指令更年輕,則所述選擇的指令是所述定點單元上所述最年輕的正在結(jié)束的指令,其中,所述下一條要完成的指令的所述標(biāo)識是通過在所述選擇的指令的所述標(biāo)識上加上邏輯值1來計算的。
全文摘要
一種用于跟蹤更大量未完成指令的方法、完成表、和處理器。該完成表可以包括多個表目,其中每一表目跟蹤未完成指令的一個連續(xù)數(shù)。每一表目可以用于存儲未完成指令的連續(xù)數(shù)的第一個。通過能跟蹤完成表每一表目中未完成指令的連續(xù)數(shù),例如超高速緩沖存儲器一行的長度,借助只存儲該表目中未完成指令連續(xù)數(shù)的第一個的指令地址和標(biāo)識,該完成表能跟蹤更大量未完成指令,但不增加它的大小。
文檔編號G06F12/08GK1680917SQ200510009310
公開日2005年10月12日 申請日期2005年2月18日 優(yōu)先權(quán)日2004年4月8日
發(fā)明者蘇珊·E·艾爾森, 恒·Q·樂, 戴維·A·魯伊克, 鄧·Q·古揚 申請人:國際商業(yè)機器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1