專利名稱:計(jì)算機(jī)的循環(huán)寄存器陣列的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)和計(jì)算機(jī)處理器領(lǐng)域,更具體地涉及更有效地使用堆 棧計(jì)算機(jī)處理器中的堆棧的方法和裝置。
背景技術(shù):
堆棧機(jī)器提供的處理器復(fù)雜度遠(yuǎn)低于復(fù)雜指令集計(jì)算機(jī)(CISC)提供
的處理器復(fù)雜度,并且提供的總體系統(tǒng)復(fù)雜度低于精簡(jiǎn)指令集計(jì)算機(jī)
(RICS)或CISC機(jī)器提供的總體系統(tǒng)復(fù)雜度。它們?cè)诓恍枰獜?fù)雜的編譯器 或高速緩存控制硬件來獲得高性能的情況下實(shí)現(xiàn)了低的處理器復(fù)雜度和總 體系統(tǒng)復(fù)雜度。在眾多編程環(huán)境中,針對(duì)給定的價(jià)格,它們還達(dá)到了有竟?fàn)?力的原始(raw)性能和高級(jí)(superior)性能。它們最初成功的應(yīng)用領(lǐng)域是 在實(shí)時(shí)嵌入式控制環(huán)境中,在該領(lǐng)域中它們遠(yuǎn)勝過其它系統(tǒng)設(shè)計(jì)方法。先前 堆棧大多被保留在程序存儲(chǔ)器中,而更新的堆棧機(jī)器為堆棧保留了獨(dú)立的存 儲(chǔ)器芯片或甚至是片上存儲(chǔ)區(qū)域。這些堆棧機(jī)器提供了極快的子例程調(diào)用能 力以及卓越的中斷處理和任務(wù)切換性能。
然而,沒有堆棧上溢或下溢狀況的硬件檢測(cè)。堆棧上溢發(fā)生在沒有足夠 數(shù)目的寄存器可用且結(jié)果還持續(xù)被壓入堆棧中,使得底部寄存器被重寫時(shí)。 堆棧下溢發(fā)生在所有的寄存器變空,并且持續(xù)的彈出堆棧產(chǎn)生了無意的或不 正確的結(jié)果時(shí)。 一些其它堆棧處理器使用堆棧指針和存儲(chǔ)器管理,從而在堆 棧指針超出為該堆棧分配的存儲(chǔ)范圍時(shí)對(duì)錯(cuò)誤狀況進(jìn)行標(biāo)記。授予Zahir等 人的美國(guó)專利No. 6,367,005公開了一種寄存器堆棧引擎,其為寄存器堆棧 保存存儲(chǔ)空間足夠的寄存器,以在堆棧上溢的情況下提供更多可用的寄存 器。在堆棧下溢的情況下,寄存器堆棧引擎還延遲微處理器,直到該引擎能夠恢復(fù)適當(dāng)數(shù)目的寄存器為止。
授予Story的美國(guó)專利No. 6,219,685公開了 一種將操作結(jié)果與閾值進(jìn)行 比較的方法。然而,該方法沒有區(qū)分下舍入成為閾值的結(jié)果(可能會(huì)導(dǎo)致上 溢異常)與剛好等于閾值的結(jié)果。由Story公開的另一種方法讀寫硬件標(biāo)志 來識(shí)別上溢或下溢狀況。然而,指令必須被順序執(zhí)行,而且任何跟隨寄存器 讀/寫的指令在讀/寫操作完成之前都不能執(zhí)行,這使得進(jìn)程緩慢。
使用存儲(chǔ)器中的堆棧,上溢或溢可能會(huì)重寫堆棧項(xiàng)目,或者使用不意在 作為堆棧一部分的堆棧項(xiàng)目。需要一種減少或消除堆棧中上溢和下溢的改進(jìn)
方法。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供這樣一種設(shè)備和方法,即其中雙堆棧處理器的數(shù) 據(jù)堆棧和返回堆棧不是存儲(chǔ)器中由堆棧指針訪問的陣列,而是由獨(dú)立的專用 移位寄存器訪問的石更線(hardwire)。
本發(fā)明的另一目的在于減小或消除數(shù)據(jù)堆?;蚍祷囟褩5纳弦绾拖乱?。
本發(fā)明的再一目的在于最小化雙向堆棧寄存器的一位堆棧寄存器間的 電連接長(zhǎng)度,從而最小化所需的驅(qū)動(dòng)器大小并最小化緩沖。
這些和其它目的是由這里所描述的發(fā)明來實(shí)現(xiàn)的,其中傳統(tǒng)的堆棧由以 循環(huán)重復(fù)模式工作的寄存器陣列來代替。該循環(huán)重復(fù)模式通過使用相關(guān)聯(lián)的 包括以交替模式電互連的多個(gè)一位移位寄存器的雙向移位寄存器來實(shí)現(xiàn)。該 配置防止從堆棧的外部進(jìn)行讀取,并且防止讀取無意的空寄存器值。
以上所述的雙堆棧處理器可以作為獨(dú)立運(yùn)行的處理器來工作,也可以與 互連計(jì)算機(jī)陣列中的若干其它類似的或不同的處理器一起使用。
圖l是描繪堆棧計(jì)算機(jī)的一般布局的框圖; 圖2是根據(jù)本發(fā)明的數(shù)據(jù)堆棧;圖3是堆棧的單個(gè)寄存器的更詳細(xì)視圖4是根據(jù)本發(fā)明的返回堆棧;
圖5是根據(jù)本發(fā)明的計(jì)算機(jī)陣列的概略圖;和
圖6是示出圖5的計(jì)算機(jī)的子集的詳細(xì)圖及圖5的互連數(shù)據(jù)總線的更詳 細(xì)-見圖。
具體實(shí)施例方式
參考附圖描述本發(fā)明,在附圖中,相同的附圖標(biāo)記表示相同的或相似的 元件。雖然根據(jù)用于實(shí)現(xiàn)本發(fā)明目的的模式對(duì)本發(fā)明進(jìn)行了描述,但是本領(lǐng) 域技術(shù)人員將認(rèn)知到,在脫離本發(fā)明的精神或范圍的情況下,可以鑒于這些 啟示來實(shí)現(xiàn)變體。
這里所描述的和/或在附圖中所示的本發(fā)明的實(shí)施例及其變體僅以示例 方式給出,并不限定本發(fā)明的范圍。由于本發(fā)明意在適應(yīng)多種變體,因此除 非以其它方式具體說明,本發(fā)明的獨(dú)立方面和部件可以在保持在所要求的發(fā) 明的精神和范圍之內(nèi)的同時(shí),針對(duì)各種各樣的應(yīng)用被省略或修改。
圖1是描繪本發(fā)明中使用的雙堆棧計(jì)算機(jī)12的一般布局的框圖。計(jì)算 機(jī)12通常為具有其自己的RAM 24和ROM 26的整裝計(jì)算機(jī)。
計(jì)算機(jī)12的其他基本部件為包括R寄存器29的返回堆棧28、指令區(qū) 域30、算術(shù)邏輯單元(ALU或處理器)32、數(shù)據(jù)堆棧34和用于對(duì)指令進(jìn)行 解碼的解碼邏輯段36。計(jì)算機(jī)12是具有數(shù)據(jù)堆棧34和分離的返回堆棧28 的雙堆棧計(jì)算機(jī)。本領(lǐng)域技術(shù)人員通常應(yīng)該很熟悉諸如本例子中的計(jì)算機(jī) 12之類的基于堆棧的計(jì)算機(jī)的操作。
在當(dāng)前描述的實(shí)施例中,指令區(qū)域30包括若干個(gè)寄存器40,在本例子 中,寄存器40包括A寄存器40a、 B寄存器40b和P寄存器40c。在本例子 中,A寄存器40a為全18位寄存器,而B寄存器40b和P寄存器40c為9 位寄存器。
本發(fā)明公開了一種堆棧計(jì)算機(jī)處理器,在該堆棧計(jì)算機(jī)處理器中,數(shù)據(jù)
8堆棧和返回堆棧包括寄存器陣列,該寄存器陣列以周期(cyclical)、重復(fù)或 循環(huán)(circular)才莫式進(jìn)行工作。正如在眾多現(xiàn)有技術(shù)的計(jì)算機(jī)中,數(shù)據(jù)堆棧 和返回堆棧并不是存儲(chǔ)器中的由堆棧指針訪問的陣列。
圖2公開了根據(jù)本發(fā)明的18位數(shù)據(jù)堆棧的實(shí)施例。數(shù)據(jù)堆棧中頂部的 兩個(gè)寄存器是18位T寄存器和18位S寄存器。數(shù)據(jù)堆棧的其余部分包括八 個(gè)附加的18位硬件寄存器,在該例子中這些硬件寄存器編號(hào)為S2至Sg。循 環(huán)寄存器陣列S2-S9可以在T寄存器和S寄存器不存在的情況下操作。然
而,至少S寄存器的存在與S2-S9寄存器的結(jié)合提供更快的訪問電路和最
優(yōu)的時(shí)序,從而提供循環(huán)寄存器陣列的更高的操作速度。另外,S寄存器充
當(dāng)S2-S9可尋址寄存器與處理器系統(tǒng)的其它部分之間的緩沖器,這提供了 S2- S9寄存器與處理器系統(tǒng)的其它部分之間的時(shí)序獨(dú)立性。
該實(shí)施例還包括雙向移位寄存器,該雙向移位寄存器包含多個(gè)一位移位 寄存器。 一位移位寄存器的數(shù)目等于位于S寄存器之下的底部堆棧寄存器
S2至S9的數(shù)目。各個(gè)一位移位寄存器連接至其對(duì)應(yīng)的S2至S9堆棧寄存器,
如圖2中所示。 一位移位寄存器以交替模式電互連,從而使堆棧的S2至S9 寄存器以如圖2所示的由S2 —S4—S6—S8—S9—S7 — s5—S3 —S2給定的順序 循環(huán)互連模式來工作。底部堆棧寄存器的順序選擇以循環(huán)重復(fù)的模式來操 作。 一位移位寄存器的互連線從不跨越多于三個(gè)相鄰的移位寄存器,這避免 了將底部移位寄存器連接至頂部移位寄存器的長(zhǎng)線的需要。這些較短的線需 要較小的驅(qū)動(dòng)器,并且緩沖也得到了最小化。給定的實(shí)施例使用八個(gè)附加堆 棧寄存器作為循環(huán)寄存器陣列。然而,也可以采用以四的倍數(shù)個(gè)的形式使用 的底部寄存器的其它組合。
圖2還公開了使寄存器S2-S9以及T寄存器和S寄存器互連的讀總線 和寫總線。雙向移位寄存器中的各個(gè)一位移位寄存器連接至S2- S9陣列中的 對(duì)應(yīng)底部堆棧寄存器,其中一段時(shí)間內(nèi)移位寄存器中僅有一位為高(讀為 一),所有其它位讀為零。在上電時(shí),必須對(duì)移位寄存器進(jìn)行初始化,以便 剛好包含設(shè)置為一的一位和設(shè)置為零的所有其它位。在給定的例子中,移位寄存器頂部位指向S2以讀取,并指向互連的相鄰寄存器S4以寫入,如圖2 中的虛寫線所示。盡管為了不引起對(duì)附圖的不必要混淆,其它寫線未被示出, 但是單一位移位寄存器的剩余位相似地連接至寄存器S2至S4中的對(duì)應(yīng)寄存器。
由寄存器T、 S和S2至S9形成深度為十單元的后進(jìn)先出棧(ten cell deep push down stack )。由于底部八個(gè)寄存器位于循環(huán)緩沖器中,因此硬件巻繞 (wrap),不會(huì)上溢或下溢。不能期望在該深度為十單元的后進(jìn)先出棧中放 入多于十個(gè)項(xiàng)目并將它們都取出,但是永遠(yuǎn)可以一直提取從堆棧底部提取的 最后八個(gè)項(xiàng)目的更多副本。從它作為出錯(cuò)的意義上來說,不存在下溢。由于 如果程序一直從堆棧中提取值,底部的八個(gè)會(huì)被一次一次地讀取,所以這是 復(fù)制八個(gè)字(或四或二或一)的模式的最快方法。
類似地,從堆棧指針允許堆棧以其它任何東西步進(jìn)的意義上來說,不存 在堆棧上溢。堆棧是有限的,如果十個(gè)以上的項(xiàng)目被放入堆棧中,則僅有最 后十個(gè)會(huì)被保留;前十次以后的每次存儲(chǔ)都會(huì)重寫S2至S9寄存器中的一個(gè) 寄存器。不需要將堆棧"初始化"至預(yù)置位置,而是僅通過從該堆棧所在位 置開始使用即可聲明該堆棧是空的。
圖3是數(shù)據(jù)堆棧或返回堆棧內(nèi)的各個(gè)寄存器的擴(kuò)展視圖。每個(gè)18位寄 存器包括編號(hào)為0至17的18個(gè)鎖存器。有18個(gè)輸入選通門(pass gate )(編 號(hào)為0至17)的集合,每個(gè)輸入選通門將18個(gè)鎖存器中相應(yīng)的鎖存器選擇 性地連接至寫總線。還有18個(gè)輸出選通門(編號(hào)為0至17)的集合,每個(gè) 輸出選通門將18個(gè)鎖存器中相應(yīng)的鎖存器選擇性地連接至讀總線。輸入選 通門由在輸入控制線(圖2的寫線)上斷言的寫控制信號(hào)通過連接至輸入控 制線的反相放大器來控制,輸出選通門由在輸出控制線(圖2的讀線)上斷 言的讀控制信號(hào)通過連接至輸出控制線的反相放大器來控制。
圖4公開了根據(jù)本發(fā)明的18位返回堆棧。返回堆棧中的頂部寄存器是 18位R寄存器,八個(gè)附加18位硬件寄存器位于R寄存器的下面,并且在此 被編號(hào)為R!-R8。底部的八個(gè)寄存器R,-R8以交替模式作為重復(fù)循環(huán)陣列來工作,類似于以上公開的數(shù)據(jù)堆棧。
循環(huán)寄存器陣列R,-Rs可以在R寄存器不存在的情況下操作。然而,
R寄存器的存在與R, - Rs寄存器的結(jié)合提供更快的訪問電路和最優(yōu)的時(shí)序, 從而提供循環(huán)寄存器陣列的更高的操作速度。另外,R寄存器充當(dāng)R,-R8 可尋址寄存器與處理器系統(tǒng)的其它部分之間的緩沖器,這提供了 R,-Rs寄 存器與處理器系統(tǒng)的其它部分之間的時(shí)序獨(dú)立性。
該實(shí)施例還包括雙向移位寄存器,該雙向移位寄存器包含多個(gè)一位移位 寄存器。 一位移位寄存器的數(shù)目等于位于R寄存器之下的附加底部寄存器 R,至Rs的數(shù)目。各個(gè)一位移位寄存器連接至其對(duì)應(yīng)的R!至Rs底部堆棧寄 存器,如圖4所示。雙向移位寄存器的一位移位寄存器以交替模式電互連, 從而使堆棧的R!至Rg寄存器以由R, —R3 —R5 —R7 —R8 —R6 —R4 —R2 — 給定的順序循環(huán)互連模式工作,如圖4所示。寄存器的順序選擇以循環(huán)重復(fù) 模式操作。寄存器的互連線從不跨越多于三個(gè)相鄰的一位移位寄存器,這避
免了對(duì)將底部的 一位移位寄存器連接至頂部的一位移位寄存器的長(zhǎng)線的需 要。這些較短的線需要較小的驅(qū)動(dòng)器,并且緩沖也得到了最小化。盡管在給 定的實(shí)施例中公開了八個(gè)附加返回寄存器,但也可以在循環(huán)寄存器陣列中釆 用四的倍數(shù)個(gè)其它底部寄存器的組合。讀總線和寫總線使寄存器R,-118互 連。移位寄存器的每個(gè)一位寄存器連接至R, - R8陣列中對(duì)應(yīng)的堆棧寄存器。 每次移位寄存器中僅有一位為高(讀為一),而所有其它位讀為零。在上電 時(shí),必須對(duì)移位寄存器進(jìn)行初始化,以便剛好包含設(shè)置為一的一位和設(shè)置為 零的所有其它位。在給定的例子中,移位寄存器頂部位指向或讀Rp并向
互連的相鄰寄存器R3寫。
在目前的發(fā)明中,不存在對(duì)堆棧上溢或下溢狀況的硬件檢測(cè)。 一般來說,
現(xiàn)有技術(shù)的處理器使用堆棧指針和存儲(chǔ)器管理等,從而在堆棧指針超出為該
堆棧分配的存儲(chǔ)范圍時(shí)對(duì)錯(cuò)誤狀況進(jìn)行標(biāo)記。當(dāng)堆棧位于存儲(chǔ)器中,或者在
存儲(chǔ)器中被管理時(shí),上溢或下溢可能會(huì)重寫堆棧項(xiàng)目或?qū)⒍褩m?xiàng)目用作計(jì)劃
之外的事物。然而,由于本發(fā)明底部寄存器作為循環(huán)陣列來工作,因此堆棧不會(huì)上溢或下溢出堆棧區(qū)域。相反,循環(huán)寄存器將僅僅圍繞寄存器陣列巻繞。 由于堆棧具有有限的深度,因此將任何事物壓入堆棧的頂部意味著底部的某 些事物會(huì)被重寫。在給定的實(shí)施例中,將多于十個(gè)的項(xiàng)目壓入數(shù)據(jù)堆棧或?qū)?br>
多于九個(gè)的項(xiàng)目壓入返回堆棧必須在具有以下認(rèn)識(shí)的情況下進(jìn)行這樣做會(huì)
導(dǎo)致堆棧底部的項(xiàng)目被重寫。
軟件的責(zé)任是跟蹤堆棧上的項(xiàng)目的數(shù)目,而并不嘗試放置比相應(yīng)堆棧能 夠容納的項(xiàng)目更多的項(xiàng)目。在出錯(cuò)時(shí),硬件不會(huì)檢測(cè)堆棧底部的項(xiàng)目的重寫 或者進(jìn)行標(biāo)記。應(yīng)該注意,軟件可以若干種方式來利用堆棧底部的循環(huán)陣列 的優(yōu)勢(shì)。作為一個(gè)例子,軟件能夠簡(jiǎn)單地假設(shè)堆棧在任何時(shí)刻都是'空的,。 由于舊的項(xiàng)目在被向下壓入底部時(shí),它們會(huì)在堆棧被填滿時(shí)被丟棄,因此不 需要從堆棧中清除舊的項(xiàng)目,所以沒有事物需要程序進(jìn)行初始化以假設(shè)堆棧 是空的。
另 一可利用的優(yōu)點(diǎn)在于,重用寄存器項(xiàng)目無需重新載入這些用于重用的
取,或者被讀取和寫入。在兩次數(shù)據(jù)堆棧讀之后,T和S將具有來自下面八 個(gè)堆棧寄存器的循環(huán)陣列的兩個(gè)項(xiàng)目的副本。在再讀取八次之后,T和S會(huì) 使用堆棧巻繞被重新載入以從下面再次讀取的相同的值。在不必復(fù)制這八個(gè) 項(xiàng)目或?qū)⑦@些項(xiàng)目寫回堆棧的情況下這些項(xiàng)目能夠從堆棧中順序讀取的次 數(shù)沒有限制。因?yàn)榈撞考拇嫫鲃偤脦喞@,并且如果本來的意圖并不是堆棧錯(cuò) 誤,通過可以在數(shù)據(jù)堆?;蚍祷囟褩I弦园?、四或兩個(gè)單元重復(fù)的一組參數(shù) 而循環(huán)的算法能夠從堆棧中被重復(fù)地讀取。
盡管在實(shí)施例中針對(duì)雙堆棧18位處理器的數(shù)據(jù)堆棧和返回堆棧描述了
目前的發(fā)明,但是其它位數(shù)的處理器也可以與本發(fā)明一起使用。
針對(duì)單一的雙堆棧處理器描述了以上所述的循環(huán)寄存器陣列。然而,以
上所述的循環(huán)寄存器陣列也可以在若干個(gè)整裝計(jì)算機(jī)的陣列中使用,例如在 圖5所示的計(jì)算機(jī)陣列IO中使用。計(jì)算機(jī)陣列IO具有多個(gè)(在示出的例子 中是24個(gè))計(jì)算機(jī)12 (在陣列的例子中有時(shí)也稱作"核"或"節(jié)點(diǎn)")。在示出的例子中,所有的計(jì)算機(jī)12都位于單個(gè)電路小片14上。根據(jù)本發(fā)明
的一個(gè)實(shí)施例,各計(jì)算機(jī)12通常是獨(dú)立運(yùn)行的計(jì)算機(jī)。計(jì)算機(jī)12由多條相 互連接的數(shù)據(jù)總線16相互連接。在該例子中,數(shù)據(jù)總線16是雙向異步高速 并行數(shù)據(jù)總線,盡管出于該目的而采用其它的互連手段也在本發(fā)明的范圍之內(nèi)。
計(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間 的通信。如圖5的視圖所見,諸如計(jì)算機(jī)12e這樣的內(nèi)部計(jì)算機(jī)12具有四 個(gè)其他的可以通過總線16與之直接通信的計(jì)算機(jī)12。在以下討論中,所討 論的原理將應(yīng)用于除了只與三個(gè)其他計(jì)算機(jī)12直接通信的位于陣列10邊界 的計(jì)算機(jī)12,以及只與兩個(gè)其他計(jì)算機(jī)12直接通信的拐角計(jì)算機(jī)12之外 的所有計(jì)算機(jī)12。
圖6為圖5中的一部分的更詳細(xì)視圖,只示出一些計(jì)算機(jī)12,特別是 具體而言,包括計(jì)算機(jī)12a-12e。圖6的視圖還揭示每條數(shù)據(jù)總線16都具有 讀線18、寫線20和多條(在本例子中為18)數(shù)據(jù)線22。數(shù)據(jù)線22能夠通 常同時(shí)并行傳輸一個(gè)18位指令字的所有位。
根據(jù)本創(chuàng)造性方法,諸如計(jì)算機(jī)12e之類的計(jì)算機(jī)12可以將它的一條、 兩條、三條或全部四條讀線18i殳置為高,乂人而準(zhǔn)備/人相應(yīng)的一個(gè)、兩個(gè)、 三個(gè)或全部四個(gè)相鄰計(jì)算機(jī)12中接收數(shù)據(jù)。相似地,計(jì)算機(jī)12也可以將它 的一條、兩條、三條或全部四條寫線20設(shè)置為高。
當(dāng)相鄰計(jì)算機(jī)12a、 12b、 12c或12d中的一個(gè)將其自身與計(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ù)。如圖l所示,在本發(fā)明的這個(gè)實(shí)施例中,計(jì)算機(jī)12具有四個(gè)與相鄰計(jì)
算機(jī)12進(jìn)行通信的通信端口 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)。如果特定計(jì)算機(jī)12不在諸如計(jì)算機(jī)12e的例子的 陣列(圖5)內(nèi)部,那么至少出于上述目的,通信端口 38中的一個(gè)或多個(gè) 通信端口不會(huì)在那個(gè)特定計(jì)算機(jī)被使用。然而,那些毗鄰電路小片邊界的通
信端口 38可以具有附加的電路,這些電路或者被設(shè)計(jì)在這種計(jì)算機(jī)12內(nèi)部, 或者設(shè)計(jì)在計(jì)算機(jī)12的外部但是與該計(jì)算機(jī)相關(guān)聯(lián),從而使這類通信端口 38充當(dāng)外部1/0端口 39 (圖5)。這類外部1/0端口 39的例子包括但不限 于USB (通用串行總線)端口 、 RS232串行總線端口 、并行通信端口 、模數(shù) 和/或數(shù)模轉(zhuǎn)換端口和很多其它可能的變體。在圖5中,描繪了 "邊界"計(jì) 算機(jī)12f與相關(guān)聯(lián)的接口電路80,其中接口電路80用于通過外部I/O端口 39與外部設(shè)備82進(jìn)行通信。
在不改變本發(fā)明的值或范圍的情況下,可以對(duì)本發(fā)明進(jìn)行各種修改。例 如,盡管這里使用特定的計(jì)算機(jī)12來描述本發(fā)明,但是諸多或所有的創(chuàng)造 性方面易于適應(yīng)其它計(jì)算機(jī)設(shè)計(jì)、其它計(jì)算機(jī)陣列等。
盡管在這里已經(jīng)針對(duì)單個(gè)電路小片14上的陣列10中的計(jì)算機(jī)12之間 的通信主要描述了本發(fā)明,但相同的原理和方法可用于或^皮修改為用于完成 其它器件間通信,例如計(jì)算機(jī)12與其專用存儲(chǔ)器之間的通信,或陣列10中 的計(jì)算機(jī)12與外部器件之間的通信
類似地,盡管這里針對(duì)雙堆棧處理器公開了本發(fā)明的方面,但是也可以 通過單個(gè)堆棧處理器或包括多于兩個(gè)堆棧的處理器來實(shí)施本發(fā)明。
上面的所有僅是本發(fā)明的可用實(shí)施例的一些例子。本領(lǐng)域技術(shù)人員將容 易看出可以在不脫離本發(fā)明的精神或范圍的情況下,進(jìn)行大量其它的修改和 變動(dòng)。相應(yīng)地,這里的公開內(nèi)容目的不意在限定,且所附的權(quán)利要求應(yīng)被解 釋為包含本發(fā)明的全部范圍。
權(quán)利要求
1、一種堆棧計(jì)算機(jī),包括用于存儲(chǔ)數(shù)據(jù)和代碼的存儲(chǔ)器;用于處理所述數(shù)據(jù)和代碼的處理器;和可被所述處理器用作堆棧的多個(gè)硬件寄存器。
2、 根據(jù)權(quán)利要求1所述的計(jì)算機(jī),其中所述多個(gè)寄存器中的寄存器根據(jù)預(yù)定重復(fù)序列以正序或逆序被訪問。
3、 根據(jù)權(quán)利要求2所述的計(jì)算機(jī),其中當(dāng)所述寄存器以所述正序被訪問時(shí),所述序列中所述寄存器中的首寄存 器在所述序列中所述寄存器中的末寄存器之后被訪問;而當(dāng)所述寄存器以所被訪問。
4、 根據(jù)權(quán)利要求1所述的計(jì)算機(jī),進(jìn)一步包括雙向移位寄存器,包括多個(gè)單一位寄存器,每個(gè)單一位寄存器的輸出被 連接起來,以至少部分控制對(duì)所述寄存器中相關(guān)聯(lián)的寄存器的訪問,從而使 得所述雙向移位寄存器通過沿所述單一位寄存器移位,作為堆棧指針來工作。
5、 根據(jù)權(quán)利要求1所述的計(jì)算機(jī),其中所述單一位寄存器中的末單一位寄存器連接至所述單一位寄存器中的 首單一位寄存器,使得所述單一位寄存器為沿所述單一位寄存器移位的位提 供循環(huán)路徑。
6、 一種堆棧計(jì)算機(jī)處理器,包括 數(shù)據(jù)堆棧,包括至少一個(gè)數(shù)據(jù)寄存器;和 返回堆棧,包括至少一個(gè)返回寄存器;其中 所述數(shù)據(jù)堆棧和所述返回堆棧中的每一個(gè)均能夠容納18位指令字。
7、 根據(jù)權(quán)利要求6所述的處理器,其中所述至少一個(gè)數(shù)據(jù)寄存器包括堆棧頂部(T)寄存器。
8、 根據(jù)權(quán)利要求7所述的處理器,其中所述至少一個(gè)數(shù)據(jù)寄存器進(jìn)一 步包括堆棧第二位置(S)寄存器。
9、 根據(jù)權(quán)利要求6所述的處理器,其中所述至少一個(gè)返回堆棧包括頂 部寄存器(R)。
10、 根據(jù)權(quán)利要求6所述的處理器,其中所述數(shù)據(jù)堆棧進(jìn)一步包括硬件 寄存器陣列。
11、 根據(jù)權(quán)利要求6所述的處理器,其中所述返回堆棧進(jìn)一步包括硬件 寄存器陣列。
12、 根據(jù)權(quán)利要求10所述的處理器,其中所述陣列以循環(huán)模式工作。
13、 根據(jù)權(quán)利要求11所述的處理器,其中所述陣列以循環(huán)模式工作。
14、 一種操縱計(jì)算機(jī)處理器的方法,包括將多個(gè)指令字輸入至所述處理器的對(duì)應(yīng)多個(gè)指令單元;和 處理所述多個(gè)指令字,其中 指令不會(huì)由于所述輸入和所述處理而上溢或下溢。
15、 根據(jù)權(quán)利要求14所述的方法,其中所述輸入包括填充所有可用的 指令單元。
16、 根據(jù)權(quán)利要求15所述的方法,其中所述輸入進(jìn)一步包括在所有可 用的指令單元已被填充之后輸入附加指令字。
17、 根據(jù)權(quán)利要求16所述的方法,其中所述輸入和所述處理在不使用 由軟件實(shí)現(xiàn)的指針的情況下發(fā)生。
18、 根據(jù)權(quán)利要求14所述的方法,其中所述處理包括在不重新載入所 述多個(gè)指令字的情況下重復(fù)地再使用所述多個(gè)指令字。
19、 一種計(jì)算機(jī)處理器,包括 寄存器陣列;和 移位寄存器,其中所述移位寄存器包括通過電線互連的多個(gè)一位移位寄存器,并且其中所述多個(gè)一位移位寄存器的數(shù)目與所述寄存器陣列中的寄存器的數(shù)目相等。
20、 根據(jù)權(quán)利要求19所述的處理器,進(jìn)一步包括位于所述寄存器陣列 之上的至少一個(gè)寄存器。
21、 根據(jù)權(quán)利要求19所述的處理器,其中所述寄存器陣列進(jìn)一步包括 使所述陣列互連的讀總線和寫總線。
22、 根據(jù)權(quán)利要求19所述的處理器,其中所述寄存器陣列以循環(huán)模式 工作。
23、 根據(jù)權(quán)利要求20所述的處理器,其中所述寄存器陣列是堆疊的。
24、 根據(jù)權(quán)利要求23所述的處理器,其中所述一位移位寄存器以交替 模式通過所述電線互連。
25、 根據(jù)權(quán)利要求19所述的處理器,其中所述處理器是數(shù)據(jù)堆棧。
26、 根據(jù)權(quán)利要求25所述的處理器,其中所述寄存器陣列包括八個(gè)數(shù) 據(jù)寄存器。
27、 根據(jù)權(quán)利要求25所述的處理器,其中所述寄存器陣列包括四的倍 數(shù)個(gè)數(shù)據(jù)寄存器。
28、 根據(jù)權(quán)利要求14所述的處理器,其中所述處理器是返回堆棧。
29、 根據(jù)權(quán)利要求28所述的處理器,其中所述寄存器陣列包括八個(gè)返 回寄存器。
30、 根據(jù)權(quán)利要求28所述的處理器,其中所述寄存器陣列包括四的倍 數(shù)個(gè)返回寄存器。
31、 一種計(jì)算機(jī)處理器,包括 寄存器陣列;和硬連線至所述寄存器陣列的雙向移位寄存器,進(jìn)一步包括通過電線互連 的多個(gè)一位移位寄存器,并且其中所述多個(gè)一位移位寄存器的數(shù)目與所述寄 存器陣列中的寄存器的數(shù)目相等。
32、 根據(jù)權(quán)利要求31所述的處理器,進(jìn)一步包括位于所述寄存器陣列 之上的至少一個(gè)寄存器。
33、 根據(jù)權(quán)利要求31所述的處理器,所述移位寄存器作為指向所述寄 存器陣列的硬件指針來工作。
34、 根據(jù)權(quán)利要求31所述的處理器,進(jìn)一步包括讀總線和寫總線。
35、 根據(jù)權(quán)利要求31所述的處理器,所述多個(gè)一位移位寄存器中的各 一位移位寄存器對(duì)應(yīng)于所述寄存器陣列中相關(guān)聯(lián)的寄存器。
36、 根據(jù)權(quán)利要求35所述的處理器,其中在一段時(shí)間所述多個(gè)一位移 位寄存器中僅有一個(gè)一位移位寄存器被激活。
37、 根據(jù)權(quán)利要求31所述的處理器,其中所述寄存器陣列進(jìn)一步包括 使所述陣列互連的讀總線和寫總線。
38、 根據(jù)權(quán)利要求31所述的處理器,其中所述多個(gè)一位移位寄存器通 過電線互連,從而最小化驅(qū)動(dòng)器的尺寸和緩沖。
39、 根據(jù)權(quán)利要求31所述的處理器,其中所述電線全部在三個(gè)相鄰的 一位移位寄存器的最大值之間延長(zhǎng)。
40、 根據(jù)權(quán)利要求39所述的處理器,其中所述寄存器陣列包括八個(gè)寄 存器。
41、 根據(jù)權(quán)利要求31所述的處理器,其中所述處理器是數(shù)據(jù)堆棧。
42、 根據(jù)權(quán)利要求31所述的處理器,其中所述處理器是返回堆棧。
全文摘要
一種堆棧處理器包括數(shù)據(jù)堆棧,所述數(shù)據(jù)堆棧具有T寄存器、S寄存器和以循環(huán)重復(fù)模式工作的八個(gè)硬連線底部寄存器。所述堆棧處理器還包括返回堆棧,所述返回堆棧包含R寄存器和以循環(huán)重復(fù)模式工作的八個(gè)硬連線底部寄存器。這里描述的循環(huán)寄存器陣列消除了上溢和下溢的堆棧狀況。
文檔編號(hào)G06F9/40GK101443731SQ200780017106
公開日2009年5月27日 申請(qǐng)日期2007年5月25日 優(yōu)先權(quán)日2006年5月26日
發(fā)明者杰佛瑞·阿特胡爾·??怂? 查理斯·H·莫爾, 約翰·W·瑞博 申請(qǐng)人:Vns組合有限責(zé)任公司