日韩成人黄色,透逼一级毛片,狠狠躁天天躁中文字幕,久久久久久亚洲精品不卡,在线看国产美女毛片2019,黄片www.www,一级黄色毛a视频直播

數(shù)字信號處理器的制作方法

文檔序號:6556934閱讀:251來源:國知局
專利名稱:數(shù)字信號處理器的制作方法
本申請是申請日為1999年3月4日申請?zhí)枮榈?9806366.5號發(fā)明名稱為“數(shù)字信號處理器”的中國專利申請的分案申請。
I.發(fā)明背景本發(fā)明涉及數(shù)字信號處理器。本發(fā)明特別適用于(但不專用于)應(yīng)用高度平行、高度流水線處理技術(shù)的數(shù)字信號處理。
II.相關(guān)技術(shù)的說明數(shù)字信號處理器(DSP)通常用于實時處理數(shù)字信號。數(shù)字信號一般是一系列數(shù)字或數(shù)字值,用于代表相應(yīng)的模擬信號。DSP已廣泛應(yīng)用于各種場合,包括密致盤播放機等音頻放蜂窩電話等無線通信系統(tǒng)。
DSP往往被認(rèn)為是微處理器的一種特殊形式。像微處理器一樣,一般將DSP構(gòu)制在硅基半導(dǎo)體集成電路上。另外,像微處理器那樣,通過應(yīng)用縮簡指令組(RISC)運算技術(shù),DSP的運算能力增強了,RISC運算技術(shù)包括使用較少數(shù)量的同尺寸指令來控制DSP的操作,每條指令的執(zhí)行時間相同。RISC運算技術(shù)的應(yīng)用,提高了執(zhí)行指令的速率或時鐘速率,附大了DSP內(nèi)指令流水線操作量,由此增強了DSP的整體運算能力。
用RISC運算技術(shù)編制DSP也產(chǎn)生了不希望有的特性。特別是,基于RISC的DSP要執(zhí)行大量指令來完成給定的任務(wù)。執(zhí)行附加的指令附大了DSP的功耗,盡管由于基于RISC的DSP的時鐘速度提高而縮短了執(zhí)行這些指令的時間。另外,應(yīng)用數(shù)量更大的指令還增大了DSP內(nèi)片上指令存儲器的尺寸。存儲器在DSP內(nèi)要求相當(dāng)大的電路面積(常常超過總面積的50%),增大了DSP的尺寸與成本。因此,對于數(shù)字蜂窩網(wǎng)電話或其它類型電池操作的無線通信系統(tǒng)等低成本、小功率應(yīng)用而言,采用基于RISC的DSP并非理想。


圖1是用原有技術(shù)構(gòu)制的DSP的簡化框圖。算術(shù)邏輯單元(ALD)16耦合至AIU寄存庫17,乘積電路(MAC)36耦合至MAC寄存庫27.數(shù)據(jù)總線20將MAC寄存庫27、ALU寄存器17和(片上)數(shù)據(jù)存儲器10耦接起來。指令總線22將MAC寄存庫27、(片上)指令存儲器12、MAC寄存庫27與ALU寄存庫17耦接起來。指令譯碼器18耦合到MAC26與ALU16,而在某些原有技術(shù)系統(tǒng)中,將譯碼器18直接耦合到指令存儲器12。數(shù)據(jù)存儲器10還耦合至數(shù)據(jù)接口11,指令存儲器12還耦合至指令接口13。數(shù)據(jù)接口12與指令接口13與片外存儲器6交換數(shù)據(jù)與指令。
操作時,指令存儲器12中的指令由譯碼器18譯碼。相應(yīng)地,指令譯碼器18產(chǎn)生供給ALU16與MAC26的內(nèi)部控制信號。該控制信號通常令A(yù)LU16獲取在ALU寄存庫17與數(shù)據(jù)存儲器10或指令存儲器12之間變換的數(shù)據(jù),還令MAC26獲取在MAC寄存庫27與指令存儲器12或數(shù)據(jù)存儲器10之間交換的指令數(shù)據(jù),還要令A(yù)LU16與MAC26根據(jù)分別存儲在ALU寄存庫17與MAC寄存庫27中的數(shù)據(jù)作各種操作。
在示例性操作中,指令存儲器12可以存有供ALU16與MAC使用的系數(shù)數(shù)據(jù),而數(shù)據(jù)存儲器10可以包含被處理的數(shù)據(jù)(信號數(shù)據(jù))。在一般實踐中,系數(shù)數(shù)據(jù)可用DSP構(gòu)成頻率濾波器。濾波時,將來自數(shù)據(jù)存儲器10的信號數(shù)據(jù)和來自指令存儲器12的系數(shù)數(shù)據(jù)讀入MAC寄存器27。指令存儲器12內(nèi)的附加指令數(shù)據(jù)也通過指令數(shù)據(jù)總線11或通過直接連接供給指令譯碼器18,它規(guī)定了準(zhǔn)備由MAC27執(zhí)行的操作。通常把MAC26產(chǎn)生的結(jié)果讀回到數(shù)據(jù)存儲器10。
這種原有處理技術(shù)導(dǎo)致許多處理上的低效性,例如包括總線對指令存儲器12的訪問爭用,而總線必須將指令數(shù)據(jù)提供給MAC寄存器16和指令譯碼器18,還包括總線對數(shù)據(jù)存儲器10的的訪問爭用,而總線又必須讀出信號數(shù)據(jù)并寫入輸出數(shù)據(jù)。另外,在許多場合中,對輸出數(shù)據(jù)的附加處理必須由ALU16來完成,更加增加了對數(shù)據(jù)存儲器10的訪問,造成對數(shù)據(jù)總線20的爭用,因為輸出數(shù)據(jù)必須從MAC寄存庫27寫入數(shù)據(jù)存儲器10,然后讀出給ALU寄存器17.這種讀寫操作都在總線20上進(jìn)行,要耗用附加的總線周期。這類低效性降低了DSP的處理性能。
發(fā)明概述本發(fā)明通過解決上述諸問題與低效時,并提供本說明描述的其它一些特性與改進(jìn),以期改善DSP的性能與有效時。
本發(fā)明為DSP提供一種新的改進(jìn)的方法與電路。
根據(jù)本發(fā)明的一個方面提供的DSP,存儲器可通過第二組可選總線與第一組處理裝置連接,而把可選總線選成在存儲器與處理裝置之間傳輸?shù)目勺冮L度數(shù)據(jù)得以優(yōu)化。
本發(fā)明各種其它方面均由所附的權(quán)利要求書限定。
本發(fā)明可用可變長度指令組實現(xiàn)。一部分可變長度指令與結(jié)束出現(xiàn)在存儲器的字邊界上。利用包含可變數(shù)量的指令同的指令可實現(xiàn)本發(fā)明附加的諸方面。每個指令段可執(zhí)行特定的操作,以在每個時鐘周期內(nèi)作多次操作,從而減少了執(zhí)行任務(wù)所需的時鐘周期總數(shù)。
一示列性DSP包括一組三根數(shù)據(jù)總線,數(shù)據(jù)可在其上與寄存庫和三只數(shù)據(jù)存儲器作交換。應(yīng)用兩條以上尤其是三條數(shù)據(jù)總線,實現(xiàn)了本發(fā)明明顯減少總線爭用的另一方面。本發(fā)明的一個實施例要求數(shù)據(jù)總線包括一條寬總線和兩條窄總線,前面耦合至寬數(shù)據(jù)存儲器,后者耦合至兩個窄數(shù)據(jù)存儲器。
本發(fā)明一實施例的一個方面是應(yīng)用于寄存庫,其寄存器可至少由兩個處理單元訪問,從而可用多個處理單元對特定數(shù)據(jù)組作多次操作,無須對存儲器讀寫數(shù)據(jù)。本發(fā)明該示例性實施例中的處理單元,包括一個ALU和一個MAC單元。當(dāng)與多總線結(jié)構(gòu)、高度平行指令組合應(yīng)用時,就實現(xiàn)了本發(fā)明的另一方面,即執(zhí)行高度流水線的多操作處理。
通過包含一個指令取出單元接收存儲在指令存儲器里的可變長度指令,可實現(xiàn)本發(fā)明的其它方面。運用與三只數(shù)據(jù)存儲器組分開的指令存儲器,可實現(xiàn)本發(fā)明的還有一個方面。指令譯碼器對來自指令存儲器的指令譯碼并產(chǎn)生控制信號,讓數(shù)據(jù)在各種寄存器、數(shù)據(jù)存儲器與功能單元之間交換,允許在每個時鐘周期內(nèi)作多次操作。將本發(fā)明的各個方面協(xié)同組合起來,可產(chǎn)生意料不到的理想結(jié)果。例如,應(yīng)用連續(xù)存在存儲器內(nèi)的可變長度指令,減少了DSP必需的電路面積,便于對DSP增設(shè)多條數(shù)據(jù)總線,并增設(shè)可被多個處理單元訪問的寄存器,提高DSP的總體性能。組合本發(fā)明各個方面提提供的其它優(yōu)點是明顯的,下面將作詳述。
根據(jù)參照附圖對本發(fā)明示例性實施例的詳述,特別是所附權(quán)項所規(guī)定的本發(fā)明的上述特征與其它特征及其優(yōu)點就更清楚了。
附圖簡述根據(jù)下面結(jié)合附圖對本發(fā)明諸示例性實施例的詳述,本發(fā)明的特征、目的和優(yōu)點將變得更加清楚,圖中同樣的字符表示相應(yīng)的元件,其中圖1是按原有技術(shù)構(gòu)制的DSP的方框圖2是實施本發(fā)明的DSP的方框圖;圖3是寄存庫輸入口與寄存器之間連接的方框圖;圖4是寄存庫的寄存器與輸出口之間連接的方框圖;圖5是存儲在本發(fā)明一實施例的存儲空間里一組可變長度指令的示圖;圖6是表示指令取出單元操作的流程圖;圖7是按本發(fā)明一實施例構(gòu)制的指令取出單元的方框圖;圖8是按本發(fā)明一實施例構(gòu)制的MAV單元的方框圖;圖9是本發(fā)明一實施例使用的指令體系的方框圖。
較佳實施例的詳細(xì)描述本發(fā)明是新的改進(jìn)的數(shù)據(jù)信號處理方法與電路。在整個說明書中,對信號、指令與數(shù)據(jù)采取了各種基準(zhǔn)。這類信號、指令與數(shù)據(jù)較佳地用電壓、電流表示,電流庫包括帶電、光學(xué)或磁性粒子,或它們的某種組合,其用法是眾所周知的。用各種化學(xué)與生物化合物來表示這類信號、指令與數(shù)據(jù),一般也符合本發(fā)明的使用,但是不作優(yōu)先考慮,因為難以使用、管理和操縱這類項目。
另外,參照了本發(fā)明的各個方面、有利性、特征或優(yōu)點(當(dāng)不特定參照時,在此統(tǒng)稱為方面)。本發(fā)明的有些實施例中,可以單獨實現(xiàn)這些不同的方面而無須是提出本發(fā)明的其它方面。然而,在本發(fā)明的其它實施例中,可以將本發(fā)明的兩個或多個方面一起實現(xiàn),由此產(chǎn)生的協(xié)同和意料之外的優(yōu)點,比只以本發(fā)明兩個或多個組合方面中的一個方面實現(xiàn)的實施例更多。
I.DSP操作原理與指令存儲圖2是一部分DSP電路的方框圖,該電路按本發(fā)明一示例性實施例構(gòu)制。數(shù)據(jù)存儲器102-104經(jīng)地址發(fā)生單元(AGU)105-107分別耦合到數(shù)據(jù)總線A、B和C,并耦合至數(shù)據(jù)接口100。數(shù)據(jù)總線A、B和C經(jīng)多路復(fù)用器122-126分別耦合至寄存庫120的輸出口P01、P02與P03,并耦合至寄存庫120的輸入口PI1、PI2與PI3。較佳地,數(shù)據(jù)總線A、B、C對數(shù)據(jù)存儲器102-104與寄存庫120內(nèi)寄存器之間的數(shù)據(jù)作讀寫。
使用三條數(shù)據(jù)總線與三只數(shù)據(jù)存儲器,可讓更多數(shù)據(jù)在寄存庫與數(shù)據(jù)存儲器之間交換而不產(chǎn)生總線爭用。例如,使用三條數(shù)據(jù)總線A、B與C,可同時從三只存儲器102-104里作三次取出操作。同樣地,由于能任意組合三次取寫操作,故能同時作三次寫操作。
添加第四條數(shù)據(jù)總線可作更多次操作,這與本發(fā)明的某些實施例相一致。然而,只使用三條數(shù)據(jù)總線特別有利,因為三第總線有利于DSP通常執(zhí)行的濾波等許多任務(wù)。因此,添加第四條數(shù)據(jù)總線并不像添加第三條數(shù)據(jù)總線那樣提供同樣增加的性能提高,且要求同樣的額外電路面積量。因此,添加第四條數(shù)據(jù)總線的效果比不上添加第三條總線。故在本發(fā)明的許多實施例中,較佳地只用三條數(shù)據(jù)總線。
輸出口P04、P05和P06或寄存庫120耦合至乘積(MAC)單元128,后者的輸出又耦合至寄存庫120的輸入口PI4。寄存庫120的輸出口PI4。寄存庫120的輸出口P007與P08耦合至ALU130,而后者的輸出耦合至寄存庫120的輸入口PI5。
指令存儲器152耦合至指令取出單元156與指令接口150。指令譯碼器158耦合至指令取出單元156,并耦合至即時總線Im1、Im2與Im3以及ImALU。即時總線Im1、Im2與Im3耦合至多路復(fù)用器122、124與126。即時總線ImALU耦合至ALU130。除了上述的數(shù)據(jù)耦合外,譯碼器158還耦合至由控制接線(為便于給畫而未示出)表示的各種子系統(tǒng)。
寄存庫120含有8只標(biāo)為L0-L3和D0-D3的寄存器。寄存器L0-L3是40位寬寄存器,還能經(jīng)高字寄存器L0h-L3h與低與寄存器L0I-L3I以16位段訪問。寄存器D0-D3是32位寬,能經(jīng)子寄存器R0-R7以16位段訪問。一般而言,寄存器與子寄存器均指簡單的“寄存器”,寄存器的特定特證由提供的特定寄存器號指明。
通過擁有對其耦合并由多個輸入與輸出口訪問的某些寄存器,可實現(xiàn)本發(fā)明的一個方面。在一實施例中,這種多連接性用耦合至每個寄存器的輸入和每個輸出口的多路復(fù)用器提供。其它多連接性方法是顯然的,且與應(yīng)用本發(fā)明某些方面相符,如包括使用數(shù)據(jù)總線與可導(dǎo)址存儲器。然而,在有些實施例中使用多路復(fù)用器為佳,因為它們能迅速可控地訪問各個寄存器與端口。
在本發(fā)明使用即時數(shù)據(jù)總線(這里提出的示例性實施例)的實施例中,實現(xiàn)了本發(fā)明的其它方面。例如,可將指令數(shù)據(jù)中包含的數(shù)據(jù)讀入寄存庫120,無須與存儲器102-105接口。這樣,指令處理系統(tǒng)無須與數(shù)據(jù)存儲器接口就能提供附加數(shù)據(jù),進(jìn)一步減少了總線爭用。
圖3是一框圖,表示寄存庫120內(nèi)一組寄存器與一組輸入口PI1-PI5之間的連接。寄存器定為L0h-L3h、L0I-L3I、R0-R7。寄存器L0包括寄存器L0h與L0I。在圖3和4中,寄存器L0h-L3h為24位寬,L0h-L3h、L0I-L3I和R0-R7為16位寬,使寄存器L0-L3為40位寬。同樣地,輸入口PI3-PI5包括24位的輸入口PI3h-PI5h和16位的PI3I-PI5I,總共40位。輸入口PI1與PI2僅16位,用于寫入寄存器L0h-L3h時,只寫24位中的最低16位。
如圖3所示,有些寄存器從所有輸入口接收數(shù)據(jù),而另一些寄存器只從有些或部分輸入口接收數(shù)據(jù)。特別是,所有的寄存器L0-L3從多路復(fù)用器500-514接收所有輸入口PI1-PI5的數(shù)據(jù),16位輸入口能對寄存器L0-L3內(nèi)的高和低寄存器進(jìn)行寫。這樣,寄存器L0-L3從任何總線A-C(對應(yīng)于輸入口PI0-PI3)和從MAC單元128與ALU130(對應(yīng)于輸入口PI4與PI5)接收輸入。寄存器R0-R7經(jīng)多路復(fù)用器516-530從總線A-C接收輸入數(shù)據(jù)。然而,它們都不從MAC單元128(輸入口PI4)接收輸入數(shù)據(jù)。另外,寄存器R0-R3經(jīng)多路復(fù)用器516/518/524與526從ALU單元130接收輸入數(shù)據(jù)。PI3h-PI5h和16位的PI3I-PI5I,總共40位??赑I1與PI2僅16位,用于寫入寄存器L0h-L3h時,只寫24位中的最低16位。
如圖3所示,有些寄存器從所有輸入口接收數(shù)據(jù),而另一些寄存器只從有些或部分輸入口接收數(shù)據(jù)。特別是,所有的寄存器L0-L3從多路復(fù)用器500-514接收所有輸入口PI1-PI5的數(shù)據(jù),16位輸入口能對寄存器L0-L3內(nèi)的高和低寄存器進(jìn)行寫。這樣,寄存器L0-L3從任何總線A-C(對應(yīng)于輸入口PI0-PI3)和從MAC單元128與ALU130(對應(yīng)于輸入口PI4-PI5)接收輸入。寄存器R0-R7經(jīng)多路復(fù)用器516-530從總線A-C接收輸入數(shù)據(jù)。然而,它們都不從MAC單元128(輸入口PI4)接收輸入數(shù)據(jù)。另外,寄存器R0-R3經(jīng)多路復(fù)用器516、518、524與526從ALU單元130接收輸入數(shù)據(jù)。
圖3實施例有諸多優(yōu)點。特別是,它在輸入口與寄存器之間提供了足夠的連接性,有利于最常見的操作,但總的連接性保持為最小,以減少電路構(gòu)成制所需的總電路面積。例如,MAC單元128的輸出只接至長寄存器L0-L3,這是有利的,因為乘和累加操作的結(jié)果通常超出32位,因而將MAC單元128的輸出接至D0-D3提供了最小的便利。在另一例中,ALO單元130能對寄存器L0-L3和R0-R3輸出,這增強了靈活性,因為數(shù)據(jù)可從ALO單元130寫到各種寄存器,這很有用,因為ALU單元13執(zhí)行了更多次操作,使它能有效地將數(shù)據(jù)輸出到更多個寄存器。然而,ALU單元130不接至所有寄存器,故避免了不必要和過多的連接。
圖3是一框圖,表示當(dāng)按本發(fā)明一實施例執(zhí)行時,將寄存器120的輸出口接至寄存器的情況。如圖所示,輸出至總線A的輸出口P01經(jīng)多路復(fù)用器540接至寄存器L0h-L3h、L01-L31與R0-R7,當(dāng)被作為小子寄存器訪問時,它包括所有有效的寄存器。同樣地,輸出至總線13的輸出口P02經(jīng)多路復(fù)用器542接至寄存器L0h-L3H、L01-L31與R0-R7。輸出至40位寬總線C的輸出口P03由多路復(fù)用器530接至寄存器L0-L3與D0-D3,當(dāng)被作為全寄存器訪問時,它包括全部有效的寄存器。
接至MAC單元128的40位輸入的輸出口P04,經(jīng)多路復(fù)用器532接至寄存器L0-L3。鑒于乘和累加操作的特征,MAC128累加的值很大,因而將輸出口P04只接至40位“長”寄存器L0-L3可提供最佳耦合配置,因為附加接至寄存器D0-D3的利用率很小,給出的各種乘法操作的累加一般超過32位。
接至MAC單元128的一個16位輸入的輸出口P05,經(jīng)多路復(fù)用器534接至寄存器L0h-L3h、R0、R4與R6。接至MAC單元時的第二16位輸入口的輸出口P06,接至寄存器L0h-L3h、L01-L31與R0-R7。將MAC單元128的一個16位輸入接至全部有效寄存器,并將第二個17位輸入口接至有效寄存器小組,可實現(xiàn)有用的折衷。特別在寄存器空間普得有限時,至少可將待處理的一段數(shù)據(jù)放在任一有效寄存器里。然而,限制接至其它輸入端的寄存器數(shù)量,減少了連接電路的總量,有利于提供其它功能與特點,如在其它寄存器、輸入口與輸出口之間有更高的連接性。
接至ALU130的輸入端的輸出口P07,經(jīng)多路復(fù)用器546接至寄存器L0-L3、L0h-L3h與R0-R3。其中Z0h-L03h與R0-R3同一組邏輯零一起輸出。即,寄存器L0h=L03h與R0-R3輸出至P07的位31-16(位號為0-39),位0-15置邏輯零,位39-32用位31擴展符號。接至ALU130的另一輸入端的輸出口P08,也經(jīng)多路復(fù)用器548連同一組邏輯零接至寄存器L0-L3和R0-R7.以此方式連接ALU130的輸入端,可對全部有效的長寄存器L0-L3作邏輯操作,因而可對大量寄存器作邏輯操作,這對歸一化和定標(biāo)等多類信號處理操作是有用的。另外,可在寄存器R0-R7與L0h-L3h以及R0-R7之間作算術(shù)運算,以可使用的寄存器組來衡量,靈活性很大,同時還限制了必需的連接數(shù)量,因而限制了要求的電路面積。應(yīng)理解,有效的算術(shù)邏輯輯操作并一限于上述情況。
應(yīng)用能被多數(shù)據(jù)總線與多處理單元訪問的寄存器有各種好處。例如,寄存器在數(shù)據(jù)總線與處理單元間提供了接口,減少了每條數(shù)據(jù)總線通往每個處理單元的布線要求,從而節(jié)省了電路面積,降低了芯片成本。
再者,將最少量(一組)寄存器接至多個處理單元,可用多個處理單元對同一數(shù)據(jù)多次操作,一必定要通過數(shù)據(jù)總線向存儲器讀寫數(shù)據(jù),這樣節(jié)省了總線周期,減少總線爭用。采用指令處理流水線操作法也是有利的,因為第一處理單元在第一指令周期中處理的數(shù)據(jù),然后可用第二處理單元在第二處理周期中在同一個寄存器內(nèi)再作處理。
然而,并非所有數(shù)據(jù)都要求用多處理單元處理的,所以其它寄存器(另一組)只被一個處理單元或少于處理單元總數(shù)(有兩個以上處理單元的場合)的處理單元訪問。使用這另一組寄存器就減少了連接數(shù),因而減少了電路面積,可在寄存器連接性與電路面積之間(因而在性能與效率之間)實現(xiàn)最佳平衡。
還有,在本發(fā)明一實施例中,利用寄存庫128里的二相時鐘寄存器可進(jìn)一步增強流水線操作能力。在同一個全時鐘(“處理”)周期內(nèi),二相時鐘寄存器在時鐘第一相上讀,在第二相上寫。這樣在特定處理周期內(nèi),可在第一時鐘相內(nèi)讀出已被MAC128等第一處理單元處理過的數(shù)據(jù),并在該處理周期的剩余部分內(nèi)由ALU130等第二處理單元作進(jìn)一步處理。
另外,在處理周期第二相內(nèi),可剛由MAC128處理的新數(shù)據(jù)寫入同一寄存器,從而在一個處理周期內(nèi),可在兩個處理單元之間作整個流水線處理。而且,這些操作一必使數(shù)據(jù)通過任一條內(nèi)部總線,可進(jìn)一步避免總線爭用。
再參照圖2,操作期間,指令取出單元156從指令存儲器152中檢索二進(jìn)制指令,若查一出,則從外部在存儲器中檢索。外部存儲器有多種形式,如動態(tài)與靜態(tài)隨機存取存儲器(DRAM與SRAM)及其衍生產(chǎn)品,磙或光硬盤存儲器,或某些其它眾所周知的數(shù)據(jù)存儲媒體。在本發(fā)明該示例性實施例中,指令為可變長度指令,指令取出單元(下稱取指令單元)確定指令長度,并確定在每次處理或時鐘周期內(nèi)要限出多少附加指令。另外,指令存儲在內(nèi)外存儲器內(nèi)連續(xù)的存儲位置。下面詳述取指令單元156的操作和內(nèi)外存儲器內(nèi)指令數(shù)據(jù)的存儲情況。
指令譯碼器158接收由取指令單元156檢索的指令,并將指令譯為控制信號供給一個或多個組成DSP的子系統(tǒng),子系統(tǒng)包括數(shù)據(jù)存儲器、寄存庫、MAC與ALU。另外,指令譯碼器158可以將接收指令內(nèi)所含的即時數(shù)據(jù)經(jīng)即時總線Im1、Im2、Im3或ImALU送往有關(guān)系統(tǒng)。即時數(shù)據(jù)通常是存儲在指令數(shù)據(jù)內(nèi)的數(shù)值,而指令數(shù)據(jù)用于對存儲在數(shù)據(jù)存儲器102-106II中的數(shù)據(jù)作操作,或可以限定或修正某個地址。
由圖2中DSP執(zhí)行的操作包括將數(shù)據(jù)從數(shù)據(jù)存儲器經(jīng)數(shù)據(jù)總線之一載入某一寄存器位置。數(shù)據(jù)也可從寄存器寫入數(shù)據(jù)存儲器。而且,MAC128或ALU130可對寄存器120內(nèi)一個或多個寄存器里的數(shù)據(jù)作操作,一般將結(jié)果寫回到寄存庫120內(nèi)的寄存器。
上述DSP結(jié)構(gòu)有多種優(yōu)點。例如使用三條數(shù)據(jù)總線有利于不間斷地對數(shù)據(jù)作流水線處理。在DSP執(zhí)行的示例性濾波期間,將待濾波的數(shù)據(jù)(信號數(shù)據(jù))存儲在一只數(shù)據(jù)存儲器中,而將應(yīng)用于該數(shù)據(jù)存儲在另一數(shù)據(jù)存儲器中。由于操作結(jié)果通常要求比操作數(shù)更多的位數(shù),因此將信號數(shù)據(jù)與系數(shù)存儲在兩只較窄的存儲器里較佳。然后將系數(shù)與信號數(shù)據(jù)讀入寄存庫120,再由MAC單元128相乘累加。這些操作的結(jié)果可以存儲在寄存庫120內(nèi)的第二寄存器里,或者導(dǎo)寫入先前已存儲了輸入數(shù)據(jù)的寄存庫。接著在第三總線(總線C)上將任何結(jié)果從該寄存器寫入更寬的數(shù)據(jù)存儲器(存儲器C)。
由于輸出數(shù)據(jù)經(jīng)第三總線寫入第三存儲器,而輸入數(shù)據(jù)級經(jīng)第一與第二數(shù)據(jù)總線從第一與第二數(shù)據(jù)存儲器中讀出,所以很少或一會出現(xiàn)存儲器訪問沖突或總線爭用。這樣,數(shù)據(jù)可以不中斷地處理,減小了以高于內(nèi)部總線或其它子系統(tǒng)的速率對任何存儲器子系統(tǒng)或數(shù)據(jù)總線的計時要求,從而既保持或提高了處理速度,又降低了功耗。
另外,在若干不同數(shù)據(jù)值在DSP內(nèi)不同級以任何給定時間作不同處理的場合,數(shù)據(jù)不中斷地通過DSP有利于數(shù)據(jù)的流水線處理。而且,在組合應(yīng)用的并行指令時,結(jié)合這種高效的流水線處理,可實現(xiàn)明顯的處理靈活性,提供高度通用、有效的有力的DSP系統(tǒng)。
應(yīng)當(dāng)理解,應(yīng)用多條總線提高了以各種減少總線沖突的附加方式使數(shù)據(jù)圍繞DSP運行的能力。例如,要作除法的數(shù)據(jù)可作為輸入數(shù)據(jù)從存儲器C經(jīng)數(shù)據(jù)總線C提供,除數(shù)由另一存儲器與總線提供,如存儲器A與數(shù)據(jù)總線A提供,然后利用剩余總線(數(shù)據(jù)總線B)將結(jié)果存入剩余的存儲器(存儲器B)里。
在得益于多條數(shù)據(jù)總線與存儲器的另一示例性操作中,由MAC單元130累加的數(shù)據(jù)經(jīng)第一存儲器與第一總線(如存儲器A與數(shù)據(jù)總線A)提供。在完成一組累加后,把所得的數(shù)據(jù)經(jīng)數(shù)據(jù)總線C寫到存儲器C。同時,在數(shù)據(jù)總線C不攜帶來自MAC單元128的結(jié)果數(shù)據(jù)的處理周期內(nèi),大部分時間這類結(jié)果數(shù)據(jù)僅在完成一組累加操作后可得到,準(zhǔn)備邏輯移位的數(shù)據(jù)從存儲器C經(jīng)數(shù)據(jù)總線C提供給ALU單元130。邏輯移位的數(shù)據(jù)經(jīng)數(shù)據(jù)總線B同時寫到存儲器B。這樣,應(yīng)用多條數(shù)據(jù)總線與存儲器,一般特別是結(jié)合多個處理單元,通過在DSP內(nèi)移動數(shù)據(jù)提供更多的可能性而有利于多次操作。
如上所述,應(yīng)用能被多個處理單元(如MAC單元128與ALO單元130)訪問的寄存器,可實現(xiàn)本發(fā)明的另一方法。由多個處理單元訪問的寄存器,讓必須由這些處理單元處理的數(shù)據(jù)不必移動通過任何內(nèi)部數(shù)據(jù)總線而予以訪問。例如,數(shù)據(jù)可由第一處理單元寫到某個寄存器,然后再由同樣可以訪問該寄存器的第二處理單元處理。這樣進(jìn)一步減輕了總線爭角與阻塞,因而保持了高的數(shù)據(jù)吞吐量。
另外,當(dāng)結(jié)合使用并行操作指令和下面要詳述的并行處理的能力時,可進(jìn)一步增強高度流水線、多重操作地處理數(shù)據(jù)的能力。相反地,典型的流水線操作要涉及交錯排列一組操作的不同階段(即取出、譯碼、處理),所以縮短了各指令開始之間的處理時間。多重操作流水線法所附加好處在于,數(shù)據(jù)通過一組不同的操作,這種操作對不同的數(shù)據(jù)組是同時執(zhí)行的。這種多重操作流水線法使每個處理周期執(zhí)行的指令數(shù)提高到超過了普通的指令流水線法。
下述示例性處理進(jìn)一步示出了上述結(jié)構(gòu)的最佳協(xié)同作用。在一示例性濾波操作中(也如上所述),隨著樹其作累加的乘積數(shù)據(jù)的增大,MAC26產(chǎn)生的結(jié)果在大小上也增大(用于代表該值的絕對值與位數(shù)兩者)。最后,結(jié)果必須作標(biāo)定或“歸一化”,通常要求用ALU單元130作邏輯位移操作。
在描述的系統(tǒng)中,標(biāo)定操作可同濾波的乘法與累加操作同時執(zhí)行。在同時處理的處理周期內(nèi),將未處理的信號數(shù)據(jù)與濾波系數(shù)從數(shù)據(jù)存儲器102與103讀入寄存庫120內(nèi)的寄存器(如L0h與L01)。同時,MAC單元128讀取先前存儲在這些寄存器(L0h與L01)里的值并作乘法與累加操作,其中將輸出寫到第二寄存器(如L1)。同時,ALU單元130讀取先前存儲在第二寄存器(L1)中的數(shù)據(jù),并執(zhí)行標(biāo)定操作,將標(biāo)定值寫到第三寄存器(如L2)。而且在同一處理周期內(nèi),用總線C112將存儲在第三寄存器(D0)中的先前的值寫入數(shù)據(jù)存儲器104。顯然,特定的操作可以按執(zhí)行的特定任務(wù)改變。而且很清楚,使用允許作多重操作的高度并行的指令,進(jìn)一步有利于高度流水線的多指令操作。高度度行的指令允許在每個周期內(nèi)對不同操作的規(guī)程作流水性操作。
應(yīng)用兩相讀寫操作,如上述例子,這種處理可在單個處理周期內(nèi)全部完成,其中在第一時鐘相內(nèi)以每個寄存器里讀出數(shù)據(jù),并用處理單元處理,而在第二時鐘相內(nèi)的老的數(shù)據(jù)上將結(jié)果寫入寄存器。應(yīng)當(dāng)理解,在單個時鐘周期內(nèi),同一值不經(jīng)受該處理的所有步驟,而是一組值通過DSP作流水線操作,每個值隨著處理的執(zhí)行移至下一步驟。
這里描述的本發(fā)明的各個方面都有利于許多其它的操作。例如,聲音編碼就是話音數(shù)據(jù)的編碼處理,它要求執(zhí)行許多不同類型的操作,有些操作可獨立執(zhí)行,因而可同時執(zhí)行。應(yīng)用多余數(shù)據(jù)總線和多個處理單元,有助于這些操作。
應(yīng)用獨立的指令存儲器與指令譯碼具有進(jìn)一步的優(yōu)點。例如,與上述數(shù)據(jù)處理的同時,取指令156從指令存儲器152讀出指令,接著令指令譯碼器158產(chǎn)生控制信號,以便控制DSP內(nèi)各其它子系統(tǒng)的操作(為便于畫圖和清楚,未畫出接線)。同樣,數(shù)據(jù)總線也不攜帶指令數(shù)據(jù),因而可以不中斷指令數(shù)據(jù)而移動處理信號數(shù)據(jù)。這樣,通過將指令處理與數(shù)據(jù)處理分開,消除指令數(shù)據(jù)移動所耗用的數(shù)據(jù)總線周期,進(jìn)一步提高了性能。
圖5是一張表,說明將一組可變長度指令裝在根據(jù)本發(fā)明一實施例的圖2指令存儲器152的一部分可尋赴存儲空間內(nèi)。在本發(fā)明有些實施例中,也可像圖2那樣把可變長度指令存儲在外存系統(tǒng)里以實現(xiàn)附加的存儲器效率。舉例地址示于左列,指向32位數(shù)據(jù)安排每個地址示于存儲器275的中間和右邊諸列。中間列代表各數(shù)據(jù)字的16位高次子字,最右列代表6位低次子字。在本發(fā)明的該較佳實施例中,高低次子字都不能單獨尋址,以便減少必需的地址邏輯量。
在存儲器275內(nèi),可變長度指令A(yù)-L以圖示的裝填結(jié)構(gòu)存儲。指令A(yù)是48位指令,前兩上雙字節(jié)A(1)與A(2)存儲在地址字0×0000,第三雙字節(jié)A(3)存儲在地址0×0001的高次子字里。指令A(yù)后面的指令B是32位指令,第一雙字節(jié)B(1)存儲在地址0×0001的低次字里,第二雙字節(jié)B(2)存儲在地址0×0002的高次子字里。指令C是16位指令,其第一和唯一的雙字節(jié)(C1)存儲在地址0×0002的低次子字里。
從指令A(yù)-C的存儲位置可見,本發(fā)明將部分不同的指令存儲在同一地址字內(nèi),減少了存儲器275存儲一組指令所必需的尺寸或量。例如,將指令A(yù)的第三雙字節(jié)A(3)與指令B的第一雙字節(jié)B(1)一起存儲。
將變第指令跨過字邊界或特別在存儲器地址空間內(nèi)的連續(xù)位置中存儲起來,本發(fā)明減少了指令存儲器存儲給定指令數(shù)據(jù)必需的容量。減少指令存儲器的容量就減少了對DSP給以規(guī)定指令貯藏容量所必需的芯模的尺寸與成本。如圖3所示,將變第指令D-L置于存儲器275內(nèi),進(jìn)一步示明了指令的裝填狀況。
應(yīng)該理解,在本發(fā)明有些實施例中,不必像上述那樣把所有指令都裝在連續(xù)位置中。例如,本發(fā)明不同的實施例僅將指令的主要部分(90%或以上)裝在存儲空間的連續(xù)位置中。在本發(fā)明另一實施例中,只將指令的主要部分(如25-50%)有利地裝在連續(xù)的存儲空間中。其它實施例可使用其它百分比的裝填指令。
而且,不一定要使用連續(xù)的位置。指令必須簡單地置于比指令數(shù)據(jù)總量大得不多的總存儲空間內(nèi)。這可以將指令置于存儲空間內(nèi)相鄰的位置而較佳地實現(xiàn),然而,指令會在整個存儲空間里搞混,但是只要指令能按原定的執(zhí)行次序讀出就成了。本領(lǐng)域的技術(shù)人員將明白,這類預(yù)定的混亂作為存儲空間的再映射,而且這種再映射一般不影響本發(fā)明的操作,否則要加大不希望有的復(fù)雜性。
同樣地,最好具有能應(yīng)用于很大一組指令的裝填方案。例如,在本發(fā)明某些實施例中,最好對至少10條指令應(yīng)用該裝填方案。
另外,用于本發(fā)明該示例性實施例的特定裝填方案,在其它實施例中不一定使用。例如,本發(fā)明的其它一些實施例可能在連續(xù)存儲位置中沒有指令,而指令可用某種小容量的存儲空間分開,其中包括使用指令分離碼。較佳地,小存儲空間小于存儲空間在存儲字邊界上保持指令邊界所必需的容量。然而,上述裝填法由于其簡單、完整和高效,在許多場合中是較佳的方法。總之,在本發(fā)明的不同實施例中,在裝填完整性與裝填方案復(fù)雜性之間的折衷選擇可以是不同的。
而且如上面暗示的那樣,本發(fā)明的有些實施例只對部分而不是整組有效指令使用該裝填方案。例如,只對用于執(zhí)行某特定任務(wù)或子程序的幾組指令執(zhí)行指令裝填。
應(yīng)該指出,將高度裝填的指令存儲與可變長度指令組合起來使用,進(jìn)一步減少了對DSP的存儲器要求,因為可變長度指令只耗用請求所需操作所需的數(shù)據(jù)量,而且高度裝填的指令存儲將總存儲量保持等于該組變稱指令的耗用時,因而是最小量,減小的存儲器尺寸也減少了芯片尺寸與成本。
除了減小DSP尺寸并由此減少成本等好處以外,在結(jié)合上述結(jié)構(gòu)的其它特點時,應(yīng)用高度裝填指令與可變長度指令還具有意料不到的優(yōu)點。例如,減小指令存儲器的尺寸,附加的電路面積可供DSP,還能具備將可變長度指令存儲在存儲空間連續(xù)位置內(nèi)的能力。圖6是取指令單元156從本發(fā)明一實施例的指令存儲器152取指令時的操作的流程圖。過程在步驟200開始,在步驟202,從指令存儲器152中讀出第一組指令。在本發(fā)明的該示例性實施例中,在步驟202檢索指令數(shù)據(jù)的兩個32位字,即64位。
在步驟204,指令譯碼器158處理包含在這64位指令數(shù)據(jù)中的第一指令。在本發(fā)明的該示例性實施例中,該指令可以是16、32或48位長。指令長度由包含在每條指令里指明指令長度的一組首部位確定,下面再作詳述。顯然還有各種其它規(guī)定指令長度的方法,包括用代碼區(qū)分兩條指令,或用超首部指令規(guī)定幾組后接指令的長度。在某些場合中最好使用首部位,因為指令長度信息通常十分接近該指令,由此降低了存儲或保持有關(guān)指令處理的狀態(tài)信息的要求。
在處理了包含在64位檢索指令數(shù)據(jù)內(nèi)的第一指令后,在步驟206,確定48位或更多未處理的指令數(shù)據(jù)是否保持在64位檢索指令數(shù)據(jù)里。若保持著,則在步驟204處理包含在剩余48位未處理數(shù)據(jù)中的下一個指令。
在步驟206,若不到48位未處理指令數(shù)據(jù)保持在檢索指令數(shù)據(jù)中,就從指令存儲器152裝載附加指令數(shù)據(jù)。各種裝載附加指令的方法都可試用。在本發(fā)明一實施例中,從指令存儲器裝載足夠多的附加指令數(shù)據(jù),使存儲在取指令單元里的未處理數(shù)據(jù)量增至48位。確保48位未處理數(shù)據(jù)存儲在取指令單元內(nèi),以確保對指令譯碼器158至少有一條完整的指令。
在本發(fā)明一較佳實施例中,當(dāng)保持的未處理數(shù)據(jù)不足48位時,根據(jù)已經(jīng)處理的特定數(shù)據(jù)量,取指令單元檢索可變的數(shù)據(jù)量。特別在處理的數(shù)據(jù)量等于或超過一個數(shù)據(jù)字(32位)時,就檢索新指令數(shù)據(jù)的附加數(shù)據(jù)字(32位)。若先前處理的數(shù)據(jù)量等于或超過兩個數(shù)據(jù)字(64位),則取指令單元就檢索兩個新的數(shù)據(jù)字。
根據(jù)處理的數(shù)據(jù)字?jǐn)?shù)檢索數(shù)據(jù)量較佳,因為它對指令譯碼器158保持著足夠量的未處理數(shù)據(jù),同時允許對構(gòu)成指令存儲器的存儲庫作更有效的字長訪問。一旦在步驟206檢索了附加的未處理指令數(shù)據(jù),就在現(xiàn)有的未處理指令數(shù)據(jù)總量內(nèi)處理下一個指令。
圖7是按本發(fā)明一實施例構(gòu)制的取指令單元156與指令存儲器152的框圖。指令存儲器152包括偶數(shù)個存儲庫302(RAM0)和奇數(shù)個存儲庫300(RAM1),每一個都可讀寫32位數(shù)據(jù)字。把存儲庫標(biāo)為奇偶,因為二者都在同一地址空間內(nèi)尋址,但是偶地址偶數(shù)存儲庫302,奇地址針對奇數(shù)存儲體300。
可讀寫其它字尺寸(包括8、16、24、48、64位字)的存儲庫可應(yīng)用于本發(fā)明的其它實施例??梢允褂闷渌煌瑪?shù)量的存儲庫,包括108個存儲庫。然而,最好使用兩個帶32位字的存儲庫,因為能降低整體復(fù)雜性,而且允許指令數(shù)據(jù)以寫管理的塊來尋址。
控制邏輯304讓數(shù)據(jù)字從存儲庫300與302讀到指令寄存器106與107。特定的存儲位置讀由地址線310與314規(guī)定,而讀指令由使能線332、315、316和318控制。指令寄存器306與307的位輸出以16位部分加到旋轉(zhuǎn)器308的輸入端A、B、C和D,旋轉(zhuǎn)器308則輸出48位指令數(shù)據(jù)324,而數(shù)據(jù)324包括四選三(3:4)輸入端A、B、C和D,每個輸入組包含16位,下面再作語詳述。
操作期間,控制邏輯304按參照圖5描述的方法從指令存儲庫300與302裝載指令數(shù)據(jù)。特別是,控制邏輯304通過從偶數(shù)存儲庫302和奇數(shù)存儲庫300讀32位數(shù)據(jù)字,第一次將總計64位的未處理指令數(shù)據(jù)裝入指令寄存器306和307。如果處理了16位的指令,不用裝載新數(shù)據(jù),因為寄存器306和307還包含著48位未處理的指令數(shù)據(jù)。若接著處理了32位的指令,則指令寄存器306要裝上32位字的附加指令數(shù)據(jù),因為保持的未處理指令數(shù)據(jù)不足48位。再次裝載32位指令字,獎48位未處理指令數(shù)據(jù)置入寄存器306和307,16個未處理位置入寄存器307,其余32位置入寄存器306。如果再處理48位指令,就沒有未處理指令數(shù)據(jù)可保持,所以兩寄存器306和307均裝有指令數(shù)據(jù)的32位字,該數(shù)據(jù)是64位的未處理指令數(shù)據(jù),要大于必需的48位指令數(shù)據(jù)。雖然裝載64位指令數(shù)據(jù)并無十分必要,但是這樣做是有用的,因為這樣可以使用兩個32位字的指令存儲器與寄存器,在行業(yè)中是常見的。使用其它方法保持足量的未處理指令數(shù)據(jù),與應(yīng)用本發(fā)明的某些方面相符。
一旦將64位新指令數(shù)據(jù)裝入指令寄存器306和397,控制邏輯304就再配置旋轉(zhuǎn)器308,用控制信號320根據(jù)下列條件輸出在輸入端A、B、C和D上接收的下一個48位的指令數(shù)據(jù)1)指令數(shù)據(jù)在指令地址空間內(nèi)的位置,2)已處理的該組指令數(shù)據(jù),及3)已處理的前一指令的長度。特別是將旋轉(zhuǎn)器308配置成輸出一組準(zhǔn)備用最高有效或最左邊位置中指令數(shù)據(jù)的下一在線位作下一在線處理的48位指令指數(shù)。
例如,一旦將前兩個字即64位指令數(shù)據(jù)裝入寄存器306和307,如果偶數(shù)指令寄存器307中的指令數(shù)據(jù)處于下一在線,則旋轉(zhuǎn)器308的輸出就包括在輸入端A、B和C(ABC)上依次接收的指令數(shù)據(jù)。如果奇數(shù)指令寄存器306中的指令數(shù)據(jù)處于下一在線,則旋轉(zhuǎn)器308配置成輸出在輸入端C、D和A(CDA)上依次的指令數(shù)據(jù)。
由于指令已處理,就像上述那樣將新的指令數(shù)據(jù)裝入數(shù)據(jù)寄存器306和307,為旋轉(zhuǎn)器308根據(jù)先前處理的指令的尺寸,配置成在輸出端324上不斷輸出下一在線指令數(shù)據(jù)。先前處理的指令的尺寸由首部數(shù)據(jù)322(輸出端324上前五位的副本)傳送給控制邏輯304。上述已指出,任何對控制邏輯304規(guī)定指令長度的預(yù)定方法均符合本發(fā)明的實踐,盡管使用前五位是較佳的,因為這樣可直接按指令數(shù)據(jù)確定指令長度。
在本發(fā)明一示例性實施例中,前一指令的尺寸按表1編碼成兩位狀態(tài)I1和I0。
表1.全指令模式另外,旋轉(zhuǎn)器308的配置由兩個構(gòu)成控制320的選擇位S 1和S0控制,其編碼如表2所列。
表2.旋轉(zhuǎn)器選擇控制位與輸出很明顯,隨著A1與S0狀態(tài)的遞增,旋轉(zhuǎn)器308的輸出就左轉(zhuǎn)或筒狀偏移。左轉(zhuǎn)就是每個輸入組(A、B、C和D)在輸出端上向左移。在輸出最左邊位置的輸入組被取消。先前未在輸出端認(rèn)定的輸入組以后在最右邊位置上輸出。
S1與S0狀態(tài)和旋轉(zhuǎn)器308的配置被修正或轉(zhuǎn)動的量,根據(jù)各種長度的指令而變化。具體而言,將代表正被處理指令長度的值(I1,I0)加到控制位S1和S0,去除任何執(zhí)行值。即S1(t+1),S0(t+1)=S1(t),S0(t)+I0,I1 (1)對于轉(zhuǎn)移或復(fù)位狀態(tài),S1和S0的值根據(jù)要處理轉(zhuǎn)移或復(fù)位的特定指令而復(fù)位,所以不用公式(1)。在本領(lǐng)域中,處理轉(zhuǎn)移、復(fù)位與停止指令的各種方法是眾所周知的,而且由于這種處理與本發(fā)明無多大關(guān)系,下不再作描述。
在一示例性處理中,旋轉(zhuǎn)器308開始時為ABC輸出,選擇位S1和S0為00。如果接收6位指令,將I1和I0為01的相應(yīng)指令長度位加到S1和S0,得到為01的S1和S0,對應(yīng)于旋轉(zhuǎn)器308為BCD的輸出324。在處理了前1位指令數(shù)據(jù)(輸入A)后,BCD輸出就是下一在線的指令數(shù)據(jù)組。
如果下一指令是個32位指令,則把指令長度I1和I0(10)加給當(dāng)前的S1和S0狀態(tài)01,得到11,得出的輸出是DAB,對應(yīng)于還未處理的下一個48位指令數(shù)據(jù),用位于最高有效或最左邊位置的輸入端D上接收的下一在線指令數(shù)據(jù)配置。先前來自輸入端B和C的指令數(shù)據(jù)已了處理。應(yīng)該指出,在先前的32位指令處理期間,按上述的指令數(shù)據(jù)裝載處理法將新數(shù)據(jù)裝入指令寄存器307。
如果接下來處理48位指令,就對選擇位S1和S0的狀態(tài)增加指令長度I1和I0(11),得到S1和S0為10,去除執(zhí)行,將旋轉(zhuǎn)器308配置成輸出CDA。輸出CDA對應(yīng)于下一個待處理的48位指令數(shù)據(jù),其下一在線位配置在了高有效位置上。先前在輸入端D、A和B上的指令數(shù)據(jù)已作過處理。再次指出,在前一指令處理期間,已將新的指令數(shù)據(jù)讀入寄存器306。作為舉例,已提供了上述執(zhí)行相關(guān)指令數(shù)據(jù)處理的邏輯,而使用其它邏輯來執(zhí)行上述的指令數(shù)據(jù)處理是顯然的,與本發(fā)明的應(yīng)用相符合。
這樣,在該示例性實施例中,控制邏輯將旋轉(zhuǎn)器308配置成輸出從指令寄存器306和307接收的下一個48位指令數(shù)據(jù),而把要處理的下一個指令位置于最左邊位置。本領(lǐng)域的技術(shù)人員將明白,以任何預(yù)定的配置將指令提交給指令處理單元158,從而可識別下一組要處理的指令數(shù)據(jù),這同樣符合本發(fā)明的使用。
如上述指出的,除了輸出下一個48位未處理的指令數(shù)據(jù)以外,旋轉(zhuǎn)器308還向控制邏輯304指明下一個要處理的指令的尺寸。具體而言,旋轉(zhuǎn)器308向控制邏輯304輸出附加的下一個要處理的5位指令數(shù)據(jù)的副本。在本發(fā)明該較佳實施例中,由該指令的前五位規(guī)定該指令的長度。
圖8是按本發(fā)明一實施例配置的MAC單元128的框圖。右移900接收要累加的40位輸入,并將該值移動0位或16位,輸出加到多路復(fù)用器901的一個輸入端。多路復(fù)用器901的另一輸入端接收值0×8000。乘法器902接收兩個要相乘的16位值,并一起從指令譯碼器158接收符號位,每個輸入總計17位。
乘法器902的輸出由左移904接收,左移904按指令譯碼器158的規(guī)定,將輸出移動0、1、2或3位。加法器906接收多路復(fù)用器901和左移904的輸出,并按指令譯碼器158的命令對兩個輸入值作加或減,并將結(jié)果輸出給本發(fā)明該示例性實施例中的寄存庫輸入口PI4。
在本發(fā)明有些實施例中,在MAC單元128里應(yīng)用右移16單元900比其它類型的MAC單元具有附加的應(yīng)用性。更具體地遇,應(yīng)用右移16單元900便于在減少時鐘周期數(shù)時作雙倍精度操作。例如,為了執(zhí)行將32位數(shù)(A)乘以16位數(shù)(B)的雙倍精度操作,在第一時鐘周期內(nèi),先將32位數(shù)的低16位(A1)乘以16位數(shù)B,得出一個存儲在寄存庫120里有中間值I。
在第二時鐘周期內(nèi),將中間值I輸入右移16單元900右移16位。另外,將16位數(shù)B與32位數(shù)A的高16位(Ah)相乘,將結(jié)果與右移16單元900里的各移的中間值I相加。這樣,雙倍精度乘法是用兩個時鐘周期而不是三個時鐘周期執(zhí)行的。一般而言,許多雙倍精度操作要求一個或多個變量相對于其它變量而移位,這樣可像乘法或累加操作之一一樣在同一個時鐘周期內(nèi)作移位,減少了雙倍精度操作必需的周期數(shù)。
通常要求三個時鐘周期,因為第一次乘法操作、移位操作和第二次乘法操作通常各要求一個時鐘周期。因此,使用移位電路減少了雙倍精度乘法所需的時鐘周期數(shù)。利用右移單元900還有利于涉及不同大小操作數(shù)據(jù)的其它雙倍精度操作。
II.指令配置A.概述圖9是一框圖,表示本發(fā)明該示例性實施例使用的指令體系。方框402表示可變長度全指令,包括控制DSP操作的16、32或48位??勺冮L度指令又由包括一般指令段的指令段和存儲器移動與程序流(MMOF)指令組成,如方框403所示。本發(fā)明該示例性實施例中使用的一般指令段包括MAC8、MAC16、ALU8、ALU16、DMOV16、DMOV24與DL40指令段。MMPF指令段包括OneMem11、TwoMem19、TwoMov19和ThreeMem24指令段。MMPF指令段由方框406所示的MMPF指令子段組成。MMPF指令子段包括LD(A)、LD(B)、ST(A)、ST(B)、LS(C)、DMOVA、DMOVB和PF8。下面詳細(xì)描述各種全指令、指令段和指令子段。
B.全指令在本發(fā)明該較佳實施例中,用長度為16、32和48位的指令段而形成。全指令被制成可在指令存儲器152內(nèi)連續(xù)存儲并由DSP處理。下面描述全指令格式與結(jié)構(gòu),接著說明指令段的格式與結(jié)構(gòu)。在操作期間,DSP每個時鐘周期處理一條全指令。這樣,在處理每條全指令期間,可作多次操作,特定的操作由選擇的特定組的指令段決定。
用于本發(fā)明該示例性實施例的三條全指令的格式如表3所示。
43 0
27 0
11 0
表3.全指令格式用于每條全指令的五位首部,指明該一指令的長度和某些有關(guān)全指令內(nèi)容的附加信息。表4提供了用于本發(fā)明該示例性實施例的首部的格式。
表4.全指令首部格式每條全指令(16、32和48位長)包含一個或多個指令段。表5列出本發(fā)明該示例性實施例中的現(xiàn)有指令段。在討論了全指令后,再詳述指令段的格式與操作。
表5.指令段表6-8列出指令段的各種組合,可應(yīng)用于本發(fā)明該示例性實施例中的48、31和16位全指令里。雖然指令段的其它組合符合本發(fā)明的使用和操作,但是這里揭示的組合的某些特點較佳,如下面要詳述的那樣。另外,全部或部分全指令被示為“保留”,在描述的未規(guī)定或使用特定的指令組合,但是可以設(shè)想出將來使用這些全指令組合。
表6列出16位全指令在按本發(fā)明該示例性實施例執(zhí)行時的格式化。全指令由五位首部后接11個指令位組成。
11 0
表6.16位全指令格式首部位指明該指令的長度及有關(guān)指令類型的一些信息。對于首部00000而言,最低有效三個尾位用來進(jìn)一步規(guī)定執(zhí)行的操作。具體而言,尾位000指明剩余的8位包含一個MAC8指令段。尾位001指明剩余的8位包含一個ALU8指令段。對于其它尾位組合,不規(guī)定指令。
對于首部00001,剩余11位包含一個OmeMem11指令段。通過提供允許ALU、MAC或存儲器移動待執(zhí)行操作的16位全指令,可用最短的全指令作最常見的操作。由于最短的指令要求存儲器存儲的量最少,所以應(yīng)用所述的16位全指令減少了執(zhí)行特定一組操作所需的指令存儲器容量。這樣,DSP的整體尺寸減小了。也因此減少了成本和功耗。
16位指令通常在只能作一次或少數(shù)幾次操作的條件下使用。一般而言,可以縮小只限定一次操作所需的指令的尺寸,于是對一次操作就使用半字即16位指令。另外,16位指令可用于MAC、ALD/存儲器移動或程序流程操作,這類操作包羅了幾乎所有人們想執(zhí)行的操作。
在按本發(fā)明一實施例配置時,表7列出了指令段組合和相關(guān)的32位全指令格式化。
27 19 11 0
表7.32位全指令格式如上所述,五個首部位指出了全指令長度及特定的指令段組合。例如,首部00010表示剩余27個指令位含一個ThreeMem27指令段,而首部00011表示剩余27個指令位含一ALU8指令段后接一TwoMwm19指令段。
對于首部01111,最低尾位還指出指令段的組合。例如,對于最低尾位0,下兩個最低位表明剩余24位飲食4、ALU16后接MAC8還是MAC16后接ALU8指令段。其它尾位狀態(tài),如最低尾位1,限定著保留的組合。
32位指令可同時執(zhí)行許多最常見的操作,既有利于流水線操作,也縮小了指令尺寸。例如,像濾波這樣的應(yīng)用,通常要作兩次限出操作和一次乘/累加操作。32位指令能以流水線方式作這種成組操作,且不要求填滿48位指令空間。
此外,32位指令可同時作MAC與ALU操作以及程序轉(zhuǎn)移與調(diào)用操作,也不用最大的指令尺寸。
當(dāng)按本發(fā)明一實施例執(zhí)行時,表8列出了48位全指令的格式和指令段組合。
4335 27 19 11 0
表8.48位全指令格式五個首部位規(guī)定了該指令的長度及具體的指令段組合。例如,首部位00100表明,43個剩余指令位包括DMOV24、MAC8和OneMem11指令段。首部位10011表明,43個剩余位包括ALU16、MAC8和TwoMwm19指令段。
對于首部位11111,三個最低尾位還指出了飲包含于剩余指令位置的指令段。例如,尾位000表示剩余40個指令位包含MAC16和DMOV24指令段。尾位001表示剩余40個指令位包含MAC8、ALU8和DMOV24指令段。尾位110表示剩余400個指令位包含DL40指令段。
48位人指令提供的指令段組合可同時作重操作,故比串行操作快得多。例如,若干48位全指令允許同時作ALU操作、AMC操作和存儲器操作。存儲器操作包括裝載、存儲和數(shù)據(jù)移動操作,且常常允許一次訪問多個存儲位置。
48位指令允許乘法操作結(jié)合ALU操作和取數(shù)據(jù)與程序流程操作一起以流水線方式進(jìn)行。這對濾波操作在結(jié)合標(biāo)定操作時是有用的,因為此時通常要作MAC操作,接著作ALU(如移位)操作。應(yīng)用MAC與ALU操作的其它應(yīng)用場合包括組合三種或多種數(shù)據(jù)流。48位指令,尤其在組合應(yīng)用三總線結(jié)構(gòu)方面,有利于流水線操作。
這樣可有效地將能以單條48位全指令執(zhí)行的操作種數(shù)增加為五種(MAC、ALU、FETCH1、FETCH2和STORE)。通常,利用DSP的多條內(nèi)部總成在DSP內(nèi)耦接各種處理系統(tǒng),進(jìn)一步增強了在DSP中同時執(zhí)行多條指令的能力。利用不同的總線,可以同時移動和訪問不同的數(shù)據(jù)組。
根據(jù)能執(zhí)行的操作種數(shù)來改變指令長度,進(jìn)一步提高了使用指令存儲器的效率。任何具體的任務(wù)都具有可同時作多重操作的周期,而其它周期只能作少數(shù)或只有一次操作。按能同時進(jìn)行的操作種數(shù)調(diào)整指令長度,可減少指令存儲器容量。
當(dāng)結(jié)合使用緊密指令裝填法時,可進(jìn)一步減少上述示例性方法所需的指令存儲器。使用可變長度指令或緊密裝填指令,或使用這兩者,通過用更多的電路面積實施特性,有助于應(yīng)用多總線結(jié)構(gòu)和多重訪問寄存庫。這樣,將本發(fā)明這些方面的組合協(xié)同地組合起來,可同時提高性能和效率。
C.指令段如上所述,全指令包括一組以預(yù)定方式集群的一個或多個指令段。在本發(fā)明該示例性實施例中,這組現(xiàn)有的指令段如表5所列。利用本發(fā)明該示例性實施例所提供的全指令而得出的指令段和組合,設(shè)計成讓該組操作所需的指令存儲器容量。下面討論本發(fā)明該示例性實施例所應(yīng)用的各種指令段的格式與操作狀態(tài)。
C1.指令段術(shù)語在下對指令段與子段的整個討論中,表9和10列出了用來參照諸寄存器的縮寫。另外,表的左邊示出了本發(fā)明該示例性實施例使用的具體位碼。
表9.指令段術(shù)語與代碼
表10.指令段術(shù)語和代碼C2.指令段說明指令段組包括兩類MAC指令段MAC8與MAC16.MAC8指令段支持帶符號-不帶符號和帶符號-帶符號的乘法類型,結(jié)果存在累加器L0或L1中。MAC8指令段允許用16位全指令作MAC操作而節(jié)省了指令RAM,而且對于許多并行指令組合,要求MAC操作編碼為32位指令而不是48位指令。一般而言,MAC8指令執(zhí)行的處理符合下述公式L0L1=L0&PlusMinus;L1&PlusMinus;R0R2R4R6*R0R1R3R5(SU)(SS)---(2)]]>如公式(2)所示,MAC8指令段讓寄存器L0或L1的內(nèi)容與寄存器R0、R2、R4與R6的乘積相加,并將R0、R1、R3和R5直接設(shè)置到寄存器的乘積里。另<p>
表2-1
表13.MCA16指令段格式表14列出的代碼用于規(guī)定MAC16指令段內(nèi)的各種操作。
表14.MAC16指令段代碼注將指令L0=R0×R0(SU)<<0譯成NOP。
Mtype11用作直接相乘的RND,對于帶符號-帶符號乘法/累加指令,將累加器右移16。
帶mtypeSU與macOp1=macOp2的MAC指令均性非法。
MAC16指令段可左移達(dá)到3,在單單相乘(無累加)時能作舍入運算,舍入在移位后出現(xiàn)。在累加時,要加的累加器與帶符號-帶符號相乘同時下移16。CPS位是協(xié)同處理器選通位,表示應(yīng)將MAC操作中使用的數(shù)據(jù)送給協(xié)同處理器。
應(yīng)當(dāng)指出,MAC8指令段執(zhí)行的操作子小組呆用MAC16執(zhí)行。對MAC8指令段選擇的特定組指令,是可用MAC16指令段執(zhí)行的該組操作以外最經(jīng)常執(zhí)行的指令組。通過用MAC8指令段執(zhí)行大多數(shù)MAC操作,就節(jié)省了程序存儲器。
8位ALU8指令段包括的ALU操作,是最經(jīng)常與MAC操作(MAC8與MAC16)并行執(zhí)行的操作,它不含中間數(shù)據(jù)。所有的ALU8移位操作都是算術(shù)移位,利用一只內(nèi)部移位寄存器(SR)節(jié)省指令編碼位。表15列出用ALU8指令段執(zhí)行的操作。
表15.ALU8指令段操作LS是裝載源(L0-L3),L0是裝載目的地(L0-L3)。ALU8指令段執(zhí)行的特定操作,由組成表16中指令段的8位值規(guī)定。
表16.ALU指令段格式表17列出的特定代碼用于限定利用ALU8指令段執(zhí)行的操作。
表17.ALU指令段代碼注全零指令L0=DETNORM(L0)譯碼為NOP。
其中LD=DETNORM(LD)的指令為非法。
ALU8清除累加器指令為LD=LD=LD。
ALU16指令段可作算術(shù)與邏輯兩種移位,表18列出了ALU16指令執(zhí)行的具體操作。
<<表示算術(shù)移位,<<<表示邏輯移位。
表18.ALU16指令段操作指令L0=SET(L0)譯碼為NOP。
表19列出ALU16指令段的格式。<p>
表3
表1
注指令L0=0譯碼為NOP。
即時10帶符號,即時9與11不帶符號。
指令OUTPORTA(port-addr)讀A總線上的值,并將它輸出到指定端口。通過從存儲器A同時讀一值,該指令可將值直接從存儲器A送到該端口。OUTPORTB(port-addr)的工作與此相同。
DMOV24指令段是個24位指令段,執(zhí)行不同的裝載/存儲寄存器直接或裝載寄存器即時操作,如表23所示。
表23.DMOV24指令段操作起動寄存器位于AGU單元里。
表24列出的格式和某些代碼,可用本發(fā)明該示例性實施例中的DMOV24指令段執(zhí)行各種現(xiàn)有的操作。
(l)(l)(j)(k)(g)(g)(e)(f)(a)(b)(c)(d)(i)(i)(g)(h)(h)表24.DMOV24指令段格式與代碼注地址14與17不帶符號,即時16帶符號。
應(yīng)該指出,對于DMOV24和其它指令段,有些操作可編碼兩次。例如,行(i)與(j)里規(guī)定的格式對同一操作編碼,一個格式規(guī)定使用即時總線Im1,另一格式規(guī)定使用即時總線Im2。編碼兩次可讓該指令段與眾多其它也能要求使用即時總1或2的指令段組合起來。
40位雙載指令段(DL40)是一種40位的指令段,可作即時裝載地址操作。
表25列出了本發(fā)明該示例性實施例中執(zhí)行的具體操作。
表25.DL40指令段格式表26列出了DL40指令段對每次操作的格式。
(e)(d)(d)(d)(b)(c)(a)(h)(j)(g)(i)(f)(k)(m)(n)(l)
表26.DL40指令段格式與代碼注地址14不帶符號,即時16與32帶符號。
同樣如表5所示,在本發(fā)明該示例性實施例中提供了四類存儲器移動和程序流指令段,它們列于表27。
表27.存儲器移動和程序流指令段
每個存儲器移動和程序流指令(MMPF)段由表28列出的一組MMPF子段組成。
表28.組合數(shù)據(jù)移動和程序流指令子段
首先討論MMPF指令段的格式與操作,然后詳細(xì)討論MMPF子段的格式與操作。
OneMem11MMPF指令段用來執(zhí)行單個存儲器裝載與存儲操作、數(shù)據(jù)移動操作和程序流操作。在這里提供的示例性實施例中,用OneMem11MMPF指令段執(zhí)行八種不同的操作,由11位段中前三位表示的特定操作如表29所示,該表列出了可用OneMem11數(shù)據(jù)移動指令段執(zhí)行的操作。
(l)(c)(k)(j)(p)(o)(n)(m)(b)(h-i)(r)(s)(k)(j)(d-g)(t)(q)表19.16位ALU指令段格式與代碼ALU16指令段執(zhí)行的具體操作,由組成表20的指令段的位值規(guī)定。
表20.ALU16指令段代碼注全零指令L0=SET(L0);譯碼為NOP。
對BIT指令(h,i,j),通過附加帶即時5的零符號位,匯編程序?qū)磿r6編碼(可簡化譯碼)。
DMOV16指令段是一種16位指令段,可執(zhí)行不同的數(shù)據(jù)移動、數(shù)據(jù)入口和數(shù)據(jù)出口操作,如表21所示。
表21.DMOV16指令段操作表22列出的格式與代碼,可用DMOV16指令段執(zhí)行現(xiàn)有的操作。
(d)(d)(c)(c)(c)(b)(e)(e)(e)(f)(f)(g)(h)表22.DMOV16指令段格式
表37.DMOVA指令子段操作表38是本發(fā)明該示例性實施例提供的DMOVA指令子段格式。
(a,b,c)(d)(e)(f)(f)(f)(d)(g)表38.DMOVA指令子段格式這樣,提供可包含一個或多個指令子段的MMPF指令段,進(jìn)一步增加了可用全指令執(zhí)行的操作種數(shù)。例如,全指令可讓算術(shù)與MAC操作同一組三種存儲器移動與程序流操作一起執(zhí)行。用單條指令執(zhí)行這么許多操作的能力,進(jìn)一步減少了作某種給定操作所需的指令總數(shù),從而減少了對DSP要求的整個指令存儲器。減少指令存儲器可減小芯模尺寸,從而減少了DSP的成本與功耗,這對于范圍廣泛的包括移動無線電話的應(yīng)用而言,使DSP更為合適。
這樣已經(jīng)描述了應(yīng)用并行可變長度指令組控制DSP的系統(tǒng)與方法。以上描述的諸較佳實施例,能讓本領(lǐng)域的任何技術(shù)人員使用本發(fā)明。對他們而言,完全明白這些實施例的種種改型,而且不須運用發(fā)明能力就可將這里定義的基本原理應(yīng)用于其它實施例。例如,雖然描述的系統(tǒng)與方法同DSP相關(guān),但其各個方面都適用于一般的計算系統(tǒng)與裝置。
通過參照諸較佳實施例面對本發(fā)明所作的描述,可以充分理解到,有關(guān)實施例僅用作示例,對于具備相關(guān)知識與技能的人們,各種改型與變化并不背離由所附的權(quán)項及其等效的規(guī)定的發(fā)明精神與范圍。
權(quán)利要求
1.一種用存儲在存儲器中的指令控制數(shù)字信號處理器的方法,所述存儲器具有地址空間,所述方法包括步驟從存儲器寫出第一數(shù)據(jù)字,所述第一數(shù)據(jù)字包含第一指令的第一部分;及從存儲器寫出第二數(shù)據(jù),所述第二數(shù)據(jù)字包含所述第一指令的第二部分和第二指令的第一部分。
2.如權(quán)利要求1所述的方法,其特征在于所述第一指令包括多個指令段,每個指令段用于執(zhí)行一特定操作。
3.如權(quán)利要求1所述的方法,其特征在于所述第一與第二指令的長度不同。
4.如權(quán)利要求1所述的方法,其特征在于所述第一與第二指令包括幾組指令段,每個指令段執(zhí)行一特定操作。
5.如權(quán)利要求4所述的方法,其特征在于所述指令段包括第一與第二指令段,所述第一指令段請求一組操作,這組操作是所述第二指令段執(zhí)行的一組操作的子組。
6.如權(quán)利要求5所述的方法,其特征在于所述第一指令段比所述第二指令段更短。
全文摘要
數(shù)字信號處理電路要求使用可變長度指令組。示例的DSP包括一組可在其上與寄存庫(120)交換數(shù)據(jù)的三條數(shù)據(jù)總線(108、110、112)和三個數(shù)據(jù)存儲器(102、103、104)。寄存庫的寄存器可被至少兩個處理單元(128、130)訪問。使用的取指令單元(156)接收存儲在指令存儲器(152)里的可變長度指令,該指令存儲器可用三個數(shù)據(jù)存儲器(102、102、104)分開。
文檔編號G06F9/38GK1862484SQ20061005954
公開日2006年11月15日 申請日期1999年3月4日 優(yōu)先權(quán)日1998年3月18日
發(fā)明者G·C·西赫, 周群真, S·K·杰哈, I·坎, 林健, Q·莫蒂瓦拉, D·約翰, 張利, 張海濤, 李維新, C·E·薩卡瑪基, P·A·坎塔克 申請人:高通股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1