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