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