(57)【要約】改良されたメモリリクエスト調停機構を有するメモリコントローラ（２１０）を含むバスブリッジ（１０２）が開示されている。メモリコントローラ（２１０）は、メインメモリ（１０４）から読出すかまたはメインメモリ（１０４）へ書込むさまざまなリクエストを受ける。特定の一実施例では、メモリコントローラ（２１０）は、これらの入来リクエストを、ページヒットリクエスト、ページミスバンクリクエスト、ページミス−別チップ選択リクエスト、およびページコンフリクトリクエストに分類するよう構成されていてもよい。メモリコントローラ（２１０）は、これらのリクエストを待ち時間に基づいて優先順位付けするよう構成されていてもよい。ページヒットリクエストはページミスバンクリクエストよりも調停優先順位が高く、ページミスバンクリクエストはページミス−別チップ選択リクエストよりも調停優先順位が高く、ページミス−別チップ選択リクエストはページコンフリクトリクエストよりも調停優先順位が高くなっている。メモリコントローラ（２１０）は優先順位に基づいてリクエストをサービスするため、ＳＤＲＡＭバスなどのメモリバス（１０６）の利用を強化する。
2004500667.tif 000002
【特許請求の範囲】
【請求項１】
バスブリッジ（１０２）であって、
メモリ（１０４）へのアクセスを制御するためのメモリコントローラ（２１０）と、
前記メモリコントローラ（２１０）に結合されたプロセッサバスインターフェイス（２０４）とを含み、前記プロセッサバスインターフェイス（２０４）は、前記メモリコントローラ（２１０）とプロセッサ（１０１）との間にインターフェイスを提供し、前記バスブリッジはさらに、
前記メモリコントローラ（２１０）に結合された第１の周辺バスインターフェイス（２１２）を含み、前記第１の周辺バスインターフェイスは、前記メモリコントローラ（２１０）と第１の周辺バス（１１４）との間にインターフェイスを提供し、
前記メモリコントローラ（２１０）は、前記プロセッサバスインターフェイス（２０４）および前記第１の周辺バスインターフェイス（２１２）からの複数の入来リクエストを受付けて調停するよう構成されており、前記メモリコントローラ（２１０）は、前記複数の入来リクエストを、ページヒットリクエスト、ページミスバンクリクエスト、およびページミス−別チップ選択リクエストに分類し、前記メモリコントローラ（２１０）は、前記ページヒットリクエストに、前記ページミスバンクリクエストよりも高い調停優先順位を与えるよう構成されており、前記メモリコントローラ（２１０）は、前記ページミスバンクリクエストに、前記ページミス−別モジュール選択リクエストよりも高い調停優先順位を与えるよう構成されている、バスブリッジ。
【請求項２】
前記メモリ（１０４）はメモリバス（１０６）を介して前記バスブリッジ（１０２）に結合され、前記メモリバス（１０６）は同期型ダイナミックランダムアクセスメモリバスである、請求項１に記載のバスブリッジ（１０２）。
【請求項３】
前記メモリコントローラ（２１０）は、前記入来リクエスト間を調停するよう構成されたアービタ（３１０）を含み、前記アービタ（３１０）は、前記複数の入来リクエストを分類するよう構成されている複数の分類マルチプレクサ（４１０）を含む、請求項１に記載のバスブリッジ（１０２）。
【請求項４】
前記複数の分類マルチプレクサ（４１０）の各々はマルチプレクシングユニットであり、各マルチプレクシングユニットは、前記複数の入来リクエストから１つのリクエストを選択するよう構成されている複数のマルチプレクサ（６１０−６５０）を含む、請求項３に記載のバスブリッジ（１０２）。
【請求項５】
前記アービタ（３１０）は、前記複数の分類マルチプレクサから複数の分類された入来リクエストを受けるために結合された優先順位選択マルチプレクサユニット（４２０）をさらに含み、前記優先順位選択マルチプレクサユニット（４２０）は、スケジュールされるべき優先リクエストを一定の優先順位に基づいて選択するよう構成され、前記優先順位選択マルチプレクサユニット（４２０）は複数のマルチプレクサ（７１０−７９０）を含む、請求項４に記載のバスブリッジ（１０２）。
【請求項６】
前記メモリコントローラ（２１０）は、前記優先順位選択マルチプレクサユニット（４２０）によって選択された前記優先リクエストを受けるために結合されたスケジューラ（３２０）をさらに含み、前記スケジューラ（３２０）は、前記優先リクエストを前記同期型ダイナミックランダムアクセスメモリバス上にスケジュールするよう構成されており、前記スケジューラはプリチャージキュー（８２０）、活性化キュー（８１０）、および読出／書込キュー（８３０）を含み、プリチャージサイクルは前記プリチャージキューにロードされ、活性化サイクルは前記活性化キューにロードされ、読出／書込サイクルは前記読出／書込キューにロードされる、請求項５に記載のバスブリッジ（１０２）。
【請求項７】
前記メモリコントローラ（２１０）は前記複数の入来リクエストをページコンフリクトリクエストに分類するようさらに構成されており、前記メモリコントローラ（２１０）は、前記ミスバンク−別チップ選択リクエストに、前記ページコンフリクトリクエストよりも高い調停優先順位を与えるよう構成されている、請求項１に記載のバスブリッジ（１０２）。
【請求項８】
前記複数の入来リクエストは、
前記プロセッサバスインターフェイス（２０４）からの少なくとも１つのリクエストと、
前記第１の周辺バスインターフェイス（２１２）からの少なくとも１つのリクエストと、
前記第２の周辺バスインターフェイス（２１４）からの少なくとも１つのリクエストと、
グラフィックスアドレスリマッピングテーブル（ＧＡＲＴ）テーブルウォーク（３３０）からの少なくとも１つのリクエストとを含む、請求項７に記載のバスブリッジ（１０２）。
【請求項９】
メモリコントローラ（２１０）を動作させる方法であって、　プロセッサバスインターフェイス（２０４）および第１の周辺バスインターフェイス（２１２）からの入来リクエストを受けるステップと、
前記入来リクエストを複数の分類に分類するステップとを含み、前記複数の分類は、ページヒットリクエスト、ページミスバンクリクエスト、およびページミス−別チップ選択リクエストを含み、前記方法はさらに、
前記入来リクエストの中で優先順位をつけるステップを含み、前記ページヒットリクエストは前記ページミスバンクリクエストよりも高い調停優先順位を受け、前記ページミスバンクリクエストは前記ページミス−別チップ選択リクエストよりも高い調停優先順位を受ける、方法。
【請求項１０】
コンピュータシステムであって、
プロセッサバスインターフェイス（２０４）に結合されたマイクロプロセッサ（１０１）を含み、前記マイクロプロセッサ（１０１）は１つまたはそれ以上のリクエストを生成し、前記コンピュータシステムはさらに、
メモリバスインターフェイスに結合されたメインメモリ（１０４）と、
前記プロセッサバスインターフェイス（２０４）、前記メモリバスインターフェイス、第１の周辺バスインターフェイス（２１２）、および第２の周辺バスインターフェイス（２１４）の間にインターフェイスを提供するよう結合されたバスブリッジ（１０２）とを含み、前記第１の周辺バスインターフェイス（２１２）は少なくとも１つのリクエストを生成し、前記第２の周辺バスインターフェイス（２１４）は少なくとも１つのリクエストを生成し、
前記バスブリッジ（１０２）はメモリコントローラ（２１０）を含み、前記メモリコントローラ（２１０）は、前記プロセッサバスインターフェイス（２０４）、前記第１の周辺バスインターフェイス（２１２）、および前記第２の周辺バスインターフェイス（２１４）からの複数の入来リクエストを受付けて調停するよう構成されており、前記メモリコントローラ（２１０）は、前記複数の入来リクエストを、ページヒットリクエスト、ページミスバンクリクエスト、およびページミス−別チップ選択リクエストに分類し、前記メモリコントローラ（２１０）は、前記ページヒットリクエストに、前記ページミスバンクリクエストよりも高い調停優先順位を与えるよう構成されており、前記メモリコントローラ（２１０）は、前記ページミスバンクリクエストに、前記ページミス−別チップ選択リクエストよりも高い調停優先順位を与えるよう構成されている、コンピュータシステム。
【発明の詳細な説明】
【０００１】
【発明の背景】
１．技術分野
この発明はコンピュータシステムに関し、より特定的には、メモリコントローラ内に採用される調停機構に関する。
【０００２】
２．背景技術
コンピュータシステムは通常、１つまたはそれ以上のバスによって相互接続される複数の装置を含む。たとえば、多くの従来のコンピュータシステムは、バスブリッジを介してメインメモリに結合されるプロセッサを含む。バスブリッジは、ネットワークインターフェイスカード、ビデオアクセラレータ、オーディオカード、ＳＣＳＩアダプタ、テレフォンカードなどのさまざまな周辺装置に、周辺機器相互接続（ＰＣＩ）バスなどの高帯域ローカル拡張バスを介して結合されてもよい。バスブリッジはさらに、アドバンストグラフィックスポート（ＡＧＰ）バスなどの第２の拡張バスを介して、グラフィックスコントローラに結合されてもよい。
【０００３】
バスブリッジはメモリコントローラをさらに含んでいてもよい。メモリコントローラは、メインメモリから読出すかまたはメインメモリに書込むさまざまなリクエストを受取る。メモリコントローラはこれらの入来リクエストを、プロセッサ、または拡張バスの１つを介して接続された周辺装置などのさまざまなソースから受取ってもよい。内部においては、バスブリッジは、メモリコントローラに適切なインターフェイスを提供するために、プロセッサバスインターフェイス、ＰＣＩバスインターフェイス、およびＡＧＰバスインターフェイスを含んでいてもよい。
【０００４】
いくつかの実現化例では、メインメモリは同期型ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）を用いて実現されてもよい。図１は、ＳＤＲＡＭバス１２を介して複数のＳＤＲＡＭモジュール１６Ａ−Ｃに結合されたメモリコントローラ１０を含む例示的なメモリサブシステム１００を示している。複数のＳＤＲＡＭモジュール１６Ａ−Ｃは、１４Ａ−Ｃとして示されるメモリ拡張スロットを介してＳＤＲＡＭバス１２に接続されている。各ＳＤＲＡＭモジュールは、複数のバンク（つまり、図示されたバンク１−バンク４）を例示的に含む。各バンクは複数のページを含んでいる。メモリコントローラ１０は、所与のモジュール内の所与のバンクにおいてどのページにアクセスするかを命令するメモリアクセスアドレスを受取る。アクセスアドレスは、アクセスすべきページおよびバンクを含む特定のモジュールを選択するためにＣＳ１−３のどのチップ選択信号をアサートするかを判断する。
【０００５】
ＳＤＲＡＭにおける特定のロケーションからの読出、または特定のロケーションへの書込の前に、特定のロケーションがあるページを活性化するかまたは開く必要がある。ページは、メモリコントローラ１０によりＳＤＲＡＭバス１２上に起動される活性化サイクルによって開かれる。ページが開いた後、メモリコントローラ１０により起動される読出／書込サイクルによって、読出または書込が実行される。所与のバンク内の２ページを同時に開くことはできないため、所与の１ページを開く前に、バンクの別のページを閉じる必要がある。メモリコントローラ１０は、プリチャージサイクルをＳＤＲＡＭバス１２上に起動することによって、ページを閉じる。
【０００６】
特定の読出または書込リクエストをサービスするための待ち時間は、対応するＳＤＲＡＭサイクル（たとえば、読出／書込サイクル、活性化サイクル、およびプリチャージサイクル）がメモリコントローラ１０によりＳＤＲＡＭバス１２上で駆動される場合のメモリサブシステム１００の状態に依存する。たとえば、メモリコントローラ１０が、特定のバンク内のアクティブページから読出すかまたはアクティブページに書込むリクエストを受取った場合を考えてみる。
【０００７】
ページは既にアクティブであるため、メモリコントローラ１０は、選択されたページから読出すかまたは選択されたページへ書込む読出／書込サイクルのみを起動する。既にアクティブであるページへのリクエストは一般に、ページヒットリクエストと呼ばれている。ページヒットリクエストでは、メモリコントローラ１０によって起動されるサイクルが１つだけであるため、待ち時間が最も短い。
【０００８】
またこれに代えて、メモリコントローラ１０は、活性化されたページがないバンク内のページを開くリクエストを受けてもよい。選択されたページは、メモリコントローラ１０により起動される活性化サイクルによって、開かれるかまたは活性化される。次に読出／書込サイクルがメモリコントローラ１０によって起動され、開いたページから読出すかまたは開いたページへ書込む。活性化されたページがないバンク内のページを開くリクエストは一般に、ページミスバンクリクエストと呼ばれている。ページミスバンクリクエストでは、２つの別個のサイクルがメモリコントローラ１０によって起動されるため、待ち時間は２番目に短い。
【０００９】
またこれに代えて、メモリコントローラ１０は、異なるモジュール内のページを開くリクエストを受けてもよい。一般に１サイクルターンアラウンドバブルと呼ばれるものにおいては、現在アクティブであるモジュールがまず選択解除され、次に、アクセスすべきページを含むモジュールが選択される。１サイクルターンアラウンドバブルは、２つのモジュール、つまり選択解除されたモジュールと選択されたモジュールとがＳＤＲＡＭバス１０６を同時に駆動しないことを確実にするために必要とされる。適切なモジュールが選択された後、選択されたページは活性化サイクルによって開かれる。次に読出／書込サイクルが起動され、開いたページから読出すかまたは開いたページへ書込む。異なるモジュール内のページを開くリクエストは一般に、ページミス−別チップ選択リクエストと呼ばれている。ページミス−別チップ選択リクエストでは、１サイクルターンアラウンドバブルとメモリコントローラ１０によって起動される２つの別個のサイクルとのために、待ち時間が３番目に短い。
【００１０】
またこれに代えて、メモリコントローラ１０は、既にアクティブであるバンク内のアクティブでないページを開くリクエストを受けてもよい。現在アクティブであるページは、メモリコントローラ１０により起動されるプリチャージサイクルによって、閉じられるかまたは不活性化される。次に、選択されたページが活性化サイクルによって開かれるかまたは活性化される。別個のサイクルである読出／書込サイクルが次に起動されて、開いたページから読出すかまたは開いたページへ書込む。既にアクティブであるバンク内のアクティブでないページを開くリクエストは一般に、ページコンフリクトリクエストと呼ばれている。ページコンフリクトリクエストでは、３つの別個のサイクルがメモリコントローラ１０によって起動されるため、待ち時間が最も長い。
【００１１】
いくつかの用途では、メモリコントローラ１０は、入来リクエストが受付順にサービスされるよう構成されていてもよい。リクエストを受付順にサービスするメモリコントローラ１０の欠点は、ある特定の種類のリクエストとして分類されたであろうリクエストが、待ち時間がより長い別の種類のリクエストとして分類されるおそれがある、ということである。たとえば、メモリコントローラ１０がページコンフリクトリクエストを受取り、次にページヒットリクエストを３回続けて受取って、それらを受付順にサービスする場合、メモリコントローラ１０はまずページコンフリクトリクエストをサービスする。しかし、ページコンフリクトリクエストをサービスした後で、ページヒットリクエストがページコンフリクトリクエストとなる場合がある。メモリコントローラ１０はページコンフリクトリクエストをサービスするのに、プリチャージサイクルを起動して現在のページを閉じ、活性化サイクルを起動して選択されたページを活性化させ、次に読出／書込サイクルを起動する。しかし、開かれた選択されたページは、ページヒットリクエストによってリクエストされたページとは異なるページである。ページヒットリクエストはその後、ページコンフリクトリクエストとなる場合がある。すなわち、前のページヒットリクエストが、前にアクティブだったがもはやアクティブではないページから読出すかまたはそのページへ書込むようリクエストする場合がある。その場合、現在のページを閉じて新しいページを活性化しなければならなくなり、リクエストをサービスする時間が増加する。入来リクエストを受付順にサービスするメモリコントローラ１０は、メモリバスを最適には利用しないおそれがある。したがって、ＳＤＲＡＭにより効率よくアクセスすることが望まれる。
【００１２】
【発明の開示】
上に概説された問題は、改良されたメモリリクエスト調停機構を有するメモリコントローラを含むバスブリッジによって、大部分が解決されるであろう。一実施例では、バスブリッジは、メモリバスを介してメインメモリに結合されたメモリコントローラを含む。バスブリッジは、ともにメモリコントローラに結合されたプロセッサバスインターフェイスと第１の周辺バスインターフェイスとをさらに含んでいてもよい。プロセッサバスインターフェイスは、メモリコントローラとプロセッサとの間にインターフェイスを提供する。第１の周辺バスインターフェイスは、メモリコントローラと第１の周辺バスとの間にインターフェイスを提供する。
【００１３】
メモリコントローラは、メインメモリから読出すかまたはメインメモリへ書込むさまざまなリクエストを受取る。メモリコントローラは、これらの入来リクエストを、プロセッサバスインターフェイスと第１の周辺バスインターフェイスとから受取ってもよい。特定の一実施例では、メモリコントローラはこれらの入来リクエストを受付けて調停するよう構成されている。メモリコントローラは、これらの入来リクエストを、ページヒットリクエスト、ページミスバンクリクエスト、およびページミス−別チップ選択リクエストに分類するよう構成されていてもよい。ページヒットリクエストは、リクエストされたページが既にアクティブであるため、待ち時間が最も短い。しかし、ページミスバンクリクエストは、ページヒットリクエストよりも待ち時間が長く、これは選択されたページを開くために活性化サイクルが必要とされ、次に読出／書込サイクルが続いて、選択されたページから読出すかまたは選択されたページへ書込むためである。ページミス−別チップ選択リクエストは、ページヒットリクエストおよびページミスバンクリクエストよりも待ち時間が長く、これは１サイクルターンアラウンドバブルがあり、次に活性化および読出／書込サイクルが続くためである。メモリコントローラは、待ち時間に基づいてこれらのリクエストに優先順位をつけるよう構成されていてもよい。その後、ページヒットリクエストは、ページミスバンクリクエストおよびページミス−別チップ選択リクエストよりも調停優先順位が高くなる。ページミスバンクリクエストは、ページミス−別チップ選択リクエストよりも調停優先順位が高くなる。メモリコントローラは次に、調停優先順位の低いリクエストよりも調停優先順位の高いリクエストをサービスし、したがってＳＤＲＡＭバスなどのメモリバスの利用を改善し得る。
【００１４】
別の特定の実施例では、メモリコントローラは、ページコンフリクトリクエストなどのさらなる入来リクエストを受付けて調停してもよい。ページコンフリクトリクエストは、ページヒットリクエスト、ページミスバンクリクエスト、およびページミス−別チップ選択リクエストよりも待ち時間が長く、これはメモリコントローラがプリチャージ、活性化、および読出／書込サイクルを起動させるためである。したがって、メモリコントローラは、ページミス−別チップ選択リクエストに、ページコンフリクトリクエストよりも高い調停優先順位を与えるようさらに構成されていてもよい。メモリコントローラは次に、調停優先順位の低いリクエストよりも調停優先順位の高いリクエストをサービスし、したがってＳＤＲＡＭバスなどのメモリバスの利用を改善し得る。
【００１５】
別の特定の実施例では、メモリコントローラは、優先順位の低いリクエストのサービスを行なわずにページヒットリクエストのサービスを繰返し行なうことを防止するよう構成されていてもよい。メモリコントローラは、連続してサービスされるページヒットリクエストの数を１から３２に制限するプログラマブル論理ユニットを含む。プログラマブル論理ユニットは、ページヒット限度を記憶するよう構成されたレジスタと、レジスタに結合されたカウンタとを含む。カウンタは、メモリコントローラによって連続してサービスされた優先ヒットの数を数えるよう構成されている。
【００１６】
以下の詳細な説明を読み、添付図面を参照することにより、この発明の他の目的および利点が明らかになる。
【００１７】
この発明はさまざまな変更および代替的な形をとることができるが、その特定の実施例は図面の例によって示され、ここに詳細に説明される。しかしながら、図面およびその詳細な説明は、この発明を開示された特定の形状に限定するようには意図されてはおらず、むしろ逆に、この発明は、特許請求の範囲によって規定されるようなこの発明の精神および範囲内に入るあらゆる変更、均等物、および代替物を網羅するものであることが理解されるべきである。
【００１８】
【発明を実行するための形態】
図２は、コンピュータシステムの一実施例を示している。コンピュータシステム２００は、バスブリッジ１０２を介してさまざまなシステム構成要素に結合されたプロセッサ１０１を含む。コンピュータシステム２００では、メインメモリ１０４がメモリバス１０６を介してバスブリッジ１０２に結合されている。グラフィックスコントローラ１０８は、ＡＧＰバス１１０を介してバスブリッジ１０２に結合されている。さらに、複数のＰＣＩ（周辺機器相互接続）装置１１２Ａ−１１２Ｂが、ＰＣＩバス１１４を介してバスブリッジ１０２に結合されている。
【００１９】
プロセッサ１０１は、たとえば、アスロン（ＡｔｈｌｏｎＴＭ）マイクロプロセッサに例示される。しかしながら、コンピュータシステム２００の他の実施例では、代替的な種類のマイクロプロセッサが採用されてもよいことを理解されたい。他の実施例では、外部キャッシュユニット（図示せず）がプロセッサ１０１にさらに結合されていてもよい。
【００２０】
バスブリッジ１０２は、プロセッサ１０１、メインメモリ１０４、グラフィックスコントローラ１０８、およびＰＣＩバス１１４に取付けられた装置の間にインターフェイスを提供する。バスブリッジ１０２は、バスブリッジ１０２に接続された装置のうちの１つから動作を受取ると、その動作をターゲットとする装置へルート付けする。バスブリッジ１０２は通常、ソース装置またはバスによって用いられるプロトコルからターゲット装置またはバスによって用いられるプロトコルへ、動作を変換する。
【００２１】
メインメモリ１０４は、アプリケーションプログラムおよびデータが記憶されているメモリである。プロセッサ１０１は主にメインメモリ１０４の外部で動作する。一実施例では、メインメモリ１０４はダイナミックランダムアクセスメモリ（ＤＲＡＭ）であってもよく、または好ましくは、他の実施例では、メインメモリ１０４は同期型ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）であってもよい。
【００２２】
ＰＣＩ装置１１２Ａ−１１２Ｂは、たとえば、ネットワークインターフェイスカード、ビデオアクセラレータ、オーディオカード、ハードまたはフレキシブルディスクドライブ、小型コンピュータシステムインターフェイス（ＳＣＳＩ）アダプタ、およびテレフォンカードなどのさまざまな周辺装置を例示している。同様に、業界標準アーキテクチャ（ＩＳＡ）装置１１８は、モデム、サウンドカード、および汎用インターフェイスバス（ＧＰＩＢ）またはフィールドバスインターフェイスカードなどのさまざまなデータ取得カードなどのさまざまな周辺装置のうちの１つを例示している。
【００２３】
グラフィックスコントローラ１０８は、ディスプレイ装置用にレンダリングおよび画像を制御するために設けられている。グラフィックスコントローラ１０８は、メインメモリ１０４の内外へ効果的に移動できる３次元データ構造をレンダリングする、当該技術分野では一般的に知られた典型的なグラフィックスアクセラレータを具体化していてもよい。グラフィックスコントローラ１０８はしたがって、バスブリッジ１０２内でターゲットインターフェイスへのアクセスをリクエストし、受取って、それによりメインメモリ１０４へのアクセスを得ることができるため、ＡＧＰバス１１０のマスタであり得る。
【００２４】
なお、ＡＧＰバス１１０およびＰＣＩバス１１４を上述の説明において例として用いてきたが、いかなる周辺バス規格を用いてもよい。以下により詳細に説明されるように、バスブリッジ１０２は、ＣＰＵバス１０３、ＰＣＩバス１１４、およびＡＧＰバス１１０からのリクエストを受けて、メインメモリ１０４からの読出またはメインメモリ１０４への書込を行なってもよい。バスブリッジ１０２は、これらのリクエストを、各リクエストの他のリクエストに対する優先順位とリクエスト時のメインメモリ１０４の状態とを考慮した優先順位付け方法に従って分類してもよい。このように、バスブリッジ１０２は、メモリバス１０６の帯域の利用を有利に最適化し、したがってコンピュータシステムの全体としての性能を向上させる。
【００２５】
図３を参照すると、バスブリッジの一実施例が示されている。図２に示されたものに対応する回路構成要素は、簡単明瞭にするため、全く同じに符号がつけられている。バスブリッジ１０２は、ＣＰＵインターフェイス２０４、ＰＣＩインターフェイス２１２、ＡＧＰインターフェイス２１４、およびメモリコントローラ２１０を含む。メモリコントローラ２１０は、ＣＰＵインターフェイス２０４、ＰＣＩインターフェイス２１２、およびＡＧＰインターフェイス２１４に結合されている。メモリコントローラ２１０はまた、メインメモリ１０４にもメモリバス１０６を介して結合されている。なお、バスブリッジ１０２の構成要素は、単一の集積回路チップ上に具体化されていてもよく、または、図２のコンピュータシステム２００の他の構成要素内に具体化されていてもよい。
【００２６】
以下により詳細に説明するように、メモリコントローラ２１０はリクエストバッファリング機構として複数のキューを用いる。キューは、ＣＰＵバス１０３、ＰＣＩバス１１４、およびＡＧＰバス１１０からのリクエストを、ＣＰＵインターフェイス２０４、ＰＣＩインターフェイス２１２、およびＡＧＰインターフェイス２１４を介してそれぞれ受けるように構成されている。
【００２７】
図４を参照すると、メモリコントローラの一実施例のブロック図が示されている。図２および図３に示されたものに対応する回路構成要素は、簡単明瞭にするため、全く同じに符号がつけられている。メモリコントローラ２１０は、スケジューラ３２０に結合されているアービタ３１０と、グラフィックスアドレスリマッピングテーブル（ＧＡＲＴ）テーブルウォーク３３０とを含む。アービタ３１０はまた、ＣＰＵインターフェイス２０４、ＰＣＩインターフェイス２１２、およびＡＧＰインターフェイス２１４にも結合されている。スケジューラ３２０は、メモリバス１０６を介してメインメモリ１０４に結合されている。
【００２８】
アービタ３１０は、メモリ読出キュー（ＭＲＱ）２２４、メモリ書込キュー（ＭＷＱ）２２２、アドバンストグラフィックスポートキュー（ＡＧＰＱ）２２６、および優先順位論理ブロック３１５を含む。アービタ３１０は、ＣＰＵインターフェイス２０４、ＰＣＩインターフェイス２１２、およびＡＧＰインターフェイス２１４からの外部メモリリクエストを受けるよう構成されていてもよい。アービタ３１０はまた、ＧＡＲＴテーブルウォーク３３０からの１つの内部メモリリクエストと、１つのバイパスリクエスト（ＢＹＰ）とを受けるよう構成されていてもよい。外部リクエストは、ＭＲＱ２２４、ＭＷＱ２２４、またはＡＧＰＱ２２６のうちの１つに格納される。ＭＲＱ２２４は、メインメモリ１０４から読出すリクエストを格納する。ＭＷＱ２２２は、メインメモリ１０４へ書込むリクエストを格納し、ＡＧＰＱ２２６は、メインメモリ１０４から読出すかまたはメインメモリ１０４へ書込むリクエストを格納する。なお、特定の一実施例では、ＭＲＱ２２４は４つまでのメモリ読出リクエストに対処するため４つの別個のバッファに具体化されていてもよい。ここでは簡潔にするため１つのキューとして記載する。ＭＷＱのサイズは１エントリで、ＡＧＰＱのサイズは１エントリである。しかしながら、さまざまな他の実施例では、ＭＲＱ２２４、ＭＷＱ２２２、およびＡＧＰＱ２２６のサイズは異なっていてもよい。リクエストが一旦それらのそれぞれのキューに入ると、それらは次に、メインメモリ１０４の状態にさらに依存して分類される。優先順位論理ブロック３１５は、以下により詳細に記載される一定の優先順位に従って、リクエストのうちの１つを選択し、スケジューラ３２０へ提供する。スケジューラ３２０は次に、読出か書込のいずれかであるリクエストをメモリバス１０６上にスケジュールする。
【００２９】
この特定の実施例では、メインメモリ１０４はＳＤＲＡＭに具体化されている。上述のように、ＳＤＲＡＭのアクセスは通常、ページモードで起こる。これらのページモードアクセスは、ページヒットリクエスト（ＰＨ）、ページミスバンクリクエスト（ＰＭｂ）、ページミス−別チップ選択リクエスト（ＰＭｃ）、およびページコンフリクトリクエスト（ＰＣ）に分類されてもよい。リクエストに与えられた優先順位は、リクエストの各種類に関連する待ち時間に基づいている。
【００３０】
図５を見ると、図４のアービタ３１０の優先順位論理ブロックの一実施例のブロック図が示されている。図４に示されたものに対応する回路構成要素は、簡潔明瞭にするため全く同じに符号がつけられている。優先順位論理ブロック３１５は分類マルチプレクサ４１０Ａ、４１０Ｂ、４１０Ｃおよび４１０Ｄを含み、それらは組合せ論理を用いて、図４のＭＲＱ２２４、ＭＷＱ２２２、およびＡＧＰＱ２２６から受取った複数のリクエストを、上述の４つの分類、つまりページヒット（ＰＨ）、ページミスバンク（ＰＭＢ）、ページミス−別チップ選択（ＰＭＣ）、およびページコンフリクト（ＰＣ）に分類する。この説明のため、分類マルチプレクサ４１０Ａ、４１０Ｂ、４１０Ｃ、および４１０Ｄは各々、分類マルチプレクサ４１０と呼ばれてもよい。なお、他の実施例では、分類の数に依存して、分類マルチプレクサ４１０の数がこれより多くても少なくてもよい。分類マルチプレクサ４１０は、図６に図示されるような分類方法に基づいて、各分類（たとえばＰＨ、ＰＭｂ、ＰＭｃ、およびＰＣ）から１つのリクエストを選択するよう構成されている。分類マルチプレクサ４１０の出力は、優先順位選択マルチプレクサ４２０に入力される。
【００３１】
優先順位選択マルチプレクサ４２０は、スケジュールすべき次のリクエストをスケジューラ３２０へ選択する。優先順位選択マルチプレクサ４２０は、以下の外部／内部リクエスト、つまり、機会に応じたプリチャージ（ＯＰ）、ＡＧＰインターフェイス２１４からの優先順位の高いリクエスト（Ｈｉ  ＡＧＰ）、優先順位の高いメモリ書込リクエスト（Ｈｉ  ＭＷＱ）、ＧＡＲＴテーブルウォーク（ＧＴＷ）３３０からの内部リクエスト、分類マルチプレクサ４１０からの４つの分類されたリクエスト（ＰＨ、ＰＭｂ、ＰＭｃ、ＰＣ）、および内部アイドルプリチャージ信号から選択する。リクエストが一旦優先順位付けされると、優先順位選択マルチプレクサ４２０は、優先順位の最も高いリクエストをスケジューラ３２０へ通すよう構成されている。優先順位選択方法は、図７の説明において以下に説明される。
【００３２】
優先順位選択マルチプレクサ４２０は、分類マルチプレクサ４１０からの出力リクエスト（たとえばＰＨ、ＰＭｂ、ＰＭｃ、およびＰＣ）を、これらのリクエストによって提示された待ち時間に基づいて優先順位付けする。前述のように、ＰＨリクエストは、ＰＭｂ、ＰＭｃ、およびＰＣリクエストよりも高い調停優先順位を受けている。しかし、優先順位のより低いリクエストに対するサービスの枯渇を防ぐため、優先順位選択マルチプレクサ４２０は、予め定められた限度に達するとＰＨリクエストのサービスを止めるよう構成されていてもよい。優先順位選択マルチプレクサ４２０は、連続してサービスされるページヒットリクエストの数を１から３２に制限するプログラマブル論理ユニット４２１を含んでいてもよい。プログラマブル論理ユニット４２１は、ＰＨリクエスト限度を記憶するよう構成されたリミットレジスタ４２２と、リミットレジスタ４２２に結合されたカウンタ４２３とを含む。カウンタ４２３は、スケジューラ３２０によって連続してサービスされた優先ヒットの数を数えるよう構成されている。カウンタ４２３が一旦プログラム可能限度に達すると、優先順位選択マルチプレクサ４２０は、異なるリクエスト、たとえばＰＭｂまたはＰＭｃを選択してもよい。カウンタ４２３はその場合、０にリセットされ、スケジューラ３２０によって連続してサービスされる優先ヒットの数を再び数え始める。
【００３３】
図６を参照すると、図５の分類マルチプレクサの分類論理の一実施例のブロック図が示されている。図５に示されたものに対応する回路構成要素は、簡潔明瞭にするため全く同じに符号がつけられている。分類マルチプレクサ４１０は、複数のマルチプレクサを含む組合せ論理を用いて、優先順位の最も高いリクエストを選択する。なお、他の実施例は他の論理ブロックおよび構成を用いてもよい。
【００３４】
分類マルチプレクサ４１０はまた、ＡＧＰＱリクエストとＭＷＱリクエストのどちらも有効でないことを示す内部信号も含む。この内部リクエストは、無効分類ポインタ（ＩＮＶ）と呼ばれる。メモリ読出キュー０（ＭＲＱ０）からのリクエストには一番高い優先順位が与えられるのに対し、ＩＮＶには一番低い優先順位が与えられる。マルチプレクサ６１０は、ＭＲＱ０からのリクエストに、メモリ読出キュー１であるＭＲＱ１からのリクエストよりも高い優先順位を与える。マルチプレクサ６２０は、メモリ読出キュー２であるＭＲＱ２からのリクエストに、メモリ読出キュー３であるＭＲＱ３からのリクエストよりも高い優先順位を与える。マルチプレクサ６３０は、ＭＲＱ０およびＭＲＱ１からのリクエストに、ＭＲＱ２およびＭＲＱ３からのリクエストよりも高い優先順位を与える。マルチプレクサ６４０は、ＭＷＱからのリクエストに、ＡＧＰＱからのリクエストよりも高い優先順位を与える。マルチプレクサ６４０はさらに、ＡＧＰＱからのリクエストに、無効分類ポインタよりも高い優先順位を与える。マルチプレクサ６５０は、ＭＲＱ０−３からのリクエストに、ＭＷＱおよびＡＧＰＱからのリクエストよりも高い優先順位を与える。分類マルチプレクサ４１０の出力は有効分類リクエストポインタであり、図４の優先順位選択マルチプレクサ４２０に入力される。
【００３５】
図７を見ると、図５の優先順位選択マルチプレクサ４２０の優先順位付け論理の一実施例が示されている。優先順位選択マルチプレクサ４２０の組合せ論理は、複数の２入力マルチプレクサを含む。なお、他の実施例では、他の論理構成が用いられてもよい。優先順位選択マルチプレクサ４２０はその入来リクエストに優先順位を最高から最低まで以下のように、つまりバイパス（ＢＹＰ）、ＯＰ、Ｈｉ  ＭＷＱ、Ｈｉ  ＡＧＰ、ＧＴＷ、ＰＨ、ＰＭｂ、ＰＭｃ、ＰＣ、およびアイドルプリチャージの順に割当てる。
【００３６】
マルチプレクサ７１０はＯＰにＨｉ  ＭＷＱよりも高い優先順位を与える。マルチプレクサ７２０はＨｉ  ＡＧＰにＧＴＷより高い優先順位を与える。マルチプレクサ７３０はＰＣにアイドルプリチャージよりも高い優先順位を与える。マルチプレクサ７４０はＰＨにＰＭｂよりも高い優先順位を与える。マルチプレクサ７５０はＰＭｃにＰＣおよびアイドルプリチャージの両方よりも高い優先順位を与える。マルチプレクサ７６０は、プリチャージおよびＨｉ  ＭＷＱに、Ｈｉ  ＡＧＰおよびＧＴＷよりも高い優先順位を与える。マルチプレクサ７７０は、ＰＨおよびＰＭｂに、ＰＭｃ、ＰＣ、およびアイドルプリチャージよりも高い優先順位を与える。マルチプレクサ７８０は、プリチャージ、Ｈｉ  ＭＴＱ、Ｈｉ  ＡＧＰ、およびＧＴＷに、ＰＨ、ＰＭＢ、ＰＭＣ、ＰＣ、およびアイドルプリチャージよりも高い優先順位を与える。マルチプレクサ７９０はバイパスに最も高い優先順位を与える。マルチプレクサ７９０の出力は、スケジューラ３２０に送られる選択されたリクエストである。
【００３７】
以下により詳細に説明するように、ＢＹＰリクエストは、現在有効なチップ選択がない場合にのみ発行される。これはメモリコントローラ２１０が完全にアイドルである場合に起こり得る。現在有効なチップ選択信号がないため、ＰＭｃリクエストはＰＭｂリクエストとして扱われる。ＢＹＰリクエストは、受け入れられるたびに、図５のスケジューラ３２０を直接介して図４のメモリバス１０６上へと１サイクルで通ってもよい。
【００３８】
リクエストがメモリバス１０６上に１サイクルで置かれてもよいため、ＢＹＰには最も高い優先順位が与えられる。しかし、メモリコントローラが完全にアイドルである場合は稀である。ＯＰリクエストには、すべての他のリクエストのうち２番目に高い優先順位が与えられる。ＯＰは、８カッドワードのＰＨまたはＰＭｂリクエストが受付けられてＰＣリクエストが起こる確率が低くなってからたった１サイクル後に発行される。アイドルプリチャージリクエストは、新しい有効リクエストがプログラム可能な数のサイクルを超える間にアービタ３１０に提示されなかった場合に発行され、したがってそれにはすべてのリクエストのうち最も低い優先順位が与えられている。
【００３９】
図８は、図５のスケジューラ３２０の一実施例を示している。図２〜７に示されたものに対応する回路構成要素は、簡潔明瞭にするため全く同じに符号がつけられている。スケジューラ３２０は、図５の優先順位選択マルチプレクサ４２０から受取ったリクエストを、図８のメモリバス１０６上へスケジュールする。スケジューラ３２０は、優先順位マルチプレクサ８４０に結合された３つのキューを含む。３つのキューは、プリチャージキュー（ＰＱ）８２０、活性化キュー（ＡＱ）８１０、および読出／書込キュー（ＲＷＱ）８３０である。スケジューラ３２０は、ＰＱ８２０に最も高い優先順位を与え、次にＡＱ８１０、その次にＲＷＱ８３０が続くよう構成されていてもよい。
【００４０】
ＯＰサイクルを起動するリクエストは、ＰＱ８２０にロードされる。活性化サイクルを起動するリクエストは、ＡＱ８１０にロードされる。読出／書込サイクルを起動するリクエストは、ＲＷＱ８３０にロードされる。なお、特定の一実施例では、ＡＱ８１０およびＰＱ８２０のサイズは１ディープ（ｄｅｅｐ）である。ＲＷＱ８３０のサイズは３ディープである。１ディープの深さによって、スケジューラは、最後のリクエストの処理が終了してメモリバス１０６がアイドルになる前の可能な限り最も遅い時間に、次のリクエストを受付けるようになる。可能な限り最も遅い時間まで待って次のリクエストを図５のアービタ３１０から受付けることにより、アービタ３１０はより多くのリクエストを調べる機会を得、それによりＰＨまたはＰＭｂリクエストが提示される確率が高まる。しかし、図８のスケジューラ３２０のキューのサイズは、異なる実施例では異なっていてもよい。
【００４１】
図１の説明に関連して、ＳＤＲＡＭモジュール１６Ａ−Ｃの各バンクは、特定のメモリアクセスアドレスによってアクセスされる複数のページを含んでいる。図４のアービタ３１０によって受取られる特定の種類のリクエストに依存して、１つまたはそれ以上のサイクルが図８のスケジューラ３２０によって起動され、リクエストされたページにアクセスする。たとえば、スケジューラ３２０がＰＨリクエストを受けた場合、読出／書込サイクルを起動するリクエストが図８のＲＷＱ８３０にロードされる。したがって、読出／書込サイクルのみがスケジューラ３２０によって起動され、アドレスロケーションから読出すかまたはアドレスロケーションへ書込む。スケジューラ３２０がＰＭｂリクエストを受けた場合、活性化サイクルと読出／書込サイクルの両方を起動するリクエストが、ＡＱ８１０およびＲＷＱ８３０にそれぞれロードされる。ＡＱ８１０はＲＷＱ８３０よりも優先順位が高いため、読出／書込サイクルの前に活性化サイクルが起動される。スケジューラ３２０がＰＭｃリクエストを受けた場合、活性化サイクルおよび読出／書込サイクルを起動するリクエストがまた、活性化キュー８１０および読出／書込キュー８３０にそれぞれロードされる。図１の説明において記載された１サイクルターンアラウンドバブルの後、図８のスケジューラ３２０は活性化サイクルを起動させ、次に読出／書込サイクルが続く。
【００４２】
スケジューラ３２０がＰＣリクエストを受けた場合、プリチャージサイクル、活性化サイクル、および読出／書込サイクルを起動するリクエストが、ＰＱ８２０、ＡＱ８２０、およびＲＷＱ８３０にそれぞれロードされる。ＰＱ８２０の優先順位が最も高いため、プリチャージサイクルがまず動作し、次に活性化サイクル、その次に読出／書込サイクルが続く。しかし、ＰＣリクエストは通常、最悪の待ち時間を呈しているため、ＰＣリクエストはＯＰリクエストに変換され、次にＰＭｂリクエストが続いてもよい。これにより、ＰＣよりも遅くに受取られたより最適なリクエストが、ＯＰとＰＭｂとの間でインタリーブされるようになる。
【００４３】
スケジューラ３２０がＢＹＰリクエストを受ける場合、概念上、これはＰＭｃリクエストとなる。しかしながら、定義上はアクティブチップ選択がないため、それはＰＭｂリクエストとして扱われる。スケジューラ３２０はしたがって、このリクエストをＡＱ８２０を介してメモリバス１０６へと１サイクルで通してもよい。
【００４４】
メモリバス１０６上の事象をスケジュールし、最適化することに加え、スケジューラ３２０はまた、ＳＤＲＡＭへのリフレッシュサイクル、リセットからのＳＤＲＡＭの初期化と構成、およびＳＤＲＡＭの電源投入と電源切断を含むさまざまな他のＳＤＲＡＭ関連活動を制御するよう構成されていてもよい。
【００４５】
この発明のシステムおよび方法がいくつかの実施例に関連づけて説明されたが、それはここに述べられた特定の形状に限定されるようには意図されておらず、むしろ逆に、特許請求の範囲によって規定されるようなこの発明の精神および範囲内に合理的に含まれ得るような代替物、変更、および均等物を網羅するよう意図されている。
【００４６】
【産業上の利用可能性】
この発明はコンピュータシステムに利用可能である。
【図面の簡単な説明】
【図１】例示的なメモリサブシステムを示す図である。
【図２】バスブリッジを含むコンピュータシステムの一実施例のブロック図である。
【図３】バスブリッジの一実施例のブロック図である。
【図４】メモリコントローラの一実施例のブロック図である。
【図５】図４のアービタの優先順位論理ブロックの一実施例のブロック図である。
【図６】図５の分類マルチプレクサの分離論理の一実施例のブロック図である。
【図７】図５の優先順位選択マルチプレクサの優先順位付け論理の一実施例を示す図である。
【図８】メモリコントローラ内のスケジューラの一実施例を示す図である。
【図１】
2004500667.tif 000003
【図２】
2004500667.tif 000004
【図３】
2004500667.tif 000005
【図４】
2004500667.tif 000006
【図５】
2004500667.tif 000007
【図６】
2004500667.tif 000008
【図７】
2004500667.tif 000009
【図８】
2004500667.tif 000010
【国際公開パンフレット】
2004500667.tif 000011
2004500667.tif 000012
2004500667.tif 000013
2004500667.tif 000014
2004500667.tif 000015
2004500667.tif 000016
2004500667.tif 000017
2004500667.tif 000018
2004500667.tif 000019
2004500667.tif 000020
2004500667.tif 000021
2004500667.tif 000022
2004500667.tif 000023
2004500667.tif 000024
2004500667.tif 000025
2004500667.tif 000026
2004500667.tif 000027
2004500667.tif 000028
2004500667.tif 000029
2004500667.tif 000030
【国際調査報告】
2004500667.tif 000031
2004500667.tif 000032
2004500667.tif 000033