CN108984465B - 一种消息传输方法及设备 - Google Patents
一种消息传输方法及设备 Download PDFInfo
- Publication number
- CN108984465B CN108984465B CN201810576339.4A CN201810576339A CN108984465B CN 108984465 B CN108984465 B CN 108984465B CN 201810576339 A CN201810576339 A CN 201810576339A CN 108984465 B CN108984465 B CN 108984465B
- Authority
- CN
- China
- Prior art keywords
- address
- access component
- hardware device
- message
- communication device
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2023—Failover techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2035—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant without idle spare hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3006—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3442—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for planning or managing the needed capacity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Computer And Data Communications (AREA)
- Mobile Radio Communication Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种消息传输方法及设备。在该方案中,通信设备中的访问组件在确定需要向其他通信设备中的目标硬件设备传输消息时,将消息中的虚拟硬件设备的存储地址转换为目标硬件设备的存储地址,并将消息中的处理器的内存的存储地址转换为指示目标硬件设备的存储地址。这样,当在其他通信设备中的访问组件收到该消息后,就可以不通过该通信设备的处理器进行操作,而是直接根据指示目标硬件设备的存储地址向该目标硬件设备传输消息,从而使该目标硬件设备可以根据消息中包含的存储地址完成读取或写入目标数据的操作。该方案可以节省目标硬件设备所在的通信设备中的处理器的计算资源,也可以降低通信设备对位于其他通信设备的目标硬件设备的访问延迟。
Description
技术领域
本申请涉及通信技术领域,尤其涉及一种消息传输方法及设备。
背景技术
目前,为了实现资源的合理利用,资源整合技术是通信技术发展的一个研究方向。例如,在云计算、分布式计算、虚拟机等方面,均会采用资源整合技术。
采用资源整合技术的通信系统可以将至少一个资源设备中的硬件资源作为一个逻辑上的硬件资源池,然后并将该硬件资源池中的硬件资源按照不同应用设备的需求,分配给不同的应用设备。其中,硬件资源可以但不限于包括以下至少一项:存储资源、网络资源、视频处理资源等。另外,该应用设备和资源设备可以部署在同一台物理主机上,也可以部署在不同的物理主机上。
由于在该通信系统中,硬件资源池中的硬件资源可以动态的灵活地分配给应用设备使用,因此,采用资源整合技术可以提高该通信系统中硬件资源的利用率。
在应用设备和资源设备部署在不同物理主机的场景中,该应用设备需要跨物理主机实现对硬件资源的访问。这种访问方式可以称为应用设备对硬件资源的远端访问。
目前,应用设备通过远端访问的方式访问资源设备中的硬件资源的流程如下:
1、应用设备中的中央处理器(central processing unit,CPU)a生成访问请求,并发送给所述应用设备的网卡a;
2、网卡a通过交换机将访问请求发送给资源设备中的网卡b;
3、网卡b将访问请求发送给资源设备中的CPU b;
4、CPU b根据访问请求,访问本地的硬件资源;
5、硬件资源将访问结果返回给CPU b;
6、CPU b将访问结果发送给网卡b;
7、网卡b通过交换机将访问结果发送应用设备中的网卡a;
8、网卡a将访问结果发送给CPU a。
通过以上流程可以看出,应用设备对远端的硬件资源的访问需要远端的资源设备中的CPU b参与,这不仅消耗了CPU b的处理能力,也增加了应用设备对硬件资源的访问延迟。
发明内容
本申请提供一种消息传输方法及设备,用于在一个通信设备访问位于另一个通信设备内的硬件设备时,节省该硬件设备所在通信设备中处理器的计算资源,降低通信设备对位于其他通信设备中的硬件设备的访问延迟。
第一方面,本申请提供了一种消息传输方法,该方法适用于图1a所示的包含多个通信设备的通信系统,其中每个通信设备中包含处理器、访问组件和至少一个硬件设备。本方法中涉及的第一通信设备为通信系统的任一通信设备。第一通信设备的虚拟硬件设备由至少一个硬件设备组成。所述方法包括以下步骤:
第一通信设备的第一访问组件获取所述第一通信设备的处理器传输的消息后,判断该消息的传输对象;在第一访问组件确定传输对象为第二通信设备中的目标硬件设备时,将消息中包含的处理器的内存的存储地址转换为指示该目标硬件设备的存储地址,以及将消息中包含的虚拟硬件设备的存储地址转换为该目标硬件设备的存储地址;然后,第一访问组件向第二通信设备中的第二访问组件发送该消息。
通过该方法,当第二访问组件收到该消息后,就可以不通过第二通信设备内的处理器进行操作,即可直接根据指示该目标硬件设备的存储地址,向该目标硬件设备传输该消息,从而使该目标硬件设备可以根据该目标硬件设备的存储地址、指示的该硬件设备的存储地址,完成读取或写入目标数据的操作。显然,该方法可以节省第二通信设备中的处理器的计算资源,也可以降低第一通信设备对位于其他通信设备的硬件设备的访问延迟。
在一种可能的实现方式中,第一访问组件和第二访问组件通过网络通信;在该情况下,第一访问组件可以通过网络报文的形式向第二访问组件发送该消息,即第一访问组件将该消息封装在第一报文中发送给第二访问组件。通过该方式,第一访问组件可以成功地通过网络将消息发送给第二访问组件。
在另一种可能的实现方式中,第一访问组件和第二访问组件的表现形式相同,均可以为FPGA、CPLD、ASIC、SOC中任一种表现形式或多种表现形式的结合。这样,通过该方式可以提高通信设备中访问组件的表现形式的灵活性。
在又一种可能的实现方式中,第一访问组件可以通过以下方式,确定消息的传输对象为该目标硬件设备:
第一访问组件获取存储的资源配置信息,该资源配置信息中包含组成虚拟硬件设备的每个硬件设备对应的存储地址范围;所述第一访问组件判断该消息中包含的虚拟硬件设备的存储地址所在的存储地址范围,然后在资源配置信息中确定该存储地址范围对应的硬件设备即为目标硬件设备。
通过该方式,第一访问组件可以准确地确定消息的传输对象。
在又一种可能的实现方式中,第一访问组件可以生成记录处理器的内存的存储地址与指示该目标硬件设备的存储地址的第一映射表,然后通过该第一映射表将消息中包含的处理器的内存的存储地址转换为指示该目标硬件设备的存储地址。
该方式可以提高第一访问组件处理器的内存的存储地址的转换效率。另外,后续第一访问组件在收到包含的该目标硬件设备的存储地址的消息后,也可以继续利用该第一映射表,将指示该目标硬件设备的存储地址转换为处理器的内存的存储地址,从而也可以提高第一访问组件对指示该目标硬件设备的存储地址的转换效率。
在又一个可能的实现方式中,第一访问组件可以通过以下步骤,生成第一映射表:
第一访问组件确定该目标硬件设备的指示信息。例如,在该资源配置信息中包含每个硬件设备的描述信息与对应的存储地址范围的情况下,第一访问组件在确定消息的传输对象时即可确定该目标硬件设备的描述信息,然后第一访问组件根据该目标硬件设备的描述信息,确定该目标硬件设备的指示信息。
然后,第一访问组件将目标硬件设备的指示信息添加至处理器的内存的存储地址中,得到指示该目标硬件设备的存储地址;最终,生成该第一映射表。
通过该方式,第一访问组件可以准确地得到指示该目标硬件设备的存储地址,以及并生成第一映射表。
在又一个可能的实现方式中,目标硬件设备的指示信息包括:目标硬件设备的标识,和/或,第二通信设备中该目标硬件设备所连接的单板的标识。通过该设计,可以使第二访问组件在收到该消息时,可以根据目标硬件设备的指示信息,准确地确定该消息的传输对象。
在又一个可能的实现方式中,消息中处理器的内存的存储地址所在地址字段中存在空闲位域时,目标硬件设备的指示信息可以占用全部或部分空闲位域。该方式可以避免增加消息的传输开销,提高地址字段的比特资源利用率。
在又一个可能的实现方式中,第一通信设备中的处理器的功能虚拟化为多个功能时,第一访问组件可以在生成指示该目标硬件设备的存储地址时,将处理器传输该消息时使用的功能的标识添加到处理器的内存的存储地址中。通过该方式,第一访问组件还可以将处理器使用的功能的标识添加到消息中。
在又一个可能的实现方式中,当虚拟硬件设备只由目标硬件设备一个组成的情况下,若该目标硬件设备为第一通信设备提供全部硬件资源时,目标硬件设备的存储地址与虚拟硬件设备的存储地址相同;若该该目标硬件设备为第一通信设备提供部分硬件资源时,目标硬件设备的存储地址=虚拟硬件设备的存储地址+目标硬件设备对应的偏移位置。其中,目标硬件设备对应的偏移位置为:目标硬件设备为第一通信设备提供的硬件资源起始存储位置,该目标硬件设备对应的偏移位置可以从资源配置信息中获取。
通过该方式,第一访问组件可以根据虚拟硬件设备中硬件资源的实际配置情况,准确地确定目标硬件设备的存储地址。
在又一个可能的实现方式中,当虚拟硬件设备由多个硬件设备组成时,所述第一访问组件可以根据第二映射表,将虚拟硬件设备的存储地址转换为目标硬件设备的存储地址,其中,第二映射表用于描述:虚拟硬件设备的存储地址与目标硬件设备的存储地址之间的映射关系。
其中,第二映射表是根据该资源配置信息中规定的每个硬件设备为第一通信设备提供的硬件资源大小,以及每个硬件设备为第一通信设备提供硬件资源的先后顺序生成的。
当目标硬件设备为第一通信设备提供全部硬件资源时,第二映射表可以指示以下映射关系:目标硬件设备的存储地址=虚拟硬件设备的存储地址-在目标硬件设备前为第一通信设备提供硬件资源的硬件设备提供的硬件资源大小之和。
当目标硬件设备为第一通信设备提供部分硬件资源时,第二映射表可以指示以下映射关系:目标硬件设备的存储地址=虚拟硬件设备的存储地址-在目标硬件设备前为第一通信设备提供硬件资源的硬件设备提供的硬件资源大小之和+目标硬件设备对应的偏移位置。
通过该方式,第一访问组件可以根据虚拟硬件设备中硬件资源的实际配置情况,准确地确定目标硬件设备的存储地址。
在又一个实现方式中,消息为写请求消息,该情况下,在第一访问组件向第二访问组件发送该消息之后还包括以下步骤:
第一访问组件接收第二访问组件发送的第二报文;然后,根据第一映射表,将第二报文中的指示目标硬件设备的存储地址转换为处理器的内存的存储地址,并读取处理器的内存的存储地址指示的存储位置中的目标数据;最后向第二访问组件发送第三报文,该第三报文中包含目标数据、指示目标硬件设备的存储地址和目标硬件设备的存储地址。
通过该方式,第一访问组件可以将待写入的目标数据发送给第二访问组件,从而写入目标硬件设备,实现写操作。
在又一个实现方式中,消息为读请求消息,该情况下,在第一访问组件向第二访问组件发送该消息之后还包括以下步骤:
第一访问组件接收第二访问组件发送的第四报文;然后,根据第一映射表,将第三报文中指示目标硬件设备的存储地址转换为处理器的内存的存储地址;最后将第四报文中的携带的目标数据存储在处理器的内存的存储地址指示的存储位置中。
通过该方式,第一访问组件可以将从目标硬件设备读取的目标数据写入到处理器的内存中,实现读操作。
第二方面,本申请提供了一种消息传输方法,该方法适用于包含多个通信设备的通信系统,其中每个通信设备中包含处理器、访问组件和至少一个硬件设备。本方法中涉及的第二通信设备为通信系统的任一通信设备。所述方法包括以下步骤:
第二通信设备的第二访问组件接收第一通信设备中的第一访问组件发送的消息后,根据该消息中指示目标硬件设备的存储地址,确定该目标硬件设备;然后,第二访问组件向该目标硬件设备传输包含指示目标硬件设备的存储地址和目标硬件设备的存储地址的第一消息,以使目标硬件设备可以根据第一消息中的两个存储地址读取或写入所述目标数据。
通过该方法,第二访问组件收到该消息,不通过第二通信设备内的处理器进行操作,即可直接根据指示该目标硬件设备的存储地址,向该目标硬件设备传输该消息,从而使该目标硬件设备可以根据该目标硬件设备的存储地址、指示的该硬件设备的存储地址,完成读取或写入目标数据的操作。显然,该方法可以节省第二通信设备中的处理器的计算资源,也可以降低第一通信设备对位于其他通信设备的硬件设备的访问延迟。
在一种可能的实现方式中,第二访问组件和第一访问组件通过网络通信;在该情况下,第一访问组件可以通过网络报文的形式向第二访问组件发送该消息,即第一访问组件将该消息封装在第一报文中发送给第二访问组件,第二访问组件通过解封装获取第一报文中的该消息。通过该方式,第一访问组件可以成功地通过网络将消息发送给第二访问组件。
在另一种可能的实现方式中,第一访问组件和第二访问组件的表现形式相同,均可以为FPGA、CPLD、ASIC、SOC中任一种表现形式或多种表现形式的结合。这样,通过该方式可以提高通信设备中访问组件的表现形式的灵活性。
在又一种可能的实现方式中,第一消息为写请求消息;第二访问组件向目标硬件设备发送第一消息之后还包括以下步骤:
第二访问组件接收目标硬件设备发送的第二消息,然后将该第二消息封装为第二报文发送给第一访问组件;其中,该第二消息用于请求读取存储在第一通信设备的处理器内存中的目标数据,包含指示目标硬件设备的存储地址和目标硬件设备的存储地址;然后,第二访问组件接收第一访问组件发送的第三报文,该第三报文中包含该目标数据,以及指示目标硬件设备的存储地址和目标硬件设备的存储地址;
所述第二访问组件根据第三报文中指示目标硬件设备的存储地址,确定该目标硬件设备,并将目标数据存储到目标硬件设备的存储地址指示的存储位置。
通过该方式,第二访问组件可以将待写入的目标数据存储到目标硬件设备,实现写操作。
在又一种可能的实现方式中,第一消息为读请求消息;第二访问组件向目标硬件设备发送第一消息之后还包括以下步骤:
第二访问组件接收目标硬件设备发送的第三消息,然后将该第三消息封装为第四报文发送给第一访问组件;其中,该第三消息用于请求将目标数据存储到处理器内存中,第三消息中包含目标数据,以及指示目标硬件设备的存储地址,该目标数据是目标硬件设备从目标硬件设备的存储地址指示的存储位置读取的;
这样,第一访问组件在收到该第四报文后,可以将指示目标硬件设备的存储地址转换为处理器的内存的存储地址,进而将该目标数据存储到处理器的内存中,实现读操作。
第三方面,本申请还提供了一种第一访问组件,该第一访问组件应用于第一通信设备,第一通信设备为通信系统中任意一个通信设备,通信系统中包括多个通信设备,每个通信设备包含处理器、访问组件和硬件设备。第一访问组件包括执行第一方面或第一方面任一种可能实现方式中的消息传输方法的各个模块。
第四方面,本申请还提供了一种第二访问组件,该第二访问组件应用于第二通信设备,第二通信设备为通信系统中任意一个通信设备,通信系统中包括多个通信设备,每个通信设备包括处理器、访问组件和硬件设备。第二访问组件包括用于执行第二方面或第二方面任一种可能实现方式中的消息传输方法的各个模块。
第五方面,本申请还提供了一种通信设备,该通信设备包括处理器、访问组件和硬件设备,其中,访问组件用于实现各方面提供的方法。
第六方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
附图说明
图1a为本申请实施例提供的一种通信系统的架构图;
图1b为本申请实施例提供的一种空间访问示意图;
图2为本申请实施例提供的一种消息传输方法的流程图;
图3为本申请实施例提供的另一种消息传输方法的流程图;
图4为本申请实施例提供的一种访问组件的结构示意图;
图5为本申请实施例提供的一种通信设备的结构示意图。
具体实施方式
为便于本领域技术人员理解本申请实施例,首先,对本申请中的部分用语进行解释说明:
1)、通信系统,由多个通信设备组成。通信系统中的通信设备,又可以称为主机(host),是具有独立计算能力,且能够与其他设备互相访问的计算机,包含处理器、访问组件和硬件设备等部件。其中,硬件设备用于提供硬件资源。
本申请实施例涉及的通信系统采用了资源整合方式,在通信系统中的资源管理设备(可以为通信设备)可以将多个通信设备中的硬件设备整合为硬件资源池。然后,资源管理设备再按照每个通信设备的硬件资源需求,动态地将硬件资源池中的硬件设备提供的硬件资源分配给相应的通信设备。因此,在该通信系统中,为目标通信设备提供硬件资源的至少一个硬件设备可能位于同一通信设备,也可能位于不同的通信设备。
为了便于区分和描述,在本申请实施例中,通信系统中使用硬件资源池中硬件设备的通信设备可以称为应用设备,提供硬件资源池中硬件设备的通信设备可以称为资源设备。同一个通信设备既可以为应用设备,也可以为资源设备。
2)、处理器,作为通信设备内的控制中心,是通信设备中的核心配件。处理器可以利用各种接口和线路连接通信设备中的其他部件,通过运行操作系统对通信设备内的其他部件进行控制管理,以完成该通信设备的各种功能。
3)、访问组件,为通信设备内的专用硬件部件,用于实现通信设备内和通信设备之间的硬件资源访问。由于访问组件可以实现通信设备之间的硬件资源访问,因此,访问组件具有网络通信的功能。
可选地,访问组件可以为:现场可编程门阵列(field-programmable gate array,FPGA)、复杂可编程逻辑器件(complex programmable logic device,CPLD)、专用集成电路(application specific intergrated circuits,ASIC),或片上系统(System on a chip,SOC)等一些可编程的芯片。
访问组件可以通过多种外设接口分别与通信设备内的访问组件、硬件设备连接。可选地,外设接口可以为扩展外围组件互连(peripheral component interconnect,PCI)接口,或者扩展外围组件互连高速(peripheral component interconnect express,PCIe)接口等,本申请对此不作限定。
该访问组件通过外设接口可以实现处理器和硬件设备之间消息的透传。消息的透传,即消息在传输过程中访问组件只对消息中包含的存储地址进行转换,而不对消息的其他内容(例如消息中包含的其他数据、消息的类型等)进行改变;换句话说,处理器生成消息与硬件设备最终接收的消息之间的差别,以及硬件设备生成的消息与处理器最终接收的消息之间的差别,仅在于包含的存储地址不同。
4)、硬件设备,用于提供硬件资源。具体的,根据硬件设备能够提供的硬件资源的种类的不同,该硬件设备的设备类型也不同。
例如,当硬件设备提供的硬件资源为存储资源时,该硬件设备可以为硬盘,例如固态硬盘(Solid state driver,SSD)、机械硬盘,混合硬盘等。
又例如,当硬件设备提供的硬件资源为网络传输资源时,该硬件设备可以为网卡(network interface card,NIC)。
再例如,当硬件设备提供的硬件资源为视频处理资源时,该硬件设备可以为图形处理器(graphics processing unit,GPU)。
再例如,当硬件设备提供的硬件资源为声音处理资源时,该硬件设备可以为声卡、音频电路等。
5)、虚拟硬件设备,是指将图1a所示系统中至少一个同种类型的可用硬件设备组成硬件资源池,该硬件资源池中包括一个或多个虚拟硬件设备,每个虚拟硬件设备由至少一个硬件设备组成。
例如,通信系统中的资源管理设备将通信设备1的SSD 1和通信设备2的SSD 1组成一个虚拟SSD盘,并将该虚拟SSD盘分配给通信设备1使用,其中,该虚拟SSD盘的容量为两个SSD盘容量之和。
值得说明的是,多个硬件设备如何组成硬件资源池,以及虚拟化硬件设备分配方式的具体实现方案本申请不作限制。除了将图1a所示系统中至少一个可用的同类型的硬件设备组成一个虚拟逻辑设备,将该虚拟逻辑设备分配给一个通信设备外,也可以将所有可用的同类型的硬件设备组成一个或多个逻辑硬件设备,然后,在按照预置规则将每个逻辑硬件设备切分为多个子逻辑硬件设备,每个子逻辑硬件设备可以称为一个虚拟硬件设备。例如,当前系统中可用SSD设备为通信设备1的SSD 1、通信设备2的SSD 1和通信设备3的SSD1,将上述三个SSD组成一个逻辑SSD,然后,按照预置规则将该逻辑SSD切分为2个子逻辑SSD,每个子逻辑SSD称为一个虚拟SSD,可以分配给一个通信设备使用。
6)、消息,在处理器和组成虚拟硬件设备的某个硬件设备之间传输,用于实现处理器期望虚拟硬件设备执行的读写操作。具体的,消息可以包括执行操作前的请求消息、执行操作过程中的数据执行消息、操作执行完成后的响应消息等,本申请对此不作限定。
其中,当处理器需要对虚拟硬件设备执行读操作时,请求消息为:读请求消息;数据执行消息为:该硬件设备发送的携带目标数据的数据存储请求,和该处理器存储目标数据到内存后返回的数据存储响应;响应消息为:该硬件设备接收到数据存储响应确认处理器读取到目标数据后发送的读响应消息。
当处理器需要对虚拟硬件设备执行写操作时,请求消息为:写请求消息;数据执行消息为:该硬件设备发送的数据读取请求,和该处理器返回的携带目标数据的数据读取响应;响应消息为:该硬件设备成功存储该目标数据后发送的写响应消息。
通过以上对访问组件的描述可知,处理器和硬件设备之间未直接相连,而是通过访问组件连接的。因此,消息的传输包括两个过程:过程一、处理器和该处理器所在的通信设备中的访问组件之间的消息传输;过程二:该处理器所在的通信设备中的访问组件与该硬件设备之间的消息传输。
可选地,在过程一中传输的消息中可以包含:指示目标数据在虚拟硬件设备中的存储位置的第一地址,和用于指示目标数据在该处理器的内存中的存储位置的第二地址。
例如,当该消息为写请求消息时,该目标数据为该处理器待写入的数据。该第一地址为该目标数据写入该虚拟硬件设备的起始地址;该第二地址为该目标数据存储在该存储器的内存中的起始地址。
又例如,当该消息为读请求消息时,该目标数据为该处理器待读取的数据。该第一地址为该目标数据存储在该虚拟硬件设备中的起始地址;该第二地址为该目标数据写入该处理器的内存中的起始地址。
另外,由于分配给通信设备的虚拟硬件设备为为该通信设备提供硬件资源的总和(至少一个硬件设备中每个硬件设备分别提供给该通信设备的硬件资源的总和),因此,第一地址(即该虚拟硬件设备的存储地址)的取值范围为:0—(该至少一个硬件设备中每个硬件设备分别提供的给该通信设备的硬件资源的总和-1)。
例如,通信系统中的资源管理设备为通信设备1分配硬件资源时,将硬件资源池中位于通信设备2中的硬件设备A中的2TB硬件资源,以及位于通信设备3中的硬件设备B中的6TB硬件资源分配给该通信设备1。通信设备1发送的请求消息中包含的虚拟硬件设备的存储地址的取值范围应该为0TB—(8TB-1)。
可选地,在过程二中传输的消息中可以包含:用于指示该硬件设备的的第三地址,和用于指示目标数据在该硬件设备中的存储位置的第四地址。
该第三地址可以使该处理器所在的通信设备中的访问组件可以准确的将消息发送给该硬件设备。可选地,该第三地址中包含该硬件设备的指示信息。
该第四地址可以使该硬件设备接收到该消息后,完成相应的操作。例如,当该消息为写请求消息时,该第四地址为目标数据写入该硬件设备的起始地址。又例如,当该消息为读请求消息时,该第四地址为目标数据存储在该硬件设备中的起始地址。
需要说明的是,该第四地址(即该硬件设备的存储地址)的取值范围为:0—(该硬件设备的提供的硬件资源-1)。
7)、资源配置信息,为通信系统中的资源管理设备在为通信设备分配硬件资源时生成,并发送给该通信设备的访问组件。
通信设备的资源配置信息用于表示该通信设备(的虚拟硬件设备)的硬件资源的配置情况。由于分配给该通信设备的硬件资源是由分配给其的至少一个硬件设备提供的,因此,该资源配置信息包含:该至少一个硬件设备中每个硬件设备在该虚拟硬件设备内的存储地址范围。
可选的,通信系统中的资源管理设备可以保存所有通信设备的资源配置信息。
可选的,当所述至少一个硬件设备中任一个硬件设备为该通信设备提供的硬件资源是该硬件设备中的部分硬件资源,该资源配置信息中还包含:该硬件设备对应的偏移位置(该硬件设备为该通信设备提供的硬件资源起始存储位置)。
例如,当通信系统中的资源管理设备将硬件设备1和硬件设备2中的所有硬件资源分配给某通信设备,每个硬件设备有4TB的硬件资源,那么该通信设备的虚拟硬件设备提供的硬件资源为8TB。该资源配置信息中包含:硬件设备1在该虚拟硬件设备内的存储地址范围0TB—(4TB-1),硬件设备2在该虚拟硬件设备内的存储地址范围4TB—(8TB-1)。
又例如,当通信系统中的资源管理设备将硬件设备1中的2T的硬件资源(1TB—(3TB-1)),和硬件设备2中的所有硬件资源分配给某通信设备,其中,每个硬件设备有4TB的硬件资源,那么该通信设备的虚拟硬件设备提供的硬件资源为6TB。该资源配置信息中包含:硬件设备1在该虚拟硬件设备内的存储地址范围0TB—(2TB-1),硬件设备2在该虚拟硬件设备内的存储地址范围2TB—(6TB-1),以及硬件设备1对应的偏移位置1TB。可选地,资源配置信息中还可以包括硬件设备2对应的偏移位置0TB。
需要说明的是,本申请中所涉及的多个,是指两个或两个以上。
下面结合附图对本申请实施例做进行具体说明。
图1a示出了本申请实施例提供的消息传输方法适用的一种可能的通信系统的架构,参阅图1a所示,在通信系统中,包括多个通信设备(如图中所示的通信设备A、通信设备B和通信设备C),和资源管理设备。其中,每个通信设备中均包含处理器、访问组件以及至少一个硬件设备。硬件设备可以包括SSD、中央处理器(central process unit,CPU)、GPU、NIC中至少一种。
由于该通信系统采用了资源整合方式,因此,该通信系统中的资源管理设备可以将该通信系统中的各个通信设备中的具有同一设备类型的硬件设备(即硬件资源)进行资源整合,生成硬件资源池。例如,资源管理设备可以将所有通信设备中的SSD资源整合为一个SSD资源池,或者将所有通信设备中的NIC资源整合为一个NIC资源池。
当某个通信设备请求分配硬件资源时,资源管理设备在该硬件资源池中拆分出满足该通信设备的硬件资源需求的硬件资源,并将拆分出的硬件资源作为一个虚拟硬件设备分配给该通信设备。资源管理设备在将该虚拟硬件设备分配给该通信设备后,还将该通信设备的资源配置信息发送给该通信设备。
其中,资源管理设备可以为多个通信设备中的任一个,也可以为该通信系统中具有控制管理功能的、独立于通信设备的其他设备。
资源管理设备为一目标通信设备分配的硬件资源,可以由至少一个硬件设备中的部分或全部硬件资源组成。其中,该至少一个硬件设备可以位于同一个通信设备,也可以位于不同的通信设备,本申请对此不作限定。另外,该至少一个硬件设备中可以包含位于该目标通信设备内的硬件设备,也可以不包含位于该目标通信设备内的硬件设备,本申请对此也不作限定。
本申请实施例的以下描述中,以通信设备A为应用主机,通信设备A、通信设备B、通信设备C为资源主机,以硬件设备为SSD为例进行进一步详细描述。
例如,资源管理设备为通信设备A分配硬件资源时,将通信设备A中的SSD A_1、通信设备B中的SSD B_1,以及通信设备C中的SSD C_1中的全部硬件资源作为虚拟SSD分配给通信设备A。
资源管理设备在为通信设备A分配硬件资源后,生成通信设备A的资源配置信息,并将通信设备A的资源配置信息发送给该通信设备A,该通信设备A中的访问组件A保存该资源配置信息。该访问组件A可以根据该资源配置信息向处理器A发送通知,使处理器A确定资源管理设备已经为通信设备A分配的虚拟硬件设备的设备类型(SSD)、提供的硬件资源大小等信息。
处理器A会接收到运行的业务应用发送的请求消息,该请求消息可以为读请求消息,也可以为写请求消息。处理器A将该请求消息传输给访问组件A,该访问组件A可以根据该资源配置信息,判断该请求消息的传输对象具体属于组成该虚拟SSD中哪个SSD。具体包括以下几个场景:
场景一:当访问组件A接收的请求消息的传输对象与处理器A位于同一通信设备(例如,请求消息的传输对象为SSD A_1)时,该访问组件A可以直接将该请求消息发送给该SSDA_1,以使该SSDA_1执行该操作。
场景二:当访问组件A接收的请求消息的传输对象与处理器A位于不同通信设备(例如,请求消息的传输对象为通信设备B中的SSD B_1)时,该访问组件A将该请求消息发送给该通信设备B中的访问组件B。该通信设备B中的访问组件B在收到该请求消息后,再将该请求消息发送给该SSD B_1,以使该SSD B_1执行该操作。
需要说明的是,在每个通信设备的内部的访问组件与处理器之间,以及访问组件与每个SSD之间均通过外设接口连接,以进行部件之间的通信。
可选地,该外设接口可以为PCIe接口,那么在每个通信设备内部的访问组件中均包含PCIe端点(endpoint)和PCIe根端口(root port),如图所示。其中,PCIe端点,用于连接处理器,在处理器和访问组件之间建立传输通道。PCIE根端口,用于连接通信设备内的每个SSD,在访问组件和每个SSD之间建立传输通道。
另外,在应用设备和资源设备为不同的通信设备时(如场景二中的描述),为了实现应用设备中的访问组件可以与位于资源设备中的硬件设备之间进行消息传输,通信系统中的应用设备和资源设备之间存在通信连接,即应用设备和资源设备中的访问组件之间存在通信连接。例如,如图1a中所示,通信设备A中的访问组件A与通信设备B中的访问组件B、以及与通信设备C中的访问组件C之间通过通信接口连接。
由于每个通信设备均可以作为资源设备为其他应用设备提供硬件设备,也可以作为应用设备由其他通信设备为其提供硬件设备,因此,可选地,通信系统中任意两个通信设备中的访问组件之间可以通过通信接口连接。例如,如图1a中所示,通信设备B中的访问组件B与通信设备C中的访问组件C之间通过通信接口连接。
可以理解的是,两个访问组件之间可以通过直连通信,也可以通过网络通信,本申请对此不作限定。当访问组件之间通过网络通信时,网络中可以包含各种网络转发设备(例如,交换机、路由器等)。
根据访问组件之间的连接方式的不同,二者之间在通信时采用的通信协议也不同。因此,访问组件在发送消息时,还需要按照约定的通信协议,将消息封装为报文。访问组件接收到报文后,也需要按照约定的通信协议,将报文解封装为消息。
例如,当访问组件之间通过网络通信时,二者之间可以采用以太网协议、传输控制协议/网络协议(transmission control protocol/internet protocol,TCP/IP)等通信协议。
图1b示出了在通信设备内部的处理器和访问组件之间,以及访问组件与硬件设备之间通过PCIe接口实现连接的情况下,通信设备中的空间访问示意图。
在PCIe结构中,访问组件和硬件设备均称为PCIe设备。其中,每个PCIe设备中均配置两类空间:配置空间和基址寄存器(base address register,BAR)空间。
PCIe设备的配置空间就是一系列寄存器的集合,这些寄存器中保存了该PCIe的设备类型、该PCIe设备其他基本信息(设备标识、厂家信息,版本号等),以及BAR空间的基址。
PCIe设备的BAR空间也是寄存器空间,寄存器包含了该PCIe设备能够管理的队列的基址,以及该队列的指针等信息。
如图1b所示,访问组件是处理器的一个endpoint,处理器可以通过PCIe结构中的根复合体(root complex,RC),访问访问组件的配置空间。处理器可以通过访问组件的配置空间,配置访问组件的BAR空间的基址,并实现对访问组件的BAR空间的配置和访问。
访问组件可以自主访问硬件设备的配置空间,并将其映射到访问组件的BAR空间内,这样,访问组件可以通过对自身的BAR空间的访问,间接实现对硬件设备的配置空间的访问。在访问组件间接访问硬件设备的配置空间,可以配置硬件设备的BAR空间的基址,从而实现对硬件设备的BAR空间的配置和访问。
当通信系统中的资源管理设备为该一个通信设备(继续以通信设备A为例)分配虚拟硬件设备后,访问组件A生成一个配置空间,该配置空间中包含该虚拟硬件设备的设备类型,以及其他基本信息。这样,处理器A可以通过RC访问访问组件A的配置空间,识别虚拟硬件设备的设备类型以及其他基本信息,从而根据这些信息生成用于实现某些操作的请求消息。可选地,所述RC可以集成在处理器A内部,也可以是独立于处理器A的硬件,本申请对此不作限定。
此外,在处理器A与访问组件A进行消息传输的过程中,也均需要该RC实现。例如,当处理器A需要向访问组件A传输消息时,需要将消息存储到处理器A的内存中,然后通过RC将消息写入到访问组件A中;当访问组件A需要从访问组件A读取消息时,也需要通过RC将消息读取到处理器A的内存中,然后处理器A再从内存中读取消息。
访问组件A与通信设备A中的任一个硬件设备(以硬件设备A_1为例),进行消息传输的过程中,也需要访问组件A具有RC的功能,以及需要访问组件A的内存参与实现,具体过程与处理器A与访问组件A进行消息传输的过程类似,此处不再赘述。
另外,在消息传输中,若处理器A和访问组件A之间通过队列存储的方式传输消息(例如,请求消息、响应消息等)(即将消息保存到处理器A的内存的队列中),则需要处理器A频繁访问访问组件A的BAR空间,以使访问组件A确定处理器A的内存中的队列的基址,进而使访问组件A可以从该队列中读取消息,或者将消息写入该队列。
类似的,若访问组件A和硬件设备A_1之间通过队列存储的方式传输消息(例如,请求消息、响应消息等)(即将消息保存到处理器A的内存的队列中),则需要访问组件A频繁访问硬件设备A_1的BAR空间,以使硬件设备A确定访问组件A的内存中队列的基址,进而使硬件设备A_1可以从该队列中读取消息,或者将消息写入该队列。
本申请实施例提供了一种消息传输方法,该方法适用于如图1a所示的通信系统中。本申请实施例的以下描述中,继续以通信设备A为应用主机,通信设备A、通信设备B、通信设备C为资源主机,以硬件设备为SSD为例进行进一步详细描述。
通过以上描述可知,通信系统中的资源管理设备将所有通信设备中的SSD整合为SSD资源池,然后将SSD资源池中通信设备A中的SSD A_1、通信设备B中的SSD B_1,以及通信设备C中的SSD C_1中的全部硬件资源作为虚拟SSD分配给通信设备A,并将通信设备A的资源配置信息发送给通信设备A中的访问组件A。处理器A通过RC访问访问组件A的配置空间,识别该虚拟SSD的设备类型,提供的硬件资源大小等信息。
下面参阅图2,对该方法的流程进行介绍。如图2中所示,该方法的流程包括:
S201:通信设备A中的处理器A在需要虚拟SSD执行一操作(读操作或写操作)时,向访问组件A传输该操作对应的请求消息;访问组件A获取处理器A传输的请求消息。
该请求消息中包含第一地址和第二地址。其中,第一地址用于指示目标数据在虚拟SSD中的存储位置,换句话说,第一地址为虚拟SSD的存储地址。第二地址用于指示目标数据在处理器A的内存中的存储位置,换句话说,第二地址为处理器A的内存的存储地址。
在执行S201时,处理器A可以通过与访问组件A之间的外设接口,并按照该外设接口对应的传输方式,向访问组件A传输请求消息。请求消息的传输方式可以但不限于以下两种方式:
方式一:处理器A向访问组件A发送请求消息。
方式二:在处理器A和访问组件A之间采用PCIe接口的情况下,通过以下步骤传输请求消息:
处理器A将请求消息存储在处理器A的内存中,具体可以利用队列存储请求消息(为了便于区分,该队列后续可以称为第一命令队列);然后处理器A通知访问组件A读取请求消息;
访问组件A从处理器A获取读取请求消息的通知后,从第一命令队列中读取请求消息。
其中,通信设备A中的PCIe接口结合非易失性存储规范(non-volatile memoryexpress,NVMe)时,第一命令队列可以为存储在处理器A的内存中的提交队列(SubmissionQueue,SQ)。
可选地,在上述方式二中,处理器A可以通过以下步骤通知访问组件A读取请求消息:处理器A在将请求消息存储在第一命令队列后,更新第一命令队列的写指针位置,并将更新后的第一命令队列的写指针位置发送给访问组件A。
这样,访问组件A从处理器A接收更新后的第一命令队列的写指针位置后,可以根据更新后的第一命令队列的写指针位置,从第一命令队列中读取请求消息。
需要说明的是,在命令队列是按照消息的先后顺序存储的,且存储有消息的相邻两个位置之间不存在空闲位置。命令队列的写指针位置为该命令队列中首个空闲位置,因此,访问组件A可以通过该命令队列的写指针位置是否变化,确定该命令队列中是否存入新的消息,且还可以根据更新后的该命令队列的写指针位置,确定新存入的消息的在该命令队列中的位置,从而准确地读取到新存入该命令队列的消息。
S202:访问组件A确定第一地址指示的存储位置属于其他通信设备的目标SSD(例如,通信设备B中的SSD B_1),即当前满足场景二。
可选地,访问组件A可以通过以下方法,确定目标SSD:
访问组件A根据存储的资源配置信息和第一地址,确定请求消息的传输对象为通信设备B中的SSD B_1,资源配置信息包含至少一个SSD中每个SSD对应的存储地址范围。在本实施例中,该资源配置信息包含:组成该虚拟SSD的3个SSD中每个SSD对应的存储地址范围。
访问组件A在执行S202时,首先确定第一地址所在的存储地址范围,然后确定该存储地址范围所对应的SSD即为请求消息的传输对象。
例如,虚拟SSD的总存储地址范围为0TB—12TB-1,且3个SSD按照SSD A_1、SSD B_1、SSD C_1的先后顺序,为通信设备A提供硬件资源。资源配置信息如下表1所示:
表1
SSD的描述信息 | 存储地址范围 |
SSD A_1 | 0TB—4TB-1 |
SSD B_1 | 4TB—8TB-1 |
SSD C_1 | 8TB—12TB-1 |
当第一地址为5TB时,访问组件A可以确定第一地址所在的存储地址范围为4TB—8TB-1,然后访问组件A可以将存储地址范围4TB—8TB-1所对应的SSD B_1作为请求消息的传输对象。
可选地,资源配置信息中还包含组成该虚拟SSD的3个SSD中每个SSD的描述信息,例如SSD的标识、SSD所在的设备的标识、SSD的编号、SSD连接的单板的标识等。
访问组件A可以通过SSD B_1的描述信息,确定SSD B_1位于通信设备B中,这样访问组件A后续就可以将请求消息准确地发送给通信设备B中的访问组件B。
另外,访问组件A还可以根据通过SSD B_1的描述信息,生成SSD B_1的指示信息,以便后续可以添加到请求消息中。这样在通信设备B中存在多个SSD的情况下,通信设备B可以根据收到的请求消息中的SSD B_1的指示信息,将请求消息准确地传输给SSD B_1。
通过以上描述可知,SSD B_1的指示信息,用于通信设备B能够准确地确定SSD B_1。因此,SSD B_1的指示信息可以但不限于包括以下至少一项:SSD B_1的标识、SSD B_1连接的单板的标识。
S203:访问组件A根据第一映射表,将请求消息中的第二地址转换为第三地址,第三地址用于指示SSD B_1,第一映射表用于记录第二地址与第三地址之间的映射关系。
其中,第一映射表可以是访问组件A中预先存储的,或者是访问组件A在执行S203之前生成的。具体的,访问组件A可以通过以下步骤,生成第一映射表:
访问组件A确定SSD B_1的指示信息;
访问组件A将SSD B_1的指示信息添加至第二地址中,得到第三地址;
访问组件A根据第二地址和第三地址生成第一映射表。
目前,各种消息中为存储地址预留的地址字段为第一比特(bit),而一般情况下,存储地址实际所需的第二比特小于第一比特。为了避免在请求消息中添加SSD B_1的指示信息,会导致增加请求消息占用的比特长度,从而增加了传输请求消息的传输开销,且为了提高地址字段的比特资源利用率,本申请实施例提供了上述方式生成第三地址:
访问组件A将SSD B_1的指示信息,添加到第二地址所在的地址字段中的空闲的位域中,从而得到第三地址。
例如,请求消息中为存储地址预留的地址字段为64bit,而第二地址实际只占用48bit,那么地址字段中还有16bit的位域空闲。访问组件A可以占用该16bit中的全部或部分位域,放置SSD B_1的指示信息。
此外,在功能虚拟化场景中,处理器A的功能通过虚拟化可以划分多个功能包括:至少一个物理功能(physical function,PF)和至少一个虚拟功能(virtual function,VF)。请求消息可以为处理器A在使用某个功能时发送的。为了标识该处理器A发送该请求消息时使用的功能,请求消息中还可以包含该功能(虚拟功能或物理功能)的标识。同样的,为了避免增加请求消息占用的比特长度,也为了提高存储地址的地址字段的比特资源利用率,在本申请实施例中,访问组件A在得到第三地址时,还可以将功能的标识添加到第二地址所在的地址字段中的空闲的位域中,从而得到既包含SSD B_1的指示信息、又包含功能的标识的第三地址。
可选地,继续以地址字段中还有16bit的位域空闲为例进行说明,在访问组件A占用该16bit中的部分位域放置SSD B_1的指示信息的情况下,访问组件A也可以占用该16bit中剩下的部分或全部位域,放置功能的标识。
在一个示例中,访问组件A在请求消息中添加SSD B_1的指示信息和处理器A使用的功能的标识。在该情况下,在64bit的地址字段中各项信息所占的位域如表2所示,地址字段中所有信息构成第三地址。
表2
[63:60] | [59:56] | [55:48] | [47:0] |
SSD B_1连接的单板的标识 | SSD B_1的标识 | (物理或虚拟)功能的标识 | 第二地址 |
S204:访问组件A根据第一地址,确定第四地址。其中,第四地址用于指示目标数据在SSD B_1中的存储位置。第四地址又可以称为SSD B_1的存储地址。
若虚拟SSD由1个SSD(SSD B_1)组成时,虚拟SSD提供的硬件资源大小与该SSD B_1的提供的硬件资源大小相同,因此,第四地址与该第一地址相同。
但是由于在本申请实施例中,虚拟SSD由3个SSD组成,那么虚拟SSD提供的硬件资源大小与每个SSD提供的硬件资源大小不同。因此,SSD B_1有可能无法识别请求消息中的虚拟硬件资源的存储地址。例如,SSD B_1能够提供4TB的硬件资源,那么该SSD可以识别取值为0TB—4TB-1的存储地址,通过表1可知,当访问组件A确定请求消息的操作对象为SSDB_1时,请求消息中虚拟SSD的存储地址范围为4TB—8TB-1。显然,SSD B_1在获取到请求消息,可能会因为无法识别请求消息中的虚拟SSD的存储地址,导致SSD B_1无法成功执行请求消息对应的操作。
为了使SSD B_1能够成功执行请求消息对应的操作,访问组件A还需要根据请求消息中的第一地址,确定第四地址:
访问组件A根据第二映射表,将第一地址转换为第四地址,第二映射表用于描述:指示虚拟SSD的存储位置的地址与指示SSD B_1的存储位置的地址之间的映射关系。
其中,第二映射表可以是预先存储的,也可以是访问组件A在生成第四地址时生成的。需要说明的是,第二映射表是根据该资源配置信息中规定的每个SSD为通信设备A提供的硬件资源大小,以及每个SSD为通信设备A提供硬件资源的先后顺序生成的。第二映射表可以指示以下映射关系:
第四地址=第一地址-在目标SSD前为通信设备A提供硬件资源的SSD提供的硬件资源大小之和。
还需要说明的是,若目标SSD为首个SSD提供硬件资源的SSD时,通过上述映射关系可知,第四地址与第一地址相同。
例如,继续以表1为例,当第一地址为5TB时,访问组件A可以以下第二映射表:第四地址=第一地址-4TB(SSD A_1提供的硬件资源大小),从而得到第四地址为1TB。
应当理解的是,当目标SSD提供为通信设备A提供的自身的部分硬件资源时,该资源配置信息中还包含该目标SSD对应的偏移位置,那么第二映射表指示的映射关系为:第四地址=第一地址-在目标SSD前为通信设备A提供硬件资源的SSD提供的硬件资源大小之和+目标SSD对应的偏移位置。
S205:访问组件A向通信设备B的访问组件B发送第一报文,第一报文中包含第三地址和第四地址,以使访问组件B根据第三地址和第四地址执行操作指令对应的操作(读取或写入目标数据)。访问组件B接收访问组件A发送的第一报文。
在通信系统中,由于不同通信设备的访问组件之间采用约定的通信协议进行通信,因此,访问组件A向访问组件B发送包含第三地址和第四地址的请求消息时,需要按照通信协议,将请求消息进行封装为第一报文。当访问组件B接收到第一报文后,也需要按照通信协议,对第一报文进行解封装,从而得到请求消息。
在一个实现方式中,当访问组件A和访问组件B之间通过以太网协议进行通信时,访问组件A在发送请求消息之前,需要对请求消息添加以太网帧头,将请求消息封装为以太网报文,其中,以太网帧头的格式如表3所示:
表3
目的MAC地址 | 源MAC地址 | 帧类型 | 预留字段 |
其中,目的MAC地址为通信设备B的MAC地址,源MAC地址为通信设备A的MAC地址。
S206:访问组件B确定第三地址指示的SSD B_1。
由于第三地址中包含SSD B_1的指示信息,因此,访问组件B可以根据第三地址中的SSD B_1的指示信息,确定SSD B_1。
还需要说明的是,访问组件B确定SSD B_1后,可以生成包含通信设备A的标识、SSDB_1的标识,和第三地址的对应关系。这样,当访问组件在获取到SSD B_1传输的数据执行消息或响应消息后,可以SSD B_1的标识,和数据执行消息或响应消息中的第三地址,确定这些消息的传输对象为通信设备A。
其中,通信设备A的标识可以为通信设备A的MAC地址等唯一标识该通信设备A的信息。
S207:访问组件B向SSD B_1传输请求消息,以使SSD B_1根据第三地址和第四地址读取或写入目标数据。SSD B_1获取访问组件B传输的请求消息。
由于通信系统中的每个通信设备内的访问组件和SSD之间通过外设接口连接。因此访问组件在执行S207时,可以通过该外设接口,并按照该外设接口对应的传输方式,向SSD B_1传输请求消息。其中,请求消息的传输方式可以但不限于以下方式:
方式一:访问组件B向SSD B_1发送请求消息。
方式二:在访问组件B和SSD B_1之间采用PCIe接口的情况下,通过以下步骤传输请求消息:
访问组件B将请求消息存储在访问组件B的内存中,具体可以利用队列存储请求消息(为了便于区分,该队列后续可以称为第二命令队列)中,并通知SSD B_1读取操作指令;
SSD B_1从访问组件B获取读取请求消息的通知后,从第二命令队列中读取操作指令。
其中,通信设备B中的PCIe接口结合NVMe时,第二命令队列可以为存储在访问组件B的内存中的SQ。
在上述方式二中,访问组件B可以通过以下步骤通知SSD B_1读取操作指令:访问组件B从在将请求消息存储在第二命令队列后,更新第二命令队列的写指针位置,并将更新后的第二命令队列的写指针位置发送给SSD B_1。
SSD B_1从访问组件B接收更新后的第二命令队列的写指针位置后,可以根据更新后的第二命令队列的写指针位置,从第二命令队列中读取操作指令。
在S207之后,SSD B_1获取到请求消息,然后SSD B_1执行请求消息对应的操作。由于请求消息可以为读请求消息或者写请求消息,根据请求消息的种类,SSD B_1执行的操作也不同。
当请求消息为写请求消息时,通信设备A和通信设备B通过S208a-S215a实现写操作;当请求消息为写请求消息时,通过设备A和通信设备B通过S208b-S215b实现读操作。
其中,S208a-S215a中的数据读取请求、数据读取响应为实现写操作中产生的数据执行消息;S208b-S215b中的数据存储请求、数据存储响应为实现读操作中产生的数据执行消息。
S208a:SSD B_1向访问组件B发送数据读取请求,用于请求读取存储在处理器内存中的目标数据。其中,数据读取请求中包含第三地址和第四地址。
S209a:访问组件B根据通信设备A的标识、SSD B_1的标识,和第三地址的对应关系,确定数据读取请求的传输对象为通信设备A;访问组件B向访问组件A发送第二报文。
其中,第二报文是访问组件B按照通信协议对数据读取请求封装得到的,第二报文中也包含第三地址和第四地址。
访问组件A接收访问组件B发送的第二报文后,将第二报文进行解封装,得到数据读取请求。
S210a:访问组件A对数据读取请求进行地址转换:根据第一映射表,将数据读取请求中的第三地址转换为第二地址,以及根据第四地址确定第一地址。
然后,访问组件A通过步骤S211a和S212a,读取存储在第二地址指示的存储位置中的目标数据。
S211a:访问组件A将数据存储请求发送给处理器A。这样,处理器A可以根据第二地址,读取目标数据。
S212a:处理器A向访问组件A发送数据读取响应,其中,数据读取响应中包含目标数据、第一地址和第二地址。
S213a:访问组件A对数据读取响应进行地址转换:根据第一映射表,将数据读取请求中的第二地址转换为第三地址,以及根据第一地址确定第四地址。具体描述可以参见S203-S204中的描述,此处不再赘述。
S214a:访问组件A向访问组件B发送第三报文。第三报文是访问组件A按照通信协议对数据读取响应封装得到的,第三报文中包含目标数据、第三地址和第四地址。
访问组件B接收第三报文后,确定第三地址指示的SSD B_1,并通过S215a,将目标数据存储到SSD B_1中的第四地址指示的存储位置。
S215a:访问组件B向SSD B_1发送数据读取响应。
SSD B_1在收到数据读取响应后,将数据读取响应中的目标数据存储到第四地址指示的存储位置中。
通过上述S208a-S215a,SSD B_1可以将待写入的目标数据,准确地写入SSD B_1中。
S208b:SSD B_1向访问组件B发送数据存储请求,用于请求将目标数据存储到处理器内存中。其中,数据存储请求中包含目标数据、第三地址和第四地址。
SSD B_1在收到读请求消息后,从第四地址指示的存储位置中读取目标数据。
S209b:访问组件B根据通信设备A的标识、SSD B_1的标识,和第三地址的对应关系,确定数据存储请求的传输对象为通信设备A;访问组件B向访问组件A发送第四报文。
其中,第四报文是访问组件B按照通信协议对数据读取请求封装得到的,第四报文中也包含目标数据、第三地址和第四地址。
访问组件A接收访问组件B发送的第四报文后,将第四报文进行解封装,得到数据存储请求。
S210b:访问组件A对数据存储请求进行地址转换:根据第一映射表,将数据存储请求中的第三地址转换为第二地址,以及根据第四地址确定第一地址。
然后,访问组件A通过步骤S211b,将目标数据存储到第二地址指示的存储位置中。
S211b:访问组件A将数据存储请求发送给处理器A。这样,处理器A可以将目标数据存储到第二地址指示的存储位置。
S212b:处理器A向访问组件A发送数据存储响应,其中,数据存储响应用于通知目标数据成功存储到处理器A的内存中。数据存储响应中包含第一地址和第二地址。
S213b:访问组件A对数据存储响应进行地址转换:根据第一映射表,将数据读取请求中的第二地址转换为第三地址,以及根据第一地址确定第四地址。具体描述可以参见S203-S204中的描述,此处不再赘述。
S214b:访问组件A向访问组件B发送第五报文。第五报文是访问组件A按照通信协议对数据存储响应封装得到的,第五报文中包含第三地址和第四地址。
访问组件B接收第五报文后,确定第三地址指示的SSD B_1。
S215b:访问组件B向SSD B_1发送数据存储响应。
SSD B_1在收到数据存储响应后,可以确定目标数据成功存储到处理器A的内存中。
通过上述S208a-S215a,SSD B_1可以将待读取的目标数据,准确地存储到处理器A的内存中。
需要说明的是,在S208b-S215b和S208a-S215a中,在处理器A与访问组件A之间,和在访问组件B与SSD之间传输数据执行消息时,可以采用直接发送的方式,而不需要通过队列存储的方式传输。
当SSD B_1通过上述步骤执行写操作或读操作之后,还可以通过以下步骤S216-S219向通信设备A中的处理器A发送响应消息,通知处理器A读操作或写操作完成。
S216:SSD B_1向访问组件B传输响应消息,用于通知处理器A成功读取或写入目标数据。其中,响应消息中包含第三地址和第四地址。
其中,当请求消息为写请求消息时,响应消息为写响应消息;当请求消息为读请求消息时,响应消息为读响应消息。
需要注意的是,SSD B_1也需要按照外设接口对应的传输方式,向访问组件B传输响应消息。响应消息的传输方式可以但不限于以下两种方式:
方式一:SSD B_1向访问组件B发送响应消息。
方式二:在SSD B_1和访问组件B之间采用PCIe接口的情况下,SSD B_1可以通过以下步骤传输响应消息:
SSD B_1将响应消息存储在访问组件B的内存中,具体可以利用队列存储(为了便于区分,后续可以称为第一响应队列)中,并通知访问组件B读取响应消息。
其中,当通信设备B中的PCIe接口结合NVMe时,第一响应队列可以为存储在访问组件B的内存中的完成队列(completion queue,CQ)。
可选地,在上述方式二中,SSD B_1可以通过以下步骤通知访问组件B读取响应消息:SSD B_1在将响应消息存储在第一响应队列中后,向访问组件B发起中断(例如MSI-X中断)。
访问组件B可以根据该中断,从第一响应队列中读取响应消息。
S217:访问组件B根据通信设备A的标识、SSD B_1的标识,和第三地址的对应关系,确定响应消息的传输对象为通信设备A;访问组件B向访问组件A发送第六报文。
其中,第六报文是访问组件B按照通信协议对响应消息封装得到的,第六报文中也包含第三地址和第四地址。
访问组件A接收访问组件B发送的第六报文后,将第六报文进行解封装,得到响应消息。
S218:访问组件A对响应消息进行地址转换:根据第一映射表,将数据存储请求中的第三地址转换为第二地址,以及根据第四地址确定第一地址。转换后,响应消息中包含第一地址和第二地址。
S219:访问组件A将响应消息传输给处理器A。这样,处理器A可以根据响应消息,确定成功读取或写入目标数据,SSD B_1成功完成请求消息对应的操作。
与S216类似的,访问组件A也需要按照外设接口对应的传输方式,向处理器A传输响应消息。响应消息的传输方式可以但不限于以下两种方式:
方式一:访问组件A向处理器A发送响应消息。
方式二:在访问组件A和处理器A之间采用PCIe接口的情况下,访问组件A可以通过以下步骤传输响应消息:
访问组件A将响应消息存储在处理器A的内存中,具体可以利用队列存储(为了便于区分,后续可以称为第二响应队列)中,并通知处理器A读取响应消息。
其中,当通信设备A中的PCIe接口结合NVMe时,第二响应队列可以为存储在处理器A的内存中的CQ。
可选地,在上述方式二中,访问组件A可以通过以下步骤通知处理器A读取响应消息:访问组件A在将响应消息存储在第二响应队列中后,向处理器A发起中断(例如MSI-X中断)。
处理器A可以根据该中断,从第二响应队列中读取响应消息。
采用本申请实施例提供的消息传输方法,通信系统中的通信设备A中的访问组件A在确定需要向通信设备B中的SSD B_1传输消息时,可以将消息中的虚拟SSD的存储地址转换为该SSD B_1的存储地址,并将消息中的处理器的内存的存储地址转换为指示该SSD B_1的存储地址。这样,当通信设备B中的访问组件B在收到该消息后,就可以根据指示的该SSDB_1的存储地址,确定该消息的向该SSD B_1传输,从而使该SSD B_1根据该SSD B_1是存储地址、指示该SSD B_1的存储地址,完成读取或写入目标数据的操作。由于访问组件B可以不通过通信设备B中的处理器B,即可完成处理器A对SSD B_1的访问,因此,该方案可以节省通信设备B中处理器B的计算资源,也可以降低通信设备A对位于其他通信设备的SSD的访问延迟。
还需要说明的是,若所述访问组件A确定请求消息的传输对象为通信设备A本地的SSD(例如SSD A_1),即当前满足上述场景一,则所述通信设备A可以按照图3所示的消息传输方法的流程,进行消息传输。
相对于图2所示的消息传输方法的流程而言,不同的是:在该流程中无需在访问组件A和访问组件B之间传输各个报文的步骤;原由访问组件B执行的步骤现由访问组件A执行;目标SSD由SSD B_1改为SSD A_1。因此,该流程中的各步骤的描述可以参见图2所示的实施例中相应步骤的描述,此处不再赘述。
上文中结合图1a至图3,详细描述了本申请实施例所提供的消息传输方法,下面将结合图4,描述本申请实施例所提供的访问组件。
图4为本申请实施例提供的一种访问组件400的结构示意图。其中,访问组件400应用于通信设备中,用于实现图2或图3所示的消息传输方法,具有通信设备A中的访问组件A的功能,或通信设备B中的访问组件B的功能。如图所示,访问组件400包括:通信单元401和处理单元402。
在一个实现方式中,在访问组件400具有通信设备A中的访问组件A的功能的情况下:
通信单元401,用于获取通信设备A的处理器A传输的消息;其中,消息中包含第一地址和第二地址,第一地址用于指示目标数据在虚拟硬件设备中的存储位置,第二地址用于指示目标数据在处理器的内存中的存储位置,虚拟硬件设备由至少一个硬件设备组成;
处理单元402,用于当确定第一地址指示的存储位置属于通信设备B的目标硬件设备时,根据第一映射表,将消息中的第二地址转换为第三地址,第三地址用于指示目标硬件设备,第一映射表用于记录第二地址与目标硬件设备的指示信息之间的映射关系;和根据第一地址,确定第四地址,第四地址用于指示目标数据在目标硬件设备中的存储位置;
通信单元401,还用于:向通信设备B的访问组件B发送第一报文,第一报文中包含第三地址和第四地址,以使第二访问组件根据第三地址和第四地址读取或写入目标数据。
在一个实现方式中,在访问组件400具有通信设备B中的访问组件B的功能的情况下:
通信单元401,用于接收通信设备A中的访问组件A发送的第一报文;其中,第一报文中包含第三地址和第四地址,第三地址用于指示属于第二通信设备的目标硬件设备,第四地址用于指示目标数据在目标硬件设备的中的存储位置;
处理单元402,用于确定第三地址指示的目标硬件设备;
通信单元402,还用于向目标硬件设备传输包含第三地址和第四地址的第一消息,以使目标硬件设备根据第三地址和第四地址读取或写入目标数据。
可选地,访问组件400既具有上述访问组件A的功能,又具有上述访问组件B的功能。
可选地,通信单元401可以包含通信端口和通信接口。其中,通信端口用于实现访问组件400与访问组件400所在的通信设备内部其他部件的通信。通信接口用于实现访问组件400与其他通信设备的访问组件之间的通信。
应理解的是,本申请实施例访问组件400所在的通信设备可以对应图1a所示的通信系统中的任一通信设备。本申请实施例的访问组件400可以通过专用集成电路(application-specific integrated circuit,ASIC)实现,或可编程逻辑器件(programmable logic device,PLD)实现,上述PLD可以是复杂程序逻辑器件(complexprogrammable logical device,CPLD),现场可编程门阵列(field-programmable gatearray,FPGA),通用阵列逻辑(generic array logic,GAL),或片上系统(System on achip,SOC)或其任意组合。另外,访问组件400也可以通过软件实现图2或图3所示的方法,此时,访问组件400及其各个单元也可以为软件模块。
根据本申请实施例的访问组件400可对应于执行本申请实施例中描述的方法,并且该访问组件400中的各个单元的上述和其它操作和/或功能分别为了实现图2或图3中的各个方法的相应流程,为了简洁,在此不再赘述。
本申请实施例提供了一种访问组件,在该访问组件所在的通信设备为应用设备时,该访问组件在确定需要向在向其他资源设备中的目标硬件设备传输消息时,可以将消息中的虚拟硬件设备的存储地址转换为该目标硬件设备的存储地址,并将消息中的处理器的内存的存储地址转换为指示该目标硬件设备的存储地址。这样,当在资源设备中的访问组件收到该消息后,就可以不通过该资源设备内的处理器进行操作,而是直接根据指示该目标硬件设备的存储地址,向该目标硬件设备传输该消息,从而使该目标硬件设备可以根据该目标硬件设备的存储地址、指示的该硬件设备的存储地址,完成读取或写入目标数据的操作。显然,该访问组件可以节省资源设备中的处理器的计算资源,也可以降低应用设备对位于其他通信设备的硬件设备的访问延迟。
在该访问组件所在的通信设备为资源设备时,该访问组件在接收到其他访问组件传输的消息后,直接根据指示目标硬件设备的存储地址,确定该消息的向该目标硬件设备传输,从而使该目标硬件设备可以根据该目标硬件设备的存储地址、指示该硬件设备的存储地址,完成读取或写入目标数据的操作。显然,该访问组件可以节省资源设备中的处理器的计算资源,也可以降低应用设备对位于其他通信设备的硬件设备的访问延迟。
本申请还提供了一种通信设备,该通信设备可以对应图1a所示的通信系统中的任一通信设备,参阅图5所示,该通信设备500中包含:处理器501、访问组件502、至少一个硬件设备503,以及总线504。其中,处理器501、访问组件502,以及至少一个硬件设备503通过总线504连接。访问组件502用于实现图2或图3所示的消息传输方法,具有通信设备A中的访问组件A的功能,和/或,通信设备B中的访问组件B的功能。所述访问组件502中包含通信接口,用于实现与其他通信设备的通信。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘(solid state drive,SSD)。
本申请还提供了一种计算机程序产品,当其在计算机上运行时,使得计算机执行图2或图3所示的消息传输方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (22)
1.一种消息传输方法,其特征在于,所述方法包括:
第一通信设备的第一访问组件获取所述第一通信设备的处理器传输的消息;其中,所述第一通信设备为通信系统中任意一个通信设备,所述通信系统中包括多个通信设备,每个通信设备包含处理器、访问组件和硬件设备,所述消息中包含第一地址和第二地址,所述第一地址用于指示目标数据在虚拟硬件设备中的存储位置,所述第二地址用于指示所述目标数据在所述第一通信设备的处理器的内存中的存储位置,所述虚拟硬件设备由至少一个硬件设备组成;
当所述第一访问组件确定所述第一地址指示的存储位置属于第二通信设备的目标硬件设备时,所述第一访问组件根据第一映射表,将所述消息中的所述第二地址转换为第三地址,所述第三地址用于指示所述目标硬件设备,所述第一映射表用于记录所述第二地址与所述第三地址之间的映射关系;
所述第一访问组件根据所述第一地址,确定第四地址,所述第四地址用于指示所述目标数据在所述目标硬件设备中的存储位置;
所述第一访问组件向所述第二通信设备的第二访问组件发送第一报文,所述第一报文中包含所述第三地址和所述第四地址,以使所述第二访问组件根据所述第三地址和所述第四地址读取或写入所述目标数据。
2.如权利要求1所述的方法,其特征在于,所述第一访问组件确定所述第一地址指示的存储位置属于所述第二通信设备的所述目标硬件设备,包括:
所述第一访问组件根据存储的资源配置信息和所述第一地址,确定所述消息的传输对象为所述第二通信设备的所述目标硬件设备,所述资源配置信息包含所述至少一个硬件设备中每个硬件设备对应的存储地址范围。
3.如权利要求1所述的方法,其特征在于,所述第一通信设备的所述第一访问组件和所述第二通信设备的所述第二访问组件通过网络通信,所述第一报文为网络报文。
4.如权利要求1至3中任一所述的方法,其特征在于,所述第一访问组件在根据所述第一映射表,将所述第二地址转换为第三地址之前,还包括:
所述第一访问组件确定所述目标硬件设备的指示信息;
所述第一访问组件将所述目标硬件设备的指示信息添加至所述第二地址中,得到所述第三地址;
所述第一访问组件根据所述第二地址和所述第三地址生成所述第一映射表。
5.如权利要求1至3中任一所述的方法,其特征在于,所述目标硬件设备的指示信息包括:所述目标硬件设备的标识,和/或,所述第二通信设备中所述目标硬件设备所连接的单板的标识。
6.如权利要求1至3中任一所述的方法,其特征在于,所述第一访问组件为现场可编程门阵列FPGA,所述第二访问组件为FPGA。
7.如权利要求1至3中任一所述的方法,其特征在于,当所述至少一个硬件设备的数量为一个时,所述第四地址与所述第一地址相同;
当所述至少一个硬件设备的数量为多个时,所述第一访问组件根据所述第一地址,确定所述第四地址,包括:
所述第一访问组件根据第二映射表,将所述第一地址转换为所述第四地址,所述第二映射表用于描述:指示所述虚拟硬件设备的存储位置的存储地址与指示所述目标硬件设备的存储位置的存储地址之间的映射关系。
8.一种消息传输方法,其特征在于,所述方法包括:
第二通信设备的第二访问组件接收第一通信设备中的第一访问组件发送的第一报文;其中,所述第二通信设备为通信系统中任意一个通信设备,所述通信系统中包括多个通信设备,每个通信设备包括处理器、访问组件和硬件设备,所述第一报文中包含第三地址和第四地址;
其中,所述第三地址由所述第一访问组件确定第一地址指示的存储位置属于所述第二通信设备的目标硬件设备时,根据第一映射表将第二地址进行转换得到的,所述第一地址用于指示目标数据在虚拟硬件设备中的存储位置,所述第二地址用于指示所述目标数据在所述第一通信设备的处理器的内存中的存储位置,所述第一映射表用于记录所述第二地址与所述第三地址之间的映射关系,所述第三地址用于指示属于所述第二通信设备的目标硬件设备;所述第四地址为所述第一访问组件根据所述第一地址确定的,所述第四地址用于指示所述目标数据在所述目标硬件设备中的存储位置;所述第二访问组件确定所述第三地址指示的所述目标硬件设备;
所述第二访问组件向所述目标硬件设备传输包含第三地址和所述第四地址的第一消息,以使所述目标硬件设备根据所述第三地址和所述第四地址读取或写入所述目标数据。
9.如权利要求8所述的方法,其特征在于,所述第二通信设备的所述第二访问组件和所述第一通信设备的所述第一访问组件通过网络通信,所述第一报文为网络报文。
10.如权利要求8或9所述的方法,其特征在于,所述第一访问组件为现场可编程门阵列FPGA,所述第二访问组件为FPGA。
11.一种第一访问组件,其特征在于,所述第一访问组件应用于第一通信设备,所述第一通信设备为通信系统中任意一个通信设备,所述通信系统中包括多个通信设备,每个通信设备包含处理器、访问组件和硬件设备,所述第一访问组件包括:
通信单元,用于获取所述第一通信设备的处理器传输的消息;其中,所述消息中包含第一地址和第二地址,所述第一地址用于指示目标数据在虚拟硬件设备中的存储位置,所述第二地址用于指示所述目标数据在所述第一通信设备的处理器的内存中的存储位置,所述虚拟硬件设备由至少一个硬件设备组成;
处理单元,用于当确定第一地址指示的存储位置属于第二通信设备的目标硬件设备时,根据第一映射表,将所述消息中的所述第二地址转换为第三地址,所述第三地址用于指示所述目标硬件设备,所述第一映射表用于记录所述第二地址与所述目标硬件设备的指示信息之间的映射关系;和根据所述第一地址,确定第四地址,所述第四地址用于指示所述目标数据在所述目标硬件设备中的存储位置;
所述通信单元,还用于:向所述第二通信设备的第二访问组件发送第一报文,所述第一报文中包含所述第三地址和所述第四地址,以使所述第二访问组件根据所述第三地址和所述第四地址读取或写入所述目标数据。
12.如权利要求11所述的第一访问组件,其特征在于,所述处理单元,在确定所述第一地址指示的存储位置属于所述第二通信设备的所述目标硬件设备时,具体用于:
根据存储的资源配置信息和所述第一地址, 确定所述消息的传输对象为所述第二通信设备的所述目标硬件设备,所述资源配置信息包含所述至少一个硬件设备中每个硬件设备对应的存储地址范围。
13.如权利要求11所述的第一访问组件,其特征在于,所述第一通信设备的所述第一访问组件和所述第二通信设备的所述第二访问组件通过网络通信,所述第一报文为网络报文。
14.如权利要求11至13中任一所述的第一访问组件,其特征在于,所述处理单元,还用于:
在根据所述第一映射表,将所述第二地址转换为第三地址之前,确定所述目标硬件设备的指示信息;
将所述目标硬件设备的指示信息添加至所述第二地址中,得到所述第三地址;
根据所述第二地址和所述第三地址生成所述第一映射表。
15.如权利要求11至13中任一所述的第一访问组件,其特征在于,所述目标硬件设备的指示信息包括:所述目标硬件设备的标识,和/或,所述第二通信设备中所述目标硬件设备所连接的单板的标识。
16.如权利要求11至13中任一所述的第一访问组件,其特征在于,所述第一访问组件为现场可编程门阵列FPGA,所述第二访问组件为FPGA。
17.如权利要求11至13中任一所述的第一访问组件,其特征在于,当所述至少一个硬件设备的数量为一个时,所述第四地址与所述第一地址相同;
当所述至少一个硬件设备的数量为多个时,所述处理单元,在根据所述第一地址,确定所述第四地址时,具体用于:
根据第二映射表,将所述第一地址转换为所述第四地址,所述第二映射表用于描述:指示所述虚拟硬件设备的存储位置的存储地址与指示所述目标硬件设备的存储位置的存储地址之间的映射关系。
18.一种第二访问组件,其特征在于,所述第二访问组件应用于第二通信设备,所述第二通信设备为通信系统中任意一个通信设备,所述通信系统中包括多个通信设备,每个通信设备包括处理器、访问组件和硬件设备,所述第二访问组件包括:
通信单元,用于接收第一通信设备中的第一访问组件发送的第一报文;其中,所述第一报文中包含第三地址和第四地址,
其中,所述第三地址由所述第一访问组件确定第一地址指示的存储位置属于所述第二通信设备的目标硬件设备时,根据第一映射表将第二地址进行转换得到的,所述第一地址用于指示目标数据在虚拟硬件设备中的存储位置,所述第二地址用于指示所述目标数据在所述第一通信设备的处理器的内存中的存储位置,所述第一映射表用于记录所述第二地址与所述第三地址之间的映射关系,所述第三地址用于指示属于所述第二通信设备的目标硬件设备,所述第四地址为所述第一访问组件根据所述第一地址确定的,所述第四地址用于指示所述目标数据在所述目标硬件设备中的存储位置;
处理单元,用于确定所述第三地址指示的所述目标硬件设备;
所述通信单元,还用于向所述目标硬件设备传输包含第三地址和所述第四地址的第一消息,以使所述目标硬件设备根据所述第三地址和所述第四地址读取或写入所述目标数据。
19.如权利要求18所述的第二访问组件,其特征在于,所述第二通信设备的所述第二访问组件和所述第一通信设备的所述第一访问组件通过网络通信,所述第一报文为网络报文。
20.如权利要求18或19所述的第二访问组件,其特征在于,所述第一访问组件为现场可编程门阵列FPGA,所述第二访问组件为FPGA。
21.一种通信设备,其特征在于,所述通信设备包括处理器、访问组件和硬件设备,其中,所述访问组件用于实现1至7中任一所述方法。
22.一种通信设备,其特征在于,所述通信设备包括处理器、访问组件和硬件设备,其中,所述访问组件用于实现8至10中任一所述方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810576339.4A CN108984465B (zh) | 2018-06-06 | 2018-06-06 | 一种消息传输方法及设备 |
CN201980000758.6A CN110809760B (zh) | 2018-06-06 | 2019-05-29 | 资源池的管理方法、装置、资源池控制单元和通信设备 |
PCT/CN2019/088918 WO2019233322A1 (zh) | 2018-06-06 | 2019-05-29 | 资源池的管理方法、装置、资源池控制单元和通信设备 |
US17/096,573 US11507426B2 (en) | 2018-06-06 | 2020-11-12 | Resource pool management method and apparatus, resource pool control unit, and communications device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810576339.4A CN108984465B (zh) | 2018-06-06 | 2018-06-06 | 一种消息传输方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108984465A CN108984465A (zh) | 2018-12-11 |
CN108984465B true CN108984465B (zh) | 2021-08-20 |
Family
ID=64540858
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810576339.4A Active CN108984465B (zh) | 2018-06-06 | 2018-06-06 | 一种消息传输方法及设备 |
CN201980000758.6A Active CN110809760B (zh) | 2018-06-06 | 2019-05-29 | 资源池的管理方法、装置、资源池控制单元和通信设备 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980000758.6A Active CN110809760B (zh) | 2018-06-06 | 2019-05-29 | 资源池的管理方法、装置、资源池控制单元和通信设备 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11507426B2 (zh) |
CN (2) | CN108984465B (zh) |
WO (1) | WO2019233322A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108984465B (zh) | 2018-06-06 | 2021-08-20 | 华为技术有限公司 | 一种消息传输方法及设备 |
CN110022356B (zh) * | 2019-03-08 | 2021-11-30 | 北京三快在线科技有限公司 | 分布式系统和具有该分布式系统的无人驾驶设备 |
US11200193B2 (en) * | 2019-03-14 | 2021-12-14 | Marvell Asia Pte, Ltd. | Transferring data between solid state drives (SSDs) via a connection between the SSDs |
CN111464357A (zh) * | 2020-04-01 | 2020-07-28 | 武汉虹旭信息技术有限责任公司 | 资源配置方法及装置 |
CN111506432A (zh) * | 2020-04-30 | 2020-08-07 | 中科院计算所西部高等技术研究院 | 具有ooda多分区io资源池机制的服务器主机 |
CN112465371B (zh) * | 2020-12-07 | 2024-01-05 | 中国工商银行股份有限公司 | 一种资源数据分配方法、装置及设备 |
CN113010470B (zh) * | 2021-03-30 | 2023-06-20 | 上海西井信息科技有限公司 | 边缘节点远程控制系统、方法、设备及存储介质 |
EP4335212A1 (en) * | 2021-05-06 | 2024-03-13 | Nokia Technologies Oy | Apparatus, method, and computer program |
CN113485789B (zh) * | 2021-06-30 | 2023-03-21 | 海光信息技术股份有限公司 | 资源配置方法、装置及计算机架构 |
US20230229751A1 (en) * | 2022-01-18 | 2023-07-20 | Dell Products, L.P. | Method and Apparatus for Establishing Trusted PCIe Resource Sharing |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105518611A (zh) * | 2014-12-27 | 2016-04-20 | 华为技术有限公司 | 一种远程直接数据存取方法、设备和系统 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4899643B2 (ja) * | 2006-05-31 | 2012-03-21 | 富士通株式会社 | ネットワーク構成装置 |
US20100174841A1 (en) * | 2008-12-31 | 2010-07-08 | Zohar Bogin | Providing multiple virtual device controllers by redirecting an interrupt from a physical device controller |
CN102651729A (zh) * | 2011-02-23 | 2012-08-29 | 中国移动通信集团公司 | 一种资源配置方法和装置 |
CN104580338B (zh) * | 2013-10-29 | 2018-09-07 | 华为技术有限公司 | 一种业务处理方法、系统及设备 |
US10149280B2 (en) * | 2014-01-21 | 2018-12-04 | Qualcomm Incorporated | Device-to-device discovery signaling for radio resource allocation |
US9883513B2 (en) | 2014-03-19 | 2018-01-30 | Qualcomm Incorporated | Scheduling of device-to-device scheduling assignment for mode1 |
KR20150124298A (ko) * | 2014-04-28 | 2015-11-05 | 삼성전자주식회사 | 무선 통신 시스템에서 무선 자원 제어 연결을 관리하는 장치 및 방법 |
KR101977726B1 (ko) * | 2015-11-17 | 2019-05-14 | 한국전자통신연구원 | 가상 데스크탑 서비스 방법 및 장치 |
CN105511810A (zh) * | 2015-12-07 | 2016-04-20 | 中国建设银行股份有限公司 | 一种虚拟化资源池的控制方法和装置 |
US10262390B1 (en) * | 2017-04-14 | 2019-04-16 | EMC IP Holding Company LLC | Managing access to a resource pool of graphics processing units under fine grain control |
CN108984465B (zh) | 2018-06-06 | 2021-08-20 | 华为技术有限公司 | 一种消息传输方法及设备 |
-
2018
- 2018-06-06 CN CN201810576339.4A patent/CN108984465B/zh active Active
-
2019
- 2019-05-29 CN CN201980000758.6A patent/CN110809760B/zh active Active
- 2019-05-29 WO PCT/CN2019/088918 patent/WO2019233322A1/zh active Application Filing
-
2020
- 2020-11-12 US US17/096,573 patent/US11507426B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105518611A (zh) * | 2014-12-27 | 2016-04-20 | 华为技术有限公司 | 一种远程直接数据存取方法、设备和系统 |
Also Published As
Publication number | Publication date |
---|---|
US20210064438A1 (en) | 2021-03-04 |
US11507426B2 (en) | 2022-11-22 |
CN110809760A (zh) | 2020-02-18 |
CN108984465A (zh) | 2018-12-11 |
WO2019233322A1 (zh) | 2019-12-12 |
CN110809760B (zh) | 2022-09-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108984465B (zh) | 一种消息传输方法及设备 | |
CN110830392B (zh) | 启用存储介质上的虚拟功能 | |
US11636052B2 (en) | Non-volatile memory express (NVMe) data processing method and system | |
US11121972B2 (en) | Multicast message filtering in virtual environments | |
US9990140B2 (en) | Methods of providing access to I/O devices | |
US9465760B2 (en) | Method and apparatus for delivering MSI-X interrupts through non-transparent bridges to computing resources in PCI-express clusters | |
JP5362980B2 (ja) | データ処理システム内で第1のホスト・システムと第2のホスト・システムとの間で通信するための方法、プログラム、およびシステム(ソケット接続および共用メモリを使用するホスト・システム間の通信のためのシステムおよび方法) | |
US7529860B2 (en) | System and method for configuring an endpoint based on specified valid combinations of functions | |
US11829309B2 (en) | Data forwarding chip and server | |
JP2008165776A (ja) | データ処理システムの複数のルート複合体間の通信のために共用メモリを初期設定するための方法、プログラム、およびシステム(複数のルート複合体全域でエンドポイントを共用するために共用メモリを初期設定するためのシステムおよび方法) | |
US11741039B2 (en) | Peripheral component interconnect express device and method of operating the same | |
US20220300442A1 (en) | Peripheral component interconnect express device and method of operating the same | |
US20240061802A1 (en) | Data Transmission Method, Data Processing Method, and Related Product | |
WO2023221847A1 (zh) | 基于虚拟机设备直通的数据访问方法、设备以及系统 | |
CN109857553B (zh) | 内存管理方法及装置 | |
CN114050998A (zh) | 实现远程直接内存访问的方法、装置、电子设备及介质 | |
WO2023125565A1 (zh) | 网络节点的配置和访问请求的处理方法、装置 | |
CN110688237A (zh) | 转发报文的方法、中间设备和计算机设备 | |
CN116932451A (zh) | 一种数据处理方法、主机及相关设备 | |
CN116680219A (zh) | 主机集群通信系统、方法、设备及存储介质 | |
TW201824016A (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 |