国产精品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>

      帶轉(zhuǎn)移模式字段的轉(zhuǎn)移歷史表的制作方法

      文檔序號(hào):6413835閱讀:161來(lái)源:國(guó)知局

      專(zhuān)利名稱(chēng)::帶轉(zhuǎn)移模式字段的轉(zhuǎn)移歷史表的制作方法
      技術(shù)領(lǐng)域
      :本發(fā)明一般涉及數(shù)字處理器,尤其涉及帶轉(zhuǎn)移歷史表的處理器,并且此處理器讀取多個(gè)指令和/或相對(duì)于被讀取的存儲(chǔ)器塊具有一任意定位的指令。現(xiàn)代數(shù)字處理器,如超標(biāo)量微處理器,在每一機(jī)器周期對(duì)多條指令進(jìn)行譯碼,調(diào)度,并執(zhí)行。為了對(duì)這樣的超標(biāo)量微處理器進(jìn)行優(yōu)化設(shè)計(jì),有必要在一個(gè)機(jī)器周期中從存儲(chǔ)器讀取至少和譯碼/執(zhí)行所能處理的一樣多的指令。由于所讀取的指令字段中可能包括多個(gè)轉(zhuǎn)移指令,因此要求設(shè)計(jì)一個(gè)轉(zhuǎn)移歷史表地址高速緩沖存儲(chǔ)器來(lái)預(yù)測(cè)可能取到的下一個(gè)轉(zhuǎn)移指令的位置。為了優(yōu)化處理器周期,所選擇的找出預(yù)測(cè)轉(zhuǎn)移的方法(即決定那個(gè)地址的目標(biāo)地址)及對(duì)那個(gè)存儲(chǔ)器塊的指令讀取的初始化必須相對(duì)簡(jiǎn)單。已經(jīng)提出并實(shí)施了一些轉(zhuǎn)移預(yù)測(cè)裝置,他們各有其優(yōu)缺點(diǎn)。Emma等人在美國(guó)專(zhuān)利No.5,353,421上,對(duì)其中的一些方法在多預(yù)測(cè)轉(zhuǎn)移預(yù)測(cè)裝置中的應(yīng)用進(jìn)行了描述。如其中所描述的,借助預(yù)測(cè)一條轉(zhuǎn)移指令的結(jié)果,處理器可以保持流水線(xiàn)充滿(mǎn)指令,并且如果轉(zhuǎn)移的結(jié)果被正確的預(yù)測(cè),可避免流水線(xiàn)中斷。Emma等人還提供了轉(zhuǎn)移預(yù)測(cè)機(jī)制的簡(jiǎn)要?dú)v史。另外,Levitan在美國(guó)專(zhuān)利No.5,367,703中進(jìn)一步描述了一項(xiàng)技術(shù)。它使用不同的預(yù)測(cè)器,根據(jù)從用于讀取存儲(chǔ)器塊的指令讀取地址到在存儲(chǔ)器塊中的轉(zhuǎn)移位置的距離,來(lái)預(yù)測(cè)一個(gè)轉(zhuǎn)移的結(jié)果。對(duì)每一可能的距離,預(yù)測(cè)器各個(gè)位的不同集合反映對(duì)那個(gè)距離的轉(zhuǎn)移的歷史。Veh和Patt,在“ProceedingsoftheNinthAnnualinternationalsynposiumonComputerArchitecture1993”上描述了一套預(yù)測(cè)器,除根據(jù)當(dāng)前轉(zhuǎn)移指令的歷史結(jié)果外,它還依據(jù)一個(gè)或多個(gè)以前的(在時(shí)間上)轉(zhuǎn)移結(jié)果。因此,本發(fā)明的一個(gè)目的就是簡(jiǎn)化在一個(gè)轉(zhuǎn)移歷史表中搜尋和選擇適當(dāng)?shù)霓D(zhuǎn)移目標(biāo)地址的操作,轉(zhuǎn)移歷史表可以標(biāo)識(shí)出指令讀取塊中的多個(gè)轉(zhuǎn)移指令。本發(fā)明的另一個(gè)目的是減少轉(zhuǎn)移歷史表選擇邏輯的復(fù)雜性,并提供一種可擴(kuò)展至較大規(guī)模指令讀取塊的結(jié)構(gòu)。根據(jù)本發(fā)明,本發(fā)明的上述目的和其他目的通過(guò)在轉(zhuǎn)移歷史表入口建立一轉(zhuǎn)移模式字段來(lái)實(shí)現(xiàn),它指示出在指令讀取塊中其它轉(zhuǎn)移的存在(沒(méi)有被當(dāng)前入口所定義)。一個(gè)實(shí)現(xiàn)了本發(fā)明的超標(biāo)量微處理器具有一預(yù)測(cè)未來(lái)轉(zhuǎn)移的改進(jìn)的系統(tǒng),它根據(jù)一個(gè)指令塊讀取的發(fā)生,來(lái)預(yù)測(cè)一個(gè)未來(lái)的轉(zhuǎn)移。微處理器具有一指令讀取裝置,它讀取可能含有大量轉(zhuǎn)移指令的一個(gè)存儲(chǔ)器塊,此讀取裝置包括帶有一個(gè)或多個(gè)入口的轉(zhuǎn)移歷史表,每一個(gè)入口存儲(chǔ)著指令讀取塊內(nèi)包含的一個(gè)轉(zhuǎn)移的轉(zhuǎn)移地址和目標(biāo)地址及在指令讀取塊內(nèi)的模式轉(zhuǎn)移。所存儲(chǔ)的轉(zhuǎn)移和目標(biāo)地址及來(lái)自轉(zhuǎn)移歷史表的轉(zhuǎn)移模式字段在下一個(gè)指令塊讀取發(fā)生時(shí)被檢索。轉(zhuǎn)移模式字段用于保證只有一個(gè)轉(zhuǎn)移入口將被預(yù)測(cè)。一個(gè)執(zhí)行單元執(zhí)行轉(zhuǎn)移指令,決定其結(jié)果和所述的轉(zhuǎn)移指令正確的目標(biāo)地址。通過(guò)下面對(duì)本發(fā)明的一個(gè)優(yōu)選實(shí)施方式的詳細(xì)描述,并參考附圖,上述的和其他的目的、內(nèi)容及優(yōu)點(diǎn)可以得到更好的理解。其中圖1是一個(gè)實(shí)現(xiàn)了本發(fā)明的超標(biāo)量微處理器的框圖;圖2是一個(gè)更詳細(xì)表示出轉(zhuǎn)移歷史表的框圖;以及圖3是一個(gè)更詳細(xì)表示出用于轉(zhuǎn)移歷史表更新的轉(zhuǎn)移模式產(chǎn)生器的框圖和邏輯圖。本發(fā)明可以采用兩種不同的轉(zhuǎn)移歷史表配置。第一種也是最普遍的一種配置為一高速緩沖存儲(chǔ)器,由一n-入口,m-路設(shè)置相聯(lián)高速緩沖存儲(chǔ)器組成。表一表示出這樣一個(gè)轉(zhuǎn)移歷史表入口給出的字段。表1轉(zhuǎn)移歷史表入口字段定義轉(zhuǎn)移地址—通常稱(chēng)為轉(zhuǎn)移地址字段,本字段不包括索引位,那些位用于對(duì)轉(zhuǎn)移歷史表尋址。它也不包括在指令讀取塊中識(shí)別轉(zhuǎn)移的起始位置的低位字節(jié)。同樣,轉(zhuǎn)移地址的高位字節(jié)可能也不包括在轉(zhuǎn)移地址字段中。這一字段也被稱(chēng)為抗混淆(anti-alias)字段。轉(zhuǎn)移偏移—轉(zhuǎn)移偏移字段識(shí)別指令讀取塊中的轉(zhuǎn)移的起始位置。有效—這是有效入口。轉(zhuǎn)移目標(biāo)地址—如果轉(zhuǎn)移指令成功(即,被取中),下一條被執(zhí)行指令的存儲(chǔ)器位置。用于讀取下一指令塊的地址分為四個(gè)單獨(dú)的字段字偏移,索引,抗混淆字段,廢棄位。字偏移包括低位地址位,表示在存儲(chǔ)器讀取塊中指令譯碼開(kāi)始的位置。索引字段是log2(n)位,用于對(duì)轉(zhuǎn)移歷史表尋址。從高速緩沖存儲(chǔ)器讀出m個(gè)入口。如果抗混淆字段相等,入口被接受,并作為在被讀取的存儲(chǔ)器塊中的一個(gè)轉(zhuǎn)移。(通常同時(shí)帶有轉(zhuǎn)移歷史表訊問(wèn))。假設(shè)轉(zhuǎn)移歷史表入口包含用于預(yù)測(cè)轉(zhuǎn)移結(jié)果的信息。轉(zhuǎn)移結(jié)果預(yù)測(cè)被應(yīng)用于從高速緩沖存儲(chǔ)器讀入的m個(gè)入口。由于讀取了多指令,在指令讀取存儲(chǔ)器塊中可能有多個(gè)預(yù)測(cè)取中的轉(zhuǎn)移被識(shí)別。指令譯碼可以在指令讀取塊中的任何位置開(kāi)始。所有字偏移小于指令讀取塊的字偏移的預(yù)測(cè)取中轉(zhuǎn)移都被忽略,因?yàn)檫@些指令將不被譯碼。由于轉(zhuǎn)移歷史表的目的是提供一唯一指令讀取地址作為下一指令讀取地址,所以當(dāng)預(yù)測(cè)到多個(gè)其字偏移等于或大于指令譯碼將要進(jìn)行的地址的字偏移的轉(zhuǎn)移時(shí),則具有較小字偏移的入口被選中。被選擇入口的轉(zhuǎn)移目標(biāo)地址被用于下一指令存儲(chǔ)器讀取。熟練的技術(shù)人員會(huì)明白轉(zhuǎn)移歷史表入口的字偏移必須和指令讀取地址及所有其它入口的字偏移進(jìn)行比較(a>b)。因此,所需的比較器的的數(shù)量為(m2+m)/2。隨著指令讀取地址的增加,兩種因素影響著轉(zhuǎn)移歷史表的設(shè)計(jì)。第一,字偏移字段中的位數(shù)增加。第二,增加相關(guān)類(lèi)別以保證在一指令讀取塊中的多個(gè)轉(zhuǎn)移都被識(shí)別是必要的。這些因素的共同作用導(dǎo)致為選擇正確的轉(zhuǎn)移歷史表入口的電路上按幾何級(jí)數(shù)的增加。為減小轉(zhuǎn)移歷史表選擇邏輯的復(fù)雜性,并提供一個(gè)可擴(kuò)展至較大規(guī)模指令讀取塊的結(jié)構(gòu),轉(zhuǎn)移歷史表的每一入口都有一個(gè)加到入口上的轉(zhuǎn)移模式字段。除了最右的位,轉(zhuǎn)移模式字段對(duì)指令讀取塊上的指令譯碼開(kāi)始的位置有一個(gè)二進(jìn)制位。當(dāng)一轉(zhuǎn)移歷史表入口被更新時(shí),指令讀取塊上的預(yù)測(cè)取中轉(zhuǎn)移的模式與特定的轉(zhuǎn)移歷史表入口的字偏移結(jié)合,從而提供帶有與比當(dāng)前入口所指示的轉(zhuǎn)移指令處在較低地址的,與在指令讀取塊中任一預(yù)測(cè)取中轉(zhuǎn)移相一致的位設(shè)置的一個(gè)字段。在本發(fā)明的優(yōu)選實(shí)施方式中,字偏移比較器被取掉了,并以一個(gè)簡(jiǎn)單的2-ANDj-AND3-AND邏輯結(jié)構(gòu)所替代,這里,j是一個(gè)大于在轉(zhuǎn)移模式字段中的位數(shù)的數(shù)。本發(fā)明還可以應(yīng)用于作為一內(nèi)容訪(fǎng)問(wèn)存儲(chǔ)器(CAM)使用的轉(zhuǎn)移歷史表。這一實(shí)施可以被看作一更普遍的設(shè)置關(guān)聯(lián)存儲(chǔ)器高速緩沖存儲(chǔ)器設(shè)計(jì)的一個(gè)簡(jiǎn)化,而此處的索引字段位數(shù)為零,并且轉(zhuǎn)移歷史表的每一入口有其自己的抗混淆字段比較器和命中檢測(cè)邏輯。轉(zhuǎn)移模式字段解決了由于在每一周期內(nèi)讀取多個(gè)指令的計(jì)算機(jī)系統(tǒng)中使用按內(nèi)容訪(fǎng)問(wèn)存儲(chǔ)器而產(chǎn)生的重大問(wèn)題。在轉(zhuǎn)移歷史表的最普通的實(shí)施中,當(dāng)用一讀取地址去搜索一個(gè)用于預(yù)測(cè)轉(zhuǎn)移指令的轉(zhuǎn)移歷史表時(shí),轉(zhuǎn)移偏移不被考慮。在指令讀取塊中可能被預(yù)測(cè)的不同轉(zhuǎn)移的數(shù)目決定于m,m是為了一個(gè)命中而檢查的入口數(shù)。只要m很小,選擇距讀取地址最近的轉(zhuǎn)移指令作為被預(yù)測(cè)指令是可行的。但是,當(dāng)m很大時(shí),例如一個(gè)全關(guān)聯(lián)按內(nèi)容訪(fǎng)問(wèn)存儲(chǔ)器,如果沒(méi)有本發(fā)明,不可能允許多抗混淆字段匹配。因此,在每一指令讀取塊中有多于一個(gè)轉(zhuǎn)移的轉(zhuǎn)移歷史表中進(jìn)行預(yù)測(cè)一般是不可能的。對(duì)此不足的一個(gè)解決辦法是在抗混淆字段比較中包括來(lái)自轉(zhuǎn)移偏移字段的位,這已被PowerPCTTM604e微處理器所實(shí)施。這一方法允許在一指令讀取塊中識(shí)別多個(gè)轉(zhuǎn)移。但這一方法的缺點(diǎn)是一個(gè)單獨(dú)的轉(zhuǎn)移可能需要多個(gè)轉(zhuǎn)移歷史表入口。實(shí)際上,如果轉(zhuǎn)移偏移字段上的j位被包括在抗混淆字段比較中,則轉(zhuǎn)移歷史表上的大至2j的入口可能被指定預(yù)測(cè)一單獨(dú)轉(zhuǎn)移指令。對(duì)一按內(nèi)容訪(fǎng)問(wèn)存儲(chǔ)器,轉(zhuǎn)移模式字段的應(yīng)用可以在一個(gè)每一轉(zhuǎn)移指令僅帶一個(gè)單獨(dú)入口的指令讀取塊中允許多個(gè)轉(zhuǎn)移預(yù)測(cè)。現(xiàn)在參考附圖,尤其是參考附圖1,圖中表示一超標(biāo)量微處理器系統(tǒng)10的高級(jí)框圖,它可用以實(shí)施本發(fā)明的方法和系統(tǒng)。如圖所示,微處理器系統(tǒng)10包括一個(gè)存儲(chǔ)數(shù)據(jù)、指令等的存儲(chǔ)器18。存儲(chǔ)在存儲(chǔ)器18上的數(shù)據(jù)和指令用熟練的技術(shù)人員熟悉的方法通過(guò)高速緩沖存儲(chǔ)器/存儲(chǔ)器接口20被訪(fǎng)問(wèn)。高速緩沖存儲(chǔ)器系統(tǒng)的規(guī)模設(shè)定和使用在數(shù)據(jù)處理技術(shù)上已被熟知,在本發(fā)明中不再贅述。然而,那些熟練的技術(shù)人員將會(huì)理解依靠使用先進(jìn)的關(guān)聯(lián)高速緩沖存儲(chǔ)器技術(shù),使用暫存在高速緩沖存儲(chǔ)器/存儲(chǔ)器接口20的數(shù)據(jù)可以獲得存儲(chǔ)器訪(fǎng)問(wèn)的大的百分比。來(lái)自高速緩沖存儲(chǔ)器/存儲(chǔ)器接口20的指令一般被裝載到最好包括多個(gè)隊(duì)列位置的指令隊(duì)列22中。在一個(gè)超標(biāo)量微處理器系統(tǒng)的一個(gè)典型實(shí)施中,指令隊(duì)列包括8個(gè)隊(duì)列位置,于是,在一個(gè)給定的周期內(nèi),根據(jù)被高速緩沖存儲(chǔ)器/存儲(chǔ)器接口20傳送的有效指令的多少,以及在指令隊(duì)列22中可用的空間的大小,有0到8個(gè)指令可以裝載到指令隊(duì)列22。如同在如此超標(biāo)量微處理器系統(tǒng)中的典型狀況一樣,指令隊(duì)列22用于將指令分配到多個(gè)執(zhí)行單元。如圖一所示,微處理器系統(tǒng)10包括一個(gè)浮點(diǎn)處理器單元24,一個(gè)或多個(gè)定點(diǎn)或整數(shù)處理器單元26,和一個(gè)轉(zhuǎn)移處理器單元28。因此,指令隊(duì)列22可以在一個(gè)單周期內(nèi),調(diào)度0至3(或更多,決定于特定的微處理器的定點(diǎn)單元和/或其它執(zhí)行單元的數(shù)量)條指令到每個(gè)執(zhí)行單元。除了對(duì)來(lái)自指令隊(duì)列22的指令進(jìn)行順序調(diào)度外,所謂"條件轉(zhuǎn)移指令"可以被裝載到指令隊(duì)列22中以由轉(zhuǎn)移處理器單元28執(zhí)行。一條條件轉(zhuǎn)移指令是這樣一種指令,它在一個(gè)應(yīng)用程序中指定采用一個(gè)相關(guān)的條件轉(zhuǎn)移以響應(yīng)執(zhí)行一條或多條順序指令所選擇的結(jié)果。在一流水線(xiàn)處理器系統(tǒng),例如微處理器系統(tǒng)10中,努力使運(yùn)行時(shí)間延遲極小化,當(dāng)一個(gè)指令塊通過(guò)作為讀取裝置一部分的轉(zhuǎn)移歷史表被讀取到指令隊(duì)列22時(shí),在指令隊(duì)列中的一個(gè)條件轉(zhuǎn)移的出現(xiàn)被預(yù)測(cè),參考讀取器30。這個(gè)轉(zhuǎn)移歷史表將在下面作詳細(xì)描述。對(duì)于那些熟練的技術(shù)人員應(yīng)該很清楚的是,當(dāng)一個(gè)條件轉(zhuǎn)移被預(yù)測(cè)為"不被取中"時(shí),在指令隊(duì)列中的順序指令只是繼續(xù)沿著當(dāng)前的路徑進(jìn)行,也不改變指令。但是,如果對(duì)轉(zhuǎn)移出現(xiàn)的預(yù)測(cè)是錯(cuò)誤的,則從指令隊(duì)列必須清除跟在條件轉(zhuǎn)移指令程序后的順序指令,并且目標(biāo)指令必須被讀取。反之,如果條件轉(zhuǎn)移被預(yù)測(cè)為"被取中",則目標(biāo)指令被讀取,并在條件轉(zhuǎn)移后使用,只要預(yù)測(cè)被認(rèn)為正確。并且當(dāng)然,如果"取中"的預(yù)測(cè)是不正確的,目標(biāo)指令必須被清除,并且在程序順序上跟在條件轉(zhuǎn)移指令之后的的順序指令必須被檢索。如圖所示,微處理器系統(tǒng)10還包括一個(gè)條件寄存器32。在微處理器系統(tǒng)10上執(zhí)行順序指令時(shí)出現(xiàn)的各種比較,其比較結(jié)果由條件寄存器32暫時(shí)存儲(chǔ)。于是,浮點(diǎn)處理器單元24,定點(diǎn)處理器單元26和轉(zhuǎn)移處理器單元28都被耦合至條件寄存器32。在條件寄存器32中的一個(gè)特定條件的狀態(tài)可以被檢測(cè)并耦合到轉(zhuǎn)移處理器28上以產(chǎn)生目標(biāo)地址,然后,目標(biāo)地址被耦合至讀取器30。圖2更詳細(xì)的表示出讀取器30。目標(biāo)地址在目標(biāo)地址確認(rèn)邏輯206與來(lái)自轉(zhuǎn)移隊(duì)列204的預(yù)測(cè)目標(biāo)地址進(jìn)行比較。如果轉(zhuǎn)移目標(biāo)被正確預(yù)測(cè),不需要任何操作。但是,如果轉(zhuǎn)移沒(méi)被預(yù)測(cè),或者轉(zhuǎn)移目標(biāo)地址不正確,隨后的指令必須清除,正確的目標(biāo)指令必須被讀取。同樣,轉(zhuǎn)移歷史表201必須以轉(zhuǎn)移地址,正確的目標(biāo)地址和轉(zhuǎn)移模式進(jìn)行更新。當(dāng)一個(gè)轉(zhuǎn)移目標(biāo)地址被引入讀取器30,并且目標(biāo)地址確認(rèn)失敗,則轉(zhuǎn)移目標(biāo)地址被裝載到指令地址寄存器205,并且,轉(zhuǎn)移目標(biāo)地址和轉(zhuǎn)移地址被裝載至轉(zhuǎn)移隊(duì)列204。指令地址寄存器205中的內(nèi)容被耦合至高速緩沖存儲(chǔ)器/存儲(chǔ)器接口20。轉(zhuǎn)移隊(duì)列204中的內(nèi)容被耦合至轉(zhuǎn)移歷史表201中。使用為熟練的技術(shù)人員熟知的任一個(gè)最近最少使用的算法(LRU),選中要被替代m入口中的一個(gè)。其余的每一個(gè)入口被詢(xún)問(wèn)以決定那個(gè)入口的抗混淆字段和來(lái)自轉(zhuǎn)移地址的抗混淆字段是否相匹配。如圖3所示,對(duì)每一匹配入口的轉(zhuǎn)移偏移字段,及來(lái)自轉(zhuǎn)移隊(duì)列204的轉(zhuǎn)移偏移字段,被編入"多中之一"碼。對(duì)這些碼一起進(jìn)行“或”處理,如圖3所示,以提供在將由轉(zhuǎn)移地址被讀取的指令讀取塊中的預(yù)測(cè)轉(zhuǎn)移的模式。圖3描述一個(gè)四路設(shè)置關(guān)聯(lián)轉(zhuǎn)移歷史表。熟練的技術(shù)人員可以很容易的將本設(shè)計(jì)擴(kuò)展到任意“路”及任何尺寸的指令讀取塊。相應(yīng)于在包含一個(gè)預(yù)測(cè)被取中轉(zhuǎn)移的指令讀取塊中的每一個(gè)位置,本轉(zhuǎn)移模式將包含一個(gè)"1"路。在某些實(shí)施中,除了所使用的LRU算法已經(jīng)使在其轉(zhuǎn)移偏移的轉(zhuǎn)移被不同的轉(zhuǎn)移覆蓋情形之外,可能有將被預(yù)測(cè)取中的轉(zhuǎn)移指令?;仡櫾趦?yōu)選的實(shí)施例中,為了更新轉(zhuǎn)移歷史表201,一組m入口已被更新,并且那些入口的抗混淆字段已和轉(zhuǎn)移地址的抗混淆字段比較。對(duì)于抗混淆字段匹配的m入口的子集,在那些入口的轉(zhuǎn)移模式字段必須被更新以反映加入到轉(zhuǎn)移歷史表201中的轉(zhuǎn)移的轉(zhuǎn)移位置。在優(yōu)選的實(shí)施例中,轉(zhuǎn)移模式與那些轉(zhuǎn)移模式入口正被更新的轉(zhuǎn)移歷史表入口的轉(zhuǎn)移偏移結(jié)合。新的轉(zhuǎn)移模式,我們將稱(chēng)其為入口特定轉(zhuǎn)移模式,通過(guò)設(shè)定在入口特定轉(zhuǎn)移模式的每一位來(lái)產(chǎn)生,它的相應(yīng)的轉(zhuǎn)移模式位被設(shè)定,并且轉(zhuǎn)移模式代表一個(gè)小于由轉(zhuǎn)移偏移代表的轉(zhuǎn)移地址的轉(zhuǎn)移地址。這種編碼方案的目的是在選中檢測(cè)邏輯中簡(jiǎn)化選擇“成功的"的轉(zhuǎn)移歷史表入口的邏輯。表2表示帶有一個(gè)包含四個(gè)可能的轉(zhuǎn)移偏移的指令讀取塊的微處理器,入口特定轉(zhuǎn)移模式生成的一個(gè)例子。也就是說(shuō),在可能包含指令的指令讀取塊的中四個(gè)位置。表2對(duì)入口特定轉(zhuǎn)移模式字段的編碼</tables>在表2中,可以看出最右邊的位總是零,不需要在轉(zhuǎn)移歷史表中存儲(chǔ)。一條指令讀取塊地址不論何時(shí)與高速緩沖存儲(chǔ)器/存儲(chǔ)器接口20相耦合,以開(kāi)始進(jìn)行指令塊讀取,指令讀取塊地址也與轉(zhuǎn)移歷史表201在總線(xiàn)208上相耦合。指令讀取地址被分為抗混淆字段,索引字段,和讀取偏移。索引字段用于選擇一個(gè)m轉(zhuǎn)移歷史表入口的集合。取自指令讀取地址的抗混淆字段與取自m個(gè)轉(zhuǎn)移歷史表入口的抗混淆字段進(jìn)行比較。在具有一抗混淆字段等于指令讀取地址抗混淆字段的集合m中的所有轉(zhuǎn)移歷史表入口形成一集合m′,集合m′可能為空,或包含一個(gè)單獨(dú)的入口,或包含多個(gè)入口。如果集合m′為空,則對(duì)此指令塊沒(méi)有轉(zhuǎn)移預(yù)測(cè)。如果集合m′包含一單獨(dú)入口,則那個(gè)入口被用作預(yù)測(cè)一個(gè)轉(zhuǎn)移。在集合m′中有多個(gè)入口的情況中,指令讀取偏移被編碼成位集合字段,其位集合對(duì)應(yīng)轉(zhuǎn)移模式的每一位,轉(zhuǎn)移模式代表一比讀取偏移較高或相等的偏移指令位置。表3表示對(duì)一個(gè)包含4個(gè)可能的轉(zhuǎn)移偏移的指令讀取塊的微處理器,指令偏移再編碼的生成的例子。表3指令取塊再編碼</tables>由于每一個(gè)轉(zhuǎn)移歷史表入口有其入口特定轉(zhuǎn)移模式字段,判定一個(gè)入口是用于轉(zhuǎn)移預(yù)測(cè)的正確入口,按下述進(jìn)行。一個(gè)入口成為正確的入口,要滿(mǎn)足如下條件。·轉(zhuǎn)移偏移必須與指令讀取地址相符合,或相等?!ぴ谥噶钭x取地址和轉(zhuǎn)移偏移之間指令讀取塊中沒(méi)有其它的轉(zhuǎn)移。在優(yōu)選的實(shí)施例中,轉(zhuǎn)移偏移在轉(zhuǎn)移歷史入口中作為一個(gè)譯碼值表示。也就是,相應(yīng)于可能包含一個(gè)轉(zhuǎn)移指令的指令讀取塊中的每一個(gè)位置,有一個(gè)存儲(chǔ)位。在入口只有一位被設(shè)置,指示出當(dāng)前入口所表示的轉(zhuǎn)移的位置。為了便于討論,我們指定這個(gè)入口為偏移(offset)。轉(zhuǎn)移歷史表入口轉(zhuǎn)移模式指定為模式(pattern)。再編碼指令讀取地址指定為讀取(fetch)。舍去最右位的讀取指定為讀??!(fetch!)。入口命中(entryhit)的方程為入口命中<={(讀取AND偏移)≠0}AND{(讀取AND模式)=0}本發(fā)明的一個(gè)優(yōu)點(diǎn)是,當(dāng)對(duì)于一個(gè)讀取要求判定哪一個(gè)入口是有效的時(shí),是并行的與抗混淆比較作出的,當(dāng)入口命中和抗混淆的匹配對(duì)一個(gè)入口都為真時(shí),轉(zhuǎn)移歷史表入口的目標(biāo)地址字段被耦合至指令地址寄存器205。如果入口命中或抗混淆的匹配對(duì)所有m個(gè)所選擇的轉(zhuǎn)移歷史表入口是假,則沒(méi)有對(duì)讀取的指令塊的轉(zhuǎn)移預(yù)測(cè)。并且,增量器207的輸出耦合至指令地址寄存器208。下一順序指令塊然后被讀取。當(dāng)一個(gè)目標(biāo)地址被耦合到指令寄存器205,目標(biāo)地址也都被耦合到轉(zhuǎn)移隊(duì)列204,在那里它被保存,直到預(yù)測(cè)轉(zhuǎn)移執(zhí)行。讀取器的操作的許多細(xì)節(jié)在描述中已被省略,因?yàn)槟切┎僮骷?xì)節(jié)不受轉(zhuǎn)移模式字段和對(duì)轉(zhuǎn)移歷史表更改的相應(yīng)的修改及轉(zhuǎn)移選中檢測(cè)的影響,一個(gè)熟悉現(xiàn)有技術(shù)和專(zhuān)業(yè)知識(shí)的技術(shù)人員將可以將省略的細(xì)節(jié)應(yīng)用于一特定的應(yīng)用。盡管本發(fā)明是以一個(gè)優(yōu)選的實(shí)施方式實(shí)施于超標(biāo)量微處理器進(jìn)行描述的,熟練的技術(shù)人員將會(huì)發(fā)現(xiàn)本發(fā)明可以在所附的權(quán)利要求的精神和范圍內(nèi)可以作修改。例如,本發(fā)明能應(yīng)用于包含有轉(zhuǎn)移歷史表和讀取多于一條單獨(dú)指令的計(jì)算機(jī)設(shè)備,包括主機(jī)和數(shù)字信號(hào)處理器。權(quán)利要求1.一個(gè)數(shù)字處理器,具有基于一指令塊讀取操作的出現(xiàn),預(yù)測(cè)一個(gè)未來(lái)轉(zhuǎn)移的改進(jìn)的系統(tǒng),包括一個(gè)指令讀取裝置,它取出一個(gè)可能包含多條轉(zhuǎn)移指令的一個(gè)存儲(chǔ)器塊;一個(gè)具有一個(gè)或多個(gè)入口的轉(zhuǎn)移歷史表,每個(gè)入口存儲(chǔ)一個(gè)包含在指令讀取塊中的轉(zhuǎn)移的轉(zhuǎn)移地址和目標(biāo)地址,和一個(gè)在所述指令讀取塊中的轉(zhuǎn)移的轉(zhuǎn)移模式字段;當(dāng)在下一個(gè)指令塊讀取的出現(xiàn)時(shí),用于從所述的轉(zhuǎn)移歷史表中檢索所述的存儲(chǔ)的轉(zhuǎn)移和目標(biāo)地址及轉(zhuǎn)移模式字段的檢索裝置。用于轉(zhuǎn)移模式字段以保證只有一個(gè)轉(zhuǎn)移入口被預(yù)測(cè)的選擇裝置,及一個(gè)執(zhí)行轉(zhuǎn)移指令,決定其結(jié)果和所述轉(zhuǎn)移指令的正確目標(biāo)地址的執(zhí)行單元。2.權(quán)利要求1的數(shù)字處理器,其特征在于進(jìn)一步包括基于一轉(zhuǎn)移指令結(jié)果更新所述轉(zhuǎn)移歷史表的更新裝置。3.權(quán)利要求2所述的數(shù)字處理器,其特征在于更新裝置運(yùn)用最近最少使用算法(LRU)來(lái)更新一個(gè)轉(zhuǎn)移目標(biāo)地址。4.權(quán)利要求2的數(shù)字處理器,其特征在于轉(zhuǎn)移歷史表的一個(gè)入口還包括一抗混淆字段,一索引字段和一讀取偏移,索引字段被用于選擇m個(gè)轉(zhuǎn)移歷史表入口集合,來(lái)自指令讀取地址的抗混淆與m個(gè)轉(zhuǎn)移歷史表入口的抗混淆字段進(jìn)行比較,抗混淆字段等于指令讀取地址抗混淆字段的全部轉(zhuǎn)移歷史表入口組成集合m′,如果集合m′為空,表明對(duì)一指令塊沒(méi)有轉(zhuǎn)移預(yù)測(cè),但如果集合m′包含一單獨(dú)入口,這個(gè)入口被用于預(yù)測(cè)一個(gè)轉(zhuǎn)移。5.權(quán)利要求4所述的數(shù)字處理器,其特征在于,如果集合m′包括多個(gè)入口,則對(duì)應(yīng)轉(zhuǎn)移模式中的每一位指令讀取偏移被編碼成一個(gè)位集合字段其中轉(zhuǎn)移模式所代表的指令位置與讀取偏移一致,或比讀取偏移有更高的偏移。6.權(quán)利要求5所述的數(shù)字處理器,其特征在于存儲(chǔ)在轉(zhuǎn)移歷史表入口的轉(zhuǎn)移模式是一入口特定轉(zhuǎn)移模式,它通過(guò)設(shè)置每一位來(lái)進(jìn)行編碼,其中相應(yīng)的位在轉(zhuǎn)移模式中設(shè)置,并且此位的位置所代表的轉(zhuǎn)移地址小于由那個(gè)入口所代表的一個(gè)轉(zhuǎn)移的轉(zhuǎn)移偏移所代表的轉(zhuǎn)移地址。7.權(quán)利要求6所述的數(shù)字處理器,其特征在于此數(shù)字處理器是一個(gè)超標(biāo)量微處理器。全文摘要通過(guò)降低轉(zhuǎn)移歷史表選擇邏輯的復(fù)雜性并提供一可擴(kuò)展至較大規(guī)模的指令讀取塊的指令而簡(jiǎn)化超標(biāo)量微處理器中的一個(gè)轉(zhuǎn)移歷史表中的適當(dāng)?shù)霓D(zhuǎn)移目標(biāo)地址的檢測(cè)和選擇。這通過(guò)向在指令讀取塊中表示其它轉(zhuǎn)移的存在(沒(méi)有被當(dāng)前入口定義的轉(zhuǎn)移)的轉(zhuǎn)移歷史表入口引入一轉(zhuǎn)移模式字段來(lái)實(shí)現(xiàn)。文檔編號(hào)G06F9/38GK1196522SQ9810533公開(kāi)日1998年10月21日申請(qǐng)日期1998年2月25日優(yōu)先權(quán)日1997年3月26日發(fā)明者羅伯特·M·丁克簡(jiǎn),詹姆斯·R·羅賓森申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司
      網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1