(57)【要約】  一実施形態において、装置および方法は、ダイレクトキャッシュアクセス（ＤＣＡ）転送が最後のトランザクションであり、したがって、非ＤＣＡ転送より割り込みに近いようＤＣＡ転送および非ＤＣＡ転送を再順序付けることを含む。実施形態はさらに、ＤＣＡ転送および非ＤＣＡ転送に対する割り込み処理ＤＣＡリクエストを調整することを含む。【選択図】  なし
2008541270.tif 000002
【特許請求の範囲】
【請求項１】
複数のプリフェッチコマンドがデータへのアクセス前且つ複数のダイレクトキャッシュアクセス（ＤＣＡ）転送後に発行されることを確実にするために幾つかのＤＣＡ転送が制限されるよう前記複数のプリフェッチコマンドと合わせて前記複数のＤＣＡ転送を使用する工程を含む方法。
【請求項２】
複数のＤＣＡ転送および複数の非ＤＣＡ転送を、複数のＤＣＡ転送が最後の複数のトランザクションであり、したがって、複数の非ＤＣＡ転送より一の割り込みに近いよう再順序付けする工程と、
複数のＤＣＡ転送および複数の非ＤＣＡ転送に対する複数の割り込み処理リクエストを調整する工程と、
をさらに含む請求項１に記載の方法。
【請求項３】
複数の転送は、複数のバス順序付け規則を有する一のバス上で行われ、
前記再順序付けは、複数のバス順序付け規則から独立し、また、複数のバス順序付け規則を侵害しない請求項２に記載の方法。
【請求項４】
複数のパケットは、複数のヘッダおよびパケットデータを有し、
一のパケットが転送される場合、複数のヘッダおよび複数の記述子は複数のＤＣＡトランザクションであり、パケットデータは複数の非ＤＣＡ転送である請求項１に記載の方法。
【請求項５】
前記複数の記述子が一の最後の転送である限り、複数のパケットは前記複数の記述子が転送されるまでアクセスされず、
他の複数の転送の順序は、変更可能である請求項４に記載の方法。
【請求項６】
複数のＤＣＡ転送を、一のプロセッサの一のキャッシュのサイズの１つに制限する工程と、
トラフィックまたは複数のキューを選択する工程と、
をさらに含む請求項４に記載の方法。
【請求項７】
前記複数の記述子にすぐにアクセスする複数のオペレーティングシステムにおいて、一のタイマは、格納された複数のＤＣＡ転送が完了することを可能にするよう一の割り込みアサーション前の一の値に設定される請求項６に記載の方法。
【請求項８】
前記値は、複数の依存事項に依存する請求項７に記載の方法。
【請求項９】
前記複数の依存事項は、一のバス帯域幅、パケットレート、および割り込みモデレーションのうち少なくとも１つである請求項８に記載の方法。
【請求項１０】
ＤＣＡ転送データは一の遅延プロシージャコール（ＤＰＣ）でアクセスされる複数のオペレーティングシステムにおいて、一のＤＣＡ調整タイマを、一の割り込みアサーション後の一の値に設定する工程をさらに含む請求項１に記載の方法。
【請求項１１】
複数のダイレクトキャッシュアクセス（ＤＣＡ）転送を使用して一のバス上でデータを転送する工程と、
複数のＤＣＡ転送が最後の複数のトランザクションであるよう前記バス上の複数の転送を再順序付ける工程と、
を含む方法。
【請求項１２】
複数の非ＤＣＡ転送を使用して前記バス上でデータを転送する工程をさらに含む請求項１１に記載の方法。
【請求項１３】
複数のＤＣＡ転送を使用して前記バス上で転送されるデータの量を適応調整する工程をさらに含む請求項１２に記載の方法。
【請求項１４】
複数の非ＤＣＡ転送を使用して前記バス上を転送されるデータに対し複数のプリフェッチコマンドを発行する工程をさらに含む請求項１２に記載の方法。
【請求項１５】
一のＤＣＡフラッシュ閾値を設定する工程をさらに含む請求項１１に記載の方法。
【請求項１６】
前記ＤＣＡフラッシュ閾値を一の割り込みアサーションタイマに対して設定する工程をさらに含む請求項１５に記載の方法。
【請求項１７】
前記ＤＣＡフラッシュ閾値を適応調整する工程をさらに含む請求項１５に記載の方法。
【請求項１８】
一のバスと、
前記バスに動作可能に結合される一の再順序付けモジュールと、
を含み、
前記バス上の複数の転送は、複数のダイレクトキャッシュアクセス（ＤＣＡ）転送が最後の複数のトランザクションであるよう再順序付けられる、装置。
【請求項１９】
前記バスは、データの複数の非ＤＣＡ転送を受信するよう結合される請求項１８に記載の装置。
【請求項２０】
複数のＤＣＡ転送を使用して前記バス上を転送されるデータの量を適応調整するよう前記バスに結合される一のプロセッサをさらに含む請求項１９に記載の装置。
【請求項２１】
複数の非ＤＣＡ転送を使用して前記バス上を転送されるデータに対して複数のプリフェッチコマンドを発行するよう前記バスに結合される一のプロセッサをさらに含む請求項１９に記載の装置。
【請求項２２】
一のＤＣＡフラッシュ閾値を設定するよう前記バスに結合される一のプロセッサをさらに含む請求項１８に記載の装置。
【請求項２３】
前記プロセッサは、前記ＤＣＡフラッシュ閾値を一の割り込みアサーションタイマに対して設定するよう前記バスに動作可能に結合される一の調整モジュールに結合される請求項２２に記載の装置。
【請求項２４】
前記プロセッサは、前記ＤＣＡフラッシュ閾値を適応調整するよう前記バスに結合される請求項２２に記載の装置。
【請求項２５】
一のバス上で、複数のヘッダおよびパケットデータを有する複数のパケットを転送するための複数のバス順序付け規則を有する前記バスと、
前記バスに動作可能に結合され、データを有する一のディスクドライブデバイスであって、前記データは、前記バス上を前記複数のパケットで転送され、前記バス上を一のパケットが転送される場合、前記複数のヘッダおよび複数の記述子は複数のＤＣＡ転送であり、前記パケットデータは複数の非ＤＣＡ転送である、前記ディスクドライブデバイスと、
前記バスに動作可能に結合される一の再順序付けモジュールであって、前記バス上の複数のＤＣＡ転送および複数の非ＤＣＡ転送は、複数のＤＣＡ転送が最後の複数のトランザクションであり、したがって、複数の非ＤＣＡ転送より一の割り込みに近いよう再順序付けられる、前記再順序付けモジュールと、
前記バスに動作可能に結合される一の調整モジュールであって、複数のＤＣＡ転送および複数の非ＤＣＡ転送に対する複数のリクエストは割り込み処理と調整される、前記調整モジュールと、
前記複数のパケットを少なくとも受信するために前記バスに動作可能に結合される一のＩ／Ｏデバイスと、
を含むシステム。
【請求項２６】
前記再順序付けは、前記複数のバス順序付け規則から独立し、且つ、前記複数のバス順序付け規則を侵害しない請求項２５に記載のシステム。
【請求項２７】
前記複数の記述子が一の最後の転送である限り、前記複数のパケットは前記複数の記述子が転送されるまでアクセスされず、
他の複数の転送の順序は、変更可能である請求項２５に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本装置および方法の実施形態は、一般的に、ダイレクトキャッシュアクセス、および、具体的には、キャッシュ管理に関する。
【背景技術】
【０００２】
高速ネットワーク性能を向上する場合の１つの障害は、メモリアクセスレイテンシである。キャッシュミスはレイテンシの１つの原因である。キャッシュミスは、プロセッサによりリクエストされたデータがプロセッサのキャッシュメモリ内になく、低速のメモリデバイスからアクセスされる必要がある場合に発生する。
【０００３】
キャッシュミスは、キャッシュウォーミングを使用して減少される。キャッシュウォーミングは、プロセッサがそのプロセッサのキャッシュ内のデータにアクセスしようとする前にそのキャッシュ内にデータを入れる技術である。現在、データをキャッシュウォーミングする関連方法は２つある。第１の方法は、ソースおよび／またはデスティネーションアドレスに対するプロセッサプリフェッチコマンドを、それらのアドレスがアクセスされる前に発行する。第２の方法は、ダイレクトキャッシュアクセス（ＤＣＡ）を使用する。ＤＣＡでは、データがメモリに転送される間に所与のプロセッサのキャッシュ内にそのデータが入れられることを示すよう特殊タグがバストランザクションに含まれる。
【０００４】
残念ながら、これらの方法はどちらも１０ギガビットイーサネット（登録商標）といった高速ネットワークアプリケーションに使用する場合に欠点を有する。キャッシュメモリを管理する改善された方法が必要である。
【０００５】
本発明の実施形態は、そのような実施形態を説明する以下の説明および添付図面を参照することによって最も良好に理解されよう。
【発明を実施するための最良の形態】
【０００６】
以下の説明において、多数の特定の詳細を記載する。しかし、本発明の実施形態は、これらの特定の詳細なしで実施しうることは理解するものとする。また、ある場合において、周知の回路、構造、および技術の詳細な説明は、この説明の理解を曖昧にしないよう省略してある。
【０００７】
本発明のこのような実施形態は、本願において便宜上、かつ、１つ以上の発明または発明概念が開示される場合に本願の範囲を任意の単一の発明または発明概念に自発的に制限することを意図することなく、「発明」という用語で別個におよび／または集合的に呼びうる。
【０００８】
ダイレクトメモリアクセス（ＤＭＡ）は、データを、入力／出力（Ｉ／Ｏ）デバイスからメモリデバイスに、中央演算処理ユニット（ＣＰＵ）の介入なしで転送する方法である。ＤＭＡコントローラ（ＤＭＡＣ）は、ＤＭＡ時にＩ／Ｏデバイスとメモリデバイス間でデータを送受信するバス上のバスマスタとして挙動する。イーサネット（登録商標）を使用するネットワークといったネットワーク全体を転送されるデータは、パケットで転送される。各パケットは一般的に、ヘッダおよびパケットデータを含む。パケットに関するステータスおよび他の情報（ロケーション、長さ、エラーステータスなど）を運ぶためにパケット記述子がしばしば使用される。これらのパケットおよび記述子は、ホストシステムとイーサネット（登録商標）コントローラ間を移動する間にバス上をＤＭＡ転送される。
【０００９】
本発明の実施形態では、ＤＭＡにより転送される一部のデータはさらに、ダイレクトキャッシュアクセス（ＤＣＡ）にしたがってキャッシュメモリに直接入れられ、一方でＤＭＡにより転送される他のデータは、ＤＣＡにしたがってキャッシュメモリに入れられない。ＤＣＡおよび非ＤＣＡ転送は、キャッシュメモリの管理を向上するよう再順序付けられる。
【００１０】
図１は、再順序付けを使用してＤＭＡを実施する本発明の一実施形態を示す。バス１００は、たとえば、ストレージデバイス１０２、再順序付けモジュール１０４、調整モジュール１０６、およびＩ／Ｏデバイス１０８に動作可能に結合されうる。バス１００は、バス順序付け規則を有しうる。ストレージデバイス１０２は、ディスクドライブデバイス、ＤＲＡＭ、フラッシュメモリデバイス、またはＳＲＡＭでありうる。Ｉ／Ｏデバイス１０８は、イーサネット（登録商標）を使用するネットワークに結合されるケーブルモデム、または、ワイヤレスネットワークにおける全方向性アンテナでありうる。プロセッサ１１０は、ストレージデバイス１０２、再順序付けモジュール１０４、および調整モジュール１０６に動作可能に結合されうる。プロセッサ１１０は、これらの要素の動作を制御して、バス１００上で、たとえば、パケットを転送する。再順序付けモジュール１０４を使用して、バス１００上のＤＣＡ転送および非ＤＣＡ転送は、ＤＣＡ転送が最後のトランザクションであり、したがって、非ＤＣＡ転送より割り込みに近いよう再順序付けられうる。調整モジュール１０６を使用して、ＤＣＡ転送および非ＤＣＡ転送に対するリクエストは、プロセッサ１１０による割り込み処理と共に調整されうる。他の構成のシステムも本発明を使用しうる。
【００１１】
本発明の一部の実施形態では、プロセッサ１１０が最初にアクセスするパケットのヘッダおよび記述子だけがＤＣＡにしたがってキャッシュメモリに入れられる。本発明の別の実施形態では、ＤＣＡデータは、プロセッサ１１０によるアクセスの直前にキャッシュメモリ（キャッシュウォーミング済み）に入れられうる。これは、他のキャッシュコンテンツの早期消去を阻止し、プロセッサ１１０がＤＣＡデータにアクセスするときにそのＤＣＡデータが依然としてキャッシュ内にある確率を大幅に増加する。
【００１２】
本発明の一部の実施形態では、ＤＣＡ転送および非ＤＣＡ転送は、ＤＣＡ転送が最後のトランザクションであり、したがって、割り込みに近いよう再順序付けられる。この再順序付けは、バス順序付け規則から独立し、また、バス順序付け規則を侵害しない。たとえば、受信パケットが転送される場合、ヘッダおよび記述子は一般的にＤＣＡトランザクションであり、パケットデータは違う。パケットは記述子が転送されるまでアクセスされず、また、記述子が最後の転送である限り、他の転送の順序は変更することができる。
【００１３】
図２は、本発明の一実施形態による１つのパケットの転送を示す。２０１において、ＤＡＭデータは非ＤＣＡ様式で転送される。２０２において、ＤＭＡヘッダのＤＣＡ転送が行われ、２０３において、ＤＭＡ記述子のＤＣＡ転送が行われる。２０４において割り込みが行われる。
【００１４】
図３は、本発明の一実施形態による複数のパケットの転送を示す。図３における転送は、割り込みアサーションと共に調整される。これは、複数のパケットのＤＣＡトランザクションを再順序付けすることを可能にする。図３において、ＤＣＡトランザクションは、最初のＮ１パケットに対して発行される。Ｎ１に後続するパケットＮ１＋１−Ｎ２に対しては、ＤＣＡトランザクションは発行されない。パケット１−Ｎ１のＤＣＡトランザクションは、非ＤＣＡトランザクション後に行われるよう再順序付けられる。これは、ドライバの割り込み処理機能の最初のアクセスが、パケットＮ１＋１−Ｎ２の必要なコンポーネントに対しプリフェッチコマンドを発行することを可能にする。これは、パケット１−Ｎ１が処理されている間に背景でプリフェッチオペレーションが行われることを可能にする。
【００１５】
図３の３０１において、パケット１−Ｎ１に対する非ＤＣＡトランザクションが実施される。３０２において、パケットＮ１＋１−Ｎ２に対するすべてのトランザクションが実施される。パケットＮ１＋１−Ｎ２に対するトランザクションはいずれもＤＣＡトランザクションではない。３０３において、パケット１−Ｎ１に対するＤＣＡトランザクションが実施され、３０４において、割り込み処理が開始する。３０５において、プリフェッチコマンドが、パケットＮ１＋１−Ｎ２の必要な部分に対して発行される。３０６において、パケット１−Ｎ１が処理される。３０７において、パケットＮ１＋１−Ｎ２に対するプリフェッチが完了する。３０８において、パケットＮ１＋１−Ｎ２が処理される。
【００１６】
向上された性能のために、Ｎ１の値（ＤＣＡを使用するパケット数）は、適応プログラム可能でありうる。Ｎ１の値は、パケットＮ１＋１の必要な部分を、それらがアクセスされる前に、プリフェッチするために十分な時間的余裕を与えるよう十分に大きいべきである。さらに、Ｎ１の値は、この目的を達成するのに必要であるよりも大きいべきではない。大きい値は、必要なデータが、キャッシュから消去されることをもたらしうる。
【００１７】
Ｎ１の的確な値を実現することを支援するために、本発明の実施形態は、プロセッサキャッシュメモリのサイズおよび利用を検討しうる。さらに、高優先順位キューまたはＴＣＰといったトラフィックを選択するようＤＣＡアクティビティは制限されうる。
【００１８】
本発明の実施形態は、ＤＣＡリクエストと、デバイスドライバによる割り込み処理との調整が関連する。割り込み調整は、ＤＭＡアクティビティを、割り込みモデレーションおよびアサーションタイマと同期させることによって実現される。本発明の一実施形態では、ＤＣＡフラッシュタイマが、割り込みアサーションタイマに対して設定される。これにより、遅延がプラットフォームおよびオペレーティングシステム（ＯＳ）割り込み遅延と一致するようデバイスドライバがフラッシュタイマをプログラムすることが可能となる。たとえば、記述子にすぐにアクセスするオペレーティングシステムでは、フラッシュタイマは、格納されたＤＣＡトランザクションが完了することを可能にするのに十分な割り込みアサーション前の値に設定することができる。このフラッシュタイマ値は、バス帯域幅、パケットレート、および割り込みモデレーションといった幾つかの依存事項を有しうる。フラッシュタイマを調整するために適応アルゴリズムを使用しうる。
【００１９】
ＤＣＡ転送データが、割り込みサービスルーチン（ＩＳＲ）ではなく遅延プロシージャコール（ＤＰＣ）でアクセスされるオペレーティングシステムでは、ＤＣＡ調整タイマは、割り込みアサーション後の値に設定されることができる。これは、ＤＣＡトランザクションが、割り込みアサーション後で、ＤＰＣ実行前に行われることを可能にしうる。ＤＣＡ調整タイマ値は、適応プログラム可能な値でありうる。
【００２０】
デバイスドライバおよびコントローラがポーリングモードで動作する場合に、本発明の実施形態に従ってＤＣＡフラッシュを向上する他の方法を使用しうる。たとえば、ＤＣＡフラッシュタイマは、割り込みアサーションに関連しないで設定されうる。或いは、パケット、バイト、または記述子数のＤＣＡフラッシュ閾値を使用してもよい。
【００２１】
図４は、本発明の一実施形態によるＤＭＡ方法のフロー図である。工程４０１において、ＤＣＡ転送および非ＤＣＡ転送は、ＤＣＡ転送が最後のトランザクションであり、したがって、非ＤＣＡ転送より割り込みに近いよう再順序付けられる。工程４０２において、ＤＣＡ転送および非ＤＣＡ転送に対するＤＣＡリクエストは、割り込み処理と調整される。
【００２２】
図５は、本発明の別の実施形態によるＤＭＡ方法のフロー図である。工程５０１において、ＤＣＡ転送および非ＤＣＡ転送は、ＤＣＡ転送が最後のトランザクションであり、したがって、非ＤＣＡ転送より割り込みに近いよう、バス順序付け規則を有するバス上で再順序付けられる。この再順序付けは、バス順序付け規則から独立し、且つ、バス順序付け規則を侵害しない。工程５０２において、ＤＭＡアクティビティは、ＤＣＡ転送および非ＤＣＡ転送に対するＤＣＡリクエストの割り込み処理の割り込み調整を実現するよう割り込みモデレーションおよびアサーションタイマと同期される。
【００２３】
図６は、本発明の別の実施形態によるＤＭＡ方法のフロー図である。工程６０１において、ＤＣＡ転送は、プリフェッチコマンドがデータへのアクセス前且つＤＣＡ転送後に発行されることを確実にするために幾つかのＤＣＡ転送が制限されるようプリフェッチコマンドと合わせて使用される。工程６０２において、パケットが転送される場合、パケットのヘッダおよび記述子は、ＤＣＡトランザクションであり、パケットデータは、非ＤＣＡ転送である。
【００２４】
図７は、本発明の別の実施形態によるＤＭＡ方法のフロー図である。工程７０１において、データは、バス上を、ダイレクトキャッシュアクセス（ＤＣＡ）転送を使用して転送され、これらの転送は、ＤＣＡ転送が最後のトランザクションであるよう再順序付けられる。工程７０２において、データは、バス上を、非ＤＣＡ転送を使用して転送される。工程７０３において、ＤＣＡ転送を使用してバス上を転送されるデータ量は、適応調整される。工程７０４において、非ＤＣＡ転送を使用してバス上を転送されるデータに対してプリフェッチコマンドが発行される。工程７０５において、ＤＣＡフラッシュ閾値が設定される。工程７０６において、ＤＣＡフラッシュ閾値は、割り込みアサーションタイマに対して設定される。工程７０７において、ＤＣＡフラッシュ閾値は適応調整される。
【００２５】
本発明の実施形態は、任意のバスマスタデバイスに適用することができる。本発明の実施形態は、１０ギガビットイーサネット（登録商標）またはワイヤレスネットワークといった高速ネットワークアプリケーションに適用することができる。本発明の実施形態は、多くのタイプのオペレーティングシステムと共に実施することができる。本発明の実施形態は、他のネットワークアプリケーションおよび他のハードウェアにも実施されうる。
【００２６】
本発明の実施形態は幾つかの利点を有する。バストランザクションは、ＤＣＡイベントが最後となるよう再順序付けられる。この再順序付けは、パケット間でのイベントの再順序付けを含む。ＤＣＡトランザクションは、割り込みアサーションと同期されうる。本発明の実施形態は、適応プログラム可能タイマまたは閾値を含み、このタイマは、割り込みアサーションと関連してもしなくてもよい。
【００２７】
ＤＣＡは、プリフェッチングと合わせて使用されうる。ＤＣＡトランザクションは、プリフェッチングコマンドがＤＣＡトランザクション後でデータへのアクセス前に適切に発行されうることを確実にするのに必要な数に制限されうる。ＤＣＡトランザクションは、プロセッサのキャッシュのサイズに基づいて制限されうる。ＤＣＡは、トラフィックまたはキューを選択するよう制限されうる。
【００２８】
本発明の実施形態は、プリフェッチング技術と共に、ＤＣＡおよびプリフェッチングのそれぞれの長所を活用する。本発明のこれらの実施形態は、ＤＣＡトランザクションが発行される必要のあるパケットの数を制限する。本発明の実施形態は、所与の状況に対して最も適切なツールを選択する。
【００２９】
本願に説明したオペレーションは例示的に過ぎない。本発明の精神から逸脱することなくこれらのオペレーションに対して多くの変形がありうる。たとえば、オペレーションは、異なる順序で行われうる。または、複数のオペレーションが追加、削除、または変更されうる。
【００３０】
本願において、本発明の例示的な実施形態を図示し詳細に説明したが、当業者には様々な変更、追加、代替などが本発明の精神から逸脱することなく可能であり、また、したがって、これらの変更、追加、代替などは、請求項に定義するように本発明の範囲内と考えられることは明らかであろう。
【図面の簡単な説明】
【００３１】
【図１】ＤＭＡ再順序付けに使用する本発明の実施形態を示す図である。
【００３２】
【図２】本発明の一実施形態による１つのパケットの転送を示す図である。
【００３３】
【図３】本発明の別の実施形態による複数のパケットの転送を示す図である。
【００３４】
【図４】本発明の一実施形態によるダイレクトメモリアクセス（ＤＭＡ）方法を示すフロー図である。
【００３５】
【図５】本発明の別の実施形態によるＤＭＡ方法を示すフロー図である。
【００３６】
【図６】本発明の別の実施形態によるＤＭＡ方法を示すフロー図である。
【００３７】
【図７】本発明の別の実施形態によるＤＭＡ方法を示すフロー図である。
【図１】
2008541270.tif 000003
【図２】
2008541270.tif 000004
【図３】
2008541270.tif 000005
【図４】
2008541270.tif 000006
【図５】
2008541270.tif 000007
【図６】
2008541270.tif 000008
【図７】
2008541270.tif 000009
【国際調査報告】
2008541270.tif 000010
2008541270.tif 000011
2008541270.tif 000012
2008541270.tif 000013