最後に、基調講演では一切触れられなかったが「AMBA 5 AHB」の話を。ARMv8-Mとあわせて発表されたのがAMBA 5 AHBである。Cortex-A35の記事でも少し触れたが、端的に言えばAMBA 3 AHBにTrustZone対応を付加した様な構成になっている。また、ARMは大きくは取り上げていないが、マルチコア構成に最低限必要となるMulti-Core Synchnonizationの仕組みが統合された(Photo17)。

Photo17:Exclusive TransferでSemaphoreをサポートしたことで、LDREX/STREX命令を使ってプロセッサ間(というかThread間)の同期が簡単に取れるようになった事は大きい。あとは各々のコアのMPUの設定で共有メモリ領域を作ってこれと組み合わせれば、プロセッサr/Thread間通信が容易に構築できる

なぜこれが必要になったかといえば、CPUコアに繋がる周辺回路も、当然Secure/Non-Secureをきちんと認識し、例えばSecure FlashはNon-Secureでアクセスできないようにしてやる必要がある。ただFlashそのものはSecureだろうがNon-Secureだろうが構造に違いがないので、バスの側で「これはSecure Access」「これはNon-Secure Access」と周辺回路に通知することで、周辺回路がどちらのアクセスかを認識できる様になっている。具体的に言えば、新しくHNONSECという信号が追加されており、これがAssertされているとNon-Secure、NegateされているとSecureという形になる。実際にはこのHNONSEC以外にもいくつか追加があるが、要するに周辺回路に対してもSecure Modeをちゃんと徹底させないとSecureなSoCが出来ない訳で、そのために設けられたと思ってよい。

Photo18:理論上はSecure ModeのDMAコントローラもありえるはずであるが、実際問題としてSecure Modeでそこまでの処理を行う可能性は無いと判断しているのかもしれない。すべての処理をセキュアでやりたい、というニーズに向けてはARMのSecurCoreシリーズがすでに存在するからだ

ちなみに今回の発表はあくまでもアーキテクチャであって製品ではない。では、例えばアーキテクチャライセンスを受けて自社で実装するメーカーはありえるのか? と尋ねた所「もちろん我々はアーキテクチャライセンスも提供可能だが、興味を持っている会社は1社もない」(Nandan Nayampally氏)との事で、今は各社ともこれを実装したIP待ちとのこと。またこれを実装した製品は、既存の製品とは名称を変えるという話(例えばCortex-M0++とかCortex-M4+とかにはならない)であった。実際命令セットもこれだけ違うと、流石に同一製品の派生型として扱うには無理があるだろう。

気になるのは、TrustZoneはConfiguration Optionという話であったが、このOptionは例えば起動時にTrustZone Enable/Disableを選べるのか、それとももう製造レベルのOptionで、一度TrustZone Enableで製造したコアはDisableには出来ないのか、また機会があったら確認してみたいと思う。