WD1X.COM - 问答一下,轻松解决,电脑应用解决专家
主板显卡CPU内存显示器
硬盘维修显卡维修显示器维修
注册表系统命令DOS命令Win8
存储光存储鼠标键盘
内存维修打印机维修
WinXPWin7Win11Linux
硬件综合机箱电源散热器手机数码
主板维修CPU维修键盘鼠标维修
Word教程Excel教程PowerPointWPS
网络工具系统工具图像工具
数据库javascript服务器
PHP教程CSS教程XML教程

解除30MB/s魔咒! 实战USB 2.0大提速(2)

更新时间:2012-07-06 15:55 作者:张伟点击:

揭秘USB 2.0糟糕的实际传输速度

 

    目前由于设备传输速率限制以及USB 3.0 5Gbps传输带宽的冗余,USAP协议并没有急于展开,另外要实现USAP协议的支持,除了主控设备,终端设备也需要支持USAP,终端设备的芯片设计难度将会加大,这使得闪存等小型存储设备的成本和体积将会显著增加,不利于产品推广,现有的一些支持USAP的设置仅限于外置存储。 

解除30MB/s魔咒! 实战USB 2.0大提速

30MB/s成了USB 2.0存储设备的实际极限速度

    回归到主流的USB 2.0设备上来,前文我们已经提到,受BOT传输协议、编码方式的影响USB 2.0传输速度被限制在35MB/s以下,也就是说USB 2.0传输带宽还有不小的提升空间。

    USB 2.0使用了NRZI(Non-Return-to-Zero Inverted)编码,它是基于串行传输模式,传输连续的0、1字符串。在RZ(Return-to-zero Code)编码中,正电平代表逻辑1,负电平代表逻辑0,并且每传输完一位数据,信号返回到零电平,也就是说,信号线上会出现3种电平:正电平、负电平、零电平。

解除30MB/s魔咒! 实战USB 2.0大提速

    而零电平因为是附加的内容浪费传输带宽,所以需要去掉归零,于是就变化成了NRZ(Non-return-to-zero Code)编码。在USB传输中,每个USB数据包,最开始都有个同步域(SYNC),这个域固定为0000 0001,这个域通过NRZI编码之后,就是一串方波,接受者可以用这个SYNC域来同步之后的数据信号。此外,因为在USB的NRZI编码下,逻辑0会造成电平翻转,所以接受者在接受数据的同时,根据接收到的翻转信号不断调整同步频率,保证数据传输正确。

    但是,这样还是会有一个问题,就是虽然接受者可以主动和发送者的频率匹配,但是两者之间总会有误差。假如数据信号是1000个逻辑1,经过USB的NRZI编码之后,就是很长一段没有变化的电平,在这种情况下,即使接受者的频率和发送者相差千分之一,就会造成把数据采样成1001个或者999个1了。

解除30MB/s魔咒! 实战USB 2.0大提速

   USB对这个问题的解决办法,就是强制插0,也就是传说中的bit-stuffing,如果要传输的数据中有7个连续的1,发送前就会在第6个1后面强制插入一个0,让发送的信号强制出现翻转,从而强制接受者进行频率调整。接受者只要删除6个连续1之后的0,就可以恢复原始的数据了。

    由于强制插0保持发送者和接收者频率同步会造成USB 2.0传输带宽的浪费,浪费的大小则根据插0的多少而不同。这样USB 2.0 60MB/s的传输带宽就要打一定折扣了。对于USB 3.0来说,由于要保证高达5Gbps数据传输的正确性,采用了时下流行的8b/10b编码方式,有效数据利用率为80%。也就是USB 3.0的有效数据传输带宽为500MB/s。

 

USB 2.0大提速!实战BOT协议改良


 

    除了编码方式,影响USB 2.0传输速率的还有BOT传输协议,BOT协议在操作系统下限制最大为64KB区块,而持续数据块大小为128KB。由于BOT协议的原因,BOT区块会因为串行处理而浪费大量等待时间,这又一次将有限的60MB/s传输带宽浪费了不少,NRZI和BOT双重限制下,有效传输带宽就剩下50%左右了。

解除30MB/s魔咒! 实战USB 2.0大提速

    USB传输底层NRZI编码方式我们无法改变,不过我们可以扩大BOT协议的区块大小,增加USB带宽利用率,这对于持续传输尤其有效。

    修改BOT区块大小之前,我们要从微软官方下载一个补丁Windows6.1-KB2581464,补丁将Usbstor.sys驱动程序中的最大传输尺寸值从默认的64KB增加到2MB。

解除30MB/s魔咒! 实战USB 2.0大提速

    安装补丁后,系统还无法直接为存储设备应用为2MB区块模式,这个时候我们还需要将存储设备的INF设备信息(INF设备信息是由VID_xxxx&PID_xxxx字符串组成,唯一的标识了这款产品)添加到Usbstor.sys下面。

解除30MB/s魔咒! 实战USB 2.0大提速

    打开注册表,定位到“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbstor”下面,新建一个INF存储设备项,然后建立“MaximumTransferLength”=dword:001fffe0(001fffe0十进制数值为2097120,也就是2MB)的DEWORD值,保存后重启系统就完成了INF信息配置。

顶一下
(0)
0%
踩一下
(2)
100%
------分隔线----------------------------
你可能感兴趣的内容