(57)【要約】コンピュータメモリ配置は、第１の複数の入力ポート機能（１７〜１９）を備え、これらは第１のルータ機能（３２）を介して集合的に結合されて、第２の複数のメモリモジュール（２０〜２４）に選択的に信号を供給する。この配置はさらに、前記第２の複数のメモリモジュール（２０〜２４）により集合的に供給される出力ポートを備える。特に、コンピュータメモリ配置は、個別のメモリモジュールのための前記第１の複数の入力ポート機能（１７〜１９）の１つより多いポートを介して発生するアクセスを検出すると同時に衝突すると共に、これに基づいて、他の要求に関連する何れかの要求源に対する強制的なストール信号（６５Ａ）を信号出力するためのストール信号（６５Ａ）を生成している間に、前記同時かつ衝突するアクセスにおける単一のアクセスのみを許容するためのアクセス検出機能（３６〜４０）を備えている。
2005527030.tif 000002
【特許請求の範囲】
【請求項１】
第１のルータ機能を介して第２の複数のメモリモジュールに選択的に供給するために集合的に結合された第１の複数の入力ポート機能を備えると共に、前記第２の複数のメモリモジュールにより集合的に供給される出力ポート機能をさらに備えるコンピュータメモリ配置であって、
前記第１の複数の入力ポート機能の１つより多くのポートを介して個別のメモリモジュールに対してアクセスの同時を検出して衝突すると共に、これに基づいて、他の要求に対するアクセス待ち時間を関する要求源に対する強制的なストールサイクルを信号出力するためのストール信号を生成している間に前記同時かつ衝突するアクセスにおける単一の１つのアクセスのみを許容するためのアクセス検出機能を備えるコンピュータメモリ配置。
【請求項２】
それぞれが関連の対応する入力ポート機能を前記第１のルータに結合して、これにより追加のスラック間隔を提供する複数の要求待ち行列とメモリモジュールとを更に備え、各メモリモジュールは個別のメモリバンクと、関連するメモリバンクにアクセスするための複数の同時発生のアクセス要求を発見後のための個別の調停器とを備え、この調停器は、更なるアクセス要求に優先して複数の同時発生のアクセス要求の中から個別の１つを排他的に取り扱うために１つだけ選び出す仲裁信号を生成し、いずれかのこのような要求行列の完全に論理和をとられた［ORED］信号発信の制御の下で排他的に、前記ストール信号を送信する間に、このような更なるアクセス要求を当該要求行列内に行列させる請求項１に記載のコンピュータメモリ配置。
【請求項３】
このようなストール信号は全ての入力ポート機能のために並列に出力され、前記プログラム可能なアクセス待ち時間は前記個別の要求待ち行列の中で均一である請求項１に記載のコンピュータメモリ配置。
【請求項４】
前記出力ポート機能は、前記第２の複数のメモリモジュールにより第２のルータ機能を介して供給される第３の複数の出力ポートを備える請求項１に記載のコンピュータメモリ配置。
【請求項５】
前記第１および第３の複数のうちの少なくとも１つは、２よりも大きい請求項４に記載のコンピュータメモリ配置。
【請求項６】
前記第１の複数は前記第３の複数に等しく、それぞれの前記入力ポート機能はそれぞれの対応する出力ポート機能に関連して、これにより、それぞれの対応するデータソースおよびシンクに関連されている請求項４に記載のコンピュータメモリ配置。
【請求項７】
それぞれのこのようなメモリモジュールは、前記関連のメモリバンクから読み出された結果の量の一時的な蓄積のための個別の結果待ち行列機能をさらに備える請求項２に記載のコンピュータメモリ配置。
【請求項８】
要求待ち行列と関連する結果待ち行列との結合を介して均一な遅延値を提供している間である請求項７に記載のコンピュータメモリ配置。
【請求項９】
このようなメモリモジュールは、パイプライン化されたメモリがシステムクロックの周波数よりも緩やかなクロック周波数で動作することにより用いられている場合に、承認指示部［acknowledge indicators］を格納するために、当該メモリバンク入力／出力チャネルの間に結合された、中間待ち行列機能をさらに備える請求項２に記載のコンピュータメモリ配置。
【請求項１０】
このような承認指示部は、供給されている関連の要求源を識別する請求項９に記載のコンピュータメモリ配置。
【請求項１１】
統合メモリマップにおけるものである請求項１に記載のコンピュータメモリ配置。
【請求項１２】
このような要求待ち行列は、配置の外で並列となった連続に基づくと共に、先任権の優位に基づいて動作する請求項２に記載のコンピュータメモリ配置。
【請求項１３】
請求項１に記載のコンピュータメモリ配置に適合された第４の複数の負荷／蓄積ユニットを備えるコンピュータ配置であって、前記第１および第４の複数のユニットは均等である配置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、第１の複数の入力ポートと、この第１の複数の入力ポートを集合的に結合する第１のルータ機能と、前記第１のルータ機能を介して前記第１の複数の入力ポートに結合されて選択的に入力を供給するための第２の複数のメモリモジュールとを備えるコンピュータメモリ配置に関し、さらに、請求項１の前提部分に定義されているメモリ配置に関する。例えば、ディジタル信号プロセッサ（ＤＳＰ―Digital Signal Processor―）のような現今の演算装置は、大きな処理電力と、さらに、メモリとプロセッサとの間のより多くの通信データ量の両方を必要とする。さらにまた、理想的には、多数のメモリモジュールおよびプロセッサにそれぞれ組込まれた性能の状態の両者は拡張可能であるべきであり、特に多数の並列的なデータの移動は２の値を超えることを許容されるべきである。
【背景技術】
【０００２】
２の大きさが十分である限りでは、可能な解決策は、２つの完全に分離したおよび完全に機能的なメモリを有しているべきであろうが、これにより、２つのメモリ間での蓄積の配置を選択することが複雑なタスクとなることを示している。明らかに、この問題は２よりも高い大きさの因子のためにさらに悪化させられるであろう。さらに、このような分離された蓄積機能を取り扱うであろうこのプログラムはしばしば、移植性で不足しており、例えばそれはプログラムがコンピュータ言語Ｃにおいて実現されているときである。したがって、一般的には“統一されたメモリマップ［unified memory map］”が望まれるであろう。実際には、それぞれのメモリアクセスは、いずれかの調停アドレスを参照しながらその後に許容されている。
【０００３】
２ポートメモリに伴う上述した実現はそれ自体は実行可能ではあるが、２つより多い数へとポートを拡張することは、一般的には余りに高価すぎるものと考えられる。したがって、適切なメモリのレベルに特定のハードウェア構成を提供することは、不適切なことであると考えられる。
【発明の概要】
【０００４】
したがって、数ある中でも特に、この発明の目的は、統一されたメモリマップを集合的に用いる１つのポートのメモリに一般的に基づく解決策を提供することにあり、ここで、個別のアクセスの間の衝突は受け入れられるが、その悪影響は種々のアクセスの待ち時間の上昇を許容させることを介して最小化される。したがって、この発明による解決策は、適切なメモリバンクの周辺に提供される。
【０００５】
ところでこれにより、１つの特徴［aspect］によれば、この発明は請求項１の特徴部分にしたがって特徴付けられる。
【０００６】
この発明はまた、請求項１に記載されたメモリ配置に接続された第４の複数の負荷／蓄積ユニットを備えるコンピュータ配置にも関連している。さらに、この発明の有利な特徴は従属請求項に記載されている。
【発明の詳細な説明】
【０００７】
以下、これらおよび更なるこの発明の特徴および利点は、好適な実施形態の開示、特に添付図面にしたがって、より詳細に説明される。
【０００８】
図１は、疑似マルチポートデータメモリテンプレートまたはパラメータ化可能な実施形態を示している。このテンプレートは、例示的な複数のＬ個の基礎的要素（数０，ｌ，Ｌ−１のみが示されている）と、この基礎的要素が取り囲む列状のＢ個のメモリバンク２０〜２４（数０，ｂ、Ｂ−１のみが示されている）とより構成され、メモリバンクのそれぞれは、当該メモリモジュールの入力と出力との間に並列に配置された中間の待ち行列２６〜３０に提供されている。メモリバンクは、統合されたアドレスマップを意味している。一般的には、これらの値はＢ≧Ｌにしたがった関係となるが、これに限定されることはなく、原理的にはこのＢの値はｌと同じくらい低くても良い。
【０００９】
外部アクセス信号は、図の上方に示されているように、個別の負荷／蓄積ユニット機能１７〜１９から発していても良い。各アクセス信号は、チップ選択［chip select］csと書き込み可能［write enable］webを備え、それぞれはさらにアドレス（address）および書き込みデータ（write data）を示している。これらの信号はさらに、結果ルータ３４からの矢印３５のような矢印によって示されているように、外部読出しデータexternal read data を受信できるようにしても良い。メモリバンクを取り囲むブロックの目的は３つである。第１に、種々のメモリバンクに対するアクセス要求は、ルータ機能３２により適切な書き込みポートから正しいメモリバンクに対して道順を決められ、さらに、種々のメモリバンクからのアクセスの結果は、ルータ３４により適切なメモリバンクから正しい読出しポートに戻りの道順を決められる。
【００１０】
第２に、多重アクセスが同一のサイクル内で同一のメモリバンクを参照することを要求している場合、明らかな衝突が解消されなければならないであろう。この趣旨で、それぞれのメモリバンク２０〜２４は、その前に配置された特定用途の調停器３６〜４０を有している。
【００１１】
第３に、多数のバンクの衝突は、適切なメモリバンクに関連する避けることのできないアクセス待ち時間における追加の緩慢な間隔 additional slack interval により、バンクアクセスの待ち時間を延長することにより低減される。この追加の緩みは、読出し／書き込みポートの数であるＬ個の並列要求待ち行列４２〜４６でのアクセスを遅延させることにより得られ、さらに、メモリバンクの数であるＢの並列結果待ち行列４８〜５２における結果を遅延させることにより得られる。
【００１２】
要求待ち行列４２〜４６は、状況に依存するような時間上の入力要求を遅延させても良い。結果待ち行列４８〜５２における補足的な遅延は、実際の要求と、出力ポートで結果が安定するようになる瞬間との間の全体的な遅延を生成しても良く、この全体的な遅延は均一値 uniform を有する。この後者の特徴は、プログラムを作成する［scheduling］ときに、承諾者がこの遅延均一値を考慮することを暗に意味している。種々の基礎的要素は、以下により広範囲にわたって検討されるように動作しても良い。実施形態に示されているように、要求待ち行列および結果待ち行列は、直列入力並列出力に基づいて動作するが、これは明白な制限ではない。最後に示されているように、それぞれのメモリブロック２０〜２４は、後でさらに検討されるべきである、それぞれが関連する中間の待ち行列２６〜３０を有している。
【００１３】
図２は、要求待ち行列の実施形態を示しており、ここでは、複数の対応する項目の間での明瞭性のために、ただ１つの構成要素のみが参照符号を付されている。示された配置は単一のコントローラ６０およびクロックサイクルの中で計測されたスラック［slack―緩み・遅延―］Ｓの長さに等しい複数の遅延段６４を有している。コントローラ６０は、マスタクロック信号５９を受け入れて、引続き動作中であり、さらに、チップ選択信号およびストール［stall―区画―］信号を受け入れる。これは、個別のクロックゲート６２を制御しているＳステージ［stage―段―］の有効フラッグ 0..S-l を生成する。例えばステージ６４のようなステージは、その中の有効データと共にのみ動作し、これにより無効データについて電力を費やすことを避けることができる。これらの信号cs、web、address、およびdataは、図１のように示される。直ちに処理することができない要求は、要求待ち行列内に入れられる。それぞれの要求待ち行列ステージ６４から、メモリバンク要求信号６１が並列に出力されても良い。要求の優先度は、先任権（ＦＩＦＯ―First-In First-Out／先入れ先出し―）に追従する。許可された要求は、対応する承認信号６３を取得して、その上で待ち行列から除去される。このような承認信号は、このような承認が個別の異なるメモリバンクから並列に発生するであろう限りは、それぞれのステージのために別々に到来可能である。
【００１４】
もしも要求が全ての待ち行列を介して移動して待ち行列の底（ステージＳ−ｌ）に到着するならば、フラッグ信号full６５が立ち上げられて、要求が負荷／蓄積待ち時間により認識される標準的な区間内に処理されることができないことを暗示している。このようなfull状態はその後、さらに前進することなく存在しているプロセッササイクルを維持している間に、要求する機能に対するストールサイクルに、問題［bottleneck］を解決することを許容させている。以下、バイパス機能６６が検討されるであろう。個別の要求コントローラ６０からの信号fullは、論理和［OR］ゲート６５Ａ内で論理和を取られ［ORED］、その出力は、負荷／蓄積機能１７〜１９の完全な配置のためのストール信号stallを表している。図中に特に示されてはいないが、これはその後、図１の関連する負荷／蓄積機能１７〜１９の全てに対して送られるであろう。
【００１５】
図３は、多数のweb４３、address４５、data４７を蓄積することを許容するシフトレジスタステージに一般的に対応する要求待ち行列ステージを示している。一般的に、これらは２つのモードの何れかで達成されることができる。短い待ち時間short latencyモードにおいては、負荷／蓄積動作は、例えばＳＲＡＭ［Static Random Access Memory］であっても良い、メモリの固有のメモリ待ち時間Ｌ１を経験する。次に、各バンクメモリの衝突はストール周期を結果するであろう。しかしながら、長い待ち時間long latencyモードにおいては、スラック［slack―緩み―］期間Ｓは、メモリ待ち時間Ｌ１に付加されるので、負荷／蓄積動作は、（Ｓ＋Ｌ１）の全体的な待ち時間を経験するであろう。要求待ち行列の実施形態は、特別なバイパス（bypass）ブロック６６を用いることにより両方の待ち時間モードを選択的に対応する。短い待ち時間 short latency モードにおいては、このブロックは全てのステージ６４を迂回するために用いられるであろうし、これにより、他の全てを動作できなくしている間に、最も高い優先度を有している実際に入来する要求に対する承認を行なうことができる。この関連される待ち時間モード（latency mode）信号は、符号６７を付けられている。
【００１６】
図４は、要求待ち行列迂回の実施形態を示している。この実施形態は、マルチプレクサ［multiplexer―多重化器―］６６Ａ，６６Ｂ，６６Ｃの集合から構成されており、これらの集合は、入来した最新の要求、または、最後の待ち行列ステージＳ−ｌをそのままにしている要求の何れかを集合的に選択する。実際に選択された要求は、最も高い優先度を有するであろう。
【００１７】
図５は、図２におけるブロック６０を実現するための、要求待ち行列コントローラの実施形態を示している。略して、最優位のステージに関する種々の論理素子のみに符号が付されている。承認信号ack 0は左上方に到来されて、アンド［AND―論理積―］ゲート７８に入力して、同様に素子７３での反転の後にアンドゲート７２にも入力する。チップ選択信号csは、アンドゲート７２，７８，８０に入力して、最後のゲート８０はさらに、承認信号ack Sを受け入れている。後の２つのアンドゲート７８，８０は、セレクタ８６にそれらの出力を入力して、このセレクタ８６は、示されているような入力信号を選択するための、長い／短い待ち時間モード信号により制御されている。送信された信号は、オア［OR―論理和―］ゲート８８に入力して、セレクタ９０を介して選択的に送信され、図示のようにストール（stall）信号により制御される。送信されたこの信号は、マスク信号maskとして動作させるために、ラッチ９２でラッチされる。このマスク信号maskはさらに、オアゲート８８へと後方結合［retrocouple］される。次に、このマスク信号maskはインバータ９６で反転されて、その後クロックされたアンドゲート９８へと供給される。アンドゲート９８の出力は、待ち時間モード（latency mode）信号により制御されるセレクタ１００へと供給されているので、このセレクタ１００の出力は、０またはクロックされたアンドゲート９８の出力信号に等しくなるかの何れかとなるであろう。
【００１８】
配置の左手側において、反転された承認信号ack 0は、ストール信号stallにより制御されるセレクタ８４に対してクロック［clocked―計時―］されている。選択された信号は、セレクタ９４へと供給され、その他方の入力には信号０が受信されてそれ自身はストール信号stallにより制御され、その出力はステージ有効（stage valid）信号７６を生成しており、図２を参照せよ。さらに、セレクタ８４の出力は、ラッチ７０へと供給される。このラッチの内容は、要求信号req 1を示しており、これはさらにセレクタ８２の一方の入力にへ後方結合され、その他方の入力にはゼロ（０）が受け入れられ、このセレクタは次のより低いステージからの信号ack 1により制御される。
【００１９】
他のステージのために、構成要素［items―項目―］７０，７２，７３，８２，８４および９４に対応する構成要素が一般的に示されるであろう。ところで、チップ選択cs値は、専用の１ビットシフトレジスタを介して、ステージ７０のようなステージに運ばれ、したがって、このレジスタは全ての未解決の要求を含んでいる。さらに、信号６３Ａのような受信された承認信号は、７２のようなアンドゲートへの入力を反転させることを介して当該ステージでのチップ選択信号csを消去するであろう。さらに、それぞれのチップ選択パイプラインステージから、図２における関連するクロックゲート６２を駆動するフラッグ７６のような有効フラッグが導き出される。このレジスタは、メモリバンクの衝突がメモリ内で発生しない限り、即ち、要求待ち行列が信号full（６５）を取得しない限りは、シフティングを維持するであろう。しかしながら、衝突は自動的に、ストールサイクルを生じさせて、待ち行列のシフティングを停止する。待ち行列がストールされたままである間に、メモリバンクの衝突は解決されても良いし、これは実際の要求が依然として承認されるであろうことを意味している。したがって、承認された要求は、ストール間隔の間、持続するであろう。
【００２０】
最後のステージＳが、他のステージに関して反対のやり方で制御される要求を有していても良い。さらに、最終ステージＳは、前のステージのアンドゲート７２に対応するアンドゲート１０２と、さらに、承認信号ack Sの反転された値とさらにまたラッチ９２からの反転されたマスク信号maskとを受信する第２のアンドゲート１０４とを備える。この２つのアンドゲートは、待ち時間モード制御信号により制御されるセレクタ１０６へ供給されて信号fullを送出する。待ち行列にそのfullフラッグを立てさせていた要求が、このようにして（更なるfull信号を発生することなく）承認されたときに、オアゲート６５Ａからのストール信号が自動的に終了させられる。
【００２１】
さらに、この要求待ち行列機能においては、待ち時間モード［latency mode］信号６７により制御されるバイパス素子［bypass element］６６もまた現れている。図２において参照可能なように、短い待ち時間モードにおいて、全体の待ち行列が迂回されるであろうし、これにより最新の入来する要求に対して最も高い優先度を割り当てて、これと時を同じくしている間に、他の全ての要求を阻止している。長い待ち時間モードにおいては、複数の要求の中の先任権が一般的に優先するであろう。待ち時間モード信号６７オペレータによりおよび／またはシステムにより与えられても良く、例えば、静的および／または動的なデータに基づいている。より長い待ち時間は、ただ１つのステージにより引き起こされていても、衝突の数およびこれにより遅延するストールの数を劇的に低減させるであろう。しかしながら、より長い待ち時間はまた、より長い遅延を提供するであろう。このシステムは、当該アプリケーションまたはアプリケーションの間隔に関連していた最良の交換条件［trade-off］により制御される。
【００２２】
図６は、要求待ち行列からメモリバンク調停器［arbiters］への要求経路指定機能を示している。この結合によって生じたネットワークは、全ての要求待ち行列から最適なメモリバンク調停器（図１の３６〜４０）への全ての要求の経路を決定すると共に、関連する要求待ち行列へと戻すこれらの要求を含む承認の経路を決定するであろうが、後者は図６には示されていない。メモリマップは種々のメモリバンクに統合的に交互に配置されているので、当該特定のバンクは関連するアクセス要求信号に結合された最小位ビットを審査することに基づいて決定されている。後者は、６９のようなビット選択構成要素により結果される。このビット選択動作の結果は例えば構成要素３６〜４０のような意図されたメモリバンク調停器に対して１ビットの要求フラッグの経路を結果として決定するであろう構成要素７０のようなデマルチプレクサ［demultiplexer―逆多重化器―］を制御する。要求の構成要素web，address，およびdataは、太字の表記に示された相互接続に対して並列に、全てのバンク調停器に対して直接的に送られている。その後、それぞれのバンク調停器に到着する要求ラインの合計の数は、要求待ち行列の倍数に等しく、各要求待ち行列により生成される要求の最大数である。緩み［slack］Ｓにより、この数は（Ｓ＋１）＊Ｌである。
【００２３】
さらに、要求は常の１つの単一バンクに向けられるので、各要求は１つの単一バンク調停器により承認されるのみであっても良い。したがって、各個別の要求のために、個別の調停器３６〜４０からの全ての対応する承認フラッグの構成要素３７，３９，４１におけるオアリング［ORING―論理和演算―］は、関連する承認の値を生じるであろう。図７は、種々のメモリバンク調停器から関連する要求待ち行列に対してこの承認の経路を決定する機能を示している。
【００２４】
図８は、バンク調停器の実施形態を示している。バンク調停器は、その入力に供給された最も優先度の高い要求を選択し、この要求を承認し、この要求に関連される情報を当該メモリバンクに対して送るように、動作可能である。このために、入来する要求フラッグは、最上位ビットとしての相対的に優先度の高い要求フラッグと、最下位ビットとしての相対的に優先度の低い要求フラッグと共に、蓄積されたビットベクトルとして判断されている。調停器は、ビットのために、このベクトルにおける最も高い識別レベル、すなわち“１”を探索するであろう。このビットは、最も高い優先度を有する有効な要求に対応している。当該ビットのインデックスは、承認されなければならない要求を選択するために用いられる。これはまた、要求が入来してくる負荷／蓄積ユニットを示している。後者の情報は、読出しアクセスについての負荷データを適切な負荷／蓄積ユニットへと送り返すであろう。負荷されたデータが読出しのために利用できるそのときに利用できるこの情報を有するために、このインデックスは、アドレスされたメモリバンクから読み出されるべきデータに同期してとどまるようにこれが移動するのを介して、中間待ち行列へと送られる。
【００２５】
この趣旨で、調停器の機能は、１２０および１２２のような選択部機能を備えている。選択部機能１２０は、（LSU L-1, row S）から（LSU 0, row 0）へと変動する種々の要求により、左側で制御されている。さらに、選択部機能１２０は、上部側でweb, address, dataおよびlsu idの信号を受信し、さらに、信号defまたは0を受信する。図示のように、優先度は、0, …zeroesの先導列［leading string］を有し、その後、相互に排他的な位置で第１の“１”となり、これは何れかの適切な値を有するであろう列により追従される。選択部は、選択要求 selected request，web，address，data，lsu id およびremaining slack などの信号を出力するであろう。
【００２６】
第２の選択部機能１２２は、より早い時期においては、左手のように、同一の制御信号により制御され、相互の排他的な位置で、さらに、排他的にゼロzeroesでの単一の“１”を伴う種々のトップビット列で受信する。この選択部は、（LSU L-1, row S）から（LSU 0, row 0）への範囲での承認信号を出力するであろう。
【００２７】
ビットベクトルからの最上位ビットの選択動作は、大きなマルチプレクサとして眺めることができ、これは制御入力としてビットベクトルを取り扱い、最上位ビット［Most Significant Bits］ＭＳＢに基づいてポートを選択する。これに関連して、図９は中間待ち行列の実施形態を示している。それゆえに、この中間待ち行列は、データメモリ内の実際のＳＲＡＭがアクセスされている区間の間に負荷アクセスに関する情報を同期するための遅延線として用いられる。これは、単一のコントローラ１３０と、例えばステージ１３４のような多数のステージとより構成され、その数はＳＲＡＭの待ち時間Ｌ１に等しくなっている。コントローラは、マスタクロック１３４によりクロック［clock―計時―］されて、これにより常に活性化されるであろうし：これは、例えば各ステージのためのゲート１３２のような１つのクロックゲートを制御する多数のＬ１ステージ有効フラッグを生成するであろう。その結果として、個別のステージは有効データがそのステージに出現したときの活性化されるのみであろう。電力消費は、無効データの蓄積においては浪費されない。全ての信号 chip select(cs)，write enable(web)，address および data は、その上端 ［top end］において中間待ち行列に入力するであろう。負荷要求loadに関する情報のみが待ち行列に蓄積される。最後の出力結果は示されているような負荷有効信号load valid、信号remaining delay、および信号load originを含んでいる。
【００２８】
図１０は、中間待ち行列コントローラの実施形態を示している。これは、ラッチ１３６のようなステージを伴う単一ビット幅の遅延線より構成され、これは信号csおよびwebにより直列に供給され、種々のステージのために有効フラッグを保持する。このような各フラッグは、負荷動作を示しており、チップ選択信号csと低活性書き込み可能信号webの論理積［ANDING］をとることにより生成される。この直列出力信号は付加有効信号 load valid である。
【００２９】
図１１は、中間待ち行列ステージを示している。各ステージは、２つのレジスタを有しており、第１のレジスタ（１４０）は負荷要求 load request を出力した負荷／蓄積ユニットを識別する識別子を保持し、他のレジスタ（１３８）は残りの遅延値を保持しており、これにより、意図された負荷／蓄積待ち時間ストールに合致するデータメモリ内で要求が実行されるべきであろうどのくらい多くの緩み［slack］が生じているのかを示している。もしもプロセッサへのストールに先行するメモリ内で衝突が生じるならば、プロセッサのサイクル時間は中断されるであろう。プロセッササイクル時間に合致した残りの遅延値を保持するために、この場合の値は、増分構成要素１４２内で増分されるであろうし；関連する選択はストール信号 stall により制御される選択部１４４を介して実行される。
【００３０】
図１２は、結果待ち行列の実施形態を示しており、ここでは単一のコントローラ１４６とステージ１５０のような複数のステージより構成され、これらのステージの数はスラック［slack―緩み・遅延―］の機能、メモリの待ち時間および負荷／蓄積ユニットの数から１を引いたものである。ステージの数は、最大ＭＡＸ（Ｓ，Ｌ＊（ＬＳＵ−１））に略々等しい。コントローラは、マスタクロックによりクロックされて、これにより、常に活性状態である。これは、Ｓステージ有効フラッグを生成して、これは、各ステージについて１つずつ、クロック１４８のようなＳクロックゲートを制御する。その結果、このステージは、それが有効データを蓄積するときに活性であるのみで、再び電力消費のレベルを少なくするためである。
【００３１】
結果待ち行列は、プロセッサコアとの最後の同期を実行するために、その対応するＳＲＡＭおよび中間待ち行列から入来するデータおよびその他の情報を収集して格納するであろう。この信号load valid, load data, load/store unit identifier, およびrmaining delayは、示されるように、その上端のステージ１５０に連続的待ち行列を入力させるであろう。一旦待ち行列の中に入力すると、負荷となるその結果は、その最終的な遅延を実行する。ひとたび結果の残りの遅延が値ゼロになると、その結果は関連する待ち行列のステージ出力の１つで有効な結果として出力される。それぞれ異なる負荷／蓄積ユニットのために意図された多数の結果は、待ち行列を並列のままにしておくことができる。
【００３２】
図１３は、結果待ち行列ステージの実施形態を示しており、これは、残存遅延値（レジスタ１５６）、データ（レジスタ１６０）、負荷動作の負荷／蓄積ユニット識別子（レジスタ１５８）をそれぞれ保持する３つのレジスタにより構成されている。一纏めのものとして取り扱われる全てのステージは、シフトレジスタを構成する。通常の動作において、残存遅延値は、各ステージ（構成要素１５２）内で減少させられるので、連続するステージの移動に連れて、残存遅延は、最終的にはゼロとなり、合計の負荷／蓄積待ち時間が達成されてしまったことを示している。丁度その時点で、結果は負荷／蓄積ユニットへと送り戻されても良い。結果としてプロセッサのストール［stall―区分―］を導くメモリ内でもしも衝突が生じたならば、このプロセッサのサイクル時間は停滞しているであろう。プロセッサのサイクル時間のカウンタに同期された残存遅延値を維持するために、この残存遅延値はこの場合、減少ステージ１５２を回避することを通して一定にすると共に、選択部１５４の制御を割り当てるように保持される。
【００３３】
図１４は、結果待ち行列コントローラの実施形態を示しており、これにより、種々のステージを制御するクロックゲートのために、ステージ有効フラッグstage validを生成するための遅延線を実現できる。この遅延線のそれぞれのステージでは、残存遅延値が調査される。ひとたび、この値がゼロとなったならば、このステージにおけるステージ有効フラッグstage validは消去される。もしもプロセッサがメモリ衝突によりストールされたならば、負荷／蓄積ユニットはそのことを受信することができないであろうので、結果を送り返すことはできなくなる。したがって、この場合、この結果有効フラッグresult validは消去されない。このコントローラにおけるそれぞれのステージは、以下の項目を備えており、これらは第１のステージにおいてのみ数字により引用される。第１に、残存遅延値は減少構成要素１６２へ入力される。その出力は遅延値の全ての値の論理和された［ORed］値に等しいが、これは、全てのステージにまたがった連続的な配置における負荷有効信号load validと共に論理積［AND］ゲート１６４に供給される。この論理積［AND］ゲートの出力は、ストール信号 stall により制御される選択部１７２に供給される。この選択部の出力は、構成要素１７４によりラッチされて、そこで次の連続ステージへと供給される。さらに、減少構成要素の出力は、論理積された［ANDED］と同様に、論理積ゲート１６８における負荷有効信号load validと共に項目１６６で反転されている。このゲートの出力値は、選択部１７０に供給され、この選択部は、さらに“０”信号を受信すると共に、ストール信号stallにより制御されている。選択部１７０の出力信号は、結果有効信号result valid 0を生じていても良い。最終のステージにおける差は、項目１６４，１７２および関連する配線を省略することに関連している。
【００３４】
図１５は、結果ルータの実施形態を示している。個のルータは、結果待ち行列をそのまま放置すると共に、関連する要求がまさにここから引き起こされる、負荷／蓄積ユニット１６２〜１６４へと送り戻すことを実行する。負荷／蓄積ユニットunit idは、目的となる負荷／蓄積ユニットを決定するために用いられる。デマルチプレクサ１８０〜１８４は、有効フラッグvalid flagが送られるべき適切な負荷／蓄積ユニットを選択する。各々のサイクルにおいて、多くても１つの有効要求が個別の負荷／蓄積ユニットへと送り返されることは確実なことであるので、送り返されるべきこの結果データは、まず、例えば１７４〜１７８のような２つの入力論理積［AND］ゲート内でのそれらの対応する結果フラッグに伴う全ての結果データをビット幅で論理積する［ANDING］ことにより、次に、各個別のルータ用の論理和［OR］ゲート１６８〜１７２においてそれらを論理和する［ORING］ことにより、決定される。
【図面の簡単な説明】
【００３５】
【図１】疑似マルチポートデータメモリテンプレートまたはパラメータ化可能な実施形態を示すブロック図である。
【図２】要求待ち行列の実施形態を示すブロック図である。
【図３】要求待ち行列ステージ［stage―段―］を示すブロック図である。
【図４】要求待ち行列のバイパスの実施形態を示すブロック図である。
【図５】要求待ち行列のコントローラの実施形態を示すブロック図である。
【図６】要求待ち行列からメモリバンク調停器への要求ルーティング機能を示すブロック図である。
【図７】メモリバンク調停器から要求待ち行列への承認ルーティング機能を示すブロック図である。
【図８】バンク調停器の実施形態を示すブロック図である。
【図９】中間の待ち行列の実施形態を示すブロック図である。
【図１０】中間の待ち行列のコントローラの実施形態を示すブロック図である。
【図１１】中間の待ち行列ステージを示すブロック図である。
【図１２】結果の待ち行列の実施形態を示すブロック図である。
【図１３】結果の待ち行列ステージを示すブロック図である。
【図１４】結果の待ち行列のコントローラの実施形態を示すブロック図である。
【図１５】結果のルータの実施形態を示すブロック図である。
【図１】
2005527030.tif 000003
【図２】
2005527030.tif 000004
【図３】
2005527030.tif 000005
【図４】
2005527030.tif 000006
【図５】
2005527030.tif 000007
【図６】
2005527030.tif 000008
【図７】
2005527030.tif 000009
【図８】
2005527030.tif 000010
【図９】
2005527030.tif 000011
【図１０】
2005527030.tif 000012
【図１１】
2005527030.tif 000013
【図１２】
2005527030.tif 000014
【図１３】
2005527030.tif 000015
【図１４】
2005527030.tif 000016
【図１５】
2005527030.tif 000017
【国際調査報告】
2005527030.tif 000018
2005527030.tif 000019
2005527030.tif 000020