(57)【特許請求の範囲】
【請求項１】
Ｌ個（Ｌは２以上の整数）の入力ポート部と、
個別のメモリバンクおよび中間待ち行列をそれぞれが有するＢ個（Ｂは２以上の整数）のメモリモジュールと、
前記Ｌ個の入力ポート部からの複数のアクセス要求を、前記Ｂ個のメモリモジュールのアクセス対象のメモリバンクへ結合する第１のルータ部と、
前記Ｂ個のメモリモジュールと結合され、Ｂ個の結果待ち行列を有する出力ポート部と、
前記Ｌ個の入力ポート部の中から複数の入力ポートを介して複数の同時競合アクセスを検出する検出部であって、該検出部が、アクセス処理の遅れを意味しており、強制的なストールサイクルを要求源に対して合図するストール信号を生成すると共に、前記複数の同時競合アクセスの検出に基づいて該複数の同時競合アクセスの中から唯１つのアクセスのみを許可するアクセス検出部と、
実際の処理に従ってアクセス待ち時間を選択可能でプログラム可能とするプログラム部と、
それぞれが、前記アクセス待ち時間に応じたプログラム可能な段数を有し、関連付けられた対応する１つの入力ポートを前記第１のルータ部に結合させて、これにより付加的かつプログラム可能なスラック期間を提供するＬ個の要求待ち行列と、を備えると共に、
前記アクセス検出部の一部を形成する個別の調停器を備え、前記調停器の各々は、前記Ｂ個のメモリモジュールに設けられたメモリバンクの１つに関連づけられ、前記関連づけられたメモリバンクへのアクセスのために同時発生したアクセス要求を発見することに基づいて、前記同時発生したアクセス要求の中から個別の一つをそれ以外の複数のアクセス要求に優先して排他的に選択する仲裁信号を生成すると共に、前記それ以外の複数のアクセス要求を当該要求待ち行列内で前進させ、
前記アクセス検出部は、最終段に前記アクセス要求が到達したことを示すフル信号を前記要求待ち行列のそれぞれから入力して論理和をとった論理和信号による信号発信の制御の下で、排他的に前記ストール信号を送信することを特徴とするコンピュータメモリ装置。
【請求項２】
前記プログラム可能アクセス待ち時間は、第１のプログラム可能な値と第２のプログラム可能な値とを有し、前記第２のプログラム可能な値はゼロである請求項１に記載のコンピュータメモリ装置。
【請求項３】
前記ストール信号は全ての前記入力ポート部のために並列に出力され、前記プログラム可能アクセス待ち時間は、個別の要求待ち行列どうしで同一であり、このようなプログラム可能アクセス待ち時間は選択的に活性化されるバイパス機能を介して実現されている請求項１に記載のコンピュータメモリ装置。
【請求項４】
前記出力ポート部は前記Ｂ個のメモリモジュールにより第２のルータ機能を介して供給されるＢ個の出力ポートを備え、前記Ｌ個は前記Ｂ個に等しく、それぞれの入力ポートはそれぞれの出力ポートに関連し、前記メモリモジュールのそれぞれは関連するメモリバンクから読み出された結果値の遷移蓄積のための個別の前記結果待ち行列に結合される請求項１に記載のコンピュータメモリ装置。
【請求項５】
前記要求待ち行列は、当該要求待ち行列と関連する結果待ち行列と結合されることにより均一な遅延値を提供する請求項４に記載のコンピュータメモリ装置。
【請求項６】
請求項１に記載のコンピュータメモリ装置に適合されたＬ個のロード／ストアユニットを備えるコンピュータ装置であって、前記Ｌ個のロード／ストアユニットは同一の構成を有するコンピュータ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、Ｌ個（Ｌは２以上の整数）の要求待ち行列を有するＬ個の入力ポートと、Ｂ個（Ｂは２以上の整数）の中間待ち行列およびメモリバンクを有するＢ個のメモリモジュールと、Ｂ個の結果待ち行列を有する出力ポートと、前記入力ポートおよび前記メモリモジュールが結合されて前記入力ポートの１つを選択して前記要求待ち行列を前記メモリモジュールに供給する第１のルータと、を備えるコンピュータメモリ装置に関し、さらに、請求項１の前提部分に定義されているメモリ装置に関する。例えば、ディジタル信号プロセッサ（ＤＳＰ―Digital Signal Processor―）のような近年の演算装置は、大きな処理電力を必要とし、さらに、メモリとプロセッサとの間のより多くの通信データ量の両方を必要とする。さらにまた、理想的には、多数のメモリモジュールおよびプロセッサにそれぞれ備えられた大きな処理電力と多くの通信データ量との２つの性能は、拡張可能であるべきであり、特に多数の並列的なデータは、複数の通信が同時に実行可能となるべきである。
【背景技術】
【０００２】
２つのポートの大きさが十分である限り、可能な解決策としては、２つのポートを完全に分離すると共に機能的にも完全なメモリを有しているべきであるが、２つのポートを完全に分離しそれぞれの機能も完全にすることは、２ポートのメモリ間での記憶場所を選択するために複雑なタスクを必要とすることを示している。明らかに、この問題は２ポートよりも多くのポートのメモリにとってはさらに深刻である。さらに、このように格納機能を分離されたメモリを取り扱うプログラムはしばしば可搬性で不充分であり、例えば、この可搬性の不充分さは、プログラムがコンピュータ言語Ｃにおいて実現されているときなどである。したがって、一般的には“統一されたメモリマップ［unified memory map］”が望まれるであろう。実際には、それぞれのメモリアクセスは、何らかの調停アドレスを用いることにより許容されている。
【０００３】
２ポートメモリに伴う上述した対策は、それ自体は実現可能ではあるが、２つより多い数へとポートを拡張することは、一般的には余りに高価すぎるものと考えられる。したがって、適切なメモリのレベルに特定のハードウェア構成を提供することは、不適切なことであると考えられる。一方、ここで、ストール［stall―区分―］信号を提供することは、有用な特徴を提示している。他方、このような疑似マルチポートメモリを分離することで衝突する関連性のある不利益なストール［時間稼ぎ］による間接費用を低減することは、追加の緩慢な時間が疑似マルチポートメモリの読み出し−書き込みアクセス待ち時間に付加されることを必要としている。多くの適用例においては事実、アクセス待ち時間を拡張された結果は、適用におけるループパイプライン化された部分に衝撃を与えることはなく、ここでスループット［throughput―処理能力―］は重要であるがレイテンシー［latency―待ち時間―］は一般的には重要ではない。しかし、いくつかの他の適用例のためには、実行中の制御に支配されたコードの性能に関する緩慢さ［遅延］の衝撃は、非常に重要であり得る。このような適用例は、とりわけ、符号列の圧縮および圧縮解除に関している。したがって、この発明は、実際の適用例のために最適なセットアップ［setup―設定―］を選択することを許容するためのプログラム可能なアクセス待ち時間を有する必要性を認識している。
【発明の概要】
【０００４】
したがって、特に、この発明の目的は、一般的に、統一されたメモリマップを総合的に用いる１ポートメモリに基づく解決策を提供することにあり、ここで、個別のアクセスの間の衝突を受け入れることになるが、アクセス間の衝突の悪影響は種々のアクセス待ち時間を上昇させることにより最小化される。したがって、この発明による解決策は、適切なメモリバンクの周辺に提供される。ところで、本願発明が適用され、本願発明の特徴となる制御対象部分は、一般的には事実上シーケンシャルである（連続している）ので、これらの特徴となる制御対象部分における多数の並列メモリアクセスは何れにしても制限される。したがって、多数のメモリバンクの競合も制限され、多数のストール［stalls］もまた同様に制限される。さらに、短いメモリ待ち時間自身が用いられる場合、この短いメモリ待ち時間はこれらの制御対象部分の動作の手順を改善する。
【０００５】
ところでこれにより、１つの特徴［aspect］によれば、この発明は請求項１の特徴部分にしたがって特徴付けられる。
【０００６】
この発明はまた、請求項１に記載されたメモリ装置に接続された第４の複数のロード／ストアユニットを備えるコンピュータ装置にも関連している。さらに、この発明の有利な特徴は従属請求項に記載されている。
【発明の詳細な説明】
【０００７】
以下、これらおよび更なるこの発明の特徴および利点は、好適な実施形態の開示、特に添付図面にしたがって、より詳細に説明される。
【０００８】
図１は、疑似マルチポートデータメモリテンプレートまたはパラメータ化可能な実施形態を示している。このテンプレートは、例示的な複数のＬ個（Ｌは２以上の整数）の基礎的要素（数０，ｌ，Ｌ−１のみが示されている）と、この基礎的要素が取り囲む列状のＢ個（Ｂは２以上の整数）のメモリバンク２０〜２４（数０，ｂ、Ｂ−１のみが示されている）とより構成され、メモリバンクのそれぞれは、当該メモリモジュールの入力と出力との間に並列に配置された中間の待ち行列２６〜３０に提供されている。メモリバンクは、統合されたアドレスマップを示している。一般的には、これらの値はＢ≧Ｌにしたがった関係となるが、これに限定されることはなく、原理的にはこのＢの値はｌと同じくらい低くても良い。
【０００９】
外部アクセス信号は、図の上方に示されているように、個別のロード／ストアユニット機能１７〜１９から発していても良い。各アクセス信号は、チップ選択［chip select−cs］信号と書き込み可能［write enable−web］信号を備え、それぞれはさらにアドレス（address）信号および書き込みデータ（write data）信号を示している。これらの信号はさらに、結果ルータ３４からの矢印３５のような矢印によって示されているように、外部読出しデータ［external read data ］信号を受信できるようにしても良い。メモリバンクを取り囲むブロックの目的は３つである。第１に、種々のメモリバンクに対するアクセス要求は、ルータ機能３２により適切な書き込みポートから正しいメモリバンクに対して道順を決められ、さらに、種々のメモリバンクからのアクセスの結果は、ルータ３４により適切なメモリバンクから正しい読出しポートに戻りの道順を決められる。
【００１０】
第２に、多重アクセスが同一のサイクル内で同一のメモリバンクを参照することを要求している場合、明らかな衝突が解消されなければならないであろう。この趣旨で、それぞれのメモリバンク２０〜２４は、その前に配置された特定用途の調停器３６〜４０を有している。
【００１１】
第３に、多数のバンクの衝突は、適切なメモリバンクに関連している避けることのできないアクセス待ち時間における追加スラックインターバル［追加の緩慢な間隔 additional slack interval ］により、バンクアクセスの待ち時間を延長することにより低減される。この追加の緩みは、読出し／書き込みポートの数であるＬ個の並列要求待ち行列４２〜４６でのアクセスを遅延させることにより得られ、さらに、メモリバンクの数であるＢ個の並列結果待ち行列４８〜５２における結果を遅延させることにより得られる。
【００１２】
要求待ち行列４２〜４６は、状況に依存するような時間上の入力要求を遅延させても良い。結果待ち行列４８〜５２における補足的な遅延は、実際の要求と、出力ポートで結果が安定するようになる瞬間との間の全体的な遅延を生成しても良く、この全体的な遅延は均一値［uniform ］を有する。この後者の特徴は、プログラムをスケジューリングする［作成する−scheduling］ときに、承諾者がこの遅延均一値を考慮することを暗に意味している。種々の基礎的要素は、以下により広範囲にわたって検討されるように動作しても良い。実施形態に示されているように、要求待ち行列および結果待ち行列は、直列入力並列出力に基づいて動作するが、これは明白な制限ではない。最後に示されているように、それぞれのメモリブロック２０〜２４は、後でさらに検討されるべきである、それぞれが関連する中間の待ち行列２６〜３０を有している。
【００１３】
図２は、要求待ち行列の実施形態を示しており、ここでは、複数の対応する項目の間での明瞭性のために、ただ１つの構成要素のみが参照符号を付されている。示された配置は単一のコントローラ６０およびクロックサイクルの中で計測されたスラック［slack―緩み・遅延―］Ｓの長さに等しい複数の遅延段６４を有している。コントローラ６０は、マスタクロック信号５９を受け入れて、引続き動作中であり、さらに、チップ選択信号およびストール信号を受け入れる。これは、個別のクロックゲート６２を制御しているＳステージ［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信号を発生することなく）承認されたときに、オアゲート６５Ａからのストール信号が自動的に終了させられる。
【００２１】
さらに、この要求待ち行列機能においては、待ち時間モード［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］, および残り遅延信号［remaining 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―段―］を示すブロック図である。
【図４】要求待ち行列のバイパスの実施形態を示すブロック図である。
【図５】要求待ち行列のコントローラの実施形態を示すブロック図である。
【図６】要求待ち行列からメモリバンク調停器への要求ルーティング機能を示すブロック図である。
【図７】メモリバンク調停器から要求待ち行列への承認ルーティング機能を示すブロック図である。
【図８】バンク調停器の実施形態を示すブロック図である。
【図９】中間の待ち行列の実施形態を示すブロック図である。
【図１０】中間の待ち行列のコントローラの実施形態を示すブロック図である。
【図１１】中間の待ち行列ステージを示すブロック図である。
【図１２】結果の待ち行列の実施形態を示すブロック図である。
【図１３】結果の待ち行列ステージを示すブロック図である。
【図１４】結果の待ち行列のコントローラの実施形態を示すブロック図である。
【図１５】結果のルータの実施形態を示すブロック図である。
【図１】
0004566738.tif 000002
【図２】
0004566738.tif 000003
【図３】
0004566738.tif 000004
【図４】
0004566738.tif 000005
【図５】
0004566738.tif 000006
【図６】
0004566738.tif 000007
【図７】
0004566738.tif 000008
【図８】
0004566738.tif 000009
【図９】
0004566738.tif 000010
【図１０】
0004566738.tif 000011
【図１１】
0004566738.tif 000012
【図１２】
0004566738.tif 000013
【図１３】
0004566738.tif 000014
【図１４】
0004566738.tif 000015
【図１５】
0004566738.tif 000016