目次
シリーズ記事ディレクトリ
この一連のブログは、深セン大学のコンピュータ システム (2) コースの核心的な内容と、参考文献「コンピュータ システムの深い理解」を中心に紹介します (質問がある場合は、コメント エリアで議論や指摘してください) 、またはプライベートメッセージで直接私に連絡してください)。
第 1 章 コンピュータ システムの徹底理解 01 - コンピュータ システムのローミング
第 2 章 コンピュータ システムの深い理解 02 - 情報の表現と処理_@李敬如的博客-CSDN 博客
第 3 章 コンピュータ システムの深い理解 03 - プログラムのマシンレベルの表現
第4章 コンピュータシステムを深く理解する04 - ストレージ
概要
このブログでは主に、コンピュータ システムの詳細な第 6 章ストレージに関する関連知識を紹介します。
1. ストレージ階層とストレージテクノロジー
1. ストレージ階層
ストレージ階層の例は次のとおりです。
さまざまな場所にあるデータがアクセス速度に与える影響
2. ストレージテクノロジー
ランダム アクセス メモリ (RAM) はスタティック (SRAM) とダイナミック (DRAM) に分けられ、違いは次のとおりです。
ヒント: 継続的とは、更新する必要がないことを意味します。
揮発性メモリ (RAM): RAM は電源がオフになるとデータを保持できません。
不揮発性メモリ (NVM、フラッシュ メモリなど): 電源を切っても保存されたデータが消えないコンピュータ メモリ。
2. ディスクストレージ
1. ディスク構造
2. ディスク容量
2.1 記録領域
ヒント:容量を計算するときは、セクター/トラックの平均数を使用します。マルチゾーン レコードの内側のセクターは外側のセクターより小さく、元のディスクは同じです
2.2 ディスク容量の計算
ディスク容量= (バイト数/セクター) x (平均セクター数/トラック) x (トラック数/ディスク表面) x (ディスク表面数/ディスク) x (ディスク/ディスク)
例は次のとおりです。
ヒント: ディスクの表面/ディスクは非表示になっている場合があります。通常は 2 です。お見逃しなく。
3. ディスク操作 (読み取りおよび書き込みアクセス)
ディスクアクセスのプロセスは次のとおりです。
セクターにアクセスする平均時間 = 平均シーク時間+ 平均回転時間+ 平均データ転送時間
ファイルアクセス時間 = 平均時間 x セクター数
シーク時間:ヘッドがあるシリンダーから別のシリンダーに移動するのにかかる時間
回転時間:ディスクが回転してから、目的のセクタがヘッドに到達するまでの時間
データ転送時間:各セクタの転送に必要な時間
ディスクアクセスの例は次のとおりです。
4. 論理ディスクブロック
論理ディスク ブロックの例は次のとおりです。
3. 地域性
局所性の原則: プログラムは、最新の期間のアドレスに近いデータと命令を使用する傾向があります。
時間的局所性: 最近アクセスされたデータまたは命令は将来アクセスされる可能性があります。
空間的局所性: 現在のアクセスアドレスに近いエリアが近い将来アクセスされる可能性があります。
局所性のサンプルコードは次のとおりです。
ヒント: 行ごとのストレージの場合、N が小さい場合、2 番目のコードは良好な局所性を持ちます (すべてのケースが悪いわけではありません)。
第 4 に、メモリ階層
1. 階層構造理論
1.1 メモリ階層の基本的な考え方
各 k について、レベル k の高速で小型のストレージ デバイスが、k+1 などの大型で低速のストレージ デバイスのキャッシュとして機能します (低から高)。
1.2 メモリ階層はなぜ機能するのですか?
局所性の原理により、プログラムは k+1 層のデータよりも k 層のデータに頻繁にアクセスします。したがって、層 k+1 のストレージ デバイスは、速度が遅く、大きく、安価になります。
1.3 重要なポイント
メモリ階層は、基礎となるメモリと同じくらい安価で、トップレベルのメモリと同じくらい高速な大容量ストレージ プールを構築します。
2. キャッシュキャッシュ
2.1 キャッシュ関連の概念
キャッシュ: より小型で高速なストレージ デバイス。大型で低速のストレージ デバイスのバッファとして、CPU とメイン メモリ間の速度一致の問題を解決します。
マクロ: 容量 -> グループ -> ブロック
ヒット: 要求されたデータはキャッシュ内にあるため、アクセス速度が向上します。
Miss: 要求されたデータはキャッシュにありません。メイン メモリから読み取って、キャッシュを更新します。
1. コールド ミス: キャッシュは最初、ブロックへの最初の参照では空です。
2. 容量ミス: アクティブなキャッシュ ブロックのセット (ワーキング セット) がキャッシュよりも大きい場合に発生します。
3. 競合ミス: 利用可能な空のスペースがあり、ブロックは埋められた行も占有しようとします。
パフォーマンスに関するパラメータの定性的結論:
注: ミス率を減らす多くの方法では、ヒット時間が増加したり、ミスのオーバーヘッド (ペナルティ) が生じたりします。
1. キャッシュ容量を増やすとヒット率が上がり、ヒット時間が長くなる可能性があります。
2. ブロックサイズを大きくするとヒット率は向上しますが、ブロックサイズが大きすぎてブロック数が減りすぎるとヒット率が低下し、送信時間が長くなります。
3. 結合度を高めると行の競合が減り、ヒット率が向上しますが、ハードウェアの複雑さが増すとペナルティ時間が増加します。
4. グループ サイズを大きくすると、衝突ミスによるジッターの可能性が減りますが、コストが増加します。
より完全な最適化戦略: [アーキテクチャ シリーズ] キャッシュ ヒット率を向上させる_槑! ブログ-CSDN ブログ_キャッシュ ヒット率を向上させる方法
キャッシュの例:
キャッシュに優しいコード: 原則 - 局所性を最大限に活用する
方法: 次のように、同じまたは類似のデータを繰り返し引用してみてください。
最も一般的なケースを高速に実行する:コア関数のループに焦点を当てる
各ループ内のキャッシュ ミスの数を最小限に抑えます。ローカル変数への繰り返しの参照は良好 (時間的局所性)、ストライド 1 のシーケンシャル参照パターンは良好 (空間的局所性)
ヒント: キャッシュを使用するとメモリ アクセスを高速化できます
2.2 マッピング
以下の 3 つの方法でメイン メモリ ブロックとキャッシュ ラインをマッピングします。
1. 直接関連付け (直接): 各メイン メモリ ブロックはキャッシュの固定行にマッピングされます (柔軟性が低く、キャッシュ使用率が低く、競合が発生しやすい)
2. セットアソシエイト (セットアソシエイト): 各メインメモリブロックはキャッシュ固定グループ内の任意の行にマップされます (グループ間は直接、グループ内はフルアソシアティブ)
3. フルアソシエイト: 各メインメモリブロックはキャッシュの任意のラインにマッピングされます (キャッシュ使用率が高く、ブロック競合率が低い)
3. キャッシュマッピングの例
キャッシュ内のデータ項目がメモリ内のどのアドレスに対応するかを知るには? ストレージ マーク タグ
有効な情報が含まれていることを確認するにはどうすればよいですか? 有効ビット 有効ビット: 1 = 入っている 0 = 入っていない 初期値は 0
アクセス順序が 22、26、22、26、16、3、16 の場合、最後のキャッシュの状態を描画し、そのヒット率/ミス率を計算してください。
最終状態は以下の通り:命中率 3/7 (3, 4, 7)
18 を再フェッチすると、状態は次のように変化します (競合ミスは変化しますが、ミス)。
要約する
上記は、コンピュータ システムの第 6 章であるストレージを深く理解するための核となる知識です。第 6 章では、主にシステムの概念 (コンピュータ システム情報、手順、ワークフロー、トピックなど) の紹介に焦点を当てています。