Open6

「コンピュータアーキテクチャ技術入門」の読書メモ

yuji38kwmtyuji38kwmt

2.5 プロセッサの高速か技術

スーパースカラ実行

  • スーパースカラプロセッサ:毎サイクル複数命令実行
  • 初期は整数演算命令と浮動小数点演算命令は並列で実行できる

Out-of-Order実行

  • 真の依存性
  • ハードウェアのやりやすい実行順序に変更
  • リザベーションステーション
  • レジスタリネーミング
    • 論理レジスタを物理レジスタに割り当てる
    • 構成の例32個の論理レジスタに対して48個の物理レジスタを持つ
      • → 物理レジスタの方が多い。

条件分岐予測

  • 空きサイクルを減らすための方法

分岐予測とループの回数

  • 条件分岐のアドレスより前方に分岐する場合は成立

    • → 分からなかった。
  • 2ビット飽和カウント

    • →なんとなく分かったけど完全には分かっていない。「条件が成立して分岐が成立」とはたとえば不forループだと、ループが続く方なのかそれともループが抜ける方なのか?
    • →なぜ13bit必要なのかが分からない。「カウンタが入り混じる」が分からない。
  • ローカル履歴

    • 過去のNot Take, Takenの履歴を記憶する
    • → 全然分からなかった

リターンアドレススタック

  • CALL命令の次命令のアドレスは必ずRETURN命令のジャンプ先

BTB(Branch Target BUffer)

  • → なんとなく分かったような気がするが。。。

yuji38kwmtyuji38kwmt

プリフェッチ

  • ネクストラインプリフェッチ
  • ストライドプリフェッチ
  • ソフトウェアプリフェッチ
    • プリフェッチ命令

可変長命令をRISC命令に分解して実行

  • 固定長の命令に変換すると、パイプライン命令を効率よく処理できる
  • Intel μOP
yuji38kwmtyuji38kwmt

2.6章

性能を引き出すプログラミング

  • C言語の2次元配列は列方向の順にメモリが格納される
  • →構造体の配列は、コンパイラがよしなにやってくれないのだろうか?キャッシュラインの有効利用はどの程度メリットがあるのか?
  • 割り算は時間がかかる。
    • →なぜ?
  • 割り算はパイプライン処理ができない
    • →なぜ?
  • →性能を意識してプログラミングすると、可読性の低いコードになりそう。ここまでシビアに考えるときは、どういうときだろうか?
yuji38kwmtyuji38kwmt

2.7章 マルチプロセス

  • メモリ管理機構(MMU)
  • セグメント方式
    • 断片化が問題になる
  • ページ方式が採用されている
    • 断片化は起こらない
    • ページテーブルはプロセスごとに作られる
  • ページテーブルは、ページテーブル専用のキャッシュメモリに置かれる。TLB(Translation Lookaside Buffer)によってアドレスを変換する
  • ラージページもサポートしている