两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

用于高速緩存可變長度指令的方法及設備的制作方法

文檔序號:6454684閱讀:183來源:國知局
專利名稱:用于高速緩存可變長度指令的方法及設備的制作方法
技術領域
本發(fā)明大體來說涉及指令高速緩存,且更特定來說涉及高速緩存可變長度指令。
背景技術
微處理器的字長度可表示其基本數(shù)據(jù)工作單元的長度(以位或字節(jié)計)。例如, 32位的微處理器具有32位(4個字節(jié))的標稱字長度。指令通常以統(tǒng)一長度指令集 的形式存儲在存儲器的自然字邊界上。然而,某些微處理器使用可變長度指令,例如 32位與16位指令混合或64位與32位指令混合。對較短長度指令的支持在某些情況 下可提供舊型兼容性,且至少為可利用較短指令的應用程序提供較小指令存儲器占用 面積的機會。
然而,實現(xiàn)存儲器節(jié)省要求將可變長度指令存儲在非自然邊界上。其中指令不必 一定存儲在自然字邊界上的存儲器可被視為未經(jīng)對準存儲器,而其中指令存儲在自然 字邊界上的存儲器可被視為經(jīng)對準存儲器。作為可使用未經(jīng)對準的存儲器的一個實 例,ARM v7系列的微處理器支持字及半字指令,且允許跨越4個字節(jié)的邊界存儲4 個字節(jié)的指令。
雖然使用未經(jīng)對準的存儲器來存儲指令可節(jié)省空間,但用于增強指令執(zhí)行性能的 較低等待時間指令緩沖器通常使用自然字對準。例如,高速緩沖存儲器通常組織成緩 沖外部存儲器的字對準段(線)的高速緩存線,所述外部存儲器可以是主存儲器或者 更高層級的高速緩沖存儲器。
將未經(jīng)對準的指令讀入到經(jīng)對準的高速緩存線中意味著所述高速緩存線中的邊 界位置可包含或可不包含完整的指令字。也就是說,字長度指令可跨越若干高速緩存 器邊界。線間邊界(即,從一個高速緩存線到下一高速緩存線的轉(zhuǎn)折)表示一種類型 的高速緩存器邊界,而線內(nèi)邊界(例如每一高速緩存線內(nèi)的字對準段邊界)則表示另 一種類型的高速緩存器邊界。段邊界可起因于對小于總高速緩存線寬度的字對準讀取 端口的使用。
從常規(guī)的高速緩存器檢索跨邊界指令需要進行兩次存取讀出邊界位置之前的指 令數(shù)據(jù)的第一存取及讀取所述邊界位置之后的指令數(shù)據(jù)的第二存取。所述第二存取檢 索跨界指令的尾部(邊界后)部分。很明顯,高速緩沖存儲器中未對準指令的普遍存 在可對整體高速緩存性能產(chǎn)生負面影響,因為需要額外的高速緩存器讀取來檢索未對
準跨邊界指令的尾部部分。

發(fā)明內(nèi)容
根據(jù)本文中教示的方法及設備,指令高速緩存器控制器使用補充存儲器來存儲對 應于高速緩存器邊界位置的經(jīng)高速緩存指令數(shù)據(jù)的冗余副本,且借此啟用隨后對跨越 所述邊界位置的指令的單個高速緩存存取檢索。在一個或一個以上實施例中,所述高 速緩存器控制器復制所述補充存儲器中的邊界后位置的指令數(shù)據(jù),且將所述經(jīng)復制數(shù) 據(jù)多路復用到可從邊界前位置獲得的高速緩存數(shù)據(jù)中。
一種高速緩存器控制器及方法的一個實施例通過將指令數(shù)據(jù)寫入到高速緩存線 并針對所述線中的一個或一個以上邊界位置將所述指令數(shù)據(jù)的冗余副本(例如,每一 邊界后位置處的半字)存儲在所述邊界位置來高速緩存指令。此類操作啟用基于從高 速緩存線讀取邊界前數(shù)據(jù)及從用于存儲邊界數(shù)據(jù)的輔助存儲器讀取邊界后數(shù)據(jù)從高 速緩存器對全部的未經(jīng)對準指令的檢索。
在高速緩存器控制器的一個實施例中,所述控制器經(jīng)配置以將指令數(shù)據(jù)的存儲引 導到包含在指令高速緩存器中的高速緩存線,且引導一個或一個以上高速緩存器邊界 位置的指令數(shù)據(jù)的冗余副本的存儲。所述冗余數(shù)據(jù)存儲在輔助存儲器中,例如與指令 高速緩存器相關聯(lián)的標簽陣列、包含在所述指令高速緩存器中或與所述高速緩存器相 關聯(lián)的一個或一個以上額外存儲器元件、單獨的存儲器陣列或較高層級的高速緩存 器。
高速緩存器控制器可包含在微處理器中。在一個實施例中,所述微處理器包括指 令高速緩存器及高速緩存器控制器。所述指令高速緩存器經(jīng)配置以高速緩存指令數(shù)據(jù) 線,且所述高速緩存器控制器經(jīng)配置以將對應于所述高速緩存線的邊界位置的指令數(shù) 據(jù)的冗余副本存儲在輔助存儲器中。所述輔助存儲器可集成在包括所述高速緩存線的 高速緩沖存儲器中,或可實施于高速緩存器控制器或微處理器中其它處。
當然,本發(fā)明不限于上述實施例。在閱讀以下詳細說明且參看附圖后,所屬技術 領域的技術人員將認識到額外的可能的實施例。


圖1是圖解說明指令高速緩存器及輔助存儲器的實施例的方塊圖。 圖2是圖解說明用于高速緩存可變長度指令的程序邏輯的實施例的邏輯流程圖。 圖3是圖解說明用于檢索經(jīng)高速緩存的可變長度指令的程序邏輯的實施例的邏 輯流程圖。
圖4是圖解說明指令高速緩存器及輔助存儲器的另一實施例的方塊圖。 圖5是圖解說明指令高速緩存器及輔助存儲器的又一實施例的方塊圖。 圖6是圖解說明包含指令高速緩存器及輔助存儲器的微處理器的實施例的方塊圖。
具體實施例方式
圖1圖解說明指令高速緩存器IO及包含在高速緩存器IO或與高速緩存器10相 關聯(lián)的輔助存儲器12的實施例。針對指令高速緩存器10的指令高速緩存事務由控制 器14來管理,控制器14經(jīng)配置以使用輔助存儲器12來存儲高速緩存器10中的一個 或一個以上邊界位置的指令數(shù)據(jù)的冗余副本。此外,控制器14管理從高速緩存器10 的指令數(shù)據(jù)檢索,以便在單個存取中檢索高速緩存器10中所存儲的至少一些未對準 指令。控制器14通過將來自高速緩存器10的邊界前數(shù)據(jù)與來自輔助存儲器12的邊 界后數(shù)據(jù)進行組合來啟用從高速緩存器10對未對準指令的單個存取檢索。
控制器14的這些操作因消除了或大大降低了會由高速緩存未經(jīng)對準的指令導致 的性能損失而改善了高速緩存器性能。此操作改善了使用可變長度指令集且使用未經(jīng) 對準的存儲器來用于指令數(shù)據(jù)存儲的系統(tǒng)的性能。也就是說,從較高層級的高速緩存 器或外部存儲器(二者均未顯示)接收以供存儲在指令高速緩存器10中的指令數(shù)據(jù) 可包括具有不同長度的指令的混合,這意味著指令邊界將未必匹配高速緩存器邊界。 在此類環(huán)境下,高速緩存器控制器14使用一個或一個以上高速緩存器邊界位置的邊 界后數(shù)據(jù)的冗余存儲來減少因?qū)⒖勺冮L度指令存儲在固定寬度的高速緩存器中而導 致的高速緩存器邊界侵犯的負面效應。
在某些實施例中,控制器14存儲邊界后指令數(shù)據(jù),不論所述數(shù)據(jù)是否包含未對 準指令,即,具有跨越高速緩存器邊界的一個或一個以上段的指令。同樣,控制器 14不會確定特定的指令是否未對準。而是,針對高速緩存器10中的一個或一個以上 邊界位置,控制器14將邊界位置數(shù)據(jù)的冗余副本存儲在輔助存儲器12中來作為其定 期高速緩存器填充操作的一部分。在此類實施例中,控制器IO不會確定邊界數(shù)據(jù)實 際上是否表示部分指令,其僅在邊界數(shù)據(jù)表示存儲在邊界前位置的指令的尾部部分的 情況下復制邊界后位置的指令數(shù)據(jù)。
舉一個實例來說,每一高速緩存線均可具有表示半線讀取端口寬度的段邊界。控 制器14可經(jīng)配置以以冗余方式存儲(經(jīng)由輔助存儲器12)高速緩存線中緊靠段邊界 之后定位的半字,以使其可與檢索緊靠所述段之前而定位的半字相結(jié)合而被檢索。另 外,或另一選擇為,控制器14可經(jīng)配置以將隨后的高速緩存線中的第一半字視為半 字位置中處于隔開每一高速緩存線的線末端邊界處的尾部部分。在此類配置中,就像 將指令數(shù)據(jù)的尾部部分存儲在每一高速緩存線的末端位置一樣,控制器14將指令數(shù) 據(jù)的冗余副本存儲在每下一高速緩存線的開始位置。通過這種方式,可在單個高速緩 存存取中檢索轉(zhuǎn)折高速緩存線的指令。
操作的簡便性是盲目地將邊界位置復制到補充存儲器12中的一個優(yōu)點。也就是 說,控制器14的邏輯操作通過不試圖確定高速緩存器中的邊界位置實際上是否含有 跨越邊界的指令數(shù)據(jù)而得以簡化。然而,在其它實施例中,控制器14基于(例如) 可識別或至少暗示邊界位置數(shù)據(jù)表示完整的半字指令還是跨邊界的全字指令的預解碼操作來選擇性地存儲邊界位置數(shù)據(jù)的冗余副本。
根據(jù)此類實施例,控制器14響應于各種未對準指示符中的一者來選擇性地確定 哪一指令數(shù)據(jù)將存儲在輔助存儲器12中。雖然控制器14包含支持對未對準指令數(shù)據(jù) 的識別及選擇性存儲的額外處理邏輯復雜性,但所述方法提供提高的輔助存儲器12 利用效率,因為并未將邊界位置數(shù)據(jù)盲目地寫入到輔助存儲器12中。然而,不論控 制器14盲目地還是選擇性地將來自高速緩存器10的邊界位置數(shù)據(jù)復制到輔助存儲器 12中,此冗余指令數(shù)據(jù)存儲均啟用單個高速緩存存取指令檢索。
更詳細地說,指令高速緩存器10包括若干高速緩存線16-22,所述高速緩存線 還稱為高速緩存塊。每一高速緩存線16-22均經(jīng)配置以存儲從外部存儲器源(未顯示) 讀取的一個或一個以上指令或指令段。每一高速緩存線16-22均具有固定的存儲容量, 即,線大小,還可稱為塊大小。同樣,存儲在特定高速緩存線中的數(shù)據(jù)的最大量由指 令高速緩存器10的線大小來確定。另外,高速緩存線16-22可被進一步劃分為若干 扇區(qū),例如,如圖1中圖解說明的扇區(qū)零及一。在一個實施例中,扇區(qū)大小對應于與 指令高速緩存器10相關聯(lián)的存儲器端口大小。例如,指令高速緩存器10可具有32 字節(jié)的線大小及16字節(jié)的存儲器端口寬度,從而每高速緩存線形成兩個16字節(jié)的扇 區(qū)。同樣,通過將兩個16字節(jié)的數(shù)據(jù)群組寫入到特定高速緩存線的兩個扇區(qū)來填充 例示性高速緩存線16-22。所屬技術領域的技術人員將容易地了解,可將高速緩存線 大小設置到任何期望值,且所述高速緩存線可進一步劃分為任何期望數(shù)目的扇區(qū)。
指令高速緩存器10中存儲的可變長度指令可跨越一個或一個以上高速緩存線邊 界,且因此可是未對準的。輔助存儲器12通過存儲未對準指令段(即,跨越高速緩 存線邊界存儲的指令的段)的冗余副本而減少與未對準指令相關聯(lián)的負面影響。指令 段可等同于與指令相關聯(lián)的任何大小的數(shù)據(jù)序列,例如,字、半字、字節(jié)、半字節(jié)等。 同樣,當指令高速緩存器10中存儲的指令的一個或一個以上段位于高速緩存線邊界 之外時,未對準段的冗余副本存儲在輔助存儲器12中。輔助存儲器12包含用于存儲 未對準指令段的若干個行24-30,每一行具有一個或一個以上列32-34。因此,未對準 指令段的冗余副本隨后可供用于連同指令高速緩存器10中存儲的指令的經(jīng)對準段 (即,所述指令中不跨越高速緩存線邊界的段) 一起進行同時存取。同樣,可通過將 從指令高速緩存器10中讀取的指令的經(jīng)對準的段與從輔助存儲器12讀取的指令的未 對準段進行組合來在單個指令高速緩存存取期間檢索高速緩存器10中存儲的跨邊界 指令。
在非限定性實例中,控制器14選擇指令高速緩存器10的第一高速緩存線16來 用于指令數(shù)據(jù)的寫入,如圖2的步驟IOO所圖解說明。第一指令(例如,具有四個段 AQ - A3的指令)被從外部存儲器或另一高速緩存器檢索以作為寫入到選定的高速緩存 線的指令數(shù)據(jù)的一部分,如圖2的步驟102所圖解說明。所述第一指令具有跨越將第 一高速緩存線16中的扇區(qū)零與扇區(qū)一分隔開的高速緩存線內(nèi)邊界的兩個段A2及A3。 同樣,未對準指令段A2及A3的冗余副本A2'及A3'被寫入到輔助存儲器12,如圖2的步驟104所圖解說明。寫入到第一高速緩存線16的指令數(shù)據(jù)還包括具有兩個段Bo 與B,的第二指令的第一段B。。所述指令的剩余部分段B,存儲在另一高速緩存線(例 如,第二高速緩存線18)中,來用作從外部存儲器或另一高速緩存器檢索的隨后的 指令數(shù)據(jù)群組的一部分。例如,第一及第二指令數(shù)據(jù)群組被檢索以用作填充高速緩存 器10的多個線的突發(fā)事務的一部分。
盡管存在致使第二指令段B,被寫入到高速緩存器10的特定機制,第二段B,仍 以跨越高速緩存線間邊界(例如,將高速緩存器IO的第一與第二高速緩存線16、 18 分隔開的高速緩存線間邊界)的方式被存儲。同樣,未對準指令段B,的冗余副本B, '存儲在輔助存儲器12中。隨后由控制器14檢索的第三指令數(shù)據(jù)群組包含具有四個 段Q)-C3的第三指令,所述段存儲在第三高速緩存線20中。此指令不具有未對準段, 且因此無需將與所述第三指令相關聯(lián)的段存儲在輔助存儲器12中。因為第三指令在 一個指令高速緩存存取期間是可檢索的(例如,通過存取第三高速緩存線20的扇區(qū) 零),所以輔助存儲器12不含有與第三指令相關的數(shù)據(jù)。
控制器14通過選擇含有期望指令的高速緩存線來檢索指令高速緩存器10中存儲 的指令,如圖3的步驟200所圖解說明。例如,控制器14選擇第一高速緩存線16以 檢索具有段B。與B,的第二可變長度指令。然后從選定的高速緩存線16讀取第二指 令的經(jīng)對準的段B(),如圖3的步驟202所圖解說明。于此同時,從輔助存儲器12同 時讀取第二指令的未對準指令段B,'的冗余副本,如圖3的步驟204所圖解說明。通 過將從第一高速緩存線16讀取的指令的段B。與從輔助存儲器12讀取的指令的未對 準段B,'進行組合來重構(gòu)完整指令Bo、 B"圖3的步驟206圖解說明此類操作。借助 此類操作,控制器14避免需要多次高速緩存存取來從高速緩存器IO檢索未對準跨邊 界指令。
圖4圖解說明包含在指令高速緩存器10中或與指令高速緩存器10相關聯(lián)的電路 的一個實施例,所述電路用于從高速緩存器IO及輔助存儲器12檢索可變長度指令。 通過將從指令高速緩存器10的選定的高速緩存線中讀取的指令的經(jīng)對準的段與從輔 助存儲器12中讀取的指令的未對準段進行組合來檢索指令。特定來說,第一選擇電 路36 (例如,多路復用器)識別從中檢索存儲其中存儲的內(nèi)容的選定的高速緩存線 的扇區(qū)。例如,由控制器14提供的地址控制輸入(ADDR)致使多路復用器36選擇 指令高速緩存器10的選定的高速緩存線的扇區(qū)。同樣,選定的高速緩存線扇區(qū)的內(nèi) 容提供給組合器電路38。在一個實施例中,高速緩存線被劃分為兩個扇區(qū),兩個數(shù) 據(jù)半線中的一者(HL0或HL1)被提供給組合器電路38。在其它實施例中,將不同 量的數(shù)據(jù)提供給組合器電路38,其中所述量對應于高速緩存線扇區(qū)的數(shù)目,例如, 1/2線的數(shù)據(jù)、1/4線的數(shù)據(jù)等。
第二選擇電路40 (例如,第二多路復用器)選擇輔助存儲器12中存儲的對應于 從指令高速緩存器10檢索的指令段的未對準指令段。例如,由控制器14提供的列選 擇信號(SEL)致使第二選擇電路40選擇輔助存儲器12的待存取的列。如果輔助存儲器12包括單個列的入口,則不需要第二選擇電路40。同樣,輔助存儲器12的選 定的入口被提供給組合器電路38。如果所述輔助存儲器含有每入口一個以上列的指 令段(例如圖4所圖解說明的兩個列32-34),則所述列中的一者由第二選擇電路40 選定。選定的列對應于由當前正從指令存儲器10檢索的指令跨越的邊界的類型。例 如,第二列34可存儲跨越高速緩存線間邊界的未對準指令段,且由此在正從指令高 速緩存器IO檢索包括段BQ與BJ勺指令的情況下被選定。同樣,于此同時從輔助存 儲器12檢索未對準指令段B,'的冗余副本,而從指令高速緩存器10檢索B0。
組合器電路38響應于控制器14所提供的控制信號(CTRL)將指令高速緩存器 10的選定的輸出與輔助存儲器12的選定的輸出進行組合以重構(gòu)正被檢索的指令。當 正被檢索的指令不跨越高速緩存線邊界時(例如,圖4所圖解說明的具有段Q) - C3 的指令),組合器電路38不會將指令高速緩存器10的輸出與輔助存儲器12中存儲 的數(shù)據(jù)進行組合。而是,由于所檢索的指令不是未對準的,組合器電路38輸出僅從 指令高速緩存器10讀取的數(shù)據(jù)。
當正在檢索橫跨高速緩存線邊界的指令時,組合器電路38可以各種方式組合指 令高速緩存器10與輔助存儲器12的選定的輸出。在一個實施例中,組合器電路38 使從高速緩存器10檢索的指令段對應于所檢索的未對準指令段的位寬度偏移若干個 位位置,且然后將偏移的段與未對準段進行組合。在另一實施例中,組合器電路38 將從輔助存儲器12檢索的未對準指令段附加到從高速緩存器IO檢索的指令段。
盡管采用特定的組合實施方案,跨越高速緩存線邊界的可變長度指令仍可在一個 指令高速緩存存取中被檢索,因為指令高速緩存器IO及輔助存儲器12可被同時存取。 例如,控制器14通過選擇第一高速緩存線16的半線扇區(qū)HL1并將其與從輔助存儲 器12檢索的未對準指令段B卩進行組合來在單個指令高速緩存存取中檢索包括段B。 與B,的指令。同樣,組合器電路38的輸出包含指偏令高速緩存器10中存儲的指令 的段B。、與輔助存儲器12中存儲的指令的未對準段的冗余副本進行組合的指令的段 B卩。因此,不需要隨后的處理循環(huán)來從指令高速緩存器IO檢索跨越高速緩存線間邊 界而存儲的指令的段,即,段B,。
圖5圖解說明包含在指令高速緩存器10中或與指令高速緩存器IO相關聯(lián)的電路 的另一實施例,所述電路用于從高速緩存器IO及輔助存儲器12檢索可變長度指令且 還用于將所檢索的指令提供給寄存器42。寄存器42 (例如包含在微處理器(未顯示) 中的指令寄存器)具有經(jīng)界定的寬度。此外,寄存器42存儲從指令高速緩存器10檢 索的指令的期望部分。同樣,指令的期望部分選自指令高速緩存器10及/或輔助存儲 器12且被裝載到寄存器42中。
為達到此目的,第一選擇電路44 (例如,第一多路復用器)識別從中檢索其中 存儲的內(nèi)容的選定的指令高速緩存線的扇區(qū)。第二選擇電路46 (例如,第二多路復 用器)選擇存儲在輔助存儲器12中的對應冗余未對準指令段。第三選擇電路48 (例 如,第三多路復用器)選擇從指令高速緩存器IO讀取的輸出或選擇從輔助存儲器12讀取的輸出并將選定的輸出提供給寄存器42。在一個實施例中,第三選擇電路48僅 將選定的輸出的所期望部分提供給寄存器42,借此計及寄存器42的固定大小。通過 裝置或鎖存電路50將從特定高速緩存器扇區(qū)讀取的輸出傳遞到寄存器42。在一個實 施例中,通過裝置或鎖存電路50因僅將選定的輸出的期望部分提供給寄存器42而計 及寄存器42的固定大小。
在操作時,第一選擇電路44響應于控制器14提供的地址控制輸入(ADDR)選 擇特定高速緩存線的扇區(qū)中的一者。第二選擇電路46響應于控制器14提供的列選擇 信號(SEL)選擇對應于存儲在選定的高速緩存線及扇區(qū)處的指令數(shù)據(jù)的未對準指令 段(如果有)。第三選擇電路48響應于控制器14所提供的控制信號(CTRL)來確 定是選擇從指令高速緩存器IO讀取的數(shù)據(jù)還是選擇從輔助存儲器12讀取的數(shù)據(jù)。另 外,第三選擇電路48將選定的數(shù)據(jù)或僅將其一部分提供給寄存器42。第三選擇電路 48的輸出填充寄存器42的上部部分,例如,上部半字部分。通過裝置或鎖存電路50 的輸出填充寄存器42的下部部分,例如,下部半字部分。圖5中圖解說明的電路布 置利用與高速緩存線跨越相關聯(lián)的趨勢。也就是說,可變長度指令的下部部分可存儲 在指令高速緩存器10的第一扇區(qū)中,而指令的上部部分可存儲在不同的扇區(qū)或高速 緩存線中,由此跨越高速緩存線邊界。因此,所述通過裝置或鎖存電路50利用此趨 勢并用從指令高速緩存器10檢索的較低階指令數(shù)據(jù)來填充寄存器42的下部部分。在 經(jīng)選定用于檢索的指令不跨越高速緩存線邊界的情況下,第三選擇電路48用從指令 高速緩存器10檢索的對應的較高階指令數(shù)據(jù)來填充寄存器42的下部部分。
相反,在選定的指令不跨越高速緩存線邊界的情況下,第三選擇電路48用從輔 助存儲器12檢索的冗余較高階指令數(shù)據(jù)來填充寄存器42的上部部分。同樣,可在單 個存取中裝載寄存器42,不論特定指令是否跨越高速緩存線邊界。
在非限定性實例中,寄存器42具有32位的寬度且被劃分為上部半字部分及下部 半字部分。另外,存儲在指令高速緩存器IO及輔助存儲器12中的每一指令段均具有 16位的寬度。同樣,為檢索指令段A,及A2,從輔助存儲器12讀取對應的未對準指 令段A2'并由第三選擇電路48將其裝載到寄存器42中來作為寄存器42的上部半字 (HW1)。此外,從指令高速緩存器10讀取另一期望的指令段A,且同時由通過裝置 或鎖存電路50將其裝載到寄存器42中以作為寄存器42的下部半字(HWO)。因此, 寄存器42在單個存取中被裝載,盡管期望的指令跨越高速緩存線內(nèi)邊界。
此時,值得注意的是,輔助存儲器12中存儲的未對準指令段與指令高速緩存器 10中存儲的對應的經(jīng)對準指令段連接在一起,從而能夠有效地檢索所存儲的指令。 例如,在一個實施例中,輔助存儲器12中含有未對準指令段的冗余副本的特定行對 應于指令高速緩存器10中含有指令的經(jīng)對準段的行或與其連接在一起。
此外,輔助存儲器12的容量可對應于適于容納期望數(shù)目的指令段的任何大小的 數(shù)據(jù)段。如圖l所圖解說明,顯示輔助存儲器12每入口具有兩個列用于存儲對應 于在指令高速緩存器中的段之間跨越的高速緩存線內(nèi)邊界的指令段的一個列32,及用于存儲對應于高速緩存線間邊界交叉的指令段的第二列34。然而,輔助存儲器12
可包括用于存儲未對準指令段的任何合適數(shù)目的列,例如,對應于通常會發(fā)生的邊界 跨越類型的單個列。
當指令高速緩存器IO的高速緩存線被劃分為兩個以上段時,輔助存儲器12可被
劃分為多個列。 一個列可對應于高速緩存線間邊界跨越,且剩余的列可對應于與高速 緩存線扇區(qū)的多樣性相關聯(lián)的高速緩存線內(nèi)邊界交叉。在另一實施例中,輔助存儲器
12包括經(jīng)動態(tài)配置以存儲跨越高速緩存線內(nèi)邊界或高速緩存線間邊界的未對準指令 段的單個列的入口。同樣,所述單個列的入口可含有未對準指令段的混合。不論輔助 存儲器12及指令高速緩存器10的特定組織如何,輔助存儲器12均在單個指令高速 緩存存取期間啟用對跨越指令高速緩存線而存儲的可變長度指令的檢索。
圖6圖解說明包含指令高速緩存器10、輔助存儲器12及控制器14的微處理器 52的一個實施例。輔助存儲器12可包含在指令高速緩存器10中或與指令高速緩存 器10相關聯(lián),例如, 一個或一個以上額外的列添加到高速緩存器IO或包含在諸如層 級2高速緩存器(未顯示)的較高層級高速緩存器中或與所述較高層級高速緩存器相 關聯(lián)?;蛘?,輔助存儲器裝置可包含在與指令高速緩存器IO相關聯(lián)的標簽陣列(未 顯示)中或與所述標簽陣列相關聯(lián),或可以是包含在處理器52中的單獨的存儲器陣 列。處理器52進一步包含指令單元54、多個執(zhí)行單元56、總線接口單元58及數(shù)據(jù) 高速緩存器60。
指令單元54提供對流向執(zhí)行單元56的指令流的集中控制??砂粋€或一個以 上裝載/存儲單元(未顯示)、浮點單元(未顯示)及整數(shù)單元(未顯示)的執(zhí)行單 元56可并行執(zhí)行多個指令。同樣,處理器52可以是超標量體系結(jié)構(gòu)及/或超流水線。 總線接口單元58提供一種用于傳送數(shù)據(jù)、地址和控制信號到處理器52和從處理器 52傳送數(shù)據(jù)、地址和控制信號的機制。指令及數(shù)據(jù)高速緩存器10、 60使得執(zhí)行單元 56能夠分別快速地存取指令及數(shù)據(jù)。
更詳細地說,指令單元54包含指令提取單元62、分支預測單元(BPU) 64、指 令隊列66及指令調(diào)度單元68。提取單元62從指令高速緩存器IO檢索指令,對其進 行解碼,并將經(jīng)解碼指令裝載到指令隊列66中。指令調(diào)度單元68將排隊的指令調(diào)度 到適當?shù)膱?zhí)行單元56。 BPU 64檢測分支指令并根據(jù)所檢測的分支類型執(zhí)行各種分支 預測機制,例如,預測分支目標地址及/或是否可采用特定分支。
在一個實施例中,輔助存儲器12在控制器14的控制下存儲邊界后指令數(shù)據(jù),不 管是否發(fā)生高速緩存線邊界跨越。因此,含納于輔助存儲器12中的某些指令數(shù)據(jù)可 是未對準的,且因此當從指令高速緩存器10檢索指令時是不需要的。如果可在單個 指令高速緩存存取中從指令高速緩存器檢索一指令,則當檢索這一指令時可簡單地忽 略或丟棄輔助存儲器12中存儲的冗余段。在另一實施例中,輔助存儲器12在控制器 14的控制下選擇性地僅存儲未對準指令段。根據(jù)此實施例,控制器14響應于各種指 示符中的一者選擇性地僅識別用于存儲在輔助存儲器12中的未對準指令段。在識別未對準指令段的一個實施例中,控制器14使用指令預解碼信息來確定應 將哪些指令段存儲在輔助存儲器12中。指令單元54中所包含的預解碼邏輯(未顯示) 在指令被寫入到指令高速緩存器IO中時檢査所述指令。在指令預解碼期間,所述預 解碼邏輯識別目前正寫入到高速緩存器10中的指令是否將跨越高速緩存線邊界。
在某些實施例中,所述預解碼邏輯可確定邊界跨越類型,即,高速緩存線內(nèi)邊界 跨越還是高速緩存線間邊界跨越。控制器14響應于預解碼邏輯產(chǎn)生的指示引導輔助 存儲器12存儲跨越高速緩存線邊界的指令段的冗余副本。此外,如果輔助存儲器12 包含用于存儲不同類型的未對準指令段的多個列,則預解碼邏輯向控制器14指示已 跨越了哪種類型的高速緩存線邊界。同樣,控制器14引導輔助存儲器12將未對準指 令段存儲在存儲器12的特定列中。
所述預解碼邏輯可進一步經(jīng)配置以確定正寫入到指令高速緩存器10的指令的指 令長度。同樣,控制器14使用指令長度信息來確定是否將有一特定指令跨越高速緩 存線邊界?;蛘撸刂破?4包含用于確定傳入指令的長度的邏輯。不論如何,控制 器14均使用指令長度信息來確定是否將有一特定指令跨越高速緩存線邊界,且如果 有,則相應地管理輔助存儲器12。
在識別未對準指令段的另一實施例中,控制器14監(jiān)視與正寫入到指令高速緩存 器10的指令相關聯(lián)的高速緩存線入口位置,g卩,高速緩存線中寫入指令的開端的起 始點??刂破?4使用高速緩存線入口位置信息來確定是否將有一特定的傳入指令跨 越高速緩存線邊界。例如,如果高速緩存線入口位置指示高速緩存段或高速緩存線中 僅剩下兩個字節(jié)且正向所述段或線寫入四字節(jié)指令,則將發(fā)生高速緩存線內(nèi)或高速緩 存線間邊界跨越。同樣,控制器14可使用此高速緩存線入口信息來確定是否將有一 傳入指令跨越高速緩存線邊界,且如果有,則引導對未對準指令段的輔助存儲。
在識別未對準指令段的又一實施例中,控制器14使用從指令中在所述指令的剩 余部分之前提取的部分儲存的信息來確定是否將發(fā)生高速緩存線邊界跨越。根據(jù)此實 施例,指令單元54請求指令的某些部分在所述指令的剩余部分之前被提取,例如, 響應于處理器52所請求的關鍵字優(yōu)先存儲器存取操作或關鍵雙字優(yōu)先存儲器存取操 作。響應于此類操作,在所述指令的剩余部分被寫入到指令高速緩存器10中之前提 取并檢查期望的指令的一部分??刂破?4或者包含在指令單元54中的邏輯檢査指令 的之前部分以確定所述指令的剩余部分在隨后被寫入到指令高速緩存器10時是否會 跨越高速緩存線邊界。控制器14使用通過檢査之前的指令部分而儲存的信息來確定 所述指令的剩余部分是否會跨越高速緩存線邊界,且如果是,則在其被寫入到指令高 速緩存器10中時引導對未對準指令段的輔助存儲。
在識別未對準指令段的再一實施例中,控制器14使用歷史未對準指令段數(shù)據(jù)來 預測正寫入到指令高速緩存器10的特定指令是否將跨越高速緩存線邊界。在非限定 性實例中,指令單元54或控制器14維持包含與先前寫入到指令高速緩存器10的指 令相關聯(lián)的跨高速緩存線邊界的數(shù)據(jù)的未對準指令段歷史表(未顯示)。所述歷史表還可包含指示下一指令或待寫入到高速緩存器10的指令是否會跨越高速緩存線邊界 的信息。控制器14使用歷史數(shù)據(jù)來預測正寫入到指令高速緩存器10的特定指令是否 會跨越高速緩存線邊界。
每當將指令寫入到指令高速緩存器10時均更新所述歷史數(shù)據(jù)或可不是周期性地 更新所述歷史數(shù)據(jù)。此外,可基于邊界預測是否正確來修改歷史未對準指令段數(shù)據(jù), 例如,使用一種類似于用于在微處理器中跟蹤及解決分支預測的技術的技術。
考慮到以上范圍的變化形式及應用,應了解,本發(fā)明不限于前述說明,也不限于 附圖。而是,本發(fā)明僅由以上權(quán)利要求書及其合法等效物來限制。
權(quán)利要求
1、一種高速緩存可變長度指令的方法,其包括將指令數(shù)據(jù)寫入到高速緩存線;及存儲一個或一個以上高速緩存器邊界位置的指令數(shù)據(jù)的冗余副本。
2、 如權(quán)利要求1所述的方法,其中存儲一個或一個以上高速緩存器邊界位置的指令數(shù)據(jù)的冗余副本包括將一個或一個以上高速緩存器邊界位置的指令數(shù)據(jù)復制到 輔助存儲器。
3、 如權(quán)利要求2所述的方法,其中所述輔助存儲器包括與指令高速緩存器相關 聯(lián)的標簽陣列、包含在所述指令高速緩存器中或與其相關聯(lián)的一個或一個以上冗余存 儲器元件、單獨的存儲器陣列及較高層級高速緩存器中的一者。
4、 如權(quán)利要求2所述的方法,其中將一個或一個以上高速緩存器邊界位置的指 令數(shù)據(jù)復制到輔助存儲器包括將高速緩存線內(nèi)邊界位置的指令數(shù)據(jù)復制到所述輔助 存儲器。
5、 如權(quán)利要求2所述的方法,其中將一個或一個以上高速緩存器邊界位置的指 令數(shù)據(jù)復制到輔助存儲器包括將高速緩存線間邊界位置的指令數(shù)據(jù)復制到所述輔助 存儲器。
6、 如權(quán)利要求1所述的方法,其中存儲一個或一個以上高速緩存器邊界位置的 指令數(shù)據(jù)的冗余副本包括識別所述指令數(shù)據(jù)中包含的指令的未對準段;及 將所述未對準段復制到輔助存儲器。
7、 如權(quán)利要求6所述的方法,其中識別所述指令數(shù)據(jù)中包含的指令的未對準段 包括對所述指令進行預解碼以識別所述指令的跨邊界段。
8、 如權(quán)利要求6所述的方法,其中識別所述指令數(shù)據(jù)中包含的指令的未對準段 包括處理所述指令的高速緩存線入口位置以識別所述指令的跨邊界段。
9、 如權(quán)利要求8所述的方法,其中所述指令的所述高速緩存線入口位置對應于 與所述指令相關聯(lián)的提取地址。
10、 如權(quán)利要求6所述的方法,其中識別所述指令數(shù)據(jù)中包含的指令的未對準段 包括處理與所述指令相關聯(lián)的長度信息以識別所述指令的跨邊界段。
11、 如權(quán)利要求6所述的方法,其中識別所述指令數(shù)據(jù)中包含的指令的未對準段包括處理歷史指令未對準數(shù)據(jù)以識別所述指令的跨邊界段。
12、 如權(quán)利要求6所述的方法,其中識別所述指令數(shù)據(jù)中包含的指令的未對準段 包括處理所述指令中在所述指令的剩余部分之前提取的部分以識別所述指令的跨邊 界段。
13、 如權(quán)利要求12所述的方法,其中所述指令中在所述指令的所述剩余部分之 前提取的所述部分包括響應于關鍵字優(yōu)先存儲器存取操作而提取的指令部分及響應 于關鍵雙字優(yōu)先存儲器存取操作而提取的指令部分中的一者。
14、 一種包括高速緩存器控制器的設備,所述高速緩存器控制器經(jīng)配置以將對指 令數(shù)據(jù)的存儲引導到指令高速緩存器中所包含的高速緩存線且引導對一個或一個以 上高速緩存器邊界位置的指令數(shù)據(jù)的冗余副本的存儲。
15、 如權(quán)利要求14所述的設備,其中所述高速緩存器控制器經(jīng)配置以通過將一 個或一個以上高速緩存器邊界位置的指令數(shù)據(jù)復制到輔助存儲器來引導對一個或一 個以上高速緩存器邊界位置的指令數(shù)據(jù)的冗余副本的存儲。
16、 如權(quán)利要求15所述的設備,其中所述輔助存儲器包括與所述指令高速緩存 器相關聯(lián)的標簽陣列、包含在所述指令高速緩存器中或與其相關聯(lián)的一個或一個以上 冗余存儲器元件、單獨的存儲器陣列及較高層級高速緩存器中的一者。
17、 如權(quán)利要求15所述的設備,其中所述高速緩存器控制器經(jīng)配置以通過將高 速緩存線內(nèi)邊界位置的指令數(shù)據(jù)復制到輔助存儲器來將一個或一個以上高速緩存器 邊界位置的指令數(shù)據(jù)復制到所述輔助存儲器。
18、 如權(quán)利要求14所述的設備,其中所述高速緩存器控制器經(jīng)配置以通過將高 速緩存線間邊界位置的指令數(shù)據(jù)復制到輔助存儲器來將一個或一個以上高速緩存器 邊界位置的指令數(shù)據(jù)復制到所述輔助存儲器。
19、 如權(quán)利要求14所述的設備,其中所述高速緩存器控制器經(jīng)配置以通過識別 所述指令數(shù)據(jù)中包含的指令的未對準段并將所述未對準段復制到輔助存儲器來引導對一個或一個以上高速緩存器邊界位置的指令數(shù)據(jù)的冗余副本的存儲。
20、 如權(quán)利要求19所述的設備,其中所述高速緩存器控制器經(jīng)配置以通過處理與所述指令數(shù)據(jù)中包含的指令相關聯(lián)的經(jīng)預解碼信息以識別所述指令的跨邊界段來 識別所述指令的未對準段。
21、 如權(quán)利要求19所述的設備,其中所述高速緩存器控制器經(jīng)配置以通過處理 所述指令數(shù)據(jù)中包含的指令的高速緩存線入口位置以識別所述指令的跨邊界段來識 別所述指令的未對準段。
22、 如權(quán)利要求21所述的設備,其中所述指令的所述高速緩存線入口位置對應 于與所述指令相關聯(lián)的提取地址。
23、 如權(quán)利要求19所述的設備,其中所述高速緩存器控制器經(jīng)配置以通過處理 與所述指令數(shù)據(jù)中包含的指令相關聯(lián)的長度信息以識別所述指令的跨邊界段來識別 所述指令的未對準段。
24、 如權(quán)利要求19所述的設備,其中所述高速緩存器控制器經(jīng)配置以通過處理 歷史指令未對準數(shù)據(jù)以識別所述指令數(shù)據(jù)中包含的指令的跨邊界段來識別所述指令 的未對準段。
25、 如權(quán)利要求19所述的設備,其中所述高速緩存器控制器經(jīng)配置以通過使用 所述指令數(shù)據(jù)中包含的指令中在所述指令的剩余部分之前提取的部分識別所述指令 的跨邊界段來識別所述指令的未對準段。
26、 如權(quán)利要求25所述的設備,其中所述指令中在所述指令的所述剩余部分之 前提取的所述部分包括響應于關鍵字優(yōu)先存儲器存取操作而提取的指令部分及響應 于關鍵雙字優(yōu)先存儲器存取操作而提取的指令部分中的一者。
27、 如權(quán)利要求14所述的設備,其中所述高速緩存器控制器進一步經(jīng)配置以通 過從所述指令高速緩存器中讀取所述指令的段且從輔助存儲器中讀取所述指令的未 對準段來從所述高速緩存線中檢索所述指令數(shù)據(jù)中包含的指令。
28、 如權(quán)利要求27所述的設備,其中所述高速緩存器控制器進一步經(jīng)配置以將 從所述指令高速緩存器讀取的所述指令的所述段與所述指令的所述未對準段進行組
29、 如權(quán)利要求28所述的設備,其中所述高速緩存器控制器經(jīng)配置以通過將所 述指令的所述未對準段附加到從所述指令高速緩存器讀取的所述指令的所述段來將 從所述指令高速緩存器讀取的所述指令的所述段與所述指令的所述未對準段進行組合。
30、 如權(quán)利要求28所述的設備,其中所述高速緩存器控制器經(jīng)配置以通過選擇 所述指令的所述未對準段或從所述指令高速緩存器的第一扇區(qū)讀取的所述指令的所 述段的第一部分中的一者并將所述指令的所述未對準段或從所述指令高速緩存器的 所述第一扇區(qū)讀取的所述指令的所述段的所述第一部分中選定的一者與從所述高速 緩存線的第二扇區(qū)讀取的所述指令的第二部分進行組合而將從所述指令高速緩存器 讀取的所述指令的所述段與所述指令的所述未對準段進行組合。
31、 一種微處理器,其包括指令高速緩存器,其經(jīng)配置以將指令數(shù)據(jù)存儲在所述指令高速緩存器中所包含的 高速緩存線中;及高速緩存器控制器,其經(jīng)配置將對一個或一個以上高速緩存器邊界位置的指令數(shù) 據(jù)的冗余副本的存儲引導到輔助存儲器。
32、 如權(quán)利要求31所述的微處理器,其中所述一個或一個以上高速緩存器邊界 位置包括所述指令高速緩存器的高速緩存線內(nèi)邊界位置及所述指令高速緩存器的高 速緩存線間邊界位置中的一者或一者以上。
33、 如權(quán)利要求31所述的微處理器,其中所述輔助存儲器包括與所述指令高速 緩存器相關聯(lián)的標簽陣列、包含在所述指令高速緩存器中或與其相關聯(lián)的一個或一個 以上額外存儲器元件、單獨的存儲器陣列及較高層級高速緩存器中的一者。
34、 一種檢索經(jīng)高速緩存的可變長度指令的方法,其包括 從高速緩存線讀取指令的段;及 從輔助存儲器讀取所述指令的未對準段。
35、 如權(quán)利要求34所述的方法,其進一步包括將所述指令的所述未對準段與從 所述高速緩存線讀取的所述指令的所述段進行組合。
36、 如權(quán)利要求35所述的方法,其中將所述指令的所述未對準段與從所述高速 緩存線讀取的所述指令的所述段進行組合包括將所述指令的所述未對準段附加到從 所述高速緩存線讀取的所述指令的所述段。
37、如權(quán)利要求35所述的方法,其中將所述指令的所述未對準段與從所述高速緩存線讀取的所述指令的所述段進行組合包括選擇所述指令的所述未對準段及從所述高速緩存線的第一扇區(qū)讀取的所述指令的第一部分中的一者;及將所述指令的所述未對準段及從所述高速緩存線的所述第一扇區(qū)讀取的所述指 令的所述第一部分中的選定的一者與從所述高速緩存線的第二扇區(qū)讀取的所述指令 的第二部分進行組合。
全文摘要
一種指令高速緩存器控制器使用補充存儲器來存儲對應于高速緩存器邊界位置的經(jīng)高速緩存的指令數(shù)據(jù)的冗余副本,且借此啟用隨后對跨越所述邊界位置的指令的單個高速緩存存取檢索。在一個或一個以上實施例中,所述高速緩存器控制器將邊界后位置的指令數(shù)據(jù)復制在所述補充存儲器中,且將所述復制的數(shù)據(jù)多路復用到從邊界前位置獲得的高速緩存數(shù)據(jù)中。
文檔編號G06F12/08GK101432703SQ200780015669
公開日2009年5月13日 申請日期2007年4月19日 優(yōu)先權(quán)日2006年5月1日
發(fā)明者邁克爾·威廉·莫羅 申請人:高通股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
平利县| 安徽省| 自治县| 乡宁县| 来凤县| 六枝特区| 花莲市| 班戈县| 大港区| 徐水县| 厦门市| 绥阳县| 万年县| 长丰县| 达孜县| 永安市| 博客| 瑞金市| 濉溪县| 宝坻区| 南雄市| 滕州市| 韩城市| 全南县| 阿拉善左旗| 新丰县| 鄂州市| 股票| 阜康市| 夏津县| 泽普县| 炎陵县| 河北区| 漯河市| 长子县| 邓州市| 道孚县| 洛川县| 通城县| 鄯善县| 库尔勒市|