(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0010】
図1に、複数のチャネルから伝送されたデータをアイソクロナス転送によりネットワークへマルチキャストするデータ転送装置について、一般的な構成を示す。チャネルChA乃至ChDに対応するFIFOメモリFA乃至FDに、データが入力される。FIFOメモリFA乃至FDは、バッファとして機能する。FIFOメモリFA乃至FDは、格納済みのデータ量をパケット生成部PGに通知する。パケット生成部PGは、通知されたデータ量に応じて転送量を決定したうえでパケットを生成する。そして、パケット生成部PGは、FIFOメモリFA乃至FDからデータを取り出しパケットを生成した上で送信部SPへ出力する。
【0011】
図2に、本実施例における構成図を示す。本実施例における構成は、
図1に示す構成に加えて、データサイズ制御部DSCを備える。データサイズ制御部DSCは、FIFOメモリFA乃至FDから、各FIFOメモリに蓄積されているデータ量が入力される。また、データサイズ制御部DSCには、あらかじめ、データ転送装置について確保されている使用帯域、各チャネルの1サイクルあたりの最大転送量等、各種の制御用信号が後述するレジスタ等に格納されている。そして、データサイズ制御部はこれらの制御用信号をもとに、各チャネルに割り当てられる転送量を計算し、パケット生成部PGへと通知する。パケット生成部PGは、データサイズ制御部DSCにより通知された各チャネルに割り当てられる転送量に基づき、FIFOメモリFA乃至FDからデータを取り出し、送信部SPへパケットを出力する。
【0012】
次に、本実施例に係るデータサイズ制御部DSCの回路図を
図3に示す。
図3は、IEEE1394規格により定められるデータ転送について例示するものである。
データサイズ制御部DSCは、チャネルChA乃至ChD毎に、サイズ設定レジスタCLR(A)乃至CLR(D)を備える。サイズ設定レジスタCLR(A)乃至CLR(D)は、Channel_LIMIT(A)乃至Channel_LIMIT(D)を管理する。Channel_LIMIT(A)乃至Channel_LIMIT(D)は、各チャネルについて一回のサイクルで送ることの出来る最大のデータ量を示す値である。
【0013】
FIFO使用率演算器FUAは、FIFOメモリFA乃至FDに蓄積されているデータの量とFIFOメモリFA乃至FDに蓄積することの出来る最大のデータ量との比、すなわち各FIFOメモリの使用率を計算する。なお、FIFO使用率演算器FUAは、チャネルChA乃至ChDに応じたFIFO使用率演算器FUA(A)乃至FUA(D)を備える。
データサイズ制御部DSCの外部に存在するFIFOメモリより各FIFOメモリに蓄積されたデータ量を示す信号FIFO_DATA_SIZE A乃至FIFO_DATA_SIZE DがFIFO使用率演算器FUA(A)乃至FUA(D)に入力される。FIFO使用率演算器FUA(A)乃至FUA(D)は、FIFOメモリに蓄積されたデータ量を示す信号FIFO_DATA_SIZE A乃至FIFO_DATA_SIZE Dに基づき、各FIFOメモリの使用率を計算し、結果をフロー制御シーケンサFCSに出力する。
【0014】
フロー制御シーケンサFCSは、IEEE1394規格によって定められるCycleStartイベントを検出することで、動作を開始する。
【0015】
また、フロー制御シーケンサFCSは、処理チャネル決定ルールを定める設定レジスタCRより従うべき処理チャネル決定ルールを示す信号が入力される。本実施例では、処理チャネル決定ルールは以下の3種類を用いるとする。なお、処理チャネル決定ルールは組み合わせて使用することも可能である。
【0016】
処理チャネル決定ルール1は、FIFO使用率演算器FUA(A)乃至FUA(D)により得られた各チャネルChA乃至ChDに係るFIFOメモリFA乃至FDの使用率を相互に比較する。比較した結果、最もFIFO使用率が高いチャネルからデータ転送を行うとするルールである。FIFO使用率が最も高いチャネルからデータ転送を行うことで、全てのチャネルについて均等に、FIFOメモリが溢れることによるデータ転送の抜けを防止することができる。
【0017】
処理チャネル決定ルール2は、ユーザが設定した優先度の順にチャネルを処理するとするルールである。ユーザが優先度を高く設定するほど、そのチャネルのFIFOメモリが溢れる可能性は低くなる。よって、ユーザは重要なデータを送信するチャネルについて優先度を高くすることで、該チャネルについて、FIFOメモリからデータが溢れることによるデータ転送の抜けを防止することができる。ユーザによる優先度の設定は、一のチャネルについてのみ行うことも、全チャネルについて行うことも可能である。処理チャネル決定ルール2により優先度の設定の行われていないチャネルは、同等の優先度として取り扱ってもよいし、処理チャネル決定ルール1又は後述する処理チャネル決定ルール3に従って優先度を設定してもよい。
【0018】
処理チャネル決定ルール3は、処理チャネル決定ルール1に加えて、フラグを用いて、優先制御を行うとするルールである。転送タイミングにおいて転送の割り当てが行われていないチャネルに対してフラグZERO_FLAGをセットする。次回の転送タイミングにおいて、フラグZERO_FLAGがセットされているチャネルから優先的に転送が行われるようにすることで、チャネル間の公平性を担保する。
【0019】
また、処理チャネル決定ルールとして処理チャネル決定ルール2が選択されている場合は、各チャネルの優先度についての情報が設定レジスタCRに保持され、フロー制御シーケンサFCSへ入力される。
【0020】
フロー制御シーケンサFCSには、FIFO使用率演算器FUA(A)乃至FUA(D)より各FIFOメモリの使用率が入力され、該使用率に基づき処理するチャネルを選択する。また、フロー制御シーケンサFCSは、内部にフラグZERO_FLAGを管理するレジスタを有し、処理チャネル決定ルールとして処理チャネル決定ルール3が選択されているときに該レジスタを用いる。
【0021】
また、フロー制御シーケンサFCSには、外部に存在するFIFOメモリから、各FIFOメモリに蓄積されたデータ量を示す値であるFIFO_DATA_SIZE A乃至FIFO_DATA_SIZE Dが入力される。また、フロー制御シーケンサFCSには、チャネルChA乃至ChD各々において定められる一回の転送タイミングで転送可能な最大帯域Channel_LIMIT(A)乃至Channel_LIMIT(D)がサイズ設定レジスタCLRから入力される。フロー制御シーケンサFCSは、これら入力されたFIFO_DATA_SIZE A乃至FIFO_DATA_SIZE DならびにChannel_LIMIT(A)乃至(D)に基づいて、各チャネルのデータ転送量を決定する。
【0022】
また、フロー制御シーケンサFCSは、外部に存在するIEEE1394規格により定められるアイソクロナス・マネジャー配下のBANDWIDTH_AVAILABLEレジスタから、データ転送装置について確保した使用帯域を示す値を読み込む。フロー制御シーケンサFCSは、残りの転送量を保持するレジスタLSRに該確保した帯域を示す値を残りの転送量LIMIT_SIZEとして書き込む。そして、各チャネルについて転送量を割り当てる度、割り当てた量だけLIMIT_SIZEを減算する。
【0023】
フロー制御シーケンサFCSは、前記入力された信号群に基づき、
図4として後記するフローに従い、各チャネルの転送量を計算し、計算結果を転送量保持レジスタTSR(A)乃至TSR(D)に出力する。転送量保持レジスタTSR(A)乃至TSR(D)は入力された転送量をTRANS_SIZE(A)乃至(D)として保持する。転送量保持レジスタTSR(A)乃至TSR(D)は、外部に存在するパケット生成部PGへ各チャネルに割り当てられた転送量を通知する。
【0024】
本実施例にかかるデータサイズ制御部DSCが、各チャネルの転送量を決定するフローについて
図4に示す。CycleStart信号がフロー制御シーケンサFCSへ入力され、CycleStartイベントを検出することをトリガとしてデータサイズ制御部DSCは処理を開始する(S0)。ユーザは、装置の外部に存在するレジスタを設定することでデータ転送装置の占有する使用帯域値LIMIT_SIZEを決定する(S2)。
IEEE1394規格においては、アイソクロナス・リソース・マネジャー配下のBANDWIDTH_AVAILABLEレジスタが共通バスで割り当て可能なデータ量を示しており、この値の範囲内でLIMIT_SIZEを決定する。
データサイズ制御部DSCは、設定レジスタCRより値を読み込み、いずれの処理チャネル決定ルールに従うか判断を行う(S4)。データサイズ制御部DCSは、処理チャネル決定ルールに従い、処理チャネルを決定する(S6)。予め、ユーザは、処理チャネル決定ルール1乃至3のうちの何れかを選択する。
【0025】
処理チャネル毎に設定される一回の転送タイミングで転送が許される最大のサイズを規定するサイズ設定レジスタCLRに格納される値Channel_LIMITと、処理チャネルのFIFOメモリに格納されているデータサイズFIFO_DATA_SIZEを比較する(S8)。
【0026】
Channel_LIMITがFIFO_DATA_SIZEより大きい場合(S8:YES)は、次の送信タイミングにおいて転送するデータ量を保持する転送量レジスタTSRにFIFO_DATA_SIZEをTRANS_SIZEとして格納する(S10)。これにより、処理チャネルのFIFOメモリに蓄積されている全データを転送することが出来る。
【0027】
また、FIFO_DATA_SIZEがChannel_LIMIT以上の場合(S8:No)は、転送量レジスタTSRにChannel_LIMITをTRANS_SIZEとして格納する(S12)。これにより、一つのチャネルから転送される転送量をChannel_LIMIT以下に制限することができ、特定のチャネルによって使用帯域が独占されることを防ぐことが出来る。
【0028】
次の転送タイミングで送ることの出来る最大の転送量であるLIMIT_SIZEとTRANS_SIZEの比較を行う(S14)。
LIMIT_SIZEがTRANS_SIZE以上の場合(S14:Yes)は、LIMIT_SIZEに格納されている値からTRANS_SIZEに格納されている値を減算した値をLIMIT_SIZEに格納する(S16)。更に、処理チャネル決定ルールが処理チャネル決定ルール3である場合は、処理チャネルのフラグZERO_FRAGをクリアする(S18)。尚、処理チャネル決定ルールが決定ルール3ではない場合には処理(S18)はスキップする。そして、全チャネルのFIFOメモリにデータが残っているか否かをチェック(S20)し、残っていない場合は(S20:NO)、処理を終了する(S28)。TRANS_SIZEの割り当てが終わっていないチャネルが存在する場合は(S20:YES)、処理チャネル決定ルールに従って再度処理チャネルを決定する(S6)。このとき割り当てが済んでいるチャネルは選択の対象にならない。
【0029】
処理チャネルについて、TRANS_SIZEがLIMIT_SIZE以上の場合(S14:No)は、TRANS_SIZEにLIMIT_SIZEを代入する(S22)。LIMIT_SIZEは、初期状態(S2)ではネットワーク上の使用帯域の転送量の最大値を示す。その後処理が進み、チャネルのデータが割り当てられるたびに割り当てられた転送量を示すTRANS_SIZEの分だけ減算される(S16)。従って、この時点では、未だ割り当て可能な転送量の最大サイズを示すこととなる。TRANS_SIZEにLIMIT_SIZEを代入することにより、今回の転送タイミングで該当するチャネルにおける転送可能な転送量を示すこととなる、LIMIT_SIZE以上のデータ転送は、不可能だからである。
そして、処理が為されていないチャネルのTRANS_SIZEをゼロとする(S24)。次に、処理チャネル決定ルールが、決定ルール3の場合は、該TRANS_SIZEがゼロとされたチャネルのフラグZERO_FLAGをセットする(S26)。尚、処理チャネル決定ルールが処理チャネル決定ルール3ではない場合には処理(S26)はスキップする。以上で、処理を終了する(S28)。
以上のように全てのチャネルのTRANS_SIZEが決定されると、各チャネルでは割り当てられた転送量TRANS_SIZEに従ってFIFOメモリからデータを読出し、パケットを生成する。そして各パケットは送信部SPを経由してネットワークへと送信される。ここまでを1サイクルとして、以降、CycleStartイベントを検出するたびに上記フローを繰り返す。
【0030】
本実施例によるデータサイズ制御の具体例について
図5乃至
図10を用いて述べる。まず、IEEE1394バスにより転送するデータとして代表的な3種類のデータに関し、その転送量の時間変化について述べる。
【0031】
図5に示す様に音声データAudioは、時間により変動することなく、常に固定長のデータが転送され続けるという特徴がある。
【0032】
図6に示す様にビデオカメラにより撮像される映像データVideoは、フレーム単位でデータを転送するため、データ転送の間にブランキング期間が存在し、間歇的にデータが転送されるという特徴がある。
【0033】
図7に示す様にDVDやBlu−ray Disc(登録商標)のデータなど符号化技術によりエンコードされた符号化データTS1を転送する場合、そのデータ転送量は時間により変動するという特徴がある。
【0034】
また、
図5、
図6、
図7、各々に時刻T1、T2、T3を示す。時刻T1時においては、時刻によりデータ転送量が変動する映像データVideoおよびTS1のデータ転送量が最大となっている。時刻T2時においては、時刻によりデータ転送量が変動するTS1のデータ転送量がT1時に比べて減少している。時刻T3においては、時刻によりデータ転送量が変動するVideoのデータ転送量がゼロとなっている。
【0035】
音声データAudio、映像データVideo、符号化データTS1および符号化データTS1と同様の符号化データTS2のデータ量について、
図8に示す。音声データAudioは固定長である。映像データVideoのデータ量は、時刻T1、T2において最大値となり、時刻T3においてはゼロとなる。符号化データTS1のデータ量は、時刻T1において最大値となる。
【0036】
時刻T1、T2、T3において、パケットを送信する場合の各時刻におけるパケット構成について図示する。
図9に、FIFOメモリに入ってきた分だけデータの転送を行う従来の方式において、各時刻T1、T2、T3において転送される転送パケットを示す。従来の方式においては、時刻T1における転送量、すなわち、各チャネルの転送量のピーク値の和の転送帯域BW1を確保する必要がある。
【0037】
図10に本実施例に記載のデータサイズ制御部DSCを用いた場合のパケット構成について図示する。なお、処理チャネル決定ルールとして、処理チャネル決定ルール1を用いるとする。
【0038】
時刻T1において、データレートが平均的に高い映像データVIDEOおよび符号化データTS1はFIFOメモリの使用量が多いため、FIFO使用率が高くなる結果、優先的に帯域が確保されている。
図10の場合においては、FIFOメモリの使用量が少なく、FIFO使用率が低い符号化データTS2の一部と、音声データAudioについて帯域が割り当てられていない。
かかる場合においても、次の転送サイクル以降において、符号化データTS2および音声データAudioに係るFIFOメモリの使用量が増えた場合には、優先的に帯域を確保することができ、FIFO溢れを防止することができる。
【0039】
時刻T2において、符号化データTS1のデータレートが下がったために、符号化データTS1に係るFIFOの使用量が下がったため、音声データAudioおよび符号化データTS2のデータが転送される。
【0040】
時刻T3において、映像データVIDEOのデータがゼロとなるため、VIDEOの帯域は確保されない。よって、この期間は符号化データTS1およびTS2ならびに音声データAudioが転送される。
【0041】
本実施例に記載のデータサイズ制御部DSCを用いた場合、該転送装置について確保する必要がある転送帯域は
図10に示す転送帯域BW2である。転送帯域BW2は、従来技術において確保する必要がある転送帯域BW1と比して減少しており、該転送装置について確保する転送帯域を低減することが出来る。
【0042】
以下、本実施例の奏する作用効果について述べる。共通バスの全帯域は有限であり、アイソクロナス転送において、バスにつながる転送装置は、転送装置毎に転送帯域を確保する必要がある。従来、複数チャネルを送信する装置は、チャネル毎に、時間的に変動するデータ量の最大値の帯域を確保する必要があったが、本実施例では、時間的なデータ量の変動をチャネル間で分散させるため、最大値が平坦化されて余分な帯域確保が必要ない。従って、共通バスの帯域を他の装置に開放する事ができるため、有限な共通バスの帯域を有効に活用することができる。
【0043】
また、例えば、映像データをストリーミングする場合、転送データの一部でも欠損すると正常な映像再生ができなくなる。共通バスの初期化などで、一時的に転送ができない状態になった場合、転送装置のFIFOメモリがオーバーフローを起こすとこのようなデータ欠損が生じる場合がある。本実施例では、映像データのような転送データの欠損が生じると不具合がおこるデータに対し、帯域割り当ての優先度を高く設定する事で、オーバーフローを抑止することができる。
【0044】
確保した帯域以上の転送を行った場合、プロトコル違反になり、共通バス全体の通信機能に支障をきたすことになるため、確保した帯域以上のデータ転送を抑止するのは重要である。本実施例では、転送装置が確保した転送帯域の範囲内で、チャネル毎に帯域を分け合う事ができるため、確保した帯域以上のデータを転送する事が無い。さらに、いずれかのFIFOメモリに格納されたデータがオーバーフローしそうになった場合には、優先的に帯域を割り当ててオーバーフローを回避する。この場合も、確保した転送帯域の範囲内で転送帯域の割り当てを行うため、確保した帯域以上のデータを転送する事が無い。
【0045】
時間的にデータ量が変動する複数のデータを転送する場合、それぞれのチャネルを監視し、データ量の増減をチャネル間で分散する処理は、例えばIEEE1394規格においては、125μSという短い周期で実行するため、急激なデータ量の変動にも対応できる。
【0046】
転送チャネル決定ルール1では、FIFO使用率演算器FUA乃至FUDにより得られるFIFO使用率に基づき、転送帯域の割り当て処理を行うチャネルを決定する。これにより、全てのチャネルについて均等に、FIFOメモリの溢れを防止することが可能となり、データ転送の抜けを防止することが出来る。
【0047】
転送チャネル決定ルール2では、ユーザが任意の数のチャネルについて優先度を予め設定する。これにより、重要なデータを転送するチャネルについて、ユーザが優先度を高く設定することで、該チャネルに係るFIFOメモリの溢れを優先的に防止することが可能となり、該チャネルのデータ転送の抜けを防止することが出来る。
【0048】
転送チャネル決定ルール3では、転送帯域が割り当てられなかったチャネルについて、フラグZERO_FLAGをセットする。該フラグZERO_FLAGがセットされているチャネルについて、次回のCycleStartイベントで優先的に転送帯域の割り当てが行われるようにすることで、チャネル間の公平性を担保することが出来る。
【0049】
なお、本発明の趣旨を逸脱しない範囲内で種々の改良、変形が可能であることは言うまでもない。
【0050】
なお、FIFOメモリFA乃至FDは、データ保持部の一例である。また、IEEE1394によるデータ転送は、アイソクロナス転送の一例である。
【0051】
以下、発明の諸態様を付記としてまとめる。
【0052】
<付記1>
複数のデータをアイソクロナス転送により共通バスに転送するデータ転送装置であって、
前記データを保持するデータ保持部と、
前記共通バスへのデータ転送に先立ち前記データごとに転送帯域を割り当てる際、前記データに係る処理順序を決定する処理データ決定部と、
前記共通バスに確保されている許容帯域の範囲内で、前記処理データ部により決定された順に前記転送帯域を割り当てるフロー制御部と、を有することを特徴とするデータ転送装置。
<付記2>
前記処理データ決定部は、前記データのうち優先度の高い順に転送帯域を割り当てることを特徴とする付記1に記載のデータ転送装置。
<付記3>
前記フロー制御部により前記データに前記転送帯域が割り当てられる際、前記許容帯域から前記転送帯域を減じて更新する帯域更新部を有する事を特徴とする付記1又は2に記載のデータ転送装置。
<付記4>
前記データ保持部の保持するデータ量と前記データ保持部の保持可能な最大のデータ量との比を前記データ保持部の使用率として計算するデータ保持部使用率演算器と、
前記使用率が高いほど前記優先度を高く設定する処理データ決定部と、を備えることを特徴とする付記1乃至3の何れかに記載のデータ転送装置。
<付記5>
前記転送帯域の割り当てが行われないデータについて優先フラグをセットする優先フラグ管理部を備え、
該優先フラグがセットされたデータについて優先度を高く設定することを特徴とする付記1乃至4の何れかに記載のデータ転送装置。
<付記6>
前記優先度についての設定を保持する優先度保持レジスタを備えることを特徴とする付記1乃至5の何れかに記載のデータ転送装置。
<付記7>
前記優先度保持レジスタは、一又は複数のデータに係る前記優先度を予め定められた値に設定し、保持することを特徴とする付記1乃至6の何れかに記載のデータ転送装置。
<付記8>
複数のデータをアイソクロナス転送により共通バスに転送するデータ転送方法であって、
前記データを保持するステップと、
前記共通バスへのデータ転送に先立ち前記データごとに前記転送帯域を割り当てる際、前記データのうち優先度の高い順に、前記共通バスに確保されている許容帯域の範囲内で、前記転送帯域を割り当てるステップと、
前記転送帯域を割り当てるステップにより割り当てられた前記転送帯域を減じて前記許容帯域を更新するステップと、を有することを特徴とするデータ転送方法。