昨年ARMは、64bitのアーキテクチャであるARMv8を発表しました。ARMプロセッサは、以前解説したように英国のARM社が基本的な設計を行い、そのライセンスを受けて半導体メーカーなどが周辺回路を一緒に乗せた半導体(SoC。System On Chip)を作ります。

昨年の発表は、その基本となるアーキテクチャARMv8の概要を発表しただけでしたが、今年は、具体的な製品を発表しました。製品といっても、ARMが作ったのはARMv8というアーキテクチャ(命令セットなど)を実現したプロセッサコアの基本設計です。発表されたのは、Cortex-A53Cortex-A57の2つです。

64bit ARMプロセッサとしてCortex-A53とA57が発表された。それぞれをマルチコア(A53は4個、A57は16個)で使うことも、2つを組み合わせて使うこともできる

以前お話したように、ARM社は、設計まではやりますが、自分で半導体は作りません。アーキテクチャや設計、回路などをライセンスを他社にライセンスして、半導体の製造は他社に任せます。また、ファブレス企業の半導体製造を引き受けるファウンダリーと協力してファウンダリーがARMプロセッサコアなどを簡単に組み込めるようにします。そうなると、ファブレス企業は、コア以外のまわりの部分の設計に専念できるようになります。

今回のCortex-A53と57も基本的には設計が完了したことの発表で、実際にメーカーが製造した製品が出始めるのは2014年になる予定です。

こういう話になると、必ず出てくるのが、「64bitCPUなんて必要なんでしょうか? 32bitじゃいけないんですか?」みたいな話です。答えは「必要」です。そして、時間はかかりますが、モバイルデバイスもかならず64bit CPUに切り替わります。

筆者は、8bitのマイクロプロセッサの頃から仕事をしていますが、16bit、32bit、64bitが登場したとき、必ずそういう疑問を投げかける人がいました。ですが、いま、多くの人がパソコンで64bit CPUを使って64bit版のWindowsを動かしているように、かならず、64bitに切り替わる時代が来ます。

もっとも、PCでもそうだったように64bit CPUが出たからといって、すぐに全部が64bitに切り替わるわけではありません。

少し基本的なところから考えていきましょう。そもそも64bit CPUというか、Xbit CPUとはどういう意味でしょうか? 実は明確な定義はなく、X bitのデータやアドレスを自然に扱えるCPUという意味程度でしかありません。しかし、現実には、その前世代となるX/2 bitのCPUが存在していて、それをX bitに拡張したものになることがすくなくありません。たとえば、現在のインテルのプロセッサも元々はIA-32と呼ばれる32bitのアーキテクチャでした。IA-32は、もともと8086や80286といった16bitのアーキテクチャを拡張したもので、このため、インテルのCPUやその互換性をx86という呼び方をします。これは、CPUの型番が8086、80186、80286と上がっていったからです。では、なぜ86なのかというとその前の8bit CPUの型番が8085だったからです。

現在の俗にx64と呼ばれる64bit CPUは、x86アーキテクチャを64bitに拡張したものです。

64bit CPUは一度に64bitの計算ができるから性能が上がるのでしょうか? それも理由の1つですが、CPUが16、32、64と進化したもっとも大きな理由は、メモリの大きさにあります。32bit CPUでは、メモリ内の位置を表すアドレスも32bitです。こうすることがプログラムを組む上でも都合がいいのです。つまり64bit CPUのメモリの大きさは64bitにできるのです。

32bitで表現できるメモリの大きさは4ギガバイトしかありません。いまや4ギガバイトのメモリはそれほど大きなものとはいえません。

また、もともと組み込み用や制御用に使われていたARMプロセッサは、4ギガバイトのメモリ空間のうち、最初の1ギガバイトにフラッシュメモリなどのROMを置き、次の1ギガバイトに周辺装置を配置するという習慣があります。このため、普通の構成では、搭載できるRAMの大きさは2ギガバイトまでになってしまいます。32bit CPUが登場した頃には、4ギガバイトは、誰がみても非常に大きなサイズでした。このため、こういう割り当て方法が使われても誰も問題があるとは考えていなかったのです。

すでにスマートフォンでも2ギガバイトのメモリを搭載するものが多くを占めるようになった現在、これ以上メモリを増やすには、64bit CPUを使ってメモリの大きさ(メモリ空間の大きさ)を拡大するしかありません。

ARMの64bitアーキテクチャであるARMv8には、2つのモードがあり、1つは、現在のARMv7と同じ「AArch32」、もう1つは64bit環境の「AArch64」です。このため、ARMv8のCPUは、現在の32bit用のオペレーティングシステムやアプリケーションがそのまま動くだけでなく、64bit用のオペレーティングシステムの下で32bitアプリケーションを動作させることもできます。また、仮想マシン支援機能があるため、複数のオペレーティングシステムを同時に実行させることもできます。

ARM社の説明によれば、Cortex-A53は、現在のCortex-A9と同じプロセスで製造して同程度の性能ならチップの面積は40%小さくなるという。実際には28や20ナノメーター(nm)プロセスで製造されるため、A9よりも消費電力やチップ面積という点で有利になる。また、Cortex-A57は、20ナノメータープロセスで製造したとき32bitモードでA9の3倍の性能が得られるという。これらは、64bit化のメリットというよりも、新しく設計しなおしたことやプロセスの進化によるものといえます。

A50シリーズは28、20ナノメートル(nm)のプロセスを想定しており、ここから推測するにA50の製造が可能になるのは2014年あたり

Cortex-A50はこの6社が製造に名乗りを上げている。このうち、AMDやCALXEDAは、サーバー用途としているが、他の会社は、モバイル用の低消費電力を優先したプロセッサを製造する可能性が高いという

スマートフォンやタブレットの登場で、32bitのARMプロセッサを搭載したハードウェアは急速に進歩しました。このため、もう32bitでは窮屈な状態になっているのです。現在のPCの64bitの最初のものは2003年、ほぼ10年前に登場しました。しかし、広く普及しはじめたのはWindows Vista(2006年末)が64bitに正式対応してからです。最初の32bit CPUである80386の発表は1985年。実はARMもほぼ同じ頃に開発されました。PCのほうは、コンピュータらしい使われ方をして、先に64bitに移行しましたが、ARMも来年ぐらいから64bit CPUが登場します。Windowsなどが64bit化に時間がかかったのに対して、ARMは、PC向けに多くのオペレーティングシステムやソフトウェアが64bit対応したあとに登場します。たとえば、Androidなどに使われているLinuxカーネルはすでに64bit対応を完了していて、再来年にARMv8のハードウェアが登場すれば、すぐにでも64bitのオペレーティングシステムとして利用可能です。しかも、Androidのアプリケーションは、仮想マシンコードを使うJavaで記述されているため、オペレーティングシステム側の変更の影響を受けにくくなっています。

このため、ARMの64bit環境は、ソフトウェアの準備という点では急速に立ち上がると思われます。なので、筆者は、モバイルデバイスに64bit環境が普及する時間はPCよりも短いと考えています。

まずは、高性能な32bit CPUとして上位機種から導入され、その後、オペレーティングシステムが段階的に切り替わっていくでしょう。

編集部注: 本稿は、2012年12月10日にAndorid情報のWeb専門誌「AndroWire」に掲載した記事を再構成したものです。