[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

CN115827212A - 数据处理的方法、装置以及系统 - Google Patents

数据处理的方法、装置以及系统 Download PDF

Info

Publication number
CN115827212A
CN115827212A CN202111092828.0A CN202111092828A CN115827212A CN 115827212 A CN115827212 A CN 115827212A CN 202111092828 A CN202111092828 A CN 202111092828A CN 115827212 A CN115827212 A CN 115827212A
Authority
CN
China
Prior art keywords
suq
processor
request
credit value
credit
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
Application number
CN202111092828.0A
Other languages
English (en)
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202111092828.0A priority Critical patent/CN115827212A/zh
Publication of CN115827212A publication Critical patent/CN115827212A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Computer And Data Communications (AREA)

Abstract

本申请提供了一种数据处理的方法、装置以及系统。该方法包括:输入输出IO设备接收第一请求,该第一请求为第一处理器中运行的第一应用程序发送的请求,该第一处理器与该IO设备通过IO网络通信;该IO设备根据提交队列SuQ的入口规则将该第一请求存储在第一SuQ,该入口规则用于指示应用程序与SuQ的对应关系,该第一SuQ存储在该IO设备的存储器中;该IO设备按照发送策略向第二处理器发送该第一请求,该发送策略用于指示该IO设备发送请求的方式,该第二处理器所在的计算机设备与该第一处理器所在的计算机设备不同。该方法有利于降低数据处理的复杂度。

Description

数据处理的方法、装置以及系统
技术领域
本申请涉及存储领域,更具体地,涉及一种数据处理的方法、装置以及系统。
背景技术
目前,处理器中的应用程序发送的数据操作请求(例如,写数据请求),可以通过输入输出(input output,IO)设备(例如,网卡),将该应用程序对应的数据操作请求发送至目的处理器。
在相关技术中,提出了一种基于门铃(doorbell,DB)机制和中断机制的数据处理的方法。基于这种方法可以实现IO设备接收一个处理器中的应用程序发送的数据操作请求,并执行数据操作请求对应的操作(即,将该数据操作请求发送至目的处理器)。但基于这种实现方式,存在数据处理过程复杂的问题。
发明内容
本申请提供了一种数据处理的方法、装置以及系统,该方法有利于降低数据处理的复杂度。
第一方面,提供了一种数据处理的方法,该方法包括:输入输出IO设备接收第一请求,该第一请求为第一处理器中运行的第一应用程序发送的请求,该第一处理器与该IO设备通过IO网络通信;该IO设备根据提交队列SuQ的入口规则将该第一请求存储在第一SuQ,该入口规则用于指示应用程序与SuQ的对应关系,该第一SuQ存储在该IO设备的存储器中;该IO设备按照发送策略向第二处理器发送该第一请求,该发送策略用于指示该IO设备发送请求的方式,该第二处理器所在的计算机设备与该第一处理器所在的计算机设备不同。
上述技术方案中,IO设备能够根据SuQ的入口规则,确定将接收到的第一请求存储在第一SuQ,避免了使用传统技术中的门铃机制,有利于降低数据处理的复杂度。
在一种可能的实现方式中,该第一请求携带该第一SuQ的入口地址,则该IO设备根据提交队列SuQ的入口规则将该第一请求存储在第一SuQ,包括:该IO设备根据该第一SuQ的入口地址将该第一请求存储在该第一SuQ。
上述技术方案中,IO设备能够根据第一请求中携带的第一SuQ的入口地址,准确地确定存储第一请求的SuQ为第一SuQ,实现过程较为简单,有利于降低数据处理的复杂度。
在另一种可能的实现方式中,该IO设备根据提交队列SuQ的入口规则将该第一请求存储在第一SuQ,包括:该IO设备根据该第一应用程序的标识确定该第一SuQ的入口地址;该IO设备根据该入口地址将该第一请求存储至该第一SuQ。
其中,IO设备根据第一应用程序的标识确定第一SuQ的入口地址,可以包括如下步骤:IO设备根据第一应用程序的标识和映射关系确定第一SuQ的入口地址,该映射关系指示应用程序,入口地址和SuQ之间的映射关系,该IO设备的存储空间中存储有该映射关系。
上述技术方案中,IO设备能够根据第一应用程序的标识和映射关系,准确地确定存储第一请求的SuQ为第一SuQ,实现过程较为简单,有利于降低数据处理的复杂度。
在另一种可能的实现方式中,该发送策略包括第一执行队列ExcQ,该第一ExcQ存储在该IO设备的存储器中,该IO设备按照发送策略向第二处理器发送该第一请求之前,该方法还包括:该IO设备将该第一SuQ中存储的该第一请求存储在该第一ExcQ,并删除该第一SuQ中存储的该第一请求。
上述技术方案中,IO设备可以在第一ExcQ缓存未满的情况下,将第一SuQ中存储的第一请求存储在第一ExcQ中,以通过第一ExcQ执行第一请求,这样,有利于避免当第一ExcQ缓存不足导致第一请求丢失的问题。
在另一种可能的实现方式中,在删除该第一SuQ中存储的该第一请求之后之后,该方法还包括:该IO设备对第一信用值进行加1处理,得到第二信用值,该第一信用值用于指示将该第一请求存储在该第一SuQ后该第一SuQ能够处理的请求的最大数量。
上述技术方案中,IO设备将第一SuQ中存储的第一请求提交至第一ExcQ后,会实时更新第一SuQ的信用值。
在另一种可能的实现方式中,在该IO设备根据提交队列SuQ的入口规则将该第一请求存储在第一SuQ之后,该方法还包括:该IO设备对第三信用值进行减1处理,得到第一信用值,该第三信用值用于指示将该第一请求存储在该第一SuQ前该第一SuQ能够处理的请求的最大数量。
上述技术方案中,IO设备将第一请求存储至第一SuQ后,会实时更新第一SuQ的信用值。
在另一种可能的实现方式中,该第一处理器的存储器中存储有第一信用,该第一信用包括该第三信用值,该方法还包括:该IO设备接收该第一处理器发送的第一消息,该第一消息用于指示该第一SuQ的信用值为该第三信用值;该IO设备向该第一处理器发送第二消息,该第二消息用于指示将该第三信用值更新为该第一信用值或该第二信用值。
在另一种可能的实现方式中,该IO设备的IO空间中存储有第一信用,该第一信用包括该第三信用值,该方法还包括:该IO设备向该第一处理器发送第三消息,该第三消息用于指示该第一SuQ的信用值为该第一信用值,或该第三消息用于指示该第一SuQ的信用值为该第二信用值。
在另一种可能的实现方式中,该第一信用还包括第一阈值,该第一阈值用于指示该第一SuQ的队列深度。
在另一种可能的实现方式中,在该IO设备接收该第一请求之前,该方法还包括:该IO设备接收该第一处理器发送的第四消息,该第四消息用于指示在该IO设备的存储器中创建该第一SuQ,并记录该第一SuQ的标识和该第一SuQ存储在该IO设备的存储器中的地址之间的关联关系。
在另一种可能的实现方式中,该IO设备包括网络接口控制器、智能网络接口控制器、主机总线适配器、主机通道适配器、加速器、数据处理器、图像处理器、人工智能设备、软件定义基础设施中的至少一种。
在另一种可能的实现方式中,该IO网络包括高速串行计算机扩展总线标准PCIe,内存互联CXL,统一总线Ubus中任意一种。
第二方面,提供了一种数据处理的方法,该方法包括:第一处理器获取第一请求,该第一请求为该第一处理器中运行的第一应用程序发送的请求;响应于满足预设条件,该第一处理器向输入输出IO设备发送该第一请求,该第一处理器与该IO设备通过IO网络通信。
上述技术方案中,第一处理器确定满足预设条件后,能够直接将获取的第一请求发送给IO设备,避免了使用传统技术中的门铃机制,有利于降低数据处理的复杂度。
在一种可能的实现方式中,该第一请求携带第一提交队列SuQ的入口地址,该第一SuQ存储在该IO设备的存储器中,该方法还包括:该第一处理器根据映射关系确定该第一SuQ的入口地址,该映射关系用于指示应用程序,入口地址和SuQ之间的映射关系。
上述技术方案中,第一处理器能够根据映射关系确定第一SuQ的入口地址,实现方式较为简单,有利于降低数据处理的复杂度。
在另一种可能的实现方式中,该满足预设条件包括:第三信用值大于第二阈值,该第三信用值用于指示将该第一请求存储在该第一SuQ前该第一SuQ能够处理的请求的最大数量。
上述技术方案中,第一处理器在确定当前第一SuQ的信用值(即,第三信用值)大于第二阈值的情况下,才会向IO设备发送第一请求,这样,有利于避免由于IO设备处理能力不足(例如,第一SuQ缓存已满),导致第一请求丢失的问题。
在另一种可能的实现方式中,该第一处理器的存储器中存储有第一信用,该第一信用包括该第三信用值,该方法还包括:该第一处理器向该IO设备发送第一消息,该第一消息用于指示该第一SuQ的信用值为该第三信用值;该第一处理器接收该IO设备发送的第二消息,该第二消息用于指示将该第三信用值更新为第一信用值或第二信用值,该第一信用值用于指示将该第一请求存储在该第一SuQ后该第一SuQ能够处理的请求的最大数量,该第二信用值用于指示将该第一请求从该第一SuQ删除后该第一SuQ能够处理的请求的最大数量;该第一处理器将该第三信用值更新为该第一信用值或该第二信用值。
上述技术方案中,第一处理器的存储器中存储有第一信用值,当第一SuQ的信用值发生变化后,第一处理器会根据接收到的消息动态更新第一SuQ的信用值,这样,有利于第一处理器能够准确的获取当前第一SuQ的信用值。
在另一种可能的实现方式中,该IO设备的IO空间中存储有第一信用,该第一信用包括该第三信用值,该方法还包括:该第一处理器接收该IO设备发送的第三消息,该第三消息用于指示该第一SuQ的信用值为以下任意一种信用值:该第一信用值,该第二信用值或该第三信用值。
上述技术方案中,IO设备的IO空间中存储有第一信用值,第一处理器能够从IO设备处获取当前第一SuQ的信用值,这样,有利于第一处理器能够准确的获取当前第一SuQ的信用值。
在另一种可能的实现方式中,该第一信用还包括第一阈值,该第一阈值用于指示该第一SuQ的队列深度。
在另一种可能的实现方式中,该IO设备包括网络接口控制器、智能网络接口控制器、主机总线适配器、主机通道适配器、加速器、数据处理器、图像处理器、人工智能设备、软件定义基础设施中的至少一种。
在另一种可能的实现方式中,该IO网络包括高速串行计算机扩展总线标准PCIe,内存互联CXL,统一总线Ubus中任意一种。
第三方面,提供了一种数据处理的装置,应用于输入输出IO设备,该装置包括:收发单元,用于接收第一请求,该第一请求为第一处理器中运行的第一应用程序发送的请求,该第一处理器与该IO设备通过IO网络通信;处理单元,用于根据提交队列SuQ的入口规则将该第一请求存储在第一SuQ,该入口规则用于指示应用程序与SuQ的对应关系,该第一SuQ存储在该IO设备的存储器中;该收发单元还用于:按照发送策略向第二处理器发送该第一请求,该发送策略用于指示该IO设备发送请求的方式,该第二处理器所在的计算机设备与该第一处理器所在的计算机设备不同。
在一种可能的实现方式中,该第一请求携带该第一SuQ的入口地址,该处理单元还用于:根据该第一SuQ的入口地址将该第一请求存储在该第一SuQ。
在另一种可能的实现方式中,该处理单元还用于:根据该第一应用程序的标识确定该第一SuQ的入口地址;根据该入口地址将该第一请求存储至该第一SuQ。
在另一种可能的实现方式中,该发送策略包括第一执行队列ExcQ,该第一ExcQ存储在该IO设备的存储器中,该处理单元还用于:按照该发送策略将该第一SuQ中存储的该第一请求存储在该第一ExcQ;该收发单元还用于:通过该第一ExcQ向该第二处理器发送该第一请求。
在另一种可能的实现方式中,该处理单元还用于:对第一信用值进行加1处理,得到第二信用值,该第一信用值用于指示将该第一请求存储在该第一SuQ后该第一SuQ能够处理的请求的最大数量。
在另一种可能的实现方式中,该处理单元还用于:对第三信用值进行减1处理,得到第一信用值,该第三信用值用于指示将该第一请求存储在该第一SuQ前该第一SuQ能够处理的请求的最大数量。
在另一种可能的实现方式中,该第一处理器的存储器中存储有第一信用,该第一信用包括该第三信用值,该收发单元还用于:接收该第一处理器发送的第一消息,该第一消息用于指示该第一SuQ的信用值为该第三信用值;向该第一处理器发送第二消息,该第二消息用于指示将该第三信用值更新为该第一信用值或该第二信用值。
在另一种可能的实现方式中,该IO设备的IO空间中存储有第一信用,该第一信用包括该第三信用值,该收发单元还用于:向该第一处理器发送第三消息,该第三消息用于指示该第一SuQ的信用值为该第一信用值,或该第三消息用于指示该第一SuQ的信用值为该第二信用值。
在另一种可能的实现方式中,该第一信用还包括第一阈值,该第一阈值用于指示该第一SuQ的队列深度。
在另一种可能的实现方式中,该IO设备包括网络接口控制器、智能网络接口控制器、主机总线适配器、主机通道适配器、加速器、数据处理器、图像处理器、人工智能设备、软件定义基础设施中的至少一种。
在另一种可能的实现方式中,该IO网络包括高速串行计算机扩展总线标准PCIe,内存互联CXL,统一总线Ubus中任意一种。
第四方面,提供了一种数据处理的装置,应用于第一处理器,该装置包括:处理单元,用于获取第一请求,该第一请求为该第一处理器中运行的第一应用程序发送的请求;该处理单元还用于确定满足预设条件;收发单元,用于响应于满足预设条件,向输入输出IO设备发送该第一请求,该第一处理器与该IO设备通过IO网络通信。
在一种可能的实现方式中,该第一请求携带第一提交队列SuQ的入口地址,该第一SuQ存储在该IO设备的存储器中,该处理单元还用于:根据映射关系确定该第一SuQ的入口地址,该映射关系用于指示应用程序,入口地址和SuQ之间的映射关系。
在另一种可能的实现方式中,该满足预设条件包括:第三信用值大于第二阈值,该第三信用值用于指示将该第一请求存储在该第一SuQ前该第一SuQ能够处理的请求的最大数量。
在另一种可能的实现方式中,该第一处理器的存储器中存储有第一信用,该第一信用包括该第三信用值,该收发单元还用于:向该IO设备发送第一消息,该第一消息用于指示该第一SuQ的信用值为该第三信用值;接收该IO设备发送的第二消息,该第二消息用于指示将该第三信用值更新为第一信用值或第二信用值,该第一信用值用于指示将该第一请求存储在该第一SuQ后该第一SuQ能够处理的请求的最大数量,该第二信用值用于指示将该第一请求从该第一SuQ删除后该第一SuQ能够处理的请求的最大数量;该处理单元还用于将该第三信用值更新为该第一信用值或该第二信用值。
在另一种可能的实现方式中,该IO设备的IO空间中存储有第一信用,该第一信用包括该第三信用值,该收发单元还用于:接收该IO设备发送的第三消息,该第三消息用于指示该第一SuQ的信用值为以下任意一种信用值:该第一信用值,该第二信用值或该第三信用值。
在另一种可能的实现方式中,该第一信用还包括第一阈值,该第一阈值用于指示该第一SuQ的队列深度。
在另一种可能的实现方式中,该IO设备包括网络接口控制器、智能网络接口控制器、主机总线适配器、主机通道适配器、加速器、数据处理器、图像处理器、人工智能设备、软件定义基础设施中的至少一种。
在另一种可能的实现方式中,该IO网络包括高速串行计算机扩展总线标准PCIe,内存互联CXL,统一总线Ubus中任意一种。
第五方面,提供了一种IO设备,该IO设备具有实现上述第三方面所描述的数据处理的装置的功能。该功能可以基于硬件实现,也可以基于硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
在一种可能的实现方式中,IO设备的结构中包括处理器,该处理器被配置为支持IO设备执行上述方法中相应的功能。
该IO设备还可以包括存储器,该存储器用于与处理器耦合,其保存IO设备必要的程序指令和数据。
在另一种可能的实现方式中,该IO设备包括:处理器、发送器、接收器、随机存取存储器、只读存储器以及总线。其中,处理器通过总线分别耦接发送器、接收器、随机存取存储器以及只读存储器。其中,当需要运行IO设备时,通过固化在只读存储器中的基本输入/输出系统或者嵌入式系统中的bootloader引导系统进行启动,引导IO设备进入正常运行状态。在IO设备进入正常运行状态后,在随机存取存储器中运行应用程序和操作系统,使得该处理器执行第一方面或第一方面的任意可能的实现方式中的方法。
第六方面,提供了一种第一处理器,该第一处理器具有实现上述第四方面所描述的数据处理的装置的功能。该功能可以基于硬件实现,也可以基于硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
在一种可能的实现方式中,第一处理器支持执行上述方法中相应的功能。
该第一处理器还可以包括存储器,该存储器用于与处理器耦合,其保存第一处理器必要的程序指令和数据。
在另一种可能的实现方式中,该第一处理器包括:发送器、接收器、随机存取存储器、只读存储器以及总线。其中,处理器通过总线分别耦接发送器、接收器、随机存取存储器以及只读存储器。其中,当需要运行第一处理器时,通过固化在只读存储器中的基本输入/输出系统或者嵌入式系统中的bootloader引导系统进行启动,引导第一处理器进入正常运行状态。在第一处理器进入正常运行状态后,在随机存取存储器中运行应用程序和操作系统,使得该处理器执行第二方面或第二方面的任意可能的实现方式中的方法。
第七方面,提供了一种计算机程序产品,该计算机程序产品包括:计算机程序代码,当该计算机程序代码在计算机上运行时,使得计算机执行上述第一方面或第二方面,以及上述第一方面或第二方面的任一种可能执行的方法。
第八方面,提供了一种计算机可读介质,该计算机可读介质存储有程序代码,当该计算机程序代码在计算机上运行时,使得计算机执行上述第一方面或第二方面,以及上述第一方面或第二方面的任一种可能执行的方法。这些计算机可读存储包括但不限于如下的一个或者多个:只读存储器(read-only memory,ROM)、可编程ROM(programmable ROM,PROM)、可擦除的PROM(erasable PROM,EPROM)、Flash存储器、电EPROM(electricallyEPROM,EEPROM)以及硬盘驱动器(hard drive)。
第九方面,提供一种芯片系统,该芯片系统包括处理器与数据接口,其中,处理器通过该数据接口读取存储器上存储的指令,以执行上述第一方面或第二方面,以及上述第一方面或第二方面的任意一种可能的实现方式中的方法。在具体实现过程中,该芯片系统可以以中央处理器(central processing unit,CPU)、微控制器(micro controller unit,MCU)、微处理器(micro processing unit,MPU)、数字信号处理器(digital signalprocessing,DSP)、片上系统(system on chip,SoC)、专用集成电路(application-specific integrated circuit,ASIC)、现场可编程门阵列(field programmable gatearray,FPGA)或可编辑逻辑器件(programmable logic device,PLD)的形式实现。
第十方面,提供了一种数据处理的系统,该系统包括如上述第三方面所述的数据处理的装置和上述第四方面所述的数据处理的装置。
本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
附图说明
图1是适用于本申请实施例的一种系统架构100的示意图。
图2是本申请实施例提供的一种数据处理的方法200的示意性流程图。
图3是本申请实施例提供的应用程序,入口地址和SuQ的映射关系的示意图。
图4是本申请实施例提供的一种数据处理的方法200的示意性流程图。
图5是本申请实施例提供的一种数据处理的装置500的示意性结构图。
图6是本申请实施例提供的一种数据处理的装置2000的硬件结构示意图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
图1是适用于本申请实施例的一种系统架构100的示意图。如图1所示,系统架构100中包括但不限于多个计算机设备,图1以第一计算机设备1和第二计算机设备2为例进行说明,其中,第一计算机设备1和第二计算机设备2通过外部网络130通信。具体地,第一计算机设备1包括第一处理器110,第一存储器111和IO设备120(又称为处理器的外围设备),其中,IO设备120又包括第三处理器1201,第二存储器121和IO空间122,第二存储器121和IO空间122通过内部总线通信,例如,快速路径互连(quick path interconnect,QPI)。其中,第一处理器110与IO设备120之间可以但不限于使用如下协议通信:高速串行计算机扩展总线标准(peripheral component interconnect express,PCIe),计算机快速互联(computeexpress link,CXL)协议,或用于加速器的缓存一致互联(CCIX)协议,或者统一总线(uniform bus,UB或Ubus)。第二计算机设备2包括第二处理器210,可选的,第二计算机设备2中还可以包括存储器等。
第一处理器110可以是中央处理单元(central processing unit,CPU)实现,也可以通过专用集成电路(application-specific integrated circuit,ASIC)实现,或可编程逻辑器件(programmable logic device,PLD)实现,上述PLD可以是复杂程序逻辑器件(complex programmable logical device,CPLD),现场可编程门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。
IO设备120是指可以与第一处理器110进行数据传输的硬件,用于接收和执行第一处理器110发送的待处理请求。IO设备120可以为网络接口控制器(network interfacecontroller,NIC)、智能NIC(smart-NIC)、主机总线适配器(host bus adapter,HBA)、主机通道适配器(host channel adaptor,HCA)、加速器(accelerator)、数据处理器(dataprocessing unit,DPU)、图像处理器(graphics processing unit,GPU)、人工智能(artificial intelligence,AI)设备、软件定义基础设施(software definedinfrastructure,SDI)等中的至少一种。
在系统架构100中,第一处理器110可寻址的地址空间包括:第一存储器111,具体为IO空间112和IO空间122(即,IO设备120的存储区域中允许处理器访问的地址空间)。例如IO空间122可以为IO设备120中基地址寄存器的地址空间(base address register,BAR)。在本申请实施例中,基于地址映射的方式可以将IO空间122映射到第一处理器110可以识别的IO空间112中,这样,第一处理器110就可以通过访问IO空间112来访问IO设备120的IO空间122,以实现获取存储在IO空间122中的信息。
本申请实施例中,第一处理器110可以为中央处理单元(central process unit,CPU),该第一处理器110还可以是其他通用处理器、数字信号处理器(digital signalprocessor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。该第一处理器110还可以为一种片上芯片(system of chip,SoC)或者嵌入式处理器。该第一处理器110支持发送容量至少64字节的PCIe报文。该第一处理器110可以实现内存管理单元(memory management unit,MMU)的功能(即,将虚拟地址映射成物理地址),以及输入输出内存管理单元(input output memory management unit,IOMMU)的功能(即,将物理地址映射成虚拟地址)。第一存储器111,IO空间112,第二存储器121可以由随机存取器(random access memory,RAM),双倍速率同步动态随机存储器(double data ratesynchronous dynamic random access memory,DDR)或其他存储介质实现。本申请实施例中,IO设备120可以不但不限于是:网络接口控制器(network interface controller,NIC),处理器总线适配器(host bus adapter,HBA),处理器通道适配器(host channeladapter,HCA),加速器(accelerator)。对外部网络130的网络类型不作具体限定,例如外部网络130可以但不限于是网际互联协议(internet protocol,IP)网络。
应理解,图1所示的系统架构100仅为示意,并不对本申请实施例适用的系统架构构成任何限定。图1所示的系统架构100中仅以一个第一计算机设备1通过外部网络130与一个第二计算机设备2通信为例示出,可选的,系统架构100中还可以包括更多(例如,2个,3个或4个等)数目的第二计算机设备2。
在相关技术中,提出了一种基于门铃(doorbell,DB)机制和中断机制的数据处理的方法,基于这种方法可以实现IO设备接收处理器中的应用程序发送的数据操作请求,并执行数据操作请求对应的操作。下面,具体介绍这种技术。
处理器在该处理器的存储器中创建IO提交队列(submission queue,SuQ)和IO完成队列(complete queue,CQ)。其中,IO提交队列是一个用于存储待IO设备执行的一个或多个数据操作请求(又称为,提交队列元素(submission queue element,SuQE))的环形缓冲区。IO完成队列则是一个用于存放IO设备己完成数据操作请求的操作结果的环形缓冲区。每个IO提交队列对应一个IO完成队列,同一个IO完成队列可以对应多个IO提交队列。IO完成队列和IO提交队列由处理器指定匹配关系,每个IO提交队列中待执行数据操作请求的操作结果都会存储至一个指定IO完成队列中。基于此,数据处理的具体过程包括:当处理器接收到处理器应用程序发送的一个或多个待执行数据操作请求时,首先,处理器将其存储至IO提交队列;然后,处理器更新IO提交队列尾门铃寄存器(位于IO设备的存储器中),通过门铃(采用4字节(Byte)或8Byte实现)通知IO设备有待执行数据操作请求;IO设备通过直接内存存取(direct memory access,DMA)读的方式获取IO提交队列中待执行数据操作请求;IO设备在处理完成上述数据操作请求后,再通过DMA写的方式将操作结果存储至一个IO完成队列,该IO完成队列是与IO设备获取数据操作请求的IO接收队列匹配的IO完成队列。IO设备每次向IO提交队列中存储数据操作请求的操作结果时,都会先向处理器发送中断请求,以通知处理器己完成一条数据操作请求。上述过程需要处理器和IO设备利用门铃机制和中断方式通知对方,存在数据处理过程复杂。
本申请实施例提供了一种数据处理的方法,该方法有利于降低数据处理的复杂度。
图2是本申请实施例提供的一种数据处理的方法200的示意性流程图。如图2所示,该方法200包括步骤210至步骤230。示例性的,当该方法200应用于上述图1所示的系统架构100时,该方法200中的第一处理器可以是图1中的第一处理器110,第一处理器的存储器对应的存储空间包括:第一存储器111中除IO空间112和IO空间122以外的存储空间,第一处理器的IO空间可以是IO空间112。该方法200中的IO设备可以是图1中的IO设备120,IO设备的存储器可以是图1中的第二存储器121,IO设备的IO空间可以是IO空间112。下面,具体介绍步骤210至步骤230。
步骤210,响应于满足预设条件,第一处理器向IO设备发送第一请求,第一请求为第一处理器中运行的第一应用程序发送的请求,第一处理器与IO设备通过IO网络通信。相应地,IO设备接收到第一处理器发送的第一请求。
在一些实现方式中,第一请求携带第一提交队列SuQ的入口地址,第一SuQ存储在IO设备的存储器中,第一SuQ的入口地址是IO设备的IO空间中的地址。其中,第一SuQ可以存储在IO设备的存储器的固定内存(pinned memory)中,也可以存储在IO设备的存储器的非固定内存(non-pinned memory)中。上述步骤210中,满足预设条件包括:第三信用值大于第二阈值,第三信用值指示将第一请求存储在第一SuQ前第一SuQ能够处理的请求的最大数量。对第二阈值的大小不作具体限定,例如第二阈值可以是系统默认的值,如第二阈值等于1,2,3,4或10等。又如,还可以根据应用程序的类型设置第二阈值的大小。
可选的,第一请求还可以携带请求的数据的信息,数据的信息包括该存储该数据的位置和该数据的大小等。可选的,第一请求还可以携带用于标识第二处理器的信息,第二处理器是第一请求的目的处理器。
可选的,在上述步骤210之前第一处理器还可以执行如下操作:根据映射关系确定第一SuQ的入口地址,映射关系指示应用程序,入口地址和SuQ之间的映射关系,入口地址即SuQ的入口地址。例如,当映射关系指示应用程序1,入口地址1和SuQ1之间的映射关系时,第一处理器根据获取的第一请求,可以确定该第一请求对应的SuQ1和入口地址1,入口地址1即SuQ1的入口地址。对应用程序,入口地址和SuQ之间的映射关系不作具体限定。示例性的,如图3所示,当第一处理器中仅存在第一应用程序时,上述映射关系可以指示第一应用程序,入口地址和第一SuQ之间的映射关系。当第一处理器中存在第一应用程序和第二应用程序时,上述映射关系可以指示第一应用程序,入口地址和第一SuQ之间的映射关系,以及第二应用程序,入口地址和第一SuQ之间的映射关系。应理解图3仅为示意,并不对上述映射关系构成任何限定。可选的,IO设备的IO空间中还可以包括多个入口地址。可选的,IO设备的存储器中还可以设置有多个SuQ。基于此,映射关系还可以指示多个应用程序,多个入口地址和多个SuQ之间的映射关系。
可选的,在上述步骤210之前还可以包括如下步骤:IO设备接收第一处理器发送的第四消息,第四消息用于指示在IO设备的存储器中创建第一SuQ,并记录第一SuQ的标识和第一SuQ存储在IO设备的存储器中的地址之间的关联关系。可选的,第四消息还指示第一SuQ的队列深度。其中,一个SuQ(例如,第一SuQ)的队列深度,可以理解为该一个SuQ包括的提交队列元素(submission queue element,SuQE)的最大数目。例如,当SuQ1的队列深度为M时,则该SuQ1可以包括M个SuQE,M为正整数。SuQ包括的未被占用的SuQE可以用于存储接收到的请求(例如,读请求或写请求)。
在本申请实施例中,第一处理器的地址空间包括:第一处理器的IO空间和第一处理器的存储器。IO设备的地址空间包括:IO设备的IO空间和IO设备的存储器。其中,IO设备的IO空间是第一处理器可以访问的地址空间。具体实现时,可以基于地址映射的方式,将IO设备的IO空间映射至第一处理器的IO空间,基于此,第一处理器通过访问第一处理器的IO空间以实现对IO设备的IO空间的访问。也就是说,第一处理器能够获取IO设备的IO空间内存储的数据或信息。也就是说,第一处理器可寻址的地址空间包括:第一处理器的IO空间,第一处理器的存储器和IO设备的IO空间。
在本申请实施例中,IO设备包括但不限于网络接口控制器、智能网络接口控制器、主机总线适配器、主机通道适配器、加速器、数据处理器、图像处理器、人工智能设备、软件定义基础设施中的至少一种。第一处理器与IO设备通过IO网络通信,其中IO网络包括但不限于高速串行计算机扩展总线标准PCIe,内存互联CXL,统一总线Ubus中任一一种。统一总线Ubus又可称为统一总线UB。
在本申请实施例中,第一应用程序可以是可信任的应用程序,也可以是不可信任的应用程序。在一个示例中,可以根据是否存在恶意攻击行为来判断一个应用程序是可信任的应用程序或是不可信任的应用程序。例如,在虚拟化场景一般可以认为超级监督者(hypervisor)层是可信的,因为这部分有云业务的提供商负责。又如,虚拟机(virtualmachine,VM)会租给租房使用,可能会有篡改、恶意的攻击行为发生的可能性,所以可以认为虚拟机里的应用程序是不可信任的应用程序。在另一个示例中,可以根据软件质量的好坏判断一个应用程序是可信任的应用程序或是不可信任的应用程序。
步骤220,IO设备根据提交队列SuQ的入口规则将第一请求存储在第一SuQ,入口规则用于指示应用程序与SuQ的对应关系,第一SuQ存储在IO设备的存储器中。
其中,入口规则用于指示应用程序与SuQ的对应关系,对应用程序与SuQ的对应关系不作具体限定。例如,应用程序与SuQ之间可以是一一对应的关系。又如,多个应用程序可以对应一个SuQ。
在本申请实施例中,IO设备根据SuQ的入口规则将第一请求存储在第一SuQ,包括如下两种实现方式:
实现方式一:
第一请求携带第一SuQ的入口地址,则IO设备根据提交队列SuQ的入口规则将第一请求存储在第一SuQ,包括:IO设备根据第一SuQ的入口地址将第一请求存储在第一SuQ。
其中,第一SuQ的入口地址是IO设备的IO空间中的地址。可以理解的是,上述实现方式一中,第一SuQ的入口地址是第一处理器确定的,此后第一处理器向IO设备发送的第一请求中携带第一SuQ的入口地址。
实现方式二:
IO设备根据提交队列SuQ的入口规则将第一请求存储在第一SuQ,包括:IO设备根据第一应用程序的标识确定第一SuQ的入口地址;IO设备根据入口地址将第一请求存储至第一SuQ。
可以理解的是,上述实现方式二中,第一SuQ的入口地址是IO设备确定的。作为示例,IO设备的存储空间中存储有映射关系,映射关系指示应用程序,入口地址和SuQ之间的映射关系。基于此,IO设备可以实现上述方式二中所描述的方法。
可选的,在上述步骤220之后,还可以包括如下步骤:IO设备对第三信用值进行减1处理,得到第一信用值,第三信用值指示将第一请求存储在第一SuQ前第一SuQ能够处理的请求的最大数量。在本申请实施例中,当第一SuQ的信用值发生变化后,可以实时更新第一SuQ的信用值,可以包括如下两种更新方式:
更新方式一:
第一处理器的存储器中存储有第一信用(credit),第一信用包括第三信用值。在IO设备得到第一信用值之后还可以包括如下步骤:IO设备向第一处理器发送第二消息,第二消息指示将第三信用值更新为第一信用值。第一处理器接收IO设备发送的第二消息,第二消息指示将第三信用值更新为第一信用值或第二信用值,第一信用值指示将第一请求存储在第一SuQ后第一SuQ能够处理的请求的最大数量,第二信用值指示将第一请求从第一SuQ删除后第一SuQ能够处理的请求的最大数量;第一处理器将第三信用值更新为第一信用值。
其中上述更新方式一,可以理解为是由第一处理器对第一SuQ的信用值进行更新的。可选的,在IO设备对第三信用值进行减1处理之前,还可以包括如下步骤:IO设备接收第一处理器发送的第一消息,第一消息指示第一SuQ的信用值为第三信用值。
更新方式二:
IO设备的IO空间中存储有第一信用,第一信用包括第三信用值。IO设备对第三信用值进行减1处理,得到第一信用值,即实现了IO设备对IO设备的IO空间中的第一信用值的更新。
其中上述更新方式二,可以理解为是由IO设备对第一SuQ的信用值进行更新的。
可选的,上述第一信用还可以包括第一阈值,第一阈值指示第一SuQ的队列深度。对第一信用存储的具体形式不作限定。例如,可以以信用页(credit page,CP)的形式存储第一信用。又如,还可以以接收环(acceptance ring,AR)的形式存储第一信用。可选的,当IO设备的存储器中设置有多个SuQ时,该多个SuQ与多个信用一一对应,此时,CP中可以存储多个信用。
可选的,在上述步骤220之后,还可以包括如下步骤:IO设备按照接收第一请求的顺序调整第一请求在第一SuQ中的存储位置;或者,IO设备按照第一请求的优先级调整第一请求在第一SuQ中的存储位置。
步骤230,IO设备按照发送策略向第二处理器发送第一请求,发送策略用于指示IO设备发送请求的方式,第二处理器所在的计算机设备与第一处理器所在的计算机设备不同。其中,发送策略包括第一执行队列(execution queue,ExcQ),第一ExcQ存储在IO设备的存储器中。以图3为例,存储第一SuQ的IO设备的存储器中,还可以存储第一ExcQ(图3中未示出)。IO设备按照发送策略向第二处理器发送第一请求之前,还可以执行如下操作:IO设备将第一SuQ中存储的第一请求存储在第一ExcQ,并删除第一SuQ中存储的第一请求。可选的,在一些实现方式中,IO设备的存储器中还可以存储有多个ExcQ,多个ExcQ对应多个目的处理器,多个目的处理器包括第二处理器。
可选的,在删除第一SuQ中存储的第一请求之后,还可以包括如下步骤:IO设备对第一信用值进行加1处理,得到第二信用值,第一信用值指示将第一请求存储在第一SuQ后第一SuQ能够处理的请求的最大数量。此后,还需要将第一信用值更新为第二信用值。将第一信用值更新为第二信用值的更新方式,与将第三信用值更新为第一信用值的更新方式相同,具体可以参见上述步骤220中的相关描述。
可选的,在上述步骤230之后,还可以执行如下操作:IO设备向第一处理器发送第一执行结果,第一执行结果指示成功执行第一请求,或第一执行结果指示未成功执行第一请求。
结合图1举例说明,第二处理器所在的计算机设备与第一处理器所在的计算机设备不同。如图1所示,上述方法200中的第一处理器可以是图1中的第一计算机设备1中的第一处理器110,上述方法200中的第二处理器可以是图1中的第二计算机设备2中的第二处理器210。
应理解,上述图2仅为示意,并不对本申请实施例提供的数据处理的方法构成任何限定。例如,第一处理器还可以向IO设备发送多个请求。例如,IO设备的存储器中还可以存储有多个SuQ。可选的,该多个SuQ还可以与多个服务质量(quality of service,QoS)优先级一一对应。再如,IO设备的存储器中还可以存储有多个ExcQ,多个ExcQ对应多个目的处理器。
在本申请实施例中,IO设备能够根据SuQ的入口规则,确定将接收到的第一请求存储在第一SuQ,避免了使用传统技术中的门铃机制,有利于降低数据处理的复杂度。此外,第一处理器根据第一SuQ的信用值确定确定满足预设条件后,将获取的第一请求发送给IO设备,这样,有利于避免由于IO设备处理能力不足(例如,第一SuQ缓存已满),导致第一请求丢失的问题。
下面结合图4,以在处理器的存储器中创建CP(CP中记录SuQ的信用值),处理器与IO设备基于PCIe协议通信为例,介绍本申请提供的一种数据处理的方法的一个具体实施例。
图4是本申请实施例提供的一种数据处理的方法400的示意性。如图4所示,该方法400包括步骤410至步骤424,下面具体介绍步骤410至步骤424。
示例性的,以上述图1为例,本申请实施例中的处理器1的内存空间1可以包括:上述图1中的第一存储器111中除IO空间112和IO空间122以外的内存空间,处理器1的IO空间1可以是上述图1中的IO空间112。IO设备的内存空间1可以是上述图1中的第二存储器121,IO设备的IO空间2可以是上述图1中的IO空间122。
步骤410,处理器1向IO设备发送消息1,其中消息1包括指示信息1,指示信息1用于指示在IO设备的内存空间2中创建SuQ1。
可选的,在另一些实现方式中,上述消息1还可以包括指示信息2,指示信息2用于指示SuQ1的队列深度。其中,SuQ1的队列深度,可以理解为SuQ1包括的SuQE的数目。具体实现时,当SuQ1的队列深度为M时,SuQ1可以包括M个SuQE,M为正整数。SuQ1包括的未被占用的SuQE可以用于存储接收到的WQE,可以理解的是,当WQE存储至SuQE后,该WQE又可称为SuQE。其中,WQE用于携带数据操作请求(例如,写请求或读请求)。
可选的,在另一些实现方式中,上述指示信息1用于指示在IO设备的内存空间2中创建多个SuQ,该多个SuQ包括SuQ1,该多个SuQ可以对应多个QoS优先级。
在本申请实施例中,处理器1不能直接访问IO设备的内存空间2中的地址空间。其中IO设备的内存空间2,可以理解为是IO设备的存储器对应的地址空间。任意一个SuQ(例如,SuQ1)可以是虚拟队列,也可以是物理队列。当SuQ是虚拟队列时,SuQ将接收到的WQE瞬间提交至对应的ExcQ中,这种实现方式中,可以认为SuQ并不存储WQE。当SuQ是物理队列,SuQ将接收到的WQE会存储在SuQ中,然后在提交至对应的ExcQ中。
步骤411,处理器1在处理器1的内存空间1中创建CP,工作队列(work queue,WQ)1和完成队列(complete queue,CQ)1,其中CP中记录有SuQ1的信用(credit),SuQ1的信用包括信用值1,信用值1用于指示当前SuQ1能够处理的WQE的最大数目,WQ1与CQ1对应。
其中,处理器1的内存空间1,可以理解为处理器1的存储器对应的地址空间。WQ1与CQ1对应,该CQ1用于存放WQ1对应的数据操作请求的操作结果。CP中记录有SuQ1的信用,可以理解为,CP中记录了SuQ1的标识与SuQ1的信用的对应关系,这样,基于CP和SuQ1的标识可以唯一确定SuQ1的信用。
可选的,在另一些实现方式中,SuQ1的信用还包括阈值1,其中阈值1用于指示SuQ1的队列深度,信用值1小于等于阈值1。
步骤412,IO设备在IO设备的内存空间2中创建SuQ1,以及在IO设备的IO空间2中创建门户页(portal page),其中门户页中记录有入口地址1,应用程序1与SuQ1关联,入口地址1是IO空间2中的地址,SuQ1用于接收与SuQ1关联的应用程序1的WQE。
其中,IO设备的IO空间2对应的地址空间是处理器1可以访问的地址空间。具体实现时,可以基于地址映射的方式,将IO空间2中存储的信息(例如但不限于,门户页)映射至处理器1的IO空间1中,此后,处理器1可以通过访问IO空间1以实现获取IO空间2中存储的信息。
上述步骤412中,门户页中记录有入口地址1,应用程序1与SuQ1关联。其中,入口地址1,应用程序1与SuQ关联,又可称为入口地址1,应用程序1与SuQ1存在映射关系。可选的,门户页中还可以记录有:用于标识入口地址1的信息(例如,入口地址1的标识),用于标识应用程序1的信息(例如,应用程序1的标识,或应用程序1的进程标识),用于标识SuQ1的信息(例如,SuQ1的标识)。
在本申请实施例中,一个入口地址,一个应用程序与一个SuQ关联,可以理解为,该一个应用程序对应的所有WQE可以通过该一个入口地址提交至该一个SuQ中。入口地址1,应用程序1与SuQ1关联,也就是说,应用程序1对应的所有WQE可以通过入口地址1提交至SuQ1中。可选的,在另一些实现方式,门户页中还可以记录有一个入口地址,多个应用程序与一个SuQ的对应关系,这种实现方式中,多个应用程序可以共享一个入口地址和一个SuQ。内存空间2对应的内存可以是固定内存(pinned memory),或非固定内存(non-pinned memory)。
在本申请实施例中,对发送数据操作请求的应用程序的类型不作具体限定。例如该应用程序是可信任的应用程序,也可以是不可信任的应用程序。在一个示例中,可以根据是否存在恶意攻击行为来判断一个应用程序是可信任的应用程序或是不可信任的应用程序。例如,在虚拟化场景一般可以认为超级监督者(hypervisor)层是可信的,因为这部分有云业务的提供商负责。又如,虚拟机(virtual machine,VM)会租给租房使用,可能会有篡改、恶意的攻击行为发生的可能性,所以可以认为虚拟机里的应用程序是不可信任的应用程序。在另一个示例中,可以根据软件质量的好坏判断一个应用程序是可信任的应用程序或是不可信任的应用程序。
步骤413,将门户页的地址映射至处理器1的IO空间1。
其中,基于地址映射的方式,可以将门户页的地址映射至处理器1的IO空间1,这样,处理器1可以通过访问IO空间2获取门户页。例如,当存储门户页的地址为物理地址时,处理器1中的IOMMU可以将门户页的地址,映射至IO空间2中的虚拟地址。
步骤414,处理器1获取应用程序1中的进程1的WQE1,并根据从处理器1的IO空间1获取的门户页确定与WQE1关联的入口地址为入口地址1,以及确定与WQE1关联的SuQ为SuQ1。
其中,处理器1获取应用程序1中的进程1的WQE1,可以包括如下步骤:应用程序1的进程1发送工作请求WR1;处理器1将WR1提交至处理器1的工作队列WQ1中的WQE1中。可以理解的是,WR1和WQE1用于携带相同的信息仅是数据格式不同,WQE1的数据格式是IO设备能够识别的数据格式。WQE1(即,WR1)对应的数据操作请求为请求将数据1写入网络的处理器2的内存空间中。WQE1(即,WR1)可以包括数据1的信息(存储数据1的地址信息,数据1的长度信息以及数据1在处理器2的内存空间中的位置)和用于标识处理器2的信息(例如,处理器2的MAC地址或处理器2的标识)。
步骤415,处理器1生成PCIe报文1,其中PCIe报文1包括WQE1和入口地址1。
步骤416,处理器根据CP,确定SuQ1的信用值为信用值1,且信用值1大于阈值1。
在本申请实施例中,处理器的内存空间1的CP中记录有SuQ1的标识与SuQ1的信用的对应关系,SuQ1的信用包括信用值1。其中,处理器1根据CP,确定SuQ1的信用值为信用值1,可以包括如下步骤:处理器1通过访问处理器1的内存空间1获取CP;处理器1根据CP和SuQ1的标识,确定SuQ1的信用值为信用值1。
在本申请实施例中,对阈值1的大小不作具体限定,该阈值1可以为整数。在一个示例中,当上述应用程序1是可信任的应用程序时,上述阈值1可以等于零。在另一个示例中,当上述应用程序1是不可信任的应用程序时,上述阈值1可以是大于零的正整数,如阈值1可以等于2,3,5或10等。
步骤417,处理器1向IO设备发送PCIe报文1。
在上述步骤416中处理器1确定信用值1大于阈值1后,处理器1才执行上述步骤417。换句说,在本申请实施例中,处理器1向IO设备发送PCIe报文1时,需满足如下条件:SuQ1的信用值为信用值1,且信用值1大于阈值1。
可选的,在另一些实现方式中,当上述步骤416中的信用值1小于阈值1时,上述步骤417可以替换为如下步骤:处理器1在预设时间段后,重新获取CP中记录的SuQ1的信用值。当处理器1确定重新获取的CP中记录的SuQ1的信用值大于阈值1时,处理器1向IO设备发送PCIe报文1。可以理解的是,在预设时间段内,上述步骤416中所描述的CP中记录的SuQ1的信用值可能会发生更新。
步骤418,IO设备对PCIe报文1进行处理,通过IO空间2中的入口地址1将WQE1提交至SuQ1中的SuQE中,并对信用值1进行减1处理得到信用值2。
可选的,在上述步骤418之后,还可以包括如下步骤:IO设备接收处理器发送的消息,该消息用于指示当前SuQ1的信用值为信用值1。可以理解的是,在WQE1提交至SuQ1前,SuQ1的信用值为信用值1。
上述步骤418中,以IO设备将一个WQE1提交至SuQ1中的SuQE1后,并对SuQ1的信用值进行减1处理为例,介绍了IO设备将PCIe报文1中的WQE1提交至SuQ1中的SuQE1的流程。可选的,在另一些实现方式中,IO设备将一个WQE1提交至SuQ1中的SuQE1后,可以对SuQ1的信用值进行减k处理,k为除1以外的任意整数。在本申请实施例中,将WQE1提交至SuQE1后,WQE1又可称为SuQE1。
可选的,在一些实现方式中,当SuQ1中存储有多个WQE时,IO设备还可以基于现有的队列管理方法(例如但不限于,环形缓冲区(ringr buffer)或链表(linked list))对一个SuQ中的多个WQE进行队列管理。
可选的,在一些实现方式中,IO设备将接收到的多个WQE提交至同一个SuQ中(例如,SuQ1),这种实现方式中,在IO设备将该多个WQE从该一个SuQ发送至ExcQ之前,IO设备还可以根据预设规则对该SuQ中保存的该多个WQE进行排序,以使IO设备可以按照接收该多个WQE的顺序将该SuQ中保存的该多个WQE提交至ExcQ中。在一个示例中,预设规则包括:将优先级高的WQE早于低优先级的WQE提交至ExcQ,在另一个示例中,预设规则包括:按照IO设备接收到一个或多个WQE的顺序,将SuQ中保存的该一个或多个WQE提交至ExcQ。
步骤419,IO设备向处理器1发送消息1,消息1用于指示SuQ1的信用值为信用值2。
相应地,处理器1接收到消息1后,处理器1确定内存空间1中的CP中记录的SuQ1的信用值不等于信用值2;处理器1会将CP中记录的SuQ1的信用值更新为信用值2。
步骤420,IO设备将SuQE1中的WQE1提交至执行队列(execution queue,ExcQ)1,并对信用值2进行加1处理,得到更新后的信用值2。
其中,IO设备将SuQE1中的WQE1提交至ExcQ1,可以包括如下步骤:IO设备确定WQE1对应的数据操作请求的目的处理器为处理器2,以及确定ExcQ1用于将接收到的一个或多个WQE对应的数据操作请求发送至处理器2;IO设备将SuQE1中的WQE1提交至ExcQ1。
其中,ExcQ1设置在IO设备的内存空间2中。可选的,在一些实现方式中,IO设备的内存空间2中还可以存储有多个ExcQ,多个ExcQ对应多个目的处理器,任意一个ExcQ用于将接收到的WQE对应的数据操作请求发送至对应的目的处理器。
可选的,在一些实现方式中,SuQ1中保存有多个SuQE,此时,IO设备可以按照该多个SuQE对应的提交序列号将该多个SuQE对应的多个WQE提交至ExcQ1。
可选的,在另一些实现方式中,上述步骤420还可以替换为如下步骤:IO设备将SuQE1中的WQE1未能提交至执行队列ExcQ1。在这种实现方式中,IO设备将此事件视为异常(exception),IO设备丢弃SuQE1,并暂停所有与SuQ1相关的操作。此后,依据IO设备的内部实现将这个异常事件通知给处理器1中的应用程序1。处理器1对IO设备进行复位操作,此后应用程序1可以基于上述步骤重新IO设备重新提交WQE1。
步骤421,IO设备向处理器1发送消息2,消息2用于指示SuQ1的信用值为更新后的信用值2。
相应地,处理器1接收到消息2后,处理器1确定内存空间1中的CP中记录的SuQ1的信用值不等于信用值2;处理器1会将CP中记录的SuQ1的信用值更新为更新后的信用值2。
步骤422,IO设备在ExcQ1中根据WQE1对应的数据操作请求,生成PCIe报文2并发送PCIe报文2,其中PCIe报文2包括WQE1和用于标识处理器2的信息,处理器2是WQE1对应的数据操作请求的目的处理器。
其中,用于标识处理器2的信息可以但不限于是处理器2的MAC地址。
步骤423,IO设备向处理器1发送PCIe报文3,报文3包括CQ1的入口地址2和CQE1,其中CQE1用于指示WQE1对应的数据操作请求结果。
其中,入口地址2是处理器1的IO空间1中的地址。其中,IO设备可以通过地址映射的方式获取CQ1的入口地址2。
可选的,在步骤423之前还可以包括如下步骤:IO设备生成PCIe报文3。
步骤424,处理器1对PCIe报文3进行处理,根据CQ1的入口地址2,将CQE1存储至CQ1中。
其中,处理器1对PCIe报文3进行处理,根据CQ1的入口地址2,将CQE1存储至CQ1中,可以包括如下步骤:处理器1对PCIe报文3进行解析,确定CQ1的入口地址2;处理器1根据CQ1的入口地址2,确定CQ1在处理器1的内存空间1中地址;处理器1根据CQ1在处理器1的内存空间1中地址,将CQE1存储至CQ1中。
应理解,上述图4仅为示意,并不对本申请实施例提供的数据处理方法构成任何限定。例如,上述方法400中的CP还可以设置在IO设备的IO空间2中,这种实现方式中,处理器1与IO设备之间更新SuQ1的信用值的交换流程会发生相应变化,且在这种实现方式中,还需要将IO空间2中存储CP的地址映射至处理器1的IO空间1中,这样,处理器1通过访问IO空间1可以获取CP。
上述图2至图4所描述的数据处理的方法仅为示意,并不对本申请实施例提供的数据处理的方法构成任何限定。上文结合图2至图4,详细描述了本申请实施例提供的数据处理的方法,下面将结合图5和图6,详细描述本申请的装置的实施例。方法实施例的描述与装置实施例的描述相互对应,因此,未详细描述的部分可以参见前面方法实施例。
图5是本申请实施例提供的一种数据处理的装置500的示意性结构图。图5所示的数据处理的装置500可以执行上述实施例的数据处理的方法的相应步骤。如图5所示,该数据处理的装置500包括:收发单元510和处理单元520。
在一些实现方式中,该装置500应用于IO设备,收发单元510用于接收上述步骤210中的第一请求,执行上述步骤230,用于接收上述步骤410中的消息1,执行上述步骤419,上述步骤421和上述步骤423。处理单元520用于执行上述步骤220,上述步骤230,上述步骤412,上述步骤413,上述步骤418,上述步骤420和上述步骤422。
应理解的是,本申请实施例的装置500可以通过中央处理单元(centralprocessing unit,CPU)实现,也可以通过专用集成电路(application-specificintegrated circuit,ASIC)实现,或可编程逻辑器件(programmable logic device,PLD)实现,上述PLD可以是复杂程序逻辑器件(complex programmable logical device,CPLD),现场可编程门阵列(field-programmable gate array,FPGA),通用阵列逻辑(genericarray logic,GAL)或其任意组合。也可以通过软件实现图2至图4所示的数据处理方法时,装置500及其各个模块也可以为软件模块。
在另一些实现方式中,该装置500应用于第一处理器,收发单元510用于执行上述步骤210,上述步骤410,上述步骤417,上述步骤419,上述步骤421和上述步骤423。
图6是本申请实施例提供的一种数据处理的装置600的硬件结构示意图。图6所示的数据处理的装置600可以执行上述实施例的数据处理的方法中IO设备所实现的方法的操作步骤。
如图6所示,该装置600包括处理器601、存储器602、通信接口603和总线604。其中,处理器601、存储器602、通信接口603通过总线604进行通信,也可以通过无线传输等其他手段实现通信。该存储器602用于存储指令,该处理器601用于执行该存储器602存储的指令。该存储器602存储程序代码,且处理器601可以调用存储器602中存储的程序代码执行以下操作:
应理解,在本申请实施例中,该处理器601可以是CPU,该处理器601还可以是其他通用处理器、数字信号处理器(digital signal processing,DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。
在本申请实施例中,存储器602可以包括收发单元6021和处理单元6022。其中,当上述图5中数据处理的装置500应用于IO设备时,收发单元6021的功能与上述数据处理的装置500中的收发单元510具有相同的功能,具体可以参见上述收发单元510的相关描述,此处不再详细赘述。其中,当上述图5中数据处理的装置500应用于IO设备时,处理单元6022的功能与上述数据处理的装置500中的收发单元520具有相同的功能,具体可以参见上述处理单元520的相关描述,此处不再详细赘述。
该存储器602可以包括只读存储器和随机存取存储器,并向处理器601提供指令和数据。存储器602还可以包括非易失性随机存取存储器。例如,存储器602还可以存储设备类型的信息。
该存储器602可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data date SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlinkDRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。
该总线604除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线604。
本申请实施例还提供了一种计算机设备,包括如图1所示的第一处理器110和IO设备120,其中IO设备120的实体结构如图6所示,为了简洁,在此不再赘述。
本申请实施例还提供了一种计算机可读介质,该计算机可读介质存储有程序代码,当该计算机程序代码在计算机上运行时,使得计算机执行上述IO设备或第一处理器执行的方法。这些计算机可读存储包括但不限于如下的一个或者多个:只读存储器(read-only memory,ROM)、可编程ROM(programmable ROM,PROM)、可擦除的PROM(erasable PROM,EPROM)、Flash存储器、电EPROM(electrically EPROM,EEPROM)以及硬盘驱动器(harddrive)。
本申请实施例还提供了一种系统,包括如图1所示的第一计算机设备1,外部网络130和第二计算机设备2。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本申请实施例还提供了一种芯片系统,该芯片系统包括:至少一个处理器、至少一个存储器和接口电路,所述接口电路负责所述芯片系统与外界的信息交互,所述至少一个存储器、所述接口电路和所述至少一个处理器通过线路互联,所述至少一个存储器中存储有指令;所述指令被所述至少一个处理器执行,以进行上述各个方面的所述的方法中涉及IO设备或第一处理器的操作。在具体实现过程中,该芯片系统可以以中央处理器(centralprocessing unit,CPU)、微控制器(micro controller unit,MCU)、微处理器(microprocessing unit,MPU)、数字信号处理器(digital signal processing,DSP)、片上系统(system on chip,SoC)、专用集成电路(application-specific integrated circuit,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)或可编辑逻辑器件(programmable logic device,PLD)的形式实现。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘(solid state drive,SSD)。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (25)

1.一种数据处理的方法,其特征在于,所述方法包括:
输入输出IO设备接收第一请求,所述第一请求为第一处理器中运行的第一应用程序发送的请求,所述第一处理器与所述IO设备通过IO网络通信;
所述IO设备根据提交队列SuQ的入口规则将所述第一请求存储在第一SuQ,所述入口规则用于指示应用程序与SuQ的对应关系,所述第一SuQ存储在所述IO设备的存储器中;
所述IO设备按照发送策略向第二处理器发送所述第一请求,所述发送策略用于指示所述IO设备发送请求的方式,所述第二处理器所在的计算机设备与所述第一处理器所在的计算机设备不同。
2.根据权利要求1所述的方法,其特征在于,所述第一请求携带所述第一SuQ的入口地址,则所述IO设备根据提交队列SuQ的入口规则将所述第一请求存储在第一SuQ,包括:
所述IO设备根据所述第一SuQ的入口地址将所述第一请求存储在所述第一SuQ。
3.根据权利要求1所述的方法,其特征在于,所述IO设备根据提交队列SuQ的入口规则将所述第一请求存储在第一SuQ,包括:
所述IO设备根据所述第一应用程序的标识确定所述第一SuQ的入口地址;
所述IO设备根据所述入口地址将所述第一请求存储至所述第一SuQ。
4.根据权利要求1至3任一所述的方法,其特征在于,所述发送策略包括第一执行队列ExcQ,所述第一ExcQ存储在所述IO设备的存储器中,所述IO设备按照发送策略向第二处理器发送所述第一请求之前,所述方法还包括:
所述IO设备将所述第一SuQ中存储的所述第一请求存储在所述第一ExcQ,并删除所述第一SuQ中存储的所述第一请求。
5.根据权利要求4所述的方法,其特征在于,在删除所述第一SuQ中存储的所述第一请求之后,所述方法还包括:
所述IO设备对第一信用值进行加1处理,得到第二信用值,所述第一信用值用于指示将所述第一请求存储在所述第一SuQ后所述第一SuQ能够处理的请求的最大数量。
6.根据权利要求1至5任一所述的方法,其特征在于,在所述IO设备根据提交队列SuQ的入口规则将所述第一请求存储在第一SuQ之后,所述方法还包括:
所述IO设备对第三信用值进行减1处理,得到第一信用值,所述第三信用值用于指示将所述第一请求存储在所述第一SuQ前所述第一SuQ能够处理的请求的最大数量。
7.根据权利要求6所述的方法,其特征在于,所述第一处理器的存储器中存储有第一信用,所述第一信用包括所述第三信用值,所述方法还包括:
所述IO设备接收所述第一处理器发送的第一消息,所述第一消息用于指示所述第一SuQ的信用值为所述第三信用值;
所述IO设备向所述第一处理器发送第二消息,所述第二消息用于指示将所述第三信用值更新为所述第一信用值或所述第二信用值。
8.根据权利要求6所述的方法,其特征在于,所述IO设备的IO空间中存储有第一信用,所述第一信用包括所述第三信用值,所述方法还包括:
所述IO设备向所述第一处理器发送第三消息,所述第三消息用于指示所述第一SuQ的信用值为所述第一信用值,或所述第三消息用于指示所述第一SuQ的信用值为所述第二信用值。
9.根据权利要求7或8所述的方法,其特征在于,所述第一信用还包括第一阈值,所述第一阈值用于指示所述第一SuQ的队列深度。
10.根据权利要求1至9任一所述的方法,其特征在于,所述IO设备包括网络接口控制器、智能网络接口控制器、主机总线适配器、主机通道适配器、加速器、数据处理器、图像处理器、人工智能设备、软件定义基础设施中的至少一种。
11.根据权利要求1至10任一所述的方法,其特征在于,所述IO网络包括高速串行计算机扩展总线标准PCIe,内存互联CXL,统一总线Ubus中任意一种。
12.一种数据处理的装置,其特征在于,应用于输入输出IO设备,所述装置包括:
收发单元,用于接收第一请求,所述第一请求为第一处理器中运行的第一应用程序发送的请求,所述第一处理器与所述IO设备通过IO网络通信;
处理单元,用于根据提交队列SuQ的入口规则将所述第一请求存储在第一SuQ,所述入口规则用于指示应用程序与SuQ的对应关系,所述第一SuQ存储在所述IO设备的存储器中;
所述收发单元还用于:按照发送策略向第二处理器发送所述第一请求,所述发送策略用于指示所述IO设备发送请求的方式,所述第二处理器所在的计算机设备与所述第一处理器所在的计算机设备不同。
13.根据权利要求12所述的装置,其特征在于,所述第一请求携带所述第一SuQ的入口地址,
所述处理单元还用于:根据所述第一SuQ的入口地址将所述第一请求存储在所述第一SuQ。
14.根据权利要求12所述的装置,其特征在于,所述处理单元还用于:
根据所述第一应用程序的标识确定所述第一SuQ的入口地址;
根据所述入口地址将所述第一请求存储至所述第一SuQ。
15.根据权利要求12至14任一所述的装置,其特征在于,所述发送策略包括第一执行队列ExcQ,所述第一ExcQ存储在所述IO设备的存储器中,
所述处理单元还用于:将所述第一SuQ中存储的所述第一请求存储在所述第一ExcQ,并删除所述第一SuQ中存储的所述第一请求。
16.根据权利要求15所述的装置,其特征在于,
所述处理单元还用于:对第一信用值进行加1处理,得到第二信用值,所述第一信用值用于指示将所述第一请求存储在所述第一SuQ后所述第一SuQ能够处理的请求的最大数量。
17.根据权利要求12至16任一所述的装置,其特征在于,
所述处理单元还用于:对第三信用值进行减1处理,得到第一信用值,所述第三信用值用于指示将所述第一请求存储在所述第一SuQ前所述第一SuQ能够处理的请求的最大数量。
18.根据权利要求17所述的装置,其特征在于,所述第一处理器的存储器中存储有第一信用,所述第一信用包括所述第三信用值,所述收发单元还用于:
接收所述第一处理器发送的第一消息,所述第一消息用于指示所述第一SuQ的信用值为所述第三信用值;
向所述第一处理器发送第二消息,所述第二消息用于指示将所述第三信用值更新为所述第一信用值或所述第二信用值。
19.根据权利要求17所述的装置,其特征在于,所述IO设备的IO空间中存储有第一信用,所述第一信用包括所述第一信用值,
所述收发单元还用于:向所述第一处理器发送第三消息,所述第三消息用于指示所述第一SuQ的信用值为所述第一信用值,或所述第三消息用于指示所述第一SuQ的信用值为所述第二信用值。
20.根据权利要求18或19所述的装置,其特征在于,所述第一信用还包括第一阈值,所述第一阈值用于指示所述第一SuQ的队列深度。
21.根据权利要求12至20任一所述的装置,其特征在于,所述IO设备包括网络接口控制器、智能网络接口控制器、主机总线适配器、主机通道适配器、加速器、数据处理器、图像处理器、人工智能设备、软件定义基础设施中的至少一种。
22.根据权利要求12至21任一所述的装置,其特征在于,所述IO网络包括高速串行计算机扩展总线标准PCIe,内存互联CXL,统一总线Ubus中任意一种。
23.一种数据处理的装置,其特征在于,所述装置应用于输入输出IO设备,所述装置包括处理器和存储器,所述存储器用于存储指令,所述处理器用于读取所述存储器中存储的指令,以执行权利要求1至11任一所述的方法的操作步骤。
24.一种非易失性计算机可读存储介质,其特征在于,所述非易失性计算机可读存储介质中存储有计算机程序,当所述计算机程序在一个或多个处理器上运行时,使得所述计算机执行如权利要求1至11中任一所述的方法的操作步骤。
25.一种芯片系统,其特征在于,包括至少一个处理器和接口,所述至少一个所述处理器,用于调用并运行计算机程序,以使所述芯片系统执行如权利要求1至11中任一所述的方法的操作步骤。
CN202111092828.0A 2021-09-17 2021-09-17 数据处理的方法、装置以及系统 Pending CN115827212A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111092828.0A CN115827212A (zh) 2021-09-17 2021-09-17 数据处理的方法、装置以及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111092828.0A CN115827212A (zh) 2021-09-17 2021-09-17 数据处理的方法、装置以及系统

Publications (1)

Publication Number Publication Date
CN115827212A true CN115827212A (zh) 2023-03-21

Family

ID=85515243

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111092828.0A Pending CN115827212A (zh) 2021-09-17 2021-09-17 数据处理的方法、装置以及系统

Country Status (1)

Country Link
CN (1) CN115827212A (zh)

Similar Documents

Publication Publication Date Title
US11500810B2 (en) Techniques for command validation for access to a storage device by a remote client
US11636052B2 (en) Non-volatile memory express (NVMe) data processing method and system
US8645596B2 (en) Interrupt techniques
US8751676B2 (en) Message communication techniques
CN107992436A (zh) 一种NVMe数据读写方法及NVMe设备
CN117171073A (zh) 处理远程直接内存访问请求的方法和计算机设备
US8996774B2 (en) Performing emulated message signaled interrupt handling
US10983920B2 (en) Customizable multi queue DMA interface
CN112214166B (zh) 用于传输数据处理请求的方法和装置
US11741039B2 (en) Peripheral component interconnect express device and method of operating the same
CN110958215A (zh) 安全的在线接收的网络分组处理
CN111641566B (zh) 数据处理的方法、网卡和服务器
US20240348686A1 (en) Remote Data Access Method and Apparatus
CN110602166B (zh) 解决数据重复发送问题的方法、终端设备和存储介质
US11036649B2 (en) Network interface card resource partitioning
US20140280674A1 (en) Low-latency packet receive method for networking devices
CN115827212A (zh) 数据处理的方法、装置以及系统
US10977201B1 (en) Per IO direct memory access redirection
WO2023040330A1 (zh) 数据处理的方法、装置以及系统
US12007921B2 (en) Programmable user-defined peripheral-bus device implementation using data-plane accelerator (DPA)
US20220261266A1 (en) Methods and systems for using a peripheral device to assist virtual machine io memory access tracking

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