CN109783220B - 内存分配方法、装置、计算机系统及存储介质 - Google Patents
内存分配方法、装置、计算机系统及存储介质 Download PDFInfo
- Publication number
- CN109783220B CN109783220B CN201711107271.7A CN201711107271A CN109783220B CN 109783220 B CN109783220 B CN 109783220B CN 201711107271 A CN201711107271 A CN 201711107271A CN 109783220 B CN109783220 B CN 109783220B
- Authority
- CN
- China
- Prior art keywords
- memory
- resource
- processor
- instruction
- storage unit
- 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
Links
Images
Landscapes
- Multi Processors (AREA)
Abstract
本发明提供了一种内存分配方法,上述方法包括如下步骤:获取多个资源形成的第一资源列表;查询目标处理器对应的第一映射存储单元,获得目标处理器的所有待处理资源在第一存储器内占用的第一存储区域;查询多个第一处理器中除目标处理器之外的其余所有的第一处理器对应的第二映射存储单元,获得其余所有的第一处理器对应的待处理资源在第一存储器内占用的第二存储区域;根据第一存储区域、第二存储区域以及第一存储器的总存储区域,获得当前资源在第一存储器上的目标分配区域;将目标内存块的地址分配给当前资源。本发明的内存分配方法、装置、计算机系统及存储介质,可以保证计算机系统运算的准确性,并提高计算机系统的处理效率。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种内存分配方法、装置、计算机系统及存储介质。
背景技术
随着计算机技术的飞速发展,出现了诸如多核第一处理器计算机系统(Multi-core processor Computing System)、异构计算机系统(Heterogeneous ComputingSystem)等包含有多个第一处理器的多第一处理器计算机系统(Multi-processorComputing System)。在上述计算机系统的内存分配过程中,当系统接收到某一资源的内存分配处理请求时,系统可以识别与请求对应的内存块的地址,并将该地址分配给请求对应的资源,该系统完成该资源对应的操作时,系统可以释放该资源所占用的内存块。
若系统同时接收到两个以上资源的内存分配处理请求时,系统往往会按照一定的顺序顺次进行上述两个资源的分配,这样串行的分配方式并不能充分发挥多个第一处理器计算机系统的并行处理优势,造成计算机系统资源的浪费。若系统同时对上述两个资源进行内存分配,两个以上的资源可能同时被分配至同一个内存块,从而出现数据竞争的问题,导致计算机系统的计算结果出现错误,内存分配方式不理想。
发明内容
鉴于传统计算机系统的内存分配存在数据竞争的问题,本发明的目的在于提供一种内存分配方法、装置、计算机系统及存储介质,避免了数据竞争的问题,提高计算机系统的处理效率,避免计算机系统资源的浪费。
为实现上述目的,本发明采用如下技术方案:
一种内存分配方法,所述方法用于包含第一存储器及多个第一处理器的计算机系统中,多个所述第一处理器共用所述第一存储器;所述方法包括如下步骤:
获取多个资源形成的第一资源列表,及所述第一资源列表中待分配内存的当前资源;
根据所述第一资源列表中当前资源对应的目标处理器,查询所述目标处理器对应的第一映射存储单元,获得所述目标处理器的所有待处理资源在所述第一存储器内占用的第一存储区域;
根据所述第一资源列表中当前资源对应的目标处理器,查询所述多个第一处理器中除所述目标处理器之外的其余所有的第一处理器对应的第二映射存储单元,获得其余所有的第一处理器对应的待处理资源在所述第一存储器内占用的第二存储区域;
根据第一存储区域、第二存储区域以及所述第一存储器的总存储区域,获得所述当前资源在所述第一存储器上的目标分配区域;
从所述目标分配区域中选定目标内存块,将所述目标内存块的地址分配给所述当前资源。
在其中一个实施例中,所述方法还包括如下步骤:
将所述目标处理器对应的第一映射存储单元上的第一内存块的地址,分配给所述当前资源;
对所述目标处理器对应的第二映射存储单元上的第二内存块,进行标记和污染;
所述第一映射存储单元上的第一内存块的地址,所述第二映射存储单元上的第二内存块的地址,均与所述第一存储器上所述目标内存块的地址相对应。
在其中一个实施例中,所述获取多个资源形成的第一资源列表的步骤包括:
获取包括多个指令的指令列表,其中,所述指令列表的起始位置设置有第一同步指令,所述指令列表的终止位置设置有第二同步指令,所述第一同步指令和所述第二同步指令用于表示多个所述第一处理器能够并行处理所述指令列表中的指令;
对所述指令列表进行顺序扫描;
若当前指令引用的资源为首次出现的资源时,则记录所述当前指令引用的资源;
根据多个已记录指令引用的资源,形成所述第一资源列表。
在其中一个实施例中,在所述获取多个资源形成的第一资源列表的步骤之前,所述方法还包括如下步骤:
当接收到所述第一同步指令或所述第二同步指令时,则清空并还原各个所述第一处理器对应的第一映射存储单元及第二映射存储单元。
在其中一个实施例中,所述方法还包括如下步骤:
每当接收到所述第一同步指令时,按照所述第一存储器中已存储资源的地址,分别将所述第一存储器中的已存储资源分配至各个所述第一处理器对应的第一映射存储单元和第二映射存储单元,并分别对各个所述第一处理器的第二映射存储单元中已被占用的存储区域进行污染。
在其中一个实施例中,所述方法还包括如下步骤:
对所述指令列表进行逆序扫描;
若当前指令引用的资源为首次出现的资源时,则记录所述当前指令引用的资源;
根据多个已记录的指令引用的资源,形成第二资源列表。
在其中一个实施例中,所述方法还包括如下步骤:
当接收到所述第二同步指令时,释放所述第二资源列表中各个资源在目标处理器对应的第一映射存储单元中占用的存储区域,以及各个资源在第一存储器中占用的存储区域。
在其中一个实施例中,在所述的查询所述目标处理器对应的第一映射存储单元的步骤之前,所述方法还包括如下步骤:
判断当前资源是否已分配有内存块;
若所述当前资源已经分配有内存块,则继续读取下一资源;
若所述当前资源没有分配内存块,则返回查询所述目标处理器对应的第一映射存储单元的步骤。
同时,本发明还提供了一种内存分配装置,包括第二处理器和第二存储器,所述第二存储器用于存储计算机程序,所述第二处理器在运行所述计算机程序时,执行如上述任一项所述的方法的步骤。
本发明还提供了一种计算机系统,所述计算机系统包括第一存储器、内存分配装置及多个第一处理器,多个所述第一处理器共用所述第一存储器;
每个所述第一处理器对应设置有第一映射存储单元和第二映射存储单元,各个所述第一处理器的第一映射存储单元用于存储对应的所述第一处理器的所有待处理资源在所述第一存储器上占用的存储区域,各个所述第一处理器的第二映射存储单元用于记录对应的所述第一处理器的所有待处理资源已经污染的存储区域;
所述内存分配装置包括第二处理器和第二存储器,所述第二存储器用于存储计算机程序,所述第二处理器在运行所述计算机程序时,执行上述任一项所述的方法的步骤。
此外,本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,当所述计算机程序被一个或多个第二处理器执行时,实现如上述任一项所述的方法的步骤。
本发明的内存分配方法、装置、计算机系统及存储介质,通过从当前资源的目标处理器对应的第一映射存储单元中,获得目标处理器对应的所有待处理资源在第一存储器内占用的第一存储区域,从除该目标处理器之外的其余第一处理器对应的第二映射存储单元中,获得除该目标处理器之外的其余所有第一处理器对应的待处理资源,在第一存储器内占用的第二存储区域,并根据第一存储区域、第二存储区域及第一存储器的总存储区域,获得当前资源在第一存储器上的目标分配区域,从目标分配区域中选定目标内存块,将目标内存块的地址分配给当前资源,从而可以避免多个资源被同时分配至第一存储器的同一块内存块导致的数据竞争等问题,保证计算机系统运算的准确性,并可以提高计算机系统的处理效率,避免计算机系统资源的浪费。
附图说明
图1为本发明的计算机系统一实施例的结构框图;
图2为本发明的计算机系统另一实施例的结构框图;
图3为本发明的内存分配装置一实施例的结构框图;
图4为本发明的内存分配方法一实施例的流程图;
图5为本发明的内存分配方法另一实施例的流程图;
图6为图2中计算机系统中第一存储器在资源分配前的内存状态图;
图7为图2中计算机系统中第一存储器在资源分配后的内存状态图。
具体实施方式
为了使本发明的技术方案更加清楚,以下结合附图,对本发明的内存分配方式、计算机系统及计算机存储介质作进一步详细的说明。应当理解,此处所描述的具体实施例仅用以解释本发明并不用于限定本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。应当清楚是,本实施例中的“第一”、“第二”等,仅用于区分所描述的对象,不具有任何顺序或技术含义。
如图1所示,本发明一实施例的计算机系统100可以为多核第一处理器计算机系统(Multi-core processor Computing System)、异构计算机系统(HeterogeneousComputing System)等包含有多个第一处理器的多第一处理器计算机系统(Multi-processor Computing System)。可选地,该计算机系统具体可以包括内存分配装置110、多个第一处理器120以及第一存储器130,多个第一处理器120可以同时连接至内存分配装置110,内存分配装置110可以用于多个第一处理器120的内存管理。可选地,如图3所示,该内存分配装置110也可以包括第二处理器111,进一步地,多个第一处理器120均可以连接至第二处理器111。可选地,该第二处理器111可以包括获取模块1111、运算模块1113及控制模块1112等等,其中,该获取模块1111可以是IO(Input输入/Output输出)接口等硬件模块,运算模块1113及控制模块1112均为硬件模块。
多个第一处理器120可以并行处理不同的指令,以提高该计算机系统的处理效率。可选地,多个第一处理器120均连接至第一存储器130,多个第一处理器120可共用该第一存储器130。可选地,该第一存储器130可以划分为多个内存块,每个内存块对应有内存地址,该计算机系统将某一内存块对应的内存地址分配给某一资源时,该资源可以占用该内存块。其中,该资源是指计算机系统读取的指令引用的资源,而该指令引用的资源具体可以是虚拟内存对象,为资源分配内存的过程,即将第一存储器上某一内存块的物理地址分配给该资源的过程。例如,当前指令为“算法需要使用1kb的内存存放数据”,该指令引用的资源为“1kb的内存”。本实施例中的内存分配过程即是实现未该“1kb的内存”分配物理地址的过程。
进一步地,针对每一个第一处理器120,该计算机系统还可以对应设置有一组映射存储单元,其可以包括第一映射存储单元和第二映射存储单元,该第一映射存储单元和第二映射存储单元可以与该计算机系统的第一存储器130具有完全相同的结构及存储容量。具体地,该第一映射存储单元上的内存块可以一一对应地映射至第一存储器上处于相同位置的内存块,同理,该第二映射存储单元上的内存块可以一一对应地映射至第一存储器上处于相同位置的内存块。其中,第一映射存储单元和第二映射存储单元可以是通过软件程序(如context,上下文)限定的虚拟存储单元,从而增设的第一映射存储单元和第二映射存储单元并不会带来计算机系统的成本增加,及结构复杂等问题。当然,在其他实施例中,第一映射存储单元和第二映射存储单元也可以是与第一存储器130相同的实体第一存储器,如第一存储器130可以为DDR(Double Data Rate,双倍速率同步动态随机第一存储器)、RAM(Random-Access Memory,随机存取第一存储器)等等。
例如,第一存储器130具有N个内存块,其中,N≥1,N为正整数,且N个内存块可以按照预设方向依次标记为第一内存块、第二内存块,……,第N内存块。进一步地,第一映射存储单元和第二映射存储单元也可以具有N个内存块,且第一映射存储单元的N个内存块可以按照预设方向依次标记为第一内存块、第二内存块,……,第N内存块。第二映射存储单元的N个内存块也可以按照预设方向依次标记为第一内存块、第二内存块,……,第N内存块。第一存储器的第一内存块、第一映射存储单元上的第一内存块以及第二映射存储单元上的第二内存块的位置一一对应,以此类推。
具体地,每个第一映射存储单元可以用于记录其对应的第一处理器120的所有待处理资源在第一存储器130上占用的存储区域,其中,第一处理器120的所有待处理资源是指该第一处理器正在执行的指令所引用的资源,以及已分配至该第一处理器但尚未被执行的指令所引用的资源。每个第二映射存储单元可以用于记录其对应的第一处理器的所有待处理资源已经污染的存储区域,该已经污染的存储区域可以是第一映射存储单元对应的第一处理器120的所有待处理资源已经占用的存储区域。应当清楚的是,当存储区域被污染之后,该计算机系统内的所有指令的引用的资源均不能占用该污染的存储区域。
更进一步地,在为当前资源分配内存时,内存分配装置110可以首先获得该当前资源对应的目标处理器。例如,该当前资源对应的目标处理器可以根据指令的类型确定,或该当前资源对应的目标处理器也可以是内存分配装置110根据当前资源的具体内容进行确定。之后,内存分配装置110可以通过查询该目标处理器对应的第一映射存储单元,获得目标处理器对应的所有待处理资源在第一存储器130内占用的第一存储区域。内存分配装置110还可以通过查询多个所述第一存储器130中除该目标处理器之外的其余所有的第一处理器120对应的第二映射存储单元,获得其余所有的第一处理器120对应的待处理资源已经占用的第二存储区域。最后,内存分配装置110可以根据第一存储区域、第二存储区域以及第一存储器130的总存储区域,计算获得当前资源的目标内存分配区域,并在目标内存分配区域上选择合适的目标内存块,并将该选定的目标内存块的地址分配给当前资源,从而完成当前资源的内存分配。
其中,目标分配区域是指第一存储器130上可供当前资源使用的存储区域,该目标分配区域既未被目标处理器上的待处理资源占用,也未被其他第一处理器120上的待处理资源占用。可选地,该第一存储区域小于或等于第一存储器130的总存储区域,第二存储区域小于或等于第一存储器130的总存储区域,该第一存储器130的总存储区域可以为第一存储器130的总存储容量。该目标分配区域可以是第一存储器130的总存储区域减去第一存储区域和第二存储区域之后的剩余存储区域。例如,该目标分配区域可以为第一存储器130上除去该目标处理器上待处理指令引用的资源已经占用的存储区域,以及其余所有的第一处理器120上待处理指令引用的资源已经污染的存储区域之外的剩余存储区域。这样,可以避免计算机系统将两个以上指令的引用的资源同时分配至同一内存块,从而可以避免RAW(Read After Write,读后写)/WAR(Write After Read,写后读)/WAW(Write After Write,写后写)数据相关的指令执行顺序错误,使指令行为不确定而引起的数据竞争问题。
更进一步地,若各个第一处理器120完成当前资源对应的操作时,内存分配装置110可以清空并还原各个第一处理器120的第一映射存储单元和第二映射存储单元,以便于保证下个资源内存分配时的可靠性。同时,当各个第一处理器完成当前资源对应的操作时,还可以释放该资源在第一存储器130上的相应存储区域,以免当前资源长期占用第一存储器的存储空间,影响计算机系统的处理效率。
如图4所示,本发明一实施例的内存分配方法,可以应用于上述的计算机系统中。上述计算机系统可以包含第一存储器130及多个第一处理器120,该多个第一处理器120共用该第一存储器130,该第一存储器130的数量可以为一个,如图1所示。该内存分配方法用以实现上述计算机系统中多个第一处理器对应的多种指令所引用的资源的物理内存分配,提高计算机的处理效率。具体地,上述方法可以包括如下步骤:
S100、获取多个资源形成的第一资源列表,及第一资源列表中待分配内存的当前资源;具体地,第二处理器111可以通过其获取模块1111获得多个资源形成的第一资源列表及第一资源列表中待分配内存的当前资源。该第一资源列表可以用于存储指令列表中各个指令首次引用的资源,第一资源列表的生成方法具体可参见上文中的描述。该指令列表中各个指令引用的资源可以是虚拟内存对象,该虚拟内存对象可以是内存区块、寄存器或其他能够存储数据的存储装置在软件逻辑上的虚拟存储空间。本实施例中,可以对第一资源列表中的各个资源进行扫描,直至完成第一资源列表中的各个资源的内存分配。
S200、根据第一资源列表中当前资源对应的目标处理器,查询目标处理器对应的第一映射存储单元,获得目标处理器对应的所有待处理资源在第一存储器130内占用的第一存储区域。具体地,第二处理器111的控制模块1112可以根据第一资源列表中当前资源对应的目标处理器,查询目标处理器对应的第一映射存储单元,并获得目标处理器对应的所有待处理资源在第一存储器130内占用的第一存储区域。其中,该第一存储区域可以包括一个或多个内存块,该第一存储区域应当小于或等于第一存储器的总存储区域。可选地,该第一映射存储单元与第一存储器具有相同的结构及存储容量。该目标处理器对应的所有待处理资源在第一存储器上占用的内存块的位置,可以一一映射至该目标处理器对应的第一映射存储单元。因此,可以直接通过查询该目标处理器对应的第一映射存储单元,获得该目标处理器对应的待处理资源在第一存储器内占用的第一存储区域。
S300、根据第一资源列表中当前资源对应的目标处理器,查询除目标处理器之外的其余所有的第一处理器对应的第二映射存储单元,获得其余所有的第一处理器对应的待处理资源在第一存储器内占用的第二存储区域。具体地,第二处理器111的控制模块1112可以据第一资源列表中当前资源对应的目标处理器,查询除目标处理器之外的其余所有的第一处理器对应的第二映射存储单元,获得其余所有的第一处理器120对应的待处理资源在第一存储器130内占用的第二存储区域。其中,该第二存储区域可以包括一个或多个内存块,该第二存储区域应当小于或等于第一存储器的总存储区域。可选地,各个第一处理器120对应的第二映射存储单元与第一存储器具有相同的结构及存储容量。各个第一处理器120对应的所有待处理资源在第一存储器上占用的内存块的位置,可以一一映射至各个第一处理器120对应的第二映射存储单元,各个第一处理器120对应的第二存储单元可以用于标记已被污染的存储区域。因此,可以直接通过查询除目标处理器之外的其他所有第一处理器120对应的第二映射存储单元,获得除目标处理器之外的其余所有第一处理器120对应的待处理资源,在第一存储器130内占用的第二存储区域。
S400、根据第一存储区域、第二存储区域以及第一存储器的总存储区域,获得当前资源在第一存储器上的目标分配区域;具体地,第二处理器111的控制模块1112可以根据第一存储区域、第二存储区域以及第一存储器130的总存储区域,获得当前资源在第一存储器130上的目标分配区域。进一步地,在获得当前资源在第一存储器130上的目标分配区域之后,可以对该目标分配区域进行标记。具体地,目标分配区域是指第一存储器130上可供当前资源使用的存储区域,该目标分配区域既未被目标处理器上的待处理资源占用,也未被其他的第一处理器120上的待处理资源占用。
S500、从目标分配区域中选定目标内存块,将目标内存块的地址分配给当前资源,从而当前资源可以占用第一存储器130上的目标内存块。具体地,第二处理器111的控制模块1112可以从目标分配区域中选定目标内存块,将目标内存块的地址分配给当前资源,从而当前资源可以占用第一存储器130上的目标内存块。本实施例中,将目标内存块的地址分配给当前资源的步骤,即是将第一存储器130上的目标内存块的物理地址分配给当前资源。具体地,该目标内存块的大小可以根据当前资源的大小进行确定。进一步地,目标内存块的选定方法可以采用First-fit(首次适应内存分配方法)、Best-fit(最佳适应内存分配方法)或Last-fit(末次适应内存分配方法)中的一种或多种的组合。具体可根据该计算机系统的实际需求进行确定,此处不做具体限定。
应当清楚的是,各个第一处理器120的所有待处理资源是指该第一处理器正在执行的指令所引用的资源,以及已分配至该第一处理器但尚未被执行的指令所引用的资源。本实施例的内存分配方法,可以避免多个资源被同时分配至第一存储器的同一块内存块导致的数据竞争等问题,保证计算机系统运算的准确性。同时,通过上述内存分配方法,可以并行的处理多个资源的内存分配任务,从而可以提高计算机系统的处理效率,避免计算机系统资源的浪费。
可选地,如图5所示,上述方法还包括如下步骤:
S600、将目标处理器对应的第一映射存储单元上的第一内存块的地址,分配给当前资源,对目标处理器对应的第二映射存储单元上的第二内存块,进行标记和污染。具体地,第二处理器111的控制模块1112可以将目标处理器对应的第一映射存储单元上的第一内存块的地址,分配给当前资源,对目标处理器对应的第二映射存储单元上的第二内存块,进行标记和污染。其中,第一映射存储单元上的第一内存块的地址,与第一存储器上目标内存块的地址相对应。即该目标处理器对应的第一映射存储单元上的第一内存块,与该第一存储器上的目标内存块的位置一一映射设置。
具体地,在将目标内存块的地址分配给当前资源时,可以同时将目标处理器的第一映射存储单元的第一内存块的地址分配给当前资源,还可以同时将目标处理器的第二映射存储单元的第二内存块分配给当前资源,即对目标处理器对应的第二映射存储单元上的第二内存块进行标记,并可以对目标处理器对应的第二映射存储单元上的该第二内存块进行污染。应当清楚的是,当存储区域被污染之后,该计算机系统内的所有指令的引用的资源均不能占用该污染的存储区域。
可选地,如图5所示,上述步骤S100进一步可以包括如下步骤:
S110、获取包括多个指令的指令列表,具体地,第二处理器111可以通过其获取模块1111获取上述的指令列表。其中,指令列表中可以包含一条或多条指令,每一条指令包含了一组对资源的引用操作,从而通过对指令的读取或运行,可以获知该指令的引用的资源。即当第一处理器等执行该指令时,可以调用该指令引用的资源,以实现特定的操作。例如,该指令可以是加载指令(Load)、计算指令(computing)或存储指令(store)等等。进一步地,该指令列表中的各个指令可以是经过合理排列形成的,从而使得该指令列表中各个指令之间的排列更加紧凑,以便于缩短指令列表的执行时间,提高系统的处理效率。
可选地,指令列表的起始位置设置有第一同步指令,指令列表的终止位置设置有第二同步指令,该第一同步指令和第二同步指令可以不包含于指令列表内。当需要在该计算机系统的多个第一处理器上同步运行指令列表中的多个指令时,可以人为在指令列表的起始位置设置第一同步指令,同时在指令列表的终止位置设置第二同步指令。当然,在其他实施例中,第一同步指令和第二同步指令还可以包含于该指令列表中,即指令列表的起始指令为第一同步指令,指令列表的终止指令为第二同步指令。可选地,该第一同步指令和第二同步指令用于表示多个第一处理器能够并行处理指令列表中的指令。应当清楚的是,该第一同步指令和第二同步指令可以具有相同的指令内容,此处仅为便于区分两者,并不用于限定其内容。
S120、对指令列表进行顺序扫描;具体地,第二处理器111的运算模块1113可以对获取的指令列表进行顺序扫描,即内存分配装置110可以从上述指令列表的起始位置向其终止位置进行顺序扫描,即首先读取第一同步指令,最后读取第二同步指令,当接收到第二同步指令时,可以表明当前指令列表加载完成。
S130、若当前指令引用的资源为首次出现的资源时,则记录当前指令引用的资源。具体地,内存分配装置110可以顺次扫描各个指令并获取各条指令的引用的资源。若第二处理器111的运算模块1113判定在当前指令之前,当前指令引用的资源均未出现时,则可以认为当前指令引用的资源为首次出现的资源,此时内存分配装置110可以记录该当前指令引用的资源。
S140、根据多个已记录的指令引用的资源,形成第一资源列表。具体地,第二处理器111的运算模块1113可以根据多个已记录的指令的资源的记录时间进行排序,从而获得第一资源列表。
进一步地,上述步骤S100还可以包括如下步骤:
S150、对指令列表进行逆序扫描;具体地,第二处理器111的运算模块1113还可以对获取的指令列表进行逆序扫描,即内存分配装置110可以从上述指令列表的终止位置向其起始位置进行顺序扫描,即首先扫描获得第二同步指令,最后扫描获得第一同步指令,当接收到第一同步指令时,可以表明当前指令列表扫描完成。
S160、若当前指令引用的资源为首次出现的资源时,则记录当前指令的引用的资源。具体地,当前指令是指从指令列表中读取,并正在执行的指令。内存分配装置110对指令列表进行逆序扫描时,若第二处理器111的运算模块1113判定当前指令引用的资源为首次出现的资源时,则可以说明该当前指令引用的资源实质上是指令列表各个指令最后一次引用的资源。进一步地,当对指令列表进行逆序扫描时,记录当前指令引用的资源的步骤与上述顺序扫描时的记录过程一致,具体可参见上文的描述。
S170、根据多个已记录的指令引用的资源,形成第二资源列表。具体地,第二处理器111的运算模块1113可以根据多个已记录的指令的引用的资源的记录时间进行排序,从而获得第二资源列表。一般地,该第二资源列表中已记录指令引用的资源,与第一资源列表中已记录指令引用的资源基本相同。因此,可以根据上述的第一资源列表和第二资源列表,获得上述指令集中指令引用的资源的生命周期。应当清楚的是,此处的生命周期是指计算机程序层面上的生命周期,其仅仅是对各个资源的生命周期的估计,而并不完全等同于各个资源在物理实现层面上的实际生命周期。
例如,针对同一个资源,可以从第一资源列表中获知其首次出现的时刻,同时可以从第二资源列表中获知该资源最后一次出现的时刻,从而可以根据该资源最后一次出现的时刻与首次出现的时刻之间的时间间隔获得该资源的生命周期。这样,在资源的生命周期结束时,系统可以释放该资源占用的内存区域,以避免存储区域被长期占用导致系统的处理效率降低。
应当清楚的是,内存分配装置110可以先对上述指令列表进行顺序扫描,再进行逆序扫描,也可以先对上述指令列表进行逆序扫描,再进行顺序扫描。当然,上述顺序扫描和逆序扫描的步骤还可以同时执行。上述的扫描步骤的执行顺序可以根据具体情况进行调整,此处仅作为示例性的说明,并不用于限定其执行顺序。
可选地,如图5所示,在上述步骤S200之前,上述方法还包括如下步骤:
S700、当接收到第一同步指令或第二同步指令时,则清空并还原各个第一处理器对应的第一映射存储单元及第二映射存储单元。具体地,当第二处理器111通过其获取模块1111接收到第一同步指令或第二同步指令时,则第二处理器111的控制模块1112可以根据该已接收的第一同步指令或第二同步指令,清空并还原各个第一处理器对应的第一映射存储单元及第二映射存储单元。本实施例中,当接收到第一同步指令或第二同步指令时,通过对各个第一处理器的第一映射存储单元和第二映射存储单元进行初始化,可以进一步避免数据竞争问题的出现,保证计算机系统的运算可靠性及准确性。可选地,当各个第一处理器的第二映射存储单元被清空并还原后,该第二映射存储单元相当于一个处于空载状态的新的存储单元,可以向第二映射存储单元内存储资源或进行不同的污染标记等等。
当内存分配装置110接收到第一同步指令时,内存分配装置110可以按照第一存储器中已存储资源的地址,分别将第一存储器130中的已存储资源分配至各个第一处理器120对应的第一映射存储单元和第二映射存储单元,并分别对各个第一处理器120的第二映射存储单元中已被占用的存储区域进行污染。即每当需要对指令列表中各个指令引用的资源进行内存分配时,首先将第一存储器130中已存储的资源分配至各个第一处理器120的第一映射存储单元及第二映射存储单元,从而获知在执行该指令列表之前,第一存储器130的哪些存储区域已经被占用,以免数据竞争问题的出现,保证计算机系统的运算可靠性及准确性。
可选地,上述方法还包括如下步骤:
S180、当内存分配装置110接收到第二同步指令时,内存分配装置110释放第二资源列表中各个资源在目标处理器对应的第一映射存储单元中占用的存储区域,以及各个资源在第一存储器130中占用的存储区域。具体地,当第二处理器111通过其获取模块1111接收到第二同步指令时,第二处理器111的控制模块1112可以根据该已接收的第二同步指令,释放第二资源列表中各个资源在目标处理器对应的第一映射存储单元中占用的存储区域,以及各个资源在第一存储器130中占用的存储区域。这样,当接收到第二同步指令时,可以释放该资源占用的内存区域,以避免存储区域被长期占用导致系统的处理效率降低。
可选地,在上述步骤S200之前,上述方法还包括如下步骤:
S800、判断当前资源是否已分配有内存块;具体地,第二处理器111的控制模块1112可以用于判断当前资源是否已分配有内存块。
若当前资源没有分配内存块,则执行查询目标处理器对应的第一映射存储单元的步骤,以便于实现当前资源的内存块分配。具体地,若内存分配装置110判定当前资源没有分配内存块,则内存分配装置的控制模块1112可以用于执行步骤S200~步骤S500,以实现当前资源的内存块分配。
若当前资源已经分配有内存块,则继续读取下一资源,并判断下一资源是否已分配有内存块,循环执行上述步骤,直至指令列表中的所有指令的引用的资源均完成内存分配。
同时,如图3所示,本发明一实施例还提供了一种内存分配装置110,包括第二处理器111和第二存储器112,第二存储器112用于存储计算机程序,第二处理器111在运行计算机程序时,执行如上述任一实施例的内存分配方法。其中,该第二存储器112可以是第一存储器130,该第二存储器112也可以是与第一存储器130相对独立的存储器。可选地,该第二处理器111可以包括获取模块1111、运算模块1113及控制模块1112等等,其中,该获取模块1111可以是IO(Input输入/Output输出)接口等硬件模块,运算模块1113及控制模块1112均为硬件模块。具体地,第二处理器111在运行计算机程序时,执行如下步骤:
获取多个资源形成的第一资源列表,及第一资源列表中待分配内存的当前资源;具体地,第二处理器111可以通过其获取模块1111获得多个资源形成的第一资源列表及第一资源列表中待分配内存的当前资源。
根据第一资源列表中当前资源对应的目标处理器,查询目标处理器对应的第一映射存储单元,获得目标处理器对应的所有待处理资源在第一存储器内占用的第一存储区域;具体地,第二处理器111的控制模块1112可以根据第一资源列表中当前资源对应的目标处理器,查询目标处理器对应的第一映射存储单元,并获得目标处理器对应的所有待处理资源在第一存储器130内占用的第一存储区域。
根据第一资源列表中当前资源对应的目标处理器,查询多个第一处理器中除目标处理器之外的其余所有的第一处理器对应的第二映射存储单元,获得其余所有的第一处理器对应的待处理资源在第一存储器内占用的第二存储区域;具体地,第二处理器111的控制模块1112可以据第一资源列表中当前资源对应的目标处理器,查询除目标处理器之外的其余所有的第一处理器对应的第二映射存储单元,获得其余所有的第一处理器120对应的待处理资源在第一存储器130内占用的第二存储区域。
根据第一存储区域、第二存储区域以及第一存储器的总存储区域,获得当前资源在第一存储器上的目标分配区域;具体地,第二处理器111的控制模块1112可以根据第一存储区域、第二存储区域以及第一存储器的总存储区域,获得当前资源在第一存储器130上的目标分配区域。
从目标分配区域中选定目标内存块,将目标内存块的地址分配给当前资源。具体地,第二处理器111的控制模块1112可以从目标分配区域中选定目标内存块,将目标内存块的地址分配给当前资源,从而当前资源可以占用第一存储器130上的目标内存块。
应当清楚的是,上述内存分配装置110的工作原理与上述方法的各个步骤的执行过程一致,具体可参见上文中的描述。
如图1所示,本发明一实施例还提供了一种计算机系统100,该计算机系统包括多个第一处理器120、第一存储器130以及内存分配装置110,多个第一处理器120均连接至该第一存储器130,多个第一处理器120共用该第一存储器130。每个第一处理器120对应设置有第一映射存储单元和第二映射存储单元,其中,第一映射存储单元用于存储相应第一处理器120的所有待处理指令所占用的存储区域,第二映射存储单元用于记录相应第一处理器120的所有待处理指令已经污染的存储区域。内存分配装置110用于实现各个第一处理器120上指令的内存块分配,如图3所示,内存分配装置110包括第二处理器111和第二存储器112,第二存储器112用于存储计算机程序。第二处理器111在运行所述计算机程序时,执行如下步骤:
获取多个资源形成的第一资源列表,及第一资源列表中待分配内存的当前资源;具体地,第二处理器111可以通过其获取模块1111获得多个资源形成的第一资源列表及第一资源列表中待分配内存的当前资源。该第一资源列表可以用于存储指令列表中各个指令首次引用的资源。
根据第一资源列表中当前资源对应的目标处理器,查询目标处理器对应的第一映射存储单元,获得目标处理器对应的所有待处理资源在第一存储器130内占用的第一存储区域;第二处理器111的控制模块1112可以根据第一资源列表中当前资源对应的目标处理器,查询目标处理器对应的第一映射存储单元,并获得目标处理器对应的所有待处理资源在第一存储器130内占用的第一存储区域。
根据第一资源列表中当前资源对应的目标处理器,查询多个第一存储器中除目标处理器之外的其余所有的第一处理器120对应的第二映射存储单元,获得除目标处理器之外的其余所有的第一处理器120对应的待处理资源,在第一存储器130内占用的第二存储区域;具体地,第二处理器111的控制模块1112可以据第一资源列表中当前资源对应的目标处理器,查询除目标处理器之外的其余所有的第一处理器对应的第二映射存储单元,获得其余所有的第一处理器120对应的待处理资源在第一存储器130内占用的第二存储区域。
根据第一存储区域、第二存储区域以及第一存储器的总存储区域,获得当前资源在第一存储器130上的目标分配区域;具体地,具体地,第二处理器111的控制模块1112可以根据第一存储区域、第二存储区域以及第一存储器的总存储区域,获得当前资源在第一存储器130上的目标分配区域。其中,目标分配区域是指第一存储器130上可供当前资源使用的存储区域,该目标分配区域既未被目标处理器上的待处理资源占用,也未被其他第一处理器120上的待处理资源占用。
从目标分配区域中选定目标内存块,将目标内存块的地址分配给当前资源。具体地,具体地,第二处理器111的控制模块1112可以从目标分配区域中选定目标内存块,将目标内存块的地址分配给当前资源,从而当前资源可以占用第一存储器130上的目标内存块。其中,该目标内存块的大小可以根据当前资源的大小进行确定。进一步地,目标内存块的选定方法可以采用First-fit(首次适应内存分配方法)、Best-fit(最佳适应内存分配方法)或Last-fit(末次适应内存分配方法)中的一种或多种的组合。具体可根据该计算机系统的实际需求进行确定,此处不做具体限定。
本实施例的计算机系统,可以避免多个资源被同时分配至第一存储器的同一块内存块导致的数据竞争等问题,保证计算机系统运算的准确性。同时,通过上述内存分配方法,可以并行的处理多个资源的内存分配任务,从而可以提高计算机系统的处理效率,避免计算机系统资源的浪费。
可选地,该内存分配装置110的第二处理器111还用于执行如下步骤:
将所述目标处理器对应的第一映射存储单元上的第一内存块的地址,分配给所述当前资源;对目标处理器对应的第二映射存储单元上的第二内存块,进行标记和污染;具体地,第二处理器111的控制模块1112可以将目标处理器对应的第一映射存储单元上的第一内存块的地址,分配给当前资源,对目标处理器对应的第二映射存储单元上的第二内存块,进行标记和污染。其中,第一映射存储单元上的第一内存块的地址,第二映射存储单元上的第二内存块的地址,均与第一存储器上目标内存块的地址相对应。
可选地,内存分配装置的第二处理器在获取多个资源形成的第一资源列表的步骤时,具体执行如下步骤:
获取包括多个指令的指令列表,具体地,第二处理器111可以通过其获取模块1111获取上述的指令列表。其中,所述指令列表的起始指令为第一同步指令,所述指令列表的终止指令为第二同步指令;其中,指令列表中可以包含一条或多条指令,每一条指令包含了一组对资源的引用操作,从而通过对指令的读取或运行,可以获知该指令的引用的资源。可选地,指令列表的起始位置设置有第一同步指令,指令列表的终止位置设置有第二同步指令。第一同步指令和第二同步指令用于表示多个第一处理器能够并行处理指令列表中的指令。
对指令列表进行顺序扫描;具体地,第二处理器111的运算模块1113可以对获取的指令列表进行顺序扫描,即内存分配装置110可以从上述指令列表的起始位置向其终止位置进行顺序扫描,即首先读取第一同步指令,最后读取第二同步指令,当接收到第二同步指令时,可以表明当前指令列表加载完成。
若当前指令引用的资源为首次出现的资源时,则记录当前指令引用的资源;具体地,内存分配装置110可以顺次扫描各个指令并获取各条指令引用的资源。若第二处理器111的运算模块1113判定在当前指令之前,当前指令引用的资源均未出现时,则可以认为当前指令的引用的资源为首次出现引用的资源,此时记录该当前指令引用的资源。
根据多个已记录的指令引用的资源,形成第一资源列表。
可选地,在所述的获取第一资源列表的步骤之前,内存分配装置110的第二处理器111还用于执行如下步骤:
当接收到第一同步指令或第二同步指令时,则清空并还原各个第一处理器对应的第一映射存储单元及第二映射存储单元。具体地,当第二处理器111通过其获取模块1111接收到第一同步指令或第二同步指令时,则第二处理器111的控制模块1112可以根据该已接收的第一同步指令或第二同步指令,清空并还原各个第一处理器120对应的第一映射存储单元及第二映射存储单元。本实施例中,当接收到第一同步指令或第二同步指令时,通过对各个第一处理器120的第一映射存储单元和第二映射存储单元进行初始化,可以进一步避免数据竞争问题的出现,保证计算机系统的运算可靠性及准确性。可选地,当各个第一处理器120的第二映射存储单元被清空并还原后,该第二映射存储单元相当于一个处于空载状态的新的存储单元,可以向第二映射存储单元内存储资源或进行不同的污染标记等等。
当内存分配装置110接收到第一同步指令时,内存分配装置110可以按照第一存储器中已存储资源的地址,分别将第一存储器130中的已存储资源分配至各个第一处理器120对应的第一映射存储单元和第二映射存储单元,并分别对各个第一处理器120的第二映射存储单元中已被占用的存储区域进行污染。即每当需要对指令列表中各个指令引用的资源进行内存分配时,首先将第一存储器130中已存储的资源分配至各个第一处理器120的第一映射存储单元及第二映射存储单元,从而获知在执行该指令列表之前,第一存储器130的哪些存储区域已经被占用,以免数据竞争问题的出现,保证计算机系统的运算可靠性及准确性。
可选地,内存分配装置110的第二处理器111还用于执行如下步骤:
对指令列表进行逆序扫描;具体地,第二处理器111的运算模块1113还可以对获取的指令列表进行逆序扫描,即内存分配装置110可以从上述指令列表的终止位置向其起始位置进行顺序扫描,即首先扫描获得第二同步指令,最后扫描获得第一同步指令,当接收到第一同步指令时,可以表明当前指令列表扫描完成。
若当前指令引用的资源为首次出现的引用的资源时,则记录当前指令引用的资源;
根据多个已记录的指令引用的资源,形成第二资源列表。
应当清楚的是,可以先对上述指令列表进行顺序扫描,再进行逆序扫描,也可以先对上述指令列表进行逆序扫描,再进行顺序扫描。当然,上述顺序扫描和逆序扫描的步骤还可以同时执行。上述的扫描步骤的执行顺序可以根据具体情况进行调整,此处仅作为示例性的说明,并不用于限定其执行顺序。
可选地,内存分配装置110的第二处理器111还用于执行如下步骤:
当内存分配装置110接收到第二同步指令时,内存分配装置110释放第二资源列表中各个资源在目标处理器对应的第一映射存储单元中占用的存储区域,以及各个资源在第一存储器中占用的存储区域。具体地,当第二处理器111通过其获取模块1111接收到第二同步指令时,第二处理器111的控制模块1112可以根据该已接收的第二同步指令,释放第二资源列表中各个资源在目标处理器对应的第一映射存储单元中占用的存储区域,以及各个资源在第一存储器130中占用的存储区域。这样,当接收到第二同步指令时,可以释放该资源占用的内存区域,以避免存储区域被长期占用导致系统的处理效率降低。
可选地,内存分配装置110的第二处理器111在查询目标处理器对应的第一映射存储单元的步骤之前,还用于:
判断当前资源是否已分配有内存块;具体地,第二处理器111的控制模块1112可以用于判断当前资源是否已分配有内存块。
若所述当前资源已经分配有内存块,则继续读取下一资源;
若所述当前资源没有分配内存块,则继续读取下一资源,并判断下一资源是否已分配有内存块,循环执行上述步骤,直至指令列表中的所有指令的引用的资源均完成内存分配。具体地,若内存分配装置110判定当前资源没有分配内存块,则内存分配装置的控制模块1112可以用于执行查询目标处理器对应的第一映射存储单元的步骤,以实现当前资源的内存块分配。
应当清楚的是,本实施例中的计算机系统的工作过程,与上述内存分配方法中的各个步骤的执行过程基本一致,具体可参见上文中的描述。以下结合如图举例说明上述内存分配的过程:
如图2所示,该计算机系统200中可以包括内存分配装置210、两个第一处理器以及第一存储器240,为便于表述,上述的两个第一处理器可以记为第一处理器A 220和第一处理器B 230。如图5和图6所示,针对该第一处理器A 220可以设置有第一映射存储单元221和第二映射存储单元222。同时,针对该第一处理器B 230可以设置有第一映射存储单元231和第二映射存储单元232。当然,在计算机系统的第一处理器的数量大于两个时,可相应的拓展第一映射存储单元和第二映射存储单元的数量,此处仅用于示例性的说明,不再一一穷举。
进一步地,各个第一处理器的映射存储单元与第一存储器240具有相同的存储容量及结构。即,各个第一处理器的第一映射存储单元(221或231)与第一存储器240具有相同的存储容量及结构,且各个第一处理器的第二映射存储单元(222或232)与第一存储器240具有相同的存储容量及结构。如图6和图7所示,第一存储器240可以具有N个内存块,其中,N≥1,N为正整数,且N个内存块可以按照从左到右的顺序,依次标记为第一内存块、第二内存块,……,第N内存块。进一步地,第一映射存储单元和第二映射存储单元也可以具有N个内存块,且第一映射存储单元的N个内存块可以按照从左到右的顺序,依次标记为第一内存块、第二内存块,……,第N内存块。第二映射存储单元的N个内存块也可以按照从左到右的顺序,依次标记为第一内存块、第二内存块,……,第N内存块。第一存储器240的第一内存块、第一映射存储单元上的第一内存块以及第二映射存储单元上的第二内存块的位置一一对应,以此类推。
当接收到第一同步指令和第二同步指令时,首先通过顺序扫描指令列表和逆序扫描指令列表获得第一资源列表和第二资源列表。同时,当接收到第一同步指令或第二同步指令时,将第一存储器240中的已存储资源分别分配至各个第一处理器对应的第一映射存储单元,同时在各个第一处理器的第二映射存储单元中标记并污染该已分配资源占用的内存块。
假设第一存储器240中存储有资源a~d,其中已分配资源a和c对应的目标处理器为第一处理器A 220,资源b和d对应的目标处理器为第一处理器B 230。如图6所示,资源a占用第一内存块,资源b占用第二内存块,资源c占用第三内存块,资源d占用第四内存块。第五内存块至第N内存块为空置状态。
当接收到第一同步指令或第二同步指令时,可以将资源a和c分别分配至第一处理器A 220对应的第一映射存储单元221上的第一内存块和第三内存块,并对第一处理器A220的第二映射存储单元222上的第一内存块和第三内存块进行污染,例如图6和图7中的阴影部分表示被污染的内存块。同理,当接收到第一同步指令或第二同步指令时,可以将资源b和d分配至第一处理器B 230对应的第一映射存储单元231上的第二内存块和第四内存块,并对第一处理器B 230的第二映射存储单元232上的第二内存块和第四内存块进行污染。
之后,通过对获取的指令列表进行顺序扫描和逆序扫描,可以获得第一资源列表和第二资源列表。其中,第一资源列表用于记录指令列表中各个指令首次引用的资源,第二资源列表用于记录指令列表中各个指令最后一次引用的资源。
针对第一资源列表中的每一个资源,可以对其中的资源进行内存分配操作。具体地,若当前资源已经分配有内存块时,则不再重复对该资源进行内存块的分配,而是直接判断下一资源是否已经分配有内存块。若当前资源尚未分配有内存块,则可以根据如下步骤实现对当前资源的内存块分配。例如,当前资源对应的目标处理器为第一处理器A 220时,则可以查询第一处理器A220对应的第一映射存储单元221以及第一处理器B 230对应的第二映射存储单元232。从第一处理器A 230对应的第一映射存储单元221中,可以获得第一处理器A220的所有待处理指令的引用的资源所占用的第一存储区域。如图5所示,该第一存储区域可以为第一处理器A 220对应的第一映射存储单元221上的第一内存块和第三内存块。从第一处理器B 230对应的第二映射存储单元232中,可以获得第一处理器B 230上待第一处理器指令的引用的资源已经占用并污染的第二存储区域,如图5所示,该第二存储区域可以为第一处理器B 230对应的第二映射存储单元232上已经污染的第二内存块和第四内存块。
根据上述的第一存储区域、第二存储区域以及第一存储器240的总存储区域,可以获得当前资源e的目标分配区域。如,该目标分配区域可以是第五内存块至第N内存块形成的存储区域。之后,可以根据该当前资源e所需占用空间的大小,在目标分配区域内选定一个匹配的内存块,并将该选定的内存块的地址分配给当前资源e,从而该当前资源e占用第一存储器240上的相应位置。如图7所示,可以将第一存储器上第五内存块的地址分配给当前资源e。同时在第一处理器A 220对应的第一映射存储单元221和第二映射存储单元222上标记该选定的第五内存块。具体地,可以将第一处理器A 220对应的第一映射存储单元221的上第五内存块的地址分配给资源e,从而可以将资源e同步占用第一处理器A 220对应的第一映射存储单元221上。同时污染第一处理器A 220对应的第二映射存储单元222上的第五内存块,如图7所示。通过同时对目标处理器对应的第一映射存储单元和第二映射存储单元的存储状态进行同步更新,可以保证下一资源的内存分配可靠性。针对第二资源列表中的每一个资源,若当前指令为第二同步指令时,则释放第一映射存储单元和第一存储器中存储的资源占用的目标内存块。
此外,本发明一实施例还提供了计算机可读存储介质,其上存储有计算机程序,当该计算机程序被一个或多个第二处理器执行时,具体执行上述任一实施例中的方法。其中,所述的非易失性存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
本发明的内存分配方法、装置、计算机系统及存储介质,通过从当前资源的目标处理器对应的第一映射存储单元中,获得目标处理器对应的所有待处理资源在第一存储器内占用的第一存储区域,从该目标处理器对应的第二映射存储单元中,获得除该目标处理器之外的其余所有第一处理器对应的待处理资源,在第一存储器内占用的第二存储区域,并根据第一存储区域、第二存储区域及第一存储器的总存储区域,获得当前资源在第一存储器上的目标分配区域,从目标分配区域中选定目标内存块,将目标内存块的地址分配给当前资源,从而可以避免多个资源被同时分配至第一存储器的同一块内存块导致的数据竞争等问题,保证计算机系统运算的准确性,并可以提高计算机系统的处理效率,避免计算机系统资源的浪费。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (11)
1.一种内存分配方法,其特征在于,所述方法用于包含第一存储器及多个第一处理器的计算机系统中,多个所述第一处理器共用所述第一存储器;所述方法包括如下步骤:
获取多个资源形成的第一资源列表,及所述第一资源列表中待分配内存的当前资源;其中,所述资源是指计算机系统读取的指令引用的资源,所述指令引用的资源包括虚拟内存对象;
根据所述第一资源列表中当前资源对应的目标处理器,查询所述目标处理器对应的第一映射存储单元,获得所述目标处理器的所有待处理资源在所述第一存储器内占用的第一存储区域;
根据所述第一资源列表中当前资源对应的目标处理器,查询所述多个第一处理器中除所述目标处理器之外的其余所有的第一处理器对应的第二映射存储单元,获得其余所有的第一处理器对应的待处理资源在所述第一存储器内占用的第二存储区域;
根据第一存储区域、第二存储区域以及所述第一存储器的总存储区域,获得所述当前资源在所述第一存储器上的目标分配区域;
从所述目标分配区域中选定目标内存块,将所述目标内存块的地址分配给所述当前资源。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括如下步骤:
将所述目标处理器对应的第一映射存储单元上的第一内存块的地址,分配给所述当前资源;
对所述目标处理器对应的第二映射存储单元上的第二内存块,进行标记和污染;
所述第一映射存储单元上的第一内存块的地址,所述第二映射存储单元上的第二内存块的地址,均与所述第一存储器上所述目标内存块的地址相对应。
3.根据权利要求1或2所述的方法,其特征在于,所述获取多个资源形成的第一资源列表的步骤包括:
获取包括多个指令的指令列表,其中,所述指令列表的起始位置设置有第一同步指令,所述指令列表的终止位置设置有第二同步指令,所述第一同步指令和所述第二同步指令用于表示多个所述第一处理器能够并行处理所述指令列表中的指令;
对所述指令列表进行顺序扫描;
若当前指令引用的资源为首次出现的资源时,则记录所述当前指令引用的资源;
根据多个已记录指令引用的资源,形成所述第一资源列表。
4.根据权利要求3所述的方法,其特征在于,在所述获取多个资源形成的第一资源列表的步骤之前,所述方法还包括如下步骤:
当接收到所述第一同步指令或所述第二同步指令时,则清空并还原各个所述第一处理器对应的第一映射存储单元及第二映射存储单元。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括如下步骤:
每当接收到所述第一同步指令时,按照所述第一存储器中已存储资源的地址,分别将所述第一存储器中的已存储资源分配至各个所述第一处理器对应的第一映射存储单元和第二映射存储单元,并分别对各个所述第一处理器的第二映射存储单元中已被占用的存储区域进行污染。
6.根据权利要求3所述的方法,其特征在于,所述方法还包括如下步骤:
对所述指令列表进行逆序扫描;
若当前指令引用的资源为首次出现的资源时,则记录所述当前指令引用的资源;
根据多个已记录的指令引用的资源,形成第二资源列表。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括如下步骤:
当接收到所述第二同步指令时,释放所述第二资源列表中各个资源在目标处理器对应的第一映射存储单元中占用的存储区域,以及各个资源在第一存储器中占用的存储区域。
8.根据权利要求1所述的方法,其特征在于,在所述的查询所述目标处理器对应的第一映射存储单元的步骤之前,所述方法还包括如下步骤:
判断当前资源是否已分配有内存块;
若所述当前资源已经分配有内存块,则继续读取下一资源;
若所述当前资源没有分配内存块,则返回查询所述目标处理器对应的第一映射存储单元的步骤。
9.一种内存分配装置,其特征在于,包括第二处理器和第二存储器,所述第二存储器用于存储计算机程序,所述第二处理器在运行所述计算机程序时,执行如权利要求1-8任一项所述的方法的步骤。
10.一种计算机系统,其特征在于,所述计算机系统包括第一存储器、内存分配装置及多个第一处理器,多个所述第一处理器共用所述第一存储器;
每个所述第一处理器对应设置有第一映射存储单元和第二映射存储单元,各个所述第一处理器的第一映射存储单元用于存储对应的所述第一处理器的所有待处理资源在所述第一存储器上占用的存储区域,各个所述第一处理器的第二映射存储单元用于记录对应的所述第一处理器的所有待处理资源已经污染的存储区域;
所述内存分配装置包括第二处理器和第二存储器,所述第二存储器用于存储计算机程序,所述第二处理器在运行所述计算机程序时,执行如权利要求1-8任一项所述的方法的步骤。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,当所述计算机程序被一个或多个第二处理器执行时,实现如权利要求1-8任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711107271.7A CN109783220B (zh) | 2017-11-10 | 2017-11-10 | 内存分配方法、装置、计算机系统及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711107271.7A CN109783220B (zh) | 2017-11-10 | 2017-11-10 | 内存分配方法、装置、计算机系统及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109783220A CN109783220A (zh) | 2019-05-21 |
CN109783220B true CN109783220B (zh) | 2020-12-11 |
Family
ID=66484537
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711107271.7A Active CN109783220B (zh) | 2017-11-10 | 2017-11-10 | 内存分配方法、装置、计算机系统及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109783220B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230214322A1 (en) * | 2020-05-18 | 2023-07-06 | Cambricon (Xi'an) Semiconductor Co., Ltd. | Method and device for allocating storage addresses for data in memory |
CN113900829B (zh) * | 2021-12-10 | 2022-04-12 | 深圳比特微电子科技有限公司 | 用于设备的内存管理方法、内存管理设备和计算系统 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101008923A (zh) * | 2007-01-26 | 2007-08-01 | 浙江大学 | 面向异构多核体系的分段式存储空间管理方法 |
CN101246466A (zh) * | 2007-11-29 | 2008-08-20 | 华为技术有限公司 | 多核系统中共享内存的管理方法和装置 |
CN102306126A (zh) * | 2011-08-24 | 2012-01-04 | 华为技术有限公司 | 内存管理方法、装置和系统 |
CN102446159A (zh) * | 2010-10-12 | 2012-05-09 | 无锡江南计算技术研究所 | 多核处理器的数据管理方法及装置 |
US8566832B1 (en) * | 2007-04-13 | 2013-10-22 | Marvell International Ltd | Power optimization for multi-core devices having a shared memory manager |
CN103902467A (zh) * | 2012-12-26 | 2014-07-02 | 华为技术有限公司 | 压缩内存访问控制方法、装置及系统 |
CN104133777A (zh) * | 2014-07-24 | 2014-11-05 | 曙光信息产业(北京)有限公司 | 一种共享存储系统及其使用方法 |
CN105094993A (zh) * | 2015-08-18 | 2015-11-25 | 华为技术有限公司 | 一种多核处理器、数据同步的方法及装置 |
CN105159838A (zh) * | 2015-08-27 | 2015-12-16 | 华为技术有限公司 | 访问内存的方法及计算机系统 |
CN105302765A (zh) * | 2014-07-22 | 2016-02-03 | 电信科学技术研究院 | 一种系统级芯片及其内存访问管理方法 |
-
2017
- 2017-11-10 CN CN201711107271.7A patent/CN109783220B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101008923A (zh) * | 2007-01-26 | 2007-08-01 | 浙江大学 | 面向异构多核体系的分段式存储空间管理方法 |
US8566832B1 (en) * | 2007-04-13 | 2013-10-22 | Marvell International Ltd | Power optimization for multi-core devices having a shared memory manager |
CN101246466A (zh) * | 2007-11-29 | 2008-08-20 | 华为技术有限公司 | 多核系统中共享内存的管理方法和装置 |
CN102446159A (zh) * | 2010-10-12 | 2012-05-09 | 无锡江南计算技术研究所 | 多核处理器的数据管理方法及装置 |
CN102306126A (zh) * | 2011-08-24 | 2012-01-04 | 华为技术有限公司 | 内存管理方法、装置和系统 |
CN103902467A (zh) * | 2012-12-26 | 2014-07-02 | 华为技术有限公司 | 压缩内存访问控制方法、装置及系统 |
CN105302765A (zh) * | 2014-07-22 | 2016-02-03 | 电信科学技术研究院 | 一种系统级芯片及其内存访问管理方法 |
CN104133777A (zh) * | 2014-07-24 | 2014-11-05 | 曙光信息产业(北京)有限公司 | 一种共享存储系统及其使用方法 |
CN105094993A (zh) * | 2015-08-18 | 2015-11-25 | 华为技术有限公司 | 一种多核处理器、数据同步的方法及装置 |
CN105159838A (zh) * | 2015-08-27 | 2015-12-16 | 华为技术有限公司 | 访问内存的方法及计算机系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109783220A (zh) | 2019-05-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20150163324A1 (en) | Approach to adaptive allocation of shared resources in computer systems | |
EP2565786A1 (en) | Information processing device and task switching method | |
US10789170B2 (en) | Storage management method, electronic device and computer readable medium | |
JP7164733B2 (ja) | データ記憶 | |
CN113760560A (zh) | 一种进程间通信方法以及进程间通信装置 | |
CN109933430B (zh) | 分配图形处理器的方法和装置 | |
CN109783220B (zh) | 内存分配方法、装置、计算机系统及存储介质 | |
US20200104072A1 (en) | Data management method and storage controller using the same | |
CN117349032B (zh) | 一种提高大语言模型吞吐量的方法及装置 | |
US8274521B2 (en) | System available cache color map | |
CN110515872B (zh) | 直接内存存取方法、装置、专用计算芯片及异构计算系统 | |
CN114282661A (zh) | 神经网络模型的运行方法、可读介质和电子设备 | |
CN110489356B (zh) | 信息处理方法、装置、电子设备及存储介质 | |
CN113010453A (zh) | 一种内存管理的方法、系统、设备及可读存储介质 | |
KR20170000109A (ko) | 메모리 블록 리스트가 병렬로 배열된 메모리 풀에서 메모리를 할당 및 해제하는 방법 및 장치 | |
US9678752B2 (en) | Scheduling apparatus and method of dynamically setting the size of a rotating register | |
CN116302327A (zh) | 资源调度方法及相关设备 | |
CN110569122A (zh) | 多处理器系统、多核处理设备及其操作方法 | |
US11640321B2 (en) | Method and apparatus for memory allocation in a multi-core processor system, and recording medium therefor | |
WO2021253875A1 (zh) | 内存管理方法和相关产品 | |
CN115878517A (zh) | 存储器装置、存储器装置的操作方法和电子装置 | |
CN110096341B (zh) | 执行资源的动态分区 | |
CN110377426B (zh) | 一种数据传输方法、系统及相关组件 | |
KR20170037851A (ko) | 매니코어 시스템을 작동하기 위한 방법 및 장치 | |
CN113961302A (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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20201113 Address after: Room 611-194, R & D center building, China (Hefei) international intelligent voice Industrial Park, 3333 Xiyou Road, hi tech Zone, Hefei City, Anhui Province Applicant after: Anhui Cambrian Information Technology Co., Ltd Address before: 200120, No. two, No. 888, West Road, Nanhui new town, Shanghai, Pudong New Area Applicant before: Shanghai Cambricon Information Technology Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |