專利名稱:用以于嵌入程序只讀存儲(chǔ)器中實(shí)施修正機(jī)制的電路與方法
技術(shù)領(lǐng)域:
本發(fā)明有關(guān)于嵌入程序(embedded program),且特別是有關(guān)于嵌入程序只讀存儲(chǔ)器中修正機(jī)制(patch mechanism)的實(shí)施電路與方法。
背景技術(shù):
傳統(tǒng)的數(shù)字信號(hào)處理核心用以執(zhí)行從程序存儲(chǔ)器所讀取的指令。程序存儲(chǔ)器可由動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器、只讀存儲(chǔ)器或動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器與只讀存儲(chǔ)器的結(jié)合所實(shí)施;儲(chǔ)存于只讀存儲(chǔ)器中的程序數(shù)據(jù)經(jīng)過(guò)初次編程后,便無(wú)法再更動(dòng)。
修正邏輯讓程序設(shè)計(jì)師可以有機(jī)會(huì)修正只讀存儲(chǔ)器中的部份程序代碼,并將部份程序代碼以不同的指令取代,來(lái)修正錯(cuò)誤或提升某一特性。修正邏輯通常用以將程序代碼的正常流程重新導(dǎo)向一修正碼。
傳統(tǒng)的方式(如美國(guó)發(fā)明專利第4,610,000號(hào))會(huì)實(shí)施導(dǎo)向特定任務(wù)(如修正宏碼;patching macrocodes)的修正機(jī)制;以一對(duì)一修正機(jī)制對(duì)核心處理器的程序只讀存儲(chǔ)器進(jìn)行修正,不需要考慮核心處理器的讀取操作時(shí)序以及指令集。
將程序代碼的正常流程予以重新導(dǎo)向以修正錯(cuò)誤或?qū)却娴某绦虼a添加指令皆為理想的做法;將程序代碼予以重新導(dǎo)向一修正用隨機(jī)存取存儲(chǔ)器以實(shí)施修正機(jī)制亦為一理想的做法;該修正機(jī)制在具有嵌入程序只讀存儲(chǔ)器的集成電路中特別有用。
發(fā)明內(nèi)容
本發(fā)明關(guān)于包括一存儲(chǔ)器、一邏輯電路以及一多任務(wù)器的裝置。該存儲(chǔ)器通常包括一只讀的第一地址空間,以及一可擦寫(xiě)的第二地址空間。存儲(chǔ)器依據(jù)第一地址空間內(nèi)的第一地址傳回第一數(shù)據(jù)項(xiàng),邏輯電路可組成為(i)根據(jù)與多個(gè)既定地址皆無(wú)法吻合的第一地址以取消命令信號(hào);(ii)產(chǎn)生一第一分支指令并依據(jù)與既定地址之一吻合的第一地址下達(dá)命令信號(hào)。多任務(wù)器可組成為從存儲(chǔ)器選定第一數(shù)據(jù)項(xiàng)或從邏輯電路選定第一分支指令,以響應(yīng)命令信號(hào)。
本發(fā)明的目的、特征與優(yōu)點(diǎn)在于提供嵌入程序(如只讀存儲(chǔ)器)中修正機(jī)制的實(shí)施電路與方法,該實(shí)施電路與方法可(i)提供修正位置、程序地址空間與修正量的彈性變化;(ii)以低邏輯門(mén)數(shù)而予以實(shí)施;(iii)提供實(shí)施大量修正的彈性;(iv)以無(wú)程序代碼大小的限制而予以實(shí)施;(v)不以既定程序代碼為限的情況下提供修正碼;(vi)在回傳地址無(wú)限制下予以實(shí)施;(vii)提供連續(xù)地址間的對(duì)比以確保正常操作。
為讓本發(fā)明的上述和其它目的、特征、和優(yōu)點(diǎn)能更明顯易懂,下文特舉出較佳實(shí)施例,并配合附圖,詳細(xì)說(shuō)明如下。
圖1為依據(jù)本發(fā)明的較佳實(shí)施例的方塊圖。
圖2A-2D為本發(fā)明的較佳實(shí)施例的詳細(xì)圖示。
圖3為說(shuō)明本發(fā)明的操作的時(shí)序圖。
圖4為說(shuō)明本發(fā)明的操作的時(shí)序圖。
符號(hào)說(shuō)明100-電路;102-處理器;104-程序空間電路;106-修正邏輯電路;108-選擇電路;110-地址總線;112-輸出;114-輸入;116輸入;118輸出;119-輸入;120-區(qū)塊;122-區(qū)塊;124-區(qū)塊;130a-130n-地址寄存器;132a-132n-邏輯區(qū)塊;134a-134n-邏輯門(mén);135-修正啟動(dòng)寄存器;140a-140n-修正地址寄存器;142a-142n-邏輯門(mén);144-邏輯門(mén);146-寄存器;148-邏輯門(mén);150-區(qū)塊;152-區(qū)塊;154-區(qū)塊;156-區(qū)塊;160-區(qū)塊;162-區(qū)塊;164-區(qū)塊;166-區(qū)塊;168-區(qū)塊;170-PATCH_MATCH信號(hào)切換;172-時(shí)鐘信號(hào)DSP_CLK的邊緣;174-信號(hào)更新;176-信號(hào)PDBI;178-信號(hào)PDBI;180-認(rèn)定信號(hào)PM2;182-時(shí)鐘信號(hào)DSP_CLK的正緣;184-跳至目標(biāo)分支地址0XD000;190-讀取指令;192-信號(hào)PM2維持在“低”邏輯態(tài);194-控制信號(hào)PTCH_DAT_SEL切換至“低”邏輯態(tài)。
具體實(shí)施例方式
本發(fā)明可實(shí)施以提供嵌入程序(如只讀存儲(chǔ)器)中的修正機(jī)制。本發(fā)明的實(shí)施可對(duì)邏輯門(mén)數(shù)量有效運(yùn)用,并對(duì)使用者提供使用上的彈性;本發(fā)明的實(shí)施可針對(duì)特定數(shù)字信號(hào)處理核心(如TeakLite數(shù)字信號(hào)處理核心)而予以最佳化,亦可實(shí)施于其它數(shù)字信號(hào)處理核心、處理器、或子系統(tǒng)以符合特定實(shí)施的設(shè)計(jì)要求。本發(fā)明的時(shí)序亦可調(diào)整以符合特定數(shù)字信號(hào)處理核心的需求,本發(fā)明亦可實(shí)施于數(shù)字信號(hào)處理子系統(tǒng)的修正機(jī)制中,或?qū)嵤┯谧鳛槌绦虼鎯?chǔ)器的其它形式核心電路或模塊中,且該核心電路或模塊為無(wú)法任意更改的。
一般而言,處理器對(duì)程序存儲(chǔ)器進(jìn)行存取以讀取指令,當(dāng)指令需要更換或增添時(shí),一邏輯電路可用以將程序代碼的正常流程重新導(dǎo)向一修正碼,該重新導(dǎo)向通常通過(guò)強(qiáng)迫讀取一分支指令而不讀取程序代碼中的指令以實(shí)現(xiàn)。
請(qǐng)參照?qǐng)D1,圖中為本發(fā)明一較佳實(shí)施例的電路100的示意圖;電路100通常包括一處理器102、一程序空間電路(或區(qū)間)104、一修正邏輯電路(或區(qū)間)106、以及一選擇電路(或區(qū)間)108。處理器102可以數(shù)字信號(hào)處理器或其它可符合特定實(shí)施的設(shè)計(jì)要求之處理器進(jìn)行實(shí)施,程序空間電路104實(shí)施以作為定義存儲(chǔ)空間的存儲(chǔ)器,存儲(chǔ)器104包括一程序存儲(chǔ)器(或區(qū)間)104a與一修正存儲(chǔ)器(或區(qū)間)104b,程序存儲(chǔ)器104a可作為于存儲(chǔ)器空間中涵蓋第一地址范圍的只讀存儲(chǔ)器(ROM);修正存儲(chǔ)器104b可作為于存儲(chǔ)器空間中涵蓋第二地址范圍的隨機(jī)存取存儲(chǔ)器(RAM);程序存儲(chǔ)器104a與修正存儲(chǔ)器104b可以是彼此分隔的存儲(chǔ)器或是具有只讀存儲(chǔ)器部份與隨機(jī)存取存儲(chǔ)器部份的單一存儲(chǔ)器;修正邏輯電路106可于一數(shù)字信號(hào)處理子系統(tǒng)中實(shí)施;選擇電路108可以多任務(wù)器或其它適當(dāng)?shù)倪x擇組件來(lái)實(shí)施。
地址總線110通常連接于處理器102的輸出112與(i)程序空間電路104的輸入114(ii)修正邏輯電路106的輸入116之間;處理器102會(huì)產(chǎn)生一地址信號(hào)(如PAB)且該地址信號(hào)為程序空間電路104與修正邏輯電路106幾乎于同時(shí)接收。附圖所示的地址總線110為十六位總線,然而亦可使用其它總線寬度以符合特定實(shí)施的設(shè)計(jì)需求。
一數(shù)據(jù)總線117通常連接于多任務(wù)器108的輸出118與處理器102的輸入119之間;數(shù)據(jù)信號(hào)(如PDBI,program data bus in,程序數(shù)據(jù)總線)可由選擇電路108回傳至處理器102,數(shù)據(jù)信號(hào)PDBI可攜帶不同的數(shù)據(jù)項(xiàng),如指令、地址或使用者數(shù)據(jù)(但不限于此);數(shù)據(jù)總線117可以十六位總線實(shí)施,然而亦可使用其它總線寬度以符合特定實(shí)施的設(shè)計(jì)需求。
存儲(chǔ)器104依據(jù)輸入端114接收的地址信號(hào)PAB而于輸出端121將一信號(hào)(如DATA)傳送至多任務(wù)器108的輸入123;修正邏輯電路106根據(jù)一串的地址PAB于輸出端125產(chǎn)生一信號(hào)(如PI),并傳送至多任務(wù)器108的輸入127;修正邏輯電路106亦會(huì)根據(jù)該地址序列PAB而于輸出端129產(chǎn)生一選擇或控制信號(hào)(如PTCH_DAT_SEL),并傳送至多任務(wù)器108的輸入131。
一般而言,根據(jù)地址總線110上的特定地址PAB,程序只讀存儲(chǔ)器104a或修正隨機(jī)存取存儲(chǔ)器104b會(huì)被讀??;修正邏輯電路106通??煽刂贫嗳蝿?wù)器108,并發(fā)出一分支指令(操作碼或命令)及接續(xù)其后的分支地址,從修正邏輯電路106(將以圖2A-2D作詳細(xì)描述)內(nèi)的寄存器所讀取的分支地址通常包括一位于修正隨機(jī)存取存儲(chǔ)器104b的地址范圍(或空間)內(nèi)的地址,因此,在執(zhí)行分支指令之后,處理器102可執(zhí)行由修正隨機(jī)存取存儲(chǔ)器104b而來(lái)的一或多個(gè)額外指令,修正隨機(jī)存取存儲(chǔ)器104b的指令通常包含另一分支指令以及一回歸程序只讀存儲(chǔ)器104a的相對(duì)應(yīng)分支地址。
請(qǐng)參照?qǐng)D2A-2D,所示為修正邏輯電路106與多任務(wù)器108的較詳細(xì)圖示;修正邏輯電路106通常包括一區(qū)塊(或區(qū)間)120、一區(qū)塊(或區(qū)間)122與一區(qū)塊(或區(qū)間)124;區(qū)塊120可實(shí)施為比較器對(duì)比區(qū)間;區(qū)塊122可實(shí)施為目標(biāo)分支地址產(chǎn)生器區(qū)間;區(qū)塊124可實(shí)施為比較器序列區(qū)間。
區(qū)塊120通常包括多個(gè)寄存器130a-130n、多個(gè)邏輯區(qū)塊132a-132n與多個(gè)邏輯門(mén)134a-134n。每一地址寄存器130a-130n皆可能有一儲(chǔ)存于程序只讀存儲(chǔ)器104a的既定地址(可能為程序代碼中一特定部份的第一地址),且該地址為程序設(shè)計(jì)師所欲置換,該既定地址可指出被修正、修復(fù)或延展的程序只讀存儲(chǔ)器104a中某些行程序代碼的地址。邏輯區(qū)塊132a-132n皆可實(shí)施為一比較器,通過(guò)將地址PAB與既定地址的一進(jìn)行比較以產(chǎn)生一對(duì)比信號(hào)(如PM0-PMn);邏輯門(mén)134a-134n皆可以為與-邏輯門(mén)(AND gate)以讓對(duì)比信號(hào)PM0-PMn啟動(dòng)(enable)或禁止(disable)。
啟動(dòng)邏輯門(mén)134a-134n通常容許每一修正寄存器130a-130n被啟動(dòng)或禁止;每一啟動(dòng)邏輯門(mén)134a-134n有可接收來(lái)自邏輯區(qū)塊132a-132n的信號(hào)的第一輸入端,以及可接收多個(gè)啟動(dòng)信號(hào)(如EN0-ENn)的一的第二輸入端;啟動(dòng)信號(hào)EN0-ENn可由一修正啟動(dòng)寄存器135或?yàn)橥獠克峁?;舉例而言,啟動(dòng)邏輯門(mén)134a通常接收來(lái)自邏輯區(qū)塊132a的輸出信號(hào)以及一啟動(dòng)信號(hào)EN0,每一修正機(jī)制在修正啟動(dòng)寄存器135中有一指定的位,或者有一專屬的外部啟動(dòng)信號(hào);特定位為“1”會(huì)使特定的修正機(jī)制啟動(dòng),特定位為“0”會(huì)使特定的修正機(jī)制禁止;在初始化時(shí),一或多個(gè)對(duì)比地址寄存器130a-130n會(huì)被寫(xiě)入各自的對(duì)比地址,且相應(yīng)的修正地址寄存器140a-140n亦會(huì)被寫(xiě)入各自的修正地址;通過(guò)啟動(dòng)信號(hào)EN0-ENn可使特定的修正機(jī)制啟動(dòng)。
區(qū)塊122通常包括多個(gè)寄存器140a-140n、多個(gè)邏輯門(mén)142a-142n、一邏輯門(mén)144、一寄存器146、一邏輯門(mén)148、一區(qū)塊150、一區(qū)塊152、一區(qū)塊154以及一區(qū)塊156。寄存器140a-140n實(shí)施以作為儲(chǔ)存分支地址(如BA0-BAn)的修正地址寄存器;分支地址BA0-BAn可提供程序代碼的一新部份中的第一地址,該程序代碼位于提供置換指令的修正隨機(jī)存取存儲(chǔ)器104b中;假若程序地址PAB與對(duì)比地址寄存器130a-130n中某一個(gè)對(duì)比吻合,則處理器102所執(zhí)行的程序會(huì)跳到分支地址BA0-BAn中的某一地址。邏輯門(mén)142a-142n可以與-邏輯門(mén)實(shí)施,邏輯門(mén)142a-142n依據(jù)各自的對(duì)比信號(hào)PM0-PMn而認(rèn)定或解除認(rèn)定(assert or de-assert)分支地址信號(hào)BA0-BAn。
邏輯門(mén)144和邏輯門(mén)148可以或-邏輯門(mén)實(shí)施。邏輯門(mén)144可由分支地址BA0-BAn中被認(rèn)定的分支地址產(chǎn)生一現(xiàn)在的分支地址(如PA);邏輯門(mén)148可依據(jù)對(duì)比信號(hào)PM0-PMn產(chǎn)生一信號(hào)(如PATCH_MATCH)。
區(qū)塊150可以具有加載啟動(dòng)(load-enable)功能的D-型觸發(fā)器實(shí)施;觸發(fā)器150可依信號(hào)PATCH_MATCH的認(rèn)定而加載現(xiàn)在的分支地址PA,觸發(fā)器150在一時(shí)鐘信號(hào)(如DSP_CLK)的邊緣(如正緣)時(shí),會(huì)送出現(xiàn)在的分支地址PA的儲(chǔ)存版本;寄存器146可實(shí)施作為一基本地址寄存器,以儲(chǔ)存修正隨機(jī)存取存儲(chǔ)器140b地址范圍的基本地址(如BASE),分支地址PA的儲(chǔ)存版本將與基本地址串接以形成一延遲分支地址(如PA_D)以與時(shí)鐘信號(hào)DSP_CLK進(jìn)行同步化。
區(qū)塊152可以D-型觸發(fā)器實(shí)施;觸發(fā)器152在一時(shí)鐘信號(hào)DSP_CLK的邊緣(如正緣)時(shí),進(jìn)行信號(hào)PATCH_MATCH的儲(chǔ)存,觸發(fā)器152會(huì)送出一信號(hào)(如PMD),該信號(hào)為信號(hào)PATCH_MATCH的延遲版本,且與時(shí)鐘信號(hào)DSP_CLK同步;區(qū)塊154可實(shí)施作為一多任務(wù)器,多任務(wù)器154可由信號(hào)PMD所控制,而從一既定分支指令(或操作碼)(如0X4180)和一信號(hào)PA_D作多任務(wù)選擇,以產(chǎn)生信號(hào)PI。
邏輯門(mén)156可以或-邏輯門(mén)實(shí)施;邏輯門(mén)156可由信號(hào)PMD和一指示信號(hào)(如PM2D)產(chǎn)生控制信號(hào)PTCH_DAT_SEL;盡管區(qū)塊122中的每一電路組件以特定的實(shí)施方式表示,但實(shí)際上可依據(jù)特定實(shí)施的設(shè)計(jì)需求去變更每一電路組件的實(shí)施方式。
區(qū)塊124通常包括一區(qū)塊(或電路)160、一區(qū)塊(或電路)162、一區(qū)塊(或電路)164、一區(qū)塊(或電路)166與一區(qū)塊(或電路)168。區(qū)塊160可實(shí)施為具有加載啟動(dòng)特性的D-型觸發(fā)器;區(qū)塊162可實(shí)施為比較器;區(qū)塊164可實(shí)施為與-邏輯門(mén);區(qū)塊166可實(shí)施為D-型觸發(fā)器;區(qū)塊168可實(shí)施為多位的加法器;每一觸發(fā)器160與166皆可接收時(shí)鐘信號(hào)DSP_CLK。
加法器168可通過(guò)將一固定值(如0X1)加到地址PAB而產(chǎn)生一中間地址(如ADRP1),中間地址ADRP1可等于位于地址總線110上由地址PAB而來(lái)的連續(xù)地址;當(dāng)加載為認(rèn)定的信號(hào)PATCH_MATCH所啟動(dòng)時(shí),觸發(fā)器160會(huì)將中間地址ADRP1儲(chǔ)存,且觸發(fā)器160會(huì)在時(shí)鐘信號(hào)DSP_CLK的邊緣(如正緣)時(shí)送出一延遲的中間地址(如ADRP1D);比較器162會(huì)依據(jù)地址信號(hào)PAB與延遲的中間地址ADRP1D比較的結(jié)果產(chǎn)生一結(jié)果信號(hào)(如PM2);邏輯門(mén)164可利用信號(hào)PMD使結(jié)果信號(hào)PM2啟動(dòng)或禁止;觸發(fā)器166會(huì)在時(shí)鐘信號(hào)DSP_CLK的邊緣(如正緣)時(shí)將啟動(dòng)或禁止的結(jié)果信號(hào)PM2儲(chǔ)存,且觸發(fā)器166會(huì)依據(jù)指示信號(hào)PM2D送出結(jié)果信號(hào)PM2的儲(chǔ)存值;盡管區(qū)塊124中的每一電路組件以特定的實(shí)施方式表示,但實(shí)際上可依據(jù)特定實(shí)施的設(shè)計(jì)需求去變更每一電路組件的實(shí)施方式。
當(dāng)處理器102執(zhí)行程序代碼時(shí),會(huì)在地址總線110上產(chǎn)生一連串的地址PAB,同時(shí)亦從數(shù)據(jù)總線117讀取指令項(xiàng)PDBI;當(dāng)程序地址總線110上的地址PAB與對(duì)比地址寄存器的一的地址吻合時(shí),修正邏輯106通常會(huì)送出一分支操作碼(如TeakLite數(shù)字信號(hào)處理核心的0X4180),而非從程序只讀存儲(chǔ)器104a取出而送到數(shù)據(jù)總線117上的數(shù)據(jù)項(xiàng)(如操作碼);在下一個(gè)周期中,假若代表地址空間的連續(xù)地址的下一個(gè)地址信號(hào)PAB與中間地址ADRP1D吻合(如現(xiàn)在的地址=對(duì)比地址+1個(gè)單位),修正邏輯106會(huì)送出一分支地址PA_D,而非從程序只讀存儲(chǔ)器104a取出的下一數(shù)據(jù)項(xiàng)(如另一操作碼或操作單元);多任務(wù)器108會(huì)被命令要將分支地址PA_D作為數(shù)據(jù)信號(hào)PDBI,并以數(shù)據(jù)總線117回傳給處理器102。假若修正邏輯106所產(chǎn)生的分支指令為處理器102所執(zhí)行,且執(zhí)行中的程序跳到修正隨機(jī)存取存儲(chǔ)器104b的程序代碼的一新部份,則該程序代碼的新部份便會(huì)為處理器102所執(zhí)行;在修正碼的末尾,另一分支指令和分支地址會(huì)將程序跳回程序只讀存儲(chǔ)器104a中的主程序代碼。
一般而言,所有的十六位地址PAB會(huì)與對(duì)比地址寄存器130a-130n所加載的既定地址進(jìn)行比較,因此在既定地址或地址PAB上并無(wú)任何限制。此外,修正地址寄存器140a-140n可以K位寬的寄存器所實(shí)施,其中K為比地址總線110的寬度小的整數(shù),修正地址寄存器140a-140n通常包括分支地址PA_D的較低位(如BA0-BAn),修正地址寄存器140a-140n的大小(如K)可由修正隨機(jī)存取存儲(chǔ)器104b的大小所決定,以1024乘16位的修正隨機(jī)存取存儲(chǔ)器104b為例,修正地址寄存器140a-140n的寬度K可為10位;以儲(chǔ)存少于地址PAB總位數(shù)的方式實(shí)施通??梢詼p少修正邏輯電路106的邏輯門(mén)數(shù)目。
分支地址PA_D的較高位可寫(xiě)入寄存器146,因此,程序設(shè)計(jì)師可彈性地將修正隨機(jī)存取存儲(chǔ)器104b置于處理器102的程序地址空間中或者程序只讀存儲(chǔ)器104a的地址范圍中。
當(dāng)?shù)刂房偩€110上的地址PAB與對(duì)比地址寄存器130a-130n之一吻合時(shí),對(duì)比信號(hào)PM0-PMn會(huì)切換(或被認(rèn)定)為“高”邏輯態(tài),認(rèn)定的對(duì)比信號(hào)PM0-PMn可能會(huì)認(rèn)定信號(hào)PATCH_MATCH,信號(hào)PATCH_MATCH的認(rèn)定會(huì)將目標(biāo)分支地址(如BA0-BAn)加載觸發(fā)器150,并將中間地址ADRP1加載觸發(fā)器160,信號(hào)PATCH_MATCH會(huì)被延遲(如延遲的信號(hào)PMD)一個(gè)周期以符合特定核心(如TeakLite數(shù)字信號(hào)處理核心)的時(shí)序限制;舉例而言,在時(shí)鐘信號(hào)DSP_CLK的一個(gè)周期中,地址總線110上會(huì)有一個(gè)特定的讀取地址PAB,而在時(shí)鐘信號(hào)DSP_CLK的下一個(gè)周期中,數(shù)據(jù)PDBI會(huì)被處理器102所提取。
在下一個(gè)周期中,一分支操作碼會(huì)經(jīng)由數(shù)據(jù)總線117傳送至處理器102,地址總線110上的地址PAB的下一個(gè)值會(huì)與延遲的中間地址ADRP1D進(jìn)行比較,假如兩者吻合,則分支地址PA_D會(huì)被送到數(shù)據(jù)總線117,使得程序跳到那一個(gè)地址。
一回復(fù)地址通常被加至修正碼的尾端以回復(fù)到執(zhí)行只讀存儲(chǔ)器104a的命令,回復(fù)地址可為至寄存器130a-130n中地址的一連續(xù)地址(如只修正一命令),在該情況中,因地址PAB不會(huì)與寄存器130a-130n中的任一既定地址吻合,故信號(hào)PATCH_MATCH不會(huì)切換到“高”邏輯態(tài),也因此處理器102會(huì)重新讀取程序只讀存儲(chǔ)器104a里的操作碼和操作單元。
請(qǐng)參照?qǐng)D3,所示為本發(fā)明不同信號(hào)的時(shí)序圖,舉例中觸發(fā)對(duì)比的既定地址為0X0068,修正隨機(jī)存取存儲(chǔ)器104b中的目標(biāo)分支地址為0XD000,當(dāng)?shù)刂房偩€上的地址PAB為0X0068時(shí),信號(hào)PATCH_MATCH會(huì)切換(170)至“高”邏輯態(tài),修正邏輯電路106可將目標(biāo)分支地址PA(如0XD000)加載觸發(fā)器150,并將中間地址ADRP1(如0X0069)載入觸發(fā)器160,觸發(fā)器152、150及160可使信號(hào)PATCH_MATCH、PA及ADRP1與時(shí)鐘信號(hào)DSP_CLK的邊緣172同步化,且將信號(hào)PMD、PA_D及ADRP1D更新(174);多任務(wù)器154會(huì)將分支操作碼(如0X4180)導(dǎo)向至多任務(wù)器108以響應(yīng)認(rèn)定的信號(hào)PMD,多任務(wù)器108會(huì)在信號(hào)PDBI(176)中將分支操作碼導(dǎo)向至處理器102以響應(yīng)認(rèn)定的信號(hào)PMD,認(rèn)定的信號(hào)PMD通過(guò)邏輯門(mén)156而產(chǎn)生多任務(wù)器108的控制信號(hào)PTCH_DAT_SEL。
假若處理器102輸出地址0X0069作為下一地址PAB,則會(huì)在比較器區(qū)段124進(jìn)行另一對(duì)比,且修正邏輯106將于信號(hào)PDBI(178)中傳送目標(biāo)分支地址PA;在舉例中,比較器162會(huì)通過(guò)邏輯門(mén)164而認(rèn)定(assert)信號(hào)PM2(180),同時(shí)觸發(fā)器166會(huì)在時(shí)鐘信號(hào)DSP_CLK的正緣(rising edge)182產(chǎn)生一延遲的信號(hào)PM2D;被認(rèn)定的信號(hào)PM2D會(huì)將控制信號(hào)PTCH_DAT_SEL維持在“高”邏輯態(tài),而目標(biāo)分支地址0XD000會(huì)被傳送至數(shù)據(jù)總線117;在將分支操作碼0X4180譯碼之后,處理器102會(huì)跳至目標(biāo)分支地址0XD000(184)。
請(qǐng)參照?qǐng)D4,所示為地址總線110上的下一地址不等于中間地址時(shí)的時(shí)序圖,在該例中,分支指令的第一操作碼(如0X4180)會(huì)被處理器102提取(176)但忽略,指令會(huì)接著由程序只讀存儲(chǔ)器104a中一不連續(xù)的地址0X010F(190)讀取,于是,比較器162將不會(huì)從下一地址(如0X010F)與中間地址ADRP1D(如0X0069)間發(fā)現(xiàn)吻合之處,因此,比較器162會(huì)讓信號(hào)PM2維持在“低”邏輯態(tài)(192);在由數(shù)據(jù)總線117讀取分支操作碼之后,控制信號(hào)PTCH_DAT_SEL會(huì)切換至“低”邏輯態(tài)(194),使得從程序只讀存儲(chǔ)器104a將數(shù)據(jù)項(xiàng)PI導(dǎo)入多任務(wù)器108。
本發(fā)明可在使用低邏輯門(mén)數(shù)情形下,提供修正隨機(jī)存取存儲(chǔ)器104b位置、程序地址空間及修正隨機(jī)存取存儲(chǔ)器104b的大小的彈性;此外,本發(fā)明亦提供修正機(jī)制數(shù)目上的彈性;除了受限于修正隨機(jī)存取存儲(chǔ)器104b的容量的外,修正程序代碼的大小并無(wú)限制;在跳至修正碼后,處理器102便會(huì)開(kāi)始執(zhí)行由修正隨機(jī)存取存儲(chǔ)器104b取得的指令;在每一修正碼的末尾,會(huì)有一分支命令與一分支地址,分支地址指向儲(chǔ)存于程序只讀存儲(chǔ)器104a的指令;由于修正碼可位于隨機(jī)存取存儲(chǔ)器的中,修正碼的內(nèi)容本身就有變動(dòng)的彈性;尤有甚者,對(duì)于回復(fù)至程序只讀存儲(chǔ)器104a的地址而言,并無(wú)任何限制;在一實(shí)施例中,對(duì)比地址的連續(xù)地址可為回復(fù)地址,因此,即便是程序只讀存儲(chǔ)器104a中的單一指令亦可修正。
在將分支地址送至數(shù)據(jù)總線117的前,進(jìn)行下一地址(如對(duì)比地址+1)的對(duì)比可以防止不希望出現(xiàn)的行為,由于處理器102具有流水線機(jī)制(pipeline mechanism),所以對(duì)比地址的下一地址可以不是地址空間中的遞增地址;舉例而言,在條件分支命令之后的修正會(huì)造成相對(duì)于對(duì)比地址的下一地址有顯著的改變,假若執(zhí)行了條件分支命令,對(duì)比地址可在地址總線117上(如作為提取階段的一部份),但是下一地址不應(yīng)該是連續(xù)的地址(如對(duì)比地址+1);因此,跳至修正隨機(jī)存取存儲(chǔ)器104b所儲(chǔ)存的程序代碼的情形便不應(yīng)該發(fā)生。留意對(duì)比地址與下一地址之間的連續(xù)地址通??纱_保正常的操作,一般而言,本發(fā)明將避免對(duì)一兩字指令(two word instruction)的一第二部份的一地址進(jìn)行修正,如此將會(huì)對(duì)該指令的第一部份作譯碼,但可將分支操作碼譯碼為第二部份,而產(chǎn)生未知的行為。
本發(fā)明可實(shí)施為碼分多址系統(tǒng)的一部份,該碼分多址系統(tǒng)使用高性能數(shù)字信號(hào)處理器以執(zhí)行程序只讀存儲(chǔ)器或隨機(jī)存取存儲(chǔ)器的指令;當(dāng)新的通信標(biāo)準(zhǔn)演變時(shí),隨機(jī)存取存儲(chǔ)器空間所提供的編程彈性可以允許對(duì)程序進(jìn)行更新,現(xiàn)存標(biāo)準(zhǔn)的應(yīng)用有如第三代(3G)CDMA2000(維吉尼亞州阿靈頓的遠(yuǎn)距通信工業(yè)協(xié)會(huì)所注冊(cè)的商標(biāo))初版解決方案(Release 0 solution)于增加新的特性與功能時(shí),便可受惠于編程彈性。
本發(fā)明不同的信號(hào)通常是“開(kāi)”(如一數(shù)字高電平或1)或“關(guān)”(如一數(shù)字低電平或0);然而,信號(hào)的“開(kāi)”(如認(rèn)定)與“關(guān)”(如解除認(rèn)定)狀態(tài)的特定極性可依據(jù)特定實(shí)施所需的設(shè)計(jì)要求進(jìn)行調(diào)整(如反轉(zhuǎn));此外,可加上反相器以改變信號(hào)的特定極性。如此處所使用的名詞“同時(shí)間”意在描述享有共同特定時(shí)間區(qū)間的事件,但卻不限于開(kāi)始于同一時(shí)間點(diǎn)、結(jié)束于同一時(shí)間點(diǎn)或是有相同時(shí)段的事件。
綜上所述,雖然本發(fā)明已以一較佳實(shí)施例公開(kāi)如上,然其并非用以限定本發(fā)明,任何本領(lǐng)域技術(shù)人員,在不脫離本發(fā)明的精神和范圍的情況下,可進(jìn)行各種更動(dòng)與修改,因此本發(fā)明的保護(hù)范圍當(dāng)視所提出的權(quán)利要求限定的范圍為準(zhǔn)。
權(quán)利要求
1.一種用以于嵌入程序只讀存儲(chǔ)器中實(shí)施修正機(jī)制的電路,包括一存儲(chǔ)器,該存儲(chǔ)器包括一只讀的第一地址空間以及一可擦寫(xiě)的第二地址空間,其中,該存儲(chǔ)器回傳一第一數(shù)據(jù)項(xiàng)以響應(yīng)該第一地址空間內(nèi)的一第一地址;一邏輯電路,用以(i)根據(jù)與多個(gè)既定地址皆無(wú)法吻合的該第一地址以解除認(rèn)定一命令信號(hào)與(ii)產(chǎn)生一第一分支指令并依據(jù)與該多個(gè)既定地址之一吻合的該第一地址認(rèn)定該命令信號(hào)以響應(yīng)該吻合;以及一多任務(wù)器,用以(i)從該存儲(chǔ)器選定該第一數(shù)據(jù)項(xiàng)或(ii)從該邏輯電路選定該第一分支指令,以響應(yīng)該命令信號(hào)。
2.如權(quán)利要求1所述的用以于嵌入程序只讀存儲(chǔ)器中實(shí)施修正機(jī)制的電路,其中,該存儲(chǔ)器包括一只讀存儲(chǔ)器與一隨機(jī)存取存儲(chǔ)器。
3.如權(quán)利要求1所述的用以于嵌入程序只讀存儲(chǔ)器中實(shí)施修正機(jī)制的電路,其中,該邏輯電路更用以產(chǎn)生一在該第二地址范疇內(nèi)的一第一分支地址,并依據(jù)一第二地址認(rèn)定該命令信號(hào),該第二地址(i)緊隨著該第一地址且(ii)與該第一地址差一個(gè)該第一地址空間中的基本單位。
4.如權(quán)利要求3所述的用以于嵌入程序只讀存儲(chǔ)器中實(shí)施修正機(jī)制的電路,還包括一處理器,該處理器有(i)一直接與該存儲(chǔ)器及該邏輯電路連接的地址總線以及(ii)一直接與該多任務(wù)器連接的數(shù)據(jù)總線。
5.如權(quán)利要求3所述的用以于嵌入程序只讀存儲(chǔ)器中實(shí)施修正機(jī)制的電路,其中,該邏輯電路還包括一第一區(qū)間,該第一區(qū)間通過(guò)將該第一地址與每一該既定地址進(jìn)行比較以產(chǎn)生多個(gè)對(duì)比信號(hào)。
6.如權(quán)利要求5所述的用以于嵌入程序只讀存儲(chǔ)器中實(shí)施修正機(jī)制的電路,其中,該邏輯電路還包括一第二區(qū)間,該第二區(qū)間用以依據(jù)(i)該多個(gè)對(duì)比信號(hào)以及(ii)該第一地址與該第二地址的差異以產(chǎn)生一指示信號(hào)。
7.如權(quán)利要求6所述的用以于嵌入程序只讀存儲(chǔ)器中實(shí)施修正機(jī)制的電路,其中,該邏輯電路還包括一第三區(qū)間,該第三區(qū)間用以依據(jù)該指示信號(hào)以及該多個(gè)對(duì)比信號(hào)以產(chǎn)生該命令信號(hào)。
8.如權(quán)利要求3所述的用以于嵌入程序只讀存儲(chǔ)器中實(shí)施修正機(jī)制的電路,其中,該邏輯電路包括一加法器,該加法器用以通過(guò)將該第一地址加一該基本單位以產(chǎn)生一中間地址。
9.如權(quán)利要求8所述的用以于嵌入程序只讀存儲(chǔ)器中實(shí)施修正機(jī)制的電路,其中,該邏輯電路還包括一比較器,該比較器用以將該中間地址與該第二地址進(jìn)行對(duì)比。
10.如權(quán)利要求1所述的用以于嵌入程序只讀存儲(chǔ)器中實(shí)施修正機(jī)制的電路,其中,該存儲(chǔ)器的第二地址空間為可復(fù)寫(xiě)的,用以儲(chǔ)存(i)一第二分支指令以及(ii)一位于該第一范疇內(nèi)的一第二分支地址。
11.如權(quán)利要求1所述的用以于嵌入程序只讀存儲(chǔ)器中實(shí)施修正機(jī)制的電路,其中,該第一地址空間為只讀存儲(chǔ)單元,且該第二地址空間為可擦寫(xiě)的存儲(chǔ)單元。
12.一種從一存儲(chǔ)器空間讀取數(shù)據(jù)的方法,該存儲(chǔ)器空間包括一第一地址范疇以及一第二地址范疇,該方法的步驟包括(A)依據(jù)該第一地址范疇內(nèi)的一第一地址將一第一數(shù)據(jù)項(xiàng)回傳;(B)依據(jù)與多個(gè)既定地址之一吻合的該第一地址產(chǎn)生一第一分支指令;(C)依據(jù)與該多個(gè)既定地址皆無(wú)法吻合的該第一地址選定該第一數(shù)據(jù)項(xiàng);以及(D)依據(jù)步驟(B)選定該第一分支指令。
13.如權(quán)利要求12所述的從一存儲(chǔ)器空間讀取數(shù)據(jù)的方法,其步驟還包括依據(jù)一第二地址回傳一位于該第二地址范疇內(nèi)的一第一分支地址,該第二地址(i)緊隨著該第一地址且(ii)與該第一地址差一個(gè)該第一地址范疇中的基本單位。
14.如權(quán)利要求13所述的從一存儲(chǔ)器空間讀取數(shù)據(jù)的方法,其步驟還包括回傳一儲(chǔ)存于該第二地址范疇內(nèi)的一第二數(shù)據(jù)項(xiàng)以響應(yīng)接收到該第一分支地址。
15.如權(quán)利要求14所述的從一存儲(chǔ)器空間讀取數(shù)據(jù)的方法,其步驟還包括回傳一儲(chǔ)存于該第二地址范疇內(nèi)的一第二分支指令以響應(yīng)接收到該第一分支地址之后的一第三地址。
16.如權(quán)利要求15所述的從一存儲(chǔ)器空間讀取數(shù)據(jù)的方法,其步驟還包括于一第四地址在該第三地址之后被接收時(shí),回傳一第二分支地址,該第二分支地址(i)位于該第一地址范疇內(nèi)且(ii)儲(chǔ)存于第二地址范疇內(nèi)。
17.如權(quán)利要求12所述的從一存儲(chǔ)器空間讀取數(shù)據(jù)的方法,其步驟還包括依據(jù)該第一分支指令以及該第一分支地址,從一儲(chǔ)存于該第一地址范疇內(nèi)的第一程序跳至一儲(chǔ)存于該第二地址范疇內(nèi)的第二程序。
18.如權(quán)利要求12所述的從一存儲(chǔ)器空間讀取數(shù)據(jù)的方法,其步驟還包括當(dāng)執(zhí)行一儲(chǔ)存于該第一分支地址范疇內(nèi)的第一程序時(shí),便將該第一分支指令忽略。
19.如權(quán)利要求12所述的從一存儲(chǔ)器空間讀取數(shù)據(jù)的方法,其中,該第一地址范疇只可只讀,而該第二地址范疇為可擦寫(xiě)。
全文摘要
本發(fā)明為用以于嵌入程序只讀存儲(chǔ)器中實(shí)施修正機(jī)制的電路與方法。涉及包括一存儲(chǔ)器、一邏輯電路以及一多任務(wù)器的裝置。該存儲(chǔ)器通常包括一只讀的第一地址空間,以及一可擦寫(xiě)的第二地址空間。存儲(chǔ)器依據(jù)第一地址空間內(nèi)的第一地址傳回第一數(shù)據(jù)項(xiàng)。邏輯電路可組成為以(i)根據(jù)與多個(gè)既定地址皆無(wú)法吻合的第一地址,以解除認(rèn)定命令信號(hào);(ii)產(chǎn)生一第一分支指令并依據(jù)與多個(gè)既定地址之一吻合的第一地址認(rèn)定命令信號(hào)。多任務(wù)器可組成為從存儲(chǔ)器選定第一數(shù)據(jù)項(xiàng)或從邏輯電路選定第一分支指令,以響應(yīng)命令信號(hào)。
文檔編號(hào)G11C17/10GK1581102SQ200410054908
公開(kāi)日2005年2月16日 申請(qǐng)日期2004年7月21日 優(yōu)先權(quán)日2003年8月5日
發(fā)明者阿朗·沙多 申請(qǐng)人:英屬蓋曼群島威盛電通股份有限公司