CN111290983A - Usb传输设备及传输方法 - Google Patents

Usb传输设备及传输方法 Download PDF

Info

Publication number
CN111290983A
CN111290983A CN201811502238.9A CN201811502238A CN111290983A CN 111290983 A CN111290983 A CN 111290983A CN 201811502238 A CN201811502238 A CN 201811502238A CN 111290983 A CN111290983 A CN 111290983A
Authority
CN
China
Prior art keywords
transmission
request
cache
pipeline
usb
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.)
Granted
Application number
CN201811502238.9A
Other languages
English (en)
Other versions
CN111290983B (zh
Inventor
曾旭
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.)
Montage LZ Technologies Chengdu Co Ltd
Original Assignee
Montage LZ Technologies Chengdu Co Ltd
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 Montage LZ Technologies Chengdu Co Ltd filed Critical Montage LZ Technologies Chengdu Co Ltd
Priority to CN201811502238.9A priority Critical patent/CN111290983B/zh
Priority to US16/601,949 priority patent/US10929332B2/en
Publication of CN111290983A publication Critical patent/CN111290983A/zh
Application granted granted Critical
Publication of CN111290983B publication Critical patent/CN111290983B/zh
Active 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/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • 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/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0042Universal serial bus [USB]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)

Abstract

本申请涉及集成电路设计和制造领域,公开了一种USB传输设备及传输方法,可以大幅提高传输大量小文件时的传输速率。该设备包括:配置模块,用于在内存中针对一个端点配置对应于第一传输线程的第一传输环和对应于第二传输线程的第二传输环;USB的主机控制器,用于在第一传输线程传输结束时,根据已经配置的第二传输环直接进行第二传输线程的传输。

Description

USB传输设备及传输方法
技术领域
本申请涉及集成电路设计和制造领域,特别涉及包含USB主机控制器的集成电路技术。
背景技术
USB(通用串行总线)是一个外部总线标准,用于规范电脑与外部设备的连接和通讯。USB技术已经被广泛使用,目前已经发展到了3.X的版本。
USB的一个常规应用是传输文件,但是,本申请的发明人发现,USB在传输大文件时的传输速率远高于传输同样数据量的多个小文件的传输速率。而在不少应用场景中,存在大量的小文件需要被传输。如何使得USB技术可以提高传输大量小文件的速率,这是需要解决的一个重要问题。
此外,USB3.x定义了管道的概念,管道即应用软件(下文中也称为“软件”)和设备之间的数据通道,由于能发起数据传输的不仅仅是软件,容易造成管道之间的优先级别混乱,在因为意外中断传输之后,容易丢失当前传输的数据指针,导致在断点续传的时候发生冗余传输。
发明内容
本申请的目的在于提供一种USB传输设备及传输方法,可以显著提高USB传输大量小文件时的传输速率。
为了解决上述问题,本申请公开了一种USB传输设备,包括:
配置模块,用于在内存中针对一个端点配置对应于第一传输线程的第一传输环和对应于第二传输线程的第二传输环;
USB的主机控制器,用于在该第一传输线程传输结束时,根据已经配置的该第二传输环直接进行该第二传输线程的传输。
在一个优选例中,配置端点命令中包括该第一和第二传输环的初始出栈指针;
当该主机控制器执行该配置端点命令时,把该配置端点命令中该第一和第二传输环的初始出栈指针复制到设备上下文中。
在一个优选例中,还包括
软件请求缓存,用于保存由软件发起的传输请求的管道标识;
周期性请求缓存,用于保存周期性的传输请求的管道标识;
保存的请求缓存,用于保存因为传输机会用完而中断后需要等待下一个传输机会续传的传输请求的管道标识;
未就绪的请求缓存,用于保存由于USB设备返回未就绪信号而中断的传输请求的管道标识;
仲裁器,用于传输仲裁,从该软件请求缓存、该周期性请求缓存、该保存的请求缓存和该未就绪的请求缓存中选择一个传输请求进行传输;
传输管理模块,用于对该仲裁器所选择的传输请求的数据传输过程进行管理。
在一个优选例中,还包括:
管道信息缓存,用于缓存N个管道对应的传输请求的信息,其中N为正整数;
管道信息载入模块,用于针对该仲裁器选择的传输请求,从该管道信息缓存加载该传输请求的信息。
在一个优选例中,还包括:
该软件请求缓存、该周期性请求缓存、该保存的请求缓存和该未就绪的请求缓存分别包括N个寄存器,每个寄存器对应该管道信息缓存中的一个管道。
在一个优选例中,还包括管道信息模块;
该传输管理模块还用于在传输过程中或者传输结束后,向该管道信息模块传送当前管道的各种状态信息,该管道信息模块根据当前传输状况决定是否把管道信息写回到管道信息缓存。
在一个优选例中,还包括:
周期性传输管理模块,用来管理同步和中断两种周期性传输,当软件对一个端点请求一个周期性传输之后,该周期性传输管理模块保存该请求,并根据该端点的特性周期性地发起传输请求。
本申请还公开了一种USB传输方法,包括:
在内存中针对一个端点配置对应于第一传输线程的第一传输环和对应于第二传输线程的第二传输环;
USB的主机控制器在该第一传输线程传输结束时,根据已经配置的该第二传输环直接进行该第二传输线程的传输。
在一个优选例中,还包括:
配置端点命令中包括该第一和第二传输环的初始出栈指针;
当该主机控制器执行该配置端点命令时,把该配置端点命令中该第一和第二传输环的初始出栈指针复制到设备上下文中。
在一个优选例中,还包括:
当该主机控制器执行设置TR出栈指针命令时,选择性地设置该第一线程或该第二线程的传输环出栈指针。
在一个优选例中,还包括:
当该主机控制器执行设置停止端点命令时,同时停止该端点正在执行的所有线程,并且保存当前所有正在执行的线程的传输环出栈指针。
在一个优选例中,还包括:
当该主机控制器执行传输命令时,对当前停止的所有线程都要继续执行。
在一个优选例中,还包括:
当端点出现传输错误,需要停止当前端点时,停止该端点的所有线程。
在一个优选例中,还包括:
如果软件发起的传输请求是周期性的,则将该传输请求的管道标识保存到周期性请求缓存,否则将该传输请求的管道标识保存到软件请求缓存;
如果一个传输请求的传输机会用完而中断后需要等待下一个传输机会续传,则将该传输请求的管道标识保存到保存的请求缓存;
如果一个传输请求由于USB设备返回未就绪信号而中断,则将该传输请求的管道标识保存到未就绪的请求缓存;
从该软件请求缓存、该周期性请求缓存、该保存的请求缓存和该未就绪的请求缓存中选择一个传输请求进行传输。
在一个优选例中,该选择一个传输请求的步骤之后还包括:
针对被选择的传输请求,从管道信息缓存加载该传输请求的信息;
在传输过程中或者传输结束后,根据当前传输状况决定是否把管道信息写回到该管道信息缓存;
其中,该管道信息缓存用于缓存N个管道对应的传输请求的信息,N为正整数。
本申请还公开了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现如前文描述的方法中的步骤。
本申请实施方式中,针对USB设备的同一端点引入了多线程传输,消除了在传输过程中等待软件配置传输环的时间,提高了传输效率,尤其是传输大量小文件时的传输效率。
此外,本申请通过分类管理的方法实现了USB管道的管理,可以方便地控制传输优先级和精确定位到断点续传的位置。解决了管道之间的优先级别混乱,在意外中断传输之后容易丢失当前传输的数据指针导致在断点续传的时候发生冗余传输的问题。
本申请的说明书中记载了大量的技术特征,分布在各个技术方案中,如果要罗列出本申请所有可能的技术特征的组合(即技术方案)的话,会使得说明书过于冗长。为了避免这个问题,本申请上述发明内容中公开的各个技术特征、在下文各个实施方式和例子中公开的各技术特征、以及附图中公开的各个技术特征,都可以自由地互相组合,从而构成各种新的技术方案(这些技术方案均因视为在本说明书中已经记载),除非这种技术特征的组合在技术上是不可行的。例如,在一个例子中公开了特征A+B+C,在另一个例子中公开了特征A+B+D+E,而特征C和D是起到相同作用的等同技术手段,技术上只要择一使用即可,不可能同时采用,特征E技术上可以与特征C相组合,则,A+B+C+D的方案因技术不可行而应当不被视为已经记载,而A+B+C+E的方案应当视为已经被记载。
附图说明
图1是根据本申请第一实施方式的USB传输设备框图
图2是根据本申请第二实施方式的USB传输方法流程示意图
图3是根据本申请一个实施例的PIPE管理框图
具体实施方式
在以下的叙述中,为了使读者更好地理解本申请而提出了许多技术细节。但是,本领域的普通技术人员可以理解,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。
部分概念的说明:
USB,Universal Serial Bus,通用串行总线
TRB:Transfer Request Block,传输请求块
TR:Transfer Ring,传输环
Endpoint:端点
XHCI:eXtensible Host Controller Interface,可扩展的主机控制器接口是英特尔公司开发的一个USB主机控制器接口
SoC:System-on-a-chip,系统单芯片
PIPE:管道
DMA:Direct Memory Access,直接内存存取
下面概要说明本申请的部分创新点:
目前USB3.X的协议在传输大量的小文件时传输速度缓慢,远低于相同总数据量的大文件的传输速度。然而,文件的传输一般是应用软件发起的,从应用层到物理层,导致小文件传输速度缓慢的可能原因有很多,例如应用程序层面的原因,操作系统层面的原因,驱动软件的原因,USB层面的原因等等。而且这些原因仅仅是原因的大致类别,每一种类别还会有许多种具体的因素会导致小文件传输缓慢。
在众多的原因中,本发明的发明人创造性地发现,如果能够为一个Endpoint配置至少两个传输线程(目前USB协议中一个Endpoint在进行传输时只支持一个传输线程),在内存中分别为这些传输线程分别配置传输环,当一个传输线程传输结束时,直接切换到已经配置好传输环的其他传输线程传输,就可以大大提高大量小文件的传输速度。USB传输过程中,每一次传输请求的执行都需要多次DMA请求,对于小数据传输,大都是在获取USB设备的各种信息,如果每次传输都重复地获取这些信息,传输完成之后USB设备信息会被释放,下次传输又要重新获取,这样会造成大量的带宽浪费,如果利用多线线程传输,在一次性获得USB设备的信息之后,把小数据放在不同的线程中,在线程之间做切换传输,一个线程在传输的时候,软件可以准备另一线程的数据,就省去了获取USB设备的信息的MDA请求的时间,这样就提高了传输效率。
此外,本申请将USB PIPE至少分为软件请求、周期性请求、保存的请求和未就绪的请求四个,通过这种对USB PIPE的分类管理,可以方便地控制传输优先级和精确定位到断点续传的位置,进一步提高的USB传输的性能。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请的实施方式作进一步地详细描述。
本申请的第一实施方式涉及一种USB传输设备,其基本结构如图1所示,该设备包括:
配置模块101,用于在内存中针对一个端点配置对应于第一传输线程的第一传输环和对应于第二传输线程的第二传输环。也就是说为同一个端点配置至少两个传输线程及其传输环。在配置超过两个传输线程的实施例中,其中任意的两个传输线程都可以被认为是第一传输线程和第二传输线程。
USB的主机控制器102,用于在第一传输线程传输结束时,根据已经配置的第二传输环直接进行第二传输线程的传输。
在一个实施例中,对现有的USB协议的配置端点命令进行改进,使得配置端点命令中包括第一和第二传输环的初始出栈指针;当主机控制器执行配置端点命令时,把该配置端点命令中第一和第二传输环的初始出栈指针复制到设备上下文中。
在一个实施例中,该USB传输设备还包括:
软件请求缓存,用于保存由软件发起的传输请求的管道标识。
周期性请求缓存,用于保存周期性的传输请求的管道标识。
保存的请求缓存,用于保存因为传输机会用完而中断后需要等待下一个传输机会续传的传输请求的管道标识。
未就绪的请求缓存,用于保存由于USB设备返回未就绪信号而中断的传输请求的管道标识。
仲裁器,用于传输仲裁,从软件请求缓存、周期性请求缓存、保存的请求缓存和未就绪的请求缓存中选择一个传输请求进行传输。
传输管理模块,用于对仲裁器所选择的传输请求的数据传输过程进行管理。
管道信息缓存,用于缓存N个管道对应的传输请求的信息,其中N为正整数。
管道信息载入模块,用于针对仲裁器选择的传输请求,从管道信息缓存加载该传输请求的信息。
传输管理模块还用于在传输过程中或者传输结束后,向管道信息模块传送当前管道的各种状态信息,管道信息模块用于根据当前传输状况决定是否把管道信息写回到管道信息缓存。
周期性传输管理模块,用来管理同步和中断两种周期性传输,当软件对一个端点请求一个周期性传输之后,周期性传输管理模块保存该请求,并根据该端点的特性周期性地发起传输请求。
在一个实施例中,上述软件请求缓存、周期性请求缓存、保存的请求缓存和未就绪的请求缓存分别包括N个寄存器,每个寄存器对应管道信息缓存中的一个管道。每个寄存器有一个地址,例如1、2、3、……。该寄存器地址作为管道标识实现寄存器与管道信息缓存中管道的地址对应,即这个地址也用来从管道信息缓存中读取相应管道的信息。例如周期性请求缓存的地址为3的寄存器被设为1时,该地址3就是管道标识,表示标识为3管道属于周期性请求。又如保存的请求缓存中地址为3的寄存器被设为0时,表示标识为3管道不属于保存的请求。
本申请的第二实施方式涉及一种USB传输方法,其流程如图2所示,该方法包括:
在步骤201中,在内存中针对一个端点配置对应于第一传输线程的第一传输环和对应于第二传输线程的第二传输环。
在步骤202中,USB的主机控制器在第一传输线程传输结束时,根据已经配置的第二传输环直接进行第二传输线程的传输。
因为一个端点配置了两个传输线程,所以主机在处理各种命令时的处理方式也会有相应的变化,这些变化在下面的实施例中进行说明。
下面各实施例中,配置端点命令、设置TR出栈指针命令、停止端点命令、传输命令等命令都是现有的USB协议中已有的命令,本申请实施例中的改进主要在主机执行这些命令时的处理方式有改进,部分命令(例如配置端点命令等)中的信息会有改进。以下各个实施例中未提到的部分,例如命令的来源等,实现方式与现有协议相同,本申请中不再详细说明了。
在一个实施例中,配置端点命令中包括第一和第二传输环的初始出栈指针;当主机控制器执行配置端点命令时,把该配置端点命令中第一和第二传输环的初始出栈指针复制到设备上下文中。
在一个实施例中,当主机控制器执行设置TR出栈指针命令时,选择性地设置第一线程或第二线程的传输环出栈指针。
在一个实施例中,当主机控制器执行设置停止端点命令时,同时停止该端点正在执行的所有线程,并且保存当前所有正在执行的线程的传输环出栈指针。
在一个实施例中,当主机控制器执行传输命令时,对当前停止的所有线程都要继续执行。
在一个实施例中,当端点出现传输错误,需要停止当前端点时,停止该端点的所有线程。
在一个实施例中,该方法还包括:
如果软件发起的传输请求是周期性的,则将该传输请求的管道标识保存到周期性请求缓存,否则将该传输请求的管道标识保存到软件请求缓存;
如果一个传输请求的传输机会用完而中断后需要等待下一个传输机会续传,则将该传输请求的管道标识保存到保存的请求缓存;
如果一个传输请求由于USB设备返回未就绪信号而中断,则将该传输请求的管道标识保存到未就绪的请求缓存;
从软件请求缓存、周期性请求缓存、保存的请求缓存和未就绪的请求缓存中选择一个传输请求进行传输;
针对被选择的传输请求,从管道信息缓存加载该传输请求的信息;
在传输过程中或者传输结束后,根据当前传输状况决定是否把管道信息写回到管道信息缓存;
其中,管道信息缓存用于缓存N个管道对应的传输请求的信息,N为正整数。
为了能够更好地理解本申请的技术方案,下面结合一个具体的例子来进行说明,该例子中罗列的细节主要是为了便于理解,不作为对本申请保护范围的限制。
一个USB主机需要同时支持的设备可达127个设备,每个设备可以最大支持31个Endpoint,现实应用中几乎不可能127个设备的每个Endpoint同时都在进行传输(同时传输的线程可以达到127x31=3937个),如果我们为每个Endpoint都配备上足够的资源让527个Endpoint可以同时传输,那么将造成资源的极大浪费,所以我们只需要同时可以支持数量不多资源的Endpoint可以同时传输就行了,如果极端情况下资源消耗光了,那么软件可以排队等待前面的某个Endpoint传输完成,再提交传输请求。
所以本申请描述的就是如何在有限资源下进行USB PIPE的调度管理。包括如何在一个PIPE的Service Opportunity(传输机会)用完的时候切换到下一个PIPE,当一个PIPE因为传输出错或者收到Device Not Ready(设备未就绪)信号或者收到Stop Command(停止命令)挂起后如何保存断点信息,以及如何恢复传输。
在现在的XHCI协议下,USB主机一个Endpoint只能响应一次传输命令,然后读取传输环上的数据进行传输,只有当前的传输完成之后,才能响应下一次传输命令。而本发明可以让USB主机可以同时响应同一Endpoint同时进行两个传输请求,即一个Endpoint可以同时拥有两个传输线程。
现在假设设计一个能同时接受n个传输请求的USB主机。n为正整数,可以根据集成USB主机的SOC的需求设定。注意,接受传输请求之后不意味着马上可以进行传输,而只是把PIPE信息写入到PIPE Info Buffer(管道信息缓存)里,等有空闲的线程之后,再从PIPEInfo Buffer里读取出来执行传输,同时可以传输的线程数目也可以根据系统需要进行设定。图3是PIPE管理的框图。
与PIPE管理相关的模块包括:
系统软件模块301(System Software Module),由XHCI主机驱动、设备驱动和USB应用程序组成。
周期性传输管理模块302(Periodic Transfer Management Module),用来管理同步(Isoch)和中断(Interrupt)两种周期性传输。当软件对某个设备的端点请求一个周期性传输之后,这个请求会被保存到此模块,此模块根据此设备端点的特性,周期性地发起传输请求,直到软件此次请求传输的数据全部完成,这个周期性传输请求从此模块删除。
多线程流使能寄存器303(Multithread Stream Enable Register),是在USB3.x主机硬件中的控制寄存器,可以用来使能主机的多线程功能。
多线程控制器304(Multithreads Controller),可以决定当前是否发起多线程传输。
可用管道查找模块305(Available Pipe Lookup Module),此模块用来查找是否有可用的PIPE资源来接受当前的传输请求。
被占用管道寄存器组306(Occupied PIPE),此为一组寄存器,寄存已经被用掉的PIPE代号(PIPE ID),比如,如果我们的主机支持32个PIPE,代号分别为PIPE 1、PIPE 2、…、PIPE 32,那么这个寄存器为一个32bit(比特)长度的寄存器,32个bit的编号从1到32,当某个PIPE被占据之后,其对应的bit就被置1,如果某个PIPE被释放,则对应的bit被置0,比如,如果3号PIPE(PIPE 3)被占据,那么则此寄存器的第3个bit被置1,当3号PIPE被释放之后,则第3个bit被置0,如果32个bit都被置1了,意味着当前PIPE全部繁忙,不能接受新的传输请求,之后当其中某个PIPE资源被释放之后,才可以接受新的请求。
软件请求缓存307(SW Req Buffer),此为一组寄存器,保存由软件发起的传输请求的PIPE代号。
周期性请求缓存308(Periodic Req Buffer),此为一组寄存器,保存周期性传输请求。
保存的请求缓存309(Saved Req Buffer),此为一组寄存器,保存由于某种原因中断之后,将来需要继续续传的传输请求。
未就绪的请求缓存310(Not Ready Req Buffer),此为一组寄存器,保存由于USB设备返回NRDY(Not Ready,未就绪)之后中断的传输,下一次收到ERDY(Endpoint Ready,端点就绪)之后继续续传。
软件请求缓存307、周期性请求缓存308、保存的请求缓存309和未就绪的请求缓存310是四个寄存器组,每一个寄存器可以被设为0或1,如果是1,则该寄存器对应的PIPE具有相应的原因,如果是0,则对应的PIPE不具有相应的原因。例如,如果Not Ready Req Buffer的第5个寄存器为1,表示PIPE 5属于未就绪的请求。如果Periodic Req Buffer的第2个寄存器为1,表示PIPE 2属于周期性请求。
传输仲裁器311(Arbiter),从软件请求缓存307、周期性请求缓存308、保存的请求缓存309和未就绪的请求缓存310四组传输请求中选取一个进行传输。
管道信息缓存312(PIPE Info Buffer),保存某个传输请求的各种信息,比如流传输的ID,建立传输执行的阶段,传输环传输请求块TRB的出栈指针,当前传输请求块对应的传输存储地址的偏移地址(端点续传的时候,需要接着从上一次传输结束的地方接着传输,所以需要记录上一次已经成功传输完成的数据长度,也就是这个偏移地址)等。
管道信息载入模块313(Load PIPE INFO),当传输仲裁器选取一个传输请求之后,会把选取的PIPE ID传输给此模块,此模块根据PIPE ID,从管道信息缓存中读取相应的传输PIPE信息。
传输管理模块314(Transfer Management Module),负责具体的传输环管理和数据传输。
管道信息模块315(PIPE Info Module),传输管理模块在传输过程中或者传输结束后,向此模块传送当前PIPE的各种状态信息,此模块根据当前传输状况决定是否把PIPE信息写回到管道信息缓存。
使用上述系统进行USB3.x PIPE分类管理,可以很容易地管理断点续传和传输的优先级控制。根据传输的来源,把PIPE分为四类:
1)SW_REQ:系统软件发起的非周期性传输(保存至软件请求缓存307)
2)PO_REQ:周期性传输管理模块发起的周期性传输(保存至周期性请求缓存308)
3)RD_REQ:收到USB设备Ready信号之后发起的传输(保存在未就绪的请求缓存310)
4)SO_REQ:因为传输机会用完暂停的传输在下一个传输机会到来的时候发起的传输(保存在保存的请求缓存309)
所有的原始传输请求都由系统软件发起。
如果系统软件发起的传输请求为周期性的传输,那么这个传输被传输管理模块314传送至周期性传输管理模块302并被保存下来,周期性传输管理模块302会根据PIPE的相关信息,计算出什么时候发起对USB设备的传请求。
如果当前传输因为USB设备未就绪(Not Ready)而暂停传输,在收到USB设备的就绪(Ready)信号之后,会发起恢复传输的请求。
如果当前传输因为传输机会用完了暂停传输,在下一个传输机会,会自动恢复传输。
PIPE入驻PIPE缓存的规则:为了实现同一类PIPE的先到先执行,需要记录下上一次入驻的PIPE ID,下一次如果有PIPE需要入驻,则要从比上一次PIPE ID大的ID位置寻找一个空的PIPE空间,如果上一次PIPE ID已经达到最大值,那么下一次PIPE ID从第1个空间开始入驻。
PIPE执行的规则:假如当前被执行的PIPE ID为X,当执行完成当前PIPE之后,X的值加1,即指向了下一个需要执行的PIPE的ID,当下一次此类PIPE被执行的时候,X即需要执行的PIPE的ID。当X值达到PIPE ID允许的最大值的时候,回到第一个PIPE,即等于1。
本发明实施例还实现了USB主机针对同一Endpoint的多线程传输,多线程只针对同一个Endpoint执行两个传输线程。不同的Endpoint之间,只要有传输资源,任何时候都可以同时进行传输。同一个Endpoint和不同Endpoint的线程分享USB主机控制器的所有线程资源。比如USB主机配置成支持4个线程,如果其中三个线程已经被某些Endpoint占据了,另外的Endpoint就只有一个线程可以利用了,当四个线程都被占据时,其它的传输请求只有等待某一个线程结束释放资源只有才能进行传输。
对于同一Endpoint,如果有两个线程同时存在于USB主机控制器中,那么它们会分享设备的一些共同信息(包含XHCI协议中插槽上下文(Slot Context)所有信息和端点上下文(Endpoint Context)中除传输环出传输请求块栈指针之外的所有信息)。在端点上下文中增加第二线程的传输环传输请求块出栈指针供第二线程使用。
实现多线程所要进行的操作包括:
a)在内存中针对支持第二线程的Endpoint初始化好两个传输环;
b)在Configure Endpoint(配置端点)命令中增加对第二线程的支持,即把第一线程和第二线程传输环传输请求块的初始出栈指针都写入输入上下文中,主机控制器执行这个命令的时候,把第一线程和第二线程的传输环传输请求块出栈指针拷贝到输出设备上下文中。在主机控制器执行传输命令的时候,可以根据线程代号选择不同的传输环。
c)在Set TR Dequeue Pointer(设置传输环队列指针)命令中增加对第二线程的支持,主机执行这个命令的时候,可以选择性设置第一线程或第二线程的传输环传输请求块出栈指针。
d)通过上层协议使用多线程传输,比如通过上层数据结构定义线程数据,主机和设备传输的时候就不必考虑当前数据属于哪个线程。
相应地,USB主机控制器硬件进行的操作包括:
a)当执行Stop Endpoint(停止端点)命令执行的时候,同时停止所有此Endpoint正在执行的线程,并且保存当前所有正在执行的线程的传输环传输请求块出栈指针。
b)向设备发送头数据包(Header Packet),该头数据包中包含线程信息,使得设备知道当前传输属于哪个线程。对于支持多线程的设备,两个线程可以同时发送数据。对于不支持多线程的设备,主机需要在前面一个线程结束后再传输下一个线程,由于早就配置好了下一个线程的传输环,主机已经把线程的传输需要的各种信息和缓存都已经准备好,所以可以直接进入数据传输,而不用等待配置传输环的过程。
c)在接收到应用软件发来的传输命令时,如果当前有被中止/停止的线程,则继续执行被中止/停止的线程;如果有两个被中止/停止的线程,则都要继续执行。
d)当Endpoint出现传输错误要中止/停止(Halt)当前Endpoint的时候,此Endpoint的所有线程都被中止/停止。传输错误包含所有传输过程中可能引起传输中断的错误,比如一个线程正在和设备传输数据过程中出现了序列号错误或者重试超过重试上限次数等。
相应地,USB设备进行的操作包括:
a)在设备描述符中增加是否支持多线程的描述。
b)如果设备支持多线程,那么需要从头数据包中区分出当前传输数据属于哪个线程。如果设备不支持多线程,主机会控制数据流的先后顺序,不必区分当前传输的数据属于哪个线程。
在一个实施例中,把相关逻辑设计进USB3.x主机控制器IP,然后集成在SOC芯片中。在编写系统驱动程序和应用软件的时候,配合USB3.x主机控制器一起实现。
本申请实施例还提供一种计算机存储介质,其中存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现本申请的各方法实施方式。
需要说明的是,在本专利的申请文件中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。本专利的申请文件中,如果提到根据某要素执行某行为,则是指至少根据该要素执行该行为的意思,其中包括了两种情况:仅根据该要素执行该行为、和根据该要素和其它要素执行该行为。多个、多次、多种等表达包括2个、2次、2种以及2个以上、2次以上、2种以上。
在本申请提及的所有文献都被认为是整体性地包括在本申请的公开内容中,以便在必要时可以作为修改的依据。此外应理解,在阅读了本申请的上述公开内容之后,本领域技术人员可以对本申请作各种改动或修改,这些等价形式同样落于本申请所要求保护的范围。

Claims (16)

1.一种USB传输设备,其特征在于,包括:
配置模块,用于在内存中针对一个端点配置对应于第一传输线程的第一传输环和对应于第二传输线程的第二传输环;
USB的主机控制器,用于在所述第一传输线程传输结束时,根据已经配置的所述第二传输环直接进行所述第二传输线程的传输。
2.如权利要求1所述的USB传输设备,其特征在于,
配置端点命令中包括所述第一和第二传输环的初始出栈指针;
当所述主机控制器执行所述配置端点命令时,把该配置端点命令中所述第一和第二传输环的初始出栈指针复制到设备上下文中。
3.如权利要求1所述的USB传输设备,其特征在于,还包括
软件请求缓存,用于保存由软件发起的传输请求的管道标识;
周期性请求缓存,用于保存周期性的传输请求的管道标识;
保存的请求缓存,用于保存因为传输机会用完而中断后需要等待下一个传输机会续传的传输请求的管道标识;
未就绪的请求缓存,用于保存由于USB设备返回未就绪信号而中断的传输请求的管道标识;
仲裁器,用于传输仲裁,从所述软件请求缓存、所述周期性请求缓存、所述保存的请求缓存和所述未就绪的请求缓存中选择一个传输请求进行传输;
传输管理模块,用于对所述仲裁器所选择的传输请求的数据传输过程进行管理。
4.如权利要求3所述的USB传输设备,其特征在于,还包括:
管道信息缓存,用于缓存N个管道对应的传输请求的信息,其中N为正整数;
管道信息载入模块,用于针对所述仲裁器选择的传输请求,从所述管道信息缓存加载该传输请求的信息。
5.如权利要求3所述的USB传输设备,其特征在于,还包括:
所述软件请求缓存、所述周期性请求缓存、所述保存的请求缓存和所述未就绪的请求缓存分别包括N个寄存器,每个寄存器对应所述管道信息缓存中的一个管道。
6.如权利要求5所述的USB传输设备,其特征在于,还包括管道信息模块;
所述传输管理模块还用于在传输过程中或者传输结束后,向所述管道信息模块传送当前管道的各种状态信息,所述管道信息模块根据当前传输状况决定是否把管道信息写回到管道信息缓存。
7.如权利要求6所述的USB传输设备,其特征在于,还包括:
周期性传输管理模块,用来管理同步和中断两种周期性传输,当软件对一个端点请求一个周期性传输之后,所述周期性传输管理模块保存该请求,并根据该端点的特性周期性地发起传输请求。
8.一种USB传输方法,其特征在于,包括:
在内存中针对一个端点配置对应于第一传输线程的第一传输环和对应于第二传输线程的第二传输环;
USB的主机控制器在所述第一传输线程传输结束时,根据已经配置的所述第二传输环直接进行所述第二传输线程的传输。
9.如权利要求8所述的USB传输方法,其特征在于,还包括:
配置端点命令中包括所述第一和第二传输环的初始出栈指针;
当所述主机控制器执行所述配置端点命令时,把该配置端点命令中所述第一和第二传输环的初始出栈指针复制到设备上下文中。
10.如权利要求8所述的USB传输方法,其特征在于,还包括:
当所述主机控制器执行设置TR出栈指针命令时,选择性地设置所述第一线程或所述第二线程的传输环出栈指针。
11.如权利要求8所述的USB传输方法,其特征在于,还包括:
当所述主机控制器执行设置停止端点命令时,同时停止该端点正在执行的所有线程,并且保存当前所有正在执行的线程的传输环出栈指针。
12.如权利要求8所述的USB传输方法,其特征在于,还包括:
当所述主机控制器执行传输命令时,对当前停止的所有线程都要继续执行。
13.如权利要求8所述的USB传输方法,其特征在于,还包括:
当端点出现传输错误,需要停止当前端点时,停止该端点的所有线程。
14.如权利要求8至13中任意一项所述的USB传输方法,其特征在于,还包括:
如果软件发起的传输请求是周期性的,则将该传输请求的管道标识保存到周期性请求缓存,否则将该传输请求的管道标识保存到软件请求缓存;
如果一个传输请求的传输机会用完而中断后需要等待下一个传输机会续传,则将该传输请求的管道标识保存到保存的请求缓存;
如果一个传输请求由于USB设备返回未就绪信号而中断,则将该传输请求的管道标识保存到未就绪的请求缓存;
从所述软件请求缓存、所述周期性请求缓存、所述保存的请求缓存和所述未就绪的请求缓存中选择一个传输请求进行传输。
15.如权利要求14中任意一项所述的USB传输方法,其特征在于,所述选择一个传输请求的步骤之后还包括:
针对被选择的传输请求,从管道信息缓存加载该传输请求的信息;
在传输过程中或者传输结束后,根据当前传输状况决定是否把管道信息写回到所述管道信息缓存;
其中,所述管道信息缓存用于缓存N个管道对应的传输请求的信息,N为正整数。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现如权利要求8至15中任意一项所述的方法中的步骤。
CN201811502238.9A 2018-12-10 2018-12-10 Usb传输设备及传输方法 Active CN111290983B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201811502238.9A CN111290983B (zh) 2018-12-10 2018-12-10 Usb传输设备及传输方法
US16/601,949 US10929332B2 (en) 2018-12-10 2019-10-15 USB transmission device and transmission method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811502238.9A CN111290983B (zh) 2018-12-10 2018-12-10 Usb传输设备及传输方法

Publications (2)

Publication Number Publication Date
CN111290983A true CN111290983A (zh) 2020-06-16
CN111290983B CN111290983B (zh) 2023-05-16

Family

ID=70971421

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811502238.9A Active CN111290983B (zh) 2018-12-10 2018-12-10 Usb传输设备及传输方法

Country Status (2)

Country Link
US (1) US10929332B2 (zh)
CN (1) CN111290983B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112188025A (zh) * 2020-09-22 2021-01-05 北京中房智宝科技有限公司 一种usb传输图像稳定解决方案
CN112799981A (zh) * 2021-01-26 2021-05-14 展讯半导体(成都)有限公司 数据传输控制方法、功能机及相关产品
CN113971151A (zh) * 2021-10-28 2022-01-25 上海兆芯集成电路有限公司 串行传输控制器及其数据传输方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7035948B1 (en) * 2001-03-19 2006-04-25 Transdimension, Inc. System and method for USB controllers
CN101162448A (zh) * 2007-11-20 2008-04-16 杭州中天微系统有限公司 一种usb高速数据隧道的硬件传输方法
US20150127859A1 (en) * 2013-11-04 2015-05-07 AutoChips, Inc. Data transmission method and electronic device
CN105264498A (zh) * 2013-06-07 2016-01-20 马维尔国际贸易有限公司 用于通用串行总线系统的高速缓存管理的系统和方法
CN108920573A (zh) * 2018-06-22 2018-11-30 北京奇艺世纪科技有限公司 一种数据缓存处理方法、装置及终端设备

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7260826B2 (en) 2000-05-31 2007-08-21 Microsoft Corporation Resource allocation in multi-stream IP network for optimized quality of service
US7093277B2 (en) * 2001-05-30 2006-08-15 Digeo, Inc. System and method for improved multi-stream multimedia transmission and processing
US7073118B2 (en) 2001-09-17 2006-07-04 Digeo, Inc. Apparatus and method for saturating decoder values
DE60203779T2 (de) 2002-01-23 2006-03-09 Sony International (Europe) Gmbh Ein Verfahren zur Übertragung von End-to-End QoS durch Anwendung des end-to-end negotiation protocols (E2ENP)
US7995652B2 (en) 2003-03-20 2011-08-09 Utc Fire & Security Americas Corporation, Inc. Systems and methods for multi-stream image processing
US7336675B2 (en) * 2003-12-22 2008-02-26 Intel Corporation Optimized back-to-back enqueue/dequeue via physical queue parallelism

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7035948B1 (en) * 2001-03-19 2006-04-25 Transdimension, Inc. System and method for USB controllers
CN101162448A (zh) * 2007-11-20 2008-04-16 杭州中天微系统有限公司 一种usb高速数据隧道的硬件传输方法
CN105264498A (zh) * 2013-06-07 2016-01-20 马维尔国际贸易有限公司 用于通用串行总线系统的高速缓存管理的系统和方法
US20150127859A1 (en) * 2013-11-04 2015-05-07 AutoChips, Inc. Data transmission method and electronic device
CN108920573A (zh) * 2018-06-22 2018-11-30 北京奇艺世纪科技有限公司 一种数据缓存处理方法、装置及终端设备

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112188025A (zh) * 2020-09-22 2021-01-05 北京中房智宝科技有限公司 一种usb传输图像稳定解决方案
CN112799981A (zh) * 2021-01-26 2021-05-14 展讯半导体(成都)有限公司 数据传输控制方法、功能机及相关产品
CN113971151A (zh) * 2021-10-28 2022-01-25 上海兆芯集成电路有限公司 串行传输控制器及其数据传输方法

Also Published As

Publication number Publication date
CN111290983B (zh) 2023-05-16
US10929332B2 (en) 2021-02-23
US20200183875A1 (en) 2020-06-11

Similar Documents

Publication Publication Date Title
US7761642B2 (en) Serial advanced technology attachment (SATA) and serial attached small computer system interface (SCSI) (SAS) bridging
CN103810133B (zh) 用于管理对共享读缓冲器资源的访问的方法和装置
US6125399A (en) Computer system including a plurality of nodes for transferring through a data transfer network messages having distinguishing fields used for distinguishing the messages and controlling receipt thereof
US7533197B2 (en) System and method for remote direct memory access without page locking by the operating system
US8521934B1 (en) Multi-port context-based host controller
CN109933438B (zh) 高速共享内存数据收发系统
US20090119460A1 (en) Storing Portions of a Data Transfer Descriptor in Cached and Uncached Address Space
US7640549B2 (en) System and method for efficiently exchanging data among processes
KR102285749B1 (ko) 세마포어 기능을 갖는 시스템 온 칩 및 그것의 세마포어 구현 방법
US10929332B2 (en) USB transmission device and transmission method
US8086766B2 (en) Support for non-locking parallel reception of packets belonging to a single memory reception FIFO
CN107810492B (zh) 可配置的邮箱数据缓冲器装置
CN116302617B (zh) 共享内存的方法、通信方法、嵌入式系统以及电子设备
KR19990023189A (ko) 중앙 처리 장치의 사용 최소화 방법과, 데이터 패킷 전송 및 수신 방법
CN110716691A (zh) 调度方法、装置、闪存设备和系统
US10318362B2 (en) Information processing apparatus, information processing method, and non-transitory computer-readable storage medium
US10545697B1 (en) Reverse order request queueing by para-virtual device drivers
CN116107697B (zh) 一种不同操作系统之间互相通信的方法及系统
US10581748B2 (en) Information processing apparatus, information processing method, and non-transitory computer-readable storage medium
CN114356839B (zh) 处理写操作的方法、设备、处理器及设备可读存储介质
CN115840621A (zh) 一种多核系统的交互方法及相关装置
KR102206313B1 (ko) 시스템 인터커넥트 및 시스템 인터커넥트의 동작 방법
US7930438B2 (en) Interrogate processing for complex I/O link
US11010318B2 (en) Method and apparatus for efficient and flexible direct memory access
CN117312202B (zh) 片上系统和用于片上系统的数据传输方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: USB transmission device and transmission method

Granted publication date: 20230516

Pledgee: Renlai Electronic Technology (Shanghai) Co.,Ltd.

Pledgor: Montage LZ Technologies (Chengdu) Co.,Ltd.

Registration number: Y2024980016173