(57)【特許請求の範囲】
【請求項１】
メモリアクセス要求を受信し、前記メモリアクセス要求を、それぞれバンクアドレス及び行アドレスを含むデコードされたメモリアドレスにデコードするデコーダ（３０６）と、
前記デコーダ（３０６）に接続され、前記デコードされたメモリアドレスを記憶するキュー（３１８）と、
前記キュー（３１８）に接続され、前記キュー（３１８）からエントリを前記デコードされたメモリアドレスに基づいて効率的に選択するアービタ（３１６）と、
前記アービタ（３１６）に接続された競合検出器（３２０）であって、メモリのサブセット内の閾値を超える行バッファ競合の数である、前記アービタ（３１６）によって選択されたエントリの頻繁な競合を識別し、前記頻繁な競合に関連するメモリ行を、元のメモリバンクから第２メモリバンク内のメモリ行に再マッピングすることを選択的にトリガする、競合検出器（３２０）と、
前記競合検出器（３２０）とキュー（３１８）とに接続された間接テーブル（３０４）であって、再マッピングされた物理メモリアドレスと、物理メモリアドレスに関するメモリのサブセット内のデータがメモリの別のサブセットに再マッピングされたことを示すヒット信号と、メモリのサブセット内のデータがメモリの別のサブセットに再マッピングされていないことを示すミス信号と、のうち少なくとも１つを選択的に提供する、間接テーブル（３０４）と、を備える、
メモリコントローラ（２９０／３００）。
【請求項２】
前記競合検出器（３２０）は、メモリ行アクティブカウント、及び、アクティブ毎のメモリ行アクセスカウントを監視する、
請求項１のメモリコントローラ（２９０／３００）。
【請求項３】
前記競合検出器（３２０）は、メモリ行のメモリ行アクティブカウントが、所定のメモリ行アクティブカウント閾値よりも多く、アクティブ毎のメモリ行アクセスが、所定のアクティブ毎のメモリ行アクセス閾値よりも少ない場合に、前記メモリのサブセットにおける頻繁な競合を判別する、
請求項２のメモリコントローラ（２９０／３００）。
【請求項４】
前記競合検出器（３２０）は、頻繁な競合の割合を検出するために、最も頻繁にオープン及びクローズされ、閾値未満の介在するアクセスを有する行を識別する、
請求項１のメモリコントローラ（２９０／３００）。
【請求項５】
前記競合検出器（３２０）は、メモリバンクにおいて、バンク毎のアクティブカウントが、所定のバンク毎のアクティブカウント閾値よりも多く、バンク毎のアクティブカウント毎のアクセスが、所定のバンク毎のアクティブ毎のアクセスカウント閾値よりも少ない場合に、前記メモリバンクに頻繁な競合が関連すると判別する、
請求項１のメモリコントローラ（２９０／３００）。
【請求項６】
前記競合検出器（３２０）は、データを、頻繁に競合するメモリのサブセット内の行から、競合頻度の低い行を少なくとも有するメモリの別のサブセットに選択的にコピーする、
請求項１のメモリコントローラ（２９０／３００）。
【請求項７】
前記再マッピングされた物理メモリアドレスは、前記元のメモリバンクよりも競合頻度の低い行を少なくとも有するバンクに対応し、
前記元のメモリバンクは、頻繁な競合が発生している前記物理メモリアドレスに関連付けられている、
請求項１のメモリコントローラ（２９０／３００）。
【請求項８】
第１メモリバンクと第２メモリバンクとを有するメモリ（１２０）と、
メモリアクセス要求を受信し、前記メモリアクセス要求を、それぞれバンクアドレス及び行アドレスを含むデコードされたメモリアドレスにデコードするデコーダ（３０６）と、
前記デコーダ（３０６）に接続され、前記デコードされたメモリアドレスを記憶するキュー（３１８）と、
前記キュー（３１８）に接続され、前記キュー（３１８）からエントリを前記デコードされたメモリアドレスに基づいて効率的に選択するアービタ（３１６）と、
前記メモリ（１２０）に接続され、メモリアクセス情報を受信するように構成された競合検出器（３２０）であって、前記第１メモリバンクのメモリアクセス統計（３１４）を追跡し、前記第１メモリバンクが、前記アービタ（３１６）によって選択されたエントリの頻繁な行競合を有するかどうかを判別し、前記第１メモリバンク内の頻繁な行競合を前記第２メモリバンクに再マッピングする、競合検出器（３２０）と、
前記競合検出器（３２０）に接続された間接テーブル（３０４）であって、メモリアクセス要求を受信し、前記頻繁な行競合の前記第２メモリバンクへの再マッピングに応じて、アドレスを、動的に選択された物理メモリアドレスにリダイレクトするように構成された間接テーブル３０４と、を備える、
データ処理システム（１００）。
【請求項９】
前記間接テーブル（３０４）からの前記動的に選択された物理メモリアドレスを記憶するキュー（３１８）と、
前記キュー（３１８）に保留されている動的に選択された物理メモリアドレスのグループの中から前記動的に選択された物理メモリアドレスを選択して、メモリチャネルに発行するアービタ（３１６）と、をさらに備える、
請求項８のデータ処理システム（１００）。
【請求項１０】
前記競合検出器（３２０）は、
メモリアクセス統計を記憶する追跡システム（３１４）と、
前記メモリアクセス統計から、メモリ行が頻繁な競合に関連付けられている場合を判別する競合ロジック（３１２）と、を備える、
請求項８のデータ処理システム（１００）。
【請求項１１】
前記第２メモリバンクは、前記頻繁な行競合を引き起こす前記行に関連するバンクよりも競合頻度の低い行を少なくとも有するメモリバンクである、
請求項８のデータ処理システム（１００）。
【請求項１２】
前記競合検出器（３２０）は、オペレーティングシステムの空きリストを利用して再マッピングのターゲットを判別するために、少なくとも１つの空きメモリ行を識別する、
請求項８のデータ処理システム（１００）。
【請求項１３】
メモリのサブセットに対するアクセス統計に基づいて競合を検出する方法（５００／６００）であって、
前記メモリのサブセット内のオープンな行のクローズを検出すること（５０２）と、
前記メモリのサブセット内の少なくとも１つの行のアクティビティを選択的に監視すること（５０４）と、
最新の行のクローズに関連する行が追跡システム（３１４）に記憶されていることに応じて、前記行に対応する行アクセス統計を更新すること（５０６）と、
最新の行アクティビティに関連する前記行が前記追跡システム（３１４）内に存在しないことに応じて、前記追跡システム（３１４）内において、最近アクセスされていない行及びアクティブ毎のアクセスが最も多い行のうち何れかの行アクセス統計を、最新の行のクローズに関連する行アクセス統計で置換すること（５０８）と、
アクティブカウント毎の行アクセスを、前記メモリのサブセット内の少なくとも１つの行に関する所定のアクティブ毎の行アクセス閾値と比較して（５１２）、行が再マッピングの候補であるかどうかを判別すること（５１４）と、を含む、
方法（５００／６００）。
【請求項１４】
メモリ（１２０）のサブセット内のメモリ要求を、前記メモリ（１２０）内の異なるバンクに再マッピングする方法（７００）であって、
受信したメモリアクセス要求を、それぞれバンクアドレス及び行アドレスを含むデコードされたメモリアドレスにデコードすることと、
前記デコードされたメモリアドレスをキュー（３１８）に記憶することと、
前記キュー（３１８）からエントリを前記デコードされたメモリアドレスに基づいて効率的に選択することと、
前記キュー（３１８）からエントリを選択したことに応じて、頻繁な行競合を検出することと、
間接テーブル（３０４）において、競合検出器からのエントリの再マッピング要求を検出すること（７０２）と、
空き行テーブルにおいて、前記異なるバンク内の少なくとも１つの行が再マッピング用に確保され利用可能であることを識別すること（７０４）と、
少なくとも１つのメモリ行が、再マッピングされたメモリ行を受信する予定であると示すこと（７０６）と、
データを、１つ以上の競合する行から、競合がより少ない前記異なるバンク内の識別された行にコピーすること（７０８）と、
前記空き行テーブル及び前記間接テーブルのうち１つ以上を更新すること（７１０）と、を含む、
方法（７００）。
【請求項１５】
再マッピングされたメモリ行を、元のマッピングにリストアするどうかを判別すること（８０２）と、
前記元のマッピングにリストアすると判別したことに応じて、再マッピングされた行内のデータを元の行にコピーすること（８０４）と、
前記空き行テーブルを更新すること（８０８）と、
リストアされた行に関して、間接テーブルエントリの割り当てを解除すること（８１０）と、をさらに含む、
請求項１４の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
コンピュータシステム内のメモリは、通常、アドレス可能な半導体メモリ、又は、コンピュータシステムの主記憶装置として利用される集積回路に関連する。半導体メモリには、主に揮発性及び不揮発性の２種類が存在する。不揮発性メモリは、現在のシステムにおいて典型的なフラッシュメモリであり、多くの場合、二次メモリとして利用される。揮発性メモリ又はメインメモリは、多くの場合、動的ランダムアクセスメモリ（ＤＲＡＭ）ベースのアーキテクチャである。データは、プロセッサとＤＲＡＭメインメモリとの間を、メモリバスを介して行き来する。プロセッサ速度の継続的な向上とメインメモリ要件の増大は、コンピューティングシステムにおけるパフォーマンス及びエネルギーのボトルネックの一因となっている。
【０００２】
ＤＲＡＭデバイスは、メモリの読み書きが行われる行バッファ（１バンク当たり少なくとも１つ）を用いる。行バッファの行とは異なるＤＲＡＭ行にアクセスするには、現在バッファされている行又はオープンな行をクローズし、要求された行をアクティブにする必要がある。これは、行バッファ競合と呼ばれ、パフォーマンス及びエネルギーの低下を招く。ＤＲＡＭ行バッファの競合は、利用可能なメモリ帯域幅の最適利用を制限し、ＤＲＡＭ行をクローズしてアクティブにすることによるメモリアクセスレイテンシの増加をもたらす。メモリアクセス競合は、オペレーティングシステム（ＯＳ）による物理アドレスの割り当てが最適ではないため、さらに増加する。さらに、ソフトウェアメモリアクセスパターンは、同じ行バッファに対するアクセスの競合を頻繁に引き起こしてスラッシングを引き起こし、わずか数回のアクセスの後に行を強制的にクローズすることによって、メモリシステムのパフォーマンス及びエネルギー効率を低下させる。
【図面の簡単な説明】
【０００３】
【図１】いくつかの実施形態による、データ処理システムのブロック図である。
【図２】図１のデータ処理システムで使用するのに適した処理ユニットのブロック図である。
【図３】いくつかの実施形態による、図２の処理ユニットでの使用に適したメモリコントローラ、関連するアービトレーションシステム及び競合検出器のブロック図である。
【図４】いくつかの実施形態による、図２の処理ユニットで使用するためのメモリコントローラ及び関連するメモリバスのブロック図である。
【図５】いくつかの実施形態による、図３のメモリコントローラによって使用され得る行レベル競合検出のフロー図である。
【図６】いくつかの実施形態による、図３のメモリコントローラによって使用され得るバンクレベル競合検出のフロー図である。
【図７】いくつかの実施形態による、図３のメモリコントローラによって使用され得るメモリ再マッピングのフロー図である。
【図８】いくつかの実施形態による、図３のメモリコントローラによって使用され得る間接テーブルエントリの割り当て解除のフロー図である。
【発明を実施するための形態】
【０００４】
以下の説明では、異なる図面における同一の符号の使用は、同様又は同一のアイテムを示している。特に断りのない限り、「接続」という用語及びこれに関連する動詞の形態は、当該技術分野で既知の手段による直接的な接続及び間接的な電気接続の両方を含み、特に断りのない限り、直接な接続の説明は、適切な形態の間接的な電気接続を同様に使用する代替の実施形態を含む。さらに、「再マッピング」及び「マイグレーション」という用語やこれらの変形は、「再配置」の説明用語として互換的に使用される。
【０００５】
一形態で後述するように、メモリコントローラは、キューと、アービタと、競合検出器と、間接テーブルと、を含む。キューは、キューからエントリを選択するためにアービタに接続されている。競合検出器は、アービタに接続されており、メモリのサブセット内の閾値を超える多数の行バッファ競合に応じて、頻繁な競合を識別する。さらに、競合検出器は、頻繁な競合に関連するメモリ行を、第１メモリバンクから第２メモリバンク内の競合の少ないメモリ行に再マッピングすることを選択的にトリガする。間接テーブルは、競合検出器及びキューに接続されており、物理メモリアドレスに関するメモリのサブセット内のデータがメモリの他のサブセットに再マッピングされたことを示す再マッピングされたアドレス及びヒット信号、又は、サブセット内のデータがメモリの別のセットに再マッピングされていないことを示すミス信号を、選択的に提供する。
【０００６】
さらに別の形態では、データ処理システムは、メモリと、競合検出器と、間接テーブルと、を含む。メモリは、第１メモリバンクと、第２メモリバンクと、を含む。競合検出器は、メモリに接続されており、メモリアクセス情報を受信する。競合検出器は、第１メモリバンクのメモリアクセス統計を追跡し、第１メモリバンクがパフォーマンスクリティカルな頻繁な行競合を含むかどうかを判別する。また、競合検出器は、第１メモリバンク内のパフォーマンスクリティカルな頻繁な行競合を、第２メモリバンクに再マッピングする。間接テーブルは、競合検出器に接続されており、メモリアクセス要求を受信する。パフォーマンスクリティカルな頻繁な行競合の第２メモリバンクへの再マッピングに応じて、間接テーブルは、アドレスを、第２メモリバンク内の動的に選択された物理メモリアドレスにリダイレクトする。
【０００７】
さらに別の形態では、メモリのサブセットへのアクセス統計に基づく競合検出方法を説明する。メモリのサブセット内のオープンな行のクローズが検出される。メモリのサブセット内の少なくとも１つの行のアクティビティが選択的に監視される。最新の行クローズに関連する行に応じて、当該行に対応する行アクセス統計が追跡システムにおいて更新される。最新の行アクティビティに関連する行が追跡システム内に存在しないことに応じて、競合検出器は、追跡システムにおいて、最近アクセスされていない行、又は、アクティブにされた行毎の最新アクセスの行アクセス統計を、最新の行クローズに関連する行アクセス統計で置き換える。メモリのサブセット内の少なくとも１つの行に関して、アクティブカウント毎の行アクセスカウントがアクティブ閾値毎の所定の行アクセスと比較され、行が再マッピングの候補であるかどうかを判別する。
【０００８】
さらに別の形態では、メモリのサブセットにおいて、メモリを再マッピングし、間接テーブルエントリを割り当てる方法は、間接テーブルにおいて、競合検出器からの行の再マッピング要求を検出することを含む。別のバンク内の少なくとも１つの行が、再マッピング用に確保され利用可能であると識別される。さらに、少なくとも１つのメモリ行が、再マッピングされたメモリ行を受信する予定であると識別される。データは、競合する行から、競合の少ない別のバンク内の識別された行にコピーされ、間接テーブルが更新される。
【０００９】
図１は、いくつかの実施形態による、データ処理システム１００のブロック図である。データ処理システム１００は、概して、データプロセッサ１１０と、メモリシステム１２０と、周辺機器相互接続エクスプレス（ＰＣＩｅ）システム１５０と、ユニバーサルシリアルバス（ＵＳＢ）システム１６０と、ディスクドライブ１７０と、を含む。データプロセッサ１１０は、データ処理システム１００の中央処理装置（ＣＰＵ）として動作し、現代のコンピュータシステムにおいて有用な様々なバス及びインタフェースを提供する。これらのインタフェースには、２つのダブルデータレート（ＤＤＲｘ）メモリチャネルと、ＰＣＩｅリンクに接続するためのＰＣＩｅルートコンプレックスと、ＵＳＢネットワークに接続するためのＵＳＢコントローラと、ＳＡＴＡ（Serial Advanced Technology Attachment）大容量記憶デバイスへのインタフェースと、が含まれる。
【００１０】
メモリシステム１２０は、メモリチャネル１３０と、メモリチャネル１４０と、を含む。メモリチャネル１３０は、本例において別々のランクに対応する代表的なＤＩＭＭ１３４，１３６，１３８を含む、メモリバス１３２に接続されたデュアルインラインメモリモジュール（ＤＩＭＭ）のセットを含む。同様に、メモリチャネル１４０は、代表的なＤＩＭＭ１４４，１４６，１４８を含む、メモリバス１４２に接続されたＤＩＭＭのセットを含む。
【００１１】
ＰＣＩｅシステム１５０は、データプロセッサ１１０内のＰＣＩｅルートコンプレックスに接続されたＰＣＩｅスイッチ１５２と、ＰＣＩｅデバイス１５４と、ＰＣＩｅデバイス１５６と、ＰＣＩｅデバイス１５８と、を含む。ＰＣＩｅデバイス１５６は、システム基本入出力システム（ＢＩＯＳ）メモリ１５７に接続されている。システムＢＩＯＳメモリ１５７は、例えば読み出し専用メモリ（ＲＯＭ）、フラッシュＥＥＰＲＯＭ（electrically erasable programmable ROM）等の様々な不揮発性メモリタイプの何れかであってもよい。
【００１２】
ＵＳＢシステム１６０は、データプロセッサ１１０内のＵＳＢマスタに接続されたＵＳＢハブ１６２と、ＵＳＢハブ１６２にそれぞれ接続された代表的なＵＳＢデバイス１６４，１６６，１６８と、を含む。ＵＳＢデバイス１６４，１６６，１６８は、例えばキーボード、マウス、フラッシュＥＥＰＲＯＭポート等のデバイスであってもよい。
【００１３】
ディスクドライブ１７０は、ＳＡＴＡバスを介してデータプロセッサ１１０に接続されており、オペレーティングシステム、アプリケーションプログラム、アプリケーションファイル等のための大容量ストレージを提供する。
【００１４】
データ処理システム１００は、メモリチャネル１３０及びメモリチャネル１４０を設けることによって、最新のコンピューティングアプリケーションでの使用に適している。各メモリチャネル１３０，１４０は、例えばＤＤＲバージョン４（ＤＤＲ４）、低電力ＤＤＲ４（ＬＰＤＤＲ４）、グラフィックスＤＤＲバージョン５（ｇＤＤＲ５）及び高帯域幅メモリ（ＨＢＭ）等のＤＤＲメモリに接続されてもよいし、将来のメモリ技術に適応されてもよい。これらのメモリは、高いバス帯域幅及び高速動作を提供する。
【００１５】
図２は、図１のデータ処理システム１００での使用に適したデータプロセッサ２００のブロック図である。データプロセッサ２００は、概して、中央処理装置（ＣＰＵ）コアコンプレックス２１０と、グラフィックスコア２２０と、ディスプレイエンジン２３０のセットと、メモリ管理ハブ２４０と、データファブリック２５０と、周辺機器コントローラ２６０のセットと、周辺バスコントローラ２７０のセットと、システム管理ユニット（ＳＭＵ）２８０と、メモリコントローラ２９０のセット（メモリコントローラ２９２，２９４）と、を含む。
【００１６】
ＣＰＵコアコンプレックス２１０は、ＣＰＵコア２１２と、ＣＰＵコア２１４と、を含む。本例において、ＣＰＵコアコンプレックス２１０は２つのＣＰＵコアを含むが、他の実施形態では、ＣＰＵコアコンプレックスは任意の数のＣＰＵコアを含んでもよい。各ＣＰＵコア２１２，２１４は、制御ファブリックを形成するシステム管理ネットワーク（ＳＭＮ）と、データファブリック２５０とに双方向に接続されており、メモリアクセス要求をデータファブリック２５０に提供することができる。各ＣＰＵコア２１２，２１４は、単一コアであってもよいし、例えばキャッシュ等の特定のリソースを共有する２つ以上の単一コアを有するコアコンプレックスであってもよい。
【００１７】
グラフィックスコア２２０は、例えば、頂点処理、フラグメント処理、シェーディング、テクスチャブレンディング等のグラフィックス動作を、高度に統合された並行形式で実行することの可能な高性能グラフィックス処理ユニット（ＧＰＵ）である。グラフィックスコア２２０は、ＳＭＮとデータファブリック２５０とに双方向に接続されており、メモリアクセス要求をデータファブリック２５０に提供することができる。これに関して、データプロセッサ２００は、ＣＰＵコアコンプレックス２１０及びグラフィックスコア２２０が同じメモリ空間を共有するユニファイドメモリアーキテクチャ、又は、ＣＰＵコアコンプレックス２１０及びグラフィックスコア２２０がメモリ空間の一部を共有するメモリアーキテクチャをサポートしてもよいが、グラフィックスコア２２０は、ＣＰＵコアコンプレックス２１０がアクセスできない専用のグラフィックスメモリを使用してもよい。
【００１８】
ディスプレイエンジン２３０は、グラフィックスコア２２０によって生成されたオブジェクトをレンダリング及びラスタライズして、モニタに表示する。グラフィックスコア２２０及びディスプレイエンジン２３０は、メモリシステム１２０の適切なアドレスに一様に変換されるために共通のメモリ管理ハブ２４０に対して双方向に接続されており、メモリ管理ハブ２４０は、かかるメモリアクセスを生成し、メモリシステムから返された読み出しデータを受信するために、データファブリック２５０に対して双方向に接続されている。
【００１９】
データファブリック２５０は、任意のメモリアクセスエージェントとメモリコントローラ２９０との間でメモリアクセス要求及びメモリ応答をルーティングするためのクロスバースイッチを含む。また、データファブリック２５０は、システム構成に基づくメモリアクセスの宛先と、仮想接続毎のバッファとを判断するためのシステムメモリマップであって、ＢＩＯＳによって定義されたシステムメモリマップを含む。
【００２０】
周辺機器コントローラ２６０は、ＵＳＢコントローラ２６２と、ＳＡＴＡインタフェースコントローラ２６４と、を含み、これらの各々は、システムハブ２６６及びＳＭＮバスに対して双方向に接続されている。これらの２つのコントローラは、データプロセッサ２００で使用可能な周辺機器コントローラの単なる例示である。
【００２１】
周辺バスコントローラ２７０は、システムコントローラ（すなわち「サウスブリッジ」（ＳＢ））２７２と、ＰＣＩｅコントローラ２７４と、を含み、これらの各々は、入出力（Ｉ／Ｏ）ハブ２７６及びＳＭＮバスに対して双方向に接続されている。また、Ｉ／Ｏハブ２７６は、データファブリック２５０に対して双方向に接続されている。
【００２２】
ＳＭＵ２８０は、データプロセッサ２００上のリソースの動作を制御し、これらのリソース間の通信を同期させるローカルコントローラである。ＳＭＵ２８０は、データプロセッサ２００上の様々なプロセッサのパワーアップシーケンシングを管理し、リセット、イネーブル及び他の信号を介して複数のオフチップデバイスを制御する。ＳＭＵ２８０は、データプロセッサ２００の各コンポーネントにクロック信号を提供するために、図２に示されていない１つ以上のクロック源（例えば位相ロックループ（ＰＬＬ）等）を含む。また、ＳＭＵ２８０は、様々なプロセッサ及び他の機能ブロックの電力を管理し、ＣＰＵコア２１２，２１４及びグラフィックスコア２２０から測定された電力消費値を受信して、適切な電力状態を判断してもよい。
【００２３】
図３は、いくつかの実施形態による、図２のデータプロセッサ２００で使用するメモリコントローラ３００のブロック図である。メモリコントローラ３００は、概して、アービトレーションシステム３０５と、間接テーブル３０４と、競合検出器３２０と、クリアロジック３２４と、を含む。アービトレーションシステム３０５は、バンク／チャネル／行デコーダ３０６と、マルチプレクサ３０８と、アービタ３１６と、キュー３１８と、を含む。競合検出器３２０は、競合ロジック３１２と、追跡システム３１４と、を含む。メモリコントローラ３００は、単一のメモリチャネル用のメモリコントローラのインスタンス化である。
【００２４】
バンク／行／チャネルデコーダ３０６は、データファブリック２５０からメモリアクセス要求を受信するための入力と、物理メモリアドレスをマルチプレクサ３０８及び間接テーブル３０４に提供するための出力と、を含む。メモリアクセス要求は、正規化フォーマットで表された物理アドレス空間内のアクセスアドレスを含む。バンク／行／チャネルデコーダ３０６は、正規化アドレスを、メモリシステム１２０内の実際のメモリデバイスをアドレス指定するために、及び、関連するアクセスを効率的にスケジューリングするために使用可能なフォーマットに変換する。このフォーマットは、メモリアクセス要求を、特定のランク、行アドレス、列アドレス、バンクアドレス及びバンクグループに対応付ける領域識別子を含む。システムＢＩＯＳは、起動時に、メモリシステム１２０内のメモリデバイスに問い合わせてこれらのサイズ及び構成を判別し、サイズ及び構成を競合検出器３２０に提供する。また、バンク／行／チャネルデコーダ３０６は、物理メモリアドレス情報を、メモリシステム内のランク、行アドレス、列アドレス、バンクアドレス及びバンクグループにデコードする。バンク／行／チャネルデコーダ３０６は、デコードされたメモリアドレスをマルチプレクサ３０８に提供する。
【００２５】
マルチプレクサ３０８は、バンク／行／チャネルデコーダ３０６に接続された第１入力と、第２入力と、ヒット信号を受信するための制御入力と、出力と、を含む。間接テーブル３０４に接続された第２入力は、再マッピングされたアドレスを受信するためのものである。出力信号は、キュー３１８に接続されている。
【００２６】
キュー３１８は、マルチプレクサ３０８の出力に接続された入力と、制御入力と、出力と、を含む。キュー３１８は、ＣＰＵコア２１２，２１４及びグラフィックスコア２２０等のデータ処理システム１００内のメモリアクセスエージェントから受信したメモリアクセス要求を処理する。キュー３１８は、マルチプレクサ３０８によって提供されるアドレスフィールドと、アービタ３１６がメモリアクセスを効率的に選択するのを可能にする他のアドレス情報と、を記憶する。
【００２７】
アービタ３１６は、メモリアクセスを待機しているデコードされた物理メモリアドレスをキュー３１８内にスケジュールし、追跡システム３１４に更新を提供する。また、アービタ３１６は、キュー３１８と双方向に接続されており、追跡システム３１４に接続されている。追跡システムへの更新は、動的に選択された物理メモリアドレスのメモリアクセス統計に対応する。アービタ３１６は、メモリアクセスを選択する場合に順序付けルールを実施するための情報を含み、メモリバスへのアクセスをスケジューリングすることによって効率化を可能にする。アービタ３１６は、ＤＲＡＭタイミングパラメータに基づいて、キュー３１８内の特定のアクセスが発行に適しているかどうか判別することによって、タイミングを使用して適切なタイミング関係を実施する。
【００２８】
競合検出器３２０は、競合ロジック３１２と、追跡システム３１４と、を含む。競合ロジック３１２は、メモリアクセス統計から、メモリ行が頻繁な競合を引き起こす場合を判別する。また、競合ロジック３１２は、間接テーブル３０４及び追跡システム３１４に双方向に接続されている。頻繁な行競合は、メモリのサブセット内の閾値を超える多くの行バッファ競合である。頻繁な行競合は、メモリ行のアクティブカウントが、定義されたアクティブカウントの閾値よりも多く、アクティブカウント毎のメモリアクセスが、アクティブカウント毎の定義されたアクセス閾値よりも少ない場合に発生する。競合ロジック３１２は、競合検出器３２０の選択動作を制御するロジックを提供する。競合検出器３２０は、メモリコントローラ３００のコンポーネントとして説明したが、一実施形態では、メモリコントローラ３００とは別のコンポーネントである。追跡システム３１４は、メモリアクセス統計を記憶し、競合ロジック３１２に双方向に接続されており、アービタ３１６からアービトレートされた入力を受信する。追跡システム３１４は、キャッシュメモリ、アクセス統計テーブル又はメモリ行アクセスカウントを追跡するためのアルゴリズムとして実装される。
【００２９】
競合検出器３２０は、第１メモリバンクのメモリアクセス統計を追跡し、第１メモリバンクが頻繁な競合行を含むかどうかを判別する。頻繁な競合行の存在を検出したことに応じて、競合検出器３２０は、第２メモリバンク内の利用可能な行への頻繁な競合行のマイグレーションをトリガする。また、データ処理システムは、競合検出器３２０に接続された間接テーブル３０４を含み、間接テーブル３０４は、マイグレーションされた行のレコードを保持する。間接テーブル３０４は、頻繁な競合行のマイグレーションの後に、メモリ要求を受信し、第１メモリバンク内の頻繁な競合行への要求を、頻繁な競合行がマイグレーションされた第２メモリバンク内の行に再マッピングする。
【００３０】
間接テーブル３０４は、アービタ３１６のために、メモリチャネルの各バンク及びランクにおける選択（再マッピングされた）メモリページに関する状態情報を保持する。また、間接テーブル３０４は、競合ロジック３１２に双方向に接続されている。さらに、間接テーブル３０４は、バンク／行／チャネルデコーダ３０６及びコンテンツクリアロジック３２４に接続された入力と、マルチプレクサ３０８に接続された出力と、を有する。
【００３１】
コンテンツクリアロジック３２４は、間接テーブル３０４への出力と、競合ロジック３１２への出力と、を含む。コンテンツクリアロジック３２４は、間接テーブル３０４及び競合ロジック３１２に対してリフレッシュコマンドを定期的に生成する。さらに、コンテンツクリアロジック３２４は、間接テーブル３０４及び競合ロジック３１２のコンテンツをクリア及び／又はリセットするコマンドの手動及び自動生成を可能にする。
【００３２】
動作中、図３のメモリコントローラ３００等のメモリコントローラは、図２のＣＰＵコアコンプレックス２１０内のＣＰＵコア又はグラフィックスコア２２０等のメモリアクセスエージェントに接続されており、このメモリアクセスエージェントからメモリアクセス要求を受信する。また、メモリコントローラ３００は、図１のメモリシステム１２０に接続するように構成される。上述したように、メモリシステム１２０は、図１のＤＩＭＭ１３４，１３６，１３８として実装された複数のランクのメモリを含むことができる。アービタ３１６は、パフォーマンス及び効率の考慮に基づく所定の基準に基づいて、キュー３１８からメモリアクセス要求を選択する。競合検出器３２０は、メモリバスアクセス要求に応じて、メモリバンク内のアクティビティを監視して、パフォーマンスクリティカルなパターンを選択的に追跡する。
【００３３】
一実施形態では、競合検出器３２０は、ＤＲＡＭ行の粒度のアクセス統計を監視して、パフォーマンスクリティカルな競合を検出する。概して、バンク／行／チャネルデコーダ３０６は、メモリアクセス要求を受信し、デコードされた物理アドレスをマルチプレクサ３０８及び間接テーブル３０４に提供する。キュー３１８は、マルチプレクサ３０８を介して、バンク／チャネル／行デコーダ３０６又は間接テーブル３０４によって選択的に提供されたメモリアクセス要求を記憶する。アービタ３１６は、キュー３１８内で保留中のメモリ要件の中からメモリ要求を選択し、メモリチャネルに発行する。追跡システム３１４は、各メモリ行へのアクセスを検出し、メモリ行アクティブカウント及びアクティブカウント毎のメモリ行アクセスを監視する。アクティブカウントが所定のアクティブカウントよりも多く、アクティブ毎のアクセスが所定のアクティブ毎のアクセスよりも少ない行はパフォーマンスクリティカルであるとみなされ、競合ロジック３１２によって再マッピング候補としてマークされる。
【００３４】
例えば、追跡システム３１４は、メモリキャッシュ内のＤＲＡＭバンク毎に、最新アクセスされたＣ行の行アクセス情報を保持する。ここで、Ｃは、ＤＲＡＭバンク毎のメモリキャッシュ内のエントリの数である。各エントリは、対応するＤＲＡＭ行について、アクティブカウントと、アクティブ毎のアクセスカウントのおおよその移動平均と、を追跡する。追跡システム３１４の更新は、現在オープンな行Ｒがクローズされているときに行われる。追跡システム３１４内の行Ｒに対する既存のエントリが存在しない場合、エントリは、メモリ行の粒度置換ポリシーを用いて挿入される。一実施形態では、メモリ行の粒度置換ポリシーは、最長時間未アクセス（least-recently-accessed）行のエントリを行Ｒのエントリで置換する。他の実施形態では、置換ポリシーは、行Ｒがアクティブにされてからの行Ｒへのアクセスカウントが、置換されるエントリにおけるアクティブ毎の平均アクセスカウントより少ない場合に、アクティブ毎の平均アクセスカウントが最も高い追跡システム３１４内のエントリ（すなわち、典型的にパフォーマンスクリティカルである可能性が最も低い行のエントリ）を、行Ｒのエントリで置換する。行Ｒのエントリが追跡システム３１４内に既に存在する場合には、行Ｒが更新される。次に、エントリの更新された行アクセス統計がチェックされ、行が、Ｎ回を超えてアクティブになったかどうか及びアクティブ毎の平均アクセスカウントがＭ未満であるかどうかが確認される。ここで、Ｎ及びＭは、所定の閾値又は動的に調整された閾値である。行が、Ｎ回を超えてアクティブになり且つアクティブ毎の平均アクセスカウントがＭ未満である場合、行Ｒは、パフォーマンスクリティカルな頻度ページ競合が頻繁に発生しておりり、マイグレーションの候補となる。
【００３５】
競合の激しい行が殆ど又は全くないバンクが、マイグレーション先となる。このようなバンクは、１）Ｎ回を超えるアクティブカウントを有する行が存在しない、２）アクティブ毎の平均アクセスカウントがＭ未満の行が存在しない、又は、３）１）及び２）の組み合わせであってもよい。ここで、Ｎ及びＭは、上述した変数と同じである。
【００３６】
一実施形態では、追跡システム３１４は、メモリ行の粒度置換ポリシー、追跡アルゴリズム又はアクセス統計テーブルを用いてキャッシュを実行することによって、パフォーマンスクリティカルな頻繁なページ競合の割合を維持する。メモリ行の粒度置換ポリシーは、メモリキャッシュ内に実装することができる。パフォーマンスクリティカルな行競合を有する行を判別することによって、追跡アルゴリズムを実施することができる。
【００３７】
例えば、多数決要素アルゴリズム（ＭＥＡ：Majority Element Algorithm）を使用して、閾値未満の介在するアクセスカウントで最も頻繁にオープン及びクローズされる行を識別することができる。ＭＥＡは、データ要素のストリーム内で最も頻繁に発生する要素の識別を可能にするデータ分析アルゴリズムである。閾値未満の介在するアクセスカウントでオープン及びクローズされる行のシーケンスが、ターゲットデータ要素である。ＭＥＡの追跡アルゴリズムは、最も頻繁に発生する要素を高い確率で記憶し、これにより、パフォーマンスクリティカルな頻繁なページ競合を有する行を競合ロジック３１２に提供する。
【００３８】
また、アクセス統計テーブルを、追跡システム３１４として実装することができる。アクセス統計テーブルは、全てのＤＲＡＭ行のエントリを有するフルテーブルである。アクセス統計テーブルを使用して、Ｎ回を超えるアクティブカウント及びアクティブ毎の平均アクセスがＭ未満の行を検索することによって、パフォーマンスクリティカルな頻繁なページ競合を判別することができる。ここで、Ｎ及びＭは、所定の閾値又は動的に調整される閾値である。行粒度追跡統計及びデータ構造は、もはや関連性がない遠い過去のイベントの影響を避けるために、定期的に又は特定の時点（例えば、新たなアプリケーションの起動時等）で、コンテンツクリアロジック３２４を介してクリア及び／又は再初期化されてもよい。
【００３９】
別の実施形態では、アクティブ及びアクティブ毎のアクセスに関するバンク毎の統計が保持される。概して、閾値Ｎ及びＭを使用して、バンクが、パフォーマンスクリティカルな頻繁な行競合（すなわち、Ｎ回を超えるアクティブ及びアクティブ毎の平均アクセスカウントがＭ未満の行）を有するかどうかが判別される。パフォーマンスクリティカルな頻繁な行競合をバンクが有する場合、当該バンクからマイグレートする特定の行を判別することができる。マイグレートする行を判別する第１例では、パフォーマンスクリティカルな頻繁な行競合を有するバンクを識別し、次に、当該バンクでオープンにされ、閾値未満のアクセスカウントでクローズされた１つ以上の行を再マッピングすることが含まれる。
【００４０】
さらに別の実施形態では、行のオープン及び行へのアクセスに関するバンク毎の統計に加えて、各バンク内の所定数の行に関する統計が保持される。行Ｒがクローズされた場合に、行Ｒが最後にオープンにされてからの行Ｒに対するアクセスカウントが所定の閾値Ｔ未満である場合、行識別及びアクセスカウントが追跡システム３１４に挿入される。追跡されたエントリのセットが満杯になると、新たなエントリが既存のエントリを置換することができる。置換したエントリは、セットの中で最も古いエントリであってもよいし、最大アクセスカウントを有するエントリであってもよい。１つ以上の実施形態では、（行Ｒの）新たなエントリが、統計が保持される行のセット内の全てのエントリのアクセスカウントよりも多いアクセスカウントを有する場合、（行Ｒの）新たなエントリは、セットに挿入されなくてもよい。パフォーマンスクリティカルな頻繁な行競合をバンクが有すると判別された場合、追跡システム３１４内で追跡された行のうち、最新のアクティブにおいて閾値未満のアクセスカウントを有する１つ以上の行が再マッピングされる。
【００４１】
図４は、動的メモリ再マッピングのためのメモリコントローラ及び関連するメモリバスを示す図である。メモリシステム４００は、メモリコントローラ４１０と、アービトレーションシステム４０５と、競合検出器エンジン４２０と、間接テーブル４０４と、を含む。メモリシステム４００は、メモリチャネル４５０を含む。メモリチャネル４５０は、メモリバス４５０に接続された代表的なメモリモジュール４５２，４５４，４５６を含む、メモリバスに接続されたメモリモジュールのセットを含む。この例では、メモリモジュールは、別々のランクに対応する。
【００４２】
間接テーブル４０４は、間接テーブル３０４と同様に、メモリチャネルの各バンク及びランク内の再マッピングされたアクティブページに関する状態情報を保持する。競合検出器エンジン４２０及び間接テーブル４０４は、メモリチャネル４５０に接続されており、メモリモジュール（４５２，４５４，４５６）間で共有されている。競合検出器エンジン４２０は、行アクセス情報を追跡し、再マッピングテーブル４０４は、メモリモジュール（４５２，４５４，４５６）内のメモリバンクの少なくともサブセットに亘って、再マッピング情報を保持する。
【００４３】
動作中、行バッファ競合を低減させるために、競合検出器エンジン４２０は、ランクのバンク内の競合の激しい行を、競合の少ないＤＲＡＭバンクにマイグレートすることをトリガする。競合の激しい行が殆ど又は全く存在しないバンクがマイグレーション先（すなわち、再マッピング先）となる。このようなバンクは、１）Ｎ回を超えるアクティブを有する行が存在しない、２）アクティブ毎の平均アクセスカウントがＭ未満の行が存在しない、又は、３）１）と２）の組み合わせ、に該当してもよい。ここで、Ｎ及びＭは、上述した変数と同じである。一実施形態では、競合ロジックは、ソース行からマイグレーション先バンク内の空き（未使用）行にデータをコピーする。他の実施形態では、競合検出器エンジン４２０は、システム内のコンピューティングデバイス（例えば、システム１００のプロセッサ１１０）を（例えば、割り込みによって）トリガして、ソース行からマイグレーション先バンク内の空き（未使用）行にデータをコピーさせる。データのコピーが完了すると、ソース行の対応する再マッピングを反映するように間接テーブル４０４が更新される。
【００４４】
第１例では、オペレーティングシステム（ＯＳ）が未使用のＯＳページを追跡するために保持する空きリストを使用して、異なるバンク内の空きＤＲＡＭ行をマイグレーション先として識別する。ＤＲＡＭ行の粒度がＯＳページの粒度と異なる場合（例えば、２Ｋの行サイズに対し、４Ｋのページサイズ）であっても、空きリストを使用して空き行が検索される。空き行が識別されると、対応するＯＳページが使用済みとしてマークされ、ＯＳが同じページを他の使用のために割り当てないように空きリストから削除される。
【００４５】
別の例では、競合検出器エンジン４２０は、再マッピングのために空き行の利用可能性を判別するハードウェアロジックを含む。各バンクのいくつかの行（例えば、各バンクの最上位Ｘ行）は、再マッピング用として最初に確保されている。一実施形態では、別々の追跡テーブルが、確保されている行の識別を追跡する。確保されている行が再マッピングのために要求されると、当該行が追跡テーブル内でマークされる。バンクに空き行がなくなると、バンクは、行が再び解放されるまで、再マッピング先としての適格性を失う。一実施形態では、競合ロジックは、１つ以上のバンク内の確保されている行をいつ増加するか、減らすか及び／若しくはデフラグを行うか、又は、他の方法で管理するかを動的に評価する。また、競合ロジックは、何れの行をいつ元のマッピングに戻すかを決定する。
【００４６】
一実施形態では、競合検出器エンジン４２０は、バンクに激しい競合がもはや存在しないと判別した場合、異なる行が現在再マッピングされている行よりもパフォーマンスクリティカルな頻繁な競合を有すると識別された場合、及び／又は、空きＯＳページの数が所定閾値を下回るほど減少した場合に、元のマッピングをリストアする必要があると判別する。したがって、競合検出器エンジン４２０は、元のマッピングをリストアし、これによりバンク内の物理アドレス空間を解放する。
【００４７】
競合検出器エンジン４２０は、１）再マッピングされた行のデータを元の行にコピーすること（再マッピング後に任意の書き込みが行われた場合）、２）確保されている行に関してテーブルを更新すること、及び、３）間接テーブル４０４内の対応するエントリの割り当てを解除すること、によって元のマッピングをリストアする。競合検出器エンジン４２０及び間接テーブル４０４は、同じアドレス空間を共有するメモリモジュールによって共有することができ、又は、メモリチャネル４５０内のみで再マッピングを制限するメモリチャネル毎の構造とすることができる。或いは、各プロセッサコア２１２又はコアグループ２１０は、同期的に更新される間接テーブル４０４のコピーを有することができる。間接テーブル４０４は、メモリ要求が個々のメモリバンクに送信される前であるがキャッシュアクセスの後にアクセスされる。一実施形態では、間接テーブル４０４は、元のバンク及び行の識別によってインデックスされる。間接テーブル４０４でヒットしたアドレスは、対応するテーブルエントリで指定された新たなバンク及び行にアクセスする。他のアドレスは、以前に定義されたかデフォルトのバンク行マッピングの使用を続ける。間接テーブル４０４は、固定サイズの連想（content-addressable）メモリ又はＳＲＡＭとして管理することができる。間接テーブル４０４内のテーブルエントリの数は、シミュレーション又は領域及び／若しくは電力制約によって決定することができる。競合検出器エンジン４２０によって提供される再マッピング能力は、間接テーブル４０４が含むエントリの数に比例する。
【００４８】
図５は、図３のメモリコントローラにより使用され得る行レベル競合検出方法のフロー図である。方法５００は、開始ブロックから始まる。ブロック５０２において、競合検出器３２０がメモリバンク内のオープンな行Ｒのクローズを検出したか否かが判別される。行Ｒのクローズが検出されない場合、処理が終了する。行Ｒのクローズが検出された場合、処理はブロック５０４に進む。ブロック５０４において、競合検出器は、追跡システム３１４内に行Ｒの既存のエントリがあるかどうかを判別する。追跡システム３１４内に行Ｒの既存のエントリが存在する場合、処理はブロック５０６に進む。ブロック５０６において、競合検出器３２０は、追跡システム３１４内の行Ｒの行アクセス統計を更新する。追跡システム３１４内に行Ｒの既存のエントリが存在しない場合、ブロック５０８において、競合ロジック３１２は、追跡システム３１４内の最長時間未アクセス行を行Ｒで置換し、ブロック５０６に進む。ブロック５１０において、競合検出器３２０は、行Ｒについて、追跡システム３１４内の現在の行アクセス統計を評価する。ブロック５１２において、行Ｒのアクティブカウントが、動的又は静的に決定された競合アクティブ閾値よりも多いか否かの判別が行われる。行Ｒのアクティブカウントが競合アクティブ閾値以下の場合、処理は終了する。アクティブカウントが競合アクティブ閾値よりも多い場合、処理はブロック５１４に進む。ブロック５１４において、競合検出器３２０は、アクティブ毎の平均アクセスが、動的又は静的に決定された競合アクセス閾値よりも少ないか否かを判別する。アクティブ毎の平均アクセスが、決定された競合アクセス閾値以上の場合に、処理は終了する。アクティブ毎の平均アクセスが、決定された競合アクセス閾値未満の場合に、処理はブロック５１６に進む。ブロック５１６において、競合検出器３２０は、行Ｒを、再マッピング（マイグレーションとも呼ばれる）の候補として示す。処理は、終了ブロックで終了する。
【００４９】
図６は、図３のメモリコントローラにより使用され得るバンクレベル競合検出方法のフロー図である。方法６００は、開始ブロックから始まり、ブロック６０２に進み、ブロック６０２において、識別されたメモリバンクの行がクローズされると、競合検出器は、識別されたメモリバンク内の行のアクティブカウントを取得する。ブロック６０４において、競合検出器は、行アクティブカウントが、行アクティブ閾値よりも多いかどうかを判別する。行アクティブカウントが行アクティブ閾値より以下の場合に、処理は終了する。行アクティブカウントが行アクティブ閾値よりも多い場合に、処理はブロック６０６に進む。ブロック６０６において、アクティブ毎の行アクセス（ＡＰＡ）が、アクティブ毎の行アクセス閾値よりも少ないか否かの判別が行われる。アクティブ毎の行アクセスが、アクティブ毎の行アクセス閾値以上の場合に、処理は終了する。アクティブ毎の行アクセスが、アクティブ毎の行アクセス閾値未満の場合に、処理はブロック６０８に進む。ブロック６０８において、最近クローズされた行のアクティブ毎のアクセスカウントが、決定されたアクティブ毎の行アクセス閾値未満であるか否かの別の判別が行われる。最近クローズされた行のアクティブ毎の行アクセスカウントが、決定されたアクティブ毎の行アクセス閾値未満である場合に、処理はブロック６１２に進む。ブロック６１２において、競合検出器３２０は、特定されたバンクを、再マッピング用（すなわち、マイグレーション用）の行を提供する候補として示す。最近クローズされた行のアクティブ毎のアクセスカウントが、決定されたアクティブ毎の行アクセス閾値以上である場合に、ブロック６１０において、追跡システム３１４内の行アクセス統計が更新される。処理は、終了ブロックで終了する。
【００５０】
図７は、図３のメモリコントローラによって使用され得る、メモリを再マッピングする方法のフロー図である。方法７００は、開始ブロックから始まる。ブロック７０２において、競合検出器３２０は、マイグレーション（すなわち、再マッピング）を開始する。ブロック７０４において、競合検出器３２０は、空き行テーブルを使用して、マイグレーション元とは異なるバンクにおいてマイグレーション用に確保されている空き行を識別する。ブロック７０６において、選択された行は、マイグレーションエントリを受信する予定であることが示される。ブロック７０８において、競合行からのデータは、異なるバンク内の識別された行にコピーされる。ブロック７１０において、競合検出器３２０は、行のマイグレーションを反映するように間接テーブル３０４を更新する。
【００５１】
図８は、図３のメモリコントローラにより使用され得る、間接テーブルエントリの割り当てを解除する方法のフロー図である。方法８００は、開始ブロックから始まり、ブロック８０２に進む。ブロック８０２において、競合ロジック３１２は、間接テーブルの元のマッピングをリストアするか否かを判別する。競合ロジック３１２が、間接テーブル３０４のエントリを元のマッピングにリストアしないと判別した場合、処理は終了する。競合ロジック３１２が、間接テーブル３０４のエントリを元のマッピングにリストアすると判別した場合、処理はブロック８０４に進む。ブロック８０４において、競合ロジック３１２は、バンクの再マッピングされた行のデータを、元のバンクの元の行にコピーする。ブロック８０６において、競合ロジック３１２は、空き行テーブルを更新して、新たに解放された再マッピング行の利用可能性を示す。ブロック８０８において、競合ロジック３１２は、リストアされた行について、間接テーブル３０４内のエントリの割り当てを解除する。処理は、終了ブロックで終了する。
【００５２】
図５、図６、図７及び図８に示す方法の一部又は全ては、コンピュータ可読記憶媒体に記憶され、少なくとも１つのプロセッサによって実行される命令によって制御することができる。図５、図６、図７及び図８に示す動作の各々は、非一時的なコンピュータメモリ又はコンピュータ可読記憶媒体に記憶された命令に対応することができる。様々な実施形態において、非一時的なコンピュータ可読記憶媒体には、磁気若しくは光学ディスク記憶装置、フラッシュメモリ等のソリッドステート記憶装置、又は、他の不揮発性メモリ装置が含まれる。非一時的なコンピュータ可読記憶媒体に記憶されたコンピュータ可読命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、１つ以上のプロセッサによって解釈及び／若しくは実行可能な他の命令フォーマットであってもよい。
【００５３】
特定の実施形態について説明したが、これらの実施形態に対する様々な変更が当業者には明らかであろう。メモリコントローラ３００は、例えば高帯域幅メモリ（ＨＢＭ）及び同期ＤＲＡＭタイプ等のＤＤＲｘメモリ以外の他のタイプのメモリとインタフェースすることができる。ＤＲＡＭベースのメモリに関連して説明したが、他のメモリシステム（例えば、ダイスタックドＤＲＡＭ及びＮＶＲＡＭ）も利用することができる。如何なるメモリ技術においても、「競合」は、同じメモリモジュールへのメモリアクセスストリームがインターリーブされることによって発生し、さらなるパフォーマンス低下を引き起こすと説明されている。例示した実施形態では、別々のＤＩＭＭに対応するメモリの各ランクを示したが、別の実施形態では、各ＤＩＭＭは、複数のランクをサポートすることができる。さらに、メモリチャネルは、複数のランク又は単一のランクのＤＤＲメモリを含むことができる。
【００５４】
本発明を好ましい実施形態を参照して説明したが、当業者であれば、本発明の範囲から逸脱することなく、形態及び詳細を変更可能であることを理解するであろう。
【図１】
0006970751.tif 000002
【図２】
0006970751.tif 000003
【図３】
0006970751.tif 000004
【図４】
0006970751.tif 000005
【図５】
0006970751.tif 000006
【図６】
0006970751.tif 000007
【図７】
0006970751.tif 000008
【図８】
0006970751.tif 000009