專利名稱:處置越過高速緩沖存儲器線邊界的指令中的高速緩沖存儲器未命中的制作方法
處置越過高速緩沖存儲器線邊界的指令中的高速緩沖存儲器未命中 技術(shù)領(lǐng)域本標(biāo)的物涉及有效地處置越過高速緩沖線邊界的指令的獲取,尤其在指令的第二部 分尚未處于處理器試圖從中獲取所述指令的高速緩沖存儲器中(高速緩沖存儲器未命中) 的情況下。
技術(shù)背景現(xiàn)代微處理器和其它可編程處理器電路利用存儲器層級來存儲并供應(yīng)指令。常見層 級包含指令高速緩沖存儲器或L1高速緩沖存儲器,其相對靠近處理器的核心,例如在處 理器芯片上。將指令從存儲指令和數(shù)據(jù)兩者的略遠(yuǎn)的或L2高速緩沖存儲器加載到Ll指 令高速緩沖存儲器。 一個(gè)或兩個(gè)高速緩沖存儲器加載有來自主存儲器的指令,且所述主 存儲器可從更遠(yuǎn)的源(例如并入有處理器的裝置的盤驅(qū)動器)加載。高速緩沖存儲器提 高了性能。由于其接近處理器核心,所以(例如)從L1高速緩沖存儲器獲取指令相對較 快。在很多實(shí)施方案中,指令高速緩沖存儲器線保存許多指令。如果對于所有指令來說, 每指令的位的數(shù)目是固定的,那么高速緩沖存儲器線的大小可適合于保存整數(shù)數(shù)目的此 類指令。舉例來說,如果每個(gè)指令是32個(gè)位,那么256位高速緩沖存儲器線將保存八個(gè) 此類指令,且存儲在線中的第一和最后一個(gè)指令的邊界與所述高速緩沖存儲器線的邊界 匹配或?qū)?zhǔn)。然而,如果處理器處置不同長度的指令(例如32位指令和16位指令),那 么給定高速緩沖存儲器線中的指令可能不與所述線的邊界對準(zhǔn)。如果處理器結(jié)構(gòu)命令指 令不能與兩個(gè)高速緩沖存儲器線重疊,那么將存在一些浪費(fèi)。然而,很多結(jié)構(gòu)不強(qiáng)加此 類高速緩沖存儲器限制。在后者情況下,在讀取一部分存儲在一個(gè)線中且其余部分存儲 在另一線中的指令的過程中出現(xiàn)問題,其中所述指令例如是在高速緩沖存儲器的一個(gè)線 的末尾處具有16個(gè)位且另外16個(gè)位存儲在下一高速緩沖存儲器線的開頭處的32位指 令?,F(xiàn)代可編程處理器電路常依靠管線處理結(jié)構(gòu)來改進(jìn)執(zhí)行速度。管線處理器包含多個(gè) 處理級,用于在每個(gè)指令移動通過管線時(shí)循序地處理每個(gè)指令。當(dāng)然,當(dāng)一個(gè)級在處理 指令時(shí),沿所述管線的其它級同時(shí)處理其它指令。管線的每個(gè)級執(zhí)行每個(gè)程序指令的整 體處理所必需的不同功能。盡管次序和/或功能可略有改變,但典型的簡單管線包含指令獲取級、指令解碼級、存儲器存取或讀出級、指令執(zhí)行級和結(jié)果回寫級。更高級的處理 器設(shè)計(jì)將一些或所有這些級分解成用于執(zhí)行這些功能的子部分的若干單獨(dú)級。超標(biāo)量設(shè) 計(jì)進(jìn)一步分解所述功能,且/或提供重復(fù)的功能,以執(zhí)行具有類似深度的平行管線中的操 作。獲取級是從分層的存儲器系統(tǒng)獲得指令的管線處理器的部分。在很多管線設(shè)計(jì)中, 將獲取操作分解成兩個(gè)或兩個(gè)以上級。對于這些級, 一個(gè)級收集從L1高速緩沖存儲器獲 取時(shí)的指令,并與更高等級的存儲器通信,以獲得未在L1高速緩沖存儲器中找到的指令 數(shù)據(jù)。在此類獲取操作中可能出現(xiàn)問題,其中所述指令的邊界越過高速緩沖存儲器線邊界, 且所需指令的一部分尚未存在于L1高速緩沖存儲器中。舉例來說,如果收集從L1高速 緩沖存儲器獲取的指令的級接收所述指令的第一部分,那么因?yàn)樵贚1高速緩沖存儲器中 己找到了所述指令,所以其將不會與更高等級的存儲器通信。類似地,如果所述級已經(jīng) 獲得了含有來自更高等級存儲器的第一段的線,那么其將不會起始對含有所述指令的另 一段的線的第二請求。而是,所述級等待從前面的級對下一高速緩沖存儲器線的處理接 收所述指令的其余部分。然而,如果前面的級檢測到所需指令的其余部分不在L1高速緩 沖存儲器的適當(dāng)?shù)木€中(未命中),那么其不能提供所述指令的剩余部分,且其不具有存 取更高等級的存儲器以獲得所述指令的缺失段的能力。通常,在未命中的情況下,此級 將把地址降到下一級,以從更高等級的存儲器請求數(shù)據(jù),但下一級正在等待來自前面的 級的分割指令的第二段。在一些極端情況下,獲取處理可在某一周期期間鎖定,從而等 待級不可請求的指令的一部分??稍试S管線的獲取部分中的一個(gè)以上的級從其它存儲器資源請求指令,以避免上文 所識別的問題。然而,此類解決方案增加了獲取級的構(gòu)造中、獲取級與其它存儲器資源 的互連中以及對到達(dá)和通過獲取級的指令流的管理中的復(fù)雜性。對于高性能處理器設(shè)計(jì), 希望從盡可能少的地方作出對更高等級的存儲器資源的請求,(例如)因?yàn)槊總€(gè)此類請求 都在等待所請求數(shù)據(jù)的返回時(shí)延遲其它處理。因此,在獲取指令的過程中(其中指令可 能越過高速緩沖存儲器線邊界)仍存在進(jìn)一步的改進(jìn)空間。 發(fā)明內(nèi)容本文的教示提供對高速緩沖存儲器未命中的更有效的處置,其中指令越過高速緩沖 存儲器線邊界。實(shí)質(zhì)上,對應(yīng)于用于指令的第一部分的高速緩沖存儲器線的地址再循環(huán) 到管線的獲取部分的頭部,而來自所述高速緩沖存儲器線的指令的任何相關(guān)聯(lián)的第一部分都不降到管線的稍后級。對應(yīng)于用于指令的第二部分的線的地址(也就是說,導(dǎo)致高 速緩沖存儲器未命中的地址)被視為預(yù)獲取請求。由于存在未命中,所以處理器開始將 必需的指令數(shù)據(jù)加載到指令高速緩沖存儲器,但此數(shù)據(jù)在這個(gè)回合穿過獲取級時(shí)也不降 到管線的稍后級。當(dāng)?shù)谝痪€地址再次穿過獲取級,且第二線地址以正常序列跟隨時(shí),指 令的所有段都可用,且可以正常方式獲取和組合。因此,本教示的方面涵蓋從存儲器獲取指令以供在可編程處理器中執(zhí)行的方法,其 中指令可越過線邊界。此類方法的實(shí)例可涉及檢測待獲取的指令越過指令線之間的邊界。 一旦獲取指令數(shù)據(jù)的含有邊界越過指令的第一段的第一線,便確定邊界越過指令的第二 段是否在高速緩沖存儲器中。如果不在,那么指令數(shù)據(jù)的第一線的獲取再循環(huán),而不輸 出來自數(shù)據(jù)的第一線的任何指令。接著,所述方法涉及預(yù)獲取指令數(shù)據(jù)的第二線,其包 含所述指令的缺少的段。在已經(jīng)對第一線的獲取進(jìn)行再循環(huán)的情況下,處理接著需要獲 取指令數(shù)據(jù)的第一線且獲取指令數(shù)據(jù)的第二線。來自指令數(shù)據(jù)的所獲取的第一和第二線 的段經(jīng)組合以輸出邊界越過指令。如果在相對于第一線的第二獲取之前已經(jīng)幵始了任何稍后獲取,也就是說,如果在 經(jīng)再循環(huán)的獲取與對第二線的預(yù)獲取之間的進(jìn)程中將存在任何其它獲取操作,那么將任 何此類介入的獲取處理從獲取管線中清洗。當(dāng)相對于第一線的獲取進(jìn)行再循環(huán)時(shí),使在 初始回合期間由所述獲取引起的數(shù)據(jù)無效,使得沒有數(shù)據(jù)退出獲取部分。本教示的其它方面涵蓋獲取部分或系統(tǒng),用于獲取指令以供通過可編程處理器(例 如管線處理器)進(jìn)行處理。在實(shí)例中,此類獲取部分包括指令高速緩沖存儲器和至少一 個(gè)用于依次處理地址的處理級。對于每個(gè)地址,所述處理識別可能含有對應(yīng)于每個(gè)各自 地址的指令或其一部分的指令高速緩沖存儲器中的存儲器線。所述處理還從所識別的線 讀取數(shù)據(jù)。提供一種用于在指令越過線之間的邊界且對應(yīng)于所述指令的第二地址的高速 緩沖存儲器線起初不含有所述邊界越過指令的一段的情況下,將相對于第一地址的獲取 再循環(huán)到第一指令高速緩沖存儲器處理級且用于將相對于第二地址的獲取轉(zhuǎn)換成預(yù)獲取 以允許將指令數(shù)據(jù)線從所述更高等級的存儲器資源加載到所述指令高速緩沖存儲器的裝 置。本教示的其它方面涵蓋并入有此類獲取部分的可編程處理器,尤其是管線處理器。 將在以下的描述內(nèi)容中部分陳述額外的目標(biāo)、優(yōu)勢和新穎特征,且所屬領(lǐng)域的技術(shù) 人員在檢査了下文和附圖之后將明白其一部分,或可通過實(shí)例的生產(chǎn)或操作而了解???通過實(shí)施或使用所附權(quán)利要求書中具體指出的方法、手段和組合來實(shí)現(xiàn)和得到本教示的目標(biāo)和優(yōu)勢。
附圖僅以實(shí)例方式而不是以限制方式來描繪與本教示一致的一個(gè)或一個(gè)以上實(shí)施方 案。在圖中,相同參考標(biāo)號指代相同或類似元件。圖1是可編程處理器的一部分的高級框圖,其包含實(shí)施用于有效處置邊界越過指令 的技術(shù)的獲取部分的示范性元件。圖2是可編程處理器的管線實(shí)施方案的功能框圖,所述管線實(shí)施方案可并入有圖1 中所示的元件。圖3描繪來自指令高速緩沖存儲器線的指令數(shù)據(jù),其中所述高速緩沖存儲器線含有 八個(gè)32位指令。圖4描繪來自指令高速緩沖存儲器線的指令數(shù)據(jù),其中所述高速緩沖存儲器線含有 十六個(gè)16位指令。圖5描繪來自兩個(gè)指令高速緩沖存儲器線的指令數(shù)據(jù),所述兩個(gè)指令高速緩沖存儲 器線中的每一者包含16位和32位指令的混合以及邊界越過32位指令的一部分。圖6描繪在將選定的位編譯成一個(gè)32位指令的指令數(shù)據(jù)對準(zhǔn)處理之前的64位寄存 器中的數(shù)據(jù)。圖7描繪通過獲取含有邊界越過指令的多個(gè)部分的兩個(gè)線而恢復(fù)的所得32位指令。
具體實(shí)施方式
在以下具體實(shí)施方式
中,以實(shí)例的方式陳述大量特定細(xì)節(jié),以便提供對相關(guān)教示的 全面理解。然而,所屬領(lǐng)域的技術(shù)人員應(yīng)明白,可在無此類細(xì)節(jié)的情況下實(shí)施本教示。 在其它例子中,已經(jīng)以相對較高等級而無細(xì)節(jié)的形式描述了眾所周知的方法、程序、組 件和電路,以便避免不必要地混淆本教示的方面。如本文所論述,處理器的意在為所述處理器獲取指令的系統(tǒng)或部分的實(shí)例包括指令 高速緩沖存儲器和多個(gè)處理級。由此,獲取部分本身通常由處理級管線形成。允許指令 越過高速緩沖存儲器線邊界。當(dāng)從其發(fā)出對更高等級存儲器的請求的級具有越過高速緩 沖存儲器線邊界的指令的第一部分時(shí),所述級檢查下一個(gè)線。如果所述級確定所述邊界 越過指令數(shù)據(jù)的第二部分不包含在高速緩沖存儲器(Ll)中,那么其使來自第一線的指 令的部分的初始獲取無效,并使第一獲取地址返回到獲取管線的開頭。當(dāng)對第二地址的 處理移動到所述級時(shí),第二獲取己經(jīng)轉(zhuǎn)換成接觸或預(yù)獲取操作。處理因此將數(shù)據(jù)加載到 指令高速緩沖存儲器,但在此第一次穿過獲取管線時(shí)不將第二線傳遞到解碼級。因此,含有指令的第二段的指令線在高速緩沖存儲器中。當(dāng)獲取級(在再循環(huán)之后)再次處理 第一地址時(shí),第二地址再次以正常次序跟隨,且用于第二地址的高速緩沖存儲器中的線 現(xiàn)含有邊界越過指令的必要的第二段??蓪碜缘诙€的所需指令的所述部分降為所獲 取的第一線(取代第一線中原本不需要的數(shù)據(jù)段),以在來自獲取級的輸出的一個(gè)循環(huán)內(nèi) 完成所需的指令。在實(shí)例中,管線的高于(在其之前)含有第二獲取地址的級的任何級被清洗。因此, 不從獲取管線輸出任何指令線數(shù)據(jù),直到所需指令在第二次穿過指令獲取管線期間在一 個(gè)循環(huán)中被組合為止?,F(xiàn)詳細(xì)參考附圖中所說明且在下文論述的實(shí)例。圖1說明管線處理器的若干個(gè)級和 相關(guān)聯(lián)的存儲器。圖2描繪整個(gè)管線,而圖1展示管線的如將在從存儲器獲取指令且處 置越過高速緩沖存儲器線邊界的指令的過程(如下文所論述)中所涉及的第一部分的稍 微更多的細(xì)節(jié)。參看圖2,簡化的管線處理器10包含五類主要的管線處理級,獲取11、解碼13、讀 出15、執(zhí)行17和回寫19。圖中的箭頭表示邏輯數(shù)據(jù)流,不一定是物理連接。所屬領(lǐng)域 的技術(shù)人員將了解,任一或所有這些級可分解成執(zhí)行相關(guān)功能的部分的多個(gè)級,或所述 管線可包含用于提供額外功能性的額外級。實(shí)際的超標(biāo)量實(shí)例可由兩個(gè)或兩個(gè)以上平行 管線組成,每個(gè)平行管線(例如)包括多個(gè)級。出于論述目的,將所述主要種類的級中 的若干者展示為單個(gè)級,盡管通常將每一者分解成兩個(gè)或兩個(gè)以上級。與處置越過高速 緩沖存儲器線邊界的指令的本論述內(nèi)容相關(guān)的部分是獲取部分11,因此在圖1中更詳細(xì) 地展示形成所述部分的單獨(dú)級。盡管圖1和圖2中未單獨(dú)展示,但管線10的每個(gè)級通常 包括狀態(tài)機(jī)或?qū)嵤┫嚓P(guān)邏輯功能的類似物,以及用于將指令和/或任何處理結(jié)果傳遞到下 一級或傳遞回到GPR寄存器文件29的相關(guān)聯(lián)的寄存器。在示范性管線10中,管線處理器10的第一部分執(zhí)行指令獲取功能11。獲取部分包 括一個(gè)或一個(gè)以上用于獲得指令以供由稍后級來處理的站。獲取級(11)從一般由存儲 器21表示的存儲器層級獲得指令。存儲器21通常包含指令高速緩沖存儲器(iCache), 有時(shí)被稱為1級(Ll)高速緩沖存儲器23、 2級(L2)高速緩沖存儲器25和主存儲器 27。指令可從其它源(例如自引導(dǎo)ROM或盤驅(qū)動器)加載到主存儲器。盡管所述存儲器 中的一些存儲器(例如指令高速緩沖存儲器)可能在處理器10的核心中或靠近所述核心, 但其它存儲器(例如主存儲器)將在處理器IO外部或與處理器IO分離。在一些結(jié)構(gòu)中, 指令高速緩沖存儲器23可以是獲取部分11的元件(如針對圖1中的實(shí)例所示)。L2高速緩沖存儲器27存儲待處理的指令和數(shù)據(jù)兩者(操作數(shù)數(shù)據(jù))。L2高速緩沖存 儲器27由指令高速緩沖存儲器23和(例如)級15在操作數(shù)數(shù)據(jù)讀出期間所使用的數(shù)據(jù) 高速緩沖存儲器(未圖示)共享。L2高速緩沖存儲器27與指令高速緩沖存儲器23相比 較大而且存取較慢。主存儲器27進(jìn)而還要更大且存取更慢,但存儲顯著更多的信息。從 指令高速緩沖存儲器23獲取(例如)可能需要三個(gè)處理循環(huán),從L2高速緩沖存儲器25 獲取可能消耗IO個(gè)左右處理循環(huán),而從主存儲器27獲取可能需要大約100個(gè)處理循環(huán)。獲取級11將每個(gè)指令供應(yīng)到解碼級13。指令解碼級13的邏輯對接收到的指令字節(jié) 進(jìn)行解碼,并將結(jié)果供應(yīng)到管線的下一級。下一主要種類的級提供數(shù)據(jù)存取或讀出,如由級15共同表示。讀出級(15)的邏輯 存取通用寄存器(GPR)文件29中指定的寄存器中的操作數(shù)數(shù)據(jù)。在一些情況下,讀出 級15的邏輯可從存儲器或其它資源(未圖示)獲得操作數(shù)數(shù)據(jù)。將指令和操作數(shù)數(shù)據(jù)傳遞到提供執(zhí)行功能的一個(gè)或一個(gè)以上級17。執(zhí)行級17實(shí)質(zhì) 上對檢索到的操作數(shù)數(shù)據(jù)執(zhí)行每個(gè)指令的特定功能,并產(chǎn)生結(jié)果。提供執(zhí)行功能的級17 可(例如)實(shí)施算術(shù)邏輯單元(ALU)。級19將結(jié)果回寫到文件29中的寄存器,或回寫 到存儲器,例如L2高速緩沖存儲器25和/或主存儲器27。如所述,圖l稍微更詳細(xì)地展示形成獲取部分11的管線的級和相關(guān)聯(lián)元件。如那里 所示,示范性獲取部分11包括三個(gè)管線級31、 33和35,用于循序地處理地址。當(dāng)?shù)刂?流經(jīng)獲取管線部分11的級時(shí),在任一給定時(shí)間,僅有一個(gè)地址在所述級中的每一者中且 在所述每一者中被處理。通常,對于給定地址,第一循環(huán)(在IC1級31中)處理所述地 址以識別用于指令高速緩沖存儲器23的適當(dāng)存儲器線的標(biāo)簽。第二循環(huán)(在IC2級33 中)使用所述標(biāo)簽來存取指令高速緩沖存儲器23的特定線。獲取管線的指令數(shù)據(jù)對準(zhǔn) (IDA)部分包含IDA級35,其用于處理從IC2級33下降的地址數(shù)據(jù);和IDA數(shù)據(jù)級 39,其用于處理從iCache23下降的數(shù)據(jù),以提取實(shí)際指令。因此,第三循環(huán)(在IDA元 件35和39中)處理來自指令高速緩沖存儲器23的特定線的數(shù)據(jù),以恢復(fù)至少所述一個(gè) 指令,例如來自所述線上的8個(gè)或更多個(gè)的16或32位指令,以供輸出到解碼級13。所 屬領(lǐng)域的技術(shù)人員將了解,可將處理器設(shè)計(jì)成從IDA級中的高速緩沖存儲器數(shù)據(jù)線提取 兩個(gè)或兩個(gè)以上指令。更具體地說,以預(yù)期執(zhí)行的次序?qū)⒅噶畹牡刂饭?yīng)到第一級IC1 31。通常,所述次 序是循序的,盡管程序執(zhí)行可能改變所述次序,例如在出現(xiàn)條件轉(zhuǎn)移指令的條件時(shí)。使 用相應(yīng)的標(biāo)簽來存取指令高速緩沖存儲器23的存儲器線。第一指令高速緩沖存儲器處理級(IC1) 31響應(yīng)于接收到的指令地址,使用內(nèi)容可尋址存儲器(CAM)來識別用于高 速緩沖存儲器線的標(biāo)簽。所述標(biāo)簽是用于搜索高速緩沖存儲器中的指令的地址的子集。 實(shí)質(zhì)上,CAM (IC1)級31獲得所述地址(標(biāo)簽),并將其與高速緩沖存儲器23中可能 與之匹配的可能的標(biāo)簽進(jìn)行比較,從而產(chǎn)生一組搜索結(jié)果。在CAM循環(huán)的末尾處捕獲這 些搜索結(jié)果,且在地址處于級33中時(shí)的RAM (IC2)循環(huán)期間使用所述結(jié)果,以便將正 確的數(shù)據(jù)從高速緩沖存儲器23引導(dǎo)出來,以捕獲到IDA數(shù)據(jù)級39中。倘若管線保持防 止立即將由高速緩沖存儲器輸出的數(shù)據(jù)捕獲到IDA中,那么圖1中的高速緩沖存儲器23 的輸出處所示的鎖存器37是透明鎖存器。如上文所述, 一個(gè)標(biāo)簽對應(yīng)于指令高速緩沖存儲器23中的一個(gè)存儲器線,但每個(gè)線 保存許多指令。因此,處理一個(gè)標(biāo)簽以恢復(fù)來自存儲器的指定線將恢復(fù)IC2級33處的多 個(gè)存儲的指令。第三級35 (此處稱為IDA (指令數(shù)據(jù)對準(zhǔn))級)控制IDA數(shù)據(jù)處理部分 39,以接收并處理來自選定指令線的數(shù)據(jù)。指令高速緩沖存儲器23的底部線或寄存器 37保存來自選定存儲器線的指令數(shù)據(jù)。IDA數(shù)據(jù)部分39包含寄存器41以接收并處理來 自鎖存器37的數(shù)據(jù)。在實(shí)例中,寄存器41可以是64位鎖存器。級35和寄存器37中的 IDA處理實(shí)質(zhì)上從指令高速緩沖存儲器23的底部39選擇適當(dāng)?shù)奈唬诒匾獣r(shí)重新組織 那些位以便使所述位對準(zhǔn)以將它們改造成指令,并將恢復(fù)的指令輸出到解碼級13。如稍 后更多地論述,IDA數(shù)據(jù)部分39的其它元件執(zhí)行相關(guān)的功能,例如在高速緩沖存儲器未 命中的情況下,從更高等級的存儲器25和27獲得指令數(shù)據(jù)。一些處理器結(jié)構(gòu),例如Advanced Rise Machines Limited許可的"ARM"型處理器支 持至少兩個(gè)指令組,其中一個(gè)組的指令與另一組中的那些指令具有不同的長度。在ARM 型處理器中,(例如)標(biāo)準(zhǔn)指令的長度是32個(gè)位。第二或"Thumb"指令組由16位經(jīng)壓 縮指令和不同于其在ARM狀態(tài)下的對應(yīng)物而編碼的32位指令組成。16位Thumb指令 被解壓縮成其32位ARM均等物,且接著可以正常方式處理。然而,由于長度減小,所 以16位Thumb指令在處理器10中或與處理器10相關(guān)聯(lián)的各個(gè)存儲器裝置中需要較少 的存儲。通常,具有較長字長度的指令提供較快范圍的操作和/或更強(qiáng)大或更復(fù)雜的操作。 如所述,具有較短字長度的指令為程序或子例行程序提供存儲器節(jié)約,對于所述程序或 子例行程序來說,較小指令組的有限能力是足夠的。機(jī)器在若干"狀態(tài)"(ARM、 Thumb、 Jazelle-X/T2EE等)中的一者中操作,且僅可 對為所述狀態(tài)而設(shè)計(jì)的指令起作用。ARM狀態(tài)僅包含32位指令,且在五個(gè)最高有效位 中,任何編碼都是合法的。Thumb狀態(tài)包含16位指令與32位指令的混合物,T2EE也是如此。在這些狀態(tài)下,五個(gè)最高有效位確定所討論的指令是16位指令還是32位指令。如圖3中所示,256位高速緩沖存儲器線的實(shí)例可保存八個(gè)32位指令。在ARM中, 每一指令由32位的字組成,且每一32位指令與32位字線邊界對準(zhǔn),例如在指令高速緩 沖存儲器23的線中。如果高速緩沖存儲器線僅包含16位Thumb指令(例如,當(dāng)處理器 在Thumb模式下操作時(shí)),那么同一高速緩沖存儲器線可保存十六個(gè)16位指令,如圖4 中所示。一些處理器和/或一些操作模式(包含Thumb)將允許32位指令與16位指令的 混合,且因此一個(gè)高速緩沖存儲器線將含有32位指令與16位指令的混合。圖5展示兩個(gè)連續(xù)的線,其在每個(gè)高速緩沖存儲器線上保存32位指令與16位指令 的不同組合。所述線中的指令的布置純粹是任意的,且將在處理器10對不同ARM和 Thumb指令進(jìn)行操作時(shí),隨著時(shí)間而改變。有時(shí)指令將與高速緩沖存儲器線邊界對準(zhǔn)。 然而,如由圖5的實(shí)例所表示,以下情形將有時(shí)出現(xiàn),其中32位指令越過兩個(gè)高速緩沖 存儲器線之間的邊界。在此實(shí)例中,第一線CL1上的最后16位保存32位指令的一半A。 第二線CL2上的第一 16位保存所述同一 32位指令的另一半B?,F(xiàn)考慮通過圖1的獲取 管線11處理A-B指令。在第一處理循環(huán)期間,IC1級31起初接收對應(yīng)于含有部分A的線CL1的地址,并處 理所述地址以恢復(fù)線CL1的標(biāo)簽。在下一處理循環(huán)中,IC2級33使用所述標(biāo)簽來存取 CL1線,并將所述線上的數(shù)據(jù)移動到指令高速緩沖存儲器23的底部處的鎖存器37。高 速緩沖存儲器23還在命中(H)或未命中(M)線43上提供命中指示,其指示現(xiàn)處于高 速緩沖存儲器的底部處的鎖存器37中的CL1線含有所述指令的所需部分A。當(dāng)IC2在處 理CL1的搜索結(jié)果時(shí),也就是說在第二處理循環(huán)期間,IC1級31接收下一地址,在此情 況下,所述下一地址對應(yīng)于含有部分B的線CL2。 IC1級31處理所述地址以恢復(fù)線CL2 的搜索結(jié)果。在獲取處理的第三循環(huán)中,含有部分A的線CL1的地址下降到IDA級35。響應(yīng)于 來自早先循環(huán)的命中(H)指示,IDA級35的處理致使IDA數(shù)據(jù)部分39中的寄存器41 從指令高速緩沖存儲器23的底部處的鎖存器37捕獲位(包含所述指令的部分A的16 個(gè)位)。同時(shí),IC2級33使用線CL2的標(biāo)簽來恢復(fù)來自所述存儲器線的數(shù)據(jù),并將數(shù)據(jù) 加載到指令高速緩沖存儲器23的底部處的鎖存器37。當(dāng)IDA級35接收第一地址時(shí),其檢查從鎖存器37下來的數(shù)據(jù)。實(shí)質(zhì)上,IDA級35 在尋找所需指令的數(shù)據(jù)。作為IDA級35的分析的一部分,其將識別所請求的指令是否 越過高速緩沖存儲器線邊界。使用ARM和Thumb作為指令的實(shí)例,32位Thumb指令總是以5個(gè)最高有效位的三 個(gè)可能值中的一者(11101; 11110; 11111)開始。實(shí)質(zhì)上,所述邏輯可査看鎖存器41 中的每一條16位數(shù)據(jù)。如果5個(gè)最高有效位不具有32位指令的三個(gè)所需值中的一者, 那么16位表示Thumb指令。然而,所述邏輯每次發(fā)現(xiàn)5個(gè)最高有效位具有32位指令所 需的三個(gè)值中的一者時(shí),其將所述16位辨認(rèn)為32位指令的第一半。假定時(shí)隙不在高速 緩沖存儲器線的尾端處,所述線上的下一 16個(gè)位將是32位指令的另一半。如果具有32 位指令(如5個(gè)最高有效位)的三個(gè)值中的一者的時(shí)隙在高速緩沖存儲器線的尾端處, 那么32位指令越過高速緩沖存儲器線邊界。因此,IDA級35可確定所述指令的部分A 在第一線CL1的結(jié)尾處,但I(xiàn)DA級35需要查看另一線來尋找所需指令的部分B。起初,針對此實(shí)例,假定指令的另一部分包含在下一高速緩沖存儲器線CL2中。在 獲取處理的第二循環(huán)期間,高速緩沖存儲器23還在H/M線43上提供命中(H)指示, 其指示現(xiàn)處于高速緩沖存儲器23的底部處的鎖存器37中的CL2線含有指令的所需部分 B。以此方式,部分B出現(xiàn)在高速緩沖存儲器的底部。IDA級35再次檢査高速緩沖存儲 器線數(shù)據(jù)的16位部分,并找到越過線CL1與線CL2之間的邊界的所述指令的16位第二 部分。IDA級35致使寄存器41捕獲所需指令的額外部分B。形成寄存器41的64位鎖 存器現(xiàn)含有所需指令的兩段,盡管所述部分可能不正確地對準(zhǔn),如由圖6以圖表方式所 表示。IDA數(shù)據(jù)級39和寄存器41進(jìn)行的進(jìn)一步處理使兩個(gè)部分A和B的數(shù)據(jù)位對準(zhǔn)并 組合成一個(gè)32位指令(如由圖7以圖表方式所表示),并將經(jīng)組合的指令傳遞到解碼級 13。前面的實(shí)例假定所需指令的兩個(gè)部分A和B存在于指令高速緩沖存儲器23中的CL1 和CL2高速緩沖存儲器線中,也就是說,命中-命中的情形。然而,所屬領(lǐng)域的技術(shù)人員 將了解,情況并非總是如此。相對于指令高速緩沖存儲器23的所存取線中的指令數(shù)據(jù), 將出現(xiàn)獲取指令的第二部分的企圖會導(dǎo)致高速緩沖存儲器未命中的情形。現(xiàn)考慮命中-未 命中的情況。第一部分A存在于CL1線(命中)中,但部分B在通過IC2級33的處理 進(jìn)行恢復(fù)時(shí)并非起初就存在于CL2線中(未命中)。如在早先實(shí)例中,在第一處理循環(huán)期間,IC1級31起初接收對應(yīng)于含有部分A的線 CL1的地址,并處理所述地址以恢復(fù)線CL1的搜索結(jié)果。在下一處理循環(huán)中,IC2級33 使用那些搜索結(jié)果來存取CL1線,并將所述線上的數(shù)據(jù)移動到指令高速緩沖存儲器23 的底部處的鎖存器37。高速緩沖存儲器23還在線43上提供命中(H)指示,其指示現(xiàn) 處于高速緩沖存儲器的底部處的鎖存器37中的CL1線含有指令的所需部分A。當(dāng)IC2正在處理CL1的搜索結(jié)果時(shí),也就是說在第二處理循環(huán)期間,IC1級31接收下一地址, 在此情況下,即對應(yīng)于預(yù)期含有部分B的線CL2的地址。IC1級31處理所述地址以恢復(fù) 線CL2的搜索結(jié)果。在獲取處理的第三循環(huán)中,含有部分A的線CL1的地址下降到IDA級35。響應(yīng)于 來自先前循環(huán)的命中(H)指示,IDA級35的處理致使IDA數(shù)據(jù)部分39中的寄存器41 捕獲來自指令高速緩沖存儲器23的底部處的鎖存器37的位(包含指令的部分A的16 個(gè)位)。同時(shí),IC2級33試圖使用線CL2的搜索結(jié)果來恢復(fù)來自所述存儲器線的數(shù)據(jù), 并將所述數(shù)據(jù)加載到指令高速緩沖存儲器23的底部處的鎖存器37。到目前為止,命中-未命中實(shí)例的處理實(shí)質(zhì)上與第一命中-命中實(shí)例中的處理相同。然 而,在此第二實(shí)例中,當(dāng)IC級33原本會將數(shù)據(jù)從CL2線移動到鎖存器37時(shí),高速緩 沖存儲器23在H/M線43上提供未命中(M)指示,其指示現(xiàn)處于高速緩沖存儲器23 的底部處的CL2線不含有指令的所需部分B。在此實(shí)例中,A-B指令越過高速緩沖存儲器線邊界,且部分11中的邏輯已經(jīng)確定其 具有(成功地獲取)從指令高速緩沖存儲器23存取的數(shù)據(jù)的第一線CL1中的指令數(shù)據(jù) 的第一部分A,但所述指令數(shù)據(jù)的第二部分B不在從高速緩沖存儲器23存取的數(shù)據(jù)的第 二線CL2中。因此,IDA級35的邏輯使對應(yīng)于CL1線的地址的獲取無效(以便不將任 何指令數(shù)據(jù)傳遞到解碼級13)。而且,管線的高于(先于)含有第二獲取地址的級的任 何級被清洗。在所說明的三級獲取結(jié)構(gòu)中,IC1級31是唯一一個(gè)在保存CL2線的地址的 IC2級之上的級,所以IC1級31被清洗。此時(shí),IDA級35的邏輯還經(jīng)由重新獲取級45使對應(yīng)于CL1的第一獲取地址返回到 獲取管線11的開頭。重新獲取級45用于提供經(jīng)再循環(huán)的地址作為在下一循環(huán)中輸入到 IC1級31的下一地址,且使地址輸入串復(fù)位到所述第一地址,使得隨后的輸入地址是在 再循環(huán)的地址之后(在此情況下,在識別CL1線和指令的部分A的地址之后)適當(dāng)?shù)匾?次跟隨的地址。特別注意,這表示當(dāng)處理相對于所述第一地址而重新開始時(shí),對應(yīng)于預(yù) 期含有部分B的線CL2的地址將再次流經(jīng)緊在所述第一地址之后的級,如在第一次穿過 獲取管線11時(shí)那樣。在第三處理循環(huán)中,當(dāng)確定第二線CL2產(chǎn)生未命中時(shí),IC2級33將對所述線的獲取 從獲取(F)轉(zhuǎn)換到接觸(T)或預(yù)獲取操作。獲取操作檢索指令,并將所述指令傳遞到 解碼級13,解碼級13進(jìn)而傳遞所述指令以供最后執(zhí)行。接觸(T)或預(yù)獲取操作僅抽出 所述指令,從而知道所述指令是否尚未在指令高速緩沖存儲器23中,所述處理會將所述指令加載到所述高速緩沖存儲器23。預(yù)獲取確保了指令數(shù)據(jù)在指令高速緩沖存儲器23 中,以用于稍后的處理,而不使指令下降到稍后的級以供執(zhí)行。在操作導(dǎo)致未命中的情 況下,那表示接觸處理將從其它存儲器資源(例如L2高速緩沖存儲器25和/或主存儲器 27)獲得必要的指令數(shù)據(jù),且指令數(shù)據(jù)線將在相關(guān)地址下次流經(jīng)獲取部分11的級時(shí)出現(xiàn)。IC2級33的邏輯包含鎖存器或含有T/F型字段47 (通常是旗標(biāo)位)的類似物,所述 T/F型字段47指示所述級33中的處理中的地址何時(shí)與接觸或獲取型操作相關(guān)。IDA級 35的邏輯包含鎖存器或含有類似T/F型字段49的類似物。當(dāng)IC2級33將地址傳遞到IDA 級35時(shí),IC2級33將T或F型指示從其字段47傳遞到IDA級35中的字段49。出于此論述的目的應(yīng)注意,當(dāng)起初在IC2級33中接收到第二地址時(shí),IC2級將其視 為獲取(F)操作。然而,對于越過高速緩沖存儲器線邊界的指令,當(dāng)高速緩沖存儲器在 線43上提供指示第二段B不在CL2高速緩沖存儲器線上的未命中(M)指示時(shí),IC2級 將類型字段47中的F改變成T,從而有效地將獲取轉(zhuǎn)換成接觸。接著,IC2級將接觸(T) 指示傳遞到IDA級35,如由圖1中的虛線箭頭所表示。在第四處理循環(huán)期間,當(dāng)已經(jīng)將第一地址傳遞到重新獲取級45時(shí),將第二地址傳遞 到IDA級35。使用所述地址,IC2級33現(xiàn)將傳遞僅會針對重新獲取處理使用所述地址 的指示,例如通過傳遞接觸指示(T)以供在IDA級邏輯中的字段49中使用。IDA級35 也根據(jù)線43上的未命中(M)指示知道所需的指令數(shù)據(jù)不在高速緩沖存儲器中的線上。 因此,IDA級35和IDA數(shù)據(jù)部分39可起始從更高等級的存儲器資源加載必要的指令數(shù) 據(jù)的步驟。IDA元件35、 39和41將相對于第二地址的接觸處理視為預(yù)獲取,本以質(zhì)上 將數(shù)據(jù)加載到指令高速緩沖存儲器23,但不將任何結(jié)果傳遞到解碼級13。因此,指令線 從更高等級的存儲器加載到高速緩沖存儲器23中,且可用于稍后的處理。當(dāng)獲取部分ll再次處理相對于第一地址的第一獲取時(shí),在再循環(huán)之后,第二地址再 次跟隨,但第二地址的線現(xiàn)處于L1指令高速緩沖存儲器23中。來自第二線CL2的所需 指令的部分B可在IDA處理期間與來自獲取的第一線CL2的部分A —起下降,代替所 述線中原本不需要的數(shù)據(jù)段,以完成來自獲取部分11的輸出的一個(gè)線內(nèi)的所需指令,正 如在上文所論述的命中-命中實(shí)例中的情況。然而,為了理解這些操作,稍微更詳細(xì)地考 慮對到達(dá)IDA級的第二線地址的接觸的操作可能是有幫助的。管線的獲取部分11包含兩個(gè)填充緩沖器51和53,用于將來自L2高速緩沖存儲器 25的指令數(shù)據(jù)轉(zhuǎn)移到IDA數(shù)據(jù)部分39中的寄存器41。當(dāng)針對指定地址的獲取型操作到 達(dá)IDA級35并導(dǎo)致未命中(M)時(shí),IDA數(shù)據(jù)部分39將對缺失指令線的請求發(fā)送到L2高速緩沖存儲器25。 L2高速緩沖存儲器25可含有用于所請求的線的數(shù)據(jù),或如果沒有, 那么L2高速緩沖存儲器25通常從主存儲器27獲得用于所請求的線的數(shù)據(jù)。L2高速緩 沖存儲器25將所述線的一半加載到緩沖器51中,且將另一半加載到緩沖器53中。IDA 數(shù)據(jù)部分39的邏輯以與將數(shù)據(jù)從高速緩沖存儲器23中的鎖存器37加載到寄存器41中 的方式類似的方式,將高速緩沖存儲器線數(shù)據(jù)的相關(guān)部分加載到寄存器41中。同時(shí),緩 沖器51和53將整個(gè)指令數(shù)據(jù)線提供到指令高速緩沖存儲器23,以供存儲和將來使用。在命中-未命中實(shí)例中,對第二高速緩沖存儲器線地址的接觸使用IDA元件和填充緩 沖器的這些操作來將必需線CL2的數(shù)據(jù)加載到指令高速緩沖存儲器23中。多個(gè)部分可 轉(zhuǎn)到IDA數(shù)據(jù)部分,但通常不被加載到IDA寄存器41中,因?yàn)闆]有數(shù)據(jù)下降到解碼級。 IDA級將相對于所述地址的此第一流動視為接觸型操作,即僅預(yù)獲取。在接觸完成之后的下一循環(huán)中,在IC1級31處再次處理第一地址,以識別第一高速 緩沖存儲器線CL1的標(biāo)簽。IC1級31將第一標(biāo)簽傳遞到IC2級33。在下一循環(huán)中,IC2 級讀取高速緩沖存儲器線ICl,同時(shí)在IC2級33處再次處理第二地址,以識別第一高速 緩沖存儲器CL2的標(biāo)簽。IC2級33的處理將來自CL1線的數(shù)據(jù)加載到鎖存器37,且在 下一循環(huán)中,所述數(shù)據(jù)線下降,其中選定部分流動到IDA寄存器41。通過寄存器41中 的相關(guān)CL1數(shù)據(jù),IC2級33讀取高速緩沖存儲器線CL2,并將數(shù)據(jù)從所述線加載到鎖存 器37。在此第二回合,兩個(gè)高速緩沖存儲器線的讀取產(chǎn)生命中,如在早先的命中-命中實(shí) 例中的情況。以此方式,部分B在指令第二次穿過獲取部分II的管線時(shí)出現(xiàn)在高速緩沖存儲器的 底部,且IDA級35致使寄存器41捕獲所需指令的額外部分。形成寄存器41的64位鎖 存器現(xiàn)含有所需指令的兩段,盡管所述部分可能不合適地對準(zhǔn),再次如由圖6以圖表方 式表示。IDA數(shù)據(jù)級39和寄存器41進(jìn)行的進(jìn)一步處理使兩個(gè)部分A和B的數(shù)據(jù)位對準(zhǔn) 并組合成一個(gè)32位指令(如由圖7以圖表方式表示),并將經(jīng)組合的指令傳遞到解碼級 13,如在早先實(shí)例中那樣。在實(shí)例中,當(dāng)處理使第一獲取地址返回到獲取管線11的開頭時(shí),其初始通過同時(shí)無效,以便不傳遞到解碼級。而且,管線的高于(在其之前)含有第二獲取地址的級的任 何級被清洗。當(dāng)?shù)谝坏刂吩傺h(huán)時(shí),在其與第二地址的接觸之間不存在任何運(yùn)行中的地 址。當(dāng)預(yù)獲取完成時(shí),IDA級35丟棄所述地址和IDA寄存器41中的相關(guān)聯(lián)數(shù)據(jù)。因此, 不從獲取管線11輸出指令線數(shù)據(jù),直到所需指令在第二次穿過指令獲取管線期間被組合 為止。對于此類型的處理,僅IDA元件可起始從更高等級的存儲器資源的獲取。這有助于 高性能處理器設(shè)計(jì),因?yàn)樵谥噶瞰@取處理的過程中,僅一個(gè)級對更高等級的存儲器資源 發(fā)出請求。再循環(huán)的第一地址在下降回到IC1、 IC2且接著到IDA中之前,在重新獲取 45中僅花費(fèi)一個(gè)循環(huán)。在這些情況下,針對第二次穿過獲取級,L2高速緩沖存儲器25 通常不可能已經(jīng)及時(shí)使指令數(shù)據(jù)的第二段返回到高速緩沖存儲器23。因此,IDA級在L2 高速緩沖存儲器25上保持不動并等待,且直接從填充緩沖器51, 53接收指令數(shù)據(jù)的第 二半。在前面的實(shí)例中,對越過高速緩沖存儲器線邊界的指令的兩個(gè)線的處理導(dǎo)致命中-未 命中,因?yàn)榈谝痪€含有所述指令的一部分,但第二線不含有。在兩個(gè)高速緩沖存儲器線 都不含有指令的所需部分的情況(也就是說,未命中-未命中情況)下,應(yīng)用大體上類似 的處理。在此后者情況下,對第一線的處理從L2高速緩沖存儲器25或主存儲器27獲得 數(shù)據(jù),并將指令數(shù)據(jù)線加載到指令高速緩沖存儲器23中。 一旦確定第二線是未命中,第 一地址便被再循環(huán);將第二獲取轉(zhuǎn)換成接觸;且處理如在命中-未命中實(shí)例中那樣繼續(xù)。第一高速緩沖存儲器線不含有所需指令的一部分,但第二線含有(未命中-命中)的 情況以非常類似于命中-命中的情況的方式流經(jīng)獲取部分11的級。第一線的處理導(dǎo)致未 命中,但I(xiàn)DA處理獲得來自更高等級存儲器資源的必要的指令數(shù)據(jù)線。從填充緩沖器51, 53選擇位以填充第一線的IDA寄存器41。在那之后,對來自鎖存器37的第二線的處理 (第二線上的命中)與命中-命中實(shí)例中相同。為了總結(jié)處理邏輯,確定指令獲取操作何時(shí)第一次到達(dá)IDA級35并使其目標(biāo)高速 緩沖存儲器線的所有指令數(shù)據(jù)可用。IDA級確定指令是否越過線邊界。如果沒有越過, 那么IDA級以正常方式處理所述指令。然而,如果存在線邊界越過,那么IDA級35的 邏輯査看來自高速緩沖存儲器23的命中/未命中指示,以確定應(yīng)含有邊界越過指令的第 二段的下一線上是否存在命中。如果存在,那么IDA級可從高速緩沖存儲器捕獲所述第 二段,并將完整的指令提供到解碼級13。然而,如果在IC2級33中待決的下一線上存 在未命中,也就是說,如果下一高速緩沖存儲器線不含有邊界越過指令的必要的第二段, 那么IDA和IC2級實(shí)施本文所教示的處理。在此情況下,IDA級35使相對于第一地址的當(dāng)前獲取無效,并使第一高速緩沖存儲 器線的地址(例如通過重新獲取級45)再循環(huán)。第二線的地址下降到IDA級35。然而, 在這種情況下,對第二地址的處理已經(jīng)從獲取型操作轉(zhuǎn)換到預(yù)獲取型操作。IC1級被清 洗。IDA級起始加載來自L2高速緩沖存儲器25且/或來自主存儲器27的必要的指令數(shù)據(jù)的操作。在此上載完成時(shí),數(shù)據(jù)存儲在指令高速緩沖存儲器23中,且IC1級31可從 經(jīng)再循環(huán)的第一地址重新開始處理。當(dāng)兩個(gè)地址第二次流經(jīng)獲取部分lla的級時(shí),邊界 越過指令的所有必要數(shù)據(jù)都出現(xiàn)在高速緩沖存儲器23中的適當(dāng)?shù)膬蓚€(gè)線上,且獲取部分 可檢索那些部分,并將其位編譯成一個(gè)指令,且沿管線IO將所述指令輸出到下一級,例 如以供解碼。當(dāng)指令高速緩沖存儲器23全面操作時(shí),應(yīng)用上文所概述的處理。然而,在指令高速 緩沖器23禁用(例如在啟動期間)時(shí),可應(yīng)用類似的處理來經(jīng)由填充緩沖器51和53來 加載數(shù)據(jù)。在那種情況下,處理流實(shí)質(zhì)上導(dǎo)致高速緩沖存儲器23的線中的未命中-未命 中情形。當(dāng)將第二地址轉(zhuǎn)換到接觸時(shí),將所述填充緩沖器中的一者用作臨時(shí)高速緩沖存 儲器,以保存所述線的用于指令段B的相關(guān)一半。當(dāng)?shù)谝恢噶罘聪蜓h(huán)通過時(shí),將第一 線的相關(guān)部分加載到另一填充緩沖器,且IDA數(shù)據(jù)部分可編譯來自兩個(gè)緩沖器51和52 的指令,實(shí)質(zhì)上如針對尚未越過線邊界的指令會發(fā)生的情況。在上文的論述中所給出的位的數(shù)目(例如不同類型的指令的16位和32位長度、高 速緩沖存儲器線的8字長度以及鎖存器、寄存器和緩沖器的各種大小)僅是代表性實(shí)例。 所屬領(lǐng)域的技術(shù)人員將認(rèn)識到,在不同的處理器結(jié)構(gòu)和實(shí)施方案中,各個(gè)組件的指令長 度和大小可能更長或更短。而且,混合中可能存在更寬范圍的可能的指令大小,例如16 位、32位、64位或更大。另外,獲取部分11中或甚至管線10中的級的數(shù)目可顯著變化, 但處理器仍可根據(jù)本文所論述的教示來實(shí)施其對越過線邊界的指令的獲取處理。雖然前述內(nèi)容已經(jīng)描述了被視為最佳模式和/或其它實(shí)例的內(nèi)容,但應(yīng)了解,可在其 中作出各種修改,且本文所揭示的標(biāo)的物可以各種形式且在各種實(shí)例中實(shí)施,且所述教 示可應(yīng)用于大量應(yīng)用中,本文僅描述了其中的一些應(yīng)用。所附權(quán)利要求書意在主張屬于 本教示的實(shí)際范圍內(nèi)的任何和所有應(yīng)用、修改和變化。
權(quán)利要求
1.一種從存儲器獲取指令以供在可編程處理器中執(zhí)行的方法,其中指令可越過存儲器線邊界,所述方法包括響應(yīng)于第一地址而起初獲取指令數(shù)據(jù)的第一線;根據(jù)指令數(shù)據(jù)的所述第一線確定待獲取的指令是否越過指令數(shù)據(jù)的所述第一線與指令數(shù)據(jù)的第二線之間的邊界,其中指令數(shù)據(jù)的所述獲取的第一線含有所述待獲取的指令的第一段;一旦確定所述待獲取的指令越過所述邊界,便確定對應(yīng)于第二地址的高速緩沖存儲器線是否含有所述待獲取的指令的第二段;一旦確定對應(yīng)于所述第二地址的所述高速緩沖存儲器不含有所述待獲取的指令的所述第二段,便(a)使對指令數(shù)據(jù)的所述第一線的所述初始獲取無效,并使所述第一地址再循環(huán);(b)從更高等級的存儲器資源預(yù)獲取指令數(shù)據(jù)的所述第二線;(c)響應(yīng)于所述經(jīng)再循環(huán)的第一地址,獲取指令數(shù)據(jù)的所述第一線;(d)響應(yīng)于所述第二地址,獲取指令數(shù)據(jù)的所述經(jīng)預(yù)獲取的第二線;以及(e)根據(jù)指令數(shù)據(jù)的所述獲取的第一和第二線,編譯所述待獲取的指令的所述段。
2. 根據(jù)權(quán)利要求l所述的方法,其中所述使指令數(shù)據(jù)的所述第一線的初始獲取無效防 止將待從指令數(shù)據(jù)的所述起初獲取的第一線獲取的所述指令中的任一者輸出到所 述處理器的其它元件。
3. 根據(jù)權(quán)利要求2所述的方法,其中所述預(yù)獲取將來自所述更高等級的存儲器資源的 指令數(shù)據(jù)的所述第二線加載到所述高速緩沖存儲器中,而不在隨后從所述高速緩沖 存儲器獲取指令數(shù)據(jù)的所述第二線之前將指令數(shù)據(jù)的所述第二線中的任一者輸出 到所述處理器的其它元件。
4. 根據(jù)權(quán)利要求3所述的方法,其中所述預(yù)獲取步驟需要將相對于所述第二地址的獲 取操作轉(zhuǎn)換成相對于所述第二地址的接觸操作。
5. 根據(jù)權(quán)利要求l所述的方法,其進(jìn)一步包括一旦確定對應(yīng)于所述第二地址的所述高 速緩沖存儲器不含有所述待獲取的指令的所述第二段,便清洗可能已相對于隨后地址而開始的任何獲取相關(guān)處理。
6. —種獲取指令以用于可編程處理器的方法,其包括檢測待獲取的指令越過指令線之間的邊界;一旦獲取指令數(shù)據(jù)的含有所述邊界越過指令的第一段的第一線,便檢測所述邊界 越過指令的第二段不在高速緩沖存儲器中;響應(yīng)于檢測到所述第二段不在所述高速緩沖存儲器中,使對指令數(shù)據(jù)的所述第一 線的所述獲取再循環(huán),而不輸出待從指令數(shù)據(jù)的所述第一線獲取的所述指令中的任 一者;預(yù)獲取指令數(shù)據(jù)的第二線;基于所述再循環(huán),獲取指令數(shù)據(jù)的所述第一線,并獲取指令數(shù)據(jù)的所述經(jīng)預(yù)獲取的第二線;以及對來自指令數(shù)據(jù)的所述經(jīng)獲取的第一和第二線的所述段進(jìn)行組合,以輸出所述邊 界越過指令。
7. 根據(jù)權(quán)利要求6所述的方法,其中所述第一線的所述獲取的所述再循環(huán)包括在檢測到所述第二段不在所述高速緩沖存儲器中之前,使待從所述已獲取的第一線獲取 的所述指令的任一部分無效。
8. 根據(jù)權(quán)利要求6所述的方法,其中所述第二線的所述預(yù)獲取包含將相對于所述第二線的獲取操作轉(zhuǎn)換成相對于所述第二線的所述預(yù)獲取。
9. 根據(jù)權(quán)利要求6所述的方法,其進(jìn)一步包括清洗所述第二線的所述預(yù)獲取與所述第一線的所述經(jīng)再循環(huán)的獲取之間的進(jìn)行中的任何獲取操作。
10. —種用于管線處理器的獲取部分,其包括指令高速緩沖存儲器;第一指令高速緩沖存儲器處理級,其用于識別對應(yīng)于輸入地址串中的每個(gè)各自地址的高速緩沖存儲器線;第二指令高速緩沖存儲器處理級,其響應(yīng)于高速緩沖存儲器線的每個(gè)識別,用于 從所述高速緩沖存儲器中的對應(yīng)于所述各自地址的存儲器線讀取指令數(shù)據(jù);指令數(shù)據(jù)對準(zhǔn)部分,其響應(yīng)于由所述第二指令高速緩沖存儲器處理級讀取的指令 數(shù)據(jù)的一個(gè)或一個(gè)以上線,用于輸出經(jīng)獲取的指令,所述指令數(shù)據(jù)對準(zhǔn)部分還從更 高等級的存儲器資源獲得數(shù)據(jù),以用于起初未在所述指令高速緩沖存儲器中找到的 任何指令或其部分;以及再循環(huán)和加載裝置,其用于一旦檢測到指令越過對應(yīng)于第一和第二地址的線之間 的邊界且所述對應(yīng)于所述第二地址的高速緩沖存儲器線起初不含有所述邊界越過 指令的一段,便將相對于所述第一地址的獲取再循環(huán)到所述第一指令高速緩沖存儲 器處理級且用于將相對于所述第二地址的獲取轉(zhuǎn)換成預(yù)獲取以促使所述指令數(shù)據(jù) 對準(zhǔn)部分將指令數(shù)據(jù)線從所述更高等級的存儲器資源加載到所述指令高速緩沖存 儲器。
11. 根據(jù)權(quán)利要求10所述的獲取級,其中所述指令高速緩沖存儲器的每個(gè)線可存儲具 有兩個(gè)或兩個(gè)以上不同長度的多個(gè)指令。
12. 根據(jù)權(quán)利要求10所述的獲取級,其中所述用于再循環(huán)的裝置包含用于將所述第一 地址傳遞回所述第一指令高速緩沖存儲器處理級的輸入的重新獲取級。
13. 根據(jù)權(quán)利要求10所述的包括所述獲取級的管線處理器,其進(jìn)一步包括用于對所述 獲取的指令進(jìn)行解碼的解碼級、用于根據(jù)經(jīng)解碼的指令獲得操作數(shù)數(shù)據(jù)以供處理的 讀出級、用于對操作數(shù)數(shù)據(jù)執(zhí)行經(jīng)解碼的指令的執(zhí)行級,以及用于將執(zhí)行結(jié)果寫入 到存儲裝置的回寫級。
14. 一種用于管線處理器的獲取部分,其包括指令高速緩沖存儲器;至少一個(gè)處理級,其用于依次處理多個(gè)地址中的每一者,以識別所述指令高速緩 沖存儲器中可能含有對應(yīng)于每個(gè)各自地址的指令或其一部分的存儲器線,并從所述 識別的線讀取數(shù)據(jù);以及用于以下操作的裝置檢測待獲取的指令越過高速緩沖存儲器線邊界且兩個(gè)經(jīng)尋 址的高速緩沖存儲器線中的第二者中缺少所述邊界越過指令的一部分,且作為響 應(yīng),用于使相對于對應(yīng)于所述兩個(gè)高速緩沖存儲器線中的第一者的地址的獲取無 效,并使所述對應(yīng)地址再循環(huán)以供輸入到所述至少一個(gè)處理級,且將含有所述缺少 部分的數(shù)據(jù)從更高等級的存儲器預(yù)獲取到所述第二高速緩沖存儲器線,以允許在所 述對應(yīng)地址第二次流動通過所述獲取部分時(shí)完整地獲取所述越過所述邊界的指令。
15. 根據(jù)權(quán)利要求14所述的獲取部分,其中所述至少一個(gè)處理級包含-第一指令高速緩沖存儲器處理級,其用于識別對應(yīng)于輸入地址串中的每個(gè)各自地 址的高速緩沖存儲器線;第二指令高速緩沖存儲器處理級,其響應(yīng)于高速緩沖存儲器線的每個(gè)識別,用于 從所述高速緩沖存儲器中對應(yīng)于所述各自地址的存儲器線讀取指令數(shù)據(jù);以及指令數(shù)據(jù)對準(zhǔn)部分,其響應(yīng)于由所述第二指令高速緩沖存儲器處理級讀取的指令 數(shù)據(jù)的一個(gè)或一個(gè)以上線,用于輸出經(jīng)獲取的指令,所述指令數(shù)據(jù)對準(zhǔn)部分還從更 高等級的存儲器資源獲得數(shù)據(jù),以用于起初未在所述指令高速緩沖存儲器中找到的 任何指令或其部分。
16. 根據(jù)權(quán)利要求14所述的獲取部分,其中所述指令高速緩沖存儲器的每個(gè)線可存儲 具有兩個(gè)或兩個(gè)以上不同長度的多個(gè)指令。
17. 根據(jù)權(quán)利要求14所述的獲取部分,其中所述用于再循環(huán)的裝置包含用于將所述第 一地址傳遞回所述至少一個(gè)處理級的輸入的重新獲取級。
18. 根據(jù)權(quán)利要求14所述的包括所述獲取部分的管線處理器,其進(jìn)一步包括用于對 所述獲取的指令進(jìn)行解碼的解碼級、用于根據(jù)經(jīng)解碼的指令獲得操作數(shù)數(shù)據(jù)以供處 理的讀出級、用于對操作數(shù)數(shù)據(jù)執(zhí)行經(jīng)解碼的指令的執(zhí)行級,以及用于將執(zhí)行結(jié)果 寫入到存儲裝置的回寫級。
全文摘要
一種處理器的獲取部分包括指令高速緩沖存儲器和用于獲得指令的若干級的管線。指令可越過高速緩沖存儲器線邊界。所述管線級處理兩個(gè)地址以恢復(fù)完整的邊界越過指令。在此類處理期間,如果所述指令的第二段不在所述高速緩沖存儲器中,那么使相對于第一線的獲取無效并再循環(huán)。在此第一回合中,將對所述指令的第二部分的地址的處理視為對將指令數(shù)據(jù)從更高等級的存儲器加載到所述高速緩沖存儲器的預(yù)獲取請求,而不將任何所述數(shù)據(jù)傳遞到所述處理器的稍后級。當(dāng)所述第一線地址再次穿過所述獲取級時(shí),所述第二線地址以正常次序跟隨,且可從所述高速緩沖存儲器獲取并以正常方式組合所述指令的兩段。
文檔編號G06F9/38GK101223503SQ200680025583
公開日2008年7月16日 申請日期2006年5月18日 優(yōu)先權(quán)日2005年5月18日
發(fā)明者布賴恩·邁克爾·斯坦普爾, 托馬斯·安德魯·薩托里烏斯, 杰弗里·托德·布里奇斯, 羅德尼·韋恩·史密斯 申請人:高通股份有限公司