...

マルチコアプロセッサの スケジューリングに関する研究

by user

on
Category: Documents
3

views

Report

Comments

Transcript

マルチコアプロセッサの スケジューリングに関する研究
東北大学工学部 卒業論文
マルチコアプロセッサの
スケジューリングに関する研究
機械・知能工学科 小林・後藤・滝沢研究室
A1TB1229 船矢 祐介
(平成 18 年 3 月)
目次
第 1 章 緒論
4
1.1
背景と目的 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
1.2
本論文の構成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
第 2 章 スレッドレベル並列性
6
2.1
緒言 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
2.2
スレッド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
2.3
ILP と TLP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
2.4
マルチコア . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
2.5
SMT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
2.6
アーキテクチャによる性能の違い . . . . . . . . . . . . . . . . . . . . . . .
9
2.7
スケジューリングの方針 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
2.8
結言 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
第 3 章 SMT 優先度に基づくマルチコアスレッドスケジューリング手法
14
3.1
緒言 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
3.2
SMT 効率 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
3.3
SMT 優先度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
3.4
SMT 優先度を用いたスレッドスケジューリング . . . . . . . . . . . . . . .
17
3.5
結言 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
第 4 章 性能評価
20
4.1
緒言 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
4.2
実験条件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
4.3
実験方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
4.4
実験結果および考察 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
4.5
結言 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
第 5 章 結論
32
参考文献
33
謝辞
34
1
図目次
1
マルチプロセッサアーキテクチャ(左)と,シングルチップマルチコアアー
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
2
シングルコア SMT アーキテクチャ . . . . . . . . . . . . . . . . . . . . .
9
3
各アーキテクチャにおけるスレッド実行時の演算ユニットの使用状況.(a)
キテクチャ(右)
従来のシングルコアシングルスレッド(b)SMT を用いたシングルコアマ
ルチスレッド(c)マルチコアマルチスレッド . . . . . . . . . . . . . . . .
4
シングルコアシングルスレッド,シングルコア SMT,マルチコアアーキテ
クチャで 2 スレッド実行するのにかかった時間 . . . . . . . . . . . . . . .
5
10
11
2 スレッド実行したときの,シングルコア SMT の IPC と,マルチコアアー
キテクチャの 1 コアあたりの平均 IPC
. . . . . . . . . . . . . . . . . . .
11
6
1 スレッドを実行した時の実行性能 . . . . . . . . . . . . . . . . . . . . .
12
7
2 スレッドを実行した時の実行性能 . . . . . . . . . . . . . . . . . . . . .
15
8
2 スレッドの組み合わせに対する SMT 効率
. . . . . . . . . . . . . . . .
16
9
単独スレッドの実行終了までに各ユニットで費したサイクルの割合 . . . .
17
10
単独スレッドの SMT 優先度 . . . . . . . . . . . . . . . . . . . . . . . . .
18
11
SMT 優先度の和と SMT 効率の相関関係 . . . . . . . . . . . . . . . . . .
18
12
各アプリケーションの単独実行時の演算ユニットの利用効率 . . . . . . . .
22
13
シミュレーション結果 1 . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
14
シミュレーション結果 2 手法 1=手法 2 . . . . . . . . . . . . . . . . . . .
24
15
シミュレーション結果 3 . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
16
シミュレーション結果 4 . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
17
シミュレーション結果 5 . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
18
シミュレーション結果 6 手法 1=手法 2 . . . . . . . . . . . . . . . . . . .
26
19
シミュレーション結果 7 . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
20
シミュレーション結果 8 . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
21
シミュレーション結果 9 . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
22
シミュレーション結果 10 手法 1=手法 2 . . . . . . . . . . . . . . . . . .
28
23
シミュレーション結果 11 手法 1=手法 2 . . . . . . . . . . . . . . . . . .
29
24
シミュレーション結果 12 手法 1=手法 2 . . . . . . . . . . . . . . . . . .
29
25
シミュレーション結果 13 手法 1=手法 2 . . . . . . . . . . . . . . . . . .
30
26
シミュレーション結果 14 手法 1=手法 2 . . . . . . . . . . . . . . . . . .
30
2
27
シミュレーション結果 15 手法 1=手法 2 . . . . . . . . . . . . . . . . . .
31
28
各手法におけるコアごとの IPC の平均 . . . . . . . . . . . . . . . . . . .
31
1
本実験で使用する主なパラメータ . . . . . . . . . . . . . . . . . . . . . .
21
2
本実験で使用するベンチマークアプリケーション . . . . . . . . . . . . . .
21
3
各手法の優劣比較
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
表目次
3
第1章
緒論
1.1 背景と目的
マイクロプロセッサの性能向上はこれまで,主にクロック周波数の向上と,命令レベル並
列性(ILP)を利用した並列処理能力の向上によって行われてきた.前者には,半導体の微
細化やパイプラインの段数を増やすといった方法が,後者にはスーパースカラや VLIW と
いった方法が挙げられる.しかし,チップの高集積化,高周波数化に伴う消費電力や発熱量
の増大が深刻であること,また,従来から指摘されている ILP の限界 [1] によって演算ユ
ニットの利用効率が悪化していることなどから,従来の設計での性能向上は行き詰まりを見
せている.
そこで今,ILP に代わってスレッドレベル並列性(TLP)が注目されている.TLP で
は,独立な,あるいは依存性の低い複数のスレッドから並列処理可能な命令を抽出するた
め,より高い並列度を実現できる.この TLP を実装する方法として次の二つがある.一つ
は,従来のシングルコアに Simultaneous Multi-Threading(SMT)[2] を用いる方法であ
る.SMT は,1 つのコアで複数のスレッドを同時に実行可能にする技術で,もともと利用
効率の悪かった演算ユニットの利用効率を上げることが可能となる.もう一つは,プロセッ
サをシングルチップマルチコアにする方法である.マルチコアは,複数のコアを使い,複数
のスレッドを同時に実行可能にするアーキテクチャである.二つの方法は,共にクロック周
波数を上げずに実行性能を上げることができ,従来の設計の問題を解決できると期待されて
いる [3].
そこで本論文では, TLP を利用して複数のスレッドを並列に実行できるプロセッサアー
キテクチャにおいて,効果的なスレッドスケジューリングを行い,プロセッサ全体として最
も高い性能を実現することを研究の目的とする.本論文で焦点を当てるプロセッサは,二つ
の方法を両立するアーキテクチャである,マルチコアで,各コアでは複数のスレッドを同時
に実行する SMT が可能なプロセッサとする.また,同じプロセスから派生した複数スレッ
ドは,同じメモリ空間を共有し,SMT での実行に適していると言えるので,ここでは異な
るプロセスから派生した複数スレッドの処理について検討する.
現在,このようなプロセッサに対する各コアへのスレッドの割り当て方法は,平均的な性
能の向上を目指してスレッドをすべて平等に扱う単純なものが多い.そのため,個々のス
レッドに対し,そのスレッド固有の特性が生かせるようなリソースの割り当てができていな
い.マルチコアで各コアで SMT が可能なプロセッサが,プロセッサ全体で最も高い性能を
発揮するためには,各スレッドの特徴を考慮し,その特徴に応じて,最適なコア内・コア間
スレッドスケジューリングを行う必要がある.
4
本論文では,スレッドの特徴量を定義し,各スレッドの特徴を定量的に評価する.また,
その特徴量に基づいたスレッドスケジューリング手法を提案し,その有効性をシミュレー
ションにより評価する.
1.2 本論文の構成
本論文は 5 章から構成される.第 1 章は緒論である.第 2 章ではスレッドレベル並列性
について述べ,その効果を予備実験により確認する.さらに提案するスレッドスケジューリ
ングの方針を示す.第 3 章では,スレッド特徴量を定義し,それに基づいたスレッドスケ
ジューリング手法を提案する.第 4 章では,提案手法の性能をシミュレーションによって評
価する.最後に第 5 章は結論である.
5
第2章
スレッドレベル並列性
2.1 緒言
本章では,スレッドレベル並列性(TLP)について詳しく述べる.
最初にスレッドの定義について説明する.次に,従来から性能向上に利用されてきた ILP
の問題点を挙げ,ILP に代わる TLP について述べる.次に TLP を実装する方法として,
マルチコアアーキテクチャと,シングルコア SMT アーキテクチャについてその仕組みを述
べ,その問題点を指摘する.さらに従来の ILP のみのアーキテクチャとの性能の違いを予
備実験によって確かめる.最後に,本論文の目的である,最適なコア内・コア間スレッドス
ケジューリングのための方針を示す.
2.2 スレッド
プログラムを実行するとき,OS によって実行するプログラムごとにプロセスという環境
が作られ,このプロセスにメモリ空間などのリソースが割り当てられる.一般に 1 プログラ
ムが 1 プロセスと考えてよい.プログラムの実行がプロセス単位でしか行われない場合,次
のような手順でプログラムの処理が進行していく.まずプログラムが物理的にメモリにロー
ドされる.次にプロセスが生成され,個別のプロセスごとにメモリ空間が作られる.作られ
たメモリ空間に,プログラムが格納された物理メモリの領域がマップされ,メモリ空間の先
頭からプログラムが逐次実行される.このように,プロセスの生成・管理には,大きなオー
バーヘッドがかかり,多くのリソースを必要とする.このため,多くの処理を同時に行う
ウェブサーバなどではこの負荷が問題となっていた.
そこで,複数の処理をもっと低負荷で実行するために考えられたのがスレッドである.ス
レッドとは,プロセス内部に生成される命令フローの実行単位であり,一つのプロセスに複
数のスレッドを生成することが可能である.これによって一つのプロセスの内部で複数の
コードを並行に実行することが可能となる.スレッドの生成にはメモリ空間の割り当てを伴
わないので,プロセスの生成に比べて負荷が小さいのが特徴である.また,同一プロセスに
属するスレッドは同じメモリ空間を共有するため,スレッド間の通信やデータ共有が高速か
つ簡単にできる.
現在では,特にサーバアプリケーションで,複数のスレッドを並列に処理できるマルチス
レッド化が進んでいる.
6
2.3 ILP と TLP
従来,プロセッサの性能向上のために,命令レベル並列性(ILP)が利用されてきた.ILP
とは,一つの命令フローから並列実行可能な複数の命令を抽出し,1 クロックサイクルでよ
り多くの命令を実行できるようにするための手法である.ILP の実装方法として,スーパー
スカラプロセッサ [4] がある.演算ユニットを複数用意し 1 クロックサイクルで複数の命令
を並列実行可能にするアーキテクチャである.現在多くのプロセッサがこのアーキテクチャ
を採用している.例えば AMD Athlon XP は,複数の演算ユニットに対し 1 サイクルに最
大 9 命令を発行でき,Intel Pentium 4 は,1 サイクルに最大 6 内部命令(マイクロオペレー
ション)を発行できる.よって理論的には Athlon XP なら 9 命令,Pentium 4 なら 6 命令
が並列に実行可能である.しかしこのようなプロセッサも,現実には 3 命令以上並列実行す
るのは難しいとされている.一番の原因は Wall らによって指摘された ILP の限界 [1] であ
る.x86 ベースの命令セットを RISC 命令に分解する場合,得られる並列性は,内部 RISC
命令で 4∼5 命令が理論限界と言われている.
この ILP の問題を解決できると期待されているのが,スレッドレベル並列性(TLP)の
利用である. TLP では,独立な,あるいは依存性の低い複数のスレッドから並列処理可能
な命令を抽出するため,より高い並列度を実現できる.ウェブサービスなどでは同時実行可
能なスレッドが多く存在するため, TLP の効果は高いとされる.さらに,現在ではデスク
トップアプリケーションでもマルチスレッド化が進んでいるので, TLP を利用するアーキ
テクチャが今後のプロセッサの主流になると考えられている.
この TLP を実装する方法として,シングルコアに SMT を搭載する方法と,プロセッサ
をマルチコア構成にする方法がある.
2.4 マルチコア
これまで,ハイエンドのサーバでは,性能を向上させるために複数のプロセッサによるマ
ルチプロセッシングという手法が一般的に使われてきた.プロセッサを増やすことで,複
数のスレッドを複数のプロセッサで実行する手法である.図 1 に示すように,マルチプロ
セッサは独立した複数のプロセッサが並んだ形になっている.もし同一プロセスのスレッド
が別々のプロセッサで実行された場合,一方のスレッドがプロセッサ上のキャッシュを書き
換えたとき,メモリ空間を共有するもう一方のスレッドにそのことを知らせて,ただちに
キャッシュのコヒーレンシを保つ処理を行う必要がある.一般的にその方法は,キャッシュ
を書き換えた方のスレッドが一旦メモリにライトバックし,もう一方のスレッドのキャッ
シュに書き込むという方法である.よって,データを煩雑に書き換えるようなスレッドがあ
7
図1
マルチプロセッサアーキテクチャ(左)と,シングルチップマルチコアアーキテクチャ(右)
る場合,その処理のオーバーヘッドが大きくなってしまう問題がある.
このオーバーヘッドを少なくする方法に,シングルチップマルチプロセッサ(CMP)[5]
がある.図 1 に示すように, 1 つのダイ上に複数の CPU コアと共有 2 次キャッシュを搭載
したアーキテクチャで,シングルチップマルチコアプロセッサとも呼ばれる.CMP では先
述のオーバーヘッドがキャッシュからロードし直すだけの時間で済み,効率的に処理が継続
できる.Sun microsystems UltlaSPARC T1(Niagara)
,Intel Core Duo などがこの方式
である.
2.5 SMT
従来から使われている,1 つのコアで複数のスレッドを処理する方法に,タイムスライス・
マルチスレッディングがある.この方法では,プロセッサは一定時間ごとに複数のスレッド
を切り替えて実行する.また,スイッチ・オン・イベント・マルチスレッディング [6] とい
う方法では,キャッシュミスなどレイテンシの大きいイベントが発生するとスレッドの切り
替えを行う.このような方法によって,メモリアクセスなどのレイテンシを効果的に隠すこ
とができる.しかし,分岐ミスや命令の依存関係などによって演算ユニットの利用効率が下
がった場合に,他のスレッドが演算ユニットを利用するといったことはできない.
これに対し,一つのプロセッサで複数のスレッドを並列に実行し,演算ユニットの利用
効率をあげる技術が SMT である.SMT の最大の利点は,プロセッサのリソースをほとん
ど増やすことなく複数のスレッドが同時実行できることである.SMT を提案した Eggers
ら [2] によれば,従来のスーパースカラプロセッサに追加する必要があるハードウェアは,
アーキテクチャステートを切り替えるためのレジスタとプログラムカウンタのみで,あとは
8
図2
シングルコア SMT アーキテクチャ
BTB(Branch Target Buffer)と TLB (Translation Look-aside Buffer)に,各スレッド
の識別子を格納するためのスペースを追加するだけで SMT が実現できるとしている.図 2
において State で示した部分が追加したハードウェアであり,ほとんどのリソースは追加・
変更する必要がない.実際に,ハイパースレッディングテクノロジとして SMT を実装した
Intel Xeon プロセッサ MP では,実装によって増加したダイ面積は全体の 5 %未満である
[7].
SMT の機能を有するプロセッサは,ソフトウェアからはマルチプロセッサに見え,OS は
スレッドを各プロセッサに割り当てる.しかし,実際のリソースはプロセッサ 1 つ分であ
るため,同時実行するスレッドの組み合わせによっては共有のリソースの競合が起きる.特
に,演算ユニットの利用効率が高いスレッドの組み合わせでは,性能が大きく悪化する恐れ
がある.
図 3 に,ここまで述べてきたスーパースカラ,マルチコア,シングルコア SMT の各アー
キテクチャにおけるスレッド実行時の演算ユニットの使用状況を示す.横に並ぶ四角形は演
算ユニットを表し,その使用状況を 1 クロックサイクルごとに縦方向に並べてある.(a)は
従来のシングルコアシングルスレッド,
(b)は SMT を用いたシングルコアマルチスレッ
ド,
(c)はマルチコアマルチスレッドアーキテクチャである.図中 (b) で示した SMT では,
演算ユニットが競合する可能性がある.
2.6 アーキテクチャによる性能の違い
予備実験によって,従来の ILP を利用したシングルコアシングルスレッドアーキテクチャ
と,TLP を利用した二つのアーキテクチャ,シングルコア SMT,マルチコアアーキテク
9
図3
各アーキテクチャにおけるスレッド実行時の演算ユニットの使用状況.(a)従
来のシングルコアシングルスレッド(b)SMT を用いたシングルコアマルチスレッド
(c)マルチコアマルチスレッド
チャとを,実行性能と,演算ユニットの利用効率という点で比較し,その違いを示す.
まず,実行性能を比較するための実験を行う.二つのスレッドを各アーキテクチャで同じ
命令数実行し,実行にかかった時間をシミュレーションによって求める.シミュレータには
マルチコアシミュレータ SESC[8] を用いる.詳細は 4 章の性能評価の節で述べる.結果を
図 4 に示す.横軸がスレッドとして実行したベンチマークの種類,縦軸が実行時間である.
二つのスレッドを逐次実行するシングルスレッドアーキテクチャに比べて,二つのスレッド
を同時に実行できる SMT を用いると,実行時間が短くなっている.SMT を用いたことで,
2 倍の数のスレッドを同時に実行できるためだが,実行時間を半分にはできていない.さら
に,実行時間の減少幅もまちまちで,シングルスレッドとあまり変わらない結果のものもあ
る.2.5 節で述べたように,実際のプロセッサのリソースはプロセッサ一つ分であることが
その要因として考えられる.これに対して,マルチコアアーキテクチャは,プロセッサコア
を二つ搭載しているため最も性能が高く,シングルスレッドアーキテクチャの約半分の時間
で処理できている.
次に,演算ユニットの利用効率を比較するための実験を行う.二つのスレッドを同時に実
行できるシングルコア SMT とマルチコアアーキテクチャを比較する.二つのスレッドを各
アーキテクチャで同じ命令数実行し,一つのコアが 1 クロックサイクルあたりに処理した命
令数(Instructions Per Clockcycle: IPC)をシミュレーションによって求める.マルチコ
アはプロセッサ全体での IPC をプロセッサが持つコア数で割って,1 コアあたりの IPC と
する.結果を図 5 に示す.横軸がスレッドとして実行したベンチマークの種類,縦軸が IPC
である.図中すべての組み合わせにおいて, SMT のほうが IPC が高く,プロセッサのリ
ソースが効率利用され,単位時間あたりに多くの命令が実行されている.
最後に,一つのプロセッサで 1 スレッドを実行した場合の IPC の結果を,図 6 に示す.
実行するスレッドによって IPC が大きく違う.演算ユニットの利用効率は実行するスレッ
10
㪾㪺
㪺
㪾㫑
㫀㫇㪄
㫄
㪺
㪾㫑
㫀㫇㪄 㪽
㫄
㪼㫊
㪸
㪾㫑
㫀㫇㪄
㪾㫑
㪸㫉
㫀㫇㪄
㫋
㪼㫈
㫌㪸
㫂
㪾㪺 㪼
㪺㪄
㫄
㪺㪽
㪾㪺
㪺㪄
㫄
㪼㫊
㪸
㪾㪺
㪺㪄
㪾㪺
㪸㫉
㫋
㪺㪄
㪼㫈
㫌㪸
㫂㪼
㫄
㪺㪽
㪄㫄
㪼㫊
㪸
㫄
㪺㪽
㪄㪸
㫄
㫉
㪺㪽
㪄㪼 㫋
㫈㫌
㪸㫂
㪼
㫄
㪼㫊
㪸㪄
㫄
㪼㫊
㪸㫉
㫋
㪸㪄
㪼㫈
㫌㪸
㫂㪼
㪸㫉
㫋㪄
㪼㫈
㫌㪸
㫂㪼
㪾㫑
㫀㫇㪄
㪠㪧㪚
㪾㫑
㫀㫇㪄
㪾㪺
㪺
㪾㫑
㫀㫇㪄
㫄
㪺
㪾㫑
㫀㫇㪄 㪽
㫄
㪼㫊
㪸
㪾㫑
㫀㫇㪄
㪾㫑
㪸㫉
㫀㫇㪄
㫋
㪼㫈
㫌㪸
㫂㪼
㪾㪺
㪺㪄
㫄
㪺㪽
㪾㪺
㪺㪄
㫄
㪼㫊
㪸
㪾㪺
㪺㪄
㪾㪺
㪸㫉
㫋
㪺㪄
㪼㫈
㫌㪸
㫂㪼
㫄
㪺㪽
㪄㫄
㪼㫊
㪸
㫄
㪺㪽
㪄㪸
㫄
㫉
㪺㪽
㪄㪼 㫋
㫈㫌
㪸㫂
㪼
㫄
㪼㫊
㪸㪄
㫄
㪸㫉
㪼㫊
㫋
㪸㪄
㪼㫈
㫌㪸
㫂㪼
㪸㫉
㫋㪄
㪼㫈
㫌㪸
㫂㪼
㪪㫀㫄㩷㪫㫀㫄㪼㩷㩿㫄㫊㪀
㪉㪌㪇
㪉㪇㪇
㪪㫀㫅㪾㫃㪼㪚㫆㫉㪼
図4
図5
㪪㫀㫅㪾㫃㪼㪚㫆㫉㪼㩷㪪㪤㪫
㪚㪿㫀㫇㪤㫌㫃㫋㫀㪧㫉㫆㪺㪼㫊㫊㫆㫉
㪈㪌㪇
㪈㪇㪇
㪌㪇
㪇
㪙㪼㫅㪺㪿㫄㪸㫉㫂㩷㪧㫉㫆㪾㫉㪸㫄㫊
シングルコアシングルスレッド,シングルコア SMT,マルチコアアーキテク
チャで 2 スレッド実行するのにかかった時間
㪈㪅㪏㪇
㪈㪅㪍㪇
㪪㪤㪫
㪚㪤㪧㩷㪘㫍㪼㫉㪸㪾㪼
㪈㪅㪋㪇
㪈㪅㪉㪇
㪈㪅㪇㪇
㪇㪅㪏㪇
㪇㪅㪍㪇
㪇㪅㪋㪇
㪇㪅㪉㪇
㪇㪅㪇㪇
㪙㪼㫅㪺㪿㫄㪸㫉㫂㩷㪧㫉㫆㪾㫉㪸㫄㫊
2 スレッド実行したときの,シングルコア SMT の IPC と,マルチコアアーキ
テクチャの 1 コアあたりの平均 IPC
11
㪈㪅㪍㪇
㪈㪅㪋㪇
㪈㪅㪉㪇
㪠㪧㪚
㪈㪅㪇㪇
㪇㪅㪏㪇
㪇㪅㪍㪇
㪇㪅㪋㪇
㪇㪅㪉㪇
㪇㪅㪇㪇
㪾㫑㫀㫇
㪾㪺㪺
図6
㫄㪺㪽
㫄㪼㫊㪸
㪙㪼㫅㪺㪿㫄㪸㫉㫂㩷㪧㫉㫆㪾㫉㪸㫄㫊
㪸㫉㫋
㪼㫈㫌㪸㫂㪼
1 スレッドを実行した時の実行性能
ドに大きく依存していることがわかる.SMT はリソースを増やさずに演算ユニットの利用
効率をあげる技術であるため,SMT による性能向上も,実行するスレッドに大きく依存し
ていると言える.すなわち,本論文が対象としている SMT を利用したアーキテクチャにお
いては,それぞれのスレッドがもつ特徴が重要となる.
2.7 スケジューリングの方針
複数のスレッドを実行するとき,シングルコアの SMT は,マルチコアに比べて同時実行
するスレッドの組み合わせによって実行性能が大きく変化する.予備実験でも実行時間の短
縮幅は,マルチコアに比べて SMT のほうがばらつきが大きい.さらに,演算実行ユニット
の利用効率は,スレッド固有の特徴に大きく依存することが分かった.
そのためコア内・コア間スレッドスケジューリングを最適化するためには,まず SMT で
実行するのに適切なスレッドの組み合わせを見つけることが非常に重要である.本論文では
まず,あるスレッドの組み合わせが SMT にどの程度適しているかを定量的に示す指標を定
義する.次に,単独のスレッドからその値を予測するスレッド特徴量を定義し,その特徴量
を基に SMT で実行するスレッドの組み合わせを実行前に決定する.
12
2.8 結言
本章では,シングルコア SMT アーキテクチャと,マルチコアアーキテクチャによる TLP
の実装について述べた.次に予備実験により,TLP によって性能が向上することと,SMT
では実行するスレッドによって性能が変動する可能性を示した.最後に,SMT において実
行するスレッドの組み合わせが重要であることを述べ,スケジューリングではまず,SMT
に適切なスレッドの組み合わせを見つけ,それを基にスレッドスケジューリングを行うこと
を述べた.
13
第3章
SMT 優先度に基づくマルチコアスレッドスケジュー
リング手法
3.1 緒言
本章では,適切なスレッドスケジューリングを実現するために,スレッド特徴量として
SMT 優先度を提案し,さらに SMT 優先度に基づくコア内・コア間スレッドスケジューリ
ング手法を提案する.
3.2 SMT 効率
適切なスケジューリングのためには,あるスレッドの組み合わせが SMT を利用して同じ
コアで実行するのにどの程度適切であるかを表すスレッド特徴量が必要である.そこでま
ず,SMT の実行効率を定義する. 2 つのスレッドを 1 コアで SMT を利用して実行した場
合と,2 つのスレッドにそれぞれ 1 コアずつ割り当てて 2 コアを使って実行した場合の実行
性能を IPC で計測する.シミュレーションには SESC を用い,6 種類のアプリケーション
を使用して,1 アプリケーションを 1 スレッドとして 2 種類を総当たりで組み合わせた.使
用したアプリケーションは SPEC CPU200[9] から gzip,gcc,mcf,mesa,art,equake の
6 種類である.詳細は 4 章の性能評価の節で述べる.結果を図 7 に示す.すべての組み合わ
せにおいて,2 コアで実行したときの方が IPC が高く,1 コアで実行した時の方が IPC が
低い.スレッド数がコア数より少ない場合は,スレッドの組み合わせに関わらずマルチコア
で実行した方がよいと言える.SMT の実行効率を見てみると,コアの数を 2 コアから半分
の 1 コアとした時,IPC が大きく下がる組み合わせもあれば,それほど下がらない組み合わ
せもある.今,スレッドの数がコアの数よりも多く,いくつかのスレッドを SMT を用いて
1 コアで実行する場合を考えると,1 コアとしても IPC がそれほど下がらない組み合わせを
選ぶことにより,プロセッサ全体の実行性能が一番高いスケジューリングが実現できると考
えられる.そこで,スレッドを 2 コアで実行したときの性能を最大性能と考え,それに対す
る SMT 実行時の性能の比率を式 (1) に示す SMT 効率として定義する.
SMT 効率 =
1 コア時の IPC
2 コア時の IPC
(1)
図 7 に示したスレッドの組み合わせに対する SMT 効率を図 8 に示す.これによって,二つ
のスレッドの組み合わせが,SMT を利用して同じコアで実行するのにどの程度適している
かを,定量的に示すことができる.SMT 効率をスレッド特徴量として用い,SMT 効率が高
いスレッドの組み合わせを SMT で実行し,SMT 効率が低い組み合わせは別々のコアで実
14
㪊㪅㪌㪇
㪊㪅㪇㪇
㪉㪅㪌㪇
㪉㪅㪇㪇
㪠㪧㪚
㪈㪺㫆㫉㪼
㪉㪺㫆㫉㪼
㪈㪅㪌㪇
㪈㪅㪇㪇
㪇㪅㪌㪇
㪾㫑
㫀㫇
㪄㪾
㪺㪺
㪾㫑
㫀㫇
㪄㫄
㪺㪽
㪾㫑
㫀㫇
㪄㫄
㪼㫊
㪸
㪾㫑
㫀㫇
㪄
㪾㫑
㪸㫉
㫀㫇
㪄㪼 㫋
㫈㫌
㪸㫂
㪼
㪾㪺
㪺㪄
㫄
㪺㪽
㪾㪺
㪺㪄
㫄
㪼㫊
㪸
㪾㪺
㪺㪄
㪸㫉
㪾㪺
㫋
㪺㪄
㪼㫈
㫌㪸
㫂㪼
㫄
㪺㪽
㪄㫄
㪼㫊
㪸
㫄
㪺㪽
㪄
㫄
㪸㫉
㪺㪽
㪄㪼 㫋
㫈㫌
㪸㫂
㪼
㫄
㪼㫊
㪸㪄
㫄
㪸㫉
㪼㫊
㫋
㪸㪄
㪼㫈
㫌㪸
㫂㪼
㪸㫉
㫋㪄
㪼㫈
㫌㪸
㫂㪼
㪇㪅㪇㪇
㪙㪼㫅㪺㪿㫄㪸㫉㫂㩷㪧㫉㫆㪾㫉㪸㫄㫊
図7
2 スレッドを実行した時の実行性能
行するようにスケジューリングすることにより,プロセッサ全体で最も高い性能が実現でき
ると考えられる.しかし,SMT 効率は 2 つのスレッドの組み合わせに対しての定義である
ため,これを得るためには実際に 2 つのスレッドを組み合わせて実行する必要がある.これ
では,一度も実行したことがないスレッドの組み合わせがある場合にスケジューリングがで
きない.さらに,スレッドコンテキストやコア数が違うアーキテクチャに用いることもでき
ない.このため SMT 効率を直接スケジューリングに用いることはできない.
3.3 SMT 優先度
SMT 効率をスケジューリングに直接用いることは困難なため,単独のスレッドから SMT
効率を予測するための特徴量を定義する.
まず SMT が高い性能を発揮する条件を考える.本論文ではスレッドがそれぞれ異なるプ
ロセスに属していると仮定している.そのため,演算ユニットの利用効率が高いスレッドの
組み合わせを SMT で実行すると,演算ユニットの競合が頻繁に発生し性能が大きく低下す
る恐れがある.そこでシミュレーションによって演算ユニットの利用効率を求め,それを基
にスレッド特徴量を定義する.
事前に 1 つのスレッドを 1 つのコアで実行し,演算ユニットでの処理に費したサイクル,
およびその他の主要なユニットで演算以外で費したサイクルのそれぞれについて,全サイク
ル数に対する割合を計算する.結果を図 9 に示す.Busy は演算ユニットでの処理時間に相
当し,これが大きい程演算ユニットの利用効率が高い.LDQ,STQ,IWin はそれぞれロー
15
0.80
0.70
0.60
SMT効率
0.50
0.40
0.30
0.20
0.10
gz
ipgc
c
gz
i pm
cf
gz
ipm
es
a
gz
i par
gz
t
ipeq
ua
ke
gc
cm
cf
gc
cm
es
a
gc
car
gc
t
ceq
ua
ke
m
cf
-m
es
a
m
cf
-a
m
rt
cf
-e
qu
ak
e
m
es
a
-a
m
es
rt
aeq
ua
ke
ar
teq
ua
ke
0.00
Benchmark Programs
図8
2 スレッドの組み合わせに対する SMT 効率
ドキュー,ストアキュー,整数演算および浮動小数点演算キューでの待ち時間に相当する.
ROB はリオーダバッファを通過するのにかかった時間,Regs,TLB はそれぞれ,データレ
ジスタ,Translation Look-aside Buffer(TLB)に必要なデータがなく,キャッシュにアク
セスしたために発生した時間に相当する.MissBr は分岐ミスによるペナルティに相当する.
LDQ,STQ,IWin はキューから演算ユニットに命令を発行することができない場合に発
生する時間である.命令が発行できない原因は,リオーダバッファまたはデータレジスタの
エントリに必要な空き領域が確保できない場合,発行先の演算ユニットが使用中で命令が発
行できない場合,必要なオペランドが揃わない場合のいずれかである.キューでの待ち時間
は,全体の処理時間の中ではそれほど長くない.しかし,スレッドによっては極端に長い場
合もある.もしそのスレッドがキューのエントリを占有した状態でストールした場合,もう
一方のスレッドがキューに命令をエントリできず,演算ユニットに命令を発行できないとい
う事態が考えられる.実際,Intel のハイパースレッディングテクノロジでは,この事態を
防ぐために,各キューのエントリに片方のスレッドがエントリできる数に制限を設けている
[7].
そこで本論文では,Busy で示される演算ユニットの利用効率に加え,命令キューに滞在
していた時間にも注目する.演算ユニットと命令キューは,ともにパイプラインの演算実行
ステージに属するため,ここでは,演算ユニットでの処理時間と命令キューでの滞在時間の
和を,演算実行ステージでの滞在時間と呼ぶ.演算ユニットの利用効率が高いスレッドの組
み合わせは,演算ユニットの競合が起きやすいため,SMT には適さないと考えられる.さ
16
60.0
50.0
Ratio (%)
40.0
gcc
art
gzip
mesa
equake
mcf
30.0
20.0
10.0
0.0
Busy
図9
LDQ
STQ
IWin
ROB
Unit
Regs
TLB
MissBr
Other
単独スレッドの実行終了までに各ユニットで費したサイクルの割合
らに命令キューでの滞在時間が長いスレッドの組み合わせは,片方のスレッドが命令発行で
きない可能性が高くなるため,SMT には適さない.これらの考察より,実行時間全体の中
で,演算実行ステージでの滞在時間が大きいスレッドの組み合わせほど SMT に適していな
いと言える.従って,実行時間全体に対する演算実行ステージの滞在時間の割合が小さいス
レッドの組み合わせほど SMT に向いている組み合わせと判断できる.そこで,実行時間全
体からこの割合を引いたものを SMT 優先度として式 (2) で定義する.
SMT 優先度 = 1 −
演算実行ステージのサイクル数
実行時間全体のサイクル数
(2)
図 10 は,6 種類のアプリケーションの SMT 優先度である.SMT 優先度が正しく SMT
効率を予測していることを確認するために,図 8 で示した各スレッドの組み合わせに対す
る SMT 効率と,SMT 優先度の和との相関関係を評価した.図 11 は SMT 効率を横軸に,
SMT 優先度の和を縦軸にとったグラフである.図 11 が示すように,両者には強い相関関係
が見られるため,2 つのスレッドの SMT 優先度の和が高いほど,そのスレッドの組み合わ
せは SMT に向いていると推測できる.
3.4 SMT 優先度を用いたスレッドスケジューリング
本論文では,SMT 優先度を用いたスレッドスケジューリングを提案する.スケジューリ
ングは次の手順で行う. 2.2 節で述べたように,基本は 1 スレッドに 1 コアを割り当てるよ
うにする.同時に実行するスレッドの数がプロセッサのコア数より多いなど,やむを得ず 1
17
㪇㪅㪏㪇
㪇㪅㪎㪇
㪇㪅㪍㪇
㪪㪤㪫ఝవᐲ
㪇㪅㪌㪇
㪇㪅㪋㪇
㪇㪅㪊㪇
㪇㪅㪉㪇
㪇㪅㪈㪇
㪇㪅㪇㪇
㪾㫑㫀㫇
㪾㪺㪺
㫄㪺㪽
㫄㪼㫊㪸
㪙㪼㫅㪺㪿㫄㪸㫉㫂㩷㪧㫉㫆㪾㫉㪸㫄㫊
㪸㫉㫋
㪼㫈㫌㪸㫂㪼
図 10 単独スレッドの SMT 優先度
㪈㪅㪌㪇
㪈㪅㪋㪇
㪪㪤㪫ఝవᐲ
㪈㪅㪊㪇
㪈㪅㪉㪇
㪈㪅㪈㪇
㪈㪅㪇㪇
㪇㪅㪐㪇
㪇㪅㪏㪇
㪇㪅㪌㪇
㪇㪅㪌㪌
図 11
㪇㪅㪍㪇
㪇㪅㪍㪌
㪪㪤㪫ല₸
㪇㪅㪎㪇
㪇㪅㪎㪌
SMT 優先度の和と SMT 効率の相関関係
18
㪇㪅㪏㪇
コアで 2 スレッドを実行する必要がある場合は, SMT に向いている組み合わせを選択し 1
コアに割り当てる.その際,提案した SMT 優先度を用いる.
1. スレッド特徴量として事前にスレッドの SMT 優先度を取得する.
2. 同時に実行するスレッドの数がプロセッサのコア数を越えた場合, SMT 優先度の和
が最大となる組み合わせを選択し,1 コアにスケジューリングする.
3. 残りのスレッドの数が残りのコアの数以下になるまで 2 を繰り返し,それ以降の残り
のスレッドを残りのコアに 1 つずつ割り当てる.
3.5 結言
本章ではまず 2 スレッドの組み合わせに対する SMT の実行効率を,SMT 効率として定
義した.次に単独のスレッドから SMT 効率を予測する特徴量として SMT 優先度を提案
し,それが正しく SMT 効率を予測することを確認した.最後に SMT 優先度を用いたス
レッドスケジューリング手法を提案した.
19
第4章
性能評価
4.1 緒言
3 章で提案した SMT 優先度を用いたスレッドスケジューリングの有効性をシミュレー
ションによって検証する.本実験では, 3 コアのマルチコアプロセッサで 4 スレッドを実行
する場合を想定し,実行前に提案手法によるスケジューリングを行う.比較のために,他の
2 つのスケジューリング手法も検討する.そしてプロセッサ全体の実行性能を IPC で比較
する.
4.2 実験条件
シミュレーションにはマルチコアシミュレータ SESC[8] を使用する.SESC は,スーパー
スカラのプロセッサコアを複数持つマルチコアプロセッサの動作をシミュレートする.パイ
プラインは,フェッチ,デコード,命令発行,演算実行,リタイアメントの 5 ステージから
なる.演算実行ステージには整数演算や浮動小数点演算など 5 種類の演算ユニットとそれぞ
れの命令キューがあり,アウトオブオーダで命令を実行する. SESC は SMT に対応してお
り,複数のスレッドの命令を同時に発行することができる.本実験で用いる主なパラメータ
を表 1 に示す.SMT コンテキストは 1 コアで同時実行できるスレッドの数を示す.また,
ベンチマーク用のアプリケーションを用いて, 1 アプリケーションを 1 スレッドとして実行
する.使用するアプリケーションは,SPEC CPU2000[9] に含まれている gzip,gcc,mcf,
mesa,art,equake の 6 種類である.表 2 に詳細を示す.
4.3 実験方法
シミュレーションでは, 3 コアのマルチコアプロセッサで 4 スレッドを同時に実行し, 3
コアの IPC の合計値で性能を評価する.その際,次の 3 種類の手法を用いてスレッドスケ
ジューリングを行い,その結果を比較する.
.
手法 1: SMT 優先度に基づくスケジューリング手法(提案手法)
手法 2: 演算実行ユニットの利用効率が悪いスレッドの組み合わせを SMT で実行する手
法.SMT 優先度とは違いキューでの待ち時間を考慮しない.
手法 3: スレッドの特徴量を考慮せず,空いているコアに順番にスレッドを割り当てる手
法.手法 1 と手法 2 以外の全ての組み合わせを行う.
20
表1
本実験で使用する主なパラメータ
CPU 数
3
SMT コンテキスト
2
フェッチ命令数
8
発行命令数及びリタイア命令数
4
ロードユニット及びストアユニット数
2
整数演算ユニット数
3
浮動小数点演算ユニット数
2
実行命令数
10 億
表2
本実験で使用するベンチマークアプリケーション
整数演算
浮動小数点演算
名前
概要
名前
概要
gzip
ファイル圧縮
mesa
3D グラフィックライブラリ
gcc
GNU C コンパイラ
art
画像認識
mcf
組み合わせ最適化計算
equake
地震波シミュレーション
図 12 には,各アプリケーションを単独で実行した場合の演算ユニットの利用効率を,全体
の実行時間に対する演算ユニットでの処理時間で示す.この値を用いて手法 2 を行う.
4.4 実験結果および考察
結果を図 13 から図 27 までに示す.一番左が手法 1 の結果を示している.グラフ下のキャ
プションに,手法 1=手法 2,と書かれていない場合は左から二番めが手法 2 を示し,書か
れている場合は,異なるスレッド特徴量を用いてスケジューリングしたにも関わらず手法 1
と手法 2 が同じスケジューリングであったことを示す.残りの 4 つもしくは 5 つが手法 3
を示す.シミュレーションした 4 スレッドの内訳を,グラフ右に [app] で示した.横軸は 4
スレッドのうち 1 コア SMT で実行するようにスケジューリングされたスレッドの組み合わ
せを表している.横軸に書かれていない 2 スレッドは,それぞれ 1 コアずつにスケジューリ
ングしたということである.縦軸はプロセッサ全体の性能を 3 コアの IPC の合計で示して
いる.さらにコア 0 からコア 2 までの各コアごとの IPC を色分けした.
次に,各手法が 1 位,2 位,3 位以下,であった回数を表 3 に示す.2 つ以上の手法が同
じ結果の場合は重複して数えてある.
最後に,15 種類ある異なる 4 スレッドの組み合わせに対するシミュレーション結果の平
21
㪋㪇㪅㪇
㪊㪌㪅㪇
㪊㪇㪅㪇
㪙㫌㫊㫐
㪉㪌㪅㪇
㪉㪇㪅㪇
㪈㪌㪅㪇
㪈㪇㪅㪇
㪌㪅㪇
㪇㪅㪇
㪾㫑㫀㫇
図 12
㪾㪺㪺
㫄㪺㪽
㫄㪼㫊㪸
㪙㪼㫅㪺㪿㫄㪸㫉㫂㩷㪧㫉㫆㪾㫉㪸㫄㫊
㪸㫉㫋
㪼㫈㫌㪸㫂㪼
各アプリケーションの単独実行時の演算ユニットの利用効率
均値を図 28 に示す.手法 1 から 3 の IPC の平均を,コアごとの平均値で色分けした.
目的であるプロセッサ全体の実行性能を各手法で比較すると,表 3 が示すように, 15 種
類中 11 種類で手法 1 が一番性能がよく,さらに性能が一番悪くなるケースはなかった.手
法 2 や手法 3 のうちの一つが一番よい性能になった場合もあるが,その場合も,手法 1 の性
能と同じか,もしくはほとんど性能差がなかった.これより,他の手法で高い性能の場合は
提案手法でも高い性能であり,他の手法では性能が落ちてしまう場合,提案手法を用いるこ
とにより高い性能を達成できることが明らかになった.
さらに,手法 1 と手法 2 を詳細に比較すると,4 つのスレッドのうち,2 つが単独実行時
の演算ユニットの利用効率が非常に高く,残りが非常に悪いという 2 つずつの組み合わせの
時,両手法は同じスケジューリング結果になった.このようなパターンは 15 種類中 8 種類
に及ぶ.しかしそれ以外の組み合わせの時は手法 1 の方が優れていた.演算ユニットの利
用効率が SMT 効率に及ぼす影響が大きいため,利用効率に大きな差があるスレッドの組み
合わせを選ぶときは,スレッド特徴量の中の演算ユニットの利用効率が大きなウェイトを占
めている.しかし演算ユニットの利用効率が同じ程度のスレッドの組み合わせを選ぶとき,
キューがストールして命令が発行できない可能性を考慮に入れた SMT 優先度のほうが,よ
り的確に SMT 効率を予測できたと言える.
図 28 を見ると,SMT で 2 スレッドを実行したコアの実行性能の差は小さいが,1 スレッ
ドずつマルチコアで実行した二つのコアの実行性能が手法 1 の方が高いために,全体の性能
が手法 2 より高い.手法 2 では,マルチコアで実行した時,単独実行時と同等の性能を出せ
22
表3
各手法の優劣比較
順位
手法 1
手法 2
手法 3
最も性能が良かった回数
11
5
6
2 番目に性能が良かった回数
4
3
4
最も性能が悪かった回数
0
7
5
ないスレッドの組み合わせがあったのが原因である.そのため演算ユニットの利用効率だけ
を用いた手法 2 ではうまく性能があがらない場合があった.それに対し SMT 優先度を用い
た場合,SMT に向いていないと判断されたスレッドは,SMT 効率の定義より,マルチコア
で実行したときに高い性能が得られると判断されたのと同じであり,SMT で実行すべきス
レッドとマルチコアで実行すべきスレッドの両方が適切に選択されたために,プロセッサ全
体として手法 2 よりも高い実行性能であったと言える.
マルチコアで性能が落ちた理由の一つに,スレッド間のメモリキャッシュでの競合が挙げ
られる.2 章の図 1 で示すマルチコアアーキテクチャでは,2 次キャッシュをもう一方のコ
アと共有している.そのため,2 つのコアで同時にスレッドを実行すると,それぞれのコア
に割り当てられるキャッシュ領域は,単独で実行した時より少なくなる.同時に実行するス
レッドが,どちらも 2 次キャッシュを多く必要とするスレッドの組み合わせであった場合,
性能が低下することがある.
以上より 3 つの手法の中で手法 1 が最も優れており,提案手法の有効性が示された.
4.5 結言
提案手法の SMT 優先度を用いたスレッドスケジューリングを,シミュレーションによっ
て評価した.提案手法以外のスケジューリングでは,性能が高いこともあるが低いことも多
くある.それに対し提案手法では,多くの場合で高い性能を示しただけでなく,性能が大き
く下がることがなかったため,提案手法が有効であると示された.
23
㪌㪅㪇㪇
㪋㪅㪌㪇
㪋㪅㪇㪇
㪲㪙㪼㫅㪺㪿㫄㪸㫉㫂㩷㪧㫉㫆㪾㫉㪸㫄㫊㪴
㪸㫉㫋㩷㪼㫈㫌㪸㫂㪼
㫄㪺㪽㩷㫄㪼㫊㪸
㪊㪅㪌㪇
㪫㫆㫋㪸㫃㩷㪠㪧㪚
㪊㪅㪇㪇
㪉㪅㪌㪇
㪚㫆㫉㪼㪉㩷㪄㩷㪤㪚
㪚㫆㫉㪼㪈㩷㪄㩷㪤㪚
㪚㫆㫉㪼㪇㩷㪄㩷㪪㪤㪫
㪉㪅㪇㪇
㪈㪅㪌㪇
㪈㪅㪇㪇
㪇㪅㪌㪇
㪇㪅㪇㪇
㪸㫉㫋㪄㪼㫈㫌㪸㫂㪼
㫄㪺㪽㪄㪸㫉㫋
㫄㪺㪽㪄㫄㪼㫊㪸 㫄㪺㪽㪄㪼㫈㫌㪸㫂㪼
㪉㫋㪿㫉㪼㪸㪻㫊㩷㪼㫏㪼㪺㫌㫋㪼㪻㩷㪹㫐㩷㪪㪤㪫
㫄㪼㫊㪸㪄㪸㫉㫋
㫄㪼㫊㪸㪄㪼㫈㫌㪸㫂㪼
図 13 シミュレーション結果 1
㪌㪅㪇㪇
㪋㪅㪌㪇
㪋㪅㪇㪇
㪲㪙㪼㫅㪺㪿㫄㪸㫉㫂㩷㪧㫉㫆㪾㫉㪸㫄㫊㪴
㪸㫉㫋㩷㪼㫈㫌㪸㫂㪼
㪾㪺㪺㩷㫄㪼㫊㪸
㪊㪅㪌㪇
㪫㫆㫋㪸㫃㩷㪠㪧㪚
㪊㪅㪇㪇
㪚㫆㫉㪼㪉㩷㪄㩷㪤㪚
㪚㫆㫉㪼㪈㩷㪄㩷㪤㪚
㪚㫆㫉㪼㪇㩷㪄㩷㪪㪤㪫
㪉㪅㪌㪇
㪉㪅㪇㪇
㪈㪅㪌㪇
㪈㪅㪇㪇
㪇㪅㪌㪇
㪇㪅㪇㪇
㪾㪺㪺㪄㪸㫉㫋
㪾㪺㪺㪄㫄㪼㫊㪸
㪾㪺㪺㪄㪼㫈㫌㪸㫂㪼
㫄㪼㫊㪸㪄㪸㫉㫋 㫄㪼㫊㪸㪄㪼㫈㫌㪸㫂㪼
㪉㫋㪿㫉㪼㪸㪻㫊㩷㪼㫏㪼㪺㫌㫋㪼㪻㩷㪹㫐㩷㪪㪤㪫
㪸㫉㫋㪄㪼㫈㫌㪸㫂㪼
図 14 シミュレーション結果 2 手法 1=手法 2
24
㪌㪅㪇㪇
㪋㪅㪌㪇
㪋㪅㪇㪇
㪲㪙㪼㫅㪺㪿㫄㪸㫉㫂㩷㪧㫉㫆㪾㫉㪸㫄㫊㪴
㪸㫉㫋㩷㪼㫈㫌㪸㫂㪼
㪾㪺㪺㩷㫄㪺㪽
㪊㪅㪌㪇
㪫㫆㫋㪸㫃㩷㪠㪧㪚
㪊㪅㪇㪇
㪉㪅㪌㪇
㪚㫆㫉㪼㪉㩷㪄㩷㪤㪚
㪚㫆㫉㪼㪈㩷㪄㩷㪤㪚
㪚㫆㫉㪼㪇㩷㪄㩷㪪㪤㪫
㪉㪅㪇㪇
㪈㪅㪌㪇
㪈㪅㪇㪇
㪇㪅㪌㪇
㪇㪅㪇㪇
㪾㪺㪺㪄㪸㫉㫋
㪾㪺㪺㪄㫄㪺㪽
㪾㪺㪺㪄㪼㫈㫌㪸㫂㪼
㫄㪺㪽㪄㪸㫉㫋
㫄㪺㪽㪄㪼㫈㫌㪸㫂㪼
㪉㫋㪿㫉㪼㪸㪻㫊㩷㪼㫏㪼㪺㫌㫋㪼㪻㩷㪹㫐㩷㪪㪤㪫
㪸㫉㫋㪄㪼㫈㫌㪸㫂㪼
図 15 シミュレーション結果 3
㪌㪅㪇㪇
㪋㪅㪌㪇
㪋㪅㪇㪇
㪲㪙㪼㫅㪺㪿㫄㪸㫉㫂㩷㪧㫉㫆㪾㫉㪸㫄㫊㪴
㫄㪼㫊㪸㩷㪼㫈㫌㪸㫂㪼
㪾㪺㪺㩷㫄㪺㪽
㪊㪅㪌㪇
㪫㫆㫋㪸㫃㩷㪠㪧㪚
㪊㪅㪇㪇
㪉㪅㪌㪇
㪚㫆㫉㪼㪉㩷㪄㩷㪤㪚
㪚㫆㫉㪼㪈㩷㪄㩷㪤㪚
㪚㫆㫉㪼㪇㩷㪄㩷㪪㪤㪫
㪉㪅㪇㪇
㪈㪅㪌㪇
㪈㪅㪇㪇
㪇㪅㪌㪇
㪇㪅㪇㪇
㪾㪺㪺㪄㪼㫈㫌㪸㫂㪼
㪾㪺㪺㪄㫄㪺㪽
㪾㪺㪺㪄㫄㪼㫊㪸
㫄㪺㪽㪄㫄㪼㫊㪸 㫄㪺㪽㪄㪼㫈㫌㪸㫂㪼 㫄㪼㫊㪸㪄㪼㫈㫌㪸㫂㪼
㪉㫋㪿㫉㪼㪸㪻㫊㩷㪼㫏㪼㪺㫌㫋㪼㪻㩷㪹㫐㩷㪪㪤㪫
図 16 シミュレーション結果 4
25
㪌㪅㪇㪇
㪋㪅㪌㪇
㪋㪅㪇㪇
㪲㪙㪼㫅㪺㪿㫄㪸㫉㫂㩷㪧㫉㫆㪾㫉㪸㫄㫊㪴
㫄㪼㫊㪸㩷㪸㫉㫋
㪾㪺㪺㩷㫄㪺㪽
㪊㪅㪌㪇
㪫㫆㫋㪸㫃㩷㪠㪧㪚
㪊㪅㪇㪇
㪉㪅㪌㪇
㪚㫆㫉㪼㪉㩷㪄㩷㪤㪚
㪚㫆㫉㪼㪈㩷㪄㩷㪤㪚
㪚㫆㫉㪼㪇㩷㪄㩷㪪㪤㪫
㪉㪅㪇㪇
㪈㪅㪌㪇
㪈㪅㪇㪇
㪇㪅㪌㪇
㪇㪅㪇㪇
㪾㪺㪺㪄㪸㫉㫋
㪾㪺㪺㪄㫄㪺㪽
㪾㪺㪺㪄㫄㪼㫊㪸
㫄㪺㪽㪄㫄㪼㫊㪸
㪉㫋㪿㫉㪼㪸㪻㫊㩷㪼㫏㪼㪺㫌㫋㪼㪻㩷㪹㫐㩷㪪㪤㪫
㫄㪺㪽㪄㪸㫉㫋
㫄㪼㫊㪸㪄㪸㫉㫋
図 17 シミュレーション結果 5
㪌㪅㪇㪇
㪋㪅㪌㪇
㪋㪅㪇㪇
㪲㪙㪼㫅㪺㪿㫄㪸㫉㫂㩷㪧㫉㫆㪾㫉㪸㫄㫊㪴
㫄㪼㫊㪸㩷㪸㫉㫋
㪾㫑㫀㫇㩷㪼㫈㫌㪸㫂㪼
㪊㪅㪌㪇
㪫㫆㫋㪸㫃㩷㪠㪧㪚
㪊㪅㪇㪇
㪚㫆㫉㪼㪉㩷㪄㩷㪤㪚
㪚㫆㫉㪼㪈㩷㪄㩷㪤㪚
㪚㫆㫉㪼㪇㩷㪄㩷㪪㪤㪫
㪉㪅㪌㪇
㪉㪅㪇㪇
㪈㪅㪌㪇
㪈㪅㪇㪇
㪇㪅㪌㪇
㪇㪅㪇㪇
㪾㫑㫀㫇㪄㪸㫉㫋
㪾㫑㫀㫇㪄㫄㪼㫊㪸
㪾㫑㫀㫇㪄㪼㫈㫌㪸㫂㪼
㫄㪼㫊㪸㪄㪸㫉㫋 㫄㪼㫊㪸㪄㪼㫈㫌㪸㫂㪼 㪸㫉㫋㪄㪼㫈㫌㪸㫂㪼
㪉㫋㪿㫉㪼㪸㪻㫊㩷㪼㫏㪼㪺㫌㫋㪼㪻㩷㪹㫐㩷㪪㪤㪫
図 18 シミュレーション結果 6 手法 1=手法 2
26
㪌㪅㪇㪇
㪋㪅㪌㪇
㪋㪅㪇㪇
㪲㪙㪼㫅㪺㪿㫄㪸㫉㫂㩷㪧㫉㫆㪾㫉㪸㫄㫊㪴
㫄㪺㪽㩷㪸㫉㫋
㪾㫑㫀㫇㩷㪼㫈㫌㪸㫂㪼
㪊㪅㪌㪇
㪫㫆㫋㪸㫃㩷㪠㪧㪚
㪊㪅㪇㪇
㪉㪅㪌㪇
㪚㫆㫉㪼㪉㩷㪄㩷㪤㪚
㪚㫆㫉㪼㪈㩷㪄㩷㪤㪚
㪚㫆㫉㪼㪇㩷㪄㩷㪪㪤㪫
㪉㪅㪇㪇
㪈㪅㪌㪇
㪈㪅㪇㪇
㪇㪅㪌㪇
㪇㪅㪇㪇
㪾㫑㫀㫇㪄㪸㫉㫋
㪾㫑㫀㫇㪄㫄㪺㪽
㪾㫑㫀㫇㪄㪼㫈㫌㪸㫂㪼
㫄㪺㪽㪄㪸㫉㫋
㫄㪺㪽㪄㪼㫈㫌㪸㫂㪼
㪉㫋㪿㫉㪼㪸㪻㫊㩷㪼㫏㪼㪺㫌㫋㪼㪻㩷㪹㫐㩷㪪㪤㪫
㪸㫉㫋㪄㪼㫈㫌㪸㫂㪼
図 19 シミュレーション結果 7
㪌㪅㪇㪇
㪋㪅㪌㪇
㪋㪅㪇㪇
㪊㪅㪌㪇
㪲㪙㪼㫅㪺㪿㫄㪸㫉㫂㩷㪧㫉㫆㪾㫉㪸㫄㫊㪴
㫄㪺㪽㩷㫄㪼㫊㪸
㪾㫑㫀㫇㩷㪼㫈㫌㪸㫂㪼
㪫㫆㫋㪸㫃㩷㪠㪧㪚
㪊㪅㪇㪇
㪉㪅㪌㪇
㪚㫆㫉㪼㪉㩷㪄㩷㪤㪚
㪚㫆㫉㪼㪈㩷㪄㩷㪤㪚
㪚㫆㫉㪼㪇㩷㪄㩷㪪㪤㪫
㪉㪅㪇㪇
㪈㪅㪌㪇
㪈㪅㪇㪇
㪇㪅㪌㪇
㪇㪅㪇㪇
㪾㫑㫀㫇㪄㪼㫈㫌㪸㫂㪼
㪾㫑㫀㫇㪄㫄㪺㪽
㪾㫑㫀㫇㪄㫄㪼㫊㪸
㫄㪺㪽㪄㫄㪼㫊㪸 㫄㪺㪽㪄㪼㫈㫌㪸㫂㪼 㫄㪼㫊㪸㪄㪼㫈㫌㪸㫂㪼
㪉㫋㪿㫉㪼㪸㪻㫊㩷㪼㫏㪼㪺㫌㫋㪼㪻㩷㪹㫐㩷㪪㪤㪫
図 20 シミュレーション結果 8
27
㪌㪅㪇㪇
㪋㪅㪌㪇
㪋㪅㪇㪇
㪲㪙㪼㫅㪺㪿㫄㪸㫉㫂㩷㪧㫉㫆㪾㫉㪸㫄㫊㪴
㫄㪺㪽㩷㫄㪼㫊㪸
㪾㫑㫀㫇㩷㪸㫉㫋
㪊㪅㪌㪇
㪫㫆㫋㪸㫃㩷㪠㪧㪚
㪊㪅㪇㪇
㪉㪅㪌㪇
㪚㫆㫉㪼㪉㩷㪄㩷㪤㪚
㪚㫆㫉㪼㪈㩷㪄㩷㪤㪚
㪚㫆㫉㪼㪇㩷㪄㩷㪪㪤㪫
㪉㪅㪇㪇
㪈㪅㪌㪇
㪈㪅㪇㪇
㪇㪅㪌㪇
㪇㪅㪇㪇
㪾㫑㫀㫇㪄㪸㫉㫋
㪾㫑㫀㫇㪄㫄㪺㪽
㪾㫑㫀㫇㪄㫄㪼㫊㪸
㫄㪺㪽㪄㫄㪼㫊㪸
㪉㫋㪿㫉㪼㪸㪻㫊㩷㪼㫏㪼㪺㫌㫋㪼㪻㩷㪹㫐㩷㪪㪤㪫
㫄㪺㪽㪄㪸㫉㫋
㫄㪼㫊㪸㪄㪸㫉㫋
図 21 シミュレーション結果 9
㪌㪅㪇㪇
㪋㪅㪌㪇
㪋㪅㪇㪇
㪲㪙㪼㫅㪺㪿㫄㪸㫉㫂㩷㪧㫉㫆㪾㫉㪸㫄㫊㪴
㪾㪺㪺㩷㪼㫈㫌㫂㪸㫂㪼
㪾㫑㫀㫇㩷㪸㫉㫋
㪊㪅㪌㪇
㪫㫆㫋㪸㫃㩷㪠㪧㪚
㪊㪅㪇㪇
㪉㪅㪌㪇
㪚㫆㫉㪼㪉㩷㪄㩷㪤㪚
㪚㫆㫉㪼㪈㩷㪄㩷㪤㪚
㪚㫆㫉㪼㪇㩷㪄㩷㪪㪤㪫
㪉㪅㪇㪇
㪈㪅㪌㪇
㪈㪅㪇㪇
㪇㪅㪌㪇
㪇㪅㪇㪇
㪾㫑㫀㫇㪄㪾㪺㪺
㪾㫑㫀㫇㪄㪸㫉㫋
図 22
㪾㫑㫀㫇㪄㪼㫈㫌㪸㫂㪼
㪾㪺㪺㪄㪸㫉㫋
㪾㪺㪺㪄㪼㫈㫌㪸㫂㪼
㪉㫋㪿㫉㪼㪸㪻㫊㩷㪼㫏㪼㪺㫌㫋㪼㪻㩷㪹㫐㩷㪪㪤㪫
㪸㫉㫋㪄㪼㫈㫌㪸㫂㪼
シミュレーション結果 10 手法 1=手法 2
28
㪌㪅㪇㪇
㪋㪅㪌㪇
㪋㪅㪇㪇
㪲㪙㪼㫅㪺㪿㫄㪸㫉㫂㩷㪧㫉㫆㪾㫉㪸㫄㫊㪴
㪾㪺㪺㩷㫄㪼㫊㪸
㪾㫑㫀㫇㩷㪼㫈㫌㪸㫂㪼
㪊㪅㪌㪇
㪫㫆㫋㪸㫃㩷㪠㪧㪚
㪊㪅㪇㪇
㪉㪅㪌㪇
㪚㫆㫉㪼㪉㩷㪄㩷㪤㪚
㪚㫆㫉㪼㪈㩷㪄㩷㪤㪚
㪚㫆㫉㪼㪇㩷㪄㩷㪪㪤㪫
㪉㪅㪇㪇
㪈㪅㪌㪇
㪈㪅㪇㪇
㪇㪅㪌㪇
㪇㪅㪇㪇
㪾㫑㫀㫇㪄㪾㪺㪺
㪾㫑㫀㫇㪄㫄㪼㫊㪸
図 23
㪾㫑㫀㫇㪄㪼㫈㫌㪸㫂㪼 㪾㪺㪺㪄㫄㪼㫊㪸
㪾㪺㪺㪄㪼㫈㫌㪸㫂㪼 㫄㪼㫊㪸㪄㪼㫈㫌㪸㫂㪼
㪉㫋㪿㫉㪼㪸㪻㫊㩷㪼㫏㪼㪺㫌㫋㪼㪻㩷㪹㫐㩷㪪㪤㪫
シミュレーション結果 11 手法 1=手法 2
㪌㪅㪇㪇
㪋㪅㪌㪇
㪋㪅㪇㪇
㪲㪙㪼㫅㪺㪿㫄㪸㫉㫂㩷㪧㫉㫆㪾㫉㪸㫄㫊㪴
㪾㪺㪺㩷㫄㪼㫊㪸
㪾㫑㫀㫇㩷㪸㫉㫋
㪊㪅㪌㪇
㪫㫆㫋㪸㫃㩷㪠㪧㪚
㪊㪅㪇㪇
㪉㪅㪌㪇
㪚㫆㫉㪼㪉㩷㪄㩷㪤㪚
㪚㫆㫉㪼㪈㩷㪄㩷㪤㪚
㪚㫆㫉㪼㪇㩷㪄㩷㪪㪤㪫
㪉㪅㪇㪇
㪈㪅㪌㪇
㪈㪅㪇㪇
㪇㪅㪌㪇
㪇㪅㪇㪇
㪾㫑㫀㫇㪄㪾㪺㪺
㪾㫑㫀㫇㪄㫄㪼㫊㪸
図 24
㪾㫑㫀㫇㪄㪸㫉㫋
㪾㪺㪺㪄㫄㪼㫊㪸
㪉㫋㪿㫉㪼㪸㪻㫊㩷㪼㫏㪼㪺㫌㫋㪼㪻㩷㪹㫐㩷㪪㪤㪫
㪾㪺㪺㪄㪸㫉㫋
㫄㪼㫊㪸㪄㪸㫉㫋
シミュレーション結果 12 手法 1=手法 2
29
㪌㪅㪇㪇
㪋㪅㪌㪇
㪋㪅㪇㪇
㪲㪙㪼㫅㪺㪿㫄㪸㫉㫂㩷㪧㫉㫆㪾㫉㪸㫄㫊㪴
㪾㪺㪺㩷㪼㫈㫌㪸㫂㪼
㪾㫑㫀㫇㩷㫄㪺㪽
㪊㪅㪌㪇
㪫㫆㫋㪸㫃㩷㪠㪧㪚
㪊㪅㪇㪇
㪉㪅㪌㪇
㪚㫆㫉㪼㪉㩷㪄㩷㪤㪚
㪚㫆㫉㪼㪈㩷㪄㩷㪤㪚
㪚㫆㫉㪼㪇㩷㪄㩷㪪㪤㪫
㪉㪅㪇㪇
㪈㪅㪌㪇
㪈㪅㪇㪇
㪇㪅㪌㪇
㪇㪅㪇㪇
㪾㫑㫀㫇㪄㪾㪺㪺
㪾㫑㫀㫇㪄㫄㪺㪽
図 25
㪾㫑㫀㫇㪄㪼㫈㫌㪸㫂㪼
㪾㪺㪺㪄㫄㪺㪽
㪾㪺㪺㪄㪼㫈㫌㪸㫂㪼
㪉㫋㪿㫉㪼㪸㪻㫊㩷㪼㫏㪼㪺㫌㫋㪼㪻㩷㪹㫐㩷㪪㪤㪫
㫄㪺㪽㪄㪼㫈㫌㪸㫂㪼
シミュレーション結果 13 手法 1=手法 2
㪌㪅㪇㪇
㪋㪅㪌㪇
㪋㪅㪇㪇
㪲㪙㪼㫅㪺㪿㫄㪸㫉㫂㩷㪧㫉㫆㪾㫉㪸㫄㫊㪴
㪾㪺㪺㩷㪸㫉㫋
㪾㫑㫀㫇㩷㫄㪺㪽
㪊㪅㪌㪇
㪫㫆㫋㪸㫃㩷㪠㪧㪚
㪊㪅㪇㪇
㪉㪅㪌㪇
㪚㫆㫉㪼㪉㩷㪄㩷㪤㪚
㪚㫆㫉㪼㪈㩷㪄㩷㪤㪚
㪚㫆㫉㪼㪇㩷㪄㩷㪪㪤㪫
㪉㪅㪇㪇
㪈㪅㪌㪇
㪈㪅㪇㪇
㪇㪅㪌㪇
㪇㪅㪇㪇
㪾㫑㫀㫇㪄㪾㪺㪺
㪾㫑㫀㫇㪄㫄㪺㪽
図 26
㪾㫑㫀㫇㪄㪸㫉㫋
㪾㪺㪺㪄㫄㪺㪽
㪉㫋㪿㫉㪼㪸㪻㫊㩷㪼㫏㪼㪺㫌㫋㪼㪻㩷㪹㫐㩷㪪㪤㪫
㪾㪺㪺㪄㪸㫉㫋
㫄㪺㪽㪄㪸㫉㫋
シミュレーション結果 14 手法 1=手法 2
30
㪌㪅㪇㪇
㪋㪅㪌㪇
㪋㪅㪇㪇
㪲㪙㪼㫅㪺㪿㫄㪸㫉㫂㩷㪧㫉㫆㪾㫉㪸㫄㫊㪴
㪾㪺㪺㩷㫄㪺㪽
㪾㫑㫀㫇㩷㫄㪼㫊㪸
㪊㪅㪌㪇
㪫㫆㫋㪸㫃㩷㪠㪧㪚
㪊㪅㪇㪇
㪉㪅㪌㪇
㪚㫆㫉㪼㪉㩷㪄㩷㪤㪚
㪚㫆㫉㪼㪈㩷㪄㩷㪤㪚
㪚㫆㫉㪼㪇㩷㪄㩷㪪㪤㪫
㪉㪅㪇㪇
㪈㪅㪌㪇
㪈㪅㪇㪇
㪇㪅㪌㪇
㪇㪅㪇㪇
㪾㫑㫀㫇㪄㪾㪺㪺
㪾㫑㫀㫇㪄㫄㪺㪽
図 27
㪾㫑㫀㫇㪄㫄㪼㫊㪸
㪾㪺㪺㪄㫄㪺㪽
㪉㫋㪿㫉㪼㪸㪻㫊㩷㪼㫏㪼㪺㫌㫋㪼㪻㩷㪹㫐㩷㪪㪤㪫
㪾㪺㪺㪄㫄㪼㫊㪸
㫄㪺㪽㪄㫄㪼㫊㪸
シミュレーション結果 15 手法 1=手法 2
㪌㪅㪇㪇
㪋㪅㪌㪇
㪋㪅㪇㪇
㪘㫍㪼㫉㪸㪾㪼㩷㩹㪫㫆㫋㪸㫃㩷㪠㪧㪚㩹
㪊㪅㪌㪇
㪊㪅㪇㪇
㪚㫆㫉㪼㪉㩷㪄㩷㪤㪚
㪚㫆㫉㪼㪈㩷㪄㩷㪤㪚
㪚㫆㫉㪼㪇㩷㪄㩷㪪㪤㪫
㪉㪅㪌㪇
㪉㪅㪇㪇
㪈㪅㪌㪇
㪈㪅㪇㪇
㪇㪅㪌㪇
㪇㪅㪇㪇
㫄㪼㫋㪿㫆㪻㪈
㫄㪼㫋㪿㫆㪻㪉
㫄㪼㫋㪿㫆㪻㪊
図 28 各手法におけるコアごとの IPC の平均
31
第5章
結論
本論文の目的は,シングルチップマルチコアで,各コアでは SMT が可能なプロセッサに
おいて,スレッドの特性を考慮したスケジューリングによってプロセッサ全体として最も高
い性能を実現することである.
2 章では,シングルコア SMT とマルチコアアーキテクチャについて述べ,予備実験によ
り各アーキテクチャの特徴を確認した.シングルコア SMT はマルチコアアーキテクチャに
比べて,同時に実行するスレッドの組み合わせによって実行性能が大きく変化するため,ス
レッドスケジューリングではまず SMT で実行するスレッドの組み合わせを決めることが重
要であるという方針を述べた.
3 章では,2 スレッドの SMT 実行時とマルチコア実行時における IPC の比に着目した
SMT 効率を定義し,それを単独スレッドから予測できるスレッド特徴量として SMT 優先
度を提案した.そして SMT 優先度を用いたスレッドスケジューリング手法を提案した.
4 章では提案手法の評価実験を行った.本論文で対象とする,マルチコアで各コアでは
SMT によって複数のスレッドが実行可能なアーキテクチャに対して,複数のスレッドを提
案手法を含む 3 手法でスケジューリングし,比較した.その結果,15 種類のシミュレーショ
ン中 11 種類で,提案手法が他の 2 手法に比べて最も性能が良く,また性能が一番悪くなる
ケースはなかった.残りの 4 種類では,他の 2 手法のうちの一つが一番良い性能を示した
が,その場合も,提案手法の性能と同じか,もしくはほとんど性能差がなかった.
以上の結果から,マルチコアプロセッサ全体で最も高い性能を実現するという本論文の目
的に対し,提案手法の SMT 優先度に基づくマルチコアスレッドスケジューリングが,有効
であると示された.
今後の課題として,SMT 優先度で考慮に入れた命令キューの影響が,スケジューリング
にどの程度影響を及ぼしていたのかを,定量的に評価することが挙げられる.また,本論文
とは異なる実験条件,例えば違うアプリケーションを使用した場合やコア数を増やした場合
の性能評価,提案手法の実装が挙げられる.特に実装については,事前に SMT 優先度を取
得する方法,さらに取得した SMT 優先度をスケジューラに知らせる方法などが大きな課題
になる.また本論文ではスケジューリングにかかるオーバーヘッドを考慮していないため,
その分も考慮に入れてシミュレーションを行う必要がある.さらに今後は,性能向上に加え
て消費電力の削減にも貢献するスケジューリング手法へ改良することを予定している.その
ためには,もっと積極的に SMT を利用して少ない数のコアでスレッドを実行し,使われて
いないコアの電力供給を止めるといった方法が考えられる.
32
参考文献
[1] Wall, D.W., “Limits of Instruction-Level Parallelism,” Proc. of ASPLOS-IV, 1991.
[2] Susan J. Eggers, Joel S. Emer, Henry M. Levy, Jack L. Lo, Rebecca L. Stamm,
Dean M. Tullsen, “SIMULTANEOUS MULTITHREADING: A Platform for NextGeneration Processors,” IEEE Micro, Vol.17, No.5, pp.12-19, 1997.
[3] 笠原博徳, 木村啓二, “マルチコア化するマイクロプロセッサ,” 情報処理学会, Vol.47,
No.1, pp.10-16, 2006.
[4] David A. Patterson, John L. Hennessy, “Computer Organization and Design: The
Hardware/Software interface,” ELSEVIER, Moregan Kaufmann Publishers, 2005.
[5] Lance Hammond, Basem A Nayfeb, Kunle Olukotun, “A Single-Chip Multiprocessor,” Computer, pp.79-85, 1997.
[6] Cameron McNairy, Rohit Bhatia, “Montecite: A Dual-Core, Dual-Thread Itanium
Processor,” IEEE Micro, Vol.25, No.2, pp.10-20, 2005.
[7] Deborah T. Marr, Frank Binns, David L. Hill, Glenn Hinton, David A.Koufaty,
J. Alan Miller, Michael Upton, “Hyper-Threading Technology Architecture and
Microarchitecture,” Intel Technology Jornal Q1, Vol.6, Issue 1, pp.4-15, 2002.
[8] SESC, “http://sesc.sourceforge.net/”
[9] Standard Performance Evaluation Corporation, “http://www.spec.org/”
33
謝辞
本研究を進めるにあたり,小林広明教授には,時に厳しく,時に優しく御指導頂きまし
た.お忙しい中,何度も私の研究方針や実験結果について御相談に乗っていただき,適切な
アドバイスを下さいました.さらに,提出が遅かった私の原稿を,土日,昼夜問わず御丁寧
に修正頂きました.心から感謝いたします.後藤英昭助教授には,研究の内容のみならず,
研究を進めるための PC 環境の構築・管理から,日本語の論文の書き方など幅広く御助言を
頂きました.また,時には夜食を下さったり,車で食事に連れていって下さりました.心か
ら感謝いたします.滝沢寛之講師には,日頃から,私のちょっとした疑問から助けを求める
ような質問に至るまで,お忙しい中その場で相談に乗っていただき,適切なアドバイスを頂
きました.特にベンチマーク作成にあたりましては,多くの御指導を頂きました.また,要
領のよくない私を気に掛け,よく声を掛けて下さいました.深く感謝いたします.小寺さん
には,研究テーマが近く同じシミュレータを使用しているということで,大変多くのヒント
とアドバイスを頂きました.本当にありがとうございます.本研究室所属の大学院生並びに
学部学生の皆様には,研究のこと,さらには研究以外の学校生活のことでも大変お世話にな
りました.感謝いたします.最後に私を生み,育て,支えてくれた両親と妹に感謝します.
平成 18 年 3 月
船矢 祐介
34
Fly UP