CN102119381B - 用于通用串行总线(usb)命令排队的方法和装置 - Google Patents

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

Info

Publication number
CN102119381B
CN102119381B CN200980131657.9A CN200980131657A CN102119381B CN 102119381 B CN102119381 B CN 102119381B CN 200980131657 A CN200980131657 A CN 200980131657A CN 102119381 B CN102119381 B CN 102119381B
Authority
CN
China
Prior art keywords
main frame
pipeline
data
impact damper
equipment
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN200980131657.9A
Other languages
English (en)
Other versions
CN102119381A (zh
Inventor
S·B·麦克高文
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN102119381A publication Critical patent/CN102119381A/zh
Application granted granted Critical
Publication of CN102119381B publication Critical patent/CN102119381B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)
  • Bus Control (AREA)

Abstract

提出了一种用于提高经由通用串行总线(USB)可访问的大容量存储类设备的性能的方法和装置。通过在USB主机中提供支持以允许在大容量存储类设备中支持命令排队和第一方DMA(FPDMA)来提高性能。

Description

用于通用串行总线(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(SPC-2)定义的命令集。
一对单向逻辑管道被配置用于传输在主机与大容量类USB设备之间交换的SCSI CDB、SCSI状态码以及数据。输入管道(在USB设备中的端点与USB主机之间)被配置成将数据和命令传输至该设备。输出管道(在USB设备中的端点与USB主机之间)被配置成将数据和状态从该设备传输至USB主机。每个逻辑管道与主机(发起方)中的用于存储要经由USB传输的数据的逻辑缓冲器相关联。
附图说明
随着以下详细描述的进行,并参考其中相同标记描述相同部件的这些附图,要求保护的主题的实施例的特征将变得显而易见,在附图中:
图1是根据本发明原理的包括USB主机和大容量存储类USB设备的系统的实施例的框图,该系统为该大容量存储类USB设备中的命令排队和/或无序命令处理提供支持;
图2是图1中所示的管道束中的标准批量管道的客户机侧的框图;
图3是根据本发明的原理的流式批量管道的实施例的框图;
图4是示出为流式批量管道服务的用于输入或输出流端点流的流协议状态机的实施例的状态图;
图5是包括经由包括流管道的管道束124通信的USB主机和大容量存储类USB设备的系统的实施例的框图,该系统为该大容量存储类USB设备中的命令排队和/或无序命令处理提供支持;
图6是示出在该设备中实现的用于在该设备与主机之间的逻辑管道上传输数据的方法的实施例的流程图;以及
图7是包括USB主机和USB设备的系统的框图,该系统提供对USB设备中的命令排队和/或无序命令处理的支持。
虽然将参考要求保护的主题的说明性实施例继续进行以下详细描述,但该主题的替代物、修改以及变型对本领域技术人员而言将显而易见。因此,要求保护的主题旨在被广义地理解,而且仅如所附权利要求中所陈述的那样定义。
具体实施方式
大容量存储类USB设备的示例是硬盘驱动器(硬驱动器、硬盘或固定盘驱动器)。硬盘驱动器包括主轴,该主轴支持具有存储经数字编码数据的磁表面的一个或多个平坦圆盘(盘片)。当盘片以例如每分钟4200转(RPM)、3600RPM、7200RPM或5400RPM的旋转速度旋转时,读/写磁头沿着盘片移动以从盘片读取数据或将数据写入盘片。硬盘驱动器是将数据按照一个或多个扇区分块传输至盘片(存储介质)或从盘片传输的块存储设备。扇区存储固定数量的字节,例如512字节或1024字节。
存在许多串行的存储协议套件,诸如串行附连SCSI(SAS)和串行高级技术附件(SATA)。SATA协议的一个版本在由串行ATA工作组于2003年1月7日公布的“串行ATA:高速串行化AT附件(Serial ATA:High SpeedSerialized AT Attachment)”修订1.0a中有描述。SAS协议的一个版本在由美国国家标准协会(ANSI)于2003年9月18日公布的信息技术标准国际委员会(INCITS)T10技术委员会的工作草案美国国家标准项目T10/1562-D修订1中的“信息技术——串行附连SCSI-1.1(InformationTechnology-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)驱动器、紧致盘(CD)驱动器、冗余独立磁盘阵列(RAID)、带驱动器或其它大容量存储类存储设备。
USB主机102在USB物理总线128上经由也称为管道束124的一组通信流(逻辑管道)中的一个管道与USB设备104中的USB逻辑设备114通信。如之前所讨论地,逻辑管道是USB主机与USB设备中的端点之间的逻辑抽象,用于在USB主机与USB设备之间交换数据和控制分组。
USB物理总线128上的通信的基本要素是包括开头、信息和结尾的USB分组。该分组信息可包括1到1025个字节,其中第一个字节存储分组标识符。存在通过该分组标识符所标识的四种分组类别:令牌、数据、握手以及特殊。令牌分组被用于建立通过握手分组确认的数据分组。握手分组指示数据事务的状态。握手分组类型包括指示令牌或数据分组的成功接收的ACK和指示接收器因为例如接收器忙或没有处理该分组的资源而无法接受该分组的NACK。
USB逻辑设备114具有多个独立端点。USB逻辑设备114中的端点是USB主机102与USB设备104之间的通信流的终点。每个终点可具有一个数据流方向(即从设备到主机的输入或从主机到设备的输出)。USB管道(逻辑管道)126是USB设备上的端点与USB主机102中的客户机110之间的关联。逻辑管道126表示在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总线128上物理地传输。
在接口层122处,取决于传输方向,主控制器106或USB总线接口112在跨USB物理总线128发送数据之前将其分组化。
在本发明的实施例中,在逻辑层118,具有四个逻辑管道126的管道束124被USB设备104定义为在客户机110与USB设备104中的功能114之间移动SCSI命令、数据以及状态。
管道束124中的每个逻辑管道被配置为“批量传输”型管道(批量管道),即能使用任何可用带宽的支持在可变时刻传输大量数据的管道。批量管道是单向流管道(输入或输出)。标准的批量管道在USB 2.0标准中有描述。流式批量管道将在稍后结合图3进行描述。流式批量管道提供利用允许用于大容量存储设备命令排队的无序数据传输的流协议在主机与设备之间移动数据流的能力。
管道束124中的四个逻辑管道126如下定义:(1)客户机与标准大容量输出端点之间的逻辑管道,用于向大容量存储类USB设备104发送命令;(2)客户机与流批量输入端点之间的逻辑管道,用于与从大容量存储类USB设备104到USB主机102的读命令相关联的数据传输;(3)客户机与流批量输出端点之间的逻辑管道,用于与从USB主机到大容量存储类USB设备的写命令相关联的数据传输;以及(4)客户机110与流批量输入端点之间的逻辑管道,用于与命令完成相关联的传输。在一个实施例中,与命令完成相关联的逻辑管道是标准批量输入管道。
图2是图1中所示的管道束124中的标准批量管道200的客户机110侧的框图。设备104在主机102中见到单个逻辑缓冲器。缓冲器列表204允许逻辑缓冲器被定义为多个物理缓冲器206。该标准批量管道200包括端点202,该端点202包括缓冲器列表204,该缓冲器列表204在主机102中的存储器中定义一组缓冲器206,在USB物理总线128上传输的数据被移入或移出该组缓冲器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在它们各自的地址空间之间直接传输数据(端点至主机缓冲器或主机缓冲器至端点)。
该流标识符可存储在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是包括经由包括流管道的管道束124通信的USB主机102和大容量存储类USB设备104的系统500的实施例的框图,该系统500为该大容量存储类USB设备104中的命令排队和/或无序命令处理提供支持。
管道束124包括在客户机102与标准大容量输出端点510之间的用于向大容量存储类USB设备104发送命令的标准批量管道(“命令输出”)508。管道束124还包括:在客户机102与流式批量输入端点512之间的第一流式批量管道(“数据输入”)506-1,用于从大容量存储类USB设备向主机102传输与读命令相关联的数据;在主机102与流式批量输出端点514之间的第二流式批量管道(“数据输出”)506-2,用于从USB主机102向大容量存储类USB设备104传输与写命令相关联的数据。管道束124还包括在主机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发出主机事务分组,且流标识符被设置为“流n”。如果分配到的端点缓冲器用于最后提出的流标识符,则主机102可发起流选择,以例如恢复需要由主机102分配附加端点缓冲器的流标识符的数据传输。如果该流选择由主机102发起,则处理继续至框607。如果不是,则处理继续至框602。
在框606,设备104请求其开始向主机的流传输,或主机102开始向设备的流传输。为了请求流传输,设备104向主机发出ERDY分组,其中流标识符被设置为“流n”(有效流)且流编号大于0。处理继续至框608。
在框607,设备104确定主机所提出的流是否准备好传输数据。如果该流就绪,则处理继续至框610。如果不是,则处理继续至框602。
在框608,设备104等待主机102接受或拒绝该设备所提出的流选择。其流标识符被设置为“流n”的主机事务分组表明主机102已经接受所提出的流。如果该流被接受,则处理继续至框610。如果该流未被接受,则设备104接收其中流标识符字段被设置为“无流”的主机事务分组。
在一个实施例中,如果没有端点缓冲器可用于设备选择的流标识符,则主机102拒绝设备104的流选择。主机102可在分配用于流标识符的端点缓冲器之后发起之前提出的流选择。如果该流选择被主机拒绝,则处理继续至框602。
在框610,在主机端和设备端上均设置该流标识符,且数据从该设备移至主机上针对该管道为该流分配的端点缓冲器,或从端点缓冲器移至该设备。当端点缓冲器可用于主机中的流时数据被移动,且设备具有要移动至该主机的该流的数据,或主机具有要移动至该设备的该流的数据。
“空闲”循环由框602、604和605组成。在该循环中,设备检查首要管道转换602、设备发起传输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可以是多种处理器中的任一种,诸如单核Intel
Figure BPA00001310595700131
Pentium IV
Figure BPA00001310595700132
处理器、单核Intel Celeron处理器、Intel
Figure BPA00001310595700141
XScale处理器或诸如IntelPentium D、Intel
Figure BPA00001310595700143
Xeon
Figure BPA00001310595700144
处理器、Intel
Figure BPA00001310595700145
Core
Figure BPA00001310595700146
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/ATA命令、数据以及SCSI/ATA状态封装于USB封装中在USB物理总线718上与USB大容量存储类USB设备712通信。
已经针对通用串行总线描述了本发明的实施例。然而,本发明不限于通用串行总线;本发明的实施例可供支持命令排队和无序完成的任何总线协议或支持从设备发起的主机缓冲器列表/缓冲器选择的任何主/从总线协议使用。
本发明的实施例还可用于对完成中断的核目标确定。例如,在使用外围部件互连的系统的实施例中,可为每个缓冲器列表204分配中断向量,并利用流标识符选择缓冲器组。PCI MSI-X中断向量可指定核和该核上的向量。
在多核系统中,SCSI命令在特定核上被构造,这意味着该核的高速缓冲存储与特定命令相关的信息。核目标确定允许主控制器在命令完成时中断发起该命令的核,从而存储在该核的高速缓存中的信息可被重新利用。如果完成被发送至另一核,则导致附加的系统存储器活动,而该“另一”核装载与该命令有关的信息。核目标确定降低存储器和电源利用率。
本发明的替代实施例还包括机器可访问的介质,该介质包含用于执行本发明的操作的指令。此类实施例可被称为程序产品。此类机器可访问介质可无限制地包括诸如软盘、硬盘、紧致盘只读存储器(CD-ROM)、只读存储器(ROM)和随机存取存储器(RAM)的存储介质,以及通过机器或设备制造或形成的其它有形粒子排列。指令还可用于分布式环境,且可本地和/或远程存储以供单处理器机器或多处理器机器使用。
虽然已经参照本发明实施例具体示出和描述了本发明,但本领域技术人员应当理解的是,可对本发明作出形式上和细节上的多种修改,而不背离如所附权利要求所包含的本发明的实施例的范围。

Claims (20)

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命令。
CN200980131657.9A 2008-07-11 2009-07-08 用于通用串行总线(usb)命令排队的方法和装置 Expired - Fee Related CN102119381B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US13460308P 2008-07-11 2008-07-11
US61/134,603 2008-07-11
US12/317,019 2008-12-18
US12/317,019 US8364863B2 (en) 2008-07-11 2008-12-18 Method and apparatus for universal serial bus (USB) command queuing
PCT/US2009/049926 WO2010006043A2 (en) 2008-07-11 2009-07-08 Method and apparatus for universal serial bus (usb) command queuing

Publications (2)

Publication Number Publication Date
CN102119381A CN102119381A (zh) 2011-07-06
CN102119381B true CN102119381B (zh) 2013-12-18

Family

ID=41506137

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200980131657.9A Expired - Fee Related CN102119381B (zh) 2008-07-11 2009-07-08 用于通用串行总线(usb)命令排队的方法和装置

Country Status (4)

Country Link
US (1) US8364863B2 (zh)
EP (1) EP2307971A4 (zh)
CN (1) CN102119381B (zh)
WO (1) WO2010006043A2 (zh)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8364863B2 (en) 2008-07-11 2013-01-29 Intel Corporation Method and apparatus for universal serial bus (USB) command queuing
US8364992B2 (en) * 2008-11-25 2013-01-29 Hgst, Netherlands B.V. Method and system for reducing power consumption by command selection in a hard disk drive
US8225052B2 (en) * 2009-06-03 2012-07-17 Micron Technology, Inc. Methods for controlling host memory access with memory devices and systems
US8489803B2 (en) * 2009-12-14 2013-07-16 Smsc Holdings S.A.R.L. Efficient use of flash memory in flash drives
US8504755B2 (en) * 2010-03-03 2013-08-06 Plx Technology, Inc. USB 3 bridge with embedded hub
WO2012048444A1 (en) 2010-10-14 2012-04-19 Freescale Semiconductor, Inc. Are Memory controller and method for accessing a plurality of non-volatile memory arrays
US9013489B2 (en) * 2011-06-06 2015-04-21 Microsoft Technology Licensing, Llc Generation of avatar reflecting player appearance
US9367347B1 (en) * 2013-06-17 2016-06-14 Marvell International, Ltd. Systems and methods for command execution order control in electronic systems
US9075538B2 (en) 2013-06-24 2015-07-07 Seagate Technology Llc Performance and power management for rotating data storage device
CN104123258A (zh) * 2014-07-23 2014-10-29 龙迅半导体科技(合肥)有限公司 一种usb数据传输接口及系统
US10310923B1 (en) 2014-08-28 2019-06-04 Seagate Technology Llc Probabilistic aging command sorting
CN104980307A (zh) * 2015-06-29 2015-10-14 小米科技有限责任公司 数据访问请求的处理方法、装置及数据库服务器
US10019161B2 (en) * 2015-08-31 2018-07-10 Sandisk Technologies Llc Out of order memory command fetching
US10831403B2 (en) 2017-05-19 2020-11-10 Seagate Technology Llc Probabalistic command aging and selection
WO2019000169A1 (en) 2017-06-26 2019-01-03 Qualcomm Incorporated E PLANNING POLICIES FOR NON-ORDER AUTHORIZATIONS
US10496297B2 (en) * 2017-11-21 2019-12-03 Micron Technology, Inc. Data categorization based on invalidation velocities
CN110874334B (zh) * 2018-08-30 2023-10-20 瑞昱半导体股份有限公司 Usb传输系统、usb装置与支持usb传输的主机
US11359309B2 (en) 2018-12-21 2022-06-14 Target Brands, Inc. Ring spun yarn and method
CN114064542A (zh) * 2020-08-03 2022-02-18 瑞昱半导体股份有限公司 通用串行总线装置与主机

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200506637A (en) * 2003-08-07 2005-02-16 Ali Corp Host-to-host USB bridge
CN1833216A (zh) * 2003-08-03 2006-09-13 清华大学 一种通用双向串行数据传输接口及其数据传输方法
CN101005376A (zh) * 2007-01-09 2007-07-25 华为技术有限公司 一种实现业务板和主控板通信的装置和方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5682553A (en) * 1995-04-14 1997-10-28 Mitsubishi Electric Information Technology Center America, Inc. Host computer and network interface using a two-dimensional per-application list of application level free buffers
US6226680B1 (en) * 1997-10-14 2001-05-01 Alacritech, Inc. Intelligent network interface system method for protocol processing
US6697885B1 (en) * 1999-05-22 2004-02-24 Anthony E. B. Goodfellow Automated DMA engine for ATA control
US6618788B1 (en) * 2000-09-27 2003-09-09 Cypress Semiconductor, Inc. ATA device control via a packet-based interface
US6889262B1 (en) 2002-06-26 2005-05-03 Advanced Micro Devices, Inc. Direct transaction mode for peripheral devices
JP4343524B2 (ja) 2002-12-13 2009-10-14 キヤノン株式会社 制御装置およびデジタルビデオ装置
US20040260823A1 (en) * 2003-06-17 2004-12-23 General Instrument Corporation Simultaneously transporting multiple MPEG-2 transport streams
KR100557215B1 (ko) * 2003-08-19 2006-03-10 삼성전자주식회사 유에스비 디바이스의 엔드포인트 제어 장치 및 그 방법
US7359405B2 (en) * 2003-10-17 2008-04-15 Asix Electronics Corporation Ltd. Burst transfer mechanism of network packets having MAC frames over USB bus
US20050223118A1 (en) * 2004-04-05 2005-10-06 Ammasso, Inc. System and method for placement of sharing physical buffer lists in RDMA communication
US7639656B2 (en) * 2004-04-28 2009-12-29 Symbol Technologies, Inc. Protocol for communication between access ports and wireless switches
US7640378B2 (en) * 2005-03-11 2009-12-29 Icron Technologies Corporation Method and apparatus for improving the performance of USB mass storage devices in the presence of long transmission delays
US7519794B2 (en) * 2005-06-29 2009-04-14 Intel Corporation High performance architecture for a writeback stage
JP4259557B2 (ja) * 2006-09-19 2009-04-30 セイコーエプソン株式会社 印刷装置及び論理パケット処理方法
US8589578B2 (en) * 2007-06-29 2013-11-19 Toshiba America Research, Inc. Streaming video over multiple network interfaces
US8364863B2 (en) 2008-07-11 2013-01-29 Intel Corporation Method and apparatus for universal serial bus (USB) command queuing

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1833216A (zh) * 2003-08-03 2006-09-13 清华大学 一种通用双向串行数据传输接口及其数据传输方法
TW200506637A (en) * 2003-08-07 2005-02-16 Ali Corp Host-to-host USB bridge
CN101005376A (zh) * 2007-01-09 2007-07-25 华为技术有限公司 一种实现业务板和主控板通信的装置和方法

Also Published As

Publication number Publication date
WO2010006043A3 (en) 2010-04-08
US20100011137A1 (en) 2010-01-14
CN102119381A (zh) 2011-07-06
US8364863B2 (en) 2013-01-29
EP2307971A2 (en) 2011-04-13
WO2010006043A2 (en) 2010-01-14
EP2307971A4 (en) 2011-12-14

Similar Documents

Publication Publication Date Title
CN102119381B (zh) 用于通用串行总线(usb)命令排队的方法和装置
JP5159901B2 (ja) 制御装置と通信するように構成されたホスト・コンピュータ・システムにおける入出力(i/o)操作に関するi/o処理を容易にするための方法
US6959355B2 (en) Universal serial bus hub with shared high speed handler
JP4869065B2 (ja) 仮想周辺コンポーネントインターコネクト多重ファンクション装置
KR101035225B1 (ko) 개량 데이터 전송을 위한 제어기 장치 및 방법
EP1866778B1 (en) Method and apparatus for improving the performance of usb mass storage devices in the presence of long transmission delays
TWI351615B (en) Apparatus,method,and system for controller link fo
US20080209203A1 (en) Data encryption apparatus, data decryption apparatus, data encryption method, data decryption method, and data transfer controlling apparatus
US7475170B2 (en) Data transfer device for transferring data to and from memory via a bus
US6889266B1 (en) Method for delivering packet boundary or other metadata to and from a device using direct memory controller
WO2004017220A1 (en) One-shot rdma
JPH03214343A (ja) 情報処理システムおよびデータ処理方法
US20140281072A1 (en) Link layer virtualization in sata controller
EP2214103B1 (en) I/O controller and descriptor transfer method
CN109983741A (zh) 经由直接存储器访问设备在虚拟机之间传送分组
CN1038362A (zh) 外围设备控制器及适配器接口
CN114817965A (zh) 基于多算法ip核实现msi中断处理的高速加解密系统及方法
CN112765055B (zh) 存储设备的控制部件
CN112764669B (zh) 一种硬件加速器
US20080183921A1 (en) Serial advanced technology attachment (SATA) frame information structure (FIS) processing
US6772311B2 (en) ATAPI device unaligned and aligned parallel I/O data transfer controller
KR100638378B1 (ko) 디스크 제어장치의 메모리 구조에 대한 시스템 및 방법
US20060277326A1 (en) Data transfer system and method
CN102184150A (zh) 高功能环形缓冲缓存系统及其控制方法
US7921238B2 (en) USB host system and method for transferring transfer data

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20131218

Termination date: 20210708