專利名稱:用于數(shù)據(jù)處理系統(tǒng)的單元式引擎的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及一種用于數(shù)據(jù)處理系統(tǒng)的引擎,并且具體涉及一種用于數(shù)據(jù)處理系統(tǒng)的單元式引擎(cellular engine),所述數(shù)據(jù)處理系統(tǒng)實現(xiàn)主動式相聯(lián)存儲器或相聯(lián)引擎,以提高數(shù)據(jù)處理速度和效率。
背景技術(shù):
自動化或半自動化數(shù)據(jù)處理系統(tǒng)在多種應(yīng)用中都是集成組件。通常,數(shù)據(jù)管理系統(tǒng)被嵌入到大型的計算機化設(shè)備或系統(tǒng)內(nèi),并且諸如通過執(zhí)行必要的算術(shù)操作數(shù)、數(shù)據(jù)變換等等對那些運行在大型計算機化系統(tǒng)中的應(yīng)用提供輔助和便利。
正如已知的那樣,可以將基本的數(shù)據(jù)處理系統(tǒng)分類為單指令、單數(shù)據(jù)流(SISD)裝置,并且典型地以它們最簡單的表達形式來使用處理器、接口和存儲器裝置。所述處理器響應(yīng)用戶或整個系統(tǒng)的另一個組件所輸入的指令來執(zhí)行有指導(dǎo)的任務(wù)(directed task)。在執(zhí)行其指定的任務(wù)過程中,所述處理器依賴接口向存儲器傳遞諸如數(shù)據(jù)請求之類的命令,以及通過該接口接收存儲在存儲器裝置內(nèi)的指定數(shù)據(jù)。
已知數(shù)據(jù)處理系統(tǒng)大都使用常規(guī)編址的存儲器裝置。也就是說,已知的數(shù)據(jù)系統(tǒng)使用了在其中包含已定義的本地語系(locale)的存儲器裝置,每一個本地語系都具有其自己的特殊地址。按這種方式,要是處理器希望將存儲在地址A上數(shù)值加上存儲在地址B上的數(shù)值,該存儲器裝置就會前轉(zhuǎn)到存儲器內(nèi)的特定的已編址位置或單元,并且經(jīng)由接口將這些數(shù)值傳遞給發(fā)生適當(dāng)求和的處理器。在這類系統(tǒng)中,集成組件的特性和功能,也就是處理器和存儲器裝置的特性和功能都是意義明確的而且是互不相同的。圖1描繪出了這類已知的數(shù)據(jù)處理系統(tǒng),在其中處理器2響應(yīng)經(jīng)由輸入線4輸入的任務(wù)來進行操作。爾后,利用接口6向存儲器裝置8傳遞諸如數(shù)據(jù)請求之類的指令,以及借此來接收存儲在存儲器裝置8內(nèi)的指定數(shù)據(jù)。
同時,還已知的是數(shù)據(jù)處理系統(tǒng)可以包含一個以上的處理器和存儲器,并且進一步講,所述這些多個組件都可以是執(zhí)行多指令流的系統(tǒng)的一部分。可以把這些多指令流多數(shù)據(jù)流(MIMD)裝置視作為緊耦合SISD裝置的大型集合,在其中系統(tǒng)中的每一個處理器雖然是與其它集成處理器整體協(xié)同工作的,但是負責(zé)較大任務(wù)的指定部分。也就是說,MIMD裝置的效能通常受限于那些特定的場合(arenas),在這里,待解決的問題適于被分解成多個相似的又相對獨立的子問題。MIMD裝置的那些集成組件的特性和功能同樣也是意義明確的而且互不相同。
另一種已知的數(shù)據(jù)處理系統(tǒng)包含單指令流多數(shù)據(jù)流(SIMD)裝置。這些SIMD裝置使用了任意數(shù)量的處理器,全部以彼此同步的方式來執(zhí)行相同程序,但是每個處理器都將當(dāng)前指令所指定的操作符作用于不同的操作數(shù)并由此產(chǎn)生其自己的結(jié)果。SIMD裝置中的處理器訪問集成存儲器以獲取操作數(shù)并存儲結(jié)果。同樣,SIMD裝置的那些集成組件的特性和功能都是意義明確的并且互不相同,因為計算是由必須具備對存儲器的某種類型的訪問以完成其作業(yè)的處理器來執(zhí)行的。
盡管已知的數(shù)據(jù)處理系統(tǒng)因此能夠處理大量的數(shù)據(jù),但是處理器和存儲器裝置的已定義的且不變的特性限制了可以完成各種操作的速度和效率。
此外,還已經(jīng)構(gòu)造出了使用非常規(guī)編址的其他類存儲器的各種不同的結(jié)構(gòu)。通常,將這些存儲器稱為“相聯(lián)(associative)”存儲器,并且正如所表明的那樣,這些存儲器不是按各數(shù)據(jù)位在存儲器內(nèi)的位置來對這些數(shù)據(jù)位進行編目錄(catalog)。相反,相聯(lián)存儲器按其中所存儲的信息的特性或固有性質(zhì)來對它們的數(shù)據(jù)位進行“編址”。也就是說,相聯(lián)存儲器內(nèi)的數(shù)據(jù)不是通過它們位置的名稱來標(biāo)識的,而是根據(jù)存儲在存儲器的每個特定單元中的數(shù)據(jù)的屬性來標(biāo)識的。
在大多數(shù)相聯(lián)存儲器裝置中,對全部所存儲數(shù)據(jù)附加固定尺寸的關(guān)鍵字字段。然后,可以利用搜索關(guān)鍵字從相聯(lián)存儲器裝置中選擇其所附加的關(guān)鍵字字段與該搜索關(guān)鍵字相匹配的一個特定數(shù)據(jù)字段或多個數(shù)據(jù)字段,而不管其命名的位置為何,以供根據(jù)指定的指令來進行后續(xù)的處理。
因此,盡管相聯(lián)存儲器的實施方式是已知的,但是這些裝置總是被用作為已知的數(shù)據(jù)處理系統(tǒng)內(nèi)部的專用塊或組件,所述已知的數(shù)據(jù)處理系統(tǒng)采用了標(biāo)準(zhǔn)的處理器、接口以及常規(guī)編址的存儲器。也就是說,盡管已知的相聯(lián)存儲器不采用常規(guī)的編址協(xié)議,但是它們自身并不能不依賴已知的處理器和外部存儲器而以與已知的SISD、SIMD和MIMD結(jié)構(gòu)相一致的方式來處理信息。
鑒于上述問題和考慮,因此本發(fā)明試圖通過使用主動相聯(lián)存儲器來提供一種克服上述缺陷的用于數(shù)據(jù)處理系統(tǒng)的引擎,所述主動相聯(lián)存儲器使用可變尺寸關(guān)鍵字,通過有選擇地既充當(dāng)處理器又充當(dāng)存儲器,其各單元在進行它們的作業(yè)時不必訪問獨立的存儲塊,因此實質(zhì)上縮短了處理、計算和通信時間。
發(fā)明內(nèi)容
本發(fā)明的一個目的是提供一種有效的數(shù)據(jù)處理系統(tǒng)。
本發(fā)明的另一個重要方面是,提供一種用于數(shù)據(jù)處理系統(tǒng)的單元式引擎,其按照提高數(shù)據(jù)處理速度和效率的方式實現(xiàn)主動相聯(lián)存儲器或相聯(lián)引擎裝置。
本發(fā)明的另一個重要方面是,提供一種用于數(shù)據(jù)處理系統(tǒng)的單元式引擎,其實現(xiàn)主動相聯(lián)存儲器或相聯(lián)引擎裝置,通過有選擇地既充當(dāng)處理器又充當(dāng)存儲器,主動,所述主動相聯(lián)存儲器或相聯(lián)引擎裝置的各單元不必訪問獨立的存儲塊以便完成它們的作業(yè)。
本發(fā)明的另一個重要方面是,提供一種用于數(shù)據(jù)處理系統(tǒng)的單元式引擎,其實現(xiàn)主動相聯(lián)存儲器或相聯(lián)引擎,所述主動相聯(lián)存儲器或相聯(lián)引擎的各個單元能夠根據(jù)由全局傳播的指令或查詢而設(shè)置的它們各自狀態(tài)來有選擇地處理給定指令。
本發(fā)明的另一個重要方面是,提供一種用于數(shù)據(jù)處理系統(tǒng)的單元式引擎,其實現(xiàn)主動相聯(lián)存儲器或相聯(lián)引擎,所述主動相聯(lián)存儲器或相聯(lián)引擎的各個單元,能夠都在單個時鐘周期之內(nèi)根據(jù)它們各自的狀態(tài),有選擇地并行處理指定指令。
本發(fā)明的另一個重要方面是,提供一種用于數(shù)據(jù)處理系統(tǒng)的單元式引擎,其實現(xiàn)允許使用可變長度關(guān)鍵字字段的主動存儲器裝置或單元式引擎。
本發(fā)明的另一個重要方面是,提供一種用于數(shù)據(jù)處理系統(tǒng)的單元式引擎,其實現(xiàn)主動存儲器或單元式引擎,所述主動存儲器或單元式引擎是同構(gòu)的,由此在執(zhí)行程序期間,允許在不同的時間把存儲在存儲器中的完全相同的信息塊作為關(guān)鍵字字段或數(shù)據(jù)字段(的一部分)。
本發(fā)明的另一個目的是,提供一種用于有效的數(shù)據(jù)處理系統(tǒng)的單元式引擎,其使得在主動相聯(lián)存儲器內(nèi)可進行搜索空間的動態(tài)限定(dynamic limitation)。
本發(fā)明的另一個目的是,提供一種用于有效的數(shù)據(jù)處理系統(tǒng)的單元式引擎,其提供了對單元陣列任一端的有選擇的可訪問性。
本發(fā)明的另一個目的是,提供用于有效的數(shù)據(jù)處理系統(tǒng)的引擎,其能夠調(diào)節(jié)相聯(lián)存儲器內(nèi)的兩個或多個單元之間的數(shù)據(jù)傳輸。
根據(jù)本發(fā)明的一個實施例,一種數(shù)據(jù)處理系統(tǒng)包括含有n個單元的相聯(lián)存儲器,n個單元中的每一個都包含一處理電路。利用控制器來向相聯(lián)存儲器發(fā)出多條指令中的一條,而利用時鐘裝置每秒輸出由預(yù)定數(shù)目的時鐘周期組成的同步時鐘信號。所述時鐘裝置向相聯(lián)存儲器輸出同步時鐘信號,并且所述控制器在其中一個時鐘周期內(nèi)同時地將多條指令中的一條全局地傳遞給所有n個單元。
通過整體考慮說明書、權(quán)利要求和附圖,本發(fā)明的這些及其它目的以及它們的優(yōu)選實施例會變得清晰明了。
圖1是舉例說明已知的SISD數(shù)據(jù)處理結(jié)構(gòu)的框圖。
圖2是示出根據(jù)本發(fā)明的一個實施例的、數(shù)據(jù)處理系統(tǒng)的一般配置的框圖,所述數(shù)據(jù)處理系統(tǒng)包括存儲器引擎和同步時鐘元件。
圖3是示出圖2中所示的存儲器引擎的更詳細的框圖。
圖4是示出根據(jù)本發(fā)明的一個實施例的、單元或處理元件的結(jié)構(gòu)的框圖。
圖5是示出代碼轉(zhuǎn)換器的結(jié)構(gòu)的框圖。
具體實施例方式
圖2描繪出了控制器100(下文中稱為笛卡爾控制器(CC))與單元式引擎102(下文中稱為聯(lián)結(jié)引擎(CE))之間的結(jié)構(gòu)關(guān)系。利用同步時鐘電路106來協(xié)調(diào)CC 100和CE 102的操作,以便可以由CC100發(fā)出多條指令中的一條并傳送給CE 102,以供并行執(zhí)行和處理。
所述時鐘電路106每秒能夠輸出預(yù)定數(shù)目的時鐘周期,而所述CC100能夠執(zhí)行內(nèi)部操作,這樣CC 100可以執(zhí)行多種內(nèi)部操作中的一種,同時在單個時鐘周期內(nèi)并行地向CE 102發(fā)出多條指令中的一條。
正如在圖3中描繪出的那樣,所述CE 102是由主動單元或處理元件的陣列組成的,并被具體化為聯(lián)結(jié)存儲器(CM)104和包含多個矢量108的RAM(隨機存取存儲器),每一個矢量都具有與CM 104相同的存儲容量,并因此能夠有選擇地存儲CM 104的全部內(nèi)容。也就是說,所述CE 102包括具有n個單元的CM 104和相關(guān)聯(lián)的矢量存儲器108,其在串行的CC 100的控制之下。在本發(fā)明的一個實施例中,正如將在稍后更詳細論述的那樣,存儲器矢量108的用途是使得能夠在比CM 104內(nèi)可容納的字符串更長的字符串上執(zhí)行搜索查找、插入和刪除操作,并且用來提供低成本的實施方案和降低功耗。
應(yīng)該理解,在不脫離本發(fā)明的較寬范方面的前提下,本發(fā)明要覆蓋這樣的情況,CE 102可以具有任何數(shù)量的特定電路的配置,只要CC100能夠向CE 102發(fā)出命令和從它那里接收數(shù)據(jù)。
參考圖3,CM 104中的每一個n位單元都包含下列寄存器·′mark′ ——1位標(biāo)記寄存器;·′w′——主寄存器,它扮演著類似常規(guī)設(shè)計中累加器的角色,同時它還與數(shù)量等于存儲器矢量數(shù)目的許多通用寄存器相關(guān)聯(lián)。
記號設(shè)x是長度m的位字段,而y是長度n的位字段,則{x,y}表示通過把y添加到x上而構(gòu)成的長度m+n的位字段??梢詫⒃撚浱柾茝V到任何數(shù)量的位字段,例如,對三個變量的位字段{a,b,c}={a,{b,c}}={{a,b},c}假設(shè)r是(n+1)位寄存器并且n≥k≥0,則r[k]表示從右端(k=0)至左端(k=n)開始數(shù)起的r中的第(k+1)位。
假設(shè)r是(n+1)位寄存器并且n≥m>k≥0,則r[m:k]表示長度m-k+1的位字段,{r[m],r[m-1],...,r[k]}。
因此,在CM 104內(nèi)的m位單元的內(nèi)容是其w寄存器的內(nèi)容加上其mark寄存器的內(nèi)容單元[m-1:0]={mark,value}數(shù)值[m-2:0]={ext,symbol}符號[m-3:0]其中ext代表擴展位,用來創(chuàng)建特定數(shù)值(對于ext=1的情況)的字母表。
本發(fā)明的一個重要方面在于CM 104內(nèi)的每個m位單元除存儲數(shù)據(jù)之外主動處理數(shù)據(jù)的能力。數(shù)據(jù)的處理可以發(fā)生在每個m位單元內(nèi)部,或者通過影響預(yù)定單元的左側(cè)或右側(cè)緊鄰的單元來發(fā)生數(shù)據(jù)的處理。應(yīng)當(dāng)注意的是通過按這種方式提高CM 104內(nèi)的每個m位單元的功能性,本發(fā)明表現(xiàn)出系統(tǒng)級行為,也就是更復(fù)雜的行為,并且超過了其它數(shù)據(jù)處理系統(tǒng)的性能。
本發(fā)明的另一個重要方面是通過將要“標(biāo)記”的每個單元的能力來部分地實現(xiàn)CM 104內(nèi)的單元級的主動處理數(shù)據(jù)的能力,這是條件或?qū)傩缘囊徊糠?,將它指定為其本身或CM 104內(nèi)的相鄰單元隨后將執(zhí)行任務(wù)或執(zhí)行操作數(shù)的單元。
返回到圖3,對于本發(fā)明的目的而言,如果一位的內(nèi)部單元寄存器mark=1,則把單元視為“已標(biāo)記”,而如果mark=0則視為“未標(biāo)記”。此外,所述CM104具有能通過發(fā)出專用指令而被動態(tài)調(diào)節(jié)的“左界限”和“右界限”。另外,CM 104的“搜索空間”是由左界限和右界限劃界的CM 104的分段(segment)。應(yīng)該理解在不脫離本發(fā)明的較寬范方面的前提下,內(nèi)部單元寄存器mark在長度方面可以大于一位。
正如先前提到的那樣,提供給CE 102的代碼的執(zhí)行是由CC 100來驅(qū)動的。所述CE 102/CC 100接口使用了四個專用寄存器,如圖3所示·′INR′112——數(shù)據(jù)輸入寄存器——所有CE 102指令都從INR(由CC 100提供的)獲取它們的(即時)數(shù)據(jù)變量(如果有的話);·′OUTR′114據(jù)輸出——包含“無標(biāo)記”位和數(shù)值。如果至少其中一個單元被標(biāo)記,則OUTR包含0,后面跟隨第一個已標(biāo)記單元中所含的數(shù)值;否則OUTR包含1,后面跟隨與實施方案相關(guān)的特定數(shù)值,比如11...1;·′OPR′116——指令寄存器,其包含當(dāng)前CE 102指令的操作碼(該源是CC 100指令中的專用字段);·′VAR′118——用于矢量存儲器的地址寄存器。所述VAR 118寄存器是由特定的CC 100指令來更新的,并且被用作顯式操作矢量的指令的變量;所述VAR 118寄存器還被用在執(zhí)行涉及與單元相關(guān)聯(lián)的通用寄存器的所有操作中。
正如進一步在圖3中表示的那樣,可以有選擇地利用輸入/輸出線120來訪問CM 104的兩端。正如在此使用的那樣,所述輸入/輸出線120具有下列含義·′left_in′122={w,mark,eq,first},作為默認所有都為0(eq=1是指單元中的兩個操作數(shù)相等;first=1是指所述單元是第一個已標(biāo)記的單元);·′left_out′124={w,mark,eq,first},來自第一個單元;·′right_in′126={w,mark,eq,first},作為默認所有都為0;·′right_out′128={w,mark,eq,first},來自最后一個單元。
圖4示出了CM 104內(nèi)的m位單元的內(nèi)部結(jié)構(gòu)的一個實施例。如圖4所示,每個單元的內(nèi)部結(jié)構(gòu)都包括下列電路·ALU算術(shù)邏輯部件130,其執(zhí)行加法、減法、比較和逐位邏輯功能·leftMux多工器131,其從下列中選擇用于ALU的左操作數(shù)w存儲在累加寄存器134中的數(shù)值in自輸入寄存器112c中接收的數(shù)值memOut從由向量地址寄存器VAR 118編址的矢量存儲器中讀取的數(shù)值·aluMux多工器133,其從下列中選擇將要加載到累加寄存器(w 134)中的數(shù)值w存儲在累加寄存器134中的數(shù)值fromLeft存儲在左側(cè)單元的累加寄存器中的數(shù)值fromRight存儲在右側(cè)單元的累加器中的數(shù)值A(chǔ)LU 130的輸出·w累加寄存器134·mark標(biāo)記寄存器·三態(tài)輸出緩沖器·DECODE組合電路137,其根據(jù)由下列產(chǎn)生的局部環(huán)境來對指令進行譯碼localFlags由ALU產(chǎn)生的leftFlags接收自左側(cè)單元的標(biāo)志rightFlags接收自右側(cè)單元的標(biāo)志class_i接收自TRANSCODER(代碼轉(zhuǎn)換器)的分類碼TRANSCODER產(chǎn)生·用于leftMux、rightMux、ALU、aluMux、mark、三態(tài)緩沖器的命令代碼·來自鄰近單元的標(biāo)志·用于TRANSCODER的單元的state_i位代碼轉(zhuǎn)換器圖5示出了TRANSCODER(代碼轉(zhuǎn)換器)的組織,它是與CE 102集成的電路并且充當(dāng)控制互連網(wǎng)絡(luò)的一部分。也就是說,利用TRANSCODER,根據(jù)如下內(nèi)容·其狀態(tài)位(狀態(tài)i),(即局部狀態(tài))·所有單元的狀態(tài)位(即全局狀態(tài))·將要執(zhí)行的當(dāng)前指令,將每個單元分到下面的類別·已標(biāo)記單元·第一個已標(biāo)記單元·最后一個已標(biāo)記單元·在界限范圍內(nèi)的單元(該界限存儲在TRANSCODER的存儲區(qū)中)·主動單元。
應(yīng)該理解在不脫離本發(fā)明的較寬范方面的前提下,可以將其它的單元類別添加到上述類別中。
所述TRANSCODER從每個單元中接收狀態(tài)位(state_0,state_1,...,state_(n-1)),并將指定它所歸屬的各類的3位代碼(class_0,class_1,...,class_(n-1))送回到每個單元。
代碼轉(zhuǎn)換器的構(gòu)造塊(building block)為·OR前束(Prefixes)主要根據(jù)將要執(zhí)行的分類來計算單元的相對位置的電路140·界限存儲器用于存儲關(guān)于所述界限的信息的兩個鎖存器141·MUXs多工器142,其根據(jù)當(dāng)前指令選擇每個單元的類可以按以下兩種不同的方式來實現(xiàn)TRANSCODER,以便最優(yōu)化它的尺寸和速度·用于小n值的線性版本·(用于大n值的)二維版本,其包含LINE TRANSCODER和COLUMN TRANSCODER,每一個都具有O(n1/2)量級的尺寸。
因此,本發(fā)明的另一個重要方面是CC 100的這種能力CC 100向CE 102發(fā)出命令,并且在單個時鐘周期內(nèi)使這類指令并行地廣播到CM 104內(nèi)的所有單元。例如,那些符合由來自CC 100的指令所設(shè)定標(biāo)準(zhǔn)的單元,可以在相同的時鐘周期中同時獨立地和有選擇地對自身進行標(biāo)記,由此,在后面時鐘周期內(nèi),可以根據(jù)該分類結(jié)果,再次在單個時鐘周期內(nèi)并行地執(zhí)行后續(xù)的指令或操作。
因此,本發(fā)明的另一個重要方面是TRANSCODER(代碼轉(zhuǎn)換器)不僅依照其局部狀態(tài)(例如,其已標(biāo)記或未標(biāo)記的狀態(tài))對每個單元進行分類,而且還按照其全局狀態(tài)和當(dāng)前指令來對每個單元進行分類。也就是說,當(dāng)由TRANSCODER(代碼轉(zhuǎn)換器)進行的單元分類的一個方面可能是特定單元的局部狀態(tài)為“已標(biāo)記”,但是對于這類單元而言同樣重要的是要“知曉”它相對于所有其它單元的“全局狀態(tài)”,比如“已標(biāo)記”的單元是“第一個已標(biāo)記”單元還是“最后一個已標(biāo)記”單元。
通過一個示例,假設(shè)在先前的時鐘周期內(nèi),經(jīng)由來自CC 100的指令所指出的某些單元的屬性,對CM 104內(nèi)的這些單元進行了如下的標(biāo)記(已標(biāo)記的單元在該串中用粗體數(shù)字表示)CM2 5 2 7 6 4 10...
假設(shè)接下來,在單個時鐘周期內(nèi)又并行地將指令“addr 5”廣播到CM 104內(nèi)的所有單元,其中矢量存儲器108中的矢量5如下第5行3 4 7 8 2 5 12...
CM 104內(nèi)的所有已標(biāo)記的單元于是將把它們的數(shù)據(jù)字段的內(nèi)容添加到矢量5中的對應(yīng)元素的內(nèi)容中,其結(jié)果是這種操作被存儲在CM104的各個單元中,如下CM5 9 2 7 6 9 10...
正如上面的示例所述的那樣,CM 104內(nèi)的每個單元的已標(biāo)記/未標(biāo)記狀態(tài)不受由CC 100發(fā)出的特定指令的影響(指在本例中;盡管正如所提到的那樣,某些指令可能會影響CM 104內(nèi)的每個單元的已標(biāo)記的狀態(tài))。此外,所有加法運算都在單個時鐘周期內(nèi)被同時地(也就是說,彼此并行地)且在每個已標(biāo)記單元內(nèi)執(zhí)行。
正如在上面的示例中進一步示出的那樣,本發(fā)明的數(shù)據(jù)處理系統(tǒng)能夠在系統(tǒng)級上來實現(xiàn)對數(shù)值的矢量定義的操作;在這個示例中,矢量數(shù)值是CM 104數(shù)據(jù)和矢量存儲器108的矢量5。在這點上,本發(fā)明的數(shù)據(jù)處理系統(tǒng)包括具有帶有主動單元(即,處理元件)線性陣列的CM 104的CE,其中CM 104內(nèi)的每個單元都具有一個或多個標(biāo)記位和一個累加器(134);與此同時,在每個單元的級別上,可以把所有矢量的對應(yīng)元素看作為一組相關(guān)聯(lián)的寄存器。(因此,相關(guān)聯(lián)的寄存器的數(shù)目等于矢量108的數(shù)目)。
此外,本發(fā)明的另一個重要方面是通過分別分別地使各累加器與CM 104內(nèi)的每個單元的單獨關(guān)聯(lián)的寄存器連結(jié),本發(fā)明的數(shù)據(jù)處理系統(tǒng)提供了對數(shù)值矢量的操作,由此可實現(xiàn)矩陣計算等等。
與在本發(fā)明的背景技術(shù)中所論述的SIMD和MIMD系統(tǒng)相比,本發(fā)明的數(shù)據(jù)處理系統(tǒng)不依賴于處理器與所鏈接的存儲器裝置的操作之間的不變而嚴(yán)格的劃界。
在本發(fā)明的數(shù)據(jù)處理系統(tǒng)中,可以存儲用于在CM 104中進行搜索的消息,但不是用常規(guī)的“存儲器地址”概念;盡管CM 104內(nèi)的每個單元自身都可以響應(yīng)全局發(fā)出的命令有選擇地處理信息,但是它本身并不是處理器,不過正如前面所論述的那樣,CM 104內(nèi)的每個單元都包含處理電路;而且本發(fā)明的數(shù)據(jù)處理系統(tǒng)的性能嚴(yán)格來講是其尺寸的線性函數(shù),并且它可以按其它已知的可編程機器所未曾表現(xiàn)的方式而適用于寬范圍的程序/應(yīng)用。
應(yīng)該理解本發(fā)明的數(shù)據(jù)處理系統(tǒng)在CM 104中的n個單元中的每一個單元內(nèi)所包含的處理電路的特性和配置方面不受限制。
依照本發(fā)明,所述CE 102具有豐富的指令集,按下列類來加以分組·全局管理指令——CM 104界限的設(shè)置和重置;在CM 104和RAM矢量108之間交換數(shù)據(jù);·搜索/訪問指令——對CM 104的一個或多個單元進行的相聯(lián)訪問;·標(biāo)記操縱指令;·數(shù)據(jù)存儲和傳送指令;·算術(shù)和邏輯指令;·條件指令;和·變址。
注意用于CE 102的所有指令都是在單個機器周期內(nèi)執(zhí)行的。
所述CE 102它自身不具備對程序存儲器進行訪問以取出其指令的訪問權(quán)——每一個周期它的單元都等待獲取專用寄存器中的操作碼,但是它要采用不同的實體,在本例中,利用CC 100來為它們做這事;所述代碼為順序的并且需要有單個訪問點以將其取出。因此,所述CC 100的主要工作就是驅(qū)動CE 102的程序的執(zhí)行,即,取出將由單獨的單元執(zhí)行的指令,并將它們放置在內(nèi)部寄存器中;同時,它充當(dāng)?shù)紺E 102的網(wǎng)關(guān)并且因此負責(zé)所有的輸入/輸出交互。所述CC 100還執(zhí)行簡單的順序操作,若沒有所述操作的話則它將不可能為這類機器寫入有意義的代碼這類操作的一類就是所謂的“控制原語”,即那些用于編碼決策序列(例如,if、while、repeat等等)的指令。
偽代碼在下文中,利用偽代碼來非正式地規(guī)定CE 102的大部分指令的語義,偽代碼使用一種受C程序設(shè)計語言啟發(fā)的記號。應(yīng)該理解這種說明并不是要限制指令實際實現(xiàn)的表示,而是本發(fā)明還設(shè)想了其它的表示。
專用偽語句forall描述由單元組并行執(zhí)行的動作;其文法可以表示為·<forall statement>∷=forall[(<forall condition>)]<statement>;·<forall condition>∷=marked|in searchSpace;考慮forall的下列三種變化1.forall<action>;
2.forall(in searchSpace)<action>;3.forall(marked)<action>;變化1可用于規(guī)定由CM 104中的所有單元執(zhí)行的動作。變化2可用于涉及搜索空間中的所有單元的動作(參見上面),而變化3適用于當(dāng)所有已標(biāo)記的單元執(zhí)行指定的動作時的情形。
在每個單元的級別上,執(zhí)行所有指令所需要的完整數(shù)據(jù)集連同它們在偽代碼中使用的名稱,是·單元的寄存器(包括相關(guān)聯(lián)的寄存器),即w,mark,r0,r1,...,rN;和·單元左右兩邊相鄰單元的內(nèi)容,即分別為right_w、right_mark和left_w、left_mark。
同時,能夠在單元級別上來評價對first_mark和last_mark的預(yù)測;前者對CM中最左側(cè)的已標(biāo)記單元為真,而后者對于最右側(cè)的已標(biāo)記單元為真。
全局管理指令·ldl<value>即時加載行(load line immediate);根據(jù)由對VAR的輸入產(chǎn)生的數(shù)值所選擇的存儲器矢量來還原所有CM單元(標(biāo)記和w寄存器)的內(nèi)容CM=RAM[VAR];stl<value>即時存儲行(store line immediate);將所有CM單元的內(nèi)容(標(biāo)記和w寄存器)保存至由對VAR的輸入產(chǎn)生的數(shù)值所選擇的存儲器矢量中RAM[VAR]=CM;llim左界限(left limit);將搜索空間的左界限設(shè)置為第一個已標(biāo)記單元。不影響標(biāo)記。注意,所述左界限是受搜索/訪問指令的影響的最左側(cè)單元。
rlim右界限(right limit);將搜索空間的右界限設(shè)置為第一個已標(biāo)記單元。不影響標(biāo)記。注意,所述右界限是受基本搜索/訪問指令的影響的最右側(cè)單元。
droplim刪除界限;將左界限設(shè)置為最左側(cè)的CM單元,而將右界限設(shè)置為最右側(cè)的CM單元。不影響標(biāo)記。
搜索/訪問指令注意在本節(jié)中描述的所有指令僅僅在搜索空間的界限范圍內(nèi)動作;變量是在輸入寄存器(INR)中可用的m-1位數(shù)值。
find<value>標(biāo)識所有具有等于所述變量的數(shù)值的單元。對于每個單元而言,當(dāng)發(fā)現(xiàn)匹配時將其右側(cè)相鄰的單元的標(biāo)記位設(shè)置為1;將所有其它的標(biāo)記位設(shè)置為0forall(in searchSpace)mark=(left_w==INR)?1:0;match<value>將存儲在所有已標(biāo)記單元中的數(shù)值同所述變量進行比較。如果在指定的單元中發(fā)現(xiàn)匹配,則就將下列單元的標(biāo)記位設(shè)置為1;將所有其它的標(biāo)記位設(shè)置為0forall(in searchSpace)mark=(left_mark && left_w==INR)?1:0;lfind<value>向左查找并標(biāo)記(find and mark left);標(biāo)識所有具有等于所述變量的數(shù)值的單元。對于每個單元而言,當(dāng)發(fā)現(xiàn)匹配時將其左側(cè)相鄰的單元的標(biāo)記位設(shè)置為1;將所有其它的標(biāo)記位設(shè)置為0forall(in searchSpace)mark=(right_w==INR)?1:0;
lmatch<value>向左匹配并標(biāo)記(match and mark left);將存儲在所有已標(biāo)記單元中的數(shù)值同所述變量進行比較。如果在指定的單元中發(fā)現(xiàn)匹配,則將前面的單元的標(biāo)記位設(shè)置為1;將所有其它的標(biāo)記位設(shè)置為0forall(in searchSpace)mark=(right_mark && right_w==INR)?1:0;markall標(biāo)記搜索空間中的所有單元forall(in searchSpace)mark=1;addmark<value>標(biāo)記所有包含等于所述變量的數(shù)值的單元;不影響其它的標(biāo)記forall(in searchSpace){if(w==INR)mark=1;}mark<value>標(biāo)記所有包含等于所述變量的數(shù)值的單元;將所有其它的標(biāo)記位設(shè)置為0。
forall(in searchSpace)mark=(w==INR)?1:0;clr<value>清除所有包含等于所述變量的數(shù)值的單元的標(biāo)記位。
forall(in searchSpace){if(w==INR)mark=0;}
標(biāo)記操縱指令clrf清除第一個;清除第一個(即,最左側(cè)的)標(biāo)記。
forall{if(first_mark)mark=0;}trace向左復(fù)制標(biāo)記。
forall{if(right_mark)mark=1;if(mark)mark=1;}keepl保留最后一個;除了最后(即,最右側(cè)的)一個之外清除所有標(biāo)記。
forall{if(!last_mark)mark=0;}clrl清除最后一個;清除最后一個(即,最右側(cè)的)標(biāo)記。
forall{if(last_mark)mark=0;}left將所有標(biāo)記向左側(cè)移動一個單元。
Forall
mark=right_mark;right將所有標(biāo)記向右側(cè)移動一個單元。
forallmark=left_mark;cright有條件的右移;將所有標(biāo)記向右側(cè)移動一個單元,除非它們右側(cè)相鄰的單元包含等于所述變量的數(shù)值,而在這樣情況下用11...1來替換該數(shù)值。
forall{if(left_mark && w==INR){mark=0;w=11...1;}if(left_mark && w?。絀NR)mark=1;if(mark)mark=0;}cleft有條件的左移;將所有標(biāo)記向左側(cè)移動一個單元,除非它們左側(cè)相鄰的單元包含指定的數(shù)值,而在這樣情況下用11..1來代替此數(shù)值。
forall{if(right_mark && w==INR){mark=0;w=11..1;}if(right_mark && w!=INR)mark=1;
if(mark)mark=0;}數(shù)據(jù)存儲和轉(zhuǎn)移指令nop無操作reset<value>存儲所有單元中的數(shù)值。不影響標(biāo)記。
forallw=INR;get將存儲在第一個已標(biāo)記單元中的數(shù)值發(fā)送到CM輸出,并且其標(biāo)記向右移動一個位置。不影響其它的標(biāo)記。
forall{if(first_mark){OUTR=w;mark=0;}if(left_mark is first_mark)mark=1;}back將存儲在第一個已標(biāo)記單元中的數(shù)值發(fā)送到CM輸出,并且其標(biāo)記向左移動一個位置。不影響其它的標(biāo)記。
forall{if(first_mark){OUTR=w;mark=0;}if(right_mark is first_mark)
mark=1;}set<value>存儲第一個已標(biāo)記單元中的數(shù)值。不影響標(biāo)記。
forall(marked){if(first_mark)w=INR;}setall<value>存儲所有已標(biāo)記單元中的數(shù)值。不影響標(biāo)記。
forall(marked)w=INR;ins<value>在第一個已標(biāo)記的單元之前插入數(shù)值。將插入點右側(cè)的所有單元的內(nèi)容向右轉(zhuǎn)移一個位置。注意在該進程中,最初保存在最右側(cè)單元中的數(shù)值被丟失。
forall{if(right of first_mark)w=left_w;if(first_mark)w=INR;mark=left_mark;}del刪除存儲在第一個已標(biāo)記單元中的數(shù)值。所述單元保持已標(biāo)記的狀態(tài),并且將刪除點右側(cè)的所有單元的內(nèi)容向左轉(zhuǎn)移一個位置。
forall{if(first_mark)w=right_w;if(right of first_mark){
w=right_w;mark=right_mark;}}cpr向右復(fù)制;對于所有已標(biāo)記的單元,將整個單元內(nèi)容(w寄存器和標(biāo)記)復(fù)制到右側(cè)相鄰的單元。
forall{if(left_mark)w=left_w;mark=left_mark;}cpl向左復(fù)制;對于所有已標(biāo)記的單元,將整個單元內(nèi)容(w寄存器和標(biāo)記)復(fù)制到左側(cè)相鄰的單元。
forall{if(right_mark)w=right_w;mark=right_mark;}ccpr<value>有條件的向右復(fù)制;對于所有已標(biāo)記的單元,將保存在寄存器w中的數(shù)值復(fù)制到右側(cè)相鄰的單元;也復(fù)制標(biāo)記,除非在w寄存器中存儲有等于所述變量的數(shù)值。
forall{if(left_mark && left_w?。絀NR){w=left_w;mark=1;}else
mark=0;}ccpl<value>有條件的向左復(fù)制;對于所有已標(biāo)記的單元,將保存在寄存器w中的數(shù)值復(fù)制到左側(cè)相鄰的單元;也復(fù)制標(biāo)記,除非在w寄存器中存儲有等于所述變量的數(shù)值。
forall{if(right_mark && right_w?。絀NR){w=right_w;mark=1;}elsemark=0;}ld<address>即時加載;對于所有已標(biāo)記的單元,將保存在寄存器<r>中的數(shù)值加載到w寄存器中,以作為由對VAR的輸入產(chǎn)生的數(shù)值所選擇的RAM矢量的一部分。
forall(marked)w=<r>;st<address>即時存儲;對于所有已標(biāo)記的單元而言,將保存在w寄存器中的數(shù)值移動到寄存器<r>,以作為由對VAR的輸入產(chǎn)生的數(shù)值所選擇的RAM矢量的一部分。
forall(marked)w=<r>;算術(shù)和邏輯指令所有算術(shù)指令都是對用2的補碼來表示的m-2位數(shù)字執(zhí)行的操作數(shù)<op>是其中一個相關(guān)聯(lián)的單元寄存器(由對VAR的輸入產(chǎn)生的數(shù)值所選擇的RAM矢量的一部分),或者是由控制器提供的m-2位數(shù)字<op>∷=INR[m-3:0](即時數(shù)值)|r(RAM矢量元素)add<op>把操作數(shù)加到所有已標(biāo)記單元的w寄存器中。不影響標(biāo)記。
forall(marked)w+=<op>;fadd<op>完全添加,其中把右側(cè)擴展當(dāng)作為進位(參見add)。
forall{if(mark)w+=(<op>+right_w[m-2]);if(left_mark)w[m-2]=0;}sub<op>從存儲在所有已標(biāo)記單元的w寄存器中的數(shù)值中減去操作數(shù)數(shù)值。不影響標(biāo)記。
forall(marked)w-=<op>;fsub<op>完全減去,其中把右側(cè)擴展當(dāng)作為進位(參見sub)。
forall{if(mark)w-=(<op>+right_w[m-2]));if(left_mark)w[m-2]=0;}
half[<op>]對于所有已標(biāo)記的單元,將寄存器操作數(shù)除以2并將結(jié)果存儲在w寄存器中。不影響標(biāo)記。
forall(marked)w={<op>[m-2:m-3],<op>[m-3:1];fhalf[<op>]完全半數(shù);對于所有已標(biāo)記單元,將寄存器操作數(shù)除以2并將結(jié)果存儲在w寄存器中,如果左側(cè)單元的最低有效位是1的話,則將100..0添加到其中。不影響標(biāo)記。
forall(marked)w={<op>[m-2],left_w
,<op>[m-3:1];lt<op>小于(或等于);對于所有已標(biāo)記的單元,檢查寄存器w是否持有少于或等于保存在<op>中的數(shù)值的值;如果w<o(jì)p,則將w擴展位設(shè)置為1;如果op>w,則將該標(biāo)記位設(shè)置為0。
forall(marked){if(w<<op>)w[m-2]=1;if(w><op>)mark=0;}flt<op>完全lt;對于所有已標(biāo)記的單元,當(dāng)w<o(jì)p或其左側(cè)相鄰的單元具有設(shè)置為1的w擴展位時,將該擴展位設(shè)置為1;清除左側(cè)擴展位,并且如果w>op的話,則也清除該標(biāo)記。這條指令是結(jié)合測試時使用的,以用來對多個連續(xù)的單元進行比較。
forall{if(mark && (w<<op>‖left_w[m-2]))w[m-2]=1;if(right_mark)w[m-2]=0;
if(mark && w>op &&!left_w[m-2])mark=0;}gt<op>大于(或等于);對于所有已標(biāo)記的單元,檢查寄存器w是否具有大于或等于保存在<op>中的數(shù)值的值;如果w>op的話,則將w擴展位設(shè)置為1;如果w<o(jì)p,則將該標(biāo)記位設(shè)置為0。
forall(marked){if(w><op>)w[m-2]=1;if(w<<op>)mark=0;}fgt<op>對于所有已標(biāo)記的單元,當(dāng)w>op或其左側(cè)相鄰的單元具有設(shè)置為1的w擴展位時,將該擴展位設(shè)置為1;該左側(cè)擴展位被清除,并且如果w<o(jì)p,則也清除該標(biāo)記。這條指令是結(jié)合測試時使用的,以用來對多個連續(xù)的單元進行比較。
forall{if(mark &&(w><op>‖left_w[m-2]))w[m-2]=1;if(right_mark)w[m-2]=0;if(mark &&w<o(jì)p &&!left_w[m-2])mark=0;}test對于所有包含等于INR的數(shù)值的已標(biāo)記單元,將標(biāo)記位設(shè)置為0,并且如果左側(cè)單元的擴展位是1,則將寄存器w賦值為11..1并清除左側(cè)單元的擴展位。
forall{if(right_mark && right_w==INR)w[m-2]=0;if(mark && w==INR && left_w[m-2])w=11...1;else if(mark && w==INR)mark=0;}and<op>按位與;對于所有已標(biāo)記的單元,在寄存器w和<o(jì)p>之間執(zhí)行按位與。不影響標(biāo)記。
forall(marked)w&=<op>;or<op>按位或;對于所有已標(biāo)記的單元,在寄存器w和<op>之間執(zhí)行按位或。不影響標(biāo)記。
forall(marked)w|=<op>;xor<op>按位異或;對于所有已標(biāo)記的單元,在寄存器w和<o(jì)p>之間執(zhí)行按位異或。不影響標(biāo)記。
forall(marked)w^=<op>;條件指令下列兩條指令使用操作數(shù)寄存器<r>(由對VAR的輸入產(chǎn)生的數(shù)值所選擇的RAM矢量的一部分)以及來自于INR的m-1位數(shù)值。
<r>∷=w(用于寄存器w)|r(RAM矢量元素)cond<value>[<r>]對于所有已標(biāo)記的單元,檢查在兩個操作數(shù)之間執(zhí)行按位“與”操作之后是否有至少一位被設(shè)置為1。
forall(marked)mark=((<r>&INR)?。?)?1:0;ncond<value>[<r>]對于所有已標(biāo)記的單元,檢查在兩個操作數(shù)之間執(zhí)行按位“與”操作的結(jié)果是否為0。
forall(marked)mark=((<r>&INR)==0)?1:0;變址指令index對于所有已標(biāo)記的單元,將寄存器w賦值為單元相對于CM最左側(cè)單元(它具有變址0)的相對位置的數(shù)值。
正如能夠從上述說明書和附圖中看到的那樣,本發(fā)明以這樣一種方式提供了處理數(shù)據(jù)的新穎方法,所述方式就是提供增強的處理能力,并顯著降低處理時間、硅面積和功耗。正如所論述的那樣,本發(fā)明的數(shù)據(jù)處理系統(tǒng)并行地向各CM單元提供任何指定的指令及其要傳遞的操作數(shù),所述各CM單元在相同的時鐘周期內(nèi)執(zhí)行所述指令。
本發(fā)明的數(shù)據(jù)處理系統(tǒng)的又一個內(nèi)在的優(yōu)點就在于單元式引擎內(nèi)的每個單元不僅在單個時鐘周期內(nèi)同時執(zhí)行指令,而且還通過利用局部狀態(tài)信息和全局狀態(tài)信息兩者來動態(tài)限制那些執(zhí)行全局廣播指令的這些單元的能力。具體來講,通過在單獨的單元級別上使用標(biāo)記位,相聯(lián)存儲器內(nèi)的實際單元能夠以一種迄今為止未知的方式來影響已標(biāo)記單元左側(cè)或右側(cè)的那些單元。因此,在系統(tǒng)級別上,本發(fā)明通過相聯(lián)機制,也就是說,通過CM 104內(nèi)的各單元的內(nèi)容的特性或?qū)傩远瞧渲刑囟ǖ闹付ㄎ恢玫刂?,提供了有選擇性的激活或已標(biāo)記狀態(tài)的更改。
因此,本發(fā)明在非常鄰近的級別上將處理和存儲器加以組合,這意味著CM 104的單獨單元不需訪問獨立的存儲塊以便完成其作業(yè)。此外,操作數(shù)在單元級上駐留在它們自己的局部空間中,因此使結(jié)果保持不動,從而節(jié)省了通信和處理時間、硅面積和功率。
應(yīng)當(dāng)注意的是某些指令操作數(shù)實際上是在全局廣播指令的同時由CC 100廣播出去的。
盡管已經(jīng)參照優(yōu)選實施例描述了本發(fā)明,但是本領(lǐng)域的技術(shù)人員能夠理解,在不脫離本發(fā)明的實質(zhì)范圍的情況下,可以作出各種明顯的改變,也可以用等同物來代替其元件。因此,本發(fā)明不想局限于所公開的特定實施例,而是本發(fā)明包括所有落入所附權(quán)利要求的范圍內(nèi)的實施例。
權(quán)利要求
1.一種用于數(shù)據(jù)處理系統(tǒng)的單元式引擎,所述引擎包括具有n個單元的數(shù)據(jù)裝置,所述n個單元中的每一個都能夠存儲m位;包含p個矢量的矢量存儲器,所述p個矢量中的每一個都具有n×m位的存儲容量;控制互連網(wǎng)絡(luò),其依據(jù)所述n個單元中的每一個的局部狀態(tài)來對所述n個單元中的每一個進行分類;指令寄存器,用于接收從控制器發(fā)出的指令;時鐘裝置,用于每秒輸出由預(yù)定數(shù)目的時鐘周期組成的同步時鐘信號,所述時鐘裝置向所述數(shù)據(jù)裝置和所述矢量存儲器輸出所述同步時鐘信號;并且其中所述引擎在其中一個所述時鐘周期內(nèi),同時地向所有所述n個單元全局地傳遞所述指令,全部在一個所述時鐘周期內(nèi),由所述數(shù)據(jù)裝置內(nèi)所選定的各單元,依照通過所述控制互連網(wǎng)絡(luò)進行的所述n個單元中每一個的所述分類,并行執(zhí)行所述指令。
2.根據(jù)權(quán)利要求1所述的用于數(shù)據(jù)處理系統(tǒng)的單元式引擎,其中所述指令是由所述數(shù)據(jù)裝置內(nèi)的所有所述n個單元并行執(zhí)行的。
3.根據(jù)權(quán)利要求1所述的用于數(shù)據(jù)處理系統(tǒng)的單元式引擎,進一步包括數(shù)據(jù)互連網(wǎng)絡(luò),其將每個單元分別連接到它的右側(cè)相鄰單元和左側(cè)相鄰單元。
4.根據(jù)權(quán)利要求1所述的用于數(shù)據(jù)處理系統(tǒng)的單元式引擎,其中所述控制互連網(wǎng)絡(luò)依據(jù)所述n個單元中的每一個的局部狀態(tài)和所有所述n個單元的全局狀態(tài)來對所述n個單元中的每一個進行分類。
5.根據(jù)權(quán)利要求4所述的用于數(shù)據(jù)處理系統(tǒng)的單元式引擎,其中所述n個單元中的每一個都包括狀態(tài)字段和數(shù)據(jù)字段,所述狀態(tài)字段包括用于對所述n個單元中每一個的局部狀態(tài)進行編碼的標(biāo)記位;并且其中所述標(biāo)記位處于已標(biāo)記狀態(tài)和未標(biāo)記狀態(tài)中的一個狀態(tài)。
6.根據(jù)權(quán)利要求5所述的用于數(shù)據(jù)處理系統(tǒng)的單元式引擎,其中所述狀態(tài)字段是利用相聯(lián)機制加以修改的,所述相聯(lián)機制是通過屬于特定指令子集的所述指令的執(zhí)行來實現(xiàn)的。
7.根據(jù)權(quán)利要求6所述的用于數(shù)據(jù)處理系統(tǒng)的單元式引擎,其中所述數(shù)據(jù)字段是通過依照由所述控制互連網(wǎng)絡(luò)進行的所述n個單元中每一個的分類來執(zhí)行所述n個單元中的邏輯和算術(shù)指令來修改的。
8.根據(jù)權(quán)利要求3所述的用于數(shù)據(jù)處理系統(tǒng)的單元式引擎,其中所述數(shù)據(jù)互連網(wǎng)絡(luò)和所述控制互連網(wǎng)絡(luò)兩者都是可擴展的。
9.根據(jù)權(quán)利要求1所述的用于數(shù)據(jù)處理系統(tǒng)的單元式引擎,其中所述數(shù)據(jù)裝置是相聯(lián)存儲器裝置。
10.根據(jù)權(quán)利要求9所述的用于數(shù)據(jù)處理系統(tǒng)的單元式引擎,其中所述相聯(lián)存儲器裝置中的所述n個單元中的每一個包括處理電路。
11.一種用于數(shù)據(jù)處理系統(tǒng)的引擎,所述引擎包括包含n個單元的存儲器裝置;控制器,用于有選擇地向所述存儲器裝置發(fā)出指令;單元分類裝置,其與所述n個單元中的每一個的局部狀態(tài)相關(guān)聯(lián)地進行操作;時鐘裝置,用于每秒輸出由預(yù)定數(shù)目的時鐘周期組成的同步時鐘信號,所述時鐘裝置向所述存儲器裝置和所述控制器輸出所述同步時鐘信號;并且其中所述引擎在一個所述時鐘周期內(nèi)全局地向所有n個單元同時傳遞所述指令;并且其中,由所述存儲器內(nèi)的所選定的各單元依據(jù)由所述單元分類裝置指向的所述n個單元的所述局部狀態(tài)來執(zhí)行所述指令,所述指令的所述執(zhí)行是在一個所述時鐘周期內(nèi)、在所述所選定的各單元中的每一個單元中同時發(fā)生的。
12.根據(jù)權(quán)利要求11所述的用于數(shù)據(jù)處理系統(tǒng)的引擎,其中所述指令是由所述存儲器裝置內(nèi)的所有所述n個單元執(zhí)行的。
13.根據(jù)權(quán)利要求11所述的用于數(shù)據(jù)處理系統(tǒng)的引擎,其中所述存儲器裝置不是常規(guī)編址的。
14.根據(jù)權(quán)利要求11所述的用于數(shù)據(jù)處理系統(tǒng)的引擎,其中所述存儲器裝置是相聯(lián)存儲器裝置。
15.根據(jù)權(quán)利要求11所述的用于數(shù)據(jù)處理系統(tǒng)的引擎,其中所述n個單元中的每一個都包括處理電路。
16.根據(jù)權(quán)利要求15所述的用于數(shù)據(jù)處理系統(tǒng)的引擎,其中所述處理電路具有累加器。
17.根據(jù)權(quán)利要求11所述的用于數(shù)據(jù)處理系統(tǒng)的引擎,其中所述n個單元中的每一個都包括具有標(biāo)記位的字段;并且所述局部狀態(tài)反映所述標(biāo)記位的已標(biāo)記狀態(tài)和未標(biāo)記狀態(tài)中的一個狀態(tài)。
18.根據(jù)權(quán)利要求11所述的用于數(shù)據(jù)處理系統(tǒng)的引擎,其中所述單元分類裝置與所述n個單元的全局狀態(tài)相關(guān)聯(lián)地進行操作;并且其中,所述指令是由所述存儲器裝置內(nèi)的所選定的各單元,依據(jù)由所述單元分類裝置指向的所述n個單元的所述局部狀態(tài)和所述全局狀態(tài)來執(zhí)行的,所述指令的所述執(zhí)行是在一個所述時鐘周期內(nèi)、在所述所選定的各單元中的每一個單元中同時發(fā)生的。
19.根據(jù)權(quán)利要求18所述的用于數(shù)據(jù)處理系統(tǒng)的引擎,其中由所述分類裝置使用的所述全局狀態(tài)是通過所有所述n個單元的所述局部狀態(tài)加以確定的。
20.根據(jù)權(quán)利要求17所述的用于數(shù)據(jù)處理系統(tǒng)的引擎,其中所述指令只在具有設(shè)置為所述已標(biāo)記狀態(tài)的所述標(biāo)記位的那些n個單元內(nèi)加以執(zhí)行。
21.根據(jù)權(quán)利要求11所述的用于數(shù)據(jù)處理系統(tǒng)的引擎,其中所述n個單元中的每一個都包括具有多個標(biāo)記位的字段。
22.一種數(shù)據(jù)處理系統(tǒng),所述數(shù)據(jù)處理系統(tǒng)包括包含n個單元的相聯(lián)存儲器裝置,所述n個單元中的每一個都包括處理電路和m位的存儲容量;控制器,用于向所述相聯(lián)存儲器發(fā)出多條指令中的一條;時鐘裝置,用于每秒輸出由預(yù)定數(shù)目的時鐘周期組成的同步時鐘信號,所述時鐘裝置向所述相聯(lián)存儲器裝置和所述控制器輸出所述同步時鐘信號;并且其中所述控制器在一個所述時鐘周期內(nèi)、全局地向所有所述n個單元同時傳遞所述多條指令中的一條。
23.根據(jù)權(quán)利要求22所述的數(shù)據(jù)處理系統(tǒng),進一步包括分類裝置,用于有選擇地與所述n個單元中的每一個的局部狀態(tài)相關(guān)聯(lián)地進行操作;并且其中所述多條指令中的一條由所述相聯(lián)存儲器裝置內(nèi)的所選定的各單元,依據(jù)由所述分類裝置指向的所述n個單元的所述局部狀態(tài)來執(zhí)行,所述指令的所述執(zhí)行在一個所述時鐘周期內(nèi)、在所述所選定的各單元中的每一個單元中同時發(fā)生。
24.根據(jù)權(quán)利要求23所述的數(shù)據(jù)處理系統(tǒng),其中所述n個單元中的每一個都包括狀態(tài)字段和數(shù)據(jù)字段,所述狀態(tài)字段包括用于對所述n個單元中的每一個的局部狀態(tài)進行編碼的標(biāo)記位,由此指示所述n個單元中每一個的已標(biāo)記狀態(tài)和未標(biāo)記狀態(tài)中的一個狀態(tài)。
25.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“l(fā)oad lineimmediate”命令,借此用所述“l(fā)oad line immediate”命令所指示的數(shù)據(jù)來代替處于所述已標(biāo)記狀態(tài)的所有所述n個單元的內(nèi)容。
26.根據(jù)權(quán)利要求25所述的數(shù)據(jù)處理系統(tǒng),進一步包括包含p個矢量的矢量存儲器,所述p個矢量中的每一個包含n個元素,所述n個元素中的每一個都具有m位;并且由所述“l(fā)oad line immediate”命令指示的所述數(shù)據(jù)對應(yīng)于所述p個矢量中的一個。
27.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),進一步包括由所述控制器發(fā)出的所述多條指令中的一條是“store lineimmediate”命令,借此將處于所述已標(biāo)記狀態(tài)的所有所述n個單元的內(nèi)容保存到所述“store line immediate”命令所指示的存儲器矢量中。
28.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“l(fā)eft limit”命令,借此將搜索空間的左界限設(shè)置為處于所述已標(biāo)記狀態(tài)下的所述n個單元的最左側(cè)單元。
29.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“right limit”命令,借此將搜索空間的右界限設(shè)置為處于所述已標(biāo)記狀態(tài)下的所述n個單元的最左側(cè)單元。
30.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中所述控制器可以在所述n個單元內(nèi)動態(tài)地限定搜索空間。
31.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“find”命令,借此來標(biāo)識保持有等于所述“find”命令所指示的變量的數(shù)值的所述n個單元中的每一個;并且其中,所述“find”命令在位于所述已標(biāo)識的n個單元右側(cè)的所述n個單元中的每一個中,將所述標(biāo)記位設(shè)置為所述已標(biāo)記狀態(tài),而在所有其它的所述n個單元中將所述標(biāo)記位設(shè)置為所述未標(biāo)記狀態(tài)。
32.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“match”命令,借此來標(biāo)識所述n個單元中的每一個,所述n個單元中的每一個具有處于所述已標(biāo)記狀態(tài)下的標(biāo)記位、并具有與所述“match”命令所指示的變量相匹配的所述數(shù)據(jù)字段;并且其中所述“match”命令在緊接所述已標(biāo)識的n個單元后面的所述n個單元中的每一個中,將所述標(biāo)記位設(shè)置為所述已標(biāo)記狀態(tài),而在所有其它的所述n個單元中將所述標(biāo)記位設(shè)置為所述未標(biāo)記狀態(tài)。
33.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“find and markleft”命令,借此來標(biāo)識保持有等于由所述“find and mark left”命令所指示的變量的數(shù)值的所述n個單元中的每一個;并且其中所述“find”命令在位于所述已標(biāo)識的n個單元左側(cè)的所述n個單元中的每一個中,將所述標(biāo)記位設(shè)置為所述已標(biāo)記狀態(tài),而在所有其它的所述n個單元中將所述標(biāo)記位設(shè)置為所述未標(biāo)記狀態(tài)。
34.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“match and markleft”命令,借此來標(biāo)識所述n個單元中的每一個,所述n個單元中的每一個具有處于所述已標(biāo)記狀態(tài)下的標(biāo)記位、并具有與所述“match”命令所指示的變量相匹配的所述數(shù)據(jù)字段;并且其中所述“match”命令在位于所述已標(biāo)識的n個單元左側(cè)的所述n個單元中的每一個中,將所述標(biāo)記位設(shè)置為所述已標(biāo)記狀態(tài)。
35.根據(jù)權(quán)利要求28所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“markall”命令,借此將所述搜索空間內(nèi)的所述n個單元中的每一個的所述標(biāo)記位設(shè)置為所述已標(biāo)記狀態(tài)。
36.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“addmark”命令,借此將包含等于由所述“addmark”命令所指示的變量的數(shù)值的所述n個單元中的每一個的所述標(biāo)記位設(shè)置為所述已標(biāo)記狀態(tài);并且所述“addmark”命令不影響任何其它的所述n個單元的所述標(biāo)記位。
37.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“mark”命令,借此將包含等于由所述“mark”命令所指示的變量的數(shù)值的所述n個單元中的每一個的所述標(biāo)記位設(shè)置為所述已標(biāo)記狀態(tài);并且所述“mark”命令在不包含等于由所述“mark”命令所指示的變量的數(shù)值的所述n個單元中的每一個中,將所述標(biāo)記位設(shè)置為所述未標(biāo)記狀態(tài)。
38.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“clr”命令,借此將包含等于由所述“clr”命令所指示的變量的數(shù)值的所述n個單元中的每一個的所述標(biāo)記位設(shè)置為所述未標(biāo)記狀態(tài)。
39.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“clear first”命令,借此將所述最左側(cè)的具有設(shè)置成所述已標(biāo)記狀態(tài)的所述標(biāo)記位的所述n個單元設(shè)置為所述未標(biāo)記狀態(tài)。
40.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“trace”命令,借此在所述相聯(lián)存儲器中向左側(cè)復(fù)制所有所述n個單元的所述標(biāo)記位。
41.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“keepl”命令,借此,將除了處于所述已標(biāo)記狀態(tài)下的所述n個單元的最右側(cè)之外的所有所述n個單元的所述標(biāo)記位設(shè)置為所述未標(biāo)記狀態(tài)。
42.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“clrl”命令,借此將處于所述已標(biāo)記狀態(tài)下的所述n個單元的最右側(cè)的所述標(biāo)記位設(shè)置為所述未標(biāo)記狀態(tài)。
43.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“l(fā)eft”命令,借此將所述n個單元的所有所述標(biāo)記位向左移一個單元。
44.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“right”命令,借此將所述n個單元的所有所述標(biāo)記位向右移一個單元。
45.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“cright”命令,借此將處于所述已標(biāo)記狀態(tài)下的所述n個單元的所有所述標(biāo)記位向右移一個單元至右側(cè)下一個單元,除非所述右側(cè)下一個單元包含等于所述“cright”命令所指示的變量的數(shù)值;并且當(dāng)所述右側(cè)下一個單元包含等于由所述“cright”命令所指示的變量的數(shù)值時,所述“cright”命令用預(yù)定值來代替所述右側(cè)下一個單元的所述數(shù)據(jù)字段。
46.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“cleft”命令,借此將處于所述已標(biāo)記狀態(tài)下的所述n個單元的所有所述標(biāo)記位向左移一個單元至左側(cè)下一個單元,除非所述左側(cè)下一個單元包含等于由所述“cleft”命令所指示的變量的數(shù)值;并且當(dāng)所述左側(cè)下一個單元包含等于由所述“cleft”命令所指示的變量的數(shù)值時,所述“cleft”命令用預(yù)定值來代替所述左側(cè)下一個單元的所述數(shù)據(jù)字段。
47.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“nop”命令,借此不執(zhí)行任何操作。
48.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“reset”命令,借此給所述n個單元的所述數(shù)據(jù)字段賦值為由所述“reset”命令所指示的數(shù)值。
49.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“get”命令,借此從所述相聯(lián)存儲器裝置中輸出存儲在處于所述已標(biāo)記狀態(tài)下的所述n個單元的最左側(cè)單元中的數(shù)值;并且將處于所述已標(biāo)記狀態(tài)下的所述最左側(cè)單元的所述標(biāo)記位向右移一個單元。
50.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“back”命令,借此從所述相聯(lián)存儲器裝置中輸出存儲在最左側(cè)的已標(biāo)記單元中的數(shù)值;并且將所述最左側(cè)的已標(biāo)記單元的所述標(biāo)記位向左移一個單元。
51.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“set”命令,借此將所述“set”命令所指示的數(shù)值存儲在處于所述已標(biāo)記狀態(tài)下的所述n個單元的最左側(cè)。
52.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“setall”命令,借此將所述“setall”命令所指示的數(shù)值存儲在處于所述已標(biāo)記狀態(tài)下的所有所述n個單元中。
53.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“ins”命令,借此在位于處在所述已標(biāo)記狀態(tài)下的所述n個單元的最左側(cè)之前的插入點上,將所述“ins”命令所指示的數(shù)值存儲在所述n個單元的其中一個中;并且所述“ins”命令將位于所述插入點右側(cè)的所述n個單元中的每一個的內(nèi)容向右移一個單元。
54.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“del”命令,借此刪除處于所述已標(biāo)記狀態(tài)下的所述n個單元的最左側(cè)的數(shù)據(jù)字段;并且所述“del”命令將位于所述最左側(cè)的已標(biāo)記單元右側(cè)的所述n個單元中的每一個的內(nèi)容向左移一個單元。
55.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“cpr”命令,借此將處于所述已標(biāo)記狀態(tài)下的所有所述n個單元的內(nèi)容向右拷貝一個單元。
56.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“cpl”命令,借此將處于所述已標(biāo)記狀態(tài)下的所有所述n個單元的內(nèi)容向左拷貝一個單元。
57.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“ccpr”命令,借此將處于所述已標(biāo)記狀態(tài)下的所有所述n個單元的內(nèi)容向右拷貝一個單元,包括拷貝所述已標(biāo)記狀態(tài);并且所述“ccpr”命令不拷貝這樣的所述n個單元的所述已標(biāo)記狀態(tài)其所述內(nèi)容等于由所述“ccpr”命令所指示的數(shù)值。
58.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“ccpl”命令,借此將處于所述已標(biāo)記狀態(tài)下的所有所述n個單元的內(nèi)容向左拷貝一個單元,包括拷貝所述已標(biāo)記狀態(tài);并且所述“ccpr”命令不拷貝這樣的所述n個單元的所述已標(biāo)記狀態(tài),其所述內(nèi)容等于所述“ccpl”命令所指示的數(shù)值。
59.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“l(fā)d”命令,借此將所述“l(fā)d”命令所指示的數(shù)值加載到處于所述已標(biāo)記狀態(tài)下的所有所述n個單元中的所述數(shù)據(jù)字段中。
60.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),進一步包括包含p個矢量的矢量存儲器;和由所述控制器發(fā)出的所述多條指令中的一條是“st”命令,借此將處于所述已標(biāo)記狀態(tài)下的所有所述n個單元中的所述數(shù)據(jù)字段的內(nèi)容拷貝到所述“st”命令所指示的所述p個矢量的其中一個矢量當(dāng)中的對應(yīng)位置上。
61.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“add”命令,借此將所述“add”命令所指示的數(shù)值增加到處于所述已標(biāo)記狀態(tài)下的所有所述n個單元當(dāng)中的所述數(shù)據(jù)字段。
62.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“fadd”命令,借此將所述“fadd”命令所指示的數(shù)值增加到處于所述已標(biāo)記狀態(tài)下的所有所述n個單元當(dāng)中的所述數(shù)據(jù)字段中;并且其中,在所述相聯(lián)存儲器裝置內(nèi)、位于處于所述已標(biāo)記狀態(tài)下的所述n個單元中每一個的右側(cè)的單元的所述數(shù)據(jù)字段的最左位充當(dāng)進位位。
63.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“sub”命令,借此從處于所述已標(biāo)記狀態(tài)下的所有所述n個單元中的所述數(shù)據(jù)字段中減去所述“sub”命令所指示的數(shù)值。
64.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的多條指令中的一條是“fsub”命令,借此從處于所述已標(biāo)記狀態(tài)下的所有所述n個單元中的所述數(shù)據(jù)字段中減去所述“fsub”命令所指示的數(shù)值;并且其中,在所述相聯(lián)存儲器裝置內(nèi)、位于處于所述已標(biāo)記狀態(tài)下的所述n個單元中每一個的右側(cè)的單元的所述數(shù)據(jù)字段的最左位充當(dāng)進位位。
65.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“half”命令,借此將處于所述已標(biāo)記狀態(tài)下的所有所述n個單元中的所述數(shù)據(jù)字段除以二。
66.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“fhalf”命令,借此將處于所述已標(biāo)記狀態(tài)下的所有所述n個單元中的所述數(shù)據(jù)字段除以二;并且其中,如果在所述相聯(lián)存儲器裝置內(nèi)、位于所述n個單元中每一個的左側(cè)的單元的最低有效數(shù)據(jù)位處于所述已標(biāo)記狀態(tài),則將所述數(shù)據(jù)字段的最左側(cè)位加一。
67.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“l(fā)t”命令,借此將所述“l(fā)t”命令所指示的數(shù)值與處于所述已標(biāo)記狀態(tài)下的所有所述n個單元中的所述數(shù)據(jù)字段進行比較;如果所述“l(fā)t”命令所指示的所述數(shù)值大于所述數(shù)據(jù)字段,則所述“l(fā)t”命令就將處于所述已標(biāo)記狀態(tài)下的所述n個單元的所述標(biāo)記位設(shè)置為所述未標(biāo)記狀態(tài);并且如果所述“l(fā)t”命令所指示的所述數(shù)值小于所述數(shù)據(jù)字段,則所述“l(fā)t”命令就將處于所述已標(biāo)記狀態(tài)下的所述n個單元的所述數(shù)據(jù)字段的最左側(cè)位設(shè)置為1。
68.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“flt”命令,借此將所述“flt”命令所指示的數(shù)值與處于所述已標(biāo)記狀態(tài)下的所有所述n個單元中的所述數(shù)據(jù)字段進行比較;如果所述“flt”命令所指示的所述數(shù)值大于所述數(shù)據(jù)字段,并且在所述相聯(lián)存儲器裝置內(nèi)、位于處于所述已標(biāo)記狀態(tài)下的所述n個單元中每一個的左側(cè)的單元的所述數(shù)據(jù)字段的最左側(cè)位是零,則所述“flt”命令將處于所述已標(biāo)記狀態(tài)下的所述n個單元的所述標(biāo)記位設(shè)置為所述未標(biāo)記狀態(tài);如果所述“flt”命令所指示的所述數(shù)值小于所述數(shù)據(jù)字段,則所述“flt”命令將處于所述已標(biāo)記狀態(tài)下的所述n個單元的所述數(shù)據(jù)字段的最左側(cè)位設(shè)置為1;如果在所述相聯(lián)存儲器裝置內(nèi)、位于處于所述已標(biāo)記狀態(tài)下的所述n個單元中每一個的左側(cè)的單元的所述最左側(cè)位是1,則所述“flt”命令將處于所述已標(biāo)記狀態(tài)下的所述n個單元的述數(shù)據(jù)字段的最左側(cè)位設(shè)置為1;并且所述“flt”命令將在所述相聯(lián)存儲器裝置內(nèi)、位于處于所述已標(biāo)記狀態(tài)下的所述n個單元中每一個的左側(cè)的單元的所述最左側(cè)位設(shè)置為0。
69.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“gt”命令,借此所述“gt”命令所指示的數(shù)值與處于所述已標(biāo)記狀態(tài)下的所有所述n個單元中的所述數(shù)據(jù)字段進行比較;如果所述“gt”命令所指示的所述數(shù)值小于所述數(shù)據(jù)字段,則所述“gt”命令就將處于所述已標(biāo)記狀態(tài)下的所述n個單元的所述標(biāo)記位設(shè)置為所述未標(biāo)記狀態(tài);并且如果所述“gt”命令所指示的所述數(shù)值大于所述數(shù)據(jù)字段,則所述“gt”命令就將處于所述已標(biāo)記狀態(tài)下的所述n個單元的所述數(shù)據(jù)字段的最左側(cè)位設(shè)置為1。
70.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“fgt”命令,借此將所述“fgt”命令所指示的數(shù)值與處于所述已標(biāo)記狀態(tài)下的所有所述n個單元中的所述數(shù)據(jù)字段進行比較;如果所述“fgt”命令所指示的所述數(shù)值小于所述數(shù)據(jù)字段,并且在所述相聯(lián)存儲器裝置內(nèi)、位于處于所述已標(biāo)記狀態(tài)下的所述n個單元中每一個的左側(cè)的單元的所述數(shù)據(jù)字段的最左側(cè)位是零,則所述“fgt”命令就將處于所述已標(biāo)記狀態(tài)下的所述n個單元的所述標(biāo)記位設(shè)置為所述未標(biāo)記狀態(tài);如果所述“fgt”命令所指示的所述數(shù)值大于所述數(shù)據(jù)字段,所述“fgt”命令就將處于所述已標(biāo)記狀態(tài)下的所述n個單元的所述數(shù)據(jù)字段的最左側(cè)位設(shè)置為1;如果在所述相聯(lián)存儲器裝置內(nèi)、位于處于所述已標(biāo)記狀態(tài)下的所述n個單元中每一個的左側(cè)的單元的所述最左位是1,則所述“fgt”命令就將處于所述已標(biāo)記狀態(tài)下的所述n個單元的所述數(shù)據(jù)字段的最左側(cè)位設(shè)置為1;并且所述“fgt”命令將在所述相聯(lián)存儲器裝置內(nèi)、位于處于所述已標(biāo)記狀態(tài)下的所述n個單元中每一個的左側(cè)的單元的所述最左側(cè)位設(shè)置為0。
71.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“test”命令,借此對于處于所述已標(biāo)記狀態(tài)下的、包含由所述“test”命令所指示的數(shù)值的所有所述n個單元,所述“test”命令將所述標(biāo)記位設(shè)置為所述未標(biāo)記狀態(tài);并且如果所有具有所述指示值的所述n個單元左側(cè)的單元的最左側(cè)位是1,則所述“test”命令就將預(yù)定值賦值給所有具有所述指示值的所述n個單元的所述數(shù)據(jù)字段;并且如果所述最左側(cè)位是1,則所述“test”命令就清除所有具有所述指示值的所述n個單元左側(cè)的所述單元的所述最左側(cè)位。
72.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“and”命令,借此對于處于所述已標(biāo)記狀態(tài)下的所有所述n個單元,所述“and”命令完成由所述“and”命令所指示的數(shù)值同處于所述已標(biāo)記狀態(tài)下的所有所述n個單元中的所述數(shù)據(jù)字段的按位“與”。
73.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“or”命令,借此對于處于所述已標(biāo)記狀態(tài)下的所有所述n個單元,所述“or”命令完成由所述“or”命令所指示的數(shù)值和處于所述已標(biāo)記狀態(tài)下的所有所述n個單元中的所述數(shù)據(jù)字段的按位“或”。
74.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“xor”命令,借此對于處于所述已標(biāo)記狀態(tài)下的所有所述n個單元,所述“xor”命令完成由所述“xor”命令所指示的數(shù)值和處于所述已標(biāo)記狀態(tài)下的所有所述n個單元中的所述數(shù)據(jù)字段的按位“異或”。
75.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“cond”命令,借此對于處于所述已標(biāo)記狀態(tài)下的所有所述n個單元,如果在由所述“cond”命令所指示的數(shù)值和處于所述已標(biāo)記狀態(tài)下的所有所述n個單元的所述數(shù)據(jù)字段之間的按位“與”操作的結(jié)果是0,則所述“cond”命令就將它們的已標(biāo)記狀態(tài)轉(zhuǎn)換為所述未標(biāo)記狀態(tài)。
76.根據(jù)權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“ncond”命令,借此對于處于所述已標(biāo)記狀態(tài)下的所有所述n個單元,如果在由所述“ncond”命令所指示的數(shù)值和處于所述已標(biāo)記狀態(tài)下的所有所述n個單元的所述數(shù)據(jù)字段之間的按位“與”操作的結(jié)果不是0,則所述“ncond”命令就將它們的已標(biāo)記狀態(tài)轉(zhuǎn)換為所述未標(biāo)記狀態(tài)。
77.根據(jù)權(quán)利要求71所述的數(shù)據(jù)處理系統(tǒng),其中由所述控制器發(fā)出的所述多條指令中的一條是“index”命令,借此對于處于所述已標(biāo)記狀態(tài)下的所有所述n個單元,所述“index”命令將表示所述已標(biāo)記的n個單元中每一個相對于所述n個單元的最左側(cè)的位置的一個數(shù)值賦給所述已標(biāo)記的n個單元中的每一個。
78.根據(jù)權(quán)利要求22所述的數(shù)據(jù)處理系統(tǒng),其中所述分類裝置判斷所述n個單元中的每一個的全局狀態(tài);并且其中所述多條指令中的所述一條是由所述相聯(lián)存儲器裝置內(nèi)的所選定的各單元,依據(jù)所述n個單元的所述局部狀態(tài)和所述全局狀態(tài)兩者來執(zhí)行的,所述指令的所述執(zhí)行是在一個所述時鐘周期內(nèi)、在所述所選定的各單元中的每一個單元中同時發(fā)生的。
79.根據(jù)權(quán)利要求22所述的數(shù)據(jù)處理系統(tǒng),其中所述相聯(lián)存儲器裝置允許使用可變長度的關(guān)鍵字字段。
80.根據(jù)權(quán)利要求78所述的數(shù)據(jù)處理系統(tǒng),其中所述可變長度的關(guān)鍵字字段包括數(shù)據(jù)字段和關(guān)鍵字字段,所述n個單元中的每一個都具有所述數(shù)據(jù)字段和所述關(guān)鍵字字段;并且其中在執(zhí)行所述多條指令中的一條期間,在不同的時間交替地把存儲在所述n個單元中的每一個中的數(shù)據(jù)看作所述數(shù)據(jù)字段和所述關(guān)鍵字字段的一部分。
81.一種處理數(shù)據(jù)的方法,所述方法包括以下步驟形成相聯(lián)存儲器裝置以包含n個單元;配置所述n個單元中的每一個以便包括處理電路;從控制器向所述相聯(lián)存儲器裝置發(fā)出多條指令中的一條;使用時鐘裝置,用于每秒輸出由預(yù)定數(shù)目的時鐘周期組成的同步時鐘信號,所述時鐘裝置向所述相聯(lián)存儲器裝置和所述控制器輸出所述同步時鐘信號;以及在一個所述時鐘周期內(nèi),全局地從所述控制器向所有所述n個單元同時傳遞所述多條指令中的一條。
82.一種數(shù)據(jù)處理系統(tǒng),所述數(shù)據(jù)處理系統(tǒng)包括包含n個單元的存儲器裝置,所述n個單元中的每一個都包括處理電路;控制器,用于向所述相聯(lián)存儲器裝置發(fā)出多條指令中的一條;時鐘裝置,用于每秒輸出由預(yù)定數(shù)目的時鐘周期組成的同步時鐘信號,所述時鐘裝置向所述相聯(lián)存儲器裝置和所述控制器輸出所述同步時鐘信號;和其中所述控制器在一個所述時鐘周期內(nèi),全局地向所有所述n個單元同時傳遞所述多條指令中的一條。
全文摘要
一種數(shù)據(jù)處理系統(tǒng)(102)包括包含n個單元的相聯(lián)存儲器裝置(104),n個單元中的每一個單元都包括處理電路(130)。利用控制器(100)向相聯(lián)存儲器裝置(104)發(fā)出多條指令中的一條,而利用時鐘裝置(106)每秒輸出由預(yù)定數(shù)目的時鐘周期組成的同步時鐘信號。所述時鐘裝置(106)向相聯(lián)存儲器裝置(104)和控制器輸出同步時鐘信號,所述控制器在一個時鐘周期之內(nèi)同時地將多條指令中的一條全局地傳遞給所有n個單元。
文檔編號G06F15/76GK1720516SQ200380105095
公開日2006年1月11日 申請日期2003年12月5日 優(yōu)先權(quán)日2002年12月5日
發(fā)明者格奧爾基·斯特芬, 戴恩·托梅斯庫 申請人:康奈克斯技術(shù)公司