DMA制御装置
【課題】DMAを行う複数のパイプラインを、簡単な設定により任意に接続できるようにし、またデータ交換の単位も、点・線・面・立体など柔軟に対応でき、さらに時分割制御により見かけ上同時実行可能なDMA装置を提供すること。
【解決手段】複数のDMA設定に対し、設定単位ごとに時分割スケジューリングを行う。自らのDMAの指標と接続するDMAの指標との比較結果を用いた起動制御を行い、さらに処理の順序関係を保証する。
【解決手段】複数のDMA設定に対し、設定単位ごとに時分割スケジューリングを行う。自らのDMAの指標と接続するDMAの指標との比較結果を用いた起動制御を行い、さらに処理の順序関係を保証する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メモリアクセスを行う複数の装置(DMA)に対して、お互いに連動させて柔軟なデータ加工を可能にするDMA制御装置に関する。
【背景技術】
【0002】
汎用プロセッサでは速度的に実現困難なデジタル処理は、いくつかのパイプラインを用いた専用ハードウェアで実現することが多い。しかしながら、パイプライン構造の複雑さは、設計工数・期間や回路コストに影響する。このため、複雑なパイプライン構造を簡単化するしくみが求められている。
【0003】
従来のDMA制御装置を、図11を用いて説明する。
【0004】
図11において、111から114は機能的に異なったパイプライン、115はパイプライン111と112の出力とパイプライン113と114の入力とを接続するFIFO(First In First Out)メモリ、105はパイプライン111と112に読み込まれ、パイプライン113と114から書き込まれる共有メモリである。
【0005】
パイプライン111と112は、独立して共有メモリ105からデータを読み込み、加工して出力データを生成する。出力データは、揃った段階でFIFOメモリ115に送信する。
【0006】
FIFOメモリ115は、パイプライン間の処理速度のゆらぎを吸収し、性能を保つ役割を担う。データが満杯であればデータを受信せず、データがなければデータを送信しない。
【0007】
パイプライン113と114は、FIFOメモリ115からデータを受信し、加工後出力データを生成する。出力データは、独立して共有メモリ105に書き込む。
【0008】
以上のように従来のDMA制御装置は、構造的に固有の処理を行い、所望の機能を達成する。このような手法は、音声処理装置、画像処理装置などで一般に用いられる。
【0009】
なお、特許文献1にあるように、共有メモリにおけるバッファの取得・解放を、ハードウェアでなくプロセッサで管理することもある。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特開2009-003768号公開公報
【発明の概要】
【発明が解決しようとする課題】
【0011】
しかしながら、従来のDMA制御装置にあっては、以下のような問題点があった。
【0012】
先ず、パイプライン接続が固定しているため、処理の順序を入れ替えることができない。従って、処理の仕様が変わると、ハードウェアが全く利用できなくなる。
【0013】
次に、現在実行している処理が全て終了するまで、別の処理を実行できない。一連の処理が長い場合、時分割多重処理等の制御が困難になり、見かけ上の同時処理ができなくなる。この点、汎用プロセッサは、任意の時間にタスクやスレッドを切り替え、見かけ上の同時処理を実現している。
【0014】
さらに、ハードウェア設計を行う過程において、複雑な仕様になるほど設計の困難度が増加する。同時に、少しの仕様変更でもハードウェアの規模が大きいと、設計に対する影響も大きくなる。
【0015】
特許文献1には記載されていないが、共有メモリを複数個同時に制御する場合、DMAの数に応じた組み合わせチェックを行う必要がある。これは、DMA数の累乗に比例した計算が必要であり、DMA数が増えると汎用プロセッサでは能力的に限界が生じる。
【課題を解決するための手段】
【0016】
更新管理装置と、調停装置と、計算装置と、パラメータメモリと、共有メモリと、複数のパイプライン装置で構成する。
【0017】
前記パラメータメモリは複数のDMA情報を保持し、前記更新装置は前記DMA情報に記載されるDMAの状態を前記調停装置に与え、前記調停装置は起動状態のDMA番号を1つ選択し前記計算装置に与え、前記計算装置はDMA番号に対応するDMA情報を前記パラメータメモリから取り出しDMA情報に記載されるパイプライン番号に対応する前記パイプライン装置にDMA実施用の入力指標を与え前記更新管理装置にDMA更新用の入力指標を与え、前記パイプライン装置は指標に従って前記共有メモリをアクセスし前記更新管理装置にDMA更新用の出力指標を与える。
【0018】
前記更新管理装置は前記計算装置が示す入力指標と前記パイプライン装置が示す出力指標を前記パラメータメモリに対して更新し、出力指標の最終更新時もしくは外部アクセスによる該当DMAの起動・停止操作もしくはパラメータ操作により前記パラメータメモリの内容を更新する。
【発明の効果】
【0019】
本発明によれば、パイプラインの接続は、制御情報により自由に設定できる。従って、任意のパイプラインを組み合わせたDMAが実施できる。制御情報に次の制御情報を示すポインタを用意し、DMA終了時にそこに記載されたDMA情報に入れ替えることにより、逐次処理が可能である。
【0020】
制御情報にDMAの進行に関する指標をN次元分用意することで、点・線・面・立体などの単位のDMA制御が可能である。また、1対1の比率のデータ交換だけでなく、任意の整数比のデータ交換も可能である。
【0021】
パイプラインを細かい単位で自動的に起動するので、時分割多重が容易である。時分割多重により、複数の同じ機能のパイプラインが最大1つに合理化できる。
【0022】
データ交換に専用のメモリを実装する必要はなく、システムメモリなど共有のメモリを用いることができる。このため、パイプラインに必要であったFIFOメモリを大幅に削減することができる。
【図面の簡単な説明】
【0023】
【図1】本発明のDMA制御装置を説明する図である。
【図2】本発明のDMA制御装置の指標(0次元)の動きを説明する図である。
【図3】本発明のDMA制御装置の指標(1次元)の動きを説明する図である。
【図4】本発明のDMA制御装置の指標(入力と出力)の比較を説明する図である。
【図5】本発明のDMA制御装置の状態遷移を説明する図である。
【図6】本発明のDMA制御装置の調停を説明する図である。
【図7】本発明のDMA制御装置の部分的なデータ交換を説明する図である。
【図8】本発明のDMA制御装置のパイプラインの複数接続を説明する図である。
【図9】本発明のDMA制御装置のストール・更新待ちの制御を説明する図である。
【図10】本発明のDMA制御装置のストール・更新待ちの処理を説明する図である。
【図11】従来のDMA制御装置を説明する図である。
【発明を実施するための形態】
【0024】
以下、本発明の実施の形態について、図面を参照して詳細に説明する。
【実施例1】
【0025】
本発明の実施例1に係るDMA制御装置について説明する。本実施の形態は、図1を用いて説明する。
【0026】
図1において、1はDMA制御装置、101は更新管理装置、102は調停装置、103は計算装置、104はパラメータメモリ、105は共有メモリ、111から114はそれぞれ任意機能のパイプラインである。
【0027】
更新管理装置101は、複数あるDMAごとの情報を管理し、外部から起動・停止などの指示を受け付ける。DMA情報は、DMAの状態とDMAに必要な転送単位や指標を含むパラメータからなる。
【0028】
調停装置102は、更新管理装置101の全てのDMA情報から、DMA処理の候補を1つだけ選択する。
【0029】
計算装置103は、調停装置102で選択したDMA情報から、指定するパイプライン111から114のいずれかに対して起動制御を行う。起動制御は、参照する別のDMAがあれば、そのDMAの指標を用いてパイプラインの起動をする・しないを決定する。また、更新管理装置101に与える更新後の指標の計算と、パイプライン111から114に与える転送単位と指標の計算を行う。
【0030】
パラメータメモリ104は、DMA情報を格納するためのメモリである。外部から更新管理装置101を経由して設定するか、更新管理装置101が共有メモリ105からDMA情報を読み込んで設定するかのいずれかになる。
【0031】
パイプライン111から114は、計算装置103から同時刻に1つだけ起動される。指定される転送単位と指標に従って、共有メモリ105からデータを読み込み、データを加工し、共有メモリ105へデータを書き込む。
【0032】
以上は、DMA制御装置1の接続の簡単な説明であり、以下に詳細な説明を行う。
【0033】
DMA情報は、状態、転送単位、転送サイズ、パイプライン番号、参照DMA番号、指標(入力/出力)からなる。状態は、DMAの起動・停止・保留・終了のいずれかである。更新管理装置101は、これらDMA情報を複数管理する。実際には、実体のあるパラメータメモリ104のアクセスを管理する。
【0034】
転送単位は、DMAを分割転送する際の単位を示す。転送サイズは、DMA全体の転送量を示す。転送サイズを転送単位で割ったものがDMAの分割数になる。パイプライン番号は、どのパイプラインを駆動するかの選択を示す。
【0035】
参照DMA番号は、どのDMAの指標を参照するかの選択を示す。指標は、DMAの進行状況を示し、座標のように0から転送サイズ分まで変化する。
【0036】
転送単位が5で転送サイズが34の場合、入力指標は図2に示すように0, 5, 10, 15, 20, 25, 30と変化して、昇順にパイプライン111から114のいずれかに送られる。通常転送単位は指定した5であるが、最後は転送サイズに満たないので4になる。また、転送の最後には終了フラグが付く。
【0037】
これらの計算は、計算装置103で実施する。なお、指標の単位はそれぞれのパイプラインによって自由に選択する。例えば、バイト単位、画像のRGB単位などである。ただし、相互に参照するパイプラインの指標の単位は統一しておく必要がある。
【0038】
パイプラインを起動する・しないは、指標の相互比較により決定する。図4は、パイプライン111が生成したデータを、パイプライン112が加工する場合の図である。
【0039】
パイプライン111は転送単位と入力指標に従いデータを加工するが、共有メモリ105に結果を書き込むまでいくらかの遅延が生じる。遅延はパイプラインの状態によって予測できないため、どこまで進行したかを示す出力指標を出力する。パイプライン112も同様である。
【0040】
パイプライン111が書き込む前に、パイプライン112がデータを読み込んではいけない。このため、パイプライン111の出力指標と、パイプライン112の入力指標+転送単位とを比較する。比較の結果、パイプライン111の出力指標の方が大きければ、パイプライン112は転送単位分のデータを書き込んだと判断できるので、計算装置103はパイプライン112を起動する。
【0041】
一方、共有メモリをFIFOもしくはリングバッファとして使用する場合、パイプライン112が読み込む前に、パイプライン111がデータを書き込んではいけない(結果の上書き禁止のため)。このため、パイプライン111の出力指標+転送単位と、パイプライン112の入力指標+転送サイズとを比較する。比較の結果、パイプライン112の入力指標+転送サイズの方が大きければ、パイプライン111は転送単位分のデータの書き込みの余裕があると判断できるので、計算装置103はパイプライン111を起動する。
【0042】
指標は転送サイズ分のDMAを終了すると0になるが、共有メモリ105をFIFOもしくはリングバッファとして使う場合、1周したことを示すキャリア用の指標を別に用意する。この指標は、上述した指標の比較に利用する。具体的には、キャリア用の指標の差が、転送サイズ分の差とみなして計算する。
【0043】
入力指標と出力指標は相互に参照するため、それぞれ別々に管理する。計算装置103は転送単位と入力指標と転送終了フラグを生成し、パイプライン111から114のいずれかに送信する。それと同時に入力指標+転送単位を生成し、更新管理装置101に送信する。
【0044】
出力指標は、パイプライン111から114において、共有メモリ105に書き込む度に更新するもので、更新管理装置101へ終了フラグとともに送信する。
【0045】
更新管理装置101は、これらの指標をパラメータメモリ104に格納する。なお、出力指標は、1つずつ更新するのでなく、転送単位ごとに更新してもよい。さらに、パイプライン111から114は、指標ではなく転送単位ごとに更新フラグだけを出力し、更新管理装置101において転送単位を加算・蓄積しながら更新を行ってもよい。
【0046】
更新管理装置101は図5に示すように、出力指標に終了フラグが付属していれば(Finフラグ)、状態を起動から終了状態に遷移させる。その後、連続して起動する設定があれば(Loopフラグ)、同じDMA情報で、もしくは新たなDMA情報に変更して再び起動状態にし、そうでなければ停止状態にする。なお、図5は1つのDMAの状態遷移を示すもので、更新管理装置101は、それぞれ異なる複数のDMAの状態を管理する。
【0047】
新たなDMA情報の更新は、DMA情報に次のDMA情報のアドレスを加えておき、それを元に共有メモリ105からデータを読み込み、パラメータメモリ104を更新することで実施する。
【0048】
計算装置103は指標計算のため、パラメータメモリ104を参照する。ターゲットとなるDMA番号を元に、転送単位、転送サイズ、パイプライン番号、参照DMA番号、入力指標を入手する。また、入手した参照DMA番号を元に、さらに参照DMAの出力指標を入手する。
【0049】
参照するDMAはいくつあってもよいが、コスト増加もしくは比較に要する性能劣化が生じる。例えば、パラメータメモリ104は同時参照数が増えるため、特殊なメモリが必要になる。あるいは、時分割にパラメータメモリ104を参照すれば、時分割した分性能が低下する。
【0050】
ただし、パイプライン接続は前後分用意した方がよいので、転送元と転送先の2つ程度は必要である。なお、参照DMAの設定がない場合、パイプラインは常に起動される。
【0051】
更新管理装置101は、常に各DMAで起動状態にあるものを調停装置102に出力する。ただし、一旦調停装置102で選択され、計算装置103に処理を送られたDMAは保留状態となる。これは、計算装置103における入力指標の更新(Doneフラグ)を待つ必要があるためである。
【0052】
外部からは、更新管理装置101で管理している起動フラグ(Actフラグ)を、任意のタイミングで操作できるようにする。
【0053】
調停装置102は、各DMAの状態から起動状態にあるものを選びだし、さらに1つに絞って計算装置103に出力する。
【0054】
しかし、複数の起動状態にあるDMAから均等に1つを選択しなければ、特定のDMAや特定のパイプラインに偏って処理される。これを回避するための制御を、図6を用いて説明する。図6では、DMAがN個設定できるものとしている。
【0055】
調停装置102は、最初のステップ(図6の1021)で、DMA情報からパイプラインの使用状態を把握し、その中からRound-Robin方式で均等にターゲットのパイプラインを選択する。
【0056】
例えば、パイプライン111と112はいずれかのDMAで使用され、パイプライン113と114はいずれのDMAでも使用されないとすると、調停装置102は、パイプライン111と112を指し示すDMAを交互に選択する。
【0057】
調停装置102は次のステップ(図6の1022)で、さらにRound-Robin方式で均等にターゲットのDMAを選択する。
【0058】
例えば、DMA番号AとDMA番号Bがパイプライン111を使用しているとすると、調停装置102は、DMA番号AとDMA番号Bを交互に選択する。
【0059】
また、DMA番号XとDMA番号YとDMA番号Zがパイプライン112を使用しているとすると、調停装置102は、DMA番号XとDMA番号YとDMA番号Zを順番に選択する。
【0060】
総合すると、DMA番号A、DMA番号X、DMA番号B、DMA番号Y、DMA番号A、DMA番号Zの順で計算装置103に情報を送る。
【0061】
ここで、予めパイプラインの状態(何らかの理由で処理が止まっている状態など)から、最初のステップで選択候補から外すことも考えられる。
【0062】
この考えを拡張して、計算装置103とパイプライン111から114との間に起動緩衝用のFIFOメモリを挿入しておき(図6の1111から1141)、FIFOメモリに一定の余裕(計算装置103の処理ステップ相当)がない場合選択候補から外すことなどが考えられる。
【0063】
以上のように、設定した転送単位ごとに、調停装置102で有効なDMAを選択し、計算装置103で他のDMAの状態を参照しながら任意のパイプライン111から114を起動することで、複数のDMAの時分割制御が可能である。
【0064】
また外部からは、任意のDMAの連続実行や停止が、任意のタイミングで操作できる。
【0065】
なお、特定のパイプライン間でデータ共有しない制約を設ければ、共有メモリ105は、データ共有するパイプラインだけに用意してもよい。
【0066】
また、調停装置102と計算装置103は同時刻に1つだけ処理するのではなく、2つ以上処理して、パイプライン111から114を同時に起動してもなんら問題ない。
【実施例2】
【0067】
本発明の実施例2に係るDMA制御装置について説明する。本実施の形態は、実施例1を参照しながら説明する。
【0068】
指標の取り扱いに関して、1次元ではなくN次元に拡張できることを説明する。ここでは簡単のため、0次元と1次元の応用例を述べる。
【0069】
指標は次元の高い方から記述し、例えば転送サイズが3x34であれば、34の長さの0次元転送を3回繰り返すことを示す。転送単位が5で転送サイズが3x34の場合、指標は図3に示すように0, 5, 10, 15, 20, 25, 30と変化して、昇順にパイプライン111から114のいずれかに繰り返し合計3回送られる。また、転送の最後には終了フラグが付く。
【0070】
一方、計算装置103は、参照DMA番号の入手と同時に、新たにDMA情報に加えられた参照次元を入手する。参照次元により、次元数分ある指標から比較に用いるものを1つ選択する。例えば、参照次元が0なら転送サイズ34までの指標を選択し、参照次元が1なら転送サイズ3までの指標を選択する。
【0071】
図4で示したように、パイプライン111と112を接続する場合、1次元のラインの比較を利用すると、パイプライン111の1ラインの書き込みが完了するまで、パイプライン112の読み込みは実行されない。
【0072】
同様に、次元が上がれば、面ごとのデータ制御、立体ごとのデータ制御が可能となる。なお、DMAごとに参照次元が異なっても問題はない。例えば、パイプライン111は、ライン分の余裕があるかをチェックして書き込み(1次元参照)、パイプライン112は、転送単位分のデータがあるかをチェックして読み込む(0次元参照)などである。
【0073】
キャリア用の指標は、1つ上の参照次元のLSB(Least Significant Bit)が代用できるので、1つだけ用意すればよい。例えば、0次元と1次元しか対応しないのであれば、キャリア用の指標は、1次元の指標を1周したことを示すものを用意する。
【0074】
また、0次元の転送サイズを異なる値にし、参照次元を1次元にしておけば、パイプライン111で書き込む数とパイプライン112で読み込む数を変換することができる。
【0075】
例えば、パイプライン111は転送サイズ3x34、パイプライン112は転送サイズ3x15に設定し、お互い1次元参照させる。双方、0次元の指標は参照しないので、ラインごとの制御になる。
【0076】
なお、ライン長は、34と15と言うようにそれぞれ異なっているが、パイプライン112に34→15のサンプリング変換機能などを組み込んでおけば整合性を保てる。
【0077】
次に、参照する指標にオフセットを付けることで、部分への書き込み、また部分からの読み込みが可能である。オフセットは、DMA情報に新たに加えられるものである。
【0078】
例えば、図7にオフセットを用いた、1次元転送を行うパイプライン111とパイプライン112の接続の様子を示す。
【0079】
パイプライン111を使うDMAだけに、オフセットと部分長の転送サイズを設定する。1次元参照にすることで、パイプライン111の部分書き込みが終了した時点で、パイプライン112の読み込みが実施される。
【0080】
以上のように、指標を次元拡張することで、点(転送単位)、線(ライン)、面、立体などの単位でパイプラインのデータ交換が可能である。
【0081】
異なる参照次元を設定すれば、ビデオ処理のように、面ごとに図形を書き込み、線ごとにスキャンしながらディスプレイに出力するなどの応用が可能である。
【0082】
また、異なる転送サイズを設定すれば、オーディオ処理のように、入力と出力のサンプリング数を変換するなどの応用が可能である。
【0083】
さらに、オフセットを使用することで、転送サイズの相違に加え、部分的なデータの交換も可能である。
【0084】
なお、指標は次元数分必要になるため、コスト的に更新管理装置102、計算装置103、およびパラメータメモリ104に影響を与える。ただし、構造的にはなんら変わるものではなく、コストが許せば任意の次元の対応が可能である。
【実施例3】
【0085】
本発明の実施例3に係るDMA制御装置について説明する。本実施の形態は、実施例1と実施例2を参照しながら説明する。
【0086】
図8に示すように、パイプライン111から113が書き込み、パイプライン114が読み込む場合の手法を説明する。
【0087】
複数の書き込みは、順序通りに実行しなければならないものと、しなくてよいものがある。前者は、画像のアルファ合成など順序に意味を持つものである。後者は、音声ミキサー(加算)など順序に意味を持たないものである。機能的に前者は後者を包含するため、ここでは順序通りにDMAを実行するための手法を述べる。
【0088】
一連の接続制御を行うDMAグループが一斉に起動できることを前提にすると、この手法の十分条件は、DMA番号の昇順での実行を保証することである。
【0089】
説明のため、パイプライン111から114を起動するDMAを、それぞれDMA111からDMA114と名付けておく。
【0090】
1番目の条件を述べる。参照する指標の更新順序がずれると、起動順序を守ることができない。従って、DMA書き込みグループ(DMA111から113)の入力指標と出力指標の更新順序を守る必要がある。
【0091】
先ず、入力指標において、転送回数が同じになるように設定する。例えば、1次元の指標を参照するなら、0次元の転送サイズ÷転送単位が同じになるように設定を調整する。これにより、DMA書き込みグループごとに同期した指標の更新がなされる。
【0092】
次に、出力指標の更新はパイプラインの遅延が任意長であることから、そのタイミングは予測できない。そこで、参照した指標にチェックを付けておき、チェックの付いた指標に対してパイプラインからの更新が発生すれば、途中改変の印を付ける。
【0093】
もし、DMA書き込みグループ(DMA111から113)の指標の相互参照中に出力指標の更新があれば、DMA書き込みグループの処理が一周するまでパイプラインを起動させない。これにより、DMA書き込みグループ内では、必ず若い番号のDMAが先行することになる。
【0094】
例えば、計算装置103において、DMA111がある出力指標を参照し、その後パイプラインからその出力指標を更新した場合、DMA112とDMA113は無条件で起動させなくする。即ち、DMA111はDMA112と113に比べ指標の更新が先行する。また、DMA112はDMA113に比べ指標の更新が先行する。これにより、DMA書き込みグループ(DMA111から113)内で若い番号のDMAが必ず先に実施される。
【0095】
なお、参照後に更新したことを示すフラグを用意するが、調停装置102のRound-Robin方式の調停周期が1周する度にクリアしておく。
【0096】
2番目の条件を述べる。DMA書き込みグループ(DMA111から113)の読み込みに関しては、別のパイプライン接続による制御が行われている可能性がある。これらの制御状況によっては、計算装置103がDMA書き込みグループのいずれかを起動しないことがある(ストール状態)。この場合、ストール状態のDMAは実行がスキップされ、起動順序が守られなくなる。
【0097】
そこで、あるDMAがストール状態になれば、DMA書き込みグループ(DMA111から113)全てを起動させなくする。例えば、DMA111がストール状態になれば、続くDMA112と113の起動を実施せず、DMA111のストール状態が解除されるのを待つ。
【0098】
以上を実施するため、ストールを参照する仕組みを導入する。DMA情報に新たにストール用の参照DMA番号を加える。また、計算装置103において、参照するDMAがストール状態であれば、計算中のDMAを起動しない。
【0099】
例えば、図9に示すように、DMA112はDMA111、DMA113はDMA112、DMA111はDMA113のリング型のストール参照を行わせる。実際は、図10に示すように、計算装置103が、パラメータメモリ104の参照・結果の書き込みを繰り返して処理する。
【0100】
これにより、DMA書き込みグループ(DMA111から113)のいずれかがストールすれば、DMA書き込みグループ全体をストールさせることができる。ただし、リング構造による無限伝搬を回避するため、ストールを発生させたDMAはストールの参照を行わない。
【0101】
3番目の条件を述べる。実施例2で説明したように、部分的なデータ交換を行う場合、指標の更新が終了するタイミングが違ってくる。例えば、他のDMAがサイズの終わりまで指標を更新するのに対し、DMA111が図7のような設定だと、これだけが途中で指標の切り替え(0にクリアし1つ上の次元をカウントアップ、もしくは終了)を行うことになる。
【0102】
そこで、DMA書き込みグループ(DMA111から113)において、全ての指標が切り替えの条件を満たさなければ、1つも切り替えを行なわないものとする(更新待ち)。
【0103】
以上を実施するため、更新待ちを参照する仕組みを導入する。DMA情報に新たに更新待ち用の参照DMA番号を加える。また、計算装置103において、計算中のDMAが切り替えタイミングであり、参照するDMAが切り替え状態でなければ(指標の更新がサイズ分終了していない、もしくは別のDMAの更新待ちとなっている場合)、計算中のDMAは起動するが、更新待ち状態とする。
【0104】
また、更新待ち状態では、終了フラグの送信も保留する。更新待ち状態が解除され次第、終了フラグを送信する。これにより、最も若いDMA111が更新する場合は、DMA書き込みグループ(DMA111から113)が更新した後となる。
【0105】
例えば、図9に示すように、DMA111はDMA112、DMA112はDMA113の更新待ち参照を行わせる。ただし、DMA書き込みグループ(DMA111から113)で最もDMA番号の大きいDMA113は更新待ちを参照させない。実際は、図10に示すように、計算装置103が、パラメータメモリ104の参照・結果の書き込みを繰り返して処理する。
【0106】
以上のように、DMA書き込みグループ(DMA111から113)のいずれかが更新待ちになれば、DMA書き込みグループの若いDMA番号に更新待ちが伝搬して行く。従って、最も若い番号のDMA111をDMA書き込みグループの代表として、DMA114と接続制御すればよい。
【0107】
なお、DMAグループはDMAの数が許す限り、いくつでも独立して設定できる。
【0108】
以上のように、上記の3つの条件に合うようパラメータを設定すれば、DMAをグループ化して相互に制御することが可能である。
【産業上の利用可能性】
【0109】
本発明のDMA制御装置は、計算機システムの応用であるデジタルAV機器、携帯端末、携帯電話、コンピュータ機器、車載制御機器、医療機器などに応用できる。
【符号の説明】
【0110】
1 DMA制御装置
101 更新管理装置
102 調停装置
103 計算装置
104 パラメータメモリ
105 共有メモリ
111 パイプライン
112 パイプライン
113 パイプライン
114 パイプライン
【技術分野】
【0001】
本発明は、メモリアクセスを行う複数の装置(DMA)に対して、お互いに連動させて柔軟なデータ加工を可能にするDMA制御装置に関する。
【背景技術】
【0002】
汎用プロセッサでは速度的に実現困難なデジタル処理は、いくつかのパイプラインを用いた専用ハードウェアで実現することが多い。しかしながら、パイプライン構造の複雑さは、設計工数・期間や回路コストに影響する。このため、複雑なパイプライン構造を簡単化するしくみが求められている。
【0003】
従来のDMA制御装置を、図11を用いて説明する。
【0004】
図11において、111から114は機能的に異なったパイプライン、115はパイプライン111と112の出力とパイプライン113と114の入力とを接続するFIFO(First In First Out)メモリ、105はパイプライン111と112に読み込まれ、パイプライン113と114から書き込まれる共有メモリである。
【0005】
パイプライン111と112は、独立して共有メモリ105からデータを読み込み、加工して出力データを生成する。出力データは、揃った段階でFIFOメモリ115に送信する。
【0006】
FIFOメモリ115は、パイプライン間の処理速度のゆらぎを吸収し、性能を保つ役割を担う。データが満杯であればデータを受信せず、データがなければデータを送信しない。
【0007】
パイプライン113と114は、FIFOメモリ115からデータを受信し、加工後出力データを生成する。出力データは、独立して共有メモリ105に書き込む。
【0008】
以上のように従来のDMA制御装置は、構造的に固有の処理を行い、所望の機能を達成する。このような手法は、音声処理装置、画像処理装置などで一般に用いられる。
【0009】
なお、特許文献1にあるように、共有メモリにおけるバッファの取得・解放を、ハードウェアでなくプロセッサで管理することもある。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特開2009-003768号公開公報
【発明の概要】
【発明が解決しようとする課題】
【0011】
しかしながら、従来のDMA制御装置にあっては、以下のような問題点があった。
【0012】
先ず、パイプライン接続が固定しているため、処理の順序を入れ替えることができない。従って、処理の仕様が変わると、ハードウェアが全く利用できなくなる。
【0013】
次に、現在実行している処理が全て終了するまで、別の処理を実行できない。一連の処理が長い場合、時分割多重処理等の制御が困難になり、見かけ上の同時処理ができなくなる。この点、汎用プロセッサは、任意の時間にタスクやスレッドを切り替え、見かけ上の同時処理を実現している。
【0014】
さらに、ハードウェア設計を行う過程において、複雑な仕様になるほど設計の困難度が増加する。同時に、少しの仕様変更でもハードウェアの規模が大きいと、設計に対する影響も大きくなる。
【0015】
特許文献1には記載されていないが、共有メモリを複数個同時に制御する場合、DMAの数に応じた組み合わせチェックを行う必要がある。これは、DMA数の累乗に比例した計算が必要であり、DMA数が増えると汎用プロセッサでは能力的に限界が生じる。
【課題を解決するための手段】
【0016】
更新管理装置と、調停装置と、計算装置と、パラメータメモリと、共有メモリと、複数のパイプライン装置で構成する。
【0017】
前記パラメータメモリは複数のDMA情報を保持し、前記更新装置は前記DMA情報に記載されるDMAの状態を前記調停装置に与え、前記調停装置は起動状態のDMA番号を1つ選択し前記計算装置に与え、前記計算装置はDMA番号に対応するDMA情報を前記パラメータメモリから取り出しDMA情報に記載されるパイプライン番号に対応する前記パイプライン装置にDMA実施用の入力指標を与え前記更新管理装置にDMA更新用の入力指標を与え、前記パイプライン装置は指標に従って前記共有メモリをアクセスし前記更新管理装置にDMA更新用の出力指標を与える。
【0018】
前記更新管理装置は前記計算装置が示す入力指標と前記パイプライン装置が示す出力指標を前記パラメータメモリに対して更新し、出力指標の最終更新時もしくは外部アクセスによる該当DMAの起動・停止操作もしくはパラメータ操作により前記パラメータメモリの内容を更新する。
【発明の効果】
【0019】
本発明によれば、パイプラインの接続は、制御情報により自由に設定できる。従って、任意のパイプラインを組み合わせたDMAが実施できる。制御情報に次の制御情報を示すポインタを用意し、DMA終了時にそこに記載されたDMA情報に入れ替えることにより、逐次処理が可能である。
【0020】
制御情報にDMAの進行に関する指標をN次元分用意することで、点・線・面・立体などの単位のDMA制御が可能である。また、1対1の比率のデータ交換だけでなく、任意の整数比のデータ交換も可能である。
【0021】
パイプラインを細かい単位で自動的に起動するので、時分割多重が容易である。時分割多重により、複数の同じ機能のパイプラインが最大1つに合理化できる。
【0022】
データ交換に専用のメモリを実装する必要はなく、システムメモリなど共有のメモリを用いることができる。このため、パイプラインに必要であったFIFOメモリを大幅に削減することができる。
【図面の簡単な説明】
【0023】
【図1】本発明のDMA制御装置を説明する図である。
【図2】本発明のDMA制御装置の指標(0次元)の動きを説明する図である。
【図3】本発明のDMA制御装置の指標(1次元)の動きを説明する図である。
【図4】本発明のDMA制御装置の指標(入力と出力)の比較を説明する図である。
【図5】本発明のDMA制御装置の状態遷移を説明する図である。
【図6】本発明のDMA制御装置の調停を説明する図である。
【図7】本発明のDMA制御装置の部分的なデータ交換を説明する図である。
【図8】本発明のDMA制御装置のパイプラインの複数接続を説明する図である。
【図9】本発明のDMA制御装置のストール・更新待ちの制御を説明する図である。
【図10】本発明のDMA制御装置のストール・更新待ちの処理を説明する図である。
【図11】従来のDMA制御装置を説明する図である。
【発明を実施するための形態】
【0024】
以下、本発明の実施の形態について、図面を参照して詳細に説明する。
【実施例1】
【0025】
本発明の実施例1に係るDMA制御装置について説明する。本実施の形態は、図1を用いて説明する。
【0026】
図1において、1はDMA制御装置、101は更新管理装置、102は調停装置、103は計算装置、104はパラメータメモリ、105は共有メモリ、111から114はそれぞれ任意機能のパイプラインである。
【0027】
更新管理装置101は、複数あるDMAごとの情報を管理し、外部から起動・停止などの指示を受け付ける。DMA情報は、DMAの状態とDMAに必要な転送単位や指標を含むパラメータからなる。
【0028】
調停装置102は、更新管理装置101の全てのDMA情報から、DMA処理の候補を1つだけ選択する。
【0029】
計算装置103は、調停装置102で選択したDMA情報から、指定するパイプライン111から114のいずれかに対して起動制御を行う。起動制御は、参照する別のDMAがあれば、そのDMAの指標を用いてパイプラインの起動をする・しないを決定する。また、更新管理装置101に与える更新後の指標の計算と、パイプライン111から114に与える転送単位と指標の計算を行う。
【0030】
パラメータメモリ104は、DMA情報を格納するためのメモリである。外部から更新管理装置101を経由して設定するか、更新管理装置101が共有メモリ105からDMA情報を読み込んで設定するかのいずれかになる。
【0031】
パイプライン111から114は、計算装置103から同時刻に1つだけ起動される。指定される転送単位と指標に従って、共有メモリ105からデータを読み込み、データを加工し、共有メモリ105へデータを書き込む。
【0032】
以上は、DMA制御装置1の接続の簡単な説明であり、以下に詳細な説明を行う。
【0033】
DMA情報は、状態、転送単位、転送サイズ、パイプライン番号、参照DMA番号、指標(入力/出力)からなる。状態は、DMAの起動・停止・保留・終了のいずれかである。更新管理装置101は、これらDMA情報を複数管理する。実際には、実体のあるパラメータメモリ104のアクセスを管理する。
【0034】
転送単位は、DMAを分割転送する際の単位を示す。転送サイズは、DMA全体の転送量を示す。転送サイズを転送単位で割ったものがDMAの分割数になる。パイプライン番号は、どのパイプラインを駆動するかの選択を示す。
【0035】
参照DMA番号は、どのDMAの指標を参照するかの選択を示す。指標は、DMAの進行状況を示し、座標のように0から転送サイズ分まで変化する。
【0036】
転送単位が5で転送サイズが34の場合、入力指標は図2に示すように0, 5, 10, 15, 20, 25, 30と変化して、昇順にパイプライン111から114のいずれかに送られる。通常転送単位は指定した5であるが、最後は転送サイズに満たないので4になる。また、転送の最後には終了フラグが付く。
【0037】
これらの計算は、計算装置103で実施する。なお、指標の単位はそれぞれのパイプラインによって自由に選択する。例えば、バイト単位、画像のRGB単位などである。ただし、相互に参照するパイプラインの指標の単位は統一しておく必要がある。
【0038】
パイプラインを起動する・しないは、指標の相互比較により決定する。図4は、パイプライン111が生成したデータを、パイプライン112が加工する場合の図である。
【0039】
パイプライン111は転送単位と入力指標に従いデータを加工するが、共有メモリ105に結果を書き込むまでいくらかの遅延が生じる。遅延はパイプラインの状態によって予測できないため、どこまで進行したかを示す出力指標を出力する。パイプライン112も同様である。
【0040】
パイプライン111が書き込む前に、パイプライン112がデータを読み込んではいけない。このため、パイプライン111の出力指標と、パイプライン112の入力指標+転送単位とを比較する。比較の結果、パイプライン111の出力指標の方が大きければ、パイプライン112は転送単位分のデータを書き込んだと判断できるので、計算装置103はパイプライン112を起動する。
【0041】
一方、共有メモリをFIFOもしくはリングバッファとして使用する場合、パイプライン112が読み込む前に、パイプライン111がデータを書き込んではいけない(結果の上書き禁止のため)。このため、パイプライン111の出力指標+転送単位と、パイプライン112の入力指標+転送サイズとを比較する。比較の結果、パイプライン112の入力指標+転送サイズの方が大きければ、パイプライン111は転送単位分のデータの書き込みの余裕があると判断できるので、計算装置103はパイプライン111を起動する。
【0042】
指標は転送サイズ分のDMAを終了すると0になるが、共有メモリ105をFIFOもしくはリングバッファとして使う場合、1周したことを示すキャリア用の指標を別に用意する。この指標は、上述した指標の比較に利用する。具体的には、キャリア用の指標の差が、転送サイズ分の差とみなして計算する。
【0043】
入力指標と出力指標は相互に参照するため、それぞれ別々に管理する。計算装置103は転送単位と入力指標と転送終了フラグを生成し、パイプライン111から114のいずれかに送信する。それと同時に入力指標+転送単位を生成し、更新管理装置101に送信する。
【0044】
出力指標は、パイプライン111から114において、共有メモリ105に書き込む度に更新するもので、更新管理装置101へ終了フラグとともに送信する。
【0045】
更新管理装置101は、これらの指標をパラメータメモリ104に格納する。なお、出力指標は、1つずつ更新するのでなく、転送単位ごとに更新してもよい。さらに、パイプライン111から114は、指標ではなく転送単位ごとに更新フラグだけを出力し、更新管理装置101において転送単位を加算・蓄積しながら更新を行ってもよい。
【0046】
更新管理装置101は図5に示すように、出力指標に終了フラグが付属していれば(Finフラグ)、状態を起動から終了状態に遷移させる。その後、連続して起動する設定があれば(Loopフラグ)、同じDMA情報で、もしくは新たなDMA情報に変更して再び起動状態にし、そうでなければ停止状態にする。なお、図5は1つのDMAの状態遷移を示すもので、更新管理装置101は、それぞれ異なる複数のDMAの状態を管理する。
【0047】
新たなDMA情報の更新は、DMA情報に次のDMA情報のアドレスを加えておき、それを元に共有メモリ105からデータを読み込み、パラメータメモリ104を更新することで実施する。
【0048】
計算装置103は指標計算のため、パラメータメモリ104を参照する。ターゲットとなるDMA番号を元に、転送単位、転送サイズ、パイプライン番号、参照DMA番号、入力指標を入手する。また、入手した参照DMA番号を元に、さらに参照DMAの出力指標を入手する。
【0049】
参照するDMAはいくつあってもよいが、コスト増加もしくは比較に要する性能劣化が生じる。例えば、パラメータメモリ104は同時参照数が増えるため、特殊なメモリが必要になる。あるいは、時分割にパラメータメモリ104を参照すれば、時分割した分性能が低下する。
【0050】
ただし、パイプライン接続は前後分用意した方がよいので、転送元と転送先の2つ程度は必要である。なお、参照DMAの設定がない場合、パイプラインは常に起動される。
【0051】
更新管理装置101は、常に各DMAで起動状態にあるものを調停装置102に出力する。ただし、一旦調停装置102で選択され、計算装置103に処理を送られたDMAは保留状態となる。これは、計算装置103における入力指標の更新(Doneフラグ)を待つ必要があるためである。
【0052】
外部からは、更新管理装置101で管理している起動フラグ(Actフラグ)を、任意のタイミングで操作できるようにする。
【0053】
調停装置102は、各DMAの状態から起動状態にあるものを選びだし、さらに1つに絞って計算装置103に出力する。
【0054】
しかし、複数の起動状態にあるDMAから均等に1つを選択しなければ、特定のDMAや特定のパイプラインに偏って処理される。これを回避するための制御を、図6を用いて説明する。図6では、DMAがN個設定できるものとしている。
【0055】
調停装置102は、最初のステップ(図6の1021)で、DMA情報からパイプラインの使用状態を把握し、その中からRound-Robin方式で均等にターゲットのパイプラインを選択する。
【0056】
例えば、パイプライン111と112はいずれかのDMAで使用され、パイプライン113と114はいずれのDMAでも使用されないとすると、調停装置102は、パイプライン111と112を指し示すDMAを交互に選択する。
【0057】
調停装置102は次のステップ(図6の1022)で、さらにRound-Robin方式で均等にターゲットのDMAを選択する。
【0058】
例えば、DMA番号AとDMA番号Bがパイプライン111を使用しているとすると、調停装置102は、DMA番号AとDMA番号Bを交互に選択する。
【0059】
また、DMA番号XとDMA番号YとDMA番号Zがパイプライン112を使用しているとすると、調停装置102は、DMA番号XとDMA番号YとDMA番号Zを順番に選択する。
【0060】
総合すると、DMA番号A、DMA番号X、DMA番号B、DMA番号Y、DMA番号A、DMA番号Zの順で計算装置103に情報を送る。
【0061】
ここで、予めパイプラインの状態(何らかの理由で処理が止まっている状態など)から、最初のステップで選択候補から外すことも考えられる。
【0062】
この考えを拡張して、計算装置103とパイプライン111から114との間に起動緩衝用のFIFOメモリを挿入しておき(図6の1111から1141)、FIFOメモリに一定の余裕(計算装置103の処理ステップ相当)がない場合選択候補から外すことなどが考えられる。
【0063】
以上のように、設定した転送単位ごとに、調停装置102で有効なDMAを選択し、計算装置103で他のDMAの状態を参照しながら任意のパイプライン111から114を起動することで、複数のDMAの時分割制御が可能である。
【0064】
また外部からは、任意のDMAの連続実行や停止が、任意のタイミングで操作できる。
【0065】
なお、特定のパイプライン間でデータ共有しない制約を設ければ、共有メモリ105は、データ共有するパイプラインだけに用意してもよい。
【0066】
また、調停装置102と計算装置103は同時刻に1つだけ処理するのではなく、2つ以上処理して、パイプライン111から114を同時に起動してもなんら問題ない。
【実施例2】
【0067】
本発明の実施例2に係るDMA制御装置について説明する。本実施の形態は、実施例1を参照しながら説明する。
【0068】
指標の取り扱いに関して、1次元ではなくN次元に拡張できることを説明する。ここでは簡単のため、0次元と1次元の応用例を述べる。
【0069】
指標は次元の高い方から記述し、例えば転送サイズが3x34であれば、34の長さの0次元転送を3回繰り返すことを示す。転送単位が5で転送サイズが3x34の場合、指標は図3に示すように0, 5, 10, 15, 20, 25, 30と変化して、昇順にパイプライン111から114のいずれかに繰り返し合計3回送られる。また、転送の最後には終了フラグが付く。
【0070】
一方、計算装置103は、参照DMA番号の入手と同時に、新たにDMA情報に加えられた参照次元を入手する。参照次元により、次元数分ある指標から比較に用いるものを1つ選択する。例えば、参照次元が0なら転送サイズ34までの指標を選択し、参照次元が1なら転送サイズ3までの指標を選択する。
【0071】
図4で示したように、パイプライン111と112を接続する場合、1次元のラインの比較を利用すると、パイプライン111の1ラインの書き込みが完了するまで、パイプライン112の読み込みは実行されない。
【0072】
同様に、次元が上がれば、面ごとのデータ制御、立体ごとのデータ制御が可能となる。なお、DMAごとに参照次元が異なっても問題はない。例えば、パイプライン111は、ライン分の余裕があるかをチェックして書き込み(1次元参照)、パイプライン112は、転送単位分のデータがあるかをチェックして読み込む(0次元参照)などである。
【0073】
キャリア用の指標は、1つ上の参照次元のLSB(Least Significant Bit)が代用できるので、1つだけ用意すればよい。例えば、0次元と1次元しか対応しないのであれば、キャリア用の指標は、1次元の指標を1周したことを示すものを用意する。
【0074】
また、0次元の転送サイズを異なる値にし、参照次元を1次元にしておけば、パイプライン111で書き込む数とパイプライン112で読み込む数を変換することができる。
【0075】
例えば、パイプライン111は転送サイズ3x34、パイプライン112は転送サイズ3x15に設定し、お互い1次元参照させる。双方、0次元の指標は参照しないので、ラインごとの制御になる。
【0076】
なお、ライン長は、34と15と言うようにそれぞれ異なっているが、パイプライン112に34→15のサンプリング変換機能などを組み込んでおけば整合性を保てる。
【0077】
次に、参照する指標にオフセットを付けることで、部分への書き込み、また部分からの読み込みが可能である。オフセットは、DMA情報に新たに加えられるものである。
【0078】
例えば、図7にオフセットを用いた、1次元転送を行うパイプライン111とパイプライン112の接続の様子を示す。
【0079】
パイプライン111を使うDMAだけに、オフセットと部分長の転送サイズを設定する。1次元参照にすることで、パイプライン111の部分書き込みが終了した時点で、パイプライン112の読み込みが実施される。
【0080】
以上のように、指標を次元拡張することで、点(転送単位)、線(ライン)、面、立体などの単位でパイプラインのデータ交換が可能である。
【0081】
異なる参照次元を設定すれば、ビデオ処理のように、面ごとに図形を書き込み、線ごとにスキャンしながらディスプレイに出力するなどの応用が可能である。
【0082】
また、異なる転送サイズを設定すれば、オーディオ処理のように、入力と出力のサンプリング数を変換するなどの応用が可能である。
【0083】
さらに、オフセットを使用することで、転送サイズの相違に加え、部分的なデータの交換も可能である。
【0084】
なお、指標は次元数分必要になるため、コスト的に更新管理装置102、計算装置103、およびパラメータメモリ104に影響を与える。ただし、構造的にはなんら変わるものではなく、コストが許せば任意の次元の対応が可能である。
【実施例3】
【0085】
本発明の実施例3に係るDMA制御装置について説明する。本実施の形態は、実施例1と実施例2を参照しながら説明する。
【0086】
図8に示すように、パイプライン111から113が書き込み、パイプライン114が読み込む場合の手法を説明する。
【0087】
複数の書き込みは、順序通りに実行しなければならないものと、しなくてよいものがある。前者は、画像のアルファ合成など順序に意味を持つものである。後者は、音声ミキサー(加算)など順序に意味を持たないものである。機能的に前者は後者を包含するため、ここでは順序通りにDMAを実行するための手法を述べる。
【0088】
一連の接続制御を行うDMAグループが一斉に起動できることを前提にすると、この手法の十分条件は、DMA番号の昇順での実行を保証することである。
【0089】
説明のため、パイプライン111から114を起動するDMAを、それぞれDMA111からDMA114と名付けておく。
【0090】
1番目の条件を述べる。参照する指標の更新順序がずれると、起動順序を守ることができない。従って、DMA書き込みグループ(DMA111から113)の入力指標と出力指標の更新順序を守る必要がある。
【0091】
先ず、入力指標において、転送回数が同じになるように設定する。例えば、1次元の指標を参照するなら、0次元の転送サイズ÷転送単位が同じになるように設定を調整する。これにより、DMA書き込みグループごとに同期した指標の更新がなされる。
【0092】
次に、出力指標の更新はパイプラインの遅延が任意長であることから、そのタイミングは予測できない。そこで、参照した指標にチェックを付けておき、チェックの付いた指標に対してパイプラインからの更新が発生すれば、途中改変の印を付ける。
【0093】
もし、DMA書き込みグループ(DMA111から113)の指標の相互参照中に出力指標の更新があれば、DMA書き込みグループの処理が一周するまでパイプラインを起動させない。これにより、DMA書き込みグループ内では、必ず若い番号のDMAが先行することになる。
【0094】
例えば、計算装置103において、DMA111がある出力指標を参照し、その後パイプラインからその出力指標を更新した場合、DMA112とDMA113は無条件で起動させなくする。即ち、DMA111はDMA112と113に比べ指標の更新が先行する。また、DMA112はDMA113に比べ指標の更新が先行する。これにより、DMA書き込みグループ(DMA111から113)内で若い番号のDMAが必ず先に実施される。
【0095】
なお、参照後に更新したことを示すフラグを用意するが、調停装置102のRound-Robin方式の調停周期が1周する度にクリアしておく。
【0096】
2番目の条件を述べる。DMA書き込みグループ(DMA111から113)の読み込みに関しては、別のパイプライン接続による制御が行われている可能性がある。これらの制御状況によっては、計算装置103がDMA書き込みグループのいずれかを起動しないことがある(ストール状態)。この場合、ストール状態のDMAは実行がスキップされ、起動順序が守られなくなる。
【0097】
そこで、あるDMAがストール状態になれば、DMA書き込みグループ(DMA111から113)全てを起動させなくする。例えば、DMA111がストール状態になれば、続くDMA112と113の起動を実施せず、DMA111のストール状態が解除されるのを待つ。
【0098】
以上を実施するため、ストールを参照する仕組みを導入する。DMA情報に新たにストール用の参照DMA番号を加える。また、計算装置103において、参照するDMAがストール状態であれば、計算中のDMAを起動しない。
【0099】
例えば、図9に示すように、DMA112はDMA111、DMA113はDMA112、DMA111はDMA113のリング型のストール参照を行わせる。実際は、図10に示すように、計算装置103が、パラメータメモリ104の参照・結果の書き込みを繰り返して処理する。
【0100】
これにより、DMA書き込みグループ(DMA111から113)のいずれかがストールすれば、DMA書き込みグループ全体をストールさせることができる。ただし、リング構造による無限伝搬を回避するため、ストールを発生させたDMAはストールの参照を行わない。
【0101】
3番目の条件を述べる。実施例2で説明したように、部分的なデータ交換を行う場合、指標の更新が終了するタイミングが違ってくる。例えば、他のDMAがサイズの終わりまで指標を更新するのに対し、DMA111が図7のような設定だと、これだけが途中で指標の切り替え(0にクリアし1つ上の次元をカウントアップ、もしくは終了)を行うことになる。
【0102】
そこで、DMA書き込みグループ(DMA111から113)において、全ての指標が切り替えの条件を満たさなければ、1つも切り替えを行なわないものとする(更新待ち)。
【0103】
以上を実施するため、更新待ちを参照する仕組みを導入する。DMA情報に新たに更新待ち用の参照DMA番号を加える。また、計算装置103において、計算中のDMAが切り替えタイミングであり、参照するDMAが切り替え状態でなければ(指標の更新がサイズ分終了していない、もしくは別のDMAの更新待ちとなっている場合)、計算中のDMAは起動するが、更新待ち状態とする。
【0104】
また、更新待ち状態では、終了フラグの送信も保留する。更新待ち状態が解除され次第、終了フラグを送信する。これにより、最も若いDMA111が更新する場合は、DMA書き込みグループ(DMA111から113)が更新した後となる。
【0105】
例えば、図9に示すように、DMA111はDMA112、DMA112はDMA113の更新待ち参照を行わせる。ただし、DMA書き込みグループ(DMA111から113)で最もDMA番号の大きいDMA113は更新待ちを参照させない。実際は、図10に示すように、計算装置103が、パラメータメモリ104の参照・結果の書き込みを繰り返して処理する。
【0106】
以上のように、DMA書き込みグループ(DMA111から113)のいずれかが更新待ちになれば、DMA書き込みグループの若いDMA番号に更新待ちが伝搬して行く。従って、最も若い番号のDMA111をDMA書き込みグループの代表として、DMA114と接続制御すればよい。
【0107】
なお、DMAグループはDMAの数が許す限り、いくつでも独立して設定できる。
【0108】
以上のように、上記の3つの条件に合うようパラメータを設定すれば、DMAをグループ化して相互に制御することが可能である。
【産業上の利用可能性】
【0109】
本発明のDMA制御装置は、計算機システムの応用であるデジタルAV機器、携帯端末、携帯電話、コンピュータ機器、車載制御機器、医療機器などに応用できる。
【符号の説明】
【0110】
1 DMA制御装置
101 更新管理装置
102 調停装置
103 計算装置
104 パラメータメモリ
105 共有メモリ
111 パイプライン
112 パイプライン
113 パイプライン
114 パイプライン
【特許請求の範囲】
【請求項1】
更新管理装置と、調停装置と、計算装置と、パラメータメモリと、共有メモリと、複数のパイプライン装置で構成するDMA制御装置であって、
前記パラメータメモリは複数のDMA情報を保持し、前記更新装置は前記DMA情報に記載されるDMAの状態を前記調停装置に与え、前記調停装置は起動状態のDMA番号を1つ選択し前記計算装置に与え、前記計算装置はDMA番号に対応するDMA情報を前記パラメータメモリから取り出しDMA情報に記載されるパイプライン番号に対応する前記パイプライン装置にDMA実施用の入力指標を与え前記更新管理装置にDMA更新用の入力指標を与え、前記パイプライン装置は指標に従って前記共有メモリをアクセスし前記更新管理装置にDMA更新用の出力指標を与え、
前記更新管理装置は前記計算装置が示す入力指標と前記パイプライン装置が示す出力指標を前記パラメータメモリに対して更新し、出力指標の最終更新時もしくは外部アクセスによる該当DMAの起動・停止操作もしくはパラメータ操作により前記パラメータメモリの内容を更新することを特徴としたDMA制御装置。
【請求項2】
請求項1記載のDMA制御装置であって、
前記調停装置は前記パラメータメモリから起動状態でありDMA情報に記載されるパイプライン番号がラウンドロビン方式で管理する番号に一致し起動状態であるDMAを全て選択し、その中から別のラインロビン方式でDMA番号を1つ選択することを特徴としたDMA制御装置。
【請求項3】
請求項1記載のDMA制御装置であって、
前期更新管理装置は、DMAが終了する時点でDMA情報に記載される次のDMA情報のポインタを前記パラメータメモリから取り出し、前記ポインタが示すDMA情報を前記共有メモリから取り出して前記パラメータメモリに該当DMA情報として書き込むことを特徴としたDMA制御装置。
【請求項4】
請求項1記載のDMA制御装置であって、
前記計算装置はDMA情報に記載される参照DMA番号に対応するDMA情報を前記パラメータメモリから取り出しその中の出力指標と処理中の入力指標とを比較し前記パイプライン装置が実行できるか否かに従って前記パイプラインを起動し、
前記計算装置の比較において入力準備が整ったか否かを更新後の入力指標が出力指標より大きいかで判断し、出力準備が整ったか否かを更新後の入力指標が出力指標+転送量より大きいかで判断し、前記の2つの判断が真になる場合のみ前記パイプラインを起動することを特徴としたDMA制御装置。
【請求項5】
請求項1記載のDMA制御装置であって、
前記入力指標と出力指標はN-1次元を示すN個を用意し、前記計算装置はDMA情報に記載されるN-1次元の転送量と転送単位に従って0次元からN-1次元までの転送量の積を転送単位ごとに分割し入力指標を生成することを特徴としたDMA制御装置。
【請求項6】
請求項4記載および請求項5記載のDMA制御装置であって、
前記計算装置はDMA情報に記載される参照次元だけの前記出力指標と前記入力指標とを比較し前記パイプライン装置を起動するか否かを決定することを特徴としたDMA制御装置。
【請求項7】
請求項4記載のDMA制御装置であって、
前記計算装置はDMA情報に記載されるストール参照DMA番号があればそれに対応するDMA情報を前記パラメータメモリから取り出しその中のストールフラグが真でかつストールの発生源が処理中のDMAでなければ前記パイプライン装置を起動せず、また前記指標の比較で前記パイプライン装置を起動しない条件になる場合のみ前記パラメータメモリに対して処理中のDMAに対応するストールフラグを真にすることを特徴としたDMA制御装置。
【請求項8】
請求項4記載のDMA制御装置であって、
前記計算装置は前記パラメータメモリに対し前記出力指標の参照と同時に参照済フラグを真にし、また該当する出力指標の更新済フラグが真であった場合前記パイプラインを起動せず、
前記更新管理装置は前記パラメータメモリに対し前記出力指標の更新と同時に前記参照済みフラグが真であった場合は前記更新済みフラグを真にし、
前記調停装置の調停の周期ごとに前記フラグをクリアすることを特徴としたDMA制御装置。
【請求項9】
請求項6記載のDMA制御装置であって、
前記計算装置はDMA情報に記載される更新待ち参照DMA番号があればそれに対応するDMA情報を前記パラメータメモリから取り出しその中の更新待ちフラグが真で、かつ更新待ち次元に対応した前記入力指標が同じく更新待ち次元に対応した転送量に達する場合にのみ前記パラメータメモリに対して処理中のDMAに対応する更新待ちフラグを真にすることを特徴としたDMA制御装置。
【請求項1】
更新管理装置と、調停装置と、計算装置と、パラメータメモリと、共有メモリと、複数のパイプライン装置で構成するDMA制御装置であって、
前記パラメータメモリは複数のDMA情報を保持し、前記更新装置は前記DMA情報に記載されるDMAの状態を前記調停装置に与え、前記調停装置は起動状態のDMA番号を1つ選択し前記計算装置に与え、前記計算装置はDMA番号に対応するDMA情報を前記パラメータメモリから取り出しDMA情報に記載されるパイプライン番号に対応する前記パイプライン装置にDMA実施用の入力指標を与え前記更新管理装置にDMA更新用の入力指標を与え、前記パイプライン装置は指標に従って前記共有メモリをアクセスし前記更新管理装置にDMA更新用の出力指標を与え、
前記更新管理装置は前記計算装置が示す入力指標と前記パイプライン装置が示す出力指標を前記パラメータメモリに対して更新し、出力指標の最終更新時もしくは外部アクセスによる該当DMAの起動・停止操作もしくはパラメータ操作により前記パラメータメモリの内容を更新することを特徴としたDMA制御装置。
【請求項2】
請求項1記載のDMA制御装置であって、
前記調停装置は前記パラメータメモリから起動状態でありDMA情報に記載されるパイプライン番号がラウンドロビン方式で管理する番号に一致し起動状態であるDMAを全て選択し、その中から別のラインロビン方式でDMA番号を1つ選択することを特徴としたDMA制御装置。
【請求項3】
請求項1記載のDMA制御装置であって、
前期更新管理装置は、DMAが終了する時点でDMA情報に記載される次のDMA情報のポインタを前記パラメータメモリから取り出し、前記ポインタが示すDMA情報を前記共有メモリから取り出して前記パラメータメモリに該当DMA情報として書き込むことを特徴としたDMA制御装置。
【請求項4】
請求項1記載のDMA制御装置であって、
前記計算装置はDMA情報に記載される参照DMA番号に対応するDMA情報を前記パラメータメモリから取り出しその中の出力指標と処理中の入力指標とを比較し前記パイプライン装置が実行できるか否かに従って前記パイプラインを起動し、
前記計算装置の比較において入力準備が整ったか否かを更新後の入力指標が出力指標より大きいかで判断し、出力準備が整ったか否かを更新後の入力指標が出力指標+転送量より大きいかで判断し、前記の2つの判断が真になる場合のみ前記パイプラインを起動することを特徴としたDMA制御装置。
【請求項5】
請求項1記載のDMA制御装置であって、
前記入力指標と出力指標はN-1次元を示すN個を用意し、前記計算装置はDMA情報に記載されるN-1次元の転送量と転送単位に従って0次元からN-1次元までの転送量の積を転送単位ごとに分割し入力指標を生成することを特徴としたDMA制御装置。
【請求項6】
請求項4記載および請求項5記載のDMA制御装置であって、
前記計算装置はDMA情報に記載される参照次元だけの前記出力指標と前記入力指標とを比較し前記パイプライン装置を起動するか否かを決定することを特徴としたDMA制御装置。
【請求項7】
請求項4記載のDMA制御装置であって、
前記計算装置はDMA情報に記載されるストール参照DMA番号があればそれに対応するDMA情報を前記パラメータメモリから取り出しその中のストールフラグが真でかつストールの発生源が処理中のDMAでなければ前記パイプライン装置を起動せず、また前記指標の比較で前記パイプライン装置を起動しない条件になる場合のみ前記パラメータメモリに対して処理中のDMAに対応するストールフラグを真にすることを特徴としたDMA制御装置。
【請求項8】
請求項4記載のDMA制御装置であって、
前記計算装置は前記パラメータメモリに対し前記出力指標の参照と同時に参照済フラグを真にし、また該当する出力指標の更新済フラグが真であった場合前記パイプラインを起動せず、
前記更新管理装置は前記パラメータメモリに対し前記出力指標の更新と同時に前記参照済みフラグが真であった場合は前記更新済みフラグを真にし、
前記調停装置の調停の周期ごとに前記フラグをクリアすることを特徴としたDMA制御装置。
【請求項9】
請求項6記載のDMA制御装置であって、
前記計算装置はDMA情報に記載される更新待ち参照DMA番号があればそれに対応するDMA情報を前記パラメータメモリから取り出しその中の更新待ちフラグが真で、かつ更新待ち次元に対応した前記入力指標が同じく更新待ち次元に対応した転送量に達する場合にのみ前記パラメータメモリに対して処理中のDMAに対応する更新待ちフラグを真にすることを特徴としたDMA制御装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2013−29900(P2013−29900A)
【公開日】平成25年2月7日(2013.2.7)
【国際特許分類】
【出願番号】特願2011−163826(P2011−163826)
【出願日】平成23年7月27日(2011.7.27)
【出願人】(711001767)
【Fターム(参考)】
【公開日】平成25年2月7日(2013.2.7)
【国際特許分類】
【出願日】平成23年7月27日(2011.7.27)
【出願人】(711001767)
【Fターム(参考)】
[ Back to top ]