專利名稱:一種快速地址變換的軟件實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機(jī)尋址技術(shù),尤其涉及一種利用軟件實(shí)現(xiàn)快速地址變換的方法。
背景技術(shù):
計算機(jī)技術(shù)已經(jīng)應(yīng)用到各個領(lǐng)域,在各個不同的領(lǐng)域中由于不同的應(yīng)用方法和各種限制,對計算機(jī)尋址技術(shù)有著不同的要求。例如,在數(shù)字信號處理中,對數(shù)字信號進(jìn)行濾波、卷積、傅里葉變換等等操作。進(jìn)行這些操作需要對歷史數(shù)據(jù)進(jìn)行保存,以用于后續(xù)運(yùn)算,并且對數(shù)據(jù)有時間上對齊的要求。
尤其是數(shù)字濾波是語音和圖像處理、模式識別、譜分析等應(yīng)用中的一個基本算法。
以一個卷積運(yùn)算為例。
y(n)=Σk=0Nx(n-k)·h(k)]]>為了運(yùn)算y(n)必須將以前的N個數(shù)據(jù)保存進(jìn)行運(yùn)算。為了使數(shù)據(jù)可以在計算機(jī)上進(jìn)行運(yùn)算,需要對所保存的數(shù)據(jù)地址不斷進(jìn)行修改。圖1將在n=i和n=i+1時,h(k)和x(n)對應(yīng)關(guān)系顯示出來。
為了達(dá)到上述目的,最直接的修改方法就是直接將整體數(shù)據(jù)進(jìn)行對應(yīng)于一個時間單位的地址搬移。這個方法比較適應(yīng)數(shù)據(jù)長度比較短的情況;如果數(shù)據(jù)長度比較長的情況下就會花費(fèi)很多額外的開銷。
上述卷積運(yùn)算為例,如圖1所示。當(dāng)n=i運(yùn)算完畢后,需要進(jìn)行n=i+1的時候,整個數(shù)據(jù)進(jìn)行地址搬移就是和圖中表達(dá)出來的一樣,將n=i時,對應(yīng)h(k)行的N位置上的數(shù)據(jù)丟棄,依次將各個數(shù)據(jù)向右搬移,給對應(yīng)h(k)行的0位置騰空,然后將新的數(shù)據(jù)樣本i+1放置在對應(yīng)h(k)行的0位置上。這樣,每次運(yùn)算完畢都要進(jìn)行大量的數(shù)據(jù)地址搬移的運(yùn)算。
為了減少計算量,一種循環(huán)尋址的思想被廣泛運(yùn)用。要求在存儲器中開辟一個緩沖區(qū)作為滑動窗,用以保存最新一批數(shù)據(jù)參與運(yùn)算。如果有新的數(shù)據(jù)到來,它將覆蓋最早的數(shù)據(jù)。具體實(shí)現(xiàn)就是將物理上連續(xù)的一段線性的存儲空間看成邏輯上是環(huán)形的。這樣在數(shù)據(jù)尋址到物理存儲空間的結(jié)束地址的時候,自動返回指向物理存儲空間的起始地址,形成邏輯上的環(huán)形的存儲空間。
圖2中,圖2-(a)所示為n=i時,h(k)和x(n)之間的對應(yīng)關(guān)系。不失一般性,x(i)的起點(diǎn)位置并不在物理緩沖區(qū)的開始位置。圖2-(b)所示為n=i+1時,h(k)和x(n)之間的對應(yīng)關(guān)系??梢钥吹酱藭r數(shù)據(jù)x(i-N)已經(jīng)不需要了,所以按照循環(huán)尋址的思路就是將新輸入的樣本數(shù)據(jù)放到當(dāng)前時刻不需要的歷史數(shù)據(jù)x(i-N)所處的和h(2)對應(yīng)得位置上,這樣就能夠模擬邏輯上的環(huán)形緩沖區(qū)。
現(xiàn)在有些專用的設(shè)備和器件通過硬件提供了低開銷的循環(huán)尋址功能。但是,很多通用的處理器并沒有提供這個功能,需要通過軟件技術(shù)來實(shí)現(xiàn)。
上述第一種方法,在歷史數(shù)據(jù)長度比較短的情況下,直接進(jìn)行數(shù)據(jù)搬移的計算量不大,但是如果歷史數(shù)據(jù)比較長的情況下,需要進(jìn)行的數(shù)據(jù)搬移就要很大的計算量。
上述第二種方法,由于新數(shù)據(jù)存儲在不再使用的歷史數(shù)據(jù)的存儲單元,使得每次參加運(yùn)算的一系列歷史數(shù)據(jù)的起始位置都是不同的,所以無法預(yù)知什么時候進(jìn)行地址映射。在進(jìn)行計算之前首先要判斷該數(shù)據(jù)的地址是否是緩沖區(qū)的結(jié)束地址,如果是緩沖區(qū)德結(jié)束地址,下一個地址就要使用映射方式了。每個參加運(yùn)算的地址都要進(jìn)行判斷,開銷非常大。
當(dāng)今,計算機(jī)技術(shù)飛速發(fā)展,功能強(qiáng)大電子產(chǎn)品進(jìn)入人們的生活之中,比如手機(jī),數(shù)碼攝像機(jī)等等。這些產(chǎn)品方便生活,同時由于這些產(chǎn)品都是使用電池供電,這就對處理器的能耗提出了更高的要求。上述兩個方法中都有繁瑣的計算,這就使得產(chǎn)品工作時間縮短,使用不方便。
發(fā)明內(nèi)容
有鑒于此,為了減少處理器的開銷,快速進(jìn)行地址變換,本發(fā)明提出一種利用軟件實(shí)現(xiàn)快速地址變換的方法。
一種利用軟件實(shí)現(xiàn)快速地址變換的方法,其特征在于包括一下步驟A初始化方法中的參數(shù);B緩沖區(qū)數(shù)據(jù)初始化;C數(shù)據(jù)地址變換方式選擇,數(shù)據(jù)運(yùn)算;D新數(shù)據(jù)輸入;E判斷并結(jié)束處理。
進(jìn)一步,所述方法步驟A中需要初始化的參數(shù)包括緩沖區(qū)長度、緩沖區(qū)起始單元、緩沖區(qū)結(jié)尾單元。
進(jìn)一步,所述方法步驟B中,將需要進(jìn)行處理的數(shù)據(jù)依次存入緩沖區(qū)中。當(dāng)數(shù)據(jù)依次存滿整個緩沖區(qū)時或者需要進(jìn)行運(yùn)算的數(shù)據(jù)全部存儲完時進(jìn)行數(shù)據(jù)運(yùn)算。
進(jìn)一步,所述方法步驟C中數(shù)據(jù)運(yùn)算,當(dāng)所需歷史數(shù)據(jù)長度比較長時,根據(jù)當(dāng)前指針的位置,將整個緩沖區(qū)中的數(shù)據(jù)分為兩個線性的部分。將兩個部分分別進(jìn)行運(yùn)算然后再匯總得到最終的結(jié)果。數(shù)據(jù)運(yùn)算完畢后,需要進(jìn)行循環(huán)地址的判決,以決定指針是否已經(jīng)到達(dá)緩沖區(qū)的結(jié)尾。如果指針到達(dá)了緩沖區(qū)的結(jié)尾,將指針映射到緩沖區(qū)的開始位置。在進(jìn)行循環(huán)地址映射時,當(dāng)指針到達(dá)緩沖區(qū)結(jié)尾時,某些情況下,可以使用快速的映射方法,即直接將指針映射到緩沖區(qū)的開始位置。
進(jìn)一步,所述方法步驟C中數(shù)據(jù)運(yùn)算,當(dāng)所需歷史數(shù)據(jù)長度比較短時,直接進(jìn)行數(shù)據(jù)搬移。
進(jìn)一步,所述方法步驟D中,新輸入的數(shù)據(jù)樣本,根據(jù)已經(jīng)完成的數(shù)據(jù)運(yùn)算情況,存放在不再使用的歷史數(shù)據(jù)的位置上。
進(jìn)一步,所述緩沖區(qū)的存儲空間采用物理上連續(xù)的地址單元,也可以為邏輯上連續(xù)的地址單元;所述被處理數(shù)據(jù)可以為一個存儲單元,也可以為幾個存儲單元組合起來的數(shù)據(jù)塊。
通過本發(fā)明,大大減少了運(yùn)算過程中的地址比較判決計算,降低了處理器的計算開銷,可以節(jié)省處理時間,降低了處理器能量消耗,強(qiáng)力支持了現(xiàn)在使用電池的電子產(chǎn)品的長時間工作。
圖1在n=i和n=i+1時h(k)和x(n)對應(yīng)關(guān)系示意圖;圖2循環(huán)尋址方式在n=i和n=i+1時h(k)和x(n)對應(yīng)關(guān)系示意圖;圖3物理不連續(xù)的緩沖區(qū)示意圖;圖4幾個存儲單元組合起來的物理連續(xù)數(shù)據(jù)塊示意圖;圖5幾個存儲單元組合起來的物理不連續(xù)數(shù)據(jù)塊示意圖。
具體實(shí)施例方式
以一個卷積運(yùn)算為例。
y(n)=Σk=0Nx(n-k)·h(k)]]>首先初始化長度寄存器(BK)、有效基地址(EFB)、尾地址(EOB)。然后,按照緩沖區(qū)的安排順序?qū)?shù)據(jù)依次填充。
根據(jù)長度寄存器(BK)的大小,來決定采用數(shù)據(jù)搬移進(jìn)行尋址,還是采用本發(fā)明提到的循環(huán)尋址。如果采用數(shù)據(jù)搬移,如圖1所示,在n=i運(yùn)算完畢后,將要進(jìn)行n=i+1的計算,由于在和h(N)對應(yīng)的數(shù)據(jù)已經(jīng)成為沒有用的歷史數(shù)據(jù),將和h(N-1)對應(yīng)的數(shù)據(jù)搬移到和h(N)對應(yīng)的存儲單元。這樣依次搬移數(shù)據(jù)后,將和h(0)對應(yīng)的存儲單元空閑出來,新的樣本數(shù)據(jù)i+1就可以存入到這個存儲單元中。然后再進(jìn)行運(yùn)算,直到運(yùn)算結(jié)束。
如果采用本發(fā)明提到的循環(huán)尋址,如圖2所示,不失一般性,x(n)的起點(diǎn)不在物理緩沖區(qū)的開始地址,在h(3)對應(yīng)的存儲單元。這樣依照本發(fā)明的分解思想。整個數(shù)據(jù)串被分為兩個部分,h(0)~h(3)和h(4)~h(N),在這兩個部分由于中間沒有被打斷,所以在計算過程中不用進(jìn)行地址的判斷,直接運(yùn)算。
本次運(yùn)算結(jié)束后,起點(diǎn)地址需要后移,這時才進(jìn)行一次地址比較來決定起點(diǎn)地址是否已經(jīng)到達(dá)緩沖區(qū)的邊界(圖2所示方式為緩沖區(qū)的開始邊界),依照圖2-(a)所示,下一個起點(diǎn)地址為h(2)對應(yīng)的地址。如果本次運(yùn)算為緩沖區(qū)的邊界,比如h(0)對應(yīng)地址,就使用循環(huán)地址映射將運(yùn)算起點(diǎn)地址映射到h(N)。
如此不斷進(jìn)行運(yùn)算,直到整個數(shù)據(jù)計算完畢。
上述實(shí)施例中,在進(jìn)行循環(huán)地址映射時,如果緩沖區(qū)的長度為2的整數(shù)次冪,比如2的4次冪,緩沖區(qū)長度為16,即N=15,可以采用快速地址映射,直接將地址加1,取地址加1后的后四位就回到緩沖區(qū)的另外一個邊界了。分配給和h(0),h(1),......,h(15)對應(yīng)的緩沖區(qū)地址的二進(jìn)制表示為1111,1110,......,0000。當(dāng)本次運(yùn)算的起始地址為1111時,下一個起點(diǎn)地址就應(yīng)該是0000了。給1111加1成為10000,取后四位就是0000了,不用進(jìn)行另外的計算就可以直接快速映射到正確的地址了。
上述實(shí)施例為緩沖區(qū)為一個物理上連續(xù)的存儲單元。也可以是物理上不連續(xù)的存儲單元。如圖3所示,在這種情況下,地址遞增不是簡單的加1操作,而是地址指針向下一個地址。其余計算同上一具體實(shí)施例。
上述實(shí)施例為要處理的數(shù)據(jù)為單個的存儲單元。處理數(shù)據(jù)也可以為幾個存儲單元組合起來的數(shù)據(jù)塊,如圖4所示,數(shù)據(jù)塊可以是物理上連續(xù)存儲單元,圖中A,B,C分別代表組成數(shù)據(jù)塊的數(shù)據(jù),此處只表示數(shù)據(jù)塊的包含A,B,C三個結(jié)構(gòu)相同的數(shù)據(jù)部分,并不代表相同的具體數(shù)據(jù);如圖5所示,數(shù)據(jù)塊也可以是物理上不連續(xù)的存儲單元。第一種情況下,地址遞增也不是加1,而是加一個固定的常數(shù);第二種情況下,是地址指針指向下一個地址。處理過程同上述實(shí)施例。
以上所述,僅為本發(fā)明較佳的具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不局限于此,因此本發(fā)明保護(hù)范圍以權(quán)利要求書的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
1.一種應(yīng)用于計算機(jī)尋址中,利用軟件實(shí)現(xiàn)快速地址變換的方法,其特征在于包括以下步驟A初始化方法中的參數(shù);B緩沖區(qū)數(shù)據(jù)初始化;C數(shù)據(jù)地址變換方式選擇,數(shù)據(jù)運(yùn)算;D新數(shù)據(jù)輸入;E判斷并結(jié)束處理。
2.根據(jù)權(quán)利要求1所述方法,其特征在于所述方法步驟A中需要初始化的參數(shù)包括緩沖區(qū)長度、緩沖區(qū)起始單元、緩沖區(qū)結(jié)尾單元。
3.根據(jù)權(quán)利要求1所述方法,其特征在于所述方法步驟B中,將需要進(jìn)行處理的數(shù)據(jù)依次存入緩沖區(qū)中。當(dāng)數(shù)據(jù)依次存滿整個緩沖區(qū)時或者需要進(jìn)行運(yùn)算的數(shù)據(jù)全部存儲完時進(jìn)行數(shù)據(jù)運(yùn)算。
4.根據(jù)權(quán)利要求1所述方法,其特征在于所述方法步驟C中數(shù)據(jù)運(yùn)算,當(dāng)所需歷史數(shù)據(jù)長度比較長時,根據(jù)當(dāng)前指針的位置,將整個緩沖區(qū)中的數(shù)據(jù)分為兩個線性的部分。將兩個部分分別進(jìn)行運(yùn)算然后再匯總得到最終的結(jié)果。
5.根據(jù)權(quán)利要求4所述方法,其特征在于所述方法步驟C中數(shù)據(jù)運(yùn)算完畢后,需要進(jìn)行循環(huán)地址的判決,以決定指針是否已經(jīng)到達(dá)緩沖區(qū)的結(jié)尾。如果指針到達(dá)了緩沖區(qū)的結(jié)尾,將指針映射到緩沖區(qū)的開始位置。
6.根據(jù)權(quán)利要求5所述方法,其特征在于所述方法步驟C中,當(dāng)指針到達(dá)緩沖區(qū)結(jié)尾時,某些情況下,可以使用快速的映射方法,即直接將指針映射到緩沖區(qū)的開始位置。
7.根據(jù)權(quán)利要求1所述方法,其特征在于所述方法步驟C中數(shù)據(jù)運(yùn)算,當(dāng)所需歷史數(shù)據(jù)長度比較短時,直接進(jìn)行數(shù)據(jù)搬移。
8.根據(jù)權(quán)利要求1所述方法,其特征在于所述方法步驟D中,新輸入的數(shù)據(jù)樣本,根據(jù)已經(jīng)完成的數(shù)據(jù)運(yùn)算情況,存放在不再使用的歷史數(shù)據(jù)的位置上。
9.根據(jù)權(quán)利要求1所述方法,其特征在于所述緩沖區(qū)的存儲空間采用物理上連續(xù)的地址單元,也可以為邏輯上連續(xù)的地址單元。
10.根據(jù)權(quán)利要求1所述方法,其特征在于所述被處理數(shù)據(jù)可以為一個存儲單元,也可以為幾個存儲單元組合起來的數(shù)據(jù)塊。
全文摘要
本發(fā)明公開了一種利用軟件實(shí)現(xiàn)的快速地址變換的方法,該方法包括以下步驟初始化方法中的參數(shù);緩沖區(qū)數(shù)據(jù)初始化;數(shù)據(jù)地址變換方式選擇,數(shù)據(jù)運(yùn)算;新數(shù)據(jù)輸入;判斷并結(jié)束處理。本發(fā)明主要通過將以列數(shù)據(jù)分成兩個線性部分的方法,同時特殊情況下,使用快速地址映射方法,從減少處理器進(jìn)行判斷的計算,達(dá)到降低處理器開銷的目的,同時也可以減少處理器的所消耗的能量,延長處理器的工作時間。
文檔編號G06F12/10GK1831791SQ20061001164
公開日2006年9月13日 申請日期2006年4月12日 優(yōu)先權(quán)日2006年4月12日
發(fā)明者王簫程, 林中松, 鄧昊, 馮宇紅 申請人:北京中星微電子有限公司