(57)【要約】  スタックプロセッサは、Ｔレジスタ及びＳレジスタを備えるデータスタックと、円環パターン状で反復して機能する８つの固定配線されたボトム側レジスタとを含む。該スタックプロセッサは、また、Ｒレジスタを含むリターンスタックと、円環パターン状で反復して機能する８つの固定配線されたボトム側レジスタとを含む。ここで説明される円環状レジスタ配列はオーバーフロー及びアンダーフローのスタック状態を回避する。
2009538488.tif 000002
【特許請求の範囲】
【請求項１】
スタックコンピュータであって、
データ及びコードを記憶するメモリと、
前記データ及び前記コードを処理するプロセッサと、
前記プロセッサによってスタックとして使用可能な複数の固定配線のレジスタと
を備えることを特徴とするコンピュータ。
【請求項２】
前記複数のレジスタは、所定の反復シーケンスに従って正順又は逆順でアクセスされることを特徴とする、請求項１に記載のコンピュータ。
【請求項３】
前記複数のレジスタが前記正順にてアクセスされる場合には、前記レジスタのうちの最終のレジスタが前記シーケンスにおいてアクセスされた後に、前記レジスタのうちの最初のレジスタが前記シーケンスにおいてアクセスされ、
前記複数のレジスタが前記逆順にてアクセスされる場合には、前記レジスタのうちの最初のレジスタがアクセスされた後に、前記レジスタのうちの最終のレジスタがアクセスされることを特徴とする、請求項２に記載のコンピュータ。
【請求項４】
複数の単一ビットレジスタを含む双方向シフトレジスタをさらに含み、各単一ビットレジスタの出力は、前記レジスタのうちの関連する１つに至る少なくとも部分的な制御アクセスに接続され、これによって前記双方向シフトレジスタは、前記単一ビットレジスタに沿ってビットをシフトするスタックポインタとして機能することを特徴とする、請求項１に記載のコンピュータ。
【請求項５】
前記複数の単一ビットレジスタの最終のものが前記複数の単一ビットレジスタの最初のものに接続されていることによって、前記複数の単一ビットレジスタは、それら自体に沿ってシフトされるビットに対して円環経路を提供することを特徴とする、請求項１に記載のコンピュータ。
【請求項６】
スタックコンピュータのプロセッサであって、
少なくとも１つのデータレジスタを有するデータスタックと、
少なくとも１つのリターンレジスタを有するリターンスタックと、
を備え、前記データスタック及び前記リターンスタックは１８ビット命令ワードを収容し得ることを特徴とするプロセッサ。
【請求項７】
前記少なくとも１つのデータレジスタは、トップ側スタック（Ｔ）レジスタを有することを特徴とする、請求項６に記載のプロセッサ。
【請求項８】
前記少なくとも１つのデータレジスタは、スタック（Ｓ）レジスタに第２のポジションを有することを特徴とする、請求項７に記載のプロセッサ。
【請求項９】
前記少なくとも１つのリターンレジスタは、トップ側レジスタ（Ｒ）を有することを特徴とする、請求項６に記載のプロセッサ。
【請求項１０】
前記データスタックは、ハードウェアレジスタ配列をさらに有することを特徴とする、請求項６に記載のプロセッサ。
【請求項１１】
前記リターンスタックは、ハードウェアレジスタ配列をさらに有することを特徴とする、請求項６に記載のプロセッサ。
【請求項１２】
前記配列は円環パターン状に機能することを特徴とする、請求項１０に記載のプロセッサ。
【請求項１３】
前記配列は円環パターン状に機能することを特徴とする、請求項１１に記載のプロセッサ。
【請求項１４】
コンピュータプロセッサを動作させる方法であって、
複数の命令ワードを前記プロセッサ内の対応する複数命令セルに入力する入力ステップと、
前記複数の命令ワードを処理する処理ステップとを含み、
前記入力ステップ及び処理ステップの結果として、命令のオーバーフロー又はアンダーフローがないことを特徴とする方法。
【請求項１５】
前記入力ステップは、全ての使用可能な命令セルを充たすことを特徴とする、請求項１４に記載の方法。
【請求項１６】
前記入力ステップは、全ての使用可能な命令セルが充たされた後に、付加的命令をさらに入力することを特徴とする、請求項１５に記載の方法。
【請求項１７】
前記入力ステップ及び前記処理ステップは、ソフトウェア実現されたポインタを用いることなく、起きることを特徴とする、請求項１６に記載の方法。
【請求項１８】
前記処理ステップは、前記複数の命令ワードをリロードすることなく、前記複数の命令ワードを反復して再使用することを特徴とする、請求項１４に記載の方法。
【請求項１９】
コンピュータプロセッサであって、
レジスタ配列と、
シフトレジスタと、
を備え、前記シフトレジスタは、電気配線によって相互接続されている複数の１ビットシフトレジスタを有し、前記複数の１ビットシフトレジスタの数は、前記レジスタ配列におけるレジスタの数に等しいことを特徴とするプロセッサ。
【請求項２０】
前記レジスタ配列の上に配置された少なくとも１つのレジスタをさらに備えることを特徴とする、請求項１９に記載のプロセッサ。
【請求項２１】
前記レジスタ配列は、該配列を相互接続するリードバス及びライトバスを有することを特徴とする、請求項１９に記載のプロセッサ。
【請求項２２】
前記レジスタ配列は、円環パターン状に機能することを特徴とする、請求項１９に記載のプロセッサ。
【請求項２３】
前記レジスタ配列はスタック化されていることを特徴とする、請求項２０に記載のプロセッサ。
【請求項２４】
前記１ビットシフトレジスタは、前記電気配線によって１つおきパターン状に相互接続されていることを特徴とする、請求項２３に記載のプロセッサ。
【請求項２５】
前記プロセッサはデータスタックであることを特徴とする、請求項１９に記載のプロセッサ。
【請求項２６】
前記レジスタ配列は、８つのデータレジスタを有することを特徴とする、請求項２５に記載のプロセッサ。
【請求項２７】
前記レジスタ配列は、４の倍数個のデータレジスタを有することを特徴とする、請求項２５に記載のプロセッサ。
【請求項２８】
前記プロセッサはリターンスタックであることを特徴とする、請求項１４に記載のプロセッサ。
【請求項２９】
前記レジスタ配列は８つのリターンレジスタを有することを特徴とする、請求項２８に記載のプロセッサ。
【請求項３０】
前記レジスタ配列は、４の倍数個のリターンレジスタを有することを特徴とする、請求項２８に記載のプロセッサ。
【請求項３１】
コンピュータプロセッサであって、
レジスタ配列と、
前記レジスタ配列に固定配線された双方向シフトレジスタと、
を含み、
電気配線によって相互接続された複数の１ビットシフトレジスタをさらに含み、前記複数の１ビットシフトレジスタの数は、前記レジスタ配列におけるレジスタの数に等しいことを特徴とするプロセッサ。
【請求項３２】
前記レジスタ配列の上に配置された少なくとも１つのレジスタをさらに備えることを特徴とする、請求項３１に記載のプロセッサ。
【請求項３３】
前記シフトレジスタは、前記レジスタ配列に対してハードウェアポインタとして機能することを特徴とする、請求項３１に記載のプロセッサ。
【請求項３４】
リードバス及びライトバスをさらに含むことを特徴とする、請求項３１に記載のプロセッサ。
【請求項３５】
前記複数の１ビットシフトレジスタの各々は、前記レジスタ配列のうちの専用のレジスタに対応することを特徴とする、請求項３１に記載のプロセッサ。
【請求項３６】
前記複数の１ビットシフトレジスタのうちの１つのシフトレジスタのみが１度に活性化されることを特徴とする、請求項３５に記載のプロセッサ。
【請求項３７】
前記レジスタ配列は、該配列を相互接続するリードバス及びライトバスを有することを特徴とする、請求項３１に記載のプロセッサ。
【請求項３８】
前記複数の１ビットシフトレジスタは、電気配線で相互接続されることによってドライバのサイズ及びバッファリングが最小化されていることを特徴とする、請求項３１に記載のプロセッサ。
【請求項３９】
前記電気配線の全てが近接する３つの１ビットシフトレジスタ間に伸張していることを特徴とする、請求項３１に記載のプロセッサ。
【請求項４０】
前記レジスタ配列は８つのレジスタを有することを特徴とする、請求項３９に記載のプロセッサ。
【請求項４１】
前記プロセッサはデータスタックを有することを特徴とする、請求項３１に記載のプロセッサ。
【請求項４２】
前記プロセッサはリターンスタックを有することを特徴とする、請求項３１に記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ及びコンピュータプロセッサに関し、特に、スタックコンピュータのプロセッサ内のスタックのさらなる効率利用のための方法及び手段に関する。
【背景技術】
【０００２】
スタックマシンは、複合命令セットコンピュータ（ＣＩＳＣ）よりも低いプロセッサ複雑性を与えると共に、縮小命令セットコンピュータ（ＲＩＳＣ）又はＣＩＳＣマシンの何れよりも低い全体システム複雑性を与える。従って、良好な性能のために複雑化されたコンパイラ又はキャシュ制御ハードウェアを要求することがない。また、競争力ある未加工の性能を達成すると共に、ほとんどのプログラミング環境において所与の価格で優れた性能を達成する。それらの最初に成功した応用分野は、リアルタイム埋込型制御環境においてであり、広範な利点によって他のシステムデザインアプローチを凌駕している。以前ではスタックはメモリ内にほとんど保持されていたが、新しいスタックマシンでは、スタック毎に別々のメモリチップ又はオンチップメモリのエリアにも保持されている。これらのスタックマシンは、きわめて高速のサブルーチンコール能力及び割り込みハンドリング及びタスク切替における優れた性能を提供する。
【０００３】
しかし、オーバーフロー及びアンダーフローのスタックのハードウェア検出は何ら存在しなかった。スタックのオーバーフローは利用可能なレジスタに充分な数が無くスタック上へのプッシュ（push）が継続された場合に発生し、ボトム側レジスタ群が上書きされてしまうことになる。スタックのアンダーフローは全てのレジスタが空にされた場合に発生し、スタックの継続したポップ（pop）は、意図に沿わない又は不正確な結果をもたらす。他のスタックプロセッサでは、スタックポインタ及びメモリ管理を使用することよって、スタックポインタがスタックに割り当てられたメモリ範囲から逸脱したときに、エラー状態のフラグが立てられるようになっている。ザール（Zahir）氏及び他による特許文献１はレジスタスタックエンジンを開示し、これはメモリにレジスタスタックの充分なレジスタを提供し、スタックオーバーフロー事象においてより利用可能なレジスタを提供する。また、レジスタスタックエンジンは、スタックアンダーフローの場合に、そのエンジンが適当な数のレジスタを回復できる迄マイクロプロセッサを遅延させる。
【０００４】
ストーリ（Story）氏による特許文献２は、動作結果と閾値とを比較する方法を開示している。しかし、このアプローチは、閾値に丸められた場合の結果（これはオーバーフロー例外を生じる）と、閾値に丁度等しい場合の結果とを区別しない。ストーリ氏によって開示される他の方法は、ハードウェアフラグを読み書きすることでオーバーフロー又はアンダーフローの状態を識別する。
【０００５】
【特許文献１】米国特許第６，３６７，００５号明細書
【特許文献２】米国特許第６，２１９，６８５号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、命令は順番に実行されなければならず、そしてレジスタのリード／ライトに引き続く命令はリード／ライト動作が完了される迄、次に進むことができなくなり、遅延動作を生ぜしめる。
【０００７】
メモリ内のスタックでは、オーバーフロー又はアンダーフローがスタック項目を上書きするか、又はスタック部分であるとは意図されないスタック項目を使用してしまうこともあり得る。スタック内のオーバーフロー及びアンダーフローを低減又は除去する改良された方法への要請がある。
【０００８】
本発明の目的は、デュアルスタックプロセッサのデータスタック及びリターンスタックがスタックポインタを用いてメモリ内でアクセスされる配列ではなく、代わりに別々の専用シフトレジスタによって固定配線アクセスされる装置及び方法を提供することである。
【０００９】
本発明の他の目的は、データ又はリターンスタックのオーバーフロー及びアンダーフローを低減する若しくは除去することである。
【００１０】
本発明の他の目的は、双方向スタックレジスタの単一ビット（１ビット）スタックレジスタ間の電気的接続長を最小化することであり、これにより要求されるドライバサイズを最小化にすると共にバッファすることを最小化することである。
【課題を解決するための手段】
【００１１】
これら及び他の目的は本明細書に記載されている発明によって達成され、本発明においては、従来のスタックは、円環（循環的な）パターン状で反復して機能するレジスタ配列に代替される。この反復される円環パターンは、接続される双方向シフトレジスタの利用によって達成され、双方向シフトレジスタは１つおきパターン状に電気的に相互接続される複数の１ビットシフトレジスタを含む。この構成は、スタック外からリードされるのを防ぐと共に、意図されない空レジスタ値をリードするのを防止する。
【００１２】
上記したデュアルスタックプロセッサは、独立機能するプロセッサとして機能し得るし、又は幾つか他の同じ又は異なるプロセッサと共に相互接続化コンピュータ配列にて用いられ得る。
【発明を実施するための最良の形態】
【００１３】
本発明が図を参照して説明されるが、図において同じ符号は同じ要素を表すか又は類似した要素を表す。本発明が本発明の目的を達成する態様に関して説明される一方、本願にて請求される発明の思想及び範囲から逸脱することなく、本明細書における教示によって本発明が多様な形態にて実現され得ることは当業者によって認められる。
【００１４】
本明細書において説明及び／又は図面に示されている本発明の実施例及び変形例は、例示のものであって本発明の範囲を制限するものでない。特に述べない限り、本発明の個々の態様及び要素は、本発明が多くの変形例に適応可能であると意図されることから、請求される発明の思想及び範囲内にある限り、省略されるか又は様々に改変され得る。
【００１５】
図１は、本発明において用いられているデュアルスタックコンピュータ１２の概略レイアウトを示しているブロック図である。コンピュータ１２は、通常、自身のＲＡＭ２４及びＲＯＭ２６を有する自己内蔵型のコンピュータである。
【００１６】
コンピュータ１２の他の基本的なコンポーネントはリターンスタック２８であり、これは、Ｒレジスタ２９、命令エリア３０、演算ロジックユニット（ＡＬＵ又はプロセッサ）３２と、データスタック３４と、命令をデコードするためのデコードロジック部３６とを含む。コンピュータ１２は、データスタック３４及び別のリターンスタック２８を有するデュアルスタックコンピュータである。通常、当業者は本実施例のコンピュータ１２の如きスタックベースのコンピュータの動作に精通している。
【００１７】
ここで記載される実施例において、命令エリア３０は、この例ではＡレジスタ４０ａ、Ｂレジスタ４０ｂ及びＰレジスタ４０ｃを含む幾つかのレジスタ４０を含む。この実施例では、Ａレジスタ４０ａはフル１８ビットレジスタであり、一方、Ｂレジスタ４０ｂ及びＰレジスタ４０ｃは９ビットレジスタである。
【００１８】
本発明はスタックコンピュータのプロセッサを開示し、そこではデータ及びリターンスタックは、周期的な反復すなわち円環パターン状にて機能するレジスタ配列を含む。データスタック及びリターンスタックは、従来技術の多くのコンピュータにおいてスタックポインタによってアクセスされるメモリ配列ではない。
【００１９】
図２は、本発明による１８ビットデータスタックの実施例を開示している。データスタック内のトップ側の２つのレジスタは、１８ビットＴレジスタ及び１８ビットＳレジスタである。データスタックの残りは、８つの付加的１８ビットハードウェアレジスタを含み、この例ではＳ２〜Ｓ９と参照符号が付されている。円環状のレジスタＳ２〜Ｓ９は、Ｔ及びＳレジスタが無い状態で動作することができる。しかし、レジスタＳ２〜Ｓ９と組み合わさった少なくともＳレジスタの存在は、より速いアクセス回路とタイミング上の最適条件を提供し、従って円環状のレジスタ配列のより高動作速度を提供する。加えて、Ｓレジスタは、アドレス可能なレジスタＳ２〜Ｓ９とプロセッサシステムの残りの部分との間でバッファとして作用する。これは、レジスタＳ２〜Ｓ９とプロセッサシステムの残りの部分との間でタイミングの独立性を提供する。
【００２０】
この実施例は、また、複数の１ビットシフトレジスタを含む双方向シフトレジスタを含む。１ビットシフトレジスタの数はＳレジスタの下に配置されたボトム側スタックレジスタＳ２〜Ｓ９の数に等しい。各１ビットシフトレジスタは、図２に示された対応するスタックレジスタＳ２〜Ｓ９に接続されている。１ビットシフトレジスタが１つおきパターン状に電気的に相互接続され、これによってスタックレジスタＳ２〜Ｓ９は、図２に示された如きＳ２→Ｓ４→Ｓ６→Ｓ８→Ｓ９→Ｓ７→Ｓ５→Ｓ３→Ｓ２によって与えられるシーケンシャルな円環状の相互接続パターンにて機能する。ボトム側スタックレジスタのこのシーケンシャルな選択が円環パターン状で反復して動作する。１ビットシフトレジスタの相互接続用配線は、隣接した３つ以上のシフトレジスタを越えて広がるとことはなく、ボトム側シフトレジスタをトップ側シフトレジスタに接続するのに長い配線の必要性を避けている。これらのより短い配線は、より小さいドライバを要求しバッファリングも最小化される。与えられる実施例は、円環状のレジスタ配列のための８つの付加的スタックレジスタを使用する。しかし、４の倍数単位で使用されるボトム側レジスタの他の組合せも用いられ得る。
【００２１】
図２は、また、Ｔレジスタ及びＳレジスタと同様に、レジスタＳ２〜Ｓ９を相互接続するリードバス及びライトバスを開示している。双方向シフトレジスタの各１ビットシフトレジスタは、Ｓ２〜Ｓ９配列内で対応するボトム側スタックレジスタに接続され、そこでは、シフトレジスタの１ビットのみが１つの時点でオンとなる一方、他の全てのビットはゼロとリードされる。電源投入時、シフトレジスタは初期化され、正確に１つのビットが１にセットされ且つ他のビットがゼロにセットされなければならない。所与の実施例において、シフトレジスタのトップ側ビットは、リードについてはレジスタＳ２を指示し、ライトについては相互接続された隣接したレジスタＳ４を図２における破線で示されるように指示する。１ビットシフトレジスタの残りのビットはレジスタＳ２〜Ｓ４のうちの対応するものに同様に接続されるが、不必要に図面を不明瞭にしないために他の配線は示されていない。
【００２２】
セル深度１０のプッシュ下降スタックがレジスタＴ、Ｓ及びＳ２〜Ｓ９によって形成される。８つのボトム側レジスタが円環状のバッファを成すことから、そのハードウェアはオーバーフローするか又はアンダーフローするよりは、むしろ折り返し（wrap）するものである。１０項目以上をプットし、次いでそれらを全て戻すことを期待してはいけないが、そのスタックのボトム側から得られた最後の８つの項目のコピーを永遠に取り続けることができる。エラーではないという意味でアンダーフローは何ら存在しない。プログラムがスタックから値をとり続ける場合にはボトム側の８つに何度もリードが行われることから、８つ（又は４又は２又は１）のワードのパターンを複製するのが最も速い方法である。
【００２３】
同様に、スタックポインタはスタックが他に進むことを可能としているという意味で、何らスタックオーバーフローは存在しない。スタックは有限であって１０項目以上がそこにプットされる場合、最後の１０だけが残り、最初の１０の後に記憶されたものはレジスタＳ２〜Ｓ９のうちの１つを上書きしている。スタックをプリセット位置に「初期化する」する必要はなく、ただスタックのどこからでもスタックの使用を開始することでスタックが空であると宣言すればよい。
【００２４】
図３は、データ又はリターンスタック内の各レジスタの拡大図である。各１８ビットレジスタは０〜１７と番号が付与された１８個のラッチを含む。１組で１８個の入力パスゲート（０〜１７と番号付け）があって、それら各々は１８個のラッチのうちの対応する１つをライトバスに選択的に接続する。１組で１８個の出力パスゲート（０〜１７と番号付け）があって、それら各々は１８個のラッチのうちの対応する１つをリードバスに選択的に接続する。入力パスゲートは，入力制御ライン（図２のライトライン）に接続された反転アンプを介して入力制御ライン上でアサートされるライト制御信号によって制御され、出力パスゲートは、出力制御線（図２のリードライン）に接続された反転アンプを介して出力制御ライン上でアサートされるリード制御信号によって制御される。
【００２５】
図４は、本発明の１８ビットのリターンスタックを開示している。リターンスタックのトップ側レジスタは、１８ビットのＲレジスタであり、８つの付加的１８ビットハードウェアレジスタがＲレジスタの下に配置され、ここではＲ１〜Ｒ８と番号付けされている。ボトム側の８つのレジスタＲ１〜Ｒ８は、上記されたデータスタックと同様に、反復する円環状配列として１つおきパターン状に機能する。
【００２６】
円環状のレジスタ配列Ｒ１〜Ｒ８はＲレジスタが無い状態で動作することができる。しかし、レジスタＲ１〜Ｒ８と組み合わさったＲレジスタの存在はより高速なアクセス回路とタイミング上の最適条件を提供し、よって円環状レジスタ配列のより高速動作を提供する。加えて、Ｒレジスタは、アドレス可能レジスタＲ１〜Ｒ８とプロセッサシステムの残りの部分との間のバッファとして働き、アドレス可能レジスタＲ１〜Ｒ８とプロセッサシステムの残りの部分との間のタイミング上の独立性を提供する。
【００２７】
この実施例は、また、複数の１ビットシフトレジスタを含む双方向シフトレジスタを含む。１ビットシフトレジスタの数は、Ｒレジスタの下に配置される付加的なボトム側レジスタＲ１〜Ｒ８の数に等しい。各１ビットシフトレジスタは、図４で示されるボトム側スタックレジスタＲ１〜Ｒ８のうちの対応するレジスタに接続されている。双方向シフトレジスタの１ビットシフトレジスタは、１つおきパターン状に電気的に相互接続されていることで、スタックのレジスタＲ１〜Ｒ８は、図４に示される如きＲ１→Ｒ３→Ｒ５→Ｒ７→Ｒ８→Ｒ６→Ｒ４→Ｒ２→Ｒ１によって与えられるシーケンシャルな円環状の相互接続パターンにて機能する。このシーケンシャルなレジスタ選択は円環パターン状で反復して動作する。シフトレジスタの相互接続配線は、隣接した３つ以上の１ビットシフトレジスタを越えて広がるとことはなく、ボトム側１ビットシフトレジスタをトップ側１ビットシフトレジスタに接続するのに長い配線の必要性を避けている。これらのより短い配線は、より小さいドライバを要求し、バッファリングも最小化される。所与の実施例において、８つの付加的なリターンレジスタが開示されたが、４の倍数個の他のボトム側レジスタの組合せが円環状のレジスタ配列において使用され得る。リードバス及びライトバスはレジスタＲ１〜Ｒ８を相互接続する。シフトレジスタの各１ビットレジスタは、Ｒ１〜Ｒ８配列内で対応するスタックレジスタに接続されている。シフトレジスタのうちの１ビットだけが１時点でオン（１としてリード）する一方、全ての他の全てのビットはゼロとして読まれる。電源投入時、シフトレジスタは正確に１ビットが１を含み、他の全てのビットがゼロを含むように初期化されなければならない。所与の実施例において、シフトレジスタのトップ側ビットがレジスタＲ１を指示し、すなわちＲ１をリードすることを指示し且つ相互接続された隣接レジスタＲ３にライトすることを指示している。
【００２８】
本発明において、スタックオーバーフロー又はアンダーフロー状態に対するハードウェア検知は存在しない。通常、従来技術のプロセッサはスタックポインタ及びメモリ管理等を使用し、これによってスタックポインタがスタックに割り当てられたメモリ領域外に行ったときに、エラー状態にフラグを立てる。スタックがメモリ内に置かれて管理される場合では、オーバーフロー又はアンダーフローはスタック項目を上書きするか、又は意図される以外を使用する。しかし、本発明のボトム側レジスタは、円環状配列にて機能するので、スタックはスタックエリアからオーバーフロー又はアンダーフローすることはあり得ない。代わりに、円環状配列は単にレジスタ配列まわりに折り返すだけである。スタックが有限の深度を有するので、スタックのトップ側へのプッシュはボトム側で上書がなされることを意味する。所与の実施例において、データスタックに対する１０項目以上のプッシュ動作、又はリターンスタックに対する９項目以上のプッシュ動作は、かかる動作が当該スタックのボトム側で項目が上書きされる結果をもたらすという知見を持ってなければならない。
【００２９】
スタック上の項目数を追跡し続けることはソフトウェアの責任であり、各スタックが保持することのできる以上の項目をプッシュしようとしてはならない。ハードウェアは、スタックのボトム側の項目上書きを検出しないし、エラーとしてフラグを立てることもしない。スタックのボトム側での円環状配列の利点をソフトウェアが幾つかの手法で得ることができる点が留意されるべきである。１つの実施例として、ソフトウェアはスタックが何時でも「空である」であると単に仮定することができる。古い項目がボトム側に向けてプッシュダウンされ、スタックが満ちるにつれてボトム側で消失されることから、古い項目をスタックからクリアする必要がなく、それ故プログラムは初期化をすることなくスタックが空であると仮定することができる。
【００３０】
用いられ得る他の利点は、再利用のためには項目をリロードしなければならないという制約が無く、レジスタ項目を再利用することである。これらのスタック内のボトム側８つの項目は、スタック折り返しの利点を得るループ状にてリード又はライトされ得る。２つのデータスタックリードの後、レジスタＴ及びＳは、下の８つのスタックレジスタの円環状配列からの２項目のコピーを有する。さらに８つ以上のリードの後、レジスタＴ及びＳは、スタック折り返しを用いて下から再びリードされた同一値でリロードされる。これら８つの項目がシーケンス上でスタック外に何回リードされ得るかについて何ら制限はなく、この場合、項目を複製しなければならない制約、又はそれらをスタックにライトし直さなければならない制約がない。データ又はリターンスタック上の８つ、４つ又は２つのセルにて反復され得る１組のパラメータにわたるサイクルのアルゴリズムは、ボトム側レジスタがまさに折り返し、そしてスタックエラーが意図されない場合に、それらを反復してスタックからリードすることができる。
【００３１】
本発明が、デュアルスタック１８−ビットプロセッサのデータスタック及びリターンスタックのための実施例において記載されていたが、他のビットサイズプロセッサが本発明によって用いられてもよい。
【００３２】
上記した円環状のレジスタ配列は、単一のデュアルスタックプロセッサに関して記載された。しかし、上記した円環状のレジスタ配列を含むスタックプロセッサにおける複数回の繰り返しは、図５に示されるコンピュータ配列１０の如き自己内蔵型コンピュータの配列において用いられ得る。コンピュータ配列１０は、複数（例示では２４個）のコンピュータ１２（配列の例では、しばしば「コア」又は「ノード」とも称される）を有する。示される実施例において、コンピュータ１２の全ては単一のダイ１４に配置される。本発明の１つの実施例によれば、コンピュータ１２の各々は通常独立して機能するコンピュータである。コンピュータ１２は、複数の相互接続データバス１６によって相互接続される。他の相互接続手段がその目的のために使用されてもよいことは本発明の範囲内であるが、この実施例においてデータバス１６は双方向、非同期及び高速パラレルデータバスである。
【００３３】
コンピュータ１２ｅは、配列１０のコンピュータ１２のうちの周辺上ではない１台の例である。すなわち、コンピュータ１２ｅは直角に隣接した４台のコンピュータ１２ａ、１２ｂ、１２ｃ及び１２ｄを備えている。コンピュータ１２ａ〜１２ｅのこのグループ化が、配列１０の複数のコンピュータ１２間の通信のより詳細な議論に関連して例として用いられる。図５から分かるように、コンピュータ１２ｅの如き内部のコンピュータは、バス１６を介して直接通信をなし得る４台の他のコンピュータ１２を備える。引き続く議論において、議論される原理はコンピュータ１２の全てに適用されるが、これは、配列１０の周辺上のコンピュータ１２は他の３台のみと直接通信下にあり、又は角のコンピュータ１２はコンピュータ１２の他の２台のみと直接通信下にあることで除外される。
【００３４】
図６は、図５の１部分をより詳細化し、コンピュータ１２の幾つかのみを示し、特に、コンピュータ１２ａ〜１２ｅが含まれている。図６の図も、データバス１６の各々が、リードライン１８と、ライトライン２０と、複数（この例では１８個）のデータライン２２とを備えることを明らかにしている。データライン２２は、１つの１８ビットの命令ワードの全てのビットを通常パラレルにて同時に転送する能力を有する。
【００３５】
本発明の方法によれば、コンピュータ１２ｅの如きコンピュータ１２は、そのリードラインの１つ、２つ又は３つ又は４つの全てをハイにセットできることによって、隣接するコンピュータ１２からデータを受け取る準備がなされる。同様に、コンピュータ１２はそのライトライン２０のうちの１つ、２つ、３つ又は４つの全てをハイにセットすることもできる。
【００３６】
隣接コンピュータ１２ａ、１２ｂ、１２ｃ又は１２ｄの１台がそれ自体とコンピュータ１２ｅとの間のライトライン２０をハイにセットしたとき、もしコンピュータ１２ｅが既に対応するリードライン１８をハイにセットしていた場合には、ワードが当該コンピュータ１２ａ、１２ｂ、１２ｃ又は１２ｄからコンピュータ１２ｅまで専用のデータライン２２上で転送される。次いで、送信側のコンピュータ１２はライトライン２０を開放し、受信側のコンピュータ（この例では１２ｅ）は、ライトライン２０及びリードライン１８をロウにプル操作（pull）する。後の動作は、送信側のコンピュータ１２にデータが受信されたことを確認通知する。
【００３７】
図１に示されるように、本発明のこの実施例において、コンピュータ１２は上記の如く隣接コンピュータ１２と通信する４つの通信ポート３８を有する。通信ポート３８は、オフステータスと、（コンピュータ１２への駆動信号のための）受信ステータスと、（コンピュータ１２外への駆動信号のための）送信ステータスとを有する３ステータスドライバである。コンピュータ１２ｅの例の如く特定のコンピュータ１２が配列（図５）内部に無い場合、通信ポート３８のうちの１つ以上は少なくとも上記目的のためには当該特定のコンピュータにおいて使用されない。しかし、ダイのエッジに当接する通信ポート３８は、コンピュータ１２の内蔵用又は専用の外付用に設計された付加的な回路を有することができ、通信ポート３８をして外部ＦＯポート３９（図５）として動作せしめる。かかる外部Ｉ／Ｏポート３９の例は、制限するものではないが、ＵＳＢ（汎用シリアルバス）ポート、ＲＳ２３２シリアルバスポート、パラレル通信ポート、アナログからデジタルへ及び／又はデジタルからアナログへの変換ポート、及び多くの他の可能なバリエーションを含む。図５において、「エッジ」コンピュータ１２ｆとは、外部装置８２を備える外部Ｉ／Ｏポート３９を通して通信する専用インタフェース回路８０を備えて表わされる。
【００３８】
多様な変形が本発明に対してその価値及び範囲を変えることのなくなされてもよい。例えば、本発明がここで特定のコンピュータ１２を用いるものとして説明されているが、本発明の態様多く又は全てが他のコンピュータ設計又は他のコンピュータ配列等に容易に適応され得る。
【００３９】
本発明の態様が、ここでは主に単一ダイ１４上の配列１０内の複数コンピュータ１２間の通信に関連して開示されたが、同一の原則及び方法が用いられ、又は使用毎に変形されて、コンピュータ１２とその専用メモリとの間の通信又は配列１０内のコンピュータ１２と外部装置との間の通信の如き他の装置間通信を達成することができる。
【００４０】
同様に、本発明は、ここではデュアルスタックプロセッサについて開示されたが、本発明はまた単一のスタックプロセッサ又は２つ以上のスタックを含むプロセッサについて実施され得る。
【００４１】
上記の全ては本発明の利用可能な例の幾つかでしかない。当業者は容易にその多数の他の変形態様を知り得るものであり、かかる変形は本発明の思想及び範囲から逸脱することなくなされてもよい。従って、ここでの開示は制限するものとしては意図されず、添付の請求の範囲は本発明の全ての範囲を包囲するように解釈されるべきものである。
【図面の簡単な説明】
【００４２】
【図１】スタックコンピュータの概略レイアウトを示すブロック図である。
【図２】本発明の１つの実施例によるデータスタックを示す図である。
【図３】スタックの単一レジスタのより詳細を示す図である。
【図４】本発明の１つの実施例によるリターンスタックを示す図である。
【図５】図１のコンピュータの多数相互作用を含むコンピュータ配列を示す図である。
【図６】図５のコンピュータの部分を示すと共に、図５の相互接続用データバスのより詳細を示す図である。
【図１】
2009538488.tif 000003
【図２】
2009538488.tif 000004
【図３】
2009538488.tif 000005
【図４】
2009538488.tif 000006
【図５】
2009538488.tif 000007
【図６】
2009538488.tif 000008
【国際調査報告】
2009538488.tif 000009