專利名稱:異步節(jié)電計算機的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機和計算機處理器領(lǐng)域,更具體地說,涉及一種方法和 裝置,其用于使計算機在等待與另一計算機或設(shè)備通信時進入"休眠狀態(tài)", 從而省電并減少放熱。本發(fā)明異步計算機的當前主要用途在于在單個微芯片 上與多臺計算機組合,其中計算能力、功耗和放熱是重要的考慮因素。
背景技術(shù):
在計算領(lǐng)域中,處理速度是一種非常期望的特性,因此對創(chuàng)建更快計算 機和處理器的探索一直在進行。然而,在業(yè)內(nèi)公認的是,提高微處理器速度 的極限正被迅速逼近,至少對于利用目前已知的技術(shù)而言。因此,利用多處 理器通過分享處理器中的計算任務來提高整體計算速度越來越引起大家的 興趣。但是還公認的是,有關(guān)共享工作量的整體效率幾乎不可避免地會有些
降低。也就是說,僅僅因為一個人60分鐘可以挖一個洞,就推斷60個人必 然能用1分鐘挖一個洞這一諺語將適用。相同的道理幾乎適用于任何任務的 分享,因此處理器中的任務分享也不例外。
當然,正在努力使計算機處理器中的任務分享更有效。正在研究怎樣正 確地分配任務的問題,并且過程得以改善。然而,無論怎樣實現(xiàn),都沒有人 希望在這樣的安排中浪費哪怕至少某個處理器能力。
在多處理器計算機中,缺乏高水平的效率未必是計算機芯片或系統(tǒng)的整 個計算能力的巨大阻礙。效率缺乏通??梢院苋菀椎赝ㄟ^純粹強制地增加可 用處理器和處理能力來克服。不過,這種解決方式會導致另一問題。也就是, 那么多的處理器和相關(guān)部件會產(chǎn)生不斷增加的熱量。即使對當今大功率單處 理器計算機芯片來說,熱量也仍然是個問題。僅僅為了正常搡作,它們就需
要特別的冷卻裝置,例如風扇,甚至需要水冷卻。因此,在小型手持設(shè)備、 小型專用數(shù)字裝備等設(shè)備中,使用更大功率的單處理器實際上是不可能的。 目前,在單個芯片上組合使用多種類型的處理器的想法,似乎超出了封裝的 物理極限,而不能散發(fā)所產(chǎn)生的熱量,即使利用特別的輔助裝置。
以上論述的熱量問題在業(yè)界是公知的。正在十分努力地解決這個問題。 所提供的解決方案包括用于提高效率并從而降低所需處理器的數(shù)量和尺寸 的方法,和用于降低各個處理器功耗的方法。然而,通常所認知的是,對該 問題的最終解決方案還沒有找到。在業(yè)內(nèi),由于將這些處理器應用于小型手 持設(shè)備的趨勢,這一問題進一步加重。雖然散熱問題在更大的計算機封裝中 已經(jīng)夠困難,但是在非常小型的設(shè)備中當考慮到散熱表面的尺寸和該表面的 固有缺乏時,散熱問題幾乎是不可克服的。并且,功耗問題和放熱問題關(guān)系 密切。很明顯的是,多余的放熱意味著多余的功耗。這一直都是所不希望的, 而在小型電池供電的設(shè)備中,更是不能接受的。
很明顯,找到一種提供大量計算能力而不浪費大量功耗或產(chǎn)生大量熱的 方案是非常有利的。不過,就發(fā)明人的認知而言,在本發(fā)明之前還沒有滿意 的解決方案。
發(fā)明內(nèi)容
因此,本發(fā)明的目的在于提供一種用于提高計算機處理速度同時降低功 耗的裝置和方法。
本發(fā)明的另 一 目的在于提供一種用于廉價地提供相當大計算能力的裝 置和方法。
本發(fā)明的目的還在于提供一種用于實現(xiàn)大強度計算任務的裝置和方法。 本發(fā)明的目的還在于提供一種計算機裝置,其不消耗大量功率就能產(chǎn)生 大量的處理能力。
本發(fā)明還有一目的在于提供一種計算機裝置,其不生成大量的熱就能產(chǎn) 生大量的處理能力。
簡要地說,本發(fā)明的已知實施例是一種自身具有內(nèi)存以便能獨立計算的 計算機。在本發(fā)明的一個實施例中,多臺計算機被布置成陣列。為了協(xié)同完
成任務,這些計算機必須能彼此之間傳輸數(shù)據(jù)和/或指令。既然所有同時工 作的計算機通常會提供比大多數(shù)任務所需的計算能力強得多的計算能力,既
然在若干計算機中分配任務所用的任何算法或方法幾乎肯定導致分配不平 均,因此可以預期的是,計算機中的至少一些,也可能是大多數(shù),在任何給 定的時候都不活躍地參與任務的實現(xiàn)。為了避免不必要的功耗和不必要的放 熱,當計算機試圖與相鄰計算機的一個或多個通信時,它將處于休眠模式, 并且實質(zhì)上沒有任何功耗,直到相鄰計算機或相鄰計算機中的一個運行起來 以完成通4言。
正如這里所描述的,計算機之間的通信是異步的,原因在于沒有任何時 鐘等來定時。更確切地說,隨著資源變得可用,它既可以開始也可以結(jié)束。 也就是說,當計算機的程序指令它這么做時,計算機可以啟動發(fā)送數(shù)據(jù),或 者也可以使自己處于預備狀態(tài)以接收數(shù)據(jù)。于是,當計算機或其試圖與之通 信的所選擇的計算機之一即將完成通信時,它就這么做。
為了實現(xiàn)所期望的省電并減少放熱,所希望的是,當所啟動的計算機正 在等待通信完成時,它能停止或者至少顯著降低功耗??梢韵胂蟮牡?,這可 以由許多手段中的任一手段來實現(xiàn)。例如,如果計算機由內(nèi)部或者外部時鐘 來定時,那么在那段時間可以調(diào)慢時鐘或者停止時鐘。不過,根據(jù)在此描述 的本發(fā)明的實施例,計算機內(nèi)部本身也是異步操作。也就是說,沒有時鐘類 型的信號來驅(qū)動計算機(除了這里論述的一個例外)。這種異步裝置的自然 狀態(tài)是將停在一種這樣的狀態(tài)中,在該狀態(tài)中,當計算機正在等待下一操作 時,本質(zhì)上沒有任何功耗(除了少量泄漏電流所消耗的功耗之外)。
根據(jù)本發(fā)明,在計算機之間完成異步操作可以通過利用確認操作來實 現(xiàn)。也就是說,在現(xiàn)有技術(shù)中,對通信進行計時,通常假定裝置之間的通信 發(fā)生在相對于計時信號的特定時間內(nèi)。發(fā)送計算機通常不具有任何直接的正 反饋來確認其數(shù)據(jù)被接收計算機所接收。不過,根據(jù)本發(fā)明,當一臺計算機
通過試圖發(fā)送或通過試圖接收來試圖通信,然后另一計算機通過接收或通過 發(fā)送完成該操作時,接收計算機確認收到發(fā)送計算機的動作,以便這兩個計 算機都知道處理完成。在本發(fā)明的實施例中,通過使控制線變?yōu)榈碗娖絹韺?現(xiàn)這種確認,以便數(shù)據(jù)循環(huán)或時間不會浪費在完成這種確認的操作中。然而, 發(fā)明人認為,確認通信完成的操作本質(zhì)上適用于裝置之間的任何異步通信, 無論這些裝置內(nèi)部是否本質(zhì)上異步,甚至也無論它們是否基于傳統(tǒng)的電子電 路、基本原理或任何其它現(xiàn)存的或?qū)黹_發(fā)的操作原理。
考慮到這里所描述的實施本發(fā)明的模式及其工業(yè)實用性的描述以及若 干附圖所示,本發(fā)明的這些和其它目的以及優(yōu)點對本領(lǐng)域的技術(shù)人員來說將 變得清楚。這里所列的目的和優(yōu)點不是本發(fā)明的所有可能優(yōu)點的窮盡列舉。 此外,即使當本申請中沒有或不需要所預期的目的和/或優(yōu)點中的一個或更 多的情況下,也有可能實行本發(fā)明。
進一步地,本領(lǐng)域的^支術(shù)人員應該認識到,本發(fā)明的各種實施例可以實 現(xiàn)所描述的目的和/或優(yōu)點中的一個或更多,但沒有必要是全部。因此,這 里所描述的目的和/或優(yōu)點不是本發(fā)明的必要元素,也不應該作為限制來解 釋。
圖1是根據(jù)本發(fā)明一個實施例的計算機陣列的簡圖; 圖2是示出圖l計算機的子集和圖1中互連數(shù)據(jù)總線的更多詳情的詳細 視圖3描述圖1和圖2中的一臺計算機的通用布局的結(jié)構(gòu)圖; 圖4是根據(jù)本申請的指令字的示圖5是圖3中的時段定序器(slot sequencer ) 42的示圖;和 圖6是描述本發(fā)明方法示例的流程圖。
具體實施例方式
在以下說明中,將參考附圖對本發(fā)明進行描述,在附圖中,類似的附圖 標記表示相同或相似的元件。雖然本發(fā)明根據(jù)用于實現(xiàn)本發(fā)明目的的方式進 行描述,但是本領(lǐng)域的技術(shù)人員應該理解,可以根據(jù)這些教義在不脫離本發(fā) 明的精神或范圍的情況下做出各種修改。
這里所描述和/或附圖所示的本發(fā)明的實施例和變形,僅以示例的方式 呈現(xiàn)出來,并不限制本發(fā)明的范圍。除非另外明確地進行陳述,否則本發(fā)明 的各個方案和部件都可以被省略或修改,或者因此可以替換已知的等效物, 或者作為還未知的替換物,例如將來開發(fā)出來的或者在將來發(fā)現(xiàn)的可接受的 替換物。本發(fā)明還可以在處于所要求保護的發(fā)明的精神和范圍之內(nèi)的同時, 針對多種應用進行修改,這是因為潛在應用的范圍很廣闊,還因為本發(fā)明本 就旨在適于多種這類的變形。
已知的用于實施本發(fā)明方式是各個計算機的陣列。該陣列被描述于圖1
的簡圖中,并在此處總地用附圖標記10來指示。計算機陣列10具有多個(在 所示的示例中是24個)計算機12 (在陣列的示例中,有時也稱作"核"或 "節(jié)點")。在所示的示例中,所有的計算機12都位于單個芯片(die) 14 上。根據(jù)本發(fā)明,每個計算機12通常都是獨立運行的計算機,下文中將對 此做更詳細的論述。計算機12由多條(下文中將對該數(shù)量做詳細論迷)互 連數(shù)據(jù)總線16互相連接。在該示例中,數(shù)據(jù)總線16是雙向、異步、高速、 并行的數(shù)據(jù)總線,不過針對此目的采用其它互連方式也落入本發(fā)明的范圍 中。在本實施例的陣列10中,不僅計算機12之間的數(shù)據(jù)通信是異步的,而 且各個計算機12內(nèi)部也以異步模式操作。這已經(jīng)被發(fā)明人所發(fā)現(xiàn),從而能 夠提供重要的優(yōu)勢。例如,因為時鐘信號不必要分布到整個計算機陣列10 中,因此就很省電。此外,不必分布時鐘信號消除了許多定時問題,這些定 時問題可能限制陣列10的尺寸或可能導致其它已知的麻煩。
本領(lǐng)域的技術(shù)人員將認識到,出于清晰的考慮,芯片14上的額外部分在圖l的視圖中被省略。這些額外部分包括電源總線、外部連接鍵盤和微處 理器芯片的其它這類公共方面。
計算機12e是一臺未處于陣列10的周邊上的計算機12的示例。也就是 說,計算機12e有四個垂直相鄰的計算機12a、 12b、 12c和12d。對計算機 12a - 12e進行的這種分組將在下文中用于對陣列10的計算機12之間的通信 進行更為詳細的論述。從圖l的視圖可知,諸如計算機12e的內(nèi)部計算機具 有通過總線16與該內(nèi)部計算機直接通信的其它四臺計算機12。在下文的論 述中,所論述的原理將適用于所有計算機12,除了在陣列10的周邊上的計 算機12僅僅與其它三臺計算機直接通信之外,還除了邊角計算機12僅僅與 其它兩臺計算機12直接通信的情況。
圖2是圖1的一部分的更為詳細的視圖,其僅僅示出了一些計算機12, 具體而言,僅僅包括計算機12a-12e。圖2的視圖還揭示了,每條數(shù)據(jù)總線 16均具有讀取線18、寫入線20和多條(在本示例中為18條)數(shù)據(jù)線22。 數(shù)據(jù)線22能夠幾乎同時地并行傳輸一個18比特指令字的所有比特。應該注 意的是,在本發(fā)明的一個實施例中, 一些計算機12是相鄰計算機的鏡像。 不過,無論計算機12是全部同一定向或者是作為相鄰計算機的鏡像,均不 構(gòu)成這里描述的本發(fā)明的方案。因此,為了更好地描述本發(fā)明,在此并不進 一步論述這種潛在的復雜性。
根據(jù)本發(fā)明的方法,計算機12,例如計算機12e,可以對它的一條、兩 條、三條或所有四條讀取線18進行設(shè)置,從而使得該計算機準備從相應的 一臺、兩臺、三臺或所有四臺相鄰計算機12接收數(shù)據(jù)。類似地,計算機12 還可以將其一條、兩條、三條或所有四條寫入線20設(shè)置為高電平。雖然發(fā) 明人認為在同一時刻將不止一臺計算機12的寫入線20設(shè)置為高目前還不現(xiàn) 實,但是如此做法并未超出本發(fā)明的范圍,因為可以想象到,這種操作的使 用有可能發(fā)生。
當相鄰計算機12a、 12b、 12c或12d中的一臺將其本身與計算機12e之 間的寫入線20設(shè)置為高電平時,如果計算機12e已經(jīng)將相應的讀取線18設(shè)置為高電平,則在相關(guān)的數(shù)據(jù)線22上,字就會從那臺計算機12a、 12b、 12c 或12d傳送到計算機12e。然后,發(fā)送計算機12將釋放寫入線20,并且接 收計算機(在本示例中為12e)將寫入線20和讀取線18均拉為低電平。后 一操作將向發(fā)送計算機12確認已經(jīng)接收到數(shù)據(jù)。需要注意的是,上述描述 意不在于必需按順序表示這些事件的次序。在實際操作中,在該示例中,在 發(fā)送計算機12釋放(停止拉為高電平)其寫入線20之前不久,接收計算機 可能試圖將寫入線20設(shè)置為低電平。在這種情況下,發(fā)送計算機12—旦釋 放其寫入線20,寫入線20就會被接收計算機12e拉為低電平。
在本示例中,只有程序錯誤才會使得一條總線16相反兩端的兩臺計算 機12均試圖將二者之間的讀取線18設(shè)置為高電平。對于一條總線16相反 兩端上的兩臺計算機12而言,試圖將二者之間的寫入線18同時均設(shè)置為高 電平也是錯誤的。類似地,如上文所述,當前可預見的是,可能不需要使單 個計算機12將它的四條寫入線20中的不止一條設(shè)置為高電平。不過,目前 能預見的是,存在如下可能,即需要將讀取線18的不同組合設(shè)置為高電平, 以便使計算機12中的一臺可以處于等待狀態(tài),用于等待來自所選擇計算機 12中的第一臺的數(shù)據(jù),從而將其相應的寫入線20設(shè)置為高電平。
在上文所論述的示例中,計算機12e被描述為,在相鄰的計算機(選自 計算機12a、 12b、 12c和12d中的一臺或多臺)將其寫入線20設(shè)置為高電 平之前,計算機12e將其一條或多條讀取線18設(shè)置為高電平。不過,這個 過程當然可以按照相反的順序進行。例如,如果計算機12e正試圖向計算機 12a寫入,那么計算機12e將把計算機12e與計算機12a之間的寫入線20設(shè) 置為高電平。如果接下來計算機12e和計算機12a之間的讀取線18尚未祐L 計算機12a設(shè)置為高電平,則計算機12e將只能等待,直到計算機12a確定 將該讀取線20設(shè)置為高電平。然后,如上文所述,當相應一對寫入線18和 讀取線20均為高電平時,就傳送在數(shù)據(jù)線22上待傳送的數(shù)據(jù)。此后,發(fā)送 計算機12e—釋放,接收計算機12 (在本示例中為計算機12a)就將兩臺計
算機(在本示例中為12e和12a)之間的讀取線18和寫入線20均設(shè)置為低
電平。
除非數(shù)據(jù)將要發(fā)送到的計算機12已經(jīng)將其讀取線18設(shè)置為高電平,在 這種情況下,數(shù)據(jù)會被立即發(fā)送,否則,只要諸如計算機12e的計算機12 已經(jīng)將其寫入線20中的一條設(shè)置為高電平以期望寫入,它都將僅僅等待而 幾乎不耗電,直到數(shù)據(jù)如上文所述那樣由合適的相鄰計算機12 "請求"。 類似地,只要計算機12已經(jīng)將其一條或多條讀取線18設(shè)置為高電平以期望 讀取,它就將僅僅等待而幾乎不耗電,直到所連接至所選計算機12的寫入 線20變?yōu)楦唠娖?,以在兩臺計算機12之間傳送指令字。
可能有若干潛在的裝置和/或方法來使得計算機12如上所述地運行。不 過,在本示例中,計算機12之所以這樣運轉(zhuǎn),僅僅是因為它們通常在內(nèi)部 異步操作(除了以所述異步方式在它們之間傳送數(shù)據(jù)之外)。也就是說,指 令按順序被完成。當產(chǎn)生寫入指令或讀取指令時,可以不采取進一步行動, 直到指令被完成(或者,或許可選地,直到其被"重置"等中止)。在現(xiàn)有 技術(shù)意義中,并不存在規(guī)則的時鐘脈沖。更確切地說,只有當正在執(zhí)行的指 令既不是讀取類型指令也不是寫入類型指令時(假定讀取或?qū)懭腩愋偷闹噶?需要由另一實體完成)時,或者當讀取或?qū)懭腩愋偷牟僮鲗嶋H上已經(jīng)完成時,
脈沖才產(chǎn)生以實現(xiàn)下一指令。
圖3是描述圖1和圖2中一臺計算機12的示例通用布局的結(jié)構(gòu)圖。從 圖3的視圖可知,每臺計算機12 —4殳均為自身具有RAM 24和ROM 26的 計算機。如之前所提到的,計算機12有時候也被稱為單獨的"核",假設(shè) 在本示例中它們被組合到單個芯片上。
計算機12的其它基礎(chǔ)部件為返回堆棧28、指令區(qū)域30、算術(shù)邏輯單元 ("ALU" )32、數(shù)據(jù)堆棧34和用于對指令進行解碼的解碼邏輯部分36。 本領(lǐng)域的技術(shù)人員通常很熟悉基于堆棧的計算機的操作,例如本示例的計算 機12。計算機12為具有數(shù)據(jù)堆棧34和分立的返回堆棧28的雙堆棧計算機。
在本發(fā)明的該實施例中,計算機12具有四個通信端口 38,其用于與相 鄰計算機12進行通信。通信端口 38為三態(tài)驅(qū)動器,其具有截止狀態(tài)、接收
狀態(tài)(用于將信號驅(qū)動進入計算機12)和發(fā)送狀態(tài)(用于將信號驅(qū)動出計 算機12)。當然,如果特定的計算機12不像計算機12e的示例那樣處于陣 列IO(圖l)的內(nèi)部,那么至少出于在此所描述的目的,在所述特定的計算 機中將不會使用一個或多個通信端口。指令區(qū)域30包括多個寄存器40,在 該示例中,包括寄存器40包括A寄存器40a、 B寄存器40b和P寄存器40c。 在該示例中,A寄存器40a是滿18比特寄存器,而B寄存器40b和P寄存 器40c為9比特寄存器。
盡管本發(fā)明不局限于該示例,但是該計算機12能執(zhí)行自然Forth語言 指令。熟悉Forth計算機語言的人都應該理解,作為已知的Forth "字"的復 雜Forth指令,可以由設(shè)計到計算機中的自然處理器指令組成。Forth字的集 合被稱為"字典(dictionary)"。在其它語言中,這可能被稱為"庫(library)"。 如同下文將更詳細描述的一樣,計算機12同時從RAM24、 ROM26或直才妻 從數(shù)據(jù)總線16 (圖2)之一中讀取18比特。不過,由于在Forth中,大多數(shù) 指令(稱為無操作數(shù)指令)直接從堆棧28和34獲取它們的操作數(shù),所以它 們通常只有5個比特的長度,以便在這一組中的最后指令選自只需要3比特 的有限指令集合的狀況下,單個18比特的指令字中可以包含多達4條指令。 在圖3的視圖中,還以塊圖形式描述的有時段定序器42。在本發(fā)明的這個 實施例中,數(shù)據(jù)堆棧34中的最上面兩個寄存器是T寄存器44和S寄存器 46。
圖4是指令字48的示圖。(應該理解,指令字48實際上可以包括指令、 數(shù)據(jù)或它們的某種組合。)指令字48由18個比特50組成。這是一個二進 制計算機,每個比特50都是'T,或者"0"。如在此之前所論述的,18比 特寬的指令字48可包括被稱為時段零54a、時段一54b、時段二54c和時段 三54d的四個時段54中的多達四條指令52。在本發(fā)明的該實施例中,18比 特的指令字48總是作為整體來讀取。因此,由于總是存在在指令字48中具 有多達四個指令的可能性,因而在計算機12的指令集中包含no-op(非操作) 指令,這些指令是為可能沒有必要甚至不希望使用所有可用時段54的情況所提供的。應該注意的是,根據(jù)本發(fā)明的一個特定實施例,在間隔的時段(具
體而言,時段一 54b和時段三54c)中,比特50的極性(高有效對比于低有 效)被反轉(zhuǎn)。不過,這并不是在此描述的本發(fā)明的必要方案,因此,為了更 好地闡釋本發(fā)明,在下文的描述中避免這種潛在的復雜性。
圖5是圖3的時段定序器42的示圖。從圖5的視圖可見,時段定序器 42具有以環(huán)狀排列的多個(本示例中為十四個)反相器56和一個NAND門 58,這樣,當信號穿過十四個轉(zhuǎn)換器56和NAND門58時,該信號^皮反相 奇數(shù)次。當OR門60的兩個輸入中的任一個變?yōu)楦唠娖綍r,在時段定序器 42中產(chǎn)生一信號。第一OR門輸入62源自正在執(zhí)行的指令52的比特i4 66 (圖4)。如果比特i4為高,則特定指令52為ALU指令,并且i4比特66 為'T,。當i4比特為"1"時,則第一OR門輸入62為高電平,并且時段 定序器42被觸發(fā),以產(chǎn)生將要導致執(zhí)行下一指令52的脈沖。
當時段定序器42通過第一 OR門輸入62變?yōu)楦唠娖交蛘咄ㄟ^第二 OR 門輸入64變?yōu)楦唠娖?將在下文詳細論述)來觸發(fā)時,信號將繞著時段定 序器42行進兩次,每次都在時段定序器輸出68處產(chǎn)生輸出。第一次該信號 穿過時段定序器輸出68時,它為低電平,第二次時段定序器輸出68處的輸 出為高電平。來自時段定序器68的相對寬的輸出被提供給脈沖生成器70(示 為塊圖的形式),脈沖生成器70產(chǎn)生窄的定時脈沖作為輸出。本領(lǐng)域的技 術(shù)人員將意識到,需要窄的定時脈沖來準確地啟動計算機12的操作。
當正被執(zhí)行的特定指令52是讀取或?qū)懭胫噶?,或者是任意其它指令時, 其中不希望正在執(zhí)行的指令52立即觸發(fā)執(zhí)行順次的下一指令52,那么i4比 特66為"0"(低電平),并且第一 OR門輸入62因此也為低。本領(lǐng)域的 技術(shù)人員將認知到,在諸如計算機12的裝置中的事件的定時通常相當嚴格, 而不能有例外。在對時段定序器42進行觀察之后,本領(lǐng)域的技術(shù)人員將認 知到,來自O(shè)R門60的輸出必須保持高電平,直到信號已經(jīng)循環(huán)經(jīng)過NAND 門58從而開始循環(huán)的第二 "圈(lap),,之后。此后,為了防止電^^的有害 持續(xù)振蕩,在該第二 "圈"期間,來自O(shè)R門60的輸出將變?yōu)榈碗娖健?br>
如同可以根據(jù)上文所理解的那樣,當i4比特66為"0"時,時段定序 器42就將不被觸發(fā)一一假定下文所要論述的第二 OR門輸入66不為高電平。
如上文所論述的,每條指令52的i4比特66都是根據(jù)該指令是讀取類 型的指令還是寫入類型的指令而被設(shè)置。在指令52中的其余比特50為該指 令提供特定操作碼的剩余部分。在讀取類型指令或?qū)懭腩愋椭噶畹那闆r中, 一個或多個比特可以用來指示,在該特定計算機12中數(shù)據(jù)將要從何處讀取 或?qū)⒁獙懭牒翁帯T诒景l(fā)明的本示例中,將要寫入的數(shù)據(jù)總是來自T寄存器 44 (數(shù)據(jù)堆棧34的頂部),不過,數(shù)據(jù)可以選擇性地讀入T寄存器44或指 令區(qū)域30,從此處執(zhí)行該數(shù)據(jù)。這是因為,在本發(fā)明的特定實施例中,數(shù) 據(jù)或者指令可以以此處描述的方式傳送,并且指令因此可以直接從數(shù)據(jù)總線 16執(zhí)行,雖然這并非是本發(fā)明的必要方案。此外, 一個或多個比特50將用 于指示,端口 38的哪一個將被設(shè)置成讀取或?qū)懭?,如果有這樣端口的話。 可選地,后一操作通過使用一個或多個比特指定諸如A寄存器40a、 B寄存 器之類的寄存器40來實現(xiàn)。在該示例中,指定的寄存器40將被預載入數(shù)據(jù), 該數(shù)據(jù)具有與每個端口 38 (并且還有計算機12可能試圖與其通信的其它任 何可能實體,例如存儲器、外部通信端口 39,等等)對應的比特。例如, 在特定寄存器40中的四個比特中的每一個可對應上端口 38a、右端口 38b、 左端口 38c或下端口 38d中的每一個。在這種情況下,如果在這些比特的位 置中的任意一處為'T',則通信將被設(shè)置為通過對應的端口 38進行。如同 之前在此所論述,在本發(fā)明的當前實施例中,可以預見的是,讀取操作碼可 以在單個指令中設(shè)置不止一個用于通信的端口 38,而同時,雖然可能發(fā)生 但是無法預見的是,寫入操作碼將在單個指令中設(shè)置不止一個用于通信的端 口 38。
緊接下來的示例將假定如下通信,其中計算機12e正試圖向計算機12c 寫入,雖然該示例可用于任何相鄰計算機12之間的通信。當寫入指令在寫 入計算機12e中被執(zhí)行時,所選擇的寫入線20 (在本示例中為計算才幾12e 和12c之間的寫入線20)被設(shè)置為高電平,如果相應的讀取線18已經(jīng)為高
電平,則數(shù)據(jù)立即從所選擇的位置通過所選擇的通信端口 38發(fā)送?;蛘?, 如果相應的讀取線18還未為高電平,則計算機12e將僅停止操作,直到相 應的讀取線18確實變?yōu)楦唠娖?。在此之前已?jīng)論述了用于在存在讀取或?qū)?入類型指令時停止計算機12a (或者更準確地說,使計算機12a不能進一步 操作)的機制。簡而言之,指令52的操作碼將在比特位置i4 66為'0,, 因此,OR門60的第一 OR門輸入62為4氐電平,進而,不觸發(fā)時段定序器 42產(chǎn)生使能脈沖。
至于在讀取或?qū)懭腩愋椭噶钔瓿蓵r如何重新開始計算機12e的操作,用 于此的機制如下當計算機12e與12c之間的讀取線18和相應的寫入線20 均為高電平時,線18和20由將其保持為高電平的每個相應計算機12釋放。 (在該示例中,發(fā)送計算機12e將使寫入線18保持為高電平,而接收計算 機12c將使讀取線20保持為高電平)。接下來,接收計算機12c將把線18 和20拉為低電平。在實際操作中,在發(fā)送計算機12e釋放寫入線18之前, 接收計算機12c可能試圖將線18和20拉為低電平。不過,因為線18和20 被拉為高電平并且只是被不牢固地保持(鎖存)為低電平,因此任何將線 18或20拉為低電平的企圖實際上都將不會成功,直到線18或20由將其鎖 存為高電平的計算機12所釋放。
當數(shù)據(jù)總線16中的線18和20均被拉為低電平時,這是一種"確認" 條件。 一旦有該確認條件,計算機12e和12c中的每一臺都將其自身內(nèi)部的 確認線72設(shè)置為高電平。從圖5的視圖可見,確認線72提供了第二OR門 輸入64。因為到OR門60的輸入62或64中任意一個輸入將導致OR門60
從而執(zhí)行在指令字48的下一時段54中的指令52。確認線72保持在高電平, 直到下一指令52 ^皮解碼,以防止偽地址到達地址總線。
無論如何,當正在執(zhí)行的指令52處于指令字48的時段三位置中時,計 算機12將獲取下一正在等待的18比特指令字48,當然,除非比特i4 66為 "0"。在實際操作中,本發(fā)明機制包括一種方法和裝置,其用于"預獲取"指令,從而在指令字48中的所有指令52執(zhí)行完之前可以開始該獲取操作。 不過,這也不是當前針對異步數(shù)據(jù)通信的本發(fā)明方法和裝置的必要方案。
在此已經(jīng)詳細描述了上述示例,其中計算機12e正在向計算機12c進行 寫入。如同根據(jù)以上論述可以理解的那樣,不論計算機12e首先試圖對計算 機12c寫入,還是計算機12c首先試圖從計算機12e讀取,操作基本相同。 直到計算機12e和12c均準備就緒,才完成操作,并且無論計算機12e或12c 中的哪一 臺首先準備就緒,首先準備就緒的計算機12僅僅"進入休眠狀態(tài)", 直到另一臺計算機12e或12c完成傳送。觀察上述過程的另一種方式為,實 際上,在寫入計算機12e和接收計算機12c分別執(zhí)行寫入和讀取指令時,這 兩臺計算機均進入休眠狀態(tài),但是當讀取線18和寫入線20均為高電平時, 后一臺進行處理的計算機幾乎即刻再喚醒,然而,首先發(fā)起處理的計算機 12可以幾乎無限期地保持在休眠狀態(tài),直到第二臺計算機12即將完成上述 過程。
發(fā)明人相信,在設(shè)備之間進行有效異步通信的關(guān)鍵特征是某種確認信號 或條件。在現(xiàn)有技術(shù)中,設(shè)備之間的大多數(shù)通信被定時,并且對于發(fā)送設(shè)備 而言,沒有直接的方式用于了解接收設(shè)備已正確接收數(shù)據(jù)。諸如校驗和操作 的方法可能已經(jīng)用于試圖確認數(shù)據(jù)被正確接收,但是發(fā)送設(shè)備沒有操作完成
間的異步通信,或者至少使得設(shè)備之間的異步通信可實現(xiàn)。此外,確認條件 也使得對于一個或更多設(shè)備而言,"進入休眠狀態(tài)"直到確認條件發(fā)生變得 可能。當然,確認條件可以在計算機12之間由單獨在計算機12之間發(fā)送的 信號(或者通過互連的數(shù)據(jù)總線16或者通過單獨的信號線)進行傳送,并 且這種確認信號處于本發(fā)明的該方案的范圍中。不過,根據(jù)這里所述的本發(fā) 明實施例,可以理解這里存在甚至更多的經(jīng)濟因素,原因在于,用于確認的 方法不需要任何額外的信號、時鐘周期、定時脈沖,或除了上述之外的任何 這類資源,來實際上實現(xiàn)通信。
根據(jù)用于實現(xiàn)它們的步驟和方式的上述論述,現(xiàn)在可以理解本發(fā)明方法
的示例的以下簡要描述。圖6是描述該方法示例的流程圖,由附圖標記74 指示。在"啟動通信"的操作76中, 一臺計算機12執(zhí)行使其試圖與另一計 算機12進行通信的指令53。這可以是試圖寫入或試圖讀取。在通常與"啟 動通信"的操作76同時發(fā)生的"將第一線設(shè)置為高電平"的操作78中,讀 取線18或?qū)懭刖€20被設(shè)置為高電平(根據(jù)第一計算機12是試圖讀取還是 試圖寫入而定)。作為"將第一線設(shè)置為高電平"操作的一部分,根據(jù)當前 描述的操作的實施例,計算機12這樣做將停止操作,如同在此之前詳細描 述的一樣。在"將第二線設(shè)置為高電平"的操作80中,第二線(或者是寫 入線20或者是讀取線18)由第二計算機12設(shè)置為高電平。在"傳輸數(shù)據(jù)" 的操作中,數(shù)據(jù)(或指令等)通過數(shù)據(jù)線22被發(fā)送和接收。在"將線拉為 低電平"的操作84中,讀取線18和寫入線20被釋放,然后被拉為低電平。 在"繼續(xù)"的操作86中,確認條件使計算機12重新開始它們的操作。在本 發(fā)明示例的情況下,確認條件產(chǎn)生確認信號86 (圖5),在該情況下,確認 信號86僅是確認線72的"高電平"條件。
可以對本發(fā)明進行多種修改,而不改變本發(fā)明的價值或范圍。例如,雖 然在此已經(jīng)針對讀取指令和寫入指令來描述本發(fā)明,不過在實際操作中,可 能存在不止一個讀取類型指令和/或不止一個寫入類型指令。僅僅作為一個 示例,在本發(fā)明的一個實施例中,存在使寄存器遞增的寫入指令以及其它不 執(zhí)行此功能的寫入指令。類似地,根據(jù)哪一個寄存器40被用來選擇通信端 口 38等等,寫入指令可以變化,如同在此之前所描述的那樣。還可以存在 多個不同的讀取指令,所依據(jù)的只是,計算機12的設(shè)計者相信何種變化是 可替換讀取行為的有用選擇。
類似地,雖然在此已經(jīng)針對單個芯片14上的陣列10中的計算機12之 間的通信來描述本發(fā)明,不過相同的原理和方法可以用作,或者被改造為用 作完成其它設(shè)備間的通信,例如計算機12和其專用內(nèi)存之間的通信,或者 陣列10中的計算機12和外部設(shè)備之間(通過輸入/輸出端口等)的通信。 實際上,可以預見的是,在一些應用中可能要求由陣列組成的陣列一一將這里描述的設(shè)備間的通信方法潛在地應用于陣列中的陣列之間的通信。
雖然已經(jīng)在此論述了本發(fā)明的計算機陣列IO和計算機12的特定示例, 不過可以預期,針對于此的大量應用還未被想到。事實上,本發(fā)明的一大優(yōu) 勢在于,本發(fā)明方法和裝置可適用于許多不同的使用。
上述全部內(nèi)容^5U又為本發(fā)明的可用實施例的 一 些示例。本領(lǐng)域的^支術(shù)人 員將易于想到,在不脫離本發(fā)明的精神和范圍的前提下,可進行多種其它修 改和變化。相應地,本7>開在此并不意在限制,并且所附^L利要求書應^^皮理 解為涵蓋了本發(fā)明的全部范圍。
本發(fā)明計算機陣列10、計算機12以及相關(guān)的方法74意在廣泛用于多 種計算機應用場合中。可以預見,它們將特別使用于需要相當計算能力而功 耗和放熱是重要考慮因素應用場合中。
如同此前論述的一樣,本發(fā)明的適用性在于,多種類型的設(shè)備間的計算 機通信可以因此顯著改善??梢灶A期,本發(fā)明的方法,其中某些計算機在不 用時可被允許"進入休眠狀態(tài),,,能用于降低功耗、減少放熱,并以多種應 用和實現(xiàn)來提高計算機之間以及計算機裝置之間的通信效率。
由于本發(fā)明的計算機陣列10、計算機12和方法74可以容易地產(chǎn)生并 與現(xiàn)存的任務、輸入/輸出設(shè)備等結(jié)合,并且由于提供了在此所述的優(yōu)點, 所以可以預期,它們將很容易地在業(yè)內(nèi)被接受。由于這些和其它原因,可以 預期,在范圍和長期持續(xù)等方面,本發(fā)明的實用性和工業(yè)實用性都將非常顯 著。
工業(yè)實用性
注意提供本對照表僅用于提供信息的目的,它并不是官方專利申請的 一部分。
對照表
10計算機陣列
12計算機
14芯片
16數(shù)據(jù)總線
18讀取線
20寫入線
22數(shù)據(jù)線
24 RAM
26 ROM
28返回堆棧
30指令區(qū)域 32 ALU 34數(shù)據(jù)堆棧 36解碼部分 38內(nèi)部通信端口 38a上端口 38b右端口 38c左端口 38d下端口 40寄存器 40a A寄存器 40bB寄存器 40cP寄存器 42時段定序器44T寄存器
46S寄存器 48指令字 50比特 52指令 54時段 54a時^殳零 54b時段一 54c時段二 54d時段三 56反相器 58 NAND門 60 OR門
62第一 OR門輸入
64第二 OR門輸入
66 i4比特
68時段定序器輸出
70脈沖生成器
72確i人線
74方法
76啟動通信的操作
78將第一線設(shè)置為高電平的操作
80將第二線設(shè)置為高電平的操作
82傳送數(shù)據(jù)
84繼續(xù)
86確-〖人信號
權(quán)利要求
1、一種計算機,包括處理器,其用于執(zhí)行來自指令區(qū)域的指令;和定序器,其用于提供脈沖,以從當前執(zhí)行的指令前進到下一指令;其中所述指令包括用于向所述定序器提供輸入的比特,以便當所述比特被設(shè)置時,所述定序器被觸發(fā)而進入運行。
2、 如權(quán)利要求1所述的計算機,其中 當所述比特為"1"時,所述比特被設(shè)置。
3、 如權(quán)利要求1所述的計算機,其中 所述指令為較大指令字的一部分。
4、 如權(quán)利要求1所述的計算機,其中當所述用于向所述定序器提供輸入的比特未被設(shè)置時,所述定序器不被觸 發(fā)進入運行。
5、 如權(quán)利要求4所述的計算機,其中當所述用于向所述定序器提供輸入的比特未被設(shè)置時,所述計算機與第二 計算機之間的第 一通信狀態(tài)線被設(shè)置。
6、 如權(quán)利要求5所述的計算機,其中 所述第 一通信狀態(tài)線為寫入線。
7、 如權(quán)利要求5所述的計算機,其中 所述第 一通信狀態(tài)線為讀取線。
8、 如權(quán)利要求5所述的計算機,其中當?shù)诙ㄐ艩顟B(tài)線被設(shè)置時,數(shù)據(jù)在所述計算機與所述第二計算機之間傳送。
9、 如權(quán)利要求8所述的計算機,其中 數(shù)據(jù)從所述計算機傳送到所述第二計算機。
10、 如權(quán)利要求8所述的計算機,其中所述數(shù)據(jù)包括指令。
11、 如權(quán)利要求8所述的計算機,其中當所述第二通信狀態(tài)線被設(shè)置時, 一輸入被提供給所述定序器,以便所述 定序器纟皮觸發(fā)而進入運行。
12、 一種用于使計算機暫時降低其功耗的方法,包括(a) 當試圖與外部實體通信時,使所述計算機停止操作;并且(b) 當確認完成與所述外部實體的通信時,使所述計算機重新開始操作。
13、 如權(quán)利要求12所述的方法,其中 所述外部實體為另一計算機。
14、 如權(quán)利要求12所述的方法,其中 所述計算機和所述外部實體都位于單個芯g上。
15、 如權(quán)利要求12所述的方法,其中當所述計算機停止操作時,它也改變所述計算機與所述外部實體之間的第 一狀態(tài)線的狀態(tài)。
16、 如權(quán)利要求12所述的方法,其中當兩條通信狀態(tài)線被設(shè)置為同 一狀態(tài)時,確認與所述外部實體的通信。
17、 如權(quán)利要求12所述的方法,其中當停止所述計算機操作時,所述計算機與所述外部實體之間的兩條狀態(tài)線 中的第一條被設(shè)置;并且當所述兩條狀態(tài)線中的第二條被設(shè)置時,傳送數(shù)據(jù),然后重新開始所述計 算機的操作。
18、 如權(quán)利要求12所述的方法,其中 一定序器產(chǎn)生脈沖,以執(zhí)行多條指令中的每條指令;并且 當試圖與所述外部實體通信時,不立即產(chǎn)生這種脈沖。
19、 如權(quán)利要求18所述的方法,其中當確認完成與所述外部實體的通信時,產(chǎn)生一脈沖,以執(zhí)行下一指令。
20、 在一種用于執(zhí)行指令的計算機中,所述指令中的至少一些是與外部實體進行通信的指令, 一種改進包括用于當與所述外部實體通信的指令被試圖進行時使所述計算機停止的裝 置S和用于當與所述外部實體通信的指令被完成時使所述計算機重新啟動的裝置。
21、 如權(quán)利要求20所述的改進,其中所述用于當與所述外部實體通信的指令被試圖進行時使所述計算機停止的 裝置包括一脈沖生成裝置,該脈沖生成裝置用于當執(zhí)行每一條指令時都產(chǎn)生一 脈沖,除了當所述指令是與所述外部實體通信的指令時,不產(chǎn)生這種脈沖的情 況。
22、 如權(quán)利要求21所述的改進,其中所述用于當與所述外部實體通信的指令被完成時使所述計算機重新啟動的 裝置包括一用于使所述脈沖生成裝置產(chǎn)生脈沖的裝置。
23、 如權(quán)利要求21所迷的改進,其中當所述外部實體確認完成所述通信時,使所述脈沖生成裝置產(chǎn)生一脈沖。
全文摘要
計算機陣列(10)具有多臺計算機(12)。計算機(12)彼此之間異步通信,并且計算機(12)自身內(nèi)部一般也以異步方式操作。當一臺計算機(12)試圖與另一臺通信時,它將進入休眠狀態(tài),直到另一計算機(12)即將完成處理,從而可以省電并減少放熱。在每一計算機中的時段定序器(42)產(chǎn)生定時脈沖,以使計算機(12)執(zhí)行下一指令。不過,在當前指令是讀取或?qū)懭腩愋椭噶顣r,時段定序器不產(chǎn)生脈沖,直到確認信號(86)啟動它。當確認另一計算機(12)已經(jīng)完成通信時,產(chǎn)生確認信號(86)。
文檔編號G06F1/00GK101341454SQ200780000014
公開日2009年1月7日 申請日期2007年2月16日 優(yōu)先權(quán)日2006年2月16日
發(fā)明者查理斯·H·莫爾 申請人:科技資產(chǎn)股份有限公司