(57)【要約】ダイレクトメモリアクセス（ＤＭＡ）コントローラは、ＤＭＡ命令のセットをリスト内に記憶し、リスト内の各エントリは、エントリのタイプを識別する、ビットフィールドを含む。ビットフィールドに基づいて、ＤＭＡコントローラは、各ＤＭＡ命令がバッファポインタまたはジャンプポインタであるかどうかを判定する。ＤＭＡ命令が、バッファポインタとして識別される場合、ＤＭＡコントローラは、バッファポインタによって規定された場所にまたはそこからデータを転送する。ＤＭＡ命令が、ジャンプポインタとして識別される場合、ＤＭＡコントローラは、ジャンプポインタによって規定されたリスト内の場所にジャンプする。ＤＭＡ命令のリストのサブセットは、キャッシュされてもよく、ＤＭＡコントローラは、キャッシュエントリを連続して実行する。
2016520905.tif 000002
【特許請求の範囲】
【請求項１】
ＤＭＡコントローラであって、
前記ＤＭＡコントローラは、前記ＤＭＡコントローラと結合されたバスを経由して、データ転送を行うように構成されている制御ユニットを備え、
前記制御ユニットはさらに、メモリ内に記憶されたＤＭＡ命令のうちの１つ以上のリストを使用して、複数のデータ転送を行うように構成され、前記制御ユニットは、アドレス情報を各リストエントリから読み取り、前記アドレス情報は、各リストエントリ内の少なくとも１ビットに基づいて、バッファポインタまたはジャンプポインタのいずれかであると判定される、ＤＭＡコントローラ。
【請求項２】
ＤＭＡ命令のキャッシュをさらに備え、前記制御ユニットは、リストエントリのブロックを前記キャッシュの中にロードし、前記制御ユニットは、前記キャッシュ内に記憶されたＤＭＡ命令を連続して実行する、請求項１に記載のＤＭＡコントローラ。
【請求項３】
前記制御ユニットは、前記実行されるべきキャッシュエントリがジャンプポインタとして識別されると、前記キャッシュをフラッシュする、請求項２に記載のＤＭＡコントローラ。
【請求項４】
各リストエントリは、第１および第２のビットフィールドを備え、前記第１のビットフィールドは、前記アドレス情報を記憶し、前記第２のビットフィールドは、前記アドレス情報がバッファポインタまたはジャンプポインタを提供するかどうかを示す、前記１つ以上のビットを記憶する、請求項１に記載のＤＭＡコントローラ。
【請求項５】
前記バッファポインタは、前記コントローラによって転送されるべきデータメモリの連続ブロックの始まりを識別する、開始アドレスを備える、請求項１に記載のＤＭＡコントローラ。
【請求項６】
前記バッファポインタはさらに、終了アドレスを備え、前記開始アドレスおよび前記終了アドレスは、前記転送されるべきデータメモリの連続ブロックを規定する、請求項５に記載のＤＭＡコントローラ。
【請求項７】
前記バッファポインタはさらに、前記転送されるべきデータメモリの連続ブロックのサイズを規定する、バッファ深度値を備える、請求項５に記載のＤＭＡコントローラ。
【請求項８】
ＤＭＡコントローラによってデータを転送するための方法であって、前記方法は、
メモリ内に、ＤＭＡ命令のセットをリストとして記憶することであって、前記リスト内の各エントリは、前記エントリのタイプを識別する、少なくとも１ビットを備える、ことと、
ＤＭＡ命令を前記リストから読み出すことと、
前記少なくとも１ビットに基づいて、前記読み出されたＤＭＡ命令のタイプを判定することであって、前記ＤＭＡ命令は、バッファ記述子またはジャンプ記述子のいずれかであると判定される、ことと、
ＤＭＡ命令が、バッファ記述子であると判定される場合、前記バッファ記述子によって規定されたメモリ内のアドレスによって規定されたデータを読み出すことと、
ＤＭＡ命令が、ジャンプ記述子であると判定される場合、前記ジャンプ記述子によって規定された前記リスト内の場所におけるＤＭＡ命令にジャンプすることと
を含む、方法。
【請求項９】
リストエントリのブロックをキャッシュ内に記憶することと、
前記キャッシュ内に記憶されるリストエントリを連続して実行することと
をさらに含む、請求項８に記載の方法。
【請求項１０】
前記実行されるべき次のキャッシュエントリが、ジャンプ記述子として識別されると、前記キャッシュをフラッシュすることをさらに含む、請求項９に記載の方法。
【請求項１１】
各リストエントリは、第１および第２のビットフィールドを備え、前記第１のビットフィールドは、バッファポインタまたはジャンプポインタのいずれかを記憶し、前記第２のビットフィールドは、前記第１のビットフィールドがバッファポインタまたはジャンプポインタを提供するかどうかを示す、前記１つ以上のビットを記憶する、請求項８に記載の方法。
【請求項１２】
前記バッファポインタは、前記コントローラによって転送されるべきデータメモリの連続ブロックの始まりを識別する、開始アドレスを備える、請求項８に記載の方法。
【請求項１３】
前記バッファポインタはさらに、終了アドレスを備え、前記開始アドレスおよび前記終了アドレスは、前記転送されるべきデータメモリの連続ブロックを規定する、請求項１２に記載の方法。
【請求項１４】
前記バッファポインタはさらに、前記転送されるべきデータメモリの連続ブロックのサイズを規定する、バッファ深度を備える、請求項１２に記載の方法。
【請求項１５】
プログラム命令を記憶する非一過性コンピュータアクセス可能メモリ媒体であって、前記プログラム命令は、
メモリ内に、ＤＭＡ命令のセットをリストとして記憶することであって、前記リスト内の各エントリは、前記エントリのタイプを識別する、少なくとも１ビットを備える、ことと、
ＤＭＡ命令を前記リストから読み出すことと、
前記少なくとも１ビットに基づいて、前記読み出されたＤＭＡ命令のタイプを判定することであって、前記ＤＭＡ命令は、バッファポインタまたはジャンプポインタのいずれかであると判定される、ことと、
ＤＭＡ命令が、バッファポインタであると判定される場合、前記バッファポインタによって規定されたメモリ内のアドレスによって規定されたデータを読み出すことと、
ＤＭＡ命令が、ジャンプポインタであると判定される場合、前記ジャンプポインタによって規定された前記リスト内の場所におけるＤＭＡ命令にジャンプすることと
を行うように実行可能である、メモリ媒体。
【請求項１６】
前記プログラム命令はさらに、
リストエントリのブロックをキャッシュ内に記憶することと、
前記キャッシュ内に記憶されるリストエントリを連続して実行することと
を行うように実行可能である、請求項１５に記載のメモリ媒体。
【請求項１７】
前記プログラム命令はさらに、前記実行されるべきキャッシュエントリがジャンプポインタとして識別されると、前記キャッシュをフラッシュするように実行可能である、請求項１６に記載のメモリ媒体。
【請求項１８】
各リストエントリは、第１および第２のビットフィールドを備え、前記第１のビットフィールドは、バッファポインタまたはジャンプポインタのいずれかを記憶し、前記第２のビットフィールドは、前記第１のビットフィールドがバッファポインタまたはジャンプポインタを提供するかどうかを示す、前記１つ以上のビットを記憶する、請求項１５に記載のメモリ媒体。
【請求項１９】
前記バッファポインタは、前記コントローラによって転送されるべきデータメモリの連続ブロックの始まりを識別する、開始アドレスを備える、請求項１５に記載のメモリ媒体。
【請求項２０】
前記バッファポインタはさらに、終了アドレスを備え、前記開始アドレスおよび前記終了アドレスは、前記転送されるべきデータメモリの連続ブロックを規定する、請求項１９に記載のメモリ媒体。
【請求項２１】
前記バッファポインタはさらに、前記転送されるべきデータメモリの連続ブロックのサイズを規定する、バッファ深度を備える、請求項１９に記載のメモリ媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願への相互参照）
本出願は、２０１３年４月１７日に出願された米国仮出願第６１／８１２，８７３号の利益を主張する。上記文献は、その全体として本明細書において援用される。
【０００２】
（技術分野）
本開示は、ダイレクトメモリアクセスコントローラに関し、特に、マルチチャネル分散・集積ダイレクトメモリアクセスコントローラに関する。
【背景技術】
【０００３】
（背景）
ダイレクトメモリアクセス（ＤＭＡ）コントローラは、コンピュータシステムによって使用され、メモリとハードウェアサブシステムとの間のデータ転送を行い、転送は、コンピュータシステムの中央処理ユニットから独立して完了される。コンピュータシステムは、複数のＤＭＡコントローラを利用してもよく、マイクロコントローラ、マイクロプロセッサ、内蔵システム、およびそれ自体がＤＭＡコントローラを実装する、周辺機器等のサブ構成要素を含んでもよい。ＤＭＡコントローラは、そうでなければ、システムプロセッサの転送実行の中断を要求し得る、メモリ内に記憶されるデータへのダイレクトアクセスを仲介する。ＤＭＡコントローラによって提供される本能力は、ハードウェアサブシステムが読み出されたデータ自体を処理するであろう状況では、特に有利であり、その場合、システムプロセッサは、データの転送のみを行い、それを処理しない。例えば、グラフィックカードは、システムメモリ内に記憶されるデータにアクセスする必要があり得る。しかし、グラフィックカードは、読み出されたデータ自体を処理するであろうため、ＤＭＡは、システムプロセッサを迂回しながら、データがグラフィックカードによって読み出されることを可能にする。これは、システムプロセッサ上のサイクルを解放し、概して、プロセッサが比較的に低速のＩ／Ｏ動作を待機しないため、効率を改善する。
【０００４】
ＤＭＡコントローラは、ＤＭＡ対応ハードウェアサブシステム間のメモリ転送を取り扱う論理を実装する。ＤＭＡコントローラは、典型的には、複数のチャネルを介して、並行して、複数のサブシステムのためのメモリアクセスをサポートすることができる。本能力を提供するために、ＤＭＡコントローラは、複数のチャネルを並行して管理するための論理を実装する。したがって、ＤＭＡコントローラは、定義されたチャネルのセットを介して、システムメモリへのダイレクトアクセスを管理する、特殊目的処理ユニットと見なされることができる。ＤＭＡコントローラの限定された権限のセットにもかかわらず、従来のＤＭＡコントローラは、非効率性を含む。
【０００５】
概して、ＤＭＡコントローラは、具体的チャネルを介して、ソース場所から目的地場所に具体的データのセットを転送するように命令される。ソースおよび目的地場所は、マイクロコントローラのシステムメモリ（典型的には、ＲＡＭ）またはデータメモリ、周辺デバイスの内蔵システム、または周辺機器によってアクセス可能な他のデータ（アナログ／デジタルコンバータ、ポート、捕捉比較ユニット等からのデータ等）内であり得る。データをソース場所から目的地場所に転送するために、従来のＤＭＡコントローラは、個別のソースおよび目的地アドレスを転送命令の一部として受信する。本アドレス情報がＤＭＡコントローラに提供される方法の１つは、ＤＭＡコントローラによってサポートされる、「記述子」の形態におけるものであり、各記述子は、ＤＭＡコントローラに命令する命令である。従来のシステムでは、各記述子は、ＤＭＡコントローラに、システムメモリ内の規定された場所とデータメモリとの間でデータの連続ブロックを転送するように命令する。転送されるべきメモリのブロックを識別するために、従来の記述子はまた、ブロックのサイズをデータ転送命令の一部として規定し得る。ソースアドレスおよびブロックサイズは、システムメモリから転送されるべきデータの連続ブロックを識別するために、従来のＤＭＡコントローラによって使用される。
【０００６】
記述子は、リストに編成され、ＤＭＡコントローラに提供され、リスト内の各エントリは、ＤＭＡコントローラによるアクションを命令する、記述子である。記述子のリストは、ＤＭＡコントローラによって厳密に連続して実行される、またはリストが、各エントリが、実行されるべき次の記述子としてリスト内の別のエントリを規定する、付加的専用ポインタを有する、リンク式リストである場合、任意の順序で実行されることができる。概して、記述子のリンク式リストを使用するのではなく、記述子の連続して実行されるリストを使用して、ストリーミングデータ（すなわち、通常、メモリの連続ブロック内に記憶される、非構造化データ）を転送することは、より効率的である。しかしながら、パケットデータ（すなわち、メモリ内の分散場所に記憶される各個々のデータアイテムの処理を要求する傾向がある、構造化データ）の転送は、リンク式リストによって提供される柔軟性に有利に働く傾向がある。その結果、ＤＭＡコントローラは、典型的には、記述子リストのシーケンス式および非シーケンス式両方の処理をサポートする。両タイプの処理をサポートするために、従来のＤＭＡコントローラは、全インスタンスにおいてポインタを利用するように構成される、記述子のリンク式リストを利用し、これは、ストリーミングデータを転送するときにほとんど必要とされない、有意なアドレス指定オーバーヘッドを費やす結果をもたらす。したがって、効率的様式において、種々のタイプのデータ転送を取り扱うことができる、より柔軟性のあるＤＭＡコントローラの必要性がある。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
（要約）
従来のＤＭＡコントローラは、記述子のシーケンス式および非シーケンス式両方の処理のために、ＤＭＡ記述子のリンク式リストを使用する。転送されるデータの性質に応じて、シーケンス式処理は、十分な柔軟性を提供せず、従来のリンク式リストは、有意な無駄なオーバーヘッドを含み得る。故に、シーケンス式およびリンク式の両方のリストの利点を提供する、ハイブリッドリンク式リストの必要性がある。先行技術におけるこれらおよび他の短所は、本発明の実施形態によるシステムおよび方法によって、大部分が克服される。
【課題を解決するための手段】
【０００８】
ある実施形態によると、ＤＭＡコントローラは、ＤＭＡコントローラと結合されるバスを経由してデータ転送を行うように構成される、制御ユニットから成り、制御ユニットはさらに、メモリ内に記憶されるＤＭＡ命令のうちの１つ以上のリストを使用して、複数のデータ転送を行うように構成され、制御ユニットは、アドレス情報を各リストエントリから読み取り、アドレス情報は、各リストエントリ内の少なくとも１ビットに基づいて、バッファポインタまたはジャンプポインタのいずれかであると判定される。
【０００９】
さらなる実施形態によると、ＤＭＡコントローラはさらに、記述子と呼ばれる、ＤＭＡ命令のキャッシュから成り、制御ユニットは、記述子のブロックをキャッシュの中にロードし、制御ユニットは、キャッシュ内に記憶される記述子を連続して実行する。さらなる実施形態によると、ＤＭＡコントローラの制御ユニットは、実行されるべきキャッシュエントリがジャンプ記述子として識別されると、キャッシュをフラッシュする。さらなる実施形態によると、各記述子は、第１および第２のビットフィールドを備え、第１のビットフィールドは、前記アドレス情報を記憶し、第２のビットフィールドは、アドレス情報がバッファポインタまたはジャンプポインタを提供するかどうかを示す、１つ以上のビットを記憶する。さらなる実施形態によると、バッファポインタは、コントローラによって転送されるべきデータメモリの連続ブロックの始まりを識別する、開始アドレスを備える。さらなる実施形態によると、バッファポインタはさらに、転送されるべきデータメモリの連続ブロックのサイズを規定する、バッファ深度（ＢＤ）値を備える。
【００１０】
本発明は、付随の図面を参照することによって、より深く理解され、その多数の目的、特徴、および利点が、当業者に明白となり得る。異なる図面中の同一参照記号の使用は、類似または同じアイテムを示す。
【図面の簡単な説明】
【００１１】
【図１】図１は、本発明の実施形態による、ＤＭＡコントローラを含む、コンピュータシステムの高レベルコンピュータアーキテクチャを図示する、ブロック図である。
【図２】図２は、本発明の実施形態による、ＤＭＡコントローラの動作を図示する、ブロック図である。
【図３】図３は、記述子のシーケンス式リストを実装する、従来のＤＭＡコントローラの動作を図示する、ブロック図である。
【図４】図４は、記述子のリンク式リストを実装する、従来のＤＭＡコントローラの動作を図示する、ブロック図である。
【図５】図５は、本発明の実施形態による、記述子のハイブリッドリンク式リストを実装する、ＤＭＡコントローラの動作を図示する、ブロック図である。
【図６Ａ】図６Ａおよび６Ｂは、ハイブリッドリンク式リストが、本発明の実施形態による、ハイブリッドリンク式リストアドレス指定方式を前提として、完全シーケンス式から、完全リンク式、その間の任意のハイブリッドシーケンス式／リンク式リストに、どのように記述子リストを実装するために使用され得るかを図示する、ブロック図である。
【図６Ｂ】図６Ａおよび６Ｂは、ハイブリッドリンク式リストが、本発明の実施形態による、ハイブリッドリンク式リストアドレス指定方式を前提として、完全シーケンス式から、完全リンク式、その間の任意のハイブリッドシーケンス式／リンク式リストに、どのように記述子リストを実装するために使用され得るかを図示する、ブロック図である。
【発明を実施するための形態】
【００１２】
（詳細な説明）
種々の実施形態によると、改良された効率が、従来のＤＭＡ記述子と、一方のタイプが、記述子のリストのシーケンス式実行をサポートし、他方のタイプが、記述子のリストの非シーケンス式実行におけるポインタの使用をサポートする、２つの別々のタイプの記述子を置換することによって提供される。また、種々の実施形態によると、ＤＭＡコントローラは、記述子のシーケンス式処理と非シーケンス式処理との間の効率的切替を可能にする様式において、２つのタイプの記述子を利用する。したがって、より柔軟性かつ効率的転送能力のセットを伴う、ＤＭＡコントローラが、提供されることができる。
【００１３】
種々の実施形態によると、ＤＭＡコントローラは、メモリおよびバス帯域幅の効率的使用もまた維持しながら、シーケンス式および非シーケンス式両方の処理の柔軟性を提供する必要性の平衡を保つ。加えて、いくつかの実施形態によると、ユーザは、転送されるデータの特性に基づいて、記述子のシーケンス式または非シーケンス式いずれかの処理をより良好にサポートするように、ＤＭＡコントローラの個々のチャネルを構成する能力も提供される。
【００１４】
図１は、マイクロコントローラまたは内蔵システム等のコンピュータシステム内のＤＭＡコントローラの例証的実施形態を描写する。コンピュータシステム１００は、概して、１つ以上の通信バスに結合される、中央処理ユニット（ＣＰＵ）１１０を備える。図１に図示される実施形態では、周辺バス１４０が、示される。本周辺バス１４０を通して、ＣＰＵ１１０は、Ｉ／Ｏポート、メモリ、Ａ／ＤおよびＤ／Ａコンバータ、タイマ、パルス幅変調器、グラフィックサブシステム、オーディオ処理サブシステム等の複数の周辺デバイス１８０ａ．．．１８０ｎと通信することができる。さらに、メモリバス１６０は、ＣＰＵ１１０とＲＡＭメモリ等のメインデータメモリ１２０を結合するために提供されることができる。ＤＭＡコントローラ１３０は、周辺バス１４０と統合され、本バス１４０と結合されるＤＭＡ対応周辺デバイス１８０ａ．．．１８０ｎ間にデータ転送を提供する。加えて、ＤＭＡコントローラ１３０は、メモリバス１７０を通して、データメモリ１２０と結合される。ＤＭＡコントローラ１３０はまた、ＣＰＵ１１０との接続１５０を含んでもよく、それによって、ＤＭＡコントローラは、ＣＰＵからの制御信号を受信することができる。
【００１５】
図１に描写されるシステムは、ＤＭＡコントローラ１３０が、ＣＰＵ１１０に負荷をかけずに、データメモリ１２０と周辺デバイス１８０ａ．．．１８０ｎとの間の転送を仲介することを可能にする。本システムはまた、同様にＣＰＵ１１０に負荷をかけずに、データメモリ１２０内のデータ転送を厳密に実行するために使用されることができる。典型的には、ＣＰＵ１１０は、ＤＭＡコントローラ１３０を初期化するために必要とされるであろう。しかし、いったんＤＭＡコントローラ１３０が初期化されると、データメモリ１２０へおよびそこからの転送は、ＣＰＵ１１０の補助を伴わずに、行われ得る。これは、他のタスクを行うために、ＣＰＵ１１０を解放することになる。特に、メモリにアクセスすることを要求する、比較的に低速のＩ／Ｏトランザクションを仲介することによって生じる遅延からＣＰＵ１１０を解放する。
【００１６】
図２は、実施形態による、ＤＭＡコントローラ１３０を示す。ＤＭＡコントローラは、接続１５０を介してＣＰＵ１１０から受信された制御信号を介して、独立して構成されることができる、複数のチャネルをサポートする。これらのチャネルの構成可能側面の１つは、各チャネルが、伝送または受信チャネルのいずれかとして規定されることである。受信チャネルは、ＤＭＡコントローラ１３０によって、周辺バス１４０上のデバイスからメインデータメモリバス１７０にデータを移動するために使用される。逆に言えば、伝送チャネルは、メインデータメモリバス１７０から周辺バス１４０上のデバイスにデータを移動するために使用される。ＤＭＡコントローラ１３０は、１つ以上の記述子のリストをＣＰＵ１１０から受信する。各チャネルは、記述子のリストを実行するように構成される。
【００１７】
実施形態によると、ハイブリッドリンク式リスト内の各記述子は、転送されるべきシステムメモリ内のアドレスを規定するバッファ記述子、または記述子リスト内の別の記述子へのポインタであるジャンプ記述子のいずれかである。各記述子はさらに、記述子がバッファ記述子またはジャンプ記述子であるかどうかを規定するために使用される、制御ビットフィールドを含む。ＤＭＡコントローラ１３０は、コントローラが記述子を適宜処理することができるように、制御ビットフィールドを使用し、記述子のタイプをデコードする。
【００１８】
記述子がバッファ記述子であると判定される場合、ＤＭＡコントローラ１３０は、バッファ記述子によって規定されたメインデータメモリ１２０内の場所にアクセスする。バッファ記述子が、伝送チャネル内で実行される場合、ＤＭＡコントローラ１３０は、メモリバス１７０を介して、バッファ記述子によって規定されたアドレスにおけるメインデータメモリ内に位置するデータを読み出し、周辺バス１４０を介して転送要求を行う周辺デバイスにデータを転送する。バッファ記述子が、受信チャネル内で実行される場合、ＤＭＡコントローラ１３０は、周辺バス１４０を介して、周辺デバイスからデータを受信し、メモリバス１７０を介して、バッファ記述子によって規定されたアドレスにおけるメインデータメモリ１２０内の場所にデータを記憶する。
【００１９】
いくつかの実施形態では、転送されるデータは、ＤＭＡコントローラ１３０による読取および書込両方の動作が周辺バス１４０を介するような外部メモリ場所内に常駐する。いくつかの実施形態では、転送動作は、ＤＭＡコントローラが、メモリバス１７０を介して、メインデータメモリ内のある場所からメインデータメモリ内の別の場所にデータを転送するように、メインデータメモリ内にあるであろう。
【００２０】
いくつかの実施形態では、ＤＭＡコントローラの制御ユニット２８５は、メインデータメモリ１２０内に記憶される記述子のリストにアクセスする。制御ユニット２８５が、記述子の実行を完了し、新しい記述子の実行を始める準備ができる度に、制御ユニットは、次の記述子をメインデータメモリ１２０から読み出す。完了した記述子が、バッファ記述子である場合、制御ユニット２８５によってメインデータメモリ１２０からフェッチされる次の記述子は、実行されるリスト内のメインデータメモリ内の次の記述子である。完了した記述子が、ジャンプ記述子である場合、ジャンプ記述子のジャンプポインタは、制御ユニット２８５によってフェッチされる次の記述子のメインデータメモリ１２０内のアドレスを規定する。
【００２１】
いくつかの実施形態では、ＤＭＡコントローラ１３０の制御ユニット２８５は、１つ以上の記述子リストを受信し、これらのリストを記述子キャッシュ２９０内に記憶する。制御ユニット２８５は、リスト内の第１の記述子を処理することによって、キャッシュされる記述子リストの実行を始める。前述のように、制御ユニット２８５は、バッファ記述子またはジャンプ記述子であるかどうかを判定するために処理される記述子に照会を行う。記述子が実行され、制御ユニット２８５が次の記述子を処理する準備ができた後、次の記述子が、記述子キャッシュ２９０内のリストからフェッチされる。実行される記述子が、バッファ記述子である場合、制御ユニット２８５は、記述子キャッシュ２９０内の次の場所に位置する記述子をフェッチする。実行される記述子が、ジャンプ記述子である場合、ジャンプ記述子のジャンプポインタは、制御ユニット２８５によってフェッチされる次の記述子のメインデータメモリ１２０内のアドレスを規定する。記述子キャッシュ２９０を利用する実施形態は、記述子キャッシュ２９０をＤＭＡコントローラ内に維持することが、メインデータメモリ１２０から付加的記述子を読み出すために、コントローラが転送を中断せずに、実行されるべきメインデータメモリ１２０データ転送を可能にするため、メインデータメモリ１２０内に記憶されるリストに依拠するより効率的に動作することが可能である。
【００２２】
前述のように、記述子は、典型的には、リストの形態において、従来のＤＭＡコントローラに提供され、各リストは、リンク式リストとして実装される。従来のリスト内の各要素は、転送されるべきデータメモリの連続ブロックを規定する、記述子である。転送されるべきデータのアドレスを規定することに加え、リンク式リスト実装の使用はまた、各記述子が実行されるべき次の記述子へのポインタを含むことを要求する。本リンク式リスト実装は、記述子が、任意の順序において、実行されるべき記述子の繰り返しパターンのために実行されることを可能にする。しかしながら、従来のリンク式リストの使用は、有意な非効率性をもたらし得る。
【００２３】
図３は、記述子が、リストを記憶する連続的メモリ内に現れる順序で厳密に処理される、従来の記述子のリストを描写する。図３に図示されるように、本シーケンス式リスト内の各記述子は、転送されるべきデータのブロックの開始メモリアドレスを規定する、バッファポインタ（ＢＰ）３０５と、バッファ深度（ＢＤ）３１０と、１つ以上の制御ステータス（ＣＳ）ビット３１５とから成ってもよい。バッファ深度３１０は、バッファポインタ３０５からのオフセットとして使用され、転送されるべきデータのブロック全体を判定する。図示されるように、従来のＤＭＡコントローラは、第１の記述子のためにバッファポインタ３０５およびバッファ深度３１０によって規定されたデータのブロックを読み出すことによって、シーケンス式リスト内の第１の記述子を実行するであろう。いったん完了されると、ＤＭＡコントローラは、次いで、シーケンス式リスト内の次の記述子に移動するであろう。そのようなシーケンス式リストは、ストリーミングデータの転送の場合等、データの大連続ブロックの転送に好適であろう。しかしながら、ジャンプポインタを伴わない場合、シーケンス式リストは、非ストリーミングデータのための効率的データ転送を提供するように実証されている、環状またはピンポンバッファ等の読み出しパターンを利用することができない。
【００２４】
図４は、従来のリンク式記述子のリストを描写する。リンク式リストでは、全ての記述子は、データ転送命令およびジャンプ命令の両方を含む。より具体的には、従来の記述子は、実行されるべき次の記述子を規定する、ジャンプポインタ４２０と、バッファポインタ（ＢＰ）４１０と、バッファ深度（ＢＤ）４１５と、１つ以上の制御ステータスビット４３０とを含む。リンク式リストの場合、リスト内の記述子は、各記述子内に規定されたジャンプポインタ４２０によって記載される順序に基づいて、ＤＭＡコントローラによって実行される。各従来の記述子を実行する際、ＤＭＡコントローラは、バッファポインタ４１０によって規定されたメモリ場所にアクセスする。いったんバッファポインタ４１０およびバッファ深度４１５によって規定されたデータのブロックが転送されると、ＤＭＡコントローラは、従来の記述子のジャンプ命令部分を実行する。各ジャンプ命令は、リンク式リスト内の別の記述子への参照である、ジャンプポインタ４２０である。このように、ＤＭＡコントローラは、ジャンプポインタによって規定された順序において、従来のリンク式リストをトラバースする。記述子の非シーケンス式ブロック間にジャンプする本能力に起因して、リンク式リストは、パケットデータの転送の場合等、データの断片化されたブロックの転送に非常に好適である。
【００２５】
シーケンス式リストと異なり、リンク式リストは、記述子リスト内に記述子のデータ構造を形成するために使用されることができる。リンク式リストは、ＤＭＡコントローラが、メモリの非連続ブロックからの記述子を継ぎ合わせることを可能にする。非連続的記述子を読み取るためのジャンプポインタの使用は、リンク式リストが、効率的データ転送を提供するために使用される、データ構造を定義することを可能にする。例えば、ジャンプポインタは、リンク式リストによって使用され、ピンポンバッファ、環状バッファ、および当技術分野において公知の他のパターン等、データ転送のパターンを定義する。そのようなパターンは、効率的データ転送アルゴリズムを実装するために使用される。リンク式リストによって提供される本能力は、柔軟性かつ強力であるが、また、コストもかかる。
【００２６】
これらの能力を提供するために、リンク式リストは、ジャンプポインタの使用を要求する。従来のリンク式リストは、ジャンプポインタを全ての記述子の一部として利用し、記述子のサイズを増加させる。記述子のサイズは、記述子内にエンコードされなければならない情報によって判定される。記述子内のバッファポインタおよびジャンプポインタのサイズは、アクセスされるメモリシステムのアドレス指定可能サイズに依存し、典型的には、３２または６４ビットである。付加的ビットが、バッファ深度および制御ステータスビットを定義するために記述子内に必要とされる。ジャンプポインタをエンコードするために必要とされるビットの数は、記述子リストが記憶されるメインメモリ１２０のサイズに応じて、変動するであろう。ジャンプポインタを全ての記述子内に含めることは、したがって、図３に描写されるもの等のシーケンス式リスト内で使用される記述子と比較して、リンク式リスト記述子のサイズの増加を要求する。
【００２７】
加えて、ジャンプポインタを全ての記述子内で使用する、従来のリンク式リストは、ジャンプポインタによって課される、有意な計算オーバーヘッドおよびメモリバス帯域幅によって負荷がかけられる。従来のリンク式リストでは、全ての記述子の実行は、最初に、ジャンプポインタアドレスを読み取り、ポインタによって参照される記述子を特定し、次の記述子をフェッチすることを要求する。これらのステップは、ジャンプポインタがリスト内の次のエントリのみをポイントする場合でも、全ての記述子を実行するために実施されなければならない。したがって、ＤＭＡコントローラによる付加的命令が、シーケンス式リストと比較して、各リンク式リスト記述子をフェッチおよび実行するために要求される。
【００２８】
実施形態によるハイブリッドリンク式リストは、図５に示される。シーケンス式リストのように、ハイブリッドリンク式リストの記述子は、チャネルのために現在実行されているリスト内に現れる順序において、ＤＭＡコントローラによって実行される。記述子のシーケンス式実行は、ジャンプ記述子にリスト内で遭遇するまで継続する。図５に図示されるように、ハイブリッドリンク式リスト内の各エントリは、バッファポインタ（ＢＰ）５０５を含有するバッファ記述子またはジャンプポインタ（ＪＰ）５３０を含有するジャンプ記述子のいずれかから成る。ＤＭＡコントローラは、記述子の「タイプ」（例えば、バッファまたはジャンパ）をエンコードする、記述子の制御ステータス（ＣＳ）ビットフィールド５２０をクエリすることによって、個々の記述子がバッファ記述子またはジャンプ記述子であるかどうかを判定する。各ハイブリッドリンク式リスト記述子はまた、バッファポインタ５０５と併せて、転送されるべきデータのブロックを規定する、バッファ深度６１０を含有する。
【００２９】
図５に図示されるもの等の記述子のハイブリッドリンク式リストは、ジャンプポインタにリスト内で遭遇するまで、リストが記憶されるメモリ内の記述子の順序において、ＤＭＡコントローラによって実行される。ＤＭＡコントローラ１３０が、図２に関して説明されるように、実行されるべきリスト内の次の記述子がバッファ記述子であると判定する場合、ＤＭＡコントローラ１３０は、バッファ記述子のバッファポインタ６０５によって規定されたメモリ場所にアクセスする。データは、次いで、チャネルが伝送または受信チャネルであるかどうかに応じて、バッファポインタ場所への書込またはそこからの読取のいずれかが行われる。
【００３０】
いったんバッファ記述子の実行が完了すると、ＤＭＡコントローラ１３０は、リストが記憶されるメモリ内の次の記述子の実行に進む。本プロセスは、リスト内のエントリの全てがＤＭＡコントローラ１３０によって実行されるまで、または実行されるべき次の記述子がジャンプ記述子であると判定されるまで、継続する。ジャンプ記述子に遭遇する場合、ＤＭＡコントローラによって実行される次の記述子は、ジャンプ記述子のジャンプポインタ５３０によって規定されたメモリアドレスにおける記述子である。ジャンプ記述子は、転送されるべきデータのブロックを規定しないため、ジャンプ記述子の１つ以上のビットフィールドは、ヌル値であってもよい。例えば、バッファポインタまたはバッファ深度を表すであろうビットフィールドは、ジャンプ記述子による他の目的のために使用される、またはプレースホルダヌル値が記入されるであろう。
【００３１】
図６Ａおよび６Ｂは、３つの異なるタイプの記述子リストのためのサポートを提供するためのハイブリッドリンク式リストの実施形態の能力を図示する。左列は、ハイブリッドリンク式リスト実施形態を使用する、シーケンス式リストの実装を図示する。中心列は、ハイブリッドリンク式リスト実施形態を使用する、リンク式リストの実装を図示する。右列は、シーケンス式およびリンク式リスト処理能力の両方を組み合わせる実施形態による、ハイブリッドリストの実装を図示する。図６Ａおよび６Ｂに図示されるように、実施形態によるハイブリッドリンク式リストは、改良された効率もまた提供しながら、シーケンス式およびリンク式の両方のリストと、シーケンス式およびリンク式リストの組み合わせであるリストとを構築するために使用されることができる。
【００３２】
図６Ａおよび６Ｂの中心列は、リンク式リストを実装するために使用される、実施形態によるハイブリッドリンク式リストの使用を図示する。図６Ａおよび６Ｂはさらにまた、従来のリンク式リストの不利点を図示する。前述のように、リンク式リスト内の従来の記述子の実行は、ＤＭＡコントローラが少なくとも２つの動作を実行することを要求する。第１に、ＤＭＡコントローラは、記述子によって規定されたメインデータメモリ内のアドレスにまたはそこからデータを転送することによって、転送命令を実行しなければならない。第２に、ＤＭＡコントローラは、ジャンプ命令を実行し、記述子のリストのうちの１つ内の実行されるべき次の記述子の場所を判定しなければならない。これは、ジャンプ命令を単に実行することがコントローラの仕事量の有意な部分を構成し得るため、ＤＭＡコントローラにとっての有意なオーバーヘッド源である。本オーバーヘッドは、記述子がメインデータメモリ内に現れる順序で実行され得るため、ジャンプ命令が必要とされないとき、特に、無駄な非効率性となる。これらの場合には、全てのジャンプ命令は、リスト内の次のエントリへのポインタにすぎない。
【００３３】
図６Ａおよび６Ｂの左列は、実施形態によるハイブリッドリンク式リストを使用して実装されるシーケンス式リストを図示する。ＤＭＡコントローラは、記述子がメインデータメモリ内に現れる順序において、ハイブリッドリンク式リストの記述子を実行する。その結果、ジャンプ記述子に付帯するオーバーヘッドは、費やされない。これは、ハイブリッドリンク式リストが、主に、バッファ記述子から成るとき、ＤＭＡコントローラの動作が、主に、データ転送であるため、効率を改善する。ＤＭＡコントローラの効率を改善することに加え、ハイブリッドリンク式リストはまた、従来のリンク式リストと比較して、より小さい記述子が使用されることを可能にする。記述子内のジャンプポインタを表すために要求されるビットの数に応じて、有意な節約が、シーケンス式リストによって実現されることができる。記述子のシーケンス式ブロックを処理するためのハイブリッドリンク式リストの能力はまた、ＤＭＡコントローラが、効率に関する他の利点を実現することを可能にする。メインデータメモリ内に連続して配列されるシーケンス式リスト内の記述子の場合、ハードウェアは、記述子のより大きい連続ブロックを読み取り、次いで、それらをキャッシュし、記述子を読み出す際の遅延を短縮するように構成されることができる。加えて、記述子のより大きいブロックを一括で読み取ることは、バス上により効率的トラフィックをもたらす。
【００３４】
図６Ａおよび６Ｂの右列は、シーケンス式およびリンク式リスト特性を組み合わせる記述子のリストを実装する、実施形態によるハイブリッドリンク式リストを図示する。ハイブリッドリンク式リストは、従来のリンク式リストより改良された効率を提供しながら、シーケンス式リストおよびリンク式リストの両方の利点をもたらす。実施形態によると、ハイブリッドリンク式リスト記述子は、バッファ記述子またはジャンプ記述子のいずれかであることができる。バッファ記述子は、転送されるべき連続的メモリのブロックを規定する一方、ジャンプ記述子は、ＤＭＡコントローラに、実行されるべき次の記述子を読み出すために、メインメモリ内の具体的場所にジャンプするように命令する。前述のように、バッファ記述子およびジャンプ記述子は両方とも、２つのタイプの記述子間を区別するためにＤＭＡコントローラによって利用される、「記述子タイプ」ビットフィールドを含む。ＤＭＡコントローラが、記述子の実行を始めると、記述子がバッファ記述子またはジャンプ記述子であるかどうかを判定するために、記述子タイプビットフィールドにクエリを行う。
【００３５】
従来の記述子を本方式で分割することは、ＤＭＡコントローラ実施形態が、依然として、要求されると、ジャンプ命令を利用する能力を提供しながら、シーケンス式リストであるかのように、リストの一部を通してナビゲートすることを可能にする。図６Ａおよび６Ｂの右列によって図示されるように、ハイブリッドリンク式リストは、全ての記述子を実行する一部としてジャンプ命令を含むことに付帯するオーバーヘッドを含まない。したがって、要求されるジャンプ命令の数に応じて、ＤＭＡコントローラの効率は、データ転送であるその動作の割合の観点から、シーケンス式リストのものに近づくことができる。また、図６Ａおよび６Ｂの右列に図示されるように、ハイブリッドリンク式リストは、依然として、従来のリンク式リストのジャンプ機能性の全てを提供する。
【００３６】
ハイブリッドリンク式リストはまた、記述子のブロックに作用することによって、効率を改善する能力を提供する。いくつかの実施形態によると、かつ図２に戻って参照すると、記述子の連続ブロックは、ＤＭＡコントローラ１３０の効率を改善するために、メインデータメモリ内に記憶されるハイブリッドリンク式リストからロードされ、記述子キャッシュ２９０内にキャッシュされることができる。キャッシュされた記述子ブロックは、メインデータメモリ内に実装されるハイブリッドリンク式リストから、１度にｎ個の記述子をフェッチすることによって形成される。キャッシュされる記述子ブロックのサイズ（ｎ）は、ハイブリッドリンク式リスト内で遭遇した、または遭遇することが予期される、バッファ記述子の連続ブロックのサイズに基づいて、調節されることができる。ＤＭＡコントローラ１３０による記述子ブロックのキャッシュは、コントローラが、実行されるべき次の記述子をメインメモリ１２０内に記憶されるハイブリッドリンク式リストから読み出すために、データ転送を中断する必要なく、データの複数のブロックを効率的に転送することを可能にする。
【００３７】
ＤＭＡコントローラ１３０は、ジャンプ記述子に遭遇するまで、記述子キャッシュ２９０内に記憶される記述子を連続して実行する。記述子の実行に先立って、ＤＭＡコントローラ１３０は、記述子の制御フィールドにクエリを行い、バッファ記述子またはジャンプ記述子を含有するかどうかを判定する。ジャンプ記述子に記述子キャッシュ２９０内で遭遇すると、ＤＭＡコントローラの制御ユニット２８５は、記述子キャッシュ２９０をフラッシュする。ＤＭＡコントローラは、次いで、メインデータメモリ２１０内に記憶されるハイブリッドリンク式リストからｎ個のエントリとともにキャッシュを再ロードし、ジャンプ記述子によって規定されたアドレスを開始する。本時点において、ＤＭＡコントローラ１３０は、キャッシュ内のエントリの実行を再開し、第１のエントリから開始し、次いで、記述子キャッシュ２９０内のエントリの全てが、ＤＭＡコントローラ１３０によって処理される、または別のジャンプ記述子に遭遇するまで、連続して進められる。このように、ハイブリッドリンク式リストの実施形態は、シーケンス式リストおよびリンク式リストの両方の能力および利点を提供する。ハイブリッドリンク式リストは、従来のシーケンス式リストおよび従来のリンク式リストによって提供されるデータ構造のスペクトル全体を生成するために使用されることができる。
【００３８】
ユーザはさらに、チャネルによって転送されるべきデータの特性に基づいて、ＤＭＡコントローラの各チャネルを個々に構成することによって、ハイブリッドリンク式リストによって提供される柔軟性から恩恵を受け得る。例えば、チャネルが、主に、ストリーミングデータを転送するために使用されるであろうことが既知である場合、ユーザは、そのチャネルのためにキャッシュされるべき記述子ブロックのサイズを調節することができる。ストリーミングデータの転送は、メモリの連続ブロックの多数の連続転送から成る傾向があるため、ストリーミングデータ転送のために使用されるであろうチャネルは、比較的に低頻度キャッシュフラッシュが要求されるであろうことから、より大きい記述子ブロックを使用するように調節されることができる。しかしながら、パケットデータが転送されているとき、そのようなデータは、ピンポンおよび環状バッファ等のポインタベースの読み出しパターンを使用して頻繁に転送される、メモリのより小さいブロックから成る傾向がある。この場合、チャネルは、より小さい記述子ブロックを使用するようにカスタマイズされることができ、さらに、利用される読み出しパターンによって使用されるバッファのサイズと一致する、記述子ブロックサイズを使用することができる。
【００３９】
種々のハイブリッドリンク式リスト実施形態は、特に、有意な数のシーケンス式転送命令を含む傾向がある、ストリーミングデータフローを転送するために非常に良好である、ＤＭＡコントローラを設定することを可能にする。ハイブリッドリンク式リストは、従来のシーケンス式リストの効率を伴って、実行されるべきシーケンス式命令のそのようなブロックを可能にする。しかしながら、ハイブリッドリンク式リストは、依然として、ＤＭＡコントローラが、記述子データ構造によって定義される読み出しパターンを実行するためにプログラムされることを可能にすることによって、従来のリンク式リストの全柔軟性を提供する。加えて、ハイブリッドリンク式リストは、従来のリンク式リストＤＭＡコントローラによって提供される効率を改善しながら、これらの能力を提供する。柔軟性かつ効率的である、解決策のための要件は、現代のデバイスにおけるリアルタイムデータ転送の要件を前提として、特に重要である。
【００４０】
ハイブリッドリンク式リストの実施形態の前述の説明に照らして、従来のシーケンス式およびリンク式リストに優るいくつかの別々の利点が、明白である。ハイブリッドリンク式リストは、従来のリンク式リストより小さい記述子を利用し、シーケンス式リストのものに匹敵する効率を提供する。従来のリンク式リストと異なり、ハイブリッドリンク式リストは、より高速の読み出しのために、記述子の連続ブロックをキャッシュすることによって、記述子を連続して実行するという事実を利用することができる。ブロック内の記述子の取扱はまた、全ての記述子を個々に処理するのとは対照的に、ＤＭＡコントローラによるバス転送の効率を改善する。これらの利点は全て、リンク式リストおよびシーケンス式リストの両方の正確な機能性を提供するための能力を維持しながら提供される。最後に、ハイブリッドリンク式リストは、チャネルが、転送されるデータの特性に基づいて、より従来のシーケンス式リストまたは従来のリンク式リストのように挙動するように、チャネル毎ベースにおいて、ＤＭＡコントローラの動作をカスタマイズする能力を提供する。
【図１】
2016520905.tif 000003
【図２】
2016520905.tif 000004
【図３】
2016520905.tif 000005
【図４】
2016520905.tif 000006
【図５】
2016520905.tif 000007
【図６Ａ】
2016520905.tif 000008
【図６Ｂ】
2016520905.tif 000009
【国際調査報告】
2016520905.tif 000010
2016520905.tif 000011