CN102968379B - 一种寄存器分配方法、系统及处理器 - Google Patents

一种寄存器分配方法、系统及处理器 Download PDF

Info

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
Application number
CN201210410331.3A
Other languages
English (en)
Other versions
CN102968379A (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.)
Wuxi Jiangnan Computing Technology Institute
Original Assignee
Wuxi Jiangnan Computing Technology Institute
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 Wuxi Jiangnan Computing Technology Institute filed Critical Wuxi Jiangnan Computing Technology Institute
Priority to CN201210410331.3A priority Critical patent/CN102968379B/zh
Publication of CN102968379A publication Critical patent/CN102968379A/zh
Application granted granted Critical
Publication of CN102968379B publication Critical patent/CN102968379B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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.一种处理器,其特征在于,包括:向量寄存器,由至少一个存储器组成的存储器组,和内存,所述存储器组的读取速度快于内存的读取速度;
所述向量寄存器,用于在自身存在能够存储当前变量的可用存储空间时,在自身可用的存储空间中保存当前变量,其中,判断自身是否存在能够存储当前变量的可用存储空间具体包括:
判断当前变量的类型;
若当前变量为向量变量、且所述向量寄存器中不存在可用存储空间,则所述向量寄存器中不存在能够存储当前变量的可用存储空间;
若当前变量为向量变量、且所述向量寄存器中存在可用存储空间,则所述向量寄存器中存在能够存储当前变量的可用存储空间;
若当前变量为标量变量、且所述向量寄存器中的低位存储空间及高位存储空间不存在可用存储空间,则所述向量寄存器中不存在能够存储当前变量的可用存储空间;
若当前变量为标量变量、且所述向量寄存器中的低位存储空间或高位存储空间存在可用存储空间,则所述向量寄存器中存在能够存储当前变量的可用存储空间;
所述存储器组,用于在所述向量寄存器不存在能够存储当前变量的可用存储空间时,在自身中存在可用存储空间,且读取速度最快的存储器中保存当前变量;
所述内存,用于在所述存储器组中不存在能够存储当前变量的可用存储空间时,保存当前变量。
CN201210410331.3A 2012-10-24 2012-10-24 一种寄存器分配方法、系统及处理器 Active CN102968379B (zh)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116400982B (zh) * 2023-05-26 2023-08-08 摩尔线程智能科技(北京)有限责任公司 配置中继寄存器模块的方法和装置、计算设备和可读介质

Citations (3)

* Cited by examiner, † Cited by third party
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 中国科学院计算技术研究所 含有显式高速缓冲存储器的计算机微体系结构

Patent Citations (3)

* Cited by examiner, † Cited by third party
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
CN106681829A (zh) 一种内存管理方法及系统
CN106502791A (zh) 一种任务分配方法及装置
JP2010033561A (ja) マルチプロセッサ・システム上でデータ・セットを区分化およびソートするための方法および装置
CN106547612A (zh) 一种多任务处理方法及装置
CN105117285B (zh) 一种基于移动虚拟化系统的非易失性存储器调度优化方法
CN104182350A (zh) 一种针对包括多个进程的应用的内存管理方法和装置
CN104539708A (zh) 一种云平台资源的缩容方法、装置与系统
CN108885550A (zh) 复数乘法指令
CN106528065B (zh) 一种线程获取方法及设备
CN102708009A (zh) 一种基于cuda实现多任务共享gpu的方法
CN106844050A (zh) 一种内存分配方法及装置
CN110472836A (zh) 网约车订单处理方法、设备及终端设备
CN104834505A (zh) 一种多核多线程环境下numa感知的同步方法
CN104850505A (zh) 基于链式堆叠的内存管理方法与系统
CN102855137B (zh) 用于自动化部件的编程的方法和程序设计系统
CN102968379B (zh) 一种寄存器分配方法、系统及处理器
CN112015765A (zh) 基于缓存价值的Spark缓存淘汰方法及系统
CN108139929B (zh) 用于调度多个任务的任务调度装置和方法
CN106844101A (zh) 基于Cache感知的NVP性能优化备份方法及系统
CN104182280B (zh) 面向混合主存嵌入式系统的低能耗rm实时任务调度方法
CN104050189B (zh) 页面共享处理方法及装置
KR20110106115A (ko) 메모리 관리 장치 및 방법
CN105843735A (zh) 一种终端内存的消耗方法及装置
CN108563507A (zh) 一种内存管理方法、装置、设备及可读存储介质
CN104182180B (zh) 面向混合主存嵌入式系统的低能耗edf实时任务调度方法

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