專利名稱:具有內(nèi)部單元控制和處理的陣列結(jié)構(gòu)的制作方法
本發(fā)明涉及一種針對例如包含在單元陣列處理機中的相似處理機的矩形陣列的過程控制,特別是涉及對包含在單指令多數(shù)據(jù)處理機中的處理機的陣列及對這些處理機的控制。
單元陣列處理機已為人們所熟悉,其為比較簡單的、每個處理機單元僅與其最接近的相鄰單元相連結(jié)的處理機陣列。許多企業(yè)提供這種設備并且這種設備市場上也買得到。一臺常規(guī)處理機以順序方式一次處理一個數(shù)據(jù)項時,而一臺單元陣列處理機在一單指令流的控制下卻能在同一時刻處理許多數(shù)據(jù)目標。
使用這種處理機時,數(shù)據(jù)目標必須是同種類型的以適用于任何單獨指令,這樣將相同順序指令流應用到對這些數(shù)據(jù)目標同時進行運算才很有意義。這種類別的處理機稱為單指令多數(shù)據(jù)處理機(SIMD)。單元陣列處理機可包括一個單元矩形陣列,排列在具有M行和N列的矩陣中。
這些單元計算機同時執(zhí)行同樣的指令,每個單元計算機能對其自己的數(shù)據(jù)運算。如上所述的單元能在所有四個方向上與它們的相鄰單元進行通訊也與外部數(shù)據(jù)輸入和輸出寄存器作遠距離通訊聯(lián)系。
有效的使用是,一組計算機設備在其可能時,同時對不同數(shù)據(jù)項進行同樣的數(shù)學或邏輯操作。
本發(fā)明的目的是控制這種處理單元的矩形陣列的處理過程。如同在一單指令多數(shù)據(jù)中的或在單指令多數(shù)據(jù)結(jié)構(gòu)中的這種處理機陣列一樣,要求其具有一種技術能使其中某些處理機執(zhí)行一個給定指令,而另一些處理機不執(zhí)行該指令,特別是對那些不執(zhí)行指令的處理機,只需使他們閑置就足夠了。在被閑置時他們不改變自己的狀態(tài)。例如,假設某一處理機在同一時刻運算一個可包含16個分量的數(shù)據(jù)矢量,如果我們希望實現(xiàn)對絕對值運算、則對于那些負值,處理機須對該數(shù)據(jù)求補。對那些正值,會被留下。所以需要提供一種裝置,使其中某些處理機執(zhí)行指令,就上例而言,是取二進制補碼,而另一些處理機則被閑置。
正如將要說明的,本發(fā)明的一個主要目的是提供若干方法,使一個借助其處理機可執(zhí)行或不執(zhí)行指令的裝置結(jié)合到處理機陣列中去,并且可有效地判斷測試條件的復雜序列。與已有技術相比,已有技術這種處理控制是在陣列外部,或僅對每個單元提供一個控制位。通過將控制器結(jié)合到陣列內(nèi)并且提供多重位,改進了性能,因為整個陣列的聯(lián)系被減至最小,并可處理多重測試條件,從而陣列可在任意確定的部分陣列工作。本發(fā)明的這個特性隨著給出一些先有技術處理機所強加的限制和一些這種先有技術處理機使用的技術,將在說明書中作更加細致地描述來確定哪個單元對一給定的數(shù)學或邏輯運算是有效的。
一種處理機陣列包括排列在有M列N行矩陣中的多重處理機單元,所述處理單元各自在橫向和垂向與相鄰單元聯(lián)結(jié)以形成所述陣列,所述陣列與向所述陣列提供指令的控制器聯(lián)在一起并與儲存數(shù)據(jù)和指令的程序存儲器相聯(lián)系,所述控制器進一步與一地址發(fā)生器聯(lián)在一起接進與所述陣列中的單元相聯(lián)接的存儲器,同時設備的改進使所述陣列中的每個單元根據(jù)通過所述單元接受的數(shù)據(jù)和指令顯現(xiàn)出操作狀態(tài)或閑置狀態(tài),包括具有多重的從所述控制器接收數(shù)據(jù)的輸入和輸出的數(shù)學邏輯裝置,邏輯裝置包括一個控制寄存器,該控制寄存器與所述輸出聯(lián)接并用來接收來自所述顯示所述操作條件的給定位狀態(tài)的控制器的預定指令,這就是說,如果給定位狀態(tài)不被檢測,所述單元是被閑置著,包括在所述邏輯裝置中的裝置,能有效地用來測定顯示關于所述單元的所述運行狀態(tài)的上述給定位狀態(tài)。
圖1為已有技術典型的常規(guī)并行處理機的簡單框圖;
圖2是一張表,描述了多重處理機完成特定操作所必須滿足的一系列條件;
圖3系根據(jù)本發(fā)明的陣列處理機的簡單框圖;
圖4是一詳細框圖,示出了根據(jù)本發(fā)明的陣列處理機單元;
圖5描述了根據(jù)本發(fā)明的用于4-行機的一系列垂向表征碼;
圖6描述了根據(jù)本發(fā)明的用于4-列機的一系列橫向表征碼;
圖7描述了如圖5、6所描述的4×4機的表征碼存儲器變換;
圖8描述了一個陣列子集的例子;
圖9描述了非正交處理機子集。
在詳細說明本發(fā)明的特征之前,相信為了指出問題的一般特性描述一下已有技術的并行處理機將是有益的。
已有許多優(yōu)秀的文章是關于多種形式的并行處理機的,例如,見1985年6月出版的《IEEE Computer》(《美國電氣和電子工程師學會計算機》),其給出了關于并行機的極好分析。此外,1985年7月出版的《High Technology》(《高級技術》),從企業(yè)的角度評論了并行處理機。
參照圖1,其給出了一常規(guī)并行處理機10的框圖。并行機包括控制器15、其從程序存儲器16獲得儲存的指令??刂破?5通過垂向表征碼寄存器12、橫向表征碼寄存器11、和地址發(fā)生器14與處理機陣列13相聯(lián)系。如圖1所示的橫向表征碼和垂向表征碼均包括通過雙向總線與處理機和控制器聯(lián)系的常規(guī)寄存器。
如從圖1所見,控制器15可通過垂向表征碼12、橫向表征碼11和地址發(fā)生器14與處理機陣列10相聯(lián)系。陣列13由相似的處理機矩形集合組成。為簡便起見,假定每個處理機均為1-位的單元,但這不是一個基本要求。
處理陣列的每個單元均與一個存儲器相聯(lián)系,存儲器在圖中從投影角度看是位于處理機陣機的后面。為了打開一部分處理機陣列并利用其啟動給定個數(shù)的單元,與將被打開的列相對應的垂向表征碼位和與將被選擇的行相對應的橫向表征碼位必須被置于選中狀態(tài)。所以處理機陣列中的給定單元在選中狀態(tài)的垂向表征碼和橫向表征碼交點處是現(xiàn)役的。該交點條件或單元內(nèi)部測試的結(jié)果可被傳送到單元內(nèi)部的單位條件寄存器。
該操作使得單元被閑置并導致陣列完全地無效使用,借此大量時間被用在分段處理。另一個困難產(chǎn)生在當人們試圖完成一串很復雜的操作時,如典型地在高級語言例如Pascal中遇到的。
假定要實現(xiàn)一系列嵌套的IF-THEN(如果一則)語句。
圖2示出了第i個處理機執(zhí)行一項操作所必須滿足的一系列條件。特別是,該操作集已可對另一套本身附屬于處理機的操作集有幫助。此外,可以證實附屬的層數(shù)僅在執(zhí)行時才知道而不是在編譯時。因此,按常規(guī)的方式區(qū)分圖1中的陣列是極其困難的。
參照圖2,假定在執(zhí)行上述過程時,整個陣列都在運行。在向量處理機中,假定所有i值同時被執(zhí)行,因為一臺向量處理機有16個處理機,每個處理機執(zhí)行i個值之一。在程序塊A中,第i個處理機僅當條件(Ai<Bi)成立時才運行。然后,在程序塊B中那些現(xiàn)役處理機僅當Ci等于Di時保持現(xiàn)役狀態(tài)。
所以,程序塊B僅由那些滿足先前二個條件的處理機執(zhí)行。走出程序塊B后,那些不執(zhí)行程序塊B中的代碼但仍滿足程序塊A的條件的處理機Ci等于Di成立的測試,那就是ELSE(否則)功能,ELSE意為補充并在程序塊C將被執(zhí)行。故程序塊A由所有滿足Ai小于Bi的處理機執(zhí)行。程序塊B將由那些滿足第一個條件也滿足條件Ci等于Di的處理機執(zhí)行。因此根本上講,有一系列子集條件,先是一部分處理機工作,然后更多的處理機被停止,雖然在第一階段中,如在程序塊B中非現(xiàn)役的處理機其中有些在程序塊C中將運行。注意ELSE條件并不需要重新測試Ci等于Di,而只是測試結(jié)果的補充。
在任何情況下,分成子集的過程原則上可無限地繼續(xù),可以有越來越多的測試,每個測試取接著的子集。此外,在編譯時不會知道有多少層存在,簡單的理由是一個具有嵌套的1F-THEN ELSE語句集的過程可與另一個由第一個過程調(diào)用或讀出的過程分別地編譯。
因此,本發(fā)明的目的是允許大量的在一給定行中的處理機能夠獨立地被操作,并且該大量的處理機可響應一組極復雜的條件,在那里這種測試的數(shù)目在編譯時尚是未知的僅在運行時才知道。
參照圖3,其為根據(jù)本發(fā)明明的具有內(nèi)部表征碼的陣列處理機。立刻注意到作為常規(guī)并行處理機的重要部分的橫向表征碼和垂向表征碼寄存器未包含在圖3中。
在圖3中,陣列20包括一個布置在M×N矩陣如在一矩形陣中的多重處理機單元。這種N×M矩陣是典型的但不是必要的。處理機陣列通過一個已與程序存儲器22提供的記憶裝置相連的控制器21被存取。控制器21與地址發(fā)生器24連接,地址發(fā)生器24有二個輸出,一個被標定為最小有效位,另一個為最大有效位,當最大有效位被引向譯碼器23時最小有效位輸出被引向陣列20。
正如將要說明的,譯碼器23具有用于在處理機陣列中選擇各個行的多重輸出。處理機陣列的每個單元都能夠按照單元計算的數(shù)據(jù)和根據(jù)控制器21發(fā)出的指令自己打開或關閉。此外,處理機執(zhí)行一項操作所必須滿足的條件的數(shù)目原則上是沒有限制的,不同于在前一例子中只有兩個條件,即橫向和垂向條件。
此外,正如將要說明的,要滿足的若干條件的數(shù)目在編譯時是不需要知道的,這些條件僅在運行時間需要知道。程序存儲器22、控制器21和地址發(fā)生器24均是常規(guī)設計,本技術領域:
的人已很熟悉了。
基本上,程序存儲器22是隨機存取存儲器或隨機存取存儲器(RAM)設備集。控制器21提供取出和執(zhí)行邏輯的指令,它一般包含一響應特定處理機陣列的被執(zhí)行指令集的微程序順序發(fā)生器。這種控制器如控制器21的例子已被本領域的人所熟知。
地址發(fā)生器24一般是一通過響應指令的控制器輸入的計數(shù)器或寄存器從而特定的存儲單元可被整個處理機陣列存取。
參照圖4,其示出了一典型的處理機單元。圖3的處理機陣列包括一個這種處理機單元集。為簡便起見假定在圖3中有一個處理機矩陣,其中有32行和每行有二個16一位處理機,作為例子,這將給出一個包含32×32位處理機的處理機陣列。按照圖4,處理機單元的計算部分包括一多端口隨機存取存儲器30,可通過選擇讀地址和讀/寫地址,二單元A和B可被同時讀出。并且一個單元在寫單元為讀/寫地址處可被寫出。被稱作A和B的多端口隨機存取存儲器30的輸出口通向數(shù)學邏輯單元或運算器(ALU)31。運算器31和多端口隨機存取存儲器30均為常規(guī)設計并且這樣的部件已在原有技術中存在。作為一個典型例子,見由Advanced Micro Devices(近代微型設備公司)制造的一種4-位片式芯片的2903。
單元控制進入指令的形式,讀地址和讀寫地址;它們均由圖3中控制器21發(fā)出。從圖4可見,運算器的輸出被引向緩沖器32,緩沖器的一個輸出與多路轉(zhuǎn)換器33相聯(lián)接,在那里運算器的另一個輸出與多路轉(zhuǎn)換器33的另一個輸入相聯(lián)接。多路轉(zhuǎn)換器的輸出被接向接受系統(tǒng)時鐘的狀態(tài)寄存器34。狀態(tài)寄存器34的輸出接向緩沖器35,緩沖器35的輸出并聯(lián)于多端口隨機存取存儲器30的C輸入。
狀態(tài)寄存器還與一狀態(tài)可編程序的邏輯陣列(PLA)42連系。可編程序的邏輯陣列將在后面解釋。多端口隨機存取存儲器和狀態(tài)寄存器的狀態(tài)僅當隨機存取存儲器寫啟動(write enable)成立時才可改變。狀態(tài)寄存器34能容納來自運算器31輸出信號進位(C)、負值(N)、零(Z)和溢出(O)。該四種信號的定義仍然根據(jù)常規(guī)的定義。
在每個處理機單元內(nèi)控制隨機存取存儲器寫入啟動信號是本發(fā)明的目的。首先假設隨機存取存儲器寫入啟動成立,在這種情況下對于一個指令諸如加法指令(ADD),在多端口隨機存取存儲器中對二個單元尋址,運算器31將操作數(shù)相加,將結(jié)果送回多端口隨機存取存儲器30,根據(jù)加法指令的結(jié)果的進位、負值、溢出和零狀態(tài)修改狀態(tài)寄存器34。
現(xiàn)假定由在一矩陣或在一陣列中的一些處理機單元來實現(xiàn)加法指令并且另一些處理機單元不執(zhí)行。隨機存取存儲器寫入啟動信號特別重要,首先當處理機被初始化時,必須向指令可編程序的邏輯陣列發(fā)出足夠數(shù)量的指令,將控制寄存器40調(diào)至所有的指令,特別是指令必須被執(zhí)行到達POP(退棧)控制寄存器40的位置,每次發(fā)給POP指令將控制寄存器40右移,把1送進msb(最大位),正如從圖4可見,POP輸入被接向控制寄存器40。假定其M,控制寄存器的輸出總數(shù)為8,雖然該特別的數(shù)目不是要點。當控制寄存器40充滿了輸出,也就是說8個,正在監(jiān)控控制寄存器40輸出的AND(和)門41將檢查所有輸出并且隨機存取存儲器寫入啟動將成立。
因此,所有其后的指令直到控制寄存器被變化后才導致多端口隨機存取存儲器30的輸入和狀態(tài)寄存器34的輸入。假設根據(jù)先前的例子,想要完成一項絕對值運算,這種情況下為了求其補碼,僅對負值數(shù)據(jù)運算并對其置“正”,將執(zhí)行下面的指令序列
從多端口隨機存取存儲器30讀一個單元并原數(shù)返回,并因此,狀態(tài)寄存器34將被輸入數(shù)據(jù)符號,按接著的指令,運算器31將被命令完成某些運算,一項不是依靠測試狀態(tài)的運算狀態(tài)可編程序邏輯陣列42被命令來選擇條件其中狀態(tài)寄存器34的狀態(tài)可表明之前的數(shù)據(jù)是正值還是負值。在此簡單事件中僅符號位需要被詢問。
所以,符號位將在控制寄存器40的輸入處呈現(xiàn),并且PUSH(進棧)信號將被置值“真”,在此情況下控制寄存器40將左移并且符號將被送入寄存器的lsb(最低位),如果該數(shù)據(jù)是負值,該符號位將被選中并仍被控制寄存器40收納。如果數(shù)據(jù)是正值,其符號位將成為零,此時控制寄存器40將存放一個零。故在數(shù)據(jù)是負值的情況下,隨著門41的檢測,控制寄存器40仍包含該數(shù)據(jù)并且隨機存取存儲器寫入啟動保持選中狀態(tài)。
單元可繼續(xù)處理,例如,可對數(shù)據(jù)求補碼,其結(jié)果將寫入多端口隨機存取存儲器30。如果數(shù)據(jù)是正值,控制寄存器40此時將存放一個零。隨機存取存儲器寫入啟動失敗,沒有數(shù)據(jù)送入多端口隨機存取存儲器30或狀態(tài)寄存器34。因此,操作順序可在滿足在數(shù)據(jù)為負值時可執(zhí)行的要求下被完成。對于那些其中數(shù)據(jù)是正值的處理機,多端口隨機存取存儲器30和狀態(tài)寄存器34的狀態(tài)將不發(fā)生變化。
如果要執(zhí)行附加的測試,則狀態(tài)可編程序邏輯陣列42被用來判斷狀態(tài)寄存器34位的狀態(tài),根據(jù)將數(shù)據(jù)記入控制寄存器的進棧(PUSH)指令將結(jié)果再輸入到控制寄存器存器40的右串行輸入口,例如,可能更想知道是否結(jié)果大于零而不是大于等于零或小于零。
在此情況中,第二個位將被輸入控制寄存器40,并僅當控制寄存器的所有位保留選中時該單元將能夠保留。當不再對運算的結(jié)果感興趣時,通過執(zhí)行POP(退棧)指令可將位從控制寄存器40中移去,POP指令將控制寄存器向右移一位,一個1被送入左串行輸入。同時,從控制寄存器40被移出的位被送入一單位觸發(fā)器43。
然后,位于進入到裝置位位置的1返回進入控制寄存器的右串行輸入,這個補充了ELSE特性,如先前概述的1F-THEN ELSE指令中的ELSE特性。因此,1可以容易地補充指令的形式,當a是真時,則執(zhí)行一系列運算,ELSE實現(xiàn)不同系列的運算,ELSE用來完成該特別測試的結(jié)果。
另一個寫入啟動(write enable)機構(gòu)的特性是可被用來選出許多處理機中的一個使得其可通過垂向總線向控制器傳送。如從圖3可見,垂向總線通過雙向輸送通道與控制器相聯(lián)系。
注意,垂向總線通過控制器21可用來同時向處理機單元輸送數(shù)據(jù),它將向那些寫入啟動線是“真”的處理單元輸送數(shù)據(jù)。相反,控制器21從處理機單元讀數(shù)據(jù),由于有一個可在單總線上輸送的多重單元,則僅有多重單元中的一個可被啟動。因此,可執(zhí)行在控制寄存器40的輸入產(chǎn)生的一系列指令并且在假設了操作集識別單處理機單元的情況下,則按照處理機單元讀,并且讀將僅發(fā)生在那些寫入啟動線是“真”的處理機單元。至此正如所見,自運算器31到垂向總線的驅(qū)動器32僅在如果滿足了下面二個條件時被啟動第一,來自指令可編程序邏輯陣列的寫入垂向總線是“真”,和隨機存取存儲器寫入啟動亦是“真”。因此,將執(zhí)行一條指令把寫垂向總線置“真”,并從多端口隨機存取存儲器30讀取期望的數(shù)據(jù)。狀態(tài)寄存器34的執(zhí)行過程利用了常規(guī)的4-位并行輸入移位寄存器,(load shift register)其輸入是發(fā)生在輸入線為“真”和具有時鐘輸入的情況下,此時其輸入的數(shù)據(jù)被傳送到其輸出。
控制寄存器40的執(zhí)行過程是一個常規(guī)的定時的左移位、右移位、并行入/并行出移位寄存器,如果POP信號“真”,其向右移位,如果PUSH信號“真”則向左移位。它有一個從左邊輸入數(shù)據(jù)的左串行輸入和從右邊輸入數(shù)據(jù)的右串行輸入。
它有一個由LOAD(輸入)控制在中斷或上溢或下溢之后存儲它的狀態(tài)的并行輸入。如果PUSH、POP、LOAD輸入均非“真”,寄存器40的狀態(tài)不變化。在廣義框圖形式中的可編程序邏輯陣列指令為常規(guī)設計并能滿足特定處理機的要求。典型的指令如ADD(加)、SUBTRACT(減)、AND(和)、OR(或)將由運算器31以及數(shù)據(jù)移動操作符執(zhí)行,例如對存儲器讀或?qū)?,和讀、寫垂向總線以及控制控制寄存器40的操作符一即,PUSH和POP操作以及選擇進入狀態(tài)可編程序邏輯陣列42的條件。
以類似的方式,狀態(tài)可編程序邏輯陣列42是常規(guī)設計并被用來檢測16個狀態(tài)寄存器條件集,例如,其中包括正或負,大于零、小于或等于零。這些條件的檢測將導致1-位輸出被置“真”其被用作為向控制寄存器40的右串行輸入??刂破?1也保存一個已被輸入到一個單元的控制寄存器40中的位的數(shù)目的記錄,以檢測控制寄存器上溢或下溢條件。
例如,如果控制寄存器40具有8位,程序試圖將第9個位推入控制寄存器,則控制器21中的計算器將顯示出在該處已進入的位太多了1不再被寄存的錯誤,程序能處理緊急終止和返回調(diào)整用戶或在各個單元中保存控制寄存器40的狀態(tài)或當恢復其它位為1時把控制寄存器40的所有單元的邏輯“和”(AND)寫回控制寄存器的一個單個位。
當足夠數(shù)量的位已被退棧時,則控制寄存器的這個初始狀態(tài)能被恢復。注意對在控制寄存器40中任何特定位來說不存在專門指定的測試條件這一點很重要。由于在控制寄存器中所有的位都被同樣地對待,所以上述情況可以實現(xiàn)。今后,有一個棧結(jié)構(gòu)那兒每個測試占有控制寄存器的另一個位,所以,沒必要知道在哪一層正在執(zhí)行一個測試,它可以在運行時間而不是編譯時間被簡單地確定。
注意下面這點也很重要對控制寄存器例如寄存器40,在所有單元中PUSH(進棧)或POP(退棧)是同步的并且不管隨機存取存儲器的狀態(tài)如何。事實上,寫入啟動是由控制寄存器確定的。盡管這將導致將無用的數(shù)據(jù)送入到控制寄存器的非現(xiàn)役的單元,但重要的是被寫入控制寄存器的第一個零已足夠使單元不動作,在這一情況下,事實上下面的位在這些不動的單元中是無用的。
通過同時具有控制寄存器的PUSH(進棧)和POP(退棧),對不同數(shù)目的位被寫入到控制寄存器的不同單元及基于他們目前的狀態(tài)不得不使確定控制寄存器是不是達到進?;蛲藯_@一特別情況是不困難的。簡而言之,不管他們的目前狀態(tài)如何,所有寄存器同步地進棧和退棧,從而使設計大大簡化。
另外還要注意的是;控制寄存器40可以根據(jù)所有的數(shù)據(jù)和寄存器的順序被保存,使得機器可被造成用來交流任務其中控制寄存器40的狀態(tài)被定作為處理機狀態(tài)的一部分并且當任務停止時和當任務重新執(zhí)行時它的狀態(tài)可以被保存。
為了使得控制器,如圖3所示控制器21,能與它選擇的一行或多行通訊,就必須使隨機存取存儲器中被選為通訊的單元的寫啟動置“真”而使隨機存取存儲器的其它單元寫啟動置“偽”。這個隨機存取存儲器的寫啟動是由門41發(fā)出來的最重要的處理機操作信號。因此,問題是當它“真”時一系列條件怎樣提出?;旧?,需知道如圖3中的20機器或處理機陣列,是怎樣被初始化的。
再有,假定處理機陣列含有16個處理機列,因此,有16個方形的處理機組合,假設在處理機陣列外部的寄存器中有256個表征碼集,這些表征碼存在于陣列寄存器25中。控制器21通過地址發(fā)生器24來選擇256個表征碼集中的一個并使它被輸入到多端口的隨機存取存儲器30的一個單元。當一個表征碼被輸入到多端口隨機存取存儲器,就可以做一次測試,在此測試的基礎上,單元會把隨機存取存儲器的寫入啟動置于“真”或“偽”。
結(jié)構(gòu)(Pattern)或表征碼結(jié)構(gòu)能用不同方式放置進存儲器。方法之一是存在一個只讀存儲器中,它是每一單元中存儲器的一部分,使得結(jié)構(gòu)成為靜態(tài)。另一個不使用與每一單元有關的只讀存儲器的解決方法是利用關于控制器21的一個整體存儲變換。在這一情況下,控制器21輸送一地址到地址發(fā)生器24,這地址選擇存儲器中一行動作。接著,這控制器傳輸數(shù)據(jù)到所有行并且這些直接寫入存儲器;但是由于僅有一行被地址發(fā)生器23選中活動,結(jié)構(gòu)將被僅儲存在這一行內(nèi)。
所以,隨著順序通過256個地址的每一個的每一行,該結(jié)構(gòu)可能被送入到系統(tǒng)初始化的存儲器中。在正常的運算時,控制器21能傳送一個地址到發(fā)生器,這能導致存儲器中所有行而不是僅僅選擇它們中的哪一行進入現(xiàn)役。因此,這個地址變換,如通過控制器可見的,是一個地址集合,其中從處理機陣列的角度來看所有存儲器都是現(xiàn)役的,并且另外的地址的集合,其中僅有一特殊行是現(xiàn)役的,雖然這些對于處理機陣列是未知的,只有控制器21知道。
參照圖5,其展示了關于一個4-處理機機器的表征碼。這個4-處理機機器被選作為一個例子以使圖5所示的總表的尺寸減至最小。每個處理機狀態(tài)由A到P示圖來給出。例如在圖5A中沒有處理機是現(xiàn)役的。在圖5H中前三個處理機在第0、1、2行是現(xiàn)役的但第3行非現(xiàn)役。在圖5P中,所有4臺處理機均為現(xiàn)役。馬上可以注意到-1表明已現(xiàn)役,在該情況下字的所有位將是1,并且非現(xiàn)役由零來表示,所以當測試是關于一個字時,如果此測試是個符號校核那么-1的符號是一個1,在這種情況下,一個“真”條件將被送入到控制寄存器中并且處理機將運行。
在圖5中,無論一行中有多少處理機,數(shù)據(jù)都是相同的并且用來對整個陣列垂向區(qū)分處理機。
圖6也可稱表2,展示了關于一四列機器的水平表征碼并用來區(qū)分在一單行中不同的處理機。
圖7展示了一個用作表征碼存儲的存儲變換的例子,其中為一4-行4-列機器總共有16臺處理機,其中之一能保存此垂向表征碼的前16個地址和接下的16個橫向表征碼的地址。
圖8展示了形成一個陣列子集的例子。參照圖8,假定希望打開那些在1,2,3行與0,1,2列交錯處的處理機,首先尋址那些將會選1,2,3行的橫向表征碼。
回過來再參照圖5,可以看到一種情況,零將會打開1,2,3行。所以,一個地址14被送到地址發(fā)生器,此發(fā)生器將選擇垂向表征碼集合中的一個,尤其是置零的。這個表征碼被輸入到測試數(shù)據(jù)的處理機內(nèi)并且該數(shù)據(jù)的符號被送入到控制寄存器內(nèi)。此時,僅在1,2,3行的處理機是現(xiàn)役的。但是所有列將是現(xiàn)役的。
再參照圖6,選擇0,1,2列的橫向表征碼將被取出。這是情況H。對應于橫向表征碼H的地址,尤其是地址23,被送入地址發(fā)生器此表征碼被取出?,F(xiàn)役的單元做一符號測試,并將結(jié)果送入到控制寄存器。此時,二個位已被輸入到控制寄存器,并且那二個位僅對下面三行與右面三行的交點是“真”的。此時,在那九個處理機上的運算是進行的,并且效果是與有一組橫向表征碼寄存器和垂向表征碼寄存器和那些將被選出的交點時是相同的。此時,那此處理機實現(xiàn)一些運算并且那九個處理機的完全任意的集合處于運行狀態(tài),這是一種僅簡單地取X與Y的外部寄存器的交點所不能獲得的狀態(tài)。
圖9展示了一種情況,其中簡單的交點不能選擇所希望的處理機。本發(fā)明可以支持這種復雜的構(gòu)形。
根據(jù)上述,可以看到,本發(fā)明適合于任何通用的或?qū)S玫膯沃噶疃鄶?shù)據(jù)處理機。在有單元運行選擇的背后的機能是需要一種在目前的單指令流下能控制那些處理機運行的方法。在一常規(guī)的單指令、單數(shù)據(jù)處理機下,每一條數(shù)據(jù)將被測試并能導致一不同的程序流,但是在一單指令多數(shù)據(jù)處理機中,只有一個程序流。
因此,為了控制多重處理機對它們不同數(shù)據(jù)的響應,就必須關閉其中的一些處理機使得它們可以不向一條特定的指令,其中對于每條數(shù)據(jù)執(zhí)行不同的程序流具有相同的效果。其它僅不同的是多數(shù)據(jù)同時滿足條件X與條件非X時,在單指令多數(shù)據(jù)情況下,二個代碼部分(即關于條件X的代碼與關于條件非X的代碼)將要被執(zhí)行,這里在這些不同的代碼部分中僅當處理機的數(shù)據(jù)符合這些條件時才運行。而在常規(guī)的處理機中對于給定的一條數(shù)據(jù),此數(shù)據(jù)滿足的一個代碼部分將執(zhí)行而另一代碼部分將被跳過。然而,其效果是一樣的。
因此,可見只要整個處理機能運行它的數(shù)據(jù)或不運行它的數(shù)據(jù),本發(fā)明適合于任意位數(shù)的處理機。所以,任何單指令多數(shù)據(jù)處理機,其中每一處理機具有任意的位數(shù),均可通過本發(fā)明的特性來控制。一般使用單指令多數(shù)據(jù)處理機的應用是圖象處理,數(shù)據(jù)信號處理,矩陣代數(shù)和建立在專門系統(tǒng)的基礎上的法則。
因此,對能夠提供設備使得在一個類似于處理單元的矩形陣列中控制處理過程這一技術對這方面的專業(yè)人員是很明顯的。這種處理單元的一個陣列被置于一個單指令多數(shù)據(jù)結(jié)構(gòu)中,并提供一種設備來使得其中一些處理機執(zhí)行一個給定的指令而對另一些處理機不執(zhí)行這一指令。特別是對那些不執(zhí)行這一指令的處理機,只要它們閑置就足夠了。
在閑置時它們不改變自己的狀態(tài)。那些被選的處理機根據(jù)所收到的數(shù)據(jù)來打開并處理收到的數(shù)據(jù)。
因此,此系統(tǒng)取消了被用在常規(guī)的矩形構(gòu)形的處理機中的垂向和橫向表征碼或單一位活動表征碼的使用。
權(quán)利要求
1.一種處理機陣列,包括典型地排列在有M列N行陣列中的多重的處理機單元,所述處理單元各自在橫向和垂向與相鄰單元聯(lián)結(jié)以形成所述陣列,所述陣列與向所述陣列提供指令的控制器聯(lián)在一起并與儲存數(shù)據(jù)和指令的程序存儲器相聯(lián)系,所述控制器典型地進一步與一地址發(fā)生器聯(lián)在一起以訪問所述陣列中的單元,同時設備的改進使得所述陣列中的每個單元根據(jù)由所述單元處理的數(shù)據(jù)和指令顯現(xiàn)出操作狀態(tài)或閑置狀態(tài),包括具有從所述控制器接收數(shù)據(jù)的多重輸入和輸出口的數(shù)學邏輯裝置,邏輯裝置包括一個控制寄存器,該控制寄存器與所述輸出口聯(lián)接并用來接收來自所述顯示所述操作條件的給定位狀態(tài)的控制器的預定指令,即,如果給定位狀態(tài)不被檢測,所述單元不被變成閑置,包括在所述邏輯裝置中的裝置能有效地用來測定顯示關于所述單元的所述運行狀態(tài)的上述給定位狀態(tài)。
2.根據(jù)權(quán)利要求
1的處理機陣列,其進一步特征在于所述處理機陣列被排列成一單指令多數(shù)據(jù)陣列。
3.根據(jù)權(quán)利要求
1的處理機陣列,其進一步特征在于所述數(shù)學邏輯裝置包括一個多端口隨機存取存儲器,該多端口隨機存取存儲器具有多重輸入口,每個口用于接收來自所述控制器的控制信號使數(shù)據(jù)能夠被讀入或?qū)懭胨鲭S機存取存儲器,所述隨機存取存儲器有多重輸出與數(shù)學邏輯單元(ALU)的聯(lián)合輸入相聯(lián)結(jié),所述數(shù)學邏輯單元的一個輸入與所述邏輯裝置聯(lián)結(jié)。
4.根據(jù)權(quán)利要求
3的處理機陣列,其進一步特征包括一與所述數(shù)學邏輯單元的所述輸出相連系的和當所述單元是處在所述操作狀態(tài)時能寄存通過所述單元完成的計算結(jié)果的狀態(tài)寄存器。
5.根據(jù)權(quán)利要求
4的處理機陣列,其進一步特征在于所述邏輯裝置進一步包括一個用來翻譯所述狀態(tài)寄存器狀態(tài)的可編程序邏輯陣列,該挑選出來的狀態(tài)是由具有與所述控制寄存器相聯(lián)結(jié)的輸出的控制器選擇的。
6.根據(jù)權(quán)利要求
5的處理機陣列,其中所述控制寄存器具有一個被標定為POP(退棧)輸入的并與所述控制器聯(lián)結(jié)的第一輸入用來使所述寄存器向右移位使被接收的二進制1進入所述控制寄存器,并進一步具有一個被標定為PUSH(進棧)輸入的第二輸入使所述控制寄存器能夠?qū)?shù)據(jù)左移位以接收一測試條件位。
7.根據(jù)權(quán)利要求
6的處理機陣列,其中所述控制寄存器是一個定時的左移位、右移位、并行進/并行出移位寄存器用來向右移位以打開所述POP(退棧)輸入和向左移位以打開所述PUSH(進棧)輸入。
8.根據(jù)權(quán)利要求
7的處理機陣列,其中所述控制寄存器進一步具有一個用于向左移位以從所述控制器接收數(shù)據(jù)的標定為左串行輸入的第三輸入和用于向右移位以從所述控制器接收數(shù)據(jù)的標定為右串行輸入的第四輸入。
9.根據(jù)權(quán)利要求
8的處理機陣列,其中所述控制寄存器進一步包括一個用以恢復所述控制器控制的所述寄存器狀態(tài)的被標定為LOAD(輸入)的并行輸入。
10.根據(jù)權(quán)利要求
9的處理機陣列,其中所述控制器進一步包括用來計算被推入(PUSHED)所述控制寄存器的位的數(shù)目以確定所述數(shù)目的位是否能被所述寄存器收納。
11.根據(jù)權(quán)利要求
1的處理機陣列,其中所述陣列存儲器已儲存在表示出在所述陣列中的處理機單元方陣數(shù)目的多重表征碼中,所述控制器作用于通過向所述地址發(fā)生器輸送一個地址來選擇所述表征碼中任何期望的一個,表示出存入的各個所述單元其中數(shù)據(jù)按所選擇的顯示出所述表征碼。
12.根據(jù)權(quán)利要求
11的處理機陣列,其中所述表征碼包括第一多重表征碼,在所述陣列中顯示垂向列數(shù)M,和第二多重表征碼在所述陣列中顯示橫向行數(shù)N。
13.根據(jù)權(quán)利要求
12的處理機陣列,其中所述程序控制存儲器包括一多重的隨機存取存儲器(RAMS),與所述控制器成為程序順序發(fā)生器。
14.在一個處理機陣列中,該陣列包括多重的被排列在一個N×M陣列中的獨立處理單元,具有M列和N行,所述處理單元每個均在水平和垂直方向與相鄰單元聯(lián)結(jié)以形成所述陣列,所述陣列與向所述陣列提供指令的控制器聯(lián)結(jié),所述控制器與存儲數(shù)據(jù)和指令的程序存儲器聯(lián)結(jié),所述控制器進一步與一具有與所述陣列聯(lián)結(jié)的輸出的地址發(fā)生器的輸入聯(lián)結(jié)用來存取一在所述陣列中的單元組,包括在所述陣列中的處理單元機構(gòu)的組成,所述處理單元包括具有多個輸入端口的存儲器裝置,每個輸入端口用來接收來自所述控制器和多重輸出端口的分離的輸入數(shù)據(jù),具有多重輸入端口的數(shù)學邏輯單元(ALU),每個輸入端口。分離一個聯(lián)結(jié)于所述存儲裝置的聯(lián)接的輸出端口,所述數(shù)學邏輯單元具有一個輸出端口,第一寄存器裝置與所述數(shù)學邏輯單元的所述輸出端口聯(lián)結(jié)以確定所述單元的狀態(tài)。第二寄存器裝置與第一寄存裝置和所述控制器相聯(lián)結(jié)并用來從所述控制器和所述第一寄存裝置接收數(shù)據(jù)和指令以向其內(nèi)寄存顯示所述單元操作條件的第一代碼和寄存顯示所述單元閑置條件的第二代碼,利用它,所述單元有能力依據(jù)接收到的所述數(shù)據(jù)指令操作或保持閑置。
15.根據(jù)權(quán)利要求
14的處理機陣列,其中所述存儲裝置是有至少兩個輸出的具有讀地址輸入、讀/寫地址輸入的隨機存取存儲器。
16.根據(jù)權(quán)利要求
15的處理機陣列,其中所述隨機存取存儲器的所述輸出被分別地與所述數(shù)學邏輯單元的聯(lián)合輸入相聯(lián)結(jié)。
17.根據(jù)權(quán)利要求
14的處理機陣列,其中所述第一寄存裝置包括一個寄存由所述數(shù)學邏輯單元完成的數(shù)學運算例如進位、負值、零和溢出運算的結(jié)果的狀態(tài)寄存器。
18.根據(jù)權(quán)利要求
14的處理機陣列,其中所述第二寄存裝置是一個具有第一輸入和第二輸入的控制寄存器,第一輸入標定為一個退棧(POP)將一個接收的二進制1向右移位,第二輸入標定為進棧輸入(PUSH)將一個測試條件結(jié)果向左移位。
19.根據(jù)權(quán)利要求
18的處理機陣列,其中所述寄存器是一個定時的左移位、右移位、并行進/并行出的移位寄存器用于向右移位使所述退棧輸入增大,向左移位使所述進棧輸入增大。
20.根據(jù)權(quán)利要求
19的處理機陣列,其中所述控制寄存器進一步有一個表示接收來自所述控制器的數(shù)據(jù)的左串行輸入的第三輸入用來向左移位和一個表示接收來自所述控制器的數(shù)據(jù)的右串行輸入的第四輸入用來向右移位。
專利摘要
本發(fā)明揭示了一個處理機陣列,其被排列在單指令多數(shù)據(jù)處理機中,陣列中的每個處理單元包括能使單元確定是否自己已被選擇來完成數(shù)學或邏輯運算的邏輯線路。因此陣列中的每個單元能在陣列中的其它單元對于同一指令被閑置時執(zhí)行這個指令。通過某設備處理機可執(zhí)行或不執(zhí)行一個指令,該設備被歸并到處理機陣列中并且提供堆棧和補碼機構(gòu)來處理復雜的測試序列。
文檔編號G06F15/76GK86106713SQ86106713
公開日1987年5月20日 申請日期1986年9月23日
發(fā)明者史蒂文·格雷葛瑞·莫頓 申請人:國際標準電氣有限公司導出引文BiBTeX, EndNote, RefMan