專利名稱:具有取模地址運算的數(shù)字信號處理器的制作方法
技術領域:
本發(fā)明涉及一種數(shù)字信號處理器,尤其涉及一種具有取模地址運算的數(shù)字信號處理器,對數(shù)字信號處理器(DSP)內(nèi)數(shù)字數(shù)據(jù)存儲器訪問地址的生成方式進行了創(chuàng)新,屬于計算機數(shù)字信號處理技術領域。
背景技術:
本發(fā)明涉及的技術背景可以參考美國德州儀器公司TMS320C600數(shù)字信號處理器參考手冊(TMS32C6000 CPU and Instruction Set Reference Guide)。
隨著數(shù)字信號處理器的廣泛應用和對其效率要求的不斷提高,用更少的指令數(shù)完成同樣的數(shù)字運算任務變得越來越重要。在現(xiàn)有的數(shù)字信號處理器中,地址發(fā)生單元支持多種不同的尋址方式已經(jīng)成為一種例行的操作,但一般局限于直接線性加法運算和取模運算。按照例行的實現(xiàn)方式,直接線性加法運算就是把基址寄存器中的內(nèi)容加上變址寄存器內(nèi)的內(nèi)容作為運算出的地址;取模運算就是把基址寄存器中的內(nèi)容加上變址寄存器內(nèi)的內(nèi)容,然后根據(jù)模式寄存器內(nèi)的值把所述加法結果的后k位進行取模,使得后k位的值在規(guī)定的上下界的范圍之內(nèi)。
現(xiàn)有的這種技術在變換模式的時候需要改變模式寄存器中的值,那么在程序中頻繁改變模式寄存器內(nèi)的值就是一種導致效率下降的因素。
舉例來說,當處理并行的無限沖擊響應濾波算法時,就需要在數(shù)字數(shù)據(jù)存儲器的不同地址范圍內(nèi)執(zhí)行相同的操作,如果與此同時由于整體程序的其他部分需要使用取模運算來計算訪問數(shù)字數(shù)據(jù)存儲器的。那么這個程序中頻繁改變模式寄存器內(nèi)的值就是一種導致效率下降的因素。數(shù)字信號處理器通常設計實施為具有有限的處理功能,但該功能必須重復執(zhí)行且迅速執(zhí)行,為了確保數(shù)字信號處理器高效率工作,通常需要減少循環(huán)內(nèi)的指令數(shù)目。現(xiàn)有的數(shù)字信號處理器中需要較多的指令,這樣芯片的效率就會下降。
發(fā)明內(nèi)容
本發(fā)明的目的在于針對現(xiàn)有技術的不足,提供一種具有取模地址運算的數(shù)字信號處理器,減少數(shù)字信號處理器在進行不同尋址模式轉換時所需的指令,從而提高數(shù)字信號處理器運行效率。
為實現(xiàn)這樣的目的,本發(fā)明在原有的基礎上對取模運算進行了改進,即當進行取模運算時,變址寄存器內(nèi)的值如果是取模地址范圍下界值的正整數(shù)倍,那么并不進行取模運算而是采用直接線性加法運算。這種處理方式能夠高效的在數(shù)字數(shù)據(jù)存儲器的不同地址范圍內(nèi)執(zhí)行相同的操作。在無需改變模式寄存器內(nèi)容的條件下,可以進行取模運算和特定值的線性運算,運行速度快,工作效率高。這一點對于很多數(shù)字信號處理算法是非常有實用價值的。
本發(fā)明的數(shù)字信號處理器由數(shù)字信號處理器核心和數(shù)字數(shù)據(jù)存儲器連接而成,其中數(shù)字信號處理器核心由程序控制單元、地址發(fā)生器單元、指令譯碼單元和數(shù)字數(shù)據(jù)處理單元組成。
以下所有連接關系除特別說明外為單向連接。
指令譯碼單元連接到程序控制單元。程序控制單元連接到地址發(fā)生器單元、指令譯碼單元和數(shù)字數(shù)據(jù)處理單元。數(shù)字數(shù)據(jù)處理單元雙向連接到數(shù)字數(shù)據(jù)存儲器。地址發(fā)生器單元通過地址總線連接到數(shù)字數(shù)據(jù)存儲器,同時數(shù)字數(shù)據(jù)存儲器通過數(shù)據(jù)總線連接到地址發(fā)生器單元、指令譯碼單元和數(shù)字數(shù)據(jù)處理單元。
指令譯碼單元把指令碼翻譯成數(shù)字信號處理器核心內(nèi)部的代表指令意義的控制信號,這些所述的控制信號傳輸?shù)匠绦蚩刂茊卧?,程序控制單元發(fā)出地址發(fā)生單元、指令譯碼單元和數(shù)字數(shù)據(jù)處理單元工作所需的控制信號。數(shù)字數(shù)據(jù)處理單元接受來自數(shù)字數(shù)據(jù)存儲器的數(shù)據(jù),對其進行運算。地址發(fā)生器單元進行地址運算,地址運算的結果通過地址總線送到數(shù)字數(shù)據(jù)存儲器上。數(shù)字數(shù)據(jù)存儲器,根據(jù)產(chǎn)生的地址把相應的數(shù)字數(shù)據(jù)放到數(shù)據(jù)總線上,從而送給地址發(fā)生器單元、指令譯碼單元和數(shù)據(jù)處理單元,為它們提供指令和操作數(shù)。
本發(fā)明采用了具有特定判別邏輯的地址發(fā)生器單元,包括可編程的由基址寄存器、變址寄存器和模式寄存器組成的8組寄存器組、加法器、取模用累加器和結果選擇判斷邏輯模塊?;芳拇嫫鹘M和變址寄存器組被連接到加法器的兩個輸入端,同時基址寄存器組、變址寄存器組和模式寄存器組連接到取模用累加器上。基址寄存器組、變址寄存器組、模式寄存器組、加法器的輸出和累加器的輸出連接到選擇結果判斷邏輯模塊。
同一組內(nèi)的基址寄存器的內(nèi)容和變址寄存器的內(nèi)容作為兩個輸入數(shù)字信號被傳輸?shù)郊臃ㄆ鞯妮斎攵?,加法器?jīng)過運算得到第一個中間結果,同時把同一組內(nèi)的基址寄存器的內(nèi)容、變址寄存器和模式寄存器內(nèi)的值作為輸入連結到取模用累加器上運算得到第二個中間結果。結果選擇判斷邏輯模塊的輸入值不僅有基址寄存器、模式寄存器的內(nèi)容、所述的兩個中間結果值還有變址寄存器的內(nèi)容。這個結果選擇判斷邏輯模塊用來決定選用第一個中間結果或者第二個中間結果作為最終的地址運算的結果。
在結果選擇判斷邏輯模塊內(nèi)部,包括常數(shù)生成器A、常數(shù)生成器B、線性加法運算和取模運算選擇器、越界判別器、4個兩輸入與門,1個三輸入與門和1個兩路復用器。模式寄存器組的輸出總線連接到線性加法運算和取模運算選擇器、常數(shù)生成器A和常數(shù)生成器B的輸入端,累加和總線和常數(shù)生成器A輸出總線連接到一個兩輸入與門的輸入端,基址寄存器總線和常數(shù)生成器A輸出總線連接到一個兩輸入與門的輸入端,加法和總線和常數(shù)生成器A輸出總線連接到一個兩輸入與門的輸入端。上述三個與門的輸出連接到越界判別器上。變址寄存器輸出總線和常數(shù)生成器B連接到一個兩輸入與門的輸入端。上述與門的輸出端、越界判別器的輸出端,以及線性加法運算和取模運算選擇器的輸出端連接到一個三輸入與門的輸入端,三輸入與門的輸出端連接到復用器的控制信號端,累加和總線和加法和總線連接到復用器的輸入端,復用器的輸出端就是生成的地址。
所述的結果選擇判斷邏輯模塊把變址寄存器內(nèi)的值和由模式寄存器的值決定的地址范圍的下界的正整數(shù)倍進行比較,如果比較的結果一致那就自動把線性加法運算的結果作為這次地址運算的結果而不再考慮其他的選擇因素。
本發(fā)明所涉及的數(shù)字信號處理器的地址發(fā)生器單元,不僅能完成普通的線性地址運算和取模運算,而且當變址偏移量值為取模運算下界值的正整數(shù)倍時,不用把模式從取模運算改成線性運算就能進行線性地址運算,反之一旦下一個變址偏移量值不為取模運算下界值的正整數(shù)倍時,自動轉換為取模運算模式。這樣就作到了零開銷的模式轉換功能。
圖1是本發(fā)明的數(shù)字信號處理器的結構框圖。
圖1中描述了本發(fā)明的數(shù)字信號處理器中各個組成模塊的連接關系。如圖1所示,本發(fā)明的數(shù)字信號處理器由數(shù)字信號處理器核心5和數(shù)字數(shù)據(jù)存儲器6連接而成,其中數(shù)字信號處理器核心5由程序控制單元1、地址發(fā)生器單元2、指令譯碼單元3和數(shù)字數(shù)據(jù)處理單元4組成。
圖2是本發(fā)明數(shù)字信號處理器中地址發(fā)生器單元的結構框圖。
如圖2所示,地址發(fā)生器單元2包括由基址寄存器組7、變址寄存器組8和模式寄存器組9組成的8組寄存器組、加法器11、累加器10和結果選擇判斷邏輯模塊12。圖中各單元的連接通過變址總線13、模式總線14、加法和總線15、累加和總線16和基址總線17。
圖3是本發(fā)明地址發(fā)生器單元中結果選擇判斷邏輯模塊的結構框圖。
如圖3所示,結果選擇判斷邏輯模塊12包括常數(shù)生成器A18、常數(shù)生成器B23、線性加法運算和取模運算選擇器26、越界判別器25、4個兩輸入與門20、21、24、22,1個三輸入與門27和1個兩路復用器28。
具體實施例方式以下結合附圖對本發(fā)明的具體實施方式
作進一步詳細說明。
以下所有連接關系除特別說明外為單向連接。
如圖1所示,指令譯碼單元3連接到程序控制單元1。程序控制單元1與地址發(fā)生單元2、指令譯碼單元3和數(shù)字數(shù)據(jù)處理單元4相連接。數(shù)字數(shù)據(jù)處理單元4雙向連接到數(shù)字數(shù)據(jù)存儲器6。地址發(fā)生器單元2通過地址總線連接到數(shù)字數(shù)據(jù)存儲器6,同時數(shù)字數(shù)據(jù)存儲器6通過數(shù)據(jù)總線連接到地址發(fā)生器單元2、指令譯碼單元3和數(shù)字數(shù)據(jù)處理單元4。
指令譯碼單元3把指令碼翻譯成數(shù)字信號處理器核心5內(nèi)部的代表指令意義的控制信號,程序控制單元1發(fā)出控制地址發(fā)生單元2、指令譯碼單元3和數(shù)字數(shù)據(jù)處理單元4工作所需的控制信號。數(shù)字數(shù)據(jù)處理單元4,接受來自數(shù)字數(shù)據(jù)存儲器6的數(shù)據(jù),對其進行運算。地址發(fā)生器單元2進行地址運算,地址運算的結果通過地址總線送到數(shù)字數(shù)據(jù)存儲器6上。數(shù)字數(shù)據(jù)存儲器6連接到地址發(fā)生器單元2,根據(jù)產(chǎn)生的地址把相應的數(shù)字數(shù)據(jù)放到數(shù)據(jù)總線上,所述的數(shù)據(jù)總線連接到指令譯碼單元3和數(shù)據(jù)處理單元4,為它們提供指令和操作數(shù)。
參照圖2,在地址發(fā)生器單元2中,基址寄存器組7的輸出信號和變址寄存器組8的信號連接加法器11的兩個輸入端?;芳拇嫫鹘M7的輸出信號、變址寄存器組8的輸出信號以及模式寄存器組9的輸出信號連接到累加器10的三個輸入端,同時,上述參與加法運算和累加運算的基址寄存器、變址寄存器和模式寄存器分別通過基址總線17、變址總線13和模式總線14連接到結果選擇判斷邏輯模塊12。
在地址發(fā)生器單元2中,把基址寄存器組7中的一個數(shù)據(jù)和變址寄存器組8中的一個數(shù)據(jù)送到加法器11的兩個輸入端,加法器11對這兩個數(shù)進行一次全加操作,并把結果放到加法和總線15上?;芳拇嫫鹘M7中的上述數(shù)據(jù)、變址寄存器組8中的上述數(shù)據(jù)以及模式寄存器組9中的一個數(shù)據(jù)被傳送到累加器10的三個輸入端,累加器10根據(jù)變址寄存器組8中的數(shù)字數(shù)據(jù)是正整數(shù)還是負整數(shù)來決定自己的操作。如果變址寄存器組8中的數(shù)字數(shù)據(jù)是正整數(shù),那么累加器10需要把所述的模式寄存器組9傳來的數(shù)據(jù)進行絕對值不變的變負數(shù)操作,然后才能進行累加操作。如果變址寄存器組8中的數(shù)字數(shù)據(jù)是負整數(shù),那么所述的模式寄存器組9傳來的數(shù)據(jù)可以直接被用來進行累加操作。累加的結果被送到累加和總線16上。同時,把上述參與加法運算和累加運算的基址值、變址值和模式值分別通過基址總線17、變址總線13和模式總線14送往結果選擇判斷邏輯模塊12。結果選擇判斷邏輯模塊12用來選擇使用加法和總線15上的數(shù)據(jù)還是累加和總線16上的數(shù)據(jù)作為最后的地址值。
參照圖3,模式寄存器組的輸出總線14連接到線性加法運算和取模運算選擇器26、常數(shù)生成器A18和常數(shù)生成器B23的輸入端,累加和總線16和常數(shù)生成器A18輸出總線連接到兩輸入與門20的輸入端,基址寄存器總線17和常數(shù)生成器A18輸出總線連接到兩輸入與門21的輸入端,加法和總線15和常數(shù)生成器A18輸出總線連接到兩輸入與門24的輸入端。上述三個與門的輸出連接到越界判別器25上。變址寄存器輸出總線13和常數(shù)生成器B23連接到兩輸入與門22的輸入端。上述與門22的輸出端、越界判別器25的輸出端,以及線性加法運算和取模運算選擇器26的輸出端連接到三輸入與門27的輸入端,三輸入與門27的輸出端連接到復用器28的控制信號端,累加和總線16和加法和總線15連接到復用器的輸入端,復用器的輸出端就是生成的地址。
在結果選擇判斷邏輯模塊12中,常數(shù)生成器A18和常數(shù)生成器B23的常數(shù)都是根據(jù)模式總線14中的值生成一個常數(shù)。在常數(shù)生成器A23中,如果模式總線14中的數(shù)據(jù)有效數(shù)字是k位,那么常數(shù)生成器A23生成的常數(shù)的最低k位信號為1,其余信號位為0,比如模式總線14中的數(shù)據(jù)為0001000101,那么常數(shù)生成器A23生成的常數(shù)(假設為16位)為0000000001111111。在常數(shù)生成器A18中,如果模式總線14中的數(shù)據(jù)有效數(shù)字是k位,那么常數(shù)生成器A18生成的常數(shù)第k+1位為1,其余信號位為0,比如模式總線14中的數(shù)據(jù)為0001000101,那么常數(shù)生成器A18生成的常數(shù)(假設為16位)為0000000010000000。常數(shù)生成器A18生成的常數(shù)和累加和總線16上的數(shù)據(jù)進行邏輯與操作得到累加和總線16的上述第k+1位。常數(shù)生成器A18生成的常數(shù)和加法和總線15上的數(shù)據(jù)進行邏輯與操作得到加法和總線15的上述第k+1位。常數(shù)生成器A18生成的常數(shù)和基址總線17上的數(shù)據(jù)進行邏輯與操作得到基址總線17的上述第k+1位。
在越界判別器25中,如果變址寄存器組8中的數(shù)字數(shù)據(jù)是負整數(shù),那么加法和總線15的上述第k+1位和基址總線17的上述第k+1位進行邏輯異或操作,結果為1時表示越界;如果變址寄存器組8中的數(shù)字數(shù)據(jù)是正整數(shù),那么累加和總線16的上述第k+1位和基址總線17的上述第k+1位進行邏輯異或操作,結果為1時表示越界。越界時,越界判別器25的輸出結果為1。
線性加法運算和取模運算選擇器26,根據(jù)模式總線14上的數(shù)據(jù)決定是否進行取模運算,當模式總線14上的信號為非全零,選擇的模式為取模運算。反之為線性加法運算。輸出1表示取模運算。
常數(shù)生成器B23生成的常數(shù)和變址總線13上的數(shù)據(jù)進行邏輯與操作得到變址總線13的最低k位。如果所述最低k位為零,表示變址總線13上的值是2的k次冪的正整數(shù)倍,那么地址運算進入特殊模式,不再使用取模運算的結果。特殊模式用輸出1表示。
在與邏輯門27中,如果輸入表示是取模運算,已經(jīng)越界并且不是特殊模式,那么與邏輯門27的輸出為1。
二路復用器28中,輸入選擇信號為1時,選擇累加和總線16上的數(shù)據(jù)作為最終地址運算結果,反之,選擇加法和總線15上的數(shù)據(jù)作為最終地址運算結果。
權利要求
1.一種具有取模地址運算的數(shù)字信號處理器,包括由程序控制單元(1)、地址發(fā)生器單元(2)、指令譯碼單元(3)和數(shù)字數(shù)據(jù)處理單元(4)組成的數(shù)字信號處理器核心(5)和數(shù)字數(shù)據(jù)存儲器(6),其特征在于程序控制單元(1)與地址發(fā)生單元(2)、指令譯碼單元(3)和數(shù)字數(shù)據(jù)處理單元(4)相連接,數(shù)字數(shù)據(jù)處理單元(4)雙向連接到數(shù)字數(shù)據(jù)存儲器(6),地址發(fā)生器單元(2)中,由基址寄存器組(7)、變址寄存器組(8)和模式寄存器組(9)組成8組寄存器組,基址寄存器組(7)和變址寄存器組(8)的輸出連接加法器(11)的兩個輸入端,基址寄存器組(7)、變址寄存器組(8)及模式寄存器組(9)的輸出信號連接累加器(10)的三個輸入端,基址寄存器、變址寄存器和模式寄存器分別通過基址總線(17)、變址總線(13)和模式總線(14)連接結果選擇判斷邏輯模塊(12),由結果選擇判斷邏輯模塊(12)選擇使用加法和總線(15)上的數(shù)據(jù)或累加和總線(16)上的數(shù)據(jù)作為最后的地址值。
2.如權利要求1所說的具有取模地址運算的數(shù)字信號處理器,其特征在于結果選擇判斷邏輯模塊(12)中,模式總線(14)連接到線性加法運算和取模運算選擇器(26)、常數(shù)生成器A(18)和常數(shù)生成器B(23)的輸入端,累加和總線(16)和常數(shù)生成器A(18)連接兩輸入與門(20)的輸入端,基址總線(17)和常數(shù)生成器A(18)連接兩輸入與門(21)的輸入端,加法和總線(15)和常數(shù)生成器A(18)連接兩輸入與門(24)的輸入端,上述三個與門(20、21、24)的輸出連接到越界判別器(25)上,變址總線13和常數(shù)生成器B(23)連接兩輸入與門(22)的輸入端,與門(22)、越界判別器(25)及線性加法運算和取模運算選擇器(26)的輸出端連接三輸入與門(27)的輸入端,三輸入與門(27)的輸出端連接到復用器(28)的控制信號端,累加和總線(16)和加法和總線(15)連接到復用器(28)的輸入端,復用器(28)輸出生成的地址。
全文摘要
一種具有取模地址運算的數(shù)字信號處理器,在地址發(fā)生器單元中,由基址寄存器、變址寄存器和模式寄存器組成8組成可編程的寄存器組,并采用了加法器、取模用累加器和包括常數(shù)生成器、線性加法運算和取模運算選擇器、越界判別器、兩輸入與門、三輸入與門和兩路復用器的結果選擇判斷邏輯模塊。本發(fā)明采用了具有特定判別邏輯的地址發(fā)生器單元,不僅能完成普通的線性地址運算和取模運算,而且當變址偏移量值為取模運算下界值的正整數(shù)倍時,不用把模式從取模運算改成線性運算就能進行線性地址運算,而一旦下一個變址偏移量值不為取模運算下界值的正整數(shù)倍時,自動轉換為取模運算模式,做到了零開銷的模式轉換功能。
文檔編號G06F9/28GK1521617SQ0311537
公開日2004年8月18日 申請日期2003年2月13日 優(yōu)先權日2003年2月13日
發(fā)明者陳進, 陳 進 申請人:上海漢芯半導體科技有限公司