專利名稱:用于將數(shù)據(jù)和指令載入計(jì)算機(jī)的方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)和計(jì)算機(jī)處理器領(lǐng)域。
背景技術(shù):
在計(jì)算領(lǐng)域,處理速度是非常期望的品質(zhì),并且對(duì)創(chuàng)造更快速的計(jì)算機(jī) 和處理器的探索正在進(jìn)行中。然而,行業(yè)中普遍認(rèn)為,至少對(duì)于利用目前已 知的技術(shù)來(lái)提高微處理器的速度而言,微處理器速度的極限正在迅速地被接 近。因此,通過(guò)在處理器之間分擔(dān)計(jì)算機(jī)任務(wù)來(lái)提高整體計(jì)算機(jī)速度的多處 理器的使用,越來(lái)越受到關(guān)注。
多處理器的使用所關(guān)心的是創(chuàng)建在處理器之間進(jìn)行通信的需要。實(shí)際 上,在處理器之間可能有大量的通信,因而大量的時(shí)間花費(fèi)在處理器之間的 指令和數(shù)據(jù)傳輸上。在這種通信量相當(dāng)大的情況下,為了完成該通信量而必
須執(zhí)行的每條額外指令都會(huì)在過(guò)程中放置一增量延遲,通過(guò)累加,過(guò)程中的 延遲可能相當(dāng)大。用于從一個(gè)計(jì)算機(jī)向另 一個(gè)計(jì)算機(jī)傳達(dá)指令或數(shù)據(jù)的傳統(tǒng) 方法包括首先將數(shù)據(jù)或指令存儲(chǔ)在接收計(jì)算機(jī)中,然后對(duì)該數(shù)據(jù)或指令進(jìn)行 調(diào)用以執(zhí)行(在為指令的情況下),或?qū)ζ溥M(jìn)行操作(在為數(shù)據(jù)的情況下)。
減少在計(jì)算機(jī)之間以數(shù)據(jù)或指令形式傳送、接收和然后使用信息所需的 步驟的數(shù)目,是有幫助的。然而,就本發(fā)明人所知,沒(méi)有現(xiàn)有技術(shù)的系統(tǒng)以 有效的方式來(lái)簡(jiǎn)化上述過(guò)程。
而且,在現(xiàn)有技術(shù)中所公知的是,需要時(shí)常"獲得計(jì)算機(jī)的注意力"。 也就是說(shuō),有時(shí)盡管計(jì)算機(jī)可能正在忙于一項(xiàng)任務(wù),但是可能發(fā)生另一項(xiàng)時(shí) 間敏感的任務(wù),使該計(jì)算機(jī)必須暫時(shí)從第一項(xiàng)任務(wù)轉(zhuǎn)向該任務(wù)。這樣的例子 包括但不限于使用用戶輸入裝置來(lái)向計(jì)算機(jī)提供輸入的情況。在這種情況
下,計(jì)算機(jī)可能需要根據(jù)該輸入暫時(shí)確認(rèn)該輸入和/或作出反應(yīng)。然后,計(jì)
算機(jī)基于該輸入,要么繼續(xù)該輸入之前進(jìn)行的工作,要么改變其工作。盡管
在這里使用外部輸入作為例子,但是當(dāng)ALU的注意力在計(jì)算機(jī)的內(nèi)部方面
之間存在潛在的沖突時(shí),同樣的情況也會(huì)發(fā)生。
當(dāng)從I/0端口接收數(shù)據(jù),或改變1/0端口的狀態(tài)時(shí),現(xiàn)有技術(shù)中有兩種 方法。 一種是"輪詢"端口,該方法包括以固定間隔讀耳又端口的狀態(tài),以判 斷是否接收到任何數(shù)據(jù),或是否發(fā)生了狀態(tài)變化。然而,輪詢端口消耗相當(dāng) 多的時(shí)間和資源,這些時(shí)間和資源通常可以更好地用作其它事情。 一種更好 的替代方法通常是使用"中斷"。當(dāng)使用中斷時(shí),處理器可以著手進(jìn)行分配 給它的任務(wù),然后當(dāng)如接收到字節(jié)或狀態(tài)變化的事實(shí)所指示的那樣,1/0端 口/裝置需要注意時(shí),1/0端口/裝置向處理器發(fā)送中斷請(qǐng)求(IRQ)。 一旦處 理器接收到中斷請(qǐng)求,它就結(jié)束它的當(dāng)前指令,將少許內(nèi)容置入堆棧,并執(zhí) 行適當(dāng)?shù)闹袛喾?wù)例程(ISR),該中斷服務(wù)例程可以將字節(jié)從端口上移走, 并將該字節(jié)置入緩沖器。 一旦ISR結(jié)束,處理器就返回它停止的地方。使用 該方法,處理器不必要浪費(fèi)時(shí)間來(lái)查看1/0裝置是否需要被注意,該裝置會(huì) 僅在其需要被注意時(shí)才為中斷提供服務(wù)。然而,由于存在與使用中斷相關(guān)聯(lián) 的大量開(kāi)銷,所以在很多情況下,使用中斷本身是遠(yuǎn)遠(yuǎn)談不上被期望的。例 如,每當(dāng)發(fā)生中斷時(shí),計(jì)算機(jī)都不得不將與其先前嘗試完成的任務(wù)相關(guān)的特 定數(shù)據(jù)暫時(shí)貯存起來(lái),然后載入關(guān)于中斷的數(shù)據(jù),而后一旦中斷處理完畢, 就要將在前的任務(wù)所需的數(shù)據(jù)重新載入。中斷干擾了時(shí)間敏感的處理。從本 質(zhì)上來(lái)說(shuō),中斷使時(shí)序不可預(yù)測(cè)。顯然,期望的是減少或消除所有的這種時(shí) 間和資料消耗開(kāi)銷。然而,現(xiàn)有技術(shù)中沒(méi)有開(kāi)發(fā)出緩和中斷需要的方法。
傳統(tǒng)的并行計(jì)算通常將若干計(jì)算機(jī)連接到串行通訊端口的數(shù)據(jù)路徑或 總線上。在這種布置中,各獨(dú)立的計(jì)算機(jī)都被分配以地址。舉例來(lái)說(shuō),在貝 奧伍爾夫群集(beowolf cluster)中,獨(dú)立的PC通過(guò)TCP/IP協(xié)議連"t妄到以 太網(wǎng)中,并被給定一地址或URL。當(dāng)向一獨(dú)立的計(jì)算機(jī)輸送數(shù)據(jù)或指令時(shí), 這些數(shù)據(jù)或指令被放置在寫有該計(jì)算機(jī)地址的包中。有關(guān)的問(wèn)題是在這種計(jì)算機(jī)中如何有效地向獨(dú)立的計(jì)算機(jī)傳輸數(shù)據(jù)和 指令。由于這種類型的計(jì)算機(jī)的架構(gòu)不包括單獨(dú)的可尋址計(jì)算機(jī),所以這個(gè) 問(wèn)題更加困難。
發(fā)明內(nèi)容
發(fā)明的一個(gè)方面提供一種計(jì)算機(jī)陣列,該計(jì)算機(jī)陣列中的各計(jì)算機(jī)通過(guò) 計(jì)算機(jī)的數(shù)據(jù)總線鏈接端口鏈接到相鄰的鄰居,該陣列具有向目的地提供信 息的工具,該目的地是該陣列中任意期望的一個(gè)計(jì)算機(jī)。該信息可以是數(shù)據(jù) 和/或指令,所述指令例如由期望的一個(gè)計(jì)算機(jī)來(lái)實(shí)現(xiàn)的程序。在實(shí)施例中, 向期望的一個(gè)計(jì)算機(jī)提供信息的工具是程序,在下文中稱作爬蟲(chóng),該爬蟲(chóng)攜 帶信息,還預(yù)定義了從起點(diǎn)(即可能位于陣列邊緣的預(yù)定計(jì)算機(jī))穿過(guò)陣列 到目的地的路線,該目的地是期望的一個(gè)計(jì)算機(jī),并且沿著預(yù)定義的路線將 自身從一個(gè)計(jì)算機(jī)復(fù)制到另一計(jì)算機(jī)。在期望的目的地計(jì)算機(jī)處,信息被提 供給這個(gè)計(jì)算機(jī)。如果該信息是指令,則在這個(gè)計(jì)算機(jī)中實(shí)施該指令。
爬蟲(chóng)也可以定義從目的地計(jì)算機(jī)到另一計(jì)算機(jī)的路線,另一計(jì)算機(jī)例如 是原來(lái)的起點(diǎn)或可以是不同的計(jì)算機(jī)。在一個(gè)實(shí)施例中,爬蟲(chóng)將指令的結(jié)果 運(yùn)送到所述另一計(jì)算機(jī)。
在一個(gè)實(shí)施例中,爬蟲(chóng)僅向計(jì)算機(jī)送遞程序和/或數(shù)據(jù),然后間斷。
在實(shí)施例中,在爬蟲(chóng)程序的有效載荷中,路線被靜態(tài)地定義,換句話說(shuō), 有效載荷預(yù)定了路線(不像TCP/IP—樣,路線是動(dòng)態(tài)定義的)。
在實(shí)施例中,在爬蟲(chóng)沿路線行進(jìn)期間,路線信息在存儲(chǔ)器之間復(fù)制。如 果爬蟲(chóng)中的數(shù)據(jù)/指令有效載荷包含關(guān)于其路線的信息,且該有效載荷并沒(méi) 有被沿路線的計(jì)算機(jī)消耗,那么目的地計(jì)算機(jī)可以接收關(guān)于所采取的路線及 其原點(diǎn)的信息。
本發(fā)明的一個(gè)實(shí)施例包括具有自身的存儲(chǔ)器的計(jì)算機(jī),使得該計(jì)算機(jī)能
夠獨(dú)立地執(zhí)行計(jì)算功能。在發(fā)明的一個(gè)實(shí)施例中,多個(gè)計(jì)算機(jī)以陣列方式進(jìn)
行排列。為了協(xié)同地完成任務(wù),這些計(jì)算機(jī)必須將數(shù)據(jù)和/或指令從一個(gè)計(jì)
算機(jī)傳遞到另一個(gè)計(jì)算機(jī)。由于所有的計(jì)算機(jī)同時(shí)工作通常會(huì)提供比大多數(shù) 任務(wù)所需要的計(jì)算功率更多的計(jì)算功率,并且由于無(wú)論使用哪種算法或方法
在任意給定的時(shí)間,至少一些計(jì)算機(jī),而且可能很多計(jì)算機(jī)不會(huì)積極地參與 到任務(wù)的完成中。所以,期望找到一種使未充分利用的計(jì)算機(jī)可用于通過(guò)"借 出"計(jì)算資源或存儲(chǔ)器或兩者來(lái)援助它們較忙的鄰居的方法。為了使這種關(guān) 系有效且有用,還進(jìn)一步期望鄰居計(jì)算機(jī)之間的通信和交互盡可能地快速且
有效。因此,本發(fā)明實(shí)施例提供一種由計(jì)算機(jī)執(zhí)行從另一計(jì)算機(jī)直接提供的 指令和/或?qū)牧硪挥?jì)算機(jī)直接提供的數(shù)據(jù)進(jìn)行運(yùn)作,而不是在這種運(yùn)作之
前必須接收并貯存數(shù)據(jù)和/或指令的工具和方法。應(yīng)該注意發(fā)明的該實(shí)施例 對(duì)于充當(dāng)媒介的指令來(lái)說(shuō)也將有用,該媒介使計(jì)算機(jī)將指令或數(shù)據(jù)從一個(gè)其 它計(jì)算機(jī)"傳遞到"另一個(gè)計(jì)算機(jī)。
在實(shí)施例中,為了防止不必要的功耗和不必要的熱量的產(chǎn)生,當(dāng)計(jì)算機(jī) 嘗試與一個(gè)以上鄰居進(jìn)行通信時(shí),該計(jì)算機(jī)將處于基本不消耗功率的休眠模 式,直到鄰居或一個(gè)鄰居為了完成通信而運(yùn)作為止。然而,這不是本發(fā)明的 必要方面。此外,為了完成期望的功率節(jié)省并減少熱量的產(chǎn)生,期望在發(fā)起 的計(jì)算機(jī)在等候通信完成的時(shí)候間斷,或至少顯著地減少自己的功耗。可以 想象,這可以由多種手段中的任意一種手段來(lái)實(shí)現(xiàn)。例如,如果該計(jì)算機(jī)是 由內(nèi)部時(shí)鐘或外部時(shí)鐘定時(shí)的,則該時(shí)鐘可以在該時(shí)間|更期間-故減'艮或停 止。
在此所描述的本發(fā)明 一 個(gè)實(shí)施例中,無(wú)論指令和數(shù)據(jù)的源是計(jì)算機(jī)的內(nèi) 部存儲(chǔ)器,還是這類指令和數(shù)據(jù)是由諸如另一計(jì)算機(jī)、外部通信端口等的另 一個(gè)源接收的,這類指令和數(shù)據(jù)都會(huì)得到基本相同的對(duì)待。這是非常有意義 的,原因是諸如貯存數(shù)據(jù)或指令、之后從內(nèi)部存儲(chǔ)器中重新調(diào)用它們之類的 "額外"操作是不必要的,因此減少了所需的指令數(shù)目,并提高了所涉及計(jì) 算機(jī)的運(yùn)行速度。
在實(shí)施例中,極小的指令組通常可以同時(shí)傳達(dá)到另一個(gè)計(jì)算機(jī),從而使需要重復(fù)迭代的相對(duì)簡(jiǎn)單的操作可以快速且容易地完成。這將極大地加速了 計(jì)算機(jī)之間的通信過(guò)程。
在實(shí)施例中,由于存在可用于執(zhí)行各種任務(wù)的多個(gè)計(jì)算機(jī),且由于在等 候輸入時(shí) 一個(gè)以上計(jì)算機(jī)可置于基本不使用功率的休眠狀態(tài),因此可以給這 類計(jì)算機(jī)分配等候輸入的任務(wù),從而減少或消除了 "中斷"可能正在完成其 它任務(wù)的計(jì)算機(jī)的需要。
在實(shí)施例中,數(shù)據(jù)和指令可以有效地載入獨(dú)立的計(jì)算機(jī)并執(zhí)行和/或在 這類計(jì)算機(jī)之間傳輸。即使在各計(jì)算機(jī)僅直接連接到有限數(shù)目的鄰居時(shí),所 述傳輸可以在無(wú)到達(dá)公共總線的資源的情況下完成。
本發(fā)明實(shí)施例提供一種允許計(jì)算機(jī)在從外部源接收指令時(shí),并不首先貯 存所述指令的情況下就執(zhí)行所述指令的方法和工具,以及使用該方法和工具 來(lái)促進(jìn)計(jì)算機(jī)之間的通信并促進(jìn)計(jì)算機(jī)使用另 一 計(jì)算機(jī)的可用資源的能力 的相關(guān)方法。該實(shí)施例在位于單 一微芯片上的多計(jì)算機(jī)組合中提供直接執(zhí)行 方法和裝置,其中運(yùn)行效率很重要,不僅是由于期望提高運(yùn)行速度,還由于 作為更高效率的重要方面的功率節(jié)省和熱量減少。
鑒于這里描述的及在附圖的若干圖中所示出的對(duì)實(shí)施本發(fā)明的方式和 本發(fā)明的工業(yè)實(shí)用性的描述,本發(fā)明實(shí)施例的這些及其它目的和優(yōu)勢(shì)將對(duì)本 領(lǐng)域技術(shù)人員來(lái)說(shuō)變得清楚。所列出的目的和優(yōu)勢(shì)并不是對(duì)本發(fā)明實(shí)施例所 有可能優(yōu)勢(shì)的窮舉。而且,即使在應(yīng)用中可能不具備或不需要一個(gè)以上所計(jì) 劃的目的和/或優(yōu)勢(shì)的情況下,也可以實(shí)施該發(fā)明。
進(jìn)一 步,本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到本發(fā)明的各種實(shí)施例可以達(dá)到所描述 的目的和/優(yōu)勢(shì)中的一個(gè)以上,但不必須是全部目的和/優(yōu)勢(shì)。相應(yīng)地,這里 所描述的目的和/或優(yōu)勢(shì)并不是本發(fā)明的必需元素,且不應(yīng)該被解釋為對(duì)本 發(fā)明的限制。
圖1為根據(jù)本發(fā)明的計(jì)算機(jī)陣列的概略圖2為示出圖1的計(jì)算機(jī)的子集的詳細(xì)圖及圖1的互連數(shù)據(jù)總線的更詳
細(xì)牙見(jiàn)圖3為描繪圖l和圖2的計(jì)算機(jī)中一個(gè)計(jì)算機(jī)的一般布局的框圖4為根據(jù)本創(chuàng)造性申請(qǐng)的指令字的概略圖5為圖3的時(shí)間片定序器42的示意圖6為描繪根據(jù)本發(fā)明的微循環(huán)的例子的流程圖7為根據(jù)本創(chuàng)造性申請(qǐng)的爬蟲(chóng)(crawler)指令的概略圖8為描繪圖7創(chuàng)造性方法的例子的流程圖。
具體實(shí)34方式
在以下的說(shuō)明書參見(jiàn)附圖描述本發(fā)明的實(shí)施例,在附圖中相同的附圖標(biāo) 記表示相同或相似的元件。雖然根據(jù)用于實(shí)現(xiàn)目的的模式對(duì)本發(fā)明的實(shí)施例 進(jìn)行了描述,但是本領(lǐng)域技術(shù)人員將認(rèn)知到鑒于這些啟示并未脫離本發(fā)明的 精神或范圍,因此可以實(shí)現(xiàn)變體。
這里所描述的和/或在附圖中所示的本發(fā)明的實(shí)施例及其變體4叉以示例 方式給出,并不限定本發(fā)明的范圍。除非以其它方式具體說(shuō)明,本發(fā)明的獨(dú) 立方面和部件可以被省略或修改,或可以具有因此被替代的等價(jià)物,或可以 具有還未知的替代品,例如可能在未來(lái)開(kāi)發(fā)的,或例如可能在未來(lái)被發(fā)現(xiàn)是 可接受的替代品的。由于潛在應(yīng)用的范圍很大,且由于本發(fā)明意在適應(yīng)很多 這樣的變體,因此只要保持在所要求的發(fā)明的精神和范圍之內(nèi),本發(fā)明還可 以針對(duì)各種各樣的應(yīng)用而#皮修改。
圖1中的概略圖中描繪獨(dú)立計(jì)算機(jī)的陣列,該計(jì)算機(jī)陣列在此由一般附
圖標(biāo)記IO來(lái)指代。計(jì)算機(jī)陣列IO具有多個(gè)(在示出的例子中是24個(gè))計(jì)
算機(jī)12 (在陣列的例子中有時(shí)也稱作"核"或"節(jié)點(diǎn)")。在示出的例子
中,所有的計(jì)算機(jī)12都位于單個(gè)電路小片14上。根據(jù)本實(shí)施例,各計(jì)算機(jī)
12通常是獨(dú)立運(yùn)行的計(jì)算機(jī),如在下文更詳細(xì)地討論的。計(jì)算機(jī)12由多條
(其數(shù)量將在下文更詳細(xì)地討論)互連數(shù)據(jù)總線16相互連接。在該例子中,
數(shù)據(jù)總線16是雙向異步高速并行數(shù)據(jù)總線,盡管出于該目的而采用其它的 互連手段也在這里的發(fā)明范圍之內(nèi)。在陣列IO的本實(shí)施例中,不僅計(jì)算機(jī)
12之間的數(shù)據(jù)通信是異步的,而且獨(dú)立的計(jì)算機(jī)12內(nèi)部也以異步模式運(yùn)行。 發(fā)明人已經(jīng)發(fā)現(xiàn)這種模式提供了重要的優(yōu)勢(shì)。例如,由于沒(méi)有必要在整個(gè)計(jì) 算機(jī)陣列IO中分發(fā)時(shí)鐘信號(hào),因此可以節(jié)省大量的功率。此外,沒(méi)有必要 分發(fā)時(shí)鐘信號(hào)還消除了可能限制陣列10的大小或產(chǎn)生其它困難的很多時(shí)序 問(wèn)題。而且,由于各計(jì)算機(jī)中沒(méi)有時(shí)鐘在運(yùn)行,因此各計(jì)算機(jī)在不執(zhí)行指令 時(shí)基本不使用功率,所以各獨(dú)立計(jì)算機(jī)異步運(yùn)行的事實(shí)是節(jié)省了大量的功 率。
本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到,電路小片14上還存在附加的部件,為了清 楚起見(jiàn),圖1的視圖中省略了這些部件。這些附加的部件包括微處理器芯片 的電源總線、外部連接焊盤及其它這些普通方面。
計(jì)算機(jī)12e為不處于陣列10邊界的一個(gè)計(jì)算機(jī)12的例子。也就是說(shuō), 計(jì)算機(jī)12e具有四個(gè)互相垂直的相鄰計(jì)算機(jī)12a, 12x, 12c和12d。在下 文中將通過(guò)舉例的方式,使用計(jì)算機(jī)12a-12e的這個(gè)分組,來(lái)更詳細(xì)討論陣 列10的計(jì)算機(jī)12間的通信。如圖1的視圖所見(jiàn),諸如計(jì)算機(jī)12e的內(nèi)部計(jì) 算機(jī)12具有可以通過(guò)總線16與其通信的四個(gè)其他計(jì)算機(jī)12。在以下討論 中,所討論的原理將應(yīng)用于所有計(jì)算機(jī)12,除了只能夠與三個(gè)其他計(jì)算機(jī) 12直接通信的位于陣列10邊界的計(jì)算機(jī)12以及只能夠與兩個(gè)其他計(jì)算機(jī) 12直接通信的拐角計(jì)算機(jī)12之外。
圖2為圖1中的一部分的更詳細(xì)視圖,只示出一些計(jì)算機(jī)12,具體來(lái) 說(shuō)是包括計(jì)算機(jī)12a-12e。圖2的視圖還揭示每條數(shù)據(jù)總線16都具有讀線 18、寫線20和多條(在本例子中為18)數(shù)據(jù)線22。數(shù)據(jù)線22能夠并行同 時(shí)傳輸一個(gè)18位指令字的所有位。應(yīng)當(dāng)注意到,在本發(fā)明的一個(gè)實(shí)施例中, 一些計(jì)算機(jī)12是相鄰計(jì)算機(jī)的鏡像。然而,計(jì)算機(jī)12是全部具有同一方向, 還是作為相鄰計(jì)算機(jī)的鏡像在此并不是目前所描述的實(shí)施例的方面。因此, 為了更好地描述該實(shí)施例,在此將不再進(jìn)一步討論該潛在的復(fù)雜情況。
根據(jù)本發(fā)明實(shí)施例,諸如計(jì)算機(jī)12e的計(jì)算機(jī)12可以將其一條、兩條、 三條或全部四條讀線18設(shè)置為高,從而準(zhǔn)備從相應(yīng)的一個(gè)、兩個(gè)、三個(gè)或 全部四個(gè)相鄰計(jì)算機(jī)12中接收數(shù)據(jù)。相似地,計(jì)算機(jī)12也可以將其一條、 兩條、三條或全部四條寫線設(shè)置為高。
當(dāng)一個(gè)相鄰計(jì)算機(jī)12a、 12x、 12c或12d將其自身與計(jì)算機(jī)12e之間的 寫線20設(shè)置為高時(shí),如果計(jì)算機(jī)12e已經(jīng)將對(duì)應(yīng)讀線18設(shè)置為高,那么字 在相關(guān)聯(lián)的數(shù)據(jù)線22上從那個(gè)計(jì)算機(jī)12a、 12x、 12c或12d傳輸至計(jì)算機(jī) 12e。然后,發(fā)送計(jì)算機(jī)12將釋放寫線20,并且接收計(jì)算機(jī)(在該例子中為 12e)將寫線20和讀線18拉低。后一個(gè)動(dòng)作是向發(fā)送計(jì)算機(jī)12確認(rèn)已經(jīng)接 收到數(shù)據(jù)。注意,上述說(shuō)明并不必然地意在按次序指示事件的順序。在實(shí)際 應(yīng)用中,接收計(jì)算機(jī)可以在發(fā)送計(jì)算機(jī)12釋放(停止拉高)寫線20之前, 試著將寫線20設(shè)置得略低。在這種情況下,發(fā)送計(jì)算機(jī)12—釋放寫線20, 寫線20就會(huì)被接收計(jì)算機(jī)12e拉低。
在本例子中,只有編程錯(cuò)誤才會(huì)使位于一條總線16的對(duì)立端的兩個(gè)計(jì) 算機(jī)12試著將它們之間的讀線18設(shè)置為高。這對(duì)于待讀的兩個(gè)計(jì)算機(jī)并不 都是錯(cuò)誤的。實(shí)際上這是默認(rèn)條件。最終, 一個(gè)計(jì)算機(jī)將退出讀取,而寫。 類似地,如以上所討論的,當(dāng)前并沒(méi)有預(yù)計(jì)到期望有單個(gè)計(jì)算機(jī)12將其四 條寫線20中的一條以上寫線設(shè)置為高。然而,目前預(yù)計(jì)到,將存在以下時(shí) 機(jī)期望將讀線18的不同組合設(shè)置為高,從而使一個(gè)計(jì)算機(jī)12可以處于等 待來(lái)自選中計(jì)算機(jī)12中的首個(gè)計(jì)算機(jī)的數(shù)據(jù)來(lái)將該首個(gè)計(jì)算機(jī)的對(duì)應(yīng)寫線 20設(shè)置為高的等待狀態(tài)。
在以上討論的例子中,計(jì)算機(jī)12e被描述為在相鄰的計(jì)算機(jī)(從計(jì)算機(jī) 12a、 12x、 12c或12d中的一個(gè)以上計(jì)算機(jī)所選擇的)將該相鄰計(jì)算機(jī)的寫 線20設(shè)置為高之前,計(jì)算機(jī)12e將該計(jì)算機(jī)12e的讀線18中的一條以上讀 線設(shè)置為高。然而,該過(guò)程當(dāng)然也可以以相反的次序發(fā)生。例如,如果計(jì)算 機(jī)12e正嘗試向計(jì)算機(jī)12a寫,那么計(jì)算機(jī)12e會(huì)將計(jì)算機(jī)12e和計(jì)算機(jī)12a 之間的寫線20設(shè)置為高。如果計(jì)算機(jī)12e和計(jì)算機(jī)12a之間的讀線18還沒(méi)有被計(jì)算機(jī)12a設(shè)置為高,則計(jì)算機(jī)12e會(huì)簡(jiǎn)單地等待,直到計(jì)算機(jī)12a將 該讀線20設(shè)置為高為止。然后,如上所討論的,當(dāng)寫線18與讀線20的對(duì) 應(yīng)對(duì)均為高時(shí),等待在數(shù)據(jù)線22上進(jìn)行傳輸?shù)臄?shù)據(jù)被傳輸。之后,發(fā)送計(jì) 算機(jī)12e—釋放寫線18,接收計(jì)算機(jī)12(在該例子中是計(jì)算機(jī)12a)就會(huì)將 兩個(gè)計(jì)算機(jī)(在該例子中是12e與12a)之間的讀線18和寫線20都設(shè)置為 低。
每當(dāng)諸如計(jì)算機(jī)12e的計(jì)算機(jī)12預(yù)計(jì)要寫,將其一條寫線20設(shè)置為高 時(shí),該計(jì)算機(jī)將簡(jiǎn)單等待,基本不消耗功率,直到如上所述有適當(dāng)?shù)南噜徲?jì) 算機(jī)12 "請(qǐng)求"該數(shù)據(jù)為止,除非作為待發(fā)送數(shù)據(jù)的目的地的計(jì)算機(jī)12已 經(jīng)將它的讀線18設(shè)置為高,在這種情況下數(shù)據(jù)被立即傳送。類似地,每當(dāng) 計(jì)算機(jī)12預(yù)計(jì)要讀取,將其一條以上讀線18設(shè)置為高時(shí),它將簡(jiǎn)單等待, 基本不消耗功率,直到連接到所選擇的計(jì)算機(jī)12的寫線20變高以在兩個(gè)計(jì) 算機(jī)12之間傳輸指令字為止。
如以上所討論的,可能存在幾種潛在的手段和/或方法來(lái)使計(jì)算機(jī)12如 所述地工作。但是,在本例子中,計(jì)算機(jī)12之所以運(yùn)轉(zhuǎn)得這樣簡(jiǎn)單是因?yàn)?它們通常都是內(nèi)部異步運(yùn)行(除了以所述異步方式相互之間傳輸數(shù)據(jù))。也 就是說(shuō),通常是按順序完成指令。當(dāng)發(fā)生寫指令或讀指令時(shí),直到該指令完 成(或者,也許作為替代地,直到該指令因?yàn)?復(fù)位"或其他原因被異常中 斷時(shí))才會(huì)有進(jìn)一步的動(dòng)作?,F(xiàn)有技術(shù)中,沒(méi)有規(guī)則的時(shí)鐘脈沖。更具體地 說(shuō),只有當(dāng)正在被執(zhí)行的指令既不是讀類型指令也不是寫類型指令時(shí)(假如 讀或?qū)戭愋椭噶罱?jīng)常需要另一個(gè)實(shí)體完成)或當(dāng)該讀或?qū)戭愋筒僮魇聦?shí)上已 經(jīng)完成時(shí),才生成脈沖以完成下一個(gè)指令。
圖3為描繪圖1和圖2的一個(gè)計(jì)算機(jī)12例子的總體布局的框圖。如圖 3的視圖所見(jiàn),各計(jì)算機(jī)12為具有其自己的RAM 24和ROM 26的通用整 裝計(jì)算機(jī)。如先前提到的,計(jì)算機(jī)12有時(shí)也稱為獨(dú)立的"節(jié)點(diǎn)"。在本例 子中,假如計(jì)算機(jī)12被組合在單芯片上。
計(jì)算機(jī)12的其他基本部件為返回堆棧28(包括下文所討論的R寄存器
29)、指令區(qū)域30、算術(shù)邏輯單元("ALU"或"處理器")32、數(shù)據(jù)堆 棧34和用于對(duì)指令進(jìn)行解碼的解碼邏輯段36。本領(lǐng)域技術(shù)人員通常應(yīng)該很 熟悉對(duì)諸如本例子中的計(jì)算機(jī)12的基于堆棧的計(jì)算機(jī)的操作。計(jì)算機(jī)12為 具有數(shù)據(jù)堆棧34和分離的返回堆棧28的雙堆棧計(jì)算機(jī)。
在本發(fā)明的這個(gè)實(shí)施例中,計(jì)算機(jī)12具有與相鄰計(jì)算機(jī)12進(jìn)行通信的 四個(gè)通信端口 38。通信端口 38為三態(tài)驅(qū)動(dòng)器,具有關(guān)閉狀態(tài)、接收狀態(tài)(用 于驅(qū)動(dòng)信號(hào)使其進(jìn)入計(jì)算機(jī)12)和發(fā)送狀態(tài)(用于驅(qū)動(dòng)信號(hào)使其離開(kāi)計(jì)算 機(jī)12)。當(dāng)然,如果特定計(jì)算機(jī)12不在諸如計(jì)算機(jī)12e的例子的陣列(圖 l)內(nèi)部,那么至少出于以上所述的意圖, 一個(gè)以上通信端口 38不會(huì)被那個(gè) 特定計(jì)算機(jī)使用。然而,那些與電路小片14邊緣鄰接的通信端口 38可以有 額外的電路,該電路可設(shè)計(jì)在這類計(jì)算機(jī)12中,或設(shè)計(jì)在計(jì)算機(jī)12的外部 但與計(jì)算機(jī)12相關(guān)聯(lián),以使這類通信端口 38充當(dāng)外部1/0端口 39(圖1 )。 這類外部I/O端口 39的例子包括但不限于USB (通用串行總線)端口、 RS232串行總線端口、并行通信端口、模數(shù)和/或數(shù)模轉(zhuǎn)換端口以及許多其 它可能的變體。無(wú)論為此目的采用了何種類型的額外的或經(jīng)修改的電路,根 據(jù)本發(fā)明目前所描述的實(shí)施例,對(duì)"外部"1/0端口 39關(guān)于處理從中接收的 指令和/或數(shù)據(jù)的操作方法與在此涉及"內(nèi)部"通信端口 38的描述類似。在 圖l中,描繪了具有相關(guān)聯(lián)的接口電路80 (以框圖的形式示出)的"邊緣" 計(jì)算機(jī)12f,該相關(guān)聯(lián)的接口電路80用于通過(guò)外部I/O端口 39與外部裝置 82通信。
在目前所描述的實(shí)施例中,指令區(qū)域30包括若干寄存器40,在本例子 中,寄存器40包括A寄存器40a、 B寄存器40b和P寄存器40c。在本例子 中,A寄存器40a為全18位寄存器,而B(niǎo)寄存器40b和P寄存器40c為9
位寄存器。
盡管該發(fā)明并不限于該例子,但是本計(jì)算機(jī)12被實(shí)施為執(zhí)行本機(jī)Forth 語(yǔ)言指令。如熟悉Forth計(jì)算機(jī)語(yǔ)言的人將認(rèn)知的,復(fù)雜Forth指令,即通 常所說(shuō)的Forth "字"是根據(jù)設(shè)計(jì)在計(jì)算機(jī)中的本機(jī)處理器指令所構(gòu)建的。
在其它語(yǔ)言中,這可能為通常所說(shuō)的"庫(kù)"。如下文將更詳細(xì)描述的,計(jì)算
機(jī)12每次從RAM24、 ROM26或直接從一條數(shù)據(jù)總線16 (圖2 )讀取十八 位。然而,由于Forth中的大多數(shù)指令(即通常所說(shuō)的無(wú)操作數(shù)指令)直接 從堆棧28和34中得到它們的操作數(shù),因此它們的長(zhǎng)度通常僅為5位,使得 在單個(gè)十八位指令字中可以包含多達(dá)四條指令,條件是該組指令的最后一條 指令選自僅需三位的指令的有界集。(在所描述的實(shí)施例中,假設(shè)最末位置 中的指令的兩個(gè)最低有效位為"00"。)在圖3的視圖中以框圖的形式描繪 的還有時(shí)間片定序器42。
在本發(fā)明的該實(shí)施例中,數(shù)字堆棧34是針對(duì)由ALU 32操控的參數(shù)的 后進(jìn)先出型堆棧,返回堆棧28是針對(duì)由CALL和RETURN指令使用的嵌套 返回地址的后進(jìn)先出型堆棧。如此后更詳細(xì)描述的,返回堆棧28還可以由 PUSH (壓入)、POP (彈出)和NEXT (下一條)指令使用。像多數(shù)現(xiàn)有 技術(shù)的計(jì)算機(jī)一樣,數(shù)據(jù)堆棧34和返回堆棧28并不是堆棧指針可訪問(wèn)的存 儲(chǔ)器中的陣列。更確切地說(shuō),堆棧34和28是寄存器陣列。數(shù)據(jù)堆棧34中 頂部的兩個(gè)寄存器是T寄存器44和S寄存器46。數(shù)據(jù)堆棧34的剩余部分 具有環(huán)形寄存器陣列34a,該環(huán)形寄存器陣列具有八個(gè)額外的硬件寄存器, 在該例子中這些硬件寄存器編號(hào)為S2至S9。在任意時(shí)刻,環(huán)形寄存器陣列 34a中八個(gè)寄存器中的一個(gè)寄存器被選擇為位于S寄存器46下面的寄存器。 移位寄存器用于選擇堆棧寄存器作為S下面的寄存器,移位寄存器中的值不 能通過(guò)軟件來(lái)讀或?qū)?。類似地,返回堆?8的頂部位置為專用R寄存器29, 而返回堆棧28的剩余部分具有環(huán)形寄存器陣列28a,該環(huán)形寄存器陣列具有 八個(gè)額外的硬件寄存器(在圖中沒(méi)有具體示出),在該例子中這些硬件寄存 器編號(hào)為R,至Rn。
在本發(fā)明的該實(shí)施例中,沒(méi)有對(duì)堆棧溢出或下溢狀態(tài)的硬件檢測(cè)。通常, 現(xiàn)有技術(shù)的處理器使用堆棧指針及存儲(chǔ)器管理等,從而在堆棧指針超出分配 給該堆棧的存儲(chǔ)器范圍時(shí),可以標(biāo)記為錯(cuò)誤狀態(tài)。這是因?yàn)?,假如堆棧位?存儲(chǔ)器中,那么溢出或下溢會(huì)將蓋寫堆棧項(xiàng),或?qū)⒍褩m?xiàng)用作某些并不意在
作為堆棧一部分的內(nèi)容。然而,由于本實(shí)施例在堆棧28和34的底部有環(huán)形 陣列28a和34a,因此堆棧28和34不會(huì)從堆棧區(qū)域中溢出或下溢。相反, 環(huán)形陣列28a和34a只環(huán)繞寄存器的環(huán)形陣列。因?yàn)槎褩?8和34具有有限 的深度,因此將任意內(nèi)容壓入堆棧28或34的頂部意味著底部的一些內(nèi)容被 蓋寫。向數(shù)據(jù)堆棧34壓入多于十項(xiàng)或向返回堆棧28壓入多于十三項(xiàng)必須在 知道這樣做會(huì)導(dǎo)致堆棧28或34底部的項(xiàng)被蓋寫的情況下才能進(jìn)行。軟件的 責(zé)任在于留意堆棧28和34中項(xiàng)的數(shù)目,并且不要試著將比相應(yīng)堆棧28和 34所能容納的項(xiàng)更多的項(xiàng)放入堆棧28和34。硬件不會(huì)一全測(cè)堆棧底部的項(xiàng)的 蓋寫,也不會(huì)將堆棧底部的項(xiàng)的蓋寫標(biāo)記為錯(cuò)誤。然而,應(yīng)該注意軟件可以 以幾種方式來(lái)利用堆棧28和34底部的環(huán)形陣列28a和34a的優(yōu)點(diǎn)。^U乍為 一個(gè)例子,軟件簡(jiǎn)單地假設(shè)堆棧28或34在任意時(shí)刻為"空"。并不需要從 堆棧中清除舊的項(xiàng),因?yàn)榕f的項(xiàng)會(huì)被壓向底部,在底部,當(dāng)堆棧滿時(shí),這些 舊的項(xiàng)會(huì)丟失。所以,對(duì)于假設(shè)堆棧為空的程序,不存在需要初始化的內(nèi)容。
除這里先前所討論的寄存器外,指令區(qū)域30還具有用于貯存目前正在 使用的指令字48的18位指令寄存器30,以及針對(duì)在目前正在執(zhí)行的特定 指令中的指令的額外5位操作碼總線30b。
圖4為指令字48的概略圖。(應(yīng)該注意指令字48實(shí)際上可以包含指令、 數(shù)據(jù),或包含指令和數(shù)據(jù)的一些組合。)指令字48由十八位50組成。作為 二進(jìn)制計(jì)算機(jī),各位50將為"1"或"0"。如這里先前所討論的,十八位 寬的指令字48可以包含位于四個(gè)時(shí)間片54中的多達(dá)四條指令52,該四個(gè) 時(shí)間片54被稱為時(shí)間片零54a、時(shí)間片一 54b 、時(shí)間片二 54c和時(shí)間片三54d。 在該發(fā)明的本實(shí)施例中,十八位指令字48總是作為整體被讀取。因此,由 于指令字48中總是存在具有多達(dá)四條指令的潛能,因此在計(jì)算機(jī)12的指令 集中包括no-op (無(wú)操作)指令以提供給沒(méi)有必要或甚至是不期望使用所有 可用的時(shí)間片54的情況。應(yīng)該注意,根據(jù)該發(fā)明的一個(gè)特定實(shí)施例,在間 隔的時(shí)間片(具體來(lái)說(shuō),時(shí)間片一54b和時(shí)間片三54c)中位50的極性(與 有效低相比較是有效高)是相反的。然而,這不是目前所描述的實(shí)施例的必
要方面,因此,為了更好地解釋該實(shí)施例,在下面的討論中也避免這種潛在 的復(fù)雜情況。
圖5為圖3的時(shí)間片定序器42的示意圖。從圖5的視圖中可以看出, 時(shí)間片定序器42具有排列成環(huán)的多個(gè)(在該例子中是十四個(gè))反相器56和 一個(gè)與非門58,使得信號(hào)在經(jīng)過(guò)該十四個(gè)反相器56和與非門58時(shí)^皮反相 奇數(shù)次。當(dāng)或門60的兩個(gè)輸入中的任一個(gè)輸入變?yōu)楦邥r(shí),在時(shí)間片定序器 42中發(fā)起一信號(hào)。第一或門輸入端62得自正在被執(zhí)行的指令52的位i4 66 (圖4)。如果i4位為高,則該特定指令52是ALU指令,且i4位66為"1"。 當(dāng)i4位為"1"時(shí),則第一或門輸入端62為高,則時(shí)間片定序器42被觸發(fā), 以發(fā)起使下一條指令52被執(zhí)行的脈沖。
當(dāng)?shù)谝换蜷T輸入端62變高或第二或門輸入端64變高(如將在下文中討 論的)而觸發(fā)時(shí)間片定序器42時(shí),信號(hào)繞時(shí)間片定序器42移動(dòng)兩圈,每次 在時(shí)間片定序器輸出端68產(chǎn)生輸出。該信號(hào)第一次通過(guò)時(shí)間片定序器輸出 端68時(shí),時(shí)間片定序器輸出端68的輸出為低,而第二次時(shí)為高。來(lái)自時(shí)間 片定序器輸出端68的相對(duì)寬的輸出被提供給脈沖發(fā)生器70 (以框圖的形式 示出),該脈沖發(fā)生器70產(chǎn)生窄時(shí)序脈沖作為輸出。本領(lǐng)域技術(shù)人員應(yīng)該 認(rèn)識(shí)到窄時(shí)序脈沖是為準(zhǔn)確發(fā)起計(jì)算機(jī)12的操作所期望的。
當(dāng)正在被執(zhí)行的特定指令52為讀指令或?qū)懼噶罨蛉魏纹渌噶顣r(shí),其 中所述任何其它指令不期望正在被執(zhí)行的指令52順序地觸發(fā)下一條指令52 的執(zhí)行,貝'Ji4位66為"0"(低),并且因此第一或門輸入端62也為低。 本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到,在諸如計(jì)算機(jī)12的器件中,事件的時(shí)序通常很 關(guān)^t,而且無(wú)一例外。本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到,在^r測(cè)時(shí)間片定序器42 后,來(lái)自或門60的輸出必須保持為高,直到該信號(hào)循環(huán)通過(guò)與非門58以便 發(fā)起環(huán)的第二 "圈"之后為止。之后,在第二 "圈"期間,來(lái)自或門60的 輸出會(huì)變低,以便阻止電路的多余繼續(xù)振蕩。
才艮據(jù)以上討論可以認(rèn)知到,假設(shè)下文會(huì)討論的第二或門輸入端66不為 高,則當(dāng)i4位66為"0"時(shí),時(shí)間片定序器42不會(huì)被觸發(fā)。
如以上所討論的,各指令52的i4位66是根據(jù)各指令52是否為讀類型 指令或?qū)戭愋椭噶顏?lái)設(shè)置的,這與不需要輸入或輸出的指令相反。指令52 的剩余位50為該指令提供特定操作碼的剩余部分。在為讀類型指令或?qū)戭?型指令的情況下, 一個(gè)以上位可用于指示讀取數(shù)據(jù)的該特定計(jì)算機(jī)12的地 址或?qū)?shù)據(jù)寫入的該特定計(jì)算機(jī)12的地址。在該發(fā)明的本例子中,待寫入 的數(shù)據(jù)總是來(lái)自T寄存器44 (數(shù)據(jù)堆棧34的頂部),然而數(shù)據(jù)可以被選擇 性地讀入T寄存器44或可以執(zhí)行該數(shù)據(jù)的指令區(qū)域30。也就是說(shuō),在該發(fā) 明的該特定實(shí)施例中,由于可以以在此所述的方式來(lái)傳達(dá)數(shù)據(jù)或指令,因此 盡管不是必需的,也可以從數(shù)據(jù)總線16直接執(zhí)行指令。
一個(gè)以上位50將用來(lái)指示哪個(gè)端口 38,如果存在的話,將被設(shè)置為讀 或?qū)憽.?dāng)前的操作可以通過(guò)利用一個(gè)以上位指代諸如A寄存器40a、 B寄存 器40b等的寄存器40來(lái)可選地完成。在這種例子中,將具有與各端口 38(以 及計(jì)算機(jī)12可嘗試與其通信的任何其它潛在實(shí)體,例如存儲(chǔ)器(RAM 24 或ROM26)、外部通信端口等)相對(duì)應(yīng)的位的數(shù)據(jù)預(yù)載入所指代的寄存器 40。例如,在特定寄存器40中,四位中的各位可以對(duì)應(yīng)于上端口 38a、右端 口 38b、左端口 38c或下端口 38d中的各端口。在這些位的位置中的任意位 置存在"1"的情況下,通過(guò)對(duì)應(yīng)的端口 38將通信設(shè)置為繼續(xù)進(jìn)行。如這里 先前所討論的,在該發(fā)明的本實(shí)施例中,預(yù)計(jì)到讀操作碼可能在單一指令中 設(shè)置多于一個(gè)端口 38用于通信,盡管寫操作碼在單一指令中設(shè)置多于一個(gè) 端口 38用于通信也是可能的,但并沒(méi)有被預(yù)計(jì)到。
緊接著的例子采用計(jì)算機(jī)12e嘗試向計(jì)算機(jī)12c寫的通信,盡管該例子 適用于在任意相鄰計(jì)算機(jī)12之間的通信。當(dāng)在寫計(jì)算機(jī)12e中執(zhí)行寫指令 時(shí),選中的寫線20 (在該例子中,是計(jì)算機(jī)12e與12c之間的寫線20)被 設(shè)置為高。如果對(duì)應(yīng)的讀線18已經(jīng)為高,則通過(guò)所選中的通信端口 38馬上 將數(shù)據(jù)從選中的位置發(fā)送出去。作為替換地,如果對(duì)應(yīng)的讀線18還不為高 時(shí),則計(jì)算機(jī)12e簡(jiǎn)單地停止操作,直到對(duì)應(yīng)的讀線確實(shí)變高為止。這里先 前已經(jīng)討論過(guò)當(dāng)存在讀類型指令或?qū)戭愋椭噶顣r(shí)停止計(jì)算機(jī)12a (或更準(zhǔn)確
地說(shuō)是禁止計(jì)算機(jī)12a的進(jìn)一步操作)的機(jī)制。簡(jiǎn)言之,指令52的操作碼 在位的位置i4 66處為'0,,因此或門60的第一或門輸入端62為低,并且 時(shí)間片定序器42不會(huì)被觸發(fā)而生成使能脈沖。
關(guān)于如何在讀類型指令或?qū)戭愋椭噶钔瓿蓵r(shí)恢復(fù)計(jì)算機(jī)12e的操作,機(jī) 制如下當(dāng)計(jì)算機(jī)12e和12c之間的讀線18和對(duì)應(yīng)寫線20均為高時(shí),則兩 條線18和20分別被將相應(yīng)線保持為高的相應(yīng)計(jì)算機(jī)12中的各計(jì)算機(jī)12釋 放。(在該例子中,發(fā)送計(jì)算機(jī)12e將寫線18保持為高,而接收計(jì)算機(jī)12c 會(huì)將讀線20保持為高)。然后,接收計(jì)算機(jī)12c將兩條線18和20拉低。 在實(shí)際應(yīng)用中,接收計(jì)算機(jī)12c可以在發(fā)送計(jì)算機(jī)12e釋放寫線18之前嘗 試將線18和20拉低。然而,由于線18和20被拉高,且只能微弱地保持(鎖 存)為低,因此將線18或20拉低的任何嘗試實(shí)際上都不會(huì)成功,直到線 18或20被將其保持為高的計(jì)算機(jī)12釋放為止。
當(dāng)數(shù)據(jù)總線16中的兩條線18和20均被拉低時(shí),則這是"確認(rèn)"條件。 計(jì)算機(jī)12e和12c中的各計(jì)算機(jī)在接收該確認(rèn)條件之后,將其自身的確認(rèn)線 72設(shè)置為高。如從圖5的視圖中可以看出的,確認(rèn)線72提供給第二或門輸 入端64。由于到任意或門60輸入端62或64的輸入都會(huì)使或門60的輸出 變高,所以這將以這里先前所述的方式來(lái)發(fā)起時(shí)間片定序器42的操作,使 得將執(zhí)行指令字48的下一個(gè)時(shí)間片54中的指令52。確認(rèn)線72保持為高, 直到下一條指令52^l解碼為止,從而防止偽地址到達(dá)地址總線。
當(dāng)正在被執(zhí)行的指令52位于指令字48的時(shí)間片三位置時(shí),無(wú)論如何, 計(jì)算機(jī)12將提取下一個(gè)等待的十八位指令字48,當(dāng)然除非位i4 66為'0,, 或者除非時(shí)間片三中的指令是"next(下一條)"指令,這將在下文更詳細(xì) 地討論。
在實(shí)際應(yīng)用中,本創(chuàng)造性機(jī)制包括用于"預(yù)提取"指令的方法和裝置, 使得可以在指令字48中所有指令52的執(zhí)行結(jié)束之前開(kāi)始該提取。然而對(duì)于 目前所描述的實(shí)施例來(lái)說(shuō)這也不是必要方面。
已經(jīng)詳細(xì)描述了計(jì)算機(jī)12e向計(jì)算機(jī)12c寫的以上例子。如根據(jù)以上討
論可以認(rèn)知的,無(wú)論計(jì)算機(jī)12e首先嘗試向計(jì)算才幾12c寫還是計(jì)算才幾12c首 先嘗試從計(jì)算機(jī)12e讀取,其操作基本相同。操作在計(jì)算機(jī)12e和12c都就 緒之后才會(huì)完成,而且無(wú)論計(jì)算機(jī)12e還是計(jì)算機(jī)12c首先就緒,該首先就 緒的計(jì)算機(jī)簡(jiǎn)單地"進(jìn)入睡眠",直到另一個(gè)計(jì)算機(jī)12e或12c完成傳輸為 止。實(shí)際上,考慮上述處理的另一種方式是,當(dāng)寫計(jì)算機(jī)12e和接收計(jì)算機(jī) 12c分別執(zhí)行寫指令和讀指令時(shí),它們均進(jìn)入睡眠,但是當(dāng)讀線18和寫線 20都為高時(shí),最后進(jìn)入事務(wù)處理的計(jì)算機(jī)幾乎瞬時(shí)再度醒來(lái),而發(fā)起事務(wù) 處理的首個(gè)計(jì)算機(jī)12會(huì)幾乎無(wú)限期地保持睡眠,直到第二計(jì)算機(jī)i2做好完 成處理的準(zhǔn)備為止。
本發(fā)明人相信使能器件之間的有效異步通信的關(guān)鍵特征是某種確認(rèn)信 號(hào)或條件。在現(xiàn)有技術(shù)中,器件之間的大多數(shù)通信是時(shí)鐘控制的,且發(fā)送器 件沒(méi)有得知接收器件已準(zhǔn)確接收數(shù)據(jù)的直接方式。諸如校驗(yàn)和操作的方法可 用來(lái)嘗試保證數(shù)據(jù)的正確接收,但是發(fā)送器件沒(méi)有已完成操作的直接指示。 如這里所述的本創(chuàng)造性方法提供必要的確認(rèn)條件,該條件允許器件之間的異 步通信,或至少使器件之間的異步通信變得實(shí)用。此外,確認(rèn)條件還可能使 一個(gè)以上器件"進(jìn)入睡眠,,,直到確認(rèn)條件發(fā)生才會(huì)醒來(lái)。當(dāng)然,也可以通 過(guò)在計(jì)算機(jī)12之間發(fā)送的單獨(dú)信號(hào)(通過(guò)互連的數(shù)據(jù)總線16或通過(guò)單獨(dú)的 信號(hào)線)來(lái)在計(jì)算機(jī)12之間傳達(dá)確認(rèn)條件,而且這類確認(rèn)條件會(huì)在本發(fā)明 該方面的范圍之內(nèi)。然而,根據(jù)這里描述的本發(fā)明的實(shí)施例,可以i^知到, 因?yàn)橛糜诖_認(rèn)的方法不需要在實(shí)際上影響通信的任何額外的信號(hào)、時(shí)鐘周 期、定時(shí)脈沖或除上述之外的任何這類資源,因此這里包括更多的經(jīng)濟(jì)節(jié)省。
由于在指令字48中可以包括四條指令52,且由于根據(jù)本實(shí)施例,整個(gè) 指令字48可以在計(jì)算機(jī)12之間一次傳達(dá),所以這給出在一次操作中傳送極 小程序的理想機(jī)會(huì)。例如,多數(shù)小的"For/Next (由于/下一條)"循環(huán)可以 在單一指令字48中執(zhí)行。圖6為微循環(huán)100的概略圖。微循環(huán)100不像其 它現(xiàn)有技術(shù)的循環(huán),微循環(huán)100具有FOR指令102和NEXT指令104。由 于指令字48 (圖4 )包含多達(dá)四條指令52,指令字48可以在單一指令字48中包括三條操作指令106。操作指令106實(shí)際上可以是程序員可能想包括在 微循環(huán)100中的任意可用指令??梢詮囊粋€(gè)計(jì)算機(jī)12傳送到另一計(jì)算機(jī)12 的微循環(huán)100的典型例子可以是用于從第二計(jì)算機(jī)12的RAM 24讀取或向 第二計(jì)算機(jī)12的RAM24寫的一組指令,從而使第二計(jì)算機(jī)12可以"借用" 可用的RAM 24的容量。
FOR指令102將表示期望迭代次數(shù)的值壓入返回堆棧28。也就是說(shuō), 位于數(shù)據(jù)堆棧34頂部的T寄存器44中的值被壓入返回堆棧28的R寄存器 29。雖然FOR指令102經(jīng)常位于指令字48的時(shí)間片三54d中,但事實(shí)上 FOR指令102可以位于任意時(shí)間片54中。如果FOR指令102不位于時(shí)間片 三54d,那么指令字48中的剩余指令52將在繼續(xù)農(nóng)t循環(huán)100之前^皮執(zhí)行, 微循環(huán)100 —般是下一個(gè)被載入的指令字48。
根據(jù)目前所描述的本發(fā)明實(shí)施例,在圖6的視圖中所描繪的NEXT指令 104是特定類型的NEXT指令104。這是因?yàn)镹EXT指令104位于時(shí)間片三 54d中(圖4)。根據(jù)本發(fā)明實(shí)施例,假設(shè)緊接著"普通"NEXT指令(未 示出)的特定指令字40中的所有數(shù)據(jù)是地址(for/next (由于/下一條)循環(huán) 開(kāi)始的地址)。無(wú)論NEXT指令104位于四個(gè)時(shí)間片54中的哪個(gè)時(shí)間片(明 顯例外的情況是如果位于時(shí)間片三54d,則采用頭兩個(gè)數(shù)字,而不是被明 確地寫出,如這里先前所討論的),其操作碼是一樣的。然而,由于當(dāng)NEXT 指令104位于時(shí)間片三54d時(shí),可以沒(méi)有地址數(shù)據(jù)緊接著NEXT指令104, 因此也可以假設(shè)時(shí)間片三54d中的NEXT指令104是MICRO-NEXT (微下 一條)指令104a。 UNEXT操作碼不同于NEXT操作碼。UNEXT操作碼可 以位于任意時(shí)間片中。MICRO-NEXT指令104a將其所處的同一指令字48 的時(shí)間片零54a中的首條指令52的地址用作MICRO-NEXT指令104a的返 回地址。MICRO-NEXT指令104a還從R寄存器29中獲得該值(該值最初 由FOR指令102壓入R寄存器29),使該值遞增1后,再返回R寄存器 29中。當(dāng)R寄存器29中的該值達(dá)到預(yù)定值(例如0 )時(shí),貝'J MICRO-NEXT 指令將載入下一個(gè)指令字48,并如這里先前所討論的那樣繼續(xù)下去。然而,當(dāng)MICRO-NEXT指令104a從R寄存器29中讀取大于預(yù)定值的值時(shí), MICRO-NEXT指令104a將在其自身指令字48的時(shí)間片零54a處重新開(kāi)始 操作,并執(zhí)行位于同一指令字48所包含的時(shí)間片零到時(shí)間片三的三條指令 52。也就是說(shuō),在本發(fā)明的該實(shí)施例中,MICRO-NEXT指令104a總是會(huì)執(zhí) 行三條操作指令106。因?yàn)樵谀承┣闆r下,可能并不期望使用所有三條潛在 的可用指令52,所以在需要的時(shí)候"no-op"指令可用來(lái)填充時(shí)間片54的一 個(gè)或兩個(gè)時(shí)間片。
應(yīng)該注意可以在單一計(jì)算機(jī)12中完整地使用微循環(huán)100。實(shí)際上,整 個(gè)可用機(jī)器語(yǔ)言指令集都可用作操作指令106,且微循環(huán)的應(yīng)用和使用僅受 限于程序員的想象。然而,當(dāng)執(zhí)行單一指令字48中的整個(gè)微循環(huán)100的能 力與允許計(jì)算機(jī)12實(shí)際上直接從數(shù)據(jù)總線16向鄰居計(jì)算機(jī)12發(fā)送指令字 48以在鄰居計(jì)算機(jī)12中執(zhí)行指令52的能力相結(jié)合時(shí),這就為允許計(jì)算機(jī) 12使用其鄰居的資源提供了強(qiáng)有力的工具。
如這里所描述的,包含在單一指令字48中的所有小微循環(huán)100可以在 計(jì)算機(jī)12之間進(jìn)行傳達(dá),如這里所描述的,且該;微循環(huán)100可以/人4妻收計(jì) 算機(jī)12的通信端口 38被直接執(zhí)行,正如指令字48中所包含的任意其它指 令集一樣。盡管這類"微循環(huán)"100有很多用處,但典型的應(yīng)用是當(dāng)一個(gè)計(jì) 算機(jī)12想將一些數(shù)據(jù)貯存到鄰居計(jì)算機(jī)12的存儲(chǔ)器中的情況。舉例來(lái)說(shuō), 該計(jì)算機(jī)12首先向那個(gè)鄰居計(jì)算機(jī)發(fā)送指令,告知該鄰居計(jì)算機(jī)將到來(lái)的 數(shù)據(jù)字貯存到特定的存儲(chǔ)器地址中,然后遞增該地址,然后重復(fù)給定次數(shù)的 迭代(待傳送的數(shù)據(jù)字?jǐn)?shù)目)。為了讀回?cái)?shù)據(jù),第一計(jì)算機(jī)可以僅僅指令第 二計(jì)算機(jī)(這里用于貯存的計(jì)算機(jī))使用類似的微循環(huán)將所貯存的數(shù)據(jù)寫回 第一計(jì)算機(jī)。
通過(guò)使用與這里描述的直接執(zhí)行方面相結(jié)合的微循環(huán)100結(jié)構(gòu),計(jì)算機(jī) 12可以在數(shù)據(jù)貯存需要超過(guò)建立在各獨(dú)立計(jì)算機(jī)12中的相對(duì)較小的容量 時(shí),使用否則正在休息的鄰居計(jì)算機(jī)12來(lái)貯存超額的數(shù)據(jù)。盡管在數(shù)據(jù)貯 存方面描述了該例子,但是相同的技術(shù)同樣可用于允許計(jì)算機(jī)12使其鄰居
共享其計(jì)算資源一通過(guò)創(chuàng)建使其它計(jì)算機(jī)12進(jìn)行某些操作、貯存結(jié)果并重 復(fù)給定次數(shù)的微循環(huán)100。如可以認(rèn)知到的,可以使用本創(chuàng)造性微循環(huán)100 結(jié)構(gòu)的方法的個(gè)數(shù)幾乎是無(wú)限的。
如這里先前所提及的,在目前所描述的本發(fā)明實(shí)施例中,數(shù)據(jù)或指令都
可以以這里所描述的方式來(lái)傳達(dá),所以指令可以實(shí)際上從數(shù)據(jù)總線16直接 執(zhí)行。也就是說(shuō),不需要將指令存儲(chǔ)到RAM24中然后在執(zhí)行之前重新調(diào)用 這些指令。相反,在該實(shí)施例中,在通信端口 38上接收的指令字48不會(huì)以 本質(zhì)上不同于指令字48從RAM 24或ROM 26中被重新調(diào)用的情況被對(duì)待。 盡管在這里關(guān)于計(jì)算機(jī)12的所描述操作的在前討論中揭示了沒(méi)有不同,但 是對(duì)如何提取及使用指令字48的以下更具體的討論會(huì)對(duì)理解實(shí)施例有所幫 助。
一種可用的機(jī)器語(yǔ)言指令是FETCH (提取)指令。FETCH指令使用A 寄存器40a中的地址來(lái)確定從哪里提取18位字。當(dāng)然,程序必須已經(jīng)在A 寄存器40a中提供放置了正確的地址。正如這里先前所討論的,A寄存器40a 是18位寄存器,從而有足夠范圍的可用地址,使可以發(fā)生提取的任意潛在 源都可以被區(qū)分。也就是說(shuō),有分配給ROM的地址范圍,有分配給RAM 的不同的地址范圍,還有針對(duì)各端口 38和外部I/O端口 39的具體地址。 FETCH指令總是將其提取的18位放置在T寄存器44中。
相反,如這里先前所討論的,可執(zhí)行指令(與數(shù)據(jù)相反)暫時(shí)存儲(chǔ)在指 令寄存器30a中。不存在將18位指令字48 "提取"到指令寄存器30a中的 具體命令。相反,當(dāng)指令寄存器30a中沒(méi)有更多可執(zhí)行指令時(shí),則計(jì)算機(jī)會(huì) 自動(dòng)提取"下一條,,指令字48。"下一條"指令字所位于的地址由"程序 計(jì)數(shù)器"(P寄存器40c)來(lái)確定。如在從RAM 24或ROM 26提取一指令 字48序列的情況下的,P寄存器40c經(jīng)常自動(dòng)遞增。然而,對(duì)該一般規(guī)則 有一些例外。舉例來(lái)說(shuō),JUMP或CALL指令會(huì)使P寄存器40在JUMP或 CLAA指令之后,被載入以由目前所載入的指令字48的剩余部分中的數(shù)據(jù) 指代的地址,而不是被遞增。然后,當(dāng)P寄存器40c被載入以與一個(gè)以上端
口 38相對(duì)應(yīng)的地址時(shí),下一個(gè)指令字48將從端口 38被載入指令寄存器30a。 當(dāng)剛從端口 38將指令字48取回至指令寄存器30a時(shí),P寄存器40c也不會(huì) 遞增。更確切地說(shuō),P寄存器40c會(huì)繼續(xù)保持相同的端口地址,直到執(zhí)行具 體的JUMP或CALL指令來(lái)改變P寄存器40c為止。也就是說(shuō), 一旦計(jì)算機(jī) 12被告知從端口 38查找其下一條指令,則計(jì)算機(jī)12將繼續(xù)從相同的端口 38 (多個(gè)端口 38)查找指令,直到該計(jì)算機(jī)12被告知查找其它位置為止, 例如回到存儲(chǔ)器(RAM 24或ROM 26 )來(lái)查找該計(jì)算機(jī)12的下一個(gè)指令字 48。跳轉(zhuǎn)不會(huì)載入P寄存器。跳轉(zhuǎn)將它們的地址放置在地址總線上,在指令 完成時(shí)該地址會(huì)被遞增并被貯存到P中。
如以上所述提到的,當(dāng)目前的指令字48中沒(méi)有可執(zhí)行指令時(shí),計(jì)算機(jī) 12知道所提取的接下來(lái)十八位將被放置在指令寄存器30a中。默認(rèn)地,在 JUMP或CALL指令之后(或也在某些在此不再具體討論的其它指令之后) 目前的指令字48中沒(méi)有可執(zhí)行指令,因?yàn)橥ㄟ^(guò)定義,緊接著JUMP或CALL 指令的18位指令字的剩余部分專用于JUMP或CALL指令所指的地址。聲 明上迷定義的很多方式中,另一種方式是聲明上述過(guò)程是唯一的,所述很多 方式包括但不限于JUMP或CALL指令可以可選地到達(dá)端口 38,而不僅是 到達(dá)存儲(chǔ)器地址等的事實(shí)。
應(yīng)該記住,如這里先前所討論的,計(jì)算機(jī)12可以從一個(gè)端口 38或從一 組端口 38中的任一個(gè)端口查找該計(jì)算機(jī)12的下一條指令。所以,提供了與 端口 38的各種組合相對(duì)應(yīng)的地址。例如,當(dāng)計(jì)算機(jī)被告知/人一組端口 38提 取指令時(shí),則該計(jì)算機(jī)會(huì)從選中端口 38中的任意一個(gè)端口接受首個(gè)可用的 指令字48。如果尚沒(méi)有鄰居計(jì)算機(jī)12嘗試向這些端口 38中的任意端口寫, 那么正在被討論的計(jì)算機(jī)12會(huì)"進(jìn)入睡眠",如以上詳細(xì)描述的,直到鄰 居的確向選中的端口 38寫為止。
在這類計(jì)算機(jī)中,期望將數(shù)據(jù)載入芯片10上的獨(dú)立計(jì)算機(jī)12。通過(guò)將 數(shù)據(jù)尋址到獨(dú)立的計(jì)算機(jī)不容易做到,因?yàn)樵谶@樣的陣列中不需要獨(dú)立的地 址。類似地,期望將指令載入獨(dú)立的計(jì)算機(jī)12,并執(zhí)行所述指令。為實(shí)現(xiàn)
這些目的所設(shè)計(jì)的一種方法將在此稱為爬蟲(chóng)。對(duì)該方法的審查會(huì)將本領(lǐng)域的 普通技術(shù)人員帶領(lǐng)到 一些相似的方法上。示出的爬蟲(chóng)僅僅是如何實(shí)現(xiàn)該方法 的例子,而并不意在表示本發(fā)明局限于所述爬蟲(chóng)的具體特性。例如,在機(jī)器
Forth對(duì)象代碼的上下文中描述了這些具體特征,但并不限于使用Forth語(yǔ) 言。在說(shuō)明書中使用機(jī)器Forth,不僅僅是因?yàn)榘l(fā)明人已開(kāi)發(fā)這種實(shí)現(xiàn)方式, 還因?yàn)闄C(jī)器Forth比標(biāo)準(zhǔn)對(duì)象代碼清晰很多,并能清楚地啟示其操作。該發(fā) 明可以以傳統(tǒng)對(duì)象代碼來(lái)操作。另外該例子被示為在特定計(jì)算機(jī)上執(zhí)行指 令,必須理解的是該方法可以用于將任意數(shù)據(jù)或指令載入包括若干個(gè)計(jì)算機(jī) 的任意計(jì)算機(jī)。
圖7以機(jī)器Forth描述用于在這種情況下將數(shù)據(jù)或指令載入期望計(jì)算機(jī) 12的方法。該方法被稱為爬蟲(chóng)。爬蟲(chóng)201在節(jié)點(diǎn)(計(jì)算機(jī)12)之間移動(dòng)。 在各節(jié)點(diǎn)中爬蟲(chóng)201被載入存儲(chǔ)器,并且在其穿過(guò)計(jì)算機(jī)12時(shí)不會(huì)變小。 一種作為替換的爬蟲(chóng)可以直接穿過(guò)計(jì)算機(jī)12,而不需載入,并且長(zhǎng)度可變。 創(chuàng)建爬蟲(chóng)的程序員可以通過(guò)指定方向來(lái)選擇執(zhí)行的計(jì)算機(jī),或選擇載入的計(jì) 算機(jī)。爬蟲(chóng)201在計(jì)算機(jī)12d上執(zhí)行壓力測(cè)試。
在如圖7所示的爬蟲(chóng)201中,第一個(gè)字使數(shù)被解釋為十進(jìn)制的,并在地 址45處開(kāi)始。第二個(gè)字將操作的名稱聲明為爬行,并指定數(shù)據(jù)堆棧34(t) 為方向,返回堆棧(r) 28為下一路線。第三個(gè)字b!指向由爬蟲(chóng)進(jìn)入的地 址63指代的端口 39 (圖1 ) , 63被置入RAM 24 (圖3 ),且⑥p+被置入 該時(shí)間片以提取63作為直接量。PUSH指令將小于RAM 24的大小的存儲(chǔ) 空間壓為隨后的NEXT指令的上下文。第四個(gè)字復(fù)制數(shù)據(jù)堆棧34中程序計(jì) 數(shù)器所指向的字。在這種情況下,程序計(jì)數(shù)器指向被視為直接量的dup xor a!。該動(dòng)作會(huì)將目標(biāo)節(jié)點(diǎn)中的寄存器清零。第五個(gè)字制作指令字的兩份副本, 并兩次將其發(fā)送至鄰居端口。第一次指令字喚醒鄰居端口,并在鄰居端口處 于四端口讀取模式時(shí)被丟棄,因此無(wú)法確定該字的原始內(nèi)容。當(dāng)?shù)诙伟l(fā)送
該字時(shí),鄰居端口能夠確定原始內(nèi)容,并跳轉(zhuǎn)到該端口,以開(kāi)始執(zhí)行所發(fā)送 的指令。該dupxor指令用0來(lái)替換堆棧的頂部項(xiàng)。注意爬蟲(chóng)被允許使用源
節(jié)點(diǎn)和目的節(jié)點(diǎn)兩者的所有資源,因此任何在前的堆棧內(nèi)容并不重要。第六 個(gè)字將@ +指令置入A寄存器。該②p+指令會(huì)堆疊接下來(lái)的兩個(gè)字,以準(zhǔn)備 將這些字作為鄰居節(jié)點(diǎn)控制的指令流的一部分而供給鄰居。由于該指令由端
口執(zhí)行,該鄰居能夠修改RAM 24的所有內(nèi)容。第一個(gè)⑨p+與!a+…一起從 端口提取出直接量,將該直接量貯存在RAM24中,推進(jìn)RAM指針,且第 二個(gè)push(壓入)迫使鄰居在該鄰居接收的地址處開(kāi)始執(zhí)行。現(xiàn)在,begin/next (開(kāi)始/下一條)指令將從第二個(gè)字中的指令63處循環(huán)64次。該循環(huán)將RAM 24中的各項(xiàng)復(fù)制到鄰居的RAM 24中的對(duì)應(yīng)位置。循環(huán)之后,第一個(gè)指令 命令鄰居節(jié)點(diǎn)將下一個(gè)輸入用作直接量,且節(jié)點(diǎn)返回的地址被發(fā)送到鄰居,
并置入鄰居的返回堆棧28。在這一點(diǎn)上,兩個(gè)節(jié)點(diǎn)均包含相同的RAM 24 內(nèi)容。當(dāng)鄰居從返回堆棧28中的地址繼續(xù)時(shí),該鄰居將從原始節(jié)點(diǎn)停止的 點(diǎn)處重新開(kāi)始。Cold指令使該節(jié)點(diǎn)返回四端口讀取狀態(tài),且-;指令將調(diào)用轉(zhuǎn) 為跳轉(zhuǎn),結(jié)果是程序計(jì)數(shù)器不會(huì)留在返回堆棧中,且不會(huì)占據(jù)時(shí)間片。示出 的程序?qū)、 L、 U、 D指令定義為右、左、上和下作為替換的方法可以, 例如使用北、南、東和西??商鎿Q地,該系統(tǒng)可以利用絕對(duì)地址而不是相對(duì) 地址來(lái)對(duì)特定節(jié)點(diǎn)進(jìn)行尋址。所示的爬蟲(chóng)201占據(jù)了 RAM 24中的最末19個(gè)字。
返回圖1,可以看出爬蟲(chóng)201的路徑202。爬蟲(chóng)201開(kāi)始于計(jì)算機(jī)12f, 向下穿過(guò)計(jì)算機(jī)12b,然后向右到達(dá)計(jì)算機(jī)12c,向上到達(dá)計(jì)算機(jī)12g,向右 到達(dá)計(jì)算機(jī)12a,向下到達(dá)計(jì)算機(jī)12e,然后向下到達(dá)計(jì)算機(jī)12d,在這里實(shí) 施壓力測(cè)試。這將會(huì)測(cè)試計(jì)算機(jī)12d是否可以將SFFF加到$1,而沒(méi)有進(jìn)位 誤差。該結(jié)果被放置在計(jì)算機(jī)12d的堆棧34中。計(jì)算機(jī)12d直接將零貯存 到存儲(chǔ)器24的字十中。然后,爬蟲(chóng)通過(guò)向上到達(dá)計(jì)算機(jī)12e,再向上到達(dá)計(jì) 算機(jī)12a,向左到達(dá)計(jì)算機(jī)12g,然后向下到達(dá)計(jì)算機(jī)12c,再向左到達(dá)計(jì)算 機(jī)12b,然后再向上終止于計(jì)算機(jī)12f處,來(lái)反向穿過(guò)這些計(jì)算機(jī)。該特定 的測(cè)試占用17個(gè)字,但該測(cè)試可以更長(zhǎng)或更短,或可以履行任何期望的功 能,包括載入數(shù)據(jù)、抽取和傳送數(shù)據(jù)或執(zhí)行指令。
圖8是爬蟲(chóng)201的方法的流程圖。爬蟲(chóng)201通過(guò)在期望的端口處一皮載入 計(jì)算機(jī)12中的首個(gè)計(jì)算機(jī)的存儲(chǔ)器而開(kāi)始。如果存在待執(zhí)行的指令,則該 指令被執(zhí)行。如果不存在待執(zhí)行的指令,則判斷是否存在移動(dòng)爬蟲(chóng)的指令。 如果存在這樣的指令,則爬蟲(chóng)被載入編程到爬蟲(chóng)中的下一個(gè)節(jié)點(diǎn)。重復(fù)該過(guò) 程,直到?jīng)]有移動(dòng)指令為止。如果不存在這樣的指令,則爬蟲(chóng)結(jié)束。
在不改變本發(fā)明的值或范圍的情況下,可以對(duì)本發(fā)明進(jìn)行各種修改。例
如,雖然這里使用特定計(jì)算機(jī)12的例子對(duì)該發(fā)明實(shí)施例進(jìn)行了描述,但是
很多或所有創(chuàng)造性方面可容易地適應(yīng)其它計(jì)算機(jī)設(shè)計(jì)、其它類型的計(jì)算機(jī)陣列等。
類似地,盡管在這里已經(jīng)關(guān)于單個(gè)電路小片14上的陣列IO中的計(jì)算機(jī) 12之間的通信主要描述了本發(fā)明的實(shí)施例,但相同的原理和方法可用于或 被修改為用于完成其它器件間通信,例如計(jì)算機(jī)12與其專用存儲(chǔ)器之間的 通信,或陣列10中的計(jì)算機(jī)12與外部器件之間的通信。
盡管這里已討論了創(chuàng)造性計(jì)算機(jī)陣列10、計(jì)算機(jī)12、爬蟲(chóng)201、路徑 202、相關(guān)聯(lián)的裝置以及圖7和圖8的爬蟲(chóng)方法的具體例子,但是,預(yù)期將 存在很多現(xiàn)在還無(wú)法想象的應(yīng)用。實(shí)際上,本發(fā)明的一個(gè)優(yōu)勢(shì)在于本創(chuàng)造性 方法及裝置可以適于大量使用。
上面的所有僅是本發(fā)明的可用實(shí)施例的 一些例子。本領(lǐng)域技術(shù)人員將容 易看出可以在不脫離本發(fā)明的精神或范圍的情況下,進(jìn)行大量其它的修改和 變動(dòng)。相應(yīng)地,這里的公開(kāi)內(nèi)容目的不意在限定,且所附的權(quán)利要求被解釋
為包含本發(fā)明的全部范圍。 工業(yè)實(shí)用性
該創(chuàng)造性計(jì)算機(jī)陣列10、計(jì)算機(jī)12、爬蟲(chóng)201和圖8的爬蟲(chóng)方法意在 廣泛地使用在大量計(jì)算機(jī)應(yīng)用中。預(yù)期在需要大量計(jì)算功率但功耗和熱量產(chǎn) 生作為重要考慮事項(xiàng)的情況下更有用。
如這里先前所討論的,本發(fā)明的實(shí)用性使陣列中的計(jì)算機(jī)之間的信息和 資源共享在速度和通用性方面得到很大程度的增強(qiáng)。而且,根據(jù)所描述的方
法和手段,計(jì)算機(jī)陣列與其它器件之間的通信也得到增強(qiáng)。
由于本發(fā)明的計(jì)算機(jī)陣列10、計(jì)算機(jī)12、爬蟲(chóng)201、路徑202和相關(guān) 聯(lián)的裝置,以及圖8所示的爬蟲(chóng)方法很容易制作,并容易與現(xiàn)有的任務(wù)、輸 入/輸出器件等集成,且由于提供了這里描述的優(yōu)勢(shì),預(yù)期它們?cè)诠I(yè)中會(huì) 很容易被接受。因?yàn)檫@些及其它原因,預(yù)期本發(fā)明的用途及工業(yè)實(shí)用性的范 圍相當(dāng)大,且持續(xù)時(shí)間會(huì)相當(dāng)持久。
權(quán)利要求
1、一種計(jì)算機(jī)系統(tǒng),包括具有端口的計(jì)算機(jī)處理器組,和爬蟲(chóng),用于通過(guò)一端口將從數(shù)據(jù)、位置和指令的組中選擇的信息傳送到第一處理器;其中所述第一處理器被編程為錄入計(jì)劃供給所述第一處理器的信息,并將所述爬蟲(chóng)運(yùn)送到第二處理器。
2、 根據(jù)權(quán)利要求1所述的系統(tǒng),其中所述第二處理器被編程為錄入計(jì)劃供給該第二處理器的信息,并運(yùn)送所 述爬蟲(chóng)工具到第三處理器。
3、 根據(jù)權(quán)利要求1所述的系統(tǒng),其中所述第二處理器被編程為在沒(méi)有與所述第一處理器交互的情況下執(zhí)行 來(lái)自輸入端口的指令。
4、 根據(jù)權(quán)利要求2所述的系統(tǒng),其中所述爬蟲(chóng)納入從上、下、左和右的組中選擇的位置,以將所述運(yùn)送工具 運(yùn)送到所述第二處理器。
5、 根據(jù)權(quán)利要求2所述的系統(tǒng),其中所述信息是從所述端口到所述第二處理器的傳輸指令。
6、 根據(jù)權(quán)利要求2所述的系統(tǒng),其中所述信息是從所述端口到所述第二處理器的傳輸數(shù)據(jù)。
7、 根據(jù)權(quán)利要求2所述的系統(tǒng),其中所述信息以數(shù)據(jù)和/或指令的形式,從所述端口發(fā)送到所述第二處理器。
8、 根據(jù)權(quán)利要求1所述的系統(tǒng),其中 所述輸入端口是用于與外部器件進(jìn)行通信的外部端口 。
9、 根據(jù)權(quán)利要求1所述的系統(tǒng),其中所述處理器中的至少一個(gè)處理器包括: 指令寄存器,用于暫時(shí)貯存待執(zhí)行的指令組;和程序計(jì)數(shù)器,用于貯存地址,指令組被從所述地址取回至所述指令寄存 器;且其中所述程序計(jì)數(shù)器中的地址可以是存儲(chǔ)器地址,也可以是寄存器的地址。
10、 根據(jù)權(quán)利要求9所述的系統(tǒng),其中 所述指令組通常被同時(shí)取回至所述指令寄存器;并且 所述多條指令被重復(fù)由堆棧中的數(shù)字指示的迭代次數(shù)。
11、 根據(jù)權(quán)利要求1所述的系統(tǒng),其中所述處理器中的至少一個(gè)處理器 包括通常被同時(shí)讀取的多條指令;并且其中所述多條指令被重復(fù)由堆棧中的數(shù)字指示的迭代次數(shù)。
12、 一種向位于具有輸入端口的多計(jì)算機(jī)陣列中的計(jì)算機(jī)傳送數(shù)據(jù)的方 法,所述多計(jì)算機(jī)陣列中有至少一個(gè)計(jì)算機(jī)不直接連接到所述輸入端口,所 述方法包括(a) 將輸入引入所述端口,使連接到所述輸入端口的第一計(jì)算機(jī)向沒(méi) 有連接到所述輸入端口的第二計(jì)算機(jī)傳送至少 一部分所述輸入;(b) 使第二計(jì)算機(jī)錄入所述一部分所述輸入的至少部分。
13、 根據(jù)權(quán)利要求12所述的方法,其中所述第二計(jì)算機(jī)通過(guò)執(zhí)行任務(wù)來(lái)對(duì)來(lái)自所述第 一計(jì)算機(jī)的所述輸入的 所述部分作出反應(yīng)。
14、 根據(jù)權(quán)利要求12所述的方法,其中響應(yīng)于來(lái)自所述端口的輸入,所述第二計(jì)算才幾運(yùn)行例程。
15、 根據(jù)權(quán)利要求14所述的方法,其中 所述例程包括與第三計(jì)算機(jī)相互作用。
16、 根據(jù)權(quán)利要求15所述的方法,其中 所述例程包括向所述第三計(jì)算機(jī)寫。
17、 根據(jù)權(quán)利要求15所述的方法,其中 所述例程包括向所述第三計(jì)算機(jī)發(fā)送數(shù)據(jù)。
18、 根據(jù)權(quán)利要求15所述的方法,其中 所述例程包括向所述第三計(jì)算機(jī)發(fā)送指令。
19、 根據(jù)權(quán)利要求18所述的方法,其中 所述指令由所述第三計(jì)算機(jī)以所述指令被接收的順序來(lái)執(zhí)行。
20、 一種計(jì)算機(jī)程序,當(dāng)該計(jì)算機(jī)程序在計(jì)算機(jī)陣列上運(yùn)行時(shí),使所述 陣列履行根據(jù)權(quán)利要求12至19中任一項(xiàng)所述的方法。
21、 一種收錄代碼的計(jì)算機(jī)可讀介質(zhì),所述代碼用于使電子裝置履行根 據(jù)權(quán)利要求12、 13、 14、 15、 16、 17、 18或19所述的步驟。
22、 一種攜帶根據(jù)權(quán)利要求20所述的程序的載體。
23、 一種用于計(jì)算的系統(tǒng),包括處理器組,包括與所述處理器中的一個(gè)處理器相連的至少一個(gè)輸入端 口 ; 和爬蟲(chóng)工具,用于將從數(shù)據(jù)、指令和位置的組中選擇的信息從所述一個(gè)輸 入端口傳送到所述處理器中的一個(gè)處理器和所述處理器中的另一個(gè)處理器,其中所述爬蟲(chóng)工具進(jìn)一步包括由方向指令確定的路徑和用于指令所述 另一個(gè)處理器載入有效載荷的工具。
24、 根據(jù)權(quán)利要求23所述的用于計(jì)算的系統(tǒng),其中所述爬蟲(chóng)工具指示 所述一個(gè)處理器相對(duì)于所述輸入端口的位置。
25、 根據(jù)權(quán)利要求24所述的用于計(jì)算的系統(tǒng),其中所述爬蟲(chóng)工具通過(guò) 納入從由上、下、右和左構(gòu)成的組中選擇的方向來(lái)指示所述一個(gè)處理器相對(duì) 于所述輸入端口的位置。
26、 根據(jù)權(quán)利要求24所述的用于計(jì)算的系統(tǒng),其中所述爬蟲(chóng)工具通過(guò) 包括從由北、南、東和西構(gòu)成的組中選擇的方向來(lái)指示所述一個(gè)處理器相對(duì) 于所述輸入端口的位置。
27、 根據(jù)權(quán)利要求23所述的用于計(jì)算的系統(tǒng),其中所述爬蟲(chóng)工具通過(guò)包括所述一個(gè)處理器的地址來(lái)絕對(duì)地指示所述一個(gè)處理器的位置。
28、 根據(jù)權(quán)利要求23所述的用于計(jì)算的系統(tǒng),其中所述有效載荷為數(shù)據(jù)。
29、 根據(jù)權(quán)利要求23所述的用于計(jì)算的系統(tǒng),其中所述有效載荷為指 令,且所述另一個(gè)處理器以可操作的方式執(zhí)行所述指令。
全文摘要
本發(fā)明涉及用于將數(shù)據(jù)和指令載入計(jì)算機(jī)的方法及裝置。計(jì)算機(jī)陣列(10)具有多個(gè)計(jì)算機(jī)(12)。計(jì)算機(jī)(12)彼此異步通信且本身內(nèi)部以異步模式運(yùn)行。當(dāng)一計(jì)算機(jī)(12)嘗試與另一計(jì)算機(jī)通信時(shí),它進(jìn)入睡眠直到另一計(jì)算機(jī)(12)準(zhǔn)備好完成事務(wù)處理,從而節(jié)省功率并減少熱量產(chǎn)生。睡眠計(jì)算機(jī)(12)等待數(shù)據(jù)或指令(12)。如為指令,睡眠計(jì)算機(jī)(12)等待貯存指令或立即執(zhí)行指令。如為后者,當(dāng)接收到指令時(shí)將其置于指令寄存器(30a)并從指令寄存器(30a)執(zhí)行,而不必首先將其首先置于存儲(chǔ)器。指令包括能沿預(yù)定路徑(202)穿過(guò)若干處理器并在預(yù)選計(jì)算機(jī)中進(jìn)行一系列操作的爬蟲(chóng)(201)。在一應(yīng)用中,爬蟲(chóng)(201)在選中計(jì)算機(jī)(12d)中進(jìn)行壓力測(cè)試。
文檔編號(hào)G06F15/163GK101339544SQ20081009693
公開(kāi)日2009年1月7日 申請(qǐng)日期2008年5月7日 優(yōu)先權(quán)日2007年5月7日
發(fā)明者杰佛瑞·亞瑟·??怂? 查理斯·H·莫爾, 邁克爾·B·蒙特維利什斯凱 申請(qǐng)人:Vns組合有限責(zé)任公司