硬盘的技术能应用到ssd上吗?

硬盘的技术能应用到ssd上吗?

我想知道硬盘的技术是否仍然适用于固态硬盘。

假设我们使用基于Nand闪存的固态硬盘作为第二存储(不带硬盘)。

  1. 当我们读取数据时,磁盘缓存(用于在主内存和硬盘之间进行改进)对ssd有效吗?

  2. 当我们写入数据时,主内存中的写入缓冲对SSD也有效吗?

我对使用术语(例如磁盘缓存、写入缓冲......)感到很困惑。对此深感抱歉。

感谢任何评论

答案1

这听起来好像您混淆了 RAM 磁盘和 SSD 的概念。RAM 磁盘是在 DRAM 内存中创建的,用于缓存数据,但如果断电,数据就会被彻底清除。SSD 使用 NAND 闪存(如您所说),其作用与操作系统的传统硬盘完全相同(尽管速度非常快)。

  1. 直接从 SSD 读取数据,没有像传统硬盘那样的额外缓存。
  2. 没有写缓冲,数据直接写入磁盘(NAND闪存)

传统旋转硬盘使用读取缓存和写入缓冲来解决写入磁盘(即移动执行器并将位写入磁盘)的较低延迟。

答案2

是的,使旋转硬盘看起来更快的技术可以而且确实用于使闪存 SSD 看起来更快。

操作系统不知道也不关心驱动器电缆另一端的设备是旋转硬盘还是 SSD。操作系统对它们一视同仁。

当应用程序将数据写入“驱动器”时,操作系统会将数据缓冲在页面缓存存储在主内存中(即主板上的 DRAM 中),这样应用程序就可以继续执行下一个任务,而操作系统则通过驱动器连接器缓慢传输数据。稍后,当操作系统实际将数据发送到驱动器时​​,旋转硬盘和 SSD 都会将数据存储在磁盘缓冲区(在驱动器外壳内的 DRAM 中)因此操作系统可以继续执行下一个任务,同时驱动器将数据慢慢传输到实际的非易失性介质(旋转磁畴或浮动多晶硅位)上。

当应用程序从“驱动器”读取数据时,操作系统会检查该数据是否已缓冲在页面缓存中 - 如果没有,它不仅会从硬盘驱动器读取该数据块,还会预读其他几个数据块并将它们粘贴在页面缓存中。当驱动器(旋转磁盘或闪存)收到读取数据的请求时,它会检查该数据是否已缓冲在磁盘缓冲区中 - 如果没有,它不仅会从非易失性介质中获取该数据,而且通常还会预读其他几兆字节。

这些技术仍然有效,因为尽管闪存的读取和随机写入速度比旋转硬盘快得多,但闪存仍然比典型的主板主存储器 DRAM 慢几倍。

这一切都在任何现代操作系统上自动发生。

(我听说一些闪存 SSD 可以同时从许多闪存芯片读取数据,因此在响应读取请求时可以“即时”读取,因此它们不会缓冲读取。它们的内部磁盘缓冲区只缓冲写入,速度要慢得多。此外,DRAM 固态硬盘使用 DRAM,而不是闪存,所以它们根本没有内部磁盘缓冲区,因为读取或写入速度不会更快。)

编辑:有些人似乎认为操作系统知道并关心电缆另一端的设备是旋转硬盘还是 SSD——特别是,这样操作系统就可以仅向 SSD 发送适当的 TRIM 命令。

我的理解是:(a) 许多早期操作系统对 SSD 一无所知。这些操作系统是在假设电缆另一端的设备是旋转磁盘的情况下编写的。当旋转磁盘被 SSD 替换为 SSD 时,这些操作系统仍能正常工作。所有此类操作系统都以相同方式对待 SSD 和 HDD。

此外,(b) 许多现代操作系统了解所有关于 SSD 的信息。特别是,许多现代操作系统会在适当的时间发送 TRIM 命令,以提高 SSD 性能。然而,我的理解是,许多(大多数?)这样的操作系统通常仍然对 SSD 和 HDD 的处理方式相同 - 它们将 TRIM 发送到所有驱动器,甚至是旋转磁盘驱动器,而旋转磁盘驱动器会默默地忽略它。参见 启用 TRIM 是否会影响计算机上的其他硬盘驱动器(以及如何知道 Windows 何时使用它)?

此外,较旧的 SSD(在 ATA 标准没有 TRIM 命令之前制造)也会默默忽略 TRIM 命令。请参阅维基百科:TRIM

相关内容