英Armは現地時間の9月3日、新しいリアルタイム向けプロセッサIPである「Arm Cortex-R82」を発表した。これに先立ち日本法人であるアームよりオンラインでの記者説明会があったので、その内容をご紹介したい(Photo01)。
Cortex-R82は、リアルタイム向けという特徴は従来のCortex-Rシリーズと変わらないが、Cortex-Rとしては初の64bit対応であり、ターゲットもリアルタイムとデータプロセッシングの両方のニーズに対応する、という少し方向性の異なった製品である。具体的な用途として想定されている1つがComputational Storage(Photo03)である。
要するにストレージの側に演算機能を実装することで処理のオーバーヘッドを減らそうという、昨今ではしばしば見かける仕組みである。別にこれは珍しい話ではなく、例えば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-R系で利用可能だったLockstepに関しては、少なくとも現状のCortex-R82では未サポートとの事。こうした機能安全向け機能が必要な用途は当初想定していないという話である。ただ将来的には車載向けなどに入ってくる可能性も当然ある訳で、その場合には何らかの機能が追加されるかたちで提供される可能性までは否定しなかった。
話をComputational Storageに戻すと、現在のCortex-Rはストレージの制御だけを行っている形だが、今後は一部のコアにLinuxなどを載せて、そのうえでData Processingを行うといった形が想定される(Photo06)とした上で、あとはデマンドに応じて各コアのワークロードを変化させる、なんて事も考えられる。
こうしたニーズにCortex-R82は応えられる(少なくともハードウェア的には一切変更がなく、単にどのOSをどのコアに割り振るかだけの問題)という点をメリットとして挙げた。ちなみにLinuxなどの“Rich OS”環境に関しては、先に述べたようにTrustZoneとEL3のサポートを抜くとほぼArmv8.2-A互換になっており、なのでこちら向けのソフトウェアをそのまま利用できるとしている(Photo08)。
このCortex-R82、ライセンス提供開始は2021年初頭を予定しているとの話であった。