CN102279808A - 一种嵌入式设备图像内存管理方法及装置 - Google Patents

一种嵌入式设备图像内存管理方法及装置 Download PDF

Info

Publication number
CN102279808A
CN102279808A CN2011102627108A CN201110262710A CN102279808A CN 102279808 A CN102279808 A CN 102279808A CN 2011102627108 A CN2011102627108 A CN 2011102627108A CN 201110262710 A CN201110262710 A CN 201110262710A CN 102279808 A CN102279808 A CN 102279808A
Authority
CN
China
Prior art keywords
node
memory block
valid data
previous node
correspondence
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.)
Pending
Application number
CN2011102627108A
Other languages
English (en)
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.)
MStar Software R&D Shenzhen Ltd
MStar Semiconductor Inc Taiwan
Original Assignee
MStar Software R&D Shenzhen Ltd
MStar Semiconductor Inc Taiwan
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 MStar Software R&D Shenzhen Ltd, MStar Semiconductor Inc Taiwan filed Critical MStar Software R&D Shenzhen Ltd
Priority to CN2011102627108A priority Critical patent/CN102279808A/zh
Priority to TW100141685A priority patent/TWI451253B/zh
Publication of CN102279808A publication Critical patent/CN102279808A/zh
Priority to US13/585,022 priority patent/US9176857B2/en
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0626Reducing size or complexity of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Image Input (AREA)
  • Memory System (AREA)

Abstract

本发明实施例公开了一种嵌入式设备图像内存管理方法,本发明实施例还公开了相应的装置。本方法通过从图像内存链表中获取节点,然后判断该节点对应的内存块中是否有有效数据,如果没有有效数据,则再判断该节点的前一个节点对应的内存块中是否有有效数据,如果有有效数据,则再判断该有效数据是否可移动,如果可移动,则将两个节点所描述的内存块信息进行交换,并且将前一个节点对应的内存块中存储的有效数据移动至该节点对应的内存块中;通过上述方式,本发明能够将空闲的内存块整理为一个大的内存块,从而在空闲的内存的总大小大于需要分配的内存但是单独的空闲的内存块都小于需要分配的内存的情况下,大大提高应用程序分配到需要的内存的概率。

Description

一种嵌入式设备图像内存管理方法及装置
技术领域
本发明涉及计算机领域,特别是涉及一种嵌入式设备图像内存管理方法及装置。
背景技术
DirectFB是一个在嵌入式系统中广泛应用的函数库。是针对嵌入式设备的特殊需求环境,为图形加速和图形增强支持开发的一个小巧、强大和易于使用的技术。
DirectFB的函数利用链表来实现图像内存(video memory)的管理。初始状态时,链表只有一个空闲节点(free memory node),记录整个内存池的起始地址和末地址。当应用程序需要从内存池中分配一块内存时,DirectFB的内存管理器遍历链表中的所有free memory node,找出最匹配的free memory node返回给应用程序。如果找不到大小正好匹配的free memory node,则从最接近所需内存大小的free memory node中分配,并在链表中插入一个新的内存节点来记录新分配的内存块信息,并且该新的内存节点被标示为已分配状态。在链表中相邻的内存节点所描述的内存块在物理上也是邻近的。
现有技术中,DirectFB管理内存的方式为:当应用程序释放内存块时,记录该内存块信息的节点会被置为空闲状态,如果与该空闲节点相邻的节点也是空闲状态,则会完成节点合并,将两个节点所记录的空闲内存块合并成一个更大的空闲内存块,如图1所示block4与block5合并为block4。在上述内存管理的方式下,在物理上连续的内存块,如果其生命周期不一样,就会出现内存碎片。于是出现这样一种状况:虽然可用的空闲内存的总量大于所需要分配的内存,但是所有的空闲节点都小于所需要分配内存的大小,于是内存管理器会出现分配内存失败的情况。
如何在空闲的内存大于需要分配的内存的情况下,确保能使应用程序分配到需要的内存是目前需要解决的问题。
发明内容
本发明主要解决的技术问题是提供一种嵌入式设备图像内存管理方法及装置,能够在空闲的内存的总大小大于需要分配的内存但是单独的空闲的内存块都小于需要分配的内存的情况下,大大提高应用程序分配到需要的内存的概率。
为解决上述技术问题,本发明采用的一个技术方案是:提供一种嵌入式设备图像内存管理方法,包括:
从图像内存链表中获取节点;
判断该节点对应的内存块中是否有有效数据;
如果该节点对应的内存块中没有有效数据,则判断该节点的前一个节点对应的内存块中是否有有效数据;
如果该前一个节点对应的内存块中有有效数据,则判断该有效数据是否可移动;
如果该前一个节点对应的内存块中存储的有效数据可移动,则将该节点所描述的内存块信息与前一个节点所描述的内存块信息进行交换,并且将该前一个节点对应的内存块中存储的有效数据移动至该节点对应的内存块中。
为解决上述技术问题,本发明采用的另一个技术方案是:提供一种嵌入式设备图像内存管理装置,包括:
第一获取模块,用于从图像内存链表中获取节点;
第一判断模块,用于判断获取模块获取的节点对应的内存块中是否有有效数据;
第二判断模块,用于当第一判断模块判断出第一获取模块获取的节点对应的内存块中没有有效数据时,再判断该节点的前一个节点对应的内存块中是否有有效数据;
第三判断模块,用于当第二判断模块判断出前一个节点对应的内存块中有有效数据时,再判断该有效数据是否可移动;
交换模块,用于当第三判断模块判断出前一个节点对应的内存块中存储的有效数据可移动时,将前该节点所描述的内存块信息与前一个节点所描述的内存块信息进行交换,并且将前一个节点对应的内存块中存储的有效数据移动至该节点对应的内存块中。
本发明通过从图像内存链表获取节点,如果检测到非空闲节点对应的内存块中存储的有效数据是可以移动的,则通过将空闲节点描述的内存块信息和非空闲节点所描述的内存块信息进行交换,然后将非空闲节点对应的内存块的有效数据移动到空闲节点对应的内存块中,将空闲节点往链表的起始方向移动,将非空闲节点往链表末尾方向移动,最后移动后的空闲内存块将位于图像内存的起始位置;通过对图像内存的内存碎片进行管理,将多个内存碎片都移动至图像内存的起始位置,形成一个大的并且在物理上连续的空闲内存块,从而当应用程序需要申请较大的内存块时,能够满足申请要求。
附图说明
图1是现有技术中相邻的空闲内存块合并的示意图;
图2是本发明实施例图像内存管理方法的数据流程图;
图3是本发明实施例图像内存管理方法的应用场景示意图;
图4是本发明实施例图像内存管理方法在实际应用中的数据流程图;
图5是本发明实施例图像内存管理装置的逻辑结构示意图。
具体实施方式
参阅图2,本发明嵌入式设备图像内存管理方法的实施例包括:
201、获取图像内存链表中的倒数第一个节点;
从图像内存链表的倒数第一个节点开始获取节点,首先获取倒数第一个节点;
202、判断该节点是否为空;
每获取一个节点,首先判断该节点是否是空节点,如果是空节点,则说明上一个获取的节点是本图像内存链表的倒数最后一个节点;如果节点为空节点,则执行步骤203;如果节点不为空节点,则执行步骤204;
203、结束;
如果步骤202中判断出节点为空节点,说明已经将整个图像内存链表整理完了,则流程结束;
204、判断该节点对应的内存块中是否有有效数据;
判断该节点对应的内存块中是否有有效数据,如果有有效数据,则执行步骤205;如果没有有效数据,则执行步骤206;
205、获取前一个节点;
如果步骤204中判断出该节点对应的内存块中有有效数据,则获取该节点的前一个节点,然后返回步骤202,判断本步骤中获取的节点是否为空,如果不为空,则再执行步骤204判断该节点对应的内存块中是否有有效数据,依次循环,直至转到步骤206,获取到对应的内存块中没有有效数据的节点;
206、获取前一个节点;
如果步骤204中判断出该节点对应的内存块中没有有效数据,则获取该节点的前一个节点;
207、判断该节点是否为空;
判断步骤206中获取的前一个节点是否是空节点,如果是空节点,则说明上一个获取的节点是本图像内存链表的倒数最后一个节点,执行步骤203,结束流程;如果判断出节点不为空节点,则执行步骤208;
208、判断该节点对应的内存块中是否有有效数据;
判断该节点对应的内存块中是否有有效数据,如果有有效数据,则执行步骤210;如果没有有效数据,则执行步骤209;
209、合并;
将步骤201中获取的节点或者步骤205中获取的节点,与步骤206中获取的节点合并,具体的:
将步骤201中获取的节点或者步骤205中获取的节点的起始地址改为步骤206中获取的节点的起始地址,并将步骤201中获取的节点或者步骤205中获取的节点指向前一个节点的指针改为指向步骤206中获取的节点的前一个节点,并删除步骤206中获取的节点;
或者,合并的步骤还可以为:
将步骤206中获取的节点的结束地址改为步骤201中获取的节点或者步骤205中获取的节点的结束地址,并将步骤206中获取的节点指向下一个节点的指针改为指向步骤201中获取的节点或者步骤205中获取的节点的后一个节点,并删除步骤201中获取的节点或者步骤205中获取的节点。
210、判断该节点对应的内存块是否为layer surface;
判断步骤206中获取的节点对应的内存块是否为layer surface,如果是layer surface,说明该节点对应的内存块中存储的有效数据是不能移动的,则返回步骤206,获取前一个节点;如果判断出步骤206中获取的节点对应的内存块不为layer surface,说明该节点对应的内存块中存储的有效数据是可以移动的,则执行步骤211;
211、判断该节点对应的内存块是否被锁定;
如果内存块正在被使用,则该内存块是被锁定的;如果内存块被锁定,那么内存块中存储的有效数据是不能被移动的;如果判断出步骤206中获取的节点对应的内存块是被锁定的,则返回步骤206,获取前一个节点;如果判断出步骤206中获取的节点对应的内存块没有被锁定,说明该节点对应的内存块中存储的有效数据是可以移动的,则执行步骤212;
212、判断该节点对应的内存块是否于最近一次被GPU访问过;
如果内存块最近一次被GPU访问过,有可能GPU还在使用该内存块中存储的数据,所以该内存块中存储的有效数据暂时还不能被移动,该内存块中存储的有效数据需要等待GPU访问完成才能移动;判断步骤206中获取的节点对应的内存块是否于最近一次被GPU访问过,如果最近一次被GPU访问过,则执行步骤213;如果最近一次没有被GPU访问过,则执行步骤214;
213、等待GPU访问完成;
如果步骤212中判断出步骤206中获取的节点对应的内存块最近一次被GPU访问过,则等待GPU访问完成;
214、内存块中存储的数据交换;
如果判断出步骤206中获取的节点对应的内存块中存储的有效数据可移动,则将步骤206中获取的节点所描述的内存块信息与步骤201中获取的节点或者步骤205中获取的节点所描述的内存块信息进行交换,并且将步骤206中获取的节点对应的内存块中存储的有效数据移动至步骤201中获取的节点或者步骤205中获取的节点对应的内存块中;
在执行完交换内存块中存储的数据的步骤后,再返回步骤206,获取前一个节点,依次循环,直到判断出获取的节点为空节点,即将没有有效数据的内存块都移到图像内存的前面部分。
需要进一步说明的是,在另外的实施例中,步骤210和步骤211的执行顺序是可以互换的,即可以先执行步骤211,再执行步骤210。
例如有一个图像内存被分成n个内存块,分别为从block1至blockn,该图像内存由一个对应的链表管理,链表中每个节点对应一个内存块block,即block1至blockn分别对应第一节点至第n节点;如图3所示,具体的:
首先从链表的末节点开始获取节点,每次获取节点都需要判断该节点是否为空,来确认是否已经将链表中的节点取完了;例如先取末节点,即第一节点,第一节点对应block1,block1是有有效数据的,则获取下一个节点,即第二节点,第二节点对应block2,block2是没有有效数据的,即block2处于空闲状态;然后获取第三节点,第三节点对应block3,block3有有效数据,再判断block3的有效数据是否是可移动的,如果判断出block3既不是layer surface,也没有被锁定,并且也没有最近一次被GPU访问过,说明block3的有效数据是可以被移动的,则将block3的有效数据移动到block2中,具体的:先将第三节点所描述的内存块信息和第二节点所描述的内存块信息进行交换,然后将block3中的有效数据移动到block2中,如图3中的301所示;
然后获取下一个节点,即第四节点,第四节点不为空,再判断出第四节点对应的block4中没有有效数据,则将第二节点和第四节点合并成第二节点,具体的,将第二节点的起始地址改为第四节点的起始地址,将第二节点的上一个节点改为第四节点的上一个节点,即将第二个节点的上一个节点改为第五节点,然后删除第四节点,如图3中302所示;
然后获取下一个节点,即第五节点,第五节点不为空,判断出第五节点对应的block5中是有有效数据的,再判断block5中存储的有效数据是否可移动,具体的,如果判断出block5既不是layer surface,也没有被锁定,但是block5最近一次被GPU访问过,则需要等待GPU访问完成,block5中存储的有效数据才能被移动,在等待GPU访问完成后,则将block5中存储的有效数据移动到block2中,具体的:先将第五节点所描述的内存块信息和第二节点所描述的内存块信息进行交换,然后将block5中存储的有效数据移动到block2中,如图3中的303所示;
然后获取下一个节点,即第六节点,第六节点不为空,再判断出第六节点对应的block6中没有有效数据,则将第二节点和第六节点合并成第二节点,具体的,将第二节点的起始地址改为第六节点的起始地址,将第二节点的上一个节点改为第六节点的上一个节点,即将第二节点的上一个节点改为第七节点,然后删除第六节点,如图3中304所示;
如此循环,直到处理完链表中倒数最后一个节点,即当取到的节点为空节点时,说明已经处理完链表中倒数最后一个节点,结束流程。
在本实施例中,通过从链表的末尾开始往前遍历图像内存链表的节点,如果检测到非空闲节点对应的内存块中存储的有效数据是可以移动的,则通过将空闲节点描述的内存块信息和非空闲节点所描述的内存块信息进行交换,然后将非空闲节点对应的内存块中存储的有效数据移动到空闲节点对应的内存块中,将空闲节点往链表的起始方向移动,合并形成新的空闲节点,将非空闲节点往链表末尾方向移动,最后合并后的空闲内存块将位于图像内存的起始位置;通过对图像内存的内存碎片进行管理,将多个碎片合并成一个大的并且在物理上连续的空闲内存块,从而当应用程序需要申请较大的内存块时,能够满足申请要求。
应用程序在申请内存时,如果没有内存块的大小能满足该应用程序的要求,则需要利用上述实施例中的方法对内存碎片进行整理,具体流程如图4所示,具体的:
401、应用程序申请内存块;
402、内存分配测试;
在接收到应用程序的内存块申请后,DirectFB首先要对该申请进行内存分配测试,即测试当前是否有空闲的内存块的大小能满足该应用程序的要求,如果当前有空闲的内存块的大小能满足该应用程序的要求,则执行步骤405,如果当前没有空闲的内存块的大小能够满足该应用程序的要求,则执行步骤403;
403、内存碎片整理;
DirectFB对图像内存的碎片进行整理,具体的整理流程如上述DirectFB内存管理方法的实施例中所示,此处不做赘述;对图像内存的碎片进行整理后,执行步骤404;
404、内存分配测试;
当步骤403中对图像内存的碎片进行整理后,再次进行内存分配测试,如果合并后的空闲内存块的大小能够满足该应用程序的需要,则执行步骤405,如果合并后的空闲内存块的大小不能够满足该应用程序的需要,则执行步骤406;
405、执行内存分配;
如果内存分配测试成功,则执行内存分配;
406、内存分配失败;
如果内存分配测试失败,则反馈给应用程序内存不够的信息;
由于内存碎片的存在,使用越久,内存碎片越多,应用程序申请内存失败的概率越大,从而导致程序执行中断,通过本实施例提供的方法,在第一次内存分配测试失败后,不马上返回失败的信息,而是对内存碎片进行整理,如果整理后的空闲内存块的大小还是不能满足应用程序的需要,才返回内存不够的信息,本实施例提供的分配内存的方法大大增加了应用程序能够分配到内存的概率。
参阅图5,本发明嵌入式设备图像内存管理装置的实施例包括:
第一获取模块501,用于从图像内存链表中获取节点;
第一判断模块502,用于判断获取模块501获取的节点对应的内存块中是否有有效数据;
第二判断模块503,用于当第一判断模块502判断出第一获取模块501获取的节点对应的内存块中没有有效数据时,再判断该节点的前一个节点对应的内存块中是否有有效数据;
第三判断模块504,用于当第二判断模块503判断出该前一个节点对应的内存块中有有效数据时,再判断该有效数据是否可移动;
交换模块505,用于当第三判断模块504判断出前一个节点对应的内存块中存储的有效数据可移动时,将该节点所描述的内存块信息与前一个节点所描述的内存块信息进行交换,并且将该前一个节点对应的内存块中存储的有效数据移动至该节点对应的内存块中;
本实施例中的装置还包括:
第二获取模块506,用于当第一判断模块502判断出该节点对应的内存块中有有效数据时,获取该节点的前一个节点,然后由第二判断模块503判断该前一个节点对应的内存块中是否有有效数据,直至图像内存链表的第一个节点;
第二获取模块506还用于当第一判断模块502判断出该节点对应的内存块中没有有效数据,第二判断模块503判断出该前一个节点对应的内存块中有有效数据,且第三判断模块504判断出该前一个节点描述的内存块中存储的有效数据不可移动时,获取该前一个节点的前一个节点,然后由第二判断模块503判断该获取的节点对应的内存块中是否有有效数据,直至图像内存链表的第一个节点;
第三判断模块504包括:
第一判断单元,用于判断获取的节点的前一个节点对应的内存块是否为layer surface,如果该前一个节点对应的内存块为layer surface,则该前一个节点对应的内存块中存储的有效数据不能移动;
第二判断单元,用于当第一判断单元判断出该前一个节点对应的内存块不为layer surface时,再判断该前一个节点对应的内存块是否处于锁定状态,如果该前一个节点对应的内存块处于锁定状态,则该前一个节点对应的内存块中存储的有效数据不能移动;
第三判断单元,用于当第一判断单元判断出该前一个节点对应的内存块不为layer surface,第二判断单元判断出该前一个节点对应的内存块没处于锁定状态时,再判断该前一个节点对应的内存块是否于最近一次被GPU访问过,如果该前一个节点对应的内存块最近一次被GPU访问过,则该前一个节点对应的内存块中存储的有效数据需要等待GPU访问完成才能被移动;
本实施例中的装置还包括:
合并模块507,用于当第二判断模块判断出获取的节点的前一个节点没有有效数据时,将该节点和该前一个节点合并;
具体的,合并模块507包括:
合并单元,用于将该节点的起始地址改为该前一个节点的起始地址,并将该节点指向前一个节点的指针改为指向该前一个节点的前一个节点;该合并单元还用于将前一个节点的结束地址改为该节点的结束地址,并将前一个节点指向下一个节点的指针改为指向该节点的后一个节点;
删除单元,用于删除节点;
在本实施例中,通过从链表的末尾开始往前遍历图像内存链表的节点,如果检测到非空闲节点对应的内存块中存储的有效数据是可以移动的,则通过将空闲节点描述的内存块信息和非空闲节点所描述的内存块信息进行交换,然后将非空闲节点对应的内存块中存储的有效数据移动到空闲节点对应的内存块中,将空闲节点往链表的起始方向移动,合并形成新的空闲节点,将非空闲节点往链表末尾方向移动,最后合并后的空闲内存块将位于图像内存的起始位置;通过对图像内存的内存碎片进行管理,将多个碎片合并成一个大的并且在物理上连续的空闲内存块,从而当应用程序需要申请较大的内存块时,能够满足申请要求。
本发明实施例中对嵌入式设备图像内存管理方法以及嵌入式设备图像内存管理装置的描述,是基于DirectFB技术进行描述的,当然,本发明所体现的思想还可以适用于嵌入式设备图像内存管理方面的其他技术,此处不做限制。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (16)

1.一种嵌入式设备图像内存管理方法,其特征在于,包括:
从图像内存链表中获取节点;
判断所述节点对应的内存块中是否有有效数据;
如果所述节点对应的内存块中没有有效数据,则判断所述节点的前一个节点对应的内存块中是否有有效数据;
如果所述前一个节点对应的内存块中有有效数据,则判断所述有效数据是否可移动;
如果所述前一个节点对应的内存块中存储的有效数据可移动,则将所述节点所描述的内存块信息与所述前一个节点所描述的内存块信息进行交换,并且将所述前一个节点对应的内存块中存储的有效数据移动至所述节点对应的内存块中。
2.根据权利要求1所述的方法,其特征在于,所述从图像内存链表中获取节点的步骤具体为:
从图像内存链表中倒数第一个节点开始获取节点。
3.根据权利要求1所述的方法,其特征在于,所述判断所述节点对应的内存块中是否有有效数据的步骤之后还包括:
如果所述节点描述的内存块中有有效数据,则继续获取所述节点的前一个节点,然后执行判断所述前一个节点对应的内存块中是否有有效数据的步骤,直至所述图像内存链表的第一个节点。
4.根据权利要求3所述的方法,其特征在于,所述判断所述前一个节点对应的内存块中存储的有效数据是否可移动的步骤之后还包括:
如果所述前一个节点对应的内存块中存储的有效数据不可移动,则继续获取所述前一个节点的前一个节点,并执行判断该获取的节点对应的内存块中是否有有效数据的步骤,直至所述图像内存链表的第一个节点。
5.根据权利要求4所述的方法,其特征在于,所述判断前一个节点对应的内存块中存储的有效数据是否可移动的步骤包括:
判断所述前一个节点对应的内存块是否为层面(layer surface),如果所述前一个节点对应的内存块为layer surface,则所述前一个节点对应的内存块中存储的有效数据不能移动;
如果所述前一个节点对应的内存块不是layer surface,则再判断所述前一个节点对应的内存块是否处于锁定状态,如果所述前一个节点对应的内存块处于锁定状态,则所述前一个节点对应的内存块中存储的有效数据不能移动。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
如果所述前一个节点对应的内存块没处于锁定状态,则再判断所述前一个节点对应的内存块是否于最近一次被图形处理器GPU访问过,如果所述前一个节点对应的内存块最近一次被GPU访问过,则等待GPU访问完成后,执行所述将该节点所描述的内存块信息与所述前一个节点所描述的内存块信息进行交换,并且将所述前一个节点对应的内存块中存储的有效数据移动至所述节点对应的内存块中的步骤。
7.根据权利要求6所述的方法,其特征在于,所述判断所述前一个节点是否有有效数据的步骤之后还包括:
如果所述前一个节点没有有效数据,则将所述节点和所述前一个节点合并。
8.根据权利要求7所述的方法,其特征在于,所述将该节点和所述前一个节点合并的步骤包括:
将所述节点的起始地址改为所述前一个节点的起始地址,并将所述节点指向前一个节点的指针改为指向所述前一个节点的前一个节点,并删除所述前一个节点。
9.根据权利要求7所述的方法,其特征在于,所述将该节点和所述前一个节点合并的步骤包括:
将所述前一个节点的结束地址改为所述节点的结束地址,并将所述前一个节点指向下一个节点的指针改为指向所述节点的下一个节点,并删除所述节点。
10.一种嵌入式设备图像内存管理装置,其特征在于,包括:
第一获取模块,用于从图像内存链表中获取节点;
第一判断模块,用于判断所述获取模块获取的节点对应的内存块中是否有有效数据;
第二判断模块,用于当所述第一判断模块判断出第一获取模块获取的节点对应的内存块中没有有效数据时,再判断所述节点的前一个节点对应的内存块中是否有有效数据;
第三判断模块,用于当所述第二判断模块判断出所述前一个节点对应的内存块中有有效数据时,再判断所述有效数据是否可移动;
交换模块,用于当所述第三判断模块判断出所述前一个节点对应的内存块中存储的有效数据可移动时,将所述节点所描述的内存块信息与所述前一个节点所描述的内存块信息进行交换,并且将所述前一个节点对应的内存块中存储的有效数据移动至所述节点对应的内存块中。
11.根据权利要求10所述的装置,其特征在于,所述装置还包括:
第二获取模块,用于当所述第一判断模块判断出所述节点对应的内存块中有有效数据时,获取所述节点的前一个节点,然后由第二判断模块判断所述前一个节点对应的内存块中是否有有效数据,直至所述图像内存链表的第一个节点。
12.根据权利要求11所述的装置,其特征在于,所述第二获取模块还用于当所述第一判断模块判断出所述节点对应的内存块中没有有效数据,而第二判断模块判断出所述前一个节点对应的内存块中有有效数据,且第三判断模块判断出所述前一个节点描述的内存块中存储的有效数据不可移动时,获取所述前一个节点的前一个节点,然后由第二判断模块判断该获取的节点对应的内存块中是否有有效数据,直至所述图像内存链表的第一个节点。
13.根据权利要求12所述的装置,其特征在于,所述第三判断模块包括:
第一判断单元,用于判断所述前一个节点对应的内存块是否为layersurface,如果所述前一个节点对应的内存块为layer surface,则所述前一个节点对应的内存块中存储的有效数据不能移动;
第二判断单元,用于当第一判断单元判断出所述前一个节点对应的内存块不为layer surface时,再判断所述前一个节点对应的内存块是否处于锁定状态,如果所述前一个节点对应的内存块处于锁定状态,则所述前一个节点对应的内存块中存储的有效数据不能移动;
第三判断单元,用于当第一判断单元判断出所述前一个节点对应的内存块不为layer surface,而第二判断单元判断出所述前一个节点对应的内存块没处于锁定状态时,再判断所述前一个节点对应的内存块是否于最近一次被GPU访问过,如果所述前一个节点对应的内存块最近一次被GPU访问过,则所述前一个节点对应的内存块中存储的有效数据需要等待GPU访问完成才能被移动。
14.根据权利要求13所述的装置,其特征在于,所述装置还包括:
合并模块,用于当第二判断模块判断出所述前一个节点没有有效数据时,将所述节点和所述前一个节点合并。
15.根据权利要求14所述的装置,其特征在于,所述合并模块包括:
合并单元,用于将所述节点的起始地址改为所述前一个节点的起始地址,并将所述节点指向前一个节点的指针改为指向所述前一个节点的前一个节点;
删除单元,用于删除节点。
16.根据权利要求15所述的装置,其特征在于,所述合并单元还用于将所述前一个节点的结束地址改为所述节点的结束地址,并将所述前一个节点指向下一个节点的指针改为指向所述节点的后一个节点。
CN2011102627108A 2011-09-06 2011-09-06 一种嵌入式设备图像内存管理方法及装置 Pending CN102279808A (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN2011102627108A CN102279808A (zh) 2011-09-06 2011-09-06 一种嵌入式设备图像内存管理方法及装置
TW100141685A TWI451253B (zh) 2011-09-06 2011-11-15 嵌入式設備圖像記憶體管理方法及裝置
US13/585,022 US9176857B2 (en) 2011-09-06 2012-08-14 Method and apparatus for managing video memory in embedded device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2011102627108A CN102279808A (zh) 2011-09-06 2011-09-06 一种嵌入式设备图像内存管理方法及装置

Publications (1)

Publication Number Publication Date
CN102279808A true CN102279808A (zh) 2011-12-14

Family

ID=45105267

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2011102627108A Pending CN102279808A (zh) 2011-09-06 2011-09-06 一种嵌入式设备图像内存管理方法及装置

Country Status (3)

Country Link
US (1) US9176857B2 (zh)
CN (1) CN102279808A (zh)
TW (1) TWI451253B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020156259A1 (zh) * 2019-01-28 2020-08-06 Oppo广东移动通信有限公司 内存管理方法、装置、移动终端及存储介质
CN111897493A (zh) * 2020-07-15 2020-11-06 杭州海康威视系统技术有限公司 存储空间管理方法、装置及电子设备、存储介质
CN112988609A (zh) * 2019-12-02 2021-06-18 杭州海康机器人技术有限公司 数据处理方法、装置、存储介质和客户端
CN113296961A (zh) * 2021-07-22 2021-08-24 广州中望龙腾软件股份有限公司 基于gpu的内存动态分配方法、装置及内存链表

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140351530A1 (en) * 2013-05-22 2014-11-27 International Business Machines Corporation Linked list for lock-free memory allocation
US10491667B1 (en) * 2015-03-16 2019-11-26 Amazon Technologies, Inc. Customized memory modules in multi-tenant service provider systems
TWI715116B (zh) * 2018-09-14 2021-01-01 慧榮科技股份有限公司 資料儲存裝置及其刪除命名空間之方法
CN110908926B (zh) 2018-09-14 2022-03-22 慧荣科技股份有限公司 数据储存装置及逻辑至物理地址映射表的写入方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5555405A (en) * 1993-07-06 1996-09-10 Digital Equipment Corporation Method and apparatus for free space management in a forwarding database having forwarding entry sets and multiple free space segment queues
CN1541358A (zh) * 2001-08-15 2004-10-27 皇家飞利浦电子股份有限公司 具有移动存储块的存储池
CN1635482A (zh) * 2003-12-29 2005-07-06 北京中视联数字系统有限公司 一种嵌入式系统内存管理的方法
CN101320351A (zh) * 2008-06-27 2008-12-10 华中科技大学 内存的分配、清理和释放方法及内存管理的装置
CN101673246A (zh) * 2009-08-06 2010-03-17 深圳市融创天下科技发展有限公司 一种高效的先进先出数据池读写方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5394537A (en) * 1989-12-13 1995-02-28 Texas Instruments Incorporated Adaptive page placement memory management system
US6047280A (en) * 1996-10-25 2000-04-04 Navigation Technologies Corporation Interface layer for navigation system
US5930827A (en) * 1996-12-02 1999-07-27 Intel Corporation Method and apparatus for dynamic memory management by association of free memory blocks using a binary tree organized in an address and size dependent manner
US6088777A (en) * 1997-11-12 2000-07-11 Ericsson Messaging Systems, Inc. Memory system and method for dynamically allocating a memory divided into plural classes with different block sizes to store variable length messages
US6701420B1 (en) * 1999-02-01 2004-03-02 Hewlett-Packard Company Memory management system and method for allocating and reusing memory
US20080008202A1 (en) * 2002-10-31 2008-01-10 Terrell William C Router with routing processors and methods for virtualization
US20060259657A1 (en) * 2005-05-10 2006-11-16 Telairity Semiconductor, Inc. Direct memory access (DMA) method and apparatus and DMA for video processing
JP5032371B2 (ja) * 2008-03-01 2012-09-26 株式会社東芝 メモリシステム
US8843691B2 (en) * 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
US20100030994A1 (en) * 2008-08-01 2010-02-04 Guzman Luis F Methods, systems, and computer readable media for memory allocation and deallocation

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5555405A (en) * 1993-07-06 1996-09-10 Digital Equipment Corporation Method and apparatus for free space management in a forwarding database having forwarding entry sets and multiple free space segment queues
CN1541358A (zh) * 2001-08-15 2004-10-27 皇家飞利浦电子股份有限公司 具有移动存储块的存储池
CN1635482A (zh) * 2003-12-29 2005-07-06 北京中视联数字系统有限公司 一种嵌入式系统内存管理的方法
CN101320351A (zh) * 2008-06-27 2008-12-10 华中科技大学 内存的分配、清理和释放方法及内存管理的装置
CN101673246A (zh) * 2009-08-06 2010-03-17 深圳市融创天下科技发展有限公司 一种高效的先进先出数据池读写方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020156259A1 (zh) * 2019-01-28 2020-08-06 Oppo广东移动通信有限公司 内存管理方法、装置、移动终端及存储介质
CN112988609A (zh) * 2019-12-02 2021-06-18 杭州海康机器人技术有限公司 数据处理方法、装置、存储介质和客户端
CN112988609B (zh) * 2019-12-02 2023-05-02 杭州海康机器人股份有限公司 数据处理方法、装置、存储介质和客户端
CN111897493A (zh) * 2020-07-15 2020-11-06 杭州海康威视系统技术有限公司 存储空间管理方法、装置及电子设备、存储介质
CN111897493B (zh) * 2020-07-15 2023-03-10 杭州海康威视系统技术有限公司 存储空间管理方法、装置及电子设备、存储介质
CN113296961A (zh) * 2021-07-22 2021-08-24 广州中望龙腾软件股份有限公司 基于gpu的内存动态分配方法、装置及内存链表

Also Published As

Publication number Publication date
US20130061017A1 (en) 2013-03-07
US9176857B2 (en) 2015-11-03
TW201312354A (zh) 2013-03-16
TWI451253B (zh) 2014-09-01

Similar Documents

Publication Publication Date Title
CN102279808A (zh) 一种嵌入式设备图像内存管理方法及装置
JP6314355B2 (ja) メモリ管理方法およびデバイス
US10114749B2 (en) Cache memory system and method for accessing cache line
US11099982B2 (en) NUMA-aware garbage collection
CN109690498B (zh) 内存管理方法和设备
US10140208B2 (en) NUMA-aware garbage collection
CN106843756A (zh) 基于页面分类的内存页面回收方法及系统
CN110096221B (zh) 存储器系统及其控制方法
CN107256196A (zh) 基于闪存阵列的支持零拷贝的缓存系统及方法
US20100211753A1 (en) Parallel garbage collection and serialization without per-object synchronization
CN110347613B (zh) 多租户固态盘中实现raid的方法、控制器及多租户固态盘
US20080120456A1 (en) Method for flash memory data management
US11269772B2 (en) Persistent memory storage engine device based on log structure and control method thereof
CN104115134A (zh) 复合非易失性存储设备的数据迁移
CN103167036A (zh) 基于分布式多级缓存系统的栅格数据存取方法
KR20140050941A (ko) 비휘발성 메모리 장치의 데이터 관리 방법
CN107209716B (zh) 内存管理装置和方法
CN103425435B (zh) 磁盘存储方法及磁盘存储系统
CN103729304A (zh) 数据处理方法及装置
CN105094751A (zh) 一种用于流式数据并行处理的内存管理方法
CN105243030A (zh) 一种数据缓存方法
CN104504076A (zh) 一种高并发和高空间利用率的分布式缓存方法
CN109213423A (zh) 基于地址屏障无锁处理并发io命令
CN101783814A (zh) 海量存储系统的元数据存储方法
CN107329695B (zh) 一种分布式存储内存管理方法、系统及计算机存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20111214