プロセッサーアーキテクチャーと
ソフトウェア最適化

2011 年 8 月

1© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

目次
1. CPU の仕組みとアーキテクチャー
2. 代表的なCPUのアーキテクチャー

2© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

CPU の仕組み
CPU は OS によってメモリーに読み込まれたプログラムを逐次読み込んで実行します（1）命令を読み込む（フェッチ）（2）命令を解釈（デコード）（3）命令を実行（エグゼキューション）（4）結果の生成（ライトバック）

通常この命令の処理はパイプラインと呼ばれる流れ作業で行われる

3© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

パイプライン構造
add eax, 1
sub ecx, 1
mov mem, eax
mov mem, ecx
add eax, ecx

フェッチ
実行開始

デコード

エグゼ
キューション

ライトバック

add
sub

add

mov

sub

add

mov

mov

sub

add

add

mov

mov

sub

結果生成

4
© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

ハイパー・パイプライン・テクノロジー
後期のインテル Pentium 4 プロセッサーではパイプラインのステージ数が 31 に倍増
プロセッサーのパフォーマンスと周波数を大幅に向上 （設計上限 10GHz）

1

2

3

4

Prefetch Decode Decode Exec

5
Wrtbck233MHzP5 マイクロアーキテクチャー
1
Fetch

2

3

4

5

6

7

8

9

10

Fetch Decode Decode Decode Rename ROB Rd Rdy/Sch Dispatch Exec

1.4GHzP6 マイクロアーキテクチャー
1

2

TC Nxt IP

3
TC Fetch

4

5

6

Drive

Alloc

8

9

10

11

12

13

14

15

16

17

18

19

20

Rename

Que

Sch

Sch

Sch

Disp

Disp

RF

RF

Ex

Flgs

Br Ck

Drive

7

Intel NetBurst® マイクロアーキテクチャー （Pentium ® 4）
5
© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

2GHz

パイプラインにおける分岐命令の影響
add eax, 1jz
ecx, label
mov mem, eax
mov mem, ecx
フェッチ

分岐命令はパイプラインの流れを変える

デコード

エグゼ
キューション

ライトバック

add
jz

add

mov

jz

add

mov

mov

jz

add

先行する条件分岐命令が分岐すると、これらの命令は廃棄される

パイプラインの段数が深いほど、分岐先の命令が実行されるまで時間がかかる
6© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

分岐予測 - 動的分岐予測• 分岐予測には動的予測と静的予測の 2 種類がある
分岐命令
命令フェッチ

② 分岐先を予測
分岐命令の次の命令のフェッチ先を切り替える

1. 分岐命令のアドレス
2. 前回分岐した分岐先アドレス
3. 履歴ビットデコード
エグゼキューション

分岐ターゲットバッファー（BTB）① BTB にこの分岐命令が登録されているか

ライトバック③ 分岐先アドレスを BTB に書き込む

7© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

分岐予測 - 静的分岐予測• 分岐予測には動的予測と静的予測の 2 種類がある
分岐先1：
命令
後方分岐
命令
命令
Jnz
分岐先1 or 2
….
分岐しない
前方分岐
….
分岐先2：

初めて実行される条件分岐や予測ミスした条件分岐命令ではパイプラインがフラッシュされます。
そのため CPU は静的に分岐を予測する機能を備えています。

静的分岐予測は：①後方分岐は分岐すると予測②前方分岐は分岐しないと予測

性能チューニングの過程でアプリケーションで分岐予測ミスがどのくらい発生しているか分析する必要がある

8© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

アウト・オブ・オーダー実行エンジン
 命令バッファーから命令を検索 1 サイクルあたり最大 6 つの μop を実行（Pentium 4 の場合）
 プログラムの順序に関係なく、データの準備ができた μop から実行（アウト・オブ・オーダー）システム・バス

a = c - d;b = c + d;
x = a + b;

L2

バス・インタフェース・ユニット
データ・キャッシュ
フェッチと
デコード
ユニット

ディスパッチ
と実行
ユニット

TC
命令プール
(ROB)
9
© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

リタイア
ユニット

キャッシュ
高速化する CPU に対しメモリーの動作速度は追い付かない

メモリー

遅い
読み出し

開始
読み出し
終了

チップセット

CPU

早い
リード要求

待ち
データ取得

x86 CPU では 386 が外付けキャッシュをオプションで提供
486 で初めて CPU 内部にキャッシュを搭載
10© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

プロセッサーのキャッシュ構成

P4

PM

レベル/モデル

容量

連想方式

ラインサイズ

アクセス遅延(Int/Fp)

書き込み更新方式

L1(0, 1, 2)

8KB

4

64

2/9

ライトスルー

L1(3)

16KB

8

64

4/12

ライトスルー

TC(全世代)12Kops

8

N/A

N/A

N/A

L2(0,1,2)

256KB/512KB

8

64

7/7

ライトバックL2(3,4)

1MB

8

64

18/18

ライトバックL2(3,4,6)

2MB

8

64

20/20

ライトバックL3(0,1,2)

512KB/1MB/2MB

8

64

14/14

ライトバック

レベル/モデル

容量

連想方式

ラインサイズ

アクセス遅延書き込み更新方式

L1D

32KB

8

64

3

ライトバック

L1I

32KB

8

N/A

N/A

N/A

L2（9/13/14)

1M/2M/4M

864

9/10/14

ライトバック

レベル/モデル

容量

連想方式

ラインサイズ

アクセス遅延書き込み更新方式

32KB

8

64

3

ライトバック

L1I

32KB

8

N/A

N/A

N/A

L2(共有L2)

2MB/4MB/6M/12M

8/12/24

64

14

ライトバックCore L1D

11© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

プロセッサーのキャッシュ構成(2)Nehalem
レベル/モデ
ル

容量

連想方式

ラインサイ
ズ

アクセス遅延書き込み更新方式

L1D

32KB

8

64

4

ライトバック

L1I

32KB

4

N/A

N/A

N/A

L2

256KB

8

64

10

ライトバックL3（共有）

3M/4M/6M/8M

キャッシュサイズで
変わる

64

35-40

ライトバック

Sandy Bridge
レベル/モデ
ル

容量

連想方式

ラインサイ
ズ

アクセス遅延書き込み更新方式

L1D

32KB

8

64

4

ライトバック

L1I

32KB

8

N/A

N/A

N/A

L2

256KB

8

64

12

ライトバックキャッシュサイズで
変わる

64

26-31

ライトバックL3（共有）

3M/6M/8M

12© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

空間の局所性と時間の局所性
アクセスされたデータに隣接するデータは近い
将来参照される可能性が高い

アクセスされたデータは近い
将来再びアクセスされる可
能性が高い

13
© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

キャッシュの種類
 命令キャッシュ： 一度実行した命令を格納します。アプリケーションにおいてパフォーマンスが要求されるコードのほとんどはループおよびループ内の関数呼び出しで構成されており、それらをキャッシュから高速に読み込むことで命令フェッチのボトルネックを解消します。L1命令キャッシュ。L1Iキャッシュ。
 データキャッシュ：プログラムが読み書きしたデータを含むキャッシュラインを保持します。以降隣接するデータはキャッシュに読み込まれているため高速にアクセスすることができます。キャッシュにないデータはメモリーの読み出しを行います。L1データキャッシュ。L1Dキャッシュ。
 ユニファイドキャッシュ：命令とデータをキャッシュライン単位で混在して保持します。通常はL1キャッシュ以降のL2やL3キャッシュに用いられます。

14© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

キャッシュの種類
アプリケーションのデータ

L1Dキャッシュ
アプリケーションのデータ

アプリケーションのコード

アプリケーションのデータ

アプリケーションのコード
アプリケーションのデータ
アプリケーションのコード

L2キャッシュアプリケーションのコード

L1Iキャッシュ

OSのデータOSのコードメモリー空間全体

CPU
L1D
L1I

レベル1データ
レベル1命令15© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

キャッシュの階層
実行コア

実行コア

L1命令 L1データ

コアに近い高速なキャッシュ
容量は小さいL1命令 L1データ

L2キャッシュ（ユニファイド）

メモリーに近い低速なキャッシュ
容量は大きいバス
実行コア
L1命令 L1データ

実行コア

実行コア

L1命令 L1データ

L1命令 L1データ

L2キャッシュ（ユニファイド）

実行コア
L1命令 L1データ

L2キャッシュ（ユニファイド）バス

16© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

キャッシュの利用効率
L1 キャッシュでのアクセスミスは数十クロックのペナ
ルティーが生じる
L2 キャッシュでのアクセスミスは数十バスクロックのペナルティーが生じる
キャッシュを有効利用するにはデータやコードの位置関係が重要となる

17© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

セット・アソシアティブ・キャッシュキャッシュは N ウエイで構成される： 8 ウエイの 32KB キャッシュの例

31

12 11

00000….00001

00001100001064 バイト

8 組み
set0
set1
set2
set3
set4
set5
set6

0

6 5

8ウェイ

0000
0000
0000
0000
0000
0000
0000
0001

4KB

set62
set63

タグブロック

64バイト

データブロック18© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

セット・アソシアティブ・キャッシュとプログラムの関係
int array1[1024], array2[1024], array3[1024], array4[1024],
array5[1024], array6[1024], array7[1024], array8[1024],
array9[1024];// 整数 4 バイトの1024個の要素の配列、つまり 1 つに配列は 4K バイト
for(i = 0; i < 1024; i++){array1[i] = i// 0x128f20:b000100101000 111100 100000
array2[i] = i// 0x12af20:b000100101010 111100 100000
array3[i] = i// 0x12cf20:b000100101100 111100 100000…
array8[i] = iarray9[i] = i}

19© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

キャッシュの利用効率
 コードの書き方で変わるキャッシュの利用効率
for (j=0; j<N; j++)for (i=0; i<N; i++)A[j][i] += B[j][i] * C[j][i];for (i=0; i<N; i++)for (j=0; j<N; j++)A[j][i] += B[j][i] * C[j][i];20© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

for (i = 0; i < N; i++)A[i][j] =A[0][0]A[1][0]A[2][0]A[1021][0]A[1022][0]A[1023][0]

0
4
8
4084
4088
4092
4096
4100
4104

4084
4088
4092

A[0][0]A[0][1]
A[0][2]for (j = 0; j < N; j++)A[i][j] =A[0][1021]
A[0][1022]
A[0][1023]
A[1][0]A[1][1]A[1][2]

A[1][1021]
A[1][1022]
A[1][1023]

A[0][0]A[0][1]
A[0][2]

A[0][1021]
A[0][1022]
A[0][1023]

A[1021][1021]
A[1022][1022]
A[1023][1023]
21© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

キャッシュに読み込まれるタイミング
1.アプリケーションが参照したメモリーの内容がキャッシュにない場合
2.アプリケーションがメモリーに書き込みを行った内容がキャッシュにない場合
3.アプリケーションがプリフェッチ命令を実行した場合
4.ハードウェア・プリフェッチャーが動作した場合読み込み書き出しの最小単位はキャッシュライン（64バイト）

22© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

キャッシュの整合（コヒーレンシー）: シングルコア
2 つのスレッドが同じデータにアクセスすると
スレッド0

高速だがキャッシュの容量は少ない

スレッド1

実行コア

バス

チップ
セット

シングルコア・シングルプロセッ
サー環境では 2 つのスレッドが同時に実行されることはないので、CPU のキャッシュ内は常に最新
に保たれる

データ

低速だが大
量のメモリー23© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

キャッシュの整合（コヒーレンシー）: マルチコア
2 つのスレッドが同じデータにアクセスすると
スレッド0

スレッド1

実行コア

実行コア

高速だがキャッシュの容量は少ない一方のスレッドがデータを更新す
ると、メモリー上のデータともう一方の CPU 内のデータは最新で
はなくなる

バス

チップ
セット

バス

データ

低速だが大
量のメモリー24© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

フォルス・シェアリングについて
コア 1 にあるキャッシュライン
Param[0]Param[1]Param[2]コア 2 にあるキャッシュライン

Param[3]Param[0]Param[1]Param[2]Param[3]無効化（Invalidate）
書き換え

参照

キャッシュミス マルチプロセッサー上の問題– クアッドコア、デュアルコア、ハイパース
レッド上でも同様に問題
 対策– VTune™ Amplifier XEのイベントを参照する– デュアルコア ハイパースレッド上で数百倍のイベントが検出された場合は疑いが強い– 関数レベルで 6 – 7 倍、アプリケーショ
ンレベルで 2 倍のパフォーマンスの低下をもたらすことがある

スレッド2

スレッド1

Param[0]….

Param[0]バスを介してキャッシュ・ラインを送受信

25© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

……

フロントサイド・バスとメモリー帯域
フロントサイド・バスの世代
CPU

memory

CPU

CPU

CPU

CPU

CPU

memory

CPU
MCH

MCH

CPU

MCH

CPU
ICH

ICH

CPU

memory

CPU

ICH

CPU

CPU とチップセット間を結ぶバスをフロントサイド・バス（FSB)と呼びます
全てのメモリーアクセスはFSBを経由します。

Core™2 Duo/Quad までのメモリー構成
26© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

Nehalem*-EP プラットフォーム・アーキテクチャー CPU がメモリーコントローラーを内蔵– ソケットあたり 3 チャンネル分のDDR3メモリをサポート– メモリー帯域幅の増大– プロセッサー数に応じたメモリー帯域幅のスケーリング– メモリー・レイテンシーの削減

インテル® QuickPath インターコネク

Nehalem*EP

Nehalem*EP

Tylersburg*EPト (インテル® QPI)

– ポイント・トゥー・ポイント接続– ソケット間の接続– ソケットとチップセットの接続– 拡張性の高いソリューションを提供

新しいプラットフォームによる大幅な性能向上
27* 開発コード名© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

演習 1: フェルミの計算
float *loop(float *data1, float *data2) {float Pi = 3.14, *ans;ans = (float *) malloc(MAX * sizeof(float));for ( i = 1, i < MAX, i++) {ans[i] = data1[i] + Pi * data2[i]; }return ans;}

計算:

Big O 記法
合計メモリー使用率 MAX＊float（4バイト）＊３つのデータ配列。
ストア vs. ロード vs. 浮動小数点演算 x ストア＋x ロード＋x 演算

縦軸に時間、横軸をｎとした場合、データがすべてメモリ上で処理されるのであれば、リニアに右肩上がりとなる。

28© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

演習 2: フェルミの計算
MAX=4000000 として想定するでは、インテル® Xeon® プロセッサー（FSB
800MHz 3GHz）でシングルスレッドが計算を完了するための予想時間は?
800MHz 6.4Gbyte/s
ストアvsロードvsFP演算：1ストア＋3ロード＋２演算

ヒント：プロセッサーの動作クロックは最重要か？

4,000,000 * 4 byte * 4 load/store = 64,000,000 (64MB)
0.064 GB / 6.4GB (800MHz system Bus) = 0.01 秒（FSB1024MHzでは8.5GB、1333MHzでは10.6GB）

29© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

ハイパー・スレッディング・テクノロジーとは?

 2 つの論理プロセッサーでコアのプロセッサー・リソースを共有する 物理実行ユニットの使用率を高める
 マルチスレッド・アプリケーションのパフォーマンスを向上させる

プロセッサー
実行リソースアーキテクチャー
ステート

アーキテクチャー
ステート

APIC

APIC

オンダイ
キャッシュ

システムバス
30
Intel、インテル、Intel ロゴは、アメリカ合衆国およびその他の国における Intel Corporation または© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。
＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
その子会社の商標または登録商標です。

実行モデル
ハイパー・スレッディング・テクノロジのリソース使用率
スーパースケーラー

マルチプロセッシング

ハイパー・スレッディング・テクノロジー

時間（
プロセッサー・
サイクル）
注: 各ボックスはプロセッサの実行ユニットを表す
31© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

SIMD の歴史（一部） MMX® Technology － MMX® Technology インテル® Pentium® プロセッサとPentium® II プロセッサ– SIMD 整数演算用に 64 ビットの MMX® レジスタを採用– パックドバイト、ワード、およびダブルワード整数での SIMD 演算をサポート– マルチメディアおよび通信ソフトウェアに最適

 SSE – インテル® Pentium® III プロセッサ– SIMD 整数と FP-SP オペランド用に 128 ビット拡張メモリ・マネージャ（XMM）レジスタを実装– 浮動小数点演算と SIMD 演算を同時に実行– データ・プリフェッチ命令を採用– 3D 幾何学、3D レンダリング、ビデオ・エンコーディング/デコーディングに最適

 SSE2 – インテル® Pentium® 4 プロセッサおよびインテル® Xeon™ プロセッサ– 拡張 64 ビット SIMD 整数をサポート– SIMD 整数演算と浮動小数点倍精度演算（FP-DP）用に同じ XMM レジスタを実装– データサポート用に 144 個の新しい命令を追加（レジスタの追加はなし）– キャッシュ処理とメモリ順序演算のサポートを追加– 3D グラフィック、ビデオ・エンコーディング/デコーディング、暗号化に最適

 SSE3 – インテル® Pentium® 4 プロセッサ– ストリーミング SIMD 拡張命令テクノロジ、ストリーミング SIMD 拡張命令 2 テクノロジ、および X87 浮動小数点演算のパフォーマンスを向上– 特殊な 3D 演算（四元数）、複素数演算やビデオ・コーデック・アルゴリズムに最適

32

3Intel、インテル、 Intel ロゴ、MMX、Pentium は、アメリカ合衆国およびその他の国における© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。
＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
Intel Corporation またはその子会社の商標または登録商標です。

MMX と SSE 命令のデータタイプ
2 double
4 float
1 dqword
SSE2
SSE3
SSSE3
SSE4

16 byteSSE

8 wordMMX

4 dword2 qword•MMX は x87 浮動小数点レジスターを使用する•SSE、SSE2、SSE3 、SSSE3 および SSE4 は新しい SSE レジスターを使用する

33© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

ADD/SUBPD
パックド倍精度浮動小数点の加算 / 減算
ADD/SUBPD xmm1, xmm2/m128

34[127 – 64][63 – 0]xmm1

[127 – 64][63 – 0]xmm2

xmm1[127-64] + xmm2[127-64]

xmm1[63-0] – xmm2[63-0]

xmm1

3Intel、インテル、Intel ロゴは、アメリカ合衆国およびその他の国における Intel Corporation または© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。
＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
その子会社の商標または登録商標です。

ADD/SUBPS
パックド単精度浮動小数点の加算 / 減算
ADD/SUBPS xmm1, xmm2/m128[127 – 96] [95 – 64] [63 – 32] [31 – 0]

xmm1

[127 – 96] [95 – 64] [63 – 32] [31 – 0]

xmm2

xmm1[127-96]xmm1[95-64] xmm1[63-32] xmm1[31-0]++
xmm2[127-96]xmm2[95-64] xmm2[63-32] xmm2[31-0]

xmm1

35
Intel、インテル、Intel ロゴは、アメリカ合衆国およびその他の国における Intel© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。
＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
Corporation またはインテル® 64
 64 ビットアドレス拡張– 64 ビット動作モードには 2 つのサブモードがある– 64 ビットモード– 64 ビットのリニアアドレス– 既存の汎用レジスタを 64 ビットに拡張– 拡張/追加された命令セット– OS によってコード・セグメントごとにイネーブルにされる– デフォルトのアドレスサイズは 64 ビット– デフォルトのデータサイズは 32 ビット– 互換モード– 64 ビット・オペレーティング・システムで 32 ビット・アプリケーションを実行– アプリケーションを再コンパイルする必要なし– OS はカーネルの呼び出し境界にサンクレイヤを提供

336Intel、インテル、Intel ロゴは、アメリカ合衆国およびその他の国における Intel© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。
＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
Corporation またはインテル® 64 － レジスター
127

63

64 63

XMM0
63

32 31

0

0

0

RIP

EIP

79

0

XMM1

RAX

EAX

XMM2

RBX

EBX

RCX

XMM3

ECX

RDX

XMM4

EDX

RBP

EBP

XMM5

RSI

ESI

RDI

EDI

RSP

ESP
R8
R9
R10
R11
R12
R13
R14
R15

32 31

XMM6
XMM7
XMM8
XMM9
XMM10
XMM11

X87/MMX

XMM12
XMM13
XMM14
XMM15

37
© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

このプログラムの問題は？
void *aptr;
int tempvar;
aptr = malloc(sizeof(void *));
tempvar = (int) aptr;

38© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

目次
1. CPU の仕組みとアーキテクチャー
2. 代表的なCPUのアーキテクチャー

39© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

インテルの Tick Tock 開発モデル
2005-06
TICK

TOCK

2007-08
TICK

TOCK

インテル®
Pentium® D, インテル®
Core™ 2,
Xeon®,
Xeon®
Core™
プロセッサー プロセッサー

PENRYN * NEHALEM*
プロセッサー プロセッサー

65nm

45nm

2009-10TICK TOCKWESTMERE *プロセッサーSANDY
BRIDGE*
プロセッサー

32nm

SandyBridge – 32 nm 世代インテル プロセッサー* コード名40© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

インテルの Tick Tock 開発モデル
2005-06

2007-08

2009-10

®
TICK
TOCK
TICK TOCK
インテル® Core™
インテル® マイクロアーキテク
インテルTICK
マイクロアーキテクチャー
チャー Nehalem
NetBurst
マイクロ
アーキテク
インテル®
チャー
Pentium® D, インテル®
Core™ 2,
Xeon®,Xeon®
Core™
WESTMERE *PENRYN * NEHALEM*
プロセッサー プロセッサー
プロセッサープロセッサー プロセッサー

65nm

45nm

TOCK
インテル® マイクロアーキテクチャー
SandyBridge

SANDY
BRIDGE*
プロセッサー

32nm

SandyBridge – 32 nm 世代インテル プロセッサー* コード名41© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

インテル® NetBurst
プロセッサー・ファミリー
HT テクノロジー
SSE3

SSE2
インテル® Pentium® 4 プロセッサー

HT テクノロジー
インテル® Pentium® 4 プロセッサー

インテル® 64

HT テクノロジー
インテル® Pentium® 4 プロセッサー

HT テクノロジー
インテル® Pentium® 4 プロセッサー

HT テクノロジー
インテル® Pentium® 4 プロセッサー
エクストリーム・エディション

HT テクノロジー
インテル® Pentium® 4 プロセッサー
エクストリーム・エディション

64 ビット インテル® Xeon® プロセッサー

インテル® Xeon® プロセッサー

デュアルコアインテル® Pentium® プロセッサー
エクストリーム・エディション
64 ビット インテル® Xeon® プロセッサー
インテル® Pentium® D プロセッサー

42© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

インテル NetBurst マイクロアーキテクチャー
頻繁に使用されるパス

システムバス

それほど頻繁に使用されないパス

クワッド・パンプ 100MHz/333MHz

400MT/秒 = 3.2 GB/秒 最大 1066MT/秒 = 8.5 GB/秒

バス・インターフェイス・ユニット
L2 キャッシュ （1/2MB 8 ウエイ 128 バイト・キャッシュ・ライン） 108G バイト/秒
L1 データキャッシュ （16KB 8 ウエイ 64 バイト・キャッシュ・ライン）

64 ビット幅

256 ビット幅

フロントエンド
BTB
フェッチ/
デコード
分岐予測
トレースキャッシュ
TCµコードROM

実行ユニット

リタイアメント

BTB

命令プール
（ROB）
43
© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

インテル® モバイル
プロセッサー・ファミリー
SSE3
インテル® Core™ Solo プロセッサー

SSE2
インテル® Pentium® M プロセッサー
インテル® Celeron® M プロセッサー

インテル® 64

デュアルコアHT テクノロジー
インテル® Core™ Duo プロセッサー

44© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

インテル® モバイル・マイクロアーキテクチャー
頻繁に使用されるパス

システムバス

それほど頻繁に使用されないパス

クワッドパンプ 100MHz

400MT/秒 = 3.2 GB/秒 (最大 533MT/秒 = 4.2 GB/秒)

バス・インターフェイス・ユニット
L2 キャッシュ （1MB 8ウエイ 128バイト・キャッシュ・ライン）
L1 命令キャッシュ （32KB 8ウエイ ）L1 データキャッシュ （32KB 8ウエイ ）256ビット幅

64ビット幅フロントエンド
BTB
フェッチ/
デコード
分岐予測

実行ユニット

リタイアメントµOPのフュージョン

命令プール
（ROB）
45
© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

マクロフュージョン
Pentium M
LD + OP

Pentium 4

ADD EAX, [EDX]

LD + OP

デコーダー

デコーダー
OP

LD + OPLD

スケジューラー

スケジューラーLD + OP

OP

効率改善

LD

Cache

ALU

Cache

ALU

LD

OP

LD

OP

46
© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

インテル® Core™ プロセッサー・ファミリー
SSE3 ＆ SSSE3

SSE2

インテル® 64

デュアルコアHT テクノロジー

インテル® Xeon® プロセッサー（5100番台）
インテル® Core™ 2 Extream プロセッサー
インテル® Core™ 2 Duo プロセッサー
45nmで製造される Xeon およびCore 2 Duo/Quad

SSE4.147© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

インテル® Core™ マイクロアーキテクチャー
頻繁に使用されるパス

システムバス

それほど頻繁に使用されないパス

クワッド・パンプ 166MHz/266MHz/333MHz

667MT/秒 = 5.3 GB/秒、1066MT/秒 = 8.5GB/秒、1333MT/秒 = 10.6GB/秒、 1600MT/秒 = 12.8GB/秒

バス・インターフェイス・ユニット
アドバンスド・スマート L2 キャッシュ （2MB/4MB 8 ウエイ 128 バイト・キャッシュ・ライン）
256ビット幅

L1 データキャッシュ（32KB 8 ウエイ ）L1 命令キャッシュ（32KB 8 ウエイ ）64ビット幅

5256ビット幅

L1 データキャッシュ（32KB 8 ウエイ ）L1 命令キャッシュ（32KB 8 ウエイ ）64ビット幅フロントエンド
フェッチ/ BTB
デコード 分岐予測

実行ユニット(5つ）

リタイアメント

マイクロ・オペレーション（µOP）のフュージョン

命令プール
（ROB）

フロントエンド
フェッチ/ BTB
デコード 分岐予測

実行ユニット(5つ）

リタイアメント

マクロ・オペレーションのフュージョン

マクロ・オペレーションのフュージョン

4

5

4

4
マイクロ・オペレーション（µOP）のフュージョン

4

命令プール
（ROB）

48
© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

基本アーキテクチャー

命令フェッチおよびプリデコード
命令キュー

2M/4M
共有 L2
キャッシュ

5

マイクロ
コード
ROM

デコード
4

リネーム/割り当て
リタイアメント・ユニット(リオーダーバッファー)

最大
10.6GB/秒のFSB

アドバンスト・デジタル・
メディア・ブースト
128 ビット・パックド Add+

128 ビット・パックド Multiply+

128 ビット・パックド Load4+
スケジューラー
ALU
分岐
MMX/SSE
FPmoveALU
FAdd
MMX/SSE
FPmove128 ビット・パックド StoreALUFMul
MMX/SSE
FPmove

ロード

ストア

+

( CMPJCC )L1 データキャッシュと D-TLB

1 クロック当たり 2 倍の演算スループット
49© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

（乗算＋加算）/ サイクル
SIMD

パックド
単精度浮動小数点

パックド
倍精度浮動小数点

パックド
整数

Yonah

2 Mul + 2 Add

1 Mul+1Add

4 Mul+ 4Add

Merom

4 Mul + 4 Add

2 Mul+ 2 Add 8 Mul+ 8 Add

スケジューラー
ALU
分岐
MMX/SSE
FPmoveALU
FAdd
MMX/SSE
FPmoveALU
FMul
MMX/SSE
FPmove128 ビット・パックド Add
ロード

ストア

+

128 ビット・パックド Multiply

L1 データキャッシュと D-TLB

50

1 クロックあたり 2 倍の演算スループット

50© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

スマート・メモリー・アクセス – 目標
システムバス
L1
データ
キャッシュ

スマート共有L2 キャッシュ

L1
データ
キャッシュ

コア1
時間の局所性
空間の局所性

コア2
データを可能な限り早く利用できるようにする
データが可能な限り近くにあるようにする

メモリー・サブシステムのレイテンシーを隠蔽
51© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

アドバンスト・スマート・キャッシュダイナミック・キャッシュ・アロケーション
アドバンスト・
スマート・キャッシュ

独立キャッシュ

コア1

コア1

コア2

L2 キャッシュ

L2

コア2
L2

キャッシュ キャッシュ

共有キャッシュは2つのコアからの不均衡な負荷に適応。しかし独立キャッシュ
は、一方のキャッシュの使用率が低く、キャッシュが空いていても、もう一方の高負荷のアプリケーションはその空きキャッシュを利用できずパフォーマンス向上が見込めない。
52© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

アドバンスト・スマート・キャッシュ
効率よいデータ共有
アドバンスト・
スマート・キャッシュ
コア1

コア2

独立キャッシュ
コア1

コア2

L2 キャッシュL2 キャッシュ L2 キャッシュ

FSB
チップセット MCH

FSB
チップセット MCH

L2 から L1 への 2 倍の帯域幅53© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

マクロフュージョン
一般的な x86 命令のペアを単一のマイクロオペレーションで発行– CMP または TEST + 条件分岐 (Jcc)
マクロフュージョン用の拡張版 ALU (Arithmetic Logic Unit)– 1 回のディスパッチ – 効率
– 1 サイクルでの実行 – パフォーマンス

54© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

マクロフュージョンが
ない場合

命令キュー

inc

ecx

store [mem3], ebx
jne

targ

cmp eax, [mem2]

命令キューから 4 つの命令を読み取る
各命令が別々の μOP にデコードされる

load eax, [mem1]
dec0 dec1 dec2 dec3

サイクル 1サイクル 255

inc
ecx
store [mem3], ebx
jne targ
cmp eax, [mem2]
load eax, [mem1]© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

命令キューinc

マクロフュージョンを使用した場合ecx

store [mem3], ebx
jne

命令キューから 5 つの命令を読み取る

targ

cmp eax, [mem2]

結合可能な命令ペアを 1 つのデコーダーに送り込む

load eax, [mem1]

1 つの μOP で 2 つの命令を結合
dec0 dec1 dec2 dec3

incサイクル 1

store

ecx[mem3], ebx

cmpjne eax, [mem2], targ
56

load

eax, [mem1]© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

ループ・ストリーム・ディテクター
 ソフトウェアの大部分はループを利用 ハードウェアで「ループ処理」を認識– 同じ命令を繰り返しデコード（解読）– 条件に達するまで何度も同じ分岐予測を行なう

 「ループ・ストリーム・ディテクター」はソフトウェアループを特定– 通常パスではなく「ループ・ストリーム・ディテクター」からループを構成する命令ストリー
ムを読み込む– 消費電力削減のため不必要なロジック回路ブロックを停止– 命令フェッチの制限を受けないことで高いパフォーマンスを実現

インテル® Core™ マイクロアーキテクチャー

分岐予測

フェッチ

ループ
ストリーム
ディテクター

デコード

最大18命令まで
キャッシュ
57© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

Nehalem*の設計理念
新しいSSE4.2命令

実行ユニット1次データキャッシュ 2次キャッシュ&割り込みサービス
メモリーオーダー＆
実行

より深い
バッファー

アウト・オブ・オーダー
命令デコード＆スケジュールとマイクロコード
リタイアメントインテル® ハイパー・
スレッディング・テクノロジー

新たなキャッシュ階層

ロック機能の改善

仮想化の高速

ページング

ループ
ストリーム
の改善

分岐予測
命令フェッチ& 1次キャッシュ

より優れた分岐予測58© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

強化されたプロセッサーコア
命令フェッチおよびプリデコード

ITLB

32kB
命令キャッシュ

フロントエンド
実行エンジン
メモリー

命令キュー
デコード

4

セカンドレベルTLB

リネーム/割り当て
256kB
2次キャッシュ
リタイアメント・ユニット
(ROB)

4

リザベーションステーション(RS)実行ユニット

6
DTLB

32kB
データキャッシュ59© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

3次キャッシュから他の領域へ

実行ユニットの概要
リザベーション・ステーションの統合
 実行ユニットに対して命令をスケジューリング
 すべての実行ユニットに対して単一のスケジューラー すべての整数、すべての浮動小数点により用いられることがある

6 命令/サイクルを実行
 3 メモリー オペレーション
 1 ロード 1 ストア アドレス
 1 ストア データ
 ３つのALU（演算装置）機能

リザベーション・ステーションの統合
ポート 5

ポート 4

ポート 3

ポート 2

ポート 1

ポート 0

Store
Data

Integer ALU &ShiftInteger ALU &ShiftInteger ALU &LEA

FP Multiply

FP AddBranchDivideComplexInteger

FP Shuffle

SSE Integer ALU
Integer Shuffles

SSE Integer
Multiply

Load

Store
AddressSSE Integer ALU
Integer Shuffles

60© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

（命令）並列性の向上
Concurrent uOps Possible 目標：実行エンジンの高性能化
 Nehalem*：アウト・オブ・オーダー時の実
行枠を33%拡張
 並列実行できるuOPs(CPUの内部命令)の組み合わせも増加

128
112
96
80
64
48
32
16
0

DothanMerom

Nehalem機能

Merom

Nehalem

注釈

リザベーション・ステーション

32

36

実行ユニットに対して命令をディスパッチ

ロード バッファー

32

48

アロケートされたすべてのロード命令をトラック

ストア バッファー

20

32

割当てられたすべてのストアー命令をトラック

リソース増加で高いパフォーマンスを実現
61© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

Nehalem* ループ・ストリーム・ディテクター
 従来の実装と同じコンセプト
 性能面の向上:探知できるループの規模を拡大
 優れた電力効率:より多くのロジック回路を停止

Nehalem* マイクロアーキテクチャー

分岐予測

フェッチ

デコード

ループ
ストリーム
ディテクター

28 マイクロオペレーション
までキャッシュ62© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

モジュール化された設計
コ
ア

コ
ア

コ
ア

コ ア

…
L3 キャッシュ

DRAM

…

IMC

QPI

…

Power
&
Clock

QPI

アンコア

QPI

…

QPI: インテル® QuickPath
インターコネクト“アンコア”部分で差別化:
コア数

メモリー
チャネル数

QPI
リンク数

キャッシュ
サイズ

メモリー
タイプ

パワー
マネージメント機能内蔵
グラフィックス

2008 – 2009 サーバー＆デスクトップ

63© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

インテル・スマート・キャッシュ – コア・キャッシュ 3段階に分かれたキャッシュ階層
 １次キャッシュ (L1)
– 32kB命令キャッシュ– 32kBデータキャッシュ– Core2よりも1次キャッシュミスを最適化

コア
32kB 1次
32kB 1次
データキャッシュ 命令キャッシュ 2次キャッシュ (L2)
– 新たにNehalem* から導入
– 統合キャッシュ （コードとデータ）– コアごとに256kBが割り当て– 性能面： 待ち時間（=レイテンシー）を短く– 拡張性： コア数が増えても、共有キャッシュへの負担を減らす（= アクセス数を軽減）

256kB
2次キャッシュ64© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

インテル・スマート・キャッシュ – 3次キャッシュ 3次キャッシュを新たに搭載 (L3)
 すべてのコアで共有
 容量はCPUコア数によって増減

コア

コア

コア

1次キャッシュ

1次キャッシュ

1次キャッシュ– クアッドコア: 最大8MB– 拡張性:– さまざまな製品バリエーションに対応– 将来における拡張性

 性能向上のためインクルーシブ・キャッシュ方式を採用…
2次キャッシュ

2次キャッシュ

2次キャッシュ

3次キャッシュ– L1/L2内に存在するアドレスは3次キャッシュ内にも存在する

65© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

内蔵メモリーコントローラー

Integrated Memory Controller (IMC)
 メモリーコントローラーを内蔵する事でCPUごとにメモリーを最適化
 Nehalem* 最初の世代では– DDR3メモリーをサポート– ソケットあたり3チャンネルメモリーをサポート– 最高DDR3-1333までサポート– メモリー帯域幅の増大

DDR3

Nehalem*EP

Nehalem*EP– 待ち時間（=レイテンシー）を短くする設計– RDIMMとUDIMMをサポート– RAS機能の強化

 将来において
– 拡張性

DDR3

Tylersburg*EP– メモリーチャネル数– メモリースピードの強化– バッファー、アンバッファーを提供– 市場特有のニーズに対応– 大容量メモリー– グラフィックス内蔵

メモリーコントローラーを内蔵したことで大幅に性能向上
66© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

パフォーマンスとエネルギー効率の強化
SSE4.2インストラクション・セット・アーキテクチャー(ISA)

ストリングとテキスト処理の高速化

Faster XML parsing
Faster search and patternmatching
Novel parallel data
matching and comparison
operations

データマッチ処理の高速化

Improved performance for
Genome Mining,
Handwriting recognition.
Fast Hamming distance /Population count

新しい命令フォーマット

Hardware based CRC
instruction
Accelerated Network
attached storage
Improved power efficiency
for Software I-SCSI, RDMA,
and SCTP

SSE4

STTNI

(45nm CPUs)

SSE4.1(Penryn* Core)

ATA

SSE4.2(Nehalem* Core)

STTNI
e.g. XML
acceleration

ATA(Application
Targeted
Accelerators)

POPCNTe.g. Genome
Mining67© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

CRC32
e.g. iSCSIApplication

Sandy Bridge: 概要
CPU, グラフィックス, MC, PCI
Express* を1つのチップに統合

インテル® ターボ・ブースト・
テクノロジー 2.0
バンド幅の広い
ラストレベル・キャッシュインテル® HD グラフィックス

ディスプレイ・ポートを組み込み

DMI

広バンド幅/低レイテンシーのモジューラーコア/GFX 内部接続

PCI Express*

System
Agent

x16
PCIe

パフォーマンス向上を実現

IMC

Display

Core

LLC

Core

LLC

Core

LLC

Core

LLC

2ch
DDR3

インテル® アドバンスト・ベクター拡
張 （インテル® AVX）
メモリーコントローラーを統合
2 チャンネルの DDR3

Graphics

ディスクリート・グラフィックスをサポート：
1x16 もしくは 2x8

Notebook
DP PortPCH

優れたエネルギー効率

PECIInterfaceTo
EmbeddedController

インテル® ハイパー・
スレッディング・テクノロジー
4 コア / 8 スレッド
2 コア / 4 スレッド

驚くほどのパフォーマンス

68© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

マイクロアーキテクチャー概要
C0 (HT0,1)

グラフィックス・
ユニット

L1D

…

L2
C

L1I

L1D
L2
C

リング

…
LLC0

LLCn

システム・エージェント

L1I

Cn (HT0,1)

69© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

メモリー

32K
命令キャッシュ

アンコア

BPU

レガシー
デコード済
デコード
命令キャッシュ
パイプライン MSROM
μop キュー

256K L2
キャッシュ

リネーム/リタイア

32K
データ
キャッシュ

ロード
ストア (アドレス)

2
3

ストア データ

4

4

整数

0
1
5

0
1
5

MMX/SSEAVX 下位

0
1
5

X87
AVX 上位

0
1
5

2
3

コア・パイプライン
フロントエンド
OOO*

スケジューラー実行
INT / SSE / X87
レジスタースタックキャッシュ
OOO = out of order70© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

フロントエンド•

レガシー・パイプライン: 命令フェッチと μops へのデコード
­

•
•
•

デコード済命令キャッシュに格納

デコード済命令キャッシュ: 利用頻度の高い μops のキャッシュ
MSROM – 4 μops より長い命令を格納
μops はデコード済命令キャッシュもしくはデコーダーからフェッチされμop キューへ格納される­ LSD: 小さな μops のループはキューから取り込む­ μops がデコード済み命令キャッシュから提供された場合のみ••

マイクロフュージョン
­ ロード/ストア + op を 1 の μop に融合
マクロフュージョン­ 2 の連続した命令  1 μop
CMP/TEST/ADD/SUB/INC/DEC + JCC

32K
命令キャッシュ

レガシー
デコード
パイプライン

BPU

デコード済
命令キャッシュMSROM

μop キュー

71© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

デコード済み命令キャッシュの内容
セット: 0…
…31
1 セットは 8-way
1 つの way:

1 つの way は次の内容を保持できる:• 6 μops – 完全な命令• 2 の分岐• 1 非条件分岐• 1 MSROMは 1 way を消費• 長い即値を伴う μops は 2-way 消費

72© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

デコード済み命令キャッシュ•••32 セット、 8-way、1-way は 6 のエントリー
すべての命令は 32 バイト境界に配置されたチャンク
最大 3 の way を消費­ 32 バイトに配置されたチャンクは最大 18 の μops を保持

•
•
•
•
•
•
•
•

複数の μops で構成される命令は way にまたがって格納できない
way 中に 2 の分岐を格納可能
非条件分岐は way の最後の μop
長い命令（MSROM）は way 全体を消費
マイクロフュージョンされた μops （ロード/ストア +op）は、1 に扱う
マクロフュージョンされた対の命令は、1 の μop として扱う
64 バイト即値を伴う μops は、即値を保持するため 2 のスロットを利用
SMT の場合: 各スレッドは半分のセットを利用

73© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

OOO – リネーム•

μops はバックエンドでインオーダーにリソースを割り当てられる-•

各サイクルで最大 4 μops を割り当て-••

ROB、RS、ロードバッファー、ストアバッファー
集成されていない μops （base + index を伴うストア/
ロード+op）は 2 の割り当て/リタイアスロットを利用
マイクロフュージョンされた μop は、1 の割り当て/
リタイアスロットを利用するが、2 の RS および
ROB エントリーを利用

LSD ループのサイクル割り当てを終わらせて分岐
割り当て時の実行: ゼロ・イディオム、NOP、
VZEROUPPER、FXCHG

リネーム/リタイア
2
3
4
0
1
5
スケジューラーINT / SSE / X87
レジスタースタック74© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

OOO と実行•

μops は RS から OOO 実行のため
ディスパッチされる- サイクルごとに各ポートで 1 μop- ポート 0、1、5 – 演算
- ポート 2、3 – ロードとストアアドレス- ポート 4 – ストアデータ•

レジスターは 3 スタックを保持- 整数、SSE/SIMD (INT + FP)、x87- インテル® AVX 下位と SSE、インテル AVX 上位と x87•

実行が完了するとデータはスタックへ書き戻される

リネーム/リタイア

ロードストア (アドレス)

2
3

2
3

ストア データ

4

4

整数

0
1
5

0
1
5
スケジューラー

MMX/SSEAVX 下位

0
1
5

X87
AVX 上位

0
1
5

INT / SSE / X87
レジスタースタック- ポートごとに 1 の μop がライトバックできる- 異なるレイテンシーの μops は、同じスタック上のライトバック・ポートを共有できない•

異なるスタックであれば μops は衝突しない

75© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

32K
L1D

32K
L1D

32K
L1I

256K L2キャッシュ構造

アービター

メモリー

コントローラー

256K L2

32K
L1I

ラストレベル・キャッシュ

データ位置

最適なレイテンシー（サイクル）

最適なバンド幅（コアごとのサイクル）

L1 データキャッシュ4*

2 x 16 バイト

L2 キャッシュ

12

1 x 32バイト

LLC

26-31

1 x 32バイト

利用可能な他のコアの L2 と L1
データキャッシュ

43 – クリーンヒット
60 – ダーティーヒット

76© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

インテル® アドバンスト・ベクトル・エクステンション（インテル® AVX）
•

•
•
•

•

32 バイト浮動小数点ベクトル拡張­ 8 個の 4 バイト（単精度）浮動小数点要素を操作­ 4 個の 8 バイト（倍精度） 浮動小数点要素を操作­ 新しい 16 個の 32 バイト YMM レジスター（XMM レジスターの拡張）
16 バイトの浮動小数点および整数ベクトル拡張
非破壊ソース – NDS­ SRC2 と DEST は異なる
「ロード + op」 はアライメントされていないアドレスをアクセスできる­ コードサイズを縮小­ 少ない μops （マイクロオペレーション）
インテル® AVX における 16  32 バイトの移行はコストなし­ 32 バイトのインテル® AVX  インテル® ストリーミング SIMD 拡張
命令（インテル® SSE）間の移行は高価

77© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

まとめ
プロセッサーのマイクロアーキテクチャーを知ることで、ソフトウェアをさらに高速に動作させることが可能になるプロセッサーのマイクロアーキテクチャーは、ほぼ 2 年に 1度改良される

78© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

最適化に関する注意事項
インテル® コンパイラー、関連ライブラリーおよび関連開発ツールには、インテル製マイクロプロセッサーおよび互換マイクロプ
ロセッサーで利用可能な命令セット（ SIMD 命令セットなど） 向けの最適化オプションが含まれているか、あるいはオプションを利用している可能性がありますが、両者では結果が異なります。また、インテル® コンパイラー用の特定のコンパイラー・オプ
ション（ インテル® マイクロアーキテクチャーに非固有のオプションを含む） は、インテル製マイクロプロセッサー向けに予約されています。これらのコンパイラー・オプションと関連する命令セットおよび特定のマイクロプロセッサーの詳細は、『インテル®
コンパイラー・ユーザー・リファレンス・ガイド』の「コンパイラー・オプション」を参照してください。インテル® コンパイラー製品のライブラリー・ルーチンの多くは、互換マイクロプロセッサーよりもインテル製マイクロプロセッサーでより高度に最適化されます。
インテル® コンパイラー製品のライブラリー・ルーチンの多くは、互換マイクロプロセッサーよりもインテル製マイクロプロセッ
サーでより高度に最適化されます。インテル® コンパイラー製品のコンパイラーとライブラリーは、選択されたオプション、コード、
およびその他の要因に基づいてインテル製マイクロプロセッサーおよび互換マイクロプロセッサー向けに最適化されますが、イ
ンテル製マイクロプロセッサーにおいてより優れたパフォーマンスが得られる傾向にあります。
インテル® コンパイラー、関連ライブラリーおよび関連開発ツールは、互換マイクロプロセッサー向けには、インテル製マイクロプロセッサー向けと同等レベルの最適化が行われない可能性があります。これには、インテル® ストリーミング SIMD 拡張命
令 2（ インテル® SSE2）、インテル® ストリーミング SIMD 拡張命令 3（ インテル® SSE3）、ストリーミング SIMD 拡張命
令 3 補足命令 (SSSE3) 命令セットに関連する最適化およびその他の最適化が含まれます。
インテルでは、インテル製ではないマイクロプロセッサーに対して、最適化の提供、機能、効果を保証していません。本製品のマイクロプロセッサー固有の最適化は、インテル製マイクロプロセッサーでの使用を目的としています。インテルでは、インテル®
コンパイラーおよびライブラリーがインテル製マイクロプロセッサーおよび互換マイクロプロセッサーにおいて、優れたパフォーマ
ンスを引き出すのに役立つ選択肢であると信じておりますが、お客様の要件に最適なコンパイラーを選択いただくよう、他のコンパイラーの評価を行うことを推奨しています。インテルでは、あらゆるコンパイラーやライブラリーで優れたパフォーマンスが引き出され、お客様のビジネスの成功のお役に立ちたいと願っております。お気づきの点がございましたら、お知らせください。
改訂 #20110307

80© 2011 Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 ＊その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。