[发明专利]一种共享内存管理的方法和设备有效
申请号: | 202011562692.0 | 申请日: | 2020-12-25 |
公开(公告)号: | CN112612623B | 公开(公告)日: | 2022-08-09 |
发明(设计)人: | 冯唐智;吴睿振;崔健;余洪斌 | 申请(专利权)人: | 苏州浪潮智能科技有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54;G06F9/50;G06F12/02 |
代理公司: | 北京连和连知识产权代理有限公司 11278 | 代理人: | 刘小峰;陈黎明 |
地址: | 215100 江苏省苏州市吴*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 共享 内存 管理 方法 设备 | ||
本发明提供了一种共享内存管理的方法和设备,包括:将系统中的一个核设为主核,主核向系统申请阈值数量空闲的hugepage块并将阈值数量空闲的hugepage块全部映射到主核的虚拟地址空间并按照hugepage块的物理地址大小升序排列;将升序排列后的hugepage块按照物理地址是否连续进行分段并判断所有段中是否存在满足子系统内存需求的段;响应于所有段中存在满足子系统内存需求的段,将满足子系统内存需求的段按照长度大小进行降序排列并对排序后的段进行重映射以得到若干个段内虚实地址均连续的段;响应于若干个段内虚实地址均连续的段中存在满足系统内存需求的段,释放满足系统内存需求的段以外的所有hugepage块。通过使用本发明的方案,能够降低共享内存在多核之间流转的管理复杂度。
技术领域
本领域涉及计算机领域,并且更具体地涉及一种共享内存管理的方法和设备。
背景技术
在许多基于硬件加速外设和多核通用处理器的软硬件并行处理系统中,会将一个完整的处理流程划分成多个处理阶段,并根据各个处理阶段的特性,将其派分到硬件加速外设或者处理器核上,硬件加速外设和多个处理器核同时处理不同的阶段,以实现流水线式并行处理,进而提高系统的整体性能。一般来说,硬件加速外设适合处理逻辑简单但是数据流量大的场景,因此该部分往往控制逻辑简单但是计算密集,且和内存交互频繁。通用处理器便于软件编程,适合处理控制逻辑复杂的流程。在软件层面,还会根据不同的处理阶段,将各个处理流程进一步细分并分派到不同的处理器核,各个核同时进行流水线式并行处理,以提高软件处理效率。实际实现中,会使用多进程技术,每个进程绑定到一个处理器核上,这样系统实现便可以抛弃处理器的差异性,直接进行基于操作系统的多进程编码。任意时刻每个进程都只是处理某一特定阶段,逻辑相对简单,软件能够根据本阶段的特点做出针对性的深度优化,因此这种处理方式具有高可靠性和高效率的特点。由于兼顾了处理效率和灵活性,因此这种基于硬件加速外设和多核通用处理器的软硬件并行处理系统具有使用场景丰富、性能和可靠性较高的特点,但是在方案上也存在以下两个问题:1.各阶段处理的数据在逻辑上是一条完整数据的不同阶段,前一阶段的输出作为下一阶段的输入。由于不同核的虚拟地址和物理地址可能不同,因此数据从上一阶段流转到下一阶段的跨核流转可能存在数据拷贝的操作;2.内存使用限制问题。考虑到成本和内存访问效率问题,许多应用场景中外设硬件一般没有MMU单元,因此只能访问实地址连续的内存空间。处理器一般包含MMU单元,因此能够访问实地址不连续的内存空间。考虑到灵活性、内存访问效率及安全性等原因,软件使用的地址一般是虚拟地址。由于操作系统内存分配机制的限制,其分配的内存即使虚拟地址连续,但是实际地址往往不连续,此时外设硬件访问这些空间可能会导致硬件访问异常。此外,即使现有的部分高端处理器,例如一些高端的基于ARMv8及以上内核版本的Cortex-A系列及高性能x86(64位版本)的处理器都带有用于外设的MMU(IOMMU)模块,可以实现硬件外设内存访问时虚实地址的转换,但是IOMMU单元的TLB缓冲区容量往往较小,在高并发大容量的数据处理过程中极容易出现地址缺页中断,导致处理效率降低,影响系统的吞吐率。
针对以上问题,系统最开始设计时就会提前规划出一段物理地址连续的内存作为不同处理阶段的共享内存,并在系统启动时就规划好这段内存的物理地址和虚拟地址在所有处理器核上的映射关系。这样,在一个流程处理完后,输出数据作为下一个流程的输入数据,便可以根据各个核私有的TLB表(地址转换表。一块物理内存的实地址和其在进程中的虚拟地址转换关系称为一个TLB转换条目(item),这块物理内存称为一个页,页面的默认大小为4KB。TLB是不同转换条目的集合。操作系统是以页为单位进行内存虚实地址管理的)确定其私有的虚拟地址,从而实现对相同物理地址的访问,达到数据共享的目的,省去了内参拷贝操作。
以上方案能够在一定程度上提高协议栈的性能,但是也存在以下问题:1.使用受限,需要在整个系统设计时就预留一定物理内存资源和虚拟地址空间。这种提前预留与规划资源主要用于定制的嵌入式系统,例如基站处理单元和专用服务器,但是不适合“板卡+通用服务器”的使用场景。此外,资源预留过多会导致资源浪费,过少会导致协议栈性能降低甚至失效。2.
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于苏州浪潮智能科技有限公司,未经苏州浪潮智能科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011562692.0/2.html,转载请声明来源钻瓜专利网。