(57)【特許請求の範囲】
【請求項１】
特定のフレーム周期以下で処理が完結するｎ個のプロセスが、フレームメモリのｎ＋１個以上のフレーム面を使用してパイプライン処理を行う際におけるフレーム制御を行うフレームシンクロナイザであって、
対象となるプロセスが処理可能なフレーム面を示す２個のインデックス手段；該インデックス手段に対応して設けられており、対応するインデックス手段の有効期間を各々示す２個のフラグ手段；
を備えたことを特徴とするフレームシンクロナイザ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、パイプライン処理におけるフレームメモリの同期制御手法の改良に関するものである。
【０００２】
【従来の技術】
スーパーコンピュータなどでは、命令実行過程を複数の処理ステップに分け、複数の命令を並列に実行することで、処理の高速化を図るパイプライン方式が利用されている。今後パソコンなどにも普及すると思われるＲＩＳＣコンピュータ（縮小命令セット・コンピュータ）では、このようなパイプライン処理が前提となっている。
【０００３】
パイプライン処理の従来技術としては、次のような方法がある。なお、フレーム周期Ｔ以下で処理が完結する３個のプロセスａ，ｂ，ｃがこの順番にパイプライン処理されるシステムについて説明する。各プロセスはフレーム周期Ｔの間、作業用フレームメモリを占有するものとする。この例では３つのプロセスａ，ｂ，ｃがあるので、フレームメモリは最低３面必要である。これら３面のフレームメモリにインデックスとして、０，１，２と番号をつけることとする。
【０００４】
図９は、各プロセスが時間的にどのフレームメモリを使用していくかを示すタイムチャートである。プロセスａ，ｂ，ｃが全て同期しており、それぞれ周期的にフレームメモリ０，１，２を使用する場合は、図９に示すようになる。例えば、最初の周期プロセスａがフレームメモリ０を使用しているとすると、次の周期ではプロセスａはフレームメモリ１を使用し、プロセスｂがフレームメモリ０を使用する。その次の周期では、プロセスａはフレームメモリ２を使用し、プロセスｂはフレームメモリ１を使用し、プロセスｃがフレームメモリ０を使用する。以下、図示のとおりである。
【０００５】
しかし、プロセスａ，ｂ，ｃのうちの一つが他と非同期の場合、例えば、プロセスｂ，ｃが同期しており、これらプロセスｂ，ｃに対してプロセスａが非同期である場合、図９のようなシステムでは、プロセスａの処理時間がプロセスｂ又はｃの処理時間といずれ重なってしまうため、破綻してしまう。
【０００６】
以上のような破綻を回避する手法として、フレームメモリを増設する方法がある。例えば、上述した図９の例では、フレームメモリを４面以上に増やして、フレームシンクロナイザを構成する方法がある。そのような例を示すと、図１２のようになる。図１０には、プロセスｂ，ｃのクロック系をシステム基準と考えた場合、プロセスａの処理位相がシステムに対して最も遅れている場合（同図の遅相）と、最も進んでいる場合（同図の進相）が示されている。この場合は、遅相，進相のいずれも、ちょうどシステム周期分となっているので、プロセスｂ，ｃとフレームメモリが重ならないように他の２つのフレームメモリを使用すればよい。
【０００７】
これに対し、プロセスａのフレーム周期がプロセスｂ，ｃのシステムのフレーム周期に対して多少長い場合あるいは短い場合を考える。まず、プロセスａのフレーム周期が長い場合は、システムに対してプロセスａの処理位相が少しずつ遅れていくためにフレームのスキップが起こる。図１１は、スキップの発生する場合の例である。一方、プロセスａのフレーム周期が短い場合は、システムに対してプロセスａの処理位相が少しずつ進んでいくためにフレームの繰り返しが起る。図１２は、繰り返しの発生する場合の例である。
【０００８】
前記図１１の場合、プロセスａがフレームメモリ１を使用した後、もし順次にフレーム２を使用すると、非同期プロセスａの周期が同期プロセスｂ，ｃの周期より長いので、プロセスａがまだフレームメモリ２を占用する間に、プロセスｂが次の周期に使用するフレームメモリ２と重なってしまう。そこで、同図にハッチングで示すように、プロセスａは、フレームメモリ１の後にフレームメモリ２ではなくフレームメモリ３を使用し、この後フレームメモリ０を使用する。これによって、プロセスｂがフレームメモリ１を使用した後フレームメモリ２を使用するとき、プロセスａが使用しているフレームメモリと重なることなく、破綻を回避することができる。
【０００９】
一方、前記図１２の場合、プロセスａがフレームメモリ２を使用した後、もし順次にフレーム３を使用すると、非同期プロセスａの周期が同期プロセスｂ，ｃの周期より短いため、プロセスｃはまだフレームメモリ３を占用中となる。従って、プロセスａとプロセスｃがフレームメモリ３でと重なってしまう。そこで、同図にハッチングで示すように、プロセスａはフレームメモリ２の後、フレームメモリ３ではなく、もう一度フレームメモリ２を使用し、この後フレームメモリ３を使用する。これにより、プロセスｃによるフレームメモリ３の使用中におけるプロセスａの使用フレームメモリとの重なりがなくなって、破綻を回避することができる。
【００１０】
これら図１０〜図１２のように、プロセスｂ，ｃがシステムのフレーム毎にフレームメモリを順番に使用するとともに、システムに対するプロセスａの位相に応じて、残りの２面のフレームメモリをプロセスａが順次使用し、フレームメモリのスキップあるいは繰り返しを行う。これにより、各プロセスの使用フレームメモリの重なりが回避される。これら図１０〜１１は、フレームシンクロナイザを実現するために１フレーム分のメモリを追加した例であるが、補償範囲をもっと広げるために更に多くのフレームメモリを追加してもよい。図１３はフレームメモリを５面にした場合の例で、補償範囲はおよそ２フレームである。
【００１１】
図１０〜１１の場合は、３プロセスに対して４フレームメモリあるので、プロセスａをシステムと同期させるために、プロセスｂ，ｃの分を差し引いた４−２＝２面が用意されていることになる。図１３の場合は、３プロセスに対して５フレームメモリあるので、プロセスａをシステムと同期させるために、プロセスｂ，ｃの分を差し引いた５−２＝３面が用意されていることになる。
【００１２】
【発明が解決しようとする課題】
従来は、以上のようなフレームメモリの面数を変更する度に、例えばフレームメモリの面数を４面から５面に変更する場合には、同時に面制御を行うフレームシンクロナイザも変更する必要があり、フレームメモリの面数変化に対して、柔軟に対応することができないという不都合がある。また、補償範囲を増やすためにプロセスａに割り当てるフレームメモリ数を増やした場合、オーバーラップする開始可能窓の数が増えるため、面の選択が複雑になり、フレームシンクロナイザの回路構成も複雑となってコストが上がってしまう。
【００１３】
本発明は、以上の点に着目したもので、フレームメモリの面数変化に対して柔軟に対応することができる簡潔な構成のフレームシンクロナイザを提供することを、その目的とするものである。
【００１４】
【課題を解決するための手段】
前記目的を達成するため、この発明は、特定のフレーム周期以下で処理が完結するｎ個のプロセスが、フレームメモリのｎ＋１個以上のフレーム面を使用してパイプライン処理を行う際におけるフレーム制御を行うフレームシンクロナイザであって、対象となるプロセスが処理可能なフレーム面を示す２個のインデックス手段；該インデックス手段に対応して設けられており、対応するインデックス手段の有効期間を各々示す２個のフラグ手段；を備えたことを特徴とする。
【００１５】
【発明の実施の形態】
以下、本発明の実施の形態について詳細に説明する。図２は、本実施形態のパイプライン処理を行うシステム構成の一例を示すブロック図である。同図において、例えばデジタルＶＴＲにおいては、カメラ，ＴＶチューナ，ＶＴＲの再生信号などの入力，あるいは映像信号の入出力などの非同期側Ｉ／Ｏ（入出力）は、バッファメモリ１２に接続されている。また、バッファメモリ１２の入出力側は、プロセスａの制御回路１４にも接続されており、プロセスａの制御回路１４の制御に従って動作すると同時に、タイミング信号がフレームシンクロナイザ２４に出力されるようになっている。
【００１６】
一方、システムタイミングジェネレータ２２の出力側は、フレームシンクロナイザ２４及びメモリインターフェース２６に接続されている。フレームシンクロナイザ２４の出力側も、メモリインターフェース２６に接続されている。プロセスａ，ｂ，ｃの各制御回路１４，１６，１８は、フレームメモリ２８とともにメモリインターフェース２６に接続されている。メモリインターフェース２６の入出力側は、フレームメモリ２８に接続されている。そして、制御回路１８の出力信号が、例えばデジタルＶＴＲにおいては、記録再生信号処理回路のＩ／Ｆとなるシステム側Ｉ／Ｏに供給されている（図示せず）。
【００１７】
次に、以上のように構成されたシステムの動作について説明する。なお、信号は、エンコード時とデコード時で逆に流れる。例えば、エンコード時は、非同期側Ｉ／Ｏ→バッファ１２→制御回路１４→制御回路１６→制御回路１８→システム側Ｉ／Ｏの順で信号が流れ、デコード時はその逆に流れる。以後の説明では、エンコード時の信号の流れで説明する。
【００１８】
また、本例では、３つの連続するプロセスａ，ｂ，ｃがあるものとし、プロセスａがシステムと非同期のプロセスで、他の２つのプロセスｂ，ｃがシステムに同期したプロセスであると仮定する。これらプロセスａ〜ｃは、それぞれ制御回路１４〜１８に格納されているものを指す。また、プロセスａのクロックとプロセスｂ，ｃのクロックは異なる非同期のものであってもよいが、本発明の理解を容易にするため、プロセスａ，ｂ，ｃは共通のシステムクロックで動作するものとする。
【００１９】
プロセスａ，ｂ，ｃを共通のシステムクロックで動作させるためには、例えばプロセスａが非同期クロックの場合、プロセスａのデータ入出力の段階でバッファメモリ等の手段を使ってシステムクロックへの乗せ替えを行えばよい。バッファメモリ１２によって、このようなクロックの乗せ替えが行われる。なお、バッファメモリ１２からは、非同期側のフレームの切り替え信号ＳＡがフレームシンクロナイザ２４に出力される。プロセスｂ，ｃは、システムフレームの進行に従って順番にフレームメモリ面を切り替える。
【００２０】
システムタイミングジェネレータ２２は、信号ＳＢ，ＳＣ，ＳＤをそれぞれ生成している。これらのうち、カウンタ信号ＳＢは、システム側における最初のプロセスの進行を示すカウンタであり、カウンタ信号ＳＣはシステム側における最後のプロセスの進行を示すカウンタである。これらカウンタ信号ＳＢ，ＳＣは、いずれもフレームメモリ２８の面数に応じたモジュロ（剰余演算）のカウンタで、例えば４面の場合、システムフレーム毎に０，１，２，３，０，１，２，３，０，……と繰り返す。上述したように、システム側のクロックで動作するプロセスはｂ，ｃ２つのプロセスしかない。従って、カウンタ信号ＳＢは最初のプロセスｂの進行を示すカウンタとなり、カウンタ信号ＳＣは最後のプロセスｃの進行を示すカウンタとなる。カウンタ信号ＳＣは、カウンタ信号ＳＢに対して１システムフレーム遅れたカウンタとなる。その様子を示すと、図３（Ａ）のようになる。
【００２１】
例えば、システム側のプロセスがｂ，ｃ，ｄの３つある場合は、カウンタ信号ＳＢは最初のプロセスｂの進行を示すカウンタとなり、カウンタ信号ＳＣは最後のプロセスｄの進行を示すカウンタとなる。この場合、カウンタ信号ＳＣは、カウンタ信号ＳＢに対し２システムフレーム遅れたカウンタとなる。その様子を示すと、図３（Ｂ）のようになる。
【００２２】
一方、システムフレーム信号ＳＤ１は、システムのフレームを示す信号で、システムのフレーム毎に交番する信号である。位相信号ＳＤ２，ＳＤ３は、プロセスａの処理開始可能な期間のシステムフレームに対する位相を示すための信号である。すなわち、開始位相信号ＳＤ２は処理開始可能な期間の開始位置の位相を示し、終了位相信号ＳＤ３は処理開始可能な期間の終了位置の位相を示す。フレームシンクロナイザ２４には信号ＳＣ，信号ＳＤ１〜ＳＤ３が、メモリインターフェース２６には信号ＳＢ，ＳＣがそれぞれ入力される。
【００２３】
フレームシンクロナイザ２４では、バッファメモリ１２からのフレーム切替信号ＳＡ及びシステムタイミングジェネレータ２２からの信号ＳＣ，ＳＤに基づいて、プロセスａのための面選択が行われ、選択した結果が選択信号ＳＥとして、メモリインターフェース２６に送られる。各プロセスａ〜ｃは、メモリインターフェース２６を通してフレームメモリ２８にアクセスする。フレームメモリ２８には、システム側のプロセスｂ，ｃがそれぞれ占有するための面と、非同期側のプロセスａがシステム側と同期をとるために利用する複数の面が含まれる。
【００２４】
図２の場合は、システム側にｂ，ｃ２つのプロセスがあるため、この分が２面必要であり、非同期側のプロセスａがシステム側と同期をとるために２面以上必要である。すなわち、少なくとも全体で４面必要である。プロセスａのためのフレームメモリを２面用意した場合は前記図１０のようになり、３面用意した場合は前記図１３のようになる。合計で４面以上であれば何面用意してもよい。プロセスｂ，ｃは、システムのフレーム毎にフレームメモリ２８の４つの面を順番に使用する。一方、プロセスａは、システム側に対するプロセスａの位相に応じて、残りの２面のうちの１面を順次使用していく。
【００２５】
メモリインターフェース２６は、システムタイミングジェネレータ２２からの信号ＳＢ，ＳＣ及びフレームシンクロナイザ２４からの信号ＳＥに基づいて、各プロセスにフレームメモリ２８の面をそれぞれ割り当てる。すなわち、プロセスａについては、信号ＳＥに基づいてフレームメモリ２８のいずれかの面が割り当てられる。プロセスｂについては、信号ＳＢに基づいてフレームメモリ２８のいずれかの面が割り当てられる。プロセスｃについては、信号ＳＣに基づいてフレームメモリ２８のいずれかの面が割り当てられる。
【００２６】
フレームメモリ２８が４面で、プロセスａの実処理時間がシステムフレームの１／２であったとすると、プロセスａのための面が２つあるので、図４に示すようにプロセスａの開始位置は、１．５フレームの範囲で動かすことができる。プロセスａがフレーム面０を使用できるのは、プロセスｂとプロセスｃがいずれもフレーム面０を使用していない２フレームの期間なので、プロセスａの実処理時間１／２フレームを考慮すると、プロセスａの開始位置は１．５フレームの範囲となる。このとき、フレーム面０の開始可能タイミングは、図４に示すとおりである。すなわち、フレーム面０の開始可能な期間の開始位置はｓｐ（信号ＳＤ２）であり、フレーム面０の開始可能な期間の終了位置はｅｐ（信号ＳＤ３）である。
【００２７】
換言すると、フレーム面０が開始可能なタイミング以外で使用開始すると、ほかのプロセスが使うフレーム面０と重なってしまう。従って、システムフレーム信号ＳＤ１に対する位相として考えると、位相信号ＳＤ２，ＳＤ３は図５に示すようになる。プロセスａの処理時間がシステムフレーム周期と全く同じであれば、位相信号ＳＤ２，ＳＤ３は同じ信号になる。
【００２８】
ここで、図４の場合についてプロセスａが各フレーム面を利用できるタイミングを各面の開始可能窓として示すと、図６のようになる。これを参照すると、プロセスａが二つのフレーム面を利用可能な時間も存在する。このときは、プロセスｂ及びｃが利用するフレーム面との重なりを回避して、どのフレーム面を利用するかを決定する。このように単純化して考えると、プロセスａをどのフレーム面に割り当てるかを決定するためには、フレームメモリ２８の面数に応じた制御レジスタが必要になる。
【００２９】
本発明は、フレームメモリ２８の面数がいくつであっても（多いと開始可能窓の数が増える）、あるいは、それらのうちの非同期部分に割り当てるフレーム面数が何面であっても（多いとオーバーラップする窓の数が増えるため制御回路が大きく複雑になる）、開始可能窓を示すレジスタ数を増やしたり、面選択の制御を大きくすることなく、フレーム面を決める制御を行うことができる。
【００３０】
次に、上述した図２のフレームシンクロナイザ２４の構成及び動作について説明する。図１は、フレームシンクロナイザ２４の構成を示す図である。同図に示すように、フレームシンクロナイザ２４は、信号ＳＡ及び信号ＳＤ１〜ＳＤ３が入力されるゲート制御回路３０，開始可能窓の候補を示す２つのゲート回路（フラグレジスタ）３２及び３４，信号ＳＣが入力されるインデックス制御回路３６，利用可能フレーム面の候補を示す２つのインデックス回路（インデックスレジスタ）３８及び４０，入力信号からプロセスａ用のフレーム面を選択する選択制御回路４２によって構成されている。
【００３１】
以上のように構成したフレームシンクロナイザの各部について説明すると、ゲート制御回路３０は、バッファメモリ１２からのフレーム切替信号ＳＡ及びシステムタイミングジェネレータ２２からの信号ＳＤ１〜ＳＤ３に基づいて作られるタイミング信号に従って、ゲート回路３２，３４のＯＮ／ＯＦＦを制御している。ゲート回路３２，３４は、開始可能窓の候補を示すフラグレジスタである。ゲート回路３２が論理値の「１」のときは、インデックス回路３８が示すフレーム面からプロセスａが開始可能であることを示す。同様にゲート回路３４が論理値の「１」のときは、インデックス回路４０が示すフレーム面からプロセスａが開始可能であることを示す。別言すれば、インデックス回路３８，４０は、対象となるプロセスが処理可能なフレーム面を示し、ゲート回路３２，３４は、対応するインデックス回路３８，４０の有効期間を各々示すと考えることができる。
【００３２】
インデックス制御回路３６は、前記システムタイミングジェネレータ２２からの信号ＳＣ及び前記ゲート制御回路３０からのタイミング信号に基づいてインデックス回路３８，４０の更新又は保持を制御している。選択制御回路４２は、ゲート回路３２，３４を参照しながら、ゲート制御回路３０からの制御信号に従って、インデックス回路３８，４０のどちらかを適宜選択し、最終的に選択信号ＳＥとして出力する。
【００３３】
具体的には、フレーム切替信号ＳＡの変化点を検出することにより、ゲート制御回路３０でプロセスａの開始タイミングを得、この時点においてプロセスａがどのフレーム面を使用するかを選択制御回路４２で決定する。すなわち、ゲート回路３２，３４が両方とも論理値の「０」のときは現在のフレーム面を保持する。この場合は、同じフレーム面によるリピート処理になる（後述する図７参照）。これに対し、ゲート回路３２，３４の一方が論理値の「１」のときは、インデックス回路３８，４０のうちの「１」の論理値のゲート回路に対応するインデックス回路を選択する。ゲート回路３２，３４が両方とも論理値の「１」のときは、直前に選択したインデックス回路と反対のインデックス回路を選択する。
【００３４】
図７及び図８は、フレームメモリ２８が５面，すなわちシステム用に２面，非同期用１プロセスに対して３面の場合の各信号及び各フレーム面の利用状態を示すタイミングチャートである。なお、同図中，Δａは非同期プロセスの実際処理期間である。また、フレーム面の利用状況中のＡ，Ｂ，Ｃは、それぞれプロセスａ，ｂ，ｃに対応する。
【００３５】
まず、図７は、非同期側のフレームの長さがシステム側のフレームより短い場合の動作例を示すタイミングチャートである。この場合、プロセスａがシステムフレームより短いため、周期的にプロセスａが２回続けて行われている。同図の例では、選択信号ＳＥに示すように、プロセスａの処理面が、０→１→２→３→４→４（リピート）→０→……となっている。すなわち、フレーム面４が２回連続使われている。リピートしている個所をリピート信号で示す。
【００３６】
図８は、非同期側のフレームの長さがシステム側のフレームより長い場合の動作例を示すタイミングチャートである。プロセスａがシステムフレームより長いため、周期的にプロセスａがスキップされている。選択信号ＳＥに示すように、プロセスａの処理面は、０→１→２→３→４→０→（スキップ）→２→３→……となっている。スキップしている個所を、スキップ信号で示す。
【００３７】
このように、本実施形態によれば、フレームメモリ２８の面数が増えた場合、制御回路の構成を変化する必要なく、単にそれらを区別するために必要なインデックスレジスタのビット数を増やすだけでよい。例えば、図７及び８の例でいえば、信号ＳＢ，ＳＣ，インデックス回路３８，４０，選択信号ＳＥのビット数を変更する。フレームメモリ２８が５面の場合は３ビットで十分であるが、８ビットあれば２５６面まで対応できる。すなわち、ｎプロセスに対して、ｎ＋１個以上のフレームメモリ２８を用いるシステムに対して、前記制御信号のビット数で表現可能な範囲内であれば、フレームメモリ２８が何面あっても同様な構成で面制御を実現できる。
【００３８】
更に、非同期プロセスのために用意するフレーム面が増えた場合にも、ゲート制御回路３０内におけるゲート回路３２，３４の最大の長さを制御している個所を変更するだけでよい。前記図７，８では、プロセスａに対してフレームが３面用意されており、プロセスａの処理時間を０．５フレームと仮定しているので、最大で２．５フレームの開始可能窓を生成するようにゲート制御回路３０を設定すればよい。このように、フレームメモリ２８の面数が増えても、あるいは補償範囲を増やすための面数が増えても、同じ構成でほとんど回路を増加させることなくフレームシンクロナイザの機能を実現できる。
【００３９】
【発明の効果】
以上説明したように、本発明によれば、２個のインデックス手段と２個のフラグ手段により、補償範囲やフレーム面数の増減に関係なく、フレームメモリの面制御を良好に行うことができるという効果が得られる。
【図面の簡単な説明】
【図１】本発明の一実施形態のフレームシンクロナイザの構成を示すブロック図である。
【図２】パイプライン処理を行うシステム例を示すブロック図である。
【図３】信号ＳＢ，ＳＣとフレーム面との関係を示す図である。
【図４】プロセスａ，ｂ，ｃの位相及びフレーム面０の開始可能タイミングの関係を示す図である。
【図５】信号ＳＤ１〜ＳＤ３の関係を示す図である。
【図６】プロセスａが利用できるフレーム面の開始可能窓を示す図である。
【図７】非同期側のフレームの長さがシステム側のフレームより短い場合の動作例を示すタイミングチャートである。
【図８】非同期側のフレームの長さがシステム側のフレームより長い場合の動作例を示すタイミングチャートである。
【図９】各プロセスとフレームメモリの使用面との関係を示す図である。
【図１０】フレームメモリが４面の場合の各プロセスの使用フレーム関係を示す図である。
【図１１】スキップが発生する一例を示す図である。
【図１２】リピートが発生する一例を示す図である。
【図１３】フレームメモリが５面の場合の各プロセスの使用フレーム関係を示す図である。
【符号の説明】
１２…バッファメモリ
１４，１６，１８…制御回路
２２…システムタイミングジェネレータ
２４…フレームシンクロナイザ
２６…メモリインターフェース
２８…フレームメモリ
３０…ゲート制御回路
３２，３４…ゲート回路（フラグレジスタ）
３６…インデックス制御回路
３８，４０…インデックス回路（インデックスレジスタ）
４２…選択制御回路
【図１】
0003642010.tif 000002
【図２】
0003642010.tif 000003
【図３】
0003642010.tif 000004
【図４】
0003642010.tif 000005
【図５】
0003642010.tif 000006
【図６】
0003642010.tif 000007
【図７】
0003642010.tif 000008
【図８】
0003642010.tif 000009
【図９】
0003642010.tif 000010
【図１０】
0003642010.tif 000011
【図１１】
0003642010.tif 000012
【図１２】
0003642010.tif 000013
【図１３】
0003642010.tif 000014