CN101546292B - 一种内存存取方法及装置 - Google Patents

一种内存存取方法及装置 Download PDF

Info

Publication number
CN101546292B
CN101546292B CN2008101026855A CN200810102685A CN101546292B CN 101546292 B CN101546292 B CN 101546292B CN 2008101026855 A CN2008101026855 A CN 2008101026855A CN 200810102685 A CN200810102685 A CN 200810102685A CN 101546292 B CN101546292 B CN 101546292B
Authority
CN
China
Prior art keywords
memory
hardware
physical memory
length
continuous physical
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.)
Active
Application number
CN2008101026855A
Other languages
English (en)
Other versions
CN101546292A (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.)
BEIJING EVERBRIGHT INNOVATION TECHNOLOGY Co.,Ltd.
BEIJING HENGGUANG INFORMATION TECHNOLOGY CO LTD
BEIJING HENGGUANG TECHNOLOGY DEVELOPMENT CO LTD
Original Assignee
BEIJING EVERBRIGHT INFORMATION TECHNOLOGY Co Ltd
BEIJING HENGGUANG TECHNOLOGY DEVELOPMENT Co Ltd
BEIJING EVERBRIGHT INNOVATION TECHNOLOGY 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 BEIJING EVERBRIGHT INFORMATION TECHNOLOGY Co Ltd, BEIJING HENGGUANG TECHNOLOGY DEVELOPMENT Co Ltd, BEIJING EVERBRIGHT INNOVATION TECHNOLOGY Co Ltd filed Critical BEIJING EVERBRIGHT INFORMATION TECHNOLOGY Co Ltd
Priority to CN2008101026855A priority Critical patent/CN101546292B/zh
Publication of CN101546292A publication Critical patent/CN101546292A/zh
Application granted granted Critical
Publication of CN101546292B publication Critical patent/CN101546292B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System (AREA)

Abstract

本发明提供一种内存存取方法与装置,所述内存存取方法包括:获取外设硬件的物理内存需求;根据外设硬件的物理内存需求,为外设硬件分配多块连续物理内存;根据为外设硬件分配的多块连续物理内存,建立至少包含最高级和最低级的多级内存描述表,每级内存描述表存储了下一级内存描述表的地址和内存长度,最低级内存描述表存储了为外设硬件分配的多块连续物理内存的地址和长度;将最高级内存描述表存储的下一级内存描述表的地址和内存长度传给外设硬件,外设硬件根据多级内存描述表到达为其分配的多块连续物理内存,并利用多块连续物理内存进行数据存取。

Description

一种内存存取方法及装置 
技术领域
本发明关于计算机内存管理技术,特别是关于计算机外设硬件驱动程序的连续内存块的内存管理技术,具体的讲是一种内存存取方法及装置。 
背景技术
在现有技术中,计算机外设硬件需要通过直接内存存取(DMA)方式与海量内存交互数据。操作系统采用基于页面的方式来管理内存,在系统运行一段时间后会出现内存碎片,这样就无法直接分配得到满足交互数据要求的连续物理内存。 
如图1所示,为现有技术的内存存取技术方案之一。如果外设硬件驱动程序需要一块1G大小的连续物理内存作为外设硬件与系统的交互数据内存,物理页面大小为4K,那么可直接从系统中分配一块1G的连续物理内存,并由系统告诉外设硬件这块连续物理内存的基地址和长度,外设硬件即可与这块内存进行数据交互。 
这种内存存取方式虽然提供了一种最为简单的外设硬件直接内存存取的方法,但是采用该方法进行数据交互时,外设硬件一次传输的内容将受限于系统连续物理内存的大小。就图1所示的实例而言,系统必须存在一块空闲的1G或大于1G的连续物理内存,否则外设硬件与系统的交互数据将无法进行。 
如图2所示,为现有技术的内存存取技术方案之二。如果外设硬件驱动程序需要一块1G大小的连续物理内存作为外设硬件与系统的交互数据内存,系统最大连续物理内存为2M,物理页面大小为4K,那么可先从系统中分配一块2M的连续物理内存,用于存储一组指针,每个指针指向一块独立的连续物理内存,这些独立的连续物理内存大小相同,一般可为一个页面大小,这些独立的连续物理内存之和大于或等于1G,并由系统告诉外设硬件用于存储指针的那块连续物理内存的地址和内存长度。外设硬件通过读取指针的内容,获取到对应的独立连续物理内存的地址,即可与这块独立连续物理内存进行交互数据。这种方式通过指针与独立连续物理内存的映射关系来实现,指针与独立连续物理内存的映射关系可被称作线性描述符表。
这种方式虽然减小了对系统连续物理内存的需求,但是对存储指针(线性描述符表)的连续物理内存的需求仍然很高。就图2所示的实例而言,系统必须存在一块空闲的2M或大于2M的连续物理内存以存储线性描述符表,否则外设硬件与系统的交互数据将无法进行。 
中国发明专利03115874.9公开了一种静态内存管理方法,该发明专利所公开的技术方案被合并于此,以作为本发明的现有技术。 
中国发明专利申请200610099137.2公开了一种微电脑系统的直接内存存取作业方法,该发明所公开的技术方案被合并于此,以作为本发明的现有技术。 
发明内容
本发明提供一种内存存取方法及装置,通过多级非线性的内存描述机制使系统与外设硬件之间进行数据交互,在无需大量的系统连续物理内存的情况下,仍可使系统与外设硬件之间进行海量数据交互。 
本发明的目的之一是提供一种内存存取方法,所述的方法包括:获取外设硬件的物理内存需求;根据所述外设硬件的物理内存需求,为所述外设硬件分配多块连续物理内存;根据为所述外设硬件分配的多块连续物理内存,建立至少包含最高级和最低级的多级内存描述表,除最低级内存描述表之外的每级内存描述表存储了下一级内存描述表的地址和内存长度,最低级内存描述表存储了为所述外设硬件分配的多块连续物理内存的地址和长度;将所述最高级内存描述表存储的下一级内存描述表的地址和内存长度传给所述外设硬件,所述外设硬件根据所述多级内存描述表到达为其分配的多块连续物理内存,并利用所述多块连续物理内存进行数据存取。 
本发明的目的之二是提供一种内存存取装置,所述的装置包括:内存需求获取单元,获取外设硬件的物理内存需求;外设硬件内存分配单元,根据所述外设硬件的物理内存需求,为所述外设硬件分配多块连续物理内存;内存描述表建立单元,根据为所述外设硬件分配的多块连续物理内存,建立至少包含最高级和最低级的多级内存描述表,除最低级内存描述表之外的每级内存描述表存储了下一级内存描述表的地址和内存长度,最低级内存描述表存储了为所述外设硬件分配的多块连续物理内存的地址和长度;数据交互单元,将所述最高级内存描述表存储的下一级内存描述表的地址和内存长度传给所述外设硬件,所述外设硬件根据所述多级内存描述表到达为其分配的多块连续物理内存,并利用所述多块连续物理内存进行数据存取。 
本发明采用多级非线性内存描述表结构,使系统对外设硬件进行内存分配不再受限于系统中最大连续物理内存。特别是当操作系统运行一段时间之后内存碎片不断增加时,同样能够为外设硬件分配到所需的物理内存,只需要将最高级表的地址和长度告知外设硬件,就能通过该多级非线性表到达为该外设硬件分配的连续物理内存。该方案还能够通过扩展该非线性表的级数来实现海量内存的存取,为将来满足硬件设备对内存的更高要求做好准备。 
附图说明
图1为现有技术中内存存取原理图之一; 
图2为现有技术中内存存取原理图之二; 
图3为本发明实施例的系统原理图; 
图4本发明实施例内存存取装置的细化结构图; 
图5本发明实施例1的内存存取装置的细化结构图; 
图6为本发明实施例1的外设硬件等长内存分配单元的细化结构图; 
图7为本发明实施例1的一种多级内存描述原理图; 
图8为本发明实施例1的内存存取装置的工作方法流程图; 
图9本发明实施例2的内存存取装置的细化结构图; 
图10为本发明实施例2的外设硬件组合内存分配单元的细化结构图; 
图11为本发明实施例2的一种多级内存描述原理图; 
图12为本发明实施例2的另一种多级内存描述原理图; 
图13为本发明实施例2的内存存取装置的工作方法流程图; 
图14为本发明实施例一种通用的多级非线性内存描述原理图。 
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施方式和附图,对本发明做进一步详细说明。在此,本发明的示意性实施方式及其说明用于解释本发明,但并不作为对本发明的限定。 
图3为本发明实施例的系统原理图,如图所示,内存存取装置301连接外设硬件302和物理内存303,内存存取装置301为外设硬件302分配所需的物理内存,所需的物理内存由多块连续物理内存组成,此外内存存取装置301还负责将这些连续物理内存的地址告知外设硬件302,外设硬件302通过访问这些连续物理内存实现与系统的数据交换。该系统还包括微处理器304,连接内存存取装置301,它主要完成系统的核心控制功能。 
图4为本发明实施例内存存取装置301的细化结构图。如图所示,内存存取装置301包括:内存需求获取单元3011,连接外设硬件302,获取外设硬件的物理内存需求;外设硬件内存分配单元3012,根据所述外设硬件的物理内存需求,从物理内存303中为所述外设硬件分配多块连续物理内存3031,这些连续物理内存块包括M0、M1,…,Mn;内存描述表建立单元3013,根据为所述外设硬件分配的多块连续物理内存3031,在物理内存303中建立至少包含最高级和最低级的多级内存描述表3032,每级内存描述表存储了下一级内存描述表的地址和内存长度,最低级内存描述表存储了为所述外设硬件分配的多块连续物理内存3031的地址和长度;数据交互单元3014,将所述最高级内存描述表存储的下一级内存描述表的地址和内存长度传给所述外设硬件302,所述外设硬件302根据所述多级内存描述表3032到达为其分配的多块连续物理内存3031,并利用所述 多块连续物理内存3031进行数据存取。 
下面以外设硬件的物理内存需求为1G的情况,详细说明本发明的具体实施方式: 
实施例1: 
图5为本实施例内存存取装置301的细化结构图,为了实施方便,本实施例的外设硬件内存分配单元3012为外设硬件等长内存分配单元501,用于为所述外设硬件分配相同长度的多块连续物理内存,所述相同长度的多块连续物理内存的长度之和大于或等于所述外设硬件的物理内存需求。如图5所示,M0,M1,…,Mn可以为相同长度的连续物理内存,在本实施例中,外设硬件所需的1G物理内存可以由1024个1M的连续物理内存组成,或由2048个512K的连续物理内存组成,或由4096个256K的连续物理内存组成,或由8192个128K的连续物理内存组合而成。 
由于系统运行一段时间后,大块的物理内存较少而小块的物理内存较多,要求一次性分配多个较大的连续物理内存往往会失败,这就是内存碎片现象。本实施例中为外设硬件优先分配较大的物理内存,如果较大的连续物理内存不能满足需要,则重新尝试分配较小的连续物理内存,直到多个连续物理内存之和大于等于外设硬件所需的物理内存为止。 
图6为本实施例外设硬件等长内存分配单元501的细化结构图,如图所示,外设硬件等长内存分配单元501包括:内存长度排序单元5011和等长内存分配单元5012。内存长度排序单元5011,按照连续物理内存长度由大到小的顺序进行排序,如可以按照1M-512K-256K-128K等进行排序;等长内存分配单元5012,如果最大长度的多块连续物理内存之和大于或等于所述外设硬件的物理内存需求,则将最大长度的多块连续物理内存分配给所述外设硬件;如果最大长度的多块连续物理内存之和小于所述外设硬件的物理内存需求,则按照内存长度由大到小的顺序尝试分配其他长度的连续物理内存,直到某个长度的多块连续物理内存之和大于或等于所述外设硬件的物理内存需求,并将该长度的多块连续 物理内存分配给所述外设硬件。 
在本实施例中,外设硬件等长内存分配单元501首先尝试为外设硬件分配1024个1M的连续内存,如果没有这么多个1M的连续内存,则重新尝试为外设硬件分配2048个512K的连续内存,如果还是不满足则继续尝试分配其他更小的内存,直到判断系统中存在8192个128K的连续物理内存,则将8192个128K的连续物理内存分配给外设硬件302。 
在本实施例中,内存描述表建立单元3013首先根据多个连续物理内存3031建立最低级内存描述表,由于最低级内存描述表必须指向8192个128K的连续物理内存,因此必须包含8192个指针以及8192个内存长度(128K),对于64bit的系统,存放指针的内存以及存放长度的内存都为8字节,这样对于最低级内存描述表就需要8192×8×2=128K物理内存来存放最低级内存描述表。 
内存描述表建立单元3013进一步包括描述表内存分配单元(图中未示),本实施例中的描述表内存分配单元,用于为每级内存描述表分配相同长度的至少一块连续物理内存。当确定了最低级内存描述表需要128K的物理内存后,首先尝试为最低级内存描述表分配128K的连续物理内存,如果系统中没有128K的连续物理内存,则可以尝试分配2块64K的连续物理内存,依次下去,直到多块连续物理内存之和大于等于128K为止。假设在本实施例中,不存在一块连续的128K的连续物理内存,而是存在2块64K的连续物理内存,则将这两块64K的连续物理内存分配最低级内存描述表。 
然后,内存描述表建立单元3013根据最低级内存描述表建立次低级内存描述表,该次低级内存描述表需要包含2个指针来指向2块64K的内存,因此必须包含2个指针以及2个内存长度(64K),对于64bit的系统,存放指针的内存以及存放长度的内存都为8字节,这样就需要2×8×2=32字节的连续物理内存来存放次最低级内存描述表。一般情况下,系统中会存在32字节的连续物理内存,因此,此时的次低级内存描述表就相当于最高级内存描述表。图7为本实施例的一种多级内存描述原理图。 
本实施例中当外设硬件所需的物理内存为1G,而系统可以提供8192个128K的连续物理内存以及2个64K的连续物理内存时,仅需要最高级内存描述表和最低级内存描述表就能实现对8192个128K的连续物理内存进行描述。数据交互单元3014将最高级的内存描述表传给外设硬件302,所述外设硬件302根据所述多级内存描述表3032到达为其分配的多块连续物理内存3031,并利用所述多块连续物理内存3031进行数据存取。 
图8为本实施例中内存存取装置的工作方法流程图。以下结合图7的内存分配原理图对图8进行详细描述,如图所示, 
步骤S801,首先确定外设硬件的物理内存需求,如1G。 
步骤S802,根据物理内存需求,确定进行尝试分配的内存长度,并按照内存长度由大到小的顺序进行排序,如1M-512K-256K-128K等等。 
步骤S803和步骤S804,按照设定的由大的小的顺序尝试为外设硬件分配连续物理内存,首先判断最大长度的连续物理内存是否满足需求,即是否存在1024个1M的连续物理内存,如果存在1024个1M的连续物理内存则进入步骤S805;如果不存在则返回步骤S803,继续尝试分配512K的连续物理内存,直到存在某个长度的连续物理内存满足需求,如存在8192个128K的连续物理内存,此时进入步骤S805; 
步骤S805,将该长度的多个连续物理内存分配给外设硬件,如将8192个128K的连续物理内存分配给外设硬件。 
步骤S806,根据分配的多个连续物理内存建立最低级内存描述表。该最低级内存描述表存储了为外设硬件分配的多块连续物理内存的地址和长度。如本实施例中,该最低级内存描述表存储了8192个指针和内存长度,共占用128K。在本实施例中,假设不存在128K的连续物理内存而是存在2块64K的连续物理内存,则将这两块连续物理内存分配给最低级内存描述表。每个64K的连续物理内存包含了4096个指针和内存长度(128K)。 
步骤S807,根据最低级内存描述表依次建立其上一级的内存描述表,直到 建立最高级内存描述表。本实施例1中,由于最低级内存描述表的上一级只需要32字节的连续物理内存,比较容易得到满足,因此,最低级内存描述表的上一级就是最高级内存描述表。 
步骤S808,将最高级内存描述表的内容发给外设硬件。 
步骤S809,外设硬件通过多级内存描述表到达为其分配的连续物理内存,并与系统进行数据交互。 
实施例2: 
图9为本实施例内存存取装置301的细化结构图,作为另一种可替代的方式,本实施例的外设硬件内存分配单元3012为外设硬件组合内存分配单元901,用于为外设硬件分配多种长度的多块连续物理内存,所述多种长度的多块连续物理内存的长度之和大于或等于所述外设硬件的物理内存需求。如图5所示,M0,M1,…,Mn可以为多种长度的连续物理内存,在本实施例中,外设硬件所需的1G物理内存可以由1024个256K连续物理内存、2048个128K的连续物理内存、4096个64K的连续物理内存,以及8192个32K的连续物理内存组合而成。 
由于系统运行一段时间后,大块的物理内存较少而小块的物理内存较多,要求一次性分配多个较大的连续物理内存往往会失败,这就是内存碎片现象。本实施例中为外设硬件优先分配较大的物理内存,如果较大的连续物理内存不能满足需求,则将相差的部分用较小的连续物理内存来替代,直到各种长度的多块连续物理内存的长度之和大于或等于所述外设硬件需要的物理内存。 
图10为本实施例外设硬件组合内存分配单元901的细化结构图,如图所示,外设硬件组合内存分配单元901包括:内存长度排序单元9011和组合内存分配单元9012。内存长度排序单元9011,按照连续物理内存长度由大到小的顺序进行排序,如可以按照256K-128K-64K-32K等进行排序;组合内存分配单元9012,如果最大长度的多块连续物理内存之和大于或等于所述外设硬件的物理内存需求,则将最大长度的多块连续物理内存分配给所述外设硬件;如果最大长度的多块连续物理内存之和小于所述外设硬件的物理内存需求,则按照内存长度由 大到小的顺序尝试分配其他长度的连续物理内存,直到所分配的多种长度的多块连续物理内存之和大于或等于所述外设硬件的物理内存需求,并将所述多种长度的多块连续物理内存分配给所述外设硬件。 
在本实施例中,外设硬件组合内存分配单元901首先尝试为外设硬件分配256K的连续内存,假设系统中只存在1024个256K的连续物理内存,则将剩下的内存需求由其他更小的连续物理内存来替代,如,系统中还存在2048个128K的连续物理内存、4096个64K的连续物理内存以及8192个32K的连续物理内存,由于这四种长度的多块连续物理内存之和为1G,因此将上述这四种长度的多块连续物理内存的组合(1024×256K+2048×128K+4096×64K+8192×32K=1G)分配给外设硬件以满足其1G的物理内存需求。 
在本实施例中,内存描述表建立单元3013首先根据多个连续物理内存3031建立最低级内存描述表,由于最低级内存描述表必须指向1024个256K的连续物理内存、2048个128K的连续物理内存、4096个64K的连续物理内存以及8192个32K的连续物理内存,因此必须包含1024+2048+4096+8192=15360个指针以分别指向这些连续物理内存,对于64bit的系统,存放指针的内存以及存放长度的内存都为8字节,这样对于最低级内存描述表就需要(1024+2048+4096+8192)×(8+8)=240K的物理内存来存放最低级内存描述表。 
内存描述表建立单元3013进一步包括描述表内存分配单元(图中未示),用于为每级内存描述表分配相同长度的至少一块连续物理内存,或为每级内存描述表分配多种长度的多块连续物理内存。如果系统中存在一块240K的连续物理内存,则可以将该240K的连续物理内存分配给最低级内存描述表,如果不存在,则本实施例中的描述表内存分配单元,可为最低级内存描述表分配多种长度的多块连续物理内存。 
如本实施例中的最低级内存描述表存储于4块连续物理内存,每块连续物理内存存储了指向4种不同长度的连续物理内存的指针以及内存长度。其中:第一块连续物理内存包含1024个指针指向256K的连续物理内存,该连续物理内存为 16K;第二块连续物理内存包含2048个指针指向128K的连续物理内存,该连续物理内存为32K;第三块连续物理内存包含4096个指针指向64K的连续物理内存,该连续物理内存为64K;第四块连续物理内存包含8192个指针指向32K的连续物理内存,该连续物理内存为128K。 
然后,内存描述表建立单元3013根据最低级内存描述表建立次低级内存描述表,该次低级内存描述表需要包含4个指针来指向这4块连续物理内存,因此必须包含4个指针以及4个内存长度,对于64bit的系统,存放指针的内存以及存放长度的内存都为8字节,这样就需要4×8×2=64字节的连续物理内存来存放次最低级内存描述表。一般情况下,系统中会存在64字节的连续物理内存,因此,此时的次低级内存描述表就相当于最高级内存描述表。 
图11为本实施例的一种多级内存描述原理图。该图中,系统中存在一块240K的连续物理内存来存放最低级内存描述表,因此该最低级内存描述表就是最高级内存描述表。图12为本实施例的另一种多级内存描述原理图,该图中,最低级内存描述表存储于4块连续物理内存,每块连续物理内存的指针分别指向长度为256K、128K、64K以及32K的连续物理内存。 
本实施例中当外设硬件所需的物理内存为1G时,系统可以提供1024个256K的连续物理内存、2048个128K的连续物理内存、4096个64K的连续物理内存以及8192个32K的连续物理内存的组合来共同提供1G的物理内存给外设硬件。同时,系统还提供16K的连续物理内存用于存放1024个指针和内存长度、32K的连续物理内存用于存放2048个指针和内存长度、64K的连续物理内存用于存放4096个指针和内存长度,以及128K的连续物理内存用于存放8192个指针和内存长度。以上16K+32K+64K+128K=240K的物理内存即存储了最低级内存描述表。此外,还需要用64字节的连续物理内存存储最高级内存描述表。 
数据交互单元3014将最高级的内存描述表传给外设硬件302,所述外设硬件302根据所述多级内存描述表3032到达为其分配的多块连续物理内存3031,并利用所述多块连续物理内存3031进行数据存取。 
图13为本实施例中内存存取装置的工作方法流程图。以下结合图12的内存分配原理图对图13进行详细描述,如图所示, 
步骤S1301,首先确定外设硬件的物理内存需求,如1G。 
步骤S 1302,根据物理内存需求,确定进行尝试分配的内存长度,并按照内存长度由大到小的顺序进行排序,如256K-128K-64K-32K等等。 
步骤S1303和步骤S1304,按照设定的由大的小的顺序尝试为外设硬件分配连续物理内存,直到多种长度的连续物理内存之和满足外设硬件的物理内存需求。首先分配最大的连续物理内存256K,由于系统中只存在1024个256K因此不满足需求,继续分配128K的连续物理内存,由于系统中只存在2048个128K的连续物理内存,两者之和还是不足1G,因此继续分配64K的连续物理内存,由于系统中只存在4096个64K的连续物理内存,还是不满足需求,直到分配完8192个32K的连续物理内存之后,这4种长度的连续物理内存之和等于1G,满足了外设硬件的需求。内存分配成功,进入步骤S1305。 
步骤S1305,将多种长度的多个连续物理内存分配给外设硬件,即,将1024个256K、2048个128K、4096个64K以及8192个32K连续物理内存分配给外设硬件302。 
步骤S1306,根据分配的多个连续物理内存建立最低级内存描述表。该最低级内存描述表存储了为外设硬件分配的多块连续物理内存的地址和长度。如本实施例中,该最低级内存描述表存储了1024+2048+4096+8192个连续物理内存的指针以及内存长度,共占用240K。在本实施例中,假设不存在240K的连续物理内存而是分别存在4块连续物理内存,每块连续物理内存分别存储了以上4种长度的连续物理内存的指针和内存长度。则将这4块连续物理内存分配给最低级内存描述表。如图12所示,这4块连续物理内存的长度分别为16K、32K、64K和128K。 
步骤S1307,根据最低级内存描述表依次建立其上一级的内存描述表,直到建立最高级内存描述表。本实施例中,由于最低级内存描述表的上一级只需要 64字节的连续物理内存,比较容易得到满足,因此,最低级内存描述表的上一级就是最高级内存描述表。 
步骤S1308,将最高级内存描述表的内容发给外设硬件。 
步骤S1309,外设硬件通过多级内存描述表到达为其分配的连续物理内存,并与系统进行数据交互。 
图14为本发明实施例的一种通用的多级非线性内存描述表结构。 
本发明实施例采用多级非线性内存描述表结构,使系统对外设硬件进行内存分配不再受限于系统中最大连续物理内存。特别是当操作系统运行一段时间之后内存碎片不断增加时,同样能够为外设硬件分配到所需的物理内存,只需要将最高级内存描述表存储的地址和长度告知外设硬件,就能通过该多级非线性表到达为该外设硬件分配的连续物理内存。该方案还能够通过扩展该非线性表的级数来实现海量内存的存取,为将来满足硬件设备对内存的更高要求做好准备。 
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。 

Claims (10)

1.一种内存存取方法,其特征是,所述的方法包括:
获取外设硬件的物理内存需求;
根据所述外设硬件的物理内存需求,为所述外设硬件分配多块连续物理内存;
根据为所述外设硬件分配的多块连续物理内存,建立至少包含最高级和最低级的多级内存描述表,除最低级内存描述表之外的每级内存描述表存储了下一级内存描述表的地址和内存长度,最低级内存描述表存储了为所述外设硬件分配的多块连续物理内存的地址和长度;
将所述最高级内存描述表存储的下一级内存描述表的地址和内存长度传给所述外设硬件,所述外设硬件根据所述多级内存描述表到达为其分配的多块连续物理内存,并利用所述多块连续物理内存进行数据存取。
2.根据权利要求1所述的方法,其特征在于,根据所述外设硬件的物理内存需求,为所述外设硬件分配多块连续物理内存,包括:
为所述外设硬件分配相同长度的多块连续物理内存,所述相同长度的多块连续物理内存的长度之和大于或等于所述外设硬件的物理内存需求;或
为所述外设硬件分配多种长度的多块连续物理内存,所述多种长度的多块连续物理内存的长度之和大于或等于所述外设硬件的物理内存需求。
3.根据权利要求2所述的方法,其特征在于,为所述外设硬件分配相同长度的多块连续物理内存,所述相同长度的多块连续物理内存的长度之和大于或等于所述外设硬件的物理内存需求,具体包括:
按照连续物理内存长度由大到小的顺序进行排序;
如果最大长度的多块连续物理内存之和大于或等于所述外设硬件的物理内存需求,则将最大长度的多块连续物理内存分配给所述外设硬件;
如果最大长度的多块连续物理内存之和小于所述外设硬件的物理内存需求,则按照内存长度由大到小的顺序尝试分配其他长度的连续物理内存,直到某个长度的多块连续物理内存之和大于或等于所述外设硬件的物理内存需求,并将所述某个长度的多块连续物理内存分配给所述外设硬件。
4.根据权利要求2所述的方法,其特征在于,为所述外设硬件分配多种长度的多块连续物理内存,所述多种长度的多块连续物理内存的长度之和大于或等于所述外设硬件的物理内存需求,具体包括:
按照连续物理内存长度由大到小的顺序进行排序;
如果最大长度的多块连续物理内存之和大于或等于所述外设硬件的物理内存需求,则将所述最大长度的多块连续物理内存分配给所述外设硬件;
如果所述最大长度的多块连续物理内存之和小于所述外设硬件的物理内存需求,则按照内存长度由大到小的顺序尝试分配其他长度的连续物理内存,直到所分配的多种长度的多块连续物理内存之和大于或等于所述外设硬件的物理内存需求,并将所述多种长度的多块连续物理内存分配给所述外设硬件。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
为每级内存描述表分配相同长度的至少一块连续物理内存;或
为每级内存描述表分配多种长度的多块连续物理内存。
6.一种内存存取装置,其特征在于,所述装置包括:
内存需求获取单元,获取外设硬件的物理内存需求;
外设硬件内存分配单元,根据所述外设硬件的物理内存需求,为所述外设硬件分配多块连续物理内存;
内存描述表建立单元,根据为所述外设硬件分配的多块连续物理内存,建立至少包含最高级和最低级的多级内存描述表,除最低级内存描述表之外的每级内存描述表存储了下一级内存描述表的地址和内存长度,最低级内存描述表存储了为所述外设硬件分配的多块连续物理内存的地址和长度;
数据交互单元,将所述最高级内存描述表存储的下一级内存描述表的地址和内存长度传给所述外设硬件,所述外设硬件根据所述多级内存描述表到达为其分配的多块连续物理内存,并利用所述多块连续物理内存进行数据存取。
7.根据权利要求6所述的装置,其特征在于,所述外设硬件内存分配单元为:
外设硬件等长内存分配单元,为所述外设硬件分配相同长度的多块连续物理内存,所述相同长度的多块连续物理内存的长度之和大于或等于所述外设硬件的物理内存需求;或
外设硬件组合内存分配单元,为所述外设硬件分配多种长度的多块连续物理内存,所述多种长度的多块连续物理内存的长度之和大于或等于所述外设硬件的物理内存需求。
8.根据权利要求7所述的装置,其特征在于,所述外设硬件等长内存分配单元,具体包括:
内存长度排序单元,按照连续物理内存长度由大到小的顺序进行排序;
等长内存分配单元,如果最大长度的多块连续物理内存之和大于或等于所述外设硬件的物理内存需求,则将最大长度的多块连续物理内存分配给所述外设硬件;如果最大长度的多块连续物理内存之和小于所述外设硬件的物理内存需求,则按照内存长度由大到小的顺序尝试分配其他长度的连续物理内存,直到某个长度的多块连续物理内存之和大于或等于所述外设硬件的物理内存需求,并将所述某个长度的多块连续物理内存分配给所述外设硬件。
9.根据权利要求7所述的装置,其特征在于,所述外设硬件组合内存分配单元,具体包括:
内存长度排序单元,按照连续物理内存长度由大到小的顺序进行排序;
组合内存分配单元,如果最大长度的多块连续物理内存之和大于或等于所述外设硬件的物理内存需求,则将最大长度的多块连续物理内存分配给所述外设硬件;如果最大长度的多块连续物理内存之和小于所述外设硬件的物理内存需求,则按照内存长度由大到小的顺序尝试分配其他长度的连续物理内存,直到所分配的多种长度的多块连续物理内存之和大于或等于所述外设硬件的物理内存需求,并将所述多种长度的多块连续物理内存分配给所述外设硬件。
10.根据权利要求6所述的装置,其特征在于,所述内存描述表建立单元,还包括:
描述表内存分配单元,为每级内存描述表分配相同长度的至少一块连续物理内存,或为每级内存描述表分配多种长度的多块连续物理内存。
CN2008101026855A 2008-03-25 2008-03-25 一种内存存取方法及装置 Active CN101546292B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2008101026855A CN101546292B (zh) 2008-03-25 2008-03-25 一种内存存取方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2008101026855A CN101546292B (zh) 2008-03-25 2008-03-25 一种内存存取方法及装置

Publications (2)

Publication Number Publication Date
CN101546292A CN101546292A (zh) 2009-09-30
CN101546292B true CN101546292B (zh) 2010-12-08

Family

ID=41193436

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008101026855A Active CN101546292B (zh) 2008-03-25 2008-03-25 一种内存存取方法及装置

Country Status (1)

Country Link
CN (1) CN101546292B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103389945B (zh) * 2013-07-05 2017-04-12 杭州华三通信技术有限公司 一种内存管理的方法及装置
CN106155911B (zh) * 2015-03-30 2019-04-12 华为技术有限公司 一种请求远程内存的方法和装置
CN106708752B (zh) * 2016-11-22 2019-09-13 迈普通信技术股份有限公司 内存预留方法及装置
CN107247673B (zh) * 2017-06-07 2020-05-26 苏州浪潮智能科技有限公司 一种内存分配方法和装置
CN107179998A (zh) * 2017-06-22 2017-09-19 湖南国科微电子股份有限公司 一种配置外设内存缓冲区的方法及装置
CN107678987B (zh) * 2017-10-10 2021-06-29 郑州云海信息技术有限公司 一种dma传输的方法、装置及设备
CN110377426B (zh) * 2019-07-19 2021-09-17 苏州浪潮智能科技有限公司 一种数据传输方法、系统及相关组件
CN111209308B (zh) * 2020-01-09 2023-06-16 建信金融科技有限责任公司 一种优化分布式缓存的方法和装置
CN113672906B (zh) * 2021-08-17 2022-08-23 中国科学院软件研究所 基于risc-v与地址空间布局随机化的内存地址检测攻击防御方法及装置
CN113900829B (zh) * 2021-12-10 2022-04-12 深圳比特微电子科技有限公司 用于设备的内存管理方法、内存管理设备和计算系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0871128A2 (en) * 1997-04-10 1998-10-14 Digital Equipment Corporation Method and apparatus for providing a shared data region using shared page tables
CN1532708A (zh) * 2003-03-19 2004-09-29 华为技术有限公司 一种静态内存管理方法
US6851038B1 (en) * 2000-05-26 2005-02-01 Koninklijke Philips Electronics N.V. Background fetching of translation lookaside buffer (TLB) entries
CN1900922A (zh) * 2006-07-27 2007-01-24 威盛电子股份有限公司 微电脑系统的直接内存存取作业方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0871128A2 (en) * 1997-04-10 1998-10-14 Digital Equipment Corporation Method and apparatus for providing a shared data region using shared page tables
US6851038B1 (en) * 2000-05-26 2005-02-01 Koninklijke Philips Electronics N.V. Background fetching of translation lookaside buffer (TLB) entries
CN1532708A (zh) * 2003-03-19 2004-09-29 华为技术有限公司 一种静态内存管理方法
CN1900922A (zh) * 2006-07-27 2007-01-24 威盛电子股份有限公司 微电脑系统的直接内存存取作业方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JP特表2004-523035A 2004.07.29

Also Published As

Publication number Publication date
CN101546292A (zh) 2009-09-30

Similar Documents

Publication Publication Date Title
CN101546292B (zh) 一种内存存取方法及装置
US7334105B2 (en) System and method for managing the memory in a computer system
US7779426B2 (en) Describing and querying discrete regions of flash storage
US5568423A (en) Flash memory wear leveling system providing immediate direct access to microprocessor
US6757802B2 (en) Method for memory heap and buddy system management for service aware networks
US6922765B2 (en) Method of allocating physical memory space having pinned and non-pinned regions
CN103959257B (zh) 用于持久性指针管理的软件转换后备缓冲器
CN101241476B (zh) 一种虚拟存储系统和方法
KR102290540B1 (ko) 네임스페이스/스트림 관리
CN103197979B (zh) 一种用于实现在进程间进行数据交互访问的方法及其装置
CN103677667A (zh) 数据储存装置以及快闪存储器控制方法
CN101048767B (zh) 动态资源分配
CN101571869B (zh) 一种智能卡的文件存储、读取方法及装置
US5963982A (en) Defragmentation of stored data without pointer indirection
WO2013112124A1 (en) Managing addressable memory in heterogeneous multicore processors
CN100375064C (zh) 连续物理存储器分配的方法和系统
CN111078408B (zh) 内存分配方法、装置、存储介质及电子设备
CN102446139A (zh) 一种数据存储方法及装置
CN108959113A (zh) 用于闪存感知堆存储器管理的方法和系统
WO2024045585A1 (zh) 用于并行处理器中动态共享存储空间的方法及相应处理器
CN109379448A (zh) 一种文件分布式部署方法、装置、电子设备及存储介质
CN106485529A (zh) 广告位的排序方法和装置
US6219772B1 (en) Method for efficient memory allocation of small data blocks
DE3853162T2 (de) Gemeinsamer intelligenter Speicher für die gegenseitige Verbindung von verteilten Mikroprozessoren.
CN107783812A (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
C14 Grant of patent or utility model
GR01 Patent grant
CP01 Change in the name or title of a patent holder

Address after: 100097 Beijing city Haidian District landianchang Road No. 2 Jin Yuan Times Business Center Building 2, block A, 3C

Co-patentee after: BEIJING HENGGUANG INFORMATION TECHNOLOGY Co.,Ltd.

Patentee after: BEIJING EVERBRIGHT INNOVATION TECHNOLOGY Co.,Ltd.

Co-patentee after: BEIJING HENGGUANG TECHNOLOGY DEVELOPMENT Co.,Ltd.

Address before: 100097 Beijing city Haidian District landianchang Road No. 2 Jin Yuan Times Business Center Building 2, block A, 3C

Co-patentee before: Beijing Hengguang Information Technology Co.,Ltd.

Patentee before: BEIJING EVERBRIGHT INNOVATION TECHNOLOGY Co.,Ltd.

Co-patentee before: BEIJING HENGGUANG TECHNOLOGY DEVELOPMENT Co.,Ltd.

Address after: 100097 Beijing city Haidian District landianchang Road No. 2 Jin Yuan Times Business Center Building 2, block A, 3C

Co-patentee after: Beijing Hengguang Information Technology Co.,Ltd.

Patentee after: BEIJING EVERBRIGHT INNOVATION TECHNOLOGY Co.,Ltd.

Co-patentee after: BEIJING HENGGUANG TECHNOLOGY DEVELOPMENT Co.,Ltd.

Address before: 100097 Beijing city Haidian District landianchang Road No. 2 Jin Yuan Times Business Center Building 2, block A, 3C

Co-patentee before: Beijing Ebright Communication Technology Co.,Ltd.

Patentee before: BEIJING EVERBRIGHT INNOVATION TECHNOLOGY Co.,Ltd.

Co-patentee before: BEIJING HENGGUANG TECHNOLOGY DEVELOPMENT Co.,Ltd.

CP01 Change in the name or title of a patent holder
TR01 Transfer of patent right

Effective date of registration: 20170620

Address after: 100097 Beijing city Haidian District landianchang Road No. 2 Jin Yuan Times Business Center Building 2, block A, 3B

Patentee after: BEIJING HENGGUANG INFORMATION TECHNOLOGY Co.,Ltd.

Address before: 100097 Beijing city Haidian District landianchang Road No. 2 Jin Yuan Times Business Center Building 2, block A, 3C

Co-patentee before: BEIJING HENGGUANG INFORMATION TECHNOLOGY Co.,Ltd.

Patentee before: BEIJING EVERBRIGHT INNOVATION TECHNOLOGY Co.,Ltd.

Co-patentee before: BEIJING HENGGUANG TECHNOLOGY DEVELOPMENT Co.,Ltd.

TR01 Transfer of patent right