Arm、Arm ARM、Armv9、ARM9、ARM64、AArch64、A64、A78…を区別する
(nickdesaulniers.github.io)Armエコシステム入門者のための用語整理
- Armアーキテクチャは、シンプルなアドレッシングモードを持つRISC製品群
- Arm Limited は、Armアーキテクチャを管理する英国の企業
- ARM は Acorn RISC Machine から Advanced RISC Machines になったもの
- Arm ARM(Architecture Referecnce Manual) は、Arm向けのプログラミングマニュアル
- Armv9 はアーキテクチャ製品群の中で最新(執筆時点)。SIMDベクトル(SVE)やマトリクス演算(SME/SME2)などを追加
- Armv9.4-A は Armv9 の最新の拡張セット。これらの拡張は Arm ARM に文書化されている。一部の拡張は導入時点ではオプションだが、将来のバージョンでは必須になる予定
- Armv9.4-A の A は "Application Profile" を意味する。MMU を通じて仮想メモリをサポートし、スマートフォン、ノートPC、サーバーなどあらゆる Arm システムで見られる。
リアルタイムシステム向けの "R" や、MMU のないマイクロコントローラ向けの "M" といったものもある。
この3つのアーキテクチャプロファイルも "A" "R" "M" - AArch64 は ARMv8 で導入された "execution state"。64b レジスタをサポートする(31個の汎用レジスタ、専用の64bスタックポインタ、64bプログラムカウンタ、zero-value pseudo レジスタ)
これに合わせて、ARMv7 で使われていた 32b 機能は AArch32 と命名された - 興味深いことに、Arm ARM では ARM64 という用語に触れていない(Apple、Microsoft、Linus Torvalds はこれを好む)
この名前には最終的には意味がある。arm64 Linuxカーネルは AArch64 または AArch32 execution state でユーザー空間コードを実行できるが、カーネル自体は AArch64 専用 - A64 は AArch64 で導入された命令セット。実際には、AArch64 がサポートする唯一の命令セット。AArch64 のレジスタは 64b だが、命令自体は依然として 32b(固定幅)
A32 は旧来の ISA を意味し、これも 32b 固定幅。T32 は Armv8 以前に使われていた命令セットで、32b と 16b の Thumb2 を意味する - A64 と混同してはいけないものに、"A78" でコアを指す場合があるが、これは Cortex-A78 のこと。
Arm は Armアーキテクチャだけでなく、私たちがマイクロアーキテクチャと呼ぶアーキテクチャ実装も設計している。後ろの数字に関係なく、Cortex または Neoverse という単語が見えたら、それらは Arm が設計したマイクロアーキテクチャ
例えば Cortex-A78 は ArmV8.3 までの拡張を実装する。Wikipedia にはこれを整理した テンプレート がある - DynamIQ(以前の big.LITTLE)は、マルチコアで同種(homogeneous)ではなく異種(heterogeneous)コアを使うというアイデアに基づいている
この設計の利点は、異なるタイミングで異なる仕事をうまくこなせること。性能が必要なときは大きな電力を消費する out-of-order プロセッサを使い、消費電力を下げるためには遅い in-order コアを使う
Intel が Alder Lake で性能コア/効率コアを活用する似た取り組みをしているのを見るのは興味深い - リファレンスマニュアルを調べると、さまざまな Execution State が興味深く発展している:A55、X1、X3 など
- レガシー用語
- ARM9 は Armv9 と混同してはいけない。コア製品群であり、一部は ARMv4t を実装し、一部は ARMv5 を実装する
- StrongARM は DEC が作った ARMv4 CPU シリーズ。Intel は訴訟和解を通じてこの IP を取得し、最終的に XScale という独自の ARMv5 マイクロアーキテクチャを設計
最終的に Intel は XScale を使っていた PXA SoC 製品群を Marvell に売却した。Intel が Atom とともに、あるいは XScale を堅持していたら世界はどうなっていたのか気になる - ARMv4 は Thumb と呼ばれる圧縮命令セットを導入した。命令は 16b 固定幅
- ARMv6t2 は Thumb2 を導入し、32b 命令や UAL(Unified Assembly Language)などをサポート
3件のコメント
Arm ARM はどう見ても狙ってるように見えますねw
*笑
Arm ARM はきっと忘れられないと思います :)