![为什么 USB 2 速度从未达到最高 48MBps?](https://linux22.com/image/1401054/%E4%B8%BA%E4%BB%80%E4%B9%88%20USB%202%20%E9%80%9F%E5%BA%A6%E4%BB%8E%E6%9C%AA%E8%BE%BE%E5%88%B0%E6%9C%80%E9%AB%98%2048MBps%EF%BC%9F.png)
USB 2 连接的限制因素是什么?接口为 480Mbps,相当于 8b/10b 编码后的 48MB/s。我有各种磁盘和存储卡,它们的速度可以超过 100MB/s,但它们在 USB 2 上的速度从未超过 34MB/s。我多年来一直知道这个限制,但我不知道为什么它没有接近 48MB/s。
答案1
480 Mbit/s 是原始容量总线。但不仅数据适合该容量;总线上的其他设备也需要时间,它嵌入时钟信号等等。但最重要的是总线协议的结构。
USB 传输始终由主机发起,而不是由设备发起(一个有趣的练习是将其与打断端点类型)。 因此,任何希望并准备好传输数据的设备都将等待,直到主机实际请求传输。
请求从主机发往设备,数据可以双向流动,但通常会有成功或失败的通知,因此无论如何都需要双向数据传输。USB1 和 USB2 使用单个差分对双向传输数据,以半双工方式使用。(更糟糕的是,它是用于数据传输的 LVDS,有时用作控制信息的两条独立线路。)所有线路都有电容和电感;因此,在我们切换信号方向(主机到设备或反之亦然)之前,我们需要引入一些延迟。(原始并行 PCI 总线具有相同的概念巴士周转出于同样的原因。与现代 PCI Express 相比,每个通道使用 4 条数据线、两个 LVDS 对,其中一个始终用于一个方向,另一个用于另一个方向,而 USB3 也有单独的 LVDS 对。)这会占用一些时间,并且在此期间,没有任何东西被转移。
总体而言,这次失去控制和扭转局面的份额实际上相当大,约为40%!所以在最佳条件下您将无法实现超过 30 MiB/s 的 USB 网络传输速度。
答案2
简而言之,虽然 USB 2.0(甚至 3.0)标准允许/具有能够提供最大速度的带宽,但其他因素也会发挥作用。当您说 USB 2.0 时,这是可用的标准/技术,但没有构建硬件来支持 USB 2 标准/设计的最大容量。涉及的硬件:
- USB 接口(插头/插座)
- USB 芯片组
- USB 线(我认为是最大的罪魁祸首之一)
- 内存速度(硬盘、闪存等)
- 计算能力
- 干扰(来自外部因素、电源线、甚至主板组件)
- USB 端口电量充足
..和更多..
现在我确信,如果我们真的想接近极限,我们可以组装完美的硬件组件来真正突破极限,但经济学会发挥作用......东西会非常昂贵,人们不会真正购买它们。
硬盘也是如此。你知道制造商有能力开发可以使用 5-10 年的硬盘吗?事实上,2000 年初的硬盘似乎比我们现在的硬盘更耐用……我知道我有一台三星 40GB 硬盘,已经用了将近 10 年,除了这里那里有几个坏扇区外,它仍然运行良好。现在,即使是最坚固的硬盘,能用 3 年就算幸运了。
能力是存在的,科学也是存在的,但经济问题又出现了。为什么硬盘制造商要制造价格昂贵、使用寿命长的硬盘?这将非常难以营销和销售。但对于服务器级硬盘来说,情况可能并非如此。