CN102968379B - 一种寄存器分配方法、系统及处理器 - Google Patents
一种寄存器分配方法、系统及处理器 Download PDFInfo
- Publication number
- CN102968379B CN102968379B CN201210410331.3A CN201210410331A CN102968379B CN 102968379 B CN102968379 B CN 102968379B CN 201210410331 A CN201210410331 A CN 201210410331A CN 102968379 B CN102968379 B CN 102968379B
- Authority
- CN
- China
- Prior art keywords
- memory
- current variable
- variable
- space
- free
- 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
- 238000000034 method Methods 0.000 title claims abstract description 50
- 230000015654 memory Effects 0.000 claims abstract description 502
- 230000008569 process Effects 0.000 abstract description 8
- 238000010586 diagram Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 4
- 230000008520 organization Effects 0.000 description 4
- 238000004321 preservation Methods 0.000 description 4
- 239000000203 mixture Substances 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明实施例提供一种寄存器分配方法、系统及处理器;其中方法基于一种处理器,所述处理器包括:向量寄存器,由至少一个存储器组成的存储器组,和内存,所述存储器组的读取速度快于内存的读取速度;所述方法包括:判断所述向量寄存器中是否存在能够存储当前变量的可用存储空间;若是,在所述可用存储空间中,为当前变量分配对应的存储空间,将所述当前变量保存入所分配的存储空间中;若否,判断所述存储器组中是否存在能够存储当前变量的可用存储空间;若是,依据所述存储器组中各存储器的读取速度,将当前变量保存入存在可用存储空间且读取速度最快的存储器中;若否,将当前变量保存入内存中。本发明减少了保存入内存的变量数量。
Description
技术领域
本发明涉及数据存储技术领域,更具体地说,涉及一种寄存器分配方法、系统及处理器。
背景技术
寄存器是处理器内部重要的数据存储资源,是汇编程序员能直接使用的硬件资源之一。由于寄存器的存取速度比内存快,所以,在用汇编语言编写程序时,要尽可能充分利用寄存器的存储功能。寄存器一般用来保存程序的中间结果(即变量),为随后的指令快速提供操作数,从而避免把中间结果直接存入内存,再读取内存的操作。然而由于寄存器的个数和容量都有限,不可能把所有中间结果都存储在寄存器中,所以,要对寄存器进行适当的调度,由此寄存器分配技术应运而生。
目前,寄存器分配大都是针对传统处理器,遵循寄存器(显式)→高速缓冲存储器cache(隐式)→内存(显式)的基本存储结构,变量优先分配至寄存器,此处的变量包括向量变量和标量变量,当寄存器的可用存储空间用完,寄存器存在变量溢出时,变量将溢出到寄存器外部,保存到内存中;这使得内存中所保存的变量的数量较多,极易产生大量的访存操作,增加了程序的运行时间,进而使得处理器的运行效率降低。
发明内容
有鉴于此,本发明实施例提供一种寄存器分配方法、系统及处理器,以解决现有的寄存器分配方式使得内存中所保存的变量的数量较多,极易产生大量的访存操作,增加了程序的运行时间,进而使得处理器的运行效率降低的问题。
为实现上述目的,本发明实施例提供如下技术方案:
一种寄存器分配方法,基于一种处理器,所述处理器包括:向量寄存器,由至少一个存储器组成的存储器组,和内存,所述存储器组的读取速度快于内存的读取速度;所述方法包括:
判断所述向量寄存器中是否存在能够存储当前变量的可用存储空间;
若是,在所述可用存储空间中,为当前变量分配对应的存储空间,将所述当前变量保存入所分配的存储空间中;
若否,判断所述存储器组中是否存在能够存储当前变量的可用存储空间;
若是,依据所述存储器组中各存储器的读取速度,将当前变量保存入存在可用存储空间且读取速度最快的存储器中;
若否,将当前变量保存入内存中。
其中,所述判断向量寄存器中是否存在能够存储当前变量的可用存储空间包括:
判断当前变量的类型;
若当前变量为向量变量、且所述向量寄存器中不存在可用存储空间,则所述向量寄存器中不存在能够存储当前变量的可用存储空间;
若当前变量为向量变量、且所述向量寄存器中存在可用存储空间,则所述向量寄存器中存在能够存储当前变量的可用存储空间;
若当前变量为标量变量、且所述向量寄存器中的低位存储空间及高位存储空间不存在可用存储空间,则所述向量寄存器中不存在能够存储当前变量的可用存储空间;
若当前变量为标量变量、且所述向量寄存器中的低位存储空间或高位存储空间存在可用存储空间,则所述向量寄存器中存在能够存储当前变量的可用存储空间。
其中,当前变量为标量变量、且所述向量寄存器中的高位存储空间存在可用存储空间时,所述为当前变量分配对应的存储空间,将所述当前变量保存入所分配的存储空间中包括:
在所述向量寄存器中的高位存储空间中,为当前变量分配对应的空闲的存储空间,将所述当前变量保存入所分配的所述向量寄存器中的空闲的高位存储空间中。
其中,所述存储器组包括:第一存储器和第二存储器,所述第一存储器的读取速度快于所述第二存储器的读取速度;当第一存储器及第二存储器均存在能够存储当前变量的可用存储空间时,所述依据所述存储器组中各存储器的读取速度,将当前变量保存入存在可用存储空间且读取速度最快的存储器中包括:
依据第一存储器和第二存储器的读取速度,将当前变量保存入存在可用存储空间且读取速度最快的第一存储器中;
当第一存储器不存在能够存储当前变量的可用存储空间,且第二存储器存在能够存储当前变量的可用存储空间时,所述依据所述存储器组中各存储器的读取速度,将当前变量保存入存在可用存储空间且读取速度最快的存储器中包括:
将当前变量保存入存在可用存储空间的第二存储器中。
其中,所述存储器组包括:局部存储器;所述判断所述存储器组中是否存在能够存储当前变量的可用存储空间包括:
判断所述局部存储器内是否存在能够重用的已分配存储空间;
若是,则所述局部存储器内存在能够存储当前变量的可用存储空间;
若否,判断所述局部存储器内是否存在未分配的存储空间;
若是,则所述局部存储器内存在能够存储当前变量的可用存储空间;
若否,则所述局部存储器内不存在能够存储当前变量的可用存储空间。
其中,所述判断所述局部存储器内是否存在能够重用的已分配存储空间包括:
判断所述局部存储器内已分配的存储空间中是否存在已释放变量的存储空间;其中,存储空间内所存储的变量在用尽时将释放;
若是,确定已释放变量的存储空间为所述局部存储器内能够重用的已分配存储空间;
若否,所述局部存储器内不存在能够重用的已分配存储空间。
其中,当所述局部存储器内存在能够重用的已分配存储空间时,所述当前变量优先保存至所述能够重用的已分配存储空间中。
本发明实施例还提供一种寄存器分配系统,基于一种处理器,所述处理器包括:向量寄存器,由至少一个存储器组成的存储器组,和内存,所述存储器组的读取速度快于内存的读取速度;所述系统包括:
第一判断模块,用于判断所述向量寄存器中是否存在能够存储当前变量的可用存储空间;
第一分配模块,用于在所述第一判断模块的判断结果为是时,在所述可用存储空间中,为当前变量分配对应的存储空间,将所述当前变量保存入所分配的存储空间中;
第二判断模块,用于在所述第一判断模块的判断结果为否时,判断所述存储器组中是否存在能够存储当前变量的可用存储空间;
第二分配模块,用于在所述第二判断模块的判断结果为是时,依据所述存储器组中各存储器的读取速度,将当前变量保存入存在可用存储空间,且读取速度最快的存储器中;
第三分配模块,用于在所述第二判断模块的判断结果为否时,将当前变量保存入内存中。
其中,所述第一判断模块包括:
类型判断单元,用于判断当前变量的类型;
第一确定单元,用于在当前变量为向量变量,且所述向量寄存器中不存在可用存储空间时,确定所述向量寄存器中不存在能够存储当前变量的可用存储空间;
第二确定单元,用于在当前变量为向量变量,且所述向量寄存器中存在可用存储空间时,确定所述向量寄存器中存在能够存储当前变量的可用存储空间;
第三确定单元,用于在当前变量为标量变量,且所述向量寄存器中的低位存储空间及高位存储空间不存在可用存储空间时,确定所述向量寄存器中不存在能够存储当前变量的可用存储空间;
第四确定单元,用于在所述当前变量为标量变量,且所述向量寄存器中的低位存储空间或高位存储空间存在可用存储空间时,确定所述向量寄存器中存在能够存储当前变量的可用存储空间;
所述第一分配模块包括:
高位空间分配单元,用于在前变量为标量变量,且所述向量寄存器中的高位存储空间存在可用存储空间时,在所述向量寄存器中的高位存储空间中,为当前变量分配对应的空闲的存储空间,将所述当前变量保存入所分配的所述向量寄存器中的空闲的高位存储空间中。
其中,所述存储器组包括:局部存储器,所述第二判断模块包括:
重用判断单元,用于判断所述局部存储器内是否存在能够重用的已分配存储空间;
第五确定单元,用于在所述重用判断单元的判断结果为是时,确定所述局部存储器内存在能够存储当前变量的可用存储空间;
未分配空间判断单元,用于在所述重用判断单元的判断结果为否时,判断所述局部存储器内是否存在未分配的存储空间;
第六确定单元,用于在所述未分配空间判断单元的判断结果为是时,确定所述局部存储器内存在能够存储当前变量的可用存储空间,在所述未分配空间判断单元的判断结果为否时,确定所述局部存储器内不存在能够存储当前变量的可用存储空间;
所述第二分配模块包括:
优先分配单元,用于在所述重用判断单元的判断结果为是时,将当前变量优先保存至所述能够重用的已分配存储空间中。
本发明实施例还提供一种处理器,包括:向量寄存器,由至少一个存储器组成的存储器组,和内存,所述存储器组的读取速度快于内存的读取速度;
所述向量寄存器,用于在自身存在能够存储当前变量的可用存储空间时,在自身可用的存储空间中保存当前变量;
所述存储器组,用于在所述向量寄存器不存在能够存储当前变量的可用存储空间时,在自身中存在可用存储空间,且读取速度最快的存储器中保存当前变量;
所述内存,用于在所述存储器组中不存在能够存储当前变量的可用存储空间时,保存当前变量。
基于上述技术方案,本发明实施例提供的寄存器分配方法,基于一种处理器,所述处理器包括:向量寄存器,由至少一个存储器组成的存储器组和内存,所述存储器组的读取速度快于内存的读取速度;在向量寄存器不存在能够存储当前变量的可用存储空间时,溢出的变量将先保存入存储器组中存在可用存储空间,且读取速度最快的存储器中,只有在存储器组不存在可用存储空间时,变量才会保存入内存中;本发明实施例通过在向量寄存器和内存之间加入保存变量的显式的存储器组,使得保存入内存的变量大幅减少,极大减少了访存操作的数量,极大减小了程序运行的时间,极大的提高了处理器的运行效率;并且存储器组内的变量的保存是依据存储器组内的存储器的读取速度进行的,这使得的变量能以较快的速度读取,提高处理器的运行效率。相对技术而言,本发明实施例提供的寄存器分配方法解决了由于溢出寄存器外的变量直接保存入内存,而造成的内存中保存的变量较多,使得访存操作的数量较多,程序的运行时间较长,处理器的运行效率降低的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的寄存器分配方法的流程图;
图2为本发明实施例提供的判断存储器组中是否存在能够存储当前变量的可用存储空间的方法流程图;
图3为本发明实施例提供的判断向量寄存器中是否存在能够存储当前变量的可用存储空间的方法流程图;
图4为本发明实施例提供的判断存储器组中是否存在能够存储当前变量的可用存储空间的另一方法流程图;
图5为本发明实施例提供的判断局部存储器内是否存在能够重用的已分配存储空间的方法流程图;
图6为本发明实施例提供的寄存器分配系统的结构框图;
图7为本发明实施例提供的第一判断模块的结构框图;
图8为本发明实施例提供的第一分配模块的结构框图;
图9为本发明实施例提供的第二判断模块的结构框图;
图10为本发明实施例提供的第二分配模块的结构框图;
图11为本发明实施例提供的处理器的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的寄存器分配方法的流程图,该方法基于一种处理器,该处理器包括:向量寄存器,由至少一个存储器组成的存储器组,和内存,所述存储器组的读取速度快于内存的读取速度;参照图1,该方法可以包括:
步骤S100、判断所述向量寄存器中是否存在能够存储当前变量的可用存储空间,若是,执行步骤S110,若否,执行步骤S120;
步骤S110、在所述可用存储空间中,为当前变量分配对应的存储空间,将所述当前变量保存入所分配的存储空间中;
步骤S120、判断所述存储器组中是否存在能够存储当前变量的可用存储空间,若是,执行步骤S130,若否,执行步骤S140;
由于存储器组是由至少一个存储器组成,因此只要存储器组中的至少一个存储器存在能够存储当前变量的可用存储空间,即表示存储器组中存在能够存储当前变量的可用存储空间;只有在存储器组中的存储器均不存在能够存储当前变量的可用存储空间时,存储器组才不存在能够存储当前变量的可用存储空间。
为便于理解步骤S120中判断所述存储器组中是否存在能够存储当前变量的可用存储空间的具体实现方式,下面以存储器组包括第一存储器和第二存储器,且第一存储器的读取速度快于第二存储器的情况为例,对步骤S120的具体实现方式进行说明,值得注意的是,以下说明不应成为对本发明实施例的限制。
当存储器组包括第一存储器和第二存储器,且第一存储器的读取速度快于第二存储器的读取速度时,判断存储器组中是否存在能够存储当前变量的可用存储空间的方法可如图2所示,参照图2,该方法可以包括:
步骤S121、判断第一存储器中是否存在能够存储当前变量的可用存储空间,若是,执行步骤S122,若否,执行步骤S123;
步骤S122、确定所述存储器组中存在能够存储当前变量的可用存储空间;
步骤S123、判断第二存储器中是否存在能够存储当前变量的可用存储空间,若是,执行步骤S124,若否,执行步骤S125;
步骤S124、确定所述存储器组中存在能够存储当前变量的可用存储空间;
步骤S125、确定所述存储器组中不存在能够存储当前变量的可用存储空间。
显然,存储器组中的存储器数量可依据具体的处理器架构进行设置,只要存储器组内的存储器的读取速度快于内存的读取速度即可,对于存储器组内设置有多个存储器的情况,判断存储器组中是否存在能够存储当前变量的可用存储空间的实现方式可依照存储器间的读取速度依次进行判断,具体可依照图2方式进行,也可随意的进行判断;当存储器组内的存储器读取速度均相同时,可随意的抽取存储器组内的存储器,判断所抽取的存储器中是否存在能够存储当前变量的可用存储空间;当存储器组只由一个存储器构成时,可只判断该唯一的存储器是否存在能够存储当前变量的可用存储空间,该唯一的存储器的存储状况即表示存储器组的存储状况。
步骤S130、依据所述存储器组中各存储器的读取速度,将当前变量保存入存在可用存储空间且读取速度最快的存储器中;
在判断存储器组中存在能够存储当前变量的可用存储空间后,由于存储器组中可能存在多个存储器都拥有可用存储空间的情况,因此依据存储器组中存储器的读取速度来进行变量的保存:当多个存储器都拥有可用存储空间时,变量优先保存入该多个存储器中读取速度最快的存储器中,值得注意的是,依据存储器的读取速度来进行变量保存的方式仅限于存在可用存储空间的存储器,即在存在可用存储空间的多个存储器中,选择读取速度最快的存储器保存当前变量。
为便于理解存储器组内的具体存储方式,下面以存储器组包括第一存储器和第二存储器,且第一存储器的读取速度快于第二存储器的读取速度的情况为例,对步骤S130的具体实现方式进行说明,值得注意的是,下述说明仅为便于理解本发明实施例中存储器组的具体存储方式,其不应成为本发明实施例的限制。
当第一存储器及第二存储器均存在能够存储当前变量的可用存储空间时,由于存在可用存储空间的存储器包括了第一存储器和第二存储器,因此依据第一存储器和第二存储器的读取速度,将当前变量保存入存在可用存储空间且读取速度最快的第一存储器中;
当第一存储器不存在能够存储当前变量的可用存储空间,且第二存储器存在能够存储当前变量的可用存储空间时,由于存在可用存储空间的存储器仅限于第二存储器,因此将当前变量保存入存在可用存储空间的第二存储器中。
显然,存储器组的存储数量可依据具体的处理器架构进行设置,对于具有其他数量存储器的存储器组,其存储器组的具体存储方式可参照上述方式进行。然而此处包括一些特殊情况,需要注意的是,如果存储器组内的存储器的读取速度均相同,则可认为依据所述存储器组中各存储器的读取速度进行变量保存的方式为多个同等读取速度的存储器情况下的变量保存,对于存在可用存储空间的各存储器,变量保存的优先顺序相同,各存储器的读取速度均为最快,可任取存储器组内存在可用存储空间的存储器进行变量保存;当存储器组只由一个存储器构成时,可认为读取速度最快的存储器即为该组成存储器组的单一存储器,直接将当前变量保存入该存储器中的可用存储空间中。
步骤S140、将当前变量保存入内存中。
相比现有技术所使用的寄存器(显式)→高速缓冲存储器cache(隐式)→内存(显式)的基本存储结构,本发明实施例所示的寄存器分配方法使用向量寄存器(显式)→存储器组(显式)→内存(显式)的存储结构,向量寄存器所溢出的变量不再直接保存入内存中,而是先保存入读取速度比内存快的显式存储装置(存储器组)中,这种寄存器分配方式通过在向量寄存器和内存之间加入保存变量的显式存储装置,使得保存入内存的变量大幅减少,极大减少了访存操作的数量,极大减小了程序运行的时间,极大的提高了处理器的运行效率。并且存储器组内的变量的保存是依据存储器组内的存储器的读取速度进行的,这使得的变量能以较快的速度从存储器组中读取,提高了处理器的运行效率。相对技术而言,本发明实施例提供的寄存器分配方法解决了由于溢出寄存器外的变量直接保存入内存,而造成的内存中保存的变量较多,使得访存操作的数量较多,程序的运行时间较长,处理器的运行效率降低的问题。
值得注意的是,图1所示步骤S100和步骤S110所描述的向量寄存器处理当前变量的方式可与现有技术相一致;需要说明的是,现有技术中向量寄存器在存储标量变量时,只使用向量寄存器内的低位存储空间,而向量寄存器内的高位存储空间只有在向量寄存器存储向量变量时,才会与向量寄存器内的低位存储空间联合使用。以128位的向量寄存器为例,现有技术在做标量变量存储时,128位的向量寄存器只会使用低64位的部分,而在做向量变量存储时,128位的向量寄存器中包括低64位的部分和高64位部分的整个存储空间才会被用到。这种方式,将使得向量寄存器在存在标量变量的溢出时,向量寄存器内空闲的高位存储空间并没有完全的被使用,因此本发明实施例提供如下的向量寄存器处理当前变量的方式,所提供的以下方式仅为一种可选方式。
图3为本发明实施例提供的判断向量寄存器中是否存在能够存储当前变量的可用存储空间的方法流程图,参照图3,该方法可以包括:
步骤S101、判断当前变量的类型;
步骤S102、若当前变量为向量变量、且所述向量寄存器中不存在可用存储空间,则判断所述向量寄存器中不存在能够存储当前变量的可用存储空间;
步骤S103、若当前变量为向量变量、且所述向量寄存器中存在可用存储空间,则判断所述向量寄存器中存在能够存储当前变量的可用存储空间;
步骤S104、若当前变量为标量变量、且所述向量寄存器中的低位存储空间及高位存储空间不存在可用存储空间,则判断所述向量寄存器中不存在能够存储当前变量的可用存储空间;
步骤S105、若当前变量为标量变量、且所述向量寄存器中的低位存储空间或高位存储空间存在可用存储空间,则判断所述向量寄存器中存在能够存储当前变量的可用存储空间。
值得注意的是,步骤S102至步骤S105为不同情况下的判断方式,其表示不同的判断状态,步骤S102至步骤S105之间不存在步骤的先后顺序。
可选的,在当前变量为标量变量,且所述向量寄存器中的高位存储空间存在可用存储空间时,图1所示步骤S 110中为当前变量分配对应的存储空间,将所述当前变量保存入所分配的存储空间中的实现方式可以为:在所述向量寄存器中的高位存储空间中,为当前变量分配对应的空闲的存储空间,将所述当前变量保存入所分配的所述向量寄存器中的空闲的高位存储空间中。具体的,可在向量寄存器的空闲的高位存储空间中,为当前标量变量分配对应的高位存储空间,将当前标量变量保存至对应的空闲的高位存储空间中,并为这些被分配用来存储标量变量的向量寄存器的高位存储空间添加标记,以指示添加标记的存储空间已被分配使用。
相比现有技术,本发明实施例提供的向量寄存器处理当前变量的方式,在当前变量为标量变量时,并不只是判断向量寄存器中的低位存储空间,还判断了向量寄存器中的高位存储空间,并且在向量寄存器中的高位存储空间存在可用存储空间时,确定向量寄存器中存在能够存储当前变量的存储空间,将标量变量保存入向量寄存器中的高位存储空间中。以128位的向量寄存器为例,本发明实施例提供的寄存器分配方法在128位的向量寄存器的高64位部分存在空闲的存储空间时,128位的向量寄存器的高64位部分的空闲的存储空间将用来存储当前标量变量。本发明实施例充分利用了向量寄存器内空闲的高位存储空间来保存现有技术本该溢出到向量寄存器外的标量变量,能够使得向量寄存器的存储空间得到有效利用,这将减少保存入内存中的标量变量,从而减少访存操作的数量,减小程序运行的时间,提高处理器的运行效率。
对于精简结构处理器,或者主/从核结构的处理器中的从核处理器而言,精简结构处理器,或者主/从核结构的处理器的从核处理器中的片上局部存储器可成为构成存储器组的存储部件。当所述存储器组包括:局部存储器时,图1所示步骤S120判断所述存储器组中是否存在能够存储当前变量的可用存储空间的具体实现方式可如图4所示,包括:
步骤S200、判断所述局部存储器内是否存在能够重用的已分配存储空间,若是,执行步骤S210,若否,执行步骤S220;
步骤S210、确定所述局部存储器内存在能够存储当前变量的可用存储空间;
步骤S220、判断所述局部存储器内是否存在未分配的存储空间,若是执行步骤S230,若否,执行步骤S240;
步骤S230、确定所述局部存储器内存在能够存储当前变量的可用存储空间;
步骤S240、确定所述局部存储器内不存在能够存储当前变量的可用存储空间。
其中,步骤S200的具体实现方式可如图5所示,包括:
步骤S201、判断所述局部存储器内已分配的存储空间中是否存在已释放变量的存储空间,若是,执行步骤S202,若否,执行步骤S203;
其中,存储空间内所存储的变量在用尽时将释放;
可选的,可为局部存储器内已分配的用来存储变量的存储空间添加标记,以指示添加标记的存储空间已被分配使用;由于函数中的变量都存在生命周期,在变量用完时,即可释放变量;那么对于释放变量后的已分配存储空间而言,这些释放变量后的已分配存储空间均是可以再次利用的,因此当需要通过局部存储器存储新的变量时,可判断所述局部存储器内已分配的存储空间中是否存在已释放变量的存储空间;可选的,可判断添加标记的存储空间内的变量是否已释放,即判断添加标记的存储空间是否空闲。
步骤S202、确定已释放变量的存储空间为所述局部存储器内能够重用的已分配存储空间;
步骤S203、确定所述局部存储器内不存在能够重用的已分配存储空间。
可选的,当所述局部存储器内存在能够重用的已分配存储空间时,当前变量将优先保存至所述能够重用的已分配存储空间中;即当局部存储器中既存在能够重用的已分配存储空间,又存在未分配的空闲存储空间时,当前变量将优先保存至能够重用的已分配存储空间中,只有在局部存储器不存在能够重用的已分配存储空间时,才将当前变量保存入新分配的空闲存储空间中。其中,新新分配的存储空间指首次分配,未存储过变量的存储空间,新分配的空闲存储空间与当前变量的存储需求相对应。
显然,上述已分配存储空间的重用方式可应用于存储器组中的任一个存储器内;对于包括了局部存储器及其他存储器的存储器组,寄存器的分配方式可结合图1和上述描述的局部存储器对当前变量的处理方式进行,此处不再赘述。
显然,对于存储器组而言,本发明实施例也可不采用上述已分配存储空间的重用方式,上述的已分配存储空间的重用方式仅为可选方式。
显然,对于精简结构处理器,或者主/从核结构的处理器中的从核处理器而言,存储器组可只由局部存储器组成;即构成向量寄存器(显式)→局部存储器(显式)→内存(显式)的变量存储结构,这种存储结构下的寄存器分配方式与上文描述的存储器组中只有一个存储器的寄存器分配方式一致。
下面对本发明实施例提供的寄存器分配系统进行说明,下文所描述的寄存器分配系统与上文所描述的寄存器分配方法相对应,两者可相互参照。
图6为本发明实施例提供的寄存器分配系统的结构框图,该系统基于一种处理器,该处理器包括:向量寄存器,由至少一个存储器组成的存储器组,和内存,所述存储器组的读取速度快于内存的读取速度;该系统包括:
第一判断模块100,用于判断所述向量寄存器中是否存在能够存储当前变量的可用存储空间;
第一分配模块200,用于在第一判断模块100的判断结果为是时,在所述可用存储空间中,为当前变量分配对应的存储空间,将所述当前变量保存入所分配的存储空间中;
第二判断模块300,用于在第一判断模块100的判断结果为否时,判断所述存储器组中是否存在能够存储当前变量的可用存储空间;
第二分配模块400,用于在第二判断模块300的判断结果为是时,依据所述存储器组中各存储器的读取速度,将当前变量保存入存在可用存储空间,且读取速度最快的存储器中;
第三分配模块500,用于在第二判断模块300的判断结果为否时,将当前变量保存入内存中。
本发明实施例通过在向量寄存器和内存之间加入保存变量的显式的存储器组,使得保存入内存的变量大幅减少,极大减少了访存操作的数量,极大减小了程序运行的时间,极大的提高了处理器的运行效率;并且存储器组内的变量的保存是依据存储器组内的存储器的读取速度进行的,这使得的变量能以较快的速度读取,提高了处理器的运行效率。
图7示出了第一判断模块100的结构,包括:
类型判断单元110,用于判断当前变量的类型;
第一确定单元120,用于在当前变量为向量变量,且所述向量寄存器中不存在可用存储空间时,确定所述向量寄存器中不存在能够存储当前变量的可用存储空间;
第二确定单元130,用于在当前变量为向量变量,且所述向量寄存器中存在可用存储空间时,确定所述向量寄存器中存在能够存储当前变量的可用存储空间;
第三确定单元140,用于在当前变量为标量变量,且所述向量寄存器中的低位存储空间及高位存储空间不存在可用存储空间时,确定所述向量寄存器中不存在能够存储当前变量的可用存储空间;
第四确定单元150,用于在所述当前变量为标量变量,且所述向量寄存器中的低位存储空间或高位存储空间存在可用存储空间时,确定所述向量寄存器中存在能够存储当前变量的可用存储空间。
在图7所示第一判断模块的基础上,图8示出了第一分配模块200的结构,第一分配模块200可以包括:
高位空间分配单元210,用于在前变量为标量变量,且所述向量寄存器中的高位存储空间存在可用存储空间时,在所述向量寄存器中的高位存储空间中,为当前变量分配对应的空闲的存储空间,将所述当前变量保存入所分配的所述向量寄存器中的空闲的高位存储空间中。
当所述存储器组包括局部存储器时,如存储器组只由局部存储器构成时,图9示出了第二判断模块300的结构,包括:
重用判断单元310,用于判断所述局部存储器内是否存在能够重用的已分配存储空间;
具体的,重用判断单元310判断所述局部存储器内是否存在能够重用的已分配存储空间的过程可以包括:判断局部存储器内已分配的存储空间中是否存在已释放变量的存储空间;其中,存储空间内所存储的变量在用尽时将释放;若判断结果为是,则确定已释放变量的存储空间为所述局部存储器内能够重用的已分配存储空间;若判断结果为否,则局部存储器内不存在能够重用的已分配存储空间。
第五确定单元320,用于在重用判断单元310的判断结果为是时,确定所述局部存储器内存在能够存储当前变量的可用存储空间;
未分配空间判断单元330,用于在重用判断单元310的判断结果为否时,判断所述局部存储器内是否存在未分配的存储空间;
第六确定单元340,用于在未分配空间判断单元330的判断结果为是时,确定所述局部存储器内存在能够存储当前变量的可用存储空间,在未分配空间判断单元330的判断结果为否时,确定所述局部存储器内不存在能够存储当前变量的可用存储空间。
在图9所示第二判断模块300的基础上,图10示出了第二分配模块400的结构,包括:
优先分配单元410,用于在重用判断单元310的判断结果为是时,将当前变量优先保存至所述能够重用的已分配存储空间中。
下面对本发明实施例提供的处理器进行描述,所描述的处理器结构与上文所描述的寄存器分配方法对应。
图11为本发明实施例提供的处理器的结构框图,参照图11,处理器可以包括:向量寄存器1,由至少一个存储器组成的存储器组2,和内存3,存储器组2的读取速度快于内存3的读取速度;
向量寄存器1,用于在自身存在能够存储当前变量的可用存储空间时,在自身可用的存储空间中保存当前变量;
存储器组2,用于在向量寄存器1不存在能够存储当前变量的可用存储空间时,在自身中存在可用存储空间,且读取速度最快的存储器中保存当前变量;
内存3,用于在存储器组2中不存在能够存储当前变量的可用存储空间时,保存当前变量。
其中,存储器组2可包括局部存储器,存储器组2也可只由局部存储器构成。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种寄存器分配方法,其特征在于,基于一种处理器,所述处理器包括:向量寄存器,由至少一个存储器组成的存储器组,和内存,所述存储器组的读取速度快于内存的读取速度;所述方法包括:
判断所述向量寄存器中是否存在能够存储当前变量的可用存储空间;
若是,在所述可用存储空间中,为当前变量分配对应的存储空间,将所述当前变量保存入所分配的存储空间中;
若否,判断所述存储器组中是否存在能够存储当前变量的可用存储空间;
若是,依据所述存储器组中各存储器的读取速度,将当前变量保存入存在可用存储空间且读取速度最快的存储器中;
若否,将当前变量保存入内存中;
其中,所述判断向量寄存器中是否存在能够存储当前变量的可用存储空间包括:
判断当前变量的类型;
若当前变量为向量变量、且所述向量寄存器中不存在可用存储空间,则所述向量寄存器中不存在能够存储当前变量的可用存储空间;
若当前变量为向量变量、且所述向量寄存器中存在可用存储空间,则所述向量寄存器中存在能够存储当前变量的可用存储空间;
若当前变量为标量变量、且所述向量寄存器中的低位存储空间及高位存储空间不存在可用存储空间,则所述向量寄存器中不存在能够存储当前变量的可用存储空间;
若当前变量为标量变量、且所述向量寄存器中的低位存储空间或高位存储空间存在可用存储空间,则所述向量寄存器中存在能够存储当前变量的可用存储空间。
2.根据权利要求1所述的方法,其特征在于,当前变量为标量变量、且所述向量寄存器中的高位存储空间存在可用存储空间时,所述为当前变量分配对应的存储空间,将所述当前变量保存入所分配的存储空间中包括:
在所述向量寄存器中的高位存储空间中,为当前变量分配对应的空闲的存储空间,将所述当前变量保存入所分配的所述向量寄存器中的空闲的高位存储空间中。
3.根据权利要求1或2任一项所述的方法,其特征在于,所述存储器组包括:第一存储器和第二存储器,所述第一存储器的读取速度快于所述第二存储器的读取速度;当第一存储器及第二存储器均存在能够存储当前变量的可用存储空间时,所述依据所述存储器组中各存储器的读取速度,将当前变量保存入存在可用存储空间且读取速度最快的存储器中包括:
依据第一存储器和第二存储器的读取速度,将当前变量保存入存在可用存储空间且读取速度最快的第一存储器中;
当第一存储器不存在能够存储当前变量的可用存储空间,且第二存储器存在能够存储当前变量的可用存储空间时,所述依据所述存储器组中各存储器的读取速度,将当前变量保存入存在可用存储空间且读取速度最快的存储器中包括:
将当前变量保存入存在可用存储空间的第二存储器中。
4.根据权利要求1或2任一项所述的方法,其特征在于,所述存储器组包括:局部存储器;所述判断所述存储器组中是否存在能够存储当前变量的可用存储空间包括:
判断所述局部存储器内是否存在能够重用的已分配存储空间;
若是,则所述局部存储器内存在能够存储当前变量的可用存储空间;
若否,判断所述局部存储器内是否存在未分配的存储空间;
若是,则所述局部存储器内存在能够存储当前变量的可用存储空间;
若否,则所述局部存储器内不存在能够存储当前变量的可用存储空间。
5.根据权利要求4所述的方法,其特征在于,所述判断所述局部存储器内是否存在能够重用的已分配存储空间包括:
判断所述局部存储器内已分配的存储空间中是否存在已释放变量的存储空间;其中,存储空间内所存储的变量在用尽时将释放;
若是,确定已释放变量的存储空间为所述局部存储器内能够重用的已分配存储空间;
若否,所述局部存储器内不存在能够重用的已分配存储空间。
6.根据权利要求4所述的方法,其特征在于,当所述局部存储器内存在能够重用的已分配存储空间时,所述当前变量优先保存至所述能够重用的已 分配存储空间中。
7.一种寄存器分配系统,其特征在于,基于一种处理器,所述处理器包括:向量寄存器,由至少一个存储器组成的存储器组,和内存,所述存储器组的读取速度快于内存的读取速度;所述系统包括:
第一判断模块,用于判断所述向量寄存器中是否存在能够存储当前变量的可用存储空间;
第一分配模块,用于在所述第一判断模块的判断结果为是时,在所述可用存储空间中,为当前变量分配对应的存储空间,将所述当前变量保存入所分配的存储空间中;
第二判断模块,用于在所述第一判断模块的判断结果为否时,判断所述存储器组中是否存在能够存储当前变量的可用存储空间;
第二分配模块,用于在所述第二判断模块的判断结果为是时,依据所述存储器组中各存储器的读取速度,将当前变量保存入存在可用存储空间,且读取速度最快的存储器中;
第三分配模块,用于在所述第二判断模块的判断结果为否时,将当前变量保存入内存中;
其中,所述第一判断模块包括:
类型判断单元,用于判断当前变量的类型;
第一确定单元,用于在当前变量为向量变量,且所述向量寄存器中不存在可用存储空间时,确定所述向量寄存器中不存在能够存储当前变量的可用存储空间;
第二确定单元,用于在当前变量为向量变量,且所述向量寄存器中存在可用存储空间时,确定所述向量寄存器中存在能够存储当前变量的可用存储空间;
第三确定单元,用于在当前变量为标量变量,且所述向量寄存器中的低位存储空间及高位存储空间不存在可用存储空间时,确定所述向量寄存器中不存在能够存储当前变量的可用存储空间;
第四确定单元,用于在所述当前变量为标量变量,且所述向量寄存器中的低位存储空间或高位存储空间存在可用存储空间时,确定所述向量寄存器 中存在能够存储当前变量的可用存储空间。
8.根据权利要求7所述的系统,其特征在于,所述第一分配模块包括:
高位空间分配单元,用于在当前变量为标量变量,且所述向量寄存器中的高位存储空间存在可用存储空间时,在所述向量寄存器中的高位存储空间中,为当前变量分配对应的空闲的存储空间,将所述当前变量保存入所分配的所述向量寄存器中的空闲的高位存储空间中。
9.根据权利要求7或8所述的系统,其特征在于,所述存储器组包括:局部存储器,所述第二判断模块包括:
重用判断单元,用于判断所述局部存储器内是否存在能够重用的已分配存储空间;
第五确定单元,用于在所述重用判断单元的判断结果为是时,确定所述局部存储器内存在能够存储当前变量的可用存储空间;
未分配空间判断单元,用于在所述重用判断单元的判断结果为否时,判断所述局部存储器内是否存在未分配的存储空间;
第六确定单元,用于在所述未分配空间判断单元的判断结果为是时,确定所述局部存储器内存在能够存储当前变量的可用存储空间,在所述未分配空间判断单元的判断结果为否时,确定所述局部存储器内不存在能够存储当前变量的可用存储空间;
所述第二分配模块包括:
优先分配单元,用于在所述重用判断单元的判断结果为是时,将当前变量优先保存至所述能够重用的已分配存储空间中。
10.一种处理器,其特征在于,包括:向量寄存器,由至少一个存储器组成的存储器组,和内存,所述存储器组的读取速度快于内存的读取速度;
所述向量寄存器,用于在自身存在能够存储当前变量的可用存储空间时,在自身可用的存储空间中保存当前变量,其中,判断自身是否存在能够存储当前变量的可用存储空间具体包括:
判断当前变量的类型;
若当前变量为向量变量、且所述向量寄存器中不存在可用存储空间,则所述向量寄存器中不存在能够存储当前变量的可用存储空间;
若当前变量为向量变量、且所述向量寄存器中存在可用存储空间,则所述向量寄存器中存在能够存储当前变量的可用存储空间;
若当前变量为标量变量、且所述向量寄存器中的低位存储空间及高位存储空间不存在可用存储空间,则所述向量寄存器中不存在能够存储当前变量的可用存储空间;
若当前变量为标量变量、且所述向量寄存器中的低位存储空间或高位存储空间存在可用存储空间,则所述向量寄存器中存在能够存储当前变量的可用存储空间;
所述存储器组,用于在所述向量寄存器不存在能够存储当前变量的可用存储空间时,在自身中存在可用存储空间,且读取速度最快的存储器中保存当前变量;
所述内存,用于在所述存储器组中不存在能够存储当前变量的可用存储空间时,保存当前变量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210410331.3A CN102968379B (zh) | 2012-10-24 | 2012-10-24 | 一种寄存器分配方法、系统及处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210410331.3A CN102968379B (zh) | 2012-10-24 | 2012-10-24 | 一种寄存器分配方法、系统及处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102968379A CN102968379A (zh) | 2013-03-13 |
CN102968379B true CN102968379B (zh) | 2015-05-06 |
Family
ID=47798531
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210410331.3A Active CN102968379B (zh) | 2012-10-24 | 2012-10-24 | 一种寄存器分配方法、系统及处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102968379B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116400982B (zh) * | 2023-05-26 | 2023-08-08 | 摩尔线程智能科技(北京)有限责任公司 | 配置中继寄存器模块的方法和装置、计算设备和可读介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4710867A (en) * | 1984-07-11 | 1987-12-01 | Nec Corporation | Vector processing system |
CN1175037A (zh) * | 1996-08-19 | 1998-03-04 | 三星电子株式会社 | 多媒体信号处理器内的多处理器操作装置 |
CN1529244A (zh) * | 2003-10-14 | 2004-09-15 | 中国科学院计算技术研究所 | 含有显式高速缓冲存储器的计算机微体系结构 |
-
2012
- 2012-10-24 CN CN201210410331.3A patent/CN102968379B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4710867A (en) * | 1984-07-11 | 1987-12-01 | Nec Corporation | Vector processing system |
CN1175037A (zh) * | 1996-08-19 | 1998-03-04 | 三星电子株式会社 | 多媒体信号处理器内的多处理器操作装置 |
CN1529244A (zh) * | 2003-10-14 | 2004-09-15 | 中国科学院计算技术研究所 | 含有显式高速缓冲存储器的计算机微体系结构 |
Also Published As
Publication number | Publication date |
---|---|
CN102968379A (zh) | 2013-03-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5425541B2 (ja) | マルチプロセッサ・システム上でデータ・セットを区分化およびソートするための方法および装置 | |
CN102129390B (zh) | 片上多核计算平台的任务调度系统及进行任务并行化方法 | |
CN106681829A (zh) | 一种内存管理方法及系统 | |
CN103970680A (zh) | 内存管理方法、装置及嵌入式系统 | |
JP2012522320A5 (zh) | ||
CN106547612A (zh) | 一种多任务处理方法及装置 | |
CN101460927A (zh) | 处理器核心堆栈扩展 | |
CN105117285B (zh) | 一种基于移动虚拟化系统的非易失性存储器调度优化方法 | |
CN110472836A (zh) | 网约车订单处理方法、设备及终端设备 | |
CN106528065B (zh) | 一种线程获取方法及设备 | |
CN105718319B (zh) | 一种内存池版图解析方法和内存池装置 | |
CN102135943B (zh) | 闪存数据的存储、访问方法及装置 | |
US8966212B2 (en) | Memory management method, computer system and computer readable medium | |
CN107894922A (zh) | Ram资源分配方法 | |
CN102968379B (zh) | 一种寄存器分配方法、系统及处理器 | |
CN101246434A (zh) | 一种利用剩余资源分配寄存器的方法 | |
CN108139929B (zh) | 用于调度多个任务的任务调度装置和方法 | |
CN102360280B (zh) | 一种针对混合长度指令集的寄存器分配方法 | |
CN105659216B (zh) | 多核处理器系统的缓存目录处理方法和目录控制器 | |
CN104050189B (zh) | 页面共享处理方法及装置 | |
KR20110106115A (ko) | 메모리 관리 장치 및 방법 | |
CN102467452B (zh) | 一种静态存储分配的局部非静态数据的存储空间分配方法 | |
CN103593606A (zh) | 上下文信息管理方法及系统 | |
CN106557430A (zh) | 一种缓存数据刷盘方法及装置 | |
CN105843735B (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 |