87726f76bf22892ff6eb07d800b85f90-150x1501 (1)

グーグル、アップルを巻き込んだスマホ大変革が2015年に起こる根拠(4/7)

  • このエントリーをはてなブックマークに追加

by [2013年8月19日]

第3回目では高速化の障害となる問題について扱いました。第4回目では高クロック周波数動作以外のプロセッサ性能向上策を扱います。

第1回 「小さくすれば速くて節電に」 はこちら
第2回 「CPU高速化の秘密」 はこちら
第3回 「速度向上の壁」 はこちら
第5回 「64ビット化で大容量メモリを」 はこちら
第6回 「来たるべきプロセッサ」 はこちら
第7回 「未来のプロセッサのもたらすもの」 はこちら

メモリはCPUより遙かに遅い

第3回目まででご説明してきたとおり、多段パイプライン処理とこれによる高クロック周波数でのプロセッサ動作は、その高速処理を維持し続けるために様々な工夫や処理が必要で、また高クロック周波数で動作させるが故に、大きな消費電力を必要とします。

こうした、高いクロック周波数での動作は高い処理能力をプロセッサに約束するものですが、大きな消費電力やそれに起因する高発熱以外にも、重大な問題があります。

スマートフォンを含め、現在のコンピュータの大半で用いられているDRAM(※1)では、こうした高クロック周波数動作のCPUの演算速度に対してあまりにも低速すぎてCPUを待たせてしまう、つまりCPUの動作の足を引っ張ってパイプライン処理を止めてしまうことが非常に多いのです。

具体的に言えば、現在のCPUではDRAMの動作速度の10倍以上の倍率のかかった動作クロック周波数でCPUコアが動作しているのが当たり前です。そのため、CPUは後述するキャッシュメモリが機能していない場合、その倍率回に1回しかDRAMにアクセスできない、ということになります。これでは、いくらパイプラインを多段化しようがスーパースケーラ技術を導入しようが台無しです。

もちろん、DRAMのメモリインターフェイスの高クロック周波数動作によるデータ転送の高速化に対する努力は続けられており、さらにデスクトップパソコンやサーバ・ワークステーションなどではCPUに内蔵のメモリコントローラそのものの数を物理的に増やすことで一度に扱えるデータ量を増やし、見かけ上のメモリアクセス速度を引き上げている機種さえあります。

  • (※1)DRAM(ディーラム):コンピュータの(情報)記憶装置の役割を果たす半導体メモリ。随時読み出し書き込み半導体メモリーであるDRAMは、安価で大容量の記憶を実現できる。そのため、あらゆる電子機器に使用されている。
  • 制約の多いスマホでの物量作戦は難しい

    しかし、ことメモリ関係については、これらの物量作戦めいた力ずくの解決策は物理的なスペースでも消費電力でも制約の特に厳しい、スマートフォンではおいそれと採用できるものではありません。

    CPUに加えメモリインターフェイスの高クロック周波数動作はそれが常時動作するものであることから消費電力と発熱の両面で望ましくなく、また内蔵メモリコントローラ数の増加によるメモリインターフェイス全体の高速化は、そのハードウェアに搭載すべきメモリチップの数とその接続のための配線本数が増えるということですから基板も複雑化・多層化せざるを得ません。そのため、ただでさえ基板を含めた部品サイズの制約の厳しいスマートフォンやタブレットでこれを採用するのは、部品コストの増大も含めて中々難しいものがあります。

    ちなみに、Snapdragon 800のようにLPDDR3(※2) メモリインターフェイスを2ch搭載したスマートフォン・タブレット向けプロセッサは既に存在しており、それを搭載するスマートフォンも発表されているのですが、それらは当然のごとく軒並み高価なハイエンドモデルとされています。

  • (※2) LPDDR3:現在、スマートフォンやタブレットなどのモバイル機器向けDRAMで主に使用されているDDR2 Mobile RAM(LPDDR2 )と比べ、二倍の転送速度を実現する次世代モバイルメモリ規格。消費電力に関しても、LPDDR2と同一速度で比較した場合、は約25%低減。
  • DRAMが駄目ならより高速なSRAMを使えばいいじゃない

    このメモリが足を引っ張るという問題については、DRAMよりも遥かに高速(※CPUコア内蔵の1次キャッシュあるいは2次キャッシュでCPUコアの動作クロック周波数と等速あるいは1/2倍速程度)で小容量のSRAM(※3)(キャッシュメモリ)をCPUに内蔵、あるいは外付けで接続し、使用頻度の高いプログラムやデータをそこに一時保存しておいてDRAMの代わりにそこをアクセスすることでCPUの待ち時間を減らす、キャッシングという技術を用いることである程度の解決が図られています。

    ただし、キャッシュメモリの容量は種類にもよりますが8キロバイトから6メガバイト程度と通常のDRAMによるメインメモリよりも遙かに小さいため、このキャッシュメモリに格納されていないプログラムやデータの読み書きが必要になると、途端に処理速度が落ちる、ということになってしまいます。

    これについては先にもご説明したように、特にモバイル機種ではDRAMのアクセス速度をCPUの動作速度並みに大きく引き上げることが困難なため、現在の技術ではキャッシュメモリを可能な範囲で大容量化する以上の対応策は見つかっていません。

  • (※3)SRAM(エスラム):半導体素子を利用した記憶装置(RAM)の一種。フリップフロップ回路を用いるため、記憶保持のための動作を必要せず、高速で動作する。しかしその一方で、回路が複雑になるため、集積度を上げにくいという欠点もある。
  • SRAM利用も万能の処方箋ではない

    そして、SRAMは1ビットごとにフリップフロップ回路という複数のトランジスタで構成される比較的複雑な回路を用いて情報を保存し、1ビットあたり1つのトランジスタで回路を構成できるDRAMとは比べものにならないほど多くのトランジスタを必要とするため、いかに半導体製造プロセスの微細化が進んだ現在のプロセッサでも、1つのCPUコアあたり数メガバイトレベルの容量を搭載するのが精一杯です。

    こうした事情から、CPUコアを闇雲に高いクロック周波数で動作させてもメモリ周りが足を引っ張って期待したような性能が得られるとは限らず、またそれに伴う発熱も非常に大きくなるため、高クロック周波数での動作は避けてプロセッサ全体のパフォーマンスを引き上げるには、何か他の手段を講じる必要があります。

    そこで考案されたのが、CPUコアそのものを複数搭載してそれらを同時に実行させることでプロセッサ全体のパフォーマンス向上を実現する、対称マルチプロセッシング(※4)技術でした。

  • (※4)対称マルチプロセッシング/SMP:複数のCPUにより処理を分散させる、マルチプロセッサ方式のひとつ。各CPUを等しく扱うことにより、並列処理を行わせる。この方式では、複数のCPUで同じひとつのメモリ空間を使用。それぞれが情報を共有できる仕組みになっている。これにより、対称マルチプロセッシングにおけるCPUは、それぞれ他のCPUと全く同じ処理を行うことが可能となる。その結果、処理能力や耐障害性における向上を計ることができる。
  • 高クロック化と対極に位置するマルチコア化

    対称マルチプロセッシング技術は、元々は大型コンピュータやスーパーコンピュータで多用されてきたアイデアで、高クロック周波数での動作が自動車のエンジンの回転数引き上げだとすれば、エンジンそのものの気筒数を増やすことでトルクを増すのにあたる、と言えば理解しやすいのではないかと思います。

    極論すれば、半導体製造プロセスのシュリンクでチップ面積が半分にできるなら、元のサイズのままだと単純計算で2つのCPUコアを搭載できて2倍の処理能力が得られることになります。厳密に言えば色々細かい制約があるのですが、40nmプロセスの時代だと通常は2コアが精一杯であったスマートフォンの統合プロセッサが、同じ回路なら面積半分以下で形成できる28nmプロセスの一般化した現在では、4コア搭載が当たり前になっている、というのはこれが理由なのです。

    何かと制約の多いマルチプロセッシング

    ただ、このマルチプロセッシング技術は、闇雲に搭載コア数を増やしても良いパフォーマンスが得られません。

    というのは、そもそもプログラムが同時に複数実行される環境でなければ、幾らたくさんのプロセッサコアがあっても利用されず遊んでしまうのと、仮に複数のプログラムが同時実行していても、「それらの実行処理を各CPUコアへ割り振る」という作業自体はいずれか1つのCPUコアで行わねばならず、その部分の高速化はできないため、マルチプロセッシングによるプロセッサ群全体の性能向上が制約される、という「アムダールの法則(※5)」と呼ばれる法則(※この法則そのものは、大型コンピューターで対称マルチプロセッサ構成が採用され始めた時代に提唱されたものです)の枷から逃れられないためです。

    これは、わかりやすく言えば1人で10分かけて行う仕事を4人がかりで分担して2分半で終わらせるのは比較的容易でも、同じ仕事を600人がかりで1秒で終わらせることは難しい(600人に作業を分担させる工程で大きな時間がかかってしまい、単純計算通りの速度が得られない)、という事象を法則化したものです。

  • (※5)アムダールの法則:アメリカの伝説的なコンピュータアーキテクト、ジーン・アムダール(1922~)が提唱した、並列コンピュータの基本理論。並列計算の分野において、複数のプロセッサを使用したときの性能向上を理論的に予測する際に使用される。
  • 手空きのプロセッサを遊ばせないようにするのは難しい

    また、この対称マルチプロセッシングには、OSの対応が必須で、しかもアプリの側も処理の分散が行えるようなプログラムがなされていないと期待した性能が出ない、という制約があります。

    そのため、スマートフォンよりも複雑で、常駐サービスなどたくさんのプログラムが同時に実行されている、そしてOSレベルで最初からマルチプロセッシングに対応している現在のWindows 7やWindows 8でさえ、複数のCPUコアをフルに利用するように特別な書き方をされた動画エンコーダなどのプログラムを実行しない限りは、6コアCPU以上のプロセッサ環境でその性能を100パーセント発揮させることはかなり困難です。

    動作させるアプリがプログラムそのもので複数のCPUコアに処理を分散して割り振るように設計されていない場合、極端な例では12基搭載されたCPUコアの内、1つだけに常時90パーセントから100パーセント程度の負荷がかかって、後のCPUコアは完全に遊んでいる、といった状況になってしまうことすらあるのです。

    6コアのCPUを2基搭載し2.6GHz駆動の12CPUコアが利用可能なマシンにて、64ビット版のWindows 7でマルチコアCPU対応の動画エンコードプログラムを実行した場合のタスクマネージャー表示。
    効率よく各CPUコアに割り振って処理させるように設計されたプログラムを実行させた場合でさえ、この程度の利用率(75パーセント前後)に留まるケースが少なくない。

     

    上図と同じく12CPUコア搭載マシンでマルチコアCPU非対応のアプリを実行した場合のタスクマネージャー表示。
    高負荷の処理であるにもかかわらず。各CPUコアへ処理を割り振るようにプログラムが書かれていない場合、どれほどたくさんのCPUコアを搭載していても、このように1CPUコアに処理が集中して残りのコアが遊んだ状態となってしまう。

    そのため、マルチCPUコア化は現在のOS環境、アプリ資産の下での利用を前提とする限り、スマートフォンレベルではCPUは4コアから6コアもあれば十分(※現在のAndroid 4.xでの実績を見る限り、少なくとも4コアまではCPUコア数を増やした方がメリットが大きくなるようです)で、それ以上の多CPUコア化は過剰装備となってしまうと考えられます。

    8CPUコア搭載が当たり前になる次世代家庭用ゲーム機

    ソニー・コンピュータエンタテインメント PlayStation 4
    AMD製の8コアCPUと高性能GPUを統合したカスタムプロセッサを搭載する次世代家庭用ゲーム機。

    ちなみに、先日発表された次世代家庭用ゲーム機であるソニー・コンピュータエンタテインメントのPlayStation 4やマイクロソフトのXbox Oneでは8CPUコア搭載が謳われていますが、これはこの種の家庭用ゲーム機では、例えばバックグラウンドで複数の重い処理のプログラムを実行する可能性があることや、OSの仮想化による複数同時実行などを考慮したのもので、ユーザーインターフェイスの設計から考えて複数のアプリをフロントエンドで動作させる可能性が低く、またバックグラウンドでそこまで重い計算処理を実行させたりOSを仮想化して多重実行させるとは考えがたいスマートフォン(※ソニーのXperiaシリーズのように、ユーティリティ的なアプリをメインのアプリとは別に同時に動作させるユーザーインターフェイスを備える機種も存在しますが、これとてそこまで重いアプリの動作を考慮していないように見えます)の一般的な利用状況では、少なくともここ1年か2年先までは、そこまでの重装備化は不要でしょう。

    繰り返す。無駄に多コアCPUとしても効果はない

    むしろ、現在のOS環境やアプリ、それに利用可能な半導体製造プロセスなどを考慮すると、無闇にCPUコア数を増やすよりも、その分のトランジスタ数を内蔵GPUの高性能化に割り振った方がより高い実効性能を得られる、というのが正直なところで、実際にもSnapdragon 800をはじめとする最新のスマートフォン向け統合プロセッサでは、4CPUコア+高性能GPU、という構成がトレンドとなっています。先日来一部で騒ぎになっている、サムスンのGalaxy S4(Exynos 5 Octa搭載の海外モデル)が一部のベンチマークテストなどでのみ内蔵GPUを最高速度で動作させて日常使用ではあり得ない性能が出るように小細工をしていた、という話でもわかるように、統合プロセッサに内蔵されているGPUの性能は、一定の水準に達して現状の技術では差別化が難しくなっているCPUの性能以上に、スマートフォンの性能を評価する上で無視できない重要な要素となっているのです。

    なお、サムスンのExynos 5 Octaをはじめとする、ARM社のCortex-A15・Cortex-A7をペアで4組搭載する「big.LITTLE」構成のプロセッサは物理的には8CPUコア構成となっていますが、実際には同時に4CPUコアまでの枠内でしか動作しない設計(※負荷に応じて高速だが消費電力の大きなCortex-A15と低速だが消費電力の小さいCortex-A7を切り替えて動作させます)となっているのが通常であるため、これも実用上は実質的に4CPUコア構成のプロセッサであると考えて差し支えありません。

    そのため、今後よほど何か極端に「重い」処理を常時実行させるような状況とならない限り、スマートフォンではCPUは4コアで充分、ということになりそうです。

    (以下、第5回 「64ビット化で大容量メモリを」に続く)

    コメントは受け付けていません。

    PageTopへ