

高岡智則
年齢: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 の比較表
| 比較項目 | armhf | armel |
|---|---|---|
| 対象CPU | ARMv7 以降、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で複数のアーキテクチャを同時にサポートする仕組み。



















