FC2カウンター FPGAの部屋 ZynqのSIMDエンジンNEONについての資料

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

ZynqのSIMDエンジンNEONについての資料

ZynqにはARMのCortex-A9 プロセッサがDualで入っているが、NEONというSIMDエンジンが搭載されている。
下にZynqの内部ブロック図の一部を示す。NEONは各プロセッサに付いている。
NEON_1_150705.png

NEONはSIMD (Single Instruction Multiple Data) 演算を行うことができる。つまり、1つの命令で複数の演算を行うということだ。

NEONを使用するとソフトウェアがどのくらい速くなるかを検証する。とりあえずは、ラプラシアンフィルタ処理を行った場合の速度を測定してみたい。

NEONに関する資料を示す。
最初は、ARM社の資料で”Cortex™-A9 NEON™ メデ ィ ア処理エンジン リビジョン : r2p2 テクニカルリ フ ァレンス マニュアル

ARM社の”ベクタ浮動小数点命令セ ッ ト クイックリファレンスカード

Xilinx社のZynq用のNEONマニュアル”NEON を使用して Zynq-7000 AP SoC でのソフ ウェア性能を向上 XAPP1206 (v1.1) 2014 年 6 月 12 日
10ページからの”ソ フトウェア性能最適化方法”の”NEON 最適化ライブラリを使用する方法”によると、gcc の最適化レベルを -O2 または -O3 にして、-mcpu=cortex-a9 -mfpu=neon -ftree-vectorize -mvectorize-with-neon-quad -mfloat-abi=softfp -ffast-math オプションを付けるとNEONのコードを出力してくれるようだ。お手軽なのでやってみよう。

ブログでは、”ARMのNEONのSIMD命令をgccのオートベクタライズの最適化で使う方法 2013年06月27日”がある。

同様にNEONの最適化ライブラリを使用する方法のブログは”ARM NEONの128bit演算とgcc(メモ)”、”ARM NEONの128bit演算とgcc (2)”がある。

インライン・アセンブラでNEON命令を直接書くブログは、”ARM NEON命令を使って画像の回転”がある。

とりあえずはお手軽な gcc のコンパイラオプションで自動ベクトル化、NEONを使うようにしてみようと思う。
  1. 2015年07月05日 04:50 |
  2. Zynq
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
http://marsee101.blog19.fc2.com/tb.php/3192-f4d4a080
この記事にトラックバックする(FC2ブログユーザー)