国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      可控制鎖存累加器的系統(tǒng)與方法

      文檔序號:6447493閱讀:681來源:國知局
      專利名稱:可控制鎖存累加器的系統(tǒng)與方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及一種處理器,尤其涉及處理器的計(jì)算單元中有關(guān)累加器的管理系統(tǒng)與方法。
      背景技術(shù)
      累加器是一種寄存器,也可稱之為一種輔助存儲器,它主要是用來把計(jì)算單元中的中間運(yùn)算結(jié)果進(jìn)行多次相加,從而得到一個最終的累加的結(jié)果。它往往需要臨時存放計(jì)算過程中的中間運(yùn)算結(jié)果,這些中間運(yùn)算結(jié)果然后將重新寫入由計(jì)算單元的運(yùn)算元件進(jìn)行處理。計(jì)算單元對內(nèi)存的存取速度較慢,而累加器通常有直接的路徑供運(yùn)算元件進(jìn)行數(shù)據(jù)存取,這樣避免了計(jì)算單元對內(nèi)存的頻繁存取,也就縮短了指令執(zhí)行時間。累加器的應(yīng)用非常廣泛,幾乎各種電子產(chǎn)品中都需要用到,在各類處理器中,尤其是數(shù)字信號處理器(DSP),累加器是必不可少的重要元件之一。
      累加器作為計(jì)算單元的一部分,要與計(jì)算單元的其它電路協(xié)同工作。處理器的計(jì)算單元還包括標(biāo)志位寄存器,用來存放計(jì)算結(jié)果中的各種特征,如進(jìn)(借)位、溢出、正負(fù)符號等。在計(jì)算過程中,例如,標(biāo)志位寄存器為16位,而進(jìn)行加法運(yùn)算時,兩個操作數(shù)分別是0FFEH和F00AH,兩數(shù)相加后,其結(jié)果超過了FFFFH,此時,標(biāo)志位寄存器中的進(jìn)位標(biāo)志位就應(yīng)置1。傳統(tǒng)的計(jì)算單元的設(shè)計(jì)中,總是累加器完成了一次累加運(yùn)算所需要的全部的運(yùn)算量后,再把最終結(jié)果輸出,并在輸出最終結(jié)果的同時才置位標(biāo)志位寄存器。而累加運(yùn)算進(jìn)行過程中,每次暫存在累加器中的中間結(jié)果,總是與下一次運(yùn)算單元送出的中間結(jié)果相加時被更新,這樣中間結(jié)果就無法影響到標(biāo)志位。但在有的計(jì)算控制過程中,比如在執(zhí)行條件跳轉(zhuǎn)指令時,有時也會將中間結(jié)果對標(biāo)志位的影響作為判斷條件,其它的執(zhí)行單元則根據(jù)標(biāo)志位的值來執(zhí)行任務(wù)。比如當(dāng)計(jì)算結(jié)果有溢出時,程序跳轉(zhuǎn)到其它操作步驟。若是對中間結(jié)果的標(biāo)志位做判斷,則需要將這個臨時變量進(jìn)行存儲,這樣必然又會產(chǎn)生額外的指令開銷,從而從整體上增加了處理器的功耗。而累加器所保留的計(jì)算結(jié)果只是一個臨時變量,并無實(shí)際意義。特別地,在數(shù)字信號處理器中,往往需要對數(shù)據(jù)進(jìn)行高密度的重復(fù)運(yùn)算,而運(yùn)算過程中對數(shù)據(jù)的往返存取必然會導(dǎo)致大量功耗。
      也有的處理器專門對計(jì)算單元設(shè)計(jì)了一些特殊的指令,這些指令支持在執(zhí)行完計(jì)算操作后,允許影響標(biāo)志位寄存器,同時還可以不更改累加器的值。但是,使用這種專門的特殊指令也有其弊端,因?yàn)榧刃枰绊憳?biāo)志位寄存器,又不更改累加器的情形并不是很多,為了保證一定的指令代碼效率,這類特殊指令也不可能設(shè)計(jì)得很多,反過來,又使得這類特殊指令能夠運(yùn)用的范圍也受到了一定的限制。從總體上來說,這些特殊指令使譯碼單元變得更為復(fù)雜,同時也使指令的整體效率都有所降低。
      因此,對于現(xiàn)有的技術(shù)來說,需要一種用在處理器的計(jì)算單元中既能影響標(biāo)志位又可以不更改累加器的系統(tǒng)和方法來從整體上減少指令開銷,同時又不必設(shè)計(jì)專門的特殊指令而影響指令代碼效率。

      發(fā)明內(nèi)容
      本發(fā)明的目的在于提供一種在處理器的計(jì)算單元中可對累加器進(jìn)行可控制鎖存的系統(tǒng)和方法。它可以在處理器的計(jì)算單元中有效影響標(biāo)志位而不須更改累加器。
      根據(jù)本發(fā)明的一個方面,提供一種用于在數(shù)字信號處理器中可控制鎖存累加器的系統(tǒng),該系統(tǒng)包括計(jì)算單元與控制電路,控制電路用來控制計(jì)算單元的操作數(shù)和操作方式的選擇,計(jì)算單元至少包括邏輯運(yùn)算單元,配置成完成待處理數(shù)據(jù)的功能運(yùn)算;至少一個累加器,配置成接收邏輯運(yùn)算單元的計(jì)算結(jié)果,并將其與之前暫存的數(shù)據(jù)累加;標(biāo)志位寄存器,配置成存放計(jì)算結(jié)果中的各種特征,控制電路包括一控制寄存器,在控制寄存器中設(shè)置了至少一個累加器掩碼,該至少一個累加器掩碼對累加器進(jìn)行控制,使得在需要所述計(jì)算結(jié)果影響標(biāo)志位寄存器,而同時又不希望其影響累加器時,累加器掩碼能夠?qū)奂悠鬟M(jìn)行鎖存。
      根據(jù)本發(fā)明的另一方而,提供一種用于在數(shù)字信號處理器中可控制鎖存累加器的方法,該方法包括以下步驟當(dāng)前指令的前一條指令將累加器掩碼啟用;開始執(zhí)行當(dāng)前指令;將待處理的數(shù)據(jù)送入處理單元;邏輯運(yùn)算單元對數(shù)據(jù)進(jìn)行處理;將中間結(jié)果寫入累加器的同時刷新標(biāo)志應(yīng)寄存器的步驟,由于累加器掩碼被啟用,累加器的值并不改變。
      本發(fā)明使用累加器掩碼來控制累加器的鎖存,計(jì)算單元的運(yùn)算結(jié)果既能影響標(biāo)志位又可以不更改累加器,在該運(yùn)算結(jié)果并不需要寫入累加器時,可以避免對累加器的破壞。因此,當(dāng)需要使用累加器的累加過程中的暫存結(jié)果時,不需要將累加器原有的數(shù)據(jù)寫回,因此在整體上減少了指令開銷。相對于采用專門的特殊指令的方式,本發(fā)明同時也并不影響指令集的指令代碼效率。
      此外,本發(fā)明對累加器的鎖存采用自動清除的方式,并不需要額外的指令來清除對累加器的鎖存,這樣就不會產(chǎn)生額外的指令開銷,從而減少了功耗。
      下面將結(jié)合附圖以一實(shí)施例對本發(fā)明作詳細(xì)描述。


      以下附圖為對本發(fā)明示例性實(shí)施例的輔助說明,結(jié)合以下附圖對本發(fā)明實(shí)施例的闡述,是為進(jìn)一步揭露本發(fā)明的特征所在,但并不限制本發(fā)明,圖中相同標(biāo)號代表實(shí)施例中相應(yīng)元件或步驟,其中圖1為本發(fā)明中累加器掩碼如何起效的邏輯電路原理圖;圖2為實(shí)施本發(fā)明的累加器掩碼的計(jì)算單元結(jié)構(gòu)圖;圖3為應(yīng)用圖2所示計(jì)算單元實(shí)施例框圖的數(shù)字信號處理系統(tǒng)具體電路圖;和圖4為本發(fā)明的累加器鎖存方法流程圖。
      具體實(shí)施例方式
      本實(shí)施例以數(shù)字信號處理器為例。該數(shù)字信號處理器包括計(jì)算單元,它包括邏輯運(yùn)算單元、乘加器和移位器等用于算術(shù)運(yùn)算的元件(這里是根據(jù)發(fā)明目的和圖2所作的修改)。累加器可用來存放邏輯運(yùn)算單元(Algorithm Logic Unit,ALU)、乘加器和移位器等運(yùn)算元件的運(yùn)算結(jié)果。
      本實(shí)施例的數(shù)字信號處理器設(shè)有兩個累加器,分別稱為累加器A和累加器B,每個累加器均為40位,并按使用要求分成三段,如下表所示

      表1.累加器結(jié)構(gòu)表其中,AX、AH、AL、BX、BH和BL為通用寄存器,在本實(shí)施例中都可以設(shè)置為內(nèi)存映射寄存器,通過內(nèi)存映射寄存器方式進(jìn)行讀寫。本領(lǐng)域的技術(shù)人員可以理解,這里的40位內(nèi)存映射寄存器僅起到示范作用,本發(fā)明中的累加器也可以采用64位內(nèi)存映射寄存器,或者根據(jù)特定的應(yīng)用采用其他位長的其他類型寄存器,只要它能夠?qū)崿F(xiàn)下面將要描述的具體功能。
      本實(shí)施例中,內(nèi)存映射寄存器與數(shù)據(jù)總線和數(shù)據(jù)地址總線直接相連,由數(shù)據(jù)地址產(chǎn)生單元來提供進(jìn)行數(shù)據(jù)存取的地址。累加器A和B通過數(shù)據(jù)總線既可讀又可寫,因此其中所存儲的數(shù)據(jù)可以是邏輯運(yùn)算單元、乘加器和移位器的源操作數(shù)和目的操作數(shù)。本實(shí)施例中,作為內(nèi)存映射寄存器,讀取或?qū)懭肜奂悠鰽和B的高8位,即AX和BX時,高8位無意義。因此,累加器A和B作為內(nèi)存映射寄存器時的操作數(shù)時,可以是40位的,也可以是16位單獨(dú)操作??梢岳斫?,設(shè)計(jì)者可以根據(jù)實(shí)際需求,調(diào)整累加器的分段或者是改變各段的可讀寫性能,從而影響操作數(shù)的數(shù)據(jù)位寬。例如對于累加器A和累加器B,按本實(shí)施例分為同樣的三段,每段均為可讀且可寫,則作為內(nèi)存映射寄存器的操作數(shù)時,可以是40位的,也可以是16位或者8位的。
      本實(shí)施例的標(biāo)志位寄存器為16位,其示例結(jié)構(gòu)如下表所示

      表2.標(biāo)志位寄存器結(jié)構(gòu)表其中,EA、NA、ZA、VA、UA分別對應(yīng)于累加器A的狀態(tài),而EB、NB、ZB、VB、UB分別對應(yīng)于累加器B的狀態(tài)。其余標(biāo)志位為累加器A、B共用。
      EA、EB為擴(kuò)展位,當(dāng)累加器的高9位是全0或全1時,相應(yīng)的擴(kuò)展位為1,反之為0。
      NA、NB為符號位,累加器A和B的第39位是相應(yīng)的符號位,當(dāng)累加器A或B中的符號為正,表示累加器的值為正;當(dāng)累加器A或B中的符號為負(fù),表示累加器的值為負(fù)。
      ZA、ZB為零位,用來標(biāo)識累加器A或B的值是否為0。累加器A為0時,ZA為1;累加器B為0時,ZB為1。
      VA、VB為溢出位,受算術(shù)指令影響。做有符號加法或減法時,會發(fā)生正溢或負(fù)溢。累加器正的最大值是0x7FFFFFFF,負(fù)的最小值是0xFF80000000。當(dāng)超過正的最大值時為正溢,當(dāng)超過負(fù)的最小值時為負(fù)溢。發(fā)生正溢或負(fù)溢時,累加器的響應(yīng)溢出位為1,反之為0。在本實(shí)施例中為,在累加器A中發(fā)生正溢或負(fù)溢時,VA為1;在累加器B中發(fā)生正溢或負(fù)溢時,VB為1。例如2個有符號正數(shù)相加儲存到累加器A,當(dāng)兩個有符號正數(shù)之和超過累加器A的最大值時,結(jié)果A為負(fù)值,則VA為1,此時稱為發(fā)生了正溢。可能產(chǎn)生正溢的情況有兩種,即正數(shù)+正數(shù)=負(fù)數(shù),正數(shù)-負(fù)數(shù)=負(fù)數(shù)??赡墚a(chǎn)生負(fù)溢的情況也有兩種,即負(fù)數(shù)+負(fù)數(shù)=正數(shù),負(fù)數(shù)-正數(shù)=正數(shù)。
      C是進(jìn)位/借位標(biāo)志位,加法時發(fā)生最高位進(jìn)位,或減法時沒發(fā)生最高位借位,則C為1,反之C為0。
      其余的標(biāo)志位,即SX、UA、UB、SXL、R、OV、OVM,都不受運(yùn)算結(jié)果的影響,與本發(fā)明的實(shí)質(zhì)性內(nèi)容并無太大關(guān)聯(lián),在此不再贅述。很顯然,標(biāo)志位寄存器的設(shè)置可依功能需求而定,其變化均在本發(fā)明的精神之內(nèi)。
      圖1為本發(fā)明中累加器掩碼的邏輯電路原理圖。如圖1所示,標(biāo)號102表示本發(fā)明中的累加器,標(biāo)號104表示本發(fā)明中的標(biāo)志位寄存器。累加器102包含多個D觸發(fā)器D1、D2…Dn,每個D觸發(fā)器分別相應(yīng)地對應(yīng)于累加器中的不同的比特數(shù)據(jù)位。同樣地,標(biāo)志位寄存器104也包含多個RS觸發(fā)器RS1、RS2…RSn,它們分別對應(yīng)于寄存器104(如表2所示的寄存器)中的不同標(biāo)志位。本領(lǐng)域的技術(shù)人員將能夠理解,本發(fā)明并不僅限于用D觸發(fā)器構(gòu)成累加器,以及用RS觸發(fā)器構(gòu)成標(biāo)志位寄存器,其他類似的器件如T觸發(fā)器、JK觸發(fā)器等也同樣適用于本發(fā)明,只要它能夠完成本發(fā)明上述的功能。
      在圖1的較佳實(shí)施例中,從邏輯運(yùn)算單元來的計(jì)算結(jié)果被送至累加器102中各觸發(fā)器的輸入端,藉以和累加器102中原有數(shù)據(jù)進(jìn)行累加。計(jì)算結(jié)果還同時被送至負(fù)責(zé)計(jì)算標(biāo)志位的單元計(jì)算標(biāo)志位。標(biāo)志位的計(jì)算結(jié)果則被送至標(biāo)志位寄存器的各觸發(fā)器輸入端。本實(shí)施例采用了一個累加器掩碼AM,它被提供到累加器102中的各觸發(fā)器的CE(使能)輸入端,專用于鎖存累加器102。而此掩碼AM并不控制標(biāo)志位寄存器,也就是說,掩碼AM對于標(biāo)志位的鎖存并無影響,在掩碼AM對累加器進(jìn)行鎖存的同時,標(biāo)志位可以進(jìn)行更新。
      下面將參照圖2描述本實(shí)施例的工作過程。如圖2所示,待處理的數(shù)據(jù)從數(shù)據(jù)總線202送到計(jì)算單元200進(jìn)行運(yùn)算。本實(shí)施例中,計(jì)算單元包括邏輯運(yùn)算單元(ALU)206、乘加器和移位器(未示出)等運(yùn)算元件,以及累加器210和標(biāo)志位寄存器212。圖2中以虛線框表示出計(jì)算單元200,并相應(yīng)地省略了乘加器和移位器等元件,以更好地解釋本發(fā)明。待處理的數(shù)據(jù)從數(shù)據(jù)總線202寫入計(jì)算單元200后,先在計(jì)算單元200的邏輯運(yùn)算單元206進(jìn)行各種功能的運(yùn)算。本技術(shù)領(lǐng)域普通技術(shù)人員可以理解,這里的邏輯運(yùn)算單元也可以簡單的僅為加法器,以實(shí)現(xiàn)多次疊加的功能。從邏輯運(yùn)算單元206得到的結(jié)果可以直接輸出或?qū)懭氤思悠骱鸵莆黄鞯认鄳?yīng)的運(yùn)算元件再輸出。也可以把從邏輯運(yùn)算單元得到的結(jié)果先暫存于累加器210中,等待下一次由邏輯運(yùn)算單元206送出的中間結(jié)果,由累加器210進(jìn)行累加運(yùn)算,即將下一次得到的中間結(jié)果與累加器210之前所暫存的數(shù)據(jù)相加。依此方式進(jìn)行多次運(yùn)算,在滿足一定的條件后,累加運(yùn)算過程完成,再輸出多次累加后所得到的最后結(jié)果。累加器210中的暫存數(shù)據(jù)在與下一次的中間結(jié)果的加法運(yùn)算開始后即被刷新。與此同時,若進(jìn)行運(yùn)算操作的指令為對標(biāo)志位可產(chǎn)生影響的指令,并且經(jīng)運(yùn)算后產(chǎn)生的運(yùn)算結(jié)果對標(biāo)志位有影響,則直接寫入到標(biāo)志位寄存器212,給相應(yīng)的標(biāo)志位置位。
      本實(shí)施例以控制電路214來控制計(jì)算單元200的操作數(shù)和操作方式的選擇??刂齐娐?14獨(dú)立于計(jì)算單元200之外??刂齐娐?14可輸出各種控制變量,從而實(shí)現(xiàn)計(jì)算單元200的多種功能的運(yùn)算。例如,計(jì)算單元200的操作數(shù)是直接來自內(nèi)存、立即數(shù)或者是來自累加器A或累加器B等,計(jì)算單元200的操作方式是可以是乘法、加法、減法或者僅為移位處理等。
      在控制電路中設(shè)置有控制寄存器216(CTRL寄存器)。本例中控制寄存器216為16位的通用寄存器,可以對其進(jìn)行讀寫。另外,可以如下表3所示地設(shè)置控制寄存器216,

      表3.控制寄存器結(jié)構(gòu)表在該控制寄存器216中定義了一位累加器掩碼位AM,為寄存器16位中的第3位,表3中控制寄存器的其余位與本發(fā)明并無直接關(guān)聯(lián),可由本領(lǐng)域普通技術(shù)人員按實(shí)際需要自行設(shè)計(jì),在此不予詳加描述。此外,本發(fā)明并不限于上面的寄存器設(shè)置,少于16位或多于16位的控制寄存器、以及其他的寄存器設(shè)置方式均適用于本發(fā)明。
      當(dāng)該掩碼位AM為1時,表示下一條試圖寫入累加器210的指令只影響標(biāo)志位,而由于掩碼AM對于累加器210的鎖存,該指令對于累加器210本身并不會更新。當(dāng)掩碼位AM為0時,則不對累加器210進(jìn)行鎖存。
      在其他實(shí)施例中也可采用其它方式來設(shè)定累加器掩碼,例如,在另一實(shí)施例中,如表4所示,可設(shè)兩位累加器掩碼AM0與AM1,以兩位中的較低位AM0為1(即01)來鎖存累加器A,以較高位AM1為1(即10)來鎖存累加器B,而其他形式時(即00和11)則不進(jìn)行鎖存。

      表4.控制寄存器結(jié)構(gòu)表在其他實(shí)施例中掩碼也可設(shè)置在控制寄存器216之外的其他寄存器中。對本技術(shù)領(lǐng)域的普通技術(shù)人員來說,可以有多種方法來改變累加器掩碼AM的實(shí)現(xiàn)方式,但這些改變都包括在本發(fā)明的實(shí)質(zhì)和精神范圍之內(nèi)。
      本發(fā)明中累加器掩碼AM是由指令來進(jìn)行控制。當(dāng)一條運(yùn)算指令的運(yùn)算結(jié)果可能影響標(biāo)志位寄存器212,而又不希望該運(yùn)算指令的運(yùn)算結(jié)果寫入累加器210時,就在該運(yùn)算指令的前一條指令中添加一條使能指令,以該使能指令來控制累加器掩碼AM,使累加器掩碼AM能夠屏蔽該運(yùn)算指令中對累加器210的寫入,而同時并不影響到其對標(biāo)志位寄存器212的寫入。所述的使能指令可以是位操作指令,也可以是賦值指令或邏輯運(yùn)算指令。
      本實(shí)施例中的使能指令可以為位操作指令,如指令WCTR,該指令可用于對任何可進(jìn)行位操作的寄存器中的任意位置1。若對AM置1,其指令如下WCTR AM1在另一實(shí)施例中,若要鎖存累加器A,則用如下指令WCTR AM01在另一實(shí)施例中,若要鎖存累加器B,則用如下指令WCTR AM11本實(shí)施例的使能指令也可以對位進(jìn)行邏輯操作,以取反的方式來改變掩碼AM的值,因?yàn)榇蠖鄶?shù)情況下,運(yùn)算結(jié)果需要寫入到累加器210中,所以通常AM值總保持為0,當(dāng)需要利用掩碼AM來控制累加器的鎖存時,對AM取反,使其值為1,從而有效地控制累加器210的鎖存。具體指令如下XR AM這些位操作指令應(yīng)用靈活,并不單限于對累加器掩碼AM的操作,因此保證了指令代碼效率,同時使用位操作指令對控制寄存器216的其他位也不會有影響。
      采用賦值指令控制累加器掩碼AM時,控制寄存器216應(yīng)為內(nèi)存映射寄存器狀態(tài),即可16位一起讀入或?qū)懗?。但這種操作方式會影響到控制寄存器216的其他位的值,舉一指令為例MOV CTRL,#0004此指令執(zhí)行后,掩碼AM位為1,而控制寄存器216中的其他位均為0。
      類似的,在另一實(shí)施例中,若要鎖存累加器A,則用如下指令MOV CTRL,#0002在另一實(shí)施例中,若要鎖存累加器B,則用如下指令MOV CTRL,#0004所述使能指令對累加器掩碼AM的影響只對該指令緊跟的下一條試圖更改累加器210的指令有效,也就是說,當(dāng)用所述使能指令使累加器掩碼AM置1后,緊接著使能指令的下一條指令將只能影響標(biāo)志位寄存器212,而無法更改累加器,并在使能指令的下一條指令執(zhí)行完后,累加器掩碼AM自動失效,恢復(fù)為0。當(dāng)掩碼AM位為0時,則對累加器210無任何影響。因?yàn)榇蠖鄶?shù)情況下需要對累加器210進(jìn)行更改,能夠自動地對掩碼AM清零,可以避免產(chǎn)生額外的指令開銷。
      本實(shí)施例中把使能指令與其它指令并行操作,當(dāng)希望在一條指令中只影響標(biāo)志位寄存器212,而不更改累加器210時,則在該指令的上一條指令中并行執(zhí)行一條對掩碼AM的使能指令,采用這種并行操作的方式可以節(jié)省指令執(zhí)行時間。而使能指令是否與其它指令并行操作,并不影響本發(fā)明的實(shí)質(zhì)。
      以下以指令為例來加以說明。
      CLR AADD X,A,A‖X[Ar0]‖WCTR AM1ADD X,A,A‖X[Ar2]第一條指令中,對累加器A清零。第二條指令中,有三條子指令并行,一是內(nèi)存操作,根據(jù)地址寄存器Ar0從內(nèi)存X中取數(shù)據(jù),假設(shè)該數(shù)據(jù)值為1;二是將該數(shù)據(jù)值與累加器A相加,而此前累加器A已清零,這條加法指令從執(zhí)行效果上相當(dāng)于對A賦值,三是一條對掩碼AM的使能指令,對掩碼AM置1。在第三條指令中,根據(jù)地址寄存器Ar2從內(nèi)存X中取數(shù)據(jù),假設(shè)該數(shù)據(jù)值為-1。由于第三條指令中累加器掩碼AM對累加器進(jìn)行鎖存,因此累加器A不可寫入。這樣,累加器A中的最終所得值仍為1,而并非為無累加器鎖存的情況下累加器A最終所得值0。累加器掩碼AM對標(biāo)志位寄存器沒有任何影響,仍然按無累加器鎖存情況下累加器A最終所得值為0的情況作出判斷,則此時,用來標(biāo)識累加器A是否為零位的零位標(biāo)志位ZA為0。
      在下面的實(shí)施例中以條件跳轉(zhuǎn)指令來說明一個累加器掩碼AM鎖存多個累加器的使用。
      WCTR AM,1SUB B,A,BEC CSSUB B,A,BROL B上述指令中,第一條指令是由位操作指令WCTR對累加器掩碼AM置1,這樣在緊接下來的第二條指令中,累加器A和B被鎖存;第二條指令執(zhí)行的操作為累加器B的值減去累加器A的值,并把所得結(jié)果賦給累加器B,此時,雖試圖更改累加器B,但由于累加器掩碼AM對累加器的鎖存,累加器B不能被寫入,而標(biāo)志位寄存器212卻仍可以寫入。若B中的值大于A中的值,則不需要借位,標(biāo)志位寄存器中的借位標(biāo)志位C為1;若B中的值小于A中的值,則需要借位,標(biāo)志位寄存器中的借位標(biāo)志位C為0。
      之后的第三條指令為條件判斷指令,若條件為真,則執(zhí)行緊接其后的下一條指令,若條件為假,則緊接其后的下一條指令作為空指令不予執(zhí)行。在第三條指令中,對借位標(biāo)志位C進(jìn)行判斷,指令中的CS在本實(shí)施例中的譯碼為C=1。CS為真,即C為1時,執(zhí)行其后的第四條指令;CS為假,即C為0時,第四條指令將不被執(zhí)行。
      第四條指令與第二條指令相同,為一條減法指令,累加器B的值減去累加器A的值,并把所得結(jié)果賦給累加器B,這時,累加器B已經(jīng)不被鎖存,可以進(jìn)行更改。第五條指令把更改后的累加器B的值作左移操作。
      這段指令的實(shí)際執(zhí)行效果為,當(dāng)累加器B的值減去累加器A的值不需要借位時,即B大于A,才執(zhí)行B減A的動作;當(dāng)累加器B的值減去累加器A的值需要借位時,即B小于A,就不再執(zhí)行B減A的動作,而跳過減法操作指令,直接執(zhí)行下面的指令。
      從以上這段指令可以明顯看出,在執(zhí)行條件跳轉(zhuǎn)指令時,累加器A、B中已經(jīng)被占用,而其中的數(shù)據(jù)有必要保存,由于本發(fā)明的累加器掩碼AM對累加器的鎖存,累加器A、B中的數(shù)據(jù)不必另外進(jìn)行存儲,從而有效地節(jié)省了指令開銷。
      本技術(shù)領(lǐng)域的技術(shù)人員容易理解,其他的條件跳轉(zhuǎn)指令或類似指令也可以利用本發(fā)明的累加器掩碼。
      圖3為應(yīng)用圖2所示計(jì)算單元實(shí)施例框圖的數(shù)字信號處理系統(tǒng)具體電路圖。參考圖3,本領(lǐng)域技術(shù)人員將容易實(shí)現(xiàn)一種具有本發(fā)明上述優(yōu)點(diǎn)的數(shù)字信號處理系統(tǒng)。
      圖4為本發(fā)明的累加器鎖存方法流程圖。在步驟402中,當(dāng)前指令的前一條指令,即使能指令,將累加器掩碼AM置1。流程隨后前進(jìn)至步驟404。在步驟404中,開始執(zhí)行當(dāng)前指令。流程繼續(xù)至步驟406,在那里將待處理的數(shù)據(jù)送入處理單元。流程隨后前進(jìn)至步驟408。在步驟408中,邏輯運(yùn)算單元(ALU)206對數(shù)據(jù)進(jìn)行處理。之后,流程前進(jìn)至步驟410。此時,在試圖將中間結(jié)果寫入累加器的同時刷新標(biāo)志位寄存器。而由于累加器掩碼AM被置1,因此累加器的值并不改變。流程隨后繼續(xù)至412,在那里累加器掩碼AM被自動置0。
      上述實(shí)施例只是為了更好地揭露本發(fā)明,并不對本發(fā)明產(chǎn)生限制。對于本發(fā)明可以有很多變化方式,但任何基于本發(fā)明做出的修改和變化都應(yīng)在本發(fā)明的實(shí)質(zhì)和精神涵蓋之下。
      權(quán)利要求
      1.一種用于在數(shù)字信號處理器中可控制鎖存累加器的系統(tǒng),該系統(tǒng)包括計(jì)算單元與控制電路,所述控制電路用來控制所述計(jì)算單元的操作數(shù)和操作方式的選擇,所述計(jì)算單元至少包括邏輯運(yùn)算單元,配置成完成待處理數(shù)據(jù)的功能運(yùn)算;至少一個累加器,配置成接收所述邏輯運(yùn)算單元的計(jì)算結(jié)果,并將其與之前暫存的數(shù)據(jù)累加;標(biāo)志位寄存器,配置成存放所述計(jì)算結(jié)果中的各種特征,其特征在于,所述控制電路包括一控制寄存器,在所述控制寄存器中設(shè)置了至少一個累加器掩碼,所述至少一個累加器掩碼對所述至少一個累加器進(jìn)行控制,使得在需要所述計(jì)算結(jié)果影響所述標(biāo)志位寄存器,而同時又不希望其影響所述至少一個累加器時,所述至少一個累加器掩碼能夠?qū)λ鲋辽僖粋€累加器進(jìn)行鎖存。
      2.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述計(jì)算單元進(jìn)一步包括乘加器和移位器。
      3.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述累加器掩碼將在所述計(jì)算結(jié)果影響完所述標(biāo)志位寄存器之后自動失效。
      4.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述累加器為內(nèi)存映射寄存器。
      5.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述至少一個累加器掩碼中的一個能夠同時鎖存所述至少一個累加器中的多個累加器。
      6.一種用于在數(shù)字信號處理器中可控制鎖存累加器的方法,包括以下步驟當(dāng)前指令的前一條指令將累加器掩碼啟用的步驟;開始執(zhí)行當(dāng)前指令的步驟;將待處理的數(shù)據(jù)送入處理單元的步驟;邏輯運(yùn)算單元對數(shù)據(jù)進(jìn)行處理的步驟;將中間結(jié)果寫入累加器的同時刷新標(biāo)志位寄存器的步驟,由于累加器掩碼被啟用,累加器的值并不改變。
      7.如權(quán)利要求6所述的方法,其特征在于,在所述將中間結(jié)果寫入累加器的同時刷新標(biāo)志位寄存器的步驟之后進(jìn)一步包括累加器掩碼自動失效的步驟。
      全文摘要
      本發(fā)明提供了一種用于在數(shù)字信號處理器中可控制鎖存累加器的系統(tǒng)和方法,該系統(tǒng)包括計(jì)算單元與控制電路,控制電路用來控制計(jì)算單元的操作數(shù)和操作方式的選擇,計(jì)算單元至少包括邏輯運(yùn)算單元,配置成完成待處理數(shù)據(jù)的功能運(yùn)算;至少一個累加器,配置成接收邏輯運(yùn)算單元的計(jì)算結(jié)果,并將其與之前暫存的數(shù)據(jù)累加;標(biāo)志位寄存器,配置成存放計(jì)算結(jié)果中的各種特征,控制電路包括一控制寄存器,在控制寄存器中設(shè)置了至少一個累加器掩碼,該至少一個累加器掩碼對累加器進(jìn)行控制,使得在需要所述計(jì)算結(jié)果影響標(biāo)志位寄存器,而同時又不希望其影響累加器時,累加器掩碼能夠?qū)奂悠鬟M(jìn)行鎖存。
      文檔編號G06F7/49GK1515997SQ0311473
      公開日2004年7月28日 申請日期2003年1月6日 優(yōu)先權(quán)日2003年1月6日
      發(fā)明者周振亞 申請人:上海奇碼數(shù)字信息有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1