1カ月集中講座

2014年最新CPUの成り立ちを知る 第4回

~ARMはどうしてこうなった?


 x86ARM2011ARM 
ARMアーキテクチャとCortexシリーズの変遷

 2004年10月、ARMは「ARMv7」アーキテクチャを発表する。同社はそれまで、基本的にコントローラ向けとPDA/携帯電話などのモバイルデバイス向けに同一のCPUコアを提供してきたが、ニーズが多様化してくると、もはや同一のアーキテクチャ/コアで全てをまかなうが難しいと判断した。この結果、アプリケーションプロセッサの「ARMv7-A」、リアルタイム制御向けの「ARMv7-R」、マイクロコントローラ(マイコン)向けの「ARMv7-M」という3種類のアーキテクチャがこのARMv7の世代で登場している(*1)。

*1 末尾の文字を並べると“ARM”になるが、この話をすると、ほとんどのARMのエグゼクティブが「それは単なる偶然だ」と笑いながら強調する。あまり出来のいいギャグではなかったからであろう。


 ARMv7-A2005Cortex-A8ARMv6ARM11iPhone使(1)/()500MHz 

 Cortex-A8(2)1GHzx86Cortex-A8 

 Cortex-A82.0 DMIPS/MHz()IntelAtom1.6GHz3,849 DMIPS1GHzCortex-A8830MHzAtomARM 

 2007Cortex-A91382Cortex-A82.5 DMIPS/MHz41GHz410,000 DMIPSAtom2GHzAtom 

 使2013ARMCortex-A12Cortex-A12James BruceCortex-A9使Freescalei.MX6Cortex-A9Texus InstrumentsCortex-A8Cortex-A9OMAP4(退) 

 ()Cortex-A9 

 2009Cortex-A5ARM11ARM11MCUMPU使ARMv7MCUCortex-MARM11+αCortex-A8/A9 

2つの開発を並行して進める必要に迫られる


 ARM21ARMv7-AARMARMv7-AARMv7-A(ARMv7e-A) 

 64bit(2007)2011ARM v8-AARMCPUARM 

 2510102CPUARM 

 64bitOS164bit CPU使64bit ARM2使 

 12CPU34Cortex-A57/A532012CPU20142015 

 ARM32bitCortex-A15Intel2009AtomMoorestoneSoCARM(*2) 

*2 余談ながら、それを説明していたアナンド・チャンドラシーカ氏は現在、QualcommのSenior Vice Presidentを務めている。


 Cortex-A15使ARMCortex-A15(Photo01) 
2010年9月に国内で行なわれたCortex-A15に関する説明会の資料より

 ARMARM(OS)Cortex-A15Cortex-A572 

 Cortex-A72011MediaTekSoC 
Cortex-A15
Cortex-A7

 100(MIPS) 

 Cortex-A7Cortex-A15Cortex-A15Cortex-A12ARMCortex-A50Cortex-A122013 

 big.LITTLECortex-A15IntelNehalem() 

 big.LITTLEbig.LITTLE1 

 2012Cortex-A5032bit2013Cortex-A12 

 Cortex-A12Cortex-A7A15()Cortex-A12ARM7Cortex-A7A12Cortex-A122 

 Cortex-A12SoC()5080mmCPUL2510mmCPU11.5mmCPUL2400450mWCortex-A12Cortex-A9CPU 

Cortex-A9使SoC 

 128nm()Cortex-A965nm40nmCortex-A12/28nm 

 逆に言えば、Cortex-A12が組み込み向けにも入るようになる時期というのは、スマートフォン/タブレット向けのアプリケーションプロセッサとしてはやや力不足になる可能性がある。ではそこにCortex-A15が入るのかと言うと、そうはならない。その代わりにARMが今年発表したのがCortex-A17である。

Cortex-A17

 ARMはまだCortex-A17の詳細を明確にしていないが、11段+αのパイプラインながら、アウト・オブ・オーダー構成とされる。一説にはフロントエンドはCortex-A12と大きくは変えないまま、バックエンドに大幅に手を入れたそうで、Cortex-A15と同じ4.0 DMIPS/MHz近い性能を出すとする。こちらのエリアサイズはCortex-A12より若干大きい程度で済むと見られているが、これがCortex-A12に代わりミッドレンジ~ハイエンド向けのSoCに投入される模様だ。

 興味深いのは、ARMのCortex-A15のページで“パフォーマンス”タブを開くと、用途に

  • スマートフォンおよびモバイルコンピューティング
  • デジタルホームエンターテインメント
  • ホームサーバーおよびWeb 2.0サーバー
  • ワイヤレスインフラストラクチャ

といった項目が並ぶのに対し、Cortex-A17では

  • スマートフォンおよびタブレット
  • スマートTVおよびオーバー・ザ・トップ端末
  • 産業/車載用インフォテインメント

Cortex-A17ARMCortex-A15 

64bitでARM命令の再定義を図ったARMv8アーキテクチャ


 ARMv8ARMv864bitARM 
Cortex-A57

 32bit→64bitの拡張を行なったCPUアーキテクチャは少なくないが、ほとんどはx64のように「既存の32bit命令に64bitアドレス拡張を行なった」形で、命令の再定義(整理)を行なったケースはそう多くない珍しいパターンと言える。既存のアーキテクチャの場合、「既存のソフトウェアの64bit環境への移行」が大きな課題であり、このために命令セットの互換性を維持する必要があるからだ。x64の場合も、汎用レジスタの拡張などは行なわれているが、既存の32bit命令は基本的に全て継承されている。

 ところがARMの場合、64bitの最初のターゲットであるサーバーは、過去のソフトウェアがほとんど存在しないから、互換性云々を議論する必要がない。もちろん、存在しないとは言っても、わずかには存在したし、将来的にモバイル向けの移行は考える必要があるが、これは32bit互換モードで対応できると割り切り、むしろ命令をすっきり高速化できる方向にチューニングを行なった。

 これは意外なメリットもあった。それはARMv8-Aのアーキテクチャライセンスを受けたメーカーの実装の容易さである。ご存知の通り、最近のx86プロセッサは、もうx86命令をそのまま実行したりせず、適切な内部命令に変換して処理するのがごく当然であるが、これはx86だけでなくほかのプロセッサもそうである。ARMv8-Aは、APM(AppliedMicro)の「X-Gene」、NVIDIAの「Denver」、Appleの「A7」、AMDの「K12」のほか、Cavium NetworkとBroadcomがすでにアーキテクチャライセンスを受けて自前で実装を行なっている。APMはPowerPCを、Cavium/BroadcomはMIPS64をベースとした64bitプロセッサをすでに持っており、極端なことを言えばデコーダ部だけ書き換えれば独自のARMv8-A対応コアができ上がることになる。実際はもう少し話は面倒ではあるのだが(*3)、それはさておき、こうしたアーキテクチャライセンスを受けたベンダーにとって、64bitの命令セットがすっきりしているのは実装上のメリットとなる。


*3 32bit32bit 

 64bitARMv8-AAPMX-GeneAppleA720152016ARMIPCortex-A57Cortex-A532012 

 64bitOS64bit4GB4GB 

 Android64bitiOS64bitOS2015/SoC64bit532bit64bit64bit2015Cortex-A53A57IP 

冒頭に記した2011年以前の状況に関する補足


 ARM?ARM2011ARMPC Watch2010ARM3ARMMicroProcessor ForumARMTechCon 

 ARMPC Watch稿2011ARM3() 

(大原 雄介)