WO2024113090A1 - 访存方法、装置及系统 - Google Patents

访存方法、装置及系统 Download PDF

Info

Publication number
WO2024113090A1
WO2024113090A1 PCT/CN2022/134670 CN2022134670W WO2024113090A1 WO 2024113090 A1 WO2024113090 A1 WO 2024113090A1 CN 2022134670 W CN2022134670 W CN 2022134670W WO 2024113090 A1 WO2024113090 A1 WO 2024113090A1
Authority
WO
WIPO (PCT)
Prior art keywords
virtual address
node
network card
address
level
Prior art date
Application number
PCT/CN2022/134670
Other languages
English (en)
French (fr)
Inventor
李力军
叶峰
Original Assignee
华为技术有限公司
Filing date
Publication date
Application filed by 华为技术有限公司 filed Critical 华为技术有限公司
Publication of WO2024113090A1 publication Critical patent/WO2024113090A1/zh

Links

Images

Abstract

一种访存方法、装置及系统,涉及通信技术领域,所述方法包括:第一网卡在接收第二网卡发送的携带有第一转换虚拟地址的第一报文之后,根据所述第一转换虚拟地址查询第一翻译表得到第一物理地址,并对该第一物理地址进行访存。其中,所述第一转换虚拟地址的长度与所述第一网卡所在的第一节点中的进程虚拟地址的长度不同。本申请能够解决访存方式较为单一的问题。本申请用于物理地址的访存。

Description

访存方法、装置及系统 技术领域
本申请涉及通信技术领域,特别涉及一种访存方法、装置及系统。
背景技术
随着通信技术的发展,分布式系统得到了广泛的应用。分布式系统包括多个节点,这些节点之间可以共享内存。
以分布式系统中第一节点向第二节点共享第一节点的内存为例。第二节点的第二网卡可以基于该进程虚拟地址访存第一节点的物理地址(也即对具有该物理地址的存储位置进行访存)。示例地,第二节点的第二网卡可以向第一节点的第一网卡发送报文,该报文携带有该第一节点中一个物理地址对应的进程虚拟地址。第一网卡在接收到该报文后,可以根据该报文携带的该进程虚拟地址查询翻译表,得到该物理地址;之后,第一网卡可以对该物理地址进行访存。
但是,目前第二节点只能基于进程虚拟地址对物理地址进行访存,因此,第二节点的访存方式较为单一。
发明内容
本申请提供了一种访存方法、装置及系统,能够解决访存方式较为单一的问题,所述技术方案如下:
第一方面,本申请提供了一种访存方法,所述方法包括:第一网卡在接收第二网卡发送的携带有第一转换虚拟地址的第一报文之后,根据所述第一转换虚拟地址查询第一翻译表得到第一物理地址,并对该第一物理地址进行访存。其中,所述第一转换虚拟地址的长度与所述第一网卡所在的第一节点中的进程虚拟地址的长度不同。
第一转换虚拟地址与第一物理地址对应的第一进程虚拟地址的长度不同,第一转换虚拟地址和第一进程虚拟地址均是用于指代第一物理地址的虚拟地址。第一转换虚拟地址会替代第一进程虚拟地址与第一物理地址对应,第二节点可以向第一节点指定需要访存的第一转换虚拟地址,以使得第一节点根据该第一转换虚拟地址对第一转换虚拟地址对应的第一物理地址进行访存。可选地,第一转换虚拟地址的长度可以小于第一进程虚拟地址,因此,可以看作是将第一进程虚拟地址压缩为该第一转换虚拟地址。
第一翻译表可以包括至少一级表,也即第一翻译表的级数可以是1,也可以是大于1的整数。第一翻译表的每一级表包括:索引和条目,根据该索引能够查询到该索引对应的条目。第一转换虚拟地址包括:与该至少一级表一一对应的至少一级比特位,以及除该至少一级比特位之外的页内偏移量。每一级表的索引包括该级表对应的一级比特位,该至少一级表会被依次查询,根据任一级表对应的一级比特位查询该级表,能够得到一个条目。其中,根据最后一级表对应的一级比特位查询该最后一级表,得到的条目包括第一物理地址所在的存储页 的页帧号(page frame number,PFN);在第一翻译表包括多级表时,根据第i级表对应的一级比特位查询该第i级表,得到的条目包括第i+1级表的标识,i≥1。第一物理地址可以根据上述页内偏移量和PFN确定,具有第一物理地址的存储位置位于该存储页内。
本申请实施例提供的方案中,第二节点的第二网卡向第一节点的第一网卡发送的报文携带有第一转换虚拟地址,该第一转换虚拟地址的长度与进程虚拟地址的长度不同。并且,第一网卡可以基于该第一转换虚拟地址查询第一翻译表,以得到第一物理地址,并对第一物理地址进行访存。可见,第二节点可以基于与进程虚拟地址不同的转换虚拟地址访问第一节点中的物理地址,因此丰富了第二节点访问第一节点中物理地址的方式。
可选地,所述第一转换虚拟地址的长度小于所述进程虚拟地址的长度。示例地,第一转换虚拟地址的编址方式可以是:多种编址方式中编址得到最短转换虚拟地址的编址方式。这种情况下,能够使得转换虚拟地址的长度尽可能的短,进一步缩小物理地址与转换虚拟地可以理解的是,第一转换虚拟地址的长度也可以大于第一网卡所在的第一节点中的进程虚拟地址的长度,第一转换虚拟地址的编址方式也可以不是该多种编址方式中编址得到最短转换虚拟地址的编址方式,本申请对此不作限定。
翻译表的级数与该翻译表用于翻译的虚拟地址的长度正相关。在第一转换虚拟地址的长度比进程虚拟地址的长度小到一定程度时,第一翻译表的级数可以小于用于将第一进程虚拟地址翻译为第一物理地址的第二翻译表的级数。这样可以提升查询翻译表的效率。可以理解的是,在第一转换虚拟地址的长度比进程虚拟地址的长度小的情况下,第一翻译表的级数也可以等于第二翻译表的级数,本申请实施例对此不作限定。
第一物理地址可以属于第一节点中的内存或异构硬件等硬件。第一物理地址属于内存是指:第一物理地址为该内存中某一存储位置的地址。第一物理地址属于异构硬件是指:第一物理地址为该异构硬件中某一存储位置的地址。异构硬件和内存是第一节点中不同的两个硬件,该异构硬件与第一网卡连接。异构硬件可以是第一节点中除内存之外的任一种硬件,比如,该异构硬件可以是第一节点的第一存储器中的外存(如固态硬盘(solid state disk,SSD)等);或者,该异构硬件可以是第一节点的第一处理器中用于存储的硬件;或者,该异构硬件还可以是任意一种处理器(processing unit,PU),如第一处理器(可以是中央处理器(central processing unit,CPU))、图形处理器(graphics processing unit,GPU)、数据处理器(data processing unit,DPU)等。
进一步地,上述第一翻译表可以有多种可实现方式,以下以其中的两种可实现方式为例。
(1)在第一翻译表的第一种可实现方式中,假设第一物理地址属于第一节点中的内存,所述第一翻译表包括:第一级表和多个第二级表,第一网卡在根据所述第一转换虚拟地址查询第一翻译表得到第一物理地址时,可以首先根据所述第一转换虚拟地址中的第一级比特位查询所述第一级表,得到所述多个第二级表中一个第二级表的标识,以及所述第一转换虚拟地址中第二级比特位的信息;之后,第一网卡根据所述第二级比特位的信息,确定所述第一转换虚拟地址中的第二级比特位和页内偏移量,所述页内偏移量根据所述第一转换虚拟地址中除所述第一级比特位和所述第二级比特位之外的比特位确定;最后,第一网卡根据所述一个第二级表的标识,确定所述一个第二级表,并根据所述第二级比特位查询所述一个第二级表,得到所述内存中的一个页帧号,以及根据所述一个页帧号和所述页内偏移量,确定所述第一物理地址。
(2)在第一翻译表的第二种可实现方式中,第一物理地址属于第一节点中的异构硬件(与内存不同)。所述第一翻译表包括:第一级表和多个第二级表,第一网卡在根据所述第一转换虚拟地址查询第一翻译表得到第一物理地址时,可以首先根据所述第一转换虚拟地址中的第一级比特位查询所述第一级表,得到所述多个第二级表中一个第二级表的标识,以及所述第一转换虚拟地址中第二级比特位的信息;之后,第一网卡根据所述第二级比特位的信息,确定所述第一转换虚拟地址中的第二级比特位、页内偏移量和异构硬件,所述页内偏移量根据所述第一转换虚拟地址中除所述第一级比特位和所述第二级比特位之外的比特位确定,所述第二级比特位的值用于标识所述异构硬件;第一网卡还可以根据所述一个第二级表的标识,确定所述一个第二级表,根据所述第二级比特位查询所述一个第二级表,得到所述异构硬件中的一个页帧号,以及根据所述一个页帧号和所述页内偏移量,确定所述异构硬件中的所述第一物理地址。第一网卡在对所述第一物理地址进行访存时,可以将所述第一报文携带的所述第一转换虚拟地址替换为所述第一物理地址,得到第二报文,并将所述第二报文转发至所述异构硬件,以使所述异构硬件基于所述第二报文对所述第一物理地址进行访存。
可选地,所述第一网卡所在的第一节点还包括第一处理器,所述方法还包括:接收所述第一处理器发送的所述第一翻译表的信息。
可选地,所述第一翻译表用于将多个转换虚拟地址一一对应地翻译为多个物理地址;所述多个物理地址包括:对应的进程虚拟地址属于不同的进程的至少两个物理地址;所述多个转换虚拟地址中用于翻译得到所述至少两个物理地址的转换虚拟地址互不相同。
进一步地,第一报文还可以携带有目标权限信息,相应地,上述第一请求也可以携带有该目标权限信息。第一网卡在对第一物理地址进行访存前,可以根据目标权限信息查询保护表,以对目标权限信息进行验证,并确定目标权限信息验证通过。这样一来,便可以通过目标权限信息提升访存的安全性。第一网卡查询保护表与查询第一翻译表可以并行进行。第一网卡无需先查询保护表,并在确定目标权限信息验证通过之后再查询第一翻译表。这样一来,便进一步提升了访存的效率。
第二方面,本申请提供了一种访存方法,所述方法包括:第一节点中的第一处理器为第一物理地址分配第一转换虚拟地址,所述第一转换虚拟地址的长度与所述第一节点中进程虚拟地址的长度不同;之后,第一处理器向第二节点中的第二处理器发送第一转换虚拟地址,以及向所述第一节点中的第一网卡发送第一翻译表的信息,所述第一翻译表用于将所述第一转换虚拟地址翻译为所述第一物理地址;其中,所述第二处理器用于向所述第二节点中的第二网卡发送携带有所述第一转换虚拟地址的第一请求,所述第二网卡用于基于所述第一请求向所述第一网卡发送携带有所述第一转换虚拟地址的第一报文;所述第一网卡用于根据所述第一报文携带的所述第一转换虚拟地址查询所述第一翻译表得到所述第一物理地址,并对所述第一物理地址进行访存。
可选地,第一处理器可以在注册所述第一物理地址对应的进程虚拟地址后,为所述第一物理地址分配所述第一转换虚拟地址。
第三方面,本申请提供了一种访存方法,包括:第二节点中的第二处理器向所述第二节点中的第二网卡发送第一请求,所述第一请求携带有第一转换虚拟地址;其中,所述第二网卡用于基于所述第一请求向第一节点中的第一网卡发送携带有所述第一转换虚拟地址的第一报文;所述第一网卡用于根据所述第一转换虚拟地址查询第一翻译表,得到第一物理地址, 以及对所述第一物理地址进行访存;所述第一转换虚拟地址的长度与所述第一节点中进程虚拟地址的长度不同。
可选地,所述方法还包括:第二处理器接收所述第一节点中的第一处理器发送的所述第一转换虚拟地址。
第四方面,本申请提供了一种访存装置,所述访存装置属于第一网卡,所述访存装置包括:第一接收模块、第一查询模块和访存模块。其中,第一接收模块,用于接收第二网卡发送的携带有第一转换虚拟地址的第一报文;第一查询模块,用于根据所述第一转换虚拟地址查询第一翻译表得到第一物理地址,所述第一转换虚拟地址的长度与所述第一网卡所在的第一节点中的进程虚拟地址的长度不同;访存模块,用于对所述第一物理地址进行访存。
本申请实施例提供的方案中,第二节点的第二网卡向第一节点的第一网卡发送的报文携带有第一转换虚拟地址,该第一转换虚拟地址的长度与进程虚拟地址的长度不同。并且,第一网卡可以基于该第一转换虚拟地址查询第一翻译表,以得到第一物理地址,并对第一物理地址进行访存。可见,第二节点可以基于与进程虚拟地址不同的转换虚拟地址访问第一节点中的物理地址,因此丰富了第二节点访问第一节点中物理地址的方式。
可选地,所述第一转换虚拟地址的长度小于所述进程虚拟地址的长度。示例地,第一转换虚拟地址的编址方式可以是:多种编址方式中编址得到最短转换虚拟地址的编址方式。这种情况下,能够使得转换虚拟地址的长度尽可能的短,进一步缩小物理地址与转换虚拟地可以理解的是,第一转换虚拟地址的长度也可以大于第一网卡所在的第一节点中的进程虚拟地址的长度,第一转换虚拟地址的编址方式也可以不是该多种编址方式中编址得到最短转换虚拟地址的编址方式,本申请对此不作限定。
翻译表的级数与该翻译表用于翻译的虚拟地址的长度正相关。在第一转换虚拟地址的长度比进程虚拟地址的长度小到一定程度时,第一翻译表的级数可以小于用于将第一进程虚拟地址翻译为第一物理地址的第二翻译表的级数。这样可以提升查询翻译表的效率。可以理解的是,在第一转换虚拟地址的长度比进程虚拟地址的长度小的情况下,第一翻译表的级数也可以等于第二翻译表的级数,本申请实施例对此不作限定。
第一物理地址可以属于第一节点中的内存或异构硬件等硬件。
进一步地,上述第一翻译表可以有多种可实现方式,以下以其中的两种可实现方式为例。
(1)在第一翻译表的第一种可实现方式中,假设第一物理地址属于第一节点中的内存,所述第一翻译表包括:第一级表和多个第二级表,所述第一查询模块用于:根据所述第一转换虚拟地址中的第一级比特位查询所述第一级表,得到所述多个第二级表中一个第二级表的标识,以及所述第一转换虚拟地址中第二级比特位的信息;根据所述第二级比特位的信息,确定所述第一转换虚拟地址中的第二级比特位和页内偏移量,所述页内偏移量根据所述第一转换虚拟地址中除所述第一级比特位和所述第二级比特位之外的比特位确定;根据所述一个第二级表的标识,确定所述一个第二级表;根据所述第二级比特位查询所述一个第二级表,得到所述内存中的一个页帧号;根据所述一个页帧号和所述页内偏移量,确定所述第一物理地址。
(2)在第一翻译表的第二种可实现方式中,第一物理地址属于第一节点中的异构硬件(与内存不同)。在第一翻译表的第一种可实现方式的基础上,在第一翻译表的第二种可实现方式中,第二级比特位的值用于标识所述异构硬件,第二级表中的PFN为该异构硬件中的PFN。
示例地,所述第一翻译表包括:第一级表和多个第二级表,所述第一查询模块用于:根据所述第一转换虚拟地址中的第一级比特位查询所述第一级表,得到所述多个第二级表中一个第二级表的标识,以及所述第一转换虚拟地址中第二级比特位的信息;根据所述第二级比特位的信息,确定所述第一转换虚拟地址中的第二级比特位、页内偏移量和异构硬件,所述页内偏移量根据所述第一转换虚拟地址中除所述第一级比特位和所述第二级比特位之外的比特位确定,所述第二级比特位的值用于标识所述异构硬件;根据所述一个第二级表的标识,确定所述一个第二级表;根据所述第二级比特位查询所述一个第二级表,得到所述异构硬件中的一个页帧号;根据所述一个页帧号和所述页内偏移量,确定所述异构硬件中的所述第一物理地址;所述访存模块用于:将所述第一报文携带的所述第一转换虚拟地址替换为所述第一物理地址,得到第二报文;将所述第二报文转发至所述异构硬件,以使所述异构硬件基于所述第二报文对所述第一物理地址进行访存。
可选地,所述第一网卡所在的第一节点还包括第一处理器,所述访存装置还包括:第二接收模块,用于接收所述第一处理器发送的所述第一翻译表的信息。
可选地,所述第一翻译表用于将多个转换虚拟地址一一对应地翻译为多个物理地址;所述多个物理地址包括:对应的进程虚拟地址属于不同的进程的至少两个物理地址;所述多个转换虚拟地址中用于翻译得到所述至少两个物理地址的转换虚拟地址互不相同。
进一步地,第一报文还可以携带有目标权限信息,相应地,上述第一请求也可以携带有该目标权限信息。第一网卡在对第一物理地址进行访存前,可以根据目标权限信息查询保护表,以对目标权限信息进行验证,并确定目标权限信息验证通过。这样一来,便可以通过目标权限信息提升访存的安全性。第一网卡查询保护表与查询第一翻译表可以并行进行。第一网卡无需先查询保护表,并在确定目标权限信息验证通过之后再查询第一翻译表。这样一来,便进一步提升了访存的效率。
第五方面,本申请提供了一种访存装置,所述访存装置属于第一节点中的第一处理器,所述访存装置包括:分配模块、第一发送模块和第二发送模块。其中,分配模块,用于为第一物理地址分配第一转换虚拟地址,所述第一转换虚拟地址的长度与所述第一节点中进程虚拟地址的长度不同;第一发送模块,用于向第二节点中的第二处理器发送第一转换虚拟地址;第二发送模块,用于向所述第一节点中的第一网卡发送第一翻译表的信息,所述第一翻译表用于将所述第一转换虚拟地址翻译为所述第一物理地址;
其中,所述第二处理器用于向所述第二节点中的第二网卡发送携带有所述第一转换虚拟地址的第一请求,所述第二网卡用于基于所述第一请求向所述第一网卡发送携带有所述第一转换虚拟地址的第一报文;所述第一网卡用于根据所述第一报文携带的所述第一转换虚拟地址查询所述第一翻译表得到所述第一物理地址,并对所述第一物理地址进行访存。
可选地,所述分配模块用于:在注册所述第一物理地址对应的进程虚拟地址后,为所述第一物理地址分配所述第一转换虚拟地址。
第六方面,本申请提供了一种访存装置,所述访存装置属于第二节点中的第二处理器,所述访存装置包括:发送模块,用于向所述第二节点中的第二网卡发送第一请求,所述第一请求携带有第一转换虚拟地址;其中,所述第二网卡用于基于所述第一请求向第一节点中的第一网卡发送携带有所述第一转换虚拟地址的第一报文;所述第一网卡用于根据所述第一转换虚拟地址查询第一翻译表,得到第一物理地址,以及对所述第一物理地址进行访存;所述 第一转换虚拟地址的长度与所述第一节点中进程虚拟地址的长度不同。
可选地,所述访存装置还包括:接收模块,用于接收所述第一节点中的第一处理器发送的所述第一转换虚拟地址。
第七方面,本申请提供了一种访存节点,所述访存节点为第一节点,所述访存节点包括第一网卡和第一处理器;所述第一处理器用于通过所述第一网卡与所述第一节点之外的其他节点通信;所述第一网卡包括第四方面中任一设计所述的访存装置。
可选地,所述第一处理器包括第五方面中任一设计所述的访存装置。
第八方面,本申请提供了一种访存节点,所述访存节点为第二节点,所述访存节点包括第二网卡和第二处理器;所述第二处理器用于通过所述第二网卡与所述第二节点之外的其他节点通信,所述第二处理器包括第六方面中任一设计所述的访存装置。
第九方面,本申请提供了一种访存方法,所述方法包括:第一节点在接收第二节点发送的携带有第一转换虚拟地址的第一报文之后,根据所述第一转换虚拟地址查询第一翻译表得到第一物理地址,并对所述第一物理地址进行访存。其中,所述第一转换虚拟地址的长度与所述第一网卡所在的第一节点中的进程虚拟地址的长度不同。
可选地,第一节点在接收第二节点发送的携带有第一转换虚拟地址的第一报文之前,还可以为所述第一物理地址分配所述第一转换虚拟地址,并向所述第二节点发送所述第一转换虚拟地址,以及配置所述第一翻译表的信息。
可选地,第一节点可以在注册所述第一物理地址对应的进程虚拟地址后,为所述第一物理地址分配所述第一转换虚拟地址。
可选地,所述第一转换虚拟地址的长度小于所述进程虚拟地址的长度。示例地,第一转换虚拟地址的编址方式可以是:多种编址方式中编址得到最短转换虚拟地址的编址方式。这种情况下,能够使得转换虚拟地址的长度尽可能的短,进一步缩小物理地址与转换虚拟地可以理解的是,第一转换虚拟地址的长度也可以大于第一节点中的进程虚拟地址的长度,第一转换虚拟地址的编址方式也可以不是该多种编址方式中编址得到最短转换虚拟地址的编址方式,本申请对此不作限定。
翻译表的级数与该翻译表用于翻译的虚拟地址的长度正相关。在第一转换虚拟地址的长度比进程虚拟地址的长度小到一定程度时,第一翻译表的级数可以小于用于将第一进程虚拟地址翻译为第一物理地址的第二翻译表的级数。这样可以提升查询翻译表的效率。可以理解的是,在第一转换虚拟地址的长度比进程虚拟地址的长度小的情况下,第一翻译表的级数也可以等于第二翻译表的级数,本申请实施例对此不作限定。
第一物理地址可以属于第一节点中的内存或异构硬件等硬件。
进一步地,上述第一翻译表可以有多种可实现方式,以下以其中的两种可实现方式为例。
(1)在第一翻译表的第一种可实现方式中,假设第一物理地址属于第一节点中的内存,所述第一翻译表包括:第一级表和多个第二级表,第一节点在根据所述第一转换虚拟地址查询第一翻译表得到第一物理地址时,可以首先根据所述第一转换虚拟地址中的第一级比特位查询所述第一级表,得到所述多个第二级表中一个第二级表的标识,以及所述第一转换虚拟地址中第二级比特位的信息;之后,第一节点根据所述第二级比特位的信息,确定所述第一转换虚拟地址中的第二级比特位和页内偏移量,所述页内偏移量根据所述第一转换虚拟地址中除所述第一级比特位和所述第二级比特位之外的比特位确定;最后,第一节点根据所述一 个第二级表的标识,确定所述一个第二级表,并根据所述第二级比特位查询所述一个第二级表,得到所述内存中的一个页帧号,以及根据所述一个页帧号和所述页内偏移量,确定所述第一物理地址。
(2)在第一翻译表的第二种可实现方式中,第一物理地址属于第一节点中的异构硬件(与内存不同)。所述第一翻译表包括:第一级表和多个第二级表,第一节点在根据所述第一转换虚拟地址查询第一翻译表得到第一物理地址时,可以首先根据所述第一转换虚拟地址中的第一级比特位查询所述第一级表,得到所述多个第二级表中一个第二级表的标识,以及所述第一转换虚拟地址中第二级比特位的信息;之后,第一节点根据所述第二级比特位的信息,确定所述第一转换虚拟地址中的第二级比特位、页内偏移量和异构硬件,所述页内偏移量根据所述第一转换虚拟地址中除所述第一级比特位和所述第二级比特位之外的比特位确定,所述第二级比特位的值用于标识所述异构硬件;第一节点还可以根据所述一个第二级表的标识,确定所述一个第二级表,根据所述第二级比特位查询所述一个第二级表,得到所述异构硬件中的一个页帧号,以及根据所述一个页帧号和所述页内偏移量,确定所述异构硬件中的所述第一物理地址。第一节点在对所述第一物理地址进行访存时,可以将所述第一报文携带的所述第一转换虚拟地址替换为所述第一物理地址,得到第二报文,并将所述第二报文传输至异构硬件,以使所述异构硬件基于所述第二报文对所述第一物理地址进行访存。
可选地,所述第一翻译表用于将多个转换虚拟地址一一对应地翻译为多个物理地址;所述多个物理地址包括:对应的进程虚拟地址属于不同的进程的至少两个物理地址;所述多个转换虚拟地址中用于翻译得到所述至少两个物理地址的转换虚拟地址互不相同。
进一步地,第一报文还可以携带有目标权限信息,相应地,上述第一请求也可以携带有该目标权限信息。第一节点在对第一物理地址进行访存前,可以根据目标权限信息查询保护表,以对目标权限信息进行验证,并确定目标权限信息验证通过。这样一来,便可以通过目标权限信息提升访存的安全性。第一节点查询保护表与查询第一翻译表可以并行进行。第一节点无需先查询保护表,并在确定目标权限信息验证通过之后再查询第一翻译表。这样一来,便进一步提升了访存的效率。
第十方面,本申请提供了一种访存方法,所述方法包括:第二节点向第一节点发送携带有第一转换虚拟地址的第一报文;其中,所述第一节点用于根据所述第一转换虚拟地址查询第一翻译表,得到第一物理地址,以及对所述第一物理地址进行访存;所述第一转换虚拟地址的长度与所述第一节点中进程虚拟地址的长度不同。
可选地,第二节点在向第一节点发送第一报文之前,还可以接收所述第一节点发送的所述第一转换虚拟地址。
第十一方面,本申请提供了一种访存系统,包括第一节点和第二节点;
所述第一节点包括:第一网卡和第一处理器,所述第一网卡用于执行第一方面中任一设计所述的访存方法,所述第一处理器用于执行第二方面中任一设计所述的访存方法;所述第二节点包括:第二网卡和第二处理器,所述第二处理器用于执行第三方面中任一设计所述的访存方法;
或者,所述第一节点用于执行第九方面中任一设计所述的访存方法,所述第二节点用于执行第十方面中任一设计所述的访存方法。
第十二方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质内存储 有计算机程序,所述计算机程序在计算机上运行时用于实现第一方面、第二方面、第三方面、第九方面和第十方面中任一设计所述的访存方法。
第十三方面,本申请提供了一种包含指令的计算机程序产品,所述计算机程序产品在计算机上运行时用于实现第一方面、第二方面、第三方面、第九方面和第十方面中任一设计所述的访存方法。
第四方面至第十三方面的效果可以参考第一方面至第三方面中相应方案的效果,本申请在此不做赘述。
附图说明
图1为本申请实施例提供的一种访存节点的结构示意图;
图2为本申请实施例提供的另一种访存节点的结构示意图;
图3为本申请实施例提供的另一种访存节点的架构示意图;
图4为本申请实施例提供的一种第一节点和第二节点之间的通信示意图;
图5为本申请实施例提供的另一种第一节点和第二节点之间的通信示意图;
图6为本申请实施例提供的一种翻译表的查询过程示意图;
图7为本申请实施例提供的一种访存方法的流程图;
图8为本申请实施例提供的一种第一翻译表的查询过程示意图;
图9为本申请实施例提供的一种虚拟地址空间之间的对应关系示意图;
图10为本申请实施例提供的一种访存节点执行访存方法的过程示意图;
图11为本申请实施例提供的另一种访存方法的流程图;
图12为本申请实施例提供的一种访存装置的结构示意图;
图13为本申请实施例提供的另一种访存装置的结构示意图;
图14为本申请实施例提供的另一种访存装置的结构示意图。
具体实施方式
为使本申请的原理、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
本申请实施例提供了一种访存系统,访存系统可以是任一种包括多个访存节点的系统,如分布式系统。节点可以是设备也可以是设备的一部分,设备可以是手机、电脑、网关、路由器、服务器或服务器集群等。
示例地,图1为本申请实施例提供的一种访存节点的结构示意图,如图1所示,访存节点包括:相连接的处理器101和网卡(network interface card,NIC)102。其中,处理器101用于调用程序,以执行相应的方法或实现相应的功能。网卡102用于在处理器101的控制下与其他访存节点中的网卡通信,示例地,网卡102之间可以通过报文通信。网卡102之间通信可以采用任一种协议,比如,无限带宽(infiniband,IB)协议、IB远程直接内存访问(remote direct memory access,RDMA)协议、统一互联协议(unified bus,UB)协议等。网卡102之间无需通过处理器通信,因此能够减少冗余的输入/输出(input/output,I/O)栈,提升网卡之间的通信效率以及提升处理器的性能。
可选地,如图2所示,在图1所示的访存节点的基础上,访存节点还可以包括存储器103, 存储器103用于存储程序,处理器101与存储器103连接,处理器用于通过网卡与访存节点之外的其他节点通信。处理器101调用的程序可以存储在处理器101或存储器103上。网卡102也可以与存储器103连接,网卡102能够对存储器103的物理地址进行访存。比如,网卡102可以根据其他网卡发送的报文,对该物理地址进行访存。
进一步地,访存节点的架构可以如图3所示,该访存节点包括软件部分201和硬件部分202。其中,软件部分201也称软件栈,软件部分201包括:进程2010、软件框架2011和网卡驱动(NIC driver)2012,软件框架2011可以是任一种软件框架,如开放结构企业分发(openfabrics enterprise distribution,OFED)软件框架或统一内存开发套件(unified memory development kit,UMDK)软件框架等。
硬件部分202包括:网卡2021和处理器,或者网卡2021、处理器和存储器。图3中以硬件部分包括网卡2021和存储器2022为例。软件部分201包括用于在处理器上运行的程序,该程序在处理器上运行时,处理器具有控制网卡的功能。
示例地,软件部分201中用于控制网卡的部分可以是软件框架2011或网卡驱动2012等。当用于控制网卡的部分可以是软件框架2011时,软件框架2011可以生成控制网卡的指令,并将该指令通过网卡驱动2012传输至网卡2021。当用于控制网卡的部分是网卡驱动2012时,网卡驱动2012可以生成控制网卡的指令,并将该指令传输至网卡2021。可以理解的是,软件部分201还可以包括运行在软件框架2011上的进程,进程也可以对网卡进行控制。
根据以上介绍可知,访存节点中的网卡之间可以通过报文通信。示例地,访存系统中的多个访存节点可以包括第一节点和第二节点。以访存节点具有如图1所示的结构为例,如图4所示,第一节点包括:第一处理器和第一网卡,第二节点包括:第二处理器和第二网卡。可见,第一处理器和第二处理器是两个不同节点中的处理器,第一网卡和第二网卡是这两个不同节点中的网卡。可以理解的是,第一节点还可以包括第一存储器,第二节点还可以包括第二存储器,图4中未示出第一存储器和第二存储器。请继续参考图4,第二处理器可以控制第二网卡向第一网卡发送报文。第一网卡可以对该报文进行处理。以访存节点具有图3所示的结构为例,如图5所示,第二节点中运行在第二处理器上的第二进程可以调用第二软件框架通过第二网卡驱动控制第二网卡向第一节点中的第一网卡发送报文。第一网卡可以对该报文进行处理。上述过程中,第二节点向第一节点发送报文,因此,第一节点为目标(target)侧节点,第二节点为发起(initiator)侧节点。
进一步地,人工智能(artificial intelligence,AI)业务和大数据业务的兴起带来数据量的膨胀,“以中央处理器(central processing unit,简称CPU)为中心”演进到“以内存为中心”,网卡之间可以通过传输报文共享存储器中的内存。以第二网卡向第一网卡发送的报文用于对第一存储器中内存的物理地址进行访存为例:
在这种场景下,第一处理器会在第一网卡上配置保护表(protection table,PT)和多个翻译表(translation table,TT)(也称页表),保护表记录有验证信息和翻译表基址的对应关系,翻译表用于将进程虚拟地址翻译为物理地址。第二网卡发送给第一网卡的报文可以携带有内存中物理地址的进程虚拟地址和验证信息。第一网卡在接收到该报文后,可以根据该报文携带的验证信息查询保护表,以得到该验证信息对应的翻译表基址,并根据该翻译表基址找到相应的翻译表。之后,第一网卡可以根据该报文携带的进程虚拟地址查询该翻译表,得到该物理地址,之后,再对该物理地址进行访存(对具有该物理地址的存储位置进行访存)。可 以看出,第二网卡能够通过第一网卡对第一存储器的内存进行访存,且第一存储器的内存中的数据无需搬移至第二节点的第二存储器的内存中,这样一来,便通过算力流动减少了数据搬移的通信开销。
但是,进程虚拟地址的长度通常较长(通常包括64比特或者32比特等,远远大于物理地址的长度),且翻译表的级数与进程虚拟地址的长度正相关。因此,用于将进程虚拟地址翻译为物理地址的翻译表通常需要包含多级表(通常翻译表包括三级表或四级表),如基数树(radix tree)多级页表。这样一来,第一网卡在根据进程虚拟地址查询翻译表时,需要依次查询该多级表,导致第一网卡查询翻译表的效率较低,影响第一网卡对报文的处理效率,第一网卡和第二网卡之间的通信时延(也称端到端(the end-to-end,E2E)时延)较高。
相关技术中,为了减少翻译表的级数,可以采用以下方案:
保护表不仅记录有验证信息对应的翻译表基址,还记载有验证信息对应的虚拟地址基址。翻译表并不是用于将进程虚拟地址翻译为物理地址,而是用于将进程虚拟地址相对虚拟地址基址的偏移量翻译为物理地址。第一网卡在根据报文携带的验证信息查询保护表后,可以得到验证信息对应的翻译表基址和虚拟地址基址;之后,第一网卡可以确定报文携带的进程虚拟地址相对该虚拟地址基址的偏移量,并根据该偏移量查询该翻译表基址对应的翻译表,以得到上述物理地址。这样一来,由于该偏移量的长度比该进程虚拟地址的长度短,因此,能够在一定程度上减少翻译表的级数。
例如,请参考图6,假设第二网卡发送给第一网卡的报文携带有:验证信息1和进程虚拟地址,且该进程虚拟地址1相对虚拟地址基址B1的偏移量中的所有比特位可以划分为:第一级索引A1、第二级索引A2、第三级索引A3、第四级索引A4以及页内偏移量。那么,第一网卡可以根据验证信息1查询保护表,得到验证信息1对应的虚拟地址基址B1和翻译表中第一级表的基址B21。之后,第一网卡可以根据进程虚拟地址1和虚拟地址基址B1,确定进程虚拟地址1相对虚拟地址基址B1的偏移量,并根据该偏移量中的第一级索引A1,查询基址为B21的第一级表,得到第二级表的基址B22。接着,第一网卡可以根据该偏移量中的第二级索引A2,查询基址为B22的第二级表,得到第三级表的基址B23;根据该偏移量中的第三级索引A3,查询基址为B23的第三级表,得到第四级表的基址B24;根据该偏移量中的第四级索引A4,查询基址为B24的第四级表,得到PFN C1。最后,第一网卡可以根据该PFN C1以及该偏移量中的页内偏移量,得到物理地址。
但是,用于将进程虚拟地址相对虚拟地址基址的偏移量翻译为物理地址的翻译表的级数仍然较多(如图6中的例子为四级),依然存在第一网卡查询翻译表的效率较低,影响第一网卡对报文的处理效率的问题。并且,目前第二节点只能基于进程虚拟地址对第一节点中的物理地址进行访存,因此,第二节点的访存方式较为单一。
本申请实施例提供了一种访存方法,该访存方法中涉及的翻译表的级数较少,能够提升第一网卡查询翻译表的效率,提升第一网卡对报文的处理效率。并且,该访存方法中,第二节点可以基于与进程虚拟地址不同的转换虚拟地址对第一节点中的物理地址进行访存,因此丰富了第二节点的访存方式。
示例地,图7为本申请实施例提供的一种访存方法的流程图,该方法由本申请实施例提供的访存系统执行,该访存系统包括第一节点和第二节点,第一节点包括第一网卡和第一处 理器,第二节点包括第二网卡和第二处理器。本申请实施例中以第一物理地址的访存为例,与第一物理地址不同的其他物理地址的访存可以参考第一物理地址的访存,本申请实施例在此不做赘述。
如图7所示,该访存方法包括以下操作。
S701、第一处理器注册第一进程虚拟地址,第一进程虚拟地址对应第一物理地址。
第一处理器上运行有第一进程(如应用的进程),该第一进程可以根据业务需求在进程虚拟地址空间中指定需要注册的第一进程虚拟地址;之后,第一处理器上运行的软件框架可以在该第一进程的调用下完成该第一进程虚拟地址的注册。
在第一进程虚拟地址注册完毕后,第一进程虚拟地址便具有对应的第一物理地址。而进程虚拟地址空间中未被注册的虚拟地址并不具有对应的物理地址。第一处理器还可以在第二翻译表中记录用于将第一进程虚拟地址翻译为第一物理地址的信息。
第一物理地址可以属于第一节点中的第一存储器,也即是,第一物理地址可以是第一存储器中某一存储位置的物理地址。比如,第一物理地址为第一存储器中内存中某一存储位置的物理地址。内存可以包括:双倍速率同步动态随机存储器(double data rate,DDR)等。
S702、第一处理器为第一物理地址分配第一转换虚拟地址,该第一转换虚拟地址的长度小于第一节点中进程虚拟地址的长度。
第一处理器上运行的软件框架可以在第一进程虚拟地址完成注册后,为该第一物理地址分配第一转换虚拟地址,以便于后续第二节点可以基于该第一转换虚拟地址对第一物理地址进行访存。
第一转换虚拟地址与第一进程虚拟地址的长度不同,第一转换虚拟地址和第一进程虚拟地址均是用于指代第一物理地址的虚拟地址。在后续操作中,第一转换虚拟地址会替代第一进程虚拟地址与第一物理地址对应,第二节点可以向第一节点指定需要访存的第一转换虚拟地址,以使得第一节点根据该第一转换虚拟地址对第一转换虚拟地址对应的第一物理地址进行访存。可选地,第一转换虚拟地址的长度可以小于第一进程虚拟地址,因此,可以看作是将第一进程虚拟地址压缩为该第一转换虚拟地址。
第一处理器为不同物理地址分配的转换虚拟地址不同,第一处理器可以根据物理地址的不同,分配相应的转换虚拟地址。
通常物理地址的地址空间较小,而进程虚拟地址空间较大(该进程虚拟地址空间中的有些进程虚拟地址并不会被注册),因此,物理地址的长度较短,而进程虚拟地址的长度较长,物理地址和进程虚拟地址的长度差异较大。本申请实施例中,第一处理器只为注册过的进程虚拟地址对应的物理地址分配转换虚拟地址,这样一来,为物理地址分配的转换虚拟地址的长度就可以小于该进程虚拟地址的长度,使得转换虚拟地址的地址空间可以尽量与物理地址的地址空间相匹配,物理地址与转换虚拟地址的长度差异较小。
进一步地,按照以上内容中分配转换虚拟地址的思路,转换虚拟地址可以有多种编址方式,采用不同编址方式编址得到的转换虚拟地址的长度不同。本申请实施例中以第一转换虚拟地址采用该多种编址方式中编址得到最短转换虚拟地址的编址方式为例。这种情况下,能够使得转换虚拟地址的长度尽可能的短,进一步缩小物理地址与转换虚拟地址的长度差异。
第一处理器在为第一物理地址分配第一转换虚拟地址后,还可以对第一物理地址与第一转换虚拟地址的关系进行记录。
S703、第一处理器向第二处理器发送第一转换虚拟地址。
第一处理器上的第一进程在注册第一进程虚拟地址时,还可以指定该第一进程虚拟地址对应的第二进程,该第二进程用于访存该第一进程虚拟地址对应的第一物理地址。该第二进程运行在第二节点的第二处理器上,第一处理器上运行的软件框架在分配好第一转换虚拟地址后,还可以将该第一转换虚拟地址发送给该第二处理器,以使第二处理器上运行的第二进程能够得到该第一转换虚拟地址。
第一处理器和第二处理器之间可以借助于某种安全通道传输第一转换虚拟地址。第一处理器和第二处理器之间传输的信息(包括第一转换虚拟地址)可以采用序列化的数据的形式传输。
S704、第一处理器向第一网卡发送第一翻译表的信息,第一翻译表用于将第一转换虚拟地址翻译为第一物理地址。
第一处理器上运行的软件框架在为第一物理地址分配第一转换虚拟地址之后,可以进一步根据第一物理地址和该第一转换虚拟地址,向第一网卡配置用于将第一转换虚拟地址翻译为第一物理地址的第一翻译表的信息,以便于后续第一网卡根据第一翻译表将第一转换虚拟地址翻译为第一物理地址。示例地,第一处理器上运行的软件框架可以将该第一翻译表的信息通过网卡驱动发送至第一网卡,其中,网卡驱动用于将第一翻译表的信息的格式调整为第一网卡能够识别的格式。
第一翻译表可以包括至少一级表,也即第一翻译表的级数可以是1,也可以是大于1的整数。第一翻译表的每一级表包括:索引和条目,根据该索引能够查询到该索引对应的条目。第一转换虚拟地址包括:与该至少一级表一一对应的至少一级比特位,以及除该至少一级比特位之外的页内偏移量。每一级表的索引包括该级表对应的一级比特位,该至少一级表会被依次查询,根据任一级表对应的一级比特位查询该级表,能够得到一个条目。其中,根据最后一级表对应的一级比特位查询该最后一级表,得到的条目包括第一物理地址所在的存储页的PFN;在第一翻译表包括多级表时,根据第i级表对应的一级比特位查询该第i级表,得到的条目包括第i+1级表的标识,i≥1。第一物理地址可以根据上述页内偏移量和PFN确定,具有第一物理地址的存储位置位于该存储页内。
第一翻译表可以存储在第一网卡上,也可以不是存储在第一网卡上。在第一翻译表包括多级表时,第一翻译表还可以是一些表存储在第一网卡上,且另一些表未存储在第一网卡上。对于第一翻译表中存储在第一网卡上的表,第一处理器向第一网卡发送的这些表的信息可以是这些表本身。对于第一翻译表中未存储在第一网卡上的表,第一处理器向第一网卡发送的这些表的信息可以是这些表的存储地址。第一网卡可以将第一翻译表的信息存储在至少一个寄存器中。
翻译表的级数与该翻译表用于翻译的虚拟地址的长度正相关。在第一转换虚拟地址的长度比进程虚拟地址(如第一进程虚拟地址)的长度小到一定程度时,第一翻译表的级数可以小于用于将第一进程虚拟地址翻译为第一物理地址的第二翻译表的级数。第一翻译表中第i级表的索引长度与第二翻译表中第i级表的索引长度可以相同,第一翻译表中第i级表的索引长度与第二翻译表中第i级表的索引长度也可以不同,i≥1。比如,第一翻译表的级数为1,第二翻译表的级数为4,那么第一翻译表的级数比第二翻译表的级数小3。可以理解的是,在第一转换虚拟地址的长度比进程虚拟地址的长度小的情况下,第一翻译表的级数也可以等于 第二翻译表的级数,本申请实施例对此不作限定。
本申请中以第一物理地址对应的第一进程虚拟地址的注册,以及为第一物理地址分配第一转换虚拟地址为例。可以理解的是,第一进程可以每次注册一个进程虚拟地址子空间(属于进程虚拟地址空间),该进程虚拟地址子空间包括多个进程虚拟地址,第一物理地址对应的进程虚拟地址是该多个进程虚拟地址中的一个地址。相应地,第一处理器可以在S702中可以相应地为该进程虚拟地址子空间对应的物理地址子空间分配转换虚拟地址子空间。该转换虚拟地址子空间包括:为该进程虚拟地址子空间中的各个进程虚拟地址对应的物理地址分配的转换虚拟地址。S703中第一处理器可以向第二处理器发送该转换虚拟地址子空间中的各个转换虚拟地址。S704中的第一翻译表可以用于将该转换虚拟地址子空间中的各个转换虚拟地址翻译为物理地址。
S705、第二处理器向第二网卡发送第一请求,第一请求携带有第一转换虚拟地址。
由于在S703中第一处理器向第二处理器上运行的第二进程发送了第一转换虚拟地址,因此,第二进程可以能够根据需要对第一转换虚拟地址进行访存(可以理解为对第一转换虚拟地址对应的第一物理地址进行访存)。第二处理器上运行的软件框架可以在第二进程需要访存第一转换虚拟地址时,生成携带第一转换虚拟地址的第一请求,并向第二网卡发送该第一请求。比如,第二处理器上运行的软件框架可以通过第二处理器上运行的网卡驱动向第二网卡发送该第一请求。
可选地,第二进程在需要进行访存时,可以指定第一转换虚拟地址,以使第二处理器根据该第一转换虚拟地址生成第一请求。或者,第一处理器向第二处理器发送第一转换虚拟地址时,还可以携带第一进程虚拟地址;第二进程在需要进行数据访存时,可以指定第一进程虚拟地址,第二处理器可以根据该第一进程虚拟地址确定第一转换虚拟地址,之后,再根据该第一转换虚拟地址生成第一请求。
S706、第二网卡基于第一请求向第一网卡发送携带有第一转换虚拟地址的第一报文。
第二网卡在接收到第一请求后,可以将该第一请求写入请求队列,并依次基于请求队列中的请求封装用于向第一网卡发送的报文。该队列可以称为工作队列,加入该队列的第一请求可以称为工作队列元素(work queue element,WQE)。第二网卡基于第一请求可以封装携带有第一转换虚拟地址的第一报文,并将该第一报文发送至第一网卡。
在本申请实施例中,第一网卡和第二网卡之间建立有通信连接,第二网卡可以将第一报文通过该通信连接传输至第一网卡,该过程中,第一报文不会经过第一处理器。
第一报文除了携带第一请求携带的第一转换虚拟地址之外,还可以携带其他信息,本申请实施例对此不作限定。
S707、第一网卡根据第一报文携带的第一转换虚拟地址查询第一翻译表,得到第一物理地址。
第一网卡在接收到第一报文后,可以解析该第一报文,并提取第一报文携带的第一转换虚拟地址。在得到第一转换虚拟地址后,第一网卡可以根据该第一转换虚拟地址查询第一翻译表,得到翻译该第一转换虚拟地址得到的第一物理地址。第一网卡查询第一翻译表可以采用线性查表的方式。第一网卡可以包括报文引擎,第一网卡可以利用该报文引擎解析第一报文并提取第一转换虚拟地址,以及根据该第一转换虚拟地址得到第一物理地址。
S708、第一网卡对第一物理地址进行访存。
第一网卡对第一物理地址进行访存,也即是,第一网卡对具有第一物理地址的存储位置进行访存。第一网卡在确定第一物理地址后,便可以基于该第一物理地址确定具有该第一物理地址的目标存储位置,之后,对该目标存储位置进行访存(访问或存储)。
在第一报文用于对目标存储位置进行访问时,第一网卡可以读取该目标存储位置存储的数据,并将该数据发送至第二网卡。之后,第二网卡可以将该数据再发送至第二处理器,以使第二处理器中的第二进程能够得到该数据。
在第一报文用于对目标存储位置进行存储时,第一请求不仅携带有第一转换虚拟地址,还可以携带有待存储的数据,第一网卡可以将该数据写入在目标存储位置。之后,第一网卡还可以向第二网卡发送用于指示该数据已经写入目标存储位置中的存储响应,以便于第二网卡将该存储响应传输至第二处理器,使得第二处理器上的第二进程能够基于该存储响应确定该数据已经成功存储。
综上所述,本申请实施例提供的访存方法中,第二节点的第二网卡向第一节点的第一网卡发送的报文携带有第一转换虚拟地址,该第一转换虚拟地址的长度与进程虚拟地址的长度不同。并且,第一网卡可以基于该第一转换虚拟地址查询第一翻译表,以得到第一物理地址,并对第一物理地址进行访存。可见,第二节点可以基于与进程虚拟地址不同的转换虚拟地址访问第一节点中的物理地址,因此丰富了第二节点访问第一节点中物理地址的方式。
上述实施例中以第一转换虚拟地址的长度小于进程虚拟地址的长度为例,可以理解的是,第一转换虚拟地址的长度也可以大于进程虚拟地址的长度,本申请实施例对此不作限定。
另外,在第二网卡向第一网卡发送的第一转换虚拟地址的长度小于进行虚拟地址的长度的情况下,本申请中用于根据第一转换虚拟地址翻译得到第一物理地址的第一翻译表的级数,可以小于用于根据进程虚拟地址翻译得到物理地址(如用于根据第一进程虚拟地址翻译得到第一物理地址)的第二翻译表的级数。这样一来,第一网卡根据第一转换虚拟地址查询第一翻译表得到第一物理地址的过程中,第一网卡需要查询的表较少,因此第一网卡将第一转换虚拟地址翻译为第一物理地址的速度较快,能够提升第一网卡对报文的处理效率。示例地,本申请中第一网卡将第一转换虚拟地址翻译为第一物理地址的速度,相比第一网卡将第一进程虚拟地址翻译为第一物理地址的速度提升百分之36。
另外,本申请中的进程虚拟地址所属的进程可以是虚拟机进程,比如上述第一进程和第二进程均可以是虚拟机进程。在进程虚拟地址所属的进程为虚拟机进程时,第一网卡将第一转换虚拟地址翻译为第一物理地址的速度,相比第一网卡将第一进程虚拟地址翻译为第一物理地址的速度提升百分之78。
上述实施例中以第一物理地址属于第一节点中的内存为例。可以理解的是,第一物理地址也可以不属于内存,而是属于第一节点中的异构硬件。第一物理地址属于异构硬件是指:第一物理地址为该异构硬件中某一存储位置的地址。异构硬件和内存是第一节点中不同的两个硬件,该异构硬件与第一网卡连接。异构硬件可以是第一节点中除内存之外的任一种硬件,比如,该异构硬件可以是第一节点的第一存储器中的外存(如SSD等);或者,该异构硬件可以是第一节点的第一处理器中用于存储的硬件;或者,该异构硬件还可以是任意一种PU,如第一处理器(可以是CPU)、GPU、DPU等。
进一步地,上述第一翻译表可以有多种可实现方式,以下以其中的两种可实现方式为例。
(1)在第一翻译表的第一种可实现方式中,如图8所示,假设第一物理地址属于第一节点中的内存,第一翻译表包括:第一级表和多个第二级表,图8中仅示出了一个第二级表。第一级表的索引是转换虚拟地址中的第一级比特位,第一级表的索引对应的条目包括:第二级表的标识(如第二级表的基址),以及转换虚拟地址中第二级比特位的信息;第二级表的索引是转换虚拟地址中的第二级比特位,第二级表的索引对应的条目包括:页帧号(PFN)。第一级表和第二级表均可以包括一个或多个表项,本申请实施例对此不作限定。转换虚拟地址中的第一级比特位的位置也可以由第一处理器指定,该第一级比特位的信息可以携带在第一翻译表的信息中,第一级比特位的信息也可以被第一网卡存储在寄存器中。
以第一翻译表用于将第一转换虚拟地址翻译为第一物理地址为例,第一转换虚拟地址中的第一级比特位在第一级表中对应:一个第二级表的标识,以及第一转换虚拟地址中第二级比特位的信息;该信息指示的比特位为第一转换虚拟地址中的第二级比特位。第一转换虚拟地址中的第二级比特位在该一个第二级表中对应一个PFN。第一物理地址可以根据该PFN和页内偏移量确定,该页内偏移量根据第一转换虚拟地址中除第一级比特位和第二级比特位之外的比特位确定。比如,在第一转换虚拟地址的比特位中,第一级比特位、第二级比特位和第三级比特位连续且依次排布,那么该第三级比特位的值便为该页内偏移量。可选地,在第一转换虚拟地址的比特位中,第一级比特位和第二级比特位也可以不连续。
可以理解的是,第一翻译表的实现方式也可以与图8所示的实现方式不同。比如,第一翻译表可以包括一级表或三级表,在第一翻译表包括上述第一级表和第二级表时,第一翻译表中第一级表中索引对应的条目也可以不包括转换虚拟地址中第二级比特位的信息。这种情况下,第二级比特位的位置也可以由第一处理器指定,该第二级比特位的信息也可以携带在第一翻译表的信息中,第二级比特位的信息也可以被第一网卡存储在寄存器中。
在第一翻译表如图8所示时,第一网卡在根据第一转换虚拟地址查询第一翻译表时,可以首先根据第一转换虚拟地址中的第一级比特位查询第一翻译表中的第一级表,得到第一翻译表中一个第二级表的标识,以及第一转换虚拟地址中第二级比特位的信息。之后,第一网卡可以根据第一转换虚拟地址中第二级比特位的信息确定第一转换虚拟地址中的第二级比特位和页内偏移量,以及根据该一个第二级表的标识确定一个第二级表。其中,该页内偏移量是第一网卡根据第一转换虚拟地址中除第一级比特位和第二级比特位之外的比特位确定的。在确定第一转换虚拟地址中的第二级比特位、页内偏移量以及该一个第二级表后,第一网卡可以根据该第一转换虚拟地址中的第二级比特位查询该一个第二级表,得到内存中的一个PFN,并根据该PFN和该页内偏移量确定内存中的第一物理地址。比如,第一网卡可以先在内存中找到该PFN对应的存储页,之后,再根据该页内偏移量在该存储页中找到第一物理地址。
这种情况下,第一网卡在S708中对第一物理地址进行访存时,可以直接根据该第一物理地址确定内存中具有该第一物理地址的存储位置,并对该存储位置进行访存。
可选地,在第一翻译表包括第一级表和多个第二级表时,每个第二级表中记录的PFN对应的存储页的大小可以相同,或者,至少两个第二级表中记录的PFN对应的存储页大小不同。比如,这些第二级表记录的PFN对应的存储页的大小可以包括:4千字节、64千字节、1兆字节、8兆字节、16兆字节、128兆字节、516兆字节、1千兆字节等大小(如16种大小) 中的多种大小。在至少两个第二级表中记录的PFN对应的存储页大小不同时,多个第二级表中也可以存在记录的PFN对应的存储页大小相同的第二级表。
第二级表中记录的第二级比特位的信息所指示的第二级比特位的个数,可以负相关于第二级表中记录的PFN对应的存储页的大小,并且正相关于第二级表的表项的个数(也即第二级表记录的PFN的个数)。
比如,假设第一转换虚拟地址包括比特位0至比特位63,共64个比特位。第一级比特位可以是第一转换虚拟地址中的高三位,第一级表可以如表1所示。
表1
Figure PCTCN2022134670-appb-000001
又比如,假设第一转换虚拟地址包括比特位0至比特位47,共48个比特位。第一级比特位可以是第一转换虚拟地址中的高三位,第一级表可以如表2所示。
表2
Figure PCTCN2022134670-appb-000002
表1和表2中,第一级表的索引为第一级比特位,第一级表中索引对应的条目包括:第二级表的标识、第二级表的表项的个数、第二级表中PFN对应的存储页的大小、第二级比特位的信息(起始的第二级比特位和结束的第二级比特位),第一级表中的表项可以包括8个字节。可以理解的是,第一级表中索引对应的条目也可以不包括第二级表的表项的个数、第二级表中PFN对应的存储页的大小,第一级表中的表项也可以不是包括8个字节,比如该表项包括5个字节等。
另外,第二级表的索引为第二级比特位,第二级表中索引对应的条目可以包括PFN,该条目还可以包括该PFN的标志(flag)信息。
假设第一处理器在每注册一个进程虚拟地址子空间后,为该进程虚拟地址子空间对应的物理地址子空间分配转换虚拟地址子空间(可以称为分段(segment)转换虚拟地址空间)。该转换虚拟地址子空间可以对应第一级表中的一个表项和一个第二级表。该表项用于指示该第二级表,该第二级表用于记录该物理地址子空间中各个物理地址所在的PFN。第一处理器 可以根据物理地址子空间的大小,以及各个存储页的大小,分配该转换虚拟地址子空间。
(2)在第一翻译表的第二种可实现方式中,第一物理地址属于第一节点中的异构硬件(与内存不同)。在第一翻译表的第一种可实现方式的基础上,在第一翻译表的第二种可实现方式中,第二级比特位的值用于标识所述异构硬件,第二级表中的PFN为该异构硬件中的PFN。
第一网卡在根据第一转换虚拟地址查询第一翻译表时,可以首先根据第一转换虚拟地址中的第一级比特位查询第一级表,得到多个第二级表中一个第二级表的标识,以及第一转换虚拟地址中第二级比特位的信息。之后,再根据第二级比特位的信息,确定第一转换虚拟地址中的第二级比特位、页内偏移量和异构硬件,页内偏移量根据第一转换虚拟地址中除第一级比特位和第二级比特位之外的比特位确定,第二级比特位的值用于标识异构硬件。第一网卡还可以根据该一个第二级表的标识,确定该一个第二级表,并根据该第二级比特位查询该一个第二级表,得到该异构硬件中的一个页帧号。最后,第一网卡可以根据该一个页帧号和页内偏移量,确定该异构硬件中的第一物理地址。
这种情况下,第一网卡在S708中对第一物理地址进行访存时,可以通过异构硬件对该第一物理地址进行访存。示例地,第一网卡可以将第一报文携带的第一转换虚拟地址替换为第一物理地址,得到第二报文;之后,第一网卡可以将第二报文转发至异构硬件,以使异构硬件基于该第二报文对第一物理地址进行访存。
通常第二节点在访存第一节点中的异构硬件时,需要第一节点的第一处理器参与。比如,第二节点的第二网卡将该第一报文传输至第一网卡后,第一网卡会将该第一报文上报至第一处理器,再由第一处理器对该第一报文进行分析,以确定待访存的异构硬件;之后,第一处理器再指示第一网卡对该异构硬件进行访存。而本申请实施例中,第一网卡在接收到第一报文后,可以根据第一翻译表,确定第一物理地址,再基于第一物理地址向异构硬件发送第二报文,以使异构硬件能够对第一物理地址进行访存,该过程中无需第一处理器参与,因此,提升了异构硬件的访存效率,提升了业务性能。
本申请实施例中以第一翻译表用于将转换虚拟地址翻译为内存或异构硬件中的物理地址为例。可以理解的是,第一翻译表也可以用于将一部分转换虚拟地址翻译为内存中的物理地址,以及将另一部分转换虚拟地址翻译为异构硬件中的物理地址。这种情况下,第一网卡根据转换虚拟地址中的第一级比特位查询第一级表,不仅可以得到多个第二级表中一个第二级表的标识,以及该转换虚拟地址中第二级比特位的信息,还可以得到一个标志(flag)信息。该标志信息用于指示第一翻译表用于将该转换虚拟地址翻译为的物理地址属于内存还是异构硬件。之后,在该标志信息用于指示第一翻译表用于将该转换虚拟地址翻译为的物理地址属于内存时,第一网卡可以参考上述第一翻译表的第一种可实现方式继续查询该一个第二级表,以确定第一物理地址。在该标志信息用于指示第一翻译表用于将该转换虚拟地址翻译为的物理地址属于异构硬件时,第一网卡可以参考上述第一翻译表的第二种可实现方式继续查询该一个第二级表,以确定第一物理地址,并基于该第一物理地址向异构硬件发送第二报文。
进一步地,上述实施例中以处理器(第一处理器或第二处理器)的功能由处理器上运行的软件框架实现为例。比如,第一处理器的功能由第一处理器上运行的软件框架实现,第二处理器的功能由第二处理器上运行的软件框架实现。可以理解的是,上述处理器的功能也可以不是由软件框架实现,比如,处理器的功能可以由网卡驱动实现。
上述实施例中以转换虚拟地址(第一转换虚拟地址)由第一处理器分配并传输至第二处理器,且第一翻译表的信息由第一处理器发送至第一网卡为例。可以理解的是,转换虚拟地址(第一转换虚拟地址)也可以不是由第一处理器分配并传输至第二处理器,第一翻译表的信息也可以不是由第一处理器发送至第一网卡。比如,转换虚拟地址(第一转换虚拟地址)可以是由工作人员配置在第二处理器上,第一翻译表的信息也可以由工作人员配置在第一网卡上等。这种情况下,上述实施例可以不包括S701至S704。
另外,第一处理器还可以对上述第一翻译表调整更新,以使第一翻译表用于翻译第一转换虚拟地址翻译得到的第一物理地址更新。
示例地,第一处理器可以向第一网卡发送更新后的第一翻译表的信息,第一网卡可以根据该更新后的第一翻译表的信息对第一翻译表进行更新,以使第一翻译表用于翻译第一转换虚拟地址得到的第一物理地址更新。在第一翻译表更新后,若第一网卡在接收第二网卡发送的携带有第一转换虚拟地址的报文,则第一网卡可以根据第一转换虚拟地址查询更新后的第一翻译表,得到更新后的第一物理地址,并对更新后的第一物理地址进行访存。这样一来,便可以实现对第一网卡根据第一转换虚拟地址访存的第一物理地址的灵活调整,使得第二设备基于第一转换虚拟地址能够交织的访问多个物理地址。比如,第一物理地址可以在DDR和SSD中的物理地址之间灵活切换。
本申请实施例中以第一网卡根据第一处理器发送的更新后的第一翻译表的信息,对第一翻译表进行更新为例。可以理解的是,第一网卡也可以不是根据该信息对第一翻译表进行更新。比如,第一网卡可以根据工作人员输入的指令,对第一翻译表进行更新;又比如,第一网卡可以根据某种算法,自行对第一翻译表进行更新。
上述实施例中以第一翻译表用于将第一转换虚拟地址翻译为第一物理地址为例,可以理解的是,第一翻译表可以用于将多个转换虚拟地址一一对应地翻译为多个物理地址;该多个转换虚拟地址包括上述第一转换虚拟地址,该多个物理地址包括上述第一物理地址。
可选地,该多个物理地址包括:对应的进程虚拟地址属于不同的进程的至少两个物理地址;该多个转换虚拟地址中用于翻译得到该至少两个物理地址的转换虚拟地址互不相同。
换句话说,第一处理器用于在一个转换虚拟地址空间中,为各个进程的进程虚拟地址对应的物理地址分配转换虚拟地址。可以看出,该转换虚拟地址空间是操作系统(operating system,OS)级的虚拟地址空间,第一处理器可以在该转换虚拟地址空间中为各个进程虚拟地址对应的物理地址统一分配转换虚拟地址。在上述第一物理地址为内存中的物理地址时,该转换虚拟地址可以称为统一内存地址(unified memory address,UMA)。这样一来,不同进程的进程虚拟地址对应的物理地址分配的转换虚拟地址不同,同一进程的各个进程虚拟地址对应的物理地址分配的转换虚拟地址也不同,所以,第一处理器分配的任意两个转换虚拟地址都不同。
示例地,如图9所示,假设第一处理器的进程虚拟地址空间包括进程1的虚拟地址空间A和进程2的虚拟地址空间B。进程1可以在虚拟地址空间A中注册进程虚拟地址,进程2可以在虚拟地址空间B中注册虚拟地址。
虚拟地址空间A中的各个进程虚拟地址互不相同,虚拟地址空间B中的各个进程虚拟地址互不相同,但虚拟地址空间A中的进程虚拟地址和虚拟地址空间B中的进程虚拟地址相同。
虚拟地址空间A中被注册的各个进程虚拟地址对应物理地址互不相同,虚拟地址空间B中被注册的各个进程虚拟地址对应的物理地址互不相同,虚拟地址空间A中被注册的进程虚拟地址和虚拟地址空间B中被注册的进程虚拟地址对应的物理地址不同。
第一处理器可以在转换虚拟地址空间中为虚拟地址空间A和B中的各个进程虚拟地址对应的物理地址分配转换虚拟地址。如图9所示,假设虚拟地址空间A中1G(1G=1024MB,1MB=1024KB,1KB=1024字节)的进程虚拟地址被注册,虚拟地址空间B中2G的进程虚拟地址被注册,那么,第一处理器可以在转换虚拟地址空间中分配3G的转换虚拟地址。这3G的转换虚拟地址包括:为虚拟地址空间A中1G的进程虚拟地址对应的物理地址分配的1G的转换虚拟地址,以及为虚拟地址空间B中2G的进程虚拟地址对应的物理地址分配的2G的转换虚拟地址。
这3G的转换虚拟地址互不相同,这3G的转换虚拟地址可以连续也可以不连续,图9中以该1G的转换虚拟地址连续,该2G的转换虚拟地址连续,且该1G的转换虚拟地址与该2G的转换虚拟地址不连续为例。该1G的转换虚拟地址与该2G的转换虚拟地址之间间隔有3G的转换虚拟地址。
另外,第一处理器还可以对已经分配的至少部分转换虚拟地址进行回收。在回收转换虚拟地址时,第一处理器需要指示第一网卡删除第一翻译表中用于将该转换虚拟地址翻译为物理地址的信息,第一处理器还可以指示第二处理器删除该转换虚拟地址。
可选地,第一处理器在分配转换虚拟地址时,可以采用伙伴算法在转换虚拟地址空间中分配转换虚拟地址,按照固定长度(例如1兆字节)的地址空间对转换虚拟地址空间进行管理,以尽量减少转换虚拟地址空间的碎片化。比如,第一处理器在分配转换虚拟地址时,可以每次分配该固定长度的地址空间。第一处理器在回收转换虚拟地址时,可以每次回收该固定长度的地址空间。当然,第一处理器也可以采用与伙伴算法不同的其他算法分配转换虚拟地址,本申请实施例对此不作限定。
进一步地,第一报文还可以携带有目标权限信息,相应地,上述第一请求也可以携带有该目标权限信息。第一网卡在对第一物理地址进行访存前,可以根据目标权限信息查询保护表,以对目标权限信息进行验证,并确定目标权限信息验证通过。这样一来,便可以通过目标权限信息提升访存的安全性。
目标权限信息中的至少部分信息可以是第一处理器上运行的第一进程指定的信息,如果该至少部分信息为目标权限信息中的一部分信息,那么该另一部分信息可以是由第一处理器上运行的软件框架在被第一进程调用以分配第一转换虚拟地址时生成。
第一处理器在向第二处理器发送第一转换虚拟地址时,可以将目标权限信息一同发送至第二处理器。第一处理器在向第一网卡发送第一翻译表的信息时,还可以将保护表的信息一同发送至第一网卡。
目标权限信息的可实现方式多种多样。
比如,目标权限信息包括:令牌标识(token identity document,token ID)、令牌(token)、第一物理地址所在的存储页的标识(如基址)、该存储页的大小以及访存权限(RW)信息。其中,目标权限信息中除令牌标识之外的信息可以由第一处理器上运行的第一进程指定,令牌标识可以由第一处理器上运行的软件框架指定。保护表的索引可以为该令牌标识,该索引 对应的条目可以包括:该令牌(token)、第一物理地址所在的存储页的标识、该存储页的大小以及RW信息。
第一网卡在根据目标权限信息查询保护表,以对目标权限信息进行验证时,可以根据第一报文携带的令牌标识,在保护表中查询该令牌标识对应的条目。第一网卡还可以将该条目中的令牌与第一报文携带的令牌进行比较;将该条目中的存储页的标识与该第一报文携带的存储页的标识进行比较;将该条目中存储页的大小与该第一报文携带的存储页的大小进行比较;将该条目中RW信息与该第一报文携带的RW信息进行比较。在这些比较的结果都是相同时,第一网卡可以确定目标权限信息验证通过。如果这些比较中至少一个比较的结果是不同,那么第一网卡可以确定目标权限信息未验证通过。
进一步地,当上述多个物理地址包括:对应的进程虚拟地址属于不同的进程的至少两个物理地址,且上述多个转换虚拟地址中用于翻译得到该至少两个物理地址的转换虚拟地址互不相同时,第一处理器分配的任意两个转换虚拟地址都不同。这种情况下,第一翻译表能够用于将第一处理器分配的任意转换虚拟地址翻译为物理地址,所以,第一网卡查询保护表与查询第一翻译表可以并行进行。第一网卡无需先查询保护表,并在确定目标权限信息验证通过之后再查询第一翻译表。这样一来,便进一步提升了访存的效率。
以上内容中以上述多个物理地址包括:对应的进程虚拟地址属于不同的进程的至少两个物理地址;上述多个转换虚拟地址中用于翻译得到该至少两个物理地址的转换虚拟地址互不相同为例。可以理解的是,上述多个转换虚拟地址中用于翻译得到该至少两个物理地址的转换虚拟地址也可以相同,这种情况下,保护表中不仅记录了权限信息,还记录了权限信息对应的第一翻译表的标识(如基址),第一网卡可以在目标权限信息验证通过后,根据目标权限信息对应的第一翻译表的标识确定第一翻译表,再根据第一转换虚拟地址查询该第一翻译表。
以下将通过一个例子,对本申请实施例提供的方法进行举例说明。
示例地,上述第一节点包括:软件部分和硬件部分。如图10所示,软件部分包括第一进程、软件框架和网卡驱动,硬件部分包括:第一网卡、第一存储器(图10中仅示出第一存储器中的内存)和第一处理器(图10中未示出第一处理器)。
第一节点中的软件部分运行在第一处理器上,用于实现上述第一处理器的功能,图10中以软件部分中的软件框架中的转换地址管理模块用于实现上述第一处理器的功能为例。
第一网卡与第一存储器连接,第一翻译表中的第一级表存储在第一网卡上,第一翻译表中的第二级表和保护表均存储在第一存储器上。第一网卡包括:寄存器1、2、3。其中,寄存器1用于记录保护表的存储地址;寄存器2用于记录第一翻译表中第一级表的存储地址;寄存器3用于记录转换虚拟地址中的第一级比特位的信息。
转换地址管理模块可以在第一进程注册第一物理地址对应的进程虚拟地址时,为第一物理地址分配第一转换虚拟地址,并根据该第一转换虚拟地址和第一物理地址配置第一网卡中的寄存器和第一级表,以及内存中的保护表和第二级表。
第一网卡还包括报文引擎。报文引擎可以接收第二网卡发送的第一报文,并解析该第一报文以得到第一转换虚拟地址和目标验证信息。报文引擎还可以根据该目标验证信息以及寄存器1记录的存储地址,查询保护表,以对目标验证信息进行验证。同时,报文引擎还可以 根据第一转换虚拟地址,寄存器2记录的存储地址,以及寄存器3记录的第一级比特位的信息,查询第一翻译表中的第一级表,得到一个第二级表的标识,以及第二级比特位的信息。之后,报文引擎还可以根据该第一转换虚拟地址、该一个第二级表的标识以及该第二级比特位的信息,查询该一个第二级表,以得到一个PFN,再根据该PFN以及该第一转换虚拟地址中的页内偏移量,确定第一物理地址。最后,在目标验证信息验证通过后,报文引擎可以访存该第一物理地址。
请继续参考图10,上述第二节点也包括:软件部分和硬件部分,软件部分包括第二进程、软件框架和网卡驱动。第二节点中的软件部分运行在第二处理器上,用于实现上述第二处理器的功能。第二节点的硬件部分包括:第二网卡、第二存储器和第二处理器(图10中未示出第二存储器和第二处理器)。第二网卡包括工作队列和报文引擎。
第一节点中的转换地址管理模块还用于将该第一转换虚拟地址发送给第二节点中的第二处理器,以使第二处理器上运行的第二进程能够得到该第一转换虚拟地址。在第二节点中,第二进程可以调用软件框架生成第一请求,软件框架可以通过网卡驱动将该第一请求传输至第二网卡中的工作队列;软件框架还可以对第二网卡中的门铃(doorbell,DB)寄存器(图10中未示出)进行写操作,以触发第二网卡的报文引擎从工作队列中取出第一请求,并根据第一请求封装第一报文,以及将该第一报文传输至第一网卡。
另外,本申请实施例提供的方法还可以包括初始化阶段,第一节点用于在初始化阶段执行初始化操作。示例地,该初始化操作可以包括以下至少部分操作:第一节点中的第一处理器确定转换虚拟地址空间;第一处理器确定用于记录第一物理地址与第一转换虚拟地址的关系的位置,以及确保该位置记录的关系为空;第一处理器分配第一翻译表和保护表的存储位置;第一处理器配置第一网卡中的各个寄存器;第一处理器配置初始化的第一翻译表(空表)和初始化的保护表(空表)。这些操作可以依次执行,也可以不是依次执行,本申请实施例对此不作限定。
根据以上内容可知,本申请实施例提供的一种访存方法,在该访存方法中,第二节点可以向第一节点发送携带第一转换虚拟地址的第一报文。第一节点在接收到该第一报文后,可以根据第一转换虚拟地址查询第一翻译表得到第一物理地址,并对第一物理地址进行访存。
可选地,在第二节点向第一节点发送第一报文之前,第一节点还可以为第一物理地址分配第一转换虚拟地址,并向第二节点发送第一转换虚拟地址,以及在本地配置第一翻译表的信息。相应地,第二节点会接收第一节点发送的第一转换虚拟地址。第二节点可以根据第一节点发送的第一转换虚拟地址向第一节点发送第一报文。
可选地,第一节点可以在注册第一物理地址对应的进程虚拟地址后,为第一物理地址分配第一转换虚拟地址。
可选地,第一报文还携带有目标权限信息,第一节点在接收到第一报文之后,还可以根据目标权限信息查询保护表,以对目标权限信息进行验证;其中,查询保护表与查询第一翻译表并行进行;第一节点可以在目标权限信息验证通过时,对第一物理地址进行访存。
如图11所示,该访存方法可以包括:
S1101、第一节点注册第一物理地址对应的进程虚拟地址。
S1102、第一节点为第一物理地址分配第一转换虚拟地址。
S1103、第一节点向第二节点发送第一转换虚拟地址。
S1104、第一节点在本地配置第一翻译表的信息。
S1105、第二节点根据第一节点发送的第一转换虚拟地址,向第一节点发送携带有第一转换虚拟地址和目标权限信息的第一报文。
S1106、第一节点并行执行根据第一转换虚拟地址查询第一翻译表得到第一物理地址,以及根据目标权限信息查询保护表以对目标权限信息进行验证。
S1107、第一节点在目标权限信息验证通过时,对第一物理地址进行访存。
以上介绍了本申请实施例提供的访存方法,以下将结合上述访存方法对本申请实施例提供的访存装置进行介绍。
示例地,图12为本申请实施例提供的一种访存装置的结构示意图,该访存装置可以属于第一节点中的第一网卡,如图12所示,该访存装置包括:
第一接收模块1201,用于接收第二网卡发送的携带有第一转换虚拟地址的第一报文。第一接收模块1201用于执行的操作可以参考前述实施例中S706中与第一网卡相关的内容。
第一查询模块1202,用于根据所述第一转换虚拟地址查询第一翻译表得到第一物理地址,所述第一转换虚拟地址的长度与所述第一网卡所在的第一节点中的进程虚拟地址的长度不同。第一查询模块1202用于执行的操作可以参考前述实施例中S707中与第一网卡相关的内容。
访存模块1203,用于对所述第一物理地址进行访存。访存模块1203用于执行的操作可以参考前述实施例中S708中与第一网卡相关的内容。
本申请实施例提供的方案中,第二节点的第二网卡向第一节点的第一网卡发送的报文携带有第一转换虚拟地址,该第一转换虚拟地址的长度与进程虚拟地址的长度不同。并且,第一网卡可以基于该第一转换虚拟地址查询第一翻译表,以得到第一物理地址,并对第一物理地址进行访存。可见,第二节点可以基于与进程虚拟地址不同的转换虚拟地址访问第一节点中的物理地址,因此丰富了第二节点访问第一节点中物理地址的方式。
可选地,所述第一转换虚拟地址的长度小于所述进程虚拟地址的长度。示例地,第一转换虚拟地址的编址方式可以是:多种编址方式中编址得到最短转换虚拟地址的编址方式。这种情况下,能够使得转换虚拟地址的长度尽可能的短,进一步缩小物理地址与转换虚拟地可以理解的是,第一转换虚拟地址的长度也可以大于第一网卡所在的第一节点中的进程虚拟地址的长度,第一转换虚拟地址的编址方式也可以不是该多种编址方式中编址得到最短转换虚拟地址的编址方式,本申请对此不作限定。
翻译表的级数与该翻译表用于翻译的虚拟地址的长度正相关。在第一转换虚拟地址的长度比进程虚拟地址的长度小到一定程度时,第一翻译表的级数可以小于用于将第一进程虚拟地址翻译为第一物理地址的第二翻译表的级数。这样可以提升查询翻译表的效率。可以理解的是,在第一转换虚拟地址的长度比进程虚拟地址的长度小的情况下,第一翻译表的级数也可以等于第二翻译表的级数,本申请实施例对此不作限定。
第一物理地址可以属于第一节点中的内存或异构硬件等硬件。
进一步地,上述第一翻译表可以有多种可实现方式,以下以其中的两种可实现方式为例。
(1)在第一翻译表的第一种可实现方式中,假设第一物理地址属于第一节点中的内存,所述第一翻译表包括:第一级表和多个第二级表,所述第一查询模块用于:根据所述第一转换虚拟地址中的第一级比特位查询所述第一级表,得到所述多个第二级表中一个第二级表的标识,以及所述第一转换虚拟地址中第二级比特位的信息;根据所述第二级比特位的信息,确定所述第一转换虚拟地址中的第二级比特位和页内偏移量,所述页内偏移量根据所述第一转换虚拟地址中除所述第一级比特位和所述第二级比特位之外的比特位确定;根据所述一个第二级表的标识,确定所述一个第二级表;根据所述第二级比特位查询所述一个第二级表,得到所述内存中的一个页帧号;根据所述一个页帧号和所述页内偏移量,确定所述第一物理地址。
(2)在第一翻译表的第二种可实现方式中,第一物理地址属于第一节点中的异构硬件(与内存不同)。在第一翻译表的第一种可实现方式的基础上,在第一翻译表的第二种可实现方式中,第二级比特位的值用于标识所述异构硬件,第二级表中的PFN为该异构硬件中的PFN。
示例地,所述第一翻译表包括:第一级表和多个第二级表,所述第一查询模块用于:根据所述第一转换虚拟地址中的第一级比特位查询所述第一级表,得到所述多个第二级表中一个第二级表的标识,以及所述第一转换虚拟地址中第二级比特位的信息;根据所述第二级比特位的信息,确定所述第一转换虚拟地址中的第二级比特位、页内偏移量和异构硬件,所述页内偏移量根据所述第一转换虚拟地址中除所述第一级比特位和所述第二级比特位之外的比特位确定,所述第二级比特位的值用于标识所述异构硬件;根据所述一个第二级表的标识,确定所述一个第二级表;根据所述第二级比特位查询所述一个第二级表,得到所述异构硬件中的一个页帧号;根据所述一个页帧号和所述页内偏移量,确定所述异构硬件中的所述第一物理地址;所述访存模块用于:将所述第一报文携带的所述第一转换虚拟地址替换为所述第一物理地址,得到第二报文;将所述第二报文转发至所述异构硬件,以使所述异构硬件基于所述第二报文对所述第一物理地址进行访存。
可选地,所述第一网卡所在的第一节点还包括第一处理器,所述访存装置还包括:第二接收模块(附图中未示出),用于接收所述第一处理器发送的所述第一翻译表的信息。第二接收模块用于执行的操作可以参考S704中与第一网卡相关的内容。
可选地,所述第一翻译表用于将多个转换虚拟地址一一对应地翻译为多个物理地址;所述多个物理地址包括:对应的进程虚拟地址属于不同的进程的至少两个物理地址;所述多个转换虚拟地址中用于翻译得到所述至少两个物理地址的转换虚拟地址互不相同。
进一步地,第一报文还可以携带有目标权限信息,相应地,上述第一请求也可以携带有该目标权限信息。第一网卡在对第一物理地址进行访存前,可以根据目标权限信息查询保护表,以对目标权限信息进行验证,并确定目标权限信息验证通过。这样一来,便可以通过目标权限信息提升访存的安全性。第一网卡查询保护表与查询第一翻译表可以并行进行。第一网卡无需先查询保护表,并在确定目标权限信息验证通过之后再查询第一翻译表。这样一来,便进一步提升了访存的效率。
又示例地,图13为本申请实施例提供的一种访存装置的结构示意图,该访存装置可以属于第一节点中的第一处理器,如图13所示,该访存装置包括:
分配模块1301,用于为第一物理地址分配第一转换虚拟地址,所述第一转换虚拟地址的长度与所述第一节点中进程虚拟地址的长度不同。分配模块1301用于执行的操作可以参考 S702中与第一处理器相关的内容。
第一发送模块1302,用于向第二节点中的第二处理器发送第一转换虚拟地址;第一发送模块1302用于执行的操作可以参考S703中与第一处理器相关的内容。
第二发送模块1303,用于向所述第一节点中的第一网卡发送第一翻译表的信息,所述第一翻译表用于将所述第一转换虚拟地址翻译为所述第一物理地址;第二发送模块1303用于执行的操作可以参考S704中与第一处理器相关的内容。
其中,所述第二处理器用于向所述第二节点中的第二网卡发送携带有所述第一转换虚拟地址的第一请求,所述第二网卡用于基于所述第一请求向所述第一网卡发送携带有所述第一转换虚拟地址的第一报文;所述第一网卡用于根据所述第一报文携带的所述第一转换虚拟地址查询所述第一翻译表得到所述第一物理地址,并对所述第一物理地址进行访存。
可选地,所述分配模块用于:在注册所述第一物理地址对应的进程虚拟地址后,为所述第一物理地址分配所述第一转换虚拟地址。
又示例地,图14为本申请实施例提供的一种访存装置的结构示意图,该访存装置可以属于第二节点中的第二处理器,如图14所示,该访存装置包括:
发送模块1401,用于向所述第二节点中的第二网卡发送第一请求,所述第一请求携带有第一转换虚拟地址;其中,发送模块1401用于执行的操作可以参考S705中与第二处理器相关的内容。所述第二网卡用于基于所述第一请求向第一节点中的第一网卡发送携带有所述第一转换虚拟地址的第一报文;所述第一网卡用于根据所述第一转换虚拟地址查询第一翻译表,得到第一物理地址,以及对所述第一物理地址进行访存;所述第一转换虚拟地址的长度与所述第一节点中进程虚拟地址的长度不同。
可选地,所述访存装置还包括:接收模块(附图中未示出),用于接收所述第一节点中的第一处理器发送的所述第一转换虚拟地址。接收模块用于执行的操作可以参考S703中与第二处理器相关的内容。
本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序在计算机上运行时用于实现本申请实施例提供的任一种由第一网卡、第二网卡、第一处理器、第二处理器、第一节点或第二节点执行的访存方法。
本申请实施例提供了一种包含指令的计算机程序产品,计算机程序产品在计算机上运行时用于实现本申请实施例提供的任一种由第一网卡、第二网卡、第一处理器、第二处理器、第一节点或第二节点执行的访存方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现,所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机的可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者包含一个或多个可用介质集成 的服务器、数据中心等数据存储装置。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质,或者半导体介质(例如固态硬盘)等。
在本申请中,术语“第一”和“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。术语“至少一个”指一个或多个,“多个”指两个或两个以上,除非另有明确的限定。
本申请实施例提供的各个实施例(如各个方法实施例,方法实施例和装置实施例)均可以相互参考。本申请实施例提供的方法实施例所描述的各个动作不必然代表先后顺序,各动作的执行顺序能够根据需要进行适当调整,动作也能够根据情况进行相应增减,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化的方法,都应涵盖在本申请的保护范围之内,因此不再赘述。
在本申请提供的相应实施例中,应该理解到,所揭露的结构可以通过其它的构成方式实现。例如,以上所描述的实施例仅仅是示意性的。
以上所述,仅为本申请的可选实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (28)

  1. 一种访存方法,其特征在于,所述方法由第一网卡执行,所述方法包括:
    接收第二网卡发送的携带有第一转换虚拟地址的第一报文;
    根据所述第一转换虚拟地址查询第一翻译表得到第一物理地址,所述第一转换虚拟地址的长度与所述第一网卡所在的第一节点中的进程虚拟地址的长度不同;
    对所述第一物理地址进行访存。
  2. 根据权利要求1所述的方法,其特征在于,所述第一转换虚拟地址的长度小于所述进程虚拟地址的长度。
  3. 根据权利要求2所述的方法,其特征在于,所述第一转换虚拟地址的编址方式为:多种编址方式中编址得到最短转换虚拟地址的编址方式。
  4. 根据权利要求2或3所述的方法,其特征在于,所述第一翻译表的级数小于第二翻译表的级数,所述第二翻译表用于将所述进程虚拟地址翻译为物理地址。
  5. 根据权利要求1至4任一所述的方法,其特征在于,所述第一物理地址属于所述第一节点的内存。
  6. 根据权利要求5所述的方法,其特征在于,所述第一翻译表包括:第一级表和多个第二级表,所述根据所述第一转换虚拟地址查询第一翻译表得到第一物理地址,包括:
    根据所述第一转换虚拟地址中的第一级比特位查询所述第一级表,得到所述多个第二级表中一个第二级表的标识,以及所述第一转换虚拟地址中第二级比特位的信息;
    根据所述第二级比特位的信息,确定所述第一转换虚拟地址中的第二级比特位和页内偏移量,所述页内偏移量根据所述第一转换虚拟地址中除所述第一级比特位和所述第二级比特位之外的比特位确定;
    根据所述一个第二级表的标识,确定所述一个第二级表;
    根据所述第二级比特位查询所述一个第二级表,得到所述内存中的一个页帧号;
    根据所述一个页帧号和所述页内偏移量,确定所述第一物理地址。
  7. 根据权利要求1至4任一所述的方法,其特征在于,所述第一物理地址属于所述第一节点中的异构硬件。
  8. 根据权利要求7所述的方法,其特征在于,所述第一翻译表包括:第一级表和多个第二级表,所述根据所述第一转换虚拟地址查询第一翻译表得到第一物理地址,包括:
    根据所述第一转换虚拟地址中的第一级比特位查询所述第一级表,得到所述多个第二级表中一个第二级表的标识,以及所述第一转换虚拟地址中第二级比特位的信息;
    根据所述第二级比特位的信息,确定所述第一转换虚拟地址中的第二级比特位、页内偏 移量和异构硬件,所述页内偏移量根据所述第一转换虚拟地址中除所述第一级比特位和所述第二级比特位之外的比特位确定,所述第二级比特位的值用于标识所述异构硬件;
    根据所述一个第二级表的标识,确定所述一个第二级表;
    根据所述第二级比特位查询所述一个第二级表,得到所述异构硬件中的一个页帧号;
    根据所述一个页帧号和所述页内偏移量,确定所述异构硬件中的所述第一物理地址;
    对所述第一物理地址进行访存,包括:
    将所述第一报文携带的所述第一转换虚拟地址替换为所述第一物理地址,得到第二报文;
    将所述第二报文转发至所述异构硬件,以使所述异构硬件基于所述第二报文对所述第一物理地址进行访存。
  9. 根据权利要求1至8任一所述的方法,其特征在于,所述第一网卡所在的第一节点还包括第一处理器,所述方法还包括:
    接收所述第一处理器发送的所述第一翻译表的信息。
  10. 根据权利要求1至9任一所述的方法,其特征在于,所述第一翻译表用于将多个转换虚拟地址一一对应地翻译为多个物理地址;
    所述多个物理地址包括:对应的进程虚拟地址属于不同的进程的至少两个物理地址;所述多个转换虚拟地址中用于翻译得到所述至少两个物理地址的转换虚拟地址互不相同。
  11. 根据权利要求10所述的方法,其特征在于,所述第一报文还携带有目标权限信息,所述方法还包括:
    根据所述目标权限信息查询保护表,以对所述目标权限信息进行验证;其中,查询所述保护表与查询所述第一翻译表并行进行;
    对所述第一物理地址进行访存,包括:
    在所述目标权限信息验证通过时,对所述第一物理地址进行访存。
  12. 一种访存方法,其特征在于,所述方法由第一节点中的第一处理器执行,所述方法包括:
    为第一物理地址分配第一转换虚拟地址,所述第一转换虚拟地址的长度与所述第一节点中进程虚拟地址的长度不同;
    向第二节点中的第二处理器发送第一转换虚拟地址;
    向所述第一节点中的第一网卡发送第一翻译表的信息,所述第一翻译表用于将所述第一转换虚拟地址翻译为所述第一物理地址;
    其中,所述第二处理器用于向所述第二节点中的第二网卡发送携带有所述第一转换虚拟地址的第一请求,所述第二网卡用于基于所述第一请求向所述第一网卡发送携带有所述第一转换虚拟地址的第一报文;所述第一网卡用于根据所述第一报文携带的所述第一转换虚拟地址查询所述第一翻译表得到所述第一物理地址,并对所述第一物理地址进行访存。
  13. 根据权利要求12所述的方法,其特征在于,所述为第一物理地址分配第一转换虚拟 地址,包括:
    在注册所述第一物理地址对应的进程虚拟地址后,为所述第一物理地址分配所述第一转换虚拟地址。
  14. 一种访存方法,其特征在于,所述方法由第二节点中的第二处理器执行,所述方法包括:
    向所述第二节点中的第二网卡发送第一请求,所述第一请求携带有第一转换虚拟地址;
    其中,所述第二网卡用于基于所述第一请求向第一节点中的第一网卡发送携带有所述第一转换虚拟地址的第一报文;所述第一网卡用于根据所述第一转换虚拟地址查询第一翻译表,得到第一物理地址,以及对所述第一物理地址进行访存;所述第一转换虚拟地址的长度与所述第一节点中进程虚拟地址的长度不同。
  15. 根据权利要求14所述的方法,其特征在于,所述方法还包括:
    接收所述第一节点中的第一处理器发送的所述第一转换虚拟地址。
  16. 一种访存装置,其特征在于,所述访存装置属于第一网卡,所述访存装置包括:
    第一接收模块,用于接收第二网卡发送的携带有第一转换虚拟地址的第一报文;
    第一查询模块,用于根据所述第一转换虚拟地址查询第一翻译表得到第一物理地址,所述第一转换虚拟地址的长度与所述第一网卡所在的第一节点中的进程虚拟地址的长度不同;
    访存模块,用于对所述第一物理地址进行访存。
  17. 一种访存装置,其特征在于,所述访存装置属于第一节点中的第一处理器,所述访存装置包括:
    分配模块,用于为第一物理地址分配第一转换虚拟地址,所述第一转换虚拟地址的长度与所述第一节点中进程虚拟地址的长度不同;
    第一发送模块,用于向第二节点中的第二处理器发送第一转换虚拟地址;
    第二发送模块,用于向所述第一节点中的第一网卡发送第一翻译表的信息,所述第一翻译表用于将所述第一转换虚拟地址翻译为所述第一物理地址;
    其中,所述第二处理器用于向所述第二节点中的第二网卡发送携带有所述第一转换虚拟地址的第一请求,所述第二网卡用于基于所述第一请求向所述第一网卡发送携带有所述第一转换虚拟地址的第一报文;所述第一网卡用于根据所述第一报文携带的所述第一转换虚拟地址查询所述第一翻译表得到所述第一物理地址,并对所述第一物理地址进行访存。
  18. 一种访存装置,其特征在于,所述访存装置属于第二节点中的第二处理器,所述访存装置包括:
    发送模块,用于向所述第二节点中的第二网卡发送第一请求,所述第一请求携带有第一转换虚拟地址;
    其中,所述第二网卡用于基于所述第一请求向第一节点中的第一网卡发送携带有所述第一转换虚拟地址的第一报文;所述第一网卡用于根据所述第一转换虚拟地址查询第一翻译表, 得到第一物理地址,以及对所述第一物理地址进行访存;所述第一转换虚拟地址的长度与所述第一节点中进程虚拟地址的长度不同。
  19. 一种访存节点,其特征在于,所述访存节点为第一节点,所述访存节点包括第一网卡和第一处理器;
    所述第一处理器用于通过所述第一网卡与所述第一节点之外的其他节点通信;
    所述第一网卡包括权利要求16所述的访存装置。
  20. 根据权利要求19所述的访存节点,其特征在于,所述第一处理器包括权利要求17所述的访存装置。
  21. 一种访存节点,其特征在于,所述访存节点为第二节点,所述访存节点包括第二网卡和第二处理器;
    所述第二处理器用于通过所述第二网卡与所述第二节点之外的其他节点通信,所述第二处理器包括权利要求18所述的访存装置。
  22. 一种访存方法,其特征在于,所述方法由第一节点执行,所述方法包括:
    接收第二节点发送的携带有第一转换虚拟地址的第一报文;
    根据所述第一转换虚拟地址查询第一翻译表得到第一物理地址,所述第一转换虚拟地址的长度与所述第一网卡所在的第一节点中的进程虚拟地址的长度不同;
    对所述第一物理地址进行访存。
  23. 根据权利要求22所述的访存方法,其特征在于,在所述接收第二节点发送的携带有第一转换虚拟地址的第一报文之前,所述方法还包括:
    为所述第一物理地址分配所述第一转换虚拟地址;
    向所述第二节点发送所述第一转换虚拟地址;
    配置所述第一翻译表的信息。
  24. 一种访存方法,其特征在于,所述方法由第二节点执行,所述方法包括:
    向第一节点发送携带有第一转换虚拟地址的第一报文;
    其中,所述第一节点用于根据所述第一转换虚拟地址查询第一翻译表,得到第一物理地址,以及对所述第一物理地址进行访存;所述第一转换虚拟地址的长度与所述第一节点中进程虚拟地址的长度不同。
  25. 根据权利要求24所述的方法,其特征在于,所述方法还包括:
    接收所述第一节点发送的所述第一转换虚拟地址。
  26. 一种访存系统,其特征在于,包括第一节点和第二节点;
    所述第一节点包括:第一网卡和第一处理器,所述第一网卡用于执行权利要求1至11任 一所述的访存方法,所述第一处理器用于执行权利要求12或13所述的访存方法;所述第二节点包括:第二网卡和第二处理器,所述第二处理器用于执行权利要求14或15所述的访存方法;
    或者,所述第一节点用于执行权利要求22或23所述的访存方法,所述第二节点用于执行权利要求24或25所述的访存方法。
  27. 一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序在计算机上运行时用于实现权利要求1至15、22至25中任一所述的访存方法。
  28. 一种包含指令的计算机程序产品,其特征在于,所述计算机程序产品在计算机上运行时用于实现权利要求1至15、22至25中任一所述的访存方法。
PCT/CN2022/134670 2022-11-28 访存方法、装置及系统 WO2024113090A1 (zh)

Publications (1)

Publication Number Publication Date
WO2024113090A1 true WO2024113090A1 (zh) 2024-06-06

Family

ID=

Similar Documents

Publication Publication Date Title
US11467975B2 (en) Data processing method and NVMe storage device
CN114780458B (zh) 数据处理的方法和存储系统
CN112578997B (zh) 一种数据迁移方法、系统及相关设备
CN110235098B (zh) 存储系统访问方法及装置
WO2020199760A1 (zh) 数据存储方法、存储器和服务器
WO2014101777A1 (zh) 流表匹配方法和装置以及交换机
EP4160425A1 (en) Data transmission method, chip, and device
WO2021008197A1 (zh) 资源分配方法、存储设备和存储系统
EP4318251A1 (en) Data access system and method, and device and network card
WO2014094421A1 (zh) 数据处理方法和虚拟机管理平台
WO2020177437A1 (zh) 数据处理的方法、网卡和服务器
CN111585887A (zh) 基于多个网络的通信方法、装置、电子设备及存储介质
CN112615917A (zh) 存储系统中存储设备的管理方法及存储系统
JP2016177688A (ja) データ処理装置、データ処理方法およびコンピュータプログラム
CN110199270B (zh) 存储系统中存储设备的管理方法及装置
EP3964996A1 (en) Database access method and device
WO2024113090A1 (zh) 访存方法、装置及系统
WO2021238594A1 (zh) 存储介质管理方法、装置、设备以及计算机可读存储介质
TW202338810A (zh) 持久化記憶裝置、主機和持久化記憶裝置的控制方法
CN114389995A (zh) 资源共享的方法、装置以及电子设备
WO2024082702A1 (zh) 数据处理方法、装置、芯片以及计算机可读存储介质
WO2023130953A1 (zh) 数据查找方法及装置、网络设备
WO2023165448A1 (zh) 一种地址管理方法及存储装置
WO2024061344A1 (zh) 数据迁移方法、装置、芯片以及计算机可读存储介质
CN117032595B (zh) 顺序流检测方法及存储设备