(57)【要約】      （修正有）【課題】大量のデータを細かい単位まで高速に転送することができるデータ処理装置を提供する。【解決手段】大容量のデータを高速に転送するマスターＤＭＡブロック３０５と、細かいデータ単位でデータを転送するターゲットアクセスＷｒｉｔｅ／Ｒｅａｄブロック３０６により、直接メモリアクセス方式でデータ転送を行うメモリコントローラ３０を備え、連続する大容量のデータをマスターＤＭＡブロック３０５により転送し、その前後のデータをターゲットアクセスＷｒｉｔｅ／Ｒｅａｄブロック３０６により転送する。【選択図】図４
2008083978.tif 000002
【特許請求の範囲】
【請求項１】
複数のボード間のデータ転送を行うデータ処理装置であって、
大容量のデータを高速に転送する第１の転送制御手段と、細かいデータ単位でデータを転送する第２の転送制御手段により、直接メモリアクセス方式でデータ転送を行うＤＭＡ制御部を備え、
連続する大容量のデータを第１の転送制御手段による転送し、その前後のデータを第２の転送制御手段により転送するようにしたことを特徴とするデータ処理装置。
【請求項２】
上記ＤＭＡ制御部は、断片化された論理アドレスの断片情報をまとめたＳＧＬ（Scatter Gather List）に対応するものであって、
上記ＳＧＬは、オペレーティングシステムが作成するフォーマットに対応するものとしたことを特徴とする請求項１記載のデータ処理装置。
【請求項３】
上記ＤＭＡ制御部は、データの書き込みと読み出しの双方向のデータ転送を同時に実行可能な拡張ボード上に設けられ、上記第１の転送制御手段による読み出し要求と書き込み要求が同時に起こった場合、読み出し要求を優先させる調停回路を備えることを特徴とする請求項２記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は複数のボード間のデータ転送を行うデータ処理装置に関し、特に大量のデータ転送が必要となるデータ処理装置に関する。
【背景技術】
【０００２】
近年、コンピュータの性能向上により、従来は専用の装置で行っていた作業を汎用的なコンピュータで置き換えることが可能となっている。そのような機器の１つにビデオ編集機がある。すなわち、ＶＴＲ（Video Tape Recorder）などの画像や音声の編集作業を、コンピュータを用いて行うことが可能となっている。その場合、画像情報や音声情報をコンピュータのハードディスク装置に格納し、コンピュータのアプリケーションプログラムを用いて編集作業を行う。このようなビデオ編集システムを、ノンリニア編集機という。
【０００３】
ノンリニア編集機は、画像の変形・合成が自由にできることや、編集を繰り返しても画質の劣化がないという点において、従来の編集システムより優れている。例えば、実写の画像にＣＧ（Computer Graphics）を合成するのも容易である。
【０００４】
ところで、ノンリニア編集機では、動画データなどをハードディスク装置に格納しているため、ハードディスクから汎用バス（例えばＰＣＩ(Peripheral Component Interconnect)バス）を介して、他のボード（例えば、ＣＯＤＥＣ(coder-decoder)ボード）へ転送する必要が生じる。このようにボード間でデータ転送を行う場合、基本的には、ノンリニア編集機中のパーソナルコンピュータ部分（ノンリアルタイム制御部）内のシステムメモリを介在させて、データ転送が行われる。すなわち、データソースとなるボードからシステムメモリへの転送、システムメモリからデータターゲットとなるボードへの転送の２回の転送処理を実行する。
【０００５】
従来より、プロセッサ間のデータ転送には、ＣＰＵを介在してバイト単位やワード単位やダブルワード単位でデータを転送するＩ／Ｏ方式と、ＣＰＵを介在さずに、直接メインメモリと外部メモリとの間でデータのやり取りを可能にしたＤＭＡ（Direct Memory Access）方式があり、例えば、ＤＭＡ方式とＩ／Ｏ方式とを転送するデータの長さにより使い分けることにより、データ転送を高速に行うようにものがある（例えば、特許文献１参照）。
【０００６】
また、システムのスループットを低減させることなくデータ転送を効率よく行わせ、かつＣＰＵ及びＤＭＡ制御部による外部メモリへのアクセス競合を確実に調停するために、ＤＭＡ制御部の制御による外部メモリとのデータ転送をＤＭＡ制御部と外部バスインタフェースユニットとの間に設けたローカルバスを通して行い、ＣＰＵの制御下での外部メモリとのデータ転送及びＤＭＡ制御部の制御下での外部メモリとのデータ転送に対する優先順位を外部バスインタフェースユニットに設けた転送順位設定手段により設定するようにしたものもある（例えば、特許文献２参照）。
【０００７】
ここで、ＤＭＡ転送とＳｃａｔｔｅｒ  ａｎｄ  Ｇａｔｈｅｒ  ＤＭＡについて説明する。
【０００８】
ＤＭＡ転送は、ＯＳ（Operating System）などのソフトウェアの影響を受けないで、直接ボード間でデータを転送するもので、２つのユニット間で一方のコントローラ（ＤＭＡコントローラ）が主体的にデータ転送を行うものである。ＤＭＡ転送は、基本的に主記憶装置（システムメモリ）から二次記憶装置にデータ転送を行う際に用いられる機能であるが、これをボード間のデータ転送に応用することで、データ転送の高速化が可能となる。
【０００９】
ＤＭＡ転送は物理的に連続したメモリに対して行われる。したがってＤＭＡ転送の対象となるデータはメモリ上で物理的に連続していなければならない。しかし、コンピュータ上のアプリケーションがユーザ空間（仮想アドレス）に確保したメモリは見た目には連続していても、論理アドレス上は４ＫＢ毎に断片化したものである。従ってドライバは４ＫＢの連続領域の先頭アドレス（論理アドレス）と連続しているサイズを断片ごとにＤＭＡコントローラに教えてあげなければならない。
【００１０】
この断片情報をまとめたものがＳＧＬ（Scatter Gather List）であり、従来、ＳＧＬはそのフォーマットを図１０に示すように、転送数（Transfer Count[]）とサイズ情報（Transfer Count[]）とアドレス情報と（Target Address[]）からなる。ＳＧＬに対応するＤＭＡコントローラでは、アドレスとしてＳＧＬのアドレスを与えられるようになっている。
【００１１】
ＳＧＬに書かれた一対のアドレス情報とサイズ情報（Transfer Count[]）のことをエレメントと称する。
【００１２】
ここで、従来のＤＭＡ転送について、ソフトウェアの最下層でありボードを制御するデバイスドライバを含めての実際の動作を図１１を参照して用いて説明する。
【００１３】
動作Ａ１：  デバイスドライバは物理的に連続した４ＫＢの領域（Ｌｏｃａｌ  ＳＧＬ  Ｂｕｆｆｅｒ）をＰＣのメインメモリ１１０上に確保しており、そこに指定仮想アドレスから論理アドレスのＳＧＬ（システムＳＧＬ）を生成する。これはＯＳの管理するハードウェアＭＭＵ（Memory Management Unit）を用いて行われる。生成した論理アドレスのＳＧＬを、Ｌｏｃａｌ  ＳＧＬ部にコピーする。
【００１４】
動作Ａ２：  Ｌｏｃａｌ  ＳＧＬ部にコピーされた論理アドレスのＳＧＬ（ローカルＳＧＬ）を用いてＳＤＲＡＭアドレス，エレメント数を設定してボードのＤＭＡコントローラを起動する。
【００１５】
動作Ａ３：  ＤＭＡコントローラは、まずＳＧＬ  Ｂｕｆｆｅｒ内のＳＧＬ（ローカルＳＧＬ）をボード１２０の内部メモリ１２１にＤＭＡ転送する。
【００１６】
動作Ａ４：  ＤＭＡコントローラは内部メモリ１２１に転送されたＳＧＬ内のエレメントにしたがって、ＰＣのメインメモリ１１０とボード１２０のメモリ（ＤＲＡＭ）１２２間をＤＭＡ転送する。
【００１７】
【特許文献１】特開平５−１２１８１号公報
【特許文献２】特開２００６−２３８０８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１８】
ところで、ＰＣＩ(Peripheral Component Interconnect)やＰＣＩ−Ｅｘｐｒｅｓｓの基板をＣＰＵに挿して用いるノンリニア編集機では、各種処理をするボードとＣＰＵ本体の間で大量のデータを高速で転送する場合がある。その一方、映像のある部分にタイムコード等を表示する場合などは、データの一部を書き換えるためバイト単位など細かな単位でのデータ転送が必要になる。
【００１９】
従来のＤＭＡ転送において、ボード１２０のメモリ（ＤＲＡＭ）１２２のアドレス境界、転送サイズの境界は２５６バイトと大きいものであった。これはＤＲＡＭの転送レートをあげるために、バースト転送を行っているからであるが、バイト単位など細かい転送のインターフェースは用意されていなかったため、画像の一部を変更するなどの場合に扱いにくいものであった。
【００２０】
従来、ボード１２０上のハードウェアに送るＣＰＵ上の仮想メモリ物理メモリの対応リスト（SGL: Scatter and Gather List）は、上述の図１０に示すようなフォーマットであり、ＯＳ（MS-Windows）が作成するフォーマットと異なるため、デバイスドライバで変換操作を行っていた。そのためその変換時間がかかり、転送レートが落ちていた。
【００２１】
また、ＰＣＩ−Ｅｘｐｒｅｓｓは、書き込みと読み出しの双方向のデータ転送を同時に実行できる。すなわち、ボードからＣＰＵへの書き込みパケットのデータとＣＰＵからボードへの読み出した結果のデータは、転送方向が逆方向だから、各方向別の信号線になっているＰＣＩ−Ｅｘｐｒｅｓｓでは、データ転送を同時に実行できる。
【００２２】
ただし、ボードからＣＰＵへの書き込みパケットとボードからＣＰＵへの読み出し要求は、書き込みと同じ向きなので同時実行できず、読み出しの要求は、非効率に待たされる場合があった。
【００２３】
そこで、本発明の目的は、上述の如き従来の問題点に鑑み、大量のデータを細かい単位まで高速に転送することができるデータ処理装置を提供することにある
本発明の更に他の目的、本発明によって得られる具体的な利点は、以下に説明される実施の形態の説明から一層明らかにされる。
【課題を解決するための手段】
【００２４】
本発明は、複数のボード間のデータ転送を行うデータ処理装置であって、大容量のデータを高速に転送する第１の転送制御手段と、細かいデータ単位でデータを転送する第２の転送制御手段により、直接メモリアクセス方式でデータ転送を行うＤＭＡ制御部を備え、連続する大容量のデータを第１の転送制御手段による転送し、その前後のデータを第２の転送制御手段により転送するようにしたことを特徴とする。
【発明の効果】
【００２５】
本発明では、連続する大容量のデータを第１の転送制御手段により転送し、その前後のデータを第２の転送制御手段により細かいデータ単位で転送することにより、大量のデータを細かい単位まで高速に転送することができる。
【００２６】
また、本発明では、上記ＤＭＡ制御部は断片化された論理アドレスの断片情報をまとめたＳＧＬ（Scatter Gather List）に対応するものとし、上記ＳＧＬをオペレーティングシステムが作成するフォーマットに対応するものとすることにより、転送ための準備時間を短縮して、さらに、大量のデータを細かい単位まで高速に転送することができる。
【００２７】
さらに、本発明では、上記ＤＭＡ制御部をデータの書き込みと読み出しの双方向のデータ転送を同時に実行可能な拡張ボード上に設け、上記第１の転送制御手段による読み出し要求と書き込み要求が同時に起こった場合、読み出し要求を優先させる調停回路を備えるものとすることにより、さらに、大量のデータを細かい単位まで高速に転送することができる。
【発明を実施するための最良の形態】
【００２８】
以下、本発明の実施の形態について、図面を参照して詳細に説明する。なお、本発明は以下の例に限定されるものではなく、本発明の要旨を逸脱しない範囲で、任意に変更可能であることは言うまでもない。
【００２９】
本発明は、例えば図１に示すような構成のコンピュータベースのノンリニア編集装置１００に適用される。
【００３０】
このノンリニア編集装置１００は、チップセット１０に接続されたメインＣＰＵ（Central Processing Unit）１１、システムメモリ１２、Ｉ／Ｏ  ＣＯＤＥＣ（coder-decoder）ボード１３、ＳＣＳＩＨＢＡ（Small Computer System Interface Host Bus Adapter）カード１４、画像処理ボード１５、ＵＳＢ  ＨＵＢ１６などを備える。
【００３１】
チップセット１０は、メインＣＰＵ１１側からＰＣＩバスを制御するためのバスコントローラとして機能する。
【００３２】
メインＣＰＵ１１は、他の周辺機器やシステムメモリ１２を制御することでＯＳの機能を実行するとともに、ＯＳに実装されたデバイスドライバや、ＯＳ上で実行されるアプリケーションソフトウェアを実行する。なお、このＣＰＵ１１は、アドレス変換テーブルを参照することで、仮想メモリ空間の論理アドレスをシステムメモリ１２やＩ／Ｏ  ＣＯＤＥＣボード１３内のローカルメモリ３２の物理アドレスに変換する機能を有している。
【００３３】
システムメモリ１２は、システムの主記憶装置であり、メインＣＰＵ１１で実行されるプログラムや、処理に必要な各種データが一時的に格納される。
【００３４】
Ｉ／Ｏ  ＣＯＤＥＣボード１３には、図２に示すように、メモリコントローラ３０、このメモリコントローラ３０に接続されたローカルＣＰＵ３１、ローカルメモリ３２、オーディオデータの入出力用のデフォーマッタ３３、フォーマッタ３４、ＡＶデータの入出力用のＳＤＩ（Serial Digital Interface）に準拠したデフォーマッタ３５Ａ，３５Ｂ、フォーマッタ３６、ＰＣＩ−Ｅｘｐｒｅｓｓインターフェース３７等が搭載されている。ローカルＣＰＵ３１は、ＣＯＤＥＣボード１３の動作をリアルタイムに制御する。また、上記Ｉ／Ｏ  ＣＯＤＥＣボード１３には、アナログオーディオ入出力コネクタボード１７が接続されている。
【００３５】
ここで、アナログオーディオ入出力コネクタボード１７には、マイクロフォンなどから入力されるアナログオーディオ信号をデジタル化してＩ／Ｏ  ＣＯＤＥＣボード１３上のデフォーマッタ３３に入力するアナログ／デジタル（Ａ／Ｄ）変換部１７１、上記Ｉ／Ｏ  ＣＯＤＥＣボード１３上のフォーマッタ３４を介して出力されるデジタルオーディオ信号をアナログ化して出力するデジタル／アナログ（Ｄ／Ａ）変換部１７２、マイクロフォンなどから入力されるアナログオーディオ信号と上記Ｄ／Ａ変換部１７２によりアナログ化されたオーディオ信号と合成して出力するアナログ信号合成部１７３等が搭載されている。
【００３６】
ＳＣＳＩＨＢＡカード１４は、チップセット１０により制御されるＰＣＩバスを介して送られてきたデータをＨＤＤ２０に格納したり、ＨＤＤ２０内のデータをＰＣＩバスを介して他の機器へ転送したりする。ＳＣＳＩＨＢＡカード１４は、データ転送の際にＰＣＩバスのホストとなり、ＤＭＡ転送を制御することができる。
【００３７】
画像処理（ＧＰＵ）ボード１５は、編集画像の座標変換処理、拡大・縮小処理、最終画像のレンダリング処理等を行う。
【００３８】
ＵＳＢ  ＨＵＢ１６には、表示パネル１８や外部装置（ＥＸ０１、ＥＸ０２）１９が接続される。
【００３９】
ＨＤＤ１８は、映像データなどのデータを保持する。
【００４０】
そして、このノンリニア編集装置１００では、Ｉ／Ｏ  ＣＯＤＥＣボード１３を介して入力される映像データ及びオーディオデータをＨＤＤ２０に記憶し、所定の編集処理プログラムに従って、レンダリング再生処理やスクラブ処理等の編集処理の対象となる映像データ及びオーディオデータをＨＤＤ２０からシステムメモリ１２に読み出して編集処理を行い、編集処理済みの映像データ及びオーディオデータをＩ／Ｏ  ＣＯＤＥＣボード１３を介して出力する。
【００４１】
ここで、再生時の処理手順を図３に示すように、このノンリニア編集装置１００では、ＨＤＤ２０に格納されている圧縮データがシステムメモリ１２上に読み出され、このシステムメモリ１２上で読み出された圧縮データに伸張処理が施されて非圧縮データに変換され、この非圧縮データに画像処理（ＧＰＵ）ボード１５によりレンダリング処理を行い、レンダリングされた非圧縮データが上記システムメモリ１２からＩ／Ｏ  ＣＯＤＥＣボード１３上のローカルメモリ３２に転送され、フォーマッタ３６を介してＳＤＩ信号として出力される。
【００４２】
この際に、ＨＤ（１９２０ｘ１０８０ドット  ＹＵＶ４２２  ８ビット、３０フレーム／秒）の動画の場合、１ストリームで約１２０ＭＢ／秒の転送レートが必要で、ＰＣ上のソフトウェア動画処理・ボード上の動画処理を行う場合はデータの往復のためにその数倍の転送レートが必要になる。
【００４３】
また、映像のある部分にタイムコード等を表示する場合などは、データの一部を書き換えるためバイト単位など細かな単位でのデータ転送が必要になる。
【００４４】
そこで、このノンリニア編集装置１００では、高速動作するブロックと、細かいバイト単位の転送を組み合わせることにより、通常転送レートが落ちる細かい単位のＤＭＡ(Direct Memory Access)を、高い転送レートで実現している。
【００４５】
上記Ｉ／Ｏ  ＣＯＤＥＣボード１３上のメモリコントローラ３０は、図４に示すように、ＰＣＩ−Ｅｘｐｒｅｓｓインターフェース３７を介してデータの授受を行うＰＣＩ−ＥｘｐｒｅｓｓＩＰコア部３０１、ＭＴＰ＿ＡＲＢＩＴＥＲ部３０２、ＰＣＩ＿ＲＥＧ部３０３、ローカルＣＰＵＩＦ部３０４、マスターＤＭＡブロック３０５、ターゲットアクセスＷｒｉｔｅ／Ｒｅａｄブロック３０６、ＬＰＣＩ部３０７、ＤＤＲ２−ＳＤＲＡＭコントローラを含むＩＯＢ−ＦＰＧＡ部３０８などからなる。
【００４６】
すなわち、上記Ｉ／Ｏ  ＣＯＤＥＣボード１３上のメモリコントローラ３０は、用途に応じて転送のためにマスターＤＭＡブロック３０５、ターゲットアクセスＷｒｉｔｅ／Ｒｅａｄブロック３０６が設けられている。
【００４７】
マスターＤＭＡブロック３０５は、大容量のデータを高速に転送する部分であり、データを主体的に出すことによって高速転送する。
【００４８】
また、ターゲットアクセスＷｒｉｔｅ／Ｒｅａｄブロック３０６は、細かいＢｙｔｅ単位での転送ができるものであり、ＰＣ等のボード以外がデータ転送の主体となる。また、バイト単位で転送ができる。なお、転送レートは比較的遅い。
【００４９】
このノンリニア編集装置１００では、図５に示すように、連続する大容量のデータについては、マスターＤＭＡブロック３０５を用いたマスターＤＭＡ転送を用いて高速に転送し、その前後のバイト単位で細かい単位での転送が必要な部分は、ターゲットアクセスＷｒｉｔｅ／Ｒｅａｄブロック３０６を用いて、バイト単位転送やバイト単位よりは高速なダブルワード（DWORD＝４バイト）単位転送を行う。
【００５０】
すなわち、デバイスドライバでは、マスターＤＭＡのアドレス境界及び転送量の５１２バイト制限をカバーするために、自由なアドレスに対する転送をサポートしている。
【００５１】
例えば、アプリケーションが独自に確保した仮想メモリ空間の任意の位置と、ＤＩＯ上のメモリの任意の位置とのデータ転送は、事実上デバッグ機能を使用してもできないため、アプリケーション側でアライメントを取る必要があった。
【００５２】
そこで、アドレス５１２バイト境界や転送量５１２バイト境界をドライバ内部で吸収したFree Address Transfer機能（以後FreeAdrsXferと称す。）をドライバでサポートした。
【００５３】
FreeAdrsXferは書き込みと読み出しに分かれている。
【００５４】
ドライバでこのIoControlを受けると、書き込み／読み出しそれぞれのマスターＤＭＡ機能が使用中でない事を確認し、ＤＩＯメモリアドレスの先頭８バイト境界までの空間をバイト転送し、ＤＩＯメモリアドレス５１２バイト境界までの空間をダブルワード転送し、ＤＭＡ終了後に５１２バイト境界の端数があると予めわかる場合には、その部分だけをバイト転送後マスターＤＭＡを起動する。
【００５５】
なお、この図５に示した例は連続する領域の転送であるが、ターゲットアクセスＷｒｉｔｅ／Ｒｅａｄブロック３０６による転送は、ＰＣＩ−Ｅｘｐｒｅｓｓのプロトコルで実現できる範囲の途中のバイトを転送しない転送もできる。
【００５６】
図５に示すように連続する大容量のデータについては、マスターＤＭＡブロック３０５を用いたマスターＤＭＡ転送を用いて高速に転送し、その前後のバイト単位で細かい単位での転送が必要な部分は、ターゲットアクセスＷｒｉｔｅ／Ｒｅａｄブロック３０６を用いて、バイト単位転送やバイト単位よりは高速なダブルワード単位転送を行うことによって、転送レートに支配的な連続する大容量のデータ部は高速であり、その前後の少量のデータのみ、マスターＤＭＡ転送より１バイトあたりの時間がかかることになる。ただしデータサイズが小さいためほぼ無視できる。
【００５７】
例えば、ＨＤ（１９２０ｘ１０８０  ｐｉｘｅｌ  ＹＵＶ４２２  ８ビット）の画像の場合４ＭＢで連続であり、その前後のバイト単位の転送（前５１１バイト、後ろ５１１バイト）の場合を考えると、このノンリニア編集装置１００では、マスターＤＭＡ転送で７５０ＭＢ／秒、ターゲットアクセス転送で４５５ＭＢ／秒（ＰＣＩ−ＥｘｐｒｅｓｓのＭｅｍＷｒパケット、デバイスドライバレベルでの測定）を実現できており、マスターＤＭＡブロック３０ＡによるマスターＤＭＡ転送の時間ＴＭＤＭＡは、
ＴＭＤＭＡ＝４［ＭＢ］÷７５０［ＭＢ／ｓ］
＝５．３３［ｍｓ］
であるのに対し、ターゲットアクセスＷｒｉｔｅ／Ｒｅａｄブロック３０６によるターゲットアクセス転送の時間ＴＴＡは、
ＴＴＡ＝２×５１１［Ｂｙｔｅ］÷４５５［ＭＢ／ｓ］
＝２．２５［μｓ］であり、ターゲットアクセスＷｒｉｔｅ／Ｒｅａｄブロック３０６によるターゲットアクセス転送の転送レートの悪化は無視でき、転送レートを落とさずバイト単位のＤＭＡが実現できる。
【００５８】
また、このノンリニア編集装置１００では、ＳＧＬのフォーマットを図６の形にすることにより、フォーマット変換を不要とした。このＳＧＬのフォーマットは従来のシステムＳＧＬにある８バイトのヘッダを除いて同じものであり、従来のフォーマット変換が不要となる。
【００５９】
このノンリニア編集装置１００において、図７に示すように、アプリケーションからドライバに転送開始を指示し、システムＳＧＬを生成するのに要するシステム時間Ｔ１、システムＳＧＬからデバイスＳＧＬを生成するのに要するシステム時間Ｔ２、データ転送に要するシステム時間Ｔ３を取得したところ、上記システムメモリ１２からＩ／Ｏ  ＣＯＤＥＣボード１３上のローカルメモリ３２に４０００００バイトのデータを転送した場合、従来のフォーマット変換が必要なシステムＳＧＬを用いると、次の表１に示すように、システムＳＧＬからデバイスＳＧＬを生成するのに要するシステム時間Ｔ２が０．８３２０６２ｍｓであったの対し、ＳＧＬのフォーマットを図６の形にすることにより、上記システム時間Ｔ２が０．０１１０４ｍｓに短縮され、また、上記Ｉ／Ｏ  ＣＯＤＥＣボード１３上のローカルメモリ３２から上記システムメモリ１２に４０００００バイトのデータを転送した場合、従来のフォーマット変換が必要なシステムＳＧＬを用いると、次の表２に示すように、システムＳＧＬからデバイスＳＧＬを生成するのに要するシステム時間Ｔ２が０．８３５１３８ｍｓであったの対し、ＳＧＬのフォーマットを図６の形にすることにより、上記システム時間Ｔ２が０．０１０７６ｍｓに短縮された。
【００６０】
【表１】
2008083978.tif 000003
【００６１】
【表２】
2008083978.tif 000004
【００６２】
ここで、Ｉ／Ｏ  ＣＯＤＥＣボードをＰＣＩとした場合（物理的な転送レートも１／４）は約３％のオーバーヘッドであり、これはＰＣＩ−Ｅｘｐｒｅｓｓ  ４ｌａｎｅでは１２％のオーバーヘッドになる。このノンリニア編集装置１００では、そのオーバーヘッドを約７０分の１にでき、オーバーヘッドは０．３％以下になり無視できるまでになった。
【００６３】
また、このノンリニア編集装置１００では、上記Ｉ／Ｏ  ＣＯＤＥＣボード１３上のメモリコントローラ３０におけるＳＧＬの制御部（マスターＤＭＡブロック３０５）とデータ転送制御部（ＰＣＩ−ＥｘｐｒｅｓｓＩＰコア部３０１）間に図８に示すような構成の調停回路３１０を設け、メモリ読み出しのパケットとメモリ書き込みのパケットが重複しないように調停を行っている。
【００６４】
調停回路３１０は、マスターＤＭＡブロック３０５の書き込み側ＳＧＬ制御部３０５ＢがＳＧＬを転送しているか、実データの転送しているかでＤＭＡキックをかける宛先を変更するセレクタ３１１と、上記マスターＤＭＡブロック３０５の書き込み側ＳＧＬ制御部３０５ＢがＤＭＡＣ＿ＲＤモジュールを占有している期間中は、上記マスターＤＭＡブロック３０５の書き込み側ＳＧＬ制御部３０５Ｂの出力をＰＣＩ−ＥｘｐｒｅｓｓＩＰコア部３０１の読み出し側データ転送制御部３０１Ａに供給し、他の期間中は上記マスターＤＭＡブロック３０５の読み出し側ＳＧＬ制御部３０５Ａの出力をＰＣＩ−ＥｘｐｒｅｓｓＩＰコア部３０１の読み出し側データ転送制御部３０１Ａに供給するセレクタ３１２を備える。
【００６５】
ＳＧＬ  ＤＭＡにおいては、書き込み部においてもメモリ読み出しのパケットだけを出すわけではなく、ＳＧＬをまず読み出すためのメモリ読み出しのパケットを発行する必要がある。したがってこの部分が読み出しと書き込みで重複すると、互いを阻害する。
【００６６】
そこで、このノンリニア編集装置１００では、書き込み側ＳＧＬ制御部３０５Ｂがｗ＿ｏｃｃｕｐｙ＿ｒｄ＿ｒｅｑ信号で読み出し側ＳＧＬ制御部３０５Ａに使用要求を出し、読み出し側ＳＧＬ制御部３０５Ａは調停の上使用して良い状態になればｗ＿ｗｒ＿ｏｃｃｕｐｙ＿ｍｒｄ信号で転送権利を明け渡し、書き込み側ＳＧＬ制御部３０５Ｂ側にそれを伝えることにした。
【００６７】
すなわち、書き込みパケットには書き込むデータ（１２８Ｂｙｔｅ等）が付属するが、読み出しパケットは、要求だけなので、１２〜１６Ｂｙｔｅ等のヘッダ部のみであり、書き込みパケットと比較して短いので、読み出し要求と書き込み要求が同時に起こった場合、読み出し要求を優先させるものとした。
【００６８】
この調停は、図９に示すシーケンスに従って行われる。
【００６９】
Ｐ０＿ＡＲＢステート（ＳＴ１）では、読み出し側ＳＧＬ制御部３０５Ａのみ、この間（１ｃｋディレイ）Ｒ＿ＯＣＣＵＰＹ＿ＭＲＤ≦１となる。このＰ０＿ＡＲＢステート（ＳＴ１）は、Ｒ＿ＯＣＣＵＰＹ＿ＲＥＱがデアサートされたらＩＤＬＥステート（ＳＴ２）に遷移する。
【００７０】
ＩＤＬＥステート（ＳＴ２）では、書き込み側ＳＧＬ制御部３０５Ｂのみ、ＯＣＣＵＰＹ＿ＲＤ＿ＲＥＱデアサートし、ＷＲ＿ＯＣＣＵＰＹ＿ＭＲＤのデアサートを待つ。このＩＤＬＥステート（ＳＴ２）は、ＯＣＣＵＰＹ＿ＲＤ＿ＲＥＱの１クロックディレイがアサートされたらＰ０＿ＡＲＢステートに遷移し（ＳＴ１）、また、ｉｆ（ｓｔａｒｔ＿ｓｍ）、すなわち、ＳＴＡＲＴ＝ＰＣＩ＿ＲＥＧのＤＭＡ＿ＳＴＡＲＴビットの２ｃｋディレイでＰ１ＳＴＡＲＴステート（ＳＴ３）に遷移して、他の場合には当該ＩＤＬＥステート（ＳＴ２）を維持する。
【００７１】
そして、Ｐ１ＳＴＡＲＴステート（ＳＴ３），Ｐ１ＲＥＱステート（ＳＴ４），Ｐ１ＷＡＩＴステート（ＳＴ５）によりＳＧＬ転送を行い、さらに、Ｐ２ＫＩＣＫ＿ＯＦＦステート（ＳＴ６），Ｐ２ＡＤＤ＿ＲＤステート（ＳＴ７）、Ｐ２ＣＯＵ＿ＲＤステート（ＳＴ８）、Ｐ２ＩＮＩＴ＿ＷＡＩＴステート（ＳＴ９）、Ｐ２ＷＡＩＴステート（ＳＴ１０）、Ｐ２＿ＡＲＢステート（ＳＴ１１）、Ｐ２ＳＥＴステート（ＳＴ６）により実データ転送を行う。
【００７２】
Ｐ１ＳＴＡＲＴステート（ＳＴ３）は、ｉｆ（ｌｉｓｔ＿ｃｏｕ＿ｅｒｒ）、すなわち、ＳＧＬ内リスト数が範囲外ならばＥＲＲステート（ＳＴ１４）に遷移し、他の場合には、Ｐ１ＲＥＱステート（ＳＴ４）に遷移する。
【００７３】
Ｐ１ＲＥＱステート（ＳＴ４）は、ｉｆ（ＡＢＯＲＴ  ＲＥＱ）、すなわち、ＡＢＯＲＴ要求があればＡＢＯＲＴステート（ＳＴ１３）に遷移し、他の場合には、Ｐ１ＷＡＩＴステート（ＳＴ５）に遷移する。
【００７４】
Ｐ１ＷＡＩＴステート（ＳＴ５）では、ｉｆ（ｎｅｇ＿ｌｉｓｔ＿ｍｓｔｒ＿ｅｘｅ＆！ＬＩＳＴ＿ＥＲＲ）、すなわち、ＳＧＬのリストを転送し、エラーがなければＰ２ＫＩＣＫ＿ＯＦＦステート（ＳＴ６）に遷移し、ｉｆ（ｎｅｇ＿ｌｉｓｔ＿ｍｓｔｒ＿ｅｘｅ＆ＬＩＳＴ＿ＥＲＲ）、すなわち、ＳＧＬのリストの転送にエラーがあればＥＲＲステート（ＳＴ１４）に遷移する。
【００７５】
Ｐ２ＫＩＣＫ＿ＯＦＦステート（ＳＴ６）では、ＤＭＡ起動し、Ｐ２ＡＤＤ＿ＲＤステート（ＳＴ７）では、アドレスを読む。
【００７６】
Ｐ２ＣＯＵ＿ＲＤステート（ＳＴ８）では、転送サイズを読み、ｉｆ（ｐａｓｓｅｄ＿ｓｅｔ＝＝０）すなわち最初のデータ転送の場合にはＰ２ＩＮＩＴ＿ＷＡＩＴステート（ＳＴ９）に遷移し、Ｐ２ＡＤＤ＿ＲＤステート（ＳＴ７）、Ｐ２ＣＯＵ＿ＲＤステート（ＳＴ８）、Ｐ２ＩＮＩＴ＿ＷＡＩＴステート（ＳＴ９）、Ｐ２ＳＥＴステート（ＳＴ１１）のパス（ａ）でデータ転送を行い、また、ｉｆ（ｐａｓｓｅｄ＿ｓｅｔ＝＝１）、すなわち、直前にパス（ａ）を通ったらＰ２ＷＡＩＴステート（ＳＴ１０）に遷移して、Ｐ２ＡＤＤ＿ＲＤステート（ＳＴ７）、Ｐ２ＣＯＵ＿ＲＤステート（ＳＴ８）、Ｐ２ＷＡＩＴステート（ＳＴ１０）、Ｐ２ＳＥＴステート（ＳＴ１１）のパス（ａ）でデータ転送を行う。
【００７７】
Ｐ２ＷＡＩＴステート（ＳＴ１０）では、ｉｆ（！ｎｅｇ＿ｌｉｓｔ＿ｍｓｔｒ＿ｅｘｅ）、すなわち、ＳＧＬの１エレメント分の転送が終わるのを待ってＰ２ＳＥＴステート（ＳＴ１１）に遷移し、この間に、ｉｆ（ｍａｓｔｅｒ／ｅｘｒ＿ｅｒｒ）、すなわち、エラーが生じた場合にはＥＲＲステート（ＳＴ１４）に遷移し、また、ｅｌｓｅ  ｉｆ（！ｅｘｒ＿ｅｒｒ＆ｅｘｅ＿ｌｉｓｔ＿ｉｓ＿ｅｎｄ）、すなわち、ＳＧＬの全リスト分の転送が終わりならば、ＩＤＬＥステート（ＳＴ２）に遷移する。
【００７８】
また、Ｐ２ＷＡＩＴステート（ＳＴ１０）では、読み出し側で且つｅｌｓｅ  ｉｆ（ＯＣＣＵＰＹ＿ＲＤ＿ＲＥＱ＿ＩＮ）、すなわち、読み出し要求があった場合には、Ｐ２＿ＡＲＢステート（ＳＴ１１）に遷移する。
【００７９】
Ｐ２＿ＡＲＢステート（ＳＴ１１）では、ｉｆ（ＯＣＣＵＰＹ＿ＲＤ＿ＲＥＱ＿ＩＮ）、すなわち、読み出し要求がある場合には、このＰ２＿ＡＲＢステート（ＳＴ１１）を維持し、読み出し要求がなくなるとＰ２ＳＥＴステート（ＳＴ１１）に遷移する。
【００８０】
Ｐ２ＳＥＴステート（ＳＴ１１）では、ｉｆ（ＡＢＯＲＴ  ＲＥＱ）、すなわち、ＡＢＯＲＴ要求があればＡＢＯＲＴステート（ＳＴ１３）に遷移し、他の場合には、Ｐ２ＡＤＤ＿ＲＤステート（ＳＴ７）、に遷移する。
【００８１】
すなわち、このノンリニア編集装置１００では、読み出し側ＳＧＬ制御部３０５Ａは、Ｐ０＿ＡＲＢステート（ＳＴ１）及びＰ２＿ＡＲＢステート（ＳＴ１２）で、書き込み側ＳＧＬ制御部３０５Ｂから要求があった場合ＳＧＬ転送を行わせている。そして、Ｐ０＿ＡＲＢステート（ＳＴ１）はＩＤＬＥ状態なので、転送権利を明け渡すのは当然だが、Ｐ２＿ＡＲＢステート（ＳＴ１２）は、データ転送の途中であるが、転送権利を明け渡している。これにより、ＳＧＬの書き込み側を優先させている。
【００８２】
ＳＧＬのリストの読み出しは、実データの読み出しに比べて転送サイズが小さいため、先にすませた方がシステム全体での転送を待たせる時間が少なく、転送レートが向上する。
【図面の簡単な説明】
【００８３】
【図１】本発明を適用したノンリニア編集装置の構成を示すブロック図である。
【図２】ノンリニア編集装置におけるＩ／Ｏ  ＣＯＤＥＣボードの構成を示すブロック図である。
【図３】上記ノンリニア編集装置における再生時の処理手順を模式的に図である。
【図４】上記Ｉ／Ｏ  ＣＯＤＥＣボード上のメモリコントローラの構成を示すブロック図である。
【図５】上記ノンリニア編集装置におけるデータの転送の様子を模式的に示す図である。
【図６】上記ノンリニア編集装置において採用したＳＧＬのフォーマットを示す図である。
【図７】上記ノンリニア編集装置においてデータの転送に要する時間を測定する手順を模式的に示す図である。
【図８】上記Ｉ／Ｏ  ＣＯＤＥＣボード上のメモリコントローラに設けた調停回路の構成を示すブロック図である。
【図９】上記調停回路による調停のシーケンスを示す図である。
【図１０】従来のＳＧＬのフォーマットを示す図である。
【図１１】従来のＤＭＡ転送を模式的に示す図である。
【符号の説明】
【００８４】
１０  チップセット、１１  メインＣＰＵ、１２  システムメモリ、１３  Ｉ／Ｏ  ＣＯＤＥＣボード、１４  ＳＣＳＩＨＢＡカード、１５  画像処理ボード、１６  ＵＳＢ  ＨＵＢ、１７  アナログオーディオ入出力コネクタボード、１８  表示パネル、１９  外部装置、２０  ＨＤＤ、３０  メモリコントローラ、３１  ローカルＣＰＵ、３２  ローカルメモリ、３３，３５Ａ，３５Ｂ  デフォーマッタ、３４，３６  フォーマッタ、３７  ＰＣＩ−Ｅｘｐｒｅｓｓインターフェース、１００  ノンリニア編集装置、１７１  Ａ／Ｄ変換部、１７２  Ｄ／Ａ変換部、１７３  アナログ信号合成部、３０１  ＰＣＩ−ＥｘｐｒｅｓｓＩＰコア部、３０１Ａ  読み出し側データ転送制御部、３０１Ｂ  書き込み側データ転送制御部、３０２  ＭＴＰ＿ＡＲＢＩＴＥＲ部、３０３  ＰＣＩ＿ＲＥＧ部、３０４  ローカルＣＰＵＩＦ部、３０５  マスターＤＭＡブロック、３０５Ａ  読み出し側ＳＧＬ制御部、３０５Ｂ  書き込み側ＳＧＬ制御部、３０６  ターゲットアクセスＷｒｉｔｅ／Ｒｅａｄブロック、３０７  ＬＰＣＩ部、３０８  ＩＯＢ−ＦＰＧＡ部、３１０  調停回路。３１１，３１２  セレクタ
【図１】
2008083978.tif 000005
【図２】
2008083978.tif 000006
【図３】
2008083978.tif 000007
【図４】
2008083978.tif 000008
【図５】
2008083978.tif 000009
【図６】
2008083978.tif 000010
【図７】
2008083978.tif 000011
【図８】
2008083978.tif 000012
【図９】
2008083978.tif 000013
【図１０】
2008083978.tif 000014
【図１１】
2008083978.tif 000015