09. メモリ・ディスアンビギュエーション 五島 正裕.

Slides:



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

CPU設計と パイプライン.
計算機システムⅡ 命令レベル並列処理とアウトオブオーダ処理
07. 値予測 五島 正裕.
07. 値予測 五島 正裕.
基本情報技術概論(第10回) 埼玉大学 理工学研究科 堀山 貴史
VLSI設計論第4回 アキュムレータマシンと 仮遅延シミュレーション
榮樂 英樹 LilyVM と仮想化技術 榮樂 英樹
LZ圧縮回路の設計とハード・ソフト 最適分割の検討 電子情報デザイン学科 高性能計算研究室 4回生 中山 和也 2009/2/27.
10. メモリ 五島 正裕.
計算機システムⅡ 主記憶装置とALU,レジスタの制御
高性能コンピューティング学講座 三輪 忍 高性能コンピューティング論2 高性能コンピューティング論2 第4回 投機 高性能コンピューティング学講座 三輪 忍
CPU実験 第1回中間発表 4班 瀬沼、高橋、津田、富山、張本.
情報工学基礎(改訂版) 岡崎裕之.
坂井 修一 東京大学 大学院 情報理工学系研究科 電子情報学専攻 東京大学 工学部 電気工学科
2012年度 計算機システム演習 第4回 白幡 晃一.
コンパイラ演習 第 9 回 (2011/12/08) 中村 晃一 野瀬 貴史 前田 俊行 秋山 茂樹 池尻 拓朗 鈴木 友博 渡邊 裕貴
オリジナルなCPUの開発 指導教授:笠原 宏 05IE063 戸塚 雄太 05IE074 橋本 将平 05IE089 牧野 政道
App. A アセンブラ、リンカ、 SPIMシミュレータ
計算機システムⅡ 命令セットアーキテクチャ
プロセッサ設計教育のための 命令セット・スーパースカラシミュレータの試作と評価
高性能コンピューティング論2 第1回 ガイダンス
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
・ディジタル回路とクロック ・プロセッサアーキテクチャ ・例外処理 ・パイプライン ・ハザード
プロジェクト実習 LSIの設計と実現 パイプライン実行とハザード.
アドバンスト コンピュータ アーキテクチャ RISC と 命令パイプライン
非レイテンシ指向 レジスタ・キャッシュ・システム
坂井 修一 東京大学 大学院 情報理工学系研究科 電子情報学専攻 東京大学 工学部 電気工学科
勉強会その3    2016/5/1 10 8分35秒 データの表現 演算.
11. マルチスレッド・プロセッサ 五島 正裕.
計算機システム 第2回 2011/05/02(月) 「コンピュータ・アーキテクチャへのいざない」
コンピュータ系実験Ⅲ 「ワンチップマイコンの応用」 第1週目 アセンブリ言語講座
Advanced Computer Architecture
Advanced Computer Architecture
第6回 6/4/2011 状態遷移回路とシングルサイクルCPU設計
Advanced Computer Architecture
ディジタル回路の設計と CADによるシステム設計
メモリ投機を支援する CMPキャッシュコヒーレンスプロトコルの検討
計算機構成 第3回 データパス:計算をするところ テキスト14‐19、29‐35
計算機構成 第4回 アキュムレータマシン テキスト第3章
08. メモリ非曖昧化 五島 正裕.
情報とコンピュータ 静岡大学工学部 安藤和敏
コンピュータアーキテクチャ 第 11 回.
コンピュータアーキテクチャ 第 10 回.
JAVAバイトコードにおける データ依存解析手法の提案と実装
坂井 修一 東京大学 大学院 情報理工学系研究科 電子情報学専攻 東京大学 工学部 電気工学科
Ibaraki Univ. Dept of Electrical & Electronic Eng.
コンピュータアーキテクチャ 第 9 回.
コンピュータアーキテクチャ 第 10 回.
コンピュータアーキテクチャ 第 2 回.
計算機アーキテクチャ1 (計算機構成論(再)) 第一回 計算機の歴史、基本構成、動作原理
コンピュータアーキテクチャ 第 2 回.
Mondriaan Memory Protection の調査
コンピュータアーキテクチャ 第 5 回.
コンピュータアーキテクチャ 第 9 回.
コンピュータアーキテクチャ 第 5 回.
コンピュータアーキテクチャ 第 11 回.
ディジタル回路 8. 機能的な順序回路 五島 正裕.
コンピュータ工学基礎 マルチサイクル化とパイプライン化 テキスト9章 115~124
回帰テストにおける実行系列の差分の効率的な検出手法
情報システム基盤学基礎1 コンピュータアーキテクチャ編
Presentation transcript:

09. メモリ・ディスアンビギュエーション 五島 正裕

内容 データ依存 メモリ・ディスアンビギュエーション ストア・セット・メモリ依存予測器

データ依存

データ依存 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

データ依存 入力依存 (input) 逆依存 (anti) フロー依存 (flow) 出力依存 (output) Ip Ip Is Is 後 続 命 令 Read Write 先行命令 入力依存 (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

レジスタとメモリ レジスタ番号 静的 デコード・ステージで分かる メモリのアドレス 動的 アドレス計算(実行)ステージで初めて分かる:「曖昧」

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

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

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

メモリ・ディスアンビギュエーション

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

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

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

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

IF 100 200 LD 1 2 10 100 5 ID EX 1000 210 MEM WB PC IR Rs Rt Reg File Rs 200 LD 1 2 10 100 5 ID Rt Reg File EX 1000 210 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 チェイン: ストア → ストア → … → ストア → ロード

構造と動作 SSID X S1 S SSID X S2 S S1 S2 X L L SSID X SSID Table Last Fetched Store Table SSID X S1 S SSID X S2 S S1 S2 X L L SSID X Instruction Window 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 で ロードは,特に早期に実行したい 「計算のかたまりは,ロードではじまり,ストアで終わる」 ストアは,そんなでもない 真のメモリ・データ依存がクリティカルであるようなプログラムは,最適化されてない?

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

今後の予定 7/ 5 マルチスレッド・プロセッサ 7/12 ベクトル処理 ベクトル型計算機 SIMD 命令セット 7/19 7/26