專利名稱:包括用于早期遠分支預測的影子緩存的單周期多分支預測的制作方法
技術領域:
本發(fā)明總體涉及數(shù)字計算機系統(tǒng),更具體地涉及一種用于選擇包括指令序列的指令的系統(tǒng)和方法。
背景技術:
改進計算機架構性能是困難的任務。已經(jīng)通過頻率縮放、單指令多數(shù)據(jù)(SMD)、超長指令字(VLIW)、多線程和多處理器技術尋求改進。這些方法主要以提高程序執(zhí)行的吞吐量為目標。這些技術中的許多技術要求軟件顯式地揭示并行性。與此相反,頻率縮放對吞吐量和延時兩者進行提高而無需并行性的軟件顯式注釋。近來,頻率縮放遭遇功率壁壘,因此通過頻率縮放的改進是困難的。因此,除非表達大量的顯式軟件并行化,否則難以增加吞吐量。關于單線程程序執(zhí)行,程序執(zhí)行由規(guī)定程序控制流程的分支指令所控制。程序指令序列當分支指令是有條件的或者分支目標是間接的時是動態(tài)的。在這些情況下,對于處理器的提取邏輯而言,對于條件分支發(fā)現(xiàn)是否采用分支。這使提取邏輯能夠引入如下指令的序列,這些指令緊隨分支目標或者緊隨分支指令本身。然而問題在于,在提取階段,分支的條件的結果在分支本身執(zhí)行之前是未知的。在嘗試克服該問題時,現(xiàn)有技術設計已經(jīng)實現(xiàn)分支預測邏輯以預測分支的結果。在微處理器的提取階段,預測的結果使提取邏輯能夠預期從何處帶來下一指令序列。然而問題仍然存在,因為如果在相同周期中要處理多于一個的條件分支,則提取階段的邏輯很快變得非常復雜。原因在于該處理需要本質上是順序的。需要首先處理當前分支以便知道從何處帶來下一指令序列。 該方面可能引起序列中的下一分支被跳過。因而提取階段中的處理分支的順序本質給微處理器的單線程執(zhí)行速度施加了性能瓶頸。
發(fā)明內容
本發(fā)明的實施例實現(xiàn)一種使微處理器的提取邏輯的并行化成為可能以在每個單周期中處理多個分支的算法(例如,方法和裝置)。該算法還基于也在該單周期內的分支預測而形成最終的指令序列。在一個實施例中,本發(fā)明實現(xiàn)為一種標識預測的執(zhí)行路徑的指令的方法。該方法包括訪問包括多個分支指令的多個指令。對于多個分支指令中的每個分支指令,生成相應的第一掩碼,該第一掩碼代表如果采用所述分支則執(zhí)行的指令。生成相應的第二掩碼,該第二掩碼代表如果不采用所述分支則執(zhí)行的指令。接收預測輸出,該預測輸出包括對于所述多個分支指令中的每個分支指令的相應的分支預測。對于所述多個分支指令中的每個分支指令,使用所述預測輸出以從所述相應的第一掩碼和第二掩碼之中選擇相應的結果掩碼。對于每個分支指令,如果預測先前分支越過后續(xù)分支而分支,則使所述后續(xù)分支的結果掩碼無效。對所有結果掩碼執(zhí)行邏輯操作以產(chǎn)生最終掩碼?;谒鲎罱K掩碼從所述多個指令選擇用于執(zhí)行的指令子集。
前文是概要并且因此必然地包含細節(jié)的簡化、概括和省略;因而,本領域技術人員將理解該概要僅是說明性的而并非旨在是以任何方式進行限制的。如僅由權利要求所限定的,本發(fā)明的其它方面、發(fā)明特征和優(yōu)點將在下文闡述的非限制性的詳細描述中變得顯而易見。
在附圖的各圖中通過示例而非通過限制來圖示本發(fā)明,在附圖中,相同附圖標記指代相同單元。圖1示出由本發(fā)明的一個實施例操作的示例性指令序列。圖2示出根據(jù)本發(fā)明的一個實施例所圖示的具有用于每個分支的相應代碼段的順序指令。圖3示出根據(jù)本發(fā)明的一個實施例的用于標識和提取指令的過程的步驟的概況流程圖,這些指令包括具有多個分支的指令序列的執(zhí)行路徑。圖4示出根據(jù)本發(fā)明的一個實施例的圖示用于標識和提取指令的過程的操作的流程圖,這些指令 包括具有多個分支的指令序列的執(zhí)行路徑。圖5示出根據(jù)本發(fā)明的一個實施例的遠分支緩存和遠跳轉目標指令緩存。圖6示出根據(jù)本發(fā)明的一個實施例的示例性微處理器流水線的示圖。
具體實施例方式雖然已經(jīng)結合一個實施例描述本發(fā)明,但是本發(fā)明并非旨在限于這里闡述的具體形式。恰好相反,它旨在覆蓋如可以被合理地包括在如由所附權利要求限定的本發(fā)明的范圍內的這樣的備選、修改和等效物。在下文的詳細描述中,已經(jīng)闡述許多具體細節(jié)(諸如具體方法順序、結構、單元和連接)。然而將理解,無需利用這些和其它具體細節(jié)以實現(xiàn)本發(fā)明的實施例。在其它情況下,已經(jīng)省略或者尚未特別詳細地描述公知結構、單元或者連接以避免不必要地使本描述難以理解。在說明書內對“一個實施例”或者“實施例”的引用旨在指示結合該實施例所描述的特定特征、結構或者特性包含于本發(fā)明的至少一個實施例中。在說明書內各處出現(xiàn)的短語“在一個實施例中”不必都指代相同的實施例,也不必是與其它實施例互斥的單獨的或者備選的實施例。另外,描述了各種特征,這些特征可以由一些實施例而不由其它實施例展示出來。類似地,描述了各種要求,這些要求可以是對于一些實施例但并不對于其它實施例的要求。依據(jù)對計算機存儲器內的數(shù)據(jù)位的操作的流程、步驟、邏輯塊、處理和其它符號表示而呈現(xiàn)下文詳細描述的一些部分。這些描述和表示是數(shù)據(jù)處理領域的那些技術人員用來向本領域其他技術人員最有效地傳達他們的工作實質的手段。這里,流程、計算機執(zhí)行的步驟、邏輯塊、過程等一般設想是導致期望結果的步驟或者指令的自一致序列。步驟是需要物理操控物理量的步驟。通常(盡管不一定),這些量采用計算機可讀存儲介質的電信號或者磁信號的形式并且能夠在計算機系統(tǒng)中被存儲、傳送、組合、比較和以別的方式被操控。主要出于普遍使用的原因,將這些信號稱為位、值、單元、符號、字符、項、數(shù)等已經(jīng)被證實有時是方便的。然而應當謹記,所有這些術語和相似術語將與適當物理量相關聯(lián),并且僅為應用于這些量的方便標簽。除非如從下文討論中顯而易見地另有具體明示,貫穿本發(fā)明而理解的是,利用諸如“處理”或者“訪問”或者“寫入”或者“存儲”或者“復制”等術語的討論指的是計算機系統(tǒng)或者相似電子計算設備的動作和過程,該電子計算設備對被表示為計算機系統(tǒng)的寄存器和存儲器以及其它計算機可讀介質內的物理(電子)量的數(shù)據(jù)進行操縱并變換成同樣地被表示為計算機系統(tǒng)存儲器或寄存器或者其他此類信息存儲、傳輸或顯示設備內的物理量的其他數(shù)據(jù)。本發(fā)明的實施例實現(xiàn)一種使微處理器的提取邏輯的并行化成為可能以在每個單周期中處理多個分支的算法(例如,方法和裝置)。該算法還基于也在該單周期內的分支預測而形成最終的指令序列。執(zhí)行該任務而無需以順序方式處理分支(例如,不以每周期一個分支的速率逐個分支地處理指令序列)。反而,本發(fā)明的實施例使得每周期多個分支的處理速率成為可能,由此使得大量指令提取和分配帶寬成為可能。應當注意,單個分支指令的處理可以不在單周期內完成,然而處理器硬件可以每個周期處理多個分支,由此實現(xiàn)每周期多個分支的吞吐量。以該方式,分支處理速率是每個周期,但是延時在單周期內不是必需的。圖1和圖2示出由本發(fā)明的實施例操作的示例性指令序列。隨后,圖3示出根據(jù)本發(fā)明的一個實施例的用于標識和提取指令的過程的步驟的概況流程圖,這些指令包括具有多個分支的指令序列中的執(zhí)行路徑。圖1示出由本發(fā)明的一個實施例操作的示例性指令序列。如圖1中所示,指令序列100包括從圖1的頂部進行至底部的16個指令。如圖1中可見,序列100包括四個分支指令 101-104。本發(fā)明的實施例的一個目的是在每個單周期中處理整組指令。根據(jù)不同實施例,這些指令可以包括原生指令(例如,微處理器架構的原生指令,諸如x86指令、MIPS指令等)。備選地,這些指令可以包括微代碼。在一個實施例中,在相同單周期中處理整組16個指令。如前所述,指令序列包括的分支越多,出現(xiàn)并且需要處理的組合和 可能的所得序列就越多。下面在圖2中圖示該特性。圖2示出根據(jù)本發(fā)明的一個實施例而圖示的具有用于每個分支的相應代碼段的順序指令100。如上所述,在指令序列中呈現(xiàn)的分支越多,需要消除歧義的指令序列的可能性和組合就越多。此外,更多分支帶來可能跳過更多分支的可能性。在圖2中圖示這一點,該圖示出如果采用分支Cl則出現(xiàn)的第一所得序列“I”。如這里指代的那樣,如果程序執(zhí)行流程移向分支的目標,則采用該分支。這由在每個分支指令的末尾處的括號內的兩個數(shù)字指示。例如,分支Cl具有目標11并且造成跳過接下來的6個指令。類似地,分支c2具有目標10并且造成跳過接下來的2個指令,以此類推。因此,示出第二所得序列“2”,并且如果采用分支c2則出現(xiàn)該第二所得序列“2”。示出第三所得序列“3”作為如果采用分支c3則出現(xiàn)該序列。類似地,示出第四所得序列“4”作為如果采用分支c4則出現(xiàn)該序列。如圖2中所示,來自分支的所得序列相互重疊。這說明了指令序列中的先前分支可以通過跳過后續(xù)分支而使該后續(xù)分支無效的方式。因此如果采用分支Cl,則跳過兩個后續(xù)分支c2和c3并且由此使這些分支無效或者使這些分支被呈現(xiàn)為與指令序列的執(zhí)行路徑無關。類似地,如果不采用分支Cl而采用分支c2,則將跳過后續(xù)分支c3并且由此使該分支無效。本發(fā)明的實施例實現(xiàn)一種使微處理器的提取邏輯的并行化成為可能以在每個單周期中處理諸如分支Cl至分支c4之類的多個分支的算法(例如,方法和裝置)。該算法還基于也在該單周期內的對于Cl至c4的分支預測而形成最終的指令序列。下文在圖3中描述該算法。圖3示出根據(jù)本發(fā)明的一個實施例的用于標識和提取指令的過程300的步驟的概況流程圖,這些指令包括具有多個分支的指令序列的執(zhí)行路徑。過程300示出了例如微處理器的指令提取模塊的示例性操作步驟。過程300始于步驟301,在該步驟中,提取模塊訪問包括多個分支指令的多個指令。如上所述,訪問指令 序列,其中該指令序列包括多個分支指令(例如,圖1的序列100的分支cl-c4)。在步驟302中,對于多個分支指令中的每個分支指令,生成相應的第一掩碼。該第一掩碼代表如果采用該特定分支則執(zhí)行的指令。在步驟303中,對于每個分支指令,生成相應的第二掩碼。該第二掩碼代表如果不采用該特定分支則執(zhí)行的指令。因此,在步驟303結束時,指令序列內的每個分支將具有兩個掩碼(一個代表如果采用該分支則執(zhí)行的指令的掩碼,以及另一個代表如果不采用該分支則執(zhí)行的指令的掩碼)。在步驟304中,由提取模塊接收分支預測輸出。該分支預測輸出對于指令序列的每個分支給出預測的采用狀態(tài)或者不采用狀態(tài)。在步驟305中,分支預測輸出用來在用于指令序列的每個分支指令的第一掩碼與第二掩碼之間進行選擇。例如,對于給定的分支,如果分支預測輸出指示將采用分支,則將選擇用于分支的第一掩碼。如果分支預測輸出指示將不采用分支,則將選擇用于分支的第二掩碼。由分支預測輸出所選擇的這些掩碼被稱為結果掩碼。在步驟306中,對于指令序列的每個分支指令,如果預測先前分支越過或者跳過后續(xù)分支,則使該后續(xù)分支的結果掩碼無效。如上所述,指令序列中的先前分支可以通過跳過后續(xù)分支來使該后續(xù)分支無效。在步驟307中,對所有結果掩碼執(zhí)行邏輯操作以產(chǎn)生最終掩碼。因此,該最終掩碼標識如下指令,這些指令包括指令序列中的正如由序列內的多個分支的預測結果所確定的執(zhí)行路徑。在步驟308中,最終掩碼用來從包括指令序列的多個指令之中選出用于執(zhí)行的指令子集。在這樣做時,由提取模塊產(chǎn)生緊湊的執(zhí)行路徑指令序列。在一個實施例中,在每個單周期中產(chǎn)生該緊湊的執(zhí)行指令序列。圖4示出根據(jù)本發(fā)明的一個實施例的圖示用于標識和提取指令的過程的操作的流程圖400,這些指令包括具有多個分支的指令序列的執(zhí)行路徑。如上所述,本發(fā)明的實施例的目的是在一個周期中處理整組指令。在圖4中圖示這一點,其中由提取模塊在一個周期中處理指令序列100的所有16個指令。標識符401說明提取模塊標識其中的每個分支的方式。從指令序列100的頂部開始,標記所標識的第一分支、標記所標識的第二分支并且以此類推,以使序列減少到僅為條件操作(例如,分支)。僅用零標注普通指令(例如,除了分支指令之外的指令)。圖4還圖示追蹤分支的段的分支段表402。在分支段表的左手側,每個對應分支具有開始于序列中的該分支編號并且結束于后續(xù)分支編號的段。因此,如圖4中所示,分支Cl具有第一段5-7,該段是如果不采用該分支則將執(zhí)行的指令。類似地,在右手側,分支Cl具有第二段11-14,該段是如果采用該分支則將執(zhí)行的指令。用X標注普通指令。如上所述,對于多個分支指令中的每個分支指令,生成相應的第一掩碼。該第一掩碼代表如果采用該特定分支則執(zhí)行的指令。類似地,對于每個分支指令,生成相應的第二掩碼。該第二掩碼代表如果不采用該特定分支則執(zhí)行的指令。因此,在步驟303結束時,指令序列內的每個分支將具有兩個掩碼(一個代表如果采用分支則執(zhí)行的指令的掩碼,以及另一個代表如果不米用分支則執(zhí)行的指令的掩碼)。在一個實施例中,這些掩碼包含位集合。分支預測部件403檢查指令段內的分支并且預測每個分支將被采用(“T”)還是不被采用(“NT”)。在本實施例中,由提取模塊的比較和跳過邏輯部件404對分支預測部件403的輸出進行處理。通過比較和跳過模塊404的操作,分支預測輸出用來在用于指令序列的每個分支指令的第一掩碼或者第二掩碼之間進行選擇。圖4示出結果掩碼410。如上所述,對于給定的分支,如果分支預測輸出指示將采用分支,則將選擇用于分支的第一掩碼。如果分支預測輸出指示將不采用分支,則將選擇用于分支的第二掩碼。由分支預測輸出所選擇的掩碼被示出為結果掩碼410。先前分支可以使結果掩碼無效。在圖4中示出這一點,其中結果掩碼410的頂部示出它們的相應狀態(tài)為有效且采用(“VT”)或者無效(“NV”)。如上所述,對于指令序列的每個分支指令,如果預測先前分支越過或者跳過后續(xù)分支,則使該后續(xù)分支的結果掩碼無效。類似地,指令序列中的先前分支可以通過跳過后續(xù)分支來使該后續(xù)分支無效。因此,即使由分支預測輸出可 以預測結果掩碼為采用(“T”),但是先前分支可以然后使該結果掩碼無效。在圖4中示出這一點,其中即使預測分支c3為采用,但是比較和跳過邏輯404使c3的結果掩碼無效。在圖4的實施例中,掩碼無效導致掩碼的所有序列位置(例如,I至16)用I填充。圖4還示出最終掩碼420的輸出指令序列。如上所述,提取模塊對所有結果掩碼執(zhí)行邏輯操作(例如,邏輯與(AND)操作)以產(chǎn)生最終掩碼。因而,該最終掩碼標識如下指令,這些指令包括指令序列中的正如由序列內的多個分支的預測結果所確定的執(zhí)行路徑。在一個實施例中,僅對有效的結果掩碼執(zhí)行邏輯操作。在另一實施例中,對所有掩碼執(zhí)行邏輯操作,其中無效掩碼用全I填充。最終掩碼420用來從包括指令序列的多個指令之中選出用于執(zhí)行的指令子集。在這樣做時,由提取模塊產(chǎn)生緊湊的執(zhí)行路徑指令序列。在一個實施例中,在每個單周期中產(chǎn)生該緊湊的執(zhí)行指令序列。應當注意,本發(fā)明的實施例的算法基于也在單周期內的分支預測形成最終的指令序列。執(zhí)行該任務而無需以順序方式處理分支(例如,不以每周期一個分支的速率逐個分支地處理指令序列)。在一個實施例中,通過將每個分支與如下位進行關聯(lián)來有助于該算法,該位對指令序列中的分支位置進行標識。使用那些位,將每個分支與2個段進行關聯(lián)(例如,分支段表402)。如上所述,第一段是跟隨分支直至下一分支的指令序列。第二段是從分支的目標開始直至下一分支的指令序列。在分支的目標(例如,正如由從當前分支位置的偏移所指示的)旁邊的分支標識位用來創(chuàng)建那些段。同時,在分支預測表中并行查找所有分支以發(fā)現(xiàn)它們的預測;那些分支預測與典型的單分支預測相似。還應當注意,在一個實施例中,并行比較每個分支位置與先前分支目標以標識該分支是在先前分支的范圍以內還是在先前分支的范圍以外。然后確定該分支是否被從分支位置上跳轉的先前有效分支的目標跳過。通過分支預測的并行查找使該信息有資格來發(fā)現(xiàn)跳過哪些分支并且因此在最終的指令序列中不包括它們的序列形成。最終的指令序列如圖4中所示由通過使用分支預測選擇每個有效的(例如,由于跳過它的先前有效分支而未被跳過)分支的預測段以生成那些分支的結果掩碼來匯編相關指令段而形成。圖5示出根據(jù)本發(fā)明的一個實施例的遠分支緩存501和遠跳轉目標指令緩存502。圖5還示出遠分支預測器503。圖5的實施例示出整個微處理器流水線的優(yōu)化,其中向提取模塊(例如,指令序列消歧邏輯)呈現(xiàn)2個或者更多緩存行。在圖5的實施例中,先從多個緩存行收集指令。提取始于指向指令序列的開始緩存行,在圖5中示出為緩存行X。從緩存結構501提取該開始緩存行和下一后續(xù)緩存行,緩存行X+1 (或者更多)。如果指令序列恰好具有在下一緩存行(例如,緩存行X+1)以外的遠跳轉,則遠跳轉目標指令緩存結構502用來以遠目標緩存行(例如,緩存行Y)替換該下一緩存行。如果來自遠分支預測器503的預測指示將采用遠目標緩存行,則選擇遠目標緩存行指令序列。否則,由提取模塊忽略遠目標緩存行Y。在另一實施例中,取代在緩存結構中存儲全部緩存行,可以將緩存行的部分串接在一起并且存儲于緩存結構中。在一個實施例中,在分支邊界將緩存行的部分串接在一起以形成可以用來提高有效指令序列的密度的全新緩存行。為了使得該功能成為可能,分支預測信息與緩存行一起存儲以聲明如何將緩存行的部分進行串接,從而當實際分支結果已知時可以驗證那些預測??紤]到新串接的緩存行部分,還可以修改或者添加遠分支以向新目標進行跳轉,由此提高傳入指令的前端吞吐量。在一個實施例中,可以在2個階段上完成這一點。第一階段從緩存結構提取多個緩存行。然后向指令序列匯編器呈現(xiàn)選擇的緩存行,該指令序列匯編器基于動態(tài)分支預測使分支消歧并且匯編最終的指令序列。指令序列緩沖器結構設置于指令序列消歧邏輯的輸出。指令序列緩沖器用作對于流水線的下一階段的緩沖器并且還有選擇地存儲用于將來使用的某些指令序列。指令序列緩沖器可以存儲頻繁預測的序列(當導致該序列的分支是可高度地預測的時)或者頻繁錯過預測的序列(當導致該序列的分支是可高度地錯過預測的時)的最終匯編段。該指令序列緩沖器將提高帶寬并且減少對于前端的指令提取模塊的延時,因為在緩沖器中存儲的那些序列無需經(jīng)歷使用分支預測表和掩碼的前述指令定序過程。圖6示出根據(jù)本發(fā)明的一個實施例的示例性微處理器流水線600的示圖。微處理器流水線600包括實現(xiàn)如上所述的用于標識和提取包括執(zhí)行的指令的過程的功能的提取模塊601。在圖6的實施例中,在提取模塊之后是解碼模塊602、分配模塊603、調度模塊604、執(zhí)行模塊605和指令引退模塊606。應當注意,微處理器流水線600僅為實現(xiàn)上述本發(fā)明的實施例的功能的流水線的一個示例。本領域技術人員將認識到,可以實現(xiàn)包括上述解碼模塊的功能的其它微 處理器流水線。
已經(jīng)出于說明的目的參照具體實施例描述了前述說明書。然而,上文所示討論并非旨在是詳盡的或者將本發(fā)明限于所公開的特定形式。許多修改和變化鑒于上述教導是可能的。選擇和描述實施例以便最好地說明本發(fā)明的原理及其實際應用,由此使本領域其他技術人員能夠借助可以與設想的特定使用相適應的各種修改來最好地利用本發(fā)明和各種實施例?!?br>
權利要求
1.一種標識指令的方法,所述方法包括: 訪問包括多個分支指令的多個指令; 對于所述多個分支指令中的每個分支指令,生成相應的第一掩碼和相應的第二掩碼,其中所述第一掩碼代表如果采用所述分支則執(zhí)行的指令,所述第二掩碼代表如果不采用所述分支則執(zhí)行的指令; 接收預測輸出,所述預測輸出包括對于所述多個分支指令中的每個分支指令的相應的分支預測; 對于所述多個分支指令中的每個分支指令,使用所述預測輸出以從所述相應的第一掩碼和第二掩碼之中選擇相應的結果掩碼; 對于每個分支指令,如果預測先前分支越過后續(xù)分支而分支,則使所述后續(xù)分支的結果掩碼無效; 對所有結果掩碼執(zhí)行邏輯操作以產(chǎn)生最終掩碼;以及 基于所述最終掩碼從所述多個指令選擇用于執(zhí)行的指令子集。
2.如權利要求1所述的方法,其中在所述訪問多個指令的一個時鐘周期內執(zhí)行所述選擇指令子集。
3.如權利要求1所述的方法,還包括向執(zhí)行單元提供所述指令子集用于執(zhí)行所述指令子集。
4.如權利要求1所述的方法,其中所述接收預測輸出包括從分支預測單元接收所述預測輸出。
5.如權利要求1所述的方法,其中將所述指令子集的分支指令減少到條件操作。
6.如權利要求1所述的方法,其中所述邏輯操作是與操作。
7.如權利要求6所述的方法,其中所有相應的第二掩碼包含所有位集合。
8.一種用于標識指令的系統(tǒng),所述系統(tǒng)包括: 提取模塊,訪問包括多個分支指令的多個指令; 對于所述多個分支指令中的每個分支指令,所述提取模塊生成相應的第一掩碼和相應的第二掩碼,其中所述第一掩碼代表如果采用所述分支則執(zhí)行的指令,所述第二掩碼代表如果不采用所述分支則執(zhí)行的指令; 由所述提取模塊接收預測輸出,所述預測輸出包括對于所述多個分支指令中的每個分支指令的相應的分支 預測; 對于所述多個分支指令中的每個分支指令,所述提取模塊使用所述預測輸出以從所述相應的第一掩碼和第二掩碼之中選擇相應的結果掩碼; 對于每個分支指令,如果預測先前分支越過后續(xù)分支而分支,則所述提取模塊使所述后續(xù)分支的結果掩碼無效; 由所述提取模塊對所有結果掩碼執(zhí)行邏輯操作以產(chǎn)生最終掩碼;以及 由所述提取模塊基于所述最終掩碼從所述多個指令選擇用于執(zhí)行的指令子集。
9.如權利要求8所述的系統(tǒng),其中在所述訪問多個指令的一個時鐘周期內執(zhí)行所述選擇指令子集。
10.如權利要求8所述的系統(tǒng),還包括向執(zhí)行單元提供所述指令子集用于執(zhí)行所述指令子集。
11.如權利要求8所述的系統(tǒng),其中所述接收預測輸出包括從分支預測單元接收所述預測輸出。
12.如權利要求8所述的系統(tǒng),其中將所述指令子集的分支指令減少到條件操作。
13.如權利要求8所述的系統(tǒng),其中所述邏輯操作是與操作。
14.如權利要求13所述的系統(tǒng),其中所有相應的第二掩碼包含所有位集合。
15.一種實現(xiàn)標識指令的方法的微處理器,所述微處理器包括: 微處理器流水線; 提取模塊,包括在所述 微處理器流水線中,其中所述提取模塊: 訪問包括多個分支指令的多個指令; 對于所述多個分支指令中的每個分支指令,生成相應的第一掩碼和相應的第二掩碼,其中所述第一掩碼代表如果采用所述分支則執(zhí)行的指令,所述第二掩碼代表如果不采用所述分支則執(zhí)行的指令; 接收預測輸出,所述預測輸出包括對于所述多個分支指令中的每個分支指令的相應的分支預測; 對于所述多個分支指令中的每個分支指令,使用所述預測輸出以從所述相應的第一掩碼和第二掩碼之中選擇相應的結果掩碼; 對于每個分支指令,如果預測先前分支越過后續(xù)分支而分支,則使所述后續(xù)分支的結果掩碼無效; 對所有結果掩碼執(zhí)行邏輯操作以產(chǎn)生最終掩碼;以及 基于所述最終掩碼從所述多個指令選擇用于執(zhí)行的指令子集。
16.如權利要求15所述的微處理器,其中在所述訪問多個指令的一個時鐘周期內執(zhí)行所述選擇指令子集。
17.如權利要求15所述的微處理器,還包括向執(zhí)行單元提供所述指令子集用于執(zhí)行所述指令子集。
18.如權利要求15所述的微處理器,其中所述接收預測輸出包括從分支預測單元接收所述預測輸出。
19.如權利要求15所述的微處理器,其中將所述指令子集的分支指令減少到條件操作。
20.如權利要求15所述的微處理器,其中所述邏輯操作是與操作。
21.如權利要求20所述的微處理器,其中所有相應的第二掩碼包含所有位集合。
22.一種用于向提取模塊提供多個緩存行的方法,包括: 從多個緩存行收集指令,其中所述多個緩存行中的一個緩存行包括指令序列的開始緩存行,所述多個緩存行中的一個緩存行包括在所述開始緩存行之后的后續(xù)緩存行,并且所述多個緩存行中的一個緩存行包括遠目標緩存行; 在接收所述執(zhí)行序列的執(zhí)行流程將從所述開始緩存行進行至所述后續(xù)緩存行的預測時,忽略用于執(zhí)行流程的所述遠目標緩存行以涵蓋所述后續(xù)緩存行;以及 在接收所述執(zhí)行序列的執(zhí)行流程將從所述開始緩存行進行至所述遠目標緩存行的預測時,忽略用于執(zhí)行流程的所述后續(xù)緩存行以涵蓋所述遠目標緩存行。
23.根據(jù)權利要求22所述的方法,其中從第一指令緩存訪問所述開始緩存行和所述后續(xù)緩存行,并且其中從第二指令緩存訪問所述遠目標緩存行。
24.根據(jù)權利要求22所述的方法,其中向指令序列匯編器呈現(xiàn)所述開始緩存行、所述后續(xù)緩存行和所述遠目標緩存行,其中所述指令序列匯編器使用動態(tài)分支預測來使所述指令序列的所述分支消歧。
25.根據(jù)權利要求24所述的方法,其中遠分支預測器用于生成分支預測以控制執(zhí)行流程將進行至所述后續(xù)緩存行還是所述遠目標緩存行。
26.根據(jù)權利要求22所述的方法,其中將緩存行的部分串接在一起并且存儲于緩存結構中,并且其中在 分支邊界處將所述緩存行的部分串接在一起以形成全新的緩存行。
全文摘要
本發(fā)明公開了一種標識指令的方法,該方法包括訪問包括多個分支指令的多個指令。對于多個分支指令中的每個分支指令,生成相應的第一掩碼,該第一掩碼代表如果采用分支則執(zhí)行的指令。生成相應的第二掩碼,該第二掩碼代表如果不采用分支則執(zhí)行的指令。接收預測輸出,該預測輸出包括對于每個分支指令的相應的分支預測。對于每個分支指令,使用該預測輸出以從相應的第一掩碼和第二掩碼之中選擇相應的結果掩碼。對于每個分支指令,如果預測先前分支越過后續(xù)分支而分支,則使所述后續(xù)分支的結果掩碼無效。對所有結果掩碼執(zhí)行邏輯操作以產(chǎn)生最終掩碼。使用該最終掩碼以選擇用于執(zhí)行的指令子集。
文檔編號G06F9/38GK103250131SQ201180053524
公開日2013年8月14日 申請日期2011年9月16日 優(yōu)先權日2010年9月17日
發(fā)明者M·阿布達拉 申請人:索夫特機械公司