コンピュータアーキテクチャの論文を読んでいたのだが、どうもよく知らない項目がある。 よく考えてみたらコンピュータアーキテクチャの最新トレンドも含め最近勉強量が不足していたので、ここらへんでもう一度復習しておきたい。 せっかくなので海外の大学の講義資料を読んでみよう。
- Advanced Computer Architecture
https://www.ece.ucsb.edu/~strukov/ece154BSpring2018/home.htm
せっかくなのでまとめていく。
目次
- 1. 半導体のトレンドと背景
- 2.半導体の性能向上
- 3.半導体の性能向上
- 4. キャッシュ階層
- 5. キャッシュ階層
- 6. 高度なキャッシュ最適化
- 7. ILPの向上テクニック
- 8. ILPの向上テクニック, Tomasuloのアルゴリズム
- 9. 分岐予測
- 10. 複数命令発行の技術
性能向上に関する問題
- 問題:なぜこれほどまでの性能向上を達成することができたのか?
- 解答:ムーアの法則によりクロック周波数が向上した。
デナードスケーリング
- トランジスタと配線のサイズが倍小さくなったとする。
- 電力が倍小さくなったとする。
結果
動作周波数の向上
問題:1986年に何が起きたのか?なぜ性能向上率が変化したのか?
設計 | IC:命令数 | CPI:Clocks Per Instructions | CCT: Clock Cycle Time |
---|---|---|---|
単一サイクル設計(SC) | 1 | 1 | 1 |
複数サイクル設計 | 1 | N >= CPI > 1 | > 1/N |
複数サイクルパイプライン | 1 | > 1 | > 1/N |
問題:
パイプライン化により性能が向上する(命令をオーバラップさせることによりサイクル当たりに実行できる命令数が向上する)が、ILPを向上させるにあたり障壁となるのは何か?
「メモリの壁」の問題
- DRAMアクセスには数百サイクル必要である。
- したがって、メインメモリへのアクセスを抑制して効率的にメモリアクセスを実行する手法が必要である。
- 解答2:データおよび制御ハザードの存在(パイプラインストールとフラッシュ)
様々なILPを向上させる技法
技法 | 効果 |
---|---|
フォワーディングとバイパッシング | データハザードによるストールを抑制する。 |
遅延分岐と簡単な分岐のスケジューリング | 制御ハザードのストールを抑制する。 |
コンパイラによる基本的なパイプラインスケジューリング | データハザードによるストールを抑制する。 |
動的なスケジューリング(スコアボーディング) | 真の依存関係によるデータハザードストールを抑制する。 |
ループアンローリング | 制御ハザードによるストールを抑制する。 |
分岐予測 | 制御ストールを抑制する。 |
リネーミングによる動的スケジューリング。 | データハザードによるストール、出力依存、逆依存によるストールを抑制する。 |
ハードウェア投機実行 | データハザードと制御ハザードストールを抑制する。 |
動的メモリ曖昧性解消 | メモリによるデータハザードのストールを抑制する。 |
サイクル当たりに複数の命令を発行する。 | CPIを向上させる。 |
コンパイラにより依存関係を解析する。ソフトウェアパイプライン、トレーススケジューリング | CPIを向上させる。データハザードのストールを抑制する。 |
コンパイラの投機実行のためのハードウェアサポート | CPIの向上、データハザードのストールを抑制、分岐ハザードのストール。 |