專利名稱:控制中央處理單元進(jìn)行關(guān)于內(nèi)存尋址之方法及控制器的制作方法
發(fā)明所屬之技術(shù)領(lǐng)域本案系關(guān)于控制器,例如微控制器、微處理器,以及相同于使用于ASICs(Application Specific IC;特殊應(yīng)用集成電路)、SOCs(System on chip;芯片系統(tǒng))及類似系統(tǒng)者,尤指依據(jù)一不支持需要內(nèi)存體積的尋址之CPU(中央處理單元)架構(gòu)的控制器。
先前技術(shù)雖然微處理器及微控制器的發(fā)展已經(jīng)導(dǎo)致相當(dāng)大的效能進(jìn)展,在某些特定技術(shù)領(lǐng)域的應(yīng)用,舉例來說在芯片卡的領(lǐng)域或是SOC設(shè)計方面,然而當(dāng)整合一CPU到一集成電路中時,仍偏好較舊式之CPU架構(gòu)而非較新式之CPU架構(gòu)。其中一原因是具有高效能之較新式CPU架構(gòu)對其提供之各個領(lǐng)域之應(yīng)用來說,體積過于龐大,所以,若考慮到其所要行使之任務(wù),則需要太多的電力并占掉太多的芯片區(qū)域。而另一偏好舊式CPU架構(gòu)而非新式的更有力的原因是,舊式CPU架構(gòu)的軟件開發(fā)環(huán)境較受到消費者的歡迎,舉例來說8051或8052之微控制器架構(gòu),而且,對消費者來說也有較多的軟件開發(fā)者可取得。
對舊式控制器架構(gòu)來說,軟件開發(fā)環(huán)境及較受到消費者歡迎的問題在芯片卡的領(lǐng)域中特別重要,因為在這個情況下,用在該芯片卡上或是使機器執(zhí)行的機器程序的世代并不落在芯片制造商的責(zé)任上,而是由于安全考量而落在主要客戶上,例如組合庫及其軟件開發(fā)公司,以及其各自操作系統(tǒng)之開發(fā)公司。此外,由于需求量大,為了要使成本愈低愈好,對芯片卡客戶使用能夠符合其各自需求的芯片卡控制器是一件非常重要的事。為了要滿足低階芯片卡區(qū)域并符合一些顧客對知名軟件開發(fā)環(huán)境的需求,結(jié)果芯片制造商就必須提供根據(jù)較舊式控制器架構(gòu)之芯片卡。
然而,使用舊式控制器架構(gòu)所制造之芯片卡的一問題就是,其尋址之方式并不有效。所以,在芯片卡區(qū)域,8051的CPU能力基本上足以接管管理芯片卡的任務(wù),但為了高安全性考量的原因,包括與大量運算相關(guān)之操作計算的密碼演算必須藉由密碼協(xié)同處理器而在芯片卡進(jìn)行。在知名的RSA(Rivest,Sharmir and Adleman)運算中,舉例來說,1024的運算域長度是很平常的。由于這些處理的大運算域長度及該密碼演算自身的復(fù)雜度,最大可能內(nèi)存存取系為芯片卡的需求。此處,使用舊式控制器架構(gòu)之CPU的一問題就是,其僅允許小體積內(nèi)存的尋址,舉例來說8051的CPU僅容許64k字節(jié)的尋址。
一使其尋址于一大內(nèi)存的可能解決方式,而不管具有舊式架構(gòu)之控制器的使用系為,使用外來貯存之描述符或是基礎(chǔ)地址以決定由CPU尋址之記憶窗的位置,故而可由CPU尋址之內(nèi)存區(qū)域可以藉由記憶窗的方式被轉(zhuǎn)移到整個較大的內(nèi)存。第4圖系為一8位控制器之方塊圖??刂破?00包括8051的CPU 805、一MMU(內(nèi)存管理單元)以及一與控制器800相連之內(nèi)存815,內(nèi)存815包含不同之內(nèi)存種類,例如只讀存儲器(ROM)、隨機存取內(nèi)存(RAM)、非揮發(fā)性內(nèi)存(NVM),又或者是如EEPROM或閃存,其系以方塊表示而達(dá)到最佳之了解。CPU805系藉由8位地址線820及一雙向8位資料線825而與MMU 810相接。而MMU 810則藉由12位地址線840及一雙向8位資料線845而與內(nèi)存815依次相接。在芯片卡的例子,舉例來說,控制器800系與更多的組件相連,例如一用以進(jìn)行密碼演算的密碼協(xié)同處理器、一干擾模塊、一接觸式或非接觸式界面以進(jìn)行與末端之溝通、一隨機數(shù)字產(chǎn)生器及更多其它組件,為了簡化并未于第4圖中描述。
第4圖中之控制器800問題為,CPU 805系依據(jù)8位架構(gòu),至于指令集855只容許64字節(jié)之尋址,而在第4圖的例子中,在芯片卡之盒中的內(nèi)存815的大小必須大于1兆字節(jié)。為什么只有64k字節(jié)系為可被CPU 805所尋址的原因是,在資料由指令集855的方式存取,特別是藉由讀寫指令之方式,例如MOV指令以及在制造地址時之密碼存取中,只有兩個字節(jié)(16位)被使用,其僅容許216=64個狀態(tài)的編碼。
當(dāng)執(zhí)行一讀取指令時,CPU 805會在8位地址線820及該8位資料線825輸出一16位地址。響應(yīng)時,位于資料線825之CPU 805會等待在必要地址之內(nèi)存815的內(nèi)存內(nèi)容。為了要尋址該1MB之內(nèi)存815,一資料描述子860被貯存在CPU 805外部之MMU 810中,其指向一由CPU 805加上16位之基礎(chǔ)地址,因此該結(jié)果被輸出到該12位址線8840及該8位資料線845以尋址該內(nèi)存815。如此一來,內(nèi)存815中之64k資料記憶窗865便由該描述子860所界定,該起始地址系相當(dāng)于該描述子860所指向之基礎(chǔ)地址。藉由提供描述子860及該MMU 810,便能確定CPU 805會總是存取關(guān)于內(nèi)存815記憶存取處之記憶窗865,其中由CPU 805輸出之地址指出字節(jié)之補償值而在記憶窗875之內(nèi)讀取。CPU 805執(zhí)行一寫入及讀取命令,其中MMU 810將該16位地址由CPU 805翻譯為實體之20位地址并據(jù)此重新指向存取處。
雖然描述子860之概念能被延伸到與MMU 810相關(guān)之任何之內(nèi)存大小,其缺點為,在記憶存取處到記憶窗865外部之內(nèi)存815地址中,MMU 810必須被重新配置,舉例來說,描述子860必須據(jù)此重新設(shè)定。此MMU 810之重新配置尤其復(fù)雜,因為其需要一描述子860之軟件設(shè)定,另外,也因為在一對CPU 805為現(xiàn)有(例如可尋址的)的內(nèi)存中,一管理編碼870必須被貯存,包括用以設(shè)定描述子860之MMU設(shè)定碼,其直接降低其可尋址性,及使其數(shù)值非常小。此外,描述子860之設(shè)定需要額外之時脈周期,其會降低控制器的操作速度。舉例而言,對一編譯程序來說,假定上述所指內(nèi)存的大小,一資料存取對一記憶窗865外部之內(nèi)存815的內(nèi)存地址的持久性系為,140個時脈循環(huán)相對于電流記憶窗865以內(nèi)之內(nèi)存存取的4個時脈循環(huán)。
MMU重新配置的問題在碼存取的區(qū)域增加,以相對應(yīng)的方式,其中一碼描述子875界定一碼記憶窗880,其中當(dāng)執(zhí)行次程序(如呼叫指令)時,記憶窗880外部之內(nèi)存區(qū)域內(nèi),進(jìn)入該電流上設(shè)定記憶窗880之回返跳越必須加以確定。當(dāng)離開該電流上設(shè)定記憶窗880時,只有碼描述子875必須被重設(shè),在處理正常指令序列中之機器碼時,例如沒有跳越指令時,或是跳越指令中沒有跳越意向時,如同數(shù)據(jù)存取,其必須確定跳越指令中含有跳越意向,在回返跳越的情形來說,碼描述子875被設(shè)定為原先的數(shù)值。為了要加以確定,管理碼870必須更包含一在每一含有返回意向之跳越指令中呼叫的起始碼,其系關(guān)于電流上設(shè)定碼記憶窗880外部之目的地,以確定當(dāng)其返回時,描述子在跳越前之設(shè)定的貯存。
一可能之軟件體認(rèn)系為每一種組合提供,例如內(nèi)存815的每一種可能之記憶窗位置,起始碼及其設(shè)定,以及于表中所組織并貯存于內(nèi)存815之連續(xù)現(xiàn)有內(nèi)存區(qū)域之重設(shè)密碼。為了要在電流上設(shè)定記憶窗865的限制外操作含有返回意向之跳越指令,使來自程序代碼之含有返回意向之跳越指令轉(zhuǎn)而進(jìn)入一在連續(xù)現(xiàn)有內(nèi)存區(qū)域中之功能,必須發(fā)生,加載至內(nèi)部緩存器885,例如資料指針DPTR,關(guān)于目的地組合之目的碼的16位地址,例如目的地組合之補償值,該指令跳越之所在之處接著呼叫含有跳越指令而無返回意向進(jìn)入連續(xù)現(xiàn)有內(nèi)存區(qū)域之起始碼。藉由執(zhí)行該起始碼,該用以回復(fù)電流上設(shè)定記憶窗880或電流組合之MMU重設(shè)密碼的地址,起初被移位到堆棧或堆棧內(nèi)存890。借著,在進(jìn)入內(nèi)部緩存器885之前所寫入之地址被移位到堆棧880。最后,新目的地MMU組合之MMU設(shè)定密碼被未含返回意向之跳越指令所呼叫。在設(shè)定碼的最后,MMU重新配置發(fā)生過后,一跳越會在所希望之功能,或是在含有返回跳越指令之新設(shè)定記憶窗中的次程序上被執(zhí)行。在進(jìn)行該功能后,用以貯存原始MMU配置,或用以回復(fù)原先設(shè)定記憶窗880之MMU重設(shè)密碼,系被一返回指令呼叫,以回復(fù)起始之MMU設(shè)定。在設(shè)定碼末端之返回跳越指令,其系在新設(shè)定記憶窗885之內(nèi),接著便跳越到在程序代碼中相對應(yīng)之下一位置。為了能夠藉由包含于MMU設(shè)定或重設(shè)密碼中的CPU指令之方法以重設(shè)MMU,可以是特殊指令被提供,而CPU 805能夠個別尋址MMU 810以及描述子860與875,或者是MMU 810能響應(yīng)來自CPU 805在地址及資料線820與825上所保存之8位地址。
為了要了解內(nèi)存815中之內(nèi)存區(qū)域,CPU 805現(xiàn)有或連續(xù)可尋址者,而非所有由CPU 805輸出之16位地址,由MMU 810形成映象至記憶窗865,而到一內(nèi)存815之固定內(nèi)存,因此,該記憶窗865之有效可尋址大小則被管理碼870降低。
發(fā)明概述本案之目的系為提供一種控制中央處理單元進(jìn)行關(guān)于內(nèi)存尋址之方法及控制器,使得超過內(nèi)存大小的內(nèi)存大小之尋址得以較不復(fù)雜,其中該內(nèi)存大小由于其結(jié)構(gòu)可透過CPU而被尋址為最大。
此目的可藉由根據(jù)權(quán)利要求第1項或是第9項之方法以及根據(jù)權(quán)利要求第2項或是第10項之控制器而達(dá)成。
本案系基于以下的發(fā)現(xiàn),CPU的自由CPU運算碼,即,沒有來自CPU的指令集的指令已經(jīng)被指派至的運算碼,其接著會被指令為自由運算碼,或者一指令已經(jīng)被指派至的CPU運算碼識別符,但其可因為其它的理由而為可使用的,或是與可被用來控制CPU的支持裝置上游無關(guān)的特定操作數(shù),其可以對應(yīng)于一般被指令做為特定運算碼識別符(與具有第二內(nèi)存大小的第二內(nèi)存區(qū)域有關(guān)的一種新的地址,舉例來說如實體的地址,其中該第二內(nèi)存大小大于可被CPU尋址的邏輯內(nèi)存大小(例如))的運算碼而形成。透過特定的運算碼識別符,其可能在執(zhí)行的機器碼期間,尋址可監(jiān)控從內(nèi)存到CPU的資料流量之支持裝置,藉由其將待處理運算碼識別符可被提供至CPU,并且當(dāng)某種特定的運算碼識別符出現(xiàn)時,其可以就新形成的地址進(jìn)行量測。在此種方式中,一方面將可避免CPU復(fù)雜的重新設(shè)計,另一方面也可避免關(guān)于執(zhí)行的機器碼與處理速度復(fù)雜的現(xiàn)行內(nèi)存窗之軟件重置需求。
根據(jù)本案所載有關(guān)于跳越程序(program jump)之方面,支持裝置系可以提供一運算碼識別符至該CPU,此運算碼識別符系被指派給來自CPU指令集的一跳越指令。而跳越指令運算碼識別符系包含一適合的目的地地址,其系有關(guān)于第一(像是,舉例而言為邏輯的)記憶區(qū)域以適合地設(shè)定程序計數(shù)器。支持裝置同時操縱MMU的描述符,其系指示在記憶區(qū)域內(nèi)第一記憶區(qū)域的位置,或是其系被設(shè)置而使得該目的地地址連同碼描述子而產(chǎn)生新的地址。被提供至CPU的跳越指令系關(guān)于一與該第一記憶區(qū)域有關(guān)的目的地地址。支持裝置設(shè)定與該跳越指令有關(guān)之目的地地址,以及設(shè)定碼描述子,使得新的地址系在第一記憶區(qū)域(例如,邏輯記憶區(qū)域),也因而與被提供至CPU的跳越指令有關(guān)的目的地地址,其系與描述子有關(guān),而對應(yīng)于新的地址(舉例而言,如實體地址)。在此種方式中,支持裝置,僅對應(yīng)于一特定的運算碼識別符,其一方面可確保描述子,另一方面亦可確保針對CPU下一碼的存取的程序計數(shù)器去要求來自該內(nèi)存將待處理的下一運算碼識別符可被適當(dāng)?shù)卦O(shè)定,其中,對于在前言之說明所闡述的軟件解決方法中,其需要一種管理碼。
根據(jù)本案與資料存取指令有關(guān)的另一方面,支持裝置系可以用來提供一預(yù)先決定的CPU運算碼至CPU,以為了可適當(dāng)?shù)亍按龠M(jìn)”其在一適合的狀態(tài),或是使其處于一適合的狀態(tài),并且操作該CPU輸出的地址至該內(nèi)存,其系基于新形成的地址,因而從內(nèi)存觀點來說,此種觀念導(dǎo)致CCPU能尋址第二記憶區(qū)域。此種狀況下,在程序期間,設(shè)定記憶窗之外的內(nèi)存特定地址上的內(nèi)容或是第一記憶區(qū)域系被讀取,意即與第二記憶區(qū)域有關(guān)的自由運算碼系為此而被提供,舉例來說其系被插入可處理的機器碼。
假使其被CPU指令為下一由內(nèi)存所處理的指令,那么該支持裝置乃對應(yīng)地確認(rèn)一新的地址,該地址系可來自于該運算碼本身的一部份或是來自于位在該CPU內(nèi)的緩存器的信息或是來自于CPU外而位在該支持裝置內(nèi)的緩存器的信息。該內(nèi)存系在此地址中被讀取。另外,一或是數(shù)個CPU運算碼乃被供應(yīng)至該CPU以使得該CPU得以使一后續(xù)被供至內(nèi)存進(jìn)入在該CPU內(nèi)的預(yù)設(shè)目的地緩存器中。另外,用以指令在內(nèi)存中執(zhí)行的下一運算碼的程序計數(shù)器乃適當(dāng)?shù)乇辉O(shè)定以致于該內(nèi)存可由該新地址進(jìn)行存取進(jìn)已使得該新地址的內(nèi)存內(nèi)容可被讀取并被輸出至該CPU。即使是在此資料存取的個案中,在轉(zhuǎn)換第一內(nèi)存區(qū)或是內(nèi)存窗集之前并不是絕對地需要有管理碼。
透過提供利用自由運算碼或是特殊運算碼標(biāo)識符而控制在CPU外部產(chǎn)生新地址的支持裝置,一除了可直接由CPU在伴隨著CPU運算碼標(biāo)識符而尋址的內(nèi)存區(qū)域之外的整個內(nèi)存的直接尋址系可在不需要改變CPU設(shè)定的情形下完成。鑒于該支持裝置是CPU的上流(upstream),亦即其乃以可以調(diào)控自內(nèi)存送至該CPU的資料流的方式而與CPU相連,舉例來說,一并未被指令到來自于該CPU的指令集的指令的自由運算碼標(biāo)識符乃可在其到達(dá)CPU之前及被該支持裝置所阻斷。以由該支持裝置所形成的新地址為基礎(chǔ),該支持裝置乃可適度地刺激或是控制該CPU,而且如果有需要,其亦可適度地把CPU的地址信號轉(zhuǎn)換至外部,亦即其之轉(zhuǎn)換系與內(nèi)存有關(guān)。其中,一描述子的預(yù)備軟件重新設(shè)定(prepared soft-resetting)或是基礎(chǔ)地址乃是不需要的,而就某一方面而言,提供一管理碼乃是被省略的,而在另一方面,碼跳(codejump)的時鐘循環(huán)數(shù)(clock cycles)或是一現(xiàn)正設(shè)定內(nèi)存窗所要求的資料存取都將減緩。藉由省略管理碼,那么可由CPU連續(xù)尋址或是看見的內(nèi)存區(qū)域中將不會有內(nèi)存空間被占據(jù)。
本發(fā)明的另一好處在于存有一至機械碼的下行兼容性,其中僅以CPU運算碼標(biāo)識符為基礎(chǔ)得該機械碼系可被確定,因為支持裝置對于CPU運算碼標(biāo)識符而言可以是直接穿透的或是細(xì)微到無法感知的。另外,該支持裝置也可用來在一資料存取中重新設(shè)定一碼描述子或是資料描述子,并用來重新設(shè)定在現(xiàn)正設(shè)定內(nèi)存窗外部的地址有關(guān)的跳接指令,因此僅可透過一自由或是特定運算碼標(biāo)識符而重新設(shè)定該內(nèi)存窗。舉例來說,透過在CPU外利用硬件處理自由或是特定運算碼標(biāo)識符,那么其它再重新設(shè)定描述子過程中所可能發(fā)生的中斷將可被避免,因此,與軟件重新定相比較,磁化率的失敗機會將會下降。
本發(fā)明的較佳實施例乃藉參考所附圖
式而更詳盡地說明于后,其中第1圖系為本發(fā)明較佳實施例的一控制器方塊圖;第2a、2b圖呈現(xiàn)了由第1圖的控制器所執(zhí)行的步驟流程圖,其中一自由運算碼乃與一伴隨著間接尋址的讀取指令相對應(yīng);第3圖系顯示在第1圖的控制器中所執(zhí)行步驟的流程圖,在此狀況中,自由運算碼系對應(yīng)于具有轉(zhuǎn)回意向的直接尋址之跳越指令;以及第4圖系顯示使用先前可能的解決方案之控制器的方塊圖,用以延伸CPU的尋址可能性。
接下來參照本發(fā)明之一實施例之詳細(xì)描述,必須注意的是雖然其系關(guān)于一芯片之該控制器,但本發(fā)明亦可適用于不同應(yīng)用領(lǐng)域之控制器上,舉例來說,例如在ASICs、SOCs或TPMs(信任平臺模塊)上,或可具體化作為一單獨之微控制組件。
亦必須注意的是,接下來的實施例僅依賴自由運算碼、無保留自由運算碼,其系沒有來自該CPU之一指令集之指令被分配。必須注意的是,在可供選擇用以控制該支持裝置的實施例中使用保留運算碼亦是可行的,其系以運算碼識別符的形式,其有不同的理由可適用于此,其中該符號運算碼識別符其后系成為包含一運算碼及一運算域之一結(jié)合,舉例來說,例如一地址區(qū)段。舉例來說,其有可能為一情況,其系一可靠指令并未被編譯器支持或是使用,且其運算碼因此可于其它方面被利用,或一運算碼與一運算域之結(jié)合系為自由的,亦即未定義。
此外,必須談到的是其后的敘述提及具有大小為1MB之一內(nèi)存系由20位尋址,雖然不同內(nèi)存大小,舉例來說,例如14MB,及用以尋址之不同數(shù)量的位,舉例來說,例如24,亦是可行的。
第1圖所示為一微控制器大體來說以10來表示,其系根據(jù)本發(fā)明之一實施例,及一內(nèi)存20。該控制器10包含一CPU 30、支持裝置40及一MMU或內(nèi)存管理單元50,該CPU 30系基于一8051控制器結(jié)構(gòu),且系經(jīng)由一雙向8位資料線60、一8位地址線80及一中斷線Int 90連接于該支持裝置40,該支持裝置40系經(jīng)由一雙向資料線100、一8位地址線120及一中斷線Int 130連接于該MMU 50,該支持裝置40及該MMU 50分別經(jīng)由一8位資料線140和150,以及分別經(jīng)由一12位地址線180和190皆連接于該內(nèi)存20。
該CPU 30,除開其它圖上未示之組件外,舉例來說,例如加法器,尚包含一譯碼器210、一內(nèi)部RAM IRAM 220及內(nèi)部緩存器,其包含一程序計數(shù)器240、一資料計數(shù)器緩存器DPTR 245及一累加器250。在該IRAM 220中更提供內(nèi)部緩存器260,其中更提供一堆棧內(nèi)存或堆棧270,該譯碼器210于該8位資料線60上譯碼供應(yīng)給該CPU 30之該運算碼或運算碼識別符280,其中系分派來自該CPU 30之一指令集290之一指令。
該支持裝置40亦包含一譯碼器300,以于該8位資料線140上譯碼供應(yīng)給該支持裝置40之運算碼或運算碼識別符,該支持裝置40響應(yīng)可靠運算碼310,其系不屬于該CPU運算碼280或是不作為那些保留運算碼,且其必然無分派來自該CPU 30之該指令集290之指令,其后這些運算碼將被視為自由運算碼310,除開該譯碼器300,該支持裝置40更包含其后將討論之一加法器320以修改、20位地址形成于該支持裝置40,其系舉例來說一4或16位之偏置值,以及一外部資料指針器緩存器XDPTR 325,其具有三字節(jié)之大小。
該MMU 50包含外部緩存器用以儲存一資料描述子330、一碼描述子340、及選擇性地一中斷描述子。
除開所述之組件,該CPU 30、該支持裝置40及該MMU 50每一包含控制裝置,然而其系未示于圖中,且由其后之描述中執(zhí)行顯著的控制工作。
必須指出的是,該芯片卡控制器10更可被連接于其它組件,為了清楚表示的緣故并未顯示于第1圖中。一或數(shù)個密碼聯(lián)合處理器用以執(zhí)行編碼算法、一發(fā)送/接收接口,舉例來說,例如一UART模塊(通用異步收發(fā)器)、一振蕩器用以制造一內(nèi)部時脈、一中斷模塊用以硬件所產(chǎn)生之中斷信號,以及一隨機號碼產(chǎn)生器,其系連接至該控制器10,及舉例來說,尤其是經(jīng)由一地址數(shù)據(jù)總線連接至該支持裝置40,舉例來說,其系屬于所連接之組件。
該CPU 30所包含之該運算碼識別符集,在本例中系由CPU運算碼識別符280及自由運算碼識別符310所組成,每一運算碼識別符通常由一指示該指令之形式之運算碼所構(gòu)成,及該CPU 30或是支持裝置40、以及如果合適的話更進(jìn)一步的信息之處理方法,舉例來說,例如一地址部分用以指示一地址,其系與連結(jié)于該運算碼之指令相關(guān)聯(lián),及/或一運算域區(qū)段用以指示一運算域,其系與該指令相關(guān)聯(lián),舉例來說,例如關(guān)聯(lián)于該地址之一偏置值,其系指示于該地址區(qū)段中,或是一額外指令之一加數(shù),該運算碼之總數(shù),及因此該運算碼識別符之總數(shù),系因此受限于該運算碼之編碼可能性之?dāng)?shù)量。
對應(yīng)于該地址線80及數(shù)據(jù)線60之受限數(shù),該指令集290僅允許該CPU 30存取有限制內(nèi)存大小之一內(nèi)存區(qū)域,亦即以一位方式存取之64K字節(jié)即便在碼存取中,其中該CPU 30要求下一運算碼識別符以該16位碼地址處理,其系儲存于該程序計數(shù)器240,尋址還是受限于64K字節(jié)的大小。
在前述之實施例中,該內(nèi)存20的大小系為,舉例來說,一兆位,其中其它內(nèi)存大小亦是許可的,該內(nèi)存20可因此包含復(fù)數(shù)個內(nèi)存形式,舉例來說,例如一RAM、ROM、NVM、舉例來說,例如一EEPROM或一閃存或是同類物質(zhì)。為了允許該整體物理內(nèi)存20藉由該CPU 30之尋址,其系以使用該指令集290作數(shù)據(jù)存取或是以碼請求,該資料描述子330及該碼描述子340系于該MMU 50中提供,決定該基本地址或是一碼窗區(qū)域370之位置及一資料窗區(qū)域380于該內(nèi)存20中,其具有一大小分別為64K字節(jié)及決定邏輯內(nèi)存區(qū)域,其系關(guān)連于以該指令集290之該資料存取,或是以該程序計數(shù)器240之該CPU 30之碼存取。
首先舉例說明具有該描述子330和340之內(nèi)存存取之原理,其系以來自指令集290一讀取指令,其系提供以寫入至該累加器250,一地址之該內(nèi)存內(nèi)容系決定于該內(nèi)部緩存器260之兩字節(jié),舉例來說,例如在該資料指針器緩存器DPTR中,亦即以通常之標(biāo)記法,該指令范例系為”MOVX A,@DPTR”。值得注意的是,其后所描述的實施例,及其后參照的方案,其中現(xiàn)行所請求之命令立即地跟隨在一跳躍指令之后,且其中該CPU 30輸出該地址,其系于該程序計數(shù)器中請求,用以請求該現(xiàn)行指令。在其它方案中亦可行,其中該現(xiàn)行地請求指令并未直接跟隨在該跳躍指令之后,其后之地址系于該內(nèi)存20中管理,其系以一自動增量器形式自動地增加一20位之碼地址,且其中該CPU 30僅輸出一請求或是激活信號給該內(nèi)存20。
該CPU 30請求該指令,其系藉由于該地址線80及該資料線60上輸出該16位地址,其系儲存于該程序計數(shù)器240中,該支持裝置40以未變形式傳遞該地址信號至該地址線120及資料線100,該MMU 50操縱該地址信號指示該16位碼地址,其系基于該碼描述子340,該碼描述子340,舉例來說,包含超過顯著的4位置于該碼地址之16位之前,藉以16可能的內(nèi)存窗位置結(jié)果,其后接著也能作為組合?;蚴谴a描述子340,除開置于該碼地址之16位之前之明顯的4位之外,更包含位可允許超過16可能的內(nèi)存窗位置。該MMU 50輸出該結(jié)果20位碼地址至該內(nèi)存20,以請求該機械碼,亦即在本例中為”MOVX A,@DPTR”<該內(nèi)存20由該碼內(nèi)存窗370經(jīng)由該資料線150、100及60輸出該CPU運算碼識別符280至該CPU 30,其中該MMU 50或是該支持裝置40分別傳遞該CPU運算碼識別符。該譯碼器210譯碼該指令MOVX A,@DPTR之該運算碼識別符280,及于該資料和地址線60、80上對應(yīng)之該譯碼之指令、該資料指針器之該內(nèi)容之輸出,以便存取于該數(shù)據(jù)存儲器窗380中之該對應(yīng)內(nèi)存內(nèi)容。藉由以該支持裝置40被傳遞,該資料指針器之該16位地址到達(dá)該MMU 50,從其與該資料描述子330一起產(chǎn)生該隊硬20位地址,并于該地址和資料線190、150上輸出其至該內(nèi)存20,該內(nèi)存20經(jīng)由該資料線150、100和60回傳該對應(yīng)內(nèi)存內(nèi)容至該CPU 30,其于該處藉由該CPU 30被加載至該累加器250,如同藉由該指令MOVX A,@DPTR之該運算碼決定一樣。
為了避免一該描述子330及340復(fù)雜之軟件重新配置或是重新設(shè)定,其系在一跳躍指令或一數(shù)據(jù)存取之前,其系分別超出該碼內(nèi)存窗370或是該數(shù)據(jù)存儲器窗380之限制,如同上文已描述,該支持裝置40系以此方式連接于該CPU 30,使其能監(jiān)控由該內(nèi)存20至CPU 30之資料流量,以便能在該CPU 30之前響應(yīng)該自由運算碼310,當(dāng)他們由該內(nèi)存20之該碼內(nèi)存窗370被請求時。如同示于其后的討論中,其可藉由該支持裝置40之該裝置確保一足夠大的地址之形成,亦即一20位之地址于該支持裝置40中,同時該CPU 30系適合由該支持裝置40「促進(jìn)其功能」。該支持裝置40更連接于該CPU 30以便其可監(jiān)控由該CPU 30至內(nèi)存20之該資料流量,以便操控地址發(fā)出該MMU 50輸出之信號,以便執(zhí)行與該內(nèi)存20相關(guān)之尋址。
參照第2圖,一系列步驟將于其后描述,如同發(fā)生于第1圖之控制器中,當(dāng)下一運算碼識別符跟隨在一跳躍指令后執(zhí)行,其系該CPU所請求,系為一自由運算碼識別符對應(yīng)于一讀取或加載指令,其系關(guān)于該CPU之一內(nèi)部目的緩存器,及一20位來源地址,其系以于該CPU30內(nèi)之內(nèi)部緩存器之中間接尋址來指示。
在步驟400中,首先,CPU 30必定是由執(zhí)行程序以一方式所控制,該方式系為與地址形成有關(guān)的新讀取指令乃被指令至該緩存器,而該等緩存器乃一并地被載至該新讀取指令所指令的20位地址中。在第2圖的實施例中,這些乃是CPU的內(nèi)部緩存器R1、R2與R3。舉例來說,為了填充這些內(nèi)部緩存器,下列的CPU運算碼辨別字序列乃可存在于自由運算碼標(biāo)識符,例如”MOVX A,@Dptr”、”MOV R2,A”、”MOV R3,#0x1 3H”,之前的內(nèi)存20之中,其中伴隨著i=1...3的Ri指的是一內(nèi)部緩存器Ri,A所指的是累加器250,Dptr指的是資料指針緩存器245,而#0x1 3H指的是一以十六位進(jìn)位形式存在的直接地址。
在步驟405中,CPU 30乃藉由輸出儲存在程序計數(shù)器240中的該16位碼而直接在一跳接指令后要求下一將被執(zhí)行的指令,其中該程序計數(shù)器乃位在地址線80與資料線60上之上。在步驟410中,程序計數(shù)器240中的16位碼乃在其已經(jīng)通過未改變的支持裝置40之后乃被映像到一通過該MMU 50至內(nèi)存20的20位碼地址,或是透過MMU 50利用碼描述子340而操作(manipulate)至該20位碼地址。舉例來說,當(dāng)碼描述子340對應(yīng)于該20位碼地址的一較有效的4位部分時,或是對應(yīng)于一較有效的n位部分時,舉例來說,n可為12,儲存在程序計數(shù)器中的16位碼地址則對應(yīng)于該20位碼地址的一較不有效的部分。該16位碼地址的映像或操作乃是透過補充而由MMU 50所執(zhí)行。類似地,碼描述子340可對應(yīng)于一20位基礎(chǔ)或是一組合(bank)的起始地址,以致于該映像便藉由增加碼描述子340而繪制于該16位碼地址。
在步驟415中,由碼描述子340及16位程序技術(shù)器240所導(dǎo)生的20位碼地址上的要求指令的運算碼辨識字乃減少了內(nèi)存20,而且透過地址線120、190與資料線150而傳輸?shù)讲皇躆MU 50所阻撓的支持裝置40。
在步驟420中,支持裝置40的譯碼器420乃檢測內(nèi)存20所接收的運算碼標(biāo)識符是否具有一由該運算碼所指令的自由運算碼。在步驟420中,假使結(jié)果是該減少內(nèi)存的操作碼并不是一自由運算碼,那么在步驟425中該運算碼便經(jīng)由地址線80與資料線60而不受阻礙地通過支撐裝置40與CPU 30,其中該CPU算運碼辨識字乃藉CPU 30以傳統(tǒng)方法而譯碼與執(zhí)行。然而,如果來自于內(nèi)存20的該運算碼是一自由運算碼,那么該運算碼便在步驟430中被譯碼以便確認(rèn)自由運算碼310中的何者為該運算碼。
如上所述,在第2圖的情況下,其已假設(shè)該運算碼是一與一具有間接尋址的讀取指令相對應(yīng)的自由運算碼。在步驟435中,支持裝置40乃確認(rèn)CPU 30的內(nèi)部緩存器R1至R3的內(nèi)容。該確認(rèn)乃可由不同方式來完成。以一實施例為基礎(chǔ),該支撐裝置40更透過線542而與CPU 30相連,因此該支撐裝置40便可以對緩存器1至3的內(nèi)容進(jìn)行測試。舉例來說,此將可藉一追蹤機制而實施,因此該支撐裝置40乃透過線542而與CPU 30的一內(nèi)部總線相連,藉其,在IRAM 220內(nèi)的緩存器R1至R3便得以被加載。在另一實施例中,用來確認(rèn)緩存器R1到R3內(nèi)容的支持裝置40乃使用被供至該CPU 30的CPU運算碼辨識字,其中該CPU運算碼辨識字乃以一方法來刺激該CPU,該方法系為其在資料線60上輸出緩存器R1到R3的內(nèi)容,其中適當(dāng)?shù)难b置乃被用來適度地控制該程序計數(shù)器240。
在步驟440中,支持裝置40乃字自確認(rèn)的內(nèi)容中形成與該自由運算碼標(biāo)識符或是讀取指令有關(guān)的20位地址。
在步驟445中,一預(yù)設(shè)的CPU讀取運算標(biāo)識符系以該自由運算碼標(biāo)識符或該自由運算碼為基礎(chǔ)而由支持裝置40而供至CPU 30。舉例來說,因為該自由運算碼乃與一讀取指令相對應(yīng),其中該讀取指令系將來自于緩存器內(nèi)容所確認(rèn)的20位地址上的內(nèi)存內(nèi)容加載至累加器緩存器250,而該支持裝置40乃在現(xiàn)存的碼中依據(jù)一指令”MOVX A,@R1”而把一CPU運算碼供至該CPU,該指令系為一與內(nèi)存20有關(guān)的讀取指令,該讀取指令乃被提供以便把內(nèi)存內(nèi)容加載至由在緩存器A中所使用的緩存器所指令的地址。在此情形下,預(yù)設(shè)的運算碼標(biāo)識符將僅包含運算碼。
在步驟450中,CPU 30乃接收由支持裝置40所提供的CPU運算碼標(biāo)識符,并將其譯碼。當(dāng)針對指令MOVX而執(zhí)行被供應(yīng)的CPU運算碼辨識字時,CPU 30乃控制具有16位地址的地址線80與資料線80,該16位地址乃包含在與直接尋址有關(guān)的CPU運算碼中或是由一與間接尋址有關(guān)的緩存器所確認(rèn),并接著等待一結(jié)果以便能供至資料線60進(jìn)以對目的地緩存器,亦即累加器250,進(jìn)行寫入。
在步驟455中,支持裝置40乃將來自于以透過緩存器R2至R3而確認(rèn)的20位地址為基礎(chǔ)的CPU的地址信號予以操作并且把該等地址信號輸至內(nèi)存20以便存取內(nèi)存20的內(nèi)容。舉例來說,藉CPU 30所執(zhí)行的地址信號或是16位地址的操作乃分別包含以20位地址本身來取代,增加或是補充缺失的區(qū)段,例如,僅是舉例而已,把20位地址的四個最有效位存取至CPU 30的16位,并且在被要求時,在此個案中尚未在步驟430中發(fā)生,乃可額外增加該自由運算碼標(biāo)識符的未設(shè)定位以便作為該結(jié)果的關(guān)閉值。
在步驟465中,被存取的20位地址的內(nèi)存內(nèi)容乃接著透過資料線60、140、地址線80、180以及支持裝置40而被供至CPU 30。在步驟470中,因為在步驟450中所提供的預(yù)設(shè)CPU讀取運算碼標(biāo)識符之故,CPU 30乃對應(yīng)地被激活或是已處于一預(yù)設(shè)狀態(tài),而把補充的內(nèi)存內(nèi)容加載目的地緩存器,亦即該累加器250,系由該CPU讀取運算碼所定義者。最后,在步驟475中,CPU 30便應(yīng)用與所提供的預(yù)設(shè)CPU讀取運算碼標(biāo)識符相對應(yīng)的程序計數(shù)器240,其中此步驟可以在之前便先進(jìn)行。
在步驟475之后,在碼記憶窗370內(nèi)的程序計數(shù)器240乃根據(jù)一般指令序列而連續(xù)地指出下一與現(xiàn)個待處理的指令或是運算碼標(biāo)識符,而已被該自由運算碼標(biāo)識符所指令的20位地址的內(nèi)存內(nèi)容乃位于累加器250之中。與現(xiàn)正設(shè)定的資料記憶窗380的部位無關(guān),并不需要MMU 50或是資料描述子330的軟件-重新配置。當(dāng)了解第1圖所示的控制器之時,以第2圖為基礎(chǔ)的內(nèi)存存取便僅透過來自于位在現(xiàn)正設(shè)定記憶窗380中的指令集的讀取指令而比在內(nèi)存存取內(nèi)多進(jìn)行兩個時鐘循環(huán)。
在此實施例中,當(dāng)執(zhí)行自由運算碼標(biāo)識符的時候,尋址工作乃經(jīng)由間接使用CPU自己的緩存器之尋址所執(zhí)行。在現(xiàn)存CPU布局的控制器10的設(shè)計中,幾乎不需要對CPU的布局做任何改變,因此執(zhí)行這樣的控制器并不復(fù)雜。
請在參考第2圖,其也可用來指明使用一外部排列緩存器也是可行的,舉例來說,例如一產(chǎn)生該20位地址的XDPTR緩存器325。在此情形下,該自由運算碼將包含該XDPTR緩存器325是被用來尋址之用的指示。此可藉其它自由運算碼標(biāo)識符而加載來自于CPU內(nèi)部緩存器的數(shù)值,例如,舉例而言,在步驟400中的緩存器R1、R2、R3的內(nèi)容。在后面的個案中,這些自由運算碼標(biāo)識符將簡單地加入至用來加載步驟400的緩存器R1、R2、R3的指令之中。當(dāng)應(yīng)用這些使用外部緩存器XDPTR 325的自由運算標(biāo)識符時,CPU 30將不需要改變布局以便確認(rèn)緩存器R1至R3。這將有一好處,即CPU緩存器0至7將可同時針對不同目的而連續(xù)地被使用。
加載、讀取或是其它使用外部緩存器XDPTR 325的指令之范例乃被表列于后,其中一般的標(biāo)記已被使用Xmov XDPTR (R3&R2&R1) (2B)Xmov XDPTR (R7&R6&R5) (2B)Xpush (2B)Xpop(2B)Xmov XDPTR,@DPTR (2B)認(rèn)定MSB(最有效位)與LSB(最無效的位)的位置Xmov @DPTR,XDPTR (2B)認(rèn)定MSB(最有效位)與LSB(最無效的位)的位置Xmov XDPTR,@Ri (2B)i=0...7Xmov @Ri,XDPTR (2B)i=0...7Xmov XDPTR,dadr(2B)Xmov dadr,XDPTR(2B)Xadd XDPTR,#const16(4B)Xadd XDPTR,(Rn&Rn-1) (2B)i=0...7Xinc其中Xmov指的是一緩存器加載指令、Xadd指的是一增加指令、Xpush指的是一堆棧充填指令、Xpop指的是一堆棧轉(zhuǎn)變指令而Xinc指的是一增量指令。DPTR,Ri中的i系為1至7,dadr與X屬于CPU 30的內(nèi)部緩存器。Const16指的是16位操作數(shù)?!?amp;amp;”-符號指的是至左與至右的兩個表示的一并置(concatenation)。而每個運算碼標(biāo)識符所需要的組元乃被表示于在右邊的刮號內(nèi)。
值得注意的是,基于該自由運算碼識別符的可能讀取指令,其在該CPU 30中所有的可能目的緩存器,或是其它可尋址的內(nèi)存有關(guān)聯(lián)。此外,基于該自由運算碼識別符,其具有間接定位的可能讀取指令,可使用該CPU 30中所有的緩存器或是所有的內(nèi)存空間或是其各自的結(jié)合,用于形成該讀取指令所指的20-位地址。此外,可結(jié)合直接與間接的定位,亦即一或數(shù)個內(nèi)部緩存器的內(nèi)容,以及該自由運算碼識別符的一地址部分中的一或數(shù)個位。
同樣需要注意的是,先前的說明容易實施于自由運算碼識別符,相當(dāng)于20-位地址的存寫指令,其中僅改變該存寫的記憶內(nèi)容之傳送方向,其系由該CPU 30至該內(nèi)存20。
在下列說明中,表一系使用一般標(biāo)記,代表可能的讀取指令XMOV的范例,根據(jù)第2圖的實施例,其可藉由該支持裝置40而進(jìn)行處理,以響應(yīng)相當(dāng)?shù)脑撟杂蛇\算碼識別符310。XMOV系代表一運算碼,其進(jìn)入由特別緩存器所代表的記憶內(nèi)容,更詳細(xì)地系指非專利的指示物。而后,Ri其中i=0...4系為內(nèi)部的緩存器Ri,XDPTR系指外部的資料指示物325,A為累加器250,且「off8」系代表補償值8-位?!?amp;amp;」代表右與左的符號連續(xù)。
表一讀取指令Xmov A @XDPTR+off8(3B)Xmov A @XDPTR+Rx (3B)Rx={R0,R4}Xmov A @(R3&R2&R1)+off8 (3B)Xmov A @(R3&R2&R1)+Rx (3B)Rx={R0,R4}同樣需要注意的是該支持裝置40系支持一自由運算碼,用于處理非專利的指針或是對其響應(yīng)。一非專利的指針系包含一地址與該地址行示之代表。該地址形式代表,基本上系指以該非專利指針之地址,利用存取該記體的指令。該8051結(jié)構(gòu)提供四種定位形式,其中增加利用新的自由運算碼識別符之該存取形式。該四種8051定位形式,系包含
-IData存取,其中該存取(讀取或存寫)的發(fā)生,系與具有256-位大小的該CPU 30的該IRAM 220相關(guān),且因而僅以一種形式而被定位,-XData存取,其中進(jìn)行該存取(XMOV),以設(shè)定該外部內(nèi)存(XRAM)資料記憶窗280,且二位系代表定位,-PData存取,其中亦進(jìn)行該存取,以設(shè)定該外部內(nèi)存(XRAM)資料記憶窗380,對于定位,系結(jié)合一緩存器AdrXh與該預(yù)先決定的緩存器R1,以產(chǎn)生一16-位地址,以及-碼存取,其中設(shè)定碼記憶窗370系被存取(MVOC),以及二位亦系代表定。當(dāng)藉由該CPU 30而在該資料與地址線60與80上,輸出該個別16-位于地址位時,例如可在一添加線(未顯示)上藉由代表不同總線,自Xdata存取向外區(qū)分一碼存取。
在下列實施例中,該非專利指針的信息,亦即地址指示與定位形式指示,系如同第2圖之實施例,關(guān)于該20-位地址之表示,在內(nèi)部緩存器R1至R3之前,碼序列系被儲存在該機器中,而后提供后續(xù)自由運算碼識別符,其系相當(dāng)于用以處理非專利指針的一指令,以活化該支持裝置40,其系取決于該訂位形式代表,以后續(xù)地供應(yīng)至該CPU30,其系取決于該非專利指針之的地址代表,為具有一地址區(qū)域設(shè)定的一預(yù)先決定的CPU運算碼識別符。該非專利指針系代表處理非專利指針的指令,然而,其可被包含在該指令的該自由運算碼識別符的一部份,用于處理其本身非專利的指針。如同第2圖所描述,值得注意的是不僅可能使用內(nèi)部的緩存器用以間接定位,而且還可使用外部的緩存器,例如該外部XDPTR緩存器325,可參考下列敘述。
在下列表二讀取程序的范例中,對于在第一行中所表示的每一種形式的存取,在第二行中所示的該指令,實際上以一般標(biāo)記表示,緩存器R3的內(nèi)容系以第三行所示,該緩存器R2的內(nèi)容系如第四行中所示,當(dāng)進(jìn)行該碼存取至該自由運算碼識別符,用于處理非專利指針時,在個別時間該緩存器R1的內(nèi)容系于該第五行中表示,以及藉由該支持裝置40而供于該CPU 30之該CPU運算碼識別符或是一般標(biāo)記所表示的對應(yīng)指令,系如第六行中所示。此處所指的符號系指內(nèi)存內(nèi)容,如下所述,做為一地址、一點,A系代表累加器250,AdrXh系代表該CPU 30的一內(nèi)部緩存器,MOVX系代表關(guān)于該內(nèi)存20之一讀取/存寫指令,MOV系代表一讀取/存寫指令,其系指該CPU 30的內(nèi)部存儲器IRAM220,以及MONV系代表關(guān)于該內(nèi)存20的一碼存取。
表二
*任意值在此范例中,該支持裝置40接收該自由運算碼識別符,用于處理一非專利的指針,該支持裝置40將該緩存器R3的內(nèi)容譯碼,其中該定位形式代表被儲存以作為供應(yīng),取決于該定位形式代表,在此范例中,該定位形式不是20-位資料存取,該中央處理單元30一CPU運算碼識別符相當(dāng)于一存寫/讀取指令,系關(guān)于與該定位形式有關(guān)的內(nèi)存,且在此范例中,該定位形式代表系相當(dāng)于一20-位資料存取,以供應(yīng)該中央處理單元30一預(yù)先決定的CPU運算碼識別符,其系相當(dāng)于關(guān)于該內(nèi)存20之一存寫/讀取指令,以及后續(xù)可進(jìn)行一預(yù)先決定的動作以適當(dāng)?shù)剡\用該中央處理單元30之地址信號。
在一IData存取的范例中,該支持裝置40取代該自由運算碼識別符用于處理該非專利指針,其系關(guān)于一般的標(biāo)記,系指XMOV運算碼,供應(yīng)該CPU 30該運算碼識別符于「MOV A,@R1」。
在一XDdata的范例中,該CPU 30系被提供至該CPU運算碼用于「MOVX A,@R1」取代該XMOV運算碼,其中在該地址轉(zhuǎn)移過程中,藉由該CPU 30響應(yīng)該CPU運算碼,該支持裝置40運用該16-位地址輸出更重要的位,其相當(dāng)于該內(nèi)部緩存器R2的內(nèi)容,以及將所運用的地址通過至該MMU 50。
在該碼存取的范例中,該CPU 30系被供應(yīng)該CPU運算碼于「MOVCA,@+DPTR」取代該XMOV運算碼,其中根據(jù)該內(nèi)部緩存器R2與R1的內(nèi)容,在地址轉(zhuǎn)移過程中,藉由該CPU 30響應(yīng)所供應(yīng)的CPU運算,該支持裝置40系運用該16-位地址輸出,且以一改變的形式,將其輸出至該MMU 50。
在該PData存取的范例中,該CPU 30系被供于應(yīng)該CPU運算碼用于「MOVX A,@R1」取代該XMOV運算碼。
在該20-位資料存取范例中,該CPU 30系被供應(yīng)于該CPU運算碼用于「MOVX A,@R1」取代該XMOV運算碼,其中如上所描述之該支持裝置40,在該地址轉(zhuǎn)移過程中,系藉由該CPU 30,運用該地址輸出與該內(nèi)部緩存器R2至R3的內(nèi)容,以及以一改變的形式,將其輸出至該內(nèi)存20。
提供自由運算碼用于處理非專利的指令器之優(yōu)點,系為在硬件中進(jìn)行非專利指針的處理,而此通常系需要軟件譯碼。在第1圖中實際的控制器,具有特別的自由運算碼。用于處理非專利的指針,已獲得一節(jié)省約20個計時周期的時間。
需要注意的是如表二中所示,亦即1h-Eh系可能用于編碼該代表,其系為20-位資料存取??墒褂眠@些四位的14組合,使得14MB與另20-位的記憶定位,或者是在一實施例中,藉由使用24-位,1MB內(nèi)存用于定位以及藉由使用16-位線取代12-位線180,190。
在第1圖的控制器其關(guān)于讀取/存寫指令的自由運算碼程序步驟已被描述之后,該控制器10的運算模式如下所敘述,其具有相當(dāng)于跳躍指令的資由運算碼,例如具有返回目的或是不具有返回目的之跳躍指令。
第3圖系說明第1圖實施例的控制器所進(jìn)行的步驟程序,其中該CPU要求下一運算碼識別符以進(jìn)行處理,且此為關(guān)于一跳躍指令的一自由運算碼識別符,其具有直接定位與返回目的。如同之前的實施例,進(jìn)行下一運算碼識別符之要求,系代表該程序計算器中的碼地址。不同的是,其假設(shè)在其之前已處理先前的跳躍指令。除此之外,該要求之進(jìn)行僅藉由自該CPU 30輸出一要求信號,以及使用由該內(nèi)存20所供應(yīng)的一20-位碼地址。
在步驟600中,該CPU 30要求實施下一指令,其中直接接著一跳躍指令,其系藉由在該地址與數(shù)據(jù)線80,60上,將儲存在該程序計算器240中該16-位碼地址輸出。該程序計算器240的16-位碼地址系如步驟605中所表示與應(yīng)用,當(dāng)其通過未改變的該支持裝置40之后,藉由該MMU 50系使用該碼描述子240至一20-位碼地址,其通過該MMU 50至該內(nèi)存20。例如,該16-位碼地址系被儲存于該程序計算器中,相當(dāng)于該20-位碼地址之較不重要的部分,然而該碼描述子340系相當(dāng)于該20-位地址的一較重要4-位部分或是一較重要的n-位部分,其中n可為12。該16-位碼地址的對應(yīng)與運作系藉由MMU 50的輔助而進(jìn)行。此外,該碼描述子340可對應(yīng)至一20-位基礎(chǔ)或是一儲存庫的開始地址,因而藉由增加該描述子340而進(jìn)行該對應(yīng)至該16-位碼地址。
在步驟610中,所要求指令的該運算碼識別符,自該碼描述子340與該16-位程序計算器240所得的20-位碼地址,系取自于該內(nèi)存20,且經(jīng)由該地址與資料線140,190與120,達(dá)到未受該MMU 50所干擾的該支持裝置40。
在步驟615中,該支持裝置40的該譯碼器300檢視由該內(nèi)存20所接收的該運算碼識別符,是否為一自由運算碼識別符,其系由該運算碼所代表。在步驟615的結(jié)果中,得自該內(nèi)存的運算碼識別符不是一自由運算碼識別符,在步驟620中,其可通過且未受到該支持裝置40的干擾,且經(jīng)由該地址與資料線60與80,通過至該CPU 30,而后該CPU運算馬背譯碼且藉由該CPU 30以習(xí)知的方式實施。然而,若自該內(nèi)存20之該運算碼識別符系一自由運算碼識別符,則該運算碼系在步驟625中譯碼,以決定哪一該自由運算碼310為該運算碼。
在第3圖之實施例中,如前所述,假設(shè)請求運算碼識別器系為一關(guān)于具有直接尋址與轉(zhuǎn)回目的之跳越指令之自由運算碼識別器,在步驟630中,從位于自由運算碼識別器之地址部份而來之支撐裝置40,形成與新跳越指令有關(guān)之20-位地址,其系為自由運算碼識別器之對應(yīng)跳越指令目的地址。舉例來說,這個步驟也能包含直接從自由運算碼識別器之另一部分或間接從CPU 30內(nèi)部或外部之緩存器來決定一偏移量,并藉由加法器320將其加入指示于地址區(qū)段中之20-位地址。舉例來說,該自由運算碼識別器包含一運算碼之字節(jié)與三個以上的字節(jié),其中20位表示20-位地址,而其余四個位則表示偏移量。
在步驟635中,雖然自由運算碼并不屬于決定指令組290之CPU運算碼,CPU 30卻被該支撐裝置40輸入自由運算碼。步驟635系用以增加CPU中之程序計數(shù)器240數(shù)量,考慮到當(dāng)一隨后被輸入到CPU 30中之呼叫指令之CPU運算碼識別器只有3個字節(jié)長,對應(yīng)于具有直接20-位尋址之跳越指令之自由運算碼識別器需要4個字節(jié)。然而當(dāng)沒有轉(zhuǎn)回目的之跳越指令產(chǎn)生時,步驟635也可以省略,因為此時之程序計數(shù)器狀態(tài)不需作為一轉(zhuǎn)回跳越地址。當(dāng)CPU 30之堆棧270用另一種方式描述時,步驟635也可以省略,此將參閱下述步驟于其后進(jìn)行描述。
在步驟645中,CPU 30藉由該支撐裝置40接收一從CPU 30指令組而來之包含至少一跳越指令之預(yù)設(shè)CPU運算碼識別器順序,其系一16-位地址,其最后和碼描述子340一起產(chǎn)生20-位跳越地址,以根據(jù)步驟600至610來適當(dāng)?shù)卣{(diào)整后來的指令請求。該順序系根據(jù)自由運算碼與由內(nèi)部緩存器決定之20-位地址。
在步驟650中,CPU 30譯碼預(yù)設(shè)CPU運算碼識別器之順序,并執(zhí)行對應(yīng)指令。如步驟655之結(jié)論,CPU運算碼識別器之順序被提供,因而CPU 30執(zhí)行CPU運算碼識別器之順序時,會設(shè)定程序計數(shù)器PC至較低,亦即較不重要之由內(nèi)部緩存器決定之20-位地址之16位,在自由運算碼識別器之后將指向該運算碼識別器之20-位地址填入堆棧270中,并增加三個字節(jié)至堆棧指針230。在步驟635中,該支撐裝置40提供CPU 30一具有一對應(yīng)于由關(guān)于包含該20-位地址之64K字節(jié)庫之地址部分決定之20-位地址偏移量之16-位目的地址之轉(zhuǎn)回目的之跳越指令,來設(shè)定程序計數(shù)器240至16-位目的地址,之后,在步驟645中,在自由運算碼識別器進(jìn)入堆棧270后,一對應(yīng)于20-位地址之缺掉的位之堆棧填入指令(即常用之發(fā)送指令)會輸入至運算碼識別器之20-位地址。否則,在步驟635中,支持裝置40會提供CPU 30一不具有轉(zhuǎn)回目的之跳越指令,然后,在步驟645中,在自由運算碼識別器進(jìn)入堆棧270后,三個分別對應(yīng)于該20-位地址之部分之堆棧填入指令(即常用之發(fā)送指令)會輸入至運算碼識別器之20-位地址。
在步驟660中,該支持裝置40系根據(jù)由地址部分決定之20-位地址而實現(xiàn)及適應(yīng)了碼描述子340,因此之后,碼描述子340系用這種方式設(shè)定,其中該20-位地址系包含于碼記憶窗370中,而程序記數(shù)器240在碼記憶窗內(nèi)指向希望的位置。用這種方式,該支持裝置40系控制該碼描述子340。
對應(yīng)于自由資料存取,本案之碼跳越優(yōu)點系控制需要之碼描述子,由于CPU之最大尋址內(nèi)存容量不需要藉由軟件重設(shè)碼描述子而獲得,為了提供CPU 30關(guān)于20-位地址之信息,并同時更新或適應(yīng)碼描述子,該重設(shè)可藉由對應(yīng)于20-位跳越指令之自由操作識別器與該支持裝置40之響應(yīng)而獲得。特別地,在不具有轉(zhuǎn)回目的之跳越時,再次設(shè)定與重新設(shè)定碼描述子之軟件消耗非常復(fù)雜,而跳越自由運算碼識別器提供了一重大的優(yōu)勢。此外,因為該支持裝置對決定指令組290之CPU運算碼系顯而易見且不會對他們作出響應(yīng),由指令組而來之跳越指令之使用仍然是可能的。關(guān)于目前之記憶窗組或固定之記憶窗之指令組290之跳越指令系因此而執(zhí)行。
需要指出的是,類似于關(guān)于第2圖所描述之資料存取,也是在碼跳越方面,有不同之形成關(guān)于跳越指令之20-位地址的可能性。特別的是,根據(jù)第2圖之實施例之使用間接尋址之自由運算碼是可行的。
在關(guān)于操作模式之第1圖之控制器之操作模式已于之前描述過后,當(dāng)關(guān)于碼跳越或資料存取之自由運算碼產(chǎn)生時,關(guān)于不同可能變化與之前描述的簡化說明之改善之特別實施例將繼續(xù)描述。
實現(xiàn)被支持裝置40執(zhí)行之指令,其中自由運算碼系指令為原子指令,其無法被支持裝置40以CPU之中斷線90或MMU 50之中斷線上的中斷信號來中斷。在此實施例中,該支持裝置停止接踵而來的中斷信號。除此之外,為了實現(xiàn)非中斷碼順序為原子指令,其也有可能使用進(jìn)一步的自由運算碼310。
雖然碼記憶窗370與資料記憶窗380皆具有64k字節(jié)的容量已描述過,而只有一碼描述子330與一資料描述子340必須在MMU 50里被控制,也可以假設(shè)為碼記憶窗370及/或資料記憶窗380一起被分成好幾個64k字節(jié)的區(qū)段。可能的區(qū)段容量系為16k字節(jié)或32k字節(jié)。在記憶窗370及380之區(qū)段容量為32k字節(jié)的例子中,兩個資料描述子與兩個碼描述子將在MMU 50里被控制。其可能假設(shè)為使用一關(guān)于ROM及XRAM內(nèi)存區(qū)域之獨立內(nèi)存區(qū)段,及使用關(guān)于EEPROM內(nèi)存區(qū)域之其它獨立內(nèi)存區(qū)段。在20-位跳越中,兩個描述子或只有一描述子將被自動采用。當(dāng)32k程序計數(shù)器溢位時,亦即超過程序計數(shù)器240 32k,MMU 50將自動地增加或減少。為了相關(guān)的跳越,溢位與下溢也必須正確地待處理。當(dāng)相關(guān)跳越離開一區(qū)段時,CPU中的程序計數(shù)器將被采用,而MMU描述子將被重設(shè)。當(dāng)離開區(qū)段之程序計數(shù)器時,所謂的自動增加,該程序系類似于相關(guān)跳越之程序。
此外,具有好幾個內(nèi)部緩存器庫,例如緩存器R1至R3,是可能的。且當(dāng)藉由該支持裝置來存取或輪詢緩存器R1至R3的內(nèi)容時,如前所述,剛設(shè)定之內(nèi)部緩存器庫已被使用。此外,除了前述之緩存器R0至R7、dadr、及DPTR之外的其它CPU內(nèi)部緩存器通常用于間接尋址上。
參照先前之記載,至于第1圖之控制器之設(shè)定,已明確指出不同的變化是可能的。因此,MMU滿50與該支持裝置40并不需要分離。描述子與推疊延伸能被該支持裝置40或其控制。當(dāng)使用記憶存取指令或由CPU 30指令組而來之跳越指令之程序支持被省略,而只有使用碼跳越及資料存取之自由運算碼之程序被支持,則資料描述子可以完全免除。僅使用20-位資料存取或跳越指令之程序之優(yōu)點為,對這種程序而言,具有1M字節(jié)容量之連續(xù)尋址內(nèi)存將是可見或可尋址的。此外,應(yīng)指明CPU之設(shè)定可以不同方式形成,因此累加緩存器250、堆棧指針230、及程序計數(shù)器240可于IRAM 220里被控制。IRAM也能包含任何其它內(nèi)存形式或其任何組合,例如NVM。
關(guān)于第2圖及第3圖中設(shè)明的過程,應(yīng)指明其步驟之順序系為可變。
額外地及可替代地,可假設(shè)上述之具有轉(zhuǎn)回目的(FCALL)之20-位碼跳越指令,其中三個字節(jié)系放入堆棧中,而MMU系自動地重新配置,不具有轉(zhuǎn)回目的(FJMP)之20-位碼跳越指令像前述之20-位FCALL跳越般被執(zhí)行,但并未將轉(zhuǎn)回跳越數(shù)據(jù)儲存于堆棧中。舉例來說,在所有具有轉(zhuǎn)回選擇或轉(zhuǎn)回目的之20-位跳越指令中,三個字節(jié)被寫入堆棧內(nèi),其中CPU轉(zhuǎn)回指令(RET)被提供,因此三個字節(jié)從堆棧中被取出。根據(jù)從堆棧中被取出的字節(jié),碼描述子能在最后一CALL指令之前被帶入狀態(tài)。對每一中斷階層而言,當(dāng)轉(zhuǎn)回跳越發(fā)生時,亦即指令組290之轉(zhuǎn)回跳越指令,為了不必恢復(fù)舊的上下文,分離之上下文能被儲存。
前述之控制器實施例因此能解決好幾個問題,其系根據(jù)使用有較佳處理速度但有較差尋址能力之結(jié)構(gòu)。前述之控制器允許在擴展地址空間內(nèi)進(jìn)行一直接有效存取。在特定的實施上,存取時間只比存取目前設(shè)定之記憶窗多出兩個時脈周期。此外,當(dāng)使用一混合、同時直接與間接尋址,例如資料指針與四位自由運算碼之自由區(qū)段,藉由該支持裝置之24-位加法器,不必改變資料指針,相鄰資料之幾個字節(jié)(24=16字節(jié))可藉由使用8位作為自由運算碼與資料指針之地址部分形成之地址之偏移量而被直接存取。被MMU分割之碼因此更容易產(chǎn)生,因為程序設(shè)計師不再需要明確地重新配置MMU來執(zhí)行非設(shè)定記憶窗中之碼。重新配置與恢復(fù)將藉由根據(jù)自由運算碼而使用20-位碼跳與資料存取指令來自動地進(jìn)行,因此程序設(shè)計師可將1MB之整個實體地址空間視為一線性尋址地址空間,同時其中一僅根據(jù)CPU指令組之程序落后兼容性系被維持。對一般指針而言,替換掉復(fù)雜的軟件譯碼,硬件譯碼系用以產(chǎn)生一相當(dāng)快速的處理。例如在20-位資料存取上,即使在控制一般指針中,從自由運算碼識別器之未使用區(qū)段而來的偏移量可被用來有效存取連續(xù)資料,而不必改變資料指針。此外,內(nèi)部堆棧范圍可藉由外部堆棧范圍來延伸,而非中斷碼順序能實現(xiàn)為原子指令。這些新穎性與改善可僅藉由來將自由運算碼識別器轉(zhuǎn)變?yōu)檫\算碼識別器順序之現(xiàn)存CPU設(shè)計之些許改變,或藉由支持裝置或一能當(dāng)作一狀態(tài)機器來執(zhí)行的介殼程序來修改CPU外部控制信號而獲得,在這種方式下,朝向外部之指令看起來像是需求的指令。
特別在芯片卡區(qū)域中,本案之優(yōu)點為,客戶之性能過剩與碼額外消耗可降至最低,而同時可獲得有效的編譯程序支持。
至于MMU與該支持裝置,應(yīng)指明其系可實現(xiàn)為一單元。
最后,應(yīng)指明除了上述之8051結(jié)構(gòu)外,本案更可進(jìn)一步應(yīng)用于其它控制結(jié)構(gòu)中,因此,關(guān)于記憶窗、字節(jié)智能讀出內(nèi)存、及地址線與資料線之?dāng)?shù)目之記憶容量指示,僅系本案之較佳實施例。
符號列表10 控制器20 內(nèi)存30 中央處理單元40 支持裝置50 記憶管理單元60 資料線80 地址線90 中斷線100 資料線120 地址線130 中斷線140 資料線150 資料線180 地址線190 地址線210 譯碼器220 內(nèi)部RAM230 堆棧指針240 程序計數(shù)器245 資料指針緩存器250 累加器260 內(nèi)部緩存器270 堆棧280 CPU運算碼290 指令集300 譯碼器310 自由運算碼320 加法器325 外部資料指針緩存器330 資料描述子
340 碼描述子350 中斷描述子370 碼記憶窗380 資料記憶窗542 線800 控制器805 中央處理單元810 記憶管理單元815 內(nèi)存820 地址線825 資料線840 地址線845 資料線855 指令集860 資料描述子865 碼記憶窗870 管理碼875 碼描述子880 資料記憶窗885 內(nèi)部緩存器890 堆棧
權(quán)利要求
1.一種用于控制一中央處理單元(30)進(jìn)行關(guān)于一內(nèi)存(20)尋址之方法,其中包括至少一特定運算碼識別符之一組運算碼識別符系與該中央處理單元(30)相關(guān)連,且其中該中央處理單元(30)系加以配置以尋址具有該內(nèi)存(20)之一第一內(nèi)存大小之一第一內(nèi)存區(qū)域(270、380),其中該方法系包括下列步驟藉由耦接至該中央處理單元(30)之支持裝置(40)監(jiān)控(615)自該內(nèi)存(20)至該中央處理單元(30)之資料流量(data traffic);其中,在此例子中,自該內(nèi)存(20)至該中央處理單元(30)之該資料流量系包括該特定運算碼識別符(310),藉由該支持裝置(40)形成一新地址,其中該新地址系定義于具有該內(nèi)存(20)之一第二內(nèi)存大小之一第二內(nèi)存區(qū)域(20),且其中該第二內(nèi)存大小系較該第一內(nèi)存大小為大;藉由該支持裝置(40)提供配置有源自該中央處理單元(30)之一指令集之一跳越指令(jump command)之一預(yù)設(shè)運算碼識別符至該中央處理單元(30),其中該預(yù)設(shè)運算碼識別符系具有關(guān)于該第一內(nèi)存區(qū)域(270、380)之一目標(biāo)地址;以及藉由該支持裝置(40)管理一碼描述子(340),與該目標(biāo)地址一起產(chǎn)出該新地址。
2.一控制器,包括一中央處理單元(30)具有包括至少一特定運算碼識別符之一組運算碼識別符(280、310),其中該中央處理單元(30)系加以配置以尋址具有一內(nèi)存(20)之一第一內(nèi)存大小之一第一內(nèi)存區(qū)域(370、380);支持裝置(40)耦接至該中央處理單元(30)以監(jiān)控自該內(nèi)存(20)至該中央處理單元(30)之一該資料流量,其中,在此例子中,自該內(nèi)存(20)至該中央處理單元(30)之該資料流量系包括該特定運算碼識別符(310),且其中該支持裝置(40)系加以配置以執(zhí)行下列步驟形成一新地址,其中該新地址系定義于具有該內(nèi)存(20)之一第二內(nèi)存大小之一第二內(nèi)存區(qū)域(20)中,其中該第二內(nèi)存區(qū)域系較該第一內(nèi)存區(qū)域為大,以及提供配置有源自該中央處理單元(30)之一指令集之一跳越指令(jump command)之一預(yù)設(shè)運算碼識別符至該中央處理單元(30),其中該預(yù)設(shè)運算碼識別符系具有關(guān)于該第一內(nèi)存區(qū)域(370、380)之一目標(biāo)地址;以及管理一碼描述子(340),與該目標(biāo)地址一起產(chǎn)出該新地址。
3.如權(quán)利要求第2項所述之控制器,其中該組運算碼識別符(280、310)系包括復(fù)數(shù)個運算碼識別符,其系關(guān)連于決定該中央處理單元(30)之該指令集(290)之指令,且其中源自該中央處理單元(30)之該指令集(290)中之指令沒有被配置于該特定運算碼識別符(310)。
4.如權(quán)利要求第2或第3項所述之控制器,其更包括一外部緩存器,以儲存該碼描述子,其中該外部緩存器系加以配置而外接于該中央處理單元(30),其中該碼描述子系被提供以界定該第一內(nèi)存區(qū)域在該第二內(nèi)存區(qū)域內(nèi)之位置;其中,在此例子中,自該內(nèi)存至該中央處理單元之該資料流量系包括該特定運算碼識別符,且其中該支持裝置(40)系加以配置以執(zhí)行下列步驟以使該新地址包含于該第一內(nèi)存區(qū)域中之方式設(shè)定該碼描述子(340)之值;以及以使關(guān)于該第一內(nèi)存區(qū)域(370)之該目標(biāo)地址對應(yīng)于關(guān)于該第二內(nèi)存區(qū)域之該新地址之方式設(shè)定關(guān)于該第一內(nèi)存區(qū)域(370)之該目標(biāo)地址。
5.如權(quán)利要求第4項所述之控制器,其更包括一程序計數(shù)器(240)包括于該中央處理單元(30)之內(nèi),其中,關(guān)于該第一內(nèi)存區(qū)域(370)之一碼地址系儲存于其中;為了監(jiān)控自該中央處理單元(30)至該內(nèi)存(20)之該資料流量之裝置(50),其中,在此例子中,自該中央處理單元(30)至該內(nèi)存(20)之該資料流量系包括關(guān)于該第一內(nèi)存區(qū)域之該碼地址,該裝置(50)系耦接至該中央處理單元(30),并加以配置以執(zhí)行下列步驟基于該碼描述子(340)之內(nèi)容操作之,以獲得關(guān)于該第二內(nèi)存區(qū)域(20)之該新地址;以及將其以一已改變之形式傳遞至該內(nèi)存(20)以存取該內(nèi)存(20)。
6.如權(quán)利要求第2至第5項其中之一所述之控制器,其中該中央處理單元(30)系響應(yīng)該已供應(yīng)之預(yù)設(shè)運算碼識別符以要求待處理之下一運算碼識別符而配置以執(zhí)行下列步驟將該目標(biāo)地址儲存于該中央處理單元(30)之一程序計數(shù)器(240)中;以及將其在該資料流量之范圍內(nèi)自該中央處理單元(30)輸出至該內(nèi)存(20)。
7.如權(quán)利要求第2至第6項其中之一所述之控制器,其中該中央處理單元(30)更包括一堆棧內(nèi)存(270)以及一堆棧記憶指針(230)指示該堆棧內(nèi)存(270)中目前該中央處理單元(30)自該堆棧內(nèi)存(270)拿取資料或增加資料之一位置,其中該支持裝置(40)系加以適應(yīng)以進(jìn)一步提供至少另一預(yù)設(shè)運算碼識別符至該中央處理單元(30),其中用以利用一值而填充在該堆棧記憶指針之該堆棧內(nèi)存之源自該中央處理單元(30)之該指令集之一指令系配置于該至少一更進(jìn)一步之運算碼識別符,其中該值系取決于關(guān)于該運算碼識別符緊接于該特定運算碼識別符后而配置于其上之該第二內(nèi)存區(qū)域之一目前地址。
8.如權(quán)利要求第2至第8項其中之一所述之控制器,其中該目標(biāo)地址系為該新地址之一較不重要之部分,而該描述子系為該新地址之一較重要部分。
9.一種用于控制一中央處理單元(30)進(jìn)行關(guān)于一內(nèi)存(20)尋址之方法,其中包括至少一特定運算碼識別符之一組運算碼識別符系關(guān)連于該中央處理單元(30),且其中該中央處理單元(30)系加以配置以尋址具有該內(nèi)存(20)之一第一內(nèi)存大小之一第一內(nèi)存區(qū)域(370、380),其中該方法系包括下列步驟藉由耦接至該中央處理單元(30)之支持裝置(40)監(jiān)控(420)自該內(nèi)存(20)至該中央處理單元(30)之一資料流量(data traffic),以及自該中央處理單元(30)至該內(nèi)存(20)之一資料流量(datatraffic);若自該內(nèi)存(20)至該中央處理單元(30)之該資料流量(datatraffic)系包括該特定運算碼識別符,藉由該支持裝置(40)形成一新地址,其中該新地址系定義于具有該內(nèi)存(20)之一第二內(nèi)存大小之一第二內(nèi)存區(qū)域(20),且其中該第二內(nèi)存大小系較該第一內(nèi)存大小為大;藉由該支持裝置(40)提供配置有源自該中央處理單元(30)之一指令集之一指令之一預(yù)設(shè)運算碼識別符至該中央處理單元(30);以及藉由該支持裝置(40)基于該新地址而操作關(guān)于在自該中央處理單元(30)至該內(nèi)存(20)之該資料流量范圍內(nèi)該第一內(nèi)存區(qū)域(380)而定義之一地址,以獲得關(guān)于該第二內(nèi)存區(qū)域之一已操作之地址。
10.一控制器,包括一中央處理單元(30)具有包括至少一特定運算碼識別符之一組運算碼識別符(280、310),其中該中央處理單元(30)系加以配置以尋址具有一內(nèi)存(20)之一第一內(nèi)存大小之一第一內(nèi)存區(qū)域(270、380);支持裝置(40)耦接至該中央處理單元(30)以監(jiān)控自該內(nèi)存(20)至該中央處理單元(30)之一該資料流量,以及自該中央處理單元(30)至該內(nèi)存(20)之一資料流量(data traffic),其中,在此例子中,自該內(nèi)存(20)至該中央處理單元(30)之該資料流量系包括該特定運算碼識別符(310),且其中該支持裝置(40)系加以配置以執(zhí)行下列步驟形成一新地址,其中該新地址系定義于具有該內(nèi)存(20)之一第二內(nèi)存大小之一第二內(nèi)存區(qū)域(20)中,且其中該第二內(nèi)存大小系較該第一內(nèi)存大小為大,以及提供關(guān)連于源自該中央處理單元(30)之該指令集之一指令之一預(yù)設(shè)運算碼識別符至該中央處理單元(30);以及基于該新地址而操作關(guān)于在自該中央處理單元(30)至該內(nèi)存(20)之該資料流量范圍內(nèi)之該第一內(nèi)存區(qū)域(380)而定義之一地址,以獲得關(guān)于該第二內(nèi)存區(qū)域之一已操作之地址。
11.如權(quán)利要求第10項所述之控制器,其中該組運算碼識別符(280、310)系包括復(fù)數(shù)個運算碼識別符,其系配置有決定該中央處理單元(30)之該指令集(290)之指令,且其中源自該中央處理單元(30)之該指令集(290)中之指令沒有關(guān)連于該特定運算碼識別符(310)。
12.如權(quán)利要求第10或第11項所述之控制器,其中該預(yù)設(shè)運算碼識別符系關(guān)連于自該中央處理單元(30)之該指令集(290)之一讀取或?qū)懭胫噶睢?br>
13.如權(quán)利要求第10至第12項其中之一所述之控制器,其中該指令系有關(guān)關(guān)于對應(yīng)該新地址之一部分之該第一內(nèi)存區(qū)域(380)之一存取地址,且其中當(dāng)操作關(guān)于在自該中央處理單元(30)至該內(nèi)存(20)之該資料流量范圍內(nèi)之該第一內(nèi)存區(qū)域(380)而定義之該地址時,該支持裝置(40)系加以配置以執(zhí)行下列步驟藉由該新地址剩下之部分補充之。
14.如權(quán)利要求第10至第13項其中之一所述之控制器,其中該指令系有關(guān)關(guān)于該第一內(nèi)存區(qū)域(380)之一存取地址,且其中當(dāng)操作關(guān)于在自該中央處理單元至該內(nèi)存(20)之該資料流量范圍內(nèi)之該第一內(nèi)存區(qū)域(380)而定義之該地址時,該支持裝置(40)系加以配置以執(zhí)行下列步驟藉由該新地址而取代之。
15.如權(quán)利要求第13或第14項所述之控制器,其中該指令更進(jìn)一步有關(guān)于一補償值(offset value),且其中該支持裝置(40)系配置以增加該補償值至該已操作之地址。
16.如權(quán)利要求第10至第15項其中之一所述之控制器,其更包括一外部緩存器,以儲存一地址(330),其中該外部緩存器系加以配置而外接于該中央處理單元(30),且其中此地址(330)系加以提供以指示在該第二內(nèi)存區(qū)域范圍內(nèi)之該第一內(nèi)存區(qū)域之一位置;為了監(jiān)控自該中央處理單元至該內(nèi)存(20)之該資料流量之裝置(50),其中,在此例子中,自該中央處理單元(30)至該內(nèi)存(20)之該資料流量系包括關(guān)于該第一內(nèi)存區(qū)域(330)而定義之一地址,該裝置(50)系耦接至該中央處理單元(30),并加以配置以執(zhí)行下列步驟基于該外部緩存器(330)之內(nèi)容操作之,以獲得關(guān)于該第二內(nèi)存區(qū)域(20)之一對應(yīng)地址;以及將其以一已改變之形式傳遞至該內(nèi)存(20)以存取該內(nèi)存(20),且其中,在此例子中,自該內(nèi)存(20)至該中央處理單元(30)之該資料流量系包括該特定運算碼識別符,且該支持裝置(40)系加以配置以執(zhí)行下列步驟以該第一內(nèi)存區(qū)域(380)包含該已操作之地址之方式適應(yīng)該外部緩存器(330)之該內(nèi)容,以及在此例子中,自該內(nèi)存(20)至該中央處理單元(30)之該資料流量系包括該復(fù)數(shù)個運算碼識別符之關(guān)連于源自該中央處理單元(30)之該指令集(290)之一寫入或讀取指令之一運算碼識別符,以執(zhí)行下列步驟將其傳遞至該中央處理單元(30);以及使關(guān)于該第一內(nèi)存區(qū)域之該地址于自該中央處理單元(30)至該內(nèi)存(20)之該資料流量中保持不變。
17.如權(quán)利要求第10項所述之控制器,其中該特定運算碼識別符系對應(yīng)用于掌握一通用指針(generic pointer)之一指令,其中該通用指針系包括一地址指示以及一尋址型態(tài)指示,其中該地址指示系對應(yīng)該新地址,而該尋址型態(tài)指示系指示參照該第二內(nèi)存區(qū)域之該地址指示。
18.如權(quán)利要求第17項所述之控制器,其中,在此例子中,自該內(nèi)存(20)至該中央處理單元(30)之該資料流量系包括對應(yīng)用以掌握包含一地址指示以及一尋址型態(tài)指示之一通用指針之一指令之一特定運算碼識別符,且該支持裝置(40)系加以配置以執(zhí)行下列步驟檢查該尋址型態(tài)指示;藉由該預(yù)設(shè)運算碼識別符之供應(yīng)以及該地址之操作,執(zhí)行該新地址之形成,在此例子中,該尋址型態(tài)指示系指示參照該第二內(nèi)存區(qū)域之該地址指示,以及供應(yīng)該中央處理單元關(guān)于源自參照該地址指示之該指令集(290)之一指令之一運算碼識別符。
19.如權(quán)利要求第2至第8項以及第10至第18項其中之一所述之控制器,其中該中央處理單元(30)包括至少一內(nèi)部緩存器(260),且該支持裝置(40)系耦接至該中央處理單元(30)以決定該至少一內(nèi)部緩存器之內(nèi)容,并于形成該新地址時,加以配置以執(zhí)行下列步驟決定該至少一內(nèi)部緩存器之內(nèi)容;以及自該至少一內(nèi)部緩存器之內(nèi)容形成該新地址。
20.如權(quán)利要求第2至第8項以及第10至第18項其中之一所述之控制器,其包括至少一外部資料指針緩存器(325)系加以配置以外接于該中央處理單元,且其中該支持裝置(40)于形成該新地址時,系加以配置以執(zhí)行下列步驟決定該至少一外部資料指針緩存器(325)之內(nèi)容;以及自該至少一外部資料指針緩存器(325)之內(nèi)容形成該新地址。
21.如權(quán)利要求第2至第8項以及第10至第18項其中之一所述之控制器,其中該支持裝置(40)于形成該新地址時,系加以配置以執(zhí)行下列步驟自該運算碼識別符之一地址部分而至少部分地形成該新地址。
22.如權(quán)利要求第21項所述之控制器,其中該支持裝置(40)于自該運算碼識別符之該地址部分而至少部分地形成該新地址時,系加以配置以執(zhí)行下列步驟提供該中央處理單元(30)該或另一特定運算碼識別符,以及其中該中央處理單元(30)系包括一程序計數(shù)器,其中系儲存有一關(guān)于該第一內(nèi)存區(qū)域之碼地址,以及該中央處理單元(30)系加以配置以執(zhí)行下例步驟以該碼地址要求待處理之一下一運算碼識別符,以及響應(yīng)供應(yīng)至該中央處理單元(30)之該特定運算碼識別符而增加該程序計數(shù)器(240),以及否則忽略供應(yīng)至該中央處理單元(30)之該特定運算碼識別符。
23.如權(quán)利要求第2至第8項以及第10至第22項其中之一所述之控制器,其中,在此例子中,該特定運算碼識別符(310)系包含于自該內(nèi)存(20)至該中央處理單元(30)之該資料流量中,且該支持裝置(40)系加以配置以執(zhí)行下列步驟停止輸入中斷信號。
全文摘要
本發(fā)明系基于CPU(30)之自由CPU運算碼識別符或用于任何理由之CPU運算碼識別符可以用于在CPU(30)上游之控制支持裝置(40)之發(fā)現(xiàn),其中該支持裝置(40)系可因響應(yīng)此些運算碼識別符(310)而形成新的,如關(guān)于具有第二內(nèi)存(5)之第二內(nèi)存區(qū)域(20)之實體地址,而該第二內(nèi)存(5)系大于,如可藉由CPU尋址之邏輯內(nèi)存尺寸(370、380)。藉由特定運算碼識別符(310),因此有可能在實行機器碼過程中尋址支持裝置(40),該支持裝置(40)系用于監(jiān)控自內(nèi)存(20)至中央處理單元(30)并可將被處理之運算碼或運算碼識別符提供至CPU之資料流量,以及可實行當(dāng)某些特定運算碼識別符(310)發(fā)生時關(guān)于新形成之地址測量。以此方式,一方面,可以避免復(fù)雜之CPU(30)重新設(shè)計,另一方面,亦可以避免同時實行機器碼及處理速度時,對復(fù)雜之現(xiàn)今內(nèi)存窗(370、380)之軟件重新設(shè)定之需要。
文檔編號G06F9/42GK1533499SQ02814483
公開日2004年9月29日 申請日期2002年6月17日 優(yōu)先權(quán)日2001年7月18日
發(fā)明者J·弗雷瓦爾德, D·拉貝, J 弗雷瓦爾德 申請人:因芬尼昂技術(shù)股份公司