おそらく AArch64 プロセッサを内蔵したデバイスを使用したことがあるでしょうが、それが何を意味するかは知らないかもしれません。 知っておくべきことは次のとおりです。
CPUがたくさんある アーキテクチャ 最大のものは次のとおりです x86 そして 腕. そうは言っても、AArch64 はおそらくあなたの目に留まったことがあるでしょう。 何百万ものデバイスにこの機能が搭載されているにもかかわらず、かなり本を読んでいるテクノロジー愛好家でも、そのことを聞いたことがないかもしれません。 問題は、AArch64 は非常に紛らわしい専門用語であるため、それほど神秘的ではないということです。 AArch64 について知っておくべきことは次のとおりです。
AArch64 は ARM64 のようなものです
出典: アーム
つまり、AArch64 は、Armv8-A アップデートで導入された Arm の 64 ビット命令セット アーキテクチャ (ISA) の正式名です。 ほとんどの場合、AArch64 を指します。 AArch64 の代わりに ARM64 がよく使用される理由は正確には明らかではありませんが、混乱の一部は 2 つの場所から生じているようです。 その理由の 1 つは、x86 の 64 ビット拡張が x86-64 であるため、当然 ARM の 64 ビット拡張は ARM64 になるはずです。 Apple は確かにそう考えていたようで、2014 年まで AArch64 を ARM64 と呼んでいました。 ほとんどの人にとって、「AArch64 は ARM64」は非常に満足のいく説明です。
本当に技術的なことを知りたい場合は、AArch64 は ISA ではなく、むしろ 実行状態 これにより、ARM CPU は、Armv8-A アーキテクチャで初めて導入された ARMv8 ISA の A64 命令セットを使用 (および使用のみ) できるようになります。 これが混乱しているように聞こえるかもしれませんが、それは混乱しているからです。 たとえコンピュータ アーキテクチャに精通していても、これを理解するのは難しいかもしれないので、順を追って説明します。
したがって、技術的には、AArch64 は ISA ではなく国家ですが、Arm 自体も含め、誰も気にしていません。
ARM は関連する ISA のファミリーであり、異なる ISA は通常非互換性を意味しますが、厳密にはそうではありません。 ARM ISA のさまざまなバージョンは ARMv1、ARMv2 などと呼ばれますが、これらの ISA には、本質的にサブ ISA である A プロファイル、M プロファイル、および R プロファイルが含まれています。 これらのサブ ISA の基本的な違いは、それぞれが使用する命令の最小量であり、A プロファイルが最も多く使用し、M プロファイルが最も少ない命令を使用します。 そのため、ARM ISA は ARMv8 などの個別のバージョンに分割され、さらにそれらのバージョンは ISA のさまざまな実装に分割されます。
Armv8-A は、ARMv8 ISA の初期の A プロファイル実装であり、AArch32 と AArch64 という 2 つの新しい機能が追加されました。 これらは状態またはモードと呼ばれ、ARM CPU がさまざまな命令セットにアクセスできるようになります。 AArch32 には 32 ビット A32 および T32 命令が含まれ、AArch64 には 64 ビット A64 が含まれます。 説明書。 たとえば、プロセッサが現在 AArch64 状態にあり、A32 命令を使用したい場合は、状態を AArch32 に変更する必要があります。 さらに、AArch64 モードでは 32 ビット レジスタと 64 ビット レジスタの両方にアクセスできますが、AArch32 モードでは 32 ビット レジスタのみが使用可能です。 このすべての中で最も混乱を招くのは、これらすべてがさまざまに ISA と呼ばれており、Arm (ARM ISA を開発する会社) ですらこれに罪があるということです。
しかし、超専門的な話をすると、実際は次のとおりです。ARM ISA の 8 番目のバージョンである ARMv8 は、AArch32 と AArch64 と呼ばれる 2 つの状態を含む Armv8-A で最初に実装されました。 CPU が AArch64 状態にある場合、64 ビット A64 命令を実行できます。 したがって、技術的には、AArch64 は ISA ではなく国家ですが、Arm 自体も含め、誰も気にしていません。
ARM にとって 32 ビットと 64 ビットの両方が重要な理由
したがって、AArch64 は実際にはかなり複雑で、32 ビット命令と 64 ビット命令を使用するためだけに状態を切り替える必要があるのは面倒に思えます。 問題は、32 ビットと 64 ビットの両方のサポートは重要すぎて無視できないため、このようにするしかないということです。 結局のところ、それは 2 つの大きな問題に帰着しました。古い 32 ビット ソフトウェアをサポートする必要があることと、最新の高性能コンピューティングを追求することです。
もし Arm が最初の 64 ビット ISA に 32 ビット ソフトウェアのネイティブ サポートを組み込んでいなかったら、大惨事になっていた可能性があります。単純に言えば、誰もコードを書き直したくないからです。 もし ARMv8 が全員に新しいソフトウェアを一から書くことを要求していたら、ISA は誰も作らない、誰も買わなくなるという死のスパイラルに陥っていたかもしれません。 ソフトウェア不足のために ARMv8 デバイスが開発され、その後ユーザー不足のために開発者はアプリを作成しなくなり、Arm がそれを呼び出す必要があるまで無限に続きます。 やめます。 したがって、32 ビットのサポートには交渉の余地がありませんでした。
一方で、64 ビット コンピューティングを実装しないという選択肢もありませんでした。 x86 の背後にある企業である Intel と AMD は、2000 年代初頭から 64 ビット アーキテクチャを使用してきました。 素晴らしいCPUただし、当時は携帯電話には 64 ビット ARM チップが必要なかったため、その必要はありませんでした。 しかし、スマートフォンの発明によってすべてが変わり、誰もが自分のスマートフォンでもっと多くのことができるようになることを望みました。 64 ビットのサポートはスマートフォンの高性能化に役立つだけでなく、可能性を広げます 企業はラップトップやパソコンなど、従来 x86 が主流だった市場向けに ARM チップを製造できるようになります。 サーバー。
基本的に、この名前の混乱全体は、Arm が優先事項の変化に応じてテクノロジーを最新化する必要があることから生じました。 おそらく Arm はこの方法で 64 ビット サポートを実装する必要はありませんでしたが、実装する必要があり、それが AArch64 の誕生です。 AArch64 は ISA ではありませんが、良くも悪くも、ほとんどの人がこの用語をそのように使用しています。