專利名稱:數(shù)字信號(hào)處理器的制作方法
本申請(qǐng)是申請(qǐng)日為1999年3月4日申請(qǐng)?zhí)枮榈?9806366.5號(hào)發(fā)明名稱為“數(shù)字信號(hào)處理器”的中國(guó)專利申請(qǐng)的分案申請(qǐng)。
I.發(fā)明背景本發(fā)明涉及數(shù)字信號(hào)處理器。本發(fā)明特別適用于(但不專用于)應(yīng)用高度平行、高度流水線處理技術(shù)的數(shù)字信號(hào)處理。
II.相關(guān)技術(shù)的說(shuō)明數(shù)字信號(hào)處理器(DSP)通常用于實(shí)時(shí)處理數(shù)字信號(hào)。數(shù)字信號(hào)一般是一系列數(shù)字或數(shù)字值,用于代表相應(yīng)的模擬信號(hào)。DSP已廣泛應(yīng)用于各種場(chǎng)合,包括密致盤播放機(jī)等音頻放蜂窩電話等無(wú)線通信系統(tǒng)。
DSP往往被認(rèn)為是微處理器的一種特殊形式。像微處理器一樣,一般將DSP構(gòu)制在硅基半導(dǎo)體集成電路上。另外,像微處理器那樣,通過(guò)應(yīng)用縮簡(jiǎn)指令組(RISC)運(yùn)算技術(shù),DSP的運(yùn)算能力增強(qiáng)了,RISC運(yùn)算技術(shù)包括使用較少數(shù)量的同尺寸指令來(lái)控制DSP的操作,每條指令的執(zhí)行時(shí)間相同。RISC運(yùn)算技術(shù)的應(yīng)用,提高了執(zhí)行指令的速率或時(shí)鐘速率,附大了DSP內(nèi)指令流水線操作量,由此增強(qiáng)了DSP的整體運(yùn)算能力。
用RISC運(yùn)算技術(shù)編制DSP也產(chǎn)生了不希望有的特性。特別是,基于RISC的DSP要執(zhí)行大量指令來(lái)完成給定的任務(wù)。執(zhí)行附加的指令附大了DSP的功耗,盡管由于基于RISC的DSP的時(shí)鐘速度提高而縮短了執(zhí)行這些指令的時(shí)間。另外,應(yīng)用數(shù)量更大的指令還增大了DSP內(nèi)片上指令存儲(chǔ)器的尺寸。存儲(chǔ)器在DSP內(nèi)要求相當(dāng)大的電路面積(常常超過(guò)總面積的50%),增大了DSP的尺寸與成本。因此,對(duì)于數(shù)字蜂窩網(wǎng)電話或其它類型電池操作的無(wú)線通信系統(tǒng)等低成本、小功率應(yīng)用而言,采用基于RISC的DSP并非理想。
圖1是用原有技術(shù)構(gòu)制的DSP的簡(jiǎn)化框圖。算術(shù)邏輯單元(ALD)16耦合至AIU寄存庫(kù)17,乘積電路(MAC)36耦合至MAC寄存庫(kù)27.數(shù)據(jù)總線20將MAC寄存庫(kù)27、ALU寄存器17和(片上)數(shù)據(jù)存儲(chǔ)器10耦接起來(lái)。指令總線22將MAC寄存庫(kù)27、(片上)指令存儲(chǔ)器12、MAC寄存庫(kù)27與ALU寄存庫(kù)17耦接起來(lái)。指令譯碼器18耦合到MAC26與ALU16,而在某些原有技術(shù)系統(tǒng)中,將譯碼器18直接耦合到指令存儲(chǔ)器12。數(shù)據(jù)存儲(chǔ)器10還耦合至數(shù)據(jù)接口11,指令存儲(chǔ)器12還耦合至指令接口13。數(shù)據(jù)接口12與指令接口13與片外存儲(chǔ)器6交換數(shù)據(jù)與指令。
操作時(shí),指令存儲(chǔ)器12中的指令由譯碼器18譯碼。相應(yīng)地,指令譯碼器18產(chǎn)生供給ALU16與MAC26的內(nèi)部控制信號(hào)。該控制信號(hào)通常令A(yù)LU16獲取在ALU寄存庫(kù)17與數(shù)據(jù)存儲(chǔ)器10或指令存儲(chǔ)器12之間變換的數(shù)據(jù),還令MAC26獲取在MAC寄存庫(kù)27與指令存儲(chǔ)器12或數(shù)據(jù)存儲(chǔ)器10之間交換的指令數(shù)據(jù),還要令A(yù)LU16與MAC26根據(jù)分別存儲(chǔ)在ALU寄存庫(kù)17與MAC寄存庫(kù)27中的數(shù)據(jù)作各種操作。
在示例性操作中,指令存儲(chǔ)器12可以存有供ALU16與MAC使用的系數(shù)數(shù)據(jù),而數(shù)據(jù)存儲(chǔ)器10可以包含被處理的數(shù)據(jù)(信號(hào)數(shù)據(jù))。在一般實(shí)踐中,系數(shù)數(shù)據(jù)可用DSP構(gòu)成頻率濾波器。濾波時(shí),將來(lái)自數(shù)據(jù)存儲(chǔ)器10的信號(hào)數(shù)據(jù)和來(lái)自指令存儲(chǔ)器12的系數(shù)數(shù)據(jù)讀入MAC寄存器27。指令存儲(chǔ)器12內(nèi)的附加指令數(shù)據(jù)也通過(guò)指令數(shù)據(jù)總線11或通過(guò)直接連接供給指令譯碼器18,它規(guī)定了準(zhǔn)備由MAC27執(zhí)行的操作。通常把MAC26產(chǎn)生的結(jié)果讀回到數(shù)據(jù)存儲(chǔ)器10。
這種原有處理技術(shù)導(dǎo)致許多處理上的低效性,例如包括總線對(duì)指令存儲(chǔ)器12的訪問(wèn)爭(zhēng)用,而總線必須將指令數(shù)據(jù)提供給MAC寄存器16和指令譯碼器18,還包括總線對(duì)數(shù)據(jù)存儲(chǔ)器10的的訪問(wèn)爭(zhēng)用,而總線又必須讀出信號(hào)數(shù)據(jù)并寫入輸出數(shù)據(jù)。另外,在許多場(chǎng)合中,對(duì)輸出數(shù)據(jù)的附加處理必須由ALU16來(lái)完成,更加增加了對(duì)數(shù)據(jù)存儲(chǔ)器10的訪問(wèn),造成對(duì)數(shù)據(jù)總線20的爭(zhēng)用,因?yàn)檩敵鰯?shù)據(jù)必須從MAC寄存庫(kù)27寫入數(shù)據(jù)存儲(chǔ)器10,然后讀出給ALU寄存器17.這種讀寫操作都在總線20上進(jìn)行,要耗用附加的總線周期。這類低效性降低了DSP的處理性能。
發(fā)明概述本發(fā)明通過(guò)解決上述諸問(wèn)題與低效時(shí),并提供本說(shuō)明描述的其它一些特性與改進(jìn),以期改善DSP的性能與有效時(shí)。
本發(fā)明為DSP提供一種新的改進(jìn)的方法與電路。
根據(jù)本發(fā)明的一個(gè)方面提供的DSP,存儲(chǔ)器可通過(guò)第二組可選總線與第一組處理裝置連接,而把可選總線選成在存儲(chǔ)器與處理裝置之間傳輸?shù)目勺冮L(zhǎng)度數(shù)據(jù)得以優(yōu)化。
本發(fā)明各種其它方面均由所附的權(quán)利要求書限定。
本發(fā)明可用可變長(zhǎng)度指令組實(shí)現(xiàn)。一部分可變長(zhǎng)度指令與結(jié)束出現(xiàn)在存儲(chǔ)器的字邊界上。利用包含可變數(shù)量的指令同的指令可實(shí)現(xiàn)本發(fā)明附加的諸方面。每個(gè)指令段可執(zhí)行特定的操作,以在每個(gè)時(shí)鐘周期內(nèi)作多次操作,從而減少了執(zhí)行任務(wù)所需的時(shí)鐘周期總數(shù)。
一示列性DSP包括一組三根數(shù)據(jù)總線,數(shù)據(jù)可在其上與寄存庫(kù)和三只數(shù)據(jù)存儲(chǔ)器作交換。應(yīng)用兩條以上尤其是三條數(shù)據(jù)總線,實(shí)現(xiàn)了本發(fā)明明顯減少總線爭(zhēng)用的另一方面。本發(fā)明的一個(gè)實(shí)施例要求數(shù)據(jù)總線包括一條寬總線和兩條窄總線,前面耦合至寬數(shù)據(jù)存儲(chǔ)器,后者耦合至兩個(gè)窄數(shù)據(jù)存儲(chǔ)器。
本發(fā)明一實(shí)施例的一個(gè)方面是應(yīng)用于寄存庫(kù),其寄存器可至少由兩個(gè)處理單元訪問(wèn),從而可用多個(gè)處理單元對(duì)特定數(shù)據(jù)組作多次操作,無(wú)須對(duì)存儲(chǔ)器讀寫數(shù)據(jù)。本發(fā)明該示例性實(shí)施例中的處理單元,包括一個(gè)ALU和一個(gè)MAC單元。當(dāng)與多總線結(jié)構(gòu)、高度平行指令組合應(yīng)用時(shí),就實(shí)現(xiàn)了本發(fā)明的另一方面,即執(zhí)行高度流水線的多操作處理。
通過(guò)包含一個(gè)指令取出單元接收存儲(chǔ)在指令存儲(chǔ)器里的可變長(zhǎng)度指令,可實(shí)現(xiàn)本發(fā)明的其它方面。運(yùn)用與三只數(shù)據(jù)存儲(chǔ)器組分開的指令存儲(chǔ)器,可實(shí)現(xiàn)本發(fā)明的還有一個(gè)方面。指令譯碼器對(duì)來(lái)自指令存儲(chǔ)器的指令譯碼并產(chǎn)生控制信號(hào),讓數(shù)據(jù)在各種寄存器、數(shù)據(jù)存儲(chǔ)器與功能單元之間交換,允許在每個(gè)時(shí)鐘周期內(nèi)作多次操作。將本發(fā)明的各個(gè)方面協(xié)同組合起來(lái),可產(chǎn)生意料不到的理想結(jié)果。例如,應(yīng)用連續(xù)存在存儲(chǔ)器內(nèi)的可變長(zhǎng)度指令,減少了DSP必需的電路面積,便于對(duì)DSP增設(shè)多條數(shù)據(jù)總線,并增設(shè)可被多個(gè)處理單元訪問(wèn)的寄存器,提高DSP的總體性能。組合本發(fā)明各個(gè)方面提提供的其它優(yōu)點(diǎn)是明顯的,下面將作詳述。
根據(jù)參照附圖對(duì)本發(fā)明示例性實(shí)施例的詳述,特別是所附權(quán)項(xiàng)所規(guī)定的本發(fā)明的上述特征與其它特征及其優(yōu)點(diǎn)就更清楚了。
附圖簡(jiǎn)述根據(jù)下面結(jié)合附圖對(duì)本發(fā)明諸示例性實(shí)施例的詳述,本發(fā)明的特征、目的和優(yōu)點(diǎn)將變得更加清楚,圖中同樣的字符表示相應(yīng)的元件,其中圖1是按原有技術(shù)構(gòu)制的DSP的方框圖2是實(shí)施本發(fā)明的DSP的方框圖;圖3是寄存庫(kù)輸入口與寄存器之間連接的方框圖;圖4是寄存庫(kù)的寄存器與輸出口之間連接的方框圖;圖5是存儲(chǔ)在本發(fā)明一實(shí)施例的存儲(chǔ)空間里一組可變長(zhǎng)度指令的示圖;圖6是表示指令取出單元操作的流程圖;圖7是按本發(fā)明一實(shí)施例構(gòu)制的指令取出單元的方框圖;圖8是按本發(fā)明一實(shí)施例構(gòu)制的MAV單元的方框圖;圖9是本發(fā)明一實(shí)施例使用的指令體系的方框圖。
較佳實(shí)施例的詳細(xì)描述本發(fā)明是新的改進(jìn)的數(shù)據(jù)信號(hào)處理方法與電路。在整個(gè)說(shuō)明書中,對(duì)信號(hào)、指令與數(shù)據(jù)采取了各種基準(zhǔn)。這類信號(hào)、指令與數(shù)據(jù)較佳地用電壓、電流表示,電流庫(kù)包括帶電、光學(xué)或磁性粒子,或它們的某種組合,其用法是眾所周知的。用各種化學(xué)與生物化合物來(lái)表示這類信號(hào)、指令與數(shù)據(jù),一般也符合本發(fā)明的使用,但是不作優(yōu)先考慮,因?yàn)殡y以使用、管理和操縱這類項(xiàng)目。
另外,參照了本發(fā)明的各個(gè)方面、有利性、特征或優(yōu)點(diǎn)(當(dāng)不特定參照時(shí),在此統(tǒng)稱為方面)。本發(fā)明的有些實(shí)施例中,可以單獨(dú)實(shí)現(xiàn)這些不同的方面而無(wú)須是提出本發(fā)明的其它方面。然而,在本發(fā)明的其它實(shí)施例中,可以將本發(fā)明的兩個(gè)或多個(gè)方面一起實(shí)現(xiàn),由此產(chǎn)生的協(xié)同和意料之外的優(yōu)點(diǎn),比只以本發(fā)明兩個(gè)或多個(gè)組合方面中的一個(gè)方面實(shí)現(xiàn)的實(shí)施例更多。
I.DSP操作原理與指令存儲(chǔ)圖2是一部分DSP電路的方框圖,該電路按本發(fā)明一示例性實(shí)施例構(gòu)制。數(shù)據(jù)存儲(chǔ)器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分別耦合至寄存庫(kù)120的輸出口P01、P02與P03,并耦合至寄存庫(kù)120的輸入口PI1、PI2與PI3。較佳地,數(shù)據(jù)總線A、B、C對(duì)數(shù)據(jù)存儲(chǔ)器102-104與寄存庫(kù)120內(nèi)寄存器之間的數(shù)據(jù)作讀寫。
使用三條數(shù)據(jù)總線與三只數(shù)據(jù)存儲(chǔ)器,可讓更多數(shù)據(jù)在寄存庫(kù)與數(shù)據(jù)存儲(chǔ)器之間交換而不產(chǎn)生總線爭(zhēng)用。例如,使用三條數(shù)據(jù)總線A、B與C,可同時(shí)從三只存儲(chǔ)器102-104里作三次取出操作。同樣地,由于能任意組合三次取寫操作,故能同時(shí)作三次寫操作。
添加第四條數(shù)據(jù)總線可作更多次操作,這與本發(fā)明的某些實(shí)施例相一致。然而,只使用三條數(shù)據(jù)總線特別有利,因?yàn)槿诳偩€有利于DSP通常執(zhí)行的濾波等許多任務(wù)。因此,添加第四條數(shù)據(jù)總線并不像添加第三條數(shù)據(jù)總線那樣提供同樣增加的性能提高,且要求同樣的額外電路面積量。因此,添加第四條數(shù)據(jù)總線的效果比不上添加第三條總線。故在本發(fā)明的許多實(shí)施例中,較佳地只用三條數(shù)據(jù)總線。
輸出口P04、P05和P06或寄存庫(kù)120耦合至乘積(MAC)單元128,后者的輸出又耦合至寄存庫(kù)120的輸入口PI4。寄存庫(kù)120的輸出口PI4。寄存庫(kù)120的輸出口P007與P08耦合至ALU130,而后者的輸出耦合至寄存庫(kù)120的輸入口PI5。
指令存儲(chǔ)器152耦合至指令取出單元156與指令接口150。指令譯碼器158耦合至指令取出單元156,并耦合至即時(shí)總線Im1、Im2與Im3以及ImALU。即時(shí)總線Im1、Im2與Im3耦合至多路復(fù)用器122、124與126。即時(shí)總線ImALU耦合至ALU130。除了上述的數(shù)據(jù)耦合外,譯碼器158還耦合至由控制接線(為便于給畫而未示出)表示的各種子系統(tǒng)。
寄存庫(kù)120含有8只標(biāo)為L(zhǎng)0-L3和D0-D3的寄存器。寄存器L0-L3是40位寬寄存器,還能經(jīng)高字寄存器L0h-L3h與低與寄存器L0I-L3I以16位段訪問(wèn)。寄存器D0-D3是32位寬,能經(jīng)子寄存器R0-R7以16位段訪問(wèn)。一般而言,寄存器與子寄存器均指簡(jiǎn)單的“寄存器”,寄存器的特定特證由提供的特定寄存器號(hào)指明。
通過(guò)擁有對(duì)其耦合并由多個(gè)輸入與輸出口訪問(wèn)的某些寄存器,可實(shí)現(xiàn)本發(fā)明的一個(gè)方面。在一實(shí)施例中,這種多連接性用耦合至每個(gè)寄存器的輸入和每個(gè)輸出口的多路復(fù)用器提供。其它多連接性方法是顯然的,且與應(yīng)用本發(fā)明某些方面相符,如包括使用數(shù)據(jù)總線與可導(dǎo)址存儲(chǔ)器。然而,在有些實(shí)施例中使用多路復(fù)用器為佳,因?yàn)樗鼈兡苎杆倏煽氐卦L問(wèn)各個(gè)寄存器與端口。
在本發(fā)明使用即時(shí)數(shù)據(jù)總線(這里提出的示例性實(shí)施例)的實(shí)施例中,實(shí)現(xiàn)了本發(fā)明的其它方面。例如,可將指令數(shù)據(jù)中包含的數(shù)據(jù)讀入寄存庫(kù)120,無(wú)須與存儲(chǔ)器102-105接口。這樣,指令處理系統(tǒng)無(wú)須與數(shù)據(jù)存儲(chǔ)器接口就能提供附加數(shù)據(jù),進(jìn)一步減少了總線爭(zhēng)用。
圖3是一框圖,表示寄存庫(kù)120內(nèi)一組寄存器與一組輸入口PI1-PI5之間的連接。寄存器定為L(zhǎng)0h-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時(shí),只寫24位中的最低16位。
如圖3所示,有些寄存器從所有輸入口接收數(shù)據(jù),而另一些寄存器只從有些或部分輸入口接收數(shù)據(jù)。特別是,所有的寄存器L0-L3從多路復(fù)用器500-514接收所有輸入口PI1-PI5的數(shù)據(jù),16位輸入口能對(duì)寄存器L0-L3內(nèi)的高和低寄存器進(jìn)行寫。這樣,寄存器L0-L3從任何總線A-C(對(duì)應(yīng)于輸入口PI0-PI3)和從MAC單元128與ALU130(對(duì)應(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時(shí),只寫24位中的最低16位。
如圖3所示,有些寄存器從所有輸入口接收數(shù)據(jù),而另一些寄存器只從有些或部分輸入口接收數(shù)據(jù)。特別是,所有的寄存器L0-L3從多路復(fù)用器500-514接收所有輸入口PI1-PI5的數(shù)據(jù),16位輸入口能對(duì)寄存器L0-L3內(nèi)的高和低寄存器進(jìn)行寫。這樣,寄存器L0-L3從任何總線A-C(對(duì)應(yīng)于輸入口PI0-PI3)和從MAC單元128與ALU130(對(duì)應(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實(shí)施例有諸多優(yōu)點(diǎn)。特別是,它在輸入口與寄存器之間提供了足夠的連接性,有利于最常見的操作,但總的連接性保持為最小,以減少電路構(gòu)成制所需的總電路面積。例如,MAC單元128的輸出只接至長(zhǎng)寄存器L0-L3,這是有利的,因?yàn)槌撕屠奂硬僮鞯慕Y(jié)果通常超出32位,因而將MAC單元128的輸出接至D0-D3提供了最小的便利。在另一例中,ALO單元130能對(duì)寄存器L0-L3和R0-R3輸出,這增強(qiáng)了靈活性,因?yàn)閿?shù)據(jù)可從ALO單元130寫到各種寄存器,這很有用,因?yàn)锳LU單元13執(zhí)行了更多次操作,使它能有效地將數(shù)據(jù)輸出到更多個(gè)寄存器。然而,ALU單元130不接至所有寄存器,故避免了不必要和過(guò)多的連接。
圖3是一框圖,表示當(dāng)按本發(fā)明一實(shí)施例執(zhí)行時(shí),將寄存器120的輸出口接至寄存器的情況。如圖所示,輸出至總線A的輸出口P01經(jīng)多路復(fù)用器540接至寄存器L0h-L3h、L01-L31與R0-R7,當(dāng)被作為小子寄存器訪問(wèn)時(shí),它包括所有有效的寄存器。同樣地,輸出至總線13的輸出口P02經(jīng)多路復(fù)用器542接至寄存器L0h-L3H、L01-L31與R0-R7。輸出至40位寬總線C的輸出口P03由多路復(fù)用器530接至寄存器L0-L3與D0-D3,當(dāng)被作為全寄存器訪問(wèn)時(shí),它包括全部有效的寄存器。
接至MAC單元128的40位輸入的輸出口P04,經(jīng)多路復(fù)用器532接至寄存器L0-L3。鑒于乘和累加操作的特征,MAC128累加的值很大,因而將輸出口P04只接至40位“長(zhǎng)”寄存器L0-L3可提供最佳耦合配置,因?yàn)楦郊咏又良拇嫫鱀0-D3的利用率很小,給出的各種乘法操作的累加一般超過(guò)32位。
接至MAC單元128的一個(gè)16位輸入的輸出口P05,經(jīng)多路復(fù)用器534接至寄存器L0h-L3h、R0、R4與R6。接至MAC單元時(shí)的第二16位輸入口的輸出口P06,接至寄存器L0h-L3h、L01-L31與R0-R7。將MAC單元128的一個(gè)16位輸入接至全部有效寄存器,并將第二個(gè)17位輸入口接至有效寄存器小組,可實(shí)現(xiàn)有用的折衷。特別在寄存器空間普得有限時(shí),至少可將待處理的一段數(shù)據(jù)放在任一有效寄存器里。然而,限制接至其它輸入端的寄存器數(shù)量,減少了連接電路的總量,有利于提供其它功能與特點(diǎn),如在其它寄存器、輸入口與輸出口之間有更高的連接性。
接至ALU130的輸入端的輸出口P07,經(jīng)多路復(fù)用器546接至寄存器L0-L3、L0h-L3h與R0-R3。其中Z0h-L03h與R0-R3同一組邏輯零一起輸出。即,寄存器L0h=L03h與R0-R3輸出至P07的位31-16(位號(hào)為0-39),位0-15置邏輯零,位39-32用位31擴(kuò)展符號(hào)。接至ALU130的另一輸入端的輸出口P08,也經(jīng)多路復(fù)用器548連同一組邏輯零接至寄存器L0-L3和R0-R7.以此方式連接ALU130的輸入端,可對(duì)全部有效的長(zhǎng)寄存器L0-L3作邏輯操作,因而可對(duì)大量寄存器作邏輯操作,這對(duì)歸一化和定標(biāo)等多類信號(hào)處理操作是有用的。另外,可在寄存器R0-R7與L0h-L3h以及R0-R7之間作算術(shù)運(yùn)算,以可使用的寄存器組來(lái)衡量,靈活性很大,同時(shí)還限制了必需的連接數(shù)量,因而限制了要求的電路面積。應(yīng)理解,有效的算術(shù)邏輯輯操作并一限于上述情況。
應(yīng)用能被多數(shù)據(jù)總線與多處理單元訪問(wèn)的寄存器有各種好處。例如,寄存器在數(shù)據(jù)總線與處理單元間提供了接口,減少了每條數(shù)據(jù)總線通往每個(gè)處理單元的布線要求,從而節(jié)省了電路面積,降低了芯片成本。
再者,將最少量(一組)寄存器接至多個(gè)處理單元,可用多個(gè)處理單元對(duì)同一數(shù)據(jù)多次操作,一必定要通過(guò)數(shù)據(jù)總線向存儲(chǔ)器讀寫數(shù)據(jù),這樣節(jié)省了總線周期,減少總線爭(zhēng)用。采用指令處理流水線操作法也是有利的,因?yàn)榈谝惶幚韱卧诘谝恢噶钪芷谥刑幚淼臄?shù)據(jù),然后可用第二處理單元在第二處理周期中在同一個(gè)寄存器內(nèi)再作處理。
然而,并非所有數(shù)據(jù)都要求用多處理單元處理的,所以其它寄存器(另一組)只被一個(gè)處理單元或少于處理單元總數(shù)(有兩個(gè)以上處理單元的場(chǎng)合)的處理單元訪問(wèn)。使用這另一組寄存器就減少了連接數(shù),因而減少了電路面積,可在寄存器連接性與電路面積之間(因而在性能與效率之間)實(shí)現(xiàn)最佳平衡。
還有,在本發(fā)明一實(shí)施例中,利用寄存庫(kù)128里的二相時(shí)鐘寄存器可進(jìn)一步增強(qiáng)流水線操作能力。在同一個(gè)全時(shí)鐘(“處理”)周期內(nèi),二相時(shí)鐘寄存器在時(shí)鐘第一相上讀,在第二相上寫。這樣在特定處理周期內(nèi),可在第一時(shí)鐘相內(nèi)讀出已被MAC128等第一處理單元處理過(guò)的數(shù)據(jù),并在該處理周期的剩余部分內(nèi)由ALU130等第二處理單元作進(jìn)一步處理。
另外,在處理周期第二相內(nèi),可剛由MAC128處理的新數(shù)據(jù)寫入同一寄存器,從而在一個(gè)處理周期內(nèi),可在兩個(gè)處理單元之間作整個(gè)流水線處理。而且,這些操作一必使數(shù)據(jù)通過(guò)任一條內(nèi)部總線,可進(jìn)一步避免總線爭(zhēng)用。
再參照?qǐng)D2,操作期間,指令取出單元156從指令存儲(chǔ)器152中檢索二進(jìn)制指令,若查一出,則從外部在存儲(chǔ)器中檢索。外部存儲(chǔ)器有多種形式,如動(dòng)態(tài)與靜態(tài)隨機(jī)存取存儲(chǔ)器(DRAM與SRAM)及其衍生產(chǎn)品,磙或光硬盤存儲(chǔ)器,或某些其它眾所周知的數(shù)據(jù)存儲(chǔ)媒體。在本發(fā)明該示例性實(shí)施例中,指令為可變長(zhǎng)度指令,指令取出單元(下稱取指令單元)確定指令長(zhǎng)度,并確定在每次處理或時(shí)鐘周期內(nèi)要限出多少附加指令。另外,指令存儲(chǔ)在內(nèi)外存儲(chǔ)器內(nèi)連續(xù)的存儲(chǔ)位置。下面詳述取指令單元156的操作和內(nèi)外存儲(chǔ)器內(nèi)指令數(shù)據(jù)的存儲(chǔ)情況。
指令譯碼器158接收由取指令單元156檢索的指令,并將指令譯為控制信號(hào)供給一個(gè)或多個(gè)組成DSP的子系統(tǒng),子系統(tǒng)包括數(shù)據(jù)存儲(chǔ)器、寄存庫(kù)、MAC與ALU。另外,指令譯碼器158可以將接收指令內(nèi)所含的即時(shí)數(shù)據(jù)經(jīng)即時(shí)總線Im1、Im2、Im3或ImALU送往有關(guān)系統(tǒng)。即時(shí)數(shù)據(jù)通常是存儲(chǔ)在指令數(shù)據(jù)內(nèi)的數(shù)值,而指令數(shù)據(jù)用于對(duì)存儲(chǔ)在數(shù)據(jù)存儲(chǔ)器102-106II中的數(shù)據(jù)作操作,或可以限定或修正某個(gè)地址。
由圖2中DSP執(zhí)行的操作包括將數(shù)據(jù)從數(shù)據(jù)存儲(chǔ)器經(jīng)數(shù)據(jù)總線之一載入某一寄存器位置。數(shù)據(jù)也可從寄存器寫入數(shù)據(jù)存儲(chǔ)器。而且,MAC128或ALU130可對(duì)寄存器120內(nèi)一個(gè)或多個(gè)寄存器里的數(shù)據(jù)作操作,一般將結(jié)果寫回到寄存庫(kù)120內(nèi)的寄存器。
上述DSP結(jié)構(gòu)有多種優(yōu)點(diǎn)。例如使用三條數(shù)據(jù)總線有利于不間斷地對(duì)數(shù)據(jù)作流水線處理。在DSP執(zhí)行的示例性濾波期間,將待濾波的數(shù)據(jù)(信號(hào)數(shù)據(jù))存儲(chǔ)在一只數(shù)據(jù)存儲(chǔ)器中,而將應(yīng)用于該數(shù)據(jù)存儲(chǔ)在另一數(shù)據(jù)存儲(chǔ)器中。由于操作結(jié)果通常要求比操作數(shù)更多的位數(shù),因此將信號(hào)數(shù)據(jù)與系數(shù)存儲(chǔ)在兩只較窄的存儲(chǔ)器里較佳。然后將系數(shù)與信號(hào)數(shù)據(jù)讀入寄存庫(kù)120,再由MAC單元128相乘累加。這些操作的結(jié)果可以存儲(chǔ)在寄存庫(kù)120內(nèi)的第二寄存器里,或者導(dǎo)寫入先前已存儲(chǔ)了輸入數(shù)據(jù)的寄存庫(kù)。接著在第三總線(總線C)上將任何結(jié)果從該寄存器寫入更寬的數(shù)據(jù)存儲(chǔ)器(存儲(chǔ)器C)。
由于輸出數(shù)據(jù)經(jīng)第三總線寫入第三存儲(chǔ)器,而輸入數(shù)據(jù)級(jí)經(jīng)第一與第二數(shù)據(jù)總線從第一與第二數(shù)據(jù)存儲(chǔ)器中讀出,所以很少或一會(huì)出現(xiàn)存儲(chǔ)器訪問(wèn)沖突或總線爭(zhēng)用。這樣,數(shù)據(jù)可以不中斷地處理,減小了以高于內(nèi)部總線或其它子系統(tǒng)的速率對(duì)任何存儲(chǔ)器子系統(tǒng)或數(shù)據(jù)總線的計(jì)時(shí)要求,從而既保持或提高了處理速度,又降低了功耗。
另外,在若干不同數(shù)據(jù)值在DSP內(nèi)不同級(jí)以任何給定時(shí)間作不同處理的場(chǎng)合,數(shù)據(jù)不中斷地通過(guò)DSP有利于數(shù)據(jù)的流水線處理。而且,在組合應(yīng)用的并行指令時(shí),結(jié)合這種高效的流水線處理,可實(shí)現(xiàn)明顯的處理靈活性,提供高度通用、有效的有力的DSP系統(tǒng)。
應(yīng)當(dāng)理解,應(yīng)用多條總線提高了以各種減少總線沖突的附加方式使數(shù)據(jù)圍繞DSP運(yùn)行的能力。例如,要作除法的數(shù)據(jù)可作為輸入數(shù)據(jù)從存儲(chǔ)器C經(jīng)數(shù)據(jù)總線C提供,除數(shù)由另一存儲(chǔ)器與總線提供,如存儲(chǔ)器A與數(shù)據(jù)總線A提供,然后利用剩余總線(數(shù)據(jù)總線B)將結(jié)果存入剩余的存儲(chǔ)器(存儲(chǔ)器B)里。
在得益于多條數(shù)據(jù)總線與存儲(chǔ)器的另一示例性操作中,由MAC單元130累加的數(shù)據(jù)經(jīng)第一存儲(chǔ)器與第一總線(如存儲(chǔ)器A與數(shù)據(jù)總線A)提供。在完成一組累加后,把所得的數(shù)據(jù)經(jīng)數(shù)據(jù)總線C寫到存儲(chǔ)器C。同時(shí),在數(shù)據(jù)總線C不攜帶來(lái)自MAC單元128的結(jié)果數(shù)據(jù)的處理周期內(nèi),大部分時(shí)間這類結(jié)果數(shù)據(jù)僅在完成一組累加操作后可得到,準(zhǔn)備邏輯移位的數(shù)據(jù)從存儲(chǔ)器C經(jīng)數(shù)據(jù)總線C提供給ALU單元130。邏輯移位的數(shù)據(jù)經(jīng)數(shù)據(jù)總線B同時(shí)寫到存儲(chǔ)器B。這樣,應(yīng)用多條數(shù)據(jù)總線與存儲(chǔ)器,一般特別是結(jié)合多個(gè)處理單元,通過(guò)在DSP內(nèi)移動(dòng)數(shù)據(jù)提供更多的可能性而有利于多次操作。
如上所述,應(yīng)用能被多個(gè)處理單元(如MAC單元128與ALO單元130)訪問(wèn)的寄存器,可實(shí)現(xiàn)本發(fā)明的另一方法。由多個(gè)處理單元訪問(wèn)的寄存器,讓必須由這些處理單元處理的數(shù)據(jù)不必移動(dòng)通過(guò)任何內(nèi)部數(shù)據(jù)總線而予以訪問(wèn)。例如,數(shù)據(jù)可由第一處理單元寫到某個(gè)寄存器,然后再由同樣可以訪問(wèn)該寄存器的第二處理單元處理。這樣進(jìn)一步減輕了總線爭(zhēng)角與阻塞,因而保持了高的數(shù)據(jù)吞吐量。
另外,當(dāng)結(jié)合使用并行操作指令和下面要詳述的并行處理的能力時(shí),可進(jìn)一步增強(qiáng)高度流水線、多重操作地處理數(shù)據(jù)的能力。相反地,典型的流水線操作要涉及交錯(cuò)排列一組操作的不同階段(即取出、譯碼、處理),所以縮短了各指令開始之間的處理時(shí)間。多重操作流水線法所附加好處在于,數(shù)據(jù)通過(guò)一組不同的操作,這種操作對(duì)不同的數(shù)據(jù)組是同時(shí)執(zhí)行的。這種多重操作流水線法使每個(gè)處理周期執(zhí)行的指令數(shù)提高到超過(guò)了普通的指令流水線法。
下述示例性處理進(jìn)一步示出了上述結(jié)構(gòu)的最佳協(xié)同作用。在一示例性濾波操作中(也如上所述),隨著樹其作累加的乘積數(shù)據(jù)的增大,MAC26產(chǎn)生的結(jié)果在大小上也增大(用于代表該值的絕對(duì)值與位數(shù)兩者)。最后,結(jié)果必須作標(biāo)定或“歸一化”,通常要求用ALU單元130作邏輯位移操作。
在描述的系統(tǒng)中,標(biāo)定操作可同濾波的乘法與累加操作同時(shí)執(zhí)行。在同時(shí)處理的處理周期內(nèi),將未處理的信號(hào)數(shù)據(jù)與濾波系數(shù)從數(shù)據(jù)存儲(chǔ)器102與103讀入寄存庫(kù)120內(nèi)的寄存器(如L0h與L01)。同時(shí),MAC單元128讀取先前存儲(chǔ)在這些寄存器(L0h與L01)里的值并作乘法與累加操作,其中將輸出寫到第二寄存器(如L1)。同時(shí),ALU單元130讀取先前存儲(chǔ)在第二寄存器(L1)中的數(shù)據(jù),并執(zhí)行標(biāo)定操作,將標(biāo)定值寫到第三寄存器(如L2)。而且在同一處理周期內(nèi),用總線C112將存儲(chǔ)在第三寄存器(D0)中的先前的值寫入數(shù)據(jù)存儲(chǔ)器104。顯然,特定的操作可以按執(zhí)行的特定任務(wù)改變。而且很清楚,使用允許作多重操作的高度并行的指令,進(jìn)一步有利于高度流水線的多指令操作。高度度行的指令允許在每個(gè)周期內(nèi)對(duì)不同操作的規(guī)程作流水性操作。
應(yīng)用兩相讀寫操作,如上述例子,這種處理可在單個(gè)處理周期內(nèi)全部完成,其中在第一時(shí)鐘相內(nèi)以每個(gè)寄存器里讀出數(shù)據(jù),并用處理單元處理,而在第二時(shí)鐘相內(nèi)的老的數(shù)據(jù)上將結(jié)果寫入寄存器。應(yīng)當(dāng)理解,在單個(gè)時(shí)鐘周期內(nèi),同一值不經(jīng)受該處理的所有步驟,而是一組值通過(guò)DSP作流水線操作,每個(gè)值隨著處理的執(zhí)行移至下一步驟。
這里描述的本發(fā)明的各個(gè)方面都有利于許多其它的操作。例如,聲音編碼就是話音數(shù)據(jù)的編碼處理,它要求執(zhí)行許多不同類型的操作,有些操作可獨(dú)立執(zhí)行,因而可同時(shí)執(zhí)行。應(yīng)用多余數(shù)據(jù)總線和多個(gè)處理單元,有助于這些操作。
應(yīng)用獨(dú)立的指令存儲(chǔ)器與指令譯碼具有進(jìn)一步的優(yōu)點(diǎn)。例如,與上述數(shù)據(jù)處理的同時(shí),取指令156從指令存儲(chǔ)器152讀出指令,接著令指令譯碼器158產(chǎn)生控制信號(hào),以便控制DSP內(nèi)各其它子系統(tǒng)的操作(為便于畫圖和清楚,未畫出接線)。同樣,數(shù)據(jù)總線也不攜帶指令數(shù)據(jù),因而可以不中斷指令數(shù)據(jù)而移動(dòng)處理信號(hào)數(shù)據(jù)。這樣,通過(guò)將指令處理與數(shù)據(jù)處理分開,消除指令數(shù)據(jù)移動(dòng)所耗用的數(shù)據(jù)總線周期,進(jìn)一步提高了性能。
圖5是一張表,說(shuō)明將一組可變長(zhǎng)度指令裝在根據(jù)本發(fā)明一實(shí)施例的圖2指令存儲(chǔ)器152的一部分可尋赴存儲(chǔ)空間內(nèi)。在本發(fā)明有些實(shí)施例中,也可像圖2那樣把可變長(zhǎng)度指令存儲(chǔ)在外存系統(tǒng)里以實(shí)現(xiàn)附加的存儲(chǔ)器效率。舉例地址示于左列,指向32位數(shù)據(jù)安排每個(gè)地址示于存儲(chǔ)器275的中間和右邊諸列。中間列代表各數(shù)據(jù)字的16位高次子字,最右列代表6位低次子字。在本發(fā)明的該較佳實(shí)施例中,高低次子字都不能單獨(dú)尋址,以便減少必需的地址邏輯量。
在存儲(chǔ)器275內(nèi),可變長(zhǎng)度指令A(yù)-L以圖示的裝填結(jié)構(gòu)存儲(chǔ)。指令A(yù)是48位指令,前兩上雙字節(jié)A(1)與A(2)存儲(chǔ)在地址字0×0000,第三雙字節(jié)A(3)存儲(chǔ)在地址0×0001的高次子字里。指令A(yù)后面的指令B是32位指令,第一雙字節(jié)B(1)存儲(chǔ)在地址0×0001的低次字里,第二雙字節(jié)B(2)存儲(chǔ)在地址0×0002的高次子字里。指令C是16位指令,其第一和唯一的雙字節(jié)(C1)存儲(chǔ)在地址0×0002的低次子字里。
從指令A(yù)-C的存儲(chǔ)位置可見,本發(fā)明將部分不同的指令存儲(chǔ)在同一地址字內(nèi),減少了存儲(chǔ)器275存儲(chǔ)一組指令所必需的尺寸或量。例如,將指令A(yù)的第三雙字節(jié)A(3)與指令B的第一雙字節(jié)B(1)一起存儲(chǔ)。
將變第指令跨過(guò)字邊界或特別在存儲(chǔ)器地址空間內(nèi)的連續(xù)位置中存儲(chǔ)起來(lái),本發(fā)明減少了指令存儲(chǔ)器存儲(chǔ)給定指令數(shù)據(jù)必需的容量。減少指令存儲(chǔ)器的容量就減少了對(duì)DSP給以規(guī)定指令貯藏容量所必需的芯模的尺寸與成本。如圖3所示,將變第指令D-L置于存儲(chǔ)器275內(nèi),進(jìn)一步示明了指令的裝填狀況。
應(yīng)該理解,在本發(fā)明有些實(shí)施例中,不必像上述那樣把所有指令都裝在連續(xù)位置中。例如,本發(fā)明不同的實(shí)施例僅將指令的主要部分(90%或以上)裝在存儲(chǔ)空間的連續(xù)位置中。在本發(fā)明另一實(shí)施例中,只將指令的主要部分(如25-50%)有利地裝在連續(xù)的存儲(chǔ)空間中。其它實(shí)施例可使用其它百分比的裝填指令。
而且,不一定要使用連續(xù)的位置。指令必須簡(jiǎn)單地置于比指令數(shù)據(jù)總量大得不多的總存儲(chǔ)空間內(nèi)。這可以將指令置于存儲(chǔ)空間內(nèi)相鄰的位置而較佳地實(shí)現(xiàn),然而,指令會(huì)在整個(gè)存儲(chǔ)空間里搞混,但是只要指令能按原定的執(zhí)行次序讀出就成了。本領(lǐng)域的技術(shù)人員將明白,這類預(yù)定的混亂作為存儲(chǔ)空間的再映射,而且這種再映射一般不影響本發(fā)明的操作,否則要加大不希望有的復(fù)雜性。
同樣地,最好具有能應(yīng)用于很大一組指令的裝填方案。例如,在本發(fā)明某些實(shí)施例中,最好對(duì)至少10條指令應(yīng)用該裝填方案。
另外,用于本發(fā)明該示例性實(shí)施例的特定裝填方案,在其它實(shí)施例中不一定使用。例如,本發(fā)明的其它一些實(shí)施例可能在連續(xù)存儲(chǔ)位置中沒(méi)有指令,而指令可用某種小容量的存儲(chǔ)空間分開,其中包括使用指令分離碼。較佳地,小存儲(chǔ)空間小于存儲(chǔ)空間在存儲(chǔ)字邊界上保持指令邊界所必需的容量。然而,上述裝填法由于其簡(jiǎn)單、完整和高效,在許多場(chǎng)合中是較佳的方法??傊?,在本發(fā)明的不同實(shí)施例中,在裝填完整性與裝填方案復(fù)雜性之間的折衷選擇可以是不同的。
而且如上面暗示的那樣,本發(fā)明的有些實(shí)施例只對(duì)部分而不是整組有效指令使用該裝填方案。例如,只對(duì)用于執(zhí)行某特定任務(wù)或子程序的幾組指令執(zhí)行指令裝填。
應(yīng)該指出,將高度裝填的指令存儲(chǔ)與可變長(zhǎng)度指令組合起來(lái)使用,進(jìn)一步減少了對(duì)DSP的存儲(chǔ)器要求,因?yàn)榭勺冮L(zhǎng)度指令只耗用請(qǐng)求所需操作所需的數(shù)據(jù)量,而且高度裝填的指令存儲(chǔ)將總存儲(chǔ)量保持等于該組變稱指令的耗用時(shí),因而是最小量,減小的存儲(chǔ)器尺寸也減少了芯片尺寸與成本。
除了減小DSP尺寸并由此減少成本等好處以外,在結(jié)合上述結(jié)構(gòu)的其它特點(diǎn)時(shí),應(yīng)用高度裝填指令與可變長(zhǎng)度指令還具有意料不到的優(yōu)點(diǎn)。例如,減小指令存儲(chǔ)器的尺寸,附加的電路面積可供DSP,還能具備將可變長(zhǎng)度指令存儲(chǔ)在存儲(chǔ)空間連續(xù)位置內(nèi)的能力。圖6是取指令單元156從本發(fā)明一實(shí)施例的指令存儲(chǔ)器152取指令時(shí)的操作的流程圖。過(guò)程在步驟200開始,在步驟202,從指令存儲(chǔ)器152中讀出第一組指令。在本發(fā)明的該示例性實(shí)施例中,在步驟202檢索指令數(shù)據(jù)的兩個(gè)32位字,即64位。
在步驟204,指令譯碼器158處理包含在這64位指令數(shù)據(jù)中的第一指令。在本發(fā)明的該示例性實(shí)施例中,該指令可以是16、32或48位長(zhǎng)。指令長(zhǎng)度由包含在每條指令里指明指令長(zhǎng)度的一組首部位確定,下面再作詳述。顯然還有各種其它規(guī)定指令長(zhǎng)度的方法,包括用代碼區(qū)分兩條指令,或用超首部指令規(guī)定幾組后接指令的長(zhǎng)度。在某些場(chǎng)合中最好使用首部位,因?yàn)橹噶铋L(zhǎng)度信息通常十分接近該指令,由此降低了存儲(chǔ)或保持有關(guān)指令處理的狀態(tài)信息的要求。
在處理了包含在64位檢索指令數(shù)據(jù)內(nèi)的第一指令后,在步驟206,確定48位或更多未處理的指令數(shù)據(jù)是否保持在64位檢索指令數(shù)據(jù)里。若保持著,則在步驟204處理包含在剩余48位未處理數(shù)據(jù)中的下一個(gè)指令。
在步驟206,若不到48位未處理指令數(shù)據(jù)保持在檢索指令數(shù)據(jù)中,就從指令存儲(chǔ)器152裝載附加指令數(shù)據(jù)。各種裝載附加指令的方法都可試用。在本發(fā)明一實(shí)施例中,從指令存儲(chǔ)器裝載足夠多的附加指令數(shù)據(jù),使存儲(chǔ)在取指令單元里的未處理數(shù)據(jù)量增至48位。確保48位未處理數(shù)據(jù)存儲(chǔ)在取指令單元內(nèi),以確保對(duì)指令譯碼器158至少有一條完整的指令。
在本發(fā)明一較佳實(shí)施例中,當(dāng)保持的未處理數(shù)據(jù)不足48位時(shí),根據(jù)已經(jīng)處理的特定數(shù)據(jù)量,取指令單元檢索可變的數(shù)據(jù)量。特別在處理的數(shù)據(jù)量等于或超過(guò)一個(gè)數(shù)據(jù)字(32位)時(shí),就檢索新指令數(shù)據(jù)的附加數(shù)據(jù)字(32位)。若先前處理的數(shù)據(jù)量等于或超過(guò)兩個(gè)數(shù)據(jù)字(64位),則取指令單元就檢索兩個(gè)新的數(shù)據(jù)字。
根據(jù)處理的數(shù)據(jù)字?jǐn)?shù)檢索數(shù)據(jù)量較佳,因?yàn)樗鼘?duì)指令譯碼器158保持著足夠量的未處理數(shù)據(jù),同時(shí)允許對(duì)構(gòu)成指令存儲(chǔ)器的存儲(chǔ)庫(kù)作更有效的字長(zhǎng)訪問(wèn)。一旦在步驟206檢索了附加的未處理指令數(shù)據(jù),就在現(xiàn)有的未處理指令數(shù)據(jù)總量?jī)?nèi)處理下一個(gè)指令。
圖7是按本發(fā)明一實(shí)施例構(gòu)制的取指令單元156與指令存儲(chǔ)器152的框圖。指令存儲(chǔ)器152包括偶數(shù)個(gè)存儲(chǔ)庫(kù)302(RAMO)和奇數(shù)個(gè)存儲(chǔ)庫(kù)300(RAMI),每一個(gè)都可讀寫32位數(shù)據(jù)字。把存儲(chǔ)庫(kù)標(biāo)為奇偶,因?yàn)槎叨荚谕坏刂房臻g內(nèi)尋址,但是偶地址偶數(shù)存儲(chǔ)庫(kù)302,奇地址針對(duì)奇數(shù)存儲(chǔ)體300.
可讀寫其它字尺寸(包括8、16、24、48、64位字)的存儲(chǔ)庫(kù)可應(yīng)用于本發(fā)明的其它實(shí)施例。可以使用其它不同數(shù)量的存儲(chǔ)庫(kù),包括108個(gè)存儲(chǔ)庫(kù)。然而,最好使用兩個(gè)帶32位字的存儲(chǔ)庫(kù),因?yàn)槟芙档驼w復(fù)雜性,而且允許指令數(shù)據(jù)以寫管理的塊來(lái)尋址。
控制邏輯304讓數(shù)據(jù)字從存儲(chǔ)庫(kù)300與302讀到指令寄存器106與107。特定的存儲(chǔ)位置讀由地址線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,每個(gè)輸入組包含16位,下面再作語(yǔ)詳述。
操作期間,控制邏輯304按參照?qǐng)D5描述的方法從指令存儲(chǔ)庫(kù)300與302裝載指令數(shù)據(jù)。特別是,控制邏輯304通過(guò)從偶數(shù)存儲(chǔ)庫(kù)302和奇數(shù)存儲(chǔ)庫(kù)300讀32位數(shù)據(jù)字,第一次將總計(jì)64位的未處理指令數(shù)據(jù)裝入指令寄存器306和307。如果處理了16位的指令,不用裝載新數(shù)據(jù),因?yàn)榧拇嫫?06和307還包含著48位未處理的指令數(shù)據(jù)。若接著處理了32位的指令,則指令寄存器306要裝上32位字的附加指令數(shù)據(jù),因?yàn)楸3值奈刺幚碇噶顢?shù)據(jù)不足48位。再次裝載32位指令字,獎(jiǎng)48位未處理指令數(shù)據(jù)置入寄存器306和307,16個(gè)未處理位置入寄存器307,其余32位置入寄存器306.如果再處理48位指令,就沒(méi)有未處理指令數(shù)據(jù)可保持,所以兩寄存器306和307均裝有指令數(shù)據(jù)的32位字,該數(shù)據(jù)是64位的未處理指令數(shù)據(jù),要大于必需的48位指令數(shù)據(jù)。雖然裝載64位指令數(shù)據(jù)并無(wú)十分必要,但是這樣做是有用的,因?yàn)檫@樣可以使用兩個(gè)32位字的指令存儲(chǔ)器與寄存器,在行業(yè)中是常見的。使用其它方法保持足量的未處理指令數(shù)據(jù),與應(yīng)用本發(fā)明的某些方面相符。
一旦將64位新指令數(shù)據(jù)裝入指令寄存器306和397,控制邏輯304就再配置旋轉(zhuǎn)器308,用控制信號(hào)320根據(jù)下列條件輸出在輸入端A、B、C和D上接收的下一個(gè)48位的指令數(shù)據(jù)1)指令數(shù)據(jù)在指令地址空間內(nèi)的位置,2)已處理的該組指令數(shù)據(jù),及3)已處理的前一指令的長(zhǎng)度。特別是將旋轉(zhuǎn)器308配置成輸出一組準(zhǔn)備用最高有效或最左邊位置中指令數(shù)據(jù)的下一在線位作下一在線處理的48位指令指數(shù)。
例如,一旦將前兩個(gè)字即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。上述已指出,任何對(duì)控制邏輯304規(guī)定指令長(zhǎng)度的預(yù)定方法均符合本發(fā)明的實(shí)踐,盡管使用前五位是較佳的,因?yàn)檫@樣可直接按指令數(shù)據(jù)確定指令長(zhǎng)度。
在本發(fā)明一示例性實(shí)施例中,前一指令的尺寸按表1編碼成兩位狀態(tài)I1和I0。
表1.全指令模式另外,旋轉(zhuǎn)器308的配置由兩個(gè)構(gòu)成控制320的選擇位S1和S0控制,其編碼如表2所列。
表2.旋轉(zhuǎn)器選擇控制位與輸出很明顯,隨著A1與S0狀態(tài)的遞增,旋轉(zhuǎn)器308的輸出就左轉(zhuǎn)或筒狀偏移。左轉(zhuǎn)就是每個(gè)輸入組(A、B、C和D)在輸出端上向左移。在輸出最左邊位置的輸入組被取消。先前未在輸出端認(rèn)定的輸入組以后在最右邊位置上輸出。
S1與S0狀態(tài)和旋轉(zhuǎn)器308的配置被修正或轉(zhuǎn)動(dòng)的量,根據(jù)各種長(zhǎng)度的指令而變化。具體而言,將代表正被處理指令長(zhǎng)度的值(I1,I0)加到控制位S1和S0,去除任何執(zhí)行值。即S1(t+1),S0(t+1)=S1(t),S0(t)+I0,I1 (1)對(duì)于轉(zhuǎn)移或復(fù)位狀態(tài),S1和S0的值根據(jù)要處理轉(zhuǎn)移或復(fù)位的特定指令而復(fù)位,所以不用公式(1)。在本領(lǐng)域中,處理轉(zhuǎn)移、復(fù)位與停止指令的各種方法是眾所周知的,而且由于這種處理與本發(fā)明無(wú)多大關(guān)系,下不再作描述。
在一示例性處理中,旋轉(zhuǎn)器308開始時(shí)為ABC輸出,選擇位S1和S0為00。如果接收6位指令,將I1和I0為01的相應(yīng)指令長(zhǎng)度位加到S1和S0,得到為01的S1和S0,對(duì)應(yīng)于旋轉(zhuǎn)器308為BCD的輸出324。在處理了前1位指令數(shù)據(jù)(輸入A)后,BCD輸出就是下一在線的指令數(shù)據(jù)組。
如果下一指令是個(gè)32位指令,則把指令長(zhǎng)度I1和I0(10)加給當(dāng)前的S1和S0狀態(tài)01,得到11,得出的輸出是DAB,對(duì)應(yīng)于還未處理的下一個(gè)48位指令數(shù)據(jù),用位于最高有效或最左邊位置的輸入端D上接收的下一在線指令數(shù)據(jù)配置。先前來(lái)自輸入端B和C的指令數(shù)據(jù)已了處理。應(yīng)該指出,在先前的32位指令處理期間,按上述的指令數(shù)據(jù)裝載處理法將新數(shù)據(jù)裝入指令寄存器307。
如果接下來(lái)處理48位指令,就對(duì)選擇位S1和S0的狀態(tài)增加指令長(zhǎng)度I1和I0(11),得到S1和S0為10,去除執(zhí)行,將旋轉(zhuǎn)器308配置成輸出CDA。輸出CDA對(duì)應(yīng)于下一個(gè)待處理的48位指令數(shù)據(jù),其下一在線位配置在了高有效位置上。先前在輸入端D、A和B上的指令數(shù)據(jù)已作過(guò)處理。再次指出,在前一指令處理期間,已將新的指令數(shù)據(jù)讀入寄存器306。作為舉例,已提供了上述執(zhí)行相關(guān)指令數(shù)據(jù)處理的邏輯,而使用其它邏輯來(lái)執(zhí)行上述的指令數(shù)據(jù)處理是顯然的,與本發(fā)明的應(yīng)用相符合。
這樣,在該示例性實(shí)施例中,控制邏輯將旋轉(zhuǎn)器308配置成輸出從指令寄存器306和307接收的下一個(gè)48位指令數(shù)據(jù),而把要處理的下一個(gè)指令位置于最左邊位置。本領(lǐng)域的技術(shù)人員將明白,以任何預(yù)定的配置將指令提交給指令處理單元158,從而可識(shí)別下一組要處理的指令數(shù)據(jù),這同樣符合本發(fā)明的使用。
如上述指出的,除了輸出下一個(gè)48位未處理的指令數(shù)據(jù)以外,旋轉(zhuǎn)器308還向控制邏輯304指明下一個(gè)要處理的指令的尺寸。具體而言,旋轉(zhuǎn)器308向控制邏輯304輸出附加的下一個(gè)要處理的5位指令數(shù)據(jù)的副本。在本發(fā)明該較佳實(shí)施例中,由該指令的前五位規(guī)定該指令的長(zhǎng)度。
圖8是按本發(fā)明一實(shí)施例配置的MAC單元128的框圖。右移900接收要累加的40位輸入,并將該值移動(dòng)0位或16位,輸出加到多路復(fù)用器901的一個(gè)輸入端。多路復(fù)用器901的另一輸入端接收值0×8000。乘法器902接收兩個(gè)要相乘的16位值,并一起從指令譯碼器158接收符號(hào)位,每個(gè)輸入總計(jì)17位。
乘法器902的輸出由左移904接收,左移904按指令譯碼器158的規(guī)定,將輸出移動(dòng)0、1、2或3位。加法器906接收多路復(fù)用器901和左移904的輸出,并按指令譯碼器158的命令對(duì)兩個(gè)輸入值作加或減,并將結(jié)果輸出給本發(fā)明該示例性實(shí)施例中的寄存庫(kù)輸入口PI4。
在本發(fā)明有些實(shí)施例中,在MAC單元128里應(yīng)用右移16單元900比其它類型的MAC單元具有附加的應(yīng)用性。更具體地遇,應(yīng)用右移16單元900便于在減少時(shí)鐘周期數(shù)時(shí)作雙倍精度操作。例如,為了執(zhí)行將32位數(shù)(A)乘以16位數(shù)(B)的雙倍精度操作,在第一時(shí)鐘周期內(nèi),先將32位數(shù)的低16位(A1)乘以16位數(shù)B,得出一個(gè)存儲(chǔ)在寄存庫(kù)120里有中間值I。
在第二時(shí)鐘周期內(nèi),將中間值I輸入右移16單元900右移16位。另外,將16位數(shù)B與32位數(shù)A的高16位(Ah)相乘,將結(jié)果與右移16單元900里的各移的中間值I相加。這樣,雙倍精度乘法是用兩個(gè)時(shí)鐘周期而不是三個(gè)時(shí)鐘周期執(zhí)行的。一般而言,許多雙倍精度操作要求一個(gè)或多個(gè)變量相對(duì)于其它變量而移位,這樣可像乘法或累加操作之一一樣在同一個(gè)時(shí)鐘周期內(nèi)作移位,減少了雙倍精度操作必需的周期數(shù)。
通常要求三個(gè)時(shí)鐘周期,因?yàn)榈谝淮纬朔ú僮鳌⒁莆徊僮骱偷诙纬朔ú僮魍ǔ8饕笠粋€(gè)時(shí)鐘周期。因此,使用移位電路減少了雙倍精度乘法所需的時(shí)鐘周期數(shù)。利用右移單元900還有利于涉及不同大小操作數(shù)據(jù)的其它雙倍精度操作。
II.指令配置A.概述圖9是一框圖,表示本發(fā)明該示例性實(shí)施例使用的指令體系。方框402表示可變長(zhǎng)度全指令,包括控制DSP操作的16、32或48位??勺冮L(zhǎng)度指令又由包括一般指令段的指令段和存儲(chǔ)器移動(dòng)與程序流(MMOF)指令組成,如方框403所示。本發(fā)明該示例性實(shí)施例中使用的一般指令段包括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ā)明該較佳實(shí)施例中,用長(zhǎng)度為16、32和48位的指令段而形成。全指令被制成可在指令存儲(chǔ)器152內(nèi)連續(xù)存儲(chǔ)并由DSP處理。下面描述全指令格式與結(jié)構(gòu),接著說(shuō)明指令段的格式與結(jié)構(gòu)。在操作期間,DSP每個(gè)時(shí)鐘周期處理一條全指令。這樣,在處理每條全指令期間,可作多次操作,特定的操作由選擇的特定組的指令段決定。
用于本發(fā)明該示例性實(shí)施例的三條全指令的格式如表3所示。
43 0
27 0
11 0
表3.全指令格式用于每條全指令的五位首部,指明該一指令的長(zhǎng)度和某些有關(guān)全指令內(nèi)容的附加信息。表4提供了用于本發(fā)明該示例性實(shí)施例的首部的格式。
表4.全指令首部格式每條全指令(16、32和48位長(zhǎng))包含一個(gè)或多個(gè)指令段。表5列出本發(fā)明該示例性實(shí)施例中的現(xiàn)有指令段。在討論了全指令后,再詳述指令段的格式與操作。
表5.指令段表6-8列出指令段的各種組合,可應(yīng)用于本發(fā)明該示例性實(shí)施例中的48、31和16位全指令里。雖然指令段的其它組合符合本發(fā)明的使用和操作,但是這里揭示的組合的某些特點(diǎn)較佳,如下面要詳述的那樣。另外,全部或部分全指令被示為“保留”,在描述的未規(guī)定或使用特定的指令組合,但是可以設(shè)想出將來(lái)使用這些全指令組合。
表6列出16位全指令在按本發(fā)明該示例性實(shí)施例執(zhí)行時(shí)的格式化。全指令由五位首部后接11個(gè)指令位組成。
11 0
表6.16位全指令格式首部位指明該指令的長(zhǎng)度及有關(guān)指令類型的一些信息。對(duì)于首部00000而言,最低有效三個(gè)尾位用來(lái)進(jìn)一步規(guī)定執(zhí)行的操作。具體而言,尾位000指明剩余的8位包含一個(gè)MAC8指令段。尾位001指明剩余的8位包含一個(gè)ALU8指令段。對(duì)于其它尾位組合,不規(guī)定指令。
對(duì)于首部00001,剩余11位包含一個(gè)OmeMem11指令段。通過(guò)提供允許ALU、MAC或存儲(chǔ)器移動(dòng)待執(zhí)行操作的16位全指令,可用最短的全指令作最常見的操作。由于最短的指令要求存儲(chǔ)器存儲(chǔ)的量最少,所以應(yīng)用所述的16位全指令減少了執(zhí)行特定一組操作所需的指令存儲(chǔ)器容量。這樣,DSP的整體尺寸減小了。也因此減少了成本和功耗。
16位指令通常在只能作一次或少數(shù)幾次操作的條件下使用。一般而言,可以縮小只限定一次操作所需的指令的尺寸,于是對(duì)一次操作就使用半字即16位指令。另外,16位指令可用于MAC、ALD/存儲(chǔ)器移動(dòng)或程序流程操作,這類操作包羅了幾乎所有人們想執(zhí)行的操作。
在按本發(fā)明一實(shí)施例配置時(shí),表7列出了指令段組合和相關(guān)的32位全指令格式化。
27 18 11 0
表7.32位全指令格式如上所述,五個(gè)首部位指出了全指令長(zhǎng)度及特定的指令段組合。例如,首部00010表示剩余27個(gè)指令位含一個(gè)ThreeMem27指令段,而首部00011表示剩余27個(gè)指令位含一ALU8指令段后接一TwoMwm19指令段。
對(duì)于首部01111,最低尾位還指出指令段的組合。例如,對(duì)于最低尾位0,下兩個(gè)最低位表明剩余24位飲食4、ALU16后接MAC8還是MAC16后接ALU8指令段。其它尾位狀態(tài),如最低尾位1,限定著保留的組合。
32位指令可同時(shí)執(zhí)行許多最常見的操作,既有利于流水線操作,也縮小了指令尺寸。例如,像濾波這樣的應(yīng)用,通常要作兩次限出操作和一次乘/累加操作。32位指令能以流水線方式作這種成組操作,且不要求填滿48位指令空間。
此外,32位指令可同時(shí)作MAC與ALU操作以及程序轉(zhuǎn)移與調(diào)用操作,也不用最大的指令尺寸。
當(dāng)按本發(fā)明一實(shí)施例執(zhí)行時(shí),表8列出了48位全指令的格式和指令段組合。
433527 19 11 0
表8.48位全指令格式五個(gè)首部位規(guī)定了該指令的長(zhǎng)度及具體的指令段組合。例如,首部位00100表明,43個(gè)剩余指令位包括DMOV24、MAC8和OneMem11指令段。首部位10011表明,43個(gè)剩余位包括ALU16、MAC8和TwoMwm19指令段。
對(duì)于首部位11111,三個(gè)最低尾位還指出了飲包含于剩余指令位置的指令段。例如,尾位000表示剩余40個(gè)指令位包含MAC16和DMOV24指令段。尾位001表示剩余40個(gè)指令位包含MAC8、ALU8和DMOV24指令段。尾位110表示剩余400個(gè)指令位包含DL40指令段。
48位人指令提供的指令段組合可同時(shí)作重操作,故比串行操作快得多。例如,若干48位全指令允許同時(shí)作ALU操作、AMC操作和存儲(chǔ)器操作。存儲(chǔ)器操作包括裝載、存儲(chǔ)和數(shù)據(jù)移動(dòng)操作,且常常允許一次訪問(wèn)多個(gè)存儲(chǔ)位置。
48位指令允許乘法操作結(jié)合ALU操作和取數(shù)據(jù)與程序流程操作一起以流水線方式進(jìn)行。這對(duì)濾波操作在結(jié)合標(biāo)定操作時(shí)是有用的,因?yàn)榇藭r(shí)通常要作MAC操作,接著作ALU(如移位)操作。應(yīng)用MAC與ALU操作的其它應(yīng)用場(chǎ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)一步增強(qiáng)了在DSP中同時(shí)執(zhí)行多條指令的能力。利用不同的總線,可以同時(shí)移動(dòng)和訪問(wèn)不同的數(shù)據(jù)組。
根據(jù)能執(zhí)行的操作種數(shù)來(lái)改變指令長(zhǎng)度,進(jìn)一步提高了使用指令存儲(chǔ)器的效率。任何具體的任務(wù)都具有可同時(shí)作多重操作的周期,而其它周期只能作少數(shù)或只有一次操作。按能同時(shí)進(jìn)行的操作種數(shù)調(diào)整指令長(zhǎng)度,可減少指令存儲(chǔ)器容量。
當(dāng)結(jié)合使用緊密指令裝填法時(shí),可進(jìn)一步減少上述示例性方法所需的指令存儲(chǔ)器。使用可變長(zhǎng)度指令或緊密裝填指令,或使用這兩者,通過(guò)用更多的電路面積實(shí)施特性,有助于應(yīng)用多總線結(jié)構(gòu)和多重訪問(wèn)寄存庫(kù)。這樣,將本發(fā)明這些方面的組合協(xié)同地組合起來(lái),可同時(shí)提高性能和效率。
C.指令段如上所述,全指令包括一組以預(yù)定方式集群的一個(gè)或多個(gè)指令段。在本發(fā)明該示例性實(shí)施例中,這組現(xiàn)有的指令段如表5所列。利用本發(fā)明該示例性實(shí)施例所提供的全指令而得出的指令段和組合,設(shè)計(jì)成讓該組操作所需的指令存儲(chǔ)器容量。下面討論本發(fā)明該示例性實(shí)施例所應(yīng)用的各種指令段的格式與操作狀態(tài)。
C1.指令段術(shù)語(yǔ)在下對(duì)指令段與子段的整個(gè)討論中,表9和10列出了用來(lái)參照諸寄存器的縮寫。另外,表的左邊示出了本發(fā)明該示例性實(shí)施例使用的具體位碼。
表9.指令段術(shù)語(yǔ)與代碼
表10.指令段術(shù)語(yǔ)和代碼C2.指令段說(shuō)明指令段組包括兩類MAC指令段MAC8與MAC16.MAC8指令段支持帶符號(hào)-不帶符號(hào)和帶符號(hào)-帶符號(hào)的乘法類型,結(jié)果存在累加器L0或L1中。MAC8指令段允許用16位全指令作MAC操作而節(jié)省了指令RAM,而且對(duì)于許多并行指令組合,要求MAC操作編碼為32位指令而不是48位指令。一般而言,MAC8指令執(zhí)行的處理符合下述公式L0L1=L0±L1±R0R2R4R6*R0R1R3R5(SU)(SS)---(2)]]>如公式(2)所示,MAC8指令段讓寄存器L0或L1的內(nèi)容與寄存器R0、R2、R4與R6的乘積相加,并將R0、R1、R3和R5直接設(shè)置到寄存器的乘積里。另外,還可規(guī)定帶符號(hào)或不帶符號(hào)的乘法。通過(guò)限制可用MAC8指令作MAC操作的寄存器數(shù)量,能將指令長(zhǎng)度保持為8位,允許用更短的8位指令段作MAC操作。
MAC8指令執(zhí)行的特定操作由構(gòu)成表11所列指令的8位值限定。
表11.MAC8指令段格式SU/SS規(guī)定帶符號(hào)或不帶符號(hào)的乘法。表12列出的代碼應(yīng)用于規(guī)定MAC8指令段內(nèi)的各種操作。
表12.MAC8指令段代碼這樣,MAC8指令0×99將寄存器L0的內(nèi)容與寄存器R0和R3不帶符號(hào)的乘積之和放入寄存器L0。
NAC16指令段通過(guò)讓附加寄存器應(yīng)用于乘法-累加而提供的靈活性。公式(3)建立了能用MAC16指令段執(zhí)行的操作。
L0L1L2L3=L0[>>16]±L1[>>16]±L2[>>16]±L3[>>16]±macOp1*macOp2[(mtype)][<<mshift][:CPS];---(3)]]>例如,雖然在乘法-累加指令中不是所有組合都可離開累加器,但是每個(gè)累加器(L0-L3)都可用作目的地。CPS區(qū)段發(fā)出信號(hào)表示協(xié)同處理器應(yīng)該執(zhí)行并行的特定操作。該特定操作由MAC16指令執(zhí)行,由構(gòu)成表13中指令的16位值規(guī)定。
表13.MCA16指令段格式表14列出的代碼用于規(guī)定MAC16指令段內(nèi)的各種操作。
表14.MAC16指令段代碼注將指令L0=R0×R0(SU)<<0譯成NOP。
Mtype11用作直接相乘的RND,對(duì)于帶符號(hào)-帶符號(hào)乘法/累加指令,將累加器右移16。
帶mtypeSU與macOp1=macOp2的MAC指令均性非法。
MAC16指令段可左移達(dá)到3,在單單相乘(無(wú)累加)時(shí)能作舍入運(yùn)算,舍入在移位后出現(xiàn)。在累加時(shí),要加的累加器與帶符號(hào)-帶符號(hào)相乘同時(shí)下移16。CPS位是協(xié)同處理器選通位,表示應(yīng)將MAC操作中使用的數(shù)據(jù)送給協(xié)同處理器。
應(yīng)當(dāng)指出,MAC8指令段執(zhí)行的操作子小組呆用MAC16執(zhí)行。對(duì)MAC8指令段選擇的特定組指令,是可用MAC16指令段執(zhí)行的該組操作以外最經(jīng)常執(zhí)行的指令組。通過(guò)用MAC8指令段執(zhí)行大多數(shù)MAC操作,就節(jié)省了程序存儲(chǔ)器。
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清除累加器指令為L(zhǎng)D=LD=LD。
ALU16指令段可作算術(shù)與邏輯兩種移位,表18列出了ALU16指令執(zhí)行的具體操作。
<<表示算術(shù)移位,<<<表示邏輯移位。
表18.ALU16指令段操作指令L0=SET(L0)譯碼為NOP。
表19列出ALU16指令段的格式。
(l)(c)(k)(i)(p)(o)(n)(m)(b)(h-i)(r)(s)(k)(j)(d-g)(f)(q)表19.16位ALU指令段格式與代碼ALU16指令段執(zhí)行的具體操作,由組成表20的指令段的位值規(guī)定。
表20.ALU16指令段代碼注全零指令L0=SET(L0);譯碼為NOP。
(5)將動(dòng)態(tài)平衡流量測(cè)量值QP與動(dòng)態(tài)平衡流量設(shè)定值QS進(jìn)行比較,運(yùn)行APID控制算法調(diào)節(jié)與控制模擬量電動(dòng)閥的開度,直接實(shí)現(xiàn)動(dòng)態(tài)平衡流量的自動(dòng)控制。
本發(fā)明的智能流體控制閥具體舉例如下對(duì)于本發(fā)明其中一種DN80規(guī)格的智能型流體控制閥產(chǎn)品,設(shè)計(jì)工作壓差范圍(16~400)KPa,設(shè)計(jì)額定的動(dòng)態(tài)平衡流量最大控制值32m3/h(在該范圍內(nèi)可以任意設(shè)定動(dòng)態(tài)平衡流量最大值QMAX),控制閥的可調(diào)比取R=50,則對(duì)應(yīng)的無(wú)量綱動(dòng)態(tài)電行程設(shè)定值X、動(dòng)態(tài)工作壓差、動(dòng)態(tài)平衡流量數(shù)據(jù)如下表所示
有量綱的動(dòng)態(tài)電行程設(shè)定值Y、無(wú)量綱的動(dòng)態(tài)電行程設(shè)定值X與標(biāo)準(zhǔn)電信號(hào)對(duì)應(yīng)換算關(guān)系如下表
實(shí)際使用時(shí),只需要更換智能控制器的特征計(jì)算公式(通過(guò)算法實(shí)現(xiàn)),還可以實(shí)現(xiàn)線性調(diào)節(jié)特性、或者拋物線調(diào)節(jié)特性,且這些理想調(diào)節(jié)特性均屬于壓力無(wú)關(guān)型的調(diào)節(jié)。
注指令L0=0譯碼為NOP。
即時(shí)10帶符號(hào),即時(shí)9與11不帶符號(hào)。
指令OUTPORTA(port-addr)讀A總線上的值,并將它輸出到指定端口。通過(guò)從存儲(chǔ)器A同時(shí)讀一值,該指令可將值直接從存儲(chǔ)器A送到該端口。OUTPORTB(port-addr)的工作與此相同。
DMOV24指令段是個(gè)24位指令段,執(zhí)行不同的裝載/存儲(chǔ)寄存器直接或裝載寄存器即時(shí)操作,如表23所示。
表23.DMOV24指令段操作起動(dòng)寄存器位于AGU單元里。
表24列出的格式和某些代碼,可用本發(fā)明該示例性實(shí)施例中的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不帶符號(hào),即時(shí)16帶符號(hào)。
應(yīng)該指出,對(duì)于DMOV24和其它指令段,有些操作可編碼兩次。例如,行(i)與(j)里規(guī)定的格式對(duì)同一操作編碼,一個(gè)格式規(guī)定使用即時(shí)總線Im1,另一格式規(guī)定使用即時(shí)總線Im2。編碼兩次可讓該指令段與眾多其它也能要求使用即時(shí)總1或2的指令段組合起來(lái)。
40位雙載指令段(DL40)是一種40位的指令段,可作即時(shí)裝載地址操作。
表25列出了本發(fā)明該示例性實(shí)施例中執(zhí)行的具體操作。
表17.ALU指令段代碼注全零指令L0=DETNORM(L0)譯碼為NOP。
其中LD=DETNORM(LD)的指令為非法。
ALU8清除累加器指令為L(zhǎng)D=LD=LD。
ALU16指令段可作算術(shù)與邏輯兩種移位,表18列出了ALU16指令執(zhí)行的具體操作。
<<表示算術(shù)移位,<<<表示邏輯移位。
表26.DL40指令段格式與代碼注地址14不帶符號(hào),即時(shí)16與32帶符號(hào)。
同樣如表5所示,在本發(fā)明該示例性實(shí)施例中提供了四類存儲(chǔ)器移動(dòng)和程序流指令段,它們列于表27。
表27.存儲(chǔ)器移動(dòng)和程序流指令段
每個(gè)存儲(chǔ)器移動(dòng)和程序流指令(MMPF)段由表28列出的一組MMPF子段組成。
表28.組合數(shù)據(jù)移動(dòng)和程序流指令子段
首先討論MMPF指令段的格式與操作,然后詳細(xì)討論MMPF子段的格式與操作。
OneMem11MMPF指令段用來(lái)執(zhí)行單個(gè)存儲(chǔ)器裝載與存儲(chǔ)操作、數(shù)據(jù)移動(dòng)操作和程序流操作。在這里提供的示例性實(shí)施例中,用OneMem11MMPF指令段執(zhí)行八種不同的操作,由11位段中前三位表示的特定操作如表29所示,該表列出了可用OneMem11數(shù)據(jù)移動(dòng)指令段執(zhí)行的操作。
表29.OneMem11指令段格式TwoMwm19MMPF指令段是一種19位指令段,可執(zhí)行表30列出的存儲(chǔ)器裝載與存儲(chǔ)操作的八種不同的組合。
表30.TwoMem19指令段格式TwoMoV19MMPF指令段是一種19位指令段,能與數(shù)據(jù)移動(dòng)操作一起作八種不同組合的存儲(chǔ)器裝載與存儲(chǔ)操作,如表31所示。
表31.TwoMov 19指令段格式ThreeMeM27MMPF指令段是一種27位指令段,能執(zhí)行表32所示的八種不同組合的存儲(chǔ)器裝載、存儲(chǔ)器存儲(chǔ)和數(shù)據(jù)操作。
表32.ThreeMem 27指令段格式公式(4)給出由LD(A)指令子段執(zhí)行的操作。
R0-R7L0h-L3hL0l-L3l=*AX++--++AM0++AM1;---(4)]]>表33列出本發(fā)明該示例性實(shí)施例提供的LD(A)指令子段。
表33.LD(A)指令子段格式公式(5)是LD(B)指令子段執(zhí)行的操作。
R0-R7L0h-L3hL0l-L3l=*BX++--++BM0++BM1;---(5)]]>表34列出本發(fā)明該示例性實(shí)施例提供的LD(B)指令子段。
表34.LD(B)指令子段格式公式(6)是ST(A)指令子段執(zhí)行的操作。
*AX++--++AM0++AM1=R0-R7L0h-L3hL0l-L3l;---(6)]]>表35列出本發(fā)明該示例性實(shí)施例提供的ST(A)指令子段。
表35.ST(A)指令子段格式公式(7)是ST(B)指令子段執(zhí)行的操作。
*BX++--++BM0++BM1=R0-R7L0h-L3hL0l-L3l;---(7)]]>表36列出本發(fā)明該示列性實(shí)施例提供的ST(B)指令子段。<p>公式(4)給出由LD(A)指令子段執(zhí)行的操作。
R0-R7L0h-L3hL0l-L3l=*AX++--++AM0++AM1;---(4)]]>表33列出本發(fā)明該示例性實(shí)施例提供的LD(A)指令子段。
表33.LD(A)指令子段格式公式(5)是LD(B)指令子段執(zhí)行的操作。
R0-R7L0h-L3hL0l-L3l=*BX++--++BM0++BM1;---(5)]]>表34列出本發(fā)明該示例性實(shí)施例提供的LD(B)指令子段。
表34.LD(B)指令子段格式公式(6)是ST(A)指令子段執(zhí)行的操作。
*AX++--++AM0++AM1=R0-R7L0h-L3hL0l-L3l;---(6)]]>表35列出本發(fā)明該示例性實(shí)施例提供的ST(A)指令子段。
表35.ST(A)指令子段格式公式(7)是ST(B)指令子段執(zhí)行的操作。
*BX++--++BM0++BM1=R0-R7L0h-L3hL0l-L3l;---(7)]]>表36列出本發(fā)明該示列性實(shí)施例提供的ST(B)指令子段。原理應(yīng)用于其它實(shí)施例。例如,雖然描述的系統(tǒng)與方法同DSP相關(guān),但其各個(gè)方面都適用于一般的計(jì)算系統(tǒng)與裝置。
通過(guò)參照諸較佳實(shí)施例面對(duì)本發(fā)明所作的描述,可以充分理解到,有關(guān)實(shí)施例僅用作示例,對(duì)于具備相關(guān)知識(shí)與技能的人們,各種改型與變化并不背離由所附的權(quán)項(xiàng)及其等效的規(guī)定的發(fā)明精神與范圍。
權(quán)利要求
1.一種用可變長(zhǎng)度指令操作數(shù)字信號(hào)處理器的方法,所述可變長(zhǎng)度指令有一組指令段,每一指令段請(qǐng)求一操作,所述方法包括步驟a)在第一時(shí)鐘周期的第一時(shí)鐘相內(nèi),從第一寄存器將先前處理的數(shù)據(jù)讀入第一處理單元;b)根據(jù)所述指令段組的第一指令段處理所述先前處理的數(shù)據(jù),并在所述第一時(shí)鐘周期內(nèi)得出二次處理的數(shù)據(jù);c)根據(jù)所述指令段組的第二指令段處理新數(shù)據(jù),并在所述第一時(shí)鐘周期內(nèi)產(chǎn)生新處理的數(shù)據(jù);d)在所述第一時(shí)鐘周期的第二相內(nèi),將所述新處理的數(shù)據(jù)寫入所述第一寄存器;及e)在所述第一時(shí)鐘周期的所述第二相內(nèi),將所述二次處理的數(shù)據(jù)寫入第二寄存器。
2.如權(quán)利要求1所述的方法,其特征在于步驟b)由第一處理單元執(zhí)行,步驟c)由第二處理單元執(zhí)行。
3.如權(quán)利要求1所述的方法還包括步驟讀包含所述可變長(zhǎng)度指令的指令數(shù)據(jù);確定下一個(gè)指令長(zhǎng)度;對(duì)所述指令數(shù)據(jù)中等于所述下一個(gè)指令長(zhǎng)度的數(shù)據(jù)量進(jìn)行譯碼。
4.一種微處理器,包括第一處理單元;第二處理單元;及可讀地耦合至所述第一與第二處理單元的寄存器。
5.如權(quán)利要求4所述的微處理器還包括耦合至所述寄存器的數(shù)據(jù)總線;及耦合至所述數(shù)據(jù)總線的數(shù)據(jù)存儲(chǔ)器。
6.如權(quán)利要求4所述的微處理器還包括第二寄存器,它耦合至所述第一處理單元,但不耦合至所述第二處理單元;第三寄存器,它耦合至所述第二處理單元,但不耦合至所述第一處理單元。
7.如權(quán)利要求4所述的微處理器,其中所述寄存器工作于一個(gè)兩相時(shí)鐘周期,所述寄存器在所述兩相時(shí)鐘周期的第一相內(nèi)讀出,而在所述兩相時(shí)鐘周期的第二相內(nèi)寫入。
8.如權(quán)利要求4所述的微處理器還包括多路復(fù)用器,用于以第一配置將所述第一處理單元耦合至所述寄存器,并以第二配置將所述第二處理單元耦合至所述寄存器。
9.如權(quán)利要求8所述的微處理器還包括控制系統(tǒng),用于根據(jù)指令數(shù)據(jù)配置所述多路復(fù)用器。
10.如權(quán)利要求4的微處理器,其中所述第一處理單元是一乘法累加器。
11.如權(quán)利要求10的微處理器,其中所述第二處理單元是一算術(shù)邏輯單元。
12.如權(quán)利要求4的微處理器還包括第一數(shù)據(jù)存儲(chǔ)器;第二數(shù)據(jù)存儲(chǔ)器;耦合至所述第一存儲(chǔ)器與所述寄存器的第一總線;及耦合至所述第二數(shù)據(jù)存儲(chǔ)器與所述寄存器的第二總線。
13.如權(quán)利要求4所述的微處理器,其中所述寄存器經(jīng)所述寄存器的輸出端耦合至所述第一與第二處理單元,所述第一處理單元的輸出端耦合至所述寄存器的輸入。
14.一種用于操作數(shù)字信號(hào)處理器的方法,包括步驟在第一時(shí)鐘周期的第一時(shí)鐘相內(nèi),將處理的數(shù)據(jù)從寄存器讀入第一處理單元;在所述第一時(shí)鐘周期內(nèi)用所述第一處理單元處理所述處理的數(shù)據(jù),得出再處理的數(shù)據(jù);在所述第一時(shí)鐘周期內(nèi)在第二處理單元中處理其他數(shù)據(jù),產(chǎn)生新處理的數(shù)據(jù);及在所述第一時(shí)鐘周期的第二相內(nèi),將所述新處理的數(shù)據(jù)寫入所述寄存器。
15.如權(quán)利要求14所述的方法,還包括步驟在所述第一時(shí)鐘周期的所述第二相內(nèi),將所述再處理的數(shù)據(jù)寫入第二寄存器。
16.一種數(shù)字信號(hào)處理器,包括第一處理單元,用于處理數(shù)據(jù);第二處理單元,用于處理數(shù)據(jù);第一組寄存器,可將數(shù)據(jù)寫到所述第一與第二處理單元;及第二組寄存器,可將數(shù)據(jù)寫到所述第一處理單元,但不寫到所述第二處理單元。
17.如權(quán)利要求16所述的數(shù)字信號(hào)處理器,其特征在于所述第一處理單元是一乘法-累加單元,所述第二處理單元是一算術(shù)邏輯單元。
全文摘要
數(shù)字信號(hào)處理電路要求使用可變長(zhǎng)度指令組。示例的DSP包括一組可在其上與寄存庫(kù)(120)交換數(shù)據(jù)的三條數(shù)據(jù)總線(108、110、112)和三個(gè)數(shù)據(jù)存儲(chǔ)器(102、103、104)。寄存庫(kù)的寄存器可被至少兩個(gè)處理單元(128、130)訪問(wèn)。使用的取指令單元(156)接收存儲(chǔ)在指令存儲(chǔ)器(152)里的可變長(zhǎng)度指令,該指令存儲(chǔ)器可用三個(gè)數(shù)據(jù)存儲(chǔ)器(102、102、104)分開。
文檔編號(hào)G06F9/38GK1862486SQ20061005954
公開日2006年11月15日 申請(qǐng)日期1999年3月4日 優(yōu)先權(quán)日1998年3月18日
發(fā)明者G·C·西赫, 周群真, S·K·杰哈, I·坎, 林健, Q·莫蒂瓦拉, D·約翰, 張利, 張海濤, 李維新, C·E·薩卡瑪基, P·A·坎塔克 申請(qǐng)人:高通股份有限公司