08. メモリ非曖昧化 五島 正裕.

Slides:



Advertisements
Similar presentations
プロセッサの設計と実装 後期実験 プロセッサの設計と実装 1 コンピュータの論理設計 「コンピュータを作る」 –仕様設計 –論理設計 –回路・レイアウト –物性・デバイス 後期実験 プロセッサの設計と実装 2 この実験では 課題として IA-32 サブセット仕様が与えられる 各自 RTL 設計 →
Advertisements

CPU設計と パイプライン.
計算機システムⅡ 命令レベル並列処理とアウトオブオーダ処理
07. 値予測 五島 正裕.
07. 値予測 五島 正裕.
基本情報技術概論(第10回) 埼玉大学 理工学研究科 堀山 貴史
高性能コンピューティング学講座 三輪 忍 高性能コンピューティング論2 高性能コンピューティング論2 第4回 投機 高性能コンピューティング学講座 三輪 忍
CPU実験 第1回中間発表 4班 瀬沼、高橋、津田、富山、張本.
情報工学基礎(改訂版) 岡崎裕之.
坂井 修一 東京大学 大学院 情報理工学系研究科 電子情報学専攻 東京大学 工学部 電気工学科
坂井 修一 東京大学 大学院 情報理工学系研究科 電子情報学専攻 東京大学 工学部 電気工学科
2012年度 計算機システム演習 第4回 白幡 晃一.
コンパイラ演習 第 9 回 (2011/12/08) 中村 晃一 野瀬 貴史 前田 俊行 秋山 茂樹 池尻 拓朗 鈴木 友博 渡邊 裕貴
オリジナルなCPUの開発 指導教授:笠原 宏 05IE063 戸塚 雄太 05IE074 橋本 将平 05IE089 牧野 政道
App. A アセンブラ、リンカ、 SPIMシミュレータ
ソフトウェアとのインターフェース.
計算機システムⅡ 命令セットアーキテクチャ
プログラムの動作を理解するための技術として
プロセッサ設計教育のための 命令セット・スーパースカラシミュレータの試作と評価
Ibaraki Univ. Dept of Electrical & Electronic Eng.
第3回 CPUの管理と例外処理 OSによるハードウェアの管理 CPUの構成、動作 CPUの管理 例外処理、割り込み処理 コンテキストスイッチ
高性能コンピューティング論2 第5回 Out-of-Order実行機構
基本情報技術概論(第8回) 埼玉大学 理工学研究科 堀山 貴史
7. 順序回路 五島 正裕.
8. 順序回路の簡単化,機能的な順序回路 五島 正裕.
演算/メモリ性能バランスを考慮した マルチコア向けオンチップメモリ貸与法
第7回 2006/6/12.
計算機入門I ハードウェア(1) 計算機のハードウェア構成 ~計算機のハードウェアとは何か~
二分探索木によるサーチ.
型付きアセンブリ言語を用いた安全なカーネル拡張
Advanced Computer Architecture
計算機システム 第1回 2006/04/22.
・ディジタル回路とクロック ・プロセッサアーキテクチャ ・例外処理 ・パイプライン ・ハザード
プロジェクト実習 LSIの設計と実現 パイプライン実行とハザード.
アドバンスト コンピュータ アーキテクチャ RISC と 命令パイプライン
坂井 修一 東京大学 大学院 情報理工学系研究科 電子情報学専攻 東京大学 工学部 電気工学科
勉強会その3    2016/5/1 10 8分35秒 データの表現 演算.
11. マルチスレッド・プロセッサ 五島 正裕.
動的依存グラフの3-gramを用いた 実行トレースの比較手法
計算機システム 第2回 2011/05/02(月) 「コンピュータ・アーキテクチャへのいざない」
Advanced Computer Architecture
Advanced Computer Architecture
Advanced Computer Architecture
ディジタル回路の設計と CADによるシステム設計
メモリ投機を支援する CMPキャッシュコヒーレンスプロトコルの検討
計算機構成 第3回 データパス:計算をするところ テキスト14‐19、29‐35
計算機構成 第4回 アキュムレータマシン テキスト第3章
計算機構成 第5回 RISCの命令セットアーキテクチャ テキスト第4章
C言語を用いたマシン非依存な JITコンパイラ作成フレームワーク
情報とコンピュータ 静岡大学工学部 安藤和敏
先週の復習: CPU が働く仕組み コンピュータの構造 pp 制御装置+演算装置+レジスタ 制御装置がなければ電卓と同様
コンピュータアーキテクチャ 第 11 回.
09. メモリ・ディスアンビギュエーション 五島 正裕.
JAVAバイトコードにおける データ依存解析手法の提案と実装
坂井 修一 東京大学 大学院 情報理工学系研究科 電子情報学専攻 東京大学 工学部 電気工学科
コンピュータアーキテクチャ 第 9 回.
コンピュータアーキテクチャ 第 2 回.
計算機アーキテクチャ1 (計算機構成論(再)) 第一回 計算機の歴史、基本構成、動作原理
コンピュータアーキテクチャ 第 2 回.
Mondriaan Memory Protection の調査
コンピュータアーキテクチャ 第 5 回.
コンピュータアーキテクチャ 第 9 回.
コンピュータアーキテクチャ 第 5 回.
コンピュータアーキテクチャ 第 11 回.
ディジタル回路 8. 機能的な順序回路 五島 正裕.
コンピュータ工学基礎 マルチサイクル化とパイプライン化 テキスト9章 115~124
回帰テストにおける実行系列の差分の効率的な検出手法
情報システム基盤学基礎1 コンピュータアーキテクチャ編
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
情報システム基盤学基礎1 コンピュータアーキテクチャ編
Presentation transcript:

08. メモリ非曖昧化 五島 正裕

内容 データ依存 メモリ非曖昧化 ストア・セット・メモリ依存予測器

データ依存

データ依存 Write add r4 = r1 + r2 add r5 = r4 + r3 Read 制御駆動型 (control-driven) (⇔ データ駆動,data-driven) 命令間のデータの授受は, プログラム・オーダ上で,先行/後続の関係にある2命令が, 同一のロケーションを参照する ことで表現 ロケーション:レジスタ と メモリ Write add r4 = r1 + r2 add r5 = r4 + r3 Read

データ依存 Ip Ip Is Is Ip Ip Is Is 入力依存 (input) 逆依存 (anti) フロー依存 (flow) Read Write 先行命令 Ip 入力依存 (input) 逆依存 (anti) フロー依存 (flow) 出力依存 (output) Ip Ip Is Is time time Ip Ip Is Is time time

ロード/ストア命令 op Rs Rt immediate ロード命令 r[Rt] = *(r[Rs] + immediate); ストア命令 *(r[Rs] + immediate) = r[Rt]; op Rs Rt immediate 31 25 20 15

レジスタとメモリの違い レジスタ番号 静的 (実行の度に)変わらない フロントエンド(デコード・ステージ)で分かる メモリのアドレス 動的 実行の度に変わり得る バックエンド(アドレス計算(実行)ステージ)で初めて分かる:「曖昧」

メモリの曖昧性による偽の依存 偽の依存: 先行するストアのアドレスが計算されるまで, 後続のロード/ストアは 原則 実行できない 「計算したら違ってた」

コード例 f (int* a, int* b, int* x, int* y) { *x = *a * *a; *y = *b * *b; } x == b ? ld r1 = *(sp + 0) // a ld r1 = *r1 ld r2 = *(sp + 16) // x mul r1 = r1 * r1 st *r2 = r1 ld r3 = *(sp + 8) // b ld r3 = *r3 ld r4 = *(sp + 24) // y mul r3 = r3 * r3 st *r4 = r3 ret

解決法 防止(予防,prevention): ロード/ストアは in-order で 発見 & 回復 (detection & recovery): 依存なしと予測して out-of-order で メモリ・オーダ違反 (memory-order violation) を発見 0~7% のロードがメモリ・オーダ違反 ⇒ ペナルティ 理想 (ideal, oracle): IPC 最大2倍

IPC 2倍の理由 「計算のかたまりがオーバラップする」 「計算のかたまりは,ロードではじまり,ストアで終わる」 「真のメモリ・データ依存がクリティカルになるようなコードは,  最適化されてない?」 目標: ロードを,特に早期に実行したい (ストアは,そんなでもない) コンパイラより上手にできる

オーバラップ実行 ILP (Inst Level Parallelism) ILP ld ld ld st st ld st st

メモリ非曖昧化 (memory disambiguation)

メモリ・ディスアンビギュエーション ディスアンビギュエーション (disambiguation): 「非曖昧化」,「曖昧性除去(解消)」 分離 (split) ロード/ストア アドレス予測 アドレス一致/不一致予測

ロード/ストア命令 op Rs Rt immediate 通常のロード/ストア命令: アドレス計算部 メモリ・アクセス部 ロード命令 : r[Rt] = *(r[Rs] + immediate); ストア命令: *(r[Rs] + immediate) = r[Rt]; op Rs Rt immediate 31 25 20 15

分離ロード/ストア (split load/store) 通常のロード/ストア命令: アドレス計算部 メモリ・アクセス部 分離ロード/ストア: ディスパッチ時に分離,以降 2つの命令としてスケジューリング 効果: ストア・バリューがなくても,アドレス計算が開始できる バリューより,アドレスが早く決まることが多い ロードは変わらない バリューに相当するソース・オペランドがないから

ロード/ストア命令 普通の ISA のロード/ストア命令: 非分離 (non-split) を想定 理由: パイプライン・マシンで,ALU でアドレス計算をすることを想定 コード効率の改善(命令の圧縮) 非 RISC 的?

IF 100 PC IR Rs 200 100 8 1 2 ID Rt 104 1 2 3 Reg File EX 208 1000 MEM * 07/16/96 IF 100 PC IR Rs 200 100 8 ld 1 2 ID Rt 104 1 add 2 3 Reg File EX 208 1000 MEM DR MDR MA MD Main Memory WB *

アドレス予測 ロード/ストアのアドレスを予測 単純にロードを早期実行する効果 非曖昧化の効果 値予測の一種 だが,値予測より歴史が古い メモリ・アクセスがストライドであることは容易に想像できる

ハードウェア 今までの方法: 分離ロード/ストア アドレス予測 実際にアドレスの一致検出を行う スケジューリングのために,比較器のマトリクス(行列)が必要! 比較器数 ≒ ½ ×(ウィンドウ・サイズ)2 もう1つの方法: アドレス一致/不一致予測

比較器のマトリクス 先行命令 =? rdy L/S Valid Load ― 1 Store = ≠ 1 2 old effective 1 2 old effective address L/S V 先行命令 =? rdy L/S Valid Load ― 1 Store = ≠ 1 2 3 new

ストア・セット・メモリ依存予測器

ストア・セット あるロードのストア・セットとは: そのロードが依存したことがあるストアの集合 計算の方法:recovery-based 最初「依存していない」としておいて, オーダ違反 (memory-order violation) を検出して,追加 利用の方法: ロードは,そのストア・セット内のストアに依存すると予測

予測器の実装 原理的には: ストア・セット内のすべてのストアが実行された後でロードを実行 実装上の制限: ストア・セット内のストアは in-order で実行 In-order チェイン: ストア → ストア → … → ストア → ロード

PC of Fetched Instructions 構造と動作 SSID Table Last Fetched Store Table SSID X S1 S SSID X S2 S S1 S2 X L L SSID X PC of Fetched Instructions SSID : Store Set ID

Recovery-Based ストア・セットの計算の方法:recovery-based 最初「依存していない」としておいて, オーダ違反 (memory-order violation) を検出して,追加 Violation の検出: 比較器数 ≒(ウィンドウ・サイズ)×(発行幅) 「教訓」: 厳密にやるより,いい加減にやったほうがうまくいく(こともある)

比較器のアレイ 先行命令 =? rdy L/S Valid Load ― 1 Store = ≠ old effective address = ≠ 1 2 3 new

今日のまとめ

メモリ・データ依存 データ依存: レジスタ メモリ メモリのデータ依存: 動的 アドレス計算しないと分からない:「曖昧」

メモリ参照の曖昧性による偽の依存 ストアのアドレスが決まるまで,後続のロード/ストアは実行できない 保守的 (conservative) な方法: ロード/ストアは in-order で ロードは,特に早期に実行したい 「計算のかたまりは,ロードではじまり,ストアで終わる」 ストアは,そんなでもない 真のメモリ・データ依存がクリティカルであるようなプログラムは, 最適化されてない?

ディスアンビギュエーション ディスアンビギュエーション(非曖昧化,曖昧性除去,解消) 分離ロード/ストア アドレス予測 アドレス一致/不一致予測 ストア・セット依存予測器