第2章

キャッシュの管理の基本からハイパースレッドまで

マルチコア，マルチプロセッサのハードウェア
中森 章

マルチプロセッサを実現するためには，単純にプロセッサを複数搭載すればよいというわけではない．複数プロセッサをバスに接続するだけでは，バスの奪い合いになり，思ったように性能が上がらない．また，共有メモリの排他制御なども問題になる．これらはプロセッサのハードウェアを工夫することで解決することが可能だ．ここでは，マルチコア，マルチプロセッサから，最新技術であるハイパースレッドまで，ハードウェア面の工夫について解説する．
（編集部）

り，トランジスタのスレッショルド電圧を低く抑えた結果，1．はじめにリーク電力（スタティック電力）が巨大になって使い物にならなくなるという事情があります．また，当然，動作周波昨今，半導体メーカがマイクロプロセッサやマイクロコントローラを作るために使用する CPU コアの種類は，各数が上がれば，動作電力（ダイナミック電力）も周波数に比例して上昇していくので，その影響も受けます．

企業ごとに淘汰されてきた感があります．あるいは，ARM

これと同じような傾向は，組み込み制御の世界にも起き社や MIPS Technologies 社といった CPU コアを提供するています．CPU コアを現実的な消費電力（2W 〜 3W 程度）

IP ベンダから CPU コアを買ってきて，そのまま組み込むで動作させるには，動作周波数を 400MHz 〜 600MHz 程という場合も多いと思われます．

度に制限せざるを得ません．そこで，それ以上の性能向上

しかし，今から 20 年くらい前の 1980 年代には，各半導を狙うにはマルチコア化が必然となってきます．

体メーカが CPU のさまざまなアーキテクチャを開発し，そとはいえ，CPU コアを二つ持ったからといって，2 倍のれを業界標準とするべく躍起になっていました．そのよう性能が得られるとは限りません．各 CPU 間がお互いに協な時代においても，CPU 単体の性能向上はいつか限界に調して動作する仕組みを作り込むことが必要です．それに達すると予測されており，最終的には「マルチプロセッサも増して，OS の手助けが必須となります．

が主流になっていくのは必然」と考えられていました．冗

本稿では，マルチコアのハードウェアに求められる最低談として，一つのプロセッサ内にマルチプロセッサ・シス

限の基幹技術を俯瞰していきたいと思います．なお，マルテムを構築する「1 チップ・マルチプロセッサ」という言葉チコアといっても，その実体はマルチプロセッサ・システが話題になったものです．つまり，「マルチプロセッサなムを 1 チップに集積しただけで，必要な基幹技術はマルチのに一つのプロセッサ？」というのが言葉遊びのように矛プロセッサと同じです．以降では典型的なマルチプロセッ盾する感覚で興味深かったのです．

サの基礎知識を紹介していきます．

ふかん

しかし，この冗談が今や現実味を帯びてきました．一つのチップに集積する場合は，「マルチプロセッサ」という単2．マルチプロセッサの構成語はやはり違和感があるのか，「マルチコア」，「メニイ・コア」という言葉が使われています．マルチコアへの方向● マルチプロセッサの目的は全体的な処理時間の短縮

性を決定的にしたのは Intel 社ですが，最初は性能向上のマルチプロセッサとはプロセッサが複数存在するシステ手段というよりも，性能を維持しつつ消費電力を下げる手ムのことです．ここで各プロセッサにどのように処理させ段として提案されました．動作周波数が数 GHz を超えるるかによって，論点は微妙に異なります．

CPU コア開発では，製造プロセスを微細化する必要があ60

現在，OS がマルチタスクで動作するのは当たり前です

KEYWORD ―― マルチコア，マルチプロセッサ，キャッシュ，スヌープ，MOESI，MESI，ハイパースレッド

Nov. 2007

第2章 マルチコア，マルチプロセッサのハードウェアアが，複数のタスクのそれぞれに一つのプロセッサを固定的ロセッサが一つの共有バスを通してアクセスする方式です．に割り当てて動作させるという方法があります．つまりタ共有メモリが一つしかないので UMA（Uniform Memory

スクの数だけプロセッサを用意して，タスクとプロセッサArchitecture）とも呼ばれます．もう一つは分散共有メモを 1 ： 1 に対応させる方式です．これは，マルチプロセッ

リ方式と呼ばれ，各プロセッサが抱える局所（ローカル）サのもっとも単純な形態です．一般に，タスクが異なれメモリを共有バスでお互いにアクセス可能にしている方式

ば，データ領域も異なります．そこでは，特別な場合を除です．それぞれの局所メモリは物理的にはつながっている

き，同一のメモリ領域をアクセスする場合の競合（順序のので，仮想的に共有していると見なせます．この方式は保証など）を考慮する必要はありません．その意味で，こNUMA（Non-uniform Memory Architecture）とも呼ばれのような形態は本稿の対象外とします．

ます．この NUMA において，キャッシュのコヒーレンシ

私たちが望むのは一つのタスク注 1 が複数のプロセッサ（一貫性）を保つように設計されているものを ccNUMAで処理されることによる全体的な処理時間の短縮です．そ（Cache Coherent NUMA）と呼びます．大型計算機やワーれを行うためには，一つのタスクを複数のスレッドに分割クステーションでは ccNUMA の構成を採用するものは珍し，並列実行可能なスレッドをそれぞれのプロセッサで同しくありません．しかし，本稿では私たちが比較的頻繁に時に実行させることです．ここでスレッドをそれぞれのプ目にする UMA，そして UMA の中でも特に有名な SMP にロセッサに割り付けるのは OS の役割です．

ついて説明していきます．

● 共有メモリを使うのが一般的● 対称型マルチプロセッサ「SMP」とはSMP（Symmetric Multi-processor）は，プロセッサからなので，スレッド間で共通のメモリ領域（変数領域）をアク共有メモリへのアクセス時間が一定の構成のことです．すセスすることは珍しくありません．というか，ほとんどのべてのプロセッサが時間的空間的に対称（Symmetric）で場合，メモリ領域は共通といっても過言ではないでしょあり，それが SMP という単語の由来です．SMP においてう．つまり，マルチプロセッサ構成では，複数のプロセッは，複数のプロセッサは対等な関係のものとして扱われまサが互いにアクセス可能な共有メモリを前提とするのが普す．また，共有メモリはすべてのプロセッサから同一のア通です．

ドレスでアクセスできます．

この共有メモリの構成方法によって，図 1 のように，マSMP の利点としては，各 CPU が簡単にデータを共有でルチプロセッサの構成は 2 種類に分類できます．一つは集き，並列のプログラムが比較的簡単に書けること，および中共有メモリ方式と呼ばれ，一つの共有メモリを複数のプ逐次処理のプログラムやプロセスを処理するのに優れていることが挙げられます．逆に弱点は，同時に一つのプロ

CPU1CPU2……

CPUn

セッサしか共有メモリにアクセスできないので，CPU の数が増えるに従って，共有メモリへのアクセス権の調停が難しくなることがあります．しかし，その取り扱いの簡便さ

CPU1

CPU2……

CPUn

仮想的に共有共有バス

図1
マルチプロセッサの構成方式

Nov. 2007

共有メモリ（a）集中共有メモリ方式

局所メモリ

23456

さて，スレッドは一つのタスクを分割して生成したもの

注 1 ：UNIX などでは資源管理の単位をプロセス，実行の単位をスレッドと呼んでいる．μITRON では実行の単位をタスクと呼ぶことがあるが，本稿では前者の用語を使用し，タスクは「おおまかな処理単位」として使用している．

1

局所メモリ

局所メモリ

共有バス
（b）分散共有メモリ方式

New Products ―― SMSC，電子機器内部の温度を監視する多ポイント測定温度センサ IC を発売
SMSC（Standard Microsystems Corp.）は，電子機器内部の温度を監視する多点測定温度センサ IC「EMC1046/1047/1048」を発売す
る．測定点数は 6 〜 8（このうちの 1 点は内蔵センサ，残りは外付け）．配線抵抗などの補正機能を備えている．測定誤差は± 1 ℃．

61