計算裝置的製作方法
2023-05-21 17:22:36 1
專利名稱:計算裝置的製作方法
技術領域:
本發明涉及一個計算裝置。
計算機是二十世紀四十年代發明的。此後即以革命化的速度得到了發展,但儘管如此,現今的計算機與最先的計算機幾乎具有相同的結構。
大部分改進是對硬體作出的,VLSI的引進以及對平板印刷術的加強已使得有可能製造單片計算機,這種計算機僅僅在五年前被稱之為超級計算機,行寬按指數規律得到了縮小,現在已小於1微米,時鐘頻率以及有源電晶體的數目增加了好幾個數量級,物理限制很可能將行寬限制在0.2微米。
同時,在使用矽方面計算機的結構沒有作出改進,相反,大部分計算機為了獲得更快的速度,在矽量的使用上已超過了最佳的用量。
這兩方面事實在下一個五年中將阻止單處理機速度的發展。並行處理機的引進,由於其複雜程度增大導致了硬體費用的增長,而且對大部分型式的程序而言編程費用的過高增加。
兩者相互聯繫起來看,新系統的硬體費用得以縮小,但其編程費用將大大提高並將很快達到無法容忍的程度。
一臺計算機是由硬體和軟體構成的許多不同單元的複雜組裝體,在其發展過程中的許多範例和階段產生了許多標準(特設的和建立的),這些標準散布於系統中,由於這一非一致性,導致系統中存在大量接口。
所有這些具有不同質量和型式的接口和範例使得一個用戶或一個編程員在使用機器上產生了困難,因為這要求大量的知識,而且由於其複雜性,一個編程員會引入一些不易發現的錯誤。
然而,最近發展了所謂的歸約處理器,一臺歸約處理器執行具有某種包含算術表達式的結構的程序,這種結構按若干歸約步驟進行歸約,因此,此程序不是像在其它形式的計算機中那樣按給定次序來執行的。
要將歸約處理器發展到超過一有限的尺寸還存在著一些困難。
第一臺電子計算機的發展開始了適用於這種形式的計算機的多種程式語言的發展,例如FORTRAN、COBOL、ALGOL、BASIC、PASCAL,這些語言被稱之為命令語言,下面也將其稱之為傳統語言,其主要原因是因為它們通常給出包含一系列命令或指令的程序由一傳統計算機(即根據John Von Neumann提出的原理而設計的計算機)順序執行,這些程序所出現的越來越多的不足導致了另一系列語言的發展LISP、ISWIM、SCheme(LISP的一種語言)、ML、Hope、SASL等等。這些語言發展的動力是為了概念上的簡單化,沒有特定的機器影響其設計。函數式語言過了許久才開始得到重視,原因之一是函數式語言執行較慢,隨後的發展表明其執行速度在某些情況下可能接近或相同於傳統(命令)語言由傳統計算機執行的速度,即使這些函數式程序的目的並非在於由這種形式的計算機來執行。
使得人們開始大量努力發展函數式語言的原因是對命令形語言日益增長的不滿,大約從1970年開始人們談起了有關軟體危機的問題,程序變得越來越複雜,通常包含許多錯誤,難讀,難懂,而且特別難於修改,原因之一是人們對高級的命令語言將簡化編程的期望值太高,而實際上這些高級的命令語言並沒有達到它們期望達到的水平高度。命令語言仍然適用於早期的計算機概念,即馮·諾依曼計算機,而且編程水平還是很接近於機器水平。函數式程式語言具有一些特性能緩解傳統程式語言的一些缺點。
為了獲得額外的信息及進一步的理解,我們可以參考教科書「採用ML標準的函數式編程(Functional Programming Using Standard ML),Ake Widstrom,Prentice Hall 1987)。
為了完整地理解本發明的目的和優點,很有必要先了解什麼構成了計算機中的函數式方法,特別要與最普遍採用的命令式方法進行比較。
「函數式方法」是指程序是用一種函數式語言寫出的並且存儲於並被執行於一臺包含特別適用這一語言的硬體的計算機上,同樣,「命令式方法」是指程序用一種命令語言寫出並且存儲於和被執行於一臺包含適用命令語言的硬體的計算機上。
然而由一函數式語言所寫出的程序也可以存儲於並被執行於一臺傳統計算機上,反之亦然,用一種命令語言所寫出的程序能在適用於執行用函數式語言所寫出的程序的計算機上執行。
用一種函數式語言所寫的程序看起來像是目標特性的一系列定義以及象是計算規則,所述定義是說明部分而計算規則(或歸約或再寫規則)是計算機在操作過程中所用的操作部分,函數式語言給計算機提供一較高級的接口使得編程員可以不必考慮計算機與硬體相關的細節問題,函數式程序有一實際的付效應,即該程序通常比傳統的命令程序要簡短、易懂。函數式語言的一個主要缺點是當函數式程序要在傳統的計算機上執行時必須翻譯成一種傳統語言,這可通過編譯程序或翻譯程序來實現。很明顯,函數式方法的一些好處被下述事實所限制,即沒有專用的硬體以一有效的方式來存儲及執行函數式程序。
下表列出了該說明書中所用到的一些詞句以及其專門的意義單元 某些具有較大數據結構的部分表 元素的有序序列,每個元素按序是一個表插入表 表的一部分,它足夠小因而能將其整體存儲於一個閉包中,使它可以表示任意長的表閉包 定義一個過程的分極構造實體,所用閉包都有一個唯一對其作出定義的根。歸約機器中的歸約工作是在閉包中實現的,機器的整體狀態通過歸約進行變換。
目標存儲器 包含存儲目標的存儲單元的存儲器,例如一個關聯存儲器存儲單元 目標存儲器中的一個單元,它存儲一個單元閉包,該單元閉包可能與存儲在其它存儲單元中的其它單元閉包有關單元閉包 一個存儲單元中的內容存儲單元欄位 在一存儲單元中的欄位閉包單元 存儲在一個存儲單元欄位中的數據元閉包標記符 唯一指定一個閉包的一個閉包單元元素規範閉包 不能被進一步歸約的一個閉包,即不包含任何指派某些其它單元閉包的閉包標誌符,該其它單元閉包能按這樣的一種方式歸約,即該單元閉包能進一步歸約目標 閉包將被執行,即被歸約父 在一數值/符號欄位具有至少一個閉包標誌符的一個閉包子 通過一個閉包標誌符(指示一個子)聯接到另一閉包的一個閉包一個子也可以是一個父,一個父也可以是一個子,一個子可能具有多於一個父,一個父可以具有多於一個子。
閉包位置 確定封閉是一個根或一個節點根 在一根封閉樹中最上面的閉包單元節點 在一封閉樹中不是根的一個閉包單元地點 包含一個閉包位置的一個存儲單元欄位類型 在一單元閉中的類型碼,即代表目標的一個特性的一種位格式,例如一個指令碼懶惰 在一單元閉包中的一個元素,它指示是可執行的(lazy) 或是延期求值或是不動的標識符 一種特殊的閉包元,用於指示存儲在一存儲單元中的一個目標環境 通過給它們相同的環境目標可以組成組數值/指示 一個閉包元素,或者是存儲一簡單的數值,即一個直接表達式,或是什麼也沒有,或者一個對另一閉包的指示,即一個非直接表達式核心單元 根據本發明的結構運算單元,核心單元可以執行包含有歸約閉包的結構運算
(ALU)數字運算器 數字運算部件能進行基本的數值和邏輯操作,核心單元採用數字運算器進行數字操作全寄存器 擴展到遍及所有核心單元中的平面寄存器核心字 在核心單元中全寄存器中的內容有限寄存器 在一核心單元中的寄存器,通過有限的平面量擴展以包含一個數值/標誌型的閉包單元元素元素字 一個有限寄存器或與有限寄存器具有相同擴展範圍的一部分全寄存器中的內容數字字 元素字的一部分,代表一個數值或一個符號特徵字 一個元素字的某一部分,具有指示數字字中的表示特性的特徵歸約 根據所用的特殊程式語言的規則重寫/重新構造一個閉包特性狀態 一時間結構,例如在一端上統一的一個系列或系列的替換。類似於數學術語集合理論中的空集,它也可簡化應用,例如一個「1」在原理上可以是一個特性狀態本發明的一個目的是提供一個具有一種陳述性程式語言的計算設備。
本發明的另一目的是提供一個如歸約處理器一樣工作的計算設備。
本發明的更進一步的目的是提供一個具有一個程式語言的計算設備,該程式語言簡單、並使編程員不必考慮所有與硬體相關的細節,並且用該語言寫程序花費時間少,而且出錯少。
本發明的另一目的是提供一計算設備,它具有作為程式語言的一種語言、作業系統和通訊協議。
更進一步的目的是提供一計算設備能夠執行一種函數式語言,該語言具有作為其約束方法的單一化。
上述目的實質上可通過構造一個計算設備而得以達到,該計算設備包括a)一快速存儲裝置,包含許多存儲單元,每一單元中具有能實現一操作的信息,b)至少一個埠裝置,連接到所述存儲裝置,c)至少一個環境裝置,連接到所述至少一個埠裝置。
最好是包括用於將一埠裝置所提供的信號序列與存儲在至少一個存儲單元中的序列進行比較的裝置,在快速存儲裝置中所存儲的序列具有可能沒定義的序列元素,以及包括將比較次序重寫為零的裝置,即表示某事不一致,如果比較給出一個明顯的差別。或將所述比較次序重寫為一特定次序。
比較裝置可以進行成組比較,組中可包含一予定數目的表單元中的至少兩個單元。
信號序列最好是一隨時間變化具有單一取樣周期的一個取樣信號,信號序列是元素組表,每一組包括一持續時間和至少一個在該時間內的信號量,每一組中的予定數目的表元素適合於兩個組成一對,每一對包括時間和信號量的組合。
可提供用於將所述埠裝置的一個與所述埠裝置的至少另一個同步來在每一持續時間內對所述接口的信號量作出並行指示的裝置,這樣在不同埠的信號量可能在同時導出並可以相互比較。
存儲單元裝置在快速存儲器中最好具有某種結構能適用於以一種明確的或隱含的抽象語法編碼來存儲一電腦程式,所述語法通過表達式來描述一些不同的抽象目標,每一存儲單元裝置每次可以以適用的數據和/或語法結構形式來存儲至少一個所述語法表達式的一部分。
每一種表達式還可以具有一相應的表達式,指示它是一程序形式,所有程序形式都是適用於歸約它們本身從而保持有效的表達式,這使得可以為任意形式的其它語言寫入編譯器和解釋器。
重寫裝置與包含語法表達式的所述存儲單元結合根據予定的重規則重寫語法表達式。
根據本發明的計算設備最好是具有由硬體構成的說明性程式語言的一臺計算機,此時程式語言也是一種機器語言,然而,如同現今的許多電子設備一樣,根據本發明的計算設備的連線可以用一個具有解釋器或編釋器的常用型計算機來模擬,該機器的例子是基於M68000處理機的機器,例如Sun3。然而,根據本發明該機器有一埠可提供一致性。
要執行的一個程序可由閉包方向圖來代表,其中程序的每一部分都用一個閉包表示在執行過程中,這閉包方向圖根據所用語言的歸約規則逐步歸約,當不剩下任何可執行的閉包時,程序的執行就結束了。一個閉包方向圖可以看作是樹結構,樹中的每個節點是一個閉包,而最上面的節點稱為根。通過歸約來執行程序通常就是由下而上歸約樹結構,最先歸約樹中離根最遠的部分,逐漸接近於根。這種形式的執行方式通常稱之為需求驅動執行(demand driven execution)方式,即擱置依賴於其它部分執行結果的程序部分的執行直止得到所需結果出來為止。
為了完整地了解本發明以及進一步明確其目的和優點,可參考下面結合附圖所作的說明,其中
圖1是根據本發明的計算設備的原理圖;
圖2是在一端上的一個信號序列的圖;
圖3示出根據本發明的一個計算設備的一個實施例的原理方框圖;
圖4大致示出在圖3的實施例中的一個目標存儲器中的存儲單元的不同欄位的使用;
圖5示出一個函數如何能被存儲在目標存儲器的一個存儲單元中的例子;
圖6示出了對外界的一個埠的實施例;
圖7示出了一個所謂H埠的實施例;
圖8A、8B、8C示出了圖3的計算設備實施例中的結構運算單元中的不同類型的寄存器;
圖8D示出了一個結構運算單元的實施例;
圖9A至9F示出在一結構運算單元中的不同數據存儲器格式;
圖10A至10H、11A至11G、12A至12H示出了根據本發明的計算設備操作的例子。
圖1示意表示根據本發明的計算裝置,其中包括一個快速存儲器U1,以下稱之為快速目標有儲器,說它是快速的是因為它包含的每個存儲單元都具有能導致計算操作的機會。最好是每個目標存儲單元被分為幾個存儲欄位,對目標存儲器的相關搜索可以對存儲欄位的內容進行,一個存儲單元可以存儲一個單元閉包,一個單元閉包能存儲對其它單元閉包的指示作為閉包元,一個函數可作為包括多個相互標識單元閉包的一棵閉包樹,對這些特性將在下面作進一步描述。
目標存儲器為本發明的計算裝置提供一個內部狀態,在目標存儲器中相應於各個埠的多個內部狀態PR1、PR2、……PRn被存儲在不同的地方,即不同的存儲單元中,若干埠U2至U5連到快速目標存儲器U1,埠U2至U5的輸入信號RWu2至RWu5可由傳感器提供或者是由計算裝置以外即真實世界環境中的信息所提供。
一個狀態是指基本單元能隨時間而變化的一種結構,因此,狀態是一個時間結構但並不表示為什麼一個結構會變化,時間結構可認為是一個複合過程的狀態。本發明的計算裝置特別適應於一種說明性的程式語言,以下稱之為H,它和命令語言不同,對狀態和轉換沒有明確的說明,相反,所有的狀態都用表達式來表述,狀態一詞指的就是隨時間變化的一種結構、一個序列或多個序列中引起改變的一個序列,與數學中集合理論的空集應用相比較,對於所有可能的值,它也使用一種簡化的形式。
埠將輸入信號轉換為適用於快速目標存儲器的形式,例如數字形式,並為其提供可與快速目標存儲器中的信息相比較的信號形式,這個對於上述埠是內部的信息包括一個或多個可替換的狀態PR1、PR2、……PRn。
一個埠Ui(i為2至5間的一個數)可看作為作為一個狀態提供的實地環境的一部分,所述狀態由一無窮的時間序列值組成,該序列可以樹結構存儲在計算設備內,下面將作進一步描述。圖2表示這種序列的一個例子,取樣信號的序列可隨時間而變化,即取樣周期可以是各別的。由圖2可清楚地看出,既可由電腦程式選擇也可由外界給出,信號序列在這裡可以提供為一列元素對,每一對包括一個持續時間和在此時間內的信號量值,在每一時間周期內,也可能有多於一個的信號量,例如,這種情況可能出現於一個埠,它在每個持續時間內具有一個以上的信號量值或者出現於並行埠,每個埠可能在每個持續時間內處理一個信號量值,埠之間彼此是同步的。
根據本發明,經由埠到其周圍設備的輸入和輸出由在其每一邊所提供的聯合處理所構成,即聯合計算設備中的內部狀態以及其周圍環境的外部狀態。用函數式語言H所寫的程序提供到快速目標存儲器產生本地狀態,實地狀態實時地描述一個規程,因此計算裝置朝向周圍的埠記錄計算裝置所看見的真實狀態,它與計算機中討論的規程相統一。在本發明的計算裝置中這些究竟是如何實現的將在後面作進一步描述。計算裝置的內部狀態和外部狀態都以相同的方式設計,該方式提供一個很精確的操作方式使得計算裝置很適合於作實時操作。
因此,計算裝置包括至少一個比較的可能性,用於將在一埠提供給周圍的一個信號序列與存儲在快速目標存儲器的至少一個存儲單元(在多數情況下是多個存儲單元)中的一個序列進行比較,在聯合操作過程中,所有那些與實地環境中的狀態不相符合的可替換的內在狀態都被捨棄,一個正確的程序應該僅有一個可替換狀態在統一操作後保留下來,而這一狀態必須與正在討論中埠的狀態一致。如果在討論中的埠上沒有一個可替代的內部狀態相應於實地環境,那麼統一操作後的結果就是「無」,這被認為是一個編程錯誤。
以上對輸入輸出埠的描述可擴展到能處理除當前結構之外的其它數據結構的輸入和輸出,在此情況下,就不是通過統一持續時間和信號量值來將內部響應與外部響應統一,而是對位格式作統一化。輸入信號可以是數位化的。進一步而言,輸入信號可代表數據結構或程序結構。例如H語言程序。例如,在一埠的一個存儲單元中的一個存儲單元欄位可在埠的輸入端與位格式統一。
例子一個施加的內部結構(S1 S2)可同在輸入端上的位格式統一,從而最後被統一的內部結構讀作施加(+表(12)),這是在圖11A和11B中所示出的結構,這裡S1和S2代表「任意的位格式」,S1被與代表「+」的指令碼的位格式統一,而S2與代表「表(12)」的位格式統一。
經由接受H語言指令的H埠,一個程序可被裝入到目標寄存器,H埠也可用於多個處理器之間,使這些處理器能傳送程序或數據或兩者同時傳送,所傳送的程序碼最初可標記為數據以防止程序碼被立即執行。H埠也能用作本發明的計算裝置的和另一種計算裝置間的接口,該另一計算裝置可能先前公知的也就是傳統的那種。
在圖3所示的計算裝置的實施例中,一個目標存儲器1包括一定數量的存儲單元2,每個存儲單元被分為多個存儲欄位,對此下面會作進一步描述,因為目標存儲器的精確結構不是實際發明的一部分,因此不作詳細的描述。
一個可以作為目標存儲器1的目標存儲器將在我們的未決申請NO……中作出描述。
在目標存儲器中的每個存儲單元可以存儲包括若干閉包元的一個單元閉包,目標存儲器1通過存儲器總線結構BUS1至BUSn連接到一個結構運算單元3,所述總線足夠寬因而能將一個存儲單元的每一位單元連到單元3,每一存儲單元的每一位通過總線結構連到所有其它存儲單元的相應位。結構運算單元3可以是目標寄存器1的一個特定部分,在歸約過程中,要被轉換的閉包被暫時移入其中。然而,也可以具有一個單元3的特殊結構(後面要作介紹),使其可能提供快而直接的歸約操作。因為單元3的結構本身不是本發明的一部分,因而不作詳細描述。一個可以作為單元3的單元將在我們未決的(Copending)申請NO……中作出描述。
圖3所示的計算裝置圍繞存儲總線結構BUS1至BUS11而組裝的,使得實際上所有的數據操作設備可對其直接存取,這樣,單元3和接口可認為屬於快速目標存儲器,即作為它的特殊單元。
一個中央控制單元CU控制目標存儲器和單元3,也由控制單元CU控制的多個埠4,5,6,11被連接到單元3,兩個埠4和5示出是與周圍連接的統一埠。一個外設7和8,例如一個傳感器或一受控於和/或控制計算裝置的設備被分別連接到每個接口,埠6是一個H埠,連接到另一計算裝置9,該另一計算裝置將程序裝入計算裝置。埠11是連接到例如同類型的另一計算裝置12的一個H埠,該另一計算裝置用計算裝置1至6,10,11,CU分擔傳輸。若干如圖3所示那樣的計算裝置可直接相互連接起來在它們的存儲器總線結構和暫態存儲器閉包(沒有示出)之間進行傳輸,在每一個裝置中提供一多並行計算裝置,這樣就能實現全方位的搜索。然而,在一些應用中很方便將兩個或三個計算裝置或多並行計算裝置由一H接口11連接起來使每個計算裝置作為一個單獨的計算裝置而工作,而這些裝置彼此傳送程序和/或數據以便單獨處理,H埠11也可用作與另一種類型處理器的接口,當H埠傳送一個程序時,其傳輸方式與數據的傳輸方式相同,而且計算裝置以相同的方式進行處理。
一個用作特別操作的額外裝置10也可聯接到單元3,這種設備的一個例子是一數字運算單元,以下稱之為數字ALU。然而,該額外裝置也可用於比較等等,數字ALU幾乎可以是工藝技術相同的任何一種ALU,但一種特別適合本發明的計算裝置的數字ALU將在我們未決的某一申請NO……中進行描述。
包含單元3的快速存儲器具有至少一種比較可能性,用於將一個埠(如埠4)的一個信號序列與在至少另一埠(如埠6)的至少一個信號序列進行比較,這一比較可能性可通過提供具有數值(例如區間對,每一區間具有一持續時間和一具有信號量值形式的值)的閉包在存儲器或在埠直接獲得。然而,也可在額外裝置10中進行比較。當兩個外部狀態被比較時,如果比較是不同的,即埠與周圍物體的持續時間或信號量值不同時,比較序列重寫為「無」,反之,比較序列重寫為1和同樣的指定序列。
因此,快速目標存儲器1,3具有一種結構,能夠以一種明確的或隱含的抽象語法編碼來存儲和執行一個電腦程式,該語法通過表達式來描述一些不同的抽象目標,每一存儲單元當時可以以合適的數據和/或程序結構來存儲至少一個所述語法表達式的一部分,該語法將在後面作詳細的描述。
一個目標存儲器1具有比普通的RAM存儲器要多得多的智能,它是相關的,且與普通RAM存儲器所能提供的「讀出」和「寫入」功能相比,它能提供更多的服務。
如上所述,目標存儲器被分為存儲單元2,每個存儲單元包括多個存儲欄位,所提供的服務具有高水平,例如,它能發現一個特殊數據元的存在,不受該數據元是在單個存儲單元內的何處,並能採用僅僅一個存儲器指令全元內的何處,即在整個目標存儲器內,將所找到的特殊數據元重寫為一個新的值。由於該目標存儲器是相關的,這一重寫操作可在兩個物理存儲周期內進行而不必考慮相應的存儲單元的數目。
一個存儲單元2的實施例示意於圖4。它能存儲兩種類型元素並包括特別適用於要被存儲的元素的存儲欄位,這些欄位在圖4中被賦於與其中所存儲的元素相同的名字。
每個存儲單元可存儲下面所列舉的特性中的至少某些特性;
指明在所述單元中的表達式是否要被歸約的標記;
指明該表達式是否為一棵樹中的一部分的標記,以及表達式的特性;
指明表達式是如何產生的標記;
指明該表達式是否組成一些重複狀態的標記;
指明該表達式是否僅僅是一個表的一部分,該表具有存儲在另一存儲單元中的其他表的結構要素。
第一種元素,以下稱之為屬性元素,描述存儲單元的不同狀態,一種這種形式的元素是LAZY,它指示該單元或者是空閒的,在空閒時,單元的基它內容被認為是被動信息,確切地說就是處於可被執行的狀態,或者是等待,即指對單元估算被延後,並且在其能被執行之前必須等待一個結果。另一個屬性元是TYPE,它包含一個類型碼(Par,Seq,apply,list,Unify等等)。
第二種元素,以下稱為目標元素,描述符號、環境或數值,它們有IDENTIFIER、ENVIRON-MENT、VALUE/DES。這些目標元素適合於存儲於在平面HEAD和NUM(見圖7B、7C)中所提供的核心寄存器部分中,每一這種元素包括一個元素字,該元素字又按序被分為一個數字字和一個標記字。
第二種元素的閉包元具有一個標記字,指示數字字的特性,該標記有兩種,間接標記即用於符號和環境的標記,和直接標記,即用於單純數值之類的標記。
間接標記的例子有cls、canon和open,如果標記字是cls,表示數字字代表一個可以被歸約的閉包,如果標記字是Canon,表示數字字代表一個不能進一步歸約的閉包,如果標記字為open,則表示數字字代表的一個閉包是一個被插入的表。
直接標記的例子有discr、cont、Unused和nothing,如果標記字為discr,表示數字字是整數,如果標記字為Cont,表示數字字是一個浮點數,如果標記字為Unused,表示數字字無意義,如果標記字為nothing,表示數字字代表「無」,即對一包含標記為「無」的欄位閉包的統一化處理將總是「無」。
如果在一個存儲單元中的一個符號欄位包括一個符號元素、在該存儲單元中的處理狀態可以傳送到結構運算單元3,以下稱為核心單元。每個存儲單元欄位VALUE/DES可能包含一個符號指示另一單元的閉包,從而提供與該另一單元閉包的連接。環境欄位可能包含一個符號指示提供閉包環境的閉包的網絡部分即樹中的根閉包。然而,環境欄位也有其它用途,環境欄位可用於通過存儲在所產生的所有單元閉包的環境中的生成者的符號來跟蹤一個結構的生成者,例如,在一個子樹中的所用閉包單元可按具有相同的環境而組成組,在所述子樹中,具有相同名子的符號代表相同的物體。這樣,僅僅在一次操作中,通過根,整個結構可由樹中的一個閉包訪問。
標誌函數可看作是從一個父到一個子的直接連接,即一個閉包元唯一識別一個單元閉包。具有相關形式的一個目標寄存器的一臺機器的特性可表示為閉包的一個方向圖。
因此,如果給定一個閉包的環境,在該環境內的根閉包可以找到,一個環境的根閉包在其存儲單元的欄位WHERE中具有一個特定記號(例如「1」),一個環境的節點閉包具有欄位WHERE中的另一記號(例如「0」)。
存儲表達式id1=list(par(1 2 3)Par(4 5 6)的一個存儲單元的例子示於圖5,該表達式是兩個並行值組合的表。第一併行組合par(1 2 3)具有全同符號id2,而第二個並行組合par(4 5 6)具有全同符號id3,包括有在樹中具有全同符號id1的單元閉包的根存儲單元被標記為cls,在LAZY欄位具有記號exec,在WHERE欄位具有一個「1」置位。在TYPE欄位具有記號list,在前兩個Value/des,欄位中具有id2和id3,這些欄位的標記被記為Canon,因為這些欄位的內容是間接的並連接到規範閉包單元。包括具有全同符號id2的單元閉包的節點存儲單元。在WHERE欄位具有一個「0」置位,在TYPE欄位具有標誌Par,並且具有離散值1,2和3存儲在前三個Value/des欄位,因此這三個欄位的標記記為discr。包括有具有全同符號id3的單元閉包的節點存儲單元在WHERE欄位具有一個「0」置位,在TYRE欄位具有標記Par,並且具有離散值4,5和6存儲在前3個Value/des。欄位,這些欄位的標記因而也記為discr。
如上所述,根據本發明的處理裝置具有一個或多個埠用於向裝置輸入數據或從裝置輸出數據。每一個埠是向處理裝置的外部周圍提供通信的單元。該埠最好連接到目標存儲器1(見圖3)中的一個變換接口(未示),該埠可以看作是目標寄存器的延伸(Prolongation),因為它包含最好是四個具有相似功能的存儲單元並與目標存儲器單元2(見圖4)兼容,該埠通過聯合進行輸入/輸出操作。
目標存儲器提供處理器一個內部狀態,對每一埠提供一個狀態,一個狀態是一時間結構的語義上的意義,它可由一閉包結構所代表,時間結構可以認為是由值的一個無窮時間序列所組成的一個處理過程的狀態。
對埠的輸入信號可以由傳感器或處理器之外的設備(即實地環境)所提供,埠將輸入信號轉換為適應目標存儲器格式的數字形式,即轉換為一個閉包表示,這一閉包表示是一能與處理器中的內部狀態相比較的時間結構,即一個狀態,因此,從處理器的角度來看,這一時間結構可看作是一個外部狀態。
通過埠的輸入和輸出由在其每一邊所提供的處理過程(即在處理器中的內部狀態和在周圍設備中的外部狀態)的聯合所完成,內部狀態和外部狀態兩者都以相同的方式進行修正,該方式提供一個很精確的操作方式使得計算裝置很適合於作實時操作。
外部狀態一即一個時間序列一的例子示於圖2,取樣信號的序列能隨時間而變化,即取樣周期可能是不同的,這由圖2可清楚地看出,這裡所提供的信號序列可以是一列元素對,每對中包括一個持續時間和在此時間內的信號量值,信號量值標為qi,時間寬度記為ti,這裡i是1到6的一個數字。
與外界相聯的埠,例如圖3中的埠4,可以聯到一個傳感器7,一般來看,埠的接口能處理各種形式的信號,然而這種接口很複雜並且經常在系統中引入幹擾,因此,一個好的接口將具有下述特性1、一個信號在某些時間被測量,在作下一次測量前該被測量的信號被看作是恆定的。
2、時間可以給定為或者是由埠所確定的一個固定周期,或者是由程序或由外部時鐘信號所確定的某些時間間隔。
3、被測量的信號以數字形式提供給機器。
4、被數位化的信號或者是布爾形式或者被編碼為能指示一個整數或一個浮點值的數字形式。
因此,根據本發明的計算裝置並不象通用的處理器那樣插入或輸出數值,在本發明的處理器中,埠被看作是處理器中的一個程序與處理器外界之間的接口,計算裝置適應於函數化程序語言H,該接口是這樣的所提供的一系列事件在其一邊可看作為一個信號而在另一邊看作為處理器程序中的一個H結構。外界設置它的物理圖象部分,以及處理器部分,這是由埠邊或接口邊同時進行的,從而這兩者將是同一物體的圖象,這使得計算裝置的實時圖象可能是一接近真正實時的一個實時圖象。
程序被存儲在快速目標存儲器中並產生內部狀態,程序的執行是基於在計算裝置中的程序和外界兩者都在接口中經歷事件的同樣的實時過程。
程序將接口描述為一個數值對和持續時間的無窮長系列,即每一個信號值在持續時間期間延續,因此,在每一時間間隔內(包括一對信號值和一個持續時間)接口描述持續時間長度和值。所有同樣的信號和持續時間對按次序提供,埠將一實時狀態轉換為相同形式的表格。
計算裝置的輸入和輸出是由統一得到的,這意味著在每一時間間隔內的持續時間和值在埠的兩邊以相同方式形成。
程序可以確定一個特定的信號量值,或者它可通過採用一個特殊的信號捨棄不確定的信號量值,例如S指示所有可能的值。
一個正確的程序在聯合操作之後應該僅有一個替代狀態存在,並且這一狀態必須與正在討論的埠的狀態一致,如果沒有替代的內部狀態與正在討論的埠的實際環境相應,那麼聯合操作將給出nothing作為其結果,這被認為是一編程錯誤,因為nothing代表矛盾。如果在聯合操作後有一個以上的替代狀態存在,也被認為是一編程錯誤。
當內部狀態給定一特定信號值,也稱為信號量值時,這一特定信號是對外界的輸出,如果內部狀態捨棄不確定的信號值,那麼一個特定信號是從外界輸入。
當內部狀態給定一時間間隔內的一特定持續時間時,那麼外界容許一任意的持續時間長度,如果內部狀態沒有確定持續時間長度,那麼外界就確定該持續時間。
因此裝置是對稱的1、具有表達式during的一個時間間隔包括一持續時間和一信號量值。
2、時間間隔在一程序中由during 持續時間 信號量值形式來描述。
3、外界可能以不同的方式來描述這一時間間隔,如上所述。
4、埠在其兩邊定義信號量值,這意味著一個信號量值必須是確定的,計算裝置中的程序設置指向計算裝置這邊埠的一個持續時間或一個信號量值,在一確定的持續時間內形成一輸出並且/或者一個信號量值饋入到指向外界一側的埠的導體。
一個用於輸入和/或輸出時間間隔的埠的實施例示於圖6,埠被連到結構運算單元3或直接通過總線結構DU連到目標存儲器1,在總線結構DU中的每一總線代表具有例如38根導線的一根總線,埠由中央單元CU控制,埠包含一符號寄存器PID,存儲在寄存器PID中的符號能用作為目標存儲器1的一個符號,即能用於將埠連接到目標寄存器中的單元閉包。這一符號僅在處理器內部使用。埠還包含一個符號寄存器CEID,它與寄存器PID的使用方式相同。埠還包含一些存儲單元CEDU、CELAST、CENEXT、CEID,每一個基本上是思維的產物並如目標存儲器1中的存儲單元一樣起作用。
每個存儲單元存儲具有用於存儲三個閉包元素的至少三個存儲欄位的一個閉包。例如during,持續時間和信號量值。
至少兩個後提及的閉包元素能存儲在數值/指示類型的存儲欄位中。表式式during可在一個TYPE欄位中提供。由於埠總是提供一during操作。該TYPE欄位可以略去。
然而,在圖6所示的實施例中,during在一(類型)欄位中以type′apply(′
)(位置)形式和一預定的函數名(during碼)在一起,函數名存儲在埠存儲單元的第一個數值/指示欄位,如同對屬類型′APPly的所有函數名(例如+ - ↓ /)那樣。during碼可以是指示存儲在目標存儲器中的一函數定義的一個符號。
一個標識符id也可存儲在數值/指示欄位,該標識符將埠結構與目標存儲器中的一個during結構連接起來。
如果不需要包含一個標識符的一個欄位,那麼在圖6所示的實施例中實際僅僅需要三個數值/指示欄位。然而,可提供一個標記為unused的第四個數值/指示欄位以便使埠寄存器與計算裝置中的其它存儲單元一致。然而這時也可能將一個用於數值進/出的額外設備連接到這第四個數值/指示寄存器,這將使該埠成為用於一組數值的埠,即用於持續時間和兩種信號量值的一個埠。
因此,埠中的每一存儲單元還可能有屬性欄位,至少最後所提及的存儲單元可以連接到總線WO1,WI1,WT1,WE1,WT2,WV2,WE2每一總線具有例如38根導線,並以一位一根導線方式連到每一寄存器的位單元。下標I表示可連到寄存器的during碼欄位一根總線,下標T可連接到寄存器的持續時間數值/指示欄位的一條總線,下標V表示可連接到寄存器的信號量值數值/指示欄位的一條總線,下標E表示可連到寄存器的額外數值/指示欄位的一條總線,下標2代表與外界相連的總線,下標1代表通過一傳送器(沒有示出)連到快速目標存儲器1,3的一條總線。
注意到,包括′
的類型欄位和包括during碼的第一個數值/指示欄位實際上可以略去,因為它們之中的信息總是相同的,因而可包含在中央控制單元CU中。因此,可以有一個埠,它具有僅包含兩個數值/指示欄位的存儲單元,一個欄位用於持續時間,另一個用於信號量值(沒有示出)。
在所示出的埠的實施例的四個存儲單元中存儲緊接先前的閉包,當前的閉包,下一閉包以及對未來閉包的標識符,存儲單元可能有指定的位置從而其中的全部內容可在它們之間傳送,寄存器中每一個位單元的一個合適結構與結構運算單元3中的位單元具有同一結構,並示於我們未決的申請NO……中。
然而,也可以將三個最先提及的存儲單元作這樣的安置,它們可以通過變化其命名來變化彼此的位置,命名是由中央控制單元CU的控制來完成的。
埠可以具有不同數量的存儲單元,例如,一個存儲單元。
埠包括一個時間計數器TCOUNT,它由來自中央控制單元CU的時鐘信號CLOCKp控制並測量時間,它可由外部復位信號或來自控制單元CU的復位信號復位,時間計數器TCOUNT連接到一個第一選擇器SEL1,該選擇器由中央控制單元CU控制將時間計數器TCOUNT的輸出或者直接連到可與存儲單元中的時間存儲器欄位相連的總線WT2或者連到一個時間比較器Tcomp的一個第一輸入。時間比較器Tcomp的第二輸入被連到總線WT2,時間比較器的輸出是一個外部時間輸出,該輸出還傳送到控制單元CU。
埠還包含一個外部數值和輸出埠引線VALUE IN/OUT,它被連到一個用於輸出信號的轉換器CONVOUT,例如一個數/模轉換器,它也連到一個用於輸入信號的轉換器CONVIN,例如一個模/數轉換器形成對輸入信號採樣,取樣時間可由時間比較器Tcomp的輸出確定或由到時間計數器TCOUNT(沒示出)的復位信號確定。一個選擇器SEL2連到總線WT2,該總線可控地連到存儲器單元CEDU、CELAST、CENEXT的信號量值寄存器,該選擇器通過中央控制單元CU的控制選擇一個信號量值是饋出或饋入埠,控制單元CU讀出包含有連到外界的寄存器的存儲器單元中寄存器的內容看其中是否包含一個特殊信號$,該信號表示寄存器中的值量任意的,並且可變化為任意可能的值,因此,控制單元CU據此來控制耦合到寄存器的埠選擇器。
也可以製造一個更複雜的埠,例如,VALUE IN/OUT的信號量值可由存儲在用於輸入值的轉換電路CONVIN和用於輸出值的轉換電路CONVOUT中的一個公式來轉換,轉換函數可以是一些積分,每個積分用於種類不同的信號值之類。
在每一持續時間內也可以取兩個值,例如一個在持續時間的起點另一在其末點,並將其中之一直接存到數值/指示欄位,並在一斜率計算裝置(沒示出)中饋入兩個測量值和持續時間,該斜率計算裝置的輸出例如可被存儲在額外的數值/指示欄位(沒示出),即是用於VALUE IN/OUT的額外選擇裝置。
饋出的信息由存儲器單元CEDU提供,因此該單元具有信息during 持續時間 信號量在該寄存器中的信號是已知的,因此應當饋出,信號量從存儲器單元中的信號量值寄存器中取出並通過起驅動級作用的選擇器SEL2和轉換器CONVOUT饋出。
在存儲器單元CEDU中的信息是during 持續時間在這一寄存器中的信號量值是未知的,並且寄存器準備接受一信號量值,信號量值從埠信號量值輸入/輸出中取出,在A/D轉換器CONVIN中數位化,然後輸入到存儲單元CEDU的信號量值寄存器中。
在存儲器單元CEDU中的信息是during 持續時間 信號量值持續時間是已知的,在持續時間的開始時間計數器TcounT被中央控制單元CU復位,在計數器TcounT中連續升高的時間通過時間比較器Tcomp與存儲器單元CEDU中時間寄存器中的時間進行比較,當兩者相同時,持續時間結束。
在這一持續時間內,存儲器單元CELAST被空出而存儲器單元CENEXT被填充,在轉換到下一周期時存儲器單元CEDU中的內容被移到存儲器單元CELAST,在存儲器單元CENEXT中的信號量值被移到存儲器單元CEDU。
在存儲器單元CEDU的信息為during $ 信號量值因此,持續時間是未知的,外界將確定該持續時間,時間計數器TCOUNT在持續時間的開始由外部控制復位,在TCOUNT中連續升高的時間被饋入存儲器單元CEDU的時間寄存器,當外界給出下一次外部復位時,該持續時間結束。因此,外部復位信號或直接或通過時間計數器中的一個零信號來控制選擇器斷開與時間計數器連接。
在這一持續時間內,存儲器單元CELAST,被空出而存儲器單元CENEXT被填充,在躍遷到下一周期時,存儲器單元CEDU的內容被移入到存儲器單元CELAS,而存儲器單元CENEXT中的內容被移到存儲器單元CEDU。
為了說明埠的操作,下面給出一個小例子假設我們想檢測兩個不同的序列之一,第一個序列的所有第2個信號量值都是確定的,即值為17,並且所有持續時間確定,即為1秒,第二個序列的所有信號量值都確定,即1,2,3,4等等。但持續時間未知,要使用的埠稱為Port1,閉包表示為unify(Port1"內部狀態")這裡「內部狀態」是alt操作,它指示所有可替代序列,即一個具有下列形式的大數據結構。
alt(seq(during(1S 17)during(1S $)during(1S 17)……)seq(during($,1)during($,2)duirng($,3)……))現在,如果輸入信號序列可通過上述結構統一,那麼該輸入被接受並採取適當的操作。被接受的序列的一個例子是((1S 17)(1S 0)(1S 17)(1S 99)(1S 17)這是一個與上面給出的內部狀態的第一序列一致為一個序列。可被接受的另一序列是((2S 1)(4S 2)(1S 3)),該序列將與內部狀態的第二序列一致。一個不被接受的序列例子是((1S 2)…),因為信號量值即2不能與給出的內部狀態的兩個序列的信號量值一致起來。
示於圖7中的一個H埠的實施例試圖將本發明的兩個分離的計算裝置彼此連接起來,屬於第一計算裝置的H埠的那一半包括一個類型欄位TYPE11,四個數值/指示欄位V/D11,V/D12,V/D13,V/D14,以及一個標識符寄存器IDF11。屬於第二計算裝置的H埠的那一半包括一個類型欄位TYPE21,四個數值/指示欄位V/D21,V/D22,V/D23,V/D24,以及一個標識符寄存器IDF21,在圖7所示的實施例中埠兩邊的類型欄位和數值/指示欄位各用一根總線連接,傳輸通過串聯總線進行。
因為具有儘可能少的物理連接優點較多,因此最好的操作模式是通過一個串行總線在對分埠傳送數據。然而,與對每一存儲欄位採用一條傳送總線相比,這種傳送方式將使中央控制單元CU中的內部控制線路更複雜。將並行數據轉換為串行數據的接口或者反過來將串行數據轉換為並行數據的接口未在圖7中示出,因而也未描述,因為對本領域的技術人員而言這是很熟悉的。
H埠的每一半被分別連到控制單元CU1和CU2,CU1和CU2分別控制它們所屬的計算裝置,控制單元的CU1提供一個與另一控制單元CU2同步的同步信號SYNC,當進行一次傳輸時,H埠的一半在除標識寄存器之外的所有寄存器中包括特別符號$,這種情況由控制單元指示,然後接收另一半的相應寄存器中的內容。
當一個程序的大數據包通過一個H埠從一個計算裝置轉換到另一計算裝置中時,標識符必須在適應標識符號數內部分配的接收計算裝置中進行改變,以便避免同一號碼的重複使用。因此當將變換閉包中的每一標識符變為新的標識符並將其存儲在目標存儲器中時,一根樹或者從其根部轉移到葉(這是可取的)或從葉轉移到根。
新編語言H採用具有三種情況的一種狀態其形式為p t a其中p.t和a是三個不同的修正變量,p.t和a參數分別模擬並行(Parallelism)、序列時間和替代作用。它們可以分別作為標記不同並行作用,不同事件和替代作用的下標。這三種情況在實施由特定結構用命令語言所描述的若干種狀態時是很有用的。它們是共同的中心思想,即是H語言特徵的核心。根據本發明的計算裝置的結構因而適應於具有這三方面情況的處理狀態。值得注意的是,在某些應用中,模擬變量可能是一個以上的值,即在同一時間可能發生多個替代事件。
如上所述,歸約操作最好在一特定的結構運算單元3中進行,當歸約進行時,單元閉包的有限的樹被傳送到該單元3中。
現在將給出結構運算單元3(核心單元)的一個實施例並作一簡要說明,說明存儲在目標存儲器中的表達式和數值將在核心單元3中的寄存器中如何具有它們的對應物以及在目標存儲器1和核心單元之間如何配合。
可作為核心單元實施例中的寄存器示於圖8A至8C,可以用於核心單元實施例中的寄存器的結構示於圖8D。
在圖8A中示出了一個寄存器,圖中表示寄存器由寄存器單元組成,每個單元能存儲一個信息位,寄存器畫出的方式是要示出一個寄存器通過在核心單元中的不同平面延伸,每一寄存器單元位於一個平面。
圖8B示出了一個寄存器,它延伸到核心單元中的所有平面,即是一個全寄存器,這種寄存器在其位於核心單元中NUM和HEAD平面的寄存器單元中將有一標識符或一個數值。如上所述,它在位於核心單元中TYPE、WHERE。LAZY以及clos/SMPLE平面的寄存器單元中還持有一狀態。
圖8C示出了一個寄存器,它僅僅延伸到核心單元的NUM和HEAD平面,是一個有限寄存器。
圖8D示出了核心單元實施例中寄存器的一個可能構造,核心單元最好具有按正方形安置的基本寄存器,稱為基本寄存器矩陣。基本寄存器在其各邊有一主行,稱之為主寄存器。基本寄存器的列在其底部各有一個主寄存器,該列稱為輔助寄存器。核心單元還可以具有一個標識符寄存器和一環境寄存器,一行從屬寄存器位於基本寄存器矩陣的邊上。
在核心單元的一個實施例中,輔助寄存器可以是圖8C中所示的那種寄存器,即有限寄存器,而圖8D中的其他寄存器可以是示於圖8B中的那寄存器,即全寄存器。
對核心單元硬體結構更詳細的描述參見我們的未決申請NO……,不同的數據存儲形式的簡要說明將參照圖8A至8F,它的一些操作實例將參照圖10A至10H,11A至11G,12A至12G給出。
如圖9A所示,作為一個歸約結果的一個簡單值25出現在主寄存器的一個特別寄存器中,這個結果可能是一個單元閉包的一部分。
一個目標是裝入核心單元的以便進行歸約的事件。如圖9B所示,一個包括僅僅一級的目標(最典型的是不參考其他單元閉包的一個閉包)存儲在主寄存器中,例子中示出了一個簡單的數字操作,即數值1,2和3相加。數字指令(+)存儲在每一個主寄存器中,而欲處理的元素存儲在其它主寄存器中。
如圖9C所示,包括一個二級結構的一根樹具有其根表,它是父,水平地存儲在主寄存器中,而將作為子的表,垂直地存儲在基本寄存器中。在這一例子中,具有表示表((12)(34))的結構存儲在基本寄存器矩陣中,作為子表中最先元素的根表,即1和3被存儲在主存儲器中,而子表,即(1 2)和(3 4)被垂直地存儲於輔助寄存器中。使用這種寄存器的例子在下面給出,參見圖9A至9H。
如圖9E所示,包括一個三級結構的目標樹具有存儲於一個輔助寄存之中的根,將其單一的子存儲在主寄存器中,在圖9D中,目標樹的根(是指令轉移)存儲在一個輔助寄存器中,而其子(即表(id1id2 id3))存儲在主寄存器中,在這表中的每個元素按順序是具有子的一個父。在圖9E中,這些子被垂直地裝入基本寄存器,在那裡id1被調換成它所指示的表,即(1 2 3),id2被調換成(11 12 13),id7被調換為(21 22 23)。
如圖9E所示,以流水線模式存儲的一棵樹將目標表裝入到主寄存器,將目標的父存儲在輔助寄存器中,並且它具有存儲在這兩種寄存器中的將要被處理的元素和指令,當歸約數字表達式時,最好採用流水操作模式,一個優點是瞬態結果可以馬上存儲在核心單元而不是目標寄存器。
因此,依賴於樹結構的級別和所要進行的操作,目標樹的根表最好存儲在核心單元中寄存器的不同位置。
特別適用本發明的計算裝置的語言稱為H語言。解決複雜性問題的傳統手段是通過將所有複雜東西隱藏起來而將簡單東西放在表面,從而更增加了複雜性,根據本發明的計算裝置採用相反方法,所有不必要的軟體級別都移走。H語言在機器中作各種用途作為機器語言,程式語言,作業系統和通訊協議。然而,如同現有的所有電子設備一樣,本發明的計算設備的線路可以在一個具有解釋或編譯程序的計算機中模擬,這種機器的一個例子是Sun3,然而,該機器必須有一個可以提供一致性的埠。
傳統的邏輯程式語言將解析度和一致性作為主要的語義特性,備有H語言的本發明的計算裝置對解析度和自由變量採用模式匹配,並且在歸約語言中對一致性採用模式匹配。存儲在存儲器單元欄位中的H語言中的目標具有並行存在,次序存在和交替存在的特性。
目標樹的根是可歸約形式的一個閉包,例如Unify,alt,apply,在某種意義上也是par和Seq,因為它們有時能被歸約為「無」。在函數應用apply(也稱為
)中第一個元素是一個指令(+ - */during),該指令直接由硬體解釋,或一標識符間接指示一個用作函數定義的閉包結構,其餘的元素是指令/函數定義的自變量。如上所述,本發明的計算裝置適應於處理特殊的稱為H的解釋性語言。該語言一抽象句法和語義來定義。
句法通過表示式來描述一些不同的抽象目標,可使用下面的基本表達式port,nothing,alt(list),par(list),seq(list),
unify(list),during(list),Cont(v),period(v)。
其中(list)在包括在表達式的目標存儲單元(S)中指定為數據元素形式(e1,……en),V是一個實數。
因為在本發明的布線應用中每一存儲單元都有一個有限數量的數值/指示欄位,一個表可被存儲在一些存儲單元中,要注意到,如果用通用形式的計算機來模擬目標存儲器結構,那麼可模擬的存儲單元可能具有可變數量的存儲欄位。
Port 表示一個物理埠的表達式,即一序列的during,它是一個特殊形式的間接元素。
nothing 表示矛盾的一種特殊數值。
Alt 指示包含有這一表達式的該存儲器單元中含有認為是可替代元素的表列元素。
par 指示包含這一表達式的存儲器單元中包含認為是並行元素的表列元素。
Seq 指示包含這一表達式的存儲器單元中包含認為是順序元素的表列元素。
Unify 指示包含這一表達式的存儲器單元中包含認為要被一致化處理的元素的表列元素。
During 指示包含這一表達式的存儲器單元中包含表列元素,該表or 列元素給出持續時間,在該持續時間內將發生某事。
(··)Cont 指示一個空間量,該空間量沿具有長度V的一個距離具有極小量的狀態。
period 指示一個時間寬度,該時間寬度在寬度為V的時間內具有若干極短的狀態。
位於表列中的元素以數值存儲在數值/指示欄位。
為與存儲單元配合的中央控制裝置CU建立了重寫功能,因而控制裝置中包含重寫規則,它根據予定的重寫規則來重寫所述句法表達式。
中央控制裝置最好是一布爾門陣列,它們連接起來以讀出存儲的表達式,並根據所建立的規則來提供重寫操作。當時只有一根樹的一部分需要讀出。具有根據所建立的協議在組成的輸入端起作用的提供組成的輸出功能的布爾門陣列的指令在出版物「Introduction to VLSI Systems」中作了描述,該出版物作者Carver Mead和Lynn Conway,Addison Wesley出版公司1980年出版。
重寫規則如下altalt →nothingalt(e) →ealt(e1…nothing…en) →alt(e1…en)即值nothing被略去了alt(e1…alt(c1…ck)…en) →alt(e1…c1…ck…en)parpar(e1…nothing…en) →nothing如果e1至en中任意一值為nothingpar(e1…alt(c1…ck)…en) →alt(par(e1…c1…en)par(e1…ck…en))
par(e1…en) →par(e1…en)在相反情況下SeqSeq(e1…nothing…en) →nothing如果e1至en的任意一值為nothingSeq(e1…alt(c1…ck)…en) →alt(Seq(e1…c1…en)Seq(e1…ck…en))Seq(e1…en) →Seq(e1…en)在相反情況下UnifyUnify →nothingunify(e) →eunify(e1…en) →e1如果所有e1至en都是相同的unify(e1…en) →nothing如果e1至en中有任意一個與其他的不相同unify(e1e2e3…en) →Unify(unify(e1e2)e3…en)unify(e1…en) →nothing如果e1至en的任意一值為nothingunify(e1…alt(c1…ck)…en) →alt(unify(e1…c1…en)unify(e1…ck…en))當存儲在目標存儲器中的一種樹結構要被歸約時,樹結構的至少一部分要傳送到單元3,在單元3中處理一種樹結構的不同的可能性的進一步描述將在下面給出,作為圖3結構的一個特殊實施例。
控制單元cu讀出現在存儲在單元3中的單元閉包的TYPE欄位,並根據上面提到的重寫規則重新安排單元3中單元閉包中的內容,並將重寫的結果送回存儲在目標存儲器1中。如果重寫結果歸約為一個值或nothing。控制單元通過目標存儲器作全面搜索,將指定為歸約結構的父的存儲欄位中的內容改變為歸約所產生的值。
採用這些句法規則的操作方式將舉例說明,在下面例中沒有說明的句法規則與說明的那些例子很相似,當結合下面的例子考慮時,對本領域的技術人員而言很容易理解。
例1圖10A至10H中所示出的第一個例子是以可歸約閉包給出的並行值的一致化。
Unify(par(1 par(1)3)par(1 par(1)2))這是一個可歸約閉包,其中將進行一些並行統一化處理,這一可歸約閉包將重寫為統一化的一個並行結構。
圖10A表示最初的可歸約閉包,圖10B表示這可歸約閉包是如何存儲在目標存儲器中的,存儲可歸約閉包的不同部分的存儲的單元在10A中標出。元素閉包和單元閉包之間的聯線在圖10B中標出。具有標識符id1的單元閉包記為CLS,並在類型欄位具有類型碼unify,而具有標識符id2,id3和id4的單元閉包在其類型欄位具有類型碼par。具有標識符id1的單元閉包包括作為其最初兩個數值/指示的的指示具有標識符id2和id4的單元閉包的閉包元素,這些單元閉包標記為Canon。具有標識符id2的單元閉包具有它的第一和第三個數值/指示閉包元素,該閉包元素具有標記為discr的離散值,並具有它的第二個數值/指示閉包元素,該閉包元素指示具有標識符id3的單元閉包並標記為Canon。具有標識符id3的單元閉包具有它的第一個數值/指示閉包元素,該閉包元素具有一個整數並標記為discr;具有標識符id4的單元閉包包括作為它的第一和第三個數值/指示的閉包元素,該閉包元素具有標記為discr的離散值,並包括它的第二個數值/指示閉包元素,該閉包元素指示具有標識符id3的單元閉包,因而標記為Canon。
如圖10C所示,具有標識符id1的單元閉包的存儲器單元中的內容首先被裝入核心單元,當在id1在包括閉包的類型碼unify的情況下,該核心單元將其標識符id1放在該標識符存儲器中,並在第一操作步驟中將作為目標的數值/指示元素放在主存儲器中。
如圖10D所示,具有標識符id2和id4的子被縱向地裝入到基本寄存器中,這樣在其第一數值/指示元素中的內容被放入標有它的標識符的主寄存器中,而在寄存器中的它的其餘的數值/標識符元素放在其上的縱列寄存器中。每個這些子的類型碼par也裝入到主寄存器,類型碼裝入到位於TYPE平面的寄存器單元中。
如圖10E所示,基本寄存器中的內容被轉置90°,這樣在基本寄存器的第一個縱列中的內容被放在主寄存器中,而第二縱列放在平行於主寄存器的基本寄存器的一行中,在標識符寄存器和主寄存器中提供的類型碼par和unify可進行交換,這是由控制單元自動完成的。現在基本寄存器包括具有位於縱列中的三個子的一個父。
每個子現在採用指令make裝回到目標存儲器,作為來自目標存儲器的回答,所存儲的子的標識符被提供並存儲在主寄存器中,可以看到,根據其中所發現的信息,控制單元CU(是一種門陣列)檢測特別位於平面CLOS/SIMPLE到平面TYPE的寄存器中的內容並提供指令,即控制這個門和這個開關。子在id1之後按序命名,已經佔據的名字就不再使用。然而,命字次序無關緊要,因此可以是任意的。
如圖10F所示,第一個子取得標識符id2,包含有佔據標識符id3的元素閉包的第二個子取得標識符id4,而第三個子取得標識符id5。具有連接到具有標識符id2,id4,id5的單元閉包的父保持其標識符id1,然後存儲在目標寄存器中。
圖10G表示存儲可歸約閉包Par(Unify(1 1)Unify(par(1)par(1))Unify(2 3))的存儲器單元,可歸約閉包本身示於圖10H,圖10G和10H按如圖10A和10B的相同方式示出,因此可以自己解釋。
在圖10G中也表示具有類型碼unify的單元閉包在LAZY欄位中給定標記為exec,而具有標識符id1的單元閉包給定標記為wait,這表示標記為exec的單元閉包應該在由標識符id1所指示的單元閉包之前執行以便將其內容歸約為值。
在圖10H中的閉包在隨後的某一時間可被裝回到核心單元以便進一步處理,例如,具有標識符id2的單元閉包具有值1,因為其數值/指示元素中的值1和1是相同的,而具有標識符id5的單元閉包導致結果為nothing,因為其數值/指示元素中的值2和3不相同。
在最佳實施例中每一次統一化都可在數字ALU中進行,該裝置在比較器中對值進行比較,並將結果提供給控制單元CU,然後,控制單元設置其布爾門陣列相應地在核心單元的第一個主寄存器中提供信息。當歸約結果為規範符號或簡單值或nothing時,該結果分布在目標存儲器的所有存儲欄位,所述目標存儲器可被操縱去存儲第二種類型的元素閉包,這樣每一個對歸約的閉包的間接指示被變化為數值的直接指示。
例2
這個例子是一個硬體指令list expansion。意指單元閉包包括一個插入的表,這種類型的指令是其它歸約中的一個輔助步驟。
機器產生一個示範化指令的歸約,稱為ex.type,ex.type可包含下列形式ex.type(1 list(2 3 list(4 5 6))7)的值和表的任意一種指令,該形式示於圖11A,其單元閉包示於圖11B。圖11A和11B的標記方式與圖10A和10B相同,因此可以自己解釋。
如圖11C所示,具有標識符id1的單元閉包裝到具有其標識符的核心單元的主寄存器中,而類型碼裝到標識符寄存器中,由於在第二個主寄存器中的內容用一間接元素open標記,它所連接到的單元閉包id2被縱向地裝入到基本寄存器中作為一個子,而這由圖11D可清楚地看出。
然後,硬體指令list expand將在第三個主寄存器中的離散值7移到第三個基本列中除id4以外的位置,並將第二個主寄存器之上的第二列中的表的部分移到第三列,該第三列將其最低元素(值3)放在第三個主寄存器中並給予其類型碼list(見圖11E)。由於在第二個主寄存器中的內容是一個離散值,因而它具有標記discr。
然後產生了一個新表展開式,只要將主寄存器之上的第三列中的內容放在歸類為List的第四列。在第三主寄存器中是一離散值的內容被標記為discr,如圖11F中可明顯看出。
隨後,在第四列中的表採用硬體指令make存儲在目標存儲器中,它被存儲在具有標識符id2的存儲器單元中,因為該存儲器單元是空閒的,而標識符id2的部分被送回到核心單元被存儲在第四個主寄存器中,如圖11G所示那樣。
隨後進一步進行ex.type歸約,當出現一個規範結果時,歸約的結果被裝回到目標存儲器中。
回到圖3,根據本發明在一埠操作的基本思想是將外界7,8和快速目標存儲器1,3的雙重狀態看成是一致的,即導致在每一持續時間內信號量值僅得到一個通用的確定的值。
為了了解操作方式,給出下面的例子具有一個輸入埠和一個輸出埠的一臺機器是要在輸出端提供符合一致的輸入信號量值,存儲在機器中的程序因而是Unify(par(portinportout)「機器狀態」)這裡「機器狀態」是一個alt操作,它指示所有可想到的輸入和輸出的序列對,即具有以下形式的一個大數據結構。
alt(seq(par(during(1s 1)during(1s 1))(par(during(1s 2)during(1s 4))(par(during(1s 3)during(1s 9))…)(seq(par(during(1s 1)during(1s 1))(par(during(1s 3)during(1s 9))(par(during(1s 2)during(1s 4))…)(seq(par(during(1s 2)during(1s 4))(par(during(1s 1)during(1s 1))(par(during(1s 3)during(1s 9))…)
(seq(par(during(1s 2)during(1s 4))(par(during(1s 3)during(1s 9))(par(during(1s 1)during(1s 1))…)(seq(par(during(1s 3)during(1s 9))(par(during(1s 1)during(1s 1))(par(during(1s 2)during(1s 4))…)當輸入埠開始輸出其值時,在核心單元中進行的歸約操作將連續地消去在變為nothing的替代操作alt中的所有分支,即所有不適合的分支。
在核心單元執行下面的歸約規則格式表達式Unify(par(port1…portn)seq(par(during(q11t1)…during(qlnt1))…)(par(during(qk1tk)…during(qkntk)…)被重寫為nothing或重寫為表達式
Seq(par(during(q11t1)…during(qlnt1))…(par(during(qk1tk)…during(qkntk)…)這有賴於來自環境的信號與表達式作比較。在Seq中每個操作par的所有during需要相同的時間。為了使所有during操作同時開始和結束,需要進行同步。
重寫上述表達式的一種替代方式是將其重寫成nothing或重寫成表達式Seq(during(par(q11…qln)t1)…(during(par(qk1…qkn)tk)…)這有賴於環境的信號與表達式的比較。
在所給的例子中採用第一重寫規則時,隱含了下面的歸約規則Unify(par(e1…en)par(h1…hn))→→par(unifye1h1)…unifyenhn)對Seq也是同樣。一旦輸入值與機器中的相應值不一致,即不一樣,那麼結果就是nothing。這將一直波及到alt操作,從而整個分支從alt表達式中消除。
構造一種數值能送進機器中並能從機器中傳出來但賴於外部信號是否確定。賴於機器值是否確定(具有值$)的埠的獨創性在於機器並不限於上面所描述的簡單的輸入埠和輸出埠系統,因此,可以寫一個程序,其中埠交替地寫入機器或從機器讀出,與此相關的例子是下面的程序Unify(port「機器狀態」)該程序具有機器狀態alt(Seq(during1s 1)(during 1s 1)(during1s 2)(during1s 4)(Seq(during1s 1)(during1s 1)(during1s 3)(during1s 9)(Seq(during1s 2)(during1s 4)(during1s 1)(during1s 1)(Seq(during1s 3)(during1s 9)(during1s 2)(during1s 4)等等。
即(Seq(during輸入)(during輸出)(during輸入)(during輸出))在該機器狀態中,外界提供一個數值,機器通過在下一時間間隔內饋出與其一致的值作出回答,該方法對數據如何以簡單方式流動作全面的控制。
單元3與埠聯繫並適應於將埠的輸入以序列形式存儲在目標存儲器中,它是以下述格式的表達式提供的Unify(埠seq(duringt1q1)…seq(during tk qk)…)當這一表達式被歸約時,依賴於從外界而來的信號與表達式的比較,中央控制單元CU中的協議將這一表達式重寫成nothing或重寫成表達式Seq(during newt1newq1)…Seq(during newtknewqk)…在該表達式中newti是數值對序列中第i個時間間隔的一個新的持續時間,而neqi是一新的信號量值(見圖2)。
如果埠的信號具有圖2的形式,如果信號中的值qi與Unify表達式中給出的相應值qi不同,或者如果信號中的值ti與在Unify表達式中給出的相應ti不同,那麼上述Unify表達式在單元3中將重寫為nothing。反之,Unify表達式被重寫為Sep表達式。如上所述,在Unify表達式中可提供一特殊符號$,表示該值可以是任意的。
如果表達式中的數值ti或pi(i為任意整數)是$,那麼隨著被測量的值ti或qi的插入,將重寫相應的newti或newqi。
相應地,當Unify表達式中的取值ti和qi為特定值時,如果來自外界的信號是不確定的,那麼在時間ti內信號強度由埠(見圖6)的數/模轉換器CoNVout提供為qi,而Seq表達式中的newti和newqi與Unify表達式中的值ti和qi一樣。
根據上面所描述的系統,可能存在的所有狀態都可以作番描述,不幸的是程序可以極大。為了處理這種情況可插入另外的程序結構,其中最重要的是Symb,Lambda和apply。
用於H語言的有用的一個完整的句法可能包括下面的句法表達式cont(v),delta,period(v)deltat,par(list)seq(list),′alt(list),′con(list),′pri(list),′Lambda(list),
′hide(list),′symb(list),′unify(list),′set(list),′apply(list),alt(list),nothing,con(list),pri(list),unify(list),lambda(list),hide(list),Set(list),apply(list),Symb(list),discr(n)pulses(n),其中句法表達式在存儲器單元的類型欄位以編譯形式被提供為操作符。
因此,每一表達式都是一個以一表達式形式存儲在一個目標存儲器單元的操作符,在(list)中的每一個元素是指示一個狀態的表元素,n是一整數,V是一個實數。每一元素都可被存儲在包含該表所屬的所說表達式的存儲器單元中的存儲器欄位。
表達式cont(v)(其中V是一個實數)表示沿具有長度V的一個距離具有無限個極小狀態的一個空間量。period(v)(其中V是一個實數)表示在具有時寬V的周期內具有無限個極短狀態的時間寬度。
表達式delta表示在空間具有極小擴展並且有不確定時間寬度的一個狀態。表達式deltat代表在時間上具有極小擴展,在空間上具有不確定擴展的一個狀態。
在空間的一個整數擴展可按以下方式編碼為delta的一個par0=par( )1=par(delta)2=par(delta delta)…5=par(delta delta delta delta delta)等等在時間上的一個整數擴展可按同樣方式編碼為deltat的一個par。
因此一個整數(discr(n))可表達為一種極微單元delta的一個平滑組合。
量的非常重要的應用是在一個during操作中作為一個元素,在這一操作中,量可用來指示時間和空間,因此採用相應於稱為deltat的delta的時間。
delta在空間極小,而在時間上無限deltat在空間上無限而在時間上極小上面的表達式以和句法表達式相同的方式存儲在目標存儲器中。
機器幾乎瞬時將插入的所有表達式歸約為它的值,例如表達式apply(+ par(2 4))被直接歸約為值6,這使得當程序設置後不能訪問該程序,不可能將程序分為許多部分而對各部分進行運算。
為了對付上述問題,引入一個並行於基本語言的被動的格式,它們被稱為程序格式,它們對它自身進行歸約(它們是規範的),因而保持不變。它們可以被劃分為幾塊。
一個函數plusrevary可按下面的方式定義Unify(Symb(Plusrevary)Lambda(par(Y X)′apply(+par(X Y)))它根據上面的程序給出程序格式′apply(+par(2 4))以相反的次序給出正量設置的自變量,par(42)。
為了將一個存儲的程序格式轉換為相應的程序,採用了一個標準函數eval。因此程序被複製,「blips」被消除,程序自然被進一步歸約到它的值。
apply(Symb(eval)′apply(+par(2 4)))
=apply(+par(2 4)))=6分解程序格式的可能性使「reason over」程序簡單化,這使得採用具有H語言作為其基本語言的機器為任意一種其它語言寫解釋和編譯程序變得簡單化。
總之,所有的結構(例如delta,par)都有前面貫以′作為詞法單元的第二種格式(例如′delta,′par),該詞法單元指定該格式為程序格式。值得注意的是,在一程序格式中只有實際的結構而不是整根樹。為了將整根樹指定為程序形式,所有的結構都必須標上′。
如果程序格式(具有′的)中的表包括nothing,那麼表達式將被轉換為nothing。
需要用作定義,例如定義Sqr的機理在上面作了描述,然而還需要以小定義的組合形成一程序的最佳機理。我們需要建立一個看作為具有一些輔助定義的一個主表達式的程序,這可藉助於Con(list)來實現。
ConCon結構包括一個顯露值V和多個不顯露值ei,i是1到n之間的一個整數。
Con(v e1e2e3…en)這種結構具有等於第一元素V的值。然而如果表是空的或該表中的任一元素為nothing,那麼Con結構具有值nothing,表中的所有元素處於相同範圍,因此,不顯露元素可用作限制,或者將限制為自由變量或者將其統一為nothing。
Con的重寫規則是Con( ) →nothing
Con(e1…nothing…en) →nothingCon(e1…en) →e1如同所有其它規則一樣,該規則是作為快速存儲器1,3和中央控制單元CU之間的協作關係而建立的。
Pri上面所描述的結構中沒有一個能用於指示某事在另外某事無效(是nothing)的情況下是有效的。由於表達式的一種「負」方式有時比表達式的「正」方式更為緊湊,因此對於表達式的「負」方式附加結構Pri。
Pri的歸約規則是這樣的pri的值是不同於nothing的第一個元素,如果沒有這樣一個元素,那麼pri就是nothing,因此Pri(nothing nothing 9 nothing 7 8)=9結構pri(e1e2)以按如下方式解釋如果e1無效,則採用e2。該pri結構類似alt結構,它是一組狀態,但在pri中,狀態是有序集合,第一個狀態是表中的第一個,第二個狀態是表中的第二個,等等。
很值得注意的是,pri結構與在傳統語言和用於處理編排的機器中原來所採用的概念無任何共同之處,相反,它用於藉助失效來實施非操作。
Pri的重寫規則為pri( ) →nothingpri(nothing1…nothing2) →nothingpri(nothing1…nothingk-1ek…en) →ek如同所有其它規則一樣,該規則是作為快速存儲器1,3和中央控制單元CU之間的協作關係而建立的。
作用域是指原文環境,其中所出現的相同符號代表相同的語法實體。一個作用域規則指示某一結構是否以及為何引起一個新的作用域,H語言具有下面的作用域規則1、結構par、seq、alt、
和unify不引起新的作用域,這表示表達式中所出現的同樣符號代表相同的實體。
2、結構Lambda(替換模式)引起一個新的從屬作用域,所有在規則中出現的而在以上場所中所沒有提及的符號屬於一個新的作用域。
3、結構hide(表達式)引起一個完全新的作用域。在一規則結構hide中無符號出現係指相同的實體,如果在該規則結構中的相同的符號環繞該hide結構。
當編制擴展程序時,需要在不同的意義下使用相同符號,這可通過引入隔離作用域的結構(hide)來實現。
hiding的每一個重要概念主要用於隔離使用一個目標以及該特定目標的定義,按本發明的計算裝置的用戶會在程序包,程序庫和實施概念中發現這點。
H語言定義hide結構hide(e),它定義一個狀態。用在結構內外的自由變量被分開,即它們彼此之間是不可見的。H語言的這一特性與其他類型的語言不同,後者通常輸出一數據形式和幾個符號名稱,這些名稱不能用在程序包內部,這意味著在全集合或在一有限集合中,全符號域對所有程序包都確實是完整的,而且在它們內部是可見的。
一個典型的程序包按以下方式確定
lambda(a-pkg$$)·hide(…局部實施…);
它定義了一個具有從a-pkg開始的一種格式的規則,而其餘部分沒有定義。這只是對一個規則的定義,在那裡,對規則替換本身的符號是未知的。
一個程序庫是指在採用一個參數選擇一個或幾個規則的H語言概念中的程序包,它可實施為hide(alt(lambda「規則a」.a-specLambda「規則b」.b-spec…Lambda「規則n」.n-spec))程序庫是包含規則的一個替代物,格式「規則a」用於選擇一程序aspec。它可定義為一任意結構,它通常它是一個提要或一個規則。
如上所述,H語言具有精巧的方法指定需要的軟體工程概念,為此目的,語言不需引入新的語言結構。
可以看出,hide只影響作用域的處理。
lambda表達式Lambda(esepl…epn)是一種規則,表示元素es取代epl…epn),這裡用
表規則Lambda(esepl…epn)。而所述表達式apply(erearg1…earg2)是一個應用,如果每一epi由相應的eargi統一化,則該應用在歸約操作中由es取代,反之,該應用由nothing取代。
apply現在將給出規則apply如何實施的例子。
例3
在這裡執行一數字指令。一數字指令可以是+,-,*,/,during,等等。在指令之外緊跟著自變量。在該例中,執行表中數字間相加操作,機器執行具有下面形式的一個apply(應用)的歸約apply(+ list(1 2))該應用示於圖12A,其單元閉包示於圖12B,圖12A和12B的標記方式與圖10A和10B的相同,因而可以自我解釋。
如圖12C所示,具有標識符id1的單元閉包被裝入到在標識符寄存器中具有其標識符和類型碼的核心單元的主寄存器中。數字指令(+)標記為一個指令。如圖12D所示,由於第二個主寄存器中的內容被標記為一個間接元素open,它所連接的單元閉包以子的形式縱向地裝入基本寄存器中。
隨後進行表的擴展,將第二個主寄存器中的離散值標記為discr,並在類型碼欄位中標記擴展值為2的表為List。由於不管具有標識符id2的表具有二個,三個或四個元素機器都作相同操作,故上述處理過程可以完成。由於在一新的表中僅有一個元素,如圖12F所示,機器將用主寄存器包含一個是discr的值的指示來替代標記list。
因而,如圖12G所示,主寄存器包含一個指令標記(+)和兩個離散值,這使得存儲指令的控制單元控制數字ALU執行指令(相加)並將數字操作結果作為一個規範值輸出到第一個主寄存器。注意到在類型碼欄位中的標號apply是表示要進行一函數應用的標記。結果值,在該例中是一簡單值3被分布到各處,以便將每一個出現標記id1的地方都換成該值。
重寫規則確定相等的表達式。重寫方向與這些規則相聯繫。當跟隨該重寫方向時,可獲得一較簡單的表達式。當表達式不能被重寫為一個較簡單的表達式時,該表達式是規範的。因此,本發明的計算裝置採用重寫規則將表達式重寫為更規範的形式。
除上面所給出的重寫規則之外,中央控制單元CU還包含下列重寫規則type(e1…nothing…en)→nothing,這裡type係指上述表上從par(list)一直到unify(list)的一個表達式,e1…en是表元素。
type(e1…alt(c1…ck)…en)→alt(type(e1…c1…en)…type(e1…ck…en))這裡type更指上述表上從par(list)一直到unify(list)(除alt(list)之外)的一個表達式,e1,en,c1,ck為表元素。
set(a) →nothingset( ) →′alt(a),如果a是在上面表示式表中從par(list)至′apply(list)的一個表達式。
set(alt(e1…en)) →′alt(ea…en),這裡e1…en是沒有按特定次序提供的元素,ea…en為按某種次序提供的元素。
set(e1…en) →set(con(e1…en))Lambda(alt(e1…en) →set(alt(e1…en))Lambda(e1…en) →par(e1…en)hide(alt(e1…en) →set(alt(e1…en)hide(e1…en) →par(e1…en)apply( ) →nothing
apply(e) →evalmeta(e)apply(′alt(b1…bn)a2…am)→apply/ evalmeta′alt(b1…bn)a2…am)apply(par(b1…bn)a2…am) →nothing,如果所有bi和ai是上面表示式中從par(list)到′apply(list)的表達式,而且n#m或對於i>1,ai#bi.
apply(par(b1…bn)a2…am) →b1,如果所有bi和ai是上面表達式表中從par(list)到′apply(list)的表達式,而且m=n,並且對於i>1所有ai=bi。
apply(seq(b1…bn)a2…am) →nothing,如果所有bi和ai是上面表達式表中從par(list)到′apply(list)的表達式,n#m或對i>1任一ai#bi。
apply(seq(b1…bn)a2…am) →bi,如果所有bi和ai是上面表達式表中從par(list)到′apply(list)的表達式,n=m,並且對i>1,所有ai=bi。
函數evalmeta將以程序形式表示的表達式(即貫以′的)轉換為值的形式(即無′的),只有最高級結構中可以省去′。
evalmeta′type(a) →type(a),這裡type代表上面表上的從par(list)到unify(list)的一個表達式(除alt(list)之外)。
Symb包括一個元素S的表達式symb(s),當歸約為一個規範表達式時該元素S是一個標識符,所述元素S可以被存儲在屬於目標存儲器中不同存儲單元的存儲欄位,所述存儲單元被定義為按作用域方式布置,在每一作用域中的所有標識符S表示相同的狀態。
Discr,pulses表達式dircr(n)(其中n是一個整數)表示具有n個微狀態的一併行狀態,表達式pulses(n)(n是一個整數)表示n個微狀態的一個時間鏈。
下面的重寫規則是予定的par(delta1…deltan)→discr(n)Seq(deltat1…deltatn)→pulses(n)為了說明如何應用擴展句法,用於在同一埠交替讀出和寫入的程序可以更緊湊的方式提供。首先對超過離散值1,2和3的抽象平方(sqr)由下面的短程序定義Unify(symb(sqr)alt(Lambda(1 1)Lambda(4 2)Lambda(9 3))存儲在目標存儲器1的閉包樹中。從而「機器狀態」可僅寫成一個Seq操作Seq(during(1s x)during(1s apply(symb(sqr) x)
(during(1s x)during(1s apply(symb(sqr) x)…)這一Seq操作在執行時將被改寫為上面指出的alt操作。即使這一程序還是和輸入數據一樣長,處理這一問題的精巧方式是在硬體中提供一些函數和標準替代物,或作為軟體與插入程序裝在一起。
例子之一是乘法(X),藉助於標準操作,數值a的乘方可以簡單程序寫出Unify(symb(sqr)Lambda(symb(a) apply(x par(symb(a) symb(a)))))這一程序試圖將由硬體所定義的所有數進行乘方處理。
這些規則可用於寫小循環程序,該程序在根據歸約規則進行重寫時並不呈現上面所提及的大alt結構。硬體使不必要的說明都被略去。這可通過採用我們的未決申請NO…中所描述的核心單元形式來得到最佳地實施。
可以執行所描述的重寫規則,通過採用狀態的統一(化)而隱含一種說明方式的計算裝置的狀態由明確規定的所經過的時間次序加以確定。這種時間上的描述看起來象是一種符號語言。
抽象句法很簡單,不幸的是這使它不特別易讀,為了使程序更易讀引入一個更複雜的句法,因為人們不希望那種過份低淺的複雜性。
這種變換可以許多不同方式完成,然而最自然的是具有句文(具有正文)的和圖象的形式。當硬體檢測一個值不正確時,例如通過檢查計算值的奇偶校驗位時,提供一錯誤指示,這時採用back up表達式。
backup的歸約規則是這樣的一個backup的值是不同於fault的第一個元素,如果不存在這樣一個元素,backup就是nothing。
backup的重寫規則為backup( ) →faultbackup(fault1…faultn) →faultbackup(fault1…faultk-1ek…en)→ek如同所有其他規則一樣,該規則是以快速存儲器1,3和中央控制單元CU之間的協作形式建立的。
根據上面的描述可以清楚語言H有幾種表示,該語言具有一個核心Habs,這是一種抽象語言,關於這種語言採用了一套表示法,主要的語言表示法為Habs 這種語言表示的是正式定義之外現有的最基本的一種,它是完全說明性的,但沒有用戶易讀的句法。
Hfault 這種語言表示法是由在計算裝置中用於修正硬體錯誤的結構所擴展了的Habs,這種語言表示不是說明性的,相反其結果是一個隨機值,這種表示法是一種根語言表示法,所有其他語言表示法都基於該表示法,它沒有用戶易讀的句法。
Huser 這種語言表示法是用對整數和實數運算設置集合,以及用對數字和結構運算的算符加強的Hfault,其中還包括無限替換。語言表示法Huser沒有用戶易讀的句法。這種表示法是一種對用戶可見的抽象語言。
Hascii 這種語言表示法對除採用插入句法的最通用表示之外的所有句法採用規定的ascii字符和前綴。
本發明是參照最佳實施例描述的,對本領域的普通技術人員而言在不脫離本發明正確精神和範圍的前提下可作各種變化,並可對元素作等效替換,此外,在不脫離本發明基本教導的前提下可作各種修正。
權利要求
1.一種計算裝置,其特徵在於a)一快速存儲裝置(CU,1),該裝置包括許多存儲單元裝置(2),每個單元具有能夠啟動執行一次操作的信息;b)至少一個埠裝置(4,5,6),該裝置被連接到所述快速存儲裝置;c)至少一個環境裝置(7,8,9),該裝置被連接到所述至少一個埠裝置。
2.如權利要求1所述的一臺計算裝置,其特徵在於具有用於在所述快速存儲裝置中將在一個埠裝置上提供的一信號序列(圖2)與存儲在至少一個存儲單元中的一個序列進行比較的裝置,所述被存儲的序列具有可能未被定義的序列元素($),在所說快速存儲裝置中,以及重寫所述比較序列為nothing的裝置(cu,3),如果比較給出明顯的差異,那麼將比較序列重寫為nothing,(即nothing代表矛盾),反之將所述比較序列重寫為一個指定的序列。
3.如權利要求2所述的一臺計算裝置,其特徵在於所述比較裝置進行成組比較,各組包括表元素中予定數目的至少兩個元素。
4.如權利要求2所述的一臺計算裝置,其特徵在於具有裝置(3,during,7,8,9),用於提供所說信號序列作為一個隨時間變化的具有單一採樣周期的被採樣的信號(圖2),所述信號序列是一元素組表,每一組包括一持續時間和在該時間內的至少一個信號量。
5.如權利要求4所述的一臺計算裝置,其特徵在於在每一組中的所述予定數目的表元素每兩個組成一對,每對包括時間和信號量的組合。
6.如權利要求1至5中任一權利要求所述的一個計算裝置,其特徵在於具有用於將所述埠裝置與至少另一所述埠裝置同步,並在每一持續時間內對從所述埠輸出的信號量值進行並行指示的裝置。
7.如權利要求1至6中任一權利要求所述的一臺計算裝置,其特徵在於所述存儲單元裝置在所述快速存儲器中具有一種結構,適應於以一種明確的或隱含的抽象句法編碼方式存儲一電腦程式,該句法通過表達式描述一些不同的抽象目標,每一存儲單元裝置每次能以一種適當的數據和/或程序結構形式存儲所述句法表達式的至少一部分。
8.如權利要求7所述的一臺計算裝置,其特徵在於每種表達式還有一種相應的表達式,指示它是一程序形式,所有程序形式適合被歸約為它們本身,因而保持不變的表達式。
9.如權利要求9所述的計算裝置,其特徵在於包括重寫裝置(CU),該裝置配合所述包含句法表達式的存儲單元根據予定的重寫規則重寫所述句法表達式。
10.如權利要求9所述的一臺計算裝置,其特徵在於所述句法包括至少下面的一些基本句法表達式port,nothing,alt(list),par(list),Seq(list),Unify(list),during(list),Cont(v),period(v),這裡(list)是數據元素表(e1…en),每個表存儲在包含該表所屬的表達式的一個所述存儲單元的一個存儲欄位中,如果該所述存儲單元有空閒處存儲該表的話,或至少存儲在與包含所述表達式的所述存儲單元相聯的一個所述存儲單元中,這裡V是一個實數;在during(list)中的表可能具有下面的元素Cont(v),period(v)和一任意值($);這裡表達式port代表所述物理埠之一個埠,而且是一種特別類型的間接元素,nothing是一特殊類型值,代表矛盾,包含alt表達式的存儲單元中包含一表的認為是替代元素的離散元素;包含par表達式的存儲單元中包含一表的認為是並行元素的離散元素;包含Seq表達式的存儲單元中包含一表的認為是序列元素的離散元素,包含unify表達式的存儲單元中包含一表的認為是統一化元素的離散元素包含during表達式的存儲單元中包含一持續時間和一信號量值對,Cont(v)表示沿具有長度V的一段距離具有無限個極小狀態的一個空間量。而period(v)表示在具有寬度V的一個周期內具有無限個極短狀態的一個時間長度。
11.如權利要求9和10的組合所述的一個計算裝置,其特徵在於所述重寫規則至少某些規則由下面選出nothing →nothingalt(e) →ealt(e1…nothing…en) →alt(e1…en)(即值nothing被略去)alt(e1…alt(c1…ck)…en) →alt(e1…c1…ck…en)par(e1…en) →nothing(如果e1至en的任意一值為nothing)par(e1…alt(c1…ck)…en) →alt(par(e1…c1…en)…par(e1…ck…en))par(e1…en) →par(e1…en)在相反情況下seq(e1…en) →nothing(如果e1至en的任意一值為nothing)seq(e1…alt(c1…ck)…en) →alt(seq(e1…c1…en)…seq(e1…ck…en))……seq(e1…en) →seq(e1…en)在相反情況下Unify( ) →nothingUnify(e) →eUnify(e1e2) →e2(如果e1=e2)Unify(e1e2) →nothing(如果e1不同於e2)Unify(e1e2e3…en) →Unify(unify(e1e2)e3…en)Unify(e1…en) →nothing(如果e1至en任意一值為nothing)Unify(e1…alt(c1…ck)…en) →alt(unify(e1…c1…en)…Unfiy(e1…ck…en))
12.如權利要求8所述的計算裝置,其特徵在於所述句法至少包括在下列表達式中選擇的一個句法表達式Cont(v),period(v),deltat,par(list),seq(list),′alt(list),′con(list),′pri(list),′Lambda(list),′hide(list),′Symb(list),′unify(list),′Set(list),′apply(list)alt(list),nothing,con(list),pri(list),Unify(list),Lambda(list),hide(list),set(list),apply(list),Symb(list),discr(n),pulses(n),其中每一句法表達式是在所述目標存儲單元中的作為表達式存儲的一個算符,在(list)中的每一個元素是指示一個狀態的元素;n是一個整數,V是一個實數;每個所述元素都可被存儲在包含該表所屬的所述表達式的存儲單元中的一個存儲欄位中;表達式cont(v)表示沿具有長度V的一段距離具有無限極小狀態的一個空間量;表達式period(v)表示在具有寬度V的時間周期內具有無限個極短狀態的一個時間間隔;所述表達式delta表示在空間具有極微擴展和具有無限時間擴展的一個狀態;表達式deltat表示在時間上具有極微擴展而在空間具有無限擴展的一個狀態;表達式par(list)代表包含該表達式的存儲單元包含一表列的認為是並行元素的離散元素;表達式seq(list)代表包含該表達式的存儲單元包含一表列的認為是序列元素的離散元素;所有具有一詞法元素的表達式指示其形式為一程序形式;表達式alt(list)表示包含該表達式的存儲單元包含一表列的認為是替代元素的離散元素;nothing是表示矛盾值的一特殊單元;表達式con(list)包含至少具有零但也可以是幾個狀態元素的表,並且和其表中第一元素是相同的,如果在該表中的所有元素是規範的並且不同於nothing;表達式pri(list)包含至少具有零但也可以是幾個狀態的表,並且和其表中不是nothing的第一個規範元素是相同的;表達式Unify(list)表示包含該表達式的存儲單元包含一列表的認為是統一化的元素的離散元素;表達式Lambda(e3ep1…epn)是一規則,表示元素e3被ep1…epn置換;表達式apply(list)用於具有作為其第一元素的函數指令(+-*/等)的算術運算,其餘的元素是自變量;如果er是一規則Lambda(esep1…epn),所述表達式apply(evearg1…eargn)是一應用,在一歸約操作中,如果epi與相應的eargi一致,則該應用由es替代,反之,該應用為nothing;表達式hide(list)表示一狀態,在那裡用於結構內和結構外的全變量是分離的,即彼此是不可見的;表達式set(list)表示在表(list)中的內容將被轉換為程序形式;表達式Symb(s)包括一個元素S,在表達式被歸約為一規範表達式時,該元素是一標識符,所述元素S可以被存儲在屬於所述目標存儲器中不同存儲單元的存儲欄位,所述存儲單元被定義為安置在作用域內,在該作用域內的所有標識符S代表相同的狀態;表達式discr(n)(其中n為一整數)代表具有n個微小狀態的空間量;表達式pulses(n)(其中n為整數)代表n個微小狀態的時間間隔。
13.如權利要求12和13的計算裝置,其特徵在於所述重寫規則由下述規則擴展type(e1…nothing…en) →nothing,其中type代表上面表上的從par(list)到′apply(list)的一個表達式,e1,en是表元素。type(e1…alt(c1…ck)…en)→alt(type(e1…c1…en)…type(e1…ck…en))其中type代表上面表中從par(list)至Unify(list)(除alt(list)之外)的一個表達式,e1,en,c1,ck是表元素。Set( ) →nothingset(a) →′alt(a),如果a是上面表示式表中從par(list)到′apply(list)的一個表達式Set(alt(e1…en)) →′alt(e0…en)其中e1…en是不提供任何特別次序的元素,而e0…en提供某種次序。set(e1…en) →set(con(e1…en))Lambda(alt(e1…en)) →Set(alt(e1…en))Lambda(e1…en) →par(e1…en)hide(alt(e1…en)) →set(alt(e1…en))hide(e1…en) →par(e1…en)apply( ) →nothingapply(e) →evalmeto(e)apply(′alt(b1…bn)a2…am) →apply(evalmeto′alt(b1…bn)a2…am)apply(par(b1…bn)a2…am) →nothing(如果所有bi和ai是上面表達式中從par(list)至apply(list)的表達式,並且n#m,以及對i>1任何ai#biapply(par(b1…bn)a2…am) →b1,如果所有bi和ai是上面表達式表中從par(list)到′apply(list)的表達式,並且n=m,對i>1所有ai=biapply(seq(b1…bn)a2…am) →nothing,如果所有bi和ai是上面表達式表中從par(list)到′apply(list)的表達式,並且n#m或對i>1任何ai#biapply(seq(b1…bn)a2…am) →b1,如果所有bi和ai是上面表達式表中從par(list)到′apply(list)的表達式,並且n=m,以及對i>1所有ai=bi函數evalmeto將程序形式的表達式(前面貫以′)轉換為數值形式(即沒有′),只有最高一級結構可省去′。evalmeto′type(a) →type(a),其中type代表上面表中從par(list)到Unify(list)(除alt(list之外)的表達式con( ) →nothingcon(e1…nothing…en) →nothingcon(e1…en) →e1pri( ) →nothingpri(nothing1…nothingn) →nothingpri(nothing1…nothingk-1ek…en) →ekpar(delta1…deltan) →discr(n)seq(delta1…deltatn) →pulses(n)
14.如權利要求1至13中任一權利要求所述的計算裝置,其特徵在於每個存儲單元適應於至少存儲下面所列舉的一部分特性指示在所述存儲單元中的表達式是否要被歸約的標記;指示表達式是否為一根樹的組成部分以及表達式特性的標記;指示表達式是如何產生的標記;指示表達式是否由一些重複狀態組成的標記;指示表達式是否僅僅為一個表的一部分的標記,該表具有存儲在另外存儲單元的另外的表的組成部分。
15.如權利要求1至14中的任一權利要求所述的計算裝置,其特徵在於在所述目標存儲器的存儲單元裝置中包含有可能以明確的或隱含的抽象句法編碼形式存儲一電腦程式的裝置,並在該句法上確定歸約規則的語義。
16.如權利要求15所述的計算裝置,其特徵在於所述語義包括若干重寫規則,每一該規則包括一個表達式和一組數值,這意味著在所述組中的每一值與該組中的另一值是等效的,可以用它進行交換。
17.如權利要求1至16中的任一權利要求所述的計算裝置,其特徵在於有一區域,包含存儲單元,該存儲單元與所述快速存儲器中的所述存儲單元具有相似的功能結構,但是是一個只讀形式的,並且具有予定功能和標準的選擇元。
18.如權利要求1至17中任一所述的計算裝置,其特徵在於包括用於連續查錯的裝置,並且有按照下述規則的backup性能backup( ) →faultbackup(fault1…faultn) →faultbackup(fault1…faultk-1ek…en) →ek
全文摘要
本發明是關於一種計算裝置,該計算裝置包括a)一快速存儲裝置(Cu,1),該裝置包括許多存儲單元裝置(2),每一個具有能夠啟動執行一種操作的信息;b)至少一個埠裝置(4,5,6),該裝置被連到所述快速存儲裝置;c)至少一個環境裝置(7,8,9),該裝置被連接到所述至少一個埠裝置。
文檔編號G11C11/417GK1059799SQ9110865
公開日1992年3月25日 申請日期1991年8月2日 優先權日1990年8月2日
發明者卡爾斯特·拉斯·岡納 申請人:卡爾斯特電子公司