首先,我对USB知之甚少,所以如果我的问题出错,请提前道歉.
在USB 2.0中,轮询间隔为0.125ms,因此主机从设备读取某些数据的最佳可能延迟为0.125ms.我希望减少USB 3.0设备的延迟,但我发现很难了解最小延迟是什么.USB 3.0规范称,"USB 2.0样式轮询已被异步通知取代",这意味着0.125ms轮询间隔可能不再是限制.
我找到了一些USB 3.0固态硬盘的基准测试,看起来数据可以在略低于0.125ms的时间内从设备读取,其中包括在主机操作系统和设备的闪存控制器上花费的所有时间.
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微控制器上实现调试加密狗.
And*_*dge 16
回答我自己的问题......
我已经意识到这个问题有点遗漏了USB 3.0.与2.0不同,它不是共享总线系统.相反,它使用主机和每个设备之间的点对点链接(我过于简单,但要点是真的).使用USB 2.0,125 us轮询间隔对于总线在设备之间进行时分复用至关重要.但是,由于3.0使用点对点链接,因此不需要进行多路复用,因此轮询间隔不再存在.因此,数据包传输的延迟远低于USB 2.0.
在我使用赛普拉斯FX-3 devkit的实验中,我发现从Windows应用程序到设备的平均往返行程很容易,平均延迟时间为30 us.我怀疑绝大多数时间花在各种OS延迟上,例如用户空间到内核空间模式切换以及驱动程序内的DPC延迟.
我有几个资源供你使用,我刚刚下载了一个完整的规格......有几个pdf压缩了 USB3,这里是第58,59页的简短摘录(USB 3_r1.0_06_06_2011.pdf) :
USB 2.0 transmits SOF/uSOF at fixed 1 ms/125 ?s intervals. A device driver may change
the interval with small finite adjustments depending on the implementation of host and
system software. USB 3.0 adds mechanism for devices to send a Bus Interval Adjustment
Message that is used by the host to adjust its 125 ?s bus interval up to +/-13.333 ?s.
In addition, the host may send an Isochronous Timestamp Packet (ITP) within a relaxed
timing window from a bus interval boundary.
Run Code Online (Sandbox Code Playgroud)
这是另一个看起来很有趣的资源,它涉及计算延迟.
您对操作系统延迟问题提出了一个很好的观点,特别是在非实时操作系统中.
我可能会建议您检查SuperUser,也许有人有其他想法.干杯
| 归档时间: |
|
| 查看次数: |
27135 次 |
| 最近记录: |