システムを構成する上ではプロセッサの選定というものは重要であります。そのなかでLSI化を考えた場合、XtensaはTIE命令等を使うことでクロックを上げずに性能を上げることが出来、他に負けない素材を もっており、システム開発おいては非常に重要なプロセッサの 一つであると考えております。
ただし、LSI化だからXtensaというわけでは無く、メリット・デメリットを 考えた上で、選択する必要があると考えています。
Xtensa
メリット
- TIE命令でクロックを上げずに性能を上げることが出来る
- ISAの構成やキャッシュサイズの変更が可能であり、無駄のない構成にすることが出来る
- ISSを利用して先行して性能評価が出来る
デメリット
- 対応OSが少ない
- FPGAへの実装時に速度が出ない
今回はその中で、ローエンド向けのプリンティングシステムへ適用した事例を紹介します。 本システムでは、JPEG画像の「展開」、印刷サイズへの「リサイズ」を行い、「補正まで」を行って印刷機で出力するというようなシステムとなります。
これに対してお客様からのコストを上げずに印刷性能を倍にしたいという要望に対して、Xtensaをご提案させていただき、FSから進め製品化を行った例となります。
弊社によるXtensaの活用で4倍の高速化を達成。 最終製品で高画素化したJPEG画像の印字に対応できました。
まず性能向上について考えます。 どの処理に時間がかかっているのかを抑える必要があり、 そのためにInstruction Set Simulatorのプロファイルデータを利用して確認していきます。
高速化のアプローチは
- 命令セットの構成変更
- キャッシュの最適化
- TIEの活用
さまざまなものが考えられますが、 中でも何回も実行されるような処理に着目することで、 効率よく高速化を行うことが出来ます。 今回はTIE命令化とキャッシュの最適化の2つ のアプローチを行いました。
まずISSのプロファイル結果から抽出した処理をTIE命令化します。 黄色い部分の、1pixel単位で実行されるYCbCr-RGBカラー変換処理。この処理は4つの乗算に4つの加減算処理があり、 さらに演算後の値のクリップ処理が含まれます。 これをTIE命令にすることにより、1サイクルで実行することが出来るようになり、結果、約8分の1に処理時間が短縮することが出来ました。 同様に他の処理についてもTIE命令を適用していくことで、 目標の速度に対して十分に高速化できます。
全てのTIE命令を適用すると速度は速くなりますが、サイズが大きくなりチップが大きくなるということは、コストがかかってしまうということになります。 処理性能とサイズを考え、お客様とシステムに合ったTIE命令の組み合わせを選択します。
処理が決まった所でキャッシュについて最適化を行います。Cacheについては、InstructionキャッシュとDataキャッシュについてサイズとWAY数を振ってISSにて処理性能を確認した結果がこのグラフとなります。
Iキャッシュについては、小さいサイズで性能が向上した後は、 キャッシュサイズを大きくしてもほぼ変わらないことがわかります。 このためIキャッシュについては小さいサイズで十分となります。 Dキャッシュについては、キャッシュサイズを大きくしていくことで性能は 向上していきますが、だんだん伸びは鈍化しています。 また、WAY数については2WAY以降は大きく変わらないことがわかります。 これらの結果よりお客様とともに最適なキャッシュサイズを選択しました。
TIE命令化とキャッシュの最適化により、本システムは、お客様に満足して頂けるコストとパフォーマンスのバランスのとれた製品となりました。 実際には製品が出た後、しばらくたちますと、ディジタルカメラ等の高画素化が進み、それに従って扱うJPEGの画素数も増加していきます。こののち処理時間増加にともなう処理高速化にも対応することとなりました。 この事例についても別途ご紹介します。