国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      用于操作計(jì)算機(jī)處理器陣列的方法和裝置的制作方法

      文檔序號(hào):6574803閱讀:227來源:國(guó)知局

      專利名稱::用于操作計(jì)算機(jī)處理器陣列的方法和裝置的制作方法
      技術(shù)領(lǐng)域
      :本發(fā)明涉及計(jì)算機(jī)和計(jì)算機(jī)處理器領(lǐng)域,更具體地,涉及一種用于在計(jì)算機(jī)之間進(jìn)行單一類型互動(dòng)的的方法和裝置。該創(chuàng)造性的計(jì)算機(jī)陣列的當(dāng)前主要用途在于,在單一微芯片上對(duì)多臺(tái)計(jì)算機(jī)進(jìn)行組合。進(jìn)一步更為具體地,本發(fā)明涉及計(jì)算機(jī)和計(jì)算機(jī)處理器領(lǐng)域,更具體地,涉及一種用于在堆棧計(jì)算機(jī)處理器中更有效使用堆棧的方法和裝置。
      背景技術(shù)
      :本領(lǐng)域公知的是,使用多臺(tái)計(jì)算機(jī)處理器,使它們一起工作而完成任務(wù)。已經(jīng)使用了多線程和其它多種方案來允許處理器進(jìn)行協(xié)作。不過,一般認(rèn)為,該領(lǐng)域的改進(jìn)空間很大。進(jìn)一步,現(xiàn)在流行的趨勢(shì)是,將多臺(tái)處理器組合在單一的芯片上,但這會(huì)加劇問題,并且使得更加緊迫地需要找到一種解決方案來使得計(jì)算機(jī)以高效的方式一起工作?,F(xiàn)在,出于多種原因,認(rèn)為針對(duì)許多應(yīng)用程序的多臺(tái)處理器的最佳排列可能是由多臺(tái)計(jì)算機(jī)組成的陣列,每臺(tái)計(jì)算機(jī)均具有處理能力和至少一些專用存儲(chǔ)器。在該示例中,每臺(tái)計(jì)算機(jī)如果獨(dú)立運(yùn)行,那么它的功能都不會(huì)特別強(qiáng)大,但是如果計(jì)算機(jī)緊密協(xié)作,就將會(huì)實(shí)現(xiàn)強(qiáng)大的計(jì)算功能。共同待審的申請(qǐng)已經(jīng)描述并宣稱這種計(jì)算機(jī)陣列的多個(gè)創(chuàng)造性的方面,包括關(guān)于可以怎樣布置這種計(jì)算機(jī),以及在它們之間的通訊信道如何產(chǎn)生的一些細(xì)節(jié)。不過,計(jì)算機(jī)陣列的相對(duì)較新的概念的實(shí)施,還需要更進(jìn)一步的創(chuàng)新,以便使運(yùn)行效率最大。顯然,關(guān)于如何最佳地布置計(jì)算機(jī)陣列,在計(jì)算機(jī)陣列之間進(jìn)行通訊,在計(jì)算機(jī)陣列中分割任務(wù),以及其他使用計(jì)算機(jī)陣列的方面,有許多需要解答的問題。這些問題中的一些已經(jīng)得到回答,不過即使在現(xiàn)存的解決方案上,也還存在改進(jìn)空間。在其它情況下,解決方案可能要求陳述第一印象的問題,以便解決現(xiàn)有技術(shù)中目前還不存在的新問題。堆棧計(jì)算機(jī)所提供的處理器復(fù)雜度大大低于復(fù)雜指令集計(jì)算機(jī)(CISC)的復(fù)雜度,并且堆棧機(jī)器所提供的系統(tǒng)整體復(fù)雜度也低于精簡(jiǎn)指令集計(jì)算機(jī)(RICS)或CISC機(jī)器的系統(tǒng)整體復(fù)雜度。它們并不需要復(fù)雜的編譯器,也不需要高速緩沖控制硬件來實(shí)現(xiàn)優(yōu)良性能。它們還獲得了有競(jìng)爭(zhēng)力的原始性能,以及在大多數(shù)編程環(huán)境中針對(duì)給定價(jià)格的優(yōu)良性能。它們最初被成功應(yīng)用的領(lǐng)域是實(shí)時(shí)嵌入式控制環(huán)境,在該環(huán)境中它們做得比其它系統(tǒng)設(shè)計(jì)方法好得多。之前,堆棧大都保持在程序存儲(chǔ)器中,較新的堆棧機(jī)器為堆棧維護(hù)分立的存儲(chǔ)器芯片,或者甚至是片上存儲(chǔ)器的一塊區(qū)域。這些堆棧機(jī)器提供了極其快速的子例程調(diào)用能力,以及及極其的中斷處理和任務(wù)切換性能。Zahir等人(USPN6,367,005)公開了一種寄存器堆棧引擎,該引擎將足夠的寄存器堆棧的寄存器保存到存儲(chǔ)器,以在堆棧上溢的情況下提供更多可用的寄存器。寄存器堆棧引擎還使微處理器延遲,直到所述引擎可在堆棧下溢的情況下恢復(fù)合適數(shù)量的寄存器。Story(USPN6,219,685)公開了一種將運(yùn)行結(jié)果與閾值進(jìn)行比較的方法。不過該方法并不對(duì)如下兩種結(jié)果進(jìn)行區(qū)分,一種是結(jié)果被四舍五入到閾值(這將引起上溢異常),另一種是結(jié)果恰好就等于閾值。被Story公開的另一種方法讀取和寫入硬件標(biāo)記,以識(shí)別上溢或下溢狀況。采用存儲(chǔ)器中的堆棧,上溢或下溢將覆蓋堆棧項(xiàng)目,或使用并不意在成為堆棧一部分的堆棧項(xiàng)目。在堆棧中減輕或消除上溢和下溢的方法存在改進(jìn)的必要。Forth系統(tǒng)已經(jīng)能夠讓不止一個(gè)的代碼“線程”同時(shí)執(zhí)行,這經(jīng)常稱為協(xié)作循環(huán)制(cooperativeround-robin)。線程得到使用中央處理單元(CPU)的輪次的次序是固定的;例如,線程4總是在線程3之后并在線程5之前得到其輪次。每個(gè)線程被允許按其所需的時(shí)間保有CPU,然后自動(dòng)放棄它。線程通過調(diào)用字PAUSE實(shí)現(xiàn)此過程。在PAUSE函數(shù)期間,只需要保存少數(shù)數(shù)據(jù)項(xiàng)目,以便恢復(fù)原始任務(wù),但是在中斷函數(shù)期間,需要保存大量上下文。每個(gè)線程可能有工作要做,也可能沒有。如果任務(wù)4有工作要做,并且在循環(huán)制中在其之前的任務(wù)(任務(wù)3)調(diào)用PAUSE,那么任務(wù)4將蘇醒并且工作,直到它決定再次PAUSE。如果任務(wù)4沒有工作要做,它就將控制傳遞到任務(wù)5。當(dāng)任務(wù)調(diào)用了將要執(zhí)行輸入/輸出功能的字,并且因此將需要等待輸入/輸出完成時(shí),PAUSE被構(gòu)建到輸入/輸出調(diào)用中。PAUSE的可預(yù)測(cè)性允許非常有效的代碼。經(jīng)常地,基于Forth的協(xié)作循環(huán)制使每個(gè)線程在CPU處擁有輪次所用的時(shí)間,小于搶先多任務(wù)器確定哪個(gè)線程接下來將得到CPU所花的時(shí)間。不過,特定的任務(wù)往往可以蓋過或壓倒CPU。另外,將PAUSE功能進(jìn)行擴(kuò)展從而超出一個(gè)CPU是有好處的。
      發(fā)明內(nèi)容簡(jiǎn)而言之,本發(fā)明包括計(jì)算機(jī)陣列,每臺(tái)計(jì)算機(jī)具有其自身的存儲(chǔ)器并能夠發(fā)揮獨(dú)立的計(jì)算功能。為了協(xié)作完成任務(wù),計(jì)算機(jī)必須將數(shù)據(jù)和/或指令從一臺(tái)傳送到另一臺(tái)。一種可能的配置在于,計(jì)算機(jī)在垂直鄰近的計(jì)算機(jī)之間具有連接數(shù)據(jù)路徑,這樣,每臺(tái)計(jì)算機(jī)可以直接與多達(dá)四個(gè)的“鄰居”進(jìn)行通訊。如果計(jì)算機(jī)希望與另一臺(tái)不直接相鄰的計(jì)算機(jī)進(jìn)行通訊,那么通訊將被引導(dǎo)通過另一臺(tái)計(jì)算機(jī)而到達(dá)所希望的目的地。因?yàn)?,根?jù)所描述的環(huán)境,所包含的指令多達(dá)四個(gè)的數(shù)據(jù)字可以在計(jì)算機(jī)之間并行傳送,并可以并行傳送進(jìn)和傳送出每臺(tái)計(jì)算機(jī)的內(nèi)部存儲(chǔ)器,因此單個(gè)數(shù)據(jù)字中的一種迷你程序在此被稱為微循環(huán)。應(yīng)該記住的是,在大型處理器陣列中,大型任務(wù)理想地被分割成多個(gè)較小型的任務(wù),每個(gè)小型任務(wù)可以被能力受到一定限制的處理器所完成。因此,可以想到,四指令環(huán)路將相當(dāng)有用。這個(gè)事實(shí)通過相關(guān)事實(shí)而變得更為明顯,該事實(shí)是,因?yàn)橛?jì)算機(jī)確實(shí)在能力上受限,因此對(duì)于它們而言比較有利的是,有時(shí)從鄰近計(jì)算機(jī)“借用”能力。這將為微循環(huán)的使用提供了理想的機(jī)會(huì)。雖然計(jì)算機(jī)可能需要從鄰近計(jì)算機(jī)借用處理功能之類,不過另一種可能在于,它可能需要從鄰近計(jì)算機(jī)借用一些存儲(chǔ)容量,并且以一定程度上類似于本地存儲(chǔ)器的方式使用這些借用的存儲(chǔ)容量。通過將微循環(huán)傳遞到鄰近計(jì)算機(jī),以指令該臨近計(jì)算機(jī)讀取或?qū)懭胍幌盗袛?shù)據(jù),就可以容易地實(shí)現(xiàn)這種借用的存儲(chǔ)器。這種微循環(huán)可以例如包含如下指令,該指令從特定的內(nèi)部存儲(chǔ)器位置寫入,對(duì)該位置進(jìn)行增值,然后重復(fù)給定次數(shù)的迭代。微循環(huán)因?yàn)槭菃我蛔?,因此不能不止一次地?zhí)行指令存儲(chǔ)器讀取。上述將微循環(huán)傳遞到鄰近計(jì)算機(jī)的示例為本發(fā)明又一方面的示例,該方面在此被稱為“Forthlet”,因?yàn)樗鼈兡壳安捎肍orth計(jì)算機(jī)語言執(zhí)行——雖然本發(fā)明的應(yīng)用并不嚴(yán)格限于使用Forth。Forthlet是一種迷你程序,它能夠被直接傳送到計(jì)算機(jī)用于執(zhí)行。與微循環(huán)不同,F(xiàn)orthlet可以不止一個(gè)字,并且可以執(zhí)行多存儲(chǔ)器讀取。在現(xiàn)有技術(shù)的計(jì)算機(jī)中,指令必須在執(zhí)行之前被讀取和存儲(chǔ),但是,如同根據(jù)此處的詳細(xì)描述所可見的,根據(jù)本發(fā)明這沒有必要。事實(shí)上,可以預(yù)見,本發(fā)明的一個(gè)重要方面在于,計(jì)算機(jī)可以產(chǎn)生Forthlet,并將其傳遞到另一臺(tái)計(jì)算機(jī)用于執(zhí)行。Forthlet可以被程序員“預(yù)先寫入”,并被存儲(chǔ)以便于使用。事實(shí)上,F(xiàn)orthlet可以被積聚成“圖書館”,以根據(jù)需要使用。不過,根據(jù)預(yù)編程標(biāo)準(zhǔn),在計(jì)算機(jī)中可以產(chǎn)生Forthlet,這也在本發(fā)明的范圍中。通過示例,在本發(fā)明的實(shí)施例中,I/O寄存器被當(dāng)作存儲(chǔ)器地址,這意味著,與讀取和寫入存儲(chǔ)器相同(或相似)的指令也可以執(zhí)行I/O操作。在多核芯片的情況中,針對(duì)I/O結(jié)果的這種選擇有強(qiáng)大的結(jié)果。核心處理器不僅可以讀取和執(zhí)行來自其本地ROM和RAM的指令,而且它還可以讀取和執(zhí)行在I/O端口或寄存器上向其展現(xiàn)的指令?,F(xiàn)在,傳送數(shù)據(jù)的緊環(huán)路的概念變得難以置信地有影響力。它允許指令流在I/O端口處向核心展示,并直接從I/O端口處執(zhí)行。因此,一個(gè)核心可以將代碼對(duì)象發(fā)送到鄰近的核心處理器,而所述臨近的核心處理器可以直接執(zhí)行該代碼對(duì)象?,F(xiàn)在代碼對(duì)象可以在核心之間傳送,這些核心在寄存器處執(zhí)行這些代碼對(duì)象。代碼對(duì)象以非常高的速度到達(dá),因?yàn)槊總€(gè)核心基本上完全工作在其本地地址空間中,而不會(huì)花費(fèi)明顯的時(shí)間用于傳送代碼指令。如上文所討論的,每次指令讀取將多個(gè)(目前描述的實(shí)施例中為四個(gè))指令帶進(jìn)核心處理器。雖然這種內(nèi)建“緩沖”當(dāng)然很小,不過在指令本身利用它時(shí),它卻及其有效。例如,所構(gòu)建的微for-next環(huán)路可以完全包含于單個(gè)18位指令字的限度中。當(dāng)與構(gòu)建在I/O寄存器中的自動(dòng)狀態(tài)信令結(jié)合時(shí),這些類型的構(gòu)造是理想的,因?yàn)檫@意味著,僅僅采用單次指令讀取就可以傳送較大的數(shù)據(jù)塊。并且采用這種指令包,執(zhí)行呈現(xiàn)在在來自鄰近處理器核心的共享I/O寄存器上的指令的概念,帶來了新能量,因?yàn)楝F(xiàn)在在該寄存器中出現(xiàn)的每個(gè)字具有的指令不是一個(gè),而是四個(gè)。這些類型的軟件/硬件結(jié)構(gòu)以及它們對(duì)多核心芯片性能的令人驚愕的沖擊,對(duì)于傳統(tǒng)語言而言簡(jiǎn)直是不可行的——它們僅僅可行這樣的指令集,其中多個(gè)指令被打包在單個(gè)字中,并且完整的循環(huán)可以從該字中執(zhí)行。在此描述的器件中,傳統(tǒng)的數(shù)據(jù)和返回堆棧被替換以一陣列的寄存器,其以循環(huán)重復(fù)模式(circular,repeatingpattern)運(yùn)作。數(shù)據(jù)堆棧包括T寄存器、S寄存器和八個(gè)硬連線寄存器,它們以交替模式(alternatingpattern)電互連。這八個(gè)硬連線寄存器以諸如循環(huán)重復(fù)模式的方式互連。這種配置防止從堆棧外部讀取,并防止讀取不希望的空寄存器值。類似于數(shù)據(jù)堆棧,返回堆棧包括R寄存器和八個(gè)硬連線寄存器,它們以交替模式電互連。這八個(gè)硬連線寄存器以諸如循環(huán)重復(fù)模式的方式互連。這種配置防止從堆棧外部讀取,并防止讀取不希望的空寄存器值。上述雙堆棧處理器可以用作獨(dú)立運(yùn)作的處理器,或者它可以在互連計(jì)算機(jī)陣列中用于其它多個(gè)類似的或不同的處理器??紤]到對(duì)實(shí)施本發(fā)明的模式及其工業(yè)實(shí)用性所做的,如在此所述的以及通過附圖的多副圖中所圖示的,本發(fā)明將對(duì)本領(lǐng)域技術(shù)人員而言變得更加清楚。所列舉的目標(biāo)和優(yōu)勢(shì)并非是本發(fā)明所有優(yōu)點(diǎn)的窮盡列舉。而且,即使在應(yīng)用中缺少或不需要一個(gè)或多個(gè)所意圖的目標(biāo)和/或優(yōu)點(diǎn),也可以實(shí)踐本發(fā)明。進(jìn)一步,本領(lǐng)域的技術(shù)人員將認(rèn)知,本發(fā)明的各種不同的實(shí)施例可達(dá)到一種或多種目標(biāo)和/或優(yōu)點(diǎn),不過沒有必要全部實(shí)現(xiàn)。相應(yīng)地,在此描述的目標(biāo)和/或優(yōu)點(diǎn)并非本發(fā)明的實(shí)質(zhì)部分,并且不應(yīng)該被認(rèn)為是對(duì)本發(fā)明的限制。圖1是根據(jù)本發(fā)明的計(jì)算機(jī)陣列的示意圖;圖2是示出了圖1中計(jì)算機(jī)的子集和圖1中互連數(shù)據(jù)總線的更詳細(xì)視圖的詳細(xì)圖;圖3是描述圖1和圖2中的其中一臺(tái)計(jì)算機(jī)的一般布局的結(jié)構(gòu)圖;圖4是指令字48的示意性表現(xiàn);圖5是圖3中的時(shí)段定序器42的示意性表現(xiàn);圖6是描述根據(jù)本發(fā)明的微循環(huán)的示例的流程圖;圖7是描述用于執(zhí)行來自端口的指令的創(chuàng)造性方法的示例的流程圖;圖8是描述用于警醒計(jì)算機(jī)的創(chuàng)造性的改進(jìn)方法的示例的流程圖;圖9示出了計(jì)算機(jī)12f和12g的運(yùn)行。具體實(shí)施例方式下文中將結(jié)合附圖描述實(shí)施本發(fā)明的方法,在附圖中,相應(yīng)的附圖標(biāo)記代表相同或相似的元件。雖然按照實(shí)現(xiàn)本發(fā)明目標(biāo)的模式描述了本發(fā)明,不過本領(lǐng)域人員可以理解的是,在不脫離本發(fā)明的精神和范圍的前提下,考慮到這些啟示,可以實(shí)現(xiàn)對(duì)本發(fā)明的各種改造。在此描述的和/或在附圖中示出的本發(fā)明的諸實(shí)施例和改造,僅僅旨在示例,而非意在限制本發(fā)明的范圍。除非另外特別指明,本發(fā)明的獨(dú)特的方面和部分,可能被忽略或修改,或者可能已經(jīng)因此替代了公知的等價(jià)物,或者還是未知的替代物,例如有待于將來開發(fā)的或者例如為在將來可能被發(fā)現(xiàn)而可接受的替代物。即使需要保持處于所要求保護(hù)的發(fā)明的精神和范圍之內(nèi),本發(fā)明還是可以針對(duì)多種應(yīng)用進(jìn)行修改,因?yàn)闈撛趹?yīng)用的范圍很廣闊,還因?yàn)楸景l(fā)明本就旨在適于多種這類的改造。以下描述的實(shí)施例以計(jì)算機(jī)陣列為例,該陣列既具有計(jì)算機(jī)之間的異步通訊,也具有單獨(dú)的異步運(yùn)行計(jì)算機(jī),雖然如此,本發(fā)明的應(yīng)用絕不限于這里所記載的上下文。本發(fā)明包括單獨(dú)計(jì)算機(jī)的陣列。圖1中的示意圖描述了該創(chuàng)造性的計(jì)算機(jī)陣列,其在此被一般地標(biāo)記以附圖標(biāo)記10。計(jì)算機(jī)陣列10具有多個(gè)(在所示的示例中為二十四個(gè))計(jì)算機(jī)12(有時(shí)候在陣列的示例中也稱為“核心”或“節(jié)點(diǎn)”)。在所示的示例中,所有的計(jì)算機(jī)12均位于單個(gè)基座(die)14上。每臺(tái)計(jì)算機(jī)12是通常獨(dú)立運(yùn)行的計(jì)算機(jī),下文中將對(duì)此做更詳細(xì)的討論。計(jì)算機(jī)12被多條(下文中將對(duì)該數(shù)量做詳細(xì)闡釋)互連數(shù)據(jù)總線16互相連接。在本示例中,數(shù)據(jù)總線16是雙向異步高速并行數(shù)據(jù)總線,盡管針對(duì)此目的采用其它互連方式也落入本發(fā)明的范圍中。在陣列10的本實(shí)施例中,不僅計(jì)算機(jī)12之間的數(shù)據(jù)通訊是異步的,單獨(dú)的計(jì)算機(jī)12也以內(nèi)在(internally)異步模式運(yùn)行。這已經(jīng)被發(fā)明人所發(fā)現(xiàn)能夠提供重要的優(yōu)勢(shì)。例如,因?yàn)闀r(shí)鐘信號(hào)不必發(fā)布到整個(gè)計(jì)算機(jī)陣列10,因此就節(jié)約了大量的能量。進(jìn)一步,由于不必發(fā)布時(shí)鐘信號(hào),就消除了許多定時(shí)問題,這些定時(shí)問題可能限制陣列10的尺寸或可能導(dǎo)致其它公知麻煩。24臺(tái)計(jì)算機(jī)組成的陣列并非一種限制,并且期待的是,隨著芯片制造技術(shù)更為復(fù)雜,計(jì)算機(jī)的數(shù)目將增大,當(dāng)然,可量測(cè)性(scalability)是這種配置的原則。本領(lǐng)域的技術(shù)人員可以認(rèn)識(shí)到,出于清晰的考慮,基座14上的額外部分在圖1的視圖中被省略了。這些額外部分包括電力總線、外部連接襯墊、和微處理器芯片的其他這類公共方面。計(jì)算機(jī)12e是未處于陣列10的周界上的其中一臺(tái)計(jì)算機(jī)12的示例。也就是說,計(jì)算機(jī)12e具有四個(gè)垂直相鄰的計(jì)算機(jī)12a、12b、12c和12d。對(duì)計(jì)算機(jī)12a-12e進(jìn)行的這種分組將在下文中用于對(duì)陣列10的計(jì)算機(jī)12之間的通訊進(jìn)行更為詳細(xì)的討論。如圖1的視圖可見,諸如計(jì)算機(jī)12e的內(nèi)部計(jì)算機(jī)將具有通過總線16與該內(nèi)部計(jì)算機(jī)直接通訊的其它四臺(tái)計(jì)算機(jī)12。在下文的闡述中,所討論的原理將用于所有計(jì)算機(jī)12,除了在陣列10的周界上的計(jì)算機(jī)12僅僅與三臺(tái)其他計(jì)算機(jī)直接通訊,還除了邊角計(jì)算機(jī)12僅僅與兩臺(tái)其他計(jì)算機(jī)12直接通訊。圖2是圖1的一部分的更為詳細(xì)的視圖,其僅僅示出了一些計(jì)算機(jī)12,具體而言,僅僅示出了計(jì)算機(jī)12a-12e。圖2的視圖還揭示了,所有數(shù)據(jù)總線16均具有讀線路18、寫線路20和多條(在本示例中為十八條)數(shù)據(jù)線路22。數(shù)據(jù)線路22能夠幾乎同時(shí)地并行轉(zhuǎn)換一個(gè)18比特指令字的所有比特。應(yīng)該注意的是,在本發(fā)明的一個(gè)實(shí)施例中,一些計(jì)算機(jī)12是相鄰計(jì)算機(jī)的鏡像(mirrorimage)。不過,不論計(jì)算機(jī)12所有均走向一致還是作為相鄰計(jì)算機(jī)的鏡像,均不構(gòu)成這里描述的本發(fā)明的一方面。因此,為了更好地描述本發(fā)明,在此并不進(jìn)一步討論這種潛在的復(fù)雜性。根據(jù)本創(chuàng)造性方法,計(jì)算機(jī)12,例如計(jì)算機(jī)12e,可以對(duì)它的一條、兩條、三條或所有四條讀線路18進(jìn)行設(shè)置,從而使得該計(jì)算機(jī)準(zhǔn)備從相應(yīng)的一臺(tái)、兩臺(tái)、三臺(tái)或所有四臺(tái)相鄰計(jì)算機(jī)12接收數(shù)據(jù)。類似地,計(jì)算機(jī)12還可以將其一條、兩條、三條或所有四條寫線路20設(shè)置為高。雖然在此的描述并未涉及在同一時(shí)刻將不止一臺(tái)計(jì)算機(jī)12的寫線路20設(shè)置為高,但是如此做法并未超出本發(fā)明的范圍,因?yàn)榭梢韵胂?,如果事?shí)上希望在多種場(chǎng)合使用的話,例如要寫入多端口地址,則這種操作的使用是可能發(fā)生的。當(dāng)鄰近的計(jì)算機(jī)12a、12b、12c或12d中的一臺(tái)將其本身與計(jì)算機(jī)12e之間的寫線路20設(shè)置為高時(shí),如果計(jì)算機(jī)12e已經(jīng)將對(duì)應(yīng)的讀線路18設(shè)置為高,則字從該計(jì)算機(jī)12a、12b、12c或12d沿著相關(guān)的數(shù)據(jù)線路22傳送到計(jì)算機(jī)12e。然后,發(fā)送計(jì)算機(jī)12將釋放寫線路20,并且接收計(jì)算機(jī)(在本示例中為12e)將寫線路20和讀線路18均拉低。后一操作將向發(fā)送計(jì)算機(jī)12確認(rèn),已經(jīng)接收到數(shù)據(jù)。需要注意的是,上述描述并非必然意圖按順序表示這些事件的次序。在實(shí)際操作中,在該示例中,在發(fā)送計(jì)算機(jī)12釋放(停止拉高)其寫線路20之前不久,接收計(jì)算機(jī)可能試圖將寫線路20設(shè)置為低。在這種情況下,一旦發(fā)送計(jì)算機(jī)12釋放其寫線路20,寫線路20就將被接收計(jì)算機(jī)12e拉低。在本示例中,只有程序錯(cuò)誤會(huì)使得一條總線16相反兩端的計(jì)算機(jī)12均試圖將其之間的讀線路18設(shè)置為高。另外,對(duì)于一條總線16相反兩端上的計(jì)算機(jī)12而言,同時(shí)均試圖將其之間的寫線路20設(shè)置為高是錯(cuò)誤的。類似地,如上文所述,當(dāng)前不能預(yù)見的是,可能需要使單個(gè)計(jì)算機(jī)12將它的四條寫線路20中的不止一條設(shè)置為高。不過,現(xiàn)在能預(yù)見的是,存在如下可能,其中需要將讀線路18的不同組合設(shè)置為高,從而使計(jì)算機(jī)12中的一臺(tái)可以處于等待狀態(tài),以等待來自所選擇的計(jì)算機(jī)12中的第一臺(tái)的數(shù)據(jù),從而將其對(duì)應(yīng)的寫線路20設(shè)置為高。在上文所討論的示例中,計(jì)算機(jī)12e被描述為,在相鄰的計(jì)算機(jī)(從計(jì)算機(jī)12a、12b、12c和12d中的一臺(tái)或多臺(tái)選出)已經(jīng)將其寫線路20設(shè)置為高之前,計(jì)算機(jī)12e將其一條或多條讀線路18設(shè)置為高。不過,這個(gè)過程當(dāng)然可以按照相反的順序進(jìn)行。例如,如果計(jì)算機(jī)12e正試圖向計(jì)算機(jī)12a寫入,那么計(jì)算機(jī)12e將把計(jì)算機(jī)12e和計(jì)算機(jī)12a之間的寫線路20設(shè)置為高。如果接下來計(jì)算機(jī)12e和計(jì)算機(jī)12a之間的讀線路18尚未被計(jì)算機(jī)12a設(shè)置為高,則計(jì)算機(jī)12e將只能等待,直到計(jì)算機(jī)12a確定將該讀線路18設(shè)置為高。然后,如上文所述,當(dāng)相應(yīng)一對(duì)讀線路18和寫線路20均為高時(shí),就傳送等待在數(shù)據(jù)線路22上傳送的數(shù)據(jù)。接著,一旦發(fā)送計(jì)算機(jī)12e釋放線路,接收計(jì)算機(jī)12(在本示例中為計(jì)算機(jī)12a)將兩臺(tái)計(jì)算機(jī)(在本示例中為12e和12a)之間的讀線路18和寫線路20均設(shè)置為低。只要諸如計(jì)算機(jī)12e的計(jì)算機(jī)12已經(jīng)將其寫線路20中的一條設(shè)置為高而期望寫入,它就將僅僅等待而幾乎不使用任何能量,直到數(shù)據(jù)如上文所述那樣由合適的鄰近計(jì)算機(jī)12“請(qǐng)求”,除非數(shù)據(jù)將要發(fā)送到的計(jì)算機(jī)12將其寫線路18設(shè)置為高,在這種情況下,數(shù)據(jù)被立即發(fā)送。類似地,只要計(jì)算機(jī)12已經(jīng)將其一條或多條寫線路18設(shè)置為高而期望讀取,則它就將僅僅等待而近乎不使用任何能量,直到連接到所選計(jì)算機(jī)12的寫線路20變?yōu)楦咭栽趦膳_(tái)計(jì)算機(jī)12之間傳送指令字。可能有多種潛在的裝置和/或方法來使得計(jì)算機(jī)12發(fā)揮上文所述的功能。不過,在本示例中,計(jì)算機(jī)12這樣行為僅僅是因?yàn)椋鼈冊(cè)趦?nèi)部通常異步地運(yùn)行(并且以所述異步的方式在它們之間傳送數(shù)據(jù))。也就是說,按順序完成指令。當(dāng)產(chǎn)生讀指令或?qū)懼噶顣r(shí),可以不采取進(jìn)一步行動(dòng),直到完成指令(或者,或許可選地,直到其被“重啟”等中止)。并不存在規(guī)則的時(shí)鐘脈沖,在現(xiàn)有技術(shù)意義中。更確切地說,只有在正在執(zhí)行的指令既不是讀類型指令也不是寫類型指令時(shí)(假定讀或?qū)戭愋椭噶顚⒁笸ㄟ^另一實(shí)體完成),或者在讀或?qū)戭愋筒僮饕呀?jīng)實(shí)際上完成時(shí),脈沖才產(chǎn)生以完成下一指令。圖3是描述圖1和圖2中計(jì)算機(jī)12之一的示例的通用布局的結(jié)構(gòu)圖。如圖3的視圖所見,計(jì)算機(jī)12中的每一臺(tái)均為具有自己的RAM24和ROM26的通用完整計(jì)算機(jī)。如早先所提,計(jì)算機(jī)12有時(shí)候也被稱為單獨(dú)的“核心”,假設(shè)在本示例中它們被組合到單個(gè)芯片上。計(jì)算機(jī)12的其它基礎(chǔ)元件為返回堆棧28、指令區(qū)域30、算術(shù)邏輯單元(“ALU”)32、數(shù)據(jù)堆棧34和用于對(duì)指令進(jìn)行解碼的解碼邏輯部分36。本領(lǐng)域的技術(shù)人員通常很熟悉基于堆棧的計(jì)算機(jī)的運(yùn)行,例如本示例的計(jì)算機(jī)12。計(jì)算機(jī)12為具有數(shù)據(jù)堆棧34和分立的返回堆棧28的雙堆棧計(jì)算機(jī)。在本發(fā)明的該實(shí)施例中,計(jì)算機(jī)12具有四個(gè)通訊端口38,其用于與鄰近計(jì)算機(jī)12進(jìn)行通訊。通訊端口38為三態(tài)驅(qū)動(dòng)器,其具有截止?fàn)顟B(tài)、接收狀態(tài)(用于將信號(hào)驅(qū)動(dòng)進(jìn)入計(jì)算機(jī)12)和發(fā)送狀態(tài)(用于將信號(hào)驅(qū)動(dòng)出計(jì)算機(jī)12)。當(dāng)然,如果特定的計(jì)算機(jī)12未處于陣列10(圖1)的內(nèi)部,例如計(jì)算機(jī)12e的示例,那么至少出于在此所描述的目的,一個(gè)或多個(gè)通訊端口在所述特定的計(jì)算機(jī)中將不會(huì)使用。那些毗鄰基座邊緣的通訊端口38可以具有額外的電路,這些電路或者被設(shè)計(jì)為處于這種計(jì)算機(jī)12中,或者被設(shè)計(jì)為處于計(jì)算機(jī)12外部但是與其關(guān)聯(lián),從而導(dǎo)致這種通訊端口38用作外部I/O端口39(圖1)。這種外部I/O端口39的示例包括但不限于,USB(通用串行總線)端口、RS232串行總線端口、并行通訊端口、模數(shù)和/或數(shù)模轉(zhuǎn)換端口以及很多其它可能的變化。在圖1中,“邊緣”計(jì)算機(jī)12f被描述為帶有相關(guān)的接口電路80,該接口電路80用于通過外部I/O端口39與外部器件82通訊。指令區(qū)域30包括多個(gè)寄存器40,在該示例中,該寄存器包括A寄存器40a、B寄存器40b和P寄存器40c。在該示例中,A寄存器40a是滿18比特寄存器,而B寄存器40b和P寄存器40c為9比特寄存器。為了確保計(jì)算結(jié)果的精確性,處理器檢查每個(gè)操作,以確定該操作是否出現(xiàn)異常狀態(tài)。例如,算術(shù)操作受到上溢異常或下溢異常的影響。當(dāng)計(jì)算出的數(shù)目大于在為該數(shù)目指定的格式中所能表示的最大數(shù)目時(shí),出現(xiàn)上溢異常。當(dāng)計(jì)算出的數(shù)目小于在為該數(shù)目指定的格式中所能表示的最小數(shù)目時(shí),出現(xiàn)下溢異常(IEEE754-1985StandardforBinaryArithmetic)。本發(fā)明公開了一種堆棧計(jì)算機(jī)處理器,其中,所述堆棧包括互相連接的寄存器的陣列,其以循環(huán)模式(circularpattern)中發(fā)揮功能。數(shù)據(jù)堆棧和返回堆棧并非是在堆棧指針?biāo)L問的存儲(chǔ)器中的陣列,如許多現(xiàn)有技術(shù)的計(jì)算機(jī)的情況一樣。圖4是指令字48的示意性表現(xiàn)。(應(yīng)該注意的是,指令字48實(shí)際上可以包含指令、數(shù)據(jù)或它們的某種組合)。指令字48由18個(gè)比特50組成。對(duì)于二進(jìn)制計(jì)算機(jī),比特50中的每一個(gè)將為“1”或“0”。如在此之前所討論的,18比特寬的指令字48可包含四個(gè)時(shí)段54中的多達(dá)四個(gè)指令52,時(shí)段54被稱為時(shí)段零54a、時(shí)段一54b、時(shí)段二54c和時(shí)段三54d。在本發(fā)明的本實(shí)施例中,18比特指令字48總是作為整體來讀取。因此,因?yàn)榭偸谴嬖谠谥噶钭?8中具有多達(dá)四個(gè)指令的可能,因而在計(jì)算機(jī)12中的指令集中包含no-op(非運(yùn)行)指令,這些指令是為可能沒有必要甚至不希望使用所有可用時(shí)段54的情況所提供的。應(yīng)該注意的是,根據(jù)本發(fā)明的一個(gè)特定實(shí)施例,在交替(alternate)時(shí)段(具體而言,時(shí)段一54b和時(shí)段三54c)中比特50的極性(高有效和低有效的對(duì)比)被反轉(zhuǎn)。不過,這并不是在此描述的本發(fā)明的方面,因此,為了更好地闡釋本發(fā)明,在下文的描述中避免這種潛在的復(fù)雜性。圖5是圖3的時(shí)段定序器(sequencer)42的示意性表現(xiàn)。如圖5的視圖可見,時(shí)段定序器42具有以環(huán)狀排列的多個(gè)(本示例中為十四個(gè))反相器56和一個(gè)NAND門58,這樣,當(dāng)信號(hào)行進(jìn)通過十四個(gè)轉(zhuǎn)換器56和NAND門58時(shí),該信號(hào)被反相奇數(shù)次。當(dāng)OR門60的兩個(gè)輸入中的任一個(gè)變?yōu)楦邥r(shí),在時(shí)段定序器42中產(chǎn)生一信號(hào)。第一OR門輸入62源自正在執(zhí)行的指令52的比特i466(圖4)。如果比特i4為高,則特定指令52為ALU指令,并且i4比特66為“1”。當(dāng)i4比特為“1”時(shí),則第一OR門輸入62為高,并且時(shí)段定序器42被觸發(fā)以產(chǎn)生將要導(dǎo)致執(zhí)行下一指令52的脈沖。當(dāng)或者通過使第一OR門輸入62變高,或者通過使第二OR門輸入64變高(下文中將進(jìn)行討論),而使時(shí)段定序器42被觸發(fā)時(shí),信號(hào)就將圍繞時(shí)段定序器42行進(jìn)兩次,每次在時(shí)段定序器輸出68處產(chǎn)生輸出。當(dāng)信號(hào)第一次經(jīng)過時(shí)段定序器輸出68時(shí),它將為低,而在第二次時(shí),在時(shí)段定序器輸出68處的輸出將為高。來自時(shí)段定序器輸出68的相對(duì)寬的輸出被提供到脈沖發(fā)生器70(以方框視圖形式示出),其產(chǎn)生窄的定時(shí)脈沖作為輸出。本領(lǐng)域的技術(shù)人員將認(rèn)知到,為了精確地產(chǎn)生計(jì)算機(jī)12的操作,窄定時(shí)脈沖是需要的。當(dāng)正在執(zhí)行的特定指令52為讀或?qū)懼噶?,或者是任意其他這樣的指令,即其中正在執(zhí)行的指令52立即觸發(fā)執(zhí)行順次的下一指令52是不希望的,那么i4比特66為“0”(低),并且第一OR門輸入62因此也為低。本領(lǐng)域的技術(shù)人員將認(rèn)知到,在諸如計(jì)算機(jī)12的器件中的事件的定時(shí)通常相當(dāng)嚴(yán)格,而不能有異常。在對(duì)時(shí)段定序器42進(jìn)行考察之后,本領(lǐng)域的技術(shù)人員將認(rèn)知到,來自O(shè)R門60的輸出必須保持為高,直到信號(hào)已經(jīng)循環(huán)經(jīng)過NAND門58從而開始循環(huán)的第二“圈(lap)”之后。之后,為了防止電路的有害的持續(xù)振蕩,在該第二“圈”期間來自O(shè)R門60的輸出將變?yōu)榈?。如同可以根?jù)上文所理解的那樣,當(dāng)i4比特66為“0”時(shí),時(shí)段定序器42就將不被觸發(fā)——假定下文所要討論的第二OR門輸入66不為高。如上文所討論的,每個(gè)指令52的i4比特66根據(jù)該指令是否為讀或?qū)戭愋偷闹噶疃辉O(shè)置。在指令52中的其余比特50為該指令提供特定操作碼(opcode)的剩余部分。在讀或?qū)戭愋椭噶畹那闆r中,一個(gè)或多個(gè)比特可以用來指示,在該特定計(jì)算機(jī)12中數(shù)據(jù)將要讀取之處或?qū)⒁獙懭胫?。在本發(fā)明的本示例中,將要寫入的數(shù)據(jù)總是來自T寄存器44(數(shù)據(jù)堆棧34的頂部),不過數(shù)據(jù)可以選擇性地讀入T寄存器44或指令區(qū)域30,該數(shù)據(jù)可從此處執(zhí)行。這是因?yàn)椋诒景l(fā)明的特定實(shí)施例中,數(shù)據(jù)或者指令可以以此處描述的方式被通訊,并且指令因此可以直接從數(shù)據(jù)總線16執(zhí)行,雖然這并非本發(fā)明的必要方面。進(jìn)一步,一個(gè)或多個(gè)比特50將用于指示,端口38的哪一個(gè)將被設(shè)置成讀取或?qū)懭?,如果有這樣的端口的話。較后的操作可選地通過使用一個(gè)或多個(gè)比特來指定一寄存器40,例如A寄存器40a、B寄存器等,來實(shí)現(xiàn)。在該示例中,指定的寄存器40將被預(yù)載以數(shù)據(jù),該數(shù)據(jù)具有與每個(gè)端口38對(duì)應(yīng)的比特(以及,任何其它潛在實(shí)體,通過該實(shí)體,計(jì)算機(jī)12可被嘗試通訊,所述實(shí)體例如存儲(chǔ)器、外部通訊端口之類)。例如,在特定寄存器40中的四個(gè)比特中的每一個(gè)可對(duì)應(yīng)上端口38a、右端口38b、左端口38c或下端口38d中的每一個(gè)。在這種情況下,如果在這些比特的位置中的任意一處為“1”,則通訊將被設(shè)置為通過對(duì)應(yīng)的端口38進(jìn)行。如之前在此所論述的,在本發(fā)明的當(dāng)前實(shí)施例中,可以預(yù)見的是,一個(gè)讀取操作碼可以在單個(gè)指令中設(shè)置不止一個(gè)端口38用于通訊,而同時(shí),雖然可能發(fā)生但是無法預(yù)見的是,讀入操作碼在單個(gè)指令中設(shè)置不止一個(gè)端口38用于通訊。緊接下來的示例將假定如下通訊,其中計(jì)算機(jī)12e正試圖寫到計(jì)算機(jī)12c,雖然該示例可用于任何相鄰計(jì)算機(jī)12之間的通訊。當(dāng)寫指令在寫入計(jì)算機(jī)12e中被執(zhí)行時(shí),所選擇的寫線路20(在本示例中為計(jì)算機(jī)12c和12c之間的寫線路20)被設(shè)置為高,如果對(duì)應(yīng)的讀線路18已經(jīng)為高,則數(shù)據(jù)立即從所選擇的位置通過所選擇的通訊端口38發(fā)送。作為替換地,如果對(duì)應(yīng)的讀線路18還未為高,則計(jì)算機(jī)12e將僅僅停止運(yùn)行,直到對(duì)應(yīng)的讀線路18確定變高。在此之前已經(jīng)討論了用于在存在讀或?qū)戭愋椭噶钪畷r(shí),停止計(jì)算機(jī)12a(或者更準(zhǔn)確地說,不使計(jì)算機(jī)12a進(jìn)一步運(yùn)行)的機(jī)制。簡(jiǎn)而言之,指令52的操作碼將在比特位置i466具有“0”,因此,OR門60的第一OR門輸入62為低,進(jìn)而,時(shí)段定序器42不被觸發(fā)以產(chǎn)生使能脈沖。至于在讀或?qū)戭愋椭噶钔瓿芍畷r(shí)如何繼續(xù)計(jì)算機(jī)12e的運(yùn)行,用于此的機(jī)制如下當(dāng)在計(jì)算機(jī)12e和12c之間的讀線路18和對(duì)應(yīng)的寫線路20均為高時(shí),線路18和20就將被將其保持為高的相應(yīng)計(jì)算機(jī)12中的每一個(gè)釋放。(在該示例中,發(fā)送計(jì)算機(jī)12e將使寫線路18保持為高,而接收計(jì)算機(jī)12c將使讀線路20保持為高)。接下來,接收計(jì)算機(jī)12c將把線路18和20拉低。在實(shí)際運(yùn)行中,在發(fā)送計(jì)算機(jī)12e已經(jīng)釋放寫線路18之前,接收計(jì)算機(jī)12c可能試圖將線路18和20拉低。不過,因?yàn)榫€路18和20被拉高并且只是被不牢固地保持(鎖存)為低,因此任何將線路18或20拉低的企圖在實(shí)際中都將不會(huì)成功,直到線路18或20被將其固定為高的計(jì)算機(jī)12所釋放。當(dāng)數(shù)據(jù)總線16中的線路18和20均被拉低時(shí),這是一種“確認(rèn)”狀態(tài)。一旦進(jìn)入該確認(rèn)狀態(tài),計(jì)算機(jī)12e和12c中的每一臺(tái)將其自身的內(nèi)部確認(rèn)線路72設(shè)置為高。如圖5的視圖可見,確認(rèn)線路72提供了第二OR門輸入64。因?yàn)榈絆R門60的輸入62或64中任意一個(gè)的輸入將導(dǎo)致OR門60的輸出變高,因此就將以在此之前所述的方式發(fā)起進(jìn)行時(shí)段定序器42的操作,從而將執(zhí)行指令字48的下一時(shí)段54中的指令52。確認(rèn)線路72保持在高位,直到下一指令52被解碼,以便防止偽地址到達(dá)地址總線。無論如何,當(dāng)正在執(zhí)行的指令52處于指令字48的時(shí)段三位置中時(shí),計(jì)算機(jī)12將讀取下一正在等待的18比特指令字48,當(dāng)然,除非比特i466為“0”。在實(shí)際的操作中,該創(chuàng)造性的機(jī)制包括一種方法和裝置,其用于“預(yù)讀取”指令,從而在指令字48中的所有指令52執(zhí)行終止之前可以開始該讀取操作。不過,這也不是當(dāng)前針對(duì)異步數(shù)據(jù)通訊的創(chuàng)造性方法和裝置的必要方面。在此已經(jīng)詳細(xì)描述了上述示例,其中計(jì)算機(jī)12e正在向計(jì)算機(jī)12c進(jìn)行寫入。如同根據(jù)以上論述所可以理解的,不論計(jì)算機(jī)12e首先試圖對(duì)計(jì)算機(jī)12c進(jìn)行寫入,還是計(jì)算機(jī)12c首先試圖從計(jì)算機(jī)12e讀取,操作基本相同。直到計(jì)算機(jī)12e和12c均準(zhǔn)備就緒,才完成操作,并且無論計(jì)算機(jī)12e或12c中的哪一臺(tái)首先準(zhǔn)備就緒,首先準(zhǔn)備就緒的計(jì)算機(jī)12僅僅“進(jìn)入睡眠狀態(tài)”,直到另一臺(tái)計(jì)算機(jī)12e或12c完成傳送。觀察上述過程的另一種方式為,實(shí)際上,在這兩臺(tái)計(jì)算機(jī)分別執(zhí)行寫和讀指令時(shí),寫入計(jì)算機(jī)12e和接收計(jì)算機(jī)12c均進(jìn)入睡眠狀態(tài),但是當(dāng)讀線路18和寫線路20均為高時(shí),后一臺(tái)進(jìn)入事務(wù)的計(jì)算機(jī)幾乎即刻重新蘇醒,然而,首先發(fā)起事務(wù)的計(jì)算機(jī)12可以幾乎無限期地保持睡眠狀態(tài),直到第二臺(tái)計(jì)算機(jī)12準(zhǔn)備好完成上述過程。一種用于在器件之間進(jìn)行有效的異步通訊的方法是某種確認(rèn)信號(hào)或確認(rèn)狀態(tài)。在此所述的該方法提供了必要的確認(rèn)狀態(tài),其允許器件之間進(jìn)行異步通訊,或至少使之可行。進(jìn)一步,確認(rèn)狀態(tài)也使一個(gè)或多個(gè)器件可以“進(jìn)入睡眠狀態(tài)”,直到出現(xiàn)確認(rèn)狀態(tài)。當(dāng)然,可以通過正在計(jì)算機(jī)12之間發(fā)送的分立信號(hào)而在計(jì)算機(jī)12之間對(duì)確認(rèn)狀態(tài)進(jìn)行通訊(或者沿著互連數(shù)據(jù)總線16,或者沿著分立的信號(hào)線路),并且這種確認(rèn)信號(hào)將處于本發(fā)明的這方面的范圍之內(nèi)。不過,根據(jù)在此描述的本發(fā)明的實(shí)施例,可以理解的是,這里還存在更多經(jīng)濟(jì)因素,因?yàn)樵摯_認(rèn)方法不需要任何額外的信號(hào)、時(shí)鐘周期、定時(shí)脈沖或任何這類超出所描述范圍的資源來在實(shí)際中實(shí)現(xiàn)通訊。可以對(duì)本發(fā)明進(jìn)行多種修改,而不改變本發(fā)明的價(jià)值或范圍。例如,雖然本發(fā)明已經(jīng)在此描述為用于讀指令和寫指令的方面,不過在實(shí)際操作中,可能存在不止一個(gè)讀類型指令和/或不止一個(gè)寫類型指令。僅僅作為一個(gè)示例,在本發(fā)明的一個(gè)實(shí)施例中,存在使寄存器遞增的寫指令以及其它不執(zhí)行此功能的寫指令。類似地,根據(jù)哪一個(gè)寄存器40被用來選擇通訊端口38等等,寫指令可以變化,如在此之前所描述的。還可以存在多個(gè)不同的讀指令,所依據(jù)的只是,計(jì)算機(jī)12的設(shè)計(jì)者相信何種變化是可替換讀行為的有用選擇。類似地,雖然本發(fā)明在此已經(jīng)被描述為涉及單個(gè)基座14上的陣列10中的計(jì)算機(jī)12之間的通訊,不過相同的原理和方法可以用作,或者被改造為用作,完成其它器件間的通訊,例如計(jì)算機(jī)12和其專用存儲(chǔ)器之間的通訊,或者在陣列10中的計(jì)算機(jī)12和外部器件之間(通過輸入/輸出端口之類)的通訊。實(shí)際上,可以預(yù)見的是,在一些應(yīng)用中可能要求由陣列組成的陣列——將這里描述的器件間的通訊方法潛在地應(yīng)用于陣列中的陣列之間的通訊。當(dāng)諸如圖1中的計(jì)算機(jī)12g的計(jì)算機(jī)正在執(zhí)行代碼以完成其被指定的首要任務(wù)時(shí),程序員可以決定,需要進(jìn)行諸如12f和12g的兩臺(tái)計(jì)算機(jī)之間的臨時(shí)互動(dòng)。程序員可以規(guī)定,計(jì)算機(jī)12g臨時(shí)暫停運(yùn)行以觀察其一臺(tái)或多臺(tái)鄰近計(jì)算機(jī)是否已經(jīng)試圖進(jìn)行通訊,如“尋找輸入”操作166所指示的。如果如“輸入?”決策操作168所指示的,通訊正在等待例如由計(jì)算機(jī)12f向計(jì)算機(jī)12g寫入,則計(jì)算機(jī)12g將在“從其它計(jì)算機(jī)接收”操作170中完成通訊。若不如此,則計(jì)算機(jī)12g將返回執(zhí)行其被指定的功能,如圖9所示。在“從其它計(jì)算機(jī)接收”操作170之后,計(jì)算機(jī)12g將按照在“按輸入行動(dòng)”操作172中所接收的輸入行動(dòng)。程序員可以規(guī)定,計(jì)算機(jī)12g將期望指令作為輸入,在這種情況下,計(jì)算機(jī)12g將執(zhí)行指令。作為替換地,計(jì)算機(jī)12g可以被編程以為期望行動(dòng)所依據(jù)的數(shù)據(jù)。在“按輸入行動(dòng)”操作172之后,接著,計(jì)算機(jī)12g返回其首要功能;也就是說,它返回到“執(zhí)行首要功能”操作162。不過,當(dāng)然還存在設(shè)置更為復(fù)雜的示例的可能。例如,可以這樣編程,使從計(jì)算機(jī)12f接收的特定輸入將導(dǎo)致其中止其先前被指定的首要功能,并開始執(zhí)行新功能,或者它可以僅僅暫時(shí)停止,并等待進(jìn)一步的輸入。本領(lǐng)域的技術(shù)人員將認(rèn)知,此處行為的各種可能將僅受限于程序員的想象力。應(yīng)該注意的是,根據(jù)在此描述的本發(fā)明的實(shí)施例,給定的計(jì)算機(jī)12不需要在其正在執(zhí)行任務(wù)時(shí)中斷,因?yàn)榱硪慌_(tái)計(jì)算機(jī)12被指定執(zhí)行監(jiān)控和處理可能另外需要中斷的輸入的任務(wù)。不過,還令人感興趣地注意到,忙于處理另一任務(wù)的計(jì)算機(jī)12也不能被干擾,除非并且直到該計(jì)算機(jī)12的編程規(guī)定其注意用于輸入的端口38。因此,有時(shí)候需要使計(jì)算機(jī)12暫定以查找其它輸入。本發(fā)明示意性地對(duì)PAUSE指令進(jìn)行描述。此處所描述的內(nèi)容為多個(gè)處理器之間的“協(xié)作多任務(wù)”。在一個(gè)或多個(gè)節(jié)點(diǎn)上存在一套任務(wù)。PAUSE將順序檢驗(yàn)用于進(jìn)來的可執(zhí)行代碼的所有節(jié)點(diǎn)或端口。在蘇醒或熱啟動(dòng)之前執(zhí)行四個(gè)no-op(....)。PAUSE指令通過一返回(;)指令而終止,然后,查詢下一線程(thread)。檢驗(yàn)過的最后一端口使用兩套四個(gè)no-op。在重啟后進(jìn)行冷啟動(dòng)。帶有輸入/輸出引腳39的邊緣處理器12a或邊角處理器12f也可以被PAUSE所查詢,從而例如由外部器件82執(zhí)行任務(wù)。PAUSE也可以位于ROM中作為啟動(dòng)條件的一部分。引發(fā)器例程將跳轉(zhuǎn)為暫停,并進(jìn)入鄰近處理器的四點(diǎn)讀取(four-pointread)。雖然在多處理器之間的PAUSE功能已經(jīng)參照Forth而公開,不過多處理器之間的中斷功能的所有概念也可以應(yīng)用于其它編程語言。因?yàn)樗膫€(gè)指令52可以包含于指令字48中,并且由于根據(jù)本發(fā)明,整個(gè)指令字48可以同時(shí)在計(jì)算機(jī)12之間進(jìn)行通訊,這提供了理想的機(jī)會(huì)用于在一個(gè)操作中傳送非常小的程序。例如大多數(shù)小的“For/Next”循環(huán)可以在單個(gè)指令字48中實(shí)現(xiàn)。圖6是微循環(huán)100的示意性表現(xiàn)。不同于其它現(xiàn)有技術(shù)的循環(huán),微循環(huán)100具有FOR指令102和NEXT指令104。因?yàn)橹噶钭?8(圖4)包含多達(dá)四個(gè)的指令52,因此指令字48可在單個(gè)指令字48中包括三個(gè)操作指令106。操作指令106可以是程序員想要包含于微循環(huán)100中的可用指令中的幾乎任意一個(gè)??梢詮囊慌_(tái)計(jì)算機(jī)12傳送到另一臺(tái)計(jì)算機(jī)12的微循環(huán)100的典型示例可以是對(duì)第二臺(tái)計(jì)算機(jī)12的RAM24進(jìn)行讀取或?qū)懭氲囊惶字噶睿瑥亩沟谝慌_(tái)計(jì)算機(jī)12可以“借用”可用的RAM24容量。FOR指令102將數(shù)值壓到返回堆棧28上,返回堆棧28代表所希望的迭代數(shù)目。也就是說,在數(shù)據(jù)堆棧34的頂部處的T寄存器44上的數(shù)值被壓進(jìn)返回堆棧28的R寄存器29。FOR指令102雖然經(jīng)常位于指令字48的時(shí)段三54d中,不過事實(shí)上可以位于任何時(shí)段54中。在FOR指令102不位于時(shí)段三54d中的情況下,在該指令字48中的其余指令52將在繼續(xù)到微循環(huán)100之前被執(zhí)行,所述微循環(huán)100將通常為下一個(gè)被加載指令字48。根據(jù)本發(fā)明的當(dāng)前描述的實(shí)施例,在圖6中描述的NEXT指令104為特定類型的NEXT指令104。這是因?yàn)?,它位于時(shí)段三54d(圖4)中。根據(jù)本發(fā)明的該實(shí)施例,假定在“普通”NEXT指令(未示出)之后的特定指令字40中的所有數(shù)據(jù)為一地址(for/next循環(huán)開始的地址)。針對(duì)NEXT指令104的操作碼是相同的,不論其處于四個(gè)時(shí)段54中的哪一個(gè)中(明顯的例外在于,如果處于時(shí)段三54d中,則假設(shè)頭兩比特,而不是顯式地(explicitly)寫入,如在此之前所討論的)。不過,因?yàn)楫?dāng)NEXT指令104位于時(shí)段三54d中時(shí)可能不存在跟隨NEXT指令104的地址數(shù)據(jù),因此也可以假定,在時(shí)段三54d中的NEXT指令104為MICRO-NEXT指令104a。MICRO-NEXT指令104a使用第一指令52的地址作為返回地址,該第一指令52位于同一指令字48的時(shí)段零54a中。MICRO-NEXT指令104a也獲取來自R寄存器29的數(shù)值(該數(shù)值最初被FOR指令102壓至該處),將其減去1,然后將其返回到R寄存器29。當(dāng)R寄存器29上的數(shù)值達(dá)到預(yù)定值(例如,0)時(shí),MICRO-NEXT指令就將加載下一指令字48,并如在此之前所述繼續(xù)運(yùn)行。不過,當(dāng)MICRO-NEXT指令104a從R寄存器20讀取的數(shù)值大于預(yù)定值時(shí),將再繼續(xù)在其本身的指令字48的時(shí)段零54a處的操作,并執(zhí)行位于包括再其本身的指令字48的時(shí)段零至?xí)r段三中的三個(gè)指令52。也就是說,在本發(fā)明的實(shí)施例中,MICRO-NEXT指令104a將總是執(zhí)行三個(gè)操作指令106。因?yàn)?,在某些情況下,可能需要是使用所有三個(gè)潛在可用的指令52,因此“no-op”指令可用于根據(jù)需要填充一個(gè)或兩個(gè)時(shí)段54。應(yīng)該注意的是,微循環(huán)100可整體用在單個(gè)計(jì)算機(jī)12中。事實(shí)上,全套的可用機(jī)器語言指令都可用作操作指令106,并且微循環(huán)的應(yīng)用和使用僅受限于程序員的想象力。不過,如果在單個(gè)指令字48中執(zhí)行整個(gè)微循環(huán)100的能力與如下能力,即允許計(jì)算機(jī)12將指令字48發(fā)送到鄰近計(jì)算機(jī)12以執(zhí)行其中基本上直接來自數(shù)據(jù)總線16的指令52的能力,相結(jié)合,那么這就提供了一種強(qiáng)有力的工具,用于允許計(jì)算機(jī)12使用其鄰近計(jì)算機(jī)的資源。整體包含于單個(gè)數(shù)據(jù)字48中的小微循環(huán)100,可以在計(jì)算機(jī)12之間通訊,如在此所述的,并且可以直接從接收計(jì)算機(jī)12的通訊端口38執(zhí)行,就像包含于指令字48中的其它任意一套指令那樣,如在此所描述的。雖然這種“微循環(huán)”100有許多用處,不過其一個(gè)特定的用處在于當(dāng)一臺(tái)計(jì)算機(jī)12打算將一些數(shù)據(jù)存儲(chǔ)到鄰近計(jì)算機(jī)12的存儲(chǔ)器上時(shí)。例如,首先發(fā)送一條指令到該鄰近計(jì)算機(jī),以要求該鄰近計(jì)算機(jī)將進(jìn)入的數(shù)據(jù)字存儲(chǔ)到特定的存儲(chǔ)器地址,然后遞增該地址,然后重復(fù)給定次數(shù)的迭代(該次數(shù)對(duì)應(yīng)待傳送的數(shù)據(jù)字的數(shù)目)。為了讀回?cái)?shù)據(jù),第一臺(tái)計(jì)算機(jī)就將指令第二臺(tái)計(jì)算機(jī)(在此即用來進(jìn)行存儲(chǔ)的計(jì)算機(jī))使用相似的微循環(huán)將所存儲(chǔ)的數(shù)據(jù)寫回到第一臺(tái)計(jì)算機(jī)。通過結(jié)合在此描述的直接執(zhí)行方面而使用微循環(huán)100結(jié)構(gòu),當(dāng)數(shù)據(jù)存儲(chǔ)需要超過構(gòu)建于每臺(tái)單獨(dú)的計(jì)算機(jī)12中的相對(duì)小的容量時(shí),計(jì)算機(jī)12可以使用另外的休眠的鄰近計(jì)算機(jī)12以存儲(chǔ)額外的數(shù)據(jù)。雖然該示例被描述為針對(duì)數(shù)據(jù)存儲(chǔ)的情況,不過相同的技術(shù)可以同樣用來允許計(jì)算機(jī)12讓其鄰近的計(jì)算機(jī)共享其計(jì)算資源-采用的方法是,通過構(gòu)建微循環(huán)100使其它計(jì)算機(jī)12執(zhí)行一些操作、存儲(chǔ)結(jié)果并重復(fù)給定次數(shù)??烧J(rèn)知的是,能夠使用這種創(chuàng)造性的微循環(huán)100結(jié)構(gòu)的方式的數(shù)量幾乎是無限多的。如在此之前所提到的,在本發(fā)明的目前所描述的實(shí)施例中,可以以在此描述的方式對(duì)數(shù)據(jù)或指令進(jìn)行通訊,并且指令因此而能夠幾乎直接從數(shù)據(jù)總線16執(zhí)行。也就是說,沒有必要將指令存儲(chǔ)到RAM24并然后在執(zhí)行前對(duì)它們?cè)僬{(diào)用(recall)。取而代之的是,根據(jù)本發(fā)明的這方面,對(duì)在通訊端口38上接收的指令字48的處理方式,與從RAM24或ROM26再調(diào)用該指令字48的方式,兩者不會(huì)有顯著的不同。雖然這種不同的缺少已經(jīng)在目前涉及所描述的計(jì)算機(jī)12的操作的探討中得到展示,不過,下文中對(duì)如何讀取和使用指令字48的更為明確的探討,將有助于理解本發(fā)明。其中一種可用的機(jī)器語言指令為FETCH指令。FETCH指令使用A寄存器40a上的地址,以確定從何處讀取18比特字。當(dāng)然,程序?qū)⒈仨氁呀?jīng)準(zhǔn)備在A寄存器40a上放置正確的地址。如在此之前所討論的,A寄存器40a為18比特寄存器,這樣,就有就有足夠范圍的地址數(shù)據(jù)可用,從而使得任何一個(gè)可以對(duì)其進(jìn)行讀取的潛在資源都可以被區(qū)分。也就是說,存在指定到ROM的地址范圍,該地址范圍不同于指定到RAM的地址范圍,并且存在特定的地址用于每個(gè)端口38,和用于外部I/O端口39。FETCH指令總是將其讀取的18個(gè)比特放置于T寄存器44上。相反地,如在此之前所討論的,可執(zhí)行指令(不同于數(shù)據(jù))被暫時(shí)存儲(chǔ)在指令寄存器30a中。對(duì)于將18比特指令字48“讀取”到指令寄存器30a中,不存在特定的要求。相反地,當(dāng)在指令寄存器30a中沒有可執(zhí)行指令留下時(shí),計(jì)算機(jī)就將自動(dòng)讀取“下一”指令字48。該“下一”指令字所處的位置由“程序計(jì)數(shù)器”(P寄存器40c)確定。P寄存器40c經(jīng)常自動(dòng)遞增,如同將從RAM24或ROM26讀取一系列指令字48的情況。不過,這種一般規(guī)則存在許多例外情況。例如,JUMP或CALL指令將導(dǎo)致P寄存器40c在JUMP或CALL指令之后被記載以由目前加載的指令字48的剩余部分中的數(shù)據(jù)所指定的地址,而不是進(jìn)行遞增。當(dāng)P寄存器40c接著被加載以與一個(gè)或多個(gè)端口38對(duì)應(yīng)的地址時(shí),下一指令字48接著將從端口38加載到指令寄存器30a。當(dāng)指令字48已經(jīng)從端口38獲取到指令寄存器30a中時(shí),P寄存器40c也不會(huì)遞增。它將繼續(xù)保持該相同的端口地址,直到明確的JUMP或CALL指令被執(zhí)行以改變P寄存器40c。也就是說,一旦計(jì)算機(jī)12被告知從端口38尋找其下一指令,它將持續(xù)從同一個(gè)端口38(或多個(gè)端口38)尋找指令,直到它被告知在其它位置尋找其下一指令字48,例如回到其存儲(chǔ)器(RAM24或ROM26)。如上文所提,計(jì)算機(jī)12知道,當(dāng)目前的指令字48中不再存在可執(zhí)行指令時(shí),所讀取的下十八個(gè)比特將被放置在指令寄存器30a中。默認(rèn)地,在JUMP或CALL指令之后(或者在此處不特別討論的其他特定指令之后),在目前的指令字48中不再留有可執(zhí)行指令,因?yàn)橥ㄟ^限定,18比特指令字中緊接著JUMP或CALL指令的剩余部分專用于JUMP或CALL指令所指定的地址。對(duì)于此的另一種陳述方式是,上文所述的處理在多方面是獨(dú)特的,包括但不限于如下事實(shí),即,JUMP或CALL指令可以可選地輸入到端口38,而不是僅僅是輸入到存儲(chǔ)器地址之類。應(yīng)該記住的是,如在此之前所討論的,計(jì)算機(jī)12可以從一個(gè)端口38或者從任意一組端口38尋找其下一指令。因此,提供對(duì)應(yīng)端口38的各種不同組合的地址。例如當(dāng)計(jì)算機(jī)被告知從一組端口38讀取指令時(shí),那么它將從所選定的端口38中的任意一個(gè)接受第一可用指令字48。如果沒有鄰近計(jì)算機(jī)12已經(jīng)試圖寫入這些端口38中的任意一個(gè),那么正在討論的計(jì)算機(jī)12將“進(jìn)入睡眠狀態(tài)”,如上文所詳細(xì)描述的,直到鄰近的計(jì)算機(jī)確實(shí)寫入所選擇的端口38。圖7是描述上文所述的直接執(zhí)行方法120的流程圖。當(dāng)如在此之前所述的,在指令寄存器30a中不再留有可執(zhí)行指令時(shí),將開始“正常”的操作流程。在此時(shí)刻,計(jì)算機(jī)12將“讀取”另一個(gè)指令字(注意,在此使用的術(shù)語“讀取”為一般含義,因?yàn)椴⒉皇褂脤?shí)際的FETCH指令),如“讀取字”操作122所指示的。該操作將根據(jù)P寄存器40c中的地址而實(shí)現(xiàn),如圖7的流程圖中的“地址”決策操作124所指示的。如果P寄存器40c中的地址為RAM24或ROM26地址,那么下一指令字48將從在“從存儲(chǔ)器讀取”操作126中所指定的存儲(chǔ)器位置獲得。另一方面,如果在P寄存器40c中的地址為一個(gè)或多個(gè)端口38的地址(非存儲(chǔ)器地址),那么下一指令字48將從在“從端口讀取”操作128中所指定的端口位置獲得。無論何種情況,在“獲取指令字”操作130中,所獲取的指令字48被置于指令寄存器30c中。在“執(zhí)行指令字”操作132中,在指令字48的時(shí)段54中的指令被順序完成,如在此之前所討論的。在“跳轉(zhuǎn)”決策操作134中,確定了指令字48中的一個(gè)操作是否為JUMP指令,或者是否為其他將使操作遠(yuǎn)離此前所描述的持續(xù)的“正常”操作的指令。如果確實(shí)是這樣,那么在“加載P寄存器”操作136中,指令字48中在JUMP(或其它這類)指令之后所提供的地址被提供到P寄存器40c,并且在“讀取字”操作122中再次開始上述序列,如圖7的視圖所指示。如果不是這樣,那么下一行為取決于上一次指令讀取是源自端口38還是源自存儲(chǔ)器地址,如“端口地址”決策操作138所指示的。如果上一次指令讀取源自端口38,那么P寄存器30a沒有任何改變,并且從“讀取字”操作122開始重復(fù)次序。另一方面,如果上一指令讀取源自存儲(chǔ)器地址(RAM24或ROM26),那么在“讀取字”操作122完成之前,在P寄存器30a中的地址遞增,如圖7中的“遞增P寄存器”操作140所指示的。上文描述并非意在表示實(shí)際的操作步驟。相反地,它是根據(jù)本發(fā)明的所描述實(shí)施例的執(zhí)行而產(chǎn)生的各種決策和操作的圖示。實(shí)際上,該流程圖不應(yīng)該被理解成,所描述和所示出的每個(gè)操作需要分立的獨(dú)立的順序步驟。事實(shí)上,在圖7的流程圖中所描述的許多操作,在實(shí)際操作中通常同時(shí)完成。圖8是描述用于警醒計(jì)算機(jī)的經(jīng)過改進(jìn)的創(chuàng)造性方法的示例的流程圖。如在此之前所討論的,所描述的實(shí)施例的計(jì)算機(jī)12將在等待輸入之時(shí)“進(jìn)入睡眠狀態(tài)”。這種輸入可以來自鄰近的計(jì)算機(jī)12,如針對(duì)圖1-5所描述的實(shí)施例中的情況。作為替換地,還是如在此之前所討論的,具有毗鄰基座14邊緣的通訊端口38的計(jì)算機(jī)12可具有額外的電路,該電路或者被設(shè)計(jì)在該計(jì)算機(jī)12中,或者被設(shè)計(jì)處于計(jì)算機(jī)12的外部但是與計(jì)算機(jī)12相關(guān)聯(lián),從而使這種通訊端口38用作外部I/O端口39。無論何種情況,這種創(chuàng)造性的組合可提供額外的優(yōu)勢(shì),即“睡眠”計(jì)算機(jī)12可穩(wěn)定并準(zhǔn)備蘇醒,并在接收到輸入之時(shí)跳到一些預(yù)先指定的行為。因此,本發(fā)明也為使用中斷來處理輸入的方案提供了替換方案,無論這種輸入來自外部輸入器件,還是來自陣列10中的另一臺(tái)計(jì)算機(jī)12。在此描述的創(chuàng)造性的組合并不會(huì)使計(jì)算機(jī)12必須停止(或暫停)其正在運(yùn)行的任務(wù)以便處理中斷,而將允許計(jì)算機(jī)12處于“睡眠但是警覺”狀態(tài),如上文所述。因此,可以指定一臺(tái)或多臺(tái)計(jì)算機(jī)12,以接收和執(zhí)行特定輸入。雖然存在多種方法來使用這種特征,不過圖8的視圖中描述的示例將用于僅僅描述一種這類“計(jì)算機(jī)警覺方法”,該示例在此被附圖標(biāo)記150列出。如圖8的試圖所見,在“進(jìn)入警覺狀態(tài)”操作152中,計(jì)算機(jī)12被引發(fā)“進(jìn)入睡眠狀態(tài)”,從而使其等待來自鄰近計(jì)算機(jī)12的輸入,或者等待來自不止一臺(tái)(總計(jì)多達(dá)四臺(tái))鄰近計(jì)算機(jī)的輸入,或者在“邊緣”計(jì)算機(jī)12的情況下等待外部輸入,或者等待外部輸入和/或來自鄰近計(jì)算機(jī)12的輸入的一些組合。如在此之前所描述的,計(jì)算機(jī)12可以“進(jìn)入睡眠狀態(tài)”,以等待讀取操作或?qū)懭氩僮鞯耐瓿?。如該示例所述的,在正在使用?jì)算機(jī)12以等待一些可能的“輸入”的情況下,顯而易見可以假定,正在等待的計(jì)算機(jī)12已經(jīng)將其讀線路18設(shè)置為高,以等待來自鄰近計(jì)算機(jī)或外部源的“寫入”。事實(shí)上,目前可以預(yù)見,這將是通常狀態(tài)。不過,如下情況處于本發(fā)明的范圍中,即,正在等待的計(jì)算機(jī)12將已經(jīng)將其寫線路20設(shè)置為高,并因此在鄰近計(jì)算機(jī)或外部源對(duì)其進(jìn)行讀取之時(shí)正在等待的計(jì)算機(jī)12將蘇醒。在“蘇醒”操作154中,睡眠計(jì)算機(jī)12恢復(fù)運(yùn)行,因?yàn)猷徑?jì)算機(jī)12或外部器件39已經(jīng)完成被等待的事務(wù)。如果被等待的事務(wù)為接收待執(zhí)行的指令字48,那么計(jì)算機(jī)12將進(jìn)而在其中執(zhí)行該指令。如果被等待的事務(wù)為數(shù)據(jù)的接收,那么計(jì)算機(jī)12將進(jìn)而執(zhí)行隊(duì)列中的下一指令,所述指令或者是在該指令字48中的下一時(shí)段54中的指令,或者下一指令字48將被加載,并且下一指令將位于該下一指令字48的時(shí)段0中。無論何種情況,在以所描述的方式使用時(shí),下一指令將開始一系列的一個(gè)或多個(gè)指令,以便處理剛剛接收到的輸入。用于處理這種輸入的選擇包括,進(jìn)行反應(yīng)從而在內(nèi)部執(zhí)行一些預(yù)定的功能,與陣列10中的一臺(tái)或多臺(tái)其它計(jì)算機(jī)12進(jìn)行通訊,或者甚至忽略該輸入(就如同在傳統(tǒng)的現(xiàn)有技術(shù)中,在預(yù)定的條件狀態(tài)下中斷可被忽略一樣)。所述選擇可在圖8的視圖中被描述為“按輸入行動(dòng)”操作156。應(yīng)該注意的是,在某些情況下,輸入的內(nèi)容可能并不重要。在某些情況下,例如,確實(shí)可能僅僅存在如下事實(shí),即,外部器件已經(jīng)試圖進(jìn)行其所感興趣的通訊。如果計(jì)算機(jī)12被指定以充當(dāng)“警醒”計(jì)算機(jī)的任務(wù),以如圖8所示的方式,那么它一般將返回到“睡眠但是警覺”狀態(tài),如圖8所示。不過,所述選擇總是開放,以指定計(jì)算機(jī)12進(jìn)行一些其它任務(wù),例如在它不再需要監(jiān)控正在被監(jiān)控的一個(gè)或多個(gè)特定輸入時(shí),或者在它更便于將該任務(wù)傳送到陣列中的其它一些計(jì)算機(jī)12時(shí)。本領(lǐng)域的技術(shù)人員將認(rèn)知,上述這類操作模式將可用作針對(duì)傳統(tǒng)中斷使用的更有效的替代方案。當(dāng)計(jì)算機(jī)12的一條或多條讀線路18(或?qū)懢€路20)被設(shè)置為高時(shí),可以說,它處于“警覺”狀態(tài)。在警覺狀態(tài)中,計(jì)算機(jī)12準(zhǔn)備立即執(zhí)行通過數(shù)據(jù)總線16向其發(fā)送的任何指令,其中數(shù)據(jù)總線16對(duì)應(yīng)設(shè)置為高的一條或多條讀線路18,或者作為替代地,計(jì)算機(jī)12準(zhǔn)備按照沿著數(shù)據(jù)總線16傳送的數(shù)據(jù)行動(dòng)。在一陣列的計(jì)算機(jī)12可用的情況下,可在任意給定時(shí)間使用一臺(tái)或多臺(tái)計(jì)算機(jī),以處于上文所述的警覺狀態(tài),從而使預(yù)先設(shè)置一套輸入中的任意一個(gè)將觸發(fā)所述計(jì)算機(jī)而使其運(yùn)行。如下情況是優(yōu)選的,即,使用傳統(tǒng)的中斷技術(shù)而使計(jì)算機(jī)“集中注意力”,因?yàn)橹袛鄬?dǎo)致計(jì)算機(jī)必須存儲(chǔ)特定數(shù)據(jù),加載特定數(shù)據(jù)等等,以響應(yīng)中斷請(qǐng)求。相反地,根據(jù)本發(fā)明,計(jì)算機(jī)可處于警覺狀態(tài),并被指定以等待感興趣的輸入的任務(wù),從而在開始執(zhí)行由輸入提供的指令時(shí)就不會(huì)浪費(fèi)任何指令周期。再次,應(yīng)該注意,在目前所描述的實(shí)施例中,處于警覺狀態(tài)的計(jì)算機(jī)實(shí)際上將處于“睡眠但是警覺”狀態(tài),這意味著,它們?cè)趲缀醪皇褂萌魏文芰康囊饬x上處于“睡眠狀態(tài)”,但是由于它們被輸入所即時(shí)觸發(fā)而運(yùn)行時(shí),因此是“警覺”狀態(tài)。不過,以下情況處于本發(fā)明的這方面的范圍之內(nèi),即,“警覺”狀態(tài)即使在計(jì)算機(jī)并不處于“睡眠”狀態(tài)時(shí)也可以實(shí)現(xiàn)。所述警覺狀態(tài)可用于幾乎任何情況中,在這些情況中也可以使用傳統(tǒng)的現(xiàn)有技術(shù)中斷(或者硬件中斷,或者軟件中斷)。雖然本發(fā)明不受該示例的限制,不過此處的計(jì)算機(jī)12被實(shí)現(xiàn)為執(zhí)行自然(native)Forth語言指令。熟悉Forth計(jì)算機(jī)語言的技術(shù)人員將認(rèn)知的是,被認(rèn)為是Forth“字”的復(fù)雜Forth指令由設(shè)計(jì)到計(jì)算機(jī)中的自然處理器指令所構(gòu)建的。Forth字的集合被認(rèn)為是一本“字典”。在其它語言中,這可能被認(rèn)為是一間“圖書館”。如下文將更為詳細(xì)論述的,計(jì)算機(jī)12在某時(shí)刻從RAM24、ROM26或直接從數(shù)據(jù)總線16(圖2)之一讀取18個(gè)比特。不過,因?yàn)樵贔orth中,大多數(shù)指令(被認(rèn)為是無操作數(shù)(operand-less)的指令)直接從堆棧28和34獲取它們的操作數(shù),因此它們通常只有五比特的長(zhǎng)度,從而使得多達(dá)四個(gè)的指令可以被包含于單個(gè)十八比特指令字中,所需要的條件是,該組中的最后一個(gè)指令從受限的一套僅僅需要三個(gè)比特的指令中選出。在圖3的視圖中以方框示意圖的形式還描述了時(shí)段定序器42。在本發(fā)明的該實(shí)施例中,在數(shù)據(jù)堆棧34中的頭兩個(gè)寄存器為T寄存器44和S寄存器46。上述方法包括forthlet的使用。Forthlet是將applet和Forth組合所新造的術(shù)語——盡管這并不是確切的描述。Forth是在20世紀(jì)70年代早期發(fā)展起來的一種計(jì)算機(jī)編程語言。forthlet是代碼周圍的包裝,并且由此所述代碼可以被當(dāng)作數(shù)據(jù)處理。可替換的定義是,forthlet是一種由被包裝所圍繞的機(jī)器可執(zhí)行代碼所組成的字符串。所述包裝可由頭和尾組成,或僅僅由頭組成。Forthlet是支持對(duì)可擴(kuò)縮嵌入式陣列類型的并行處理器進(jìn)行并行編程的部分和工具。Forthlet具有文件的某些屬性。這些屬性包括名稱、類型、地址、長(zhǎng)度和各種進(jìn)一步可選類型的域,這在下文中會(huì)介紹。Forthlet是用于用于由工具或編譯器從源代碼或模板所構(gòu)建的事務(wù)的包裝。Forthlet是用于代碼和數(shù)據(jù)的包裝,并還可以包裝其它forthlet。Forthlet是這樣一種機(jī)制,該機(jī)制用于發(fā)布程序和數(shù)據(jù),并幫助構(gòu)建和調(diào)試程序。這些硬件功能提供了簡(jiǎn)單而快速的遠(yuǎn)程程序調(diào)用和互斥(mutex)。互斥是一種程序?qū)ο蟮耐ㄓ妹?,該程序?qū)ο笤诰€程之間協(xié)商相互的排除,出于該原因,互斥經(jīng)常被稱為一種鎖??蓴U(kuò)縮嵌入式陣列處理器的一種使它們適合于簡(jiǎn)單的并行程序的屬性是,它們被硬件信道連接,這些硬件信道通過將處理器設(shè)置于超低能量睡眠狀態(tài)而同步處理器和處理過程,直到完成未決的消息交換。本發(fā)明在上述環(huán)境中所使用的軟件的一個(gè)屬性在于,該軟件以典型的方式使用傳統(tǒng)的Forth類型協(xié)作多任務(wù)器,從而使每個(gè)處理器在執(zhí)行其本地存儲(chǔ)器空間中的程序和執(zhí)行流向其執(zhí)行信道的程序之間多任務(wù)化。結(jié)合硬件中的多端口地址選擇邏輯,這就提供了一種并行的硬件和軟件的組合,并使從多任務(wù)編程到實(shí)際并行多處理編程的轉(zhuǎn)換變得容易。第二個(gè)屬性在于,這些經(jīng)過同步的通訊信道處于處理器的地址空間中的相同地方,并且可以使用指針而用于進(jìn)行數(shù)據(jù)讀取和寫入,或者可通過被分支而執(zhí)行,或者被處理器程序計(jì)數(shù)器所調(diào)用和讀取。第三個(gè)屬性在于,多個(gè)通訊信道可被選擇來由處理器進(jìn)行讀取或?qū)懭?,因?yàn)樵谶@些通訊端口的地址范圍中的地址中的單獨(dú)的比特選擇單獨(dú)的信道。引導(dǎo)forthlet是一種用于整個(gè)應(yīng)用程序的包裝。這不同于以傳統(tǒng)x86處理器為代表的傳統(tǒng)計(jì)算機(jī)操作。在傳統(tǒng)微處理器中,首先用稱為源代碼的高級(jí)計(jì)算機(jī)語言寫成,例如C++或C#。源代碼然后被轉(zhuǎn)換成機(jī)器語言,也稱為目標(biāo)語言。這種轉(zhuǎn)換過程被稱為編譯,并且完成這種過程的程序或機(jī)器被稱為編譯器。然后,目標(biāo)代碼被處理器執(zhí)行。相反地,forthlet可被直接執(zhí)行。不過,本發(fā)明并不限于可直接執(zhí)行的forthlet,因?yàn)橥ㄟ^將高級(jí)命令編譯成執(zhí)行所有forthlet處理的機(jī)器代碼,可實(shí)現(xiàn)同樣的過程和功能。引導(dǎo)forthlet是最基本類型的forthlet,它可不帶分支地執(zhí)行。次復(fù)雜的forthlet類型為流可執(zhí)行forthlet,其包括調(diào)用,該調(diào)用將地址放置于返回堆棧28上。當(dāng)進(jìn)行調(diào)用時(shí),PC中的地址被壓到返回堆棧。在存儲(chǔ)器中,PC將已經(jīng)被預(yù)遞增,因此,在調(diào)用后,它總是指向在存儲(chǔ)器中的下一順序指令。因此,當(dāng)返回指令返回到堆棧上的地址時(shí),所返回到的是跟隨調(diào)用的操作碼。以下是以機(jī)器Forth寫成的低級(jí)forthlet的示例。該forthlet是簡(jiǎn)單的單個(gè)字端口可執(zhí)行Forthlet。示例1targetForthletport-forthlet!p+!p+@p+@p+Fend第一行標(biāo)明了環(huán)境,第二行聲明程序名稱為port-forthlet。第三行將頭兩個(gè)堆棧項(xiàng)目發(fā)送到其運(yùn)行的端口,然后將這兩個(gè)堆棧項(xiàng)目從該端口讀回。然后,forthlet返回進(jìn)入睡眠狀態(tài),在該端口上等待某人將下一Forthlet寫入該端口。最后一條線路包裹Forthlet,并將其放置到服務(wù)器上,這樣,名稱forthlet返回該包的地址。當(dāng)從端口進(jìn)行調(diào)用時(shí),PC中的地址將為該端口。端口地址并不自動(dòng)遞增,相反地,它們等待其它一些處理器來重寫該端口,地址并不遞增,它們?cè)俅巫x取相同的端口地址并睡眠,直到端口被寫入。因此,如果運(yùn)行在端口中的代碼調(diào)用不同的端口,或者調(diào)用RAM或ROM,那么進(jìn)行調(diào)用的端口的返回地址將被放置在進(jìn)行調(diào)用時(shí)的返回堆棧上。當(dāng)返回指令產(chǎn)生時(shí),它將返回到調(diào)用端口,因?yàn)樵摰刂肪褪菍⒒氐絇C的地址。第三類型的Forthlet是存儲(chǔ)器可執(zhí)行forthlet。存儲(chǔ)器可執(zhí)行forthlet或者使用引導(dǎo)forthlet或流可執(zhí)行forthlet作為包裝。存儲(chǔ)器可執(zhí)行forthlet可以例如占用存儲(chǔ)器節(jié)點(diǎn)0地址0(rev7節(jié)點(diǎn)0,rev9$200)。存儲(chǔ)器可執(zhí)行Forthlet在存儲(chǔ)器中的給定地址處運(yùn)行。它可以在任何節(jié)點(diǎn)上的地址0或1或$D或$34處運(yùn)行。它可以在節(jié)點(diǎn)0或節(jié)點(diǎn)1或節(jié)點(diǎn)2上運(yùn)行。第四類型的Forthlet為節(jié)點(diǎn)可執(zhí)行forthlet。節(jié)點(diǎn)可執(zhí)行forthlet也使用引導(dǎo)forthlet或者流可執(zhí)行forthlet作為包裝。節(jié)點(diǎn)可執(zhí)行forthlet將從任意節(jié)點(diǎn)運(yùn)行。節(jié)點(diǎn)可執(zhí)行forthlet查詢存儲(chǔ)器的位置。第五類型的Forthlet為變量(variable)可執(zhí)行地址forthlet,其也使用引導(dǎo)forthlet或流可執(zhí)行forthlet作為包裝。變量可執(zhí)行地址forthlet從變量節(jié)點(diǎn)運(yùn)行。示例2描述了包括直接端口流操作碼執(zhí)行的forthlet。示例2Target$14org:dosample\getbitisaroutineinram\ifithasn'tbeendefinedpreviously\givethewordgetbitmeaningforthletcall-from-stream[$12345]#dosamplefend該示例編譯的forthlet稱為“call-from-stream”,它開始于文字加載,所述文字加載被執(zhí)行時(shí)將文字$12345加載到T中,然后調(diào)用被稱為“dosample”的子例程。文字加載指令、采樣和向RAM中的子例程的調(diào)用,被包裝在該forthlet中,并且如果寫入到節(jié)點(diǎn)中則將導(dǎo)致節(jié)點(diǎn)執(zhí)行加載,并將進(jìn)行對(duì)RAM中例程的調(diào)用。當(dāng)該例程返回時(shí),它將返回到調(diào)用其的端口以繼續(xù)更多代碼。直接端口流操作碼執(zhí)行提供了對(duì)5比特指令的訪問,所述5比特指令代表了Forth語言中大多數(shù)基本操作,并被編譯器內(nèi)聯(lián)到程序中。這些forthlet被流化到處理器通訊信道,并被逐字執(zhí)行。這些forthlet沒有分支,并且本質(zhì)上不是特定的地址或節(jié)點(diǎn)。這些forthlet形成將其它forthlet作為數(shù)據(jù)緊附(glue)到消息中的語句。程序計(jì)數(shù)器保持在選擇端口的地址處,并且在執(zhí)行包含多達(dá)四個(gè)c18操作碼的字之后也不增值。在完成流化代碼字的執(zhí)行后,處理器將進(jìn)入睡眠狀態(tài),直到下一流化指令字到達(dá)。極其常見的是,這種類型的forthlet將采用返回指令終止,該返回指令將返回到執(zhí)行調(diào)用該端口的例程,可能為PAUSE多任務(wù)器。示例3targetforthletram-based-spi-driver5node!\specifythisisfornode5only0org\thisresidesataddress0onnode5:spi-codeordinary-codefend該示例詳細(xì)說明了一種稱為“ram-based-spi-driver”的forthlet,該forthlet將具有如下代碼,其將要求引腳對(duì)于節(jié)點(diǎn)5是唯一的,并且必須在使用中駐留在該處。它也被綁定到由其內(nèi)部限定的字所指定的特定地址。該字“spi-code”將調(diào)用編譯成地址0。當(dāng)運(yùn)行該forthlet時(shí),該代碼將在節(jié)點(diǎn)5上的地址0處被加載并執(zhí)行。流化的forthlet可以包括對(duì)ROM或RAM中的例程的調(diào)用。通過編譯器,待調(diào)用例程的地址產(chǎn)生于待調(diào)用例程的名稱。在RAM中的例程必須在它們被調(diào)用之前加載。如果RAM或ROM中的例程從端口被調(diào)用,那么非??赡?,傳送指令流的處理器將提供下一流化字以便在端口中執(zhí)行,并進(jìn)入睡眠狀態(tài),與此同時(shí),處理器正在執(zhí)行被調(diào)用的RAM或ROM中的例程。消息的路由包括發(fā)送端口可執(zhí)行流,該端口可執(zhí)行流喚醒處理器并使其調(diào)用在ROM中的路由字。這些字接著讀取更多指令流,然后將所述流路由到朝向其目的地的下一個(gè)處理器上。圖4描述了ram執(zhí)行forthlet的開始。示例4targetforthlet0runs-on-ram-serverordinary-codeother-forthlet-executionetc.fend這種forthlet被設(shè)計(jì)為在地址0處的節(jié)點(diǎn)0上執(zhí)行,并可以通過將“runs-on-ram-server”forthlet的地址傳遞到“X0”命令調(diào)用而被加載和執(zhí)行于節(jié)點(diǎn)0上。為了從RAM服務(wù)器上加載并使用外部RAM而被封裝的應(yīng)用程序,由該命令封裝為Forthlet0類型的forthlet。當(dāng)應(yīng)用程序不同于在RAM服務(wù)器上使用的格式時(shí),應(yīng)用程序也可以采用其它格式設(shè)置,例如那些需要從SPI或異步串行接口加載的格式。這種類型的forthlet為位于RAM底部的程序。在被加載到ram的底部直至某一地址后,它被執(zhí)行。因?yàn)閞am執(zhí)行forthlet在RAM中運(yùn)行,因此它們可以具有分支指令,并且可以跳轉(zhuǎn)到、調(diào)用或返回到RAM、ROM或通訊端口中的地址。這些forthlet類似于DOS中的.com可執(zhí)行文件。它們開始于存儲(chǔ)器的起始處,并具有一定長(zhǎng)度。它們被加載和執(zhí)行。它們可以在已經(jīng)被加載之后再次被調(diào)用。示例5描述了一種被加載的forthlet,其被加載或者被加載且運(yùn)行于其它RAM地址、代碼或數(shù)據(jù)覆蓋(overlay)。示例5target0node!forthletram-based-anynode0org:do-somethingordinary-codefend該示例詳細(xì)說明如下代碼,該代碼將要運(yùn)行于地址0處,但是在forthlet包裝內(nèi)部不綁定到任何特定節(jié)點(diǎn)。它可以運(yùn)行在任意節(jié)點(diǎn)上的地址0處。這些被加載的forthlet用于代碼和數(shù)據(jù)覆蓋。代碼或數(shù)據(jù)可以被加載在節(jié)點(diǎn)上的任意地址處。相同的代碼可以被加載到多個(gè)節(jié)點(diǎn)上的一定范圍的地址,并且如果該地址為RAM的起始,則它們可以為類似于圖8的ram執(zhí)行forthlet。當(dāng)代碼或數(shù)據(jù)被加載到不同于RAM起始的地址處時(shí),則它有時(shí)候可以用于在存儲(chǔ)器的起始處的代碼或數(shù)據(jù)。在程序中的多個(gè)經(jīng)常使用的子例程可以被加載到高存儲(chǔ)器中,并被低存儲(chǔ)器中不同的覆蓋代碼例程所調(diào)用。代碼也可以容易地被加載到低存儲(chǔ)器中并存留在該處,從而被加載到高存儲(chǔ)器中的代碼覆蓋所重復(fù)地調(diào)用。此處的一個(gè)示例可以是如下用法,在該用法中,相同的代碼可以被放置于多個(gè)節(jié)點(diǎn)上的相同地址處,但是組中的每個(gè)節(jié)點(diǎn)將獲得針對(duì)由該節(jié)點(diǎn)操作的代碼所設(shè)置的地址處的單一數(shù)據(jù)的覆蓋。示例6描述了綁定到特定節(jié)點(diǎn)的forthlet。示例6targetforthlet0runs-on-ram-serverordinary-codeother-forthlet-executionetc.fend該forthlet被設(shè)計(jì)為在地址0處的節(jié)點(diǎn)0上執(zhí)行,并可以通過將“runs-on-ram-server”forthlet的地址傳遞到“X0”命令調(diào)用而被加載和執(zhí)行于節(jié)點(diǎn)0上。為了從RAM服務(wù)器上加載并使用外部RAM而封裝的應(yīng)用程序,由所述命令封裝為Forthlet0類型forthlet。示例7描述了IO電路特定forthlet。示例7target0node!forthlet2pram-based-sync-serial-driver0org:sync-codeordinary-codefend該示例構(gòu)建的forthlet將被限制于如下需要,即該forthlet所運(yùn)行的節(jié)點(diǎn)具有至少兩個(gè)引腳。這是典型的IO節(jié)點(diǎn)。帶有零個(gè)或一個(gè)引腳的節(jié)點(diǎn)不能運(yùn)行這種forthlet,因?yàn)樵揻orthlet將需要讀取和寫入IOCS寄存器的在比特17讀取的引腳和在比特1讀取的引腳。這些forthlet所包含的節(jié)點(diǎn)讀取或?qū)懭雽?duì)于特定節(jié)點(diǎn)來說是唯一的IO電路。諸如SPI連接、A/D、D/A、或重置電路的物理電路具有軟件驅(qū)動(dòng)器,該軟件驅(qū)動(dòng)器僅僅適于具有匹配io硬件屬性以運(yùn)行這些Forthlet的節(jié)點(diǎn)。X0forthlet在零節(jié)點(diǎn)0上執(zhí)行,這種自然forthlet在RAM服務(wù)器上運(yùn)行。這些forthlet的作用很類似于大多數(shù)系統(tǒng)中的常規(guī)程序,因?yàn)檫@些forthlet程序直接從外部存儲(chǔ)器加載并且由將它們從外部存儲(chǔ)器讀取的CPU執(zhí)行。一些處理器每次從存儲(chǔ)器中讀取并執(zhí)行一個(gè)字,而一些將外部存儲(chǔ)器的塊讀取到本地高速緩沖存儲(chǔ)器后再執(zhí)行它們。這些forthlet在不直接將高速緩沖存儲(chǔ)器的本地地址映射到外部存儲(chǔ)器地址的硬件中起作用,這樣,處理器就能發(fā)現(xiàn)它正在執(zhí)行外部存儲(chǔ)器,不過來自于緩沖存儲(chǔ)器。通過運(yùn)行已經(jīng)在RAM或ROM中的程序,該forthlet將明確地將代碼從外部存儲(chǔ)器加載到本地存儲(chǔ)器中,然后我們分支到已經(jīng)加載的代碼。任意代碼可以將消息發(fā)送到節(jié)點(diǎn)0、RAM服務(wù)器,并且給予它自然forthlet的地址,從而在RAM服務(wù)器上的本地RAM的起始處加載和執(zhí)行。任意處理器可以僅僅將地址放置于其堆棧上,并條用X0功能,而一條X0消息將通過RAM服務(wù)器緩沖節(jié)點(diǎn)而發(fā)送到RAM服務(wù)器,以在RAM服務(wù)器上的該地址處執(zhí)行forthlet。然后發(fā)生的事情取決于在服務(wù)器上執(zhí)行的自然forthlet的內(nèi)容。最基本的數(shù)據(jù)傳送forthlet為fsend。在RAM服務(wù)器上加載和執(zhí)行自然forthlet的過程包括,調(diào)用在ROMBIOS或RAM中的例程,該例程從外部存儲(chǔ)器進(jìn)行讀取,并且其用于將x0forthlet加載到其用于執(zhí)行的本地RAM中。在RAM服務(wù)器上運(yùn)行的forthlet從外部存儲(chǔ)器加載其它forthlet,不過將它們傳送到管道。端口可執(zhí)行forthlet語句與存儲(chǔ)器可執(zhí)行forthlet結(jié)合從而從一個(gè)位置向另一個(gè)位置傳送數(shù)據(jù),該數(shù)據(jù)也可以為forthlet。用于通過諸如SPI或I2C的協(xié)議,或者經(jīng)無線軟件鏈路而發(fā)送芯片之上或之外的驅(qū)動(dòng)器,處理芯片之上和之外的數(shù)據(jù),并且數(shù)據(jù)傳送forthlet處理芯片上的節(jié)點(diǎn)之間的移動(dòng)數(shù)據(jù)。編譯器可以對(duì)應(yīng)用程序進(jìn)行組織,以通過RAM服務(wù)器、或者從連接到串行閃存的SPI端口、或者從沿著串行鏈路發(fā)送到處理器的PC開發(fā)系統(tǒng)而離開外部存儲(chǔ)器。應(yīng)用程序需要足夠的外部存儲(chǔ)器以允許使用節(jié)點(diǎn)0作為連接到廣闊的外部RAM、ROM或閃存器件的RAM服務(wù)器,這樣的應(yīng)用程序?qū)⒁蕾囉诒痪幾g器封裝進(jìn)RAM服務(wù)器上的Forthlet中的應(yīng)用程序。通過上述使用,F(xiàn)orthlet類型的應(yīng)用程序協(xié)作、加載代碼覆蓋并且互相交換數(shù)據(jù)且和RAM服務(wù)器交換數(shù)據(jù)。事件可以喚醒外圍的處理器節(jié)點(diǎn),并且它們可以與已經(jīng)蘇醒的其它節(jié)點(diǎn)一起協(xié)同處理數(shù)據(jù)。圖9描述了未綁定到特定節(jié)點(diǎn)的可再定位forthlet。示例9target0node!0orgforthletrram-based-relocatable-word:mycodeif....then....mycode-;begin....until....ordinary-codefend該示例具有的forthlet未綁定到節(jié)點(diǎn),但是卻具有取決于地址的內(nèi)部分支。當(dāng)加載到特定地址時(shí),分支的分支域被設(shè)置以重新定位將要運(yùn)行在該特定地址處的例程。這些forthlet從存儲(chǔ)器運(yùn)行,并可包括分支指令。但是,它們?cè)诒患虞d在節(jié)點(diǎn)上時(shí)可被告知,以根據(jù)需要重新定位到不同的執(zhí)行地址。這些forthlet提供了一種類似于DLL的機(jī)制,其中,可調(diào)用功能的某種組合可被不同地安排在運(yùn)行時(shí)(runtime),并仍然安全地調(diào)用編譯器forthlet。編譯器可通過組合不同的基本forthlet類型而幫助構(gòu)建forthlet,從而提供更為復(fù)雜的功能。流forthlet語句被編譯器組合到其它已經(jīng)編譯過的forthlet,以提供更為復(fù)雜的forthlet類型的安全構(gòu)建。編譯器和程序員可以將forthlet屬性指定到可以進(jìn)行更為精細(xì)的對(duì)象操作的forthlet。這還提供了帶有工具的編程器,所述工具形成具有數(shù)學(xué)可證屬性的forthlet對(duì)象,因此有助于安全的程序構(gòu)建。編譯器為程序員構(gòu)建了發(fā)送forthlet。這是一種導(dǎo)致另一個(gè)forthlet被使用指定的路由從一個(gè)位置發(fā)送到另一個(gè)位置的forthlet。程序員使用命令FSEND構(gòu)建發(fā)送類型forthlet,如示例10所示。示例10dataforthletmyroutefsendmyforthlet該語句構(gòu)建名為“myforthlet”的新的發(fā)送類型forthlet,該forthlet在執(zhí)行時(shí)將使“dataforthlet”沿著由路由描述符“myroute”所描述的路由而被發(fā)送。編譯器將允許通過將路由描述為一系列步驟并對(duì)其進(jìn)行描繪,或者通過指定起始節(jié)點(diǎn)和終結(jié)節(jié)點(diǎn),來構(gòu)建路由描述符。圖13描述了一運(yùn)行forthlet。編譯器為程序員構(gòu)建了運(yùn)行forthlet。這是一種將導(dǎo)致一ram執(zhí)行forthlet被使用指定的路由從一個(gè)位置發(fā)送到另一個(gè)位置然后從RAM的起點(diǎn)被執(zhí)行的forthlet。程序員使用命令FRUN構(gòu)建運(yùn)行類型forthlet,如示例11所述。示例11app2route1-21frunrun-app2該語句構(gòu)建名為“run-app2”的新的運(yùn)行類型的forthlet,該forthlet在執(zhí)行時(shí)將使“app2”沿著由路由描述符“route1-21”所描述的路由而發(fā)送。多個(gè)forthlet類似于發(fā)送forthlet。獲取(get)forthlet類似于反相的發(fā)送forthlet。它打開路由,并在它打開的管道中拉動(dòng)forthlet而不是發(fā)送forthlet。廣播forthlet被編譯器構(gòu)建為將一個(gè)forthlet發(fā)送到多個(gè)位置。收集和積聚forthlet被編譯器構(gòu)建為將數(shù)據(jù)從多個(gè)位置收集或積聚到單個(gè)位置。發(fā)布forthlet被編譯器構(gòu)建為將對(duì)數(shù)據(jù)所進(jìn)行的收集的多個(gè)部分從一個(gè)位置發(fā)布到多個(gè)位置。除了上述簡(jiǎn)單的forthlet,還有多個(gè)中級(jí)forthlet對(duì)象。中級(jí)forthlet對(duì)象為如下forthlet,該forthlet具有的對(duì)象屬性由程序員和編譯器所設(shè)置,并被更高級(jí)forthlet使用來幫助程序員,示例12描述了模板forthlet。示例12Target0node!0orgForthletrclipper\clipdatastreamtounsignedfmax#ioport#!a\specifyanunsetinputoutputportaddressfmax#\specifyanunsetmaximumvalueforclipping:clip...\couldbecodedmanyways@bCntmsg#and.\specifyanunsetportforcontrolmessagesclip-;Fend該示例示出了數(shù)據(jù)限制器(clipper)作為可再定位forthlet的定義。使用名稱“ioport#”和“famx#”以及“Cntmsg#”指明,該forthlet具有三個(gè)域,這三個(gè)域帶有該Forthlet中的相對(duì)地址,在模板被初始化時(shí)這三個(gè)域?qū)瑢?shí)例變量。在可再定位forthlet中使用這些名稱告知編譯器,該forthlet可以產(chǎn)生多個(gè)拷貝,這些拷貝可以被重新定位于存儲(chǔ)器中該forthlet所適合的任意節(jié)點(diǎn)和任意地址,并且該forthlet具有含待實(shí)例化(instantiate)的公知屬性的三個(gè)域。當(dāng)構(gòu)建可再定位forthlet時(shí)編譯器識(shí)別出這些關(guān)鍵字,并了解到,“ioport#”域包含與其相鄰的兩個(gè)域的組合地址,并且該forthlet將讀取和寫入兩個(gè)數(shù)據(jù)樣本。當(dāng)該程序的實(shí)例被放進(jìn)陣列中的位置以處理真實(shí)程序中的數(shù)據(jù)樣本時(shí),該域的內(nèi)容將被設(shè)置到對(duì)應(yīng)于適合的相鄰域的兩個(gè)端口的組合地址。編譯器還了解到,“Cntmsg#”域指定將被針對(duì)輸入控制消息而檢測(cè)的端口的地址,并且“fmax#”域包含的值為將被限制器在流中傳遞的最大值。編譯器將確定,該forthlet也具有如下屬性,即,它需要三個(gè)端口,因此它不能放置在只帶有兩個(gè)端口的邊角節(jié)點(diǎn)中。因此,軟件可以將模板程序以如下方式放置在陣列中,而使得可以從數(shù)學(xué)角度證明,經(jīng)過陣列的每個(gè)節(jié)點(diǎn)的消息和控制路徑是正確的,并且不存在流死鎖。模板forthlet是一種類型的可執(zhí)行forthlet,其具有的屬性關(guān)聯(lián)到作為其模板的種類。這些對(duì)象屬性域告知編譯器和程序員,什么是該forthlet的通用功能,以及它所具有的可以被安全操作的屬性。一種示例是fir過濾器元件模板。多級(jí)fir過濾器可以構(gòu)建在節(jié)點(diǎn)的工作組上,其中每個(gè)節(jié)點(diǎn)執(zhí)行一部分過濾器功能。總過濾器功能由級(jí)聯(lián)過濾器元件的每一級(jí)上的特定設(shè)置而確定。在每個(gè)過濾器元件中的代碼是一致的,除了針對(duì)抽頭反饋的延遲、用于對(duì)每個(gè)抽頭處反饋的數(shù)據(jù)進(jìn)行乘法的常數(shù)和數(shù)據(jù)被讀進(jìn)和寫出到下一過濾器級(jí)的端口。模板forthlet將由代碼組成,該代碼所描述的是,可以被操作的參數(shù)處于何處以及這些參數(shù)代表什么。通過使用被編譯器以安全方式映射到功能的預(yù)定義功能模板,許多問題自身就得到解決。這些屬性還可以圖形化地表示給程序員,以采用可視化幫助設(shè)計(jì),并確認(rèn)設(shè)計(jì)的正確性。更高級(jí)的forthlet將使用這些模板forthlet屬性域來確保,模塊為帶有與鄰近模塊匹配的部分的結(jié)構(gòu),從而防止其中模塊以允許死鎖的方式連接的代碼構(gòu)造。高級(jí)forthlet也被調(diào)用,forthlet向?qū)?wizard)可以根據(jù)需要被設(shè)置為高級(jí)。它們是編譯器的一部分,并且?guī)椭绦騿T對(duì)代碼進(jìn)行設(shè)計(jì)、構(gòu)建和改造。它們使用forthlet的對(duì)象屬性來為程序員構(gòu)建對(duì)象。在forthlet圖書館中存在一些forthlet向?qū)В⑶掖嬖谖臋n,作為替換地,forthlet向?qū)軌蛴脕韼椭鷺?gòu)建新的forthlet向?qū)?。在FIR過濾器模板forthlet的之前示例中,過濾器建筑器向?qū)orthlet可以接收過濾器的高級(jí)描述,并執(zhí)行所需要的計(jì)算,這些計(jì)算確定延遲、抽頭、常數(shù)和端口方向,它們是每個(gè)節(jié)點(diǎn)構(gòu)建并行分布式多級(jí)FIR過濾器所需的??梢葬槍?duì)每個(gè)節(jié)點(diǎn)初始化FIR過濾器Forthlet模板,并增加在整個(gè)節(jié)點(diǎn)的工作組上加載和啟動(dòng)軟件所需的forthlet包裝。上述向?qū)Э梢詭椭鷺?gòu)建模擬部件對(duì)象、R/F元件對(duì)象,其包括發(fā)送器、接收器、過濾器、協(xié)議翻譯器、或添加到圖書館的其它任何事物。診斷forthlet在處理器端口上執(zhí)行,并將該處理器狀態(tài)的完整視圖,或者關(guān)于其狀態(tài)的任何特定信息,返回到其它一些位置,例如返回到PC上的開發(fā)系統(tǒng),或者甚至沿著無線電鏈路返回到遠(yuǎn)程目的地。Forthlet解釋器非常像傳統(tǒng)的forth系統(tǒng),因?yàn)樗鼘?zhí)行來自forthlet地址列表的forthlet。該列表可以駐留在外部存儲(chǔ)器中,并且每次從所述列表讀取一個(gè)地址。該地址然后將在帶有X0的RAM服務(wù)器上執(zhí)行。內(nèi)部細(xì)節(jié)將非常類似傳統(tǒng)的線程化Forth系統(tǒng)。分支將重置forthlet解釋器指針等ram執(zhí)行。以該方式運(yùn)行的Forthlet解釋器讓技術(shù)人員可以寫非常大的程序,這些程序的運(yùn)行好像來自非常大的地址空間,就如同傳統(tǒng)的處理器。Forth字的大小將不受限于程序員本人的一個(gè)本地節(jié)點(diǎn)上的存儲(chǔ)器的大小,而是受限于外部存儲(chǔ)器的大小。Forthlet解釋器的使用,將允許技術(shù)人員在運(yùn)行時(shí)做很多事情,我們之前已經(jīng)描述為發(fā)生在編譯時(shí)間。編譯器在構(gòu)建和分配forthlet方面所做的智能事情可以可選地在運(yùn)行時(shí)被處理。一個(gè)示例將是動(dòng)態(tài)過濾器建筑器類型程序,其在運(yùn)行時(shí)運(yùn)行在嵌入式芯片上,以便利用允許對(duì)加載并運(yùn)行在分布式處理器上的forthlet進(jìn)行壓縮的方式。被包含作為運(yùn)行時(shí)Forthlet解釋器對(duì)象的模板和實(shí)例化程序可小于整套實(shí)例化節(jié)點(diǎn),在該節(jié)點(diǎn)處過濾器元件每次均被復(fù)制。動(dòng)態(tài)forthlet調(diào)度器(dispatcher)是高級(jí)forthlet。針對(duì)一些應(yīng)用程序,通過使用對(duì)可執(zhí)行forthlet和forthlet工作組進(jìn)行調(diào)度的forthlet,可實(shí)現(xiàn)動(dòng)態(tài)運(yùn)行時(shí)加載平衡,調(diào)度基于該時(shí)刻處可用節(jié)點(diǎn)的數(shù)目,或基于使用物理或R/F鏈路而網(wǎng)絡(luò)連接在一起的芯片的數(shù)目。高級(jí)forthlet還可用作可視化工具和分析程序(profiler)。高級(jí)forthlet可以檢驗(yàn)經(jīng)過編譯的forthlet的對(duì)象屬性,并提供針對(duì)應(yīng)用程序的分配、使用和效率的有益的可視化??梢暬ぞ吆头治龀绦蚱骺砂ㄍ耆?dòng)環(huán)境,其用作在每個(gè)核心上運(yùn)行的傳統(tǒng)的Forth命令解釋器,該解釋器具有的能力為實(shí)時(shí)地與處理器和代碼互動(dòng)。對(duì)于Forth而言,這已經(jīng)是傳統(tǒng)優(yōu)勢(shì),它經(jīng)常消除針對(duì)如下情況的需要,即,快速調(diào)制應(yīng)用程序所需的麻煩且厭煩的電路內(nèi)部仿真硬件。雖然已經(jīng)在此討論了創(chuàng)造性的計(jì)算機(jī)陣列10和計(jì)算機(jī)12的特定示例,不過可以預(yù)期,針對(duì)于此的大量應(yīng)用程序還未被想到。事實(shí)上,創(chuàng)造性的方法和裝置可適用于許多不同的使用,這是本發(fā)明的一大優(yōu)勢(shì)。上述全部?jī)?nèi)容僅僅為本發(fā)明的可用實(shí)施例的一些示例。本領(lǐng)域的技術(shù)人員將易于想到,在不脫離本發(fā)明的精神和范圍的前提下,可進(jìn)行多種其它修改和變化。相應(yīng)地,本公開在此并不意在限制,并且附帶的權(quán)利要求書應(yīng)被理解為涵蓋了本發(fā)明的全部范圍。工業(yè)實(shí)用性創(chuàng)造性的計(jì)算機(jī)陣列10、10a以及相關(guān)方法意在廣泛用于多種計(jì)算機(jī)應(yīng)用中??梢灶A(yù)期,在有必要實(shí)現(xiàn)大量不同但是相關(guān)的功能的計(jì)算機(jī)尖端應(yīng)用中,它們將尤為有用??梢灶A(yù)見,針對(duì)創(chuàng)造性的計(jì)算機(jī)陣列10、10a以及相關(guān)方法的一些最佳應(yīng)用方案將在于,可以對(duì)所需要的任務(wù)進(jìn)行分割,從而使每臺(tái)計(jì)算機(jī)12具有接近等同于其它計(jì)算機(jī)的計(jì)算要求。不過,即使在一些計(jì)算機(jī)12有時(shí)候甚至總是可以工作在遠(yuǎn)小于它們最大能力的情況下,發(fā)明人也已經(jīng)發(fā)現(xiàn),計(jì)算機(jī)陣列10、10a的整體效率通常將超過現(xiàn)有技術(shù)中可動(dòng)態(tài)分配任務(wù)的計(jì)算機(jī)陣列的效率。應(yīng)該注意的是,存在多種應(yīng)用,其中優(yōu)選地具有不止一個(gè)計(jì)算機(jī)陣列10、10a。眾多這類可能示例中的一個(gè)是,數(shù)字無線電可要求GPS輸入。在該示例中,無線電可被一個(gè)計(jì)算機(jī)陣列10執(zhí)行,該陣列從分立的被配置以實(shí)現(xiàn)GPS功能的計(jì)算機(jī)陣列10接收輸入。進(jìn)一步應(yīng)該注意的是,雖然計(jì)算機(jī)12可被優(yōu)化以執(zhí)行單一的任務(wù),不過如上文示例所討論的,如果該任務(wù)不是特定的應(yīng)用程序中所需要的,那么計(jì)算機(jī)12可容易地被編程以執(zhí)行其它一些任務(wù),這僅僅受限于程序員的想象力??梢灶A(yù)見的是,使用Forth計(jì)算機(jī)語言將最佳地實(shí)現(xiàn)本創(chuàng)造性計(jì)算機(jī)陣列10、10a,該語言本質(zhì)上易于根據(jù)需要分割任務(wù)以執(zhí)行本發(fā)明。ColorForth為Forth語言的最新改造,其將被等價(jià)地應(yīng)用。因?yàn)楸景l(fā)明的計(jì)算機(jī)陣列10、10a以及計(jì)算機(jī)陣列方法36可易于形成,并易于與現(xiàn)有任務(wù)、輸入/輸出器件等集成,并且由于提供了在此所描述的優(yōu)勢(shì),因此,可以預(yù)見,它們將易于在工業(yè)生產(chǎn)中被接受。出于這些和其它原因,可以預(yù)見,本發(fā)明的使用和工業(yè)實(shí)用性將具有明顯的應(yīng)用范圍以及長(zhǎng)時(shí)間的應(yīng)用周期。元件列表10計(jì)算機(jī)陣列12計(jì)算機(jī)12a存儲(chǔ)器控制器計(jì)算機(jī)14基座16數(shù)據(jù)線18閃存存儲(chǔ)器20RAM22串行數(shù)據(jù)線路24并行數(shù)據(jù)總線28a經(jīng)26p輸入/輸出電路28處理器30ROM32計(jì)算機(jī)RAM34計(jì)算核心36計(jì)算機(jī)陣列方法38提供互連計(jì)算機(jī)40針對(duì)任務(wù)配置計(jì)算機(jī)42將任務(wù)指定到計(jì)算機(jī)44初始化計(jì)算機(jī)權(quán)利要求1.一種計(jì)算機(jī)陣列系統(tǒng),包括多臺(tái)計(jì)算機(jī);和連接所述多臺(tái)計(jì)算機(jī)的多條數(shù)據(jù)路徑;和一種機(jī)制,其用于在所述多臺(tái)計(jì)算機(jī)中的一臺(tái)和另一臺(tái)之間發(fā)布程序和數(shù)據(jù)。2.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)陣列系統(tǒng),其中所述機(jī)制進(jìn)一步包括一種包裝,其用于在所述包裝遇到所述多臺(tái)計(jì)算機(jī)中的至少一臺(tái)時(shí),指令所述一臺(tái)計(jì)算機(jī)所要采取的行動(dòng)。3.根據(jù)權(quán)利要求2所述的計(jì)算機(jī)陣列系統(tǒng),其中所述包裝指令至少一些所述計(jì)算機(jī)中的所述一臺(tái)加載所述包裝之后的數(shù)據(jù)。4.根據(jù)權(quán)利要求2所述的計(jì)算機(jī)陣列系統(tǒng),其中所述包裝指令所述至少一些計(jì)算機(jī)中的所述一臺(tái)加載所述包裝之后的指令。5.根據(jù)權(quán)利要求2所述的計(jì)算機(jī)陣列系統(tǒng),其中所述包裝指令所述至少一些計(jì)算機(jī)中的所述一臺(tái)將所述承載傳送到所述計(jì)算機(jī)中的另一臺(tái)。6.根據(jù)權(quán)利要求2所述的計(jì)算機(jī)陣列系統(tǒng),其中所述包裝可在端口處直接執(zhí)行。7.根據(jù)權(quán)利要求2所述的計(jì)算機(jī)陣列系統(tǒng),其中所述包裝可在端口處直接執(zhí)行。8.根據(jù)權(quán)利要求2所述的計(jì)算機(jī)陣列系統(tǒng),其中所述包裝包括調(diào)用,其中,所述調(diào)用將地址放置于返回堆棧上,然后返回。9.根據(jù)權(quán)利要求2所述的計(jì)算機(jī)陣列系統(tǒng),其中所述包裝進(jìn)一步包括計(jì)數(shù)器,該計(jì)數(shù)器用于指示所述包裝的長(zhǎng)度。10.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)陣列系統(tǒng),其中計(jì)算機(jī)以5×5陣列的形式進(jìn)行物理排列。11.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)陣列系統(tǒng),其中至少一些計(jì)算機(jī)以4×6陣列的形式進(jìn)行物理排列。12.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)陣列系統(tǒng),其中沿著陣列的每一側(cè)的計(jì)算機(jī)數(shù)量為偶數(shù)。13.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)陣列系統(tǒng),其中至少一臺(tái)計(jì)算機(jī)與外部存儲(chǔ)器源直接通訊。14.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)陣列系統(tǒng),其中至少一臺(tái)計(jì)算機(jī)將數(shù)據(jù)從外部存儲(chǔ)器源傳達(dá)至多臺(tái)計(jì)算機(jī)中的至少一些。15.一種用于執(zhí)行計(jì)算機(jī)化工作的方法,包括提供多臺(tái)計(jì)算機(jī);和將不同任務(wù)指定到所述計(jì)算機(jī)中的至少一些。16.根據(jù)權(quán)利要求15所述的方法,其中所述計(jì)算機(jī)中的至少一臺(tái)被指定為與閃存通訊。17.根據(jù)權(quán)利要求15所述的方法,其中所述計(jì)算機(jī)中的至少一臺(tái)被指定為與隨機(jī)訪問存儲(chǔ)器通訊。18.根據(jù)權(quán)利要求15所述的方法,其中所述計(jì)算機(jī)中的至少一臺(tái)被指定為完成輸入/輸出功能。19.根據(jù)權(quán)利要求15所述的方法,其中所述計(jì)算機(jī)中的一臺(tái)將所述指定路由到其余計(jì)算機(jī)。20.一種計(jì)算機(jī)陣列,包括多臺(tái)計(jì)算機(jī);和在所述計(jì)算機(jī)之間的多條數(shù)據(jù)連接;其中所述計(jì)算機(jī)中的至少一些被編程為執(zhí)行不同的功能。21.根據(jù)權(quán)利要求20所述的計(jì)算機(jī)陣列,其中所述不同功能一起工作以完成任務(wù)。22.根據(jù)權(quán)利要求20所述的計(jì)算機(jī)陣列,其中當(dāng)所述計(jì)算機(jī)陣列被初始化時(shí),所述功能中的每一個(gè)被編程到相應(yīng)的計(jì)算機(jī)中。23.根據(jù)權(quán)利要求20所述的計(jì)算機(jī)陣列,其中所述計(jì)算機(jī)之間的通訊為異步的。24.一種使用多臺(tái)計(jì)算機(jī)完成任務(wù)的方法,包括將任務(wù)分割成多個(gè)操作成分,并將每個(gè)所述操作成分指定到所述計(jì)算機(jī)中的一臺(tái);對(duì)所述計(jì)算機(jī)中的至少一些進(jìn)行編程,以完成每個(gè)所述操作成分。25.根據(jù)權(quán)利要求24所述的用于完成任務(wù)的方法,其中所述操作成分是用于完成全球定位系統(tǒng)接收器的操作。26.根據(jù)權(quán)利要求24所述的用于完成任務(wù)的方法,其中在任務(wù)開始之前,對(duì)所述計(jì)算機(jī)進(jìn)行編程,以完成每個(gè)所述操作成分。27.根據(jù)權(quán)利要求24所述的用于完成任務(wù)的方法,其中所述計(jì)算機(jī)以計(jì)算機(jī)陣列的形式進(jìn)行排列。全文摘要一種計(jì)算機(jī)陣列(10),其具有多臺(tái)計(jì)算機(jī)(12),用于完成較大的任務(wù),該任務(wù)被分割成多個(gè)較小的任務(wù),每個(gè)較小任務(wù)被指定給一臺(tái)或多臺(tái)計(jì)算機(jī)(12)。每臺(tái)計(jì)算機(jī)(12)可被配置用于特定功能,并且與外部計(jì)算機(jī)(12)相關(guān)的獨(dú)立輸入/輸出電路(26)特別適于特定的輸入/輸出功能。在計(jì)算機(jī)陣列(10)中布置的24臺(tái)計(jì)算機(jī)(12)的示例,具有中央運(yùn)算核心(34),更接近基座(14)邊緣的計(jì)算機(jī)(12)被配置用于輸入和/或輸出。還描述了用于在計(jì)算機(jī)(12)和外圍環(huán)境之間進(jìn)行通訊的機(jī)制。文檔編號(hào)G06F9/30GK101051301SQ20071009075公開日2007年10月10日申請(qǐng)日期2007年4月2日優(yōu)先權(quán)日2006年3月31日發(fā)明者查理斯·H·莫爾,杰佛瑞·亞瑟·??怂?約翰·W·瑞伯申請(qǐng)人:科技資產(chǎn)股份有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1