專利名稱:傳送數(shù)據(jù)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明總的來說涉及具有處理架構(gòu)并進(jìn)行指令處理的電計(jì)算機(jī)和數(shù)字 處理系統(tǒng),更具體地說,涉及用于對(duì)特別支持或進(jìn)行數(shù)字傳輸操作的指令數(shù) 據(jù)進(jìn)行處理器的這類電計(jì)算機(jī)和數(shù)字處理系統(tǒng)。
背景技術(shù):
在計(jì)算領(lǐng)域,處理速度是非常期望的品質(zhì),并且對(duì)創(chuàng)造更快速的計(jì)算機(jī) 和處理器的探索正在進(jìn)行中。然而,行業(yè)中普遍認(rèn)為,至少對(duì)于利用目前已 知的技術(shù)來提高微處理器的速度而言,微處理器速度的極限正在迅速地被接 近。因此,通過在處理器之間分擔(dān)計(jì)算機(jī)任務(wù)來提高整體計(jì)算機(jī)速度的多處 理器的使用,越來越受到關(guān)注。但是還通常認(rèn)為,在工作量的分擔(dān)中幾乎不 可避免地存在整體效率的一些下降。也就是說,所述多處理器的使用適用以
下古老的諺語僅僅由于一個(gè)人可以在60分鐘內(nèi)挖一個(gè)柱洞,并不必然得 出60個(gè)人可以在1分鐘內(nèi)挖一個(gè)柱洞的結(jié)論。同樣的道理幾乎適用于任何 任務(wù)的分工,處理器之間的任務(wù)分工也不例外。
當(dāng)然,正在努力使計(jì)算機(jī)處理器之間的任務(wù)分擔(dān)更加高效。正在研究和 過程改進(jìn)的正是如何分配任務(wù)的問題。本發(fā)明人在該領(lǐng)域的工作過程中觀察 到,在某些場(chǎng)合下,在多CPU環(huán)境中將數(shù)據(jù)從一個(gè)CPU傳輸?shù)搅硪粋€(gè)CPU 可能很麻煩。例如,如果必須將數(shù)據(jù)從一個(gè)CPU傳輸?shù)搅硪粋€(gè)CPU,且目 標(biāo)CPU與源CPU之間-故一個(gè)CPU隔開,則源CPU必須將該lt據(jù)成一直線 直接寫入該CPU,然后,該CPU必須讀取該數(shù)據(jù),并將該數(shù)據(jù)寫入目標(biāo)CPU, 然后目標(biāo)CPU必須讀取該數(shù)據(jù)。這種過程需要多次讀操作和寫操作,而且 如果要傳輸大量的數(shù)據(jù),則這么多的讀命令和寫命令可能會(huì)阻塞系統(tǒng)運(yùn)行。
發(fā)明內(nèi)容
相應(yīng)地,本發(fā)明的目的是提供用于多端口讀和寫操作的系統(tǒng)及方法。
本發(fā)明的一方面提供一種計(jì)算機(jī),該計(jì)算機(jī)包括將該計(jì)算機(jī)連接到其 它器件的多條數(shù)據(jù)路徑;和具有位的寄存器,所述位可編程設(shè)置為對(duì)所述多 條數(shù)據(jù)路徑中的各條數(shù)據(jù)路徑進(jìn)行尋址,使得該計(jì)算機(jī)可以通過多條數(shù)據(jù)路 徑中作為所述位并發(fā)設(shè)置的基礎(chǔ)的若干條數(shù)據(jù)路徑來進(jìn)行通信。該計(jì)算機(jī)可
以是計(jì)算機(jī)陣列的一部分,并且所述其它器件中的至少一個(gè)也為該計(jì)算機(jī)陣 列中的計(jì)算機(jī)。該計(jì)算機(jī)可以異步通信。
本發(fā)明的另 一方面提供一種針對(duì)計(jì)算機(jī)傳送數(shù)據(jù)的方法,該方法包括 (a)針對(duì)該計(jì)算機(jī)連接到其它器件的多條數(shù)據(jù)路徑來對(duì)所述其它器件設(shè)法 將所述數(shù)據(jù)寫入該計(jì)算機(jī)的信號(hào)加以監(jiān)視;(b)從所述其它器件中的首個(gè) 器件讀取所述數(shù)據(jù);并且(c)基于具有可編程設(shè)置為對(duì)所述多條數(shù)據(jù)路徑 進(jìn)行尋址的位的寄存器,將所述數(shù)據(jù)寫入所述其它器件中的一個(gè)器件。該計(jì) 算機(jī)可以是計(jì)算機(jī)陣列的一部分,并且所述其它器件中的至少一個(gè)器件也為 該計(jì)算機(jī)陣列中的計(jì)算機(jī)。該計(jì)算機(jī)可以異步通信。
簡(jiǎn)言之,本發(fā)明的一個(gè)優(yōu)選實(shí)施例是一計(jì)算機(jī),該計(jì)算機(jī)具有將該計(jì)算 機(jī)連接到其它器件的多條數(shù)據(jù)路徑,所述其它器件通常但不一定是其它計(jì)算 機(jī)。該計(jì)算機(jī)中的寄存器具有位,所述位可編程為對(duì)所述數(shù)據(jù)路徑中的各條 數(shù)據(jù)路徑進(jìn)行尋址,從而使該計(jì)算機(jī)可以通過所述數(shù)據(jù)路徑中作為所述位并 發(fā)設(shè)置的基礎(chǔ)的若干條數(shù)據(jù)路徑來進(jìn)行通信。
簡(jiǎn)言之,本發(fā)明的另 一優(yōu)選實(shí)施例是一種針對(duì)計(jì)算機(jī)傳送數(shù)據(jù)的方法。
針對(duì)該計(jì)算機(jī)連接到其它器件的多條數(shù)據(jù)路徑來對(duì)所述其它器件設(shè)法將數(shù) 據(jù)寫入該計(jì)算機(jī)的信號(hào)加以監(jiān)視。然后,從所述其它器件中的首個(gè)器件讀取 數(shù)據(jù)。并且,基于具有可編程為對(duì)多條數(shù)據(jù)路徑進(jìn)行尋址的位的寄存器,將 該數(shù)據(jù)寫入另一器件。
本發(fā)明實(shí)施例的優(yōu)勢(shì)在于它提高了在多處理器之間的數(shù)據(jù)傳輸?shù)乃俣?,特別是當(dāng)處理器被排列為多維陣列,且各處理器具有至少三條路徑可以讀或
寫數(shù)據(jù)。
本發(fā)明實(shí)施例的另 一 優(yōu)勢(shì)在于它通過在處理器之間分擔(dān)任務(wù),使多處理 器的使用更為容易,從而提高了整體計(jì)算速度。
本發(fā)明實(shí)施例的再一優(yōu)勢(shì)在于是它在多處理器之間分擔(dān)任務(wù)時(shí)減少了開銷。
本發(fā)明還提供了一種計(jì)算機(jī)程序,當(dāng)該計(jì)算機(jī)程序在合適的計(jì)算機(jī)上運(yùn) 行時(shí),使該計(jì)算機(jī)實(shí)施根據(jù)所述本發(fā)明的另一方面的方法。該程序可以是位 于載體上,所述載體可以是存貯介質(zhì)或信號(hào)。該存貯介質(zhì)可以是記錄介質(zhì)或 其它例子中的存儲(chǔ)設(shè)備。
鑒于實(shí)施本發(fā)明如這里所述的和在附圖的圖中所示的目前已知是實(shí)施 本發(fā)明的最佳模式以及優(yōu)選實(shí)施例的工業(yè)實(shí)用性的描述,本發(fā)明實(shí)施例的這
本發(fā)明實(shí)施例的意圖和優(yōu)勢(shì)將從以下結(jié)合附圖的詳細(xì)描述中變得明顯,
在附圖中
圖1為根據(jù)本發(fā)明的計(jì)算機(jī)陣列的概略圖2為示出圖1的計(jì)算機(jī)的子集的詳細(xì)圖及圖l的互連數(shù)據(jù)總線的更詳 細(xì)視圖3為描繪圖l和圖2的計(jì)算機(jī)中一個(gè)計(jì)算機(jī)的一般布局的框圖; 圖4為可在圖1和圖2的計(jì)算機(jī)中使用的指令字的概略圖; 圖5為圖3的時(shí)間片定序器的示意圖; 圖6為描繪根據(jù)本發(fā)明的一種方法的例子的流程圖; 圖7為示出用于討論根據(jù)本發(fā)明示例性實(shí)施例的圖1和圖2中計(jì)算機(jī)陣 列一部分的詳細(xì)圖;圖8a-f為示出可在圖7的部分中的計(jì)算機(jī)中使用的端口地址解碼的概觀 的表格;
圖9為描繪圖7和圖8d-f所示的多寫方法如何具體地與在單指令字中 包括多條指令的能力相結(jié)合的示意性框在附圖中的各幅圖中,相同的附圖標(biāo)記用于表示相同的或相似的元件或步驟。
具體實(shí)施例方式
雖然根據(jù)用于實(shí)現(xiàn)目的的模式對(duì)本發(fā)明的實(shí)施例進(jìn)行描述,但是本領(lǐng)域 技術(shù)人員將認(rèn)知到鑒于這些啟示并未脫離本發(fā)明的精神或范圍,因此可以實(shí) 現(xiàn)變體。
這里所描述的和/或在附圖中所示的本發(fā)明的實(shí)施例及其變體僅以示例 方式給出,并不限定本發(fā)明的范圍。除非以其它方式具體說明,本發(fā)明的獨(dú) 立方面和部件可以被省略或修改,或可以具有因此被替代的等價(jià)物,或可以 具有還未知的替代品,例如可能在未來開發(fā)的,或例如可能在未來被發(fā)現(xiàn)是 可接受的替代品的。由于潛在應(yīng)用的范圍很大,且由于本發(fā)明意在適應(yīng)很多 這樣的變體,因此只要保持在所要求的發(fā)明的精神和范圍之內(nèi),本發(fā)明還可 以針對(duì)各種各樣的應(yīng)用而被修改。
本發(fā)明的優(yōu)選實(shí)施例是用于多端口讀和寫操作的系統(tǒng)及方法。如這里的 多個(gè)附圖所示出的,尤其是在圖7的視圖中所示出的,由一般附圖標(biāo)記100 來表示本發(fā)明的優(yōu)選實(shí)施例。
作為本發(fā)明的場(chǎng)景和基礎(chǔ),首先給出異步計(jì)算機(jī)通信的詳細(xì)例子。為此, 圖1中的概略圖中描繪一計(jì)算機(jī)陣列,該計(jì)算機(jī)陣列在此由一般附圖標(biāo)記 IO來指代。計(jì)算機(jī)陣列IO具有多個(gè)(在示出的例子中是24個(gè))計(jì)算機(jī)12 (在陣列的例子中有時(shí)也稱作"核"或"節(jié)點(diǎn)")。在示出的例子中,所有 的計(jì)算機(jī)12都位于單個(gè)電路小片14上。各計(jì)算機(jī)12通常是獨(dú)立運(yùn)行的計(jì) 算機(jī),如在下文更詳細(xì)地討論的。計(jì)算機(jī)12由多條相互連接的數(shù)據(jù)總線16(其數(shù)量將在下文更詳細(xì)地討論)相互連接。在該例子中,數(shù)據(jù)總線16是 雙向異步高速并行數(shù)據(jù)總線,盡管出于該目的而采用其它的互連手段也在本 發(fā)明的范圍之內(nèi)。在陣列IO的本實(shí)施例中,不僅計(jì)算機(jī)12之間的數(shù)據(jù)通信 是異步的,而且獨(dú)立的計(jì)算機(jī)12內(nèi)部也以異步模式運(yùn)行。已經(jīng)發(fā)現(xiàn)這種模式提供了重要的優(yōu)勢(shì)。例如,由于沒有必要在整個(gè)計(jì)算機(jī)陣列10中分發(fā)時(shí)鐘信號(hào),因此可以節(jié)省大量的功率。此外,沒有必要分發(fā)時(shí)鐘信號(hào)還消除了可能限制陣列10的大小或產(chǎn)生其它困難的很多時(shí)序問題。本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到,電路小片14上還存在附加的部件,為了清楚起見,圖1的視圖中省略了這些部件。這些附加的部件包括微處理器芯片 的電源總線、外部連接焊盤及其它這些普通方面。計(jì)算機(jī)12e為不處于陣列10邊界的一個(gè)計(jì)算機(jī)12的例子。也就是說, 計(jì)算機(jī)12e具有四個(gè)互相垂直的相鄰計(jì)算機(jī)12a, 12b, 12c和12d。在下 文中將使用計(jì)算機(jī)12a-12e的這個(gè)分組,來更詳細(xì)討論陣列10的計(jì)算機(jī)12 間的通信。如圖1的視圖所見,諸如計(jì)算機(jī)12e這樣的內(nèi)部計(jì)算機(jī)12具有 四個(gè)其他的可以通過總線16與其通信的計(jì)算機(jī)12。在以下討論中,所討i侖 的原理將應(yīng)用于所有計(jì)算機(jī)12,除了只能夠與三個(gè)其他計(jì)算機(jī)12直接通信 的位于陣列io邊界的計(jì)算機(jī)12,以及只能夠與兩個(gè)其他計(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)當(dāng)注意到,在替代實(shí)施例中, 一些計(jì)算機(jī) 12是相鄰計(jì)算機(jī)的鏡像。然而,計(jì)算機(jī)12是全部具有同一方向,還是作為 相鄰計(jì)算機(jī)的鏡像在此并不重要,且在此將不再進(jìn)一步討論該潛在的復(fù)雜情 況。諸如計(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è)置為高。(在下文中會(huì)更詳細(xì)地討論這兩種情況。)
當(dāng)一個(gè)相鄰計(jì)算機(jī)12a、 12b、 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、 12b、 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ù)。注意,上述說明并不必然地意在按次序指示事件的順序。在實(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試著同時(shí)將它們的兩條讀線18均設(shè)置為高或同時(shí)將它們的兩條寫線 20均設(shè)置為高。然而,目前預(yù)計(jì)到,將存在以下時(shí)機(jī)期望將讀線18的不 同組合設(shè)置為高,從而使一個(gè)計(jì)算機(jī)12可以處于等待來自選中計(jì)算機(jī)12中 的首個(gè)計(jì)算機(jī)的數(shù)據(jù)來將該首個(gè)計(jì)算機(jī)的對(duì)應(yīng)寫線20設(shè)置為高的等待狀態(tài)。
在以上討論的例子中,計(jì)算機(jī)12e被描述為在相鄰的計(jì)算機(jī)(選自計(jì)算 機(jī)12a、 12b、 12c或12d中的一個(gè)以上計(jì)算機(jī))將該相鄰計(jì)算機(jī)的寫線20 設(shè)置為高之前,計(jì)算機(jī)12e將該計(jì)算機(jī)12e的讀線18中的一條以上讀線設(shè) 置為高。然而,該過程當(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還沒 有被計(jì)算機(jī)12a設(shè)置為高,則計(jì)算機(jī)12e會(huì)簡(jiǎn)單地等待,直到計(jì)算機(jī)12a將 該讀線18設(shè)置為高為止。然后,如上所討論的,當(dāng)讀線18與寫線20的對(duì) 應(yīng)對(duì)均為高時(shí),等待在數(shù)據(jù)線22上進(jìn)行傳輸?shù)臄?shù)據(jù)被傳輸。之后,發(fā)送計(jì) 算機(jī)12e—釋放寫線20,接收計(jì)算機(jī)12a(在該例子中)就會(huì)將兩個(gè)計(jì)算機(jī)
1012e與12a (在該例子中)之間的讀線18和寫線20都設(shè)置為低。
每當(dāng)諸如計(jì)算機(jī)12e的計(jì)算機(jī)12預(yù)計(jì)要寫,將其一條寫線20設(shè)置為高 時(shí),它將簡(jiǎn)單等待,基本不消耗功率,直到如上所述有適當(dāng)?shù)南噜徲?jì)算機(jī) 12 "請(qǐng)求"該數(shù)據(jù)為止,除非數(shù)據(jù)待被發(fā)送到其上的計(jì)算機(jī)12已經(jīng)將它的 讀線18設(shè)置為高,在這種情況下數(shù)據(jù)被立即發(fā)送。類似地,每當(dāng)計(jì)算機(jī)12 預(yù)計(jì)要讀取,將其一條以上讀線18設(shè)置為高時(shí),它將簡(jiǎn)單等待,基本不消 耗功率,直到連接到所選擇的計(jì)算機(jī)12的寫線20變高以在兩個(gè)計(jì)算機(jī)12 之間傳輸指令字為止。
可能存在若干種潛在的手段和/或方法來使計(jì)算機(jī)12如所述工作。但是, 在本例子中,計(jì)算機(jī)12之所以運(yùn)轉(zhuǎn)得這樣簡(jiǎn)單是因?yàn)樗鼈兺ǔ6际莾?nèi)部異 步運(yùn)行(除了以所述異步方式相互之間傳輸數(shù)據(jù))。也就是說,通常是按順 序完成指令。當(dāng)發(fā)生寫指令或讀指令時(shí),直到該指令完成(或者,也許作為 替代地,直到其因?yàn)?復(fù)位"或其他原因被異常中斷時(shí))才會(huì)有進(jìn)一步的動(dòng) 作。現(xiàn)有技術(shù)中,沒有規(guī)則的時(shí)鐘脈沖。更具體地說,只有當(dāng)正在被執(zhí)行的
指令既不是讀類型指令也不是寫類型指令時(shí)(假如讀或?qū)戭愋椭噶罱?jīng)常需要 另一個(gè)實(shí)體完成)或當(dāng)該讀或?qū)戭愋筒僮魇聦?shí)上已經(jīng)完成時(shí),才生成脈沖以
完成下一個(gè)指令。
圖3為描繪圖l和圖2的一個(gè)計(jì)算機(jī)12例子的總體布局的框圖。如圖 3的視圖所見,各計(jì)算機(jī)12為具有其自己的RAM 24和ROM 26的通用整 裝計(jì)算機(jī)。如以上提到的,計(jì)算機(jī)12有時(shí)也稱為獨(dú)立的"核"。在本例子 中,假如計(jì)算機(jī)12被組合在單芯片上。
計(jì)算機(jī)12的其他基本部件為返回堆棧28、指令區(qū)域30、算術(shù)邏輯單元 (ALU 32)、數(shù)據(jù)堆棧34和用于對(duì)指令進(jìn)行解碼的解碼邏輯段36。本領(lǐng)域 技術(shù)人員通常應(yīng)該很熟悉基于諸如本例子中的計(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)使其離開計(jì)算機(jī)12)。
當(dāng)然,如果特定計(jì)算機(jī)12不在諸如計(jì)算機(jī)12e的例子的陣列(圖1)內(nèi)部, 那么至少出于這里所述的意圖, 一個(gè)以上通信端口 38不會(huì)被那個(gè)特定計(jì)算 機(jī)使用。指令區(qū)域30包括若干寄存器40,在本例子中,寄存器40包括A 寄存器40a、 B寄存器40b、 P寄存器40c以及I/O控制和狀態(tài)寄存器(IOCS 寄存器40d)。在本例子中,A寄存器40a和IOCS寄存器40d為全18位寄 存器,而B寄存器40b和P寄存器40c為9位寄存器。
盡管本發(fā)明并不限于該例子,但是本計(jì)算機(jī)12被實(shí)施為執(zhí)行本機(jī)Forth 語言指令。如熟悉Forth計(jì)算機(jī)語言的人將認(rèn)知的,復(fù)雜Forth指令,即通 常所說的Forth "字"是根據(jù)設(shè)計(jì)在計(jì)算機(jī)中的本機(jī)處理器指令所構(gòu)建的。 在其它語言中,這可能為通常所說的"庫,,。如下文將更詳細(xì)描述的,計(jì)算 機(jī)12在一個(gè)時(shí)段從RAM 24、 ROM 26或直接從一條l丈據(jù)總線16 (圖2 )讀 取十八位。然而,由于Forth中的大多數(shù)指令(即通常所說的無操作數(shù)指令) 直接從堆棧28和34中得到它們的操作數(shù),因此它們的長(zhǎng)度通常僅為5位, 使得在單個(gè)十八位指令字中可以包含多達(dá)四條指令,條件是該組指令的最后 一條指令選自僅需三位的指令的有界集。在該實(shí)施例中,數(shù)據(jù)堆棧34頂部 的兩個(gè)寄存器是T寄存器44和S寄存器46。在圖3的視圖中以框圖的形式 描繪的還有時(shí)間片定序器42 (稍后詳細(xì)討論)。
圖4為指令字48的概略圖。(應(yīng)該注意指令字48實(shí)際上可以包含指令、 數(shù)據(jù),或包含指令和數(shù)據(jù)的一些組合。)指令字48由十八位50組成。作為 二進(jìn)制計(jì)算機(jī),各位50將為'T'或"0"。如這里先前所討論的,十八位 寬的指令字48可以包含位于四個(gè)時(shí)間片54中的多達(dá)四條指令52,該四個(gè) 時(shí)間片54 ^皮稱為時(shí)間片零54a、時(shí)間片一 54b、時(shí)間片二 54c和時(shí)間片三54d。 在本實(shí)施例中,十八位指令字48總是作為整體被讀取。因此,由于指令字 48中總是存在具有多達(dá)四條指令的潛能,因此在計(jì)算機(jī)12的指令集中包括 no-op (無操作)指令以提供用于當(dāng)沒有必要或甚至是不期望使用所有可用 的時(shí)間片54的情況。應(yīng)該注意,根據(jù)一個(gè)特定實(shí)施例,在間隔的時(shí)間片(具體來說,時(shí)間片一 54b和時(shí)間片三54c )中位50的極性(與有效低相比較是
有效高)是相反的。然而,這不是必需的,因此,為了更好地解釋這項(xiàng)發(fā)明, 在下面的討論中也避免這種潛在的復(fù)雜情況。
圖5為圖3的時(shí)間片定序器42的示意圖。從圖5的視圖中可以看出, 時(shí)間片定序器42具有排列成環(huán)形的多個(gè)(在該例子中是十四個(gè))反相器56 和一個(gè)與非門58,使得信號(hào)在經(jīng)過該十四個(gè)反相器56和與非門58時(shí)被反 相奇數(shù)次。當(dāng)或門60的兩個(gè)輸入中的任一個(gè)變?yōu)楦邥r(shí),在時(shí)間片定序器42 中發(fā)起一信號(hào)。第一或門輸入端62得自正在被執(zhí)行的指令52的i4位66。 如果i4位66為高,則該特定指令52是ALU指令,且i4位66為"1"。當(dāng) i4位66為"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)第一次通過時(shí)間片定序器輸 出端68時(shí),時(shí)間片定序器輸出端68的輸出為低,而第二次時(shí)為高。來自時(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í)行,則i4位66為"0"(低),并且因此第一或門輸入端62也為低。 本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到,在諸如計(jì)算機(jī)12的器件中,事件的時(shí)序通常很 關(guān)鍵,而且無一例外。本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到,在檢測(cè)時(shí)間片定序器42 后,來自或門60的輸出必須保持為高,直到該信號(hào)循環(huán)通過與非門58以便 發(fā)起環(huán)的第二 "圈"之后為止。之后,在第二 "圈"期間,來自或門60的 輸出會(huì)變低,以便阻止電路的多余繼續(xù)振蕩。
沖艮據(jù)以上討論可以認(rèn)知到,假設(shè)下文會(huì)討論的第二或門輸入端64不為高,則當(dāng)i4位66為"0"時(shí),時(shí)間片定序器42不會(huì)被觸發(fā)。
如上所述,根據(jù)各指令52是否為讀類型指令或?qū)戭愋椭噶顏碓O(shè)置各指 令52的i4位66。指令52的剩余位50為該指令提供了特定操作碼的剩余部 分。在讀類型指令或?qū)戭愋椭噶畹那闆r下, 一個(gè)以上位可用于指示從該特定 計(jì)算機(jī)12讀取數(shù)據(jù)的地址或?qū)?shù)據(jù)寫入該特定計(jì)算機(jī)12的地址。在本例子 中,待寫入的數(shù)據(jù)總是來自于T寄存器44 (數(shù)據(jù)堆棧34的頂部),然而數(shù) 據(jù)可以被選擇性地讀入T寄存器44或可以執(zhí)行該數(shù)據(jù)的指令區(qū)域30。也就 是說,在該特定實(shí)施例中,由于可以以在此所述的方式來傳送數(shù)據(jù)或指令, 因此盡管不是必需的,也可以從數(shù)據(jù)總線16直接執(zhí)行指令。此外, 一個(gè)以 上位50將用來指示哪個(gè)端口 38,如果存在的話,將被設(shè)置為讀或?qū)?。?dāng)前 的操作可以通過利用 一個(gè)以上位指代諸如A寄存器40a、 B寄存器40b等的 寄存器40來可選地完成。在這種例子中,將具有與各端口 38 (以及計(jì)算機(jī) 12可嘗試與之通信的任何其它潛在實(shí)體,例如存儲(chǔ)器、外部通信端口等) 相對(duì)應(yīng)的位的數(shù)據(jù)預(yù)載入所指代的寄存器40。例如,在特定寄存器40中, 四位中的各位可以對(duì)應(yīng)于上端口 38a、右端口 38b、左端口 38c或下端口 38d 中的各端口。在這些位的位置中的任意位置存在"1"的情況下,通過對(duì)應(yīng) 的端口 38將通信設(shè)置為繼續(xù)進(jìn)行。
緊接著的例子采用計(jì)算機(jī)12e嘗試向計(jì)算機(jī)12c寫的通信,盡管該例子 適用于在任意相鄰計(jì)算機(jī)12之間的通信。當(dāng)在寫計(jì)算機(jī)12e中執(zhí)行寫指令 時(shí),選中的寫線20被設(shè)置為高(在該例子中,是計(jì)算機(jī)12e與12c之間的 寫線20)。如果對(duì)應(yīng)的讀線18已經(jīng)為高,則通過所選中的通信端口 38馬 上將數(shù)據(jù)從選中的位置發(fā)送出去。作為替換地,如果對(duì)應(yīng)的讀線18還不為 高時(shí),則計(jì)算機(jī)12e筒單地停止操作,直到對(duì)應(yīng)的讀線確實(shí)變高為止。這里 先前已經(jīng)討論過當(dāng)存在讀類型指令或?qū)戭愋椭噶顣r(shí)停止計(jì)算機(jī)12a (或更準(zhǔn) 確地說是禁止計(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將寫線20保持為高,而接收計(jì)算機(jī)12c 會(huì)將讀線18保持為高)。然后,接收計(jì)算機(jī)12c將兩條線18和20拉低。 在實(shí)際應(yīng)用中,接收計(jì)算機(jī)12c可以在發(fā)送計(jì)算機(jī)12e釋放寫線20之前嘗 試將線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的輸出 變高,所以這將以這里先前所述的方式來發(fā)起時(shí)間片定序器42的操作,使 得將執(zhí)行指令字48的下一個(gè)時(shí)間片54中的指令52。確認(rèn)線72保持為高, 直到下一條指令52被解碼為止,從而防止偽地址到達(dá)地址總線。
當(dāng)正在被執(zhí)行的指令52位于指令字48的時(shí)間片三的位置時(shí),無論如何, 計(jì)算機(jī)12將提取下一個(gè)等待的十八位指令字48,當(dāng)然除非i4位66為'0,。 在實(shí)際應(yīng)用中,可以包括用于"預(yù)提取"指令的方法和裝置,使得可以在指 令字48中所有指令52的執(zhí)行結(jié)束之前開始該提取。然而對(duì)于異步數(shù)據(jù)通信 來說這也不是必需的。
已經(jīng)詳細(xì)描述了計(jì)算機(jī)12e向計(jì)算機(jī)12c寫的以上例子。如根據(jù)以上討 論可以認(rèn)知的,無論計(jì)算機(jī)12e首先嘗試向計(jì)算機(jī)12c寫還是計(jì)算機(jī)12c首 先嘗試從計(jì)算機(jī)12e讀取,其操作基本相同。操作在計(jì)算機(jī)12e和12c都就 緒之后才會(huì)完成,而且無論計(jì)算機(jī)12e還是計(jì)算機(jī)12c首先就緒,該首先就 緒的第一計(jì)算機(jī)12簡(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í)再度醒來,而發(fā)
起事務(wù)處理的第一計(jì)算機(jī)12會(huì)幾乎無限期地保持睡眠,直到第二計(jì)算機(jī)12
做好完成處理的準(zhǔn)備為止。
當(dāng)正在被執(zhí)行的指令52位于指令字48的時(shí)間片三的位置時(shí),無論如何, 計(jì)算機(jī)12將提取下一個(gè)等待的十八位指令字48,當(dāng)然除非i4位66為'0'。 在實(shí)際應(yīng)用中,可以包括用于"預(yù)提取,,指令的方法和裝置,使得可以在指 令字48中所有指令52的執(zhí)行結(jié)束之前開始該提取。然而對(duì)于異步數(shù)據(jù)通信 來說這也不是必需的。
已經(jīng)詳細(xì)描述了計(jì)算機(jī)12e向計(jì)算機(jī)12c寫的以上例子。如根據(jù)以上討 論可以認(rèn)知的,無論計(jì)算機(jī)12e首先嘗試向計(jì)算機(jī)12c寫還是計(jì)算機(jī)12c首 先嘗試從計(jì)算機(jī)12e讀取,其操作基本相同。操作在計(jì)算機(jī)12e和12c都就 緒之后才會(huì)完成,而且無論計(jì)算機(jī)12e還是計(jì)算機(jī)]2c首先就緒,該首先就 緒的首個(gè)計(jì)算機(jī)12筒單地"進(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í)再度醒來,而發(fā) 起事務(wù)處理的首個(gè)計(jì)算機(jī)12會(huì)幾乎無限期地保持睡眠,直到第二計(jì)算機(jī)12 做好完成處理的準(zhǔn)備為止。
根據(jù)對(duì)程序和用于完成該程序的手段的以上討論,現(xiàn)在可以理解對(duì)背景 方法的例子的以下簡(jiǎn)單描述。圖6為描繪該方法例子的流程圖74。在'發(fā) 起通信,操作76中, 一個(gè)計(jì)算機(jī)12執(zhí)行使其嘗試與另一計(jì)算機(jī)12通信的 指令52。該指令可以是對(duì)寫的嘗試或?qū)ψx的嘗試。在通常與'發(fā)起通信' 的操作76同時(shí)發(fā)生的'將第一線設(shè)置為高,操作78中,將讀線18或?qū)懢€ 20設(shè)置為高(取決于首個(gè)計(jì)算機(jī)12是嘗試讀還是嘗試寫)。作為"將第一 線設(shè)為高,,操作78的一部分,如此操作的計(jì)算機(jī)12將如這里先前所詳細(xì)描 述的。在'將第二線設(shè)置為高'操作80中,第二線(寫線20或讀線18)被第二計(jì)算機(jī)12設(shè)置為高。在'傳送數(shù)據(jù)操作'82中,在數(shù)據(jù)線22上發(fā) 送并接收數(shù)據(jù)(或指令等)。在'拉低線,操作84中,釋放讀線18和寫線 20,然后將該讀線18和寫線20拉低。在'繼續(xù)'操作86中,確認(rèn)條件使 計(jì)算機(jī)12恢復(fù)它們的操作。在本例子的情況下,確認(rèn)條件產(chǎn)生確認(rèn)信號(hào)88 (圖5),在這種情況下該確認(rèn)信號(hào)88僅僅是確認(rèn)線72的"高"條件。
圖7為示出圖1和圖2中計(jì)算機(jī)12的計(jì)算機(jī)陣列10的一部分100的詳 細(xì)視圖,因?yàn)樵摬糠諭OO屬于根據(jù)本發(fā)明的示例性實(shí)施例。為了強(qiáng)調(diào)該部分 100采用了本發(fā)明的實(shí)施例,計(jì)算機(jī)(節(jié)點(diǎn)、核等)現(xiàn)在仍然被稱作CPU 12。
如圖7所示,中心CPU 12通過相應(yīng)的數(shù)據(jù)總線16連接到鄰居CPU 12a、 12b 、 12c和12d,每條數(shù)據(jù)總線16都包括讀線18 、寫線20和十八條數(shù)據(jù)線 22。然而,在CPU 12中,總線16內(nèi)部連接,如果同時(shí)有至少兩個(gè)端口 38 待讀取,則CPU 12會(huì)創(chuàng)建未定義的硬件狀態(tài)。在軟件設(shè)計(jì)中應(yīng)當(dāng)考慮這種 情形,以允許從這些狀態(tài)中復(fù)原。
CPU 12e具有其自身的存儲(chǔ)器102 (例如圖3所示的RAM 24和ROM 26),該存儲(chǔ)器102可以包含其自身的軟件104。 CPU 12e還具有一套寄存 器40,以包含用于操作的操縱指針。這些寄存器包括用于數(shù)據(jù)操作的A寄 存器40a和B寄存器40b、用于保持程序指針的P寄存器40c,以及I/0控 制和狀態(tài)寄存器(1OCS寄存器40d)(也見圖3)。
圖8a-f為示出可在圖7中部分100的CPU 12中使用的端口地址解碼的 總體的表格圖。圖8a示出當(dāng)寄存器40中的地址位108被設(shè)置為'T'時(shí), 寄存器40通常對(duì)一個(gè)以上端口 38進(jìn)行尋址。相反地,未示出,當(dāng)?shù)刂肺?108為"0"時(shí),寄存器40對(duì)存儲(chǔ)器102中的位置進(jìn)行尋址。當(dāng)?shù)刂肺?08 被設(shè)置為高時(shí),接下來的八位充當(dāng)選擇位110,選擇位110指出哪個(gè)或哪些 特定的端口 38被選中,且它們是待被讀還是待被寫。因此,對(duì)于CPU 12e 中的寄存器40,"右"指示右側(cè)或東側(cè)鄰居CPU 12a,"下"指示下側(cè)或南 側(cè)鄰居CPU12b,"左"指^左側(cè)或西側(cè)鄰居CPU 12c,且"上"指4、上側(cè) 或北側(cè)鄰居CPU 12d。針對(duì)"RR,,動(dòng)作而設(shè)置的選擇位110指示即將到來的讀請(qǐng)求,而針對(duì)"WR"動(dòng)作而設(shè)置的選擇位110指示即將到來的寫請(qǐng)求。
注意,為了一致且最小化混淆,我們?cè)诖藞?jiān)持一般的慣例高值或'T, 表示真條件,低值或"0"表示假條件。然而,這并不是必要條件,并且可 以使用替代的慣例。例如,CPU 12的某些當(dāng)前優(yōu)選實(shí)施例在RR位的位置 使用"0"來表示真,在WR位的位置使用"1"表示真。
順便應(yīng)該注意到,該端口地址解碼方法還允許將地址位108設(shè)置為"1", 并且不設(shè)置選擇位110。這可以有利地用來對(duì)CPU 12中的其它元件進(jìn)行尋 址。例如,可以以這種方式對(duì)IOCS寄存器40d進(jìn)行尋址。
在CPU 12的本實(shí)施例中,IOCS寄存器40d使用相同的端口地址排列 來報(bào)告端口 38的讀線18和寫線20的當(dāng)前狀態(tài)。這使得IOCS寄存器40d 中的這些相應(yīng)位有助于允許對(duì)1/0 4乘作狀態(tài)的編程測(cè)試。例如,與其CPU 12e 從CPU 12b中異步讀取,其中如果CPU 12b尚未將共用的寫線20設(shè)置為高, 則CPU 12e會(huì)進(jìn)入睡0民,倒不如CPU 12e測(cè)試IOCS寄存器40d中位13 (下 /WR)的狀態(tài)(反映將CPU 12b連接到CPU 12e的寫線20的狀態(tài)),并轉(zhuǎn) 移到來自CPU 12b的就緒數(shù)據(jù)且立即讀取或轉(zhuǎn)移到另一條指令且立即執(zhí)行。
圖8b示出簡(jiǎn)單的第一例子。這里設(shè)置針對(duì)右/RR的選擇位110,指示待 從端口38b讀取數(shù)據(jù)。圖8c示出筒單的第二例子。這里設(shè)置針對(duì)右/WR的 選才奪位110,現(xiàn)在指示^f寺寫入端口 38b。
習(xí)慣上在任何給定的時(shí)段,只可以使能一個(gè)選擇位110來指定單個(gè)端口 38和單個(gè)動(dòng)作(讀或?qū)?。然后若干個(gè)高位被解碼為錯(cuò)誤條件。然而,在 此公開的新穎方法并不遵從該習(xí)慣,而是可以同時(shí)有利地使能針對(duì)端口 38 的一個(gè)以上選擇位110,從而請(qǐng)求若干個(gè)讀和/或?qū)懖僮?。在這種情況下,所 有相應(yīng)端口 38上會(huì)給出數(shù)據(jù),包括給出新數(shù)據(jù)的信號(hào)。
圖8d-f示出若干個(gè)讀和/或?qū)?t喿作的一些例子。圖8d示出CPU12e中的 寄存器40可以以何種方式并發(fā)指定從CPU 12b的讀取和對(duì)CPU 12a的寫。 圖8e示出可以以何種方式并發(fā)指定從CPU 12b的讀耳又和對(duì)CPU 12c的寫。 圖8f示出指定從CPU 12b的讀取和對(duì)CPU 12a或CPU 12c的寫。(如預(yù)示的,人們可以將圖8d-f與圖9進(jìn)行比較,在圖9中數(shù)據(jù)傳輸路徑由箭頭132 和134來代表。)
在多寫期間的實(shí)踐中,CPU 12e將在與一個(gè)以上目標(biāo)CPU 12a、 12b、 12c或12d共用的總線16上給出數(shù)據(jù)并將寫線20設(shè)置為高。然后,源CPU 12e會(huì)等待,直到接收到數(shù)據(jù)已經(jīng)被讀取的指示為止。在某些最終意義上來 說,可假定地, 一個(gè)以上目標(biāo)CPU 12a、 12b、 12c或12d在與CPU 12e共 用的總線16上將相應(yīng)的讀線18i殳置為高。然后,目標(biāo)CPU 12正式讀取4丈 據(jù),并在與CPU 12e共用的總線16上將相應(yīng)讀線18和寫線20拉j氐,,人而 確認(rèn)來自CPU 12e的數(shù)據(jù)的接收。
圖9為描繪圖7和圖8d-f所示的多寫方法可以以何種方式具體與一個(gè) 數(shù)據(jù)字120中包括多達(dá)四條指令的能力相結(jié)合的示意性框圖。各指令通常是 五位,所以18位寬的數(shù)據(jù)字120容納大約四條指令。于是最后一條指令可 以只有三位,但這對(duì)于許多指令已足夠。該方法的一個(gè)值得注意的有利方面 是它允許使用非常高效的數(shù)據(jù)傳輸機(jī)制。
在下文中,@=提取,!=存儲(chǔ),且p是指"程序計(jì)數(shù)器"或P寄存器40c。 在@ +和*+中的"+"是指在執(zhí)行之后寄存器中的存儲(chǔ)器地址遞增,除非如 果寄存器內(nèi)容指向另一寄存器或端口,該寄存器內(nèi)容不被遞增。這樣,在后 者這些情況下的"+"將這些指令區(qū)分為"專用的",而不是通常的⑨p和!p 指令。
圖9給出單個(gè)指令序列程序如何將數(shù)據(jù)從一個(gè)CPU 12傳輸?shù)搅硪?CPU 12的例子,該程序可以包括在僅利用用來讀和寫數(shù)據(jù)的P寄存器40c的單 個(gè)18位的數(shù)據(jù)字120中。這里"@p+"是時(shí)間片零54a中裝載的指令122。 這是從P寄存器40c中指定的當(dāng)前地址中提取下一個(gè)18位數(shù)據(jù)字120的直 接量操作,將該數(shù)據(jù)字120壓入數(shù)據(jù)棧34。[而且,通過將P寄存器40c中 的地址遞增,除非當(dāng)?shù)刂肥轻槍?duì)寄存器或端口時(shí)才不遞增,這里P寄存器 40c中地址位108會(huì)指示正在指定端口。]接下來,"."是時(shí)間片一 54b中 裝載的指令124。這是不執(zhí)行任何操作的筒單的iwp操作(無操作)。而且接下來,"!p+"是時(shí)間片二 54c中裝載的指令126。這是將頂部的數(shù)據(jù)字 120從數(shù)據(jù)堆棧34中彈出、并將該數(shù)據(jù)字120寫入P寄存器40c中所指定 的當(dāng)前地址的存貯操作。注意,P寄存器40c中所指定的地址沒有改變,其 僅是在功能上使不同的鄰居CPU 12被訪問而已。最后"unext"是時(shí)間片三 54d中裝載的指令128。這是根據(jù)返回堆棧28的頂部是否為零來執(zhí)行不同的 操作的微下一步(micro-next)操作。當(dāng)返回堆棧28不為零時(shí),微下一步使 返回堆棧28遞減,使在當(dāng)前所高速緩存的數(shù)據(jù)字120的時(shí)間片零54a中的 指令處(即在這里的例子中,再次在指令122處)繼續(xù)執(zhí)行。尤其應(yīng)該注意, 這里使用微下一步不需要提取新的數(shù)據(jù)字120。相反,當(dāng)返回堆棧28為零 時(shí),微下一步從P寄存器40c中所指定的當(dāng)前地址中提取下一個(gè)數(shù)據(jù)字120, 并使執(zhí)行在該新的數(shù)據(jù)字120的時(shí)間片零54a中的指令處開始。
針對(duì)該特定的例子,P寄存器40c可以被裝載以101100000b,且返回堆 棧28的頂部可以包含101b(十進(jìn)制的5 )。由于P寄存器40c包含101100000b
(見例如圖8a和圖8d),因此這里指令122中的"@p+"指令CPU 12e從 CPU 12b讀取(通過其端口 38d)下一個(gè)數(shù)據(jù)字120,并將讀取的數(shù)據(jù)字120 壓入數(shù)據(jù)堆棧34。不過,由于P寄存器40c中的地址是針對(duì)端口的,因此 不會(huì)遞增。這里指令124中的" " nop僅僅是填充器,用來填滿18位當(dāng)前 數(shù)據(jù)字120。接下來,由于P寄存器40c仍然包含101100000b,這里指令 126中的"!p+"指令CPU 12e彈出數(shù)據(jù)棧34的頂部數(shù)據(jù)字120 (即由指令 122置入的數(shù)據(jù)字120 ),并將該數(shù)據(jù)字120 (通過端口 38b )寫入CPU 12a。 再次,由于P寄存器40c中的地址是針對(duì)端口的,因此該地址不會(huì)遞增。然 后,指令128中的"unext"使返回堆棧28縮減到100b (十進(jìn)制的4 ),并 在指令122處繼續(xù)執(zhí)行。并且,指令122、 124、 126和128中的單個(gè)字程序 以這種方式繼續(xù),將返回堆棧28縮減到01 lb、 OlOb、 001b,最終縮減到000b
(十進(jìn)制的0),從CPU 12b提取下一數(shù)據(jù)字120,并執(zhí)行這個(gè)新數(shù)據(jù)字120 的時(shí)間片零54a中的指令。
總之,在這里的例子中的P寄存器40c被裝載以指定源和目的(端口38d和38b,以及CPU 12b和12a)的一個(gè)地址值,返回堆棧28被裝載以迭 代計(jì)數(shù)(5)。然后,通過CPU 12e有效地傳輸("流水線地")五個(gè)數(shù)據(jù) 字120,然后CPU 12e在也由CPU 12b提供的第六數(shù)據(jù)字120的時(shí)間片零 54a中的指令處繼續(xù)執(zhí)行。
各種其它優(yōu)勢(shì)是使用該簡(jiǎn)單但一流的方法的結(jié)果。例如,不需要使用A 寄存器40a和B寄存器40b,從而使得A寄存器40a和B寄存器40b可由 CPU 12e針對(duì)其它的數(shù)據(jù)目的而使用。從此得出,當(dāng)進(jìn)行數(shù)據(jù)傳輸時(shí),可以 消除指針交換(除雜)。
例如,針對(duì)數(shù)據(jù)流水線技術(shù)的傳統(tǒng)軟件例程會(huì)在某個(gè)點(diǎn)從輸入端口讀取 數(shù)據(jù),并在另一個(gè)點(diǎn)將數(shù)據(jù)寫入輸出端口。為此,除了正在使用的相應(yīng)輸入 端口和輸出端口的指針外,還需要指向存儲(chǔ)器的至少一個(gè)指針。由于端口可 能有不同的地址,因此這里繼續(xù)進(jìn)行的最直接方式會(huì)是使用直接量指令將輸 入端口地址載入堆棧,將該地址置入尋址寄存器,從輸入端口進(jìn)行讀取,然 后使用直接量指令將輸出端口的地址載入堆棧,將該地址置入尋址寄存器, 并對(duì)輸出端口進(jìn)行寫。
該方法中兩次直接量載入各需要4個(gè)周期,兩個(gè)寄存器設(shè)置指令各需要 l.個(gè)周期。即在環(huán)路內(nèi)部設(shè)置輸入和輸出指針總共花費(fèi)10個(gè)周期。此外, 當(dāng)需要這種指針交換時(shí)會(huì)有額外損失,因?yàn)樵诃h(huán)路內(nèi)部需要三個(gè)字的存儲(chǔ)空 間,從而不允許使用包含在單個(gè)18位字中的環(huán)路。相應(yīng)地,該例子中的指 令環(huán)路將需要具有存儲(chǔ)器訪問的分支,這增加了 4個(gè)周期的進(jìn)一步開銷,且 使總的指針交換和環(huán)路開銷至少為14個(gè)周期。
然而,相反,由于可以在CPU 12中進(jìn)行多端口尋址,用于選擇輸入端 口 38和輸出端口 38兩者的地址可以纟皮裝載到I/O環(huán)^^的外部,且可用于輸 入和輸出兩者。由于在多端口讀取期間僅來自一個(gè)鄰居的數(shù)據(jù)被讀取,且多 端口寫期間僅一個(gè)鄰居在讀取,因此該方法可以運(yùn)行。這樣,就不需要傳統(tǒng) 中設(shè)置輸入和輸出指針?biāo)ㄙM(fèi)的環(huán)路內(nèi)部的14個(gè)周期的開銷。該環(huán)路仍然 具有讀指令和寫指令,但是現(xiàn)在這些指令都可以使用同一指針,所以指針不需要改變。
這意味著使用多端口寫技術(shù)可以將某些類型的I/O環(huán)路的開銷減少14 個(gè)周期(或更多)。發(fā)明人已經(jīng)觀察到,在最好情況下,該技術(shù)允許在CPU 12的處理環(huán)路中從23個(gè)周期減少到6個(gè)周期。在一個(gè)周期需要大約一納秒 的情況下,這表示有效處理器速度從43MHz提高到167MHz,這表示相當(dāng) 可觀的改進(jìn)。
現(xiàn)在簡(jiǎn)要地繼續(xù)圖8f,并重新繼續(xù)圖9,圖8f和圖9示出可以以何種 方式進(jìn)行多寫,甚至是使用單字程序來進(jìn)行多寫。這里CPU 12e從CPU 12b 讀取,并寫入CPU 12a或CPU 12c。在效果上,這里的流水線技術(shù)為CPU 12a 或CPU 12c首先可用。該流水線技術(shù)圖示出在CPU 12中可能增加的靈活性, 且僅僅是以何種迄今認(rèn)為過于困難或不切實(shí)際的方式來使用根據(jù)本發(fā)明的 CPU 12的一個(gè)可能的例子。
總之,CPU 12必須處理對(duì)端口 38的讀取和到端口 38的跳轉(zhuǎn)。在/人多 端口地址讀取或向跳轉(zhuǎn)到多端口地址時(shí),如果沒有正在執(zhí)行的顯式代碼用來 發(fā)現(xiàn),則無法得知數(shù)據(jù)或指令是從哪個(gè)端口 38獲得的。(最快的方式依賴 于對(duì)兩個(gè)CPU 12都相同的端口 38。)傳統(tǒng)上,由于不同的數(shù)據(jù)或代碼可能 來自不同的端口,因此這個(gè)問題被看作是要避免的問題。然而,在假定的協(xié) 同環(huán)境下,發(fā)明人已經(jīng)找出如何將一切變?yōu)槔妗2⑶冶景l(fā)明就是這種情況。
如果CPU 12從多端口地址中執(zhí)行,且所有尋址鄰居CPU 12協(xié)同地(即 同步地)寫, 一個(gè)鄰居CPU 12可以供應(yīng)指令流,而不同的CPU12提供直 接量數(shù)據(jù)。直接量提取操作碼(@p+)產(chǎn)生可以選擇性地(并不同所有的直 接量都需要這樣做)滿足不同鄰居CPU 12的從P寄存器40c中多端口地址 的讀取。這僅僅需要鄰居CPU 12之間的廣泛"協(xié)同"。
然而,在流水線的多端口4吏用時(shí),在一個(gè)鄰居CPU 12正在讀耳又,而一 個(gè)CPU 12正在寫的情況下,對(duì)同一多端口地址的讀取和寫不會(huì)產(chǎn)生問題。 跳轉(zhuǎn)到這種多端口地址并執(zhí)行直接量存貯操作碼(!p+)的思想允許P寄存 器40c在完全安全的情況下對(duì)兩個(gè)端口 38進(jìn)行尋址。這使A寄存器40a和B寄存器40b均空閑,可為本機(jī)使用。
可以在不改變本發(fā)明的實(shí)施例的值或范圍的情況下,對(duì)其進(jìn)行各種額外 的修改。例如,雖然這里在讀指令和寫指令方面對(duì)該發(fā)明進(jìn)行了描述,但是 在實(shí)際應(yīng)用中,可以存在至少兩種讀類型指令和/或至少兩種寫類型指令。 僅作為一個(gè)例子,在本發(fā)明的一個(gè)實(shí)施例中,存在使寄存器遞增的寫指令和 不使寄存器遞增的其它寫指令。類似地,可以根據(jù)使用哪個(gè)寄存器40來選
擇通信端口 38等而改變寫指令,如這里先前所描述的。還可以存在若干不 同的讀指令,僅取決于計(jì)算機(jī)12的設(shè)計(jì)者認(rèn)為哪種改變是作為替換的讀行
為的有用選項(xiàng)。
類似地,盡管在這里已經(jīng)關(guān)于單個(gè)電路小片14上的陣列IO中的計(jì)算機(jī) 12之間的通信描述了本發(fā)明的實(shí)施例,但相同的原理和方法可用于或被修 改為用于完成其它器件間通信,例如計(jì)算機(jī)12與其專用存儲(chǔ)器之間的通信, 或陣列10中的計(jì)算機(jī)12與外部器件之間的通信(通過輸入/輸出端口等)。 實(shí)際上,預(yù)計(jì)到, 一些應(yīng)用可能需要陣列的陣列一利用當(dāng)前描述的器件間通 信方法潛在地適用于陣列的陣列中的通信。
盡管這里已討論了創(chuàng)造性計(jì)算機(jī)陣列10和計(jì)算機(jī)12的具體例子,但是, 預(yù)期將存在很多還無法想象的應(yīng)用。實(shí)際上,本發(fā)明的一個(gè)優(yōu)勢(shì)在于本創(chuàng)造 性方法及裝置可以適于大量使用。
本發(fā)明還提供一種計(jì)算機(jī)程序,當(dāng)該計(jì)算機(jī)程序在合適的計(jì)算機(jī)上運(yùn)行 時(shí),使該計(jì)算機(jī)實(shí)施在此之前所描述的創(chuàng)造性方法。該程序可以位于載體上。 該載體可以是存貯介質(zhì)或信號(hào)。該存貯介質(zhì)可以是記錄介質(zhì)或在其它例子中 的存儲(chǔ)設(shè)備。
上面的所有僅是本發(fā)明的可用實(shí)施例的 一些例子。本領(lǐng)域技術(shù)人員將容 易看出可以在不脫離本發(fā)明的精神或范圍的情況下,進(jìn)行大量其它的修改和 變動(dòng)。相應(yīng)地,這里的公開內(nèi)容目的不意在限定,且所附的權(quán)利要求被解釋 為包含本發(fā)明的全部范圍。
2權(quán)利要求
1. 一種計(jì)算機(jī),包括將該計(jì)算機(jī)連接到其它器件的多條數(shù)據(jù)路徑;以及具有位的寄存器,所述位可編程設(shè)置為對(duì)所述多條數(shù)據(jù)路徑中的各條數(shù)據(jù)路徑進(jìn)行尋址,使得該計(jì)算機(jī)可以通過所述多條數(shù)據(jù)路徑中作為所述位并發(fā)設(shè)置的基礎(chǔ)的若干條數(shù)據(jù)路徑來進(jìn)行通信。
2、 根據(jù)權(quán)利要求1所述的計(jì)算機(jī),其中所述寄存器具有分別將所述 其它器件表示為該計(jì)算機(jī)可以從中讀取數(shù)據(jù)的源器件的情況和將所述其它 器件表示為該計(jì)算機(jī)可以將數(shù)據(jù)寫入的目的器件的情況的位,從而允許用所 述寄存器中的單 一 地址來兼表示由該計(jì)算機(jī)傳送的數(shù)據(jù)的源器件和目的器 件雙方。
3、 根據(jù)權(quán)利要求1或2所述的計(jì)算機(jī),其中 該計(jì)算機(jī)包括堆棧存貯元件;并且該計(jì)算機(jī)僅采用所述寄存器和所述堆棧存貯元件來從所述其它器件中 的第一其它器件讀取數(shù)據(jù)并將所述數(shù)據(jù)寫入所述其它器件中的第二其它器件。
4、 根據(jù)權(quán)利要求1、 2或3所述的計(jì)算機(jī),其中該計(jì)算機(jī)采用長(zhǎng)度足以包括若干條指令的指令字,并可以實(shí)現(xiàn)所述指令 字中給出的所述指令的情況,所述指令字在所述數(shù)據(jù)路徑上給出;該計(jì)算機(jī)僅采用單個(gè)所述指令字中的程序、所述寄存器和堆棧存貯元件 來從所述其它器件中的第一器件讀取數(shù)據(jù)并將所述數(shù)據(jù)寫入所述其它器件 中的第二器件。
5、 根據(jù)權(quán)利要求l、 2、 3或4所述的計(jì)算機(jī),其中該計(jì)算機(jī)通過所述數(shù)據(jù)路徑中由所述寄存器指定的第 一數(shù)據(jù)路徑來從 所述其它器件中的一個(gè)器件讀取數(shù)據(jù);并且該計(jì)算機(jī)通過所述數(shù)據(jù)路徑中由所述寄存器并發(fā)指定的第二數(shù)據(jù)路徑來將數(shù)據(jù)寫入所述其它器件中的另 一個(gè)不同的器件。
6、 根據(jù)權(quán)利要求5所述的計(jì)算機(jī),其中該計(jì)算機(jī)可以從若干個(gè)所述其它器件中由所述寄存器并發(fā)指定的一個(gè)其它器件讀取數(shù)據(jù);或該計(jì)算機(jī)可以將數(shù)據(jù)寫入由所述寄存器并發(fā)指定的若干個(gè)所述其它器件;并且該計(jì)算機(jī)從所述其它器件中提供所述數(shù)據(jù)的第一其它器件讀取,并寫入 所述其它器件中接受所述數(shù)據(jù)的第二其它器件。
7、 根據(jù)前述權(quán)利要求中任一項(xiàng)所述的計(jì)算機(jī),其中 所述寄存器中定義該計(jì)算機(jī)可以從中讀取的所述其它器件的所述位是讀位;所述寄存器定義該計(jì)算機(jī)可以寫入的所述其它器件的所述位是寫位; 當(dāng)所述讀位被置位時(shí),該計(jì)算機(jī)嘗試從所述其它器件中對(duì)應(yīng)的所有第二其它器件讀??;并且當(dāng)所述寫位被置位時(shí),該計(jì)算機(jī)嘗試寫入所述其它器件中對(duì)應(yīng)的所有第二其它器件。
8、 一種針對(duì)計(jì)算機(jī)傳送數(shù)據(jù)的方法,包括(a )針對(duì)該計(jì)算機(jī)連接到其它器件的多條數(shù)據(jù)路徑來對(duì)所述其它器件設(shè)法將該數(shù)據(jù)寫入該計(jì)算機(jī)的信號(hào)加以監(jiān)視; (b)從所述其它器件中的首個(gè)器件讀取所述數(shù)據(jù);并且 (c )基于具有可編程設(shè)置為對(duì)所述多條數(shù)據(jù)路徑進(jìn)行尋址的位的寄存器,將所述數(shù)據(jù)寫入所述其它器件中的一個(gè)器件。
9、 根據(jù)權(quán)利要求8所述的方法,其中所述(a)包括僅監(jiān)視在所述寄存器中設(shè)有相應(yīng)位的所述數(shù)據(jù)路徑,從 而允許用所述寄存器中的單一地址來兼表示正在被傳送的數(shù)據(jù)的源器件和 目的器件雙方。
10、 根據(jù)權(quán)利要求8或9所述的方法,其中所述(b)包括嘗試從在所述寄存器中設(shè)有相應(yīng)位的所有所述其它器件讀取。
11、 根據(jù)權(quán)利要求8、 9或10所述的方法,其中所述(c)包括嘗試對(duì)所述寄存器中設(shè)有相應(yīng)位的所有所述其它器件進(jìn) 行寫。
12、 根據(jù)權(quán)利要求8、 9、 10或11所述的方法,其中所述(a)包括響應(yīng)于接收到首個(gè)所述信號(hào),停止所述監(jiān)視,從而保證 所述讀取來自所述其它器件中與所述首個(gè)所述信號(hào)相關(guān)聯(lián)的那個(gè)器件。
13、 根據(jù)權(quán)利要求8、 9、 10、 11或12所述的方法,其中所述數(shù)據(jù)包括 一連串?dāng)?shù)據(jù)字,并且進(jìn)一步,其中所述(b)包括將各所述數(shù)據(jù)字直接從所述數(shù)據(jù)路徑中的一條數(shù)據(jù)路徑 讀入該計(jì)算機(jī)中的堆棧存貯元件;并且所述(c)包括將各所述數(shù)據(jù)字直接從所述堆棧存貯元件寫入所述數(shù)據(jù) 路徑中的 一條數(shù)據(jù)路徑。
14、 根據(jù)權(quán)利要求8至13中任一項(xiàng)所述的方法,其中該計(jì)算機(jī)采用長(zhǎng) 度足以包括若干條指令的指令字,并且進(jìn)一步,其中所述(b)和所述(c)包括僅采用單個(gè)所述指令字中的程序、所述寄存 器和堆棧存貯元件。
15、 根據(jù)權(quán)利要求14所述的方法,進(jìn)一步包括接收所述數(shù)據(jù)路徑中的 一條數(shù)據(jù)路徑上的所迷單個(gè)所述指令字。
16、 一種計(jì)算機(jī)程序,該計(jì)算機(jī)程序在合適的計(jì)算機(jī)上運(yùn)行,使該計(jì)算 機(jī)實(shí)施根據(jù)權(quán)利要求8至15中任一項(xiàng)所述的方法。
全文摘要
計(jì)算機(jī)(12)具有連接到其它器件的多條數(shù)據(jù)路徑(38a-d),所述其它器件可以是類似的計(jì)算機(jī)。提供具有位(110)的寄存器(40d),所述位可編程設(shè)置為對(duì)各條數(shù)據(jù)路徑進(jìn)行尋址,從而使該計(jì)算機(jī)可以通過所述數(shù)據(jù)路徑中作為所述位并發(fā)設(shè)置的基礎(chǔ)的若干條數(shù)據(jù)路徑來進(jìn)行通信。可選擇地,該計(jì)算機(jī)中的若干個(gè)計(jì)算機(jī)可以串聯(lián)連接(稱為流水線)或以形成陣列(10)的方式連接。
文檔編號(hào)G06F9/38GK101295241SQ20081009408
公開日2008年10月29日 申請(qǐng)日期2008年4月25日 優(yōu)先權(quán)日2007年4月27日
發(fā)明者約翰·W·瑞博 申請(qǐng)人:科技資產(chǎn)股份有限公司