计算硬盘块模型读取时间

计算硬盘块模型读取时间

我的教授发布了一张幻灯片,介绍如何使用块模型计算从硬盘检索数据。规格如下:

  • 7200 转/分
  • 5毫秒寻道
  • 80MB/s 传输速率
  • 区块模型:区块大小 4KB

我不明白他是如何进行以下计算的,或者其中一些数字从何而来:

5ms + 1000/240 ms + 0.05ms = 9.216ms 读取块。

谁能告诉我 1000/240 毫秒和 0.05 毫秒是从哪里来的?

编辑:如果数字完全错误,那么您会怎么做?

答案1

有问题的磁盘的传输速率为 80 MiB/s,即 81920 kiB/s,或者20480 块/秒。这里,我们将四舍五入为 20,000 块/秒,因为这似乎是你的教授做的。这相当于 0.05 毫秒来传输一个块,解释了等式中的最后一个项。

最后,除了寻道时间(将驱动器头移到轨道上的时间),还有旋转潜伏期磁盘本身需要处理。在 7200 RPM 下,在最坏的情况下,我们必须等待 1 整圈,但平均而言,我们必须等待半圈 - 或 4.166 毫秒(7200 RPM = 120 转/秒 = 8.333 毫秒/转)。

因此,要将一个块传输到计算机,我们必须等待等效的Seek Time++ :Rotational LatencyTransfer 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

答案2

5 毫秒寻道时间是硬盘将磁头移动到正确轨道的时间(并选择正确的磁头,这也需要时间,但你的教授忽略了这一点)。


一旦磁头位于正确的轨道上,它就需要等待正确的扇区通过 R/W 磁头下方。我们假设它是一个 7200 RPM 驱动器。这意味着:

  • 在最坏的情况下,数据刚刚传递完毕就必须等待一个完整的旋转。
  • 最好的情况是数据扇区刚刚到达。一切都很顺利。
  • 在里面平均的在这种情况下,驱动器需要等待半圈旋转。

要获取 7200 RPM 驱动器完整旋转一次的时间:

  • 每分钟 7200 转(又称 7200 RPM)
  • 或者每秒 7200/60 次。
  • 或者每秒 120 次。
  • 或者一次旋转需要1/120秒。
  • 即 8.3 毫秒

因此半次旋转应该花费一半的时间,即1/240

1 秒是 1000 毫秒

这是你的1000 / 240多发性硬化症。


所有这些都是驱动器开始读取数据之前的时间。它仍然需要读取数据并将其传递给主机。

从驱动器读取通常比传递它要快得多,因此我将重点关注较慢的部分:

鉴于:

1)80 MB/s 传输速率
2)块模型:块大小 4KB

  • 一秒钟 80 MiB,或者一秒钟 80*1024 KiB,或者每秒 4 * 20 * 1024 KiB。
  • 除以 20480。
  • 1/204804 KB
  • 或者 0.488281 毫秒,这是你最近的 0.05 毫秒


请注意,这个答案忽略了:

  1. 驱动器需要先读取数据才能传输,这会使其速度稍微慢一些。
  2. 但是没有关于从盘片读取数据的速度的信息。(这与旋转速度、要读取的数据长度、校验和数据的长度以及扇区间间隙有关。(4KiB 可以是 8 次“Header|data|checksum|gap”读取或一次读取。)
  3. 它还忽略了数据可能已经存在于驱动器缓存中。
  4. 并且它假设计算校验和几乎不需要任何时间。

相关内容