專利名稱:可控制鎖存累加器的系統(tǒng)與方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種處理器,尤其涉及處理器的計算單元中有關(guān)累加器的管理系統(tǒng)與方法。
背景技術(shù):
累加器是一種寄存器,也可稱之為一種輔助存儲器,它主要是用來把計算單元中的中間運算結(jié)果進行多次相加,從而得到一個最終的累加的結(jié)果。它往往需要臨時存放計算過程中的中間運算結(jié)果,這些中間運算結(jié)果然后將重新寫入由計算單元的運算元件進行處理。計算單元對內(nèi)存的存取速度較慢,而累加器通常有直接的路徑供運算元件進行數(shù)據(jù)存取,這樣避免了計算單元對內(nèi)存的頻繁存取,也就縮短了指令執(zhí)行時間。累加器的應用非常廣泛,幾乎各種電子產(chǎn)品中都需要用到,在各類處理器中,尤其是數(shù)字信號處理器(DSP),累加器是必不可少的重要元件之一。
累加器作為計算單元的一部分,要與計算單元的其它電路協(xié)同工作。處理器的計算單元還包括標志位寄存器,用來存放計算結(jié)果中的各種特征,如進(借)位、溢出、正負符號等。在計算過程中,例如,標志位寄存器為16位,而進行加法運算時,兩個操作數(shù)分別是0FFEH和F00AH,兩數(shù)相加后,其結(jié)果超過了FFFFH,此時,標志位寄存器中的進位標志位就應置1。傳統(tǒng)的計算單元的設(shè)計中,總是累加器完成了一次累加運算所需要的全部的運算量后,再把最終結(jié)果輸出,并在輸出最終結(jié)果的同時才置位標志位寄存器。而累加運算進行過程中,每次暫存在累加器中的中間結(jié)果,總是與下一次運算單元送出的中間結(jié)果相加時被更新,這樣中間結(jié)果就無法影響到標志位。但在有的計算控制過程中,比如在執(zhí)行條件跳轉(zhuǎn)指令時,有時也會將中間結(jié)果對標志位的影響作為判斷條件,其它的執(zhí)行單元則根據(jù)標志位的值來執(zhí)行任務。比如當計算結(jié)果有溢出時,程序跳轉(zhuǎn)到其它操作步驟。若是對中間結(jié)果的標志位做判斷,則需要將這個臨時變量進行存儲,這樣必然又會產(chǎn)生額外的指令開銷,從而從整體上增加了處理器的功耗。而累加器所保留的計算結(jié)果只是一個臨時變量,并無實際意義。特別地,在數(shù)字信號處理器中,往往需要對數(shù)據(jù)進行高密度的重復運算,而運算過程中對數(shù)據(jù)的往返存取必然會導致大量功耗。
也有的處理器專門對計算單元設(shè)計了一些特殊的指令,這些指令支持在執(zhí)行完計算操作后,允許影響標志位寄存器,同時還可以不更改累加器的值。但是,使用這種專門的特殊指令也有其弊端,因為既需要影響標志位寄存器,又不更改累加器的情形并不是很多,為了保證一定的指令代碼效率,這類特殊指令也不可能設(shè)計得很多,反過來,又使得這類特殊指令能夠運用的范圍也受到了一定的限制。從總體上來說,這些特殊指令使譯碼單元變得更為復雜,同時也使指令的整體效率都有所降低。
因此,對于現(xiàn)有的技術(shù)來說,需要一種用在處理器的計算單元中既能影響標志位又可以不更改累加器的系統(tǒng)和方法來從整體上減少指令開銷,同時又不必設(shè)計專門的特殊指令而影響指令代碼效率。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種在處理器的計算單元中可對累加器進行可控制鎖存的系統(tǒng)和方法。它可以在處理器的計算單元中有效影響標志位而不須更改累加器。
根據(jù)本發(fā)明的一個方面,提供一種用于在數(shù)字信號處理器中可控制鎖存累加器的系統(tǒng),該系統(tǒng)包括計算單元與控制電路,控制電路用來控制計算單元的操作數(shù)和操作方式的選擇,計算單元至少包括邏輯運算單元,配置成完成待處理數(shù)據(jù)的功能運算;至少一個累加器,配置成接收邏輯運算單元的計算結(jié)果,并將其與之前暫存的數(shù)據(jù)累加;標志位寄存器,配置成存放計算結(jié)果中的各種特征,控制電路包括一控制寄存器,在控制寄存器中設(shè)置了至少一個累加器掩碼,該至少一個累加器掩碼對累加器進行控制,使得在需要所述計算結(jié)果影響標志位寄存器,而同時又不希望其影響累加器時,累加器掩碼能夠?qū)奂悠鬟M行鎖存。
根據(jù)本發(fā)明的另一方而,提供一種用于在數(shù)字信號處理器中可控制鎖存累加器的方法,該方法包括以下步驟當前指令的前一條指令將累加器掩碼啟用;開始執(zhí)行當前指令;將待處理的數(shù)據(jù)送入處理單元;邏輯運算單元對數(shù)據(jù)進行處理;將中間結(jié)果寫入累加器的同時刷新標志應寄存器的步驟,由于累加器掩碼被啟用,累加器的值并不改變。
本發(fā)明使用累加器掩碼來控制累加器的鎖存,計算單元的運算結(jié)果既能影響標志位又可以不更改累加器,在該運算結(jié)果并不需要寫入累加器時,可以避免對累加器的破壞。因此,當需要使用累加器的累加過程中的暫存結(jié)果時,不需要將累加器原有的數(shù)據(jù)寫回,因此在整體上減少了指令開銷。相對于采用專門的特殊指令的方式,本發(fā)明同時也并不影響指令集的指令代碼效率。
此外,本發(fā)明對累加器的鎖存采用自動清除的方式,并不需要額外的指令來清除對累加器的鎖存,這樣就不會產(chǎn)生額外的指令開銷,從而減少了功耗。
下面將結(jié)合附圖以一實施例對本發(fā)明作詳細描述。
以下附圖為對本發(fā)明示例性實施例的輔助說明,結(jié)合以下附圖對本發(fā)明實施例的闡述,是為進一步揭露本發(fā)明的特征所在,但并不限制本發(fā)明,圖中相同標號代表實施例中相應元件或步驟,其中圖1為本發(fā)明中累加器掩碼如何起效的邏輯電路原理圖;圖2為實施本發(fā)明的累加器掩碼的計算單元結(jié)構(gòu)圖;圖3為應用圖2所示計算單元實施例框圖的數(shù)字信號處理系統(tǒng)具體電路圖;和圖4為本發(fā)明的累加器鎖存方法流程圖。
具體實施例方式
本實施例以數(shù)字信號處理器為例。該數(shù)字信號處理器包括計算單元,它包括邏輯運算單元、乘加器和移位器等用于算術(shù)運算的元件(這里是根據(jù)發(fā)明目的和圖2所作的修改)。累加器可用來存放邏輯運算單元(Algorithm Logic Unit,ALU)、乘加器和移位器等運算元件的運算結(jié)果。
本實施例的數(shù)字信號處理器設(shè)有兩個累加器,分別稱為累加器A和累加器B,每個累加器均為40位,并按使用要求分成三段,如下表所示
表1.累加器結(jié)構(gòu)表其中,AX、AH、AL、BX、BH和BL為通用寄存器,在本實施例中都可以設(shè)置為內(nèi)存映射寄存器,通過內(nèi)存映射寄存器方式進行讀寫。本領(lǐng)域的技術(shù)人員可以理解,這里的40位內(nèi)存映射寄存器僅起到示范作用,本發(fā)明中的累加器也可以采用64位內(nèi)存映射寄存器,或者根據(jù)特定的應用采用其他位長的其他類型寄存器,只要它能夠?qū)崿F(xiàn)下面將要描述的具體功能。
本實施例中,內(nèi)存映射寄存器與數(shù)據(jù)總線和數(shù)據(jù)地址總線直接相連,由數(shù)據(jù)地址產(chǎn)生單元來提供進行數(shù)據(jù)存取的地址。累加器A和B通過數(shù)據(jù)總線既可讀又可寫,因此其中所存儲的數(shù)據(jù)可以是邏輯運算單元、乘加器和移位器的源操作數(shù)和目的操作數(shù)。本實施例中,作為內(nèi)存映射寄存器,讀取或?qū)懭肜奂悠鰽和B的高8位,即AX和BX時,高8位無意義。因此,累加器A和B作為內(nèi)存映射寄存器時的操作數(shù)時,可以是40位的,也可以是16位單獨操作。可以理解,設(shè)計者可以根據(jù)實際需求,調(diào)整累加器的分段或者是改變各段的可讀寫性能,從而影響操作數(shù)的數(shù)據(jù)位寬。例如對于累加器A和累加器B,按本實施例分為同樣的三段,每段均為可讀且可寫,則作為內(nèi)存映射寄存器的操作數(shù)時,可以是40位的,也可以是16位或者8位的。
本實施例的標志位寄存器為16位,其示例結(jié)構(gòu)如下表所示
表2.標志位寄存器結(jié)構(gòu)表其中,EA、NA、ZA、VA、UA分別對應于累加器A的狀態(tài),而EB、NB、ZB、VB、UB分別對應于累加器B的狀態(tài)。其余標志位為累加器A、B共用。
EA、EB為擴展位,當累加器的高9位是全0或全1時,相應的擴展位為1,反之為0。
NA、NB為符號位,累加器A和B的第39位是相應的符號位,當累加器A或B中的符號為正,表示累加器的值為正;當累加器A或B中的符號為負,表示累加器的值為負。
ZA、ZB為零位,用來標識累加器A或B的值是否為0。累加器A為0時,ZA為1;累加器B為0時,ZB為1。
VA、VB為溢出位,受算術(shù)指令影響。做有符號加法或減法時,會發(fā)生正溢或負溢。累加器正的最大值是0x7FFFFFFF,負的最小值是0xFF80000000。當超過正的最大值時為正溢,當超過負的最小值時為負溢。發(fā)生正溢或負溢時,累加器的響應溢出位為1,反之為0。在本實施例中為,在累加器A中發(fā)生正溢或負溢時,VA為1;在累加器B中發(fā)生正溢或負溢時,VB為1。例如2個有符號正數(shù)相加儲存到累加器A,當兩個有符號正數(shù)之和超過累加器A的最大值時,結(jié)果A為負值,則VA為1,此時稱為發(fā)生了正溢??赡墚a(chǎn)生正溢的情況有兩種,即正數(shù)+正數(shù)=負數(shù),正數(shù)-負數(shù)=負數(shù)??赡墚a(chǎn)生負溢的情況也有兩種,即負數(shù)+負數(shù)=正數(shù),負數(shù)-正數(shù)=正數(shù)。
C是進位/借位標志位,加法時發(fā)生最高位進位,或減法時沒發(fā)生最高位借位,則C為1,反之C為0。
其余的標志位,即SX、UA、UB、SXL、R、OV、OVM,都不受運算結(jié)果的影響,與本發(fā)明的實質(zhì)性內(nèi)容并無太大關(guān)聯(lián),在此不再贅述。很顯然,標志位寄存器的設(shè)置可依功能需求而定,其變化均在本發(fā)明的精神之內(nèi)。
圖1為本發(fā)明中累加器掩碼的邏輯電路原理圖。如圖1所示,標號102表示本發(fā)明中的累加器,標號104表示本發(fā)明中的標志位寄存器。累加器102包含多個D觸發(fā)器D1、D2…Dn,每個D觸發(fā)器分別相應地對應于累加器中的不同的比特數(shù)據(jù)位。同樣地,標志位寄存器104也包含多個RS觸發(fā)器RS1、RS2…RSn,它們分別對應于寄存器104(如表2所示的寄存器)中的不同標志位。本領(lǐng)域的技術(shù)人員將能夠理解,本發(fā)明并不僅限于用D觸發(fā)器構(gòu)成累加器,以及用RS觸發(fā)器構(gòu)成標志位寄存器,其他類似的器件如T觸發(fā)器、JK觸發(fā)器等也同樣適用于本發(fā)明,只要它能夠完成本發(fā)明上述的功能。
在圖1的較佳實施例中,從邏輯運算單元來的計算結(jié)果被送至累加器102中各觸發(fā)器的輸入端,藉以和累加器102中原有數(shù)據(jù)進行累加。計算結(jié)果還同時被送至負責計算標志位的單元計算標志位。標志位的計算結(jié)果則被送至標志位寄存器的各觸發(fā)器輸入端。本實施例采用了一個累加器掩碼AM,它被提供到累加器102中的各觸發(fā)器的CE(使能)輸入端,專用于鎖存累加器102。而此掩碼AM并不控制標志位寄存器,也就是說,掩碼AM對于標志位的鎖存并無影響,在掩碼AM對累加器進行鎖存的同時,標志位可以進行更新。
下面將參照圖2描述本實施例的工作過程。如圖2所示,待處理的數(shù)據(jù)從數(shù)據(jù)總線202送到計算單元200進行運算。本實施例中,計算單元包括邏輯運算單元(ALU)206、乘加器和移位器(未示出)等運算元件,以及累加器210和標志位寄存器212。圖2中以虛線框表示出計算單元200,并相應地省略了乘加器和移位器等元件,以更好地解釋本發(fā)明。待處理的數(shù)據(jù)從數(shù)據(jù)總線202寫入計算單元200后,先在計算單元200的邏輯運算單元206進行各種功能的運算。本技術(shù)領(lǐng)域普通技術(shù)人員可以理解,這里的邏輯運算單元也可以簡單的僅為加法器,以實現(xiàn)多次疊加的功能。從邏輯運算單元206得到的結(jié)果可以直接輸出或?qū)懭氤思悠骱鸵莆黄鞯认鄳倪\算元件再輸出。也可以把從邏輯運算單元得到的結(jié)果先暫存于累加器210中,等待下一次由邏輯運算單元206送出的中間結(jié)果,由累加器210進行累加運算,即將下一次得到的中間結(jié)果與累加器210之前所暫存的數(shù)據(jù)相加。依此方式進行多次運算,在滿足一定的條件后,累加運算過程完成,再輸出多次累加后所得到的最后結(jié)果。累加器210中的暫存數(shù)據(jù)在與下一次的中間結(jié)果的加法運算開始后即被刷新。與此同時,若進行運算操作的指令為對標志位可產(chǎn)生影響的指令,并且經(jīng)運算后產(chǎn)生的運算結(jié)果對標志位有影響,則直接寫入到標志位寄存器212,給相應的標志位置位。
本實施例以控制電路214來控制計算單元200的操作數(shù)和操作方式的選擇??刂齐娐?14獨立于計算單元200之外??刂齐娐?14可輸出各種控制變量,從而實現(xiàn)計算單元200的多種功能的運算。例如,計算單元200的操作數(shù)是直接來自內(nèi)存、立即數(shù)或者是來自累加器A或累加器B等,計算單元200的操作方式是可以是乘法、加法、減法或者僅為移位處理等。
在控制電路中設(shè)置有控制寄存器216(CTRL寄存器)。本例中控制寄存器216為16位的通用寄存器,可以對其進行讀寫。另外,可以如下表3所示地設(shè)置控制寄存器216,
表3.控制寄存器結(jié)構(gòu)表在該控制寄存器216中定義了一位累加器掩碼位AM,為寄存器16位中的第3位,表3中控制寄存器的其余位與本發(fā)明并無直接關(guān)聯(lián),可由本領(lǐng)域普通技術(shù)人員按實際需要自行設(shè)計,在此不予詳加描述。此外,本發(fā)明并不限于上面的寄存器設(shè)置,少于16位或多于16位的控制寄存器、以及其他的寄存器設(shè)置方式均適用于本發(fā)明。
當該掩碼位AM為1時,表示下一條試圖寫入累加器210的指令只影響標志位,而由于掩碼AM對于累加器210的鎖存,該指令對于累加器210本身并不會更新。當掩碼位AM為0時,則不對累加器210進行鎖存。
在其他實施例中也可采用其它方式來設(shè)定累加器掩碼,例如,在另一實施例中,如表4所示,可設(shè)兩位累加器掩碼AM0與AM1,以兩位中的較低位AM0為1(即01)來鎖存累加器A,以較高位AM1為1(即10)來鎖存累加器B,而其他形式時(即00和11)則不進行鎖存。
表4.控制寄存器結(jié)構(gòu)表在其他實施例中掩碼也可設(shè)置在控制寄存器216之外的其他寄存器中。對本技術(shù)領(lǐng)域的普通技術(shù)人員來說,可以有多種方法來改變累加器掩碼AM的實現(xiàn)方式,但這些改變都包括在本發(fā)明的實質(zhì)和精神范圍之內(nèi)。
本發(fā)明中累加器掩碼AM是由指令來進行控制。當一條運算指令的運算結(jié)果可能影響標志位寄存器212,而又不希望該運算指令的運算結(jié)果寫入累加器210時,就在該運算指令的前一條指令中添加一條使能指令,以該使能指令來控制累加器掩碼AM,使累加器掩碼AM能夠屏蔽該運算指令中對累加器210的寫入,而同時并不影響到其對標志位寄存器212的寫入。所述的使能指令可以是位操作指令,也可以是賦值指令或邏輯運算指令。
本實施例中的使能指令可以為位操作指令,如指令WCTR,該指令可用于對任何可進行位操作的寄存器中的任意位置1。若對AM置1,其指令如下WCTR AM1在另一實施例中,若要鎖存累加器A,則用如下指令WCTR AM01在另一實施例中,若要鎖存累加器B,則用如下指令WCTR AM11本實施例的使能指令也可以對位進行邏輯操作,以取反的方式來改變掩碼AM的值,因為大多數(shù)情況下,運算結(jié)果需要寫入到累加器210中,所以通常AM值總保持為0,當需要利用掩碼AM來控制累加器的鎖存時,對AM取反,使其值為1,從而有效地控制累加器210的鎖存。具體指令如下XR AM這些位操作指令應用靈活,并不單限于對累加器掩碼AM的操作,因此保證了指令代碼效率,同時使用位操作指令對控制寄存器216的其他位也不會有影響。
采用賦值指令控制累加器掩碼AM時,控制寄存器216應為內(nèi)存映射寄存器狀態(tài),即可16位一起讀入或?qū)懗?。但這種操作方式會影響到控制寄存器216的其他位的值,舉一指令為例MOV CTRL,#0004此指令執(zhí)行后,掩碼AM位為1,而控制寄存器216中的其他位均為0。
類似的,在另一實施例中,若要鎖存累加器A,則用如下指令MOV CTRL,#0002在另一實施例中,若要鎖存累加器B,則用如下指令MOV CTRL,#0004所述使能指令對累加器掩碼AM的影響只對該指令緊跟的下一條試圖更改累加器210的指令有效,也就是說,當用所述使能指令使累加器掩碼AM置1后,緊接著使能指令的下一條指令將只能影響標志位寄存器212,而無法更改累加器,并在使能指令的下一條指令執(zhí)行完后,累加器掩碼AM自動失效,恢復為0。當掩碼AM位為0時,則對累加器210無任何影響。因為大多數(shù)情況下需要對累加器210進行更改,能夠自動地對掩碼AM清零,可以避免產(chǎn)生額外的指令開銷。
本實施例中把使能指令與其它指令并行操作,當希望在一條指令中只影響標志位寄存器212,而不更改累加器210時,則在該指令的上一條指令中并行執(zhí)行一條對掩碼AM的使能指令,采用這種并行操作的方式可以節(jié)省指令執(zhí)行時間。而使能指令是否與其它指令并行操作,并不影響本發(fā)明的實質(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í)行效果上相當于對A賦值,三是一條對掩碼AM的使能指令,對掩碼AM置1。在第三條指令中,根據(jù)地址寄存器Ar2從內(nèi)存X中取數(shù)據(jù),假設(shè)該數(shù)據(jù)值為-1。由于第三條指令中累加器掩碼AM對累加器進行鎖存,因此累加器A不可寫入。這樣,累加器A中的最終所得值仍為1,而并非為無累加器鎖存的情況下累加器A最終所得值0。累加器掩碼AM對標志位寄存器沒有任何影響,仍然按無累加器鎖存情況下累加器A最終所得值為0的情況作出判斷,則此時,用來標識累加器A是否為零位的零位標志位ZA為0。
在下面的實施例中以條件跳轉(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不能被寫入,而標志位寄存器212卻仍可以寫入。若B中的值大于A中的值,則不需要借位,標志位寄存器中的借位標志位C為1;若B中的值小于A中的值,則需要借位,標志位寄存器中的借位標志位C為0。
之后的第三條指令為條件判斷指令,若條件為真,則執(zhí)行緊接其后的下一條指令,若條件為假,則緊接其后的下一條指令作為空指令不予執(zhí)行。在第三條指令中,對借位標志位C進行判斷,指令中的CS在本實施例中的譯碼為C=1。CS為真,即C為1時,執(zhí)行其后的第四條指令;CS為假,即C為0時,第四條指令將不被執(zhí)行。
第四條指令與第二條指令相同,為一條減法指令,累加器B的值減去累加器A的值,并把所得結(jié)果賦給累加器B,這時,累加器B已經(jīng)不被鎖存,可以進行更改。第五條指令把更改后的累加器B的值作左移操作。
這段指令的實際執(zhí)行效果為,當累加器B的值減去累加器A的值不需要借位時,即B大于A,才執(zhí)行B減A的動作;當累加器B的值減去累加器A的值需要借位時,即B小于A,就不再執(zhí)行B減A的動作,而跳過減法操作指令,直接執(zhí)行下面的指令。
從以上這段指令可以明顯看出,在執(zhí)行條件跳轉(zhuǎn)指令時,累加器A、B中已經(jīng)被占用,而其中的數(shù)據(jù)有必要保存,由于本發(fā)明的累加器掩碼AM對累加器的鎖存,累加器A、B中的數(shù)據(jù)不必另外進行存儲,從而有效地節(jié)省了指令開銷。
本技術(shù)領(lǐng)域的技術(shù)人員容易理解,其他的條件跳轉(zhuǎn)指令或類似指令也可以利用本發(fā)明的累加器掩碼。
圖3為應用圖2所示計算單元實施例框圖的數(shù)字信號處理系統(tǒng)具體電路圖。參考圖3,本領(lǐng)域技術(shù)人員將容易實現(xiàn)一種具有本發(fā)明上述優(yōu)點的數(shù)字信號處理系統(tǒng)。
圖4為本發(fā)明的累加器鎖存方法流程圖。在步驟402中,當前指令的前一條指令,即使能指令,將累加器掩碼AM置1。流程隨后前進至步驟404。在步驟404中,開始執(zhí)行當前指令。流程繼續(xù)至步驟406,在那里將待處理的數(shù)據(jù)送入處理單元。流程隨后前進至步驟408。在步驟408中,邏輯運算單元(ALU)206對數(shù)據(jù)進行處理。之后,流程前進至步驟410。此時,在試圖將中間結(jié)果寫入累加器的同時刷新標志位寄存器。而由于累加器掩碼AM被置1,因此累加器的值并不改變。流程隨后繼續(xù)至412,在那里累加器掩碼AM被自動置0。
上述實施例只是為了更好地揭露本發(fā)明,并不對本發(fā)明產(chǎn)生限制。對于本發(fā)明可以有很多變化方式,但任何基于本發(fā)明做出的修改和變化都應在本發(fā)明的實質(zhì)和精神涵蓋之下。
權(quán)利要求
1.一種用于在數(shù)字信號處理器中可控制鎖存累加器的系統(tǒng),該系統(tǒng)包括計算單元與控制電路,所述控制電路用來控制所述計算單元的操作數(shù)和操作方式的選擇,所述計算單元至少包括邏輯運算單元,配置成完成待處理數(shù)據(jù)的功能運算;至少一個累加器,配置成接收所述邏輯運算單元的計算結(jié)果,并將其與之前暫存的數(shù)據(jù)累加;標志位寄存器,配置成存放所述計算結(jié)果中的各種特征,其特征在于,所述控制電路包括一控制寄存器,在所述控制寄存器中設(shè)置了至少一個累加器掩碼,所述至少一個累加器掩碼對所述至少一個累加器進行控制,使得在需要所述計算結(jié)果影響所述標志位寄存器,而同時又不希望其影響所述至少一個累加器時,所述至少一個累加器掩碼能夠?qū)λ鲋辽僖粋€累加器進行鎖存。
2.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述計算單元進一步包括乘加器和移位器。
3.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述累加器掩碼將在所述計算結(jié)果影響完所述標志位寄存器之后自動失效。
4.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述累加器為內(nèi)存映射寄存器。
5.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述至少一個累加器掩碼中的一個能夠同時鎖存所述至少一個累加器中的多個累加器。
6.一種用于在數(shù)字信號處理器中可控制鎖存累加器的方法,包括以下步驟當前指令的前一條指令將累加器掩碼啟用的步驟;開始執(zhí)行當前指令的步驟;將待處理的數(shù)據(jù)送入處理單元的步驟;邏輯運算單元對數(shù)據(jù)進行處理的步驟;將中間結(jié)果寫入累加器的同時刷新標志位寄存器的步驟,由于累加器掩碼被啟用,累加器的值并不改變。
7.如權(quán)利要求6所述的方法,其特征在于,在所述將中間結(jié)果寫入累加器的同時刷新標志位寄存器的步驟之后進一步包括累加器掩碼自動失效的步驟。
全文摘要
本發(fā)明提供了一種用于在數(shù)字信號處理器中可控制鎖存累加器的系統(tǒng)和方法,該系統(tǒng)包括計算單元與控制電路,控制電路用來控制計算單元的操作數(shù)和操作方式的選擇,計算單元至少包括邏輯運算單元,配置成完成待處理數(shù)據(jù)的功能運算;至少一個累加器,配置成接收邏輯運算單元的計算結(jié)果,并將其與之前暫存的數(shù)據(jù)累加;標志位寄存器,配置成存放計算結(jié)果中的各種特征,控制電路包括一控制寄存器,在控制寄存器中設(shè)置了至少一個累加器掩碼,該至少一個累加器掩碼對累加器進行控制,使得在需要所述計算結(jié)果影響標志位寄存器,而同時又不希望其影響累加器時,累加器掩碼能夠?qū)奂悠鬟M行鎖存。
文檔編號G06F7/49GK1515997SQ0311473
公開日2004年7月28日 申請日期2003年1月6日 優(yōu)先權(quán)日2003年1月6日
發(fā)明者周振亞 申請人:上海奇碼數(shù)字信息有限公司