亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

對多個帶符號的數(shù)據(jù)值執(zhí)行算術(shù)運算的數(shù)據(jù)處理系統(tǒng)和方法

文檔序號:6419249閱讀:233來源:國知局
專利名稱:對多個帶符號的數(shù)據(jù)值執(zhí)行算術(shù)運算的數(shù)據(jù)處理系統(tǒng)和方法
技術(shù)領(lǐng)域
本發(fā)明涉及對多個帶符號的數(shù)據(jù)值執(zhí)行算術(shù)運算的數(shù)據(jù)處理系統(tǒng)和方法,而更具體地說,涉及避免把算術(shù)運算單獨地用于每一個帶符號的數(shù)據(jù)值上的技術(shù)。
為了支持這種SIMD指令,需要提供具體的SIMD硬件,以便保證合成數(shù)據(jù)值的每一個域中的數(shù)據(jù)值在SIMD運算應(yīng)用于合成數(shù)據(jù)值期間不會相互影響。例如,SIMD擴充,象Intel公司的MMX硬件和SA-1500協(xié)同處理器一般都允許把寬位寄存器分成獨立的固定大小的子域。例如,這種寄存器可以是64位寬,并且,因此可包含8個八位的值,4個十六位的值或兩個32位的值。在這些寄存器上運行SIMD指令通常是類型象A=BopC的3個操作數(shù)指令,但是,它們在每一個子域上都是并行操作的。
例如,包括4個16位值的兩個64位SIMD寄存器相加將導(dǎo)致在每一個寄存器的4個子域上執(zhí)行加法。64位的結(jié)果包括將對應(yīng)的輸入域求和的4個16位值。
SIMD方法在例如八或十六位數(shù)據(jù)上的一組操作需要對大量數(shù)據(jù)執(zhí)行多次運算的情況下特別有用。考慮一個實例,其中通過使用SIMD指令應(yīng)用64位寄存器,能夠?qū)Χ噙_8個獨立的8位數(shù)據(jù)組作并行處理,以便明顯地提高處理速度。這種SIMD指令應(yīng)用的一個特殊的領(lǐng)域就是JPEG或MPEG的數(shù)據(jù)壓縮和/或去壓縮,其中,需要執(zhí)行多次離散余弦變換(DCT)運算。每一個DCT包括一系列對帶符號的數(shù)據(jù)執(zhí)行的加法和乘法,并且還發(fā)現(xiàn),應(yīng)用SIMD指令可以顯著提高處理速度。
然而,應(yīng)用SIMD指令也存在一些缺點。首先,如前所述,為了使SIMD指令能正確運算,要求有專用硬件以保證在應(yīng)用SIMD運算時寄存器的不同子域中的數(shù)據(jù)值仍舊是相互去耦。其次,需要定義使用這種硬件的新的SIMD指令。這往往會引起并不希望出現(xiàn)的識別指令所需要的指令位空間的增大。
按照本發(fā)明,兩個或兩個以上帶符號的數(shù)據(jù)值編碼為一個合成值,然后,使用好像它們都是SIMD指令似的標(biāo)準(zhǔn)指令對該合成值進行處理。通過應(yīng)用特殊的帶符號數(shù)據(jù)值的編碼,就可以避免在兩個相鄰的數(shù)據(jù)值之間出現(xiàn)上溢和下溢的問題。由于這種編碼能夠應(yīng)用標(biāo)準(zhǔn)指令,不必使用額外硬件或以SIMD技術(shù)為條件的新指令就可以獲得使用SIMD擴展的許多益處。
按照本發(fā)明,通過執(zhí)行與把每一個帶符號的數(shù)據(jù)值與各自的n位域?qū)R等效的編碼操作,多個(p個)帶符號的n位數(shù)據(jù)值可編碼為由p個n位域組成的合成值,把每一個帶符號的數(shù)據(jù)值用符號擴展至合成值的最高有效位,并且把對齊過的和用符號擴展過的數(shù)據(jù)值相加形成合成值。這種編碼允許多種操作,例如,加、減、乘以一個常數(shù)和左移位操作,只要每一個組合數(shù)值都能保持在極小值或極大值的范圍內(nèi)(例如,在16位域中的值必須保持在-32768到+32767范圍內(nèi))。
按照本發(fā)明,把編碼操作用于帶符號的數(shù)據(jù)值。由于本發(fā)明的編碼包括把與對每一個帶符號的數(shù)據(jù)值用符號擴展等效的操作用于合成值的最高有效位等效,所以,很清楚,附加與合成值的各自的n位域?qū)R的不同的帶符號的數(shù)據(jù)值,將可能在不同的數(shù)據(jù)值之間產(chǎn)生某種交互作用。例如,在最佳實施例中,通過用符號擴展特定的帶符號的數(shù)據(jù)值,如果用符號擴展的數(shù)據(jù)值為正,就不會對其它數(shù)據(jù)值產(chǎn)生影響,但是,如果用符號擴展的數(shù)據(jù)值為負,那么,就會產(chǎn)生影響,它將從與代表合成值的接著的n個較高有效位的相鄰數(shù)據(jù)值對齊的合成值中減去值1。
因此,由于這種可能的交互作用的緣故,與直觀應(yīng)用這種編碼完全相反,因為人們期望把算術(shù)運算應(yīng)用于由這種編碼產(chǎn)生的合成值不會得到這樣的結(jié)果,從這種結(jié)果可以導(dǎo)出把算術(shù)運算依此應(yīng)用于每一個帶符號的n位數(shù)據(jù)值而可能產(chǎn)生的個別結(jié)果。然而,與所期望的相反,人們發(fā)現(xiàn),利用本發(fā)明的編碼技術(shù),應(yīng)用算術(shù)運算確實得到了一個可以容易導(dǎo)出個別最后結(jié)果的編碼結(jié)果。所需要的一切就是從編碼結(jié)果的每一個n位域中提取數(shù)據(jù),并且校正在編碼期間由附加相鄰的用符號擴展過的數(shù)據(jù)值所產(chǎn)生的任何影響。因此,在最佳實施例中,如果在表示編碼結(jié)果的相鄰的n個最低有效位的相鄰的n位域中的數(shù)據(jù)為負,則所需要的一切就是把與編碼結(jié)果的特定n位域?qū)R的數(shù)值1加回到編碼結(jié)果中。
下面將指出,有多種不同的方法可以實現(xiàn)編碼操作,只要選擇的執(zhí)行過程產(chǎn)生一種合成值,后者等效于把每一個帶符號的數(shù)據(jù)值與各自的n位域、對每一個帶符號的數(shù)據(jù)值用符號擴展為合成值的最高有效位、以及把對齊的和用符號擴展過的數(shù)據(jù)值相加,以便形成合成值。例如,不必在把每一個帶符號的數(shù)據(jù)值用符號擴展之前,使每一個帶符號的數(shù)據(jù)值與各自的n位域?qū)R,另一方面,在進行任何對齊處理之前,每一個帶符號的數(shù)據(jù)值首先可以用符號擴展。
而且,在本發(fā)明的一個實施例中,編碼操作包括以下步驟把所述多個n位數(shù)據(jù)值分配給各自的中間值的n位域,其中,第1個n位域包括中間值的n個最低有效位,而第p個n位域包括中間值的n個最高有效位,對于從第p-1到第1個n位域,從第p-1個n位域開始確定在那個n位域中的數(shù)據(jù)值是否為負,并且如果為負,通過從中間值減去與代表n個最高有效位的相鄰的n位域?qū)R的邏輯值1來產(chǎn)生新的中間值;這就使得當(dāng)?shù)谝粋€n位域被處理后,所述中間值就是所述合成值。
類似地,下面將指出,可以用多種不同方法實現(xiàn)譯碼操作,只要產(chǎn)生這樣的最后結(jié)果該結(jié)果等效于從編碼結(jié)果的每一個n位域中提取數(shù)據(jù)并且校正由在編碼期間附加相鄰的符號擴展數(shù)據(jù)值所產(chǎn)生的所有影響。例如,在本發(fā)明的最佳實施例中,編碼結(jié)果的第1個n位域包括編碼結(jié)果的n個最低有效位,并且編碼結(jié)果的第p個n位域包括編碼結(jié)果的n個最高有效位,并且譯碼操作包括以下步驟對于從第1個n位域到第p-1個n位域,從第1個n位域開始,確定在那個n位域中的數(shù)據(jù)是否為負,并且如果是負,通過把與代表n個最高有效位的相鄰的n位域?qū)R的邏輯1值加到編碼結(jié)果上,產(chǎn)生新的編碼結(jié)果;這就使得當(dāng)?shù)趐-1個n位域被處理后,每一個n位域都包含所述p個最后結(jié)果中的一個。
當(dāng)考慮編碼操作和譯碼操作時,本專業(yè)的技術(shù)人員還將看到,根據(jù)選擇的執(zhí)行過程,編碼操作和/或譯碼操作可以包括一條或多條指令。
在最佳實施例中,算術(shù)運算是對一個或多個合成值的操作,每一個合成值將多個帶符號的n位數(shù)值編碼,并且每一個合成值都是通過把所述編碼步驟應(yīng)用到相應(yīng)的多個帶符號的n位數(shù)據(jù)值而產(chǎn)生的。因此,如果需要執(zhí)行加法A=A1+A2和加法B=B1+B2,那么,參照本發(fā)明的最佳實施例,將產(chǎn)生兩個合成值C1和C2,其中C1是A1和B1的編碼,而C2是A2和B2的編碼,然后,算術(shù)運算將對這兩個合成值C1和C2執(zhí)行加法,并產(chǎn)生C=C1+C2的結(jié)果。然后,通過對算術(shù)運算的結(jié)果C譯碼而導(dǎo)出A和B。為簡便起見,上述運算將用圖示說明,但是,本專業(yè)的技術(shù)人員將明白,兩個以上的數(shù)據(jù)值可以包括在產(chǎn)生的合成值中,并且也可以把算術(shù)運算應(yīng)用于兩個以上的合成值中。而且,下面將指出,算術(shù)運算實際上可以包括多個運算。
在最佳實施例中,帶符號的數(shù)據(jù)值具有2進制補碼格式。
下面將指出,許多不同的算術(shù)運算可以應(yīng)用于由本發(fā)明的編碼技術(shù)產(chǎn)生的合成值中。然而,在本發(fā)明的一個實施例中,算術(shù)運算是包括一個或多個離散余弦變換(DCT)運算,每一個DCT運算都是對一個或多個合成值的運算,每一個合成值則對多個帶符號的n位數(shù)據(jù)值編碼,并且每一個數(shù)據(jù)值都是通過把所述編碼步驟應(yīng)用于相應(yīng)的多個帶符號的n位數(shù)據(jù)值產(chǎn)生的。DCT運算應(yīng)用的一個特殊領(lǐng)域就是JPEG或MPEG的數(shù)據(jù)壓縮或去壓縮,并且已發(fā)現(xiàn),當(dāng)執(zhí)行JPEG或MPEG的數(shù)據(jù)壓縮或去壓縮時,參照本發(fā)明最佳實施例的技術(shù)是特別先進的。
從第二方面看,本發(fā)明提供了一種對多個(p個)帶符號的“n位”數(shù)據(jù)值執(zhí)行算術(shù)運算的數(shù)據(jù)處理系統(tǒng),它包括應(yīng)用算術(shù)運算的處理器;用于存儲多個帶符號的n位數(shù)據(jù)值的存儲器;在執(zhí)行算術(shù)運算之前被安排來執(zhí)行以下操作的處理器從存儲器檢索多個帶符號的n位數(shù)據(jù)值處理器、通過執(zhí)行與把每一個帶符號數(shù)據(jù)值與各自的n位域?qū)R、將每一個帶符號的數(shù)據(jù)值用符號擴展為合成值的最高有效位、以及將對齊的和用符號擴展過的各數(shù)據(jù)值相加形成合成值等效的編碼操作而將多個帶符號的n位數(shù)據(jù)值編碼為包括p個n位域的合成值,并將該合成值存入存儲器中;準(zhǔn)備將算術(shù)運算用于合成值以便產(chǎn)生包括p個n位域的編碼結(jié)果并將編碼結(jié)果存入存儲器中的處理器;以及準(zhǔn)備緊接在應(yīng)用算術(shù)運算之后通過執(zhí)行與以下操作等效的譯碼操作而將所述編碼結(jié)果譯碼以便產(chǎn)生p個最后結(jié)果的處理器從編碼結(jié)果的每一個n位域提取數(shù)據(jù),以及校正在編碼其間由相鄰的用符號擴展過的數(shù)據(jù)值相加所產(chǎn)生的任何影響;從而,每一個最后結(jié)果都代表把算術(shù)運算用于相應(yīng)的帶符號的n位數(shù)據(jù)值的計算結(jié)果。
在最佳實施例中,處理器包括準(zhǔn)備執(zhí)行編碼和譯碼操作的移位器和運算器(ALU)。這些是一般處理器內(nèi)的標(biāo)準(zhǔn)硬件,因而在處理器內(nèi)不需要使其能處理編碼和譯碼操作的專用硬件。然而,如果需要,可以提供專用硬件來處理編碼和/或譯碼操作。
用于存儲帶符號的n位數(shù)據(jù)值、合成值和編碼結(jié)果的存儲器可以采用不同形式的器件、例如存儲器或寄存器存儲體,并且甚至不同的物理存儲器元件也可以用于存儲帶符號的n位數(shù)據(jù)值、合成值以及編碼結(jié)果。然而,在最佳實施例中,存儲器是所述處理器用于存儲數(shù)據(jù)值的寄存器存儲體。因此,在執(zhí)行編碼操作之前有關(guān)的帶符號的n位數(shù)據(jù)值將從存儲器讀入寄存器存儲體,然后,在寄存器存儲體中通過對數(shù)據(jù)值的合適操作而進行編碼操作、算術(shù)運算操作和譯碼操作。
從第三方面看,本發(fā)明提供了一種準(zhǔn)備對多個(‘p’個)帶符號的“n位”數(shù)據(jù)值執(zhí)行算術(shù)運算的數(shù)據(jù)處理系統(tǒng)的編碼/譯碼管理器,所述編碼/譯碼管理器準(zhǔn)備在應(yīng)用算術(shù)運算之前由數(shù)據(jù)處理系統(tǒng)將多個帶符號的“n位”數(shù)據(jù)值編碼為合成值,以便產(chǎn)生編碼記果,并且接著對編碼結(jié)果譯碼以便產(chǎn)生p個最后結(jié)果,編碼/譯碼管理器包括編碼器,它配置成工作時通過執(zhí)行與將每一個帶符號的數(shù)據(jù)值與各自的n位域?qū)R等效的編碼操作、將每一個帶符號的數(shù)據(jù)值用符號擴展為合成值的最高有效位、以及把對齊的和用符號擴展過的數(shù)據(jù)值相加而將多個帶符號的n位數(shù)據(jù)值編碼為包括p個n位域的合成值;以及譯碼器,它配置成工作時通過應(yīng)用與從編碼結(jié)果的每一個n位域提取數(shù)據(jù)及校正在編碼期間由相鄰的符號擴展過的數(shù)據(jù)值相加而產(chǎn)生的任何影響等效的譯碼操作,產(chǎn)生p個最后結(jié)果;從而,每一個最后結(jié)果代表把算術(shù)運算用于相應(yīng)的帶符號的n位數(shù)據(jù)值的計算結(jié)果。
從第四方面看,本發(fā)明提供一種在計算機可讀存儲器上的計算機程序產(chǎn)品,用于在算術(shù)運算執(zhí)行前控制數(shù)據(jù)處理系統(tǒng)對多個(“p”個)帶符號的“n位”數(shù)據(jù)值編碼為合成值、以便產(chǎn)生編碼結(jié)果,并且緊接著對編碼結(jié)果譯碼產(chǎn)生p個最后結(jié)果,計算機程序產(chǎn)品包括編碼器,它配置成工作時通過執(zhí)行與將每一個帶符號的數(shù)據(jù)值與各自的n位域?qū)R等效的編碼操作、對每一個帶符號的數(shù)據(jù)值用符號擴展為合成值的最高有效位、以及把對齊的和用符號擴展過的數(shù)據(jù)值相加而將多個帶符號的n位數(shù)據(jù)值編碼為包括p個n位域的合成值;以及譯碼器,它配置成工作時通過應(yīng)用與從編碼結(jié)果的每一個n位域提取數(shù)據(jù)并校正在編碼期間由相鄰的符號擴展過的數(shù)據(jù)值相加而產(chǎn)生的任何影響等效的譯碼操作,產(chǎn)生所述p個最后結(jié)果;從而,每一個最后結(jié)果代表把算術(shù)運算用于相應(yīng)的帶符號的n位數(shù)據(jù)值的計算結(jié)果。
附圖簡述下面,將參照附圖中說明的最佳實施例、僅以舉例的方式進一步說明本發(fā)明,附圖中

圖1是說明本發(fā)明實施例中用于編碼和譯碼操作的處理器核心元件的方框圖;圖2是說明按照本發(fā)明第1實施例的編碼操作的流程圖;圖3是說明按照本發(fā)明第2實施例的編碼操作的流程圖;以及圖4是說明按照本發(fā)明最佳實施例的譯碼操作的流程圖。
最佳實施例的描述圖1是說明按照本發(fā)明實施例對多個(p個)帶符號的n位數(shù)據(jù)值執(zhí)行算術(shù)運算的標(biāo)準(zhǔn)處理器的核心部件10的方框圖。由核心部件10執(zhí)行的指令通過路徑70進入指令流水線80。而且,由處理器核心使用的數(shù)據(jù)值裝入寄存器存儲體20,一般來說它包括多個寄存器。在圖1中,數(shù)據(jù)值從高速緩沖存儲器30,通過路徑35裝入寄存器20,但是將可以看到,數(shù)據(jù)值并不需要直接從高速緩沖存儲器30裝入,而可以用另一種方法從由包含處理器核心10的數(shù)據(jù)處理系統(tǒng)提供的其它存儲器裝入。
在圖1中,寄存器20表示為多個寄存器,每一個寄存器有32位長,且包括4個8位域。然而,寄存器并不必是32位長,而可以使用具有64位和128位長的其它一般寄存器。
指令譯碼器40被安排來從指令流水線80讀取指令,并將這些指令譯碼成為由處理器核心內(nèi)的硬件應(yīng)用的操作。因此,作為一個例子,如果指令譯碼器40將要求執(zhí)行移位操作的指令譯碼,那么,它將提供一個信號給移位邏輯電路60,通知移位邏輯電路執(zhí)行所需的移位操作。而且,它將把信號傳送給寄存器存儲體20,使操作數(shù)的數(shù)據(jù)值從寄存器存儲體輸出到移位邏輯電路60。一般地說,一旦操作數(shù)的數(shù)據(jù)值被移位,則被移位的值將通過移位邏輯電路60返回給寄存器存儲體20,并將它存儲在所述各寄存器之一中。
類似地,如果指令譯碼器40對算術(shù)運算、例如乘法或加法譯碼,那么它將把信號傳送給運算器(ALU)50,使ALU執(zhí)行所需的算術(shù)運算。而且,它將與寄存器存儲體20聯(lián)系,使所需的操作數(shù)的數(shù)據(jù)值從寄存器存儲體20傳送到ALU50,并且繼續(xù)完成算術(shù)運算。一般地說,ALU50將把結(jié)果數(shù)據(jù)值送回寄存器存儲體20存儲。
以上對圖1的討論用來提供舉例說明的處理器核心10的標(biāo)準(zhǔn)元件的操作綜述。按照本發(fā)明的最佳實施例,該標(biāo)準(zhǔn)核心10是對多個帶符號的n位數(shù)據(jù)值執(zhí)行算術(shù)運算,而且,將參考圖2到圖4更詳細地討論在最佳實施例中用于實現(xiàn)該目的的技術(shù)。
最佳實施例使用的技術(shù)應(yīng)用于2進制補碼格式的帶符號的數(shù)據(jù)值,這是一些帶符號位的數(shù)據(jù)值,允許其值為正值或負值。因此,考慮一個帶符號的8位數(shù)據(jù)值的例子,其值可以在-128到+127的數(shù)值范圍內(nèi)。
根據(jù)本發(fā)明第1實施例中使用的編碼技術(shù),帶符號的數(shù)據(jù)值是“用符號擴展的”??紤]一個16位數(shù)據(jù)值的例子,該例子可以通過把符號位(考慮16位數(shù)據(jù)值的例子,即位15)的16個拷貝放置在位16到31來用符號擴展為例如,32位數(shù)據(jù)值。所以,例如,16位帶符號的值-32767在十六進制表示法中就為0x8001,符號“0x”標(biāo)識該表示法為十六進制。通過用符號擴展把該數(shù)擴展為32位,它就變成了0xFFFF8001,由于十六進制的數(shù)值“8”在二進制中表示16位數(shù)值中的4個最高有效位為“1000”,因而,其符號位為“1”。
根據(jù)本發(fā)明的最佳實施例,多個帶符號的n位數(shù)據(jù)值,在算術(shù)運算執(zhí)行前被編碼。在本發(fā)明第一實施例中使用的編碼技術(shù),將參照圖2作進一步討論。在步驟200,多個n位數(shù)據(jù)值從高速緩沖存儲器30裝入預(yù)先確定的寄存器存儲體20中的寄存器。然后,在步驟210,每一個帶符號的數(shù)據(jù)值都用符號擴展為“m”位,其中m是用于對多個n位數(shù)據(jù)值編碼為合成值的長度。用符號擴展的過程可以由ALU50或移位邏輯60執(zhí)行。這些用符號擴展的數(shù)據(jù)值最好存儲在寄存器存儲體的“m”位寄存器中。
在步驟220,第1個n位數(shù)據(jù)值被分配給合成值的n個最低有效位。然后,在步驟230,變量x被設(shè)置為1,并且在步驟240,下一個用符號擴展的n位數(shù)據(jù)值,通過移位邏輯60從寄存器存儲體20中它的寄存器取出,并且左移xn位。在該階段,最好把移位的數(shù)據(jù)值寫回到寄存器存儲體20中選中的寄存器。
在這步驟之后,過程執(zhí)行步驟250,確定xn的數(shù)值是否等于m。該計算能有效地確定被編碼為合成值的所有n位數(shù)據(jù)值是否被移位,以便將它們與合成值中它們各自的n位域?qū)R。如果xn不等于m,那么,過程就執(zhí)行步驟260,x增1,且過程返回步驟240。取出x的新增1的值,然后,下一個n位數(shù)據(jù)值被左移xn位,并且對于每一個n位值,該過程按順序重復(fù)直到xn等于m。在該階段,所有的n位數(shù)據(jù)值將用符號擴展為m位,并且移位,使之與合成值的各自的n位域?qū)R。因此,在步驟270,這些用符號擴展并移位過的數(shù)據(jù)值由ALU50從寄存器存儲體20取出,并相加在一起構(gòu)成合成值。然后,把該結(jié)果輸出給寄存器存儲體20存儲在分配給保存合成值的寄存器中。這時,編碼操作完成,因而過程執(zhí)行步驟280,結(jié)束編碼操作。
本專業(yè)的技術(shù)人員將懂得,序列操作并不需要象圖2所說明的完全相同的順序執(zhí)行。例如,為了使每一個n位數(shù)據(jù)值與分配給合成值的寄存器的各自的n位域?qū)R,由步驟220到260概括的移位過程可以在數(shù)據(jù)值的任何符號擴展之前執(zhí)行。在這種情況下,一旦所有的數(shù)據(jù)值都與它們各自的n位域?qū)R后,那么,每一個數(shù)據(jù)值就用符號擴展為合成值的最高有效位(即,對于長度為m,并由0到m-1位組成的合成值,那么每一個數(shù)據(jù)值都將用符號擴展到m-1位)。然后,用符號擴展操作之后,過程將執(zhí)行步驟270,這時,各數(shù)值相加在一起。
而且,每一次數(shù)據(jù)值被符號擴展和移位都可以執(zhí)行一次加法,而不是把加法步驟留到結(jié)束之前。例如,當(dāng)?shù)诙€數(shù)據(jù)值左移n位并用符號擴展時,那么就可以在對第3個數(shù)據(jù)值用符號擴展和移位前把它直接加到第1個用符號擴展的數(shù)據(jù)值中。這時,當(dāng)?shù)?個數(shù)據(jù)值用符號擴展和左移2n位時,那么,該數(shù)值就可以加到前一個加法結(jié)果中去,等等,直到所有n位數(shù)據(jù)值都被編碼為合成值為止。
為了進一步說明參照圖2描述的編碼技術(shù),現(xiàn)在考慮一個例子,其中兩個16位數(shù)值a和b被編碼成32位的字c。該編碼可用下述方程表示c=SignExtend(a)+(b<<16)因此,a首先用符號擴展為32位,然后,b被加到用符號擴展過的a的高16位上。在最佳實施例中,如果a是正數(shù),那么,符號位(即第15位)將為0,并且因而用符號擴展將包括把多個0加到16到31的各位中去。因此,該過程不會對c的高16位中表示的b的數(shù)值產(chǎn)生影響。然而,如果a為負值,那么,符號位為1,并且因而幾個1將被加到16到31的各位中去。這就是說,如果a為負,則當(dāng)編碼到c中時,b就會實際上遞減1。例如,若a=-2,而b=10,那么c=-2+(10<<16),即等于0x0009FFFE。因此可見,低16位仍然表示-2,但是,高16位則表示+9,而不是所期望的+10。
可以看出,只要編碼產(chǎn)生了一個與參照圖2說明的過程等價的合成值,執(zhí)行的編碼過程實際上就不必直接執(zhí)行用符號擴展和移位。例如,在圖3中說明了得到相同合成值的選擇編碼技術(shù)。根據(jù)圖3的過程,被編碼為合成值的p個n位的數(shù)據(jù)值首先裝入為合成值分配的m位寄存器的連續(xù)的n位域中,其中m=pxn。所以,如果合成值表示為4個8位的數(shù)據(jù)值,那么,m=32,而合成值將存儲在一個32位的寄存器中。在該階段,由于數(shù)據(jù)值將用先有技術(shù)的SIMD方法,所以它們將組合成每一個數(shù)據(jù)值都放置寄存器中各自的n位域中,而且相互沒有數(shù)據(jù)值重疊。
然而,根據(jù)該實施例的編碼技術(shù),該過程然后執(zhí)行步驟310,其中變量x設(shè)置為p-1。然后,在步驟320,判斷在第x個n位域中的數(shù)據(jù)值是否為負。這樣,考慮上述例子,其中4個8位數(shù)據(jù)值被編碼為合成值,然后,第1次迭代,在步驟320中判斷第3個n位域是否為負。若該域不為負,那么,正如前面討論的,那個數(shù)據(jù)值不會對合成值中的其他數(shù)據(jù)值產(chǎn)生影響,這樣,該過程將直接執(zhí)行步驟340,判斷變量x是否等于1。如果x確實等于1,那么,編碼過程結(jié)束,并且因此執(zhí)行步驟360,結(jié)束編碼操作。然而,如果x不等于1,那么過程執(zhí)行步驟350,x增1,然后返回步驟320。
在步驟320,如果判定在第x個n位域中的數(shù)據(jù)值為負,那么,過程執(zhí)行步驟330,其中1與第x+1個n位域?qū)R,并且從寄存器的內(nèi)容中減去它。所以,考慮上述例子,如果在第二次迭代中,判定第2個n位域的數(shù)據(jù)值為負,那么,在步驟330,邏輯值1就與第3個n位域中的數(shù)據(jù)值的最低有效位對齊,然后,從寄存器的內(nèi)容中減去它。
在步驟340,該過程重復(fù)執(zhí)行,直到確定x=1時為止,這時表示復(fù)合值的n個最低有效位的數(shù)據(jù)值的符號將被鑒定,并將執(zhí)行所需要的減法。然后,過程執(zhí)行步驟360,結(jié)束編碼操作。
一旦編碼過程被執(zhí)行,那么,m位合成值就可以用于為處理n位數(shù)據(jù)值而設(shè)計的算法中,并且考慮一個4個8位數(shù)據(jù)值編碼為32位合成值的例子,那就可以利用32位寄存器的標(biāo)準(zhǔn)8位算法用于合成值,而不必采用任何考慮到合成值實際上將4個較小的數(shù)據(jù)值編碼這一事實而需要的專用硬件。因此,可以看到,以上說明的專用編碼技術(shù)允許像SIMD指令一樣使用常規(guī)指令,但是,不需要增加處理SIMD指令的專用硬件。這就發(fā)現(xiàn),假如被編碼為合成值的單個的n位數(shù)值不會出現(xiàn)上溢和下溢的話,該算法就可以直接用于它們,而不是用于合成值。
作出以上進行的討論之后,很明顯,由于用符號擴展,編碼步驟在除第1個域外的每一個域都可以至多遞減1。雖然這可能使帶有最小負值的域產(chǎn)生下溢,但這無關(guān)緊要。例如,如果前面的16位域為正值,那么,當(dāng)前域表示的值-32768...32768是不會改變的,而如果前面的域為負,則在當(dāng)前域中,-32768將由+32767表示,并在當(dāng)前域中-32767...32767表示為-32768...32766。所以,這種編碼并不丟失在每一個域中表示所有可能的值的能力,并且編碼步驟之后執(zhí)行譯碼的結(jié)果是返回一個未改變的原始數(shù)值。如果其值為負,則編碼方案可看作為一個域從下一個域“借”一個“1”。如果一個域的符號從正變?yōu)樨撝?,則該域就從另一方向的下一個域借1(而在解碼期間則不借)。
為了證明該編碼技術(shù)可行,將應(yīng)用以下說明,把兩個數(shù)值編碼為一個編碼值,然后把它們相加。將要說明,對單個加法的編碼結(jié)果與對原始數(shù)值兩次單獨的相加得到的結(jié)果相同。該證明很容易推廣到多個數(shù)值的情況。同樣,根據(jù)加法的證明,可以導(dǎo)出乘以一個常數(shù)和左移位(與乘以一個2的正冪指數(shù)等效)的情況。雖然對正確的理解編碼和譯碼步驟并不需要這個證明,但是它證明用于編碼數(shù)值中的算術(shù)運算確實能產(chǎn)生有用結(jié)果,使得本發(fā)明具有實用價值。
首先,數(shù)值A(chǔ)、B定義為將編碼操作分別用于A1、A2和B1、B2得到的結(jié)果。R是把算術(shù)的加法運算用于A和B得到的結(jié)果,而R1和R2是對R譯碼后得到的結(jié)果。
我們的目的是證明R1=A1+B1及R2=A2+B2。
A=編碼(A1,A2)
B=編碼(B1,B2)R=A+BR1,R2=譯碼(R)兩個符號擴展數(shù)值在范圍[-N/2..N/2-1]內(nèi)的編碼定義為編碼(X,Y)=X+Y*N其中N為2的冪指數(shù)(log(N)是域的位寬)。
譯碼就是對編碼的逆變換,數(shù)學(xué)上把它定義為譯碼1(Z)=SEXT(Z mod N)譯碼2(Z)=SEXT((Z/N)+((Z mod N)/(N/2)))譯碼(Z)=譯碼1(Z),譯碼2(Z)用“/”表示的除法運算符規(guī)定為整數(shù)除法并四舍五入到負無窮大。
表示模運算的“mod”返回相除得到的余數(shù),模運算的結(jié)果總是具有與分母相同的符號,并且其數(shù)值范圍從0到分母減1(因此,B*(A/B)+A mod B=A與A的符號無關(guān)。
用“SEXT”表示的符號擴展運算符將log(N)位數(shù)值用符號擴展到范圍[-(N/2)..(N/2)-1]中的帶符號值的整個寬度。假設(shè),SEXT(Xmod N)=SEXT(X),即如果X在符號擴展前已超出了有效的數(shù)值范圍,那么只有X的log(N)位表示X,在數(shù)值范圍內(nèi)構(gòu)成符號擴展數(shù)值。同樣可以斷言,如果X處于范圍[-(N/2)..(N/2)-1]內(nèi),則SEXT(X)=X。
首先,證明譯碼(編碼())對在規(guī)定范圍內(nèi)的數(shù)值是恒等的。我們將此證明分成三部分,一個用于第一編碼值而二個用于第二編碼數(shù)值,并且分別證明對于第1個值為正或為負的情況。
證明X=譯碼1(編碼(X,Y)譯碼1(編碼(X,Y))==對譯碼1(X+Y*N)的編碼的定義==譯碼1的定義SEXT((X+Y*N)mod N)
==算術(shù)運算(X+Y*N)mod N=X mod N SEXT(X mod N)==算術(shù)運算X mod N=X(因為X在
中)SEXT(X)==SEXT定義X證明若X為正,則Y=譯碼2(編碼(X,Y))譯碼2(編碼(X,Y))==對譯碼2(X+Y*N)的編碼的定義==譯碼2的定義SEXT((X+Y*N)/N+(((X+Y*N)mod N)/(N/2)))==算術(shù)運算(X+Y*N)mod N==X mod NSEXT((X+Y*N)/N+((X mod N)/(N/2)))==算術(shù)運算(X+Y*N)/N==Y(jié) mod N,因為X在
中(X不改變Y)SEXT(Y mod N+((X mod N)/(N/2)))==算術(shù)運算X在
中,所以X mod N==XSEXT(Y mod N+(X/(N/2)))==算術(shù)運算X在
中,所以X/N==0SEXT(Y mod N)==SEXT定義Y證明若X為負,則Y=譯碼2(編碼(X,Y))譯碼2(編碼(X,Y))==對譯碼2(X+Y*N)的編碼的定義==譯碼2的定義SEXT((X+Y*N)/N+(((X+Y*N)mod N)/(N/2)))==算術(shù)運算(X+Y*N)mod N==X mod NSEXT((X+Y*N)/N+((X mod N)/(N/2)))==算術(shù)運算(N+Y*N)/N==(Y-1)mod N,因為X在[-(N/2)..-1]中(X向Y借1)
SEXT((Y-1)mod N+((X mod N)/(N/2)))==算術(shù)運算X在[-(N/2)..-1]中,所以X mod N==X+NSEXT((Y-1)mod N+((X+N)/(N/2)))==算術(shù)運算X+N在[N-(N/2)..N-1]中且N為偶數(shù),所以(X+N)/(N/2)==1SEXT((Y-1)mod N+1)==SEXT的定義SEXT(((Y-1)mod N+1)mod N)==算術(shù)運算(A mod N)mod N==A(雙重求模是多余的)SEXT(Y mod N)==SEXT定義Y現(xiàn)在可以證明,若相加不溢出,則R1=A1+A2和R2=B1+B2R1,R2==譯碼(R)的R1、R2定義==譯碼(A+B)的R定義==譯碼(編碼(A1,A2)+編碼(B1,B2))的A和B定義==對譯碼((A1+A2*N)+(B1+B2*N)的編碼的定義==+和*譯碼((A1+B1)+(A2+B2)*N)的可交換性==對譯碼(編碼(A1+B1,A2+B2)的編碼的定義==若數(shù)值處于范圍內(nèi),則譯碼(編碼)相同(這就是如果A1+B1或A2+B2不溢出的情況)A1+B1,A2+B2遵循以上限制的算法不需修改就可以應(yīng)用,并得到作為編碼成合成值的數(shù)據(jù)值的正確操作結(jié)果,因此,實行一次算術(shù)運算或一系列算術(shù)運算所要做的只是進行校正由原始編碼產(chǎn)生的任何影響用的譯碼操作。對于在本發(fā)明最佳實施例中校正編碼期間產(chǎn)生的這些影響用的譯碼操作將參照圖4加以說明。
在步驟400,變量x設(shè)置為1。然后,在步驟410,判斷在第x個n位域中的數(shù)據(jù)值是否為負。這樣,在第一次迭代中,判斷表示合成值的n個最低有效位的第1個n位域是否為負。如果該數(shù)據(jù)值為負,那么,過程執(zhí)行步驟420,其中數(shù)值1與第x+1個n位域?qū)R,然后,把它加到寄存器的內(nèi)容中。因此,作為例子,如果第1個n位域為負,那么,數(shù)值1與第2個n位域的最低有效位對齊,然后把它加到寄存器內(nèi)容中。然后,過程執(zhí)行步驟430,判斷是否x=p-1。在步驟410中,如果確定了第x個n位域不為負,那么過程直接執(zhí)行步驟430,而不是步驟420。
如果x不等于p-1,那么過程執(zhí)行450,x增1,然后返回步驟410。而后,該過程重復(fù),一直到確定x確實等于p-1止,這時,譯碼過程完成,因而執(zhí)行步驟440,結(jié)束譯碼操作。
考慮前面的例子,兩個16位數(shù)值a和b被編碼為32位的合成值c,然后,以下的C語言代碼段就可以用于產(chǎn)生圖4所述的譯碼操作(假設(shè)使用ANSI標(biāo)準(zhǔn))a=c&65535;∥提取aif(a<0)c+=1<<16;∥恢復(fù)由負數(shù)a引起的增量b=c>>16;∥提取b數(shù)值65535具有設(shè)置為1的最低有效16位,以及設(shè)置為0的最高有效16位。因此,當(dāng)基于c的輸入和65535應(yīng)用AND運算時,數(shù)值65535能有效地作為掩膜,使得輸出為數(shù)值a。正如上述計算中的第2行所說明的,如果這時判斷a小于0(即負數(shù)),那么,c就變?yōu)榈扔赾+(左移16位的1)。因此,這就把1加到包含b的合成值的域的最低有效位。為了提取b,這時,所要做的事情就是將c右移16位,并把結(jié)果輸出,這樣就能校正b的值。
討論了最佳實施例的編碼和譯碼技術(shù)后,現(xiàn)在,參照最佳實施例,根據(jù)以下代碼討論一個實例,證明4個8位帶符號的整數(shù)怎樣才能組裝成32位的整數(shù)和從32位整數(shù)分解為4個8位的整數(shù)。該例子包括,把數(shù)值添加到4個數(shù)組中,首先使用在每一個數(shù)組中的數(shù)值都被分別加在一起的標(biāo)準(zhǔn)方法,然后參照本發(fā)明最佳實施例使用的方法。
下述C語言代碼說明本發(fā)明最佳實施例中使用的編碼操作,其中32位寄存器包括4個獨立的8位值,而寄存器的內(nèi)容經(jīng)處理產(chǎn)生編碼的合成值。
#inclnde<stdio.h>∥以下兩行取決于編譯器 typedef signed char int8;∥這定義一個帶符號的8位數(shù)的類型“int8” typedef int word;∥這定義一個32位帶符號整數(shù)的類型 “word”∥將包含4個獨立的8位數(shù)值的32位編碼為4個組合值word符號_編碼(word x) {x-=(x<<1)&(1<<24);∥若為負則減1x-=(x<<1)&(1<<16);x-=(x<<1)&(1<<8);return x; }考慮方程x-=(x<<1)&(1<<24),AND運算(x<<1)和(1<<24)會導(dǎo)致與邏輯值1的AND運算的第3個n位域中的數(shù)據(jù)值的最高有效位(即符號位),正如以上討論的,如果數(shù)據(jù)值為正它將產(chǎn)生一個0,而如果數(shù)據(jù)值為負,則產(chǎn)生1。移位引起的結(jié)果,實際上將與第4個8位域中的數(shù)據(jù)值的最低有效位重合,并且該方程規(guī)定x為x減去AND運算的結(jié)果。因此,可以看到,如果在第3個8位域中的數(shù)據(jù)值為負,這樣做的結(jié)果為從32位寄存器內(nèi)容中減去與第4個8位域?qū)R的數(shù)值1。也可以看到,以下兩個方程執(zhí)行類似的減法,但是所述1分別與第3個和第2個n位域?qū)R。
以下代碼說明把32位寄存器的內(nèi)容轉(zhuǎn)換為包含有4個獨立結(jié)果的數(shù)據(jù)值的合適的譯碼操作∥把包含4個組合的8位值的32位的字譯碼為4個獨立的值 word符號_譯碼(word x) { x+=(x<<1)&(1<<8);∥若為負則加1 x+=(x<<1)&(1<<16); x+=(x<<1)&(1<<24); return x; }從前面對編碼過程進行的討論可以看到,上述譯碼方程得到的1被加回到寄存器的內(nèi)容中,以便校正由編碼操作產(chǎn)生的任何影響。
以下代碼表示另一種供選擇的編碼技術(shù),其中將4個8位帶符號的數(shù)值組合成32位的字∥將4個8位帶符號的數(shù)值組合成32位的字word pack(int8a,int8b,int8c,int8d){return(word)a+((word)b<<8)+((word)c<<16)+((word)d<<24);}
根據(jù)上述方程,數(shù)值a、b、c和d首先用符號擴展為一個字(即38位)的長度,然后將數(shù)值b左移8位,數(shù)值c左移16位,以及數(shù)值d左移24位,然后通過把符號擴展的和移位后的數(shù)值加在一起,組合構(gòu)成字。
通過以下代碼舉例說明產(chǎn)生4個分開的數(shù)據(jù)值的合適的譯碼操作∥將32位的字分開為4個8位帶符號的數(shù)值Void unpack(word x,int8*a,int*b,int8*c,int8*d){x=sign_decode(x);*a=x;*b=x>>8;*c=x>>16;*d=x>>24;}根據(jù)上述方程,首先應(yīng)用按照本發(fā)明最佳實施例的譯碼操作將32位的字譯碼,然后將該字右移位,以便在分別將該值存儲在由指針a、b、c和d指定的存儲器位置之前,使第i個8位域與低8位對齊。
以下代碼是既利用以上說明的標(biāo)準(zhǔn)方法又利用本發(fā)明最佳實施例的方法進行多個數(shù)值相加的例子#define SIZE8∥定義每個數(shù)組包含8個數(shù)值int8A[SIZE],B[SIZE],C[SIZE],D[SIZE];∥定義數(shù)組A,B,C和D包含有8位的整數(shù)word E[SIZE];∥定義數(shù)組E包含字(即32位)int8 serial_sum8(int8*p);∥定義8位整數(shù)的序列求和操作{
return p
+p[1]+p[2]+p[3]+p[4]+p[5]+p[6]+p[7];}word parallel_sum8(word*p)∥定義32位字的并行求和操作{return p
+p[1]+p[2]+p[3]+p[4]+p[5]+p[6]+p[7];}int main(void)∥程序開始{int i;∥定義變量“i”int8 resa,resb,resc,resd;∥定義求得的結(jié)果resa,resb,resc,resd為8位整數(shù)word res;∥定義求得的結(jié)果“res”為32位的字∥初始化A、B、C和Dfor(i=0;i<SIZE;i++)∥為了說明起見,定義循環(huán)for i=oto SIZE,以便給數(shù)組A,B,C和D產(chǎn)生任意內(nèi)容{A[i]=i-10;B[i]=-i*3+10;C[i]=i+5;D[i]=i*i-5*i+1;}∥標(biāo)準(zhǔn)方法rsa=serial_sum8(A);resb=serial_sum8(B);resc=serial_sum8(C);
resd=serial_sum8(D);printf(“Results 1%d%d%d%d\n”,resa,resb,resc,resd);∥最佳實施例的方法for(i=0;i<SIZE;i++)E[i]=pack(A[i],B[i],C[i],D[i]);∥首先使用本發(fā)明的編碼技術(shù)組合數(shù)據(jù)res=parallel_sum8(E);unpack(res,&resa,&resb,&resc,&resd);printf(“Results2%d%d%d%d\n”,resa,resb,resc,resd);return 1;}如果運行以上兩個程序代碼,標(biāo)準(zhǔn)方法和最佳實施例方法的輸出結(jié)果是相同的。然而,標(biāo)準(zhǔn)方法需要作28次加法,而最佳實施例方法只需要7次加法。然而,組合和分開的加法運算大約100次,所以,當(dāng)處理的問題相當(dāng)復(fù)雜時就可以獲得了最好的效益。在8x8的DCT中,由于每64個數(shù)據(jù)值需要執(zhí)行大約450次加法,所以獲得了顯著的效益。
以上進行的說明清楚地表明,本發(fā)明的最佳實施例允許在合成值上使用非SIMD指令(即標(biāo)準(zhǔn)指令),并且對于被譯碼的結(jié)果產(chǎn)生一組與將該算法單個應(yīng)用于構(gòu)成數(shù)據(jù)值的每一個成份等價的結(jié)果。這導(dǎo)致有效提高了處理速度。該技術(shù)找到了一個特別有效的特殊領(lǐng)域就是JPEG或MPEG的數(shù)據(jù)壓縮和去壓縮領(lǐng)域,其中許多DCT運算需要執(zhí)行,每一個DCT運算都由在帶符號的數(shù)據(jù)上執(zhí)行的一系列加法和乘法組成。例如,一般的DCT可以在8位帶符號的數(shù)據(jù)上執(zhí)行,并得到一個16位的輸出。通過對中間結(jié)果做合適的比例轉(zhuǎn)換,就能在使用16位帶符號的整數(shù)時,精確計算DCT。通過使用本發(fā)明最佳實施例的該技術(shù),應(yīng)用標(biāo)準(zhǔn)的32位算術(shù)指令,可以在32位處理器上并行執(zhí)行兩個16位的DCT計算。執(zhí)行預(yù)處理步驟以便將用于兩個DCT計算的數(shù)據(jù)編碼為一個合成值,然后,就可毫無改變的把常規(guī)DCT算法用于計算。這樣,結(jié)果就被譯碼為兩個DCT結(jié)果。由于編碼和譯碼操作都是特別有效的運算(使用ARM處理器核心,一條指令要求編碼(ADD C,A,B,LSL#16)并且有三條指令要求譯碼(MOVS B,C,ASR#16,ADC B,B,#0,接下來是SUB A,C,B,LSL#16)),并且確實在JPEG組合時可以自由操作,還發(fā)現(xiàn),DCT的計算速度將提高近兩倍。
雖然這里說明了一個具體的實施例,下面將指出,本發(fā)明并不局限于此,在本發(fā)明的范圍內(nèi)還可作許多修改和添加。例如,在不脫離本發(fā)明的范圍的情況下,可以把以下各從屬權(quán)利要求的特征與各獨立權(quán)利要求的特征作各種組合。
權(quán)利要求
1.一種操作數(shù)據(jù)處理系統(tǒng)對多個(“p”個)帶符號的“n位”數(shù)據(jù)值執(zhí)行算術(shù)運算的方法,它包括以下步驟通過執(zhí)行使每一個帶符號數(shù)據(jù)值與各自的n位域?qū)R等效的編碼操作,將多個帶符號的n位數(shù)據(jù)值編碼為包括p個n位域的合成值,將每一個帶符號的數(shù)據(jù)值用符號擴展為合成值的最高有效位,以及將對齊的和用符號擴展過的數(shù)據(jù)值相加以便形成合成值;把所述算術(shù)運算用于所述合成值以便產(chǎn)生包括p個n位域的編碼結(jié)果;以及通過應(yīng)用與從編碼結(jié)果的每一個n位域中提取數(shù)據(jù)等效的譯碼操作以及校正在編碼步驟中由將相鄰的符號擴展過的數(shù)據(jù)值相加引起的任何影響,對所述編碼結(jié)果譯碼,產(chǎn)生p個最后結(jié)果,從而,每一個最后結(jié)果代表將所述算術(shù)運算應(yīng)用于相應(yīng)的帶符號的n位數(shù)據(jù)值的結(jié)果。
2.權(quán)利要求1的方法,其特征在于所述編碼操作包括以下步驟將所述多個n位數(shù)據(jù)值分配給一個中間值的各個n位域,其中,第1個n位域包括中間值的n個最低有效位,而第p個n位域包括中間值的n個最高有效位;對于第p-1個到第1個n位域,從第p-1個n位域開始,判斷那個n位域中的數(shù)據(jù)值是否為負,如果為負,則通過從所述中間值減去與表示n個最高有效位的相鄰的n位域?qū)R的邏輯1的值,產(chǎn)生一個新的中間值;使得當(dāng)所述第1個n位域被處理后,所述中間值就是所述合成值。
3.權(quán)利要求1或2的方法,其特征在于所述編碼結(jié)果的第1個n位域包括所述編碼結(jié)果的n個最低有效位,而所述編碼結(jié)果的第p個n位域包括所述編碼結(jié)果的n個最高有效位,所述譯碼操作包括以下步驟對于所述第1個n位域到所述第p-1個n位域,從所述第1個n位域開始,判斷那個n位域中的數(shù)據(jù)是否為負,如果為負,則通過將與代表n個最高有效位的鄰接的n位域?qū)R的邏輯1的值加到所述編碼結(jié)果以便產(chǎn)生一個新的編碼結(jié)果;使得當(dāng)所述第p-1個n位域被處理后,每一個n位域都包含所述p個最后結(jié)果中的一個。
4.前面任一個權(quán)利要求的方法,其特征在于所述算術(shù)運算是對一個或多個合成值的操作,每一個合成值將多個帶符號的n位數(shù)據(jù)值編碼,并且每一個合成值都是通過把所述編碼步驟用于相應(yīng)的多個帶符號的n位數(shù)據(jù)值產(chǎn)生的。
5.前面任一個權(quán)利要求的方法,其特征在于所述算術(shù)運算包括多種運算。
6.前面任一個權(quán)利要求的方法,其特征在于所述帶符號的數(shù)據(jù)值是2進制補碼格式。
7.前面任一個權(quán)利要求的方法,其特征在于所述算術(shù)運算包括一個或多個離散余弦變換(DCT)運算,每一個DCT運算都是一個或多個合成值的函數(shù),每一個合成值將一個或多個帶符號的n位數(shù)據(jù)值編碼,并且每一個合成值都是通過把所述編碼步驟用于相應(yīng)的多個帶符號的n位數(shù)據(jù)值產(chǎn)生的。
8.權(quán)利要求7的方法,其特征在于所述一個或多個DCT運算執(zhí)行JPEG或MPEG數(shù)據(jù)壓縮或去壓縮,要求應(yīng)用。
9.一種用于對多個(‘p’個)帶符號的“n位”數(shù)據(jù)值執(zhí)行算術(shù)運算的數(shù)據(jù)處理系統(tǒng)包括應(yīng)用所述算術(shù)運算的處理器;用于存儲所述多個帶符號的n位數(shù)據(jù)值的存儲器;在執(zhí)行所述算術(shù)運算之前,安排所述處理器從所述存儲器中檢索所述多個帶符號的n位數(shù)據(jù)值,并且通過執(zhí)行以下操作把所述多個帶符號的n位數(shù)據(jù)值編碼為合成值執(zhí)行使每一個帶符號的數(shù)據(jù)值與各自的n位域?qū)R等效的編碼操作、把每一個帶符號的數(shù)據(jù)值用符號擴展為合成值的最高有效位、以及把對齊的和用符號擴展過的各數(shù)據(jù)值相加以便構(gòu)成合成值,然后把所述合成值存入所述存儲器;安排所述處理器把所述算術(shù)運算應(yīng)用于所述合成值,以便產(chǎn)生包括p個n位域的編碼結(jié)果,并且將所述編碼結(jié)果存入所述存儲器中;以及在應(yīng)用所述算術(shù)運算之后,安排所述處理器對所述編碼結(jié)果譯碼,通過執(zhí)行與從所述編碼結(jié)果的每一個n位域提取所述數(shù)據(jù)等價的譯碼操作以及校正由相鄰的用符號擴展的數(shù)據(jù)值的相加引起的任何影響,產(chǎn)生p個最后結(jié)果;從而,每一個最后結(jié)果代表把所述算術(shù)運算用于相應(yīng)的帶符號的n位數(shù)據(jù)值的計算結(jié)果。
10.權(quán)利要求9的數(shù)據(jù)處理系統(tǒng),其特征在于所述處理器包括安排來執(zhí)行編碼和譯碼操作的移位器和運算器(ALU)。
11.權(quán)利要求9或10的數(shù)據(jù)處理系統(tǒng),其特征在于所述存儲器是所述處理器用來存放數(shù)據(jù)值的寄存器存儲體。
12.權(quán)利要求9到11中任何一個的數(shù)據(jù)處理系統(tǒng),其特征在于所述編碼操作安排來將所述多個n位數(shù)據(jù)值分配給中間值的各自的n位域,其中,所述第1個n位域包括所述中間值的n個最低有效位,而所述第p個n位域包括所述中間值的n個最高有效位,并且所述編碼操作還被安排來對從第所述p-1個到所述第1個n位域,從所述第p-1個n位域開始判斷那個n位域中的數(shù)據(jù)值是否為負,如果為負,就通過從所述中間值減去與表示n個最高有效位的鄰接的n位域?qū)R的邏輯1的值,產(chǎn)生新的中間值,使得在所述第1個n位域被處理后,所述中間值就是所述合成值。
13.權(quán)利要求9到12中任何一個的數(shù)據(jù)處理系統(tǒng),其特征在于所述編碼結(jié)果的第1個n位域包括所述編碼結(jié)果的n個最低有效位,而所述編碼結(jié)果的第p個n位域包括所述編碼結(jié)果的n個最高有效位,并且所述譯碼操作被安排來對從所述第1個n位域到所述第p-1個n位域,從所述第1個n位域開始,判斷那個n位域中的數(shù)據(jù)是否為負,且如果為負,通過將所述編碼結(jié)果加上與表示n個最高有效位的所述相鄰的n位域?qū)R的邏輯1的值而產(chǎn)生新的編碼結(jié)果,使得在所述第p-1個n位域被處理后,每一個n位域都包含所述p個最終結(jié)果中的一個。
14.權(quán)利要求9到13中任何一個的數(shù)據(jù)處理系統(tǒng),其特征在于所述算術(shù)運算是對一個或多個合成值的操作,每一個合成值將多個帶符號的n位數(shù)據(jù)值編碼,并且每一個合成值都是通過把所述編碼操作用于相應(yīng)的多個帶符號的n位數(shù)據(jù)值而產(chǎn)生的。
15.權(quán)利要求9到14中任何一個的數(shù)據(jù)處理系統(tǒng),其特征在于所述算術(shù)運算包括多種運算。
16.權(quán)利要求9到15中任何一個的數(shù)據(jù)處理系統(tǒng),其特征在于所述帶符號的數(shù)據(jù)值具有2進制補碼格式。
17.權(quán)利要求9到16中任何一個的數(shù)據(jù)處理系統(tǒng),其特征在于所述算術(shù)運算包括一個或多個離散余弦變換(DCT)運算,每一個DCT運算都是對一個或多個合成值的運算,每一個合成值將多個帶符號的n位數(shù)據(jù)值編碼,并且,每一個合成值都是通過把所述編碼步驟應(yīng)用于所述相應(yīng)的多個帶符號的n位數(shù)據(jù)值而產(chǎn)生的。
18.一種用于數(shù)據(jù)處理系統(tǒng)的編碼/譯碼管理器,所述編碼/譯碼管理器被安排來對多個(“p”)帶符號的“n位”數(shù)據(jù)值執(zhí)行算術(shù)運算,所述編碼/譯碼管理器被安排來在應(yīng)用算術(shù)運算之前通過所述數(shù)據(jù)處理系統(tǒng)把所述多個帶符號的“n位”數(shù)據(jù)值編碼為合成值、產(chǎn)生編碼結(jié)果,接著,對所述編碼結(jié)果譯碼,產(chǎn)生p個最后結(jié)果,所述編碼/譯碼管理器包括編碼器,它配置成工作時通過執(zhí)行與將每一個帶符號的數(shù)據(jù)值與各自的n位域?qū)R等效的編碼操作、把每一個帶符號的數(shù)據(jù)值用符號擴展為合成值的最高有效位、以及將對齊的和用符號擴展過的數(shù)據(jù)值相加而將多個帶符號的n位數(shù)據(jù)值編碼為包括p個n位域的所述合成值;以及譯碼器,它配置成工作時通過應(yīng)用與從編碼結(jié)果的每一個n位域中提取數(shù)據(jù)及校正在所述編碼步驟期間由將相鄰的用符號擴展過的數(shù)據(jù)相加引起的任何影響等效的譯碼操作產(chǎn)生所述p個最后結(jié)果;從而每一個最后結(jié)果代表把所述算術(shù)運算應(yīng)用于相應(yīng)的帶符號的n位數(shù)據(jù)值的處理結(jié)果。
19.一種用于對多個(‘p’個)帶符號的“n位”數(shù)據(jù)值執(zhí)行算術(shù)運算的數(shù)據(jù)處理系統(tǒng),它基本上與上文中參照附圖所說明的一樣。
20.一種操作數(shù)據(jù)處理系統(tǒng)以便對多個(‘p’個)帶符號的n位數(shù)據(jù)值執(zhí)行算術(shù)運算的方法,它基本上與上文中參照附圖所說明的一樣。
21.一種對多個(‘p’個)帶符號的“n位”數(shù)據(jù)值執(zhí)行算術(shù)運算的數(shù)據(jù)處理系統(tǒng)的編碼/譯碼管理器,它基本上與上文參照附圖所說明的一樣。
全文摘要
本發(fā)明提供了一種對多個(‘p’個)帶符號的“n位”數(shù)據(jù)值執(zhí)行算術(shù)運算的數(shù)據(jù)處理系統(tǒng),以及操作這種數(shù)據(jù)處理系統(tǒng)的方法。本發(fā)明的技術(shù)包括通過執(zhí)行與使每一個帶符號的數(shù)據(jù)值和各自的n位域?qū)R等效的編碼操作,把多個帶符號的n位數(shù)據(jù)值編碼為包括p個n位域的合成值,將每一個帶符號的數(shù)據(jù)值用符號擴展為合成值的最高有效位,并將對齊的和用符號擴展過的數(shù)據(jù)值相加構(gòu)成合成值。然后,把算術(shù)運算用于合成值以產(chǎn)生包括p個n位域的編碼結(jié)果,該編碼結(jié)果通過應(yīng)用與從編碼結(jié)果的每一個n位域中提取數(shù)據(jù)及校正在編碼步驟期間、由將相鄰的用符號擴展過的數(shù)據(jù)相加引起的任何影響等效的譯碼操作而被譯碼、產(chǎn)生p個最后結(jié)果,從而每一個最后結(jié)果代表把算術(shù)運算應(yīng)用于相應(yīng)的帶符號的n位數(shù)據(jù)值的處理結(jié)果。根據(jù)本發(fā)明,兩個或兩個以上帶符號的數(shù)據(jù)值被編碼為合成值,然后像利用SIMD指令一樣利用標(biāo)準(zhǔn)指令對合成值進行處理。通過對帶符號的數(shù)據(jù)值的特殊編碼,就能夠避免在兩個相鄰的數(shù)據(jù)值之間出現(xiàn)上溢或下溢的問題。由于這種編碼能夠應(yīng)用標(biāo)準(zhǔn)指令,因此,可以實現(xiàn)應(yīng)用SIMD指令的擴展的許多益處,而不需要額外的硬件和SIMD所需要的新的指令。
文檔編號G06F9/302GK1326566SQ9981342
公開日2001年12月12日 申請日期1999年9月30日 優(yōu)先權(quán)日1998年11月20日
發(fā)明者W·迪克斯特拉 申請人:Arm有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1