armhfとは?初心者向けに解説するARMの硬浮動小数点ABIの基礎共起語・同意語・対義語も併せて解説!

  • このエントリーをはてなブックマークに追加
armhfとは?初心者向けに解説するARMの硬浮動小数点ABIの基礎共起語・同意語・対義語も併せて解説!
この記事を書いた人

高岡智則

年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)


armhfとは何か

armhfは ARM hard float ABI の略語で、32-bit の ARM CPU における浮動小数点演算の扱いを指します。ABIとはアプリケーションがOSとやり取りする約束事のことです。armhf の「hard float」は浮動小数点の計算をハードウェアの浮動小数点ユニット(FPU)で実行することを意味します。

これに対して armel は soft-float ABI で、浮動小数点をソフトウェアでエミュレートします。armhf はハードウェア FPU を利用できるCPUで最高のパフォーマンスを発揮しますが、FPU を搭載していない古いCPUやエミュレーション環境では動作しないことがあります。

どんなCPUで使われるのか

ARMv7 以降のプロセッサで、VFP または NEON といった浮動小数点ユニットを搭載しているものが armhf の対象です。代表的な例として Raspberry Pi 2/3 などがあります。一方、古い ARMv6 系列や一部の低価格デバイスでは armel が適しています。

なぜ armhf が重要か

浮動小数点演算を ハードウェア で実行できるので、数値計算やメディア処理、画像処理などの処理が速くなります。ソフトウェアで FP をエミュレートするarmel より、armhf の方が通常はパフォーマンスが高く、同じCPUでも省電力で快適な動作が期待できます。

導入と使い方のポイント

ディストリビューションの選択時には、ARM版のリポジトリ名に armhf が含まれているかを確認します。Debian や Ubuntu などの ARM 版では、パッケージ名やリポジトリが armhf 用と armel 用に分かれているケースが多いです。

ソフトウェアをコンパイルする場合は、ビルド設定で -mfpu=neon-mfloat-abi=hard などのフラグを用いて armhf 用にビルドします。クロスコンパイルを行う場合には適切なツールチェーンの選択が必要です。また、ライブラリ側も armhf 用にビルドされている必要があります。

armhf と armel の比較表

比較項目armhfarmel
対象CPUARMv7 以降、FPU 搭載古い ARM、FPU 不要または未搭載
浮動小数点ハードウェア FPソフトウェア FP
パフォーマンス通常は高い低い場合がある
互換性の目安新しいライブラリと連携古い環境向け

アップデートと移行の注意

新しいシステムからarmhf に移行するときは、既存のソフトウェアライブラリの互換性を確認してください。ABI の非互換は起き得ます。パッケージの依存関係やリポジトリの切り替え時には、事前にバックアップをとり、公式の資料を参照して、armhf 用と armel 用を混在させないようにします。

まとめとして、armhf は現代の ARM 32-bit 環境で高い性能を引き出す合図です。CPU が FPU を搭載しているかを事前に確認し、対応するディストリビューションの armhf リポジトリを選ぶと良いでしょう。もし古いデバイスを使っている場合には armel を選択するのが安全です。


armhfの同意語

armhf
32ビット ARM アーキテクチャで、ハードウェア浮動小数点演算を使う ABI(ハードフロート ABI)を指す識別子。ARM EABI に基づく hard-float 実装を表現する。
ARM hard-float
ARM のハードウェア浮動小数点を使用する ABI の別称。armhf と同義で、32ビット ARMv7 以降を対象にすることが多い表現。
ARM hard-float ABI
ARM アーキテクチャ用のハードフロート ABI の正式名称のひとつ。関数呼び出し規約やデータの整列がハードフロート前提。
ARM EABI hard-float
ARM EABI 準拠の hard-float ABI。armhf の背景にある規格で、EABI に基づく呼び出し規約を使うことを指す。
32-bit ARM hard-float
32ビット ARM アーキテクチャで、ハードウェア浮動小数点を使用する ABI の表現。armhf の説明として使われることが多い。
ARMv7 hard-float
ARMv7系のアーキテクチャで使用される hard-float ABI。armhf の対象バージョンのひとつとして用いられることがある。
ハードフロート ARM ABI
日本語表現で、ARM のハードウェア浮動小数点を前提とした ABI のこと。armhf の意味と同じ。
ARM ハードフロート
ARM のハードウェア浮動小数点を利用する ABI の略称・日本語表現。armhf と同義。
32ビット ARM の hard-float ABI
32-bit ARM のハードフロート ABI の説明表現。armhf の基本説明と同義。

armhfの対義語・反対語

armel
ARMのsoft-float ABI(浮動小数点をソフトウェアで処理する設定)。32-bit ARMでハードウェアFPUを前提としない設計で、armhfの“反対語”としてよく挙げられる。
aarch64 (arm64)
64-bit ARMアーキテクチャ。armhfの32-bitに対する対照となる代表的な対義語で、使用するCPUとABIが異なる新世代のARMです。
x86_64 / amd64
ARM系ではなくx86系の64-bitアーキテクチャ(Intel/AMD系)。armhfとは別CPUファミリで、プラットフォームの対照として挙げられることが多い。
softfp
浮動小数点の扱いをハードウェアFPUとソフトウェアで共用できるABIの一種。armhfの厳密な反対語ではありませんが、浮動小数点処理の実装方式の対照として使われることがあります。
soft-float
ソフトウェア浮動小数点(soft-float)を使う設計。armelと同義・近い概念で、ハードウェアFPUを使わない前提を示す表現として分かりやすい反対語になります。

armhfの共起語

armel
ARM soft-float ABI(ソフト浮動小数点): 32ビット ARM で浮動小数点演算をハードウェアFPUを使わずソフトウェアで実行するためのABI。Debian/Ubuntu の古いARMポートで主に使われていました。
aarch64
ARM 64-bit アーキテクチャ(通称 arm64、ARMv8-A): 32-bit の armhf の対になる64-bitのアーキテクチャ。近年の多くのディストリビューションでサポート
armv7l
ARMv7 アーキテクチャのCPU識別子(uname -m で表示されることが多い): 主に armhf の対象デバイスで用いられる32-bit の識別子。
Raspberry Pi
armhf を搭載する代表的なデバイス群を指す呼称。特に Raspberry Pi 2/3 などで armhf 系のOSが安定して動作します。
Raspbian
Raspberry Pi 専用OSの旧称。armhf/ARM hard-float に最適化されたビルドを提供していました(現在は Raspberry Pi OS に改称)。
Debian ARM
Debian の ARM 向けポート。armhf はこの中で最も普及している32-bit hard-float ポートです。
Ubuntu ARM
Ubuntu の ARM 向けポート。armhf(32-bit hard-float)と arm64 が主力。
dpkg-architecture
Debian 系のパッケージ管理ツール。アーキテクチャの識別やクロスビルド設定を行う際に使われます。
Multiarch
マルチアーキテクチャ対応。1つのOS環境で複数アーキテクチャのパッケージを扱える仕組み。
gcc-arm-linux-gnueabihf
ARM hard-float 用のクロスコンパイラプリフィックス。ホスト環境から armhf 向けバイナリをビルドする際に使います。
gcc-arm-linux-gnueabi
ARM soft-float 用のクロスコンパイラプリフィックス。armel 向けバイナリをビルドする際に使います。
QEMU
QEMU による ARM エミュレーションやクロス実行。armhf バイナリを他の環境で動作検証する際に使われることがあります。
クロスコンパイル
別のアーキテクチャ向けにバイナリを作る作業。armhf 向けソフトウェアを別環境でビルドする際の基本手法。
VFP
Hardware Floating Point Unit(浮動小数点演算ユニット)の略。armhf の前提となるハードウェア機能。
FPU
Floating Point Unit の略。浮動小数点演算を処理する部品の総称。
VFPv3-D16
armhf でよく用いられる VFP の実装のひとつ。D16 は浮動小数点レジスタ構成を表す表現の一つ。
ARM EABI
ARM 用の Application Binary Interface(ABI)の規格。armhf はこの EABI に準拠して動作します。
Hard-float ABI
ハードウェア浮動小数点を利用する ABI。armhf の基本特徴の一つ。
ARMv7
32-bit ARM の世代のひとつ。armhf の多くはこの世代のチップを対象にしています。
パッケージ互換性
armhf のパッケージと他のアーキテクチャとの互換性や移行時の注意点が共起します。
armhfポート
公式にarmhfとしてサポートされる ARM アーキテクチャ系のビルド・ポート。
Raspberry Pi OS
Raspberry Pi 専用の最新OS。armhf/arm64 のビルドを提供し、Raspberry Pi 環境での動作を最適化します。

armhfの関連用語

armhf
32ビット ARM の hard-float ABI。ハードウェア浮動小数点ユニット(FPU)を前提にした呼び出し規約で、パフォーマンス重視の環境で使われます。
armel
32ビット ARM の soft-float ABI。ハードウェアFPUを前提とせず、浮動小数点もソフトウェアで処理する規約です。
aarch64
64ビット ARM アーキテクチャの名称。通称 AArch64、ARMv8-A の実装モードを指します。
arm64
aarch64 の別名。64ビット ARM の呼称として用いられることが多い表記です。
ARMv7-A
32ビット ARMv7 アーキテクチャのAプロファイル。主にスマートフォンや高性能組み込み機で使用されます。
ARMv8-A
ARMv8 の Aプロファイル。64ビット対応で、後方互換として ARMv7 も一部サポートします。
VFP
Vector Floating Point ユニット。浮動小数点演算をハードウェアで高速化するFPUの総称です。
VFPv3-D16
VFP の世代とD16(16の浮動小数点レジスタ)構成を示す表記。armhf で用いられることが多い構成の一つです。
VFPv4
VFP の第4世代。パフォーマンスと機能が向上したFPUの世代です。
NEON
ARM の SIMD 拡張機能。ベクトル演算を使ってメディア処理や画像処理を高速化します。
EABI
Embedded Application Binary Interface の略。ARM 系のILP32/LPU/データ整列、呼び出し規約などを統一した規格。
ARM EABI
ARM 向けの EABI 規格。ARM アーキテクチャの標準的なバイナリ互換性を定義します。
hard-float
ハードウェア浮動小数点を使う ABI のこと。armhf はこれを採用します。
soft-float
ソフトウェアで浮動小数点を処理する ABI のこと。armel や一部の互換状況で使われます。
softfp
softfloat と hardfloat の互換性をとる中間的な呼び出し規約のこと。古い環境での互換性維持に用いられます。
little-endian
リトルエンディアン。最下位バイトを先頭に並べるデータの並び規則です。
big-endian
ビッグエンディアン。最上位バイトを先頭に並べるデータの並び規則です。
Raspberry Pi
ARMベースの小型シングルボードPC。armhf 32-bit OS が主に使われる代表的なデバイスです。
Debian armhf port
Debian の 32ビット ARM hard-float 用公式ポート。armhf アーキテクチャを対象にしています。
Ubuntu ARMHF
Ubuntu の 32ビット ARM hard-float ポート。armhf アーキテクチャを対象とします。
cross-compilation
別のアーキテクチャ向けにソフトウェアをビルドする手法。主に開発環境とターゲット環境が異なる場合に用います。
toolchain
コンパイラ、アセンブラ、リンカ、ライブラリなど、開発に必要な一連のツール群の総称。
triplet
コンパイル時のターゲットを表す識別子(例: arm-linux-gnueabihf)。クロスコンパイルでよく使われます。
binutils
アセンブリ、リンク、デバッグなどを行うツール群(objdump, ld など)の総称。
GCC
GNU Compiler Collection。C/C++ などをビルドする主要なコンパイラ群。
glibc armhf
ARM hard-float 向けの GNU C Library。C 標準ライブラリの実装です。
QEMU
エミュレーター。異なるアーキテクチャのソフトをホスト上で実行・検証できます。
multi-arch
一つのOSで複数のアーキテクチャを同時にサポートする仕組み

armhfのおすすめ参考サイト


インターネット・コンピュータの人気記事

awstatsとは?初心者でもわかる使い方と基本解説共起語・同意語・対義語も併せて解説!
15492viws
bing・とは?初心者のための基本ガイド:検索エンジンの仕組みと使い方共起語・同意語・対義語も併せて解説!
2487viws
着信転送とは?初心者向けガイドで分かる使い方と設定のコツ共起語・同意語・対義語も併せて解説!
1113viws
差し込み印刷・とは?初心者でもすぐわかる使い方と仕組みガイド共起語・同意語・対義語も併せて解説!
1093viws
com端子・とは?初心者にも分かる基礎ガイド|シリアルポートの使い方と歴史を解説共起語・同意語・対義語も併せて解説!
986viws
充電アダプターとは何かを徹底解説|初心者でも分かる基本と選び方のコツ共起語・同意語・対義語も併せて解説!
936viws
7zファイル・とは?初心者でもわかる使い方と特徴を解説共起語・同意語・対義語も併せて解説!
899viws
全角文字とは?初心者向け解説|全角と半角の違いをやさしく学ぶ共起語・同意語・対義語も併せて解説!
885viws
リマインドメールとは?初心者にもわかる基本ガイドと使い方のコツ共起語・同意語・対義語も併せて解説!
825viws
pinロックとは?初心者が知っておくべき基本と使い方ガイド共起語・同意語・対義語も併せて解説!
824viws
none とは?初心者にもやさしく解説する意味と使い方ガイド共起語・同意語・対義語も併せて解説!
753viws
16進数カラーコード・とは?初心者でもつまずかない基礎と使い方ガイド共起語・同意語・対義語も併せて解説!
742viws
ローカルポート・とは?初心者にも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
648viws
xlsmとは?初心者でも分かるExcelのマクロ付きファイルの基本共起語・同意語・対義語も併せて解説!
646viws
asp・とは?初心者向けに徹底解説する基本と使い方ガイド共起語・同意語・対義語も併せて解説!
642viws
countifとは?初心者でもすぐ使える基本と応用ガイド共起語・同意語・対義語も併せて解説!
575viws
ワンタイムコード・とは?初心者でも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
563viws
sha256とは?初心者が知るべき暗号ハッシュの基礎と使い道共起語・同意語・対義語も併せて解説!
543viws
csvダウンロードとは?初心者が今すぐ使える基本ガイド共起語・同意語・対義語も併せて解説!
536viws
googleドキュメントとは?初心者が今日から使いこなす基本ガイド共起語・同意語・対義語も併せて解説!
498viws

新着記事

インターネット・コンピュータの関連記事