CN115658586A - 资源管理芯片、方法、电子设备及可读存储介质 - Google Patents
资源管理芯片、方法、电子设备及可读存储介质 Download PDFInfo
- Publication number
- CN115658586A CN115658586A CN202211385060.0A CN202211385060A CN115658586A CN 115658586 A CN115658586 A CN 115658586A CN 202211385060 A CN202211385060 A CN 202211385060A CN 115658586 A CN115658586 A CN 115658586A
- Authority
- CN
- China
- Prior art keywords
- data
- hub
- buffer
- chip
- bus
- 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.)
- Pending
Links
- 238000007726 management method Methods 0.000 title claims description 47
- 230000005540 biological transmission Effects 0.000 claims abstract description 207
- 239000000872 buffer Substances 0.000 claims abstract description 169
- 238000000034 method Methods 0.000 claims description 20
- 230000003993 interaction Effects 0.000 claims description 10
- 238000001914 filtration Methods 0.000 claims description 2
- 230000006870 function Effects 0.000 description 47
- 238000012546 transfer Methods 0.000 description 18
- 238000010586 diagram Methods 0.000 description 16
- 238000012545 processing Methods 0.000 description 9
- 230000001360 synchronised effect Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 150000001875 compounds Chemical class 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 239000002131 composite material Substances 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000007711 solidification Methods 0.000 description 3
- 230000008023 solidification Effects 0.000 description 3
- 101001042125 Eisenia hortensis Chymotrypsin inhibitor Proteins 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000013468 resource allocation Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 238000013475 authorization Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012806 monitoring device Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Landscapes
- Information Transfer Systems (AREA)
Abstract
本发明实施例提供了一种资源管理芯片,包括:设备控制器、集线器、多个总线设备、多个第一缓冲器和访问控制器;集线器包括多个端口和多个第一端点;设备控制器用于接收资源获取指令,并分配用于接收数据的总线设备,以及为总线设备配置对应的端口和第一端点;总线设备包括多个第二端点;总线设备用于将接收到的数据通过第二端点发送给对应的第一缓冲器;第一缓冲器用于存储数据,以及在访问控制器控制下将数据发送给集线器;集线器用于通过第一端点接收数据,以及在访问控制器控制下将数据输出到芯片外部;访问控制器用于接收设备控制器发送的控制指令,并根据控制指令控制第一缓冲器和集线器之间,以及集线器和芯片外部进行数据传输。
Description
技术领域
本发明属于计算机技术领域,特别是涉及一种资源管理芯片、方法、电子设备及可读存储介质。
背景技术
通用串行总线(Universal Serial Bus,USB)自推出以来,在计算机、复杂终端、网络基础设施等领域被广泛应用,成为本世纪的标准扩展接口和必备接口之一。最新的USB协议已经发展到USB 4.0版本,目前计算机等智能设备与外界的数据交互以USB接口和网络两种方式为主。
现有技术中,服务器或交换机等大型网络设备,在USB总线上的设备侧,USB设备包括单一功能和多功能的USB设备。但是,无论是单一功能还是多功能的USB设备,设备的功能及相关配置在出厂时已经固化,因此,存在USB设备硬件上功能单一、资源不能分配的问题。
发明内容
本发明提供一种资源管理方法、装置、电子设备及可读存储介质,以便解决USB设备硬件上功能单一、资源不能分配的问题。
为了解决上述技术问题,本发明是这样实现的:
第一方面,本发明提供一种资源管理芯片,所述芯片包括:设备控制器、集线器、多个总线设备、多个第一缓冲器和访问控制器;
所述集线器包括多个端口和多个第一端点;
所述设备控制器用于接收资源获取指令,并根据所述资源获取指令分配用于接收数据的总线设备,以及,为所述总线设备配置对应的端口和第一端点;其中,所述总线设备通过所述端口接入所述集线器;
所述总线设备包括多个第二端点;所述总线设备用于将接收到的数据通过所述第二端点发送给对应的第一缓冲器;
所述第一缓冲器用于存储所述数据,以及,在所述访问控制器控制下将所述数据发送给所述集线器;
所述集线器用于通过所述第一端点接收所述数据,以及,在所述访问控制器控制下将所述数据输出到所述芯片外部;
所述访问控制器用于接收所述设备控制器发送的控制指令,并根据所述控制指令控制所述第一缓冲器和所述集线器之间,以及所述集线器和所述芯片外部之间进行数据传输。
可选的,所述设备控制器包括第一寄存器、第二寄存器以及第三寄存器;
所述第一寄存器用于查询各所述总线设备和所述集线器的当前状态,以及,根据所述资源获取指令设置用于接收数据的总线设备、所述总线设备对应的端口和第一端点;
所述第二寄存器用于向所述访问控制器发送第一控制指令,使得所述访问控制器根据所述第一控制指令打开指定的数据传输通道;
所述第三寄存器用于为各总线设备分别设置对应的第一缓冲器,以及查询各所述第一缓冲器的当前状态。
可选的,所述总线设备包括第一接口;其中,所述第一接口包括第二控制端点,所述第二端点设置在所述第一接口中;
所述第二控制端点用于在所述第一寄存器控制下控制所述第二端点接收数据,以及,将所述数据发送给对应的第一缓冲器;
所述第一寄存器还用于根据所述资源获取指令设置所述第一接口的数据传输类型,使得所述第一接口通过所述第二端点接收所述数据传输类型的数据;其中,所述数据传输类型为视频控制类型、视频传输类型、串口传输类型、网络传输类型和人机交互类型中的任一种。
可选的,所述集线器还包括第一控制端点和第二缓冲器;
所述第一控制端点用于在所述第一寄存器控制下控制所述第一端点接收所述第一缓冲器发送的数据,并通过所述第一端点将所述数据发送给所述第二缓冲器进行存储;
所述第二缓冲器用于接收并存储各所述第一端点发送的数据,以及,根据所述访问控制器发送的第二控制指令将所述数据发送到所述芯片外部。
可选的,所述第二缓冲器包括帧链表和数据链表;
所述数据链表用于缓存所述总线设备通过所述第一缓冲器发送给所述集线器的数据;
所述帧链表用于确定所述集线器当前待传输的数据,以及,根据所述第二控制指令将所述待传输的数据发送到所述芯片外部。
可选的,所述帧链表是一个指针数组,所述帧链表的任一指针指向所述数据链表中的一个数据;
所述帧链表还用于根据所述第二控制指令设置当前帧内待传输的各类型数据包的占比,以及,在发送完当前帧的数据后根据下一指针从所述数据链表中获取下一帧的待传输数据,并将所述指针更新到所述设备控制器中进行存储。
可选的,所述访问控制器包括多个传输通道、通道选择模块和总线仲裁器;
所述多个传输通道各自具有通道编号和相应的通道优先级;
所述通道选择模块用于根据所述设备控制器发送的第一控制指令打开所述第一控制指令指定的传输通道;其中,所述第一控制指令包括所需打开的传输通道的通道编号;
所述总线仲裁器用于在多个传输通道的通道优先级相同的情况下,根据通道编号对各传输通道进行排序,并依据排序顺序控制各传输通道进行数据传输。
可选的,所述第一缓冲器包括路由逻辑模块、共享传输缓冲器和专用传输缓冲器;
所述路由逻辑模块用于解析所述总线设备发送数据的数据包类型,并过滤不符合预设规定的数据包,以确定所述总线设备发送的数据为符合第一时延要求的第一数据或符合第二时延要求的第二数据;
所述共享传输缓冲器用于接收所述路由逻辑模块路由来的所述第一数据,以及,在所述访问控制器控制下将所述第一数据发送给所述集线器;
所述专用传输缓冲器用于接收所述路由逻辑模块路由来的所述第二数据,以及,在所述访问控制器控制下将所述第二数据发送给所述集线器。
第二方面,本发明提供一种资源管理方法,应用于如上任一所述的资源管理芯片,所述方法包括:
向设备控制器发送资源获取指令,控制所述设备控制器根据所述资源获取指令分配用于接收数据的总线设备,以及,为所述总线设备配置对应的集线器端口和第一端点;
通过所述设备控制器控制所述总线设备接收所述数据,以及将所述数据通过第二端点发送给对应的第一缓冲器;
通过所述设备控制器控制所述第一缓冲器接收并存储所述总线设备发送来的数据;
通过所述设备控制器向访问控制器发送控制指令,控制所述访问控制器根据所述控制指令控制所述第一缓冲器将所述数据发送给所述集线器,以及控制所述集线器通过第一端点接收所述数据并将所述数据输出到所述芯片外部。
可选的,所述资源获取指令根据远程客户端对所述芯片的外接设备发送的远程访问指令生成;在所述远程访问指令表征所述远程客户端向所述外接设备发送数据的情况下,所述向设备控制器发送资源获取指令之前,所述方法还包括:
通过运行于所述芯片之上的资源管理程序接收所述远程客户端发送的远程数据包;
通过所述资源管理程序将所述远程数据包发送给运行于所述芯片之上的数据传输程序进行解析及处理,以获得第一数据包;
所述向设备控制器发送资源获取指令,控制所述设备控制器根据所述资源获取指令分配用于接收数据的总线设备,以及,为所述总线设备配置对应的集线器端口和第一端点,包括:
所述资源管理程序通过运行于所述芯片之上的芯片驱动程序向设备控制器发送资源获取指令,控制所述设备控制器根据所述资源获取指令分配用于接收数据的总线设备,以及,为所述总线设备配置对应的集线器端口和第一端点;
所述通过所述设备控制器向访问控制器发送控制指令,控制所述访问控制器根据所述控制指令控制所述第一缓冲器将所述数据发送给式所述集线器,以及控制所述集线器通过第一端点接收所述数据并将所述数据输出到所述芯片外部,包括:
通过所述设备控制器向访问控制器发送控制指令,控制所述访问控制器根据所述控制指令控制所述第一缓冲器将所述数据发送给所述集线器,以及控制所述集线器通过第一端点接收所述数据并将所述数据传输给所述外接设备,以实现所述远程客户端对所述外接设备的远程访问。
可选的,在所述远程访问指令表征所述外接设备向所述远程客户端发送数据的情况下,所述向设备控制器发送资源获取指令,控制所述设备控制器根据所述资源获取指令分配用于接收数据的总线设备,以及,为所述总线设备配置对应的集线器端口和第一端点,包括:
所述资源管理程序通过所述芯片驱动程序向设备控制器发送资源获取指令,控制所述设备控制器根据所述资源获取指令分配用于接收数据的总线设备,以及,为所述总线设备配置对应的集线器端口和第一端点;
所述通过所述设备控制器控制所述总线设备接收所述数据,以及将所述数据通过第二端点发送给对应的第一缓冲器,包括:
通过所述设备控制器控制所述总线设备接收所述外接设备的中央处理器发送的本地数据包,以及将所述本地数据包通过第二端点发送给对应的第一缓冲器进行存储;
所述通过所述设备控制器向访问控制器发送控制指令,控制所述访问控制器根据所述控制指令控制所述第一缓冲器将所述数据发送给式所述集线器,以及控制所述集线器通过第一端点接收所述数据并将所述数据输出到所述芯片外部,包括:
通过所述设备控制器向访问控制器发送控制指令,控制所述访问控制器根据所述控制指令控制所述第一缓冲器将所述数据发送给所述集线器,以及控制所述集线器通过第一端点接收所述数据并将所述数据传输给所述数据传输程序;
所述通过所述设备控制器向访问控制器发送控制指令,控制所述访问控制器根据所述控制指令控制所述第一缓冲器将所述数据发送给所述集线器,以及控制所述集线器通过第一端点接收所述数据并将所述数据传输给所述数据传输程序之后,所述方法还包括:
通过所述数据传输程序对所述本地数据包进行解析及处理,以获得第二数据包,并将所述第二数据包发送给所述资源管理程序;
通过所述资源管理程序将所述第二数据包发送给所述远程客户端,以实现所述远程客户端对所述外接设备的远程访问。
第三方面,本发明提供一种电子设备,包括如上中任一所述的资源管理芯片。
第四方面,本发明提供一种可读存储介质,当所述存储介质中的指令由电子设备的芯片执行时,使得电子设备能够执行如上任一所述的资源管理方法。
本发明实施例提供的资源管理芯片,可以通过芯片中的设备控制器动态分配用于接收数据的总线设备,以及,为总线设备配置对应的集线器端口和第一端点,使得芯片的多个总线设备、集线器的多个端口和多个第一端点在硬件上动态可配,可以根据需求通过设备控制器进行灵活配置,实现多种不同的功能,一定程度上解决USB实体设备的资源固化,硬件上功能单一、资源不能分配的问题。此外,在芯片中设置多个总线设备各自对应的第一缓冲器,可以为总线设备附加数据缓存区域,从而增加芯片的数据存储能力。另外,设备控制器可以通过访问控制器控制第一缓冲器将存储的数据发送给集线器,以及,控制集线器将存储的数据输出到芯片外部。这样,由访问控制器来控制第一缓冲器和集线器之间,以及集线器和芯片外部之间进行数据传输,可以更好地协调芯片内多个总线设备、集线器的多个端口和多个第一端点,也为提高芯片的整体数据传输效率提供硬件基础。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种资源管理芯片的结构图;
图2是现有技术中USB总线的拓扑图;
图3是现有技术中USB设备的内部逻辑示意图;
图4是本发明实施例提供的另一种资源管理芯片的结构图;
图5是现有技术中USB协议的时间片示意图;
图6是本发明实施例的DMA控制逻辑的示意图;
图7是本发明实施例提供的又一种资源管理芯片的结构图;
图8是本发明实施例提供的一种资源管理方法的步骤流程图;
图9是本发明实施例提供的服务器或交换机远程访问的示意图;
图10是本发明实施例提供的一种电子设备的结构图。
附图标记:
设备控制器10;集线器20;总线设备30;第一缓冲器40;访问控制器50;端口201;第一端点202;第二端点301;第一寄存器101;第二寄存器102;第三寄存器103。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是本发明实施例提供的一种资源管理芯片的结构图,所述芯片包括:设备控制器10、集线器20、多个总线设备30、多个第一缓冲器40和访问控制器50;所述集线器20包括多个端口201和多个第一端点202;所述设备控制器10用于接收资源获取指令,并根据所述资源获取指令分配用于接收数据的总线设备30,以及,为所述总线设备30配置对应的端口201和第一端点202;其中,所述总线设备30通过所述端口201接入所述集线器20;所述总线设备30包括多个第二端点301;所述总线设备30用于将接收到的数据通过所述第二端点301发送给对应的第一缓冲器40;所述第一缓冲器40用于存储所述数据,以及,在所述访问控制器50控制下将所述数据发送给所述集线器20;所述集线器20用于通过所述第一端点202接收所述数据,以及,在所述访问控制器50控制下将所述数据输出到所述芯片外部;所述访问控制器50用于接收所述设备控制器10发送的控制指令,并根据所述控制指令控制所述第一缓冲器40和所述集线器20之间,以及所述集线器20和所述芯片外部之间进行数据传输。
本发明实施例中,设备控制器10通过芯片内部的电路与集线器20、多个总线设备30、多个第一缓冲器40和访问控制器50进行连接。设备控制器10可以对集线器20、多个总线设备30、多个第一缓冲器40和访问控制器50进行通用的逻辑设置,并对集线器20、多个总线设备30进行状态查询。设备控制器10可以对访问控制器50发出控制指令,控制访问控制器50控制集线器20、多个总线设备30、多个第一缓冲器40进行芯片内部和芯片外接设备之间的数据交互。
本发明实施例中,集线器20包括多个端口201和多个第一端点202。设备控制器10用于接收到运行于芯片之上的软件或者是运行于芯片挂接的计算机设备的中央处理器(Central Processing Unit,CPU)之上的软件发送的资源获取指令,根据资源获取指令分配用于接收数据的总线设备30,以及为该总线设备30配置对应的端口201和第一端点202。其中,多个总线设备30通过集线器20的多个端口201分别接入集线器20中。设备控制器10可以通过为总线设备30配置集线器20的端口201和第一端点202,形成模拟“***”动作,使得总线设备30与集线器20建立实际通信连接,总线设备30可以通过端口201访问到集线器20,集线器20的第一端点202可以接收该总线设备30发送来的数据。
本发明实施例中,总线设备30包括多个第二端点301,第二端点301是总线设备30中的最小可寻址单元,对应总线设备30硬件上的一个数据缓冲区,第二端点301用来接收和发送数据。第二端点301可以是一个单字节或4字节32位的缓存,此处仅是举例说明,本发明实施例不做限制。总线设备30用于通过第二端点301接收芯片外部发送来的数据,并将接收到的数据通过第二端点301发送给对应的第一缓冲器40。总线设备30中的多个第二端点301中有数据时,可以实时将数据发送到该总线设备30对应的第一缓冲器40中进行存储。设备控制器10在芯片初始化时为多个总线设备30配置各自对应的第一缓冲器40,即通过在第一缓冲器40与对应的总线设备30之间建立地址映射,使得第一缓冲器40与对应的总线设备30绑定,从而可以接收总线设备30通过第二端点301发送的数据。
本发明实施例中,多个第一缓冲器40在硬件上是一个随机存取存储器(randomaccess memory,RAM)分成了多个区域,一个区域作为一个第一缓冲器40,第一缓冲器40比第二端点301具有更多的存储空间,可以比第二端点301存放更多的数据。第一缓冲器40用于存储对应的总线设备30通过第二端点301发送来的数据。当第一缓冲器40接收到来自访问控制器50的数据传输指令时,可以根据数据传输指令将存储的数据中相应的数据路由到集线器20中总线设备30对应的第一端点20上。
本发明实施例中,集线器20包括多个端口201,可以支持多个总线设备30接入,集线器20可以对接入的多个总线设备30进行管理,监测总线设备30的热插拔事件。集线器20用于通过第一端点202接收总线设备30通过第一缓冲器发送来的数据。其中,第一端点202是集线器20中的最小可寻址单元,对应集线器20上的一个数据缓冲区,第一端点202用来接收和发送数据。第一端点202可以是一个单字节或4字节32位的缓存,此处仅是举例说明,本发明实施例不做限制。集线器20中的多个第一端点202中有数据时,可以实时将数据发送到集线器20的数据缓存区域中进行存储。当集线器20接收到来自访问控制器50的数据传输指令时,可以根据数据传输指令将存储在数据缓存区域中的数据输出到芯片外部。
本发明实施例中,当访问控制器50接收到设备控制器10发送的控制指令后,根据控制指令所表征的数据传输要求控制第一缓冲器40将存储的数据发送给集线器20,以及集线器20将存储的数据输出到芯片外部。
例如,本发明实施例的资源管理芯片可以是现场可编程门阵列芯片(FieldProgrammable Gate Array,FPGA),FPGA芯片内部实现的USB功能逻辑(USB IP)可以包括:一个USB设备控制器、一个USB集线器(USB hub)、多个USB总线设备、多个第一缓冲器40和访问控制器50。其中,第一缓冲器40可以是先进先出存储器(First Input First Output,FIFO),访问控制器50可以是直接访问控制器(Direct Memory Access,DMA)。其中,USB集线器可以包括六个向下的端口201和15个第一端点202,可以支持最多六个USB总线设备通过端口分别接入USB集线器进行管理。USB设备可以包括15个第二端点301。其中,本发明实施例的第一端点202和第二端点301可以是可编程端点,可编程端点支持批量传输(Bulktransfer)、控制传输(Control transfer)、同步传输(Isochronous transfer)和中断传输(Interrupt transfer)全部四种数据传输类型,还支持参数动态可调,如数据传输的最大传输包大小、轮询时间间隔等参数。
需要说明的是,USB作为一种高速传输总线,需要承载多种业务类型的数据包传输,为了充分利用其带宽,USB协议中,从带宽、时延、完整性校验三个角度出发,将数据包分成了4种传输类型:控制传输、同步传输、中断传输、批量传输。其中,控制传输用于传输突发的、非周期性的数据,传输数据量小,对带宽、时延要求不高,但要求数据必须正确,因此需要完整性校验;同步传输用于传输等时数据,数据量大,对带宽、时延要求高,但不要求数据必须正确,比如摄像头;中断传输用于传输数据量小的实时数据,对时延要求高,且要求数据必须正确,比如键盘、鼠标;批量传输用于传输大数据量的存储类数据,时延要求不高,但要求数据必须正确,比如U盘。
本发明实施例提供的资源管理芯片,可以通过芯片中的设备控制器10动态分配用于接收数据的总线设备30,以及,为总线设备30配置对应的端口201和第一端点202,使得芯片的多个总线设备30、集线器的多个端口201和多个第一端点202在硬件上动态可配,可以根据需求通过设备控制器进行灵活配置,实现多种不同的功能,一定程度上解决USB实体设备的资源固化,硬件上功能单一、资源不能分配的问题。此外,在芯片中设置多个总线设备30各自对应的第一缓冲器40,可以为总线设备30附加数据缓存区域,从而增加芯片的数据存储能力。另外,设备控制器10可以通过控制访问控制器50控制第一缓冲器40将存储的数据发送给集线器20,以及,控制集线器20将存储的数据输出到芯片外部。这样,由访问控制器来控制第一缓冲器40和集线器20之间,以及集线器20和芯片外部之间进行数据传输,可以更好地协调芯片内多个总线设备30、集线器的多个端口201和多个第一端点202,也为提高芯片的整体数据传输效率提供了硬件基础。
需要说明的是,现有技术中,USB总线拓扑包含的必选组件有:USB控制器和根集线器(root hub)。其中,根集线器一般集成在USB控制器内部,根集线器包含的可选组件有:最多5级的非根集线器(hub)以及形式各样的USB设备。USB控制器及根集线器是主机侧的硬件实现,用于发起USB请求块(USB Request Block,URB)请求以及检测USB设备的热拔插事件。目前的USB控制器标准包括:OHCI接口标准(Open Host Controller Interface,OHCI)、EHCI接口标准(Enhanced Host Controller Interface,EHCI)和XHCI接口标准(eXtensible Host Controller Interface,XHCI),分别支持USB1.1,USB2.0,以及USB3.0协议。作为USB总线上的设备侧实现,USB设备的一个功能逻辑被称为一个功能(function)。单一功能的USB设备,只包含一个function,如U盘、鼠标等。多功能的USB设备硬件设计上有两种实现方式,一种被称为复合设备(compound device),内部由一个hub以及与之绑定的多个function组成。另一种被称为组合设备(composite device),内部直接由多个相互独立的function组成,同时通过接口关联描述符(Interface Association Descriptor,IAD)加以组织。现有的USB产品,无论是单一function的USB设备,还是compound device,又或者是composite device,其功能都是在出厂时固化,比如U盘只支持存储功能,USB串口只支持串口通信功能。
图2是现有技术中USB总线的拓扑图,如图2所示,第一层是主机和根集线器,根集线器一般集成在USB控制器中,根集线器可以包括最多5级的非根集线器以及形式各样的USB设备,USB设备的一个功能逻辑被称为一个功能。图2中第二层至第六层包括五级的非根集线器:集线器2至集线器7,第三层至第六层还包括USB设备多个功能,第六层的集线器7和第七层的功能可以组成一个复合设备。
需要说明的是,本发明实施例提供的资源管理芯片通过集线器20和多个总线设备30可以实现一种设备侧资源动态可配的复合设备。USB协议中,将设备内部资源进一步细化为3个层级,包含配置(Configuration)、接口(Interface)和端点(Endpoint)。一个Interface表示USB设备的一个基本功能逻辑,在USB协议中,也被称为一个function,当USB设备具备多个功能时,它会包含多个Interface。多个Interface组合在一起,称为一个Configuration,不同的Configuration使设备表现出不同的功能组合。Endpoint是USB设备中最小的可寻址单元,对应硬件上的一个数据缓冲区,用来存放和发送USB数据,一个Interface可以包含多个Endpoint。图3是现有技术中USB设备的内部逻辑示意图,如图3所示,设备包括配置0和配置1两种功能组合,配置0包括接口0和接口1两种功能,配置1包括接口0、接口1和接口2三种功能,每个接口下包括1或2个端点,用来存放和发送USB数据。
图4是本发明实施例提供的另一种资源管理芯片的结构图,所述芯片包括:集线器20、多个总线设备30、多个第一缓冲器40、访问控制器50、第一寄存器101、第二寄存器102以及第三寄存器103;所述集线器20包括多个端口201和多个第一端点202;所述第一寄存器101用于查询各所述总线设备30和所述集线器20的当前状态,以及,根据所述资源获取指令设置用于接收数据的总线设备30、所述总线设备30对应的端口201和第一端点202;所述第二寄存器102用于向所述访问控制器50发送第一控制指令,使得所述访问控制器50根据所述第一控制指令打开指定的数据传输通道;所述第三寄存器103用于为各总线设备30分别设置对应的第一缓冲器40,以及查询各所述第一缓冲器40的当前状态;其中,所述总线设备30通过所述端口201接入所述集线器20;所述总线设备30包括多个第二端点301;所述总线设备30用于将接收到的数据通过所述第二端点301发送给对应的第一缓冲器40;所述第一缓冲器40用于存储所述数据,以及,在所述访问控制器50控制下将所述数据发送给所述集线器20;所述集线器20用于通过所述第一端点202接收所述数据,以及,在所述访问控制器50控制下将所述数据输出到所述芯片外部;所述访问控制器50用于接收所述第二寄存器102102发送的第一控制指令,并根据所述第一控制指令控制所述第一缓冲器40和所述集线器20之间,以及所述集线器20和所述芯片外部之间进行数据传输。
需要说明的是,关于集线器20、多个总线设备30、多个第一缓冲器40、访问控制器50、端口201、第一端点202和第二端点301的说明可以参考上述资源管理芯片的详细说明,此处不再赘述。
本发明实施例中,通过第一寄存器101、第二寄存器102以及第三寄存器103对芯片的整体资源进行配置和管理。其中,第一寄存器101用于通用逻辑的设置和状态查询,可以查询各总线设备30和集线器20的当前状态。在接收到运行于芯片之上的软件或者是运行于芯片挂接的计算机设备的CPU之上的软件发送的资源获取指令后,可以根据资源获取指令设置用于接收数据的总线设备30,以及为该总线设备30配置对应的集线器端口201和第一端点202,形成模拟***动作,使得总线设备30与集线器20建立实际通信连接,总线设备30可以通过端口201访问到集线器20,集线器20的第一端点202可以接收该总线设备30发送来的数据。
本发明实施例中,第二寄存器102用于向访问控制器50发送第一控制指令,使得访问控制器50根据第一控制指令打开指定的数据传输通道,按照第一控制指令所表征的数据传输要求控制第一缓冲器40将存储的数据发送给集线器20,以及集线器20将存储的数据输出到芯片外部。第三寄存器103用于在芯片初始化时为多个总线设备30配置各自对应的第一缓冲器40,即通过在第一缓冲器40与对应的总线设备30之间建立地址映射,使得第一缓冲器40与对应的总线设备30绑定,从而可以接收总线设备30通过第二端点301发送的数据。第三寄存器103还用于查询各第一缓冲器40的当前状态,支持USB2.0协议高速模式特有的因特网探索流(Packet Internet Groper Flow,PING Flow),以响应USB主机控制器主动查询USB设备当前是否空闲的请求,在实际发送数据传输请求前,判定USB设备是否准备好接收数据,可以为软件优化提供硬件支持。
本发明实施例提供的资源管理芯片,可以通过芯片中的第一寄存器101动态分配用于接收数据的总线设备30,以及,为总线设备30配置对应的端口201和第一端点202,使得芯片的多个总线设备30、集线器的多个端口201和多个第一端点202在硬件上动态可配,可以根据需求通过设备控制器进行灵活配置,实现多种不同的功能,一定程度上解决USB实体设备的资源固化,硬件上功能单一、资源不能分配的问题。此外,在芯片中设置多个总线设备30各自对应的第一缓冲器40,可以为总线设备30附加数据缓存区域,从而增加芯片的数据存储能力。另外,第二寄存器102可以通过控制访问控制器50控制第一缓冲器40将存储的数据发送给集线器20,以及,控制集线器20将存储的数据输出到芯片外部。这样,由访问控制器来控制第一缓冲器40和集线器20之间,以及集线器20和芯片外部之间进行数据传输,可以更好地协调芯片内多个总线设备30、集线器的多个端口201和多个第一端点202。第三寄存器103可以通过查询各第一缓冲器40的当前状态,在实际发送数据传输请求前,判定USB设备是否准备好接收数据,可以为提高芯片的整体数据传输效率提供硬件基础。
可选的,所述总线设备30包括第一接口;其中,所述第一接口包括第二控制端点,所述第二端点301设置在所述第一接口中;所述第二控制端点用于在所述第一寄存器101控制下控制所述第二端点301接收数据,以及,将所述数据发送给对应的第一缓冲器40;所述第一寄存器101还用于根据所述资源获取指令设置所述第一接口的数据传输类型,使得所述第一接口通过所述第二端点301接收所述数据传输类型的数据;其中,所述数据传输类型为视频控制类型、视频传输类型、串口传输类型、网络传输类型和人机交互类型中的任一种。
本发明实施例中,一个接口表示任一总线设备的一个基本功能逻辑,一个接口可以包括多个端点。本发明实施例的总线设备30包括一个接口即第一接口,表示总线设备30具备一种功能逻辑。本发明实施例的总线设备30可以具有视频控制、视频传输、串口传输、网络传输和人机交互中的任一种功能,本发明实施例对此不做限制。第一接口可以包括一个第二控制端点和多个第二端点301,第二控制端点用于控制多个第二端点301接收数据,以及,将数据发送给总线设备30对应的第一缓冲器40。
例如,本发明实施例的资源管理芯片的USB集线器可以包括六个向下的端口201和15个第一端点202,可以支持最多六个USB总线设备通过端口分别接入USB集线器进行管理。其中,每个USB总线设备包括一个第一接口和最多15个第二端点301,第一接口可以是可编程接口,每个第一接口可以对应一种功能逻辑。这样本发明实施例的资源管理芯片可以具有6个可编程接口,分别用于UVC视频控制、视频传输、CDC串口传输/ACM、CDC(ECM)网络传输和两组人机接口设备(Human Interface Device,HID)。相比于固态化的USB设备,可编程接口可以支持自身参数动态调整,如可以灵活设置绑定的端口数量、是否启用交替设置等,并且可通过USB设备控制器进行接口动态组合形成功能组合即配置,也可以通过USB设备控制器模拟触发***或拔出的USB集线器动作。
本发明实施例中,第一寄存器101还用于根据资源获取指令设置第一接口的数据传输类型,即为总线设备30设置功能,使得总线设备30可以具有视频控制、视频传输、串口传输、网络传输和人机交互中的任一种功能。在第一寄存器101控制下,第一接口可以通过第二端点301接收相应的数据传输类型的数据;其中,数据传输类型为视频控制、视频传输、串口传输、网络传输和人机交互中的任一种。
本发明实施例的总线设备30包括第一接口;其中,所述第一接口包括第二控制端点,所述第二端点设置301在所述第一接口中;所述第二控制端点用于在所述第一寄存器101控制下控制所述第二端点301接收数据,以及,将所述数据发送给对应的第一缓冲器40;所述第一寄存器101还用于根据所述资源获取指令设置所述第一接口的数据传输类型,使得所述第一接口通过所述第二端点301接收所述数据传输类型的数据;其中,所述数据传输类型为视频控制类型、视频传输类型、串口传输类型、网络传输类型和人机交互类型中的任一种。这样,使得本发明实施例的芯片可以具有多种功能的总线设备30,进一步地,可以通过第一寄存器101根据实际的需求对多个总线设备30进行动态分配,解决总线设备资源固化、功能单一,不能灵活配置的问题。
可选的,所述集线器20还包括第一控制端点和第二缓冲器;所述第一控制端点用于在所述第一寄存器101控制下控制所述第一端点202接收所述第一缓冲器40发送的数据,并通过所述第一端点202将所述数据发送给所述第二缓冲器进行存储;所述第二缓冲器用于接收并存储各所述第一端点202发送的数据,以及,根据所述访问控制器50发送的第二控制指令将所述数据发送到所述芯片外部。
本发明实施例中,集线器20可以包括默认的控制端点即第一控制端点和第二缓冲器。第二缓冲器在硬件上是一个缓存区域,第二缓冲器比第一端点202具有更多的存储空间,可以比第一端点202存放更多的数据。第二缓冲器用于接收并存储第一缓冲器40通过各第一端点202发送来的数据。当第二缓冲器接收到访问控制器50发送的第二控制指令后,可以根据第二控制指令所表征的数据传输要求将相应的数据发送到芯片外部。可选的,本发明实施例的集线器20还可以包括状态中断输入端点,状态中断输入端点用于表征该端点是输入类型,表示当前数据传输的方向是总线设备至芯片外接的主机。
例如,USB集线器可以包括一个第一控制端点、一个状态中断输入端点、最多15个第一端点202和一个第二缓冲器。其中,第二缓冲器可以是FIFO存储器。USB集线器可以通过FPGA芯片对外的4个USB引脚,经USB线缆挂接到外接计算机设备CPU内部的USB主机控制器下。
本发明实施例提供的集线器20,可以通过第一控制端点控制第一端点202方便地实现第一缓冲器40和第二缓冲器之间的数据传输,设置第二缓冲器可以为集线器20附加数据缓存区域,从而增加芯片的数据存储能力。此外,第二缓冲器在访问控制器50控制下,可以方便地实现芯片和外接设备的数据传输,可以为提高芯片的整体数据传输效率提供了硬件基础。
可选的,所述第二缓冲器包括帧链表和数据链表;所述数据链表用于缓存所述总线设备30通过所述第一缓冲器40发送给所述集线器20的数据;所述帧链表用于确定所述集线器20当前待传输的数据,以及,根据所述第二控制指令将所述待传输的数据发送到所述芯片外部。
需要说明的是,为满足多种类型的数据在同一条共享通路上传输,USB协议从时间维度上把数据传输分成了多个时间片,每个时间片称为一个帧或微帧,每个帧内最高80%的时间,用于优先传输对时延要求高的数据,例如中断传输和同步传输类型的数据,在余下的时间内再传输对时延要求不高的数据,例如控制传输和批量传输类型的数据。
本发明实施例的第二缓冲器包括两级链表,第一级是数据链表,第二级是帧链表。其中,帧链表用于确定集线器20当前时间片内待传输的数据,以及根据访问控制器50的第二控制指令在每个帧最高80%的时间内优先传输中断传输和同步传输类型的数据,在余下的时间内再传输控制传输和批量传输类型的数据,将待传输的数据发送到芯片外部。
图5是现有技术中USB协议的时间片示意图,如图5所示,全速或低速帧的时间片大小为1毫秒,每一帧包括全速等时数据有效负载。高速微帧的时间片大小为125微秒,在USB2.0协议中,高速微帧的刻度是全速帧的1/8,每一帧包括高速等时数据有效负载,在一个每一帧包括全速等时数据有效负载中最高80%的时间内优先传输中断传输和同步传输类型的数据,在余下的时间内再传输控制传输和批量传输类型的数据。
本发明实施例的第二缓冲器通过帧链表和数据链表可以满足总线协议对数据传输时间片的要求,这样可以使得本发明实施例的芯片具有更好的兼容性和实用价值,也可以为提高芯片的整体数据传输效率提供了硬件基础。
可选的,所述帧链表是一个指针数组,所述帧链表的任一指针指向所述数据链表中的一个数据;所述帧链表还用于根据所述第二控制指令设置当前帧内待传输的各类型数据包的占比,以及,在发送完当前帧的数据后根据下一指针从所述数据链表中获取下一帧的待传输数据,并将所述指针更新到所述设备控制器中进行存储。
本发明实施例中,帧链表是一个指针数组,包括多个指针。帧链表中的各指针分别指向数据链表中的多个数据。帧链表在接收到访问控制器50发送的第二控制指令后,可以根据第二控制指令设置当前帧内待传输的各类型数据包的占比,确定当前帧最高80%的时间内优先传输中断传输和同步传输类型的数据,在余下的时间内再传输控制传输和批量传输类型的数据。在当前帧启动传输后,帧链表可以准备下一帧需要发送的数据,即通过指针从数据链表中选择指定的需要传输的数据,并将选择出的数据对应的指针发送给设备控制器中帧链表对应的寄存器。
本发明实施例的帧链表通过各指针可以合理地安排数据发送的顺序和类型,方便地实现总线协议对数据传输时间片的要求。
可选的,所述访问控制器50包括多个传输通道、通道选择模块和总线仲裁器;所述多个传输通道各自具有通道编号和相应的通道优先级;所述通道选择模块用于根据所述设备控制器发送的第一控制指令打开所述第一控制指令指定的传输通道;其中,所述第一控制指令包括所需打开的传输通道的通道编号;所述总线仲裁器用于在多个传输通道的通道优先级相同的情况下,根据通道编号对各传输通道进行排序,并依据排序顺序控制各传输通道进行数据传输。
本发明实施例中,访问控制器50可以包括多个存储设备类型的传输通道,运行于芯片之上的软件或者是运行于芯片挂接的计算机设备的CPU之上的软件可以在芯片初始化时设置各传输通道的优先级,本发明实施例的访问控制器可以支持最多四档优先级设置。在通道选择模块接收到设备控制器10中访问控制器相关的寄存器发送的第一控制指令后,首先由运行于芯片之上的软件或者是运行于芯片挂接的计算机设备的CPU之上的软件进行软件阶段的仲裁,确定第一控制指令指定打开的传输通道的优先级,并根据通道优先级打开指定的传输通道。在软件阶段的仲裁出现多个传输通道的通道优先级相同的情况下,总线仲裁器可以根据通道编号对相同优先级的各传输通道进行排序,确定较低编号的传输通道比较高编号的传输通道具备更高的传输优先级,并依据排序顺序控制各传输通道进行数据传输。
例如,本发明实施例的访问控制器50可以是DMA控制器,DMA控制器可以包括8个存储设备(memory-device)类型的DMA传输通道,运行于芯片之上的软件或者是运行于芯片挂接的计算机设备的CPU之上的软件可以通过USB设备控制器给出的DMA相关寄存器,控制通道选择模块打开指定的传输通道。总线仲裁器可以根据DMA传输请求的优先级,优先传输指定传输通道的数据。
需要说明的是,为了满足USB数据带宽及业务响应速度的要求,本发明实施例的芯片包括DMA控制逻辑,用于在USB设备对应的硬件FIFO和内存之间传输数据。DMA控制器可以直接挂接在32位高级高性能总线(Advanced High Performance Bus,AHB),支持全部4G总线地址访问。需要注意的是,软件业务上实时使用的FIFO数量可能大于DMA传输通道数量,因此,运行于芯片之上的软件或者是运行于芯片挂接的计算机设备的CPU之上的软件可以在传输通道申请失败时重新发起DMA传输请求。
本发明实施例中,访问控制器50通过通道选择模块和总线仲裁器可以方便地控制多个传输通道中的数据传输,根据各传输通道的编号和优先级合理地安排总线上的数据传输顺序,可以为提高芯片的整体传输效率提供硬件支持。
图6是本发明实施例的DMA控制逻辑的示意图,如图6所示,DMA控制器包括多个传输通道、通道选择模块和总线仲裁器,DMA控制器的多个传输通道可以与多个FIFO建立连接,设备控制器中与DMA控制器相关的寄存器可以与通道选择模块和总线仲裁器建立连接,通道选择模块可以根据设备控制器发送的第一控制指令打开指定的传输通道,总线仲裁器在收到硬件仲裁的控制指令后,可以根据通道编号对相同优先级的各传输通道进行排序,确定较低编号的传输通道比较高编号的传输通道具备更高的传输优先级,并依据排序顺序通过通道选择模块控制各传输通道进行数据传输,使得DMA控制器可以在设备控制器的控制下在FIFO与芯片外接设备的内存之间进行数据传输。
可选的,所述第一缓冲器40包括路由逻辑模块、共享传输缓冲器和专用传输缓冲器;所述路由逻辑模块用于解析所述总线设备30发送数据的数据包类型,并过滤不符合预设规定的数据包,以确定所述总线设备30发送的数据为符合第一时延要求的第一数据或符合第二时延要求的第二数据;所述共享传输缓冲器用于接收所述路由逻辑模块路由来的所述第一数据,以及,在所述访问控制器50控制下将所述第一数据发送给所述集线器20;所述专用传输缓冲器用于接收所述路由逻辑模块路由来的所述第二数据,以及,在所述访问控制器50控制下将所述第二数据发送给所述集线器20。
本发明实施例的路由逻辑模块可以解析总线设备30发送数据的数据包类型,还可以通过判断数据包类型过滤不合法的数据包。其中,数据包类型包括控制传输、同步传输、中断传输、批量传输四种传输类型。其中,控制传输和批量传输类型的数据包在传输时对时延的要求低,可以将总线设备30发送数据中对时延的要求低也即符合第一时延要求的数据,确定为第一数据,第一数据由共享传输缓冲器进行传输。其中,同步传输和中断传输类型的数据包在传输时对时延的要求高,可以将总线设备30发送数据中对时延的要求高也即符合第二时延要求的数据,确定为第二数据,第二数据由专用传输缓冲器进行传输。
例如,第一缓冲器40可以是FIFO存储器,则第一缓冲器40可以包括FIFO路由逻辑模块、共享传输FIFO和专用传输FIFO。可选的,运行于芯片之上的软件或者是运行于芯片挂接的计算机设备的CPU之上的软件可以通过USB设备管理器中FIFO相关的寄存器,设置这部分FIFO的类型、大小、FIFO中断的触发阈值等参数。
本发明实施例的第一缓冲器40通过路由逻辑模块、共享传输缓冲器和专用传输缓冲器可以方便地解析数据包类型、过滤不符合预设规定的数据包,以及根据数据包的类型合理地选择共享传输缓冲器和专用传输缓冲器分别传输相应的数据,使得本发明实施例的芯片可以满足总线协议中关于数据传输类型的要求,可以承载多种业务类型的数据包传输,充分地利用带宽。
需要说明的是,本发明实施例的设备管理器10可以支持数据包发送失败时自动重试机制,USB设备控制器硬件上支持校验每一帧完整数据驱动到总线上的字节数,当实际的帧数据字节数与之不符时,则不会把当前帧在数据链表上对应的数据从链表中删除,而帧链表中的数据会被清除。同时,通过状态寄存器通知软件层的驱动,驱动将这帧数据重新加入到调度队列,并在随后的某一合适时间点,重新组成一帧新的数据,即更新帧链表。本发明实施例的设备管理器10还可以支持USB远程唤醒功能,远程唤醒功能可以在绑定HID人机交互接口时使用。当USB总线空闲,USB主机控制器会进入暂停状态时,远程的键盘或鼠标可以通过远程唤醒功能唤醒USB主机控制器,使主机控制器从暂停状态恢复到待机状态。
图7是本发明实施例的又一资源管理芯片的结构图,如图7所示,芯片包括USB设备控制器,USB集线器,USB设备,DMA控制器调度,第一缓冲器的FIFO路由逻辑模块、共享传输FIFO和专用传输FIFO,USB集线器的帧链表和数据链表。其中,USB设备控制器包括DMA控制器寄存器、控制及状态寄存器和FIFO控制寄存器。USB设备包括多个第二端口1至X,USB集线器包括多个端口0至X以及多个第一端点1至X。其中,帧链表和数据链表在USB集线器的第二缓冲器中。在本发明实施例的资源管理芯片可以是PCB电路板,设备控制器通过芯片上的电路使得DMA控制器寄存器与DMA控制器相连接,使得控制及状态寄存器与USB设备和USB集线器相连接,使得FIFO控制寄存器与第一缓冲器和USB集线器中的第二缓冲器相连接。USB集线器可以通过多个第二端点分别与数据链表中的各数据缓冲区建立通信连接。帧链表的指针指向数据链表中的一个数据。
需要说明的是,本发明的资源管理芯片通过动态可配的USB接口和端点,可以获得USB资源可动态申请释放的效果,以解决USB实体设备资源固化、不能按产品需求灵活配置的问题。同时,本发明的资源管理芯片提供芯片级的USB资源集,为片上USB设备之间的协同配合提供硬件支持,并且基于FIFO硬件配合软件驱动算法,以提高USB总线和设备的整体传输效率。在此基础上,基于FPGA芯片的USB资源池采用模块化设计,具有良好的可扩展性,可根据具体项目产品需求,裁剪FPGA芯片上的USB资源,灵活设置总USB资源量以及多种USB资源组合,使得USB资源够用且不浪费。
图8是本发明实施例提供的一种资源管理方法的步骤流程图,如图8所示,一种资源管理方法,应用于如上任一所述的芯片,所述方法包括:
步骤601、向设备控制器发送资源获取指令,控制所述设备控制器根据所述资源获取指令分配用于接收数据的总线设备,以及,为所述总线设备配置对应的集线器端口和第一端点。
步骤602、通过所述设备控制器控制所述总线设备接收所述数据,以及将所述数据通过第二端点发送给对应的第一缓冲器。
步骤603、通过所述设备控制器控制所述第一缓冲器接收并存储所述总线设备发送来的数据。
步骤604、通过所述设备控制器向访问控制器发送控制指令,控制所述访问控制器根据所述控制指令控制所述第一缓冲器将所述数据发送给所述集线器,以及控制所述集线器通过第一端点接收所述数据并将所述数据输出到所述芯片外部。
本发明实施例中,运行于芯片之上的资源管理程序可以向设备控制器发送资源获取指令,设备管理器根据资源获取指令所指示的数据传输需求分配用于接收数据的总线设备,以及,为总线设备配置对应的集线器端口和第一端点。使得该总线设备与集线器通过端口形成模拟“***”动作,建立实际通信连接,总线设备可以通过端口访问到集线器,集线器的第一端点可以接收该总线设备发送来的数据。例如,资源管理程序可以向设备控制器发送串口传输资源获取指令,控制设备控制器分配用于接收串口日志的总线设备,以及,为总线设备配置对应的集线器端口和第一端点。
本发明实施例中,运行于芯片之上的资源管理程序可以通过设备管理器控制总线设备和集线器在远程客户端和芯片的外接设备之间传输数据,以实现远程客户端对芯片的外接设备的远程访问。其中,本地CPU通过USB线及USB协议栈向本发明实施例的资源管理芯片发送URB数据包,资源管理程序可以通过设备管理器驱动控制总线设备和集线器接收URB数据包,并将URB数据包发送给资源管理程序,资源管理程序负责解析URB数据包并将其重新封装成网络数据包,并通过网络协议栈及网络通路传输给远端的客户端。资源管理程序在接收到远程客户端发送的网络数据包后,由运行于芯片上的各类驱动和协议栈进行解析和重新打包,把裸数据给到本发明实施例的资源管理芯片,资源管理芯片再打包成URB数据包。资源管理程序可以通过设备管理器驱动控制总线设备和集线器将URB数据包通过USB线及USB协议栈发送给芯片外接设备的本地CPU。
本发明实施例中,通过向设备控制器发送资源获取指令,控制所述设备控制器根据所述资源获取指令分配用于接收数据的总线设备,以及,为所述总线设备配置对应的集线器端口和第一端点。可以根据需求通过设备控制器对芯片资源进行灵活配置,实现多种不同的功能。通过所述设备控制器控制所述总线设备接收所述数据,以及将所述数据通过第二端点发送给对应的第一缓冲器;通过所述设备控制器控制所述第一缓冲器接收并存储所述总线设备发送来的数据;通过所述设备控制器向访问控制器发送控制指令,控制所述访问控制器根据所述控制指令控制所述第一缓冲器将所述数据发送给所述集线器,以及控制所述集线器通过第一端点接收所述数据并将所述数据输出到所述芯片外部。这样,可以更好地协调芯片内多个总线设备、集线器的多个端口和多个第一端点,提高芯片的整体数据传输效率。
可选的,所述资源获取指令根据远程客户端对所述芯片的外接设备发送的远程访问指令生成;在所述远程访问指令表征所述远程客户端向所述外接设备发送数据的情况下,所述向设备控制器发送资源获取指令之前,所述方法还包括:
步骤605、通过运行于所述芯片之上的资源管理程序接收所述远程客户端发送的远程数据包。
步骤606、通过所述资源管理程序将所述远程数据包发送给运行于所述芯片之上的数据传输程序进行解析及处理,以获得第一数据包。
步骤601包括以下步骤:
步骤6011、所述资源管理程序通过运行于所述芯片之上的芯片驱动程序向设备控制器发送资源获取指令,控制所述设备控制器根据所述资源获取指令分配用于接收数据的总线设备,以及,为所述总线设备配置对应的集线器端口和第一端点。
步骤604包括以下步骤:
步骤6041、通过所述设备控制器向访问控制器发送控制指令,控制所述访问控制器根据所述控制指令控制所述第一缓冲器将所述数据发送给所述集线器,以及控制所述集线器通过第一端点接收所述数据并将所述数据传输给所述外接设备,以实现所述远程客户端对所述外接设备的远程访问。
本发明实施例中,运行于芯片之上的资源管理程序可以接收远程客户端发送的远程访问指令,并根据远程访问指令生成资源获取指令。其中,远程访问指令可以包括进行用户安全级别验证、动态调整设备资源、文件加密传输,此处仅是举例说明,本发明实施例对此不做限制。其中,动态调整设备资源包括指定设备***或拔出,以及调整指定设备的参数。例如,资源管理程序以服务器的角色接收远程个人计算机(Personal Computer,PC)发送的客户机请求,请求访问服务器的串口日志。
本发明实施例中,在所述远程访问指令表征远程客户端向外接设备发送数据的情况下,资源管理程序接收远程客户端发送的远程数据包,由运行于芯片上数据传输程序对远程数据包进行解析和重新打包,以获得第一数据包。资源管理程序可以通过运行于芯片之上的芯片驱动程序向设备控制器发送资源获取指令,控制设备控制器分配用于接收数据的总线设备,以及,为总线设备配置对应的集线器端口和第一端点。总线设备在设备控制器控制下接收资源管理程序发送的第一数据包,并将第一数据包通过第二端点发送给第一缓冲器进行存储。其中,芯片驱动程序包括设备管理器驱动。
本发明实施例中,资源管理程序可以通过设备管理器驱动控制设备管理器,向访问控制器发送第一数据传输指令。访问控制器接收到第一数据传输指令,根据第一数据传输指令控制第一缓冲器将第一数据包发送给集线器。集线器通过第一端点接收第一缓冲器发送的第一数据包,并将第一数据包存储到第二缓冲器中。在访问控制器的控制下,集线器将第一数据包通过第二缓冲器中数据链表和帧链表发送给外接设备的本地中央处理器,以实现远程客户端对外接设备的远程访问。
本发明实施例中,在远程访问指令表征远程客户端向外接设备发送数据的情况下,通过分配的总线设备和集线器的端口和第一端点,可以方便地将远程客户端发送的数据发送给芯片的外接设备。此外,访问控制器通过控制第一缓冲器和集线器可以提高芯片的数据传输效率,使得远程客户端获得更好的访问效果。
可选的,在所述远程访问指令表征所述外接设备向所述远程客户端发送数据的情况下,步骤601还可以包括以下步骤:
步骤6012、所述资源管理程序通过所述芯片驱动程序向设备控制器发送资源获取指令,控制所述设备控制器根据所述资源获取指令分配用于接收数据的总线设备,以及,为所述总线设备配置对应的集线器端口和第一端点。
步骤602可以包括以下步骤:
步骤6021、通过所述设备控制器控制所述总线设备接收所述外接设备的本地中央处理器发送的本地数据包,以及将所述本地数据包第二端点发送给对应的第一缓冲器进行存储。
步骤604还可以包括以下步骤:
步骤6042、通过所述设备控制器向访问控制器发送控制指令,控制所述访问控制器根据所述控制指令控制所述第一缓冲器将所述数据发送给所述集线器,以及控制所述集线器通过第一端点接收所述数据并将所述数据传输给所述数据传输程序。
步骤6042之后,所述方法还包括:
步骤607、通过所述数据传输程序对所述本地数据包进行解析及处理,以获得第二数据包,并将所述第二数据包发送给所述资源管理程序。
步骤608、通过所述资源管理程序将所述第二数据包发送给所述远程客户端,以实现所述远程客户端对所述外接设备的远程访问。
本发明实施例中,在远程访问指令表征外接设备向远程客户端发送数据的情况下,资源管理程序可以通过芯片驱动程序向设备控制器发送资源获取指令,控制设备控制器分配用于接收数据的总线设备,以及,为总线设备配置对应的集线器端口和第一端点。总线设备在设备控制器控制下接收芯片外接设备的本地中央处理器向资源管理芯片发送的本地数据包,并将本地数据包通过第二端点发送给第一缓冲器进行存储。
本发明实施例中,资源管理程序可以通过设备管理器驱动控制设备管理器,向访问控制器发送第二数据传输指令。访问控制器接收到第二数据传输指令,根据第二数据传输指令控制第一缓冲器将本地数据包发送给集线器。集线器通过第一端点接收第一缓冲器发送的本地数据包,并将本地数据包存储器第二缓冲器中。在访问控制器的控制下,集线器将本地数据包通过第二缓冲器中数据链表和帧链表发送给数据传输程序。数据传输程序负责解析本地数据包并将其重新封装成网络数据包,并在资源管理程序控制下通过网络协议栈及网络通路传输给远程客户端,以实现所述远程客户端对所述外接设备的远程访问。
本发明实施例中,在远程访问指令表征外接设备向所述远程客户端发送数据的情况下,通过分配的总线设备和集线器的端口和第一端点,可以方便地将芯片的外接设备发送的数据发送给远程客户端。此外,访问控制器通过控制第一缓冲器和集线器可以提高芯片的数据传输效率,使得远程客户端获得更好的访问效果。
图9是本发明实施例的服务器或交换机远程访问的示意图,如图9所示,远程访问功能整体上分为三部分,左侧部分对应被远程访问的服务器或交换机,自上而下,分别是用户空间的USB定制化用户程序,内核空间的USB设备驱动、USB核心层和USB主机控制器驱动,以及板级硬件的CPU硬件实体,其中COU包括USB主机控制器。中间部分自下而上,分别是FPGA芯片内部实现的USB IP和网络IP,运行于FPGA之上的Linux内核中的USB功能驱动、USB抽象层、USB控制驱动,网卡,以及用户空间的USB资源管理程序。右侧则是访问服务器或交换机的远程PC。远程访问功能的管理调度由运行于FPGA之上的USB资源管理程序负责,USB资源管理程序的主要作用描述如下:第一、以服务器的角色,接收远程PC的客户机请求,这些请求包括:进行用户安全级别验证、动态调整指定的USB资源、文件加密传输等。第二、转发本地CPU和远程PC之间的交互数据,实现远程PC对本地服务器或交换机的访问。其中,本地CPU通过USB线及USB协议栈向其发送URB数据包,USB资源管理程序负责解析URB数据包并将其重新封装成网络数据包,通过网络协议栈及网络通路传输给远端的客户端。远程访问功能的硬件支撑来自FPGA内部实现的USB IP。运行于FPGA之上的Linux内核中包括,对应FPGA内部USB IP的各类驱动程序、暴露给USB资源管理程序的USB IP资源管理程序以及透传远程PC和本地CPU之间交互数据的传输程序。
需要说明的是,现有技术中,服务器或交换机的远程访问,以及作为同一实体设备上不同虚拟机之间共享的USB资源池,均属于需要多种USB资源,且需要支持USB资源动态可配的应用场景。在服务器、交换机等网络基础设备中,支持远程监测调试,是一个必需的功能项。远程客户端可以通过网络,抓取服务器现场的串口日志输出、捕获现场设备显示器的实时画面,也可以通过服务器本地的鼠标、键盘去实时操作现场的设备,就像在本地操作一样。实现远程访问依赖的就是服务器或交换机设备内部的多种USB资源,并且这些USB资源最好是支持资源动态可配的,比如服务器只想通过串***互远程设备时,就只需要加载USB通信设备(Communications Device Class,CDC)资源,再比如服务器没有远程监测设备需要时,可以卸载全部USB资源,以满足设备本身可能存在的USB功能需求。
需要说明的是,现有技术中,为解决硬件设备投入资金大的问题,出现了虚拟机租用业务。可以根据业务需求,租用不同性能配置的虚拟机,虚拟机的背后,是真实的硬件资源在做支撑。不同之处在于,传统的一组硬件资源配置,比如CPU、内存、硬盘、外设等,只分配给一个操作***进行管理使用,而虚拟机则是多个操作***共享一组硬件资源配置,比如一台实体硬件包含512G内存,那他就可以支持16台32G内存的虚拟机同时运行。而作为硬件资源的一部分,USB资源做到多样性且动态可配,在这种应用场景下,也成为必需的功能项。需要说明的是,运行于FPGA之上的USB资源管理程序以及内核空间中与之关联的管理程序和传输程序,是服务器或交换机远程访问功能所独有的,如果是虚拟机共享USB资源池的应用场景,这部分功能逻辑可以由运行于CPU之上的软件负责。
第三方面,本发明提供一种电子设备70,如图10所示,包括如上中任一所述的资源管理芯片701。
第四方面,本发明提供一种可读存储介质,当所述存储介质中的指令由电子设备的芯片执行时,使得电子设备能够执行如上任一所述的资源管理方法。
对于方法实施例而言,由于其与芯片实施例基本相似,所以描述得比较简单,相关之处参见芯片实施例的部分说明即可。
在此提供的算法和显示不与任何特定计算机、虚拟***或者其他设备固有相关。根据上面的描述,构造这类***所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图,或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明的排序设备中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所做的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
需要说明的是,本申请实施例中获取各种数据相关过程,都是在遵照所在地国家相应的数据保护法规政策的前提下,并获得由相应装置所有者给予授权的情况下进行的。
Claims (10)
1.一种资源管理芯片,其特征在于,所述芯片包括:设备控制器、集线器、多个总线设备、多个第一缓冲器和访问控制器;
所述集线器包括多个端口和多个第一端点;
所述设备控制器用于接收资源获取指令,并根据所述资源获取指令分配用于接收数据的总线设备,以及,为所述总线设备配置对应的端口和第一端点;其中,所述总线设备通过所述端口接入所述集线器;
所述总线设备包括多个第二端点;所述总线设备用于将接收到的数据通过所述第二端点发送给对应的第一缓冲器;
所述第一缓冲器用于存储所述数据,以及,在所述访问控制器控制下将所述数据发送给所述集线器;
所述集线器用于通过所述第一端点接收所述数据,以及,在所述访问控制器控制下将所述数据输出到所述芯片外部;
所述访问控制器用于接收所述设备控制器发送的控制指令,并根据所述控制指令控制所述第一缓冲器和所述集线器之间,以及所述集线器和所述芯片外部之间进行数据传输。
2.根据权利要求1所述的芯片,其特征在于,所述设备控制器包括第一寄存器、第二寄存器以及第三寄存器;
所述第一寄存器用于查询各所述总线设备和所述集线器的当前状态,以及,根据所述资源获取指令设置用于接收数据的总线设备、所述总线设备对应的端口和第一端点;
所述第二寄存器用于向所述访问控制器发送第一控制指令,使得所述访问控制器根据所述第一控制指令打开指定的数据传输通道;
所述第三寄存器用于为各总线设备分别设置对应的第一缓冲器,以及查询各所述第一缓冲器的当前状态。
3.根据权利要求2所述的芯片,其特征在于,所述总线设备包括第一接口;其中,所述第一接口包括第二控制端点,所述第二端点设置在所述第一接口中;
所述第二控制端点用于在所述第一寄存器控制下控制所述第二端点接收数据,以及,将所述数据发送给对应的第一缓冲器;
所述第一寄存器还用于根据所述资源获取指令设置所述第一接口的数据传输类型,使得所述第一接口通过所述第二端点接收所述数据传输类型的数据;其中,所述数据传输类型为视频控制类型、视频传输类型、串口传输类型、网络传输类型和人机交互中类型的任一种。
4.根据权利要求2所述的芯片,其特征在于,所述集线器还包括第一控制端点和第二缓冲器;
所述第一控制端点用于在所述第一寄存器控制下控制所述第一端点接收所述第一缓冲器发送的数据,并通过所述第一端点将所述数据发送给所述第二缓冲器进行存储;
所述第二缓冲器用于接收并存储各所述第一端点发送的数据,以及,根据所述访问控制器发送的第二控制指令将所述数据发送到所述芯片外部。
5.根据权利要求4所述的芯片,其特征在于,所述第二缓冲器包括帧链表和数据链表;
所述数据链表用于缓存所述总线设备通过所述第一缓冲器发送给所述集线器的数据;
所述帧链表用于确定所述集线器当前待传输的数据,以及,根据所述第二控制指令将所述待传输的数据发送到所述芯片外部。
6.根据权利要求1所述的芯片,其特征在于,所述访问控制器包括多个传输通道、通道选择模块和总线仲裁器;
所述多个传输通道各自具有通道编号和相应的通道优先级;
所述通道选择模块用于根据所述设备控制器发送的第一控制指令打开所述第一控制指令指定的传输通道;其中,所述第一控制指令包括所需打开的传输通道的通道编号;
所述总线仲裁器用于在多个传输通道的通道优先级相同的情况下,根据通道编号对各传输通道进行排序,并依据排序顺序控制各传输通道进行数据传输。
7.根据权利要求1所述的芯片,其特征在于,所述第一缓冲器包括路由逻辑模块、共享传输缓冲器和专用传输缓冲器;
所述路由逻辑模块用于解析所述总线设备发送数据的数据包类型,并过滤不符合预设规定的数据包,以确定所述总线设备发送的数据为符合第一时延要求的第一数据或符合第二时延要求的第二数据;
所述共享传输缓冲器用于接收所述路由逻辑模块路由来的所述第一数据,以及,在所述访问控制器控制下将所述第一数据发送给所述集线器;
所述专用传输缓冲器用于接收所述路由逻辑模块路由来的所述第二数据,以及,在所述访问控制器控制下将所述第二数据发送给所述集线器。
8.一种资源管理方法,其特征在于,应用于如权利要求1-7中任一所述的芯片,所述方法包括:
向设备控制器发送资源获取指令,控制所述设备控制器根据所述资源获取指令分配用于接收数据的总线设备,以及,为所述总线设备配置对应的集线器的端口和第一端点;
通过所述设备控制器控制所述总线设备接收所述数据,以及将所述数据通过第二端点发送给对应的第一缓冲器;
通过所述设备控制器控制所述第一缓冲器接收并存储所述总线设备发送的数据;
通过所述设备控制器向访问控制器发送控制指令,控制所述访问控制器根据所述控制指令控制所述第一缓冲器将所述数据发送给所述集线器,以及控制所述集线器通过第一端点接收所述数据并将所述数据输出到所述芯片外部。
9.一种电子设备,其特征在于,包括如权利要求1-7中任一所述的资源管理芯片。
10.一种可读存储介质,其特征在于,当所述存储介质中的指令由电子设备的芯片执行时,使得电子设备能够执行如权利要求8所述的资源管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211385060.0A CN115658586A (zh) | 2022-11-07 | 2022-11-07 | 资源管理芯片、方法、电子设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211385060.0A CN115658586A (zh) | 2022-11-07 | 2022-11-07 | 资源管理芯片、方法、电子设备及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115658586A true CN115658586A (zh) | 2023-01-31 |
Family
ID=85016632
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211385060.0A Pending CN115658586A (zh) | 2022-11-07 | 2022-11-07 | 资源管理芯片、方法、电子设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115658586A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116955241A (zh) * | 2023-09-21 | 2023-10-27 | 杭州智灵瞳人工智能有限公司 | 兼容多类型存储介质的存储芯片 |
CN117290278A (zh) * | 2023-10-10 | 2023-12-26 | 合芯科技有限公司 | 芯片内硬件互联结构、芯片、服务器及方法 |
-
2022
- 2022-11-07 CN CN202211385060.0A patent/CN115658586A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116955241A (zh) * | 2023-09-21 | 2023-10-27 | 杭州智灵瞳人工智能有限公司 | 兼容多类型存储介质的存储芯片 |
CN116955241B (zh) * | 2023-09-21 | 2024-01-05 | 杭州智灵瞳人工智能有限公司 | 兼容多类型存储介质的存储芯片 |
CN117290278A (zh) * | 2023-10-10 | 2023-12-26 | 合芯科技有限公司 | 芯片内硬件互联结构、芯片、服务器及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9397944B1 (en) | Apparatus and method for dynamic communication scheduling of virtualized device traffic based on changing available bandwidth | |
TWI303025B (en) | Physical device , i/o device and computer system with virtual machine capable interfaces | |
CN115658586A (zh) | 资源管理芯片、方法、电子设备及可读存储介质 | |
US7496699B2 (en) | DMA descriptor queue read and cache write pointer arrangement | |
KR20070034582A (ko) | 처리관리장치, 컴퓨터 시스템, 분산처리방법 및 컴퓨터프로그램 | |
US6412028B1 (en) | Optimizing serial USB device transfers using virtual DMA techniques to emulate a direct memory access controller in software | |
US7469309B1 (en) | Peer-to-peer data transfer method and apparatus with request limits | |
CN112650558B (zh) | 数据处理方法、装置、可读介质和电子设备 | |
WO2013048409A1 (en) | Writing message to controller memory space | |
US11704263B2 (en) | Configurable multi-function PCIe endpoint controller in an SoC | |
US9753883B2 (en) | Network interface device that maps host bus writes of configuration information for virtual NIDs into a small transactional memory | |
CN111857943B (zh) | 数据处理的方法、装置与设备 | |
WO2004102406A1 (en) | Usb host controller with memory for transfer descriptors | |
JP6760579B2 (ja) | ネットワークラインカード(lc)のホストオペレーティングシステム(os)への統合 | |
US7930445B2 (en) | Computer system using remote I/O and I/O data transfer method | |
WO2021170054A1 (zh) | 一种虚拟化的方法、设备、板卡及计算机可读存储介质 | |
US20150220445A1 (en) | Transactional memory that performs a programmable address translation if a dat bit in a transactional memory write command is set | |
US7085855B1 (en) | Data transfer control device and electronic equipment | |
US20070156926A1 (en) | Bridge with sequential software modules | |
US20150222513A1 (en) | Network interface device that alerts a monitoring processor if configuration of a virtual nid is changed | |
US20170357594A1 (en) | Transactional memory that is programmable to output an alert if a predetermined memory write occurs | |
CN117369906B (zh) | Pcie验证平台、方法、装置、存储介质及电子设备 | |
CN117493236B (zh) | Fpga加速器以及加速器*** | |
CN117312202B (zh) | 片上***和用于片上***的数据传输方法 | |
Yang | A Research on USB Device Remote Sharing Methods in Virtual Desktop Environment |
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 |