專利名稱:用于帶有間接超長(zhǎng)指令字處理部件至處理部件通信的有效同步mimd操作的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明要求1997年11月7日遞交的標(biāo)題為“有效同步MIMDVLIW通信的方法和系統(tǒng)”的臨時(shí)申請(qǐng)序列號(hào)為60/064,619中的利益。
對(duì)于帶有給定數(shù)量的并行處理部件的單指令多數(shù)據(jù)流(SIMD)機(jī),存在著一些不能有效地使用可利用的并行處理部件,或者換言之,可利用的計(jì)算資源的算法。多指令多數(shù)據(jù)流(MIMD)類型機(jī)更有效地執(zhí)行這些算法中的一些算法,但需要用于在每個(gè)處理器上支持獨(dú)立的指令流的附加硬件,并且由于緊耦合程序?qū)崿F(xiàn)下的通信等待時(shí)間在性能上有所損失。本發(fā)明提出一種更好的機(jī)器組織,用于在減少硬件成本及復(fù)雜性下和在保持SIMD機(jī)及MIMD機(jī)的最佳特征以及使通信等待時(shí)間最小下執(zhí)行這些算法。本發(fā)明提供對(duì)SIMD間接超長(zhǎng)指令字(iVLIW)處理部件的一個(gè)MIMD計(jì)算自主性層并同時(shí)保持SIMD機(jī)組織中使用的單個(gè)控制線程。相應(yīng)地,采用術(shù)語(yǔ)“同步MIMD(SMIMD)”來(lái)描述本發(fā)明。
存在二種主要的并行程序設(shè)計(jì)模型SIMD模型和MIMD模型。在SIMD模型中,存在用于控制多個(gè)同步前后緊接(lock-step)方式下的處理部件(PE)的單程序線程。每個(gè)PE執(zhí)行相同指令但在不同數(shù)據(jù)上。這是和MIMD模型不同的。在MIMD模型中存在多個(gè)控制程序線程,并且任何處理器內(nèi)操作必須競(jìng)爭(zhēng)當(dāng)在多個(gè)處理器之間通信時(shí)由于需要在通信前使各個(gè)獨(dú)立的程序線程同步而出現(xiàn)的等待時(shí)間。SIMD的問(wèn)題在于不是所有的算法都能有效地使用處理器中存在的可使用的并行性。不同算法中固有的并行性大小的不同導(dǎo)致難以在SIMD機(jī)上有效地實(shí)現(xiàn)各種各樣的算法。MIMD機(jī)的問(wèn)題在于,多個(gè)處理器之間通信的等待時(shí)間導(dǎo)致難以有效地同步各處理器以在算法的處理上相協(xié)同。典型地,和SIMD機(jī)相比MIMD在實(shí)現(xiàn)上還導(dǎo)致更大的成本。因?yàn)槊總€(gè)MIMD PE必須具有其自己的指令排序機(jī)構(gòu),這可造成相當(dāng)大的硬件數(shù)量。MIMD固有地還具有為管理多個(gè)獨(dú)立的并行處理部件所要求的復(fù)雜得多的程序設(shè)計(jì)控制。從而,在采用并行處理部件時(shí),在各種環(huán)境下會(huì)導(dǎo)致多種層次的程序設(shè)計(jì)復(fù)雜性和通信等待時(shí)間。從而,如后面詳細(xì)說(shuō)明那樣有效地解決這些問(wèn)題是很有好處的。
本發(fā)明最好和ManArrary體系結(jié)構(gòu)一起使用。ManArray體系結(jié)構(gòu)的各個(gè)方面在下述文獻(xiàn)中分別詳細(xì)說(shuō)明1997年6月30日的遞交的美國(guó)專利申請(qǐng)序列號(hào)08/885,310,1997年10月10日遞交的美國(guó)專利申請(qǐng)序列號(hào)08/949,122,1998年10月9日遞交的美國(guó)專利申請(qǐng)序列號(hào)09/169,225,1998年10月9日遞交的美國(guó)專利申請(qǐng)序列號(hào)09/169,256,1998年10月9日遞交的美國(guó)專利申請(qǐng)序列號(hào)09/169,672,1997年12月4日遞交的標(biāo)題為“動(dòng)態(tài)修改極長(zhǎng)指令字處理器的指令的方法和設(shè)備”的臨時(shí)申請(qǐng)序列號(hào)60/067,511,1997年12月18日遞交的標(biāo)題為“用于可擴(kuò)縮指令集體系結(jié)構(gòu)的方法和設(shè)備”的臨時(shí)申請(qǐng)序列號(hào)60/068,021,1998年1月12日遞交的標(biāo)題為“動(dòng)態(tài)擴(kuò)展超長(zhǎng)指令字處理器的指令流水線的方法和設(shè)備”的臨時(shí)申請(qǐng)序列號(hào)60/071,248,1998年1月28日遞交的標(biāo)題為“在帶有子字執(zhí)行的基于VLIM陣列處理器中支持條件執(zhí)行的方法和設(shè)備”的臨時(shí)申請(qǐng)序列號(hào)60/072,915,1998年3月12日遞交的標(biāo)題為“用于在VLIW處理器中提供寄存器的間接控制的寄存器文件牽引方法和設(shè)備”的臨時(shí)申請(qǐng)序列號(hào)60/077,766,1998年7月9日遞交的標(biāo)題為“間接VLIW處理機(jī)中指令定址的方法和設(shè)備”的臨時(shí)申請(qǐng)序列號(hào)60/092,130,1998年10月9日遞交的標(biāo)題為“ManArray上高效復(fù)數(shù)乘法及快速傅里葉變換(FFT)的實(shí)現(xiàn)”的臨時(shí)申請(qǐng)序列號(hào)60/103,712,以及1998年11月3日遞交的標(biāo)題為“用于改進(jìn)視頻編碼的傳遞估計(jì)的方法和設(shè)備”的臨時(shí)申請(qǐng)序列號(hào)__,它們都轉(zhuǎn)讓給本發(fā)明受讓人并整體上是本文的參考資料。
依據(jù)本發(fā)明的適用于和ManArray間接超長(zhǎng)指令字(iVLIW)一起使用的ManArray處理機(jī)可實(shí)現(xiàn)成一個(gè)陣列處理機(jī),其具有一個(gè)用于一個(gè)提供間接超長(zhǎng)指令字體系結(jié)構(gòu)的可擴(kuò)縮處理部件(PE)陣列的、充當(dāng)陣列控制器的順序處理機(jī)(SP)。依據(jù)本發(fā)明的間接超長(zhǎng)指令字(iVLIW)可通過(guò)該SIMD陣列控制器順序處理機(jī)(SP)在一個(gè)iVLIW指令存儲(chǔ)器(VIM)中構(gòu)成。VIM最好存在于每個(gè)處理部件或PE中并包括多個(gè)iVLIW。當(dāng)在VIM中構(gòu)成某iVLIW后,另一條在優(yōu)選實(shí)施例中被稱為用于“執(zhí)行iVLIW”的XV的SP指令在所有的PE中的相同VIM地址上并行地執(zhí)行該iVLIW。若所有的PE VIM包含相同的指令組,則出現(xiàn)SIMD操作。在該XV指令和每個(gè)PE中存在的單個(gè)相同的iVLIW之間存在一對(duì)一的映射。
為了提高在ManArray上運(yùn)行的某些算法的效率,有可能借助通過(guò)某執(zhí)行VLIW(XV)指令啟動(dòng)的間接執(zhí)行和借助多個(gè)PE中相同VLIW存儲(chǔ)器地址處存儲(chǔ)的不同VLIW指令來(lái)間接操作VLIW存儲(chǔ)器中存儲(chǔ)的各VLIW指令。當(dāng)SP指令使得在所有PE上并行地執(zhí)行該組iVLIW時(shí),出現(xiàn)同步MIMD或SMIMD操作。在該XV指令和各個(gè)PE中存在的多個(gè)不同iVLIW之間存在一對(duì)多的映射。不再需要專用的同步機(jī)制,因?yàn)橥ㄟ^(guò)發(fā)出XV指令由單個(gè)控制點(diǎn)SP同步地激勵(lì)多個(gè)不同的iVLIW。由于采用“Receive Model(接收模型)”來(lái)管理PE和ManArray網(wǎng)絡(luò)之間的通信,如后面進(jìn)一步說(shuō)明的那樣避免了MIMD操作共有的通信等待時(shí)間特性。另外,由于執(zhí)行只存在一個(gè)同步軌跡,不需要在每個(gè)PE中使用用于獨(dú)立程序流的附加MIMD硬件。以這種方式,在減少硬件成本并使通信等待時(shí)間為最小下把該計(jì)算機(jī)組織成支持SMIMD操作。
最好在程序控制下裝入ManArray間接VLIW或iVLIW,盡管并不排除iVLIW的直接存儲(chǔ)器存取(DMA)裝入并且借助包含著固定iVLIW的ROM實(shí)現(xiàn)VIM地址空間段的替代辦法。為了保持某種程度的動(dòng)態(tài)程序靈活性,一部分VIM(若不是全部VIM)可以典型地為隨機(jī)存取型存儲(chǔ)器。為了裝載該隨機(jī)存取類型的VIM,一個(gè)定界符指令,即用于裝入iVLIW的LV,規(guī)定把該定界符后面的一定數(shù)量的指令裝入到VIM中而不是被執(zhí)行。對(duì)于SIMD操作,每個(gè)PE為每個(gè)VIM地址得到相同的指令。為了建立SMIMD操作必須在各個(gè)PE中的相同VIM地址上裝入不同的指令。
在本優(yōu)選實(shí)施例中,這是通過(guò)屏蔽機(jī)制達(dá)到的,該屏蔽機(jī)制只對(duì)屏蔽成ON的PE裝入VIM。用OFF屏蔽的PE不執(zhí)行該定界符指令,從而不把該定界符后面的規(guī)定指令組裝入VIM。替代地,可以平行地把不同的指令組從PE本地存儲(chǔ)器裝入,或者,VIM可以是DMA傳送的目標(biāo)。向相同的VIM地址裝入不同指令的另一種替代辦法是通過(guò)使用第二LV指令即LV2,該指令在LV指令后面跟著第二32位的控制字。第一和第二控制字重新排列它們之間的位組從而可添加PE標(biāo)號(hào)。這種第二LV2方法不需要屏蔽PE,從而可能在不同的系統(tǒng)實(shí)現(xiàn)上提供某些優(yōu)點(diǎn)。通過(guò)選擇性地把不同指令裝入到不同PE上的相同VIM地址中,ManArray被建立以用于SMIMD操作。
在實(shí)現(xiàn)SMIMD操作時(shí)遇到的一個(gè)問(wèn)題是在對(duì)待處理部件間的通信上。在SIMD方式下,陣列中的所有PE執(zhí)行相同的指令。典型地,這些SIMD處理部件至處理部件通信指令被認(rèn)為是采用Send Model(發(fā)送模型)的。也就是說(shuō),SIMD Send Model通信指令指明每個(gè)PE應(yīng)向哪個(gè)方向或?qū)δ膫€(gè)目標(biāo)PE發(fā)送它的數(shù)據(jù)。當(dāng)遇到例如SEND WEST的通信指令時(shí),每個(gè)PE向拓?fù)渖隙x成是它的西方鄰居的PE發(fā)送數(shù)據(jù)。Send Model既規(guī)定發(fā)送方PE也規(guī)定接收方PE。在該SEND WEST例子中,每個(gè)PE向其West PE發(fā)送數(shù)據(jù)并從其East PE接收數(shù)據(jù)。在SIMD方式中,這不是問(wèn)題。
在SMIMD操作方式下,采用Send Model可能使多個(gè)處理部件都試圖向同一個(gè)鄰居發(fā)送數(shù)據(jù)。這樣的試圖代表危險(xiǎn)情況,因?yàn)橹T如ManArray中的處理部件可能定義成只具有一個(gè)接收端口,一次只能從另一個(gè)處理部件接收。當(dāng)每個(gè)處理部件定義成具有一個(gè)接收端口時(shí),不能成功地完成這樣嘗試的操作,并造成通信危險(xiǎn)。
為了避免上述的通信危險(xiǎn),對(duì)PE間的通信采用Receive Model(接收模型)。利用Receive Model,每個(gè)處理部件控制一個(gè)選擇要從哪個(gè)處理部件接收的變換器。由于不可能使任意二個(gè)處理部件去競(jìng)爭(zhēng)相同的接收端口,不可能出現(xiàn)通信危險(xiǎn)。按照定義,每個(gè)PE控制它自己的接收端口并在不具有目標(biāo)PE規(guī)定下使數(shù)據(jù)是可使用的。為了在采用Receive Model的處理部件之間出現(xiàn)有意義的通信,必須把PE編程成在接收可使用的數(shù)據(jù)上是協(xié)同的。利用同步MIMD(SMIMD),若協(xié)同指令都存在于相同的iVLIW單元上可保證出現(xiàn)有意義的通信。若不帶有SMIMD,需要一種復(fù)雜的機(jī)制使通信同步并采用ReceiveModel。
從下述詳細(xì)說(shuō)明和附圖可清楚地得到本發(fā)明的更完整理解和清楚本發(fā)明的特點(diǎn)和優(yōu)點(diǎn)。
圖1示出依據(jù)本發(fā)明的ManArray間接VLIW指令存儲(chǔ)器的各個(gè)方面;圖2示出基本iVLIW數(shù)據(jù)通路;圖3示出帶有ALU槽的擴(kuò)展圖的五槽iVLIW;圖4A表示LV裝入/修改VLIW指令;圖4B表示XV執(zhí)行VLIW指令;圖4C表示指令字段定義;圖4D仍表示指令字段定義;圖4E表示ADD指令;圖4F示出用于2×2ManArray配置中的三個(gè)同步MIMDiVLIW的槽存儲(chǔ);圖5示出依據(jù)本發(fā)明的iVLIW裝入和取出流水線;圖6示出SIMDiVLIW數(shù)組處理的各個(gè)方面;圖7示出iVLIW轉(zhuǎn)換擴(kuò)充;圖8A示出iVLIW轉(zhuǎn)換擴(kuò)充的裝入和取出流水線;圖8B示出VIMiVLIW存儲(chǔ)的一種替代格式;圖9示出發(fā)送模型群集切換控制以及一個(gè)采用發(fā)送模型的SHIMD通信的示例性危險(xiǎn);圖10示出帶有集中式群集切換控制的發(fā)送模型;以及圖11示出用于避免SMIMD操作方式下通信危險(xiǎn)的接收模型群集切換控制。
下面詳細(xì)說(shuō)明一組和本發(fā)明一同使用的當(dāng)前優(yōu)選的間接超長(zhǎng)指令字(iVLIW)控制指令。圖1描述一個(gè)系統(tǒng),用于在一個(gè)2×2的PE 104,PE0-PE3,的ManArray中在地址“i”處執(zhí)行iVLIW,其中iVLIW由每個(gè)VIM中的垂直的框組SLAMD 105表示,每個(gè)VIM表示一組指令S=存儲(chǔ)、L=裝入、A=算術(shù)邏輯單元(ALU)、M=乘法累積單元(MAU)以及D=數(shù)據(jù)選擇單元。在圖1中,該2×2ManArray 100還包括一個(gè)在單條32位總線上向該陣列的PE調(diào)度32位的指令的順序處理機(jī)(SP)控制器102。一種類型的32位指令是一條執(zhí)行iVLIW(XV)指令,其包括一個(gè)VIM地址偏移值以和VIM基地址一起生成指向需要執(zhí)行的iVLIW的指針。PE 104通過(guò)群集交換器107互連。
ManArray體系結(jié)構(gòu)中依據(jù)本發(fā)明適用的SP 102以及每個(gè)PE104包含一個(gè)iVLIW存儲(chǔ)器(VIM)106的量,如圖1中所示。每個(gè)VIM 106包括用于保持多個(gè)VLIW指令地址103的存儲(chǔ)空間,并且每個(gè)地址能夠存儲(chǔ)多至八個(gè)的單工指令。當(dāng)前的優(yōu)選實(shí)施例允許每條iVLIW指令最多包含五條單工指令每條指令各和存儲(chǔ)單元108、裝入單元110、算術(shù)邏輯單元112(ALU)、乘法累積單元114(MAU)和數(shù)據(jù)選擇單元116(DSU)中的每一個(gè)相關(guān)。例如,在VIM地址“i”105處的一條iVLIW指令包含五條SLAMD。
圖2表示基本iVLIW數(shù)據(jù)通路配置200,通過(guò)該通路某取出的指令存儲(chǔ)到與VIM裝入和存儲(chǔ)控制功能22連接的指令寄存器20中。該VIM裝入和存儲(chǔ)控制功能提供至VIM 24的接口信號(hào)。在圖1的每個(gè)VIM 106具有相關(guān)的如圖2中所示的寄存器和控制功能下,VIM 24對(duì)應(yīng)于VIM 106。VIM 24的輸出流水線式傳遞到iVLIW寄存器26。圖3示出帶有N個(gè)入口,0、1…N-1,的五槽iVLIW VIM 300。每個(gè)VIM 300定址單元包括用于存儲(chǔ)、裝入、ALU、MAU和DSU指令301-305的存儲(chǔ)空間。擴(kuò)充ALU槽圖303′示出位31“d”被增亮的一條32位的存儲(chǔ)空間。后面會(huì)更詳細(xì)地討論VIM存儲(chǔ)中這些指令位的使用。
可以集合地把iVLIW指令裝入到PE VIM陣列中,或者,通過(guò)使用屏蔽一個(gè)或多個(gè)PE的專用指令獨(dú)立地裝入每個(gè)PE VIM。通過(guò)執(zhí)行VLIW(XV)指令可存取VIM中的供執(zhí)行的iVLIW,當(dāng)按單條指令執(zhí)行XV指令時(shí)它造成同時(shí)執(zhí)行位于該VIM存儲(chǔ)器地址處的各單工指令。XV指令可造成下列指令的同時(shí)執(zhí)行1.位于各個(gè)SP或PE的VIM地址中的所有單工指令,或者2.位于所有PE中相同的相對(duì)VIM地址上的所有指令,或者3.位于所有PE的子集或分組中相同的相對(duì)VIM地址上的所有指令。
只需要二種控制指令來(lái)裝入/修改iVLIW存儲(chǔ)器并執(zhí)行iVLIW指令。它們是1.圖4A中示出的裝入/修改VLIW存儲(chǔ)器地址(LV),以及2.圖4B中示出的執(zhí)行VLIW(XV)。
圖4A中示出的LV指令400如編碼框410如示用于32位編碼,并且具有語(yǔ)法/操作框420示出的并在后面進(jìn)一步說(shuō)明的目前優(yōu)選的語(yǔ)法/操作。LV指令400用于裝入和/或禁止規(guī)定的SP或者PE VLIW存儲(chǔ)器(VIM)的各個(gè)指令槽。VIM地址是按基VIM地址寄存器Vb(V0或V1)加上無(wú)符號(hào)8位偏移VIMOFFS計(jì)算的,其中VIMOFFS在圖4A的編碼框410里的位組框411的位0-7中示出。VIM地址必須在硬件配置的有效范圍內(nèi),否則該指令的操作是無(wú)定義的。
通過(guò)禁止槽參數(shù)′d={SLAMD}′可以禁止各個(gè)指令槽的任何組合,其中S=存儲(chǔ)單元(SU)、L=裝入單元(LU)、A=算術(shù)邏輯單元(ALU)、M=乘法累積單元(MAU)和D=數(shù)據(jù)選擇單元(DSU)。空′d=′參數(shù)不禁止任何槽。在裝入任何指令前禁止各規(guī)定的槽。
利用Instr Cnt參數(shù)規(guī)定要裝入的指令的數(shù)量。對(duì)于當(dāng)前的實(shí)施,有效值為0-5。LV之后的一批Instr Cnt指令被裝入到該規(guī)定的VIM中。單元影響標(biāo)志(UAF)參數(shù)′F=[AMD]′選擇哪一個(gè)算術(shù)指令槽(A=ALU,M=MAU,D=DSU)在執(zhí)行時(shí)被允許可為規(guī)定的VIM設(shè)定條件標(biāo)志??铡銯=′選擇ALU指令槽。在處理LV指令期間算術(shù)標(biāo)志不被影響,并且周期數(shù)等于裝入的指令數(shù)加1。
圖4B中示出的XV指令425如編碼框430所示也用于32位編碼,并且具有語(yǔ)法/操作框435示出的并在后面進(jìn)一步說(shuō)明的目前優(yōu)選的語(yǔ)法/操作。XV指令425用于執(zhí)行規(guī)定的SP或PE VLIW存儲(chǔ)器(VIM)的各個(gè)指令槽。VIM地址是按基VIM地址寄存器Vb(V0或V1)加上無(wú)符號(hào)8位偏移VIOMOFFS計(jì)算的,其中VIMOFFS在圖4B的編碼框430的位組框431的位0-7中示出。VIM地址必須在硬件配置的有效范圍內(nèi),否則該指令的操作是無(wú)定義的。
通過(guò)執(zhí)行槽參數(shù)′E={SLAMD}′可以執(zhí)行各個(gè)指令槽的任何組合,其中S=存儲(chǔ)單元(SU)、L=裝入單元(LU)、A=算術(shù)邏輯單元(ALU)、M=乘法累積單元(MAU)和D=數(shù)據(jù)選擇單元(DSU)??铡銭=′參數(shù)不執(zhí)行任何槽。單元影響標(biāo)志(UAF)參數(shù)′F=[AMDN]′改寫已通過(guò)LV指令裝入的VLIW規(guī)定的UAF。該改寫選擇哪一個(gè)算術(shù)指令槽(A=ALU,M=MAU,D=DSU)可為執(zhí)行該VLIW設(shè)定條件標(biāo)志或者都不能設(shè)定條件標(biāo)志(N=無(wú))。該改寫不影響由LV指令規(guī)定的UAF設(shè)定??铡銯=′選擇該VLIW裝入時(shí)所規(guī)定的UAF。
條件標(biāo)志是由通過(guò)來(lái)自原始LV指令的′F=′參數(shù)的設(shè)定所規(guī)定的槽中各單工指令設(shè)定的,或者是通過(guò)XV指令中的′F=[AMD]′參數(shù)的改寫設(shè)定的。當(dāng)在一個(gè)周期中出現(xiàn)′F=N′操作時(shí)條件標(biāo)志不受到影響。根據(jù)每個(gè)要執(zhí)行槽中的各個(gè)單工指令必須考慮流水線問(wèn)題。這些iVLIW指令中的各個(gè)字段的說(shuō)明在圖4C和4D中示出。圖4C和4D示出通過(guò)名字442、位數(shù)444和描述值446列表的指令字段定義440。圖4E和4F分別示出目前優(yōu)選的ADD指令和用于2×2ManArray配置中的三個(gè)同步MIMDiVLIW的槽存儲(chǔ)。
圖4E中示出的ADD指令450如編碼框455中所示也用于32位編碼,并且具有語(yǔ)法/操作框460示出的并在后面進(jìn)一步說(shuō)明的目前優(yōu)選的語(yǔ)法/操作。ADD指令450用于把源寄存器Rx和Ry的和存儲(chǔ)到目標(biāo)寄存器Rt中。算術(shù)標(biāo)量標(biāo)志在最小有效操作上改變,其中N=結(jié)果和的MSB,若結(jié)果為0則Z=1反之為0,若出現(xiàn)溢出則V=1反之為0,若出現(xiàn)進(jìn)位則C=1反之為0。對(duì)于帶符號(hào)的操作,v位是有意義的,對(duì)于無(wú)符號(hào)的操作C位是有意義的。周期數(shù)為1。
單個(gè)操作、成組操作以及“同步MIMD”PEiVLIW操作LV指令和XV指令可以在程序員所定義的各個(gè)PE中或者PE分組中用來(lái)裝入、修改、禁止或執(zhí)行iVLIW指令。為了達(dá)到這一點(diǎn),各個(gè)PE是通過(guò)一條修改每個(gè)PE內(nèi)的控制寄存器的指令使能或禁止的,該指令除別的作用外使能或禁止每個(gè)PE。為了裝入和操作單個(gè)PE或者一組PE,修改各控制寄存器,以便使能一個(gè)(或一些)PE并禁止所有其它PE。僅當(dāng)使能一些PE后才接著操作常規(guī)iVLIW。
參照?qǐng)D5,連同iVLIW系統(tǒng)500說(shuō)明iVLIW裝入和取出流水線的各個(gè)方面。除其它方面外,圖5示出一種選擇機(jī)制,用于允許從VIM存儲(chǔ)器選擇指令。取出的指令被裝入到第一指令寄存器(IR1)510中。寄存器510廣義地對(duì)應(yīng)于圖2的指令寄存器20。在裝入第二指令寄存器(IR2)514之前,在流水線周期的早期IR1的輸出在譯碼器或預(yù)編碼功能512中預(yù)譯碼。當(dāng)IR1中的指令是一個(gè)帶有非零指令計(jì)數(shù)的裝入iVLIW指令(LV)時(shí),預(yù)譯碼器512生成一個(gè)LVc1控制信號(hào)515,該控制信號(hào)用于建立LV操作周期,而VIM地址511是通過(guò)加法器504把規(guī)定的Vb寄存器502和來(lái)自通路503的該LV指令中所包含的偏移值相加計(jì)算出的。結(jié)果VIM地址511存儲(chǔ)在寄存器506中并通過(guò)多路復(fù)用器508以定址VIM 516。VIM 516一般對(duì)應(yīng)于圖1的VIM 106。要求寄存器506在LV操作期間保持VIM地址507。VIM地址511和LV控制狀態(tài)允許把在該LV指令后面接收的指令裝入到VIM 516中。在接收該LV的那個(gè)周期的終點(diǎn),把圖4A中示出的禁止位組10-17裝入到d位組寄存器518,供向VIM 516裝入指令組時(shí)使用。一旦在IR1 510中接收到要裝入到VIM 516中的下一條指令,根據(jù)指令類型,即Storec1 519、Loadc1 521、ALUc1 523、MAUc1 525或DSUc1 527生成適當(dāng)?shù)目刂菩盘?hào)。預(yù)譯碼功能512最好設(shè)置成基于對(duì)圖4A、4B和4E示出的定義指令類型的分組位組(位30和31)和圖4D和4E示出的單元字段位組(規(guī)定執(zhí)行單元類型的位27和28)的簡(jiǎn)單譯碼。通過(guò)采用該預(yù)譯碼步驟,可以把IR1 510中指令裝入到VIM 516中的適當(dāng)功能單元位置。例如,對(duì)于指令LV表中包括的圖4E的ADD指令,當(dāng)把該指令接收到IR1 510中時(shí)可以通過(guò)預(yù)譯碼功能512判定應(yīng)把該指令裝入到VIM 516中的ALU指令槽520。此外,用于該功能槽部位的適當(dāng)d位被裝入到該槽的位31中。該裝入的d位占據(jù)來(lái)自原始指令的分組代碼位位置上的一個(gè)位置。
一旦接收IR1 510中的XV指令,通過(guò)利用加法器504使規(guī)定的Vb寄存器502和來(lái)自通路503的XV指令中包含的偏移值相加而計(jì)算出VIM地址511。結(jié)果VIM地址507通過(guò)多路復(fù)用器508以定址VIM。從VIM 516中讀出該規(guī)定地址上的iVLIW并通過(guò)多路復(fù)用器530、532、534、536和538送到IR2寄存器514。作為一種使讀VIM訪問(wèn)計(jì)時(shí)關(guān)鍵路徑最小的替代方法,可以把VIM 516的輸出鎖存到一個(gè)其輸出通過(guò)譯碼狀態(tài)邏輯電路前面的某多路復(fù)用器的寄存器中。
為了執(zhí)行XV指令,IR2 MUX1控制信號(hào)533和預(yù)譯碼XVc1控制信號(hào)517一起使所有的IR2多路復(fù)用器530、532、534、536和538選擇VIM輸出通路541、543、545、547和549。此刻,同步完成流水線540、542、544、546和548的五個(gè)分開(kāi)的譯碼及執(zhí)行階段,以提供iVLIW平行執(zhí)行性能。為了允許在PE或SP中由自身執(zhí)行單個(gè)32位的指令,示出了旁路VIM通路535。例如,當(dāng)在IR1 510中接收到單工ADD指令供平行陣列執(zhí)行時(shí),預(yù)譯碼功能512生成IR2MUX1 533控制信號(hào),該控制信號(hào)533在一個(gè)ADD和沒(méi)有XV 517或沒(méi)有LV 515活動(dòng)控制信號(hào)的情況下同指令類型預(yù)譯碼信號(hào)523一起使ALU多路復(fù)用器534選擇旁路通路535。
由于ManArray可用可變數(shù)量的PE配置,圖6示出諸如圖5中示出的系統(tǒng)500那樣的iVLIW系統(tǒng)的示范性SIMD iVLIW使用。在圖6中,存在J+1個(gè)用PE0至PEJ編號(hào)的PE。在圖6中示出一部分LV代碼,其表示三條指令要裝入到VIM地址27處并且禁止裝入單元槽和MAU指令槽。該裝入操作是根據(jù)圖4A中示出的語(yǔ)法從LV指令601確定的。假定所有PE屏蔽成接通,則所指明的三條指令603、605和607會(huì)裝入到該陣列的J+1個(gè)PE中的每個(gè)PE的VIM地址27處。在圖6中通過(guò)示出這些指令被存儲(chǔ)在VIM中的適當(dāng)執(zhí)行槽來(lái)表示該裝入的結(jié)果,即指令603在ALU槽中,指令605在DSU槽中,以及指令607在存儲(chǔ)單元槽中。
請(qǐng)注意,在前面由圖3、5、6復(fù)蓋的討論中,預(yù)譯碼功能允許用圖5中所示的從啟動(dòng)VIM裝入序列的LV指令生成的已存儲(chǔ)的d位組518寫VIM槽字段的多個(gè)位31位置。還請(qǐng)注意,例如圖4E的算術(shù)指令中單元字段,即位27和位28,對(duì)于確定某算術(shù)指令要裝入到哪個(gè)VIM槽是必要的。從而,由于可以利用預(yù)譯碼功能把IR1中的指令和VIM中的執(zhí)行單元槽具體地關(guān)聯(lián)起來(lái),不需要在VIM中存儲(chǔ)分組位組和單元字段位組并且它們可用于其它目的,如前面討論中示范那樣使用單個(gè)d位。在圖7中的VIM 700里示出各VIM槽中專用位的位置,其中圖4E的指令分組位組中的一個(gè)位即位30以及指令單元字段位組位27和位28在VIM 700中由以下轉(zhuǎn)換擴(kuò)充選擇位組替代,其中“0”為圖7中標(biāo)號(hào)為721的操作碼擴(kuò)充位30,“r”為標(biāo)號(hào)為723的寄存器文件擴(kuò)充位28,而“c”為標(biāo)號(hào)為725的條件執(zhí)行擴(kuò)充位27。這些附加的位分別存儲(chǔ)在圖8A中示出的雜項(xiàng)寄存器850中,程序員可對(duì)該寄存器裝入或存儲(chǔ)。這些位提供擴(kuò)充能力,在32位指令格式下由于指令編碼位的不足不能提供這樣的能力。對(duì)于操作碼擴(kuò)充位“0”;有可能把一組指令映射到新的一組指令。對(duì)于寄存器擴(kuò)充位“r”;有可能使寄存器文件空間翻一番并且具有二排寄存器,這二排寄存器或者提供附加的寄存器空間或者充當(dāng)一種快速環(huán)境切換機(jī)制以允許在二種環(huán)境中劃分這二排寄存器。對(duì)于條件執(zhí)行擴(kuò)充位“c”,有可能規(guī)定二組不同的條件或者在程序員控制下規(guī)定不同的條件執(zhí)行功能性。
圖8A描述示出iVLIW轉(zhuǎn)換擴(kuò)充裝入和取出流水線的各個(gè)方面的iVLIW系統(tǒng)800,以表示添加0位、r位和c位寄存器850以及預(yù)譯碼控制信號(hào)815、817、819、821、823、825、827和833的設(shè)立。請(qǐng)注意這些自由位的其它使用也是可能的。例如,這三個(gè)位都可以用于寄存器文件擴(kuò)充,以提供對(duì)三條操作數(shù)指令的單獨(dú)控制或提供八排32×32寄存器。
為了允許在iVLIW PE或iVLIW SP中由自身執(zhí)行單個(gè)32位的指令,在圖8A中示出旁路VIM通路835。例如,當(dāng)在IR1 810中接收到單工ADD指令供平行陣列執(zhí)行時(shí),預(yù)譯碼功能812生成IR2MUX2 833控制信號(hào),該控制信號(hào)833連同ADD及沒(méi)有XV 817或LV 815活動(dòng)控制信號(hào)情況下的指令類型預(yù)譯碼信號(hào)823使ALU多路復(fù)用器834選擇旁路通路835。由于如本文中所說(shuō)明的那樣,在流水線的全階段中可出現(xiàn)旁路操作,有可能在被旁路的指令進(jìn)入IR2鎖存階段時(shí)替換被旁路的指令中的分組位組和單元字段位組。在圖8A中這是通過(guò)利用“0、r和c”位信號(hào)通路851在多路復(fù)用器830、832、834、836和838的輸入端處替換適當(dāng)?shù)奈晃恢脕?lái)示出的。
請(qǐng)注意,用于VIM iVLIW存儲(chǔ)的替代格式是可能的,并且可能最好取決于技術(shù)及設(shè)計(jì)考慮。例如,圖8B描述對(duì)圖7和8A中的示出的形式的一種選代形式VIM 800′。每個(gè)執(zhí)行槽的d位組和附加的位組“0,r,c和uaf”編組在一起。對(duì)于每個(gè)槽這十個(gè)位從在位0-26和29中定義的執(zhí)行單元功能位獨(dú)立編組。需要在單個(gè)iVLIW VIM地址處存儲(chǔ)來(lái)自LV指令的圖4A的單元影響字段(uaf)位組22和23,因?yàn)椤皍af”位組和執(zhí)行時(shí)哪一個(gè)算術(shù)單元影響標(biāo)志有關(guān)。別的存儲(chǔ)格式是可能的,例如,把d位組和功能位組一起存儲(chǔ),并單獨(dú)地存儲(chǔ)和整個(gè)iVLIW相關(guān)的位組例如“uaf”位組。還請(qǐng)注意對(duì)于一個(gè)k槽iVLIW,不是必須要把k×32位存儲(chǔ)在VIM中。由于預(yù)譯碼功能,不僅可把附加的位組存儲(chǔ)在設(shè)想成用來(lái)存儲(chǔ)k個(gè)32位指令的該k×32位空間中,而且若不需要全部使用這些位還可減小k×32位空間。這在圖8B中示出,其中每個(gè)VIM地址的存儲(chǔ)位總數(shù)是這樣給出的,5乘以每個(gè)執(zhí)行單元槽位置所需的28位(0-26及29)加上5個(gè)d位、3個(gè)“0,r和c”位和2個(gè)“uaf”位,從而每個(gè)iVLIW地址總共150位,這比設(shè)想所需要的5×32=160位小10位。這既提高功能性又減少VIM存儲(chǔ)器空間。通常,可以為每個(gè)執(zhí)行單元單獨(dú)地把附加的信息存儲(chǔ)在VIM中,或者把影響該iVLIW上的控制的各個(gè)位單獨(dú)地存儲(chǔ)在該VIM地址上。例如,可把十六個(gè)附加裝入立即位存儲(chǔ)到一個(gè)單獨(dú)的“常數(shù)”寄存器中并裝入到某VIM地址中以把裝入單元的能力擴(kuò)充成裝入32位的立即數(shù)據(jù)。為了實(shí)現(xiàn)這種擴(kuò)充,必須適當(dāng)?shù)財(cái)U(kuò)展VIM數(shù)據(jù)寬度。而且各被存儲(chǔ)的iVLIW的長(zhǎng)度和指令長(zhǎng)度的倍數(shù)不相干,從而可根據(jù)需要使已存儲(chǔ)的iVLIW大于或小于用于k個(gè)指令iVLIW的k×32位。
在包括一個(gè)如圖1的SP控制器102(為簡(jiǎn)明,在圖9或圖10中未示出)和一個(gè)PE陣列的處理機(jī)中,例如圖9的處理機(jī)900或圖10的處理機(jī)1000,在處理PE間通信下實(shí)現(xiàn)SMIMD操作可能會(huì)遇到問(wèn)題。典型的SIMD通信方式規(guī)定所有的PE執(zhí)行相同的PE間通信指令。這種在每個(gè)PE中相同的SIMD PE間指令要求一種公用的控制機(jī)制,以便確保在PE之間定義的公用操作的一致性。典型地,在向陣列中的所有PE調(diào)度單個(gè)指令如SEND_WEST的情況下采用發(fā)送模型。SIMD PE間通信指令產(chǎn)生PE間的網(wǎng)絡(luò)接口的協(xié)同控制以允許每個(gè)PE向由該P(yáng)E間指令拓?fù)涠x的PE發(fā)送數(shù)據(jù)。由于所有PE接收相同的指令,如圖9中所示可以解釋該單個(gè)SIMD指令并且可由單個(gè)PE控制網(wǎng)絡(luò)接口911。請(qǐng)注意,圖9中示出的ManArray 2×2群集切換是由四個(gè)4對(duì)1的多路復(fù)用器920、922、924和926構(gòu)成的,以用于DSU之間的接口輸入/輸出(I/O)總線。這些總線可以是8位、9位、16位、32位、64位或別的位數(shù)不受限制的總線。對(duì)單個(gè)4對(duì)1多路復(fù)用器的控制是需要二個(gè)用于從四條可能的路徑選出一條路徑的控制位。當(dāng)需要時(shí)借助更多的多路復(fù)用器可擴(kuò)充成用于更大的群集。在SIMD系統(tǒng)中也有可能如圖10中所示對(duì)PE之間的接口網(wǎng)絡(luò)采用集中式控制。在圖10中,集中控制器1010和網(wǎng)絡(luò)中的其它PE一樣從SP控制器接收相同的調(diào)度過(guò)的PE間通信指令1011。這種機(jī)制允許在逐個(gè)周期的基礎(chǔ)上改變網(wǎng)絡(luò)連接。SIMD發(fā)送模型的二種屬性是對(duì)所有PE的公用指令以及規(guī)定發(fā)送方和接收方二方。在該SIMD方式下,這種方法不是問(wèn)題。
在試圖把發(fā)送模型擴(kuò)充到SMIMD方式中時(shí),可能出現(xiàn)其它問(wèn)題。問(wèn)題之一是在SMIMD方式下有可能多個(gè)處理部件都試圖向單個(gè)PE發(fā)送數(shù)據(jù)。這是因?yàn)槊總€(gè)PE可接收不同的PE間通信指令。SIMD發(fā)送模型的這二個(gè)屬性,即具有公用的PE間指令以及規(guī)定源和目標(biāo)二者或發(fā)送方和接收方二者,立即失靈。在單周期通信中使多于一個(gè)PE在SIMD模型下以相同的PE為目標(biāo)是一種通信危險(xiǎn)。在圖9中示出該通信危險(xiǎn),其中用于PE 1、2、3的各DSU要向PE0發(fā)送數(shù)據(jù)同時(shí)PE0要向PE3發(fā)送數(shù)據(jù)。對(duì)PE0的三個(gè)數(shù)據(jù)輸入是不能接收的。在別的系統(tǒng)中對(duì)這種類型問(wèn)題的解決辦法大多是引入接口緩沖器和優(yōu)先級(jí)控制邏輯以便延遲沖突通路中的一條或多條。由于單周期通信操作的調(diào)度必須在對(duì)要在各PE中執(zhí)行的iVLIW指令的程序設(shè)計(jì)期間完成,這破壞了SMIMD處理固有的同步性質(zhì)。為了在不違反同步MIMD要求下避免這樣的通信危險(xiǎn),采用接收模型是有好處的。發(fā)送模型所帶來(lái)方便的位于單個(gè)PE處或位于集中式控制機(jī)制處的單個(gè)網(wǎng)絡(luò)控制點(diǎn)在接收模型中用分布式網(wǎng)絡(luò)接口控制替代。每個(gè)PE控制它擁有的接收端口。接收模型通過(guò)網(wǎng)絡(luò)接口規(guī)定接收通路。在ManArray網(wǎng)絡(luò)的情況下,每個(gè)PE控制它擁有群集交換的多路復(fù)用器輸入通路。
在圖11中示出這種用于2×2陣列處理機(jī)1100的配置,其中每個(gè)PE分別具有對(duì)其輸入多路復(fù)用器(1120、1122、1124或1126)擁有的控制。例如,PE0具有用于控制它的輸入多路復(fù)用器1120的控制信號(hào)1111。接收模型還要求使可在不帶有目標(biāo)PE規(guī)定下能在PE輸出端口上得到送至接口網(wǎng)絡(luò)的數(shù)據(jù)。從而,為了在處理部件之間出現(xiàn)采用接收模型的有意義的通信,各PE必須編程成在接收可得到的數(shù)據(jù)上是協(xié)同的。采用同步MIMD下,若在相同的iVLIW單元存在協(xié)同指令可保證出現(xiàn)這樣的協(xié)同。借助指令的這種定位,在執(zhí)行XV指令時(shí),各協(xié)同的PE執(zhí)行適當(dāng)?shù)腜E間通信指令以產(chǎn)生任何二個(gè)或更多的PE之間的數(shù)據(jù)傳遞。通常,在PE陣列中可存在多個(gè)PE分組。在每個(gè)這樣的分組中一個(gè)或多個(gè)PE可從另一個(gè)PE接收數(shù)據(jù),而在另一個(gè)分組中一個(gè)或多個(gè)PE可以從一個(gè)不同的PE接收數(shù)據(jù)。分組的大小可以從二個(gè)PE到整個(gè)PE陣列不等。盡管在圖11中出于簡(jiǎn)化圖示的目的沒(méi)有示出SP例如圖1的SP控制器102,雖然可以意識(shí)到如前面引用的美國(guó)臨時(shí)申請(qǐng)序列號(hào)60/077,457中說(shuō)明的那樣把SP功能融入到某PE例如PE0中,或者可把SP功能添加到所有PE上,盡管該功能這樣的增加是相對(duì)費(fèi)錢的,但最好包括這一控制器。
圖4F示出在2×2ManArray配置中三條同步MIMDiVLIW的定義470。上部480給出操作描述。下部490給出相應(yīng)的分別裝入到LU、MAU、ALU、DSU和SU里的指令助記碼。每條iVLIW包括在粗的黑線之間的四行,一個(gè)PE一行。圖的最左列示出在PE iVLIW指令存儲(chǔ)器(VIM)中裝入該iVLIW的地址。下一列示出PE號(hào)。每條iVLIW包含用于每個(gè)PE的一行,表示裝入到該P(yáng)E的VIM入口中的各指令。其余的列列出用于五個(gè)執(zhí)行單元裝入單元(LU)、乘法累積單元(MAU)、算術(shù)邏輯單元(ALU)、數(shù)據(jù)選擇單元(DSU)和存儲(chǔ)單元(SU)中之每個(gè)的指令。
例如,PE2 495中的VIM入口號(hào)29裝入四條指令li.p.w R3,A1+,A7;fmpy.pm.1 fw R5,R2,R31;fadd.pa.1 fw R9,R7,R5以及pexchg.pd.w R8,R0,2×2_PE3。這些指令是在圖4F的倒數(shù)第二行中找到的指令。該同一VIM入口(29)包含著PE0、PE1和PE3中的不同指令,如可從VIM入口29上與這些PE對(duì)應(yīng)的行PE0 491、PE2493和PE3 497中可看到的那樣。
下面示例1-1示出裝入到如圖4F中所定義的PEVIM存儲(chǔ)器的指令序列。請(qǐng)注意,為了在相同地址上把不同的指令組裝入到不同的PEVIM中,使用了PE屏蔽。例1-1把多個(gè)同步MIMDiVLIW裝入到多個(gè)VIM中<pre listing-type="program-listing"><![CDATA[!首先裝入PE1、2、3、共用的指令lim.s.h0 SCR1,1!為裝入1、2、3而屏蔽掉PE0lim.s.h0 VAR.0 !向VIM基地址寄存器V0裝入零lv.pv0,27,2,d=,f= !用下二個(gè)指令裝入VIM入口V0!+27(=27);不禁止任何指令,!對(duì)ALU置缺省標(biāo)志li.p.w R1,A1+,A7 !裝入指令進(jìn)入LUfmpy.pm.1fw R6,R3,R31 !乘指令進(jìn)入MAUlv.p v0,28,2,d=,f=!用下二個(gè)指令裝入VIM入口V0+28!(=28);不禁止任何指令;!對(duì)ALU置缺省標(biāo)志li.p.w R2,A1+,A7 !裝入指令進(jìn)入LUfmpy.pm.1fw R4,R1,R31 !乘指令進(jìn)入MAUlv.p v0,29,2,d=,f=!用下二個(gè)指令裝入入口V0+29!(=29);不禁止任何指令;!對(duì)ALU置缺省標(biāo)志li.p.w R3,A1+,A7 !裝入指信進(jìn)入LUfmpy.pm.1fwR5,R2,31 !裝入指令進(jìn)入MAU!現(xiàn)裝入PE0獨(dú)有的指令lim.s.h0 SCR1,14 !為裝入PE0而屏蔽掉PE1、2、3nop !一個(gè)周期延遲以設(shè)立屏蔽lv.p v0,27,1,d=lmad,f=!用下個(gè)指令裝入VIM入口V0!+27(=27);禁止LU、MAU、!ALU、DSU槽中的指令;!對(duì)ALU置缺省標(biāo)志si.p,w R1,A2+,R28!存儲(chǔ)指令進(jìn)入SUlv.p v0,28,1,d=lmad,f=!用下個(gè)指令裝入VIM入口V0!+28(=28);禁止LU、MAU、!ALU、DSU槽中的指令; !對(duì)ALU置缺省標(biāo)志si.p.w R1,A2+,R28!存儲(chǔ)指令進(jìn)入SUlv.p v0,29,1,d=lmad,f= !用下個(gè)指令裝入VIM入口V0 !+29(=29);禁止LU、MAU、 !ALU、DSU槽中的指令; !對(duì)ALU置缺省標(biāo)志si.p.w R1,A2+,R28!存儲(chǔ)指令進(jìn)入SU!現(xiàn)裝入PE1獨(dú)有的指令lim.s.h0 SCR1,13 !為裝入PE1而屏蔽掉PE0、2、3nop!一個(gè)周期延遲以設(shè)定屏蔽lv.p v0,27,3,d=s,f= !用下三個(gè)指令裝入VIM入口 !v0+27(=27);禁止SU槽中 !對(duì)ALU置缺省標(biāo)志fadd.pa.1fw R10,R9 R8 !加法指令進(jìn)入ALUpexchg.pd,wR7,R0,2×2_PE3 !PE公用指令進(jìn)入DSU si.p.w R10,+A2,A6!存儲(chǔ)指令進(jìn)入SUlv.p v0,28,2,d=,f= !用下二個(gè)指令裝入VIM入口 !v0+28(=28);不禁止任何指令; !的指令;對(duì)ALU置缺省標(biāo)志fadd.pa.1fw R9,R7 R4 !加法指令進(jìn)入ALUpexchg.pd.wR8,R5,2×2_PE2!PE公用指令進(jìn)入DSUlv.p v0,29,3,d=,f= !用下三個(gè)指令裝入VIM入口 !v0+29(=29);不禁止任何指令;!對(duì)ALU置缺省標(biāo)志fcmpLE.pa.1fw R10,R0!比較指令進(jìn)入ALUpexchg.pd.wR15,R6,2×2_PE1 !PE公用指令進(jìn)入DSUt.sii.p.w R0,A2+,0 !存儲(chǔ)指令進(jìn)入SU!現(xiàn)裝入PE2獨(dú)有的指令lim.s.h0 SCR1,11!為裝入PE2而屏蔽掉PE0、1、3nop !一個(gè)周期延遲以設(shè)定屏蔽lv.p v0 27,3,d=,f= !用下三條指令裝入VIM入口 !v0+27(=27);不禁止任何指令; !對(duì)ALU置缺省標(biāo)志fcmpLE.pa.1fw R10,R0!加法指令進(jìn)入ALUpexchg.pd.wR15,R6,2×2_PE2 ! PE公用指令進(jìn)入DSUt.sii.p.w R0,A2+,0 !存儲(chǔ)指令進(jìn)入SUlv.p v0,28,3,d=,f= !用下三條指令裝入VIM入口 !v0+28(=28);不禁止指令; !對(duì)ALU置缺省標(biāo)志fadd.pa.1fw R10,R9,R8 !比較指令進(jìn)入ALUpexchg.pd.wR7,R4,2×2_PE1 !PE公用指令進(jìn)入DSUsi.p.w R10,+A2,A6 !存儲(chǔ)指令進(jìn)入SUlv.p v0,29,2,d=s,f=!用下二條指令裝入VIM入口 !v0+29(=29);禁止SU槽中的指令; !對(duì)ALU置缺省標(biāo)志fadd.pa.1fw R9,R7,R5 !加法指令進(jìn)入ALUpexchg.pd.wR8,R0,2×2_PE3 !PE公用指令進(jìn)入DSU!現(xiàn)裝入PE3獨(dú)有的指令lim.s.h0 SCR1,7!為裝入PE3而屏蔽掉PE0,1,2nop !一個(gè)周期延遲以設(shè)定屏蔽lv.p v0,27,2,d=s,f= !用下二條指令裝入VIM入口!v0+27(=27);禁止SU槽!中的指令;對(duì)ALU置缺省標(biāo)志fadd.pa.1fw R9,R7,R6 !加法指令進(jìn)入ALUpexchg.pd.wR8,R4,2×2_PE2 ! PE公用指令進(jìn)入DSUlv.p v0,28,3,d=d,f= !用下二條指令裝入VIM入口!v0+28(=28);禁止DSU槽!中的指令;對(duì)ALU置缺省標(biāo)志fcmpLE.pa.1fw R10,R0 !比較指令進(jìn)入ALUt.sii,p.w R0,A2+,0 !存儲(chǔ)指令進(jìn)入SUlv.p v0,29,3,d=,f=!用下三條指令裝入VIM入口!v0+29(=29);不禁止任何指令;!對(duì)ALU置缺省標(biāo)志fadd.pa.1fwR10,R9,R8 !加法指令進(jìn)入ALUpexchg.pd.wR7,R5,2×2_PE1 ! PE公用指令進(jìn)入DSUsi.p.w R10,+A2,A6 !存儲(chǔ)指令進(jìn)入SUlim.s.h0 SCR1,0!PE屏蔽復(fù)位從而所有PE都接通nop !一個(gè)周期延遲以設(shè)立屏蔽]]></pre>下面的例子1-2表示執(zhí)行通過(guò)圖4F中的例子1-1代碼裝入的各 PEVIM入口的指令順序。請(qǐng)注意不需要PE屏蔽。在每個(gè)PE,PE0、PE1、PE2和PE3中執(zhí)行規(guī)定的VIM入口。表1-2執(zhí)行來(lái)自PEVIM的同步MIMDiVLIM<pre listing-type="program-listing"><![CDATA[!這里設(shè)立地址寄存器、循環(huán)等…!啟動(dòng)VLIW執(zhí)行!f=參數(shù)表示對(duì)LV標(biāo)志設(shè)定的缺省xv.p v0,27,e=l,f= !僅由LU執(zhí)行VIM入口v0+27xv.p v0,28,e=lm,f=!僅由LU、MAU執(zhí)行VIM入口v0+28xv.p v0,29,e=lm,f=!僅由LU、MAU執(zhí)行VIM入口v0+29xv.p v0,27,e=lmd,f= !僅由LU、MAU、DSU執(zhí)行VIM入口v0+27xv.p v0,28,e=lamd,f= !SU外的所有部件執(zhí)行VIM入口v0+28xv.p v0,29,e=lamd,f= !SU外的所有部件執(zhí)行VIM入口v0+29 xv.p v0,27,e=lamd,f= !SU外的所有部件執(zhí)行VIM入口v0+27xv.p v0,28,e=lamd,f= !SU外的所有部件執(zhí)行VIM入口v0+28xv.p v0,29,e=lamd,f= !SU外的所有部件執(zhí)行VIM入口v0+29!循環(huán)體-前面已建立允許循環(huán)的機(jī)制loop_beginxv.p v0,27,e=slamd,f=!所有部件執(zhí)行v0+27 xv.p v0,28,e=slamd,f= !所有部件執(zhí)行v0+28loop-endxv.p v0,29,e=slamd,f= !所有部件執(zhí)行v0+29]]></pre>對(duì)所執(zhí)行的示例算法的說(shuō)明圖4F中定義的iVLIW組用于進(jìn)行常數(shù)3×1向量和PE本地?cái)?shù)據(jù)存儲(chǔ)器中存儲(chǔ)的3×1向量變量流的點(diǎn)積。每個(gè)PE存儲(chǔ)著向量的一個(gè)分量。PE1存儲(chǔ)x分量,PE2存儲(chǔ)y分量而PE3存儲(chǔ)z分量。PE0不存儲(chǔ)分量。該常向量以不變的方式保持在一個(gè)PE寄存器中,在本情況下為計(jì)算寄存器R31。
為了避免冗余計(jì)算或者空閑的PE,iVLIW同時(shí)在三個(gè)變量向量上操作。由于向量分量在各PE上的散布,利用PE0計(jì)算第四個(gè)向量點(diǎn)積是不適宜的。把PE0用于替代處理將來(lái)算法階段的某種建立是有好處的。這可以從各iVLIW裝入槽中看出,即向量1裝入iVLIW27(如上面所說(shuō)明,跨越PE上的分量方式)、向量2裝入iVLIW28和向量3裝入Ivliw29(li.p,wR*,A1+,A7)。PE1為這三個(gè)向量的每個(gè)向量計(jì)算點(diǎn)積的x分量。PE2計(jì)算y分量,而PE3計(jì)算子分量(fmpy.pm.1fwR*,R*,R31)。此刻,為了對(duì)PE1得到向量1點(diǎn)積的y和z分量,對(duì)PE2得到向量2點(diǎn)積的x和z向量,對(duì)PE3得到向量3點(diǎn)積的x和y分量,必須在PE之間進(jìn)行通信。在DSU中通過(guò)pexchg指令進(jìn)行通信。以這種方式,每個(gè)PE同時(shí)將(fadd.pa,1fw R9,R7 R*和fadd.pa,1fw R10,R9,R8)唯一點(diǎn)積結(jié)果的各分量求和。接著把這些結(jié)果存儲(chǔ)到(si.p.w R10,+A2,A6)RE存儲(chǔ)器中。請(qǐng)注意每個(gè)PE將每隔三個(gè)結(jié)果計(jì)算和存儲(chǔ)結(jié)果。然后以循環(huán)方式從PE1、2、3訪問(wèn)最后的結(jié)果集。
此外,每個(gè)PE執(zhí)行其點(diǎn)積結(jié)果和零(在PE寄存器R0中保持)的比較(fcmpLE.pa,1fw R10,R0),并且在點(diǎn)積為負(fù)的條件下把計(jì)算出的點(diǎn)積替代地用零存儲(chǔ)(t.sii.p.w Ro,A2+,0)。換言之,判定R10小于R0?的比較是否真。這種去掉負(fù)值的點(diǎn)積實(shí)現(xiàn)例如用于三維圖形應(yīng)用的亮度計(jì)算。
盡管在實(shí)現(xiàn)本發(fā)明的當(dāng)前的優(yōu)選方法和設(shè)備的環(huán)境下公開(kāi)了本發(fā)明,對(duì)于一般的技術(shù)人員各種替代實(shí)現(xiàn)或改變是顯而易見(jiàn)的。例如,本發(fā)明并不排除在VIM中裝入指令而且執(zhí)行該指令的能力。這種能力已被認(rèn)為除指令格式和硬件復(fù)雜性之外不必要地使本發(fā)明的程序設(shè)計(jì)模型復(fù)雜。從而,選用了裝入iVLIW定界符方法。
權(quán)利要求
1.一種間接超長(zhǎng)指令字(VLIW)處理系統(tǒng)包括具有VLIW指令存儲(chǔ)器(VIM)的第一處理部分(PE),用于把指令存儲(chǔ)到一個(gè)VIM存儲(chǔ)器單元內(nèi)的槽組中;第一寄存器,用于存儲(chǔ)具有多個(gè)定義指令類型的分組位的和多個(gè)定義執(zhí)行單元類型的單元位的功能指令;一個(gè)預(yù)編碼器,用于譯碼該多個(gè)分組位和該多個(gè)單元字段位;以及一種裝入機(jī)制,用于根據(jù)所述譯碼把功能指令裝入到VIM中的一個(gè)適當(dāng)所述槽中。
2.權(quán)利要求1的系統(tǒng)還包括一種控制指令,其包含用于間接執(zhí)行VLIW用途的地址偏移和指向基地址寄存器的基指針的執(zhí)行VLIW指令(XV)。
3.權(quán)利要求1的系統(tǒng)還包括一種控制指令,其是包含用于間接執(zhí)行VLIW用途的地址偏移和指向基地址寄存器的基指針的裝入/修改VLIW指令(LV)。
4.權(quán)利要求1的系統(tǒng),其中在把功能指令存入VIM之前從該功能指令剝離分組位組和單元字段位組以產(chǎn)生更緊湊的存儲(chǔ)結(jié)果。
5.權(quán)利要求1的系統(tǒng),其中在把控制指令存儲(chǔ)到VIM前從功能指令剝離分組位組和單元字段位組并且把至少一個(gè)替代位替換到分組或單元字段的位組位置上。
6.權(quán)利要求5的系統(tǒng),其中替代位是使能/禁止位。
7.權(quán)利要求5的系統(tǒng),其中替代位是操作碼擴(kuò)充位。
8.權(quán)利要求5的系統(tǒng),其中替代位是寄存器文件擴(kuò)充位。
9.權(quán)利要求5的系統(tǒng),其中替代位是條件執(zhí)行擴(kuò)充位。
10.權(quán)利要求8的系統(tǒng)還包括多個(gè)執(zhí)行單元,并采用第一排和第二排寄存器以及寄存器文件擴(kuò)充位,該多個(gè)執(zhí)行單元對(duì)第一排寄存器或?qū)Φ诙偶拇嫫髯x或?qū)憽?br>
11.權(quán)利要求1的系統(tǒng)還包括用于存儲(chǔ)功能指令的第二寄存器;用于連接第一寄存器的一個(gè)輸出端和第二寄存器的一個(gè)輸入端的一條旁路通路;以及一種選擇機(jī)制,用于選擇不把功能指令裝入VIM中而將它從第一寄存器送到第二寄存器的旁路操作。
12.權(quán)利要求11的系統(tǒng),其中在把控制指令存儲(chǔ)到第二寄存器之前替換一個(gè)或多個(gè)分組位和單元字段位。
13.權(quán)利要求1的系統(tǒng),還包括至少一個(gè)通過(guò)網(wǎng)絡(luò)接口連接和第一PE連接的附加PE,及每個(gè)PE具有一個(gè)相關(guān)的和一個(gè)接收端口連接的群集交換器,接收端口由群集交換器控制。
14.權(quán)利要求13的系統(tǒng),其中相關(guān)的群集交換器包含一個(gè)互連的多路復(fù)用器,以提供群集PE內(nèi)PE之間的獨(dú)立通路。
15.權(quán)利要求1的系統(tǒng),還包括一個(gè)和第一PE連接的并且向第一PE提供控制指令和所述功能指令的順序處理機(jī)(SP),控制指令為執(zhí)行VLIW指令(XV)或裝入/修改VLIW指令(LV)中的一種,XV指令和LV指令二者都包括用于間接執(zhí)行VLIW目的的地址偏移及基指針。
16.權(quán)利要求15的系統(tǒng),還包括至少一個(gè)和SP連接的附加PE,及向第一PE以及所述至少一個(gè)附加PE二者同步地提供所述控制指令,以使當(dāng)在相同的VIM地址上執(zhí)行不同VLIW時(shí)所述各PE運(yùn)行成同步多指令多數(shù)據(jù)流(SMIMD)機(jī)否則所述PE將運(yùn)行成SMID機(jī)。
17.權(quán)利要求16的系統(tǒng),其中多個(gè)PE和SP連接,并且多個(gè)PE組織成由一個(gè)或多個(gè)PE構(gòu)成的第一和第二分組。
18.權(quán)利要求17的系統(tǒng),其中在一個(gè)操作周期期間第一分組PE在第一VIM地址上間接在某VLIW指令上操作,并且在該操作周期期間第二分組PE在相同的第一VIW地址上間接在某不同的VLIW指令上操作。
19.權(quán)利要求17的系統(tǒng),其中多個(gè)PE遵循通信控制的接收模型操作,在接收模型下每個(gè)PE具有一個(gè)接收端口并控制在該接收端口是否接收數(shù)據(jù)。
20.權(quán)利要求19的系統(tǒng),其中每個(gè)PE具有一個(gè)和接收端口連接的輸入多路復(fù)用器并且通過(guò)控制所述輸入多路復(fù)用器而控制通信。
21.權(quán)利要求19的系統(tǒng),其中多個(gè)PE編程成通過(guò)存儲(chǔ)協(xié)同指令協(xié)同操作,從而每個(gè)PE具有規(guī)定一條經(jīng)其另一個(gè)PE為所述多個(gè)PE中的每個(gè)在相同的位置可得到數(shù)據(jù)的通路的接收指令。
22.權(quán)利要求17的系統(tǒng),還包括用于把各個(gè)PE屏蔽成ON或屏蔽成OFF的屏蔽機(jī)制。
23.權(quán)利要求22的系統(tǒng),其中在裝入VLIW操作期間為屏蔽成ON的PE裝入VIM并且不為屏蔽成OFF的PE裝入VIM。
24.權(quán)利要求17的系統(tǒng),其中在相同的周期內(nèi)不同的PE執(zhí)行不同的VLIW。
25.權(quán)利要求1的系統(tǒng),其中VIM包括用于存儲(chǔ)下述類型的功能指令的槽組存儲(chǔ)單元指令;裝入單元指令;算術(shù)邏輯單元指令;乘法累積單元指令;或者數(shù)據(jù)選擇單元指令。
26.權(quán)利要求25的系統(tǒng),其中使用多個(gè)PE并且不同的任何關(guān)聯(lián)著一個(gè)或多個(gè)VLIW槽,以允許在相同的周期中由PE同時(shí)在不同的任何上執(zhí)行多個(gè)操作。
27.一種超長(zhǎng)指令字(VLIW)處理系統(tǒng)包括具有VLIW存儲(chǔ)器(VIM)的第一處理部件(PE),用于把VLIW存儲(chǔ)到某規(guī)定的VIM地址中的各槽中;第一寄存器,用于存儲(chǔ)控制指令和功能指令;一個(gè)預(yù)譯碼器,用于通過(guò)譯碼多個(gè)分組位而區(qū)分控制指令和功能指令;以及一種裝入機(jī)制,用于根據(jù)對(duì)所述控制指令的所述譯碼把各功能指令裝入到VIM的各所述槽中的一個(gè)適當(dāng)?shù)牟壑小?br>
28.權(quán)利要求27的VLW處理系統(tǒng)還包括一個(gè)順序處理機(jī)(SP)控制器,該SP控制器向各PE發(fā)送裝入VLIW(LV)定界符,LV定界符后面跟著一串要裝入到所述VIM中由該LV定界符規(guī)定的某VIM地址上的指令。
29.一種帶有至少二個(gè)處理部件(PE)的單指令多數(shù)據(jù)流(SIMD)機(jī),所述SIMD機(jī)中的每個(gè)PE借助由某執(zhí)行VLIW(XV)指令啟動(dòng)的間接執(zhí)行和借助各PE中相同VIM地址上存儲(chǔ)的不同VLIW指令而間接地在VLIW存儲(chǔ)器(VIM)中存儲(chǔ)的VLIW指令上操作。
30.權(quán)利要求29的SIMD機(jī),其中XV指令包括用于間接執(zhí)行VLIW目的的用于每個(gè)PE的偏移地址和對(duì)基地址寄存器的指針。
31.權(quán)利要求29的SIMD機(jī),其中利用裝入控制指令(LV)把指令存儲(chǔ)到多個(gè)PEVIM中,該LV建立裝入過(guò)程并按接收到多個(gè)PE的VIM中裝入指令。
32.權(quán)利要求30的SIMD機(jī)還包括一個(gè)SIMD順序處理器(SP)控制器,其中通過(guò)該SIMD SP控制器向各PE發(fā)送控制指令VL和LV。
33.一種間接超長(zhǎng)指令字(VLIW)處理方法,包括取出要存儲(chǔ)到第一處理器件(PE)中的VLIW指令存儲(chǔ)器(VIM)里的第一VLIW功能指令,所述VLIW功能指令具有多個(gè)定義指令類型的分組位和多個(gè)定義執(zhí)行單元類型的單元字段位;把第一功能指令存儲(chǔ)到第一寄存器中;利用一個(gè)預(yù)譯碼器對(duì)每個(gè)分組位和多個(gè)單元字段位譯碼;以及根據(jù)所述譯碼利用一種所述VIM的裝入機(jī)制把該功能指令裝入到所述VIM中的適當(dāng)?shù)刂诽帯?br>
34.權(quán)利要求33的方法,還包括接收一個(gè)控制指令的步驟,該控制指令是包含用于間接執(zhí)行VLIW目的的地址偏移和指向基地址寄存器的基指針的執(zhí)行VLIW指令(XV)。
35.權(quán)利要求33的方法,還包括接收一個(gè)控制指令的步驟,該控制指令是包含用于間接執(zhí)行VLIW目的的地址偏移和指向基地址寄存器的基指針的裝入/修改VLIW指令(LV)。
36.權(quán)利要求33的方法,還包括在把功能指令存入VIM之前從該功能指令中剝離分組位組和單元字段位組以產(chǎn)生更緊湊的存儲(chǔ)結(jié)果的步驟。
37.權(quán)利要求33的方法,還包括把控制指令存儲(chǔ)到VIM前從功能指令中剝離分組位組和單元字段位組并且把至少一個(gè)替代位增加到分組或單元字段的位組位置上的步驟。
38.權(quán)利要求33的方法,還包括接收旁路指令并在不把第一VLIW功能指令裝入VIM下把第一VLIW功能指令存儲(chǔ)到第二寄存器中的步驟。
39.權(quán)利要求33的方法,還包括從和第一PE連接的順序處理機(jī)(SP)中接收送至第一PE的控制指令和所述功能指令二者的步驟,控制指令或?yàn)閳?zhí)行VLIW指令(XV)或?yàn)檠b入/修改VLIW指令(LV),XV指令和LV指令二者都包含用于間接執(zhí)行VLIW目的的地址偏移及基指針。
40.一種超長(zhǎng)指令字(VLIW)處理方法,包括取出要存儲(chǔ)到第一處理部件(PE)的VLIW存儲(chǔ)器(VIM)中的功能指令,以把VLIW指令存儲(chǔ)到某規(guī)定的VIM地址上的各槽中;把第一功能指令和控制指令二者存儲(chǔ)到第一寄存器中;利用一個(gè)預(yù)譯碼器譯碼多個(gè)分組位,以便區(qū)分控制指令和功能指令;以及根據(jù)對(duì)所述控制指令的所述譯碼把功能指令存儲(chǔ)到VIM里的所述各槽中的一個(gè)適當(dāng)?shù)牟壑小?br>
41.權(quán)利要求38的VLIW方法,還包括從一個(gè)順序處理機(jī)(SP)控制器中接收裝入VLIW(LV)定界符的步驟,LV定界符后面跟著一串要裝入到所述VIM中由該LV定界符規(guī)定的某VIM地址上的指令。
全文摘要
一種SIMD機(jī)(160)采用多個(gè)在其中以有效方式消除了通信危險(xiǎn)的平行處理機(jī)(PE)(104)。和執(zhí)行指令及定界符指令一起采用間接超長(zhǎng)指令字指令存儲(chǔ)器(UIM)(160)??刹捎闷帘螜C(jī)制來(lái)控制哪些PE可使其UIM得到裝入。此外,最好采用操作的接收模型。在一個(gè)方面,每個(gè)PE操作以控制一個(gè)選擇從哪個(gè)PE接收的交換器(107)。本發(fā)明提出一種更好的用于執(zhí)行平行算法的機(jī)器組織以減少硬件成本和復(fù)雜性并同時(shí)保持SIMD機(jī)和MIMD機(jī)二者的最佳特征以及使通信等待時(shí)間為最小。本發(fā)明對(duì)SIMD間接超長(zhǎng)指令字(iVLIW)處理部件造成一級(jí)MIMD計(jì)算自主性并同時(shí)保持SIMD機(jī)組織中使用的單個(gè)控制線程。從而,用術(shù)語(yǔ)同步MIMD(SMIMD)描述本方法。
文檔編號(hào)G06F9/38GK1278342SQ98810767
公開(kāi)日2000年12月27日 申請(qǐng)日期1998年11月6日 優(yōu)先權(quán)日1997年11月7日
發(fā)明者格拉爾德·G·皮查奈克, 托馬斯·L·德拉本能托特, 朱安·奎萊爾莫·萊維拉, 戴維·卡爾·斯特魯貝, 格萊森·莫里斯 申請(qǐng)人:博普斯公司