CN111444016A - 一种内存分配方法和装置 - Google Patents
一种内存分配方法和装置 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5016—Allocation 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory 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任一项所述的方法。
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)
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 |
-
2020
- 2020-03-25 CN CN202010216167.7A patent/CN111444016B/zh active Active
Patent Citations (6)
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)
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 |