中文字幕无码日韩视频无码三区

用于結構運算的運算單元的制作方法

文(wen)檔序號:6406288閱讀:369來源(yuan):國知局
專利名稱:用于結構運算的運算單元的制作方法
技術領域
本發明涉及一種用于結構運算的運算單元。這種運算單元下面稱之為磁心單元。
計算機是本世紀四十年代發明的。從那以后,計算機一直以革命性的速度發展著。但是盡管如此,今天的計算機與最初的計算機的結構差不多是相同的。
人們對計算機作的改進大多在硬件上。超大規模集成(VLSI)技術的引進以及金屬版印刷術的提高使得把僅在五年前還被稱作超級計算機做成單片計算機成為可能。計算機的尺寸在以指數級縮小,現在的線寬也不大于1微米。時鐘頻率及有源晶體管的數量增加了幾個數量級。各種物理制約很可能把線寬限制在0.2微米左右。
與此同時,計算機結構在使用硅材料這點上沒有得到改進。相反為了工作得更快,大多數計算機使用多于最佳量的硅材料。
上面提到的這些事實將在以后五年中制約著單片處理器的速度的提高。人們還引用了并行處理器,但產生了因復雜性增加而導致硬件成本提高以及大多數類型的程序的編程成本上升過高等問題。
如果減小硬件成本,則新系統的編程成本就會顯著上升,不久就將達到極高的水平上。這兩者是相互關聯的。
一臺計算機是由不同的軟、硬件單元組成的一個復雜的集合,在其發展中的不同的過程和階段產生了(不管是特設的還是設立的)散布在系統中的各種標準。正是由于這種不一致性,計算機中才有大量的接口。
所有這些接口以及不同數量不同類型的適配都使用戶或者程序員使用機器時變得困難,因為使用這種機器需要很多知識。程序員也可能由于這種復雜性而引入隱藏錯誤。
但是,目前人們正在開發所謂的歸約處理器(reduction processor)。歸納處理器處理的程序具有某種包含運算數表達式的結構,這種結構在多個歸約步驟中得歸約。這樣,程序的執行不是象其他類型的計算機中的那樣按一定的順序進行的。
但是,要在一個有限的規模之上開發一個歸約處理器,還有不少困難。
第一臺電子計算機的開發也開始了適合于這類計算機的多個流程語言如FORTRAN.COBOL.Algol,BASIC,Pascal等的開發。這些語言被稱為命令語言(以下也叫做常規語言),之所以這樣叫主要是基于下面的事實,即它們通常給出的程序由一系列被常規的計算機順序地加以執行的命令或者指令組成,這里的常規計算機是指根據約翰·凡·紐曼(John Von Neumann)建立的原則而設計成的計算機。這些語言在使用上日趨明顯的不方便導致了另一組語言的開發,這組新的語言有LISP,ISWIM,Scheme(LISP的一種“方言”)、ML、Hope、SASL等。開發這些語言的驅動力是概念簡潔,沒有一種具體的機器能夠影響設計。功能語言過了一定時間之后才受到人們的注意,一個原因是功能語言執行起來很慢。以后的開發顯示,在某些情況下功能語言的執行速度可以接近或者趕上由常規計算機執行的常規(命令)語言程序的執行速度,雖然功能語言程序并不是準備由這類計算機來執行的。
促使人們花費大量努力來開發功能性語言的是命令語言在使用中日益明顯的不方便造成的。大約在1970年左右,有人開始談論軟件危機。程序變得越來越復雜,通常它包含不少錯誤,難讀難理解,修改起來更難。原因之一是人們的這種“高級命令語言將簡化編程”的期望過高,現在看來這些語言并未達到這樣的高度。命令語言還是只適合于最初的計算機概念即約翰·凡·紐曼的那種計算機,其編程級別還是相當接近于機器級。而功能性縮程語言具有幾個性質能夠消除這些常規編程語言的一些缺點。
為了提供附加信息以便加深理解,我們推薦“使用標準ML進行功能編程(Functional Programming Using Standard ML)”一書,作者愛克·韋克斯特姆(Ake Wikstrom),Prentice Hall 1987。
為了充分理解本發明的目的和優點,重要的要了解計算中的一個功能性方案包括什么,特別是它與歷史上更流行的命令性方案相比較而言時包括什么。
“功能性方案”這一名稱是稱用功能性語言寫成的。在一臺包含有特別適合于這些語言的硬件計算機上存貯、執行的程序,而“命令性方案”這一名稱是指用命令語言寫成的、在一臺包含有適合于命令語言的硬件的計算機上存貯、執行的程序。
但是,在一臺經典計算機上存貯并執行用功能性語言寫成的程序是可能的,反過來也是可能的,即用命令語言寫成的程序也可以在一臺適合于執行用功能性語言寫成的程序的計算機上執行。
一個用功能語言寫成的程序可以看成是目標性質的定義和計算規則的集合。上述的定義是說明部分,計算(或者叫歸納、改寫)規則是計算機在執行期間使用的操作部分。功能語言提供了一個與計算機的更高級別的接口,使程序員能夠脫離開計算機中與硬件有關的技術細節。功能性程序的一個有益的副作用是程序通常較短,也比通常的命令程序容易理解。功能語言的一個主要缺點是功能性程序要在一臺經典計算機上執行的活動必須先轉換成命令語言,這通常是由編譯程序或者解釋程序完成的。因此,很顯然,功能性方案的某些優點由于下面的事實而被抑制,即現在還不存在能夠有效地存貯并執行功能性程序的專門硬件。
本發明的目的在于提供一種有源存貯器中的特殊的有源存貯單元(以下稱之為磁芯單元),該單元能夠執行所有類型的歸納運算,上述的有源存貯器中也包含只能夠執行有限的一部分歸納運算的其它類型的存貯單元。雖然數值運算可以在與磁芯單元相連的數字算術邏輯單元(數字ALU)中進行,但是實際的歸納操作可以在磁芯單元中進行。
本發明的另一個目的是提供一種能與一個包含有限的存貯單元的最好是一個相聯存貯器協同工作的磁芯單元,該單元是唯一與上述的相聯存貯器具有交換信息的直接通道的單元。
本發明還有一個目的在于提供一種能存貯一個表達式的多個級別的磁芯單元。存貯在磁芯單元中的表達式的基本指令可以在磁芯單元中被執行。
本發明的另一個目的在于提供一種用于結構運算(即歸約計算機程序給出的結構的運算)的磁芯單元),其中單元中的表達式的規模與執行中涉及到的表示圖中的分支相對應。一臺經典類型的計算機可以裝在一個用于結構運算的磁芯單元,在使用基于結構運算概念的那類編程語言(如LISP=List Processing Language)或者任何其他的功能性或者說明性語言時這將發揮出特別的優點。LISP語言特別適合于處理和運算清單或者由清單建立的結構,在人工智能領域內(如建立一個專家系統時)使用很普遍。在符號代數、VLSI設計、計器人、自然語言理解等方面也有使用。在這些場合下,磁芯單元可以是通過改寫和/或歸納對這些清單進行處理的裝置。
一個執行的程序可以表示成由幾個閉包組成的方向圖,程序的每一部分都可以由一個閉包(Closure)來表示。在執行過程中,這個閉包方向圖根據所使用的語言的歸約規則被逐漸歸約。一旦沒有可執行的閉包留下時,程序的執行也就結束了。閉包方向圖也可以被視為一種樹結構,樹上的每個結點都是一個閉包,最高的結點叫做樹根。歸納處理通常是通過從根而上歸約樹結構而執行的,即先歸約樹中那些離樹根最遠的部分,再一直徑上直至樹根。這種執行方式一般被稱作需求驅動執行方式,意思是說如果程序中的某個部分的執行取決于其它部分的執行結果的話,那么該部分程序的執行將一直延遲到上述結果能得到時為止。
下面的表中列出了本說明書中所用到的一些術語及它們的保留意義元素 數據結構中較大的部分,清單 一個有順序的元素序列,每個元素反過來又可以是一張清單;
被插入清單 一張清單的一部分,小到足以全部存入一個閉包中能表示任意長的清單,閉包 定義一個過程的呈分層結構的一個整體。所有的閉包都有一個能唯一定義該閉包的根。在歸約機器上進行的歸約工作是針對閉包進行的。機器的整個狀態能被歸約所轉換。
目標存貯器 包含存貯著目標的存貯單元的存貯器。比方說一個相聯存貯器。
存貯單元 目標存貯器中的一個單元,它存貯一個單元閉包,也可能用來指存貯在其它存貯單元中的其他單元閉包。
單元閉包 一個存貯單元中的內容存貯單元段 存貯單元中的一個數據段閉包元素 存貯在存貯單元段中的一個數據元素,閉包識別符 唯一指定一個閉包的閉包單元元素,歸范閉包 一個不能被再歸約的閉包,亦即不包含任何指示著其它單元閉包的閉包識別符的單元閉包,上述的其它單元閉包有可能被進一步歸約。
目的 一個待執行即待歸約的閉包,父包 在數值/指示段中至少有一個閉包識別符的閉包,
子包 通過指示著它的一個閉包識別符與另一個閉包相連的閉包。
一個子包也可能又是一個父包,一個父包也可能是一個子包;一個子包可以有多個父包,一個父包可以有多個子包。
閉包位置 閉包是根還是結點,根 一棵閉包樹中處于最高位置上的閉包單元結點 閉包樹中不是樹根的閉包單元,位置 包含閉包位置的存貯器單元段類型 單元閉包中的類型碼,亦即表示目標性質的位組合格式,如指令碼,單元閉包中一個元素,用來指示它是可執行的、延遲評價的還是待用,識別符 用來代表存貯在存貯單元中的目標的特殊類別的一種閉包元素,環境 通過給目標予相同的環境而把目標分組,數值/指示 指存貯著簡單數值(如直接表示)、空白、或者至另一個閉包的指定值(即間接表示)的閉包元素,磁芯單元 指根據本發明的結構運算單元,該磁芯單元能執行與歸納閉包有關的結構運算,數值ALU 指能夠執行基本的數值和邏輯運算的數值運算單元,上述的磁芯單元使用該數值ALU進行數值運算,全寄存器 伸展至一個磁芯單元中的所有平面上的寄存器,磁芯字 磁芯單元中一個全寄存器中的內容,有限寄存器 指磁芯單元中伸展至有限量的平面的寄存器,這些有限量的平面包括一個數值/指定類的閉包單元元素,元素字 指一個有限寄存器或者與該有限寄存器具有相同的伸展狀況的部分全寄存器的內容,數碼(num)字 指表示一個數值或者指示值的元素字的一部分,特征字 指具有指示出上述的數碼字的表示特性的特征值的元素字的一部分,歸約 指根據所用的具體編程語言的規則對一個閉包進行改寫/重建。
本發明的主要目的由一個結構運算處理方法來實現。該方法包括a)把數據字存貯在多個寄存器中,每個數據字都有一個標志部分和一個信息部分,上述的標志部分中都有一個指示著該寄存器是否在使用中的標志。
b)上述的數據字被安置在許多清單(list)中,把每個這樣的清單存貯在預定數量的寄存器中,存貯在寄存器中的上述清單中每個上述字中的標志部分在使用中用來指示一個上述的表至少有一部分存貯在實際寄存器中、一部分存貯在上述實際寄存器中的上述清單包括一個list(列表)指令、它是一種什么種類的清單以及這些清單間的關系從這些清單在上述寄存器中的分配的哪一部分來看是清楚的,c)控制上述的寄存器,使用屬于存貯在上述寄存器中的清單中的上述列表指令在上述的寄存器中重新安排上述的清單,并根據上述的列表指令輸入/輸出寄存器中的內容。
本發明的用于進行結構運算處理的運算單元包括a)至少一個用于輸入/輸出數值清單的輸入/輸出裝置,b)多個寄存器,每個這樣的寄存器都能用于存貯一個數據字,每個數據字都有一個標志部分和一個信息部分,上述的標志部分包含一個標志,該標志指示出所述及的寄存器是否在使用中,每個上述的清單均能存貯在預定數量的上述寄存器中,每個存貯在寄存器中的上述字的標志部分在使用中用來指示一個上述的清單至少有一個部分存貯在實際寄存器中,一部分存貯在上述實際寄存器中的上述清單包括一個列表指令,該清單的種類是什么,以及清單之間的關系從這些清單在上述寄存器的分配中的哪一部分看是清楚的。
c)控制裝置,用于控制上述的寄存器,并使用屬于存貯在上述寄存器中的清單中的上述列表指令來在上述寄存器中重新安排這些清單,并根據上述的列表指令輸入/輸出寄存器的內容。
清單最好以清單樹的形式存貯在上述的寄存器中,其中有一個清單作為根清單。這個被存貯了的清單樹的識別符最好存貯在一個分離的識別符寄存器中。被存貯的清單樹的環境被存貯在一個分離的環境寄存器中。該樹的根清單最好被放置在不同的寄存器中,視被存貯的上述的實際樹的級別而定。一些寄存器被安置成一個包括一行主寄存器的基寄存器矩陣。一個只包含一個級別的樹被存貯在一個主寄存器中。一個包括二個提供根清單的級別的樹最好存貯在上述主寄存器中,其樹枝清單存貯在基寄存器中。在上述的矩陣之外還可以安置另一組附加的寄存器,稱作輔助寄存器。包含三個級別的樹最好存貯在上述的輔助寄存器中,把它的一個元素存貯在上述的寄存器矩陣中。
清單樹的根清單可以被劃分成許多元素,控制裝置可以從根清單的第一個元素中推出這樣的信息即要進行什么類型的歸約;其它元素表示待歸約的數據。上述根清單的第一個元素中的信息可以包括一個指令碼(控制裝置將用這個指令碼推導出要執行的是什么種類的指令),也可以表示代表函數定義的一個清單樹的根,控制裝置將用這個信息來推導出為歸約根清單而要采取的行動。
上述樹清單的第一個元素中的信息可以包括一個代表函數定義的樹的根。
一個清單中的字的最大個數最好為四。上述清單樹的最大深度最好為三級。如果深度為三級,并且存貯在上述寄存器中的上述根清單中的列表指令指示出上述的根清單具有一個或多個分支,控制裝置在寄存器中存貯上述分支中的一個。
結構運算是在存貯在寄存器(如基寄存器、主寄存器或者輔助寄存器)中的目標數據上提供的。
上述寄存器中的數據堆棧最好設置成一種分片方式,這樣每個數據堆棧中具有相同位置的每個堆棧位元素可以在一個包含了所有屬于所有的上述寄存器(這些寄存器在上述的位置上都有一個堆棧位元素的堆棧元素的平面內逐位地連接起來。一些寄存器具有比較長的堆棧這樣,一些平面只具有屬于這些較長寄存器的堆棧位元素。
至少一部分寄存器(即稱作為基寄存器的寄存器)在一個由N×N個寄存器構成的矩陣中安置成許多行和列,這里N為一個整數這些基寄存器中的堆棧元素被逐位連接起來。對于上述基寄存器堆棧中的每一位而言,每一列被提供一根列線,每一行被提供一根行線,在每個具有相同的列和行號的上述列線和行線的交點上都提供了一個可控開關。每個基寄存器至少與最近的行線和列線具有可控的寄存器連接。沿行和沿列相鄰的基寄存器之間也提供了連接。控制裝置對這種可控開關和可控寄存器連接進行控制,根據待執行的指令的種類進行下列三類連接中的至少一類a)從一個寄存器到另一個寄存器在一個方向上的連接,b)寄存器之間在二個不同方向上的分離的連接,c)寄存器之間的時分連接,其中被存貯的清單元素的傳輸可以先在一個方向上進行,在二個后續相位之間又在另一個方向上進行。
寄存器堆棧中的每個單元最好包括a)一個內部的一位寄存器b)至少一根能與上述的一位寄存器相連的一線點線,c)至少一個可控的內部連接,每個內部連接都包括一個可由控制裝置加以控制的開關,該開關使上述的至少一根一線點線中的一根能與下列元素中的一個相連那該單元之外的點線以及屬于另一個寄存器堆棧的單元中的一個。上述的至少一個內部一位寄存器可以包括一個輸入緩沖裝置(如一個反相器)和一個輸出緩沖裝置(如反相器),以及連接在上述的緩沖裝置之間的可控開關。上述的輸入緩沖裝置和輸出緩沖裝置可以通過上述的可控開關分別與上述的至少一根一線點線相連。
一些寄存器單元具有固定的、與寄存器的位置有關的值,這些值被連接到不屬于上述內部寄存器的連接之一的上述的至少一個內部連接上。
可以連接上一個比較器對上述部分寄存器中的內容加以比較,再把比較結果提供給稱為之訪問的外部總線中的一個線上。
如果結合附圖來參閱下面的描述,可以更全面地理解本發明以及本發明的其它一些目的及優點。附圖中,

圖1.概略地示出了歸納處理器的結構,該處理器中包括了根據本發明的磁芯單元,圖2A.示出了一個能夠存貯一個單元閉包的存貯器單元,圖2B-2D.示出了可以用在本發明的磁芯單元的實施例中的磁芯寄存器,圖2E.示出了磁芯單元實施例中的磁芯寄存器的一種可能的結構,圖3A至3F.示出了本發明的磁芯單元中的不同的數據存貯形式,圖4、5和6.示出了本發明的磁芯單元中的運算實施,圖7.示出了本發明的磁芯中的第一類運算平面的第一個實施例,圖8.概略地圖7中的第一類工作平面的具有各類可能的連接的一個完整的寄存器單元的設計實施例,圖9A至9F.示出了寄存器單元中使用的不同種類的元件的實例,圖10和11 示出了圖7中的第一類運算平面中不同的寄存器單元的設計示意圖,
圖12.示出了本發明的磁芯單元中的第二類運算平面(屬性平面)的第一個實施例的方框圖,圖13至15,概略地示出了圖12中的第二類運算平面中的不同的寄存器單元的設計,圖16至17,示出了寄存器單元之間進行交換的兩個例子,圖18至24,示出了多個不同的在磁芯單元之間進行數據傳輸的實例,圖25,示出了本發明的磁芯單元中的第一類運算平面的第二個實施例的方框圖,圖26,概略地示出了運算平面中寄存器單元的第二個實施例的設計圖。
在圖1中,磁芯單元被表示為包含在一個單歸約處理器(即可以作為一個更為復雜的歸約處理器的一部分的比較簡單的歸約處理器)的實施例中。從圖1中可以清楚地看出這種歸約處理器的結構。值得注意的是它的設計可以是相當不同的,比方說磁芯單元的各個平面在芯片上可以并排設置,也可以設置與圖示情況不同的并列層次。
圖1中的單歸約處理器包括一個具有多個磁芯寄存器3P的磁芯單元2P。和一個目標存貯裝置4P。該目標存貯裝置4P包括許多存貯器存貯單元,其中的每一個都存貯一個單元閉包,最好也能提供有限的歸約運算集。如果圖1中的單歸約處理器是一個包括多個單歸約處理器的更為復雜的歸約處理器的一部分,那么還應包括在這多個處理器之間進行通訊的處理器網絡數據交換裝置5P。這個數據交換裝置5P包括多個用于臨時地保存單元閉包從而把單元閉包傳送給另一個單處理器的寄存器。由于轉換裝置5P不是本發明中的實際磁芯單元的一部分,因此對它不再進行描述。
上述的處理器還包括一個用于控制磁芯單元2P中的各元素的控制單元6P和一個數值ALU 1P。控制單元6P是一個布爾門電路陣列,在磁芯單元將要處理的閉包的內容加以處理。控制單元6P和數值ALU都不是本發明的實際部分。因此對它們不再進行詳細描述,只是在下面結合實施例來描述送往和來自它們的信號。對于有關控制單元的設計方向的進一步信息,我們推薦由卡佛·米特(Carver Mead)和賴恩·肯威(Lyhn Conway)所著的Addison Wesley出版公司在1980年出版的“VISI系統導論(Introductions to VLSI System)”一書。
磁心寄存器具有一種從目標存貯裝置4P推導出的結構。一個目標存貯裝置單元中可以只存貯一個一級結構即一個單元閉包。磁心寄存器通過一根總線與目標存貯裝置相連,上述的總線寬度足以轉送一個一級結構(即單元閉包)。然而,磁心單元可以含有和包括一個((最高的)三級結構。這樣就有四種情況,即一個0.1.2或3級目標結構可以存貯在磁心單元中。正象下面要解釋的那樣,如果存貯的是一個三級目標結構,那么只是它的最高級別(樹根)和一個分支被存貯,不然的話,存貯的就是所有的級別。
磁心單元作為一個整體是一個用于結構運算的運算裝置,它包含幾個磁心寄存器3P。這些磁心寄存器中存貯著多個清單的樹結構。每個清單包括多個字。這些寄存器(有限寄存器)中的一部分能單獨存貯一個元素字,一個元素字包括一個數值字和一個特征字。特征字指示出數值字的表示特性。舉個例子來說,如果數值字代表的是一個值,那么,特征字就指示出該數值字中包含的值的種類(比方說它是整數還是浮點數還是其它別的數)。磁心單元一次只能處理一定長度的清單,視它們裝的寄存器的多少而定。用來存貯一個清單的寄存器數量最好為4個,這意味著被存貯的表可以有4個或小于4個的元素。舉個例子來說,一個寄存器可以包括一個占據32位的數值字和一個6位的特征字。在這種情況下,一個具有四個元素的清單將占據4×38位。
但是,注意長的清單也可以被處理,只是這時每個清單必須被分割成多個長度等于或小于磁心單元能處理的最大長度。磁心單元一次只能處理具有一定深度的樹。具有很大深度的樹也可以處理,只是一次只能在磁心單元中存貯長度有限的一部分樹,也就是說,一次只能處理樹的一部分。
目標存貯裝置(最好是相連存貯器)4P通過一個完成信號適配的轉換接口9P和一個具有閉包寬度的總線8P與磁心單元實現互連。總線8P為一條部分總線OBJV(垂直目標總線)與寄存器平面NUM相連、部分總線TAG與寄存器平面HBAD相連的總線,因此,它是一條能傳送一個一級結構的總線。接口9P把通過閉包寬度的總線OBJ 8P從磁心寄存器3P送來的信號加以放大、轉換成適合于目標存貯器中的存貯單元的信號。它也將在讀取操作中來自目標存貯裝置的信號加以放大、轉換成適合于磁心單元寄存器的信號。雖然該接口在圖中被表示成位于目標存貯裝置4P中,它也可以與磁心單元做在一起。但是,接口9P可以不認為是本發明的磁心單元的一部分,因此這里不再加以敘述。
從圖中可以清楚地看到,磁心寄存器可以分幾個標為平面NUMHEAD、BOOL、TYPE、WHERE、LAZY.CLOS/SIMPLE的部分。不同的部分包含不同數量的平面。為簡潔易讀起見,圖1中只示了少數幾個平面。在下面的描述中,TYPE、WHERE、LAZY及OLOS/SIMPLE平面被稱作屬性平面。
數值字可以存貯在寄存器平面NUM中,而特征字則可以存貯在寄存器平面HEAD中。這里可以有(比方說)32個NUM平面的和6個HEAD平面。
在圖1所示的處理器實施例中,可以有(比方說)5個TYPE寄存器平面、1個WHERE寄存器平面、2個LAZY寄存器平面和1個CLOS/SIMPLE寄存器平面。下面將對磁心寄存器的工作情況進行描述,從這些描述中可以清楚地看出將要存入上述平面的那些磁心寄存器部分中的信息。
為了介紹磁心單元的開發裝置,我們想描述一下在開發本發明的磁心單元之前被開發的特殊目標存貯裝置4P,該裝置在第 號未決美國申請中得到了進一步的描述。另外,還可以看到本發明的用于結構運算的運算單元邊可以與更普通種類的計算和存貯裝置相連。還可以注意到本發明的磁心單元是一種只執行結構運算的裝置,它使用數值運算單元(數值ALU)來執行數值運算。這就是說,給一個處理器裝上一個既執行數值運算又能執行部分結構運算的算術/邏輯單元,這個先有技術中的ALU并不為結構和數值運算而劃分成不同的功能部分。在使用通常的ALU時,為了執行與在磁心單元中執行的結構運算等效的操作,還需要一個小程序。
目標存貯裝置4P比一般的RAM型具有更多的靈巧性。它是一種相聯存貯裝置,它能提供比普通的RAM型存貯器提供的“讀”和“寫”操作還要多的服務。
目標存貯裝置被劃分成許多存貯單元,每個存貯單元包括多個存貯元素。它們提供的服務級別是很高的。舉個例子來說,只用一個存貯器指定,它就能在各個存貯單元中找到一個特定的數值單元的所有出現場合,不管它們在何處;同時能全局地即在整個目標存貯裝置的范圍內把找到的特定數據單元改寫成一個新值。由于該目標存貯裝置是關聯的,因此,這種改寫操作不管影響到多少個存貯裝置單元,都可以在二個物理存貯器周期內完成。
圖2A中給出了一個存貯裝置單元的實施例。它能存貯二類閉包單元,包括特別適合于待存貯的各元素的多個段。在圖2中,這些段被賦予了與將要存貯在其中的元素相同的名字。
第一類元素描述存貯單元的各種不同狀態。一個這類的元素是LAZY,由它指明該單元是空閑(此時該單元中的其他內容將被視為無效信息)、執行(即處于可執行狀態)。還是等待(即對該單元的數值必須延遲,在它被執行之前必須等待別的結果。另一個第一類元素為TYPE,它包括一個類型碼(可以是Par、Seq、apply list、unify等等)。這些第一類的元素適合于存貯在平面LAZY、WHERE和TYPE中的磁心寄存器部分中。另外,這個磁心單元還裝有一個稱作“CLOS/SIMPLE”的附加平面,用于提示寄存器中的信號是一個閉包還是一個簡單值。
第二類閉包單元描述識別符、環境或數值。它們是IDENTIRIERENVIRONMENT、VALUE/DES。這些第二類的元素適合于存貯在平面HEAD和NUM中的磁心寄存器部分中。這些元素中的每一個都包含一個元素字,該元素字反過來又被劃分成一個存貯在芯心單元的NUM平面中的數值字和一個存貯在芯心單元的HEAD平面中的特征字。
第二類閉包單元具有一個指示上述的數值字的特征的特征字。這個特征字有兩種類型即用作識別符和環境的間接特征字和用作簡單字等的直接特征字。間接特征字的實例有CIS,canon和open。如果特征字是CIS,則意味著數值字代表可以歸約的閉包包。如果特征字為canon,則意味著數值字表示一個不能被進一步歸約的閉包。如果特征字是open,則意味著數值字表示的閉包是一個插入清單。直接特征的實例有discr,Cont,unused和nothing。如果特征字為cliscr,則意味著數值字是一個整數。如果特征字為cont,則意味著該數值字是一個浮點值。如果特征字為unusel,則意味著該數值字沒有意義,如果特征字為nothing則意味著該數值字表示空值,即達成這樣的一致,一個閉包如果有一個段為空值,則永遠表示空值。
如果一個存貯單元的識別段中包含一個識別元素,該存貯單元中的處理狀態可以轉送到芯心單元。每一個存貯單元段VALUE/DES中都可以包括一個指示另一個單元閉包的識別符,從而與上述的另一個單元提供一種連接。被存貯的閉包的集合可以看成一種由識別符保持在一起的單元閉包的方向圖或者叫樹。
環境段中可以包括一個識別符,該識別符提示著提供該閉包的環境的閉包網絡部分(即樹)中的根閉包。但是,環境段也可以有其他用途。通過在所有被建立的單元閉包的環境中存貯建立程序的識別符,可以用環境來跟蹤一個結構的建立程序。比方說,在具有相同名稱的符號表示相同的東西的子樹中,所有的閉包單元可以通過具有相同的環境而被分組。這樣,僅在一個操作內就可以從樹的一個閉包訪問直至樹根的整個結構。由于環境不影響磁心單元中執行的操作,因此它不是本發明的一部分,對它下面不再進行描述。
這樣,一旦給定一個閉包的環境,就可以找出該環境中的樹根閉包。一個環境的樹根閉包在其存貯單元的WHERE字段中具有一個特殊標記(例如“1”)。而一個環境的結點閉包在WHERE字段中具有另一個標記(比方說“0”)。
可用于本發明的磁心單元的實施例中的寄存器示于圖2B至2D中,用于本發明的實施例中的寄存器的結構被示于圖2E中。
圖2B中示出了一個寄存器。從該圖可看出,一個寄存器由多個寄存器單元組成,每個單元可以存貯一位信息。該圖的描制方式想表示一個寄存器伸展至磁心單元中不同的平面上,每個寄存器單元位于一個平面上。
圖2C示出了一個伸展至該磁心單元中所有平面上的一個寄存器(即一個全寄存器)。這類寄存器可以在位于NUM和HEAD平面中的寄存器單元中保存一個識別符或一個值,在位于BOOL、TYPE、WHBRE、LAZY和CLOS/SIMPLE平面中寄存器單元中想可以保存一個上面描述過的狀態。
圖2D示出了只伸展至磁心單元的NUM和HEAD平面的一個寄存器(即一個有限寄存器)。
圖2E示出了磁心單元的實施例中的寄存器的一種可能的構造。磁心單元有許多最好排列成一個正方形(稱之為基寄存器陳列)的多個基寄存器。這些基存貯器沿著它的一邊有一個主行,稱作主寄存器。在其底部都有一個主寄存器的每個基寄存器列叫做子寄存器。芯心單元也可以裝有一個識別符寄存器和一個環境寄存器。在基寄存器矩陣的一邊設置有一行輔助寄存器。
在磁心單元的實施例中,所有的基寄存器除了主寄存器之外都可以是圖2D中所示的那種類型(即有限寄存器),圖2E中的其他寄存器可以是圖2C中所示的那種類型(即全寄存器)。
在詳細描述磁心單元的硬件結構之前,先根據圖3A至3F描述一下數據的不同存貯形式,并參考圖4A至4H,5A至5G和6A至6G給出其操作實例。
如圖3A所示,作為歸約結果的簡單值25位于主寄存器的一個特殊寄存器中。上述的結果可以是一個單元閉包的一部分。
進行歸約時,裝入磁心單元中的是一個目標。如圖3所示,一個只包括一個一級結構(通常是一個不參考其他單元閉包的閉包)的目標存貯在主寄存器中。本實例表示了一個簡單的數字運算,即把數值1,2和3相加。數值指令“+”存貯在第一主寄存器中,待處理的元素存貯在其他主寄存器中。
如圖3C所示,一個包括一個二級結構的樹可以使它的根清單((作為父)水平地存貯在主寄存器中,使清單(作為子)垂直地存貯在基寄存器中。在本實例中,具有清單表示((12)(34)),而結構存貯在基寄存器矩陣中。根清單(如子表中的最初元素加1,3)存貯在主寄存器中,而子清單(即(12)和(34)則垂直地垂直在子寄存器中。此外,下面將參照圖4給出這類存貯裝置的進一步實例。
如圖3E所示,包含一個三級結構的目標樹使它的樹存貯在一個輔助寄存器中,使它的單一的子節點存貯在主寄存器中。在圖3D中,目標樹的樹根(指令Transpase)存貯在一個輔助寄存器中,其子節點(即清單(id1,id2,id3)存貯在主寄存器中。清單中的每個元素反過來又可以是有“子層”的“父層”。在圖3E中,這些兒子被垂直地裝入基寄存器中,即id1與它表示的清單(123)相交換,id2與它表示的清單(11 12 13)相交換,id7與它表示的清單(27 22 23)相交換。
如圖3F所示,一個以流水線格式存貯的樹被裝入。目標清單裝入主寄存器中。目標之父裝入輔助寄存器中,而把待處理的指令和元素在這二類寄存器中都存入。對數值表達式進行歸納時最好使用流水線模型的運算。這樣做的一個優點是中間結果可以暫存在磁心單元中而不是存入目標存貯裝置中。
實例1圖4A至4H示出的第一個實例是將作為可歸約閉包給出的并行數值加以聯合unify(par(1 par(1)3)par(1 par(1)2))上述的閉包是一個可歸納的閉包,其中可以進行多個并行聯合。該可歸納閉包將被改寫成一個并行聯合結構。
圖4A中示出的最初始的可歸納閉包。圖4B表示該可歸納閉包是怎樣存貯在目標存貯裝置中的。圖4A中標出了多個存貯單元中存貯了該可歸納閉包的不同部分。圖4B中標出了元素閉包和單元閉包之間的連接。具有識別符id1的單元閉包在其類型段中具有類型碼unify,具有識別符id2,id3和id4的單元閉包在其類型段中具有類型碼par。識別符為id1的單元閉包含有指示著識別符為id2和id4的單元閉包的閉包元素前二個數值/指示。這些單元閉包的特征為canon。識別符為id2的單元閉包使它的第一和第三數值/指定閉包元素為離散值,特征字為discr,使它的第二個數值/指定閉包元素指示著其識別符為id3的單元閉包,從而特征字為canon。識別符為id3的單元閉包使它的第一數值/指定閉包元素存貯有一個整數,因此特征字為discr。識別符為id4的單元閉包使它的第一和第三數值/指示閉包元素為離散值,特征為discr;使它的第二數值/指定閉包元素指示著識別符為id3的單元閉包,因而特征為canon。
如圖4C所示,單元閉包識別符為id1的存貯單元的內容首先裝入磁心單元中,即在第一個操作步中把它的含有閉包的類型碼unify的識別符id1放置在識別符寄存器中,把數值/指定元素作為目標設置在主寄存器中。實際操作步驟如圖18所示,下面將要詳細描述。
如圖4D所示,識別符為id2和id4的子結構垂直地裝入基寄存器中,使得它們的第一數值/識別元素放置在標有它的識別符的主寄存器中,其余的數值/識別元素或一豎列放置在上面的寄存器中。每個這種子結構的類型碼par也裝入主寄存器中。這個類型碼被裝入位于TYPE平面中的寄存器單元中。
如圖4E所示,基寄存器中的內容被轉置90°,使得基寄存器的第一豎列置入主寄存器中,第二豎列放置到與主寄存器平行的基寄存器的一行中。轉置操作在圖23中得到了描述,以后還將詳細討論存貯在識別符寄存器和主寄存器中的類型碼par和unify互相轉換,這是由控制單元自動完成的。現在,假設基寄存器中含有一個父層,它有三個排成一列的子層。現在,使用指令make把每個子層裝回到目標存貯裝置中。作為回答,目標存貯裝置提供被存貯的子層的識別符,可以看出,控制電路6P屬于門電路陣列,它特別地檢測平面CLOS/SIMPLE至TYPE中的寄存器的內容,并根據從中發現的信息提供(比方說)用于控制開關和門電路的指令。子層在id1之后依次命名,已經使用了的名字則不再使用。但是,名字的順序是不重要的,因此可以是隨意的。
如圖4F所示,第一個子層得到的識別符為id3,含有與有著現別符id3的單元閉包的第二個子層得到的識別符為id4,第三個子層得到的識別符為id5。其單元閉包與具有識別符id2,id4,id5的單元閉包相聯的父層還保持它的識別符id1,然后再被存貯到目標存貯單元中。
圖4G示出了存貯有可歸納閉包par(unify(1))unify(par(1)par(1))unify(23))的存貯裝置單元。該可歸納閉包本身被表示于圖4H中。圖4G和4H的繪制方式與圖4A和4B相同,因此也是具有自解釋性的。
從圖4G中還可以看出,類型碼為unify的單元閉包在其LAZY段中給賦予的記號為exec,而識別符為id1的單元閉包被給予的記號為wait,這意味著為了把單元閉包中的內容歸納成數值,必須在執行識別符id1指定的單元閉包之前執行標為exec的單元閉包。圖4H中的閉包在以后的時間點上可以裝回磁心單元中進行進一步處理。舉個例子來說,由于數值1與其數值/指定元素中的1是相同的,具有識別符id2的單元閉包的值將為1;由于其數值/指定元素中的值2和3不相同,因此識別符為id5的單元閉包將產生空值,每個聯合都將在數值ALU中進行,由它把比較器中的值進行比較,并把比較結果送至控制單元6P。該控制單元又設定它的布爾門電路陣列,從而相應地在磁心單元的第一主寄存器中提供信息。當一次歸納產生一個規范指定或者簡單值或者空值時,它將全局地分散到目標存貯裝置的所有的存貯單元段中,目標存貯裝置可以這樣存貯第二類的單元閉包,就是使至被歸納的閉包的每個間接指定轉換成對數值的直接指定。這是由下面將要結合附圖21加以敘述的unify-id操作來實現的。
實例2本實例是一條硬件指令list expansion,意思是單元閉包包括一個插入清單。這種指令其他歸納中為輔助步。硬件指令list expansion在圖24中也得到了描述,以后還將參照圖224進行敘述。
機器進行一條叫做ex.type的范例指令的歸納,它可以是任何類型的包括數值和清單、具有下列形式的指令ex·type(1 list(2 3 list(4 5 6)) 7)這種形式被表示在圖5A中,它的單元閉包被表示在圖5B中。圖5A和5B的繪制方式與圖4A和4B相同,因而它們是具有自解釋性的。
如圖5C所示,識別符為id1的單元閉包被裝入磁心單元的主寄存器中,它的識別符和類型碼存入識別符寄存器中。由于第二主寄存器中的內容被標為間接元素open,與它相聯的單元閉包作為子層垂直地裝入基寄存器中,從圖5D中可以清楚地看到這一點。
硬件指令list expand在圖24中還將更詳細加以描述,它把第三主寄存器中的離散值7移動到第三基寄存器列中的id4旁邊的位置上,把上述的第二主寄存器之上的第二列中的清單部分移動至第三列,把其最低元素(數值3)送入第三主寄存器中,并賦予類型碼list。由于第二主寄存器中的內容為分離值,因此,它具有特征字為discr。
接下來,進行一次新的清單擴展,把上述的主寄存器上的第三列中的內容放入第四列中,并使其類型碼為list。另外,從圖中可以清楚地看出,第三主寄存器中的內容為一離散值,其特征字為discr。
此后,在把歸納結果裝回目標存貯裝置之前還進行一些其它類型的ex·type歸納。
實例3下面要執行的是數值指令。一條數值指令可以是+、-、*、/mod等等。緊跟在該指令之后的是自變量。在本例要做的是一個表中的數據之間的相加。機器對具有下列函數的一個(application)進行一次歸納apply(+list(1 2))
該 被示于圖6A中,其單元閉包被示于圖6B中。圖6A和6B的繪制方式與圖4A和4B相同,具有自解釋性。
如圖6C所示,具有識別符id1的單元閉包被裝入磁心單元主寄存器中,其識別符和類型碼存入識別符寄存器中。數值指令(+)被標為一個指令。由于第二主寄存器中的內容被標為直接元素open,與它相聯的單元閉包稱為子層垂直地裝入基寄存器中,這一點從圖6D中可以看得很清楚。
接下來執行一次清單展開運算,使第二主寄存器中的離散值的特征為discr,并在類型碼段中把經清單展開的數值2標為list。之所以這樣是因為無論識別符為id2的清單有2個、3個還是4個元素,機器進行的運算是相同的。從圖6F中可以清楚地看出,由于新表中只有一個元素,因此機器把標志list用表示主寄存器含有一個數值的標志即discr來代替。
這樣,主存貯器包括一個指令標記(+)和二個離散數值,這將(比方說)通過存貯在目標存貯裝置(存貯有指令)中的與指令有關的信息,控制數值ALU執行指令,并把數值運算的結果作為一個規范值送至第一主存貯器(如圖6G所示)。應該注意的是類型碼段中的符號apply是一個表示要進行的是逐數應用的標志。結果數值((本例中為簡單數值3)被全局地分配,從而與每一個識別符id1相交換。
平面NUM和HEAD的磁心寄存器單元與平面2P的接口9P間的總線OBJv、id總線(即識別符總線)和env總線(即環境總線中的線相連。OBJv總線包括V0、V1、V2和V3等多個總線部分。
下面講述其余的平面的用途及連接情況。
磁心寄存器單元陣列和寄存器垂直地被“分片”成多個平面,屬于相同的NUM和HBAD平面但是不同的寄存器的寄存器單元再被以圖7中所示的方式互相連接起來。
在如圖7中所示的至少NUM一和HEAD一平面的結構中,有一個寄存器單元方陣被放置在一個具有S0,0至SN-1,SN-1N×N個寄存器的矩陣中。該矩陣中的寄存器單元叫做基寄存器,寄存器單元叫做基寄存器單元。
這些基寄存器在大多數應用場合下用于暫時地存貯閉包單元。寄存器的符號也嚴格地根據情況分類,比方說,指寄存器的實際位置時使用象基、主和輔助寄存器一類的符號;指寄存器的功能時,使用象子層、目標和父層寄存器一類的符號。
在本實施例中N=4,這是最希望的,當然也可以選擇其他矩陣尺寸(圖中未示出)。最低一行的基寄存器單元S0,0,S1,0,S2,0和S3,0如圖3所示的那樣和總線ho中該平面專用的線相連,因而是主寄存器。這些主寄存器單元S0,0、S1,0、S2,0和S3,0經常用作目標根寄存器,它們通過一根由導線NU0至NU3組成的總線NU至數值ALU 1P相連。
這里應該注意的是,根據本發明的示教,也可以構成不提供數值運算需求的簡單處理器。在與此類似的情況下,也可以省掉數值ALU(見圖1)。
識別符寄存器單元ID與連線id相連,環境寄存器單元ENV與連成env相連。
總線連接hi與點線連線vi通過一個開關SWvi相連,這里的i為0至3中的一個數。包含總線連線h0,h1,h2,h3的總線叫做OBJh,即水平目標總線。該總線OBJh用來和其它部件一起在磁心單元中垂直地裝入一列寄存器中的數據,這些數據是由目標存貯裝置通過總線OBJv提供的。這將在以后參考圖20作進一步的描述。
總線連成id,env,V0,V1,V2和V3分別通過開關SWid,h0,SWonv,h0、SWv0、SWv1,h0、SWv2,h0,以及開關SWV3,h0與總線連線h0相連。包括總線連線Cid。Cf、Ch和Cv的總線res與控制單元6P相連,可以用來給寄存器設置常數(如零)。總線連線Cid與識別符寄存器單元相連,而總線連成Cf則與寄存器單元F0,F1,F2和F3相連,總線連線Ch通過開關SWch,h0可與總線連線h0相連,總線連線Cv通過開關SWvi,cv可與總線連成xxi相連,這是i為0至3間的數字。在某些應用場合R(圖中未示出),總線res及它的開關可以省略。
在數據樹中有一個頂端層,稱作父層。這個父層有時候存貯在位于圖7左邊的輔助寄存器單元F0,F1,F2和F4中。在圖示的實施例中,每個輔助寄存器中都能存貯一個磁心字。每個輔助寄存器單元可以分別與總線連線id和與該總線連線id垂直布線的總線OBJh中的連成h0、h1、h2和h3中的一根相連。輔助寄存器單元R在磁心單元能提供的少數運算中才會用到。因此在某些使用根據本發明的磁心單元的使用場合(圖中未示出)下,輔助寄存器可以省略。反過來也有可能提供一個具有多于一列輔助寄存器的磁心單元(圖中未示出)。
從上面可以清楚地看出,每個寄存器是由多個位于幾個平面2P上且在平面上具有相同位置的寄存器單元構成。因此,即使圖7中只示出了每個寄存器的一個單元(即一位),整個寄存器也是用圖7中所使用的參考符號來標識。從圖7中可以清楚地看出,寄存器成行成列配置。輔助寄存器區F0、F1、F2和F3在一列中,N個基寄存器區S0,0,至S0,3,S1,0至S1,3,S2,0至S2,3,S3,0至S3,3都分別在一列中,能夠存貯一個子層。
每個平面中相鄰的基寄存器單元之間在水平和垂直方向上都提供了連接。對于水平行上面向目標存貯裝置每個最外邊的基寄存器,也提供了具有固定的編程值(本實施例中為“假”f)的一種連接。基寄存器之間在對角線方向上也可以設置連接從而使可轉送信息的位置之間連接起來。這意思是說,一個單元Sij(i不同于j)可以和單元Sji連接起來。每個基寄存器與位于右下方最接近的基寄存器相連,只要在那個位置上有基寄存器。每個輔助、識別符、環境和基寄存器單元都分別通過輸出端ACCpx、ACCid、ACCeny和ACCsx,y與平面BOOL中的一個相連,這里的x和y是0至3之間的數。
下面講述位于平面NUM和HEAD中的一個一般寄存器單元(圖8)。圖9A至9F中示出了該一般寄存器單元中所使用的開關的門電路的實施例。從這個一般寄存器單元可以得出輔助寄存器單元(圖10)和識別符寄存器單元(圖11)的實施例。
再下面將講述位于ATTRIBUTE(屬性)平面中的寄存器單元的實施例。圖13中示出了識別符寄存器單元,圖14中示出了輔助寄存器單元,圖15中示出了主寄存器單元。
參考圖8,一個寄存器單元的最佳實施例包括二根內部總線aR和bR,以及一個中央內部寄存器rR。總線aR和bR與該寄存器單元之外的多根連接線相連。圖8中的實施例示出了一種裝有各種與外界的可能的連接的一般寄存器單元。在典型情況下,一個具體的寄存器單元并不裝有圖8中所示的所有連接線,而是根據該寄存器單元的位置缺少一根或多根。從圖7中的布線情況可以清楚地看出被連接端口間的所有布線。從圖7中也可以看出,并不是所有的寄存器單元都具有圖8所示的所有外連接線。因此,這里不準備給出所有寄存器單元以及它們的連接情況的詳細描述。
總線aR通過開關SWvi和端口V與垂直總線連線VX相連,這里X為0至3間的一個數。另外,它還通過開關SWHi和端口H與水平總線hy相連(y為0至3間的一個數),通過與相鄰的寄存器單元中的開關SWE(東)相連的一個端口W(西)與左邊的寄存器單元相連;如果該寄存器單元是主寄存器單元的話,它還直接通過端口NU與數值運算單元1P相連。總線aR還通過接至右下方的寄存器單元中的開關SWD6的端口Da與該寄存器單元相連,通過接至它下方的寄存器單元中的開關SWN(北)的一個端口S(南)與該寄存器單元相連。寄存器單元可以通過與點線aR相連的端DC和開關SWC進行置位和復位。總線aR可以通過一個開關SWa1與中央內容寄存器rR的輸入端相連,也可以通過開關SWa0與它的輸出端相連。
總線bR通過開關SWE和端口E與右邊的寄存器單元相連,通過開關SWD6和端口D6也可對角的寄存器單元相連,通過開關SWN和端口N與上面的寄存器單元相連。總線bR還通過開關SWb1與中央內部寄存器rR的輸入端相連,通過開關SWb0與其輸出端相連。
中央內部寄存器rR包括二個轉換器Q1和Q2(最好是CMCMOS轉換器),和它們之間的一個可控開關SW2。一個完整的寄存器單元還包括總線aR和bR、開關SWa1,SWa0,SWb1,SWb0和使該單元與外界相連的開關。該中央內部寄存器rR的輸出分別通過開關SWH0、端口H以及開關SWVO、端口V與水平和垂直總線相連。中央內部寄存器rR存貯一種動態狀態(下面將進行描述)。
磁心中所有寄存器單元中的所有可控開關都可以通過與控制單元6P相連的連線加以控制。控制電路6P包括一個門電路陣列,比方說,一個PAL(Programmable Array Logic可編程陣列邏輯)。該門電路陣列使用存貯在磁心單元中的信息來確定開關哪個開關,以及關閉哪個開關。門電路的工作由一個時鐘信號加以同步。這些開關都是雙向的,但是也有一些(如輸入和輸出開關SWHi和SWHo)只用于單向。
比較器裝置COMP包括一個第一與非門G1。一個輸入端與反相器Q1的非反相輸入端相連,與一個與反相器22的輸入端相連。該裝置COMP還包括一個第二與非門G2,它的一個輸入端與反相器Q1的輸出端相連,另一個輸入端與反相器Q2的輸出端相連。這二個門G1和G2的輸出與前往一個BOOL平面的單線總線ACC相連。這個與非門可以如圖9D中所示的那樣由兩個串聯連接的MOS場效應管構成;這兩個串聯連接的MOS場效應管的串接的源/編通道連接在地和BOOL平面之間,它們的柵極與非門輸入端,上面的那個MOS場效應管的漏極即為輸出端。在關聯檢索期間,即在應該把磁心單元中的一個元素與目標存貯裝置中的或者該磁心單元的其它部分中的一個元素相比較期間,就要用到該比較器裝置CONP。被比較的元素加到含有要比較的元素的寄存器單元的輸入端上,這在以后還要詳述。
反相器Q1和Q2可以由兩個增強型MOS場效應管組成,也可以由如圖9B那樣連接的一個增強型一個耗盡型二個MOS場效應管組成,也可以由二個相補的MOS場效應管(如圖9)組成。寄存器單元中的可控開關既可以由一個MOS場效應管,也可以由如圖9F那樣連接的二個相補的(增強型)MOS場效應管組成。控制單元6P通過一個控制信號C控制這些開關。從圖9F中可以看出,為了實現更快的狀態轉換,開關可以既用控制信號又用它的相補信號來加以控制。
我們可以把圖8中的一般寄存器單元視為磁心單元中所有寄存器單元的基礎,即它們是用相似的方式來設計的。從上述的一般寄存器單元推出的寄存器單元只是在端口和附帶的輸出輸入開關的數量上有所區別。這種推導出的單元被賦予與圖8中所示的單元相同的參考數字。
基寄存器單元S0,0,S0,1,S2,3和S3,3沒有裝上開關SWD6和端口D6,基寄存器單元S0,0,S1,0,S3,2和S3,3不具備Da端口,主寄存器單元(S0,0至S2,0)不具有S端口,而其他的基寄存器單元(S0,1至S3,3)不具備NU端口。所有的基存貯器單元都不具備C端口和SWC開關,而是使用水平和垂直總線以及端口V和H用總線連線Cv和Ch提供的常數值使一個寄存器單元置位或復位。
如圖10中所示的輔助寄存器單元只具有端口Hy,V,C和ACC,這里y是0至3之間的一個數,V端口與總線連線ID相連,C端口與總線連線Cf相連。
圖11中所示的識別符寄存器單元只有端口V,C和ACC,這里V端口與總線連線ID相連,C端口與總線連線Cid相連。環境寄存器單元(圖中未示出)與圖11中的識別符寄存器單元相近似,雖然在本實施例中它沒有C端口和SWe開關。在另一個實施例中,環境寄存器單元就可以包括C端口和SWc開關。
在進行關聯檢索期間,對前往BOOL平面的與訪問相連的總線將進行比較。二個與門G1和G2把關鍵值即Q1的輸入端上的被比較值和Q2的輸入端上的存貯值進行比較。在比較期間,該關鍵值通過內部總線aR或bR轉換至Q1。開關SW2必須為關(即開路)如果提供的值(關鍵值)與存貯值不匹配,那么被充電的BOOL平面將通過與非門G1和G2放電。如果匹配,BOOL平面還保持充電狀態。
寄存器中所有的總線連線(每個寄存器單元都有一根總線連線ACC)都可以平行連接,并連接至BOOL平面中相同的總線連線上。另外,NUW和HEAD平面中所有寄存器單元中的總線連線ACC可以與指定給這些平面的BOOL平面中的一根總線連線相連,ATTRIBUTE平面中提供的所有寄存器單元可以和同一BOOL平面或者指定給該ATTRIBUTE平面的第二個BOOL平面中的一根分離的總線連線相連。至于提供了一個還是二個BOOL平面,以及一根還是二根總線連線,那是隨選擇而定的,取決于存貯在控制單元6P中的控制指令的類型。具有多于二個BOOL平面也屬于本發明的范疇。提供的BOOL平面的數量反映了關聯檢索的細微度,即能進行的不同的關聯檢索的數量以及能執行的程度(即涉及哪些寄存器部分)。這樣,與BOOL平面中同一根總線連線的寄存器部分可以同時進行比較。如果所有的與非門G1和G2具有相同的輸出(高)那么比較將產生“匹配”,否則將產生“不匹配”。“匹配”是指兩個信息完全相同。因此,BOOL平面是總線連線的平面,可以被視為虛擬或者叫“想象”平面,也就是說,點線連線不一定非得設置在一個平面中,而是可以直接和控制單元6P相連。
ATTRIBUTE平面具有與平面NUM和HEAD不同的結構,這種結構示于圖12中。和圖7中的元素具有相同結構的元素仍使用相同的參考符號。這類平面包括開關SWv0、SWv1、SWv2和SWv3,一個識別符寄存器單元IDT,四個輔助寄存器單元F0T,F1T,F2T,F3T以及只包括主寄存器單元S0,0S1,0、S2,0和S3,0的基寄存器單元。此時,基寄存器矩陣被減少成一列分別與總線連線V0、V1、V2和V3以及(通過開關SWv0、SWv1,h0、SWv2,h0、SWv3,h0與總線連線h0相連的象圖7中所示的寄存器平面那樣的主寄存器單元S0,0至S3,0。總線連線hi通過開關SWvi可與總線連線vi相連,這里i為0至3間的一個數。另外,總線連線V0,V1,V2和V3除了引向NUM和HEAD平面中具有相同標號的總線連線之外,還可以引向接口9P的其它輸入端,因而可以連接到目標存貯裝置4P的其他部分(最好是LAZY,WHERE和TYPE部分)。另外,總線連線V0、V1、V2和V3還可以根本不需要和目標存貯裝置4P相連,而使用總線來從目標存貯裝置(即LAZY,WHERE和TYPE段)中向磁心單元中相應平面內的總線連線id轉送狀態信息(見圖1)。另外,主寄存器單元列S0,0至S3,0,識別符寄存器單元IDT以及輔助寄存器單元F0T至F3T都與點線ves相連,該點線res與圖7中所示的寄存器平面一樣包含總線連線Cid,Cf,Ch和Cv。
垂直列的識別符寄存器單元IDT和四個輔助寄存器單元P3TP2T,F1T和F0T另外還與總線連線id相連,還與前往控制單元6P的第二點線連線cont(圖1中未示出)相連。控制單元使用可以轉送到該點線上的信息來確定應該進行哪類歸納。
圖12中所示的那類寄存器平面中的每個寄存器單元還有它的訪問線與點線ACC以及一根輸出線SDi(這里i為0至3的一個數,或者F0至F3的一個符號ID),用來直接觀察與該輸出線相連的所有寄存器單元的狀態。
圖13中示出了位于ATTRIBUTE平面中的識別符寄存器單元IDT的實施例。它有四個端口V,CONT,SP和ACC。端口V和CONT分別可以和總線id和cont相連。端口CONT通過開關SWCONT與內部寄存器VR的輸出端相連。端口SD與內部寄存器rR的輸出端(即反相器Q2的反相端)相連。端口C與總線連線Cid相連。
圖14中示出了位于ATTRIBUTE平面中的一個輔助寄存器單元FYT的實例,這里Y為0至3間的一個數。與識別符寄存器單元IDT相比較這種寄存器單元有一個附加端口,即端口H。端口H能與總線連線hy相連,這里的y為0至3間的一個數。其余端口的連接方式與識別符寄存器單元IDT中的相應端口類似。端口C與總線連線Cf相連。
圖15中示出了位于ATTRIBUTE平面中的一個主寄存器單元SX,0的實施例,其中x為0至3間的一個數。它有六個端口V,E,H,W,SD和ACC。端口SD與內部寄存器rR的輸出端(即反相器Q2的輸出端相連。其余端口的連接與NUM和HEAD平面中的寄存器單元的相應單口的連接情況類似。這些主寄存器單元不具有C端口和SWc開關,相反它們是用端口V和H用點線連線CCv或Ch提供的恒定值使寄存器單元置位和復位的。
備份存貯裝置模式環由該單元中的一個或二個環組成。其中一個環由開關SW60、總線bR。開關Wb1、反相器Q1、開關SWSW2及反相器Q2組成。另一個環由開關SWa0、點線aR、開關SWa1、反相器Q1、開關SWQ和反相器Q2組成。當一個或二個環中的開關被閉合時,信號可以通過二個反相器Q1和Q2前進信號電平在反相器Q1的輸入端和反相器Q2的輸出端處將變得穩定,數據就是這樣存入單元中的,該單元中存貯的是一種動態狀態。
在輸出模式下,Q2的輸出可以傳送到總線aR或bR中的一個上,再從那通過控制適當的開關傳送到一個或多個輸出端口(N,S,E,W等)的輸出端子上。另一根總線bR或者aR可以用于任意模式。如果開關SWa為關(即開路),則反相器Q2的輸出是穩定的,亦即在開關SWa閉合之前,它不會改變。反相器的輸入可以在開關SWb0閉合時轉送至總線bR,在開關SWa0閉合時轉送至總線aR,在開關SWcont閉合時轉送至輸出端cont,并且直接轉換至SD端口。通過控制連結在寄存器單元和外部總線之間的開關,還可以把總線bR和aR上的信息轉送到與該寄存器相連的外部總線上,這樣在下面通過實例加以進一步說明。
在輸入模式期間,開關SWa1或者SWb1中有一個為開(亦即閉合)。這樣,各端口(N,S,EW等)中有一個的狀態可以轉送至本地點線aR或bR,再從那轉送至中央內部寄存器rR。
通過至磁心單元中另一個寄存器單元的端口連接線可以在二個相位周期內把任何寄存器單元中的數據轉送至另一個寄存器單元。在三個位相同周期內可以實現垂直、水平或對角線方向上的寄存器單元之的數據交換。
開關SWa直接由一個主時鐘同步,該主時鐘同時也給寄存器中的所有單元提供同步,這樣可使反相器Q1和Q2之間的轉送在整個磁心單元中同時完成。其余的開關由從主時鐘得出的但提供與主時鐘周期具有不同的適當相位間隔的信號來控制。對于磁心單元中的所有操作,主時鐘都用作為一種參考信號。
時鐘周期可以被劃分為時鐘相位O、a和b。在中央內部寄存器rR處于各份存貯裝置模式時即數據穩定時,相位O是第一個可伸展相位。從點線aR進行傳輸時使用相位a,從總線bR進行傳輸時使用相位點。
單向轉送(即只以或者只向寄存器單元)在二個相位的時鐘周期內進行。第一相位O是穩定的。相位a或相位上用于在二個相位的時鐘周期內進行傳送。
雙向轉送(即二個寄存器單元之間進行轉送而交換它們各自的內容)在三個相位時鐘周期內進行。相位O是穩定的。在相位a和b期間,在不同的方向上執行傳輸。
應該注意的是,具有多個三個相位的時鐘周期(比方說二個b相位)也屬于本發明的范圍。
開關SWa1和SWb1通常是閉合的。總線aR和bR都保持著寄存器單元的存貯狀態。當使用一根內部總線aR或者bR來輸入要存貯的新值時,相應的開關SWa1或SWb1被控制成開路。在一個長到足以使該總線上的信息轉送至該內部總線的短時間間隔內,連至外部總線(如垂直或水平點線)的一個開關閉合。
還可以使用移位網絡即包含與各端口相連的開關的各個不同的寄存器單元間的網絡來把寄存器單元中的內容向北N、或向西W、或向或向東E轉送。
圖16A中示出了二個相鄰的基寄存器單元,數據將從左邊的那個發送元傳送至右邊的那個接收元中。來自控制單元6P的控制信號控制著這些開關。圖16B中表示的是被上述的轉送影響了的每個開關在不同階段的狀態,圖中低值表示一個打開的開關,而高值表示一個閉合的開關。實際的轉送在b位相中進行。轉換以下列的方式進行(下面的各不同步驟被標上與圖16A和16B中相同的數字)0.電路處于穩定狀態,SW2、SWa0、SWa1、SWb0SWb1閉合,發送元和接收元中的所有其它開關都打開(由于它涉及至所有的開關,因此在圖16A中未標出)。這種穩定狀態對應于圖16B中的相位O。
1.在時鐘間隔的第一個相位(相位b)期間,發射元和接收元中開關SWa均打開,2.發射元和接收元中的開關SWa0打開,開關SWb0閉合,3.閉合發射元和接收元之間的開關SWE,4.打開發射元和接收元中的開關SWb1,5.打開發射元中的開關SWa1,閉合接收元中的開關SWa1這將使數據從發射元內部寄存器前進至接收元內部寄存器,6.在時鐘間隔的第二個相位(相位O)期間,閉合接收元和發射元中的開關SWa,7.打開發射元和接收元之間的開關SWE,8.先閉合開關SWb0和SWa0,再閉合接收元和發射元中的開關SWb1和SWa1。這將把我們帶回到上述的步驟0(即相位O)中描述的穩定狀態。
圖17A中示出了兩個相鄰的寄存器單元,這二個不同的基寄存器單元中的數據通過一次雙向傳送操作進行互換。來自控制單元6P的控制信號控制著這些開關。圖17B中示出了被發送元影響的每個開關在各個不同相位時的狀態,其中較低值表示開路開關,較高值表示一個閉合開關。這二個寄存器單元都是既作為發送元又作為接收元,因此,下面把它們稱為“單元1”和“單元2”。從單元2到單元1的轉送在相位a中進行,另一方向從單元1至單元2的發送則在相位b中進行。下面的不同步驟被標上了與圖17A和17B中相同的數字。這種轉送以下列方式進行0.電路處于穩定狀態,SWa、SWa0、SWa1、SWb0、SWb1閉合,二個單元中其它所有開關打開(這一步由于涉及所有的開關,因而在圖17A中未標出)。這種穩定狀態與圖17B中的位相O相對應。
1.在時鐘間隔的第一相位(相位a)期間,打開單元1和2中的開關SWa。
2.閉合單元1和2中的開關SWa0,打開單元1和2中的開關SWb0,3.閉合二個單元之間的開關SWE,4.打開單元1和2中的開關SWa1,5.閉合單元1中的開關SWb1,打開單元2中的開關SWb1這就能使數據從單元2前進到單元1中。
在時鐘間隔的第二個相位(相位b)期間開關SWa仍然打開時,
6.打開單元1和2的開關SWa0,關閉單元1和2中的開關SWb0,7.打開單元1和2中的開關SWb1,8.打開單元1中的開關SWa1,閉合單元2中的開關SWa1,這將使數據以單元1前進到單元2中。
9.在時間間隔的第三相位(相位O)期間,閉合單元1和2中的開關SWa,10.打開單元之間的開關SWE,11.先閉合開關SWb0和SWa0,再閉合二個單元中的開關SWb1和SWa1,這將把我們帶回到上面在步驟O中描述過的那種穩定狀態(即相位O)。
在相位O期間,這些信號的缺省值為“通”,即門電路閉合。所有的本地點線都保持著存貯狀態。通過把開關SW2和開關xo的控制信號設置成斷(即開始),就可以控制用于輸入的點線,這里的x為a或b。在輸入操作期間,有多根點線在一個短周期內由一些端口(E、V、D、H等)短路。過一會,這些點線就會得到正確的值。
從開關SWa的控制信號的下降部分至開關SWX0的控制信號的下降部分有一個延遲。這里x為a或b。如果它很短,則不產生任何問題。但是如果該時間達到MS級,則總線XR(X為a或b)有可能失去它的動態狀態。
從開關SWX0的控制信號的上升部分至開關SWX1(x為a和b)的控制信號的上升部分有一個延遲時間。如果變成負值,則一個錯誤值可能前進到從反相器Q2至反相器Q1的本地點線XR上。因此需要一個正的延遲時間。
這些開關一般是不通(即開路)的。此時所有的本地總線均被絕緣。通過把送至與一條總線相連的端口開關的控制信號置為“通”(就是使該開關閉合),就可以控制用于輸入或輸出的那條總線。在這個操作期間,可以用一些開關(SWE,SWV,SWD和SWH等)使多根總線短路一小段時間。過一會以后,總線就能得到正確的值。
從開關SWa的控制信號的下降部分至開關SW2(2可以是HD、N、V、E等等,即任何與裝有開關的內部總線aR和bR相連的端口)的控制信號的上升部分之間有一個延遲時間。如果它是負值,則本地總線XR(X為a或b)的值可能變換。那時可以設置寄存器值。因此這個延遲時間應該是正值。
從開關SWz(z為H、D、N、V、E等等,即任何與裝有開關的內部總線aR和bR相連的端口)的控制信號的上升部分與開關SWX1的控制信號的上升部分之間有一個延遲時間。如果它是負值,則數值不能前進到輸入端。因此,應該用一個正的延遲時間。
從開關SWX1的控制信號的上升部分至開關SW2的控制信號的下降部分之間有一個延遲時間。如果它為負值,則本地總線將會被改變,寄存器可能被設置成一個錯誤值。因此,需要一個正的延遲時間。
在相位O期間,這些信號的缺省值為“通”。但是從開關SWa的控制信號的上升部分到開關SWa1和SWb1的控制信號的上升部分之間必須稍稍有些延遲時間。
如果上述的延遲時間為負值,那么反相器Q2的輸入端上的值就不能前進到總線XR(X為a或b)。因此,必須使用一個正的延遲。
典型的列表指令在一個機器周期內執行。正如前面提到過的那樣,磁心單元執行的是結構運算,由磁心寄存器使用它包含的清單中的指令來執行所有的步驟。下面示出了這些指令的例子length 計算目標的長度map 用于清單中的元素的一個功能,如清單中包含插入表則該指令也適用于這些插入清單中的元素。(指令mmap將在下面加以詳述。
filter 用于過濾一個清單中的單元的功能。這種過濾也適用于插入表(如果有的話)。
join 所有的元素被重寫回插入表元素。本指令也適用于插入表(如果有的話)。
transpose 使一個小矩陣變位。如果它包含清單元素,則這些元素被互相換位。也處理插入表。(指令transpose將在下面加以詳述)。
磁心單元
*在幾個寄存器(最好是基寄存器中)存貯要歸納的目標。
*在某些情況下(如要歸納一個三級結構時),在最好是輔助寄存器中存貯目標的根,而在基寄存器矩陣中存貯其余的結構。
磁心單元中的暫時存貯有四種情況,即存貯0,1,2和3級目標時的情況。
一個簡單樹即一個簡單值(0級目標)被存貯在第一主寄存器中。
只包括一個級別的樹存貯在主存貯器中。
包括二個級別的樹可以把它的根清單作為父層水平地存貯在主寄存器中,而把清單作為子層垂直地存貯在基寄存器中。另一種方法是根可以存貯在輔助寄存器中,把子層中的一個存貯在主寄存器中。應該注意到的是,控制單元6P能根據要執行的實際操作而選擇這二種方法中的一個。
包括三個級別的樹把根清單存貯在一個輔助寄存器中,把它的二個級別的子層中的一個存貯在基寄存器矩陣中。
這樣,一個目標樹的根清單最好能根據樹結構的級別以及要執行的運算存貯在磁心單元中不同地方的寄存器中。
目標樹的根是一個可歸納(如unify)類型的閉包。在函數應用中,第一個元素為一個指令或者間接地指定一個用作為函數定義的閉包結構的識別符,其余的元素則是該函數/函數定義的變元。
存入磁心寄存器中的信息由目標存貯裝置4P中的信息得出。磁心寄存器單元中的信息以下面的方式存貯
ATTRIBUTE平面中的磁心寄存器與目標存貯器總線OBJ相連。所存貯的狀態由識別符寄存器IDT、輔助寄存器FOT至F3T以及基寄存器S0,0至S3,0的存貯狀態組成。
送至ATTRIBUTE平面中的磁心寄存器單元的控制字包括送至開關SWvi、SWvi,cv(i為0至3的一個數)。SWid,hoSWch,ho,SWV1,ho,SWV2,ho以及SWV3,ho識別符寄存器IDT、輔助寄存器F0T至F3T的主寄存器S0,0至S3,0的多個較小的控制字。
控制字通過與控制單元6P相連的多根控制線轉送。這些控制線可以是雙相控制對線,也可以是單相控制單線,取決于使用了什么類別的開關(見圖9E和9F)。
送至主寄存器S0,0至S3,0的每個的控制字通過一個公共部分和各基寄存器特有的部分來傳送。上述的公共部分控制著該磁心單元中的開關SWa0,SWb0和SWa(見圖15)。另外,必須注意的是這里所描述的只能被視為一個例子,從中可以觀察到幾個其他類型的實施例。
平面HEAD和NUM中的磁心寄存器與目標存貯裝置總線OBJ、存取點線ACC、res點線和數值ALU點線NU相連,被存貯的狀態由二個單寄存器ID和ENV、輔助寄存器F0至F3以及基寄存器S0,0至S3,3的存貯狀態組成。
送至磁心寄存器的控制字由送至開關SWvi,SWvi,cv(i為0至3間的一個數)、SWid,ho、SWch,ho、SWehv,ho、SWV1,ho、SWV2,ho和SWV3,ho、SWvio、SWV1、SWV2、SWV3、單寄存器ID和ENV。輔助寄存器F0至F3和基寄存器S0,0至S3,3的控制字組成。
這些控制字通過與控制單元6P相連的多根控制線被傳送。這些控制線可以是雙向控制對線或者是單相控制單線,取決于使用了哪一種類的開關(見圖9E至9F)。
送至兩個寄存器單元的控制字包括一個公共部分和一個每個基寄存器特有的部分。公共部分控制著磁心單元中的開關SWao、SWbo和SWa(見圖8)。但應該注意的是這里描述的僅僅只能看作是一個例子,從中可以推導出幾個實施例。
圖18至24是從圖7中得出的,圖7中的標記也適用于圖18至24。但是,為清楚起見,我們省略了大部分標號。另外,在圖18至24的描述中,各寄存器單元的標號旨在表示穿過平面2P的整個寄存器。
1.對目標存貯裝置4P的訪問mpx-my指令通過目標存貯操作mpx-mv,我們讀取目標存貯裝置4P,并且設置主寄存器。被訪問的目標正象圖18中帶有指進行傳送的寄存器單元的粗實線所示的那樣,通過總線V0、V1、V2和V3送給主寄存器S0,0,S1,0,S2,0,S3,0,通過總線id送至識別符寄存器ID,并且通過總線env送至寄存器ENY與此同時,主寄存器中的原有內容作為一個閉包存貯在目標存貯裝置4P中。這樣,mpx-my指令把當前的磁心單元閉包存貯在目標存貯裝置中,并把下一個要執行的目標存貯裝置閉包裝入磁心單元中。
圖19和圖20表示了這樣一種情況,即在一個主存貯器中存貯了一個識別符,該識別符要和它指定的信息而交換。把這個如圖19中存貯在S2,0中的識別符送給目標存貯裝置4P,目標存貯裝置找出該識別符及其它表示的內容,把該內容放到總線連線V0。至V3上,最后裝入一垂直基基寄存器(如圖20中的S2,0至S2,3)中。
上述操作是由通過總線ho及開關idid,ho(圖19)把基寄存器S2,0中的識別符發送至垂直點線id上開始的。存貯值可以以相似的方法從任何其它寄存器發送。
操作繼續時,把目標存貯裝置4P在點線連線V0、V1、V2和V3上提供的值裝入適當的寄存器中,在本例中這些寄存器為S2,0、S2,1、S2、2、S2,3,并通過開關SWV0,SWV1,SWV2和SWV3及總線h0,h1,h2和h3來轉送數值。
當磁心單元中的內容要存入目標存貯器中時,可以使用目標存貯操作make和unify-id。
make指令在make操作的第一步,有關寄存器中的內容被如圖20所示但以相反的方向進行傳送。該操作也能轉送環境寄存器內容。為了找到存貯有與磁心單元提供的信息相同的信息,在目標存貯裝置中執行一次關聯搜索。如果找到目標,則返回表示該目標的標識符;反之,如果沒有找到目標,則返回一個未用標識符。在這二種情況下,都使用總線連線id把標識符從目標存貯裝置轉送至磁心單元中的識別符寄存器。另外一種方法是把識別符轉送到受到影響的那列寄存器中的主寄存器中。這樣,在磁心單元中的內容與識別符之間就能建立起一種關聯關系。
unify-id操作示于圖21中,該操作通過開關SWid,SWid,ho,SWenv,ho,SWvo,SWV1,ho等把相關的寄存器單元與水平總線ho連接并把所有的垂直點線與水平點線ho相連,從而使一個寄存器(如S2,0)中的識別符分散到所有的垂直點線id,env,V0,V1,V2和V3上。在執行關聯檢索及替換時,比方說要找出一個識別符的出現場合并且要用一個新的被歸納了的簡單值來替代找到的那個識別符時,就可以使用上述操作。
在與unify-id操作類似的操作中,在第一步可以使用make為磁心單元中的內容得到一個唯一的識別符,在第二步中把該磁心單元中的內容放到與目標裝置相連的點線連線上,從而達到使用目標存貯裝置存貯該識別符和它指定的內容的目的。
在附錄1中給出了unify操作的一個例子,附錄1中示出了磁心單元中的內容以及相位a、b和O的開關狀態。
2.數值歸納在進行數值歸納時,把要歸納的目標(即目的值)放置在主寄存器中。一般說來,整個目標都參加歸納。典型的情況下,主寄存器S0,0保存指令碼,它對于不同的指令呈不同的比特格式。寄存器S1,0和S2,0用于進行雙值運算(即需要二個操作數的運算)寄存器S1,0用于單值運算(即只有一個操作數的運算)。一般情況下,后面的寄存器用于列表形式,因此在一次歸納之后它們的內容即被推向左邊。
然后,在目標寄存器S1,0和S2,0之間進行重要的數值運算。數值ALU的一個主加法器與這二個寄存器相連。其余的寄存器在象mul,div和mod等指令中用于補充目的。
可以使用下面的指令類型單值指令寄存器S0,0保持指令。寄存器S1,0保持操作數。寄存器S2,0和S3,0未使用。數值ALU的結果返回到所有主存貯器中。在非流水線的情況下,它被存貯在寄存器S1,0中在流水線的情況,它將被立即存入輔助寄存器或基寄存器中。
雙值指令寄存器S0,0保持指令,而寄存器S1,0和S2,0保存操作數。寄存器S3,0未使用。結果返回到所有的主寄存器中。在非流水線的情況下它被存貯在S1,0中,在采用流水線的情況下,它將被立即存入輔助寄存器或基寄存器中。
nul,div,mod指令寄存器S0,0保存指令,寄存器S1,0,S2,0保存操作數。寄存器S3,0可以用于暫時地存放中間結果。最終結果存入寄存器S1,0中。
unify指令聯合歸納時使用數值ALU比較寄存器S0,0中的內容與寄存器S1,0的內容。在執行聯合時,也可以使用其他的主寄存器。寄存器的HEAD平面中存貯的特征字用來和比較結果一起用于計算下一個動作的值。
指令mul,div和mod完全在數值運算單元內執行它們的內環。計算到的中間值可以動態地存貯在磁心單元中數值運算單元和主寄存器之間的連線(即點線NU)上。
3.結構歸納在進行結構歸納期間,待歸納的目標(即目的值)被放置在主寄存器中。一般情況下,基寄存器的一部分或全部將參加歸納。典型情況下,S0,0保持指令碼,對于不同的指令就會有不同的位格式。
map指令具有一個函數f和作為變元的一個清單(el,……en)。給清單中的每個元素都使用該函數。該指令返回每個函數使用的結果的一個清單(fe1,…,fen),這里fe1表示把f應用于e1時的結果。
mapping指令格式(map f list)。
map指令裝入輔助寄存器F0中,把要使用的函數裝入輔助寄存器F1中。清單裝入主寄存器S0,0至S3,0中。如圖22a所示,存貯在主存貯器中的元素中的元素在底寄存器陣列中被向上轉送二層,就是說把寄存器SX,0中的內容轉送至SX,2寄存器中這里的X為0至3的一個數。這種轉送是使垂直總線連線V0至V3來完成的。接下來,從圖22b中可以看出,輔助寄存器F0和F1的內容被水平方向“廣播”給其它基寄存器,即F0的內容拷貝至S0,0至S3,0,F1的內容拷貝至S0,1至S3,1。如果一個元素為簡單值(不是清單),那么,該元素所在的那個寄存器單元(如S1,2)及它下方的寄存器單元(如S1,1)中的內容要向下移位一層。現在,要使用的函數位于主寄存器單元(如S1,0)中,即函數要施用作用的元素位于該主寄存器之上(如S1,1)中。如果元素為一個清單,則那一列寄存器中就不作移動。在圖22C中,假定e1,e2和e3表示簡單值,而e4表示插入清單。因此,基寄存器矩陣中的每一列都將作為一個閉包存入目標寄存裝置中。然后,再把每一個這樣存貯了的閉包裝入磁心單元中進行繼續處理。如果存貯的閉包包含一個簡單值,則它將以正常方式即f存入S0,0中、ei存入S1,0中(如圖22d所示)裝入磁心單元中。另一方面,如果存貯的閉包包含有一個插入清單,它也象圖22A那樣被裝入,只是e1為e4所表示的清單中的第一個元素,而e2則是e4中的第二個元素,等等。這將使mop指令循環地工作在這樣插入清單上。
這樣,具有二級結構的map指令(map,f,(e1,…,en))被改寫成((f,el),,(f,en)),在執行之后,它將被改寫成一個一級結構,
(fe1,…,fen),這里的fel表示把f應用于el的結果。
具有三級(或更多)結構的map指令(map,f,par(el,…,(ek,…,em),…,en))(這里(ek,…,em)為一插入清單)作為中間步驟被改寫成par((f,el)…,(map,f,(ek,…,em))…,(f,en)),再改寫成par((f,el),…,((f,ek),…,(f,em)…,(f,en)),在執行之后,它將被改寫成一個二級結構par(fel,…,(fek,…,fem),…,fen),這里的fel表示把f應用于el的結果,這里的(f,ek,…fem)為一個插入清單。
這樣,函數f就將循環地應用于變元清單中的所有元素上。
下面將描述磁心單元怎么重建和執行一條map指令的示范例。為描述起來簡短起見,我們用縮寫reg表示寄存器,ident表示識別符,用storagel(存貯裝置)在表示目標存貯裝置。范例指令為(map f(-1 -2(-7 -8))),這里f為定義為f(x)=abs(x)+1。采用機器識別符的機器表示可以是id1(map f id2)id2(-1 -2 id3)id3(-7 -8)這里的識別符id1表示含有(map f id2)結構的閉包。
下面,x為0至3中的一個數。執行下列的步驟第1步map存入寄存器F0中,f存入寄存器P1中,識別符id2存入寄存器S0,0中,第2步使識種符id2展開,即寄存器S0,0包含-1,寄存器S1,0,包含-2,寄存器S2,0包含識別符id3,第3步把寄存器SX,0中的內容轉送到寄存器SX,2中,標為未使用的寄存器不受影響。
第4步使map和f水平方向上進行“廣播”,即寄存器SXSX,1中包含f,寄存器SX,0中包含map。標為未使用的寄存器不受影響。
第5步其寄存器SX,2中為一簡單值的列被向下降一層,即S0,1中為-1,S0,0中為f,S1,1中為-2,S1,0中為f。第三列未觸及。
第6步把基寄存器矩陣中的每一列象下面那樣(重新)存入目標存貯裝置中id1(id6 id7 id8)id6(f -1)
id7(f -2)id8(map f id3)第7步把識識符id6指定的閉包裝入主寄存器中,f裝入S0,0中,-1裝入S1,0中。
第8步把函數比方說f(x)=abs(x)+1應用到變元上,得出結果2,該結果2又存貯在寄存器S0,0中。
第9步在目標存貯裝置中執行對識別符id6的關聯檢索,所有出現的識別符id6均被2所替代id1(2 id7 id8)id7(f -2)id8(map f id3)第10步對于id7執行第7-9步,得到結果為3,目標存貯器中id1(2 3 id8)id8(map f id3)第11步對于id8執行第1至第6步,結果使得底矩陣的兩列存貯在目標存貯器中id1(2 3 id8)id8(id9 id10)id9(f -7)id10(f -8)第12步對于id9和id10執行第7-9步,分別得到結果為8和9。存貯裝置9。存貯裝置中
id1(2 3 id8)id8(8 9)它可以讀作(2 3(8 9))一這樣函數f被應用到了變元清單中的所有元素上。
應該注意的是,上述描述的步驟可以由磁心單元以一種不同的但更有效的方式來執行比方說,一旦時機適當,就可以對中間結果作進一步的歸納處理,而不是把它們存貯在目標存貯裝置中。
transpose格式(transpose format)把轉送指令裝入一個輔助寄存器(如F0)中,把清單變元(如清單中的清單)裝入基寄存器矩陣中,見圖23。基寄存器的內容被轉送。這樣,具有三級結構的transpose指令(transpose,((em,…,e1,m),……(en,1,…,en,m)))被執行的結果是改寫成一個二級結構((el,1,…,en,1),……(e1,m,…,en,m))舉一個示范性實例一個清單結構
((1 2 3 4),(5 6 7 8),(9 10 11 12),(13 14 15 16)),其第一個清單即(1,2,3,4)存入基寄存器的第一列即基寄存器SD,0至SO,3中,第二個清單(5,6,7,8)存入第二列基寄存器即基寄存器S1,0至S1,3中,與此類推;
被轉寫成((1 5 9 13),(2 6 10 14),(3 7 11 15),(4 8 12 16)),此刻,第一個清單(1 5 9 13)被存貯在第一列基寄存器(即基寄存器S0,0至S0,3中,與此類推。
swap格式(swap m list)swap(互換)指令執行后,一個具有三級結構的swap指令(swap m((e1,1,…),…(em,1,…,),(em+1,1,…,),……
(en,1,…)))(這里是元素ei,j的清單的清單,i,j是一個元素在基寄存器矩陣中的位置標號)被改寫成一個二級結構((e1,1,…),…(em+1,1,…),(em,1,…),……(en,1,…))。
這里元素(em,1,…)與元素(em+1,1,…)互換了位置。
skip格式(skip m list)skip指令執行之后,一個具有三級結構的skip指令(skip m((e1,1,…),……(em-1,1,…)(em,1,…)(em+1,1,…)……(en,1,…)))(這里是元素ei,j的清單的清單,i和j是一個元素在基寄存器矩陣中的位置標號)被改寫成((e1,1,…),…(em=1,1,…),(em+1,1,…),…(en,1,…))這里的元素(em,1,…)已被刪除。
4.清單指數把一個包含清單的目標放在主寄存器中。如果清單中包含屬于插入清單的元素,這些清單被垂直地存貯在子寄存器中。
expard-list操作可以在一個周期內執行,基寄存器中的內容都被在對角線上向右下移動一步,只有主寄存器中的內容除外,它們被轉送至垂直點線,插入到該列的最上方的基寄存器中(見圖24)。可以重復使用expand-list,從而給許多主寄存器單元“填充”數據。
雖然上面描述的這些磁心單元和寄存器單元的設計構成了本發明的最佳實施例,應該理解的是,本發明并不局限于這些特定的設計,不必離開本發明的范圍就能對它們作出許多改進。
圖25中示出了磁心單元的另一個實施例。對于與圖7相同的磁心單元元素,我們使用了與圖7中相同的參考符號。具有與圖7不同的連接的元素我們標上了11符號。圖7中的最佳實施例與圖25中的實施例的差別在于基寄存器S″0,0,S″1,0,S″2,0和S″3,0可以與一根沒有開關的連線res″相連。。另外還省略了點線連線Cid和Cfo,而且基寄存器的W(西)端口并不與基寄存器S3,y的E(東)端口相連(y為0至3間的一個數),而是這些端口上接有一個f(假)信號。磁心單元內部對于某些指令的連接通道也可以稍微有些不同,但這不是功能上的差別,而是在磁心寄存器單元內部控制那些內部開關的差別。圖中的寄存器之間的連線也稍有不同,但是這也只是一個控制每個寄存器單元內部的哪那內部開關的問題。
圖26中示出了磁心寄存器單元的第二個實施例,這個實施例旨在給出這樣的事實即一個單元中的受控制的開關可以以不同的方式設置,同時,該單元仍具有同樣的功能。對于相同的部分使用了與圖8中相同的參考符號。具有與圖8中的連接不同的連接情況的部分被標上了11符號。圖8和圖26中所示的實施例之間的主要區別在于于在圖26中省略了端口C和開關SWC,端口V和H各自只有一個開關,采用了帶開關的端口L,L′和D而沒有使用帶開關的端口Da和Db。
雖然我們在上面是結合具體實施例描述本發明的,但是當該理解的是,本技術領域內的熟練人員在不離開本發明的精神范圍就可以作出許多改變,找出各個部分的等效物。此外,不離開本發明的基本示教還可以對本發明作出改進。
權利要求
1.一種進行結構運算處理的方法,包括a)把數字字存入多個寄存器中,每個數據字都有一個標志部分和一個信息部分,上述的標志部分包括一個指示著相關的寄存器是否在使用的標志,b)上述數據字被安排在許多清單中,把每個上述的清單存貯在預定數量的上述寄存器中,存貯在上述寄存器中的上述清單中的每個數據字的標志部分被標定或在使用時能指示出一個上述的清單至少有一部分存貯在實際寄存器中,上述的有一部分存貯在上述實際寄存器中的清單包括一個清單指示,指示出它是什么類型的清單,從上述清單在上述寄存器中的配置可以清楚地看出清單之間的關系,c)使用屬于存貯在上述寄存器中的清單的上述清單指示控制上述寄存器,從而根據上述的清單指示在上述寄存器中重新安排清單和進行寄存器內容的輸入/輸出。
2.一種根據權利要求1的方法,其特征在于把存貯在上述寄存器中的許多清單安排成一個清單樹,把其中的一個清單作為根清單。
3.如權利要求2所述的方法,其特征在于把被存貯的清單樹的一個識別符存貯在一個分離的識別符寄存器中。
4.如權利要求2或3的方法,其特征在于把被存貯的清單樹的環境存貯在一個分離的環境寄存器中。
5.如權利要求2至4中任一個所述的方法,其特征在于根據待存貯的實際樹的級別,把上述的清單樹的根清單設置在不同的寄存器中。
6.根據權利要求5的方法,其特征在于把一些上述的寄存器安排成一個包括一行主寄存器的基寄存器矩陣。
7.根據權利要求5的方法,其特征在于把只包括一個級別的樹存貯在主寄存器中。
8.根據權利要求5的方法,其特征在于存貯包括二個級別的樹時,把其根清單存貯在上述的主存貯器,把分支清單存貯在上述的基寄存器中。
9.根據權利要求5的方法,其特征在于在上述的矩陣之外設置一組附加的寄存器(叫做輔助寄存器)。
10.根據權利要求9的方法,其特征在于存貯一個包括三個級別的樹時,把它的根清單存貯在上述輔助寄存器中,把它的一個元素存貯在上述的寄存器矩陣中。
11.根據權利要求2至10中任何一個的方法,從上述根清單的類型可以推導出有關要執行什么類型的歸約的信息。
12.如權利要求11所述的方法,其特征在于上述的根清單的類型信息中包括一個表示待執行的指令的指令碼。
13.如權利要求11所述的方法,其特征在于如果上述的類型為函數應用,那么上述的根清單的第一個元素包括一個指令碼或者一個表示函數定義的清單樹的根。
14.如權利要求1至13中任一個的方法,其特征在于一個清單中的最大字數為4。
15.如權利要求2至14中任一個的方法,其特征在于上述清單樹的最大深度為三級。
16.根據權利要求14的方法,其特征在于如果上述的深度為三級,存貯在上述寄存器中的上述根清單的上述清單指示,指示出上述的根清單具有多于一個的分支,則在上述的寄存器中只存入一個分支。
17.根據權利要求6至16中任一權利要求的方法,其特征在于對放置在上述寄存器如基寄存器及基寄存器和輔助寄存器中的數據目標進行結構歸約。
18.如權利要求17所示的方法,其特征在于執行一條mappinq(映射)指令,使得一條具有二級結構的map指令(map,f,(ei,··en))這里map指令被寫入一個輔助寄存器中,待映射的函數寫入第二輔助寄存器中,指令元素ei的清單被寫入基寄存器中;在控制單元控制下被改寫成((f,ei),···(f,en)),這里,函數被“廣播”,指令元素被重新安置,從而對于上述的基寄存器中每一列而言,該函數處于該列中最低位的基寄存器中,一個指令元素位于該列中第二低的基寄存器中。
19.根據權利要求17的方法,其特征在于執行轉送指令,使一條具有三級結構的轉送指令(transpose,((ei,i,··ei,m),···(en,i,··en,m)))這里該transpose(轉送)指令被寫入輔助寄存器中,指令元素ei,j的清單的清單以及表示指令單元在上述矩陣中的符號i和j被寫入基寄存器矩陣中,從而使該基寄存器結構中包括一個元素方陣,在控制單元的控制下被改寫成一個二級結構((ei,i,··en,i),··(ei,m,··en,m))此時,輔助寄存器的值為空,基寄存器矩陣中的信息元素被轉送,從而在矩陣中被安置成相對于對角線的鏡象位置上。
20.根據權利要求17的方法,其特征在于執行一次SWap(互換)操作,從而使具有三級結構的swap指令(SWapm((ei,i,··),··(em,i,··),(em+i,i,··),···(en,i,··)))這里,指令元素ei,j的清單的清單以及該指令元素在上述基寄存器矩陣中的位置表示被寫入該基寄存器矩陣中,從而使基寄存器結構中包含一個元素方陣,在控制單元的控制下被改寫成一個二級結構((ei,i,··),··(em+i,i,··),(em,i,··),···(en,i,··))這樣,元素(em,i,··)與元素(em+i,··)互換了位置。
21.根據權利要求17的方法,其特征在于執行一個SKIP(跳過)指令,從而使一個具有三級結構的指令(SRiP m((ei,i,··),··(em+i,i,··)(em,i,··)(em+i,i,··)···(en,i,··))這里,在控制裝置的控制下,指令元素ei,j,(i,j為該指令元素在基寄存器矩陣中的位置表示)被改寫成((ei,i,··),··(em-i,i,··),(em+i,i,··),···(en,i,··))這里,元素(em,i,··)已被刪除。
22.一種進行結構運算處理的運算單元,包括a)至少一個用于輸入和輸出數據清單的輸入/輸出裝置(V0,V1,V2,V3,id,enV),b)每一個都適合于存貯一個數據字的多個寄存器(S0,0至S3,3,F0至P3,ID,ENV),每個數據字具有一個標志部分和一個信息部分,上述的標志部分中包含一個指示著相關的寄存器是否在使用的標志,存貯在上述寄存器中的上述清單中的每個數據字的標志部分被標定為在使用中能指出一個上述的清單至少有一部分存貯在實際存貯器中,上述的有一部分存貯在上述實際寄存器中的清單包括一個清單指示,指示出它是什么類型的清單,從上述清單在上述寄存器中的配置可以清楚地看出清單之間的關系,c)控制裝置(6P),該裝置使用屬于存貯在上述寄存器中的清單的上述清單指示來控制上述寄存器,從而根據清單指示在上述寄存器中重新安排清單和進行寄存器內容的輸入和輸出。
23.根據權利要求22的運算單元,其特征在于存貯在上述寄存器中的清單被按排成一個清單樹,其中一個清單為根清單。
24.根據權利要求22或23的運算單元,其特特在于上述的寄存器存貯清單的最大數量為4。
25.根據權利要求23或24的運算單元,其特征在于上述的清單樹的最大深度為三級。
26.根據權利要求25的運算單元,其特征在于如果上述的深度為三級,存貯在上述寄存器中的上述根清單的清單指示指示出該根清單具有一個或多個分支,上述控制裝置就只將一個分支存入上述的寄存器中。
27.根據權利要求22至26中的任一個的運算單元,其特征在于提供了至少一個附加寄存器(ID),要存貯的清單樹的識別符能存入其中。
28.根據權利要求22至27中的任一個的運算單元,其特征在于提供了至少一個附加寄存器(ENV),待存貯的清單樹的環境能存入其中。
29.根據權利要求22至28中任一個的運算單元,包括一個寄存器矩陣(S0,0至S3,3),其周邊行(S0,0至S3,0)為主寄存器,上述矩陣的各列為基寄存器。
30.根據權利要求29的運算單元,其特征在于包括設置在上述矩陣之外的多個輔助寄存器(P0至P3)。
31.根據權利要求23至30中的任一個的運算單元,其特征在于上述清單樹的根清單適于根據要存貯的實際樹的級別存貯在不同的寄存器中。
32.根據權利要求29的運算單元,其特征在于只包含一個級別的樹適于存貯在上述的主寄存器(S0,0至S3,0)中。
33.根據權利要求29的運算單元,其特征在于包含二個級別的樹適合于把樹清單存貯在上述的主寄存器(S0,0至S3,0)中,把分支清單存入上述基寄存器(S0,0至S0,3,S1,0至S1,3,S2,0至S2,3,S3,0至S3,3)中。
34.根據權利要求30的運算單元,其特征在于包含三級結構的樹適合于把樹清單存入上述的輔助寄存器(F0至F3)中,把它的一個存貯元素存入上述的寄存器矩陣中。
35.根據權利要求23至34中任一個的運算單元,其特征在于上述的控制裝置(6P)能從上述的根清單的類型得出有關要進行什么樣的歸約的信息。
36.根據權利要求35的裝置,其特征在于上述的根清單中的類型中的信息包括一個控制裝置(6P)將用來推導出執行什么類型的指令的信息的一個指令碼。
37.根據權利要求35的方法,其特征在于如果上述的類型為函數應用,則上述根清單的第一個元素將包括一個指令碼或者表示函數定義的清單樹的根,控制裝置(6P)將用它們來推導出歸約該根清單要來取的行動。
38.根據權利要求22至37中的任一個的運算單元,其特征在于上述寄存器中的數據堆棧被設置成一種分片方式,使得在每個數據棧中占據相同位置的每個堆棧位元素在一個平面能逐位互相連接起來,上述的平面包括所有屬于所有的、在相關的位置上具有一個堆棧位元素的寄存器的堆棧元素(圖7)。
39.根據權利要求38的運算單元,其特征在于一些上述的寄存器具有比其它寄存器長的堆棧,因此,某些平面上只具有屬于較長的寄存器的堆棧位元素(圖2)。
40.根據權利要求38的運算單元,其特征在于至少有一部分寄存器(基寄存器)排列成由N×N個寄存器組成的矩陣中的行和列,N為整數;上述基寄存器中的上述堆棧元素逐位互連起來;對于該基寄存器堆棧中的每一位而言,為每列提供了一根列線(V0,V1,V2和V3),為每行提供了一根行線(h0,h1,h2和h3),在具有相同的行號和列號的上述列線和行號的每個交點上提供了一個可控開關(SWv0,SWv1,SWv2,SWv3);每個基寄存器至少與最近的行線和列線具有可控的寄存器連接;在沿行和沿列相鄰的寄存器之間也提供了連接。
41.根據權利要求40的運算單元,其特征在于上述的控制裝置(6P)適合于控制上述的可控開關及上述的可控寄存器連接,并根據要執行的指令的種類完成下列三種連接中的一種a)從一個寄存器至另一個寄存器的單方向的簡單連接,b)寄存器之間的二個分離的連接,一根一個方向,c)寄存器之間的時間復合連接,其中被存貯的清單元素目前在一個方面、下二個相位內在另一個方向上傳輸。
42.根據權利要求22的運算單元,其特征在于寄存器堆棧中的每個單元包括a)一個內部一位寄存器(rR),b)能與上述的一位寄存器相連的至少一根內部單線總線(aR、bR),c)至少一根內部的可控連接線,其中每根都有一個可由控制裝置(6P)加以控制從而使上述的至少一根單線總線中的至少一根與下列各部分之一相連的開關(SWu、SWE、SWvi、SWvo、SWHi、SWHo、SWDb、SWao、SWai、SWbo、SWbi)一根單元外的總線和屬于另一個寄存器堆棧中的諸單元中的一個。
43.根據權利要求42的運算單元,其特征在于上述的至少一個內部一位寄存器(rR)包括一個輸入緩沖器(Q1)(如反相器)、一個輸出緩沖器(Q2)(如反相器)及連接在上述緩沖器之間的一個可控開關(SWQ)。
44.根據權利要求43的運算單元,其特征在于上述的輸入緩沖裝置和輸出緩沖裝置可以通過可控開關與上述的至少一根內部單線總線(aR、bR)相連。
45.根據權利要求40的運算單元,其特征在于每個寄存器單元包括a)第一(aR)和/或第二(bR)內部單線總線,b)一個內部一位寄存器(rR),c)第一組包含開關的內部可控連接線,上述的開關可由控制裝置加以控制,從而使上述的第一總線能與上述的內部寄存器的第一輸入端相連,另外與連接著其他寄存器單元的第一組多組外部總線相連,d)第二組含有開關的內部可控連接線,上述的控制裝置可對上述的開關進行控制,從而使上述的第二總線能與第二內部寄存器的第二輸入端相連,還與連接著其他寄存器單元的多根外部總線相連;e)第三組含有開關的內部可控總線,上述的控制裝置可對上述的控制裝置進行控制,從而使上述的內部一位寄存器的輸出與上述的第三組多根外部總線相連。
46.根據權利要求45的運算單元,其特征在于根據位置不同,有些上述的寄存器具有與上述的至少一根內部連接線中不屬于至上述的內部寄存器的連線固定相連的固定值。
47.根據權利要求45的運算單元,其特征在于每個上述的可控連接線是至少一個包括下列構成的可控開關一個MOS場效應管(圖9),二個互補的MOS場效應管。
48.根據權利要求43的運算單元,其特征在于每個反相器包括下列設置之一二個互補的MOS場效應管(圖9C),二個增強型MOS場效應管(圖9A),一個增強型MOS場效應管和一個耗盡型MOS場效應管(圖9B)。
49.根據權利要求43的運算單元,其特征在于連接了一個比較器,用于比較各部分寄存器中的內容,并把比較結果提供到稱之為訪問線的外部總線中的一根連接線上。
50.根據權利要求49的運算單元,其特征在于上述的比較器包括a)一個第一與非門,它的第一輸入端與上述的第一緩沖裝置(Q1)的上述內部寄存器開關一側相連,第二輸入端與上述的內部寄存器開關和第二緩沖裝置(Q2)的交點相連,b)第二與非門,它的第一輸入端與上述的第二緩沖裝置(Q2)的上述內部寄存器開關一側相連,第二輸入端與上述的內部寄存器開關與第一緩沖裝置(Q1)的交點相連,把上述二個與非門的輸出互連,并連接至稱之為訪問線的上述總線的外部總線連線。
51.根據權利要求50的運算單元,其特征在于每個上述的與非門包括二個具有串接的源/漏通道的MOS場效應管,這二個場效應管的柵極為與非門的輸入,上面那個MOS場效應管的漏極即是送至外部總線連線的輸出。
52.根據權利要求30的運算單元,其特征在于上述的寄存器矩陣被設置成能在上述控制裝置的自動控制之下對放置在上述的基寄存器中的數據目標執行結構歸約。
53.如權利要求52所示的方法,其特征在于執行一條mappinq(映射)指令,使得一條具有二級結構的map指令(map,f,(ei,··en))這里map指令被寫入一個輔助寄存器中,待映射的函數寫入第二個輔助寄存器中,指令元素ei的清單被寫入基寄存器中;在控制單元控制下被改寫成((t,ei),···(f,en)),這里,函數被“廣播”,指令元素被重新安置,從而對于上述的基寄存器中每一列而言,該函數處于該列中最低位的基寄存器中,一個指令元素位于該列中第二低的基寄存器中。
54.根據權利要求53的方法,其特征在于執行轉送指令,使一條具有三級結構的轉送指令(tramspose,((ei,i,··ei,n),···(em,i,··em,m)))這里該tramspose(轉送)指令被寫入輔助寄存器中,指令元素ei,j的清單的清單以及表示指令單元在上述矩陣中的符號i和j被寫入基寄存器矩陣中,從而使該基寄存器結構中包括一個元素方陣,在控制單元的控制下被改寫成一個二級結構((ei,i,··en,i),··(ei,m,··en,m))此時,輔助寄存器的值為空,基寄存器矩陣中的信息元素被轉送,從而在矩陣中被安置成相對于對角線的鏡象位置上。
55.根據權利要求52的方法,其特征在于執行一次SWap(互換)操作,從而使具有三級結構的SWap指令(SWap m((ei,i,··),··(em,i,··),(em+i,i··),···(en,i,··)))這里,指令元素ei,j的清單以及該指令元素在上述基寄存器矩陣中的位置表示被寫入該基寄存器矩陣中,從而使基寄存器結構中包含一個元素方陣,在控制單元的控制下被改寫成一個二級結構((ei,i,··),··(em+i,i,··),(em,i,··),···(en,i,··))這樣,元素(em,i,··)與元素(em+i,··)互換了位置。
56.根據權利要求52的方法,其特征在于執行一個SKIP(跳過)指令,從而使一個具有三級結構的指令(SRiP m((ei,i,··),··(em-i,i,··)(en,i,··)(em+i,i,··)···(en,i,··))這里,在控制裝置的控制下,指令元素ei,j,(i,j為該指令元素在基寄存器矩陣中的位置表示)被改寫成((ei,i,··),··(em-i,i,··),(em+i,i,··),···(en,i,··))這里,元素(em,i,··)已被刪除。
57.根據權利要求22的運算單元,其特征在于它是一個中央處理單元的一部分。
全文摘要
本發明涉及用于結構運算處理的方法和運算單元。每個具有一個標志部分和一個標志部分的數據字存貯在幾個寄存器中。這些數據字被安排在清單中。每個清單都存貯在預定數量的寄存器中。存貯在寄存器中的清單中的每個字的標志部分在使用時用來表明,一個清單有至少一部分存貯在實際寄存器中。清單包括一個清單指令。寄存器由一個控制裝置所控制。該裝置使用屬于該清單的清單指令來在寄存器中重新安排清單,并且根據該清單指令輸入/輸出寄存器的內容。
文檔編號G06F7/38GK1059225SQ9110527
公開日1992年3月4日 申請日期1991年8月2日 優先權日1990年8月2日
發明者卡爾斯特·拉斯·岡納 申請人:卡爾斯特電子公司
網(wang)友詢問(wen)留言(yan) 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1