(57)【要約】      （修正有）【課題】同期されていない異なるソースからのデータをＤＭＡコントローラで同期させる。【解決手段】ＤＭＡコントローラ１０、２０は、データをいくつかのデータソースからいくつかのバッファメモリを通して少なくとも１つのアドレスに転送するようにプログラムされる。ＤＭＡコントローラ１０、２０は、バッファメモリに記憶されているデータを読み取り、シーケンスでデータをアドレスに転送するように設計された読み取り管理モジュール３０と、各バッファメモリのそれぞれに関連付けられた読み取りポインタ記憶手段３８とを備える。各バッファメモリ毎に、コントローラ１０、２０は、ファームウェアを実行してバッファメモリからデータを読み取り、アドレスに転送されるデータシーケンス内で要求されるバッファメモリから発せられたデータの所定の順序に応じて、ファームウェアの実行を同期させる手段を備える。【選択図】図１
2011081801.tif 000002
【特許請求の範囲】
【請求項１】
所定数の連続した基本メモリロケーションをそれぞれ含むいくつかのバッファメモリ（１６１、・・・、１６ｉ、・・・、１６ｎ）を通して、データをいくつかのデータソース（１２１、・・・、１２ｉ、・・・、１２ｎ）からそれらデータの少なくとも１つのアドレス（１４）に転送する直接メモリアクセスコントローラ（１０、２０）であって、前記バッファメモリ（１６１、・・・、１６ｉ、・・・、１６ｎ）に記憶されているデータを読み取り、前記アドレス（１４）にシーケンスで転送するように設計された読み取り管理モジュール（３０）と、各バッファメモリにそれぞれ関連付けられた読み取りポインタ（ＰＬ１、ＰＬ２）記憶手段（３８）とを備え、各読み取りポインタは、データを読み取ることができる、関連付けられた前記バッファメモリの基本ロケーションを示し、前記バッファメモリ（１６１、・・・、１６ｉ、・・・、１６ｎ）のそれぞれに各データソース（１２１、・・・、１２ｉ、・・・、１２ｎ）が関連付けられ、バッファメモリ毎に、前記コントローラ（１０、２０）は、ファームウェア（４０１、・・・、４０ｉ、・・・、４０ｎ）を実行して、データを読み取り、このバッファメモリに関連付けられた前記読み取りポインタを更新する手段を備え、コントローラ（１０、２０）が、アドレスに転送されるデータシーケンス内で要求されるバッファメモリから発せられたデータの所定の順序に応じて、ファームウェアの実行を同期させる手段（３０、４０１、・・・、４０ｉ、・・・、４０ｎ）を備えることを特徴とする、直接メモリアクセスコントローラ（１０、２０）。
【請求項２】
前記同期手段（３０、４０１、・・・、４０ｉ、・・・、４０ｎ）が、少なくとも１つの読み取り・更新権をあるファームウェアから別のファームウェアに送信する手段を備え、現在実行中のあるファームウェア（４０１、・・・、４０ｉ、・・・、４０ｎ）が読み取り・書き込み権を保持することにより、前記ファームウェアは、関連付けられた前記バッファメモリ（１６１、・・・、１６ｉ、・・・、１６ｎ）内の少なくとも１回の読み取り及び対応する前記読み取りポインタ（ＰＬ１、ＰＬ２）の少なくとも１回の更新を実行することが可能である、請求項１に記載の直接メモリアクセスコントローラ（１０、２０）。
【請求項３】
各バッファメモリ（１６１、・・・、１６ｉ、・・・、１６ｎ）は循環式のものであり、任意の１つの前記循環バッファメモリの各基本ロケーションは、この循環バッファメモリの最下位アドレス（ＰＢ１、ＰＢ２）と最上位アドレス（ＰＳ１、ＰＳ２）との間のアドレスにより識別され、前記記憶手段（３８）は、各循環バッファメモリに関連付けられ、データを書き込むことができる、関連付けられた前記バッファメモリの基本ロケーションをそれぞれ示す書き込みポインタ（ＰＥ１、ＰＥ２）を備え、前記コントローラは、ソース（１２１、・・・、１２ｉ、・・・、１２ｎ）から受信したデータを、対応する前記循環バッファメモリ内の、対応する前記書き込みポインタ（ＰＥ１、ＰＥ２）で示される前記アドレスに書き込むように設計された書き込み管理モジュール（２４）並びに各循環バッファメモリの前記読み取りポインタ（ＰＬ１、ＰＬ２）及び前記書き込みポインタ（ＰＥ１、ＰＥ２）により示される前記基本ロケーションの相対位置に応じて、各循環バッファメモリでの読み取り、書き込みのそれぞれを阻止する手段（２４、３０、４０１、・・・、４０ｉ、・・・、４０ｎ）も備える、請求項１又は２に記載の直接メモリアクセスコントローラ（１０、２０）。
【請求項４】
任意の１つの前記循環バッファメモリ（１６１、・・・、１６ｉ、・・・、１６ｎ）内の前記読み取り阻止手段（３０、４０１、・・・、４０ｉ、・・・、４０ｎ）は、読み取りポインタ（ＰＬ１、ＰＬ２）への更新が、読み取りポインタ（ＰＬ１、ＰＬ２）が指すアドレスが、書き込みポインタ（ＰＥ１、ＰＥ２）が指すアドレスに達するか、又はそれを超えることを意味する場合、この循環バッファメモリ内のいかなるデータ読み取りも阻止するように設計され、任意の１つの前記循環バッファメモリ（１６１、・・・、１６ｉ、・・・、１６ｎ）内の前記書き込み阻止手段（２４、４０１、・・・、４０ｉ、・・・、４０ｎ）は、書き込みポインタ（ＰＥ１、ＰＥ２）への更新が、書き込みポインタ（ＰＥ１、ＰＥ２）が指すアドレスが、読み取りポインタ（ＰＬ１、ＰＬ２）が指すアドレスに達するか、又はそれを超えることを意味する場合、この循環バッファメモリ内のいかなるデータ書き込みも阻止するように設計される、請求項３に記載の直接メモリアクセスコントローラ（１０、２０）。
【請求項５】
循環バッファメモリ（１６１、・・・、１６ｉ、・・・、１６ｎ）毎に、前記記憶手段（３８）は、前記循環バッファメモリに関連付けられた前記読み取りポインタ（ＰＬ１、ＰＬ２）とは異なる「作業ポインタ」（ＰＴ１、ＰＴ２）と呼ばれる読み取りポインタも備え、この作業ポインタ（ＰＴ１、ＰＴ２）は、データを読み取らなければならない、関連付けられた前記バッファメモリの基本ロケーションを示し、この循環バッファメモリに関連付けられた前記ファームウェアは、所定の更新論理を使用して、この循環バッファメモリでの読み取りの都度、前記作業ポインタを更新するようにも設計される、請求項３又は４に記載の直接メモリアクセスコントローラ（１０、２０）。
【請求項６】
各循環バッファメモリの前記作業ポインタ（ＰＴ１、ＰＴ２）の前記所定の更新論理は、データが書き込まれた順序とは異なる順序で、含まれるデータを読み取るように、この循環バッファメモリにおける少なくとも１つのアドレスジャンプを含む、請求項５に記載の直接メモリアクセスコントローラ（１０、２０）。
【請求項７】
請求項１〜６のいずれか一項に記載の直接メモリアクセスコントローラ（１０、２０）により、所定数の連続した基本メモリロケーションをそれぞれ含むいくつかのバッファメモリ（１６１、・・・、１６ｉ、・・・、１６ｎ）を通して、データをいくつかのデータソース（１２１、・・・、１２ｉ、・・・、１２ｎ）からそれらデータの少なくとも１つのアドレス（１４）に転送する方法であって、任意の１つの前記ソースから受信された各データは、書き込み管理モジュール（２４）により、このソースに関連付けられたバッファメモリに送信され（１０６）、前記アドレス（１４）に送信される各データは、前記コントローラにより前記バッファメモリのうちの１つにおいて読み取られ（１１８、２２０）、該方法が、
−バッファメモリ毎に、前記コントローラが、ファームウェア（４０１、４０２）を実行して、このバッファメモリから前記データを読み取り、データを読み取ることができるこのバッファメモリ内の基本ロケーションを示す読み取りポインタを更新するステップ（１１２、２１２）と、
−前記アドレス（１４）に転送される前記データシーケンス内で要求されるバッファメモリから導出されるデータの所定の順序に応じて、前記ファームウェア（４０１、４０２）の実行を同期させるステップ（１２２、１２４、２１４、２２４）と
を含むことを特徴とする、方法。
【請求項８】
前記同期ステップ（１２２、１２４、２１４、２２４）は、現在実行中の異なる前記ファームウェア間での少なくとも１つの読み取り・更新権のプログラムされた循環により行われ、現在実行中の前記ファームウェアのうちの１つが前記読み取り・更新権を一時的に保持することにより、前記ファームウェアは、関連付けられた前記バッファメモリ内の少なくとも１回の読み取り及び対応する前記読み取りポインタの少なくとも１回の更新を実行することができる、請求項７に記載のデータ転送方法。
【請求項９】
現在実行中の異なる前記ファームウェア間での少なくとも１つの読み取り・更新権のプログラムされた循環は、以下：
−各ファームウェアの実行が、このファームウェア内にプログラムされた命令に従って前記読み取り・更新権を待つ少なくとも１つのステップ（１２４、２１４）を含み、
−各ファームウェアの実行が、少なくとも１回の読み取り及びこのファームウェアに関連付けられた前記読み取りポインタの少なくとも１回の更新を実行した後、このファームウェアにプログラムされた命令に従って、前記読み取り・更新権を現在実行中の別のファームウェアに送信する少なくとも１つのステップ（１２２、２２４）を含む
ように行われる、請求項８に記載のデータ転送方法。
【請求項１０】
コンピュータにより読み取り可能であり、且つ／又は直接メモリアクセスコントローラ（１０、２０）により実行可能な、通信ネットワークからダウンロード可能であり、且つ／又は媒体に記録可能なコンピュータプログラムであって、前記プログラムが直接メモリアクセスコントローラにより実行された場合、請求項７〜９のいずれか一項に記載のデータ転送方法のステップを実行するプログラムコード命令を含むことを特徴とする、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のソースを使用する直接メモリアクセスコントローラ、データをいくつかのデータソースからこのコントローラにより使用されるそれらデータの少なくとも１つのアドレスに転送する方法、及びそれに対応するコンピュータプログラムに関する。
【背景技術】
【０００２】
そのようなコントローラは、ＤＭＡ（直接メモリアクセス）コントローラと呼ばれ、通常、例えば、集積回路等の中央演算処理装置を有するデータ処理装置に使用される。コントローラは、転送の開始及び終了を除いて中央演算処理装置による介入なしで、１つ又はいくつかの中央演算処理装置により処理又は供給されたデータを、通信ポート、ハードディスク、又は任意のメモリ等の少なくとも１つの周辺機器から、又はそのような周辺機器に転送し、例えば、この周辺機器と装置内の１つ又はいくつかのローカルメモリとの間でデータを転送する。
【０００３】
例えば、ＤＭＡコントローラは、高速周辺機器への繰り返しアクセスが、中央演算処理装置により行われている処理をブロックしない場合でも少なくとも遅くさせる危険性があるシステムにおいて非常に有用であることができる。コントローラの存在により、中央演算処理装置により実行されるソフトウェアアプリケーションの処理時間が最適化され、ＤＭＡコントローラは、ローカルメモリからのデータ転送及びローカルメモリへのデータ転送の管理を任せられる。
【０００４】
本発明は特に、所定数の連続した基本メモリロケーションをそれぞれ含むいくつかのバッファメモリを通してデータをいくつかのデータソースからそれらデータの少なくとも１つのアドレスに転送する直接メモリアクセスコントローラに適用可能であり、アクセスコントローラは、バッファメモリに記憶されているデータを読み取り、順番にアドレスに転送するように設計された読み取り管理モジュールと、それぞれ各バッファメモリに関連付けられた読み取りポインタ記憶手段とを備え、各読み取りポインタは、データを読み取ることができる、各読み取りポインタが関連付けられたバッファメモリの基本ロケーションを示す。
【０００５】
例えば、そのようなＤＭＡコントローラは、（特許文献１）として公開された特許に記載されている。この特許には、データが明らかに互いに同期されていない異なるソースから発せられた場合でのデータがＤＭＡコントローラからアドレスに送信される順番についての一般には解決されていない問題が述べられている。
【０００６】
この文献において与えられる解決策は、データが書き込まれるいくつかのバッファメモリを提供することからなり、それにより、ＤＭＡコントローラは、バッファメモリ内のデータを読み取ってアドレスに転送することができ、それらバッファメモリの順序付きリストがＤＭＡコントローラに供給され、バッファメモリのうちの１つのすべてのデータが、ＤＭＡコントローラにより読み取られてアドレスに転送された場合、順序付きリスト内の次のバッファメモリの読み取りが開始される。したがって、それらデータの送信元である中央演算処理装置によるいかなる動作もなく、データを要求される所定の順番でアドレスに転送することが可能である。
【０００７】
しかし、この解決策は、ＤＭＡコントローラにバッファの順序付きリストの管理を余儀なくさせる。さらに、多数の小さなバッファメモリがこのリスト内に存在する場合であっても、特定の限度を超えて正確にいくつかのソースを同期させることはできない。例えば、２つの異なるソースから導出されたデータをこのようにしてインタレースさせて送信することは不合理である。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】米国特許第５，９０１，２９１号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００９】
したがって、上述した問題及び制約を解消する直接メモリアクセスコントローラを提供することが望ましいであろう。
【課題を解決するための手段】
【００１０】
したがって、本発明の主旨は、所定数の連続した基本メモリロケーションをそれぞれ含むいくつかのバッファメモリを通してデータをいくつかのデータソースからそれらデータの少なくとも１つのアドレスに転送する直接メモリアクセスコントローラであり、アクセスコントローラは、バッファメモリに記憶されているデータを読み取って順番にアドレスに転送するように設計された読み取り管理モジュールと、それぞれ各バッファメモリに関連付けられた読み取りポインタ記憶手段とを備え、各読み取りポインタは、データを読み取ることができる、各読み取りポインタが関連付けられたバッファメモリの基本ロケーションを示し、バッファメモリのそれぞれには各データソースが関連付けられ、バッファメモリ毎に、コントローラは、ファームウェアを実行してデータを読み取り、このバッファメモリに関連付けられた読み取りポインタを更新する手段を備え、アドレスに転送すべきデータシーケンス内で必要とされるバッファメモリから送信されたデータの所定の順番に応じて、ファームウェアの実行を同期させる手段を備える。
【００１１】
ファームウェアは、集積回路、より正確にはこの構成要素の揮発性又は不揮発性のメモリ等のハードウェア構成要素内のオンボードソフトウェアを意味する。
【００１２】
したがって、データを読み取り、読み取りポインタを更新するファームウェアを、それ自体が特定のソースに関連付けられた各バッファメモリに関連付けることにより、且つファームウェアの実行を同期させて、異なるバッファメモリ（ひいては異なるソース）を送信元とするデータをアドレスに転送しなければならない順番を決定論的に定義することにより、ＤＭＡコントローラをデータソースに同期させる必要なく、且つバッファメモリを互いに並べる必要なく、転送シーケンスの詳細を管理することができる。
【００１３】
任意的に、同期手段は、少なくとも１つの読み取り・更新権をあるファームウェアから別のファームウェアに送信する手段を備え、現在実行中のあるファームウェアが読み取り・更新権を一時的に保持することにより、そのファームウェアは、関連付けられたバッファメモリ内の少なくとも１回のデータ読み取り及び対応する読み取りポインタの少なくとも１回の更新を実行することができる。
【００１４】
これもまた任意的に、各バッファメモリは循環式であり、任意の１つの循環バッファメモリの各基本ロケーションは、この循環バッファメモリの最下位アドレスと最上位アドレスとの間のアドレスにより識別され、記憶手段は、各循環バッファメモリに関連付けられた書き込みポインタを備え、各書き込みポインタは、データを書き込むことができる、関連付けられたバッファメモリの基本ロケーションを示し、コントローラは、ソースから受信したデータを対応する循環バッファメモリ内の、対応する書き込みポインタにより示されるアドレスに書き込むように設計された書き込み管理モジュール、並びに各循環バッファメモリの上記読み取りポインタ及び上記書き込みポインタにより示される基本ロケーションの相対位置に応じて、各循環バッファメモリ内の読み取り、書き込みのそれぞれを阻止する手段も備える。
【００１５】
したがって、各循環バッファメモリは、対応するソースとアドレスとの間で１つの中間読み取り／書き込み阻止機能を実行する。この機能は、各循環バッファメモリに対して書き込みアクセス及び読み取りアクセスを行うことができる直接メモリアクセスコントローラにより各循環バッファメモリに関連付けられた読み取りポインタ及び書き込みポインタにより管理される。このようにして、中央演算処理装置に同期する必要なく、入力データフロー（ソースにより生成されたフロー）を出力データフロー（アドレスにより生成されたフロー）に同期させることが可能である。
【００１６】
これもまた任意的に、任意の１つの循環バッファメモリ内の読み取り阻止手段は、読み取りポインタへの更新が、書き込みポインタが指すアドレスに到達するか、又は書き込みポインタが指すアドレスを超えることを意味する場合、この循環バッファメモリ内でのいかなるデータ読み取りも阻止するように設計され、任意の１つの循環バッファメモリ内の書き込み阻止手段は、書き込みポインタへの更新が、書き込みポインタが指すアドレスが、読み取りポインタが指すアドレスに達するか、又はそれを超えることを意味する場合、この循環バッファメモリ内のいかなるデータ書き込みも阻止するように設計される。
【００１７】
これもまた任意的に、循環バッファメモリ毎に、記憶手段は、循環バッファメモリに関連付けられた上記読み取りポインタと異なる「作業ポインタ」と呼ばれる読み取りポインタも備え、この作業ポインタは、データを読み取らなければならない、関連付けられたバッファメモリの基本ロケーションを示し、この循環バッファメモリに関連付けられたファームウェアも、所定の更新論理を使用してこの循環バッファメモリの読み取り毎に作業ポインタを更新するように設計される。
【００１８】
これもまた任意的に、各循環バッファメモリの作業ポインタの所定の更新論理は、データが書き込まれた順番とは異なる順番で、含まれるデータを読み取るようなこの循環バッファメモリ内での少なくとも１つのアドレスジャンプを含む。
【００１９】
本発明の別の目的は、上に定義されたような直接メモリアクセスコントローラにより、所定数の連続した基本メモリロケーションをそれぞれ備えるいくつかのバッファメモリを通していくつかのデータソースからそれらデータの少なくとも１つのアドレスにデータを転送する方法であり、任意の１つのソースから受信された各データは、書き込み管理モジュールにより、このソースに関連付けられたバッファメモリに送信され、アドレスに送信されるべき各データは、コントローラによりバッファメモリの１つにおいて読み取られ、この方法は、
−バッファメモリ毎に、ファームウェアのコントローラが、このバッファメモリからのデータの読み取り及びデータを読み取ることができるこのバッファメモリ内の基本ロケーションを示す読み取りポインタの更新を実行するステップと、
−アドレスに転送すべきデータシーケンス内で要求されるバッファメモリから導出されるデータの所定の順番に応じて、ファームウェアの実行を同期させるステップと
を含む。
【００２０】
任意的に、同期ステップは、現在実行中の異なるファームウェア間での少なくとも１つの読み取り・更新権のプログラムされた循環により行われ、現在実行中のファームウェアの１つが読み取り・更新権を一時的に保持することにより、そのファームウェアは、関連付けられたバッファメモリにおける少なくとも１回のデータ読み取り及び対応する読み取りポインタの少なくとも１回の更新を実行することが可能になる。
【００２１】
これもまた任意的に、現在実行中の異なるファームウェア間での読み取り・更新権のプログラムされた循環は、以下のように行われる。
−各ファームウェアの実行が、このファームウェア内にプログラムされた命令に従って読み取り・更新権を待つ少なくとも１つのステップを含み、
−各ファームウェアの実行が、少なくとも１回の読み取り及びこのファームウェアに関連付けられた読み取りポインタの少なくとも１回の更新を実行した後、このファームウェア内にプログラムされた命令に従って、読み取り・更新権を現在実行中の別のファームウェアに送信する少なくとも１つのステップを含む。
【００２２】
最後に、本発明の別の目的は、コンピュータにより読み取り可能であり、且つ／又は直接メモリアクセスコントローラにより実行可能な、通信ネットワークからダウンロード可能であり、且つ／又は媒体に記録可能なコンピュータプログラムであって、上記プログラムが直接メモリアクセスコントローラにより実行された場合、上に定義されたようなデータ転送方法のステップを実行するプログラムコード命令を含む、コンピュータプログラムである。
【００２３】
本発明は、添付図面を参照して単なる例として与えられる以下の説明を読んだ後、よりよく理解されるであろう。
【図面の簡単な説明】
【００２４】
【図１】本発明の一実施形態による直接メモリアクセスコントローラの一般的な構造を概略的に示す。
【図２】図１の直接メモリアクセスコントローラが、２つのソースから導出されるインタレースしたデータ転送アプリケーション内で機能する有利な方法を概略的に示す。
【図３Ａ】図１の直接メモリアクセスコントローラにより管理される循環バッファメモリ構造を概略的に示す。
【図３Ｂ】図１の直接メモリアクセスコントローラにより管理される循環バッファメモリ構造を概略的に示す。
【図４】本発明の一実施形態によるデータ転送方法の連続ステップを示す。
【発明を実施するための形態】
【００２５】
図１に示される直接メモリアクセスコントローラ又はＤＭＡコントローラ１０は、いくつかのデータソース１２１、・・・，１２ｉ、・・・、１２ｎから、所定数の連続した基本メモリロケーションをそれぞれ含む複数のバッファメモリ１６１、・・・、１６ｉ、・・・、１６ｎを通して、これらデータの少なくとも１つのアドレス１４に転送する機能を実行する。
【００２６】
本発明が使用可能になる前は、ＤＭＡコントローラ１０は、読み取る際、及び任意的に書き込む際に各バッファメモリ１６ｉにアクセス可能でなければならない。しかし、図１に示される例では、書き込み及び読み取りの際に、ＤＭＡコントローラ１０とインタフェースする書き込み・読み取りデータアクセスコマンドモジュール１８及びバッファメモリ１６１、・・・、１６ｉ、・・・、１６ｎを統合した記憶媒体を通して、各バッファメモリ１６ｉの基本ロケーションにアクセスすることが可能である。一変形実施形態では、参照２０として記されたＤＭＡコントローラが、バッファメモリ１６１、・・・、１６ｉ、・・・、１６ｎを統合した記憶媒体及び読み取りアクセスコマンドモジュール１８を含むことに留意する。実際には、ＤＭＡコントローラは、スタンドアロンチップ、例えば、ＣＭＯＳ型集積回路上のシステムの形態であり得る。
【００２７】
非限定的な実施例として、ＮｏＣ（ネットワークオンチップ）と呼ばれる１つの可能なアーキテクチャによれば、ＤＭＡコントローラ１０又は２０は、パケット交換ネットワーク内でリンクを通して互いに通信する機能要素で構成されるものとして考えられる。
【００２８】
このアーキテクチャによれば、ＤＭＡコントローラ１０又は２０は、ソース１２１、・・・、１２ｉ、・・・、１２ｎからアドレス１４にデータを転送する以下の要素：
−ソース１２１，・・・、１２ｉ、・・・、１２ｎから発せられたデータの受信リンク２２、
−コントローラ１０又は２０が、バッファメモリ１６１、・・・、１６ｉ、・・・、１６ｎへのデータ書き込みを管理するために使用するモジュール２４であって、リンク２２から受信されるデータによりアクティブ化される、モジュール２４、
−データがバッファメモリ１６１、・・・、１６ｉ、・・・、１６ｎに送信され、それらデータが書き込み・読み取りアクセスコマンドモジュール１８を通してそれらメモリの基本ロケーション内に書き込まれるリンク２６、
−データがバッファメモリ１６１、・・・、１６ｉ、・・・、１６ｎから受信され、書き込み・読み取りアクセスコマンドモジュール１８を通してそれらメモリの基本ロケーションのそれらデータが読み取られるリンク２８、
−コントローラ１０又は２０が、リンク２８により供給されたデータを受信可能なバッファメモリ１６１、・・・、１６ｉ、・・・、１６ｎ内のデータの読み取りを管理するために使用するモジュール３０、及び
−読み取られたデータがアドレス１４に送信されるリンク３２
を備える。
【００２９】
これら要素を使用して、ＤＭＡコントローラ１０又は２０は、ソース１２ｉから受信された各データを対応するバッファメモリ１６ｉに送信し、アドレス１４に送信される各データは、ＤＭＡコントローラ１０又は２０により対応するバッファメモリ１６ｉにおいて読み取られる。したがって、バッファメモリ１６１、・・・、１６ｉ、・・・、１６ｎは、ソース１２１、・・・、１２ｉ、・・・、１２ｎとアドレス１４との間の中間バッファ機能を遂行する。
【００３０】
示されていない本発明の別の可能な実施形態では、ＤＭＡコントローラ１０がバッファメモリ１６１、・・・、１６ｉ、・・・、１６ｎを統合せず、それらバッファメモリ内にデータ書き込み管理モジュール２４を有さない場合、換言すれば、それらバッファメモリに書き込みアクセスすることができない場合、例えば、ソース１２１、・・・、１２ｉ、・・・、１２ｎがそれらバッファメモリを直接形成することに留意する。
【００３１】
バッファメモリ１６１、・・・、１６ｉ、・・・、１６ｎは、それ自体既知の異なる様式で実施してもよいが、好ましい一実施形態では、循環バッファメモリの形態である。
【００３２】
その場合、各バッファメモリ１６ｉは、最下位アドレスと最上位アドレスとの間のメモリ領域を占める。バッファメモリに関連付けられた読み取りポインタ又は書き込みポインタは、このバッファメモリの最下位アドレスと最上位アドレスとの間でインクリメントされ、最上位アドレスに達した後、インクリメントの追加により最下位アドレスに戻る。これは、バッファメモリを「循環バッファメモリ」として適格なものにする。
【００３３】
例えば、ＦＩＦＯ（先入れ先出し）式のこの循環バッファメモリ構成の利点は、このメモリに関連付けられた書き込みポインタが、記憶されてはいるがまだ読み取られていないデータを含む基本ロケーションに達しない限り、換言すれば、メモリが満杯ではない限り、そのようなメモリバッファ内にデータをまるで無期限に書き込み可能であるかのようにすべてのことが行われるため、追加のデータが受信された場合に、メモリ再割り振り制約が回避されることである。
【００３４】
この場合、データ受信リンク２２は、任意的に、例えば、対応する循環バッファメモリ１６ｉが、満杯であるために書き込み阻止されている間、ソース１２ｉから受信されたデータを一時的に記憶可能なＦＩＦＯ式入力バッファメモリ３４を備える。
【００３５】
これもまた任意的に、読み取られたデータを送信するリンク３２は、例えば、出力ネットワークが一時的に飽和している間、又はアドレス１４が読み取り阻止されている間、読み取られたデータを少なくとも１つの循環バッファメモリ１６１、・・・、１６ｉ、・・・、１６ｎに一時的に記憶可能なＦＩＦＯ式出力バッファメモリ３６を備える。
【００３６】
ＤＭＡコントローラ１０又は２０は、アドレス１４への入力データフローをバッファメモリに分散できるようにする、循環バッファメモリ記述子１６１、・・・、１６ｉ、・・・、１６ｎを記憶する手段３８も備える。
【００３７】
循環バッファメモリ１６ｉ毎に、記述子は、記憶媒体内の循環メモリ１６ｉの最下位アドレスを指す少なくとも１つの最下位ポインタＰＢｉ、記憶媒体内の循環バッファメモリ１６ｉの最上位アドレスを指す最上位ポインタＰＳｉ、ＤＭＡコントローラ１０又は２０が受信した次のデータを書き込むことができる循環バッファメモリ１６ｉ内の基本ロケーションのアドレスを指す書き込みポインタＰＥｉ、アドレス１４に送信するために次のデータを読み取ることができる循環バッファメモリ１６ｉ内の基本ロケーションのアドレスを指す読み取りポインタＰＬｉを含む。
【００３８】
各バッファメモリ１６ｉは、サイズがポインタＰＢｉ及びＰＳｉにより示される最下位アドレスと最上位アドレスとの間に含まれる基本ロケーション数により定義される循環メモリであり、書き込みポインタＰＥｉ及び読み取りポインタＰＬｉが指すことができるこのメモリの各基本ロケーションは、最下位アドレスと最上位アドレスとの間のアドレスにより識別される。
【００３９】
最下位ポインタＰＢｉ及び最上位ポインタＰＳｉは事前に決定され、一定のままであるのに対して、書き込みポインタＰＥｉ及び読み取りポインタＰＬｉは可変である。ポインタは、循環バッファメモリ１６ｉ内で、書き込み動作又は読み取り動作後にアドレスジャンプありで、又はアドレスジャンプなしでインクリメントすることにより更新することができる。
【００４０】
上述したように、各バッファメモリ１６ｉの循環は、書き込みポインタＰＥｉ又は読み取りポインタＰＬｉがメモリの最上位アドレスに達した場合、このポインタを基本ロケーション１つ分だけインクリメントさせると、メモリの最下位アドレスを指すことになることに依存する。
【００４１】
したがって、アドレス１４に送信するために、ＤＭＡコントローラ１０又は２０による読み取りを待っている間、各循環バッファメモリ１６ｉに一時的に記憶されるデータは、このメモリ１６ｉの読み取りポインタアドレスと最下位から最上位の方向での書き込みポインタＰＥｉの先行アドレスとの間に配置される。他方、循環バッファメモリ１６ｉの書き込みポインタＰＥｉのアドレスと最下位から最上位への方向での読み取りポインタＰＬｉのアドレスの先行アドレスとの間に配置されるメモリ領域は、自由に書き込むことができる領域である。ＰＢｉ、ＰＳｉ、ＰＥｉ、及びＰＬｉの各記述子に関連する各循環バッファ１６ｉのこの構造を、詳細に後述する図３Ａ及び図３Ｂに示す。
【００４２】
例えば、より正確には、各書き込みポインタＰＥｉは、対応する循環バッファメモリ１６ｉでの書き込み動作後に、最下位から最上位への方向に基本ロケーションをインクリメントすることにより更新することができる。
【００４３】
他方、読み取りポインタＰＬ１、・・・、ＰＬｉ、・・・、ＰＬｎは、ファームウェア４０１、・・・、４０ｉ、・・・、４０ｎのそれぞれの実行により更新される。例えば、これらファームウェア４０１、・・・、４０ｉ、・・・、４０ｎは、循環バッファメモリ１６１、・・・、１６ｉ、・・・、１６ｎと同じ記憶媒体に記憶され、各循環バッファメモリに関連付けられる。ファームウェアは、読み取り管理モジュール３０により実行される。
【００４４】
本発明によれば、各ファームウェア４０ｉは、データを読み取り、関連付けられた循環バッファメモリ１６ｉの読み取りポインタＰＬｉを更新するようにプログラムされる。また本発明によれば、ＤＭＡコントローラ１０又は２０には、アドレス１４に転送されるデータシーケンス内で要求される、ソース１２１、・・・、１２ｉ、・・・、１２ｎから導出されたデータの所定の順序に応じて、ファームウェア４０１、・・・、４０ｉ、・・・、４０ｎの実行を同期させる手段が提供される。
【００４５】
より正確には、同期手段は、例えば、少なくとも１つの読み取り・更新権をあるファームウェア４０ｉから他のファームウェアに送信する手段を備えることができ、現在実行中のファームウェア４０１、・・・、４０ｉ、・・・、４０ｎの１つが読み取り・更新権を一時的に保持することにより、そのファームウェアは、関連付けられた循環バッファメモリ１６ｉ内で少なくとも１つのデータ読み取り及び対応する読み取りポインタＰＬｉの少なくとも１つの更新を実行することができる。
【００４６】
単純な一実施形態では、この読み取り・更新権は一意であり、トークンと呼ばれ、図２ではＴと記される。２つのオブジェクトが同時に実行されることを回避するためのオブジェクトからオブジェクトに循環する単一のトークンという概念は、コンピュータ科学において周知であり、詳細に説明しない。これは、特に基本のトークン待ち・送信関数（ｅｌｅｍｅｎｔａｒｙ  ｗａｉｔｉｎｇ  ａｎｄ  ｔｏｋｅｎ  ｆｕｎｃｔｉｏｎ）を使用して、プログラミングによりシミュレートされる。
【００４７】
この場合、現在実行中の異なるファームウェア４０１、・・・、４０ｉ、・・・、４０ｎ間のトークンＴの循環は、以下のように各ファームウェアにプログラムすることができる。
−各ファームウェア４０ｉが、トークンＴを待つ少なくとも１つの命令を含み、
−各ファームウェア４０ｉが、循環バッファメモリ１６ｉ内で少なくとも１回の読み取り及び読み取りポインタＰＬｉの少なくとも１つの更新が実行された後、トークンＴを現在実行中の別ファームウェア４０ｊに送信する少なくとも１つの命令を含む。
【００４８】
したがって、同期手段は、読み取り管理モジュール３０と、モジュール３０が実行できるファームウェア４０１、・・・、４０ｉ、・・・、４０ｎに統合されたトークンを待ち送信するこれら命令との組み合わせから生まれる。
【００４９】
しかし、異なるファームウェア間で循環する読み取り・更新権を実施する同期プリミティブとして単一のトークンＴを使用することは、ファームウェアプログラム（ひいてはソース）の数が増大し、出力データのインタレースがより複雑になった場合、確実ではない。このトークンを使用して読み取りがどのように同期させるかを不注意にプログラミングすると、異なるファームウェア間でのブロック又は実行衝突が生じる恐れがある。
【００５０】
これは、セマフォ、特に２つのファームウェアプログラムに１つのセマフォを有するミューテックス（相互排除）セマフォとして適格なバイナリセマフォを使用して読み取り・更新権を実装することにより補正することができる。したがって、Ｃ２Ｎセマフォが、Ｎ個のソースを有するＤＭＡコントローラに定義される。すべてのファームウェアの衝突の管理は、各セマフォが特に、識別された２つのファームウェアプログラム間で交換されるため、単純化される。明らかに、トークン及びバイナリセマフォの概念は、２つのソースを有するＤＭＡコントローラに当てはまる。
【００５１】
単純であるが限定的ではない特定の適用例での図１の直接メモリアクセスコントローラ１０又は２０の有利な動作を図２に示す。この適用例は、関連付けられた読み取りポインタのデータ読み取り・更新ファームウェア４０１、・・・、４０ｉ、・・・、４０ｎを同期させる原理を単に実証するためだけに選択されたものである。この適用例によれば、第１のデータソース１２１が、データシーケンスｄ１，２、ｄ２，１、ｄ３，１、・・・をＤＭＡコントローラ１０又は２０に提供し、ＤＭＡコントローラ１０又は２０は、それらデータを循環バッファメモリ１６１に一時的に記憶する。書き込みポインタＰＥ１のアドレス更新によるアドレスのインクリメントにより、それらソース１２１により提供されるシーケンスの順序で循環バッファメモリ１６１に記憶される。第２のデータソース１２２は、データシーケンスｄ１，２、ｄ２，２、ｄ３，２、・・・をＤＭＡコントローラ１０又は２０に提供し、ＤＭＡコントローラ１０又は２０は、それらデータを循環バッファメモリ１６２に一時的に記憶する。同様に、書き込みポインタＰＥ２のアドレス更新によるアドレスのインクリメントにより、それらデータは、ソース１２２により供給されたシーケンスの順序で循環バッファメモリ１６２に記憶される。次に、ＤＭＡコントローラは、２つのソース１２１及び１２２から導出されたデータを、２つのシーケンスをインタレースさせて１つのシーケンスｄ１，１、ｄ１，２、ｄ２，１、ｄ２，２、ｄ３，１、ｄ３，２、・・・を提供して、アドレス１４に送信しなければならない。
【００５２】
この出力シーケンスが提供される前、データ送信でのソース１２１又は１２２のうちの一方のその他に対する遅延に関係なく、バッファメモリ１６１及びバッファメモリ１６２のそれぞれに関連付けられたファームウェア４０１及び４０２は、以下のように定義される。
ファームウェア４０１
Ｆｏｒ  ｉ  ｉｎ  ０  ｔｏ  ｎ（メモリ１６１において読み取るべきデータ数）
ＰＬ１＋＝ｋ；（所定のインクリメントを使用してポインタＰＬ１を更新する）
Ｄｅｓｔ＝＊ＰＬ１；（データを読み取り、アドレス１４に送信する）
Ｓｅｎｄ  Ｔ  ｔｏ  ４０２；（トークン／ミューテックスをファームウェア４０２に送信する）
Ｗａｉｔ  Ｔ；（トークン／ミューテックスを待つ）
Ｅｎｄ  ｆｏｒ
ファームウェア４０２
Ｆｏｒ  ｉ  ｉｎ  ０  ｔｏ  ｎ（メモリ１６２において読み取るべきデータ数）
ＰＬ２＋＝ｋ；（所定のインクリメントを使用してポインタＰＬ２を更新する）
Ｄｅｓｔ＝＊ＰＬ２；（データを読み取り、アドレス１４に送信する）
Ｓｅｎｄ  Ｔ  ｔｏ  ４０１；（トークン／ミューテックスをファームウェア４０１に送信する）
Ｗａｉｔ  Ｔ；（トークン／ミューテックスを待つ）
Ｅｎｄ  ｆｏｒ
【００５３】
インクリメントｋは１に等しくてよいが、ソース１２１及び１２２のいずれかにより提供されるすべてのデータのすべてを送信する必要があるわけではない場合、１よりも大きくてもよい。
【００５４】
したがって、ソースが互いに同期されない場合であっても、データが読み取られて出力シーケンスｄ１，１、ｄ１，２、ｄ２，１、ｄ２，２、ｄ３，１、ｄ３，２、・・・を提供する都度、トークン又はミューテックスＴは、ファームウェア４０１と４０２との間で循環する。さらに、要求される出力シーケンスのこの決定論的な供給は、ＤＭＡコントローラ１０又は２０が任意のマイクロプロセッサと同期されずに行われる。
【００５５】
データインタレースはＣＤＭＡ（符号分割多元接続）技術を使用して、又はパイロットデータを無視しながら有用データを読み取ることで、２つのＭＩＭＯ（多入力多出力）データフレームを組み合わせることにより行われるため、ＤＭＡコントローラを使用するファームウェア４０１、・・・、４０ｉ、・・・、４０ｎのこの同期の多くの実際用途がある。
【００５６】
したがって、ＤＭＡコントローラが、データソースがその他のソースから独立してデータを送信する速度に関係なく、アドレス１４にデータをデータソースの所定の順序で単純且つ効率的に提供可能なことは極めて明白である。
【００５７】
いくつかのソースから導出されたデータがアドレスに提供される順序を管理するこの機能と組み合わせて、本発明の特定の一実施形態では、ＤＭＡコントローラが入力フロー同期機能及び出力フロー同期機能も実行し得ることが可能である。
【００５８】
この特定の実施形態の実施を可能にするにはまず、ＤＭＡコントローラは、上記定義した書き込み管理モジュール２４を備えなければならない。
【００５９】
この場合、データ書き込み管理モジュール２４は、特に書き込みポインタＰＥｉ及び読み取りポインタＰＬｉの相対値に依存して、任意の１つの循環バッファメモリ１６ｉへのデータの書き込みを許可又は阻止するように設計される。データ書き込み管理モジュール２４は、書き込みポインタＰＥｉを基本ロケーション１つ分だけインクリメントすることにより、シーケンサを使用して書き込みポインタＰＥｉを自動的に更新するようにも設計される。より正確には、本発明のこの特定の実施形態の単純な一変形では、循環バッファメモリ１６ｉ内に書き込むべきデータは、書き込みポインタＰＥｉにより示されるアドレスに書き込まれなければならず、このデータの書き込みは、書き込み管理モジュール２４が以前に行った書き込みポインタＰＥｉへの更新が、書き込みポインタＰＥｉが指すアドレスが、読み取りポインタＰＬｉが指すアドレスに達するか、又はそれを超えるようなものである（メモリが満杯である）場合、阻止されなければならない。
【００６０】
同様に、データ読み取り管理モジュール３０は、特に書き込みポインタＰＥｉ及び読み取りポインタＰＬｉの相対値に応じて、循環バッファメモリ１６ｉ内のデータの読み取りを許可又は阻止するように設計される。データ読み取り管理モジュール３０は、各ファームウェア４０ｉを実行することにより、各読み取りポインタＰＬｉを更新するようにも設計される。より正確には、本発明のこの特定の実施形態の単純な一変形では、循環バッファメモリ１６ｉ内で読み取られるべきデータは、読み取りポインタＰＬｉにより示されるアドレスで読み取られなければならず、読み取り管理モジュール３０により行われた読み取りポインタＰＬｉへの更新が、読み取りポインタＰＬｉが指すアドレスが、書き込みポインタＰＥｉが指すアドレスに達するか、又はそれを超えるようなものである（メモリが空である）場合、データの読み取りは、阻止されなければならない。
【００６１】
特に、任意の循環バッファメモリ１６ｉでの読み出し動作及び書き込み動作の阻止及び非阻止が上述したように機能可能なように、書き込み管理モジュール２４は、書き込みポインタＰＥｉの各更新後に、
−書き込みポインタＰＥｉが読み取りポインタＰＬｉに達した場合（メモリが満杯であることを示す）、循環バッファメモリ１６ｉへのすべてのデータの書き込みを阻止すること、及び
−以前、この読み取りが阻止され、書き込みポインタＰＥｉが読み取りポインタＰＬｉを再び超える場合、循環バッファメモリ１６ｉ内のデータ読み取りを阻止しないこと
を行うようにプログラムすることができる。
【００６２】
同様に、読み取り管理モジュール３０は、読み取りポインタＰＬｉの各更新後に、
−読み取りポインタＰＬｉが書き込みポインタＰＥｉに達した場合（メモリが空であることを示す）、循環バッファメモリ１６ｉ内のすべてのデータ読み取りを阻止すること、及び
−以前、この書き込みが阻止され、読み取りポインタＰＬｉが読み取りポインタＰＥｉを再び超えた場合、循環バッファメモリ１６ｉへのデータの書き込みを阻止しないこと
を行うようにプログラムすることができる。
【００６３】
このようにして、書き込み管理モジュール２４は、メモリ１６ｉが満杯の場合、書き込み阻止機能を実行し、メモリ１６ｉが空の場合、読み取り非阻止機能を実行し、再び満杯にする。読み取り管理モジュール３０は、メモリ１６ｉが空の場合、読み取り阻止機能を実行し、満杯のメモリ１６ｉが再び空になった場合、書き込み非阻止機能を実行する。
【００６４】
上述した書き込み管理モジュール２４及び読み取り管理モジュール３０の詳細な動作は、書き込みポインタＰＥ１、・・・、ＰＥｉ、・・・、ＰＥｎ及び読み取りポインタＰＬ１、・・・、ＰＬｉ、・・・、ＰＬｎを使用して循環バッファメモリ１６１、・・・、１６ｉ、・・・、１６ｎ内の書き込み及び読み取り阻止手段の単なる一例である。しかし、当業者は、書き込みポインタＰＥ１、・・・、ＰＥｉ、・・・、ＰＥｎ及び読み取りポインタＰＬ１、・・・、ＰＬｉ、・・・、ＰＬｎの値に応じて、循環バッファメモリ１６１、・・・、１６ｉ、・・・、１６ｎに読み書きを阻止させる他の実施態様又は変形も考案可能なことを理解するであろう。
【００６５】
これら特徴により、ＤＭＡコントローラ１０又は２０は、ソース１２１、・・・、１２ｉ、・・・、１２ｎからの入力データフロー及びアドレス１４への出力フローを同期することができる。
【００６６】
結果として、例えば、１つ又は複数のマイクロプロセッサにより処理又は使用されたデータの一時的なローカル記憶領域であり得るいくつかのデータソース１２１、・・・、１２ｉ、・・・、１２ｎと、例えば、周辺機器又は任意の機能オペレータであり得るアドレス１４と、変形実施形態２０に準拠し、循環バッファメモリ１６１、・・・、１６ｉ、・・・、１６ｎを含むＤＭＡコントローラとを含む集積回路において、マイクロプロセッサは、それらソースとアドレス１４との間でＤＭＡコントローラにより行われる転送から独立して、データをソース１２１、・・・、１２ｉ、・・・、１２ｎに転送することができる。
【００６７】
このＤＭＡコントローラ同期機能と併せて、本発明の別の実施形態では、第１の変形によれば、各循環バッファメモリ１６ｉに「作業ポインタ」と呼ばれる新しい読み取りポインタを定義することが可能である。この作業ポインタＰＴｉは、前に定義した読み取りポインタＰＬｉと異なる。読み取りポインタのように、作業ポインタは記憶手段３８に記憶される。作業ポインタは変数であり、実行される各読み取り動作後にファームウェア４０ｉにより更新される。
【００６８】
２つのソース１２１及び１２２を有する単純な実施形態を示す図３Ａ及び図３Ｂでは、２つの作業ポインタＰＴ１及びＰＴ２が、書き込みポインタＰＥ１、ＰＥ２及び読み取りポインタＰＬ１及びＰＬ２に追加される。より正確には、図３Ａは循環バッファメモリ構造１６１を表し、図３Ｂも同様に、循環バッファメモリ１６２を示す。
【００６９】
したがって、各ファームウェア４０ｉは、作業ポインタＰＴｉを更新する論理が、循環バッファメモリ１６ｉにおいて少なくとも１つのアドレスジャンプを含み、それにより、生成したシーケンスとは異なる順序でソース１２ｉから導出されたデータを読み取ることが可能なように定義することができる。この新しいポインタＰＴｉ及び図３Ａ及び図３Ｂに示すように、各循環バッファ１６ｉ内の順方向又は逆方向へのアドレスジャンプによる更新を行う可能性を導入することにより、このバッファメモリは、単純なＦＩＦＯ式リストのようには使用されない。作業ポインタＰＴ１、・・・、ＰＴｉ、・・・、ＰＴｎにより、ＤＭＡコントローラ１０又は２０は、ソース１２１、・・・、１２ｉ、・・・、１２ｎ自体から受信された各データシーケンスを並び替えることができる。
【００７０】
この第１の変形では、任意の１つの循環バッファ１６ｉの読み取りポインタＰＬｉは、データを書き込むためにメモリ領域を解放する読み取りポインタである。換言すれば、この読み取りポインタが更新される都度、前に指されていたアドレスのロケーションと、読み取りポインタＰＬｉにより指される新たなアドレスのロケーションの先行ロケーションとの間のメモリ領域は、書き込みのために自動的に解放される。これは、上述したように、書き込みポインタＰＥｉのアドレスと、最下位から最上位への方向での読み取りポインタＰＬｉのアドレスに先行するアドレスとの間の循環バッファメモリ１６ｉ内に配置されるメモリ領域が、原理上、自由に書き込むことができる領域としてみなされることによる。
【００７１】
任意の１つの循環バッファメモリ１６ｉの作業ポインタＰＴｉはそれ自体、読み取られたデータを保持する読み取りポインタである。換言すれば、データをアドレス１４に送信できるように、データを循環バッファメモリ１６ｉにおいて読み取る必要がある場合、データは、作業ポインタＰＴｉにより示されるアドレスから読み取られる。しかし、この読み取り後の作業ポインタＰＴｉの更新は、書き込みのために対応する基本ロケーションを解放しない。読み取りでの作業ポインタＰＴｉの変位は、アドレスの昇順でソース１２ｉから発せられたデータシーケンスに従う必要はない。変位は、任意の順序で、好ましくは読み取りポインタＰＬｉと書き込みポインタＰＥｉとの間でファームウェア４０ｉにより自由に事前に決定される。特に、用途に応じて、作業ポインタＰＴｉにより最初に読み取られたデータを再び読み取ることができ、データを、循環バッファメモリ１６ｉに記憶された順序とは異なる順序で読み取ることができる。
【００７２】
したがって、各作業ポインタＰＴｉが読み取りポインタであるこの変形実施形態では、各ファームウェア４０ｉが、読み取り管理モジュール３０により実行されて、循環バッファメモリ１６ｉに関連付けられた２つの読み取りポインタを更新する命令であって、
−作業ポインタＰＴｉの目標とする用途に応じて、順方向及び／又は逆方向のアドレスジャンプを含み得る命令、
−作業ポインタＰＴｉにプログラムされた変位に応じて、読み取りポインタＰＬｉのみに順方向アドレスジャンプを含み得る命令
を含むことが分かる。
【００７３】
他方、ファームウェア４０１、・・・、４０ｉ、・・・、４０ｎのいずれも書き込みポインタＰＥ１、・・・、ＰＥｉ、・・・、ＰＥｎを更新する命令を含まず、書き込みポインタＰＥ１、・・・、ＰＥｉ、・・・、ＰＥｎは、例えば、循環バッファメモリ１６１、・・・、１６ｉ、・・・、１６ｎのうちの１つでの各データ書き込み動作においてアドレスジャンプなしでインクリメントされるようにシーケンサにより更新され得る。
【００７４】
任意の作業ポインタＰＴｉの変位が、図３Ａに示すように、ポインタが読み取るべきデータを実際に含む循環バッファメモリゾーン１６ｉを指すようにプログラムされなければならないことにも留意する。作業ポインタのうちの１つが、更新後（図３Ｂに示す）にこのゾーンの外部を指す場合、目標とする用途に応じて、エラーメッセージを生成することができるか、又は書き込みポインタＰＥｉが追いつくまでこの位置に凍結させることができる。
【００７５】
上記と対称をなす一変形実施形態では、データシーケンスを並べ替えるために、各循環バッファメモリ１６ｉの書き込みポインタとして新しい作業ポインタＰＴｉを定義することも可能であろう。
【００７６】
この第２の変形では、各循環バッファメモリ１６ｉの書き込みポインタＰＥｉは、循環バッファメモリ１６ｉ内にデータを書き込むメモリ領域が確保された書き込みポインタである。換言すれば、書き込みポインタが更新される都度、前に指していたアドレスのロケーションと書き込みポインタＰＥｉにより新たに指されるアドレスの先行ロケーションとの間のメモリ領域は、自動的に読み取りに確保される。作業ポインタＰＴｉは、任意の所定の順序で循環バッファメモリ１６ｉ内のポインタＰＥｉにより確保されるメモリ領域内にデータを書き込む効果的な書き込みポインタである。
【００７７】
しかし、この第２の変形は、循環バッファメモリ１６１、・・・、１６ｉ、・・・、１６ｎ内の書き込み末端に閉塞を生成される恐れがあるため、前の変形よりも魅力が劣る。ＤＭＡコントローラによるデータを転送する用途では、書き込み末端の上流よりも循環バッファメモリ内の読み取り末端の下流において閉塞を何とかすることが好ましい。
【００７８】
これより、ＤＭＡコントローラ管理ブロックが循環バッファメモリ１６１及び１６２に読み書きし、作業ポインタＰＴ１及びＰＴ２が、各循環バッファメモリで読み出されたデータを保持する読み取りポインタとして導入される上述した第１の変形実施形態を参照して、２つのソース１２１及び１２２から導出されたデータを転送する方法であって、転送されるデータはインタレースされ、ＤＭＡコントローラ１０又は２０はそのデータを使用可能である、方法の例の詳細を説明する。この方法の連続ステップを図４に示す。
【００７９】
この転送方法は、３つ以上のソースに一般化するすることができ、この特定の例は、データインタレース用途のみならず、単純な説明及び例を提供するために、図４を参照して与えられる。
【００８０】
第１のステップ１００において、コントローラ１０又は２０は、循環バッファメモリ１６ｉ（この例では、ｉ＝１又は２）のうちの１つへのデータ読み取り又は書き込み命令を待つ。
【００８１】
このステップ１００の後に、ステップ１０２が続き、循環バッファメモリ１６ｉのうちの１つでのデータ書き込み命令を受けて、書き込みを開始する。書き込み管理モジュール２４は、この書き込み開始ステップ中にアクティブ化される。非限定的な実施形態例として、書き込み管理モジュール２４は、記憶手段３８から、このバッファメモリへの書き込みが阻止されるか否かを示す循環バッファメモリ１６ｉの第１の記述子の値を抽出する。
【００８２】
次に、この第１の記述子の値に応じて、テストステップ１０４が行われて、循環バッファメモリ１６ｉ内で考慮されるデータの書き込みを続けるか否かが判断される。第１の記述子により、書き込みが阻止されることが示される場合、ステップ１００が繰り返され、その他の場合、ステップ１０６が使用される。
【００８３】
ステップ１０６において、書き込み管理モジュール２４は、書き込みポインタＰＥｉが指すアドレスを記憶手段３８から抽出する。次に、書き込み管理モジュール２４は、考慮されるデータを循環バッファメモリ１６ｉの対応する基本ロケーションに書き込む。
【００８４】
次に、更新ステップ１０８において、書き込みポインタＰＥｉが指すアドレスが、循環バッファメモリ１６ｉ内で基本ロケーション１つ分だけインクリメントされる。
【００８５】
最後に、ステップ１１０において、書き込み管理モジュール２４は、読み取りポインタＰＬｉが指すアドレスを記憶手段３８から抽出し、次に、可能な場合には、以下の状況において、第１の書き込み阻止記述子の値及び循環バッファメモリ１６ｉの第２の読み取り阻止記述子の値を更新する。
−ステップ１０８での更新後、書き込みポインタＰＥｉが指すアドレスが、読み取りポインタＰＬｉが指すアドレスに達する場合（メモリ１６ｉが満杯であることを示す）、第１の記述子は、書き込みが循環バッファメモリ１６ｉにおいて阻止されることを示すように変更される。
−ステップ１０８での更新後、書き込みポインタＰＥｉが指すアドレスが、読み取りポインタＰＬｉが指すアドレスと異なり、第２の記述子が、読み取りが阻止されることを示す場合、第２の記述子は、読み取りが循環バッファメモリ１６ｉにおいて許可されることを示すように変更される。
【００８６】
ステップ１１０の後、ステップ１００が繰り返される。
【００８７】
ステップ１００の後には、ステップ１１２も続き、ファームウェア４０ｉがアクティブ化された後、循環バッファメモリ１６ｉでのデータシーケンスの読み取りが開始される。このアクティブ化ステップは、読み取り管理モジュール３０により実行される。非限定的な実施形態例として、読み取り管理モジュール３０は、記憶手段３８から、読み取りがこのバッファメモリにおいて阻止されるか否かを示す循環バッファメモリ１６ｉの第２の記述子の値を抽出する。
【００８８】
次に、テストステップ１１４において、読み取り管理モジュール３０は、アドレス１４がデータを受信可能な状態にあるか否かを判断する。このテストは、いくつかの方法で行うことができる。ＤＭＡコントローラ１０又は２０が出力バッファ３６を備える場合、出力バッファ３６が満杯ではない限り、データを転送できると考えることができる。デフォルトにより、又は補足として、従来の通信プロトコルにより、アドレス１４はＤＭＡコントローラ１０又は２０にアドレス１４の所定の形式でのメッセージによるデータ受信能力について通知することが可能であり得る。データをアドレス１４に転送することが不可能な場合、ファームウェア４０１の実行は、ステップ１１４において阻止されたままである。次のステップ１１６は、出力バッファ３６が空になりつつあるため、又はＤＭＡコントローラが、アドレスがデータを受信可能なことを通知するメッセージを受信したために、アドレスが再びデータを受信可能な状態になるまで開始されない。
【００８９】
ステップ１１６は、別のテストステップである。このステップ中、第２の記述子の値に応じて、循環バッファメモリ１６１でのデータ読み取りを続けるか否かが判断される。このメモリ１６１の第２の記述子が、読み取りが阻止されることを示す場合、ファームウェア４０１の実行は、ステップ１１６において阻止されたままであり、その他の場合、次のステップ１１８が行われる。循環バッファメモリ１６１内に書き込まれたデータが第２の記述子の値を変更しない限り（ステップ１１０）、シーケンスはステップ１１６において阻止状態を保つ。
【００９０】
ステップ１１８は、循環バッファメモリ１６１が読み取られ、作業ポインタＰＴ１が更新され、場合によっては、読み取りポインタＰＬ１がファームウェア４０１の命令に従って更新されるステップである。
【００９１】
次に、ステップ１２０中、読み取り管理モジュール３０はおそらく、以下の状況において、循環バッファメモリ１６１での第１の書き込み阻止記述子の値及び第２の読み取り阻止記述子を更新する。
−読み取りポインタＰＬ１が指すアドレスが、ステップ１１８での更新後に、書き込みポインタＰＥ１が指すアドレスに達する場合（メモリ１６１が空であることを示す）、第２の記述子は、循環バッファメモリ１６１において読み取りが阻止されることを示すように変更される。
−読み取りポインタＰＬ１が指すアドレスが、ステップ１１８での更新後に、書き込みポインタＰＥ１が指すアドレスと異なり、第１の記述子が、書き込みが阻止されることを示す場合、第１の記述子は、循環バッファメモリ１６１での書き込み許可を示すように変更される。
【００９２】
ステップ１２０の後に、ステップ１２２が続き、トークンＴ（又はミューテックス）をファームウェア４０２に送信する。
【００９３】
ステップ１２２の後に、ステップ１２４が続き、トークンＴを待つ。ファームウェア４０１は、現在実行中のトークンを別のファームウェア、実際にはファームウェア４０２から受信しない限り、このステップにおいて阻止状態を保つ。トークンＴを受信するとすぐに、ソース１２１から発せられたデータシーケンスを読み取るカウンタがインクリメントされ、シーケンス全体が読み取られるまで、ステップ１１４が再び実行される。要求されるシーケンス全体が読み取られた場合、ファームウェア４０１の実行を終了する（Ｆ）。
【００９４】
ステップ１００の後には、ステップ２１２も続き、ファームウェア４０２がアクティブ化された後、循環バッファメモリ１６２でのデータシーケンスの読み取りが始動する。このアクティブ化ステップは、読み取り管理モジュール３０により実行される。非限定的な実施形態例として、読み取り管理モジュール３０は、記憶手段３８から、このバッファメモリにおいて読み取りが阻止されるか否かを示す循環バッファメモリ１６２の第２の記述子の値を抽出する。
【００９５】
ステップ２１２の後に、ステップ２１４が続き、トークンＴを待つ。ファームウェア４０２は、このステップにおいて、現在実行中のトークンを別のファームウェア、実際にはファームウェア４０１から受信しない限り、このステップにおいて阻止状態を保つ。トークンＴを受信するとすぐに、テストステップ２１６が開始される。
【００９６】
このテストステップ２１６中、読み取り管理モジュール３０は、アドレス１４がデータを受信可能な状態であるか否かを判断する。このステップは、上述したステップ１１４と同じである。ファームウェア４０２の実行は、データをアドレス１４に転送することができない限り、このステップにおいて阻止状態を保つ。
【００９７】
次のステップ２１８は別のテストステップである。このステップ中、循環バッファメモリ１６２の第２の記述子の値に応じて、データ読み取りを続けるか否かが判断される。このメモリ１６２の第２の記述子が、読み取りが阻止されることを示す場合、ファームウェア４０２の実行はステップ２１８において阻止状態を保ち、その他の場合、次のステップ２２０が開始される。循環バッファメモリ１６２へのデータの書き込みが、第２の記述子の値を変更しない限り（ステップ１１０）、シーケンスはステップ２１８において阻止状態を保つ。
【００９８】
ステップ２２０は、循環バッファメモリ１６２において読み取り、作業ポインタＰＴ２を更新し、場合によっては、ファームウェア４０２の命令に従って読み取りポインタＰＬ２を更新するステップである。
【００９９】
次に、ステップ２２２中、読み取り管理モジュール３０は、以下の状況において、循環バッファメモリ１６２の第１の書き込み阻止記述子の値及び第２の読み取り阻止記述子の値を更新し得る。
−読み取りポインタＰＬ２が指すアドレスが、ステップ２２０での更新後、書き込みポインタＰＥ２が指すアドレスに達する場合（メモリ１６２が空であることを示す）、第２の記述子が、循環バッファメモリ１６２において読み取りが阻止されることを示すように変更される。
−読み取りポインタＰＬ２が指すアドレスが、ステップ２２０での更新後、書き込みポインタＰＥ２が指すアドレスと異なり、第１の記述子が、書き込みが阻止されることを示す場合、第１の記述子は、循環バッファメモリ１６２において書き込みが許可されることを示すように変更される。
【０１００】
ステップ２２２の後に、ステップ２２４が続き、トークンＴがファームウェア４０１に送信される。トークンＴが送信されるとすぐに、ソース１２２から導出されたデータシーケンスの読み取りカウンタがインクリメントされ、シーケンス全体が読み取られるまで、実行は待つステップ２１４に戻る。要求されるシーケンス全体が読み取られた場合、ファームウェア４０２の実行は終了する（Ｆ）。
【０１０１】
明らかなことに、循環バッファメモリでの読み取り及び同じ循環バッファメモリでの書き込みを行うファームウェアの実行は、ＤＭＡコントローラ１０又は２０により独立して並列に管理することができる。これは、読み取りファームウェア間でのトークンＴ（又はより一般的にはセマフォ）の循環により決定されるアドレスに送信されるデータシーケンスを何等変更しない。
【０１０２】
したがって、上述した直接メモリアクセスコントローラ及びそのデータ転送動作により、いくつかのソースから少なくとも１つのアドレスへのデータ転送の管理が、ＤＭＡコントローラがアドレスにデータを送信する所定の順序に関して、容易になることがかなり明らかである。
【０１０３】
本発明が考案された実施形態に限定されないことにも留意する。特に、上記では、説明を簡単にするために、転送が単一のアドレスに対して行われる適用例を使用することが考案されたが、本発明の原理は、いくつかのアドレスがある場合でも等しく適用可能である。
【０１０４】
より一般的には、当業者は、上記に開示される情報を考慮した後、上述した実施形態に対していくつかの変更を行い得ることを認識するであろう。以下の特許請求の範囲内で使用される用語は、特許請求の範囲をこの説明に提示される実施形態に限定するものとして解釈されてはならず、当業者が一般的な知識を適用して、ここで開示された情報を利用することにより構築され、予測され得る、特許請求の範囲が包含を目的とするすべての均等物を含むものと解釈されなければならない。
【図１】
2011081801.tif 000003
【図２】
2011081801.tif 000004
【図３Ａ】
2011081801.tif 000005
【図３Ｂ】
2011081801.tif 000006
【図４】
2011081801.tif 000007