專利名稱:用于將條件指令擴(kuò)展為無條件指令與選擇指令的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明大體上涉及計(jì)算機(jī)系統(tǒng),且更明確地說,涉及一種用于將條件指令擴(kuò)展為非 條件指令與選擇指令的方法和系統(tǒng)。
背景技術(shù):
處理器管線由許多級構(gòu)成,其中每一級執(zhí)行與指令相關(guān)的特定功能。每一級稱為管 級或管段。所述級連接在一起以形成管線。指令在管線的一個末端處進(jìn)入且在另一末端 處退出。指令依序在流中流動穿過管線級。所述級經(jīng)布置以使得若干級可同時處理若干 指令。與一次處理一個指令相比,同時在不同管線級處處理多個指令允許處理器較快速 地處理指令,進(jìn)而改進(jìn)處理器的執(zhí)行速度。
在處理器內(nèi),可能有多個管理處理指令。個別管線可執(zhí)行唯一處理器功能。舉例來 說,處理器可能具有一個管線用于執(zhí)行加載/存儲指令且另一管線用于執(zhí)行基于整數(shù)或邏 輯的指令。通過基于指令的功能性而分離管線,處理器可在執(zhí)行指令時更有效地利用其 資源。
當(dāng)處理器處理指令時,聚集執(zhí)行指令所必要的信息。所述信息可與指令中的每一操 作數(shù)相關(guān)。在處理器內(nèi),可針對每一指令同時聚集的信息量可由處理器的寄存器堆內(nèi)的 端口數(shù)目限制。處理器的寄存器堆可由可讀取和寫入存取的較大陣列構(gòu)成。處理器所支 持的讀取端口數(shù)目可由處理器內(nèi)的可用硬件空間以及每一讀取端口所必要的額外功率 限制。處理器利用每一讀取端口以檢索與指令中的每一操作數(shù)相關(guān)的信息。
隨著將較復(fù)雜的指令添加到處理器的指令集,可能需要額外讀取端口以便在執(zhí)行指 令時同時針對指令中的所有操作數(shù)檢索信息。通常,較新指令可能具有比讀取端口多的 操作數(shù)。如果處理器不具有足夠的讀取端口,那么所述指令可能需要額外處理器循環(huán)來 執(zhí)行。又,處理器的效率可能會受到影響。
可能受與讀取端口數(shù)目限制相關(guān)的執(zhí)行延遲影響的一種類型的指令是條件指令。條 件指令通常由條件部分和非條件部分(例如邏輯函數(shù)、算數(shù)函數(shù)等)組成。歸因于缺少 讀取端口,具有比讀取端口多的操作數(shù)的條件指令可能需要多個處理器循環(huán)來執(zhí)行。
發(fā)明內(nèi)容
因此,所述行業(yè)中需要加速執(zhí)行具有比可用讀取端口多的操作數(shù)的條件指令的方 式??赏ㄟ^分離指令的條件部分與非條件函數(shù)來加速指令執(zhí)行。所述分離形成兩個較小 指令,其每一者需要比原始條件指令少的讀取端口??赏瑫r在不同管線中執(zhí)行單獨(dú)指令 的執(zhí)行,以便利用處理器的并行處理能力。
本發(fā)明揭示一種在管線處理器內(nèi)擴(kuò)展具有多個操作數(shù)的條件指令的方法,所述管線 處理器具有多個管線。所述方法在發(fā)布級之前識別所述條件指令且確定所述多個操作數(shù)
是否超過預(yù)定閾值。所述方法將所述條件指令擴(kuò)展為非條件指令和選擇指令。所述方法 進(jìn)一步在單獨(dú)管線中執(zhí)行所述非條件指令和所述選擇指令。
本發(fā)明揭示一種在管線處理器內(nèi)擴(kuò)展具有多個操作數(shù)的條件指令的方法。所述方法 在預(yù)解碼級期間識別所述條件指令具有超過預(yù)定閾值的操作數(shù)。所述方法當(dāng)在發(fā)布級中 處理所述條件指令時將所述指令擴(kuò)展為非條件指令和選擇指令。所述方法進(jìn)一步在執(zhí)行 級期間執(zhí)行所述非條件指令和所述選擇指令。
本發(fā)明揭示一種在管線處理器內(nèi)擴(kuò)展具有多個操作數(shù)的條件指令的方法。所述方法 在發(fā)布級之前識別所述條件指令且確定所述多個操作數(shù)是否超過預(yù)定閾值。所述方法將 所述條件指令擴(kuò)展為非條件指令和選擇指令。所述方法進(jìn)一步執(zhí)行所述非條件指令和所 述選擇指令。
本發(fā)明揭示一種具有預(yù)解碼邏輯電路的管線處理器。所述預(yù)解碼邏輯電路經(jīng)配置以 識別條件指令是否具有超過預(yù)定閾值的操作數(shù)。所述預(yù)解碼邏輯電路與發(fā)布邏輯電路通 信,所述發(fā)布邏輯電路經(jīng)配置以接收所述所識別的條件指令,且擴(kuò)展所述所識別的條件 指令。所述發(fā)布邏輯電路與執(zhí)行單元通信,所述執(zhí)行單元經(jīng)配置以執(zhí)行所述經(jīng)擴(kuò)展的條 件指令。
將從以下詳細(xì)描述和附圖中明白本發(fā)明的較完整理解以及本發(fā)明的另外特征和優(yōu)點(diǎn)。
圖l展示使用本發(fā)明的實(shí)施例的處理器的高級邏輯硬件框圖。 圖2顯示圖1的CPU的上部和下部管線的較詳細(xì)框圖。 圖3A顯示由圖1的處理器執(zhí)行的示范性指令群組。 圖3B顯示示范性經(jīng)擴(kuò)展指令群組。圖4A展示由圖1的處理器執(zhí)行的另一示范性指令群組。 圖4B展示另一示范性經(jīng)擴(kuò)展指令群組。
圖5展示圖3A到3B的示范性指令群組在通過圖1的處理器的各種級執(zhí)行時的時序圖。
圖6展示說明通過圖1的處理器的上部和下部管線的示范性指令流的流程圖。
具體實(shí)施例方式
下文結(jié)合附圖陳述的詳細(xì)描述既定作為對本發(fā)明的多個實(shí)施例的描述,且不希望代 表其中可實(shí)踐本發(fā)明的僅有實(shí)施例。所述詳細(xì)描述包括特定細(xì)節(jié)以用于提供對本發(fā)明的 透徹理解。然而,所屬領(lǐng)域的技術(shù)人員將明白,可在沒有這些特定細(xì)節(jié)的情況下實(shí)踐本 發(fā)明。在一些例子中,以框圖形式展示眾所周知的結(jié)構(gòu)和組件以免混淆本發(fā)明的概念。 可能僅僅出于方便和清楚起見而使用首字母縮寫詞和其它描述性術(shù)語,且其并不希望限 制本發(fā)明的范圍。
圖1展示利用如下文所描述的本發(fā)明的一個實(shí)施例的超標(biāo)量處理器100的高級視 圖。處理器100具有中央處理單元(CPU) 102,其經(jīng)由專用高速總線104耦合到指令 高速緩沖存儲器106。指令高速緩沖存儲器106還經(jīng)由通用總線110耦合到存儲器108。 CPU 102具有上部管線150,其耦合到下部管線160和165。 CPU 102控制將指令從存儲 器108加載到指令高速緩沖存儲器106中。如所屬領(lǐng)域的技術(shù)人員了解的,指令高速緩 沖存儲器106可為經(jīng)設(shè)計(jì)以橋接存儲器108與處理器IOO之間的速度間隙的專門存儲器。 將從存儲器108獲取的指令放置在較快速的指令高速緩沖存儲器106中,所述較快速的 指令高速緩沖存儲器106能夠以處理器時鐘速度來讀取。在向指令高速緩沖存儲器106 加載指令之后,CPU102經(jīng)由高速總線104來存取所述指令。將指令從指令高速緩沖存 儲器106加載到上部管線150中。在上部管線150中處理指令之后,將所述指令發(fā)送到 下部管線160或165以供進(jìn)一步處理。如圖2的論述中描述,上部管線150可含有邏輯 電路,其可識別具有超過預(yù)定閾值的操作數(shù)的條件指令。在已經(jīng)識別了這些條件指令之 后,處理器IOO可根據(jù)本發(fā)明的一個實(shí)施例來處理所述條件指令。
指令以順序編程次序離開上部管線150。在離開上部管線150之后,可在下部管線 160或165中重新布置所述指令以實(shí)現(xiàn)較有效的處理。在上部管線150中對指令執(zhí)行的 一些示范性處理功能可包括獲取指令、對準(zhǔn)指令、解碼指令、將指令發(fā)布到下部管線160 或165等。在下部管線160和165內(nèi),指令處理可包括跟蹤指令、檢索操作數(shù)信息以用 于指令執(zhí)行、執(zhí)行指令、記錄指令結(jié)果等。下部管線160和165可含有各種執(zhí)行單元(EU) 130,例如算術(shù)邏輯單元、浮點(diǎn)單 元、存儲單元、加載單元等。舉例來說,EU130可具有用于執(zhí)行廣泛范圍的算術(shù)功能的 算術(shù)邏輯單元,所述算術(shù)功能例如為整數(shù)相加、整數(shù)相減、整數(shù)相乘、逐位邏輯運(yùn)算(例 如,AND、 NOT、 OR、 XOR)、位移位等?;蛘?,EU 130可具有用于執(zhí)行加載/存儲操 作(例如MOV、 LOAD等)的執(zhí)行單元。為了增加處理器100的效率,下部管線160 和165可經(jīng)組織以執(zhí)行某些功能。舉例來說,下部管線160可含有執(zhí)行算術(shù)和邏輯指令 的EU130,而下部管線165可含有執(zhí)行加載/存儲指令的EU130。通過將某指令功能性 隔離到單獨(dú)下部管線160或165中,可能不需要重復(fù)的EU 130。
如所屬領(lǐng)域的技術(shù)人員可了解的,管線級可具有經(jīng)設(shè)計(jì)以保持指令的寄存器或寄存 器群組。當(dāng)指令進(jìn)入特定級時,處理器100將所述指令加載到鏈接到所述級的寄存器或 寄存器群組中。當(dāng)指令保持在每一級內(nèi)的寄存器或寄存器群組中時,邏輯電路可執(zhí)行某 些操作,這取決于所述指令。在邏輯電路已經(jīng)執(zhí)行了既定操作之后,接著將所述指令繼 續(xù)傳遞到下一順序級。
圖2顯示CPU 102的上部管線150的較詳細(xì)框圖。上部管線150具有獲取邏輯電路 202,其通過高速總線104耦合到指令高速緩沖存儲器106。獲取邏輯電路202還耦合到 預(yù)解碼邏輯電路201和獲取級203。獲取級203耦合到解碼級205,所述解碼級205又 耦合到發(fā)布級207。耦合到解碼級205的是解碼邏輯電路204。類似地,發(fā)布級207耦 合到發(fā)布邏輯電路206。在發(fā)布級207內(nèi)的是若干指令隊(duì)列(為了易于說明起見未圖示), 其在指令被發(fā)布到下部管線160和165之前保持所述指令。指令隊(duì)列可經(jīng)組織以接受將 在下部管線160或165中的一者中處理的指令。如所屬領(lǐng)域的技術(shù)人員了解的,指令隊(duì) 列充當(dāng)FIFO (先進(jìn)先出)緩沖器,其在指令被發(fā)布之前以順序次序保持所述指令。
指令進(jìn)入上部管線150且從獲取級203移動穿過發(fā)布級207。在指令離開發(fā)布級207 之后,指令在下部管線160或下部管線165中執(zhí)行。在下部管線160內(nèi)的是執(zhí)行級220 和EU 130。下部管線165具有執(zhí)行級225和EU 130。下部管線160和165分別存取寄 存器堆230或235。在一個實(shí)施例中,寄存器堆230和235可為彼此的鏡像。在一個實(shí) 施例中,寄存器堆230和235可具有三個讀取端口以用于當(dāng)指令在執(zhí)行級220或225中 執(zhí)行時提供指令操作數(shù)信息。
在上部管線150中,獲取邏輯電路202確定并隨后獲取指令。作為獲取過程的部分, 處理器IOO首先確定所述指令是否已經(jīng)在指令高速緩沖存儲器106中。如果指令尚未在 指令高速緩沖存儲器106中,那么處理器IOO從存儲器108中檢索指令并將其加載到指 令高速緩沖存儲器106中。預(yù)解碼邏輯電路201與獲取邏輯電路202介接以在將指令加
7載到指令高速緩沖存儲器106中之前確定關(guān)于所述指令的特性信息。舉例來說,預(yù)解碼 邏輯電路201可識別指令為操作數(shù)超過預(yù)定閾值的條件指令,之后將所述條件指令加載 到指令高速緩沖存儲器106中。在此實(shí)例中,預(yù)解碼邏輯電路201可在指令高速緩沖存 儲器106中對所述指令"加標(biāo)簽",因此識別所述指令具有此特性信息。所述特性信息 可由上部管150內(nèi)的其它邏輯電路使用以加速指令的處理。
在指令高速緩沖存儲器106中,將指令分組到稱為高速緩沖存儲器線的區(qū)段中。每 一高速緩沖存儲器線可含有多個指令。在每一高速緩沖存儲器線內(nèi),可保存與指令相關(guān) 的額外信息。可--次若干指令地從指令高速緩沖存儲器106獲取指令。在指令由獲取邏 輯電路202獲取之后,將指令發(fā)送到解碼級205。
在解碼級205中,由解碼邏輯電路204解碼所述指令以識別所述指令的所有詳情。 如先前提及的,預(yù)解碼邏輯電路201可識別所述指令的一般特性。在解碼級205中,識 別與指令相關(guān)的額外信息。舉例來說,在解碼級205中通過解碼邏輯電路204識別指令 類型(即,ADDEQ、 SUBEQ、 AND等)、待用指令尋址的特定寄存器和指令的任何相 依性。在解碼級205期間檢索或識別的信息允許處理器100確定下部管線160或165中 的哪一者將接收所述指令以用于進(jìn)一步處理。在解碼級205中處理指令之后,指令移動 到發(fā)布級207。
在發(fā)布級207中,發(fā)布邏輯電路206確定哪個下部管線160或165將接收指令。下 部管線160可經(jīng)設(shè)計(jì)以執(zhí)行算術(shù)指令,而下部管線165可經(jīng)設(shè)計(jì)以執(zhí)行加載/存儲指令。 發(fā)布邏輯電路206根據(jù)指令將被發(fā)送到下部管線160或165中的哪一者以供執(zhí)行來將指 令布置在指令隊(duì)列中。如圖3A到3B和圖4A到4B的論述中較詳細(xì)解釋,發(fā)布邏輯電 路206可擴(kuò)展已被預(yù)解碼邏輯電路201加標(biāo)簽的特定指令,以便增加處理器的效率。
從發(fā)布級207,將指令繼續(xù)發(fā)送到下部管線160和165以供執(zhí)行。在下部管線160 和165內(nèi)可能存在其它各種級,例如保留級、寄存器存取級等,但為了易于說明起見未 展示。^指令達(dá)到執(zhí)行級220或225時,處理器100存取恰d寄存器堆230或235以檢 索執(zhí)行所述指令所必要的操作數(shù)信息。如先前提及的,寄存器堆230和235可為彼此的 鏡像。因此,當(dāng)處理器100更新寄存器堆230時,其還更新寄存器堆235。通過使用寄 存器堆230和235的重復(fù)復(fù)本,處理器IOO可在每一下部管線160或165內(nèi)同時執(zhí)行多 個指令。在從寄存器堆中檢索信息之后,EU 130執(zhí)行所述指令且指令執(zhí)行的結(jié)果被寫回 到寄存器堆225和235。
圖3A顯示可由處理器IOO執(zhí)行的示范性指令群組300。圖3A中的指令A(yù)為條件相 加指令,其具有四個源操作數(shù)R,、 R2、 R3和R4。指令的源操作數(shù)對應(yīng)于通過讀取端口從寄存器堆230和235讀取的信息。發(fā)送到寄存器堆230或235的信息可由目的地操作 數(shù)指定,且使用寫入端口寫入到寄存器堆230和235。指令B為相減指令,其具有兩個 源操作數(shù)(R7和Rs)和一個目的地操作數(shù)(R5)。指令C為相乘指令,其具有兩個源操 作數(shù)(R5和Rs)和一個目的地操作數(shù)(R9)。
如較詳細(xì)解釋的,呈原始形式的指令A(yù)可能不由處理器IOO執(zhí)行。而是,通過使用 本發(fā)明的一個實(shí)施例,處理器100可將指令A(yù)修改為兩個較小指令以實(shí)現(xiàn)較有效的處理。 為了易于說明起見,指令A(yù)被描述為猶如由常規(guī)處理器執(zhí)行那樣,以便了解各種實(shí)施例 的發(fā)明性概念。
在由常規(guī)處理器處理指令A(yù) (條件ADD指令)期間,從寄存器堆230或235讀取 源操作數(shù)Rh R2、 R3和R4的值。在已經(jīng)讀取了源操作數(shù)的值之后,將寄存器R3中的值 移位達(dá)R4中所含有的值,且將結(jié)果與寄存器R2中的內(nèi)容相加。如果條件零旗標(biāo)為"O", 那么將所述相加的結(jié)果存儲在Ri中。如果零旗標(biāo)為"l",那么將寄存器Ri的內(nèi)容恢復(fù) 到其先前值。
如所屬領(lǐng)域的技術(shù)人員所了解,ARM⑧處理器內(nèi)的條件旗標(biāo)可對應(yīng)于NZCV狀態(tài)位 (N-負(fù),2=零,c-進(jìn)位,丫=溢出)。條件旗標(biāo)可由指令設(shè)置,某些指令例如為比較 指令等。處理器100使用條件旗標(biāo)來確定條件執(zhí)行是否執(zhí)行。如果條件指令由于未滿足 條件而不執(zhí)行,那么處理器將先前所讀取的值重新寫回到目標(biāo)寄存器中。對于指令A(yù), 目標(biāo)寄存器為Rt。
在指令A(yù)的常規(guī)處理期間,Ri的值將為所計(jì)算的新值或Ri的先前值,這取決于條 件旗標(biāo)。如果未滿足條件(即,條件零旗標(biāo)="0"),那么常規(guī)處理器將取消Ri的寫入。 常規(guī)處理器執(zhí)行此功能的一種方式是利用寄存器重命名。具體地說,當(dāng)指令A(yù)執(zhí)行時, 將讀取Ri的舊值并將其保存在另一寄存器中,且假如指令不執(zhí)行,那么將把寄存器重 命名回到Ri。在此例子中利用寄存器重命名可能需要額外處理器時間以及其它處理器資 源。本發(fā)明的實(shí)施例可消除對在未滿足指令的條件性時重命名寄存器的需要。
如先前提及的,處理器100可每寄存器堆230或235具有三個讀取端口。由于指令 A具有四個源操作數(shù),所以源操作數(shù)的數(shù)目超過讀取端口的數(shù)目達(dá)1。用于寄存器堆230 和235的讀取端口的數(shù)目可用作用于確定條件指令是否適合擴(kuò)展的預(yù)定閾值。在替代實(shí) 施例中,每寄存器堆僅具有兩個讀取端口的處理器可具有預(yù)定閾值2。
當(dāng)在獲取級203中處理指令A(yù)時,預(yù)解碼邏輯電路201可能已經(jīng)識別到指令A(yù)為 具有比讀取端口多的操作數(shù)的條件指令且因此超過預(yù)定閾值。在此實(shí)例中,指令A(yù)可能 已在加載到指令高速緩沖存儲器106中時被"加標(biāo)簽"有此信息。在一個實(shí)施例中,加
9標(biāo)簽信息由發(fā)布邏輯電路206使用以當(dāng)在發(fā)布級207中處理指令A(yù)時將指令A(yù)擴(kuò)展為 兩個較小指令。所述兩個較小指令中的每一者可接著被路由到單獨(dú)管線且同時執(zhí)行。
在一個說明性實(shí)施例中,當(dāng)在發(fā)布級207中處理指令A(yù)時,由如圖3B所展示的指 令A(yù)i和A2的群組替換指令A(yù)。發(fā)布邏輯電路206使用加標(biāo)簽信息來識別指令A(yù)可被擴(kuò) 展為兩個較小指令。因而,發(fā)布邏輯電路206通過移除條件性部分(如在指令A(yù)i中反 映)來修改指令A(yù),且創(chuàng)建單獨(dú)的選擇指令A(yù)2。在圖3B所展示的擴(kuò)展中,選擇指令A(yù)2 為條件MOV指令,其反映指令A(yù)的相同條件性。換句話說,指令A(yù)和A2的條件性可 以Z位等于"0"為條件。為了簡化指令擴(kuò)展過程,反映經(jīng)擴(kuò)展指令的原始條件性的條 件MOV指令可用作默認(rèn)選擇指令。在其它處理器結(jié)構(gòu)中,其它條件指令可用作默認(rèn)選 擇指令。因?yàn)橹噶預(yù)i和A2在功能上有所不同(即,指令A(yù),為算術(shù)指令,且A2為類型 加載/存儲指令),所以其可在單獨(dú)管線中執(zhí)行。因而,指令A(yù)i和A2可插入到發(fā)布級207 內(nèi)的不同指令隊(duì)列中。當(dāng)發(fā)布時,可將指令A(yù)i發(fā)送到下部管線160以供執(zhí)行,而可將 指令A(yù)2發(fā)送到下部管線165以供執(zhí)行。
指令、具有三個源操作數(shù)R4、 R3和R2以及一個目的地操作數(shù)Tp指令A(yù):將寄存 器R3中的值移位達(dá)R4中所含有的值,且將結(jié)果與寄存器R2的內(nèi)容相加。將指令A(yù)i的 結(jié)果保存在臨時寄存器L中。選擇指令A(yù)2為條件移動指令,其在條件旗標(biāo)Z位為"O" 的情況下將l的值移動到Ri中。選擇指令A(yù)2選擇是將L的值寫入到&中還是保持 Ri的值不變。
當(dāng)發(fā)布邏輯電路206創(chuàng)建指令A(yù)i和A2時,處理器100還識別到指令A(yù)!具有對選 擇指令A(yù)2的相依性。具體地說,在指令~與A2之間存在數(shù)據(jù)沖突。處理器100將直 到指令A(yù)i完成時才執(zhí)行選擇指令A(yù)2,否則發(fā)生RAW (寫入后讀取)沖突。為此,處理 器100在執(zhí)行選擇指令A(yù)2之前進(jìn)行等待,直到指令A(yù)i的結(jié)果可用為止。
在一個實(shí)施例中,處理器IOO可在一個下部管線(例如下部管線160)中執(zhí)行算術(shù) 指令,而在另一管線165中執(zhí)行加載/存儲指令。本文所呈現(xiàn)的實(shí)施例可應(yīng)用于具有兩個 以上管線的處理器。在這些實(shí)施例中,對向哪個下部管線發(fā)送經(jīng)擴(kuò)展指令的選擇是當(dāng)在 發(fā)布級207中處理指令時由發(fā)布邏輯電路206進(jìn)行。
圖4A顯示可由處理器100執(zhí)行的另一示范性指令群組400。圖4A中的指令D為異 或非相等指令,其具有四個源操作數(shù)Rh R2、 R3和R4。指令E為相減指令,且指令F 為OR指令。如果指令D由處理器100執(zhí)行,那么可從寄存器堆230和235中讀取源操 作數(shù)&、 R2、 R3和FU的值。在指令D內(nèi),將寄存器R3中的值移位達(dá)R4中所含有的值,
且將結(jié)果與寄存器R2的內(nèi)容進(jìn)行異或運(yùn)算。如果條件零旗標(biāo)為"1",那么將異或運(yùn)算的結(jié)果存儲在Ri中。如果零旗標(biāo)為"0",那么將寄存器&的內(nèi)容恢復(fù)到其先前值。
借助于另一說明性實(shí)例,當(dāng)在發(fā)布級207中處理指令D時,由如圖4B所展示的指 令D,和D2的群組替換指令D。類似于處理器100處理指令群組300中的指令A(yù)的方式, 發(fā)布邏輯電路206使用加標(biāo)簽信息來識別所述指令D可被擴(kuò)展為兩個較小指令。因而, 發(fā)布邏輯電路206通過移除條件性部分(如在指令Di中反映)來修改指令D,且創(chuàng)建 選擇指令D2。如在圖4B的實(shí)施例中所展示,選擇指令D2為條件MOV指令,其反映指 令D的相同條件性。指令D和選擇指令D2的條件性是基于非相等條件(Z旗標(biāo)"1")。 在發(fā)布級207中插入指令D,和D2之后,可將其加載到恰當(dāng)指令隊(duì)列中且發(fā)送到不同的 下部管線160和165以供執(zhí)行。
指令D,將R3中的值移位達(dá)R4中所含有的值,其中將移位的結(jié)果與寄存器R2的內(nèi) 容進(jìn)行異或運(yùn)算。將所述異或運(yùn)算的結(jié)果保存在臨時寄存器Ti中。選擇指令D2為條件 移動指令,其在條件旗標(biāo)Z位為"1"的情況下將L的值移動到中。類似于選擇指 令A(yù)2,選擇指令D2選擇是將1的值寫入到Ri中還是保持&的值不變。
當(dāng)發(fā)布邏輯電路206創(chuàng)建指令Di和D2時,處理器100還識別到指令Dt具有對指 令D2的相依性。指令D2直到指令D!完成時才能執(zhí)行,否則發(fā)生RAW (寫入后讀取) 沖突。處理器100在執(zhí)行指令D2之前進(jìn)行等待,直到指令Di的結(jié)果可用為止。
圖5顯示指令群組300在通過上部管線150以及下部管線160和165的各種級處理 時的時序圖500。在時序圖500中,沿著Y軸504顯示處理器循環(huán)502,而沿著X軸506 識別處理器100內(nèi)的級(獲取級203、解碼級205、發(fā)布級207、執(zhí)行級220和執(zhí)行級 225)。時序圖500中所顯示的指令展示為其正進(jìn)入各種級。在一個實(shí)施例中,時序圖500 顯示一個指令在每一處理器循環(huán)中進(jìn)入每一級。然而,在替代實(shí)施例中,處理器100可 每處理器循環(huán)處理多個指令。本文所呈現(xiàn)的教示可應(yīng)用于單個指令發(fā)布處理器或多個指 令發(fā)布處理器。為了易于說明起見,論述指令群組300,但相同時序圖適用于指令群組 400,因?yàn)檫@些指令經(jīng)類似擴(kuò)展。
如圖5中所顯示,在處理器循環(huán)1中在獲取級203中從指令高速緩沖存儲器106中 獲取指令A(yù)。在從指令高速緩沖存儲器106中獲取指令A(yù)之前,獲取邏輯電路202從存 儲器108中檢索指令A(yù)。在將指令A(yù)從存儲器108加載到指令高速緩沖存儲器106中時, 預(yù)解碼邏輯電路201確定指令A(yù)為條件指令。因?yàn)橹噶預(yù)為條件指令,所以預(yù)解碼邏 輯電路201隨后確定指令A(yù)的源操作數(shù)超過預(yù)定閾值。因?yàn)橹噶預(yù)具有四個源操作數(shù) 且預(yù)定閾值為3,所以將指令A(yù)加標(biāo)簽以進(jìn)行擴(kuò)展。
從獲取級203開始,在處理器循環(huán)2中在解碼級205中由解碼邏輯電路204處理指令A(yù)。在解碼級205期間,處理器100識別指令A(yù)為條件相加指令。而且,在解碼級 205期間,處理器可識別操作數(shù)信息以及鏈接到指令A(yù)的任何相依性。因?yàn)橹噶預(yù)為條 件相加指令,所以處理器100可將指令A(yù)引導(dǎo)到下部管線160,只要下部管線160含有 支持算術(shù)運(yùn)算的EU。然而,由于指令A(yù)已被預(yù)解碼邏輯電路201加標(biāo)簽,所以指令A(yù) 可能不以其原始形式發(fā)送到下部管線160。在解碼級205中處理指令A(yù)之后,在處理器 循環(huán)3中將指令A(yù)發(fā)送到發(fā)布級207。而且,在處理器循環(huán)2期間,在獲取級203期間 由獲取邏輯電路202獲取指令B。
在處理器循環(huán)3中,處理器從指令高速緩沖存儲器106中獲取指令C,同時在解碼 級205中由解碼邏輯電路204處理指令B。當(dāng)在處理器循環(huán)3中將指令A(yù)加載到發(fā)布級 207中時,發(fā)布邏輯電路206識別指令A(yù)為加標(biāo)簽指令(例如,指令A(yù)為具有比讀取端 口多的源操作數(shù)的條件指令)且根據(jù)一個實(shí)施例來修改指令A(yù)。代替指令A(yù),發(fā)布邏輯 電路206將指令A(yù)!和A2插入到指令流中且更具體地說插入到發(fā)布級207內(nèi)的恰當(dāng)指令 隊(duì)列中。
當(dāng)處理器IOO發(fā)布指令A(yù),和A2時,處理器IOO將指令路由到不同管線,如處理器 循環(huán)4中所展示。在處理器循環(huán)4中,在下部管線160中的執(zhí)行級220中執(zhí)行指令A(yù)u 而在下部管線165中的執(zhí)行級225中執(zhí)行指令A(yù)2。通過在不同管線中執(zhí)行Ai和A2,可 在相同處理器循環(huán)期間執(zhí)行所述兩個指令,這增加了處理器IOO的處理效率。在處理器 循環(huán)4中執(zhí)行指令A(yù)i和八2期間,兩個寄存器堆230和235均由處理器100存取。首先, 指令A(yù)i執(zhí)行且接著在相同處理器循環(huán)期間指令A(yù)2執(zhí)行。出于簡化的目的,時序圖500 展示指令A(yù)t和A2僅需要一個處理器循環(huán)來到達(dá)執(zhí)行級220和225。然而,實(shí)際上,指 令A(yù)i和A2可能采取若干處理器循環(huán)來到達(dá)執(zhí)行級220和225。在處理器循環(huán)4期間, 在發(fā)布級207中處理指令B,且在解碼級205中處理指令C。
在處理器循環(huán)5中,指令A(yù)i和A2已完成其執(zhí)行且用所述結(jié)果更新寄存器堆230和 235。而且,在處理器循環(huán)5中,在執(zhí)行級220中執(zhí)行指令B,且在發(fā)布級207中處理 指令C。
如先前所論述,可針對選擇指令(即,指令A(yù)2或指令D2)使用其它條件指令。舉
例來說,代替用于選擇指令的MOVEQ指令,如下文展示的ADDEQ指令可分別用以替 代指令A(yù)2或D2:
A3: ADDEQR1,T1,并0;或者,
D3: ADDNER1,T1,井0。
在此實(shí)例中,兩個下部管線160和165可具有支持算術(shù)指令的EU 130。在指令A(yù)3
12內(nèi),將零相加到臨時寄存器Tl的內(nèi)容,其中當(dāng)條件旗標(biāo)Z位為"1"時將結(jié)果寫入到 Ri中。在指令D3內(nèi),將零相加到臨時寄存器T1的內(nèi)容,其中當(dāng)條件旗標(biāo)Z位為"0" 時將結(jié)果寫入到Ri中。
圖6為說明由本發(fā)明的一個實(shí)施例執(zhí)行的過程600的流程圖。過程600在開始框602 處開始。在框604處,處理器100使用獲取邏輯電路202以獲取指令。如果指令未駐留 在指令高速緩沖存儲器106中,那么獲取邏輯電路202從存儲器108中檢索指令。在從 存儲器108中獲取指令且將指令放置到指令高速緩沖存儲器106中的同時,預(yù)解碼邏輯 電路201在框606處確定指令是否為條件指令。如果指令不是條件指令,那么過程前進(jìn) 到框612。如果指令為條件指令,那么過程600前進(jìn)到?jīng)Q策框608。
在決策框608處,預(yù)解碼邏輯電路201確定條件指令的操作數(shù)的數(shù)目是否超過預(yù)定 閾值。如先前提及的,預(yù)定閾值可對應(yīng)于用于每一寄存器堆225或235的讀取端口的數(shù) 目。如果在決策框608處,條件指令的操作數(shù)超過預(yù)定閾值,那么過程600前進(jìn)到框610。 如果條件指令的操作數(shù)的數(shù)目不超過預(yù)定閾值,那么過程600繼續(xù)到框612。
在框610處,處理器100將所述條件指令加標(biāo)簽為可被擴(kuò)展的條件指令。加標(biāo)簽信 息可在將條件指令寫入到指令高速緩沖存儲器106中時由預(yù)解碼邏輯電路201寫入。更 具體地說,加標(biāo)簽信息可駐留在用于所述條件指令的高速緩沖存儲器線內(nèi)。從框610開 始,過程600繼續(xù)到框612。
在框612處,在解碼級205中處理指令。如先前提及的,當(dāng)在解碼級205中處理指 令時,處理器IOO識別執(zhí)行指令所必要的所有剩余信息。從解碼級205開始,將指令發(fā) 送到發(fā)布級207,如框614中所展示。作為在發(fā)布級207內(nèi)發(fā)生的處理的部分,處理器 100在決策框616處確定指令是否被標(biāo)記為操作數(shù)超過預(yù)定閾值的條件指令。如果指令 被加標(biāo)簽,那么擴(kuò)展并在恰當(dāng)管線中執(zhí)行條件指令,如框618處所顯示。從框618開始, 過程600在框620處結(jié)束。如果指令未被標(biāo)記,那么將指令繼續(xù)傳遞到恰當(dāng)管線且過程 600在框620處結(jié)束。
結(jié)合本文所揭示的實(shí)施例描述的各種說明性邏輯塊、模塊、電路、元件和/或組件可 用經(jīng)設(shè)計(jì)以執(zhí)行本文所描述的功能的通用處理器、數(shù)字信號處理器(DSP)、專用集成電 路(ASIC)、現(xiàn)場可編程門陣列(FPGA)或其它可編程邏輯組件、離散門或晶體管邏輯、 離散硬件組件或其任何組合來實(shí)施或執(zhí)行。通用處理器可以是微處理器,但在替代方案 中,所述處理器可以是任何常規(guī)的處理器、控制器、微控制器或狀態(tài)機(jī)。處理器還可實(shí) 施為計(jì)算組件的組合,例如DSP與微處理器的組合、多個微處理器、結(jié)合DSP核心的 一個或一個以上微處理器或任何其它此類配置。雖然已在本文中說明并描述了特定實(shí)施例,但所屬領(lǐng)域的技術(shù)人員了解,打算實(shí)現(xiàn) 相同目的的任何布置可用以替代所展示的特定實(shí)施例且本發(fā)明在其它環(huán)境下具有其它 應(yīng)用。本申請案既定涵蓋本發(fā)明的任何修改或變化。所附權(quán)利要求書決不希望將本發(fā)明 的范圍限于本文所描述的特定實(shí)施例。
權(quán)利要求
1.一種在管線處理器內(nèi)擴(kuò)展具有多個操作數(shù)的條件指令的方法,所述管線處理器具有多個管線,所述方法包含在發(fā)布級之前識別所述條件指令;確定所述多個操作數(shù)是否超過預(yù)定閾值;將所述條件指令擴(kuò)展為非條件指令和選擇指令;以及在單獨(dú)管線中執(zhí)行所述非條件指令和所述選擇指令。
2. 根據(jù)權(quán)利要求1所述的方法,其中所述選擇指令為條件MOV指令。
3. 根據(jù)權(quán)利要求l所述的方法,其中所述選擇指令為條件ADD指令。
4. 根據(jù)權(quán)利要求1所述的方法,其中所述預(yù)定閾值等于寄存器堆上的讀取端口的數(shù) 目。
5. 根據(jù)權(quán)利要求4所述的方法,其中所述寄存器堆具有三個讀取端口。
6. 根據(jù)權(quán)利要求1所述的方法,其中在發(fā)布級中擴(kuò)展所述條件指令。
7. 根據(jù)權(quán)利要求1所述的方法,其中在發(fā)布之前將所述經(jīng)擴(kuò)展指令發(fā)送到所述發(fā)布級 內(nèi)的不同指令隊(duì)列。
8. 根據(jù)權(quán)利要求1所述的方法,其進(jìn)一步包含將所述非條件指令和所述選擇指令發(fā)送 到單獨(dú)管線以供執(zhí)行。
9. 一種在管線處理器內(nèi)擴(kuò)展具有多個操作數(shù)的條件指令的方法,所述方法包含在預(yù)解碼級期間識別所述條件指令具有超過預(yù)定閾值的操作數(shù); 當(dāng)在發(fā)布級中處理所述條件指令時將所述指令擴(kuò)展為非條件指令和選擇指令;以及在執(zhí)行級期間執(zhí)行所述非條件指令和所述選擇指令。
10. 根據(jù)權(quán)利要求9所述的方法,其中所述選擇指令為條件MOV指令。
11. 根據(jù)權(quán)利要求9所述的方法,其中所述選擇指令為條件ADD指令。
12. 根據(jù)權(quán)利要求9所述的方法,其中所述操作數(shù)從具有若干讀取端口的寄存器堆接收 信息,且所述預(yù)定閾值等于讀取端口的數(shù)目。
13. 根據(jù)權(quán)利要求12所述的方法,其中所述寄存器堆具有三個讀取端口。
14. 一種管線處理器,其包含預(yù)解碼邏輯電路,所述預(yù)解碼邏輯電路經(jīng)配置以識別條件指令是否具有超過預(yù)定 閾值的操作數(shù)數(shù)目;發(fā)布邏輯電路,所述發(fā)布邏輯電路經(jīng)配置以接收所識別的條件指令,且擴(kuò)展所述 所識別的條件指令以包括非條件指令和選擇指令;以及執(zhí)行單元,其經(jīng)配置以執(zhí)行所述非條件指令和所述選擇指令。
15. 根據(jù)權(quán)利要求14所述的管線處理器,其中選擇指令反映所述條件指令的條件性。
16. 根據(jù)權(quán)利要求14所述的管線處理器,其中所述選擇指令為條件ADD指令。
17. 根據(jù)權(quán)利要求14所述的管線處理器,其中所述選擇指令為條件MOV指令。
18. 根據(jù)權(quán)利要求14所述的管線處理器,其中所述選擇指令和所述非條件指令由單獨(dú) 管線中的執(zhí)行單元執(zhí)行。
19. 根據(jù)權(quán)利要求13所述的管線處理器,其中所述操作數(shù)從具有若干讀取端口的寄存 器堆接收信息,其中所述預(yù)定閾值等于讀取端口的數(shù)目。
20. 根據(jù)權(quán)利要求17所述的管線處理器,其中所述寄存器堆具有三個讀取端口。
全文摘要
本發(fā)明揭示一種在管線處理器內(nèi)擴(kuò)展具有多個操作數(shù)的條件指令的方法。所述方法在發(fā)布級之前識別所述條件指令且確定所述多個操作數(shù)是否超過預(yù)定閾值。所述方法將所述條件指令擴(kuò)展為非條件指令和選擇指令。所述方法進(jìn)一步在單獨(dú)管線中執(zhí)行所述非條件指令和所述選擇指令。
文檔編號G06F9/30GK101689107SQ200880021909
公開日2010年3月31日 申請日期2008年6月27日 優(yōu)先權(quán)日2007年6月27日
發(fā)明者塞雷娜·巴德蘭-洛薩, 羅德尼·韋恩·史密斯, 邁克爾·斯科特·邁克勒瓦伊內(nèi) 申請人:高通股份有限公司