开启辅助访问
 找回密码
 立即注册

USB2.0传输文件的最高速率是多少?

xsxhack 回答数6 浏览数2751039
USB2.0传输文件的最高速率是多少?
使用道具 举报
|
50039545
USB 2.0的理论传输速率为480Mbps(兆位每秒),即60 MB/s,但实际传输速度一般不超过30 MB/s。


USB 3.0(即USB 3.1 Gen1)的最大传输速率为5.0Gbps(500MB/s)。


USB 3.1 Gen2的最大传输速率为10.0Gbps(虽然USB 3.1标称的接口理论速率是10Gbps,但是其还保留了部分带宽用以支持其他功能,因此其实际的有效带宽大约为7.2Gbps)。USB 2.0为四针接口,USB 3.0和USB 3.1为九针接口。
回复
使用道具 举报
alanxzg
首先实际速度肯定低于理论速度,比如百兆以太网,能到10MB/s的速度就不错了,但是为啥USB差距这么大,主要是USB传输的无用包实在是太多了。
对于USB2.0,480Mbps是指总线的频率,也就说,总线信号每秒最多能传输这么多bit,这些信号包括控制信号和数据信号,目前来看看那数据信号都有什么:
每125us就有一台micro frame(微帧),每1ms还有一台frame,在USB规范里叫SOF,类似于一种同步信号。
标准USB传输过程:

in/out token,data0/1,ack,真正有效的数据就在data0/1里,如果一台data包放不下,那么会放到多个data里。
传输之前,对于2.0设备还要发起一台ping请求,确认设备是活着的。
USB不是一台全双工设备,通常的行为是这样:总线空闲,主机端请求数据,总线空闲,设备回应,总线空闲,主机准备接受数据,总线开始传输,传输完成总线空闲,主机检查数据无误,给设备回应说数据传输正常结束(不需要重传)。
对于U盘本身:

由于U盘规范的原因,大多数操作系统要求定期检查U盘状态(是否是alive的),这个请求叫做test unit ready(各个OS都有,大家就不要吵了,U盘规范上的)。
同时传输512字节(一台扇区的数据)要包括命令标识,命令号,LBN(逻辑块地址)以及乱七八糟一堆堆的东西,一台扇区大概需要将近600字节的数据。同时主机端还要给予相应的回应。
至于前面有人说bulk传输不会占满带宽,这也不是完全对的,确实USB传输分为interrupt传输,bulk传输,ISO传输,但是只有interrupt预留了很少,ISO会保留30%左右,但当没有ISO传输存在的时候,bulk是可以占掉这一部分的。
USB2.0规范里给了一台公式,算传输时间的(算法解释就太复杂了,见USB2.0 5.11.3 Calculating Bus Transaction Times):
High-speed (Input):
Non-Isochronous Transfer (Handshake Included)
= (55 * 8 * 2.083) + (2.083 * Floor(3.167 + BitStuffTime(Data_bc))) + Host_Delay

BitStuffTime(Data_bc) 这部分就是数据传输需要的时间,算起来麻烦,但是看到前面有一台2.083就能看出来,传输一台bit基本上需要2.083倍的时间,所以,简单的把480Mbps除以2.083,再转换成字节大概是:28.8MB/s,也就是说,最多就这么快,再刨除bulk-only模式里的那一堆堆的多余指令:一台包需要16个字节左右,Windows一次请求是4KB(可能是为了页对齐),再浪费掉1%左右的时间,以及host delay,也就是主机的校验延迟,那么实际速度就20多MB/s,不管是读或是写。
但是我知道肯定有人说,测得的实际速度比这个快,当然了,我也见过比这个快的,为啥?恰好我做过Windows里文件系统开发,也研究过Linux里的fat驱动,先说Linux,它很变态,你的写操作不一定真正写到磁盘上(证据我有,因为我有USB分析仪,能抓总线传输),Linux会在后台慢慢的写,前台看上去已经写进去。
Windows比Linux强一些,但是基于强大的预读和缓存,Windows也不是实时读写,所以会看到数字有跳动的情况(Windows内核里cc开头的函数就是干这个的)。
我们开发产品的过程中,看到过的最高总线利用率也就是80%左右(分析仪获得的总线数据),也就是说28MB的速度可能还要打个八折,崩溃去吧。
另外,U盘(flash介质)会更慢一些,因为U盘本身写的就慢,SSD和硬盘会好些,虽然SSD也是flash,但是SSD缓存大,并且有保障机制。
USB2.0除了拥有USB1.1中规定的1.5Mbps和12Mbps两个传输模式以外,还增加了480Mbps高速数据传输模式(注:第二版USB2.0的传输速率将达800Mbps,最高理想值1600Mbps)。虽然USB2.0的传输速度大大提升了,但其工作原理和模式是完全与USB1.1一样的,而提高到480 Mbps的传输速度的最关键技术就是提高单位传输速率:USB1.1的单位数据传输时间是1毫秒,而USB2.0的单位数据传输时间则达到了125微秒。
USB2.0的最高传输速率为480Mbps,即60MB/s。不过,大家要注意这是理论传输值,如果几台设备共用一台USB通道,主控制芯片会对每台设备可支配的带宽进行分配、控制。如在USB1.1中,所有设备只能共享1.5MB/s的带宽。如果单一的设备占用USB接口所有带宽的话,就会给其他设备的使用带来困难。
USB2.0 High Speed:理论速度是480Mbps,对应之前的USB2.0; USB2.0 Full Speed:理论速度是12Mbps,也就是过去的USB1.1
回复
使用道具 举报
aiwudi
USB2.0的带宽是480MB/S, 大约每秒中可以传输60MB的数据,但这是只理论值而矣。USB2.0接口的实际极限写入速度在25M/S左右,读速度在35M/S左右。而一般的U盘写入在10M左右,读在20M左右
回复
使用道具 举报
chris18bcq
USB2.0的理论传输速度为480 Mbps,即60 MB/s,但实际传输速度一般不超过30 MB/s。
回复
使用道具 举报
心心星星
理论上,USB2.0传输速度最高可达到480Mbps,即60MB/s,如果几台设备共用一台USB通道,主控制芯片会对每台设备可支配的带宽进行分配控制,所以USB2.0实际传输速度不超过30MB/s。
回复
使用道具 举报
RPG新手2号
USB2.0理论传输速度是480Mbps;但是传输速度是达不到480Mbps的,通常实际传输速度会在60Mb/s以内,常规传输一般在1-30Mb/s,接口定义要做的很标准才能到达60Mb/s。一般好的优盘可以接近上限,某多的低价扩容优盘估计就是下限了,还有就是电脑接口也会参差不齐所以传输速度还真不一定
回复
使用道具 举报
快速回复
您需要登录后才可以回帖 登录 | 立即注册

当贝投影