CN111444016A - 一种内存分配方法和装置 - Google Patents

一种内存分配方法和装置 Download PDF

Info

Publication number
CN111444016A
CN111444016A CN202010216167.7A CN202010216167A CN111444016A CN 111444016 A CN111444016 A CN 111444016A CN 202010216167 A CN202010216167 A CN 202010216167A CN 111444016 A CN111444016 A CN 111444016A
Authority
CN
China
Prior art keywords
iopa
address information
memory address
sequencing
pfn
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
Application number
CN202010216167.7A
Other languages
English (en)
Other versions
CN111444016B (zh
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.)
Fuzhou Rockchip Electronics Co Ltd
Original Assignee
Fuzhou Rockchip Electronics 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 Fuzhou Rockchip Electronics Co Ltd filed Critical Fuzhou Rockchip Electronics Co Ltd
Priority to CN202010216167.7A priority Critical patent/CN111444016B/zh
Publication of CN111444016A publication Critical patent/CN111444016A/zh
Application granted granted Critical
Publication of CN111444016B publication Critical patent/CN111444016B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

发明公开了一种内存分配方法,包括如下步骤:扫描每段IOPA对应的内存地址信息。按照内存地址信息中对应的列信息进行顺序化,更新IOPA对应的内存地址信息为顺序化后的内存地址信息。将排序后的IOPA发送至IOMMU,并进行IOVA的映射。上述技术方案本案将分配到的每段IOPA的内存地址信息进行扫描,将连续PFN的地址IOPA进行顺序化。再对不了连续PFN的地址的IOPA的index进行扫描,处于同一个chunk内的也进行顺序化。减少因为内存碎片导致的显示模块的性能损耗,同时降低开销,提升产品性能。

Description

一种内存分配方法和装置
技术领域
本发明涉及数据读取领域,尤其涉及一种内存分配方法和装置。
背景技术
目前业内嵌入式设备的显示模块对于内存的访问都有使用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为碎片化严重时示意图;
图3为内存地址示意图;
图4为具体实施例中连续的PFN的IOPA进行顺序化的示意图。
具体实施方式
为详细说明技术方案的技术内容、构造特征、所实现目的及效果,以下结合具体实施例并配合附图详予说明。
请参阅图1至4,在本实施例中提供了一种内存分配方法,包括如下步骤:扫描每段IOPA对应的的内存地址信息。按照内存地址信息中对应的列信息进行顺序化,更新IOPA对应的内存地址信息为顺序化后的内存地址信息。在本实施例中,列信息按照IOPA的顺序,将IOPA相同列的内存地址放置到前面进行排序,排序后与IOPA进行对应不同列的放到后面。将排序后的IOPA发送至IOMMU,并进行IOVA的映射。
在某些实施例中,还包括步骤:根据内存地址信息中的PFN判断PFN是否连续;若是连续,则对连续的PFN的IOPA进行顺序化;若不是连续,则对不连续的PFN的IOPA的index进行扫描,将位于同一个chunk内的IOPA进行顺序化,更新内存映射关系表为顺序化的IOPA。当然,需要说明的是,在某些实施例中,还包括步骤:DMA接收并发出IOVA,IOMMU根据接收到的IOVA调用顺序化后的IOPA。
请参阅图1,系统碎片情况良好时,PFN连续情况较好,IOPA同处于某一列。请参阅图2,当图2情况出现后,分配的IOPA可能处于不同列,或者处于同一列的却非连续,导致每次访问不同IOPA时需要切换列地址,引入开销。上述技术方案本案将分配到的每段IOPA的内存地址信息进行扫描,将连续PFN的地址IOPA进行顺序化。再对不连续PFN的地址的IOPA的index进行扫描,处于同一个chunk内的也进行顺序化;在所述将位于同一个chunk内的IOPA进行顺序化前还包括步骤:判断IOPA是否处于同一个chunk内;若是,则进行所述将位于同一个chunk内的IOPA进行顺序化步骤;若否,则不属于本发明用途的内存,不做改变。在某些实施例中,还包括:将顺序化后的IOPA发送至IOMMU,并进行IOVA的映射,将IOPA通过IOMMU进行IOVA的映射,整理成一个连续的读取列表。最后经DMA接收整理后的IOVA并将整理后的IOVA发送至其他器件单元内。需要说们的是,在本发明中,将碎片化的IOPA进行整理并通过IOMMU的映射,将列切换的开销降至最小,即,减少因为内存碎片导致的显示模块的性能损耗,提升产品性能。
请参阅图3,内存地址的表示按照PFN(pageframenumber页框号)和index(索引数)组成;PFN连续的,IOPA一定在同一列地址上;PFN不连续的,index处于同一个chunk(DDR地址交织映射参数)内的,IOPA一定也在同一列地址上。
请参阅图4,在本实施例中,“对连续的PFN的IOPA进行顺序化”包括:按序依次抽取每个chunk链表的第一行,并进行排序。按序依次抽取每个chunk链表的第二行,并进行排序。直至抽取完所有行。以bit12-14为例,12-14位为0的放在chunk0的链表,12-14位为1的放在chunk1链表,以此类推,一共八个链表。然后chunk0-7依次抽出头部8个进行排序,第二轮从chunk0-7的第二行再抽出8个进行排序,抽完为止。
需要说明的是,尽管在本文中已经对上述各实施例进行了描述,但并非因此限制本发明的专利保护范围。因此,基于本发明的创新理念,对本文所述实施例进行的变更和修改,或利用本发明说明书及附图内容所作的等效结构或等效流程变换,直接或间接地将以上技术方案运用在其他相关的技术领域,均包括在本发明的专利保护范围之内。

Claims (6)

1.一种内存分配方法,其特征在于,包括如下步骤:
扫描每段IOPA对应的内存地址信息;
按照内存地址信息中对应的列信息进行顺序化,更新IOPA对应的内存地址信息为顺序化后的内存地址信息;
将排序后的IOPA发送至IOMMU,并进行IOVA的映射。
2.根据权利要求1所述一种内存分配方法,其特征在于,还包括步骤:
根据内存地址信息中的PFN判断PFN是否连续;
若是连续,则对连续的PFN的IOPA进行顺序化;
若不是连续,则对不连续的PFN的IOPA的index进行扫描,将位于同一个chunk内的IOPA进行顺序化。
3.根据权利要求2所述一种内存分配方法,其特征在于,还包括步骤:
DMA接收并发出IOVA,IOMMU根据接收到的IOVA调用顺序化后的IOPA。
4.根据权利要求1所述一种内存分配方法,其特征在于,“对连续的PFN的IOPA进行顺序化”包括步骤:
按序依次抽取每个chunk链表的第一行,并进行排序;
按序依次抽取每个chunk链表的第二行,并进行排序;
直至抽取完所有行。
5.根据权利要求1所述一种内存分配方法,其特征在于,“将位于同一个chunk内的IOPA进行顺序化”前还包括步骤:
判断IOPA是否处于同一个chunk内;
若IOPA处于同一个chunk内,则进行所述将位于同一个chunk内的IOPA进行顺序化步骤。
6.一种内存分配装置,其特征在于,所述装置用于执行如权利要求1至5任一项所述的方法。
CN202010216167.7A 2020-03-25 2020-03-25 一种内存分配方法和装置 Active CN111444016B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010216167.7A CN111444016B (zh) 2020-03-25 2020-03-25 一种内存分配方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010216167.7A CN111444016B (zh) 2020-03-25 2020-03-25 一种内存分配方法和装置

Publications (2)

Publication Number Publication Date
CN111444016A true CN111444016A (zh) 2020-07-24
CN111444016B CN111444016B (zh) 2023-10-13

Family

ID=71650714

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010216167.7A Active CN111444016B (zh) 2020-03-25 2020-03-25 一种内存分配方法和装置

Country Status (1)

Country Link
CN (1) CN111444016B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101122883A (zh) * 2006-08-09 2008-02-13 中兴通讯股份有限公司 一种避免内存碎片化的内存分配方法
US20090216988A1 (en) * 2008-02-27 2009-08-27 Michael Palladino Low overhead memory management system and method
CN105893269A (zh) * 2016-03-31 2016-08-24 武汉虹信技术服务有限责任公司 一种Linux系统下内存管理方法
CN106844224A (zh) * 2016-12-21 2017-06-13 华中科技大学 一种基于nvram的内存分配链表及内存分配方法
CN107818054A (zh) * 2016-09-12 2018-03-20 联发科技股份有限公司 分配连续物理内存空间到设备的方法及系统
WO2018063020A1 (en) * 2016-09-28 2018-04-05 Huawei Technologies Co., Ltd Memory management method and device

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101122883A (zh) * 2006-08-09 2008-02-13 中兴通讯股份有限公司 一种避免内存碎片化的内存分配方法
US20090216988A1 (en) * 2008-02-27 2009-08-27 Michael Palladino Low overhead memory management system and method
CN105893269A (zh) * 2016-03-31 2016-08-24 武汉虹信技术服务有限责任公司 一种Linux系统下内存管理方法
CN107818054A (zh) * 2016-09-12 2018-03-20 联发科技股份有限公司 分配连续物理内存空间到设备的方法及系统
WO2018063020A1 (en) * 2016-09-28 2018-04-05 Huawei Technologies Co., Ltd Memory management method and device
CN106844224A (zh) * 2016-12-21 2017-06-13 华中科技大学 一种基于nvram的内存分配链表及内存分配方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
SEONGJAE PARK等: "GCMA: Guaranteed Contiguous Memory Allocator", 《IEEE TRANSACTIONS ON COMPUTERS》 *
余劲等: "DBox:宏内核下各种设备驱动程序的高性能安全盒", 《计算机学报》 *
刘圣卓等: "Linux下动态内存分配安全性分析", 《计算机应用》 *
魏东: "面向android的嵌入式linux内存优化技术研究", 《上海交通大学硕士论文》 *

Also Published As

Publication number Publication date
CN111444016B (zh) 2023-10-13

Similar Documents

Publication Publication Date Title
US20080189490A1 (en) Memory mapping
CN101826107B (zh) 哈希数据处理方法和装置
EP0032956B1 (en) Data processing system utilizing hierarchical memory
US20130238835A1 (en) Burning system and method
CN1236386C (zh) 存储器件及存储控制方法
CN110968269A (zh) 基于scm与ssd的键值存储系统及读写请求处理方法
CN106201778B (zh) 信息处理方法及存储设备
US6182088B1 (en) File system and file management method
CN113183759A (zh) 一种仪表盘字符的显示方法及装置
CN114327917A (zh) 内存管理方法、计算设备及可读存储介质
CN111444016A (zh) 一种内存分配方法和装置
CN108563399B (zh) 存储设备的数据读取方法、装置、终端设备和存储介质
JP2000067264A5 (zh)
CN105320609A (zh) 一种基于移动终端的数据存储方法及系统
US5410663A (en) Method and system for cache memory congruence class management in a data processing system
JPH10162157A (ja) グラフィックコントローラ
CN1622057A (zh) 扩展存储空间的存取方法及其存取装置
CN110019232B (zh) 一种报文保存方法及装置
CN108345551B (zh) 一种存储数据的方法及装置
CN115793989B (zh) 一种基于NAND的NVMe KV SSD数据管理方法
CN100361088C (zh) 一种实现设备测试的方法
JP3073208B2 (ja) データ選出装置
CN1024600C (zh) 用于访问高速缓冲存储器单元的改进的虚拟到实地址翻译装置和方法
CN112699063B (zh) 用于解决通用ai处理器存储带宽效率的动态缓存方法
CN106681939A (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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 350003 building 18, No.89, software Avenue, Gulou District, Fuzhou City, Fujian Province

Applicant after: Ruixin Microelectronics Co.,Ltd.

Address before: 350003 building 18, No.89, software Avenue, Gulou District, Fuzhou City, Fujian Province

Applicant before: FUZHOU ROCKCHIP ELECTRONICS Co.,Ltd.

GR01 Patent grant
GR01 Patent grant