專利名稱:用于修改靜態(tài)存儲裝置中微指令的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于微處理器的控制存儲器領(lǐng)域。具體說,本發(fā)明涉及對同時使用只讀存儲器(ROM)和隨機(jī)存儲器(RAM)的控制存儲器裝置的修改。
背景技術(shù):
控制存儲器含有控制微處理器數(shù)據(jù)通路的可執(zhí)行微指令。在一些機(jī)器上,控制存儲器由RAM組成,而在其他機(jī)器中,控制存儲器就是ROM。RAM的內(nèi)容很容易用新的信息進(jìn)行重寫。然而,RAM是易失的,即RAM的內(nèi)容僅在給電路施加電源的這段時間周期期間能夠保持。相反,ROM的內(nèi)容是在ROM制造時插入,并且即使在斷電時也不能被改動或擦除。
當(dāng)大規(guī)模制造時,ROM比RAM便宜很多。處于對RAM和ROM成本的考慮,微碼程序員通常用RAM設(shè)計新的電路,以便可以很容易地修正程序錯誤,但是在最終設(shè)計階段,為了將生產(chǎn)成本減至最小,就用ROM取代RAM。然而,即使是最嚴(yán)格的設(shè)計檢驗也會遺漏程序錯誤,而這些錯誤將隨后永久嵌入在靜態(tài)ROM中。
當(dāng)在存儲于ROM中的微指令集中發(fā)現(xiàn)有程序錯誤時,程序員就創(chuàng)建補(bǔ)丁來修正錯誤。在本領(lǐng)域中的“補(bǔ)丁”術(shù)語是指引入用于修正先前代碼或添加新功能的新代碼。微指令整體上稱為“代碼”,并且以模塊方式進(jìn)行設(shè)計,其中整個代碼由單獨的子程序組成。因此,可以對代碼中某部分的錯誤進(jìn)行隔離和修正,而不需要對整個代碼都進(jìn)行重寫。當(dāng)發(fā)現(xiàn)缺陷子程序時,程序員將創(chuàng)建沒有錯誤的副本子程序,該子程序會取代缺陷子程序被程序流程調(diào)用。通過同時使用RAM和ROM存儲微指令集的系統(tǒng)就可能實現(xiàn)這種技術(shù)。子程序通常存儲在ROM中,而調(diào)用子程序的主程序代碼則存儲在RAM中。因為程序流程按RAM中的微指令集進(jìn)行,所以,來自主代碼的出口點就允許程序流程執(zhí)行ROM中子程序的微指令。當(dāng)子程序已經(jīng)執(zhí)行,程序流程就退出子程序,并且重返RAM中的主代碼。然而,當(dāng)在子程序中發(fā)現(xiàn)錯誤時,對應(yīng)于缺陷子程序的出口點無效,并且程序員必須用新的子程序修補(bǔ)錯誤。因為ROM為靜態(tài),所以這個新的子程序必須存儲在RAM中。
由于除主代碼中的預(yù)定點外就不能進(jìn)入或退出缺陷子程序,所以,這種方法就比較缺乏靈活性。另外,因為為了修正子程序中的程序錯誤,無論錯誤是多么次要也必須在RAM中復(fù)制整個子程序,因而,這種方法浪費了空間。本領(lǐng)域需要在程序中具有更加靈活的ROM和RAM間的出口和進(jìn)入點。另外,需要將修正ROM中程序錯誤所需的RMA容量減至最小。
發(fā)明內(nèi)容
本發(fā)明定位于一種為使程序員對ROM微指令具有更直接的訪問和控制,而對駐留在ROM中的微指令程序流程進(jìn)行修改的方法和設(shè)備。因為不能對ROM中的微指令進(jìn)行改動,所以,任何所需的對微指令集的變化都必須在RAM中進(jìn)行。本發(fā)明允許程序員直接訪問ROM中的程序錯誤,而不需要在RAM中復(fù)制整個子程序。本發(fā)明也允許程序員給陳舊的ROM添加新的功能,而不是用新設(shè)計的ROM來取代舊的ROM。
本發(fā)明的示范實施例是一種用于對靜態(tài)存儲裝置中的程序流程進(jìn)行修改的方法,該方法包括產(chǎn)生觸發(fā)從靜態(tài)存儲裝置到可編程存儲裝置的跳轉(zhuǎn)的中斷的步驟。
在本發(fā)明的一個實施例中,跳轉(zhuǎn)點寄存器用于保持跳轉(zhuǎn)點的地址。該跳轉(zhuǎn)點會觸發(fā)程序流程中的中斷事件。程序計數(shù)器含有程序流程中當(dāng)前微指令的地址。如果程序計數(shù)器保留有與跳轉(zhuǎn)點寄存器中跳轉(zhuǎn)點地址相等的地址,就產(chǎn)生中斷事件。這個中斷事件開始在程序流程中進(jìn)行從靜態(tài)存儲裝置到可編程存儲裝置的改變。
在本發(fā)明的一個實施例中,中斷事件可以用于修復(fù)靜態(tài)存儲裝置的程序錯誤。程序員可以創(chuàng)建針對駐留在靜態(tài)存儲裝置中缺陷代碼部分的補(bǔ)丁。隨后,程序員可以將出口地址存儲在寄存器或其他存儲裝置中,其中出口地址對應(yīng)于缺陷代碼部分中預(yù)定微指令的地址。將出口地址與所有在程序流程中執(zhí)行的微指令進(jìn)行比較。當(dāng)在程序流程中出現(xiàn)預(yù)定的微指令,就執(zhí)行補(bǔ)丁中的微指令。
在本發(fā)明的另一實施例中,中斷事件可以在程序流程中產(chǎn)生給靜態(tài)存儲裝置添加功能的改變。這種改變可以是存儲在可編程存儲裝置中的附加代碼形式,該形式可以在執(zhí)行來自靜態(tài)存儲裝置的微代碼的中間執(zhí)行。
在本發(fā)明的另一實施例中,多個跳轉(zhuǎn)點寄存器可以與相應(yīng)的比較器一起與中斷端口耦合,該端口可以使每個單獨的跳轉(zhuǎn)點寄存器有效或無效。每個單獨的跳轉(zhuǎn)點寄存器可以與單獨的中斷事件關(guān)聯(lián)。因此,使用多個跳轉(zhuǎn)點寄存器給程序員提供了靈活性,并且允許她根據(jù)將來的需要方便地分配跳轉(zhuǎn)點寄存器。
這種修改減少了用于修正ROM中錯誤所需的RAM容量,并且改進(jìn)了ROM的功能。
通過下面的描述,對于本發(fā)明的熟練技術(shù)人員來說,本發(fā)明的其他目標(biāo)和優(yōu)點將變得容易理解。
圖1是示出RAM和ROM之間的傳統(tǒng)程序流程的圖例。
圖2是示出在本發(fā)明實施例中RAM和ROM之間的程序流程的圖例。
圖3是用于實現(xiàn)RAM和ROM之間的程序流程的電路框圖。
圖4是數(shù)據(jù)處理系統(tǒng)的框圖。
具體實施例方式
圖1是示出用于數(shù)據(jù)處理系統(tǒng)中,例如計算機(jī)系統(tǒng)或通用微計算機(jī),微指令錯誤修正的方法,即“調(diào)試”方法,的已有技術(shù)實現(xiàn)的框圖。處于說明目的,本發(fā)明的較佳實施例使用ROM和RAM進(jìn)行描述。然而,在下面的詳細(xì)描述中,可以容易理解所述的方法適用于任意的靜態(tài)存儲裝置和易失存儲裝置。在圖1中,RAM 100已經(jīng)用調(diào)用在ROM 110中的子程序的代碼進(jìn)行了編程。含有接著要執(zhí)行的微指令地址的程序計數(shù)器(未示出)順RAM堆棧向下執(zhí)行,直到程序計數(shù)器碰到ROM堆棧中的微指令地址。在點101,程序流程從RAM 100中的微指令集中退出,并進(jìn)入ROM 110中的微指令集。程序計數(shù)器順ROM 110向下執(zhí)行,直到它碰到RAM 100中的微指令地址。程序流程從ROM 110中的微指令集中退出,并在點102重返RAM 100中的微指令集。對于存儲在ROM 110中各個子程序,重復(fù)這種處理。然而如果程序錯誤需要在ROM 110中進(jìn)行修正,或者需要加入不同的功能,程序員可以對RAM 100重新編程,以便繞過存儲在ROM 110中的子程序。本領(lǐng)域熟練技術(shù)人員中目前的慣例是通過在RAM100中復(fù)制整個子程序來對缺陷子程序進(jìn)行調(diào)試,消除程序錯誤,并且對RAM100進(jìn)行重新編程來把程序流程帶到在RAM 100中復(fù)制的子程序,而不是帶到存儲在ROM 110中有缺陷的子程序。
如圖1所說明,如果在子程序105中發(fā)現(xiàn)程序錯誤106,那么,程序員將只能使從RAM 100到ROM 110的數(shù)據(jù)通路103無效,并且創(chuàng)建到駐留在RAM 100中的替代子程序107的數(shù)據(jù)通路104。當(dāng)完成子程序107,數(shù)據(jù)通路108回流到位于RAM 100中無效數(shù)據(jù)通路103之后的任意所設(shè)計的微指令。
當(dāng)程序錯誤的大小極小時,這就會成為對RAM資源的巨大浪費。因為ROM是靜態(tài),所以,即使僅有一小部分子程序需要重寫,程序員也不能改變ROM中的微指令,使程序流程從ROM中不同的點重定向到RAM。
圖2是示出本發(fā)明實施例中RAM 200和ROM 210之間程序流程的框圖,該實施例允許程序員不需要將整個子程序復(fù)制在RAM 200中,就能調(diào)試存儲在ROM 210中的缺陷子程序。另外,程序員可以在存儲于ROM 210的子程序中包括附加特性和功能。如圖1,在微代碼無差錯部分期間,程序流程退出RAM200而進(jìn)入ROM 210。然而,當(dāng)在ROM 210中發(fā)現(xiàn)錯誤時,圖2的程序流程允許程序員不需要為了修正錯誤而犧牲掉很大一部分RAM 200,就能創(chuàng)建該錯誤的補(bǔ)丁。
程序計數(shù)器(未示出)順RAM堆棧向下執(zhí)行,直到程序計數(shù)器碰到ROM堆棧中的微指令地址。在點201,程序流程從RAM 200中的微指令集中退出,并進(jìn)入ROM 210中的微指令集。程序計數(shù)器順ROM 210向下執(zhí)行,直到它碰到RAM 200中的微指令地址。程序流程從ROM 210中的微指令集中退出,并在點202重返RAM 200中的微指令集。對于存儲在ROM中的各個子程序,重復(fù)這種處理。
程序流程203延續(xù)到含有程序錯誤205的子程序208。執(zhí)行子程序中的無差錯指令,直到點204,在該點程序流程為了補(bǔ)丁而返回到RAM 200。在點206,已經(jīng)完成補(bǔ)丁,并且程序流程返回到ROM 210。當(dāng)完成子程序,數(shù)據(jù)通路207回到RAM 200。
在本發(fā)明的示范實施例中,在已有技術(shù)的數(shù)據(jù)處理系統(tǒng)中引入了中斷電路。圖3是將允許程序員創(chuàng)建如圖2所示的程序流程的中斷電路框圖。
圖3的中斷電路由多個寄存器,或任意其他能存儲微指令地址的存儲裝置(并且通常成為跳轉(zhuǎn)點寄存器)組成。跳轉(zhuǎn)點寄存器保留有觸發(fā)中斷事件的跳轉(zhuǎn)點地址。如本領(lǐng)域所熟知,當(dāng)在該處理外出現(xiàn)外部事件時,中斷就會引起臨時的處理掛起。中斷信號指示中斷事件的出現(xiàn),因此,處理器掛起當(dāng)前的處理,而執(zhí)行中斷信號所請求的任務(wù)。然而在本發(fā)明的這個實施例中,是以完全不同的方法來使用中斷信號。圖3的中斷電路使用中斷來繞過駐留在ROM中的微代碼部分,而不是使用中斷指示外部事件的發(fā)生。
在圖3中所包括的中斷電路包括3個跳轉(zhuǎn)點寄存器300、310、320。而本領(lǐng)域的熟練技術(shù)人員可以理解跳轉(zhuǎn)點寄存器的數(shù)目可以在不影響本發(fā)明范疇的情況下,根據(jù)電路設(shè)計者的選擇進(jìn)行變化。3個跳轉(zhuǎn)點寄存器的每個寄存器通過線303、313、323分別單獨與3個比較器308、318、328中的一個耦合。比較器是用于比較兩個輸入字的裝置,并且通常由異或門組成,而對于本發(fā)明的這個或其他實施例,可以使用任意能實現(xiàn)比較功能的裝置。然而出于說明目的,將使用“比較器”術(shù)語。每個比較器308、318、328通過控制線304、305與處理器320耦合。
每個跳轉(zhuǎn)點寄存器300、310、320設(shè)定具有對應(yīng)于中斷事件的地址。線301將地址從處理器320加載入每個跳轉(zhuǎn)點寄存器。
控制線304承載從程序計數(shù)器給比較器308、318、328的內(nèi)容。程序計數(shù)器是含有接著要執(zhí)行的微指令的地址的寄存器。在一些數(shù)據(jù)處理系統(tǒng)中,程序計數(shù)器設(shè)計為含有當(dāng)前正在執(zhí)行的微指令。對于本領(lǐng)域的熟練技術(shù)人員來說可以理解程序計數(shù)器的內(nèi)容不需要為了實現(xiàn)本發(fā)明的任意實施例而局限于預(yù)期狀態(tài)或當(dāng)前狀態(tài)。
控制線305承載來自處理器320的控制信號,所述信號為了實現(xiàn)與每個跳轉(zhuǎn)點寄存器關(guān)聯(lián)的期望功能而使每個比較器308、318、328有效或無效。
控制線306承載從比較器308、318、328給處理器320中狀態(tài)寄存器(未示出)的狀態(tài)信號,該信號指示哪個跳轉(zhuǎn)點寄存器含有與程序計數(shù)器相同的地址。處理器320中狀態(tài)寄存器的設(shè)置僅是設(shè)計選擇的問題,而不會影響本發(fā)明的范疇。需要注意在本發(fā)明的替代實施例中,程序計數(shù)器可以用于識別哪個跳轉(zhuǎn)點寄存器具有與程序計數(shù)器相同的地址。如果使用程序計數(shù)器,那么,必須檢驗地址中的所有位來識別所論的跳轉(zhuǎn)點。如果使用狀態(tài)寄存器,那么,僅需要檢查一位。使用程序計數(shù)器還是狀態(tài)寄存器來識別哪個跳轉(zhuǎn)點寄存器含有與當(dāng)前中斷關(guān)聯(lián)的跳轉(zhuǎn)點地址的選擇只是設(shè)計選擇的問題。
如果程序計數(shù)器中的地址與跳轉(zhuǎn)點寄存器300、310、320中分配的地址之一相等,并且發(fā)送了使對應(yīng)于上述跳轉(zhuǎn)點寄存器的比較器有效的控制信號,那么,就發(fā)送狀態(tài)信號給處理器320,并且向中斷控制器(未示出)發(fā)送一個信號,從而發(fā)生中斷。
在這個示例中,中斷事件不是調(diào)用程序流程掛起的外部事件,而是將程序計數(shù)器重定向到存儲在RAM中的微指令。程序流程在RAM中繼續(xù),直到重定向回ROM。因為RAM是動態(tài),因而,RAM可以將程序計數(shù)器重定向到存儲在ROM中的任意微指令。
出于調(diào)試程序代碼的目的,程序員可以識別一部分ROM中微指令子程序中的錯誤,并且將錯誤的地址存儲在跳轉(zhuǎn)點寄存器中。如果這個錯誤是只要用幾行代碼行就可以修復(fù)的次要錯誤,那么。該錯誤的補(bǔ)丁就能順利地存儲在RAM中。當(dāng)程序計數(shù)器遇到已存儲在跳轉(zhuǎn)點寄存器中的錯誤地址,比較器允許給中斷控制器發(fā)送信號,通過這個信號產(chǎn)生將程序流程重定向到存儲在RAM中的補(bǔ)丁上的中斷。當(dāng)包含在補(bǔ)丁中的微指令已經(jīng)完成處理,緊隨補(bǔ)丁的RAM微指令可以將程序流程重定向到跟隨在子程序錯誤部分后的ROM微指令上。在這種方式下,就可以在不需要將整個子程序復(fù)制到RAM中的情況下,修正含有小程序錯誤的子程序。
出于向存儲在ROM中的程序代碼添加功能的目的,程序員可以方便地使用跳轉(zhuǎn)點寄存器向已經(jīng)存在的ROM子程序結(jié)構(gòu)中添加更多的子程序。在本發(fā)明的一個實施例中,程序員可以在跳轉(zhuǎn)點寄存器中插入微指令地址,其中微指令是一部分駐留在ROM中的程序子程序。當(dāng)程序計數(shù)器含有這個微指令的地址時,程序流程就會跳轉(zhuǎn)到駐留在RAM中對應(yīng)的微指令集。微指令對應(yīng)集的最后指令將把程序流程重定向到程序員所期望的子程序上。在這種方式中,程序員可以在不替換舊的已編程的ROM的情況下,給ROM子程序添加新功能。因此,ROM可以不需要用重新編程的ROM替換的情況下,就對ROM進(jìn)行更新。
圖3的中斷電路是本發(fā)明的一個實施例,這個實施例中,3個跳轉(zhuǎn)點和相應(yīng)的比較器通過或門330與處理器,即中斷控制器中的中斷請求(IRQ)引腳相連。還是在本發(fā)明的另一實施例中,為了對無論何時觸發(fā)中斷就會出現(xiàn)的新代碼進(jìn)行檢驗的數(shù)量最小,可以在數(shù)據(jù)處理系統(tǒng)中使用多個中斷電路。當(dāng)在單個中斷電路中存在許多跳轉(zhuǎn)點寄存器時,就需要花費大量的MIPS來確定哪個新的代碼對應(yīng)于剛觸發(fā)的中斷。而當(dāng)存在許多中斷電路,每個僅具有3個或更少的跳轉(zhuǎn)點寄存器,并且每個與單獨的IRQ引腳相連,那么,在實現(xiàn)對應(yīng)于經(jīng)觸發(fā)的中斷事件中就會花費較少的MIPS。多個中斷電路或單格中斷電路的使用是根據(jù)電路板設(shè)計者的需要的設(shè)計選擇問題。然而,任何對在此描述的中斷電路的變化都落入本發(fā)明的范疇。
圖4是示出數(shù)據(jù)處理系統(tǒng)的框圖。對于本領(lǐng)域的熟練技術(shù)人員可以理解在不對所熟知的電路和控制邏輯進(jìn)行具體詳述的情況下,也可以實現(xiàn)本發(fā)明。為了避免混淆描述,就從圖4中忽略這種具體詳述。圖4的框圖是一種系統(tǒng)的代表,在這種系統(tǒng)中,控制邏輯從操作核心(operate core)中分離出來。這種系統(tǒng)可以是數(shù)字信號處理器或?qū)S眉呻娐贰H欢枰⒁獗景l(fā)明可以用于具有其他體系形式的數(shù)據(jù)處理系統(tǒng)中,例如控制邏輯與操作核心相結(jié)合。
程序流程控制裝置400與控制存儲器RAM 430、控制存儲器ROM 440、中斷電路450和指令解碼裝置410耦合。中斷電路450可以是圖3的中斷電路。程序流程控制裝置400產(chǎn)生程序計數(shù)器的內(nèi)容,產(chǎn)生指示當(dāng)前指令是否已經(jīng)執(zhí)行或取消的標(biāo)志,并且處理所有的外部事件例如直接存儲器存取(DMA)和中斷。指令解碼裝置410可以與操作核心420集成也可以不集成在一起,并且通過線405與程序流程控制裝置400相連。指令解碼裝置410也通過線404與控制存儲器RAM 430和控制存儲ROM 440耦合。中斷電路450與程序流程控制裝置400、控制存儲器RAM 430、控制存儲器ROM 440以及操作核心420耦合。程序流程控制裝置400依據(jù)來自控制存儲器RAM 430、控制存儲器ROM 440或中斷電路450的輸入產(chǎn)生程序計數(shù)器。程序流程裝置400使用線RAM_CS 401、ROM_CS 403以及EXEC 412來使從控制存儲器RAM 430、控制存儲器ROM 440或中斷電路450的輸入有效。線422將跳轉(zhuǎn)點地址存入中斷電路450中的跳轉(zhuǎn)點寄存器(未示出)。線402將程序計數(shù)器的內(nèi)容發(fā)送給控制存儲器RAM 430、控制存儲器ROM 440和中斷電路450。當(dāng)中斷電路450指示當(dāng)前的程序計數(shù)器含有與跳轉(zhuǎn)點寄存器(未示出)中所含有的跳轉(zhuǎn)點地址相等的地址時,就由可集成在程序流程控制裝置400或沒有集成在其中的中斷控制器(未示出)產(chǎn)生中斷。當(dāng)中斷電路450產(chǎn)生中斷時,程序流程控制裝置400將程序計數(shù)器復(fù)位來保存中斷事件所指定的下一微指令地址。
圖4的數(shù)據(jù)處理系統(tǒng)僅是本發(fā)明實施例如何使用的說明實例。應(yīng)該注意本發(fā)明可以使用各種計算機(jī)程序語言和硬件來實現(xiàn),而并不局限于任何特定的硬件和軟件配置。例如,如模塊490所示,程序流程控制裝置400、指令解碼器410和操作核心420的功能可以通過使用通用處理器來實現(xiàn)。本發(fā)明可以在任何將代碼存儲在靜態(tài)存儲裝置例如ROM、磁帶存儲元件、光盤或軟盤中的實施例中使用。
可以認(rèn)識到,在不背離本發(fā)明的情況下,本發(fā)明能具有其他和不同的實施例,并且它的一些細(xì)節(jié)可以從不同方面進(jìn)行修改。因而,附圖和描述實際上是作為說明,而不是對本發(fā)明的限制。
權(quán)利要求
1.一種用于對靜態(tài)存儲裝置中的程序流程進(jìn)行修改的方法,其特征在于,所述方法包括產(chǎn)生觸發(fā)從靜態(tài)存儲裝置到可編程裝置的跳轉(zhuǎn)的中斷的步驟。
2.如權(quán)利要求1所述的方法,其特征在于,所述產(chǎn)生中斷的步驟包括下述步驟存儲第一微指令地址的副本,其中第一微指令是第一微指令集的一部分,并且第一微指令集是駐留在靜態(tài)存儲裝置中的子程序的子集;將替代微指令集存儲在可編程存儲裝置中;在程序流程期間,將子程序中每條微指令的地址與所存儲的副本進(jìn)行比較;并且當(dāng)比較步驟的結(jié)果匹配時,用替代微指令集對第一微指令集進(jìn)行替換,其中,替換步驟在程序流程中產(chǎn)生從靜態(tài)存儲裝置到可編程存儲裝置的跳轉(zhuǎn)。
3.如權(quán)利要求2所述的方法,其特征在于,所述靜態(tài)存儲裝置包括只讀存儲器(ROM)裝置,并且所述可編程存儲裝置包括隨機(jī)訪問存儲器(RAM)裝置。
4.如權(quán)利要求3所述的方法,其特征在于,所述替代微指令集包括針對在子程序中所出現(xiàn)的程序錯誤的補(bǔ)丁。
5.如權(quán)利要求1所述的方法,其特征在于,所述產(chǎn)生中斷的步驟包括下述步驟存儲第一微指令地址的副本,其中第一微指令是嵌入在第一子程序中的第一微指令集的一部分,并且第一子程序駐留在靜態(tài)存儲裝置;將附加微指令集存儲在可編程存儲裝置中;在程序流程期間,將子程序中每條微指令的地址與所存儲的副本進(jìn)行比較;并且當(dāng)比較步驟的結(jié)果匹配時,添加附加微指令集,其中,添加步驟在程序流程中產(chǎn)生從靜態(tài)存儲裝置到可編程存儲裝置的跳轉(zhuǎn)。
6.如權(quán)利要求5所述的方法,其特征在于,所述附加微指令集是具有附加功能的第二子程序。
7.如權(quán)利要求1所述的方法,其特征在于,所述產(chǎn)生中斷的步驟包括下述步驟使用跳轉(zhuǎn)點寄存器來保存跳轉(zhuǎn)點地址,所述跳轉(zhuǎn)點地址會觸發(fā)中斷事件;順序執(zhí)行第一微指令集,其中所述第一微指令集駐留在靜態(tài)存儲裝置中,其中在所述第一微指令集中的每個順序執(zhí)行的微指令具有在順序執(zhí)行期間單獨存儲在程序計數(shù)器中的對應(yīng)地址;和如果程序計數(shù)器保存有與所述跳轉(zhuǎn)點寄存器中的跳轉(zhuǎn)點地址相等的地址,就用中斷事件中斷程序流程。
8.如權(quán)利要求7所述的方法,其特征在于,所述中斷程序流程的步驟包括下述步驟將控制信號設(shè)定為有條件使比較器有效,其中所述比較器將所述程序計數(shù)器中的地址與所述跳轉(zhuǎn)寄存器所包含的地址進(jìn)行比較;和如果比較器接收有效控制信號,就執(zhí)行對應(yīng)于所述跳轉(zhuǎn)點地址的第二微指令集,其中所述第二微指令集駐留在可編程存儲裝置中。
9.如權(quán)利要求8所述的方法,其特征在于,所述可編程存儲裝置是隨機(jī)訪問存儲器(RAM)裝置。
10.如權(quán)利要求1所述的方法,其特征在于,所述產(chǎn)生中斷的步驟進(jìn)一步包括下述步驟存儲多個跳轉(zhuǎn)點地址,每個跳轉(zhuǎn)點地址存儲在相應(yīng)的跳轉(zhuǎn)點寄存器中,每個跳轉(zhuǎn)點地址觸發(fā)相應(yīng)的中斷事件;預(yù)先確定多個跳轉(zhuǎn)點地址的哪個跳轉(zhuǎn)點地址將有效;順序執(zhí)行第一微指令集,所述第一微指令集駐留在靜態(tài)存儲裝置中,其中程序計數(shù)器順序保留每個正在執(zhí)行的微指令的地址;和如果程序計數(shù)器保留有與多個跳轉(zhuǎn)點地址中的某個相等的地址或者如果跳轉(zhuǎn)點地址有效,就執(zhí)行相應(yīng)的中斷事件。
11.如權(quán)利要求10所述的方法,其特征在于,所述執(zhí)行中斷事件的步驟包括下述步驟預(yù)先確定與多個跳轉(zhuǎn)點地址的每個地址對應(yīng)的多個微指令集;將控制信號設(shè)定為有條件使多個比較器的每個單元有效,其中每個比較器與相對應(yīng)的跳轉(zhuǎn)點寄存器和程序計數(shù)器耦合,和如果多個比較器中的一個比較器接收到有效控制信號,就執(zhí)行與所述跳轉(zhuǎn)點地址關(guān)聯(lián)的相應(yīng)微指令集,其中所述跳轉(zhuǎn)點地址與程序計數(shù)器中的地址相等,其中所述相應(yīng)微指令集駐留在可編程存儲裝置中。
12.如權(quán)利要求11所述的方法,其特征在于,所述執(zhí)行相應(yīng)微指令集的步驟后面伴隨的是執(zhí)行來自所述第一微指令集的后續(xù)微指令。
13.用于處理可編程機(jī)器指令信號的設(shè)備,其特征在于,包括含有至少一個預(yù)定跳轉(zhuǎn)點的跳轉(zhuǎn)點寄存器;含有第一微指令集的靜態(tài)存儲裝置,所述靜態(tài)存儲裝置與跳轉(zhuǎn)點寄存器耦合;含有第二微指令集的隨機(jī)訪問存儲裝置,所述隨機(jī)訪問存儲裝置與所述跳轉(zhuǎn)點寄存器和靜態(tài)存儲裝置耦合;與所述跳轉(zhuǎn)點寄存器、靜態(tài)存儲裝置和隨機(jī)訪問存儲裝置耦合的程序控制單元,其中所述程序控制單元向所述跳轉(zhuǎn)點寄存器、所述靜態(tài)存儲裝置和隨機(jī)訪問存儲裝置發(fā)送多個控制信號;和與所述跳轉(zhuǎn)點寄存器以及所述程序控制單元耦合的比較器,其中所述比較器在所述預(yù)定跳轉(zhuǎn)點和至少多個控制信號中的一個信號之間進(jìn)行比較,并且根據(jù)所述比較產(chǎn)生中斷信號。
14.如權(quán)利要求13所述的設(shè)備,其特征在于,進(jìn)一步包括多個跳轉(zhuǎn)點寄存器,每個所述跳轉(zhuǎn)點寄存器存儲有至少一個預(yù)定跳轉(zhuǎn)點,其中所述程序控制單元向多個跳轉(zhuǎn)點寄存器中的每個寄存器、靜態(tài)存儲裝置以及隨機(jī)訪問存儲裝置發(fā)送多個控制信號;以及多個比較器,每個比較器與所述多個跳轉(zhuǎn)點寄存器之一以及所述程序控制單元耦合,其中每個所述比較器在相應(yīng)跳轉(zhuǎn)點地址和至少多個控制信號中的一個信號之間進(jìn)行比較,并且根據(jù)所述比較產(chǎn)生中斷信號。
15.用于對駐留在靜態(tài)存儲裝置中的微指令程序流程進(jìn)行修改的設(shè)備,其特征在于,包括用于將預(yù)定微指令地址存儲在除靜態(tài)存儲裝置外的裝置中的裝置;用于存儲第一微指令地址集的裝置,其中所述存儲裝置是易失的;用于將所述預(yù)定微指令地址和所述第一微指令地址集的每個地址進(jìn)行比較的裝置;以及用于產(chǎn)生多個控制信號的裝置,所述裝置與所述預(yù)定微指令地址存儲裝置、易失存儲裝置以及比較裝置耦合,其中所述控制信號裝置能使程序流程的修改從所述靜態(tài)存儲裝置中轉(zhuǎn)移到所述易失存儲裝置中。
全文摘要
用于對駐留在靜態(tài)存儲裝置中的程序流程進(jìn)行修改的方法和設(shè)備。當(dāng)來自靜態(tài)存儲裝置的微指令需要進(jìn)行修改時,跳轉(zhuǎn)點寄存器就用于保存觸發(fā)中斷事件的跳轉(zhuǎn)點地址。當(dāng)當(dāng)前的程序計數(shù)器含有與跳轉(zhuǎn)點地址相等的地址且跳轉(zhuǎn)點寄存器有效時,就產(chǎn)生中斷事件,將程序流程從靜態(tài)存儲裝置重新定向到可編程存儲裝置上。本發(fā)明使用中斷來繞過駐留在靜態(tài)存儲裝置中的微指令部分,而不是使用中斷來指示外部事件的發(fā)生。
文檔編號G06F9/26GK1373872SQ00812750
公開日2002年10月9日 申請日期2000年9月14日 優(yōu)先權(quán)日1999年9月14日
發(fā)明者李維新, G·B·福斯特, 張立, 周群真 申請人:高通股份有限公司