计算硬盘块模型读取时间

dru*_*rum 8 storage hard-drive latency computer-architecture

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

  • 7200 转
  • 5ms 搜索
  • 80MB/s 传输速率
  • 块模型:块大小 4KB

我不明白他是如何进行以下计算的,或者一些数字来自哪里:

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

谁能告诉我 1000/240 毫秒和 0.05 毫秒从何而来?

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

Bre*_*ugh 11

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

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

因此,一个块传输到计算机上,我们必须等待,等价Seek Time+ Rotational Latency+ Transfer Time

5 ms + 4.166 ms + 0.05 ms = 9.216 ms
Run Code Online (Sandbox Code Playgroud)

请注意,对于固态驱动器,虽然没有考虑旋转延迟,但肯定仍然存在可测量的寻道时间(实际寻址闪存中扇区的内容)和传输时间(很大程度上受总线限制)用于传输数据本身,例如 SATA)。

因此,通常,读取驱动器单个扇区总访问时间为(忽略软件):

Rotational/Hard Drive:  Seek Time + Rotational Latency + Transfer Time

Solid-State Drive:      Seek Time + Transfer Time
Run Code Online (Sandbox Code Playgroud)


Hen*_*nes 5

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。
  • 每4 KB 1 / 20480个一个第二的。
  • 或 0.488281 ms,这是您最新的 0.05 ms


请注意,此答案忽略了:

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