マルチコア (英 : multiple core, multi-core ) は、1つのプロセッサ・パッケージ 内に複数のプロセッサ ・コアを搭載する技術であり、マルチプロセッシング の一形態である。
外見的には1つのプロセッサでありながら論理的には複数のプロセッサとして認識されるため、同じコア数のマルチプロセッサと比較して実装面積としては省スペースであり、プロセッサコア間の通信を高速化することも可能である。主に並列処理 を行わせる環境下では、プロセッサ・チップ 全体での処理能力を上げ性能向上を果たすが、アムダールの法則 による制約を受ける。このプロセッサ・パッケージ内のプロセッサ・コアが2つであればデュアル コア (dual-core)、3つであればトリプルコア (triple-core)、4つであればクアッドコア (quad-core)、6つであればヘキサ コア (hexa-core)、8つは伝統的にインテル ではオクタルコア (octal-core)、AMD ではオクタ コア (octa-core) と呼ばれるほか、オクトコア (octo-core) とも呼ばれる。さらに高性能な専用プロセッサの中には十個以上ものコアを持つものがあり、メニーコア (many-core) と呼ばれる[ 1] 。
なお、従来の1つのコアを持つプロセッサはマルチコアに対してシングルコア (single-core) とも呼ばれる。
シングルダイ・マルチコアの一例の概念図。この場合、プロセッサ・コアとレベル1キャッシュ が2つあり、レベル2キャッシュは2つのコアと共有される。
概要
マルチコアはシングルコアに対し、プロセスルール が同じであれば、実装 したプロセッサ・コア数に比例してダイ が大きくなる。面積が増えると、級数的に製造不良が増えるなど製造の面での難度が上る(歩留まり が悪化する)。
並列コンピューティングに対応したプログラミング が必要なため、ソフトウェア の開発は難しくなるが、OS やミドルウェア などが並列処理の支援を行なうことでソフトウェア開発は容易なものとなる場合がある。既にマルチプロセッサ対応しているシングルコア・プロセッサを基にする、マルチコア・プロセッサの製品化は論理設計を省略できるため比較的簡単である。
性能が要求されるワークステーション 、サーバ 分野はもとより、パーソナルコンピュータ (PC) でも、高消費電力と廃熱処理(および冷却に伴う騒音対策)などによる制約や、クロック周波数 向上対効果の停滞などにより、この技術へのシフトが進んでいる。
マルチコア・プロセッサは消費電力低減と発熱抑制を目的に、各コアごとに動作電圧やクロック・スピードの可変制御を行なったり、休止状態を含む動作状態の制御を行なっている製品もある。コアごとに複数の電圧で給電するシステムが別途必要となるため、単一電圧に比して設計・実装・製造難易度は高い。
マルチコア・プロセッサに似た技術に、同時マルチスレッディング (simultaneous multi-threading, SMT) がある。これは1つのプロセッサを外部から2つ以上に見せるという点では同じだが、実際に存在しているコアは1つ、すなわちシングルコアであるという点でマルチコア技術とは根本的に異なる。
用語
効果的に説明するために、まず使用する用語を示す。
ダイ (die)
シリコンウェハー 上に半導体 回路 を作り、四角に切り出したもの。ベア・チップやペレットとも呼ばれる。ダイはプロセッサ・パッケージ (CPUパッケージ)と呼ばれる覆いで封止されている。プロセッサはパッケージ化によって、基板との接点、ヒートスプレッダ 、コンデンサ、抵抗などが一体となっている。
半導体産業ではプロセス済みのウェハーやダイの生産までが上流工程であり、テストとパッケージ封入が下流工程になる。大手半導体企業で自社生産としている場合でも下流工程はアウトソーシングしていることがある。シリコンウェハーは無塵環境 で製造されるが、不純物 等の影響で不良箇所の発生が避けられない。ダイ上のどこか一箇所にでも不良があれば製品にはならないため、プロセスルールの微細化による回路の縮小でダイサイズを縮小し、シリコンウェハーからの切り出しを細分化して数を増やせば、ウェハー生産数に対するダイ不良品の数を減らすことができ、利益率が上がる。
コア (core)
コアとは、プロセッサ・ダイ上に作成されるプロセッサ回路の中核部分で、「キャッシュメモリ 」を除く半導体回路部分。ただし、他のコアとは共有しない、コアごとのキャッシュメモリはコアに含める事がある。多くの場合、プロセッサ・ダイはコア、キャッシュメモリ、ボンディング ・パッド等の接続部から構成される。
サブストレート (substrate)
ダイを載せて外部接続ピンなどの外力から守るデジタル半導体の主要構成部材の1つ。MCM (Multi-Chip Module ) やMCP (Multi-Chip Package) の場合には1つのサブストレートに複数のダイが載る。
チップ (chip)
いくぶん不明瞭な意味で、半導体部品を意味する。ダイやペレットを指す場合もある。また、表面実装技術 (surface mount technology, SMT) の受動部品を指す場合もある。
背景
ポラックの法則 では、プロセッサ を構成するトランジスタ 数をプロセス微細化 を行なわずに単純に2倍にした場合、ダイサイズは2倍となるが、処理能力は
2
{\displaystyle {\sqrt {2}}}
倍(約1.4倍)にとどまるとされている。一方で、消費電力はトランジスタ数に比例する。この法則によれば2倍のコストで1.4倍のリターンしか得られず、プロセッサあたりのトランジスタ数を増やすことは非効率となる。
にもかかわらずn倍のトランジスタを使ってnコアのプロセッサを実装するのは、シングルコアでは壁があるからだ、ということが単純には言える。
以下ではメインフレーム やスーパーコンピュータ のマルチプロセッサ化や、それを1チップに集積したマルチコア化の歴史は略史としミニコンピュータ とワークステーション については割愛。マイクロプロセッサ のマルチプロセッサ化や、そのパーソナルコンピュータ での実現について、背景から述べる。
マルチプロセッサ
メインフレームでは、UNIVAC 1108(1964年)[ 2] が最初期のマルチプロセッサシステムとして知られる。IBM のSystem/360 (1964年)はモデル65・67で(en:IBM System/360 Model 65 ・en:IBM System/360 Model 67 )で、マルチプロセッサ化が可能となった。
富士通 ・日立 では、FACOM はFACOM230-60(1968年)がマルチプロセッサ機であり[ 3] [ 4] 提携しているアムダール も1980年代にはマルチプロセッサ化した。HITAC はHITAC 8800/8700(1970年・1971年)がマルチプロセッサ機であり[ 5] [ 6] 両社ともに引き続くMシリーズではその初期よりマルチプロセッサ化した(FACOM Mシリーズ ・HITAC Mシリーズ )。
日本電気 ・東芝 はTOSBAC-5600 (1970年)[ 7] [ 8] と、それを踏襲したACOS シリーズ77 システム600, 700[ 9] (1974年、ACOS-6 系)からマルチプロセッサ化した。
クレイ のスーパーコンピュータ では、Cray X-MP (1982年)が、日本電気のSXシリーズ ではSX-3(1989年、NEC SX#SX-3 )が[ 10] [ 11] 、富士通ではVPPシリーズ (1992年〜)が[ 12] [ 13] 、日立ではHITAC S-3000シリーズ(1992年、en:HITAC S-3000 )が[ 14] [ 15] マルチプロセッサ化のはじまりである。
以上のメインフレームやスーパーコンピュータのマルチプロセッサ化では、最初は個別部品で実装されていたものが、やがてIC 化し、LSIによってプロセッサが1チップ化し、という集積度向上の自然な流れとして、1チップにマルチコアが集積されるようになっていった。
マイクロプロセッサの並列使用
1970年代 にマイクロプロセッサ が誕生し大量生産 されるようになると、そのコストパフォーマンス等の特性から、複数個を束ねて使うというアイディアが生まれた。1977年に始まるPACS プロジェクトでは当初から、パーソナルコンピュータやワークステーションでCPU として使われるようなマイクロプロセッサを多数並列使用している。またコンピュータグラフィックス 用の専用計算機 であるが、1982年のLINKS-1もそのようなシステムである[ 16] (発展型のLINKS-2ではカスタムチップでの実装となった[ 17] 。参考: Personal LINKS#歴史 )。パーソナルコンピュータが普及すると、その拡張カード に、多数のマイクロプロセッサを搭載して並列処理に利用する、という拡張カードがあらわれ、1995年にはその自作を指南する『つくる並列処理コンピュータ PC-9800シリーズ ではしる 』という書籍が上梓されている[ 18] 。
以上のマイクロプロセッサベースのマルチプロセッサシステムはいずれも、既存のOSを並列プロセッサで実行できたり、既存のアプリケーションをソースコードの小修正で利用できたり、ということはできない、既存システムとは連続性の無いシステムである。
PCアーキテクチャでのマルチプロセッサ化
ここからは、既存システムと連続性のあるシステムに主眼をおく。
前節で述べたような連続性の無いシステムの延長にあるマルチプロセッサのマザーボード もあったようだが、良く知られているものはほとんど無い。また次に述べるSMP以前のAMPのマザーボードもわずかにある(SV-98 model3など)。
PCアーキテクチャで連続性のあるシステムのためには、対称型マルチプロセッシング (symmetric multi-processing, SMP) の必要があり、x86 ではAPIC を待たねばならなかった。APICには486 以降が必要だった[ 19] 。APICが内蔵されるのはP54C(Intel Pentium (1993年)#第二世代 )コアからで、1990年代 中頃のこととなる。[ 20]
なおP54C以降のコアだがTillamook(Mobile MMX Pentium)は非対応という情報がある[ 21] 。
P54C以降のコアを採用したプロセッサにより、サーバ用途でのパーソナルコンピュータ類似製品 では1990年代中頃から、デュアルソケットやクアッドソケットのマザーボードが現れるようになった(98ではPC-9821 Rv20(および後継)がデュアルソケットである[ 22] )。それが本格化するのはインテル チップセット (当時はインテル以外もチップセット を提供していたので、それらも含む)がマルチプロセッサに対応するようになってからである。そういったマザーボードにデュアルコアのPentium D (2005年)などを装着して、2x2=4 や 2x4=8 といった多数のマルチコア環境が現れている。
以上では、マルチコア化の前提となるマルチプロセッサ化がいかに可能となっていったか、を主に述べた。以下では、いかにしてマルチコア化が必須になっていったか、を述べる。
発熱と消費電力の問題
1990年代中頃からラップトップパソコン での「腿(もも)が熱い」という発熱への不満やPCの放熱ファンの騒音が問題として認識され始めた。将来の汎用プロセッサは、製造プロセスの微細化によるリーク電流 の増加や、処理能力向上を目的とした動作クロックの高速化によって、消費電力がますます増大していくことが予想された。当時の汎用プロセッサ処理速度の向上手法のままでは、汎用プロセッサのダイ温度が非現実的なまでに高温となり、冷却機構の物理的な限界から性能向上が頭打ちになることもまた予想された。2000年 前後から一般ユーザー向けのPCでも水冷式の製品が販売されはじめた。
クロックの限界
2001年 からは1GHzを越えるCPUクロックが一般的となり、2010年 頃には5GHz前後まで伸びた。しかし、1GHzの1サイクルの時間内では、光速度でも30cmしか伝播できない物理法則の壁がある。そのため、今後さらにクロックが高速化されて5GHz以上や10GHzになれば従来のLC による伝播遅延に加えて、電気信号そのものの伝播の遅さも無視できなくなってくる。
デナード則の崩壊
シングルコア性能の向上の限界
現在 [いつ? ] の汎用プロセッサ内部の処理機構がスーパースカラー 機構などにより既に高度に高速処理への最適化がなされている。たとえば命令の先読みによって投機実行 と呼ばれる、本当に実行が必要かまだ決まらない内から前もって次の処理を実行してしまうという動作を常に行う、汎用プロセッサの外部に主メモリがあるにもかかわらず汎用プロセッサ上にキャッシュメモリが3段階にも用意されている、さらにプリフェッチ・キューまでが用意されているといった具合である。他にもスーパーパイプライン、VLIW 、アウト・オブ・オーダー実行 等がある。これらの高速処理に欠かせない汎用プロセッサの回路は、それぞれがほんの少しだけ処理の高速化に貢献している回路であり、これ以上のさらなる付加回路を汎用プロセッサに追加してもそれほどの処理の高速化には貢献しないと予測される。
処理性能の向上策
マルチコア・プロセッサによってプロセッサ・コア数を増やした場合、OSやソフトウェアの対応により、システム全体の処理性能を向上させられることから、これら発熱とクロックの限界への解決策になる。
実際に今日の [いつ? ] PCは動画や音楽データの再生やエンコード のように、マルチスレッド で性能向上を期待できる用途に使われることが増えている。
さらに、バックグラウンドで音楽を再生したりコンピュータウイルス のチェックを行なったりしながら、メールやWeb閲覧、文書作成、ゲームを楽しむことなどが行なわれており、複数のアプリケーションや多数のスレッドが実行される環境になっているため、マルチスレッドに対応するアプリケーションソフトウェアを利用していなくても、マルチコアの利点を享受することができる。
マルチコア・プロセッサの歴史
この節は更新が必要とされています。 この節には古い情報が掲載されています。編集の際に新しい情報を記事に
反映 させてください。反映後、このタグは除去してください。
(2024年6月 )
1999年 、IBM は商用サーバ向けプロセッサでデュアルコアのPOWER4 を発表し、CPUのマルチコア化をリードした。2004年 5月 にはインテル が従来のPentium 4 の高速版でシングルコアCPUの開発コード「Tejas」の開発中止を決定したことが伝えられた。同じ頃、AMD も同社の計画から次世代のK9・K10などシリーズ以降の高速版CPUの開発を全て中止した。なお現在 [いつ? ] では、K8シリーズをマルチコア化の強化という新たな方向性で製品化したものをK10としている。
2005年 になって、AMDは当初から消費電力を抑えマルチコア化を見越したK8アーキテクチャの設計を行い、デュアルコア製品の提供を開始した。製品名はDual-Core Opteron とAthlon 64 X2 (のちにAthlon X2に改称)である。インテルは、マルチコアCPUの市場投入の出遅れをカバーするために、単純に2つのCPUのダイ (die) を1つのパッケージに封入したマルチコア・マルチダイ形式をとり、マルチコア・チップを早く出荷するというアプローチを取った。製品名ではPentium D など。近年 [いつ? ] では逆にAMDが設計の単純なマルチダイのOpteronチップを出荷する一方で、IntelはCPUコアのモジュール化によって派生ダイの製造を容易にし、リングバスの導入によりコア数の増減を容易にしているため、マルチダイの手段を取っていない。
また同じ2005年にはサン・マイクロシステムズ はサーバ向けプロセッサUltraSPARC T1 で8コアを実現した。
このほかPower Architecture 系では、2006年 リリースのCell が8コア[ 23] 、2010年 リリースのPOWER7 が8コアである。
マルチコア・プロセッサの技術
ホモジニアスとヘテロジニアス
同種のコアを複数実装する「ホモジニアスマルチコア」と、異種のコアを実装する「ヘテロジニアスマルチコア 」が存在する。
IBM 、ソニー・コンピュータエンタテインメント 、東芝 の3社が共同開発しPlayStation 3 に組み込まれているCell プロセッサは、1個の汎用的なプロセッサコアと、ストリーミング処理に特化した8個のシンプルなプロセッサコアを組み合わせた「ヘテロジニアスマルチコア」というアプローチをとっている。
Xbox 360 のプロセッサ・コアは対称型マルチコアと呼ばれる3コアのプロセッサで、構造上はホモジニアスに属するものである。同時マルチスレッディング (SMT) をサポートし、最大6つのハードウェアスレッドを同時に駆動することができる。
米AMD社はさらなる高処理能力化への手法としてヘテロジニアスマルチコアプロセッサを計画し、Fusion プロジェクトと命名した。その手始めとして、グラフィックス処理装置 (Graphics Processing Unit , GPU) 開発企業であるカナダのATI 社を2006年 に買収し、GPUと汎用プロセッサを同一ダイ に集積したCPU製品 (AMD Accelerated Processing Unit , APU) を登場させた。
また、命令セット の形式が同じコアを組み合わせたプロセッサのうち、ARMアーキテクチャ のbig.LITTLE のように、処理能力(動作クロック周波数)の高いコアと処理能力の低いコアを組み合わせたプロセッサも、トランジスタ数や消費電力の点で有利な低コストのマルチコアと考えられる。同一命令セットという観点ではホモジニアスではあるが、処理能力の点では同一ではなくヘテロジニアスとなる。異種CPUトポロジー (heterogeneous CPU topologies) とも呼ばれる[ 24] 。
電力管理
マルチコア化の目的の1つに低消費電力化がある。マルチコアに限らないが、多くの汎用プロセッサや専用プロセッサでは、使用しないコアのクロックを停止する「クロック・ゲーティング」、機能ブロックごとに電源供給を停止してリーク電流 そのものを無くす「パワー・ゲーティング」が備わっている。
汎用プロセッサの中には他のコアを停止する代わりに1つのコアだけ供給電圧やクロックを高めてシングルコアでの処理性能を高める技術も導入が予定されている。機能ブロックごとにスレッシュホールド電圧値を変えて動作速度を変えるのは「マルチVth」と呼ばれる。マルチコアでは、機能ブロックごとでしか行なえなかったシングルコア製品よりさらに進んだ電力と処理性能との最適化機能が取り込まれる。
メモリ・ボトルネックの解消
現代のプロセッサはノイマン型 であるため、ノイマンズ・ボトルネック による処理速度の制約がある。2009年現在の主記憶装置 に使われるDRAM の速度はプロセッサに比べて極めて遅く、この速度差を解消するメモリ技術は未だに現れていない。
シングルコアでは、プロセッサ内部に小容量のキャッシュメモリを何階層も重ねて持つなど、遅い主記憶装置でもプロセッサの処理性能を大きく損なうことを避けてきたが、複数のプロセッサ・コアを単一の主記憶装置へ接続することは、メモリアクセスによるボトルネック が顕在化する危険性をはらんでいる。
主記憶装置アクセスの高速化
代表的なプロセッサ・メーカー2社[どれ? ] は、外部(ノースブリッジ )にあったDRAMコントローラーをマルチコア・プロセッサに取り込み、これらのアクセス信号線を高速化するなど主記憶装置への帯域幅 を広げることで対応する予定である。
キャッシュシステムの高度化
主記憶装置であるDRAMとプロセッサ側との速度差はマルチコアの採用によって一層拡大するため、シングルコア以上にキャッシュシステムによるメモリ帯域幅の確保は重要となる。
幸い、プリフェッチへの努力をある程度あきらめることで、そういった回路へ割いていたトランジスタが削減できてそれぞれのプロセッサ・コアを小さく作れるため、プロセスルールの微細化による恩恵も続くことに合わせて、複数のプロセッサ・コアを1つのダイに載せてもなお、充分な容量のローカルキャッシュを作り込む余裕が生まれる。
各コアごとにローカルでキャッシュを持つことはアクセス・スピードでは有利になるが、互いのローカル・キャッシュの内容を同一に保つスヌープ機構が複雑になり、各ローカル・キャッシュを共有し合う機構ではさらに複雑になる[ 25] 。このため、複数のコアの配下で3レベルにもなるキャッシュ階層同士が最適の調停機構を実現するにはこれまでのプリフェッチへの努力とは違った種類の複雑で高速動作が求められる回路がダイの上で大きな面積を占めるようになる。この新たなキャッシュコントローラー部はかなり電力を消費するが、少しでも主記憶装置への無駄なアクセスが減らせるのであれば消費電力は総合的には削減できるとされる。
冗長構成
メモリ半導体ではあらかじめ冗長領域を設けて不良を少なくする工夫が行なわれているが、マルチコアの登場によって演算部であるコアも同様の冗長的な編成が可能となっている。ソニー・コンピュータエンタテインメント のCellプロセッサでは8個あるコア相当のSPEの内、実際に有効化するSPEは7個とした。こうすることで1個のSPEの動作不良な量産ダイの中でも出荷可能となり、歩留まり が向上する。米インテル社から将来出荷予定のNehalemでもキャッシュメモリの冗長化だけでなく不良コアを無効化する機能が付くと公表されている。
プロセッサ例
汎用プロセッサ
NetBurstマイクロアーキテクチャ はPC向けに関してはシングルコアだったが、サーバー向けに関してはデュアルコア製品もあった。
Coreマイクロアーキテクチャ 採用のCore 2シリーズにてPC向けでもマルチコアが導入されたが、Core 2 Soloのようにモバイル向けではシングルコア製品もあった。
Nehalemマイクロアーキテクチャ やSandy Bridgeマイクロアーキテクチャ はシングルコア製品もあった。Ivy Bridgeマイクロアーキテクチャ 以降はデュアルコア以上となった。
なお、インテルは10個以上のコアを集積したプロセッサをメニーコアと呼んでいる[ 1] 。
モバイルSoC
専用プロセッサ
組み込み系プロセッサ
汎用プロセッサでマルチコアが一般化する以前から、組み込みシステム ではマルチコアは一般的に使われている。iPod に搭載されているPortalPlayerのチップは、「ARM 7」のコアを2つ搭載している。
脚注
関連項目