私の教授は、ブロックモデルを使用してハードディスクからのデータ取得を計算する方法についてのスライドを投稿しました。仕様は次のとおりです。
私は彼が次の計算をどのようにしたのか、またはいくつかの数字がどこから来たのかわかりません:
ブロックを読み取るための5ms + 1000/240 ms + 0.05ms = 9.216ms.
1000/240ミリ秒と0.05ミリ秒はどこから来たのですか?
編集:数値が完全に間違っている場合、どうすればよいですか?
問題のディスクの転送速度は80 MiB /秒、または81920 kiB /秒、または20480ブロック/秒です。ここでは、教授が行ったように見えるので、20,000ブロック/秒に丸めます。これは、ブロックを転送する0.05 msに相当し、方程式の最後の項を説明します。
最後に、シーク時間(ドライブヘッドをトラックに移動する時間)に加えて、回転待ち時間もあります。処理するディスク自体の。 7200 RPMで、最悪の場合、1回転完全に待つ必要がありますが、平均して半回転-または4.166ミリ秒(7200 RPM = 120回転/秒= 8.333ミリ/回転)待つ必要があります。
したがって、1つのブロックをコンピューターに転送するには、同等のSeek Time
+ Rotational Latency
+ Transfer Time
を待機する必要があります。
5 ms + 4.166 ms + 0.05 ms = 9.216 ms
ソリッドステートドライブの場合、考慮すべき回転待ち時間はありませんが、測定可能なシーク時間(実際にはフラッシュメモリのセクターの内容をアドレス指定するため)と転送時間(バスによって大きく制限される)があることに注意してくださいデータ自体の転送に使用されている(SATAなど)。
したがって、一般に、ドライブの合計アクセス時間が単一セクターを読み取るには、次のようになります(ソフトウェアは無視されます)。
Rotational/Hard Drive: Seek Time + Rotational Latency + Transfer Time
Solid-State Drive: Seek Time + Transfer Time
5 msシーク時間は、ハードディスクがそのヘッドを正しいトラックに移動する時間です(また、正しいヘッドを選択するために時間がかかりますが、教授は無視します)。
ヘッドが正しいトラック上にあると、正しいセクターがR/Wヘッドの下を通過するのを待つ必要があります。これは7200 RPMドライブであると想定されています。つまり:
7200 RPMドライブの完全なドライブローテーションの時間を取得するには:
つまり、半分の回転で半分の時間がかかるはずです。 1/240番目 秒の。
1秒は1000ミリ秒
これはあなたの - 1000/240 ms。
これはすべて、ドライブがデータの読み取りを開始できるようになるまでの時間です。それでもそれを読んでホストに渡す必要があります。
ドライブからの読み取りは、通常、パスするよりもはるかに速いため、遅い部分に焦点を当てます。
与えられた:
1)80 MB /秒の転送速度
2)ブロックモデル:ブロックサイズ4KB
この回答はそれを無視していることに注意してください: