專利名稱:虛擬轉(zhuǎn)換后備緩沖器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明的實(shí)施例涉及計(jì)算機(jī)系統(tǒng)領(lǐng)域,特別是但不專門涉及虛擬 轉(zhuǎn)換后備緩沖器。
背景技術(shù):
1現(xiàn)代計(jì)算機(jī)系統(tǒng)使用虛擬存儲(chǔ)器。虛擬存儲(chǔ)器允許計(jì)算機(jī)系統(tǒng)的 存儲(chǔ)地址空間大于可用的物理存儲(chǔ)空間。程序和數(shù)據(jù)中的當(dāng)前使用部 分可保存在存儲(chǔ)器中,而未使用部分存儲(chǔ)在磁盤上,直到需要為止。
可使用頁表來管理虛擬地址與物理地址的關(guān)系。頁表用于以頁面 單元來操縱存儲(chǔ)器。虛擬地址與物理地址之間的轉(zhuǎn)換可由存儲(chǔ)器管理單元(MMU)來進(jìn)行。
MMU可使用存儲(chǔ)與最近存取的頁面有關(guān)的地址信息的轉(zhuǎn)換后備 緩沖器(TLB)。 TLB可加速執(zhí)行時(shí)間,因?yàn)镸MU從TLB中可以比從 頁表中更迅速地獲得地址信息。但是,在當(dāng)今的存儲(chǔ)器設(shè)計(jì)中,TLB 未命中減緩了計(jì)算機(jī)系統(tǒng)的性能。
參照以下附圖來描述本發(fā)明的非限制且非窮舉的實(shí)施例,其中, 相似的參考標(biāo)號(hào)在各個(gè)視圖中表示相似的部件,除非另有規(guī)定。
圖1是示出包括根據(jù)本發(fā)明的一實(shí)施例的虛擬TLB的計(jì)算機(jī)系統(tǒng) 的筒圖。
圖2是示出根據(jù)本發(fā)明的一實(shí)施例、編譯字節(jié)碼方法的簡(jiǎn)圖。
圖3是示出根據(jù)本發(fā)明的一實(shí)施例、執(zhí)行編譯字節(jié)碼方法的簡(jiǎn)圖。
圖4是示出根據(jù)本發(fā)明的一實(shí)施例、執(zhí)行編譯字節(jié)碼方法的簡(jiǎn)圖。
圖5是示出使用根據(jù)本發(fā)明的一實(shí)施例的虛擬TLB的邏輯和操作 的流程圖。
圖6是示出根據(jù)本發(fā)明的一實(shí)施例的虛擬TLB的簡(jiǎn)圖。
圖7是示出才艮據(jù)本發(fā)明的一實(shí)施例的虛擬TLB的簡(jiǎn)圖。
圖8示出用于實(shí)現(xiàn)本發(fā)明的實(shí)施例的計(jì)算機(jī)系統(tǒng)的實(shí)施例。
具體實(shí)施例方式
在以下描述中,提出大量具體細(xì)節(jié),以便提供對(duì)本發(fā)明的實(shí)施例 的充分理解。但是,本領(lǐng)域的技術(shù)人員會(huì)認(rèn)識(shí)到,可在沒有這些具體 細(xì)節(jié)的一種或多種的情況下或者采用其它方法、組件、材料等來實(shí)施 本發(fā)明的實(shí)施例。在其它情況下,沒有詳細(xì)說明或描述眾所周知的結(jié) 構(gòu)、材料或操作,以免影響對(duì)描述的理解。
本說明中提到"一個(gè)實(shí)施例"或"一實(shí)施例"表示結(jié)合該實(shí)施例 所描述的具體特征、結(jié)構(gòu)或特性包含在本發(fā)明的至少 一個(gè)實(shí)施例中。 因此,短語"在一個(gè)實(shí)施例中"或"在一實(shí)施例中"在本說明的各個(gè) 位置中的出現(xiàn)不一定都表示同一個(gè)實(shí)施例。此外,在一個(gè)或多個(gè)實(shí)施 例中,具體特征、結(jié)構(gòu)或特性可通過任何適當(dāng)方式進(jìn)行結(jié)合。
在以下說明書和權(quán)利要求中,可使用術(shù)語"耦合”及其派生詞。 "耦合"可表示兩個(gè)或兩個(gè)以上元件處于(物理、電氣、磁、光等)直 接接觸。"耦合"還可表示兩個(gè)或兩個(gè)元件不是相互直接接觸,但仍 然相互配合或交互。
來看圖1,示出根據(jù)本發(fā)明的一實(shí)施例的計(jì)算機(jī)系統(tǒng)100。計(jì)算機(jī) 系統(tǒng)100包括通過總線104耦合到存儲(chǔ)器102的處理器101。計(jì)算機(jī) 系統(tǒng)100的實(shí)施例可包括移動(dòng)裝置,例如移動(dòng)電話、個(gè)人數(shù)字助理、 i某體播放器或者具有板載處理能力和無線通信能力、通過電池供電的 其它類似裝置。計(jì)算機(jī)系統(tǒng)的其它實(shí)施例在下文中結(jié)合圖8來描述。
在一個(gè)實(shí)施例中,處理器101可符合Intel XScaleTM頂核心架構(gòu)。 雖然本文中相對(duì)于XScaleTM,核心來描述本發(fā)明的實(shí)施例,但是大家會(huì)理解,本文中的實(shí)施例可通過備種處理器設(shè)計(jì)來實(shí)現(xiàn)。以下描述的處理器101的組件可通過一條或多條總線(未示出)耦合在一起。為了清楚起見,未示出處理器101的其它組件,例如緩沖器、電源管理控制器、調(diào)試單元等。
處理器101包括用于存儲(chǔ)指令的本地副本的指令高速緩存106。處理器101包括用于存儲(chǔ)數(shù)據(jù)的本地副本的數(shù)據(jù)高速緩存108以及避免對(duì)于頻繁變化的數(shù)椐使數(shù)據(jù)高速緩存108過負(fù)荷(thrashing)的小型數(shù) 據(jù)高速緩存110。
處理器101可包括用于執(zhí)行指令的執(zhí)行核心122。指令可包括微指令等。在一個(gè)實(shí)施例中,處理器101可執(zhí)行符合高級(jí)RISC(簡(jiǎn)化指令集計(jì)算機(jī))機(jī)器(ARM⑧)指令集的指令,包括Thumb(T)或Long Multiply(長(zhǎng)乘XM)變體。在一個(gè)實(shí)施例中,處理器101包括可執(zhí)行ARM⑧指令集版本5TE的Intel XScale"^核心架構(gòu)。處理器101可包 括用于保存指令和/或數(shù)據(jù)的寄存器124。
處理器101可包括具有指令TLB (TLB) 118的指令存儲(chǔ)器管理單元(IMMU) 112。數(shù)據(jù)存儲(chǔ)器管理單元(DMMU)114可包括數(shù)據(jù)TLB (DTLB)120。在一個(gè)實(shí)施例中,IMMU112用于指令存取的地址轉(zhuǎn)換,而DMMU114用于數(shù)據(jù)存取的地址轉(zhuǎn)換。本文所使用的術(shù)語"存取"可包括讀或?qū)憽?br>
在一個(gè)實(shí)施例中,ITLB 118和DTLB 120可構(gòu)造成用作虛擬TLB (VTLB) 116。本文中的實(shí)施例實(shí)現(xiàn)同時(shí)在ITLB 118和DTLB 120中查找地址信息,以便減少TLB未命中,因而提高系統(tǒng)性能。
當(dāng)例如IMMU 112或DMMU 114等的MMU接收到用于轉(zhuǎn)換的虛擬地址時(shí),MMU可首先查看虛擬TLB 116,以便確定對(duì)應(yīng)的物理地址。MMU可響應(yīng)存儲(chǔ)器存取請(qǐng)求而沖妄收轉(zhuǎn)換請(qǐng)求。在一個(gè)實(shí)施例中, IMMU 112和DMMU 114共享對(duì)虛擬TLB 116的存取權(quán)。
如果虛擬TLB 116不包含用于轉(zhuǎn)換的必要頁面信息(稱作TLB未命中),則MMU可發(fā)起頁表查找。頁表查找使用一個(gè)或多個(gè)頁表來確定與虛擬地址對(duì)應(yīng)的物理地址。如果發(fā)生TLB未命中,則來自頁表的 信息可用來更新虛擬TLB 116, ^使得虛擬TLB 116保存與最近存取的 頁面有關(guān)的信息。在一個(gè)實(shí)施例中, 一個(gè)或多個(gè)頁表的至少一部分存 儲(chǔ)在存儲(chǔ)器102中。其佘頁表部分(如果有的話)可本地存儲(chǔ),例如存儲(chǔ) 在硬盤驅(qū)動(dòng)器上。
在一個(gè)實(shí)施例中,虛擬地址包括虛擬頁號(hào)和偏移量。偏移量用于 以虛擬頁面來標(biāo)識(shí)特定地址。虛擬TLB 116可存儲(chǔ)與給定虛擬頁號(hào)對(duì) 應(yīng)的物理頁號(hào)。在一個(gè)實(shí)施例中,虛擬頁面和物理頁面為相同大小, 例如但不限于512字節(jié)、4千字節(jié)(KB)、 64KB等。MMU可將偏移量 (在虛擬地址中提供)與物理頁號(hào)的基址進(jìn)行組合,以便確定物理地址。
例如,虛擬地址8020可包纟舌虛擬頁號(hào)l(具有基址8000)和偏移量 20。虛擬頁號(hào)可轉(zhuǎn)換為物理頁面5(具有基址10000)。因此,物理地址 轉(zhuǎn)換為10020(基址10000 +偏移量20)。
在其它實(shí)施例中,TLB條目可保存其它信息,例如指明頁面是否 神支修改的頁面修改字段、指明頁面是否在使用中的有效字段、指明頁 面的讀/寫設(shè)定的保護(hù)字段、指明與頁面關(guān)聯(lián)的進(jìn)程的進(jìn)程標(biāo)識(shí)字段 等。
本發(fā)明的實(shí)施例可減少TLB未命中,并提高被管理運(yùn)行時(shí)環(huán)境 (MRTE)的性能。神皮管理運(yùn)行時(shí)環(huán)境(MRTE)在移動(dòng)嵌入系統(tǒng)、如移動(dòng) 裝置中越來越重要。同時(shí),在移動(dòng)處理器上運(yùn)行MRTE可能在移動(dòng)處 理器上產(chǎn)生性能瓶頸。
MRTE動(dòng)態(tài)加載和執(zhí)行代碼??蓮念愇募屑虞d代碼和其它相關(guān) 數(shù)據(jù)。每個(gè)類文件可描述單個(gè)類,它包括類變量和類方法。在一個(gè)實(shí) 施例中,類變量定義數(shù)據(jù)類型,而類方法定義功能。
MRTE允許構(gòu)建應(yīng)用程序,所述程序可在任何平臺(tái)上運(yùn)行,而無 需為每個(gè)特定平臺(tái)重寫或重新編譯??删幾gMRTE代碼以產(chǎn)生字節(jié)碼。 字節(jié)碼是機(jī)器無關(guān)代碼。在執(zhí)行時(shí),通過在終端用戶的平臺(tái)上執(zhí)行的 即時(shí)(JIT)編譯器來把字節(jié)碼轉(zhuǎn)換為目標(biāo)平臺(tái)的機(jī)器代碼。然后,平臺(tái)的處理器可執(zhí)行編譯后的字節(jié)碼。JIT編譯器知道該平臺(tái)處理器的特定 指令和其它特殊性。
一種常用MRTE是在Java虛擬機(jī)(JVMTM)中運(yùn)行的JavaTM語言。 在一個(gè)實(shí)施例中,計(jì)算機(jī)系統(tǒng)100可運(yùn)行Java 2平臺(tái)MicroEdition (J2ME"。
在Intel Xscale 平臺(tái)上運(yùn)行的Java虛擬機(jī)的兩個(gè)方面可能引起 TLB未命中熱點(diǎn)實(shí)現(xiàn)和文字實(shí)現(xiàn)(literal implementation).下面結(jié)合圖 2-4來論述這些方面。
來看圖2,通過JIT編譯器204來編譯字節(jié)碼中的方法202。編譯 后的字節(jié)碼存儲(chǔ)在虛擬地址空間205的編譯代碼區(qū)域206上。在一個(gè) 實(shí)施例中,方法202包括JavaTM方法,以及JIT編譯器204包括具有 熱點(diǎn)優(yōu)化的JIT編譯器、如JVM JIT編譯器。
研究表明,大部分程序時(shí)間花費(fèi)在執(zhí)行它的代碼中稱作熱點(diǎn)的小 部分。JIT編譯器204可分析字節(jié)碼,以便確定這些熱點(diǎn)在代碼中的位 置。然后,JIT編譯器204可對(duì)熱點(diǎn)執(zhí)行優(yōu)化技術(shù),而不是浪費(fèi)時(shí)間設(shè) 法優(yōu)化整個(gè)程序。此外,在程序#^亍時(shí),熱點(diǎn)優(yōu)化可動(dòng)態(tài)地繼續(xù)進(jìn)行, 使得JIT編譯器204可使優(yōu)化技術(shù)適應(yīng)新的熱點(diǎn)。
當(dāng)對(duì)方法202進(jìn)行編譯時(shí),將編譯后的代碼作為數(shù)據(jù)寫入虛擬地 址空間205。方法202可能已祐L標(biāo)識(shí)為熱點(diǎn),即"熱"方法。將編譯 代碼區(qū)域206放入虛擬地址空間205的頁面208。在圖2的實(shí)施例中, 各頁面的大小為4千字節(jié)(KB),但其它實(shí)施例可使用其它頁面大小。 在一個(gè)實(shí)施例中,通過使用ARM指令集的存儲(chǔ)寄存器(STR)指令,將 編譯后的字節(jié)碼寫入編譯代碼區(qū)域206。 STR指令用于將字從寄存器 存儲(chǔ)到存儲(chǔ)地址。
存取(在這個(gè)情況中為"寫入")存儲(chǔ)器產(chǎn)生對(duì)DTLB120的更新, 如220所示。由于將頁面208作為數(shù)據(jù)寫入,因此,采用與頁面208 對(duì)應(yīng)的頁面信息來更新DTLB 120的DTLB條目210。如圖2所示,各 頁面208在DTLB 120中具有對(duì)應(yīng)的條目210。
來看圖3,當(dāng)方法202將由才丸行核心122執(zhí)行時(shí),取出與方法202 對(duì)應(yīng)的編譯后的字節(jié)碼(即指令)。在一個(gè)實(shí)施例中,程序計(jì)數(shù)器302 保存要執(zhí)行的下一條指令的存儲(chǔ)地址。程序計(jì)數(shù)器302可以是處理器 100的寄存器。在取出程序計(jì)數(shù)器302所指向的指令之后,采用要取 出的下一條指令的存儲(chǔ)地址來更新程序計(jì)數(shù)器302。
使用ITLB 118來取指令,如320所示。這個(gè)取步驟引起TLB未 命中,因?yàn)镮TLB 118最初不包含用于轉(zhuǎn)換的頁面信息。如圖2所示, 在編譯時(shí)將頁面信息放入DTLB 120。當(dāng)程序計(jì)數(shù)器302在取指令期間 要求MMU112進(jìn)行地址轉(zhuǎn)換時(shí),ITLB118不保存頁面信息,并發(fā)生 TLB未命中。
參照?qǐng)D4,文字的編譯也可能引起TLB未命中。簡(jiǎn)言之,通過包 含在可執(zhí)行代碼中,文字包括方法可用的常數(shù)。通常,常數(shù)的值在編 譯時(shí)是固定的。當(dāng)編譯方法202使用文字時(shí),在XscaleM指令中可能 不直接表示某些文字。因此,那些文字可作為數(shù)據(jù)混合在指令中。
在圖4中,虛擬地址空間205中的頁面404包括數(shù)據(jù)以及指令。 ITLB 118可在與頁面404對(duì)應(yīng)的條目402中包含頁面信息,并且DTLB 120可在與保存數(shù)據(jù)的頁面404對(duì)應(yīng)的條目406中包含頁面信息。
存取那些文字可使用DTLB 120,而可使用ITLB 118來存取指令。 例如,ARM指令LDR rl , [r5]是釆用寄存器r5中的地址處存儲(chǔ)的數(shù)據(jù) 來加載寄存器rl的加載寄存器指令。因此,LDR指令的執(zhí)行將調(diào)用取 指令(ITLB 118),以及r5上的數(shù)據(jù)地址將調(diào)用數(shù)據(jù)存取(DTLB 120)。 這樣,當(dāng)運(yùn)行該方法時(shí),相同頁面使用一個(gè)DTLB條目和一個(gè)ITLB 條目。當(dāng)轉(zhuǎn)換其它頁面的虛擬地址時(shí),可發(fā)生另外的TLB未命中,因 為對(duì)于這些其它頁面,在DTLB 120和ITLB 118中存在更少的剩余條 目 。
來看圖5,示出本發(fā)明的一實(shí)施例的流程圖500。流程圖500可使 用豐欠件、硬件或者它們的4壬何結(jié)合來實(shí)現(xiàn)。將針對(duì)圖6來論述流程圖 500,但是大家會(huì)理解,流程圖500不受圖6所示的實(shí)施例限制。
在框502開始,在虛擬TLB上接收到虛擬頁號(hào)查找請(qǐng)求。在圖6 中,在虛擬TLB 116上接收到虛擬頁號(hào),如610所示。虛擬頁號(hào)查找 可與指令存取或數(shù)據(jù)存取有關(guān)。
在圖6的實(shí)施例中,虛擬TLB 116具有64個(gè)TLB條目,它們是 ITLB 118的32個(gè)條目和DTLB 120的32個(gè)條目的組合。雖然ITLB 118 和DTLB 120在物理上分別駐留在MMU 112和DMMU 114中,但是 虛擬TLB 116在邏輯上可看作是單個(gè)TLB。表示為虛擬TLB查找邏輯 602的附加邏輯將ITLB 118和DTLB 120綁定在一起,以便使TLB查 找能夠同時(shí)在ITLB 118和DTLB 120中執(zhí)行。虛擬TLB查找邏輯602 可實(shí)現(xiàn)為硬件、軟件或它們的任何結(jié)合。
進(jìn)入到框504,在虛擬TLB中執(zhí)行虛擬頁號(hào)查找。在圖6中,虛 擬TLB查找邏輯602在DTLB 120和ITLB 118中執(zhí)行虛擬頁號(hào)查找。 在一個(gè)實(shí)施例中,虛擬頁號(hào)查找涉及搜尋DTLB 120和ITLB 118中的 條目中與所接收的虛擬地址的虛擬頁號(hào)匹配的虛擬頁號(hào)。如果找到匹 配的虛擬頁號(hào),則TLB可提供對(duì)應(yīng)的物理頁號(hào)。在DTLB 120和ITLB 118中同時(shí)執(zhí)行虛擬頁號(hào)查找。這樣,如果在DTLB 120或ITLB 118 中找到虛擬地址,則發(fā)生TLB命中。
在圖5中,該邏輯繼續(xù)進(jìn)行到判定框506,確定在虛擬TLB 116 中是否找到該虛擬頁號(hào)。如果對(duì)判定框506的回答為"是",則返回 物理頁號(hào)。如圖6的612所示,在TLB命中的情況下,可由虛擬TLB 116返回物理頁號(hào)。在一個(gè)實(shí)施例中,請(qǐng)求虛擬頁號(hào)查找的MMU (IMMU 112或DMMU 114)將使用返回的物理頁號(hào)來把虛擬地址轉(zhuǎn)換 成物理;也址。
如果對(duì)判定框506的回答為"否",則該邏輯進(jìn)入到框510,在 一個(gè)或多個(gè)頁表中執(zhí)行頁表查找。在一個(gè)實(shí)施例中,由操作系統(tǒng)來執(zhí) 行頁表查找。
繼續(xù)進(jìn)行到判定框512,該邏輯確定所請(qǐng)求頁面包含數(shù)據(jù)還是指 令。如果該頁面保存指令,則該邏輯繼續(xù)進(jìn)行到框514,更新ITLB。如果頁面保存數(shù)據(jù),則該邏輯繼續(xù)進(jìn)行到框516,更新DTLB。
在一個(gè)實(shí)施例中,判定框512的邏輯按照以下方式來確定是對(duì)數(shù) 據(jù)還是對(duì)指令進(jìn)行存取。如果存儲(chǔ)地址請(qǐng)求來自程序計(jì)數(shù)器寄存器, 則對(duì)指令進(jìn)行存取。在Intel XScale^的實(shí)施例中,程序計(jì)數(shù)器可保 存在寄存器15(rl5)中。
在數(shù)據(jù)存取的情況下,由例如LDR或STR等特定指令本身來進(jìn) 行數(shù)據(jù)存取。與數(shù)據(jù)地址有關(guān)的這類指令的字段將引用不是程序計(jì)數(shù) 器寄存器的寄存器。例如,如上所述,ARM指令LDRrl, [r5]是采用 寄存器r5中的地址處存儲(chǔ)的數(shù)據(jù)來加載寄存器rl的加載寄存器指令。 該邏輯將會(huì)認(rèn)識(shí)到,由指令本身使用與程序計(jì)數(shù)器寄存器不同的寄存 器來進(jìn)行該存取,因而是數(shù)據(jù)存取。
更新TLB的步驟可包括采用來自頁表查找的信息來替換(例如通 過改寫)TLB的當(dāng)前條目。TLB存儲(chǔ)最近存取頁面的虛擬頁號(hào)和對(duì)應(yīng)的 物理頁號(hào)。本文所使用的術(shù)語"存取"包括讀或?qū)憽?br>
在一個(gè)實(shí)施例中,可使用循環(huán)算法來更新ITLB 118和DTLB 120。 在一個(gè)實(shí)施例中,循環(huán)算法保存指向要替換的下一個(gè)TLB條目的指針。 要替換的下一個(gè)TLB條目是被寫入的最后 一個(gè)TLB條目的后續(xù)的TLB 條目。如果指針到達(dá)最后一個(gè)TLB條目,則指針可回繞到第一個(gè)TLB 條目。
來看圖7,示出本發(fā)明的一實(shí)施例。圖7示出具有硬件層702和 軟件層704的計(jì)算環(huán)境。大家會(huì)理解,硬件層702或軟件層704的備 選實(shí)施例可用于實(shí)現(xiàn)本文所述的虛擬TLB。
在例如IMMU 112或DMMU 114等MMU上接收用于轉(zhuǎn)換的虛擬 地址706。虛擬地址706可包括進(jìn)程標(biāo)識(shí)符(PID)、虛擬頁號(hào)(VPN)和偏 移量。PID用于區(qū)分不同進(jìn)程之間的存儲(chǔ)地址空間。將VPN提供給虛 擬TLB116供查找。
圖7還示出DTLB 120和ITLB 118的一實(shí)施例。DTLB 120包括 32個(gè)TLB條目。708所示的條目包括PID和VPN。 DTLB120還包括712所示的條目,所述條曰存儲(chǔ)與708所示的PED和VPN對(duì)應(yīng)的物理 頁號(hào)(PPN)。類似地,ITLB 118包括32個(gè)TLB條目。714所示的條目 包括PED和VPN,而718所示的條目包括對(duì)應(yīng)的PPN。
在TLB查找中,使用比較器(CMP)710將VPN與DTLB 120中的 VPN進(jìn)行比較,并使用CMP716與ITLB 118中的VPN進(jìn)行比較。如 杲在DTLB 120或ITLB 118中找到所接收的VPN,則可標(biāo)識(shí)對(duì)應(yīng)的 PPN。
DTLB 120和ITLB 118指明是否在任一個(gè)TLB中找到所接收的 VPN。如果找到VPN,則由MMU(DMMU 112或IMMU 114)進(jìn)行所 接收的虛擬地址的物理地址轉(zhuǎn)換。如果在DTLB 120或ITLB 118中沒 有找到所接收的VPN,則由虛擬TLB 116指明TLB未命中。
如圖7所示,DTLB 120和ITLB 118各向"或(OR)"門720提供 指明是否找到VPN的標(biāo)記;如果找到VPN則為邏輯"1",而如果在 其相應(yīng)TLB中沒有找到VPN則為邏輯"0"。如果在DTLB 120或ITLB 118中找到VPN,貝'J "或"門720輸出邏輯"1"。在這種情況下,將 對(duì)應(yīng)于VPN的PPN與來自虛擬地址的偏移量進(jìn)行組合,以^^形成物 理地址720。
如果DTLB 120和ITLB 118均未存儲(chǔ)該VPN,則"或"門720將 輸出邏輯"0",以便指明TLB未命中。TLB未命中將使OS722發(fā)起 頁表讀取(即查找),如724所示,以便查找與VPN對(duì)應(yīng)的PPN。在頁 表讀取724之后,軟件層704將進(jìn)入判定框726。
在判定框726,該邏輯確定所請(qǐng)求的虛擬/物理地址是指令地址存 取還是數(shù)據(jù)地址存取。如果地址存取是數(shù)據(jù)地址,則該邏輯進(jìn)入框728, 4吏用循環(huán)算法來更新DTLB 120。如果地址存取;l指令地址,則該邏輯 進(jìn)入框730,使用循環(huán)算法來更新ITLB 118。
本發(fā)明的實(shí)施例提供包括ITLB和DTLB的虛擬TLB??稍贗TLB 和DTLB上同時(shí)執(zhí)行與給定虛擬頁號(hào)對(duì)應(yīng)的物理頁號(hào)的TLB查找。本 發(fā)明的實(shí)施例可在運(yùn)行MRTE、如JVM,的Intel XScale,平臺(tái)上實(shí)
現(xiàn),從而由于更少的TLB未命中而提高系統(tǒng)性能。
計(jì)算機(jī)系統(tǒng)的實(shí)施例
圖8示出可實(shí)現(xiàn)本發(fā)明的實(shí)施例的計(jì)算機(jī)系統(tǒng)800的實(shí)施例。計(jì) 算機(jī)系統(tǒng)800包括耦合到芯片組808的處理器802和存儲(chǔ)器804。海 量存儲(chǔ)裝置(storage)812、非易失性存儲(chǔ)裝置(NVS)806、網(wǎng)絡(luò)接口 (I/F)814和輸X/輸出(I/0)裝置818也可耦合到芯片組808。計(jì)算機(jī)系統(tǒng) 800的實(shí)施例包括但不限于臺(tái)式計(jì)算機(jī)、筆記本電腦、服務(wù)器、諸如 袖珍個(gè)人計(jì)算機(jī)(PC)、移動(dòng)電話、媒體播放器之類的移動(dòng)裝置等。在 一個(gè)實(shí)施例中,計(jì)算機(jī)系統(tǒng)800包括耦合到存儲(chǔ)器804的處理器802, 處理器802執(zhí)行存儲(chǔ)器804中存儲(chǔ)的指令。處理器802可包括如本文 所述的虛擬TLB 116的實(shí)施例。
處理器802可包括但不限于Intel Corporation x86、 Pentium 、 XScaleM系列處理器等。在一個(gè)實(shí)施例中,計(jì)算機(jī)系統(tǒng)800可包括多 個(gè)處理器。在另一個(gè)實(shí)施例中,處理器802可包括兩個(gè)或更多處理器 核心。
存儲(chǔ)器804可包括但不限于動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、靜態(tài) 隨機(jī)存取存儲(chǔ)器(SRAM)、同步動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(SDRAM)等。在 一個(gè)實(shí)施例中,存儲(chǔ)器804可包括無需刷新的一個(gè)或多個(gè)存儲(chǔ)單元。
芯片組808可包括諸如存儲(chǔ)控制器集線器(MCH)等的存儲(chǔ)控制 器、諸如輸入/輸出控制器集線器(ICH)之類的輸入/輸出控制器等。在 一備選實(shí)施例中,存儲(chǔ)器804的存儲(chǔ)控制器可與處理器802駐留在同 一個(gè)芯片中。芯片組808還可包括系統(tǒng)時(shí)鐘支持、電源管理支持、音 頻支持、圖形支持等。在一個(gè)實(shí)施例中,芯片組808耦合到底板(board), 它包括處理器802和存儲(chǔ)器804的插槽。
計(jì)算機(jī)系統(tǒng)800的組件可通過各種互連、如總線進(jìn)行連接。在一 個(gè)實(shí)施例中,互連可以是兩個(gè)組件之間的點(diǎn)對(duì)點(diǎn)互連,而在其它實(shí)施 例中,互連可連4妻兩個(gè)以上組件。這類互連可包括諸如PCI Express等
的外設(shè)部件互連(PCI)、系統(tǒng)管理總線(SMBUS)、低引腳數(shù)(LPC)總線、 串行外圍接口(SPI)總線、加速圖形端口(AGP)接口等。1/0裝置可包括 鍵盤、鼠標(biāo)、顯示器、打印機(jī)、掃描儀等。
計(jì)算機(jī)系統(tǒng)800可通過網(wǎng)結(jié) 接口 814、使用有線連接、無線連接 或者它們的任何組合來與外部系統(tǒng)相4妄口。網(wǎng)絡(luò)接口 814可包括但不 限于調(diào)制解調(diào)器、網(wǎng)絡(luò)接口卡(NIC)等??捎删W(wǎng)絡(luò)接口 814接收/發(fā)送載 波信號(hào)822。在圖8所示的實(shí)施例中,載波信號(hào)822用于將計(jì)算機(jī)系 統(tǒng)800與諸如局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)、因特網(wǎng)或者它們的任何 組合之類的網(wǎng)絡(luò)824相4妄口。在一個(gè)實(shí)施例中,網(wǎng)絡(luò)824還耦合計(jì) 算機(jī)系統(tǒng)826,使得計(jì)算機(jī)系統(tǒng)800和計(jì)算機(jī)系統(tǒng)826可通過網(wǎng)絡(luò)824 進(jìn)行通信。
計(jì)算機(jī)系統(tǒng)800可包括無線通信斗莫塊。無線通信模塊可使用無線 應(yīng)用協(xié)議來建立無線通信信道。無線通信模塊可實(shí)現(xiàn)無線組網(wǎng)標(biāo)準(zhǔn), 例如電氣和電子工程師協(xié)會(huì)(正EE)802.11標(biāo)準(zhǔn)、正EE std. 802.11-1999(1999年由正EE發(fā)布)。
計(jì)算機(jī)系統(tǒng)800還包括其上可存儲(chǔ)固件的非易失性存儲(chǔ)裝置806。 非易失性存儲(chǔ)裝置包括但不限于只讀存儲(chǔ)器(ROM)、閃存、可擦除可 編程只讀存儲(chǔ)器(EPROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、
非易失性隨機(jī)存取存儲(chǔ)器(NVRAM)等。
海量存儲(chǔ)裝置812包括但不限于例如硬盤驅(qū)動(dòng)器等磁盤驅(qū)動(dòng)器、 磁帶驅(qū)動(dòng)器、光盤驅(qū)動(dòng)器等。大家會(huì)理解,處理器802可執(zhí)行的指令 可駐留在海量存儲(chǔ)裝置812、存儲(chǔ)器804、非易失性存儲(chǔ)裝置806中, 或者可經(jīng)由網(wǎng)紹接口 814發(fā)送或接收。
在一個(gè)實(shí)施例中,計(jì)算機(jī)系統(tǒng)800可執(zhí)行操作系統(tǒng)(OS)。 OS的實(shí) 施例包4舌Microsoft Windows , Apple Macintosh㊣操作系統(tǒng)、Linux 操作系統(tǒng)、Unix⑧操作系統(tǒng)等。
為了便于說明,機(jī)器可讀介質(zhì)包括以機(jī)器(例如計(jì)算機(jī)、網(wǎng)絡(luò)裝置、 個(gè)人數(shù)字助理、制造工具、具有一個(gè)或多個(gè)處理器集合的任何裝置等)可讀形式提供(即存儲(chǔ)和/或發(fā)送)信息的任何機(jī)構(gòu)。例如,機(jī)器可讀介質(zhì)包括但不限于可記錄/不可記錄介質(zhì)(例如只讀存儲(chǔ)器(ROM)、隨機(jī)存 取存儲(chǔ)器(RAM)、磁盤存儲(chǔ)介質(zhì)、光存儲(chǔ)介質(zhì)、閃存裝置等)。另外, 機(jī)器可讀介質(zhì)可包括諸如電、光、聲等的傳播信號(hào)或者其它形式的傳 播信號(hào)(例如載波、紅外線信號(hào)、數(shù)字信號(hào)等)。
本文描述了本發(fā)明的實(shí)施例的各種操作。這些操作可使用硬件、 軟件或者它們的任何結(jié)合來實(shí)現(xiàn)。這些操作可通過機(jī)器使用處理器、 專用集成電路(ASIC)、現(xiàn)場(chǎng)可編程門陣列(FPGA)等來實(shí)現(xiàn)。在一個(gè)實(shí) 施例中,所述操作的一個(gè)或多個(gè)可構(gòu)成機(jī)器可讀介質(zhì)上存儲(chǔ)的指令, 這些指令在由機(jī)器執(zhí)行時(shí)使機(jī)器進(jìn)行所述的操作。描述部分或全部操 作的順序不應(yīng)當(dāng)理解為表示這些操作必須是順序相關(guān)的。獲益于本說 明書的本領(lǐng)域的技術(shù)人員會(huì)知道備選排序。此外,大家會(huì)理解,并非 所有操作都必須存在于本發(fā)明的每個(gè)實(shí)施例中。
以上對(duì)于本發(fā)明的所述實(shí)施例的描述,包括"摘要"中所描述的, 并不是窮舉性的或者將實(shí)施例限于所公開的精確形式。雖然本文為了 進(jìn)行說明而描述了本發(fā)明的具體實(shí)施例和示例,但相關(guān)領(lǐng)域的技術(shù)人 員會(huì)認(rèn)識(shí)到,各種等效修改是可行的。可根據(jù)以上詳細(xì)描述來對(duì)本發(fā) 明的實(shí)施例進(jìn)行這些修改。以下權(quán)利要求中使用的術(shù)語不應(yīng)當(dāng)理解為 將本發(fā)明限于說明書中公開的具體實(shí)施例。而是以下權(quán)利要求將按照 權(quán)利要求解釋的已確立原則來解釋。
權(quán)利要求
1.一種方法,包括在虛擬轉(zhuǎn)換后備緩沖器(TLB)上接收虛擬頁號(hào)查找請(qǐng)求,其中,所述虛擬TLB包括指令TLB和數(shù)據(jù)TLB;在所述虛擬TLB中執(zhí)行所述虛擬頁號(hào)的查找;以及返回與所述虛擬TLB中的所述虛擬頁號(hào)對(duì)應(yīng)的物理頁號(hào)。
2. 如權(quán)利要求l所述的方法,其中,執(zhí)行虛擬頁號(hào)的查找的所述 步驟包括在所述指令TLB和所述數(shù)據(jù)TLB中同時(shí)執(zhí)行所述虛擬頁 號(hào)的查找。
3. 如權(quán)利要求1所述的方法,還包括如果在所述虛擬TLB中沒 有找到所述虛擬地址,則執(zhí)行頁表查找。
4. 如權(quán)利要求3所述的方法,還包括采用所述虛擬頁號(hào)以及產(chǎn) 生于所述頁表查找的對(duì)應(yīng)的物理頁號(hào)來更新所述虛擬TLB。
5. 如權(quán)利要求4所述的方法,其中,更新虛擬TLB的所述步驟包括如果與所述虛擬地址對(duì)應(yīng)的物理地址存儲(chǔ)了數(shù)據(jù),財(cái)更新所述數(shù) 據(jù)TLB;以及如果與所述虛擬地址對(duì)應(yīng)的所述物理地址存儲(chǔ)了指令,則更新所 述指令TLB。
6. 如權(quán)利要求4所述的方法,其中,使用循環(huán)算法來更新所述虛 擬TLB。
7. 如權(quán)利要求3所述的方法,其中,由操作系統(tǒng)來執(zhí)行所述頁表 查找。
8. 如權(quán)利要求1所述的方法,其中,從數(shù)據(jù)存儲(chǔ)器管理單元 (DMMU)或指令存儲(chǔ)器管理單元(IMMU)這兩者其中之一接收所述虛 擬頁號(hào)查找請(qǐng)求。
9. 一種設(shè)備,包括 虛擬轉(zhuǎn)換后備緩沖器(TLB),所述虛擬TLB包括 指令TLB和數(shù)據(jù)TLB;以及TLB查找邏輯,耦合到所迷指令TLB和所述數(shù)據(jù)TLB,其中,所 述TLB查找邏輯在所述指令TLB和所述數(shù)據(jù)TLB中同時(shí)查找虛擬頁 號(hào)。
10. 如權(quán)利要求9所述的設(shè)備,其中,如果在所述指令TLB或所 述數(shù)據(jù)TLB中找到所述虛擬地址,則所述虛擬TLB返回與所述虛擬 頁號(hào)對(duì)應(yīng)的物理頁號(hào)。
11. 如權(quán)利要求9所述的設(shè)備,其中,如果在所述指令TLB中沒 有找到所述虛擬頁號(hào)或者如果在所述數(shù)據(jù)TLB中沒有找到所述虛擬頁 號(hào),則所述虛擬TLB報(bào)告TLB未命中。
12. 如權(quán)利要求9所述的設(shè)備,還包括耦合到所述虛擬TLB的 機(jī)器可讀介質(zhì),所述機(jī)器可讀介質(zhì)包含指令,所述指令在被執(zhí)行時(shí)進(jìn) 行包括以下步驟的操作:從所述虛擬TLB接收TLB未命中指示符;以及 使用所述虛擬地址來執(zhí)行頁表查找。
13. 如權(quán)利要求12所述的設(shè)備,其中,所述機(jī)器可讀介質(zhì)還包含 在凈皮執(zhí)行時(shí)進(jìn)行包括以下步驟的操作的指令向所述虛擬TLB提供所述虛擬頁號(hào)以及產(chǎn)生于所述頁表查找的對(duì) 應(yīng)的物理頁號(hào)。
14. 如權(quán)利要求13所述的設(shè)備,其中,所述機(jī)器可讀介質(zhì)還包含 在被執(zhí)行時(shí)進(jìn)行包括以下步驟的操作的指令如果與所述虛擬地址對(duì)應(yīng)的物理地址存儲(chǔ)了數(shù)據(jù),則向所述數(shù)據(jù) TLB提供所述虛擬頁號(hào)和所述對(duì)應(yīng)的物理頁號(hào);以及如果與所述虛擬地址對(duì)應(yīng)的所述物理地址存儲(chǔ)了指令,則向所述 指令TLB提供所述虛擬頁號(hào)和所述對(duì)應(yīng)的物理頁號(hào)。
15. 如權(quán)利要求13所述的設(shè)備,其中,使用循環(huán)算法來更新所述 虛擬TLB。
16. 如權(quán)利要求9所述的設(shè)備,其中,所述設(shè)備執(zhí)fr基本上符合 高級(jí)RISC(筒化指令集計(jì)算機(jī))機(jī)器(ARM)指令集的指令。
17. —種系統(tǒng),包括 動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)單元;以及處理器,耦合到所述DRAM單元,所述處理器包括 虛擬轉(zhuǎn)換后備緩沖器(TLB),所述虛擬TLB包括 指令TLB和數(shù)據(jù)TLB;以及TLB查找邏輯,耦合到所述指令TLB和所述數(shù)據(jù)TLB,其中,所 述TLB查找邏輯在所述指令TLB和所述數(shù)據(jù)TLB中同時(shí)查找虛擬頁 號(hào)。
18. 如權(quán)利要求17所述的系統(tǒng),其中,如果在所述指令TLB或所 述數(shù)據(jù)TLB中找到所述虛擬頁號(hào),則所述虛擬TLB返回與所述虛擬 頁號(hào)對(duì)應(yīng)的物理頁號(hào)。
19. 如權(quán)利要求17所述的系統(tǒng),還包括耦合到所述處理器的機(jī) 器可讀介質(zhì),所述機(jī)器可讀介質(zhì)包含指令,所述指令在由所述處理器 執(zhí)行時(shí)進(jìn)行包括以下步驟的操作如果在所述虛擬TLB中沒有找到所述虛擬頁號(hào),則從所述虛擬 TLB接收TLB未命中指示符;以及使用所述虛擬地址在所述DRAM單元中執(zhí)行頁表查找。
20. 如權(quán)利要求19所述的系統(tǒng),其中,所述機(jī)器可讀介質(zhì)還包含 在由所述處理器執(zhí)行時(shí)進(jìn)行包括以下步驟的操作的指令如果與所述虛擬地址對(duì)應(yīng)的物理地址存儲(chǔ)了數(shù)據(jù),則向所述數(shù)據(jù) TLB提供所述虛擬頁號(hào)和對(duì)應(yīng)的物理頁號(hào);以及如果與所述虛擬地址對(duì)應(yīng)的所迷物理地址存儲(chǔ)了指令,則向所述 指令TLB提供所述虛擬頁號(hào)和對(duì)應(yīng)的物理頁號(hào)。
21. —種制品,包括一種包含指令的機(jī)器可讀介質(zhì),所述指令在由機(jī)器執(zhí)行時(shí),使所 述機(jī)器進(jìn)行包括以下步驟的操作在虛擬轉(zhuǎn)換后備緩沖器(TLB)上接收虛擬頁號(hào)查找請(qǐng)求,其中,所 述虛擬TLB包括指令TLB和數(shù)據(jù)TLB;在所述虛擬TLB中執(zhí)行所述虛擬頁號(hào)的查找,其中,執(zhí)行虛擬頁 號(hào)的查找的所述步驟包括在所述指令TLB和所述數(shù)據(jù)TLB中同時(shí)執(zhí) 行所述虛擬頁號(hào)的查找;以及返回與所述虛擬TLB中的所述虛擬頁號(hào)對(duì)應(yīng)的物理頁號(hào)。
22. 如權(quán)利要求21所述的制品,其中,所述機(jī)器可讀介質(zhì)還包含如果在所述虛擬TLB中沒有找到所述虛擬地址,則執(zhí)行頁表查找。
23. 如權(quán)利要求22所述的制品,其中,所述機(jī)器可讀介質(zhì)還包含采用所述虛擬頁號(hào)以及產(chǎn)生于所述頁表查找的對(duì)應(yīng)的物理頁號(hào)來 更新所述虛擬TLB。
全文摘要
在虛擬轉(zhuǎn)換后備緩沖器(TLB)上接收虛擬頁號(hào)查找請(qǐng)求,其中,虛擬TLB包括指令TLB和數(shù)據(jù)TLB。執(zhí)行虛擬TLB中的虛擬頁號(hào)的查找。返回與虛擬TLB中的虛擬頁號(hào)對(duì)應(yīng)的物理頁號(hào)。
文檔編號(hào)G06F12/10GK101346706SQ200580052420
公開日2009年1月14日 申請(qǐng)日期2005年12月29日 優(yōu)先權(quán)日2005年12月29日
發(fā)明者R·楊 申請(qǐng)人:英特爾公司