(57)【要約】【課題】ＣＰＵに対する負荷を軽減して高速にストリームデータを変換することが可能な、新規かつ改良された技術を提供する。【解決手段】ストリーム処理装置１０は、記憶領域としてリングバッファを有するストリームバッファ１０３と、ストリームデータをストリームバッファのリングバッファに順次に詰めるデータ保持メモリ機能部１０６と、ストリームバッファ１０３のリングバッファに詰められたストリームデータに対する処理が１または複数の命令の組み合わせとして記述された処理プログラムを保持する命令ＲＡＭ１０４と、命令ＲＡＭ１０４によって保持されている処理プログラムから１または複数の命令を順次に取得して解釈し、解釈した結果に従ってストリームバッファ１０３のリングバッファに詰められたストリームデータに対する処理を行うシーケンサ部１０２と、を備える。【選択図】図１
2011023799.tif 000002
【特許請求の範囲】
【請求項１】
記憶領域としてリングバッファを有するストリームバッファと、
ストリームデータを保持するとともに保持している前記ストリームデータを前記リングバッファの終端に至るまで詰めると前記リングバッファの先頭から前記リングバッファのデータの先頭に至るまで前記ストリームデータの続きを詰めることによって前記ストリームバッファの前記リングバッファに順次に詰めるデータ保持メモリ機能部と、
前記ストリームバッファの前記リングバッファに詰められた前記ストリームデータに対する処理が１または複数の命令の組み合わせとして記述された処理プログラムを保持する命令保持部と、
前記命令保持部によって保持されている前記処理プログラムから前記１または複数の命令を順次に取得して解釈し、解釈した結果に従って前記ストリームバッファの前記リングバッファに詰められた前記ストリームデータに対する処理を行うシーケンサ部と、
を備える、ストリーム処理装置。
【請求項２】
前記１または複数の命令は、
前記ストリームバッファの前記リングバッファに詰められた前記ストリームデータの先頭からの距離によって処理対象のデータ位置を特定したものである、
請求項１に記載のストリーム処理装置。
【請求項３】
前記命令保持部に前記処理プログラムを書き込むとともに前記命令保持部内の前記処理プログラムの開始位置を前記シーケンサ部に通知する処理制御部をさらに備え、
前記シーケンサ部は、
前記処理制御部から通知された前記処理プログラムの開始位置から前記１または複数の命令を順次に取得する、
請求項１に記載のストリーム処理装置。
【請求項４】
前記ストリームデータを前記ストリームバッファの前記リングバッファに順次に詰める旨を示す処理対象情報を前記データ保持メモリ機能部に通知する処理制御部をさらに備え、
前記データ保持メモリ機能部は、
前記処理対象情報に従い、前記ストリームデータを前記ストリームバッファの前記リングバッファに順次に詰め、
前記ストリームバッファは、
前記シーケンサ部によって処理された処理済みデータを前記データ保持メモリ機能部に書き戻す、
請求項１に記載のストリーム処理装置。
【請求項５】
前記１または複数の命令のそれぞれは、
前記ストリームデータ内のデータの出力、置換、前記ストリームデータの前記シーケンサ部内のレジスタまたはメモリへのコピー、前記ストリームデータに対するデータ追加および前記ストリームデータの破棄のうちのいずれか１つを規定するものである、
請求項１に記載のストリーム処理装置。
【請求項６】
前記シーケンサ部と前記ストリームバッファとの間のデータ幅よりも、前記データ保持メモリ機能部と前記ストリームバッファとの間のデータ幅が大きい、
請求項１に記載のストリーム処理装置。
【請求項７】
前記ストリームバッファは、
前記データ保持メモリ機能部によって詰められた前記ストリームデータの先頭と終端とを前記シーケンサ部に通知し、
前記シーケンサ部は、
前記ストリームデータに対する処理を行うに際して、前記命令を解釈して得た処理対象のデータ位置が、前記ストリームバッファから通知された前記ストリームデータの先頭から終端に至るまでにないと判断した場合には、前記データ保持メモリ機能部によって所定量の前記ストリームデータが前記ストリームバッファの前記リングバッファに書き込まれるまで待機する、
請求項１に記載のストリーム処理装置。
【請求項８】
前記シーケンサ部および前記データ保持メモリ機能部からアクセス可能である多目的バッファをさらに備え、
前記シーケンサ部および前記データ保持メモリ機能部は、
前記多目的バッファを、一時的にストリームデータを保持するために使用する、
請求項１に記載のストリーム処理装置。
【請求項９】
記憶領域としてリングバッファを有するストリームバッファと、ストリームデータを保持するとともに保持している前記ストリームデータを前記リングバッファの終端に至るまで詰めると前記リングバッファの先頭から前記リングバッファのデータの先頭に至るまで前記ストリームデータの続きを詰めることによって前記ストリームバッファの前記リングバッファに順次に詰めるデータ保持メモリ機能部と、前記ストリームバッファの前記リングバッファに詰められた前記ストリームデータに対する処理が１または複数の命令の組み合わせとして記述された処理プログラムを保持する命令保持部と、シーケンサ部とを備えるストリーム処理装置の前記シーケンサ部により、
前記命令保持部によって保持されている前記処理プログラムから前記１または複数の命令を順次に取得して解釈するステップと、
解釈した結果に従って前記ストリームバッファの前記リングバッファに詰められた前記ストリームデータに対する処理を行うステップと、
を含む、ストリーム処理方法。
【請求項１０】
ホスト装置とストリーム処理装置とを備えるストリーム処理システムであって、
前記ホスト装置は、
記録媒体からストリームデータを読み出し、読み出した前記ストリームデータを前記ストリーム処理装置に送信するホスト制御部を有し、
前記ストリーム処理装置は、
記憶領域としてリングバッファを有するストリームバッファと、
前記ホスト装置から前記ストリームデータを受信して保持するとともに保持している前記ストリームデータを前記リングバッファの終端に至るまで詰めると前記リングバッファの先頭から前記リングバッファのデータの先頭に至るまで前記ストリームデータの続きを詰めることによって前記ストリームバッファの前記リングバッファに順次に詰めるデータ保持メモリ機能部と、
前記ストリームバッファの前記リングバッファに詰められた前記ストリームデータに対する処理が１または複数の命令の組み合わせとして記述された処理プログラムを保持する命令保持部と、
前記命令保持部によって保持されている前記処理プログラムから前記１または複数の命令を順次に取得して解釈し、解釈した結果に従って前記ストリームバッファの前記リングバッファに詰められた前記ストリームデータに対する処理を行うシーケンサ部と、
を有する、ストリーム処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストリーム処理装置、ストリーム処理方法およびストリーム処理システムに関する。より詳細には、ビデオストリームのストリーム変換処理・検索処理を高速に行うハードウェア・システムに関する。
【背景技術】
【０００２】
日本のデジタル放送においては圧縮・伸張方式の国際標準規格であるＭＰＥＧ（Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）の中でも通信システムや放送システムへの適用が考慮されているＭＰＥＧ２システムが規格として採用されている。その中でも伝送時に誤りの発生する環境での伝送・蓄積に適したＭＰＥＧ２−ＴＳ（ＭＰＥＧ２  トランスポートストリーム）と呼ばれる形式が用いられている。
【０００３】
近年、テレビ放送をハードディスク等の記録媒体に記録し、後から視聴を行うことが可能なテレビ放送受信機やパーソナルコンピュータ等のデジタル機器が多く出回っており、中でもＢＤディスク（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）を採用したレコーダ・プレーヤやＤＬＮＡ（Ｄｉｇｉｔａｌ  Ｌｉｖｉｎｇ  Ｎｅｔｗｏｒｋ  Ａｌｌｉａｎｃｅ）規格に対応したホームネットワーク内でのコンテンツ共有が可能な機器等の普及が拡大を見せている。
【０００４】
ＤＬＮＡは必須コーデックにＭＰＥＧ２−ＴＳを持ち、またＢＤフォーマットもＭＰＥＧ２−ＴＳですべてのストリームデータ（単に、「ストリーム」ともいう。）を記録する方式であるが、放送されたＭＰＥＧ２−ＴＳ形式のストリームデータを録画し、蓄積したストリームデータをＢＤ等の他のメディアに移動させる、もしくはネットワークで配信するためには、各媒体・方式に応じたストリームデータの変換・付加情報の抽出が必要である。
【０００５】
例えば、蓄積したストリームデータを家庭内ネットワークに配信する場合においては、１８８バイトのＭＰＥＧ２−ＴＳパケットに４バイトのタイムスタンプを付加して１９２バイトのタイムスタンプ付きＴＳに加工する処理が必要である。また、例えば、蓄積した放送ストリームをＢＤフォーマットに変換する場合においては、放送局が送信してくる複数のプログラムが多重化された状態のＴＳから特定のプログラムのみのＴＳを抜き出し、Ｐａｒｔｉａｌ  ＴＳ化する必要がある。これにはＰＡＴ，ＰＭＴを解析し、所望プログラムに該当するＰＩＤ以外のＰＩＤを有するＴＳを削除する必要がある。同様に、ＢＤフォーマットに変換するためには、テンポラリＢＤフォーマットのＣｌｉｐ情報のためにＰＭＴ，ＰＣＲ等を検索・解析してＥＰ＿ｍａｐを生成する必要があり、またタイムスタンプ付きＴＳの３２ｂｉｔタイムスタンプを３０ｂｉｔタイムスタンプに変換するといった処理が必要である。
【０００６】
ストリームデータに対して処理を行う技術には様々なものが開示されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００８−０１００３７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
近年、技術革新および消費者の要求の増大により、ビデオ映像の高画質化が進んでいる。映像の高画質化に伴い映像データ量が増大しており、データ変換・抽出に伴う機器の処理負荷は増大する傾向にある。一般的に家電製品に搭載されるＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）は処理能力が低く、増大したデータ量を持つ長時間のストリームに対し、すべてのデータをチェックしながらデータを変換・抽出していく処理は高負荷であるといえる。従って、家庭内で使われるＢＤレコーダ等の組み込み機器において上記のような変換・抽出を行った場合、ＣＰＵを占有してしまい、例えば、ＧＵＩや並行して行われる再生・録画処理等の負担となるという問題点がある。
【０００９】
また処理をリアルタイム、もしくはリアルタイムでなくとも一度蓄積したデータの形式を変換するために高速にデータ処理が必要となる場合、より処理負荷の問題は大きい。ＣＰＵを高速化することで、解決可能ではあるが、録画機器等の組み込み機器においてはコストが大きな問題となる。また、上記にも述べたとおり処理の種類は膨大となり、それぞれに対して専用のハードウェアを用意することもまたコストの増大となり、さらには規格の追加等や改善等の変更に対応することが非常に困難となる。
【００１０】
そこで、本発明は、上記問題に鑑みてなされたものであり、本発明の目的とするところは、ＣＰＵに対する負荷を軽減して高速にストリームデータを変換することが可能な、新規かつ改良された技術を提供しようとするものである。
【課題を解決するための手段】
【００１１】
上記課題を解決するために、本発明のある観点によれば、記憶領域としてリングバッファを有するストリームバッファと、ストリームデータを保持するとともに保持しているストリームデータをリングバッファの終端に至るまで詰めるとリングバッファの先頭からリングバッファのデータの先頭に至るまでストリームデータの続きを詰めることによってストリームバッファのリングバッファに順次に詰めるデータ保持メモリ機能部と、ストリームバッファのリングバッファに詰められたストリームデータに対する処理が１または複数の命令の組み合わせとして記述された処理プログラムを保持する命令保持部と、命令保持部によって保持されている処理プログラムから１または複数の命令を順次に取得して解釈し、解釈した結果に従ってストリームバッファのリングバッファに詰められたストリームデータに対する処理を行うシーケンサ部と、を備える、ストリーム処理装置が提供される。
【００１２】
１または複数の命令は、ストリームバッファのリングバッファに詰められたストリームデータの先頭からの距離によって処理対象のデータ位置を特定したものであるとしてもよい。
【００１３】
ストリーム処理装置は、命令保持部に処理プログラムを書き込むとともに命令保持部内の処理プログラムの開始位置をシーケンサ部に通知する処理制御部をさらに備え、シーケンサ部は、処理制御部から通知された処理プログラムの開始位置から１または複数の命令を順次に取得することとしてもよい。
【００１４】
ストリーム処理装置は、ストリームデータをストリームバッファのリングバッファに順次に詰める旨を示す処理対象情報をデータ保持メモリ機能部に通知する処理制御部をさらに備え、データ保持メモリ機能部は、処理対象情報に従い、ストリームデータをストリームバッファのリングバッファに順次に詰め、ストリームバッファは、シーケンサ部によって処理された処理済みデータをデータ保持メモリ機能部に書き戻すこととしてもよい。
【００１５】
１または複数の命令のそれぞれは、ストリームデータ内のデータの出力、置換、ストリームデータのシーケンサ部内のレジスタまたはメモリへのコピー、ストリームデータに対するデータ追加およびストリームデータの破棄のうちのいずれか１つを規定するものであるとしてもよい。
【００１６】
シーケンサ部とストリームバッファとの間のデータ幅よりも、データ保持メモリ機能部とストリームバッファとの間のデータ幅が大きいこととしてもよい。
【００１７】
ストリームバッファは、データ保持メモリ機能部によって詰められたストリームデータの先頭と終端とをシーケンサ部に通知し、シーケンサ部は、ストリームデータに対する処理を行うに際して、命令を解釈して得た処理対象のデータ位置が、ストリームバッファから通知されたストリームデータの先頭から終端に至るまでにないと判断した場合には、データ保持メモリ機能部によって所定量のストリームデータがストリームバッファのリングバッファに書き込まれるまで待機することとしてもよい。
【００１８】
ストリーム処理装置は、シーケンサ部およびデータ保持メモリ機能部からアクセス可能である多目的バッファをさらに備え、シーケンサ部およびデータ保持メモリ機能部は、多目的バッファを、一時的にストリームデータを保持するために使用することとしてもよい。
【発明の効果】
【００１９】
以上説明したように本発明によれば、ＣＰＵに対する負荷を軽減して高速にストリームデータを変換することが可能である。
【図面の簡単な説明】
【００２０】
【図１】第１実施形態に係るストリーム処理システムの構成を示す図である。
【図２】第１実施形態に係るストリーム処理システムの処理の流れを示すシーケンス図である。
【図３】第１実施形態に係るストリーム処理機能部の処理の流れを示すフローチャートである。
【図４】第１実施形態に係るストリームバッファに詰められるストリームデータの一例を示す模式図である。
【図５】第２実施形態に係るストリーム処理システムの構成を示す図である。
【発明を実施するための形態】
【００２１】
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。なお、説明は以下の順序で行う。
【００２２】
１．    第１実施形態
１−１．  本実施形態の概要
１−２．  ストリーム処理システムの構成
１−３．  ストリーム処理システムの処理の流れ
１−４．  ストリーム処理機能部の処理の流れ
１−５．  ストリームバッファに詰められるストリームデータの一例
２．    第２実施形態
２−１．  ストリーム処理システムの構成
３．    変形例
４．    まとめ
【００２３】
＜１．第１実施形態＞
本発明の第１実施形態について説明する。
【００２４】
［１−１．本実施形態の概要］
本実施形態では、ＣＰＵに負荷をかけることなく高速にストリーム変換を行うための小規模なハードウェアとしてストリーム処理装置とストリーム処理装置を用いたストリーム処理システムを用いて上記問題を解決する。以下において、括弧で括られた符号と括弧で括られていない符号とが並べられて記述されている場合、括弧で括られていない符号は実施形態によって区別しないものに対して付されたものであり、括弧で括られた符号は実施形態によって区別するものに対して付されたものである。本発明の他の実施形態についても同様とする。
【００２５】
本実施形態に係るストリーム処理装置は、一時的に検索置換処理対象のストリームデータを保持するストリームバッファと、ストリームバッファ内のストリームデータに対する検索・置換処理命令を保持する命令ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）（命令保持部）と、命令ＲＡＭ内の命令を解釈してストリームバッファ内のストリームデータに対する検索置換処理を行うシーケンサ部とを含んだストリーム処理機能部を持つ。ストリーム処理装置は、受け取ったストリームデータを変換・置換して出力することでストリームデータの変換を行う。
【００２６】
ストリームバッファ内の記憶領域がリングバッファ構成をとり、リングバッファに空きがある場合、ストリームバッファは、受け取ったストリームデータをリングバッファに順次詰めていき、リングバッファの終端部に到達したらリングバッファの先頭からリングバッファにあるストリームデータの先頭に至るまで詰めることが可能である。このような構成にすれば、ストリームデータに対する処理を行う際に必要となるストリーム処理装置内のバッファメモリ量を削減することが可能である。また、このような構成にすれば、命令ＲＡＭ内のプログラムは、ストリームバッファ内にあるストリームデータの位置をリングバッファのストリームデータの先頭位置からの距離によって認識することができ、これによってストリームデータのアドレス管理を簡易化することができる。
【００２７】
さらに、このような構成にすれば、ストリームデータのアドレス管理が簡易化されるため、プログラムの実装にかかるコストを低減させることが可能であり、多種のストリームデータに対して単一のハードウェアによって処理を行うことが可能である。また、ストリームデータのアドレス管理が簡易化されるため、ストリームデータを分割してハードウェアをタイムシェアリングすることによって、１つのストリームデータに対して同時に複数の処理を行うことが可能である。また、ストリーム処理装置、データ保持メモリ機能部、処理制御部を有するストリーム処理システムにおいて、ストリームデータに対する処理の種類に応じて命令ＲＡＭ内のプログラムを書き換えることで種類の異なる複数のストリーム処理（ストリームデータに対する処理）に対応することができる。また、命令ＲＡＭ内に複数の命令を書いておいて実行位置を変更することで種類の異なる複数のストリーム処理に対応することができる。
【００２８】
［１−２．ストリーム処理システムの構成］
図１は、本実施形態に係るストリーム処理システムの構成を示す図である。図１を参照して、本実施形態に係るストリーム処理システムの構成について説明する。
【００２９】
図１に示すように、本実施形態に係るストリーム処理システム１（１Ａ）は、ストリーム処理装置１０（１０Ａ）とホスト装置２０とを備えるものである。ストリーム処理装置１０（１０Ａ）とホスト装置２０とは、同一のまたは別個のＣＰＵによってプログラムが実行されることによって各装置の機能が実現される。ホスト装置２０は、例えば、Ｂｌｕ−ｒａｙ  Ｄｉｓｃ２０２を再生する機能を持つレコーダであるが、ストリーム処理装置１０（１０Ａ）に対してストリームデータに対する処理を実行させる機能を有するものであれば特に限定されるものではない。
【００３０】
ストリーム処理装置１０Ａは、ストリームサイズ・処理内容・処理プログラムの管理を行う処理制御部１００を備えるものである。ここで、ストリームサイズは、処理対象のストリームデータのサイズであり、処理プログラムは、各命令が実行順に並べられて記述されたプログラムであり、処理内容には、実行対象の処理プログラムの開始位置（以下、「処理プログラム開始位置」ともいう。）が含まれている。処理プログラム開始位置は、例えば、処理プログラムが命令ＲＡＭ１０４に記憶されている状態では、処理プログラム開始点に対応する命令ＲＡＭ１０４内における位置を識別するための情報（アドレス）によって特定されるものである。処理制御部１００は、ストリーム処理装置１０Ａ内の各ブロックに指示を出す機能をさらに備えるものである。また、ストリーム処理装置１０Ａは、ストリーム変換・抽出処理を行うストリーム処理機能部１０１（１０１Ａ）、処理対象のストリームデータを保持するデータ保持メモリ機能部１０６、各ブロック（例えば、処理制御部１００、ストリーム処理機能部１０１Ａ、データ保持メモリ機能部１０６等）を接続するシステムバス１０７を備えるものである。
【００３１】
ホスト装置２０とストリーム処理装置１０Ａとは、システムバス１０７、バスＩＦ（ＩｎｔｅｒＦａｃｅ）１０５を経由して接続されている。ホスト装置２０上のホスト制御部２０１が、例えば、Ｂｌｕ−ｒａｙ  Ｄｉｓｃ２０２やＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）２０３等の記録媒体内のストリームデータをストリーム処理装置１０Ａに渡し、ストリーム処理装置１０Ａが処理済みのストリームデータをホスト装置２０に書き戻すことでストリーム処理が行われる。以降において、ストリーム処理装置１０Ａがホスト装置２０からのストリームデータを受け取った後に、ストリームデータに対して任意のストリーム処理を行う手順について詳細に説明する。
【００３２】
ストリーム変換・抽出処理を行うストリーム処理機能部１０１Ａは、処理プログラムを保持する命令ＲＡＭ１０４と、処理プログラムに記述された命令を実行するシーケンサ部１０２と、ストリームデータの一時的な保持を行うストリームバッファ１０３とを備えるものである。
【００３３】
処理制御部１００は、システムバス１０７、バスＩＦ１０５を介して命令ＲＡＭ１０４に処理プログラムを書き込む。また、処理制御部１００は、システムバス１０７、バスＩＦ１０５を介してシーケンサ部１０２に、処理開始命令とストリームサイズと処理プログラムの開始位置とを含んだストリーム処理情報を通知する。
【００３４】
シーケンサ部１０２は、このストリーム処理情報を元に命令ＲＡＭ１０４から所望位置に書いてある命令を１つずつ順に読み込み、読み込んだ命令に従ってストリームバッファ１０３を操作する。これによってプログラムの意図に従ってストリームデータを処理する。シーケンサ部１０２は、例えば、このストリーム処理情報に含まれる処理プログラム開始位置から処理プログラムを読み込み、読み込んだ処理プログラムに従って命令ＲＡＭ１０４から命令を１つずつ順に読み込む。
【００３５】
処理制御部１００は、処理対象のストリームデータがデータ保持メモリ機能部１０６にあるとき、データ保持メモリ機能部１０６に対し、指定サイズだけストリーム処理機能部１０１Ａに対して書き込みを行う旨を指示するための処理対象情報を通知する。
【００３６】
データ保持メモリ機能部１０６は、処理制御部１００からの処理対象情報を受け、データ保持メモリ機能部１０６に空きがある場合には、処理対象情報によって指定された指定サイズだけストリームデータを書き込む機能を持つ。また、データ保持メモリ機能部１０６は、処理済みのストリームデータをストリーム処理機能部１０１Ａから受け取り、保持する機能を持つ。
【００３７】
ストリーム処理機能部１０１Ａは、データ保持メモリ機能部１０６から入力されたストリームデータをストリームバッファ１０３に受け取る。ストリームバッファ１０３の記憶領域はリングバッファ構成をとり、リングバッファに空きがある場合、受け取ったストリームデータをリングバッファに順次詰めていき、リングバッファの終端部に到達したら先頭からストリームバッファ１０３のリングバッファのストリームデータの先頭に至るまで詰める。
【００３８】
ＭＰＥＧ２−ＴＳに代表されるストリーム形式のデータはパケット構造をとり、およそ全てのパケットが先頭から順に処理されることを期待するストリームデータの構造であるゆえ、おおむね１０パケット程度のデータをもつことで、解析・抽出に必要なデータを入手することが可能である。よって、ストリームバッファ１０３の記憶領域がリングバッファ構造をとることで、ストリーム処理時に必要とするストリーム処理装置１０Ａ内のバッファメモリ量を削減することができる。
【００３９】
また、ストリームバッファ１０３は、シーケンサ部１０２にストリームバッファ１０３が保持しているストリームデータの先頭を指し示すアドレスと終端を指し示すアドレスとを提示する。そのようにすれば、命令ＲＡＭ１０４内の処理プログラムは、ストリームバッファ１０３内におけるストリームデータの位置をリングバッファのストリームデータの先頭位置からの距離によって認識するような形式で記述されることとすればよい。これによって、ストリームデータのアドレス管理を容易にすることが可能である。また、これによって、ストリーム処理を行うための処理プログラムの実装のコストがさがり、多種のストリーム処理に単一のハードウェアで対応することが可能となる。
【００４０】
命令ＲＡＭ１０４内の命令は、例えば、ストリームバッファ１０３内のストリームデータに対し、ストリームデータの内容に応じて以下のように機能させることを示すものである。
・ストリームデータの一部または全部を指定されたバイト数だけ出力する機能
・ストリームデータの一部または全部を指定されたデータと置換する機能
・ストリームデータの一部または全部を指定されたバイト数だけシーケンサ部１０２内のレジスタまたはメモリにコピーする機能
・ストリームデータのうち命令によって指定された任意のデータを出力する機能
・ストリームバッファ１０３内のストリームデータを破棄する機能
【００４１】
シーケンサ部１０２が、上記の命令を解釈し、処理プログラムに従ってストリームバッファ１０３内のストリームデータを操作することでストリーム処理を行う。また、図示していないが、シーケンサ部１０２内には、一時的にストリームバッファ１０３から受け取ったストリームデータを保持したり、カウンタとして使用したりするためのレジスタ・メモリが存在するものとしてもよい。
【００４２】
また、当然のことながら、上記に限らず多様な命令を持つこととしてもよく、例えば、各命令にはビット単位のマスクがかけられてもかまわないし、各機能自体は任意に定義してかまわない。例えば、一般的な算術演算がストリームバッファ１０３内のメモリに対して行えてもよいし、命令ＲＡＭ１０４内の実行順を変化させる命令があってもよい。保存したシーケンサ部１０２内のレジスタ内のデータは、ストリームバッファ１０３の先頭アドレスからの相対値として利用してもよいし、出力バイト数や破棄バイト数として利用してもよい。また、命令ＲＡＭ１０４に書き込まれる処理プログラムは、１つの処理に関するものであってもよい。また、例えば、パーシャルＴＳ化とタイムスタンプ付加、ＰＣＲ抽出などといった複数の処理に関するプログラムをそれぞれ命令ＲＡＭ１０４内の別のアドレスに書き込み、それぞれの先頭アドレスをストリーム処理情報としてシーケンサ部１０２に渡すことで複数のプログラムを命令ＲＡＭ１０４内に保存してもよい。ストリームバッファ１０３とは別にバッファを設ける形態については、第２実施形態において説明する。
【００４３】
シーケンサ部１０２からのストリームバッファ１０３の操作はバイト単位で行えることとするのが好ましい。ＭＰＥＧ２−ＴＳパケットはアクセスの最小単位が１バイトであることを前提としたバイトバウンダリであるため、シーケンサ部１０２によるバイト単位での操作が可能であれば、上記のような、例えば、任意のデータを抽出する等の操作が容易に可能となる。これらを組み合わせて１つのプログラムを作り、任意の変換・抽出をストリームデータに対して行う。
【００４４】
また、ストリームバッファ１０３に対するデータ操作は１バイト単位で行われることが好ましいが、ストリームバッファ１０３からの出力は複数バイト、例えば、１６バイト単位で行われることとするのが好ましい。これにより、ＭＰＥＧ２−ＴＳといったストリームデータにおいて検索・置換による抽出が必要な箇所に対してはバイト単位でアクセスし、それ以外の例えばｍｐｅｇのペイロードに対してはそのまま手を加えずに書き戻す場合において、１６バイト単位の高速なデータ出力が可能となり、処理の高速化が可能となる。
【００４５】
［１−３．ストリーム処理システムの処理の流れ］
図２は、本実施形態に係るストリーム処理システムの処理の流れを示すシーケンス図である。図２を参照して（適宜図１参照）、本実施形態に係るストリーム処理システムの処理の流れについて説明する。
【００４６】
図２に示すように、初期状態として、データ保持メモリ機能部１０６に処理対象のストリームデータがあることを前提とする（ステップＳ１０１）。この処理対象のストリームデータとしては、例えば、処理制御部１００がＨＤＤ２０３やネットワークから入手してデータ保持メモリ機能部１０６に格納したものを使用することができる。また、例えば、シーケンサ部１０２による処理済みのストリームデータがデータ保持メモリ機能部１０６に入っている場合には、その処理済みのストリームデータを使用することができる。
【００４７】
処理制御部１００は、バスＩＦ１０５を介してストリーム処理機能部１０１Ａ内の命令ＲＡＭ１０４に所望の処理フローを記した処理プログラムを書き込むことで命令ＲＡＭ１０４をセットアップする（ステップＳ１０２）。処理プログラムは、処理対象のストリームデータがどのようなストリームデータであるかについて既知の状態で記述されたものであり、処理制御部１００内にあらかじめ用意されているものとする。
【００４８】
命令ＲＡＭ１０４内に処理プログラムの書き込みが完了したならば、同様に、処理制御部１００は、ストリーム処理機能部１０１内のシーケンサ部１０２に処理プログラムの開始位置・ストリームサイズ・処理開始命令をストリーム処理情報として通知する（ステップＳ１０３）。
【００４９】
ストリーム処理機能部１０１内のシーケンサ部１０２は、処理開始命令を受けることで指定位置（処理プログラムの開始位置）から命令ＲＡＭ１０４内の命令を１つずつ読み、読み込んだ命令を実行することでストリーム処理（ステップＳ１０６）を開始する。ストリーム処理（ステップＳ１０６）の詳細については後述する。
【００５０】
処理制御部１００は、データ保持メモリ機能部１０６に、データ保持メモリ機能部１０６のメモリ内の処理対象のストリームデータの位置とサイズとを処理対象情報として通知し、処理対象のストリームデータをストリーム処理機能部１０１に渡すように指示する（ステップＳ１０４）。データ保持メモリ機能部１０６は、通知された処理対象情報に基づき、ストリーム処理機能部１０１に対し、処理対象のストリームデータを書き込むことでストリームデータを渡す（ステップＳ１０５）。このときに渡されるストリームデータのストリームサイズは、ストリーム処理機能部１０１のハードウェアを占有できるのであればデータ保持メモリ機能部１０６のメモリサイズが許す限り大きくてもよい。また、ハードウェアを時間軸で分けて複数のプログラムで使用するようなマルチストリーム処理を考慮した場合、そのハードウェア使用の時間スケジュールに応じてストリームサイズを調整することもできる。
【００５１】
データ保持メモリ機能部１０６は、ストリームバッファ１０３のリングバッファの空きを確認し、書き込み可能なサイズに応じて、ストリームデータを書き込むものとする。ストリーム処理機能部１０１内のシーケンサ部１０２は、ストリーム処理が完了したストリームデータを、処理プログラムに書かれた命令に応じてデータ保持メモリ機能部１０６に渡す（書き戻す）（ステップＳ１０７）。また、シーケンサ部１０２は、通知されたストリーム処理情報のストリームサイズに応じ、ストリームバッファ１０３内のストリーム処理が完了したとき、処理完了通知を処理制御部１００に通知する（ステップＳ１０８）。
【００５２】
以上の処理を持って、任意のプログラムで処理された処理済みのストリームデータがデータ保持メモリ機能部１０６内に完成することとなり、システムフローが完了する（ステップＳ１０９）。
【００５３】
［１−４．ストリーム処理機能部の処理の流れ］
図３は、本実施形態に係るストリーム処理機能部の処理の流れを示すフローチャートである。図３を参照して（適宜図１参照）、本実施形態に係るストリーム処理機能部の処理の流れについて説明する。
【００５４】
ストリーム処理機能部１０１は、処理制御部１００から命令ＲＡＭ１０４内の処理プログラムの先頭アドレスや処理対象のストリームデータのストリームサイズ等のストリーム処理情報を受け取っている。図３に示すように、ストリーム処理機能部１０１のシーケンサ部１０２は、処理制御部１００からストリーム処理情報を受け取り、処理を開始する。
【００５５】
シーケンサ部１０２は、命令ＲＡＭ１０４内の処理プログラムの開始位置から命令を１つ取得する（ステップＳ２０１）。シーケンサ部１０２は、取得した命令がストリームバッファ１０３を参照する命令であるか否かを判断する（ステップＳ２０２）。シーケンサ部１０２は、取得した命令がストリームバッファ１０３を参照しないと判断した場合には（ステップＳ２０２で「Ｎｏ」）、ステップＳ２０５に進む。
【００５６】
シーケンサ部１０２は、取得した命令がストリームバッファ１０３を参照すると判断した場合には（ステップＳ２０２で「Ｙｅｓ」）、取得した命令の処理対象のストリームデータがストリームバッファ１０３にあるか否かを判断する（ステップＳ２０３）。ここで、シーケンサ部１０２は、例えば、取得した命令に示されているリングバッファのストリームデータの先頭からのオフセットで示されるストリームバッファ参照位置がストリームバッファ１０３にある場合に、取得した命令の処理対象のストリームデータがストリームバッファ１０３にあると判断する。ストリーム処理機能部１０１は、取得した命令の処理対象のストリームデータがストリームバッファ１０３にないと判断した場合には（ステップＳ２０３で「Ｎｏ」）、データ保持メモリ機能部１０６から渡されたストリームデータをストリームバッファ１０３に書き込んで（ステップＳ２０４）、ステップＳ２０３に戻る。
【００５７】
ステップＳ２０４では、ストリーム処理機能部１０１は、データ保持メモリ機能部１０６からのストリームデータの入力を待ち、ストリームデータが入力された場合には、入力されたストリームデータをストリームバッファ１０３が受け取り、受け取ったストリームデータをストリームバッファ１０３に順次詰めていく。このとき、ストリームバッファ１０３に空きがある限りストリームデータを詰めてもよいし、所定量のストリームデータを書き込んだ後、ステップＳ２０３に戻ってもよい。また、ストリーム処理機能部１０１は、必要量のストリームデータを受け取るまで待ってもよい。本実施形態では、所定量のストリームデータをストリームバッファ１０３に書き込んだ後、ステップＳ２０３に戻り、ストリームバッファ１０３内の処理対象のストリームデータの有無を判断することとする。
【００５８】
シーケンサ部１０２は、取得した命令の処理対象のストリームデータがストリームバッファ１０３にあると判断した場合には（ステップＳ２０３で「Ｙｅｓ」）、命令を実行して（ステップＳ２０５）、処理プログラムが終了したか否かを判断する（ステップＳ２０６）。シーケンサ部１０２は、例えば、全ての命令が実行された時点で処理プログラムが終了したと判断する。また、シーケンサ部１０２は、例えば、処理制御部１００からの指示があった際等の他のタイミングで処理を終了することとしてもよい。
【００５９】
シーケンサ部１０２は、処理プログラムが終了していないと判断した場合には（ステップＳ２０６で「Ｎｏ」）、ステップＳ２０１に戻り、命令ＲＡＭ１０４内の次の命令が参照される。シーケンサ部１０２は、処理プログラムが終了したと判断した場合には（ステップＳ２０６で「Ｙｅｓ」）、シーケンサ部１０２の処理を終了する。
【００６０】
以上の処理を持って、ステップＳ１０７（図２参照）で示した、ストリーム処理機能部１０１によるストリームデータ処理フローが完了する。
【００６１】
［１−５．ストリームバッファに詰められるストリームデータの一例］
図４は、第１実施形態に係るストリームバッファに詰められるストリームデータの一例を示す模式図である。図４を参照して（適宜図１参照）、ストリームバッファに詰められるストリームデータの一例について説明する。なお、図４には、リングバッファの先頭から終端までのサイズをＸバイトとし、ストリームバッファ１０３が、リングバッファの右側を前方、リングバッファの左側を後方として、前方から後方に向けてストリームデータを順次に詰めていく例について示している。また、図４には、リングバッファがいっぱいになるまでストリームデータが書き込まれてからストリームバッファ１０３がリングバッファのストリームデータをデータ保持メモリ機能部１０６に書き戻す例について示すが、書き戻すタイミングはこれに限定されるものではない。例えば、リングバッファがいっぱいになる前に任意のサイズのストリームデータをデータ保持メモリ機能部１０６に書き戻すこととしてもよい。その場合には、例えば、図４において、ストリームバッファ１０３は、任意のサイズのストリームデータをデータ保持メモリ機能部１０６に書き戻した後、ストリームデータの先頭を任意のサイズ分だけリングバッファの後方にずらした位置を新たなストリームデータの先頭として認識するとともに、新たなストリームデータの先頭をシーケンサ部１０２に通知する。
【００６２】
前述したように、ストリーム処理装置１０は、ストリームバッファ１０３と、データ保持メモリ機能部１０６と、命令ＲＡＭ１０４と、シーケンサ部１０２とを少なくとも備える。ストリームバッファ１０３は、記憶領域としてリングバッファを有する。前述したように、データ保持メモリ機能部１０６は、ストリームデータを保持している。
【００６３】
図４に示すように、データ保持メモリ機能部１０６は、保持しているストリームデータをストリームバッファ１０３のリングバッファの終端に至るまで詰めるとリングバッファの先頭からリングバッファのデータの先頭に至るまでストリームデータの続きを詰めることによってストリームバッファ１０３のリングバッファに順次に詰める（例えば、図４に示した時刻ｔ１〜ｔ４参照）。
【００６４】
命令ＲＡＭ１０４は、前述したように、ストリームバッファ１０３のリングバッファに詰められたストリームデータに対する処理が１または複数の命令の組み合わせとして記述された処理プログラムを保持する。シーケンサ部１０２は、前述したように、命令ＲＡＭ１０４によって保持されている処理プログラムから１または複数の命令を順次に取得して解釈し、解釈した結果に従ってストリームバッファ１０３のリングバッファに詰められたストリームデータに対する処理を行う。図４に示した時刻ｔ５に示した例では、ストリームデータの先頭からＹバイト目を置換する処理について示している。
【００６５】
１または複数の命令は、ストリームバッファ１０３のリングバッファに詰められたストリームデータの先頭からの距離によって処理対象のデータ位置を特定したものであるとしてもよい。図４の時刻ｔ５に示した例では、ストリームデータの先頭からＹバイト目の距離にあるデータを置換する旨を示す命令がシーケンサ部１０２によって実行された場合について示している。
【００６６】
ストリーム処理装置１０は、命令ＲＡＭ１０４に処理プログラムを書き込むとともに命令ＲＡＭ１０４内の処理プログラムの開始位置をシーケンサ部１０２に通知する処理制御部１００をさらに備えることとしてもよい。その場合、シーケンサ部１０２は、処理制御部１００から通知された処理プログラムの開始位置から１または複数の命令を順次に取得する。
【００６７】
処理制御部１００は、ストリームデータをストリームバッファ１０３のリングバッファに順次に詰める旨を示す処理対象情報をデータ保持メモリ機能部１０６に通知し、データ保持メモリ機能部１０６は、処理対象情報に従い、ストリームデータをストリームバッファ１０３のリングバッファに順次に詰める。ストリームバッファ１０３は、シーケンサ部１０２によって処理された処理済みデータをデータ保持メモリ機能部１０６に書き戻すこととしてもよい（例えば、図４に示した時刻ｔ６参照）。
【００６８】
１または複数の命令のそれぞれは、ストリームデータ内のデータの出力、置換、ストリームデータのシーケンサ部１０２内のレジスタまたはメモリへのコピー、ストリームデータに対するデータ追加およびストリームデータの破棄のうちのいずれか１つを規定するものであるとすることができる。
【００６９】
データ保持メモリ機能部１０６とストリームバッファ１０３との間のデータ幅はシーケンサ部１０２とストリームバッファ１０３との間のデータ幅よりも大きいこととすることができる。このようにすることで、ストリームデータの破棄または出力の速度を上げることができる。
【００７０】
ストリームバッファ１０３は、データ保持メモリ機能部１０６によって詰められたストリームデータの先頭と終端とをシーケンサ部１０２に通知することとしてもよい。その場合には、シーケンサ部１０２は、ストリームデータに対する処理を行うに際して、命令を解釈して得た処理対象のデータ位置が、ストリームバッファから通知されたストリームデータの先頭から終端に至るまでにあるか否かを判断する。シーケンサ部１０２は、処理対象のデータ位置がストリームデータの先頭から終端に至るまでにないと判断した場合（例えば、図４に示した時刻ｔ１〜ｔ３参照）には、データ保持メモリ機能部１０６によって所定量のストリームデータがストリームバッファ１０３のリングバッファに書き込まれるまで待機することとしてもよい（例えば、図４に示した時刻ｔ４参照）。
【００７１】
以上に示した本実施形態によれば、ＣＰＵに負荷をかけることなく高速にストリーム変換を行うための小規模なハードウェアとしてストリーム処理装置１０とストリーム処理装置１０とを備えたストリーム処理システム１を用いて、主に、組み込み機器におけるストリーム変換・抽出の負荷を軽減することができる。また、プログラマブルな命令ＲＡＭ１０４を用いることで単一のハードウェアで複数の処理を低コストで実現する。以上が、本発明の第１実施形態に関する説明である。
【００７２】
＜２．第２実施形態＞
本発明に係る第２実施形態について説明する。図５は、第２実施形態に係るストリーム処理システムの構成を示す図である。
【００７３】
図５に示すように、第２実施形態に係るストリーム処理システム１Ｂは、ストリーム処理機能部１０１Ｂが多目的バッファ１０８を持つ点において、第１実施形態に係るストリーム処理システム１Ａと異なる。
【００７４】
多目的バッファ１０８は、ストリームバッファ１０３と並列にシーケンサ部１０２ならびにデータ保持メモリ機能部１０６の両方からアクセス可能なバッファである。シーケンサ部１０２やデータ保持メモリ機能部１０６は、ストリームバッファ１０３内のデータ操作だけでは処理しきれない場合に、多目的バッファ１０８を一時的なストリームデータ保持のために用いてもよい。多目的バッファ１０８は、命令ＲＡＭ１０４内の命令によってアクセスされ、ストリームバッファ１０３に対するものと同等の操作が命令によって可能であることが望ましい。また、多目的バッファ１０８の記憶領域は、ストリームバッファ１０３のようにリングバッファ構造をとってもよいし、単なるデュアルポートＲＡＭとしてアドレスを指定してアクセスするものであってもよい。
【００７５】
＜３．変形例＞
なお、添付図面を参照しながら本発明の好適な実施形態について説明したが、本発明は係る例に限定されないことは言うまでもない。当業者であれば、特許請求の範囲に記載された範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
【００７６】
＜４．まとめ＞
第１実施形態によれば、ＣＰＵに負荷をかけることなく高速にストリーム変換を行うための小規模なハードウェアとしてストリーム処理装置とストリーム処理装置を用いたストリーム処理システムを用いて主に、組み込み機器におけるストリーム変換・抽出の負荷を軽減することができる。また、プログラマブルな命令ＲＡＭを用いることで単一のハードウェアで複数の処理を低コストで実現することができる。
【００７７】
第１実施形態に係るストリーム処理装置は、一時的に検索置換処理対象のストリームを保持するストリームバッファとバッファ内のデータに対する検索・置換処理命令を保持する命令ＲＡＭと、命令ＲＡＭ内の命令を解釈してバッファ内のストリームに対する検索置換処理を行うシーケンサ部とを備えるストリーム処理機能部を持つ。ストリーム処理機能部は、受け取ったストリームデータを変換・置換して出力することでストリームの変換を行う。
【００７８】
ストリームバッファの記憶領域がリングバッファ構成をとり、ストリームバッファに空きがある場合、ストリーム処理機能部は、受け取ったストリームデータをストリームバッファに順次詰めていき、ストリームバッファの終端部に到達したら先頭からストリームバッファのデータの先頭に至るまで詰める。このような構成によって、ストリーム処理時に必要とするストリーム処理装置内のバッファメモリ量を削減することができる。また、命令ＲＡＭ内のプログラムは、ストリームバッファ内のストリームデータ位置をリングバッファのストリームデータの先頭位置からの距離で認識することでストリームデータのアドレス管理を容易にすることができる。
【００７９】
これにより、プログラムの実装のコストがさがり、多種のストリーム処理に単一のハードウェアでの対応が可能となる。同時に複数の処理を実施する場合においてもストリームを分割して処理することでハードウェアをタイムシェアリングすることにより実現することができる。また、ストリーム処理装置、データ保持メモリ機能部、処理制御部を有するストリーム処理システムにおいて、処理の種類に応じて命令ＲＡＭ内のプログラムを書き換え、または複数の命令を書いておいて実行位置を変更することで、種類の異なる複数のストリーム処理に対応することができる。
【００８０】
第２実施形態によれば、第１実施形態によって奏する効果に加え、シーケンサ部やデータ保持メモリ機能部が、ストリームバッファ内のデータ操作だけでは処理しきれない場合に、多目的バッファを一時的なデータ保持のために用いることができるという効果を奏する。
【符号の説明】
【００８１】
１      ストリーム処理システム
１０（１０Ａ，１０Ｂ）  ストリーム処理装置
２０    ホスト装置
１００  処理制御部
１０１（１０１Ａ，１０１Ｂ）  ストリーム処理機能部
１０２  シーケンサ部
１０４  命令ＲＡＭ（命令保持部）
１０３  ストリームバッファ
１０６  データ保持メモリ機能部
１０８  多目的バッファ
２０１  ホスト制御部
【図１】
2011023799.tif 000003
【図２】
2011023799.tif 000004
【図３】
2011023799.tif 000005
【図４】
2011023799.tif 000006
【図５】
2011023799.tif 000007