(57)【要約】【課題】同期系映像データの入出力に応じて、データ転送を最適に行うことができるようにする。【解決手段】転送制御部１０１は、Wr コマンドキュー１０８およびRd コマンドキュー１０９の両方にコマンド要求が積まれている場合、Ch0情報算出部１０２により算出されるCh0転送レート下限保障値とCh1情報算出部１０３により算出されるCh1転送レート下限保障値を比較する。転送制御部１０１は、Ch0転送レート下限保障値がCh1転送レート下限保障値よりも大きい場合、Wr コマンド キュー１０８に積まれている書き込みコマンド要求を受け付け、書き込みコマンド要求パケットを、PCIe IPコア７１に発行する。本発明は、ボードを介して接続される撮像装置とパーソナルコンピュータ間で、映像や音声データをやり取りする情報処理システムに適用することができる。【選択図】図４
2011048542.tif 000002
【特許請求の範囲】
【請求項１】
第１の他の情報処理装置から入力され、第２の他の情報処理装置へ転送されるCh0方向のデータを格納する第１のバッファ、および前記第２の他の情報処理装置から入力され、前記第１の他の情報処理装置へ転送されるCh1方向のデータを一時的に格納する第２のバッファを含むメモリと、
前記第１の他の情報処理装置の垂直同期信号および前記第１のバッファのステータス情報に基づいて、前記第１のバッファから前記第２の他の情報処理装置への前記Ch0方向のデータのCh0転送レート下限保障値を算出するCh0下限保障値算出手段と、
前記第１の他の情報処理装置の垂直同期信号および前記第２のバッファのステータス情報に基づいて、前記第２の他の情報処理装置から前記第２のバッファへの前記Ch1方向のデータのCh1転送レート下限保障値を算出するCh1下限保障値算出手段と、
前記第２の他の情報処理装置から、前記Ch0方向のデータの転送要求および前記Ch1方向のデータの転送要求が両方ある場合、前記Ch0下限保障値算出手段により算出された前記Ch0転送レート下限保障値および前記Ch1下限保障値算出手段により算出された前記Ch1転送レート下限保障値のうち、値が大きい方向のデータの転送要求を受け付ける転送制御手段と
を備える情報処理装置。
【請求項２】
前記第２の他の情報処理装置からの前記Ch0方向のデータの転送要求を積むCh0キューと、
前記第２の他の情報処理装置からの前記Ch1方向のデータの転送要求を積むCh1キューとをさらに備え、
前記転送制御手段は、前記第２の他の情報処理装置から、前記Ch0方向のデータの転送要求および前記Ch1方向のデータの転送要求が両方ある場合、算出された前記Ch0転送レート下限保障値および算出された前記Ch1転送レート下限保障値のうち、値が大きい方向に対応する前記Ch0キューまたは前記Ch1キューから、対応する前記Ch0方向のデータまたは前記Ch1方向のデータの転送要求を受け付ける
請求項１に記載の情報処理装置。
【請求項３】
前記転送制御手段は、算出された前記Ch0転送レート下限保障値および算出された前記Ch1転送レート下限保障値のうち、値が大きい保障値が基準値以上である場合、値が大きい方向に対応する前記Ch0キューまたは前記Ch1キューから、対応する前記Ch0方向のデータまたは前記Ch1方向のデータの転送要求を連続的に受け付ける
請求項２に記載の情報処理装置。
【請求項４】
第１の他の情報処理装置から入力され、第２の他の情報処理装置へ転送されるCh0方向のデータを格納する第１のバッファ、および前記第２の他の情報処理装置から入力され、前記第１の他の情報処理装置へ転送されるCh1方向のデータを一時的に格納する第２のバッファを含むメモリを備える情報処理装置の情報処理方法において、
前記情報処理装置が、
前記第１の他の情報処理装置の垂直同期信号および前記第１のバッファのステータス情報に基づいて、前記第１のバッファから前記第２の他の情報処理装置への前記Ch0方向のデータのCh0転送レート下限保障値を算出し、
前記第１の他の情報処理装置の垂直同期信号および前記第２のバッファのステータス情報に基づいて、前記第２の他の情報処理装置から前記第２のバッファへの前記Ch1方向のデータのCh1転送レート下限保障値を算出し、
前記第２の他の情報処理装置から、前記Ch0方向のデータの転送要求および前記Ch1方向のデータの転送要求が両方ある場合、算出された前記Ch0転送レート下限保障値および算出された前記Ch1転送レート下限保障値のうち値が大きい方向のデータの転送要求を受け付けるステップ
を含む情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置および方法に関し、特に、同期系映像データの入出力に応じて、データ転送を最適に行うことができるようにした情報処理装置および方法に関する。
【背景技術】
【０００２】
パーソナルコンピュータ内部の各パーツ間を結ぶバス(データ伝送路)の規格として、PCIバスが利用されている（特許文献１参照）。
【０００３】
このPCIバスに代わり、パソコン向けシリアル転送インタフェースとして、PCIe(PCI express)も標準規格化されている。このPCIeにおいては、片側方向のデータ転送だけでなく、双方向同時DMA(Direct Memory Access)も行われる。
【０００４】
図１を参照して、従来の双方向同時DMAについて説明する。図１の例においては、従来のDMAコントローラ１、PCIe IP コア２、およびパーソナルコンピュータ３が示されている。なお、PCIeボードは、おおまかに、DMAコントローラ１、PCIe IP コア２、およびメモリ（図示せぬ）で構成されている。
【０００５】
DMAコントローラ１は、片側方向、または双方向同時DMA を制御する。また、DMAコントローラ１は、おおまかに、アービトレーション部１１、Wr コマンド要求部１２、およびRdコマンド要求部１３により構成されている。PCIe IP コア２は、FPGA（Field Programmable Gate Array）ベンダのブラックボックスである。メモリは、転送するデータを一時的に蓄積する。
【０００６】
ここで、PCIeボードから、パーソナルコンピュータ３へデータを転送する方向を、Ch0方向と称し、パーソナルコンピュータ３から、PCIe ボードへデータを転送する方向を、Ch1 方向と称する。
【０００７】
Ch0方向のDMAを行う際には、パーソナルコンピュータ３からのCh0 DMAキック２１に対して、メモリ書き込み要求パケット（Memory Write Request Packet）をパーソナルコンピュータ３に送信する必要がある。また、Ch1方向のDMAを行う際、パーソナルコンピュータ３からのCh1 DMAキック２２に対して、メモリ読み出し要求パケット（Memory Read Request Packet）をパーソナルコンピュータ３に送信する必要がある。
【０００８】
どちらのパケットを送信するのにも、共用のバスが用いられるため、パケット発行時にアービトレーションを行うことが必要となっている。アービトレーション部１１においては、一般的に、Ch1 DMAキック２２に対応する読み出しコマンド要求を優先するように転送が制御されることが多い。
【０００９】
例えば、Ch0 DMAキック２１が、パーソナルコンピュータ３から、PCIe IP コア２を介して、DMAコントローラ１に入力される。DMAコントローラ１には、さらに、カウンタ１４が設けられている。カウンタ１４は、アービトレーション部１１からの書き込みコマンドアック(Wr Cmd Ack)に対応して、メモリからの転送済みデータサイズをカウントしている。
【００１０】
DMAコントローラ１においては、カウンタ１４が示すデータサイズが、転送サイズ（転送すべきサイズ）未満であるか否かが判定される。データサイズが転送サイズ未満である（すなわち、まだ転送データが残っている）と判定された場合、Wrコマンド要求部１２は、アービトレーション部１１に、書き込みコマンド要求(Wr Cmd Req)を発行する。カウンタ１４が示すデータサイズが、転送サイズ（転送すべきサイズ）以上であると判定された場合、Ch0 DMAは終了される。
【００１１】
他方、Ch1 DMAキック２２が、パーソナルコンピュータ３から、PCIe IP コア２を介して、DMAコントローラ１に入力される。DMAコントローラ１においては、さらに、カウンタ１５が設けられている。カウンタ１５は、アービトレーション部１１からの読み出しコマンドアック（Rd Cmd Ack）に対応して、メモリへの転送済みデータサイズをカウントしている。
【００１２】
DMAコントローラ１においては、カウンタ１５が示すデータサイズが、転送サイズ（転送すべきサイズ）未満であるか否かの判定が判定される。データサイズが転送サイズ未満である（すなわち、まだ転送データが残っている）と判定された場合、Rdコマンド要求部１３は、アービトレーション部１１に、読み出しコマンド要求(Rd Cmd Req)を発行する。カウンタ１５が示すデータサイズが、転送サイズ（転送すべきサイズ）以上であると判定された場合、Ch1 DMAは終了される。
【００１３】
アービトレーション部１１は、書き込みコマンド要求だけが入力された場合、その要求を受け入れ、PCIe IPコア２に、書き込みコマンド要求パケット(Wr Cmd Req Packet)を送信するとともに、カウンタ１４に、書き込みコマンドアック(Wr Cmd Ack)を返す。
【００１４】
アービトレーション部１１は、読み出しコマンド要求だけが入力された場合、その要求を受け入れ、PCIe IPコア２に、読み出しコマンド要求パケット(Rd Cmd Req Packet)を発行するともに、カウンタ１５に、読み出しコマンドアック（Rd Cmd Ack）を返す。
【００１５】
さらに、アービトレーション部１１は、書き込みコマンド要求および読み出しコマンド要求が入力された場合、読み出しコマンド要求を優先して受け入れる。そして、アービトレーション部１１は、PCIe IPコア２に、読み出しコマンド要求パケットを送信するともに、カウンタ１４に、読み出しコマンドアックを返す。
【００１６】
アービトレーション部１１からの書き込みコマンド要求パケットに対応して、PCIe IPコア２は、パーソナルコンピュータ３に対して、メモリ書き込みパケット（Memory Write Packet）を送信する。アービトレーション部１１からのメモリ読み出し要求パケットに対応して、PCIe IPコア２は、パーソナルコンピュータ３に対して、読み出しコマンドパケット（Memory Read Packet）を送信する。
【００１７】
以上のように、アービトレーション部１１においては、Ch1方向のDMA、すなわち、読み出しコマンドが優先されるメモリアクセス制御が行われることが多い。これは、書き込みコマンド要求パケットは、ペイロードデータを送信する必要があるため、送信側のバスの占有時間が長いが、読み出しコマンド要求パケットは、ペイロードデータを含まないので、書き込みコマンド要求パケットに比して、占有時間が短いからである。
【先行技術文献】
【特許文献】
【００１８】
【特許文献１】特開２００７−６７７３８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１９】
従来のPCIeの双方向同時DMAでは、以上のようなアービトレーションが行われているが、PCIeの双方向同時DMAは、片側方向のみの転送レートと比して、１０％以上転送レートが低下してしまう。また、Ch0方向とCh1方向のDMA転送レートは非対称であり、アプリケーションによってはPCIeボードの機能的な制限になる恐れがあった。
【００２０】
さらに、PCIe DMAのバスのアービトレーションにおいては、従来、PCIeを経由する映像信号などの同期系データの入出力状態も考慮したアービトレーション方法は提案されていなかった。
【００２１】
本発明はこのような状況に鑑みてなされたものであり、同期系映像データの入出力に応じて、データ転送を最適に行うことができることができるようにするものである。
【課題を解決するための手段】
【００２２】
本発明の一側面の情報処理装置は、第１の他の情報処理装置から入力され、第２の他の情報処理装置へ転送されるCh0方向のデータを格納する第１のバッファ、および前記第２の他の情報処理装置から入力され、前記第１の他の情報処理装置へ転送されるCh1方向のデータを一時的に格納する第２のバッファを含むメモリと、前記第１の他の情報処理装置の垂直同期信号および前記第１のバッファのステータス情報に基づいて、前記第１のバッファから前記第２の他の情報処理装置への前記Ch0方向のデータのCh0転送レート下限保障値を算出するCh0下限保障値算出手段と、前記第１の他の情報処理装置の垂直同期信号および前記第２のバッファのステータス情報に基づいて、前記第２の他の情報処理装置から前記第２のバッファへの前記Ch1方向のデータのCh1転送レート下限保障値を算出するCh1下限保障値算出手段と、前記第２の他の情報処理装置から、前記Ch0方向のデータの転送要求および前記Ch1方向のデータの転送要求が両方ある場合、前記Ch0下限保障値算出手段により算出された前記Ch0転送レート下限保障値および前記Ch1下限保障値算出手段により算出された前記Ch1転送レート下限保障値のうち、値が大きい方向のデータの転送要求を受け付ける転送制御手段とを備える。
【００２３】
前記第２の他の情報処理装置からの前記Ch0方向のデータの転送要求を積むCh0キューと、前記第２の他の情報処理装置からの前記Ch1方向のデータの転送要求を積むCh1キューとをさらに備え、前記転送制御手段は、前記第２の他の情報処理装置から、前記Ch0方向のデータの転送要求および前記Ch1方向のデータの転送要求が両方ある場合、算出された前記Ch0転送レート下限保障値および算出された前記Ch1転送レート下限保障値のうち、値が大きい方向に対応する前記Ch0キューまたは前記Ch1キューから、対応する前記Ch0方向のデータまたは前記Ch1方向のデータの転送要求を受け付けることができる。
【００２４】
前記転送制御手段は、算出された前記Ch0転送レート下限保障値および算出された前記Ch1転送レート下限保障値のうち、値が大きい保障値が基準値以上である場合、値が大きい方向に対応する前記Ch0キューまたは前記Ch1キューから、対応する前記Ch0方向のデータまたは前記Ch1方向のデータの転送要求を連続的に受け付けることができる。
【００２５】
本発明の一側面の情報処理方法は、第１の他の情報処理装置から入力され、第２の他の情報処理装置へ転送されるCh0方向のデータを格納する第１のバッファ、および前記第２の他の情報処理装置から入力され、前記第１の他の情報処理装置へ転送されるCh1方向のデータを一時的に格納する第２のバッファを含むメモリを備える情報処理装置の情報処理方法において、前記情報処理装置が、前記第１の他の情報処理装置の垂直同期信号および前記第１のバッファのステータス情報に基づいて、前記第１のバッファから前記第２の他の情報処理装置への前記Ch0方向のデータのCh0転送レート下限保障値を算出し、前記第１の他の情報処理装置の垂直同期信号および前記第２のバッファのステータス情報に基づいて、前記第２の他の情報処理装置から前記第２のバッファへの前記Ch1方向のデータのCh1転送レート下限保障値を算出し、前記第２の他の情報処理装置から、前記Ch0方向のデータの転送要求および前記Ch1方向のデータの転送要求が両方ある場合、算出された前記Ch0転送レート下限保障値および算出された前記Ch1転送レート下限保障値のうち値が大きい方向のデータの転送要求を受け付けるステップを含む。
【００２６】
本発明の一側面においては、第１の他の情報処理装置の垂直同期信号、および前記第１の他の情報処理装置から入力され、第２の他の情報処理装置へ転送されるCh0方向のデータを格納する第１のバッファのステータス情報に基づいて、前記第１のバッファから前記第２の他の情報処理装置への前記Ch0方向のデータのCh0転送レート下限保障値が算出される。前記第１の他の情報処理装置の垂直同期信号、および前記第２の他の情報処理装置から入力され、前記第１の他の情報処理装置へ転送されるCh1方向のデータを一時的に格納する第２のバッファのステータス情報に基づいて、前記第２の他の情報処理装置から前記第２のバッファへの前記Ch1方向のデータのCh1転送レート下限保障値が算出される。そして、前記第２の他の情報処理装置から、前記Ch0方向のデータの転送要求および前記Ch1方向のデータの転送要求が両方ある場合、算出された前記Ch0転送レート下限保障値および算出された前記Ch1転送レート下限保障値のうち値が大きい方向のデータの転送要求が受け付けられる。
【発明の効果】
【００２７】
本発明によれば、同期系映像データの入出力に応じて、データ転送を最適に行うことができる。
【図面の簡単な説明】
【００２８】
【図１】従来の双方向同時DMAを説明する図である。
【図２】本発明を適用した情報処理システムの構成例を示すブロック図である。
【図３】図２のPCIeボード内のデータバスをさらに詳しく示す図である。
【図４】図２のDMAコントローラの構成例を示すブロック図である。
【図５】Ch0転送レート下限保障値算出処理を説明するフローチャートである。
【図６】Ch0転送レート下限保障値算出処理を説明する図である。
【図７】Ch1転送レート下限保障値算出処理を説明するフローチャートである。
【図８】Ch1転送レート下限保障値算出処理を説明する図である。
【図９】Ch0 DMA処理を説明するフローチャートである。
【図１０】Ch1 DMA処理を説明するフローチャートである。
【図１１】図９のステップＳ５４および図１０のステップＳ７４のアクセス制御処理を説明するフローチャートである。
【図１２】コンピュータのハードウエアの構成例を示すブロック図である。
【発明を実施するための形態】
【００２９】
［PCIe ボードの構成例］
図２は、本発明を適用した情報処理システムの一実施形態の構成例を示すブロック図である。
【００３０】
図２の情報処理システムは、パーソナルコンピュータ５２に差し込まれたPCIeボード５１を介して、パーソナルコンピュータ５２と、PCIeボード５１に接続される図示せぬ撮像装置などとが、映像や音声データをやり取りするシステムである。
【００３１】
なお、以下、PCIeボード５１から、パーソナルコンピュータ５２へデータを転送する方向を、Ch0方向と称し、パーソナルコンピュータ５２から、PCIe ボード５１へデータを転送する方向を、Ch1 方向と称する。
【００３２】
PCIeボード５１においては、パーソナルコンピュータ５２とのインタフェースとして、パーソナルコンピュータ向けのシリアル転送インタフェースであるPCIe(PCI express)が用いられる。また、PCIeボード５１においては、撮像装置とのインタフェースとして、ビデオ信号伝送規格の１つであるSDI(Serial Digital Interface）が用いられる。
【００３３】
なお、PCIeボード５１にSDIにより接続される装置は、撮像装置に限らず、同期系映像データを入力する装置であれば、他の装置であってもよい。
【００３４】
PCIeボード５１は、ボード、あるいはカセット型のハードウエアユニットなどで構成される。PCIeボード５１は、例えば、データ転送回路６１、DDR SDRAM (Double-Data-Rate Synchronous Dynamic Random Access Memory)６２、およびコーデック回路６３からなる。
【００３５】
データ転送回路６１は、例えば、FPGA(Field Programmable Gate Array)からなる。図２の例において、データ転送回路６１は、PCIe IPコア７１、DMA(Direct Memory Access)コントローラ７２、PCIe用DDRポート７３、およびDDRコントローラ７４を含むように構成されている。さらに、データ転送回路６１は、SDI出力用DDRポート７５、SDI出力モジュール７６、SDI入力モジュール７７、SDI入力用DDRポート７８、およびコーデック用DDRポート７９も含むように構成されている。
【００３６】
なお、図２の例において、図示せぬ撮像装置から、SDI入力モジュール７７、SDI入力用DDRポート７８、およびDDRコントローラ７４への矢印は、SDI INバスを表している。一方、DDRコントローラ７４から、SDI出力用DDRポート７５、SDI出力モジュール７６、および撮像装置への矢印は、SDI OUTバスを表している。
【００３７】
PCIe IPコア７１は、FPRAベンダのIP(Black Box)などで構成されており、DMAコントローラ７２とパーソナルコンピュータ５２のインタフェースを担っている。
【００３８】
DMAコントローラ７２は、Ch0方向およびCh1方向のデータ転送状況に関する情報をそれぞれ算出している。DMAコントローラ７２は、PCIe IPコア７１を介して入力されるパーソナルコンピュータ５２からのCh0方向またはCh1方向のDMAキックに対し、PCIe用DDRポート７３の状態に応じて、対応するコマンド要求パケット(Cmd Req Packet)を発行する。例えば、発行すべきコマンド要求パケットが複数ある場合、DMAコントローラ７２は、算出した両方向のデータ転送状況に応じて、どちらのコマンド要求パケットを発行するかを決めるアクセス制御（アービトレーション）を行う。
【００３９】
PCIe用DDRポート７３は、DDRコントローラ７４を介して、DMAコントローラ７２からのデータを、DDR SDRAM６２に書き込んだり、DDR SDRAM６２のデータを読み出し、DMAコントローラ７２に出力する。
【００４０】
DDRコントローラ７４は、PCIe用DDRポート７３、SDI出力用DDRポート７５、SDI出力モジュール７６、およびコーデック用DDRポート７９のDDR SDRAM６２へのアクセス制御（アービトレーション）を行う。
【００４１】
SDI出力用DDRポート７５は、DDR SDRAM６２に蓄積されているベースバンド(Base Band：ペイロード)のデータを、DDRコントローラ７４を介して読み出し、SDI出力モジュール７６に出力する。SDI出力モジュール７６は、SDI出力用DDRポート７５からのベースバンドのデータを、撮像装置に対して、SDI OUTバスにより出力する。
【００４２】
SDI入力モジュール７７は、撮像装置から入力されるベースバンドのデータを、SDI INバスにより入力し、SDI入力用DDRポート７８に出力する。SDI入力用DDRポート７８は、SDI入力モジュール７７からのベースバンドのデータを、DDRコントローラ７４を介して、DDR SDRAM６２に書き込む。
【００４３】
コーデック用DDRポート７９は、DDRコントローラ７４を介して、コーデック回路６３からのベースバンドまたはエレメンタリーストリーム(ES)のデータを、DDR SDRAM６２に書き込む。また、コーデック用DDRポート７９は、DDRコントローラ７４を介して、DDR SDRAM６２のベースバンドまたはエレメンタリーストリームのデータを読み出し、コーデック回路６３に出力する。
【００４４】
DDR SDRAM６２は、パーソナルコンピュータ５２からのデータを一時的に格納したり、撮像装置からのデータを一旦格納する。
【００４５】
コーデック回路６３は、コーデック用DDRポート７９からのベースバンドのデータを、符号化して、符号化されたエレメンタリーストリームのデータを、コーデック用DDRポート７９に出力する。また、コーデック回路６３は、コーデック用DDRポート７９からの符号化されたエレメンタリーストリームのデータを復号し、復号されたベースバンドのデータを、コーデック用DDRポート７９に出力する。コーデック回路６３においては、例えば、MPEG（Moving Picture Experts Group）2、MPEG4、または、AVC（Advanced Video Coding）といった圧縮符号化方式などが用いられる。
【００４６】
なお、図２の例においては、図示されないが、撮像装置からは、PCIeボード５１へのデータの入力に伴って、SDI Inputの垂直同期信号が、PCIeボード５１の各部に供給されている。また、撮像装置からは、PCIeボード５１からのデータの出力に伴って、SDI Outputの垂直同期信号が、PCIeボード５１の各部に供給されている。
【００４７】
パーソナルコンピュータ５２は、デバイスドライバを有している。パーソナルコンピュータ５２は、ユーザの操作に応じて、デバイスドライバに、図示せぬ撮像装置からのデータを、PCIeボード５１を介して、パーソナルコンピュータ５２に転送するためのCh0方向のDMAキックをPCIeボード５１に出力させる。
【００４８】
また、パーソナルコンピュータ５２は、ユーザの操作に応じて、デバイスドライバに、パーソナルコンピュータ５２に記憶されているデータを、PCIeボード５１を介して、図示せぬ撮像装置に転送するためのCh1方向のDMAキックをPCIeボード５１に出力させる。
【００４９】
パーソナルコンピュータ５２は、デバイスドライバを介して、これらのDMAキックに対応してPCIeボード５１により発行されるコマンド要求パケットを受ける。パーソナルコンピュータ５２は、受信したコマンド要求パケットに含まれるデータを記憶したり、受信したコマンド要求パケットに対応して、デバイスドライバを制御し、記憶しているデータをパケット化して、PCIeボード５１に送信させる。
【００５０】
次に、図３を参照して、PCIeボード５１内におけるデータの流れを説明する。なお、図３の例においては、DDR SDRAM６２は、少なくとも、パーソナルコンピュータ５２へのデータを格納するSDI Rx バッファ８１と、パーソナルコンピュータ５２からのデータを格納するSDI Tx バッファ８２を含むように構成されている。
【００５１】
まず、図３の例において、白矢印は、図示せぬ撮像装置からのベースバンドのデータが、パーソナルコンピュータ５２に転送されるCh0方向の流れを表している。この白矢印のうち、撮像装置から、SDI入力モジュール７７、SDI入力用DDRポート７８、DDRコントローラ７４、およびDDR SDRAM６２への矢印は、SDI INバスを表している。一方、DDR SDRAM６２から、DDRコントローラ７４、PCIe用DDRポート７３、DMAコントローラ７２、PCIe IPコア７１、およびパーソナルコンピュータ５２への矢印は、Ch0 DMAバスを表している。
【００５２】
すなわち、白矢印に示されるように、撮像装置からのベースバンドのデータは、SDI INバスによりSDI入力モジュール７７に入力され、SDI入力用DDRポート７８、およびDDRコントローラ７４を介して、DDR SDRAM６２のSDI Rx バッファ８１に書き込まれる。そして、SDI Rx バッファ８１に書き込まれたベースバンドのデータは、Ch0 DMA バスにより、DDRコントローラ７４、PCIe用DDRポート７３、DMAコントローラ７２、およびPCIe IPコア７１を介して、パーソナルコンピュータ５２に出力される。
【００５３】
次に、図３の例において、ハッチがなされた矢印は、パーソナルコンピュータ５２からのベースバンドのデータが、図示せぬ撮像装置に転送されるCh1方向の流れを表している。このハッチがなされた矢印のうち、DDR SDRAM６２から、DDRコントローラ７４、SDI出力用DDRポート７５、SDI出力モジュール７６、および撮像装置への矢印は、SDI OUTバスを表している。一方、パーソナルコンピュータ５２から、PCIe IPコア７１、DMAコントローラ７２、PCIe用DDRポート７３、DDRコントローラ７４、およびDDR SDRAM６２への矢印は、Ch1 DMAバスを表している。
【００５４】
すなわち、ハッチがなされた矢印に示されるように、パーソナルコンピュータ５２からのベースバンドのデータは、Ch1 DMAバスにより、PCIe IPコア７１、DMAコントローラ７２、PCIe用DDRポート７３、およびDDRコントローラ７４を介して、DDR SDRAM６２のSDI Tx バッファ８２に書き込まれる。そして、SDI Tx バッファ８２に書き込まれたベースバンドのデータは、DDRコントローラ７４、SDI出力用DDRポート７５、SDI出力モジュール７６を介して、SDI OUTバスにより、撮像装置に出力される。
【００５５】
また、図３の例において、黒矢印は、例えば、DDR SDRAM６２に格納されたデータが、コーデック回路６３において符号化または復号され、符号化または復号されたデータが、DDR SDRAM６２に格納される流れを表している。
【００５６】
DDR SDRAM６２のSDI Rx バッファ８１あるいはSDI Tx バッファ８２、または他の領域に格納されたベースバンドのデータは、DDRコントローラ７４、およびコーデック用DDRポート７９を介して、コーデック回路６３に出力される。このベースバンドのデータは、コーデック回路６３においてエレメンタリーストリームのデータとして符号化される。そして、符号化されたエレメンタリーストリームのデータは、コーデック用DDRポート７９、およびDDRコントローラ７４を介して、DDR SDRAM６２のSDI Rx バッファ８１あるいはSDI Tx バッファ８２、または他の領域に書き込まれる。
【００５７】
［DMAコントローラの構成例］
図４は、DMAコントローラの構成例を示している。
【００５８】
図４の例において、DMAコントローラ７２は、転送制御部１０１、Ch0情報算出部１０２、Ch1情報算出部１０３、Ch0カウンタ１０４、およびCh1カウンタ１０５を含むように構成されている。さらに、DMAコントローラ７２は、Wrコマンド要求部１０６、Rdコマンド要求部１０７、Wr コマンド キュー１０８、およびRd コマンド キュー１０９も含むように構成されている。
【００５９】
転送制御部１０１は、PCIe IPコア７１を介して、パーソナルコンピュータ５２からのCh0方向またはCh1方向のDMAキックが入力されると、その通知を、PCIe用DDRポート７３に出力する。また、転送制御部１０１は、PCIe IPコア７１を介して、パーソナルコンピュータ５２からのパケットが入力されると、そのパケットを、PCIe用DDRポート７３に出力する。
【００６０】
転送制御部１０１は、Wr コマンドキュー１０８またはRd コマンドキュー１０９を監視している。転送制御部１０１は、どちらか一方のキューに、書き込みコマンド要求(Wr Cmd Req)または読み出しコマンド要求(Rd Cmd Req)がある場合、対応するコマンド要求パケット(Cmd Req Packet)をPCIe IPコア７１に発行する。
【００６１】
これに対して、転送制御部１０１は、Wr コマンドキュー１０８に書き込みコマンド要求が蓄積されており、かつ、Rd コマンドキュー１０９に読み出しコマンド要求が蓄積されている場合、アービトレーション（アクセス制御）を行う。すなわち、転送制御部１０１は、Ch0情報算出部１０２により算出されるCh0転送レート下限保障値とCh1情報算出部１０３により算出されるCh1転送レート下限保障値を比較する。
【００６２】
転送制御部１０１は、Ch0転送レート下限保障値がCh1転送レート下限保障値よりもその値が大きい場合には、Wr コマンド キュー１０８に積まれている書き込みコマンド要求を受け付ける。そして、転送制御部１０１は、書き込みコマンド要求パケット(Wr Cmd Req Packet)を、PCIe IPコア７１に発行し、書き込みコマンドアック（Wr Cmd Ack）を、Ch0カウンタ１０４に出力する。
【００６３】
転送制御部１０１は、Ch0転送レート下限保障値がCh1転送レート下限保障値よりもその値が小さい場合には、Rd コマンド キュー１０９に積まれている読み出しコマンド要求を受け付ける。そして、転送制御部１０１は、読み出しコマンド要求パケット(Rd Cmd Req Packet)を、PCIe IPコア７１に発行し、読み出しコマンドアック（Rd Cmd Ack）を、Ch1カウンタ１０５に出力する。
【００６４】
また、転送制御部１０１は、値が大きいと判定された方のCh0またはCh1転送レート下限保障値が予め設定される基準値以上である場合、対応する方（転送レート下限保障値が基準値以上である方）のキューに積まれているコマンド要求を連続的に受け付ける。そして、転送制御部１０１は、受け付けた方のコマンド要求パケットを、PCIe IPコア７１に発行し、対応するコマンドアックを対応するカウンタに出力する。
【００６５】
Ch0情報算出部１０２は、図示せぬ撮像装置からSDI入力モジュール７７にデータが入力されると、SDI Rx バッファ８１のステータス情報と、撮像装置から入力されるSDI Inputの垂直同期信号を監視する。そして、Ch0情報算出部１０２は、逐次、これらの情報に基づいて、Ch0方向のデータ転送状況に関する情報を算出する。このCh0方向のデータ転送状況に関する情報は、例えば、Ch0転送レート下限保障値である。Ch0情報算出部１０２の処理は、Ch0カウンタ１０４のカウントに基づき、すべてのデータが転送されるまで行われる。
【００６６】
Ch1情報算出部１０３は、パーソナルコンピュータ５２からDMAコントローラ７２にパケット化されたデータが入力されると、SDI Tx バッファ８２のステータス情報と、撮像装置から入力されるSDI 0utputの垂直同期信号を監視する。そして、Ch1情報算出部１０３は、これらの情報に基づいて、逐次、Ch1方向のデータ転送状況に関する情報を算出する。Ch1方向のデータ転送状況に関する情報は、例えば、Ch1転送レート下限保障値である。Ch1情報算出部１０３の処理は、Ch1カウンタ１０５のカウントに基づき、すべてのデータが転送されるまで行われる。
【００６７】
Ch0カウンタ１０４は、転送制御部１０１からの書き込みコマンドアック（Wr Cmd Ack）に対応して、SDI Rx バッファ８１からの転送済みデータサイズをカウントしている。Ch1カウンタ１０５は、転送制御部１０１からの読み出しコマンドアック（Rd Cmd Ack）に対応して、SDI Tx バッファ８２への転送済みデータサイズをカウントしている。
【００６８】
PCIe用DDRポート７３は、図示せぬCh0バッファおよびCh1バッファを含むように構成されている。Ch0バッファには、パーソナルコンピュータ５２に転送されるDDR SDRAM６２のSDI Rx バッファ８１から読み出されたデータが一時的に蓄積される。Ch1バッファには、DDR SDRAM６２のSDI Tx バッファ８２に書き込まれるデータが一時的に蓄積される。
【００６９】
PCIe用DDRポート７３は、Ch0バッファにデータがある程度溜まると、書き込み準備完了の通知とともにデータをWrコマンド要求部１０６に出力する。また、PCIe用DDRポート７３は、Ch1バッファのデータがある程度減ると、読み出し準備完了の通知を、Rdコマンド要求部１０７に出力する。
【００７０】
Wrコマンド要求部１０６は、PCIe用DDRポート７３からの通知に対応して、書き込みコマンド要求(Wr Cmd Req)を発行し、その書き込みコマンド要求(Wr Cmd Req)をWr コマンドキュー１０８に積む（キューイングする）。この書き込みコマンド要求には、PCIe用DDRポート７３からのデータが付加されている場合もある。Wrコマンド要求部１０６の処理は、Ch0カウンタ１０４のカウントに基づき、すべてのデータが転送されるまで行われる。
【００７１】
Rdコマンド要求部１０７は、PCIe用DDRポート７３からの通知に対応して、読み出しコマンド要求(Rd Cmd Req)を発行し、その読み出しコマンド要求(Rd Cmd Req)をRd コマンドキュー１０９に積む（キューイングする）。Rdコマンド要求部１０７の処理は、Ch1カウンタ１０５のカウントに基づき、すべてのデータが転送されるまで行われる。
【００７２】
Wr コマンド キュー１０８は、Wrコマンド要求部１０６からの書き込みコマンド要求(Wr Cmd Req)を積む。Wr コマンド キュー１０８に積まれたキューは、転送制御部１０１の受付に対応して減る。Rd コマンド キュー１０９は、PCIe用DDRポート７３からの読み出しコマンド要求(Rd Cmd Req)を積む。Rd コマンド キュー１０９に積まれたキューは、転送制御部１０１の受付に対応して減る。
【００７３】
［Ch0転送レート下限保障値算出の例］
次に、図５のフローチャートを参照して、Ch0情報算出部１０２によるCh0転送レート下限保障値の算出処理について説明する。なお、適宜、図６も参照される。図６の例においては、撮像装置からのSDI Inputの垂直同期信号(V sync)が示されている。
【００７４】
SDI INバスにより入力されるベースバンドのデータは、一旦、DDR SDRAM６２のSDI Rx バッファ８１に格納され、Ch0 DMAバスにより、パーソナルコンピュータ５２に転送される。図５の処理は、例えば、撮像装置のベースバンドのデータが、SDI INバスによりSDI入力モジュール７７に入力されたときに開始される。
【００７５】
ここで例えば、SDI Rx バッファ８１のサイズを１フレーム分とし、１フィールド終了毎に、SDI Rx バッファ８１のデータを、Ch0 DMAバスにより、パーソナルコンピュータ５２に転送するものとする。なお、SDIのビデオフォーマットは、インターレースである。
【００７６】
まず、Ch0情報算出部１０２においては、SDI Rx バッファ８１の破たんを防ぐために、１フィールド分の転送を完了しなければならないポイントであるCh0 DMA End Limitが予め設定される。例えば、図６に示されるように、Ch0 DMA End Limitは、垂直同期信号の立ち下がりの少し前などで設定される。なお、この設定値は、例えば、SDI ビデオフォーマットや、バッファサイズなどのシステムに依存する。
【００７７】
Ch0情報算出部１０２は、撮像装置からのSDI Inputの垂直同期信号を監視し、図５のステップＳ１１において、垂直同期信号の立ち上がりであると判定するまで待機する。図６に示されるように、垂直同期信号が立ち上がると、Ch0情報算出部１０２は、ステップＳ１１において、垂直同期信号の立ち上がりであると判定し、ステップＳ１２において、内蔵するタイマをスタートさせ、時刻計測を開始する。
【００７８】
ステップＳ１３において、Ch0情報算出部１０２は、SDI Rx バッファ８１のステータス情報として、内蔵するカウンタにより、SDI Rx バッファ８１のバッファ格納データサイズのカウントを開始させる。
【００７９】
Ch0情報算出部１０２は、次に説明するステップＳ１４乃至Ｓ１６において、転送制御部１０１によるアービトレーション用の設定値として、Ch0方向のデータ転送状況に関する情報であるCh0転送レート下限保障値を算出する。
【００８０】
すなわち、ステップＳ１４において、Ch0情報算出部１０２は、１フィールドあたりの残りのデータサイズを算出する。１フィールドのデータサイズは、決まった値である（メタ情報などは無視される）。したがって、１フィールドあたりの残りのデータサイズは、次の式（１）に示されるように、SDI Rx バッファ８１のバッファ格納データサイズのカウント値から算出することができる。
【００８１】
１フィールド残りのデータサイズ
＝  （１フィールドのデータサイズ）−（バッファ格納データサイズ）
・・・（１）
【００８２】
ステップＳ１５において、Ch0情報算出部１０２は、Ch0 DMA End Limit設定値から、内蔵するタイマの現在時刻を差し引き、図６に示されるように、Ch0 DMA 転送終了猶予時間を算出する。すなわち、Ch0 DMA 転送終了猶予時間は、次の式（２）で求められる。
Ch0 DMA 転送終了猶予時間
＝  （タイマの現在時刻）−（Ch0 DMA End Limit設定値）
・・・（２）
【００８３】
ステップＳ１６において、Ch0情報算出部１０２は、次の式（３）により、Ch0転送レート下限保障値を算出する。
Ch0転送レート下限保障値
＝  （１フィールド残りのデータサイズ）／（Ch0 DMA 転送終了猶予時間）
・・・（３）
【００８４】
ステップＳ１７において、Ch0情報算出部１０２は、内蔵するカウンタに基づいて、１フィールド分のデータ転送が終了したか否かを判定する。ステップＳ１７において、１フィールド分のデータ転送がまだ終了していないと判定された場合、処理は、ステップＳ１４に戻り、それ以降の処理が繰り返される。すなわち、ステップＳ１４乃至Ｓ１６の算出処理は、１フィールド分のデータ転送が終了するまで繰り返される。
【００８５】
ステップＳ１７において、フィールド分のデータ転送が終了したと判定された場合、ステップＳ１８において、Ch0情報算出部１０２は、内蔵するタイマをストップさせて、時間計測を終了させて、内蔵するカウンタのカウントを終了させる。
【００８６】
ステップＳ１９において、Ch0情報算出部１０２は、Ch0カウンタ１０４のカウントに基づいて、すべてのデータ転送が終了したか否かを判定する。ステップＳ１９において、すべてのデータ転送がまだ終了していないと判定された場合、処理は、ステップＳ１１に戻り、次の１フィールド分のデータに対して、それ以降の処理が繰り返される。
【００８７】
ステップＳ１９において、すべてのデータ転送が終了したと判定された場合、Ch0転送レート下限保障値算出処理は終了される。
【００８８】
［Ch1転送レート下限保障値算出の例］
次に、図７のフローチャートを参照して、Ch1情報算出部１０３によるCh1転送レート下限保障値の算出処理について説明する。なお、適宜、図８も参照される。図８の例においては、撮像装置からのSDI Outputの垂直同期信号(V sync)が示されている。
【００８９】
SDI OUTバスにより出力されるベースバンドのデータは、Ch1 DMAバスにより、パーソナルコンピュータ５２から、一旦、DDR SDRAM６２のSDI Tx バッファ８２に転送されて、格納される。図７の処理は、例えば、パーソナルコンピュータ５２のベースバンドのデータが、Ch1 DMAバスにより転送制御部１０１に入力されたときに開始される。
【００９０】
ここで例えば、SDI Tx バッファ８２のサイズを１フレーム分とし、１フィールド終了毎に、SDI Tx バッファ８２のデータを、Ch1 DMAバスにより、パーソナルコンピュータ５２から、PCIeボード５１側に転送するものとする。なお、SDIのビデオフォーマットは、インターレースである。
【００９１】
まず、Ch1情報算出部１０３においては、SDI Tx バッファ８２の破たんを防ぐために、１フィールド分の転送を完了しなければならないポイントであるCh1 DMA End Limitが予め設定される。例えば、図８に示されるように、Ch1 DMA End Limitは、垂直同期信号の立ち下がりの少し前などで設定される。なお、この設定値は、例えば、SDI ビデオフォーマットや、バッファサイズなどのシステムに依存する。
【００９２】
Ch1情報算出部１０３は、撮像装置からのSDI Outputの垂直同期信号を監視し、図７のステップＳ３１において、垂直同期信号の立ち上がりであると判定するまで待機する。図８に示されるように、垂直同期信号が立ち上がると、Ch1情報算出部１０３は、ステップＳ３１において、垂直同期信号の立ち上がりであると判定し、ステップＳ３２において、内蔵するタイマをスタートさせ、時刻計測を開始する。
【００９３】
ステップＳ３３において、Ch1情報算出部１０３は、SDI Tx バッファ８２のステータス情報として、内蔵するカウンタにより、SDI Tx バッファ８２のバッファ格納データサイズのカウントを開始させる。
【００９４】
Ch1情報算出部１０３は、次に説明するステップＳ３４乃至Ｓ３６において、転送制御部１０１によるアービトレーション用の設定値として、Ch1方向のデータ転送状況に関する情報であるCh1転送レート下限保障値を算出する。
【００９５】
すなわち、ステップＳ３４において、Ch1情報算出部１０３は、１フィールドあたりの残りのデータサイズを算出する。１フィールドのデータサイズは、決まった値である（メタ情報などは無視される）。したがって、１フィールドあたりの残りのデータサイズは、次の式（４）に示されるように、SDI Tx バッファ８２のバッファ格納データサイズのカウント値から算出することができる。
【００９６】
１フィールド残りのデータサイズ
＝  （１フィールドのデータサイズ）−（バッファ格納データサイズ）
・・・（４）
【００９７】
ステップＳ３５において、Ch1情報算出部１０３は、Ch1 DMA End Limit設定値から、内蔵するタイマの現在時刻を差し引き、図８に示されるように、Ch1 DMA 転送終了猶予時間を算出する。すなわち、Ch1 DMA 転送終了猶予時間は、次の式（５）で求められる。
Ch1 DMA 転送終了猶予時間
＝  （タイマの現在時刻）−（Ch1 DMA End Limit設定値）
・・・（５）
【００９８】
ステップＳ３６において、Ch1情報算出部１０３は、次の式（６）により、Ch1転送レート下限保障値を算出する。
Ch1転送レート下限保障値
＝  （１フィールド残りのデータサイズ）／（Ch1 DMA 転送終了猶予時間）
・・・（６）
【００９９】
ステップＳ３７において、Ch1情報算出部１０３は、内蔵するカウンタに基づいて、１フィールド分のデータ転送が終了したか否かを判定する。ステップＳ３７において、１フィールド分のデータ転送がまだ終了していないと判定された場合、処理は、ステップＳ３４に戻り、それ以降の処理が繰り返される。すなわち、ステップＳ３４乃至Ｓ３６の算出処理は、１フィールド分のデータ転送が終了するまで繰り返される。
【０１００】
ステップＳ３７において、フィールド分のデータ転送が終了したと判定された場合、ステップＳ３８において、Ch1情報算出部１０３は、内蔵するタイマをストップさせて、時間計測を終了させて、内蔵するカウンタのカウントを終了させる。
【０１０１】
ステップＳ３９において、Ch1情報算出部１０３は、Ch1カウンタ１０５のカウントに基づいて、すべてのデータ転送が終了したか否かを判定する。ステップＳ３９において、すべてのデータ転送がまだ終了していないと判定された場合、処理は、ステップＳ３１に戻り、次の１フィールド分のデータに対して、それ以降の処理が繰り返される。
【０１０２】
ステップＳ３９において、すべてのデータ転送が終了したと判定された場合、Ch1転送レート下限保障値算出処理は終了される。
【０１０３】
［Ch0 DMA処理の例］
次に、図９のフローチャートを参照して、DMAコントローラ７２により行われるCh0 DMA処理について説明する。
【０１０４】
例えば、PCIe IPコア７１を介して、パーソナルコンピュータ５２のデバイスドライバからのCh0方向のDMAキックが入力される。転送制御部１０１は、その通知をPCIe用DDRポート７３に出力する。これに対応して、PCIe用DDRポート７３は、撮像装置からのデータが格納されるDDR SDRAM６２のSDI Rx バッファ８１から、DDRコントローラ７４を介して、パーソナルコンピュータ５２に転送されるデータを読み出し、Ch0バッファに一時的に蓄積する。そして、PCIe用DDRポート７３は、Ch0バッファにデータがある程度溜まると、書き込み準備完了の通知とともにデータをWrコマンド要求部１０６に出力してくる。
【０１０５】
Wrコマンド要求部１０６は、ステップＳ５１において、PCIe用DDRポート７３の書き込み準備が完了するまで待機しており、PCIe用DDRポート７３の書き込み準備が完了したと判定した場合、処理は、ステップＳ５２にすすむ。
【０１０６】
Wrコマンド要求部１０６は、ステップＳ５２において、PCIe用DDRポート７３からの書き込みコマンド要求(Wr Cmd Req)を発行し、ステップＳ５３において、その書き込みコマンド要求(Wr Cmd Req)をWr コマンドキュー１０８に積む（キューイングする）。なお、この書き込みコマンド要求には、データが付加されている場合もある。
【０１０７】
ステップＳ５４において、転送制御部１０１は、Wr コマンドキュー１０８またはRd コマンドキュー１０９を監視し、アクセス制御処理を行う。このアクセス制御処理は、図１１を参照して詳しく後述される。
【０１０８】
ステップＳ５４の処理により、Wr コマンドキュー１０８の書き込みコマンド要求が受け付けられた場合には、書き込みコマンド要求パケット(Wr Cmd Req Packet)が発行されて、書き込みコマンドアック(Wr Cmd Ack)がCh0カウンタ１０４に出力される。
【０１０９】
ステップＳ５５において、Ch0カウンタ１０４は、書き込みコマンドアック(Wr Cmd Ack)を受けたか否かを判定する。ステップＳ５５において、書き込みコマンドアック(Wr Cmd Ack)を受けたと判定された場合、Ch0カウンタ１０４は、ステップＳ５６において、SDI Rx バッファ８１からの転送済みデータサイズをカウントする。
【０１１０】
ステップＳ５５において、書き込みコマンドアック(Wr Cmd Ack)を受けたと判定されなかった場合、ステップＳ５６はスキップされ、処理は、ステップＳ５７に進む。
【０１１１】
ステップＳ５７において、Wrコマンド要求部１０６は、Ch0カウンタ１０４のカウント値に基づいて、転送サイズ分の処理が終了したか否かを判定する。ステップＳ５７において、転送サイズ分の処理が終了していないと判定された場合、処理は、ステップＳ５１に戻り、それ以降の処理が繰り返される。
【０１１２】
ステップＳ５７において、転送サイズ分の処理が終了したと判定された場合、Ch0 DMA処理は終了される。
【０１１３】
［Ch1 DMA処理の例］
次に、図１０のフローチャートを参照して、DMAコントローラ７２により行われるCh1 DMA処理について説明する。
【０１１４】
例えば、PCIe IPコア７１を介して、パーソナルコンピュータ５２のデバイスドライバからのCh1方向のDMAキックが入力される。転送制御部１０１は、その通知をPCIe用DDRポート７３に出力する。PCIe用DDRポート７３は、DDR SDRAM６２のSDI Tx バッファ８２に書き込まれるデータが一時的に蓄積されるCh1バッファを監視している。PCIe用DDRポート７３は、転送制御部１０１からの通知に対応して、Ch1バッファのデータが所定値以下であれば、読み出し準備完了の通知を、Rdコマンド要求部１０７に出力してくる。
【０１１５】
Rdコマンド要求部１０７は、ステップＳ７１において、PCIe用DDRポート７３の読み出し準備が完了するまで待機しており、PCIe用DDRポート７３の読み出し準備が完了したと判定した場合、処理は、ステップＳ７２にすすむ。
【０１１６】
Rdコマンド要求部１０７は、ステップＳ７２において、PCIe用DDRポート７３からの読み出しコマンド要求(Rd Cmd Req)を発行し、ステップＳ７３において、その読み出しコマンド要求(Rd Cmd Req)をRd コマンドキュー１０９に積む（キューイングする）。
【０１１７】
ステップＳ７４において、転送制御部１０１は、Wr コマンドキュー１０８またはRd コマンドキュー１０９を監視し、アクセス制御処理を行う。このアクセス制御処理は、図１１を参照して詳しく後述される。
【０１１８】
ステップＳ７４の処理により、Rd コマンドキュー１０９の読み出しコマンド要求が受け付けられた場合には、読み出しコマンド要求パケット(Rd Cmd Req Packet)が発行されて、読み出しコマンドアック(Rd Cmd Ack)がCh1カウンタ１０５に出力される。
【０１１９】
ステップＳ７５において、Ch1カウンタ１０５は、読み出しコマンドアック(Rd Cmd Ack)を受けたか否かを判定する。ステップＳ５５において、読み出しコマンドアック(Rd Cmd Ack)を受けたと判定された場合、Ch1カウンタ１０５は、ステップＳ７６において、SDI Tx バッファ８２への転送済みデータサイズをカウントする。
【０１２０】
ステップＳ７５において、読み出しコマンドアック(Rd Cmd Ack)を受けたと判定されなかった場合、ステップＳ７６はスキップされ、処理は、ステップＳ７７に進む。
【０１２１】
ステップＳ７７において、Rdコマンド要求部１０７は、Ch1カウンタ１０５のカウント値に基づいて、転送サイズ分の処理が終了したか否かを判定する。ステップＳ７７において、転送サイズ分の処理が終了していないと判定された場合、処理は、ステップＳ７１に戻り、それ以降の処理が繰り返される。
【０１２２】
ステップＳ７７において、転送サイズ分の処理が終了したと判定された場合、Ch1 DMA処理は終了される。
【０１２３】
［アクセス制御処理の例］
次に、図１１のフローチャートを参照して、図９のステップＳ５４または図１０のステップＳ７４におけるアクセス制御処理について説明する。
【０１２４】
転送制御部１０１は、Wr コマンドキュー１０８およびRd コマンドキュー１０９を監視し、ステップＳ９１において、少なくともどちらか一方のキューにコマンド要求(Cmd Req)があると判定するまで待機している。ステップＳ９１において、少なくともどちらか一方のキューにコマンド要求(Cmd Req)があると判定された場合、処理は、ステップＳ９２に進む。
【０１２５】
ステップＳ９２において、転送制御部１０１は、コマンド要求(Cmd Req)は書き込みまたは読み出しのうちの片方のみであるか否かを判定する。ステップＳ９２において、コマンド要求(Cmd Req)が片方のみであると判定された場合、処理は、ステップＳ９３に進む。
【０１２６】
ステップＳ９３において、転送制御部１０１は、対応するキューのコマンド要求(Cmd Req)を受け付け、対応するコマンド要求パケット（Rd or Wr Cmd Req Packet）を発行し、PCIe IP コア７１に出力する。
【０１２７】
これに対応して、PCIe IP コア７１は、パーソナルコンピュータ５２に対して、コマンド要求パケットに対応するパケットを送信する。
【０１２８】
一方、Wr コマンドキュー１０８およびRd コマンドキュー１０９の両方にコマンド要求(Cmd Req)があると判定された場合、処理は、ステップＳ９４に進む。
【０１２９】
ステップＳ９４において、転送制御部１０１は、Ch0転送レート下限保障値とCh1転送レート下限保障値を比較し、Ch0転送レート下限保障値の方が値が大きいか否かを判定する。このCh0転送レート下限保障値は、図５のステップＳ１６においてCh0情報算出部１０２により逐次算出される情報である。また、Ch1転送レート下限保障値は、図７のステップＳ３６においてCh1情報算出部１０３により逐次算出される情報である。
【０１３０】
ステップＳ９４において、Ch0転送レート下限保障値の方が値が大きいと判定された場合、処理は、ステップＳ９５に進む。ステップＳ９５において、転送制御部１０１は、さらに、Ch0転送レート下限保障値が基準値以上であるか否かを判定する。
【０１３１】
この基準値は、例えば、片側単方向Chが実行転送レート未満（そのシステム（パーソナルコンピュータ５２）での片側DMAの最高転送レート未満）になるように予め設定される。
【０１３２】
ステップＳ９５において、Ch0転送レート下限保障値が基準値以上であると判定された場合、処理は、ステップＳ９６に進む。すなわち、この場合、同期系の破たんが差し迫っている状態であるといえる。転送制御部１０１は、ステップＳ９６において、Wr コマンドキュー１０８に積まれている書き込みコマンド要求を連続的に受け付け、対応する書き込みコマンド要求パケット(Wr Cmd Req Packet)を連続的に発行し、PCIe IP コア７１に出力する。これに対応して、PCIe IP コア７１は、パーソナルコンピュータ５２に対して、書き込みコマンド要求パケットに対応するパケットを連続的に送信する。
【０１３３】
また、このとき、転送制御部１０１は、受け付けた書き込みコマンド要求に対応する書き込みコマンドアックを、Ch0カウンタ１０４に連続的に出力する。
【０１３４】
ステップＳ９５において、Ch0転送レート下限保障値が基準値以上ではないと判定された場合、処理は、ステップＳ９７に進む。転送制御部１０１は、ステップＳ９７において、Wr コマンドキュー１０８に積まれている書き込みコマンド要求を受け付け、対応する書き込みコマンド要求パケット(Wr Cmd Req Packet)を発行し、PCIe IP コア７１に出力する。これに対応して、PCIe IP コア７１は、パーソナルコンピュータ５２に対して、書き込みコマンド要求パケットに対応するパケットを送信する。
【０１３５】
また、このとき、転送制御部１０１は、受け付けた書き込みコマンド要求に対応する書き込みコマンドアックを、Ch0カウンタ１０４に出力する。
【０１３６】
ステップＳ９４において、Ch0転送レート下限保障値の方が値が小さいと判定された場合、処理は、ステップＳ９８に進む。ステップＳ９８において、転送制御部１０１は、さらに、Ch1転送レート下限保障値が基準値以上であるか否かを判定する。
【０１３７】
ステップＳ９８において、Ch1転送レート下限保障値が基準値以上であると判定された場合、処理は、ステップＳ９９に進む。すなわち、この場合も、同期系の破たんが差し迫っている状態であるといえる。転送制御部１０１は、ステップＳ９９において、Rd コマンドキュー１０９に積まれている読み出しコマンド要求を連続的に受け付け、対応する読み出しコマンド要求パケット(Rd Cmd Req Packet)を連続的に発行し、PCIe IP コア７１に出力する。これに対応して、PCIe IP コア７１は、パーソナルコンピュータ５２に対して、読み出しコマンド要求パケットに対応するパケットを連続的に送信する。
【０１３８】
また、このとき、転送制御部１０１は、受け付けた読み出しコマンド要求に対応する読み出しコマンドアックを、Ch1カウンタ１０５に連続的に出力する。
【０１３９】
ステップＳ９８において、Ch1転送レート下限保障値が基準値以上ではないと判定された場合、処理は、ステップＳ１００に進む。転送制御部１０１は、ステップＳ１００において、Rd コマンドキュー１０９に積まれている読み出しコマンド要求を受け付け、対応する読み出しコマンド要求パケット(Rd Cmd Req Packet)を発行し、PCIe IP コア７１に出力する。これに対応して、PCIe IP コア７１は、パーソナルコンピュータ５２に対して、読み出しコマンド要求パケットに対応するパケットを送信する。
【０１４０】
また、このとき、転送制御部１０１は、受け付けた読み出しコマンド要求に対応する読み出しコマンドアックを、Ch1カウンタ１０５に出力する。
【０１４１】
以上のように、SDI Rxのバッファのステータス情報と、SDI Inputの垂直同期信号が監視されてそれらに基づいて転送レート下限保障値が算出される。また、SDI Txのバッファのステータス情報と、SDI Outputの垂直同期信号が監視されてそれらに基づいて転送レート下限保障値が算出される。そして、両方の転送レート下限保障値が比較され、その値が大きい方を優先的して、PCIe  DMA  のアクセス制御（アービトレーション）が行われる。
【０１４２】
したがって、同期系信号をPCIe経由で双方向DMA転送する場合に、入出力状況を監視し、優先する方向の転送レート下限を保証した状態で、バスアービトレーションを行うことができる。
【０１４３】
これにより、SDI InputおよびSDI Outputの破たんを防ぐことができる。すなわち、SDIなどの同期系の状態に応じて、動的に最適化したアービトレーションを実現することができる。
【０１４４】
その結果、Ch0方向とCh1方向のDMA転送レートも、SDIなどの同期系の状態に応じて、動的に最適化され、PCIeの双方向同時DMAの転送レートの低下を抑制することができる。したがって、Ch0方向とCh1方向のDMA転送レートの非対称性は緩和され、アプリケーションによってはPCIeボードの機能的な制限となることが抑制される。
【０１４５】
なお、上記説明においては、同期系入出力インタフェースとしてSDIを用いて説明したが、撮像装置などとのインタフェースは、同期系であれば、SDIに限定されない。
【０１４６】
上述した一連の処理は、ハードウエアにより実行することもできるし、ソフトウエアにより実行することもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、コンピュータにインストールされる。ここで、コンピュータには、専用のハードウエアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な汎用のパーソナルコンピュータなどが含まれる。
【０１４７】
図１２は、上述した一連の処理をプログラムにより実行するコンピュータのハードウエアの構成例を示すブロック図である。
【０１４８】
コンピュータにおいて、CPU(Central Processing Unit)３０１、ROM(Read Only Memory)３０２、RAM(Random Access Memory)３０３は、バス３０４により相互に接続されている。
【０１４９】
バス３０４には、さらに、入出力インタフェース３０５が接続されている。入出力インタフェース３０５には、入力部３０６、出力部３０７、記憶部３０８、通信部３０９、およびドライブ３１０が接続されている。
【０１５０】
入力部３０６は、キーボード、マウス、マイクロフォンなどよりなる。出力部３０７は、ディスプレイ、スピーカなどよりなる。記憶部３０８は、ハードディスクや不揮発性のメモリなどよりなる。通信部３０９は、ネットワークインタフェースなどよりなる。ドライブ３１０は、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリなどのリムーバブルメディア３１１を駆動する。
【０１５１】
以上のように構成されるコンピュータでは、CPU３０１が、例えば、記憶部３０８に記憶されているプログラムを入出力インタフェース３０５およびバス３０４を介してRAM３０３にロードして実行することにより、上述した一連の処理が行われる。
【０１５２】
コンピュータ（CPU３０１）が実行するプログラムは、例えば、パッケージメディア等としてのリムーバブルメディア３１１に記録して提供することができる。また、プログラムは、ローカルエリアネットワーク、インターネット、デジタル放送といった、有線または無線の伝送媒体を介して提供することができる。
【０１５３】
コンピュータでは、プログラムは、リムーバブルメディア３１１をドライブ３１０に装着することにより、入出力インタフェース３０５を介して、記憶部３０８にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部３０９で受信し、記憶部３０８にインストールすることができる。その他、プログラムは、ROM３０２や記憶部３０８に、あらかじめインストールしておくことができる。
【０１５４】
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
【０１５５】
本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【符号の説明】
【０１５６】
５１  PCIe ボード，  ５２  パーソナルコンピュータ，  ６１  データ転送回路，  ６２  DDR DRAM，  ７２  DMAコントローラ，  ７３  PCIe用DDRポート，  ７４  DDRコントローラ，  ７６  SDI 出力モジュール，  ７７  SDI入力モジュール，  ８１  SDI RX バッファ，  ８２  SDI TX バッファ，  １０１  転送制御部，  １０２  Ch0情報算出部,  １０３  Ch1情報算出部，  １０４  Ch0カウンタ，  １０５  Ch1カウンタ，  １０６  Wr コマンド要求部，  １０７  Rdコマンド要求部，  １０８  Wr コマンドキュー，  １０９  Rd コマンドキュー
【図１】
2011048542.tif 000003
【図２】
2011048542.tif 000004
【図３】
2011048542.tif 000005
【図４】
2011048542.tif 000006
【図５】
2011048542.tif 000007
【図６】
2011048542.tif 000008
【図７】
2011048542.tif 000009
【図８】
2011048542.tif 000010
【図９】
2011048542.tif 000011
【図１０】
2011048542.tif 000012
【図１１】
2011048542.tif 000013
【図１２】
2011048542.tif 000014