ARMv8
読み:アーム-ヴィーエイト
外語:ARMv8

 ARM命令セットアーキテクチャーVersion 8のこと。64ビット対応を特徴とする。
目次

概要
 AArch64ステートAArch32ステートの2つのステート(実行モード)を持ち、新命令セット「A64」が定義される。
 旧来のARM命令セットは「A32」、ARMの短縮命令セットThumb命令は「T32」と呼ばれ、この二つはAArch32の命令セットである。AArch32はARMv7の延長上にあり、ARMv8はARMv7を完全に内包するとしている。
 64ビットARM搭載の最初の純正のコアは、Cortex-A50シリーズのCortex-A53/Cortex-A57であり、これらは2013(平成25)年4月2日にテープアウト(設計完了)したと発表されている。

特徴

64ビット化
 AArch64は、31本の64ビット汎用レジスターと、1本のゼロレジスター、32本の128ビットメディアレジスターを持つ。
 従来、汎用レジスターに割り付けられていた、スタックポインター(r13)、リンクレジスター(r14)、プログラムカウンター(r15)は汎用レジスターから分離され、専用レジスターが用意された。
 汎用レジスターはx0からx30までの31本。レジスターが64ビット長になるのは64ビットマイクロプロセッサーとして必然だが、この数が倍に増やされるのはメモリーなどへの退避を減らし効率を上げるためであると説明されている。

フォーカス
 64ビット化されたARMv8は、まずサーバー用途をフォーカスしていた。
 ARM公式のARM Cortexコアよりも前に、まずサードパーティー製の64ビットプロセッサーが細々とサーバー用途に使われ始めた段階であった。
 それに対してAppleは、Apple A7として2013(平成25)年に初めてスマートフォン分野に持ち込んだ。他社も2014(平成26)年に市場投入予定だが、それまでは独走状態である。

技術

アドレス空間

命令セット
 ステート(実行モード)と命令セットは、次の種類を持つ。
 「A64」のオペコード自体は32ビットで、これに32ビットまたは64ビットのオペランドが続くことがある。つまり32ビット、64ビット、96ビットの3パターンでの不定長となる。
 RISCなのに可変長にするあたり、相変わらずARMはRISCらしくない。

互換性
 AArch64ステートに対応するOSは64ビットOSとなるが、ARMv8は従来の32ビット命令を全てサポートしている。
 従って、ARMv8を用いた64ビットOSでも、従来の32ビットアプリケーションをそのまま動作させることができる。

A64
 32ビットから始まったARMは、64ビット化に伴って命令セットを一新した。
 64ビット化では、64ビット演算による高速化や、従来の32ビット(4Giバイト)を超えるメモリー空間が使えるようになるなどのメリットがある。
 しかし64ビットARMのAArch64ステートにとってまず重要な高速化は、命令セットを一新したことがその最大の要因となっている。従来のARM命令セット(A32/T32)はRISCとは思えないほどに複雑だったが、今回の命令セット(A64)ではモダンなRISC風へと変更されたため、より高速な処理が可能となったようである。
 また、RISCで16本のレジスター(うち汎用レジスターは13本)はかなり少ないが、A64では汎用レジスターが倍以上の31本に増やされ効率化したり、プログラムカウンターなどを専用レジスタ化したり、モードごとのレジスター切り替えなどを簡略化するなどして効率化したことも大きい。

条件付き実行
 ARMアーキテクチャーの特徴となっていた条件付き実行は、分岐、比較、選択など特定の命令のみとなり、全命令に条件が付くことはない。
 従来、条件付き命令を使えばユークリッドの互除法が僅か4命令で処理できることが「売り」となっていたが、現実には条件付き命令はあまり使われていない機能であり、また分岐予測の設計も複雑にしていたという。
 64ビット命令セット(A64)では、64ビット命令だが命令長は32ビット長とした。しかし、単純に考えても、レジスターが倍に増え4ビットから5ビットに増えており、2つのソースと1つのデスティネーションで計3ビット分を新規に確保する必要があったため、有用でなかったこの条件フィールドは削除され、命令は簡素化されることになった。
 RISCらしくなかったARMが少しRISCらしくなった、とも言える。ARMの歴史上で最も大きな変革であると言える。

コア

再検索