晓张 XiaoZhang.net http://www.xiaozhang.net [分享] [RSS]

日志

安装微软补丁,USB 2.0提速四成!

已有 1510 次阅读2012-8-6 14:55 |个人分类:IT世界| 晓张, USAP, BOT

 

安装微软补丁,USB 2.0提速四成!

 

 

虽然IntelAMD配备USB 3.0控制器的主板已经大量上市,但对于已经选择了只有USB 2.0的主板的用户来说,用USB 2.0闪存、移动硬盘拷贝大文件时,看着那蜗牛般的进度条,有木有种不耐烦的感觉啊?那么快来看看,提速其实很简单。

 

 

USB 2.0为啥达不到60MB/s?·不能并行的BOT

大家都知道USB 2.0的理论带宽是480Mbps,也就是60MB/s的数据传输速率,但实际使用中我们会发现这个理论速度是坑爹的,长期以来USB 2.0最高实际传输速度被限制在30MB/s左右,只能达到理论带宽的一半。这是由于落后的协议和编码方式造成的。

 

USB 2.0采用的是传统的Bulk-Only Transport(BOT)协议,由于没有进行改善,随着目前高速存储设备的出现,BOT协议阻碍USB传输速率的问题已经显现出来。基于此,USB 3.0的设计在USB 2.0的基础上新增了两组数据总线,而为了保证向下兼容,USB 3.0保留了USB 2.0的一组传输总线。

 

在传输协议方面,USB 3.0除了支持传统的BOT协议,还新增了USB Attached SCSI ProtocolUASP)协议,支持多命令并发执行和NCQ队列功能,这样就可以发挥出5Gbps的高速带宽优势,虽然目前只有很少的设备能达到这一传输速率。

 

传统BOT协议早在1999USB 1.1规范时就诞生了,USB设备在同一时间只能接收或处理一个命令,而到了USB 2.0时代,虽然设备传输速率得到了极大的提升,但BOT协议并没有改善,此时BOT协议限制USB传输速率已经显现出来,于是大容量数据交换就迫切需要新的传输协议,因此USB-IF组织就将SCSIUSB相结合推出了新的USAP,支持多命令并发执行和NCQ队列功能,极大的提高传输效率。另外由于支持USAP的主控设备都具备独立的计算内存模块,USB数据传输对CPU的依赖将会大幅降低。

 

USAP协议目前并没有大量发展,因为要实现USAP,除了主控设备需要支持此协议外,终端设备也需要支持USAP,这样产品的成本会增加,目前只有一些外置存储器支持USAP协议。

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

 

由于其中需要强制插0以保持发送端和接收端频率同步会造成USB 2.0传输带宽的浪费。而USB 3.0采用了时下流行的8b/10b编码方式,有效数据利用率为80%,也就是USB 3.0的有效数据传输带宽为500MB/s

 

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

 

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

 

 

小补丁为USB 2.0大提速

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

由于它是一个HotFix热修复补丁,并没有作为常规补丁随系统自动更新,因此我们平时也就体会不到它的作用,那么我们可以自己来手动下载安装。

从微软官方下载Windows6.1-KB2581464补丁,解压后安装。光安装补丁还不行,还需要手动对注册表进行一些修改,将USB 2.0存储设备的最大传输值从默认的64KB增加到2MB,这样才能让它的速度有所提升。

首先需要将存储设备的INF设备信息添加到注册表中。在设备管理器中的磁盘驱动器中找到当前的USB 2.0存储设备,右击它选择“属性”,切换到“详细信息”选项卡。在属性下拉菜单中,选择“父系”,这时在“值”的对话框中就会出现一串字符(如图1)。其中VID_xxxx&PID_xxxx字符就是USB 2.0存储设备唯一的INF设备标识,例如VID_090C&PID_1000,即090C1000

 

1

 

 

运行regedit,打开注册表编辑器,依次点击展开HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbstor。在usbstor下有几个子项目,新建一个名为“090C1000”的项,并选中它,然后在窗口右边的空白处右击新建一个名为“MaximumTransferLength”的DWORD值,然后双击,把它的值改为001fffe0(如图2,十进制数值为2097120,也就是2MB)。保存后重启系统。

 

2

 

 

实际测试效果

我们用金士顿DataTraveler 16GB闪存进行打补丁前后的对比测试,首先运行ATTO Disk Benchmark,在默认配置下,读写速度分别为34.9MB/s28MB/s,安装补丁后读写速度都出现了显著的增加,最高读取达到了43.2MB/s,写入速度也为34.6MB/s。接着用AS SSD测试持续读写速度,默认情况下,读取速度为29.4MB/s,写入速度只有25.1MB/s,安装补丁后,读写速度分别提升至42.9MB/s33.6MB/s

虽然这些速率在USB 3.0下算是小儿科,但是对于那些USB 2.0老用户来说在不升级USB 3.0的前提下获得40MB/s以上的读取传输速度,相对默认环境还是有不小的突破,能够节约不少拷贝文件的时间。

 

未安装软件,提升速度之前。

 

安装软件后,提升速度之后。

 

 

后记

由上我们可以看出影响USB 2.0传输速度的是传输协议和编码方式,而不是设备本身。

这种安装补丁的方式也适用于USB 3.0,因为USB 3.0也基于BOT传输协议,但是基于5Gbps高带宽,只有使用SSD这样的高速设备,加速前后的传输速度差异才会比较明显。

谈到USB 3.0USAP协议将是未来的一个重点开发对象,在USB 3.0性能瓶颈前,USB-IF组织将会大力推广USAP协议,相对于USB 2.0改善措施,USAP将带来USB传输史上的革命,它将全面取代现有的BOT传输协议。

 

 

收藏 分享 转发到微博 举报

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

成都宠物论坛|手机版|成都宠物网搜索|百度|谷歌|宠我网 ( 蜀ICP备07500266号 

GMT+8, 2024-5-1 06:39 , Processed in 0.108292 second(s), 17 queries .

© 2007 By www.Petovo.com Some rights reserved

回顶部