一种内存存取方法及装置的制作方法

文档序号:6463193阅读:193来源:国知局
专利名称:一种内存存取方法及装置的制作方法
技术领域
本发明关于计算机内存管理技术,特别是关于计算机外设硬件驱动程序的 连续内存块的内存管理技术,具体的讲是一种内存存取方法及装置。
背景技术
在现有技术中,计算机外设硬件需要通过直接内存存取(DMA)方式与海 量内存交互数据。操作系统采用基于页面的方式来管理内存,在系统运行一段 时间后会出现内存碎片,这样就无法直接分配得到满足交互数据要求的连续物 理内存。
如图1所示,为现有技术的内存存取技术方案之一。如果外设硬件驱动程序 需要一块1G大小的连续物理内存作为外设硬件与系统的交互数据内存,物理页 面大小为4K,那么可直接从系统中分配一块1G的连续物理内存,并由系统告诉 外设硬件这块连续物理内存的基地址和长度,外设硬件即可与这块内存进行数 据交互。
这种内存存取方式虽然提供了一种最为简单的外设硬件直接内存存取的方 法,但是采用该方法进行数据交互时,外设硬件一次传输的内容将受限于系统 连续物理内存的大小。就图l所示的实例而言,系统必须存在一块空闲的1G或 大于1G的连续物理内存,否则外设硬件与系统的交互数据将无法进行。
如图2所示,为现有技术的内存存取技术方案之二。如果外设硬件驱动程序 需要一块1G大小的连续物理内存作为外设硬件与系统的交互数据内存,系统最 大连续物理内存为2M,物理页面大小为4K,那么可先从系统中分配一块2M的 连续物理内存,用于存储一组指针,每个指针指向一块独立的连续物理内存, 这些独立的连续物理内存大小相同, 一般可为一个页面大小,这些独立的连续物理内存之和大于或等于1G,并由系统告诉外设硬件用于存储指针的那块连续 物理内存的地址和内存长度。外设硬件通过读取指针的内容,获取到对应的独 立连续物理内存的地址,即可与这块独立连续物理内存进行交互数据。这种方 式通过指针与独立连续物理内存的映射关系来实现,指针与独立连续物理内存 的映射关系可被称作线性描述符表。
这种方式虽然减小了对系统连续物理内存的需求,但是对存储指针(线性 描述符表)的连续物理内存的需求仍然很高。就图2所示的实例而言,系统必须
存在一块空闲的2M或大于2M的连续物理内存以存储线性描述符表,否则外设 硬件与系统的交互数据将无法进行。
中国发明专利03115874.9公开了一种静态内存管理方法,该发明专利所公 开的技术方案被合并于此,以作为本发明的现有技术。
中国发明专利申请200610099137.2公开了一种微电脑系统的直接内存存取 作业方法,该发明所公开的技术方案被合并于此,以作为本发明的现有技术。

发明内容
本发明提供一种内存存取方法及装置,通过多级非线性的内存描述机制使 系统与外设硬件之间进行数据交互,在无需大量的系统连续物理内存的情况下, 仍可使系统与外设硬件之间进行海量数据交互。
本发明的目的之一是提供一种内存存取方法,所述的方法包括获取外设 硬件的物理内存需求;根据所述外设硬件的物理内存需求,为所述外设硬件分配
多块连续物理内存;根据为所述外设硬件分配的多块连续物理内存,建立至少 包含最高级和最低级的多级内存描述表,每级内存描述表存储了下一级内存描 述表的地址和内存长度,最低级内存描述表存储了为所述外设硬件分配的多块 连续物理内存的地址和长度;将所述最高级内存描述表存储的下一级内存描述
表的地址和内存长度传给所述外设硬件,所述外设硬件根据所述多级内存描述 表到达为其分配的多块连续物理内存,并利用所述多块连续物理内存进行数据 存取。本发明的目的之二是提供一种内存存取装置,所述的装置包括内存需求 获取单元,获取外设硬件的物理内存需求;外设硬件内存分配单元,根据所述 外设硬件的物理内存需求,为所述外设硬件分配多块连续物理内存;内存描述 表建立单元,根据为所述外设硬件分配的多块连续物理内存,建立至少包含最 高级和最低级的多级内存描述表,每级内存描述表存储了下一级内存描述表的 地址和内存长度,最低级内存描述表存储了为所述外设硬件分配的多块连续物 理内存的地址和长度;数据交互单元,将所述最高级内存描述表存储的下一级
内存描述表的地址和内存长度传给所述外设硬件,所述外设硬件根据所述多级 内存描述表到达为其分配的多块连续物理内存,并利用所述多块连续物理内存 进行数据存取。
本发明采用多级非线性内存描述表结构,使系统对外设硬件进行内存分配 不再受限于系统中最大连续物理内存。特别是当操作系统运行一段时间之后内 存碎片不断增加时,同样能够为外设硬件分配到所需的物理内存,只需要将最 高级表的地址和长度告知外设硬件,就能通过该多级非线性表到达为该外设硬 件分配的连续物理内存。该方案还能够通过扩展该非线性表的级数来实现海量 内存的存取,为将来满足硬件设备对内存的更高要求做好准备。


图l为现有技术中内存存取原理图之一;
图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,这些连续物理内 存块包括MO、 Ml,, Mn;内存描述表建立单元3013,根据为所述外设硬件 分配的多块连续物理内存3031 ,在物理内存303中建立至少包含最高级和最低级 的多级内存描述表3032,每级内存描述表存储了下一级内存描述表的地址和内 存长度,最低级内存描述表存储了为所述外设硬件分配的多块连续物理内存 3031的地址和长度;数据交互单元3014,将所述最高级内存描述表存储的下一 级内存描述表的地址和内存长度传给所述外设硬件302,所述外设硬件302根据 所述多级内存描述表3032到达为其分配的多块连续物理内存3031,并利用所述
9多块连续物理内存303 1进行数据存取。
下面以外设硬件的物理内存需求为1G的情况,详细说明本发明的具体实施
方式
实施例l:
图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 X 8 X 2428K物理内存来存放最低级内存描述表。
内存描述表建立单元3013进一步包括描述表内存分配单元(图中未示), 本实施例中的描述表内存分配单元,用于为每级内存描述表分配相同长度的至 少一块连续物理内存。当确定了最低级内存描述表需要128K的物理内存后,首 先尝试为最低级内存描述表分配128K的连续物理内存,如果系统中没有128K的 连续物理内存,则可以尝试分配2块64K的连续物理内存,依次下去,直到多块 连续物理内存之和大于等于128K为止。假设在本实施例中,不存在一块连续的 128K的连续物理内存,而是存在2块64K的连续物理内存,则将这两块64K的连 续物理内存分配最低级内存描述表。
然后,内存描述表建立单元3013根据最低级内存描述表建立次低级内存描 述表,该次低级内存描述表需要包含2个指针来指向2块64K的内存,因此必须 包含2个指针以及2个内存长度(64K),对于64bit的系统,存放指针的内存以 及存放长度的内存都为8字节,这样就需要2 X 8 X 2=32字节的连续物理内存来存 放次最低级内存描述表。 一般情况下,系统中会存在32字节的连续物理内存, 因此,此时的次低级内存描述表就相当于最高级内存描述表。图7为本实施例的 一种多级内存描述原理图。
ii本实施例中当外设硬件所需的物理内存为1G,而系统可以提供8192个128K 的连续物理内存以及2个64K的连续物理内存时,仅需要最高级内存描述表和最 低级内存描述表就能实现对8192个128K的连续物理内存进行描述。数据交互单 元3014将最高级的内存描述表传给外设硬件302,所述外设硬件302根据所述多 级内存描述表3032到达为其分配的多块连续物理内存3031,并利用所述多块连 续物理内存303 l进行数据存取。
图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所示,MO, Ml, ..., 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,因此将上述这四种长度的多块连 续物理内存的组合(1024X256K+2048X128K+4096X64K+8192X32K=1G)分 配给外设硬件以满足其1G的物理内存需求。
在本实施例中,内存描述表建立单元3013首先根据多个连续物理内存3031 建立最低级内存描述表,由于最低级内存描述表必须指向1024个256K的连续物 理内存、2048个128K的连续物理内存、4096个64K的连续物理内存以及8192个 32K的连续物理内存,因此必须包含1024+2048+4096+8192=15360个指针以分别 指向这些连续物理内存,对于64bit的系统,存放指针的内存以及存放长度的内 存都为8字节,这样对于最低级内存描述表就需要(1024+2048+4096+8192) X (8+8) =2401的物理内存来存放最低级内存描述表。
内存描述表建立单元3013进一步包括描述表内存分配单元(图中未示), 用于为每级内存描述表分配相同长度的至少一块连续物理内存,或为每级内存 描述表分配多种长度的多块连续物理内存。如果系统中存在一块240K的连续物 理内存,则可以将该240K的连续物理内存分配给最低级内存描述表,如果不存 在,则本实施例中的描述表内存分配单元,可为最低级内存描述表分配多种长 度的多块连续物理内存。
如本实施例中的最低级内存描述表存储于4块连续物理内存,每块连续物理 内存存储了指向4种不同长度的连续物理内存的指针以及内存长度。其中第一 块连续物理内存包含1024个指针指向256K的连续物理内存,该连续物理内存为16K;第二块连续物理内存包含2048个指针指向128K的连续物理内存,该连续 物理内存为32K;第三块连续物理内存包含4096个指针指向64K的连续物理内 存,该连续物理内存为64K;第四块连续物理内存包含8192个指针指向32K的连 续物理内存,该连续物理内存为128K。
然后,内存描述表建立单元3013根据最低级内存描述表建立次低级内存描 述表,该次低级内存描述表需要包含4个指针来指向这4块连续物理内存,因此 必须包含4个指针以及4个内存长度,对于64bit的系统,存放指针的内存以及存 放长度的内存都为8字节,这样就需要4X8X2二64字节的连续物理内存来存放次 最低级内存描述表。 一般情况下,系统中会存在64字节的连续物理内存,因此, 此时的次低级内存描述表就相当于最高级内存描述表。
图ll为本实施例的一种多级内存描述原理图。该图中,系统中存在一块 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,并利 用所述多块连续物理内存303 l进行数据存取。图13为本实施例中内存存取装置的工作方法流程图。以下结合图12的内存
分配原理图对图13进行详细描述,如图所示,
步骤S1301,首先确定外设硬件的物理内存需求,如1G。 步骤S1302,根据物理内存需求,确定进行尝试分配的内存长度,并按照内 存长度由大到小的顺序进行排序,如256K-128K-64K-32K等等。
步骤S1303和步骤S1304,按照设定的由大的小的顺序尝试为外设硬件分配 连续物理内存,直到多种长度的连续物理内存之和满足外设硬件的物理内存需 求。首先分配最大的连续物理内存256K,由于系统中只存在1024个256K因此不 满足需求,继续分配128K的连续物理内存,由于系统中只存在2048个128K的连 续物理内存,两者之和还是不足1G,因此继续分配64K的连续物理内存,由于 系统中只存在4096个64K的连续物理内存,还是不满足需求,直到分配完8192 个32K的连续物理内存之后,这4种长度的连续物理内存之和等于1G,满足了外 设硬件的需求。内存分配成功,进入步骤S1305。
步骤S1305,将多种长度的多个连续物理内存分配给外设硬件,g卩,将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字节的连续物理内存,比较容易得到满足,因此,最低级内存描述表的上一 级就是最高级内存描述表。
步骤S 1308,将最高级内存描述表的内容发给外设硬件。 步骤S1309,外设硬件通过多级内存描述表到达为其分配的连续物理内存, 并与系统进行数据交互。
图14为本发明实施例的一种通用的多级非线性内存描述表结构。 本发明实施例采用多级非线性内存描述表结构,使系统对外设硬件进行内 存分配不再受限于系统中最大连续物理内存。特别是当操作系统运行一段时间 之后内存碎片不断增加时,同样能够为外设硬件分配到所需的物理内存,只需 要将最高级内存描述表存储的地址和长度告知外设硬件,就能通过该多级非线 性表到达为该外设硬件分配的连续物理内存。该方案还能够通过扩展该非线性 表的级数来实现海量内存的存取,为将来满足硬件设备对内存的更高要求做好 准备。
以上所述的具体实施方式
,对本发明的目的、技术方案和有益效果进行了 进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式
而已, 并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何 修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1. 一种内存存取方法,其特征是,所述的方法包括获取外设硬件的物理内存需求;根据所述外设硬件的物理内存需求,为所述外设硬件分配多块连续物理内存;根据为所述外设硬件分配的多块连续物理内存,建立至少包含最高级和最低级的多级内存描述表,每级内存描述表存储了下一级内存描述表的地址和内存长度,最低级内存描述表存储了为所述外设硬件分配的多块连续物理内存的地址和长度;将所述最高级内存描述表存储的下一级内存描述表的地址和内存长度传给所述外设硬件,所述外设硬件根据所述多级内存描述表到达为其分配的多块连续物理内存,并利用所述多块连续物理内存进行数据存取。
2、 根据权利要求l所述的方法,其特征在于,根据所述外设硬件的物理内 存需求,为所述外设硬件分配多块连续物理内存,包括为所述外设硬件分配相同长度的多块连续物理内存,所述相同长度的多块连续物理内存的长度之和大于或等于所述外设硬件的物理内存需求;或为所述外设硬件分配多种长度的多块连续物理内存,所述多种长度的多块 连续物理内存的长度之和大于或等于所述外设硬件的物理内存需求。
3、 根据权利要求2所述的方法,其特征在于,为所述外设硬件分配相同长 度的多块连续物理内存,所述相同长度的多块连续物理内存的长度之和大于或 等于所述外设硬件的物理内存需求,具体包括按照连续物理内存长度由大到小的顺序进行排序;如果最大长度的多块连续物理内存之和大于或等于所述外设硬件的物理内 存需求,则将最大长度的多块连续物理内存分配给所述外设硬件;如果最大长度的多块连续物理内存之和小于所述外设硬件的物理内存需 求,则按照内存长度由大到小的顺序尝试分配其他长度的连续物理内存,直到 某个长度的多块连续物理内存之和大于或等于所述外设硬件的物理内存需求,并将该长度的多块连续物理内存分配给所述外设硬件。
4、 根据权利要求2所述的方法,其特征在于,为所述外设硬件分配多种长 度的多块连续物理内存,所述多种长度的多块连续物理内存的长度之和大于或 等于所述外设硬件的物理内存需求,具体包括按照连续物理内存长度由大到小的顺序进行排序;如果最大长度的多块连续物理内存之和大于或等于所述外设硬件的物理内存需求,则将所述最大长度的多块连续物理内存分配给所述外设硬件;如果所述最大长度的多块连续物理内存之和小于所述外设硬件的物理内存 需求,则按照内存长度由大到小的顺序尝试分配其他长度的连续物理内存,直 到所分配的多种长度的多块连续物理内存之和大于或等于所述外设硬件的物理 内存需求,并将所述多种长度的多块连续物理内存分配给所述外设硬件。
5、 根据权利要求l所述的方法,其特征在于,所述方法还包括 为每级内存描述表分配相同长度的至少一块连续物理内存;或 为每级内存描述表分配多种长度的多块连续物理内存。
6、 一种内存存取装置,其特征在于,所述装置包括 内存需求获取单元,获取外设硬件的物理内存需求;外设硬件内存分配单元,根据所述外设硬件的物理内存需求,为所述外设 硬件分配多块连续物理内存;内存描述表建立单元,根据为所述外设硬件分配的多块连续物理内存,建 立至少包含最高级和最低级的多级内存描述表,每级内存描述表存储了下一级 内存描述表的地址和内存长度,最低级内存描述表存储了为所述外设硬件分配 的多块连续物理内存的地址和长度;数据交互单元,将所述最高级内存描述表存储的下一级内存描述表的地址 和内存长度传给所述外设硬件,所述外设硬件根据所述多级内存描述表到达为 其分配的多块连续物理内存,并利用所述多块连续物理内存进行数据存取。
7、 根据权利要求6所述的装置,其特征在于,所述外设硬件内存分配单元为外设硬件等长内存分配单元,为所述外设硬件分配相同长度的多块连续物 理内存,所述相同长度的多块连续物理内存的长度之和大于或等于所述外设硬 件的物理内存需求;或外设硬件组合内存分配单元,为所述外设硬件分配多种长度的多块连续物 理内存,所述多种长度的多块连续物理内存的长度之和大于或等于所述外设硬 件的物理内存需求。
8、 根据权利要求7所述的装置,其特征在于,所述外设硬件等长内存分配 单元,具体包括内存长度排序单元,按照连续物理内存长度由大到小的顺序进行排序; 等长内存分配单元,如果最大长度的多块连续物理内存之和大于或等于所 述外设硬件的物理内存需求,则将最大长度的多块连续物理内存么、配给所述外 设硬件;如果最大长度的多块连续物理内存之和小于所述外设硬f牛的物理内存 需求,则按照内存长度由大到小的顺序尝试分配其他长度的连续物理内存,直 到某个长度的多块连续物理内存之和大于或等于所述外设硬件的物理内存需 求,并将该长度的多块连续物理内存分配给所述外设硬件。
9、 根据权利要求7所述的装置,其特征在于,所述外设硬件^合内存分配 单元,具体包括内存长度排序单元,按照连续物理内存长度由大到小的顺序进行排序; 组合内存分配单元,如果最大长度的多块连续物理内存之和大于或等于所 述外设硬件的物理内存需求,则将最大长度的多块连续物理内存灸、配给所述外 设硬^牛;如果最大长度的多块连续物理内存之和小于所述外设5更《4的物理内存 需求,则按照内存长度由大到小的顺序尝试分配其他长度的连续物理内存,直 到所分配的多种长度的多块连续物理内存之和大于或等于所述外设硬件的物理 内存需求,并将所述多种长度的多块连续物理内存分配给所述外设硬件。
10、 根据权利要求6所述的装置,其特征在于,所述内存描述表建立单元,还包括描述表内存分配单元,为每级内存描述表分配相同长度的至少一块连续物 理内存,或为每级内存描述表分配多种长度的多块连续物理内存。
全文摘要
本发明提供一种内存存取方法与装置,所述内存存取方法包括获取外设硬件的物理内存需求;根据外设硬件的物理内存需求,为外设硬件分配多块连续物理内存;根据为外设硬件分配的多块连续物理内存,建立至少包含最高级和最低级的多级内存描述表,每级内存描述表存储了下一级内存描述表的地址和内存长度,最低级内存描述表存储了为外设硬件分配的多块连续物理内存的地址和长度;将最高级内存描述表存储的下一级内存描述表的地址和内存长度传给外设硬件,外设硬件根据多级内存描述表到达为其分配的多块连续物理内存,并利用多块连续物理内存进行数据存取。
文档编号G06F12/08GK101546292SQ20081010268
公开日2009年9月30日 申请日期2008年3月25日 优先权日2008年3月25日
发明者周志雄, 锐 汪 申请人:北京恒光创新科技股份有限公司;北京恒光通信技术有限公司;北京恒光科技发展有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1