專利名稱:高效存儲器層級管理的制作方法
技術(shù)領(lǐng)域:
本發(fā)明大體上涉及用于從具有指令高速緩沖存儲器和數(shù)據(jù)高速緩沖存儲器的存儲器 取出指令的技術(shù),且更具體地說,涉及用于在指令高速緩沖存儲器中出現(xiàn)未中之后,通 過直接從數(shù)據(jù)高速緩沖存儲器(如果指令駐存在那里)取出指令來取出所述指令的改進 方法。
背景技術(shù):
例如手機、膝上型計算機、個人數(shù)據(jù)助理(PDA)等等的一般便攜式產(chǎn)品需要使用 例如通信和多媒體程序的處理器執(zhí)行程序。用于此些產(chǎn)品的處理系統(tǒng)包括用于存儲指令 和數(shù)據(jù)的處理器與存儲器復(fù)合體。舉例來說,指令和數(shù)據(jù)可存儲在由多級高速緩沖存儲 器組成的分級存儲器中,包括(例如)指令高速緩沖存儲器、數(shù)據(jù)高速緩沖存儲器和系 統(tǒng)存儲器。單獨指令高速緩沖存儲器和單獨數(shù)據(jù)高速緩沖存儲器的使用被稱為哈佛結(jié)構(gòu) (Harvard architecture)。由于哈佛結(jié)構(gòu)使指令高速緩沖存儲器與數(shù)據(jù)高速緩沖存儲器隔 離,所以當(dāng)指令存儲在數(shù)據(jù)高速緩沖存儲器中時可能出現(xiàn)問題。
在使用哈佛結(jié)構(gòu)的一般系統(tǒng)處理中,出現(xiàn)指令可存儲在數(shù)據(jù)高速緩沖存儲器中的情 形。舉例來說,如果程序經(jīng)加密或呈壓縮形式,那么必須在允許所述程序運行之前對所 述程序進行解密/解壓縮。解密/解壓縮過程將經(jīng)加密/壓縮的程序視為數(shù)據(jù),以便對其進 行處理,且在經(jīng)解密/解壓縮的指令前往系統(tǒng)存儲器的路上將其作為數(shù)據(jù)存儲在數(shù)據(jù)高速 緩沖存儲器中(例如,1級數(shù)據(jù)高速緩沖存儲器)。從Java字節(jié)代碼產(chǎn)生指令是另一種情 形,其中最初將指令視為數(shù)據(jù),其使用包括數(shù)據(jù)高速緩沖存儲器的數(shù)據(jù)路徑而存儲到系 統(tǒng)存儲器。程序的初始狀態(tài)(其中程序指令被視為為數(shù)據(jù))在存儲器層級內(nèi)產(chǎn)生相干性 問題,因為程序的至少一些部分可在執(zhí)行所述程序之前駐存在數(shù)據(jù)高速緩沖存儲器中。
為了解決相干性問題,通常采用軟件方法,其中數(shù)據(jù)高速緩沖存儲器中的程序或程 序段在程序控制下移動到系統(tǒng)存儲器,指令高速緩沖存儲器通常對于清理任何舊的程序 段的高速緩沖存儲器是無效的,且包含所述程序的指令接著從系統(tǒng)存儲器被取出。在執(zhí) 行之前指令從數(shù)據(jù)高速緩沖存儲器到系統(tǒng)存儲器的移動和指令從系統(tǒng)存儲器的取出可能 花費若干循環(huán),從而降低了處理器的性能,因為在程序在處理器上運行之前,必須出現(xiàn) 處理時間開銷以存取最初駐存在數(shù)據(jù)高速緩沖存儲器上的指令。
發(fā)明內(nèi)容
在本發(fā)明的若干方面中,本發(fā)明認識到處理數(shù)據(jù)高速緩沖存儲器中的指令的開銷可 能限制處理器的性能,且可能限制可實現(xiàn)的服務(wù)的質(zhì)量。本發(fā)明還認識到可能需要存取 駐存在數(shù)據(jù)高速緩沖存儲器中的指令。
此外,本發(fā)明描述當(dāng)沒有在指令高速緩沖存儲器中找到指令、指令高速緩沖存儲器 未中且確定所述指令在數(shù)據(jù)高速緩沖存儲器中時,用于直接從數(shù)據(jù)高速緩沖存儲器取出 所述指令的設(shè)備、方法和計算機可讀媒體。通過在指令高速緩沖存儲器未中之后,直接 從數(shù)據(jù)高速緩沖存儲器取出指令,處理器性能可得到改進。
為了此些目的,本發(fā)明的實施例包括一種在與指令高速緩沖存儲器分離的數(shù)據(jù)高速 緩沖存儲器中尋找指令的方法。在此方法中,確定對在指令取出地址處取出所述指令的 嘗試在指令高速緩沖存儲器中未中。將所述指令取出地址變換為數(shù)據(jù)取出地址。此外, 在所述數(shù)據(jù)高速緩沖存儲器中,對在經(jīng)變換的數(shù)據(jù)取出地址處取出所述指令進行嘗試。
本發(fā)明的另一實施例提出一種用于取出指令的處理器復(fù)合體。所述處理器復(fù)合體可 適當(dāng)包括指令高速緩沖存儲器、數(shù)據(jù)高速緩沖存儲器以及第一選擇器。所述第一選擇器 用以選擇指令取出地址或數(shù)據(jù)取出地址。將所選擇的取出地址應(yīng)用于數(shù)據(jù)高速緩沖存儲 器,借此可從所述數(shù)據(jù)高速緩沖存儲器選擇性取出指令或數(shù)據(jù)。
對本文所揭示的本發(fā)明性概念以及其它特征的較完整理解將從以下具體實施方式
和 附圖中顯而易見。
圖1是可使用本發(fā)明的實施例的示范性無線通信系統(tǒng)的框圖2是處理器與存儲器復(fù)合體的功能框圖,其中數(shù)據(jù)高速緩沖存儲器操作適合于根 據(jù)本發(fā)明實施例的指令取出的存儲器高效操作;
圖3是根據(jù)本發(fā)明的用于取出存儲在數(shù)據(jù)高速緩沖存儲器中的指令,以便減少與最 初作為數(shù)據(jù)存儲在數(shù)據(jù)高速緩沖存儲器中的指令相關(guān)聯(lián)的未中處理開銷的示范性方法的 流程圖4是包括指令頁表的處理器與存儲器復(fù)合體的功能框圖,其中數(shù)據(jù)高速緩沖存儲 器操作適合于根據(jù)本發(fā)明的高效指令取出;
圖5是根據(jù)本發(fā)明的用于取出存儲在數(shù)據(jù)高速緩沖存儲器中的指令的示范性方法的 流程圖;以及
圖6是根據(jù)本發(fā)明的用于執(zhí)行作為數(shù)據(jù)而產(chǎn)生且存儲在數(shù)據(jù)高速緩沖存儲器中的代
碼的示范性方法的流程圖。
具體實施例方式
將參看附圖來更充分地說明本發(fā)明的發(fā)明性方面,在附圖中展示了本發(fā)明的若干實 施例。然而,本發(fā)明的實施例可以各種形式來體現(xiàn),且不應(yīng)被解釋為限于本文所陳述的 實施例。相反,提供這些實施例是為了使本發(fā)明'將詳盡且完整,且將充分地向所屬領(lǐng)域 的技術(shù)人員傳達本發(fā)明的范圍。
將了解,本發(fā)明可體現(xiàn)為方法、系統(tǒng)或計算機程序產(chǎn)品。因此,本文所揭示的本發(fā) 明性概念可采取硬件實施例、軟件實施例或結(jié)合軟件與硬件方面的實施例的形式。此外, 本文所揭示的本發(fā)明性概念可采取計算機可用存儲媒體上的計算機程序產(chǎn)品的形式,所 述計算機可用存儲媒體具有體現(xiàn)在媒體中的計算機可用程序代碼??衫萌魏芜m當(dāng)計算 機可讀媒體,包括硬盤、CD-ROM、光學(xué)存儲裝置、快閃存儲器或磁性存儲裝置。
根據(jù)本發(fā)明的教示,可編譯、匯編和加載到處理器的計算機程序代碼最初可以例如 C、 C++、本地匯編語言(native Assembler)、 JAVA 、 Smalltalk、 Java腳本(JavaScript) 、可視基礎(chǔ)(Visual Basic) 、 TSQL、 Perl的編程語言或以各種其它編程語言寫入。 程序代碼或計算機可讀媒體指代例如目標(biāo)代碼的機器語言代碼,其格式可由處理器理解。 本發(fā)明的軟件實施例并不依賴于其使用特定編程語言的實施方案。當(dāng)執(zhí)行程序代碼時, 產(chǎn)生界定用于所述程序代碼的操作環(huán)境的新任務(wù)。
圖I展示可使用本發(fā)明的實施例的示范性無線通信系統(tǒng)IOO。出于說明的目的,圖l 展示三個遠程單元120、 130和150以及兩個基站140。將認識到,典型無線通信系統(tǒng)可 具有遠程單元和基站。遠程單元120、 130和150包括如分別由組件125A、 125C和125B 表示的硬件組件、軟件組件或兩者,其已適合于體現(xiàn)如下文進一步論述的本發(fā)明。圖1 展示從基站140到遠程單元120、 130和150的前向鏈路信號180,以及從遠程單元120、 130和150到基站140的反向鏈路信號190。
在圖1中,將遠程單元120展示為移動電話,將遠程單元130展示為便攜式計算機, 且將遠程單元150展示為無線本地環(huán)路系統(tǒng)中的固定位置遠程單元。舉例來說,遠程單 元可以是手機、手持式個人通信系統(tǒng)(PCS)單元、例如個人數(shù)據(jù)助理的便攜式數(shù)據(jù)單 元、或例如讀表設(shè)備的固定位置數(shù)據(jù)單元。盡管圖l說明根據(jù)本發(fā)明的教示的遠程單元, 但本發(fā)明并不限于這些示范性所說明單元。本發(fā)明可適合在具有帶指令高速緩沖存儲器、 數(shù)據(jù)高速緩沖存儲器和系統(tǒng)存儲器的處理器的任何裝置中使用。
圖2是處理器與存儲器復(fù)合體200的功能框圖,在處理器與存儲器復(fù)合體200中,
正常數(shù)據(jù)高速緩沖存儲器操作適合于如本文進一步描述的較高效的指令取出。處理器與 存儲器復(fù)合體200包括處理器202、 1級(Ll)指令高速緩沖存儲器204、 Ll指令高速緩 沖存儲器控制單元206、 Ll數(shù)據(jù)髙速緩沖存儲器208、 Ll數(shù)據(jù)高速緩沖存儲器控制單元 210、控制部分(control section) 211和系統(tǒng)存儲器212。 Ll指令高速緩沖存儲器控制單 元206可包括用于指令標(biāo)記匹配的指令內(nèi)容可尋址存儲器,如可用于組相關(guān)聯(lián)高速緩沖 存儲器(set associative cache)中??刂撇糠?11包括多路復(fù)用元件220、 226和234、選 通裝置.232和238、以及反相器240。為了本發(fā)明論述內(nèi)容的清楚性起見,未展示可連接 到處理器復(fù)合體的外圍裝置??蛇m當(dāng)?shù)卦诮M件125A到125C中使用處理器與存儲器復(fù)合 體200,以執(zhí)行存儲在系統(tǒng)存儲器212中的程序代碼。
為了取出處理器與存儲器復(fù)合體200中的指令,處理器202產(chǎn)生所需指令的指令取 出地址(IA) 214,且將所述指令取出地址發(fā)送到L1指令高速緩沖存儲器控制單元206。 Ll指令高速緩沖存儲器控制單元206進行檢查以查看所述指令是否存在于Ll指令高速 緩沖存儲器204中。此檢査(例如)通過在對與所供應(yīng)的指令取出地址的匹配的相關(guān)聯(lián) 搜索中使用內(nèi)部內(nèi)容可尋址存儲器(CAM)來完成。當(dāng)指令存在時,匹配出現(xiàn),且Ll 指令高速緩沖存儲器控制單元206指示所述指令存在于指令高速緩沖存儲器204中。如 果指令不存在,那么不會在CAM相關(guān)聯(lián)搜索中找到匹配,且L1指令高速緩沖存儲器控 制單元206指示所述指令不存在于指令高速緩沖存儲器204中。
如果指令存在,那么從指令高速緩沖存儲器204中選擇指令取出地址處的指令。接 著通過多路復(fù)用元件226在指令輸出總線216上將所述指令發(fā)送到處理器202。
如果指令不存在于指令高速緩沖存儲器中,那么將指令高速緩沖存儲器未中信號 (I$M=1) 218設(shè)置為有效,從而指示未中已出現(xiàn)。剛一在指令高速緩沖存儲器中檢測到 未中,處理器與存儲器復(fù)合體200就嘗試從Ll數(shù)據(jù)高速緩沖存儲器208取出所需指令。 為此目的,多路復(fù)用元件220由未中信號(I$M=1) 218啟用,以選擇指令取出地址214。 指令取出地址214接著經(jīng)過多路復(fù)用元件220到D地址(Daddress)總線222上,且作 為數(shù)據(jù)取出地址發(fā)送到L1數(shù)據(jù)高速緩沖存儲器控制單元210。注意,處理器與存儲器復(fù) 合體200表示系統(tǒng)的邏輯圖,因為(例如)將指令取出地址214應(yīng)用到D地址總線222 上在可獲得對D地址總線222的存取之前可能需要仲裁或等待周期。多路復(fù)用指令取出 地址214與處理器所產(chǎn)生的數(shù)據(jù)地址223所采用的方法可變化,且視指令高速緩沖存儲 器與數(shù)據(jù)高速緩沖存儲器設(shè)計中所采用的特定方法而定。
Ll數(shù)據(jù)高速緩沖存儲器控制單元210通過(例如)對所供應(yīng)的指令取出地址的內(nèi)部
相關(guān)聯(lián)搜索來進行檢查,以查看Ll數(shù)據(jù)高速緩沖存儲器208中在所供應(yīng)的指令取出地址 處是否存在命中。命中指示在所供應(yīng)的指令取出地址處存在數(shù)據(jù)。此數(shù)據(jù)實際上是指令, 且數(shù)據(jù)高速緩沖存儲器條目被從Ll數(shù)據(jù)高速緩沖存儲器208取出,且被放置在數(shù)據(jù)輸出 總線224上。為了將從L1數(shù)據(jù)高速緩沖存儲器208取出的數(shù)據(jù)作為指令供應(yīng)到處理器, 可適當(dāng)?shù)厥褂枚嗦窂?fù)用元件226。當(dāng)指令高速緩沖存儲器中存在未中,接著在數(shù)據(jù)高速 緩沖存儲器中指令取出地址處存在命中時,通過多路復(fù)用元件226將從數(shù)據(jù)高速緩沖存 儲器取出的數(shù)據(jù)放置到處理器的指令總線228上來選擇數(shù)據(jù)輸出總線224。通過未中信 號(I$M=1) 218為高態(tài)有效來指示的在指令高速緩沖存儲器中出現(xiàn)未中,接著通過命中 信號(DSH-1) 230為高態(tài)有效來指示的在數(shù)據(jù)高速緩沖存儲器中相同指令取出地址處的 命中,在邏輯上由"與"(AND)門232表示。"與"門232的輸出是用于多路復(fù)用元件 226的選擇信號233。在數(shù)據(jù)高速緩沖存儲器中找到的指令也被多路復(fù)用,以由多路復(fù)用 元件234使用"與"門232在邏輯上所提供的選擇信號233來載入到指令高速緩沖存儲 器204中。雖然數(shù)據(jù)輸出總線224將指令轉(zhuǎn)發(fā)到處理器,但處理器的讀取數(shù)據(jù)輸入236 由"與"門238使用反相器240來停用,以提供選擇信號233的反相。
如果確定數(shù)據(jù)高速緩沖存儲器中所供應(yīng)的指令取出地址處存在未中,那么指令不在 數(shù)據(jù)高速緩沖存儲器中,且從系統(tǒng)存儲器212取出所述指令。還將命中信號(D$H=1) 230發(fā)送到Ll指令高速緩沖存儲器控制單元206,以通過其不活動狀態(tài)來指示嘗試在數(shù) 據(jù)高速緩沖存儲器208中定位指令出現(xiàn)未中。注意,可使用其它信令方法來指示嘗試在 數(shù)據(jù)高速緩沖存儲器208中定位指令出現(xiàn)未中。由于指令不在指令高速緩沖存儲器204 中且不在數(shù)據(jù)高速緩沖存儲器208中,所以必須從系統(tǒng)存儲器212取出所述指令。 一旦 從系統(tǒng)存儲器212獲得所述指令,就將其發(fā)送到處理器202。注意,未展示從系統(tǒng)存儲 器起用于供應(yīng)指令(由于指令高速緩沖存儲器或數(shù)據(jù)高速緩沖存儲器中的未中)和用于 供應(yīng)數(shù)據(jù)(由于數(shù)據(jù)高速緩沖存儲器中的未中)的路徑,以便清楚地說明本發(fā)明。
圖3是方法300的示范性流程圖,所述方法300用于在指令高速緩沖存儲器中具有 未中之后直接在數(shù)據(jù)高速緩沖存儲器中取出指令,以便使通常與處理最初作為數(shù)據(jù)存儲 在數(shù)據(jù)高速緩沖存儲器中的指令相關(guān)聯(lián)的開銷減到最小。通過描述來自處理器與存儲器 復(fù)合體200的元件如何可適當(dāng)協(xié)作以實施方法300的步驟來指示圖3的步驟與圖2的元 件之間的示范性關(guān)系。
為了取出指令,在步驟304中產(chǎn)生指令取出地址。舉例來說,例如處理器202的處 理器產(chǎn)生所需指令的指令取出地址,且將指令取出地址214發(fā)送到Ll指令高速緩沖存儲
器控制器206。在步驟308中,確定是否存在指令高速緩沖存儲器命中或未中。舉例來 說,Ll指令高速緩沖存儲器控制器206進行檢査以査看指令是否存在于指令高速緩沖存 儲器204中。如果指令存在,那么將其存在指示為命中。如果指令存在,那么方法300 進行到步驟312,且選擇指令取出地址處的指令。在步驟316中,將指令發(fā)送到處理器。 舉例來說,將所選擇的指令放置在指令輸出總線216上,且通過多路復(fù)用元件226發(fā)送 到處理器202。
如果步驟308中確定指令不存在于指令高速緩沖存儲器中,那么給出己出現(xiàn)未中的 指示,且在步驟320中嘗試從數(shù)據(jù)高速緩沖存儲器取出指令。舉例來說,通過多路復(fù)用 元件220將指令取出地址214作為數(shù)據(jù)取出地址222發(fā)送到數(shù)據(jù)高速緩沖存儲器208。 在步驟324中,(例如)通過L1數(shù)據(jù)高速緩沖存儲器控制器210進行檢查,以査看在所 供應(yīng)的指令取出地址處是否存在有效數(shù)據(jù)。如果數(shù)據(jù)高速緩沖存儲器中所供應(yīng)的指令取 出地址處存在有效數(shù)據(jù),那么所述數(shù)據(jù)實際上是指令,且在步驟328中取出數(shù)據(jù)高速緩 沖存儲器條目。在步驟316中,將從數(shù)據(jù)高速緩沖存儲器取出的數(shù)據(jù)作為指令發(fā)送到處 理器。舉例來說,在數(shù)據(jù)輸出總線224上從數(shù)據(jù)高速緩沖存儲器208取出的數(shù)據(jù)通過多 路復(fù)用元件226而發(fā)送,且在指令總線228上作為指令供應(yīng)到處理器202。
在步驟324中,如果數(shù)據(jù)高速緩沖存儲器中所供應(yīng)的指令取出地址處存在未中,那 么指令不在數(shù)據(jù)高速緩沖存儲器中,且在步驟332中從系統(tǒng)存儲器取出指令。舉例來說, 將數(shù)據(jù)高速緩沖存儲器命中信號D$H=1 230發(fā)送到Ll指令高速緩沖存儲器控制單元 206,以通過其不活動狀態(tài)指示嘗試在數(shù)據(jù)高速緩沖存儲器208中定位所述指令出現(xiàn)未 中。由于指令不在指令高速緩沖存儲器204中且不在數(shù)據(jù)高速緩沖存儲器208中,所以 必須從系統(tǒng)存儲器212取出指令。 一旦從系統(tǒng)存儲器212獲得指令,就將所述指令發(fā)送 到處理器202,如步驟316中所指示。
圖4是包括指令頁表的處理器與存儲器復(fù)合體400的功能框圖,其中正常數(shù)據(jù)高速 緩沖存儲器操作適合于根據(jù)本發(fā)明的指令取出的高效操作。處理器與存儲器復(fù)合體400 包括處理器402、 l級(Ll)指令高速緩沖存儲器404、指令存儲器管理單元(IMMU) 與高速緩沖存儲器控制(IMMU/S控制)406、 Ll數(shù)據(jù)高速緩沖存儲器408、數(shù)據(jù)存儲器 管理單元(DMMU)和高速緩沖存儲器控制(DMMU/S控制)410、控制部分411和存儲 器層級412。 IMMU/S控制406可包括(例如)虛擬到物理指令地址轉(zhuǎn)換過程??刂撇糠?411包括多路復(fù)用元件432、 438和448、選通裝置428、 444和452以及反相器454。為 了本發(fā)明論述內(nèi)容的清楚性起見,未展示可連接到處理器復(fù)合體的外圍裝置??蛇m當(dāng)?shù)?br>
在組件125A到125C中使用處理器與存儲器復(fù)合體400,以執(zhí)行存儲在系統(tǒng)存儲器412 中的程序代碼。
指令高速緩沖存儲器可使用含有指令頁表的轉(zhuǎn)換后備緩沖器(TLB),以便改進指令 高速緩沖存儲器的性能。指令頁表具有(例如)與虛擬頁編號相關(guān)聯(lián)的物理頁編號的列 表,和與每一頁編號條目相關(guān)聯(lián)的額外信息。當(dāng)將指令地址范圍內(nèi)的存儲器頁加載在指 令高速緩沖存儲器或數(shù)據(jù)高速緩沖存儲器中時,產(chǎn)生指令頁表條目。存儲器頁的加載可 在操作系統(tǒng)(OS)的監(jiān)督下發(fā)生。在操作中,檢査指令頁表是否與供應(yīng)到TLB的虛擬頁 編號匹配。雖然本文將具有指令頁表的TLB描述為指令MMU與高速緩沖存儲器控制406 的一部分,但將認識到可使用替代方法。
為了在處理器與存儲器復(fù)合體400中取出指令,處理器402產(chǎn)生用于所需指令的指 令取出地址(IA) 414,且將所述指令取出地址發(fā)送到IMMU5控制406?;谧鳛镮A414 的一部分的所供應(yīng)頁編號來選擇指令頁表中的適當(dāng)條目,例如位于IMMU/S控制406中 的頁表416。基于所選擇的頁表條目的指令地址與頁地址(也是IA 414的一部分)進行 組合,從而產(chǎn)生內(nèi)部應(yīng)用于L1指令高速緩沖存儲器404的指令地址(GA) 418。從頁表 416選擇的條目包括與所述條目一起存儲的額外信息??膳c每一頁表條目一起存儲的額 外信息位中的一者是檢查數(shù)據(jù)高速緩沖存儲器屬性,標(biāo)為D位420。
當(dāng)由于將指令頁加載到數(shù)據(jù)高速緩沖存儲器中而產(chǎn)生指令頁表中的條目時,或當(dāng)產(chǎn) 生在處理期間存儲在數(shù)據(jù)高速緩沖存儲器中的頁中的指令時,將D位設(shè)置為"1"。通常 通過操作系統(tǒng)(OS)來設(shè)置D位,以指示頁的內(nèi)容可用作數(shù)據(jù)和指令兩者。在示范性情 況下,產(chǎn)生將用作指令的數(shù)據(jù)的程序調(diào)用OS來請求通過將D位設(shè)置在相關(guān)聯(lián)的頁表條 目中而標(biāo)明適當(dāng)?shù)捻?。在另一種情況下,程序還可從OS請求已經(jīng)用D位設(shè)置來設(shè)置的 頁。D位不一定需要明確清零。如果程序規(guī)定數(shù)據(jù)高速緩沖存儲器可通過致使適當(dāng)?shù)腄 位被設(shè)置而含有指令,那么所述規(guī)范可貫穿程序的使用期限而有效。所述D位可接著稍 后在頁表用于不同的過程時被清零。
IMMU/S控制406進行檢査,以查看指令是否存在于指令高速緩沖存儲器中。如果指 令存在,那么將此存在指示為命中。如果指令存在,那么從指令高速緩沖存儲器404選 擇指令取出地址處的指令。接著通過多路復(fù)用元件438在指令輸出總線422上將所述指 令發(fā)送到處理器402。如果指令不存在,那么IMMU/S控制406給出未中已出現(xiàn)的指示, 且指令高速緩沖存儲器未中信號(I$M=1) 424被設(shè)置為有效,從而指示未中已出現(xiàn)。
剛一結(jié)合所選擇的D位被設(shè)置為"l"在指令高速緩沖存儲器中檢測到未中,處理器
與存儲器復(fù)合體400就嘗試從Ll數(shù)據(jù)高速緩沖存儲器408取出所需指令。此嘗試可(例 如)通過在選通功能中使用所選擇的D位而適當(dāng)?shù)貙崿F(xiàn)。來自所選擇的頁表條目的D位 420被輸出為D位信號426。D位信號426(例如)通過"與"門428而同未中指示(1$M=1) 424進行邏輯乘。與門428輸出430接著由多路復(fù)用元件432用來從處理器402選擇所 產(chǎn)生的指令地址(GA)418或數(shù)據(jù)地址433。當(dāng)被選擇時,GA 418經(jīng)過多路復(fù)用元件432 到達D地址總線(DA) 434上,且被發(fā)送到數(shù)據(jù)MMU與高速緩沖存儲器控制410,以 確定指令是否駐存在數(shù)據(jù)高速緩沖存儲器408中數(shù)據(jù)取出地址處。注意,處理器與存儲 器復(fù)合體400表示系統(tǒng)的邏輯圖,因為(例如)將所產(chǎn)生的指令地址418應(yīng)用到D地址 總線434上在可獲得對D地址總線434的存取之前可能需要仲裁或等待周期。多路復(fù)用 所產(chǎn)生的指令地址418與處理器所產(chǎn)生的數(shù)據(jù)地址423所采用的方法可變化,且視指令 高速緩沖存儲器與數(shù)據(jù)高速緩沖存儲器設(shè)計中所采用的特定方法而定。
數(shù)據(jù)高速緩沖存儲器接著進行檢查,以査看在所供應(yīng)的指令取出地址處是否存在有 效數(shù)據(jù)。如果在所供應(yīng)的指令取出地址處存在有效數(shù)據(jù),那么所述數(shù)據(jù)實際上是指令, 且從Ll數(shù)據(jù)高速緩沖存儲器408取出數(shù)據(jù)高速緩沖存儲器條目,并將其放置在數(shù)據(jù)輸出 總線436上。為了將數(shù)據(jù)高速緩沖存儲器條目作為指令供應(yīng)給處理器,(例如)使用多路 復(fù)用元件438。當(dāng)指令高速緩沖存儲器中存在未中,且所選擇的D位被設(shè)置為"1",且 接著數(shù)據(jù)高速緩沖存儲器中指令取出地址處存在命中時,多路復(fù)用元件438經(jīng)啟用以經(jīng) 過數(shù)據(jù)輸出總線436到達處理器的指令總線440上。通過未中信號(I$M=1) 424為高態(tài) 有效且D位信號426被設(shè)置為"1"來指示的在指令高速緩沖存儲器中出現(xiàn)未中,接著通 過命中信號(DSH-1)442為高態(tài)有效來指示的在數(shù)據(jù)高速緩沖存儲器中所產(chǎn)生的指令地 址處的命中,在邏輯上由"與"門444表示。"與"門444的輸出是用于多路復(fù)用元件 438的選擇信號446。數(shù)據(jù)輸出總線上的指令也被多路復(fù)用,以通過多路復(fù)用元件448使 用選擇信號446來加載到指令高速緩沖存儲器中。雖然Ll數(shù)據(jù)高速緩沖存儲器數(shù)據(jù)輸出 總線436將指令轉(zhuǎn)發(fā)到處理器402,但通過"與"門452使用反相器454所提供的選擇 信號446的反相來選通切斷數(shù)據(jù)輸出總線436向處理器的讀取數(shù)據(jù)輸入450進行傳送。
如果確定數(shù)據(jù)高速緩沖存儲器中所供應(yīng)的指令取出地址處存在未中,那么指令不在 數(shù)據(jù)高速緩沖存儲器中,且將指令從系統(tǒng)存儲器412取出。還將命中信號(D$H=1) 442 發(fā)送到MMU/S控制406,以通過其不活動狀態(tài)來指示嘗試在數(shù)據(jù)高速緩沖存儲器208中 定位指令出現(xiàn)未中。 一旦從系統(tǒng)存儲器412獲得指令,就將其發(fā)送到處理器402。注意, 未展示從系統(tǒng)層級起用于供應(yīng)指令(由于指令高速緩沖存儲器或數(shù)據(jù)高速緩沖存儲器中
的未中)和用于供應(yīng)數(shù)據(jù)(由于數(shù)據(jù)高速緩沖存儲器中的未中)的路徑,但可使用與所 使用的應(yīng)用和處理器一致的多種連接方法中的任一種。
圖5是方法500的示范性流程圖,所述方法500用于在指令高速緩沖存儲器中具有 未中,且檢査數(shù)據(jù)高速緩沖存儲器屬性指示應(yīng)針對指令檢査數(shù)據(jù)高速緩沖存儲器之后, 取出數(shù)據(jù)高速緩沖存儲器中的所述指令。通過參考來自處理器與存儲器復(fù)合體400的示 范性元件(其可適當(dāng)?shù)赜靡詫嵭袌D5的方法500的步驟),來指示圖5的步驟與圖4的元 件之間的示范性關(guān)系。
為了取出指令,在步驟502中產(chǎn)生所需指令的指令取出地址。舉例來說,例如處理 器402的處理器產(chǎn)生指令取出地址,且將指令取出地址414發(fā)送到Ll指令高速緩沖存儲 器控制器406。指令取出地址可以是由頁編號504和頁地址506組成的虛擬地址。在步 驟508中,基于所供應(yīng)的頁編號504而選擇例如指令頁表416的指令頁表中適當(dāng)條目。 在步驟509中,基于所選擇的頁表條目而產(chǎn)生的地址與頁地址506組合,以產(chǎn)生指令高 速緩沖存儲器地址。
從指令頁表416選擇的條目包括與所述條目一起存儲的額外信息??膳c每一頁表條 目一起存儲的額外信息位中的一者是檢査數(shù)據(jù)高速緩沖存儲器屬性,例如標(biāo)為D位420 的位。在步驟510中選擇此屬性。
在步驟512中,確定是否存在指令高速緩沖存儲器命中或未中。舉例來說,指令高 速緩沖存儲器進行檢査以查看指令是否存在。如果指令存在,那么將其存在指示為命中。 如果指令存在,那么方法500進行到步驟514,且選擇指令取出地址處的指令。在步驟 516中,將指令發(fā)送到處理器。舉例來說,將所選擇的指令放置在指令輸出總線422上, 且通過多路復(fù)用元件438發(fā)送到處理器402的指令總線440。
如果步驟512中確定指令不存在于指令高速緩沖存儲器中,那么給出己出現(xiàn)未中的 指示,且方法500進行到步驟518。在步驟518中,檢査步驟510中所選擇的D位,以 查看其是否被設(shè)置為"1",指示應(yīng)針對所述指令檢査數(shù)據(jù)高速緩沖存儲器。如果D位被 設(shè)置為"1",那么在步驟520中,處理器嘗試從數(shù)據(jù)高速緩沖存儲器取出指令。舉例來 說,將所產(chǎn)生的指令取出地址418作為數(shù)據(jù)取出地址434而發(fā)送到數(shù)據(jù)高速緩沖存儲器。
在步驟524中,數(shù)據(jù)高速緩沖存儲器進行檢查,以查看在所供應(yīng)的指令取出地址處 是否存在有效數(shù)據(jù)。如果在所供應(yīng)的指令取出地址處存在有效數(shù)據(jù),那么所述數(shù)據(jù)實際 上是指令,且在步驟528中取出數(shù)據(jù)高速緩沖存儲器條目。在步驟516中,將從數(shù)據(jù)高 速緩沖存儲器取出的數(shù)據(jù)作為指令發(fā)送到處理器。舉例來說,通過多路復(fù)用元件438發(fā)
送在數(shù)據(jù)輸出總線436上取出的數(shù)據(jù),且在指令總線440上將所述數(shù)據(jù)作為指令供應(yīng)到 處理器402。
返回步驟518,如果在步驟518中確定D位為"0",那么知道指令不存在于數(shù)據(jù)高 速緩沖存儲器中,且方法500進行到步驟522。對于如步驟524中所確定的在數(shù)據(jù)高速 緩沖存儲器中所供應(yīng)的指令取出地址處存在未中的情況,也會到達步驟522。在任一種 情況下,都知道指令不存在于指令高速緩沖存儲器中也不存在于數(shù)據(jù)高速緩沖存儲器中, 且從系統(tǒng)存儲器取出所述指令,如步驟522中所指示。舉例來說,將存取系統(tǒng)存儲器412 以獲得所述指令。 一旦從系統(tǒng)存儲器412獲得指令,就將所述指令發(fā)送到處理器402, 如步驟516中所指示。
圖6是方法600的示范性流程圖,所述方法600用于執(zhí)行作為數(shù)據(jù)而產(chǎn)生且存儲在 數(shù)據(jù)高速緩沖存儲器中的程序代碼。遵循此方法的程序代碼可在具有指令高速緩沖存儲 器、數(shù)據(jù)高速緩沖存儲器和系統(tǒng)存儲器(例如結(jié)合圖2和圖4而論述的高速緩沖存儲器 和存儲器)的處理器與存儲器復(fù)合體上執(zhí)行,且可適當(dāng)?shù)赜糜趫D1的組件125A到125C 中。
在步驟602中,程序產(chǎn)生代碼。此產(chǎn)生可(例如)在程序從經(jīng)壓縮的程序產(chǎn)生可執(zhí) 行代碼時發(fā)生。最初將所產(chǎn)生的代碼視為數(shù)據(jù),且在所述代碼產(chǎn)生之后將其存儲在數(shù)據(jù) 高速緩沖存儲器中。在步驟604中,在執(zhí)行所述程序之前,使指令高速緩沖存儲器無效。 使無效步驟確保了沒有與所產(chǎn)生的代碼處于同一地址處的指令。在步驟606中,處理器 通過從指令高速緩沖存儲器中的程序地址空間取出指令來執(zhí)行所產(chǎn)生的代碼,且所產(chǎn)生 的代碼可包括存儲在數(shù)據(jù)高速緩沖存儲器中的指令。對于存儲在數(shù)據(jù)高速緩沖存儲器中 的那些指令,遵循本發(fā)明的技術(shù),從而允許在指令高速緩沖存儲器中出現(xiàn)未中時針對指 令檢査數(shù)據(jù)高速緩沖存儲器。剛一在數(shù)據(jù)高速緩沖存儲器中找到指令,就直接從數(shù)據(jù)高 速緩沖存儲器取出所述指令以在處理器上執(zhí)行。
雖然在目前優(yōu)選的情況中揭示了本發(fā)明,但將認識到,本教示可適合于與本發(fā)明和 所附權(quán)利要求書一致的多種情況。
權(quán)利要求
1.一種在與指令高速緩沖存儲器分離的數(shù)據(jù)高速緩沖存儲器中尋找指令的方法,所述方法包含確定對在指令取出地址處取出所述指令的嘗試在所述指令高速緩沖存儲器中未中;將所述指令取出地址變換為數(shù)據(jù)取出地址;以及在所述數(shù)據(jù)高速緩沖存儲器中,對在所述經(jīng)變換的數(shù)據(jù)取出地址處取出所述指令進行嘗試。
2. 根據(jù)權(quán)利要求l所述的方法,其進一步包含當(dāng)產(chǎn)生作為數(shù)據(jù)存儲在所述數(shù)據(jù)高速緩沖存儲器中的指令時,將檢査數(shù)據(jù)高速緩 沖存儲器屬性設(shè)置為有效。
3. 根據(jù)權(quán)利要求2所述的方法,其進一步包含-確定檢査數(shù)據(jù)高速緩沖存儲器屬性是否有效;以及如果所述檢查數(shù)據(jù)高速緩沖存儲器屬性有效,那么允許所述數(shù)據(jù)高速緩沖存儲器 中對所述指令的所述取出嘗試。
4. 根據(jù)權(quán)利要求2所述的方法,其中所述檢查數(shù)據(jù)高速緩沖存儲器屬性是存儲在指令 頁表中的位。
5. 根據(jù)權(quán)利要求1所述的方法,其中所述變換所述指令取出地址的步驟進一步包含多路復(fù)用所述指令取出地址與數(shù)據(jù)取出地址;以及選擇所述指令取出地址以作為所述經(jīng)變換的數(shù)據(jù)取出地址應(yīng)用于所述數(shù)據(jù)高速 緩沖存儲器,其中在確定所述指令取出嘗試在所述指令高速緩沖存儲器中未中之 后,選擇所述指令取出地址。
6. 根據(jù)權(quán)利要求1所述的方法,其中所述在所述數(shù)據(jù)高速緩沖存儲器中進行取出嘗試 的步驟進一步包含確定所述數(shù)據(jù)高速緩沖存儲器中的指令命中;以及 從所述數(shù)據(jù)高速緩沖存儲器取出所述指令。
7. 根據(jù)權(quán)利要求1所述的方法,其進一步包含-確定所述數(shù)據(jù)高速緩沖存儲器中的所述取出嘗試未中;以及 通知指令存儲器控制所述數(shù)據(jù)高速緩沖存儲器中的所述取出嘗試未中。
8. 根據(jù)權(quán)利要求7所述的方法,其進一步包含從系統(tǒng)存儲器取出所述指令。
9. 一種處理器復(fù)合體,其包含指令高速緩沖存儲器; 數(shù)據(jù)高速緩沖存儲器;以及第一選擇器,其用以基于選擇信號而選擇指令取出地址或數(shù)據(jù)取出地址,所述選 擇信號致使所述指令取出地址或所述數(shù)據(jù)取出地址應(yīng)用于所述數(shù)據(jù)高速緩沖存儲 器,借此可從所述數(shù)據(jù)高速緩沖存儲器選擇性取出指令或數(shù)據(jù)。
10. 根據(jù)權(quán)利要求9所述的處理器復(fù)合體,其中所述第一選擇器的所述選擇信號響應(yīng)于 數(shù)據(jù)存取操作而選擇所述數(shù)據(jù)取出地址。
11. 根據(jù)權(quán)利要求9所述的處理器復(fù)合體,其中如果指令未中信號指示所述指令高速緩 沖存儲器中的指令取出操作己出現(xiàn)未中,那么所述第一選擇器的所述選擇信號選擇 所述指令取出地址。
12. 根據(jù)權(quán)利要求9所述的處理器復(fù)合體,其進一步包含第二選擇器,其用以選擇來自所述指令高速緩沖存儲器的指令輸出總線,或選擇 來自所述數(shù)據(jù)高速緩沖存儲器的數(shù)據(jù)輸出總線,以應(yīng)用于處理器的指令總線輸入。
13. 根據(jù)權(quán)利要求12所述的處理器復(fù)合體,其中如果所述指令高速緩沖存儲器中出現(xiàn) 未中,且所述數(shù)據(jù)高速緩沖存儲器中在通過所述第一選擇器選擇的所述指令取出地 址處出現(xiàn)命中,那么所述第二選擇器選擇來自所述數(shù)據(jù)高速緩沖存儲器的所述數(shù)據(jù) 輸出總線。
14. 根據(jù)權(quán)利要求12所述的處理器復(fù)合體,其中如果所述指令高速緩沖存儲器中出現(xiàn) 命中,那么所述第二選擇器選擇所述指令輸出總線。
15. 根據(jù)權(quán)利要求9所述的處理器復(fù)合體,其進一步包含-第三選擇器,其用以選擇來自系統(tǒng)存儲器的存儲器輸出總線,或選擇來自所述數(shù) 據(jù)高速緩沖存儲器的數(shù)據(jù)輸出總線,以應(yīng)用于所述指令高速緩沖存儲器的指令總線 輸入。
16. 根據(jù)權(quán)利要求15所述的處理器復(fù)合體,其中如果所述指令高速緩沖存儲器中出現(xiàn) 未中,且所述數(shù)據(jù)高速緩沖存儲器中在通過所述第一選擇器選擇的所述指令取出地 址處出現(xiàn)命中,那么所述第三選擇器選擇來自所述數(shù)據(jù)高速緩沖存儲器的所述數(shù)據(jù) 輸出總線。
17. —種用于執(zhí)行程序代碼的方法,其包含產(chǎn)生作為數(shù)據(jù)存儲在數(shù)據(jù)高速緩沖存儲器中的指令;在執(zhí)行使用所述所產(chǎn)生指令的所述程序代碼之前,使指令高速緩沖存儲器無效; 以及如果沒有在所述指令高速緩沖存儲器中找到指令,那么直接從所述數(shù)據(jù)高速緩沖 存儲器取出所述指令,借此執(zhí)行所述程序代碼。
18. 根據(jù)權(quán)利要求17所述的方法,其中所述產(chǎn)生指令步驟包括將指令加載到所述數(shù)據(jù) 高速緩沖存儲器中的操作。
19. 根據(jù)權(quán)利要求17所述的方法,其中所述使所述指令高速緩沖存儲器無效進一步包 含僅使所述指令數(shù)據(jù)高速緩沖存儲器的存儲所述所產(chǎn)生的指令的一部分無效。
20. 根據(jù)權(quán)利要求17所述的方法,其進一步包含在指令頁表中將檢查數(shù)據(jù)高速緩沖存儲器屬性設(shè)置為開啟,以指示指令可在所述 數(shù)據(jù)高速緩沖存儲器中;以及如果沒有在所述指令高速緩沖存儲器中找到所述指令,且所述檢査數(shù)據(jù)高速緩沖 存儲器屬性為開啟,那么從所述數(shù)據(jù)高速緩沖存儲器取出所述指令。
全文摘要
在處理器中,在執(zhí)行程序之前,存在指令和所述程序的一些部分可駐存在數(shù)據(jù)高速緩沖存儲器中的情況。提供硬件和軟件技術(shù)以在指令高速緩沖存儲器中具有未中之后取出所述數(shù)據(jù)高速緩沖存儲器中的指令,從而改進所述處理器的性能。如果指令不存在于所述指令高速緩沖存儲器中,那么指令取出地址作為數(shù)據(jù)取出地址發(fā)送到所述數(shù)據(jù)高速緩沖存儲器。如果有效數(shù)據(jù)存在于所述數(shù)據(jù)高速緩沖存儲器中所述所供應(yīng)的指令取出地址處,那么所述數(shù)據(jù)實際上是指令,且取出數(shù)據(jù)高速緩沖存儲器條目,并將其作為指令供應(yīng)給處理器復(fù)合體。指令頁表中可包括額外位以在所述指令高速緩沖存儲器中出現(xiàn)未中時,指示應(yīng)針對所述指令檢查所述數(shù)據(jù)高速緩沖存儲器。
文檔編號G06F12/08GK101371224SQ200780002444
公開日2009年2月18日 申請日期2007年1月22日 優(yōu)先權(quán)日2006年1月20日
發(fā)明者托馬斯·安德魯·薩托里烏斯, 邁克爾·威廉·莫羅 申請人:高通股份有限公司