(57)【要約】１実施の形態によれば、メモリコントローラが開示される。メモリコントローラは、割り当てロジック及びトランザクションアセンブラを含む。割り当てロジックは、メモリチャネルにアクセスする要求を受け、チャネル内の２以上の独立にアドレス可能なサブチャネルのうちの１つにアクセスする要求を割り当てる。トランザクションアセンブラは、要求を、チャネル内の２以上の独立にアドレス可能なサブチャネルにアクセスする１以上の更なる要求を結合し、サブチャネルの要求が利用可能でないサブチャネルからデータの投機的なリターンを容易にする。
2008544411.tif 000002
【特許請求の範囲】
【請求項１】
メモリチャネルにアクセスする要求を受け、チャネル内の２以上のサブチャネルのうちの１つにアクセスする要求を割り当てる割り当てロジックと、
前記要求を、チャネル内の２以上のサブチャネルにアクセスする１以上の更なる要求と結合し、サブチャネルの要求が利用可能ではないサブチャネルからのデータの投機的なリターンを容易にするトランザクションアセンブラと、
を有することを特徴とするメモリコントローラ。
【請求項２】
前記サブチャネルの要求のそれぞれは、独立のアドレスコンポーネント及び共有のアドレスコンポーネントを含む、
請求項１記載のメモリコントローラ。
【請求項３】
サブチャネルの要求の独立なアドレスコンポーネントは、サブチャネルと関連される、
請求項２記載のメモリコントローラ。
【請求項４】
前記トランザクションアセンブラは、独立のアドレスコンポーネントが、要求が利用可能ではないサブチャネルと関連付けされるように選択することで、要求が利用可能ではないサブチャネルからのデータの投機的なリターンを可能にする、
請求項３記載のメモリコントローラ。
【請求項５】
要求が利用可能ではないサブチャネルから投機的に読み取られたデータは、リクエスタにリターンされる、
請求項４記載のメモリコントローラ。
【請求項６】
要求を記憶するリオーダバッファを更に含む、
請求項１記載のメモリコントローラ。
【請求項７】
前記リオーダバッファは、２以上のサブチャネルのそれぞれに関連付けされるキューを含む、
請求項６記載のメモリコントローラ。
【請求項８】
それぞれのキューは、関連されるサブチャネルに転送される要求を記憶する、
請求項７記載のメモリコントローラ。
【請求項９】
メモリコントローラに結合されるメモリチャネルにアクセスする要求を前記メモリコントローラで受信するステップと、
メモリチャネル内の関連された独立のアドレス可能なサブチャネルにそれぞれの要求を割り当てるステップと、
前記要求を、チャネル内の２以上の独立にアドレス可能なサブチャネルにアクセスするための１以上の更なる要求と結合するステップと、
要求が利用可能でないサブチャネルからデータを投機的にリターンするステップと、
を有することを特徴とする方法。
【請求項１０】
要求が利用可能ではないサブチャネルからのデータを投機的にリターンするプロセスは、独立のアドレスコンポーネントが、要求が利用可能ではないサブチャネルと関連付けされるように選択するステップを含む、
請求項９記載の方法。
【請求項１１】
それぞれの要求をサブチャネルに割り当てた後に、リオーダバッファに要求を記憶するステップを更に有する、
請求項９記載の方法。
【請求項１２】
要求を組み立てた後に、前記要求を関連付けされたサブチャネルに送出するステップを更に含む、
請求項９記載の方法。
【請求項１３】
サブチャネルの要求が利用可能ではないサブチャネルから投機的にリターンされたデータをリクエスタにリターンするステップを更に含む、
請求項１０記載の方法。
【請求項１４】
１以上のチャネルを有するメモリ装置と、
前記メモリ装置に結合され、１以上のメモリチャネルのうちの１つにアクセスする要求を受け、チャネル内の２以上の独立にアドレス可能なサブチャネルのうちの１つにアクセスする要求を割り当て、前記要求を、チャネル内の２以上の独立にアドレス可能なサブチャネルにアクセスする１以上の更なる要求と結合し、要求が利用可能ではないサブチャネルからデータの投機的なリターンを容易にするメモリコントローラを有するチップセットと、
を有することを特徴とするシステム。
【請求項１５】
サブチャネルにアクセスする要求を割り当てる割り当てロジックと、
要求を結合し、データの投機的なリターンを容易にするトランザクションアセンブラと、
を有する請求項１４記載のシステム。
【請求項１６】
前記メモリコントローラは、サブチャネル要求を記憶するリオーダバッファを更に有する、
請求項１５記載のシステム。
【請求項１７】
前記リオーダバッファは、２以上のサブバンドのそれぞれに関連付けされるキューを含む、
請求項１６記載のシステム。
【請求項１８】
前記トランザクションアセンブラは、独立なアドレスコンポーネントが、要求が利用可能ではないサブチャネルと関連付けされるように選択することで、要求が利用可能ではないサブチャネルからのデータの投機的なリターンを容易にする、
請求項１６記載のシステム。
【請求項１９】
前記メモリ装置及び前記メモリコントローラに結合されるリクエスタを更に有し、
要求が利用可能ではないサブチャネルから投機的に読み取られたデータは、前記リクエスタにリターンされる、
請求項１４記載のシステム。
【請求項２０】
前記チップセットは、１以上のメモリチャネルのうちの１つにアクセスする要求を受け、チャネル内の２以上の独立にアドレス可能なサブチャネルのうちの１つにアクセスする要求を割り当てる第二のメモリコントローラを有する、
請求項１４記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムに関し、より詳細には、本発明は、メモリコントロールへのアクセスに関する。
【背景技術】
【０００２】
ＵＭＡ（Unified  Memory  Architecture）を実現するコンピュータシステムは、ビデオメモリ用のメインメモリにアクセスするグラフィックスコントローラを備えている。しかし、ＵＭＡグラフィックスシステムのメモリ効率は、ＣＰＵのキャッシュラインのサイズの要件のために制限されている。たとえば、グラフィックスコントローラが一度に１又は複数のピクセル又はテクセルを動作することができるので、グラフィックスのための理想的なメモリアクセスサイズは、４〜１６バイトである。しかしながら、メモリアーキテクチャは、ＣＰＵのメモリ効率を最適化するために６４バイトのＣＰＵキャッシュラインのサイズについて最適化されることがある。結果は、平均で、メモリから読み取られるかなりのデータ量はグラフィックスコントローラにより決して使用されない場合がある。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ディスクリートグラフィックスコントローラの製造業者は、狭いメモリチャネルを使用することで、取り出しを通してこれを最小にする。しかし、このソリューションは、ＵＭＡに基づいた集積されたグラフィックスコントローラについて利用可能ではない。
【課題を解決するための手段】
【０００４】
本発明は、添付図面における限定するものではない例を通して説明される。ここで、同じ参照符号は類似のエレメントを示す。  
メモリトランザクションの投機的なリターン（speculative  return）が説明される。以下の本発明の詳細な説明では、本発明の完全な理解を提供するため、様々な特定の詳細が述べられる。しかし、当業者にとって、本発明がこれらの特定の詳細なしに実施される場合があることは明らかである。他の例では、公知の構造及び装置は、本発明が曖昧になることを回避するために、詳細にではなく、ブロック図の形式で示される。
【０００５】
「１実施の形態」又は「実施の形態」とは、実施の形態と共に記載される特定の機能、構造、又は特徴が本発明の少なくとも１つの実施の形態に含まれることを意味する。明細書における様々な場所におけるフレーズ「１実施の形態では」の現れは、必ずしも、同じ実施の形態を全て引用するものではない。
【発明を実施するための最良の形態】
【０００６】
図１は、コンピュータシステム１００の１実施の形態のブロック図である。コンピュータシステム１００は、インタフェース１０５に結合される中央処理装置（ＣＰＵ）１０２を含む。１実施の形態では、ＣＰＵ１０２は、カリフォルニア州サンタクララのインテル社から入手可能なPentium  (登録商標)  family  of  Pentium  (登録商標)  IV  processorにおけるプロセッサである。代替的に、他のＣＰＵが使用される場合がある。たとえば、ＣＰＵ１０２は、多数のプロセッサコアを使用して実現される場合がある。更に他の実施の形態では、コンピュータシステム１００は、多数のＣＰＵ１０２を含む場合がある。
【０００７】
更なる実施の形態では、チップセット１０７は、インタフェース１０５に結合される。チップセット１０７は、メモリコントロールコンポーネント１１０を含む。メモリコントロールコンポーネント１１０は、メインシステムメモリ１１５に結合されるメモリコントローラ１１２を含む。メインシステムメモリ１１５は、データ、及びＣＰＵ１２又はシステム１１０に含まれる他の装置により実行される命令のシーケンスを記憶する。１実施の形態では、メインシステムメモリ１１５は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）を含むが、メインシステムメモリ１１５は、他のメモリタイプを使用して実現される場合がある。更なる装置は、多数のＣＰＵ及び／又は多数のシステムメモリのようなインタフェース１０５に結合される場合がある。
【０００８】
メモリコントロールコンポーネント１１０は、インタフェースを介して入力／出力コントロールコンポーネント１４０に結合される場合がある。Ｉ／Ｏコントロールコンポーネント１４０は、コンピュータシステム１００内のＩ／Ｏ装置へのインタフェースを提供する。Ｉ／Ｏコントロールコンポーネント１４０は、ＰＣＩ（Peripheral  Component  Interconnect）エキスプレス、ＡＧＰ（Accelerated  Graphics  Port）、ＵＳＢ（Universal  Serial  Bus）、ＬＰＣ（Low  Pin  Count）バスのようなＩ／Ｏバス、又は他の種類のＩ／Ｏバス（図示せず）での標準的なＩ／Ｏ動作をサポートする。
【０００９】
１実施の形態によれば、グラフィックスコントローラ１６０は、チップセット１０７と通信し、コンピュータシステム１００に結合されるディスプレイモニタ（図示せず）にビデオグラフィックスを提供するために実現される。グラフィックスコントローラ１６０は、ビデオメモリについてメインメモリ１１５にアクセスする。先に記載されたように、グラフィックスのメモリアクセスサイズは理想的に４〜１６バイトであり、ＣＰＵメモリ効率を最適化するために６４バイトのＣＰＵラインサイズについてメモリアーキテクチャが最適化されるので、グラフィックシステム及びＣＰＵの両者をサポートするメモリ装置の記憶効率は制限される。
【００１０】
１実施の形態によれば、メモリコントロールコンポーネント１００は、６４バイトのメモリトランザクションを維持しつつ、グラフィックス装置についてメモリ要求サイズを低減する。ＤＤＲ  ＤＲＡＭ技術に基づくような標準的なメモリチャネルは、ｍビットの物理的な幅を有する。メモリトランザクションは、Ｍ＝ｍ*Ｔ／８バイトの全体の論理的な幅についてＴの伝達からなる。それぞれのトランザクション内のバイトは、連続するアドレスを有すると考えられる。後続する説明では、用語「幅“width”」は、論理的な幅を意味する。
【００１１】
マイクロタイリング（Micro-Tiling）は、Ｍバイト幅のチャネルのＳ個のサブチャネルに分割する。ここで、それぞれＮ＝Ｍ／Ｓバイトの幅であり、Ｎバイトのデータは、それぞれのサブチャネルで転送される。それぞれのサブチャネルにはアドレスが与えられ、ここで、独立なアドレスビットの番号Ｉは、他のサブチャネルに与えられるアドレスにおける対応するビットとは異なる。それぞれのサブチャネルで転送されるデータは、隣接するアドレスレンジを表すことが考慮される。しかし、それぞれのサブチャネルのデータのブロックは、必ずしも、隣接するアドレスレンジからである必要はない。それぞれのサブチャネルは、チャネルの全体のメモリロケーションのサブセットを含む。
【００１２】
図２は、マイクロタイリングをサポートするメモリコントロールコンポーネント１１０の１実施の形態を例示する。１実施の形態では、マルチチャネルメモリサブシステムは、チャネル当たり、マイクロタイリングのメモリコントローラを有する。したがって、図２に例示されるように、メモリコンポーネント１１０は、２つのメモリコントローラ１１２（メモリコントローラ１及び２）を含み、２つのチャネルのそれぞれについて１つである。それぞれのチャネルは、Ｓ個のサブチャネルを含み、それぞれＮバイトの幅を有する。したがって、それぞれのチャネルは、Ｍ＝Ｎ*Ｓバイトの幅である。
【００１３】
この図では、メモリの読取り又は書込みのための要求は、２×２アレイのピクセル又はテクセルを表す２×２アレイの正方形として示される。要求は、サブチャネルに割り当てられる前に示される。サブチャネルの割り当ての後、サブチャネルの割り当てを示唆するために要求は０〜Ｓ−１でナンバリングされる。メモリコントロールコンポーネント１１０に結合されるリクエスタ（requestor）２０５へのＮバイトのリターンは、リードトランザクションのケースで生じる。
【００１４】
メモリコントロールコンポーネント１１０は、メモリコントローラ１１２に結合されるチャネル割り当てロジック２１０を含む。チャネル割り当て２１０は、リクエスタ２０５から受けたそれぞれの要求を、メモリコントローラ１１２を介してメモリチャネル２４０に割り当てる。さらに、それぞれのメモリコントローラ１１２は、サブチャネル割り当て２１５、リオーダバッファ２２０及びトランザクションアセンブラ２３０を含む。したがって、要求は、図２に示されるようにメモリコントローラ１又はメモリコントローラ２に割り当てられる。
【００１５】
サブチャネル割り当て２１５は、それぞれの要求をメモリチャネル２４０内のサブチャネルに割り当てる。リオーダバッファ２２０は、トランザクションアセンブラ２３０がそれぞれのメモリ２４０のサブチャネルについてメモリアクセスをアセンブルしようとするのを可能にするために要求を収集する。１実施の形態によれば、それぞれのサブチャネルは、等しいＮバイト幅を有する。
【００１６】
図２に示されるシステムの動作の間、アドレスＡでＮバイトのデータのブロックを読取り又は書込みするための要求は、メモリコントローラ（１又は２）に入力し、サブチャネルに割り当てられ、リオーダバッファ２２０に配置される。１実施の形態では、アイデンティティサブチャネル割り当てｓは、以下のプロセスにより定義される。リクエストアドレスＡは、Ｐ＝ｌｏｇ2（Ｎ）ビットだけ右にシフトされ、新たな整数値
【００１７】
［外１］
2008544411.tif 000003
（たとえば
【００１８】
【数１】
2008544411.tif 000004
）が得られ、ｓは
【００１９】
［外２］
2008544411.tif 000005
（たとえば
【００２０】
【数２】
2008544411.tif 000006
）の最上位ビットＱ＝ｌｏｇ2（Ｓ）である。
【００２１】
メモリコントローラは、それぞれのサブチャネルについて１つである、Ｓ個の読み取り要求をリオーダバッファ２２０から選択することでメモリ読取りトランザクションを形成する。共有されるアドレスラインにより表されるアドレスの一部は、トランザクションにおける全てのサブチャネルの要求について同じである。
【００２２】
図３は、物理アドレスにおけるアドレスビットの解釈の１実施の形態を示す。Ｐサブチャネルデータアドレスビットを超えるアドレスビットを、共有及び独立なアドレスビット、並びにサブチャネル選択ビットに分割することは任意であるので、図３に示される共有及び独立のアドレスビット及びサブチャネル選択ビットの選択は、例示を目的とする。独立の選択ビットは、サブチャネルにわたり異なり、必ずしも隣接するものではない。サブチャネルに送出されるアドレスビットは、サブチャネルの共有されるアドレスビット及び独立のアドレスビットである。
【００２３】
図４は、単一のチャネルが示されているが、４つの１６バイト要求から６４バイトのトランザクションを組み立てる、メモリコントロールコンポーネント１１０の実施の形態を例示する。図４は、それぞれのサブチャネルについてリオーダキューとして実現されるリオーダバッファ２２０を示す。しかし、他の実施の形態では、リオーダバッファ２２０は、他のメカニズムを介して実現される場合がある。
【００２４】
この実施の形態では、トランザクションアセンブラ２３０は、それぞれのサブチャネルについて１つである、１６Ｂの要求から６４Ｂのメモリ要求を構築する。メモリ要求を形成する全ての１６Ｂの要求は、同じ共有されるアドレスビットを有する。したがって、アセンブラ２３０は、要求が一般の共有アドレスを有するかに基づいて単一のトランザクションに組み立てられる要求についてキューを調べる。
【００２５】
なお、図４に示される実施の形態では、アセンブラ２３０は、サブチャネル１ｃについて要求を発見することができない。トランザクションを形成しようとするとき、メモリコントローラは、全てが同じ共有アドレスのセグメントを有するように（たとえばそれぞれの共有アドレスビットの値が全ての要求にわたり同じであるように）、それぞれのサブチャネルについて要求を発見することができない場合がある。かかるイベントが生じるサブチャネルは、「空の」サブチャネルと呼ばれる。
【００２６】
１実施の形態によれば、サブチャネルが対応するキューにおける要求により満たされない場合、効果は、そのサブチャネルとの間で伝達が行われないことである。係る実施の形態では、サブチャネルが要求により満たされない場合、任意のロケーションが読み取られ、結果が廃棄される。代替的な実施の形態では、更なる制御ラインがサブチャネル当たりに含まれ、そのチャネルへの対応する要求が存在しないときにサブチャネルをパワーダウンするために使用される。
【００２７】
更に別の実施の形態では、検索されたデータが廃棄されるよりはむしろ、投機的な読み取りが実行され、リクエスタにリターンされる。投機的なリターンは、不使用のサブチャネルでＮバイトのデータブロックを読取り、そのデータを他の読取り要求について幾つかのリクエスタにリターンすることを含む。したがって、メモリコントローラは、「空の」サブチャネルで、揃えられたＮバイトのデータブロックを読み取ることを選択する。このＮバイトのデータブロックは、データが同じメモリトランザクションにおいて他のサブチャネルでアクセスされるときに同じ共有のアドレスビットを有し、このデータは、幾つかのリクエスタによる使用のために利用可能となる。
【００２８】
１実施の形態によれば、投機的なリターンは、「空の」サブチャネルに関連される独立のアドレスラインに、隣接するサブチャネルの独立のアドレスビットを割り当てることによりトランザクションアセンブラ２３０で実現され、同じ共有及び独立なアドレスビットを有する、２つのＮバイトのデータブロックが得られ、リターンされる。独立なアドレスラインを複製するとして先に記載されたが、他の実施の形態は、投機的にリターンされるデータのブロックを選択するための他のメカニズムを実現する場合がある。
【００２９】
図４を例として参照して、要求はサブチャネル１ｃについて発見することができない。したがって、サブチャネル１ｃは、「空の」サブチャネルである。開示される実施の形態では、トランザクションアセンブラ２３０は、サブチャネル１ｄの独立のアドレスビットをサブチャネル１ｃに割り当て、データサブチャネル１ｃをサブチャネル１ｄに関連するリクエスタにリターンする。したがって、投機的なリターンは、投機的なサブチャネルの読取りを実行し、結果をリクエスタにリターンすることで効率的なメモリの利用を改善する。このデータがリクエスタにより後に必要とされる場合、たとえばキャッシュになお保持される場合がある。
【００３０】
マイクロタイリングによるメモリのサブチャネルは、共有アドレスビット及びＩの独立なアドレスビットにより決定されるアドレスレンジ内の不連続なメモリアドレスにアクセスすることができる。Ｉの賢明な選択は、独立のサブチャネルの増加される同時処理及び帯域幅の効率を提供するものであり、それぞれのサブチャネルへのＩアドレス信号を複製するコストに対してバランスされる。
【００３１】
図５Ａ及び図５Ｂは、マイクロタイリングの性能の利点を説明する。それぞれの図は、タイル張りされたアドレス空間における三角形のラスタ化を示し、それぞれの小さな正方形は、４バイトピクセル又はテクセルを表す。図５Ａは、要求がそれぞれ６４バイトであるときに標準的なメモリシステムにおけるオーバフェッチ（overfetch）を示す。それぞれのピクセルの４×４ブロックは、６４バイトの揃えられたメモリのブロックを表す。三角形は、５７画素を含む。標準的なメモリサブシステムによれば、それら５７画素は１１（６４バイト）のメモリブロックである。したがって、それら５７画素にアクセスするため、）使用されない場合がある更に１１９画素に値するデータがアクセスされる（たとえば３２％の効率となる）。
【００３２】
図５Ｂは、要求がそれぞれ１６バイトである場合、全ての係る要求がマイクロタイルアセンブラにより利用され、不使用のサブチャネルをもたない６４バイトのメモリトランザクションを構築する場合のオーバフェッチを示す。このケースでは、三角形は、２３の２×２画素アレイに接しており、３５の更なる画素に値するデータが得られ、アクセスされる（たとえば６２％の効率となる）。マイクロタイリングの有効性は、十分にポピュレートされたメモリトランザクションを構築するためにアセンブラの能力に依存する。
【００３３】
図６は、コンピュータシステム１００の別の実施の形態を説明する。この実施の形態では、チップセット１０７は、個別のメモリコントロールコンポーネント及びＩ／Ｏコントロールコンポーネントとは対照的に単一の制御ハブ６２０を含む。結果的に、メモリコントローラ１１２は、ＣＰＵ１０２内に含まれ、メモリ１１５はＣＰＵ１０２に結合される。かかる実施の形態では、グラフィックスコントローラ１６０は、コントロールハブ６２０に結合され、ＣＰＵ１０２を介してメインメモリ１１５にアクセスする。
【００３４】
本発明の多数の代替及び変更は、上述の説明を読んだ後に当業者によって明らかとなるが、例示を介して図示及び記載された特定の実施の形態は、限定されるものとして考えられることが意図されない。したがって、様々な実施の形態の詳細を参照することは、本発明にとって必須であると考えられる特徴のみをそれ自身で引用する請求項の範囲を限定することが意図されない。
【図面の簡単な説明】
【００３５】
【図１】コンピュータシステムの１実施の形態のブロック図である。
【図２】メモリコントローラの１実施の形態を例示する図である。
【図３】論理仮想アドレスの１実施の形態を例示する図である。
【図４】メモリコントローラの別の実施の形態を例示する図である。
【図５】図５Ａ及び図５Ｂは、性能の長所を例示する図である。
【図６】コンピュータシステムの別の実施の形態のブロック図である。
【図１】
2008544411.tif 000007
【図２】
2008544411.tif 000008
【図３】
2008544411.tif 000009
【図４】
2008544411.tif 000010
【図５Ａ】
2008544411.tif 000011
【図５Ｂ】
2008544411.tif 000012
【図６】
2008544411.tif 000013
【国際調査報告】
2008544411.tif 000014
2008544411.tif 000015