JP5769093B2 - ダイレクトメモリアクセスコントローラ、その方法およびコンピュータプログラム - Google Patents

ダイレクトメモリアクセスコントローラ、その方法およびコンピュータプログラム Download PDF

Info

Publication number
JP5769093B2
JP5769093B2 JP2012528431A JP2012528431A JP5769093B2 JP 5769093 B2 JP5769093 B2 JP 5769093B2 JP 2012528431 A JP2012528431 A JP 2012528431A JP 2012528431 A JP2012528431 A JP 2012528431A JP 5769093 B2 JP5769093 B2 JP 5769093B2
Authority
JP
Japan
Prior art keywords
pointer
read
write
data
work
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2012528431A
Other languages
English (en)
Other versions
JP2013504800A (ja
Inventor
ドゥランド,イヴ
ベルナルド,クリスティアン
Original Assignee
コミサリアト ア レネルジー アトミクー エ オ エネルジーズ アルタナティヴズ
コミサリアト ア レネルジー アトミクー エ オ エネルジーズ アルタナティヴズ
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from FR0956261A external-priority patent/FR2950173A1/fr
Priority claimed from FR0957034A external-priority patent/FR2951291B1/fr
Application filed by コミサリアト ア レネルジー アトミクー エ オ エネルジーズ アルタナティヴズ, コミサリアト ア レネルジー アトミクー エ オ エネルジーズ アルタナティヴズ filed Critical コミサリアト ア レネルジー アトミクー エ オ エネルジーズ アルタナティヴズ
Publication of JP2013504800A publication Critical patent/JP2013504800A/ja
Application granted granted Critical
Publication of JP5769093B2 publication Critical patent/JP5769093B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)
  • Bus Control (AREA)

Description

本発明は、ダイレクトメモリアクセスコントローラ、少なくとも1つのデータ転送元からこのデータの少なくとも1つの転送先にデータを転送するこのコントローラが実施する方法、およびそのコンピュータプログラムに関する。
DMA(英語の「Direct Memory Access」)コントローラと呼ばれるこのようなコントローラは一般に、例えば集積回路などの中央処理装置を備えるデータ処理装置に使用される。このコントローラは、中央処理装置が処理したり供給したりするデータを転送することができ、通信ポート、ハードディスクまたは任意のメモリなどの周辺機器から、またはこの周辺機器へ、この周辺機器と装置のローカルメモリなどとの間を、転送の開始および終了以外であれば中央処理装置を介在させることなく転送することができる。
DMAコントローラは、例えば周辺機器への度重なる急速なアクセスが、中央処理装置が実行する処理をほぼ停止させるほどではないとしても少なくとも減速させることがあるシステムでは、非常に有益である。DMAコントローラがあることにより、ローカルメモリとのデータ転送のやり取りをDMAコントローラに管理させ、中央処理装置が実行するアプリケーションソフトウェアの処理時間が最適化される。
本発明は、さらに詳細には、少なくとも1つのデータ転送元からこのデータの少なくとも1つの転送先へデータを転送するためのダイレクトメモリアクセスコントローラであって、一連のメモリの基本セルを所定数有するリングバッファメモリを介し、各基本セルをリングバッファメモリのベースアドレスから先頭アドレスまでのアドレスで識別するアクセスコントローラにおいて、転送元から受信したデータをリングバッファメモリに書き込むように設計した書き込み管理モジュールと、第1の読み出しポインタおよび第2の書き込みポインタを格納する格納手段とを備え、前記読み出しポインタおよび書き込みポインタが、データの読み込みおよび書き込みが可能なリングバッファメモリの基本セルを示すダイレクトメモリアクセスコントローラに適用される。
このようなDMAコントローラが、例えば欧州特許公報第0933926号に記載されている。このコントローラの役割は、転送先のデコーダが順次読み出したデータをバッファメモリに書き込むことであり、このデコーダはこのバッファメモリへの読み出しアクセス権を有する。DMAコントローラが該当するバッファメモリにデータを書き込む演算を行うたびに、各バッファメモリに対して規定した書き込みポインタがメモリの基本セルのアドレスをインクリメントされる。同じく、1つの転送先が該当するバッファメモリでデータを読み出す演算を行うたびに、各バッファメモリに対して規定した読み出しポインタがメモリの基本セルのアドレスをインクリメントされる。
各バッファメモリは、ベースアドレスから先頭アドレスまでのメモリスペースを占有している。バッファメモリの書き込みポインタおよび読み出しポインタは、このバッファメモリのベースアドレスと先頭アドレスとの間でインクリメントされ、先頭アドレスに到達したのちにインクリメントされることよってベースアドレスに戻る。そのため、このバッファメモリを「リングバッファメモリ」と呼ぶことができる。
FIFO(英語の「First In First Out」)方式のリングバッファメモリであるこの構成の利点は、追加のデータを受信した場合に、メモリを再び割り当てる問題が回避されることである。これは、書き込みポインタの指定するアドレスが読み出しポインタの指定するアドレスに到達しない限り、すなわちメモリが満杯にならない限り、このようなFIFO方式のメモリにデータを無限に書き込むことが可能であるかのように処理されるためである。
ところが、リングバッファメモリのサイズは、正常動作では満杯にならないほど十分に大きくなくてはならないため、このリングメモリ用に大容量のメモリスペースを先験的に確保しておく必要がある。
この課題に対する部分的な解決策が、欧州特許第0933926号に記載されている。1つのリングバッファメモリが満杯の場合、および転送先がまだ読み出していないデータを格納しているセルにDMAコントローラがデータを書き込む場合、つまり書き込みポインタがこのリングバッファメモリの読み出しポインタに到達したり追い越したりした場合、エラーが表示される。しかしこの解決策はほとんど場合満足のいくものではない。再び書き込まれたセルに相当する初期のデータは失われるからである。
その上この解決策では、1つの転送先がデータを読み出そうとしているのにこのデータに対応するリングバッファメモリが空であったり、格納しているデータが古い場合、つまり読み出しポインタがこのリングバッファメモリの書き込みポインタに到達したり追い越したりした場合も問題は解決されない。
欧州特許第0933926号
したがって、上記の課題および制約を緩和することができるダイレクトメモリアクセスコントローラを提供することが望まれる。
よって本発明は、少なくとも1つのデータ転送元からこのデータの少なくとも1つの転送先へリングバッファメモリを介してデータを転送するためのダイレクトメモリアクセスコントローラであって、
− 前記少なくとも1つの転送元から受信したデータをリングバッファメモリに書き込むように設計した書き込み管理モジュールと、
− 第1の読み出しポインタおよび第2の書き込みポインタの格納手段であって、前記読み出しポインタおよび書き込みポインタが、データの読み込みおよび書き込みが可能なリングバッファメモリの基本セルを示す格納手段と、
− リングバッファメモリに格納されたデータを読み出し、このデータを前記少なくとも1つの転送先に転送するように設計した読み出し管理モジュールと、
− リングバッファメモリで読み出しおよび書き込みを、前記読み出しポインタおよび書き込みポインタが示す基本セルの位置に応じてロックするロック手段と、
− 第1および第2のポインタとは異なる読み出しまたは書き込みワークポインタを格納する格納手段と、
− ワークポインタの更新手段であって、このワークポインタが実行した各読み出しまたは書き込みの後に、所定の更新回路に従って更新する更新手段と
を有するアクセスコントローラにおいて、
所定の更新回路がワークポインタをリングバッファメモリで前方または後方に変位させることと、読み出しワークポインタが、読み出しポインタから書き込みポインタの1つ前のアドレスまでと規定した読み出し用に確保したメモリスペースの外部を指定すると、または同じように、書き込みワークポインタが、書き込みポインタから読み出しポインタの1つ前のアドレスまでと規定した書き込み用の空きスペースの外部を指定すると、読み出しまたは書き込みワークポインタをロックするロック手段を備えること
とを特徴とするアクセスコントローラを目的とする。
したがって、リングバッファメモリは、転送元と転送先との間で読み出し/書き込みをロックする中間バッファの機能を果たす。この機能は、ダイレクトメモリアクセスコントローラが読み出しポインタおよび書き込みポインタを用いて管理し、このコントローラは、このリングバッファメモリへの書き込みおよび読み出しのアクセス権を有する。このようにすると、中央処理装置と同期する必要なく入力データフロー(転送元が生成するフロー)を出力データフロー(転送先が生成するフロー)と同期することが可能になる。
したがって、ダイレクトメモリアクセスコントローラが入力フローと出力フローとを同期する能力を失うことなく、リングバッファメモリへのデータの読み出しおよび書き込みにより多くの柔軟性を持たせることも可能になる。
選択的に、ワークポインタの更新手段は、更新用ファームウェアを実行する手段を有する。
ファームウェア(micrologiciel)とは、集積回路などのハードウェアコンポーネントに組み込まれた、さらに正確にはこのコンポーネントの揮発性または不揮発性メモリに組み込まれたソフトウェアのことである。この用語は、以下の説明文では英語の「firmware」の翻訳として使用する。
同じく選択的に、所定の更新回路は、リングバッファメモリへのアドレスジャンプを少なくとも1つ含む。
したがって、ダイレクトメモリアクセスコントローラが読み出しおよび書き込みのトラッキングを管理するリングバッファメモリは、コントローラが単なるFIFO方式のリストとして使用するものではない。少なくとも1つのアドレスジャンプを含む所定の回路に従って第3の書き込みポインタまたは読み出しポインタを更新するようにした所定のプログラムにより、純粋にインクリメントする回路とは逆に、転送元から受信してから転送先へ発信するまでの間にリングバッファメモリを介してデータシーケンスを変更することができる。
同じく選択的に、読み出しロック手段は、読み出しポインタを更新することによってこの読み出しポインタの指定するアドレスが書き込みポインタの指定するアドレスに到達したり追い越したりすると、リングバッファメモリへのデータの読み出しをすべてロックするように設計し、書き込みロック手段は、書き込みポインタを更新することによってこの書き込みポインタの指定するアドレスが読み出しポインタの指定するアドレスに到達したり追い越したりすると、リングバッファメモリへのデータの書き込みをすべてロックするように設計する。
同じく選択的に、第1の読み出しポインタは、データの書き込み用にメモリスペースを空ける読み出しポインタであり、ワークポインタは、読み出したデータを保存する読み出しポインタである。
同じく選択的に、ファームウェアは、第1の読み出しポインタおよび読み出しワークポインタのみを更新し、書き込みポインタは、リングバッファメモリでデータの書き込み演算を行うたびにアドレスジャンプすることなくインクリメントによって自動的に更新されるように設計する。
同じく選択的に、第2の書き込みポインタは、データの読み出し用にメモリスペースを確保する書き込みポインタであり、ワークポインタは書き込みポインタである。
同じく選択的に、ファームウェアは、第2の書き込みポインタおよび書き込みワークポインタのみを更新し、読み出しポインタは、リングバッファメモリでデータの読み出し演算を行うたびにアドレスジャンプすることなくインクリメントによって自動的に更新されるように設計する。
同じく選択的に、データ転送は複数の転送先に送るようになっているため、格納手段は転送先ごとに、第1の読み出しポインタとは異なる読み出しワークポインタを有し、コントローラは各転送先の読み出しワークポインタの更新手段を有し、ダイレクトメモリアクセスコントローラは、第1の読み出しポインタから書き込みポインタの1つ前のアドレスまでと規定した読み出し用に確保したメモリスペースの外部を読み出しワークポインタが指定すると、読み出しワークポインタをロックするロック手段を有する。
同じく選択的に、データ転送は複数の転送先に送るようになっているため、格納手段は転送先ごとに、読み出しワークポインタに対応する第1の読み出しポインタを有し、ダイレクトアクセスコントローラは、対象とする読み出しワークポインタに対応する第1の読み出しポインタから書き込みポインタの1つ前のアドレスまでと規定した読み出し用に確保したメモリスペースの外部を読み出しワークポインタが指定すると、読み出しワークポインタをロックするロック手段を有する。
同じく選択的に、データ転送は複数の転送元から送られるようになっているため、格納手段は転送元ごとに、第2の書き込みポインタとは異なる書き込みワークポインタを有し、第2の読み出しポインタから第1の読み出しポインタの1つ前のアドレスまでと規定した書き込み用に空いているメモリスペースの外部を書き込みワークポインタが指定すると、この書き込みワークポインタをロックするロック手段を備える。
同じく選択的に、データ転送は複数の転送元から送られるようになっているため、格納手段は転送元ごとに、書き込みワークポインタに対応する第2の書き込みポインタを有し、ダイレクトアクセスコントローラは、対象とする書き込みワークポインタに対応する第2の書き込みポインタから第1の読み出しポインタの1つ前のアドレスまでと規定した書き込み用に空いているメモリスペースの外部を書き込みワークポインタが指定すると、各書き込みワークポインタをロックするロック手段を有する。
同じく選択的に、格納手段は、第2の書き込みポインタとは異なる書き込みワークポインタを有するとともに、第1の読み出しポインタとは異なる読み出しワークポインタも有する。
同じく選択的に、所定の更新回路は、リングバッファメモリでワークポインタを前方および後方へ変位させることを含む。
本発明はまた、少なくとも1つのデータ転送元からこのデータの少なくとも1つの転送先へ、本発明によるダイレクトメモリアクセスコントローラを用いてデータを転送する方法であって、転送元から受信した各データをコントローラによってリングバッファメモリへ発信し、転送先へ転送する各データをコントローラによってリングバッファメモリに読み出し、読み出しポインタおよび書き込みポインタが示す基本セルの相対位置に応じて、リングバッファメモリへの読み出しをコントローラによってロックするステップと、リングバッファメモリへの書き込みをコントローラによってロックするステップとを有する方法がさらに、
− リングバッファメモリでワークポインタを前方および後方に変位させるステップと、
− 読み出しポインタから書き込みポインタの1つ前のアドレスまでと規定した読み出し用に確保したメモリスペースの外部を読み出しワークポインタが指定すると、またはこれと同様に、書き込みポインタから読み出しポインタの1つ前のアドレスまでと規定した書き込み用に空いているメモリスペースの外部を書き込みワークポインタが指定すると、読み出しまたは書き込みワークポインタをロックするステップと
を有することを特徴とする方法も目的とする。
最後に、本発明はまた、通信ネットワークからダウンロード可能なコンピュータプログラムおよび/またはコンピュータで再生可能な媒体に記録したコンピュータプログラムおよび/またはダイレクトメモリアクセスコントローラで実行可能なコンピュータプログラムであって、前記プログラムをダイレクトメモリアクセスコントローラで実行した場合に、上記のように定義したデータ転送方法のステップを実行するためのプログラムコードの命令を含むコンピュータプログラムも目的とする。
本発明は、添付の図を参照しながら例のみを目的として挙げた以下の説明文を読めばよりよく理解できるであろう。
本発明の第1の実施形態によるダイレクトメモリアクセスコントローラの全体構造の概略図である。 図1のダイレクトメモリアクセスコントローラを有する、マイクロプロセッサに搭載した集積回路の全体構造の概略図である。 図1のダイレクトメモリアクセスコントローラが管理するリングバッファメモリの構造の概略図である。 図1のダイレクトメモリアクセスコントローラが管理するリングバッファメモリの構造の概略図である。 図1のアクセスコントローラが実施する本発明の一実施形態による、データ転送方法の一連のステップを示すフローチャートである。 本発明の第2の実施形態によるダイレクトメモリアクセスコントローラの全体構造の概略図である。 転送先をロックする状況で、図5のダイレクトメモリアクセスコントローラの有利な動作を示す概略図である。 図5のダイレクトメモリアクセスコントローラが管理するリングバッファメモリの構造の概略図である。 図5のダイレクトメモリアクセスコントローラが実施するデータ転送方法の一連のステップを示すフローチャートである。
図1に示すダイレクトメモリアクセスコントローラまたはDMAコントローラ10は、少なくとも1つのデータ転送元12からこのデータの少なくとも1つの転送先14へリングバッファメモリ16を介してデータを転送する機能を持ち、リングバッファメモリは、一連のメモリの基本セルを所定数有する。
DMAコントローラ10は、データの書き込みおよび読み出しアクセスを命令するモジュールであって、DMAコントローラ10とリングバッファメモリ16を搭載する格納媒体との間のインターフェースとなるモジュール18を介して、リングバッファメモリ16の基本セルへの書き込みおよび読み出しにアクセスすることができる。一実施変形例では、符号20を付したDMAコントローラは、リングバッファメモリ16を搭載する格納媒体、および書き込みおよび読み出しアクセスを命令するモジュール18を備えていることがわかる。実際DMAコントローラは、例えばCMOS型集積回路などの自律型チップに基づくシステム形態をとることができる。
非限定的な実施例として、検討可能ないわゆるNoC(英語の「Networkon Chip」)方式、つまりネットワーク・オン・チップのアーキテクチャによれば、DMAコントローラ10または20は、パケット通信ネットワークの接続を介して互いに通信する基本要素で構成するものと考える。
転送元12から転送先14へのデータ転送を行うこのアーキテクチャによれば、DMAコントローラ10または20は、以下の素子:
− 転送元12から転送されるデータを受信する接続22
− コントローラ10または20がリングバッファメモリ16でのデータの書き込みを管理するモジュールであって、このモジュールは接続22から受信するデータによって作動するモジュール24
− 書き込みおよび読み出しアクセスを命令するモジュール18を介して、メモリの基本セルにデータを書き込むためにリングバッファメモリ16へデータを発信する接続26
− 書き込みおよび読み出しアクセスを命令するモジュール18を介して、メモリの基本セルにデータを読み出すためにリングバッファメモリ16から送られるデータを受信する接続28
− コントローラ10または20がリングバッファメモリ16でのデータの読み出しを管理するモジュールであって、接続28が供給するデータを受信することができるモジュール30
− 読み出したデータを転送先14へ発信する接続32
を有する。
これらの素子により、DMAコントローラ10または20は転送元12から受信した各データをリングバッファメモリ16へ発信し、転送先14に転送するための各データは次に、DMAコントローラ10または20がリングバッファメモリ16に読み出される。このようにリングバッファメモリ16は、転送元12と転送先14との間で中間バッファの機能を果たす。
選択的に、データを受信する接続22は、FIFO方式の入力バッファメモリ34を有し、これによって例えばリングバッファメモリ16が満杯であるために書き込みがロックされても、転送元12から受信したデータを一時的に格納することができる。
同じく選択的に、読み出したデータを発信する接続32は、FIFO方式の出力バッファメモリ36を有し、これによって例えば転送先14がまだ受信態勢になっていなかったり、出力ネットワークが一時的に飽和していたりしても、読み出したデータを一時的にリングバッファメモリ16に格納することができる。
DMAコントローラに入るデータフローと、DMAコントローラから出るデータフローとを同期するため、DMAコントローラはさらに、リングバッファメモリ16のディスクリプタを格納する格納手段38を有する。
このディスクリプタは、格納媒体にあるリングバッファメモリ16のベースアドレスを指定する少なくとも1つのベースポインタPBと、格納媒体にあるリングバッファメモリ16の先頭アドレスを指定する先頭ポインタPSと、DMAコントローラ10または20が受信する次のデータを書き込むことができるリングバッファメモリ16の基本セルのアドレスを指定する書き込みポインタPEと、次のデータを読み出して転送先に転送することができるリングバッファメモリ16の基本セルのアドレスを指定する読み出しポインタPLとを有する。
バッファメモリ16は、サイズがポインタPBおよびPSの指し示したベースアドレスから先頭アドレスまでの基本セル数によって決まる循環型メモリであることから、書き込みポインタPEおよび読み出しポインタPLが指定することのできるこのメモリの基本セルはそれぞれ、ベースアドレスから先頭アドレスまでのアドレスで識別する。
ベースポインタPBおよび先頭ポインタPSは事前に決定し、常に一定となるようになっているが、書き込みポインタPEおよび読み出しポンタPLは変化し、例えばリングバッファメモリで書き込み演算および読み出し演算を行ってからベースアドレスから先頭アドレスに向かって基本セルをインクリメトすることによって更新するようにする。
前述したように、このバッファメモリ16の循環は、書き込みポインタまたは読み出しポインタがメモリの先頭アドレスに到達すると、このポインタを基本セル1つ分インクリメントすることによってこのポインタがメモリのベースアドレスを指定するという事実と関係している。
その結果、DMAコントローラ10または20が読み出して転送先14に転送するのを待つ間にリングバッファメモリ16に一時的に格納したデータは、読み出しポインタPLのアドレスと書き込みポインタPEのアドレスの1つ前のアドレスとの間で、ベースアドレスから先頭アドレスに向かう方向に位置している。逆に、書き込みポインタPEのアドレスと読み出しポインタPLのアドレスの1つ前のアドレスとの間で、先頭アドレスからベースアドレスに向かい方向でリングバッファメモリにあるメモリスペースは、書き込み用の空きスペースである。ディスクリプタPB、PS、PEおよびPLに対応するリングバッファメモリ16のこの構造を図3Aおよび3Bに示しており、これについては後述する。
この考えに基づき、データ書き込み管理モジュール24は、とりわけ書き込みポインタPEおよび読み出しポインタPLの値に応じて、リングバッファメモリ16にデータを書き込んだり、逆にこの書き込みをロックしたりするように設計する。この管理モジュールはまた、書き込みポインタPEを更新するようにも設計し、これには、シーケンサを用いて基本セル1つ分をインクリメントして自動的に、あるいは例えばバッファメモリ16と同じ格納媒体に格納したファームウェア40を実行することによる所定の方法で行う。さらに正確には、本発明の単純な実施形態では、リングバッファメモリ16に書き込むデータを書き込みポインタPEが示すアドレスに書き込む必要がある。書き込み管理モジュール24が事前に書き込みポインタPEを更新することにより、この書き込みポインタの指定するアドレスが読み出しポインタPLの指定するアドレスに到達したり追い越したりする場合(メモリが満杯になる)は、書き込みをロックしなければならない。
この同じ考えに基づき、データ読み出し管理モジュール30は、とりわけ書き込みポインタPEおよび読み出しポインタPLの値に応じて、リングバッファメモリ16でデータを読み出したり、逆にこの読み出しをロックしたりするように設計する。この管理モジュールはまた、読み出しポインタPLを更新するようにも設計し、これには、シーケンサを用いて基本セル1つ分をインクリメントして自動的に、あるいは例えばバッファメモリ16と同じ格納媒体に格納したファームウェア40を実行することによる所定の方法で行う。さらに正確には、本発明の単純な実施形態では、リングバッファメモリ16に読み出すデータを読み出しポインタPLが示すアドレスに読み出す必要がある。読み出し管理モジュール30が事前に読み出しポインタPLを更新することにより、この読み出しポインタの指定するアドレスが書き込みポインタPEの指定するアドレスに到達したり追い越したりする場合(メモリが空になる)は、読み出しをロックしなければならない。
具体的には、リングバッファメモリ16への読み出しおよび書き込みのロックおよびロック解除が上記のとおりに動作するために、書き込みポインタPEの更新後に毎回書き込み管理モジュール24を、
− 書き込みポインタPEが読み出しポインタPLに到達すると(メモリが満杯であることを示すと)、リングバッファメモリ16へのデータの書き込みをすべてロックし、
− 読み出しがロックされ、書き込みポインタPEが再び読み出しポインタPLを追い越すと、リングバッファメモリ16へのデータの読み出しのロックを解除する
ようにプログラムすることができる。
同じく、読み出しポインタPLの更新後に毎回読み出し管理モジュール30を、
− 読み出しポインタPLが書き込みポインタPEに到達すると(メモリが空であることを示すと)、リングバッファメモリ16へのデータの読み出しをすべてロックし、
− 書き込みがロックされ、読み出しポインタPLが再び書き込みポインタPEを追い越すと、リングバッファメモリ16へのデータの書き込みのロックを解除する
ようにプログラムすることができる。
このようにして書き込み管理モジュール24は、メモリ16が満杯のときに書き込みをロックし、空のメモリが再び満杯になると読み出しのロックを解除する機能を果たす。読み出し管理モジュール30は、メモリ16が空のときに読み出しをロックし、満杯のメモリ16が再び空になると書き込みのロックを解除する機能を果たす。
書き込み管理モジュール24および読み出し管理モジュール30に関する上記の動作は、読み出しポインタPLおよび書き込みポインタPEを用いてリングバッファメモリ16で書き込みロック手段および読み出しロック手段を実施する一例にすぎず、読み出しポインタPLおよび書き込みポインタPEの値に応じてリングバッファメモリ16を読み出しロックおよび書き込みロックの状態にするために、これ以外の実施例または変形例を検討してもよいことは当業者には明らかであろう。
これらの特徴により、DMAコントローラ10または20は、転送元12から送られるデータの入力フローと転送先14へ送る出力フローとを同期することができる。
その結果、図2に示した利点が得られる。この図では、集積回路50はマイクロプロセッサ52と、このマイクロプロセッサ52が処理または使用したデータを一時的に格納するローカルメモリなどのデータ転送元12、何らかの周辺機器または機能演算子などの転送先14、およびリングバッファメモリ16を備える実施変形例に適したDMAコントローラ20とを有する。これらの素子52、12、14および20はすべて、従来のデータ転送バス54で互いに接続されている。
マイクロプロセッサ52およびDMAコントローラ20が正常に動作した場合、マイクロプロセッサはデータを転送元12の例えばバッファメモリに転送する(ステップB)が、これは転送元12と転送先14との間でDMAコントローラが行う転送(ステップC)とは無関係に行われる。実際これは、書き込みおよび読み出しをロックするリングバッファメモリ16があることにより、前述したようなDMAコントローラ20が果たすことができる同期機能によって可能になったことである。
逆に、DMAコントローラ20がこの機能を果たせなかった場合、要求(ステップA)および肯定応答(ステップD)の従来のプロトコルをマイクロプロセッサ52とDMAコントローラ20との間で実施する必要があり、このプロトコルは、マイクロプロセッサ52と転送元12との間のデータブロックごとの書き込みに対応している。転送元12と転送先14との間のデータ転送は、一連のステップ:
− マイクロプロセッサ52がデータブロックを転送する要求をDMAコントローラに伝達する伝達ステップA
− マイクロプロセッサ52のデータブロックを、このために転送元12に規定したバッファメモリに伝達する伝達ステップB
− DMAコントローラが転送元12から転送先14へデータブロックを転送する転送ステップC
− 新たなデータブロックを送ることができるようにDMAコントローラが肯定応答をマイクロプロセッサ52へ伝達する伝達ステップD
によって実行する。
したがって、送信した各データに対して同期するようになっている前述したようなDMAコントローラ20によって、データ転送のステップを簡易化することができ、とりわけステップAおよびDをなくすことができることは明らかである。
この同期機能と組み合わせて、本発明の一実施形態では、読み出し演算または書き込み演算に柔軟性を加えるために所定の更新回路に従って、リングバッファメモリ16に対応する読み出しポインタおよび書き込みポインタの少なくとも1つを更新するように設計したファームウェア(例えばファームウェア40)を備えることができる。この場合、DMAコントローラ10または20の同期能力を失わないように、新たな読み出しポインタまたは書き込みポインタ、すなわち図3Aおよび3Bに符号PTを付したワークポインタを規定する必要がある。このワークポインタは、前述の書き込みポインタPEおよび読み出しポインタPLとは別のものである。前述のポインタと同じく、このワークポインタは格納手段38に格納する。ワークポインタは変化し、ワークポインタが行う読み出し演算または書き込み演算後に毎回ファームウェア40によって更新するようにする。
特に、ファームウェア40を、ワークポインタPTの更新回路がリングバッファメモリ16に少なくとも1つのアドレスジャンプを含むように規定することができる。この新たなポインタPT、およびそのファームウェアであって、図3Aに示したように前方および後方へアドレスジャンプすることによる変位などを可能にするファームウェア40をリングバッファメモリ16に導入することにより、DMAコントローラ10または20が読み出しおよび書き込みのトラッキングを管理するこのリングバッファメモリ16は、単なるFIFO方式のリストとして使用されるものではない。リングバッファメモリによってDMAコントローラ10または20は、転送するデータシーケンスを転送元12と転送先14との間で自ら再び並び替えることができる。
好適な一実施変形例では、ワークポインタPTは読み出しポインタである。
この変形例では、第1の読み出しポインタPLは、データの書き込み用にメモリスペースを空ける読み出しポインタである。つまり、この読み出しポインタを更新するたびに、この第1の読み出しポインタPLが指定した旧アドレスのセルから新アドレスのセルの1つ前のセルまでのメモリスペースは、書き込み用に自動的に空けられる。これは前述したように、リングバッファメモリ16の書き込みポインタPEのアドレスと読み出しポインタPLのアドレスの1つ前のアドレスとの間で、ベースアドレスから先頭アドレスに向かう方向にあるメモリスペースが、原則として書き込み用の空きスペースとみなされるために起こることである。
一方ワークポインタPTは、読み出したデータを保存する読み出しポインタである。つまり、リングバッファメモリ16にデータを読み出して転送先14に転送する必要があるとき、このデータはワークポインタPTが示したアドレスで読み出されるが、この読み出しの後にワークポインタPTを更新しても、これに該当する書き込み用の基本セルは空にならない。実際に、読み出しによるワークポインタPTの変位は、必ずしもインクリメントされない。この変位は、ファームウェア40が任意の順序であらかじめ自由に決定し、好ましくは第1の読み出しポインタPLと書き込みポインタPEとの間で変位する。適用例によれば、ワークポインタPTが最初に読み出したデータをとりわけ再び読み出すことができ、データはリングバッファメモリ16に格納した順序とは異なる順序で読み出すことができる。したがって、メモリスペースを空けることができるのは第1の読み出しポインタを更新する1回のみである。
例えば、MPEG規格2または4(英語の「Moving Picture Expert Group」)に適したビデオのデータフローを転送する適用例では、リングバッファメモリ16に格納したビデオ係数の8行に対して、ファームウェア40は、マクロブロック8×8のワークポインタPTをマクロブロック8×8に、各マクロブロックで所定の順序に従って変位させるための命令を備えることができる。この8行のマクロブロックすべてをワークポインタPTが読み出すと、ビデオ係数の8行は第1の読み出しポインタPLをマイクロプログラムして更新することによってバッファメモリで空となる。
したがって、ワークポインタPTが読み出しポインタであるこの実施変形例では、ファームウェア40は、2つの読み出しポインタを更新するために読み出し管理モジュール30が実行する、
− ワークポインタPTを対象とする適用例に従って、前方および/または後方へのアドレスジャンプを含むことができる命令と、
− アドレスジャンプを含むことができるが、前方のみに、ワークポインタPTおよび第1の読み出しポインタPLに対してプログラムした変位に応じたアドレスジャンプを含むことが出来る命令と
を有することがわかる。
逆に、ファームウェア40は、書き込みポインタPEを更新するための命令を備えておらず、書き込みポインタは、例えばリングバッファメモリ16でデータの書き込み演算を行うたびに、アドレスジャンプなしにインクリメント方式でシーケンサによって更新する。
また、図3Aに示すように、ワークポインタPTの変位は、実際に読み出すデータを持っているリングバッファメモリ16の領域をこのワークポインタが指定するようにプログラムする必要があることがわかる。ワークポインタが、図3Bに示すように、更新後にこの領域の外部を指定した場合、目的とする適用例に応じてエラーメッセージを発生させるか、書き込みポインタPEが追いつくまでワークポインタをこの位置に固定することができる。
前例と対称的な一実施変形例では、ワークポインタPTは書き込みポインタであってもよい。
この第2の変形例では、書き込みポインタPEは、リングバッファメモリ16にデータを書き込むためにメモリスペースを確保する書き込みポインタである。つまり、書き込みポインタを更新するたびに、旧アドレスのセルからこの書き込みポインタPEが指定する新アドレスのセルの1つ前のセルまでのメモリスペースは、読み出し用に自動的に確保される。
一方ワークポインタPTは、ポインタPEが確保したメモリスペースに所定の任意の順序でデータを書き込むのに効果的な書き込みポインタである。つまり、リングバッファメモリ16にデータを書き込む必要があるとき、このデータはワークポインタPTが示すアドレスに書き込まれ、その更新は必ずインクリメント回路に従うわけではない。ワークポインタの変位は、確保したメモリスペースに任意の順序でファームウェア40が自由に事前に決定する。
したがって、ワークポインタPTが書き込みポインタであるこの第2の実施変形例では、ファームウェア40は、2つの書き込みポインタを更新するために書き込み管理モジュール24が実行する、
− ワークポインタPTを対象とする適用例に従って、前方および/または後方へのアドレスジャンプを含むことができる命令と、
− アドレスジャンプを含むことができるが、前方のみに、ワークポインタPTおよび書き込みポインタPEに対してプログラムした変位に応じたアドレスジャンプを含むことが出来る命令と
を有することがわかる。
逆に、ファームウェア40は、読み出しポインタPLを更新するための命令を備えておらず、読み出しポインタは、例えばリングバッファメモリ16でデータの読み出し演算を行うたびに、アドレスジャンプなしにインクリメント方式でシーケンサによって更新する。
その上、変形例では、ダイレクトメモリアクセスコントローラは書き込みワークポインタと読み出しワークポインタとを同時に備えている。
そのためダイレクトメモリアクセスコントローラは、各ワークポインタに固有の所定の更新回路であって、特にアドレスジャンプによってリングバッファメモリでの前方および/または後方への変位を含むことができる更新回路に従って、書き込み実行後に毎回書き込みワークポインタを更新する更新手段を有するとともに、読み出し実行後に毎回読み出しワークポインタを更新する更新手段も有する。前述したように、読み出しポインタの変位は、読み出し用に確保したリングバッファメモリ領域(読み出しポインタPLから書き込みポインタPEの1つ前のアドレスまでと規定した領域)をこの読み出しポインタが指定するようにプログラムする必要がある。同じく、書き込みワークポインタの変位は、書き込み用に空いているメモリ領域(書き込みポインタPEから読み出しポインタPLの1つ前のアドレスまでと規定した領域)をこの書き込みワークポインタが指定するようにプログラムする必要がある。
次に、DMAコントローラ10または20が実施することができるデータ転送方法の例について、前述の第1の実施変形例の背景に沿って詳述すると、ワークポインタPTは、読み出したデータを保存する読み出しポインタである。この方法の一連のステップを図4に示す。
第1のステップ100では、コントローラ10または20は、リングバッファメモリ16にデータを読み出す、または書き込む命令を待っている状態である。
このステップ100は、リングバッファメモリ16にデータを書き込む命令に基づいて書き込みを開始するステップ102に続く。この書き込み開始ステップでは、書き込み管理モジュール24が作動する。非限定的な実施例を挙げると、このモジュールは、リングバッファメモリ16への書き込みがロックされているか否かを示す第1のディスクリプタの値を格納手段28から引き出す。
次にテストステップ104では、この第1のディスクリプタの値に従い、対象とするデータの書き込みを続けるか否かを判断する。第1のディスクリプタが書き込みがロックされていることを示した場合、再びステップ100に進み、そうでなければステップ106に進む。
ステップ106では、書き込み管理モジュール24は、書き込みポインタPEが指定するアドレスを格納手段28から引き出す。そしてこのモジュールは、これに該当する基本セルに対象とするデータの書き込みを実行する。
その後、更新ステップ108では、書き込みポインタPEが指定したアドレスを、リングバッファメモリ16で基本セル1つ分インクリメントする。
最後に、ステップ110では、書き込み管理モジュール24は、第1の読み出しポインタPLが指定するアドレスを格納手段28から引き出したのち、
− ステップ108での更新後に、書き込みポインタPEが指定したアドレスが第1の読み出しポインタPLが指定したアドレスに到達すると(メモリ16が満杯であることを示すと)、第1のディスクリプタが書き込みのロックを示すようにこのディスクリプタを修正する状態
− ステップ108での更新後に、第2のディスクリプタが読み出しロックを示しているが、書き込みポインタPEが指定したアドレスが第1の読み出しポインタPLが指定したアドレスと異なる場合、第2のディスクリプタが読み出しの許可を示すようにこのディスクリプタを修正する状態
である場合に、書き込みをロックする第1のディスクリプタの値および読み出しをロックする第2のディスクリプタの値を更新する場合がある。
ステップ110のあとはステップ100に戻る。
ステップ100は、リングバッファメモリ16にデータを読み出す命令に基づいて読み出しを開始するステップ112にも続く。この読み出し開始ステップでは、読み出し管理モジュール30が作動する。非限定的な実施例を挙げると、このモジュールは、リングバッファメモリ16への読み出しがロックされているか否かを示す第2のディスクリプタの値を格納手段28から引き出す。
次にテストステップ114では、読み出し管理モジュール30は、転送先14が対象のデータを受信する準備ができているか否かを判断する。このテストは、いくつかの方法で行うことができる。DMAコントローラ10または20が出力バッファ36を有する場合、コントローラは、この出力バッファ36が満杯になっていない限りデータ転送を実行することができると考えることができる。さもなければ、従来の通信プロトコルにより、所定フォーマットのメッセージでデータを受信する容量を転送先14がDMAコントローラ10または20に伝達するようにする。転送先14へのデータ転送が不可能な場合は再びステップ100に進み、可能な場合は別のテストステップ116に進む。
このテストステップ116では、第2のディスクリプタの値に従い、対象とするデータの読み出しを続けるか否かを判断する。第2のディスクリプタが読み出しがロックされていることを示した場合、再びステップ100に進み、そうでなければ読み取りステップ118に進む。
このステップ118では、読み出し管理モジュール30は、ワークポインタPTが指定するアドレスを格納手段28から引き出す。そしてこのモジュールは、これに該当する基本セルに対象とするデータの読み出しを実行する。
その後、更新ステップ120では、ワークポインタPTが指定したアドレスを、1つまたは複数の基本セルの前方か後方に、ファームウェア40の命令に応じて読み出し管理モジュール30が更新する。これもファームウェア40の命令によるものである場合、第1の読み出しポインタPLをこのステップでも1つまたは複数の基本セルの前方に更新することができる。
最後に、ステップ122では、読み出し管理モジュール30は、場合によっては、
− ステップ120での更新後に、第1の読み出しポインタPLが指定したアドレスが書き込みポインタPEの指定するアドレスに到達すると(メモリ16が空であることを示すと)、第2のディスクリプタが読み出しロックを示すようにこのディスクリプタを修正する状態、
− ステップ120の更新後に、第1のディスクリプタが書き込みロックを示しているが、第1の読み出しポインタPLが指定したアドレスが書き込みポインタPEの指定するアドレスと異なる場合、第1のディスクリプタが書き込み許可を示すようにこのディスクリプタを修正する状態
である場合に、書き込みをロックする第1のディスクリプタの値および読み出しをロックする第2のディスクリプタの値を更新する。
ステップ122のあとは、ステップ100に戻る。
本発明の第2の実施形態によるダイレクトメモリアクセスコントローラを図5に示している。第1の実施形態と同じ素子には同じ符号を付している。この第2の実施形態では、DMAコントローラ10は、データ転送元12からこのデータの複数の転送先14,...,14,...,14にバッファメモリ16を介してデータを転送する機能を持つ。
本発明を実施するため、DMAコントローラ10はバッファメモリ1016への書き込みにアクセスできる必要があり、オプションとして読み出しにアクセスできる必要がある。図5に示した例では、命令モジュール18を介して、バッファメモリ16の基本セルへの書き込みおよび読み出しにアクセスすることができる。一実施変形例では、符号20を付したDMAコントローラは、リングバッファメモリ16を搭載する格納媒体、および書き込みおよび読み出しアクセスを命令するモジュール18を備えていることがわかる。実際に、例えばCMOS型集積回路などの自律型チップに基づくシステム形態をとることができる。
DMAコントローラ10または20は、転送元12から受信した各データをバッファメモリ16へ発信し、転送先14,...,14,...,14のうちの1つに転送されるようになっている各データはその後、DMAコントローラ10または20によってバッファメモリ16で読み出される。したがってバッファメモリ16は、転送元12と転送先14,...,14,...,14との間の中間バッファの機能を果たす。
図示していない本発明のもう一つの可能な実施形態では、DMAコントローラ10がバッファメモリ16を搭載せず、さらにこのコントローラ自体もバッファメモリ16のデータの読み出しにアクセスできないときは、転送先14,...,14,...,14がこの転送先に向けられたデータをバッファメモリ16で直接読み出す。しかし、この場合、詳述していない従来の方法では、データがDMAコントローラ10によって転送されないとしても、このコントローラはいずれにしても転送先による読み出し開始のメカニズムを維持する。
この第2の実施形態では、格納手段38は、第1の実施形態の単一の読み出しポインタの代わりに複数の読み出しポインタPL1,...,PLi,...,PLnを有し、各読み出しポインタが1つの転送先である14,...,14,...,14にそれぞれ対応している。各読み出しポインタPLiは、次のデータを読み出して転送先14に転送することができるリングバッファメモリ16の基本セルのアドレスを指定する。
バッファメモリ16は、サイズがポインタPBおよびPSの指し示したベースアドレスから先頭アドレスまでの基本セル数によって決まる循環型メモリであることから、書き込みポインタPEおよび読み出しポンタPL1,...,PLi,...,PLnが指定することのできるこのメモリの基本セルはそれぞれ、ベースアドレスから先頭アドレスまでのアドレスで識別する。
ベースポインタPBおよび先頭ポインタPSは事前に決定され、常に一定となるようになっているが、書き込みポインタPEおよび読み出しポンタPL1,...,PLi,...,PLnは変化する。実際に、両ポインタは、更新する方向を決定するアドレスジャンプの有無にかかわらずインクリメントすることによって更新することができる。
書き込みポインタPEは、さらに正確には、例えばリングバッファメモリへの書き込み演算に従ってベースアドレスから先頭アドレスに向かって基本セルからインクリメトすることによって、更新するようになっている。
逆に、読み出しポインタPL1,...,PLi,...,PLnは、ファームウェア40,...,40,...,40を実行することによってそれぞれ更新する。この更新は、実際に該当する転送先14に転送することによってデータが格納されている基本セルを各読み出しポインタPLiが指定するように事前に設定する。ファームウェア40,...,40,...,40は、例えばリングバッファメモリ16と同じ格納媒体に格納する。一般にファームウェアは、リングバッファメモリ16で読み出し管理モジュールによって実行し、このモジュールは、DMAコントローラの内部または外部に設置する。図5の特殊な例では、ファームウェアはさらに正確には、DMAコントローラ10または20の読み出し管理モジュール30によって実行する。
DMAコントローラ10または20に読み出されて転送先14,...,14,...,14によって転送されるか、転送先14,...,14,...,14によって直接転送されるのを待つ間、リングバッファメモリ16に一時的に格納したデータは、更新する方向を考慮して書き込みポインタに対して最も後ろにある読み出しポインタPLiのアドレスと、書き込みポインタPEのアドレスの1つ前のアドレスとの間で、ベースアドレスから先頭アドレスに向かう方向にある。逆に、リングバッファメモリの書き込みポインタPEのアドレスと、書き込みポインタに対して最も後ろにある読み出しポインタPLiのアドレスの1つ前のアドレスとの間で、先頭アドレスからベースアドレスに向かう方向にあるメモリスペースは、書き込み用の空きスペースである。ディスクリプタPB、PS、PEおよびPL1,...,PLi,...,PLnに対応するリングバッファメモリ16のこの構造は図7に示しており、これについては後述する。
図5のダイレクトメモリアクセスコントローラ10または20の有利な動作を図6に特殊で単純な適用例として示しているが、これに限定されるものではない。この適用例によれば、転送元12は、転送先14に転送されるデータ(白点)と転送先14に転送されるデータ(黒点)とが交互になったデータシーケンスを供給する。
書き込みポインタPEのアドレスごとにインクリメント式に更新することにより、これらのデータを転送元12から供給されたシーケンスの順にリングバッファメモリ16に格納する。
転送先14に転送されるデータは、転送先14に対して読み出す次のデータの基本セルを常に指定する読み出しポインタPL1を更新するファームウェア40を実行することによって、リングバッファメモリ16で読み出される。したがって、目的とする適用例に対してこのファームウェア40が実施する更新回路は、転送先14に対して実行したデータの読み取りごとにアドレスジャンプして読み出しポインタPL1をインクリメントし、転送先14に割り当てられたデータを読み出さないようにすることである。
同じように、転送先14に転送予定のデータは、転送先14に対して読み出す次のデータの基本セルを常に指定する読み出しポインタPL2を更新するファームウェア40を実行することによって、リングバッファメモリ16で読み出される。目的とする適用例に対してこのファームウェア40が実施する更新回路も、転送先14に対して実行したデータの読み取りごとにアドレスジャンプして読み出しポインタPL2をインクリメントし、転送先14に割り当てられたデータを読み出さないようにすることである。
2つのファームウェア40および40は独立しているため、DMAコントローラ10または20によって平行して実行することができ、どちらか一方をロックしても、とりわけ該当する転送先が読み出しをロックするため、もう一方に影響を与えることはない。したがって、DMAコントローラが簡易かつ効率的に、複数の転送先へのデータ転送を管理することができることは明らかであり、1つの転送先のみが他の全データ転送をロックすることはできない。
1つの転送先にロックされることなく転送するこの機能と組み合わせることによって、本発明の特殊な一実施形態では、DMAコントローラが入力フローと出力フローとを同期する機能も果たせるようにすることができる。
この特殊な実施形態を実施するため、DMAコントローラは前述のように定義した読み出し管理モジュール30を備えている必要がある。この場合、この読み出し管理モジュール30を、
− 読み出しポインタの集合PL1,...,PLi,...,PLnのなかから、所定の更新方向を考慮して書き込みポインタPEで示した基本セルに対して最も後ろにある基本セルを示すPLSを付した読み出しポインタを選択し、
− 転送先のうちの任意の1つに対して行ったデータの読み出しに続いて、読み出しポインタPL1,...,PLi,...,PLnのうちの任意の1つを更新するたびに、この選択を実行する
ようにプログラムすることができる。
この考えに基づき、データ書き込み管理モジュール24は、とりわけ書き込みポインタPEと選択読み出しポインタPLSとの相対値に応じて、リングバッファメモリ16にデータ書き込みを許可したり書き込みをロックしたりするように設計する。この管理モジュールはまた、シーケンサを用いて基本セル1つ分をインクリメントして書き込みポインタPEを自動的に更新するようにも設計する。さらに正確には、本発明のこの特殊な実施形態の単純な変形例では、リングバッファメモリ16に書き込むデータを書き込みポインタPEが示すアドレスに書き込む必要がある。書き込み管理モジュール24が事前に書き込みポインタPEを更新することにより、この書き込みポインタの指定するアドレスが選択読み出しポインタPLSの指定するアドレスに到達したり追い越したりする場合(メモリが満杯になる)は、書き込みをロックしなければならない。
これと同じ考えに基づき、データ読み出し管理モジュール30は、とりわけ書き込みポインタPEと選択読み出しポインタPLSとの相対値に応じて、リングバッファメモリ16にデータ読み出しを許可したり読み出しをロックしたりするように設計する。この管理モジュールはまた、各ファームウェア40を実行することによって各読み出しポインタPLiを更新するようにも設計する。さらに正確には、本発明のこの特殊な実施形態の単純な変形例では、リングバッファメモリ16に読み出して転送先14に送るデータを読み出しポインタPLiが示すアドレスに読み出す必要がある。読み出し管理モジュール30が事前に読み出しポインタPLiを更新することにより、この選択読み出しポインタPLSの指定するアドレスが書き込みポインタPEの指定するアドレスに到達したり追い越したりする場合(メモリが空になる)は、読み出しをロックしなければならない。
具体的には、リングバッファメモリ16への読み出しおよび書き込みのロックおよびロック解除が上記のとおりに動作するために、書き込みポインタPEの更新後に毎回書き込み管理モジュール24を、
− 書き込みポインタPEが選択読み出しポインタPLSに到到達すると(メモリが満杯であることを示すと)、リングバッファメモリ16へのデータの書き込みをすべてロックし、
− 読み出しがロックされ、書き込みポインタPEが再び選択読み出しポインタPLSを追い越すと、リングバッファメモリ16へのデータの読み出しのロックを解除する
ようにプログラムすることができる。
同じく、読み出しポインタPLiの更新後に毎回読み出し管理モジュール30を、
− 選択読み出しポインタPLSが書き込みポインタPEに到到達すると(メモリが空であることを示すと)、リングバッファメモリ16へのデータの読み出しをすべてロックし、
− 書き込みがロックされ、選択読み出しポインタPLSが再び書き込みポインタPEを追い越すと、リングバッファメモリ16へのデータの書き込みのロックを解除する
ようにプログラムすることができる。
このようにして書き込み管理モジュール24は、メモリ16が満杯のときに書き込みをロックし、空のメモリが再び満杯になると読み出しのロックを解除する機能を果たす。読み出し管理モジュール30は、メモリ16が空のときに読み出しをロックし、満杯のメモリ16が再び空になると書き込みのロックを解除する機能を果たす。
書き込み管理モジュール24および読み出し管理モジュール30に関する上記の動作は、書き込みポインタPEおよび読み出しポインタPL1,...,PLi,...,PLnを用いてリングバッファメモリ16で書き込みロック手段および読み出しロック手段を実施する一例にすぎず、書き込みポインタPEおよび読み出しポインタPL1,...,PLi,...,PLnの値に応じてリングバッファメモリ16を読み出しロックおよび書き込みロックの状態にするために、これ以外の実施例または変形例を検討してもよいことは当業者には明らかであろう。
これらの特徴により、DMAコントローラ10または20は、転送元12から送られるデータの入力フローと転送先14,...,14,...,14へ送る出力フローとを同期することができる。
その結果、マイクロプロセッサと、例えばマイクロプロセッサが処理または使用したデータを一時的に格納するローカルメモリであるデータ転送元12と、例えば周辺機器または任意の機能演算子である転送先14,...,14,...,14と、リングバッファメモリ16を含む実施変形例20に適したDMAコントローラとを備える集積回路では、マイクロプロセッサは、転送元12と転送先14,...,14,...,14との間でDMAコントローラが実行する転送とは関係なく、転送元12にデータを転送することができる。
このDMAコントローラの同期機能と組み合わせて、第1の変形例によれば、各転送先14に対して新たな読み出しポインタである「ワークポインタ」と呼ぶものを規定する。各転送先14に対して、このワークポインタは前述のように定義した読み出しポインタPLiとは異なるものである。ワークポインタは、読み出しポインタと同じように格納手段38に格納される。ワークポインタは変化し、読み出し演算の実行後に毎回ファームウェア40によって更新されるようになっている。図7は、2つの転送先14および14を備える単純な実施形態を示し、2つのワークポインタPT1およびPT2は書き込みポインタPEおよび読み出しポインタPL1およびPL2に加わる。
したがってファームウェア40は、転送元12が転送するシーケンスの順序ではない順序で転送先14に送られるデータをワークポインタPTiの更新回路が読み出すことができるように規定する。この新たなポインタPTiを各転送先14に導入し、図7に示すようにリングバッファメモリ16、さらに正確には転送先14に割り当てられたデータリストで前方および後方にアドレスジャンプすることによってこのワークポインタを更新する可能性が加わることにより、このデータリストは単なるFIFO方式のリストとして使用されなくなる。ワークポインタPT1...、PTi,...,PTnによって、DMAコントローラ10または20は、転送元12と転送先14,...,14,...,14の任意の1つとの間で転送するデータシーケンスをそれぞれ自ら再び並び替えることができる。
この第1の変形例では、選択読み出しポインタPLSは、データを書き込むためにメモリスペースを空ける読み出しポインタである。つまり、読み出しポインタのうちの1つを選択読み出しポインタとして選択するたびに、選択読み出しポインタPLSが指定した旧アドレスのセルから新アドレスのセルの1つ前のセルまでのメモリスペースは、書き込み用に自動的に空けられる。これは前述したように、リングバッファメモリ16の書き込みポインタPEのアドレスと選択読み出しポインタPLSのアドレスの1つ前のアドレスとの間で、ベースアドレスから先頭アドレスに向かう方向にあるメモリスペースが、原則として書き込み用に空いているスペースとみなされるために起こることである。
図7の単純な例では、書き込みポインタPEに対して最も後ろにあるのは読み出しポインタPL1である。したがってこの読み出しポインタが、読み出して転送先に転送するべきデータを格納しているメモリスペースの起点を規定するために選択され、基準点とみなされる。さらに正確には、符号Aを付したメモリスペースは、まだ読み出されていない転送先14に割り当てたデータと、読み出された転送先14に割り当てたデータとがあるメモリ領域を指している。つまり、この領域はまだ書き込み用に空いてはいない。符号Bを付したメモリスペースは、まだ読み出されていない転送先14および14に割り当てたデータがあるメモリ領域を指している。つまりこの領域は書き込み用にはなおさら空いていない。
一方各ワークポインタPTiは、読み出したデータを保存する読み出しポインタである。つまり、リングバッファメモリ16にデータを読み出して転送先14に転送する必要があると、このデータはワークポインタPTiが示したアドレスで読み出されるが、この読み出しの後にワークポインタPTiを更新しても、これに該当する書き込み用の基本セルは空にならない。実際に、読み出しによるワークポインタPTiの変位は、転送先14に割り当てられたアドレスが昇順していくデータシーケンス通りにはならない。この変位は、ファームウェア40によって任意の順序であらかじめ自由に決定し、好ましくは第1の読み出しポインタPLiと書き込みポインタPEとの間に決定する。適用例によれば、ワークポインタPTiが最初に読み出したデータであれば、とりわけ再び読み出すことができ、データはリングバッファメモリ16に格納した順序とは異なる順序で読み出すことができる。したがって、メモリスペースを空けることができるのは第1の読み出しポインタを更新する1回のみである。
したがって、各ワークポインタPTiが読み出しポインタであるこの実施変形例では、各ファームウェア40は、転送先14に対応する2つの読み出しポインタを更新するために読み出し管理モジュール30が実行する、
− ワークポインタPTiを対象とする適用例に従って、前方および/または後方へのアドレスジャンプを含むことができる命令と、
− アドレスジャンプを含むことができるが、前方のみに、転送先14に割り当てられたデータがあるアドレスに応じて、またワークポインタPTiおよび第1の読み出しポインタPLiに対してプログラムした変位に応じたアドレスジャンプを含むことが出来る命令と
を有することがわかる。
逆に、どのファームウェア40,...,40,...,40も、書き込みポインタPEを更新するための命令を備えておらず、書き込みポインタは、例えばリングバッファメモリ16でデータの書き込み演算を行うたびに、アドレスジャンプなしにインクリメント方式でシーケンサによって更新される。
また、図7に示したように、ワークポインタPT1、PTi、PTnの変位は、それぞれが転送先14,...,14,...,14に読み出すデータを実際に持っているリングバッファメモリ16の領域をこれらのワークポインタが指定するようにプログラムする必要があることもわかる。ワークポインタの1つが、更新後にこの領域の外部を指定した場合、目的とする適用例に応じてエラーメッセージを発生させるか、書き込みポインタPEが追いつくまでワークポインタをこの位置に固定することができる。本発明によれば、これによってロックしたワークポインタPTiに相当するファームウェア40の実行をロックするが、別の転送先14に対応する他のファームウェア40すべての実行をロックすることはない。
前例と対称的な一実施変形例では、データシーケンスを再び並び替えるため、単一のワークポインタPTを書き込みポインタとして規定する。
この第2の変形例では、書き込みポインタPEは、リングバッファメモリ16にデータを書き込むためにメモリスペースを確保する書き込みポインタである。つまり、書き込みポインタを更新するたびに、旧アドレスのセルからこの書き込みポインタPEが指定する新アドレスのセルの1つ前のセルまでのメモリスペースは、読み出し用に自動的に確保される。一方ワークポインタPTは、ポインタPEが確保したメモリスペースに所定の任意の順序でデータを書き込むのに効果的な書き込みポインタである。
しかし、この第2の変形例は第1の変形例ほど検討する有益性がない。なぜならこの第2の変形例では、リングバッファメモリ16でデータの書き込み側にロックが起こる可能性があるからである。そのため、DMAコントローラによってデータを転送する適用例では、書き込み側である上流よりも、リングバッファメモリの読み出し側である下流でロックを管理する方が好ましい。
次に、複数の転送先14に対するデータ転送方法の一例について、前述の第1の実施変形例の背景に沿って詳述すると、DMAコントローラは、リングバッファメモリ16への書き込みおよび読み出しをロックするのを管理し、ワークポインタPT1,...,PTi,...,PΤnを、読み出したデータを保存する読み出しポインタとして導入する。この方法の一連のステップを図8に示している。
どのステップも図4のステップと同じであるが、ステップ112から122は各ワークポインタPT1,...,PTi,...,ΡΤnに対して実施するため、符号は112i...122iである。さらに正確には、各ファームウェア40は、ステップ112iから122iを実行するようになっており、複数のファームウェアを平行して実行することができ、一方をロックすることでもう一方がロックされることはないことがわかる。
さらに、各転送先に対して読み出しポインタPLiに対応するポインタPTiを使用することは必須ではなく、単一の読み出しポインタPLを使用してもよい。この場合、1つのみの読み出しワークポインタを使用する場合と同様に、各読み出しワークポインタの変位は、読み出し用に確保したリングバッファメモリの領域(読み出しポインタPLから書き込みポインタPEの1つ前のアドレスと規定した領域)をワークポインタが指定するようにプログラムする必要がある。
対称的に、複数の書き込みワークポインタPTiをさまざまな転送元に使用する場合に、単一の書き込みポインタPEを使用してもよい。各書き込みワークポインタの変位は、書き込み用に空いているメモリ領域(書き込みポインタPEから読み出しポインタPLの1つ前のアドレスと規定した領域)をワークポインタが指定するようにプログラムする必要がある。
前述したダイレクトメモリアクセスコントローラおよびそのデータ転送のための動作により、マイクロプロセッサとこれに接続するコントローラとの間で同期する必要がないだけでなく、とりわけ転送先が望むデータシーケンスが転送元から供給されるものと同じではない場合に、データ転送に柔軟性を加えることも可能になることが明らかになる。これは、例えばMPEG規格の背景で、画像または映像データの処理および転送に適用する場合に有益な特性である。
本発明は、ここで検討した実施形態に限定されるものではないこともわかるであろう。
とりわけ前述の実施形態では、説明を簡潔にするために1つの転送元から1つの転送先へ転送する適用例を検討したが、本発明の原理はこれと同様に、複数の転送元および/または複数の転送先にも適用される。同じく、本発明によるダイレクトメモリアクセスコントローラは、複数のリングバッファメモリを管理できるため、これに対応する複数のディスクリプタ一式(ポインタ、ロックのディスクリプタなど)も管理することができる。
さらに、ダイレクトメモリアクセスコントローラは前述したように、1つまたは複数の書き込みポインタPEおよび1つまたは複数の読み出しポインタPLを管理できるだけでなく、複数の読み出しおよび/または書き込みワークポインタPTも管理することができる。
さらに一般的には、ここに開示した教示に照らし合わせて、上に記載した実施形態にさまざまな修正を加えてもよいことは当業者には明らかであろう。以下の特許請求の範囲では、使用した用語が請求項を本明細書で明らかにした実施形態に限定するものと解釈してはならず、本文の記載およびそこから予見される内容は、ここに開示した教示の実装に一般知識を応用することによって当業者が到達しうる範囲内であることから、請求項が範囲に含めると想定するあらゆる同等のものも含まれると解釈すべきである。

Claims (16)

  1. 少なくとも1つのデータ転送元(12)から少なくとも1つのデータ転送先(14)へリングバッファメモリ(16)を介してデータを転送するためのダイレクトメモリアクセスコントローラ(10、20)であって、前記ダイレクトメモリアクセスコントローラ(10、20)は、
    前記少なくとも1つのデータ転送元(12)から受信した前記データを前記リングバッファメモリ(16)に書き込むように設計された書き込み管理モジュール(24)
    読み出しポインタ(PL)および書き込みポインタ(PE)の格納手段であって、前記読み出しポインタ(PL)および前記書き込みポインタ(PE)が、データの読み込みおよび書き込みが可能な前記リングバッファメモリ(16)の基本セルの位置を示す格納手段(38)
    前記リングバッファメモリ(16)に格納された前記データを読み出し、前記データを前記少なくとも1つのデータ転送先(14)に転送するように設計された読み出し管理モジュール(30)
    前記リングバッファメモリ(16)に対する読み出しおよび書き込みを、前記読み出しポインタおよび書き込みポインタが示す基本セルの位置に応じてロックするロック手段(24、30、40)
    前記読み出しポインタ(PL)および前記書き込みポインタ(PE)とは異なる読み出しまたは書き込みワークポインタ(PT)の格納手段(38)、および
    前記読み出しまたは書き込みワークポインタ(PT)の更新手段(24、30、40)であって、前記読み出しまたは書き込みワークポインタ(PT)において各読み出しまたは書き込みが実行された後に、所定の更新回路に従って更新する更新手段(24、30、40)、を有し、
    前記所定の更新回路が、前記読み出しまたは書き込みワークポインタ(PT)を前記リングバッファメモリ(16)の中で前方または後方に変位させること、および
    前記読み出しまたは書き込みワークポインタ(PT)が読み出しワークポインタであって、前記読み出しポインタ(PL)から前記書き込みポインタ(PE)の1つ前のアドレスまでと規定した読み出し用に確保したメモリスペースの外部を前記読み出しワークポインタが指定する場合、または、前記読み出しまたは書き込みワークポインタ(PT)が書き込みワークポインタであって、前記書き込みポインタ(PE)から前記読み出しポインタ(PL)の1つ前のアドレスまでと規定した書き込み用の空きスペースの外部を前記書き込みワークポインタが指定する場合に、前記読み出しまたは書き込みワークポインタ(PT)をロックするロック手段を備えること、
    を特徴とするダイレクトメモリアクセスコントローラ(10、20)。
  2. 前記ワークポインタの前記更新手段は、更新用ファームウェア(40)を実行する手段(24、30)を有する、請求項1に記載のダイレクトメモリアクセスコントローラ(10、20)。
  3. 前記所定の更新回路は、前記リングバッファメモリへのアドレスジャンプを少なくとも1つ含む、請求項1または2に記載のダイレクトメモリアクセスコントローラ(10、20)。
  4. 前記読み出しロック手段(30、40)は、前記読み出しポインタ(PL)を更新することによって前記読み出しポインタの指定するアドレスが前記書き込みポインタ(PE)の指定するアドレスに到達したり追い越したりすると、前記リングバッファメモリ(16)でのデータの読み出しをすべてロックするように設計され
    前記書き込みロック手段(24、40)は、前記書き込みポインタ(PE)を更新することによって前記書き込みポインタの指定するアドレスが前記読み出しポインタ(PL)の指定するアドレスに到達したり追い越したりすると、前記リングバッファメモリ(16)でのデータの書き込みをすべてロックするように設計される、請求項1から3のいずれか一項に記載のダイレクトメモリアクセスコントローラ(10、20)。
  5. 前記読み出しポインタ(PL)は、データの書き込み用にメモリスペースを空ける位置を保持するポインタであり前記読み出しワークポインタ、読み出しデータの位置を保持するポインタである、請求項1から4のいずれか一項に記載のダイレクトメモリアクセスコントローラ(10、20)。
  6. 前記ファームウェア(40)は、前記読み出しポインタ(PL)および前記読み出しワークポインタのみを更新し、前記書き込みポインタ(PE)は、前記リングバッファメモリ(16)でデータの書き込み演算を行うたびにアドレスジャンプすることなくインクリメントによって自動的に更新されるように設計される、請求項2または5に記載のダイレクトメモリアクセスコントローラ(10、20)。
  7. 前記書き込みポインタ(PE)は、データの読み出し用にメモリスペースを確保する位置を保持するポインタであり、前記書き込みワークポインタ書き込みデータの位置を保持するポインタである、請求項1から4のいずれか一項に記載のダイレクトメモリアクセスコントローラ(10、20)。
  8. 前記ファームウェア(40)は、前記書き込みポインタ(PE)および前記書き込みワークポインタのみを更新し、前記読み出しポインタ(PL)は、前記リングバッファメモリ(16)でデータの読み出し演算を行うたびにアドレスジャンプすることなくインクリメントによって自動的に更新されるように設計する、請求項2または7に記載のダイレクトメモリアクセスコントローラ(10、20)。
  9. 複数の転送先に送るデータ転送に対して、前記格納手段(38)は転送先ごとに、前記読み出しポインタ(PL1、PL2)とは異なる読み出しワークポインタ有し、前記ダイレクトメモリアクセスコントローラ(10、20)は、各転送先(14、14)の前記読み出しワークポインタの更新手段(30)を有し、かつ、前記読み出しポインタ(PL1、PL2)から前記書き込みポインタ(PE)の1つ前のアドレスまでと規定した読み出し用に確保したメモリスペースの外部を前記読み出しワークポインタが指定すると、前記読み出しワークポインタをロックするロック手段を有する、請求項1から8のいずれか一項に記載のダイレクトメモリアクセスコントローラ(10、20)。
  10. 複数の転送先に送るデータ転送に対して、前記格納手段(38)は転送先ごとに、読み出しワークポインタに対応する読み出しポインタ(PL1、PL2)を有し、前記ダイレクトメモリアクセスコントローラ(10、20)は、対象とする読み出しワークポインタに対応する読み出しポインタ(PL1、PL2)から書き込みポインタ(PE)の1つ前のアドレスまでと規定した読み出し用に確保したメモリスペースの外部を読み出しワークポインタが指定すると、読み出しワークポインタをロックするロック手段を有する、請求項1から8のいずれか一項に記載のダイレクトメモリアクセスコントローラ(10、20)
  11. 複数の転送元から送られるデータ転送に対して、前記格納手段(38)は転送元ごとに、前記書き込みポインタ(PE)とは異なる書き込みワークポインタを有し、前記書き込みポインタ(PE)から前記読み出しポインタ(PL)の1つ前のアドレスまでと規定した書き込み用に空いているメモリスペースの外部を前記書き込みワークポインタが指定すると、前記書き込みワークポインタをロックするロック手段を備える、請求項1から10のいずれか一項に記載のダイレクトメモリアクセスコントローラ。
  12. 複数の転送元から送られるデータ転送に対して、前記格納手段(38)は転送元ごとに、書き込みワークポインタに対応する書き込みポインタを有し、ダイレクトアクセスコントローラは、対象とする書き込みワークポインタに対応する前記書き込みポインタ(PE)から前記読み出しポインタ(PL)の1つ前のアドレスまでと規定した書き込み用に空いているメモリスペースの外部を前記書き込みワークポインタが指定すると、各書き込みワークポインタをロックするロック手段を有する、請求項1から10のいずれか一項に記載のダイレクトメモリアクセスコントローラ。
  13. 前記格納手段は、前記書き込みポインタ(PE)とは異なる書き込みワークポインタを有するとともに、前記読み出しポインタ(PL)とは異なる読み出しワークポインタも有する、請求項1から8のいずれか一項に記載のダイレクトメモリアクセスコントローラ。
  14. 前記所定の更新回路は、前記リングバッファメモリ(16)で前記読み出しまたは書き込みワークポインタ(PT)を前方および後方へ変位させることを含む、請求項1から13のいずれか一項に記載のダイレクトメモリアクセスコントローラ。
  15. 少なくとも1つのデータ転送元(12)から少なくとも1つのデータ転送先(14)へ、請求項1から14のいずれか一項に記載のダイレクトメモリアクセスコントローラ(10、20)を用いてデータを転送する方法であって、
    前記少なくとも1つのデータ転送元(12)から受信した各データを前記ダイレクトメモリアクセスコントローラ(10、20)によって前記リングバッファメモリ(16)へ書き込み(106)、前記少なくとも1つのデータ転送先(14)へ転送する各データを前記ダイレクトメモリアクセスコントローラ(10、20)によって前記リングバッファメモリ(16)から読み出し(118)、前記読み出しポインタおよび前記書き込みポインタが示す基本セルの相対位置に応じて、前記リングバッファメモリからの読み出しを前記ダイレクトメモリアクセスコントローラ(10、20)によってロックするステップと、前記リングバッファメモリへの書き込みを前記ダイレクトメモリアクセスコントローラ(10、20)によってロックするステップ(110、122)とを有し、さらに、
    前記リングバッファメモリ(16)の中で前記読み出しまたは書き込みワークポインタ(PT)を前方および後方に変位させるステップと、
    前記読み出しまたは書き込みワークポインタ(PT)が読み出しワークポインタであって、前記読み出しポインタ(PL)から前記書き込みポインタ(PE)の1つ前のアドレスまでと規定した読み出し用に確保したメモリスペースの外部を前記読み出しワークポインタが指定する場合、または、前記読み出しまたは書き込みワークポインタ(PT)が書き込みワークポインタであって前記書き込みポインタ(PE)から前記読み出しポインタ(PL)の1つ前のアドレスまでと規定した書き込み用に空いているメモリスペースの外部を前記書き込みワークポインタが指定する場合前記読み出しまたは書き込みワークポインタ(PT)をロックするステップと
    を有することを特徴とする方法。
  16. 通信ネットワークからダウンロード可能なコンピュータプログラムおよび/またはコンピュータで再生可能な媒体に記録したコンピュータプログラムおよび/またはダイレクトメモリアクセスコントローラ(10、20)で実行可能なコンピュータプログラムであって、前記コンピュータプログラムをダイレクトメモリアクセスコントローラで実行した場合に、請求項15に記載のデータ転送方法のステップを実行するためのプログラムコードの命令を含むことを特徴とするコンピュータプログラム。
JP2012528431A 2009-09-11 2010-09-10 ダイレクトメモリアクセスコントローラ、その方法およびコンピュータプログラム Expired - Fee Related JP5769093B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
FR0956261 2009-09-11
FR0956261A FR2950173A1 (fr) 2009-09-11 2009-09-11 Controleur d'acces direct en memoire, procede et programme d'ordinateur correspondants
FR0957034A FR2951291B1 (fr) 2009-10-08 2009-10-08 Controleur d'acces direct en memoire a destinataires multiples, procede et programme d'ordinateur correspondants
FR0957034 2009-10-08
PCT/FR2010/051887 WO2011030070A1 (fr) 2009-09-11 2010-09-10 Controleur d'acces direct en memoire, procede et programme d'ordinateur correspondants

Publications (2)

Publication Number Publication Date
JP2013504800A JP2013504800A (ja) 2013-02-07
JP5769093B2 true JP5769093B2 (ja) 2015-08-26

Family

ID=43125578

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012528431A Expired - Fee Related JP5769093B2 (ja) 2009-09-11 2010-09-10 ダイレクトメモリアクセスコントローラ、その方法およびコンピュータプログラム

Country Status (4)

Country Link
US (1) US9032114B2 (ja)
EP (1) EP2476061B1 (ja)
JP (1) JP5769093B2 (ja)
WO (1) WO2011030070A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9124541B2 (en) * 2011-06-30 2015-09-01 Cisco Technology, Inc. Zero copy acceleration for session oriented protocols
EP2923279B1 (en) * 2012-11-21 2016-11-02 Coherent Logix Incorporated Processing system with interspersed processors; dma-fifo
US9513920B2 (en) * 2014-05-29 2016-12-06 Mill Computing, Inc. Computer processor employing split-stream encoding
CN105989868A (zh) * 2015-01-28 2016-10-05 泉州市铁通电子设备有限公司 一种集中存储式数字语音记录仪
DE102016211386A1 (de) * 2016-06-14 2017-12-14 Robert Bosch Gmbh Verfahren zum Betreiben einer Recheneinheit
US10346324B2 (en) * 2017-02-13 2019-07-09 Microchip Technology Incorporated Devices and methods for autonomous hardware management of circular buffers
FR3070514B1 (fr) * 2017-08-30 2019-09-13 Commissariat A L'energie Atomique Et Aux Energies Alternatives Controleur d'acces direct en memoire, dispositif et procede de reception, stockage et traitement de donnees correspondants
CN114375445B (zh) 2019-08-29 2022-12-27 微芯片技术股份有限公司 使用自主存储器访问对数据进行预处理及相关系统、方法和设备
FR3118528B1 (fr) 2020-12-28 2023-12-01 Commissariat Energie Atomique Module mémoire adapté à mettre en oeuvre des fonctions de calcul
CN114340097B (zh) * 2021-12-30 2024-07-30 合肥市芯海电子科技有限公司 一种控制灯带的方法、装置、芯片和电子设备

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5686917A (en) 1995-04-19 1997-11-11 National Instruments Corporation System and method for demultiplexing data in an instrumentation system
DE19654846A1 (de) * 1996-12-27 1998-07-09 Pact Inf Tech Gmbh Verfahren zum selbständigen dynamischen Umladen von Datenflußprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o. dgl.)
US5974483A (en) * 1997-05-21 1999-10-26 Microsoft Corporation Multiple transparent access to in put peripherals
GB9802097D0 (en) 1998-01-30 1998-03-25 Sgs Thomson Microelectronics DMA controller
JP2001256176A (ja) * 2000-03-13 2001-09-21 Mitsubishi Electric Corp ブリッジ装置
JP2002144643A (ja) * 2000-11-13 2002-05-22 Canon Inc データ制御装置、印刷データ処理装置及びデータ制御方法、印刷データ処理方法
FR2827995B1 (fr) * 2001-07-27 2004-11-12 Canon Kk Procede et dispositif de gestion de memoire
JP3794352B2 (ja) * 2002-07-04 2006-07-05 ソニー株式会社 データ分配装置及び方法
US20100180095A1 (en) * 2005-12-02 2010-07-15 Matsushita Electric Industrial Co., Ltd. Buffer control device and buffer memory device
FR2951290B1 (fr) 2009-10-08 2011-12-09 Commissariat Energie Atomique Controleur d'acces direct en memoire a sources multiples, procede et programme d'ordinateur correspondants

Also Published As

Publication number Publication date
US9032114B2 (en) 2015-05-12
US20120173772A1 (en) 2012-07-05
WO2011030070A1 (fr) 2011-03-17
EP2476061A1 (fr) 2012-07-18
EP2476061B1 (fr) 2013-07-24
JP2013504800A (ja) 2013-02-07

Similar Documents

Publication Publication Date Title
JP5769093B2 (ja) ダイレクトメモリアクセスコントローラ、その方法およびコンピュータプログラム
US8260981B2 (en) Direct access memory controller with multiple sources, corresponding method and computer program
JP4694270B2 (ja) 画像処理装置、方法及びプログラム
US7613197B2 (en) Multi-processor system and message transferring method in the same
JP5600517B2 (ja) 情報処理装置、情報処理方法、およびプログラム
US20040024943A1 (en) Generic bridge core
JP2004302713A (ja) 記憶システム及びその制御方法
US20090240851A1 (en) Usb controller and buffer memory control method
JP2007128369A (ja) データ処理システムおよびプログラム
US7552232B2 (en) Speculative method and system for rapid data communications
US6728834B2 (en) System and method for effectively implementing isochronous processor cache
KR100948597B1 (ko) 다중 복호기 시스템에서의 리소스 공유 스케줄 제어 장치및 그 장치에서의 리소스 공유 스케줄 제어 방법
US8407684B2 (en) Memory card and method of updating memory card program
WO2001057675A1 (en) System and method for effectively utilizing a cache memory in an electronic device
JP2010198171A (ja) Usbホストコントローラ、及びusbホストコントローラの制御方法
US20110145491A1 (en) Method for controlling access to regions of a memory from a plurality of processes and a communication module having a message memory for implementing the method
JP2013196509A (ja) 情報処理装置及びその制御方法
JP2010049303A (ja) メモリコントローラ、不揮発性記憶装置、アクセス装置、及び不揮発性記憶システム
JP5223612B2 (ja) ディスク制御装置およびファームウェアの更新方法
US6847650B1 (en) System and method for utilizing a memory device to support isochronous processes
US20220413890A1 (en) Information processing apparatus, computer-readable recording medium having stored therein information processing program, and method for processing information
KR100950356B1 (ko) 다중 코히런시 단위들을 지원하는 데이터 전송 유닛
CN105723317A (zh) 用于与非易失性存储器通信的方法和系统
US10341246B1 (en) Update packet sequence number packet ready command
JP2009157731A (ja) 仮想計算機システムおよび仮想計算機システムの制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130805

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131023

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140526

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140624

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140922

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20141023

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141031

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20141120

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20141020

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141209

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141202

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150519

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150611

R150 Certificate of patent or registration of utility model

Ref document number: 5769093

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees