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