JP2014513883A - ビデオ符号化のためのキャッシュ方法およびシステム - Google Patents

ビデオ符号化のためのキャッシュ方法およびシステム Download PDF

Info

Publication number
JP2014513883A
JP2014513883A JP2013557813A JP2013557813A JP2014513883A JP 2014513883 A JP2014513883 A JP 2014513883A JP 2013557813 A JP2013557813 A JP 2013557813A JP 2013557813 A JP2013557813 A JP 2013557813A JP 2014513883 A JP2014513883 A JP 2014513883A
Authority
JP
Japan
Prior art keywords
reference data
cache
block
data block
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2013557813A
Other languages
English (en)
Other versions
JP6122782B2 (ja
Inventor
ブダガヴィ マドゥカル
Original Assignee
日本テキサス・インスツルメンツ株式会社
テキサス インスツルメンツ インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 日本テキサス・インスツルメンツ株式会社, テキサス インスツルメンツ インコーポレイテッド filed Critical 日本テキサス・インスツルメンツ株式会社
Publication of JP2014513883A publication Critical patent/JP2014513883A/ja
Application granted granted Critical
Publication of JP6122782B2 publication Critical patent/JP6122782B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/455Image or video data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

参照データキャッシュの参照データをキャッシュする方法が提供され、当該方法は、参照データキャッシュの参照データブロックのアドレスを受け取ることを含み(1100)、当該アドレスは、ピクセルからなる参照ブロック内の参照データブロックのx座標およびy座標と、ピクセルからなる複数の参照ブロックのどの参照ブロックが参照データブロックを含むかを特定する参照ブロック識別子とを含んでいる。方法はさらに、x座標からの所定数のビットおよびy座標からの所定数のビットを用いて、参照データキャッシュの一組のキャッシュラインのインデックスを計算し(1106)、インデックスおよび参照ブロック識別子を含むタグを用いて参照データブロックが一組のキャッシュラインにあるか否かを決定し(1108)、参照データブロックが一組のキャッシュラインにない場合は、参照データストレージから参照データブロックを取り出す(1110)ことを含む。

Description

ディジタルビデオ製品に対する需要は増え続けている。ディジタルビデオのアプリケーションのいくつかの例は、ビデオ通信、セキュリティおよび監視、工業オートメーション、およびエンターテイメント(例えば、DV、HDTV、衛星テレビ、セットトップボックス、インターネットビデオストリーミング、ディジタルカメラ、携帯電話、ビデオジュークボックス、ハイエンドディスプレイ、およびパーソナルビデオレコーダ)を含む。さらに、ビデオアプリケーションは、ハンドセットのより高度な計算能力、バッテリー技術の進歩、および高速ワイヤレス接続の結果、ますますモバイルになっている。
ビデオ圧縮は、ディジタルビデオ製品には必須の成功要因である。しかしながら、ビデオ圧縮の実行は、許容可能な性能のために相当量の計算や外部メモリバンド幅(badwidth)を必要とすることがある。外部メモリバンド幅の要求は、特に埋め込みシステムにおける高品位ビデオ符号化および復号化の性能の障害となり得る。多くの現在のビデオ圧縮の標準に不可欠な動き予測および動き補償は、外部メモリに記憶された参照フレームへの、繰り返され且つランダムなアクセスにより、外部メモリバンド幅を非常に要求する。従って、動き予測および動き補償のための外部メモリバンド幅の要求を減らす技術が必要とされる。
実施例が添付の図面を参照して説明される。
図1は、例示的なディジタルシステムのブロック図である。
図2は、例示的なビデオエンコーダのブロック図である。
図3は、例示的なビデオデコーダのブロック図である。
図4は、例示的なタイル状のアドレッシングスキームの一例を示す。
図5は、例示的な参照データキャッシュ部のブロック図である。 図6は、例示的な参照データキャッシュ部のブロック図である。
図7は、実験結果の表である。 図8Aは、実験結果の表である。 図8Bは、実験結果の表である。
図9Aは、例示的な移動符号化ブロックウィンドウ(moving coding block window)を表す。 図9Bは、例示的な移動符号化ブロックウィンドウを表す。
図10Aは、例示的な垂直方向の参照データキャッシュのブロック図である。 図10Bは、例示的な垂直方向の参照データキャッシュのブロック図である。 図10Cは、例示的な垂直方向の参照データキャッシュのブロック図である。 図10Dは、例示的な垂直方向の参照データキャッシュのブロック図である。
図11は、例示的な方法のフローチャートである。 図12Aは、例示的な方法のフローチャートである。 図12Bは、例示的な方法のフローチャートである。
図13は、例示的なディジタルシステムを表す。 図14は、例示的なディジタルシステムを表す。 図15は、例示的なディジタルシステムを表す。
概して、例示的な実施例は、動き予測および/または動き補償の間に参照フレームデータをキャッシュすることにより、ビデオシーケンスの符号化および/または復号化の間の外部メモリバンド幅の減少を提供する。いくつかの実施例では、水平方向のキャッシュが参照フレームデータをキャッシュするために提供され、また、いくつかの実施例では、水平および垂直方向のキャッシュの双方が提供される。いくつかの実施例では、時間的に直近の参照フレームからの参照フレームデータが、例えばH.264のref_idx=0のためにキャッシュされ、時間的により古い参照フレームからの参照フレームデータはキャッシュされない。いくつかの例では、参照フレームデータの要求されたブロックのx座標およびy座標に基づく新たなインデックススキームが用いられる。すなわち、参照フレームの要求されたブロックのx座標およびy座標からのビットが、キャッシュへのインデックスを計算するために用いられる。さらに、インデックススキームは、フレームの符号化タイプに応じて、すなわち、フレームがPフレーム(前のフレームから予測されたフレーム)であるか、Bフレーム(過去および将来の双方のフレームから予測されたフレーム)であるかに応じて、各々のフレームに適応され得る。
例えば、いくつかの実施例では、参照フレームの要求されたブロックのx座標およびy座標からのビットが、双方向アソシアティブキャッシュへのインデックスを計算するために用いられる。この新しいインデックススキームは、要求されたブロックのLSBアドレスを使用する従来型のキャッシュインデックススキームと比較すると、例えば幅が1024のフレームのような、大きな2のべき乗である幅を有するフレームのためのキャッシュスラッシングを減少させることがシミュレーションで示されている。さらに、いくつかの実施例では、双方向アソシアティブキャッシュのためのインデックス計算がフレームの符号化のタイプに応じて適合される。加えて、いくつかの実施例では、参照フレームの要求されたブロックのx座標およびy座標からのビットが、1方向アソシアティブキャッシュへの、すなわちダイレクトマップ方式のキャッシュへの、インデックスを計算するために用いられる。さらに、いくつかの実施例では、1方向アソシアティブキャッシュのためのインデックス計算がフレームの符号化のタイプに応じて適合される。
図1は、あるディジタルシステムの例示的な実施例を表す。このシステムは、符号化されたビデオシーケンスを通信チャネル116を介して送り先のディジタルシステム102へ伝送するソースディジタルシステム100を含む。ソースディジタルシステム100は、ビデオキャプチャ部104と、ビデオエンコーダ部106と、伝送部108とを含む。ビデオキャプチャ部104は、ビデオエンコーダ部106によって符号化されるべきビデオシーケンスを提供するよう構成される。ビデオキャプチャ部104は、例えば、ビデオカメラ、ビデオアーカイブ、もしくはビデオコンテンツプロバイダから提供されるビデオであり得る。いくつかの実施例では、ビデオキャプチャ部104は、ビデオシーケンスとして、もしくはライブビデオとコンピュータ処理のビデオとの合成として、コンピュータグラフィクスを生成し得る。
ビデオエンコーダ部106は、ビデオキャプチャ部104からビデオシーケンスを受け取り、伝送部108による送信のためにそれを符号化する。概して、ビデオエンコーダ部106は、フレームのシーケンスとして、ビデオキャプチャ部104からビデオシーケンスを受け取り、フレームを全フレームもしくはフレームの一部であり得る符号化単位に分割し、符号化単位をピクセルのブロックに分割し、かつこれらのブロックに基づいて符号化単位のビデオデータを符号化する。いくつかの実施例では、ビデオエンコーダ部106は、本明細書で述べられるような参照フレームデータのキャッシュを行うよう構成される。ビデオエンコーダ部106の一つもしくは複数の実施例の機能は、図2を参照して以下でより詳細に説明される。
伝送部108は、符号化されたビデオデータを通信チャネル116を介して送り先のディジタルシステム102に送る。通信チャネル116は、任意の通信媒体もしくは符号化されたビデオシーケンスの伝送に適した通信媒体の組み合わせであり得、例えば、有線/無線通信媒体、ローカルエリアネットワーク、もしくは有線エリアネットワーク等である。
伝送先のディジタルシステム102は、受信器部110と、ビデオデコーダ部112と、表示部114とを含む。受信器部110は、符号化されたビデオデータをソースディジタルシステム100から通信チャネル116を介して受け取り、符号化されたビデオデータを復号化のためにビデオデコーダ部112へ提供する。概して、ビデオデコーダ部112は、ビデオシーケンスのフレームを再構築するために、ビデオエンコーダ部106によって実行される符号化プロセスを反転する。いくつかの実施例では、ビデオデコーダ部112は、本明細書で述べられるような参照フレームデータのキャッシュを実行するよう構成される。ビデオデコーダ部112の一つもしくは複数の実施例の機能は、図3を参照して以下でより詳細に説明される。
再構築されたビデオシーケンスは、次いで、表示部114で表示され得る。表示部114は、例えばプラズマディスプレイ、液晶ディスプレイ(LCD)、発光ダイオード(LED)ディスプレイ等のような任意の適切なディスプレイ装置であり得る。
いくつかの実施例では、ソースディジタルシステム100は受信器部をも含み得、また、ビデオデコーダ部および/もしくは送り先のディジタルシステム102は、ビデオストリーミング、ビデオ放送、およびビデオ電話のための双方向のビデオシーケンスの伝送のための伝送部およびビデオエンコーダ部を含む。さらに、ビデオエンコーダ部は、ビデオシーケンスを符号化するときに、本明細書で述べられるような参照フレームデータキャッシュを実行し得、他方で、符号化されたビデオシーケンスを受け取るビデオデコーダ部は、本明細書で述べられるような参照フレームデータキャッシュを実行せず、逆の場合もまた同じである。さらに、ビデオエンコーダ部と、ビデオエンコーダ部によって符号化されたビデオシーケンスを受け取るビデオデコーダ部とは、双方が同じ方法で参照データキャッシュを実行しないようにしてもよい。例えば、ビデオエンコーダ部は、本明細書で述べられる一つもしくは複数の実施例における双方向アソシアティブ参照データキャッシュを実行し得、他方で、受信側のビデオデコーダ部は、本明細書で述べられる一つもしくは複数の実施例に従った1方向のアソシアティブ参照データキャッシュを実行し得る。
ビデオエンコーダ部106およびビデオデコーダ部112は、一つもしくは複数のビデオ圧縮規格に従って符号化および復号化を実行し得る。その規格とは、例えば、MPEG‐1、MPEG‐2やMPEG‐4といったムービング・ピクチャー・エキスパーツ・グループ(MPEG)のビデオ圧縮規格や、H.263やH.264などのITU‐Tビデオ圧縮規格、米国映画テレビ技術者協会(SMPTE)の421MビデオCODEC規格(通称、“VC‐1”と呼ばれる)、中国のオーディオビデオコーディング規格ワークグループ(通称、“AVS”と呼ばれる)により定義されるビデオ圧縮規格等である。ビデオエンコーダ部106およびビデオデコーダ部112は、ソフトウェア、ファームウェア、ハードウェアの適切な組み合わせで実装され得、例えば、一つもしくは複数のディジタル信号プロセッサ(DSP)、マイクロプロセッサ、ディスクリートロジック、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)等である。
図2は、一つもしくは複数の実施例による、例えば図1のビデオエンコーダ106のようなビデオエンコーダを示す。図2のビデオエンコーダでは、符号化のための入力フレーム200が例えばマクロブロックのような符号化ブロックに分割され、当該符号化ブロックは動き予測部220の一つの入力として、イントラ予測部224の一つの入力として、結合器202(例えば、加算器や減算器のようなものである)の正入力へ提供される。さらに、特に図示しないが、各々の入力フレームのための予測モード、すなわちインター予測またはイントラ予測、が選択されて、モード選択部およびエントロピーエンコーダ234へ提供される。
フレーム記憶部240は、埋め込まれたデコーダにより発生された参照フレームデータを記憶する。参照フレームデータは、一つもしくは複数の前に符号化および復号化された符号化ブロックを、すなわち再構築された符号化ブロックを含み得る。さらに、参照フレームデータが、複数の前に符号化されたフレームのために記憶され得る。具体的には、いくつかのビデオ圧縮規格では、複数の参照フレームがフレーム記憶部240に記憶され得、かつ動き予測および動き補償に用いられ得る。例えば、H.264は、動き予測および動き補償のために最大16個の参照フレームの使用を可能にする。いくつかの実施例では、フレーム記憶部240は、外部メモリ、すなわちオフチップメモリである。さらに、一つもしくは複数の実施例では、フレーム記憶部240はタイル状のメモリであり、すなわち、タイル状のアドレッシングスキームを用いてアクセスされる。任意の適切なタイル状のアドレッシングスキームが、フレーム記憶部240に用いられ得る。
参照データキャッシュ部218は、フレーム記憶部240と、動き予測部220と、動き補償部222との間にキャッシュメモリを提供する。具体的には、動き予測部220または動き補償部222が参照フレームデータを必要とするときに、参照データキャッシュ部218は、参照データキャッシュ部218に含まれるキャッシュメモリから、もしくは、要求された参照フレームがキャッシュメモリに記憶されていない場合フレーム記憶部240から、必要とされる参照フレームデータを要求する部に提供する。参照データキャッシュ部218の一つもしくは複数の実施例の機能は、図4ないし図15を参照して以下でより詳細に説明される。
動き予測部220は、動き予測情報を、動き補償部222およびエントロピーエンコーダ234へ提供する。具体的には、動き予測部220は、符号化コストに基づき最適な動きベクトル/予測モードを選択するために、参照フレームデータを用いて複数の一時的な予測モードに基づく符号化ブロックのテストを実行する。予測モードをテストするために、動き予測部220は、符号化ブロックを、予測モードのブロックサイズに応じた予測ブロックに分割し得る。動き予測部220は、選択された一つまたは複数の動きベクトル(MV)と選択された予測モードとを動き補償部222へ提供し、かつ選択された動きベクトル(MV)をエントロピーエンコーダ234へ提供する。動き補償部222は、動き補償されたインター予測ブロックと選択された一時的な予測モードとを含む動き補償されたインター予測情報を選択スイッチ226へ提供する。インター予測ブロックの符号化コストはモード選択部にも提供される。
イントラ予測部224は、イントラ予測ブロックと対応する空間予測モードとを含むイントラ予測情報を選択スイッチ226に提供する。すなわち、イントラ予測部224は空間予測を実行し、そこでは、符号化コストに基づくイントラ予測ブロックを発生させるための最適な空間予測モードを選択するために、バッファ228からのフレームの、前に符号化された隣接するブロックを用いて、複数の空間予測モードに基づくテストが符号化ブロック上で実行される。空間予測モードをテストするために、イントラ予測部224は、符号化ブロックを、予測モードのブロックサイズに応じた予測ブロックへ分割し得る。具体的に示されないが、イントラ予測ブロックの符号化コストはモード選択部にも提供される。
選択スイッチ226は、ブロック間の差分距離と、モード選択部により提供されたフレーム予測モードとに基づいて、動き補償部222からの動き補償されたインター予測ブロックか、イントラ予測部224からのイントラ予測ブロックかを選択する。選択スイッチ226の出力は、すなわち、予測された予測ブロックは、結合器202の負入力と遅延部230とに提供される。遅延部230の出力は、もう一つの結合器(すなわち、加算器)238に提供される。結合器202は、現在の符号化ブロックの現在の予測ブロックから予測された予測ブロックを減算し、残差予測ブロックを変換部204へ提供する。結果として生じる残差予測ブロックは、元の予測ブロックと予測された予測ブロックとのピクセル値の差を量子化する一組のピクセルの差分値である。
変換部204は、残差予測値を変換係数へ変換するために、例えば離散コサイン変換により、残差予測ブロックのブロック変換を実行し、変換係数を出力する。変換部204からの変換係数は、量子化された変換係数を出力する量子化部206へ提供される。ブロック変換が残差信号のエネルギーを周波数領域へ再分配するので、量子化された変換係数はスキャン部208によりラスタースキャンの順序で取り出され、そして例えば、より重要度の高い係数から始まり、より重要度の低い係数が後に続くように、重要度により配列される。ヘッダ情報とともにスキャン部208を介して提供された、順序付けされた量子化変換係数は、エントロピーエンコーダ234によって符号化され、エントロピーエンコーダ234は、伝送または記憶用の圧縮されたビットストリーム236を提供する。エントロピーエンコーダ234により実行されるエントロピー符号化は、例えば、コンテキスト適応型可変長符号化(CAVLC)、コンテキスト適応型二値算術符号化(CABAC)、ランレングス符号化等のような任意の適切なエントロピー符号化技術であり得る。
どのエンコーダの内部にも、内蔵されたデコーダがある。いずれの準拠するデコーダも圧縮されたビットストリームからイメージを再構築するよう期待されるので、内蔵されたデコーダは、同じユーティリティをビデオエンコーダに提供する。再構築された入力の認識は、ビデオエンコーダに、後に続くフレームを構成するよう適切な残差エネルギーを伝送させる。再構築された入力、すなわち参照フレームデータ、を決定するために、スキャン部208を介して提供された、順序付けされた量子化変換係数は、逆スキャン部210によってそれらの元の変換後の配列に戻される。逆スキャン部210の出力は逆量子化部212に提供され、逆量子化部212は、予測された変換情報を出力し、すなわち変換部204からの変換結果の予測された、もしくは再構築されたバージョンを出力する。予測された変換情報は逆変換部214へ提供され、逆変換部214は、残差予測ブロックの再構築されたバージョンを表す、予測された残差情報を出力する。再構築された残差予測ブロックは、結合器238へ提供される。
結合器238は、フィルタされない再構築された予測ブロックを発生させるために、遅延された選択予測ブロックを再構築された残差予測ブロックに加算し、これは、再構築されたフレーム情報の一部となる。再構築されたフレーム情報は、バッファ228を介してイントラ予測部224へ、かつフィルタ部216へ提供される。フィルタ部216は、再構築されたフレーム情報をフィルタし、フィルタされた再構築された符号化ブロックを、すなわち参照フレームデータをフレーム記憶部240へ提供するインループフィルタである。
図3は、一つもしくは複数の実施例による、例えばビデオデコーダ112といったビデオデコーダのブロック図を示す。図3のビデオデコーダでは、エントロピー復号化部300はエントロピー符号化されたビデオビットストリームを受け取り、符号化された符号化ブロックを回復するためにエントロピー符号化を反転する。エントロピー復号化部300により実行されるエントロピー復号化は、例えば、コンテキスト適応型可変長複号化(CAVLC)、コンテキスト適応型二値算術復号化(CABAC)、ランレングス復号化等のような、一つもしくは複数の適切なエントロピー復号化技術を実行する機能を含み得る。
逆スキャンおよび逆量子化部302は、ラスタースキャン順のビデオビットストリームの符号化ブロックを組立て、かつ、元の周波数領域データ、逆量子化された残差係数を実質的に回復する。逆変換部304は、逆スキャンおよび逆量子化部302からの周波数領域データを元の残差予測ブロックへ変換する。すなわち、逆変換部304は、残差予測ブロックを生成するために、逆ブロック変換を、言い換えると、符号化に用いられるブロック変換とは逆のものを、逆量子化された残差係数に適用する。
この残差予測ブロックは、加算部306の一つの入力を供給する。加算部306のもう一つの入力は、モードスイッチ308から来る。インター予測モードが符号化されたビデオストリームで伝えられるとき、モードスイッチ308は動き補償部310からの予測ブロックを選択し、イントラ予測部が伝えられるときは、モードスイッチはイントラ予測部314からの予測ブロックを選択する。動き補償部310は参照データキャッシュ318から参照フレームデータを受け取り、予測ブロックを生成するために、エンコーダによって計算され、かつ符号化されたビデオビットストリームで伝送された動き補償を参照フレームデータに適用する。
参照データキャッシュ部318は、フレーム記憶部312と動き補償部310との間にキャッシュメモリを提供する。具体的には、動き補償部310が参照フレームデータを必要とするとき、参照データキャッシュ部318は、必要とされる参照フレームデータを動き補償部310へ、参照データキャッシュ部318に含まれるキャッシュメモリから、もしくは、必要とされる参照フレームデータがキャッシュメモリに記憶されない場合フレーム記憶部から提供する。参照データキャッシュ部318の一つもしくは複数の実施例の機能は、図4ないし図15を参照して以下でより詳細に説明される。
イントラ予測部314は、現在のフレームから前に復号化された予測ブロックを受け取り、予測ブロックを生成するために、符号化されたビデオビットストリームで伝送された空間予測モードにより伝えられたとき、エンコーダにより計算されたイントラ予測を、前に復号化された予測ブロックに適用する。
加算部306は、選択された予測ブロックと残差予測ブロックとを加算することによって、予測された予測ブロックを回復、すなわち復号化された予測ブロックを生成する。加算部306の出力はインループフィルタ部316の入力を供給する。インループフィルタ部316は、復号化されたフレームの視覚的な品質を改善するために、符号化プロセスのブロックの性質により生成されるアーチファクトを平滑化する。インループフィルタ部316の出力は、ビデオビットストリームの復号化されたフレームである。
各々の復号化された予測ブロックは、参照フレームデータとして用いられるためにフレーム記憶部312に記憶される。さらに、参照フレームデータが、複数の前に復号化されたフレームのために記憶され得る。具体的には、いくつかのビデオ圧縮規格では、複数の参照フレームがフレーム記憶部312に記憶され得、かつ動き補償に用いられ得る。例えば、H.264は、PフレームとBフレームとの双方についての動き補償のために複数の参照フレームの使用を可能にする。いくつかの実施例では、フレーム記憶部312は外部メモリ、すなわちオフチップメモリである。さらに、一つもしくは複数の実施例では、フレーム記憶部312はタイル状のメモリであり、すなわちタイル状のアドレッシングスキームを用いてアクセスされる。
参照データキャッシュ部218、318の一つもしくは複数の実施例の機能と、動き予測部220、動き補償部218、318およびフレーム記憶部240、312の相互作用とが、ここで図4ないし図15を参照して説明される。一つもしくは複数の実施例では、動き予測部220および動き補償部222、310は、現在のフレームについて、すなわち符号化あるいは復号化されるフレームについて、それぞれの参照フレームデータキャッシュ部218、318からの参照フレームデータを要求するために、タイル状アドレッシングスキームを使用する。さらに、それぞれの参照フレームキャッシュ部218、318は、参照フレームデータのキャッシュを、符号化もしくは復号化される現在のフレームに提供する。すなわち、フレームの符号化もしくは復号化が完了した後、参照データキャッシュ部218、318のキャッシュラインは、次のフレームを符号化もしくは復号化する前に無効にされる。
タイル状のアドレッシングスキームでは、参照フレームが参照データブロックに分割されるとみなされ、各々の参照データブロックは、参照フレームの上左隅に対する参照フレームのブロックのx座標xaddrおよびy座標yaddrを特定することにより要求され得る。参照データブロックのサイズは設計上の選択事項である。図4は、参照データブロックサイズが4×4である、16×16の参照フレームのためのタイル状のアドレッシングスキームの簡単な一例を示す。参照フレームの上左隅が、xaddr=0、yaddr=0とみなされる。従って、ブロックAはxaddr=0、yaddr=0にあり、ブロックBはxaddr=1、yaddr=0にある。さらに、ブロックJはxaddr=1、yaddr=2にある。概して、参照データブロックの座標は、参照データブロックの上左隅の参照フレームのピクセル座標を、参照データブロックの幅および高さのそれぞれで除算することにより決定され得る。例えば、図4では、ブロックGのピクセル座標はx=8およびy=4である。それゆえ、タイル状のアドレッシングスキームにおけるブロックGの座標は、xaddr=8/4=2であり、かつyaddr=4/4=1となるであろう。
複数の参照フレームを用いて動き予測および動き補償をサポートするビデオエンコーダおよびビデオデコーダの実施例では、要求する部は、複数の参照フレームのうちのどれから参照フレームデータのブロックを読み込むかを特定する参照フレーム識別子を提供する。用いられる参照フレーム識別スキームは、任意の適切なスキームであり得、かつエンコーダ/デコーダによってサポートされる圧縮規格に基づき得る。例えば、H.264では、各々の参照フレームが参照フレームインデックスにより識別され、最大16の参照フレームがあり得る。それゆえ、H.264では、参照フレームインデックスは、0から15までの範囲であり得る。符号化されているフレームに時間的に最も近い参照フレームは、典型的に0の参照インデックスを有し、参照インデックスは、典型的に参照フレームの時間的距離に従って1つずつ増加される。新しい参照フレームが記憶されるたびに、当該新しい参照フレームは典型的に0の参照インデックスを与えられ、時間的により古い参照フレームの参照インデックスは、それぞれが一つ増加される。双方向の予測ピクチャには、順方向および逆方向のそれぞれで予測に用いられる参照インデックスのリストを記憶するために、H.264においてRefPicList0およびRefPicList1と呼ばれる、2つの参照ピクチャリストがあり得る。
説明の簡潔さのために、識別子としての参照フレームインデックスと4×4(16ピクセル)の参照データブロックサイズとを備えた16の参照フレームのサポートが、実施例のさらなる説明において前提とされる。当業者は、複数の参照フレームがサポートされない実施例や、サポートされる参照フレームの数が異なる実施例や、1つ又は2つの参照ピクチャリストが用いられる実施例、および/もしくは他の参照データブロックサイズが用いられる実施例を理解するであろう。
一つもしくは複数の実施例では、参照フレーム識別子と、xaddrと、yaddrとが、参照データキャッシュ部218、318のための参照データブロックのアドレスを形成する。アドレスのビット数は、ビデオエンコーダもしくはビデオデコーダによってサポートされる最大フレームサイズと、参照データブロックのサイズと、参照フレーム識別子に必要とされるビット数とに依存する。例えば、サポートされる最大フレームサイズが1920×1080であり、16の参照フレームが許容され、9ビットがxaddrに必要とされ、8ビットがyaddrに必要とされ、かつ4ビットが参照フレームインデックスに必要とされる場合、21ビットのアドレスとなる。
一つもしくは複数の実施例では、参照データキャッシュ部218、318は、データストレージ(記憶)と、タグストレージ(記憶)と、有効ビットストレージ(記憶)とを含む、アソシアティブ(連想)キャッシュである。参照データキャッシュ部218、318の連想は設計上の選択事項である。すなわち、キャッシュの複雑性とメモリバンド幅の減少のトレードオフであり得る。例えば、フルアソシアティブの16KBのキャッシュの使用は、フレーム記憶240、312のダイレクトアクセスでメモリバンド幅の約40〜50%の減少を提供し得るが、1024のコンパレータを必要とする。反対に、双方向アソシアティブの16KBのキャッシュの使用は、1024ではなく2つのコンパレータを必要とし、本明細書でより詳細に示されるように、メモリバンド幅において十分に匹敵される減少を提供し得る。アソシアティブキャッシュの通常動作はこの分野においてよく理解されており、それゆれここでは詳細に説明しない。
参照データキャッシュ部218、318のデータストレージ、タグストレージ、および有効ビットストレージは、結合され得るか、もしくは別々であり得る。データストレージのメモリ量は設計上の選択事項である。データストレージのメモリは、複数のキャッシュラインに分割され、各々が一つの参照データブロックを記憶するために十分なサイズである。例えば、サイズが4×4の参照データブロックのために、各キャッシュラインは16バイトを記憶するであろう。
タグストレージは、各キャッシュラインのための一つタグをデータストレージに記憶するために十分なメモリを含み、有効ビットストレージは、データストレージ内の各キャッシュラインのための1ビットを記憶するために十分なメモリを含む。タグストレージに必要とされるメモリ量は、データストレージのサイズとキャッシュの連想とに依存する。例えば、フルアソシアティブキャッシュにとっては、タグは、参照データブロックの完全なアドレスであり、16バイトのキャッシュラインを有する双方向アソシアティブの16KBのキャッシュにとっては、参照データブロックアドレスの最小有効9ビットがキャッシュへのインデックスとして利用され得、かつ残りの12ビットがタグであり、また16バイトのキャッシュラインを有する四方向アソシアティブの16KBのキャッシュにとっては、アドレスの最小有効8ビットがインデックスとして利用され得、残りの13ビットはタグであるであろう。
図5は、一つもしくは複数の実施例による、双方向アソシアティブキャッシュとして実装される例示的な参照データキャッシュ部218、318のブロック図を示す。最大フレームサイズは1920×1080であると仮定される。それゆえ、前述の例で説明されたように、参照データブロックのアドレスは21ビットである。この例において、アドレスのビット0〜8は、参照データブロックのxaddrであり、ビット9〜16は参照データブロックのyaddrであり、かつビット17〜20は参照フレーム識別子である。データストレージは16KBである。すなわち、データストレージは、1024の16バイトのキャッシュラインに分割される。キャッシュが双方向アソシアティブなので、アドレスの最小有効9ビット、すなわちビット0〜8、がキャッシュインデックスのために用いられる。アドレスの残りの最大有効12ビットはタグを形成する。それゆえ、キャッシュへのインデックスは、addr&0x1FFと計算され得、ここでaddrとは、参照データブロックのアドレスである。
参照データブロックアドレスの最小有効ビットをキャッシュへのインデックスとして使用することは、例えば1024といった大きな2のべき乗である幅を有するフレームに、著しいキャッシュスラッシングを引き起こし得る。スラッシングが発生し得るのは、フレーム記憶部240、312の参照データが、フレーム記憶部240、312の複数のメモリ位置に同一のキャッシュラインを競合させる、過度のキャッシュミスの原因となるパターンでアクセスされる場合である。スラッシングを減少させるために、キャッシュインデックスストラテジーがキャッシュの充填を拡張させるために用いられ得る。一つもしくは複数の実施例では、参照データブロックのアドレスの最小有効ビットをキャッシュへのインデックスとして使用するではなく、インデックスが、アドレスのx座標から選択されたビットとy座標から選択されたビットとを用いて計算される。すなわち、x座標からの所定数のビットが、インデックスを形成するために、y座標からの所定数のビットと連結される。各座標から用いられるビットの数および連結順序は経験的に決定され得、例えば、どの組み合わせが最良のパフォーマンスを提供するかを決定するために、様々なビット選択を用いてシミュレーションが実行され得る。
図6は、一つもしくは複数の実施例によるインデックススキームを使用した例示的な参照データキャッシュ部218、318のブロック部を示す。図6のキャッシュは、インデックス計算部600が追加されていること以外は、図5のキャッシュと同一である。インデックス計算部600は、アドレス、すなわちx座標およびy座標の、最小有効17ビットを受け取り、表1の疑似コードで表されるようなキャッシュへの9ビットインデックスを計算する。この疑似コードに見られるように、9ビットインデックスは、x座標の最小有効7ビットを、y座標の最小有効2ビットに連結させることによって形成される。タグは図5のキャッシュと依然として同一であり、すなわち、アドレスの最大有効12ビットである。
復号化のシミュレーションは、フルアソシアティブの16KBのキャッシュと、9ビットのLSBインデックスを使用する図5の双方向アソシアティブキャッシュと、x座標およびy座標から計算されるインデックスを使用する図6の双方向アソシアティブキャッシュとを用いて実行された。用いられたビデオストリームは、sPanIceHockey_p960x960_30fps_420pl_60fr.34.264(パッド寸法は1024×1024)であった。シミュレーションは、IPPP符号化構造とIBBP符号化構造とを用いて実行された。表2はこれらのシミュレーションの結果を表す。この表が示すように、フルアソシアティブキャッシュにインデックスとしてLSBビットを使用する双方向アソシアティブキャッシュのバンド幅の増加は、インデックス計算スキームを使用した双方向アソシアティブキャッシュのそれよりも著しく大きかった。
Bフレームを符号化および復号化するための参照データブロックアクセスもまた、著しいキャッシュスラッシングを引き起こし得る。というのも、参照データブロックが、フレーム記憶部240、312の複数のメモリ位置に同一のキャッシュラインを競合させ、過度のキャッシュミスの原因となるパターンでアクセスされ得るためである。このようなスラッシングを減少させるために、キャッシュインデックスストラテジーが用いられ得、当該ストラテジーは、Bフレームが符号化あるいは復号化されるときに、予測方向に基づいてキャッシュインデックスを適応させることにより、キャッシュの充填を拡張させる。具体的には、キャッシュインデックスは、x座標から選択されたビットと、y座標から選択されたビットと、予測方向、すなわち前方予測もしくは後方予測、を表す値とを用いて計算される。任意の適切な値が2つの予測方向に用いられ得る。いくつかの実施例では、前方予測方向の予測方向値は0であり、後方予測方向の予測方向値は1ある。
例えば、図6のキャッシュを仮定すれば、キャッシュインデックスは、表3の疑似コードで示されるように計算され得る。この疑似コードに示されるように、Pフレームが符号化もしくは復号化されていることを符号化タイプが示す場合、キャッシュインデックスは、前述のようにx座標およびy座標を用いて計算される。Bフレームが符号化されていることを符号化タイプが示す場合、9ビットキャッシュインデックスは、x座標の6つの最小有効ビットを、y座標の2つの最小有効ビットに連結させることおよび予測方向値により形成される。タグは、図5のキャッシュと依然として同一であり、すなわちアドレスの最大有効12ビットである。
表4は、1方向アソシアティブ、すなわちダイレクトマップ方式の16KBのキャッシュを想定した、符号化タイプ適応型キャッシュのインデックス計算の別の例の疑似コードを示す。最大フレームサイズは、ここでも前述の21ビットアドレスと場合と同様に1980x1080であると仮定される。キャッシュが1方向アソシアティブであるので、10ビットインデックスが必要とされる。アドレスの最大有効11ビットはタグを形成する。この疑似コードに示されるように、Pフレームが符号化もしくは復号化されていることを符号化タイプが示す場合、10ビットキャッシュインデックスは、x座標の最小有効5ビットとy座標の最小有効5ビットとの連結によって形成される。Bフレームが符号化されていることを符号化タイプが示す場合、10ビットキャッシュインデックスは、x座標の最小有効5ビットをy座標の最小有効4ビットに連結することおよび予測方向値によって形成される。
表5は、4方向の16KBのアソシアティブキャッシを仮定した、符号化タイプ適応型のキャッシュインデックス計算の別の例の疑似コードを示す。このキャッシュにとって、キャッシュインデックスは8ビットであり、タグはアドレスの最大有効13ビットである。この疑似コードに見られるように、Pフレームが符号化もしくは復号化されていることを符号化タイプが示す場合、8ビットインデックスは、x座標の最小有効6ビットをy座標の最小有効2ビットに連結させることによって形成される。Bフレームが符号化されていることを符号化タイプが示す場合、8ビットキャッシュインデックスは、x座標の最小有効5ビットをy座標の最小有効2ビットに連結することおよび予測方向値によって形成される。
図7は、様々なキャッシュ構成およびインデックス計算スキームを用いて実行されるH.264の復号化シミュレーションの結果を示す。本シミュレーションでは、IBBP符号化構造が23のテストビデオシーケンスに使用された。また、予測方向につき4つの参照フレームが使用された。この表の全てのデータは、フルアソシアティブキャッシュの使用と比較して、Bフレームのために外部メモリからフェッチされた追加のデータをパーセンテージに換算したものである。2列目は、表1の疑似コードのように形成された、キャッシュインデックスを有する16KBの双方向アソシアティブキャッシュを使用した結果を示す。3列目は、表3の疑似コードのように形成された、すなわちインデックスがBフレームのための予測方向に基づいて適応されたキャッシュインデックスを有する16KBの双方向アソシアティブキャッシュを使用した結果を示す。4列目は、符号化タイプが常にPであり、すなわちフレーム符号化タイプのための適応がないことを想定した、表4の疑似コードのように形成されたキャッシュインデックスを有する16KBの1方向アソシアティブキャッシュを使用した結果を示す。5列目は、表4の疑似コードのように形成された、すなわちインデックスがBフレームのために予測方向に基づいて適応されたキャッシュインデックスを有する16KBの1方向アソシアティブキャッシュを使用した結果を示す。これらの結果から理解され得るように、符号化タイプ適応型のインデックスの使用は、非適応型インデックスを使用するよりもより良いパフォーマンスを提供した。
一つもしくは複数の実施例では、参照データキャッシュ部218、318は、例えばH.264においてref_idx=0を有する、最も時間的に近い参照フレームから参照データブロックをキャッシュし、その他の参照フレームからは参照データブロックをキャッシュしない。具体的には、参照データブロックが、最も時間的に近い参照フレーム以外の任意の参照フレームから要求される場合、参照データキャッシュ部はキャッシュメモリをバイパスし、要求されたブロックをフレーム記憶部240、312から取り出す。このような実施例では、タグ中に参照データブロックの参照フレーム識別子を含む必要がないので、タグの記憶空間が著しく減少され得る。例えば、1920×1080の最大フレームサイズを仮定すれば、ブロックがすべての可能性のある参照フレームからキャッシュされる場合、フルアソシアティブキャッシュのためのタグは21ビットのストレージを必要とする。タグ中に参照フレーム識別子を含む必要性が取り除かれる場合、複雑さとタグ記憶領域の19%の節約となる。
H.264では、表6に示されるように、ほとんどのテストビデオビットストリームにおいてマクロブロックの大部分がref_idx=0である。その結果、ref_idx≠0を有する参照フレームからのデータは、ref_idx≠0を有するフレームからフェッチされたデータの最小限の重複となるまばらな方法でアクセスされる。重複量が低いので、ref_idx≠0を有するフレームからキャッシュされかつリフェッチされるデータ量もまた低い。それゆえ、ref_idx≠0のみがキャッシュされる場合、全体のキャッシュパフォーマンスの著しい損失がない。
いくつかの実施例では、ピクチャがインターレースされる場合、参照データキャッシュ部218、318は、例えばH.264においてref_idx=0,1を有する、2つの最も時間的に近い参照フィールドから参照ピクチャデータブロックをキャッシュし、他の参照フィールドからの参照データブロックをキャッシュしない。具体的には、参照データブロックが2つの最も時間的に近い参照フィールド以外の任意の参照フィールドから要求される場合、参照データキャッシュ部はキャッシュメモリをバイパスし、要求されたブロックをフレーム記憶部240、312から取り出す。このような実施例では、参照データブロックの参照フレーム識別子の1つのビットのみがタグに含まれる必要があるので、タグの記憶スペースが著しく減少され得る。
図8Aおよび図8Bは、すべての参照フレームからのブロックをキャッシュするもの、および、最も時間的に近い参照フレームのみからのブロックをキャッシュするもののフルアソシアティブの16KBのキャッシュを用いて実行されるH.264の復号化シミュレーションの結果を示す。本シミュレーションでは、IPPP符号化構造(図8A)およびIBBP符号化構造(図8B)が23のテストビデオシーケンスに使用された。また、予測方向につき4つの参照フレームが使用された。これらの2つの表の結果が示すように、全ての参照フレームからのキャッシュとは対照的に、最も時間的に近い参照フレームからのみのキャッシュのメモリバンド幅の平均パーセントの増加は、1%よりも低い。
ビデオ符号化および復号化において、参照フレームデータへのアクセスには、水平方向の局所性および垂直方向の局所性の双方がある。符号化もしくは復号化は、例えばマクロブロックといった一連の符号化ブロックを介してフレーム内の列を移動するので、一つの符号化ブロックから次の符号化ブロックに使用される参照フレームデータ間には水平方向の重複がある。また、フレームの列の符号化ブロックとフレームの前後の列の符号化ブロックとの間で用いられる参照フレームデータ間にも垂直方向の重複がある。大きなキャッシュサイズは、水平方向および垂直方向の局所性の双方をキャプチャするために必要とされ、例えば、1080pビデオフレームのための現在のマクロブロックとその前後の列の3つの列の局所性をキャプチャするために必要とされ、おおよそ7列×列につき16ライン×ラインにつき1088ピクセル=119Kバイトのキャッシュのキャッシュメモリサイズが必要とされる。前述の参照フレームキャッシュの実施例が、この目的で用いられ得るが、必要とされるタグメモリの量は著しく増加する。例えば、図5に示されたキャッシュ構成では、必要とされるタグメモリの量は、タグにつき12ビット×7×1088=11.5KBである。キャッシュ制御論理(タグメモリはその一部である)は高速論理を用いて設計され得、タグサイズメモリのこの増加は非常に高価となる。それゆえ、垂直方向の局所性を利用するために適合した、最適化されたキャッシュ構造が用いられ得る。
一つもしくは複数の実施例では、参照データキャッシュ部218、318は水平方向のキャッシュおよび垂直方向のキャッシュの双方を提供する。水平方向のキャッシュは、前述の実施例によるアソシアティブキャッシュであり得る。垂直方向のキャッシュは、参照符号化ブロックの垂直方向の列の範囲内で参照データブロックを格納する。すなわち、垂直方向のキャッシュは、現在のフレームにおいて符号化および復号化されている符号化ブロックの現在の列に対応する参照符号化ブロックの列から、参照符号化ブロックの列の前の参照符号化ブロックの一つもしくは複数の列から、および参照符号化ブロックの列の後の参照符号化ブロックの一つもしくは複数の列から、参照データブロックを格納する。垂直方向の範囲における符号化ブロックの列の数は、設計決定、パラメータ、それらの組み合わせ等であり得る。
図12Aおよび図12Bを参照して本明細書でより詳細に説明されるように、水平方向のキャッシュから追い出された参照データブロックは、追い出されたデータブロックが垂直方向のキャッシュの現在のウィンドウ内、すなわち現在の垂直方向の範囲内にある場合、垂直方向のキャッシュに格納される。いくつかの実施例では、垂直方向のキャッシュの現在のウィンドウ内にあることに加えて、追い出された参照データブロックはまた、最も時間的に近い参照フレームからでなければならない。さらに、水平方向のキャッシュ内の要求された参照データブロックについてキャッシュミスがある場合、要求された参照データブロックについて垂直方向のキャッシュがチェックされる。垂直方向のキャッシュにもキャッシュミスがある場合、要求された参照データブロックは、フレーム記憶部240、312から取り出され、水平方向のキャッシュのキャッシュラインに格納される。いくつかの実施例では、要求された参照データブロックのアドレスは、フレーム記憶部240、312のアドレスに変換される。
垂直方向の範囲は、垂直方向のキャッシュに格納され得る参照符号化ブロックの垂直方向に移動するウィンドウの範囲を規定する。すなわち、現在のフレームの符号化ブロックの列の符号化もしくは復号化が完了するたびに、参照符号化ブロックのウィンドウは一列下に移動される。図9Aおよび図9Bは、この垂直方向に移動するウィンドウを表す例である。これらの例では、垂直方向のキャッシュの垂直方向の範囲は参照符号化ブロックの3列であり、vCacheTopおよびvCacheBotは現在のウィンドウの頂部と底部である。現在のフレームの符号化ブロックA900(もしくは同じ列の任意の他の符号化ブロック)が符号化あるいは復号化されているとき、vCacheTopおよびvCacheBotによって規定されるウィンドウの参照データブロックは垂直方向のキャッシュに格納され得る。しかしながら、現在のフレームの符号化ブロックB902(もしくは同じ列の他の符号化ブロック)が符号化もしくは復号化されているとき、参照フレームのウィンドウは、参照フレーム内で垂直方向に下方に移動される。さらに、もはやウィンドウにない符号化ブロックの列から参照データブロックを格納するキャッシュラインは、ウィンドウが移動されたとき、無効にされる。
垂直方向のキャッシュは、データストレージおよび有効ビットストレージを含む。データストレージおよび有効ビットストレージは、結合されても別々であっても良い。データストレージは、複数のキャッシュラインに区分され、各々が一つの参照データブロックをストアするために十分なサイズである。さらに垂直方向のキャッシュラインサイズは、水平方向のキャッシュのそれと同一のサイズである。データストレージは、所定の垂直方向の範囲内に各々の参照データブロックのためにユニークなキャッシュラインを提供するために十分なメモリを含む。有効ビットストレージは、垂直方向のキャッシュの各々のキャッシュラインのために1ビットを格納するために十分なメモリを含む。
データストレージのメモリ量は、キャッシュの所望の垂直性、すなわち、どれだけの参照符号化ブロックの列が収容されるかということと、符号化および復号化される最大フレームのフレーム幅と、符号化ブロックのサイズと、参照データブロックのサイズとに基づく設計上の選択事項である。例えば、参照符号化ブロックが16×16であり、参照データブロックが4×4である場合、16個の16バイトのキャッシュラインが、一つの参照符号化ブロックの参照データブロックを格納するために必要とされる。最大フレーム幅が1920である場合、フレームの列には120の参照符号化ブロックがある。すなわち、1920の16バイトのキャッシュラインが、フレームの参照符号化ブロックの一つの列の参照データブロックを格納するために必要とされる。垂直方向のキャッシュの垂直方向の範囲が参照符号化ブロックの3列である場合、3×1920=5760の16バイトのキャッシュラインが垂直方向の範囲の参照データブロックを格納するために必要とされる。従って、この例にとっては、データストレージが最小90KBである必要がある。
任意の適切な実装が垂直方向のキャッシュに用いられ得る。いくつかの実施例では、垂直方向のキャッシュは循環バッファのようなメモリバッファを実装される。図10Aないし図10Dは、一つもしくは複数の実施例による、バッファとして実装された例示的な垂直方向のキャッシュのブロック図を示す。すなわち、図10Aおよび図10Bでは、データストレージが線形バッファとして管理され、図10Cおよび図10Dでは、データストレージが循環バッファとして管理される。これらの例は、符号化ブロックが16×16のマクロブロックであり、かつ参照データブロック(タイル)が4×4であると仮定する。さらに、少なくとも12行の参照データブロック(3行のマクロブロック)を格納するために十分なサイズの垂直方向のキャッシュが仮定される。
図10Aでは、マクロブロック行2の参照データブロックに対応する現在のフレームのデータブロックが動き補償されており、動き補償がなされているマクロブロック行に対応する参照データブロックは、マクロブロック行2の位置で垂直方向のキャッシュバッファに格納され、前のマクロブロック行に対応する参照データブロックは、マクロブロック行1の位置で垂直方向のキャッシュバッファに格納され、かつ、後のマクロブロック行に対応する参照データブロックは、マクロブロック行3の位置の垂直方向のキャッシュバッファに格納される。参照データブロックは、xTileAddrおよびyTileAddrのインデックスによってアドレスされ、ここでxTileAddr=xAddr/tileSizeかつyTileAddr=yAddr/tileSizeである。
図10Bでは、マクロブロック行2に対応するマクロブロックの行の動き補償が完了し、それゆえ、垂直方向のキャッシュウィンドウが1行移動されて、マクロブロック行2でキャッシュされた参照データブロックがここでは前のマクロブロックであり、マクロブロック行3でキャッシュされた参照データブロックがここでは動き補償がなされるマクロブロック行に対応する参照データブロックであり、かつ動き補償中のマクロブロック行の後のマクロブロック行に対応する参照データブロックがここではマクロブロック行4の位置に格納されるようにする。前のマクロブロックが動き補償されていたときに垂直方向のキャッシュに格納された参照データブロックは、すなわち、マクロデータブロック行2およびマクロブロック行3の参照データブロックは、現在のマクロブロック行の動き補償で用いられるよう垂直方向のキャッシュに維持されることに注意されたい。
図10Aと類似する図10Cでは、マクロブロック行2の参照データブロックに対応する現在のフレームのデータブロックが動き補償されており、かつ動き補償がなされているマクロブロック行に対応する参照データブロックが、マクロブロック行2の位置の垂直方向のキャッシュバッファに格納され、前のマクロブロックに対応する参照データブロックはマクロブロック行1の位置で垂直方向のキャッシュバッファに格納され、かつ後のマクロブロック行に対応する参照データブロックはマクロブロック行3の位置で垂直方向のキャッシュバッファに格納される。参照データブロックは、verticalCacheXaddressおよびverticalCacheYaddressのインデックスによりアドレスされ、ここで、12を法(modulo)として、verticalCacheXaddress=xTileAddr=xAddr/tileSizeおよびverticalCacheYaddress=yTileAddrであり、yTileAddr=yAddr/tileSizeである。
図10Dでは、マクロブロック行2に対応するマクロブロックの行の動き補償が完了し、それゆえ垂直方向のキャッシュウィンドウが一列移動されて、マクロブロック行2でキャッシュされた参照データブロックがここでは前のマクロブロックであると考えられ、マクロブロック行3でキャッシュされた参照データブロックがここでは動き補償中のマクロブロック行に対応する参照データブロックであり、かつ動き補償中のマクロブロック行の後のマクロブロックに対応する参照データブロックがマクロブロック行4の位置にストアされるようにする。しかしながら、データストレージが、バッファでウィンドウを下に移動させるのではなく、循環バッファであるので、元はマクロブロック行1に配置されたスペースが、ここではマクロブロック行4のための参照データブロックを格納するために用いられる。前のマクロブロック行が動き補償されたときに垂直方向のキャッシュに格納された参照データブロック、すなわち、マクロブロック行2およびマクロブロック行3の参照データブロック、は現在のマクロブロック行の動き補償で用いられるために垂直方向のキャッシュに保つたれることに注意されたい。
PフレームとBフレームとの双方の符号化および復号化を提供する実施例では、垂直方向のキャッシュは半分ずつ二つに分割される。一つの半分は、一つの予測方向のための参照データブロックをキャッシュするために用いられ、もう一つの半分は、もう一つの予測方向の参照データブロックをキャッシュするために用いられる。いくつかの実施例では、順方向の予測方向値は0であり、逆方向の予測方向値は1である。
図11は一つもしくは複数の実施例による参照データをキャッシュする方法のフローチャートを示す。説明の簡潔さのために、双方向アソシアティブキャッシュが仮定される。当業者は、異なるキャッシュ連想を用いた方法の実施例を理解するであろう。まず、要求された参照データブロックの参照フレーム識別子、x座標、およびy座標が参照データキャッシュ部によって要求部から受け取られる(1100)。参照フレーム識別子、x座標およびy座標は、要求された参照データブロックのアドレスを形成する。すなわち、アドレスは、ある順序での、参照フレーム識別子、x座標およびy座標の連結である。
参照フレーム識別子はそれゆえ、要求された参照データブロックがキャッシュ可能な参照フレームにあるか否かを決定するために用いられる(1102)。すなわち、参照データキャッシュ部は、他の参照フレームからではなく、いくつかの選択された参照フレームから参照データブロックをキャッシュし得る。いくつかの実施例では、すべての参照フレームがキャッシュ可能である。いくつかの実施例では、最も時間的に新しい参照フレームのみがキャッシュ可能である。要求された参照データブロックがキャッシュ可能な参照フレームにない場合、要求された参照データブロックはフレーム記憶部から取り出され(1104)、要求部へ戻される(1114)。いくつかの実施例では、要求された参照データブロックのアドレスが、フレーム記憶部のアドレスに変換される。
要求された参照データブロックがキャッシュ可能な参照フレームにある場合、キャッシュインデックスは参照データブロックのアドレスから決定される(1106)。いくつかの実施例では、インデックスは、要求された参照データブロックのアドレスの最小有効ビットのいくつかの数である。いくつかの実施例では、キャッシュインデックスは、前述のようなx座標からの所定数のビットとy座標からの所定数のビットとを用いて計算される。いくつかの実施例では、キャッシュインデックスの計算は、現在のフレームが、すなわち符号化もしくは復号化されているフレームが、Bフレームであるときには、前述のように、予測方向に基づいて適応される。
次いで、インデックスは、要求された参照データブロックがキャッシュに格納されるか否かを決定するために用いられる(1108)。具体的には、インデックス位置に対応する2つのキャッシュラインのタグが、アドレスのタグと比較される。一致しかつ一致するタグに対応する有効ビットがキャッシュラインに記憶されたデータを有効と示す場合、キャッシュヒットがある。すなわち、要求された参照データブロックが一致するタグを有するキャッシュラインに記憶されている。このキャッシュラインに格納されたデータは、その後、要求部へ戻される(1114)。
一致がない、および/もしくは、対応する有効ビットがキャッシュラインに格納されたいずれのデータも無効であると示す場合、キャッシュミスがある。すなわち、要求された参照データブロックは、2つのキャッシュラインのどちらにも格納されていない。この場合、要求された参照データブロックがフレーム記憶部から取り出され(1110)、2つのキャッシュラインのうちの一つに格納される(1112)。いくつかの実施例では、要求された参照データブロックのアドレスはフレーム記憶部のアドレスに変換される。双方のキャッシュラインが無効である場合、取り出された参照データブロックはいずれのキャッシュラインにストアされても良い。一つのキャッシュラインが有効であり、他方のキャッシュラインが無効である場合、取り出された参照データブロックは無効なキャッシュラインに格納される。双方のキャッシュラインが有効である場合、キャッシュラインのうちの1つにあるデータは、取り出された参照データブロックのための空間を生成するために追い出される。
データが追い出されるべきキャッシュラインの選択は、適切な追い出しのポリシー、すなわち置換ポリシーを用いてなされ得る。一つもしくは複数の実施例では、最近アクセスされていないデータを保有するキャッシュラインが選択される。取り出された参照データブロックが格納される場合、キャッシュラインを格納するタグが要求された参照データブロックのタグに設定され、かつ格納するキャッシュラインに対応する有効ビットは、キャッシュラインのデータが有効であると示すよう設定される。要求された参照データはその後、要求部に戻される(1114)。
図12Aおよび図12Bは、一つもしくは複数の実施例による、水平方向のキャッシュおよび垂直方向のキャッシュの組合せを用いて参照データをキャッシュする方法のフローチャートを示す。説明の簡潔さのために、双方向アソシアティブキャッシュが水平方向のキャッシュのために仮定される。まず、要求された参照データブロックの参照フレーム識別子、x座標およびy座標が、要求部から参照データキャッシュ部によって受け取られる(1200)。参照フレームデータキャッシュ部は、水平方向のキャッシュと垂直方向のキャッシュとの双方を含む。参照フレーム識別子、x座標およびy座標は、要求された参照データブロックのアドレスを形成する。すなわち、アドレスはある順序での参照フレーム識別子、x座標およびy座標の結合である。
その後、参照フレーム識別子は、要求されたデータブロックがキャッシュ可能な参照フレームにあるか否かを決定するために用いられる(1202)。すなわち、参照データキャッシュ部は、他のフレームからではなく、いくつかの選択されたフレームから参照データブロックをキャッシュし得る。いくつかの実施例では、すべての参照フレームがキャッシュ可能である。いくつかの実施例では、最も時間的に近い参照フレームのみがキャッシュ可能である。要求された参照データブロックがキャッシュ可能な参照フレームにない場合、要求された参照データブロックはフレーム記憶部から取り出され(1204)、要求部に戻される(1218)。いくつかの実施例では、要求された参照データブロックのアドレスは、フレーム記憶部のアドレスに変換される。
要求された参照データブロックがキャッシュ可能な参照フレームにある場合、水平方向のキャッシュのためのキャッシュインデックスが参照データブロックのアドレスから決定される(1206)。いくつかの実施例では、インデックスは、水平方向のキャッシュのキャッシュラインの各々のセットためのユニークなインデックス値を形成するよう要求された参照データブロックのアドレスの最小有効ビットの十分な数である。いくつかの実施例では、キャッシュインデックスは、前述のような、x座標からの所定の数のビットとy座標からのビットの所定数とを用いて計算される。いくつかの実施例では、キャッシュインデックスの計算は、現在のフレームが、すなわち符号化もしくは復号化されているフレームがBフレームの場合には、前述のような予測方向に基づいて適応される。
その後、インデックスは、要求された参照データブロックが水平方向のキャッシュに格納されるか否かを決定するために用いられる(1208)。具体的には、インデックス位置に対応する2つのキャッシュラインのタグがアドレスのタグと比較される。一致があり、かつ一致するタグに対応する有効ビットがキャッシュラインにストアされたデータを有効と示す場合、キャッシュヒットがある。すなわち、要求された参照データブロックは、一致するタグを有するキャッシュラインに格納されている。このキャッシュラインに格納されたデータは、その後、要求部へ戻される(1218)。
一致がない、および/もしくは、対応する有効キャッシュがキャッシュラインに格納されたいかなるデータも無効であると示す場合、キャッシュミスがある。すなわち、要求された参照データブロックは2つのキャッシュラインのいずれにも格納されない。キャッシュミスがある場合、垂直方向のキャッシュは、要求された参照データブロックがそこで格納されているか否かを決定するためにアクセスされ得る。まず、要求された参照データブロックが垂直方向のキャッシュでキャッシュ可能か否かの決定がなされる(1210)。要求されたデータブロックを含む参照フレームがキャッシュ可能である場合、かつ、要求された参照データブロックが参照フレームの垂直方向のキャッシュの現在のウィンドウにある場合、要求された参照データブロックはキャッシュ可能である。要求された参照データブロックのアドレスの参照フレーム識別子は、要求された参照データブロックが垂直方向のキャッシュでキャッシュ可能な参照フレームにあるか否かを決定するために用いられる。一つもしくは複数の実施例では、最も時間的に近い参照フレームのみが垂直方向のキャッシュでキャッシュ可能である。要求された参照データブロックのx座標およびy座標は、要求された参照データブロックが垂直方向のキャッシュの現在のウィンドウ内にあるか否かを決定するために、前述のように用いられ得る。要求された参照データブロックが垂直方向のキャッシュでキャッシュ可能であると決定される場合、垂直方向のキャッシュのためのキャッシュインデックスが前述のように決定される(1212)。
インデックは、その後、要求された参照データブロックが垂直方向のキャッシュに格納されているか否かを決定するために用いられる(1214)。要求された参照データブロックが、インデックスにより示された垂直方向のキャッシュのキャッシュラインに格納されている場合、キャッシュヒットがあり、このキャッシュラインに格納されたデータは、要求部に戻される(1218)。キャッシュミスがある場合、もしくは要求された参照データブロックが垂直方向のキャッシュでキャッシュ可能でない場合、要求された参照データブロックはフレーム記憶部から取り出され(1216)、水平方向のキャッシュインデックスにより識別された2つのキャッシュラインのうちの一つの水平方向のキャッシュに格納される。
キャッシュラインのうちのすくなくとも一つが無効である場合、すなわちフリーである場合(1220)、取り出された参照データブロックは、フリーのキャッシュラインに格納されて(1222)、要求された参照データブロックは要求部へ戻される(1234)。双方のキャッシュラインが有効である場合(1220)、キャッシュラインのうちの1つにあるデータが、取り出された参照データブロックのための空間を生成する追い出しのために選択される(1224)。データが追い出されるキャッシュラインの選択は、任意の適切な追い出しポリシーを用いてなされ得る。一つもしくは複数の実施例では、最近アクセスされていないデータを保有するキャッシュラインが選択される。
キャッシュラインが選択された後、キャッシュラインに現在格納された参照データブロック、すなわち追い出された参照データブロック、は垂直方向のキャッシュに格納され得る。具体的には、追い出された参照データブロックが垂直方向のキャッシュでキャッシュ可能か否かの決定がなされる(1226)。追い出されたデータブロックを含む参照フレームがキャッシュ可能である場合、かつ追い出された参照データブロックが参照フレームの垂直方向のキャッシュの現在のウィンドウにある場合、追い出された参照データはキャッシュ可能である。追い出された参照データブロックのアドレスの参照フレーム識別子は、追い出された参照データブロックが垂直方向のキャッシュでキャッシュ可能である参照フレームにあるか否かを決定するために用いられる。一つもしくは複数の実施例では、最も時間的に近い参照フレームのみが、垂直方向のキャッシュでキャッシュ可能である。追い出された参照データブロックのx座標およびy座標は、追い出された参照データブロックが垂直方向のキャッシュの現在のウィンドウ内にあるか否かを決定するために、前述のように用いられ得る。追い出された参照データブロックが垂直方向のキャッシュでキャッシュ可能でないと決定される場合、要求された参照データブロックは水平方向のキャッシュの選択されたキャッシュラインに格納され(1232)、要求部へ戻される(1234)。
追い出された参照データブロックが垂直方向のキャッシュでキャッシュ可能であると決定される場合、垂直方向のキャッシュのためのキャッシュインデックスが前述のように決定され(1228)、追い出された参照データブロックはインデックスに対応するキャッシュラインに格納される。キャッシュラインに対応する有効ビットはまた、有効なデータがキャッシュラインに格納されることを示すよう設定される。要求された参照データブロックはその後、水平方向のキャッシュの選択されたキャッシュラインに格納され(1232)、要求部へ戻される(1234)。要求された参照データブロックが格納されるとき、選択されたキャッシュラインのためのタグが要求された参照データブロックのタグに設定され、選択されたキャッシュラインに対応する有効ビットは、キャッシュラインのデータが有効であることを示すよう設定される。
本明細書で説明されたエンコーダと方法の実施例は、いくつかのタイプのディジタルシステムに提供され得る:ディジタル信号プロセッサ(DPS)、汎用プログラム可能プロセッサ、特定用途向け回路、もしくは、DSPとの縮小命令セット(RISC)プロセッサとの組み合わせや、種々の特殊なプログラム可能なアクセレレータなどといったシステムオンチップ(SoC)などである。オンボードもしくは外部(フラッシュEEP)ROMやFRAMにストアされたプログラムは、ビデオ信号処理を実装するために用いられ得る。アナログ‐ディジタルコンバータおよびディジタル‐アナログコンバータは、現実の世界との結合を提供し、変調器および復調器(加えて空中とのインターフェースのためのアンテナ)は、伝送波形へのカップリングを提供し得、かつパケタイザーは、インターネットなどのネットワークを介した伝送のためのフォーマットを提供する。
本開示で記載された技術は、ハードウェア、ソフトウェア、ファームウェア、もしくはそれらの組み合わせで実装され得る。ソフトウェアで実装される場合、ソフトウェアは、マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、もしくはディジタル信号プロセッサ(DSP)といった、一つもしくは複数のプロセッサで実行され得る。こういった技術を実行するソフトウェアは、コンパクトディスク(CD)、ディスケット、テープ、ファイル、メモリ、もしくはその他のコンピュータ可読の記憶装置といった、コンピュータ読出し可能な媒体にまずストアされて、プロセッサにロードされて実行される。いくつかの場合では、ソフトウェアは、コンピュータ読出し可能な媒体およびコンピュータ読出し可能な媒体用パッケージマテリアルを含むコンピュータプログラム製品でも販売され得る。いくつかの場合では、ソフトウェア命令は、リムーバブルのコンピュータ読出し可能な媒体(例えば、フロッピーディスク、光ディスク、フラッシュメモリ、USBキー)を介して、その他のディジタルシステム等のコンピュータ読出し可能な媒体からの伝送路を介して、分配され得る。
本明細書に記載されたような参照データキャッシュを提供するビデオエンコーダおよびビデオデコーダの実施例は、ディジタルビデオシーケンスをキャプチャする(又は、そうでなければ発生させる)機能、および/またはビデオシーケンスを受け取り表示する機能を備えた、事実上任意のタイプのディジタルシステム(例えば、デスクトップコンピュータ、ラップトップコンピュータ、ノート型コンピュータ、携帯電話やMP3プレーヤーなどの携帯用デバイス、パーソナル・デジタル・アシスタント、ディジタルビデオカメラ、セットトップボックス、ディジタルビデオレコーダ(DVR)等)に実装され得る。図13ないし図15は、具体的なディジタルシステムのブロック図を示す。
図13は、一つもしくは複数の実施例による埋め込まれたシステム(例えばディジタルカメラ)に適したディジタルシステムを示しており、当該実施例は、他の構成要素の中でも、本明細書で記載された方法を実施するよう構成され得る、DSPベースの画像コプロセッサ(ICP)1302、RISCプロセッサ1304、およびビデオプロセッシングエンジン(VPE)1306を含む。RISCプロセッサ1304は、任意の適切に構成されたRISCプロセッサであり得る。VPE1306は、画像センサ、ビデオデコーダ等といった映像周辺機器からのビデオキャプチャに用いられる、設定可能なビデオ処理フロントエンド(Video FE)1308入力インターフェースと、SDTVディスプレイ、ディジタルLCDパネル、HDTVビデオエンコーダ等といったディスプレイ装置に用いられる、設定可能なビデオ処理バックエンド(Video BE)1310出力インターフェースと、Video FE1308およびVideo BE1310とによってシェアされるメモリインターフェース1324とを含む。ディジタルシステムはまた、マルチメディアカード、オーディオシリアルポート、ユニバーサル・シリアル・バス(USB)コントローラ、シリアルポートインターフェース等を含み得る様々な周辺機器用の周辺インターフェース1312を含む。
Video FE1308は、画像信号プロセッサ(ISP)1316と、3A統計ジェネレータ(3A)1318とを含む。ISP1316はインターフェースを画像センサおよびディジタルビデオソースに提供する。具体的には、ISP1316は、センサ(CMOSもしくはCCD)から未処理の画像/ビデオデータを受け取り得、また様々なフォーマットでYUVビデオデータを受け取ることができる。ISP1316はまた、未処理のCCD/CMOSデータからカラーフォーマット(例えばRGB)で画像データを生成する機能を備えた、パラメータ化された画像処理モジュールを含む。ISP1316は、各々のセンサタイプ用にカスタマイズ可能であり、かつキャプチャされたディジタル画像のプレビュー表示用の、およびビデオ録画モード用のビデオフレームレートをサポートする。ISP1316はまた、他の機能の中でも、画像リサイザ、統計収集機能、および境界信号計算機を含む。3Aモジュール1318は、ISP1316もしくは外部メモリからの未処理の画像データのメトリクスを収集することによって、オートフォーカス、オートホワイトバランス、およびオート露出のためのコントロールループをサポートする機能を含む。
Video BE1310は、オンスクリーンディスプレイエンジン(OSD)1320とビデオアナログエンコーダ(VAC)133とを含む。OSDエンジン1320は、いくつかの異なるタイプのハードウェアディスプレイウィンドウ用の様々なフォーマットでディスプレイデータを管理する機能を含み、かつOSDエンジン1320はまた、単一ディスプレイへのビデオデータおよびディスプレイ/ビットマップデータを、当該データをYCbCrフォーマットのVAC1322に提供する前に、収集および混合する処理を行う。VAC1322は、OSDエンジン1320から表示フレームを取り出して、当該フレームを表示デバイスへのインターフェースに必要とされる所望の出力フォーマットおよび出力信号にフォーマットする機能を含む。VAC1322は、複合NTSC/PALビデオデバイス、S‐ビデオデバイス、ディジタルLCDデバイス、高解像度ビデオエンコーダ、DVI/HDMIデバイス等にインターフェースで接続され得る。
メモリインターフェース1324は、外部メモリへ/からデータを要求および/もしくは伝送するVideo FE1308およびVideo BE1310のモジュールへの一次ソースおよびシンクとして機能する。メモリインターフェース1324は、読出しおよび書き込みバッファと、仲裁論理とを含む。
ICP1302は、キャプチャされた画像のビデオ符号化およびその他の処理に必要とされるコンピュータによる計算を実行する機能を含む。サポートされるビデオ符号化基準は、JPEG基準、MPEG基準、およびH.26x基準のうちの一つもしくは複数を含み得る。一つもしくは複数の実施例では、ICP1302は、本明細書に記載された方法のコンピュータによる計算を実施するよう構成され得る。
動作において、画像もしくはビデオシーケンスをキャプチャするために、ビデオ信号はVideoFE1308によって受信され、ビデオ符号化を実施するために必要とされる入力フォーマットに変換される。VideoFE1308により生成されるビデオデータは、その後外部メモリに格納される。ビデオデータは次いでビデオエンコーダによって符号化されて外部メモリに格納される。符号化の間、ビデオエンコーダは本明細書に記載されたような参照データキャッシングの方法を用い得る。符号化されたビデオはその後、画像/ビデオシーケンスを表示するために、外部メモリから読み出され、復号化され、かつVideoBE1310によって後処理され得る。
図14は、本明細書に記載されたような参照データキャッシングを実行するよう構成され得るディジタルシステム1400(例えば、携帯電話)のブロック図である。単一処理ユニット(SPU)1402は、埋め込まれたメモリとセキュリティ機能とを含むディジタル信号処理システム(DSP)を含む。アナログベースバンドユニット1404は、ハンドセットマイクロフォンから音声データを受け取り、音声データストリームをハンドセットモノラルスピーカ(1413b)へ送る。アナログベースバンドユニット1404はまた、マイクロフォン(1414b)から音声データを受け取り、音声データストリームをモノラルヘッドセット(1414b)へ送る。アナログベースバンドユニット1404およびSPU1402は、別々のICであり得る。多くの実施例では、アナログベースバンドユニット1404は、プログラム可能なプロセッサコアを内蔵せずに、SPU1402で実行するソフトウェアによりセットアップされる、オーディオパス、フィルタ、ゲイン等の構成に基づいて処理を実行する。
ディスプレイ1420はまた、ネットワーク、ローカルカメラ1428、もしくはUSB1426やメモリ1412などの他のソースから受け取られた、ピクチャおよび符号化されたビデオストリームを表示し得る。SPU1402はまた、セルラーネットワークのような様々なソースから、RFトランシーバ1426やカメラ1428を介して受け取られるビデオストリームをディスプレイ1420へ送信することができる。SPU1402はまた、ビデオストリームを、エンコーダ1422を介して複合出力端子1424を通過して、外部ビデオディスプレイへ送り得る。エンコーダユニット1422は、PAL/SECAM/NTSCビデオ規格に基づく符号化を提供し得る。
SPU1402は、ビデオ符号化および復号化に必要とされるコンピュータによる計算を実行する機能を含む。サポートされるビデオ符号化基準は、例えば、JPEG基準、MPEG基準、H.26x基準および新たなHEVC基準のうちの一つもしくは複数を含む。一つもしくは複数の実施例では、SPU1402は、ビデオ符号化および/または復号化の一部として、本明細書で記載されるような参照データキャッシングを実行するよう構成される。参照データキャッシングのコンピュータの要求を実施するソフトウェア命令はメモリ1412にストアされ得、例えばピクチャもしくはビデオストリームといったディジタル画像データのキャプチャおよび/もしくは符号化および/もしくは復号化の一部としてSPU1402によって実行され得る。
図15は、プロセッサ1502、連想メモリ1504、記憶デバイス1506、およびディジタルシステムに典型的な様々な他の要素および機能(図示しない)を含むディジタルシステム1500を示す。一つもしくは複数の実施例では、ディジタルシステムは複数のプロセッサを含み得、および/もしくは、プロセッサのうちの一つもしくは複数はディジタル信号プロセッサであり得る。ディジタルシステム1500はまた、キーボード1508やマウス1510(もしくは他のカーソル制御デバイス)といった入力手段と、モニタ1512(もしくは他の表示デバイス)のような出力手段とを含み得る。当業者は、入力および出力手段は他の形態をとり得ることを理解するであろう。ディジタルシステム1500は、ビデオシーケンスをキャプチャするための回路(例えば、光学、センサ、読出し機器)を含む画像取込装置(図示しない)を含み得る。ディジタルシステム1500は、ビデオシーケンスを符号化するためのビデオエンコーダを含み得、当該ビデオエンコーダは本明細書で述べられたような参照データキャッシングを実行する機能を含む。
ディジタルシステム1500は、ネットワーク(図示しない、例えば、ローカルエリアネットワーク(LAN)、インターネットのようなワイドエリアネットワーク(WAN)、セルラーネットワーク、他の同タイプのネットワークおよび/もしくはそれらの組み合わせ)に、ネットワークインターフェース接続(図示しない)を介して接続され得る。ディジタルシステム1500はネットワークインターフェース接続を介して、記憶デバイス1506から、および/もしくはリムーバブル記憶媒体から、符号化されたビデオシーケンスを受け取り、かつ表示する機能を含み得る。ディジタルシステム1500は符号化されたビデオシーケンスを復号化するためのビデオデコーダを含み得、当該ビデオデコーダは、本明細書で述べられたような参照データキャッシングを実行する機能を含む。
さらに、当業者は、前述のディジタルシステム1500の一つもしくは複数の要素が遠隔位置に位置し得、ネットワークを介して他の要素に接続され得ることを理解するであろう。さらに、実施例は、複数のノードを有する分散システムで実施され得、システムおよびソフトウェア命令の各々の部分は、分散システム内の異なるノードに位置し得る。一つもしくは複数の実施例では、ノードはディジタルシステムであり得る。代替的に、ノードは連想物理メモリを有するプロセッサであっても良い。ノードは、代替的に、共有メモリおよび/もしくはリソースを有するプロセッサであっても良い。
本明細書で述べられたような参照データキャッシングのコンピュータによる計算を実施するためのソフトウェア命令は、コンパクトディスク(CD)、ディスケット、テープ、ファイル、メモリ、もしくはその他のコンピュータ読出し可能な記憶デバイスのような、コンピュータ読出し可能な媒体に格納され得る。ソフトウェア命令は、リムーバブルのコンピュータ読出し可能な媒体(例えば、フロッピ―ディスク、光ディスク、フラッシュメモリ、USBキー)を介して、別のディジタルシステム等のコンピュータ読出し可能な媒体からの伝送路を介して、ディジタルシステム1500に分散され得る。また、ビデオエンコーダでは、共有の参照データキャッシュを有するではなく、個別のキャッシュが動き補償および動き予測に提供され得る。
当業者は、説明された例示的な実施例に対して修正がなされ得、また多くの他の実施例が可能であることを理解するであろう。

Claims (20)

  1. 参照データキャッシュの参照データをキャッシュする方法であって、
    当該方法が、
    参照データキャッシュの参照データブロックのアドレスを受け取ることであって、当該アドレスが、ピクセルからなる参照ブロック内の参照データブロックのx座標およびy座標と、ピクセルからなる複数の参照ブロックのどの参照ブロックが参照データブロックを含むかを特定する参照ブロック識別子とを含んでいること、
    x座標からの所定数のビットおよびy座標からの所定数のビットを用いて、参照データキャッシュの一組のキャッシュラインのインデックスを計算すること、
    参照データブロックが一組のキャッシュラインにあるか否かを決定するため、前記インデックスと前記参照ブロック識別子を含むタグとを用いること、及び
    参照データブロックが前記一組のキャッシュラインにない場合は、参照データストレージから参照データブロックを取り出すこと、
    を含む、方法。
  2. 前記インデックスを計算することがさらに、ピクセルの現在のブロックが双方向に予測される場合、予測方向に基づきインデックスを調整することを含む、請求項1に記載の方法。
  3. 前記参照データキャッシュが、直近で発生されたピクセルの参照ブロックからのみ参照データブロックを記憶するよう構成される、請求項1に記載の方法。
  4. 前記参照データブロックを取り出すことがさらに、前記アドレスを、前記参照データストレージのアドレスに変換することを含む、請求項1に記載の方法。
  5. 前記参照データキャッシュが、前記一組のキャッシュラインと垂直方向のキャッシュとを含む水平方向のキャッシュを含み、前記参照データブロックを取り出すことが、前記参照データブロックが前記一組のキャッシュラインになく、かつ前記垂直方向のキャッシュにない場合、参照データストレージから前記参照データブロックを取り出すことを含む、請求項1に記載の方法。
  6. 前記方法がさらに、前記参照データブロックが前記垂直方向のキャッシュにあるか否かを決定するために、x座標およびy座標を使用することを含む、請求項5に記載の方法。
  7. 前記水平方向のキャッシュおよび前記垂直方向のキャッシュが、直近で発生されたピクセルの参照ブロックからのみ参照データブロックを格納するよう構成される、請求項5に記載の方法。
  8. ディジタルシステムであって、
    ピクセルからなる複数の参照ブロックを格納するよう構成される参照データストレージ部と、
    ピクセルからなる前記複数の参照ブロックの少なくとも1つからの参照データブロックを格納するよう構成される参照データキャッシュ部であって、参照データブロックが、当該参照データブロックを識別するタイル状のアドレッシングスキームを用いて前記参照データキャッシュ部から要求される、前記参照データキャッシュ部と、
    前記タイル状のアドレッシングスキームを用いて、前記参照データキャッシュ部からの参照データブロックを要求するよう構成される動き補償部と、
    を含み、
    前記タイル状のアドレッシングスキームが、ピクセルからなる参照ブロックの参照データブロックのx座標およびy座標と、ピクセルからなる前記複数の参照ブロックどの参照ブロックが前記参照データブロックを含むかを特定する参照ブロック識別子とを用いて、参照データブロックをアドレスすることを含む、
    ディジタルシステム。
  9. 前記参照データキャッシュ部が、ピクセルからなる前記複数の参照ブロックのうちの、直近で発生された参照ブロックからのみ参照データを格納するよう構成される、請求項8に記載のディジタルシステム。
  10. 前記ディジタルシステムがさらに、前記タイル状のアドレッシングスキームを用いて、前記参照データ部からの参照データブロックを要求するよう構成される動き予測部を含む、請求項8に記載のディジタルシステム。
  11. 前記参照データキャッシュ部がさらに、
    x座標からの所定数のビットと、y座標からの所定数のビットとを用いて、前記参照データキャッシュの一組のキャッシュラインのインデックスを計算し、
    前記参照データブロックが前記一組のキャッシュラインにあるか否かを決定するため、前記インデックスと前記参照データブロック識別子を含むタグとを用い、かつ、
    前記参照データブロックが前記一組のキャッシュラインにない場合に、前記参照データストレージから前記参照データブロックを取り出す、
    ように構成される、請求項8に記載のディジタルシステム。
  12. 前記参照データキャッシュ部がさらに、ピクセルからなる現在のブロックが双方向に予測される場合、予測方向に基づいてインデックスを調整するよう構成される、請求項11に記載のディジタルシステム。
  13. 前記参照データキャッシュ部が、前記一組のキャッシュラインと垂直方向のキャッシュとを含む垂直方向のキャッシュを含み、当該参照データキャッシュ部が、前記参照データブロックが前記一組のキャッシュラインになく、かつ前記垂直方向のキャッシュにない場合に、参照データストレージから前記参照データブロックを取り出すよう構成される、請求項11に記載のディジタルシステム。
  14. 前記参照データキャッシュ部が、前記参照データブロックが前記垂直方向のキャッシュにあるか否かを決定するためにx座標およびy座標を使用するよう構成される、請求項13に記載のディジタルシステム。
  15. 前記水平方向のキャッシュおよび前記垂直方向のキャッシュが、直近で発生されたピクセルからなる参照ブロックからのみの参照データブロックを格納するよう構成される、請求項13に記載のディジタルシステム。
  16. 参照データキャッシュの参照データをキャッシュする方法であって、
    当該方法が、
    前記参照データキャッシュの参照データブロックのアドレスを取り出すことであって、当該アドレスが、ピクセルからなる参照ブロック内の参照データブロックのx座標およびy座標と、ピクセルからなる複数の参照ブロックのどの参照ブロックが前記参照データブロックを含むかを特定する参照ブロック識別子とを含んでいること、
    前記参照ブロック識別子が、直近で発生されたピクセルからなる参照ブロックを識別しない場合に、参照データストレージから前記参照データブロックを取り出すこと、
    前記参照ブロック識別子が、直近で発生されたピクセルからなる参照ブロックを識別する場合に、前記参照データブロックが前記参照データキャッシュ内の一組のキャッシュラインにあるか否かを決定するため、インデックスと前記参照ブロック識別子を含むタグとを用いることであって、前記インデックスが、x座標からの所定数のビットとy座標からの所定数のビットとを用いて計算されること、及び
    前記参照データブロックが前記一組のキャッシュラインにない場合に、参照データストレージから前記参照データブロックを取り出すこと、
    を含む、方法。
  17. ピクセルからなる現在のブロックが双方向に予測される場合、前記インデックスが予測方向に基づいて調整される、請求項16に記載の方法。
  18. 前記参照データキャッシュ部が、前記一組のキャッシュラインと垂直方向のキャッシュとを含む水平方向のキャッシュを含み、前記参照データブロックを取り出すことが、前記参照データブロックが前記一組のキャッシュラインになく、かつ前記垂直方向のキャッシュにない場合に、参照データストレージから前記参照データブロックを取り出すことを含む、請求項16に記載の方法。
  19. 前記方法がさらに、前記参照データブロックが前記垂直方向のキャッシュにあるか否かを決定するために、x座標およびy座標を使用すること含む、請求項18に記載の方法。
  20. 前記垂直方向のキャッシュが、参照データブロックを格納する循環バッファを含む、請求項18に記載の方法。
JP2013557813A 2011-03-07 2012-03-07 ビデオ符号化のためのキャッシュ方法およびシステム Active JP6122782B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/042,449 US9122609B2 (en) 2011-03-07 2011-03-07 Caching method and system for video coding
US13/042,449 2011-03-07
PCT/US2012/027961 WO2012122209A2 (en) 2011-03-07 2012-03-07 Caching method and system for video coding

Publications (2)

Publication Number Publication Date
JP2014513883A true JP2014513883A (ja) 2014-06-05
JP6122782B2 JP6122782B2 (ja) 2017-04-26

Family

ID=46797124

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013557813A Active JP6122782B2 (ja) 2011-03-07 2012-03-07 ビデオ符号化のためのキャッシュ方法およびシステム

Country Status (3)

Country Link
US (1) US9122609B2 (ja)
JP (1) JP6122782B2 (ja)
WO (1) WO2012122209A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021175118A (ja) * 2020-04-28 2021-11-01 日本電信電話株式会社 参照画像キャッシュ、削除先決定方法及びコンピュータプログラム

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8762644B2 (en) * 2010-10-15 2014-06-24 Qualcomm Incorporated Low-power audio decoding and playback using cached images
US9094684B2 (en) * 2011-12-19 2015-07-28 Google Technology Holdings LLC Method for dual pass rate control video encoding
US20130272398A1 (en) * 2012-01-25 2013-10-17 Sharp Laboratories Of America, Inc. Long term picture signaling
US20130188709A1 (en) 2012-01-25 2013-07-25 Sachin G. Deshpande Video decoder for tiles with absolute signaling
US9584825B2 (en) * 2012-09-27 2017-02-28 Qualcomm Incorporated Long-term reference picture signaling in video coding
US9363524B2 (en) * 2013-08-26 2016-06-07 Amlogic Co., Limited Method and apparatus for motion compensation reference data caching
KR101550831B1 (ko) * 2013-08-29 2015-09-08 한국과학기술원 영상 최적화 롤링 캐시 시스템
KR101904421B1 (ko) * 2013-09-27 2018-11-30 삼성전자주식회사 캐시 메모리를 제어하는 방법 및 장치.
TWI513282B (zh) * 2013-11-21 2015-12-11 Mstar Semiconductor Inc 快取記憶體管理裝置及應用該快取記憶體管理裝置之動態影像系統及方法
JP6490896B2 (ja) * 2013-12-17 2019-03-27 株式会社メガチップス 画像処理装置
CN104731519B (zh) * 2013-12-20 2018-03-09 晨星半导体股份有限公司 快取存储器管理装置及应用该快取存储器管理装置的动态影像系统及方法
US9386234B2 (en) 2014-07-31 2016-07-05 Apple Inc. Auto filter extent management
US9918102B1 (en) * 2015-06-22 2018-03-13 Ambarella, Inc. Inter-prediction candidate selection in a mode decision
CN105120286B (zh) * 2015-06-26 2019-01-18 福州瑞芯微电子股份有限公司 一种视频解码参考帧取数方法及设备
US10516891B2 (en) * 2015-11-20 2019-12-24 Intel Corporation Method and system of reference frame caching for video coding
CN113628240A (zh) 2017-04-21 2021-11-09 泽尼马克斯媒体公司 通过预期运动矢量的玩家输入运动补偿
US11170463B2 (en) 2017-05-19 2021-11-09 Movidius Limited Methods, systems and apparatus to reduce memory latency when fetching pixel kernels
CN108521605A (zh) * 2018-04-12 2018-09-11 中国科学院电子学研究所 遥感视频的播放方法和播放系统
US11210221B2 (en) * 2019-12-10 2021-12-28 Pony Ai Inc. Memory architecture for efficient spatial-temporal data storage and access
US20220046254A1 (en) * 2020-08-05 2022-02-10 Facebook, Inc. Optimizing memory reads when computing video quality metrics

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0553909A (ja) * 1991-08-23 1993-03-05 Pfu Ltd 画像データ処理におけるキヤツシユメモリ制御方式
JPH0950399A (ja) * 1995-08-10 1997-02-18 Fujitsu Ltd 多次元空間に配列されたデータの処理に適したキャッシュメモリシステム
JPH09101915A (ja) * 1995-10-06 1997-04-15 Matsushita Electric Ind Co Ltd キャッシュメモリの制御方法
WO2004017640A1 (ja) * 2002-08-13 2004-02-26 Renesas Technology Corp. 信号処理装置およびシステム
US20070008323A1 (en) * 2005-07-08 2007-01-11 Yaxiong Zhou Reference picture loading cache for motion prediction
US20070176939A1 (en) * 2006-01-30 2007-08-02 Ati Technologies, Inc. Data replacement method and circuit for motion prediction cache
JP2008033688A (ja) * 2006-07-28 2008-02-14 Fujitsu Ltd キャッシュメモリ制御方法、及び装置
WO2008029550A1 (en) * 2006-09-06 2008-03-13 Sony Corporation Image data processing method, program for image data processing method, recording medium with recorded program for image data processing method and image data processing device
JP2008278423A (ja) * 2007-05-07 2008-11-13 Matsushita Electric Ind Co Ltd 動画像復号化集積回路、動画像復号化方法、動画像復号化装置及び動画像復号化プログラム
US20080292276A1 (en) * 2007-05-22 2008-11-27 Horvath Thomas A Two Dimensional Memory Caching Apparatus for High Definition Video
JP2009087139A (ja) * 2007-10-01 2009-04-23 Mitsubishi Electric Corp キャッシュメモリ制御装置
JP2010146205A (ja) * 2008-12-17 2010-07-01 Toshiba Corp キャッシュメモリ装置及び画像処理装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5924116A (en) * 1997-04-02 1999-07-13 International Business Machines Corporation Collaborative caching of a requested object by a lower level node as a function of the caching status of the object at a higher level node
US6349360B1 (en) * 1999-11-09 2002-02-19 International Business Machines Corporation System bus read address operations with data ordering preference hint bits
SG111087A1 (en) * 2002-10-03 2005-05-30 St Microelectronics Asia Cache memory system
US20060050976A1 (en) 2004-09-09 2006-03-09 Stephen Molloy Caching method and apparatus for video motion compensation
US8325798B1 (en) * 2005-12-15 2012-12-04 Maxim Integrated Products, Inc. Adaptive motion estimation cache organization
JP4755624B2 (ja) * 2007-04-23 2011-08-24 ルネサスエレクトロニクス株式会社 動き補償装置
US8463997B2 (en) * 2007-08-16 2013-06-11 Samsung Electronics Co., Ltd. Apparatus and method of caching frame
US8446955B2 (en) 2007-12-28 2013-05-21 Advanced Micro Devices, Inc. Speculative motion prediction cache

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0553909A (ja) * 1991-08-23 1993-03-05 Pfu Ltd 画像データ処理におけるキヤツシユメモリ制御方式
JPH0950399A (ja) * 1995-08-10 1997-02-18 Fujitsu Ltd 多次元空間に配列されたデータの処理に適したキャッシュメモリシステム
JPH09101915A (ja) * 1995-10-06 1997-04-15 Matsushita Electric Ind Co Ltd キャッシュメモリの制御方法
WO2004017640A1 (ja) * 2002-08-13 2004-02-26 Renesas Technology Corp. 信号処理装置およびシステム
US20070008323A1 (en) * 2005-07-08 2007-01-11 Yaxiong Zhou Reference picture loading cache for motion prediction
US20070176939A1 (en) * 2006-01-30 2007-08-02 Ati Technologies, Inc. Data replacement method and circuit for motion prediction cache
JP2008033688A (ja) * 2006-07-28 2008-02-14 Fujitsu Ltd キャッシュメモリ制御方法、及び装置
WO2008029550A1 (en) * 2006-09-06 2008-03-13 Sony Corporation Image data processing method, program for image data processing method, recording medium with recorded program for image data processing method and image data processing device
JP2008278423A (ja) * 2007-05-07 2008-11-13 Matsushita Electric Ind Co Ltd 動画像復号化集積回路、動画像復号化方法、動画像復号化装置及び動画像復号化プログラム
US20080292276A1 (en) * 2007-05-22 2008-11-27 Horvath Thomas A Two Dimensional Memory Caching Apparatus for High Definition Video
JP2009087139A (ja) * 2007-10-01 2009-04-23 Mitsubishi Electric Corp キャッシュメモリ制御装置
JP2010146205A (ja) * 2008-12-17 2010-07-01 Toshiba Corp キャッシュメモリ装置及び画像処理装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
MADHUKAR BUDAGAVI: "A simple model for measuring motion compensation bandwidth", JOINT COLLABORATIVE TEAM ON VIDEO CODING (JCT-VC) OF ITU-T SG16 WP3 AND ISO/IEC JTC1/SC29/WG11, vol. JCTVC-C228, JPN6016002283, October 2010 (2010-10-01), pages 1 - 2, ISSN: 0003514601 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021175118A (ja) * 2020-04-28 2021-11-01 日本電信電話株式会社 参照画像キャッシュ、削除先決定方法及びコンピュータプログラム
JP7406206B2 (ja) 2020-04-28 2023-12-27 日本電信電話株式会社 参照画像キャッシュ、削除先決定方法及びコンピュータプログラム

Also Published As

Publication number Publication date
WO2012122209A2 (en) 2012-09-13
JP6122782B2 (ja) 2017-04-26
US9122609B2 (en) 2015-09-01
WO2012122209A3 (en) 2013-01-31
US20120233405A1 (en) 2012-09-13

Similar Documents

Publication Publication Date Title
JP6122782B2 (ja) ビデオ符号化のためのキャッシュ方法およびシステム
US20240107042A1 (en) CABAC Decoder with Decoupled Arithmetic Decoding and Inverse Binarization
US20190273929A1 (en) De-Blocking Filtering Method and Terminal
JP6339099B2 (ja) 次世代ビデオのパーティションデータのコンテンツ適応的エントロピーコーディング
JP6120390B2 (ja) 次世代動画用コンテンツに適応的な特性補償済み予測
TW202415074A (zh) 用加權平均進行區塊式雙向預測
US20100215104A1 (en) Method and System for Motion Estimation
JP7372426B2 (ja) ビデオビットストリームの中のオフセットによる参照ピクチャ再サンプリングの方法
CN112534808A (zh) 视频处理方法、视频处理装置、编码器、解码器、介质和计算机程序
WO2020038378A1 (zh) 色度块预测方法及装置
JP2022535859A (ja) Mpmリストを構成する方法、クロマブロックのイントラ予測モードを取得する方法、および装置
JPWO2011089798A1 (ja) 動画像符号化方法、動画像復号化方法、動画像符号化装置および動画像復号化装置
KR20150047379A (ko) 비디오 인코딩 장치 그리고 이의 구동 방법
US8879629B2 (en) Method and system for intra-mode selection without using reconstructed data
KR20190042234A (ko) 영상 부호화 장치 및 인코더
US20150055707A1 (en) Method and Apparatus for Motion Compensation Reference Data Caching
WO2020147514A1 (zh) 视频编码器、视频解码器及相应方法
JP2017183910A (ja) 画像符号化装置及び画像符号化方法
US20220109889A1 (en) Apparatus, articles of manufacture, and methods for improved adaptive loop filtering in video encoding
US20110142135A1 (en) Adaptive Use of Quarter-Pel Motion Compensation
JP4515870B2 (ja) 信号処理装置及び映像システム
CN113316939A (zh) 一种标志位的上下文建模方法及装置
JP2008289105A (ja) 画像処理装置およびそれを搭載した撮像装置
RU2783385C2 (ru) Кодер, декодер и соответствующие способы с использованием компактного mv хранилища
US10334262B2 (en) Moving-picture decoding processing apparatus, moving-picture coding processing apparatus, and operating method of the same

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20130909

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150305

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160119

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160126

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20160426

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20160426

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20160624

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160726

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160823

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20161122

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20170123

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170221

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170314

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170403

R150 Certificate of patent or registration of utility model

Ref document number: 6122782

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313117

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250