32

首先,我对USB了解不多,所以如果我的问题是错误的,请提前道歉。

在 USB 2.0 中,轮询间隔为 0.125 毫秒,因此主机从设备读取某些数据的最佳可能延迟为 0.125 毫秒。我希望减少 USB 3.0 设备的延迟,但我发现很难了解最小延迟是多少。USB 3.0 规范说,“USB 2.0 风格的轮询已被异步通知取代”,这意味着 0.125 毫秒的轮询间隔可能不再是一个限制。

我发现了一些针对 USB 3.0 SSD 的基准测试,看起来数据可以在略低于 0.125 毫秒的时间内从设备读取,这包括在主机操作系统和设备闪存控制器上花费的所有时间。

http://www.guru3d.com/articles_pages/ocz_enyo_usb_3_portable_ssd_review,8.html

有人能告诉我最低可能的延迟是多少吗?理论上的答案很好。包括各种版本的 Linux 和 Windows USB 堆栈的实际限制的答案会很棒。

为了避免“告诉我你想要实现什么”的问题,我正在为我公司设计的 ASIC 创建一个调试接口。即,PC 通过调试加密狗连接到我们的一个 ASIC。一种可能的用例是在 ASIC 硬件仅实现简单断点时实现条件断点。为此,我需要确定何时命中了一个简单的断点,评估条件,如果为 false,则设置处理器再次运行。在条件变为真之前,简单的断点可能会被命中数百万次。我们可以在 FPGA 或现成的支持 USB 3.0 的微控制器上实现调试加密狗。

4

4 回答 4

23

回答我自己的问题...

我开始意识到这个问题有点忽略了 USB 3.0 的意义。与 2.0 不同,它不是共享总线系统。相反,它使用主机和每个设备之间的点对点链接(我过于简单化了,但要点是正确的)。对于 USB 2.0,125 us 的轮询间隔对于总线如何在设备之间进行时分复用至关重要。但是,由于 3.0 使用点对点链路,因此无需进行多路复用,因此轮询间隔不再存在。因此,数据包传输的延迟低于 USB 2.0。

在我使用 Cypress FX-3 开发套件的实验中,我发现从 Windows 应用程序到设备的平均往返行程很容易,平均延迟为 30 us。我怀疑大部分时间都花在了各种操作系统延迟上,例如用户空间到内核空间模式的切换以及驱动程序中的 DPC 延迟。

于 2014-11-13T21:43:48.370 回答
7

我为您准备了一些资源,我刚刚下载了一个完整的规格...几个用于 USB3 的 pdf 压缩包,这里是第 58,59 页的简短摘录(USB 3_r1.0_06_06_2011.pdf) :

USB 2.0 以固定的 1 ms/125 μs 间隔传输 SOF/uSOF。取决于主机和系统软件的实现,设备驱动程序可以通过小的有限调整来改变间隔。USB 3.0 增加了设备发送总线间隔调整消息的机制,主机使用该消息将其 125 μs 总线间隔调整到 +/-13.333 μs。

此外,主机可以在一个宽松的时序窗口内从总线间隔边界发送一个同步时间戳包 (ITP)。

是另一个看起来很有趣的资源,它处理计算延迟。

您对操作系统延迟问题提出了很好的看法,尤其是在非实时操作系统中。

我可能会建议您也检查一下 SuperUser,也许有人有其他想法。干杯

于 2013-01-12T19:14:26.407 回答
2

我对标记的答案提出异议。

在 Windows 上,无法通过 USB 实现规定的往返延迟。SuperSpeed (3.0) 与否。该文档指出:

The number of isochronous packets must be a multiple of the number of packets per frame.

https://docs.microsoft.com/en-us/windows-hardware/drivers/usbcon/transfer-data-to-isochronous-endpoints

每帧的数据包由 给出,bInterval也决定了轮询间隔。例如,如果您想实现每microframe(125 微秒)传输一次,则需要为每个 URB(USB 请求块)提交 8 次传输,这意味着调度服务间隔为1ms

其他任何东西都需要您自己的内核模式驱动程序或超出规范。

在 RT Linux 上,我可以确认 2*125usec 的往返 + 一些开销。

于 2020-01-15T08:59:55.083 回答
1

摘自 Embedded.com:“USB 3.0 与 USB 2.0:忙碌工程师的快速参考摘要”

通信架构差异 USB 2.0 采用一种通信架构,其中数据事务必须由主机发起。主机会频繁地轮询设备并请求数据,并且设备只有在主机请求后才可以传输数据。高轮询频率不仅会增加功耗,还会增加传输延迟,因为只有在主机轮询设备时才能传输数据。USB 3.0 改进了这种通信模型,并通过最大限度地减少轮询并允许设备在数据准备好后立即传输数据来减少传输延迟

...

时间戳增强

与精度范围为 0 到 125 us 的 USB 2.0 摄像头不同,来自 USB 3.0 摄像头的时间戳更精确,并且模仿了 FireWire 摄像头的 1394 周期计时器的精度。

...

USB 3.0 - 或超高速 USB - 克服了其他规范的关键限制,所有这些限制具有 6 倍(超过 IEEE 1394b)到 9 倍(超过 USB 2.0)更高的带宽、更好的错误管理、更高的电源......更低的延迟和抖动时间

PS 还说 USB 3.0 的“电缆长度更长”,但其他段落与此相矛盾,并说 USB 2.0 最长为 5m,USB 3.0 最长为 3m。

于 2018-11-13T20:10:05.147 回答