最終更新:2017-03-16 (木) 16:23:02 (2591d)  

VFP
Top / VFP

Vector Floating Point

ARM浮動小数点アーキテクチャ

ARMアーキテクチャのコプロセッサ拡張。

半精度?(v3以降)・単精度?倍精度?浮動小数点演算?機能を提供

メモ

  • http://www.oidon.net/linux/arm-floating-point
  • ARMプロセッサコアは、浮動小数点演算のためのハードウェアを含んでいません。代わりに、浮動小数点演算は以下のいずれかの方法で実現されます。

Floating Point Accelerator (FPA?)

  • ARM7500FEなどで使用されていたようです。現在は使われていません。

Vector Floating Point (VFP)

  • IEEE 754に対応し、単精度と倍精度の浮動小数点演算をおこなうことができます。ARM9/ARM10?/ARM11に実装することができます。

Floating Point Unit (FPU)

その他

  • 上記に挙げたもの以外に、チップメーカ独自の浮動小数点演算コプロセッサがある

バージョン

以前

  • ARMv7より前のアーキテクチャでは、VFPはVector Floating-point Architectureを表し、ベクタ演算に使用されていました。

VFPv1?

  • 廃止。 詳細については、ARMまでお問い合わせください。

VFPv2

  • ARMv5TEARMv5TEJ?ARMv6 で利用可能
  • VFP9-S? - ARM926E?ARM946E?、およびARM966E?プロセッサの別ライセンスオプションとして入手可能
  • VFP10?

VFPv3

  • ARMv7 で利用可能。通常はレジスタ数32個
  • ARMv7-AプロファイルとARMv7-R?プロファイルにおけるARMThumbThumbEEの各命令セットに対するオプションの拡張機能
  • VFPv3を実装するARMv7世代以降ではモダンなSIMD命令セットであるAdvanced SIMD拡張命令 (NEON) が導入されたため、現在ではベクタモードの利用は推奨されていない
  • 現在のARMアーキテクチャにおけるVFPの位置づけはスカラ専用の浮動小数点演算コプロセッサであり、SIMD演算用途についてはNEONに道を譲っている。
  • ARM Cortex-A8の実装はパイプライン化されておらず非常に低速 (VFP Lite?)。

VFPv3-D16

  • NVIDIA Tegra 2 シリーズなどはレジスタ数が半分のVFPv3-D16を採用。
  • NEONがなく、倍精度レジスターは半分の16本のみ。

VFPv4

VFPv4

  • 無印は全機能実装。VFPv3-FP16相当のhalf型(FP16)機能も対応する

VFPv4-D16?

  • half型に対応するが、NEONがなく、倍精度レジスターは半分の16本のみの廉価版。D16〜D31にアクセスすると未定義命令例外。
  • ARM Cortex-A5などに存在する

NEON

  • NEON拡張は、ARMv7-AARMv7-R? のアーキテクチャでのみオプションとして使用できます
  • レジスタはVFPレジスタとして用意されている32本の64ビットレジスタを用いる

AArch64

  • 128ビット長のレジスタが16個から32個に倍増
  • NEONで倍精度の浮動小数点演算をサポート
  • NEONの浮動小数点演算がIEEE 754規格準拠に

参考