連載
» 2021年04月21日 10時00分 公開

謎の多い「Armv9」について今分かっていることをまとめるArm最新動向報告(14)(1/3 ページ)

2021年3月末にArmが発表した最新命令セット「Armv9」。このArmv9について、これまでに公開された技術文書などを基に、現時点(2021年4月中旬)で判明していることをまとめた。

[大原雄介,MONOist]

 既報の通り、英Armは2021年3月30日に「Armv9」の命令セットの存在を発表した。その発表内容は先の記事にまとまっているが、これまでに公開された技術文書などを基に、現時点で判明している内容をご紹介したい。

⇒連載「Arm最新動向報告」バックナンバー

「Armv8」とオーバーラップする「Armv9」

 まずはArmv9全体について。そもそも、Armの命令セット自体が、今までは極端なことを言えば「新しい機能が入るたびにバージョンが上がる」(図1)という感じだったので、現行の最新命令セット「Armv8」にはサブバージョンがたくさんある。

図1 図1 従来の命令セットの変遷。こうしてみると「Armv8」は本当にいろんな命令が加わった格好だ。ちなみにここでの議論は「Cortex-Aシリーズ」向けの話である(クリックで拡大)

 これはArmv9になっても同じように見えるが(図2)、実際は既に「Armv9.2」まで定義されていることが明らかになっており、しかもちょっと複雑な状況になっている。

図2 図2 「Armv9」のこれらの機能が全部一度に入るかどうか、はまた別の話(クリックで拡大)

 ArmがWebサイトで公開している“Armv8.x and Armv9.x extensions and features”によれば、Armv9のサブバージョンは以下のような形での実装になるらしい(なお、アプリケーションプロセッサ向けの「Aプロファイル」について言えば、引き続き32bitのAAach32のサポートもArmv9世代では行われるとしていた)。

  • Armv9.0=Armv8.5+CCA(Confidential Compute Architecture)+SVE(Scalable Vector Extension)2
  • Armv9.1=Armv8.6+CCA+SVE2
  • Armv9.2=Armv8.7+CCA+SVE2+Branch-Record recording

 それぞれの命令セットの違いを、Armv8のサブバージョンと併せてもう少し分かりやすく書くと以下のようになる。

  • v8.0-A:Armv8世代のベース。AArch64(64bitのサポート)追加
  • v8.1-A:Atomics命令/VHE(Virtualization Host Extensions)を追加
  • v8.2-A:半精度(FP16)のサポート、Stat Profiling、RAS(Reliability、Availability、Serviceability)機能、SVEを追加
  • v8.3-A:ネストされた仮想化(Nested Virtualization)、RCpc(Release Consistent processor consistent)、ポインタ認証(Pointer Authentification)の追加
  • v8.4-A:Crypto命令の強化とSHA512/SHA3対応命令の追加、Secure EL2、MPAM(Memory Partitioning and Monitoring)の追加
  • v8.5-A/v9.0-A:RNG(乱数発生命令)、BTI(Branch Target Identifier)、メモリタギング(Memory Tagging)の追加
  • v8.6-A/v9.1-A:MatMul命令の実装、bfloat16サポート、仮想化強化、ポインタ認証強化(Enhanced PAC2およびFPAC実装)、高精度タイマ搭載
  • v8.7-A/v9.2-A:PCIe Hot plugのサポート、Atomic 64Bytes load/storeのサポート、WFI(Wait for Instruction)/WFE(Wait For Event)(どちらもTimeout付)のサポート、Branch-Record recordingのサポート(v9.2-Aのみ)

 これらとは別に、v9.0-A〜v9.2-AはCCAとSVE2のサポートが追加されている「らしい」。らしい、というのはこれらがv9.0-Aから実装されているのか、それとも将来のバージョン(v9.3-A以降?)で実装されるか、は現時点で明示されていないからだ。先に挙げた“Armv8.x and Armv9.x extensions and features”に、この2つがないあたりはちょっと怪しい感じである。

 ちなみに、先の速報記事で出てきたメモリタギング拡張機能(図3)は、正確に言えばv8.5-A/v9.0-Aで追加された機能であり、必ずしもArmv9だけの機能ではない。実はこれは以前から発表されていた機能でもあり、その意味ではあまり新しいわけではないのだが。

図3 図3 メモリタギング拡張機能の概要(クリックで拡大)
       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.