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