欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

標(biāo)量/矢量處理器的制作方法

文檔序號(hào):6409693閱讀:603來(lái)源:國(guó)知局
專利名稱:標(biāo)量/矢量處理器的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種標(biāo)量/矢量處理器。
背景技術(shù)
諸如UMTS/FDD、TDD、IS2000和TD-SCDMA這類的第三代無(wú)線電通信標(biāo)準(zhǔn),以很高的頻率工作。諸如UMTS之類的用于第三代移動(dòng)通信標(biāo)準(zhǔn)的調(diào)制解調(diào)器(收發(fā)器)大約需要比GSM多100倍的數(shù)字信號(hào)處理功率。人們希望利用可編程體系結(jié)構(gòu)來(lái)實(shí)現(xiàn)用于此種標(biāo)準(zhǔn)的收發(fā)器,以便能夠處理不同的標(biāo)準(zhǔn)以及能夠靈活地適應(yīng)于新的標(biāo)準(zhǔn)。使用以常規(guī)頻率工作的常規(guī)DSP技術(shù)可能需要多至30個(gè)DSP來(lái)提供必要的性能。顯然是這類手段同常規(guī)的用于單個(gè)標(biāo)準(zhǔn)的基于硬件的收發(fā)器手段相比,既不是成本有效的也不是功率高效的。
提高處理器性能的已知手段就是使用矢量體系結(jié)構(gòu)。在矢量處理器中,矢量由一個(gè)以上的數(shù)據(jù)元素構(gòu)成,例如十六個(gè)16位元素。處理器的功能單元受一條指令的觸發(fā)而并行地對(duì)矢量中所有單獨(dú)的數(shù)據(jù)元素進(jìn)行操作。使用流水線矢量處理器,能夠進(jìn)一步提高性能。
矢量處理器傳統(tǒng)上主要已用于科學(xué)處理。原則上講,矢量處理器還可以用于信號(hào)處理。然而,由于稱之為″Amdahl定律″的隱含意義,常規(guī)矢量處理器結(jié)構(gòu)對(duì)于非100%可矢量化的應(yīng)用而言是不起作用的。這條定律陳述了將在具有P個(gè)處理元件的矢量處理器中通過(guò)矢量化獲得的整體加速率作為能夠被矢量化的小部分代碼(f)的函數(shù),等于(1-f+f/P)-1。這意味著當(dāng)50%的代碼能被矢量化時(shí),實(shí)現(xiàn)了小于2的整體加速率(代替理論最大加速率32)。這是因?yàn)槿杂?0%的代碼不能被矢量化,由此不能為這部分的代碼實(shí)現(xiàn)加速。即使90%的代碼能被矢量化,加速率也仍然小于因數(shù)8。為了在消費(fèi)者電子設(shè)備應(yīng)用中使用,特別是在移動(dòng)通信中使用,如果能夠?qū)崿F(xiàn)顯著的加速,則只得調(diào)整矢量處理器的額外成本。

發(fā)明內(nèi)容
本發(fā)明的一個(gè)目的是,提供一種更好地適用于高性能任務(wù)(特別是用于移動(dòng)通信系統(tǒng)的信號(hào)處理)的處理器體系結(jié)構(gòu)。
為了滿足上述目的,一種標(biāo)量/矢量處理器包括多個(gè)功能單元,其中至少其中一個(gè)功能單元包括用于對(duì)至少一個(gè)矢量進(jìn)行操作的矢量部分和用于對(duì)至少一個(gè)標(biāo)量進(jìn)行操作的標(biāo)量部分,通過(guò)標(biāo)量部分協(xié)同操作的功能單元的矢量部分和標(biāo)量部分被設(shè)置成提供和/或耗費(fèi)功能單元的矢量部分所需要和/或提供的至少一個(gè)標(biāo)量。
發(fā)明人意識(shí)到為了突破Amdahl定律,必要的是必須也以有效的方式來(lái)處理數(shù)據(jù)的非可矢量化部分。非可矢量化部分涉及到標(biāo)量數(shù)據(jù)。往往這些標(biāo)量是通過(guò)矢量操作而產(chǎn)生和/或耗費(fèi)的。示例就是所有矢量元素的總和或最大值選擇第一個(gè)(或最后一個(gè))矢量元素。在其它情況下,標(biāo)量數(shù)據(jù)可以不依賴于矢量操作。為了最佳地處理這類標(biāo)量數(shù)據(jù),處理器的至少一個(gè)功能單元不僅包括矢量部分而且還包括標(biāo)量部分。標(biāo)量部分提供和/或耗費(fèi)了功能單元的矢量部分所需的和/或所提供的標(biāo)量。照此,處理器的標(biāo)量部分能夠準(zhǔn)備或進(jìn)一步處理矢量部分所需的或所產(chǎn)生的標(biāo)量,這確保矢量部分能夠更好地繼續(xù)矢量的流式處理。應(yīng)當(dāng)注意的是,US 5,659,706描述了一種具有獨(dú)立的標(biāo)量處理器部分和矢量處理器部分的標(biāo)量/矢量處理器。每個(gè)處理器部分都排列在功能單元中。然而,標(biāo)量處理器部分的功能單元與矢量處理器部分的功能單元之間不存在緊密的協(xié)作。這兩個(gè)部分都完全獨(dú)立地工作。
如從屬權(quán)利要求2和3中所述的,功能單元的矢量部分和標(biāo)量部分分別排列在各自的流水線中。這提高了處理器的矢量部分和標(biāo)量部分的性能。
如從屬權(quán)利要求4中所述的,能夠獨(dú)立地配置流水線。這實(shí)現(xiàn)了用于原始數(shù)據(jù)處理的矢量流水線的最佳配置,然而可以為用于矢量處理的標(biāo)量的最理想耗費(fèi)/產(chǎn)生選擇標(biāo)量流水線的另外的最佳配置。可置配性提高了性能并且能夠簡(jiǎn)化處理器的編程。照此也能夠減少程序代碼。
如從屬權(quán)利要求5中所述的,至少其中一條流水線是可基于逐個(gè)指令地配置的。照此,能夠更進(jìn)一步地提高性能并進(jìn)一步地減少代碼。
如從屬權(quán)利要求6中所述的,使用具有用于每個(gè)功能單元的獨(dú)立分段的VLIW指令來(lái)控制所述標(biāo)量/矢量處理器。優(yōu)選地,VLIW指令包括用于功能單元的標(biāo)量部分和矢量部分的獨(dú)立指令。照此,這兩個(gè)部分都能夠最佳地執(zhí)行它們的任務(wù)。
如從屬權(quán)利要求8中所述的,還可以通過(guò)VLIW指令來(lái)配置流水線。這是基于逐個(gè)指令地配置流水線的有效方式。
如從屬權(quán)利要求9中所述,流水線包括與附著于流水線的功能單元同樣多的流水線路徑。每個(gè)功能單元都與其中一條路徑相關(guān)聯(lián)。這類路徑例如可以是在其上功能單元廣播矢量(或?qū)?yīng)標(biāo)量流水線的標(biāo)量)的路徑。如從屬權(quán)利要求10中所述,功能單元的指令指明所述單元應(yīng)該從哪條矢量流水線路徑中耗費(fèi)矢量(和/或它應(yīng)該從哪條標(biāo)量流水線路徑中耗費(fèi)標(biāo)量)。作為選擇,功能單元的指令能夠指明它應(yīng)該在哪條矢量流水線路徑上產(chǎn)生矢量輸出(和/或它應(yīng)該在哪條標(biāo)量流水線路徑上產(chǎn)生標(biāo)量),其中與其中一個(gè)后續(xù)周期中的那個(gè)路徑相關(guān)聯(lián)的功能單元依據(jù)給予那個(gè)單元的指令而耗費(fèi)那個(gè)產(chǎn)生的數(shù)據(jù)。照此,能夠?qū)崿F(xiàn)完全的流水線可置配性,同時(shí)以每條流水線只表示一個(gè)路徑的合理水平來(lái)保持網(wǎng)絡(luò)編址。將會(huì)認(rèn)識(shí)到的是,由于路徑與功能單元之間的固定關(guān)系,因而表示路徑與表示功能單元相同。
如從屬權(quán)利要求11中所述的,移位單元是最佳受益于功能單元的標(biāo)量部分與矢量部分之間的協(xié)作的功能單元的一個(gè)示例。
為了滿足本發(fā)明的目的,一種處理系統(tǒng)包括如權(quán)利要求1中所述的標(biāo)量處理器和標(biāo)量/矢量處理器,其中將所述標(biāo)量/矢量處理器設(shè)置作為標(biāo)量處理器的協(xié)同處理器,而把所述標(biāo)量處理器設(shè)置成控制所述標(biāo)量/矢量處理器;安排標(biāo)量/矢量處理器的標(biāo)量部分以執(zhí)行循環(huán)內(nèi)的標(biāo)量處理,而安排標(biāo)量處理器以執(zhí)行不規(guī)則的循環(huán)外的標(biāo)量處理。通過(guò)使標(biāo)量/矢量處理器免除掉必須處理不規(guī)則的標(biāo)量操作,能夠?yàn)轱@著的部分克服Amdahl定律。根據(jù)本發(fā)明的標(biāo)量/矢量處理器最佳地適合于處理循環(huán)內(nèi)的標(biāo)量操作,其中標(biāo)量部分與矢量部分之間的緊密協(xié)作確保了矢量處理能夠盡可能繼續(xù)下去。能夠選擇最佳用于兩種處理器的技術(shù)(比如像CMOS技術(shù)、工作頻率等等),從而提供成本有效的系統(tǒng)。


通過(guò)參照在下文中描述的實(shí)施例,并且將參照這些實(shí)施例作出闡明,本發(fā)明的這些及其它方面將是顯而易見(jiàn)的。
在附圖中
圖1示出了可以在其中使用根據(jù)本發(fā)明的標(biāo)量/矢量處理器的優(yōu)選配置;圖2示出了根據(jù)本發(fā)明的標(biāo)量/矢量處理器的主要結(jié)構(gòu);圖3示出了支持的數(shù)據(jù)寬度和數(shù)據(jù)類型;圖4示出了指令分配單元的框圖;圖5A示出了矢量存儲(chǔ)器單元的框圖;圖5B舉例說(shuō)明了ACU寄存器組映射到一個(gè)矢量寄存器;圖6示出了代碼生成單元的框圖;圖7示出了ALU-MAC單元的框圖;圖8舉例說(shuō)明了累加器寄存器的結(jié)構(gòu);圖9示出了洗牌單元的框圖;圖10示出了左移位單元的框圖;和圖11示出了右移位單元的框圖。
具體實(shí)施例方式
圖1示出了可以在其中使用標(biāo)量/矢量處理器的優(yōu)選配置。在這個(gè)配置中,三個(gè)主要組成部分都經(jīng)由總線110相連。連接這三個(gè)組成部分的總線110可以是任何適合的總線,例如AMBA高速總線(AHB)。所述主要組成部分是·根據(jù)本發(fā)明的可編程標(biāo)量/矢量處理器120,包括功能單元和局部數(shù)據(jù)存儲(chǔ)器(在圖1中稱為矢量存儲(chǔ)器);·包括有限芯片內(nèi)程序和數(shù)據(jù)存儲(chǔ)器的微控制器或DSP子系統(tǒng)130;·接口塊140。
標(biāo)量/矢量處理器120主要用于常規(guī)的″繁重/責(zé)任″處理,尤其是內(nèi)循環(huán)的處理。標(biāo)量/矢量處理器包括矢量處理功能。照此,它為要被執(zhí)行的代碼的可矢量化部分提供了大規(guī)模的并行性。所有信號(hào)處理中的絕大多數(shù)都將通過(guò)標(biāo)量/矢量處理器的矢量部分加以執(zhí)行。例如,就執(zhí)行相同指令的32個(gè)相同處理元件的陣列而言,它提供了高度的并行性。同32字寬的存儲(chǔ)器接口相結(jié)合,這以低成本和適度的功耗達(dá)成了前所未有的可編程性能水平。然而,完全地采用這種并行操作并不總是合理的,因?yàn)樵S多算法都沒(méi)有呈現(xiàn)正確形式的充分?jǐn)?shù)據(jù)并行性。根據(jù)Amdahl定律,在使代碼的可直接矢量化的部分矢量化之后,大部分的時(shí)間都花費(fèi)在剩余的代碼上。剩余的代碼能夠分成四類;·尋址有關(guān)的指令(例如,利用求模尋址來(lái)把指針增加到環(huán)形緩沖器中)·規(guī)則的標(biāo)量操作(即,對(duì)應(yīng)于矢量處理器的主循環(huán)的標(biāo)量操作)·循環(huán)·不規(guī)則的標(biāo)量操作對(duì)應(yīng)這些類別中的每一類的小部分代碼都高度地依賴于執(zhí)行的算法。例如,(P-SCH搜索所使用的)Golay相關(guān)器需要大量尋址有關(guān)的指令,但是對(duì)于諸如Rake之類的其它算法來(lái)說(shuō)情況則不是這樣的。然而,發(fā)明人已經(jīng)研究出的所有算法的一個(gè)共性就在于小部分的不規(guī)則標(biāo)量操作是非常有限的。這種特性允許標(biāo)量/矢量處理器120與微控制器或DSP 130之間的任務(wù)分離。
根據(jù)本發(fā)明的結(jié)構(gòu)通過(guò)在與矢量處理緊密集成的標(biāo)量/矢量處理器120中并入標(biāo)量處理功能而克服了前三個(gè)問(wèn)題。第四個(gè)問(wèn)題能夠通過(guò)使用獨(dú)立的微控制器或DSP 130加以克服,所述微控制器或DSP執(zhí)行不規(guī)則的任務(wù),并且優(yōu)選地也控制標(biāo)量/矢量處理器。在這個(gè)優(yōu)選配置中,標(biāo)量/矢量處理器120充當(dāng)可編程的協(xié)同處理器(在其余部分中也稱為CVP,協(xié)同矢量處理器)。標(biāo)量/矢量處理器120和微控制器130之間的接口處理通信(例如,經(jīng)由共享存儲(chǔ)器)和同步化(例如,經(jīng)由共享存儲(chǔ)器和狀態(tài)信號(hào))。接口優(yōu)選的是存儲(chǔ)映象式的。
接口塊140允許處理器與系統(tǒng)的其余部分進(jìn)行交互。在優(yōu)選實(shí)施例中,標(biāo)量/矢量處理器被用作第二代/第三代移動(dòng)網(wǎng)絡(luò)的軟件調(diào)制解調(diào)器(收發(fā)器)。對(duì)于這類軟件調(diào)制解調(diào)器功能來(lái)講,對(duì)無(wú)線電設(shè)備的控制和接口連接無(wú)法容易地由標(biāo)量/矢量處理器(所述控制是不規(guī)則的,而且數(shù)據(jù)是固有地串行傳輸?shù)?或微控制器130(中斷率將會(huì)過(guò)高)來(lái)執(zhí)行。對(duì)于這類應(yīng)用來(lái)講,優(yōu)選的是把專用硬件用作為前端,其主要任務(wù)就是在微控制器130的控制之下把控制字和數(shù)據(jù)字傳遞給矢量存儲(chǔ)器,例如DMA。然后,由標(biāo)量/矢量處理器處理矢量存儲(chǔ)器中的數(shù)據(jù)。對(duì)于軟件調(diào)制解調(diào)器而言,由標(biāo)量/矢量處理器執(zhí)行的接收器功能可以包括濾波器、耙接收器、通道估計(jì)器、搜索器、解數(shù)字復(fù)用器、上行鏈路、turbo譯碼器、維特比(Viterbi)譯碼器和解多路復(fù)用器。由標(biāo)量/矢量處理器執(zhí)行的發(fā)送器功能可以包括多路復(fù)用器、通道編碼器、數(shù)字復(fù)用器、發(fā)送器和濾波器。實(shí)質(zhì)上,那些功能都是已知的,并且將不作進(jìn)一步描述。
標(biāo)量/矢量處理器120可以是到總線110的從設(shè)備。而微控制器130和接口塊140(它可以包括DMA單元)可以充當(dāng)主設(shè)備。所有與CVP之間的通信(作為它的程序、數(shù)據(jù)或控制)都優(yōu)選的是存儲(chǔ)映象式的。存儲(chǔ)器可以是脫離芯片(off-chip)的DRAM,并且這種DRAM也可以被標(biāo)量/矢量處理器用作為(去)交錯(cuò)存儲(chǔ)器。
圖2示出了根據(jù)本發(fā)明的處理器的主要結(jié)構(gòu)。所述處理器包括流水線矢量處理部分210。在圖2的優(yōu)選實(shí)施例中,矢量部分包括將在下面更詳細(xì)描述的七個(gè)功能單元。本領(lǐng)域的技術(shù)人員將能為具體的任務(wù)選擇最佳的功能單元。為了支持矢量部分的操作,標(biāo)量/矢量處理器包括被設(shè)置成并行地對(duì)矢量部分進(jìn)行操作的標(biāo)量處理部分220。優(yōu)選地,標(biāo)量處理部分也是流水線的。為了支持矢量部分的操作,矢量部分的至少其中一個(gè)功能單元也提供標(biāo)量部分的對(duì)應(yīng)部分的功能。例如,移位功能單元的矢量部分可以在功能上對(duì)矢量進(jìn)行移位,其中由移位功能單元的標(biāo)量部分來(lái)提供標(biāo)量分量(或者標(biāo)量分量被傳送到移位功能單元的標(biāo)量部分)。照此,移位功能單元既涵蓋矢量部分又涵蓋標(biāo)量部分。因此,至少一些功能單元不僅具有矢量部分而且還具有標(biāo)量部分,其中矢量部分和標(biāo)量部分能夠通過(guò)交換標(biāo)量數(shù)據(jù)來(lái)協(xié)同操作。功能單元的矢量部分提供原始的處理能力,其中相應(yīng)的標(biāo)量部分(即,相同功能單元的標(biāo)量部分)通過(guò)提供和/或耗費(fèi)標(biāo)量數(shù)據(jù)來(lái)支持矢量部分的操作。經(jīng)由矢量流水線來(lái)提供矢量部分的矢量數(shù)據(jù)。
功能單元(FU)并行地工作。每個(gè)FU都能夠接收和發(fā)送矢量數(shù)據(jù)。許多FU也都能接收和發(fā)送標(biāo)量數(shù)據(jù)。其中一個(gè)FU是稱為指令分配單元(IDU250)的特定FU。它包含程序存儲(chǔ)器252,并且負(fù)責(zé)將指令排序,并向其自身及其它FU分配指令段。原則上講,每個(gè)FU都具有三個(gè)部分控制部分230、標(biāo)量部分220和矢量部分210。正如將在下面更詳細(xì)描述的那樣,一些FU的控制部分和標(biāo)量部分都可以是空的。
根據(jù)本發(fā)明的標(biāo)量/矢量處理器以兩種主要方式應(yīng)用指令級(jí)并行操作1.矢量處理,其中單條指令對(duì)數(shù)據(jù)的矢量(標(biāo)量)起作用。這種手段亦稱單指令流、多數(shù)據(jù)流或SIMD。
2.多功能單元的并行處理,每個(gè)多功能單元都對(duì)矢量起作用??梢园堰@個(gè)視作為VLIW指令級(jí)并行操作的(約束)形式,注意,這兩種形式的指令級(jí)并行操作都是獨(dú)立的,并且它們的影響都是漸增的(cumulative)。
功能單元(FU)概述在優(yōu)選的實(shí)施例中,CVP包括下列七個(gè)專用功能單元。
·指令分配單元(IDU250)。IDU包含程序存儲(chǔ)器252,讀取連續(xù)的VLIW指令,并向7個(gè)功能單元發(fā)布每條指令的7個(gè)分段。優(yōu)選地,它包含支持多達(dá)零開(kāi)銷(xiāo)循環(huán)的三個(gè)嵌套層的循環(huán)單元。在優(yōu)選實(shí)施例中,它不支持分支、跳轉(zhuǎn)或中斷。根據(jù)下面更詳細(xì)描述從限制(stint)描述符來(lái)加載初始程序計(jì)數(shù)器。
·矢量存儲(chǔ)器單元(VMU260)。VMU包含矢量存儲(chǔ)器(在圖2中未示出)。在每條指令期間,它能夠從矢量存儲(chǔ)器中發(fā)送行或矢量或者將行接收到矢量存儲(chǔ)器中。相同的指令另外還可以規(guī)定標(biāo)量發(fā)送操作和/或接收操作。VMU是唯一連接于外界(即,連接于外部總線110)的功能單元。
·代碼生成單元(CGU262)。CGU是在有限域運(yùn)算中專用的。例如,CGU能夠用于生成CDMA代碼芯片的矢量以及相關(guān)函數(shù),比如像通道編碼和CRC。
·ALU-MAC單元(AMU264)。AMU是在規(guī)則的整數(shù)和定點(diǎn)運(yùn)算中專用的。它支持矢量間操作,其中在元素方面(element-wise)對(duì)多個(gè)矢量執(zhí)行操作。在優(yōu)選的實(shí)施例中,AMU還提供一些矢量?jī)?nèi)操作,其中對(duì)單個(gè)矢量?jī)?nèi)的元素執(zhí)行運(yùn)算。
·洗牌單元(SFU266)。SFU能夠根據(jù)指定的洗牌模式來(lái)量新安排矢量的元素。
·左移位單元(SLU268)。SLU能夠按單位(比如字、雙字或四倍長(zhǎng)字)對(duì)矢量的元素進(jìn)行向左移位。把產(chǎn)生的標(biāo)量提供給它的標(biāo)量部分。依據(jù)發(fā)出的SLU矢量操作的類型,所耗費(fèi)的標(biāo)量要么是零要么取自它的標(biāo)量部分。
·右移位單元(SRU270)。SRU類似于SLU,但是向右移位。另外,它具有在AMU上合并來(lái)自矢量?jī)?nèi)操作的連續(xù)結(jié)果的能力。
下列表示出了所有具有函數(shù)矢量部分的FU,其中一些FU不具有控制部分或標(biāo)量部分。

將會(huì)認(rèn)識(shí)到的是,對(duì)于特定的應(yīng)用而言,也可以選擇其它的FU。優(yōu)選地,在基本處理器中,與IDU相結(jié)合地使用AMU和VMU。如果功耗是關(guān)鍵的,那么就可以略去SFU,因?yàn)檫@個(gè)單元比能夠協(xié)助執(zhí)行洗牌操作的移位單元要耗費(fèi)更多電力。SFU尤其對(duì)維特比譯碼有用??梢砸罁?jù)計(jì)算利用常規(guī)AMU指令難以產(chǎn)生的代碼的技術(shù)要求來(lái)選擇CGU和CGU的特定形式,例如伽羅瓦域計(jì)算和擾頻代碼的生成。在某些應(yīng)用中,為了獲得更高的FU平均負(fù)載,添加一個(gè)或多個(gè)AMU可能是有益的。同樣,也可以添加其它的專用FU,例如用于執(zhí)行某些位級(jí)計(jì)算的專用FU。
優(yōu)選地,在FU的操作可能受FU中存儲(chǔ)的參數(shù)的影響的意義上,可配置至少其中一個(gè)FU。優(yōu)選地,可以從矢量存儲(chǔ)器中讀取這類參數(shù)(″配置數(shù)據(jù)″)。這類配置有助于簡(jiǎn)化處理器的編程并縮減代碼尺寸。
FU間通信所有功能單元都并行地進(jìn)行操作。一旦接收到它們的指令段,它們就輸入數(shù)據(jù)、處理數(shù)據(jù)并輸出數(shù)據(jù),既包括矢量數(shù)據(jù)(當(dāng)可適用時(shí))又包括標(biāo)量數(shù)據(jù)。在FU當(dāng)中,嚴(yán)格地在標(biāo)量部分當(dāng)中或在矢量部分當(dāng)中進(jìn)行通信(FU間通信)。也就是說(shuō),除IDU之外,所有FU的矢量部分都通過(guò)流水線而相連。在優(yōu)選的實(shí)施例中,這個(gè)流水線是可基于指令而配置的。為此,F(xiàn)U優(yōu)選地通過(guò)互連網(wǎng)絡(luò)而互連,原則上在每個(gè)周期期間允許每個(gè)矢量部分都從任何其它的矢量部分那里接收矢量。在其它特征當(dāng)中,這個(gè)特征實(shí)現(xiàn)了FU的任意流水線的創(chuàng)建(除IDU之外)。在每個(gè)時(shí)鐘周期期間,有助于矢量路徑的六個(gè)功能單元能夠輸出矢量并且并行地將其發(fā)送到其它單元。它們還可以從另一個(gè)單元接收矢量。網(wǎng)絡(luò)幾乎完全都是連接的。只省略了無(wú)意義的鏈接。矢量路徑中的連通性概括如下(!表示連接)。注意,AMU能夠同時(shí)接收兩個(gè)矢量。

如圖2所示,網(wǎng)絡(luò)優(yōu)選地由每個(gè)作為信號(hào)源(用圓盤(pán)表示)而連接于一個(gè)網(wǎng)絡(luò)路徑的FU構(gòu)成。它連接于所有其它作為信號(hào)接收器的路徑(用三角形表示)。PU的VLIW指令的部分表示它應(yīng)該從哪條路徑耗費(fèi)矢量。照此,能夠基于指令來(lái)配置流水線。每條路徑都能夠(例如)利用256條并行導(dǎo)線來(lái)傳送全部矢量。同樣,F(xiàn)U的至少一些標(biāo)量部分是通過(guò)獨(dú)立的流水線相連的。優(yōu)選地,還基于指令來(lái)配置這個(gè)流水線。在不能把標(biāo)量發(fā)送給至少一個(gè)FU的標(biāo)量部分或者不能從至少一個(gè)FU的標(biāo)量部分那里接收標(biāo)量的意義上講,在FU的標(biāo)量部分之間的互連網(wǎng)絡(luò)可能是局部的。因此,能夠指定少數(shù)的流水線排序??梢元?dú)立地配置標(biāo)量和矢量流水線。例如,通過(guò)在有關(guān)的VLIW部分中指明將由功能單元讀取的標(biāo)量流水線和矢量流水線兩者來(lái)進(jìn)行配置。將會(huì)認(rèn)識(shí)到的是,代替具有用于輸出數(shù)據(jù)的固定關(guān)聯(lián)路徑的FU,作為選擇它可以具有用于接收數(shù)據(jù)的固定關(guān)聯(lián)路徑,其中VLIW指令表示應(yīng)該在哪條路徑上輸出數(shù)據(jù)。

作為可置配性的一個(gè)例子,第一條VLIW指令可以令A(yù)MU耗費(fèi)CGU所產(chǎn)生的一個(gè)矢量以及VMU所產(chǎn)生的一個(gè)矢量。下一條指令可以令SFU耗費(fèi)來(lái)自VMU的一個(gè)矢量,并且令A(yù)MU耗費(fèi)來(lái)自SFU的一個(gè)矢量,第三條指令可以令A(yù)MU耗費(fèi)來(lái)自VAM的一個(gè)矢量以及令SFU耗費(fèi)來(lái)自AMU的一個(gè)矢量。
在不同功能單元的控制部分之間沒(méi)有指定連通性。這些控制部分從IDU那里接收VLIW指令的分段,更新它們自己的狀態(tài),并控制它們各自的標(biāo)量部分和矢量部分。
FU內(nèi)通信在FU內(nèi),存在這些部分之間的嚴(yán)格交互(FU內(nèi)通信)。這種交互是FU的操作的不可分割的部分。示例就是SLU和SRU,其中把產(chǎn)生的和/或耗費(fèi)的標(biāo)量提供給FU的相應(yīng)標(biāo)量部分或者從FU的相應(yīng)標(biāo)量部分中獲取所述產(chǎn)生的和/或耗費(fèi)的標(biāo)量。給出更多細(xì)節(jié)以作為FU詳細(xì)說(shuō)明的一部分。
典型地,在單個(gè)周期內(nèi)執(zhí)行指令。異常是由于矢量存儲(chǔ)器內(nèi)的擁擠而引發(fā)的,并且隨著停止周期數(shù)而自我表明這種情況。
數(shù)據(jù)寬度和數(shù)據(jù)類型在優(yōu)選的實(shí)施例中,標(biāo)量/矢量處理器支持如圖3所示的多種數(shù)據(jù)寬度和數(shù)據(jù)類型。存儲(chǔ)器編址的基本單位是字,也稱為單字。優(yōu)選地,數(shù)據(jù)寬度可以是單字(W)、雙字(DW)、或四倍長(zhǎng)字(QW)。字的大小是W=8位。雙字(2W=16位)是一對(duì)字,并且它的地址總是為偶數(shù)值。四倍長(zhǎng)字(4W=32位)是一對(duì)雙字,并且四倍長(zhǎng)字地址總是為四的倍數(shù)??梢詫⒁粚?duì)單字或雙字用作為復(fù)數(shù)。矢量包括PQ四倍長(zhǎng)字,它相當(dāng)于2個(gè)PQ雙字和4個(gè)PQ單字。優(yōu)選地,對(duì)于優(yōu)選的8位字大小而言,PQ=8給出了總矢量寬度為256位。
在優(yōu)選的實(shí)施例中,CVP支持下列數(shù)據(jù)類型整型和復(fù)數(shù)整型1.整型(int)具有三種大小字、雙字和四倍長(zhǎng)字,即整型范圍[-2N-1...2N-1-1],其中N等于W、2W或4W。
2.復(fù)數(shù)整型,也就是一對(duì)整型(實(shí)部、虛部),在圖3中表示為int.real。復(fù)數(shù)整型具有兩種大小雙字和四倍長(zhǎng)字。
標(biāo)量是任何數(shù)據(jù)類型(整型或復(fù)數(shù)整型)中的值。因此,標(biāo)量具有三種大小(單)字、雙字和四倍長(zhǎng)字。矢量具有PQ四倍長(zhǎng)字的固定大小。能夠以下列三種格式中的其中一種來(lái)構(gòu)造它1.PQ大小為四倍長(zhǎng)字的元素,2.PD=2PQ大小為雙字的元素,3.PS=2PD=4PQ大小為(單)字的元素。
矢量元素下標(biāo)范圍為
.因此,雙字具有偶數(shù)指數(shù),而四倍長(zhǎng)字的指數(shù)是四的倍數(shù)。圖3給出了數(shù)據(jù)大小與數(shù)據(jù)類型之間的關(guān)系的概述。該體系結(jié)構(gòu)完全可以PQ為單位加以伸縮,并且它是為任何矢量大小PQ≥1而定義的。然而,對(duì)于大部分的情形而言,最好選擇PQ的冪為2。
在優(yōu)選的實(shí)施例中,PQ是8,暗指32字的數(shù)據(jù)路徑寬度和存儲(chǔ)器寬度。
可以對(duì)涉及的數(shù)學(xué)運(yùn)算進(jìn)行配置或編程以處理數(shù)據(jù)類型上的變化。例如,可以將各種基本(低精度)乘法器組合成雙倍精度乘法器或組合成復(fù)合乘法器。這類技術(shù)在DSP和電路設(shè)計(jì)中是眾所周知的,且不再作進(jìn)一步描述。
程序執(zhí)行限制是CVP程序執(zhí)行和同步化的單元。限制是由CVP指令的有限序列描述的有限不可中斷任務(wù)。限制典型地是持續(xù)活動(dòng)的DSP內(nèi)核的時(shí)間片,它需要幾打的指令以供其說(shuō)明,并且需要幾百個(gè)周期以供其執(zhí)行。
CVP程序存儲(chǔ)器可以包含許多限制程序。它由微控制器130負(fù)責(zé)以指定執(zhí)行哪個(gè)限制以及按哪種順序執(zhí)行。為此目的,微控制器130可以在矢量存儲(chǔ)器中寫(xiě)入所謂的限制描述符的鏈接表。每個(gè)限制描述符都指代相應(yīng)的目標(biāo)代碼、后繼限制描述符以及潛在信號(hào)的說(shuō)明,以便限制剛一結(jié)束就能產(chǎn)生。限制描述符(SD)是包括3個(gè)字段的矢量存儲(chǔ)器中的結(jié)構(gòu)·程序存儲(chǔ)器中的目標(biāo)代碼的起始地址;·矢量存儲(chǔ)器中的后繼限制(下一個(gè)要被執(zhí)行的限制)的地址;如果沒(méi)有后繼限制則為空(nil);·信令描述符。
代替在矢量存儲(chǔ)器中定位限制描述符,它們還可以位于CVP程序存儲(chǔ)器中。
在優(yōu)選的配置中,限制的執(zhí)行可以按下列方式來(lái)觸發(fā)1.CVP處于其空閑狀態(tài)。微控制器130現(xiàn)在能夠通過(guò)在指定的VM地址上寫(xiě)入其SD的地址來(lái)觸發(fā)限制的執(zhí)行。這個(gè)特定的VM位置將總是包含當(dāng)前活動(dòng)的限制的地址,并且當(dāng)CVP為空閑時(shí)將包含空值。
2.據(jù)CVP程序中的顯式EOS(end-of-stint,限制結(jié)束)指令告知限制剛一結(jié)束,CVP就繼續(xù)后繼的限制,假定后繼限制是在當(dāng)前的SD中指定的。如果這樣的后繼限制不存在的話,CVP將返回到其靜止?fàn)顟B(tài)下。
可以由微控制器130通過(guò)檢查VM中指定的″當(dāng)前限制″的位置,來(lái)輪詢限制的狀態(tài)(活動(dòng)的/完成的)。限制剛一結(jié)束,CVP就可以選擇性地向其環(huán)境提供信令。對(duì)于一組信號(hào)線(至少一條輸出導(dǎo)線)而言,可以規(guī)定它上拉、下拉或者觸發(fā)它的狀態(tài)。這些信號(hào)例如可以連接于微控制器130和接口塊140的中斷輸入端。
指令CVP指令要么是控制指令要么是VLIW指令??刂浦噶罾缈梢允橇汩_(kāi)銷(xiāo)的循環(huán)初始化或者限制終止。不存在分支、跳轉(zhuǎn)或子程序。將VLIW指令分成分段,其中每個(gè)指令段都指定了將由對(duì)應(yīng)的功能單元執(zhí)行的操作。還能在矢量部分和標(biāo)量部分(如果有的話)的部分中進(jìn)一步細(xì)分所述分段。分段還包括關(guān)于把哪個(gè)網(wǎng)絡(luò)部分用來(lái)接收數(shù)據(jù)(矢量部分的一個(gè)或多個(gè)矢量,和標(biāo)量部分的一個(gè)或多個(gè)標(biāo)量)的兩個(gè)部分信息。
標(biāo)量/矢量處理器的狀態(tài)CVP的狀態(tài)是其功能單元的組合狀態(tài)。在優(yōu)選的實(shí)施例中,它包括·矢量存儲(chǔ)器(部分VMU);·程序存儲(chǔ)器(部分IDU);·矢量寄存器(所有功能單元);·標(biāo)量寄存器(大部分功能單元);·控制寄存器,包括程序計(jì)數(shù)器和地址偏移寄存器。
除了程序員可見(jiàn)的寄存器之外,CVP實(shí)現(xiàn)方案典型地包含用于流水線和高速緩存的附加寄存器(矢量寄存器、標(biāo)量寄存器和控制寄存器)。這些都不是CVP指令設(shè)置的體系結(jié)構(gòu)的一部分。
一些(矢量、標(biāo)量和控制)寄存器就是所謂的配置寄存器。可以從矢量存儲(chǔ)器那里加載配置寄存器的內(nèi)容;不存在其它方式來(lái)改變它的值。配置寄存器支持功能單元的配置,并且典型地定義了功能參數(shù)。通過(guò)在配置寄存器中存儲(chǔ)這些″不完全恒定的″功能參數(shù),顯著地減小了指令寬度和存儲(chǔ)器通信量。
在下表中展示了CVP狀態(tài)分量的概述。

可以從矢量存儲(chǔ)器中加載所有程序員可見(jiàn)的寄存器。除配置寄存器之外的所有寄存器都能被保存到矢量存儲(chǔ)器中。通過(guò)在限制的末尾保存CVP寄存器,并且通過(guò)在稍后恢復(fù)它們,CVP就能夠仿佛同時(shí)沒(méi)有執(zhí)行別的限制那樣繼續(xù)特定的任務(wù)。這些保存和恢復(fù)操作都是任選的,可以是局部的,但是必須顯式地對(duì)它們進(jìn)行編程。
指令級(jí)執(zhí)行限制的程序存儲(chǔ)在IDU內(nèi)的程序存儲(chǔ)器中。IDU控制程序計(jì)數(shù)器,讀取當(dāng)前指令并向?qū)?yīng)的6個(gè)功能單元分配6個(gè)指令分段。典型地,每個(gè)時(shí)鐘周期能夠發(fā)出一條指令。對(duì)于這條規(guī)律的唯一例外就是當(dāng)在一個(gè)周期內(nèi)無(wú)法實(shí)現(xiàn)多個(gè)矢量存儲(chǔ)器訪問(wèn)時(shí)由VMU的停止周期所引起的。當(dāng)在單個(gè)周期內(nèi)出現(xiàn)多個(gè)高速緩存未中時(shí),可能會(huì)發(fā)生存儲(chǔ)器擁塞和相關(guān)聯(lián)的停止周期。
由于沒(méi)有數(shù)據(jù)相關(guān)控制,因此從IDU到其它功能單元的通信是單向的。這顯著地簡(jiǎn)化了CVP指令的流水線執(zhí)行。這種流水線對(duì)于程序員而言盡可能是隱蔽的。例如,某一條指令的源寄存器可以是先前指令的目標(biāo)寄存器。只有可見(jiàn)的流水線影響才與″昂貴″資源相關(guān)聯(lián),比如矢量路徑中的乘法。許多操作都具有多個(gè)時(shí)鐘周期的等待時(shí)間。此外,那些操作中沒(méi)有幾個(gè)還具有多個(gè)時(shí)鐘周期的啟動(dòng)時(shí)間間隔。(當(dāng)操作具有n個(gè)周期的啟動(dòng)時(shí)間間隔時(shí),必要按n-1個(gè)周期及時(shí)地將排序的兩個(gè)操作分離開(kāi))。
優(yōu)選的功能單元的詳細(xì)說(shuō)明可以將CVP的每個(gè)功能單元都分成控制部分、標(biāo)量部分和矢量部分。將根據(jù)莫爾機(jī)模型來(lái)對(duì)這些部分進(jìn)行建模,包括五種元素輸入、輸出、狀態(tài)、下一個(gè)狀態(tài)函數(shù)和輸出函數(shù)。
由可用存儲(chǔ)器和/或寄存器來(lái)判斷莫爾機(jī)的狀態(tài)。對(duì)于每個(gè)功能單元而言,假定這樣的一個(gè)表,該表定義了所有許可的轉(zhuǎn)換(transition),包括相應(yīng)的防護(hù)(guard)。防護(hù)是對(duì)于發(fā)生轉(zhuǎn)換而言需要為真的條件。所述轉(zhuǎn)換定義了莫爾機(jī)的下一個(gè)狀態(tài)函數(shù)和輸出函數(shù)。為了能夠從在轉(zhuǎn)換表中的實(shí)際數(shù)據(jù)類型進(jìn)行提取,使用下列約定·P表示處理元件的數(shù)目。取決于數(shù)據(jù)大小,P賦值為PS(WORD數(shù)據(jù)元素)、PD(DWORD數(shù)據(jù)元素)或PQ(QWORD數(shù)據(jù)元素);·除非指定,否則就使用C風(fēng)格的語(yǔ)法;·使用方括號(hào)來(lái)選擇矢量?jī)?nèi)的元素。例如v[p]表示矢量v的元素p;·復(fù)數(shù)值x的實(shí)部與虛部分別用Re(x)和Im(x)來(lái)表示;·使用括弧<和>來(lái)表示復(fù)數(shù)對(duì)。例如,<re,im>表示復(fù)數(shù)re+j·im;·使用運(yùn)算符(″全部″)來(lái)表示必須在向量元素范圍內(nèi)執(zhí)行的運(yùn)算。操作符并不暗示任何順序(即,范圍內(nèi)的所有元素都能并行地被處理)。例如po≤p<P{v[p]=0}是指矢量v的所有元素都將被設(shè)置為0。注意,使用虛變量來(lái)表示范圍(在此示例中是p)沒(méi)有函數(shù)意義;·使用運(yùn)算符∧(″和″)來(lái)分離能夠并行執(zhí)行的運(yùn)算。換言之,與C分離符″;″不同,∧運(yùn)算符并不暗指將必須順序執(zhí)行的運(yùn)算。
·如果cond為真而exp2為假的話,則區(qū)別于C″cond?exp1exp2″的″if-then-else″操作符就賦值為exp1。
指令分配單元圖4示出了指令分配單元(IDU 400)的框圖。IDU具有下列功能·它包含程序存儲(chǔ)器410;·它向其它功能單元分配操作420;·它翻譯限制描述符,并且控制由微控制器130發(fā)出的內(nèi)核的執(zhí)行。
對(duì)于后者而言,它維護(hù)程序計(jì)數(shù)器430并且支持零開(kāi)銷(xiāo)循環(huán),包括三種嵌套級(jí)。
指令分配單元(IDU)能夠發(fā)出五種指令類型中的其中一種1.正常的VLIW指令(NORMAL);2.零開(kāi)銷(xiāo)循環(huán)初始化指令(LOOP);3.限制結(jié)束指令(EOS);4.子程序調(diào)用指令(CALL);5.子程序返回指令(RETURN)。
instruction=(NORMAL,commands)|(IDU_cmd,paddr,count)commands =(VMU_cmd,CGU_cmd,AMU_cmd,SFU_cmd,SLU_cmd,SRU_cmd)IDU_cmd=LOOP|EOS|CALL|RETURNpaddr={0,...,65535}count={1,...,65536}所述輸入/輸出為

IDU矢量部分包含CVP程序存儲(chǔ)器410

在每個(gè)周期(除非CVP被VMU停止),由程序計(jì)數(shù)器(PC 430)指向的程序存儲(chǔ)器位置那里取出CVP指令。這條指令可以是五種類型的其中一種1.正常的VLIW指令將在指令的命令字段中編碼的命令分配給其它功能單元;2.IDU循環(huán)初始化指令(LOOP)根據(jù)指令的PADDR和COUNT字段來(lái)設(shè)置循環(huán)控制寄存器。循環(huán)體(由跟隨LOOP指令的指令組成,直到由PADDR字段指定的指令并且包含該指令)應(yīng)該包含至少一條指令。注意,自動(dòng)地把1條指令的循環(huán)體視為″特例″,并且類似于R.E.A.L.DSP上的重復(fù)指令來(lái)處理它。允許嵌套循環(huán)具有相同的結(jié)束地址。在實(shí)際實(shí)現(xiàn)的程序存儲(chǔ)器的范圍外的結(jié)束地址的動(dòng)作是不定的;附加的地址位專供程序存儲(chǔ)器將來(lái)擴(kuò)展之用。自動(dòng)地把循環(huán)起始地址設(shè)置成跟隨LOOP指令的第一條指令的地址。給所有其它功能單元分配無(wú)操作命令;3.IDU限制指令結(jié)束(EOS)如果在當(dāng)前的限制描述符中指明的話,將生成一個(gè)或多個(gè)信號(hào)以表示限制的完成。然后,賦值下一個(gè)限制指針。如果它是NILL的話,那么CVP將輸入空閑模式,否則將加載下一個(gè)限制描述符,并且在初始化程序計(jì)數(shù)器(PC)之后,開(kāi)始執(zhí)行相應(yīng)的限制。
4.IDU子程序調(diào)用指令(CALL),它支持最小形式的程序調(diào)用。子程序調(diào)用機(jī)制支持三級(jí)嵌套,并且只保存返回地址。保存可能不會(huì)被銷(xiāo)毀的寄存器內(nèi)容是程序員的職責(zé),該程序員能夠選擇使用哪種調(diào)用約定(保存調(diào)用程序或保存被調(diào)用程序)。PADDR字段包含要被調(diào)用的子程序的第一條指令的地址,并由此能夠?qū)⑺苯蛹虞d到程序計(jì)數(shù)器中。保存到返回地址堆棧上的返回地址是跟隨CALL指令的指令的地址。
5.IDU子程序返回指令(RETURN),它將程序計(jì)數(shù)器返回到跟隨相應(yīng)的CALL指令的指令(參見(jiàn)上面)。
IDU控制部分包含CVP程序計(jì)數(shù)器(PC)。它也包含啟用零開(kāi)銷(xiāo)循環(huán)和子程序調(diào)用的能寄存器,所述零開(kāi)銷(xiāo)循環(huán)和子程序調(diào)用兩者都支持三級(jí)嵌套

矢量存儲(chǔ)器單元圖5A示出了矢量存儲(chǔ)器單元(VMU500)的框圖。VMU包含并控制矢量存儲(chǔ)器510,所述矢量存儲(chǔ)器向其它的功能單元提供了非常大的數(shù)據(jù)帶寬。實(shí)際的矢量存儲(chǔ)器510最好是基于單端口的SRAM的。由于PS×W寬的嵌入式SRAM通常是不可用的,因此可以由并行排列的一排或多排寬隨機(jī)訪問(wèn)存儲(chǔ)器(RAM)來(lái)構(gòu)成物理存儲(chǔ)器。在優(yōu)選實(shí)施例中,在存儲(chǔ)器中,矢量不必在矢量邊界上排列成行。照此,由PS字構(gòu)成的矢量可以具有任意的存儲(chǔ)器地址。存儲(chǔ)器行具有相同的大小,但是它的起始地址是根據(jù)多個(gè)PS定義的。(對(duì)于行訪問(wèn)來(lái)說(shuō),忽略地址的最低有效2logPs位)。通過(guò)允許任意的矢量排列(典型地在最小的字邊界上對(duì)齊),能夠更好地使用帶有較小空位置的存儲(chǔ)器。正如下面將要詳細(xì)描述的那樣,可以采取一些措施來(lái)允許標(biāo)量/矢量處理器讀/寫(xiě)單獨(dú)矢量,而可以把矢量存儲(chǔ)在物理存儲(chǔ)器的兩個(gè)連續(xù)行中。優(yōu)選地,標(biāo)量數(shù)據(jù)是存儲(chǔ)在與用來(lái)存儲(chǔ)矢量數(shù)據(jù)的存儲(chǔ)器相同的存儲(chǔ)器中的。在這類系統(tǒng)中,能夠?qū)?biāo)量與它們對(duì)應(yīng)的矢量混合起來(lái)。為了實(shí)現(xiàn)成本效率和到存儲(chǔ)器的最佳訪問(wèn)時(shí)間,存儲(chǔ)器優(yōu)選地只允許完全的矢量行的讀和寫(xiě)。照此,邏輯上物理存儲(chǔ)器由行構(gòu)成,每一行都具有矢量的大小。為了支持標(biāo)量的讀和寫(xiě),利用附加硬件(行高速緩存530以及用于行內(nèi)的標(biāo)量選擇的支持540)來(lái)以標(biāo)量方式訪問(wèn)矢量寬的物理存儲(chǔ)器。假定讓Nr標(biāo)量讀端口和Nw標(biāo)量寫(xiě)端口都可用,在高速緩存530中存在一組至少Nr+Nw矢量寬的寄存器。對(duì)于每個(gè)標(biāo)量讀端口而言,高速緩存中的相應(yīng)寄存器連接于(矢量寬的)物理存儲(chǔ)器510的讀端口。支持硬件540包括用以從寄存器中選擇相關(guān)的標(biāo)量數(shù)據(jù)的解多路復(fù)用器??梢酝ㄟ^(guò)寄存器中按照用地址的最低有效位指定的標(biāo)量數(shù)目來(lái)控制解多路復(fù)用器(例如,使用具有32個(gè)8位字的256位矢量時(shí),用五個(gè)最低有效位來(lái)表示標(biāo)量)。解多路復(fù)用器是已知的,且不再作進(jìn)一步描述。對(duì)于每個(gè)標(biāo)量寫(xiě)端口而言,高速緩存530中的相應(yīng)寄存器連接于Nw輸入的矢量寬的多路復(fù)用器,以便選擇哪個(gè)高速緩存行將被寫(xiě)回到物理存儲(chǔ)器。當(dāng)一條VMU指令需要要被寫(xiě)回的多個(gè)高速緩存行時(shí),這是順序進(jìn)行的,停止所有其它的功能單元直到所有寫(xiě)操作都已完成。訪問(wèn)不同的寫(xiě)端口,但是在相同的指令中,不允許訪問(wèn)物理存儲(chǔ)器中的同一行。假定連續(xù)標(biāo)量訪問(wèn)中的空間局部性(例如,基本上連續(xù)地在物理存儲(chǔ)器510中存儲(chǔ)屬于一個(gè)處理循環(huán)的連續(xù)標(biāo)量),對(duì)用以加載/存儲(chǔ)這些寄存器的物理存儲(chǔ)器510的訪問(wèn)頻率可能會(huì)顯著地低于對(duì)這些寄存器的標(biāo)量訪問(wèn)頻率。優(yōu)選地,在矢量存儲(chǔ)器周?chē)M(jìn)行的高速緩存對(duì)于程序員而言是隱蔽的。盡管利用高速緩存來(lái)模仿具有單端口SRAM的多端口矢量存儲(chǔ)器,但是程序員繼而仍能采用相干的矢量存儲(chǔ)器。由于每個(gè)寄存器都能夠在物理存儲(chǔ)器中包含可能相同的數(shù)據(jù)的拷貝,因此接著應(yīng)該自動(dòng)維護(hù)相干性而不是讓程序員必須防護(hù)相干性。為此,執(zhí)行對(duì)地址沖突的檢查,即擁有對(duì)于其中相同的行也被存儲(chǔ)在其它寄存器的其中一個(gè)中的行地址發(fā)生的對(duì)寄存器的寫(xiě)操作。對(duì)于這類檢查而言,足以為每個(gè)寄存器存儲(chǔ)寄存器中所存儲(chǔ)的行的行地址(地址的最高有效部分)。如果檢測(cè)到了潛在的沖突,那么就可以采取調(diào)整措施。例如,一旦已經(jīng)對(duì)具有相同行的寄存器發(fā)生寫(xiě)操作,就將讀寄存器標(biāo)記為無(wú)效。不會(huì)再進(jìn)一步使用寄存器,除非(在首先已經(jīng)將寫(xiě)寄存器寫(xiě)回到存儲(chǔ)器之后)它已經(jīng)再次從存儲(chǔ)器中讀取過(guò)了。作為選擇,可以在已經(jīng)對(duì)寫(xiě)寄存器發(fā)生了寫(xiě)操作之后,把寫(xiě)寄存器的內(nèi)容拷貝到具有相同行的所有讀寄存器。第三種可能性就是共享讀和寫(xiě)端口當(dāng)中的寄存器。這后一種方法需要附加的矢量寬的多路復(fù)用器,這增加了成本,但是提供了性能優(yōu)勢(shì)。在(一部分地)將矢量存儲(chǔ)在與寫(xiě)端口有關(guān)寄存器中的情況下,還可以為矢量讀取采取相同的相干性檢查和措施。優(yōu)選地,對(duì)物理存儲(chǔ)器進(jìn)行的行讀取或?qū)懭胧峭ㄟ^(guò)對(duì)物理存儲(chǔ)器510的單次訪問(wèn)而在單個(gè)時(shí)鐘周期內(nèi)執(zhí)行的。
由于只能夠在行邊界上訪問(wèn)物理存儲(chǔ)器,因此矢量發(fā)送操作需要對(duì)準(zhǔn)單元。對(duì)準(zhǔn)單元由兩個(gè)行高速緩存構(gòu)成,包括所請(qǐng)求矢量橫跨的兩行。當(dāng)訪問(wèn)連續(xù)的矢量時(shí),由于在這些行高速緩存的其中一個(gè)中仍存在另一個(gè)行,因而僅僅須從物理存儲(chǔ)器中取出一個(gè)新的行。形成所請(qǐng)求矢量的兩個(gè)高速緩存行的一些部分與由多路復(fù)用器構(gòu)成的網(wǎng)絡(luò)結(jié)合在一起,然后將其存儲(chǔ)在矢量寬的流水線寄存器中。在VMU廣播總線上從這個(gè)流水線寄存器中發(fā)送數(shù)值。
矢量存儲(chǔ)器單元能夠在單條VMU指令中支持多達(dá)四種的并發(fā)″子操作″1.發(fā)送矢量,或發(fā)送行,或從/到VM位置上接收行;2.從VM位置上發(fā)送標(biāo)量;3.接收標(biāo)量到VM位置;4.修改地址計(jì)算單元的狀態(tài)/輸出。
<pre listing-type="program-listing">VMU_cmd=(vopc,aid_v,ainc_v,sopc,aid_s,ainc_s,size,srcv,aid_r,ainc_r, sopc,aid_a,imm_addr)vopc =NOP|SENDL|SENDV|RCVL_CGU|RCVL_AMU| RCVL_SFU|RCVL_SLU|RCVL_SRUAid_v ={0,...,7}Ainc_v =NOP|INC sopc =NOP|SEND aid_s ={0,...,7}ainc_s =NOP|INC size =WORD|DWORD|QWORD arcv =NONE|VMU|AMU|SLU|SRU aid_r ={0,...,7}ainc_r =NOP|INC aopc =NOP|IMM|LDBASE|LDOFFS|LDINCR|LDBOUND aid_a ={0,...,7} imm_addr ={0.0,...,524288.31}|{-262144.0,...,262143.31}</pre>取決于子操作的數(shù)目和地址序列的連續(xù)性,VMU指令可以采取可變數(shù)量的時(shí)鐘周期。
所述VMU輸入/輸出為


另外,存在要被連接于外部總線的兩個(gè)標(biāo)量端口(一個(gè)發(fā)送、一個(gè)接收)。存儲(chǔ)器訪問(wèn)與CVP指令的同步化是微控制器130的任務(wù)。
VMU矢量部分包含物理矢量存儲(chǔ)器510

注意,矢量子操作無(wú)法訪問(wèn)標(biāo)量存儲(chǔ)器。因此,對(duì)于矢量子操作而言忽略最高有效地址位。VMU的矢量部分支持在指令的VOPC字段中編碼的七種子操作矢量發(fā)送(SENDV)、行發(fā)送(SENDL),以及五種行接收子操作(RCVL_CGU、RCVL_AMU、RCVL_SFU、RCVL_SLU和RCVL_SRU)。在相應(yīng)的行接收子操作中顯式地對(duì)作為接收源的功能單元進(jìn)行編碼。每個(gè)子操作的讀地址或?qū)懙刂范际怯上鄳?yīng)的地址計(jì)算單元指定的。在所有矢量子操作之間共用AINC_V字段。它將被傳遞到在AID_V字段中編碼的ACU上。AINC_V字段指定受影響的地址計(jì)算單元是否應(yīng)該執(zhí)行后增量操作。

注意,所述操作被鑄型成發(fā)送(或接收)動(dòng)作,而不是鑄型成包含目的地(或源)的加載(或存儲(chǔ))動(dòng)作。后者是由其它功能單元中的操作來(lái)指定的。行發(fā)送功能等效于具有相同地址的矢量發(fā)送。典型地利用行發(fā)送子操作來(lái)配置功能單元或者恢復(fù)各種寄存器中的任務(wù)狀態(tài)。通過(guò)為行發(fā)送引入一種特定模式,能夠通過(guò)高效的高速緩存使用率來(lái)最優(yōu)化連續(xù)矢量發(fā)送(″矢量流″)的訪問(wèn)時(shí)間。
在指令的SOPC字段中對(duì)VMU的標(biāo)量子操作進(jìn)行編碼。它只支持一個(gè)子操作標(biāo)量發(fā)送(SEND)。讀地址是由AID_S字段中指定的地址計(jì)算單元指定的。指令的AINC_S字段指定這個(gè)地址計(jì)算單元是否應(yīng)該執(zhí)行后增量操作。通過(guò)指令的SIZE字段來(lái)判斷標(biāo)量子操作的操作數(shù)大小(WORD、DWORD或QWORD)。

在指令的SRCV字段中對(duì)VMU的標(biāo)量接收子操作進(jìn)行編碼。如果它的值為NONE,則不執(zhí)行標(biāo)量接收。否則,指令的SRCV字段判斷將把哪個(gè)功能單元用作為標(biāo)量接收的源。寫(xiě)地址是由AID_R字段中指定的地址計(jì)算單元指定的。指令的AINC_R字段指定這個(gè)地址計(jì)算單元是否應(yīng)該執(zhí)行后增量操作。通過(guò)源標(biāo)量的大小來(lái)判斷標(biāo)量接收子操作的操作數(shù)大小(WORD、雙字或QWORD)。

能夠把發(fā)送和接收子操作組合成從一個(gè)VM位置到另一個(gè)位置的標(biāo)量移動(dòng)操作。每次訪問(wèn)的地址都是由對(duì)應(yīng)的地址計(jì)算單元指定的。
VMU控制部分550主要是支持像常規(guī)DSP中那些尋址方式這樣的尋址方式的一組地址計(jì)算單元(ACU)或地址生成單元(AGI)。這類單元在不使用處理器的主數(shù)據(jù)路徑的情況下,每條指令執(zhí)行一個(gè)或多個(gè)地址計(jì)算。例如,在每個(gè)標(biāo)量讀訪問(wèn)之后,能夠?qū)?biāo)量的地址進(jìn)行后增量。這允許對(duì)數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算時(shí)并行地進(jìn)行地址計(jì)算,從而提高處理器的性能。取決于所支持的尋址方式組,這類ACU需要訪問(wèn)許多寄存器。例如,相對(duì)尋址,即與所謂的基地址相對(duì)而言的尋址,需要基址寄存器base·存儲(chǔ)在偏移量寄存器中的相對(duì)于基地址的偏移量offs·通過(guò)存儲(chǔ)在增量寄存器incur中的值前/后增加偏移量·相對(duì)于界限寄存器bound中存儲(chǔ)的地址的求模尋址對(duì)于這組尋址方式而言,下列內(nèi)容能夠得到支持。假定偏移量寄存器offs。當(dāng)每次在地址base+offs上進(jìn)行存儲(chǔ)器訪問(wèn)(讀或?qū)?之后,都根據(jù)offs=(offs+incr)求模bound來(lái)更新寄存器offs。因此,(在每次訪問(wèn)之后)offs頻繁變化,而存儲(chǔ)在base、incr和bound中的值卻很少發(fā)生變化。典型地,在程序循環(huán)之前先對(duì)那三個(gè)后面的寄存器初始化。在其余部分中,假定寄存器是ACU的一部分。也將寄存器的初始化稱作為″ACU的配置″。優(yōu)選地,標(biāo)量/矢量處理器包括多個(gè)ACU。在優(yōu)選的實(shí)施例中,標(biāo)量/矢量處理器包括八個(gè)ACU。單獨(dú)ACU的配置可能會(huì)使每個(gè)ACU占用幾個(gè)時(shí)鐘周期。照這樣一來(lái),隨著產(chǎn)生越來(lái)越多的Amdahl定律的障礙,配置ACU所需的時(shí)間可能會(huì)變成瓶頸。為了克服這種配置延遲,在優(yōu)選的實(shí)施例中,能夠在一種操作中配置與一個(gè)ACU有關(guān)的至少兩個(gè)寄存器。這可以通過(guò)映射單個(gè)矢量上的所有那些ACU寄存器以及通過(guò)使用從矢量存儲(chǔ)器到ACU存儲(chǔ)器的專用加載指令和存儲(chǔ)指令加以實(shí)現(xiàn)。優(yōu)選地,能夠在優(yōu)選的一個(gè)時(shí)鐘周期內(nèi)的單個(gè)操作中配置ACU的整個(gè)相關(guān)寄存器組。正如將在下面更詳細(xì)描述的那樣,如果存儲(chǔ)器寬度允許的話,則有利的是能夠在一種操作中配置一個(gè)以上的ACU的寄存器。
假定矢量存儲(chǔ)器包括2L行,標(biāo)量或矢量地址需要L+2log4PQ位。其中例如PQ=8且L=12,這意味著是17位。為了在地址計(jì)算方面盡可能地避免過(guò)于長(zhǎng)的指令和避免獨(dú)立的指令,VMU的控制部分正如上面所述那樣維護(hù)許多地址計(jì)算單元。每個(gè)地址計(jì)算單元(ACU)都是由許多地址寄存器以及相關(guān)聯(lián)的增量操作構(gòu)成的。在其它ACU當(dāng)中,這些ACU520是用來(lái)支持環(huán)形緩沖的。優(yōu)選地,VMU控制部分包含8個(gè)ACU,每個(gè)控制部分都被靈活地分配給任何VMU子操作。限制就在于每個(gè)ACU都可能僅僅供除ACU子操作外的其中一種VMU子操作使用,即AID_V≠AID_S≠AID_R。
VMU控制部分支持在VMU指令的AOPC字段中編碼的一種子操作。它支持一種用以把ACU的輸出設(shè)置成立即地址值(IMM)的子操作,并且支持用以把該立即地址加載到其中一個(gè)ACU寄存器(LDBASE、LDOFFS、LDINCR和LDBOUND)中的四種子操作。在IMM_ADDR字段中對(duì)相應(yīng)的立即地址進(jìn)行編碼。AID_A字段指定哪個(gè)ACU是受AOPC子操作影響的;來(lái)自VMU指令的AOPC字段和IMM_ADDR字段將被直接傳遞到特定的ACU,而所有其它ACU的AOPC字段都將被設(shè)置成無(wú)操作(NOP)。
優(yōu)選地,每個(gè)ACU都包含四個(gè)地址寄存器

在該表中還指明了優(yōu)選的地址范圍和類型(有符號(hào)/無(wú)符號(hào))。在這個(gè)配置中,四個(gè)ACU寄存器需要4×24=96位。正如早先描述的,優(yōu)選地,矢量是256位寬的。在這種情況下,最好通過(guò)將多個(gè)ACU的寄存器映射到一個(gè)矢量來(lái)更進(jìn)一步地提高AC配置速度。在該示例中,能夠?qū)山MACU寄存器映射到一個(gè)寄存器。這也在圖5B中舉例說(shuō)明了。矢量是用數(shù)字580來(lái)表示的,并且也示出了四倍長(zhǎng)字邊界。還示出了兩組ACU寄存器590和595,每組寄存器都對(duì)應(yīng)于不同的ACU。在該示例中,ACU寄存器都是24位的,并且照此不對(duì)應(yīng)于矢量的其中一個(gè)標(biāo)準(zhǔn)的數(shù)據(jù)大小。為了也能經(jīng)由矢量存儲(chǔ)器來(lái)容易地訪問(wèn)單獨(dú)的ACU寄存器,用于將ACU寄存器加載/存儲(chǔ)到存儲(chǔ)器中的專用指令確保了單獨(dú)的ACU寄存器被對(duì)準(zhǔn)在字邊界上(在該示例中,24位寄存器被對(duì)準(zhǔn)在四倍長(zhǎng)字邊界上)。本領(lǐng)域的技術(shù)人員將能依據(jù)ACU寄存器大小和矢量大小來(lái)定義最佳映射。例如,使用16位ACU寄存器和256位矢量就可以將四組ACU寄存器映射到一個(gè)矢量上。在指令中需要指明將要存儲(chǔ)/加載的ACU寄存器組的數(shù)目。獨(dú)立的或組合的指令都可以用來(lái)加載單個(gè)ACU寄存器組或一群ACU寄存器組。
地址計(jì)算單元(ACU)能夠在單個(gè)ACU操作期間支持兩種″子操作″1.后增量子操作;2.立即地址操作子操作。
ACU_cmd = (ainc,aopc,imm_addr)ainc = NOP|INCaopc = NOP|IMM|LDBASE|LDOFFS|LDINCR|LDBOUNDimm_addr = {0.0,...,524288.31}|{-262144.0,...,262143.31}在指令的AINC字段中對(duì)后增量子操作進(jìn)行編碼。它只支持一種子操作后增量(INC)。利用這種子操作來(lái)避免過(guò)于顯式的地址計(jì)算指令。

在指令的AOPC字段中對(duì)立即地址操作子操作進(jìn)行編碼。它支持一種用以輸出立即地址(IMM)的子操作,并且支持四種用以把立即地址加載到其中一個(gè)ACU寄存器中的子操作(LDBASE、LDOFFS、LDINCR和LDBOUND)。在指令的IMM_ADDR字段中對(duì)立即地址進(jìn)行編碼。

所述ACU輸入/輸出為


代碼生成單元圖6示出了CGU(代碼生成單元600)的框圖。CGU的任務(wù)是生成已格式化成PD或PS長(zhǎng)度的矢量的復(fù)數(shù)符號(hào)的代碼序列。在優(yōu)選的實(shí)施例中,這個(gè)代碼序列適合于(W-)CDMA的需要,并且能夠?qū)⑵錁?gòu)造成兩個(gè)序列(擾頻代碼和通道化代碼)的乘積。對(duì)于這類應(yīng)用來(lái)說(shuō),CGU是由擾頻代碼生成器(SCG 610)和通道化代碼生成器(CCG 620)構(gòu)成的。擾頻代碼是通過(guò)可配置生成器生成的。通道化代碼生成器也可以用查找表來(lái)代替。該表能夠駐留在矢量存儲(chǔ)器中。CGU可以只具備有限的功能,就像只支持UMTS-FDD下行鏈路代碼生成一樣。代碼生成單元(CGU)支持兩種子操作1.擾頻代碼生成器子操作;2.通道化代碼生成器子操作。
<pre listing-type="program-listing">CGU_cmd = (scram_opc,scram_reg,chan_opc,chan_reg,chan_config) scram_opc = OFF|NOP|LOAD_CONFIG|CONFIG|LOAD_STATE|SAVE_STATE|LOAD_REGS_X|LOAD_REGS_Y|SAVE_REGS_X|SAVE_REGS_Y|STEP_1|STEP_P_D|STEP_1_X|STEP_P_D_X scram_reg = {cgus0,cgus1} chan_opc = OFF|NOP|CONFIG|LOAD_STATE|SAVE_STATE|STEP_1|STEP_P_D chan_reg = {cguc0,cguc1}chan_config = 0,...,2log(SFMAX)-1</pre>所述輸入/輸出為


CGU矢量部分包含下列寄存器(文件)

CGU指令的SCRAM_OPC字段指定下列SCG矢量子操作的其中之·關(guān)閉擾頻代碼生成器(CGUS_OFF);·無(wú)操作(CGUS_NOP);·從vmu中加載配置矢量(CGUS_LOAD_CONFIG);·利用配置矢量來(lái)配置LFSR X和LFSR Y(CGUS_CONFIG);·從SCRAP_REG字段中指定的內(nèi)部寄存器中加載LFSR X和LFSR Y狀態(tài)(CGUS_LOAD_STATE);·將LFSR X和LFSR Y狀態(tài)保存到SCRAM_REG字段中指定的內(nèi)部寄存器當(dāng)中(CGUS_SAVE_STATE);·從VMU中加載整個(gè)LFSR X內(nèi)部寄存器文件(CGUS_LOAD_REGS_X);·從VMU中加載整個(gè)LFSR Y內(nèi)部寄存器文件(CGUS_LOAD_REGS_Y);·在VMU中保存整個(gè)LFSR X內(nèi)部寄存器文件(CGUS_SAVE_REGS_X);·在VMU中保存整個(gè)LFSR Y內(nèi)部寄存器文件(CGUS_SAVE_REGS_Y);·按單個(gè)步驟推進(jìn)LFSR X和LFSR Y(CGUS_STEP_1);·按PD步驟推進(jìn)LFSR X和LFSR Y(CGUS_STEP_P_D);·按單個(gè)步驟推進(jìn)LFSR X(CGUS_STEP_1_X);·按PD步驟推進(jìn)LFSR X(CGUS_STEP_P_D_X)。
CGU指令的CHAN_OPC字段指定下列CCG矢量子操作的其中之一·關(guān)閉通道化代碼生成器(CGUC_OFF);·無(wú)操作(CGUC_NOP);·利用CHAN_CONFIG字段中指定的代碼數(shù)量來(lái)配置通道化代碼生成器(CGUC_CONFIG);·從CHAN_REG字段中指定的內(nèi)部寄存器中加載OVSF狀態(tài)(CGUC_LOAD_STATE);·將OVSF狀態(tài)保存到CHAN_REG字段中指定的內(nèi)部寄存器當(dāng)中(CGUC_SAVE_STATE);·按單個(gè)步驟推進(jìn)OVSF計(jì)數(shù)器(CGUC_STEP_1);·按PD步驟推進(jìn)OVSF計(jì)數(shù)器(CGUC_STEP_P_D)。
ALU-MAC單元圖7示出了ALU-MAC單元(AMU)的框圖。在AMU停泊(harbor)實(shí)際信號(hào)操作、而其它單元在那里只用于以矢量格式化方式傳送操作數(shù)和結(jié)果的意義上講,AMU是機(jī)器的心臟。它也包含比較大的寄存器堆(優(yōu)選地,16個(gè)矢量寄存器)。累加器矢量需要兩個(gè)(正常的)矢量寄存器,外加一個(gè)所謂的擴(kuò)展矢量,它包含擴(kuò)展精度位。由此,AMU寄存器文件優(yōu)選地與擴(kuò)展寄存器文件一起也支持8個(gè)累加器矢量寄存器。在優(yōu)選的實(shí)施例中,AMU矢量部分包含五個(gè)獨(dú)立的內(nèi)部處理單元·ALU單元710,它處理運(yùn)算類型和邏輯類型的矢量間操作加法(ADD)、減法(SUB)、逐位與(AND)、逐位或(OR)、逐位異或(XOR)和漢明間距計(jì)算(HAMM);·MAC單元720,它處理乘法和乘法累加類型的矢量間操作量級(jí)(MAGN)、乘法(MUL)和乘法累加(MAC);·(c)I-ADD單元730,它處理(使相關(guān))內(nèi)加法的矢量操作內(nèi)加法(IADD)、帶有雙精度結(jié)果的內(nèi)加法(IADDD)和繼之以內(nèi)加法的矢量間相關(guān)(CTA);·I-MAX/MIN單元740,它處理矢量?jī)?nèi)的最大值和最小值運(yùn)算內(nèi)最大值(IMAX)和內(nèi)最小值(IMIN);和·定標(biāo)單元,它用于利用整數(shù)運(yùn)算來(lái)提供靈活的定點(diǎn)支持。
將會(huì)認(rèn)識(shí)到的是,取決于應(yīng)用,也許不需要一些子單元。同樣,可以添加其它的子單元。例如,當(dāng)添加用于外收發(fā)器算法的支持時(shí),AMU優(yōu)選地包含兩個(gè)附加處理單元·acs單元,它處理維特比添加-比較-選擇操作(acs);·abl單元,它處理turbo譯碼需要的αβ∧運(yùn)算(abl)。
在AMU指令中不是顯式地對(duì)將被使用的處理單元進(jìn)行編碼的,而是從vopc字段中隱式地導(dǎo)出它。這意味著啟動(dòng)時(shí)間間隔并未妨礙性能,只要向不同的處理設(shè)備發(fā)出后續(xù)的矢量指令即可。
ALU-MAC單元(AMU)在單個(gè)AMU操作期間支持多達(dá)4種的″子操作″1.執(zhí)行ALU(算術(shù)和邏輯)類型的矢量操作、(MAC)(乘法累加)、(C)I-ADD((相關(guān))內(nèi)加法)或I-MAX/MIN(內(nèi)最大值或內(nèi)最小值);2.將矢量值接收到AMU矢量寄存器文件;3.將第二個(gè)矢量值接收到AMU矢量寄存器文件;4.將標(biāo)量值接收到AMU廣播寄存器(BCST);<pre listing-type="program-listing">AMU_cmd =(vopc,type,src1,src2,src34x,rcv1,dst1,rcv2,dst2,srcv) vopc =NOP|SND|ADD|SUB|ABS|NEG|MAX|MIN|CONJ| MAGN|IADD|DIADD|IMAX|IMIN|CIA|AND|OR| XOR|MUL|MAC|SGNX type =cvp_int|cvp_dint|cvp_cint|cvp_qint|cvp_cdint src1 ={amu0,...,amu15} src2 ={amu0,...,amu15}|{bcst} src34x =src3∈{amu0,...,amu15}|acc∈{acc0,...,acc7}| lseg∈{1,2,3,...,2logPS}rcv1 =NONE|VMU|CGU|AMU|SFU|SLU|SRUdst1 ={amu0,...,amu15}rcv2 =NONE|VMU|CGU|AMU|SFU|SLU|SRUdst2 ={amu0,...,amu15};dst2≠dst1srcv =NONE|VMU|SLU|SRU</pre>所述輸入/輸出為


AMU矢量部分包含下列寄存器文件

如在圖8中舉例說(shuō)明的那樣,每個(gè)累加器寄存器都需要兩個(gè)AMU寄存器810、820,加上一個(gè)擴(kuò)展寄存器830。例如,寄存器ACC3占有寄存器AMU6、AMU7和EXT3。注意,擴(kuò)展寄存器文件僅僅用于存儲(chǔ)累加器值的擴(kuò)展精度部分。因此,不能被其自身訪問(wèn),這樣一來(lái)它對(duì)于程序員而言就是不可見(jiàn)的。
在AMU指令的AOPC字段中對(duì)矢量子操作進(jìn)行編碼。它支持四種類型的子操作1.算術(shù)和邏輯類型的矢量間操作發(fā)送寄存器值(SND)、加法(ADD)、減法(SUB)、絕對(duì)值(ABS)、否定(NEG)、最大值(MAX)、最小值(MIN)、逐位與(AND)、逐位或(OR)、逐位異或(XOR)和符號(hào)擴(kuò)展(SGNX);2.乘法和乘法累加類型的矢量間操作量級(jí)(MAGN)、乘法(MUL)、和乘法累加(MAC);
3.(相關(guān))內(nèi)加法的矢量操作內(nèi)加法(IADD)、帶有雙精度結(jié)果的內(nèi)加法(DIADD)和繼之以內(nèi)加法的矢量間相關(guān)(CIA);4.內(nèi)最大值(IMAx)操作和內(nèi)最小值(IMIN)操作;將要使用的數(shù)據(jù)類型是在AMU指令的TYE字段中編碼的。SRC1和SRC2字段表示應(yīng)該把哪些寄存器分別用作為矢量子操作的源1和源2.注意,作為選擇SRC2數(shù)據(jù)可以代替來(lái)自于規(guī)則的寄存器文件RFAMU,而來(lái)身于標(biāo)量廣播寄存器BCST。在這種情況下,把相同的標(biāo)量值發(fā)送給每個(gè)處理元件。同樣,SRC34X字段表示應(yīng)該把哪個(gè)寄存器用作為需要3個(gè)矢量源的子操作的源3(用SRC3表示)。在乘法(-累加)子操作的情況下,SRC34X字段指明應(yīng)該使用哪個(gè)累加器寄存器(用ACC表示)(以便既作為源又作為目的地)。在矢量?jī)?nèi)操作的情況下(IADD、DIADD、IMAX、IMIN和CIA),SRC34X字段包含段長(zhǎng)為2log(SEG)的以2為底的對(duì)數(shù)(用LSEG表示)。最小段長(zhǎng)為2(SRC34X=1)。上限取決于數(shù)據(jù)大小對(duì)于WORD長(zhǎng)度操作數(shù)而言是PS(LSEG=5)、對(duì)于DWORD長(zhǎng)度操作數(shù)而言是PD(LSEG=4),而對(duì)于QWORD長(zhǎng)度操作數(shù)而言是PQ(LSEG=3)。

矢量?jī)?nèi)操作的結(jié)果是一個(gè)稀疏矢量,其中只計(jì)算每個(gè)分段的0位。將其它目標(biāo)位置寄存器設(shè)置為0。在與右移位單元同時(shí)使用的情況下,洗牌單元能用來(lái)重排這類稀疏矢量的內(nèi)容。
大部分的矢量操作都支持所有數(shù)據(jù)類型,下列是一些特例·CONJ,MAGN只支持復(fù)數(shù)數(shù)據(jù)類型;·ABS,MAX,MIN,IMAX,IMIN不支持復(fù)數(shù)數(shù)據(jù)類型;·DIADD &amp; SGNX不支持四倍長(zhǎng)字大小的數(shù)據(jù)類型;·CLA只支持復(fù)數(shù)單精度整數(shù)類型;·AND,OR,XOR只支持非復(fù)數(shù)整型;·NOP &amp; SND忽略類型。
除矢量子操作之外,AMU矢量部分還可以從任何功能單元那里將兩個(gè)矢量值接收到局部寄存器文件(RFAMU)中。接收子操作是在RCV1和RCV2字段中編碼的,并且相應(yīng)的RFAMU目的寄存器分別是在DST1和DST2字段中編碼。


所述AMU標(biāo)量部分包含下列寄存器

AMU標(biāo)量部分還可以從VMU、SLU或SRU中將標(biāo)量值接收到廣播寄存器(BCST)中。相應(yīng)的接收子操作是在SRCV字段中編碼的。

可以把跨整個(gè)矢量復(fù)制的BCST寄存器的內(nèi)容用作為用于矢量操作的替代的SRC2(代替正常的AMU寄存器)

AMU控制部分包含一個(gè)寄存器

洗牌單元圖9示出了洗牌單元900的框圖。矢量洗牌功能的基本思想是為每個(gè)(矢量)目標(biāo)元件910指定一個(gè)(矢量)源元件920。源元件是在專用的配置寄存器930中指定的。能夠以單字粒度來(lái)指定洗牌(注意,這也涵蓋所有潛在的雙字和四倍長(zhǎng)字洗牌模式)。能夠通過(guò)CMOS交叉結(jié)構(gòu)(cross bar)940來(lái)實(shí)現(xiàn)完整洗牌。一般說(shuō)來(lái),它的成本是與目標(biāo)數(shù)目和源數(shù)目的乘積成比例的。在很多情況下不需要所實(shí)現(xiàn)的4PQ字的洗牌帶寬。固此,在優(yōu)選的實(shí)施例中,只支持半洗牌。
洗牌單元(SFU)支持多達(dá)兩個(gè)并發(fā)的子操作1.配置或半洗牌矢量操作;2.矢量接收。
SFU_cmd = (vopc,cfg,rcv)vopc = NOP|CONF|ODD|EVEN|DUPL0|DUPL1cfg = {sfuc0,...,sfuc1}rcv = NONE|VMU|CGU|AMU|SFU|SLU|SRU所述輸入/輸出為


SFU矢量部分包含下列寄存器文件

注意還存在隱式的洗牌目標(biāo)寄存器,但是這并非可由程序員直接訪問(wèn)的。它自動(dòng)被寫(xiě)入以作為各種類型的洗牌操作的結(jié)果。
SFU支持在SFU指令的VOPC字段中指定的兩類矢量子操作1.在RFCFG(CONF)中接收洗牌模式;2.根據(jù)來(lái)自RFCFG的模式來(lái)對(duì)寄存器SFU中的矢量進(jìn)行洗牌,并在(隱式的)洗牌目標(biāo)寄存器的受影響部分中存儲(chǔ)結(jié)果。這樣就可以對(duì)奇數(shù)目標(biāo)元素(ODD)、偶數(shù)目標(biāo)元素(EVEN)進(jìn)行洗牌,或者把源元素復(fù)制到奇數(shù)目標(biāo)元素和偶數(shù)目標(biāo)元素兩者(DUPL0和DUPL1)。
由于中間結(jié)果是存儲(chǔ)在(隱式的)洗牌目標(biāo)寄存器中的,因此能夠通過(guò)順序地執(zhí)行ODD和EVEN子操作來(lái)執(zhí)行充分洗牌。在配置子操作(VOPC-CONF)的情況下,指令的CFG字段指定了應(yīng)該加載哪個(gè)配置寄存器。否則,它就指定將把哪個(gè)配置寄存器用作為洗牌模式。

除矢量操作之外,SFU還支持在指令的RCV字段中編碼的矢量接收操作(接收到局部SFU寄存器中)。注意,這樣就可以通過(guò)把矢量子操作CONF與矢量接收子操作組合在一起,來(lái)同時(shí)(從VMU中)接收洗牌模式和(從任何其它的功能單元中)接收新的洗牌源。

注意在與移位操作結(jié)合的情況下,洗牌操作能用來(lái)有效地量排由矢量?jī)?nèi)ALU操作產(chǎn)生的稀疏矢量元素。
左移位單元圖10示出了左移位單元(SLU1000)的框圖。SLU維護(hù)兩個(gè)矢量寄存器,可以按標(biāo)量步驟(即,按三種標(biāo)量大小(WORD、DWORD或QWORD)的其中一種)來(lái)把這兩個(gè)矢量寄存器左移。要么由0來(lái)增補(bǔ)右手側(cè),要么由局部標(biāo)量接收寄存器中的標(biāo)量值來(lái)增補(bǔ)右手側(cè)。矢量可以來(lái)自于任何功能單元或被發(fā)送給任何功能單元。左移位單元(SLU)支持多達(dá)三種的并發(fā)子操作1.矢量左移位操作或發(fā)送操作;2.矢量接收操作;3.標(biāo)量接收操作。
SLU_cmd = (vopc,src,size,rcv,dst,srcv)vopc = NOP|SND|SHIFT0|SHIFTSsrc = {slu0,slu1}size = WORD|DWORD|QWORDrcv = NONE|VMU|CGU|AMU|SFU|SLU|SRUdst = {slu0,slu1}srcv = NONE|VMU|AMU|SLU|SRU所述輸入/輸出為


左移位單元(SLU)的矢量部分包含2個(gè)通用矢量寄存器1010

在指令的VOPC字段中編碼的SLU所支持的矢量操作·空操作,即不移動(dòng)當(dāng)前矢量(NOP),·發(fā)送、廣播所選的源寄存器的內(nèi)容(SND),·左移、添加0(SHIFT0),·左移、添加來(lái)自標(biāo)量接收寄存器(SHIFTS)的標(biāo)量,指令的SRC字段判斷移位哪個(gè)SLU寄存器。在SHIFT0操作的情況下,指令的SIZE字段判斷標(biāo)量步驟的大小。在SHIFTS操作的情況下,通過(guò)標(biāo)量接收寄存器SSLU中的標(biāo)量來(lái)判斷的標(biāo)量步長(zhǎng)(由此,忽略SIZE字段)。

除矢量操作之外,SLU還支持在指令的RCV字段中編碼的矢量接收操作(接收到其中一個(gè)局部SLU寄存器1010中)。DST字段指定接收到的矢量將被寫(xiě)入到哪個(gè)局部寄存器。

左移位單元(SLU)的標(biāo)量部分包含標(biāo)量接收寄存器1020

通過(guò)S_SND端口將移出SLU的標(biāo)量發(fā)送給所有功能單元。另外,SLU還支持在指令的SRCV字段中編碼的標(biāo)量接收操作(接收到標(biāo)量接收寄存器SSLU 1020中)。在下一個(gè)SHIFTS矢量子操作期間,可以將SSLU寄存器中的標(biāo)量值從右側(cè)移入到矢量中。

右移位單元圖11示出了右移位單元(SRU 1100)的框圖。除了用于在AMU上合并來(lái)自矢量?jī)?nèi)操作的結(jié)果的特定接收模式(IAMU)之外,SRU類似于SLU。右移位單元(SRU)支持多達(dá)三種的并發(fā)子操作·矢量右移位操作或發(fā)送操作;·矢量接收操作;·標(biāo)量接收操作;SRU_cmd = (vopc,src,size,rcv,dst,srcv)vopc= NOP|SND|SHIFT0|SHIFTSsrc = {sru0,sru1}size= WORD|DWORD|QWORDrcv = NONE|VMU|CGU|AMU|IAMU|SFU|SLU|SRUdst = {sru0,sru1}srcv= NONE|VMU|AMU|SLU|SRU所述輸入/輸出為


右移位單元(SRU)的矢量部分包含2個(gè)通用矢量寄存器1110

在指令的VOPC字段中編碼的SRU所支持的矢量操作是·空操作,即不移動(dòng)當(dāng)前矢量(NOP),·發(fā)送、廣播所選擇的源寄存器的內(nèi)容(SND),·右移位、添加0(SHIFT0),·右移位、添加來(lái)自標(biāo)量接收寄存器(SHIFTS)的標(biāo)量。
指令的SRC字段判斷將哪個(gè)SRU寄存器移位。在SHIFT0操作的情況下,指令的SIZE字段判斷標(biāo)量步驟的尺寸。在SHIFTS操作的情況下,通過(guò)標(biāo)量接收寄存器SSRU中的標(biāo)量來(lái)判斷標(biāo)量步長(zhǎng)(由此,忽略SIZE字段)。

除矢量操作之外,SRU還支持在指令的RCV字段中編碼的矢量接收操作(接收到其中一個(gè)局部SRU寄存器中)。DST字段指定接收到的矢量將被寫(xiě)入到哪個(gè)局部寄存器。

左移位單元(SRU)的標(biāo)量部分包含標(biāo)量接收寄存器1120

通過(guò)S_SND端口將移出SRU的標(biāo)量發(fā)送給所有功能單元。另外,SRU還支持在指令的SRCV字段中編碼的標(biāo)量接收操作(接收到標(biāo)量接收寄存器SSRU1120中)。在下一個(gè)SHIFTS矢量子操作期間,可以將SSRU寄存器中的標(biāo)量值從左側(cè)移入到矢量中。

應(yīng)當(dāng)注意的是,上述實(shí)施例舉例說(shuō)明了本發(fā)明而不是限制本發(fā)明,而本領(lǐng)域的技術(shù)人員將能在不背離所附權(quán)利要求的范圍的情況下設(shè)計(jì)許多可選的實(shí)施例。在權(quán)利要求中,不應(yīng)該把圓括號(hào)之間的任何參考標(biāo)記視作限制權(quán)利要求。除那些列在權(quán)利要求上的元件或步驟外,單詞″包括″和″包含″不排除其它元件或步驟的存在。
權(quán)利要求
1.一種標(biāo)量/矢量處理器,包括多個(gè)功能單元,至少其中一個(gè)功能單元包括用于對(duì)至少一個(gè)矢量進(jìn)行操作的矢量部分和用于對(duì)至少一個(gè)標(biāo)量進(jìn)行操作的標(biāo)量部分,通過(guò)標(biāo)量部分協(xié)同操作的功能單元的矢量部分和標(biāo)量部分被設(shè)置成提供和/或耗費(fèi)功能單元的矢量部分所需要和/或提供的至少一個(gè)標(biāo)量。
2.如權(quán)利要求1所述的標(biāo)量/矢量處理器,其中多個(gè)功能單元包括各自的矢量部分;在第一流水線中安排所述矢量部分。
3.如權(quán)利要求1所述的標(biāo)量/矢量處理器,其中多個(gè)功能單元包括各自的標(biāo)量部分;在第二流水線中安排所述標(biāo)量部分。
4.如權(quán)利要求2和3所述的標(biāo)量/矢量處理器,其中所述第一流水線和第二流水線是可獨(dú)立配置的。
5.如權(quán)利要求2、3或4所述的標(biāo)量/矢量處理器,其中至少其中一條流水線是可以基于處理器逐條指令來(lái)配置的。
6.如權(quán)利要求1所述的標(biāo)量/矢量處理器,其中所述標(biāo)量/矢量處理器是由包含用于每個(gè)功能單元的獨(dú)立指令段的VLIW指令來(lái)控制的。
7.如權(quán)利要求6所述的標(biāo)量/矢量處理器,其中既帶有矢量部分又帶有標(biāo)量部分的功能單元的指令段包括用于功能單元的矢量部分和標(biāo)量部分的各自指令。
8.如權(quán)利要求5和6所述的標(biāo)量/矢量處理器,其中所述VLIW指令包括第一流水線和/或第二流水線的配置。
9.如權(quán)利要求7和8所述的標(biāo)量/矢量處理器,其中第一流水線為附于第一流水線上的每個(gè)矢量部分包括各自的相關(guān)聯(lián)的流水線路徑以用于傳送矢量,和/或第二流水線對(duì)附于第二流水線上的每個(gè)標(biāo)量部分包括各自的相關(guān)聯(lián)的流水線路徑以用于傳送標(biāo)量。
10.如權(quán)利要求8和9所述的標(biāo)量/矢量處理器,其中功能單元的矢量部分的指令指定與其中一個(gè)不同的功能單元相關(guān)聯(lián)的流水線路徑以供傳送矢量,和/或功能單元的標(biāo)量部分的指令指定與其中一個(gè)不同的功能單元相關(guān)聯(lián)的流水線路徑以供傳送標(biāo)量。
11.如權(quán)利要求1所述的標(biāo)量/矢量處理器,其中至少其中一個(gè)功能單元是移位單元;所述移位單元的矢量部分可操作用于在至少一個(gè)標(biāo)量上對(duì)矢量進(jìn)行移位;所述移位單元的標(biāo)量部分可操作用于向矢量部分提供和/或從矢量部分接收正在移入或移出矢量的至少一個(gè)標(biāo)量。
12.一種處理系統(tǒng),包括標(biāo)量處理器和如權(quán)利要求1所述的標(biāo)量/矢量處理器,其中所述標(biāo)量/矢量處理器被設(shè)置成標(biāo)量處理器的協(xié)同處理器,并且所述標(biāo)量處理器被設(shè)置成控制該標(biāo)量/矢量處理器;設(shè)置標(biāo)量/矢量處理器的標(biāo)量部分以用于執(zhí)行循環(huán)內(nèi)的標(biāo)量處理,設(shè)置標(biāo)量處理器以用于執(zhí)行不規(guī)則的循環(huán)外的標(biāo)量處理。
全文摘要
標(biāo)量/矢量處理器包括多個(gè)功能單元(252、260、262、264、266、268、270)。至少其中一個(gè)功能單元包括用于對(duì)至少一個(gè)矢量進(jìn)行操作的矢量部分(210),還包括用于對(duì)至少一個(gè)標(biāo)量進(jìn)行操作的標(biāo)量部分(220)。將通過(guò)標(biāo)量部分協(xié)同操作的功能單元的矢量部分和標(biāo)量部分設(shè)置成提供和/或耗費(fèi)功能單元的矢量部分所需要和/或所提供的至少一個(gè)標(biāo)量。
文檔編號(hào)G06F9/38GK1656495SQ03811744
公開(kāi)日2005年8月17日 申請(qǐng)日期2003年5月22日 優(yōu)先權(quán)日2002年5月24日
發(fā)明者C·H·范伯克, P·P·E·梅維斯森, N·恩金 申請(qǐng)人:皇家飛利浦電子股份有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
清原| 怀来县| 六枝特区| 邵武市| 临湘市| 大悟县| 二连浩特市| 吴忠市| 武汉市| 库伦旗| 南昌县| 青海省| 法库县| 锡林郭勒盟| 汾阳市| 吉林市| 上虞市| 洮南市| 察雅县| 邹城市| 固镇县| 志丹县| 沂水县| 洛扎县| 台中县| 凤台县| 泉州市| 阳西县| 泾阳县| 济宁市| 宁陵县| 雷波县| 邯郸县| 汤原县| 乳山市| 青铜峡市| 五华县| 乌兰察布市| 洪雅县| 梨树县| 玉山县|