2011年12月28日

JZ47XXの動画デコード

動画デコードがGPUの機能だと誤解している人が多そうなので、整理してみようかと思う。

Jz47xx は、PMP用に使われた JZ4755 の世代から 同じ能力の CPU を 2個積んでいる。1 つは 動画専用プロセッサとして使われていて、SMP ではない。

この CPU は、SIMD 命令を持っていて DCT/IDCT などの動画の処理が高速に出来るようになっている。ARM だと Cortex-A8 以降で NEON という命令群をサポートしているが、それと同じような機能だと考えて良い。

    細かいことを言うと SIMD命令 には、SIMD と SIMD2(JZ475X以降で追加) がある。これらをまとめて XMU(Xburst Multimedia Extension)命令 ということもある。これらの命令の詳細は公開されていないが、それを使った mplayer のソースコードは以下で公開されている。

    ftp://ftp.ingenic.cn/3sw/JZ4770/05mplayer/

    あと、Xburst の SIMD命令は、32bit を対象にする。NEON が 128bit を一気に処理できるのと比べると しょぼいのではあるが、命令が最適化されているのか 実用的なレベルになっている。

要するにほとんど CPU とそれが持つ SIMD命令 が 動画の処理をしているのだ。

ほとんどと書いたのは、他にも 動画用の機能があるため。ひとつは、IPU (Image Process Unit) と呼ばれるもの。これは、リサイズと 色空間の変換 をして フレームバッファに 画像を送り込む機能。回転はできない。

    GPU は、回転するときに使われるかも知れないのだが、メインの機能では関与しない(はず)

JZ4760 からは、CPU の中に bitstream をハンドリングする 機能が加わっている。詳細はよく分からないが、CABAC と呼ばれているようだ。

さて、VPU だが、上に書いた DCT/IDCT を含めていつかの機能しか持たない。

  • Motion compensation
  • Motion estimation
  • De-block
  • DCT/IDCT
  • Parser (JZ4760以降)

これで全部。Parser というのがよく分からないが、CABAC を使った 機能に思える。

JZ4770 は、CPU を 1GHz で動かすが、VPU は 500 MHz にクロックダウンしている。1080p のデコードではもはや フルスピードで動かす必要はないのだろう。


ファイル → Parser MC IDCT De-block 色空間変換  → LCD
   (bitstream処理) (YUV → RGB)

CPU/VPU CPU/VPU CPU/VPU CPU/VPU IPU     LCD-IF

図で書くとこんな感じ。VPU で出来ることは CPU でも出来る。どう分担するかは コード次第。

さて、JZ4770 の次の CPU として、Xburst1 の 40nm のプロセッサがある。(Roadmap) これには SMP の機能が追加されていることだけが 分かっている。VPU を汎用に使えるようにしたものだと思う。たぶん SMP として使う場合は、VPU は使えない。

    2012年1月発売予定の Aurora/Wizard は、Xburst1 の 40nm のプロセッサを使っているのではないかと思われるのだが、最初から SMP かどうかは分からない。

    対応するのは、結構大変だと思うのだ。最初は、VPU として使うようにして、あとで SMP 対応ファームウェアを出して来るような気がしている。

    あと、40 nm が 1.3 - 1.5 GHz となっているが、ちょっと 低いような。65nm の JZ4770 が 1.2 GHz までいけるなら 1.8 GHz 以上でも不思議はない。これも後で クロックアップするのかも。

追記: GPU の 解説 URL
posted by すz at 20:09| Comment(0) | TrackBack(0) | android
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/52512094
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック