人们常说磁盘驱动器接口是数据传输的瓶颈。例如,在硬盘驱动器的情况下,数据从硬盘驱动器缓冲区传输到硬盘驱动器内存模块。既然硬盘驱动器缓冲区是高速缓存,那么为什么接口会成为瓶颈呢?我的意思是,缓存是一种 sram。因此传输速度应该很高。为什么不是这样呢?
答案1
如今,硬盘和 SSD 最常使用串行连接,但过去使用的是 IDE 接口。IDE 基本上是早期 PC 使用的 ISA 总线的简化版本。在这样的计算机中,您可以像您建议的那样直接访问设备寄存器。但是当 PCI 出现时,它的速度更快,所以旧的 IDE 驱动器太慢而无法直接访问。IDE 的后续修订版(或者更确切地说是 ATA,因为它被重新命名)提高了速度(但没有提高宽度:PCI 是 32 位宽,但 ATA 保持 16 位),但处理器速度不断提高,PCI 和 ATA 都无法跟上。
最终我们从 ATA 的并行接口切换到串行接口。这使得与处理器的连接不那么直接,但串行接口可以运行得更快,因此它们更接近全速运行,但这仍然会带来延迟并且比快速 RAM 慢。
旧式高速 ATA 驱动器通常使用 70 或 80ns 内存,其运行速度与总线相似。现代内存速度更快,但远不及总线速度。我猜想现代驱动器已经从过去使用的 16 位处理器转向更宽的总线尺寸,以提高吞吐量。
答案2
既然硬盘缓冲区是一种高速缓存,那么为什么接口会成为瓶颈呢?
缓冲区会增加延迟(每个请求需要更多时间),因为需要检查缓冲区/缓存的内容。那么我们为什么要有它们呢?因为通常数据是线性的,所以下次检查缓冲区时,数据很可能已经在缓冲区中了,不需要检查磁盘。
另一个问题是
我的意思是,缓存是一种 sram。因此传输速度应该很快。为什么事实并非如此?
如果数据是从缓冲区/缓存加载的,则速度很快。只有数据已经存在时才会发生这种情况。如果数据不在缓存中,则数据将进入磁盘,速度会更慢。如果数据被连续读取,则很可能不在缓存中,因为与磁盘相比,缓存很小。