两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

微循環(huán)計(jì)算機(jī)指令的制作方法

文檔序號:6618550閱讀:377來源:國知局
專利名稱:微循環(huán)計(jì)算機(jī)指令的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)和計(jì)算機(jī)處理器領(lǐng)域,更具體地說,涉及一種允許計(jì) 算機(jī)執(zhí)行從外部源接收到的指令而不需要先存儲所述指令的方法和裝置,以 及一種利用該方法和裝置來促進(jìn)計(jì)算機(jī)之間的通信和計(jì)算機(jī)使用另 一計(jì)算 機(jī)的可用資源的能力的相關(guān)方法。本創(chuàng)造性直接執(zhí)行方法和裝置的當(dāng)前主要 應(yīng)用是,在單個(gè)微芯片上與多臺計(jì)算機(jī)相結(jié)合,其中操作效率很重要,這不 僅是因?yàn)樘岣卟僮魉俣鹊男枰?,而且還因?yàn)楦咝仕鶎?dǎo)致的省電和降低熱 量的緣故。 '
背景技術(shù)
在計(jì)算領(lǐng)域,處理速度是一種非常期望的品質(zhì),因此對創(chuàng)建更快計(jì)算機(jī) 和處理器的探索一直在進(jìn)行。不過,在業(yè)界,通常公認(rèn)的是,提高微處理器 速度的極限正被迅速逼近,至少對于利用目前已知的技術(shù)而言。因此,利用 多處理器通過分享處理器中的計(jì)算任務(wù)來提高整體計(jì)算速度越來越引起大 家的興趣。
多處理器的使用趨于需要處理器之間的通信。實(shí)際上,在處理器之間可 能存在足夠大量的通信,以致相當(dāng)大的一部分時(shí)間花費(fèi)在在處理器之間傳輸
指令和數(shù)據(jù)。在這種通信量相當(dāng)大的情況下,每條為了實(shí)現(xiàn)通信所必須被執(zhí) 行的附加指令,在處理過程中設(shè)置了一種遞增的延遲,其累積起來可能是相
當(dāng)大的。將指令或數(shù)據(jù)從一臺計(jì)算機(jī)傳送到另 一 臺計(jì)算機(jī)的常規(guī)方法包括 首先將數(shù)據(jù)或指令存儲在接收計(jì)算機(jī)中,隨后調(diào)用數(shù)據(jù)或指令以用于在所述 計(jì)算機(jī)上執(zhí)行(在為指令的情況下)或者操作(在為數(shù)據(jù)的情況下)。
減少在計(jì)算機(jī)之間傳送、接收、然后使用數(shù)據(jù)或指令格式的信息所需的 步驟數(shù),將是很有用的。不過,據(jù)發(fā)明人所知,沒有任何現(xiàn)有技術(shù)系統(tǒng)以有 效的方式來簡化上述處理過程。
而且,在現(xiàn)有技術(shù)中,已知的是,有時(shí)必需"引起計(jì)算機(jī)的注意"。也 就是說,有時(shí)候即使計(jì)算機(jī)可能忙于一個(gè)任務(wù),但仍可能需要另一對時(shí)間敏 感的任務(wù),即可能必需使計(jì)算機(jī)暫時(shí)從第一任務(wù)移開。這種示例包括但不限 于,用戶輸入設(shè)備用于將輸入提供給計(jì)算機(jī)的情況。在這些情況下,計(jì)算機(jī) 可能需要暫時(shí)對輸入進(jìn)行確認(rèn)和/或根據(jù)輸入進(jìn)行響應(yīng)。然后,計(jì)算機(jī)繼續(xù) 在輸入之前正在進(jìn)行的工作,或者基于該輸入改變正在進(jìn)行的工作。盡管在 此處使用外部輸入作為示例,不過當(dāng)在計(jì)算機(jī)內(nèi)部各方面之間存在用于引起 ALU注意的潛在沖突時(shí),也發(fā)生相同的狀況。
當(dāng)從I/O端口接收數(shù)據(jù)或狀態(tài)改變時(shí),在現(xiàn)有技術(shù)中已存在兩種可用的 方法。 一種是"輪詢"該端口,這包括以固定的間隔讀取端口的狀態(tài),以確 定是否已接收到任何數(shù)據(jù)或者狀態(tài)是否改變。不過,輪詢端口耗費(fèi)相當(dāng)多的 時(shí)間和資源,而這些時(shí)間和資源用做其它事情通??赡芨谩Mǔ?,較佳的 可選方案是使用"中斷,,。當(dāng)使用中斷時(shí),處理器可以著手執(zhí)行被分配給它 的任務(wù),并且當(dāng)I/O端口 /設(shè)備需要由已接收到字節(jié)或狀態(tài)已經(jīng)改變這樣的事 實(shí)所指示的注意時(shí),I/O端口/設(shè)備將中斷請求(IRQ)發(fā)送到處理器。 一旦 處理器接收到中斷請求,就結(jié)束其當(dāng)前指令,將少數(shù)事情放在堆棧中,并執(zhí) 行適當(dāng)?shù)目梢詮亩丝谝苿幼止?jié)并將其放置在緩沖器中的中斷服務(wù)例程 (ISR)。 一旦ISR結(jié)束,處理器就返回至它離開的位置。利用這種方法, 處理器不必要浪費(fèi)時(shí)間來查看1/0設(shè)備是否需要注意,而是僅在設(shè)備需要注
意時(shí)提供中斷服務(wù)。不過,在許多情況下,使用中斷本身遠(yuǎn)達(dá)不到期望,這 是由于可能存在大量的與使用中斷有關(guān)的開銷。例如,每次當(dāng)中斷發(fā)生時(shí), 計(jì)算機(jī)可能不得不暫時(shí)存儲一定的與它之前試圖實(shí)現(xiàn)的任務(wù)有關(guān)的數(shù)據(jù),然
后載入有關(guān)中斷的數(shù)據(jù),再然后一旦處理完中斷,就再載入先前任務(wù)所需的 數(shù)據(jù)。很明顯,希望減少或消除所有這種時(shí)間和資源的消耗開銷。不過,還 沒有開發(fā)出任何可緩解這種中斷需要的現(xiàn)有技術(shù)方法。

發(fā)明內(nèi)容
因此,本發(fā)明的一目的在于,提供一種在兩臺或更多計(jì)算機(jī)之間傳送數(shù) 據(jù)和/或指令的情況下用于提高操作速度的裝置和方法。
本發(fā)明的另 一 目的在于,提供一種用于廉價(jià)地提供相當(dāng)大計(jì)算能力的裝 置和方法。
本發(fā)明的再一 目的在于,提供一種用于在最小量的時(shí)間內(nèi)實(shí)現(xiàn)計(jì)算量密 集任務(wù)的裝置和方法。
本發(fā)明的又一目的在于,提供一種產(chǎn)生大量處理能力的計(jì)算機(jī)裝置。 本發(fā)明的另一目的在于,提高計(jì)算機(jī)與計(jì)算機(jī)可控設(shè)備之間的通信效率。
本發(fā)明的再一目的在于,提高計(jì)算機(jī)之間的通信效率。
本發(fā)明的又一目的在于,提高計(jì)算機(jī)彼此之間以及與諸如用戶輸入設(shè)備 之類的其它設(shè)備之間的通信方式的效率。
簡要地說,本發(fā)明的已知實(shí)施例是本身具有存儲器以便能獨(dú)立發(fā)揮計(jì)算 功能的計(jì)算機(jī)。在本發(fā)明的一個(gè)實(shí)施例中,多臺計(jì)算機(jī)被排列成陣列。為了 協(xié)作實(shí)現(xiàn)任務(wù),計(jì)算機(jī)必須能彼此之間傳遞數(shù)據(jù)和/或指令。由于所有同時(shí) 工作的計(jì)算機(jī)通常將提供較之大多任務(wù)所需的計(jì)算能力大得多的計(jì)算能力,
并且由于任何用于在數(shù)個(gè)計(jì)算機(jī)之間分配任務(wù)的算法或方法將幾乎肯定導(dǎo) 致分配不平均,因此可以預(yù)期的是,至少一些而且可能是大多數(shù)的計(jì)算機(jī)不 可能在給定的時(shí)間活躍地參與任務(wù)的實(shí)現(xiàn)。因此,希望找到一種方法,對于
可用的但還未使用的計(jì)算機(jī)而言,通過"借出"計(jì)算資源、存儲器或者將二 者都"借出"來用于幫助它們更忙碌的鄰居。為了使這種關(guān)系有效且有用, 將進(jìn)一步希望相鄰計(jì)算機(jī)之間的通信和交互應(yīng)該盡可能的快速和有效。因 此,本發(fā)明提供一種這樣的裝置和方法,即計(jì)算機(jī)執(zhí)行直接從另一臺計(jì)算機(jī) 提供的指令和/或作用于數(shù)據(jù),而不是在這樣的動作之前不得不接收然后存 儲數(shù)據(jù)和/或指令。需要注意的是,該發(fā)明對于這樣的指令也是有效的,即 用作媒介以促使一計(jì)算機(jī)將指令或數(shù)據(jù)從另一計(jì)算機(jī)"傳遞,,到又一計(jì)算機(jī) 的指令。
在所描述的實(shí)施例中,為了防止不必要的功耗和不必要的放熱,當(dāng)計(jì)算 機(jī)試圖與它的 一個(gè)或多個(gè)鄰居通信時(shí),將處于一種基本上不消耗任何功率的 休眠模式,直到該鄰居或多個(gè)鄰居中的一個(gè)運(yùn)行起來完成通信。不過,這不 是本發(fā)明的必要方案。此外,為了實(shí)現(xiàn)所期望的省電和降低放熱,所需要的 是,啟動的計(jì)算機(jī)在等待通信完成的同時(shí),停止或者至少明顯降低其功耗。 可以想象的是,這可以通過許多手段中的任一種手段來實(shí)現(xiàn)。例如,如果計(jì) 算機(jī)由內(nèi)部或者外部時(shí)鐘來定時(shí),那么在那段時(shí)間可以調(diào)慢或停止時(shí)鐘。實(shí) 際上,所預(yù)期的是,盡管目前所描述的實(shí)施例現(xiàn)在是發(fā)明人已知的最佳且最 有效的實(shí)施例,但是由于某種原因而處于本發(fā)明的范圍之外的實(shí)施例也可能 被執(zhí)行。
此處所描述的本發(fā)明的一個(gè)方案是,指令和數(shù)據(jù)得到基本相同的處理, 而不論它們的來源是計(jì)算機(jī)的內(nèi)部存儲器還是這樣的指令和數(shù)據(jù)正被接收 自諸如另一計(jì)算機(jī)、外部通信端口之類的另一來源。這是顯而易見的,因?yàn)?諸如存儲數(shù)據(jù)或指令、然后從內(nèi)部存儲器再調(diào)用它們之類的"附加"操作是 不必要的,從而減少了所需要的指令數(shù),并提高了涉及到的計(jì)算機(jī)的操作速 度。
所描述實(shí)施例的另一方案在于,非常小的指令組通常可以同時(shí)被傳送到 另 一計(jì)算機(jī),以致需要重復(fù)迭代的相對簡單的操作可以被快速且容易地實(shí)現(xiàn)。這將大大加快計(jì)算機(jī)之間的通信過程。
所描述實(shí)施例的又一方案在于,由于存在一些可用于執(zhí)行各種任務(wù)的計(jì) 算機(jī),并且由于 一 臺或多臺計(jì)算機(jī)可以被設(shè)置成處于等待輸入的同時(shí)基本上 不使用任何功率的休眠狀態(tài),因此這樣的計(jì)算機(jī)可以被分配以等待輸入的任 務(wù),從而減少或消除使可能正實(shí)現(xiàn)其它任務(wù)的其它計(jì)算機(jī)"中斷,,的需要。
如同此處所描述的和在附圖的幾幅圖中所圖示的 一樣,考慮到對執(zhí)行本 發(fā)明的模式和其工業(yè)實(shí)用性的說明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明的 這些和其它目的和優(yōu)點(diǎn)將變得清楚。所列出的目的和優(yōu)點(diǎn)不是本發(fā)明所有可 能優(yōu)點(diǎn)的窮盡列舉。而且,即使在一個(gè)或多個(gè)預(yù)計(jì)目的和/或優(yōu)點(diǎn)在實(shí)際應(yīng) 用中可能缺少或者不需要的情況下,也將可能實(shí)現(xiàn)本發(fā)明。
進(jìn)一步地,本領(lǐng)域的技術(shù)人員應(yīng)該認(rèn)識到本發(fā)明的各種實(shí)施例可以實(shí)現(xiàn) 所描述的目的和/或優(yōu)點(diǎn)中的一個(gè)或更多,但沒有必要是全部。因此,這里 所描述的目的和/或優(yōu)點(diǎn)不是本發(fā)明的必要元素,也不應(yīng)該作為限制來解釋。


圖1是根據(jù)本發(fā)明的計(jì)算機(jī)陣列的簡圖2是示出圖1計(jì)算機(jī)的子集和圖1中互連數(shù)據(jù)總線的更多詳情的詳細(xì)視
圖3是描述圖1和圖2中的一臺計(jì)算機(jī)的通用布局的框圖4是根據(jù)本創(chuàng)造性申請的指令字的圖示;
圖5是圖3中的時(shí)段定序器(slot sequencer) 42的示圖6是描述根據(jù)本發(fā)明的微循環(huán)示例的流程圖7是描述用于執(zhí)行來自端口的指令的創(chuàng)造性方法的示例的流程圖8是描述用于提醒(alert)計(jì)算機(jī)的創(chuàng)造性改進(jìn)方法的示例的流程和
圖9是圖示用于喚醒非活躍的處理器并將輸入數(shù)據(jù)從已喚醒的處理器發(fā)送 到可操作地處理輸入數(shù)據(jù)的執(zhí)行處理器的方法的流程圖。
具體實(shí)施例方式
在以下描述中,將參照附圖對本發(fā)明進(jìn)行說明,在附圖中相同的標(biāo)記表 示相同或相似的元件。雖然按照用于實(shí)現(xiàn)本發(fā)明目的的方式對本發(fā)明進(jìn)行描 述,但是本領(lǐng)域的技術(shù)人員應(yīng)該理解的是,可以根據(jù)這些所教授的東西在不 脫離本發(fā)明的精神或范圍的情況下做出各種修改。
此處所描述和/或在附圖中所示的本發(fā)明的實(shí)施例和變形,僅通過示例 的方式被呈現(xiàn)出來,并不用于限制本發(fā)明的范圍。除非以另外的方式具體指 出,否則本發(fā)明的各個(gè)方案和部件都可以被省略或修改,或者因此可以替代 已知的等價(jià)物,或者作為還未知的替換物,例如將來開發(fā)出來的或者在將來 發(fā)現(xiàn)的可接受的替換物。本發(fā)明還可以在處于所要求發(fā)明的精神和范圍之內(nèi) 的同時(shí),針對多種實(shí)際應(yīng)用進(jìn)行修改,因?yàn)闈撛趹?yīng)用的范圍很廣闊,還因?yàn)?本發(fā)明本就旨在適于多種這類變形。
已知的用于實(shí)現(xiàn)本發(fā)明的模式是各個(gè)計(jì)算機(jī)的陣列。該陣列在圖1的簡
圖中被描述,并且在此處總地用附圖標(biāo)記IO表示。計(jì)算機(jī)陣列IO具有多個(gè) (在所示示例中,為24個(gè))計(jì)算機(jī)12 (在陣列示例中,有時(shí)也稱作"核" 或"節(jié)點(diǎn)")。在所示的示例中,所有計(jì)算機(jī)12都位于單個(gè)芯片(die) 14 上。根據(jù)本發(fā)明,每個(gè)計(jì)算機(jī)12通常都是獨(dú)立運(yùn)行的計(jì)算機(jī),這在下文中 將更詳細(xì)地論述。計(jì)算機(jī)12通過多條(該數(shù)量將在下文中更詳細(xì)地論述) 互連數(shù)據(jù)總線16互連。在該示例中,數(shù)據(jù)總線16是雙向、異步、高速、并 行的數(shù)據(jù)總線,盡管針對此目的采用其它互連方式也落入本發(fā)明的范圍中。 在本實(shí)施例的陣列10中,不僅計(jì)算機(jī)12之間的數(shù)據(jù)通信是異步的,而且各 個(gè)計(jì)算機(jī)12內(nèi)部也以異步模式運(yùn)行。這些已經(jīng)由本發(fā)明人發(fā)現(xiàn),從而提供 重要的優(yōu)勢。例如,由于時(shí)鐘信號不必要被分布在整個(gè)計(jì)算機(jī)陣列10上, 因此就很省電。此外,不必發(fā)布時(shí)鐘信號消除了許多定時(shí)問題,這些定時(shí)問 題可能限制陣列10的尺寸或可能導(dǎo)致其它公知的麻煩。而且,各個(gè)計(jì)算機(jī) 異步運(yùn)行的事實(shí),節(jié)省了大量的功率,這是由于每臺計(jì)算機(jī)不執(zhí)行指令時(shí),
將基本上不使用任何功率,原因在于其中不運(yùn)行任何時(shí)鐘。
本領(lǐng)域的技術(shù)人員應(yīng)該認(rèn)識到,出于清晰的考慮,芯片14上的額外部 分在圖l的視圖中被省略了。這些額外部分包括電力總線、外部連接鍵盤和 微處理器芯片的其它這類公共方面。
計(jì)算機(jī)12e是一臺不位于陣列10的周界上的計(jì)算機(jī)12的示例。也就是 說,計(jì)算機(jī)12e具有四個(gè)垂直相鄰的計(jì)算機(jī)12a、 12b、 12c和12d。作為示 例,對計(jì)算機(jī)12a-12e進(jìn)行的這種分組將在下文中用于對陣列10的計(jì)算機(jī) 12之間的通信進(jìn)行更為詳細(xì)的討論。在圖1的示圖中可以看到的是,例如 計(jì)算機(jī)12e的內(nèi)部計(jì)算機(jī)將具有經(jīng)由總線16與其直接通信的其它四臺計(jì)算 機(jī)12。在下面的論述中,所論述的原理將適用于所有計(jì)算機(jī)12,除了位于 陣列IO周界上的計(jì)算機(jī)將僅與其它三臺計(jì)算機(jī)12直接通信之外,還除了邊 角計(jì)算機(jī)12將僅與其它兩臺計(jì)算機(jī)12直接通信。
圖2是圖1的一部分的更為詳細(xì)的視圖,其僅僅示出了一些計(jì)算機(jī)12, 具體而言,僅僅包括計(jì)算機(jī)12a-12e。圖2的示圖還揭示出每條數(shù)據(jù)總線 16均具有讀取線18、寫入線20和多條(在該示例中,為18條)數(shù)據(jù)線22。 數(shù)據(jù)線22能夠幾乎同時(shí)地并行傳輸一個(gè)18比特的指令字的所有比特。應(yīng)該 注意的是,在本發(fā)明的一個(gè)實(shí)施例中, 一些計(jì)算機(jī)12是相鄰計(jì)算機(jī)的鏡像。 不過,不論計(jì)算機(jī)12是全部同一定向的或者是作為相鄰計(jì)算機(jī)的鏡像,都 不是目前所描述發(fā)明的方案。因此,為了更好地描述該發(fā)明,此處將不進(jìn)一 步地論述這種潛在的復(fù)雜性。
根據(jù)本創(chuàng)造性的方法,例如計(jì)算機(jī)12e的計(jì)算機(jī)12可以將其讀取線18 中的一條、兩條、三條或四條都設(shè)定為高電平,以便預(yù)備從相應(yīng)的一臺、兩 臺、三臺或四臺相鄰計(jì)算機(jī)接收數(shù)據(jù)。類似地,還有可能的是,計(jì)算機(jī)12 將其寫入線20中的一條、兩條、三條或四條都設(shè)定為高電平。雖然發(fā)明人 認(rèn)為在同一時(shí)刻將計(jì)算機(jī)12的不止一條寫入線20設(shè)置為高電平目前還不現(xiàn) 實(shí),但是如此做法并未超出本發(fā)明的范圍,因?yàn)榭梢韵胂?,這種操作的使用 在將來可能發(fā)生。
當(dāng)相鄰計(jì)算機(jī)12a、 12b、 12c或12d中的一臺將它本身與計(jì)算機(jī)12e之 間的寫入線20設(shè)定為高電平時(shí),如果計(jì)算機(jī)12e已經(jīng)將對應(yīng)的讀取線18設(shè) 定為高電平,那么在相關(guān)數(shù)據(jù)線22上,字將從那臺計(jì)算機(jī)12a、 12b、 12c 或12d傳輸?shù)接?jì)算機(jī)12e。然后,發(fā)送計(jì)算機(jī)12將釋放寫入線20,而接收 計(jì)算機(jī)(在該示例中,為12e)將寫入線20和讀取線18都拉低。后一動作 將向發(fā)送計(jì)算機(jī)12確認(rèn)已經(jīng)接收到數(shù)據(jù)。需要注意的是,上述描述意不在 于必需按次序表示事件的順序。在實(shí)際實(shí)踐中,接收計(jì)算機(jī)可以在發(fā)送計(jì)算 機(jī)12釋放(停止拉高)其寫入線20之前不久,就試圖將寫入線20設(shè)定為 低電平。在這樣的例子中,發(fā)送計(jì)算機(jī)12—旦釋放其寫入線20,寫入線20 就由接收計(jì)算機(jī)12e拉低。
在本示例中,僅有編程錯(cuò)誤才會引起一條總線16相反兩端的兩臺計(jì)算 機(jī)12都試圖將其間的讀取線18設(shè)定為高電平。而且,對于一條總線16相 反兩端上的兩臺計(jì)算機(jī)12來說,試圖將其間的寫入線18同時(shí)設(shè)定為高電平 也將是一種錯(cuò)誤。類似地,如上所述,目前可預(yù)見的是,不希望使單個(gè)計(jì)算 機(jī)12將其四條寫入線20中的不止一條設(shè)定為高電平。不過,目前可預(yù)見的 是,將存在這樣的機(jī)會,其中希望將讀取線18的不同組合設(shè)定為高電平, 以便一 臺計(jì)算機(jī)12可以處于等待來自第 一 臺被選中計(jì)算機(jī)12的數(shù)據(jù)的等待 狀態(tài),以將其相應(yīng)的寫入線20設(shè)定為高電平。
在以上論述的示例中,計(jì)算機(jī)12e被描述成在相鄰計(jì)算機(jī)(選自一臺或 多臺計(jì)算機(jī)12a、 12b、 12c或12d)將其寫入線20設(shè)定為高電平之前就將其 一條或多條讀取線18設(shè)定為高電平。不過,這種過程當(dāng)然可以按相反順序 發(fā)生。例如,如果計(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確實(shí)將該讀取線20設(shè)定為高電平。 然后,如上所述,當(dāng)相應(yīng)的一對寫入線18和讀取線20都是高電平時(shí),待在 數(shù)據(jù)線22上傳輸?shù)臄?shù)據(jù)被傳輸。此后,發(fā)送計(jì)算機(jī)12e —旦釋放寫入線18,
接收計(jì)算機(jī)12 (在該示例中,是計(jì)算機(jī)12a)就將兩個(gè)計(jì)算機(jī)(在該示例中, 是12e和12a)之間的讀取線18和寫入線20都設(shè)定為低電平。
除非數(shù)據(jù)將要發(fā)送到的計(jì)算機(jī)12已經(jīng)將其讀取線18設(shè)置為高,在這種 情況下,數(shù)據(jù)會被立即發(fā)送,否則,只要諸如計(jì)算機(jī)12e的計(jì)算機(jī)12已經(jīng) 將其寫入線20中的一條設(shè)置為高以期望寫入,它都將僅僅等待而幾乎不耗 電,直到數(shù)據(jù)如上文所述那樣由合適的鄰近計(jì)算機(jī)12 "請求,,。類似地, 只要計(jì)算機(jī)12在期望讀取過程中將其一或多條讀取線18設(shè)定為高電平,它 就只是等待而幾乎不耗電,直到連接至所選擇計(jì)算機(jī)12的寫入線20成為高 電平,以在這兩個(gè)計(jì)算機(jī)12之間傳輸指令字。
如上所述,可能存在幾種潛在的裝置和/或方法,以使得計(jì)算機(jī)12如所 描述的一樣運(yùn)行。不過,在本示例中,計(jì)算機(jī)12之所以這樣運(yùn)轉(zhuǎn),僅僅是 因?yàn)樗鼈冊趦?nèi)部通常也異步運(yùn)行(除了以所描述的異步方式在它們之間傳輸 數(shù)據(jù)之外)。也就是說,指令通常被順序地完成。當(dāng)寫入或讀取指令出現(xiàn)時(shí), 可以不采取任何進(jìn)一步的動作,直到指令被完成(或者,或許可選地,直到 其被"重置"等中止)。在現(xiàn)有技術(shù)的意義中,并不存在規(guī)則的時(shí)鐘脈沖。 更確切地說,只有當(dāng)正被執(zhí)行的指令不是讀取型或?qū)懭胄椭噶?假定讀取或 寫入型指令通常需要由另一實(shí)體完成)時(shí),或者當(dāng)讀取型或?qū)懭胄偷牟僮鲗?shí) 際上已經(jīng)完成時(shí),脈沖才產(chǎn)生以實(shí)現(xiàn)下一指令。
圖3是描述圖1和圖2中一臺計(jì)算機(jī)12示例的通用布局的框圖。從圖 3的示圖中可以看出,每臺計(jì)算機(jī)12 —般均為自身具有RAM 24和ROM 26 的計(jì)算機(jī)。如之前所提到的,計(jì)算機(jī)12有時(shí)還稱為單獨(dú)的"節(jié)點(diǎn)",在該 示例中假定它們被組合在單個(gè)芯片上。
計(jì)算機(jī)12的其它基礎(chǔ)部件是返回堆棧28(包括下文中將論述的R寄存 器29)、指令區(qū)域30、算術(shù)邏輯單元("ALU"或"處理器")32、數(shù)據(jù) 堆棧34和用于解碼指令的解碼邏輯部分36。本領(lǐng)域的技術(shù)人員通常會熟悉 基于堆棧的計(jì)算機(jī)的操作,例如本示例的計(jì)算機(jī)12。計(jì)算機(jī)12是具有數(shù)據(jù) 堆棧34和分立的返回堆棧28的雙堆棧計(jì)算機(jī)。
在本發(fā)明的該實(shí)施例中,計(jì)算機(jī)12具有四個(gè)通信端口 38,用于與相鄰 計(jì)算機(jī)12通信。通信端口 38是三態(tài)驅(qū)動器,具有截止?fàn)顟B(tài)、接收狀態(tài)(用 于將信號驅(qū)動進(jìn)入計(jì)算機(jī)12中)和發(fā)送狀態(tài)(用于將信號驅(qū)動出計(jì)算機(jī)12)。 當(dāng)然,如果特定計(jì)算機(jī)12不像計(jì)算機(jī)12e的示例那樣位于陣列(圖l)內(nèi)部, 那么至少為了以上所描述的目的,在所述特定的計(jì)算機(jī)中將不會使用一個(gè)或 多個(gè)通信端口 38。不過,那些確實(shí)鄰接芯片14邊緣的通信端口 38可以具 有被設(shè)計(jì)在這種計(jì)算機(jī)12中或者被設(shè)計(jì)在計(jì)算機(jī)12的外部但與之相連的附 加電路,從而使得這種通信端口 38用作外部I/O端口 39 (圖1 )。這樣的 外部I/O端口 39的示例包括但不限于USB (通用串行總線)端口 、 RS232 串行總線端口 、并行通信端口 、模擬-數(shù)字和/或數(shù)字-模擬轉(zhuǎn)換端口 ,和其它 許多可能的變形。無論是什么類型的附加或修改電路應(yīng)用于這個(gè)目的,根據(jù) 本發(fā)明當(dāng)前所描述的實(shí)施例,"外部"1/0端口 39的對于從其接收到的指令 和/或數(shù)據(jù)的處理的操作方法,將與此處關(guān)于"內(nèi)部"通信端口 38所描述的 相似。在圖1中,"邊緣"計(jì)算機(jī)12f被描述為與相關(guān)接口電路80(示為塊 圖形式) 一起通過外部I/0端口 39與外部設(shè)備82通信。
在當(dāng)前所描述的實(shí)施例中,指令區(qū)域30包括許多寄存器40,在該示例 中,包括有A寄存器40a、 B寄存器40b,和P寄存器40c。在該示例中,A 寄存器40a是滿18位的寄存器,而B寄存器40b和P寄存器40c是9位的 寄存器。
盡管本發(fā)明不受該示例的限制,但是目前計(jì)算機(jī)12執(zhí)行自然的Forth 語言指令。熟悉Forth計(jì)算機(jī)語言的人員應(yīng)該理解,被認(rèn)為是Forth "字,,的 復(fù)雜Forth指令,由為計(jì)算機(jī)設(shè)計(jì)的自然處理器指令構(gòu)成。Forth字的集合被 認(rèn)為是"字典(dictionary)"。在其它語言中,這可能被稱為是"庫(library)"。 如下文中將更詳細(xì)描述的,計(jì)算機(jī)12每次從RAM24、 ROM26或直接從一 條數(shù)據(jù)總線16(圖2)讀取18比特。不過,由于在Forth中,大多數(shù)指令(被 認(rèn)為是無操作數(shù)指令)直接從堆棧28和34獲得它們的操作數(shù),所以它們通 常在長度上只有五比特,以便在組中的最后指令選自只需要3比特的有限指 令集合的狀況下,有多達(dá)四條指令都可以被包括在單個(gè)18比特的指令字中。
(在所描述實(shí)施例中,最后位置中指令的兩個(gè)最低有效位被假定為"or )。
在圖3的示圖中,還以塊圖形式描述了時(shí)段定序器(slot sequencer) 42。
在本發(fā)明的該實(shí)施例中,數(shù)據(jù)堆棧是ALU 32所控制的參數(shù)的后進(jìn)先出 的堆棧,而返回堆棧28是CALL和NEXT指令所使用的嵌套返回地址的后 進(jìn)先出的堆棧。如下文中將更詳細(xì)論述的,返回堆棧28還由PUSH、 POP 和NEXT指令使用。數(shù)據(jù)堆棧34和返回堆棧28不是與許多現(xiàn)有技術(shù)計(jì)算機(jī) 中一樣的由堆棧指針訪問的存儲器中的陣列。相反,堆棧34和28是寄存器 陣列。數(shù)據(jù)堆棧34中的頂部兩個(gè)寄存器是T寄存器44和S寄存器46。數(shù) 據(jù)堆棧34的剩余部分具有循環(huán)寄存器陣列34a,其中具有被編號的8個(gè)附加 硬件寄存器,在該示例中為S2到S9。循環(huán)寄存器陣列34a中的8個(gè)寄存器 之一在任何時(shí)刻都將被選作S寄存器46下方的寄存器。用于選擇位于S下 方的堆棧寄存器的移位寄存器中的值不能由軟件讀取或?qū)懭?。類似地,返?堆棧28中的頂部位置是專用的R寄存器29,而返回堆棧28的剩余部分具 有循環(huán)寄存器陣列28a,其中具有被編號的12個(gè)附加硬件寄存器(在圖中沒 有具體示出),在該示例中為R,到Ru。
在本發(fā)明的該示例中,不存在對堆棧上溢或下溢條件的硬件檢測。通常, 現(xiàn)有技術(shù)的處理器使用堆棧指針和存儲器管理等,以便當(dāng)堆棧指針超出了為 該堆棧分配的存儲器的范圍時(shí),就標(biāo)記出錯(cuò)誤條件。這是因?yàn)槿绻褩N挥?存儲器中,則上溢或下溢將重寫或用作將不是堆棧部分的堆棧項(xiàng)(stack item)。不過,由于本發(fā)明在堆棧28和34的底部具有循環(huán)陣列28a和34a, 所以堆棧28和34不會上溢或下溢出堆棧區(qū)域。相反,循環(huán)陣列28a和34a 將只是回繞寄存器的循環(huán)陣列。由于堆棧28和34具有有限的深度,所以將 任何東西壓入堆棧28或34的頂部意味著底部上的某些東西正被重寫。將 10項(xiàng)以上壓入數(shù)據(jù)堆棧34或者將13項(xiàng)以上壓入返回堆棧28,將導(dǎo)致位于 堆棧28和34底部的所述項(xiàng)被重寫。軟件的作用在于保持對堆棧28和34上 的項(xiàng)數(shù)目的跟蹤,并不試圖在此處放置超出相應(yīng)堆棧28和34能容納的項(xiàng)。
硬件不會檢測出堆棧底部處的項(xiàng)的重寫或者將它標(biāo)記為錯(cuò)誤。不過,應(yīng)該注
意到的是,軟件可以以若干方式利用堆棧28和34底部處的循環(huán)陣列28a和 34a。僅作為一個(gè)示例,軟件可以簡單地<艮定堆棧28或34在任何時(shí)刻均為 "空"。由于陳舊項(xiàng)將朝底部被向下壓,在底部處當(dāng)堆棧填滿時(shí)陳舊項(xiàng)將丟 失,所以不需要從堆棧清除陳舊項(xiàng)。因此,對于程序來說不存在任何初始化 來假定堆棧為空。
除了在此之前所論述的寄存器之外,指令區(qū)域30還具有用于存儲當(dāng)前 正被使用的指令字48的18比特的指令寄存器30a,和在當(dāng)前被執(zhí)行的特定 指令中針對指令的附加5比特的操作碼寄存器30b。
圖4是指令字的圖示。(應(yīng)該注意的是,指令字48實(shí)際可以包含指令、 數(shù)據(jù),或它們的某種組合)。指令字48由18比特50組成。由于是二進(jìn)制 計(jì)算機(jī),所以每個(gè)比特50都將為"1"或"0"。如在此之前所論述的,18 比特寬的指令字48可以在稱為時(shí)段零54a、時(shí)段一54b、時(shí)段二54c和時(shí)段 三54d的四個(gè)時(shí)段54中包括多達(dá)四條指令52。在該發(fā)明的本實(shí)施例中,18 比特的指令字48—直作為整體被讀取。因此,由于在指令字48中一直存在 具有多達(dá)四條指令的可能性,所以no-op (非操作)指令被包括在計(jì)算機(jī)12 的指令集合中,以規(guī)定當(dāng)使用所有可用時(shí)段54可能不必要或者甚至不需要 時(shí)的情況。應(yīng)該注意的是,根據(jù)本發(fā)明的一個(gè)具體實(shí)施例,在間隔的時(shí)段(具 體地說,為時(shí)段一 54b和時(shí)段三54c)中,比特50的極性(高有效對比于低 有效)被反向。不過,這不是當(dāng)前所描述發(fā)明的必要方案,因此,為了更好 地闡述本發(fā)明,該潛在含義避免出現(xiàn)在下面論述中。
圖5是圖3中時(shí)段定序器42的圖示。從圖5的示圖中可以看出,時(shí)段 定序器42具有排列成環(huán)形的多個(gè)(在該示例中,為14個(gè))反相器56和一 個(gè)NAND門58,以便當(dāng)信號穿過14個(gè)反相器56和NAND門58時(shí)^皮反相 奇數(shù)次。當(dāng)?shù)絆R門60的兩個(gè)輸入中的任一個(gè)變成高電平時(shí),在時(shí)段定序 器42中產(chǎn)生信號。第一 OR門輸入62來源于被執(zhí)行的指令52的比特i4 66 (圖4)。如果比特i4為高電平,那么該特定指令52是ALU指令,而i4
比特66為"1"。當(dāng)i4比特為"1"時(shí),那么第一OR門輸入62為高電平, 而且時(shí)段定序器42被觸發(fā),以產(chǎn)生將要導(dǎo)致下一指令52執(zhí)行的脈沖。
當(dāng)時(shí)段定序器42通過第一 OR門輸入62變?yōu)楦唠娖交蛘咄ㄟ^第二 OR 門輸入64變?yōu)楦唠娖?如下文中將論述的)而被觸發(fā)時(shí),那么信號將圍繞 時(shí)段定序器42行進(jìn)兩次,每次都在時(shí)段定序器輸出68處生成一輸出。第一 次該信號經(jīng)過時(shí)段定序器輸出68時(shí),其將為低電平,而第二次時(shí)段定序器 輸出68處的輸出將為高電平。來自時(shí)段定序器輸出68的相對寬的輸出被提 供給脈沖生成器70 (示為塊圖的形式),脈沖生成器70生成窄的定時(shí)脈沖 作為輸出。本領(lǐng)域的技術(shù)人員將認(rèn)識到,需要窄定時(shí)脈沖來精確地啟動計(jì)算 機(jī)12的操作。
當(dāng)被執(zhí)行的特定指令52是讀取或?qū)懭胫噶罨蛘咂渌魏沃噶顣r(shí),其中 不希望被執(zhí)行的指令52立即觸發(fā)執(zhí)行順次的下一指令52,那么i4比特66 為"0"(低電平),因此第一OR門輸入62也為低電平。本領(lǐng)域的技術(shù)人 員將認(rèn)識到,例如計(jì)算機(jī)12的裝置中的事件的定時(shí)通常相當(dāng)嚴(yán)格,而不能 有例外。在對時(shí)段定序器42進(jìn)行考察之后,本領(lǐng)域的技術(shù)人員將認(rèn)識到, 來自O(shè)R門60的輸出必須保持高電平,直到信號已經(jīng)循環(huán)通過NAND門58, 從而開始循環(huán)的第二 "圈(lap)"之后。此后,在第二 "圈,,期間來自O(shè)R 門60的輸出將變成低電平,從而防止電路的有害持續(xù)振蕩。
根據(jù)以上論述可以理解的是,當(dāng)i4比特66是'0,時(shí),時(shí)段定序器42 將不被觸發(fā)-假定將在下文中論述的第二 OR門輸入66不是高電平。
如前面所述,每條指令52的i4比特66根據(jù)該指令是讀取還是寫入型 指令而被設(shè)置,相對于該指令是不需要任何輸入還是不需要輸出的一條指 令。指令52中的其余比特50為該指令提供了特定操作碼的剩余部分。在讀 取或?qū)懭胄椭噶畹那闆r下,在該特定計(jì)算機(jī)12中, 一個(gè)或更多的比特可以 用于指示數(shù)據(jù)將從何處讀取或者寫入何處。在本發(fā)明的該示例中,將被寫入 的數(shù)據(jù)一直來自于T寄存器44 (數(shù)據(jù)堆棧34的頂部),但是數(shù)據(jù)可以有選 擇地被讀入T寄存器44或者指令區(qū)域30,從此處可以執(zhí)行數(shù)據(jù)。這是由于
在本發(fā)明的該具體實(shí)施例中,數(shù)據(jù)或者指令可以以此處所描述的方式被傳
送,并且指令因此可以直接從數(shù)據(jù)總線16執(zhí)行。
一個(gè)或者更多的比特50將被用于指示端口 38的哪一個(gè)將被設(shè)置成讀取 或?qū)懭?,如果有這樣端口的話。可選地,后一操作通過利用一個(gè)或更多的比 特來指定寄存器40,例如A寄存器40a、 B寄存器40b等而被完成。在這樣 的示例中,所指定的寄存器40將被預(yù)載入數(shù)據(jù),數(shù)據(jù)具有對應(yīng)于每個(gè)端口 38 (并且還有計(jì)算機(jī)12可能試圖與其通信的其它任何潛在實(shí)體,例如存儲 器(RAM24或ROM26)、外部通信端口 39,等等)的比特。例如,特定 寄存器40中的四個(gè)比特中的每個(gè)可以分別對應(yīng)于上端口 38a、右端口 38b、 左端口 38c或下端口 38d中的每個(gè)。在這種情況下,在那些比特的位置的任 一處存在'l,的地方,通信將凈皮設(shè)定成通過相應(yīng)端口 38進(jìn)行。如同在此之前 所論述的,在本發(fā)明的該實(shí)施例中,所期望的是,讀取操作碼可能在單個(gè)指 令中設(shè)置一個(gè)以上的用于通信的端口 38,而盡管可能,但不期望寫入操作 碼在單個(gè)指令中設(shè)置一個(gè)以上的用于通信的端口 38。
緊接下來的例子將假定計(jì)算機(jī)12e試圖寫入計(jì)算機(jī)12c的通信,盡管該 示例適用于任何相鄰計(jì)算機(jī)12之間的通信。當(dāng)寫入指令在寫入計(jì)算機(jī)12e 中被執(zhí)行時(shí),所選擇的寫入線20(在該示例中是計(jì)算機(jī)12e與12c之間的寫 入線20)被設(shè)定為高電平,如果相應(yīng)的讀取線18已經(jīng)是高電平,那么數(shù)據(jù) 從所選擇的位置通過所選擇的通信端口 38被立即發(fā)送?;蛘?,如果相應(yīng)的 讀取線18還不是高電平,那么計(jì)算機(jī)12e將僅停止操作,直到相應(yīng)的讀取 線18確實(shí)變成高電平。當(dāng)存在讀取和寫入型指令時(shí),用于停止計(jì)算機(jī)12a (或者,更確切地說,使其不能進(jìn)行進(jìn)一步的操作)的機(jī)制,先前已被論述。 簡而言之,指令52的操作碼將在比特位置i4 66處具有'0,,因此OR門 60的第一 OR門輸入62是低電平,因此時(shí)段定序器42沒有被觸發(fā)以生成使 能脈沖。
至于當(dāng)讀取或?qū)懭胄椭噶畋煌瓿蓵r(shí)計(jì)算機(jī)12e的操作如何重新開始,這 種機(jī)制是這樣的當(dāng)計(jì)算機(jī)12e與12c之間的讀取線18和相應(yīng)的寫入線20
都為高電平時(shí),那么線18和20都將由保持其為高電平的每個(gè)相應(yīng)計(jì)算機(jī) 12釋放。(在該示例中,發(fā)送計(jì)算機(jī)12e將保持寫入線18為高電平,而接 收計(jì)算機(jī)12c將保持讀取線20為高電平)。然后,接收計(jì)算機(jī)12c將線18 和20都拉低。在實(shí)際的實(shí)踐中,接收計(jì)算機(jī)12c可能在發(fā)送計(jì)算機(jī)12e釋 放寫入線18之前就試圖將線18和20拉低。但是,由于線18和20被拉高 并且僅被不牢靠地保持(鎖存)為低電平,因此任何將線18和20拉低的企 圖實(shí)際上都將無法成功,直到線18或20由正保持其為高電平的計(jì)算機(jī)12 所釋放。
當(dāng)數(shù)據(jù)總線16中的線18和20都被拉低時(shí),這為"確認(rèn)"條件?;?這種確認(rèn)條件,每一計(jì)算機(jī)12e和12c將它自己內(nèi)部的確認(rèn)線72設(shè)定為高 電平。從圖5的示圖中可以看出,確認(rèn)線72提供了第二 OR門的輸入64。 由于到OR門60的輸入62或64的輸入將引起OR門60的輸出變成高電平, 因此這將以在此之前所述的方式啟動時(shí)段定序器42的操作,以便執(zhí)行在指 令字48的下一個(gè)時(shí)段54中的指令52。為了防止偽地址到達(dá)地址總線,確 認(rèn)線72保持高電平,直到下一個(gè)指令52被解碼。
在任何情況下,當(dāng)指令52在指令字48的時(shí)段三位置中被執(zhí)行時(shí),計(jì)算 機(jī)12將取出下一個(gè)等待的18比特的指令字48,當(dāng)然除非比特i4 66是'0,, 或者還除非時(shí)段三中的指令是"next"指令,這將在下文中更為詳細(xì)地進(jìn)行 論述。
在實(shí)際實(shí)踐中,本創(chuàng)造性機(jī)制包括這樣的方法和裝置,其用于預(yù)取出指 令,以便在指令字48中的所有指令52的執(zhí)行結(jié)束前,這種取出可以開始。 但是,這也不是目前所描述的發(fā)明的必要方案。
已經(jīng)詳細(xì)描述了以上示例,其中計(jì)算機(jī)12e正向計(jì)算機(jī)12c寫入。依照 前面論述可以理解的是,不管計(jì)算機(jī)12e是否首先試圖向計(jì)算機(jī)12c寫入或 者計(jì)算機(jī)12c首先試圖從計(jì)算機(jī)12e讀取,這些操作在本質(zhì)上是相同的。直 到計(jì)算機(jī)12e和12c都預(yù)備好,并且無論哪一個(gè)計(jì)算機(jī)12e或者12c首先預(yù) 備好簡單地"進(jìn)入休眠"直到另一計(jì)算機(jī)12e或12c完成傳輸,這些操作才
能完成。觀察前述過程的另一方式在于,實(shí)際上寫入計(jì)算機(jī)12e和接收計(jì)算 機(jī)12c當(dāng)它們分別執(zhí)行寫入和讀出指令時(shí)都進(jìn)入休眠,但是,當(dāng)讀取線18 和寫入線20都是高電平時(shí),進(jìn)行處理的后者幾乎立即再喚醒,然而開始處 理的第 一計(jì)算機(jī)12可以幾乎不確定地保持休眠直到第二計(jì)算機(jī)12即將完成 該過程。
發(fā)明人相信的是,用于實(shí)現(xiàn)設(shè)備之間有效異步通信的關(guān)鍵特征在于幾種 確認(rèn)信號或條件。在現(xiàn)有技術(shù)中,大多數(shù)設(shè)備之間的通信被計(jì)時(shí),并且對于 發(fā)送設(shè)備來說并沒有了解接收設(shè)備已正確接收到數(shù)據(jù)的直接方式。例如校驗(yàn) 和的操作方法可能已經(jīng)用于試圖確保數(shù)據(jù)被正確接收到,但是發(fā)送設(shè)備沒有 操作完成的任何直接指示。如此處所描述的,本創(chuàng)造性的方法提供了必要的 確認(rèn)條件,其允許或至少使設(shè)備之間的異步通信實(shí)用化。此外,確認(rèn)條件也 使一或多臺設(shè)備"進(jìn)入休眠"直到確認(rèn)條件發(fā)生成為可能。當(dāng)然,確認(rèn)條件 可以由正在計(jì)算機(jī)12之間發(fā)送(或者通過互連數(shù)據(jù)總線16或者通過單獨(dú)的 信號線)的單獨(dú)信號在計(jì)算機(jī)12之間傳送,并且這樣的確認(rèn)信號將落入本 發(fā)明的該方案的范圍之內(nèi)。然而,根據(jù)此處所描述的本發(fā)明的實(shí)施例,可以 理解的是,這里存在甚至更多的經(jīng)濟(jì)利益,原因在于,用于確認(rèn)的方法不需 要任何額外的信號、時(shí)鐘周期、定時(shí)脈沖,或除了上述之外的任何這類資源, 來實(shí)際上影響通信。
由于四條指令52可以被包括在指令字48中,并且由于根據(jù)本發(fā)明,整 個(gè)指令字48可以在計(jì)算機(jī)12之間被一次傳送,這展示了用于在一個(gè)操作中 傳送非常小的程序的理想機(jī)會。例如,多數(shù)小的"For/Next"循環(huán)可以在單 個(gè)指令字48中被實(shí)現(xiàn)。圖6是微循環(huán)100的圖示。不同于其它現(xiàn)有技術(shù)的 循環(huán),微循環(huán)100具有FOR指令102和NEXT指令104。由于指令字48 (圖 4)包含四條指令52,因此指令字48可以在單個(gè)指令字48中包括三個(gè)操作 指令106。操作指令106本質(zhì)上可以是程序員可能想要將其包括在微循環(huán)100 中的任何可用的指令??梢詮囊粋€(gè)計(jì)算機(jī)12傳送到另一個(gè)的微循環(huán)100典 型示例可以是,用于讀取或者寫入第二個(gè)計(jì)算機(jī)12的RAM 24的一組指令,
以便第一計(jì)算機(jī)12可以"借出"可用的RAM24容量。
FOR指令102將表示所需迭代數(shù)的值壓入返回堆棧28上。也就是說, 數(shù)據(jù)堆棧34頂部的T寄存器44中的值被壓入(PUSH )到返回堆棧28的R 寄存器29中。雖然經(jīng)常位于指令字48的時(shí)段三54d中,不過FOR指令102 實(shí)際上可以被設(shè)置在任意時(shí)段54中。當(dāng)FOR指令102沒有在時(shí)段三54d中 時(shí),該指令字48中的剩余指令52將在進(jìn)行微循環(huán)100之前被執(zhí)行,這通常 將是下一次被載入的指令字48。
根據(jù)本發(fā)明當(dāng)前所描述的實(shí)施例,在圖6的示圖中所描述的NEXT指令 104是特定類型的NEXT指令104。這是因?yàn)樗挥跁r(shí)段三54d (圖4)中。 根據(jù)本發(fā)明的該實(shí)施例,假定特定指令字40中所有遵照"普通"NEXT指 令(未示出)的數(shù)據(jù)是地址(for/next循環(huán)開始的地址)。無論用于NEXT 指令104的操作碼位于四個(gè)時(shí)段54中的哪一個(gè)(除了很明顯的例外,即如 前面所論述的,如果其位于時(shí)段三54d,則前兩位數(shù)被假定,而不是詳細(xì)寫 出)中,它都是相同的。但是,由于當(dāng)處于時(shí)段三54d中時(shí)沒有任何遵照 NEXT指令104的地址數(shù)據(jù),因此也可以假定時(shí)段三54d中的NEXT指令 104是MICRO-NEXT指令104a。 MICRO-NEXT指令104a使用第一指令52 的地址,其位于所在的同一指令字48的時(shí)段零54a中,作為其返回地址。 MICRO-NEXT指令104a也可以取R寄存器29中的值(它最初由FOR指令 壓到這里),對它減l,然后將它返回到R寄存器29。當(dāng)R寄存器29中的 值達(dá)到預(yù)定值(例如0)時(shí),那么MICRO-NEXT指令將載入下一個(gè)指令字 48,并在此如上所述繼續(xù)進(jìn)行。但是,當(dāng)MICRO-NEXT指令104a從R寄 存器29中讀取的值大于預(yù)定值時(shí),將在自身指令字48的時(shí)段零54a處重新 開始操作,并執(zhí)行其中包含的位于時(shí)段零到時(shí)段三中的三條指令52。也就 是說,在本發(fā)明的該實(shí)施例中,MICRO-NEXT指令104a將一直執(zhí)行三條操 作指令106。在某些情況下,由于可能不需要使用所有三條潛在可用的指令 52,因此按照需要,"no-op"指令可用于填充一個(gè)或兩個(gè)時(shí)段54。
應(yīng)該注意的是,微循環(huán)100可以整個(gè)用于單個(gè)計(jì)算才幾12中。實(shí)際上,
整組可用的機(jī)器語言指令都可以作為操作指令106使用,并且對微循環(huán)的應(yīng) 用和使用僅受限于程序員的構(gòu)想。但是,當(dāng)在單個(gè)指令字48中執(zhí)行整個(gè)微 循環(huán)100的能力,與允許計(jì)算機(jī)12將指令字48發(fā)送到相鄰計(jì)算機(jī)12以在 其中執(zhí)行本質(zhì)上直接來自數(shù)據(jù)總線16的指令52的能力相結(jié)合時(shí),這提供了 用于允許計(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è)計(jì)算機(jī)12想要將一些數(shù)據(jù)存儲 在相鄰計(jì)算機(jī)12的存儲器中。例如,它可以首先將指令發(fā)送到相鄰計(jì)算機(jī), 告訴相鄰計(jì)算機(jī)將輸入數(shù)據(jù)字存儲在特定存儲器地址中,然后遞增該地址, 再然后重復(fù)給定的迭代數(shù)(數(shù)據(jù)字將被傳送的次數(shù))。為了讀回?cái)?shù)據(jù),第一 計(jì)算機(jī)將僅指令第二計(jì)算機(jī)(這里指用于存儲的計(jì)算機(jī))使用類似的微循環(huán)
將已存儲數(shù)據(jù)寫回到第 一計(jì)算機(jī)。
通過結(jié)合此處所述的直接執(zhí)行方案來使用微循環(huán)100結(jié)構(gòu),計(jì)算機(jī)12 可以使用另一休眠的相鄰計(jì)算機(jī)12,用于當(dāng)數(shù)據(jù)存儲需要超過內(nèi)置于單個(gè) 計(jì)算機(jī)12中的相對較小容量時(shí),存儲超出數(shù)據(jù)。雖然該示例按照數(shù)據(jù)存儲 進(jìn)行了描述,不過相同的技術(shù)可以等同地用于允許計(jì)算機(jī)12使其鄰居共享 其計(jì)算資源-通過創(chuàng)建微循環(huán)100來使其它計(jì)算機(jī)12執(zhí)行一些操作,存儲 結(jié)果,并且重復(fù)給定次數(shù)??梢岳斫獾氖牵緞?chuàng)造性的微循環(huán)100結(jié)構(gòu)可以 被使用的方式的數(shù)量幾乎是無限的。
如在此之前所提到的,在本發(fā)明當(dāng)前所描述的實(shí)施例中,數(shù)據(jù)或指令都 可以通過此處所描述的方式進(jìn)行通信,因此指令實(shí)質(zhì)上可以直接從數(shù)據(jù)總線 16被執(zhí)行。也就是說,不需要在執(zhí)行之前將指令存儲到RAM 24中,然后 再調(diào)用它們。相反,根據(jù)本發(fā)明的這個(gè)方案,在通信端口 38接收到的指令 字48在本質(zhì)上沒有被視為與假設(shè)從RAM 24或ROM 26再調(diào)用的情況有所 不同。雖然在之前的關(guān)于計(jì)算機(jī)12所述操作的討論中揭示了這種差異的缺
乏,但是以下對指令字48如何被取出并被使用的更詳細(xì)論述將幫助理解本 發(fā)明。
一種可用的機(jī)器語言指令是FETCH指令。FETCH指令使用A寄存器 40a中的地址以確定從何處取出18比特的字。當(dāng)然,將不得不為了在A寄 存器40a中設(shè)置正確的地址而提供程序。如在此之前所論述的,A寄存器40a 是18比特的寄存器,以便有足夠的地址數(shù)據(jù)范圍,以用于區(qū)別所述取出可 能發(fā)生自哪個(gè)任何潛在資源。也就是說,存在分配給ROM的地址范圍,分 配給RAM的不同地址范圍,并且存在每個(gè)端口 38和外部1/0端口 39的特 定地址。FETCH指令一直將其取出的18比特設(shè)置在T寄存器44中。
相反地,如在此之前所論述的,可執(zhí)行指令(相對于數(shù)據(jù))被暫時(shí)存儲 在指令寄存器30a中。不存在專用的命令,用于將18比特指令字48 "取" 到指令寄存器30a中。相反,當(dāng)在指令寄存器30a中未留下任何更多的可執(zhí) 行指令時(shí),那么計(jì)算機(jī)將自動取出"下一"指令字48。"下一,,指令所在 的位置由"程序計(jì)數(shù)器"(P寄存器40c)確定。在從RAM 24或ROM 26 中取出指令字48序列的情況下,P寄存器40c通常自動遞增。然而,對于 這個(gè)總原則也有許多例外。例如,JUMP或CALL指令將導(dǎo)致P寄存器40c 被載入地址,該地址由JUMP或CALL指令后的當(dāng)前載入指令字48的剩余 部分中的數(shù)據(jù)所指定,而不是被遞增。然后,當(dāng)P寄存器40c被載入對應(yīng)于 一或更多端口 38的地址時(shí),下一指令字48將從端口 38被載入指令寄存器 30a。當(dāng)指令字48剛從端口 38被取回到指令寄存器30a時(shí),P寄存器40c 也不遞增。相反,它將繼續(xù)保持相同端口地址,直到執(zhí)行專用JUMP或CALL 指令,以改變P寄存器40c。也就是說, 一旦告訴計(jì)算機(jī)12從端口 38尋找 它的下一條指令,那么它就將從該同一端口 38 (或多個(gè)端口 38)繼續(xù)尋找 指令,直到其被告知尋找其它地方,例如返回到存儲器(RAM 24或ROM 26 ) 以尋找它的下一指令字48。
如以上所應(yīng)該注意的,在當(dāng)前指令字48中未留下任何更多的可執(zhí)行指 令時(shí),計(jì)算機(jī)12知道已取出的下一個(gè)18比特將被放置在指令寄存器30a中。
在默認(rèn)情況下,在JUMP或CALL指令(或者也在此處將不被具體論述的其 它一些指令)之后,在當(dāng)前指令字48中未留下任何更多的可執(zhí)行指令,這 是因?yàn)楦鶕?jù)定義遵照J(rèn)UMP或CALL指令的18比特的指令字的剩余部分被 專用于由JUMP或CALL指令所引用的地址。另一種陳述方式是,前述過程 在許多方式下是獨(dú)一無二的,包括但不限于這種事實(shí),即JUMP或CALL指 令可選地到端口 38而不是只到存儲器地址等。
應(yīng)該記住的是,如在此之前所論述的,計(jì)算才幾12可以從一個(gè)端口 38或 從端口組38的任何一個(gè)尋找其下一條指令。因此,提供對應(yīng)于端口 38的各 種組合的地址。例如,當(dāng)計(jì)算機(jī)被告知從端口組38中取出指令時(shí),它將從 所選擇的端口 38的任一個(gè)接受第一個(gè)可用指令字48。如果沒有相鄰計(jì)算機(jī) 12試圖向這些端口 38中的任一個(gè)寫入,如前面所詳細(xì)描述的,所被考慮的 計(jì)算機(jī)12將"進(jìn)入休眠",直到鄰居確實(shí)向所選擇的端口 38寫入為止。
圖7是描述以上所述的直接執(zhí)行方法120的示例的流程圖。如在此之前 所論述的,當(dāng)指令寄存器30a中不再留下可執(zhí)行指令時(shí),操作的"正常 (normal),,流程將開始。這時(shí),如由"取出字"操作122所指示的,計(jì)算 機(jī)12將"取出"另一指令字(注意這里所使用術(shù)語"取出"是普通含義上 的,因?yàn)閷?shí)際的FETCH指令并沒有被使用)。該操作將按照P寄存器40c 中的地址(由圖7流程圖中的"地址"判斷操作124所指示)被完成。如果 P寄存器40c中的地址是RAM 24或ROM 26地址,那么下一指令字48將 在"從存儲器中取出"的操作126中從指定的存儲器位置被取回。另一方面, 如果P寄存器40c中的地址是端口 38或多個(gè)端口 38的地址(不是存儲器地 址),那么下一指令字48將在"從端口取出,,的操作128中從指定的端口 位置被取回。在任一情況下,被取回的指令字48在"取回指令字"的操作 130中被放置在指令寄存器30c中。如在此之前所描述的,在"執(zhí)行指令字" 的操作132中,指令字48的時(shí)段54中的指令依次被完成。
在"跳轉(zhuǎn)"判斷的操作134中,確定指令字48中的操作之一是JUMP 指令,還是如在此之前所述的,其它的將操作從連續(xù)"正常"進(jìn)程轉(zhuǎn)移的指
令。如果是,那么如圖7的示圖所示,在"載入P寄存器"的操作136中, 在JUMP (或其它這種)指令之后,指令字48中所提供的地址被提供給P 寄存器40c,并且在"取出字"的操作122中,序列再次開始。如果否,那 么下一個(gè)動作取決于最后指令的取出是來自端口 38還是來自存儲器地址, 如"端口地址"判斷操作138中所示。如果最后指令的取出是來自端口 38, 那么不對P寄存器30a作任何修改,并且序列從"取出字"的操作122開始 重復(fù)。另一方面,如果最后指令的取出是來自存儲器地址(RAM24或ROM 26),那么在"取出字,,的操作122完成之前,P寄存器30a中的地址被遞 增,如圖7中的"遞增P寄存器"操作140所示。
以上描述并不是用來表示實(shí)際的操作步驟。相反,它是由此產(chǎn)生的根據(jù) 本發(fā)明所述實(shí)施例被執(zhí)行的各種判斷和操作的圖示。實(shí)際上,該流程圖不應(yīng) 該被理解成意味著每個(gè)所描述和所顯示的步驟都需要分開的明顯的順序步 驟。實(shí)際上,圖7的流程圖中的許多所述操作在實(shí)踐中通常同時(shí)完成。
圖8是描述用于提醒計(jì)算機(jī)的本創(chuàng)造性改進(jìn)方法的示例的流程圖。如在 此之前所論述的,所述實(shí)施例中的計(jì)算機(jī)12在等待輸入的同時(shí)將"進(jìn)入休 眠"。這樣的輸入可以來自關(guān)于圖l到圖5所述實(shí)施例中的相鄰計(jì)算機(jī)12。 可選擇地,也如同在此之前所論述的,具有鄰接芯片14邊緣的通信端口38 的計(jì)算機(jī)12可以具有附加電路,所述附加電路設(shè)計(jì)在這種計(jì)算機(jī)12中或者 設(shè)計(jì)在計(jì)算機(jī)12與之相連的外部,以使這種通信端口 38擔(dān)當(dāng)外部1/0端口 39。在任一情況下,本創(chuàng)造性的組合可以提供附加優(yōu)點(diǎn),即"休眠"計(jì)算機(jī) 12可以保持狀態(tài),并預(yù)備好在接收到輸入時(shí)喚醒并跳轉(zhuǎn)到一些規(guī)定的動作 中。因此,本發(fā)明也提供了對使用中斷處理輸入的可選方案,而無論這些輸 入來自于外部輸入設(shè)備,還是來自陣列10中的另一計(jì)算機(jī)12。
如前面所述,不用使計(jì)算機(jī)12為了處理中斷不得不停止(或暫停)其 正在進(jìn)行的工作,此處所描述的創(chuàng)造性組合將允許計(jì)算機(jī)12處于"休眠但 警醒"的狀態(tài)。因此,可以分配一臺或多臺計(jì)算機(jī)12以接收并作用于一定 的輸入。雖然有很多可以使用這種特征的方式,在圖8的示圖中僅示出一種
示例用于圖示這樣的"計(jì)算機(jī)提醒方法",并且在此處用附圖標(biāo)記150列出。 從圖8的示圖中可以看出,在"進(jìn)入提醒狀態(tài)"的操作152中,計(jì)算機(jī)12 被促使"進(jìn)入休眠",以便它正在等待來自相鄰計(jì)算機(jī)12或者一臺以上(可 為所有的四臺)相鄰計(jì)算機(jī)的輸入,或者在"邊緣"計(jì)算機(jī)12的情況下, 等待外部輸入,或者等待外部輸入和/或來自相鄰計(jì)算機(jī)12的輸入的某種組 合。如同在此之前所述的,計(jì)算機(jī)12可以在等待讀取或?qū)懭氩僮鞯耐瓿蓵r(shí)
"進(jìn)入休眠"。如同該示例中所描述的,當(dāng)計(jì)算機(jī)12正被用于等待一些可 能的"輸入"時(shí),那么自然會假定,等待計(jì)算機(jī)在等待來自鄰居或外部源的
"寫入"時(shí)已將它的讀取線18設(shè)定為高電平。實(shí)際上,目前所預(yù)期的是, 這將是通常的狀況。然而,等待計(jì)算機(jī)12將它的寫入線20設(shè)定為高電平并 因此在鄰居或外部源從其"讀取"時(shí)被喚醒,都在本發(fā)明的范圍之內(nèi)。
在"喚醒"的操作154中,休眠的計(jì)算機(jī)12被促使重新開始操作,這 是因?yàn)橄噜徲?jì)算機(jī)12或外部設(shè)備39已完成了正被等待的處理。如果正被等 待的處理是接收將被執(zhí)行的指令字48,那么計(jì)算機(jī)12將繼續(xù)執(zhí)行其中的指 令。如果正被等待的處理是接收數(shù)據(jù),那么計(jì)算機(jī)將繼續(xù)執(zhí)行隊(duì)列中的下一 條指令,其將是目前指令字48的下一時(shí)段54中的指令,或者下一指令字 48將被載入,并且下一指令將位于下一指令字48的時(shí)段零中。在任何情況 下,既然以所描述的方式被使用,那么下一條指令將開始一條或多條指令的 序列(sequence),用于處理剛接收到的輸入。用于處理這種輸入的選項(xiàng)可 以包括,對執(zhí)行某種內(nèi)部預(yù)定功能的反應(yīng),與陣列IO中的一臺或多臺其它 計(jì)算機(jī)12通信,甚或是忽略輸入(正如同常規(guī)現(xiàn)有技術(shù)一樣,中斷可以在 規(guī)定的條件下被忽略)。選項(xiàng)在圖8的示圖中被描述為"作用于輸入"的操 作156。應(yīng)該注意的是,在一些例子中,輸入的內(nèi)容可能不重要。例如,在 一些情況下,外部設(shè)備試圖進(jìn)行感興趣的通信可能才是事實(shí)。
在圖8所示的方式下,如果計(jì)算機(jī)12被分配擔(dān)任"提醒,,計(jì)算機(jī)的任 務(wù),那么它通常返回到"休眠但警醒,,的狀態(tài),如圖8所示。但是,選項(xiàng)一 直打開,以給計(jì)算機(jī)12分配一些其它的任務(wù),例如當(dāng)不再需要監(jiān)視特定的在被監(jiān)控的輸入時(shí),或當(dāng)更便于將該任務(wù)傳輸?shù)疥?duì)列中的其它 一 些計(jì)算機(jī)
12時(shí)。
本領(lǐng)域的技術(shù)人員人將認(rèn)識到,前述操作模式將用作比使用常規(guī)中斷更 有效的替代方案。當(dāng)計(jì)算機(jī)12已將其一條或多條讀取線18 (或?qū)懭刖€20) 設(shè)定為高電平時(shí),可以說是處于"警醒,,狀態(tài)。在警醒狀態(tài)中,計(jì)算機(jī)12 預(yù)備好立即執(zhí)行在對應(yīng)于被設(shè)定為高電平的一條或多條讀取線18的數(shù)據(jù)總 線16上被發(fā)送至此的任何指令,或者可選擇地,作用于在數(shù)據(jù)總線16上被 傳輸?shù)臄?shù)據(jù)。當(dāng)有計(jì)算機(jī)12的陣列可用時(shí),在任何給定時(shí)刻, 一臺或多臺 計(jì)算機(jī)將處于前述警醒狀態(tài),以便所規(guī)定的輸入組中的任一個(gè)將觸發(fā)它進(jìn)行 動作。優(yōu)選地,使用常規(guī)中斷技術(shù)來"引起計(jì)算機(jī)的注意",這是因?yàn)橹袛?將導(dǎo)致計(jì)算機(jī)必須響應(yīng)于中斷需求來存儲一定數(shù)據(jù),載入一定數(shù)據(jù),等等。 按照本發(fā)明,計(jì)算機(jī)可以被設(shè)置在警醒狀態(tài)并專用于等待感興趣的輸入,以 便在由這些輸入觸發(fā)的指令開始執(zhí)行時(shí),不會浪費(fèi)一個(gè)指令周期。此外,注 意到的是,在目前所述的實(shí)施例中,警醒狀態(tài)中的計(jì)算機(jī)實(shí)際上將是"休眠 但警醒",這意味著它們在基本上不使用任何功率方面是"休眠"的,但在 它們會由輸入立即觸發(fā)進(jìn)入動作方面,又是"警醒"的。不過,即使不處于 "休眠,,狀態(tài),"警醒,,狀態(tài)仍可以體現(xiàn)在計(jì)算機(jī)中,這些都在本發(fā)明該方 案的范圍之內(nèi)。所描述的警醒狀態(tài)基本上可以用于任何狀況下,其中常規(guī)現(xiàn) 有技術(shù)的中斷(或者是硬件中斷或者是軟件中斷)可能以其它方式被使用。
圖9是計(jì)算機(jī)提醒方法150a的另一示例。這只是一個(gè)示例,其中監(jiān)控 計(jì)算機(jī)12f (圖1 )與另一個(gè)被分配以其它某種任務(wù)的計(jì)算機(jī)12g (圖1 )之 間的交互可能是需要的或必要的。從圖9的示圖可見,有兩個(gè)通常獨(dú)立的流 程圖,分別對應(yīng)計(jì)算機(jī)12f和12g。這指示出本發(fā)明的合作共同處理器方式 的自然特性,其中每個(gè)計(jì)算機(jī)12自身通常獨(dú)立執(zhí)行地分配,除了此處描述 的完成交互的情況之外。
對于計(jì)算機(jī)12f來說,"進(jìn)入警醒狀態(tài)"的操作152,"喚醒"操作154 和"作用于輸入"操作中的每個(gè),都如在此之前關(guān)于計(jì)算機(jī)提醒方法150的
第一示例所描述的一樣被實(shí)現(xiàn)。但是,由于該示例預(yù)期可能需要計(jì)算機(jī)12f 與12g之間的交互,所以接著"作用于輸入,,的操作156的是,計(jì)算機(jī)12f 進(jìn)入"發(fā)送信息?"的判斷操作158,其中其按照自己的程序,確定剛接收 到的輸入是否需要引起其它計(jì)算機(jī)12g的注意。如果否,那么計(jì)算機(jī)12f返 回到警醒狀態(tài),或者如此前所論述的其它一些可選項(xiàng)。如果是,那么在"發(fā) 送到其它"的操作160中,如此前詳細(xì)描述的,計(jì)算機(jī)12f開始與計(jì)算機(jī)12g 通信。應(yīng)該注意的是,按照程序員的選擇,計(jì)算機(jī)12f可以發(fā)送指令,例如 可以發(fā)送響應(yīng)于來自外部設(shè)備82的輸入而在內(nèi)部產(chǎn)生的指令,或者發(fā)送例 如從外部設(shè)備82接收到的指令??蛇x擇地,計(jì)算機(jī)12f可以將數(shù)據(jù)傳遞到 計(jì)算機(jī)12g,并且這些數(shù)據(jù)可以在計(jì)算機(jī)12f內(nèi)部產(chǎn)生,或者從外部設(shè)備82 "經(jīng)過"。另一可選方案還可以是,在一些狀況下,計(jì)算機(jī)12f可能在其接 收來自外部設(shè)備82的輸入時(shí)試圖從計(jì)算機(jī)12g讀取。所有這些可能程序員 都可以使用。
同時(shí),如在"執(zhí)行主要功能"操作162中所示的,計(jì)算機(jī)12g通常執(zhí)行 代碼以完成分配給它的主要任務(wù),無論是什么任務(wù)。然而,如果程序員確定 需要計(jì)算機(jī)12f和12g之間的偶然交互處理,那么程序員將提供出,計(jì)算機(jī) 12g偶然暫停以查看其一臺或多臺相鄰計(jì)算機(jī)是否試圖通信,如"尋找輸入,, 的操作166所示。如"輸入?,,的判斷操作158所示,是否存在等待的通信 (例如,計(jì)算機(jī)12f是否已開始向計(jì)算機(jī)12g寫入)。如果存在已開始的通 信(是),那么如此前詳細(xì)描述的,在"從其它接收,,的操作170中,計(jì)算 機(jī)12g將完成通信。如果否,那么計(jì)算機(jī)12g將返回執(zhí)行其主要功能162, 如圖9所示。在"從其它接收,,操作170之后,計(jì)算機(jī)12g將作用于在"作 用于輸入"的操作172中接收到的輸入。如前面提到的,程序員可能已經(jīng)提 供了計(jì)算機(jī)12g所期待輸入中的指令,在這種情況下,如同此前所描述的, 計(jì)算機(jī)12g將執(zhí)行指令??蛇x擇地,計(jì)算機(jī)12g可以被編程以等待所作用的 數(shù)據(jù)。
在圖9的示例中,示出了在"作用于輸入"的操作172之后,計(jì)算機(jī)
12g返回完成它的主要功能(也就是說,其返回到"執(zhí)行主要功能"的操作 162)。然而, 一定存在甚至更復(fù)雜示例的可能性。例如,編程可以是這樣 的,即從計(jì)算機(jī)12f接收到的某種輸入將導(dǎo)致計(jì)算機(jī)12g中斷之前被分配的 主要功能,并開始一個(gè)新功能,或者它可以簡單地暫時(shí)停止并等待進(jìn)一步的 輸入。本領(lǐng)域的技術(shù)人員將認(rèn)識到,此處動作的各種可能性僅受限于程序員 的構(gòu)思。
應(yīng)該注意的是,按照此處所描述的本發(fā)明的實(shí)施例,給定的計(jì)算機(jī)12 當(dāng)正執(zhí)行任務(wù)時(shí)不需要被中斷,這是因?yàn)榱硪挥?jì)算機(jī)12被分配了監(jiān)控和處 理可能另外需要中斷的輸入的任務(wù)。但是,有趣的是,還注意到,忙于處理 其它任務(wù)的計(jì)算機(jī)12也不能被打擾,除非并且直到它的程序提供了它查看 其端口38以尋找輸入。因此,有時(shí)將需要使計(jì)算機(jī)12暫停尋找其它輸入。 重要的是要認(rèn)識到,此處正描述的是可被描述為"合作多任務(wù)"的計(jì)算范例 的示例,其中以前可通過單個(gè)處理器被完成的任務(wù),以新的有趣方式在多個(gè) 處理器中被劃分。
在不改變本發(fā)明的值或范圍的情況下,可以對本發(fā)明做各種修改。例如, 雖然此處使用特定計(jì)算機(jī)12的示例描述了本發(fā)明,但是很多或所有創(chuàng)造性 的方案將容易適于其它計(jì)算機(jī)設(shè)計(jì)、其它類型的計(jì)算機(jī)陣列,等等。
類似地,雖然此處主要針對在單個(gè)芯片14上的陣列10中的計(jì)算機(jī)12 之間的通信描述了本發(fā)明,不過,相同的原理和方法可以被使用或修改,以 用于完成其它設(shè)備間通信,例如計(jì)算機(jī)12與其專用存儲器或陣列IO的計(jì)算 機(jī)12與外部設(shè)備之間的通信。
雖然此處論述了本創(chuàng)造性的計(jì)算機(jī)陣列10、計(jì)算機(jī)12、微循環(huán)100、 直接執(zhí)行方法120和相關(guān)裝置以及計(jì)算機(jī)提醒方法150的具體示例,不過所 期望的是,對于未被構(gòu)想的那些將有大量的應(yīng)用。實(shí)際上,本發(fā)明的一個(gè)優(yōu) 點(diǎn)在于本創(chuàng)造性的方法和裝置可以適于多種應(yīng)用。
以上所有的這些只是本發(fā)明可用實(shí)施例的一些示例。本領(lǐng)域的技術(shù)人員 將容易觀察到,在不脫離本發(fā)明的精神和范圍的情況下,可以進(jìn)行其它許多
修改和替換。因此,此處的公開并不意圖限定,而所附的權(quán)利要求書將被解 釋為包括本發(fā)明的整個(gè)范圍。
工業(yè)實(shí)用性
本創(chuàng)造性的計(jì)算機(jī)陣列10、計(jì)算機(jī)12、微循環(huán)100、直接執(zhí)行方法120 和相關(guān)裝置以及計(jì)算機(jī)提醒方法150意在廣泛地用于多種計(jì)算機(jī)應(yīng)用場合。 所期望的是,它們在需要相當(dāng)大計(jì)算能力并且功耗和放熱還是重點(diǎn)考慮因素 的應(yīng)用場合將特別有用。
如此前論述,本發(fā)明的應(yīng)用性是這樣的陣列中的計(jì)算機(jī)之間的信息和 資源的共享得到大大增強(qiáng),無論在速度和通用性方面。另外,根據(jù)所描述的 方法和裝置,計(jì)算機(jī)陣列與其它設(shè)備之間的通信得到增強(qiáng)。
由于本發(fā)明的計(jì)算機(jī)陣列10、計(jì)算機(jī)12、微循環(huán)100、直接執(zhí)行方法 120和相關(guān)裝置以及計(jì)算機(jī)提醒方法150可以容易產(chǎn)生并與現(xiàn)有任務(wù)、輸入 /輸出設(shè)備等等一起集成,并且由于此處所描述的優(yōu)點(diǎn)被提供,因此可預(yù)見 的是,它們將易于在業(yè)界被接受。由于這些或其它原因,可預(yù)見的是,本發(fā) 明的實(shí)用性和工業(yè)應(yīng)用在范圍和長期持續(xù)方面都將是明顯的。
注意該對照表僅作為信息目的提供。它并不是官方專利申請文件的一 部分。
對照表
10計(jì)算機(jī)陣列
12計(jì)算機(jī)
14芯片
16數(shù)據(jù)總線
18讀取線
20寫入線
22數(shù)據(jù)線
24 RAM
26 ROM
28返回堆棧
28a循環(huán)寄存器陣列
29R寄存器
30指令區(qū)域
30a指令寄存器
30b操作碼寄存器
32 ALU
34數(shù)據(jù)堆棧
34a循環(huán)寄存器陣列
36解碼部分
38內(nèi)部通信端口
38a上端口
38b右端口
38c左端口
38d下端口
39外部I/O端口
40寄存器
40aA寄存器 40bB寄存器 40cP寄存器 42時(shí)段定序器 44T寄存器 46S寄存器 48指令字 50比特 52指令 54時(shí)段 54a時(shí)段O 54 b時(shí)段1 54 c時(shí)段2 54 d時(shí)段3 56反相器 58 NAND門 60 OR門
62第一 OR門輸入 64第二 OR門輸入 66 i4比特 68時(shí)段定序器輸出 70脈沖生成器 72確認(rèn)線 80接口電路 82外部設(shè)備 100纟敬循環(huán) 102 FOR指令 104 NEXT指令 106操作指令
108 MICRO-NEXT指令 120直接執(zhí)行方法
122 "取出字"操作
124 "地址?"判斷操作
126 "從存儲器取出"操作
128 "從端口取出"操作
130 "取回指令字,,操作
132 "執(zhí)行指令字"操作
134 "跳轉(zhuǎn)?"判斷操作
136 "載入P寄存器"操作
138 "端口地址?,,判斷操作
140 "遞增P寄存器"操作 150計(jì)算機(jī)提醒方法 150a計(jì)算機(jī)提醒方法
152 "進(jìn)入警醒狀態(tài)"操作
154 "喚醒,,操作
156 "作用于輸入"操作
158 "發(fā)送信息?"判斷操作
160 "發(fā)送至其它"操作
162 "執(zhí)行主要功能"操作
166 "尋找輸入"操作
168 "輸入"判斷操作
170 "從其它接收"操作
172 "作用于輸入"操作
權(quán)利要求
1、在計(jì)算機(jī)中,一種改進(jìn)包括多條指令,其通常被同時(shí)讀取;其中所述多條指令被重復(fù)一定的迭代數(shù),該迭代數(shù)由堆棧上的數(shù)值所指示。
2、 如權(quán)利要求1所述的計(jì)算機(jī),其中 所述堆棧上的數(shù)值在每次迭代之后遞減。
3、 如權(quán)利要求1所述的計(jì)算機(jī),其中 所述多條指令中的最后指令是NEXT指令。
4、 如權(quán)利要求3所述的計(jì)算機(jī),其中所述NEXT指令使所述堆棧上的數(shù)值改變,并進(jìn)一步使所述計(jì)算機(jī)的操 作在所述多條指令中的第一條指令處繼續(xù),直到所述堆棧上的數(shù)值達(dá)到預(yù)定值。
5、 如權(quán)利要求1所述的計(jì)算機(jī),其中當(dāng)NEXT指令是所述多條指令中的最后指令時(shí),所述計(jì)算機(jī)將在所述多 條指令中的第 一條指令處繼續(xù)操作,直到所述堆棧上的數(shù)值達(dá)到預(yù)定值。
6、 如權(quán)利要求5所述的計(jì)算機(jī),其中 所述預(yù)定值是零。
7、 如權(quán)利要求1所述的計(jì)算機(jī),進(jìn)一步包括 所述多條指令之前的FOR指令。
8、 如權(quán)利要求7所述的計(jì)算機(jī),其中 所述FOR指令使所述數(shù)值置于所述堆棧上。
9、 如權(quán)利要求7所述的計(jì)算機(jī),其中所述FOR指令位于恰在所述多條指令之前的一指令組中。
10、 一種使計(jì)算機(jī)執(zhí)行循環(huán)的方法,包括(a)配置所迷計(jì)算機(jī),以便當(dāng)NEXT指令作為一指令組中的最后指令 出現(xiàn)時(shí),所述計(jì)算機(jī)將所述NEXT指令之后依次執(zhí)行所述整個(gè)指令組若干 次,該次數(shù)由計(jì)數(shù)器指示;(b) 將所述NEXT指令設(shè)置在所述指令組中的最后位置中;以及(c) 將FOR指令設(shè)置在所述指令組之前,其中所述FOR指令設(shè)定所 述計(jì)數(shù)器;其中所述指令組作為單個(gè)單元一般由所述計(jì)算機(jī)同時(shí)讀取。
11、 如權(quán)利要求IO所述的方法,其中 所述指令組包括四條指令。
12、 如權(quán)利要求IO所述的方法,其中所述指令組中的至少一條所述指令是NO-OP指令,其中所述NO-OP 指令是所述計(jì)算機(jī)將跳過而不執(zhí)行的位置標(biāo)志符。
13、 如權(quán)利要求IO所述的方法,其中 所述計(jì)數(shù)器是堆棧頂部上的值。
14、 如權(quán)利要求10所述的方法,其中 所述NEXT指令使所述計(jì)數(shù)器改變。
15、 如權(quán)利要求10所述的方法,其中 所述NEXT指令使所述計(jì)數(shù)器遞減。
16、 一種計(jì)算機(jī)可讀介質(zhì),其中具有用于使電子設(shè)備執(zhí)行權(quán)利要求10 中的所述步驟的代碼。
17、 一種用于執(zhí)行計(jì)算機(jī)中的指令的方法,包括(a) 在寄存器中設(shè)置一數(shù)值;(b) 取出一指令組;(c) 依次執(zhí)行所述指令組中的所述指令;(d) 使所述寄存器中的數(shù)值改變;以及,(e)重復(fù)所述步驟(c)和(d),直到所述寄存器中的數(shù)值達(dá)到預(yù)定 值。 ,
18、 如權(quán)利要求17所述的方法,進(jìn)一步包括 取出另一指令組;以及 繼續(xù)所述另一指令組中的第一條指令。
19、 如權(quán)利要求17所述的方法,其中在所述步驟(b)中,所述指令組被取出到指令寄存器之中;以及 在所述步驟(c)中,所述指令從所述指令寄存器執(zhí)行。
20、 如權(quán)利要求17所述的方法,其中在所述步驟(b)中,所述指令組中的所述指令通常被同時(shí)取出。
21、 如權(quán)利要求17所述的方法,其中 所述寄存器是堆棧中的頂部元件。
22、 如權(quán)利要求17所述的方法,其中 在所述步驟(c)中,所述數(shù)值遞減。
23、 一種計(jì)算機(jī)可讀介質(zhì),其中具有用于使電子設(shè)備執(zhí)行權(quán)利要求17 中的所述步驟的代碼。
24、 一種計(jì)算機(jī),包括 通常用于同時(shí)讀取多條指令的裝置,和用于重復(fù)所述多條指令一定迭代數(shù)的裝置。
全文摘要
計(jì)算機(jī)陣列(10)具有多臺計(jì)算機(jī)(12)。計(jì)算機(jī)(12)彼此異步通信,并且計(jì)算機(jī)(12)本身在內(nèi)部通常以異步方式運(yùn)行。當(dāng)一臺計(jì)算機(jī)(12)試圖與另一臺計(jì)算機(jī)通信時(shí),它將進(jìn)入休眠,直到其它計(jì)算機(jī)(12)即將完成處理,從而省電并減少放熱。休眠的計(jì)算機(jī)(12)可以正等待數(shù)據(jù)或指令(12)。在指令的情況下,休眠的計(jì)算機(jī)(12)可以正等待存儲指令或立即執(zhí)行指令。在后者情況下,當(dāng)接收指令時(shí),指令被置于指令寄存器(30a)中,并從此處被執(zhí)行,而不需要首先將指令置于存儲器中。指令可以包括能重復(fù)執(zhí)行一系列操作的微循環(huán)(100)。在一種應(yīng)用中,休眠的計(jì)算機(jī)(12)由輸入喚醒,以便開始一動作,該動作在另外的方式下可能需要其它活躍的計(jì)算機(jī)中斷。
文檔編號G06F7/38GK101366003SQ200780000015
公開日2009年2月11日 申請日期2007年2月16日 優(yōu)先權(quán)日2006年2月16日
發(fā)明者杰佛瑞·亞瑟·??怂? 查理斯·H·莫爾, 約翰·W·瑞博 申請人:Vns組合有限責(zé)任公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
河西区| 张家港市| 高青县| 太白县| 华蓥市| 会东县| 桑日县| 定安县| 霍州市| 榆中县| 邵东县| 加查县| 高密市| 井研县| 滨海县| 吉安市| 大埔县| 施甸县| 金塔县| 闸北区| 阜南县| 渝北区| 北票市| 花莲县| 西安市| 北海市| 巴东县| 芮城县| 和平区| 鄯善县| 博爱县| 阜南县| 杨浦区| 岗巴县| 永登县| 电白县| 朝阳县| 巴林左旗| 东丽区| 无为县| 南漳县|