亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種內(nèi)存訪問方法和裝置的制作方法

文檔序號(hào):6603673閱讀:175來源:國知局
專利名稱:一種內(nèi)存訪問方法和裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)技術(shù),特別涉及一種內(nèi)存訪問方法和裝置。
背景技術(shù)
在當(dāng)前的計(jì)算機(jī)系統(tǒng)特別是嵌入式系統(tǒng)當(dāng)中,硬件運(yùn)算能力的日益提高使得越來越多的系統(tǒng)功能得以實(shí)現(xiàn),而實(shí)現(xiàn)這些功能的軟件的規(guī)模也相應(yīng)的不斷增大,從而軟件的可執(zhí)行代碼的長度越來越長。對(duì)于傳統(tǒng)的尋址范圍為2M字節(jié)的中央處理器(CPU),M為正整數(shù),CPU在內(nèi)存 (RAM)空間中的一次尋址范圍為2M字節(jié),從而每次能夠被執(zhí)行的可執(zhí)行代碼的最大長度也為2M字節(jié)。顯然,若可執(zhí)行代碼的長度超過該尋址范圍時(shí),即使可執(zhí)行代碼能夠全部保存在RAM空間當(dāng)中,CPU也無法一次性全部執(zhí)行。這時(shí),傳統(tǒng)的解決方法是采用軟件方式的分頁(BankSwitch)模式來控制每次執(zhí)行的可行代碼片段——將保存全部可執(zhí)行代碼的RAM 空間進(jìn)行分頁,CPU每次選取其中一頁進(jìn)行執(zhí)行且各頁之間的地址復(fù)用;同時(shí),由于每頁的可執(zhí)行代碼并非功能上完整的單元,從而在可執(zhí)行代碼的執(zhí)行過程中不可避免的需要在各頁之間進(jìn)行切換,因此,還需要設(shè)置進(jìn)行分頁切換的代碼(通常稱為Bank切換代碼)來實(shí)現(xiàn)各分頁之間的切換。下面通過一個(gè)具體示例來對(duì)所述Bank Switch模式進(jìn)行詳細(xì)說明,BankSwitch模式下可執(zhí)行代碼在RAM中的存儲(chǔ)方式如圖1所示,假設(shè)此時(shí)的RAM空間(通常也稱為程序空間)為223字節(jié),將其等分成1 個(gè)bank (頁面),每一個(gè)頁面的大小為216字節(jié)其中,可執(zhí)行代碼共分為1 頁(其編號(hào)為bank 0 bank 127),各頁的地址復(fù)用——其起始地址大于等于0x0000,小于Oxffff (稱為bank baseaddress),結(jié)束地址為 OxFFFF,通常將該地址空間稱為頁空間;在任一時(shí)刻,僅有一個(gè)頁面中保存的可執(zhí)行代碼處于執(zhí)行狀態(tài),通常稱該頁面為處于激活狀態(tài)的頁面——即,CPU在同一時(shí)間點(diǎn)上僅執(zhí)行處于激活狀態(tài)的頁面中保存的可執(zhí)行代碼;同時(shí),所述地址復(fù)用的含義為處于激活狀態(tài)的頁面i (i = 0、1. . . η,η彡127)的物理地址空間為所述的bank base address FFFF, 而未處于激活狀態(tài)的其它各頁面則未被分配地址;另一方面,物理地址空間0000 bank base address稱為共用段,該地址空間用于存儲(chǔ)所述可執(zhí)行代碼中那些基本的、全局性的代碼——例如用于變量初始化的代碼、中斷服務(wù)代碼以及用于進(jìn)行分頁切換的頁面切換代碼等。在這種情況下,如果當(dāng)前處于激活狀態(tài)的頁面中的可執(zhí)行代碼執(zhí)行過程中,需要調(diào)用位于其它頁面的代碼,就必須要在不同的頁面間進(jìn)行切換,因此每一個(gè)這種用于進(jìn)行頁面切換的頁面切換代碼都需要存儲(chǔ)在RAM的根空間中。隨著代碼的頁面數(shù)量的增多(即 i值越大),相應(yīng)產(chǎn)生的頁面切換代碼的數(shù)量就越多,從而所有頁面切換代碼在根空間中占用的空間就越大。通常,每個(gè)用于進(jìn)行頁面切換的頁面切換代碼的大小約為32 48字節(jié), 而一個(gè)正常尺寸的軟件需要的頁面切換代碼的數(shù)量至少為上百個(gè),這就會(huì)使得RAM根空間中存儲(chǔ)的頁面切換代碼增大到4KB以上,而對(duì)于目前集成電路中的RAM來說,使用4KB字節(jié)或以上的空間只是用來完成頁面切換的功能顯然是不能接受的,因?yàn)镽AM空間數(shù)量有限且成本很高,這種方式會(huì)導(dǎo)致大量RAM空間被占用而無法反復(fù)利用。

發(fā)明內(nèi)容
本發(fā)明的主要目的在于提供一種內(nèi)存訪問方法和裝置,能夠減小對(duì)RAM空間的需要,提高RAM空間利用效率,降低程序編寫和調(diào)試的復(fù)雜程度。為達(dá)到上述目的,本發(fā)明的技術(shù)方案具體是這樣實(shí)現(xiàn)的一種內(nèi)存訪問方法,該方法包括步驟A、通過預(yù)設(shè)的硬件檢測電路判斷CPU將要訪問的數(shù)據(jù)或指令與CPU當(dāng)前正在訪問的數(shù)據(jù)或指令是否在同一頁面,如果不在同一頁面,觸發(fā)CPU的頁面切換機(jī)制,并同時(shí)記錄發(fā)現(xiàn)頁面不匹配時(shí)的程序計(jì)數(shù)器的值;步驟B、CPU進(jìn)行頁面切換時(shí),保存將要訪問的數(shù)據(jù)或指令所在的頁面號(hào)碼至頁面寄存器中,開始執(zhí)行頁面切換處理程序,所述頁面切換處理程序包括根據(jù)記錄的不匹配地址設(shè)置返回現(xiàn)場使用的程序指針,從外部存儲(chǔ)器中將將要訪問的數(shù)據(jù)或指令更新到程序 RAM當(dāng)中,并將當(dāng)前頁面寄存器的值更新為保存的頁面號(hào)碼;步驟C、結(jié)束頁面切換處理程序,將程序計(jì)數(shù)器的值修改回記錄的所述發(fā)現(xiàn)頁面不匹配時(shí)的程序計(jì)數(shù)器的值,并返回繼續(xù)執(zhí)行步驟A。所述判斷CPU將要訪問的數(shù)據(jù)或指令與CPU當(dāng)前正在訪問的數(shù)據(jù)或指令是否在同一頁面的方法包括將CPU訪問的地址空間等分成2N個(gè)頁面,N為大于0的整數(shù)且N小于CPU的尋址的位寬M,M為大于0的整數(shù),其中,M的高N位表示頁面號(hào)碼,低(M-N)位為頁面內(nèi)的地址;判斷程序計(jì)數(shù)器的高N位與當(dāng)前頁面寄存器的值是否相同,所述當(dāng)前頁面寄存器的值表示CPU當(dāng)前訪問的數(shù)據(jù)或指令所在的頁面號(hào)碼;如果相同,則所述CPU將要訪問的數(shù)據(jù)或指令與當(dāng)前正在訪問的數(shù)據(jù)或指令在同一頁面;如果不同,則不在同一頁面。若CPU采用直接取指的方式訪問程序空間,所述觸發(fā)CPU的頁面切換機(jī)制的方法包括硬件檢測電路將頁面切換指令作為CPU的預(yù)取指令送入CPU,當(dāng)CPU執(zhí)行到該指令時(shí)產(chǎn)生進(jìn)行頁面切換的控制信號(hào),開始頁面切換。所述CPU進(jìn)行頁面切換時(shí),保存將要訪問的數(shù)據(jù)或指令所在的頁面號(hào)碼,開始執(zhí)行頁面切換處理程序;根據(jù)記錄的不匹配地址設(shè)置返回現(xiàn)場使用的程序指針,從外部存儲(chǔ)器中將將要訪問的指令更新到程序RAM當(dāng)中,并將當(dāng)前頁面寄存器的值更新為保存的頁面號(hào)碼的方法包括CPU將當(dāng)前的程序計(jì)數(shù)器壓入堆棧,并將此時(shí)程序計(jì)數(shù)器的高N位所表示的頁面號(hào)作為新頁面號(hào)進(jìn)行保存;之后,準(zhǔn)備執(zhí)行頁面切換處理程序;將堆棧中程序計(jì)數(shù)器的取值修改為不匹配地址,作為返回現(xiàn)場使用的程序指針, 從外部存儲(chǔ)器中將將要取指的代碼更新到程序RAM當(dāng)中,并將當(dāng)前頁面寄存器的值更新為所述保存的新頁面號(hào)。若CPU通過寄存器間接尋址的方式訪問程序空間和數(shù)據(jù)空間,所述觸發(fā)CPU的頁面切換機(jī)制的方法包括硬件檢測電路直接向CPU發(fā)送進(jìn)行頁面切換的控制信號(hào)。所述CPU進(jìn)行頁面切換時(shí),保存CPU將要訪問的數(shù)據(jù)或指令所在的頁面號(hào)碼,開始執(zhí)行頁面切換處理程序;根據(jù)記錄的不匹配地址設(shè)置返回現(xiàn)場使用的程序指針,從外部存儲(chǔ)器中將將要訪問的數(shù)據(jù)或指令更新到程序RAM當(dāng)中,并將當(dāng)前頁面寄存器的值更新為保存的頁面號(hào)碼的方法包括CPU接到硬件檢測電路發(fā)送的控制信號(hào)后,取消當(dāng)前指令的執(zhí)行并保存當(dāng)前指令的PC的取值;將當(dāng)前指令的PC修改為頁面切換處理程序所在的起始地址,并將送往地址總線的訪問信號(hào)無效掉;之后,準(zhǔn)備執(zhí)行頁面切換處理程序;將取值等于不匹配地址的PC壓入堆棧作為返回現(xiàn)場使用的程序指針,從外部存儲(chǔ)器中將將要訪問的數(shù)據(jù)或指令更新到程序RAM當(dāng)中,并將當(dāng)前頁面寄存器的值更新為所述將要訪問的數(shù)據(jù)或指令所在頁面的頁面號(hào)碼。所述頁面切換處理程序常駐內(nèi)存且放置在程序空間默認(rèn)頁面的公用段當(dāng)中,供 CPU在需要的時(shí)候隨時(shí)調(diào)用。一種內(nèi)存訪問裝置,該裝置包括硬件檢測電路,用于判斷CPU將要訪問的數(shù)據(jù)或指令與CPU當(dāng)前正在訪問的數(shù)據(jù)或指令是否在同一頁面,如果不在同一頁面,觸發(fā)CPU的頁面切換機(jī)制,并同時(shí)記錄發(fā)現(xiàn)頁面不匹配時(shí)的程序計(jì)數(shù)器的值;CPU,用于在進(jìn)行頁面切換時(shí),保存將要訪問的數(shù)據(jù)或指令所在的頁面號(hào)碼至頁面寄存器中,開始執(zhí)行頁面切換處理程序,所述頁面切換處理程序包括根據(jù)記錄的不匹配地址設(shè)置返回現(xiàn)場使用的程序指針,從外部存儲(chǔ)器中將將要訪問的數(shù)據(jù)或指令更新到程序RAM當(dāng)中,并將當(dāng)前頁面寄存器的值更新為保存的頁面號(hào)碼;之后,結(jié)束頁面切換處理程序,將程序計(jì)數(shù)器的值修改回記錄的所述發(fā)現(xiàn)頁面不匹配時(shí)的程序計(jì)數(shù)器的值,并通知所述硬件檢測電路繼續(xù)進(jìn)行判斷。所述硬件檢測電路包括判斷單元,用于將CPU訪問的地址空間等分成頁面,N為大于0的整數(shù)且N小于CPU的尋址的位寬M,M為大于0的整數(shù),其中,M的高N位表示頁面號(hào)碼,低(M-N)位為頁面內(nèi)的地址;判斷程序計(jì)數(shù)器的高N位與當(dāng)前頁面寄存器的值是否相同,所述當(dāng)前頁面寄存器的值表示CPU當(dāng)前訪問的數(shù)據(jù)或指令所在的頁面號(hào)碼;如果相同,則所述CPU將要訪問的數(shù)據(jù)或指令與當(dāng)前正在訪問的數(shù)據(jù)或指令在同一頁面;如果不同,則不在同一頁面。所述硬件檢測電路還包括頁面切換觸發(fā)單元,用于在CPU采用直接取指的方式訪問程序空間時(shí),將頁面切換指令作為CPU的預(yù)取指令送入CPU,當(dāng)CPU執(zhí)行到該指令時(shí)產(chǎn)生進(jìn)行頁面切換的控制信號(hào),開始頁面切換;還用于在CPU通過寄存器間接尋址的方式訪問程序空間和數(shù)據(jù)空間時(shí), 直接向CPU發(fā)送進(jìn)行頁面切換的控制信號(hào)。所述CPU包括頁面切換執(zhí)行單元,用于在當(dāng)CPU采用直接取指的方式訪問程序空間時(shí),將當(dāng)前的程序計(jì)數(shù)器壓入堆棧,并將此時(shí)程序計(jì)數(shù)器的高N位所表示的頁面號(hào)作為新頁面號(hào)進(jìn)行保存;之后,準(zhǔn)備執(zhí)行頁面切換處理程序;將堆棧中程序計(jì)數(shù)器的取值修改為不匹配地址, 作為返回現(xiàn)場使用的程序指針,從外部存儲(chǔ)器中將將要取指的代碼更新到程序RAM當(dāng)中,并將當(dāng)前頁面寄存器的值更新為所述保存的新頁面號(hào);還用于在當(dāng)CPU通過寄存器間接尋址的方式訪問程序空間和數(shù)據(jù)空間時(shí),接收硬件檢測電路發(fā)送的控制信號(hào),取消當(dāng)前指令的執(zhí)行并保存當(dāng)前指令的PC的取值;將當(dāng)前指令的PC修改為頁面切換處理程序所在的起始地址,并將送往地址總線的訪問信號(hào)無效掉;之后,準(zhǔn)備執(zhí)行頁面切換處理程序;將取值等于不匹配地址的PC壓入堆棧作為返回現(xiàn)場使用的程序指針,從外部存儲(chǔ)器中將將要訪問的數(shù)據(jù)或指令更新到程序RAM當(dāng)中,并將當(dāng)前頁面寄存器的值更新為所述將要訪問的數(shù)據(jù)或指令所在頁面的頁面號(hào)碼;返回單元,用于在頁面切換處理程序結(jié)束后,將程序計(jì)數(shù)器的值修改回記錄的發(fā)現(xiàn)頁面不匹配時(shí)的程序計(jì)數(shù)器的值,并通知所述硬件檢測電路繼續(xù)進(jìn)行判斷。由上述的技術(shù)方案可見,本發(fā)明提供的內(nèi)存訪問方法和裝置,通過在需要頁面切換的時(shí)候首先記錄用于在頁面切換完成后返回現(xiàn)場的地址,而在頁面切換過程中則將將要訪問的數(shù)據(jù)或指令更新到程序RAM當(dāng)中,并將當(dāng)前頁面寄存器的值更新為所述將要訪問的數(shù)據(jù)或指令所在頁面的頁面號(hào)碼,最后再利用記錄的地址返回現(xiàn)場,能夠有效避免現(xiàn)有技術(shù)中對(duì)每一次頁面切換都需要分別設(shè)置切換代碼的問題,減小了頁面切換代碼的大小,降低了對(duì)RAM大小的要求,同時(shí)由于對(duì)各種頁面切換提供了統(tǒng)一的接口,使得軟件設(shè)計(jì)人員可以不必關(guān)心頁面切換的具體實(shí)現(xiàn)細(xì)節(jié),從而顯著降低了程序的編寫設(shè)計(jì)難度和調(diào)試復(fù)雜度。


圖1為現(xiàn)有技術(shù)中Bank Switch模式下可執(zhí)行代碼在RAM中的存儲(chǔ)方式示意圖。圖2為本發(fā)明實(shí)施例中內(nèi)存訪問方法的流程示意圖。圖3為本發(fā)明實(shí)施例中內(nèi)存訪問裝置的組成結(jié)構(gòu)示意圖。
具體實(shí)施例方式為使本發(fā)明的目的、技術(shù)方案、及優(yōu)點(diǎn)更加清楚明白,以下參照附圖并舉實(shí)施例, 對(duì)本發(fā)明進(jìn)一步詳細(xì)說明。為了便于說明,下面以支持8M字節(jié)的程序空間和8M字節(jié)的數(shù)據(jù)空間的CPU為例, 其中,數(shù)據(jù)空間的地址范圍是00 OOOOh 7f ffffh,程序空間的地址范圍是80 OOOOh FF:FFFFH,把地址范圍從00:0000h FF:FFFFH的空間等分成256個(gè)大小為64KB的頁面, 其中頁面號(hào)碼為Offh的頁面,其對(duì)應(yīng)的地址范圍是OffOOOOh Offffffh,可以看出,該頁面剛好是程序空間中的最后一頁。對(duì)于程序空間而言,CPU當(dāng)前使用的頁面稱之為程序RAM,為了標(biāo)識(shí)程序RAM在程序空間中的位置,可以通過定義程序RAM的頁面號(hào)碼來實(shí)現(xiàn),其默認(rèn)值通常設(shè)置為FFh;另一方面,為了對(duì)當(dāng)前在程序RAM中執(zhí)行的可執(zhí)行代碼或?qū)Ξ?dāng)前在程序RAM中使用的數(shù)據(jù)所在的原始頁面進(jìn)行標(biāo)識(shí),可以通過定義當(dāng)前頁面寄存器來實(shí)現(xiàn),所述當(dāng)前頁面寄存器的值表示的就是當(dāng)前在程序RAM中執(zhí)行的可執(zhí)行代碼所在的原始頁面的頁面號(hào)碼,其默認(rèn)值通常同樣設(shè)置為FFh;或者,所述當(dāng)前頁面寄存器的值表示的是當(dāng)前在程序RAM中使用的數(shù)據(jù)所在的原始頁面的頁面號(hào)碼,其默認(rèn)值則通常設(shè)置為OOh ;當(dāng)系統(tǒng)上電或復(fù)位時(shí),程序RAM加載芯片外部存儲(chǔ)器中的程序,為了保證系統(tǒng)能夠正常運(yùn)行,此時(shí)所述程序RAM的當(dāng)前頁面寄存器的默認(rèn)值對(duì)應(yīng)的頁面中需要存儲(chǔ)至少包括那些不需要進(jìn)行頁面切換的程序,包括系統(tǒng)中基本的、全局性的代碼——例如用于變量初始化的代碼、中斷服務(wù)代碼,通常將其統(tǒng)稱為公共代碼或公共程序。在本發(fā)明實(shí)施例中, 為了便于說明,假設(shè)所述第一部分的公用程序放置在FFh頁面,因此需要將所述程序RAM的默認(rèn)頁面號(hào)設(shè)置為FFh,以保證程序RAM能夠加載這些公用程序開始正常工作,同時(shí),程序 RAM的當(dāng)前頁面寄存器的默認(rèn)值也設(shè)置為FFh,因?yàn)榇藭r(shí)程序RAM中執(zhí)行的可執(zhí)行代碼所在的原始頁面同樣為FFh。根據(jù)上述描述容易理解,所述程序RAM的默認(rèn)頁面號(hào)和當(dāng)前頁面寄存器的默認(rèn)值還可以根據(jù)系統(tǒng)或設(shè)計(jì)者的要求進(jìn)行修改,并不一定必須設(shè)置為Fi^h。當(dāng)CPU開始正常工作后,其通過M位的地址總線對(duì)程序/數(shù)據(jù)空間進(jìn)行訪問,該 M位的地址總線的取值由CPU使用的程序計(jì)數(shù)器(ProgramCoimter,PC)確定,其中,所述 M位地址線的高8位表示的是CPU將要訪問的數(shù)據(jù)或指令(即下一時(shí)刻將要訪問的數(shù)據(jù)或指令)所在的頁面號(hào)碼,而根據(jù)前文所述,當(dāng)前頁面寄存器的值(同樣也是8位)表示的則是CPU當(dāng)前訪問的數(shù)據(jù)或指令所在的頁面號(hào)碼。當(dāng)CPU訪問數(shù)據(jù)或指令時(shí),需要判斷其將要訪問的數(shù)據(jù)或指令與CPU當(dāng)前正在訪問的數(shù)據(jù)或指令是否在同一頁面。顯然,當(dāng)所述 PC的高8位與當(dāng)前頁面寄存器的值相同時(shí),表示CPU將要訪問的數(shù)據(jù)或指令所在的頁面與當(dāng)前頁面相同——即CPU將要訪問的數(shù)據(jù)或指令位于當(dāng)前頁面;而當(dāng)所述PC的高8位與當(dāng)前頁面寄存器的值不同時(shí),則表示CPU將要訪問的數(shù)據(jù)或指令所在的頁面與當(dāng)前頁面不同——即CPU將要訪問的數(shù)據(jù)或指令并不位于當(dāng)前頁面。當(dāng)CPU將要訪問的指令位于當(dāng)前頁面時(shí),表示CPU將要訪問的是公共代碼/公共程序,或者CPU將要訪問的代碼本身就位于FFh頁面;相關(guān)問題不屬于本發(fā)明討論的范疇, 不再詳細(xì)分析;而當(dāng)CPU將要訪問的數(shù)據(jù)或指令不在當(dāng)前頁面時(shí),意味著此時(shí)需要進(jìn)行頁面切換——即,需要將CPU將要訪問的數(shù)據(jù)或指令更新到程序RAM當(dāng)中。由于CPU可以通過直接取指的方式訪問程序空間,也可以通過寄存器間接尋址的方式訪問程序空間和數(shù)據(jù)空間,且兩種方式下工作過程存在一定的差異,因此下面將分別詳細(xì)進(jìn)行介紹A、若CPU通過直接取指的方式訪問程序空間,且需要頁面切換時(shí);此時(shí),當(dāng)所述PC的高8位與當(dāng)前頁面寄存器的值不同時(shí),CPU的指令不再從程序 RAM中獲得,而是通過預(yù)先設(shè)計(jì)的硬件觸發(fā)電路直接送給CPU —個(gè)觸發(fā)其進(jìn)行頁面切換的控制指令,用于使CPU跳轉(zhuǎn)到頁面切換處理程序的起始地址處,具體實(shí)現(xiàn)時(shí)可以是類似軟件中斷的控制指令或者類似程序調(diào)用的控制指令,兩者的區(qū)別是類似軟件中斷的指令會(huì)使CPU進(jìn)入中斷響應(yīng),中斷響應(yīng)時(shí)硬件將會(huì)自動(dòng)完成對(duì)當(dāng)前PC的壓棧,然后再跳轉(zhuǎn)到頁面切換處理程序的起始地址處;而類似程序調(diào)用的指令則會(huì)使CPU進(jìn)入程序調(diào)用,該過程中需要通過人為設(shè)定來使硬件完成對(duì)當(dāng)前PC的壓棧,然后再跳轉(zhuǎn)到頁面切換處理程序的起始地址。根據(jù)CPU的工作原理,由于CPU通常采用預(yù)取指令的方式進(jìn)行工作,因此,當(dāng)所述硬件觸發(fā)電路將頁面切換指令送入CPU之后,該指令通常并不會(huì)立即被執(zhí)行,而是作為預(yù)取指令在CPU緩存中進(jìn)行排隊(duì);而由于CPU的預(yù)取方式,有時(shí)已經(jīng)取入CPU的指令會(huì)因?yàn)?CPU執(zhí)行之前的指令而發(fā)生跳轉(zhuǎn),導(dǎo)致之后的預(yù)取指令沒有被執(zhí)行,因此只有當(dāng)該頁面切換指令實(shí)際被CPU執(zhí)行到的時(shí)候,才真正開始頁面切換的流程。當(dāng)CPU執(zhí)行到頁面切換指令時(shí),產(chǎn)生進(jìn)行頁面切換的控制信號(hào),首先將當(dāng)前的PC壓入堆棧,并將此時(shí)PC高8位所表示的頁面號(hào)作為新頁面號(hào)進(jìn)行保存;之后,將跳轉(zhuǎn)到頁面切換代碼的入口處準(zhǔn)備執(zhí)行頁面切換處理程序;需要說明的是,此時(shí)的PC值應(yīng)當(dāng)?shù)扔陧撁媲袚Q處理程序起始處的地址;此外,所述的頁面切換處理程序是本發(fā)明實(shí)施例預(yù)先設(shè)定的用于進(jìn)行頁面切換的一段代碼指令,該代碼指令同時(shí)還是不需要進(jìn)行頁面切換就能夠執(zhí)行的公共代碼,其既可以固化在芯片ROM 中供CPU在需要的時(shí)候隨時(shí)進(jìn)行調(diào)用,也可以放置在FF頁面的公用段——即,其程序入口可以靈活地由設(shè)計(jì)者根據(jù)需要自由定義。接下來,CPU開始執(zhí)行頁面切換處理程序,需要說明的是,由于所述頁面切換處理程序是通過中斷指令或程序調(diào)用指令跳轉(zhuǎn)進(jìn)行執(zhí)行的一段代碼,因此為了保證在執(zhí)行完所述處理程序后能夠順利返回CPU出現(xiàn)跳轉(zhuǎn)的位置(該位置由開始執(zhí)行頁面切換處理程序時(shí)的PC值確定,為了便于描述,下文中將該位置稱為不匹配地址)繼續(xù)后續(xù)流程,就需要在觸發(fā)CPU進(jìn)行頁面切換時(shí)記錄下此時(shí)的不匹配地址,因此,執(zhí)行頁面切換處理程序的流程包括將堆棧中的PC的取值修改為不匹配地址;此時(shí),PC的取值表示的是執(zhí)行完頁面切換處理流程后返回的地址;從外部存儲(chǔ)器中將將要取指的代碼更新到程序RAM當(dāng)中,并將當(dāng)前頁面寄存器的值更新為所述保存的新頁面號(hào);結(jié)束頁面切換處理程序,按照PC的取值返回到所述不匹配地址,CPU繼續(xù)執(zhí)行所述判斷其將要訪問的數(shù)據(jù)或指令與當(dāng)前正在訪問的數(shù)據(jù)或指令是否在同一頁面的步驟。顯然,由于此時(shí)CPU將要訪問的代碼已經(jīng)更新到程序RAM當(dāng)中,且當(dāng)前頁面寄存器的值也已經(jīng)更新為所述將要取指的代碼所在頁面的頁面號(hào)碼,因此此時(shí)PC高8位的值與當(dāng)前頁面寄存器的值必定相同——即,需要的頁面切換已經(jīng)成功完成。B、若CPU通過寄存器間接尋址的方式訪問程序空間和數(shù)據(jù)空間,且需要頁面切換時(shí);此時(shí),當(dāng)所述PC的高8位與當(dāng)前頁面寄存器的值不同時(shí),CPU的指令和數(shù)據(jù)不再從程序RAM中獲得,而是通過預(yù)先設(shè)計(jì)的硬件觸發(fā)電路直接送給CPU —個(gè)觸發(fā)其進(jìn)行頁面切換的控制信號(hào)來將CPU當(dāng)前執(zhí)行的指令取消并切換到頁面切換處理程序的入口位置處; 因此,當(dāng)CPU接到進(jìn)行頁面切換的控制信號(hào)后,首先取消當(dāng)前指令的執(zhí)行,之后,一方面,將當(dāng)前指令(即所述被取消執(zhí)行的指令)的PC的取值進(jìn)行保存;另一方面,將當(dāng)前指令的PC 修改為頁面切換處理程序的起始地址,再將送往總線的訪問信號(hào)無效掉,準(zhǔn)備執(zhí)行頁面切換處理程序;接下來,CPU開始執(zhí)行頁面切換處理程序,與前文所述相同,為了保證在執(zhí)行完所述處理程序后能夠順利返回以繼續(xù)后續(xù)流程,需要在觸發(fā)CPU進(jìn)行頁面切換時(shí)記錄下此時(shí)的不匹配地址(也就是被取消執(zhí)行的指令所在的地址),因此,此時(shí)執(zhí)行頁面切換處理程序的流程包括將表示返回地址的PC壓入堆棧,且PC的取值等于不匹配地址;從外部存儲(chǔ)器中將將要訪問的數(shù)據(jù)或指令更新到程序RAM當(dāng)中,并將當(dāng)前頁面寄存器的值更新為所述將要訪問的數(shù)據(jù)或指令所在頁面的頁面號(hào)碼,容易理解,此時(shí)可以根據(jù)保存的當(dāng)前指令的PC的高 8位獲得更新后的當(dāng)前頁面寄存器的取值;
最后,結(jié)束頁面切換處理程序,按照堆棧中PC的取值返回到頁面切換處理程序開始前的地址(即所述不匹配地址),CPU重新執(zhí)行被取消的指令,并進(jìn)行所述判斷其將要訪問的數(shù)據(jù)或指令與當(dāng)前正在訪問的數(shù)據(jù)或指令是否在同一頁面的步驟。顯然,由于此時(shí)CPU將要訪問的代碼已經(jīng)更新到程序RAM當(dāng)中,且當(dāng)前頁面寄存器的值也已經(jīng)更新為所述將要訪問的數(shù)據(jù)或指令所在頁面的頁面號(hào)碼,因此此時(shí)PC高8位的值與當(dāng)前頁面寄存器的值必定相同——即,需要的頁面切換已經(jīng)成功完成。在上述說明的基礎(chǔ)上,本發(fā)明實(shí)施例提供一種內(nèi)存訪問方法,其流程如圖2所示, 其中包括步驟201 通過預(yù)設(shè)的硬件檢測電路判斷CPU將要訪問的數(shù)據(jù)或指令與CPU當(dāng)前正在訪問的數(shù)據(jù)或指令是否在同一頁面,如果不在同一頁面,觸發(fā)CPU的頁面切換機(jī)制,并同時(shí)記錄發(fā)現(xiàn)頁面不匹配時(shí)的程序計(jì)數(shù)器的值;步驟202 :CPU進(jìn)行頁面切換時(shí),保存將要訪問的數(shù)據(jù)或指令所在的頁面號(hào)碼,開始執(zhí)行頁面切換處理程序;步驟203 根據(jù)記錄的不匹配地址設(shè)置返回現(xiàn)場使用的程序指針,從外部存儲(chǔ)器中將將要訪問的數(shù)據(jù)或指令更新到程序RAM當(dāng)中,并將當(dāng)前頁面寄存器的值更新為保存的頁面號(hào)碼;步驟204 結(jié)束頁面切換處理程序,將程序計(jì)數(shù)器的值修改回記錄的所述發(fā)現(xiàn)頁面不匹配時(shí)的程序計(jì)數(shù)器的值,并返回繼續(xù)執(zhí)行步驟201。其中,步驟201中所述判斷CPU將要訪問的數(shù)據(jù)或指令與CPU當(dāng)前正在訪問的數(shù)據(jù)或指令是否在同一頁面的方法包括判斷程序計(jì)數(shù)器的高8位與當(dāng)前頁面寄存器的值是否相同,所述當(dāng)前頁面寄存器的值表示CPU當(dāng)前訪問的數(shù)據(jù)或指令所在的頁面號(hào)碼;如果相同,則所述CPU將要訪問的數(shù)據(jù)或指令與當(dāng)前正在訪問的數(shù)據(jù)或指令在同一頁面;如果不同,則不在同一頁面。根據(jù)前文中A部分的說明,當(dāng)CPU采用直接取指的方式訪問程序空間時(shí),所述觸發(fā) CPU的頁面切換機(jī)制的方法包括硬件檢測電路將頁面切換指令作為CPU的預(yù)取指令送入CPU,當(dāng)CPU執(zhí)行到該指令時(shí)產(chǎn)生進(jìn)行頁面切換的控制信號(hào),開始頁面切換;相應(yīng)地,此時(shí)所述步驟202 203的方法具體包括CPU將當(dāng)前的程序計(jì)數(shù)器壓入堆棧,并將此時(shí)程序計(jì)數(shù)器的高8位所表示的頁面號(hào)作為新頁面號(hào)進(jìn)行保存;之后,準(zhǔn)備執(zhí)行頁面切換處理程序;將堆棧中程序計(jì)數(shù)器的取值修改為不匹配地址,作為返回現(xiàn)場使用的程序指針, 從外部存儲(chǔ)器中將將要取指的代碼更新到程序RAM當(dāng)中,并將當(dāng)前頁面寄存器的值更新為所述保存的新頁面號(hào)。此外,根據(jù)前文中B部分的說明,若CPU采用通過寄存器間接尋址的方式訪問程序空間和數(shù)據(jù)空間時(shí),所述觸發(fā)CPU的頁面切換機(jī)制的方法則為硬件檢測電路直接向CPU發(fā)送進(jìn)行頁面切換的控制信號(hào);此時(shí),所述步驟202 203的方法則具體包括CPU接到進(jìn)行頁面切換的控制信號(hào)后,取消當(dāng)前指令的執(zhí)行并保存當(dāng)前指令的PC的取值;將當(dāng)前指令的PC修改為頁面切換處理程序所在的起始地址,并將送往地址總線的訪問信號(hào)無效掉;之后,準(zhǔn)備執(zhí)行頁面切換處理程序;將取值等于不匹配地址的PC壓入堆棧作為返回現(xiàn)場使用的程序指針,從外部存儲(chǔ)器中將將要訪問的數(shù)據(jù)或指令更新到程序RAM當(dāng)中,并將當(dāng)前頁面寄存器的值更新為所述將要訪問的數(shù)據(jù)或指令所在頁面的頁面號(hào)碼。此外,與所述內(nèi)存訪問方法對(duì)應(yīng),本發(fā)明實(shí)施例還提供一種內(nèi)存訪問裝置,該裝置的組成結(jié)構(gòu)如圖3所示,其中包括硬件檢測電路310和CPU320 ; 硬件檢測電路310,用于判斷CPU320將要訪問的數(shù)據(jù)或指令與CPU320當(dāng)前正在訪問的數(shù)據(jù)或指令是否在同一頁面,如果不在同一頁面,觸發(fā)CPU320的頁面切換機(jī)制,并同時(shí)記錄發(fā)現(xiàn)頁面不匹配時(shí)的程序計(jì)數(shù)器的值;CPU320,用于在進(jìn)行頁面切換時(shí),保存將要訪問的數(shù)據(jù)或指令所在的頁面號(hào)碼至頁面寄存器中,開始執(zhí)行頁面切換處理程序,所述頁面切換處理程序包括根據(jù)記錄的不匹配地址設(shè)置返回現(xiàn)場使用的程序指針,從外部存儲(chǔ)器中將將要訪問的數(shù)據(jù)或指令更新到程序RAM當(dāng)中,并將當(dāng)前頁面寄存器的值更新為保存的頁面號(hào)碼;之后,結(jié)束頁面切換處理程序,將程序計(jì)數(shù)器的值修改回記錄的發(fā)現(xiàn)頁面不匹配時(shí)的程序計(jì)數(shù)器的值,并通知所述硬件檢測電路310繼續(xù)進(jìn)行判斷。其中,所述硬件檢測電路310包括判斷單元311,用于將CPU320訪問的地址空間等分成2N個(gè)頁面,N為大于0的整數(shù)且N小于CPU320的尋址的位寬M,M為大于0的整數(shù),其中,M的高N位表示頁面號(hào)碼,低 (M-N)位為頁面內(nèi)的地址;判斷程序計(jì)數(shù)器的高N位與當(dāng)前頁面寄存器的值是否相同,所述當(dāng)前頁面寄存器的值表示CPU320當(dāng)前訪問的數(shù)據(jù)或指令所在的頁面號(hào)碼;如果相同,則所述CPU320將要訪問的數(shù)據(jù)或指令與當(dāng)前正在訪問的數(shù)據(jù)或指令在同一頁面;如果不同,則不在同一頁面。較佳地,所述硬件檢測電路310還進(jìn)一步包括頁面切換觸發(fā)單元312,用于在CPU320采用直接取指的方式訪問程序空間時(shí),將頁面切換指令作為CPU320的預(yù)取指令送入CPU320,當(dāng)CPU320執(zhí)行到該指令時(shí)產(chǎn)生進(jìn)行頁面切換的控制信號(hào),開始頁面切換;還用于在CPU320通過寄存器間接尋址的方式訪問程序空間和數(shù)據(jù)空間時(shí),直接向CPU320發(fā)送進(jìn)行頁面切換的控制信號(hào)。另一方面,所述CPU320則包括頁面切換執(zhí)行單元321和返回單元322 ;頁面切換執(zhí)行單元321,用于在當(dāng)CPU320采用直接取指的方式訪問程序空間時(shí), 將當(dāng)前的程序計(jì)數(shù)器壓入堆棧,并將此時(shí)程序計(jì)數(shù)器的高N位所表示的頁面號(hào)作為新頁面號(hào)進(jìn)行保存;之后,準(zhǔn)備執(zhí)行頁面切換處理程序;將堆棧中程序計(jì)數(shù)器的取值修改為不匹配地址,作為返回現(xiàn)場使用的程序指針,從外部存儲(chǔ)器中將將要取指的代碼更新到程序RAM 當(dāng)中,并將當(dāng)前頁面寄存器的值更新為所述保存的新頁面號(hào);還用于在當(dāng)CPU320通過寄存器間接尋址的方式訪問程序空間和數(shù)據(jù)空間時(shí),接收硬件檢測電路310發(fā)送的控制信號(hào), 取消當(dāng)前指令的執(zhí)行并保存當(dāng)前指令的PC的取值;將當(dāng)前指令的PC修改為頁面切換處理程序所在的起始地址,并將送往地址總線的訪問信號(hào)無效掉;之后,準(zhǔn)備執(zhí)行頁面切換處理程序;將取值等于不匹配地址的PC壓入堆棧作為返回現(xiàn)場使用的程序指針,從外部存儲(chǔ)器中將將要訪問的數(shù)據(jù)或指令更新到程序RAM當(dāng)中,并將當(dāng)前頁面寄存器的值更新為所述將要訪問的數(shù)據(jù)或指令所在頁面的頁面號(hào)碼;返回單元322,用于在頁面切換處理程序結(jié)束后,將程序計(jì)數(shù)器的值修改回記錄的發(fā)現(xiàn)頁面不匹配時(shí)的程序計(jì)數(shù)器的值,并通知所述硬件檢測電路310繼續(xù)進(jìn)行判斷??梢姡景l(fā)明實(shí)施例提供的內(nèi)存訪問方法和裝置,采用硬件輔助進(jìn)行頁面切換的方法,通過在需要頁面切換的時(shí)候首先記錄用于在頁面切換完成后返回現(xiàn)場的地址,而在頁面切換過程中則將將要訪問的數(shù)據(jù)或指令更新到程序RAM當(dāng)中,并將當(dāng)前頁面寄存器的值更新為所述將要訪問的數(shù)據(jù)或指令所在頁面的頁面號(hào)碼,最后再利用記錄的地址返回現(xiàn)場,能夠有效避免現(xiàn)有技術(shù)中對(duì)每一次頁面切換都需要分別設(shè)置切換代碼的問題,減小了頁面切換代碼的大小,降低了對(duì)RAM大小的要求,同時(shí)由于對(duì)各種頁面切換提供了統(tǒng)一的接口,使得軟件設(shè)計(jì)人員可以不必關(guān)心頁面切換的具體實(shí)現(xiàn)細(xì)節(jié),從而顯著降低了程序的編寫設(shè)計(jì)難度和調(diào)試復(fù)雜度。以上所述,僅是本發(fā)明所列舉實(shí)施例而已,并不能用以限定本發(fā)明,本領(lǐng)域的技術(shù)人員顯然可以在不脫離本發(fā)明的精神或范圍內(nèi)進(jìn)行適當(dāng)?shù)男薷暮妥兓?br> 權(quán)利要求
1.一種內(nèi)存訪問方法,其特征在于,該方法包括步驟A、通過預(yù)設(shè)的硬件檢測電路判斷CPU將要訪問的數(shù)據(jù)或指令與CPU當(dāng)前正在訪問的數(shù)據(jù)或指令是否在同一頁面,如果不在同一頁面,觸發(fā)CPU的頁面切換機(jī)制,并同時(shí)記錄發(fā)現(xiàn)頁面不匹配時(shí)的程序計(jì)數(shù)器的值;步驟B、CPU進(jìn)行頁面切換時(shí),保存將要訪問的數(shù)據(jù)或指令所在的頁面號(hào)碼至頁面寄存器中,開始執(zhí)行頁面切換處理程序,所述頁面切換處理程序包括根據(jù)記錄的不匹配地址設(shè)置返回現(xiàn)場使用的程序指針,從外部存儲(chǔ)器中將將要訪問的數(shù)據(jù)或指令更新到程序RAM當(dāng)中,并將當(dāng)前頁面寄存器的值更新為保存的頁面號(hào)碼;步驟C、結(jié)束頁面切換處理程序,將程序計(jì)數(shù)器的值修改回記錄的所述發(fā)現(xiàn)頁面不匹配時(shí)的程序計(jì)數(shù)器的值,并返回繼續(xù)執(zhí)行步驟A。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述判斷CPU將要訪問的數(shù)據(jù)或指令與 CPU當(dāng)前正在訪問的數(shù)據(jù)或指令是否在同一頁面的方法包括將CPU訪問的地址空間等分成2N個(gè)頁面,N為大于0的整數(shù)且N小于CPU的尋址的位寬M,M為大于0的整數(shù),其中,M的高N位表示頁面號(hào)碼,低(M-N)位為頁面內(nèi)的地址;判斷程序計(jì)數(shù)器的高N位與當(dāng)前頁面寄存器的值是否相同,所述當(dāng)前頁面寄存器的值表示CPU當(dāng)前訪問的數(shù)據(jù)或指令所在的頁面號(hào)碼;如果相同,則所述CPU將要訪問的數(shù)據(jù)或指令與當(dāng)前正在訪問的數(shù)據(jù)或指令在同一頁面;如果不同,則不在同一頁面。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,若CPU采用直接取指的方式訪問程序空間,所述觸發(fā)CPU的頁面切換機(jī)制的方法包括硬件檢測電路將頁面切換指令作為CPU的預(yù)取指令送入CPU,當(dāng)CPU執(zhí)行到該指令時(shí)產(chǎn)生進(jìn)行頁面切換的控制信號(hào),開始頁面切換。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述CPU進(jìn)行頁面切換時(shí),保存將要訪問的數(shù)據(jù)或指令所在的頁面號(hào)碼,開始執(zhí)行頁面切換處理程序;根據(jù)記錄的不匹配地址設(shè)置返回現(xiàn)場使用的程序指針,從外部存儲(chǔ)器中將將要訪問的指令更新到程序RAM當(dāng)中,并將當(dāng)前頁面寄存器的值更新為保存的頁面號(hào)碼的方法包括CPU將當(dāng)前的程序計(jì)數(shù)器壓入堆棧,并將此時(shí)程序計(jì)數(shù)器的高N位所表示的頁面號(hào)作為新頁面號(hào)進(jìn)行保存;之后,準(zhǔn)備執(zhí)行頁面切換處理程序;將堆棧中程序計(jì)數(shù)器的取值修改為不匹配地址,作為返回現(xiàn)場使用的程序指針,從外部存儲(chǔ)器中將將要取指的代碼更新到程序RAM當(dāng)中,并將當(dāng)前頁面寄存器的值更新為所述保存的新頁面號(hào)。
5.根據(jù)權(quán)利要求2所述的方法,其特征在于,若CPU通過寄存器間接尋址的方式訪問程序空間和數(shù)據(jù)空間,所述觸發(fā)CPU的頁面切換機(jī)制的方法包括硬件檢測電路直接向CPU 發(fā)送進(jìn)行頁面切換的控制信號(hào)。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述CPU進(jìn)行頁面切換時(shí),保存CPU將要訪問的數(shù)據(jù)或指令所在的頁面號(hào)碼,開始執(zhí)行頁面切換處理程序;根據(jù)記錄的不匹配地址設(shè)置返回現(xiàn)場使用的程序指針,從外部存儲(chǔ)器中將將要訪問的數(shù)據(jù)或指令更新到程序RAM 當(dāng)中,并將當(dāng)前頁面寄存器的值更新為保存的頁面號(hào)碼的方法包括CPU接到硬件檢測電路發(fā)送的控制信號(hào)后,取消當(dāng)前指令的執(zhí)行并保存當(dāng)前指令的PC的取值;將當(dāng)前指令的PC修改為頁面切換處理程序所在的起始地址,并將送往地址總線的訪問信號(hào)無效掉;之后,準(zhǔn)備執(zhí)行頁面切換處理程序;將取值等于不匹配地址的PC壓入堆棧作為返回現(xiàn)場使用的程序指針,從外部存儲(chǔ)器中將將要訪問的數(shù)據(jù)或指令更新到程序RAM當(dāng)中,并將當(dāng)前頁面寄存器的值更新為所述將要訪問的數(shù)據(jù)或指令所在頁面的頁面號(hào)碼。
7.根據(jù)權(quán)利要求1至6中任一項(xiàng)所述的方法,其特征在于,所述頁面切換處理程序常駐內(nèi)存且放置在程序空間默認(rèn)頁面的公用段當(dāng)中,供CPU在需要的時(shí)候隨時(shí)調(diào)用。
8.—種內(nèi)存訪問裝置,其特征在于,該裝置包括硬件檢測電路,用于判斷CPU將要訪問的數(shù)據(jù)或指令與CPU當(dāng)前正在訪問的數(shù)據(jù)或指令是否在同一頁面,如果不在同一頁面,觸發(fā)CPU的頁面切換機(jī)制,并同時(shí)記錄發(fā)現(xiàn)頁面不匹配時(shí)的程序計(jì)數(shù)器的值;CPU,用于在進(jìn)行頁面切換時(shí),保存將要訪問的數(shù)據(jù)或指令所在的頁面號(hào)碼至頁面寄存器中,開始執(zhí)行頁面切換處理程序,所述頁面切換處理程序包括根據(jù)記錄的不匹配地址設(shè)置返回現(xiàn)場使用的程序指針,從外部存儲(chǔ)器中將將要訪問的數(shù)據(jù)或指令更新到程序RAM當(dāng)中,并將當(dāng)前頁面寄存器的值更新為保存的頁面號(hào)碼;之后,結(jié)束頁面切換處理程序,將程序計(jì)數(shù)器的值修改回記錄的所述發(fā)現(xiàn)頁面不匹配時(shí)的程序計(jì)數(shù)器的值,并通知所述硬件檢測電路繼續(xù)進(jìn)行判斷。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述硬件檢測電路包括判斷單元,用于將CPU訪問的地址空間等分成2n個(gè)頁面,N為大于0的整數(shù)且N小于 CPU的尋址的位寬M,M為大于0的整數(shù),其中,M的高N位表示頁面號(hào)碼,低(M-N)位為頁面內(nèi)的地址;判斷程序計(jì)數(shù)器的高N位與當(dāng)前頁面寄存器的值是否相同,所述當(dāng)前頁面寄存器的值表示CPU當(dāng)前訪問的數(shù)據(jù)或指令所在的頁面號(hào)碼;如果相同,則所述CPU將要訪問的數(shù)據(jù)或指令與當(dāng)前正在訪問的數(shù)據(jù)或指令在同一頁面;如果不同,則不在同一頁面。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述硬件檢測電路還包括頁面切換觸發(fā)單元,用于在CPU采用直接取指的方式訪問程序空間時(shí),將頁面切換指令作為CPU的預(yù)取指令送入CPU,當(dāng)CPU執(zhí)行到該指令時(shí)產(chǎn)生進(jìn)行頁面切換的控制信號(hào),開始頁面切換;還用于在CPU通過寄存器間接尋址的方式訪問程序空間和數(shù)據(jù)空間時(shí),直接向CPU發(fā)送進(jìn)行頁面切換的控制信號(hào)。
11.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述CPU包括頁面切換執(zhí)行單元,用于在當(dāng)CPU采用直接取指的方式訪問程序空間時(shí),將當(dāng)前的程序計(jì)數(shù)器壓入堆棧,并將此時(shí)程序計(jì)數(shù)器的高N位所表示的頁面號(hào)作為新頁面號(hào)進(jìn)行保存;之后,準(zhǔn)備執(zhí)行頁面切換處理程序;將堆棧中程序計(jì)數(shù)器的取值修改為不匹配地址,作為返回現(xiàn)場使用的程序指針,從外部存儲(chǔ)器中將將要取指的代碼更新到程序RAM當(dāng)中,并將當(dāng)前頁面寄存器的值更新為所述保存的新頁面號(hào);還用于在當(dāng)CPU通過寄存器間接尋址的方式訪問程序空間和數(shù)據(jù)空間時(shí),接收硬件檢測電路發(fā)送的控制信號(hào),取消當(dāng)前指令的執(zhí)行并保存當(dāng)前指令的PC的取值;將當(dāng)前指令的PC修改為頁面切換處理程序所在的起始地址,并將送往地址總線的訪問信號(hào)無效掉;之后,準(zhǔn)備執(zhí)行頁面切換處理程序;將取值等于不匹配地址的PC壓入堆棧作為返回現(xiàn)場使用的程序指針,從外部存儲(chǔ)器中將將要訪問的數(shù)據(jù)或指令更新到程序RAM當(dāng)中,并將當(dāng)前頁面寄存器的值更新為所述將要訪問的數(shù)據(jù)或指令所在頁面的頁面號(hào)碼;返回單元,用于在頁面切換處理程序結(jié)束后,將程序計(jì)數(shù)器的值修改回記錄的發(fā)現(xiàn)頁面不匹配時(shí)的程序計(jì)數(shù)器的值,并通知所述硬件檢測電路繼續(xù)進(jìn)行判斷。
全文摘要
本發(fā)明公開了一種內(nèi)存訪問方法判斷CPU將要訪問的數(shù)據(jù)或指令與當(dāng)前正在訪問的是否在同一頁面,如果否,觸發(fā)頁面切換機(jī)制;進(jìn)行頁面切換時(shí),保存將要訪問的數(shù)據(jù)或指令所在的頁面號(hào)碼,執(zhí)行頁面切換處理程序;從外部存儲(chǔ)器中將將要訪問的數(shù)據(jù)或指令更新到程序RAM當(dāng)中;結(jié)束頁面切換處理程序,將程序計(jì)數(shù)器的值修改回記錄的所述發(fā)現(xiàn)頁面不匹配時(shí)的程序計(jì)數(shù)器的值后繼續(xù)執(zhí)行。本發(fā)明實(shí)施例還提供一種內(nèi)存訪問裝置。本發(fā)明提供的內(nèi)存訪問方法和裝置,能夠避免每次頁面切換都需要切換代碼的問題,減少了頁面切換代碼量,對(duì)各種頁面切換提供統(tǒng)一接口,使設(shè)計(jì)人員不必關(guān)心頁面切換的具體實(shí)現(xiàn)細(xì)節(jié),顯著降低了程序的編寫設(shè)計(jì)難度和調(diào)試復(fù)雜度。
文檔編號(hào)G06F12/10GK102270181SQ20101019337
公開日2011年12月7日 申請(qǐng)日期2010年6月1日 優(yōu)先權(quán)日2010年6月1日
發(fā)明者彭洪, 江小煒 申請(qǐng)人:炬力集成電路設(shè)計(jì)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1