(57)【要約】【課題】一体化したＤＭＡエンジンを用いて、高性能に揮発性ディスクドライブメモリアクセスを行うための装置および方法を提供する。【解決手段】一体化したＤＭＡ（ダイレクト・メモリ・アクセス）エンジンを用いて、高性能に揮発性ディスクドライブ（ＶＤＤ）メモリへのアクセスを行うための装置および方法が開示されている。一実施形態によると、そのような方法は揮発性システムメモリ内に実現されたＶＤＤメモリに対するデータアクセス要求を検出することを含む。データアクセス要求が検出されると、ＶＤＤドライバは、ＶＤＤに対するデータアクセス要求を実行するべく、ＤＭＡデータ要求を発行するとしてもよい。従って一実施形態によると、揮発性システムメモリの割り当てられた一部分内に実現されたＶＤＤメモリとの間でのデータ転送を担当するのはＤＭＡエンジンに移される。ＤＭＡエンジンの例を挙げると、メモリコントローラハブ（ＭＣＨ）に一体化したＤＭＡエンジンなどがある。これ以外の実施形態も開示および請求される。【選択図】なし
2008502084.tif 000002
【特許請求の範囲】
【請求項１】
方法であって、
揮発性システムメモリ内に実現された揮発性ディスクドライブ（ＶＤＤ）メモリに対するデータアクセス要求を検出することと、
前記ＶＤＤメモリに対して前記データアクセス要求を実行するべく、ＤＭＡ（ダイレクト・メモリ・アクセス）データ要求を発行することと
を含む方法。
【請求項２】
前記方法はさらに、前記データアクセス要求を検出する前に、
プロセスによって、前記ＶＤＤメモリ内に格納されたファイルに対する読み出し／書き込みアクセスを要求することと、
オペレーティングシステム（ＯＳ）によって、前記プロセスによる前記ＶＤＤメモリ内に格納された前記ファイルに対する前記読み出し／書き込みアクセス要求を検出することと、
前記読み出し／書き込みアクセス要求をＶＤＤドライバに渡すことと
を含む請求項１に記載の方法。
【請求項３】
前記方法はさらに、前記データアクセス要求を検出する前に、
前記揮発性システムメモリの一部分を保護することと、
初期化中に、システムメモリの前記保護部分を前記ＶＤＤメモリとして動作するように割り当てることと
を含む請求項１に記載の方法。
【請求項４】
前記データアクセス要求を検出することは、
オペレーティングシステムから、プロセスによって発行された、前記ＶＤＤメモリ内に格納されたファイルに対する読み出し／書き込みアクセス要求を受け取ること
を含む請求項１に記載の方法。
【請求項５】
前記ＤＭＡデータ要求を発行することは、
前記データアクセス要求に従って少なくとも１つのＤＭＡチェーンディスクリプタをポピュレートすることと、
前記ＶＤＤメモリ内に格納されたファイルに対する前記データアクセス要求を実行するべくＤＭＡスタートコマンドを発行することと
を含む請求項１に記載の方法。
【請求項６】
前記少なくとも１つのＤＭＡチェーンディスクリプタをポピュレートすることは、
前記データアクセス要求の対象である前記ＶＤＤメモリ内のファイルを特定することと、
前記揮発性システムメモリ内での前記ファイルの物理スタートアドレスを計算することと、
前記ＶＤＤメモリ内に格納された前記ファイル内の前記データアクセス要求のオフセットに基づいて、ＤＭＡソースアドレスを演算することと、
前記データアクセス要求に基づいてＤＭＡデスティネーションアドレスを演算することと
を含む請求項５に記載の方法。
【請求項７】
前記ＤＭＡスタートコマンドを発行することは、
ローカルシステムメモリ内の前記少なくとも１つのＤＭＡチェーンディスクリプタのアドレスでＤＭＡエンジンのネクストアドレスレジスタを更新することと、
前記ＶＤＤメモリ内に格納された前記ファイルに対する前記データアクセス要求を前記ＤＭＡエンジンに実行させるべく前記ＤＭＡエンジンのスタートＤＭＡビットを設定することと
を含む請求項５に記載の方法。
【請求項８】
ＤＭＡエンジンによって、ネクストディスクリプタアドレスレジスタ内に含まれるアドレスにあるＤＭＡチェーンディスクリプタを取り出すことと、
前記データアクセス要求に従って前記ＶＤＤメモリ内に格納されたファイルにＤＭＡデータを転送するべく、前記取り出されたＤＭＡチェーンディスクリプタに従ってＤＭＡ転送を実行することと、
前記ＤＭＡ転送が完了すると、仮想ディスクドライブドライバに対して割り込みを発行することと
をさらに含む請求項１に記載の方法。
【請求項９】
ＤＭＡエンジンが前記データアクセス要求のＤＭＡ転送を完了すると、前記ＤＭＡエンジンから割り込みを受け取ることと、
前記データアクセス要求を発行したアプリケーションに、前記ファイル動作が完了したことを通知することと
をさらに含む請求項１に記載の方法。
【請求項１０】
前記ＶＤＤメモリのサイズは４ギガバイトより大きい
請求項１に記載の方法。
【請求項１１】
複数の命令を格納している機械可読媒体を備える製品であって、当該命令はシステムをプログラミングしてある方法を実行させるために利用され、当該方法は、
揮発性システムメモリ内に実現された揮発性ディスクドライブ（ＶＤＤ）メモリに対するデータアクセス要求を検出することと、
前記ＶＤＤメモリに対して前記データアクセス要求を実行するべく、ＤＭＡ（ダイレクト・メモリ・アクセス）データ要求を発行することとを含む
製品。
【請求項１２】
前記ＤＭＡデータ要求を発行することは、
前記データアクセス要求に従って少なくとも１つのＤＭＡチェーンディスクリプタをポピュレートすることと、
前記ＶＤＤメモリ内に格納されたファイルに対する前記データアクセス要求を実行するべくＤＭＡスタートコマンドを発行することとを含む
請求項１１に記載の製品。
【請求項１３】
前記少なくとも１つのＤＭＡチェーンディスクリプタをポピュレートすることは、
前記データアクセス要求の対象である前記ＶＤＤメモリ内のファイルを特定することと、
前記揮発性システムメモリ内での前記ファイルの物理スタートアドレスを計算することと、
前記ＶＤＤメモリ内に格納された前記ファイル内の前記データアクセス要求のオフセットに基づいて、ＤＭＡソースアドレスを演算することと、
前記データアクセス要求に基づいてＤＭＡデスティネーションアドレスを演算することとを含む
請求項１２に記載の製品。
【請求項１４】
前記ＤＭＡスタートコマンドを発行することは、
ローカルシステムメモリ内の前記少なくとも１つのＤＭＡチェーンディスクリプタのアドレスでＤＭＡエンジンのネクストアドレスレジスタを更新することと、
前記ＶＤＤメモリ内に格納された前記ファイルに対する前記データアクセス要求を前記ＤＭＡエンジンに実行させるべく前記ＤＭＡエンジンのスタートＤＭＡビットを設定することとを含む
請求項１２に記載の製品。
【請求項１５】
ＤＭＡエンジンが前記データアクセス要求のＤＭＡ転送を完了すると、前記ＤＭＡエンジンから割り込みを受け取ることと、
前記データアクセス要求を発行したアプリケーションに、前記ファイル動作が完了したことを通知することとをさらに含む
請求項１１に記載の製品。
【請求項１６】
方法であって、
揮発性システムメモリ内に実現された揮発性ディスクドライバ（ＶＤＤ）メモリ内に格納されたファイルに対するプロセスの読み出し／書き込みアクセス要求を、オペレーティングシステム（ＯＳ）によって、検出することと、
前記読み出し／書き込みアクセス要求をＶＤＤドライバに渡すことと、
前記ＶＤＤメモリ内に格納された前記ファイルに対して前記読み出し／書き込みアクセス要求を実行するべく、前記ＶＤＤドライバによって、ＤＭＡ（ダイレクト・メモリ・アクセス）データ要求を発行することと
を含む方法。
【請求項１７】
前記ＤＭＡデータ要求を発行することは、
前記読み出し／書き込みアクセス要求に従って少なくとも１つのＤＭＡチェーンディスクリプタをポピュレートすることと、
前記ＶＤＤメモリ内に格納された前記ファイルに対する前記読み出し／書き込みアクセス要求を実行するべくＤＭＡスタートコマンドを発行することと
を含む請求項１６に記載の方法。
【請求項１８】
前記少なくとも１つのＤＭＡチェーンディスクリプタをポピュレートすることは、
前記データアクセス要求の対象である前記仮想ディスクドライブ内の前記ファイルを特定することと、
前記揮発性システムメモリ内での前記ファイルの物理スタートアドレスを計算することと、
前記ＶＤＤメモリ内に格納された前記ファイル内での前記読み出し／書き込みアクセス要求のオフセットに基づいて、ＤＭＡソースアドレスを演算することと、
前記読み出し／書き込みアクセス要求に基づいてＤＭＡデスティネーションアドレスを演算することと
を含む請求項１７に記載の方法。
【請求項１９】
前記少なくとも１つのＤＭＡチェーンディスクリプタをポピュレートすることは、
前記データアクセス要求の対象である前記ＶＤＤメモリ内のファイルを特定することと、
前記揮発性システムメモリ内での前記ファイルの物理スタートアドレスを計算することと
を含む請求項１７に記載の方法。
【請求項２０】
ＤＭＡエンジンによって、ネクストディスクリプタアドレスレジスタ内に含まれるアドレスにあるＤＭＡチェーンディスクリプタを取り出すことと、
前記読み出し／書き込みアクセス要求に従って前記ＶＤＤメモリ内に格納された前記ファイルからＤＭＡデータを転送するべく、前記取り出されたＤＭＡチェーンディスクリプタに従ってＤＭＡ転送を実行することと、
前記ＤＭＡ転送が完了すると、前記仮想ディスクドライブドライバに対して割り込みを発行することと
をさらに含む請求項１６に記載の方法。
【請求項２１】
複数の命令を格納している機械可読媒体を備える製品であって、当該命令はシステムをプログラミングしてある方法を実行させるために利用され、当該方法は、
揮発性システムメモリ内に実現された揮発性ディスクドライバ（ＶＤＤ）メモリ内に格納されたファイルに対するプロセスの読み出し／書き込みアクセス要求を、オペレーティングシステム（ＯＳ）によって、検出することと、
前記読み出し／書き込みアクセス要求をＶＤＤドライバに渡すことと、
前記ＶＤＤメモリ内に格納された前記ファイルに対して前記読み出し／書き込みアクセス要求を実行するべく、前記ＶＤＤドライバによって、ＤＭＡ（ダイレクト・メモリ・アクセス）データ要求を発行することとを含む
製品。
【請求項２２】
前記ＤＭＡデータ要求を発行することは、
前記読み出し／書き込みアクセス要求に従って少なくとも１つのＤＭＡチェーンディスクリプタをポピュレートすることと、
前記ＶＤＤメモリ内に格納された前記ファイルに対する前記読み出し／書き込みアクセス要求を実行するべくＤＭＡスタートコマンドを発行することとを含む
請求項２１に記載の製品。
【請求項２３】
前記少なくとも１つのＤＭＡチェーンディスクリプタをポピュレートすることは、
前記データアクセス要求の対象である前記仮想ディスクドライブ内の前記ファイルを特定することと、
前記揮発性システムメモリ内での前記ファイルの物理スタートアドレスを計算することと、
前記ＶＤＤメモリ内に格納された前記ファイル内での前記読み出し／書き込みアクセス要求のオフセットに基づいて、ＤＭＡソースアドレスを演算することと、
前記読み出し／書き込みアクセス要求に基づいてＤＭＡデスティネーションアドレスを演算することとを含む
請求項２２に記載の製品。
【請求項２４】
前記少なくとも１つのＤＭＡチェーンディスクリプタをポピュレートすることは、
前記データアクセス要求の対象である前記ＶＤＤメモリ内のファイルを特定することと、
前記揮発性システムメモリ内での前記ファイルの物理スタートアドレスを計算することとを含む
請求項２２に記載の製品。
【請求項２５】
ＤＭＡエンジンによって、ネクストディスクリプタアドレスレジスタ内に含まれるアドレスにあるＤＭＡチェーンディスクリプタを取り出すことと、
前記読み出し／書き込みアクセス要求に従って前記ＶＤＤメモリ内に格納された前記ファイルからＤＭＡデータを転送するべく、前記取り出されたＤＭＡチェーンディスクリプタに従ってＤＭＡ転送を実行することと、
前記ＤＭＡ転送が完了すると、前記仮想ディスクドライブドライバに対して割り込みを発行することとをさらに含む
請求項２１に記載の製品。
【請求項２６】
システムであって、
揮発性ディスクドライブ（ＶＤＤ）メモリを実現するべく割り当てられた一部分を有する揮発性システムメモリと、
前記揮発性システムメモリに接続されたチップセットであって、前記揮発性システムメモリに対するＤＭＡ（ダイレクト・メモリ・アクセス）転送を実行するためのＤＭＡエンジンを有するチップセットと、
前記チップセットに接続された不揮発性システムメモリであって、前記仮想ディスクドライブに対するデータアクセス要求を検出し、前記ＤＭＡエンジンに前記ＶＤＤメモリに対する前記データアクセス要求を実行させるべく、前記チップセットにＤＭＡ要求を発行するためのＶＤＤドライバを有する不揮発性システムメモリと
を備えるシステム。
【請求項２７】
前記チップセットはさらに、一体化ＤＭＡエンジンを含むメモリコントローラハブを有する
請求項２６に記載のシステム。
【請求項２８】
前記チップセットはさらに、入出力コントローラハブを有する
請求項２６に記載のシステム。
【請求項２９】
前記チップセットはさらにＤＭＡコントローラを有し、当該ＤＭＡコントローラは、前記ＶＤＤメモリに対する前記データアクセス要求を実行するために前記ＶＤＤドライバによってプログラミングされたＤＭＡチェーンディスクリプタの物理アドレスを格納するためのネクストディスクリプタアドレスレジスタを少なくとも含む
請求項２６に記載のシステム。
【請求項３０】
前記ＤＭＡコントローラはさらにチャネル制御レジスタを有し、当該チャネル制御レジスタは、前記ＤＭＡエンジンに前記ＤＭＡチェーンディスクリプタを読み込ませて、前記ＶＤＤメモリに対する前記データアクセス要求を実行させるためのＤＭＡスタートビットを含む
請求項２９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は概して集積回路およびコンピュータシステムのデザインに関する。より具体的には、一体化したＤＭＡ（ダイレクト・メモリ・アクセス）エンジンを用いて、高性能に揮発性ディスクドライブメモリへのアクセスを行うための装置および方法に関する。
【背景技術】
【０００２】
ＲＡＭＤＩＳＫは、揮発性システムメモリの一部分をプログラム制御下で大容量記憶デバイスとして使用するメモリ管理技術である。本明細書ではこのような大容量記憶デバイスとして使用される部分を「揮発性ディスクドライブ（ＶＤＤ）メモリ」と呼ぶ。ＲＡＭＤＩＳＫに対するオペレーティングシステム（ＯＳ）のファイル動作は、従来のハードディスクに対するＯＳ動作よりも格段に早い。このため、ＲＡＭＤＩＳＫを利用すると、最も頻繁に利用されるプログラムおよびファイルをＲＡＭＤＩＳＫに割り当てられたシステムメモリの一部に収納することによってシステム性能を大幅に向上させることができる。システムの電源を切ってしまうとＲＡＭＤＩＳＫに格納された情報は無くなるが、ＲＡＭＤＩＳＫに基づいたメモリ管理技術は、通常のＯＳファイルフォーマットで一時的にデータを格納およびキャッシュするためには非常に有用である。通常ＲＡＭＤＩＳＫは、頻繁に利用されるファイルをマスメディアストレージのプールからキャッシュするために、ウェブ／ファイルサーバで用いられている。
【０００３】
従来の方法では、ＲＡＭＤＩＳＫを実現する為に利用されるドライバは完全にソフトウェアに組み込まれている。このため、プログラムまたはプロセスがＲＡＭＤＩＳＫに対してファイルの読み出し／書き込みを求めると、ＲＡＭＤＩＳＫドライバが呼び出される。このドライバはまず、ＲＡＭＤＩＳＫ用に保護されたシステムメモリ内での位置に関して要求されたファイルがどのようにマッピングされているか特定する。ドライバはこの特定を完了すると、ＲＡＭＤＩＳＫのメモリと要求を行ったプロセスのメモリとの間でデータ転送を実行する。この転送は通常ＣＰＵの助けを借りて実行され、ドライバはシステムメモリのＲＡＭＤＩＳＫ部分にデータを要求することをＣＰＵに指示する。
【０００４】
ここで、ＣＰＵ（中央演算処理装置）はＲＡＭＤＩＳＫドライバについてデータ転送およびファイル管理機能を管理しなければならない。ＲＡＭＤＩＳＫに基づいたメモリ管理技術は、従来のストレージドライブを利用するよりはるかに高速であるが、ＲＡＭＤＩＳＫドライバがＲＡＭＤＩＳＫとアプリケーションの記憶位置の間でデータ転送を行うためには、数多くのＣＰＵサイクルが費やされる。また、４ギガバイト（ＧＢ：３２ビットアドレス）を超えるメモリについてＲＡＭＤＩＳＫを実現する場合、ＲＡＭＤＩＳＫドライバはＣＰＵのページアドレス拡張（ＰＡＥ）モードを利用しなければならなかった。しかしＰＡＥモードを利用すると、ＲＡＭＤＩＳＫドライバだけでなくシステム内で実行されているすべてのプロセスに関してさらに性能が落ちてしまうという問題がある。
【図面の簡単な説明】
【０００５】
添付図面において本発明のさまざまな実施形態を示す。これらの図は本発明の例示を目的としたものであり、本発明を限定するものではない。以下に図面を簡単に説明する。
【０００６】
【図１】一実施形態に係る、仮想ディスクドライブ（ＶＤＤ）に対する高性能アクセスを実現するための一体化ＤＭＡエンジンを有するＤＭＡコントロールを備えるコンピュータシステムを示すブロック図である。
【０００７】
【図２】一実施形態に係る、図１に示したＤＭＡコントローラをさらに詳細に示すブロック図である。
【０００８】
【図３】一実施形態に係る、ＤＭＡレジスタおよびチェーンディスクリプタのマッピングを示すブロック図である。
【０００９】
【図４】一実施形態に係る、ＤＭＡアクセスを用いて仮想ディスクドライブ内のデータブロックにアクセスするためのＤＭＡディスクリプタセットにリンクしたリストのセットアップを示すブロック図である。
【００１０】
【図５】一実施形態に従って、ＶＤＤアクセス要求を検出した後に、続いて、図１に示したＤＭＡコントローラを用いてダイレクトメモリアクセス（ＤＭＡ）に基づき、ＶＤＤアクセス要求を実行する様子を示したブロック図である。
【００１１】
【図６】開示した技術を利用したデザインのシミュレーション、エミュレーションおよび製造を行うためのさまざまなデザイン表現またはデザインフォーマットを示すブロック図である。
【発明を実施するための最良の形態】
【００１２】
一体化したＤＭＡ（ダイレクト・メモリ・アクセス）エンジンを用いて、高性能に揮発性ディスクドライブ（ＶＤＤ）メモリへのアクセスを行うための装置および方法を説明する。一実施形態によると、そのような方法は揮発性システムメモリ内に実現されたＶＤＤメモリに対するデータアクセス要求を検出することを含む。データアクセス要求が検出されると、ＶＤＤドライバは、ＶＤＤに対するデータアクセス要求を実行するべく、ＤＭＡデータ要求を発行するとしてもよい。従って一実施形態によると、揮発性システムメモリの割り当てられた一部分内に実現されたＶＤＤメモリとの間でのデータ転送を担当するのはＤＭＡエンジンに移される。ＤＭＡエンジンの例を挙げると、メモリコントローラハブ（ＭＣＨ）に一体化したＤＭＡエンジンなどがある。
【００１３】
本発明をさらに説明するべく以下の説明は、信号およびバスの論理的実施例、サイズおよび名称、システムの構成要素の種類および相関関係、ならびに論理的分割／一体化の選択などの具体的且つ詳細な記載内容を多く含む。しかし本発明はそういった具体的且つ詳細な記載なしでも実施できることは当業者には明らかである。また、制御構造およびゲートレベル回路については、本発明をあいまいにするのを避けるべく詳細な説明を省略している。本明細書の説明に基づけば当業者は不必要な実験を行うことなく適切な論理回路を実施することができる。
【００１４】
以下の説明では特定の用語を用いて本発明の特徴を説明する。例えば、「論理」という単語は１以上の機能を実行するように構成されたハードウェアおよび／またはソフトウェアを表す。「ハードウェア」の例を挙げると、これらに限定されないが、集積回路、有限ステートマシーンまたは組み合わせ論理がある。集積回路は、マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、デジタル信号プロセッサ（ＤＳＰ）、マイクロコントローラなどのプロセッサの形態を取ることもある。
【００１５】
「ソフトウェア」の例を挙げると、アプリケーション、アプレット、ルーチンまたは一連の命令などの形態を取った実行可能コードがある。一実施形態によると、製品は複数の命令を格納した機械／コンピュータ可読媒体を備え、該命令はコンピュータ（またはそれ以外の電子デバイス）をプログラミングして一実施形態に係るプロセスを実行させる。機械／コンピュータ可読可能媒体の例を挙げると、これらに限定されないが、プログラム可能な電子回路、揮発性メモリ（例えば、ランダムアクセスメモリなど）および／または不揮発性メモリ（例えば、リードオンリーメモリ（ＲＯＭ）、フラッシュメモリなど）を有する半導体メモリデバイス、フロッピーディスク、光ディスク（例えば、コンパクトディスクまたはデジタルビデオディスク（ＤＶＤ）など）、ハードドライブディスク、テープなどがある。
【００１６】
＜システム＞
図１は、一実施形態に係る、ＶＤＤメモリ２５０に対する高性能なアクセスを実現するためのＤＭＡ（ダイレクト・メモリ・アクセス）コントローラ２００を備えたコンピュータシステム１００を示すブロック図である。同図によると、コンピュータシステム１００はプロセッサ（ＣＰＵ）１０２とチップセット１３０の間で情報をやり取りするためのプロセッサシステムバス（フロント・サイド・バス：ＦＳＢ）１０４を備える。本明細書では、「チップセット」という単語は、所望のシステム機能を実行するべくＣＰＵ１０２に接続されたさまざまなデバイスをまとめて表す。
【００１７】
同図に示すように、チップセット１３０はグラフィックスコントローラ１５０に接続されたメモリコントローラハブ（ＭＣＨ）１１０を有するとしてもよい。別の実施形態によれば、グラフィックスコントローラ１５０はＭＣＨに一体化され、一実施形態ではＭＣＨ１１０が一体化グラフィクスＭＣＨ（ＧＭＣＨ）として動作する。同図に示すように、ＭＣＨ１１０はシステムメモリバス１４２を介してメインメモリ１４０にも接続される。一実施形態によると、メインメモリ１４０の例には、これらに限定されないが、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ）、ＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ），ＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  ＤＲＡＭ）、ＤＤＲ−ＳＤＲＡＭ（Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ  ＳＤＲＡＭ）、ＲＤＲＡＭ（Ｒａｍｂｕｓ  ＤＲＡＭ）などの高速且つ一時的にデータを格納することができるデバイスがある。
【００１８】
一実施形態によると、ＭＣＨ１１０はＣＰＵ１０２内に一体化され、ＣＰＵ１０２とメインメモリ１４０間の直接接続を可能にする。一実施形態によると、ＭＣＨ１１０は、ＰＣＩ−Ｅｘエンドポイント１９０（１９０−１〜１９０−Ｎ）とＭＣＨ１１０をＰＣＩ−Ｅｘリンク１８２（１８２−１〜１８２−Ｎ）を介して接続するための周辺機器インターコネクト（ＰＣＩ）ＰＣＩ−Ｅｘｐｒｅｓｓ（ＰＣＩ−Ｅｘ）ルートポート１８０（１８０−１〜１８０−Ｎ）を有する。同図に示すように、ＰＣＩ−Ｅｘリンク１８２は、周辺エンドポイントデバイス１９０（１９０−１〜１９０−Ｎ）とＭＣＨ１１０の間で双方向通信を可能にするべく、例えばＰＣＩ  Ｅｘｐｒｅｓｓ基本仕様１．０ａ（２００３年１０月７日付けの正誤表）によって定義されるような２地点間リンクを提供するとしてもよい。
【００１９】
さらに図示されているように、チップセット１３０は入出力（Ｉ／Ｏ）コントローラハブ（ＩＣＨ）１２０を有する。同図に示されているように、ＩＣＨ１２０は１以上のＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）スロット１６０とＩＣＨ１２０を接続するためのＵＳＢリンクまたはインターコネクト１６２を含むとしてもよい。さらに、ＳＡＴＡ（Ｓｅｒｉａｌ  Ａｄｖａｎｃｅ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）１７２は、ハードディスクドライブデバイス（ＨＤＤ）１７０とＩＣＨ１２０を接続するとしてもよい。一実施形態によると、ＩＣＨ１２０は、１以上のＰＣＩ／ＰＣＩｘスロット１６４とＩＣＨ１２０を接続するための古いＰＣＩ／ＰＣＩｘリンク１６６を含むとしてもよい。一実施形態によると、システムＢＩＯＳ１０６がコンピュータシステム１００を初期化する。
【００２０】
図１に示すように、一実施形態によると、コンピュータシステム１００はＶＤＤドライバ２６０を備える。動作を説明すると、ＶＤＤドライバ２６０は、揮発性システムメモリ１４０の一部を保護して、ＶＤＤメモリ２５０として動作するように割り当てる。一実施形態によると、ＶＤＤメモリ２５０に割り当てられたメインメモリ１４０の一部は、コンピュータシステム１００のカーネルオペレーティングシステム（ＯＳ）からは隠されている交換不可能なメモリである。本明細書で説明するように、ＶＤＤメモリ２５０はこれとは別にＲＡＭＤＩＳＫとも呼ばれる。ＲＡＭＤＩＳＫとは、プログラム制御下で揮発性システムメモリの一部を大容量記憶デバイスとして機能するように割り当てるメモリ管理技術である。
【００２１】
一実施形態によると、ＶＤＤドライバ２６０は、ＶＤＤメモリ内でファイル動作を実行するためにＤＭＡコントローラ２００を用いる。従来の方法によると、デバイスドライバ（例えば、チップセット１３０に接続された周辺機器に対応するソフトウェア）によるメインメモリへのアクセスは、周辺機器用のメモリとの間でデータの読み出し動作または書き込み動作を開始させるためのバストランザクションをＣＰＵが発行するという、プログラミングされた転送に基づいて実行される。これとは逆にＤＭＡは、より進歩したアーキテクチャによって実現される機能であって、周辺機器とメインメモリの間でＣＰＵが関与することなくデータ転送を直接行える。このように、システムのＣＰＵはデータ転送には関与することがないので、コンピュータ動作を全体として高速化することができる。一実施形態によると、ＤＭＡコントローラ２００は、図２に示すように、コンピュータシステム１００内でＤＭＡ機能を実現している。
【００２２】
一実施形態によると、ＤＭＡコントローラは、複数のＤＭＡチャネル２１４（２１４−１〜２１４−Ｎ）を提供するように構成された、一体化ＤＭＡエンジン２１０を有する。一実施形態によると、ＤＭＡコントローラ２００は４つのＤＭＡチャネルを提供し、各ＤＭＡチャネルは、システムメモリ１４０からチップセット１３０に接続されたさまざまな周辺機器に対して、もしくはシステムメモリ１４０内でデータ転送を行うべく、独立して利用できる。一実施形態によると、以下で詳述するが、ＤＭＡチャネルプログラミングインターフェースは、図３および図４に示されているようなメモリマップド内部レジスタセットおよびメインメモリ１４０に書き込まれたチェーンディスクリプタの組み合わせを介して、ＣＰＵ１０２からアクセスできる。
【００２３】
一実施形態によると、ＤＭＡチャネル２１４間のアービトレーションは２段階で行われる。図示されているように各ＤＭＡチャネル２１４は、ＤＭＡコントローラ２００の内部にあるアービタ（ＤＭＡアービタ２１２）に対して別々にバス要求／付与の対を有している。さらに図示されているように、ＤＭＡコントローラ２００はＭＣＨ１１０内のメインアービタ（ＭＣＨアービタ２２０）に対して、単一の要求／付与の対を持っている。一実施形態によると、ＤＭＡアービタ２１２は厳密にラウンドロビン方式に基づき、ＤＭＡチャネルおよび要求元のデバイスに対してメインメモリ１４０へのアクセスを与える。一実施形態によると、ＤＭＡアービタ２１２は任意で、１つのＤＭＡチャネルに関してある時点における優先指定を持つとしてもよい。このような構成とすることによって、競合する一連のＤＭＡチャネルに基づき、通常の動作において均衡が取れた帯域幅性能を達成することができる。
【００２４】
ここで図１に戻ると、本明細書で説明しているように、チップセット１３０に接続されたバス上の各周辺機器または入出力カードは、本明細書において「バスエージェント」と呼ぶ。バスエージェントは一般的に対称エージェントと優先エージェントに分けられ、優先エージェントと対称エージェントがバス所有権において競合している場合、優先エージェントに所有権が付与される。このようなアービトレーションが必要なのは、普通バスエージェントが、トランザクション発行のためにバスを同時に駆動することは禁止されているからである。コンピュータシステム１００のバスエージェントに対応付けられたデバイスドライバは、ＭＣＨに対してトランザクション要求２３２を発行するとしてもよい。優先順位制度に従って、図２に示すように、ＭＣＨアービタ２２０はＤＭＡ転送要求を発行するべくＤＭＡチャネル２１４に対してアービトレーションを行う。
【００２５】
本明細書で説明するように、「トランザクション」という単語は１つのバスアクセス要求に関連するバス動作と定義される。一般的にトランザクションは、バスアービトレーションおよびトランザクションアドレスを伝播するための信号のアサートによって開始されるとしてもよい。インテル（登録商標）アーキテクチャ（ＩＡ）仕様で定義されているように、トランザクションはいくつかのフェーズを含み、各フェーズでは特定の種類の情報を送るための一連の特定の信号が利用される。このようなフェーズには少なくとも、（バス所有権に関する）アービトレーションフェーズ、要求フェーズ、応答フェーズおよびデータ転送フェーズが含まれるとしてもよい。
【００２６】
コンピュータシステム１００のようなコンピュータシステム内でＤＭＡアクセスを実現するためには、ＤＭＡアクセスを持つデバイスをバスマスタとして指定する必要がある。バスマスタはマイクロプロセッサまたは独立した入出力コントローラ（デバイスドライバ）内にあるプログラムであって、システムバスまたは入出力経路上のトラフィックを指揮する。動作を説明すると、バスマスタのデバイスドライバは、ＤＭＡのためにＤＭＡデータ要求を発行するように指定または有効にされているメインメモリ１４０の一部の割り当てをＯＳに対して要求する。
【００２７】
図１に戻り、一実施形態によると、ＶＤＤドライバ２６０はバスマスタのステータスを与えられた１以上のＤＭＡチャネルを制御する。このような構成により、ＶＤＤドライバ２６０はＤＭＡコントローラ２００に対してＤＭＡアクセス要求を発行することができる。動作を説明すると、ＤＭＡアービタ２１２およびそれに続いてＭＣＨアービタ２２０によるアービトレーションが行われた後、あるＤＭＡチャネル２１４にアクセスが与えられＶＤＤメモリ２５０に対してＤＭＡアクセス要求を発行する。従って一実施形態によると、アプリケーションまたはプロセスが、ＶＤＤメモリ２５０内に格納されたファイルに対する読み出し／書き込みアクセスといったファイル動作の実行を要求する場合、ＯＳはこのコールをＶＤＤドライバ２６０に渡すとしてもよい。要求されたファイル動作をＤＭＡエンジン２１０に実行させるため、一実施形態によると、例えば図３に図示してあるようにＶＤＤドライバ２６０はチェーンディスクリプタをプログラミングする。
【００２８】
一実施形態によると、ＤＭＡコントローラ２００は、チャネル毎のレジスタセットのすべてについてメモリマップド構成を持つレジスタを利用する。一実施形態によると、ＤＭＡコントローラ２００に対応付けられたメモリマップドレジスタスペースは、例えばＤＭＡチャネルをプログラミングしてＤＭＡ転送を開始させるのに必要なＤＭＡ構成レジスタ２７０にアクセスするためにＶＤＤドライバ２６０が利用する、３２ビットのメモリベースアドレスレジスタ（ＢＡＲ）によって特定される。一実施形態によると、図３に示すように、各ＤＭＡチャネルは独立して動作できるよう、３２ビットのメモリマップドレジスタを１２個有する。
【００２９】
一実施形態によると、ＤＭＡレジスタ２７０のうち８個は、通常動作中にローカルメモリから新しいディスクリプタが取り出された場合に、チェーンディスクリプタ２９０のようなチェーンディスクリプタの対応するフィールドを元にして自動的に書き込まれる。メモリ２９０の対応するディスクリプタフィールドのフォーマットは、ＤＭＡチャネル固有のレジスタ２７０に対して定義されたフォーマットと同一である。ＤＭＡモード制御レジスタのＤＭＡモードビットによって定義されるが、ＤＭＡコントローラ２００が通常モードにある場合、チャネル制御２７２、チャネルステータス２７４、ネクストディスクリプタアドレス２８２−１およびネクストディスクリプタ上位アドレス２８２−２については、読み出し／書き込みアクセスが利用可能である。残りのレジスタは読み出しに限られ、ＤＭＡチャネルがローカルシステムメモリからチェーンディスクリプタを読み出すとチェーンディスクリプタ２９０が定義する新しい値が自動的に書き込まれる。
【００３０】
【表１】
2008502084.tif 000003
【００３１】
図３に示すように、メモリマップドＤＭＡレジスタ２７０には、上記の表１に説明されるチャネル制御レジスタ（ＣＣＲ）２７２が含まれる。一実施形態によると、ＣＣＲ２７２はＤＭＡチャネルの総合的な動作環境を示している。一実施形態によると、デバイスドライバは、システムメモリのチェーンディスクリプタを初期化して、メモリ中の最初のＤＭＡチェーンディスクリプタの記憶位置によってネクストアドレスレジスタ２８２（２８２−１、２８２−２）を更新した後に、ＣＣＲ２０７を初期化する。一実施形態によると、ＣＣＲ２７２は、ＤＭＡチャネル動作を変更するべく（例えば、停止、一時停止など）ＤＭＡチャネルがアクティブである場合に書き込まれるとしてもよい。
【００３２】
【表２】
2008502084.tif 000004
【００３３】
一実施形態によると、チャネルステータスレジスタ（ＣＳＲ）２７４はＤＭＡチャネルのステータスを示すフラグを有する。一実施形態によると、ＤＭＡチャネルのカレントステータスを取得するとともに割り込みのソースを特定するべく、レジスタ２７４はＶＤＤドライバ２６０によって読み出される。表２に説明しているように、ＣＳＲ２７４内にあるフラグには、チャネルが使用中であることを示すチャネルアクティブフラグ、ＤＭＡ転送が打ち切られたことを示すＤＭＡ打ち切り済み（ＤＭＡＢＲＴ）フラグがある。さらに、ＣＳＲ２７４のフラグには、設定された場合このチャネルの現在のＤＭＡ転送が停止されることを示すＤＭＡ停止（ＤＳＴＰ）ビットも含まれる。
【００３４】
一実施形態によると、ＤＭＡ一時停止済み（ＤＳＵＳ）ビットが設定されるとＤＭＡ要求が一時的に停止されたことが示され、転送終了（ＥＯＴ）はチャネルが少なくとも１つのディスクリプタについてＤＭＡを完了したことを示し、チェーン終了（ＥＯＣ）フラグは最後のディスクリプタまですべてのディスクリプタについてエラーの無いＤＭＡ転送が行われたことを表す。本明細書では、「アサート」、「設定」、「デアサート」といった用語はアクティブ・ロー信号またはアクティブ・ハイ信号であるデータ信号に関連するとしてもよい。このためこれらの単語は、信号と対応付けられる場合、アクティブ・ロー信号またはアクティブ・ハイ信号を要求または示唆するために交互に用いられる。
【００３５】
カレントディスクリプタアドレスレジスタ（ＣＤＡＲ）２７６（２７６−１、２７６−２）は、ローカルシステムメモリ内の現在のチェーンディスクリプタのアドレスの下位ビットおよび上位ビットを含む。一実施形態によると、ＣＤＡＲ２７６は電源オンまたはシステムリセットの場合にゼロにクリアされ、新しいブロックの転送が開始されるとネクストディスクリプタアドレスレジスタ（ＮＤＡＲ）の値が自動的に読み込まれる。一実施形態によると、ＣＤＡＲ２７６は通常動作中は読み出しに限られており、ＤＭＡディスクリプタチェーンを進むにつれて、ＤＭＡチャネルの進行状況を監視するべくソフトウェアによってポーリングされるとしてもよい。残りのＤＭＡレジスタ２７０は、ＤＭＡ転送が開始される前にＶＤＤドライバ２６０がプログラミングするＤＭＡチェーンディスクリプタ２９０に対応する。
【００３６】
一実施形態によると、ＶＤＤドライバ２６０は、ローカルシステムメモリ内に１以上のチェーンディスクリプタを構築することによってＤＭＡチャネルを初期化する。図３および図４に図示するように、そのようなディスクリプタは、ＤＭＡデータの先頭記憶位置を示すソースアドレス２９２、ＤＭＡ要求によってＤＭＡデータを移動または転送する先を示すデスティネーションアドレス２９４、転送されるバイト数を示す転送カウント２９８、ならびにディスクリプタチェーンでの次のディスクリプタのアドレスを示すネクストディスクリプタアドレス２９６を含むとしてもよい。ディスクリプタチェーンの最後のディスクリプタのネクストディスクリプタアドレス２９６はゼロに設定される。
【００３７】
動作を説明すると、アプリケーションまたはプロセスによってファイル動作要求が発行されると、ＶＤＤドライバ２６０はＯＳからファイル動作要求を受け取る。この要求に基づき、ＶＤＤドライバ２６０はチェーンディスクリプタ２９０のさまざまな構成要素（ソースアドレス２９２、デスティネーションアドレス２９４、転送カウントなど）をプログラミングする。一実施形態によると、転送カウント２９８はＤｗｏｒｄ（Ｄｏｕｂｌｅ  Ｗｏｒｄ）単位で提供され、Ｄｗｏｒｄカウント２９８と呼んでもよい。チェーンディスクリプタのプログラミングが完了すると、ＶＤＤドライバ２６０は、ＤＭＡレジスタ２７０のネクストディスクリプタアドレスレジスタ２８６（ＮＤＡＲ）を更新する。
【００３８】
一実施形態によると、ＮＤＡＲ２８６は、ＶＤＤドライバ２６０によってプログラミングされたチェーンディスクリプタの位置を特定するために、ＤＭＡコントローラ２００によって利用される。従って、メモリの先頭チェーンディスクリプタ２９０のアドレスがＮＤＡＲ２８６にポピュレートされると、ＶＤＤドライバ２６０はチャネル制御レジスタ２７２内にあるＤＭＡ開始ビットを設定するとしてもよい（表１を参照のこと）。ＶＤＤドライバ２６０は、図４に示すように、ＶＤＤメモリ２５０への複数のブロック転送から成るチェーンをセットアップするとしてもよい。しかし、アプリケーションまたはプロセスからのファイル要求がＶＤＤ２５０からの単一ブロック転送に限定されている場合、ＶＤＤドライバ２６０はＤＭＡチェーンディスクリプタ２９０−１のネクストディスクリプタアドレスフィールドをヌル（ゼロ）値に設定する。
【００３９】
図３に戻り、ＤＭＡレジスタ２７０のソースアドレスレジスタ（ＳＡＲ）フィールド２７８およびデスティネーションアドレスレジスタ（ＤＡＲ）フィールド２８０は、上位アドレスレジスタフィールド（２７８−２、２８０−２）も含む。一実施形態によると、上位アドレスレジスタフィールド（２７８−２、２８０−２）はＤＭＡアクセス要求に関して３６ビットまたは６４ギガバイトのアドレス指定範囲を可能とするために設けられている。従って、揮発性システムメモリ１４０内のＶＤＤメモリ２５０、つまりＲＡＭＤＩＳＫセットアップに対するアクセスについて、従来とは違い、ＤＭＡコントローラ２００によれば、データ転送に関する３２ビットのアドレス指定という限界を超えたアドレス指定が可能となる。従来の方法では、ＶＤＤメモリ２５０に対して４ギガバイト（ＧＢ）の限界を越えるアクセス要求を可能とするには、ＣＰＵ１０２のページアドレス拡張（ＰＡＥ）機能を利用する必要がある。
【００４０】
図５は、一実施形態に係る、ＤＭＡコントローラ２００内に一体化されたＤＭＡエンジン２１０を用いてＶＤＤメモリ２５０内でファイル動作を実行するための方法３００の概要を示す。図示するように、アプリケーションまたは実行中プログラムといったプロセス３０２がＶＤＤメモリ２５０内に含まれるファイルに対してファイル動作または読み出し／書き込みを要求することがある。移行３１０において、プロセス３０２はＶＤＤアクセス要求を発行する。そのようなアクセスを例えばＯＳ３０４が検出すると、移行３２０において、ＶＤＤドライバ２６０にＶＤＤアクセス要求を渡すことによって、ＯＳ３０４はこのコールをＶＤＤドライバ２６０に渡す。
【００４１】
一実施形態によると、ＶＤＤドライバ２６０は、検出されたファイル動作要求または読み出し／書き込み要求の対象であるファイルを特定する。検出するとＶＤＤドライバ２６０は、ファイル名およびファイル内のアクセス要求の対象になっているオフセットを、メインメモリ１４０内の物理アドレスに変換する。一実施形態によると、この変換は、ＶＤＤメモリ２５０に対してマッピングされたメインメモリ１４０内の物理アドレス範囲に基づいて実行される。ファイルに対する物理アドレスが特定されると、ＶＤＤドライバ２６０は、移行３３０に示すようにＤＭＡコントローラ２００に対してＤＭＡ読み出し／書き込み（Ｒ／Ｗ）アクセス要求を発行するべく、例えば図３および図４に示されているようにＤＭＡチェーンディスクリプタをポピュレートすることによって、ＤＭＡソースアドレスおよびＤＭＡデスティネーションアドレスならびに転送長をプログラミングするとしてもよい。
【００４２】
図４に示すように、ＶＤＤ２５０に対するファイル動作またはデータアクセス要求に関連するデータブロックが複数ある場合、ＶＤＤドライバ２６０は、複数のＶＤＤブロック転送から成るチェーンを生成するようにプログラミングを行うとしてもよい。続いてＤＭＡコントローラ２００のＮＤＡＲ２８２を、図３に示すように、ＤＭＡコントローラ２００がディスクリプタのチェーンをＤＭＡレジスタ２７０にロードするようにポピュレートする。ＤＭＡコントローラ２００はチャネル制御レジスタ２７２のＤＭＡ開始ビットが例えばＶＤＤドライバ２６０によって設定されると、このような動作を実行する。続いて図２に図示されているＤＭＡエンジン２１０が、移行３４０に示されているようにＤＭＡ  Ｒ／Ｗを実行することによって、ＶＤＤメモリ２５０による少なくとも１つのＤＭＡチェーンディスクリプタプログラムに従って、データアクセス要求またはファイル動作を実行する。
【００４３】
一実施形態によると、ＤＭＡエンジン２１０が転送を完了すると、ＤＭＡエンジンは移行３５０において、ファイル動作が完了して、ＶＤＤ２５０とプロセス３０２に割り当てられたメモリの間でデータ転送が実行されたことを通知するべく、ＶＤＤドライバ２６０に対して割り込みを発行するとしてもよい。図示されているように、ＤＭＡ転送が完了したという通知を移行３５０においてＶＤＤドライバ２６０が受け取ると、ＶＤＤドライバ２６０はプロセス３０２に、要求されたＶＤＤメモリ２５０を対象とするファイル動作または読み出し／書き込みアクセス要求が完了したことを通知するとしてもよい。一実施形態によると、ＶＤＤドライバ２６０は移行３６０において、ＤＭＡ転送が完了したことをプロセス３０２に通知する。
【００４４】
この結果、一実施形態によると、ＶＤＤドライバ２６０を生成することによって、ＶＤＤメモリ２５０内のファイルデータへのアクセス処理は、例えば図１および図２に図示されている、ＤＭＡコントローラの一体化ＤＭＡエンジンによって肩代わりされる。このようにデータ転送の担当をＣＰＵ１０２からＤＭＡコントローラ２００に移すことによって、システム性能が全体的に改善され、従来とは異なって、ＶＤＤメモリ２５０に対するファイル動作を実行する場合に行われるデータ転送をＣＰＵ１０２が実行せずにすむように構成することができる。さらに、従来のＲＡＭＤＩＳＫドライバは３２ビットというアドレス指定範囲の限界を超えるためにはＣＰＵのページアドレス拡張（ＰＡＥ）モードを利用する必要があり、ＰＡＥモードを利用した場合一般的にＶＤＤドライバ２６０だけでなくシステム上のすべてのプロセスにおいて性能が低下するが、これとは異なり、ＶＤＤメモリのデータ転送の作業をＤＭＡエンジン２１０に移すことによって、上述したように性能を犠牲にせずにすむ。
【００４５】
図６は、本明細書で開示された技術を用いたデザインのシミュレーション、エミュレーションおよび製造のための表現またはフォーマットを示したブロック図である。デザインを表すデータは数多くの方法でデザインを表現するとしてもよい。まず、シミュレーションで便利なように、デザインされたハードウェアの期待される動作をコンピュータ化したモデルを基本的に提供する、ハードウェア記述言語またはそれ以外の機能記述言語を用いてハードウェアを表現するとしてもよい。ハードウェアモデル４１０は、コンピュータメモリのような記憶媒体４００に格納され、本当に意図されたように機能するのかどうか判断するために、ハードウェアモデルにテスト一組４３０を利用するシミュレーションソフトウェア４２０を用いてシミュレーションされるとしてもよい。実施形態によっては、シミュレーションソフトウェアが媒体に記録、取得または格納されない。
【００４６】
デザインをどのように表現するにしても、データを何らかの機械可読媒体に格納するとしてよい。機械可読媒体には、そのような情報を送信するべく変調または生成された光波または電波４６０、メモリ４５０、またはディスクのような磁気／光ストレージ４４０などがある。これらの媒体はいずれもデザイン情報を持ち運ぶことができる。「持ち運ぶ」という用語は（例えば、情報を持ち運ぶ機械可読媒体）このように、ストレージデバイスに格納された情報または搬送波にエンコードまたは変調された情報に用いられる。デザインまたはデザインの詳細を記述する一連のビットは（搬送波または格納媒体のような機械可読媒体において実施されると）それ自体で完成品となる製品として存在するか、さらなるデザインまたは製造を行うために別の人によって利用される。
【別の実施形態】
【００４７】
他の実施形態には異なるシステム構成が用いられることもあるのは明らかである。例えば、システム１００が備えるＣＰＵ１０２は１つであったが、他の実施形態ではマルチプロセッサシステム（１以上のプロセッサは上述したＣＰＵ１０２と構成および動作について類似するプロセッサであってもよい）であっても、さまざまな実施形態に係る、一体化されたＤＭＡメモリコントローラによるＶＤＤメモリへのアクセスによって効果が得られるとしてもよい。ほかの実施形態では、さらに異なるタイプのシステムまたは異なるタイプのコンピュータシステムを利用されるとしてもよい。例を挙げると、サーバ、ワークステーション、デスクトップコンピュータシステム、ゲームシステム、埋め込み型コンピュータシステム、ブレードサーバなどがある。
【００４８】
実施形態および最良の形態を開示してきたが、本願の請求項によって定義される本発明の実施形態の範囲内にとどまる限り、開示された実施形態を変更および変形するとしてもよい。
【図１】
2008502084.tif 000005
【図２】
2008502084.tif 000006
【図３】
2008502084.tif 000007
【図４】
2008502084.tif 000008
【図５】
2008502084.tif 000009
【図６】
2008502084.tif 000010
【国際調査報告】
2008502084.tif 000011
2008502084.tif 000012
2008502084.tif 000013