CN115640241A - 基于地址池的内存转换表表项管理方法、查询方法及装置 - Google Patents
基于地址池的内存转换表表项管理方法、查询方法及装置 Download PDFInfo
- Publication number
- CN115640241A CN115640241A CN202211222897.3A CN202211222897A CN115640241A CN 115640241 A CN115640241 A CN 115640241A CN 202211222897 A CN202211222897 A CN 202211222897A CN 115640241 A CN115640241 A CN 115640241A
- Authority
- CN
- China
- Prior art keywords
- address
- length
- memory
- target
- table entry
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种基于地址池的内存转换表表项管理方法、查询方法及装置,包括:在下发表项过程中向地址池申请虚拟地址;根据虚拟地址将各表项的长度写入长度存储器,并标记每个长度的存储序数;计算各虚拟地址对应的表项长度和,将各虚拟地址及其对应的表项长度和顺序写入地址存储器;根据各表项虚拟地址及存储序数,将各表项顺序存储在外挂存储器中。读取内存区域在地址存储器中对应的多个虚拟地址及表项长度和,根据查询长度范围并行查找以得到目标虚拟地址;读取长度存储器中目标虚拟地址对应的多个表项的长度,根据查询长度范围并行查找以得到目标存储序数;根据目标虚拟地址和目标存储序数读取外挂存储器中对应的目标表项,以提高查询效率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于地址池的内存转换表表项管理方法、查询方法及装置。
背景技术
RDMA(Remote Direct MemoryAccess,远程直接数据存取)是为了解决网络传输中服务器端数据处理的延迟而产生的。用户在使用RDMA技术时,需要在内存中进行注册,即注册内存区域(Memory Region,缩写为MR),划分一段特定的区域提供远端进行访问。对于上层应用来说,使用的都是虚拟地址,经过内存管理单元转换为内存中的物理地址。在RDMA技术卸载到硬件的方案中,每注册一个内存区域,同样需要类似虚拟地址到物理地址的映射表。
现有技术中,RDMA技术卸载到硬件内存转换表(MemoryTranslationTable,缩写为MTT)的实现方案有两种,其中,内存转换表作为虚拟地址到物理地址的映射表。
实现方案一是将MTT存储在本端主机侧内存中,在接收到远端主机访问请求后在发起直接存储器访问(DMA),穿透高速串行计算机扩展总线(PCIE),将MTT表项搬到硬件再进行判断。该方案实施时,需要穿透两次PCIE,大大增加物理链路的延时,增大延时的同时,还会导致硬件需要消耗大量的存储资源来进行请求的存储。
实现方案二是将MTT存储在硬件外挂的双倍速率同步动态随机存储器(DoubleDataRate SDRAM,缩写为DDR)中,在接收到远端主机访问请求后直接读取DDR,以获得相应的MTT表项。方案二改善了方案一部分不足,但与方案一仍存在以下问题:
顺序访问返回的表项存在物理链路的延时的不确定性,取决于命中表项在整体表项中的位置。具体的,由于访问时采用顺序访问,当所需表项存储位置在整体表项靠后的位置时,需多个时钟周期才能查到正确的结果,导致延时较大。
MTT表项存储时,需要按照支持最大MR数量及MR对应的表项个数对存储空间进行固定的划分,当用户不需要注册很多MR时,存在存储空间浪费问题。
发明内容
鉴于此,本发明实施例提供了一种基于地址池的内存转换表表项管理方法、查询方法及装置,以消除或改善现有技术中存在的一个或更多个缺陷,解决现有技术由于顺序访问表项导致的物理链路延时不确定以及注册内存区域导致的存储空间浪费问题。
一方面,本发明提供一种基于地址池的内存转换表表项管理方法,该方法包括以下步骤:
获取地址池,在内存转换表顺序下发表项时,每当下发的表项的数量达到kn+1,按照预设顺序从所述地址池内申请一个虚拟地址,其中,k=0,1,2,…;n为预设的正整数;
将各虚拟地址一对一地匹配至长度存储器内的多个存储单元地址,将各表项的长度按照下发顺序写入所述长度存储器中相应虚拟地址对应的存储单元,并标记每个表项在相应存储单元内的存储序数;
将注册的内存区域地址一对一地匹配至地址存储器内的多个存储单元地址,计算各虚拟地址对应的各表项的表项长度和,将各虚拟地址及其对应的表项长度和按照各虚拟地址申请顺序写入所述地址存储器;
将各表项按照下发顺序存储在外挂存储器中,并以各表项对应的所述虚拟地址及所述存储序数作为索引。
在本发明的一些实施例中,在获取所述地址池之前,还包括:
向初始地址池中连续写入递增的数据,直至写满,以得到所述地址池;将所述数据作为所述地址池中的地址。
在本发明的一些实施例中,按照预设顺序从所述地址池内申请一个虚拟地址,包括:
采用先进先出的方式从所述地址池数据中获取虚拟地址。
在本发明的一些实施例中,所述外挂存储器采用双倍速率同步动态随机存储器,所述长度存储器和所述地址存储器采用块随机存储器。
在本发明的一些实施例中,将各表项的按照下发顺序存储在外挂存储器中之后,还包括:
接收所述外挂存储器反馈的存储结果信息,在所述存储结果信息表示存储错误的情况下生成告警信息,并提示重新存储。
本发明还提供一种基于地址池的内存转换表表项查询方法,该方法用于查询上文中所述基于地址池的内存转换表表项管理方法存储的表项,所述方法包括以下步骤:
获取待查询表项对应的内存区域,以及在所述内存区域内的起始地址和结束地址;
读取所述内存区域在地址存储器中对应的多个虚拟地址和对应的表项长度和,根据所述起始地址和所述结束地址所确定的长度范围筛选出一个或多个目标表项长度和,以获取所述目标表项长度和对应的一个或多个目标虚拟地址;
读取长度存储器中所述目标虚拟地址对应的各表项的长度,根据所述起始地址和所述结束地址所确定的长度范围筛选出一个或多个目标表项长度,以获取各目标表项长度在所述目标虚拟地址对应存储单元内的目标存储序数;
以所述目标虚拟地址和所述目标存储序数作为索引,读取所述外挂存储器中对应的目标表项。
在本发明的一些实施例中,获取待查询表项对应的内存区域,以及在所述内存区域内的起始地址和结束地址之前,还包括:
在执行远程直接数据存取时,将远端主机携带的查询地址与对应的内存区域的地址作差,得到所述起始地址;
将所述起始地址与所述远端主机需查询的表项长度相加,得到所述结束地址。
在本发明的一些实施例中,查询表项时,每个时钟周期发起读取所述地址存储器和/所述长度存储器命令;
所述地址存储器一次返回多个虚拟地址和对应的表项长度和,通过相应的多对if-else函数并行判断各表项长度和与所述起始地址的值,以及各表项长度和与所述结束地址的值,以得到所述目标虚拟地址;
所述长度存储器一次返回多个表项的长度,通过相应的多对if-else函数并行判断各表项长度与所述起始地址的值,以及各表项长度与所述结束地址的值,以得到所述目标存储序数。
在本发明的一些实施例中,读取长度存储器中所述目标虚拟地址对应的各表项的长度,根据所述起始地址和所述结束地址所确定的长度范围筛选出一个或多个目标表项长度,还包括:
当所述起始地址大于第一表项长度、小于第二表项长度,则所述目标表项长度以所述第二表项长度开始,其中,所述第一表项长度与所述第二表项长度在所述长度存储器内相邻存储;
且当所述结束地址大于第三表项长度、小于第四表项长度,则所述目标表项长度以所述第三表项长度结束,其中,所述第三表项长度与所述第四表项长度在所述长度存储器内相邻存储;
则所述目标表项长度包括所述第二表项长度、所述第三表项长度以及所述第二表项长度与所述第三表项长度之间存储在所述长度存储器内的表项长度。
另一方面,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上文中提及的所述基于地址池的内存转换表表项管理方法和所述基于地址池的内存转换表表项查询方法的步骤。
本发明的有益效果至少是:
本发明提供一种基于地址池的内存转换表表项管理方法,通过获取地址池,在内存转换表顺序下发表项时,每当下发的表项的数量达到kn+1,从地址池内申请一个虚拟地址;将各虚拟地址匹配至长度存储器内的多个存储单元地址,将各表项的长度顺序写入长度存储器中,并标记每个表项在相应存储单元内的存储序数;计算各虚拟地址对应的表项长度和,将各虚拟地址及其对应的表项长度和按照顺序写入地址存储器;以各表项对应的所述虚拟地址及所述存储序数作为索引,将各表项顺序存储在外挂存储器中。表项存储采用申请地址池中的地址的方式,灵活分配内存转换表表项存储空间,当注册内存空间时才申请占用,实现存储空间的高效利用,同时为表项查询提供基础。
进一步的,本发明提供一种基于地址池的内存转换表表项查询方法,通过获取待查询表项对应的内存区域,以及在内存区域内的起始地址和结束地址;读取该内存区域在地址存储器中对应的多个虚拟地址和对应的表项长度和,根据起始地址和结束地址所确定的长度范围获取目标虚拟地址;读取长度存储器中目标虚拟地址对应的各表项的长度,根据起始地址和结束地址所确定的长度范围获取目标存储序数;以目标虚拟地址和目标存储序数作为索引读取外挂存储器中对应的目标表项。对地址存储器和长度存储器采用并行查找和多级查找的方式,每次内存访问物理链路的延时确定,大大降低整体表项数量多、目标表项在整体表项靠后位置的延时。
本发明的附加优点、目的,以及特征将在下面的描述中将部分地加以阐述,且将对于本领域普通技术人员在研究下文后部分地变得明显,或者可以根据本发明的实践而获知。本发明的目的和其它优点可以通过在说明书以及附图中具体指出的结构实现到并获得。
本领域技术人员将会理解的是,能够用本发明实现的目的和优点不限于以上具体所述,并且根据以下详细说明将更清楚地理解本发明能够实现的上述和其他目的。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的限定。在附图中:
图1为本发明一实施例中基于地址池的内存转换表表项管理方法的步骤示意图。
图2为本发明一实施例中基于地址池的内存转换表表项管理方法、查询方法的结构框架示意图。
图3为本发明一实施例中基于地址池的内存转换表表项管理方法的流程示意图。
图4为本发明一实施例中基于地址池的内存转换表表项查询方法的步骤示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施方式和附图,对本发明做进一步详细说明。在此,本发明的示意性实施方式及其说明用于解释本发明,但并不作为对本发明的限定。
在此,还需要说明的是,为了避免因不必要的细节而模糊了本发明,在附图中仅仅示出了与根据本发明的方案密切相关的结构和/或处理步骤,而省略了与本发明关系不大的其他细节。
应该强调,术语“包括/包含”在本文使用时指特征、要素、步骤或组件的存在,但并不排除一个或更多个其它特征、要素、步骤或组件的存在或附加。
在此,还需要说明的是,如果没有特殊说明,术语“连接”在本文不仅可以指直接连接,也可以表示存在中间物的间接连接。
在下文中,将参考附图描述本发明的实施例。在附图中,相同的附图标记代表相同或类似的部件,或者相同或类似的步骤。
这里需要强调的是,在下文中提及的各步骤标记并不是对各步骤先后顺序的限定,而应当理解为可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。
为了解决现有技术由于顺序访问表项导致的物理链路延时不确定以及注册内存区域导致的存储空间浪费问题,本发明提供一种基于地址池的内存转换表表项管理方法,如图1所示,该方法包括以下步骤S101~S104:
步骤S101:获取地址池,在内存转换表顺序下发表项时,每当下发的表项的数量达到kn+1,按照预设顺序从地址池内申请一个虚拟地址,其中,k=0,1,2,…;n为预设的正整数。
步骤S102:将各虚拟地址一对一地匹配至长度存储器内的多个存储单元地址,将各表项的长度按照下发顺序写入长度存储器中相应虚拟地址对应的存储单元,并标记每个表项在相应存储单元内的存储序数。
步骤S103:将注册的内存区域地址一对一地匹配至地址存储器内的多个存储单元地址,计算各虚拟地址对应的各表项的表项长度和,将各虚拟地址及其对应的表项长度和按照各虚拟地址申请顺序写入地址存储器。
步骤S104:将各表项按照下发顺序存储在外挂存储器中,并以各表项对应的虚拟地址及存储序数作为索引。
如图2所示,为基于地址池的内存转换表表项管理方法的整体结构框图,其中,包括控制器、地址存储器、长度存储器、地址池和外挂存储器。
如图3所示,为本发明一实施例中基于地址池的内存转换表表项管理方法的流程示意图,其中,addr_pool_fifo对应图2中的地址池;addr_store_arm对应图2中的地址存储器;len_store_ram对应图2中的长度存储器;DDR对应图2中的外挂存储器。
步骤S101~S104均在控制器内执行,实现相应的功能。
在步骤S101中,内存转换表每下发表项数达到预设数量的整倍数加1个时,向地址池按照预设顺序申请一个虚拟地址。
其中,预设数量的整倍数加1用式子kn+1表示,n为预设的正整数个表项数;k为0,1,2,…的自然数,表示n的倍数。示例性的,n取20,k取0、1、2、…,则表示内存转换表每下发1、21、41、…个表项时,即20的整倍数加1个表项数时,向地址池申请一个虚拟地址。
在一些实施例中,在步骤S101获取地址池之前,在网卡初始化过程中,向初始地址池中连续写入递增的数据,直至写满,以得到本发明所需的地址池;并将写入的数据作为地址池中的地址。
具体的,在网卡初始化过程中,不断向初始地址池写入0、1、…、m递增的数据,直至写满;其中,m是正整数。示例性的,写入的整数数据0、1、…、m分别对应于地址addr0、addr1、…、addrm。
在一些实施例中,地址池数据进出采用先进先出(FIFO,First Input FirstOutput)的方式,向地址池申请虚拟地址时,先申请之前先写入的数据。具体的,从地址池中读取一个数据表示申请地址,读取的数据作为申请的虚拟地址;向地址池写入一个数据表示释放地址。
在步骤S102中,以申请得到的虚拟地址作为索引,虚拟地址按照申请顺序与长度存储器内的存储单元形成一对一的映射,在步骤S101中可知,一个虚拟地址最多服务n个表项,即相应存储单元存储n个表项的长度。因此,在执行时,每下发1个表项,根据该表项对应的虚拟地址,将该表项的长度写入长度存储器对应的存储单元,并标记该表项的长度在对应存储单元内的存储序数。
在一些实施例中,长度存储器采用快随机存储器,每个地址能存储一定位宽的数据。示例性的,当n为20时,长度存储器中每个存储单元存储20个表项的长度。
每次下发的表项的长度依次填满长度存储器对应存储单元。示例性的,将第一次下发的表项的长度存储至存储单元的0~31bit;将第二次下发的表项存储至存储单元的32~63bit。
示例性的,在长度存储器的一个存储单元中,从地址池中从申请的虚拟地址为addr0,对应的20个表项的长度分别用len0、len1、len2、…、len19表示,依次存储在长度存储器addr0对应的存储单元地址中。同时,标记每个存储单元内存储的表项长度的存储序数,len0在该存储单元内对应的存储序数为0;len1在该存储单元内对应的存储序数为1;len2在该存储单元内对应的存储序数为2;以此类推,len19在该存储单元内对应的存储序数为19。对于每个虚拟地址,即每个存储单元中的各表项长度的存储序数都从预设数开始排序,示例性的,预设数为0。
在使用RDMA远程直接数据存取技术时,需要在内存中进行注册,即注册内存区域MR,以划分一段特定区域提供远端主机进行访问,将注册的各MR与地址存储器内的多个存储单元形成映射,MR的地址匹配各存储单元的地址。
在步骤S103中,每下发n个表项时,将从地址池中申请的各虚拟地址以及对应表项长度和写入地址存储器对应的存储单元内。
在一些实施例中,地址存储器采用快随机存储器,每个地址能够存储一定位宽的数据。示例性的,n为20时,每下发20个表项,将这20个表项对应的虚拟地址以及这20个表项的长度和写入地址存储器。地址存储器中每个存储单元能够按照虚拟地址申请顺序存储20个虚拟地址以及对应的20个表项长度和。
同时,与长度存储器一致,每次写入的虚拟地址以及对应的表项长度和需依次填满地址存储器对应的存储单元。示例性的,将第一次写入的虚拟地址及其表项长度和存储至存储单元的0~31bit;将第二次写入的虚拟地址及其表项长度和存储至存储单元的32~63bit。
示例性的,在地址存储器的第一个存储单元中,依次存储20个虚拟地址以及对应的20个表项长度和,分别表示为aadr0,lens_0;aadr1,lens_1;aadr2,lens_2;…;aadr19,lens_19。
在步骤S104中,以每个表项的虚拟地址及其长度在长度存储器中的存储序数做索引,将各表项顺序存储在外挂存储器中。
示例性的,下发第一个表项时,该表项的虚拟地址为addr0,该表项的存储序数为0,则以addr0,0作为索引,将MTT 0存储至外挂存储器;下发第二个表项时,该表项的虚拟地址为addr0,该表项的存储序数为1,则以addr0,1作为索引,将MTT 1存储至外挂存储器。
在一些实施例中,外挂存储器采用双倍速率同步动态随机存储器。其中,双倍速率同步动态随机存储器(Double Data Rate SDRAM)在本发明中缩写为DDR,是内存的一种;SDRAM是Synchronous Dynamic RandomAccess Memory的缩写,即同步动态随机存取存储器。
现有技术中,在执行远程直接数据存取时,大多都采用DDR存储MTT表项,在收到访问请求后,读取DDR存储的相应表项。在DDR中,一个地址对应的存储单元能存储256bit数据,读取数据时,每个时钟周期只能读取一个地址对应的256bit数据。示例性的,当存储的表项的物理地址和长度共占用256bit时,DDR一次只能返回一个表项的地理地址和长度。同时,由于现有技术方案的索引关系,每次索引只能从存储最开始的位置读取表项,因此只能采用顺序访问,每个时钟周期返回一个存储单元存储的信息。若命中的表项在整体表项靠后位置,则需多个时钟周期才能查到正确的结果。
在一些实施例中,在步骤S104之后,接收外挂存储器反馈的存储结果信息,在存储结果信息表示存储错误的情况下生成告警信息,并提示重新存储。
当所有的MTT表项和/或本次远程访问所需的MTT表项全部存储至外挂存储器后,反馈存储结果信息,提示存储结束。其中,存储结果信息包括存储成功信息和存储失败信息,当存储结果信息为存储成功信息时,表示外挂存储器已处于待查询状态;当存储结果信息为存储失败信息时,则表示存储内容出现错误和/或存储过程出现异常,立即生成告警信息,提示重新存储和/或人工复查。
本发明还提供一种基于地址池的内存转换表表项查询方法,该方法用于查询上文中基于地址池的内存转换表表项管理方法存储的表项,如图4所示,该方法包括以下步骤S201~S204:
步骤S201:获取待查询表项对应的内存区域,以及在该内存区域内的起始地址和结束地址。
步骤S202:读取该内存区域在地址存储器中对应的多个虚拟地址和对应的表项长度和,根据起始地址和结束地址所确定的长度范围筛选出一个或多个目标表项长度和,以获取目标表项长度和对应的一个或多个目标虚拟地址。
步骤S203:读取长度存储器中目标虚拟地址对应的各表项的长度,根据起始地址和结束地址所确定的长度范围筛选出一个或多个目标表项长度,以获取各目标表项长度在目标虚拟地址对应存储单元内的目标存储序数。
步骤S204:以目标虚拟地址和目标存储序数作为索引,读取外挂存储器中对应的目标表项。
如图2所示,为基于地址池的内存转换表表项查询方法的整体结构框图,其中,包括控制器、地址存储器、长度存储器、地址池和外挂存储器。
步骤S201~S204均在控制器内执行,实现相应的功能。
在步骤S201中,在使用RDMA远程直接数据存取技术时,远端主机与本端主机交互对应内存区域的地址和表项的长度,以确定远端主机查询地址的范围。
访问时,远端主机携带对应的查询地址、查询长度和注册对应内存区域的指针标记,将查询地址与对应内存区域地址作差,得到一个长度量,记作初始地址;将初始地址与查询的表项长度相加,得到结束地址;根据初始地址与结束地址确定长度范围。
在步骤S202中,根据对应内存区域及其指针标记,确定地址存储器及其需查找的各存储单元。对地址存储器进行并行查找,根据地址存储器的位宽,在一个时钟周期内,同时读取一个存储单元内存储的多个虚拟地址和对应的表项长度和。将起始地址逐一与各表项长度和进行比较,确定起始位;将结束地址逐一与各表项长度和进行比较,确定结束位,筛选出一个或多个目标表项长度和,通过目标表项长度和获取对应的目标虚拟地址。
示例性的,在地址存储器中,一个存储单元存储20个虚拟地址和对应的20个表项长度和,则在一个时钟周期内,同时读取20个虚拟地址和对应的20个表项长度和。通过20个if-else、if-else函数并行判断起始地址、结束地址与20个表项长度和的大小。
将该存储单元存储20个虚拟地址和对应的20个表项长度和分别表示为aadr0,lens_0;aadr1,lens_1;aadr2,lens_2;…;aadr19,lens_19。当判断结果为:起始地址大于lens_0、大于lens_1、小于lens_2、小于lens_3、…、小于lens_19时,将lens_2作为起始位;当结束地址大于lens_0、…、大于lens_3、小于lens_4、小于lens_5、…、小于lens_19时,将lens_3作为结束位。由此,确定目标表项长度和为lens_2、lens_3、lens_4、lens_5、lens_6,则对应的目标虚拟地址为addr2、aadr3。
在步骤S203中,将目标虚拟地址作为索引,确定目标虚拟地址对应的表项长度在长度存储器中存储的存储单元地址。对根据目标虚拟地址确定的存储单元进行并行查找,根据长度存储器的位宽,在一个时钟周期内,同时读取一个存储单元内存储的多个表项长度。将起始地址逐一与各表项长度进行比较,确定起始位;将结束地址逐一与各表项长度进行比较,确定结束位,筛选出一个或多个目标表项长度,通过目标表项长度获取对应的目标存储序数。
在一些实施例中,读取长度存储器中目标虚拟地址对应的各表项的长度,根据起始地址和结束地址所确定的长度范围筛选出一个或多个目标表项长度,还包括:当起始地址大于第一表项长度、小于第二表项长度,则目标表项长度以第二表项长度开始;且当结束地址大于第三表项长度、小于第四表项长度,则目标表项长度以第三表项长度结束;则目标表项长度包括第二表项长度、第三表项长度以及第二表项长度与第三表项长度之间存储在长度存储器内的表项长度。其中,第一表项长度、第二表项长度、第三表项长度和第四表项长度按照书写顺序先后存储在长度存储器内,第一表项长度和第二表项长度相邻存储,第三表项长度和第四表项长度相邻存储,第二表项长度和第三表项长度可以相邻存储,可以不相邻存储。
示例性的,在长度存储器中,一个存储单元存储20个表项的长度,则在一个时钟周期内,同时读取20个表项的长度,并通过20个if-else、if-else函数并行判断起始地址、结束地址与20个表项的长度的大小。
根据上文中得到的目标虚拟地址addr2和aadr3,分别确定addr2在长度存储器内存储的20个表项长度的存储单元和aadr3在长度存储器内存储的20个表项长度的存储单元。addr2对应的20个表项长度分别表示为:len40、len41、len42、…、len59;addr3对应的20个表项长度分别表示为:len60、len61、len62、…、len79。当判断结果为:起始地址大于len40、大于len41、…、大于len57、小于len58、小于len59,且起始地址均小于addr3对应的表项的长度时,将len58作为起始位;当结束地址大于len60、大于len61、小于len62、小于len63、…、小于len79,且结束地址均大于addr2对应的表项长度时,将len61作为结束位,即上文提及的第一表项长度、第二表项长度、第三表项长度和第四表项长度分别对应于len58、len59、len61和len62。由此,确定目标表项长度为len58、len59、len60、len61,则目标表项长度对应的目标存储序数分别为18、19、0、1,结合目标表项长度对应的虚拟地址,最终目标虚拟地址和目标存储序数的组合表示为:addr2,18;addr2,19;addr3,0;addr3,1。
在步骤S202和步骤S203中,地址存储器和长度存储器均采用并行查找的方法,同时也采用多级查找的方法。具体的,由于在地址存储器中,每个表项长度和对应于长度存储器中一个存储单元对应的20个表项长度的总长度,因此,第一级查找在地址存储器中执行,以表项粒度20对各表项长度和进行查找,得到一个较为宽泛的目标结果;得到经第一级查找命中的目标虚拟地址后,进行第二级查找,根据目标虚拟地址确定长度存储器相应的存储单元后,以表项粒度1对各表项长度进行查找,以得到一个精确的目标结果。其中,查找级数可根据实际情况进行增加。
在步骤S204中,以目标虚拟地址和目标存储序数作为索引,读取外挂存储器中对应的目标表项。
示例性的,根据上文中得到的最终目标虚拟地址和目标存储序数的组合addr2,18;addr2,19;addr3,0;addr3,1,读取外挂存储器中对应的表项MTT 58、MTT 59、MTT 60、MTT 61,得到目标表项,最终确定要访问的实际物理地址。
下面结合一具体实施例展示本发明的技术效果:
根据实际测算,在600M时钟下,穿透PCIE读取数据并返回的延时约为800ns,DDR读取延时约为100ns。
本发明相较于现有技术中将MTT存储在本端主机侧内存的方案,能够极大地节省穿透PCIE的延时。
本发明相较于现有技术中将MTT存储在本端主机侧内存和/或将MTT存储在硬件外挂DDR的方案,现在技术方案中,在访问注册单个MR表项数量很多时,示例性的,有1000个表项且此次访问目标为第1000个表项,则顺序查找需花费1000个时钟周期;而采用本发明提供的基于地址池的内存转换表表项管理方法、查询方法只需要花费6个时钟周期即可确定目标表项的位置。同时,现在技术方案中,在注册MR时,表项数量固定。示例性的,注册1024个MR,每个MR固定能够存储1024个表项,每个表项代表4K的内存区域,则MR只能固定最大能够访问4M。而本发明采用向地址池申请地址的方式,MR最大能够访问受地址池限制,即最大能访问4G,并且当用户注册MR较少时,可减少地址池的深度,从而达到节省存储资源的目的。
本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现基于地址池的内存转换表表项管理方法和基于地址池的内存转换表表项查询方法的步骤。
与上述方法相应地,本发明还提供了一种设备,该设备包括计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有计算机指令,所述处理器用于执行所述存储器中存储的计算机指令,当所述计算机指令被处理器执行时该设备实现如前所述方法的步骤。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时以实现前述边缘计算服务器部署方法的步骤。该计算机可读存储介质可以是有形存储介质,诸如随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、软盘、硬盘、可移动存储盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质。
综上所述,本发明提供一种基于地址池的内存转换表表项管理方法,通过获取地址池,在内存转换表顺序下发表项时,每当下发的表项的数量达到kn+1,从地址池内申请一个虚拟地址;将各虚拟地址匹配至长度存储器内的多个存储单元地址,将各表项的长度顺序写入长度存储器中,并标记每个表项在相应存储单元内的存储序数;计算各虚拟地址对应的表项长度和,将各虚拟地址及其对应的表项长度和按照顺序写入地址存储器;以各表项对应的所述虚拟地址及所述存储序数作为索引,将各表项顺序存储在外挂存储器中。表项存储采用申请地址池中的地址的方式,灵活分配内存转换表表项存储空间,当注册内存空间时才申请占用,实现存储空间的高效利用,同时为表项查询提供基础。
进一步的,本发明提供一种基于地址池的内存转换表表项查询方法,通过获取待查询表项对应的内存区域,以及在内存区域内的起始地址和结束地址;读取该内存区域在地址存储器中对应的多个虚拟地址和对应的表项长度和,根据起始地址和结束地址所确定的长度范围获取目标虚拟地址;读取长度存储器中目标虚拟地址对应的各表项的长度,根据起始地址和结束地址所确定的长度范围获取目标存储序数;以目标虚拟地址和目标存储序数作为索引读取外挂存储器中对应的目标表项。对地址存储器和长度存储器采用并行查找和多级查找的方式,每次内存访问物理链路的延时确定,大大降低整体表项数量多、目标表项在整体表项靠后位置的延时。
本领域普通技术人员应该可以明白,结合本文中所公开的实施方式描述的各示例性的组成部分、系统和方法,能够以硬件、软件或者二者的结合来实现。具体究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本发明的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。
需要明确的是,本发明并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本发明的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本发明的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
本发明中,针对一个实施方式描述和/或例示的特征,可以在一个或更多个其它实施方式中以相同方式或以类似方式使用,和/或与其他实施方式的特征相结合或代替其他实施方式的特征。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域的技术人员来说,本发明实施例可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于地址池的内存转换表表项管理方法,其特征在于,该方法包括以下步骤:
获取地址池,在内存转换表顺序下发表项时,每当下发的表项的数量达到kn+1,按照预设顺序从所述地址池内申请一个虚拟地址,其中,k=0,1,2,…;n为预设的正整数;
将各虚拟地址一对一地匹配至长度存储器内的多个存储单元地址,将各表项的长度按照下发顺序写入所述长度存储器中相应虚拟地址对应的存储单元,并标记每个表项在相应存储单元内的存储序数;
将注册的内存区域地址一对一地匹配至地址存储器内的多个存储单元地址,计算各虚拟地址对应的各表项的表项长度和,将各虚拟地址及其对应的表项长度和按照各虚拟地址申请顺序写入所述地址存储器;
以各表项对应的所述虚拟地址及所述存储序数作为索引,将各表项按照下发顺序存储在外挂存储器中。
2.根据权利要求1所述的基于地址池的内存转换表表项管理方法,其特征在于,在获取所述地址池之前,还包括:
向初始地址池中连续写入递增的数据,直至写满,以得到所述地址池;将所述数据作为所述地址池中的地址。
3.根据权利要求2所述的基于地址池的内存转换表表项管理方法,其特征在于,按照预设顺序从所述地址池内申请一个虚拟地址,包括:
采用先进先出的方式从所述地址池数据中获取虚拟地址。
4.根据权利要求1所述的基于地址池的内存转换表表项管理方法,其特征在于,所述外挂存储器采用双倍速率同步动态随机存储器,所述长度存储器和所述地址存储器采用块随机存储器。
5.根据权利要求1所述的基于地址池的内存转换表表项管理方法,其特征在于,将各表项的按照下发顺序存储在外挂存储器中之后,还包括:
接收所述外挂存储器反馈的存储结果信息,在所述存储结果信息表示存储错误的情况下生成告警信息,并提示重新存储。
6.一种基于地址池的内存转换表表项查询方法,其特征在于,该方法用于查询权利要求1至5中任一项所述基于地址池的内存转换表表项管理方法存储的表项,所述方法包括以下步骤:
获取待查询表项对应的内存区域,以及在所述内存区域内的起始地址和结束地址;
读取所述内存区域在地址存储器中对应的多个虚拟地址和对应的表项长度和,根据所述起始地址和所述结束地址所确定的长度范围筛选出一个或多个目标表项长度和,以获取所述目标表项长度和对应的一个或多个目标虚拟地址;
读取长度存储器中所述目标虚拟地址对应的各表项的长度,根据所述起始地址和所述结束地址所确定的长度范围筛选出一个或多个目标表项长度,以获取各目标表项长度在所述目标虚拟地址对应存储单元内的目标存储序数;
以所述目标虚拟地址和所述目标存储序数作为索引,读取所述外挂存储器中对应的目标表项。
7.根据权利要求6所述的基于地址池的内存转换表表项查询方法,其特征在于,获取待查询表项对应的内存区域,以及在所述内存区域内的起始地址和结束地址之前,还包括:
在执行远程直接数据存取时,将远端主机携带的查询地址与对应的内存区域的地址作差,得到所述起始地址;
将所述起始地址与所述远端主机需查询的表项长度相加,得到所述结束地址。
8.根据权利要求6所述的基于地址池的内存转换表表项查询方法,其特征在于,查询表项时,每个时钟周期发起读取所述地址存储器和/所述长度存储器命令;
所述地址存储器一次返回多个虚拟地址和对应的表项长度和,通过相应的多对if-else函数并行判断各表项长度和与所述起始地址的值,以及各表项长度和与所述结束地址的值,以得到所述目标虚拟地址;
所述长度存储器一次返回多个表项的长度,通过相应的多对if-else函数并行判断各表项长度与所述起始地址的值,以及各表项长度与所述结束地址的值,以得到所述目标存储序数。
9.根据权利要求8所述的基于地址池的内存转换表表项查询方法,其特征在于,读取长度存储器中所述目标虚拟地址对应的各表项的长度,根据所述起始地址和所述结束地址所确定的长度范围筛选出一个或多个目标表项长度,还包括:
当所述起始地址大于第一表项长度、小于第二表项长度,则所述目标表项长度以所述第二表项长度开始,其中,所述第一表项长度与所述第二表项长度长度在所述长度存储器内相邻存储;
且当所述结束地址大于第三表项长度、小于第四表项长度,则所述目标表项长度以所述第三表项长度结束,其中,所述第三表项长度与所述第四表项长度长度在所述长度存储器内相邻存储;
则所述目标表项长度包括所述第二表项长度、所述第三表项长度以及所述第二表项长度与所述第三表项长度之间存储在所述长度存储器内的表项长度。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至9中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211222897.3A CN115640241B (zh) | 2022-10-08 | 2022-10-08 | 基于地址池的内存转换表表项管理方法、查询方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211222897.3A CN115640241B (zh) | 2022-10-08 | 2022-10-08 | 基于地址池的内存转换表表项管理方法、查询方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115640241A true CN115640241A (zh) | 2023-01-24 |
CN115640241B CN115640241B (zh) | 2023-06-09 |
Family
ID=84942091
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211222897.3A Active CN115640241B (zh) | 2022-10-08 | 2022-10-08 | 基于地址池的内存转换表表项管理方法、查询方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115640241B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103793331A (zh) * | 2012-10-31 | 2014-05-14 | 安凯(广州)微电子技术有限公司 | 一种物理内存管理方法及装置 |
US20150212817A1 (en) * | 2014-01-30 | 2015-07-30 | Mellanox Technologies, Ltd. | Direct IO access from a CPU's instruction stream |
CN107451054A (zh) * | 2017-07-26 | 2017-12-08 | 武汉虹信通信技术有限责任公司 | 一种用于linux环境中的内存池调试方法 |
CN108491334A (zh) * | 2018-03-08 | 2018-09-04 | 北京东土科技股份有限公司 | 一种嵌入式实时系统的物理内存管理方法及装置 |
CN111221758A (zh) * | 2019-09-30 | 2020-06-02 | 华为技术有限公司 | 处理远程直接内存访问请求的方法和计算机设备 |
CN111949572A (zh) * | 2020-08-24 | 2020-11-17 | 海光信息技术有限公司 | 页表条目合并方法、装置及电子设备 |
CN113836054A (zh) * | 2021-08-30 | 2021-12-24 | 中国人民解放军军事科学院国防科技创新研究院 | 用于gpu的内存页管理方法和内存页转换方法 |
CN113868155A (zh) * | 2021-11-30 | 2021-12-31 | 苏州浪潮智能科技有限公司 | 一种内存空间扩展方法、装置及电子设备和存储介质 |
CN114780453A (zh) * | 2022-04-26 | 2022-07-22 | 中电科申泰信息科技有限公司 | 一种地址转换缓存表项管理方法 |
-
2022
- 2022-10-08 CN CN202211222897.3A patent/CN115640241B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103793331A (zh) * | 2012-10-31 | 2014-05-14 | 安凯(广州)微电子技术有限公司 | 一种物理内存管理方法及装置 |
US20150212817A1 (en) * | 2014-01-30 | 2015-07-30 | Mellanox Technologies, Ltd. | Direct IO access from a CPU's instruction stream |
CN107451054A (zh) * | 2017-07-26 | 2017-12-08 | 武汉虹信通信技术有限责任公司 | 一种用于linux环境中的内存池调试方法 |
CN108491334A (zh) * | 2018-03-08 | 2018-09-04 | 北京东土科技股份有限公司 | 一种嵌入式实时系统的物理内存管理方法及装置 |
CN111221758A (zh) * | 2019-09-30 | 2020-06-02 | 华为技术有限公司 | 处理远程直接内存访问请求的方法和计算机设备 |
CN111949572A (zh) * | 2020-08-24 | 2020-11-17 | 海光信息技术有限公司 | 页表条目合并方法、装置及电子设备 |
CN113836054A (zh) * | 2021-08-30 | 2021-12-24 | 中国人民解放军军事科学院国防科技创新研究院 | 用于gpu的内存页管理方法和内存页转换方法 |
CN113868155A (zh) * | 2021-11-30 | 2021-12-31 | 苏州浪潮智能科技有限公司 | 一种内存空间扩展方法、装置及电子设备和存储介质 |
CN114780453A (zh) * | 2022-04-26 | 2022-07-22 | 中电科申泰信息科技有限公司 | 一种地址转换缓存表项管理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN115640241B (zh) | 2023-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105830022B (zh) | 访问文件的方法和装置 | |
EP0642086B1 (en) | Virtual address to physical address translation cache that supports multiple page sizes | |
EP3964967A1 (en) | Cache memory and method of using same | |
CN108665939B (zh) | 为存储器提供ecc的方法与装置 | |
CN114036077B (zh) | 数据处理方法及相关装置 | |
CN107430550A (zh) | 非对称集组合的高速缓存 | |
CN110851474A (zh) | 数据查询方法、数据库中间件、数据查询设备及存储介质 | |
CN109299111A (zh) | 一种元数据查询方法、装置、设备及计算机可读存储介质 | |
CN107784073B (zh) | 一种本地缓存的数据查询方法、存储介质和服务器 | |
CN114546898A (zh) | 一种tlb管理方法、装置、设备及存储介质 | |
CN113835639B (zh) | 一种i/o请求处理方法、装置、设备及可读存储介质 | |
CN117331853B (zh) | 缓存处理方法、装置、电子设备及介质 | |
CN115640241B (zh) | 基于地址池的内存转换表表项管理方法、查询方法及装置 | |
CN104536962A (zh) | 一种用于嵌入式系统中的数据查询方法及装置 | |
CN109840150A (zh) | 存储器分配器 | |
US20170192905A1 (en) | Sequential access to page metadata stored in a multi-level page table | |
CN115658588B (zh) | 一种axi总线的id压缩装置及方法 | |
CN115190102B (zh) | 信息广播方法、装置、电子单元、soc及电子设备 | |
CN114625719B (zh) | 一种基于移动滤波框架的动态集合管理方法和系统 | |
CN115794667A (zh) | 内存管理方法、系统、组件及设备 | |
CN110704338A (zh) | 地址转换装置、人工智能芯片及电子设备 | |
CN101004741A (zh) | 一种改进的哈希方法及其应用 | |
US20070255927A1 (en) | Data access in a data processing system | |
CN113961487A (zh) | 加速存储器存取的电子装置及方法 | |
CN118276944B (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 |