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

微計(jì)算機(jī)裝置的分支控制系統(tǒng)以及相關(guān)方法

文檔序號(hào):6431722閱讀:182來源:國(guó)知局
專利名稱:微計(jì)算機(jī)裝置的分支控制系統(tǒng)以及相關(guān)方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種微計(jì)算機(jī)裝置的分支控制系統(tǒng),特別是涉及用于一只讀存儲(chǔ)器程序化(ROM-programmed)微計(jì)算機(jī)裝置中的分支控制系統(tǒng)。
背景技術(shù)
微計(jì)算機(jī)裝置(microcomputer apparatus)是現(xiàn)今科技發(fā)達(dá)社會(huì)中很常見的一種電子裝置,不論是移動(dòng)電話、DVD播放機(jī)、或是其它的電子裝置,大多包含有某些類型的微計(jì)算機(jī)裝置。處理單元(processing unit)就是一種普遍的微計(jì)算機(jī)裝置,可以執(zhí)行存儲(chǔ)于存儲(chǔ)器內(nèi)的指令。另外,幾乎所有種類的微計(jì)算機(jī)裝置都包含有存儲(chǔ)于一只讀類型存儲(chǔ)器(ROM-typememory)內(nèi),可由處理器執(zhí)行的程序,因此,其亦可以視為是只讀存儲(chǔ)器程序化的處理單元(ROM-programmed processing unit)。
微計(jì)算機(jī)裝置中的處理單元主要的工作是執(zhí)行指令。通常處理單元并沒有辦法追蹤(track)其在程序內(nèi)的執(zhí)行過程,而為了要讓處理單元可以在程序內(nèi)從一指令跳到另一指令,微計(jì)算機(jī)裝置中通常都會(huì)包含有耦接于處理單元的程序計(jì)數(shù)器。程序計(jì)數(shù)器藉由存儲(chǔ)一程序計(jì)數(shù)值,并隨著每次的指令譯碼而更改程序計(jì)數(shù)值,讓處理單元可以更容易從一指令跳到另一指令。程序計(jì)數(shù)值通常會(huì)指向下一個(gè)要被執(zhí)行的指令。舉例來說,若程序計(jì)數(shù)值等于1,就表示需要提取(fetch)第1個(gè)指令;若程序計(jì)數(shù)值等于N,就表示需要提取第N個(gè)指令。如此一來,處理單元即有辦法以正確的順序執(zhí)行一程序中所包含的指令。
雖然只讀存儲(chǔ)器具有很多不同的種類,但是在對(duì)一裝置大量制造的情形下,通常還是會(huì)使用所謂的屏蔽式只讀存儲(chǔ)器(masked ROM)來作為其所需的只讀存儲(chǔ)器。相較于其它類型的只讀存儲(chǔ)器,屏蔽式只讀存儲(chǔ)器具有較低的成本,故比較適合大量生產(chǎn)。然而,屏蔽式只讀存儲(chǔ)器卻有一個(gè)主要的缺點(diǎn),就是屏蔽式只讀存儲(chǔ)器僅能被寫入一次,因此,在制造過程結(jié)束后,并沒有辦法對(duì)屏蔽式只讀存儲(chǔ)器中所存儲(chǔ)的程序內(nèi)容進(jìn)行修改。
即使在程序?qū)懽鲿r(shí)作過仔細(xì)的測(cè)試與除錯(cuò),在只讀存儲(chǔ)器中所存儲(chǔ)的程序代碼還是常常會(huì)有需要修改的可能性存在。然而,由于在屏蔽式只讀存儲(chǔ)器中已經(jīng)寫入的數(shù)據(jù)是無法修改的,此時(shí)對(duì)于存在屏蔽式只讀存儲(chǔ)器中不正確的指令而言,一種解決方是就是讓處理單元通過其它的存儲(chǔ)器去執(zhí)行一修補(bǔ)區(qū)段(即patch,指的是一組的替代指令行)。舉例來說,假設(shè)在一只讀存儲(chǔ)器中具有200行的指令,地址分別由程序計(jì)數(shù)值0至199表示,當(dāng)該只讀存儲(chǔ)器中的35至40行、125至130行、以及151至160行有錯(cuò)誤時(shí),此時(shí)就需要有三段修補(bǔ)區(qū)段的存在。
由Patrick等人所提出的美國(guó)第4,542,453號(hào)的專利申請(qǐng)(以下將簡(jiǎn)稱此專利申請(qǐng)為第一已知技術(shù)),以及由Hagqvist等人所提出的美國(guó)第5,581,776號(hào)的專利申請(qǐng)(以下將簡(jiǎn)稱此專利申請(qǐng)為第二已知技術(shù))都是可處理上述問題的解決方案。
請(qǐng)參閱圖1,圖1為第一已知技術(shù)的一微計(jì)算機(jī)裝置10的示意圖。微計(jì)算機(jī)裝置10包含有一只讀存儲(chǔ)器12,一處理單元14,一程序計(jì)數(shù)器16,一中斷控制器(interrupt controller)18,以及一程序修補(bǔ)模塊(programpatching module)20。程序修補(bǔ)模塊20則包含有一修補(bǔ)存儲(chǔ)器(patchmemory)22,一芯片選擇器(chip selector)24,以及一標(biāo)示位存儲(chǔ)器(markerbit memory)26。
為了要正確地分支出(branch off)只讀存儲(chǔ)器16,第一已知技術(shù)使用了程序修補(bǔ)模塊20。程序修補(bǔ)模塊20中的標(biāo)示位存儲(chǔ)器26耦接于程序計(jì)數(shù)器16,對(duì)應(yīng)于只讀存儲(chǔ)器12中的每一個(gè)指令皆存儲(chǔ)有一個(gè)位,而這些位可稱為「標(biāo)示位」(marker bit),其標(biāo)示了是否有分支的情形發(fā)生。當(dāng)程序計(jì)數(shù)器16經(jīng)過各個(gè)計(jì)數(shù)值時(shí),程序修補(bǔ)模塊20會(huì)檢查其相對(duì)應(yīng)的標(biāo)示位。當(dāng)標(biāo)示位是0時(shí),只需對(duì)只讀存儲(chǔ)器16進(jìn)行提取工作即可。然而,若標(biāo)示位是1,標(biāo)示位存儲(chǔ)器26會(huì)傳送一訊號(hào)至中斷控制器18,以中斷處理單元14的執(zhí)行工作。然后中斷的處理單元14修改程序計(jì)數(shù)器16中所存儲(chǔ)的值。芯片選擇器24檢測(cè)到程序計(jì)數(shù)器16中所存儲(chǔ)的值被修改后,其可將處理單元14切換至修補(bǔ)存儲(chǔ)器22,以執(zhí)行相對(duì)應(yīng)的修補(bǔ)區(qū)段。
請(qǐng)參閱圖2,圖2為第二已知技術(shù)的一微計(jì)算機(jī)裝置30的示意圖。微計(jì)算機(jī)裝置30包含有一只讀存儲(chǔ)器32,一處理單元34,一程序計(jì)數(shù)器36,一輔助存儲(chǔ)器(auxiliary memory)38,一地址比較器40(包含有一寄存器42),以及一分支寄存器44。在第二已知技術(shù)中,地址比較器40及分支寄存器44串接(tandem)用來分支出(branch off)只讀存儲(chǔ)器32。一初始值(對(duì)應(yīng)于分支開始的地址相對(duì)應(yīng)于只讀存儲(chǔ)器32的程序計(jì)數(shù)值)被存放于地址比較器40中的寄存器42內(nèi);對(duì)應(yīng)于要使用的修補(bǔ)區(qū)段中第一個(gè)指令的程序計(jì)數(shù)值的一置換值(replacement value)則被存放于分支寄存器44中。使用上述的兩個(gè)值即可實(shí)現(xiàn)一次指令修補(bǔ)工作。每當(dāng)程序計(jì)數(shù)器36發(fā)出(issue)一程序計(jì)數(shù)值時(shí),地址比較器40即會(huì)比較發(fā)出的程序計(jì)數(shù)值與存儲(chǔ)于寄存器42內(nèi)的初始值。當(dāng)檢測(cè)到吻合(match)情形發(fā)生時(shí),存儲(chǔ)于分支寄存器44中的置換值會(huì)被下載至程序計(jì)數(shù)器36中,取代掉發(fā)生吻合情形的程序計(jì)數(shù)值。如此一來,處理單元34將會(huì)分支出只讀存儲(chǔ)器32,而執(zhí)行位于一輔助存儲(chǔ)器38中的一修補(bǔ)區(qū)段。
上述已知技術(shù)的作法皆有其所面臨的問題。以第一已知技術(shù)而言,其會(huì)造成過多的額外負(fù)擔(dān)(overhead),亦即,對(duì)于只讀存儲(chǔ)器12中的每一個(gè)指令,皆須存放一相對(duì)應(yīng)的標(biāo)示位。若只讀存儲(chǔ)器12中的程序不大,這樣的解決方案還不會(huì)造成太多的額外負(fù)擔(dān),但是若只讀存儲(chǔ)器12中的程序較大時(shí),標(biāo)示位存儲(chǔ)器26也需具有相對(duì)應(yīng)較大的容量。當(dāng)然,越大的存儲(chǔ)器容量,也就表示了越大的芯片面積,會(huì)造成整體的制造成本增加。即使程序修補(bǔ)模塊20中的標(biāo)示位存儲(chǔ)器26不大,通常只讀存儲(chǔ)器12中大部分的指令都只是不需要進(jìn)行分支作業(yè)的指令,因此有很多的標(biāo)示位都會(huì)具有等于0的值,因此還是會(huì)造成存儲(chǔ)空間的浪費(fèi)。
第一已知技術(shù)還有一些問題,就是必須使用到芯片選擇器24以及中斷控制器18。芯片選擇器24是一個(gè)會(huì)讓成本增加的硬件裝置,至于中斷控制器18則加長(zhǎng)了微計(jì)算機(jī)裝置10從只讀存儲(chǔ)器12分支到修補(bǔ)存儲(chǔ)器22所需的時(shí)間。
第二已知技術(shù)比第一已知技術(shù)進(jìn)步的地方,在于只有會(huì)造成分支作業(yè)的初始值才需要存儲(chǔ)(而不是對(duì)每一個(gè)指令皆須存儲(chǔ)一標(biāo)示位)。然而,由于其必須使用到額外的硬件裝置,例如分支寄存器44,雖然可以因?yàn)橹恍璐鎯?chǔ)一些初始值而降低芯片的大小,但是還是必須使用額外的芯片空間來作為分支寄存器44。因此,這兩個(gè)已知技術(shù)所提出的解決方案還是都有其所面臨的問題。

發(fā)明內(nèi)容
因此本發(fā)明的一個(gè)目的在于提供一種微處理器裝置,以解決已知技術(shù)所面臨的問題。
根據(jù)本發(fā)明的一種微處理器裝置,包含有一程序計(jì)數(shù)器,用來存儲(chǔ)一程序計(jì)數(shù)值;一處理單元,耦接于該程序計(jì)數(shù)器;一只讀存儲(chǔ)器,耦接于該處理單元,用來存儲(chǔ)一第一程序;一輔助可程序存儲(chǔ)器,耦接于該處理單元,用來存儲(chǔ)可取代該第一程序內(nèi)相對(duì)應(yīng)指令的修補(bǔ)區(qū)段,以及一表格,該表格包含有對(duì)應(yīng)于每個(gè)修補(bǔ)區(qū)段的替代程序計(jì)數(shù)值;以及一控制器,耦接于該程序計(jì)數(shù)器以及該處理單元,用來于該程序計(jì)數(shù)值與一初始程序計(jì)數(shù)值發(fā)生吻合的情形時(shí),傳送一間接分支指令至該處理單元,其中該間接分支指令是對(duì)應(yīng)于適當(dāng)?shù)男扪a(bǔ)區(qū)段,該間接分支指令則將對(duì)應(yīng)于吻合情形的該替代程序計(jì)數(shù)值插入該程序計(jì)數(shù)器中。至于前述的處理單原則包含有一指令提取模塊,耦接于該程序計(jì)數(shù)器,用來依據(jù)該程序計(jì)數(shù)值提取程序指令,并將提取的指令存儲(chǔ)于一緩沖器中;一指令譯碼模塊,耦接于該指令提取模塊,用來對(duì)該緩沖器中的指令進(jìn)行譯碼及調(diào)度(dispatch)工作。
本發(fā)明的一個(gè)優(yōu)點(diǎn)在于藉由使用該控制器與該輔助存儲(chǔ)器,可以降低所需使用的硬件數(shù)量,而依舊可以達(dá)成于特定情形下,自該只讀存儲(chǔ)器中分支出的工作,且減少進(jìn)行分支作業(yè)所耗費(fèi)的時(shí)間,而所需的制造成本亦可以比已知技術(shù)降的更低。


圖1為第一已知技術(shù)的一微計(jì)算機(jī)裝置的示意圖。
圖2為第二已知技術(shù)的一微計(jì)算機(jī)裝置的示意圖。
圖3為本發(fā)明微計(jì)算機(jī)裝置的一實(shí)施例示意圖。
圖4為本發(fā)明微計(jì)算機(jī)裝置運(yùn)作方法實(shí)施例流程圖。
附圖符號(hào)說明10、30、50微計(jì)算機(jī)裝置12、32、52只讀存儲(chǔ)器14、34、54處理單元16、36、56程序計(jì)數(shù)器
18中斷控制器20程序修補(bǔ)模塊22修補(bǔ)存儲(chǔ)器24芯片選擇器26標(biāo)示位存儲(chǔ)器38、58輔助存儲(chǔ)器40地址比較器42寄存器44分支寄存器60控制器62寄存器64指令提取器66緩沖器68指令譯碼器具體實(shí)施方式
請(qǐng)參閱圖3,圖3為本發(fā)明微計(jì)算機(jī)裝置的一實(shí)施例示意圖。本實(shí)施例中的微計(jì)算機(jī)裝置50包含有一只讀存儲(chǔ)器52,用來存儲(chǔ)一第一程序;一處理單元54,用來執(zhí)行指令;一程序計(jì)數(shù)器56,用來存儲(chǔ)一程序計(jì)數(shù)值;一輔助存儲(chǔ)器58,用來存儲(chǔ)修補(bǔ)區(qū)段以及由相對(duì)應(yīng)的置換計(jì)數(shù)值所構(gòu)成的一表格;以及一控制器60,用來存儲(chǔ)一初始計(jì)數(shù)值,并比較該初始計(jì)數(shù)值與程序計(jì)數(shù)器56中所存儲(chǔ)的程序計(jì)數(shù)值,以及當(dāng)一吻合情形發(fā)生時(shí),發(fā)出包含有一指標(biāo)(index)的一間接分支指令(indirect branch instruction)。
在本實(shí)施例中,處理單元54包含有一指令提取器64,指令提取器64則包含有一緩沖器66與一指令譯碼器68。指令提取器64可依據(jù)程序計(jì)數(shù)器56中的值對(duì)指令進(jìn)行檢索(retrieve),并將指令存儲(chǔ)于緩沖器66中。指令譯碼器68可遞增程序計(jì)數(shù)器56所存儲(chǔ)的值,并對(duì)存儲(chǔ)于緩沖器66中的指令進(jìn)行譯碼??刂破?2包含有一寄存器62,用來存儲(chǔ)一初始程序計(jì)數(shù)值,當(dāng)與存儲(chǔ)于程序計(jì)數(shù)器56中的值發(fā)生吻合情形時(shí),控制器62就會(huì)發(fā)出一間接分支指令。
請(qǐng)一并參閱圖3與圖4,圖4為本發(fā)明微計(jì)算機(jī)裝置50運(yùn)作方法實(shí)施例流程圖,圖4的流程圖包含有以下步驟100程序計(jì)數(shù)器56傳送一程序計(jì)數(shù)值至處理單元54以及控制器60。
110控制器60比較接收到的程序計(jì)數(shù)值與存儲(chǔ)于控制器60中的寄存器62內(nèi)的一初始程序計(jì)數(shù)值。若不吻合,即進(jìn)入步驟120;若吻合,則進(jìn)入步驟140。
120指令提取器64自只讀存儲(chǔ)器52中提取一指令,并將該指令存入指令提取器64中的緩沖器66。
130指令譯碼器68將程序計(jì)數(shù)器56中所存儲(chǔ)的程序計(jì)數(shù)值遞增1,并對(duì)存儲(chǔ)于緩沖器66內(nèi)的指令進(jìn)行譯碼。回到步驟100。
140控制器60將具有一吻合指標(biāo)(matching index)i的一間接分支指令插入緩沖器66中。
150指令譯碼器68保持(hold)程序計(jì)數(shù)器56中的程序計(jì)數(shù)值。
160處理單元54檢視輔助存儲(chǔ)器58中的該表格內(nèi)是否有具有吻合指標(biāo)=i的字段存在。
170處理單元54將程序計(jì)數(shù)器56中的程序計(jì)數(shù)值修改成在該表格內(nèi)發(fā)現(xiàn)具有吻合指針=i的一取代程序計(jì)數(shù)值存在。
180程序計(jì)數(shù)器56將該取代程序計(jì)數(shù)值傳送至處理單元54。
190處理單元5 4分支至相對(duì)應(yīng)的(第i個(gè))目標(biāo)地址。
200結(jié)束。
接下來請(qǐng)繼續(xù)參閱圖3,如前所述,程序計(jì)數(shù)器56的功能是追蹤(track)處理單元54處理一程序的處理過程。程序計(jì)數(shù)器56中存儲(chǔ)了一程序計(jì)數(shù)值,代表了指令提取器64所需提取的指令。每當(dāng)指令譯碼器68結(jié)束一指令的譯碼工作時(shí),其即將存儲(chǔ)于程序計(jì)數(shù)器56中的程序計(jì)數(shù)值遞增1。如此一來,處理單元54即可依序執(zhí)行一程序中所包含的指令。
舉例來說,假設(shè)要執(zhí)行的一程序中包含有200個(gè)指令(程序計(jì)數(shù)值由0至199),在開始時(shí),程序計(jì)數(shù)器56會(huì)發(fā)出等于0的一程序計(jì)數(shù)值給指令提取器64;指令提取器64即將指令0存放入緩沖器66中;指令譯碼器68對(duì)存儲(chǔ)于緩沖器內(nèi)的指令0進(jìn)行譯碼,并將程序計(jì)數(shù)器56中的程序計(jì)數(shù)值遞增1。然后,處理單元54開始執(zhí)行指令0,而程序計(jì)數(shù)器56則發(fā)出新的等于1的程序計(jì)數(shù)值給指令提取器64;指令提取器64再將指令1存放入緩沖器66中;指令譯碼器68對(duì)存儲(chǔ)于緩沖器內(nèi)的指令1進(jìn)行譯碼,并將程序計(jì)數(shù)器56中的程序計(jì)數(shù)值遞增1(故此時(shí)程序計(jì)數(shù)值等于2)。上述的步驟會(huì)持續(xù)執(zhí)行,直到提取完最后一個(gè)程序計(jì)數(shù)值199并執(zhí)行完畢為止。
而為了要讓處理單元54可以自存儲(chǔ)于只讀存儲(chǔ)器52內(nèi)的第一程序分支出并執(zhí)行存儲(chǔ)于其它存儲(chǔ)器內(nèi)的修補(bǔ)區(qū)段,在本發(fā)明的實(shí)施例中使用了控制器60,至于修補(bǔ)區(qū)段以及由相對(duì)應(yīng)置換計(jì)數(shù)值所構(gòu)成的表格則存儲(chǔ)于輔助存儲(chǔ)器58內(nèi)??刂破?0可對(duì)程序計(jì)數(shù)器56中的程序計(jì)數(shù)值與存儲(chǔ)于控制器60中的寄存器62內(nèi)的一初始值進(jìn)行比較。該初始值對(duì)應(yīng)于一錯(cuò)誤程序代碼區(qū)段內(nèi)第一個(gè)指令的程序計(jì)數(shù)值,亦即,只讀存儲(chǔ)器52中錯(cuò)誤(或需要修改)指令區(qū)段的起始地址。請(qǐng)注意輔助存儲(chǔ)器58可以是隨機(jī)存取存儲(chǔ)器、閃存、或是其它種類的只讀存儲(chǔ)器,這都是可行的實(shí)施方式。
當(dāng)控制器60發(fā)現(xiàn)吻合的情形時(shí),控制器60就會(huì)發(fā)出一間接分支指令(附加有一對(duì)應(yīng)于指令提取器64中的緩沖器66的一指標(biāo))。再對(duì)間接分支指令進(jìn)行譯碼時(shí),指令譯碼器68會(huì)保持住程序計(jì)數(shù)器56中所存儲(chǔ)的值(而不進(jìn)行遞增工作)。處理單元54會(huì)使用該指針,找出該表格內(nèi)所存放的置換計(jì)數(shù)值,以執(zhí)行該間接分支指令。在找出適當(dāng)?shù)谋砀褡侄魏?,處理單?4會(huì)將程序計(jì)數(shù)器56中的程序計(jì)數(shù)值換成適當(dāng)表格字段所對(duì)應(yīng)的置換計(jì)數(shù)值。然后,指令提取器64即提取置換計(jì)數(shù)值所對(duì)應(yīng)到的指令。其中,置換計(jì)數(shù)值所對(duì)應(yīng)到的指令為輔助存儲(chǔ)器58中一修補(bǔ)區(qū)段中的第一個(gè)指令。
上述提取指令、譯碼、遞增計(jì)數(shù)值、以及執(zhí)行的各個(gè)步驟會(huì)繼續(xù)進(jìn)行,而置換計(jì)數(shù)值則會(huì)繼續(xù)增加。因此,此時(shí)的計(jì)數(shù)值皆是對(duì)應(yīng)于輔助存儲(chǔ)器58中的指令(亦即修補(bǔ)區(qū)段中的指令)。當(dāng)然,所執(zhí)行的程序可以結(jié)束于修補(bǔ)區(qū)段中,處理單元54亦可以在執(zhí)行完修補(bǔ)區(qū)段之后再回到只讀存儲(chǔ)器52。而若必須要回到只讀存儲(chǔ)器52,則可以讓修補(bǔ)區(qū)段的最后一行結(jié)束于一分支指令,該分支指令則對(duì)應(yīng)到要回到只讀存儲(chǔ)器52中繼續(xù)執(zhí)行程序的指令地址。
簡(jiǎn)單地說,假設(shè)只讀存儲(chǔ)器52中具有200個(gè)指令,對(duì)應(yīng)到的程序計(jì)數(shù)值是從0到199。而程序計(jì)數(shù)值31到40這十個(gè)指令是需要替換掉的。此時(shí),輔助存儲(chǔ)器58中即可包含有置換用的指令331到340(當(dāng)然置換用的指令可以不用是十個(gè)),加上一個(gè)額外的指令341,用來分支回只讀存儲(chǔ)器52中適當(dāng)?shù)牡刂贰?br> 從起始執(zhí)行程序時(shí)開始說明,此時(shí)程序計(jì)數(shù)器56具有等于0的程序計(jì)數(shù)值。程序計(jì)數(shù)器56將0這個(gè)值發(fā)出至控制器60以及指令提取器64。控制器60比較接收到的程序計(jì)數(shù)值與存儲(chǔ)于控制器60中的寄存器62內(nèi)的初始計(jì)數(shù)值,由于在這個(gè)例子中,初始計(jì)數(shù)值等于31,0與31并不會(huì)發(fā)生吻合的情形,故控制器60此時(shí)不需作其它操作。此時(shí)指令提取器64將指令0放入緩沖器66中。由指令譯碼器64對(duì)指令0進(jìn)行譯碼,并將程序計(jì)數(shù)器56中的程序計(jì)數(shù)值遞增1。之后,處理單元54執(zhí)行指令0,而程序計(jì)數(shù)器56則發(fā)出新的程序計(jì)數(shù)值,以開始對(duì)下一個(gè)指令的執(zhí)行工作。
上述的執(zhí)行回路繼續(xù)執(zhí)行,直到程序計(jì)數(shù)器56發(fā)出等于31的程序計(jì)數(shù)值為止。此時(shí)當(dāng)控制器60比較兩個(gè)值時(shí)即會(huì)發(fā)生吻合的情形,故控制器60會(huì)發(fā)出一間接分支指令至緩沖器66,其包含有一指標(biāo)(index)存在。在對(duì)此一間接分支指令進(jìn)行譯碼時(shí),指令譯碼器68并不會(huì)對(duì)程序計(jì)數(shù)器56中所存儲(chǔ)的值進(jìn)行遞增,而處理單元68會(huì)對(duì)輔助存儲(chǔ)器58中的表格進(jìn)行檢查,以檢查是否有對(duì)應(yīng)到該指針的表格字段。
當(dāng)處理單元68在輔助存儲(chǔ)器58中找到對(duì)應(yīng)到該指針的表格字段時(shí),處理單元54將該字段中的置換計(jì)數(shù)值加載到程序計(jì)數(shù)器56中。此時(shí),置換計(jì)數(shù)值為331,程序計(jì)數(shù)器56會(huì)將331發(fā)出給指令提取器64,而指令提取器64則將輔助存儲(chǔ)器58中修補(bǔ)區(qū)段內(nèi)的指令331加載緩沖器66內(nèi)。然后,指令譯碼器68對(duì)此一指令進(jìn)行譯碼,并將程序計(jì)數(shù)器56中所存儲(chǔ)的值遞增1,而由處理單元54開始執(zhí)行指令,程序計(jì)數(shù)器56則發(fā)出遞增后的程序計(jì)數(shù)值,亦即332。
上述的執(zhí)行過程繼續(xù),直到執(zhí)行到指令340為止。由于340是修補(bǔ)區(qū)段中最后一個(gè)替代指令,故其實(shí)質(zhì)上為一結(jié)束用的分支指令。此一分支指令會(huì)分支到程序計(jì)數(shù)值41。如此一來,程序計(jì)數(shù)器56就會(huì)從341變成41。然后處理單元10就可以分支回只讀存儲(chǔ)器52中的指令41。綜上所述,不要的指令碼(從31到40)在執(zhí)行的過程中會(huì)被略過,而處理單元?jiǎng)t會(huì)執(zhí)行適當(dāng)?shù)奶娲噶睢?br> 請(qǐng)注意,每當(dāng)必須自只讀存儲(chǔ)器52分支出一次時(shí),就必須使用到一個(gè)包含有寄存器62的控制器60。因此若必須自只讀存儲(chǔ)器52分支出六次,就需要使用到六個(gè)控制器60。并請(qǐng)注意,每一段不要的指令中所包含的指令數(shù)目并不一定要等于其相對(duì)應(yīng)修補(bǔ)區(qū)段中所包含的指令數(shù)目。舉例來說,若一段不要的指令中包含有10個(gè)指令(從31到40),則其相對(duì)應(yīng)到的修補(bǔ)區(qū)段除了可包含有10個(gè)指令之外,亦可以包含有其它的指令數(shù)目。每一個(gè)修補(bǔ)區(qū)段都可以具有可變的長(zhǎng)度,可包含有1個(gè)、100個(gè)、或者其它數(shù)量的替代指令。另外,每一個(gè)修補(bǔ)區(qū)段的最后也可以選擇是否要分支回只讀存儲(chǔ)器52。每個(gè)修補(bǔ)區(qū)段中最后的指令可以由程序開發(fā)者自行決定其用途。
相較于已知技術(shù),本發(fā)明的分支系統(tǒng)僅需使用控制器60,以及包含有一表格的輔助存儲(chǔ)器58,即可實(shí)現(xiàn)已知技術(shù)所欲解決的問題,并不會(huì)增加太多的硬件裝置。顯而易見的,若只讀存儲(chǔ)器中具有512個(gè)指令,而在從指令31開始之處的一段指令需要使用在其它存儲(chǔ)器中的一個(gè)修補(bǔ)區(qū)段來替代時(shí),本發(fā)明可以使用具有一寄存器62的一控制器60可用來這樣的一次的分支工作。
在上述本發(fā)明的實(shí)施例中,控制器60僅需使用10個(gè)位來存儲(chǔ)初始程序計(jì)數(shù)值(在上述例子中等于31),以進(jìn)行分支作業(yè)。相對(duì)的,在第一已知技術(shù)中,程序修補(bǔ)模塊20中的標(biāo)示位存儲(chǔ)器26需要使用1024個(gè)位,以進(jìn)行分支作業(yè)。另外,還必須使用中斷控制器18以幫助處理單元14完成分支作業(yè),因此第一已知技術(shù)的作法會(huì)比本發(fā)明更耗時(shí)間。至于相較于第二已知技術(shù),其需要使用20位以完成分支作業(yè),其中地址比較器40中的寄存器42需要使用10位、分支寄存器44則需使用另外的10位來存儲(chǔ)相對(duì)應(yīng)的值,另外,其亦必須使用兩個(gè)模塊,而本發(fā)明僅需用一個(gè)模塊,即可完成分支作業(yè)。
至于上述所需的位數(shù)目的計(jì)算方式則如以下所述。因?yàn)橛?jì)算機(jī)是以2進(jìn)位的方式讀取數(shù)據(jù),一正整數(shù)N需要使用K個(gè)位表示,其中2K必須大于N,故若需要表示第33行的地址時(shí),就需要使用到6個(gè)位(因?yàn)?6大于33)。
顯而易見,藉由將包含有所需使用的替代程序計(jì)數(shù)值的表格存儲(chǔ)在輔助存儲(chǔ)器58中,所需使用的硬件會(huì)比已知技術(shù)更為精簡(jiǎn),另外,本發(fā)明的作法所需的時(shí)間亦會(huì)比已知技術(shù)更為減少。這些均是本發(fā)明優(yōu)于已知技術(shù)的地方。
以上所述僅為本發(fā)明的較佳實(shí)施例,凡依本發(fā)明的權(quán)利要求所做的均等變化與修飾,皆應(yīng)屬本發(fā)明的涵蓋范圍。
權(quán)利要求
1.一種微處理器裝置,包含有一程序計(jì)數(shù)器,用來存儲(chǔ)一程序計(jì)數(shù)值;一處理單元,耦接于該程序計(jì)數(shù)器,包含有一指令提取模塊,耦接于該程序計(jì)數(shù)器,用來依據(jù)該程序計(jì)數(shù)值提取程序指令,并將提取的指令存儲(chǔ)于一緩沖器中;一指令譯碼模塊,耦接于該指令提取模塊,用來對(duì)該緩沖器中的指令進(jìn)行譯碼及調(diào)度的工作;一只讀存儲(chǔ)器,耦接于該處理單元,用來存儲(chǔ)一第一程序;一輔助可程序存儲(chǔ)器,耦接于該處理單元,用來存儲(chǔ)用以取代該第一程序內(nèi)相對(duì)應(yīng)指令的修補(bǔ)區(qū)段,以及存儲(chǔ)一表格,該表格中包含有對(duì)應(yīng)于每個(gè)修補(bǔ)區(qū)段的替代程序計(jì)數(shù)值;以及一控制器,耦接于該程序計(jì)數(shù)器以及該處理單元,用來于該程序計(jì)數(shù)值與一初始程序計(jì)數(shù)值發(fā)生吻合的情形時(shí),傳送一間接分支指令至該處理單元,該間接分支指令對(duì)應(yīng)于一適當(dāng)?shù)男扪a(bǔ)區(qū)段,其中,該間接分支指令可將對(duì)應(yīng)于吻合情形的替代程序計(jì)數(shù)值插入該程序計(jì)數(shù)器中。
2.如權(quán)利要求1所述的微處理器裝置,其中該控制器中包含有一寄存器,用來存儲(chǔ)該初始程序計(jì)數(shù)值。
3.一種方法,用來執(zhí)行相對(duì)應(yīng)于一第一程序中部分程序區(qū)段的修補(bǔ)程序區(qū)段,該方法包含有以下步驟(a)比較一初始程序計(jì)數(shù)值與一程序計(jì)數(shù)器中的一程序計(jì)數(shù)值;(b)當(dāng)步驟(a)發(fā)生吻合的情形時(shí),以插入一間接分支指令的方式作為指令提取的依據(jù),其中該間接分支指令中具有對(duì)應(yīng)于一緩沖器中指令的一指針;(c)依據(jù)該間接分支指令中的該指針,找尋一輔助可程序存儲(chǔ)器中一表格內(nèi)相對(duì)應(yīng)的字段;以及(d)依據(jù)該表格內(nèi)相對(duì)應(yīng)該指針的字段,改變?cè)摮绦蛴?jì)數(shù)器中的該程序計(jì)數(shù)值。
4.如權(quán)利要求3所述的方法,其還包含有(e)使用一分支指令結(jié)束一修補(bǔ)區(qū)段。
5.如權(quán)利要求3所述的方法,其還包含有(e)使用一分支指令,分支回該只讀存儲(chǔ)器中的該第一程序,以結(jié)束一修補(bǔ)區(qū)段。
全文摘要
本發(fā)明披露了一種微計(jì)算機(jī)裝置,包含有一控制器,該控制器具有一存儲(chǔ)器的一芯片,耦接于該微計(jì)算機(jī)裝置的一程序計(jì)數(shù)器。該芯片可以比較程序計(jì)數(shù)器中所存儲(chǔ)的值與其存儲(chǔ)器內(nèi)所存儲(chǔ)的值,并于吻合情形發(fā)生時(shí),發(fā)出具有一指針的一間接分支指令。該間接分支指令藉由該指針對(duì)應(yīng)到一表格內(nèi)的一字段,該字段則包含有用來加載該程序計(jì)數(shù)器的值。
文檔編號(hào)G06F9/42GK1604030SQ20041008336
公開日2005年4月6日 申請(qǐng)日期2004年9月30日 優(yōu)先權(quán)日2003年9月30日
發(fā)明者謝燿晃 申請(qǐng)人:聯(lián)發(fā)科技股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1