答案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 驱动器。