2.1.1.7. USB MSC USB Attached SCSI Protocol (UASP)

“Attached”顾名思义,是附在某个上面的,此处即附在SCSI协议的上面的,即SCSI协议的补充部分。

UASP规范,定义了关于如何在USB 2.0和USB 3.0中,UAS的传输标准是如何实现的,并且给出了一些范例和一些推荐的做法。

2.1.1.7.1. 已有SCSI协议,为何还要再弄一个UASP

既然已经有了对应的SCSI协议,用于发送对应命令,实现对应功能。作为U盘等应用的话,直接实现对应的协议,符合对应的规范,不是也就可以实现对应功能了吗,为何还要另外再弄出一个SSCI的附属协议UASP?

那是因为,原先的BOT(Bulk Only Transport),虽然协议简单已实现,适合用于大容量存储设备中,但其就像一个单线程,不能同时并行执行多个传输。

即,对于BOT,每一个由Host发起数据传输(transaction),都必须等待设备完成,然后设备再返回对应的已完成状态信息,然后才能开始下一次数据传输。这样的话,对于整个数据传输过程的话,就造成了一个很大(大概有20%)的浪费(overhead)。

而对于USB 3.0来说,速度从USB 2.0的480Mb/s变成了 5.0Gb/s,而如果继续用BOT的话,那么相对来说CPU性能的利用率很低,USB传输速度也不太高,例如,有研究表明,2.4 GHz Core Duo™的CPU,利用率只要大概12%,CPU传输速度只有大约250MB/s,而USB 3.0的理论速度是5.0Gb/s=640MB/s,即还不到理论最大速度的一半。

因此,才有了这个UASP,对于SCSI协议进行了补充,以提高USB 2.0的USB总线利用率,和充分利用USB 3.0的全双工能力,可以使得传输速度达到大约400MB/s。此新的协议UASP的实现,也需要对应的新的Host端的软件,新的Device端的固件(Firmware)。

为了实现设备的向后兼容性,Device同时支持BOT和UAS。

而此UASP规范,定义了就是如何在USB 2.0和USB 3.0上实现对应的UAS协议。

当Host和Device都实现了此UAS协议的话,那么Host将通过Host端的SCSI Software Stack去访问Device,而USB的Interface也将从功能上看,变成Host Stack中的另外一个SCSI Host Adapter。Device需要实现SAM4的架构模型,这样Host也就可以查询(Queue)Device中的命令了,以及对应性能的提升。

【总结】

为了克服旧的BOT协议的总线利用率不高的缺点,所以定义了新的UAS协议,即UASP,来提升USB的传输效率,提升USB速度。

当然,我们此处为了实现U盘功能的话,当然希望性能越高越好了,所以,这个协议也是我们应该好好研究的。