(57)【特許請求の範囲】
【請求項１】
複数のメモリ装置と、メモリハブと、を備えるメモリモジュールであって、
該メモリハブは、
該メモリ装置のうちの少なくとも１つにアクセスするためのメモリ要求を受信するリンクインターフェイスと、
少なくとも１つのメモリ装置インターフェイスであって、該少なくとも１つのメモリ装置インターフェイスのそれぞれが、メモリコントローラを有し、それぞれの数の該メモリ装置に連結され、かつ、該メモリ装置のうちの少なくとも１つにアクセスするためのメモリ要求を該それぞれの数のメモリ装置に連結し、また、該少なくとも１つのメモリ装置インターフェイスのうちの１つが、少なくとも、該それぞれの数のメモリ装置に特定の信号を提供および受信するよう動作可能である、メモリ装置インターフェイスと、
該リンクインターフェイスおよび該メモリ装置インターフェイスを選択的に連結するためのスイッチと、
該スイッチを介して該メモリ装置インターフェイスに連結されるダイレクトメモリアクセス（ＤＭＡ）エンジンであって、ＤＭＡ動作を行うために該メモリ装置のうちの少なくとも１つにアクセスするためのメモリ要求を生成する、ＤＭＡエンジンと、
を備える、メモリモジュール。
【請求項２】
前記メモリハブが、前記リンクインターフェイスと、前記メモリ装置インターフェイスと、前記スイッチと、前記ＤＭＡエンジンとを有する組み込み型システムであり、該組み込み型システムは単一の装置内に設けられている、請求項１に記載のメモリモジュール。
【請求項３】
前記メモリ装置インターフェイスが、
メモリコントローラバスを介して前記スイッチに連結され、かつ、メモリ装置バスを介して前記メモリ装置にさらに連結された前記メモリコントローラと、
該メモリコントローラが連結された該メモリ装置のうちの少なくとも１つへ向けられたメモリ要求を格納するための、該メモリコントローラに連結された書き込みバッファと、
該メモリ装置に提供されるデータ、または該メモリ装置から取り出されたデータを格納するための、該メモリコントローラに連結されたキャッシュと、
を備える、請求項１に記載のメモリモジュール。
【請求項４】
前記スイッチがクロスバースイッチを含む、請求項１に記載のメモリモジュール。
【請求項５】
前記複数のメモリ装置が、メモリ動作中に同時にアクセスされるメモリ装置のバンクである、請求項１に記載のメモリモジュール。
【請求項６】
前記複数のメモリ装置が、同期型ダイナミックランダムアクセスメモリ装置を含む、請求項１に記載のメモリモジュール。
【請求項７】
前記ＤＭＡエンジンが、
ＤＭＡ動作のための開始メモリアドレスを格納するためのアドレスレジスタと、
該ＤＭＡ動作においてデータを移動する位置の対象アドレスを格納するための対象アドレス位置と、
該ＤＭＡ動作においてアクセスされるメモリ位置の数を示すカウント値を格納するためのカウントレジスタと、
ネクストレジスタであって、該ＤＭＡ動作の完了を示す値、または、該アドレスレジスタ、該カウントレジスタ、および該ネクストレジスタにロードされる開始メモリアドレス、カウント値、および次のメモリアドレスを含むリンクリストに対応するメモリアドレスを示す値を格納するためのネクストレジスタと、
を備える、請求項１に記載のメモリモジュール。
【請求項８】
複数のメモリ装置を有するメモリモジュール用のメモリハブであって、
該メモリ装置のうちの少なくとも１つにアクセスするためのメモリ要求を受信するためのリンクインターフェイスと、
少なくとも１つのメモリ装置インターフェイスであって、該少なくとも１つのメモリ装置インターフェイスのそれぞれが、メモリコントローラを有し、それぞれの数の該メモリ装置に連結され、かつ、該メモリ装置のうちの少なくとも１つにアクセスするためのメモリ要求を該それぞれの数のメモリ装置に連結し、また、該少なくとも１つのメモリ装置インターフェイスのうちの１つが、少なくとも、該それぞれの数のメモリ装置に特定の信号を提供および受信するよう動作可能である、メモリ装置インターフェイスと、
該リンクインターフェイスおよび該メモリ装置インターフェイスを選択的に連結するためのスイッチと、
該スイッチを介して該メモリ装置インターフェイスに連結されるダイレクトメモリアクセス（ＤＭＡ）エンジンであって、ＤＭＡ動作を行うために該メモリ装置のうちの少なくとも１つにアクセスするためのメモリ要求を生成する、ＤＭＡエンジンと、
を備える、メモリハブ。
【請求項９】
前記リンクインターフェイスと、前記メモリ装置インターフェイスと、前記スイッチと、前記ＤＭＡエンジンとが、単一の装置内に設けられた組み込み型システムである、請求項８に記載のメモリハブ。
【請求項１０】
前記メモリ装置インターフェイスが、
メモリコントローラバスを介して前記スイッチに連結され、かつ、メモリ装置バスを介して前記メモリ装置にさらに連結された前記メモリコントローラと、
該メモリコントローラが連結される該メモリ装置のうちの少なくとも１つへ向けられたメモリ要求を格納するための、該メモリコントローラに連結された書き込みバッファと、
該メモリ装置に提供されるデータ、または該メモリ装置から取り出されたデータを格納するための、該メモリコントローラに連結されたキャッシュと、
を備える、請求項８に記載のメモリハブ。
【請求項１１】
前記スイッチがクロスバースイッチを含む、請求項８に記載のメモリハブ。
【請求項１２】
前記ＤＭＡエンジンが、
ＤＭＡ動作のための開始メモリアドレスを格納するためのアドレスレジスタと、
該ＤＭＡ動作においてデータを移動する位置の対象アドレスを格納するための対象アドレス位置と、
該ＤＭＡ動作においてアクセスされるメモリ位置の数を示すカウント値を格納するためのカウントレジスタと、
ネクストレジスタであって、該ＤＭＡ動作の完了を示す値、または、該アドレスレジスタ、該カウントレジスタ、および該ネクストレジスタへロードされる開始メモリアドレス、カウント値、および次のメモリアドレスを含むリンクリストに対応するメモリアドレスを示す値を格納するためのネクストレジスタと、
を備える、請求項８に記載のメモリハブ。
【請求項１３】
メモリ要求が提供されるメモリバスと、
該メモリバスに連結され、複数のメモリ装置およびメモリハブを有する少なくとも１つのメモリモジュールと、
を備えるメモリシステムであって、
該メモリハブは、
リンクインターフェイスであって、該リンクインターフェイスが位置する該メモリモジュールの該メモリ装置のうちの少なくとも１つにアクセスするためのメモリ要求を受信するよう連結されたリンクインターフェイスと、
少なくとも１つのメモリ装置インターフェイスであって、該少なくとも１つのメモリ装置インターフェイスのそれぞれが、メモリコントローラを有し、それぞれの数の該メモリ装置に連結され、かつ、該メモリ装置のうちの少なくとも１つにアクセスするためのメモリ要求を該それぞれの数のメモリ装置に連結し、また、該少なくとも１つのメモリ装置インターフェイスのうちの１つが、少なくとも、該それぞれの数のメモリ装置に特定の信号を提供および受信するよう動作可能である、メモリ装置インターフェイスと、
該リンクインターフェイスと該メモリ装置インターフェイスとを選択的に連結するためのスイッチと、
該スイッチを介して該メモリ装置インターフェイスおよび該リンクインターフェイスに連結されるダイレクトメモリアクセス（ＤＭＡ）エンジンであって、ＤＭＡ動作を行うために該メモリ装置のうちの少なくとも１つにアクセスするためのメモリ要求を生成する、ＤＭＡエンジンと、
を備える、メモリシステム。
【請求項１４】
前記メモリハブが、前記リンクインターフェイスと、前記メモリ装置インターフェイスと、前記スイッチと、前記ＤＭＡエンジンとを有する組み込み型システムであり、該組み込み型システムは単一の装置内に設けられている、請求項１３に記載のメモリシステム。
【請求項１５】
前記メモリバスが高速メモリバスを含む、請求項１３に記載のメモリシステム。
【請求項１６】
前記メモリバスが高速光メモリバスを含み、前記リンクインターフェイスが光信号および電気信号を変換するための光メモリバスインターフェイス回路を含む、請求項１３に記載のメモリシステム。
【請求項１７】
複数のメモリモジュールが前記メモリシステムに含まれ、前記複数のメモリモジュールのうちの第１のメモリモジュールが前記メモリバスに連結され、該複数のメモリモジュールのうちの残りのメモリモジュールが該第１のメモリモジュールに直列に連結される、請求項１３に記載のメモリシステム。
【請求項１８】
複数のメモリモジュールが前記メモリシステムに含まれ、前記複数のメモリモジュールの各々が、各リンクインターフェイスを介して前記メモリバスに直接連結される、請求項１３に記載のメモリシステム。
【請求項１９】
前記メモリハブの前記メモリ装置インターフェイスが、
メモリコントローラバスを介して前記スイッチに連結され、かつ、メモリ装置バスを介して該メモリ装置に連結された前記メモリコントローラと、
該メモリコントローラが連結される該メモリ装置のうちの少なくとも１つへ向けられたメモリ要求を格納するための、該メモリコントローラに連結された書き込みバッファと、
該メモリ装置に提供されるデータ、または該メモリ装置から取り出されたデータを格納するための、該メモリコントローラへ連結されたキャッシュと、
を備える、請求項１３に記載のメモリシステム。
【請求項２０】
前記メモリハブの前記スイッチがクロスバースイッチを含む、請求項１３に記載のメモリシステム。
【請求項２１】
前記メモリモジュールの複数のメモリ装置が、メモリ動作中に同時にアクセスされるメモリ装置のバンクである、請求項１３に記載のメモリシステム。
【請求項２２】
前記メモリモジュールの複数のメモリ装置が、同期型ダイナミックランダムアクセスメモリ装置を含む、請求項１３に記載のメモリシステム。
【請求項２３】
前記メモリハブの前記ＤＭＡエンジンが、
ＤＭＡ動作が開始する前記メモリシステム内のメモリ位置の開始メモリアドレスを格納するためのアドレスレジスタと、
該ＤＭＡ動作においてデータを移動する該メモリシステム内のメモリ位置の対象アドレスを格納するための対象アドレス位置と、
該ＤＭＡ動作においてアクセスされるメモリ位置の数を示すカウント値を格納するためのカウントレジスタと、
該ＤＭＡ動作の完了を示す値、または該アドレスレジスタ、該カウントレジスタ、およびネクストレジスタにロードされる開始メモリアドレス、カウント値、および次のメモリアドレスを含むリンクリストに対応するメモリアドレスを示す値を格納するためのネクストレジスタと、
を備える、請求項１３に記載のメモリシステム。
【請求項２４】
中央演算処理装置（「ＣＰＵ」）と、
該ＣＰＵに連結されたシステムコントローラであって、入力ポートおよび出力ポートを有する、システムコントローラと、
該システムコントローラを介して該ＣＰＵに連結された入力装置と、
該システムコントローラを介して該ＣＰＵに連結された出力装置と、
該システムコントローラを介して該ＣＰＵに連結された格納装置と、
複数のメモリ装置およびメモリハブを備える少なくとも１つのメモリモジュールと、
該システムコントローラと該メモリモジュールとの間で、メモリ要求およびデータを連結するための、該システムコントローラと該複数のメモリモジュールのうちの少なくとも１つとの間に連結された通信リンクと、
を備えたコンピュータシステムであって、
該メモリハブは、
リンクインターフェイスであって、該リンクインターフェイスが位置する該メモリモジュールの該メモリ装置のうちの少なくとも１つにアクセスするためのメモリ要求を受信するよう連結されたリンクインターフェイスと、
少なくとも１つのメモリ装置インターフェイスであって、該少なくとも１つのメモリ装置インターフェイスのそれぞれが、メモリコントローラを有し、それぞれの数の該メモリ装置に連結され、かつ、該メモリ装置のうちの少なくとも１つにアクセスするためのメモリ要求を該それぞれの数のメモリ装置に連結し、また、該少なくとも１つのメモリ装置インターフェイスのうちの１つが、少なくとも、該それぞれの数のメモリ装置に特定の信号を提供および受信するよう動作可能である、メモリ装置インターフェイスと、
該リンクインターフェイスおよび該メモリ装置インターフェイスを選択的に連結するスイッチと、
該スイッチを介して該メモリ装置インターフェイスおよび該リンクインターフェイスへ連結されたダイレクトメモリアクセス（ＤＭＡ）エンジンであって、ＤＭＡ動作を行うために該複数のメモリモジュールの該メモリ装置のうちの少なくとも１つにアクセスするためのメモリ要求を生成する、ＤＭＡエンジンと、
を備える、コンピュータシステム。
【請求項２５】
前記通信リンクが高速メモリバスを含む、請求項２４に記載のコンピュータシステム。
【請求項２６】
前記メモリハブが、前記リンクインターフェイスと、前記メモリ装置インターフェイスと、前記スイッチと、前記ＤＭＡエンジンとを有する組み込みシステムであり、該組み込み型システムは単一の装置内に設けられている、請求項２４に記載のコンピュータシステム。
【請求項２７】
前記通信リンクが高速光メモリバスを含み、前記メモリハブの前記リンクインターフェイスが光信号および電気信号を変換するための光メモリバスインターフェイス回路を含む、請求項２４に記載のコンピュータシステム。
【請求項２８】
複数のメモリモジュールが前記コンピュータシステムに含まれ、該複数のメモリモジュールのうちの第１のメモリモジュールが前記通信リンクに連結され、該複数のメモリモジュールのうちの残りのメモリモジュールが該第１のメモリモジュールに直列に連結される、請求項２４に記載のコンピュータシステム。
【請求項２９】
複数のメモリモジュールが前記コンピュータシステムに含まれ、該複数のメモリモジュールの各々が各リンクインターフェイスを介して前記メモリバスに直接連結される、請求項２４に記載のコンピュータシステム。
【請求項３０】
前記メモリハブの前記メモリ装置インターフェイスが、
メモリコントローラバスを介して前記スイッチに連結され、かつ、メモリ装置バスを介して前記メモリ装置にさらに連結された前記メモリコントローラと、
該メモリコントローラが連結される該メモリ装置のうちの少なくとも１つへ向けられたメモリ要求を格納するための、該メモリコントローラへ連結された書き込みバッファと、
該メモリ装置に提供されるデータまたは該メモリ装置から取り出されたデータを格納するための該メモリコントローラに連結されたキャッシュと、
を備える、請求項２４に記載のコンピュータシステム。
【請求項３１】
前記メモリハブの前記スイッチがクロスバースイッチを含む、請求項２４に記載のコンピュータシステム。
【請求項３２】
前記メモリモジュールの複数のメモリ装置が、メモリ動作中に同時にアクセスされるメモリ装置のバンクである、請求項２４に記載のコンピュータシステム。
【請求項３３】
前記メモリモジュールの複数のメモリ装置が、同期型ダイナミックランダムアクセスメモリ装置を含む、請求項２４に記載のコンピュータシステム。
【請求項３４】
前記メモリハブの前記ＤＭＡエンジンが、
ＤＭＡ動作が開始する前記メモリシステム内のメモリ位置の開始メモリアドレスを格納するためのアドレスレジスタと、
該ＤＭＡ動作においてデータを移動する該メモリシステム内のメモリ位置の対象アドレスを格納する対象アドレス位置と、
該ＤＭＡ動作においてアクセスされるメモリ位置の数を示すカウント値を格納するためのカウントレジスタと、
ネクストレジスタであって、該ＤＭＡ動作の完了を示す値、または該アドレスレジスタ、該カウントレジスタ、および該ネクストレジスタに読み込まれる開始メモリアドレス、カウント値、および次のメモリアドレスを含むリンクリストに対応するメモリアドレスを示す値を格納するためのネクストレジスタと、
を備える、請求項２４に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータシステムに関し、より具体的にはメモリハブ構造を有するシステムメモリを含むコンピュータシステムに関する。
【背景技術】
【０００２】
コンピュータシステムは、プロセッサがアクセスするデータを保存するために、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）デバイスのようなメモリ装置を使用する。これらのメモリ装置は、通常コンピュータシステム内においてシステムメモリとして利用される。一般的なコンピュータシステムでは、プロセッサはプロセッサバスとメモリコントローラを介してシステムメモリと通信する。プロセッサは、読み出しコマンドなどのメモリコマンドやデータあるいは指示の読み出し元の位置を指定するアドレスを含むメモリ要求を出す。メモリコントローラは、システムメモリに割り当てられた行と列のアドレスと同様、適切なコマンド信号を発生させるためにコマンドとアドレスを利用する。コマンドとアドレスに応答して、データはシステムメモリとプロセッサ間を移動する。メモリコントローラは多くの場合、ＰＣＩバスのような拡張バスにプロセッサバスを連結させるためのバスブリッジ回路も含んだシステムコントローラの一部となっている。
【０００３】
メモリ装置の動作速度は増加し続けているが、この動作速度の増加はプロセッサの動作速度の増加とは一致しない。メモリ装置へプロセッサを連結するメモリコントローラの動作速度の増加はより遅い。メモリコントローラおよびメモリ装置の速度が比較的遅いために、プロセッサとメモリ装置間のデータの処理能力が制限される。
【０００４】
プロセッサとメモリ装置間の制限された処理能力に加えて、コンピュータシステムの能力は、システムメモリ装置からデータを読み出すために必要な時間を増やすという待ち時間の問題によっても制限されている。より具体的には、メモリ装置の読み出しコマンドが同期型ＤＲＡＭ（ＳＤＲＡＭ）デバイスなどのようなシステムメモリ装置に連結されているとき、読み出しデータはいくらかのクロック周期の遅れの後にＳＤＲＡＭデバイスからのみ出力される。したがって、ＳＤＲＡＭデバイスが高いデータ転送速度で同期的にバーストデータを出力できるとしても、最初に提供するデータの遅れはそのようなＳＤＲＡＭデバイスを使用しているコンピュータシステムの動作速度を著しく遅くする。
【０００５】
メモリの待ち時間の問題を軽減するための１つのアプローチとして、メモリハブを介してプロセッサへ連結された複数のメモリ装置を利用することがあげられる。メモリハブ構造では、システムコントローラ、もしくはメモリコントローラがいくつかのメモリモジュールに高速データリンクで連結されている。通常、メモリモジュールは、連続して次から次に接続されるようにポイント・ツー・ポイント、またはデイジー・チェーン構造で連結されている。よってメモリコントローラは第一のメモリモジュールに第一の高速データリンクを介して連結され、その第一のメモリモジュールは第二の高速データリンクを介して第二のメモリモジュールへ、その第二のメモリモジュールは第三の高速データリンクを介して第三のメモリモジュールへ、といったようにデイジー・チェーン構成で次から次に連結されているのである。
【０００６】
それぞれのメモリモジュールには、対応する高速データリンクとモジュール上の多くのメモリ装置に連結されているメモリハブが含まれ、そのメモリハブは、高速データリンクを介してコントローラとメモリ装置間のメモリ要求とレスポンスを効率良く送っている。１つのメモリ装置が前のメモリアクセスに応答している間、プロセッサは別のメモリ装置にアクセスすることができるため、この構造を採用しているコンピュータシステムはより高い情報処理量を持つことができる。例えば、システム内の１つのメモリ装置がプロセッサに読み出しデータを提供する準備をしている間に、プロセッサは他のメモリ装置へ書き込みデータを出力することができる。その上この構造は、従来型のマルチドロップバス構造のように、さらに多くのメモリモジュールが追加される時にも、信号品質の低下に影響することなくシステムメモリの簡単な拡張に備えている。
【０００７】
メモリハブを使用しているコンピュータシステムは、優れた能力を提供することができるが、それにも関わらず様々な理由で最適速度で動作できないこともしばしばある。例えば、メモリハブはコンピュータシステムに、より大きなメモリ処理量を提供することができるが、それでもまだ先述したような待ち時間の問題を持つのである。さらに具体的には、他のメモリ装置がデータを転送する準備をする間に、プロセッサは１つのメモリ装置と通信を行うが、他のメモリ装置からのデータを利用できるようにするには、先のメモリ装置からデータを受け取ることが必要なことがある。他のメモリ装置から受け取ったデータを利用できるためにもう１つのメモリ装置からデータを受け取らなければならない場合、プロセッサの干渉がそのコンピュータシステムの動作速度を遅らせ続ける。コンピュータシステムが最適速度で動作できないもう１つの理由に、全てのコントロール、アドレス、そしてデータ信号が共通のメモリハブ回路を通過しなければならないため、従来型のメモリハブが基本的に単一チャンネルシステムであることがあげられる。結果として、メモリハブ回路が１つのメモリ装置と通信中の場合には、他のメモリ装置と自由に通信することができなくなる。
【０００８】
単一チャンネル障害と同様、メモリへ、またメモリからのデータの移動におけるプロセッサ干渉問題を解決するために、コンピュータシステム内で用いられる技術の１つに、ダイレクトメモリアクセス（ＤＭＡ）の使用がある。ＤＭＡ動作はコンピュータシステム内に含まれるＤＭＡコントローラを使用して実施され、それにより、システムプロセッサの干渉なしに、メモリへ、またメモリから、データを転送することが可能になる。そのようなＤＭＡ動作とＤＭＡコントローラは、当技術分野では周知であり、しばしば従来型のコンピュータシステムで実施されている。ＤＭＡコントローラはプロセッサ関与の必要性を取り除き、システムメモリへ、またそれから移動する必要なデータを管理する。例えば、ＤＭＡがサポートする構成要素がデータをシステムメモリへと転送する際、ＤＭＡコントローラはプロセッサの関与なしにバスのコントロールを行い、システムメモリへのＤＭＡのサポートする構成要素からのデータの移動を調整する。このように、プロセッサ干渉に由来する待ち時間の問題は、システムバス全体でのデータ移動の間、避けることが可能なのである。しかしながら、多くの場合はＤＭＡ動作を介してシステムメモリへデータが移動された後でさえ、プロセッサはシステムメモリ内の１つの位置から別の位置へデータのブロックを移動させなければならない。例えば、オペレーティングシステムは、データが利用できるよう、プロセッサにデータをもう一度メモリ内の別の位置に移動させるためだけに、ＤＭＡ動作に大容量記憶装置からシステムメモリへデータを転送するように指示する。その結果、ＤＭＡ動作を持つ価値はある程度小さくなる。なぜなら、システムメモリへの、またそれからのデータ転送におけるＤＭＡ動作の利用に関わらず、プロセッサは最終的にはメモリ内でデータをあちこち移動することに関与してくるからである。
【０００９】
したがって、メモリハブ構造の有利性を提供し、そのようなシステムで一般的な待ち時間の問題を最小限に抑えるコンピュータ構造が必要となる。
【発明の開示】
【課題を解決するための手段】
【００１０】
（発明の概要）
本発明は、システムメモリ内でのＤＭＡ動作の遂行のためのＤＭＡエンジンを持つメモリモジュール用のメモリハブを対象とするものである。メモリハブには、システムメモリのメモリ装置のうちの少なくとも１つへのアクセスのためのメモリ要求を受け取るためのリンクインターフェイスが含まれ、さらには少なくとも１つのメモリ装置が含まれる。この少なくとも１つのメモリ装置インターフェイスのそれぞれが、メモリコントローラを有し、それぞれの数のメモリ装置に連結され、かつ、メモリ装置のうちの少なくとも１つにアクセスするためのメモリ要求を上記それぞれの数のメモリ装置に連結する。また、少なくとも１つのメモリ装置インターフェイスのうちの１つが、少なくとも、上記それぞれの数のメモリ装置に特定の信号を提供および受信するよう動作可能である。リンクインターフェイスとメモリ装置インターフェイスを選択的に連結するスイッチが、メモリハブに含まれる。加えて、ダイレクトメモリアクセス（ＤＭＡ）エンジンは、ＤＭＡ動作を行うためのメモリ装置のうちの少なくとも１つへのアクセスのためのメモリ要求を発生させるためにそのスイッチを介してメモリ装置インターフェイスに連結されている。
【００１１】
本発明の１つの側面において、プロセッサと、プロセッサに連結されるシステムコントローラと、メモリバスを通してシステムコントローラへ連結される少なくとも１つのメモリモジュールを有するシステムメモリとを有するコンピュータシステムにおける、メモリ動作を実行するための方法が提供される。この方法には、プロセッサの干渉なしにシステムメモリ内でメモリ動作を実行するための指示を表すＤＭＡ情報をシステムメモリ内の位置に書き込むステップと、プロセッサとシステムコントローラからメモリバスの制御を得るステップと、ＤＭＡ情報が書き込まれるシステムメモリ内の位置にアクセスし、前述の指示により表されるメモリ動作を実行するステップと、が含まれる。
【００１２】
（発明の詳細な説明）
本発明の実施例は、システムプロセッサの干渉なしにシステムメモリ内でデータの転送を行うためのダイレクトメモリアクセス（ＤＭＡ）機能を含むメモリハブ構造を有するシステムメモリを対象とするものである。一部の詳細は、発明の十分な理解を提供するために説明されるものである。しかしながら、当業者には、発明がこれらの特定の詳細なしに実行できることは明確であろう。他の事例では、発明を不必要にわかりにくくするのを防ぐために、周知の回路、制御信号、およびタイミングプロトコルは詳細には示されていない。
【００１３】
本発明の１つの実施例に係るコンピュータシステム１００を図１に示す。コンピュータシステム１００には、例えば特定の計算やタスクを遂行するための特定のソフトウェアを実行するなどの様々な計算機能を遂行するプロセッサ１０４が含まれる。プロセッサ１０４には、アドレスバス、制御バス、そしてデータバスを通常含むプロセッサバス１０６が含まれる。プロセッサバス１０６は通常、前述したように通常スタティックＲＡＭ（ＳＲＡＭ）であるキャッシュメモリ１０８に連結されている。最後に、プロセッサバス１０６は、時々「ノースブリッジ」や「メモリコントローラ」と称されるシステムコントローラ１１０に連結されている。
【００１４】
システムコントローラ１１０は、他の様々な構成要素のためにプロセッサ１０４への通信路としての役割を果たす。より具体的には、システムコントローラ１１０には、通常グラフィックスコントローラ１１２に連結されているグラフィックス端子が含まれ、それは順にビデオ端末１１４に連結されている。システムコントローラ１１０は、オペレータがコンピュータシステム１００にインターフェイスでつながることができるよう、キーボードやマウスといったひとつ以上の入力装置１１８にも連結されている。通常、コンピュータシステム１００には、システムコントローラ１１０を介してプロセッサ１０４に連結されているプリンターのような１つ以上の出力装置１２０が含まれている。また、プロセッサ１０４が、データを保存した内部もしくは外部の記憶媒体（図示せず）からデータを取り出したり格納したりすることができるよう、システムコントローラ１１０を介してプロセッサ１０４にひとつ以上のデータ記憶装置１２４が連結されている。一般的な記憶装置１２４の例としては、ハードディスク、フロッピー（登録商標）ディスク、カセットテープ、そしてコンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）が含まれる。
【００１５】
システムコントローラ１１０には、コンピュータシステム１００のシステムメモリとして機能する１３０ａ、１３０ｂ、…１３０ｎといったいくつかのメモリモジュールに連結するメモリハブコントローラ１２８が含まれる。メモリモジュール１３０は、光、電気、あるいは他の種類の通信路でありえる高速リンク１３４を介してメモリハブコントローラ１２８に連結されているのが好ましい。高速リンク１３４が、光通信路として実施されている場合、光通信路は、例えば１つ以上の光ファイバーの形式であってもよい。そのような場合、メモリハブコントローラ１２８とメモリモジュールには、光通信路に連結される光入力／出力ポート、もしくは別々の入力および出力ポートが含まれる。
【００１６】
メモリモジュール１３０は、高速リンク１３４がメモリモジュール１３０のメモリハブ１４０の連結から形成されているポイント・ツー・ポイント構成で、メモリハブコントローラ１２８に連結されている。つまり、高速リンク１３４は、連続してメモリハブ１４０を連結する双方向バスである。したがって、高速リンク１３４上の情報が「下流」方向に届くためには「上流」のメモリモジュール１３０のメモリハブ１４０を介して伝わらなければならない。例えば、特に図１を参照すると、メモリモジュール１３０ｃのメモリハブ１４０への、メモリハブコントローラ１２８から伝えられる情報は、メモリモジュール１３０ａと１３０ｂのメモリハブ１４０を通る。しかしながら、例えばそれぞれのメモリモジュール１３０が、高速リンク上でメモリハブコントローラ１２８に連結されている連結装置のような他の接続形態も用いられることがあることが理解されるであろう。メモリハブコントローラ１２８が、選択的に１つのスイッチ（図示せず）を介してそれぞれのメモリモジュール１３０に連結されているところでは、スイッチ接続形態も用いられることがある。他の接続形態も用いることができることは、当業者にとって明白である。
【００１７】
また、図１に示されているように、メモリハブはバスシステム１５０のそれぞれを介して４組のメモリ装置１４８に連結されている。それぞれの組には、５つのメモリ装置１４８が含まれ、それぞれのメモリモジュール１３０に合計２０のメモリ装置１４８がある。当技術分野では周知のように、バスシステム１５０には通常、制御バス、アドレスバス、そしてデータバスが含まれる。しかしながら、共通のコマンド／アドレスバスを使用しているバスシステムのような他のバスシステムが本発明の範囲から逸脱することなしに使用されることができることは、当業者たちにより理解されるであろう。また、メモリ装置１４８の配置とメモリ装置１４８の数が、本発明の範囲から逸脱することなしに変更されることができるということも理解されるであろう。図１に図解された例では、メモリ装置１４８は、同期型ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）である。しかしながら、当然ＳＤＲＡＭ装置以外のメモリ装置が使用されてもよい。
【００１８】
本発明の実施例に係るメモリハブ２００の実施例を図２に示すが、これは図１のメモリハブ１４０に置き換えることができる。図２では、メモリハブ２００は４つのメモリ装置２４０ａ〜ｄに連結されているが、これらは本例では従来型のＳＤＲＡＭ装置である。代替の実施例では、メモリハブ２００は、４つの異なるメモリ装置２４０ａ〜ｄというよりもむしろ、４つの異なるメモリ装置のバンクに連結されており、それぞれのバンクが通常複数のメモリ装置を有している。しかしながら、例を提供する目的で、本発明は４つのメモリ装置２４０ａ〜ｄに連結されているメモリハブ２００に関連する。複数のメモリバンクに対応するためのメモリハブ２００への必要な変更は、当業者達の知識内にあることが理解されるであろう。
【００１９】
さらにメモリハブ２００に含まれるものとしては、メモリハブ２００が位置しているメモリモジュールを第一の高速データリンク２２０と第二の高速データリンク２２２にそれぞれ連結するリンクインターフェイス２１０ａ〜ｄと２１２ａ〜ｄがある。図１で先述したように、高速データリンク２２０と２２２は、光、もしくは電気通信路、あるいは他の通信路を用いて実装されることができる。リンクインターフェイス２１０ａ〜ｄと２１２ａ〜ｄは従来型で、例えば発信器／受信器ロジックとして技術的に知られているような高速データリンク２２０、２２２への、そしてそれらからのデータ、コマンド、およびアドレス情報の転送に用いられる回路を含む。当業者は特定の種類の通信路を用いてリンクインターフェイス２１０ａ〜ｄと２１２ａ〜ｄを変更するための十分な理解を有していること、そして本発明の範囲から逸脱することなしにそのような変更がリンクインターフェイス２１０ａ−ｄと２１２ａ−ｄへ加えられることが理解されるであろう。例えば、高速データリンク２２０と２２２が光通信路を用いて実施されている場合、リンクインターフェイス２１０ａ−ｄと２１２ａ−ｄには光出力／入力ポートが含まれ、光信号を光通信路を介して電気信号に変換する。
【００２０】
リンクインターフェイス２１０ａ−ｄと２１２ａ−ｄは、バス２１４によって代表される多数のバスと信号線を介してスイッチ２６０へと連結されている。リンクインターフェイス２１０ａ−ｄと２１２ａ−ｄを介して双方向にデータを連結するために、ひとつの双方向データバスが備え付けられていることがあるが、バス２１４は従来型で、書き込みデータバスと読み出しデータバスを含む。バス２１４が例として備え付けられていること、バス２１４にはさらにキャッシュの一貫性を維持するために用いられる要求線と監視線を含むもっと少ない、またもっと多くの信号線を含むかもしれないことは、当業者によって理解されるであろう。
【００２１】
リンクインターフェイス２１０ａ〜ｄ、２１２ａ〜ｄには、システムメモリ内においてメモリハブ１４０が様々な構成で接続されるようにする回路が含まれる。例えば、分岐配置は、リンクインターフェイス２１０ａ〜ｄ、２１２ａ〜ｄのどちらかを介して、それぞれのメモリモジュールをメモリハブコントローラ１２８に連結することによって実施することができる。あるいは、図１に示されるように、ポイント・ツー・ポイント、またはデイジー・チェーン構成を、メモリモジュールを連続して連結することによって実施することができる。例えば、リンクインターフェイス２１０ａ〜ｄは、第１のメモリモジュールを連結するために用いることができ、また、リンクインターフェイス２１２ａ〜ｄは、第２のメモリモジュールを連結するために用いることができる。プロセッサ、もしくはシステムコントローラへ連結されるメモリモジュールは、一組のリンクインターフェイスを介して連結され、さらに他の組のリンクインターフェイスを介して他のメモリモジュールに連結される。本発明の実施例の１つでは、メモリモジュールのメモリハブ２００は、ポイント・ツー・ポイント配置でプロセッサに連結されており、その配置ではプロセッサ１０４とメモリハブ２００間の接続に他の装置は連結されていない。この種類の相互接続は、いくつかの理由でプロセッサ１０４とメモリハブ２００間のより良い信号接続を提供しており、それには比較的低い電気容量、信号を反射する比較的少ない回線断絶、そして比較的短い信号経路が含まれる。
【００２２】
スイッチ２６０は、さらに４つのメモリインターフェイス（メモリ装置インターフェイス）２７０ａ〜ｄに連結されており、それらは次にシステムメモリ装置２４０ａ〜ｄにそれぞれ連結されている。それぞれのシステムメモリ装置２４０ａ〜ｄに個々の独立したメモリインターフェイスを提供することにより、メモリハブ２００は、通常単一チャンネルのメモリ構造で生じるバスあるいはメモリバンクの対立を避ける。スイッチ２６０は、バス２７４に代表される複数のバスと信号線を介してそれぞれのメモリインターフェイスと連結されている。バス２７４には、書き込みデータバス、読み出しデータバス、そして要求線を含む。しかしながら、個々の書き込みデータバスと読み出しデータバスの代わりに単一の双方向データバスが代替として用いられることもあるということが理解されるであろう。加えて、バス２７４には、先述したものよりも多い、もしくは少ない信号線を含むことができる。
【００２３】
本発明の実施例では、それぞれのメモリインターフェイス２７０ａ〜ｄは、連結されているシステムメモリ装置２４０ａ〜ｄに特に適合されている。より具体的には、メモリインターフェイス２７０ａ〜ｄは、特に、連結されているシステムメモリ装置２４０ａ〜ｄによってそれぞれ受信および生成される特定の信号を提供および受信するようになされている。また、メモリインターフェイス２７０ａ〜ｄは、違ったクロック周波数で動作するシステムメモリ装置２４０ａ〜ｄとともに動作可能である。その結果として、メモリインターフェイス２７０ａ〜ｄは、メモリハブ２００と、このメモリハブ２００に連結されるメモリ装置２４０ａ〜ｄとの間のインターフェイスにおいて起こり得る変化からプロセッサ１０４を隔離し、メモリ装置２４０ａ〜ｄのインターフェイスのための一層制御された環境を提供する。
【００２４】
リンクインターフェイス２１０ａ〜ｄ、２１２ａ〜ｄおよびメモリインターフェイス２７０ａ〜ｄを連結しているスイッチ２６０は、様々な従来型のスイッチ、もしくは今後開発されるスイッチのいずれかでありえる。例えば、スイッチ２６０は、リンクインターフェイス２１０ａ〜ｄ、２１２ａ〜ｄおよびメモリインターフェイス２７０ａ〜ｄを様々な配置で互いに同時に連結することができるクロスバースイッチであってもよい。スイッチ２６０はクロスバースイッチと同じレベルの接続性を提供しない一組のマルチプレクサであってもよいが、それでも、リンクインターフェイス２１０ａ〜ｄ、２１２ａ〜ｄのいくつか、もしくは全てをメモリインターフェイス２７０ａ〜ｄのそれぞれに連結することができる。また、スイッチ２６０には、どのメモリアクセスが優先されるべきかを決定するための調停論理（図示せず）を含むこともある。ただし、この機能を実行するバス調停は、当業者には周知である。
【００２５】
さらに図２を参照して、メモリインターフェイス２７０ａ〜ｄのそれぞれには、各自、メモリコントローラ２８０、書き込みバッファ２８２、およびキャッシュメモリ装置２８４が含まれる。メモリコントローラ２８０は、制御信号、アドレス信号、およびデータ信号をそれが連結されているシステムメモリ装置２４０ａ〜ｄに提供し、システムメモリ装置２４０ａ〜ｄからデータ信号を受け取ることによって従来型のメモリコントローラと同じ機能を果たす。書き込みバッファ２８２とキャッシュメモリ装置２８４には、その技術においてよく知られるように、タグメモリ、データメモリ、比較器などを含む、バッファおよびキャッシュメモリの標準的な構成要素が含まれる。書き込みバッファ２８２とキャッシュメモリ装置２８４において用いられるメモリ装置は、ＤＲＡＭ装置、スタティックＲＡＭ（ＳＲＡＭ）装置、他の種類のメモリ装置、もしくはそれら３つ全部の組み合わせであってもよい。さらに、キャッシュメモリ装置２８４にて用いられる他の構成要素と同様、これらのメモリ装置のいくつか、あるいは全ては、内蔵型、もしくは独立型の装置であり得る。
【００２６】
メモリインターフェイス２７０ａ〜ｄのそれぞれにおける書き込みバッファ２８２は、読み出し要求が処理されている間に書き込み要求を保存するために用いられる。そのようなシステムでは、書き込み要求が出されているメモリ装置が前の書き込み、もしくは読み出し要求を処理中であっても、プロセッサ１０４はシステムメモリ装置２４０ａ〜ｄへ書き込み要求を出すことができる。この方法を用いると、先の書き込み要求を、それに続く読み出し要求が処理されている間に書き込みバッファ２８２に保存することができるため、メモリ要求をばらばらの順序で処理することができる。読み出し要求の処理を可能にするために書き込み要求をバッファする能力は、時間的順序に関係なく読み出し要求に最初の優先権を与えることができるため、メモリ読み出しの待ち時間を大幅に低減することができる。例えば、読み出し要求が組み入れられている一連の書き込み要求は、パイプライン様式での読み出し要求の処理と、それに続く保存された書き込み要求のパイプライン様式での処理を可能にするために、書き込みバッファ２８２に保存することができる。結果として、書き込みと読み出し要求を交互に行うための、メモリ装置２７０ａ〜ｄへの書き込み要求の連結と、その後のメモリ装置２７０ａ〜ｄへの読み出し要求の連結との間の長期にわたる修正時間を避けることができる。
【００２７】
メモリインターフェイス２７０ａ〜ｄにおけるキャッシュメモリ２８４の利用は、メモリ装置２４０ａ〜ｄからデータが読み出された直後、もしくはそれへと書き込まれた直後の場合、メモリ装置２４０ａ〜ｄがそのようなデータを提供するのを待たずに、プロセッサ１０４のそれぞれのシステムメモリ装置２４０ａ〜ｄへと出される、読み出しコマンドに応答するデータの受け取りを可能にする。したがってキャッシュメモリ装置２８４は、そのコンピュータシステムのメモリ処理量を最大化するために、システムメモリ装置２４０ａ〜ｄの読み出し待ち時間を低減する。同様に、プロセッサ１０４は、キャッシュメモリ装置２８４内に書き込みデータを保存し、それから同じメモリインターフェイス２７０ａ〜ｄ内のメモリコントローラ２８０が書き込みデータをキャッシュメモリ装置２８４から連結するシステムメモリ装置２４０ａ〜ｄへと移動する間に、他の機能を実行することができる。
【００２８】
さらにメモリハブ２００には、バス２８８を介してスイッチ２６０に連結されているＤＭＡエンジン２８６が含まれており、このＤＭＡエンジンは、メモリハブ２００にプロセッサ１０４の干渉なしにシステムメモリ内の１つの位置から別の位置へとデータのブロックを移動することを可能にさせる。バス２８８には、システムメモリ内でデータ移動を処理するための、アドレスバス、制御バス、データバスなどの従来型のバス線および信号線の多くが含まれる。以下で説明されるように、ＤＭＡエンジン２８６は、プロセッサの干渉なしにＤＭＡメモリ動作を実行するために、システムメモリ内のリンクリストを読み出すことができる。したがって、メモリ動作の実行から、プロセッサ１０４と帯域幅の制限されたシステムバスを開放している。ＤＭＡエンジン２８６は、メモリハブ２００内に内蔵された回路であることが望ましい。しかしながら、メモリハブ２００に連結された個々のＤＭＡ装置を含むことも、本発明の範囲にある。加えて、ＤＭＡエンジン２８６には、複数のチャンネル上でのＤＭＡ動作に対応するための回路を含むことができる。そのような複数チャンネルＤＭＡエンジンは、当技術においてよく知られており、従来型の技術を用いて実施することができる。
【００２９】
本発明の実施例では、プロセッサ１０４はＤＭＡエンジン２８６が実行するインストラクション（命令）のリストをシステムメモリ内に書き込む。インストラクションには、ＤＭＡ動作を実行するためにＤＭＡエンジン２８６が用いる、移動するブロックの開始アドレス、終了アドレスもしくはカウント、宛先アドレス、次のコマンドブロックのアドレスなどの情報を含む。ＤＭＡエンジン２８６は、一連の連続コマンドを実行し、指示されている場合には次のコマンドリストへ飛ぶ。ＤＭＡエンジン２８６は１つ以上のメモリ空間内に存在しているデータ構成を介してプログラムされている。データ構成は、システムメモリ内のデータ転送動作を実行するのに必要な情報を提供する、いくつかのコマンドブロックから成る。それぞれのコマンドブロックは、接続されたリストへの一連のアドレスポインタを介して接続することができる。接続されたリスト中にある最初のコマンドブロックのアドレスはＩ／Ｏ空間を介してプログラムされている。ＤＭＡエンジン２８６は、Ｉ／Ｏ空間コマンドレジスタを介して最初のコマンドブロックをフェッチし、実行するように指示されている。要求されたデータ操作を実行した後、最初のコマンドブロック内のアドレスポインタはＤＭＡエンジン２８６を次のコマンドブロックへ向けるために用いられる。連続するコマンドブロックのそれぞれにあるアドレスポインタは、接続されたリストを形成しながら次のコマンドブロックをフェッチし、実行するのに用いられる。接続されたリスト内のそれぞれのコマンドブロックは、ＮＵＬＬポインタと遭遇するまで実行される。ＮＵＬＬポインタのひとつの例は、全ての１を構成する１つのアドレスとして定義される。ＮＵＬＬポインタを検出すると、コマンドの流れが終了されたことを示しながら、コマンドブロック実行が停止し、状態ビットが設定される。完了ステータスは、メモリハブ２００内のひとつのＩ／Ｏレジスタに含まれることができる。加えて、開始フラグもまた、ＤＭＡエンジン２８６が既にＤＭＡ動作を開始したことを示すのに用いられる。他のステータス・ビットは、コマンドの連続がエラーなしに通常通り終了したか、あるいはエラーによって異常終了したかを示す。ステータス情報は、ホストへの割り込みを任意に生成することがある。
【００３０】
本発明の代替となる実施例では、ＤＭＡエンジン２８６は、システム内の診断を実行するのに用いることもできる。既知の良いデータパターンは、メモリハブ２００のメモリ内、もしくは既知の良いシステムメモリ内にロードすることができ、システムメモリをテストするために用いることができる。この種の用途のより詳細な説明は、参照することにより本書に採用される［出願日］に出願された、同一出願人による、同時係属米国特許出願番号（ ）、表題「メモリモジュールのオンボード診断のためのシステムおよび方法（ＳＹＳＴＥＭ ＡＮＤ ＭＥＴＨＯＤ ＦＯＲ ＯＮ−ＢＯＡＲＤ ＤＩＡＧＮＯＳＴＩＣＳ ＯＦ ＭＥＭＯＲＹ ＭＯＤＵＬＥＳ）」にて提供されている。
【００３１】
図３は、ＤＭＡエンジン３００の一部を図解するブロック図であり、図４は、本発明の実施例に係る、リンクコマンド（リンクされたコマンド）のリスト表４００を図解するブロック図である。ＤＭＡエンジン３００は、メモリハブ２００のＤＭＡエンジン２８６（図２）に置き換えることができる。図３はＤＭＡエンジン３００の単なる説明にしかすぎず、通常当業者たちには、本発明を実施するためにここで十分な説明が提供される。しかしながら、代替となるＤＭＡエンジンが、本発明の範囲を逸脱することなしに用いられることがより理解されるであろう。ＤＭＡエンジン３００には、ＤＭＡ動作を制御する５つのレジスタ、つまりアドレスレジスタ３１０、宛先アドレスレジスタ３１１、制御レジスタ３１２、ネクスト（次）レジスタ３１４、およびカウントレジスタ３１６が含まれる。
【００３２】
動作では、ブロック転送の開始時に、ブロックの開始アドレスがアドレスレジスタ３１０にロードされる。加えて、データが移動される先の宛先アドレスは、宛先アドレスレジスタ３１１にロードされ、ブロックの長さはカウントレジスタ３１６にロードされる。制御レジスタ３１２には、それぞれのデータ項目が転送された後に、アドレスレジスタ３１０が増加するか減少するかを示すビットのような、転送に関連する情報が含まれる。本例では、ＤＭＡエンジン３００によってデータ項目が転送される度に、カウントレジスタ３１６が減少し、アドレスレジスタ３１０が増加する。加えて、宛先アドレスレジスタ３１１が増加（もしくは制御設定によっては減少）する。カウントレジスタ３１６の値が０に達すると、ブロック転送は完了したことになる。このとき、ネクストレジスタ３１４の値が確認される。それがシステムメモリ内の有効な位置に向けられると、その対象に含まれる値はレジスタ３１０、３１２、３１４、および３１６にロードされ、次のブロックデータ転送が自動的に始まる。しかしながら、先述したようにＮＵＬＬの値がネクストレジスタ３１４において存在すると、ＤＭＡ動作が完了する。
【００３３】
図４にて示される、リンクコマンドリスト表には、複数のリンク入力４０２、４０４、および４０６が含まれ、それぞれはレジスタ３１０、３１２、３１４、３１６の再ロードに必要な情報を含む。リンク入力４０２、４０４、および４０６は、先述したようにシステムメモリ内に保存され、ネクストレジスタ３１４に対応するポインタによって共にリンクされている。図４には、３つのリンク入力４０２、４０４、および４０６が示されている。これらのリンク入力が、ＤＭＡエンジン３００のレジスタ３１０、３１２、３１４、および３１６へ直接値を書き込むことによって定義される最初の転送に加えて、個々の４つの部分を持つ単一のＤＭＡ転送を定義する。ネクストレジスタ３１４に含まれる値ＮＥＸＴは、最初のリンク入力４０２に向けられる。最初のリンク入力４０２は、リンクされたコマンド内の次のリンク入力４０４に向けられ、続いて最後のリンク入力４０６へと向けられる。最後のリンク入力４０６には、ポインタとしてＮＵＬＬ値が含まれ、ＤＭＡコマンドリストの最後のリンク入力であることを示している。ＮＵＬＬ値は、有効なメモリ位置に向けられていない予備のポインタ値であり、何にも向けられていないポインタとしてＤＭＡエンジン３００によって解釈されている。リンク入力４０２、４０４、４０６は一例として提供されており、図４に示されるよりも多いもしくは少ない情報分野を含むといった修正も、本発明の範囲を逸脱することなく行われることができる。
【００３４】
図５は、一連の連続的なブロック転送を行うためにＤＭＡエンジン３００（図３）によって用いられる制御フローを図解するフロー図５００である。ステップ５０２において、ＤＭＡレジスタ３１０、３１２、３１４、および３１６は最初のデータ転送のための適切な値でロードされる。このとき、直接レジスタを読み出す前、もしくは後のどちらかで、この移動のリンク入力に必要な情報の全てが、リンクコマンドリスト表４００（図４）にロードされなければならない。レジスタのロードは、プロセッサ１０４のコマンド（図１）にあり、システムメモリ内でのリンクコマンドリスト４００のロードは、同じようにプロセッサ１０４によって遂行される。
【００３５】
ステップ５０４では、ひとつのデータ項目が転送され、ステップ５０６ではひとつのデータ項目が転送されたことを示すために、カウントレジスタ３１６の値が減少する。ステップ５０６には、アドレスレジスタ３１０の値が、制御レジスタ３１２内に設定されている望まれた方向によって、同時に増加もしくは減少することが含まれる。ステップ５０８では、カウントが完了したかどうかを判断するためにカウント値が確認される。本発明の１つの実施例では、カウントが完了したかどうかの判断はカウントレジスタ３１６からの実行ビット（図示せず）を確認することによって遂行される。カウント値が、データ転送が完了していないことを示す場合には、制御はステップ５０４に戻る。しかしながら、カウントレジスタ３１６内のカウント値がゼロに等しいとき、制御はステップ５１０へと進み、先述したように、ネクストレジスタ３１４内の値がＮＵＬＬ値に等しいかどうかを確認するためのテストがなされる。ＮＵＬＬ値が存在しない場合、ステップ５１２では次のタグが、リンクコマンドリスト表４００からＤＭＡコントローラ３００内のレジスタ３１０、３１２、３１４、および３１６へとロードされ、制御はステップ５０４に戻る。一旦最後のリンク入力が使用されると、ステップ５１４では、転送が完了したという指示がプロセッサ１０４へとなされる。
ＤＭＡエンジン３００が、システムメモリ内での利用のために「散乱−収集」機能を実行することが、当業者によって理解されるであろう。データの大きなブロックがメモリの不連続のブロックへと読み出される場合は、プロセッサ１０４はメモリを配分し、リンクコマンドリスト表４００をＤＭＡエンジン３００を介してセットアップする。そこからＤＭＡ転送が開始され、ＤＭＡエンジン３００が全体的な転送を完了するまで処理する。同じような技術は、システムメモリ内において散乱しているデータのブロックを、メモリの連続したブロックへと書き込むために収集するのに用いられることができる。プロセッサ１０４はどのブロックがシステムメモリ内で書き込まれるのかということとそれらの順番を決定し、ＤＭＡエンジン３００を介してリンクコマンドリスト表４００をセットアップする。ＤＭＡ転送はそこから開始され、完了するまでＤＭＡエンジン３００によって完全に処理される。リンクコマンドリスト表４００はシステムメモリ内に保存されるため、例えば、ＤＭＡエンジン３００によって支援されるそれぞれのチャンネルのために、リンクリストのいくつかを維持することが可能である。さらに、リンクコマンドリスト表４００はシステムメモリ内に保存されているため、１つのチャンネルのための１つのさらに大きな転送へと接続され得る個々の転送の数に関する唯一の制限は、システムメモリ内における残りの自由なメモリ位置の数である。
【００３６】
上記の内容から、本発明の特定の実施例は、この中で図解の目的で説明されてきたにも関わらず、発明の精神と範囲から逸脱することなしに様々な修正を加えられることがあることが理解されるであろう。したがって、添付の請求項によるもの以外でこの発明は制限されることはない。
【図面の簡単な説明】
【００３７】
【図１】図１は、複数のメモリモジュールそれぞれにメモリハブが含まれている発明の１つの例に準じるコンピュータシステムのブロック図である。
【図２】図２は、図１のコンピュータシステム内で用いられるメモリハブのブロック図である。
【図３】図３は、図２のメモリハブの本発明の実施例に準じるＤＭＡエンジンの一部のブロック図である。
【図４】図４は、図３のＤＭＡエンジンによって用いられる本発明の実施例に準じるタグ構造のブロック図である。
【図５】図５は、本発明の実施例に準じるＤＭＡエンジン動作のためのフロー図である。
【図３】
0004560646.tif 000002
【図４】
0004560646.tif 000003
【図５】
0004560646.tif 000004
【図１】
0004560646.tif 000005
【図２】
0004560646.tif 000006