專利名稱:一種實現(xiàn)可配置risc cpu中的存儲器空間的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種配置CPU中的存儲器空間的方法,更具體地說是涉及一種配置RISC CPU中的存儲器的空間的方法。
背景技術(shù):
存儲器是計算機系統(tǒng)的核心組成部分,CPU運行需要的指令與數(shù)據(jù)都是存放在存儲器中,同時程序運行過程中產(chǎn)生的新的數(shù)據(jù)也需要寫回存儲器。如何能夠及時準(zhǔn)確地將CPU需要的數(shù)據(jù)與指令從存儲器中讀出或者寫入就是存儲器管理需要做的工作。
程序設(shè)計人員總是希望存儲器的速度盡可能地快,以便與處理器的速度相匹配。一方面,經(jīng)過幾十年的發(fā)展,存儲器的工藝實現(xiàn)技術(shù)有了突飛猛進(jìn)的發(fā)展,高速、大容量、低價格的存儲器以驚人的速度被生產(chǎn)出來。盡管如此,存儲技術(shù)的發(fā)展證明單一工藝存儲器件很難同時滿足容量、價格、速度三方面的性能要求。事實上,容量與速度、速度與價格、容量與價格的性能要求是相互有矛盾的,很難同時滿足,而且存儲器速度的改進(jìn)始終跟不上CPU速度的提高。另一方面,在CPU指令中存儲器訪問的指令占據(jù)比較大的比率。存儲器本身的速度慢,再加上訪問存儲器的頻繁,如果不采取一種好的管理方法勢必影響CPU的整體性能??梢哉f訪問存儲器的時間長短已經(jīng)成為影響處理器性能的主要因素,是影響處理器信息吞吐量的瓶頸。
存儲器空間的管理最基本的兩種方法是分頁管理和虛實地址映射。分頁管理就是把實際的物理地址分成幾部分,每一部分稱為一個頁,將存儲器分頁后,可以先找到相應(yīng)的頁,再從該頁中找到實際的地址,與從整個大的存儲區(qū)域中尋找地址相比能節(jié)省較多的時間。
使用虛地址到物理地址的映射也是大多數(shù)存儲器管理機制采用的方法。即在程序中不用考慮指令數(shù)據(jù)在存儲器中的實際物理地址,可以使用自己的虛擬地址,在程序運行時通過存儲器管理將此虛擬地址通過一定的算法映射成物理地址。這樣便于程序的移植,節(jié)省程序員的工作量。
在實際實現(xiàn)中,具體分頁的方法有所不同,但主要取決于存儲器的容量和處理器本身的尋址能力。至于虛擬地址到物理地址的映射機制也主要使用一個頁面寄存器,里面存放了實際物理地址的高幾位地址,然后將虛擬地址作為物理地址的低位,這樣便組成一個完整的物理地址。這樣做無論在算法和電路上都比較簡單,也能獲得一定的效果。
采用以上兩種方法存儲器的訪問速度雖然會有所提高,但是效果不是很明顯。因為存儲器進(jìn)行分頁管理后,每次查找也比較麻煩;其次,每條指令還是需要實際去訪問存儲器。提高M(jìn)MU速度的關(guān)鍵是盡量降低存儲器的訪問時間和次數(shù)。在地址轉(zhuǎn)換過程中,MMU把CPU發(fā)出的64b有效地址轉(zhuǎn)換成40b虛擬地址,然后再轉(zhuǎn)換成32b物理地址。有效地址空間分為段(256M)或塊(128k~256M),段內(nèi)再進(jìn)一步細(xì)分為4kB的頁。對于每個塊或頁,由操作系統(tǒng)產(chǎn)生地址描述符(GVD項);在塊或頁被訪問時,MMU利用這些描述符產(chǎn)生物理地址,保護(hù)信息及其他控制信息作為輸出。
TLB是地址轉(zhuǎn)換器。由32個數(shù)據(jù)單元組成,每個數(shù)據(jù)單元分別映射一對奇偶頁,頁的大小有4K,16K,64K,256K,1M,4M,或16M不等,例如當(dāng)頁設(shè)置為4K,且系統(tǒng)為64位時,取送64位虛擬地址的12至39位,依次訪問TLB的每個數(shù)據(jù)單元,當(dāng)檢測一致時,讀出20位作為基址,再加上12位偏移地址,翻譯出實際地址。TLB的虛擬地址既包括指令又包括數(shù)據(jù),可分為聯(lián)合地址轉(zhuǎn)換器(JTLB)和指令地址轉(zhuǎn)換器(ITLB)兩種,指令和數(shù)據(jù)的響應(yīng)速度,也能直接影響存儲器的訪問速度。
發(fā)明內(nèi)容
本發(fā)明是針對當(dāng)指令碼流比較密集時,存儲器中指令地址轉(zhuǎn)換器(ITLB)向聯(lián)合地址轉(zhuǎn)換器(JTLB)發(fā)出更新請求,從而降低訪問存儲器速度的問題,公開了一種配置存儲器空間的方法。
一種實現(xiàn)可配置RISC CPU中的存儲器空間的方法,該方法包括配置存儲器中聯(lián)合地址轉(zhuǎn)換器(JTLB)和指令地址轉(zhuǎn)換器(ITLB)的空間結(jié)構(gòu),在聯(lián)合地址轉(zhuǎn)換器中提供N個存儲空間單元,由軟件分配給指令地址轉(zhuǎn)換器;根據(jù)指令碼流的密集程度,采取不同的存儲器空間結(jié)構(gòu)存放指令及數(shù)據(jù),其中指令地址轉(zhuǎn)換器通過軟件配置為2+2n個單元的存儲器空間,聯(lián)合地址轉(zhuǎn)換器通過軟件配置為32-n個單元的存儲器空間。
上述方法中大寫字母N為0~3的整數(shù),小寫字母n為0~N的整數(shù),這種可配置結(jié)構(gòu)中聯(lián)合地址轉(zhuǎn)換器(JTLB)和指令地址轉(zhuǎn)換器(ITLB)的存儲空間配置最多有n+1種分配結(jié)構(gòu)。
使用本發(fā)明所述方法該處理器不需要另外增加額外的存儲器空間,可根據(jù)指令碼流的密集程度,采取不同的存儲器空間結(jié)構(gòu),減少指令地址轉(zhuǎn)換器出現(xiàn)TLB Miss的異常,以及向聯(lián)合地址轉(zhuǎn)換器請求更新的次數(shù),從而提高了存儲器的訪問速度,實現(xiàn)了聯(lián)合地址轉(zhuǎn)換器和指令地址轉(zhuǎn)換器的空間動態(tài)分配。該方法包括如下的具體步驟步驟1傳統(tǒng)的聯(lián)合地址轉(zhuǎn)換器有32個單元的存儲空間,指令地址轉(zhuǎn)換器有2個單元的存儲空間,在這種結(jié)構(gòu)基礎(chǔ)上,將聯(lián)合地址轉(zhuǎn)換器的N個存儲單元在硬件上設(shè)計成可選擇的,即可以作為指令地址轉(zhuǎn)換器使用,也可以作為聯(lián)合地址轉(zhuǎn)換器使用;步驟2在步驟1將聯(lián)合地址轉(zhuǎn)換器的N個存儲單元在硬件上設(shè)計成可選擇的后,根據(jù)軟件所編寫的指令的密集程度,由軟件分配聯(lián)合地址轉(zhuǎn)換器的n個存儲單元給指令地址轉(zhuǎn)換器,則指令地址轉(zhuǎn)換器增加2n個存儲單元,存放的指令增加,處理器發(fā)出的指令的虛擬地址會送到此2+2n個單元中尋找相同的指令;步驟3當(dāng)指令地址轉(zhuǎn)換器中檢測到相同的指令時,進(jìn)行虛擬地址到物理地址的轉(zhuǎn)換;若沒有檢測到時,則出現(xiàn)TLB Miss的異常,指令地址轉(zhuǎn)換器會自動請求到聯(lián)合地址轉(zhuǎn)換器檢測,由于此時指令地址轉(zhuǎn)換器的空間增加,則出現(xiàn)TLBmiss的幾率減少,指令地址轉(zhuǎn)換器向聯(lián)合地址轉(zhuǎn)換器請求的次數(shù)也會相應(yīng)減少,提高了ITLB的命中率。
上述步驟中所述的由軟件分配聯(lián)合地址轉(zhuǎn)換器的存儲單元,其特征在于軟件通過調(diào)整數(shù)據(jù)選擇器MUX1,MUX2及MUX3的控制字,來選擇合適的聯(lián)合地址轉(zhuǎn)換器的存儲單元的配置方式。
上述步驟中所述的當(dāng)指令地址轉(zhuǎn)換器中檢測到相同的指令時,進(jìn)行虛擬地址到物理地址的轉(zhuǎn)換,虛擬地址由三部分組成,高位是地址空間標(biāo)志符,以及虛擬的頁碼,低位是偏移地址。虛擬地址到物理地址的轉(zhuǎn)換,其方法是虛擬地址的高位和TLB相應(yīng)單元中的地址空間標(biāo)志符和虛擬頁碼作比較,如果是匹配的,則該單元中的頁幀數(shù)作為實際物理地址的高位,而低位直接是虛擬地址的低位偏移地址,從而構(gòu)成所要的物理地址。具體的映射方法還有很多種,這里不一一舉例。
本發(fā)明的意義在于采用分立的指令/數(shù)據(jù)存儲器管理方式,根據(jù)指令碼流的復(fù)雜程度,選擇不同的存儲器空間配置,使指令地址轉(zhuǎn)換器里檢測到指令的命中率更高,減少存儲器訪問時間,從而提高了微處理器的性能。顯然,如果不考慮硬件的因素,緩存越大越好,但硬件是不能不考慮的,本發(fā)明公開的方法的優(yōu)點是在不增加硬件的基礎(chǔ)上提高了存儲器的訪問速度,從而提高了微處理器的性能。
現(xiàn)在將結(jié)合附圖更詳細(xì)的描述本發(fā)明所述的方法圖1是TLB地址轉(zhuǎn)換的流程圖;圖2是虛擬地址到物理地址的一種轉(zhuǎn)換方法示意圖;圖3是傳統(tǒng)的存儲器管理中JTLB和ITLB的配置方法示意圖;圖4-1及圖4-2是本發(fā)明所涉及的存儲器管理中JTLB和ITLB的幾種配置方式示意圖;圖5是以N=3為例說明可配置的JTLB和ITLB的硬件結(jié)構(gòu)。
具體實施例方式
本發(fā)明所描述的方法是根據(jù)指令碼流的密集程度來選擇存儲器空間的配置方式。如果當(dāng)前的指令碼流比較密集,則分配給指令地址轉(zhuǎn)換器多一些的存儲空間;如果當(dāng)前的指令碼流比較稀疏,而相應(yīng)存取數(shù)據(jù)的碼流比較密集時,則分配給指令地址轉(zhuǎn)換器相對少一些的空間,從而使聯(lián)合地址轉(zhuǎn)換器的空間大一些。
附圖1是微處理器的存儲器管理中TLB的地址轉(zhuǎn)換的流程圖。從輸入端進(jìn)入的是得到的指令或者數(shù)據(jù)的虛擬地址,先檢測該地址是否為有效的地址,若檢測的結(jié)果是合法有效的地址,則進(jìn)行下面的操作;若檢測的結(jié)果是不合法的地址,則出現(xiàn)地址錯誤的異常,進(jìn)入相應(yīng)的異常處理單元。檢測結(jié)果合法后,下面的操作是進(jìn)一步判斷判斷是否是映射的地址,若是映射的地址,則接著進(jìn)入下面的判斷單元;若不是映射的地址,則進(jìn)一步判斷是否是非緩存的,若是非緩存的,就要訪問主存儲器;若不是非緩存的,即是緩存的,就要訪問緩存單元?;氐角懊媸怯成涞牡刂窌r,下面進(jìn)一步的判斷是,判斷VPN(虛擬的頁碼數(shù))是否相匹配,若是相匹配的,同樣進(jìn)入下面的判斷;若虛擬的頁碼不相匹配,則需進(jìn)一步判斷地址是否是32位的(這里的32位是根據(jù)存儲器的位數(shù)來選擇的,若是64位的,則需判斷地址是否為64位的),如果判斷的結(jié)果是肯定的,就會出現(xiàn)TLB Miss的異常,調(diào)入相應(yīng)的異常處理程序;如果判斷的結(jié)果是否定的,同樣會出現(xiàn)異常,但異常的類型不同,是XTLB Miss,也要調(diào)入相應(yīng)的異常處理單元。在回到上面判斷虛擬的頁碼數(shù)相匹配時,再接著判斷是否為全局的,如果是全局的,則處理器就會在TLB查找時忽略地址空間標(biāo)志符的判斷,進(jìn)入下面的判斷;如果不是全局的,處理器不能忽略地址空間標(biāo)志符的判斷,若判斷的結(jié)果是標(biāo)志符不匹配,則同樣會進(jìn)入地址位數(shù)的判斷,從而會進(jìn)行上面同樣的操作,判斷出現(xiàn)哪種異常,調(diào)入相應(yīng)的異常處理程序。若地址空間標(biāo)志符是匹配的,則與全局判斷肯定時一樣,進(jìn)一步判斷是否有效,如果無效則出現(xiàn)TLB無效的異常,再次進(jìn)入異常處理單元;如果有效,再判斷dirty位是否置1,即是否可以寫入,如果不能寫,就會出現(xiàn)異常,如果可以寫,接著判斷是否是非緩存的,緩存中沒有的話,就訪問主存儲器;緩存中有的話,就直接訪問緩存。不管訪問主存儲器,還是訪問緩存器,都能得到輸出,即物理地址。
其中虛擬地址到物理地址的轉(zhuǎn)換,有多種方法,這里只選擇一種說明,附圖2從大體上簡單介紹了虛擬地址到物理地址的轉(zhuǎn)換方法,虛擬地址由三部分組成,高位是地址空間標(biāo)志符,以及虛擬的頁碼,低位是偏移地址。虛擬地址的高位會和TLB相應(yīng)單元中的地址空間標(biāo)志符和虛擬頁碼比較,如果是匹配的,則該單元中的頁幀數(shù)作為實際物理地址的高位,而低位直接是虛擬地址的低位偏移地址,從而構(gòu)成所要的物理地址。
本發(fā)明所述方法主要是TLB寄存器的空間分配,附圖3描述的是傳統(tǒng)的JTLB和ITLB的配置方法,其中JTLB是軟件可訪問的,既包括地址,又包括數(shù)據(jù),而ITLB是只包括指令的,且軟件不可訪問,它按照最近使用的運算法則來存放少數(shù)指令在緩存中。當(dāng)讀取到指令的虛擬地址時,按照前附面圖1的步驟判斷后,看是否在ITLB中存在與所取指令相匹配的指令,若有,則計算其實際地址輸出;若沒有相匹配的,則指令轉(zhuǎn)換器自動向聯(lián)合轉(zhuǎn)換器請求,如果聯(lián)合轉(zhuǎn)換器有相匹配的,則輸出給指令轉(zhuǎn)換器刷新;若聯(lián)合轉(zhuǎn)換器也沒有,則發(fā)生異常,異常處理會促使軟件從存儲器中的頁表取得相應(yīng)指令重寫入聯(lián)合地址轉(zhuǎn)換器,再由聯(lián)合地址轉(zhuǎn)換器輸出給指令轉(zhuǎn)換器,指令地址轉(zhuǎn)換器再按照一定的規(guī)則生成物理地址輸出。從上面的流程很容易看出,若指令地址轉(zhuǎn)換器的命中率高的話,就不需要經(jīng)常請求聯(lián)合地址轉(zhuǎn)換器,提高了存儲器的訪問速率,從而提高了微處理器的性能。
同樣,讀取到指令的虛擬地址后,在指令地址轉(zhuǎn)換器中尋找相匹配的指令,這里的指令地址轉(zhuǎn)換器的配置有幾種情況,本實例取N=3,即JTLB最多可分配三個單元給ITLB,則JTLB和ITLB的空間分配最多有四種方式,見附圖4-1和附圖4-2,一種是同傳統(tǒng)的配置相同的,聯(lián)合地址轉(zhuǎn)換器有32個單元,每個單元有奇偶兩頁,而指令地址轉(zhuǎn)換器只有兩個單元,每個單元也只有一頁;一種是聯(lián)合地址轉(zhuǎn)換器配置31個單元,通過軟件將第32個單元分配給指令地址轉(zhuǎn)換器,這樣指令地址轉(zhuǎn)換器就有4個單元;第三種配置方式是聯(lián)合地址轉(zhuǎn)換器只有30個單元,通過軟件將其他兩個單元配置給指令地址轉(zhuǎn)換器,則指令地址轉(zhuǎn)換器就有6個單元。第四種配置方式是聯(lián)合地址轉(zhuǎn)換器只有29個單元,通過軟件將其他兩個單元配置給指令地址轉(zhuǎn)換器,則指令地址轉(zhuǎn)換器就有8個單元。軟件調(diào)整的方法如附圖5所示,軟件通過調(diào)整數(shù)據(jù)選擇器MUX1,MUX2及MUX3的控制字,來選擇合適的配置。以MUX3為例,若MUX3選擇輸入為ITLB,則JTLB中第32個單元的奇偶兩個寄存器就分配給ITLB,即作為指令地址轉(zhuǎn)換器使用。從而實現(xiàn)了軟件可配置的存儲器空間。軟件根據(jù)指令碼流是否密集,選擇相應(yīng)的配置,如果指令碼流很密集,則采取第四種或第三種配置方式,這樣指令緩存器中存放的指令較多,指令被命中的機會就大,向聯(lián)合地址轉(zhuǎn)換器請求的次數(shù)會減少,存儲器訪問速率就高了;如果指令碼流的密集度較低,而數(shù)據(jù)讀取的比較頻繁,則聯(lián)合地址轉(zhuǎn)換器配置的空間就大一些,即采取第一種配置,于是指令和數(shù)據(jù)的命中率都能得到保證,存儲器訪問的速率也能得到保證;當(dāng)指令碼流和數(shù)據(jù)碼流的密集度都相當(dāng),且都不是很密集時,則采取第二種配置方式,以保證指令地址轉(zhuǎn)換器和聯(lián)合地址轉(zhuǎn)換器的命中率即指令和數(shù)據(jù)的命中率。之后是與上面同樣的操作,若命中則不用訪問存儲器空間,直接轉(zhuǎn)換成物理地址后輸出,若沒有命中則發(fā)生異常,請求刷新。顯然,如果不考慮硬件的因素,緩存越大越好,但硬件是不能不考慮的,本發(fā)明的優(yōu)點是在不增加硬件的基礎(chǔ)上提高了存儲器的訪問速度,從而提高了微處理器的性能。
權(quán)利要求
1.一種實現(xiàn)可配置RISC CPU中的存儲器空間的方法,該方法包括如下的步驟配置存儲器中聯(lián)合地址轉(zhuǎn)換器(JTLB)和指令地址轉(zhuǎn)換器(ITLB)的空間結(jié)構(gòu),在聯(lián)合地址轉(zhuǎn)換器中提供N個存儲空間單元,由軟件分配給指令地址轉(zhuǎn)換器;根據(jù)指令碼流的密集程度,采取不同的存儲器空間結(jié)構(gòu)存放指令及數(shù)據(jù),其中指令地址轉(zhuǎn)換器通過軟件配置為2+2n個單元的存儲器空間,聯(lián)合地址轉(zhuǎn)換器通過軟件配置為32-n個單元的存儲器空間。
2.根據(jù)權(quán)利要求1中所述的一種實現(xiàn)可配置RISC CPU中的存儲器空間的方法,其特征在于該方法包括如下的具體步驟步驟1傳統(tǒng)的聯(lián)合地址轉(zhuǎn)換器有32個單元的存儲空間,指令地址轉(zhuǎn)換器有2個單元的存儲空間,在這種結(jié)構(gòu)基礎(chǔ)上,將聯(lián)合地址轉(zhuǎn)換器的N個存儲單元在硬件上設(shè)計成可選擇的,即可以作為指令地址轉(zhuǎn)換器使用,也可以作為聯(lián)合地址轉(zhuǎn)換器使用;步驟2在步驟1將聯(lián)合地址轉(zhuǎn)換器的N個存儲單元在硬件上設(shè)計成可選擇的后,根據(jù)軟件所編寫的指令的密集程度,由軟件分配聯(lián)合地址轉(zhuǎn)換器的n個存儲單元給指令地址轉(zhuǎn)換器,則指令地址轉(zhuǎn)換器增加2n個存儲單元,存放的指令增加,處理器發(fā)出的指令的虛擬地址會送到此2+2n個單元中尋找相同的指令;步驟3當(dāng)指令地址轉(zhuǎn)換器中檢測到相同的指令時,進(jìn)行虛擬地址到物理地址的轉(zhuǎn)換;若沒有檢測到時,則出現(xiàn)TLB Miss的異常,指令地址轉(zhuǎn)換器會自動請求到聯(lián)合地址轉(zhuǎn)換器檢測,由于此時指令地址轉(zhuǎn)換器的空間增加,則出現(xiàn)TLBmiss的幾率減少,指令地址轉(zhuǎn)換器向聯(lián)合地址轉(zhuǎn)換器請求的次數(shù)也會相應(yīng)減少,提高了ITLB的命中率。
3.根據(jù)權(quán)利要求2所述方法步驟2中所述的由軟件分配聯(lián)合地址轉(zhuǎn)換器n個存儲單元給指令地址轉(zhuǎn)換器,其特征在于該軟件通過調(diào)整數(shù)據(jù)選擇器MUX1,MUX2及MUX3的控制字,來選擇合適的聯(lián)合地址轉(zhuǎn)換器的存儲單元的配置方式。
4.根據(jù)權(quán)利要求2所述方法步驟3中所述的當(dāng)指令地址轉(zhuǎn)換器中檢測到相同的指令時,進(jìn)行虛擬地址到物理地址的轉(zhuǎn)換,其特征在于其轉(zhuǎn)換方法是虛擬地址的高位和TLB相應(yīng)單元中的地址空間標(biāo)志符和虛擬頁碼作比較,如果是匹配的,則該單元中的頁幀數(shù)作為實際物理地址的高位,而低位直接是虛擬地址的低位偏移地址,從而構(gòu)成所要的物理地址。
5.根據(jù)權(quán)利要求1或2中所述的一種實現(xiàn)可配置RISC CPU中的存儲器空間的方法,其特征在于所述方法中的大寫字母N為0~3的整數(shù),小寫字母n為0~N的整數(shù)。
6.根據(jù)權(quán)利要求1所述的配置存儲器中聯(lián)合地址轉(zhuǎn)換器(JTLB)和指令地址轉(zhuǎn)換器(ITLB)的空間結(jié)構(gòu),其特征在該配置結(jié)構(gòu)中聯(lián)合地址轉(zhuǎn)換器(JTLB)和指令地址轉(zhuǎn)換器(ITLB)的存儲空間配置最多有n+1種分配結(jié)構(gòu)。
全文摘要
本發(fā)明針對當(dāng)指令碼流比較密集時,存儲器中指令地址轉(zhuǎn)換器(ITLB)向聯(lián)合地址轉(zhuǎn)換器(JTLB)發(fā)出更新請求,從而降低訪問存儲器速度的問題,公開了一種配置存儲器空間的方法。該方法通過配置聯(lián)合地址轉(zhuǎn)換器(JTLB)和指令地址轉(zhuǎn)換器(ITLB)所占的空間比例,在不增加硬件的情況下,可靈活增加ITLB的存儲空間,減小指令請求響應(yīng)的時間,從而加快了存儲器訪問的速度,提高了CPU的性能。
文檔編號G06F12/10GK101067801SQ20061003346
公開日2007年11月7日 申請日期2006年1月26日 優(yōu)先權(quán)日2006年1月26日
發(fā)明者常軍鋒, 劉俊秀, 王雅君, 阿拉德爾圖, 王一利, 徐衛(wèi)國, 周顯文, 石嶺, 劉云 申請人:深圳艾科創(chuàng)新微電子有限公司