この一方でARM社は,ARMv5をベースにARM 9を作り直した。このころから,従来コアと命令セット・アーキテクチャの関係が複雑化する。例えば,ARM9ファミリの一つ「ARM922T」は,命令セット・アーキテクチャに「ARMv4T」を採用している。ところが同じファミリの「ARM966E-S」の命令セット・アーキテクチャは「ARMv5TE」である。

 さらにARM社は「ARMv6」という新しい命令セット・アーキテクチャを定め,これに基づくコア「ARM11」をリリースする。このとき同時にSIMD(single instruction stream-multiple data stream)演算の拡張命令も新たに追加された。ARMv6に関しては,NECエレクトロニクスと共同でマルチプロセサ拡張も行われており,これに基づく「ARM11 MPCore」が製品ラインナップに加わった。

 同社の最新命令セットが,2005年に発表された「ARMv7」だ。これを実装したコアが 「Cortex-A8」である。Cortex-A8は,新しい64ビット/128ビットSIMD命令(従来のSIMD命令は32ビット)である「NEON」も同時に搭載した。また16ビット縮小命令であるThumbは,より効率を高めた「Thumb-2」に進化している。Cortex-A8にやや遅れて発表された「Coretex-R4」は,ARMv7に準じたアーキテクチャを採用しているものの,32ビット性能よりも16ビット性能を重視した作りになっている。この方向でさらに開発を進めたコアが「Coretex-M3」である。こちらはARMv7ではなく,Thumb-2のみに対応したプロセサ・コアである。Thumb-2は32ビット・プロセサの上で動作する16ビット命令なので,32ビットプロセサに分類されているが,事実上は16ビット・プロセサと考えてよい。このほかにCortex-M3をFPGA上で動作できるようにするために「Cortex-M1」というコアも開発している。

32ビット・プロセサの枠を超えた展開


(画像のクリックで拡大)

 このようにARM社のコアの命令セット・アーキテクチャが複雑になってきた背景には,同社のプロセサ・コアの用途が拡がってきたことがある。当初,ARM7やARM9は,それほど高い処理能力を必要としない汎用コントローラとして利用されることが多かった。ところが,ソフトウエア処理によって様々な機能を実現するためのプロセサ,いわゆるアプリケーション・プロセサとしても使われるようになってきたことから,より高いパフォーマンスが必要になってきた。そこで,ARM10,ARM11,ARM11MP,Cortex-A8という高性能プロセサ・コアを揃えた。この一方で,組み込み用コントローラ向けにARM7,ARM9,ARM10,ARM11,Cortex-R4,Cortex-M3といったコアを用意した。

 ARM11コアが登場したころまでは,アプリケーション・プロセサ向けとコントローラ向けは同一コアを採用しており,周辺回路や動作周波数の違いによって分けていた。Cortexが登場するころには,それぞれの用途向けのコアは内部構造も変えており,明確に区別するようになってきた。特にCortex-M1/M3は,「消費電力が大きすぎる」「価格が高過ぎる」という理由で32ビット・コアを敬遠していたユーザーをターゲットにした製品だ。16ビット・プロセサの市場の狙った展開と見ることもできる。Cortex-M1/M3の上位にはThumb-2とARMv7をサポートするCortex-R4があるので,シームレスなアップグレードパスも提供されている。単に32ビット ・マイクロプロセサの枠を超えた展開を見せているのがARMコアの昨今のラインナップと言えよう。