コンピュータ設計の基礎
マイナビ
著者:Hisa Ando
はじめに
目次
Chapter.1 コンピュータアーキテクチャ
1.1 アーキテクチャって何だ?
1.2 歴史的な計算機械(先史時代のコンピュータ)
1.2.1 ディファレンスエンジン
1.2.2 Hollerithのパンチカードシステム
1.2.3 チューリングマシン
1.3 コンピュータのタイプ
1.3.1 ノイマン型コンピュータ
1.3.2 非ノイマン型コンピュータ
1.3.3 汎用コンピュータと専用コンピュータ
1.4 命令セットアーキテクチャとマイクロアーキテクチャ
1.5 単純な構造のコンピュータ
1.5.1 アキュムレータマシン
1.5.2 汎用レジスタマシン
1.6 命令の構造
1.6.1 オペランドのアドレッシング
1.6.2 データタイプとアライメント
1.6.3 命令の長さと構成
1.6.4 命令の種別とOPコードマップ
1.6.5 CISCアーキテクチャとRISCアーキテクチャ
Chapter.2 コンピュータのマイクロアーキテクチャ
2.1 コンピュータの性能向上
2.2 コンピュータの基本構造
2.2.1 コンピュータの命令処理
2.2.2 パイプライン処理
2.2.3 構造的ハザード
2.2.4 マルチポートレジスタ
2.2.5 データハザードとコントロールハザード
2.3 パイプラインの設計
2.3.1 パイプラインステージの長さ
2.3.2 パイプラインコンピュータの構造
2.3.3 パイプラインの制御
2.3.4 データ依存性のチェック
2.3.5 実行資源の予約
2.3.6 データハザードを減らすバイパス
2.3.7 パイプラインの制御情報の伝達
2.3.8 コントロールハザードを減らす手法
2.3.9 さらにロスを減らすディレードブランチ
2.3.10 プログラムカウンタ
2.3.11 パイプライン処理による性能向上効果
2.3.12 パイプライン実行と例外処理
Chapter.3 整数演算器の設計
3.1 コンピュータの数値表現
3.1.1 2進数表現のビット
3.1.2 整数の表現
3.2 加算器(Adder)
3.2.1 キャリールックアヘッドアダー
3.2.2 パラレルプリフィックスアダー
3.2.3 Lingアダー
3.2.4 アダーの実装に関して
3.3 乗算器(Multiplier)
3.3.1 Boothのアルゴリズム
3.3.2 リニアアレイ
3.3.3 パラレルアダー
3.3.4 Wallance Tree
3.3.5 負の部分積の処理
3.3.6 4-2コンプレッサー
3.4 割り算器
3.4.1 筆算をハード化した引き戻し法
3.4.2 引き過ぎを戻す必要があるのか?
3.4.3 引き放し法は本当に速いのか?
3.4.4 ゼロのスキップによる計算時間の短縮
3.4.5 1サイクルに複数ビットの商を求める割り算器
3.4.6 SRT割り算器
3.5 シフト回路(シフタ)
Chapter.4 浮動小数点演算器の設計
4.1 IEEE 754以前の浮動小数点データフォーマット
4.2 IEEE 754規格
4.2.1 IEEE 754規格の数値表現
4.2.2 IEEE 754規格の特徴
4.3 浮動小数点加算器
4.3.1 桁合わせと加算
4.3.2 加算結果のノーマライズ
4.3.3 多数ビットの桁落ちが発生する場合のノーマライズ
4.3.4 丸め
4.3.5 2パス浮動小数点加算器
4.3.6 浮動小数点加算のパイプライン処理
4.4 浮動小数点乗算器
4.5 浮動小数点積和演算器
4.5.1 積和演算命令の形式
4.5.2 積際演算器の構成
4.6 浮動小数点除算器
4.7 平方根演算器
4.8 Newton-Raphson法とGoldschimidt法
4.8.1 Newton-Raphson法による除算
4.8.2 Goldschimidt法
4.8.3 反復法による平方根の計算
4.9 10進浮動小数点計算
4.9.1 IEEE 754-2008の10進浮動小数点データフォーマット
4.9.2 10進数を圧縮格納するDensely Packed Decimal形式
4.9.3 ExponentとBias
4.9.4 Combination Field
4.9.5 10進浮動小数点データの数値表現範囲
4.9.6 10進浮動小数点数の演算ハードウェア
Chapter.5 メモリアクセスの効率化
5.1 ローカルメモリとキャッシュメモリ
5.2 キャッシュメモリの構造
5.2.1 キャッシュタグ
5.2.2 キャッシュラインサイズ
5.2.3 キャッシュをアクセスする構造
5.2.4 フルアソシアティブキャッシュ
5.2.5 ダイレクトマップキャッシュ
5.2.6 セットアソシアティブキャッシュ
5.3 キャッシュの管理
5.3.1 キャッシュの処理フロー
5.3.2 キャッシュラインの追い出し
5.3.3 キャッシュへの書き込み
5.3.4 キャッシュユニットの構造
5.4 各種のキャッシュ構造
5.4.1 命令、データ分離キャッシュ
5.4.2 ピクティムキャッシュ
5.4.3 キャッシュシステムによるプロセッサの性能改善
5.4.4 プリフェッチ(Pre-fetch)
5.5 メモリの管理
5.5.1 セグメント方式のメモリ管理
5.5.2 ページ方式のメモリ管理
5.5.3 Translation Lookaside Buffer(TLB)
5.5.4 Physical IndexキャッシュとVirtual Indexキャッシュ
5.5.5 メモリエーリアス
5.5.6 メモリ回路特性を利用したキャッシュサイズの拡大
まとめ
参考文献
索引