英Armは現地時間の9月3日、新しいリアルタイム向けプロセッサIPである「Arm Cortex-R82」を発表した。これに先立ち日本法人であるアームよりオンラインでの記者説明会があったので、その内容をご紹介したい(Photo01)。

  • Cortex-R82

    Photo01:説明を行ったアーム 応用技術部 ディレクターの中島理志氏

Cortex-R82は、リアルタイム向けという特徴は従来のCortex-Rシリーズと変わらないが、Cortex-Rとしては初の64bit対応であり、ターゲットもリアルタイムとデータプロセッシングの両方のニーズに対応する、という少し方向性の異なった製品である。具体的な用途として想定されている1つがComputational Storage(Photo03)である。

  • Cortex-R82

    Photo02:最初のターゲットはComputational Storage向けであるが、別にComputational Storage専用という訳ではなく、「このマーケットに64bitプロセッサを投入することで何が起きるか見てみたい」(中島氏)という、Path Finder的な使命も兼ね備えた製品である

  • Cortex-R82

    Photo03:まぁ本来のComputational Storageは、もっと高度な処理までストレージ側で行わせるという意味合いであって、ECCだの代替セクタだのの処理を指してComputational Storageとは普通は言わないのだが

要するにストレージの側に演算機能を実装することで処理のオーバーヘッドを減らそうという、昨今ではしばしば見かける仕組みである。別にこれは珍しい話ではなく、例えばSSDとかeMMCなどのフラッシュストレージでは、エラー訂正は全部コントローラ側で行っており、ホストがエラー訂正とかで介在したりしないのがすでに当たり前である。これもComputational Storageの一例であり、今後はもっと複雑な処理をストレージ側で行わせることでホスト側の負荷を減らそうという動きになっている。

このためには、単にリアルタイム性能が高いだけでなく、Data Processing Powerも兼ね備えたコアが必要とされる。また必然的にローカルストレージとして大量の処理用メモリを使う事は普通に考えられるから、32bitアドレスだとメモリ空間が不足する可能性がある。

こうしたニーズに対応すべく投入されたのがCortex-R82である。特徴として

  • Armv8-R64命令を実装:基本的には64bit命令のみのサポートであり、従来のArmv7-R/v8-Rとは互換性がない
  • 64bitメモリ空間に加えて、EL1 MMUをオプションでサポート
  • Armv8-Aのアプリケーションと基本的には互換
  • NEONをサポート

といった、従来とまったく異なるプロセッサになった。

このArmv8-R64というのは今回初めて発表される命令セットであり、基本的にはArmv8-A(厳密に言えばArmv8.2-A)と互換ながら、Armv8.2-Aに搭載されているTrustZoneとかEL3のサポートを抜いたものになるそうだ。

Photo05がそのCortex-R82の構成である。特徴として

  • 1~8コア構成。L1はPrivate、L2は共有となる
  • MPU(Memory Protection Unit)はEL1/EL2対応のものが用意される。一方MMUはEL1対応のもののみとなる。なので、仮にHyperVisorを利用する場合はMPUベースのHyperVisorをEL2で動かし、この上でEL1ベースのLinuxなどを動かす(か、EL1 MPUを利用したRTOSなどを動かす)形になる
  • 性能はCortex-R8比で、CoreMarkなどの典型的なベンチマークで10~39%程度のアップであるが、中には2倍程度性能が上がるものもある
  • 物理アドレスは最大1TB。また各コアにはL1キャッシュ以外にInstruction TCMとData TCM×2を実装可能
  • オプションでFPUおよびNeon Unitを実装可能

となっている。

  • Cortex-R82

    Photo04:Cortex-Rファミリーとしては初めての、「普通の」Linuxが動くプロセッサである(これまでもCortex-RでμCLinuxの動作実績はあった)

  • Cortex-R82

    Photo05:パイプライン構成などはまだ公表できないが、Out-of-Orderで実装されているとのこと。AIが14倍高速なのは、Neon Unitが追加されたことに起因する(Cortex-R8はNeon Unitが無い)

なお、従来Cortex-R系で利用可能だったLockstepに関しては、少なくとも現状のCortex-R82では未サポートとの事。こうした機能安全向け機能が必要な用途は当初想定していないという話である。ただ将来的には車載向けなどに入ってくる可能性も当然ある訳で、その場合には何らかの機能が追加されるかたちで提供される可能性までは否定しなかった。

話をComputational Storageに戻すと、現在のCortex-Rはストレージの制御だけを行っている形だが、今後は一部のコアにLinuxなどを載せて、そのうえでData Processingを行うといった形が想定される(Photo06)とした上で、あとはデマンドに応じて各コアのワークロードを変化させる、なんて事も考えられる。

  • Cortex-R82

    Photo06:このケースで、先のEL2 MMUが無いという話に繋がる事になる

  • Cortex-R82

    Photo07:別に動的に変更、とは言っていないことに注意。出来なくはないだろうが、それはソフトウェア的に色々面倒であろうと思う

こうしたニーズにCortex-R82は応えられる(少なくともハードウェア的には一切変更がなく、単にどのOSをどのコアに割り振るかだけの問題)という点をメリットとして挙げた。ちなみにLinuxなどの“Rich OS”環境に関しては、先に述べたようにTrustZoneとEL3のサポートを抜くとほぼArmv8.2-A互換になっており、なのでこちら向けのソフトウェアをそのまま利用できるとしている(Photo08)。

  • Cortex-R82

    Photo08:ここには挙がっていないが、Cortex-A向けのソフトウェア開発環境は。基本ほぼそのまま動くと考えてよさそうである

このCortex-R82、ライセンス提供開始は2021年初頭を予定しているとの話であった。