(57)【要約】   本アクセスコントローラは、リングバッファメモリ（１６）への書き込みを管理するモジュール（２４）と、第１の読み出しポインタ（ＰＬ）および第２の書き込みポインタ（ＰＥ）を格納する格納手段（３８）と、リングバッファメモリ（１６）での読み出しを管理するモジュール（３０）と、読み出しおよび書き込みをロックするロック手段（２４、３０、４０）と、第１および第２のポインタ（ＰＬ；ＰＥ）とは異なる読み出しまたは書き込みワークポインタ（ＰＴ）を格納する格納手段（３８）と、所定の更新回路に従ってワークポインタ（ＰＴ）を更新する更新手段（２４、３０、４０）とを有する。所定の更新回路は、ワークポインタ（ＰＴ）をリングバッファメモリ（１６）で前方または後方に変位させ、コントローラは、読み出しワークポインタ（ＰＴ）が、読み出し用に確保したメモリスペースの外部を指定する（ＰＥ）場合、または同じように、書き込みワークポインタ（ＰＴ）が、書き込み用の空きスペースの外部を指定する場合に読み出しまたは書き込みワークポインタをロックするロック手段を備える。【選択図】図１
2013504800.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのデータ転送元（１２）からこのデータの少なくとも１つの転送先（１４）へリングバッファメモリ（１６）を介してデータを転送するためのダイレクトメモリアクセスコントローラであって、
−  前記少なくとも１つの転送元（１２）から受信したデータをリングバッファメモリ（１６）に書き込むように設計した書き込み管理モジュール（２４）と、
−  第１の読み出しポインタ（ＰＬ）および第２の書き込みポインタ（ＰＥ）の格納手段であって、前記読み出しポインタおよび書き込みポインタが、データの読み込みおよび書き込みが可能なリングバッファメモリの基本セルを示す格納手段（３８）と、
−  前記リングバッファメモリ（１６）に格納されたデータを読み出し、該データを前記少なくとも１つの転送先（１４）に転送するように設計した読み出し管理モジュール（３０）と、
−  前記リングバッファメモリ（１６）で読み出しおよび書き込みを、前記読み出しポインタおよび書き込みポインタが示す基本セルの位置に応じてロックするロック手段（２４、３０、４０）と、
−  前記第１および第２のポインタ（ＰＬ；ＰＥ）とは異なる読み出しまたは書き込みワークポインタ（ＰＴ）の格納手段（３８）と、
−  前記ワークポインタ（ＰＴ）の更新手段であって、該ワークポインタ（ＰＴ）が実行した各読み出しまたは書き込みの後に、所定の更新回路に従って更新する更新手段（２４、３０、４０）と
を有するアクセスコントローラにおいて、
所定の更新回路が前記ワークポインタ（ＰＴ）を前記リングバッファメモリ（１６）で前方または後方に変位させることと、前記読み出しワークポインタ（ＰＴ）が、前記読み出しポインタ（ＰＬ）から前記書き込みポインタ（ＰＥ）の１つ前のアドレスまでと規定した読み出し用に確保したメモリスペースの外部を指定する場合、または同じように、前記書き込みワークポインタ（ＰＴ）が、前記書き込みポインタ（ＰＥ）から前記読み出しポインタ（ＰＬ）の１つ前のアドレスまでと規定した書き込み用の空きスペースの外部を指定する場合に前記読み出しまたは書き込みワークポインタをロックするロック手段を備えること
とを特徴とするダイレクトメモリアクセスコントローラ（１０、２０）。
【請求項２】
前記ワークポインタの前記更新手段は、更新用ファームウェア（４０）を実行する手段（２４、３０）を有する、請求項１に記載のダイレクトメモリアクセスコントローラ（１０、２０）。
【請求項３】
前記所定の更新回路は、前記リングバッファメモリへのアドレスジャンプを少なくとも１つ含む、請求項１または２に記載のダイレクトメモリアクセスコントローラ（１０、２０）。
【請求項４】
前記読み出しロック手段（３０、４０）は、前記読み出しポインタ（ＰＬ）を更新することによって前記読み出しポインタの指定するアドレスが前記書き込みポインタ（ＰＥ）の指定するアドレスに到達したり追い越したりすると、前記リングバッファメモリ（１６）でのデータの読み出しをすべてロックするように設計し、前記書き込みロック手段（２４、４０）は、前記書き込みポインタ（ＰＥ）を更新することによって前記書き込みポインタの指定するアドレスが前記読み出しポインタ（ＰＬ）の指定するアドレスに到達したり追い越したりすると、前記リングバッファメモリ（１６）でのデータの書き込みをすべてロックするように設計する、請求項１から３のいずれか一項に記載のダイレクトメモリアクセスコントローラ（１０、２０）。
【請求項５】
前記読み出しポインタ（ＰＬ）は、データの書き込み用にメモリスペースを空ける読み出しポインタであり、前記前記ワークポインタ（ＰＴ）は、読み出したデータを保存する読み出しポインタである、請求項１から４のいずれか一項に記載のダイレクトメモリアクセスコントローラ（１０、２０）。
【請求項６】
前記ファームウェア（４０）は、前記第１の読み出しポインタ（ＰＬ）および前記読み出しワークポインタ（ＰＴ）のみを更新し、前記書き込みポインタ（ＰＥ）は、前記リングバッファメモリ（１６）でデータの書き込み演算を行うたびにアドレスジャンプすることなくインクリメントによって自動的に更新されるように設計する、請求項２または５に記載のダイレクトメモリアクセスコントローラ（１０、２０）。
【請求項７】
前記第２の書き込みポインタ（ＰＥ）は、データの読み出し用にメモリスペースを確保する書き込みポインタであり、前記ワークポインタ（ＰＴ）は書き込みポインタである、請求項１から４のいずれか一項に記載のダイレクトメモリアクセスコントローラ（１０、２０）。
【請求項８】
前記ファームウェア（４０）は、前記第２の書き込みポインタ（ＰＥ）および前記書き込みワークポインタ（ＰＴ）のみを更新し、前記読み出しポインタ（ＰＬ）は、前記リングバッファメモリ（１６）でデータの読み出し演算を行うたびにアドレスジャンプすることなくインクリメントによって自動的に更新されるように設計する、請求項２または７に記載のダイレクトメモリアクセスコントローラ（１０、２０）。
【請求項９】
複数の転送先に送るデータ転送に対して、前記格納手段（３８）は転送先ごとに、前記第１の読み出しポインタ（ＰＬ１、ＰＬ２）とは異なる読み出しワークポインタ（ＰＴ１、ＰＴ２）を有し、前記コントローラは、各転送先（１４ｓ、１４２）の前記読み出しワークポインタ（ＰＴ１、ＰＴ２）の更新手段（３０）を有し、前記ダイレクトメモリアクセスコントローラは、前記第１の読み出しポインタ（ＰＬ１、ＰＬ２）から前記書き込みポインタ（ＰＥ）の１つ前のアドレスまでと規定した読み出し用に確保したメモリスペースの外部を前記読み出しワークポインタが指定すると、前記読み出しワークポインタをロックするロック手段を有する、請求項１から８のいずれか一項に記載のダイレクトメモリアクセスコントローラ（１０、２０）。
【請求項１０】
複数の転送先に送るデータ転送に対して、前記格納手段（３８）は転送先ごとに、読み出しワークポインタに対応する第１の読み出しポインタ（ＰＬ１、ＰＬ２）を有し、前記ダイレクトメモリアクセスコントローラは、対象とする読み出しワークポインタに対応する第１の読み出しポインタ（ＰＬ１、ＰＬ２）から書き込みポインタ（ＰＥ）の１つ前のアドレスまでと規定した読み出し用に確保したメモリスペースの外部を読み出しワークポインタが指定すると、読み出しワークポインタをロックするロック手段を有する、請求項１から８のいずれか一項に記載のダイレクトメモリアクセスコントローラ。
【請求項１１】
複数の転送元から送られるデータ転送に対して、前記格納手段は転送元ごとに、前記第２の書き込みポインタとは異なる書き込みワークポインタを有し、前記第２の読み出しポインタ（ＰＥ）から前記第１の読み出しポインタ（ＰＬ）の１つ前のアドレスまでと規定した書き込み用に空いているメモリスペースの外部を書き込みワークポインタが指定すると、この書き込みワークポインタをロックするロック手段を備える、請求項１から１０のいずれか一項に記載のダイレクトメモリアクセスコントローラ。
【請求項１２】
複数の転送元から送られるデータ転送に対して、前記格納手段（３８）は転送元ごとに、書き込みワークポインタに対応する第２の書き込みポインタを有し、ダイレクトアクセスコントローラは、対象とする書き込みワークポインタに対応する前記第２の書き込みポインタから前記第１の読み出しポインタ（ＰＬ）の１つ前のアドレスまでと規定した書き込み用に空いているメモリスペースの外部を書き込みワークポインタが指定すると、各書き込みワークポインタをロックするロック手段を有する、請求項１から１０のいずれか一項に記載のダイレクトメモリアクセスコントローラ。
【請求項１３】
前記格納手段は、前記第２の書き込みポインタとは異なる書き込みワークポインタを有するとともに、前記第１の読み出しポインタとは異なる読み出しワークポインタも有する、請求項１から８のいずれか一項に記載のダイレクトメモリアクセスコントローラ。
【請求項１４】
前記所定の更新回路は、前記リングバッファメモリ（１６）で前記ワークポインタ（ＰＴ）を前方および後方へ変位させることを含む、請求項１から１３のいずれか一項に記載のダイレクトメモリアクセスコントローラ。
【請求項１５】
少なくとも１つのデータ転送元（１２）からこのデータの少なくとも１つの転送先（１４）へ、請求項１から１４のいずれか一項に記載のダイレクトメモリアクセスコントローラ（１０、２０）を用いてデータを転送する方法であって、前記転送元（１２）から受信した各データをコントローラ（１０、２０）によって前記リングバッファメモリ（１６）へ発信し（１０６）、前記転送先（１４）へ転送する各データを前記コントローラ（１０、２０）によって前記リングバッファメモリ（１６）で読み出し（１１８）、読み出しポインタおよび書き込みポインタが示す基本セルの相対位置に応じて、リングバッファメモリで読み出しをコントローラによってロックするステップと、リングバッファメモリで書き込みをコントローラによってロックするステップ（１１０、１２２）とを有する方法がさらに、
−  前記リングバッファメモリ（１６）で前記ワークポインタ（ＰＴ）を前方および後方に変位させるステップと、
−  前記読み出しポインタ（ＰＬ）から前記書き込みポインタ（ＰＥ）の１つ前のアドレスまでと規定した読み出し用に確保したメモリスペースの外部を前記読み出しワークポインタ（ＰＴ）が指定すると、またはこれと同様に、前記書き込みポインタ（ＰＥ）から前記読み出しポインタ（ＰＬ）の１つ前のアドレスまでと規定した書き込み用に空いているメモリスペースの外部を前記書き込みワークポインタ（ＰＴ）が指定すると、読み出しまたは書き込みワークポインタをロックするステップと
を有することを特徴とする方法。
【請求項１６】
通信ネットワークからダウンロード可能なコンピュータプログラムおよび／またはコンピュータで再生可能な媒体に記録したコンピュータプログラムおよび／またはダイレクトメモリアクセスコントローラ（１０、２０）で実行可能なコンピュータプログラムであって、前記プログラムをダイレクトメモリアクセスコントローラで実行した場合に、請求項１５に記載のデータ転送方法のステップを実行するためのプログラムコードの命令を含むことを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ダイレクトメモリアクセスコントローラ、少なくとも１つのデータ転送元からこのデータの少なくとも１つの転送先にデータを転送するこのコントローラが実施する方法、およびそのコンピュータプログラムに関する。
【背景技術】
【０００２】
ＤＭＡ（英語の「Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ」）コントローラと呼ばれるこのようなコントローラは一般に、例えば集積回路などの中央処理装置を備えるデータ処理装置に使用される。このコントローラは、中央処理装置が処理したり供給したりするデータを転送することができ、通信ポート、ハードディスクまたは任意のメモリなどの周辺機器から、またはこの周辺機器へ、この周辺機器と装置のローカルメモリなどとの間を、転送の開始および終了以外であれば中央処理装置を介在させることなく転送することができる。
【０００３】
ＤＭＡコントローラは、例えば周辺機器への度重なる急速なアクセスが、中央処理装置が実行する処理をほぼ停止させるほどではないとしても少なくとも減速させることがあるシステムでは、非常に有益である。ＤＭＡコントローラがあることにより、ローカルメモリとのデータ転送のやり取りをＤＭＡコントローラに管理させ、中央処理装置が実行するアプリケーションソフトウェアの処理時間が最適化される。
【０００４】
本発明は、さらに詳細には、少なくとも１つのデータ転送元からこのデータの少なくとも１つの転送先へデータを転送するためのダイレクトメモリアクセスコントローラであって、一連のメモリの基本セルを所定数有するリングバッファメモリを介し、各基本セルをリングバッファメモリのベースアドレスから先頭アドレスまでのアドレスで識別するアクセスコントローラにおいて、転送元から受信したデータをリングバッファメモリに書き込むように設計した書き込み管理モジュールと、第１の読み出しポインタおよび第２の書き込みポインタを格納する格納手段とを備え、前記読み出しポインタおよび書き込みポインタが、データの読み込みおよび書き込みが可能なリングバッファメモリの基本セルを示すダイレクトメモリアクセスコントローラに適用される。
【０００５】
このようなＤＭＡコントローラが、例えば欧州特許公報第０９３３９２６号に記載されている。このコントローラの役割は、転送先のデコーダが順次読み出したデータをバッファメモリに書き込むことであり、このデコーダはこのバッファメモリへの読み出しアクセス権を有する。ＤＭＡコントローラが該当するバッファメモリにデータを書き込む演算を行うたびに、各バッファメモリに対して規定した書き込みポインタがメモリの基本セルのアドレスをインクリメントされる。同じく、１つの転送先が該当するバッファメモリでデータを読み出す演算を行うたびに、各バッファメモリに対して規定した読み出しポインタがメモリの基本セルのアドレスをインクリメントされる。
【０００６】
各バッファメモリは、ベースアドレスから先頭アドレスまでのメモリスペースを占有している。バッファメモリの書き込みポインタおよび読み出しポインタは、このバッファメモリのベースアドレスと先頭アドレスとの間でインクリメントされ、先頭アドレスに到達したのちにインクリメントされることよってベースアドレスに戻る。そのため、このバッファメモリを「リングバッファメモリ」と呼ぶことができる。
【０００７】
ＦＩＦＯ（英語の「Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ」）方式のリングバッファメモリであるこの構成の利点は、追加のデータを受信した場合に、メモリを再び割り当てる問題が回避されることである。これは、書き込みポインタの指定するアドレスが読み出しポインタの指定するアドレスに到達しない限り、すなわちメモリが満杯にならない限り、このようなＦＩＦＯ方式のメモリにデータを無限に書き込むことが可能であるかのように処理されるためである。
【０００８】
ところが、リングバッファメモリのサイズは、正常動作では満杯にならないほど十分に大きくなくてはならないため、このリングメモリ用に大容量のメモリスペースを先験的に確保しておく必要がある。
【０００９】
この課題に対する部分的な解決策が、欧州特許第０９３３９２６号に記載されている。１つのリングバッファメモリが満杯の場合、および転送先がまだ読み出していないデータを格納しているセルにＤＭＡコントローラがデータを書き込む場合、つまり書き込みポインタがこのリングバッファメモリの読み出しポインタに到達したり追い越したりした場合、エラーが表示される。しかしこの解決策はほとんど場合満足のいくものではない。再び書き込まれたセルに相当する初期のデータは失われるからである。
【００１０】
その上この解決策では、１つの転送先がデータを読み出そうとしているのにこのデータに対応するリングバッファメモリが空であったり、格納しているデータが古い場合、つまり読み出しポインタがこのリングバッファメモリの書き込みポインタに到達したり追い越したりした場合も問題は解決されない。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】欧州特許第０９３３９２６号
【発明の概要】
【発明が解決しようとする課題】
【００１２】
したがって、上記の課題および制約を緩和することができるダイレクトメモリアクセスコントローラを提供することが望まれる。
【課題を解決するための手段】
【００１３】
よって本発明は、少なくとも１つのデータ転送元からこのデータの少なくとも１つの転送先へリングバッファメモリを介してデータを転送するためのダイレクトメモリアクセスコントローラであって、
−  前記少なくとも１つの転送元から受信したデータをリングバッファメモリに書き込むように設計した書き込み管理モジュールと、
−  第１の読み出しポインタおよび第２の書き込みポインタの格納手段であって、前記読み出しポインタおよび書き込みポインタが、データの読み込みおよび書き込みが可能なリングバッファメモリの基本セルを示す格納手段と、
−  リングバッファメモリに格納されたデータを読み出し、このデータを前記少なくとも１つの転送先に転送するように設計した読み出し管理モジュールと、
−  リングバッファメモリで読み出しおよび書き込みを、前記読み出しポインタおよび書き込みポインタが示す基本セルの位置に応じてロックするロック手段と、
−  第１および第２のポインタとは異なる読み出しまたは書き込みワークポインタを格納する格納手段と、
−  ワークポインタの更新手段であって、このワークポインタが実行した各読み出しまたは書き込みの後に、所定の更新回路に従って更新する更新手段と
を有するアクセスコントローラにおいて、
所定の更新回路がワークポインタをリングバッファメモリで前方または後方に変位させることと、読み出しワークポインタが、読み出しポインタから書き込みポインタの１つ前のアドレスまでと規定した読み出し用に確保したメモリスペースの外部を指定すると、または同じように、書き込みワークポインタが、書き込みポインタから読み出しポインタの１つ前のアドレスまでと規定した書き込み用の空きスペースの外部を指定すると、読み出しまたは書き込みワークポインタをロックするロック手段を備えること
とを特徴とするアクセスコントローラを目的とする。
【００１４】
したがって、リングバッファメモリは、転送元と転送先との間で読み出し／書き込みをロックする中間バッファの機能を果たす。この機能は、ダイレクトメモリアクセスコントローラが読み出しポインタおよび書き込みポインタを用いて管理し、このコントローラは、このリングバッファメモリへの書き込みおよび読み出しのアクセス権を有する。このようにすると、中央処理装置と同期する必要なく入力データフロー（転送元が生成するフロー）を出力データフロー（転送先が生成するフロー）と同期することが可能になる。
【００１５】
したがって、ダイレクトメモリアクセスコントローラが入力フローと出力フローとを同期する能力を失うことなく、リングバッファメモリへのデータの読み出しおよび書き込みにより多くの柔軟性を持たせることも可能になる。
【００１６】
選択的に、ワークポインタの更新手段は、更新用ファームウェアを実行する手段を有する。
【００１７】
ファームウェア（ｍｉｃｒｏｌｏｇｉｃｉｅｌ）とは、集積回路などのハードウェアコンポーネントに組み込まれた、さらに正確にはこのコンポーネントの揮発性または不揮発性メモリに組み込まれたソフトウェアのことである。この用語は、以下の説明文では英語の「ｆｉｒｍｗａｒｅ」の翻訳として使用する。
【００１８】
同じく選択的に、所定の更新回路は、リングバッファメモリへのアドレスジャンプを少なくとも１つ含む。
【００１９】
したがって、ダイレクトメモリアクセスコントローラが読み出しおよび書き込みのトラッキングを管理するリングバッファメモリは、コントローラが単なるＦＩＦＯ方式のリストとして使用するものではない。少なくとも１つのアドレスジャンプを含む所定の回路に従って第３の書き込みポインタまたは読み出しポインタを更新するようにした所定のプログラムにより、純粋にインクリメントする回路とは逆に、転送元から受信してから転送先へ発信するまでの間にリングバッファメモリを介してデータシーケンスを変更することができる。
【００２０】
同じく選択的に、読み出しロック手段は、読み出しポインタを更新することによってこの読み出しポインタの指定するアドレスが書き込みポインタの指定するアドレスに到達したり追い越したりすると、リングバッファメモリへのデータの読み出しをすべてロックするように設計し、書き込みロック手段は、書き込みポインタを更新することによってこの書き込みポインタの指定するアドレスが読み出しポインタの指定するアドレスに到達したり追い越したりすると、リングバッファメモリへのデータの書き込みをすべてロックするように設計する。
【００２１】
同じく選択的に、第１の読み出しポインタは、データの書き込み用にメモリスペースを空ける読み出しポインタであり、ワークポインタは、読み出したデータを保存する読み出しポインタである。
【００２２】
同じく選択的に、ファームウェアは、第１の読み出しポインタおよび読み出しワークポインタのみを更新し、書き込みポインタは、リングバッファメモリでデータの書き込み演算を行うたびにアドレスジャンプすることなくインクリメントによって自動的に更新されるように設計する。
【００２３】
同じく選択的に、第２の書き込みポインタは、データの読み出し用にメモリスペースを確保する書き込みポインタであり、ワークポインタは書き込みポインタである。
【００２４】
同じく選択的に、ファームウェアは、第２の書き込みポインタおよび書き込みワークポインタのみを更新し、読み出しポインタは、リングバッファメモリでデータの読み出し演算を行うたびにアドレスジャンプすることなくインクリメントによって自動的に更新されるように設計する。
【００２５】
同じく選択的に、データ転送は複数の転送先に送るようになっているため、格納手段は転送先ごとに、第１の読み出しポインタとは異なる読み出しワークポインタを有し、コントローラは各転送先の読み出しワークポインタの更新手段を有し、ダイレクトメモリアクセスコントローラは、第１の読み出しポインタから書き込みポインタの１つ前のアドレスまでと規定した読み出し用に確保したメモリスペースの外部を読み出しワークポインタが指定すると、読み出しワークポインタをロックするロック手段を有する。
【００２６】
同じく選択的に、データ転送は複数の転送先に送るようになっているため、格納手段は転送先ごとに、読み出しワークポインタに対応する第１の読み出しポインタを有し、ダイレクトアクセスコントローラは、対象とする読み出しワークポインタに対応する第１の読み出しポインタから書き込みポインタの１つ前のアドレスまでと規定した読み出し用に確保したメモリスペースの外部を読み出しワークポインタが指定すると、読み出しワークポインタをロックするロック手段を有する。
【００２７】
同じく選択的に、データ転送は複数の転送元から送られるようになっているため、格納手段は転送元ごとに、第２の書き込みポインタとは異なる書き込みワークポインタを有し、第２の読み出しポインタから第１の読み出しポインタの１つ前のアドレスまでと規定した書き込み用に空いているメモリスペースの外部を書き込みワークポインタが指定すると、この書き込みワークポインタをロックするロック手段を備える。
【００２８】
同じく選択的に、データ転送は複数の転送元から送られるようになっているため、格納手段は転送元ごとに、書き込みワークポインタに対応する第２の書き込みポインタを有し、ダイレクトアクセスコントローラは、対象とする書き込みワークポインタに対応する第２の書き込みポインタから第１の読み出しポインタの１つ前のアドレスまでと規定した書き込み用に空いているメモリスペースの外部を書き込みワークポインタが指定すると、各書き込みワークポインタをロックするロック手段を有する。
【００２９】
同じく選択的に、格納手段は、第２の書き込みポインタとは異なる書き込みワークポインタを有するとともに、第１の読み出しポインタとは異なる読み出しワークポインタも有する。
【００３０】
同じく選択的に、所定の更新回路は、リングバッファメモリでワークポインタを前方および後方へ変位させることを含む。
【００３１】
本発明はまた、少なくとも１つのデータ転送元からこのデータの少なくとも１つの転送先へ、本発明によるダイレクトメモリアクセスコントローラを用いてデータを転送する方法であって、転送元から受信した各データをコントローラによってリングバッファメモリへ発信し、転送先へ転送する各データをコントローラによってリングバッファメモリに読み出し、読み出しポインタおよび書き込みポインタが示す基本セルの相対位置に応じて、リングバッファメモリへの読み出しをコントローラによってロックするステップと、リングバッファメモリへの書き込みをコントローラによってロックするステップとを有する方法がさらに、
−  リングバッファメモリでワークポインタを前方および後方に変位させるステップと、
−  読み出しポインタから書き込みポインタの１つ前のアドレスまでと規定した読み出し用に確保したメモリスペースの外部を読み出しワークポインタが指定すると、またはこれと同様に、書き込みポインタから読み出しポインタの１つ前のアドレスまでと規定した書き込み用に空いているメモリスペースの外部を書き込みワークポインタが指定すると、読み出しまたは書き込みワークポインタをロックするステップと
を有することを特徴とする方法も目的とする。
【００３２】
最後に、本発明はまた、通信ネットワークからダウンロード可能なコンピュータプログラムおよび／またはコンピュータで再生可能な媒体に記録したコンピュータプログラムおよび／またはダイレクトメモリアクセスコントローラで実行可能なコンピュータプログラムであって、前記プログラムをダイレクトメモリアクセスコントローラで実行した場合に、上記のように定義したデータ転送方法のステップを実行するためのプログラムコードの命令を含むコンピュータプログラムも目的とする。
【００３３】
本発明は、添付の図を参照しながら例のみを目的として挙げた以下の説明文を読めばよりよく理解できるであろう。
【図面の簡単な説明】
【００３４】
【図１】本発明の第１の実施形態によるダイレクトメモリアクセスコントローラの全体構造の概略図である。
【図２】図１のダイレクトメモリアクセスコントローラを有する、マイクロプロセッサに搭載した集積回路の全体構造の概略図である。
【図３Ａ】図１のダイレクトメモリアクセスコントローラが管理するリングバッファメモリの構造の概略図である。
【図３Ｂ】図１のダイレクトメモリアクセスコントローラが管理するリングバッファメモリの構造の概略図である。
【図４】図１のアクセスコントローラが実施する本発明の一実施形態による、データ転送方法の一連のステップを示すフローチャートである。
【図５】本発明の第２の実施形態によるダイレクトメモリアクセスコントローラの全体構造の概略図である。
【図６】転送先をロックする状況で、図５のダイレクトメモリアクセスコントローラの有利な動作を示す概略図である。
【図７】図５のダイレクトメモリアクセスコントローラが管理するリングバッファメモリの構造の概略図である。
【図８】図５のダイレクトメモリアクセスコントローラが実施するデータ転送方法の一連のステップを示すフローチャートである。
【発明を実施するための形態】
【００３５】
図１に示すダイレクトメモリアクセスコントローラまたはＤＭＡコントローラ１０は、少なくとも１つのデータ転送元１２からこのデータの少なくとも１つの転送先１４へリングバッファメモリ１６を介してデータを転送する機能を持ち、リングバッファメモリは、一連のメモリの基本セルを所定数有する。
【００３６】
ＤＭＡコントローラ１０は、データの書き込みおよび読み出しアクセスを命令するモジュールであって、ＤＭＡコントローラ１０とリングバッファメモリ１６を搭載する格納媒体との間のインターフェースとなるモジュール１８を介して、リングバッファメモリ１６の基本セルへの書き込みおよび読み出しにアクセスすることができる。一実施変形例では、符号２０を付したＤＭＡコントローラは、リングバッファメモリ１６を搭載する格納媒体、および書き込みおよび読み出しアクセスを命令するモジュール１８を備えていることがわかる。実際ＤＭＡコントローラは、例えばＣＭＯＳ型集積回路などの自律型チップに基づくシステム形態をとることができる。
【００３７】
非限定的な実施例として、検討可能ないわゆるＮｏＣ（英語の「Ｎｅｔｗｏｒｋｏｎ  Ｃｈｉｐ」）方式、つまりネットワーク・オン・チップのアーキテクチャによれば、ＤＭＡコントローラ１０または２０は、パケット通信ネットワークの接続を介して互いに通信する基本要素で構成するものと考える。
【００３８】
転送元１２から転送先１４へのデータ転送を行うこのアーキテクチャによれば、ＤＭＡコントローラ１０または２０は、以下の素子：
−  転送元１２から転送されるデータを受信する接続２２
−  コントローラ１０または２０がリングバッファメモリ１６でのデータの書き込みを管理するモジュールであって、このモジュールは接続２２から受信するデータによって作動するモジュール２４
−  書き込みおよび読み出しアクセスを命令するモジュール１８を介して、メモリの基本セルにデータを書き込むためにリングバッファメモリ１６へデータを発信する接続２６
−  書き込みおよび読み出しアクセスを命令するモジュール１８を介して、メモリの基本セルにデータを読み出すためにリングバッファメモリ１６から送られるデータを受信する接続２８
−  コントローラ１０または２０がリングバッファメモリ１６でのデータの読み出しを管理するモジュールであって、接続２８が供給するデータを受信することができるモジュール３０
−  読み出したデータを転送先１４へ発信する接続３２
を有する。
【００３９】
これらの素子により、ＤＭＡコントローラ１０または２０は転送元１２から受信した各データをリングバッファメモリ１６へ発信し、転送先１４に転送するための各データは次に、ＤＭＡコントローラ１０または２０がリングバッファメモリ１６に読み出される。このようにリングバッファメモリ１６は、転送元１２と転送先１４との間で中間バッファの機能を果たす。
【００４０】
選択的に、データを受信する接続２２は、ＦＩＦＯ方式の入力バッファメモリ３４を有し、これによって例えばリングバッファメモリ１６が満杯であるために書き込みがロックされても、転送元１２から受信したデータを一時的に格納することができる。
【００４１】
同じく選択的に、読み出したデータを発信する接続３２は、ＦＩＦＯ方式の出力バッファメモリ３６を有し、これによって例えば転送先１４がまだ受信態勢になっていなかったり、出力ネットワークが一時的に飽和していたりしても、読み出したデータを一時的にリングバッファメモリ１６に格納することができる。
【００４２】
ＤＭＡコントローラに入るデータフローと、ＤＭＡコントローラから出るデータフローとを同期するため、ＤＭＡコントローラはさらに、リングバッファメモリ１６のディスクリプタを格納する格納手段３８を有する。
【００４３】
このディスクリプタは、格納媒体にあるリングバッファメモリ１６のベースアドレスを指定する少なくとも１つのベースポインタＰＢと、格納媒体にあるリングバッファメモリ１６の先頭アドレスを指定する先頭ポインタＰＳと、ＤＭＡコントローラ１０または２０が受信する次のデータを書き込むことができるリングバッファメモリ１６の基本セルのアドレスを指定する書き込みポインタＰＥと、次のデータを読み出して転送先に転送することができるリングバッファメモリ１６の基本セルのアドレスを指定する読み出しポインタＰＬとを有する。
【００４４】
バッファメモリ１６は、サイズがポインタＰＢおよびＰＳの指し示したベースアドレスから先頭アドレスまでの基本セル数によって決まる循環型メモリであることから、書き込みポインタＰＥおよび読み出しポインタＰＬが指定することのできるこのメモリの基本セルはそれぞれ、ベースアドレスから先頭アドレスまでのアドレスで識別する。
【００４５】
ベースポインタＰＢおよび先頭ポインタＰＳは事前に決定し、常に一定となるようになっているが、書き込みポインタＰＥおよび読み出しポンタＰＬは変化し、例えばリングバッファメモリで書き込み演算および読み出し演算を行ってからベースアドレスから先頭アドレスに向かって基本セルをインクリメトすることによって更新するようにする。
【００４６】
前述したように、このバッファメモリ１６の循環は、書き込みポインタまたは読み出しポインタがメモリの先頭アドレスに到達すると、このポインタを基本セル１つ分インクリメントすることによってこのポインタがメモリのベースアドレスを指定するという事実と関係している。
【００４７】
その結果、ＤＭＡコントローラ１０または２０が読み出して転送先１４に転送するのを待つ間にリングバッファメモリ１６に一時的に格納したデータは、読み出しポインタＰＬのアドレスと書き込みポインタＰＥのアドレスの１つ前のアドレスとの間で、ベースアドレスから先頭アドレスに向かう方向に位置している。逆に、書き込みポインタＰＥのアドレスと読み出しポインタＰＬのアドレスの１つ前のアドレスとの間で、先頭アドレスからベースアドレスに向かい方向でリングバッファメモリにあるメモリスペースは、書き込み用の空きスペースである。ディスクリプタＰＢ、ＰＳ、ＰＥおよびＰＬに対応するリングバッファメモリ１６のこの構造を図３Ａおよび３Ｂに示しており、これについては後述する。
【００４８】
この考えに基づき、データ書き込み管理モジュール２４は、とりわけ書き込みポインタＰＥおよび読み出しポインタＰＬの値に応じて、リングバッファメモリ１６にデータを書き込んだり、逆にこの書き込みをロックしたりするように設計する。この管理モジュールはまた、書き込みポインタＰＥを更新するようにも設計し、これには、シーケンサを用いて基本セル１つ分をインクリメントして自動的に、あるいは例えばバッファメモリ１６と同じ格納媒体に格納したファームウェア４０を実行することによる所定の方法で行う。さらに正確には、本発明の単純な実施形態では、リングバッファメモリ１６に書き込むデータを書き込みポインタＰＥが示すアドレスに書き込む必要がある。書き込み管理モジュール２４が事前に書き込みポインタＰＥを更新することにより、この書き込みポインタの指定するアドレスが読み出しポインタＰＬの指定するアドレスに到達したり追い越したりする場合（メモリが満杯になる）は、書き込みをロックしなければならない。
【００４９】
この同じ考えに基づき、データ読み出し管理モジュール３０は、とりわけ書き込みポインタＰＥおよび読み出しポインタＰＬの値に応じて、リングバッファメモリ１６でデータを読み出したり、逆にこの読み出しをロックしたりするように設計する。この管理モジュールはまた、読み出しポインタＰＬを更新するようにも設計し、これには、シーケンサを用いて基本セル１つ分をインクリメントして自動的に、あるいは例えばバッファメモリ１６と同じ格納媒体に格納したファームウェア４０を実行することによる所定の方法で行う。さらに正確には、本発明の単純な実施形態では、リングバッファメモリ１６に読み出すデータを読み出しポインタＰＬが示すアドレスに読み出す必要がある。読み出し管理モジュール３０が事前に読み出しポインタＰＬを更新することにより、この読み出しポインタの指定するアドレスが書き込みポインタＰＥの指定するアドレスに到達したり追い越したりする場合（メモリが空になる）は、読み出しをロックしなければならない。
【００５０】
具体的には、リングバッファメモリ１６への読み出しおよび書き込みのロックおよびロック解除が上記のとおりに動作するために、書き込みポインタＰＥの更新後に毎回書き込み管理モジュール２４を、
−  書き込みポインタＰＥが読み出しポインタＰＬに到達すると（メモリが満杯であることを示すと）、リングバッファメモリ１６へのデータの書き込みをすべてロックし、
−  読み出しがロックされ、書き込みポインタＰＥが再び読み出しポインタＰＬを追い越すと、リングバッファメモリ１６へのデータの読み出しのロックを解除する
ようにプログラムすることができる。
【００５１】
同じく、読み出しポインタＰＬの更新後に毎回読み出し管理モジュール３０を、
−  読み出しポインタＰＬが書き込みポインタＰＥに到達すると（メモリが空であることを示すと）、リングバッファメモリ１６へのデータの読み出しをすべてロックし、
−  書き込みがロックされ、読み出しポインタＰＬが再び書き込みポインタＰＥを追い越すと、リングバッファメモリ１６へのデータの書き込みのロックを解除する
ようにプログラムすることができる。
【００５２】
このようにして書き込み管理モジュール２４は、メモリ１６が満杯のときに書き込みをロックし、空のメモリが再び満杯になると読み出しのロックを解除する機能を果たす。読み出し管理モジュール３０は、メモリ１６が空のときに読み出しをロックし、満杯のメモリ１６が再び空になると書き込みのロックを解除する機能を果たす。
【００５３】
書き込み管理モジュール２４および読み出し管理モジュール３０に関する上記の動作は、読み出しポインタＰＬおよび書き込みポインタＰＥを用いてリングバッファメモリ１６で書き込みロック手段および読み出しロック手段を実施する一例にすぎず、読み出しポインタＰＬおよび書き込みポインタＰＥの値に応じてリングバッファメモリ１６を読み出しロックおよび書き込みロックの状態にするために、これ以外の実施例または変形例を検討してもよいことは当業者には明らかであろう。
【００５４】
これらの特徴により、ＤＭＡコントローラ１０または２０は、転送元１２から送られるデータの入力フローと転送先１４へ送る出力フローとを同期することができる。
【００５５】
その結果、図２に示した利点が得られる。この図では、集積回路５０はマイクロプロセッサ５２と、このマイクロプロセッサ５２が処理または使用したデータを一時的に格納するローカルメモリなどのデータ転送元１２、何らかの周辺機器または機能演算子などの転送先１４、およびリングバッファメモリ１６を備える実施変形例に適したＤＭＡコントローラ２０とを有する。これらの素子５２、１２、１４および２０はすべて、従来のデータ転送バス５４で互いに接続されている。
【００５６】
マイクロプロセッサ５２およびＤＭＡコントローラ２０が正常に動作した場合、マイクロプロセッサはデータを転送元１２の例えばバッファメモリに転送する（ステップＢ）が、これは転送元１２と転送先１４との間でＤＭＡコントローラが行う転送（ステップＣ）とは無関係に行われる。実際これは、書き込みおよび読み出しをロックするリングバッファメモリ１６があることにより、前述したようなＤＭＡコントローラ２０が果たすことができる同期機能によって可能になったことである。
【００５７】
逆に、ＤＭＡコントローラ２０がこの機能を果たせなかった場合、要求（ステップＡ）および肯定応答（ステップＤ）の従来のプロトコルをマイクロプロセッサ５２とＤＭＡコントローラ２０との間で実施する必要があり、このプロトコルは、マイクロプロセッサ５２と転送元１２との間のデータブロックごとの書き込みに対応している。転送元１２と転送先１４との間のデータ転送は、一連のステップ：
−  マイクロプロセッサ５２がデータブロックを転送する要求をＤＭＡコントローラに伝達する伝達ステップＡ
−  マイクロプロセッサ５２のデータブロックを、このために転送元１２に規定したバッファメモリに伝達する伝達ステップＢ
−  ＤＭＡコントローラが転送元１２から転送先１４へデータブロックを転送する転送ステップＣ
−  新たなデータブロックを送ることができるようにＤＭＡコントローラが肯定応答をマイクロプロセッサ５２へ伝達する伝達ステップＤ
によって実行する。
【００５８】
したがって、送信した各データに対して同期するようになっている前述したようなＤＭＡコントローラ２０によって、データ転送のステップを簡易化することができ、とりわけステップＡおよびＤをなくすことができることは明らかである。
【００５９】
この同期機能と組み合わせて、本発明の一実施形態では、読み出し演算または書き込み演算に柔軟性を加えるために所定の更新回路に従って、リングバッファメモリ１６に対応する読み出しポインタおよび書き込みポインタの少なくとも１つを更新するように設計したファームウェア（例えばファームウェア４０）を備えることができる。この場合、ＤＭＡコントローラ１０または２０の同期能力を失わないように、新たな読み出しポインタまたは書き込みポインタ、すなわち図３Ａおよび３Ｂに符号ＰＴを付したワークポインタを規定する必要がある。このワークポインタは、前述の書き込みポインタＰＥおよび読み出しポインタＰＬとは別のものである。前述のポインタと同じく、このワークポインタは格納手段３８に格納する。ワークポインタは変化し、ワークポインタが行う読み出し演算または書き込み演算後に毎回ファームウェア４０によって更新するようにする。
【００６０】
特に、ファームウェア４０を、ワークポインタＰＴの更新回路がリングバッファメモリ１６に少なくとも１つのアドレスジャンプを含むように規定することができる。この新たなポインタＰＴ、およびそのファームウェアであって、図３Ａに示したように前方および後方へアドレスジャンプすることによる変位などを可能にするファームウェア４０をリングバッファメモリ１６に導入することにより、ＤＭＡコントローラ１０または２０が読み出しおよび書き込みのトラッキングを管理するこのリングバッファメモリ１６は、単なるＦＩＦＯ方式のリストとして使用されるものではない。リングバッファメモリによってＤＭＡコントローラ１０または２０は、転送するデータシーケンスを転送元１２と転送先１４との間で自ら再び並び替えることができる。
【００６１】
好適な一実施変形例では、ワークポインタＰＴは読み出しポインタである。
【００６２】
この変形例では、第１の読み出しポインタＰＬは、データの書き込み用にメモリスペースを空ける読み出しポインタである。つまり、この読み出しポインタを更新するたびに、この第１の読み出しポインタＰＬが指定した旧アドレスのセルから新アドレスのセルの１つ前のセルまでのメモリスペースは、書き込み用に自動的に空けられる。これは前述したように、リングバッファメモリ１６の書き込みポインタＰＥのアドレスと読み出しポインタＰＬのアドレスの１つ前のアドレスとの間で、ベースアドレスから先頭アドレスに向かう方向にあるメモリスペースが、原則として書き込み用の空きスペースとみなされるために起こることである。
【００６３】
一方ワークポインタＰＴは、読み出したデータを保存する読み出しポインタである。つまり、リングバッファメモリ１６にデータを読み出して転送先１４に転送する必要があるとき、このデータはワークポインタＰＴが示したアドレスで読み出されるが、この読み出しの後にワークポインタＰＴを更新しても、これに該当する書き込み用の基本セルは空にならない。実際に、読み出しによるワークポインタＰＴの変位は、必ずしもインクリメントされない。この変位は、ファームウェア４０が任意の順序であらかじめ自由に決定し、好ましくは第１の読み出しポインタＰＬと書き込みポインタＰＥとの間で変位する。適用例によれば、ワークポインタＰＴが最初に読み出したデータをとりわけ再び読み出すことができ、データはリングバッファメモリ１６に格納した順序とは異なる順序で読み出すことができる。したがって、メモリスペースを空けることができるのは第１の読み出しポインタを更新する１回のみである。
【００６４】
例えば、ＭＰＥＧ規格２または４（英語の「Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔ  Ｇｒｏｕｐ」）に適したビデオのデータフローを転送する適用例では、リングバッファメモリ１６に格納したビデオ係数の８行に対して、ファームウェア４０は、マクロブロック８×８のワークポインタＰＴをマクロブロック８×８に、各マクロブロックで所定の順序に従って変位させるための命令を備えることができる。この８行のマクロブロックすべてをワークポインタＰＴが読み出すと、ビデオ係数の８行は第１の読み出しポインタＰＬをマイクロプログラムして更新することによってバッファメモリで空となる。
【００６５】
したがって、ワークポインタＰＴが読み出しポインタであるこの実施変形例では、ファームウェア４０は、２つの読み出しポインタを更新するために読み出し管理モジュール３０が実行する、
−  ワークポインタＰＴを対象とする適用例に従って、前方および／または後方へのアドレスジャンプを含むことができる命令と、
−  アドレスジャンプを含むことができるが、前方のみに、ワークポインタＰＴおよび第１の読み出しポインタＰＬに対してプログラムした変位に応じたアドレスジャンプを含むことが出来る命令と
を有することがわかる。
【００６６】
逆に、ファームウェア４０は、書き込みポインタＰＥを更新するための命令を備えておらず、書き込みポインタは、例えばリングバッファメモリ１６でデータの書き込み演算を行うたびに、アドレスジャンプなしにインクリメント方式でシーケンサによって更新する。
【００６７】
また、図３Ａに示すように、ワークポインタＰＴの変位は、実際に読み出すデータを持っているリングバッファメモリ１６の領域をこのワークポインタが指定するようにプログラムする必要があることがわかる。ワークポインタが、図３Ｂに示すように、更新後にこの領域の外部を指定した場合、目的とする適用例に応じてエラーメッセージを発生させるか、書き込みポインタＰＥが追いつくまでワークポインタをこの位置に固定することができる。
【００６８】
前例と対称的な一実施変形例では、ワークポインタＰＴは書き込みポインタであってもよい。
【００６９】
この第２の変形例では、書き込みポインタＰＥは、リングバッファメモリ１６にデータを書き込むためにメモリスペースを確保する書き込みポインタである。つまり、書き込みポインタを更新するたびに、旧アドレスのセルからこの書き込みポインタＰＥが指定する新アドレスのセルの１つ前のセルまでのメモリスペースは、読み出し用に自動的に確保される。
【００７０】
一方ワークポインタＰＴは、ポインタＰＥが確保したメモリスペースに所定の任意の順序でデータを書き込むのに効果的な書き込みポインタである。つまり、リングバッファメモリ１６にデータを書き込む必要があるとき、このデータはワークポインタＰＴが示すアドレスに書き込まれ、その更新は必ずインクリメント回路に従うわけではない。ワークポインタの変位は、確保したメモリスペースに任意の順序でファームウェア４０が自由に事前に決定する。
【００７１】
したがって、ワークポインタＰＴが書き込みポインタであるこの第２の実施変形例では、ファームウェア４０は、２つの書き込みポインタを更新するために書き込み管理モジュール２４が実行する、
−  ワークポインタＰＴを対象とする適用例に従って、前方および／または後方へのアドレスジャンプを含むことができる命令と、
−  アドレスジャンプを含むことができるが、前方のみに、ワークポインタＰＴおよび書き込みポインタＰＥに対してプログラムした変位に応じたアドレスジャンプを含むことが出来る命令と
を有することがわかる。
【００７２】
逆に、ファームウェア４０は、読み出しポインタＰＬを更新するための命令を備えておらず、読み出しポインタは、例えばリングバッファメモリ１６でデータの読み出し演算を行うたびに、アドレスジャンプなしにインクリメント方式でシーケンサによって更新する。
【００７３】
その上、変形例では、ダイレクトメモリアクセスコントローラは書き込みワークポインタと読み出しワークポインタとを同時に備えている。
【００７４】
そのためダイレクトメモリアクセスコントローラは、各ワークポインタに固有の所定の更新回路であって、特にアドレスジャンプによってリングバッファメモリでの前方および／または後方への変位を含むことができる更新回路に従って、書き込み実行後に毎回書き込みワークポインタを更新する更新手段を有するとともに、読み出し実行後に毎回読み出しワークポインタを更新する更新手段も有する。前述したように、読み出しポインタの変位は、読み出し用に確保したリングバッファメモリ領域（読み出しポインタＰＬから書き込みポインタＰＥの１つ前のアドレスまでと規定した領域）をこの読み出しポインタが指定するようにプログラムする必要がある。同じく、書き込みワークポインタの変位は、書き込み用に空いているメモリ領域（書き込みポインタＰＥから読み出しポインタＰＬの１つ前のアドレスまでと規定した領域）をこの書き込みワークポインタが指定するようにプログラムする必要がある。
【００７５】
次に、ＤＭＡコントローラ１０または２０が実施することができるデータ転送方法の例について、前述の第１の実施変形例の背景に沿って詳述すると、ワークポインタＰＴは、読み出したデータを保存する読み出しポインタである。この方法の一連のステップを図４に示す。
【００７６】
第１のステップ１００では、コントローラ１０または２０は、リングバッファメモリ１６にデータを読み出す、または書き込む命令を待っている状態である。
【００７７】
このステップ１００は、リングバッファメモリ１６にデータを書き込む命令に基づいて書き込みを開始するステップ１０２に続く。この書き込み開始ステップでは、書き込み管理モジュール２４が作動する。非限定的な実施例を挙げると、このモジュールは、リングバッファメモリ１６への書き込みがロックされているか否かを示す第１のディスクリプタの値を格納手段２８から引き出す。
【００７８】
次にテストステップ１０４では、この第１のディスクリプタの値に従い、対象とするデータの書き込みを続けるか否かを判断する。第１のディスクリプタが書き込みがロックされていることを示した場合、再びステップ１００に進み、そうでなければステップ１０６に進む。
【００７９】
ステップ１０６では、書き込み管理モジュール２４は、書き込みポインタＰＥが指定するアドレスを格納手段２８から引き出す。そしてこのモジュールは、これに該当する基本セルに対象とするデータの書き込みを実行する。
【００８０】
その後、更新ステップ１０８では、書き込みポインタＰＥが指定したアドレスを、リングバッファメモリ１６で基本セル１つ分インクリメントする。
【００８１】
最後に、ステップ１１０では、書き込み管理モジュール２４は、第１の読み出しポインタＰＬが指定するアドレスを格納手段２８から引き出したのち、
−  ステップ１０８での更新後に、書き込みポインタＰＥが指定したアドレスが第１の読み出しポインタＰＬが指定したアドレスに到達すると（メモリ１６が満杯であることを示すと）、第１のディスクリプタが書き込みのロックを示すようにこのディスクリプタを修正する状態
−  ステップ１０８での更新後に、第２のディスクリプタが読み出しロックを示しているが、書き込みポインタＰＥが指定したアドレスが第１の読み出しポインタＰＬが指定したアドレスと異なる場合、第２のディスクリプタが読み出しの許可を示すようにこのディスクリプタを修正する状態
である場合に、書き込みをロックする第１のディスクリプタの値および読み出しをロックする第２のディスクリプタの値を更新する場合がある。
【００８２】
ステップ１１０のあとはステップ１００に戻る。
【００８３】
ステップ１００は、リングバッファメモリ１６にデータを読み出す命令に基づいて読み出しを開始するステップ１１２にも続く。この読み出し開始ステップでは、読み出し管理モジュール３０が作動する。非限定的な実施例を挙げると、このモジュールは、リングバッファメモリ１６への読み出しがロックされているか否かを示す第２のディスクリプタの値を格納手段２８から引き出す。
【００８４】
次にテストステップ１１４では、読み出し管理モジュール３０は、転送先１４が対象のデータを受信する準備ができているか否かを判断する。このテストは、いくつかの方法で行うことができる。ＤＭＡコントローラ１０または２０が出力バッファ３６を有する場合、コントローラは、この出力バッファ３６が満杯になっていない限りデータ転送を実行することができると考えることができる。さもなければ、従来の通信プロトコルにより、所定フォーマットのメッセージでデータを受信する容量を転送先１４がＤＭＡコントローラ１０または２０に伝達するようにする。転送先１４へのデータ転送が不可能な場合は再びステップ１００に進み、可能な場合は別のテストステップ１１６に進む。
【００８５】
このテストステップ１１６では、第２のディスクリプタの値に従い、対象とするデータの読み出しを続けるか否かを判断する。第２のディスクリプタが読み出しがロックされていることを示した場合、再びステップ１００に進み、そうでなければ読み取りステップ１１８に進む。
【００８６】
このステップ１１８では、読み出し管理モジュール３０は、ワークポインタＰＴが指定するアドレスを格納手段２８から引き出す。そしてこのモジュールは、これに該当する基本セルに対象とするデータの読み出しを実行する。
【００８７】
その後、更新ステップ１２０では、ワークポインタＰＴが指定したアドレスを、１つまたは複数の基本セルの前方か後方に、ファームウェア４０の命令に応じて読み出し管理モジュール３０が更新する。これもファームウェア４０の命令によるものである場合、第１の読み出しポインタＰＬをこのステップでも１つまたは複数の基本セルの前方に更新することができる。
【００８８】
最後に、ステップ１２２では、読み出し管理モジュール３０は、場合によっては、
−  ステップ１２０での更新後に、第１の読み出しポインタＰＬが指定したアドレスが書き込みポインタＰＥの指定するアドレスに到達すると（メモリ１６が空であることを示すと）、第２のディスクリプタが読み出しロックを示すようにこのディスクリプタを修正する状態、
−  ステップ１２０の更新後に、第１のディスクリプタが書き込みロックを示しているが、第１の読み出しポインタＰＬが指定したアドレスが書き込みポインタＰＥの指定するアドレスと異なる場合、第１のディスクリプタが書き込み許可を示すようにこのディスクリプタを修正する状態
である場合に、書き込みをロックする第１のディスクリプタの値および読み出しをロックする第２のディスクリプタの値を更新する。
【００８９】
ステップ１２２のあとは、ステップ１００に戻る。
【００９０】
本発明の第２の実施形態によるダイレクトメモリアクセスコントローラを図５に示している。第１の実施形態と同じ素子には同じ符号を付している。この第２の実施形態では、ＤＭＡコントローラ１０は、データ転送元１２からこのデータの複数の転送先１４１，．．．，１４ｉ，．．．，１４ｎにバッファメモリ１６を介してデータを転送する機能を持つ。
【００９１】
本発明を実施するため、ＤＭＡコントローラ１０はバッファメモリ１０１６への書き込みにアクセスできる必要があり、オプションとして読み出しにアクセスできる必要がある。図５に示した例では、命令モジュール１８を介して、バッファメモリ１６の基本セルへの書き込みおよび読み出しにアクセスすることができる。一実施変形例では、符号２０を付したＤＭＡコントローラは、リングバッファメモリ１６を搭載する格納媒体、および書き込みおよび読み出しアクセスを命令するモジュール１８を備えていることがわかる。実際に、例えばＣＭＯＳ型集積回路などの自律型チップに基づくシステム形態をとることができる。
【００９２】
ＤＭＡコントローラ１０または２０は、転送元１２から受信した各データをバッファメモリ１６へ発信し、転送先１４１，．．．，１４ｉ，．．．，１４ｎのうちの１つに転送されるようになっている各データはその後、ＤＭＡコントローラ１０または２０によってバッファメモリ１６で読み出される。したがってバッファメモリ１６は、転送元１２と転送先１４１，．．．，１４ｉ，．．．，１４ｎとの間の中間バッファの機能を果たす。
【００９３】
図示していない本発明のもう一つの可能な実施形態では、ＤＭＡコントローラ１０がバッファメモリ１６を搭載せず、さらにこのコントローラ自体もバッファメモリ１６のデータの読み出しにアクセスできないときは、転送先１４１，．．．，１４ｉ，．．．，１４ｎがこの転送先に向けられたデータをバッファメモリ１６で直接読み出す。しかし、この場合、詳述していない従来の方法では、データがＤＭＡコントローラ１０によって転送されないとしても、このコントローラはいずれにしても転送先による読み出し開始のメカニズムを維持する。
【００９４】
この第２の実施形態では、格納手段３８は、第１の実施形態の単一の読み出しポインタの代わりに複数の読み出しポインタＰＬ１，．．．，ＰＬｉ，．．．，ＰＬｎを有し、各読み出しポインタが１つの転送先である１４１，．．．，１４ｉ，．．．，１４ｎにそれぞれ対応している。各読み出しポインタＰＬｉは、次のデータを読み出して転送先１４ｉに転送することができるリングバッファメモリ１６の基本セルのアドレスを指定する。
【００９５】
バッファメモリ１６は、サイズがポインタＰＢおよびＰＳの指し示したベースアドレスから先頭アドレスまでの基本セル数によって決まる循環型メモリであることから、書き込みポインタＰＥおよび読み出しポンタＰＬ１，．．．，ＰＬｉ，．．．，ＰＬｎが指定することのできるこのメモリの基本セルはそれぞれ、ベースアドレスから先頭アドレスまでのアドレスで識別する。
【００９６】
ベースポインタＰＢおよび先頭ポインタＰＳは事前に決定され、常に一定となるようになっているが、書き込みポインタＰＥおよび読み出しポンタＰＬ１，．．．，ＰＬｉ，．．．，ＰＬｎは変化する。実際に、両ポインタは、更新する方向を決定するアドレスジャンプの有無にかかわらずインクリメントすることによって更新することができる。
【００９７】
書き込みポインタＰＥは、さらに正確には、例えばリングバッファメモリへの書き込み演算に従ってベースアドレスから先頭アドレスに向かって基本セルからインクリメトすることによって、更新するようになっている。
【００９８】
逆に、読み出しポインタＰＬ１，．．．，ＰＬｉ，．．．，ＰＬｎは、ファームウェア４０１，．．．，４０ｉ，．．．，４０ｎを実行することによってそれぞれ更新する。この更新は、実際に該当する転送先１４ｉに転送することによってデータが格納されている基本セルを各読み出しポインタＰＬｉが指定するように事前に設定する。ファームウェア４０１，．．．，４０ｉ，．．．，４０ｎは、例えばリングバッファメモリ１６と同じ格納媒体に格納する。一般にファームウェアは、リングバッファメモリ１６で読み出し管理モジュールによって実行し、このモジュールは、ＤＭＡコントローラの内部または外部に設置する。図５の特殊な例では、ファームウェアはさらに正確には、ＤＭＡコントローラ１０または２０の読み出し管理モジュール３０によって実行する。
【００９９】
ＤＭＡコントローラ１０または２０に読み出されて転送先１４１，．．．，１４ｉ，．．．，１４ｎによって転送されるか、転送先１４１，．．．，１４ｉ，．．．，１４ｎによって直接転送されるのを待つ間、リングバッファメモリ１６に一時的に格納したデータは、更新する方向を考慮して書き込みポインタに対して最も後ろにある読み出しポインタＰＬｉのアドレスと、書き込みポインタＰＥのアドレスの１つ前のアドレスとの間で、ベースアドレスから先頭アドレスに向かう方向にある。逆に、リングバッファメモリの書き込みポインタＰＥのアドレスと、書き込みポインタに対して最も後ろにある読み出しポインタＰＬｉのアドレスの１つ前のアドレスとの間で、先頭アドレスからベースアドレスに向かう方向にあるメモリスペースは、書き込み用の空きスペースである。ディスクリプタＰＢ、ＰＳ、ＰＥおよびＰＬ１，．．．，ＰＬｉ，．．．，ＰＬｎに対応するリングバッファメモリ１６のこの構造は図７に示しており、これについては後述する。
【０１００】
図５のダイレクトメモリアクセスコントローラ１０または２０の有利な動作を図６に特殊で単純な適用例として示しているが、これに限定されるものではない。この適用例によれば、転送元１２は、転送先１４１に転送されるデータ（白点）と転送先１４２に転送されるデータ（黒点）とが交互になったデータシーケンスを供給する。
【０１０１】
書き込みポインタＰＥのアドレスごとにインクリメント式に更新することにより、これらのデータを転送元１２から供給されたシーケンスの順にリングバッファメモリ１６に格納する。
【０１０２】
転送先１４１に転送されるデータは、転送先１４１に対して読み出す次のデータの基本セルを常に指定する読み出しポインタＰＬ１を更新するファームウェア４０１を実行することによって、リングバッファメモリ１６で読み出される。したがって、目的とする適用例に対してこのファームウェア４０１が実施する更新回路は、転送先１４１に対して実行したデータの読み取りごとにアドレスジャンプして読み出しポインタＰＬ１をインクリメントし、転送先１４２に割り当てられたデータを読み出さないようにすることである。
【０１０３】
同じように、転送先１４２に転送予定のデータは、転送先１４２に対して読み出す次のデータの基本セルを常に指定する読み出しポインタＰＬ２を更新するファームウェア４０２を実行することによって、リングバッファメモリ１６で読み出される。目的とする適用例に対してこのファームウェア４０２が実施する更新回路も、転送先１４２に対して実行したデータの読み取りごとにアドレスジャンプして読み出しポインタＰＬ２をインクリメントし、転送先１４１に割り当てられたデータを読み出さないようにすることである。
【０１０４】
２つのファームウェア４０１および４０２は独立しているため、ＤＭＡコントローラ１０または２０によって平行して実行することができ、どちらか一方をロックしても、とりわけ該当する転送先が読み出しをロックするため、もう一方に影響を与えることはない。したがって、ＤＭＡコントローラが簡易かつ効率的に、複数の転送先へのデータ転送を管理することができることは明らかであり、１つの転送先のみが他の全データ転送をロックすることはできない。
【０１０５】
１つの転送先にロックされることなく転送するこの機能と組み合わせることによって、本発明の特殊な一実施形態では、ＤＭＡコントローラが入力フローと出力フローとを同期する機能も果たせるようにすることができる。
【０１０６】
この特殊な実施形態を実施するため、ＤＭＡコントローラは前述のように定義した読み出し管理モジュール３０を備えている必要がある。この場合、この読み出し管理モジュール３０を、
−  読み出しポインタの集合ＰＬ１，．．．，ＰＬｉ，．．．，ＰＬｎのなかから、所定の更新方向を考慮して書き込みポインタＰＥで示した基本セルに対して最も後ろにある基本セルを示すＰＬＳを付した読み出しポインタを選択し、
−  転送先のうちの任意の１つに対して行ったデータの読み出しに続いて、読み出しポインタＰＬ１，．．．，ＰＬｉ，．．．，ＰＬｎのうちの任意の１つを更新するたびに、この選択を実行する
ようにプログラムすることができる。
【０１０７】
この考えに基づき、データ書き込み管理モジュール２４は、とりわけ書き込みポインタＰＥと選択読み出しポインタＰＬＳとの相対値に応じて、リングバッファメモリ１６にデータ書き込みを許可したり書き込みをロックしたりするように設計する。この管理モジュールはまた、シーケンサを用いて基本セル１つ分をインクリメントして書き込みポインタＰＥを自動的に更新するようにも設計する。さらに正確には、本発明のこの特殊な実施形態の単純な変形例では、リングバッファメモリ１６に書き込むデータを書き込みポインタＰＥが示すアドレスに書き込む必要がある。書き込み管理モジュール２４が事前に書き込みポインタＰＥを更新することにより、この書き込みポインタの指定するアドレスが選択読み出しポインタＰＬＳの指定するアドレスに到達したり追い越したりする場合（メモリが満杯になる）は、書き込みをロックしなければならない。
【０１０８】
これと同じ考えに基づき、データ読み出し管理モジュール３０は、とりわけ書き込みポインタＰＥと選択読み出しポインタＰＬＳとの相対値に応じて、リングバッファメモリ１６にデータ読み出しを許可したり読み出しをロックしたりするように設計する。この管理モジュールはまた、各ファームウェア４０ｉを実行することによって各読み出しポインタＰＬｉを更新するようにも設計する。さらに正確には、本発明のこの特殊な実施形態の単純な変形例では、リングバッファメモリ１６に読み出して転送先１４ｉに送るデータを読み出しポインタＰＬｉが示すアドレスに読み出す必要がある。読み出し管理モジュール３０が事前に読み出しポインタＰＬｉを更新することにより、この選択読み出しポインタＰＬＳの指定するアドレスが書き込みポインタＰＥの指定するアドレスに到達したり追い越したりする場合（メモリが空になる）は、読み出しをロックしなければならない。
【０１０９】
具体的には、リングバッファメモリ１６への読み出しおよび書き込みのロックおよびロック解除が上記のとおりに動作するために、書き込みポインタＰＥの更新後に毎回書き込み管理モジュール２４を、
−  書き込みポインタＰＥが選択読み出しポインタＰＬＳに到到達すると（メモリが満杯であることを示すと）、リングバッファメモリ１６へのデータの書き込みをすべてロックし、
−  読み出しがロックされ、書き込みポインタＰＥが再び選択読み出しポインタＰＬＳを追い越すと、リングバッファメモリ１６へのデータの読み出しのロックを解除する
ようにプログラムすることができる。
【０１１０】
同じく、読み出しポインタＰＬｉの更新後に毎回読み出し管理モジュール３０を、
−  選択読み出しポインタＰＬＳが書き込みポインタＰＥに到到達すると（メモリが空であることを示すと）、リングバッファメモリ１６へのデータの読み出しをすべてロックし、
−  書き込みがロックされ、選択読み出しポインタＰＬＳが再び書き込みポインタＰＥを追い越すと、リングバッファメモリ１６へのデータの書き込みのロックを解除する
ようにプログラムすることができる。
【０１１１】
このようにして書き込み管理モジュール２４は、メモリ１６が満杯のときに書き込みをロックし、空のメモリが再び満杯になると読み出しのロックを解除する機能を果たす。読み出し管理モジュール３０は、メモリ１６が空のときに読み出しをロックし、満杯のメモリ１６が再び空になると書き込みのロックを解除する機能を果たす。
【０１１２】
書き込み管理モジュール２４および読み出し管理モジュール３０に関する上記の動作は、書き込みポインタＰＥおよび読み出しポインタＰＬ１，．．．，ＰＬｉ，．．．，ＰＬｎを用いてリングバッファメモリ１６で書き込みロック手段および読み出しロック手段を実施する一例にすぎず、書き込みポインタＰＥおよび読み出しポインタＰＬ１，．．．，ＰＬｉ，．．．，ＰＬｎの値に応じてリングバッファメモリ１６を読み出しロックおよび書き込みロックの状態にするために、これ以外の実施例または変形例を検討してもよいことは当業者には明らかであろう。
【０１１３】
これらの特徴により、ＤＭＡコントローラ１０または２０は、転送元１２から送られるデータの入力フローと転送先１４１，．．．，１４ｉ，．．．，１４ｎへ送る出力フローとを同期することができる。
【０１１４】
その結果、マイクロプロセッサと、例えばマイクロプロセッサが処理または使用したデータを一時的に格納するローカルメモリであるデータ転送元１２と、例えば周辺機器または任意の機能演算子である転送先１４１，．．．，１４ｉ，．．．，１４ｎと、リングバッファメモリ１６を含む実施変形例２０に適したＤＭＡコントローラとを備える集積回路では、マイクロプロセッサは、転送元１２と転送先１４１，．．．，１４ｉ，．．．，１４ｎとの間でＤＭＡコントローラが実行する転送とは関係なく、転送元１２にデータを転送することができる。
【０１１５】
このＤＭＡコントローラの同期機能と組み合わせて、第１の変形例によれば、各転送先１４ｉに対して新たな読み出しポインタである「ワークポインタ」と呼ぶものを規定する。各転送先１４ｉに対して、このワークポインタは前述のように定義した読み出しポインタＰＬｉとは異なるものである。ワークポインタは、読み出しポインタと同じように格納手段３８に格納される。ワークポインタは変化し、読み出し演算の実行後に毎回ファームウェア４０ｉによって更新されるようになっている。図７は、２つの転送先１４１および１４２を備える単純な実施形態を示し、２つのワークポインタＰＴ１およびＰＴ２は書き込みポインタＰＥおよび読み出しポインタＰＬ１およびＰＬ２に加わる。
【０１１６】
したがってファームウェア４０ｉは、転送元１２が転送するシーケンスの順序ではない順序で転送先１４ｉに送られるデータをワークポインタＰＴｉの更新回路が読み出すことができるように規定する。この新たなポインタＰＴｉを各転送先１４ｉに導入し、図７に示すようにリングバッファメモリ１６、さらに正確には転送先１４ｉに割り当てられたデータリストで前方および後方にアドレスジャンプすることによってこのワークポインタを更新する可能性が加わることにより、このデータリストは単なるＦＩＦＯ方式のリストとして使用されなくなる。ワークポインタＰＴ１．．．、ＰＴｉ，．．．，ＰＴｎによって、ＤＭＡコントローラ１０または２０は、転送元１２と転送先１４１，．．．，１４ｉ，．．．，１４ｎの任意の１つとの間で転送するデータシーケンスをそれぞれ自ら再び並び替えることができる。
【０１１７】
この第１の変形例では、選択読み出しポインタＰＬＳは、データを書き込むためにメモリスペースを空ける読み出しポインタである。つまり、読み出しポインタのうちの１つを選択読み出しポインタとして選択するたびに、選択読み出しポインタＰＬＳが指定した旧アドレスのセルから新アドレスのセルの１つ前のセルまでのメモリスペースは、書き込み用に自動的に空けられる。これは前述したように、リングバッファメモリ１６の書き込みポインタＰＥのアドレスと選択読み出しポインタＰＬＳのアドレスの１つ前のアドレスとの間で、ベースアドレスから先頭アドレスに向かう方向にあるメモリスペースが、原則として書き込み用に空いているスペースとみなされるために起こることである。
【０１１８】
図７の単純な例では、書き込みポインタＰＥに対して最も後ろにあるのは読み出しポインタＰＬ１である。したがってこの読み出しポインタが、読み出して転送先に転送するべきデータを格納しているメモリスペースの起点を規定するために選択され、基準点とみなされる。さらに正確には、符号Ａを付したメモリスペースは、まだ読み出されていない転送先１４１に割り当てたデータと、読み出された転送先１４２に割り当てたデータとがあるメモリ領域を指している。つまり、この領域はまだ書き込み用に空いてはいない。符号Ｂを付したメモリスペースは、まだ読み出されていない転送先１４１および１４２に割り当てたデータがあるメモリ領域を指している。つまりこの領域は書き込み用にはなおさら空いていない。
【０１１９】
一方各ワークポインタＰＴｉは、読み出したデータを保存する読み出しポインタである。つまり、リングバッファメモリ１６にデータを読み出して転送先１４ｉに転送する必要があると、このデータはワークポインタＰＴｉが示したアドレスで読み出されるが、この読み出しの後にワークポインタＰＴｉを更新しても、これに該当する書き込み用の基本セルは空にならない。実際に、読み出しによるワークポインタＰＴｉの変位は、転送先１４ｉに割り当てられたアドレスが昇順していくデータシーケンス通りにはならない。この変位は、ファームウェア４０ｉによって任意の順序であらかじめ自由に決定し、好ましくは第１の読み出しポインタＰＬｉと書き込みポインタＰＥとの間に決定する。適用例によれば、ワークポインタＰＴｉが最初に読み出したデータであれば、とりわけ再び読み出すことができ、データはリングバッファメモリ１６に格納した順序とは異なる順序で読み出すことができる。したがって、メモリスペースを空けることができるのは第１の読み出しポインタを更新する１回のみである。
【０１２０】
したがって、各ワークポインタＰＴｉが読み出しポインタであるこの実施変形例では、各ファームウェア４０ｉは、転送先１４ｉに対応する２つの読み出しポインタを更新するために読み出し管理モジュール３０が実行する、
−  ワークポインタＰＴｉを対象とする適用例に従って、前方および／または後方へのアドレスジャンプを含むことができる命令と、
−  アドレスジャンプを含むことができるが、前方のみに、転送先１４ｉに割り当てられたデータがあるアドレスに応じて、またワークポインタＰＴｉおよび第１の読み出しポインタＰＬｉに対してプログラムした変位に応じたアドレスジャンプを含むことが出来る命令と
を有することがわかる。
【０１２１】
逆に、どのファームウェア４０１，．．．，４０ｉ，．．．，４０ｎも、書き込みポインタＰＥを更新するための命令を備えておらず、書き込みポインタは、例えばリングバッファメモリ１６でデータの書き込み演算を行うたびに、アドレスジャンプなしにインクリメント方式でシーケンサによって更新される。
【０１２２】
また、図７に示したように、ワークポインタＰＴ１、ＰＴｉ、ＰＴｎの変位は、それぞれが転送先１４１，．．．，１４ｉ，．．．，１４ｎに読み出すデータを実際に持っているリングバッファメモリ１６の領域をこれらのワークポインタが指定するようにプログラムする必要があることもわかる。ワークポインタの１つが、更新後にこの領域の外部を指定した場合、目的とする適用例に応じてエラーメッセージを発生させるか、書き込みポインタＰＥが追いつくまでワークポインタをこの位置に固定することができる。本発明によれば、これによってロックしたワークポインタＰＴｉに相当するファームウェア４０の実行をロックするが、別の転送先１４ｊに対応する他のファームウェア４０ｊすべての実行をロックすることはない。
【０１２３】
前例と対称的な一実施変形例では、データシーケンスを再び並び替えるため、単一のワークポインタＰＴを書き込みポインタとして規定する。
【０１２４】
この第２の変形例では、書き込みポインタＰＥは、リングバッファメモリ１６にデータを書き込むためにメモリスペースを確保する書き込みポインタである。つまり、書き込みポインタを更新するたびに、旧アドレスのセルからこの書き込みポインタＰＥが指定する新アドレスのセルの１つ前のセルまでのメモリスペースは、読み出し用に自動的に確保される。一方ワークポインタＰＴは、ポインタＰＥが確保したメモリスペースに所定の任意の順序でデータを書き込むのに効果的な書き込みポインタである。
【０１２５】
しかし、この第２の変形例は第１の変形例ほど検討する有益性がない。なぜならこの第２の変形例では、リングバッファメモリ１６でデータの書き込み側にロックが起こる可能性があるからである。そのため、ＤＭＡコントローラによってデータを転送する適用例では、書き込み側である上流よりも、リングバッファメモリの読み出し側である下流でロックを管理する方が好ましい。
【０１２６】
次に、複数の転送先１４ｉに対するデータ転送方法の一例について、前述の第１の実施変形例の背景に沿って詳述すると、ＤＭＡコントローラは、リングバッファメモリ１６への書き込みおよび読み出しをロックするのを管理し、ワークポインタＰＴ１，．．．，ＰＴｉ，．．．，ＰΤｎを、読み出したデータを保存する読み出しポインタとして導入する。この方法の一連のステップを図８に示している。
【０１２７】
どのステップも図４のステップと同じであるが、ステップ１１２から１２２は各ワークポインタＰＴ１，．．．，ＰＴｉ，．．．，ΡΤｎに対して実施するため、符号は１１２ｉ．．．１２２ｉである。さらに正確には、各ファームウェア４０ｉは、ステップ１１２ｉから１２２ｉを実行するようになっており、複数のファームウェアを平行して実行することができ、一方をロックすることでもう一方がロックされることはないことがわかる。
【０１２８】
さらに、各転送先に対して読み出しポインタＰＬｉに対応するポインタＰＴｉを使用することは必須ではなく、単一の読み出しポインタＰＬを使用してもよい。この場合、１つのみの読み出しワークポインタを使用する場合と同様に、各読み出しワークポインタの変位は、読み出し用に確保したリングバッファメモリの領域（読み出しポインタＰＬから書き込みポインタＰＥの１つ前のアドレスと規定した領域）をワークポインタが指定するようにプログラムする必要がある。
【０１２９】
対称的に、複数の書き込みワークポインタＰＴｉをさまざまな転送元に使用する場合に、単一の書き込みポインタＰＥを使用してもよい。各書き込みワークポインタの変位は、書き込み用に空いているメモリ領域（書き込みポインタＰＥから読み出しポインタＰＬの１つ前のアドレスと規定した領域）をワークポインタが指定するようにプログラムする必要がある。
【０１３０】
前述したダイレクトメモリアクセスコントローラおよびそのデータ転送のための動作により、マイクロプロセッサとこれに接続するコントローラとの間で同期する必要がないだけでなく、とりわけ転送先が望むデータシーケンスが転送元から供給されるものと同じではない場合に、データ転送に柔軟性を加えることも可能になることが明らかになる。これは、例えばＭＰＥＧ規格の背景で、画像または映像データの処理および転送に適用する場合に有益な特性である。
【０１３１】
本発明は、ここで検討した実施形態に限定されるものではないこともわかるであろう。
【０１３２】
とりわけ前述の実施形態では、説明を簡潔にするために１つの転送元から１つの転送先へ転送する適用例を検討したが、本発明の原理はこれと同様に、複数の転送元および／または複数の転送先にも適用される。同じく、本発明によるダイレクトメモリアクセスコントローラは、複数のリングバッファメモリを管理できるため、これに対応する複数のディスクリプタ一式（ポインタ、ロックのディスクリプタなど）も管理することができる。
【０１３３】
さらに、ダイレクトメモリアクセスコントローラは前述したように、１つまたは複数の書き込みポインタＰＥおよび１つまたは複数の読み出しポインタＰＬを管理できるだけでなく、複数の読み出しおよび／または書き込みワークポインタＰＴも管理することができる。
【０１３４】
さらに一般的には、ここに開示した教示に照らし合わせて、上に記載した実施形態にさまざまな修正を加えてもよいことは当業者には明らかであろう。以下の特許請求の範囲では、使用した用語が請求項を本明細書で明らかにした実施形態に限定するものと解釈してはならず、本文の記載およびそこから予見される内容は、ここに開示した教示の実装に一般知識を応用することによって当業者が到達しうる範囲内であることから、請求項が範囲に含めると想定するあらゆる同等のものも含まれると解釈すべきである。
【図１】
2013504800.tif 000003
【図２】
2013504800.tif 000004
【図３Ａ】
2013504800.tif 000005
【図３Ｂ】
2013504800.tif 000006
【図４】
2013504800.tif 000007
【図５】
2013504800.tif 000008
【図６】
2013504800.tif 000009
【図７】
2013504800.tif 000010
【図８】
2013504800.tif 000011
【国際調査報告】
2013504800.tif 000012
2013504800.tif 000013
2013504800.tif 000014
2013504800.tif 000015
2013504800.tif 000016
2013504800.tif 000017