(57)【特許請求の範囲】
【請求項１】
複数のポートを有するメモリコントローラであって、
前記各ポートはメモリオペレーションを１以上のソースから受信し、及び前記各ポートは特定タイプのメモリオペレーショントラフィックに対して専用に使用され、
前記メモリオペレーションにとって関連するサービスの質（ＱｏＳ）パラメータに応答して、前記メモリオペレーショントラフィックを、前記複数のポートから複数のメモリチャンネルへスイッチさせるエージェントインタフェースユニットを含み、
前回のメモリオペレーションを送信した第１のソースから第１のメモリオペレーションを受信することに応答して、及び、前記前回のメモリオペレーション用の前回ＱｏＳパラメータよりも高レベルのサービスを示唆する前記第１のメモリオペレーション用の第１ＱｏＳパラメータに更に応答して、前記メモリオペレーションは、前回ＱｏＳパラメータを前記第１ＱｏＳパラメータが示唆するサービスレベルにアップグレードする、前記メモリコントローラ。
【請求項２】
前記ＱｏＳパラメータの定義は各タイプのトラフィックで異なり、前記エージェントインタフェースユニットは、前記ＱｏＳパラメータを前記異なる定義と比較し、前記メモリオペレーショントラフィックをスイッチする、請求項１に記載のメモリコントローラ。
【請求項３】
前記ポートの少なくとも１つはリアルタイムトラフィック専用であり、当該リアルタイムトラフィックに関するＱｏＳパラメータは、前記ソースにおける異なるレベルの緊急性を反映する、請求項２に記載のメモリコントローラ。
【請求項４】
前記ポートの他の一つはプロセッサからのトラフィック専用であり、前記プロセッサトラフィックは非リアルタイムであって、かつ、前記ＱｏＳパラメータは最大限の努力又は低待ち時間サービスの何れか一方を示唆している、請求項３に記載のメモリコントローラ。
【請求項５】
前記ポートの他の一つはグラフィックユニットからのトラフィック専用であり、前記グラフィックユニットは非リアルタイムである、請求項４に記載のメモリコントローラ。
【請求項６】
前記前回のメモリオペレーション内の読出しオペレーションに関するＱｏＳパラメータを維持し、前記前回のメモリオペレーション内の書込みオペレーションに関するＱｏＳパラメータを排除する複数のメモリチャンネルユニットを更に含み、
前記複数のメモリチャンネルユニットは、前記第１のソースからの読出しオペレーションに関するＱｏＳパラメータよりも高いレベルのサービスを示唆する前記第１ＱｏＳパラメータに応答して、前記第１のソースからの読出しオペレーションに関するＱｏＳパラメータをアップグレードする、請求項１に記載のメモリコントローラ。
【請求項７】
前記エージェントインタフェースユニットに結合される複数のメモリチャンネルユニットを更に含み、
前記複数のメモリチャンネルユニットのそれぞれは、あらかじめソートしているキューと、メモリと結合するメモリインタフェースユニットとを含み、
前記エージェントインタフェースユニットは、前記メモリオペレーションのＱｏＳパラメータに応答して、前記ポートからのメモリオペレーションを所与のメモリチャンネルに対してスケジューリングし、
前記エージェントインタフェースユニットは、所与のメモリチャンネルに対するメモリオペレーションをＱｏＳパラメータに基づき組み立てなおし、
前記メモリチャンネルユニットは、メモリの効率上、どのメモリオペレーションが一緒に実行される筈であるかに従い、前記あらかじめソートしているキューにおいてメモリオペレーションをグループ化し、
前記メモリチャンネルユニットは、各グループの最高レベルのＱｏＳパラメータに基づきグループをスケジューリングし、
前記メモリチャンネルユニットは、前記メモリオペレーションを、前記メモリのためのコマンドの中にあらかじめ合成し、
前記メモリインタフェースユニットは、前記メモリへの効率的なアクセスに基づき前記コマンドを組み立てなおす、請求項１に記載のメモリコントローラ。
【請求項８】
前記メモリオペレーションは、読出しオペレーションと書込みオペレーションとを含み、前記あらかじめソートしているキューは、読出しオペレーション及び書込みオペレーションを別個にキューし、
前記あらかじめソートしているキューは、書込みオペレーションに関するＱｏＳパラメータを排除し、及び、書込みキューの充満度に応じて読出しオペレーションと書込みオペレーションとの間でスケジューリングするよう構成される、請求項７に記載のメモリコントローラ。
【請求項９】
(i)複数の前記メモリオペレーションが前記メモリにおいて同一ページに対するものである、
(ii)複数の前記メモリオペレーションが異なるランクのメモリに対するものである、
(iii)複数の前記メモリオペレーションが前記メモリの異なるバンクに対するものである、のうち少なくとも１つが真であるならば、複数のメモリオペレーションが効率的に一緒に実行されるようにする、請求項８に記載のメモリコントローラ。
【請求項１０】
請求項１に記載のメモリコントローラと、
１以上のリアルタイム（ＲＴ）周辺機器と、
少なくとも１つのプロセッサと、
１以上の非リアルタイム（ＮＲＴ）周辺機器と、を含む集積回路であって、
前記１以上のリアルタイム（ＲＴ）周辺機器は、前記複数のポートのうちのＲＴポートと結合し、
前記少なくとも１つのプロセッサは、前記複数のポートのうちの第１のＮＲＴポートに結合し、
前記１以上のＮＲＴ周辺機器は、前記複数のポートのうちの第２のＮＲＴポートに結合し、
前記メモリコントローラは、前記複数のポートからメモリオペレーションをキャプチャーして、メモリに対する１以上のメモリチャンネル上で前記メモリオペレーションをスケジューリングし、
それぞれのポートで受信したメモリオペレーション間での決定をスケジューリングすることは、前記メモリオペレーションを受信した特定のポートに部分的に影響を受ける、前記集積回路。
【請求項１１】
メモリコントローラにおける複数のポートに関するメモリオペレーションを受信する処理であって、各ポートはメモリオペレーションを１以上のソースから受信するよう結合され、かつ、各ポートは特定タイプのメモリオペレーショントラフィック専用である当該処理と、
前記メモリオペレーションに関係のあるサービス質（ＱｏＳ）パラメータに応答して、前記複数のポートから、前記メモリコントローラ内の複数のメモリチャンネルユニットへ前記メモリオペレーショントラフィックを切替える処理と、
１以上の前回メモリオペレーションを送信した第１のソースから第１のメモリオペレーションを受信する処理と、
前記前回メモリオペレーション用の前回ＱｏＳパラメータよりも高いレベルのサービスを示唆する前記第１のメモリオペレーション用の第１ＱｏＳパラメータに応答して、前記メモリコントローラが前記前回ＱｏＳパラメータを前記第１ＱｏＳパラメータが示唆するサービスのレベルにアップグレードする処理と、
を含む方法。
【請求項１２】
前記メモリオペレーションを受信する処理は、
i)前記複数のポートのうちのリアルタイム（ＲＴ）ポートに関する第１のメモリオペレーションであって、ＲＴ ＱｏＳレベルのセットに従って定義された第１のサービス質（ＱｏＳ）パラメータを有する当該第１のメモリオペレーションを受信すること、
ii)前記複数のポートのうちの非リアルタイム（ＮＲＴ）ポートに関する第２のメモリオペレーションであって、ＮＲＴ ＱｏＳレベルのセットに従って定義された第２のサービス質（ＱｏＳ）パラメータを有する当該第２のメモリオペレーションを前記第１のメモリオペレーションと並行して受信することを含み、
前記メモリオペレーショントラフィックを切替える処理は、前記メモリコントローラにおいて、前記第１のＱｏＳパラメータ及び前記第２のＱｏＳパラメータに応じて、少なくとも一部が前記メモリにアクセスする前記第１のメモリオペレーション及び前記第２のメモリオペレーションをスケジューリングすることを含む、
請求項１１に記載の方法。
【請求項１３】
前記メモリコントローラが、前記前回のメモリオペレーション内の読出しオペレーションに関するＱｏＳパラメータを維持する処理と、
前記メモリコントローラが、前記前回のメモリオペレーション内の書込みオペレーションに関するＱｏＳパラメータを排除する処理と、
前記第１のソースからの読出しオペレーションに関するＱｏＳパラメータよりも高いレベルのサービスを示唆する前記第１のメモリオペレーション用の第１ＱｏＳパラメータに応答して、前記メモリコントローラが、前記第１のソースからの読出しオペレーションに関するＱｏＳパラメータをアップグレードする処理と、
を更に含む請求項１１に記載の方法。
【請求項１４】
前記メモリチャンネルユニットのそれぞれは、あらかじめソートしたキューと、メモリに接合したメモリインタフェースユニットとを含み、
前記メモリオペレーショントラフィックを切替える処理が、
i)前記メモリオペレーションのＱｏＳパラメータに応答して、前記ポートから所与のメモリチャンネルユニットまでメモリオペレーションをスケジューリングすること、
ii)前記ＱｏＳパラメータに基づいて所与のメモリチャンネルユニットへのメモリオペレーションを組み立てなおすこと、
を更に含む請求項１１に記載の方法。
【請求項１５】
メモリの効率上、どのメモリオペレーションが一緒に実行されるかに従い、前記複数のメモリチャンネルユニットが、前記あらかじめソートしているキューにおいてメモリオペレーションをグループ化する処理と、
前記複数のメモリチャンネルユニットが、各グループの最高レベルのＱｏＳパラメータに基づきグループをスケジューリングする処理と、
前記複数のメモリチャンネルユニットが、前記メモリオペレーションを前記メモリのためのコマンドの中にあらかじめ合成する処理と、
前記メモリインタフェースユニットが、前記メモリへの効率的なアクセスに基づき前記コマンドを組み立てなおす処理と、
を更に含む請求項１４に記載の方法。
【請求項１６】
前記メモリオペレーションは読出しオペレーション及び書込みオペレーションを含み、  前記あらかじめソートしているキューは、読出しオペレーションと書込みオペレーションを別個にキューする処理と、
前記あらかじめソートしているキューは、書込みオペレーションに関するＱｏＳパラメータを排除し、及び、書込みキューの充満度に応じて読出しオペレーションと書込みオペレーションとの間でスケジュールする処理と、
を更に含む請求項１５に記載の方法。
【請求項１７】
(i)複数の前記メモリオペレーションが前記メモリにおいて同一ページに対するものである、
(ii)複数の前記メモリオペレーションが異なるランクのメモリに対するものである、
(iii)複数の前記メモリオペレーションが前記メモリの異なるバンクに対するものである、のうち少なくとも１つが真であるならば、複数のメモリオペレーションが効率的に一緒に実行されるようにする、請求項１５に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はメモリコントローラの分野に関する。
【背景技術】
【０００２】
一般的に、デジタルシステムは半導体メモリデバイスから形成されるメモリシステムを含む。例えば、スタティック・ランダムアクセスメモリ（ＳＲＡＭ）、ダイナミック・ランダムアクセスメモリ（ＤＲＡＭ）、同期型ダイナミック・ランダムアクセスメモリ（ＳＤＲＡＭ）、低パワーバージョン（ＬＰＤＤＲ，ＬＰＤＤＲ２等）ＳＤＲＡＭを含むダブルデータレート（ＤＤＲ，ＤＤＲ２，ＤＤＲ３等）ＳＤＲＡＭなどがある。このメモリシステムはパワーＯＦＦではなくパワーＯＮのときにデータを保持する揮発性であるが、不揮発性メモリ（例えば、フラッシュメモリ、ディスクドライブなどの磁気記憶デバイス、コンパクトディスク（ＣＤ）などの光記憶デバイス、デジタルビデオディスク（ＤＶＤ）、ブルーレイドライブ）と比較したとき、低い待ち時間アクセスを提供する。
【０００３】
メモリシステムを形成するメモリデバイスは、メモリデバイス固有のプロトコルに従いメモリを読み書きする低レベルインタフェースを有する。メモリオペレーションを生成するソースは、バス、ポイント・ツー・ポイントパケットインタフェース等の高レベルインタフェースを経由して通信するのが典型的である。ソースは、プロセッサ、入出力（Ｉ／Ｏ）デバイスなどの周辺デバイス、オーディオ及びビデオデバイスなどである。一般的に、メモリオペレーションは、メモリからデバイスへデータを変換させるメモリ読み出しオペレーションと、ソースからメモリへデータを変換させるメモリ書込みオペレーションとを含む。メモリ読み出しオペレーションは、ここではより簡潔に読み出しオペレーション若しくは読み出しと呼び、同様にしてメモリ書込みオペレーションは書込みオペレーション若しくは書込みと呼ぶことにする。
【０００４】
したがって、メモリコントローラは高レベルインタフェースからメモリオペレーションを受信し、受信したオペレーションを実行するメモリデバイスを制御することを含むのが典型的である。メモリコントローラもまた、メモリオペレーションをキャプチャーするキューを含み、そしてパフォーマンスを向上させる回路を含むことができる。例えば、あるメモリコントローラは、異なるアドレスに影響を及ぼす初期の段階のメモリ書込みオペレーションの前にメモリ読み出しオペレーションをスケジューリングする。
【０００５】
メモリコントローラは、ソースによって出される異なるタイプのトラフィックに対する可視性を制限してきた。したがって、メモリコントローラは細かな粒度レベルではトラフィックを分離することができていなかった。その結果、メモリコントローラにおけるパフォーマンスの改善は、書込みオペレーション前の読み出しオペレーションをスケジューリングするなどのより粗いメカニズムに制限されてきたのである。
【発明の概要】
【課題を解決するための手段】
【０００６】
一実施例において、メモリコントローラはメモリ要求を受け入れるために多重ポートを組み込む。各ポートは、リアルタイム（ＲＴ）、グラフィックス、及び非リアルタイム（ＮＲＴ）などの特定タイプのトラフィックに関連する。各タイプのトラフィックは異なる要求及び振る舞いを有する。異なるポートを提供することによって、メモリコントローラは異なるタイプの要求を並行して露呈するかもしれないし、トラフィック最小に基づくインテリジェントなスケジュール決定をすることが可能である。
【０００７】
幾つかの実施例において、異なるポートはそれぞれの通信プロトコルを用いる。例えば、中央処理装置（ＣＰＵ）インタフェースはプロセッサのために使用され、グラフィックインタフェースはグラフィックデバイスのために使用される。或る実施例の場合、サードパーティは１以上のインタフェースを開発し、そのインタフェースを用いて通信するデバイスを売ることができる。メモリコントローラにおいて異なるポートがサポートされるので、メモリコントローラとサードパーティデバイスの両方を合体するシステムは、媒介回路がサードパーティデバイスとメモリコントローラ間のプロトコルを変換することを回避する。システムは簡略化且つ廉価であるとともに、媒介回路によって加えられるであろう待ち時間を避けるものとなる。
【０００８】
或る実施例において、サービスの質（ＱｏＳ）のパラメータは、メモリコントローラに対するメモリオペレーションにより転送される。メモリコントローラが関連ＱｏＳレベルを用いて、ポートからメモリチャンネルへのメモリ要求をスケジューリングする。各トラフィックタイプは各ＱｏＳレベル詳細を有し、そしてメモリコントローラは、スケジューリングに関する各ＱｏＳタイプ間のアービター（仲裁）を行なうように構成される。さらに、バンド幅共有コントローラはこのスケジューリングに影響を与える。
後述する詳細な説明は添付の図面を引用する。図面の簡単な説明は以下のとおりである。
【図面の簡単な説明】
【０００９】
【図１】図１は、メモリコントローラを含むシステムの一実施例のブロック図である。
【図２】図２は、ＲＴ（リアルタイム）及びＮＲＴ（非リアルタイム）クラスのトラフィックのために定義されるＱｏＳレベルの一実施例のブロック図である。
【図３】図３は、図１に示すメモリコントローラの一実施例のブロック図である。
【図４】図４は、図３に示すエージェントインタフェースの一実施例に含まれ得るポートインタフェースの一実施例のブロック図である。
【図５】図５は、図３に示すエージェントインタフェースの一実施例に含まれ得るメモリチャンネルインタフェースユニットの一実施例のブロック図である。
【図６】図６は、図５に示すＱｏＳアービターのオペレーションを例示したフローチャートである。
【図７】図７は、図３に示すメモリチャンネルに例示されたプリ・ソーティング・キュー（ＰＳＱ）の一実施例のブロック図である。
【図８】図８は、図７に示すエンキューコントローラユニットのオペレーションを例示したフローチャートである。
【図９】図９は、図７に示すスケジューラーの一実施例としてのオペレーションを例示したフローチャートであり、スケジュールされるであろう読み出し及び書込み間を選択する。
【図１０】図１０は、図７に示すスケジューラーのオペレーションを例示したフローチャートであり、スケジュールされるであろう読み出し及び書込み間を選択する。
【図１１】図１１は、図７に示すスケジューラーのオペレーションを例示したテーブルであり、スケジュールされるであろう読み出しを選択する。
【図１２】図１２は、図３に示すメモリインタフェースユニット（ＭＩＦ）の一実施例のブロック図である。
【図１３】図１３は、図１２に示すＭＩＦエンキュー・コントロール・ユニットのオペレーションを例示したフローチャートである。
【図１４】図１４は、図１２に示すアクティベート・スケジューラーのオペレーションを例示したフローチャートである。
【図１５】図１５は、図１２に示すカラム・アドレス・ストロボ（ＣＡＳ）のオペレーションを例示したフローチャートである。
【図１６】図１６は、図１２に示す最終スケジューラーのオペレーションを例示したテーブルである。
【図１７】図１７は、高レベルでキュー（待ち行列）し、様々なレベルでスケジューリングすることにおいて比較的重要なＱｏＳパラメータ及びメモリバンド幅の一実施例のブロック図である。
【図１８】図１８は、インバンドでＱｏｓのアップグレードをサポートするメモリコントローラ特徴の一実施例のブロック図である。
【図１９】図１９は、インバンドでＱｏｓをアップグレードするオペレーションを例示したフローチャートである。
【図２０】図２０は、サイドバンドでＱｏｓをアップグレードするインタフェースの一実施例のブロック図である。
【図２１】図２１は、オペレーションの老化によりＱｏｓをアップグレードするオペレーションを例示したフローチャートである。
【図２２】図２２は、図１に示す集積回路を含むシステムの一実施例のブロック図である。
【発明を実施するための形態】
【００１０】
本発明は様々な修正及び代替態様を受け入れる余地がある一方で、それらの特定の実施例は図面で例示する方法によって示され、詳細が記述されるであろう。しかしながら、図面及び詳細な説明は、ここでは本願発明を開示された特別な態様に限定する意図はなく、これとは反対に、あらゆる修正、均等、及び代替が添付の図面により定められる本願の精神及び範囲内に収まるようにカバーされることを理解されたい。ここで用いている見出しは記載を組織化する目的であり、記載の範囲を制限するために用いている意味ではない。本願全体を通して用いられている「できる(may)」は、義務の意味（すなわち、しなければならない(mustの意味)というよりは、許可の意味（すなわち、可能性を持つ意味）である。同様に、「含む(include, including, includes)」の語は、含むの意味であり、これに制限されることではないことを理解されたい。
【００１１】
様々な装置、回路、又は他の構成要素が、１以上のタスクを実行するよう「構成される」ものとして記載され得る。そのような意味で、「構成される(configured to)」は、オペレーション中のタスクを実行する「回路をもつ」一般的意味の構成である広い規定である。その結果、装置／回路／構成要素は、現時点では存在しないときでさえ当該タスクを実行するよう構成することができる。一般的に、「構成される」に対応する構成を形成する回路はハードウェア回路を含む。同様に、様々な装置／回路／構成要素は、記載の簡便さのためにタスクを実行するものとして記載されている。このような記載は「構成される」を含むものとして解釈されるべきである。１以上のタスクを実行するよう構成された装置／回路／構成要素を規定することは、装置／回路／構成要素の解釈である合衆国法典３５編第１１２条第６パラグラフを行使しないよう明確に意図されている。
【００１２】
図１を参照すると、システム５の一実施例のブロック図が示されている。図１の実施例において、システム５は外部メモリ１２A−１２Ｂに接合された集積回路（ＩＣ）１０を含む。例示の実施例の場合、集積回路１０は中央処理装置（ＣＰＵ）ブロック１４を含み、ＣＰＵブロック１４は１以上のプロセッサ１６とレベル２（Ｌ２）キャッシュ１８を含む。別の実施例はＬ２キャッシュ１８を含まないか、付加的なレベルのキャッシュを含むの少なくとも何れかである。さらに、２以上のプロセッサ１６を含む実施例、及び１つだけのプロセッサ１６を含む実施例が検討される。集積回路１０は更に１以上の非リアルタイム（ＮＲＴ）周辺機器２０のセットと、１以上のリアルタイム（ＲＴ）周辺機器２２のセットを含む。例示の実施例の場合、ＲＴ周辺機器はイメージプロセッサ２４、１以上のディスプレイパイプ２６、及びポートアービター２８を含む。他の実施例はイメージプロセッサ２４、ディスプレイパイプ２６、及び／又は必要であれば任意の追加のリアルタイム周辺機器を含む。システム５内の１以上のカメラからイメージデータを受信するためにイメージプロセッサ２４と接合する。同様に、ディスプレイパイプ２６は、システム内の１以上のディスプレイを制御する１以上のディスプレイコントローラ（不図示）と接合する。例示の実施例の場合、ＣＰＵブロック１４は、ブリッジ／ダイレクト・メモリ・アクセス（ＤＭＡ）コントローラ３０と接合し、これは１以上の周辺デバイス３２及び／又は１以上の周辺インタフェースコントローラ３４に接合する。様々な実施例において、周辺デバイス３２及び周辺インタフェースコントローラ３４の数は、０から任意の所望の数まで変化する。図１に示したシステム５はＧ０ ３８Ａ及びＧ１ ３８Ｂなどの１以上のグラフィックコントローラを含むグラフィックユニットを更に含む。グラフィックユニット当りのグラフィックコントローラの数、及びグラフィックユニットの数は、他の実施例では変わることがある。図１に示すように、システム５は１以上のメモリ物理インタフェース回路（ＰＨＹ）４２Ａ−４２Ｂに接合するメモリコントローラ４０を含む。メモリ物理インタフェース回路（ＰＨＹ）４２Ａ−４２Ｂは、メモリ１２Ａ−１２Ｂと集積回路１０のピン上で通信するよう構成されている。また、メモリコントローラ４０は、一組のポート４４Ａ−４４Ｅを含む。ポート４４Ａ−４４Ｂのそれぞれは、第１のタイプのインタフェース（Ｉ/ｆａｃｅ １）経由でグラフィックコントローラ３８Ａ−３８Ｂのそれぞれと接合する。ＣＰＵブロック１４は、第２のタイプのインタフェース（Ｉ/ｆａｃｅ ２）経由でポート４４Ｃと接合する。ＮＲＴ（非リアルタイム）周辺機器２０及びＲＴ（リアルタイム）周辺機器２２は、ポート４４Ｄ−４４Ｅと第２のタイプのインタフェース経由でそれぞれ接合する。メモリコントローラ４０に含まれるポート数は、メモリコントローラの数であるので、他の実施例において変化し得る。メモリＰＨＹ４２Ａ−４２Ｂの数及び対応するメモリ１２Ａ−１２Ｂは、他の実施例においては１又は２以上である。
【００１３】
一実施例において、各ポート４４Ａ−４４Ｅは、特定のタイプのトラフィックと関連する。例えば、トラフィックタイプはＲＴトラフィック、ＮＲＴトラフィック、及びグラフィックトラフィックを含む。別の実施例では、上述したトラフィックタイプのサブセットに加えて又は代わりに他のトラフィックを含む。トラフィックの各タイプは別個に特徴付けられ（例えば、要求及び振る舞いという面で）、そしてメモリコントローラがトラフィックタイプを別個に取り扱ってより高いパフォーマンスをこの特徴に基づき提供し得る。例えば、ＲＴトラフィックは、特定の時間量内での各メモリオペレーションサービスを要求する。オペレーションの待ち時間が特定の時間量を超える場合、ＲＴ周辺機器においてエラーのあるオペレーションが生じ得る。例えば、イメージプロセッサ２６内のイメージデータが失われたり、ディスプレイパイプ２６を連結したディスプレイ上の表示イメージが可視上歪められてしまったりする。ＲＴトラフィックは、例えば、等時間間隔で生じるものとして特徴付けられる。一方、グラフィックトラフィックは、比較的高いバンド幅であり、待ち時間に敏感ではない。プロセッサ１６などからのＮＲＴトラフィックは、パフォーマンスの理由からもっと待ち時間に敏感であるが、高い待ち時間を耐え抜いている。つまり、ＮＲＴトラフィックは、ＮＲＴトラフィックを生成するデバイスにおいてエラーのあるオペレーションを生じさせることなく任意の待ち時間でサービスされるのが通常である。同様に、少ない待ち時間で敏感ではあるが、高いバンド幅のグラフィックトラフィックは任意の待ち時間でサービスされるのが一般的である。他のＮＲＴトラフィックは、音声トラフィックを含み、音声トラフィックは比較的低いバンド幅であって、一般的には合理的な待ち時間でサービスされる。また、殆どの周辺機器トラフィックはＮＲＴである（例えば、磁気、光又は固体状態の記憶媒体などのストレージデバイスに対するトラフィックである）。
【００１４】
異なるトラフィックタイプに関連するポート４４Ａ−４４Ｅを提供することによって、メモリコントローラ４０は異なるトラフィックタイプに並行して露呈される。その結果、メモリコントローラ４０は、他のよりも先だってどのメモリオペレーションがトラフィックタイプに基づきサービスされるかについての良好な決定をすることができる。幾つかの実施例において、ＲＴ又はＮＲＴトラフィックの一方に排他的に各ポートを占有することができる。他の実施例では、そのポートは特別なトラフィックタイプに関連するが、他のトラフィックタイプはポートにサポートされる。一実施例において、グラフィックトラフィックはＮＲＴトラフィックとみなされるが、グラフィックトラフィックに対する可視化を他のＮＲＴトラフィックから離すことは、他のＮＲＴソース及びＲＴソース間でバランスするバンド幅のために有益である。同様に、プロセッサトラフィックを他のＮＲＴソースから離すことは、バンド幅バランスにおいて有益である。例示の実施例の場合、ＲＴポート４４ＥはＲＴトラフィックに関連し、そして残りのポート４４Ａ−４４ＤはＮＲＴトラフィックに関連する。
【００１５】
一般的に、ポートは、１以上のソースと通信するメモリコントローラ４０上の通信ポイントである。或るケースにおいては、ポートはソース専用となる（例えば、ポート４４Ａ−４４Ｂは、グラフィックコントローラ３８Ａ−３８Ｂそれぞれに専用となる。）他のケースでは、多数のソース間でポートが共有される（例えば、プロセッサ１６はＣＰＵポート４４Ｃを共有し、ＮＲＴ周辺機器２０はＮＲＴポート４４Ｄを共有し、ディスプレイパイプ２６及びイメージプロセッサ２４などのＲＴ周辺機器はＲＴポート４４Ｅを共有する。）１以上のソースと通信する単一インタフェースにポートを連結する。その結果、ソースがインタフェースを共有するとき、インタフェースのソース側にアービターがあり、ソース間で選択する。例えば、Ｌ２キャッシュ１８はメモリコントローラ４０に対するＣＰＵポート４４Ｃのためのアービターとして機能する。類似のポートアービター（不図示）は、ＮＲＴポート４４Ｄのためのアービターである。ポート上の単一ソース又はポート上のソースの組み合わせは、エージェントと呼ばれる。
【００１６】
各ポート４４Ａ−４４Ｂは、その各エージェントと通信するためにインタフェースと接合されている。インタフェースは、任意のタイプの通信媒体（例えば、バス、ポイント・ツー・ポイント相互接続など）であり、そして任意のプロトコルを実行する。幾つかの実施例において、ポート４４Ａ−４４Ｂすべては、同一のインタフェース及びプロトコルをインプリメント（実装）することができる。他の実施例において、異なるポートがそれぞれのインタフェース及び／又はプロトコルをインプリメントする。例えば、図１に示す実施例は、あるタイプのインタフェース／プロトコルを用いたグラフィックコントローラ３８Ａ−３８Ｂ及びＣＰＵブロック１４と、そして別のタイプのインタフェース／プロトコルを用いたＮＲＴ周辺機器２０及びＲＴ周辺機器２２とを含む。インタフェースは信号定義及びインタフェースの電気特性を参照し、プロトコルはインタフェース上の通信の論理的な定義（例えば、必要に応じて、コマンド、命令ルール、コヒーレンスサポートなど）である。様々なポート４４Ａ−４４Ｂで１以上のインタフェースをサポートすることは、ソース／エージェントによってサポートされた１つのインタフェース及びメモリコントローラ４０によってサポートされたインタフェースから変換される必要を削除する。それは幾つかの実施例においてパフォーマンスを改善することができる。さらに、集積回路１０の幾つかの実施例は、知的財産（ＩＰ）として産業界で呼ばれているパッケージされたユニットとしてサードパーティから購入される。ＩＰは「ハード」（この場合は、それは配置される回路のネットリストとして特定され、１つのブロックとしてＩＣ上で配置される）、又は「ソフト」（この場合は、それは、集積回路１０に包含される他のブロックと共に合成され得る統合ブロックとして特定される）である。ソフトとハードのＩＰ両方が特定のインタフェース及びプロトコルを含み、それは一般的には集積回路１０の設計者によって変更されることができないものである（少なくともＩＰを所有するサードパーティへの料金の支払いなくしてはできない）。したがって、複数のインタフェース／プロトコルをサポートすることは、サードパーティＩＰの包含を容易にすることを許可するものである。
【００１７】
一実施例において、各ソースは、当該ソースによって送信される各メモリオペレーションに対するサービスの質（ＱｏＳ）パラメータを割り当てる。ＱｏＳパラメータはメモリオペレーションに関する要求されたレベルのサービスを識別する。高いレベルのサービスを要求するＱｏＳパラメータ値によるメモリオペレーションは、低いレベルのサービスを要求するメモリオペレーションを超える好み(preference)を与える。例えば、図１のポート４４Ａ−４４Ｂに対するインタフェースのそれぞれは、コマンド（Ｃｍｄ）、フロー識別子（ＦＩＤ）、及びＱｏｓパラメータ（Ｑｏｓ）を含んでいることが示されている。コマンドはメモリオペレーション（例えば、読み出し又は書込み）を識別する。読み出しコマンド／メモリオペレーションはメモリ１２Ａ−１２Ｂからメモリへのデータ転送を生じさせるが、これに対して書込みコマンド／メモリオペレーションはソースからメモリ１２Ａ−１２Ｂへのデータ転送を生じさせる。また、コマンドはメモリコントローラ４０をプログラムするコマンドを含む。例えば、どのアドレス範囲がどのメモリチャンネル、バンド幅共有パラメータなどにマッピングされるのか、すべてがメモリコントローラ４０内でプログラム可能なのかである。ＦＩＤはメモリオペレーションのフローの一部としてメモリオペレーションを識別する。メモリオペレーションのフローは一般的に関連するが、異なるフローからのメモリオペレーションは、同一ソースからであっても、関連しない。ＦＩＤの部分（例えば、ソースフィールド）はソースを識別して、ＦＩＤのリマインダーはフロー（例えば、フローフィールド）を識別する。その結果、ＦＩＤはトランザクションＩＤに類似し、或るソースはＦＩＤとしてのトランザクションＩＤを単純に送信する。このようなケースの場合、トランザクションＩＤのソースフィールドはＦＩＤのソースフィールドであり、トランザクションＩＤの（同一ソースからのトランザクション間でトランザクションを識別する）シーケンスナンバーは、ＦＩＤのフローフィールドである。しかしながら、フローとしてトランザクションをグループ化するソースは、ＦＩＤをそれぞれに使用することができる。或いはまた、フローはソースフィールドに相互に関係する（例えば、同一ソースからのオペレーションは同一フローであり、そして異なるソースからのオペレーションは異なるフローの一部である。）フローのトランザクションを識別する能力は後述する様々な方法で用いられている（例えば、ＱｏＳアップグレーディング、再順序付けなど）。
【００１８】
したがって、所与のソースはＱｏＳパラメータを使用するように構成されていて、どのメモリオペレーションがそのソースにとってより重要であるか（及び同一ソースからの他のメモリオペレーションの前にサービスされるべきであるか）を識別する。特に、ソースからのアドレス送信に関する順序づけられていないデータ送信をサポートするソースに関して適用する。さらにＱｏＳパラメータは、同一のポート上及び／又は異なるポート上の異なるソースよりも高いレベルのサービスを要求するソースを許可する。
【００１９】
或る実施例において、異なるトラフィックタイプがＱｏＳパラメータの異なる定義を有する。つまり、異なるタイプが異なるセットのＱｏＳパラメータを有している。所与のＱｏＳパラメータ値の意味は、導き出されるＱｏＳパラメータのセットに影響される。例えば、ＲＴＱｏＳパラメータのセットが定義され、ＮＲＴ  ＱｏＳパラメータのセットが定義される。したがって、ＲＴ  ＱｏＳパラメータはＲＴ  ＱｏＳパラメータセット内の意味で割り当てられ、ＮＲＴ  ＱｏＳパラメータはＮＲＴ  ＱｏＳパラメータセット内の意味で割り当てられる。他の実施例が全ての部分又はあらゆるトラフィックタイプ間の同一ＱｏＳパラメータセットをインプリメントする。
【００２０】
メモリコントローラ４０は各ポート４４Ａ−４４Ｅで受信されたＱｏＳパラメータを処理するよう構成されており、そして関連ＱｏＳパラメータを使用して、そのポートからの他のメモリオペレーションに関連したポートと、他のポートで受信した他のメモリオペレーションに関連したポートとで受信した複数のモリオペレーションをスケジューリングする。詳しくいうと、メモリコントローラ４０は、ＱｏＳパラメータ（例えば、ＲＴ  ＱｏＳパラメータ及びＮＲＴ  ＱｏＳパラメータ）の異なるセットから導き出されるＱｏＳパラメータを比較するよう構成され、これらのＱｏＳパラメータに基づきスケジューリング決定をするよう構成されている。
【００２１】
よって、ＱｏＳパラメータは、メモリオペレーションにより送信される値であり、要求されるＱｏＳレベルを識別するためにメモリコントローラで使用される。ＱｏＳレベルは他のレベルに関係し、どのメモリオペレーションが低いＱｏＳレベルを有する他のものよりも前に選択されることが好ましいかを特定する。したがって、他の要因によってプライオリティをバランスし得るのだけれども、異なるセットに定義されたＱｏＳレベルを考慮するために、メモリコントローラによって解釈された後で、ＱｏＳレベルはプライオリティのように機能する。
【００２２】
幾つかの実施例の場合、メモリコントローラ４０はペンディング・メモリオペレーションのＱｏＳレベルをアップグレードするよう構成される。様々なアップグレードメカニズムがサポートされている。例えば、メモリコントローラ４０は、高次のＱｏＳレベルを特定するＱｏＳパラメータを有する同じフローから別のメモリオペレーションを受信することに応じて、フローのペンディング・メモリオペレーションに関するＱｏＳレベルをアップグレードするよう構成されている。このＱｏＳアップグレードの態様は、インバンドアップグレードと呼ばれている。なぜなら、普通のメモリオペレーション伝送を用いて送信されたＱｏＳパラメータは、同一フローにおけるメモリオペレーションに関して黙示のアップグレード要求として作用することもあるからである。メモリコントローラ４０は、同じポート又はソースであるが、新たに受信したメモリオペレーションが高次のＱｏＳレベルを特定するので、同じフローではないものからのペンディング・メモリオペレーションをプッシュするよう構成されている。別の例として、メモリコントローラ４０は、１以上のエージェントからサイドバンド・インタフェースに接合されているよう構成され、サイドバンド・インタフェース上のアップグレード要求を受信することに応じたＱｏＳレベルをアップグレードする。別の例においては、メモリコントローラ４０は、ペンディング・メモリオペレーションの相対年次をトラックするよう構成される。メモリコントローラ４０は、或る年次で、経年メモリオペレーションのＱｏＳレベルをアップグレードするよう構成される。アップグレードが生じる年次は、経年メモリオペレーションの最新ＱｏＳパラメータに依存する。
【００２３】
メモリコントローラ４０は、ポートで受信した各メモリオペレーションがアドレスするメモリチャンネルを決定するように、そしてメモリオペレーションを対応チャンネルのメモリ１２Ａ−１２Ｂに送信するよう構成される。チャンネル数及びチャンネルへのアドレスマッピングは、様々な実施例で変化するとともに、メモリコントローラでプログラム可能である。メモリコントローラは、同じチャンネルにマップされたメモリオペレーションのＱｏＳパラメータを用いて、チャンネル内に送信されたメモリオペレーションの順序を決定する。つまり、メモリコントローラはポートで受信した本来の順序からメモリオペレーションを再順序づけする。さらに、チャンネル内の処理中、メモリオペレーションは１以上のポイントで再び順序づけされる。再順序づけの各レベルで、ＱｏＳパラメータはメモリオペレーションパラメータに配置された強調の程度は減少し、そしてメモリバンド幅の効率性に影響を及ぼす要因が増加する。メモリオペレーションがメモリチャンネルパイプラインの終わりに行き着くと、そのオペレーションはＱｏＳレベル及びメモリバンド幅効率性の組み合わせによって順序づけられる。高いパフォーマンスが幾つかの実施例で実現される。
【００２４】
プロセッサ１６は、どんな命令セットアーキテクチャもインプリメントし、その命令セットアーキテクチャに定義されている命令を実行（演算）する。プロセッサ１６はスケーラー、スーパー・スケーラ−、パイプライン、スーパー・パイプライン、順序外、順序どおり、推論、非推論等又はそれらの組み合わせを含む任意のマイクロ・アーキテクチャを用いる。プロセッサ１６は、回路を含み、そしてマイクロコーディング  テクニックを選択的にインプリメントする。プロセッサ１６は１以上のレベル１  キャッシュを含み、そしてその結果、キャッシュ１８はＬ２キャッシュである。他の実施例では、プロセッサ１６内のマルチキャッシュレベルを含む。キャッシュ１８は階層的に次のレベルに下降する。キャッシュ１８は任意のサイズ及びコンフィグレーション（セット関連、ダイレクトマッピングなど）を適用する。
【００２５】
グラフィックコントロール３８Ａ−３８Ｂは、グラフィック処理回路である。一般的に、グラフィックコントロール３８Ａ−３８Ｂはフレームバッファに表示されるようオブジェクトをレンダーする。グラフィックコントロール３８Ａ−３８Ｂは、一部又は全てのグラフィックオペレーションを実行するグラフィックソフトウェア、又は或るグラフィックオペレーションのハードウェア加速の少なくともいずれかを演算するグラフィックプロセッサを含む。ハードウェア加速の量及びソフトウェアインプリメンテーションは、各実施例で変化する。
【００２６】
ＮＲＴ周辺機器２０は、非リアルタイム周辺機器を含み、そのパフォーマンス及び／又はバンド幅の理由から、メモリ１２Ａ−１２Ｂへの独立したアクセスを提供する。つまり、ＮＲＴ周辺機器２０によるアクセスは、ＣＰＵブロック１４とは独立し、ＣＰＵブロックメモリオペレーションとは並行して進む。周辺機器３４などの他の周辺機器及び／又は周辺インタフェースコントロール３４によって制御された周辺インタフェースと接合する周辺機器も非リアルタイム周辺機器であるが、独立したメモリアクセスを要求していない。ＮＲＴ周辺機器２０の様々な実施例は、ビデオエンコーダ及びデコーダ、スケーラー(scaler)/ローテイター(rotator)回路、画像の圧縮/復元回路などを含む。
【００２７】
上述したように、ＲＴ周辺機器２２はイメージプロセッサ２４及びディスプレイパイプ２６を含む。ディスプレイパイプ２６は１以上のフレームをフェッチし、フレームをブレンドし、ディスプレイイメージを形成する回路を含む。ディスプレイパイプ２６は１以上のビデオパイプラインを更に含む。ディスプレイパイプ２６の結果は、ディスプレイスクリーン上のディスプレイスクリーンに表示されるべきピクセルストリームである。ディスプレイスクリーン上のディスプレイに関するディスプレイコントローラにピクセル値を送信する。イメージプロセッサ２４はカメラデータを受信し、メモリに記憶されるイメージにデータを処理する。
【００２８】
ブリッジ/ＤＭＡコントローラ３０は周辺機器３２及びメモリ空間に対する周辺インタフェースコントローラ３４にブリッジする回路を含む。例示の実施例の場合、ブリッジ/ＤＭＡコントローラ３０は、ブロック１４を介した、周辺インタフェースコントローラからＣＰＵメモリコントローラ４０へのメモリオペレーションをブリッジする。また、ＣＰＵブロック１４は、ブリッジされたメモリオペレーション群、及びプロセッサ１６/Ｌ２キャッシュ１８からのメモリオペレーション群間のコヒーレンスを保持する。Ｌ２キャッシュ１８は、ＣＰＵインタフェース上で送信されるプロセッサ１６からＣＰＵポート４４Ｃまでのメモリオペレーションによりブリッジされたメモリオペレーションを仲介する。また、ブリッジ/ＤＭＡコントローラ３０は、周辺機器３２及び周辺インタフェースコントローラ３４のためにＤＭＡオペレーションを提供し、メモリから及びメモリへデータブロックを転送する。詳細にいうと、ＤＭＡコントローラは、周辺機器３２及び周辺インタフェースコントローラ３４のために、メモリコントローラ４０を介して、メモリ１２Ａ−１２Ｂから及びメモリ１２Ａ−１２Ｂへの転送を実行するよう構成されている。ＤＭＡコントローラは、プロセッサ１６によってプログラム化され、ＤＭＡコントローラは、オペレーションを実行する。例えば、ＤＭＡコントローラは、記述子を介してプログラム可能である。この記述子はＤＭＡ変換子（例えば、送信元アドレス及び宛先アドレス、サイズなど）を記述するメモリ１２Ａ−１２Ｂに記憶されたデータ構造である。或いは又、ＤＭＡコントローラはＤＭＡコントローラ（不図示）内のレジスタを介してプログラム化が可能である。
【００２９】
周辺機器３２は、所望の入力/出力デバイス又は集積回路１０に含まれる他のハードウェアデバイスを含む。例えば、周辺機器３２は、イーサネット（登録商標）ＭＡＣ（メディアアクセスコントローラ）又は無線フィデリティ（ＷｉＦｉ）などの１以上のネットワークＭＡＣといったネットワーク周辺機器を含む。様々なオーディオ処理デバイスを含むオーディオユニットが周辺機器３２に含まれる。１以上のデジタル信号プロセッサが周辺機器３２に含まれる。周辺機器３２は、タイマー、ｏｎチップ  シークレットメモリ、暗号エンジンやこれらの組み合わせなど他の任意の機能を含む。
【００３０】
周辺インタフェースコントローラ３４は、任意のタイプの周辺インタフェースに関する任意のコントローラを含む。例えば、周辺インタフェースコントローラは、ＵＳＢコントローラ、周辺コンポーネント相互接続高速（ＰＣＩｅ）コントローラ、フラッシュメモリインタフェース、汎用入出力（Ｉ/Ｏ）ピンなどの様々なインタフェースコントローラを含む。
【００３１】
メモリ１２Ａ−１２Ｂは、ダイナミック・ランダムアクセスメモリ（ＤＲＡＭ）、同期ＤＲＡＭ（ＳＤＲＡＭ）、ダブルデータレート（ＤＤＲ，ＦＤＤＲ２，ＤＤＲ３など）、（ｍＤＤＲ３などの携帯バージョンのＳＤＲＡＭ、ＬＰＤＤＲ２などの低パワーバージョンのＳＤＲＡＭの少なくともいずれかを含む）ＳＤＲＭ、ＲＡＭＢＵＳ ＤＲＡＭ（ＲＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）などの任意のタイプのメモリである。１以上のメモリデバイスがメモリモジュールを形成する回路基板上で接合される。ここで、メモリモジュールとは、単一インライン・メモリモジュール（ＳＩＭＭ）、デュアルインライン・メモリモジュール（ＤＩＭＭ）などである。あるいはまた、デバイスはチップｏｎチップ構成、パッケージｏｎパッケージ構成、又はマルチチップモジュール構成の集積回路１０によりマウントされる。
【００３２】
メモリＰＨＹ４２Ａ−４２Ｂは、メモリ１２Ａ−１２Ｂに対して低レベル周辺インタフェースを扱う。例えば、メモリＰＨＹ４２Ａ−４２Ｂは、同期ＤＲＡＭメモリなどに正確なクロッキング（clocking）用の信号タイミングに責任を負う。一実施例において、メモリＰＨＹ４２Ａ−４２Ｂは、集積回路１０内に供給されるクロックをロックするよう構成され、そしてメモリ１２により用いられるクロックを生成するよう構成される。
【００３３】
他の実施例は、図１で示すコンポーネント及び／又は他のコンポーネントのサブセット又はスーパーセットを含むコンポーネントの組み合わせを含むことに留意されたい。所与のコンポーネントの一実例が図１に示される一方で、他の実施例は所与のコンポーネントの１以上の実例を含む。同様に、発明の詳細な説明の全体を通して、所与のコンポーネントの１以上の実例は、たとえ１つしか示されていないとしても、１つの実例を含む実施例を含み、複数の実例が示される場合にも用いられる。
【００３４】
メモリコントローラ４０の他の実施例が多重ポートをインプリメントしないことに留意されたい。しかし、それはＱｏＳパラメータをインプリメントする。各ＱｏＳパラメータ／レベルは、ＮＲＴ及びＲＴ、並びにＱｏＳアップグレーディングなどの異なるトラフィックタイプ又はクラスのそれぞれに存在する。
【００３５】
次の図２を参照すると、テーブル５０及び５２の組が、ＲＴ ＱｏＳレベルセット及びＮＲＴ ＱｏＳレベルセットのそれぞれの定義を示している。他の実施例は追加又は代替となるレベルを含み、そして他の実施例は図示したレベルのサブセットで組み合わせた追加のレベルを含む。図２においてテーブル５０及び５２の隣に存在する下方を指し示す矢印によって描画されているように、テーブルはプライオリティが高くなる集合内のＱｏｓレベルを示している。つまり、リアルタイム緑（ＲＴＧ）Ｑｏｓレベルは再下位のプライオリティＲＴＱｏｓレベルであり、リアルタイム黄（ＲＴＹ）Ｑｏｓレベルは中間プライオリティＲＴＱｏｓレベルであり、リアルタイム赤（ＲＴＲ）Ｑｏｓレベルは再上位のプライオリティＲＴＱｏｓレベルである。同様に、最大努力（ＢＥＦ）Ｑｏｓレベルは再下位のプライオリティＲＴＱｏｓレベルであり、低待ち時間（ＬＬＴ）Ｑｏｓレベルは再上位のプライオリティＲＴＱｏｓレベルである。図２において互いに隣合うＲＴ ＱｏＳレベル及びＮＲＴ ＱｏＳレベルの例は、ＮＲＴ ＱｏＳレベルに関するＲＴ ＱｏＳレベルの相対プライオリティを示唆することを意図していない。むしろ、メモリコントローラ４０は、そのような相対プライオリティを、様々なタイプ及びポートにわたってメモリコントローラ４０が経験するトラフィックを示唆する他の要因に基づき決定する。
【００３６】
ＲＴＧ、ＲＴＹ、及びＲＴＲのＱｏｓレベルは、ＲＴソースからの緊急相対レベルを反映する。つまり、エラーを含んだオペレーションの減少を回避するため、ＲＴソースによってデータが必要とされる前の時間量として、各メモリオペレーションに割り当てられたＱｏＳレベルは高い緊急性を示唆するために増加する。高プライオリティによるより高い緊急性をもつオペレーションを扱うことによって、メモリコントローラ４０はデータをＲＴソースにより迅速に戻し、その結果、ＲＴソースの正確なオペレーションを手助けする。
【００３７】
例えば、ディスプレイパイプ２６は、ディスプレイの仮想ブランク間隔で表示されるはずの次のフレームのために、メモリ１２Ａ−１２Ｂからフレームデータを読み出すことを開始する。このフレームは実際には、仮想ブランク間隔の終了まで表示されず、ディスプレイパイプ２６はこの時間期間中、ＲＴＧレベルを用いる。フレームが表示されることを開始するとき（すなわち、ステップコントローラがディスプレイパイプ２６出力からフレームピクセルの読み出しを始めるとき）、ディスプレイパイプ２６は、フレームデータ読み出しオペレーションのＱｏＳレベルを、ＲＴＹレベルのメモリに生じさせる。例えば、表示されるカレントピクセルの前に読み出されるフレームデータの量が第１の閾値より下回って減少するならば、ディスプレイパイプ２６はメモリオペレーションのＱｏＳレベルをＲＴＲにする。
【００３８】
ＢＥＦ  ＮＲＴ  ＱｏＳレベルは、他のフローのデータの必要性があったならば、メモリコントローラ４０ができるだけ早くデータを戻す要求である。他方、ＬＬＴ  ＮＲＴ  Ｑｏｓレベルは、低い待ち時間データの要求である。ＬＬＴ  ＱｏｓレベルをもつＮＲＴメモリオペレーションは、他のメモリトランザクションのプライオリティという観点で、（少なくとも幾つかのケースにおいて）ＢＥＦ  Ｑｏｓレベルを持つものよりも、より接近して扱われる。他のケースでは、ＢＥＦ及びＬＬＴＱｏＳレベルはメモリコントローラ４０によって同一に扱われる。
【００３９】
次の図３を参照すると、メモリコントローラ４０の一実施例のブロック図が示されている。図３の実施例の場合、メモリコントローラ４０はエージェントインタフェースユニット（ＡＩＵ）、及び１以上のメモリチャンネルユニット５６Ａ−５６Ｂを含む。所与の実施例に含まれる各メモリチャンネルのために１つのメモリチャンネルユニット５６Ａ−５６Ｂがあるかもしれない。そして他の実施例は第１のチャンネル又は２チャンネル以上を含む。図３に示すように、ＡＩＵ５４はマルチポートインタフェースユニット５８Ａ−５８Ｅを含む。より詳細には、メモリコントローラ４０上の各ポート４４Ａ−４４Ｅに関するポートインタフェースユニット５８Ａ−５８Ｅがある。ＡＩＵ５４は、さらにメモリチャンネルインタフェースユニット（ＭＣＩＵ）６０Ａ−６０Ｂを含む（各メモリチャンネルユニット５６Ａ−５６Ｂについて１つ）。ＡＩＵ５４は更に１以上のバンド幅共有レジスタ６２を含み、それはどのようにしてバンド幅がポート間で共有されるかを示唆するためにプログラム化される。ポートインタフェースユニット５８Ａ−５８Ｅは、メモリオペレーションを受信し、対応のポート上でのデータ及び応答を送受信するために接合され、ＭＣＩＵ６０Ａ−６０Ｂに接合されてもいる。ＭＣＩＵ６０Ａ−６０Ｂは更に、バンド幅共有レジスタ６２及び対応のＭＣＵ５６Ａ−５６Ｂに連結される。図３に示すとおり、ＭＣＵ５６Ａ−５６Ｂは、プリソーティング・キュー（ＰＳＱ）６４及びメモリインタフェース回路（ＭＩＦ）６６をそれぞれ含む。ＰＳＱ６４は、対応のＭＣＩＵ６０Ａ−６０Ｂに、そして同じＭＣＵ５６Ａ−５６Ｂ内のＭＩＦ６６に接合される。各ＭＣＵ５６Ａ−５６Ｂ内のＭＩＦ６６は対応のメモリＰＨＹ４２Ａ−４２Ｂに接合される。
【００４０】
ＡＩＵ５４は、ポート４４Ａ−４４Ｅに関するメモリオペレーションを受信し、これらのメモリオペレーションによってアドレスされるチャンネルにそのメモリオペレーションをスイッチするよう構成される。このとき、同じＭＣＵ５６Ａ−５６Ｂに対する別のメモリオペレーションの前に、どのメモリオペレーションがＭＣＵ５６Ａ−５６Ｂの一つに送信されるかを特定することのファクターとして、メモリオペレーションのＱｏＳパラメータを用いる。他のファクターにはバンド幅共有コントローラを含み、ポート間でのメモリチャンネルのバンド幅を分割する。
【００４１】
より詳細には、各ポートインタフェースユニット５８Ａ−５８Ｅが、対応するポート４４Ａ−４４Ｅからメモリオペレーションを受信するように構成され、どのメモリオペレーションにメモリチャンネルが向けられているかを決定するように構成されている。ポートインタフェースユニット５８Ａ−５８Ｅは対応するＭＣＩＵ６０Ａ−６０Ｂにそのメモリオペレーションを送信し、例示の実施例においては書込みとは別個に読出しを送信する。したがって、例えば、ポートインタフェースユニット５８Ａは、読出しオペレーション及び書込みオペレーションそれぞれに関するＭＣＩＵ６０ＡへのＲｄ0接続及びＷｒ0接続を有する。同様に、ポートインタフェースユニット５８ＡはＭＣＩＵ６０Ｂに対するＲｄ1接続及びＷｒ1接続を有する。他のポートインタフェースユニット５８Ｂ−５８Ｅは、ＭＣＩＵ６０Ａ−６０Ｂへの同様の接続を有する。また、ポートインタフェースユニット５８Ａ−５８ＢからＭＣＩＵ６０Ａ−６０Ｂへの読出しデータを送信するデータインタフェースもあり、これは、図３のＭＣＩＵ  ６０Ａのために点で描いた“Ｄ”インタフェースとして示されている。
【００４２】
ＭＣＩＵ６０Ａ−６０Ｂは、ポートインタフェースユニット５８Ａ−５８Ｅにより提供されるメモリオペレーションをキューして、メモリオペレーションの中からオペレーションを選択して仲裁し、対応するＭＣＵ５６Ａ−５６Ｂに送信するよう構成される。所与のメモリチャンネルでターゲットされたオペレーション間の仲裁は、他のメモリチャンネルでターゲットされたオペレーション間での仲裁とは独立している。
【００４３】
ＭＣＩＵ６０Ａ−６０Ｂはバンド幅共有レジスタ６２に接合され、それはチャンネル上のメモリバンド幅が所与のチャンネル内のメモリオペレーションにどのように割り当てられるかを示すようにプログラムされている。例えば、一実施例において、ＭＣＩＵ６０Ａ−６０Ｂは、高い優先度のトラフィック（例えば、ＲＴトラフィックにおけるＲＴＲ又はＲＴＹレベル）が存在しないとき、損失−重みづけラウンド・ロビンアルゴリズムを用いて、ポート間を選択する。ＲＴＲ又はＲＴＹトラフィックが存在するとき、ラウンド・ロビンメカニズムを使用してＲＴＲ/ＲＴＹトラフィックをもつポート間での選択をする。損失−重みづけラウンド・ロビンメカニズムにおける重みは、或るポートに対して他のものよりも比較的大きなバンド幅が割り当てられるようにプログラムされるものである。グラフィック及びＮＲＴポートよりもプロセッサトラフィックを好んで、例えば、グラフィックポートを他のポートより好んで重みを選択する。様々な実施例において任意のセットの重みが使用される。他の実施例は、他の方法でバンド幅割り当てを行う。例えば、総バンド幅のパーセンテージが用いられる。他の実施例では、選択される各ポートからかなり多くのオペレーションを制御するためにクレジットシステムが用いられる。しかしながら、一般的に、オペレーションはＱｏＳパラメータ及びバンド幅共有要求の両方に基づき選択されるものである。
【００４４】
ＭＣＵ５６Ａ−５６Ｂは、メモリチャンネルに送信されるキューからメモリオペレーションをスケジュールするよう構成される。ＭＣＵは読み出し及び書込みを別々にＰＳＱ６４にキューし、そして例えば、クレジットベースシステムを用いた読み出しと書込み間を仲裁するよう構成される。クレジットベースシステムにおいて、読み出しと書込みが或る数のクレジットに割り当てられる。書込みクレジット及び読み出しクレジットの数が等しくなる必要はない。スケジュールされた各メモリオペレーションはクレジットを消費する。書込みクレジット及び読み出しクレジットの両方がゼロよりも少なく減少し、且つ、スケジュールされる予定の未処理のトランザクションがあると、対応する割り当て数のクレジットによって両クレジットを増加させる。他の実施例は他のメカニズムを使用して、読み出しと書込み間を選択する。一実施例において、クレジットシステムは、（書込みキューが一杯になったことを測定するとともに）読み出しと書込み間で仲裁メカニズムの一部となる。つまり、書込みキューがもっと一杯になったとき、仲裁メカニズムの書込みの優先度が増加する。さらなる詳細は以下に述べる。
【００４５】
一実施例において、ＰＳＱ６４へのエントリーで、書込みオペレーションのＱｏＳパラメータを省略する。読出しオペレーションはＱｏＳパラメータを保持し、ＱｏＳパラメータはＰＳＱ６４からの読み出しスケジュールに影響を及ぼす。
【００４６】
一実施例において、ＭＣＵ５６Ａ−５６Ｂは、爆発的なオペレーション（クレジットを一気に消費する各オペレーション）においてメモリオペレーションをスケジュールする。その爆発がクレジットカウントをゼロに減少させる場合、爆発は完了することが許可され、クレジットカウントを負の数にまで減少させる。クレジットカウントが後に増加するとき、負のクレジットが考慮され、その結果、後に増加するクレジットの総数が、割り当てられたクレジット量よりも少なくなることがある。
【００４７】
スケジュール用のメモリオペレーションの爆発を生成するため、ＭＣＵ５６Ａ−５６Ｂは、メモリオペレーションを仲裁グループにグルーピングする。オペレーションがメモリインタフェース上で効率的に実行されている場合、そのときはやがて極接近して実行されるのだが、メモリオペレーションは別のメモリオペレーションとの仲裁を示すと言われたりする（又は他のメモリオペレーションと密接な関係にあると言われたりする）。増加したバンド幅利用という観点で効率性が測定される。例えば、ＳＤＲＡＭメモリは、（ページアドレスとともに）アクティベートされたコマンドを用いてオープンされ得るページによって特徴づけられる。ページのサイズは実施例ごとに異なり、一般的にアクティベートコマンドが送信されるやいなや、アクセスするのに使用できる多数の連続ビッドを参照する。同様に非同期ＤＲＡＭメモリは行アドレスのストロボ制御信号をアサートすることによって及び行アドレスを提供することによって、オープンされるページを有する。同じページ内のデータをアクセスする２以上のメモリオペレーションは密接に関係する。なぜなら、１つだけのアクティブ／ＲＡＳがメモリオペレーションのインタフェースに必要とされるからである。ＳＤＲＡＭメモリもまた、独立したバンク及びランクを有する。バンクは、（検出されたそのページヒット内で）オープン行を有するＳＤＲＡＭチップ内のメモリセルの集合体である。ランクはチップ選択を通じてメモリコントローラから選択され、１以上のＳＤＲＡＭチップを含む。それぞれのランク又はバンクに対するメモリオペレーションは、オペレーションとも密接に関係する。というのも、それらはコンフリクトしないし、クローズされるページ及びオープンされる新たなページを要求しないからである。メモリオペレーションは、同じ方向にデータを送信するときのみ（すなわち、読み出しオペレーションが他の読み出しオペレーションと密接に関係し、同様に書込みオペレーションが他の書込みオペレーションと密接に関係するときのみ）、密接オペレーションとして閲覧（ビュー）される。同一ページ（又はオープンページ）に対するメモリオペレーションは、ページヒットとして呼ばれ、そしてそれぞれのバンク／ランクに対するメモリオペレーションは、それぞれバンクヒット、ランクヒットと呼ばれる。
【００４８】
ＭＣＵ５６Ａ−５６Ｂは、メモリインタフェース上のコマンドを、（メモリＰＨＹ４２Ａ−４２Ｂを介して）メモリ１２Ａ−１２Ｂにスケジュールし、スケジュールされたメモリオペレーションを実行するよう構成されている。特に、一実施例において、ＭＣＵ５６Ａ−５６Ｂは、各メモリオペレーションのコマンドをあらかじめ合成し、コマンドを待機状態にするよう構成されている。ＭＣＵ５６Ａ−５６Ｂは、メモリバンド幅の効率的な使用を提供するためにコマンドをスケジュールする。各ＭＣＵ５６Ａ−５６ＢのＭＩＦ６６は、コマンドのあらかじめ合成すること、及びコマンドをスケジューリングすることを実行する。
【００４９】
いま、図４を参照すると、ポートインタフェースユニット５８Ｃの一実施例のブロック図が示される。各インタフェースに結合するポートインタフェース回路の実装において相違点はあるのだが、他のポートインタフェース回路５８Ａ−５８Ｂ及び５８Ｄ−５８Ｅは類似する。例示の実施例において、図４に示すとおり、ポートインタフェースユニット５８Ｃは、読出し及び書込みオペレーションそれぞれに対する読出し（ＡＲ）及び書込み（ＡＷ）インタフェースに接合されたバッファ７０Ａ−７０Ｂを含む。バッファ７０Ａ−７０Ｂは読出し発生ジェネレータ７２及び書込み発生ジェネレータ７４とそれぞれ接合する。そしてそれらは、Ｒｄ０/Ｒｄ１インタフェース及びＷｒ０/Ｗｒ１インタフェースとそれぞれ接合する。読出し発生ジェネレータ７２は、読出し未処理トランザクションテーブル（ＲＯＴＴ）７６に接合され、そして書込み発生ジェネレータ７４は、書込み未処理トランザクションテーブル（ＷＯＴＴ）７８に接合さる。ＲＯＴＴ７６は、インタフェース上の読出し応答を生成する読出し応答ジェネレータ８０に接合する。また、ＲＯＴＴは、読出しバッファ８４に接合し、読出しバッファ８４は多重通信回路８６を介してＭＣＵ５６Ａ−５６Ｂのいずれかよりデータを受信し、そしてインタフェース上の読出しデータを提供する。ＷＯＴＴ７８は、インタフェース上の書込み応答を生成する書込み応答ジェネレータ８２に接合する。ＷＯＴＴ７８は、また、書込みデータフォワードバッファ８８に接合し、書込みデータフォワードバッファ８８はＭＣＵ５６Ａ−５６Ｂへデータを提供し、バッファ７０Ｃからデータを受信するために接合され、バッファ７０Ｃはインタフェースからの書込みデータを受信するために接合される。
【００５０】
読出しオペレーションのため、バッファ７０Ａはインタフェースからのオペレーションを受信する。バッファ７０Ａは読出しオペレーションをキャプチャーするために提供され、読出し発生ジェネレータ７２が処理するために読出しオペレーションを保持する。一実施例において、バッファ７０Ａは、未利用のリソースの遅延イベントでキャプチャーされる第２オペレーションが利用可能になる（例えば、インタフェース上のソースにバックプレッシャー要求を伝搬するタイミングを容易化する）ことを許可する２つのエントリー“スキッド(skid)”バッファである。バッファ７０Ｂ−７０Ｃも同様に、２つのエントリースキッドバッファである。他の実施例は、必要に応じて、スキッドバッファに追加的エントリーを含む。
【００５１】
読出し発生ジェネレータ７２は、読出しオペレーションのアドレスをデコードして、どのメモリチャンネルが読出しオペレーションによってアドレスされるかを決定する。読出し発生ジェネレータ７２は、Ｒｄ０及びＲｄ１インタフェース経由で、読出しオペレーションを、アドレスされたメモリチャンネルに送信する。各読出しオペレーションはサイズ（すなわち、オペレーションのアドレスで読出しが開始するバイト数）を特定する。サイズ及びアドレスの組み合わせが１以上のチャンネルからバイトを読出すことを示唆している場合、読出し発生ジェネレータ７２はアドレスされたチャンネルに対する複数の読出しオペレーションを発生させる。複数の読出しオペレーションからの読出しデータはソースに戻される読出しバッファ８４で加算される。
【００５２】
読出し発生ジェネレータ７２はＲＯＴＴ７６をアップデートし、読出しの仮定をトラックするためにＲＯＴＴ７６内にエントリーを割り当てる。読出しバッファ８４でデータが受信されると、ＲＯＴＴ７６は読出し応答ジェネレータ８０に信号を送って読出し応答を発生し、データをソースに転送する。もしも読出しデータがインタフェースの順序で（例えば、インタフェース上のプロトコルに従って）戻されるのならば、前回の読出しが戻され、その後ＲＯＴＴ７６が読出し応答ジェネレータ８０に信号を送出してデータを転送するまで、読出しバッファ８４内にデータを残してバッファ化されるようにする。ＲＯＴＴ７６は様々なステータス信号をＭＣＵから受信し、未処理の読出しオペレーションのステータス（不図示）を更新（アップデート）するよう構成されている。
【００５３】
バッファ７０Ｂ、書込み発生ジェネレータ７４、及びＷＯＴＴ７８は、書込みオペレーションのために同様にオペレートする。しかしながら、データはインタフェースで送信されるよりはむしろ受信される。書込みデータは、書込みデータフォワードバッファ８８で受信され、対応の書込みオペレーションの現在ロケーションへ転送される。予定よりもはやくインタフェース上での書込みを書込み応答により終了するといった書込み完了を保証するや否や、ＷＯＴＴ７８は書込み応答の信号を送出する。
【００５４】
図４に示す実施例が、読出し及び書込みオペレーション（ＡＲ及びＡＷ）をそれぞれに運ぶインタフェースを含む一方で、他の実施例が読出し及び書込みオペレーションの両方に関する一つの伝送媒体を含むことに留意されたい。そのような実施例の場合、単一のバッファ７０はオペレーションを受信し、そして読出し発生ジェネレータ７２及び書込み発生ジェネレータ７４は、読出し及び書込みオペレーションを区別するために、インタフェースからのコマンドをデコードする。或いはまた、読出し及び書込みオペレーションの両方を発生させ、したがってＲＯＴＴ７６及びＷＯＴＴ７８を更新する１つの発生ジェネレータがあってもよい。
【００５５】
いま、図５を参照すると、ＭＣＩＵ６０Ａの一実施例をあらわすブロック図を示されている。ＭＣＩＵ６０Ｂは、各ポートからＲｄ１及びＷｒ１入力を受信するために結合し、ＭＣＵ５６Ｂに結合するという点を除いて、ＭＣＩＵ６０Ａと同じである。例示の実施例の場合、ＭＣＩＵは図５に示すような、読出しキュー９０Ａ−９０Ｂなどの読出しキューの集合と、書込みキュー９２Ａ−９２Ｂなどの書込みキューの集合を含む。各ポートのための１つの読出しキューと１つの書込みキューがあってもよい。各読出しキューはポートインタフェースユニット５８Ａ−５８Ｅの一つのＲｄ０出力に接続すると共に、ＱｏＳアービエータ９４Ａに接続する。各書込みキューはポートインタフェースユニット５８Ａ−５８Ｅの一つのＷｒ０に接続するとともに、ＱｏＳアービエータ９４Ｂに接続する。ＱｏＳアービエータ９４Ａ−９４Ｂの出力は読出し及び書込み入力それぞれとしてＭＣＵ５６Ａに提供される。ＱｏＳアービエータ９４Ａ−９４Ｂは、バンド幅共有レジスタ６２からのデータを受信するために結合される。
【００５６】
２つの読出しキューエントリが読出しキュー９０Ａに示され、他の読出しキューも同様である。読出しキュー９０ＡはメモリオペレーションのＦＩＤ、オペレーションのＱｏＳパラメータ、プッシュビッド（Ｐ）、及び他のフィールド（Ｏｔｈ）を含む。ＦＩＤ及びＱｏＳパラメータは、メモリコントローラ４０に対するインタフェース上のメモリオペレーションにより送信された同一値である。或いはまた、片方又は両方の値が便宜のために内部的にメモリコントローラ４０によって記録される。プッシュビットはメモリオペレーションで高優先を強いるために用いられ、この場合第２のメモリオペレーションは、メモリオペレーションの背後で順序づけられ、そのメモリオペレーションよりも高いＱｏＳレベルである。例えば、第２のメモリオペレーションをメモリオペレーションと同じポートで受信し、そしてポートのインタフェースはメモリオペレーションを送信するのと同じ順序でデータを返信することを要求する。高優先度を強要することによって、メモリオペレーションはより迅速に実行され、その結果、より高いＱｏＳレベルをもつ第２のメモリオペレーションの迅速サービスを許可する。他のフィールドはメモリオペレーションに関する他の様々な情報（例えば、アドレス、サイズ情報など）を含む。同様に、２つの書込みキューエントリが書込みキュー９２Ａに示され、読出しキュー９０Ａと同様のフィールドを含む。必要に応じて、他のフィールドは読出しと比較して書込みのための異なる情報を記憶する。
【００５７】
ＱｏＳアービエータ９４Ａ−９４Ｂは、読出しキュー９０Ａ−９０Ｂ、及び書込みキュー９２Ａ−９２Ｂそれぞれの間で仲裁する。ＱｏＳアービエータは、（キュー内のＱｏＳパラメータによって示されるような）ＱｏＳレベル及びバンド幅共有レジスタからのバンド幅共有パラメータの両方を考慮する。選択された読出し及び書込みオペレーションは、（必要であれば）ＭＣＵ５６Ａに送信される。
【００５８】
幾つかの実施例において、ポートインタフェースユニットからＱｏＳアービエータ９４Ａ及び／又は９４Ｂ（図５において不図示）までの１以上のバイパスパスがある。例えば、プロセッサに対する低い待ち時間読出しを許可するために、ＣＰＵポートインタフェースユニット５８Ｃからの読出しはＱｏＳアービエータ９４Ａへバイパスする。幾つかの実施例において、キュー９０Ａ−９０Ｂ及び／又は９２Ａ−９２Ｂにおける１以上のメモリオペレーションはＱｏＳアービエータ９４Ａ−９４Ｂからマスクされる。例えば、対応のデータがメモリコントローラ４０に未だ到着していない書込みオペレーションは、ＱｏＳアービエータ９４Ａ−９４Ｂからマスクされるが、それは対応のデータがメモリコントローラ４０に到着した他のポートから書込みオペレーションをブロックすることを回避するためである。
【００５９】
図６は、ＱｏＳアービエータ９４Ａ−９４Ｂの各実施例のオペレーションを示すフローチャートである。理解を容易にするため特定の順序でブロックを示しているが、他の順序が用いられ得る。ＱｏＳアービエータ９４Ａ−９４Ｂの組み合わせロジックにおいては、並行してブロックが実行される。ブロック、ブロックの組み合わせ、及び／又はフローチャートは、全体として、マルチクロックサイクルでパイプラインされる。ＱｏＳアービエータ９４Ａ−９４Ｂは、図６に示すオペレーションを実行するように構成される。
【００６０】
ＱｏＳアービエータが結合されるキューの一つにおいて少なくとも１つのメモリオペレーションがＲＴＹ又はＲＴＲのＲＴ  ＱｏＳレベルをもつ場合、或いは、プッシュビットが少なくとも１つのメモリオペレーションのために設定される場合（判断ブロック１００で“ｙｅｓ”）、ＱｏＳアービエータはＲＴＹ若しくはＱｏＳレベル及び／又はセットプッシュビットをもつキューの間で仲裁する（ブロック１０２）。各キューは本実施例においてポートに対応するので、ＱｏＳアービエータはＲＴＹ若しくはＲＴＲ  ＱｏＳレベル及び／又はセットプッシュビットをもつポート間で効率的に仲裁をする。その結果、ＡＩＵ５４は、ＲＴＧ、ＢＥＦ、及びＬＬＴ  ＱｏＳレベルを本実施例では等しいものとして扱う。本実施例の場合、ＡＩＵ５４は、ＲＴＲ及びＲＴＹ  ＱｏＳレベル、並びにセットプッシュビット・オペレーションを、互いに等しく且つ他のレベルより高い優先度なものとして扱う。他の実施例は、追加的な粒度レベルを有する（例えば、ＲＴＲは高い優先度として扱われるということ、すなわちＲＴＹ、ＲＴＧ及びＬＬＴがＢＥＦよりも高い優先度として扱われるということなど）。さらに、他の実施例はラウンドロビンとは異なるスキームを実装（インプリメント）してもよい。
【００６１】
他方、ＲＴＹ若しくはＲＴＲ  ＱｏＳレベルをもつメモリオペレーションがまったくなく、かつ、セットプッシュビットをもつメモリオペレーションがまったくない場合（判定ブロック１００の“ｎｏ”）、ＱｏＳアービエータはすべてのキュー（すべてのポート）間で仲裁する（ブロック１０４）。例えば、ＱｏＳアービエータはポート間で、損失−重みづけラウンド・ロビンスキームを実装し、その場合、この重みはバンド幅共有パラメータに基づく（又はバンド幅共有パラメータが重みである）。他の実施例では、すべてのポート間で他のアービエータスキームを実装する。
【００６２】
いま，図７を参照すると、ＰＳＱ６４の一実施例のブロック図が示されている。例示の実施例の場合、ＰＳＱ６４はキュー化制御ユニット１１０、トランザクションキューのセット１１２、スケジューラー１１４、バイパス多重通信回路１１６を含む。待機状態制御ユニット１１０は、読出し及び書込みオペレーションを対応のＭＣＩＵ６０Ａ又は６０Ｂから受信するために結合し、トランザクションキュー１１２と結合する。トランザクションキュー１１２はさらにスケジューラー１１４と結合し、その出力はバイパス多重通信回路１１６と結合する。バイパス多重通信回路１１６は読出しオペレーションを受信するために結合し、スケジューラー１１４及び読出しオペレーションによってスケジューリングされたメモリオペレーション間で選択するよう構成される。例えば、トランザクションキュー１１２内の読出しがなく、書込みの数が閾値レベルを下回っているならば、読出しオペレーションはトランザクションキュー１１２をバイパスする。他の実施例はバイパスを実装せず、バイパス多重通信回路１１６を省略することもある。
【００６３】
図７に示すとおり、トランザクションキュー１１２は、キュー１１８Ａ−１１８Ｂなどの読出し密接キュー（affinity queues）のセット、及びキュー１２０Ａ−１２０Ｂなどの書込み密接キューのセットを含む。読出し密接キューの数及び書込み密接キューの数は実施例ごとに異なり、読出し密接キューの数が書込み密接キューの数と等しくなる必要はない。各密接キューは、互いに親和性を提示するキュー制御ユニット１１０により決定した１以上のメモリオペレーションを記憶する。これにより、キュー制御ユニット１１０がメモリオペレーションを受信するので、キュー制御ユニット１１０は、（読出しオペレーション用の）密接キュー１１８Ａ−１１８Ｂ、又は（書込みオペレーション用の）密接キュー１２０Ａ−１２０Ｂに対してメモリオペレーションを比較する。メモリオペレーションが密接に関係する場合、対応の密接キューにおいて待機状態化となる。そうでない場合、メモリオペレーションは別の密接キューにおいて待機状態化となる。一実施例において、読出し密接キューは密接に関係していない読出しのために保留され、同様に、書込み密接キューは密接に関係していない書込みのために保留される。
【００６４】
スケジューラー１１４は、ＭＩＦ６６に送信されることになるメモリオペレーションをスケジューリングするよう構成される。読出しオペレーションのために、スケジューラー１１４は、読出し密接キュー１１８Ａ−１１８ＢにおけるＱｏＳレベルと、各読出し密接キュー１１８Ａ−１１８Ｂにおける密接メモリオペレーションの数との両方を考慮する。その詳細については後述する。しかしながら、一般的に、スケジューラー１１４は、高いＱｏＳレベルと多数の密接メモリオペレーションをもつ読出しオペレーションを好む。書込みオペレーションのために、ＱｏＳレベルはＰＳＱ６４において省略されてもよい。つまり、書込みオペレーションのＱｏＳレベルは、書込みオペレーションがトランザクションキュー１１２に書込まれるときにドロップされる。キュー１１８Ａ及び１２０Ａのそれぞれにおける例示のエントリで示したように、読出しオペレーションはＱｏＳを保持するが、書込みオペレーションは保持しない。スケジューラー１１４は、例えば、書込みキューの一杯さ、及び読出しキューにおけるＱｏＳレベルに基づいて、読出しオペレーションと書込みオペレーションの間でスケジューリングする。追加の詳細はさらに後述する。
【００６５】
幾つかの実施例において、読出し密接キュー１１８Ａ−１１８Ｂ及び書込み密接キュー１２０Ａ−１２０Ｂは、（例えば、分離データ構造として、又はＰＳＱ６４の論理回路を介して分けられる及び／又はプログラム上で分離される１以上のデータ構造として）物理的にインスタンス化される。他の実施例においては、密接キューは仮想的である。つまり、読出しキュー及び書込みキューがあり、そして例えばタグが密接オペレーションを識別するのに用いられる。
【００６６】
図８は、メモリオペレーションを受信することに対応した、待機状態制御ユニット１１０の一実施例のオペレーションを示したフローチャートである。理解を容易にするために特定の順序でブロックを示しているが、他の順序も用いられる。待機状態制御ユニット１１０の組み合わせ論理において並行してブロックが実行される。ブロック、ブロックの組み合わせ、及び／又はフローチャートは、全体として、マルチクロックサイクルでパイプラインされる。待機状態制御ユニット１１０は、同時に受信する読出しオペレーション及びキューオペレーションのために並行して図８に示すオペレーションを実行するように構成される。
【００６７】
待機状態制御ユニット１１０は、受信したオペレーションを、対応する密接キュー１１８Ａ−１１８Ｂ若しくは１２０Ａ−１２０Ｂと比較し、受信したオペレーションが待機状態化されたオペレーションとの密接的な関係を提示するか否かを特定する（判断ブロック１３０）。密接度が検出されたことに応答して（及びオペレーション用の密接キューにスペースがあるならば）、待機状態制御ユニット１１０は、密接キュー内のオペレーションを待機状態化する（ブロック１３２）。密接度の検出がなかったことに応答して、待機状態制御ユニット１１０は、空の密接キュー内のオペレーションを待機状態化する（ブロック１３４）。
【００６８】
一実施例において、密接さの検出は図８の爆発ビュー（クレジットを一気に消費するビュー）で示される。或るオペレーションが密接キューの他のオペレーションを有するページヒットであれば（判断ブロック１３６の“ｙｅｓ”）又は他のオペレーションをもつバンク若しくはランクミスであれば（判断ブロック１３８及び１４０それぞれで“ｙｅｓ”）、そのオペレーションは密接に関連する。そうでなければ（判断ブロック１３６，１３８及び１４０で“ｎｏ”）、そのオペレーションは待機状態化されたオペレーションと密接に関連しない。判断ブロック１３６，１３８及び１４０によって示された検出は、各密接キューに関して並行して実行される。
【００６９】
図９は、トランザクションキュー１１２における読出しオペレーションと書込みオペレーションとの間でスケジューリングするスケジューラー１１４のオペレーションを例示したフローチャートである。理解を容易にするために特定の順序でブロックを示しているが、他の順序も用いられる。スケジューラー１１４の組み合わせ論理において並行してブロックが実行される。ブロック、ブロックの組み合わせ、及び／又はフローチャートは、全体として、マルチクロックサイクルでパイプラインされる。スケジューラー１１４は、図９に示すオペレーションを実行するように構成される。
【００７０】
図９の実施例において、書込みキューの充満度（つまり、トランザクションキュー１１２における書込みオペレーションの数）として、高い、中間、低いという３つの閾値がある。高レベルは、中間レベルが示すよりも多い書込みオペレーションがトランザクションキュー１１２にあることを示し、そして中間レベルは、低レベルが示すよりも多い書込みオペレーションがトランザクションキュー１１２にあることを示す。様々な実施例において、閾値は固定化されたりプログラム化されたりする。
【００７１】
スケジューラー１１４は書込みをブロッキングすることを検出し（判断ブロックの“ｙｅｓ”）、ブロッキング書込みをスケジューリングする（ブロック１５２）。ブロッキング書込みは、（高いＱｏＳレベルをもつメモリオペレーションが書込みオペレーションの後に順序づけられるということを示唆する）プッシュビットセットを有する書込みオペレーションである。また、ブロッキング書込みオペレーションは同じアドレスに対する読出しオペレーションをブロッキングしている書込みオペレーションである（又は、書込みオペレーションは、読出しオペレーションにより読出された少なくとも１つのバイトを更新する）。
【００７２】
ブロッキング書込みが無い場合、読出しオペレーションに対する書込みオペレーションのスケジューリングはクレジットシステムに基づくものとなる。すなわち、読出しオペレーション及び書込みオペレーションのそれぞれは、或る数のクレジットが割り当てられる。スケジューリングされたメモリオペレーションは、対応するクレジットカウントから１つのクレジットを消費する。例示の実施例の場合、読出しクレジットが使い尽くされ、読出しオペレーションがスケジューリングされると、読出し及び書込み両方のクレジットが、初期クレジット値を現在のカウントに加算することによってリロードされる。密接オペレーションは、読出し又は書込みオペレーションがスケジュールされるとき急にスケジューリングされるので、クレジットカウントはゼロより下に減少する。つまり、スケジューラー１１４は、オペレーションのクレジットカウントがゼロに減少する場合には、密接オペレーションの爆発を中断させない。簡潔さのため、図９に関する後述は、読出しキューにおける読出しオペレーション及び書込みキューにおける書込みオペレーションを参照する。読出しキューは読出し密接キュー１１８A−１１８Bの組み合わせを含み、書込みキューは書込み密接キュー１２０A−１２０Bの組み合わせを含む。
【００７３】
書込みキューが高い閾値に到達して、利用可能な少なくとも１つの書込みクレジットがあることを検出したとき（判断ブロック１５４の“ｙｅｓ”）の対応として、スケジューラー１１４は書込みキューからスケジューリングする（ブロック１５６）。書込みキューが高い閾値に到達せず、利用可能な書込みクレジットがないとき（判断ブロック１５４の“ｎｏ”）、スケジューラー１１４は読出しキューからスケジューリングする（ブロック１６０）。読出しキューに読出しオペレーションがない又は利用可能な読出しクレジットがない（判断ブロック１５８の“ｎｏ”）が、書込みキューが中間の閾値に到達し且つ利用可能な書込みクレジットがあることをスケジューラー１１４が特定した場合（判断ブロック１６２の“ｙｅｓ”）、スケジューラーは書込みキューからスケジューリングする（ブロック１５６）。書込みキューが中間の閾値に到達せず又は利用可能な書込みクレジットがないが（判断ブロック１６２の“ｎｏ”）、少なくとも１つの読出しオペレーションが読出しキューにあって、かつ、利用可能な読出しクレジットがないことをスケジューラー１１４が特定した場合（判断ブロック１６４の“ｙｅｓ”）、スケジューラー１１４は読出しキューからスケジューリングする（ブロック１６０）。上述したように、スケジューラー１１４はこのインスタンスにおいて読出しクレジット及び書込みクレジットをリロードする。読出しキューに読出しオペレーションがなく（判断ブロック１６４の“ｎｏ”）、かつ、書込みキューが低い閾値に到達したことをスケジューラー１１４が特定した場合（判断ブロック１６６の“ｙｅｓ”）、スケジューラーは書込みキューからスケジューリングする（ブロック１５６）。
【００７４】
図９のフローチャートは、書込みキューが低い閾値に到達するまで、書込みキューからスケジューリングしないことを示す一方で、スケジューラー１１４が一時期働いていなかったならば、幾つかの実施例は書込みキューからスケジューリングする。この一時期は固定的であったり、又はプログラム可能であったりする。
【００７５】
図１０は、書込みキューからのスケジューリングを実行するためのスケジューラー１１４のオペレーションを示すブロック図である（ブロック１５６）。図１０に示すとおり、スケジューラー１１４は最大数の書込みオペレーションをもつ書込み密接キュー１２０Ａ−１２０Ｂをスケジューリングする（ブロック１６８）。
【００７６】
図１１は、スケジューラー１１４が読出しキューからの読出しオペレーションをスケジューリングしている様々な状態を示すテーブルである（ブロック１６０）。状態は優先度の順序を上げる態様で示している。よって、図１１のテーブルにおける１以上のエントリーが読出しキューのコンテンツに対応する場合、最高の優先度をもつエントリーはスケジューラー１１４の状態となる。スケジューラー１１４は、対応の状態に関し、図１１の“スケジューリング”欄に示されるようなオペレーションをスケジューリングする。
【００７７】
図１１のテーブルは読出しキューにおける読出し数を参照し、それはグリーン又はイエロー閾値の上か下である。グリーン又はイエロー閾値はＲＴＧ及びＲＴＹ  ＱｏＳレベルとは異なっており、上述した書込みキューの閾値と類似する。グリーン又はイエロー閾値は固定的であるかプログラム可能である。さらに、密接グループはスケジューリングされたものとして参照される。密接グループは読出し密接キュー１１８Ａ−１１８Ｂの一つにおけるオペレーションのグループである。
【００７８】
読出しキューの読出し数がイエロー閾値を下回る（かつ、グリーン状態が入力されなかったのでイエロー閾値を上回らなかった）場合、そしてＲＴＹ若しくはＲＴＲ読出しがキューにまったく無い場合、スケジューラー読出し状態はグリーンである。グリーン状態において、スケジューラー１１４は、必要であれば、ＬＬＴ読出しオペレーションをスケジューリングする。ＬＬＴ読出しオペレーションをもつ読出し密接キュー内のオペレーションも必要であればスケジューリングされる。ＬＬＴ読出しオペレーションがまったく無い場合、最も古い読出しオペレーションをもつ密接グループがスケジューリングされる。
【００７９】
読出しキューの読出し数がグリーン閾値を上回り（又は、ＬＬＴイエロー状態が入力されなかったのでグリーン閾値を下回らなかった）場合、そしてＲＴＲ若しくはＲＴＹ読出しが読出しキューにまったく無い場合、スケジューラー読出し状態はＬＬＴイエローである。ＬＬＴイエロー状態において、スケジューラー１１４は、必要であれば、ＬＬＴ読出しオペレーションをスケジューリングする。ＬＬＴ読出しオペレーションがまったく無い場合、スケジューラー１１４は読出しキュー内の最大密接グループをスケジューリングする。一実施例において、スケジューラー１１４は最も古い読出しオペレーションを含む密接グループをスケジューリングするが、この場合ＬＬＴイエロー状態にあるＬＬＴ読出しオペレーションはまったくなく、グリーン状態に類似するのである。
【００８０】
少なくとも１つのＲＴＹ読出しオペレーションがあるが、ＲＴＲオペレーションがない場合、スケジューラー読出し状態はイエローである。イエロー状態において、スケジューラー１１４は最も古いＲＴＹ読出しオペレーションを含む密接グループ若しくは最大の密接グループをスケジューリングする。
【００８１】
少なくとも１つのＲＴＲ読出しオペレーションがキューにあり、かつ、スケジューラー１１４が密接オペレーションをＲＴＲオペレーションと関連づけるようにプログラムされている場合、スケジューラー読出し状態はレッド近似である。レッド近似状態において、スケジューラー１１４は最も古いオペレーションを含む密接グループをスケジューリングする。さもなければ、最大の密接グループをスケジューリングする。
【００８２】
少なくとも１つのＲＴＲ読出しオペレーションがキューにあり、かつ、スケジューラー１１４が密接オペレーションなしにＲＴＲ読出しオペレーションをスケジューリングするようにプログラムされている場合、スケジューラー読出し状態はレッドである。レッド状態において、スケジューラー１１４は最も古いＲＴＲ読出しオペレーション又は最大の密接グループをスケジューリングする。
【００８３】
上述した説明は、読出しキューにおける読出しを“最古(oldest)”として参照する。幾つかの実施例において、読出しオペレーションは、読出しキューで消費された時間に基づき最古としてビューされる。他の実施例において、他の方法で年齢（age）を測定する。例えば、読出しオペレーションが別の読出しオペレーションのためにスケジューリングされなかった回数という観点で、最古の読出しオペレーションが測定される。
【００８４】
密接グループがスケジューリングされるとき、密接グループからスケジューリングされたメモリオペレーションの数は、固定的若しくはプログラム可能な爆発サイズを最大とするグループ内のオペレーション数である。一実施例において、最新にスケジューリングされた密接グループが爆発サイズよりも少ないオペレーションを有する場合は、他のメモリオペレーションがスケジューリングされる。例えば、スケジューラー１１４は、最新にスケジューリングされた密接グループと深く関連する“ストラグラー(stragglers)”（例えば、以前にスケジューリングされたが爆発サイズのために転送された密接グループの一部であったメモリオペレーション）をスケジューリングする。あるいはまた、スケジューラー１１４は次に大きい密接グループを選択する。
【００８５】
いま図１２を参照すると、ＭＩＦ６６の一実施例のブロック図が示されている。図１２の実施例の場合、ＭＩＦ６６は、ＭＩＦキュー化制御ユニット１７０、ＭＩＦトランザクションキュー１７２、オープンページテーブル１７４、プリチャージスケジューラー１７６、モデルレジスタ（ｒｅｇ）スケジューラー１７８、リフレッシュスケジューラー１８０、アクティベート・スケジューラー１８２、共通アドレスストロボ（ＣＡＳ）スケジューラー１８４、及び最終スケジューラー１８６を含む。ＭＩＦ待機状態制御ユニット１７０はＰＳＱ６４からメモリオペレーションを受信するために接合し、そしてオープンページテーブル１７４及びＭＩＦトランザクションキュー１７２に接合する。オープンページテーブル１７４はプリチャージスケジューラー１７６に接合する。ＭＩＦトランザクションキュー１７２は、アクティベート・スケジューラー１８２及び共通アドレスストロボ（ＣＡＳ）スケジューラー１８４のそれぞれと接合するアクティベート・キュー１８８及びＣＡＳキュー１９０を含む。スケジューラー１７６，１７８，１８０，１８２，１８４は最終スケジューラー１８６に接合し、これはＭＩＦ６６がＭＣＵ５６Ａ又は５６Ｂにインスタンス化されるかどうかに依存してメモリＰＨＹ４２Ａ又は４２Ｂの一つにコマンドを送信するために接合される。
【００８６】
ＭＩＦ待機状態制御ユニット１７０は、受信したメモリオペレーションと、オープンページテーブル１７４及びＭＩＦトランザクションキュー１７２を比較し、コマンドを事前に合成してメモリオペレーションを実行するよう構成されている。特に、受信したメモリオペレーションに対応するページがキューされたアクティベートコマンドによってオープンされる場合、その受信したメモリオペレーションはＣＡＳオペレーションとしてキューされる（待機状態となる）。受信したメモリオペレーションに対応するページがすでにオープンされ、キューされたページコンフリクトのアクティベートがない場合、その受信したメモリオペレーションはＣＡＳオペレーションとして待機状態となる。受信したメモリオペレーションに対応するページがオープンされない場合、その受信したメモリオペレーションはアクティベートコマンド及びＣＡＳコマンドとして待機状態となる。各コマンドは年齢カウンタ（アクティベート・キュー１８８及びＣＡＳキュー１９０内の年齢フィールド）を割り当てられる。年齢カウンタの値は読出しメモリオペレーションのＱｏＳパラメータに基づき、そしてより低いＱｏＳレベルのためよりも高いＱｏＳレベルのために短い。書込みメモリオペレーションのために、年齢カウンタは読出しメモリオペレーションの最も低いＱｏＳレベルと同じであるか、最も低いＱｏＳレベルよりも長い。年齢はオペレーションをバイパスするオペレーション数として又はクロックサイクルとして様々な実施例においてカウントされる。年齢カウンタがゼロに減少されると、対応のオペレーションはＭＩＦ６６がＭＣＵ５６Ａ又は５６Ｂ６６における最も高い優先度としてスケジューリングされる。
【００８７】
アクティベート・スケジューラー１８２及びＣＡＳスケジューラー１８４は、対応のキュー１８８及び１９０からのアクティベートコマンド及びＣＡＳコマンドをスケジューリングするよう構成される。アクティベートコマンドはメモリのページをオープンし、ＣＡＳコマンドはページ内に読出し又は書込みデータを生じさせる。
【００８８】
プリチャージスケジューラー１７６は、オープンページテーブル１７４のページに関するアイドルタイマーが時間切れとなるとき、バンクのプリチャージコマンドをスケジューリングする。アイドルタイマーはオープンページ内の受信メモリオペレーションヒットの各時間でリロードされ、オープンページでヒットしない各メモリオペレーション又は各クロックサイクルで減少させられる。新たに受信したメモリオペレーションをもつページコンフリクトがページをクローズさせるというケースにおいて、前のページに対する最後のＣＡＳコマンドがバンクをプリチャージさせるために用いられる。
【００８９】
モードｒｅｇスケジューラー１７８は、構成可能なタイマーに従い及び／又はメモリタイマー要求に応じて、メモリレジスタ読出し（ＭＲＲ）及びメモリレジスタ書込み（ＭＲＷ）を生成する。リフレッシュスケジューラー１８０は、リフレッシュが必要とされるとき、リフレッシュコマンドを生成する。
【００９０】
最終スケジューラー１８６はスケジューラー１７６，１７８，１８０，１８２，１８４の間で選択して、メモリＰＨＹ回路へのコマンドをスケジューリングする。また、スケジューラー１８６は、読出しオペレーション及び書込みオペレーション間のターンアラウンドサイクルなどの或るプロトコルを強化する。
【００９１】
アクティベート・キュー及びＣＡＳキュー１８８及び１９０は仮想であることに留意されたい。つまり、ＭＩＦトランザクションキュー１７２内の同一エントリーが所与のメモリオペレーションに関するアクティベート及びＣＡＳコマンドの両方のために用いられる。アクティベートは所与のメモリオペレーションのために必要とされる場合、アクティベートが発行されると、エントリーはアクティベートコマンドとして初期化され、そしてＣＡＳコマンドに変換される。所与のメモリオペレーションのためにアクティベートが必要でない場合、エントリーはＣＡＳコマンドとして初期化される。
【００９２】
図７及び１２に示された回路に加えて、ＭＣＵ５６Ａ−５６Ｂ内にデータパスがあり、ＡＩＵ５４からメモリへ書込みデータを運び、メモリからＡＩＵ５４へ読出しデータを運ぶことにさらに留意されたい。
【００９３】
図１３は、ＰＳＱ６４からのメモリオペレーションに応じて、ＭＩＦキュー化制御ユニット１７０の一実施例のオペレーションを示すフローチャートである。理解を容易にするために特定の順序でブロックを示しているが、他の順序も用いられる。ＭＩＦキュー化制御ユニット１７０の組み合わせ論理において並行してブロックが実行される。ブロック、ブロックの組み合わせ、及び／又はフローチャートは、全体として、マルチクロックサイクルでパイプラインされる。ＭＩＦキュー化制御ユニット１７０は、図１３に示すオペレーションを実行するように構成される。
【００９４】
ＭＩＦキュー化制御ユニット１７０は、受信されたメモリオペレーションのためにアクティベートコマンドが必要とされるか否かを判断する（例えば、メモリオペレーションは、オープンページ又は前に待機状態にあるアクティベートコマンドがオープンされるであろうページをヒットしない）（判断ブロック１９６）。もし必要であれば（判断ブロック１９６の“Ｙｅｓ”）、ＭＩＦ待機状態制御ユニット１７０はアクティベートコマンドを合成し、アクティベート・キュー１８８内にそのアクティベートコマンドを待機状態にする（ブロック１９２）。また、ＭＩＦ待機状態制御ユニット１７０は、ＣＡＳコマンドを合成し、ＣＡＳキュー１９０内にそのＣＡＳコマンドを待機状態にする（ブロック１９４）。それぞれの場合において、（読出し用のＱｏＳパラメータに基づき）年齢カウンタを初期化する。
【００９５】
図１４は、アクティベート・スケジューラー１８２のオペレーションを示すフローチャートである。アクティベート・スケジューラー１８２は、古くなった（例えば、年齢カウンタがゼロである）アクティベートコマンド用のアクティベート・キュー１８８内のアクティベートコマンドをスキャンする。そのようなアクティベートコマンドが検出された場合、アクティベートは古くなったアクティベートコマンドを選択する（ブロック２００）。そうでない場合、アクティベート・スケジューラー１８２は、殆ど未処理のオペレーションをもつバンク内のヘッドクラスターにあるアクティベートコマンドを選択する。ヘッドクラスターは、アクティベート・キュー１８８内で最古のアクティベートコマンドである、同一読出し／書込みタイプのアクティベートグループである。１よりも多いコマンドが適格であるならば、最古の適格アクティベートコマンドが選択される。
【００９６】
図１５はＣＡＳスケジューラー１８４の一実施例のオペレーションを示すフローチャートである。理解を容易にするために特定の順序でブロックを示しているが、他の順序も用いられる。ＣＡＳスケジューラー１８４の組み合わせ論理において並行してブロックが実行される。ブロック、ブロックの組み合わせ、及び／又はフローチャートは、全体として、マルチクロックサイクルでパイプラインされる。ＣＡＳスケジューラー１８４は、図１５に示すオペレーションを実行するように構成される。
【００９７】
アクティベート・スケジューラー１８２と同様に、ＣＡＳスケジューラーは古くなったＣＡＳコマンドを検出し、送信第一のためにそれらを選択する（判断ブロック２０２の“ｙｅｓ”及びブロック２０４）。古くなったＣＡＳコマンドがまったく無く（判断ブロック２０２の“ｎｏ”）、かつ、最新のＣＡＳコマンドが読出しであった（判断ブロック２０６の“ｙｅｓ”）場合、ＣＡＳスケジューラー１８４は、最後のＣＡＳコマンドと同じランクの次の読出しＣＡＳコマンドを選択するか、又はページをクローズすることができるように完了するためのＣＡＳコマンドを待つ最もコンフリクトするオペレーションにより読出しＣＡＳコマンドを選択する（ブロック２０８）。同様に、最後のＣＡＳコマンドが書込みの場合（判断ブロック２０６の“ｎｏ”及び判断ブロック２１０の“ｙｅｓ”）、ＣＡＳスケジューラー１８４は、最後のＣＡＳコマンドと同じランクの次の書込みＣＡＳコマンドを選択するか、又はページをクローズすることができるように完了するためのＣＡＳコマンドを待つ最もコンフリクトするオペレーションにより書込みＣＡＳコマンドを選択する（ブロック２１２）。上記にどれもあてはまらない場合、ＣＡＳスケジューラー１８４はＣＡＳキュー１９０内の最古のＣＡＳコマンドをスケジューリングするよう構成コマンドを選択する（ブロック２１４）。ブロック２０４，２０８、２１２、２１４において、１よりも多いＣＡＳコマンドが適格であるならば、最古のＣＡＳコマンドが選択される。
【００９８】
図１６は、最後のスケジューラー１８６の一実施例のオペレーションを示すテーブルである。テーブルのエントリーは上から下へと優先度を下げる順序で示されている。バースト・ストップコマンド（ＢＳＴ）又は中断ＣＡＳコマンドが送信される場合、最高の優先度でこれらのコマンドを与える。次は、モードレグスケジューラー１７８からのコマンドであり、そしてリフレッシュスケジューラー１８０からの自動リフレッシュコマンドが続く。ＣＡＳスケジューラー１８４からのＣＡＳコマンドは、自動リフレッシュコマンドの次の優先度であり、次にアクティベート・スケジューラー１８２からのアクティベートコマンドである。プリチャージスケジューラー１７６からのプリチャージコマンドはアクティベートコマンドの次の優先度である。そして、図１６において、最後の優先度は低パワーモードを入力するのに用いられるセルフ・リフレッシュコマンドである。
【００９９】
簡単に上述したように、メモリオペレーションは、メモリオペレーションのＱｏＳレベル上に置かれた高い重要度をもつソースからメモリコントローラ４０を入力する。メモリオペレーションはメモリコントローラ４０で処理され、そしてメモリに対する送信信号にアプローチするので、ＱｏＳレベルの重要性は低下し、そしてメモリ（ＳＤＲＡＭ）効率の重要性は増加する。図１７はこのオペレーションを図式的にあらわしている。ＭＣＩＵ６０（例えば、６０Ａ又は６０Ｂ）、ＰＳＱ６４、ＭＩＦ６６は各レベルで、スケジューリングコントロールを示すブロックに沿って示されている。ＭＣＩＵ６０で、読出し及び書込みオペレーション双方のＱｏＳレベルは、バンド幅共有パラメータとともに、ＰＳＱ６４への送信に関する読出し及び書込みオペレーションの選択をコントロールする。メモリの効率性はこのレベルで考慮されない（ブロック２２２）。ＰＳＱ６４で、書込みのＱｏＳはドロップされる。アフィニティは書込み選択をコントロールし、そしてＱｏＳとアフィニティの組み合わせは、読出しの選択を主にコントロールする（ブロック２２４）。したがって、ＱｏＳ及びメモリ効率性の懸念事項は、このＰＳＱ６４で、一層バランスされる。ＭＩＦ６６で、ＱｏＳは、（年齢パラメータの反映されるのであるが）すべてのメモリオペレーションのためにドロップされる。そして、ＳＤＲＡＭ効率性の懸念事項は、コマンドの選択を主にコントロールする（ブロック２２６）。
【０１００】
簡単に上述したように、メモリコントローラ４０は未処理のメモリオペレーションのＱｏＳレベルを更新することをサポートする。様々な実施例は、ＱｏＳレベルのアップグレードを信号で伝える１以上のメカニズム（すなわち、インバンド、サイドバンド、及び年齢）をサポートする。
【０１０１】
図１８は、インバンドのＱｏＳアップグレードメカニズムの一実施例を示すブロック図である。このメカニズムの場合、前のメモリオペレーションと同じフローでメモリオペレーションを受信すると、前のメモリオペレーションよりも高いＱｏＳレベルを有する新たに受信したメモリオペレーションは、メモリコントローラ４０が前のメモリオペレーションのＱｏＳレベルをアップグレードする。ＭＣＩＵ６０Ａの部分が、ＭＣＵ５６Ａ内のＰＳＱ６４の部分に沿って示されている。ＭＣＵ５６Ｂ内のＭＣＩＵ６０Ｂ及びＰＳＱ６４は類似する。
【０１０２】
ＭＣＩＵ６０Ａは、上述したように、各ポートからメモリオペレーションを受信し、新たに受信したメモリオペレーションを、読出し及び書込みのためのキュー９０Ａ−９０Ｂ又は９２Ａ−９２Ｂの一つにキューする。さらに図１８に示すとおり、ＭＣＩＵ６０Ａは、新たに受信したメモリオペレーションのＦＩＤの部分及びＱｏＳパラメータと、同一ポートからのキューメモリオペレーションの対応する値とを比較する（例えば、ＲｄＱ０  ９０Ａは、ポート０又はＧ０ポート４４Ａで新たに受信したメモリオペレーションのＦＩＤ及びＱｏＳパラメータと比較し、そしてＲｄＱ４  ９０Ｂは、ポート４又はＲＴポート４４Ｅで新たに受信したメモリオペレーションのＦＩＤ及びＱｏＳパラメータと比較する。）同一ポートから新たに受信したメモリオペレーション、及びキューメモリオペレーションより高いＱｏＳレベルをもつフローに応じて、ＭＣＩＵ６０Ａは、キューメモリオペレーションのＱｏＳレベルを高いＱｏＳレベルにアップグレードする。幾つかの実施例において、ＱｏＳアップグレードは或るポートに制限される。例えば、一実施例は、ＱｏＳアップグレードをＲＴポート４４Ｅに制限する。他の実施例は、ＱｏＳアップグレードを、ＲＴトラフィックを受信したポートに制限する。このような実施例においては、アップグレードがサポートされるポートから新たに受信したメモリオペレーションだけが比較される。
【０１０３】
同様に、ＦＩＤ及びＱｏＳパラメータは、ＰＳＱ６４における読出しアフィニティキュー１１８Ａ−１１８Ｂによって受信される。ＰＳＱ６４は、同一ポートから新たに受信したメモリオペレーション、及び高いＱｏＳレベルをもつフローに応じて、キュー読出しオペレーションのＱｏＳレベルを更新する。幾つかの実施例において、ＰＳＱ６４により受信されたＦＩＤ及びＱｏＳパラメータは、ＭＣＩＵ６０Ａにより受信されたものと同じく新たに受信されたＦＩＤ及びＱｏＳパラメータである。つまり、ＰＳＱ６４及びＭＣＩＵ６０Ａは、それぞれの新たに受信したメモリオペレーションに関するＱｏＳレベルを並行してアップグレードする。他の実施例では、ＭＣＩＵ６０Ａは新たに受信したメモリオペレーションに応じてＱｏＳアップグレードを実行し、そしてＰＳＱ６４は、ＭＣＩＵ６０ＡからＰＳＱ６４へ送信されたメモリオペレーションに応じてＱｏＳアップグレードを実行する。
【０１０４】
図１８は、ＦＩＤ及びＱｏＳパラメータと、読出しキュー９０Ａ−９０Ｂとを比較することを示し、この比較はＱｏＳパラメータをアップグレードするために書込みキュー９２Ａ−９２Ｂに対して行なわれる。しかしながら、上述したように、書込みオペレーションのためのＱｏＳパラメータは、ＰＳＱ６６にドロップされ、その結果、書込みアフィニティキュー１２０Ａ−１２０Ｂに対するどんな比較も存在しない。
【０１０５】
図１９は、インバンドアップグレードメカニズムのＱｏＳレベルをアップグレードするメモリコントローラ４０のオペレーションを示すフローチャートである。図１９は理解を容易にするために特定の順序でブロックを示しているが、他の順序も用いられる。ブロック、ブロックの組み合わせ、及び／又はフローチャートは、全体として、マルチクロックサイクルでパイプラインされる。メモリコントローラ４０は、図１９に示すオペレーションを実行するように構成される。より詳細に言うと、ＰＳＱ６４及びＭＣＩＵ６０Ａ−６０Ｂのそれぞれは、図１９に示すオペレーションを実行するアップグレード回路を含む。
【０１０６】
新たに受信したメモリオペレーションが、ＦＩＤが示す同一フローからの（判断ブロック２３２の“ｙｅｓ”）キューメモリオペレーションと同じポートからであって（判断ブロック２３０の“ｙｅｓ”）、しかもキューメモリオペレーションがＲＴメモリオペレーションである場合（判断ブロック２３４の“ｙｅｓ”）、メモリコントローラ４０は、キューオペレーションのＱｏＳレベルを、新たに受信したメモリオペレーションの高いＱｏＳレベルにアップグレードする（ブロック２３６）。一実施例において、ＱｏＳアップグレードがサポートされるキューは比較を実行するコンテンツアドレス可能なメモリを含み、一致はマッチングキューエントリーに対する新たに受信したＱｏＳパラメータの書込みを可能にする。
【０１０７】
新たに受信したメモリオペレーションが、キューメモリオペレーションと同じポートからであって（判断ブロック２３０及び２３２の“ｙｅｓ”）であるが、キューメモリオペレーションがＲＴメモリオペレーションではない場合（判断ブロック２３４の“ｎｏ”）、メモリコントローラ４０は、キューメモリオペレーションのＰビットをセットする（ブロック２３８）。同様に、新たに受信したメモリオペレーションが、キューメモリオペレーションと同じポートからであるが異なるフローである場合（判断ブロック２３０の“ｙｅｓ”及び判断ブロック２３２の“ｎｏ”）であるが、メモリコントローラ４０は、キューメモリオペレーションのＰビットをセットする（ブロック２３８）。
【０１０８】
図２０は、ＱｏＳアップグレードを要求するサイドバンド・インタフェースの追加を示すブロック図である。図２０の実施例において、ＲＴポート４４Ｅに関するサイドバンド・インタフェースが含まれる。他の実施例では、他のポートに関する１以上の追加のサイドバンド・インタフェースを実装する。名前があらわすとおり、サイドバンド・インタフェースは、メモリコントローラ４０にメモリオペレーションを送信する“レギュラー”インタフェースに追加するものである。（図１に示すようなＣｍｄ、ＦＩＤ、及びＱｏＳパラメータを含む）レギュラーインタフェースは矢印２４０を介して示される。サイドバンド・インタフェースは、サイドバンドＱｏＳアップグレード要求信号（ＳｂＱｏＳＵｐｇｄ）、サイドバンドＱｏＳパラメータ（ＳｂＱｏＳ）、サイドバンドＦＩＤ（ＳｂＦＩＤ）、サイドバンドマスク（ＳｂＭａｓｋ）、ＲＴ周辺機器２２からＲＴポート４４Ｅへのサイドバンド読出し指示（ＳｂＲｄ）、及びＲＴポート４４ＥからＲＴ周辺機器２２へのサイドバンド了承信号（ＳｂＡｃｋ）を含む。
【０１０９】
ＲＴ周辺機器２２はサイドバンドアップグレードを要求するＳｂＱｏＳＵｐｇｄ信号をアサートし、ＳｂＱｏｓ上でアップグレードされたＱｏＳレベルをあらわすＱｏＳパラメータを供給する。ＳｂＦＩＤはフローを識別し、そしてＳｂＦＩＤの部分及び比較においてマスクされるはずのキューＦＩＤを許可することによって、ＳｂＭａｓｋは一般性を備える。ＳｂＲｄインジケータは、読出し又は書込みがアップグレードのために比較される場合に指示する。ＲＴポート４４ＥはＳｂＡｃｋを用いてアップグレード要求を承認する。一実施例において、サイドバンドアップグレードを実行するメモリコントローラ４０内のハードウェアは図１８に示すものと同様であり、そのプロセスは図１９に示すものと同様である。新たに受信したメモリオペレーションは、上記記載において、受信したサイドバンド要求と置き換えられる。
【０１１０】
図２１は、年齢ベースのＱｏＳアップグレードを実装するメモリコントローラ４０の汎用オペレーションを示すフローチャートである。上述したように、ＭＩＦトランザクションキュー１７２は年齢に基づき優先度のアップグレードを実行する。他の実施例では、年齢ベースＱｏＳアップグレードを同様に実行する。図２１は理解を容易にするために特定の順序でブロックを示しているが、他の順序も用いられる。メモリコントローラ４０の組み合わせ論理において並行してブロックが実行される。ブロック、ブロックの組み合わせ、及び／又はフローチャートは、全体として、マルチクロックサイクルでパイプラインされる。メモリコントローラ４０は、図１９に示すオペレーションを実行するように構成される。年齢カウンタをアップグレードすること、及び対応するメモリをアップグレードすることは、各オペレーションのために並行して実行される。
【０１１１】
キュー（例えば、ＭＣＩＵキュー９０又は９２、ＰＳＱトランザクションキュー１１２、及び／又はＭＩＦトランザクションキュー１７２）の中にオペレーション入力があると、メモリコントローラ４０は各メモリオペレーションに年齢カウンタを割り当てる（ブロック２５０）。年齢カウンタは各キューで異なり、キューからキューへ運ばれる必要はない。あるいはまた、年齢カウンタはＭＣＩＵで割り当てられ、他のキューを通じて運ばれる。年齢カウンタの初期値は各メモリオペレーションのＱｏＳパラメータ（例えば、より高いＱｏＳ値に関する短い値）に基づいている。この初期値は固定的であるかプログラム可能である。
【０１１２】
メモリコントローラ４０は、所与の年齢カウンタをアップグレードするアップグレードイベントを検出する（判断ブロック２５２）。アップグレードイベントは年齢カウンタがどのように測定されるかによって変化する。例えば、幾つかの実施例では、より若いメモリオペレーションによってバイパスされるメモリオペレーションの回数という観点から年齢を測定する。このような実施例では、アップグレードイベントはメモリオペレーションのバイパスである。他の実施例では、年齢としてクロックサイクルをカウントする。そしてアップグレードイベントはクロックが生じたり又は落ちたりする年齢である。さらに他の実施例では、他の方法で年齢を定義し、アップグレードイベントはそれに従って検出される。アップグレードイベントを検出することに応じて（判断ブロック２５２の“ｙｅｓ”）、メモリコントローラ４０は年齢カウンタを減少させる（ブロック２５４）。
【０１１３】
メモリコントローラ４０は、所与の年齢カウンタが期限切れであるか否かを検出する（判断ブロック２５６）。期限切れである場合（判断ブロック２５６の“ｙｅｓ”）、メモリコントロール４０は同じセットのＱｏＳレベルにある次に高いレベルにＱｏＳレベルをアップグレードする（ブロック２５８）。アップグレードされたＱｏＳレベルが最高のレベルでなければ（例えば、ＲＴＲ、判断ブロック２６０の“Ｎｏ”）、メモリコントローラ４０は年齢ベースアップグレードに関する新たなＱｏＳレベルに基づき新たな年齢カウンタ値を割り当てる（ブロック２６２）。したがって、この実施例において、メモリオペレーションのＱｏＳレベルは、各仲介ＱｏＳレベルを通じて、メモリオペレーション年齢として最高ＱｏＳレベルにアップグレードされる。
【０１１４】
図２２を参照すると、システム３５０の一実施例のブロック図が示されている。システム３５０は、外部メモリ１２（例えば、図１のメモリ１２Ａ−１２Ｂ）に結合された集積回路１０の少なくとも１つのインスタンスを含む。集積回路１０は１以上の周辺機器３５４及び外部メモリ１２に結合する。電源供給３５６が提供され、集積回路１０に電圧を供給するとともに、１以上のメモリ１２及び／又は周辺機器３５４に電圧を供給する。幾つかの実施例において、１より多い集積回路１０のインスタンスが含まれる（そして同様に、１より多い外部メモリ１２のインスタンスが含まれる）。
【０１１５】
周辺機器３５４はシステム３５０のタイプによって望しい回路を含む。例えば、一実施例において、システム３５０はモバイル機器（例えば、携帯情報端末（ＰＤＡ）、スマートフォンなど）であり、そして周辺機器３５４は様々なタイプの無線通信（例えば、ｗｉｆｉ、ｂｌｕｅｔｏｏｔｈ、セルラー、ＧＰＳなど）を含む。また、周辺機器３５４はＲＡＭ記憶媒体、固体記憶媒体、ディスク記憶媒体を含む追加的ストレージを含む。周辺機器３５４はディスプレイスクリーンなど（例えば、タッチディスプレイスクリーン又はマルチタッチディスプレイスクリーン、キーボード若しくは他の入力デバイス、マイクロフォン、スピーカー）のユーザインタフェース機器を含む。他の実施例では、システム３５０は任意のタイプのコンピュータシステム（例えば、デスクトップＰＣ、ラップトップ、ワークステーション、ネットトップなど）である。
【０１１６】
上述したように開示が理解される場合、様々なバリエーション及び修正が当業者にとって明らかとなる。添付の図面はこのようなバリエーション及び修正をとらえるために解釈されることを意図している。
【図１】
0005610636.tif 000002
【図２】
0005610636.tif 000003
【図３】
0005610636.tif 000004
【図４】
0005610636.tif 000005
【図５】
0005610636.tif 000006
【図６】
0005610636.tif 000007
【図７】
0005610636.tif 000008
【図８】
0005610636.tif 000009
【図９】
0005610636.tif 000010
【図１０】
0005610636.tif 000011
【図１１】
0005610636.tif 000012
【図１２】
0005610636.tif 000013
【図１３】
0005610636.tif 000014
【図１４】
0005610636.tif 000015
【図１５】
0005610636.tif 000016
【図１６】
0005610636.tif 000017
【図１７】
0005610636.tif 000018
【図１８】
0005610636.tif 000019
【図１９】
0005610636.tif 000020
【図２０】
0005610636.tif 000021
【図２１】
0005610636.tif 000022
【図２２】
0005610636.tif 000023