🌊

コンピュータアーキテクチャ入門【ヘネシー&パターソン】

2020/10/14に公開

コンピュータアーキテクチャについて、名著である「ヘネシー&パターソン コンピュータアーキテクチャ 定量的アプローチ」を読んでみました。(1.7章まで)

試し読みで見れる範囲の内容と、個人的な追記メモ程度となります。

詳細や深堀はぜひ参考情報先をご覧ください。

ヘネシー&パターソン コンピュータアーキテクチャ 定量的アプローチ 第4版

1章 計算機設計の基礎

1.1 はじめに
1.2 コンピュータのクラス
1.3 コンピュータアーキテクチャを定義する
1.4 実装テクノロジのトレンド
1.5 半導体の電力のトレンド
1.6 コストのトレンド
1.7 ディペンダビリティ(dependability)
---☝本日ここまで---
1.8 性能の測定、報告、整理の方法
1.9 計算機設計の定量的な原則
1.10 総合的な実例:性能と価格性能比
1.11 誤った考えと落し穴
1.12 おわりに
1.13 歴史的展望と参照事項
演習問題付きケーススタディ(Diana Franklin)

2章 命令レベル並列性とその活用

2.1 命令レベル並列性:概念とチャレンジ
2.2 命令レベル並列性を見出すための基本的なコンパイラ技術
2.3 予測による分岐コストの削減
2.4 動的スケジューリングによるデータハザードの克服
2.5 動的スケジューリング:例題とアルゴリズム
2.6 ハードウェアベースの投機処理
2.7 多重命令発行と静的スケジューリングを用いた命令レベル並列性の抽出
2.8 動的スケジューリング、多重命令発行および投機処理を用いた命令レベル並列性の抽出
2.9 命令供給と投機処理のための高度な技術
2.10 総合的な実例:Intel Pentium 4
2.11 誤った考えと落し穴
2.12 おわりに
2.13 歴史的展望と参照事項
演習問題付きケーススタディ(Robert P. Colwell)

3章 命令レベル並列性の上限

3.1 はじめに
3.2 ILPの上限
3.3 実現可能なプロセッサでのILPの上限
3.4 他の章との関連:「ハードウェアによる投機」対「ソフトウェアによる投機」
3.5 マルチスレッディング:スレッドレベル並列性抽出のためのILPサポートの利用
3.6 総合的な実例:先端的多重命令発行プロセッサでの性能と効率
3.7 誤った考えと落し穴
3.8 おわりに
3.9 歴史的展望と参照事項
演習問題付きケーススタディ(Wen-mei W. HwuとJohn W. Sias)

4章 マルチプロセッサとスレッドレベル並列性

4.1 はじめに
4.2 対称型共有メモリアーキテクチャ
4.3 対称型共有メモリマルチプロセッサの性能
4.4 分散共有メモリとディレクトリベースコヒーレンス制御
4.5 同期:その基本
4.6 メモリコンシステンシモデル:導入
4.7 他の章との関連
4.8 総合的な実例:Sun T1マルチプロセッサ
4.9 誤った考えと落し穴
4.10 おわりに
4.11 歴史的展望と参照事項
演習問題付きケーススタディ(David A. Wood)

5章 メモリ階層の設計

5.1 はじめに
5.2 キャッシュの性能向上のための11のより進んだ改良法
5.3 メモリ技術と最適化
5.4 保護:仮想記憶と仮想マシン
5.5 他の章との関連:記憶階層の設計
5.6 総合的な実例:AMD Opteronの記憶階層
5.7 誤った考えと落し穴
5.8 おわりに
5.9 歴史的展望と参照事項
演習問題付きケーススタディ(Norman P. Jouppi)

6章 ストレージシステム

6.1 はじめに
6.2 ディスク記憶装置の最近の動向
6.3 実際の欠陥と障害の定義と例
6.4 I/O性能、信頼性の測定およびベンチマーク
6.5 待ち行列理論入門
6.6 他の章との関連
6.7 I/Oシステムの設計と評価:インターネットアーカイブクラスタの例
6.8 総合的な実例:NetApp FAS6000ファイラ
6.9 誤った考えと落し穴
6.10 おわりに
6.11 歴史的展望と参照事項
演習問題付きケーススタディ(Andrea C. Arpaci-Dusseau、Remzi H. Arpaci-Dusseau)

付録 A パイプライン処理:基本および中間的な概念

A.1 はじめに
A.2 パイプライン処理の主要な障害:パイプラインハザード
A.3 パイプラインの実装法
A.4 何がパイプラインの実装を困難にするのだろう?
A.5 複数サイクル演算を扱うためのMIPSパイプライン拡張
A.6 総合的な実例:MIPS R4000パイプライン
A.7 他の章との関連
A.8 誤った考えと落し穴
A.9 おわりに
A.10 歴史的展望と参照事項

付録 B 命令セットの原理と例

B.1 はじめに
B.2 命令セットアーキテクチャの分類
B.3 メモリアドレッシング
B.4 オペランドタイプとオペランドサイズ
B.5 命令セットにおける命令操作
B.6 制御のための命令
B.7 命令セットのエンコード
B.8 他の章との関連:コンパイラの役割
B.9 他の章との関連:MIPSアーキテクチャ
B.10 誤った考えと落し穴
B.11 おわりに
B.12 歴史的展望と参照事項

付録 C 記憶階層の復習

C.1 はじめに
C.2 キャッシュの性能
C.3 6つの基本的なキャッシュ改良法
C.4 仮想記憶
C.5 仮想記憶の保護とその例
C.6 誤った考えと落し穴
C.7 おわりに
C.8 歴史的展望と参照事項

CD-ROM収録付録

付録 D 組み込みシステム
付録 E 相互結合網
付録 F ベクトルプロセッサ
付録 G VLIW・EPIC向けハードウェアとソフトウェア
付録 H 大規模マルチプロセッサと科学技術アプリケーション
付録 I コンピュータの演算法
付録 J さまざまな命令セットアーキテクチャ
付録 K 歴史的視点と参考文献

ヘネシー&パターソン コンピュータアーキテクチャ 定量的アプローチ 第5版 - ジョン・L・ヘネシー, デイビッド・A・パターソン - Google ブックス

☝本書(※5版)の試し読み

本書の中での注目ポイントは太字と、結論、例題

【★】:個人の追記メモ

※数式はTeX記法:Qiitaの数式チートシート - Qiita

計算機設計の基礎

1.1 はじめに

  • ポイント

    • 1980年代のはじめに、単純な命令を持つ新しいアーキテクチャのグループであるRISC(Reduced Instruction Set Computer)が発展
      • 【★】CISC:何かをやらせる時の命令が難しい、RISC:簡単な命令
        • x86は命令セットはCISCだが、中ではRISCに変換=RISCの方が性能が上がる
          intelはCISCをやめたいが資産があるので、変換
        • 周波数も物理的に上がらなくなり、周波数毎に実行できる命令を増やす=ILP
          • しかし、それも限界があり、並列化の流れに
    • RISCベースマシンの2つの重要な性能向上技術
      • 命令レベルの並列性(ILP)の利用(初期はパイプラインを通じて、後に命令の同時発行)
    • キャッシュの利用(初期は単純な形で、後に洗練された構成方式と最適化)
    • Intelは、x86(またはIA-32)命令をRISCライクな命令に内部的に変換することで、RISCデザインで開発された多くの技術を取り入れることで性能向上
    • 1990年代後半、利用可能なトランジスタ数が膨大になったため、複雑なx86アーキテクチャを変換するハードウェアのコストは無視できるようになった
    • 2002年以降のプロセッサ性能向上低下の3つの理由
      • 空冷チップの最大消費電力
      • 有効利用可能な命令レベル並列性がほとんど残っていないこと
      • メモリの遅延がほとんど変化しないこと
    • Intelは、高い性能を実現する道は単独のプロセッサを高速化するよりも、チップ上に複数のプロセッサを設けることと宣言(IBMやSunと同じ路線)
    • 命令レベル並列性(ILP)だけに頼るものから、スレッドレベル並列性(TLP)またはデータレベル並列性(DLP)への転換
      • プログラマが考慮せずとも、コンパイラとハードウェアが勝手に協調してILPを利用してくれたのに対し、TLPとDLPは性能向上のためには、並列性を明示したコードを書く必要がある
    • 「ヘネシー&パターソン コンピュータアーキテクチャ 定量的アプローチ 第4版」(本書)の内容
      • 解説するもの
        • 20世紀に飛躍的に性能向上したアーキテクチャ上のアイデアとコンパイラ技法
        • 劇的な変化の理由
        • 21世紀におけるアーキテクチャ像とコンパイラへ向けての課題
        • 今の時点で有望そうなアプローチ
      • 中心となっているもの
        • プログラムについての経験的な観察、実験、ツールとしてのシミュレーションによるコンピュータの設計と解析への定量的なアプローチ
  • 結論

    • 本書で説明する定量的なアプローチは、並列性を意識しない以前のコンピュータでうまくいったのと同様に、並列性を明示するコンピュータでも有効に働くであろうもの

1.2 コンピュータのクラス

  • ポイント

    • システム設計において重要な項目
      • デスクトップ
        • 価格性能比
        • グラフィックス性能
      • サーバ
        • スループット
        • 可用性
        • スケーラビリティ
      • 組み込み
        • 価格
        • 消費電力
        • 特定用途の性能(リアルタイム性能実行等)
  • 【★】IOT等で組み込みの部分が大きく

    • 現在はこういった分類はしない→モバイルが大きくなった
    • 【★】サーバの電力も無視できなくなっている
    • 【★】サーバはダウンした時の損害が大きい(サービスによる)
    • 【★】メインフレームからx86に移行してきた(東証)
      • x86の方がオープンなので、メーカに依存しない
      • 業種でひいきのメーカ無し
  • 結論

    • コンピュータクラスによって異なる顧客が重要視することは、設計者にとっても重要
      =トレンドを追う(標準で必要な機能を実現する最小構成を知る)

1.3 コンピュータアーキテクチャを定義する

  • ポイント

    • コンピュータの設計作業の側面
      • 命令セットの設計、機能の構成、論理設計、実装(ICデザイン、パッケージング、消費電力、冷却を含む)
    • 設計最適化に必要な技術知識
      • コンパイラ、OS、論理設計、パッケージング
    • コンピュータアーキテクチャの誤解
      • 「命令セットの設計のみのことを表す」は間違い
    • 命令セットアーキテクチャ(ISA)
      • ISAは実際にプログラマから見える命令セット
      • ISAはソフトとハードの境界線の役割を果たす
      • 以下はMIPSと80x86をISAの7つの特徴で表した項目
        • ISAのクラス
          • ほとんどのISAは、レジスタまたはメモリの番地をオペランドとする汎用レジスタアーキテクチャに分類
          • 80x86
            • 16の汎用レジスタと16の浮動小数点データを格納するレジスタを持つ
              • レジスタメモリISAは多くの命令でメモリアクセス可能
          • MIPS
            • 32の汎用レジスタと32の浮動小数点データを格納するレジスタを持つ(【備考】MIPSのレジスタ)
              • ロードストアISAはロードまたはストア命令でのみメモリアクセス可能
                ※最近のISAは全てロードストアISA
        • メモリアドレス
          • 80x86とMIPSを含む全てのコンピュータのメモリオペランドのアクセス方法
            • バイトアドレッシング
              • MIPS等のアーキテクチャではアクセス対象を整列(align)の必要あり
                • 例:バイトアドレスがA,サイズがsバイトのアクセス対象へのアクセス
                  • A mod s = 0になるように整列
              • 80x86では整列不要だが、オペランド整列されている方が高速
        • アドレッシングモード
          • レジスタや定数オペランドに加え、アクセスするメモリの対象アドレスを指定
          • MIPSの3つのアドレッシングモード
            • レジスタ
            • 即値(定数用)
            • ディスプレースメント(レジスタの中身に加算してメモリのアドレスを生成する定数オフセット)
          • 80x86は上記に加えて、ディスプレースメントのバリエーションが存在
            • レジスタを使わない(絶対モード)
            • 2つのレジスタを用いる(ディスプレースメント付きインデックス)
            • 2つのレジスタを用い、一方にそのオペランドのバイト数を掛けてから加える(ディスプレースメント付きスケールドインデックス)
            • 最後の3つに疑似下ものを持っている
              • レジスタ間接、インデックス、スケールドインデックス付きベースの3つのディスプレースメント領域を差し引くもの
        • オペランドの大きさと型
          • 多くのISAと同様に80x86とMIPSがサポートしているオペランドの大きさ
            • 8 ビット(ASCII 文字データ)、16 ビット(ユニコード文字データ、ハーフワード)、32 ビット(整数、ワード)、64 ビット(ダブルワード、倍長整数)、IEEE754 浮動小数点 32 ビット(単精度)、64 ビット(倍精度)
            • 80x86 は、これに加えて 80 ビット浮動小数(拡張倍精度)
        • 命令操作
          • 以下のような種類の命令に各オペコードが割り当てられている
            (例:MOV.S=SPデータとFPレジスタ間のコピー)
            • データ転送
            • 算術論理演算
            • 制御(※制御命令として後述)
            • 浮動小数点演算
        • 制御命令
          • すべてのISAで以下をサポート
            • 条件分岐
            • ジャンプ
            • サブルーチンコール
            • リターン
        • ISAのエンコード
          • 固定長エンコード
            • MIPSはすべて32ビット長
            • 固定長なので、命令デコードが簡単
          • 可変長エンコード
            • 80x86のは1から18バイトまでの可変長エンコード
            • 可変長は固定長より、メモリスペースを食わない
              • よって、同一のプログラムをコンパイルする際、80x86用にコンパイルされたプログラムはMIPS用にコンパイルされたものよりも小さくなる
          • 上記の2種類は、命令がどのように2進数表現にエンコードされるかに影響を及ぼす点に注意
            • レジスタ数とアドレッシングモード数は、1つの命令の中の複数のオペランド中に登場するため、命令長に与える影響は大きい
    • 命令セットアーキテクチャとは、「あるマイクロプロセッサで使用できる命令の集合。そのプロセッサを動かすための機械語コードの体系で、プロセッサに対してどのような命令が使用できるか、また、命令がどのような動作をするのかを定めたものである。命令自体の他に、レジスタの数や種類、割り込みや例外処理の方式、メモリ領域の指定の仕方などが含まれる。」
      • 上記の命令セットの差異が小さくなり、それぞれの個別アプリケーションが存在する今は、ISAの設計を超えたところが深刻
    • 命令セットアーキテクチャ以外:構成方式
      • 設計における高レベル面=メモリシステム、メモリ接続、CPUの内部構成
      • 例:同じ命令セットだが、全く異なる構成方式の例
        • AMD Opteron64とIntel Pentium 4は両者x86命令セットだが、パイプラインとキャッシュの構成は全く異なる
          • 【★】命令セットはCPUの設計書
            • AMD、intelは命令セットの利用方法が異なる=各社で良いというもの
            • 命令を意識するキャッシュはほとんどない
              • L1、L2等大きければいいが、作り方による
            • ※パイプライン等の説明は付録A
          • 【★】CPUの中は構成方式にはいる?→入らない
      • 【★】足し算の演算機がある
    • 命令セットアーキテクチャ以外:ハードウェア
      • 論理回路の詳細、パッケージ技術を含むコンピュータの詳細
      • 例:ほぼ同じ構成方式を持っているのに、ハードウェア実装が全く違う例
        • Pentium 4とMobile Pentium 4は、ほぼ同一だが、違ったクロック周波数とメモリシステムを持っている(Mobile Pentium 4は効率重視のローエンドコンピュータ)
          • 【★】サーバとノートPCのCPUの取付付近の構造は違う
      • 【★】周波数が違う=どういう周波数にするか
      • 【★】足し算の演算機をどう設計するか
      • 【★】メモリシステムとは?
  • 【参考情報】MIPSのレジスタ

  • 結論
    • 本書では、コンピュータアーキテクチャは命令セットアーキテクチャ、構成方式、ハードウェアのすべてをカバーするものと定義

1.4 実装テクノロジのトレンド

  • ポイント

    • 性能のトレンド
      • 4つのテクノロジが重要
        • 半導体テクノロジ
        • 半導体DRAM
        • 磁気ディスクテクノロジ
        • ネットワークテクノロジ(スイッチと伝送システム依存)
      • バンド幅とレイテンシ
        • バンド幅とはここではスループット(単位時間での仕事量)
        • バンド幅はレイテンシを上回る進歩
          • 1980から2000年の間で、以下の進歩
            • マイクロプロセッサとネットワークはレイテンシが20~40倍に対して、バンド幅1000~2000倍
            • メモリとディスクはレイテンシが4~8倍に対して、バンド幅120~140倍
          • 目安は、バンド幅の進歩はレイテンシの進歩の2乗
    • トランジスタ性能と配線のスケジューリング
      • プロセスサイズは1971年に10ミクロンだったものが、2006年には0.09ミクロン(90ナノメータ)
      • トランジスタ性能
        • プロセスサイズが小さくなると、デバイスは平面と垂直の両方向で小さくなるため、縮小の2乗で効く=トランジスタ性能が上がる
          • 【★】トランジスタの距離が短くなると、レイテンシが上がる
          • 【★】トランジスタ=andとかorの回路の集合
          • 【★】2乗?
            • 論理回路の数は一辺の2乗だが、消費電力や周波数はそんなに単純ではない
      • 一般的に、トランジスタ性能はプロセスサイズが小さくなると向上するが、半導体における配線はそうではない
        • 配線上の信号遅延は抵抗とコンデンサの容量の積に比例して大きくなる
        • プロセスサイズを小さくすると配線の長さは短くなるが、単位長あたりの抵抗とコンデンサ容量は大きくなる
        • 大きな面積の半導体における設計上の主要な制約となっている
    • 【★】プロセスサイズを小さくできれば、CPUをたくさん作成できる
      • 同じ性能ならコスト半分等
    • 【★】pentium 4の2ステージ
      • クロックを上げるために、パイプラインを細かく切ったが、待ち時間もパイプラインを切って、間に合っていない信号伝送の分もパイプラインを作成した?
    • 【★】ナノメータの単位
      • 「プロセス名」nanoメートルの単位は実測で各社違うことがある
  • 【参考情報】性能マイルストーン

  • 【参考情報】【CPUの基本】図解でよく分かる「プロセスルール」の意味

    • 「プロセスルール」と呼ばれているが、海外では「Process Size」(プロセスサイズ)
    • 「CPUをどれだけ細かく製造しているか?」
    • ものすごくザックリと言えば、CPUの製造はキャンパスの上に鉛筆を使って回路パターンを描くだけ
    • プロセスルールとはまさに、このレーザー鉛筆の先端の太さをことを示す
    • プロセスが細いほど、細かい設計が出来る=同じ面積で、より大量のトランジスタを描くことができる=性能が上がる

  • 【参考情報】トランジスターの仕組み

    • トランジスターは、弱い電気信号を強い信号に変える増幅器としての役割や、電気信号の流れを高速に ON/OFF するスイッチとしての役割を果たす小さな電子素子
    • マイクロプロセッサーのもとになる高度な電子回路は、そのほとんどがトランジスターと呼ばれる小さな素子の組み合わせによってできています
    • 直近の約 10年間で 90nm → 65nm → 45nm → 32nm → 22nm → 14nmという微細化の変遷
    • 1個の半導体チップに集積可能なトランジスター数が増加
    • 多数の実行コアや強力なグラフィックス機能を搭載したマルチコア・プロセッサーを製造したり、仮想化や高度なセキュリティーを支援する機能をマイクロプロセッサーに組み込んだりできるようになる

  • 結論
    • 実装テクノロジのトレンドとは、マイクロプロセッサ、メモリ、ネットワーク、ディスクの性能はスループットが飛躍的に伸び、トランジスタ性能もプロセスサイズ縮小と制約を乗り越えて伸びている
    • 【★】小さくなればなるほど、トランジスタの性能を上げられ、コストも安くなる
      (この書籍の時代までの話)
      • 光を当てて半導体に変質させるコストも上がっている

1.5 半導体の電力のトレンド

  • ポイント

    • CMOSチップのエネルギー消費は、ダイナミック電力とも呼ばれるトランジスタのスイッチ動作で消費される電力
    • ユニット当たりののワット数計算式
      • `電力_{ダイナミック}=1/2 \times 容量負荷 \times 電圧^2 \times スイッチする周波数`
        • トランジスタ当たりの電力は、トランジスタの負荷容量と電圧の2乗で、スイッチする周波数の積に比例
          ※負荷容量=トランジスタの負荷容量=耐えられる度合い
    • エネルギー(ジュール)計算式
      • `エネルギー_{ダイナミック}= 容量負荷 \times 電圧^2`
    • ダイナミック電力とエネルギーは電圧を下げることで削減可能
    • 削減の努力
      • 電圧は20年間で5Vから1Vまで落ちた
      • 容量負荷は出力に接続されたトランジスタの容量で決まる
      • 決められた処理に対して、クロック周期を遅くすることで電力削減できるが、エネルギーは減らない
    • 【例題1.1実施】※下部記載
      • 15%の電圧降下で、40%の電力降下
    • スタティック電力計算式
      • `エネルギー_{スタティック}= 電流_{スタティック} \times 電圧`
    • **トランジスタをオフにしても流れる洩れ電流(スタティック電力)**も気にする必要がある
      • デバイスに電源が投入されたときにデバイスで使用される電力
    • 【★】半導体が小さくなっていくと、洩れ電流は大きくなっている
      • 周波数が変わらなくても、電力が上がっていく方向になる
      • このリーク電力問題が解決できず
        • 単一コアの性能が頭打ちに
    • 【★】ベンチマークSPECcpu2017のバージョン1.1で消費電力の測定が追加(11月から)
      • 省電力ベンチマークSPECpowerとの住み分けは?(アプリケーションは違うが)
        • 簡単に言うと、SPECcpuの結果÷消費電力
  • 例題1.1

    • 問題
      • 現在のマイクロプロセッサのあるものは、電圧が調整できるように設計されている
      • この時15%の電圧降下により15%の周波数低下となる
      • ダイナミック電力にはどのように影響を及ぼすか?
    • 回答
      • 容量は変化しないので、電圧と周波数の比になる
      • `\frac{電力_{新}}{電力_{旧}} = \frac{(電圧 \times 0.85)^2 \times (スイッチする周波数 \times 0.85)}{電圧^2 \times スイッチする周波数} = 0.85^3 = 0.61 `
      • (単純に電圧^2×スイッチする周波数の割合)
      • 以上より電力は約60%となる
  • 【参考情報】低電圧化のススメ - VIPで自作PC @ Wiki - アットウィキ

    • 電圧調整はどうやって行うか
      • BIOSのVcore設定をいじる
  • 結論

    • 気にすべき「消費電力」=ダイナミック消費電力+スタティック消費電力

1.6 コストのトレンド

  • ポイント

    • 鉄筋やコンクリートのコストの情報を持たずに超高層ビルを建てる建築家はいない
    • シリコン製造方法(CPU製造方法)
      • ウェーハを検査し、ダイに切り分け、パッケージに格納
    • 集積回路のコスト計算式
      • `集積回路のコスト= \frac{ダイのコスト + テスト用ダイのコスト + パッケージと最終テストのコスト} {最終テスト歩留まり}`
        • 歩留まり(ぶどまり):製造ラインで生産される製品から、不良製品を引いたものの割合
          (不良発生率が高い場合は「歩留まりが低い」)
    • 1個のウェーハから取れる正常なチップ数の予測に必要な情報
      • いくつダイを並べられるか
      • そのダイが動作する割合
    • ダイのコスト計算式
      • `ダイのコスト= \frac{ウェーハのコスト} {ウェーハ当たりのダイの個数 \times ダイの歩留まり}`
    • ウェーハ当たりのダイの個数の計算式
      • `ウェーハ当たりのダイの個数= \frac{\pi \times (ウェーハの直径/2)^2}{ダイの面積} - \frac{\pi \times ウェーハの直径}{\sqrt{2 \times ダイの面積}}`
        • 丸いウェーハの面積/四角いダイの面積でアバウトな個数を計算し、ウェーハの円周部分の損失部分を引き算
        • 円周上に接しているダイの数は、周の長さ(π×ウェーハの直径)を四角いダイの対角線の長さで割ることで近似できる
    • 【例題1.2実施】
    • ダイの歩留まり(ウェーハ上の良品ダイの割合)
      • 単純には、ウェーハ上には損失がランダムに分布し、歩留まりは製造プロセスの複雑さに反比例
    • ダイの歩留まりの計算式
      • `ダイの歩留まり= ウェーハの歩留まり \times (1+ \frac{単位面積当たりの欠損 \times ダイの面積}{\alpha})^{-\alpha}`
        • 上記の式は、多くの製造ラインの歩留まりを観察した経験的モデル
        • ウェーハの歩留まりは、テストの必要がないくらい完全な粗悪品を含む
        • 単純化するために、ウェーハの歩留まりを100%として考えると
        • 単位面積当たりの欠損は、製造上の欠損がランダムに生じる目安
          • 2006年では、90nmプロセスで1平方センチメートル当たりの欠損は通常0.4
        • αは大ざっぱに、重要なマスクレベル数に対応するパラメータ目安
          • 製造プロセスの複雑度の目安であり、マルチレベルメタルCMOSにおいて、2006年には、α=4.0が目安
    • 【例題1.3実施】
    • ダイの面積を2倍にすると、コストは4倍
      • ダイ当たりのコストはダイの面積のほぼ2乗で大きくなる
    • コンピュータ設計者が考えること
      • ダイの大きさを決めることでコストを決める
      • どのような機能をダイに入れ、どのような機能を外に出すかを決め、I/Oピンの数を決める
    • マスクセットのコスト
      • 少量生産でも固定で掛かるコスト
      • 4から6のメタル配線層を持っており、コストは100万ドルを超える
    • 【★】たまたま悪いものや良いものがある
      • これを探すのはCPU選別
    • 【★】ウェーハ全体を一つの大きなアクセラレータ(GPU)とする話があった
  • 例題1.2

    • 問題
      • 300mm(30cm)のウェーハ上に1辺1.5cmのダイはいくつ取れるか?
    • 回答
      • ダイの面積は1.5×1.5で2.25cm^2である
      • `ウェーハ当たりのダイの個数= \frac{\pi \times (30/2)^2}{2.25} - \frac{\pi \times 30}{\sqrt{2 \times 2.25}}=270`
      • 単純にウェーハ当たりのダイの最大数
  • 例題1.3

    • 問題
      • 欠損密度0.4/cm^2でαを4とした時、1.5cm角と1.0cm角のダイの歩留まりをそれぞれ求めよ
    • 回答
      • ダイの面積はそれぞれ1.5×1.5で2.25cm^2、1.0×1.0で1.0cm^2である
      • `大きなダイの歩留まり= (1+ \frac{0.4 \times 2.25}{4})^{-4}=0.44`
      • `小さなダイの歩留まり= (1+ \frac{0.4 \times 1.0}{4})^{-4}=0.68`
      • ダイは小さい方が良品を取れる
  • 【参考情報】CPU製造について

  • 結論
    • CPU製造コストにおいて、ダイは小さい方が良品の確率が高いことを考慮する

1.7 ディペンダビリティ(dependability)

  • ポイント

    • 信頼性はサービス遂行を連続してどの程度できるかを表す
    • 信頼性と可用性は、ディペンダビリティの同義ではなく、仮定や定量的見積もりに利用できる尺度
    • MTTF(mean time to failure):(故障までの平均時間)
    • FIT(failure in time):(稼働10億(10^9)時間あたりの平均故障回数)
      • MTTFの逆数は故障率のため、100万時間のMTTFは10^9/10^6=1000FITとなる
    • MTTR(mean time to repair):(平均修理時間)
    • MTBF(mean time between failure):(平均故障間隔)
      • MTBF = MTTF + MTTR
      • 故障から次の故障までの間隔の平均値
      • 耐久性の評価として、故障を修理で直して使い続けるものはMTBF, 取り換えるものはMTTFを利用
    • 全体の故障率
      • 全体のライフタイムが指数分布を持つ、つまり使用年数が故障の確率に影響しないとすると、それぞれの部品の故障率を足したものとなる
    • 冗長性のないシステムの可用性計算式
      • `可用性= \frac {MTTF} {(MTTF+MTTR)}`
    • 【例題1.4実施】
    • 故障への主な対処は冗長性
      • 時間的対処:再び故障するか調査するために操作を繰り返す
      • 資源的対処:代替品用意する
      • 部品が修復し、システムが完全に修理された場合、システムのディペンダビリティは新品のものと同じと見なされる
    • 【例題1.5実施】
  • 例題1.4

    • 問題
      • ディスクサブシステムが以下のMTTFを持つ部品から構成されていると仮定した場合の
        全体のMTTFを計算せよ(※冗長性のないシステム)
        ※ライフタイムは指数分布であり、故障は独立であるとする
        • 10個のディスク、個々の故障率は100万時間MTTF
        • 1個のSCSIコントローラ、故障確率は50万時間MTTF
        • 1個の電源、故障確率は20万時間MTTF
        • 1個のファン、故障確率は20万時間MTTF
        • 1本のSCSIケーブル、故障確率は100万時間MTTF
    • 回答
      • 故障率の和はそれぞれの部品の故障率を足したものであるため、以下
        (各MTTFの逆数である故障率※100万時間のMTTFは1億時間中の故障回数FITに直すと1000FIT)
      • `故障率_{システム}= 10 \times 1/1000000 + 1/500000 + 200000 + 1/200000 + 1/1000000 = \frac {10+2+5+5+1}{1000000時間}=\frac{23000}{1000000000=10億時間}`
      • 上記は、2万3000FITとなり、システムのMTTF故障率の逆数でもあるため、以下
      • `MTTF_{システム}= \frac{1}{故障率_{システム}}= \frac {1000000000時間}{23000}=43500時間`
      • 上記はだいたい5年未満と同値
  • 例題1.5

    • 問題
      • ディスクサブシステムは、ディペンダビリティを上げるため、多めに電源を持っている
        (冗長性のあるシステム)
      • 例題1.4の部品およびMTTFを用いて、冗長電源のディペンダビリティを計算せよ
      • 1つの電源でディスクサブシステムを動かすことができる場合に、同じものをもう1つ付け加えると仮定せよ
        ※ライフタイムは指数分布であり、故障は独立であるとする
    • 回答
      • 冗長状態になっている電源のMTTFは、1つの電源が故障する平均時間を、最初の電源が修理する前に、もう1つの電源が故障する確率で割ったものとなる
      • よって、修復前に2回目の故障が起きる確率が小さければ、このペアのMTTFは大きくなる
      • 2つの電源は独立に故障する仮定の場合、あるディスクの故障までのMTTFはMTTF_単一電源/2となる(2つあるので故障までの時間は半分)
      • 2回目の故障の確率の近似としては、MTTRをもう1つの電源が故障するまでの平均時間で割ったものを利用する
        (平均修理時間 / 故障までの平均時間= ``MTTR_故障中の電源 / MTTF_故障していない電源`
        →大抵の場合、「平均修理時間」は「故障までの平均時間」よりかなり小さい)
      • したがって、冗長ペア電源に対する近似式は以下
      • `MTTF_{ペア電源}= \frac{MTTF_{単一電源}/2}{\frac {MTTR_{単一電源}}{MTTF_{単一電源}}}= \frac{MTTF_{単一電源}^2/2}{MTTR_{単一電源}}=\frac{MTTF_{単一電源}^2}{2 \times MTTR_{単一電源}}`
      • この時のMTTFは、【例題1.4】の値(1個の電源、故障確率は20万時間MTTF)を用い、
      • MTTRは、人間のオペレータが電源の故障を知ってから取り換えるまでに平均24時間かかると仮定した場合、耐故障用ペア電源の信頼性は
      • `MTTF_{ペア電源} = \frac{MTTF_{単一電源}^2}{2 \times MTTR_{単一電源}} = \frac {200000^2}{2 \times 24} \simeq 830000000`
      • となり、単一の電源の4150倍のディペンダビリティがあることが分かる
        • 830000000/200000=4150
        • 【例題1.4】のシステムの故障率の和は以下
          • 1/(10*1/1000000+1/500000+1/200000+1/200000+1/1000000)/(24*365)=4.96年
        • 【例題1.5】のシステムの故障率の和は以下
          • 1/(10*1/1000000+1/500000+1/830000000+1/200000+1/1000000)/(24*365)=6.34年

※以下図の順序は適当

  • 結論
    • システムのディペンダビリティはMTTFで評価

おまけ

Discussion