估计将 1GB 文件从一个 USB 闪存复制到第二个 USB 闪存

估计将 1GB 文件从一个 USB 闪存复制到第二个 USB 闪存

主机 USB(下图)中插入了两个闪存。我想估算将一个 1GB 文件复制到第二个闪存的最短时间。

在此处输入图片描述

对我来说相当困难,我假设读取速度为 40MB/s,写入速度为 30MB/s。USB
High Speed 是 USB 2.0,以半双工模式工作。

你能帮我估算一下这个时间吗?

我的尝试是:写入时间:1000MB/30MB = 33s
读取时间:1000MB/40MB = 25s。25s
+ 33s/2 = 25s + 17s = 42s
正如你所见,由于半双向传输,我除以 2。

答案1

为什么要将写入时间减半?根据您(乐观的)假设,写入速率为 30MB/s,读取速率为 40MB/s,答案很简单:在最佳情况下,您的应用程序层将需要 25 秒来读取整个文件,然后需要 33 秒将其写回另一个驱动器。因此,总共需要 25+33=58 秒,一秒也不能少。这是根据您对数据传输速率的基本假设做出的最乐观的估计。如果您的应用程序层具有较小的缓冲区,则读取和写入将以交错的方式以较小的块进行,因此由于协议开销,传输时间会稍长一些。

附录:我猜这种混淆来自于错误的假设,即所示卡中的每个端口都作为独立通道运行。事实并非如此。所有 EHCI 控制器都作为“根集线器”实现,这意味着每个控制器只有一个列表处理器(又名 DMA),并且所有 HS 端口共享相同的 480Mbps 带宽。要使读/写并行进行,需要在系统中安装两张卡。或更多。

答案2

首先,USB 2.0 的原始数据速率为 480Mb/s=60MB/s。实际数据速率略低。

半双工意味着总线上一次只有一个设备可以发送数据。

现在,这取决于您的硬件。如果此卡确实有四个独立的 USB 控制器,则一个 USB 总线用于读取,另一个用于写入(同时),并且它们都没有以 60MB/s 的极限运行。而且 PCIe 数据总线非常快,您不必担心。
那么瓶颈就是 30MB/s 的写入 USB 棒,大约需要 33 秒。

如果该卡只有一个 USB 控制器和一个 4x USB 集线器,则所有数据必须通过集线器和控制器之间的单个 USB 连接传输两次(而不是同时传输)。“写入”棒只能以 30MB/s 的速度接收数据,而“读取”棒的数据请求速率也将为 30MB/s。这里,30MB/s+30MB/s=60MB/s,由于 2GB 是通过单个 USB 总线传输的,因此同样需要 33 秒。

不过USB 2.0的实际传输速率较低,如果是50MB/s的话,则需要大约42秒。

一般来说,这可能需要多花几秒钟,因为例如计算机首先从“读取”USB 驱动器缓冲一些数据,然后再将其发送到“写入”USB 驱动器。

相关内容