用于通用串行总线(usb)命令排队的方法和装置的制作方法

文档序号:6594467阅读:138来源:国知局
专利名称:用于通用串行总线(usb)命令排队的方法和装置的制作方法
用于通用串行总线(USB)命令排队的方法和装置领域本发明涉及通用串行总线(USB),具体涉及大容量存储类USB设备。背景通用串行总线(USB)是支持主计算机与多个可同时访问的设备(诸如可在主计算 机外部的外围设备)之间的数据交换的串行总线标准。USB设备包括人类接口设备,例如 鼠标、键盘、图形输入板和游戏控制器;成像设备,例如扫描仪、打印机和照相机;以及存储 设备,例如紧致盘只读存储器(CD-ROM)、软盘驱动器和数字视频盘(DVD)。USB主机经由物理USB发起去往/来自可访问USB设备的所有数据传输。数据传 输(事务)在主控制器发送标识数据传输的类型和方向、USB设备的地址以及该设备中的 端点编号的USB分组时发起。端点是作为USB主机与USB设备之间的通信流的终点的USB 设备的唯一可标识部分。端点方向可以是输入(去往主机)或输出(来自主机)。USB主机与USB设备之间的数据和控制交换被支持作为一组单向或双向逻辑管 道。逻辑管道是USB主机与USB设备中的端点之间的逻辑抽象,用于在USB主机与USB设备 之间交换数据和控制分组。该USB设备可在多个逻辑管道(管道束)上向主机传输数据, 例如可能存在用于向USB设备中的输出端点传输数据的独立的单向逻辑管道和用于从USB 设备中的输入端点向USB主机传输数据的另一单向逻辑管道。来自现有工业标准存储协议的命令集可用于在USB主机与大容量存储类USB设备 之间通信,例如小型计算机系统接口(SCSI)协议。SCSI协议是用于在主机系统与诸如存 储设备的设备之间传输数据的标准集。SCSI定义发起方(例如主机)与目标(例如设备) 之间的通信,其中发起方发送命令至目标。按照命令描述符块(CDB)编码的SCSI命令从发 起方被发送至目标。该CDB包括操作码和命令专属参数。SCSI命令包括读取命令和写入命 令。在完成数据传输(例如向目标传输写入数据和向发起方传输读取数据)之后,目标返 回指示该命令是否成功完成的状态码。USB通过将SCSI命令封装于USB分组的USB包装(头部)中来与大容量类USB设 备通信。例如,USB主机所使用的命令集可以是通过SCSI主命令-2(SPCD定义的命令集。一对单向逻辑管道被配置用于传输在主机与大容量类USB设备之间交换的SCSI ⑶B、SCSI状态码以及数据。输入管道(在USB设备中的端点与USB主机之间)被配置成 将数据和命令传输至该设备。输出管道(在USB设备中的端点与USB主机之间)被配置成 将数据和状态从该设备传输至USB主机。每个逻辑管道与主机(发起方)中的用于存储要 经由USB传输的数据的逻辑缓冲器相关联。


随着以下详细描述的进行,并参考其中相同标记描述相同部件的这些附图,要求 保护的主题的实施例的特征将变得显而易见,在附图中图1是根据本发明原理的包括USB主机和大容量存储类USB设备的系统的实施例 的框图,该系统为该大容量存储类USB设备中的命令排队和/或无序命令处理提供支持;
图2是图1中所示的管道束中的标准批量管道的客户机侧的框图;图3是根据本发明的原理的流式批量管道的实施例的框图;图4是示出为流式批量管道服务的用于输入或输出流端点流的流协议状态机的 实施例的状态图;图5是包括经由包括流管道的管道束IM通信的USB主机和大容量存储类USB设 备的系统的实施例的框图,该系统为该大容量存储类USB设备中的命令排队和/或无序命 令处理提供支持;图6是示出在该设备中实现的用于在该设备与主机之间的逻辑管道上传输数据 的方法的实施例的流程图;以及图7是包括USB主机和USB设备的系统的框图,该系统提供对USB设备中的命令 排队和/或无序命令处理的支持。虽然将参考要求保护的主题的说明性实施例继续进行以下详细描述,但该主题的 替代物、修改以及变型对本领域技术人员而言将显而易见。因此,要求保护的主题旨在被广 义地理解,而且仅如所附权利要求中所陈述的那样定义。
具体实施例方式大容量存储类USB设备的示例是硬盘驱动器(硬驱动器、硬盘或固定盘驱动器)。 硬盘驱动器包括主轴,该主轴支持具有存储经数字编码数据的磁表面的一个或多个平坦圆 盘(盘片)。当盘片以例如每分钟4200转(RPM)、3600RPM、7200RPM或MOORPM的旋转速度 旋转时,读/写磁头沿着盘片移动以从盘片读取数据或将数据写入盘片。硬盘驱动器是将 数据按照一个或多个扇区分块传输至盘片(存储介质)或从盘片传输的块存储设备。扇区 存储固定数量的字节,例如512字节或IOM字节。存在许多串行的存储协议套件,诸如串行附连SCSI(SAQ和串行高级技术附件 (SATA)。SATA协议的一个版本在由串行ATA工作组于2003年1月7日公布的“串行ATA 高 速串行化 AT 附件(Serial ATA High Speed Serialized AT Attachment),,修订 1. Oa 中有 描述。SAS协议的一个版本在由美国国家标准协会(ANSI)于2003年9月18日公布的信息 技术标准国际委员会(INCITS)TIO技术委员会的工作草案美国国家标准项目T10/1562-D
修订 1 中的“信息技术-串行附连SCSI-1. 1 (Information Technology-Serial Attached
SCSI-1. 1)”中有描述。典型地,诸如硬盘驱动器的存储设备支持硬盘驱动器中的多个命令的排队。当从 主机接收的多个命令可能在该硬盘驱动器中排队时,该硬盘驱动器可对排队命令的执行重 新排序。例如,可按照与当前读/写头位置的接近程度而不是按照命令接收的顺序来对存 储于命令队列中的读命令和写命令进行服务。对硬盘驱动器中的命令队列中存储的命令重 新排序的能力可导致平均访问时间的减少。一对单向逻辑管道与大容量存储类USB设备相关联,即输出逻辑管道以及输入逻 辑管道。SCSI命令和写数据在输出逻辑管道上从主机被发送至设备,而SCSI完成状态和读 取数据在输入逻辑管道上从设备被发送至主机。每个逻辑管道与主控制器中的存储器中的单个逻辑缓冲器相关联。因此,USB主 机可能每次仅向硬盘驱动器发出单个命令。因为每次仅有一个命令未完成,所以不能在该硬盘驱动器中使用存储协议所支持的命令排队和/或无序命令功能。在本发明的实施例中,主机计算机中的USB主控制器支持对每个逻辑管道的多个 逻辑缓冲器的管理,以允许可在USB物理总线上访问的大容量存储类USB设备中的大容量 存储设备命令排队和/或无序命令处理。图1是根据本发明原理的包括USB主机102和大容量存储类USB设备104的系统 100的实施例的框图,该系统100为该大容量存储类USB设备104中的命令排队和/或无序 命令处理提供支持。USB主机102包括USB主控制器106、USB系统108以及客户机110。该USB设备 104包括USB总线接口 112、USB逻辑设备114和功能116。USB逻辑设备114包括一个或 多个USB端点。在一个实施例中,该USB设备104是大容量存储类USB设备,例如盘驱动器、数字 视频盘(DVD)驱动器、紧致盘(⑶)驱动器、冗余独立磁盘阵列(RAID)、带驱动器或其它大容 量存储类存储设备。USB主机102在USB物理总线1 上经由也称为管道束124的一组通信流(逻辑 管道)中的一个管道与USB设备104中的USB逻辑设备114通信。如之前所讨论地,逻辑 管道是USB主机与USB设备中的端点之间的逻辑抽象,用于在USB主机与USB设备之间交 换数据和控制分组。USB物理总线1 上的通信的基本要素是包括开头、信息和结尾的USB分组。该分 组信息可包括1到1025个字节,其中第一个字节存储分组标识符。存在通过该分组标识符 所标识的四种分组类别令牌、数据、握手以及特殊。令牌分组被用于建立通过握手分组确 认的数据分组。握手分组指示数据事务的状态。握手分组类型包括指示令牌或数据分组的 成功接收的ACK和指示接收器因为例如接收器忙或没有处理该分组的资源而无法接受该 分组的NACK。USB逻辑设备114具有多个独立端点。USB逻辑设备114中的端点是USB主机102 与USB设备104之间的通信流的终点。每个终点可具有一个数据流方向(即从设备到主机 的输入或从主机到设备的输出)。USB管道(逻辑管道)126是USB设备上的端点与USB主 机102中的客户机110之间的关联。逻辑管道1 表示在USB主机102中的客户机110中 的缓冲器与USB设备104中的端点之间移动数据的能力。USB主机102中的客户机110包括存储器,该存储器的一部分被分配给每个端点以 提供用于存储将传输至(移至或移出)USB设备104的数据的逻辑缓冲器。在逻辑缓冲器 与关联于管道124的USB端点之间存在1 1映射。如图1所示,系统100所执行的功能可被分成多个层USB总线接口层122、USB设 备层120以及USB功能层118。该USB总线接口层122提供USB主机102与USB设备104之间的物理连接性。USB 设备层120执行通用USB操作。该USB功能层118为USB主机102和USB设备104提供附 加功能。在功能层118处,USB在USB主机102中的客户机110与USB设备104中的功能 116之间提供通信服务。客户机110请求跨USB在该组逻辑管道(“管道束”)124中的一 个管道上移动数据。数据由接口层122在物理USB总线1 上物理地传输。
6
在接口层122处,取决于传输方向,主控制器106或USB总线接口 112在跨USB物 理总线1 发送数据之前将其分组化。在本发明的实施例中,在逻辑层118,具有四个逻辑管道126的管道束IM被USB 设备104定义为在客户机110与USB设备104中的功能114之间移动SCSI命令、数据以及 状态。管道束124中的每个逻辑管道被配置为“批量传输”型管道(批量管道),即能使 用任何可用带宽的支持在可变时刻传输大量数据的管道。批量管道是单向流管道(输入或 输出)。标准的批量管道在USB 2. 0标准中有描述。流式批量管道将在稍后结合图3进行 描述。流式批量管道提供利用允许用于大容量存储设备命令排队的无序数据传输的流协议 在主机与设备之间移动数据流的能力。管道束IM中的四个逻辑管道1 如下定义(1)客户机与标准大容量输出端点 之间的逻辑管道,用于向大容量存储类USB设备104发送命令;( 客户机与流批量输入端 点之间的逻辑管道,用于与从大容量存储类USB设备104到USB主机102的读命令相关联 的数据传输;C3)客户机与流批量输出端点之间的逻辑管道,用于与从USB主机到大容量存 储类USB设备的写命令相关联的数据传输;以及(4)客户机110与流批量输入端点之间的 逻辑管道,用于与命令完成相关联的传输。在一个实施例中,与命令完成相关联的逻辑管道 是标准批量输入管道。图2是图1中所示的管道束124中的标准批量管道200的客户机110侧的框图。 设备104在主机102中见到单个逻辑缓冲器。缓冲器列表204允许逻辑缓冲器被定义为多 个物理缓冲器206。该标准批量管道200包括端点202,该端点202包括缓冲器列表204,该 缓冲器列表204在主机102中的存储器中定义一组缓冲器206,在USB物理总线1 上传输 的数据被移入或移出该组缓冲器206。标准批量管道200被用于从USB主机102中的客户 机110中的缓冲器列表204中的一个或多个缓冲器206向USB设备104中的标准端点202 传输数据,或从USB设备104中的标准端点202向USB主机102中的客户机110中的缓冲 器列表204中的一个或多个缓冲器206传输数据(即在它们之间传输数据)。缓冲器列表 204提供指向被分配给标准批量管道200的每个缓冲器206的指针。存储于由缓冲器列表 204引用的缓冲器206中的数据被按顺序传输。标准批量管道200的传输方向被初始化为 输入或输出,且标准批量管道200使用缓冲器列表204在相应方向上(即输入或输出)按 顺序向/从主机102中的存储器中的缓冲器206传输数据。在一个实施例中,标准批量管 道200被用于向大容量存储类USB设备104传输SCSI命令。在另一个实施例中,标准批量 管道200被用于向大容量存储类USB设备104传输高级技术附件(ATA)命令。在本发明的实施例中,除了为每个USB端点定义单个缓冲器列表204的标准批量 管道之外,可在USB设备104与USB主机102之间定义流式批量管道来为每个USB端点定 义多个缓冲器列表,这样在USB设备104中实现无序命令处理。图3是根据本发明的原理的流式批量管道300的实施例的框图。该流式批量管道300包括流数组304和流端点302。该流数组304包括与流端点 302相关联的一组缓冲器列表204。流定义USB数据传输与流数组304中的缓冲器列表204 之间的关联,且具有相关联的流标识符。参照图2,标准批量管道200与主机102中的存储器中的单个缓冲器列表204相关联,即在标准批量管道200上传输的所有数据被移至或移出一组存储器缓冲器。参照图3,与图2所示的标准批量管道200对比,与流式批量管道300相关联的流 数组304允许多个存储器缓冲器列表204与单个流端点302相关联,从而允许USB设备将 数据路由至特定存储器缓冲器列表204或从特定存储器缓冲器列表204路由数据。流数组304中的每个缓冲器列表204通过唯一的流标识符来标识。该流标识符允 许多个USB主机进程访问同一 USB端点,还允许主机102中的主控制器106和设备104中 的流端点114在它们各自的地址空间之间直接传输数据(端点至主机缓冲器或主机缓冲器 至端点)O该流标识符可存储在USB分组头部中的流标识符SID)字段中,以区分与该USB分 组相关联的流。该流标识符还可用作用于从流数组304选择一个缓冲器列表204的流数组 304的索引。流数组304中的一个条目针对流端点304所支持的每个流而设置。通过使用流管道和关联的流标识符,USB设备104能对命令有效地进行重新排序, 因为USB设备能基于要传输出或传输入的特定流标识符选择与流端点相关联的多个缓冲 器列表中的一个列表。在一实施例中,主机102和设备104两者包括用于管理流管道中的 流端点的流协议状态机(SPSM)。将结合图4讨论该流协议状态机。图4是示出为流式批量管道300服务的输入或输出流端点流的流协议状态机400 的一实施例的状态图。如下文所讨论地,输入数据传输的数据传输方向是去往主机的,即主 机102中的存储器中的物理缓冲器从设备104接收功能数据,而输出数据传输的数据传输 方向是从主机102发出。如之前所讨论地,在主机102与设备104中的流端点之间传输的数据分组包括该 分组的头部中的流标识符字段,用于标识与数据传输相关联的流。此外,事务分组被定义 为在主机102与设备104之间传递流标识符。在一个实施例中,提供了四种分组类型DP、 ACK、NRDY以及ERDY。对于输入管道,主机产生ACK分组,且设备产生DP分组。对于输出管 道,主机产生DP分组,且设备产生ACK分组。取决于该管道是输入管道还是输出管道,“主 机事务分组”分别指的是ACK或DP分组。取决于该管道是输入管道还是输出管道,“设备事 务分组”分别指的是DP或ACK分组。“USB分组”是任何分组类型的概括引用。如图4所示,该状态机具有如下标记的五种状态禁用、首要管道、空闲、开始流以 及移动数据。禁用状态是流协议状态机在设备104中的流端点已被主机102配置之后的初 始状态。向另一状态的转换可由主机102或设备104通过使用USB分组来发起。首要管道状态由主机102发起,以通知设备104缓冲器列表204已由主机102添 加或修改。在将缓冲器列表204递送至流端点302之后,主机102发送主机事务分组,这导 致流协议状态机400转换至首要管道状态。设备104以NRDY分组作出响应,这导致向空闲 状态的转换。当流协议状态机400处于空闲状态时,并未选择流标识符。在该空闲状态下,流协 议状态机400等待主机发起的向首要管道状态或移动数据状态的转换,或等待设备发起的 向开始流状态的转换。如之前所讨论地,主机发起和设备发起的转换通过使用源自主机102 或设备104的事务分组来实现。主机和设备发起的转换提供当前流标识符,以使流管道能 开始向/从与流标识符关联的主机102中的存储器中的物理缓冲器206移动数据。当前流 标识符用于标识主机用来移动数据的缓冲器列表。因此,当前流标识符可由主机或设备取决于数据传输是由主机还是设备发起的来选择。当在空闲状态下时,设备104可发出ERDY分组,以使流协议状态机转换至开始流 状态。在ERDY分组中传递至主机的流标识符由主机用于发起向/从与流标识符相关联的 缓冲器206的数据传输(输入或输出)。如果存在流标识符的有效缓冲器列表204,则主机 102发起数据传输,且流协议状态机400转换至移动数据状态。如果不存在流标识符的有效 缓冲器列表,则主机102向设备104发送事务分组,以指示数据传输已被拒绝,且流协议状 态机返回至空闲状态。如果设备104准备好传输该流标识符的数据,则设备104用事务分 组确认传输,且流协议状态机400转换至移动数据状态。在移动数据状态下,传输继续直到 主机102用尽与该流标识符相关联的缓冲器列表204,或设备104完成与该流标识符相关联 的数据传输。在任一情况下,流协议状态机400转换至空闲状态。与导致从空闲状态转换至移动数据状态的主机发起的数据传输对比,开始流状态 由设备104发起,以选择流(与流端点相关联的缓冲器列表)并开始流传输。如果设备所选 择的流被主机接受,则流协议状态机转换至移动数据状态以传输当前流标识符的数据。如 果设备所选择的流被主机102拒绝,则流协议状态机400返回至空闲状态。在移动数据状态下,与设备104中的流端点302相关联的特定流的数据在主机102 与设备104之间传输。用于选择数据被移动的流的当前流标识符由主机102和设备104 二 者保持。有效流标识符值由主机102编码并传递至设备104。这些值可通过带外的设备类 别定义的方法被传递至主机。例如,利用在分配用于将SCSI命令发送至大容量存储类设备 104的管道束124中的逻辑批量管道上发送的SCSI命令,有效的流标识符值被传递至设备 104。这些值是带外的,因为它们不在流式批量管道上传递至该设备。在其它实施例中,流 标识符可在输出流式批量管道上被传递至该设备。该数据被传输至与流标识符相关联的缓冲器206。使用流标识符允许以任何顺序 传输流的数据,因为每个流标识符分配有单独的缓冲器列表204。因此,可给两个进程A和 B各分配唯一的流标识符,从而允许每个进程的命令无序地完成。在移动数据状态下,与当前选择的流相关联的数据被传输入或传输出。如果移动 数据状态通过主机发起的流选择进入,则该流由主机102选择。如果该移动状态从开始流 状态进入,则该流由设备104选择。流协议状态机400在该流的数据传输完成之后转换回 空闲状态,或在主机102或设备104终止该流的数据传输时转换回空闲状态。向空闲状态 的转换使流式批量管道上的选择用于数据传输的流无效。流由存储在流标识符字段中的流标识符值选择。该流标识符字段可被包括在数据 分组或带内控制分组中。例如,该流标识符可被存储在当前未由USB 3.0协议使用的分组 头部或扩展事务格式USB 2.0分组中的字段(一个或多个比特)中。在一个实施例中,流 标识符值与SCSI命令相关联。发送至该设备的每个SCSI命令包括流标识符,且该设备104 使用该流标识符来标识移入/移出与SCSI命令相关联的主机102的数据分组和状态分组。 在用于ATA存储协议的实施例中,流标识符与ATA命令相关联。该流标识符的保留值可指示该流标识符无效,例如,首要标识符被保留用于转换 入和转换出首要管道状态,或无流标识符指示主机对设备发起的流选择的拒绝。流协议状态机400可在任何另一状态中检测到错误时转换至禁用状态。该错误状 况可在转换至另一状态之前在禁用状态中进行处理。
图5是包括经由包括流管道的管道束IM通信的USB主机102和大容量存储类 USB设备104的系统500的实施例的框图,该系统500为该大容量存储类USB设备104中的 命令排队和/或无序命令处理提供支持。管道束IM包括在客户机102与标准大容量输出端点510之间的用于向大容量存 储类USB设备104发送命令的标准批量管道(“命令输出”)508。管道束IM还包括在客 户机102与流式批量输入端点512之间的第一流式批量管道(“数据输入”)506-1,用于从 大容量存储类USB设备向主机102传输与读命令相关联的数据;在主机102与流式批量输 出端点514之间的第二流式批量管道(“数据输出”)506-2,用于从USB主机102向大容量 存储类USB设备104传输与写命令相关联的数据。管道束IM还包括在主机102与流式批 量输入端点516之间的第三流式批量管道(“状态输入”)506-3,用于传输与命令完成相关 联的响应数据。各个流式批量管道506-1、506-2、506-3中的每一个具有在主机102中的存 储器中的相应流数组520-1、520-2以及520-3。一从主机进程接收到读取大容量存储类USB设备104中存储的数据的命令(例如 SCSI命令或ATA命令),主机102就向该命令分配流标识符。该流标识符用于标识命令、以 及在主机102中的存储器中为该命令分配的响应(例如SCSI状态)和数据缓冲器。该命 令被存储于与标准批量管道508相关联的缓冲器列表518中的缓冲器中,该管道508被分 配用于将命令从主机102逻辑地传输至大容量存储类USB设备104。取决于命令类型(即该命令是否导致数据传入或传出大容量存储类USB设备 104),为与用于数据传输的流式批量管道相关联的流数组520-1、520-2中的一个数组中的 命令分配关联于与该流标识符相对应的条目的缓冲器列表。还为该命令分配与用于响应的 流式批量管道506-3相关联的流数组520-3中的条目。大容量存储类USB设备104可将从主机102接收的命令排队,并可按照任何顺序 处理所排队的命令。当大容量存储类USB设备104准备好在流式批量管道(“数据输入,数 据输出”)506-1、506-2中的一个上进行数据传输(输入或输出)时,该数据被传入/传出 基于特定命令所提供的流标识符而为该特定命令分配的流数组中的数据缓冲器列表中的 数据缓冲器。流标识符和流数组520-1、520-2、520_3的使用允许多个主机软件进程在同一流 式大容量端点中将命令排队,还允许主机102中的主机控制器106和设备104中的端点利 用它们各自地址空间之间的直接存储器存取(DMA)来传输数据。此外,设备可发起用于数 据传输的主机DMA操作而无需任何主机介入。例如,该设备可通过将具有流标识符的事务 分组发送至主机来选择DMA上下文(即缓冲器列表),以将状态改变至开始流状态。该流标 识符指定数据将被传入/传出主机中的位置。基于该流标识符值,主机控制器106将该流 数组中的适当的缓冲器列表指针(地址)装载到主机中的DMA控制器中,从而DMA传输进 行而无需任何处理器介入。该机制提供USB设备能有效地重新排序命令的手段,因为它能 基于流标识符选择将数据传入主机中的特定缓冲器。例如,在用于支持ATA或SATA存储协 议的大容量存储类设备的实施例中,流标识符提供对第一方直接存储器存取(FPDMA)的支 持以允许该设备在该设备与主机中的缓冲器之间直接传输数据。除了允许支持大容量存储类USB设备104中的命令排队之外,流标识符的使用还 允许具有多个芯的系统中的特定芯被选择,用于处理该命令的完成。
本领域技术人员已知的各种主机和设备流服务算法可被用于选择要服务的下一 流。这些方案超出了本发明的范围。图6是示出在该设备中实现的用于在设备104与主机102之间的逻辑管道上传输 数据的方法的实施例的流程图。该数据传输可以在输入管道或输出管道上进行。在输入管 道中,主机中的端点缓冲器206从该设备接收数据。在输出管道中,主机中的端点缓冲器 206存储要传输至该设备的数据。在框600,设备104等待初始端点缓冲器由主机104中针对逻辑管道进行配置(分 配)。在配置端点缓冲器之后,主机向设备104发出事务分组,且该主机事务分组中的流标 识符被设置为“首要”以通知目标已分配到端点缓冲器。在端点缓冲器由主机102第一次 分配给管道时发出“首要”主机事务分组。一接收到“首要”主机事务分组,处理继续至框 602。在框602,响应于接收指示端点缓冲器已由主机102分配的“首要”主机事务分组, 设备104向主机发送NRDY分组,其中流标识符被设置为“首要”,表明它已记录主机具有准 备好传输数据的流。处理继续至框604。在框604,如果设备104具有准备好传输数据的流,则该设备104可提出流选择,主 机102可为该流选择发起数据传输。如果该流选择由设备104发起,则处理继续至框606。 如果不是,则处理继续至框605。在框605,传输数据的流选择可由主机102发起。为发起流选择,主机102向设备 104发出主机事务分组,且流标识符被设置为“流η”。如果分配到的端点缓冲器用于最后提 出的流标识符,则主机102可发起流选择,以例如恢复需要由主机102分配附加端点缓冲器 的流标识符的数据传输。如果该流选择由主机102发起,则处理继续至框607。如果不是, 则处理继续至框602。在框606,设备104请求其开始向主机的流传输,或主机102开始向设备的流传输。 为了请求流传输,设备104向主机发出ERDY分组,其中流标识符被设置为“流η”(有效流) 且流编号大于0。处理继续至框608。在框607,设备104确定主机所提出的流是否准备好传输数据。如果该流就绪,则 处理继续至框610。如果不是,则处理继续至框602。在框608,设备104等待主机102接受或拒绝该设备所提出的流选择。其流标识 符被设置为“流η”的主机事务分组表明主机102已经接受所提出的流。如果该流被接受, 则处理继续至框610。如果该流未被接受,则设备104接收其中流标识符字段被设置为“无 流”的主机事务分组。在一个实施例中,如果没有端点缓冲器可用于设备选择的流标识符,则主机102 拒绝设备104的流选择。主机102可在分配用于流标识符的端点缓冲器之后发起之前提出 的流选择。如果该流选择被主机拒绝,则处理继续至框602。在框610,在主机端和设备端上均设置该流标识符,且数据从该设备移至主机上针 对该管道为该流分配的端点缓冲器,或从端点缓冲器移至该设备。当端点缓冲器可用于主 机中的流时数据被移动,且设备具有要移动至该主机的该流的数据,或主机具有要移动至 该设备的该流的数据。“空闲”循环由框602、604和605组成。在该循环中,设备检查首要管道转换602、
11设备发起传输605或主机发起传输605。图7是包括USB主机710和USB设备104的系统的框图,该系统提供对USB设备 104中的命令排队和/或无序命令处理的支持。该USB设备104包括USB接口 730、存储协 议功能732和存储介质734。在一个实施例中,存储协议功能732执行SATA协议相关存储 功能。在另一个实施例中,存储协议功能732执行SCSI协议相关功能。存储介质734包括 用于存储数据的一个或多个盘片(存储介质)。系统700包括处理器701、存储器控制器中枢(MCH) 702以及输入/输出(I/O)控 制器中枢(ICH)704。该MCH 702包括控制处理器701与存储器708之间的通信的存储器控 制器706。处理器701和MCH 702在系统总线716上通信。在替代实施例中,MCH 702中的 功能可被集成到处理器701中,且处理器701可直接耦合到ICH 704。处理器701可以是多种处理器中的任一种,诸如单核htel Pentium IV 处理 器、单核 htel Celeron 处理器 Jntel Xkale 处理器或诸如 htel Pentium DJntel Xeon 处理器、Intel Core Duo处理器或任何其它类型的处理器。处理器708可以是动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、 同步动态随机存取存储器(SDRAM)、双倍数据率2(DDR2)RAM、Rambus动态随机存取存储器 (RDRAM)或任何其它类型的存储器。ICH 704可利用诸如直接介质接口(DMI)的高速芯片-芯片互连714或任何其它 类型的芯片-芯片接口耦合至MCH 702。DMI支持经由两个单向道的2吉比特/秒的并发 传输速率。ICH 704可包括用于控制与耦合至ICH 704的至少一个USB大容量存储类USB设 备712通信的通用串行总线(USB)主控制器710。ICH 704可利用诸如小型计算机系统接 口(SCSI)或ATA的存储协议通过将SCSI/ΑΤΑ命令、数据以及SCSI/ΑΤΑ状态封装于USB封 装中在USB物理总线718上与USB大容量存储类USB设备712通信。已经针对通用串行总线描述了本发明的实施例。然而,本发明不限于通用串行总 线;本发明的实施例可供支持命令排队和无序完成的任何总线协议或支持从设备发起的主 机缓冲器列表/缓冲器选择的任何主/从总线协议使用。本发明的实施例还可用于对完成中断的核目标确定。例如,在使用外围部件互连 的系统的实施例中,可为每个缓冲器列表204分配中断向量,并利用流标识符选择缓冲器 组。PCI MSI-X中断向量可指定核和该核上的向量。在多核系统中,SCSI命令在特定核上被构造,这意味着该核的高速缓冲存储与特 定命令相关的信息。核目标确定允许主控制器在命令完成时中断发起该命令的核,从而存 储在该核的高速缓存中的信息可被重新利用。如果完成被发送至另一核,则导致附加的系 统存储器活动,而该“另一”核装载与该命令有关的信息。核目标确定降低存储器和电源利 用率。本发明的替代实施例还包括机器可访问的介质,该介质包含用于执行本发明的操 作的指令。此类实施例可被称为程序产品。此类机器可访问介质可无限制地包括诸如软 盘、硬盘、紧致盘只读存储器(CD-ROM)、只读存储器(ROM)和随机存取存储器(RAM)的存储 介质,以及通过机器或设备制造或形成的其它有形粒子排列。指令还可用于分布式环境,且 可本地和/或远程存储以供单处理器机器或多处理器机器使用。
虽然已经参照本发明实施例具体示出和描述了本发明,但本领域技术人员应当理 解的是,可对本发明作出形式上和细节上的多种修改,而不背离如所附权利要求所包含的 本发明的实施例的范围。
权利要求
1.一种方法,包括在主机中分配多个缓冲器列表以存储将要在所述主机与设备之间的流式批量管道上 移动的数据,每个缓冲器列表与一流标识符相关联;以及在所述设备与关联于所述流标识符的所述缓冲器列表之间的所述流式批量管道上启 用数据传输。
2.如权利要求1所述的方法,其特征在于,还包括允许用于所述数据传输的流标识符由所述主机或所述设备来选择。
3.如权利要求2所述的方法,其特征在于,还包括在批量逻辑管道上从所述主机向所述设备传输命令;以及在状态流式批量管道上从所述设备向所述主机传输状态。
4.如权利要求3所述的方法,其特征在于,所述流式批量管道是用于从所述设备向所 述主机传输数据的数据输入流式批量管道。
5.如权利要求3所述的方法,其特征在于,所述流式批量管道是用于从所述主机向所 述设备传输数据的数据输出流式批量管道。
6.如权利要求1所述的方法,其特征在于,所述设备是大容量存储类通用串行总线设备。
7.一种装置,包括主机中的多个缓冲器列表,用于存储将要在所述主机与设备之间的流式批量管道上移 动的数据,每个缓冲器列表与流标识符相关联;以及控制逻辑,用于在所述设备与关联于所述流标识符的所述缓冲器列表之间的所述流式 批量管道上启用数据传输。
8.如权利要求7所述的装置,其特征在于,所述控制逻辑允许所述用于数据传输的流 标识符由所述客户机或所述设备来选择。
9.如权利要求8所述的装置,其特征在于,所述控制逻辑用于在标准批量逻辑管道上 从所述主机向所述设备传输命令,且用于在状态流式批量管道上从所述设备接收状态。
10.如权利要求7所述的装置,其特征在于,所述流式批量管道是用于从所述设备向所 述主机传输数据的数据输入流式批量管道。
11.如权利要求7所述的装置,其特征在于,所述流式批量管道是用于从所述缓冲器向 所述设备传输数据的数据输出流式批量管道。
12.如权利要求7所述的装置,其特征在于,所述设备是大容量存储类通用串行总线 (USB)设备。
13.一种系统,包括动态随机存取存储器;主机中的多个缓冲器列表,用于存储将要在所述主机与设备之间的流式批量管道上移 动的数据,每个缓冲器列表与流标识符相关联;以及控制逻辑,用于在所述设备与关联于所述流标识符的所述缓冲器列表之间的所述流式 批量管道上启用数据传输,且所述控制逻辑允许用于数据传输的流标识符由所述主机或所 述设备来选择。
14.如权利要求13所述的系统,其特征在于,所述主机是通用串行总线(USB)主机,且所述设备是大容量存储类USB设备。
15.一种方法,包括在命令管道上从主机接收高级技术附件(ATA)命令,所述ATA命令被封装于通用串行 总线协议分组中,所述通用串行总线协议分组包括标识所述主机中被分配用于存储与所述 ATA命令相关联的数据的缓冲器列表的标识符;存储所述ATA命令和关联标识符;通过在所述设备中的存储介质与由所述设备或主机选择的所述缓冲器列表之间的数 据流式批量管道上传输数据来处理所述ATA命令,所述缓冲器列表与所述流标识符相关 联;以及在状态流式批量管道上将封装于通用串行总线协议分组中的ATA命令状态和所述关 联标识符转发至所述主机。
16.如权利要求15所述的方法,其特征在于,在处理所储存的ATA命令之前处理所接收 的另一 ATA命令。
17.如权利要求15所述的方法,其特征在于,第一方直接存储器存取被用于在所述数 据流式批量管道上传输所述数据。
18.如权利要求15所述的系统,其特征在于,所述主机是通用串行总线(USB)主机,且 所述设备是大容量存储类USB设备。
19.一种方法,包括在命令管道上从主机接收小型计算机系统接口(SCSI)命令,所述SCSI命令被封装于 通用串行总线协议分组中,所述通用串行总线协议分组包括标识所述主机中被分配用于存 储与所述SCSI命令相关联的数据的缓冲器列表的标识符;存储所述SCSI命令和关联标识符;通过在所述设备中的存储介质与由所述设备或主机选择的所述缓冲器列表之间的数 据流式批量管道上传输数据来处理所述SCSI命令,所述缓冲器列表与所述流标识符相关 联;以及在状态流式批量管道上将封装于通用串行总线协议分组中的SCSI命令状态和所述关 联标识符转发至所述主机。
20.如权利要求19所述的方法,其特征在于,在处理所储存的SCSI命令之前处理所接 收的另一 SCSI命令。
全文摘要
提出了一种用于提高经由通用串行总线(USB)可访问的大容量存储类设备的性能的方法和装置。通过在USB主机中提供支持以允许在大容量存储类设备中支持命令排队和第一方DMA(FPDMA)来提高性能。
文档编号G06F13/28GK102119381SQ200980131657
公开日2011年7月6日 申请日期2009年7月8日 优先权日2008年7月11日
发明者S·B·麦克高文 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1