[发明专利]一种内存分配方法和装置有效
申请号: | 202010216167.7 | 申请日: | 2020-03-25 |
公开(公告)号: | CN111444016B | 公开(公告)日: | 2023-10-13 |
发明(设计)人: | 薛小明 | 申请(专利权)人: | 瑞芯微电子股份有限公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50;G06F12/02 |
代理公司: | 福州市景弘专利代理事务所(普通合伙) 35219 | 代理人: | 徐剑兵;张忠波 |
地址: | 350003 福建省*** | 国省代码: | 福建;35 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 内存 分配 方法 装置 | ||
发明公开了一种内存分配方法,包括如下步骤:扫描每段IOPA对应的内存地址信息。按照内存地址信息中对应的列信息进行顺序化,更新IOPA对应的内存地址信息为顺序化后的内存地址信息。将排序后的IOPA发送至IOMMU,并进行IOVA的映射。上述技术方案本案将分配到的每段IOPA的内存地址信息进行扫描,将连续PFN的地址IOPA进行顺序化。再对不了连续PFN的地址的IOPA的index进行扫描,处于同一个chunk内的也进行顺序化。减少因为内存碎片导致的显示模块的性能损耗,同时降低开销,提升产品性能。
技术领域
本发明涉及数据读取领域,尤其涉及一种内存分配方法和装置。
背景技术
目前业内嵌入式设备的显示模块对于内存的访问都有使用IOMMU,其功能是将非连续的物理内存(IOPA)映射成连续的虚拟内存(IOVA),本质原因是显示模块的DMA需要访问连续的地址,但是系统并不能总是保证大块连续的物理地址。但是当系统长时间运行后,IOPA的碎片化更加严重后,即使IOVA能够提供线性连续的地址给显示模块的DMA使用,但是性能会有不同程度的下降。其原因是碎片化的IOPA可能导致对其访问时需要切换DDR的列地址,增加了额外的开销;且如果IOPA不连续且跨越列地址的情况加剧,则显示模块访问这些地址的性能将受到严重影响。
发明内容
为此,需要提供一种内存分配方法,减少列地址的切换,加快访问速度,减少开销。
为实现上述目的,发明人提供了一种内存分配方法,包括如下步骤:
扫描每段IOPA对应的内存地址信息;
按照内存地址信息中对应的列信息进行顺序化,更新IOPA对应的内存地址信息为顺序化后的内存地址信息;
将排序后的IOPA发送至IOMMU,并进行IOVA的映射。
进一步地,还包括步骤:
根据内存地址信息中的PFN判断PFN是否连续;
若是连续,则对连续的PFN的IOPA进行顺序化;
若不是连续,则对不连续的PFN的IOPA的index进行扫描,将位于同一个chunk内的IOPA进行顺序化。
进一步地,还包括步骤:
DMA接收并发出IOVA,IOMMU根据接收到的IOVA调用顺序化后的IOPA。
进一步地,“对连续的PFN的IOPA进行顺序化”包括步骤:
按序依次抽取每个chunk链表的第一行,并进行排序;
按序依次抽取每个chunk链表的第二行,并进行排序;
直至抽取完所有行。
进一步地,“将位于同一个chunk内的IOPA进行顺序化”前还包括步骤:
判断IOPA是否处于同一个chunk内;
若IOPA处于同一个chunk内,,则进行所述将位于同一个chunk内的IOPA进行顺序化步骤。
发明人还提供了一种内存分配装置,所述装置用于执行上述实施例所述的方法。
区别于现有技术,上述技术方案本案将分配到的每段IOPA的内存地址信息进行扫描,将连续PFN的地址IOPA进行顺序化。再对不了连续PFN的地址的IOPA的index进行扫描,处于同一个chunk内的也进行顺序化。减少因为内存碎片导致的显示模块的性能损耗,同时降低开销,提升产品性能。
附图说明
图1为碎片化良好时示意图;
图2为碎片化严重时示意图;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于瑞芯微电子股份有限公司,未经瑞芯微电子股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010216167.7/2.html,转载请声明来源钻瓜专利网。