專利名稱:用于校準的單指令多數(shù)據(jù)的通用寄存器文件結(jié)構(gòu)的制作方法
數(shù)字信號處理器(DSP)可用于多種多媒體應(yīng)用,例如數(shù)字視頻、圖像和音頻。DSP能夠處理數(shù)字信號以創(chuàng)建和打開這樣的多媒體文件。
DSP可操作為SIMD(單指令/多數(shù)據(jù))或數(shù)據(jù)并行處理器。在SIMD操作中,單個指令被發(fā)送給對不同數(shù)據(jù)執(zhí)行相同操作的多個處理單元。一個中央控制器可以用于將指令流廣播給不同的處理單元。SIMD指令提供多種標準操作,所述操作包括加、減、乘、累積(MAC)和用于L1-標準-累積(SAA)、限幅和雙線性內(nèi)插的多個專門指令。
多個視頻和圖像處理設(shè)備對排列在二維(2D)數(shù)組中的的8比特字執(zhí)行操作。四個8比特操作數(shù)可被組裝成32比特組合字以被發(fā)送到執(zhí)行單元用于并行處理。這些來自二維數(shù)組的8比特操作數(shù)必然為了正確的操作被合理地排列在32比特組合字中。
當在32比特字校準機上用8比特數(shù)據(jù)操作時,可能存在四種不同的校準可能性校準、8比特偏移、16比特偏移和24比特偏移。如果DSP檢測到一個未校準字,它可以產(chǎn)生一個異常。響應(yīng)于這個異常,可以在存儲器接口上或在數(shù)據(jù)寄存器中執(zhí)行一個校準操作以將8比特操作數(shù)移位,從而以產(chǎn)生一個被校準的32比特字。然而,該校準操作可能將額外的處理開銷引入機器的操作中。
對于8比特SIMD操作的校準開銷可能在通用DSP中導(dǎo)致資源的低效使用。通常,這個低效率將表明自身是由于應(yīng)用于準備處理數(shù)據(jù)的校準操作所產(chǎn)生的不必要的循環(huán)消耗。
圖1是根據(jù)一個實施例的寄存器文件結(jié)構(gòu)的示意圖。
圖2A-2D圖示根據(jù)在四個校準狀態(tài)中在32比特負載上操作的一個實施例的寄存器文件結(jié)構(gòu)。
圖3A-3C圖示根據(jù)一個實施例的校準操作。
圖4圖示根據(jù)包含兩個寄存器對的另一實施例的寄存器文件結(jié)構(gòu)。
圖5圖示根據(jù)包含兩個寄存器對的又一實施例的寄存器文件結(jié)構(gòu)。
圖6是根據(jù)一個實施例的包含一個有寄存器文件結(jié)構(gòu)的數(shù)字信號處理器的高清晰度電視的示意圖。
在各個附圖中相同的參考符號表示相同的單元。
圖1圖示根據(jù)一個實施例的寄存器文件結(jié)構(gòu)100,該實施例使用地址指針向二維(2D)分組8比特數(shù)據(jù)數(shù)組提供32比特分組字的自動校準。該寄存器文件包括多個寄存器R0-R7104。一個負載復(fù)用器(MUX)106將32比特負載復(fù)用到寄存器文件中,一個存儲MUX108從寄存器文件輸出一個存儲字,和一個校準MUX110從包含寄存器R0和R1的寄存器對112輸出一個校準的32比特分組字。校準MUX110和寄存器文件由控制單元114控制。
通過將來自數(shù)據(jù)數(shù)組的兩個32比特分組字k和k+1分別裝入寄存器對中的每一個數(shù)據(jù)寄存器R0和R1,為校準操作準備好寄存器文件。每個8比特操作數(shù)占用寄存器中四個存儲器位置RxLL、RxLH、RxHL和RxHH中的一個。圖2A-2D圖示在包含寄存器R2和R3的寄存器對200中的32比特字的四種不同的校準情況。這四個8比特操作數(shù)可被正確地校準(圖2A)或者可以穿越32比特字的邊界(圖2B-2D)。
指針地址的兩個最低有效位(LSB)202由控制單元屏蔽掉,并用來確定32比特分組字的校準狀態(tài)。這些LSB202被用作控制信號來控制校準MUX110以從對應(yīng)于一個校準的32比特字204的寄存器對中的八個存儲位置中選擇出四個8比特操作數(shù)。校準的32比特字202可做為一個操作數(shù)(OPA或OPB)被輸出以便由執(zhí)行單元并行處理其組成8比特操作數(shù)。
如圖2A所示,“00”表示一個校準字。在這種情況下,校準MUX110被控制以在R2LL、R2LH、R2HL和R2HH中選擇操作數(shù),并依照該順序輸出包含有那些8比特操作數(shù)的一個校準32比特字204。
如圖2B所示,“01”表示一個偏移8比特的32比特字。在這種情況下,校準MUX110被控制以在R3HH、R2LL、R2LH、和R2HL中選擇操作數(shù),并按照那個順序輸出包含有那些8比特操作數(shù)的校準32比特字206。
如圖2C所示,“10”表示一個偏移16比特的32比特字。在這種情況下,校準MUX110被控制以在R3HL、R3HH、R2LL、和R2LH中選擇操作數(shù),并按照那個順序輸出包含有那些8比特操作數(shù)的校準32比特字208。
圖2D所示,“11”表示一個偏移24比特的32比特字。在這種情況下,校準MUX110被控制以在R3LH、R3HL、R3HH和R2LL中選擇操作數(shù),并按照那個順序輸出包含有那些8比特操作數(shù)的校準32比特字210。
圖3A-3C圖示根據(jù)一個實施例的一個校準操作。如圖3A所示,該操作最先(在周期1中)在狀態(tài)300中采用2D數(shù)據(jù)數(shù)組中未校準的32比特字k和k+1來裝載寄存器R0和R1。字k包含8比特操作數(shù)A、B和C,字k+1包含八比特操作數(shù)D、E、F和G。在這個例子中,字k和k+1被偏移8比特。這些字的指針地址的LSB位是“01”。因此,在狀態(tài)302中,校準MUX110從寄存器R0中選擇8比特操作數(shù)A、B、C,從寄存器R1中選擇8比特操作數(shù)D。一旦最先的操作進行后,每一周期僅有一次裝載。如圖3B所示,在隨后的周期(周期2)中,在狀態(tài)308中,寄存器R0被加載32比特字k+2、HIJK。校準MUX被控制以反轉(zhuǎn)復(fù)用寄存器對中的操作數(shù)以獲得讀出的映射。當反轉(zhuǎn)復(fù)用操作數(shù)時,校準MUX110在讀出寄存器R0之前讀出寄存器R1。在狀態(tài)310中,校準MUX選擇先前未選擇的來自寄存器R1的8比特操作數(shù)E、F和G,和來自寄存器R0的操作數(shù)H。在狀態(tài)314中,校準MUX輸出用于處理的校準32比特字EFGH312。
在下一個周期(周期3),R1被加載32比特字k+3,LMNO,316。校準MUX110被控制以在狀態(tài)318中選擇字節(jié)I、J、K和L,并在狀態(tài)322中輸出32比特字IJKL320。在周期3中,校準MUX110向前復(fù)用寄存器R0和R1。這樣,在每一個偶/奇周期中當處理分組8比特數(shù)組時,該32比特負荷在兩個成對的寄存器R0和R1間被“乒乓”往復(fù)。
正如在圖3A-3C所示的操作所表明的,8比特數(shù)據(jù)處理需求經(jīng)常是反復(fù)的,并且一旦建立就保持不變。一旦寄存器文件被預(yù)先準備好,使用最小的開銷來校準32比特負載。
在通用DSP中用未校準的32比特字加載數(shù)據(jù)寄存器可導(dǎo)致一個異常的產(chǎn)生。8比特SIMD操作可能需要多達十六個8比特操作數(shù)以用于執(zhí)行單元。這對應(yīng)于兩個寄存器對,即,四個寄存器。使用可用于裝載寄存器對的兩個32比特總線,在初始化SUMD操作之前必須裝載四個寄存器。根據(jù)一個實施例,在預(yù)先準備好禁止未校準取數(shù)所導(dǎo)致異常的產(chǎn)生的操作和預(yù)先準備好8比特SIMD操作循環(huán)時,可以使用一個專門的指令,例如DISALGENEX。可以發(fā)出DISALGENEX指令,與一個或兩個可以或不可以穿越32比特邊界的裝載操作相結(jié)合。一些指令的例子包括(1)DISALGENEX,R1=[i0++],R3=[I1++];
(2)DISALGENEX,[p0++p1]=R5,R3=[i1++];回到圖1,控制單元114可以控制加載VMUX106以用對應(yīng)于負載A的鄰近32比特分組字加載寄存器對R0/R1。控制單元還控制加載MUX106以用對應(yīng)于負載B的鄰近32比特分組字加載寄存器R2。用于負載A(*loada[1∶0])的指針地址的兩個LSB202被控制單元屏蔽掉,并作為控制信號輸入給校準MUX110。校準MUX根據(jù)負載A的指針地址的LSB選擇合適的四個操作數(shù)以輸出一個校準32比特字OPA。R2輸出32比特分組字OPB。由執(zhí)行單元操作OPA和OPB中的8比特操作數(shù)。這些操作的結(jié)果RESA和RESB可被重新裝載入寄存器文件。
圖4圖示根據(jù)一個實施例的寄存器文件結(jié)構(gòu),其中來自單指針地址(*loadb[1∶0])的LSB可被用于復(fù)用來自兩個寄存器對R0/R1和R2/R3的八個8比特操作數(shù)以輸出兩個校準32比特字OPA和OPB。這允許第二指針被用于存儲操作。根據(jù)該實施例,通過允許將用于操作二維8比特數(shù)據(jù)數(shù)組中相鄰行或列上的指令的校準獨立地執(zhí)行,可以支持8比特SIMD指令。支持這種校準的一個指令可以具有以下形式dregs=8b_OP(R10,R32)AMOD,[im++]=dregs,dregs=[im++];圖5圖示根據(jù)一個實施例的寄存器文件結(jié)構(gòu),其中來自用于8比特分組數(shù)據(jù)數(shù)組的兩個指針中任一指針的兩個LSB im和in被用作復(fù)用八個8比特操作數(shù)的控制信號。這將向執(zhí)行單元提供兩個32比特分組字,其中每個執(zhí)行單元中的校準可以不同。提供兩個MUX110,每個提供有一個不同指針的LSB作為控制信號。
支持這種校準的指令可具有以下形式dregs=8b_OP(R10,R32)AMOD,dregs=[im++],dregs=[im++];和dregs=8b_OP(R10,R32)AMOD,dregs=[in++],dregs=[in++];根據(jù)一個實施例可以執(zhí)行一個校準獨立8比特SIMD ADD操作。四個8比特SIMD指令被用于執(zhí)行兩個字節(jié)的加法,輸出四個16比特帶符號的數(shù)據(jù)。三十二比特負載OPA包括四個8比特操作數(shù)am+3、am+2、am+1和am。三十二比特負載OPB包括四個8比特操作數(shù)bm+3、bm+2、bm+1和bm。用于確定OPA的兩個32比特分組字可以被裝載在寄存器對R0/R1上,用于確定OPB的兩個32比特分組字可以被裝載在寄存器對R2/R3上。OPA和OPB的相應(yīng)8比特操作數(shù)被相加。相加操作的結(jié)果是四個16比特數(shù)值,am+3+bm+3、am+2+bm+2、am+1+bm+1和am+bm,它們可以被分組成32比特字并存儲在從R4、R5、R6和R7中選擇的兩個目標寄存器中。
用于執(zhí)行校準獨立8比特SIMD ADD操作的指令可以具有形式(dregs,dregs)=q2badd(dreg_pair,dgre_pair);(dregs,dregs)=q2badd(dreg_pair,dgre_pair)R;范例指令包括(r4,r5)=q2badd(r10,r32);(r5,r4)=q2badd(r10,r32)R。
這些指令假定負載總是在32比特邊界上和兩個指針被存儲在I0和I1中。雖然負載實際出現(xiàn)在32比特邊界上,這些值對于8比特的邊界是正確的。來自指針i0和i1的兩個LSB被解碼以分別從寄存器對R0/R1和R2/R3選擇四種可能校準情況中的一種。包含字k+1的寄存器被缺省地認為在R0和R2中,字k+1被認為在寄存器R1和R3中。
“R”選項指定讀出映射應(yīng)當被執(zhí)行,如上面結(jié)合圖3B所述的。這允許在執(zhí)行數(shù)組處理程序時在每一對寄存器間有效地乒乓往復(fù)。
上述校準獨立SIMD ADD操作可以被用于支持許多基于圖像的計算。根據(jù)各種實施例,可以執(zhí)行其它校正獨立SIMD操作,包括例如減、加、乘、累乘(MAC)和一些用于L1-標準-累積(SAA)、限幅和雙線性插入的專門指令。
根據(jù)想要的SIMD操作,校準的不同方法可被用于32比特組字。8比特的情況以四個不同的校準情況已經(jīng)被描述。十六比特數(shù)據(jù)也可以被分組成32比特負載。上述負載將具有兩種校準情況校準的和未校準的,其中16比特操作數(shù)被移位16比特。用于負載的指針地址的兩個LSB被用來確定校準情況,“00”用于校準情況,“01”用于未校準情況。可以為SIMD操作歸納另一種情況,該操作用于混合數(shù)據(jù)類型,例如包括混合8比特和16比特操作數(shù)的32比特分組字。
根據(jù)一個實施例的寄存器文件結(jié)構(gòu)可以通過消除各種校準操作的預(yù)處理數(shù)據(jù)的需要來為各種視頻和圖像算法提供較高的處理能力。通過在想要以處理不同的校準情況的編碼中削減相似的程序可降低編碼規(guī)模,并通過消減檢測校準狀態(tài)的需要和其后的向指令的適當序列的轉(zhuǎn)移以提高循環(huán)計數(shù)。這樣,寄存器文件結(jié)構(gòu)可在執(zhí)行單元中提供在8比特邊界上的數(shù)據(jù)校準,不給存儲器接口增加負擔(dān),該存儲器接口可被保留用作32比特裝載/存儲操作。
如上所述的支持校準獨立SIMD操作的多個實施例尤其適合于想要的支持視頻和圖像為基礎(chǔ)的處理的操作。這些包括例如,半X半Y和半XY的8比特四線插入、微偏移查找操作和偏移校正。
根據(jù)多個實施例的包含寄存器文件結(jié)構(gòu)的通用DSP可非常適用于視頻處理圖像裝置,所述裝置使用用于視頻壓縮的MPEG-1/MPEG-2/MPEG-3/MPEG-4/H.236的未來標準。
這樣的通用DSP被期待用于視頻攝像機、數(shù)字照相機、電話會議、PC視頻卡和HDTV。如圖6所示,用于HDTV602的帶有顯示屏604的視頻處理器600可以包括根據(jù)一個實施例的包含寄存器文件結(jié)構(gòu)608的DSP606和用于存儲用于執(zhí)行視頻處理操作的指令的存儲器610。另外,通用DSP還被期望與利用數(shù)字信號處理的其它技術(shù)結(jié)合使用,如移動電話中的聲音處理、語音識別和其它應(yīng)用。
已經(jīng)描述了本發(fā)明的許多實施例。然而,在不脫離本發(fā)明精神和范圍的情況下,可以進行各種修改。因此,其它實施例在權(quán)利要求的范圍之內(nèi)。
權(quán)利要求
1.一種設(shè)備,包括一個寄存器對,適合于存儲兩個分組字,包括合計多達2n個操作數(shù);和一個操作數(shù)選擇器,適合于從所述寄存器對中選擇n個操作數(shù),并響應(yīng)于表示所述兩個分組字的校準狀態(tài)的一個控制信號,輸出包含所述n個操作數(shù)的一個校準分組字。
2.權(quán)利要求1的設(shè)備,其中所述操作數(shù)選擇器是一個多路復(fù)用器。
3.權(quán)利要求1的設(shè)備,其中控制信號包括所述兩個分組字之一的指針地址的最低兩個有效比特。
4.權(quán)利要求1的設(shè)備,其中兩個分組字和校準分組字中的每個包括32比特字。
5.權(quán)利要求1的設(shè)備,其中n等于4。
6.權(quán)利要求1的設(shè)備,其中所述n個操作數(shù)包括8比特字。
7.權(quán)利要求1的設(shè)備,其中所述n個操作數(shù)包括16比特字。
8.權(quán)利要求1的設(shè)備,還包括一個第二寄存器對,適合于存儲包含2n個操作數(shù)的第二組兩個分組字。其中所述操作數(shù)選擇器適合于從所述第二寄存器對選擇出n個操作數(shù),并響應(yīng)于表示所述第一組的兩個分組字的校準狀態(tài)的一個控制信號,輸出包含所述n個操作數(shù)的第二校準分組字。
9.權(quán)利要求1的設(shè)備,還包括一個第二寄存器對,適合于存儲包含2n個操作數(shù)的第二組兩個分組字。其中所述操作數(shù)選擇器適合于從所述第二寄存器對選擇出n個操作數(shù),并響應(yīng)于表示所述第二組的兩個分組字的校準狀態(tài)的一個控制信號,輸出包含所述n個操作數(shù)的第二校準分組字。
10.一種視頻處理器,包括一個存儲器,存儲指令以執(zhí)行視頻處理操作;一個數(shù)字信號處理器,包括第一寄存器,適合于存儲包含n個操作數(shù)的第一分組字;第二寄存器,適合于存儲包含n個操作數(shù)的第二分組字;和多路復(fù)用器,適合于從第一寄存器和第二寄存器中的2n個操作數(shù)選擇n個操作數(shù),并響應(yīng)于與所述第一分組字的校準狀態(tài)相對應(yīng)的一個控制信號,輸出包含所述n個選定操作數(shù)的一個校準分組字。
11.權(quán)利要求10的視頻處理器,其中控制信號包含所述第一和第二分組字之一的一個指針地址的最低兩個有效比特。
12.權(quán)利要求10的視頻處理器,其中第一分組字、第二分組字和校準分組字中的每一個都包含32比特字。
13.權(quán)利要求10的視頻處理器,其中n等于4。
14.權(quán)利要求10的視頻處理器,其中所述n個操作數(shù)包括8比特字。
15.權(quán)利要求10的視頻處理器,其中所述n個操作數(shù)包括16比特字。
16.一種方法,包括裝載包括n個操作數(shù)的第一分組字;裝載包括n個操作數(shù)的第二分組字;確定所述第一和第二字的一個校準狀態(tài);響應(yīng)于所確定的校準狀態(tài),從第一和第二分組字中的2n個操作數(shù)中選擇n個操作數(shù);和輸出包含n個操作數(shù)的一個校準分組字。
17.權(quán)利要求16的方法,其中確定校準狀態(tài)包含確定所述第一和第二分組字之一的最低兩個有效比特。
18.權(quán)利要求16的方法,其中所述第一和第二分組字是一個數(shù)據(jù)數(shù)組中的相鄰字。
19.權(quán)利要求18的方法,其中選擇n個操作數(shù)包括選擇所述第一和第二分組字中的n個相鄰操作數(shù)。
20.權(quán)利要求16的方法,還包括裝載包括n個操作數(shù)的第三分組字;響應(yīng)于所確定的校準狀態(tài),從第二和第三分組字中的2n操作數(shù)選擇n個操作數(shù);和輸出包含n個操作數(shù)的第二校準分組字。
21.權(quán)利要求20的方法,其中選擇n個操作數(shù)包含反向復(fù)用第二和第三分組字之間的n個操作數(shù)。
22.權(quán)利要求16的設(shè)備,其中兩個分組字和校準分組字中的每一個都包含32個比特字。
23.權(quán)利要求16的設(shè)備,其中所述n個操作數(shù)包含8比特字。
24.一種設(shè)備,包括駐留在一個機器可讀介質(zhì)上的指令,用于校準一個分組字中的操作數(shù),該指令使機器裝載包括n個操作數(shù)的第一分組字;裝載包括n個操作數(shù)的第二分組字;確定所述第一和第二字的一個校準狀態(tài);響應(yīng)于所確定的校準狀態(tài),從第一和第二分組字中的2n個操作數(shù)中選擇n個操作數(shù);和輸出包含n個操作數(shù)的一個校準分組字。
25.權(quán)利要求24的設(shè)備,其中使機器確定校準狀態(tài)的指令還包括指令使機器確定所述第一和第二分組字之一的最低兩個有效比特。
26.權(quán)利要求24的設(shè)備,其中所述第一和第二分組字是一個數(shù)據(jù)數(shù)組中的相鄰字。
27.權(quán)利要求26的設(shè)備,其中使機器選擇n個操作數(shù)的指令還包括指令使機器選擇所述第一和第二分組字中的n個相鄰操作數(shù)。
28.權(quán)利要求24的設(shè)備,還包括指令使機器裝載包括n個操作數(shù)的第三分組字;響應(yīng)于所確定的校準狀態(tài),從第二和第三分組字中的2n操作數(shù)選擇n個操作數(shù);和輸出包含n個操作數(shù)的第二校準分組字。
29.權(quán)利要求28的設(shè)備,其中使機器選擇n個操作數(shù)的指令還包括指令使機器反向復(fù)用第二和第三分組字之間的n個操作數(shù)。
全文摘要
通用數(shù)字信號處理器(DSP)中的一種寄存器文件結(jié)構(gòu)支持校準獨立SIMD(單指令/多數(shù)據(jù))操作。寄存器文件結(jié)構(gòu)包括一個寄存器對和一個校準多路復(fù)用器。兩個32比特分組字可以被裝載到寄存器對中。每個分組字包括四個8比特操作數(shù)。32比特字的校準狀態(tài)可以通過分組字的指針地址的最低兩個有效比特(LSB)來確定。這些LSB用于控制校準MUX來從兩個32比特分組字中選擇n個操作數(shù),并將一個校準的32比特分組字輸出給執(zhí)行單元用于并行處理。
文檔編號G06F11/00GK1334525SQ01123388
公開日2002年2月6日 申請日期2001年6月25日 優(yōu)先權(quán)日2000年6月30日
發(fā)明者R·科拉哥特拉, D·B·維特, B·C·阿爾德里奇 申請人:英特爾公司