国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      具有推測(cè)指令取指的數(shù)據(jù)處理器及操作方法

      文檔序號(hào):6408193閱讀:201來源:國知局

      專利名稱::具有推測(cè)指令取指的數(shù)據(jù)處理器及操作方法
      技術(shù)領(lǐng)域
      :本發(fā)明一般性地涉及數(shù)字計(jì)算系統(tǒng),更特別涉及具有猜測(cè)指令取指能力的數(shù)據(jù)處理器。分支預(yù)測(cè)是一種用來改進(jìn)數(shù)據(jù)處理器性能的技術(shù),用分支預(yù)測(cè)技術(shù)的數(shù)據(jù)處理器,每當(dāng)它們接收一分支指令時(shí)總要進(jìn)行猜測(cè),實(shí)行猜測(cè)(未決定分支指令),并通過完成指令(決定分支指令)確定猜測(cè)是否正確。這種數(shù)據(jù)處理器猜測(cè)是否最終實(shí)現(xiàn)分支并轉(zhuǎn)到新的指令地址(不是往下到另一順序的指令。具有預(yù)測(cè)分支指令的數(shù)據(jù)處理器,因?yàn)樗鼈冃纬烧_猜測(cè)比完成分支指令更快而增加了其性能。這樣這些數(shù)據(jù)處理器所需的僅僅是校正錯(cuò)誤猜測(cè)。分支預(yù)測(cè)技術(shù)允許數(shù)據(jù)處理器盡可能快的在取下一個(gè)指令或指令組而增加數(shù)據(jù)處理器性能。因此,數(shù)據(jù)處理器總有連續(xù)指令流在執(zhí)行。這種策略稱“指令預(yù)取指”,因?yàn)閿?shù)據(jù)處理器在它執(zhí)行分支指令之前取指令以確定預(yù)取指令的地址。在某些數(shù)據(jù)處理系統(tǒng)中,統(tǒng)一的取指指令,對(duì)系統(tǒng)的整個(gè)性能可能不利。通常,在數(shù)據(jù)處理器的內(nèi)部存儲(chǔ)器的高速緩存中不包括預(yù)取指指令。在這種情況下,數(shù)據(jù)處理器必須從外部存儲(chǔ)器系統(tǒng)取指。這種操作壟斷同外部存儲(chǔ)裝置相連的總線,同時(shí)可使共用外部存儲(chǔ)器裝置的其它裝置實(shí)現(xiàn)同系統(tǒng)存儲(chǔ)器有關(guān)協(xié)議(探聽操作)相符合的某些作用。另外,數(shù)據(jù)處理器直到接收居先的不正確指令才能請(qǐng)求其它的、可假定是正確的指令。其優(yōu)點(diǎn)是只要可能,就使這些操作的次數(shù)變?yōu)樽钚?。每個(gè)猜測(cè)的分支指令對(duì)所選的指令通道混有不正確的東西,因此可能有不需要的取指,例如有些分支預(yù)測(cè)方案,預(yù)測(cè)分支正確率可達(dá)90%不正確率為10%。經(jīng)三次預(yù)測(cè)仍未決定分支,數(shù)據(jù)處理器沿正確指令流通道進(jìn)行取指的機(jī)遇只有73%。繼續(xù)用這例子,已知數(shù)據(jù)處理器同樣猜測(cè)第一和第3分支預(yù)測(cè),既可通過兩個(gè)分支指令指示的地址(或者是在兩個(gè)指令之后形成的順序地址)預(yù)取指令亦可不預(yù)取指令,如上所述,若數(shù)據(jù)處理器不包括由分支指令返回的特殊指令,這兩指令中每個(gè)都可以使數(shù)據(jù)處理器經(jīng)系統(tǒng)總線存取外部存儲(chǔ)器系統(tǒng)。其它相同時(shí),寧可壟斷系統(tǒng)總線取第一指令而不取第3指令。然而,以前數(shù)據(jù)處理器沒有這種特性。根據(jù)本發(fā)明公布的具有推測(cè)指令取指的數(shù)據(jù)處理器,它實(shí)質(zhì)上消除了已有的數(shù)據(jù)處理器缺點(diǎn)。所用具有外部存儲(chǔ)系統(tǒng)的數(shù)據(jù)處理器,具有分支預(yù)測(cè)單元及與其相結(jié)合的指令取指電路。分支預(yù)測(cè)單元形成取指地址,存儲(chǔ)一個(gè)表示前面未決定分支指令數(shù)目的信號(hào)及形成控制信號(hào)。在第一種操作方式中,控制信號(hào)所對(duì)應(yīng)的第一種邏輯狀態(tài)和第二種邏輯狀態(tài)分別表示信號(hào)代表數(shù)小于等于第一預(yù)選擇數(shù)或大于第一預(yù)選擇數(shù)。在第二種操作方式中,控制信號(hào)對(duì)應(yīng)的第一種邏輯狀態(tài)和第二種邏輯狀態(tài)分別表示信號(hào)代表數(shù)小于等于第二預(yù)選擇數(shù)或大于第二預(yù)選擇數(shù)。指令取指電路從外部存儲(chǔ)器系統(tǒng)與控制信號(hào)的第一狀態(tài)相對(duì)應(yīng)的取指地址間址取指。用外部存儲(chǔ)器系統(tǒng)的數(shù)據(jù)處理器的操作方法亦被說明,這種方法有在分支預(yù)測(cè)單元中有如下步,接收分支指令,對(duì)應(yīng)于分支指令預(yù)測(cè)取指地址,存儲(chǔ)未決定的分支指令數(shù)并形成控制信號(hào)。在第一種操作方式中,控制信號(hào)對(duì)應(yīng)的第一種和第二種邏輯狀態(tài),分別對(duì)應(yīng)于未決定的分支指令數(shù)小于等于第一預(yù)選擇數(shù)及大于第一預(yù)選擇數(shù),在第二種操作方式中,控制信號(hào)對(duì)應(yīng)的第一種和第二種邏輯狀態(tài)分別對(duì)應(yīng)于未決定的分支指令數(shù)小于等于第二預(yù)選擇數(shù)及大于第二預(yù)選擇數(shù)。這種方法還包括在同分支預(yù)測(cè)單元相聯(lián)的指令取指電路中,對(duì)應(yīng)于控制信號(hào)從外部存儲(chǔ)系統(tǒng)中取指令的步驟。通過結(jié)合附圖的譯細(xì)說明將會(huì)清楚的了解。本發(fā)明的特點(diǎn)和優(yōu)點(diǎn)這些圖號(hào)對(duì)應(yīng)的部件如下圖1根據(jù)本發(fā)明描繪了數(shù)據(jù)處理系統(tǒng)的框圖結(jié)構(gòu)。圖2描繪了在圖1中描繪的數(shù)據(jù)處理器的框圖。圖3描繪了在圖2中描繪的分支單元的方框圖。圖4描繪了在圖2中描繪的指令高速緩存的框圖。圖5描繪了在圖4中描繪的指令高速緩存邏輯單元的狀態(tài)轉(zhuǎn)換圖。圖6描繪了在圖2中描繪的總線接口單元的框圖。圖1描繪了根據(jù)本發(fā)明構(gòu)成的數(shù)據(jù)處理系統(tǒng)10的方框圖。數(shù)據(jù)處理系統(tǒng)10由第一數(shù)據(jù)處理器塊12,第二數(shù)據(jù)處理器塊14,主存儲(chǔ)器塊16,總線仲裁塊18和輸入輸出(以下稱I/O)塊20經(jīng)地址總線和數(shù)據(jù)總線內(nèi)部相連而成。如上所述第二數(shù)據(jù)處理塊14有外部高速緩存塊22(典型的二次或“L2”高速緩沖)。數(shù)據(jù)處理器12和14預(yù)測(cè)分支指令,預(yù)取通過分支單元28的返回地址所指示的指令,分支單元28以任意次序?qū)?yīng)接收到的分支指令及后續(xù)無任何分支的指令,形成取指地址。而且,數(shù)據(jù)處理器12和14根據(jù)用戶可編程位選擇預(yù)取指令。每個(gè)數(shù)據(jù)處理器預(yù)取指令數(shù)取決于特定取指地址形成時(shí)有多少未決定的分支指令存在。每個(gè)數(shù)據(jù)處理器因此限制了經(jīng)地址和數(shù)據(jù)總線存取主存儲(chǔ)器塊16的次數(shù),例如當(dāng)不正確分支猜測(cè)有高概率時(shí)。本發(fā)明形成的數(shù)據(jù)處理器在單處理器(未示出)和多處理器(MP)數(shù)據(jù)處理系統(tǒng)(示出)中性能良好,在單處理器環(huán)境下,一個(gè)數(shù)據(jù)處理器可以是唯一的主存儲(chǔ)器用戶。在這種情況下一個(gè)不正確取指僅推遲一個(gè)處理器取出正確指令,相反,在多處理器環(huán)境下,不正確的取指將推遲處理器之一取出正確指令并將阻止其他處理器使用公共總線。根據(jù)本發(fā)明的數(shù)據(jù)處理器可以編程使在每種數(shù)據(jù)處理系統(tǒng)中工作在最佳情況。圖1描述的許多功能塊在技術(shù)上已是熟知的。數(shù)據(jù)處理塊12和14,利用存貯在主存儲(chǔ)塊16的數(shù)據(jù)和通過I/O塊20接收的數(shù)據(jù)執(zhí)行存儲(chǔ)在主存儲(chǔ)器塊16中的指令。I/O塊20提供從數(shù)據(jù)處理系統(tǒng)10到鍵盤,盤驅(qū)動(dòng)器和電子網(wǎng)絡(luò)等的接口,總線仲裁器18接收來自數(shù)據(jù)處理系統(tǒng)10的各塊請(qǐng)求,以使數(shù)據(jù)和地址總線排它性使用,總線仲裁塊18根據(jù)協(xié)議(與本發(fā)明無關(guān))受理這些請(qǐng)求。數(shù)據(jù)處理器塊14存儲(chǔ)頻繁使用的數(shù)據(jù)在高速緩沖塊22中。圖2描述了在圖1描述的數(shù)據(jù)處理器12的方框圖。數(shù)據(jù)處理器12和14實(shí)質(zhì)上是相似的。因此,下面優(yōu)選實(shí)施例將詳細(xì)對(duì)數(shù)據(jù)處理器12來說明,必要時(shí),說明它與數(shù)據(jù)處理器14的不同。繼續(xù)看圖2,總線接口單元(以后稱BIU)23控制在數(shù)據(jù)處理器12和數(shù)據(jù)處理系統(tǒng)10的其余部分間的數(shù)據(jù)流。BIU23連到指令高速緩存24再到數(shù)據(jù)高速緩沖26。指令高速緩存24提供指令流到分支單元28,再到完成/調(diào)度單元30。完成/調(diào)度單元30進(jìn)而把各個(gè)指令送到合適的執(zhí)行單元。數(shù)據(jù)處理器12有定點(diǎn)執(zhí)行單元32,裝載/存儲(chǔ)執(zhí)行單元34和浮點(diǎn)執(zhí)行單元36。定點(diǎn)執(zhí)行單元32和裝載/存儲(chǔ)執(zhí)行單元34將其結(jié)果讀和寫到通用目的結(jié)構(gòu)寄存器堆38(標(biāo)成GPRS以后稱GPR堆)和第一更各緩沖器40,浮點(diǎn)執(zhí)行單元36和裝載/存儲(chǔ)執(zhí)行單元34讀和寫其結(jié)果到浮點(diǎn)結(jié)構(gòu)寄存器堆42(標(biāo)成FPRS以后稱FPR堆)和第二更名緩中器44。數(shù)據(jù)處理器12的操作在技術(shù)上是熟知的,它沒有用推斷指令預(yù)取指方法。通常,BIU23同數(shù)據(jù)處理系統(tǒng)10通信,BIU23將結(jié)合圖6詳述。分支單元18決定在給定某些數(shù)據(jù)寄存器內(nèi)容和程序步驟的情況下,什么編程指令序列是合適的。分支單元18結(jié)合圖3在下面詳述。分支單元38首先希望從指令高速緩存24中取指,若所請(qǐng)求的指令沒有存在指令高速緩存24中,那么指令高速緩存24將發(fā)送一請(qǐng)求到BIU23,從主存16去取請(qǐng)求指令。指令高速緩存24將結(jié)合圖4和圖5在下面詳述。完成/調(diào)度單元30對(duì)不同的執(zhí)行單元32,34和36發(fā)各自的指令。每個(gè)執(zhí)行單元實(shí)現(xiàn)一個(gè)或多個(gè)特殊指令類的指令。每個(gè)執(zhí)行單元的特殊指令類用執(zhí)行單元的名字表示,如浮點(diǎn)執(zhí)行單元36執(zhí)行浮點(diǎn)算術(shù)指令。定點(diǎn)執(zhí)行單元32把操作的結(jié)果返回到第一更名緩沖器40,中指定的條目項(xiàng)。當(dāng)形成結(jié)果指令之前的所有指令已經(jīng)更新了它們的GPR或FDR堆條目時(shí),第一更名緩沖器40用它自已條目周期性地更新GPR堆38的條目。完成/調(diào)度單元30通過在完成緩沖器46中保留的所有執(zhí)行指令表協(xié)調(diào)這種更新。第一更名緩沖器40和GPR堆38均對(duì)定點(diǎn)執(zhí)行單元32提供操作數(shù),相反,浮點(diǎn)執(zhí)行單元36將運(yùn)算結(jié)果返回第二更名緩沖器44中指定的條目中。當(dāng)形成結(jié)果的指令之前的所有指令已經(jīng)更新它們的GPR或FPR堆條目時(shí),第二更名緩中器44周期性用第二更名緩沖器44中條目更新FPP堆42的條目。完成/調(diào)度單元30也協(xié)調(diào)這種更新,第二更名緩沖器44和FPR堆42均對(duì)浮點(diǎn)執(zhí)行單元36提供操作數(shù)。裝載/存貯單元34讀存于GPR堆38,第一更名緩沖器40,F(xiàn)PR堆42或第二更名緩沖器44中的數(shù)據(jù)并把選定的數(shù)據(jù)寫到數(shù)據(jù)高速緩存26中。這些數(shù)據(jù)亦可以通過同本發(fā)明無關(guān)的數(shù)據(jù)處理器12的操作特性寫到主存儲(chǔ)器系統(tǒng)16中。相反,裝載/存儲(chǔ)單元34讀出存于數(shù)據(jù)高速緩存26的數(shù)據(jù)并把這些讀出數(shù)據(jù)寫到GPR堆38,第一更名緩沖器40,F(xiàn)PR堆42或第二更名緩沖器44。公開的具有推測(cè)指令預(yù)取指方法的數(shù)據(jù)處理器12的操作下面,結(jié)合圖3到圖6說明,通常,數(shù)據(jù)處理器12是精簡指令集計(jì)算機(jī)(“RISC”)。數(shù)據(jù)處理器12把每個(gè)指令斷成一系列較小步,其中每步可以同其它指令在時(shí)間上重迭執(zhí)行而得到高性能。這種操作策略稱為“流水線技術(shù)”。數(shù)據(jù)處理器12亦可以通過把靜態(tài)和動(dòng)態(tài)分支預(yù)測(cè)方法相結(jié)合而得到高性能。數(shù)據(jù)處理器12可以用與用戶編程值對(duì)應(yīng)的靜態(tài)或動(dòng)態(tài)分支預(yù)測(cè)方式工作。而且,在用靜態(tài)分支預(yù)測(cè)方法時(shí)。數(shù)據(jù)處理器12根據(jù)可編程位中一位,在分支歷史表內(nèi)更新或不更新每個(gè)分支指令的分支狀態(tài)。在所述的實(shí)施例中,每個(gè)指令斷成5個(gè)分離步取指,調(diào)度,執(zhí)行,回寫和完成。在指令高速緩存24中存儲(chǔ)器管理電路(未示出)在取指階段時(shí)期,按分支單元28標(biāo)識(shí)的存儲(chǔ)器地址的起點(diǎn)取出一個(gè)或多個(gè)指令。完成/調(diào)度單元30在確定無不允許的數(shù)據(jù)從屬,并在調(diào)度階段內(nèi)對(duì)指令的結(jié)果保存更名緩沖器條目后發(fā)送每個(gè)指令到相應(yīng)執(zhí)行單元。每個(gè)執(zhí)行單元在執(zhí)行階段執(zhí)行程序指令并在回寫階段把結(jié)果(如果存在)寫入被保留的更名緩沖器條目。最后,完成/調(diào)度單元30,在特殊指令之前的每指令已經(jīng)這樣更新結(jié)構(gòu)寄存器信息以后,用存儲(chǔ)在更名緩沖器中特殊指令的結(jié)果更新結(jié)構(gòu)寄存器信息。通常,每個(gè)指令相位取一個(gè)機(jī)器時(shí)鐘周期,然而有些指令當(dāng)其它指令不需要5個(gè)階段時(shí)需要多于一個(gè)時(shí)鐘周期去執(zhí)行。由于完成各種指令的時(shí)間有不同,在特殊指令的回寫和完成階段之間也就可以出現(xiàn)延遲。圖3描繪了在圖2中描繪的分支單元28的方框圖、分支單元28形成下個(gè)指令地址以從存儲(chǔ)器中取指(標(biāo)記成ADDRESSTOIN-STRUCTIONCACHE24指令高速緩存24地址)并從指令高速緩存24(標(biāo)記成INSTRUCTIONSFROMINSTRUCTIONCACHE24指令來自指令高速緩存24)接收下個(gè)取出的指令。分支單元28也形成控制信號(hào)GOTOBUS(到總線)和OVERRIDE(取代),以確定是否數(shù)據(jù)處理器12存取地址和數(shù)據(jù)總線,以取未存儲(chǔ)在指令緩沖器24中的指令。分支單元28在調(diào)度緩沖器48中鎖存接收的指令。在描繪實(shí)施例中,分支單元28的每個(gè)時(shí)鐘周期接收4個(gè)指令處在前一地址(取指地址)上的指令和跟在取指地址后三個(gè)地址上居留的3個(gè)指令。調(diào)度緩沖器48形成控制信號(hào)DBEMPTY(DB空)。調(diào)度緩沖器48當(dāng)調(diào)度緩沖器48為空時(shí)置位DBEMPTY。第一分支檢測(cè)器50在4個(gè)鎖存指令的每組內(nèi)鑒別第一分支指令(如果存在)。第一分支檢測(cè)器50形成控制信號(hào)INCOMINGBRANCH(引入分支)。第一分支檢測(cè)器50當(dāng)調(diào)度緩沖器48包含一個(gè)或多個(gè)分支指令時(shí)置位IN-COMINGBRANCH信號(hào)。鎖存于調(diào)度緩沖器48中的第一指令地址被傳送到分支取指單元52,分支調(diào)度/執(zhí)行單元54及分支完成單元56,分支取指單元52,分支調(diào)度/執(zhí)行單元54及分支完成單元56雖然處在不同的指令相位期,均形成一個(gè)地址,據(jù)此下一指令將被取出。分支調(diào)度/執(zhí)行單元54也接收第一分支檢測(cè)器50的輸出。這三個(gè)單元的操作如下說明,多路開關(guān)選擇器58(標(biāo)為MUX)根據(jù)地址選擇器60選擇3個(gè)存儲(chǔ)器地址之一輸出。地址選擇器60接收來自分支取指單元52,分支調(diào)度/執(zhí)行單元54和分支完成單元56的控制信號(hào),將其譯碼確定3個(gè)存儲(chǔ)地址的那個(gè)地址輸出。指令取指地址寄存器62(下文標(biāo)成IFAR)鎖存多路開關(guān)選擇器58的輸出,IFAR62形成標(biāo)識(shí)為AD-DRESSTOMEMORY(到存儲(chǔ)器的地址)的信號(hào)。一旦IFAR62鎖存當(dāng)前取指地址,分支取指單元52就為一特定分支指令計(jì)算2個(gè)新取指地址。這一計(jì)算發(fā)生在特定分支指令的取指階段。由取指地址變址地特定指令在取指階段并不能被知道。分支取指單元52輸出這兩個(gè)地址之一到多路開關(guān)選擇器58,當(dāng)與當(dāng)前取指地址關(guān)聯(lián)的分支指令被假定為不被接受或“歸于失敗”而分支指令到下一個(gè)順序指令時(shí),輸出第一個(gè)地址。當(dāng)與當(dāng)前取指地址結(jié)合的分支指令被假設(shè)已被接受或指令流“跳到”一個(gè)新地址時(shí),第二個(gè)地址被輸出。分支取指單元52有兩個(gè)內(nèi)部流水線,每個(gè)流水線計(jì)算這兩個(gè)新取指地址之一。第一個(gè)分支取指單元流水線通過增加由IFAR62鎖存的地址計(jì)算順序地址。在所描述實(shí)施例中這個(gè)第一分支取指單元流水線將4個(gè)指令長度加到IFAR62的內(nèi)容上去。第二分支取指單元流水線利用IFAR62內(nèi)容的一部分對(duì)被稱為分支目標(biāo)地址高速緩存64(以下稱BTAC)的隨機(jī)存取存儲(chǔ)器(RAM)高速緩存的第一塊進(jìn)行變址。在描繪的實(shí)施例中,分支取指單元52存貯分支目標(biāo)地址(取指地址)和與BTAC64中一些最近分支指令的取指地址相聯(lián)系的分支指令的地址子集。在描繪的實(shí)施例中,BTAC64是一個(gè)二路相關(guān)的高速緩存。BTAC64利用鎖存在IFAR62中的一個(gè)地址子集對(duì)BTAC64中的兩個(gè)入口進(jìn)行變址。然后分支取指單元60將變址地址的剩余位同存貯在BTAC64的兩個(gè)變址項(xiàng)目中的每個(gè)里的地址位的子集進(jìn)行比較。若兩個(gè)比較中有一個(gè)匹配,那么出現(xiàn)一個(gè)BTAC“命中”,且分支取指單元52結(jié)合匹配的地址位子集輸出“取分支”取指地址。若兩個(gè)比較均不匹配,那么產(chǎn)生一個(gè)BTAC“未命中”,且分支取址單元60將已被增加的IFAR2的內(nèi)容,輸出到多路開關(guān)選擇器58。分支調(diào)度/執(zhí)行單元54當(dāng)它接收到由IFAR62的內(nèi)容變址的特定指令并且第一分支檢測(cè)器50在四個(gè)取指指令中標(biāo)識(shí)出第一分支指令時(shí)如果有的話立刻計(jì)算兩個(gè)取指地址,分支調(diào)度/執(zhí)行單元54在特定指令的調(diào)度階段為特定分支指令計(jì)算兩個(gè)地址。這兩個(gè)取指地址相應(yīng)于“不取分支”和“取分支”條件。分支調(diào)度/執(zhí)行單元54僅將這兩個(gè)地址之一輸出到多路開關(guān)選擇器58。應(yīng)當(dāng)注意。分支取指單元52已經(jīng)在流水線階段根據(jù)同一分支指令將一新取指地址輸出給多路開關(guān)選擇器58。根據(jù)在分支調(diào)度/執(zhí)行單元54或分支完成單元56內(nèi)同時(shí)被執(zhí)行的分支指令的結(jié)果,IFAR62可以用這兩單元之一的輸出裝載。在這種情況下,數(shù)據(jù)處理器12將在這地址的開始取指令。分支調(diào)度/執(zhí)行單元54亦有兩個(gè)內(nèi)部流水線用以計(jì)算它的兩個(gè)取指地址。第一流水線通過逐條增加分支指令地址來計(jì)算順序地址。第一分支檢測(cè)器50在每一包含4個(gè)被取指指令的組里計(jì)算第一分支指令地址,如果有的話。第二個(gè)分支調(diào)度/執(zhí)行單元流水線根據(jù)特定分支指令計(jì)算取址地址。例如,這個(gè)流水線可以將一嵌入指令的偏移量加到分支指令地址中。一個(gè)分支預(yù)測(cè)單元(未示出)選擇分支調(diào)度/執(zhí)行單元54把兩個(gè)地址中的一個(gè)輸出到多路開關(guān)選擇器58。分支預(yù)測(cè)邏輯單元對(duì)應(yīng)于用戶可編程控制位,以下列三個(gè)方式之一進(jìn)行操作(1)動(dòng)態(tài)分支預(yù)測(cè);(2)用BHT更新的靜態(tài)分支預(yù)測(cè);(3)無BHT更新的靜態(tài)分支預(yù)測(cè)。一個(gè)分支指令是否被取這同分支轉(zhuǎn)到何處是無關(guān)的(若被取的話)。條件分支指令是分支指令的一類,它依靠一個(gè)在分支指令的調(diào)度/執(zhí)行階段通常是不知道的命令結(jié)果。這種依賴決定了分支是否被取,并不決定取指地址是什么,因此,分支調(diào)度/執(zhí)行單元54根據(jù)動(dòng)態(tài)分支預(yù)測(cè)方法或靜態(tài)分支預(yù)測(cè)方法選擇兩個(gè)地址之一,這特定預(yù)測(cè)方法,通過在專用目的寄存器(未示出)設(shè)置某些位而使用戶能控制。根據(jù)動(dòng)態(tài)分支預(yù)測(cè)方法進(jìn)行操作的同時(shí),分支調(diào)度/執(zhí)行單元54利用IFAR62內(nèi)容的一部分對(duì)被稱為分支歷史表64(下文稱BHT)的第二RAM塊進(jìn)行變址,分支調(diào)度/執(zhí)行單元54為每個(gè)分支指令或某些分支指令子集定義一個(gè)分支狀態(tài)。特定分支指令的狀態(tài)決定分支是否被取出。所描述的實(shí)施例中用的分支狀態(tài)方式是已為大家熟知的含4種狀態(tài)的模式STRONG—NOT—TAKEN(強(qiáng)不取)WEAK—NOT—TAKEN(弱不取),WEAK—TAKEN(弱取)和STRONGTAKEN(強(qiáng)取)。若指令分支狀態(tài)對(duì)應(yīng)于強(qiáng)不取或弱不取,分支調(diào)度/執(zhí)行單元54預(yù)測(cè)分支將不取出。分支調(diào)度/執(zhí)行單元54,在指令完成后更新一特定分支指令的分支狀態(tài),若分支調(diào)度/執(zhí)行單元54不正確地預(yù)測(cè)了分支指令,那么分支調(diào)度/執(zhí)行單元54將更新BHT66中相應(yīng)的條目,使其從一個(gè)狀態(tài)變?yōu)橥瑯拥娜鯛顟B(tài)或從弱狀態(tài)到相反的弱狀態(tài)。相反,若分支調(diào)度/執(zhí)行單元54正確地預(yù)測(cè)了分支指令,那么,分支調(diào)度/執(zhí)行單元54將更新BHT66中相應(yīng)條目,使其從一個(gè)弱狀態(tài)變?yōu)橄嗤瑥?qiáng)狀態(tài)或從強(qiáng)狀態(tài)變成同樣的強(qiáng)狀態(tài)。根據(jù)靜態(tài)分支預(yù)測(cè)方法進(jìn)行操作的同時(shí),分支調(diào)度/執(zhí)行單元54用一位或多位嵌入到分支指令位中,以確定分支是否被實(shí)現(xiàn)。這些位在包含有分支指令的程序被編譯完成時(shí)一次設(shè)定。所述實(shí)施例中,在靜態(tài)分支預(yù)測(cè)模式中二位被用于預(yù)測(cè)分支指令。這兩位之一是一個(gè)符號(hào)位,通常表示在分支調(diào)度/執(zhí)行單元54中,第二流水線是加2個(gè)數(shù)以形成取指地址還是減2個(gè)數(shù)以形成取指地址(向前取指還是向后取址)。第二位是一個(gè)分支預(yù)測(cè)位,它表示分支是否應(yīng)被實(shí)現(xiàn)。當(dāng)符號(hào)位被觸發(fā)時(shí),分支預(yù)測(cè)位的邏輯狀態(tài)和所得到的動(dòng)作之間的關(guān)系顛倒,不管怎樣,符號(hào)位和分支預(yù)測(cè)位被解碼成單一實(shí)現(xiàn)/不實(shí)現(xiàn)位。若單一實(shí)現(xiàn)/不實(shí)現(xiàn)位在邏輯上等于第一狀態(tài),那么分支預(yù)測(cè)邏輯單元將選擇在分支調(diào)度/執(zhí)行單元54中由第一流水線產(chǎn)生的地址。若單一實(shí)現(xiàn)/不實(shí)現(xiàn)位邏輯上等于第二狀態(tài),那么分支預(yù)測(cè)邏輯單元將選擇在分支調(diào)度/執(zhí)行單元54中由第二流水線生成的地址。當(dāng)分支調(diào)度/執(zhí)行單元54根據(jù)靜態(tài)分支預(yù)測(cè)方法運(yùn)行時(shí),它可能會(huì)或可能不會(huì)更新BHT66。更新BHT66或不更新BHT66的決定是一個(gè)有重要意義的決定。分支完成單元56在特定分支指令被完成以后為一特定分支指令形成一個(gè)單一地址。同任何其它指令一樣,當(dāng)在分支指令之前的所有指令已把它的結(jié)果寫到適當(dāng)結(jié)構(gòu)寄存器時(shí),分支指令被完成。這時(shí),分支指令所依據(jù)的條件,以及分支是否被實(shí)現(xiàn)已知道。須注意。分支取指單元52已在同一分支指令的取指階段根據(jù)同一分支指令將一指令取指地址輸出給多路器58。同時(shí)分支調(diào)度/執(zhí)行單元54可能已在同一指令的調(diào)度/執(zhí)行階段將第二指令取指地址輸出給多路開關(guān)選擇器58。分支完成單元56在其內(nèi)部有一先進(jìn)先出隊(duì)列,也就是分支隊(duì)列68,其中存貯著有關(guān)每個(gè)被執(zhí)行的分支指令的數(shù)據(jù)。分支完成單元56通過數(shù)據(jù)/控制信號(hào)集66分支調(diào)度/執(zhí)行單元55接收有關(guān)每個(gè)指令的某些數(shù)據(jù)(1)由分支調(diào)度/執(zhí)行單元54形成的但并不輸出到多路開關(guān)選擇器58(未選擇通路)的取指地址;(2)在調(diào)度/執(zhí)行階段進(jìn)行分支計(jì)算所依賴的條件的預(yù)測(cè)值;(3)分支指令的分支狀態(tài)。分支完成單元56也存貯分支隊(duì)列68中每個(gè)分支指令的地址。分支完成單元56從完成/調(diào)度單元20接收一個(gè)指示何時(shí)每個(gè)分支指令完成的控制信號(hào)。在分支指令完成后,分支完成單元56接收分支條件的實(shí)在值,此分支條件是調(diào)度/執(zhí)行取指地址的基礎(chǔ)(這分支指令被分解了)。典型的這種條件是一個(gè)專用目的寄存器(條件寄存器)中可以被其它指令來修改的一位。若條件的實(shí)際值與存儲(chǔ)在分支隊(duì)列68中的預(yù)測(cè)值不同,則由分支調(diào)度/執(zhí)行單元54形成的分支預(yù)測(cè)有錯(cuò)。在這種情況下,分支完成單元56與分支指令相結(jié)合輸出所存貯的地址。這地址是一開始未被分支調(diào)度/執(zhí)行單元54選擇的路徑。若條件的實(shí)際值與存貯在分支隊(duì)列68中預(yù)測(cè)值相同,那么由分支調(diào)度/執(zhí)行單元54形成的分支預(yù)測(cè)是正確的。在這種情況下,分支完成單元56不需做任何事,除了與完成分支指令相結(jié)合作廢在分支隊(duì)列68中的條目以備后用。在任一種情況下,分支完成單元56根據(jù)預(yù)測(cè)與實(shí)際分支條件的比較和存貯的分支狀態(tài)為分支指令產(chǎn)生一個(gè)新的分支狀態(tài),分支完成單元56以存貯的分支地址作為到BHT66的變址把新的分支狀態(tài)傳送到BHT66。分支完成單元56產(chǎn)生控制信號(hào)PEND-INGBRANCH(排起分支)該信號(hào)表示在分支隊(duì)列68中如果有的話有多少未決定的分支指令。地址選擇器60決定大約4個(gè)輸出地址中哪一個(gè)應(yīng)使多路開關(guān)選擇器58輸出到IFAR62。地址選擇器60接收從分支取指單元52輸出的取指地址,從分支調(diào)度/執(zhí)行單元54輸出的取指地址及從分支完成單元56來的控制信號(hào),如果條件預(yù)測(cè)值和條件實(shí)際值不同分支完成單元56置位這個(gè)控制信號(hào)。若分支完成單元56置位其控制信號(hào),那么地址選擇器60會(huì)使多路開關(guān)選擇器58輸出由分支完成單元56形成的地址。若分支完成單元56沒有置位其控制信號(hào),且由分支調(diào)度/執(zhí)行單元54生成的地址不同于在前面流水線階段由分支取指單元52生成的地址,那么地址選擇器60使多路開關(guān)選擇器58輸出由分支調(diào)度/執(zhí)行單元54形成的地址。否則地址選擇器60使多路開關(guān)選擇器58輸出由分支取指單元52形成的地址。若分支單元28發(fā)生故障;地址選擇器將輸出IFAR62的以前的值。應(yīng)當(dāng)明白的是在任何時(shí)侯,地址選擇器60可以選擇由4個(gè)不同分支指令形成的4個(gè)不同地址中一個(gè)。猜測(cè)預(yù)取指控制單元70,從完成/調(diào)度單元30接收控制信號(hào)EXCEPTION(例外)及COMPLETIONBUFFEREMPTY(完成緩沖器空),從調(diào)度緩沖器48接收DBEMPTY(DB空),從第一分支檢測(cè)器50接收INCOMINGBRANCH(引入分支)從分支完成單元56接收PENDINGBRANCH(掛起分支),還接收地址選擇器60的輸出和三個(gè)預(yù)取指方式位。程序員所能存取的專用目的寄存器形成這三種方式位,猜測(cè)預(yù)取指控制單元70形成控制信號(hào)GOTOBUS(去總線)和OVERRIDE(取代)。完成/調(diào)度單元30在形成例外指令的寫回階段置位EXCEP-TION(例外)。當(dāng)指令形成例外時(shí)數(shù)據(jù)處理器12立刻在存儲(chǔ)器分支一地址,在存儲(chǔ)器內(nèi)常注例外操作子程序,在這些情況下,數(shù)據(jù)處理器12將不執(zhí)行由IFAR62變址的指令,這樣,它需要預(yù)取指這些指令。否則,完成/調(diào)度單元30復(fù)位EXCEPTION(例外)。當(dāng)完成緩沖器46為空時(shí),完成/調(diào)度單元30置位COMPLETIONBUFFEREMPT(完成緩沖空)否則,完成/調(diào)度單元30復(fù)位COMPLETIONBVFFEREMPTY)。第一或第0預(yù)取指方式位指示數(shù)據(jù)處理器12在實(shí)地址方式還是在虛地址方式。當(dāng)在實(shí)地址方式時(shí),數(shù)據(jù)處理器12直接用變址存儲(chǔ)器生成地址,當(dāng)在虛地址方式時(shí),數(shù)據(jù)處理器12在變址存儲(chǔ)器變址前先轉(zhuǎn)換它的地址。第2和第3預(yù)取指方式指示允許分支指令數(shù)目超過數(shù)據(jù)處理器12可預(yù)取指令的數(shù)目。若這兩位為“00”,數(shù)據(jù)處理器12僅預(yù)取分支隊(duì)列68中沒有掛起分支指令;若為“01”,反預(yù)取分支隊(duì)列68中不多于一個(gè)的掛起分支指令;若為“10”,僅預(yù)取分支隊(duì)列68中不多于2個(gè)的掛起分支指令,若為“11”僅預(yù)取分支隊(duì)列68中不多于4個(gè)的掛起分支指令。在這4種方式中,第一分支檢測(cè)器50必須復(fù)位INCOMINGBRANCH(引入分支)。猜測(cè)預(yù)取指控制單元70,當(dāng)它適合對(duì)數(shù)據(jù)處理器12去預(yù)取指令時(shí)(如果請(qǐng)求指令不在指令高速緩存24中)。置位控制信號(hào)GOTOBUS。當(dāng)預(yù)指取方式位第0位設(shè)置到高邏輯態(tài)(實(shí)地址方式),調(diào)度緩沖器40置位DBEMPTY,完成調(diào)度單元30置位COMPLETIONBUFFEREMPTY(完成緩沖器空)時(shí),猜測(cè)預(yù)取指控制單元70置位GOTOBUS。否則推測(cè)預(yù)取指控制單元70復(fù)位GOTOBUS。在實(shí)地址尋址方式下,數(shù)據(jù)處理器12可能偶然地存取地址空間,這些空間一旦被存取將會(huì)永遠(yuǎn)改變(某些I/O設(shè)備)。因此,數(shù)據(jù)處理器12必須不在猜測(cè)存取這些地址空間。當(dāng)預(yù)取指方式位第0位設(shè)置到低邏輯態(tài)時(shí)(虛地址方式),第一分支檢測(cè)器50復(fù)位INCOMINGBRANCH且在PENDINGBRANCH小于或等于由第2和第3預(yù)取指方式位表示的值時(shí),猜測(cè)預(yù)取指控制單元70置位GOTOBUS。否則,猜測(cè)預(yù)取指控制單元70復(fù)位GOTOBUS。當(dāng)分支單元28裝載一新的取指地址到IFAR62時(shí),猜測(cè)預(yù)取指控制單元70置位控制信號(hào)OVERRIDE,這樣優(yōu)先使較早的流水線級(jí)輸出。在這種情況下,前面取指地址不再需要。當(dāng)?shù)刂愤x擇器60從分支調(diào)度/執(zhí)行單元54輸出中或從分支完成單元56輸出中選擇一預(yù)取地址時(shí),猜測(cè)預(yù)取指控制單元70置位OVERRIDE。當(dāng)?shù)刂愤x擇器60從IFAR62輸出中或從分支取指單元52的輸出中選擇地址時(shí),猜測(cè)預(yù)取指控制單元70復(fù)位OVERRIDE。圖4顯示了一個(gè)圖2所示的指令高速緩沖存儲(chǔ)器24的框圖。指令高速緩存24具有一個(gè)含轉(zhuǎn)換陣列74的存儲(chǔ)器控制邏輯單元72,一個(gè)高速緩存的隨機(jī)存貯器(RAM)76,一個(gè)ICACHE控制邏輯單元78和一比較器80。存儲(chǔ)器控制邏輯單元72從IFAR62接收虛擬地址的高有效位,轉(zhuǎn)換陣列74在與未被轉(zhuǎn)換的虛擬地址的低有效位結(jié)合的情況下,將所接收虛擬地址的高有效位轉(zhuǎn)換,形成物理地址。存儲(chǔ)器控制邏輯單元72將已被轉(zhuǎn)換的高有效位作為一個(gè)控制信號(hào)EXPECTEDTAG。存儲(chǔ)器控制邏輯單元72在實(shí)模式中不對(duì)所接收到的虛擬地址進(jìn)行轉(zhuǎn)換。在此模式中,存儲(chǔ)器控制邏輯單元72僅將所接收的地址傳送給比較器80和ICACHE控制邏輯78。高速緩存76存貯大量頻繁使用指令的數(shù)據(jù)和相關(guān)標(biāo)簽(tags)對(duì)。高速緩存76接收由IFAR62產(chǎn)生的虛擬地址的低有效位,并對(duì)一對(duì)指令數(shù)據(jù)和標(biāo)簽建立索引。在邏輯上被索引的標(biāo)簽與所存貯指令數(shù)據(jù)原始地址的物理地址的高有效位相等。比較器80從高速緩沖存貯器72接收被索引的存貯標(biāo)簽,從存儲(chǔ)器控制邏輯單元72接收EXPECTEDTAG。如果這兩個(gè)多位信號(hào)是相同的,則被IFAR62的內(nèi)容變址的指令存在于指令高速緩存24中。數(shù)據(jù)處理器12不必從主存貯塊16中取指令,在這種情況下,比較器80置位一個(gè)控制信號(hào)HIT/MISS(命中/未命中)。如果這兩個(gè)多位信號(hào)不同,那么由IFAR62內(nèi)容變化的指令不在指令緩存器24。在此情況下,比較器80復(fù)位一個(gè)控制信號(hào)HITMISS(命中/未命中)。同時(shí),數(shù)據(jù)處理器12將必須從主存貯塊16中取出這個(gè)指令。本發(fā)明所涉及的就是這一取操作的時(shí)序。ICACHE控制邏輯單元78控制著指令高速緩存16與BIU23的界面。更具體地說,ICACHE控制邏輯單元78將指令請(qǐng)求送至BIU23,從BIU23接收所請(qǐng)求的指令。并把接收到的指令存貯于高速緩存76(路徑未示出)。ICACHE控制邏輯單元78產(chǎn)生控制信號(hào)AD-DRESS(地址),LOAD(裝載),REQUEST(請(qǐng)求)和COMMIT,并從BIU23接收控制信號(hào)DATA(數(shù)據(jù)),DATAVALID(數(shù)據(jù)有效),DATACOMPLETE(數(shù)據(jù)完成)和CANCELENABLE(取消使能),I-CACHE控制邏輯單元78還從分支單元28接收GOTOBUS(去總載)和OVERRIDE(取代)信號(hào),從存儲(chǔ)器控制邏輯單元72接收EX-PECTEDTAG,比較器80接收HITMISS信號(hào),從IFAR62接收所請(qǐng)求指令的虛擬地址。ICACHE控制邏輯單元78將EXPECTEDTAG與IFAR62的內(nèi)容的低有效位連接以產(chǎn)生ADDRESS,一個(gè)不存貯于指令高速緩存24的指令的地址。當(dāng)其有一有效的指令要求時(shí),ICACHE控制邏輯單元78置位LOADREQUEST(裝載請(qǐng)求)。當(dāng)適合將請(qǐng)求傳送到主存貯塊16時(shí),ICACHE控制邏輯單元置位COMMIT。下面將結(jié)合圖5對(duì)LOADREQUEST(裝載請(qǐng)求)和CMMIT進(jìn)行說明。DATA包括一個(gè)來自主存貯塊16的所請(qǐng)求的指令。DATAVALID(數(shù)據(jù)有效)指示DATA所含的數(shù)據(jù)是合法的。BIU在其將最后一節(jié)指指令數(shù)據(jù)傳送至指令高速緩存24時(shí)置位DATACOMPLETE(數(shù)據(jù)完成)CAN-CELENABLE(取消使能)指示ICACHE控制邏輯單元78可以取消一個(gè)請(qǐng)求。CANCELENABLE在實(shí)施例中很有用,就如圖1所示,在此數(shù)據(jù)處理器14在其向主存貯器單元16請(qǐng)求數(shù)據(jù)之前先從外部高速緩存器22請(qǐng)求數(shù)據(jù)。在此實(shí)施例中,外部高速緩存22和主存貯器單元16是通過獨(dú)立的或成對(duì)的總線被存取的。在此實(shí)施例中,數(shù)據(jù)處理器14僅在所請(qǐng)求的指令不在外部高速緩存22中時(shí)壟斷公共地址和數(shù)據(jù)總線。如上所述。分支單元28在某些情況下確定其不需要所請(qǐng)求的指令。在這些情況下,如果數(shù)據(jù)處理器14已經(jīng)對(duì)所請(qǐng)求的指令尋找了外部高速緩存22但是未存取主存貯單元16,ICACHE控制邏輯單元78將復(fù)位LOADREQUEST(裝載請(qǐng)求)。圖5顯示了圖4所示的指令高速緩存邏輯單元78的狀態(tài)轉(zhuǎn)換圖。ICACHE控制邏輯單元78保持在IDLE(閑置)狀態(tài),直到分支單元28請(qǐng)求一個(gè)不在指令高速緩存24中的指令,即一個(gè)“高速緩存未命中”。在高速緩存未命中之后,指令高速緩存邏輯單元78將請(qǐng)求一個(gè)新指令。如果比較器80復(fù)位HIT/MISS(命中/未命中)且猜測(cè)預(yù)取指令控制單元70復(fù)位GOTOBUS(去總線),則ICACHE控制邏輯單元78轉(zhuǎn)換到MISSOUTSTANDING(明顯未命中)狀態(tài)、最終,指令高速緩存邏輯單元78將或者提交這個(gè)請(qǐng)求,如果預(yù)測(cè)預(yù)取指令控制單元70置位GOTOBUS(去總線),或者取消該請(qǐng)求,如果預(yù)測(cè)預(yù)取指令控制單元70置位OVERRIDE(取代)。應(yīng)當(dāng)明白的是,在某些場(chǎng)合,即使在預(yù)測(cè)預(yù)取指控制單元70置位OVERRIDE(取代)之后,主存貯單元16仍將把指令返回給數(shù)據(jù)處理器12。在這些場(chǎng)合下,ICACHE控制邏輯單元78將忽略來自主存貯單元16的指令數(shù)據(jù)。在那些指令高速緩存邏輯單元78確認(rèn)請(qǐng)求的場(chǎng)合下,當(dāng)預(yù)測(cè)預(yù)取指控制單元70置位GOTOBUS(去總線)時(shí),ICACHE控制邏輯單元78從MISSOUTSTANDING(明顯未命中)狀態(tài)轉(zhuǎn)換為COM-MITTED運(yùn)行狀態(tài)。如果比較器80復(fù)位HIT/MISS(命中/未命中)且預(yù)測(cè)預(yù)取指控制單元70置位GOTOBUS(去總線)ICACHE控制邏輯單元78可從IDLE(閑置)狀態(tài)直接轉(zhuǎn)換為COMMTTED運(yùn)行狀態(tài)。如果BIU23置位DATACOMPLETE(數(shù)據(jù)完成),ICACHE控制邏輯單元78將從COMMITTED(運(yùn)行)狀態(tài)變回IDLE(閑置)狀態(tài)。在那些指令高速緩存邏輯單元78取消請(qǐng)求的場(chǎng)合,如果預(yù)測(cè)預(yù)取指控制單元70置位OVERRIDE(取代)且BIU23置位CANCELENABLE(取消使能),ICACHE控制邏輯單元78將從MISSOUT-STANDING(明顯未擊中)狀態(tài)直接轉(zhuǎn)換為IDLE(閑置)狀態(tài)。當(dāng)預(yù)測(cè)預(yù)取指控制單元70置位OVERRIDE(取代)且BIU23復(fù)位CAN-CELENABIE(取消使能)時(shí),ICACHE控制邏輯單元78將從MISSOUTSTANDING(明顯未擊中)狀態(tài)轉(zhuǎn)換成OVER—RIDDEN(已被取代)狀態(tài)。如果BIU23置位CANCELENABLE(取消使能)或DATACOMPLETE(數(shù)據(jù)完成),ICACHE控制邏輯單元78將從OVER—RIDDEN(已被取代)狀態(tài)變回IDLE(閑置)狀態(tài)??刂菩盘?hào)COMMIT和LOADREQUEST(裝載請(qǐng)求)的邏輯狀態(tài)由圖5所示的狀態(tài)轉(zhuǎn)換圖決定。更具體而言,ICACHE控制邏輯單元78在其處于COMMITTED(運(yùn)行)狀態(tài)時(shí)置位COMMIT(運(yùn)行信號(hào))。否則,ICACHE控制邏輯單元78復(fù)位COMMIT(運(yùn)行信號(hào))、當(dāng)處于MISSOUTSTANDING(明顯未擊中)、COMMITTED(運(yùn)行)或OVER—RIDDEN(已被取代)當(dāng)中任一狀態(tài)時(shí),ICACHE控制邏輯單元78置位LOADREQUEST(裝載請(qǐng)求)。當(dāng)處于閑置狀態(tài)時(shí),I-CACHE控制邏輯單元78復(fù)位LOADREQUEST(裝載請(qǐng)求)。圖6顯示了圖2所示的BIU23的方塊圖。與本發(fā)明相關(guān)的BIU23的部分包括一個(gè)BIU仲裁器82,一個(gè)BIU控制邏輯單元84和一個(gè)多路器(標(biāo)為MUX)86。BIU仲裁器82從指令高速緩存24、數(shù)據(jù)高速緩存26和由指令與數(shù)據(jù)高速緩存器共享的tablewalk電路(未示出)接收存取外部地址和數(shù)據(jù)總線的請(qǐng)求tablewalk電路將數(shù)據(jù)裝載入用于地址轉(zhuǎn)換的轉(zhuǎn)換陣列74。BIU仲裁器82根據(jù)一個(gè)與本發(fā)明無關(guān)的協(xié)議決定哪個(gè)請(qǐng)求將在何時(shí)實(shí)際存取地址和數(shù)據(jù)總線。BIU仲裁器產(chǎn)生一個(gè)控制信號(hào)SELECT(選擇),用于選擇哪一個(gè)多路器86的輸入被送往地址總線。一獨(dú)立數(shù)據(jù)路徑(未示出)把與數(shù)據(jù)高速緩沖裝載或存貯操作相關(guān)的數(shù)據(jù)送到外部數(shù)據(jù)總線。多路器86從三個(gè)可能請(qǐng)求者中的每個(gè)接收一個(gè)地址。BIU控制邏輯84如同BIU仲裁器82所做的,接收相同的三個(gè)存取外部地址和數(shù)據(jù)總線的請(qǐng)求。BIU控制邏輯84還從地址和數(shù)據(jù)總線接收控制信號(hào)并產(chǎn)生與地址和數(shù)據(jù)總線相關(guān)的控制信號(hào)。舉例說,BIU控制邏輯84產(chǎn)生一個(gè)輸出給外部總線的數(shù)據(jù)有效信號(hào)BUSVALID(總線有效),并且從外部總線接收一個(gè)類似的信號(hào)。當(dāng)三個(gè)可能請(qǐng)求者中的至少一個(gè)提出請(qǐng)求時(shí),BIU控制邏輯單元84置位BUSVALID(總線有效)。同時(shí),如果被選擇的請(qǐng)求產(chǎn)生于指令高速緩存24,那么必須在BIU控制邏輯單元84置位BUSVALID(總線有效)之前同時(shí)置位LOADREQUEST(裝載請(qǐng)求)和COMMIT(運(yùn)行信號(hào))。BIU控制邏輯單元84把從外部總線接收到的數(shù)據(jù)有效信號(hào)作為DATAVALID(數(shù)據(jù)有效)傳送給指令高速緩存24。在本發(fā)明的第一個(gè)實(shí)施例中,BIU控制邏輯單元84總是置位CANCELEN-ABLE(取消使能)。最后,當(dāng)其從外部總線接收到最后一節(jié)指數(shù)據(jù)時(shí),BIU控制邏輯單元84置位DATACOMPLETE(數(shù)據(jù)完成)。如上所述,本發(fā)明可以插入這樣一種具有一個(gè)需要通過不同于尋常的總線對(duì)才可存取的數(shù)據(jù)處理器和外部高速緩存的數(shù)據(jù)處理系統(tǒng)。在這種情況下,上述的某些信號(hào)和功能稍有不同。更具體地說,BIU控制邏輯單元84首先將IFAR62的內(nèi)容傳送至外部高速緩存塊22而不理會(huì)分支隊(duì)列68中未決定分支指令的個(gè)數(shù)。應(yīng)當(dāng)注意,指令高速緩沖存貯器24已經(jīng)對(duì)IFAR62變化的指令進(jìn)行了尋找。這一對(duì)獨(dú)立總線的總線activity不會(huì)顯著影響系統(tǒng)效能。在這一步中,BIU控制邏輯單元84置位一個(gè)控制信號(hào)SECONDARYCACHEVALID(二級(jí)高速緩存有效)。如果指令不在外部高速緩存存貯塊22(一個(gè)“L2”未命中),那么BIU控制邏輯單元84將通過上述的公共總線存取主存貯塊16。BIU控制邏輯單元84在數(shù)據(jù)處理器存取外部高速緩存之后置位CANCELENABLE(取消使能)。盡管本發(fā)明已參照特殊實(shí)施例而被說明,那些熟悉本領(lǐng)域技術(shù)的人仍可做進(jìn)一步的改進(jìn)和提高。例如,本發(fā)明可被插入那些習(xí)慣上被歸為復(fù)雜指令集計(jì)算機(jī)或CISC機(jī)器的數(shù)據(jù)處理器。此外,某些功能單元可在某些實(shí)施例中被省略或是重新置于數(shù)據(jù)處理12的其它區(qū)域。所以應(yīng)當(dāng)明白,本發(fā)明包括了所有這些未偏離其精髓和附加權(quán)利要求所限定的發(fā)明的范圍的改進(jìn)。權(quán)利要求1.利用猜測(cè)指令取指的數(shù)據(jù)處理器,它使用外部存儲(chǔ)系統(tǒng),這種數(shù)據(jù)處理器其特征在于由分支預(yù)測(cè)單元形成取指地址,由分支預(yù)測(cè)單元存儲(chǔ)一信號(hào)用以表示未決定分支指令數(shù),由分支預(yù)測(cè)單元產(chǎn)生一控制信號(hào),在第一種操作方式中若信號(hào)表示數(shù)量分別小于等于第一預(yù)選擇數(shù)或大于第一預(yù)選擇數(shù)時(shí)控制信號(hào)分別對(duì)應(yīng)于第一邏輯狀態(tài)及第二邏輯狀態(tài),在第二種操作方式中,若信號(hào)表示數(shù)分別小于等于第二預(yù)選擇數(shù)或大于第二預(yù)選擇數(shù)時(shí),控制信號(hào)分別對(duì)應(yīng)于第一邏輯狀態(tài)及第二邏輯狀態(tài);指令取指電路連接到分支預(yù)測(cè)單元,指令取指電路取出一指令用來自外部存儲(chǔ)器系統(tǒng)對(duì)應(yīng)于控制信號(hào)的第一狀態(tài)的取指地址變址。2.按權(quán)利要求1的數(shù)據(jù)處理器中分支預(yù)測(cè)單元其特征在于分支計(jì)算電路形成與分支指令對(duì)應(yīng)的第一和第二地址;分支預(yù)測(cè)電路連到分支計(jì)算電路,分支預(yù)測(cè)電路輸出取指地址取指地址對(duì)應(yīng)于條件邏輯上等于第一或第二地址中選擇的一個(gè)。分支完成電路用來存貯表示未決定分支指令數(shù)的信號(hào)。3.按權(quán)利要求2的數(shù)據(jù)處理器中分支完成電路其特征在于電路用來存貯邏輯上不等于取指地址的第一和第二地址中一個(gè)。4.按權(quán)利要求3的數(shù)據(jù)處理器其特征在于用高速緩存的存儲(chǔ)器連到指令取指電路,高速緩存存儲(chǔ)器裝置存貯從外部存儲(chǔ)系統(tǒng)接收的指令。5.按權(quán)利要求1的數(shù)據(jù)處理器其特征在于高速緩存存儲(chǔ)器連到指令取指電路,高速緩存存儲(chǔ)器裝置存貯從外部存儲(chǔ)系統(tǒng)接收的指令。6.帶有外部存儲(chǔ)器系統(tǒng)的數(shù)據(jù)處理器的工作方法其特征在于下面步驟接收,在數(shù)據(jù)處理器的分支預(yù)測(cè)單元中接收分支指令;預(yù)測(cè),在分支預(yù)測(cè)單元中對(duì)應(yīng)于分支指令預(yù)測(cè)一取指地址;存貯,在分支預(yù)測(cè)單元中,存貯一未決定分支指令的數(shù)目;生成,在分支預(yù)測(cè)單元中,形成控制信號(hào),在第一種操作方式中,若未決定分支指令數(shù)分別小于等于第一預(yù)選數(shù)或大于第一預(yù)選數(shù)時(shí),控制信號(hào)分別對(duì)應(yīng)于第一種邏輯狀態(tài)和第二種邏輯狀態(tài),在第二種操作方式中,若未決定分支指令數(shù)分別小于等于第二預(yù)選數(shù)或大于第二預(yù)選數(shù)時(shí),控制信號(hào)分別對(duì)應(yīng)于第一種邏輯狀態(tài)和第二種邏輯狀態(tài);第一取指,用指令取指電路連到分支預(yù)測(cè)單元,根據(jù)控制信號(hào)從外部存儲(chǔ)器系統(tǒng)取出指令。7.按權(quán)利要求6的方法中預(yù)測(cè)步驟其特征在于下面步驟生成,在分支計(jì)算電路中,根據(jù)分支指令,生成第一和第二地址;輸出,用分支預(yù)測(cè)電路連到分支計(jì)算電路,輸出的取指地址邏輯上等于所選擇的第一或第二地址之一。8.按照權(quán)利要求7的方法中存貯步驟其特征在于存貯的第一或第二地址邏輯上不等于取指地址。9.按照權(quán)利要求8的方法其特征在于第二取指步在第一取指步之前,第二取指步經(jīng)指令取指電路,從數(shù)據(jù)處理器的高速緩存存儲(chǔ)器取指。10.按照權(quán)利要求6的方法其特征在于第二取指步在第一取指步之前,第二取指步經(jīng)指令取指電路,從數(shù)據(jù)處理器的高速緩存存儲(chǔ)器取指。全文摘要數(shù)據(jù)處理器(12)具有預(yù)測(cè)條件分支指令的分支預(yù)測(cè)單元(28)和監(jiān)控未決定分支指令數(shù)的控制單元(70),控制單元根據(jù)未決定分支指令數(shù)有選擇地允許數(shù)據(jù)處理器從外部存儲(chǔ)器系統(tǒng)取由分支預(yù)測(cè)單元指定的指令,未決定分支指令的特點(diǎn)閾值數(shù)可由用戶編程,數(shù)據(jù)處理器從而把其總線存取限制于那些可以確定需要指示指令的場(chǎng)合。文檔編號(hào)G06F9/38GK1127899SQ9411953公開日1996年7月31日申請(qǐng)日期1994年12月17日優(yōu)先權(quán)日1993年12月20日發(fā)明者丹恩·K·杰伊,戴維·S·萊維塔,保羅·C·羅斯巴赫申請(qǐng)人:摩托羅拉公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1