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