JP2011081801A - 複数のソースを有する直接アクセスメモリコントローラ、それに対応する方法及びコンピュータプログラム - Google Patents

複数のソースを有する直接アクセスメモリコントローラ、それに対応する方法及びコンピュータプログラム Download PDF

Info

Publication number
JP2011081801A
JP2011081801A JP2010226063A JP2010226063A JP2011081801A JP 2011081801 A JP2011081801 A JP 2011081801A JP 2010226063 A JP2010226063 A JP 2010226063A JP 2010226063 A JP2010226063 A JP 2010226063A JP 2011081801 A JP2011081801 A JP 2011081801A
Authority
JP
Japan
Prior art keywords
data
read
buffer memory
pointer
address
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.)
Granted
Application number
JP2010226063A
Other languages
English (en)
Other versions
JP5205603B2 (ja
Inventor
Yves Durand
ドゥロン イヴ
Christian Bernard
ベルナール クリスティアン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Commissariat a lEnergie Atomique et aux Energies Alternatives CEA
Original Assignee
Commissariat a lEnergie Atomique CEA
Commissariat a lEnergie Atomique et aux Energies Alternatives CEA
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
Application filed by Commissariat a lEnergie Atomique CEA, Commissariat a lEnergie Atomique et aux Energies Alternatives CEA filed Critical Commissariat a lEnergie Atomique CEA
Publication of JP2011081801A publication Critical patent/JP2011081801A/ja
Application granted granted Critical
Publication of JP5205603B2 publication Critical patent/JP5205603B2/ja
Active 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)
  • Bus Control (AREA)
  • Information Transfer Systems (AREA)
  • Circuits Of Receivers In General (AREA)
  • Multi Processors (AREA)
  • Programmable Controllers (AREA)

Abstract

【課題】同期されていない異なるソースからのデータをDMAコントローラで同期させる。
【解決手段】DMAコントローラ10、20は、データをいくつかのデータソースからいくつかのバッファメモリを通して少なくとも1つのアドレスに転送するようにプログラムされる。DMAコントローラ10、20は、バッファメモリに記憶されているデータを読み取り、シーケンスでデータをアドレスに転送するように設計された読み取り管理モジュール30と、各バッファメモリのそれぞれに関連付けられた読み取りポインタ記憶手段38とを備える。各バッファメモリ毎に、コントローラ10、20は、ファームウェアを実行してバッファメモリからデータを読み取り、アドレスに転送されるデータシーケンス内で要求されるバッファメモリから発せられたデータの所定の順序に応じて、ファームウェアの実行を同期させる手段を備える。
【選択図】図1

Description

本発明は、複数のソースを使用する直接メモリアクセスコントローラ、データをいくつかのデータソースからこのコントローラにより使用されるそれらデータの少なくとも1つのアドレスに転送する方法、及びそれに対応するコンピュータプログラムに関する。
そのようなコントローラは、DMA(直接メモリアクセス)コントローラと呼ばれ、通常、例えば、集積回路等の中央演算処理装置を有するデータ処理装置に使用される。コントローラは、転送の開始及び終了を除いて中央演算処理装置による介入なしで、1つ又はいくつかの中央演算処理装置により処理又は供給されたデータを、通信ポート、ハードディスク、又は任意のメモリ等の少なくとも1つの周辺機器から、又はそのような周辺機器に転送し、例えば、この周辺機器と装置内の1つ又はいくつかのローカルメモリとの間でデータを転送する。
例えば、DMAコントローラは、高速周辺機器への繰り返しアクセスが、中央演算処理装置により行われている処理をブロックしない場合でも少なくとも遅くさせる危険性があるシステムにおいて非常に有用であることができる。コントローラの存在により、中央演算処理装置により実行されるソフトウェアアプリケーションの処理時間が最適化され、DMAコントローラは、ローカルメモリからのデータ転送及びローカルメモリへのデータ転送の管理を任せられる。
本発明は特に、所定数の連続した基本メモリロケーションをそれぞれ含むいくつかのバッファメモリを通してデータをいくつかのデータソースからそれらデータの少なくとも1つのアドレスに転送する直接メモリアクセスコントローラに適用可能であり、アクセスコントローラは、バッファメモリに記憶されているデータを読み取り、順番にアドレスに転送するように設計された読み取り管理モジュールと、それぞれ各バッファメモリに関連付けられた読み取りポインタ記憶手段とを備え、各読み取りポインタは、データを読み取ることができる、各読み取りポインタが関連付けられたバッファメモリの基本ロケーションを示す。
例えば、そのようなDMAコントローラは、(特許文献1)として公開された特許に記載されている。この特許には、データが明らかに互いに同期されていない異なるソースから発せられた場合でのデータがDMAコントローラからアドレスに送信される順番についての一般には解決されていない問題が述べられている。
この文献において与えられる解決策は、データが書き込まれるいくつかのバッファメモリを提供することからなり、それにより、DMAコントローラは、バッファメモリ内のデータを読み取ってアドレスに転送することができ、それらバッファメモリの順序付きリストがDMAコントローラに供給され、バッファメモリのうちの1つのすべてのデータが、DMAコントローラにより読み取られてアドレスに転送された場合、順序付きリスト内の次のバッファメモリの読み取りが開始される。したがって、それらデータの送信元である中央演算処理装置によるいかなる動作もなく、データを要求される所定の順番でアドレスに転送することが可能である。
しかし、この解決策は、DMAコントローラにバッファの順序付きリストの管理を余儀なくさせる。さらに、多数の小さなバッファメモリがこのリスト内に存在する場合であっても、特定の限度を超えて正確にいくつかのソースを同期させることはできない。例えば、2つの異なるソースから導出されたデータをこのようにしてインタレースさせて送信することは不合理である。
米国特許第5,901,291号明細書
したがって、上述した問題及び制約を解消する直接メモリアクセスコントローラを提供することが望ましいであろう。
したがって、本発明の主旨は、所定数の連続した基本メモリロケーションをそれぞれ含むいくつかのバッファメモリを通してデータをいくつかのデータソースからそれらデータの少なくとも1つのアドレスに転送する直接メモリアクセスコントローラであり、アクセスコントローラは、バッファメモリに記憶されているデータを読み取って順番にアドレスに転送するように設計された読み取り管理モジュールと、それぞれ各バッファメモリに関連付けられた読み取りポインタ記憶手段とを備え、各読み取りポインタは、データを読み取ることができる、各読み取りポインタが関連付けられたバッファメモリの基本ロケーションを示し、バッファメモリのそれぞれには各データソースが関連付けられ、バッファメモリ毎に、コントローラは、ファームウェアを実行してデータを読み取り、このバッファメモリに関連付けられた読み取りポインタを更新する手段を備え、アドレスに転送すべきデータシーケンス内で必要とされるバッファメモリから送信されたデータの所定の順番に応じて、ファームウェアの実行を同期させる手段を備える。
ファームウェアは、集積回路、より正確にはこの構成要素の揮発性又は不揮発性のメモリ等のハードウェア構成要素内のオンボードソフトウェアを意味する。
したがって、データを読み取り、読み取りポインタを更新するファームウェアを、それ自体が特定のソースに関連付けられた各バッファメモリに関連付けることにより、且つファームウェアの実行を同期させて、異なるバッファメモリ(ひいては異なるソース)を送信元とするデータをアドレスに転送しなければならない順番を決定論的に定義することにより、DMAコントローラをデータソースに同期させる必要なく、且つバッファメモリを互いに並べる必要なく、転送シーケンスの詳細を管理することができる。
任意的に、同期手段は、少なくとも1つの読み取り・更新権をあるファームウェアから別のファームウェアに送信する手段を備え、現在実行中のあるファームウェアが読み取り・更新権を一時的に保持することにより、そのファームウェアは、関連付けられたバッファメモリ内の少なくとも1回のデータ読み取り及び対応する読み取りポインタの少なくとも1回の更新を実行することができる。
これもまた任意的に、各バッファメモリは循環式であり、任意の1つの循環バッファメモリの各基本ロケーションは、この循環バッファメモリの最下位アドレスと最上位アドレスとの間のアドレスにより識別され、記憶手段は、各循環バッファメモリに関連付けられた書き込みポインタを備え、各書き込みポインタは、データを書き込むことができる、関連付けられたバッファメモリの基本ロケーションを示し、コントローラは、ソースから受信したデータを対応する循環バッファメモリ内の、対応する書き込みポインタにより示されるアドレスに書き込むように設計された書き込み管理モジュール、並びに各循環バッファメモリの上記読み取りポインタ及び上記書き込みポインタにより示される基本ロケーションの相対位置に応じて、各循環バッファメモリ内の読み取り、書き込みのそれぞれを阻止する手段も備える。
したがって、各循環バッファメモリは、対応するソースとアドレスとの間で1つの中間読み取り/書き込み阻止機能を実行する。この機能は、各循環バッファメモリに対して書き込みアクセス及び読み取りアクセスを行うことができる直接メモリアクセスコントローラにより各循環バッファメモリに関連付けられた読み取りポインタ及び書き込みポインタにより管理される。このようにして、中央演算処理装置に同期する必要なく、入力データフロー(ソースにより生成されたフロー)を出力データフロー(アドレスにより生成されたフロー)に同期させることが可能である。
これもまた任意的に、任意の1つの循環バッファメモリ内の読み取り阻止手段は、読み取りポインタへの更新が、書き込みポインタが指すアドレスに到達するか、又は書き込みポインタが指すアドレスを超えることを意味する場合、この循環バッファメモリ内でのいかなるデータ読み取りも阻止するように設計され、任意の1つの循環バッファメモリ内の書き込み阻止手段は、書き込みポインタへの更新が、書き込みポインタが指すアドレスが、読み取りポインタが指すアドレスに達するか、又はそれを超えることを意味する場合、この循環バッファメモリ内のいかなるデータ書き込みも阻止するように設計される。
これもまた任意的に、循環バッファメモリ毎に、記憶手段は、循環バッファメモリに関連付けられた上記読み取りポインタと異なる「作業ポインタ」と呼ばれる読み取りポインタも備え、この作業ポインタは、データを読み取らなければならない、関連付けられたバッファメモリの基本ロケーションを示し、この循環バッファメモリに関連付けられたファームウェアも、所定の更新論理を使用してこの循環バッファメモリの読み取り毎に作業ポインタを更新するように設計される。
これもまた任意的に、各循環バッファメモリの作業ポインタの所定の更新論理は、データが書き込まれた順番とは異なる順番で、含まれるデータを読み取るようなこの循環バッファメモリ内での少なくとも1つのアドレスジャンプを含む。
本発明の別の目的は、上に定義されたような直接メモリアクセスコントローラにより、所定数の連続した基本メモリロケーションをそれぞれ備えるいくつかのバッファメモリを通していくつかのデータソースからそれらデータの少なくとも1つのアドレスにデータを転送する方法であり、任意の1つのソースから受信された各データは、書き込み管理モジュールにより、このソースに関連付けられたバッファメモリに送信され、アドレスに送信されるべき各データは、コントローラによりバッファメモリの1つにおいて読み取られ、この方法は、
−バッファメモリ毎に、ファームウェアのコントローラが、このバッファメモリからのデータの読み取り及びデータを読み取ることができるこのバッファメモリ内の基本ロケーションを示す読み取りポインタの更新を実行するステップと、
−アドレスに転送すべきデータシーケンス内で要求されるバッファメモリから導出されるデータの所定の順番に応じて、ファームウェアの実行を同期させるステップと
を含む。
任意的に、同期ステップは、現在実行中の異なるファームウェア間での少なくとも1つの読み取り・更新権のプログラムされた循環により行われ、現在実行中のファームウェアの1つが読み取り・更新権を一時的に保持することにより、そのファームウェアは、関連付けられたバッファメモリにおける少なくとも1回のデータ読み取り及び対応する読み取りポインタの少なくとも1回の更新を実行することが可能になる。
これもまた任意的に、現在実行中の異なるファームウェア間での読み取り・更新権のプログラムされた循環は、以下のように行われる。
−各ファームウェアの実行が、このファームウェア内にプログラムされた命令に従って読み取り・更新権を待つ少なくとも1つのステップを含み、
−各ファームウェアの実行が、少なくとも1回の読み取り及びこのファームウェアに関連付けられた読み取りポインタの少なくとも1回の更新を実行した後、このファームウェア内にプログラムされた命令に従って、読み取り・更新権を現在実行中の別のファームウェアに送信する少なくとも1つのステップを含む。
最後に、本発明の別の目的は、コンピュータにより読み取り可能であり、且つ/又は直接メモリアクセスコントローラにより実行可能な、通信ネットワークからダウンロード可能であり、且つ/又は媒体に記録可能なコンピュータプログラムであって、上記プログラムが直接メモリアクセスコントローラにより実行された場合、上に定義されたようなデータ転送方法のステップを実行するプログラムコード命令を含む、コンピュータプログラムである。
本発明は、添付図面を参照して単なる例として与えられる以下の説明を読んだ後、よりよく理解されるであろう。
本発明の一実施形態による直接メモリアクセスコントローラの一般的な構造を概略的に示す。 図1の直接メモリアクセスコントローラが、2つのソースから導出されるインタレースしたデータ転送アプリケーション内で機能する有利な方法を概略的に示す。 図1の直接メモリアクセスコントローラにより管理される循環バッファメモリ構造を概略的に示す。 図1の直接メモリアクセスコントローラにより管理される循環バッファメモリ構造を概略的に示す。 本発明の一実施形態によるデータ転送方法の連続ステップを示す。
図1に示される直接メモリアクセスコントローラ又はDMAコントローラ10は、いくつかのデータソース12、・・・,12、・・・、12から、所定数の連続した基本メモリロケーションをそれぞれ含む複数のバッファメモリ16、・・・、16、・・・、16を通して、これらデータの少なくとも1つのアドレス14に転送する機能を実行する。
本発明が使用可能になる前は、DMAコントローラ10は、読み取る際、及び任意的に書き込む際に各バッファメモリ16にアクセス可能でなければならない。しかし、図1に示される例では、書き込み及び読み取りの際に、DMAコントローラ10とインタフェースする書き込み・読み取りデータアクセスコマンドモジュール18及びバッファメモリ16、・・・、16、・・・、16を統合した記憶媒体を通して、各バッファメモリ16の基本ロケーションにアクセスすることが可能である。一変形実施形態では、参照20として記されたDMAコントローラが、バッファメモリ16、・・・、16、・・・、16を統合した記憶媒体及び読み取りアクセスコマンドモジュール18を含むことに留意する。実際には、DMAコントローラは、スタンドアロンチップ、例えば、CMOS型集積回路上のシステムの形態であり得る。
非限定的な実施例として、NoC(ネットワークオンチップ)と呼ばれる1つの可能なアーキテクチャによれば、DMAコントローラ10又は20は、パケット交換ネットワーク内でリンクを通して互いに通信する機能要素で構成されるものとして考えられる。
このアーキテクチャによれば、DMAコントローラ10又は20は、ソース12、・・・、12、・・・、12からアドレス14にデータを転送する以下の要素:
−ソース12,・・・、12、・・・、12から発せられたデータの受信リンク22、
−コントローラ10又は20が、バッファメモリ16、・・・、16、・・・、16へのデータ書き込みを管理するために使用するモジュール24であって、リンク22から受信されるデータによりアクティブ化される、モジュール24、
−データがバッファメモリ16、・・・、16、・・・、16に送信され、それらデータが書き込み・読み取りアクセスコマンドモジュール18を通してそれらメモリの基本ロケーション内に書き込まれるリンク26、
−データがバッファメモリ16、・・・、16、・・・、16から受信され、書き込み・読み取りアクセスコマンドモジュール18を通してそれらメモリの基本ロケーションのそれらデータが読み取られるリンク28、
−コントローラ10又は20が、リンク28により供給されたデータを受信可能なバッファメモリ16、・・・、16、・・・、16内のデータの読み取りを管理するために使用するモジュール30、及び
−読み取られたデータがアドレス14に送信されるリンク32
を備える。
これら要素を使用して、DMAコントローラ10又は20は、ソース12から受信された各データを対応するバッファメモリ16に送信し、アドレス14に送信される各データは、DMAコントローラ10又は20により対応するバッファメモリ16において読み取られる。したがって、バッファメモリ16、・・・、16、・・・、16は、ソース12、・・・、12、・・・、12とアドレス14との間の中間バッファ機能を遂行する。
示されていない本発明の別の可能な実施形態では、DMAコントローラ10がバッファメモリ16、・・・、16、・・・、16を統合せず、それらバッファメモリ内にデータ書き込み管理モジュール24を有さない場合、換言すれば、それらバッファメモリに書き込みアクセスすることができない場合、例えば、ソース12、・・・、12、・・・、12がそれらバッファメモリを直接形成することに留意する。
バッファメモリ16、・・・、16、・・・、16は、それ自体既知の異なる様式で実施してもよいが、好ましい一実施形態では、循環バッファメモリの形態である。
その場合、各バッファメモリ16は、最下位アドレスと最上位アドレスとの間のメモリ領域を占める。バッファメモリに関連付けられた読み取りポインタ又は書き込みポインタは、このバッファメモリの最下位アドレスと最上位アドレスとの間でインクリメントされ、最上位アドレスに達した後、インクリメントの追加により最下位アドレスに戻る。これは、バッファメモリを「循環バッファメモリ」として適格なものにする。
例えば、FIFO(先入れ先出し)式のこの循環バッファメモリ構成の利点は、このメモリに関連付けられた書き込みポインタが、記憶されてはいるがまだ読み取られていないデータを含む基本ロケーションに達しない限り、換言すれば、メモリが満杯ではない限り、そのようなメモリバッファ内にデータをまるで無期限に書き込み可能であるかのようにすべてのことが行われるため、追加のデータが受信された場合に、メモリ再割り振り制約が回避されることである。
この場合、データ受信リンク22は、任意的に、例えば、対応する循環バッファメモリ16が、満杯であるために書き込み阻止されている間、ソース12から受信されたデータを一時的に記憶可能なFIFO式入力バッファメモリ34を備える。
これもまた任意的に、読み取られたデータを送信するリンク32は、例えば、出力ネットワークが一時的に飽和している間、又はアドレス14が読み取り阻止されている間、読み取られたデータを少なくとも1つの循環バッファメモリ16、・・・、16、・・・、16に一時的に記憶可能なFIFO式出力バッファメモリ36を備える。
DMAコントローラ10又は20は、アドレス14への入力データフローをバッファメモリに分散できるようにする、循環バッファメモリ記述子16、・・・、16、・・・、16を記憶する手段38も備える。
循環バッファメモリ16毎に、記述子は、記憶媒体内の循環メモリ16の最下位アドレスを指す少なくとも1つの最下位ポインタPBi、記憶媒体内の循環バッファメモリ16の最上位アドレスを指す最上位ポインタPSi、DMAコントローラ10又は20が受信した次のデータを書き込むことができる循環バッファメモリ16内の基本ロケーションのアドレスを指す書き込みポインタPEi、アドレス14に送信するために次のデータを読み取ることができる循環バッファメモリ16内の基本ロケーションのアドレスを指す読み取りポインタPLiを含む。
各バッファメモリ16は、サイズがポインタPBi及びPSiにより示される最下位アドレスと最上位アドレスとの間に含まれる基本ロケーション数により定義される循環メモリであり、書き込みポインタPEi及び読み取りポインタPLiが指すことができるこのメモリの各基本ロケーションは、最下位アドレスと最上位アドレスとの間のアドレスにより識別される。
最下位ポインタPBi及び最上位ポインタPSiは事前に決定され、一定のままであるのに対して、書き込みポインタPEi及び読み取りポインタPLiは可変である。ポインタは、循環バッファメモリ16内で、書き込み動作又は読み取り動作後にアドレスジャンプありで、又はアドレスジャンプなしでインクリメントすることにより更新することができる。
上述したように、各バッファメモリ16の循環は、書き込みポインタPEi又は読み取りポインタPLiがメモリの最上位アドレスに達した場合、このポインタを基本ロケーション1つ分だけインクリメントさせると、メモリの最下位アドレスを指すことになることに依存する。
したがって、アドレス14に送信するために、DMAコントローラ10又は20による読み取りを待っている間、各循環バッファメモリ16に一時的に記憶されるデータは、このメモリ16の読み取りポインタアドレスと最下位から最上位の方向での書き込みポインタPEiの先行アドレスとの間に配置される。他方、循環バッファメモリ16の書き込みポインタPEiのアドレスと最下位から最上位への方向での読み取りポインタPLiのアドレスの先行アドレスとの間に配置されるメモリ領域は、自由に書き込むことができる領域である。PBi、PSi、PEi、及びPLiの各記述子に関連する各循環バッファ16のこの構造を、詳細に後述する図3A及び図3Bに示す。
例えば、より正確には、各書き込みポインタPEiは、対応する循環バッファメモリ16での書き込み動作後に、最下位から最上位への方向に基本ロケーションをインクリメントすることにより更新することができる。
他方、読み取りポインタPL1、・・・、PLi、・・・、PLnは、ファームウェア40、・・・、40、・・・、40のそれぞれの実行により更新される。例えば、これらファームウェア40、・・・、40、・・・、40は、循環バッファメモリ16、・・・、16、・・・、16と同じ記憶媒体に記憶され、各循環バッファメモリに関連付けられる。ファームウェアは、読み取り管理モジュール30により実行される。
本発明によれば、各ファームウェア40は、データを読み取り、関連付けられた循環バッファメモリ16の読み取りポインタPLiを更新するようにプログラムされる。また本発明によれば、DMAコントローラ10又は20には、アドレス14に転送されるデータシーケンス内で要求される、ソース12、・・・、12、・・・、12から導出されたデータの所定の順序に応じて、ファームウェア40、・・・、40、・・・、40の実行を同期させる手段が提供される。
より正確には、同期手段は、例えば、少なくとも1つの読み取り・更新権をあるファームウェア40から他のファームウェアに送信する手段を備えることができ、現在実行中のファームウェア40、・・・、40、・・・、40の1つが読み取り・更新権を一時的に保持することにより、そのファームウェアは、関連付けられた循環バッファメモリ16内で少なくとも1つのデータ読み取り及び対応する読み取りポインタPLiの少なくとも1つの更新を実行することができる。
単純な一実施形態では、この読み取り・更新権は一意であり、トークンと呼ばれ、図2ではTと記される。2つのオブジェクトが同時に実行されることを回避するためのオブジェクトからオブジェクトに循環する単一のトークンという概念は、コンピュータ科学において周知であり、詳細に説明しない。これは、特に基本のトークン待ち・送信関数(elementary waiting and token function)を使用して、プログラミングによりシミュレートされる。
この場合、現在実行中の異なるファームウェア40、・・・、40、・・・、40間のトークンTの循環は、以下のように各ファームウェアにプログラムすることができる。
−各ファームウェア40が、トークンTを待つ少なくとも1つの命令を含み、
−各ファームウェア40が、循環バッファメモリ16内で少なくとも1回の読み取り及び読み取りポインタPLiの少なくとも1つの更新が実行された後、トークンTを現在実行中の別ファームウェア40に送信する少なくとも1つの命令を含む。
したがって、同期手段は、読み取り管理モジュール30と、モジュール30が実行できるファームウェア40、・・・、40、・・・、40に統合されたトークンを待ち送信するこれら命令との組み合わせから生まれる。
しかし、異なるファームウェア間で循環する読み取り・更新権を実施する同期プリミティブとして単一のトークンTを使用することは、ファームウェアプログラム(ひいてはソース)の数が増大し、出力データのインタレースがより複雑になった場合、確実ではない。このトークンを使用して読み取りがどのように同期させるかを不注意にプログラミングすると、異なるファームウェア間でのブロック又は実行衝突が生じる恐れがある。
これは、セマフォ、特に2つのファームウェアプログラムに1つのセマフォを有するミューテックス(相互排除)セマフォとして適格なバイナリセマフォを使用して読み取り・更新権を実装することにより補正することができる。したがって、C セマフォが、N個のソースを有するDMAコントローラに定義される。すべてのファームウェアの衝突の管理は、各セマフォが特に、識別された2つのファームウェアプログラム間で交換されるため、単純化される。明らかに、トークン及びバイナリセマフォの概念は、2つのソースを有するDMAコントローラに当てはまる。
単純であるが限定的ではない特定の適用例での図1の直接メモリアクセスコントローラ10又は20の有利な動作を図2に示す。この適用例は、関連付けられた読み取りポインタのデータ読み取り・更新ファームウェア40、・・・、40、・・・、40を同期させる原理を単に実証するためだけに選択されたものである。この適用例によれば、第1のデータソース12が、データシーケンスd1,2、d2,1、d3,1、・・・をDMAコントローラ10又は20に提供し、DMAコントローラ10又は20は、それらデータを循環バッファメモリ16に一時的に記憶する。書き込みポインタPE1のアドレス更新によるアドレスのインクリメントにより、それらソース12により提供されるシーケンスの順序で循環バッファメモリ16に記憶される。第2のデータソース12は、データシーケンスd1,2、d2,2、d3,2、・・・をDMAコントローラ10又は20に提供し、DMAコントローラ10又は20は、それらデータを循環バッファメモリ16に一時的に記憶する。同様に、書き込みポインタPE2のアドレス更新によるアドレスのインクリメントにより、それらデータは、ソース12により供給されたシーケンスの順序で循環バッファメモリ16に記憶される。次に、DMAコントローラは、2つのソース12及び12から導出されたデータを、2つのシーケンスをインタレースさせて1つのシーケンスd1,1、d1,2、d2,1、d2,2、d3,1、d3,2、・・・を提供して、アドレス14に送信しなければならない。
この出力シーケンスが提供される前、データ送信でのソース12又は12のうちの一方のその他に対する遅延に関係なく、バッファメモリ16及びバッファメモリ16のそれぞれに関連付けられたファームウェア40及び40は、以下のように定義される。
ファームウェア40
For i in 0 to n(メモリ16において読み取るべきデータ数)
PL1+=k;(所定のインクリメントを使用してポインタPL1を更新する)
Dest=*PL1;(データを読み取り、アドレス14に送信する)
Send T to 40;(トークン/ミューテックスをファームウェア40に送信する)
Wait T;(トークン/ミューテックスを待つ)
End for
ファームウェア40
For i in 0 to n(メモリ16において読み取るべきデータ数)
PL2+=k;(所定のインクリメントを使用してポインタPL2を更新する)
Dest=*PL2;(データを読み取り、アドレス14に送信する)
Send T to 40;(トークン/ミューテックスをファームウェア40に送信する)
Wait T;(トークン/ミューテックスを待つ)
End for
インクリメントkは1に等しくてよいが、ソース12及び12のいずれかにより提供されるすべてのデータのすべてを送信する必要があるわけではない場合、1よりも大きくてもよい。
したがって、ソースが互いに同期されない場合であっても、データが読み取られて出力シーケンスd1,1、d1,2、d2,1、d2,2、d3,1、d3,2、・・・を提供する都度、トークン又はミューテックスTは、ファームウェア40と40との間で循環する。さらに、要求される出力シーケンスのこの決定論的な供給は、DMAコントローラ10又は20が任意のマイクロプロセッサと同期されずに行われる。
データインタレースはCDMA(符号分割多元接続)技術を使用して、又はパイロットデータを無視しながら有用データを読み取ることで、2つのMIMO(多入力多出力)データフレームを組み合わせることにより行われるため、DMAコントローラを使用するファームウェア40、・・・、40、・・・、40のこの同期の多くの実際用途がある。
したがって、DMAコントローラが、データソースがその他のソースから独立してデータを送信する速度に関係なく、アドレス14にデータをデータソースの所定の順序で単純且つ効率的に提供可能なことは極めて明白である。
いくつかのソースから導出されたデータがアドレスに提供される順序を管理するこの機能と組み合わせて、本発明の特定の一実施形態では、DMAコントローラが入力フロー同期機能及び出力フロー同期機能も実行し得ることが可能である。
この特定の実施形態の実施を可能にするにはまず、DMAコントローラは、上記定義した書き込み管理モジュール24を備えなければならない。
この場合、データ書き込み管理モジュール24は、特に書き込みポインタPEi及び読み取りポインタPLiの相対値に依存して、任意の1つの循環バッファメモリ16へのデータの書き込みを許可又は阻止するように設計される。データ書き込み管理モジュール24は、書き込みポインタPEiを基本ロケーション1つ分だけインクリメントすることにより、シーケンサを使用して書き込みポインタPEiを自動的に更新するようにも設計される。より正確には、本発明のこの特定の実施形態の単純な一変形では、循環バッファメモリ16内に書き込むべきデータは、書き込みポインタPEiにより示されるアドレスに書き込まれなければならず、このデータの書き込みは、書き込み管理モジュール24が以前に行った書き込みポインタPEiへの更新が、書き込みポインタPEiが指すアドレスが、読み取りポインタPLiが指すアドレスに達するか、又はそれを超えるようなものである(メモリが満杯である)場合、阻止されなければならない。
同様に、データ読み取り管理モジュール30は、特に書き込みポインタPEi及び読み取りポインタPLiの相対値に応じて、循環バッファメモリ16内のデータの読み取りを許可又は阻止するように設計される。データ読み取り管理モジュール30は、各ファームウェア40を実行することにより、各読み取りポインタPLiを更新するようにも設計される。より正確には、本発明のこの特定の実施形態の単純な一変形では、循環バッファメモリ16内で読み取られるべきデータは、読み取りポインタPLiにより示されるアドレスで読み取られなければならず、読み取り管理モジュール30により行われた読み取りポインタPLiへの更新が、読み取りポインタPLiが指すアドレスが、書き込みポインタPEiが指すアドレスに達するか、又はそれを超えるようなものである(メモリが空である)場合、データの読み取りは、阻止されなければならない。
特に、任意の循環バッファメモリ16での読み出し動作及び書き込み動作の阻止及び非阻止が上述したように機能可能なように、書き込み管理モジュール24は、書き込みポインタPEiの各更新後に、
−書き込みポインタPEiが読み取りポインタPLiに達した場合(メモリが満杯であることを示す)、循環バッファメモリ16へのすべてのデータの書き込みを阻止すること、及び
−以前、この読み取りが阻止され、書き込みポインタPEiが読み取りポインタPLiを再び超える場合、循環バッファメモリ16内のデータ読み取りを阻止しないこと
を行うようにプログラムすることができる。
同様に、読み取り管理モジュール30は、読み取りポインタPLiの各更新後に、
−読み取りポインタPLiが書き込みポインタPEiに達した場合(メモリが空であることを示す)、循環バッファメモリ16内のすべてのデータ読み取りを阻止すること、及び
−以前、この書き込みが阻止され、読み取りポインタPLiが読み取りポインタPEiを再び超えた場合、循環バッファメモリ16へのデータの書き込みを阻止しないこと
を行うようにプログラムすることができる。
このようにして、書き込み管理モジュール24は、メモリ16が満杯の場合、書き込み阻止機能を実行し、メモリ16が空の場合、読み取り非阻止機能を実行し、再び満杯にする。読み取り管理モジュール30は、メモリ16が空の場合、読み取り阻止機能を実行し、満杯のメモリ16が再び空になった場合、書き込み非阻止機能を実行する。
上述した書き込み管理モジュール24及び読み取り管理モジュール30の詳細な動作は、書き込みポインタPE1、・・・、PEi、・・・、PEn及び読み取りポインタPL1、・・・、PLi、・・・、PLnを使用して循環バッファメモリ16、・・・、16、・・・、16内の書き込み及び読み取り阻止手段の単なる一例である。しかし、当業者は、書き込みポインタPE1、・・・、PEi、・・・、PEn及び読み取りポインタPL1、・・・、PLi、・・・、PLnの値に応じて、循環バッファメモリ16、・・・、16、・・・、16に読み書きを阻止させる他の実施態様又は変形も考案可能なことを理解するであろう。
これら特徴により、DMAコントローラ10又は20は、ソース12、・・・、12、・・・、12からの入力データフロー及びアドレス14への出力フローを同期することができる。
結果として、例えば、1つ又は複数のマイクロプロセッサにより処理又は使用されたデータの一時的なローカル記憶領域であり得るいくつかのデータソース12、・・・、12、・・・、12と、例えば、周辺機器又は任意の機能オペレータであり得るアドレス14と、変形実施形態20に準拠し、循環バッファメモリ16、・・・、16、・・・、16を含むDMAコントローラとを含む集積回路において、マイクロプロセッサは、それらソースとアドレス14との間でDMAコントローラにより行われる転送から独立して、データをソース12、・・・、12、・・・、12に転送することができる。
このDMAコントローラ同期機能と併せて、本発明の別の実施形態では、第1の変形によれば、各循環バッファメモリ16に「作業ポインタ」と呼ばれる新しい読み取りポインタを定義することが可能である。この作業ポインタPTiは、前に定義した読み取りポインタPLiと異なる。読み取りポインタのように、作業ポインタは記憶手段38に記憶される。作業ポインタは変数であり、実行される各読み取り動作後にファームウェア40により更新される。
2つのソース12及び12を有する単純な実施形態を示す図3A及び図3Bでは、2つの作業ポインタPT1及びPT2が、書き込みポインタPE1、PE2及び読み取りポインタPL1及びPL2に追加される。より正確には、図3Aは循環バッファメモリ構造16を表し、図3Bも同様に、循環バッファメモリ16を示す。
したがって、各ファームウェア40は、作業ポインタPTiを更新する論理が、循環バッファメモリ16において少なくとも1つのアドレスジャンプを含み、それにより、生成したシーケンスとは異なる順序でソース12から導出されたデータを読み取ることが可能なように定義することができる。この新しいポインタPTi及び図3A及び図3Bに示すように、各循環バッファ16i内の順方向又は逆方向へのアドレスジャンプによる更新を行う可能性を導入することにより、このバッファメモリは、単純なFIFO式リストのようには使用されない。作業ポインタPT1、・・・、PTi、・・・、PTnにより、DMAコントローラ10又は20は、ソース12、・・・、12、・・・、12自体から受信された各データシーケンスを並び替えることができる。
この第1の変形では、任意の1つの循環バッファ16の読み取りポインタPLiは、データを書き込むためにメモリ領域を解放する読み取りポインタである。換言すれば、この読み取りポインタが更新される都度、前に指されていたアドレスのロケーションと、読み取りポインタPLiにより指される新たなアドレスのロケーションの先行ロケーションとの間のメモリ領域は、書き込みのために自動的に解放される。これは、上述したように、書き込みポインタPEiのアドレスと、最下位から最上位への方向での読み取りポインタPLiのアドレスに先行するアドレスとの間の循環バッファメモリ16内に配置されるメモリ領域が、原理上、自由に書き込むことができる領域としてみなされることによる。
任意の1つの循環バッファメモリ16の作業ポインタPTiはそれ自体、読み取られたデータを保持する読み取りポインタである。換言すれば、データをアドレス14に送信できるように、データを循環バッファメモリ16において読み取る必要がある場合、データは、作業ポインタPTiにより示されるアドレスから読み取られる。しかし、この読み取り後の作業ポインタPTiの更新は、書き込みのために対応する基本ロケーションを解放しない。読み取りでの作業ポインタPTiの変位は、アドレスの昇順でソース12から発せられたデータシーケンスに従う必要はない。変位は、任意の順序で、好ましくは読み取りポインタPLiと書き込みポインタPEiとの間でファームウェア40iにより自由に事前に決定される。特に、用途に応じて、作業ポインタPTiにより最初に読み取られたデータを再び読み取ることができ、データを、循環バッファメモリ16に記憶された順序とは異なる順序で読み取ることができる。
したがって、各作業ポインタPTiが読み取りポインタであるこの変形実施形態では、各ファームウェア40が、読み取り管理モジュール30により実行されて、循環バッファメモリ16に関連付けられた2つの読み取りポインタを更新する命令であって、
−作業ポインタPTiの目標とする用途に応じて、順方向及び/又は逆方向のアドレスジャンプを含み得る命令、
−作業ポインタPTiにプログラムされた変位に応じて、読み取りポインタPLiのみに順方向アドレスジャンプを含み得る命令
を含むことが分かる。
他方、ファームウェア40、・・・、40、・・・、40のいずれも書き込みポインタPE1、・・・、PEi、・・・、PEnを更新する命令を含まず、書き込みポインタPE1、・・・、PEi、・・・、PEnは、例えば、循環バッファメモリ16、・・・、16、・・・、16のうちの1つでの各データ書き込み動作においてアドレスジャンプなしでインクリメントされるようにシーケンサにより更新され得る。
任意の作業ポインタPTiの変位が、図3Aに示すように、ポインタが読み取るべきデータを実際に含む循環バッファメモリゾーン16を指すようにプログラムされなければならないことにも留意する。作業ポインタのうちの1つが、更新後(図3Bに示す)にこのゾーンの外部を指す場合、目標とする用途に応じて、エラーメッセージを生成することができるか、又は書き込みポインタPEiが追いつくまでこの位置に凍結させることができる。
上記と対称をなす一変形実施形態では、データシーケンスを並べ替えるために、各循環バッファメモリ16の書き込みポインタとして新しい作業ポインタPTiを定義することも可能であろう。
この第2の変形では、各循環バッファメモリ16の書き込みポインタPEiは、循環バッファメモリ16内にデータを書き込むメモリ領域が確保された書き込みポインタである。換言すれば、書き込みポインタが更新される都度、前に指していたアドレスのロケーションと書き込みポインタPEiにより新たに指されるアドレスの先行ロケーションとの間のメモリ領域は、自動的に読み取りに確保される。作業ポインタPTiは、任意の所定の順序で循環バッファメモリ16内のポインタPEiにより確保されるメモリ領域内にデータを書き込む効果的な書き込みポインタである。
しかし、この第2の変形は、循環バッファメモリ16、・・・、16、・・・、16内の書き込み末端に閉塞を生成される恐れがあるため、前の変形よりも魅力が劣る。DMAコントローラによるデータを転送する用途では、書き込み末端の上流よりも循環バッファメモリ内の読み取り末端の下流において閉塞を何とかすることが好ましい。
これより、DMAコントローラ管理ブロックが循環バッファメモリ16及び16に読み書きし、作業ポインタPT1及びPT2が、各循環バッファメモリで読み出されたデータを保持する読み取りポインタとして導入される上述した第1の変形実施形態を参照して、2つのソース12及び12から導出されたデータを転送する方法であって、転送されるデータはインタレースされ、DMAコントローラ10又は20はそのデータを使用可能である、方法の例の詳細を説明する。この方法の連続ステップを図4に示す。
この転送方法は、3つ以上のソースに一般化するすることができ、この特定の例は、データインタレース用途のみならず、単純な説明及び例を提供するために、図4を参照して与えられる。
第1のステップ100において、コントローラ10又は20は、循環バッファメモリ16(この例では、i=1又は2)のうちの1つへのデータ読み取り又は書き込み命令を待つ。
このステップ100の後に、ステップ102が続き、循環バッファメモリ16のうちの1つでのデータ書き込み命令を受けて、書き込みを開始する。書き込み管理モジュール24は、この書き込み開始ステップ中にアクティブ化される。非限定的な実施形態例として、書き込み管理モジュール24は、記憶手段38から、このバッファメモリへの書き込みが阻止されるか否かを示す循環バッファメモリ16の第1の記述子の値を抽出する。
次に、この第1の記述子の値に応じて、テストステップ104が行われて、循環バッファメモリ16内で考慮されるデータの書き込みを続けるか否かが判断される。第1の記述子により、書き込みが阻止されることが示される場合、ステップ100が繰り返され、その他の場合、ステップ106が使用される。
ステップ106において、書き込み管理モジュール24は、書き込みポインタPEiが指すアドレスを記憶手段38から抽出する。次に、書き込み管理モジュール24は、考慮されるデータを循環バッファメモリ16の対応する基本ロケーションに書き込む。
次に、更新ステップ108において、書き込みポインタPEiが指すアドレスが、循環バッファメモリ16i内で基本ロケーション1つ分だけインクリメントされる。
最後に、ステップ110において、書き込み管理モジュール24は、読み取りポインタPLiが指すアドレスを記憶手段38から抽出し、次に、可能な場合には、以下の状況において、第1の書き込み阻止記述子の値及び循環バッファメモリ16の第2の読み取り阻止記述子の値を更新する。
−ステップ108での更新後、書き込みポインタPEiが指すアドレスが、読み取りポインタPLiが指すアドレスに達する場合(メモリ16が満杯であることを示す)、第1の記述子は、書き込みが循環バッファメモリ16において阻止されることを示すように変更される。
−ステップ108での更新後、書き込みポインタPEiが指すアドレスが、読み取りポインタPLiが指すアドレスと異なり、第2の記述子が、読み取りが阻止されることを示す場合、第2の記述子は、読み取りが循環バッファメモリ16において許可されることを示すように変更される。
ステップ110の後、ステップ100が繰り返される。
ステップ100の後には、ステップ112も続き、ファームウェア40がアクティブ化された後、循環バッファメモリ16でのデータシーケンスの読み取りが開始される。このアクティブ化ステップは、読み取り管理モジュール30により実行される。非限定的な実施形態例として、読み取り管理モジュール30は、記憶手段38から、読み取りがこのバッファメモリにおいて阻止されるか否かを示す循環バッファメモリ16の第2の記述子の値を抽出する。
次に、テストステップ114において、読み取り管理モジュール30は、アドレス14がデータを受信可能な状態にあるか否かを判断する。このテストは、いくつかの方法で行うことができる。DMAコントローラ10又は20が出力バッファ36を備える場合、出力バッファ36が満杯ではない限り、データを転送できると考えることができる。デフォルトにより、又は補足として、従来の通信プロトコルにより、アドレス14はDMAコントローラ10又は20にアドレス14の所定の形式でのメッセージによるデータ受信能力について通知することが可能であり得る。データをアドレス14に転送することが不可能な場合、ファームウェア40の実行は、ステップ114において阻止されたままである。次のステップ116は、出力バッファ36が空になりつつあるため、又はDMAコントローラが、アドレスがデータを受信可能なことを通知するメッセージを受信したために、アドレスが再びデータを受信可能な状態になるまで開始されない。
ステップ116は、別のテストステップである。このステップ中、第2の記述子の値に応じて、循環バッファメモリ16でのデータ読み取りを続けるか否かが判断される。このメモリ16の第2の記述子が、読み取りが阻止されることを示す場合、ファームウェア40の実行は、ステップ116において阻止されたままであり、その他の場合、次のステップ118が行われる。循環バッファメモリ16内に書き込まれたデータが第2の記述子の値を変更しない限り(ステップ110)、シーケンスはステップ116において阻止状態を保つ。
ステップ118は、循環バッファメモリ16が読み取られ、作業ポインタPT1が更新され、場合によっては、読み取りポインタPL1がファームウェア40の命令に従って更新されるステップである。
次に、ステップ120中、読み取り管理モジュール30はおそらく、以下の状況において、循環バッファメモリ16での第1の書き込み阻止記述子の値及び第2の読み取り阻止記述子を更新する。
−読み取りポインタPL1が指すアドレスが、ステップ118での更新後に、書き込みポインタPE1が指すアドレスに達する場合(メモリ16が空であることを示す)、第2の記述子は、循環バッファメモリ16において読み取りが阻止されることを示すように変更される。
−読み取りポインタPL1が指すアドレスが、ステップ118での更新後に、書き込みポインタPE1が指すアドレスと異なり、第1の記述子が、書き込みが阻止されることを示す場合、第1の記述子は、循環バッファメモリ16での書き込み許可を示すように変更される。
ステップ120の後に、ステップ122が続き、トークンT(又はミューテックス)をファームウェア40に送信する。
ステップ122の後に、ステップ124が続き、トークンTを待つ。ファームウェア40は、現在実行中のトークンを別のファームウェア、実際にはファームウェア40から受信しない限り、このステップにおいて阻止状態を保つ。トークンTを受信するとすぐに、ソース12から発せられたデータシーケンスを読み取るカウンタがインクリメントされ、シーケンス全体が読み取られるまで、ステップ114が再び実行される。要求されるシーケンス全体が読み取られた場合、ファームウェア40の実行を終了する(F)。
ステップ100の後には、ステップ212も続き、ファームウェア40がアクティブ化された後、循環バッファメモリ16でのデータシーケンスの読み取りが始動する。このアクティブ化ステップは、読み取り管理モジュール30により実行される。非限定的な実施形態例として、読み取り管理モジュール30は、記憶手段38から、このバッファメモリにおいて読み取りが阻止されるか否かを示す循環バッファメモリ16の第2の記述子の値を抽出する。
ステップ212の後に、ステップ214が続き、トークンTを待つ。ファームウェア40は、このステップにおいて、現在実行中のトークンを別のファームウェア、実際にはファームウェア40から受信しない限り、このステップにおいて阻止状態を保つ。トークンTを受信するとすぐに、テストステップ216が開始される。
このテストステップ216中、読み取り管理モジュール30は、アドレス14がデータを受信可能な状態であるか否かを判断する。このステップは、上述したステップ114と同じである。ファームウェア402の実行は、データをアドレス14に転送することができない限り、このステップにおいて阻止状態を保つ。
次のステップ218は別のテストステップである。このステップ中、循環バッファメモリ16の第2の記述子の値に応じて、データ読み取りを続けるか否かが判断される。このメモリ16の第2の記述子が、読み取りが阻止されることを示す場合、ファームウェア40の実行はステップ218において阻止状態を保ち、その他の場合、次のステップ220が開始される。循環バッファメモリ16へのデータの書き込みが、第2の記述子の値を変更しない限り(ステップ110)、シーケンスはステップ218において阻止状態を保つ。
ステップ220は、循環バッファメモリ16において読み取り、作業ポインタPT2を更新し、場合によっては、ファームウェア40の命令に従って読み取りポインタPL2を更新するステップである。
次に、ステップ222中、読み取り管理モジュール30は、以下の状況において、循環バッファメモリ16の第1の書き込み阻止記述子の値及び第2の読み取り阻止記述子の値を更新し得る。
−読み取りポインタPL2が指すアドレスが、ステップ220での更新後、書き込みポインタPE2が指すアドレスに達する場合(メモリ16が空であることを示す)、第2の記述子が、循環バッファメモリ16において読み取りが阻止されることを示すように変更される。
−読み取りポインタPL2が指すアドレスが、ステップ220での更新後、書き込みポインタPE2が指すアドレスと異なり、第1の記述子が、書き込みが阻止されることを示す場合、第1の記述子は、循環バッファメモリ162において書き込みが許可されることを示すように変更される。
ステップ222の後に、ステップ224が続き、トークンTがファームウェア40に送信される。トークンTが送信されるとすぐに、ソース12から導出されたデータシーケンスの読み取りカウンタがインクリメントされ、シーケンス全体が読み取られるまで、実行は待つステップ214に戻る。要求されるシーケンス全体が読み取られた場合、ファームウェア40の実行は終了する(F)。
明らかなことに、循環バッファメモリでの読み取り及び同じ循環バッファメモリでの書き込みを行うファームウェアの実行は、DMAコントローラ10又は20により独立して並列に管理することができる。これは、読み取りファームウェア間でのトークンT(又はより一般的にはセマフォ)の循環により決定されるアドレスに送信されるデータシーケンスを何等変更しない。
したがって、上述した直接メモリアクセスコントローラ及びそのデータ転送動作により、いくつかのソースから少なくとも1つのアドレスへのデータ転送の管理が、DMAコントローラがアドレスにデータを送信する所定の順序に関して、容易になることがかなり明らかである。
本発明が考案された実施形態に限定されないことにも留意する。特に、上記では、説明を簡単にするために、転送が単一のアドレスに対して行われる適用例を使用することが考案されたが、本発明の原理は、いくつかのアドレスがある場合でも等しく適用可能である。
より一般的には、当業者は、上記に開示される情報を考慮した後、上述した実施形態に対していくつかの変更を行い得ることを認識するであろう。以下の特許請求の範囲内で使用される用語は、特許請求の範囲をこの説明に提示される実施形態に限定するものとして解釈されてはならず、当業者が一般的な知識を適用して、ここで開示された情報を利用することにより構築され、予測され得る、特許請求の範囲が包含を目的とするすべての均等物を含むものと解釈されなければならない。

Claims (10)

  1. 所定数の連続した基本メモリロケーションをそれぞれ含むいくつかのバッファメモリ(16、・・・、16、・・・、16)を通して、データをいくつかのデータソース(12、・・・、12、・・・、12)からそれらデータの少なくとも1つのアドレス(14)に転送する直接メモリアクセスコントローラ(10、20)であって、前記バッファメモリ(16、・・・、16、・・・、16)に記憶されているデータを読み取り、前記アドレス(14)にシーケンスで転送するように設計された読み取り管理モジュール(30)と、各バッファメモリにそれぞれ関連付けられた読み取りポインタ(PL1、PL2)記憶手段(38)とを備え、各読み取りポインタは、データを読み取ることができる、関連付けられた前記バッファメモリの基本ロケーションを示し、前記バッファメモリ(16、・・・、16、・・・、16)のそれぞれに各データソース(12、・・・、12、・・・、12)が関連付けられ、バッファメモリ毎に、前記コントローラ(10、20)は、ファームウェア(40、・・・、40、・・・、40)を実行して、データを読み取り、このバッファメモリに関連付けられた前記読み取りポインタを更新する手段を備え、コントローラ(10、20)が、アドレスに転送されるデータシーケンス内で要求されるバッファメモリから発せられたデータの所定の順序に応じて、ファームウェアの実行を同期させる手段(30、40、・・・、40、・・・、40)を備えることを特徴とする、直接メモリアクセスコントローラ(10、20)。
  2. 前記同期手段(30、40、・・・、40、・・・、40)が、少なくとも1つの読み取り・更新権をあるファームウェアから別のファームウェアに送信する手段を備え、現在実行中のあるファームウェア(40、・・・、40、・・・、40)が読み取り・書き込み権を保持することにより、前記ファームウェアは、関連付けられた前記バッファメモリ(16、・・・、16、・・・、16)内の少なくとも1回の読み取り及び対応する前記読み取りポインタ(PL1、PL2)の少なくとも1回の更新を実行することが可能である、請求項1に記載の直接メモリアクセスコントローラ(10、20)。
  3. 各バッファメモリ(16、・・・、16、・・・、16)は循環式のものであり、任意の1つの前記循環バッファメモリの各基本ロケーションは、この循環バッファメモリの最下位アドレス(PB1、PB2)と最上位アドレス(PS1、PS2)との間のアドレスにより識別され、前記記憶手段(38)は、各循環バッファメモリに関連付けられ、データを書き込むことができる、関連付けられた前記バッファメモリの基本ロケーションをそれぞれ示す書き込みポインタ(PE1、PE2)を備え、前記コントローラは、ソース(12、・・・、12、・・・、12)から受信したデータを、対応する前記循環バッファメモリ内の、対応する前記書き込みポインタ(PE1、PE2)で示される前記アドレスに書き込むように設計された書き込み管理モジュール(24)並びに各循環バッファメモリの前記読み取りポインタ(PL1、PL2)及び前記書き込みポインタ(PE1、PE2)により示される前記基本ロケーションの相対位置に応じて、各循環バッファメモリでの読み取り、書き込みのそれぞれを阻止する手段(24、30、40、・・・、40、・・・、40)も備える、請求項1又は2に記載の直接メモリアクセスコントローラ(10、20)。
  4. 任意の1つの前記循環バッファメモリ(16、・・・、16、・・・、16)内の前記読み取り阻止手段(30、40、・・・、40、・・・、40)は、読み取りポインタ(PL1、PL2)への更新が、読み取りポインタ(PL1、PL2)が指すアドレスが、書き込みポインタ(PE1、PE2)が指すアドレスに達するか、又はそれを超えることを意味する場合、この循環バッファメモリ内のいかなるデータ読み取りも阻止するように設計され、任意の1つの前記循環バッファメモリ(16、・・・、16、・・・、16)内の前記書き込み阻止手段(24、40、・・・、40、・・・、40)は、書き込みポインタ(PE1、PE2)への更新が、書き込みポインタ(PE1、PE2)が指すアドレスが、読み取りポインタ(PL1、PL2)が指すアドレスに達するか、又はそれを超えることを意味する場合、この循環バッファメモリ内のいかなるデータ書き込みも阻止するように設計される、請求項3に記載の直接メモリアクセスコントローラ(10、20)。
  5. 循環バッファメモリ(16、・・・、16、・・・、16)毎に、前記記憶手段(38)は、前記循環バッファメモリに関連付けられた前記読み取りポインタ(PL1、PL2)とは異なる「作業ポインタ」(PT1、PT2)と呼ばれる読み取りポインタも備え、この作業ポインタ(PT1、PT2)は、データを読み取らなければならない、関連付けられた前記バッファメモリの基本ロケーションを示し、この循環バッファメモリに関連付けられた前記ファームウェアは、所定の更新論理を使用して、この循環バッファメモリでの読み取りの都度、前記作業ポインタを更新するようにも設計される、請求項3又は4に記載の直接メモリアクセスコントローラ(10、20)。
  6. 各循環バッファメモリの前記作業ポインタ(PT1、PT2)の前記所定の更新論理は、データが書き込まれた順序とは異なる順序で、含まれるデータを読み取るように、この循環バッファメモリにおける少なくとも1つのアドレスジャンプを含む、請求項5に記載の直接メモリアクセスコントローラ(10、20)。
  7. 請求項1〜6のいずれか一項に記載の直接メモリアクセスコントローラ(10、20)により、所定数の連続した基本メモリロケーションをそれぞれ含むいくつかのバッファメモリ(16、・・・、16、・・・、16)を通して、データをいくつかのデータソース(12、・・・、12、・・・、12)からそれらデータの少なくとも1つのアドレス(14)に転送する方法であって、任意の1つの前記ソースから受信された各データは、書き込み管理モジュール(24)により、このソースに関連付けられたバッファメモリに送信され(106)、前記アドレス(14)に送信される各データは、前記コントローラにより前記バッファメモリのうちの1つにおいて読み取られ(118、220)、該方法が、
    −バッファメモリ毎に、前記コントローラが、ファームウェア(40、40)を実行して、このバッファメモリから前記データを読み取り、データを読み取ることができるこのバッファメモリ内の基本ロケーションを示す読み取りポインタを更新するステップ(112、212)と、
    −前記アドレス(14)に転送される前記データシーケンス内で要求されるバッファメモリから導出されるデータの所定の順序に応じて、前記ファームウェア(40、40)の実行を同期させるステップ(122、124、214、224)と
    を含むことを特徴とする、方法。
  8. 前記同期ステップ(122、124、214、224)は、現在実行中の異なる前記ファームウェア間での少なくとも1つの読み取り・更新権のプログラムされた循環により行われ、現在実行中の前記ファームウェアのうちの1つが前記読み取り・更新権を一時的に保持することにより、前記ファームウェアは、関連付けられた前記バッファメモリ内の少なくとも1回の読み取り及び対応する前記読み取りポインタの少なくとも1回の更新を実行することができる、請求項7に記載のデータ転送方法。
  9. 現在実行中の異なる前記ファームウェア間での少なくとも1つの読み取り・更新権のプログラムされた循環は、以下:
    −各ファームウェアの実行が、このファームウェア内にプログラムされた命令に従って前記読み取り・更新権を待つ少なくとも1つのステップ(124、214)を含み、
    −各ファームウェアの実行が、少なくとも1回の読み取り及びこのファームウェアに関連付けられた前記読み取りポインタの少なくとも1回の更新を実行した後、このファームウェアにプログラムされた命令に従って、前記読み取り・更新権を現在実行中の別のファームウェアに送信する少なくとも1つのステップ(122、224)を含む
    ように行われる、請求項8に記載のデータ転送方法。
  10. コンピュータにより読み取り可能であり、且つ/又は直接メモリアクセスコントローラ(10、20)により実行可能な、通信ネットワークからダウンロード可能であり、且つ/又は媒体に記録可能なコンピュータプログラムであって、前記プログラムが直接メモリアクセスコントローラにより実行された場合、請求項7〜9のいずれか一項に記載のデータ転送方法のステップを実行するプログラムコード命令を含むことを特徴とする、コンピュータプログラム。
JP2010226063A 2009-10-08 2010-10-05 複数のソースを有する直接アクセスメモリコントローラ、それに対応する方法及びコンピュータプログラム Active JP5205603B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR0957033A FR2951290B1 (fr) 2009-10-08 2009-10-08 Controleur d'acces direct en memoire a sources multiples, procede et programme d'ordinateur correspondants
FR0957033 2009-10-08

Publications (2)

Publication Number Publication Date
JP2011081801A true JP2011081801A (ja) 2011-04-21
JP5205603B2 JP5205603B2 (ja) 2013-06-05

Family

ID=42026707

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010226063A Active JP5205603B2 (ja) 2009-10-08 2010-10-05 複数のソースを有する直接アクセスメモリコントローラ、それに対応する方法及びコンピュータプログラム

Country Status (5)

Country Link
US (1) US8260981B2 (ja)
EP (1) EP2320325B1 (ja)
JP (1) JP5205603B2 (ja)
AT (1) ATE528715T1 (ja)
FR (1) FR2951290B1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016504668A (ja) * 2012-11-21 2016-02-12 コーヒレント・ロジックス・インコーポレーテッド 分散型プロセッサを有する処理システム

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011030070A1 (fr) 2009-09-11 2011-03-17 Commissariat à l'énergie atomique et aux énergies alternatives Controleur d'acces direct en memoire, procede et programme d'ordinateur correspondants
FI127335B (en) * 2016-05-27 2018-04-13 Cysec Ice Wall Oy Logging of telecommunications on a computer network
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
US10747442B2 (en) 2017-11-29 2020-08-18 International Business Machines Corporation Host controlled data chip address sequencing for a distributed memory buffer system
US10395698B2 (en) 2017-11-29 2019-08-27 International Business Machines Corporation Address/command chip controlled data chip address sequencing for a distributed memory buffer system
US10489069B2 (en) 2017-11-29 2019-11-26 International Business Machines Corporation Address/command chip synchronized autonomous data chip address sequencer for a distributed buffer memory system
US10534555B2 (en) 2017-11-29 2020-01-14 International Business Machines Corporation Host synchronized autonomous data chip address sequencer for a distributed buffer memory system
FR3118528B1 (fr) 2020-12-28 2023-12-01 Commissariat Energie Atomique Module mémoire adapté à mettre en oeuvre des fonctions de calcul
US11966631B2 (en) * 2021-04-16 2024-04-23 Western Digital Technologies, Inc. Command queue order adjustment in a data storage device
GB2619288A (en) * 2022-05-27 2023-12-06 Advanced Risc Mach Ltd Writing beyond a pointer

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05289847A (ja) * 1992-04-06 1993-11-05 Toshiba Corp リングバッファ管理装置
JP2000305891A (ja) * 1999-04-22 2000-11-02 Canon Inc Dmaコントローラおよびdma制御方法
JP2001034588A (ja) * 1999-07-16 2001-02-09 Sony Corp データ処理装置
JP2003087338A (ja) * 2001-09-10 2003-03-20 Matsushita Electric Ind Co Ltd データ伝送装置
JP2006238452A (ja) * 1992-12-21 2006-09-07 Apple Computer Inc 非サイクル有向グラフで接続された構成要素間の通信方法
WO2007099659A1 (ja) * 2006-03-01 2007-09-07 Matsushita Electric Industrial Co., Ltd. データ転送装置及びデータ転送方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5901291A (en) * 1996-10-21 1999-05-04 International Business Machines Corporation Method and apparatus for maintaining message order in multi-user FIFO stacks
GB9802097D0 (en) * 1998-01-30 1998-03-25 Sgs Thomson Microelectronics DMA controller
US7603496B2 (en) * 2006-01-23 2009-10-13 Arm Limited Buffering data during data transfer through a plurality of channels

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05289847A (ja) * 1992-04-06 1993-11-05 Toshiba Corp リングバッファ管理装置
JP2006238452A (ja) * 1992-12-21 2006-09-07 Apple Computer Inc 非サイクル有向グラフで接続された構成要素間の通信方法
JP2000305891A (ja) * 1999-04-22 2000-11-02 Canon Inc Dmaコントローラおよびdma制御方法
JP2001034588A (ja) * 1999-07-16 2001-02-09 Sony Corp データ処理装置
JP2003087338A (ja) * 2001-09-10 2003-03-20 Matsushita Electric Ind Co Ltd データ伝送装置
WO2007099659A1 (ja) * 2006-03-01 2007-09-07 Matsushita Electric Industrial Co., Ltd. データ転送装置及びデータ転送方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016504668A (ja) * 2012-11-21 2016-02-12 コーヒレント・ロジックス・インコーポレーテッド 分散型プロセッサを有する処理システム
JP2017123197A (ja) * 2012-11-21 2017-07-13 コーヒレント・ロジックス・インコーポレーテッド 分散型プロセッサを有する処理システム

Also Published As

Publication number Publication date
US20110087808A1 (en) 2011-04-14
ATE528715T1 (de) 2011-10-15
JP5205603B2 (ja) 2013-06-05
EP2320325B1 (fr) 2011-10-12
FR2951290A1 (fr) 2011-04-15
FR2951290B1 (fr) 2011-12-09
US8260981B2 (en) 2012-09-04
EP2320325A1 (fr) 2011-05-11

Similar Documents

Publication Publication Date Title
JP5205603B2 (ja) 複数のソースを有する直接アクセスメモリコントローラ、それに対応する方法及びコンピュータプログラム
US10831507B2 (en) Configuration load of a reconfigurable data processor
US11188497B2 (en) Configuration unload of a reconfigurable data processor
JP2022516739A (ja) 再構成可能データ・プロセッサの仮想化
TW202115575A (zh) 靜止可重組態的資料處理器
CN114026829B (zh) 同步网络
US7733771B2 (en) NoC semi-automatic communication architecture for “data flows” applications
US9032114B2 (en) Direct memory access controller, corresponding method and computer program
KR100895536B1 (ko) 데이터 전송 방법, 시스템 및 컴퓨터 판독가능 매체
JP2021528929A (ja) データ通過ゲートウェイ
US20160371200A1 (en) Configurable Mailbox Data Buffer Apparatus
JP2010539592A (ja) データを交換する方法及びシステム
US6618354B1 (en) Credit initialization in systems with proactive flow control
US20180212894A1 (en) Fork transfer of data between multiple agents within a reconfigurable fabric
EP2801914A1 (en) System and method for broadcasting data to multiple hardware forwarding engines
CN102388359A (zh) 信号保序方法和装置
JP2021528789A (ja) ストリーミングエンジン
JP2007249560A (ja) プログラマブルコントローラにおけるcpuモジュール
JP2011501306A (ja) データをバックアップおよび復元するための構造および方法
US10623201B2 (en) Device for coupling two bus systems
TW202032383A (zh) 可重組態資料處理器的組態加載和卸載
JP6668638B2 (ja) 情報処理装置、コンパイル方法及びコンパイラ
KR101485246B1 (ko) 확장 원형 버퍼
JP5293233B2 (ja) データ入出力装置
JP2009289269A (ja) バッファメモリにおけるメモリの割り当て方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111201

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120511

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120529

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120827

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120830

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120921

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: 20130108

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130122

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160301

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5205603

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250