專利名稱:用于高速緩存可變長度指令的方法及設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明大體來說涉及指令高速緩存,且更特定來說涉及高速緩存可變長度指令。
背景技術(shù):
微處理器的字長度可表示其基本數(shù)據(jù)工作單元的長度(以位或字節(jié)計(jì))。例如, 32位的微處理器具有32位(4個(gè)字節(jié))的標(biāo)稱字長度。指令通常以統(tǒng)一長度指令集 的形式存儲(chǔ)在存儲(chǔ)器的自然字邊界上。然而,某些微處理器使用可變長度指令,例如 32位與16位指令混合或64位與32位指令混合。對(duì)較短長度指令的支持在某些情況 下可提供舊型兼容性,且至少為可利用較短指令的應(yīng)用程序提供較小指令存儲(chǔ)器占用 面積的機(jī)會(huì)。
然而,實(shí)現(xiàn)存儲(chǔ)器節(jié)省要求將可變長度指令存儲(chǔ)在非自然邊界上。其中指令不必 一定存儲(chǔ)在自然字邊界上的存儲(chǔ)器可被視為未經(jīng)對(duì)準(zhǔn)存儲(chǔ)器,而其中指令存儲(chǔ)在自然 字邊界上的存儲(chǔ)器可被視為經(jīng)對(duì)準(zhǔn)存儲(chǔ)器。作為可使用未經(jīng)對(duì)準(zhǔn)的存儲(chǔ)器的一個(gè)實(shí) 例,ARM v7系列的微處理器支持字及半字指令,且允許跨越4個(gè)字節(jié)的邊界存儲(chǔ)4 個(gè)字節(jié)的指令。
雖然使用未經(jīng)對(duì)準(zhǔn)的存儲(chǔ)器來存儲(chǔ)指令可節(jié)省空間,但用于增強(qiáng)指令執(zhí)行性能的 較低等待時(shí)間指令緩沖器通常使用自然字對(duì)準(zhǔn)。例如,高速緩沖存儲(chǔ)器通常組織成緩 沖外部存儲(chǔ)器的字對(duì)準(zhǔn)段(線)的高速緩存線,所述外部存儲(chǔ)器可以是主存儲(chǔ)器或者 更高層級(jí)的高速緩沖存儲(chǔ)器。
將未經(jīng)對(duì)準(zhǔn)的指令讀入到經(jīng)對(duì)準(zhǔn)的高速緩存線中意味著所述高速緩存線中的邊 界位置可包含或可不包含完整的指令字。也就是說,字長度指令可跨越若干高速緩存 器邊界。線間邊界(即,從一個(gè)高速緩存線到下一高速緩存線的轉(zhuǎn)折)表示一種類型 的高速緩存器邊界,而線內(nèi)邊界(例如每一高速緩存線內(nèi)的字對(duì)準(zhǔn)段邊界)則表示另 一種類型的高速緩存器邊界。段邊界可起因于對(duì)小于總高速緩存線寬度的字對(duì)準(zhǔn)讀取 端口的使用。
從常規(guī)的高速緩存器檢索跨邊界指令需要進(jìn)行兩次存取讀出邊界位置之前的指 令數(shù)據(jù)的第一存取及讀取所述邊界位置之后的指令數(shù)據(jù)的第二存取。所述第二存取檢 索跨界指令的尾部(邊界后)部分。很明顯,高速緩沖存儲(chǔ)器中未對(duì)準(zhǔn)指令的普遍存 在可對(duì)整體高速緩存性能產(chǎn)生負(fù)面影響,因?yàn)樾枰~外的高速緩存器讀取來檢索未對(duì)
準(zhǔn)跨邊界指令的尾部部分。
發(fā)明內(nèi)容
根據(jù)本文中教示的方法及設(shè)備,指令高速緩存器控制器使用補(bǔ)充存儲(chǔ)器來存儲(chǔ)對(duì) 應(yīng)于高速緩存器邊界位置的經(jīng)高速緩存指令數(shù)據(jù)的冗余副本,且借此啟用隨后對(duì)跨越 所述邊界位置的指令的單個(gè)高速緩存存取檢索。在一個(gè)或一個(gè)以上實(shí)施例中,所述高 速緩存器控制器復(fù)制所述補(bǔ)充存儲(chǔ)器中的邊界后位置的指令數(shù)據(jù),且將所述經(jīng)復(fù)制數(shù) 據(jù)多路復(fù)用到可從邊界前位置獲得的高速緩存數(shù)據(jù)中。
一種高速緩存器控制器及方法的一個(gè)實(shí)施例通過將指令數(shù)據(jù)寫入到高速緩存線 并針對(duì)所述線中的一個(gè)或一個(gè)以上邊界位置將所述指令數(shù)據(jù)的冗余副本(例如,每一 邊界后位置處的半字)存儲(chǔ)在所述邊界位置來高速緩存指令。此類操作啟用基于從高 速緩存線讀取邊界前數(shù)據(jù)及從用于存儲(chǔ)邊界數(shù)據(jù)的輔助存儲(chǔ)器讀取邊界后數(shù)據(jù)從高 速緩存器對(duì)全部的未經(jīng)對(duì)準(zhǔn)指令的檢索。
在高速緩存器控制器的一個(gè)實(shí)施例中,所述控制器經(jīng)配置以將指令數(shù)據(jù)的存儲(chǔ)引 導(dǎo)到包含在指令高速緩存器中的高速緩存線,且引導(dǎo)一個(gè)或一個(gè)以上高速緩存器邊界 位置的指令數(shù)據(jù)的冗余副本的存儲(chǔ)。所述冗余數(shù)據(jù)存儲(chǔ)在輔助存儲(chǔ)器中,例如與指令 高速緩存器相關(guān)聯(lián)的標(biāo)簽陣列、包含在所述指令高速緩存器中或與所述高速緩存器相 關(guān)聯(lián)的一個(gè)或一個(gè)以上額外存儲(chǔ)器元件、單獨(dú)的存儲(chǔ)器陣列或較高層級(jí)的高速緩存 器。
高速緩存器控制器可包含在微處理器中。在一個(gè)實(shí)施例中,所述微處理器包括指 令高速緩存器及高速緩存器控制器。所述指令高速緩存器經(jīng)配置以高速緩存指令數(shù)據(jù) 線,且所述高速緩存器控制器經(jīng)配置以將對(duì)應(yīng)于所述高速緩存線的邊界位置的指令數(shù) 據(jù)的冗余副本存儲(chǔ)在輔助存儲(chǔ)器中。所述輔助存儲(chǔ)器可集成在包括所述高速緩存線的 高速緩沖存儲(chǔ)器中,或可實(shí)施于高速緩存器控制器或微處理器中其它處。
當(dāng)然,本發(fā)明不限于上述實(shí)施例。在閱讀以下詳細(xì)說明且參看附圖后,所屬技術(shù) 領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到額外的可能的實(shí)施例。
圖1是圖解說明指令高速緩存器及輔助存儲(chǔ)器的實(shí)施例的方塊圖。 圖2是圖解說明用于高速緩存可變長度指令的程序邏輯的實(shí)施例的邏輯流程圖。 圖3是圖解說明用于檢索經(jīng)高速緩存的可變長度指令的程序邏輯的實(shí)施例的邏 輯流程圖。
圖4是圖解說明指令高速緩存器及輔助存儲(chǔ)器的另一實(shí)施例的方塊圖。 圖5是圖解說明指令高速緩存器及輔助存儲(chǔ)器的又一實(shí)施例的方塊圖。 圖6是圖解說明包含指令高速緩存器及輔助存儲(chǔ)器的微處理器的實(shí)施例的方塊圖。
具體實(shí)施例方式
圖1圖解說明指令高速緩存器IO及包含在高速緩存器IO或與高速緩存器10相 關(guān)聯(lián)的輔助存儲(chǔ)器12的實(shí)施例。針對(duì)指令高速緩存器10的指令高速緩存事務(wù)由控制 器14來管理,控制器14經(jīng)配置以使用輔助存儲(chǔ)器12來存儲(chǔ)高速緩存器10中的一個(gè) 或一個(gè)以上邊界位置的指令數(shù)據(jù)的冗余副本。此外,控制器14管理從高速緩存器10 的指令數(shù)據(jù)檢索,以便在單個(gè)存取中檢索高速緩存器10中所存儲(chǔ)的至少一些未對(duì)準(zhǔn) 指令??刂破?4通過將來自高速緩存器10的邊界前數(shù)據(jù)與來自輔助存儲(chǔ)器12的邊 界后數(shù)據(jù)進(jìn)行組合來啟用從高速緩存器10對(duì)未對(duì)準(zhǔn)指令的單個(gè)存取檢索。
控制器14的這些操作因消除了或大大降低了會(huì)由高速緩存未經(jīng)對(duì)準(zhǔn)的指令導(dǎo)致 的性能損失而改善了高速緩存器性能。此操作改善了使用可變長度指令集且使用未經(jīng) 對(duì)準(zhǔn)的存儲(chǔ)器來用于指令數(shù)據(jù)存儲(chǔ)的系統(tǒng)的性能。也就是說,從較高層級(jí)的高速緩存 器或外部存儲(chǔ)器(二者均未顯示)接收以供存儲(chǔ)在指令高速緩存器10中的指令數(shù)據(jù) 可包括具有不同長度的指令的混合,這意味著指令邊界將未必匹配高速緩存器邊界。 在此類環(huán)境下,高速緩存器控制器14使用一個(gè)或一個(gè)以上高速緩存器邊界位置的邊 界后數(shù)據(jù)的冗余存儲(chǔ)來減少因?qū)⒖勺冮L度指令存儲(chǔ)在固定寬度的高速緩存器中而導(dǎo) 致的高速緩存器邊界侵犯的負(fù)面效應(yīng)。
在某些實(shí)施例中,控制器14存儲(chǔ)邊界后指令數(shù)據(jù),不論所述數(shù)據(jù)是否包含未對(duì) 準(zhǔn)指令,即,具有跨越高速緩存器邊界的一個(gè)或一個(gè)以上段的指令。同樣,控制器 14不會(huì)確定特定的指令是否未對(duì)準(zhǔn)。而是,針對(duì)高速緩存器10中的一個(gè)或一個(gè)以上 邊界位置,控制器14將邊界位置數(shù)據(jù)的冗余副本存儲(chǔ)在輔助存儲(chǔ)器12中來作為其定 期高速緩存器填充操作的一部分。在此類實(shí)施例中,控制器IO不會(huì)確定邊界數(shù)據(jù)實(shí) 際上是否表示部分指令,其僅在邊界數(shù)據(jù)表示存儲(chǔ)在邊界前位置的指令的尾部部分的 情況下復(fù)制邊界后位置的指令數(shù)據(jù)。
舉一個(gè)實(shí)例來說,每一高速緩存線均可具有表示半線讀取端口寬度的段邊界???制器14可經(jīng)配置以以冗余方式存儲(chǔ)(經(jīng)由輔助存儲(chǔ)器12)高速緩存線中緊靠段邊界 之后定位的半字,以使其可與檢索緊靠所述段之前而定位的半字相結(jié)合而被檢索。另 外,或另一選擇為,控制器14可經(jīng)配置以將隨后的高速緩存線中的第一半字視為半 字位置中處于隔開每一高速緩存線的線末端邊界處的尾部部分。在此類配置中,就像 將指令數(shù)據(jù)的尾部部分存儲(chǔ)在每一高速緩存線的末端位置一樣,控制器14將指令數(shù) 據(jù)的冗余副本存儲(chǔ)在每下一高速緩存線的開始位置。通過這種方式,可在單個(gè)高速緩 存存取中檢索轉(zhuǎn)折高速緩存線的指令。
操作的簡便性是盲目地將邊界位置復(fù)制到補(bǔ)充存儲(chǔ)器12中的一個(gè)優(yōu)點(diǎn)。也就是 說,控制器14的邏輯操作通過不試圖確定高速緩存器中的邊界位置實(shí)際上是否含有 跨越邊界的指令數(shù)據(jù)而得以簡化。然而,在其它實(shí)施例中,控制器14基于(例如) 可識(shí)別或至少暗示邊界位置數(shù)據(jù)表示完整的半字指令還是跨邊界的全字指令的預(yù)解碼操作來選擇性地存儲(chǔ)邊界位置數(shù)據(jù)的冗余副本。
根據(jù)此類實(shí)施例,控制器14響應(yīng)于各種未對(duì)準(zhǔn)指示符中的一者來選擇性地確定 哪一指令數(shù)據(jù)將存儲(chǔ)在輔助存儲(chǔ)器12中。雖然控制器14包含支持對(duì)未對(duì)準(zhǔn)指令數(shù)據(jù) 的識(shí)別及選擇性存儲(chǔ)的額外處理邏輯復(fù)雜性,但所述方法提供提高的輔助存儲(chǔ)器12 利用效率,因?yàn)椴⑽磳⑦吔缥恢脭?shù)據(jù)盲目地寫入到輔助存儲(chǔ)器12中。然而,不論控 制器14盲目地還是選擇性地將來自高速緩存器10的邊界位置數(shù)據(jù)復(fù)制到輔助存儲(chǔ)器 12中,此冗余指令數(shù)據(jù)存儲(chǔ)均啟用單個(gè)高速緩存存取指令檢索。
更詳細(xì)地說,指令高速緩存器10包括若干高速緩存線16-22,所述高速緩存線 還稱為高速緩存塊。每一高速緩存線16-22均經(jīng)配置以存儲(chǔ)從外部存儲(chǔ)器源(未顯示) 讀取的一個(gè)或一個(gè)以上指令或指令段。每一高速緩存線16-22均具有固定的存儲(chǔ)容量, 即,線大小,還可稱為塊大小。同樣,存儲(chǔ)在特定高速緩存線中的數(shù)據(jù)的最大量由指 令高速緩存器10的線大小來確定。另外,高速緩存線16-22可被進(jìn)一步劃分為若干 扇區(qū),例如,如圖1中圖解說明的扇區(qū)零及一。在一個(gè)實(shí)施例中,扇區(qū)大小對(duì)應(yīng)于與 指令高速緩存器10相關(guān)聯(lián)的存儲(chǔ)器端口大小。例如,指令高速緩存器10可具有32 字節(jié)的線大小及16字節(jié)的存儲(chǔ)器端口寬度,從而每高速緩存線形成兩個(gè)16字節(jié)的扇 區(qū)。同樣,通過將兩個(gè)16字節(jié)的數(shù)據(jù)群組寫入到特定高速緩存線的兩個(gè)扇區(qū)來填充 例示性高速緩存線16-22。所屬技術(shù)領(lǐng)域的技術(shù)人員將容易地了解,可將高速緩存線 大小設(shè)置到任何期望值,且所述高速緩存線可進(jìn)一步劃分為任何期望數(shù)目的扇區(qū)。
指令高速緩存器10中存儲(chǔ)的可變長度指令可跨越一個(gè)或一個(gè)以上高速緩存線邊 界,且因此可是未對(duì)準(zhǔn)的。輔助存儲(chǔ)器12通過存儲(chǔ)未對(duì)準(zhǔn)指令段(即,跨越高速緩 存線邊界存儲(chǔ)的指令的段)的冗余副本而減少與未對(duì)準(zhǔn)指令相關(guān)聯(lián)的負(fù)面影響。指令 段可等同于與指令相關(guān)聯(lián)的任何大小的數(shù)據(jù)序列,例如,字、半字、字節(jié)、半字節(jié)等。 同樣,當(dāng)指令高速緩存器10中存儲(chǔ)的指令的一個(gè)或一個(gè)以上段位于高速緩存線邊界 之外時(shí),未對(duì)準(zhǔn)段的冗余副本存儲(chǔ)在輔助存儲(chǔ)器12中。輔助存儲(chǔ)器12包含用于存儲(chǔ) 未對(duì)準(zhǔn)指令段的若干個(gè)行24-30,每一行具有一個(gè)或一個(gè)以上列32-34。因此,未對(duì)準(zhǔn) 指令段的冗余副本隨后可供用于連同指令高速緩存器10中存儲(chǔ)的指令的經(jīng)對(duì)準(zhǔn)段 (即,所述指令中不跨越高速緩存線邊界的段) 一起進(jìn)行同時(shí)存取。同樣,可通過將 從指令高速緩存器10中讀取的指令的經(jīng)對(duì)準(zhǔn)的段與從輔助存儲(chǔ)器12讀取的指令的未 對(duì)準(zhǔn)段進(jìn)行組合來在單個(gè)指令高速緩存存取期間檢索高速緩存器10中存儲(chǔ)的跨邊界 指令。
在非限定性實(shí)例中,控制器14選擇指令高速緩存器10的第一高速緩存線16來 用于指令數(shù)據(jù)的寫入,如圖2的步驟IOO所圖解說明。第一指令(例如,具有四個(gè)段 AQ - A3的指令)被從外部存儲(chǔ)器或另一高速緩存器檢索以作為寫入到選定的高速緩存 線的指令數(shù)據(jù)的一部分,如圖2的步驟102所圖解說明。所述第一指令具有跨越將第 一高速緩存線16中的扇區(qū)零與扇區(qū)一分隔開的高速緩存線內(nèi)邊界的兩個(gè)段A2及A3。 同樣,未對(duì)準(zhǔn)指令段A2及A3的冗余副本A2'及A3'被寫入到輔助存儲(chǔ)器12,如圖2的步驟104所圖解說明。寫入到第一高速緩存線16的指令數(shù)據(jù)還包括具有兩個(gè)段Bo 與B,的第二指令的第一段B。。所述指令的剩余部分段B,存儲(chǔ)在另一高速緩存線(例 如,第二高速緩存線18)中,來用作從外部存儲(chǔ)器或另一高速緩存器檢索的隨后的 指令數(shù)據(jù)群組的一部分。例如,第一及第二指令數(shù)據(jù)群組被檢索以用作填充高速緩存 器10的多個(gè)線的突發(fā)事務(wù)的一部分。
盡管存在致使第二指令段B,被寫入到高速緩存器10的特定機(jī)制,第二段B,仍 以跨越高速緩存線間邊界(例如,將高速緩存器IO的第一與第二高速緩存線16、 18 分隔開的高速緩存線間邊界)的方式被存儲(chǔ)。同樣,未對(duì)準(zhǔn)指令段B,的冗余副本B, '存儲(chǔ)在輔助存儲(chǔ)器12中。隨后由控制器14檢索的第三指令數(shù)據(jù)群組包含具有四個(gè) 段Q)-C3的第三指令,所述段存儲(chǔ)在第三高速緩存線20中。此指令不具有未對(duì)準(zhǔn)段, 且因此無需將與所述第三指令相關(guān)聯(lián)的段存儲(chǔ)在輔助存儲(chǔ)器12中。因?yàn)榈谌噶钤?一個(gè)指令高速緩存存取期間是可檢索的(例如,通過存取第三高速緩存線20的扇區(qū) 零),所以輔助存儲(chǔ)器12不含有與第三指令相關(guān)的數(shù)據(jù)。
控制器14通過選擇含有期望指令的高速緩存線來檢索指令高速緩存器10中存儲(chǔ) 的指令,如圖3的步驟200所圖解說明。例如,控制器14選擇第一高速緩存線16以 檢索具有段B。與B,的第二可變長度指令。然后從選定的高速緩存線16讀取第二指 令的經(jīng)對(duì)準(zhǔn)的段B(),如圖3的步驟202所圖解說明。于此同時(shí),從輔助存儲(chǔ)器12同 時(shí)讀取第二指令的未對(duì)準(zhǔn)指令段B,'的冗余副本,如圖3的步驟204所圖解說明。通 過將從第一高速緩存線16讀取的指令的段B。與從輔助存儲(chǔ)器12讀取的指令的未對(duì) 準(zhǔn)段B,'進(jìn)行組合來重構(gòu)完整指令Bo、 B"圖3的步驟206圖解說明此類操作。借助 此類操作,控制器14避免需要多次高速緩存存取來從高速緩存器IO檢索未對(duì)準(zhǔn)跨邊 界指令。
圖4圖解說明包含在指令高速緩存器10中或與指令高速緩存器10相關(guān)聯(lián)的電路 的一個(gè)實(shí)施例,所述電路用于從高速緩存器IO及輔助存儲(chǔ)器12檢索可變長度指令。 通過將從指令高速緩存器10的選定的高速緩存線中讀取的指令的經(jīng)對(duì)準(zhǔn)的段與從輔 助存儲(chǔ)器12中讀取的指令的未對(duì)準(zhǔn)段進(jìn)行組合來檢索指令。特定來說,第一選擇電 路36 (例如,多路復(fù)用器)識(shí)別從中檢索存儲(chǔ)其中存儲(chǔ)的內(nèi)容的選定的高速緩存線 的扇區(qū)。例如,由控制器14提供的地址控制輸入(ADDR)致使多路復(fù)用器36選擇 指令高速緩存器10的選定的高速緩存線的扇區(qū)。同樣,選定的高速緩存線扇區(qū)的內(nèi) 容提供給組合器電路38。在一個(gè)實(shí)施例中,高速緩存線被劃分為兩個(gè)扇區(qū),兩個(gè)數(shù) 據(jù)半線中的一者(HL0或HL1)被提供給組合器電路38。在其它實(shí)施例中,將不同 量的數(shù)據(jù)提供給組合器電路38,其中所述量對(duì)應(yīng)于高速緩存線扇區(qū)的數(shù)目,例如, 1/2線的數(shù)據(jù)、1/4線的數(shù)據(jù)等。
第二選擇電路40 (例如,第二多路復(fù)用器)選擇輔助存儲(chǔ)器12中存儲(chǔ)的對(duì)應(yīng)于 從指令高速緩存器10檢索的指令段的未對(duì)準(zhǔn)指令段。例如,由控制器14提供的列選 擇信號(hào)(SEL)致使第二選擇電路40選擇輔助存儲(chǔ)器12的待存取的列。如果輔助存儲(chǔ)器12包括單個(gè)列的入口,則不需要第二選擇電路40。同樣,輔助存儲(chǔ)器12的選 定的入口被提供給組合器電路38。如果所述輔助存儲(chǔ)器含有每入口一個(gè)以上列的指 令段(例如圖4所圖解說明的兩個(gè)列32-34),則所述列中的一者由第二選擇電路40 選定。選定的列對(duì)應(yīng)于由當(dāng)前正從指令存儲(chǔ)器10檢索的指令跨越的邊界的類型。例 如,第二列34可存儲(chǔ)跨越高速緩存線間邊界的未對(duì)準(zhǔn)指令段,且由此在正從指令高 速緩存器IO檢索包括段BQ與BJ勺指令的情況下被選定。同樣,于此同時(shí)從輔助存 儲(chǔ)器12檢索未對(duì)準(zhǔn)指令段B,'的冗余副本,而從指令高速緩存器10檢索B0。
組合器電路38響應(yīng)于控制器14所提供的控制信號(hào)(CTRL)將指令高速緩存器 10的選定的輸出與輔助存儲(chǔ)器12的選定的輸出進(jìn)行組合以重構(gòu)正被檢索的指令。當(dāng) 正被檢索的指令不跨越高速緩存線邊界時(shí)(例如,圖4所圖解說明的具有段Q) - C3 的指令),組合器電路38不會(huì)將指令高速緩存器10的輸出與輔助存儲(chǔ)器12中存儲(chǔ) 的數(shù)據(jù)進(jìn)行組合。而是,由于所檢索的指令不是未對(duì)準(zhǔn)的,組合器電路38輸出僅從 指令高速緩存器10讀取的數(shù)據(jù)。
當(dāng)正在檢索橫跨高速緩存線邊界的指令時(shí),組合器電路38可以各種方式組合指 令高速緩存器10與輔助存儲(chǔ)器12的選定的輸出。在一個(gè)實(shí)施例中,組合器電路38 使從高速緩存器10檢索的指令段對(duì)應(yīng)于所檢索的未對(duì)準(zhǔn)指令段的位寬度偏移若干個(gè) 位位置,且然后將偏移的段與未對(duì)準(zhǔn)段進(jìn)行組合。在另一實(shí)施例中,組合器電路38 將從輔助存儲(chǔ)器12檢索的未對(duì)準(zhǔn)指令段附加到從高速緩存器IO檢索的指令段。
盡管采用特定的組合實(shí)施方案,跨越高速緩存線邊界的可變長度指令仍可在一個(gè) 指令高速緩存存取中被檢索,因?yàn)橹噶罡咚倬彺嫫鱅O及輔助存儲(chǔ)器12可被同時(shí)存取。 例如,控制器14通過選擇第一高速緩存線16的半線扇區(qū)HL1并將其與從輔助存儲(chǔ) 器12檢索的未對(duì)準(zhǔn)指令段B卩進(jìn)行組合來在單個(gè)指令高速緩存存取中檢索包括段B。 與B,的指令。同樣,組合器電路38的輸出包含指偏令高速緩存器10中存儲(chǔ)的指令 的段B。、與輔助存儲(chǔ)器12中存儲(chǔ)的指令的未對(duì)準(zhǔn)段的冗余副本進(jìn)行組合的指令的段 B卩。因此,不需要隨后的處理循環(huán)來從指令高速緩存器IO檢索跨越高速緩存線間邊 界而存儲(chǔ)的指令的段,即,段B,。
圖5圖解說明包含在指令高速緩存器10中或與指令高速緩存器IO相關(guān)聯(lián)的電路 的另一實(shí)施例,所述電路用于從高速緩存器IO及輔助存儲(chǔ)器12檢索可變長度指令且 還用于將所檢索的指令提供給寄存器42。寄存器42 (例如包含在微處理器(未顯示) 中的指令寄存器)具有經(jīng)界定的寬度。此外,寄存器42存儲(chǔ)從指令高速緩存器10檢 索的指令的期望部分。同樣,指令的期望部分選自指令高速緩存器10及/或輔助存儲(chǔ) 器12且被裝載到寄存器42中。
為達(dá)到此目的,第一選擇電路44 (例如,第一多路復(fù)用器)識(shí)別從中檢索其中 存儲(chǔ)的內(nèi)容的選定的指令高速緩存線的扇區(qū)。第二選擇電路46 (例如,第二多路復(fù) 用器)選擇存儲(chǔ)在輔助存儲(chǔ)器12中的對(duì)應(yīng)冗余未對(duì)準(zhǔn)指令段。第三選擇電路48 (例 如,第三多路復(fù)用器)選擇從指令高速緩存器IO讀取的輸出或選擇從輔助存儲(chǔ)器12讀取的輸出并將選定的輸出提供給寄存器42。在一個(gè)實(shí)施例中,第三選擇電路48僅 將選定的輸出的所期望部分提供給寄存器42,借此計(jì)及寄存器42的固定大小。通過 裝置或鎖存電路50將從特定高速緩存器扇區(qū)讀取的輸出傳遞到寄存器42。在一個(gè)實(shí) 施例中,通過裝置或鎖存電路50因僅將選定的輸出的期望部分提供給寄存器42而計(jì) 及寄存器42的固定大小。
在操作時(shí),第一選擇電路44響應(yīng)于控制器14提供的地址控制輸入(ADDR)選 擇特定高速緩存線的扇區(qū)中的一者。第二選擇電路46響應(yīng)于控制器14提供的列選擇 信號(hào)(SEL)選擇對(duì)應(yīng)于存儲(chǔ)在選定的高速緩存線及扇區(qū)處的指令數(shù)據(jù)的未對(duì)準(zhǔn)指令 段(如果有)。第三選擇電路48響應(yīng)于控制器14所提供的控制信號(hào)(CTRL)來確 定是選擇從指令高速緩存器IO讀取的數(shù)據(jù)還是選擇從輔助存儲(chǔ)器12讀取的數(shù)據(jù)。另 外,第三選擇電路48將選定的數(shù)據(jù)或僅將其一部分提供給寄存器42。第三選擇電路 48的輸出填充寄存器42的上部部分,例如,上部半字部分。通過裝置或鎖存電路50 的輸出填充寄存器42的下部部分,例如,下部半字部分。圖5中圖解說明的電路布 置利用與高速緩存線跨越相關(guān)聯(lián)的趨勢。也就是說,可變長度指令的下部部分可存儲(chǔ) 在指令高速緩存器10的第一扇區(qū)中,而指令的上部部分可存儲(chǔ)在不同的扇區(qū)或高速 緩存線中,由此跨越高速緩存線邊界。因此,所述通過裝置或鎖存電路50利用此趨 勢并用從指令高速緩存器10檢索的較低階指令數(shù)據(jù)來填充寄存器42的下部部分。在 經(jīng)選定用于檢索的指令不跨越高速緩存線邊界的情況下,第三選擇電路48用從指令 高速緩存器10檢索的對(duì)應(yīng)的較高階指令數(shù)據(jù)來填充寄存器42的下部部分。
相反,在選定的指令不跨越高速緩存線邊界的情況下,第三選擇電路48用從輔 助存儲(chǔ)器12檢索的冗余較高階指令數(shù)據(jù)來填充寄存器42的上部部分。同樣,可在單 個(gè)存取中裝載寄存器42,不論特定指令是否跨越高速緩存線邊界。
在非限定性實(shí)例中,寄存器42具有32位的寬度且被劃分為上部半字部分及下部 半字部分。另外,存儲(chǔ)在指令高速緩存器IO及輔助存儲(chǔ)器12中的每一指令段均具有 16位的寬度。同樣,為檢索指令段A,及A2,從輔助存儲(chǔ)器12讀取對(duì)應(yīng)的未對(duì)準(zhǔn)指 令段A2'并由第三選擇電路48將其裝載到寄存器42中來作為寄存器42的上部半字 (HW1)。此外,從指令高速緩存器10讀取另一期望的指令段A,且同時(shí)由通過裝置 或鎖存電路50將其裝載到寄存器42中以作為寄存器42的下部半字(HWO)。因此, 寄存器42在單個(gè)存取中被裝載,盡管期望的指令跨越高速緩存線內(nèi)邊界。
此時(shí),值得注意的是,輔助存儲(chǔ)器12中存儲(chǔ)的未對(duì)準(zhǔn)指令段與指令高速緩存器 10中存儲(chǔ)的對(duì)應(yīng)的經(jīng)對(duì)準(zhǔn)指令段連接在一起,從而能夠有效地檢索所存儲(chǔ)的指令。 例如,在一個(gè)實(shí)施例中,輔助存儲(chǔ)器12中含有未對(duì)準(zhǔn)指令段的冗余副本的特定行對(duì) 應(yīng)于指令高速緩存器10中含有指令的經(jīng)對(duì)準(zhǔn)段的行或與其連接在一起。
此外,輔助存儲(chǔ)器12的容量可對(duì)應(yīng)于適于容納期望數(shù)目的指令段的任何大小的 數(shù)據(jù)段。如圖l所圖解說明,顯示輔助存儲(chǔ)器12每入口具有兩個(gè)列用于存儲(chǔ)對(duì)應(yīng) 于在指令高速緩存器中的段之間跨越的高速緩存線內(nèi)邊界的指令段的一個(gè)列32,及用于存儲(chǔ)對(duì)應(yīng)于高速緩存線間邊界交叉的指令段的第二列34。然而,輔助存儲(chǔ)器12
可包括用于存儲(chǔ)未對(duì)準(zhǔn)指令段的任何合適數(shù)目的列,例如,對(duì)應(yīng)于通常會(huì)發(fā)生的邊界 跨越類型的單個(gè)列。
當(dāng)指令高速緩存器IO的高速緩存線被劃分為兩個(gè)以上段時(shí),輔助存儲(chǔ)器12可被
劃分為多個(gè)列。 一個(gè)列可對(duì)應(yīng)于高速緩存線間邊界跨越,且剩余的列可對(duì)應(yīng)于與高速 緩存線扇區(qū)的多樣性相關(guān)聯(lián)的高速緩存線內(nèi)邊界交叉。在另一實(shí)施例中,輔助存儲(chǔ)器
12包括經(jīng)動(dòng)態(tài)配置以存儲(chǔ)跨越高速緩存線內(nèi)邊界或高速緩存線間邊界的未對(duì)準(zhǔn)指令 段的單個(gè)列的入口。同樣,所述單個(gè)列的入口可含有未對(duì)準(zhǔn)指令段的混合。不論輔助 存儲(chǔ)器12及指令高速緩存器10的特定組織如何,輔助存儲(chǔ)器12均在單個(gè)指令高速 緩存存取期間啟用對(duì)跨越指令高速緩存線而存儲(chǔ)的可變長度指令的檢索。
圖6圖解說明包含指令高速緩存器10、輔助存儲(chǔ)器12及控制器14的微處理器 52的一個(gè)實(shí)施例。輔助存儲(chǔ)器12可包含在指令高速緩存器10中或與指令高速緩存 器10相關(guān)聯(lián),例如, 一個(gè)或一個(gè)以上額外的列添加到高速緩存器IO或包含在諸如層 級(jí)2高速緩存器(未顯示)的較高層級(jí)高速緩存器中或與所述較高層級(jí)高速緩存器相 關(guān)聯(lián)。或者,輔助存儲(chǔ)器裝置可包含在與指令高速緩存器IO相關(guān)聯(lián)的標(biāo)簽陣列(未 顯示)中或與所述標(biāo)簽陣列相關(guān)聯(lián),或可以是包含在處理器52中的單獨(dú)的存儲(chǔ)器陣 列。處理器52進(jìn)一步包含指令單元54、多個(gè)執(zhí)行單元56、總線接口單元58及數(shù)據(jù) 高速緩存器60。
指令單元54提供對(duì)流向執(zhí)行單元56的指令流的集中控制??砂粋€(gè)或一個(gè)以 上裝載/存儲(chǔ)單元(未顯示)、浮點(diǎn)單元(未顯示)及整數(shù)單元(未顯示)的執(zhí)行單 元56可并行執(zhí)行多個(gè)指令。同樣,處理器52可以是超標(biāo)量體系結(jié)構(gòu)及/或超流水線。 總線接口單元58提供一種用于傳送數(shù)據(jù)、地址和控制信號(hào)到處理器52和從處理器 52傳送數(shù)據(jù)、地址和控制信號(hào)的機(jī)制。指令及數(shù)據(jù)高速緩存器10、 60使得執(zhí)行單元 56能夠分別快速地存取指令及數(shù)據(jù)。
更詳細(xì)地說,指令單元54包含指令提取單元62、分支預(yù)測單元(BPU) 64、指 令隊(duì)列66及指令調(diào)度單元68。提取單元62從指令高速緩存器IO檢索指令,對(duì)其進(jìn) 行解碼,并將經(jīng)解碼指令裝載到指令隊(duì)列66中。指令調(diào)度單元68將排隊(duì)的指令調(diào)度 到適當(dāng)?shù)膱?zhí)行單元56。 BPU 64檢測分支指令并根據(jù)所檢測的分支類型執(zhí)行各種分支 預(yù)測機(jī)制,例如,預(yù)測分支目標(biāo)地址及/或是否可采用特定分支。
在一個(gè)實(shí)施例中,輔助存儲(chǔ)器12在控制器14的控制下存儲(chǔ)邊界后指令數(shù)據(jù),不 管是否發(fā)生高速緩存線邊界跨越。因此,含納于輔助存儲(chǔ)器12中的某些指令數(shù)據(jù)可 是未對(duì)準(zhǔn)的,且因此當(dāng)從指令高速緩存器10檢索指令時(shí)是不需要的。如果可在單個(gè) 指令高速緩存存取中從指令高速緩存器檢索一指令,則當(dāng)檢索這一指令時(shí)可簡單地忽 略或丟棄輔助存儲(chǔ)器12中存儲(chǔ)的冗余段。在另一實(shí)施例中,輔助存儲(chǔ)器12在控制器 14的控制下選擇性地僅存儲(chǔ)未對(duì)準(zhǔn)指令段。根據(jù)此實(shí)施例,控制器14響應(yīng)于各種指 示符中的一者選擇性地僅識(shí)別用于存儲(chǔ)在輔助存儲(chǔ)器12中的未對(duì)準(zhǔn)指令段。在識(shí)別未對(duì)準(zhǔn)指令段的一個(gè)實(shí)施例中,控制器14使用指令預(yù)解碼信息來確定應(yīng) 將哪些指令段存儲(chǔ)在輔助存儲(chǔ)器12中。指令單元54中所包含的預(yù)解碼邏輯(未顯示) 在指令被寫入到指令高速緩存器IO中時(shí)檢査所述指令。在指令預(yù)解碼期間,所述預(yù) 解碼邏輯識(shí)別目前正寫入到高速緩存器10中的指令是否將跨越高速緩存線邊界。
在某些實(shí)施例中,所述預(yù)解碼邏輯可確定邊界跨越類型,即,高速緩存線內(nèi)邊界 跨越還是高速緩存線間邊界跨越??刂破?4響應(yīng)于預(yù)解碼邏輯產(chǎn)生的指示引導(dǎo)輔助 存儲(chǔ)器12存儲(chǔ)跨越高速緩存線邊界的指令段的冗余副本。此外,如果輔助存儲(chǔ)器12 包含用于存儲(chǔ)不同類型的未對(duì)準(zhǔn)指令段的多個(gè)列,則預(yù)解碼邏輯向控制器14指示已 跨越了哪種類型的高速緩存線邊界。同樣,控制器14引導(dǎo)輔助存儲(chǔ)器12將未對(duì)準(zhǔn)指 令段存儲(chǔ)在存儲(chǔ)器12的特定列中。
所述預(yù)解碼邏輯可進(jìn)一步經(jīng)配置以確定正寫入到指令高速緩存器10的指令的指 令長度。同樣,控制器14使用指令長度信息來確定是否將有一特定指令跨越高速緩 存線邊界。或者,控制器14包含用于確定傳入指令的長度的邏輯。不論如何,控制 器14均使用指令長度信息來確定是否將有一特定指令跨越高速緩存線邊界,且如果 有,則相應(yīng)地管理輔助存儲(chǔ)器12。
在識(shí)別未對(duì)準(zhǔn)指令段的另一實(shí)施例中,控制器14監(jiān)視與正寫入到指令高速緩存 器10的指令相關(guān)聯(lián)的高速緩存線入口位置,g卩,高速緩存線中寫入指令的開端的起 始點(diǎn)??刂破?4使用高速緩存線入口位置信息來確定是否將有一特定的傳入指令跨 越高速緩存線邊界。例如,如果高速緩存線入口位置指示高速緩存段或高速緩存線中 僅剩下兩個(gè)字節(jié)且正向所述段或線寫入四字節(jié)指令,則將發(fā)生高速緩存線內(nèi)或高速緩 存線間邊界跨越。同樣,控制器14可使用此高速緩存線入口信息來確定是否將有一 傳入指令跨越高速緩存線邊界,且如果有,則引導(dǎo)對(duì)未對(duì)準(zhǔn)指令段的輔助存儲(chǔ)。
在識(shí)別未對(duì)準(zhǔn)指令段的又一實(shí)施例中,控制器14使用從指令中在所述指令的剩 余部分之前提取的部分儲(chǔ)存的信息來確定是否將發(fā)生高速緩存線邊界跨越。根據(jù)此實(shí) 施例,指令單元54請(qǐng)求指令的某些部分在所述指令的剩余部分之前被提取,例如, 響應(yīng)于處理器52所請(qǐng)求的關(guān)鍵字優(yōu)先存儲(chǔ)器存取操作或關(guān)鍵雙字優(yōu)先存儲(chǔ)器存取操 作。響應(yīng)于此類操作,在所述指令的剩余部分被寫入到指令高速緩存器10中之前提 取并檢查期望的指令的一部分??刂破?4或者包含在指令單元54中的邏輯檢査指令 的之前部分以確定所述指令的剩余部分在隨后被寫入到指令高速緩存器10時(shí)是否會(huì) 跨越高速緩存線邊界??刂破?4使用通過檢査之前的指令部分而儲(chǔ)存的信息來確定 所述指令的剩余部分是否會(huì)跨越高速緩存線邊界,且如果是,則在其被寫入到指令高 速緩存器10中時(shí)引導(dǎo)對(duì)未對(duì)準(zhǔn)指令段的輔助存儲(chǔ)。
在識(shí)別未對(duì)準(zhǔn)指令段的再一實(shí)施例中,控制器14使用歷史未對(duì)準(zhǔn)指令段數(shù)據(jù)來 預(yù)測正寫入到指令高速緩存器10的特定指令是否將跨越高速緩存線邊界。在非限定 性實(shí)例中,指令單元54或控制器14維持包含與先前寫入到指令高速緩存器10的指 令相關(guān)聯(lián)的跨高速緩存線邊界的數(shù)據(jù)的未對(duì)準(zhǔn)指令段歷史表(未顯示)。所述歷史表還可包含指示下一指令或待寫入到高速緩存器10的指令是否會(huì)跨越高速緩存線邊界 的信息。控制器14使用歷史數(shù)據(jù)來預(yù)測正寫入到指令高速緩存器10的特定指令是否 會(huì)跨越高速緩存線邊界。
每當(dāng)將指令寫入到指令高速緩存器10時(shí)均更新所述歷史數(shù)據(jù)或可不是周期性地 更新所述歷史數(shù)據(jù)。此外,可基于邊界預(yù)測是否正確來修改歷史未對(duì)準(zhǔn)指令段數(shù)據(jù), 例如,使用一種類似于用于在微處理器中跟蹤及解決分支預(yù)測的技術(shù)的技術(shù)。
考慮到以上范圍的變化形式及應(yīng)用,應(yīng)了解,本發(fā)明不限于前述說明,也不限于 附圖。而是,本發(fā)明僅由以上權(quán)利要求書及其合法等效物來限制。
權(quán)利要求
1、一種高速緩存可變長度指令的方法,其包括將指令數(shù)據(jù)寫入到高速緩存線;及存儲(chǔ)一個(gè)或一個(gè)以上高速緩存器邊界位置的指令數(shù)據(jù)的冗余副本。
2、 如權(quán)利要求1所述的方法,其中存儲(chǔ)一個(gè)或一個(gè)以上高速緩存器邊界位置的指令數(shù)據(jù)的冗余副本包括將一個(gè)或一個(gè)以上高速緩存器邊界位置的指令數(shù)據(jù)復(fù)制到 輔助存儲(chǔ)器。
3、 如權(quán)利要求2所述的方法,其中所述輔助存儲(chǔ)器包括與指令高速緩存器相關(guān) 聯(lián)的標(biāo)簽陣列、包含在所述指令高速緩存器中或與其相關(guān)聯(lián)的一個(gè)或一個(gè)以上冗余存 儲(chǔ)器元件、單獨(dú)的存儲(chǔ)器陣列及較高層級(jí)高速緩存器中的一者。
4、 如權(quán)利要求2所述的方法,其中將一個(gè)或一個(gè)以上高速緩存器邊界位置的指 令數(shù)據(jù)復(fù)制到輔助存儲(chǔ)器包括將高速緩存線內(nèi)邊界位置的指令數(shù)據(jù)復(fù)制到所述輔助 存儲(chǔ)器。
5、 如權(quán)利要求2所述的方法,其中將一個(gè)或一個(gè)以上高速緩存器邊界位置的指 令數(shù)據(jù)復(fù)制到輔助存儲(chǔ)器包括將高速緩存線間邊界位置的指令數(shù)據(jù)復(fù)制到所述輔助 存儲(chǔ)器。
6、 如權(quán)利要求1所述的方法,其中存儲(chǔ)一個(gè)或一個(gè)以上高速緩存器邊界位置的 指令數(shù)據(jù)的冗余副本包括識(shí)別所述指令數(shù)據(jù)中包含的指令的未對(duì)準(zhǔn)段;及 將所述未對(duì)準(zhǔn)段復(fù)制到輔助存儲(chǔ)器。
7、 如權(quán)利要求6所述的方法,其中識(shí)別所述指令數(shù)據(jù)中包含的指令的未對(duì)準(zhǔn)段 包括對(duì)所述指令進(jìn)行預(yù)解碼以識(shí)別所述指令的跨邊界段。
8、 如權(quán)利要求6所述的方法,其中識(shí)別所述指令數(shù)據(jù)中包含的指令的未對(duì)準(zhǔn)段 包括處理所述指令的高速緩存線入口位置以識(shí)別所述指令的跨邊界段。
9、 如權(quán)利要求8所述的方法,其中所述指令的所述高速緩存線入口位置對(duì)應(yīng)于 與所述指令相關(guān)聯(lián)的提取地址。
10、 如權(quán)利要求6所述的方法,其中識(shí)別所述指令數(shù)據(jù)中包含的指令的未對(duì)準(zhǔn)段 包括處理與所述指令相關(guān)聯(lián)的長度信息以識(shí)別所述指令的跨邊界段。
11、 如權(quán)利要求6所述的方法,其中識(shí)別所述指令數(shù)據(jù)中包含的指令的未對(duì)準(zhǔn)段包括處理歷史指令未對(duì)準(zhǔn)數(shù)據(jù)以識(shí)別所述指令的跨邊界段。
12、 如權(quán)利要求6所述的方法,其中識(shí)別所述指令數(shù)據(jù)中包含的指令的未對(duì)準(zhǔn)段 包括處理所述指令中在所述指令的剩余部分之前提取的部分以識(shí)別所述指令的跨邊 界段。
13、 如權(quán)利要求12所述的方法,其中所述指令中在所述指令的所述剩余部分之 前提取的所述部分包括響應(yīng)于關(guān)鍵字優(yōu)先存儲(chǔ)器存取操作而提取的指令部分及響應(yīng) 于關(guān)鍵雙字優(yōu)先存儲(chǔ)器存取操作而提取的指令部分中的一者。
14、 一種包括高速緩存器控制器的設(shè)備,所述高速緩存器控制器經(jīng)配置以將對(duì)指 令數(shù)據(jù)的存儲(chǔ)引導(dǎo)到指令高速緩存器中所包含的高速緩存線且引導(dǎo)對(duì)一個(gè)或一個(gè)以 上高速緩存器邊界位置的指令數(shù)據(jù)的冗余副本的存儲(chǔ)。
15、 如權(quán)利要求14所述的設(shè)備,其中所述高速緩存器控制器經(jīng)配置以通過將一 個(gè)或一個(gè)以上高速緩存器邊界位置的指令數(shù)據(jù)復(fù)制到輔助存儲(chǔ)器來引導(dǎo)對(duì)一個(gè)或一 個(gè)以上高速緩存器邊界位置的指令數(shù)據(jù)的冗余副本的存儲(chǔ)。
16、 如權(quán)利要求15所述的設(shè)備,其中所述輔助存儲(chǔ)器包括與所述指令高速緩存 器相關(guān)聯(lián)的標(biāo)簽陣列、包含在所述指令高速緩存器中或與其相關(guān)聯(lián)的一個(gè)或一個(gè)以上 冗余存儲(chǔ)器元件、單獨(dú)的存儲(chǔ)器陣列及較高層級(jí)高速緩存器中的一者。
17、 如權(quán)利要求15所述的設(shè)備,其中所述高速緩存器控制器經(jīng)配置以通過將高 速緩存線內(nèi)邊界位置的指令數(shù)據(jù)復(fù)制到輔助存儲(chǔ)器來將一個(gè)或一個(gè)以上高速緩存器 邊界位置的指令數(shù)據(jù)復(fù)制到所述輔助存儲(chǔ)器。
18、 如權(quán)利要求14所述的設(shè)備,其中所述高速緩存器控制器經(jīng)配置以通過將高 速緩存線間邊界位置的指令數(shù)據(jù)復(fù)制到輔助存儲(chǔ)器來將一個(gè)或一個(gè)以上高速緩存器 邊界位置的指令數(shù)據(jù)復(fù)制到所述輔助存儲(chǔ)器。
19、 如權(quán)利要求14所述的設(shè)備,其中所述高速緩存器控制器經(jīng)配置以通過識(shí)別 所述指令數(shù)據(jù)中包含的指令的未對(duì)準(zhǔn)段并將所述未對(duì)準(zhǔn)段復(fù)制到輔助存儲(chǔ)器來引導(dǎo)對(duì)一個(gè)或一個(gè)以上高速緩存器邊界位置的指令數(shù)據(jù)的冗余副本的存儲(chǔ)。
20、 如權(quán)利要求19所述的設(shè)備,其中所述高速緩存器控制器經(jīng)配置以通過處理與所述指令數(shù)據(jù)中包含的指令相關(guān)聯(lián)的經(jīng)預(yù)解碼信息以識(shí)別所述指令的跨邊界段來 識(shí)別所述指令的未對(duì)準(zhǔn)段。
21、 如權(quán)利要求19所述的設(shè)備,其中所述高速緩存器控制器經(jīng)配置以通過處理 所述指令數(shù)據(jù)中包含的指令的高速緩存線入口位置以識(shí)別所述指令的跨邊界段來識(shí) 別所述指令的未對(duì)準(zhǔn)段。
22、 如權(quán)利要求21所述的設(shè)備,其中所述指令的所述高速緩存線入口位置對(duì)應(yīng) 于與所述指令相關(guān)聯(lián)的提取地址。
23、 如權(quán)利要求19所述的設(shè)備,其中所述高速緩存器控制器經(jīng)配置以通過處理 與所述指令數(shù)據(jù)中包含的指令相關(guān)聯(lián)的長度信息以識(shí)別所述指令的跨邊界段來識(shí)別 所述指令的未對(duì)準(zhǔn)段。
24、 如權(quán)利要求19所述的設(shè)備,其中所述高速緩存器控制器經(jīng)配置以通過處理 歷史指令未對(duì)準(zhǔn)數(shù)據(jù)以識(shí)別所述指令數(shù)據(jù)中包含的指令的跨邊界段來識(shí)別所述指令 的未對(duì)準(zhǔn)段。
25、 如權(quán)利要求19所述的設(shè)備,其中所述高速緩存器控制器經(jīng)配置以通過使用 所述指令數(shù)據(jù)中包含的指令中在所述指令的剩余部分之前提取的部分識(shí)別所述指令 的跨邊界段來識(shí)別所述指令的未對(duì)準(zhǔn)段。
26、 如權(quán)利要求25所述的設(shè)備,其中所述指令中在所述指令的所述剩余部分之 前提取的所述部分包括響應(yīng)于關(guān)鍵字優(yōu)先存儲(chǔ)器存取操作而提取的指令部分及響應(yīng) 于關(guān)鍵雙字優(yōu)先存儲(chǔ)器存取操作而提取的指令部分中的一者。
27、 如權(quán)利要求14所述的設(shè)備,其中所述高速緩存器控制器進(jìn)一步經(jīng)配置以通 過從所述指令高速緩存器中讀取所述指令的段且從輔助存儲(chǔ)器中讀取所述指令的未 對(duì)準(zhǔn)段來從所述高速緩存線中檢索所述指令數(shù)據(jù)中包含的指令。
28、 如權(quán)利要求27所述的設(shè)備,其中所述高速緩存器控制器進(jìn)一步經(jīng)配置以將 從所述指令高速緩存器讀取的所述指令的所述段與所述指令的所述未對(duì)準(zhǔn)段進(jìn)行組
29、 如權(quán)利要求28所述的設(shè)備,其中所述高速緩存器控制器經(jīng)配置以通過將所 述指令的所述未對(duì)準(zhǔn)段附加到從所述指令高速緩存器讀取的所述指令的所述段來將 從所述指令高速緩存器讀取的所述指令的所述段與所述指令的所述未對(duì)準(zhǔn)段進(jìn)行組合。
30、 如權(quán)利要求28所述的設(shè)備,其中所述高速緩存器控制器經(jīng)配置以通過選擇 所述指令的所述未對(duì)準(zhǔn)段或從所述指令高速緩存器的第一扇區(qū)讀取的所述指令的所 述段的第一部分中的一者并將所述指令的所述未對(duì)準(zhǔn)段或從所述指令高速緩存器的 所述第一扇區(qū)讀取的所述指令的所述段的所述第一部分中選定的一者與從所述高速 緩存線的第二扇區(qū)讀取的所述指令的第二部分進(jìn)行組合而將從所述指令高速緩存器 讀取的所述指令的所述段與所述指令的所述未對(duì)準(zhǔn)段進(jìn)行組合。
31、 一種微處理器,其包括指令高速緩存器,其經(jīng)配置以將指令數(shù)據(jù)存儲(chǔ)在所述指令高速緩存器中所包含的 高速緩存線中;及高速緩存器控制器,其經(jīng)配置將對(duì)一個(gè)或一個(gè)以上高速緩存器邊界位置的指令數(shù) 據(jù)的冗余副本的存儲(chǔ)引導(dǎo)到輔助存儲(chǔ)器。
32、 如權(quán)利要求31所述的微處理器,其中所述一個(gè)或一個(gè)以上高速緩存器邊界 位置包括所述指令高速緩存器的高速緩存線內(nèi)邊界位置及所述指令高速緩存器的高 速緩存線間邊界位置中的一者或一者以上。
33、 如權(quán)利要求31所述的微處理器,其中所述輔助存儲(chǔ)器包括與所述指令高速 緩存器相關(guān)聯(lián)的標(biāo)簽陣列、包含在所述指令高速緩存器中或與其相關(guān)聯(lián)的一個(gè)或一個(gè) 以上額外存儲(chǔ)器元件、單獨(dú)的存儲(chǔ)器陣列及較高層級(jí)高速緩存器中的一者。
34、 一種檢索經(jīng)高速緩存的可變長度指令的方法,其包括 從高速緩存線讀取指令的段;及 從輔助存儲(chǔ)器讀取所述指令的未對(duì)準(zhǔn)段。
35、 如權(quán)利要求34所述的方法,其進(jìn)一步包括將所述指令的所述未對(duì)準(zhǔn)段與從 所述高速緩存線讀取的所述指令的所述段進(jìn)行組合。
36、 如權(quán)利要求35所述的方法,其中將所述指令的所述未對(duì)準(zhǔn)段與從所述高速 緩存線讀取的所述指令的所述段進(jìn)行組合包括將所述指令的所述未對(duì)準(zhǔn)段附加到從 所述高速緩存線讀取的所述指令的所述段。
37、如權(quán)利要求35所述的方法,其中將所述指令的所述未對(duì)準(zhǔn)段與從所述高速緩存線讀取的所述指令的所述段進(jìn)行組合包括選擇所述指令的所述未對(duì)準(zhǔn)段及從所述高速緩存線的第一扇區(qū)讀取的所述指令的第一部分中的一者;及將所述指令的所述未對(duì)準(zhǔn)段及從所述高速緩存線的所述第一扇區(qū)讀取的所述指 令的所述第一部分中的選定的一者與從所述高速緩存線的第二扇區(qū)讀取的所述指令 的第二部分進(jìn)行組合。
全文摘要
一種指令高速緩存器控制器使用補(bǔ)充存儲(chǔ)器來存儲(chǔ)對(duì)應(yīng)于高速緩存器邊界位置的經(jīng)高速緩存的指令數(shù)據(jù)的冗余副本,且借此啟用隨后對(duì)跨越所述邊界位置的指令的單個(gè)高速緩存存取檢索。在一個(gè)或一個(gè)以上實(shí)施例中,所述高速緩存器控制器將邊界后位置的指令數(shù)據(jù)復(fù)制在所述補(bǔ)充存儲(chǔ)器中,且將所述復(fù)制的數(shù)據(jù)多路復(fù)用到從邊界前位置獲得的高速緩存數(shù)據(jù)中。
文檔編號(hào)G06F12/08GK101432703SQ200780015669
公開日2009年5月13日 申請(qǐng)日期2007年4月19日 優(yōu)先權(quán)日2006年5月1日
發(fā)明者邁克爾·威廉·莫羅 申請(qǐng)人:高通股份有限公司