JP2006523884A - 並行して実行されるプロセスがfifoバッファを介して通信するデータ処理 - Google Patents

並行して実行されるプロセスがfifoバッファを介して通信するデータ処理 Download PDF

Info

Publication number
JP2006523884A
JP2006523884A JP2006506825A JP2006506825A JP2006523884A JP 2006523884 A JP2006523884 A JP 2006523884A JP 2006506825 A JP2006506825 A JP 2006506825A JP 2006506825 A JP2006506825 A JP 2006506825A JP 2006523884 A JP2006523884 A JP 2006523884A
Authority
JP
Japan
Prior art keywords
data
grain
address
buffer
interface
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.)
Pending
Application number
JP2006506825A
Other languages
English (en)
Inventor
オム、プラカシュ、ガングワル
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.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips Electronics NV
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 Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Publication of JP2006523884A publication Critical patent/JP2006523884A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/10Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Information Transfer Systems (AREA)
  • Communication Control (AREA)
  • Memory System (AREA)

Abstract

処理回路は、データ生成プロセス及びデータ消費プロセスを実行する。前記データ生成プロセスはデータのストリームを生成し、前記データ消費プロセスは前記ストリームの生成と並行して前記データのストリームを消費する。先入れ先出しバッファは、前記データ生成プロセスと前記データ消費プロセスとの間の前記ストリームからデータを渡す。前記バッファはバッファメモリを備え、前記バッファは前記ストリームからデータ項目を循環式に前記バッファメモリ内に書き込む。消費プロセスインターフェイスは、前記データ消費プロセスが前記ストリームからのデータグレーンを使用すること、を可能にするためのコマンドを処理するように配置される。前記インターフェイスは、アクセスされるべき前記グレーン内のデータのアドレスが前記循環FIFOバッファ内でラップアラウンドするかどうかをテストすることにより前記コマンドに応答する。前記インターフェイスは、もし前記アドレスがラップアラウンドするならば、前記FIFOバッファから前記補助メモリ領域に前記グレーンを、コピーされたグレーン内で前記ラップアラウンドが除去されることになるようにコピーする。前記インターフェイスは、前記アドレスが前記グレーン内でラップアラウンドしないときに、前記FIFOバッファから前記グレーンを読み取るよう前記消費プロセスに指示を返し、又は前記アドレスがラップアラウンドするときに、前記補助メモリ領域から読み取るよう指示を返す。

Description

本発明は、データ処理に関し、特に、並行して実行されるプロセスがFIFOバッファを介して通信するデータ処理に関する。
並行して実行されるプロセス間でデータを通信する方法については、題「Eclipse:A Heterogeneous Multiprocessor Architecture for Flexible Media Processing」、M.J.Rutten、J.T.J.van Eijndhoven、E.J.D.Pol、E.G.T Jaspers、P.van der Wolf、O.P.GangwalおよびA.Timmer著、およびIEEE Design and Test of Computers版、Special Issue on Embedded Processor Based Designs、P.Marwedel編、2002年、という文献に説明されている。この文献を「Eclipse」と呼ぶことにする。
Eclipseはメディア処理(例えば、ビデオ画像処理)に関係しており、当該メディア処理ではデータのストリームが1のプロセスから他のプロセスに渡される。Eclipseの1つの重要な側面は、Eclipseが、異なるプロセス間の通信および同期化のための汎用インターフェイスモデルの効率的に実装可能な定義を提供することである。当該インターフェイスモデルは、通信および同期化を行うために使用する必要のあるアプリケーションプログラムインターフェイス(API)のプリミティブ関数の限定セットを定義する。このAPIのプリミティブ関数に関して、信号処理タスクは、(同じまたは異なる処理要素上で、または専用ハードウェアプロセッサまたはその組合せ上で実行するコンピュータプログラムにより、)どのように多様なプロセスが実装されることになるかをオープンにしておくという方法で関数的に記述することができる。その結果、当該インターフェイスモデルは信号処理タスク記述の再使用性を高める。
この結果を達成するため、通信および同期化のためのAPIのプリミティブ関数は、当該プリミティブ関数を効率的に実装できるように慎重に選択される必要がある。上記インターフェイスモデルは、ストリーム内のデータを生成する生成側プロセスと、当該ストリームからのデータを使用する消費側プロセスであって、当該生成プロセスがまだ当該ストリーム内のデータをさらに生成する必要があるときに当該消費プロセスが当該ストリームからのデータを使用するという意味において、並行して実行する事ができるような消費側プロセスとを前提としている。
上記プロセスは、典型的には、グレーン単位でデータを生成および消費する。最小サイズのグレーンは例えば画像の単一ピクセル値であり、より大きいサイズのグレーンの例は画像のラインまたは8×8ピクセルブロックである。異なるプロセスは、異なるグレーンサイズを使用してもよい。例えば、処理のために完全なラインを必要とするが8×8ブロックを受け取るプロセスは、8ラインのグレーンを使用しなければならないことになる。処理中に、上記消費プロセスは1のグレーンから次のグレーンへと進み、ステップ間で、上記消費プロセスは現在のグレーン内からのデータのみを処理する。
Eclipseは、上記生成プロセスと上記消費プロセスとの間の上記ストリームからのデータを通信するために、FIFOバッファインターフェイスを使用する。上記生成プロセスは、一度に1グレーンずつデータをFIFOバッファメモリに書き込み、当該データは、各グレーンが書き込まれた順序で、上記消費プロセスによる使用のために一度に1グレーンずつ当該FIFOバッファから読み取られる。このメカニズムのために、Eclipseは、どの通信および同期化が信号処理タスクで表される必要があるかに関して、以下のプリミティブコマンドを定義する。
Write,Read,GetSpaceおよびPutspace
FIFOバッファの書き込みコマンドは、出力データのグレーン(を指すポインタ)と書き込みグレーンのサイズ(サイズは黙示の場合もある)をパラメータとして要求する。読み取りコマンドは、当該データのメモリ領域を指すポインタと読み取りグレーンのサイズをパラメータとしてとる。読み取りコマンドの実行後、読み取りグレーンからの当該データは、上記FIFOバッファから当該ポインタが指し示す当該メモリ領域にコピーされていることになる。GetSpaceコマンドは、次のグレーンが読み取りまたは書き込みされることを示すために使用される。GetSpaceコマンドは、グレーンのサイズをパラメータとしてとり、要求された空間が使用可能であるかどうか示すフラグを返す。このフラグは、プロセスが一時停止すべきかどうかを決定するために使用してもよい。GetSpaceコマンドに応答して、その空間が呼び出しプロセスのために予約される。PutSpaceコマンドは、グレーンの読み取りまたは書き込みが終了したこと、および、もはや当該グレーンのための上記FIFOバッファ領域を呼び出しプロセスのために予約しておく必要がないことを示すために使用される。
再使用性は、タスク記述における通信および同期化の記述をこのコマンドのセットに基づかせることによって、および、タスク記述の種々の実施態様をこのコマンドのセットの種々の実施態様に実装することによって実現される。
FIFOバッファインターフェイスの典型的な実施態様では、循環式にアドレス指定されるメモリを使用する。各々次のグレーンからのデータは、バッファメモリのアドレス範囲の終端に達するまで、隣接するより高位の一連のアドレスに書き込まれる。バッファメモリのアドレス範囲の終端に達した場合には、次のグレーンからのデータは、メモリ内の最下位の一連のアドレスに書き込まれる。しかしながら、そのようなFIFOバッファインターフェイスは、異なるグレーンサイズが使用される場合には複雑さをもたらすことになる。上記消費プロセスのグレーンサイズが上記生成プロセスのグレーンサイズよりも大きい場合には、例えば、一部のグレーンにおいてグレーン内のアドレスが「ラップアラウンド」する(バッファアドレス範囲の一方の境界から他方の境界にジャンプする)可能性がある。このことが、上記消費プロセスによるグレーン単位のデータのアドレス指定を複雑にする。
Eclipseは、上記FIFOバッファからのデータがコピーされる事になるメモリを指すポインタをパラメータとして持つ読み取りコマンド、を使用する事で、この問題を解決した。上記消費プロセスは、この領域からデータを読み取る事になる。この解決策において、上記FIFOバッファのグレーンからのすべてのデータは、アドレスのラップアラウンドを除去するために、上記消費プロセスのグレーンのためのローカルメモリにコピーされる。したがって、ラップアラウンドによるアドレスの複雑さは、コピーすること、上記消費プロセスが最大の効率でグレーン内のデータを自由にアドレス指定できるようにしておくことに限定される。しかしながら、コピー動作は、処理にオーバヘッドコストをもたらす。
もう1つの可能な解決策は、EclipseのAPIでは使用されていないが、ラップアラウンドが必要とされるときにアドレスが確実に適合するように各アドレスのアドレス変換を使用して、上記消費プロセスが上記FIFOバッファメモリから直接グレーン内のデータにアクセスするというものである。これは、コピー動作のオーバヘッドを解消するのだが、データがアドレス指定されるごとにオーバヘッドをもたらす。上記消費プロセスが上記バッファメモリに適合しないときには、上記消費プロセスは、データがアドレス指定されるごとに、グレーン内のデータのアドレスを、変換のためにAPI呼び出しに供給する必要がある。
したがって、本発明の目的は、信号処理タスク記述に使用するためのアプリケーションプログラムインターフェイス定義を提供すること、及び、ラップアラウンドするアドレスを持つFIFOバッファメモリを介してデータのグレーンを通信するプロセス、の実行中のオーバヘッドを最小化できるようにするアプリケーションプログラムインターフェイス定義の実施態様を提供することである。
とりわけ特に、本発明の目的は、互いに異なるグレーンサイズを使用する複数プロセスに起因するようなオーバヘッドを最小化できるようにすることである。
本発明によるデータ処理装置は、請求項1に示されている。消費プロセスは、グレーンからのデータにアクセスするためのアプリケーションプログラムインターフェイス関数を介して循環バッファにアクセスすることができる。本発明によれば、当該関数は、当該消費プロセスがデータを直接循環FIFOバッファから読み取るべきか補助メモリから読み取るべきかを示す指示を返し、当該関数は、当該グレーン内のアドレスがいつ上記循環FIFOバッファ内でラップアラウンドするのかを示すような後者の指示を返す。当該グレーン内のアドレスがFIFOバッファ内でラップアラウンドするときには、当該グレーンからのデータは上記補助メモリにコピーされる。
グレーンサイズおよび補助バッファは上記消費プロセスに固有に定義されるので、その結果、上記消費プロセスのグレーンサイズは上記FIFOバッファに書き込みを行う上記生成プロセスのグレーンサイズとは異なることがある。上記補助バッファは、当該補助バッファがストリームから1つのグレーンを書き込むための十分な空間を含むように選択される。上記補助バッファは、上記消費プロセスに固有であるため、可能性のある全てのグレーンサイズを処理できるように過剰な大きさにする必要はない。好ましくは、上記消費プロセス自体が、上記アプリケーションプログラムインターフェイスへのコマンドを使用して(例えば当該コマンドの引数として)上記グレーンサイズおよび上記補助バッファを設定する。
このタイプのコマンドがアプリケーションプログラムインターフェイスに含まれているときには、当該コマンドは、上記循環FIFOバッファからの読み取りのためのすべてのアクセスがこのコマンドによって表現されるように、信号処理タスクのプログラムを書くことを可能にする。これにより、上記FIFOバッファの実施態様は、当該信号処理タスクを指定するプログラムに透過的になる。その結果、同一のプログラムが、当該信号処理タスクを構成する上記プロセスが様々なプロセッサ上に様々に分散される各種の実施態様に使用され得る。そのような様々な分散の実施態様は、上記プロセスを適切なプロセッサ内に実装し、且つ、上記プロセスを実行するプロセッサの場所に応じて適切に、上記循環FIFOバッファへのアクセスを処理するために使用されるアプリケーションプログラムインターフェイスコマンドを交換することによって実現される。したがって、当該分散は上記信号処理タスクの指定において透過的である。
上記アプリケーションプログラムインターフェイスコマンドは、直接上記循環FIFOバッファから得られる又は補助メモリから得られるグレーンからのデータの択一的な使用を提供するので、この透過性は上記FIFOバッファへの高度に効果的なアクセスと共に実現される。
本発明のこれらおよびその他の目的およびその他の有利な側面については、図面の簡単な説明の記載欄に掲げた図面を使用して説明されることになる。
図1は、第1のプロセス1、第2のプロセス4、FIFOバッファメモリ2、およびFIFOバッファメモリ2とプロセス1、4それぞれとの間のアプリケーションプログラムインターフェイス1a、4aを使用するデータ処理の機構構成を示している。稼動中、第1のプロセス1は、データのストリームを生成し、このストリームからFIFOバッファメモリ2にデータを書き込む。データはグレーン単位で生成および消費されるが、各グレーンは典型的には個別にアドレス指定可能なワードを多数含んでいる。FIFOバッファメモリ2は、1のグレーンからのデータを、次の1のグレーンからのデータが第1のプロセス1から受信される前に受信し、且つ、FIFOバッファメモリ2は、第2のプロセス4が、一度に1グレーンからのデータずつを、各グレーン又は各グレーンの各グループが第1のプロセス1から受信された順序で、連続して使用できるようにする。
プロセス1、4は典型的には、アプリケーションプログラムインターフェイス1a、4aを介してFIFOバッファ11へのインターフェイスを取るソフトウェア実装プロセスである。すなわち、プロセス1、4は、FIFOバッファリングプロセスの詳細を直接管理するのではなく、これらの詳細を管理するアプリケーションプログラムインターフェイス関数を呼び出す。図1の構造では明瞭にするために2つのプロセス1、4のみを示しているが、実際の適用においては、多数のFIFOバッファを介してデータを通信する更に多くのプロセスが関与してもよいことを理解されたい。
図2は、図1の構成を実装するための、典型的な処理装置を示している。当該処理装置は、第1の処理要素10、第2の処理要素16、及び通信インフラストラクチャ14a、14b経由で結合されたメモリ18を含んでいる。バスは、例えば通信インフラストラクチャとして使用され得る。第1の処理要素10は、第1のプロセス1およびアプリケーションインターフェイス1aの関数を実行するようにプログラムされる。第2の処理要素16は、第2のプロセス4およびアプリケーションインターフェイス4aの関数を実行するようにプログラムされる。典型的には、当該装置は、少なくとも処理要素およびバスを、好ましくは更にメモリを含む集積回路デバイスとして実装される。
稼動中、メモリ18からのストレージロケーションが、FIFOバッファメモリ2用に使用される。最小アドレスAminから最大アドレスAmaxまでのアドレスの領域は、FIFOバッファデータを格納するために使用される。FIFOバッファメモリにアクセスするためのアプリケーションインターフェイスは、関数Read、Write、GetSpaceおよびPutspaceを定義する。
GetSpace呼び出しおよびWrite呼び出しを使用して、第1のプロセス1はデータのグレーンをアプリケーションプログラムインターフェイス1aの関数に供給するが、当該関数は当該データをAminからAmaxの範囲のアドレスA1.Anのn個のメモリロケーションに書き込む(整数nは当該グレーン内のアドレス指定可能データ項目の個数を表す)。第1のプロセスが次のグレーンを供給するとき、そのデータは、Amaxに達するまでアドレスAn+1..A2n等のロケーションに書き込まれる。Amaxが達成された場合、アプリケーションプログラムインターフェイス1aは次のグレーンからのデータをアドレスAmin...Amin+n−1のロケーションに書き込む、又は、もしグレーンの内部のどこかでアドレスAmaxが達成されたならば、アプリケーションプログラムインターフェイス1aはグレーンの後続の部分をAminから始まるアドレスのロケーションに書き込む。これは、ラッピングアラウンド、または循環式の書き込みと呼ばれる。そのような書き込みによって、以前のグレーンからのデータが第2のプロセス4により使用される前に上書きされる事になるときには、アプリケーションインターフェイス1aは、FIFOバッファメモリ2が「満杯」であることを信号で知らせて、第2のプロセス4が上書きされる事になるそのデータの読み取りを完了するまで、第1のプロセスの実行を一時停止させる。
第2のプロセス4は、GetSpace呼び出しおよびRead呼び出しを使用して、一度に1グレーンからのデータずつにアクセスする。一度、処理中の第2のプロセス4がグレーンからのデータのアドレス指定を終了すると、第2のプロセス4は次のグレーンを受信するためにアプリケーションインターフェイス4aを呼び出す。第2のプロセス4によってアクセスされるグレーンのサイズは、第1のプロセス4のグレーンのサイズと異なっていてもよい。例えば、第2のプロセス4の各グレーンは、第1のプロセス1のグレーンの整数値mから成っていてもよい。第2のプロセス4は、次のグレーンのデータを処理する準備が整うと、アプリケーションプログラムインターフェイス4aを呼び出す。Read呼び出し
Pointer to data buffer
=Read(...,pointer to additional memory)
は、追加のバッファメモリの領域を引数として指すポインタを持ち、バッファを指すポインタを返す。他の引数は本質的ではないため示されていないが、これらの引数はグレーンサイズ、処理タスク識別情報およびFIFO識別情報を含んでもよい。第2のプロセス4は、メモリ18内の追加のバッファメモリの領域を指すポインタをインターフェイス4aに供給する。この領域は少なくとも、第2のプロセス4の1つのグレーンのデータを格納するために必要なサイズを備えている。
図3は、アプリケーションインターフェイス4aが次のグレーンをFIFOバッファメモリから受信するために第2のプロセス4から呼び出しを受信するときのアプリケーションインターフェイス4aの動作、のフローチャートを示している。第1のステップ31において、アプリケーションプログラムインターフェイス4aは、データグレーンが読み取りに使用可能であるときには、この次のグレーンを受信するために呼び出しを受け入れる(そのときまで第1のプロセス4は一時停止する必要がある)。第2のステップ32において、アプリケーションプログラムインターフェイス4aは、このグレーンからのデータのアドレスがそのグレーンの内部でラップアラウンドするかどうかをテストする。もしそうならば、アプリケーションプログラムインターフェイス4aは、アプリケーションプログラムインターフェイス4aが、この次のグレーンのデータを、呼び出しを供給されたポインタによって指し示される追加領域にコピーするような第3のステップ33を実行する。アドレスのコピー中にラップアラウンドが除去される、即ち、FIFOバッファ領域内のアドレスAminから格納されるグレーンのデータの一部は、FIFOバッファ領域の終わりのグレーンからのデータのアドレスに続くアドレスで追加領域に格納される。第4のステップ34において、アプリケーションプログラムインターフェイス4aは、追加領域を指すポインタを第2のプロセス4に返す。
もし、アプリケーションプログラムインターフェイス4aが第2のステップ32にて、データがFIFOバッファ領域でラップアラウンドしないことを認識したならば、アプリケーションプログラムインターフェイス4aは、第5のステップ35を実行し、グレーンのデータが格納されているFIFOバッファ領域のロケーションを指すポインタを返す。
したがって、第2のプロセス4は、アプリケーションプログラムインターフェイス4aを指すポインタを供給し且つ受け取る。アプリケーションプログラムインターフェイス4aは、次のグレーンが格納される方法に応じて、供給されたポインタまたはFIFOバッファの部分を指すポインタを、第2のプロセス4に返す。供給されたポインタは、ラップアラウンドによる分割アドレス指定を避けるために必要なときにだけ返される。再使用性を保証するために使用されるアプリケーションプログラムインターフェイスは、このことを示すプリミティブ関数Readを含んでいる。
Pointer to data buffer
=Read(...,pointer to additional memory)
高水準プログラムに関して、Read関数は例えば以下のように実装することができる。
BufferPointer Read(BufferPointer P)
{ int end_of_grain=current_offset+grain_size;
if(end_of_grain<max)return base_address_of_FIFO_buffer+current_offset;
for(int i=0;i<max−current_offset;i++)
P[i]=FIFO_buffer[i+current_offset];
for(int i=max−current_offset;i<grain_size;i++)
P[i]=FIFO_buffer[i+current_offset−max];
return P;
ここで、max、current_offset、及びgrain_sizeは、それぞれFIFOバッファのサイズ、FIFOバッファ内のグレーンの開始位置、及びグレーンのサイズを表すパラメータである。これらのパラメータの値は、他の所で定義されたと仮定されている。オプションで、これらのパラメータの内の1つまたは複数のパラメータは、関数Readの引数として渡されるようにしてもよい。いくつかの理由のため(例えばFIFOバッファへの書き込みの際のラップアラウンドを避けるため)に、パラメータmaxが時間の関数として自律的に変化してもよいことに留意されたい。
本発明について、引数として追加メモリ領域を指し消費プロセス4により渡されるポインタ、をとる「Read」関数に関して説明してきた。代替として、消費プロセス4は、このポインタを一度に一連のRead動作に対して設定するようにしてもよい。もう1つの代替として、アプリケーションプログラムインターフェイスにより定義されているようにして、予め定められたポインタを使用するようにしてもよい。消費プロセス4によって定義されたポインタを使用する事には、追加メモリ領域に予約される必要のある空間の量を、消費プロセス4によって使用されるグレーンサイズに適合させる事ができるという利点がある。したがって、FIFOバッファサイズの重複を伴う可能性のある「最悪の場合の」サイズを予約する必要はない。Read関数の引数として定義されたポインタの使用には、グレーンサイズをRead関数の各呼び出し用に、オーバヘッドなしで動的に改変できるという利点がある。
データが様々な領域に確実に格納されることを目的として、様々な追加領域値を指すポインタを、引数として連続Read関数呼び出しに供給する事には、意味がない事に留意されたい。これは、実装先は、データが追加領域にコピーされるという前提に依存しなくてもよいためである。このようになるのは、例外的な場合だけである。
本発明については、それぞれ第1の処理要素10および第2の処理要素16により実行されるプログラムとして実装されるアプリケーションプログラムインターフェイス1a、4aに関して説明してきたが、これらのアプリケーションプログラムインターフェイスの1つまたは両方は、様々な処理要素上で動作し得ることが理解されるであろう。実際、第1および第2のプロセス1、4は、アプリケーションプログラムインターフェイス1a、4aと共に同じ処理要素上で動作し得る。もう1つの実施形態において、FIFOバッファメモリ2およびアプリケーションプログラムインターフェイス1a、4aの一部または全部は、専用ハードウェアとして実装され得る。
図4は、FIFOバッファメモリ2および第2のプロセス4へのインターフェイスのハードウェア実施態様の例を示している。当該ハードウェア実施態様においてFIFOバッファユニット12は、第1の処理要素10とバス14a、14bとの間に結合される。FIFOバッファユニット12は、バッファメモリ120、FIFO入力ポインタレジスタ122、FIFO出力ポインタレジスタ124、アプリケーション呼び出しプロセッサ126、追加バッファポインタレジスタ127、戻りポインタマルチプレクサ128、およびFIFO出力アドレスマルチプレクサ129を含んでいる。当該ハードウェア実施態様は好ましくは、外付けでもよいメモリはなるべく除いて、すべてのコンポーネントを含む集積回路内に実現される。
稼動中、第1の処理要素10は、新しいグレーンが書き込まれることになるときには、アプリケーション呼び出しプロセッサ126への呼び出し信号を生成する。バッファメモリ120内でメモリ空間が使用可能であるときには、アプリケーション呼び出しプロセッサ126は、FIFO入力ポインタレジスタ122をバッファメモリ120内のグレーンの開始アドレスに設定すると共に、書き込みを開始してもよいことを第1の処理要素10に応答する。第1の処理要素10は、開始アドレスをFIFO入力ポインタレジスタ122から読み取ると共に、グレーンからのデータを開始アドレスから始まるバッファメモリ120に書き込む。
バッファメモリ120およびメモリ18は、バス14a、14bを介して第2の処理要素16によりアドレス指定され得る。アドレスデータに応じて、第2の処理要素16は、バッファメモリ120またはメモリ18から読み取りを行う。新しいグレーンが読み取られることになるとき、第2の処理要素10は、アプリケーション呼び出しプロセッサ126への呼び出し信号を生成する。当該呼び出しは、メモリ12内の追加領域のアドレスを伴っている。当該呼び出しに応じて、アプリケーション呼び出しプロセッサ126は、そのグレーンが完全に使用可能であるかどうかテストすると共に、そのグレーンが完全に使用可能であるときには、FIFO出力ポインタレジスタ122をバッファメモリ120内のグレーンの開始アドレスに設定する。
しかしながら、呼び出しに応答する前に、アプリケーション呼び出しプロセッサ126はグレーンのアドレスがラップアラウンドするかどうかをテストする。もしそうならば、アプリケーション呼び出しプロセッサ126は、グレーンからのデータを出力するようにバッファメモリのアドレス指定を行い、アプリケーション呼び出しプロセッサ126は、追加領域のアドレスからのアドレスを使用して、バッファメモリ120のグレーンからのデータを格納するようにメモリ18のアドレス指定を行う。アプリケーション呼び出しプロセッサ126は、戻りポインタマルチプレクサ128が、追加領域のアドレスかFIFO出力ポインタレジスタ122からの開始アドレスかのいずれかを出力するように制御する。最後に、アプリケーション呼び出しプロセッサ126は呼び出しに応答する。
呼び出しが応答されているときには、FIFO出力アドレスマルチプレクサ129は、第2の処理要素に、バッファメモリ120からデータを読み取ることを許可する。第2の処理要素10は、戻りポインタマルチプレクサ128から受信した開始アドレスを読み取り、それにより返されるポインタに従って、グレーン内のデータのアドレス指定を行う。
図4はポインタ間の選択を明示的にする模範的な実施形態を示しているに過ぎないことが理解されよう。正しいポインタを第2のプロセス4に供給するために多数の代替手段が存在する。例えば、ポインタの代わりに、2つのロケーションのどちらから当該ポインタが読み取られなければならないかを示すフラグ信号が供給されるようにしてもよいし、又は、要求されたポインタが、アプリケーション呼び出しプロセッサ126内で内部的に生成されると共に、マルチプレクサ128によって選択されたレジスタ内にそれを保持しておく代わりに、返答としてそこから供給されるようにしてもよい。レジスタおよびマルチプレクサ128の代わりに、アプリケーション呼び出しプロセッサ126の制御のもとに適切なポインタ情報が書き込まれるメモリロケーションが使用されるようにしてもよい。ソフトウェア実施態様に関連して述べられているように、処理要素16は個々の呼び出しにメモリ18内の追加領域のアドレスを提供する必要はない。その代わり、任意の数の呼び出し中に後の使用のためにレジスタ127内にアドレスを格納すべく、アドレスは別個のトランザクション内に提供されるようにしてもよい。さらには、追加領域は、FIFOバッファメモリ120を含むより大きいメモリの一部であってもよい。メモリ18およびバッファメモリ120は実際には、同一のより大きいメモリの一部であってもよい。
グレーン内部のアドレスがラップアラウンドされるときには補助メモリ内に書き込み、且つ、アドレスがラップアラウンドされないときにはFIFOバッファ内に直接書き込むように生成プロセスが作成される事になるように、FIFOバッファへの書き込みは同様に補助メモリを利用してもよいことが理解されよう。この場合、生成プロセスは最初に、グレーンからのデータの書き込みのためのポインタを受け取るために、アプリケーションプログラムインターフェイス呼び出しを作成する。当該呼び出しは、補助メモリポインタを引数として備えている。当該呼び出しに応答して、アプリケーションプログラムインターフェイスは、FIFOメモリ内のグレーンのための空間を予約する。当該呼び出しへの返答として、アプリケーションプログラムインターフェイスは、引数として受け取ったポインタ、またはグレーンのアドレスがFIFOメモリ内でラップアラウンドするかどうかに応じて選択されたFIFOメモリ内へのポインタを返す。生成プロセスはそして、グレーンのデータを、その返されたポインタが指し示すメモリ内に書き込む。グレーンの完了が信号で伝えられると、アプリケーションプログラムインターフェイスは、もしFIFOバッファ内のアドレスがラップアラウンドするならば、補助メモリ領域からそのデータをコピーする。
これは、FIFOバッファの生成側のオーバヘッドを軽減する。しかしながら、データが一般に1回だけ書き込まれてより頻繁に読み取られるとき、またはすべてのデータが消費プロセスによって読み取られる必要はないときには、この軽減は消費側の場合ほど有意ではない可能性があることが理解されよう。したがって、有意な改善は、本発明が出力側のみに適用されるときには、本発明を入力側に適用するために必要とされるオーバヘッドなしですでに達成されている。
いずれにせよ、FIFOバッファのサイズが消費側のグレーンサイズの整数倍であるときには、入力に対してのそのような改良は必要ない。同様に、アプリケーションインターフェイスが、書き込み時にグレーンの終端がバッファメモリの終端と確実に一致するように、FIFOバッファのサイズを一時的に減少又は増加させるときには、そのような改良は必要ない。
本発明については、連続するグレーンの増加アドレスと共に説明してきたが、代わりに減少アドレスを使用してもよいことが理解されよう。この場合、グレーンがFIFOバッファの最下位アドレスに到達すると、補助メモリ領域が使用される。同様に、バスはプロセスを実行するプロセッサと補助メモリとFIFOバッファとの間の通信構造として示されているが、バスアドレスの代わりにネットワークアドレスが使用されることになるように、これらの要素の一部または全部の間での通信のために、例えばネットワークのような他のタイプの通信構造を使用してもよいことを理解されたい。
従来の方法においては、Eclipseについて説明されているように、信号処理タスクの設計の際に、例えば高水準言語プログラム(例えばCプログラムコード)を使用して多くのプロセスが指定される。データストリームはプロセス間で通信されると共に、プロセスはデータストリームを並行して生成および消費するように設計される。プロセス間の通信および同期化は、FIFOバッファへのインターフェイスを取るためのインターフェイス関数の呼び出しによって実現される。
図5は、プログラムをコンパイルするマシンを示している。当該マシンは、プロセッサ50、プログラムを入力するための入力装置52、関数の複数のライブラリ54a乃至cを格納する記憶装置54、およびターゲットプログラミングユニット56を含んでいる。ライブラリ54a乃至cの各々は、上述のRead関数のようなインターフェイス関数を実行するための実装命令を含んでおり、ライブラリの各々はターゲットマシンのそれぞれのタイプに対応している。1つの実施態様では例えば、ライブラリ関数は、生成および消費プロセスとFIFOバッファの両方のための単一のメモリを使用するソフトウェア実装をサポートするが、別のライブラリでは、当該関数は、FIFOバッファリングのハードウェア実装および/または異なるプロセッサ間でのFIFOバッファデータの通信をサポートする。
稼動中、第1のステップにおいて、プロセッサ50は、入力装置52からプログラムを読み取る(当該プログラムは中間で(例えば記憶装置54内に)格納されるようになっていてもよい)。当該プログラムは、ライブラリ関数への呼び出しとして、FIFOバッファからのデータにアクセスするための呼び出しであって、当該プログラム内の後続の命令が直接FIFOバッファから又はFIFOバッファに又は追加バッファ(好ましくは、当該プログラム内の命令により指定された追加バッファ内)から又は追加バッファに読み取りまたは書き込みを行うかどうか、を制御するために当該呼び出しの結果を利用するための呼び出しを含んでいる。
第2のステップにおいて、プロセッサ50は、プログラムを解析し、プログラムを実装するために実行される必要のある命令を含むオブジェクトコードを生成する。第2のステップにおいて、プロセッサ50はさらに、プログラムが先述の「Read」関数のタイプのライブラリ関数とインターフェイスを取るための呼び出しを含むかどうかを判別する。第3のステップにおいて、プロセッサ50は、ライブラリ54a乃至cの内のどれを使用すべきかを判別するが、これは例えば、ターゲットマシンのタイプを示すリンキングオプションのように信号に依存して行われる。第3のステップにおいて、プロセッサ50は、オブジェクトコード内のRead関数の呼び出しによって、Read関数を実装する選択されたライブラリからの命令が実行される事になるように、オブジェクトコードを、インターフェイスライブラリ54a乃至cの内の選択された1のライブラリからの命令とリンクさせる。第4のステップ54において、プロセッサ10は、そのリンクされたコードをターゲットプログラミングユニット56に送信するが、ターゲットプログラミングユニット56は例えば、そのリンクされたコードを実行のためにターゲットプロセッサ内にロードする(または、プログラムを実行するようにプログラムされた集積回路の製品のコード制御部分を使用する)。同じプログラムが異なるタイプのマシンにリンクされ得る事になるように、好ましくは様々なライブラリがRead関数の様々な実施態様と共に提供されるが、もしプロセッサ10が1つのタイプのターゲットマシン上のみで実行するためのものとなっているならば、1つのライブラリで十分であることが理解されよう。
各ステップは、使用物がインターフェイス関数の新規な1のライブラリ又は複数のライブラリからなる点を除いては従来型であり、インタフェイス関数には、FIFOバッファにアクセスするためのライブラリRead関数が含まれており、Read関数は、プログラムに対して生成された命令が直接FIFOバッファメモリから又はFIFOバッファメモリに又は追加バッファ(好ましくは、当該プログラム内の命令により指定された追加バッファ内)から又は追加バッファメモリに読み取りまたは書き込みを行うべきかどうか、を示す指示をFIFOバッファに返す、ことが理解されよう。また、この関数は必ずしも第3のステップ内にリンクされる必要がないことが理解されよう。代わりに、実行時にサポートされるシステム関数の呼び出しが使用されるようにしてもよいし、又はFIFOバッファリング用のハードウェアに命じる指示が当該呼び出しの結果として含まれるようにしてもよい。
本発明によれば、インターフェイス関数は、読み取りのためのバッファの選択を返すRead関数を含んでおり、当該選択は、FIFOバッファメモリが直接使用されるべきか補助メモリ領域が使用されるべきかのいずれかを示している。次に、タスク指定は、Eclipseについて説明されたように、説明されたようなアーキテクチャ又はその等価物内にReadコマンドが実装される場合を除き、ハードウェアの製品および/または当該指定を実装するためのマシン命令のプログラムを制御するために使用される。実施態様のタイプに応じて、そして特にプロセスのハードウェア分散の選択に応じて、Read関数の実施態様は選択される。
データ処理の機構構成を示す。 データ処理装置を示す。 インターフェイスプログラムのフローチャートを示す。 FIFOバッファを備えるデータ処理装置を示す。 コンパイル処理のフローチャートを示す。

Claims (13)

  1. データ生成プロセス及びデータ消費プロセスを実行するように配置されている処理回路であって、前記データ生成プロセスがデータのストリームを生成し、前記データ消費プロセスが前記ストリームの生成と並行して前記データのストリームを消費するような処理回路と、
    前記データ消費プロセスにアクセス可能な処理メモリと、
    前記データ生成プロセスと前記データ消費プロセスとの間の前記ストリームからデータを渡すための先入れ先出し循環バッファユニットであって、当該循環バッファユニットがバッファメモリを備え、当該循環バッファユニットが前記ストリームからデータ項目を循環式に前記バッファメモリ内に書き込むような循環バッファユニットと、
    前記データ消費プロセスに特有のグレーンサイズ選択及び補助バッファ領域選択を使用するように配置されている前記循環バッファユニットの消費プロセスインターフェイスであって、当該消費プロセスインターフェイスが、前記データ消費プロセスが前記ストリームからのデータグレーンを使用すること、を可能にするためのコマンドを処理するように配置されており、当該消費プロセスインターフェイスが、
    アクセスされるべき前記グレーン内のデータのアドレスが前記バッファメモリ内でラップアラウンドするかどうかをテストすることにより前記コマンドに応答し、
    前記アドレスがラップアラウンドすることの検出に応答して、前記バッファメモリから前記補助メモリ領域に前記グレーンを、コピーされたグレーン内で前記ラップアラウンドが除去されることになるようにコピーし、
    前記アドレスが前記グレーンの内部でラップアラウンドしないときに、前記バッファメモリから前記グレーンを読み取るよう前記消費プロセスに指示を返し、又は前記アドレスがラップアラウンドするときに、前記補助メモリ領域から読み取るよう指示を返すように配置されているような消費プロセスインターフェイスとを備えるデータ処理装置。
  2. 前記消費プロセスインターフェイスが、前記コマンドに応答して、前記グレーン内のアドレスデータ内での使用のために前記バッファメモリ又は前記補助メモリ領域のアドレス指定を行うためのポインタを、前記バッファメモリ内の前記グレーン内の前記データの前記アドレスがラップアラウンドするかどうかに応じて返すように配置されている請求項1に記載のデータ処理装置。
  3. 前記消費プロセスが、前記コマンドの一部として前記補助メモリのアドレス及び前記グレーンサイズを選択するように配置されている請求項1に記載のデータ処理装置。
  4. 前記データ生成プロセス及び前記データ消費プロセスがそれぞれ、前記循環バッファユニットにデータを送信するため及び前記循環バッファユニットからデータを受信するために第1及び第2のグレーンサイズを使用するように配置されており、前記第1及び第2のグレーンサイズが互いに異なっている請求項1に記載のデータ処理装置。
  5. 前記データ生成プロセスが、データを送信するために可変グレーンサイズを使用するように配置されている請求項5に記載のデータ処理装置。
  6. 前記第1のグレーンサイズ及び前記循環バッファユニットのサイズは、前記循環バッファユニットのデータのアドレスが常に前記第1のグレーンサイズの連続するグレーン間でラップアラウンドするように選択される請求項2に記載のデータ処理装置。
  7. 前記データストリームを生成するためのデータ生成プロセスにアクセス可能な更なる処理メモリと、
    前記データ生成プロセスのための更なる補助メモリ領域選択を受信するように配置されている前記循環バッファユニットの生成プロセスインターフェイスであって、当該生成プロセスインターフェイスが、前記ストリームから出力データグレーンを出力するための更なるコマンドを処理するように配置されており、当該生成プロセスインターフェイスが、
    前記出力グレーン内のデータのアドレスが前記バッファメモリ内でラップアラウンドすることになるかどうかをテストすることにより前記更なるコマンドに応答し、
    前記アドレスが前記グレーンの内部でラップアラウンドしないときに、前記バッファメモリに前記グレーンを書き込むよう前記生成プロセスに指示を返し、又は前記アドレスがラップアラウンドするときに、前記補助メモリ領域に書き込むよう指示を返し、
    前記アドレスがラップアラウンドすることの検出に応答して、補助メモリ領域から前記バッファメモリに前記グレーンを、コピーされたグレーン内で前記ラップアラウンドが生成されるようにコピーするように配置されているような生成プロセスインターフェイスとを備える請求項1に記載のデータ処理装置。
  8. データ生成プロセス及びデータ消費プロセスを実行するように配置されている処理回路であって、前記データ生成プロセスがデータのストリームを生成し、前記データ消費プロセスが前記ストリームの生成と並行して前記データのストリームを消費するような処理回路と、
    前記データ生成プロセスにアクセス可能な処理メモリと、
    前記データ生成プロセスと前記データ消費プロセスとの間の前記ストリームからデータを渡すための先入れ先出し循環バッファユニットであって、当該循環バッファユニットがバッファメモリを備え、当該循環バッファユニットが前記ストリームからデータ項目を循環式に前記バッファメモリ内に書き込むような循環バッファユニットと、
    前記データ生成プロセスに特有のグレーンサイズ選択及び補助バッファ領域選択を使用するように配置されている前記循環バッファユニットの生成プロセスインターフェイスであって、当該生成プロセスインターフェイスが、前記データ生成プロセスが生成されたグレーンを書き込むためにメモリを使用すること、を可能にするためのコマンドを処理するように配置されており、当該生成プロセスインターフェイスが、
    メモリを使用可能にすべき前記グレーン内のデータのアドレスが前記循環バッファメモリ内でラップアラウンドするかどうかをテストすることにより前記コマンドに応答し、
    前記アドレスが前記グレーンの内部でラップアラウンドしないときに、前記バッファメモリに前記グレーンを書き込むよう前記生成プロセスに指示を返し、又は前記アドレスがラップアラウンドするときに、補助メモリ領域に書き込むよう指示を返すように配置されているような生成プロセスインターフェイスとを備えるデータ処理装置。
  9. 信号処理タスクのマシン実装を生成するマシン実装の方法であって、前記信号処理タスクが、複数のプロセスとして、当該プロセス間でデータストリームが循環バッファメモリを介して通信されるような複数のプロセスを並行して実行する段階を備え、当該方法が、
    前記バッファメモリ内に格納されたデータのグレーンにアクセスするために、前記複数のプロセスの内のデータ消費プロセスによって呼び出される関数を含むアプリケーションプログラムインターフェイスを提供する段階であって、前記アプリケーションプログラムインターフェイスが、前記複数のプロセスの内の前記データ消費プロセスに前記グレーンのサイズ及び補助メモリ領域の選択可能な定義を提供し、前記関数が、アクセスされるべき前記グレーンのアドレスが前記バッファメモリ内でラップアラウンドするかどうかをテストし、前記アドレスが前記グレーン内でラップアラウンドするときに、前記バッファメモリから補助メモリ領域に前記グレーンを、コピーされたグレーン内で前記ラップアラウンドが除去されることになるようにコピーし、前記呼び出しの結果として、前記アドレスが前記グレーンの内部でラップアラウンドしないときには、前記グレーンからのデータを前記バッファメモリから読み取るように前記複数のプロセスの内の前記消費プロセスに指示を返し、又は前記アドレスが前記グレーン内でラップアラウンドするときには、前記補助メモリ領域から読み取るよう指示を返すように配置されているようなアプリケーションプログラムインターフェイスを提供する段階と、
    前記信号処理タスクの指定を受信する段階と、
    前記指定内の前記関数の呼び出しを識別する段階と、
    前記アプリケーションプログラムインターフェイスからの前記関数を使用して前記呼び出しを実装する段階とを備えるマシン実装の方法。
  10. 前記アプリケーションプログラムインターフェイスが、前記処理タスクの前記指定から処理要素上のプロセスの分散を隠し、前記関数の前記実装が前記分散に従って選択される請求項9に記載のマシン実装の方法。
  11. 当該方法は、前記マシン実装を実装するための集積回路製作制御情報を生成する段階と、前記集積回路製作制御情報の制御のもとに集積回路を製造する段階とを備える請求項10に記載のマシン実装の方法。
  12. 循環FIFOバッファにアクセスするためのアプリケーションプログラムインターフェイスを備え、前記アプリケーションプログラムインターフェイスが、前記循環FIFOバッファからデータにアクセスするアプリケーションプログラムのためのグレーンサイズの選択と前記アプリケーションプログラムの補助メモリ領域の定義とを提供し、前記アプリケーションプログラムインターフェイスが、前記循環FIFOバッファからグレーンにアクセスするための前記アプリケーションプログラムから呼び出されるような関数を備え、前記関数が、
    アクセスされるべき前記グレーン内のデータのアドレスが前記循環FIFOバッファ内でラップアラウンドするかどうかをテストし、
    前記アドレスが前記グレーンの内部でラップアラウンドするときに、前記FIFOバッファから補助メモリ領域にグレーンを、コピーされるグレーン内で前記ラップアラウンドが除去されることになるようにコピーし、
    前記呼び出しの結果として、前記アドレスが前記グレーン内でラップアラウンドしないときには、前記FIFOバッファから読み取るよう指示を返し、又は前記アドレスが前記グレーンの内部でラップアラウンドするときには、前記補助メモリ領域から読み取るよう指示を返すように配置されているコンピューター可読媒体。
  13. 請求項8に記載の方法を実行するための命令のプログラムを備えるコンピューター可読媒体。
JP2006506825A 2003-04-16 2004-04-08 並行して実行されるプロセスがfifoバッファを介して通信するデータ処理 Pending JP2006523884A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP03101030 2003-04-16
PCT/IB2004/050412 WO2004092945A2 (en) 2003-04-16 2004-04-08 Data processing in which concurrently executed processes communicate via a fifo buffer

Publications (1)

Publication Number Publication Date
JP2006523884A true JP2006523884A (ja) 2006-10-19

Family

ID=33185932

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006506825A Pending JP2006523884A (ja) 2003-04-16 2004-04-08 並行して実行されるプロセスがfifoバッファを介して通信するデータ処理

Country Status (8)

Country Link
US (1) US7594046B2 (ja)
EP (1) EP1618466B1 (ja)
JP (1) JP2006523884A (ja)
KR (1) KR101032563B1 (ja)
CN (1) CN100430886C (ja)
AT (1) ATE485557T1 (ja)
DE (1) DE602004029664D1 (ja)
WO (1) WO2004092945A2 (ja)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8046506B2 (en) * 2006-03-21 2011-10-25 Mediatek Inc. FIFO system and operating method thereof
US7571357B2 (en) * 2006-08-22 2009-08-04 International Business Machines Corporation Memory wrap test mode using functional read/write buffers
US10592444B2 (en) 2013-01-07 2020-03-17 Wave Computing, Inc. Reconfigurable interconnected programmable processors
US9588773B2 (en) 2013-01-07 2017-03-07 Wave Computing, Inc. Software based application specific integrated circuit
US10203935B2 (en) 2013-11-02 2019-02-12 Wave Computing, Inc. Power control within a dataflow processor
US9590629B2 (en) 2013-11-02 2017-03-07 Wave Computing, Inc. Logical elements with switchable connections
US10218357B2 (en) 2013-11-02 2019-02-26 Wave Computing, Inc. Logical elements with switchable connections for multifunction operation
US20150324136A1 (en) * 2014-05-07 2015-11-12 Lsi Corporation Storage system having fifo storage and reserved storage
US9449131B2 (en) * 2014-06-02 2016-09-20 Xilinx, Inc. Extracting system architecture in high level synthesis
US10437728B2 (en) 2015-02-21 2019-10-08 Wave Computing, Inc. Branchless instruction paging in reconfigurable fabric
US10073773B2 (en) 2015-02-21 2018-09-11 Wave Computing, Inc. Instruction paging in reconfigurable fabric
US10505704B1 (en) 2015-08-02 2019-12-10 Wave Computing, Inc. Data uploading to asynchronous circuitry using circular buffer control
US10564929B2 (en) 2016-09-01 2020-02-18 Wave Computing, Inc. Communication between dataflow processing units and memories
US10659396B2 (en) 2015-08-02 2020-05-19 Wave Computing, Inc. Joining data within a reconfigurable fabric
US10719470B2 (en) 2016-09-26 2020-07-21 Wave Computing, Inc. Reconfigurable fabric direct memory access with multiple read or write elements
US11106976B2 (en) 2017-08-19 2021-08-31 Wave Computing, Inc. Neural network output layer for machine learning
US10949328B2 (en) 2017-08-19 2021-03-16 Wave Computing, Inc. Data flow graph computation using exceptions
CN109839477A (zh) * 2017-11-24 2019-06-04 内蒙古光能科技有限公司 一种crds气体浓度检测仪加速量测的方法
US10528131B2 (en) * 2018-05-16 2020-01-07 Tobii Ab Method to reliably detect correlations between gaze and stimuli
US11645178B2 (en) 2018-07-27 2023-05-09 MIPS Tech, LLC Fail-safe semi-autonomous or autonomous vehicle processor array redundancy which permits an agent to perform a function based on comparing valid output from sets of redundant processors
US11481472B2 (en) 2019-04-01 2022-10-25 Wave Computing, Inc. Integer matrix multiplication engine using pipelining
US11227030B2 (en) 2019-04-01 2022-01-18 Wave Computing, Inc. Matrix multiplication engine using pipelining
US11934308B2 (en) 2019-04-01 2024-03-19 Wave Computing, Inc. Processor cluster address generation
US10997102B2 (en) 2019-04-01 2021-05-04 Wave Computing, Inc. Multidimensional address generation for direct memory access

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0863334A (ja) * 1994-08-26 1996-03-08 Nec Corp 環状バッファ制御装置
WO1996030825A1 (de) * 1995-03-30 1996-10-03 Siemens Aktiengesellschaft Speicheranordnung mit einem als ringspeicher betreibbaren speicher

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4623997A (en) * 1984-12-13 1986-11-18 United Technologies Corporation Coherent interface with wraparound receive and transmit memories
JP2703417B2 (ja) * 1991-04-05 1998-01-26 富士通株式会社 受信バッファ
US5379240A (en) * 1993-03-08 1995-01-03 Cyrix Corporation Shifter/rotator with preconditioned data
US5502833A (en) * 1994-03-30 1996-03-26 International Business Machines Corporation System and method for management of a predictive split cache for supporting FIFO queues
US5608889A (en) * 1994-08-17 1997-03-04 Ceridian Corporation DNA controller with wrap-around buffer mode
US6622198B2 (en) * 2000-08-31 2003-09-16 United Memories, Inc. Look-ahead, wrap-around first-in, first-out integrated (FIFO) circuit device architecture
US7633549B2 (en) * 2004-05-03 2009-12-15 Ati Technologies, Inc. Apparatus and method for image rendering

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0863334A (ja) * 1994-08-26 1996-03-08 Nec Corp 環状バッファ制御装置
WO1996030825A1 (de) * 1995-03-30 1996-10-03 Siemens Aktiengesellschaft Speicheranordnung mit einem als ringspeicher betreibbaren speicher

Also Published As

Publication number Publication date
CN1774694A (zh) 2006-05-17
EP1618466A2 (en) 2006-01-25
WO2004092945A3 (en) 2005-01-20
WO2004092945A2 (en) 2004-10-28
EP1618466B1 (en) 2010-10-20
KR20060004674A (ko) 2006-01-12
DE602004029664D1 (de) 2010-12-02
US20070133399A1 (en) 2007-06-14
ATE485557T1 (de) 2010-11-15
KR101032563B1 (ko) 2011-05-06
US7594046B2 (en) 2009-09-22
CN100430886C (zh) 2008-11-05

Similar Documents

Publication Publication Date Title
JP2006523884A (ja) 並行して実行されるプロセスがfifoバッファを介して通信するデータ処理
KR100440841B1 (ko) 마이크로컴퓨터
US5517436A (en) Digital signal processor for audio applications
JP5488697B2 (ja) マルチコアプロセッサシステム、同期制御方法、および同期制御プログラム
EP1050803B1 (en) Guarded computer instruction execution
JP2016129039A (ja) コンテキスト切替方法及び装置
US20080109795A1 (en) C/c++ language extensions for general-purpose graphics processing unit
JPWO2004079583A1 (ja) データ転送制御装置およびdmaデータ転送制御方法
KR100875377B1 (ko) 처리 시스템에서 스택 팝 및 푸쉬 동작들을 수행하는 장치 및 방법
US20130036426A1 (en) Information processing device and task switching method
WO2020200244A1 (zh) 数据处理方法及装置以及相关产品
JP3304444B2 (ja) ベクトル処理装置
US6785743B1 (en) Template data transfer coprocessor
US8990511B2 (en) Multiprocessor, cache synchronization control method and program therefor
JP2000353092A (ja) 情報処理装置及びそのレジスタファイル切替方法
JP2006506727A (ja) コピーレジスタファイルを有するvliw
JP2003005954A (ja) データ処理装置およびその制御方法
JPH04149658A (ja) 情報処理装置
CN104025032B (zh) 处理作业至辅助处理器的直接环3提交
JP2927102B2 (ja) 命令列切り替え方法及びそれを用いた演算プロセッサ
JP3105822B2 (ja) マイクロプログラム制御装置
JPH10232775A (ja) プリフェッチ機構
JPH07114509A (ja) メモリアクセス装置
JP2622026B2 (ja) 中央処理装置におけるレジスタ書込制御方式
JPH07175661A (ja) ユーザプログラムロード方式

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070406

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20080619

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090821

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20091111

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20091118

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100222

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100330