Qualcomm社のSnapdragonシリーズに含まれるCPUコアは、同社が独自開発したものだ。命令セットやレジスタなどのソフトウェアから見える「アーキテクチャ」は、ARMv7に準拠したARM系プロセッサ。多くの半導体メーカーのARM系プロセッサは、ARM社のマイクロアーキテクチャ設計であるCortex-Aシリーズを購入し、これを自社プロセスなどに適合させる。
ARM社のマイクロアーキテクチャを購入すれば設計期間を短縮できるものの、同じ設計を買う他社との大きな差別化は、すくなくとも「CPUコア」部分に関しては難しい。逆にQualcommのように独自設計を行えば、高速なプロセッサなどを開発することができるものの、設計に非常に時間がかかる。
多くの半導体メーカーは、SoC(System On a Chip)として製品を開発し、CPUコアはその一部であるため、ARM社のCortexシリーズなどを購入し、差別化は、周辺回路などの部分で行うことが普通だ。Qualcomm社のSnapdragonは、2006年に発表された。2007年には、詳細なパイプライン設計などの情報が公開されたが、この年は、iPhone(アイフォーン)が発表された年だった。高速なアプリケーションプロセッサが必要とされたのは、その後のスマートフォンブームからだったが、Qualcommは、その動向をある程度は正しく予測していたと思われる。
最初のSanpdragonのCPUコアは、Scorpionと呼ばれるもので、レジスタファイル、リネーミングに部分的なアウトオブオーダー実行、投機実行機能を装備し、高いクロック周波数に対応するための段数の多いパイプラインを採用していた。このため、Sanpdragonは、アプリケーションプロセッサとしては、早い時期にクロック1GHzを実現した。整数演算パイプは2つ、これとNEONなどのSIMD演算(浮動小数点、整数)のためのVeNUM機構、ロードストアパイプなどを持っていた。VeNUMは、128bit同時演算が可能なSIMD演算機構で、これもQualcommの独自実装だ。ただし、Scorpionでは、VeNUM側ではアウトオブオーダー実行、投機実行を装備していない。
二世代目のプロセッサコアは、Krait(クライト)と呼ばれる。Kraitでは、完全なアウトオブオーダー実行が可能になった。また、Scorpionコアよりも高いクロック周波数2.5GHzを実現可能だとしている。
今回、スペイン・バルセロナで3月1日まで開催されている世界最大のモバイル向け見本市「Mobile World Congress 2012」の会場で、Qualcomm社プロダクトマネジメント担当副社長のCharlie Matar氏に話を伺った。
* * *
--- Kraitは、前バージョンであるScopionをベースにしているのか、それともゼロから設計したのか?
Matar氏: Kraitは、フルスクラッチから作った。高性能なプロセッサコアを開発するため、Scopionと同じように、ARMv7を独自に実装した。
--- 設計を開始したのはいつか?
Matar氏: 2008年の遅い時期だ。
--- Scorpionは、整数部分では、アウトオブオーダー実行できたが、浮動小数点部分であるVeNUMは、インオーダー実行だった。Kraitでは、完全なアウトオブオーダー実行になったのか?
Matar氏: そうだ。ゼロから設計し、完全なアウトオブオーダー実行のパイプラインを実装した。3命令同時デコードで、最大4命令の発行が可能だ。
--- パイプラインの段数が11段だと記述したサイトもあるが、これは正しいのか? そして、それは、整数演算のときのパイプライン段数なのか
Matar氏: 正しい。整数演算のときのパイプライン段数のことを指している。
--- 4命令同時発行ということだが、どのような命令の組み合わせが可能なのか。
Matar氏: 詳細には公開していないが、少なくとも整数演算は4命令同時発行が可能だ。
--- 二次キャッシュの容量は?
Matar氏: デュアルコアは、1メガバイト、クワッドコアは2メガバイトである。
--- パイプラインの段数あるいは、一段分の遅延が動作クロックを決めてしまうが、設 計時に想定している最大周波数はいくつなのか。
Matar氏: 現時点では、最大クロック周波数は2.5GHzであるとしか発表していない。しかし、Scorpionでは、世代が変わるごとに最大周波数を上げていった。近いレンジで登場する製品の最大周波数は2.5ギガヘルツである、ということだ。実際の最大クロック周波数は、マイクロアーキテクチャだけでなく、プロセスや回路設計にも影響される部分がある。パイプラインの段数は、上限を決めるパラメータの一部でしかない。
※筆者補足: パイプラインは、1クロックごとに処理を行い、次段へと結果を送る。このため、各段では、1クロック以内に処理を完了させねばならない。しかし、回路には遅延があるため、回路が大きくなると、遅延部分が無視できなくなる。このため、高クロックのプロセッサでは、パイプラインを多くの段数に分け、1段分の回路規模を小さくして遅延を小さくする必要がある。
--- Kraitは、ARMのマイクロアーキテクチャであるCotex-A9を上回るとされているが、Cotex-A15と比べてどうなのか?
Matar氏: Kraitは、Cotex-A15と同じグラスのマイクロアーキテクチャといっていいだろう。A15はまだ市場に搭載したシステムが登場していないので、具体的な比較はできないが、我々は、A15クラスの性能をターゲットに設計をおこなった。
--- Kraitでは2つのコアのクロックと電源電圧を独立させることにより、片方のプロセッサの負荷が低いときにクロックと電源電圧を下げて低消費電力状態にしている。一方他社では、低消費電力のコアを別に用意して、これに切り替える手法を採用しているが。
Matar氏: それは、ARMのbig.LITTLEやNVIDIAのVariable SMPとの比較ということか。だとすると、まず、我々の設計では、1つのコアの電源電圧とクロック周波数の可変範囲が広い。このため、1つのコアを高性能にも低消費電力にもできる。この点が他社のコアと違う部分だ。その上で、コアのそれぞれの電源電圧とクロック周波数を独立して設定できるため、低消費電力のコアは必要ない。
また、複数のコアを切り替える方式では、切り替えのタイムラグが発生するという問題がある。また、ソフトウェアが複雑になるという欠点もある。big.LTTLEでは、仮想マシン環境管理のためのハイパーバイザーが必要になるし、NVIDIAの方法ではファームウェア側にコードが必要になる。システムを開発する際、こうしたソフトウェアの複雑性がないことが、Kraitのメリットだ。
--- なぜ、ARMの設計を使わずに独自のマイクロアーキテクチャを実装するという方法を選んだのか?
Matar氏: 我々は、高性能なモバイル用アプリケーションプロセッサが必要になると考えていた。これは、ARMなども同じだったと思う。しかし、そのときに性能と低消費電力を両立させる必要があり、独自の実装が必要と判断した。
また、プロセッサの動作クロックは、パイプライン段数などにも影響されるため、同じパイプラインを使うなら、上限のクロック周波数が決まってしまう。高いクロックを実現するには、独自の設計を行う必要がある。そのため、最初のScorpionは、アプリケーションプロセッサで最初に1GHzを達成できた。
(記事提供: AndroWire編集部)