专利名称:缓存预测执行的处理器与装置及方法
技术领域:
本发明涉及实现一种计算机处理器技术领域,尤其是一种当发生缓存(Cache)块无效时的缓存预测执行的处理器与装置及方法。
背景技术:
随着处理器内部主频的提高以及结构的优化,处理器的运算性能越来越高,但是,主存的访问速度却没有同步的增长速度, 于是出现了访存墙(Memory Wall)的问题。为了解决该问题,现代处理器一般都是通过增加多级缓存(Cache)来缓和问题。在多核处理器中,各个处理器核一般都有其私有缓存(Cache),这会导致不同处理器核中私有缓存(cache)数据备份不一致的问题。为了解决该问题,现代处理器都支持各种缓存(Cache) —致性协议,这些协议的基本思想和实现都是,当一个处理器核对一地址发生写时,会发送无效请求(invalidate)给所有含有相同缓存(Cache)的处理器核,将对应其他处理器核上的对应缓存块(又称缓存行,Cache Line)的状态位置为无效(invalid)。之后,当发生访问该无效的缓存块的访存请求时,需要从上一级缓存或主存取回最新的值,对应指令才能继续执行。但是,这种方法存在一个伪共享的问题,为了节省缓存(Cache)空间,提高缓存(Cache)利用率,现代处理器核的缓存块(Cache Line) 一般都是256位,或者512位,而实际的访存操作,往往才访问8位,16位或者32位的数据。而由于无效是按缓存块为单位进行无效的,导致即使修改了整个缓存块的I位数据,整个缓存块都会无效,以后其他处理器即使访问该缓存块的其他部分数据,也必须从上一级缓存或者主存取回来,指令才能继续执行,大大浪费时间和效率,降低处理器的性能。
发明内容
本发明的目的在于提供一种缓存(Cache)预测执行的处理器与装置及方法,其有效地降低了处理器的平均访存延时,提高了处理器的性能。为实现本发明目的而提供的一种缓存预测执行的处理器,包括多级缓存,以及主存储器,还包括缓存预测执行装置;所述缓存预测执行装置,包括缓存命中比较单元,预测执行单元,预测执行回滚提交单元;以及预测数据块寄存器,处理器预测执行位,指令预测执行位;其中所述缓存命中比较单元,用于将发起访存的指令的访存地址的低位对应的缓存块的标签(Tag)和TLB出来的高位地址比较,根据比较结果置位处理器预测执行位,决定处理器是否进入预测执行模式,并在进入预测执行模式后启动预测执行单元,置位所述发起访存的指令的指令预测执行位有效;所述预测执行单元,用于当发生缓存预测时,进行预测执行,根据后续指令与所述发起访存的指令的依赖关系,决定是否将对应的后续指令的指令预测执行位置有效(I),并发射访存指令及其后续指令,并在预测执行的同时,控制所述访存部件向上一级缓存或者内部存储器取回所述发起访存的指令的访存结果;所述预测执行回滚提交单元,用于在所述访存部件取回访存结果返回后,通过和预测的数据块进行比较,决定是否回滚或者提交,并将处理器预测执行位和指令预测执行位置无效;所述预测数据块寄存器,用于存储引起预测执行的访存所访问的数据的位置;所述处理器预测执行位,用于表示整个处理器是否处于预测执行状态,用于控制预测执行单元是否工作;所述指令预测执行位,对应于所述处理器执行的指令,用于表示该指令是否属于预测执行指令。为实现本发明目的还提供一种缓存预测执行装置,包括缓存命中比较单元,预测 执行单元,预测执行回滚提交单元;以及预测数据块寄存器,处理器预测执行位,指令预测执行位;其中所述缓存命中比较单元,用于将发起访存的指令的访存地址的低位对应的缓存块的标签(TAG)和TLB出来的高位地址比较,根据比较结果置位处理器预测执行位,决定处理器是否进入预测执行模式,并在进入预测执行模式后启动预测执行单元,置位所述发起访存的指令的指令预测执行位有效;所述预测执行单元,用于当发生缓存预测时,进行预测执行,根据后续指令与所述发起访存的指令的依赖关系,决定是否将对应的后续指令的指令预测执行位置有效,并发射访存指令及其后续指令,并在预测执行的同时,控制所述访存部件向上一级缓存或者内部存储器取回所述发起访存的指令的访存结果;所述预测执行回滚提交单元,用于在所述访存部件取回访存结果返回后,通过和预测的数据块进行比较,决定是否回滚或者提交,并将处理器预测执行位和指令预测执行位置无效;所述预测数据块寄存器,用于存储引起预测执行的访存所访问的数据的位置;所述处理器预测执行位,用于表示整个处理器是否处于预测执行状态,用于控制预测执行单元是否工作;所述指令预测执行位,对应于所述处理器执行的指令,用于表示该指令是否属于预测执行指令。较优地,所述缓存命中比较单元包括比较子单元,有效处理子单元,无效处理子单元,其中所述比较子单元,用于根据发起访存的指令访存地址的低位找到对应的缓存块,并将缓存块的标签(Tag)和TLB出来的高位地址比较判断是否命中;所述有效处理子单元,用于根据比较子单元比较结果进行处理,如果标签不命中,则往上一级缓存或主存储器取数;如果标签命中且缓存块状态为有效,则将数取到对应寄存器,正常执行,并将处理器预测执行位置位标记为O ;所述无效处理子单元,用于根据比较子单元判断结果进行处理,如果标签命中且缓存块的状态位为无效,则将处理器预测执行位置位标记为1,并记录该访存地址的偏移量以及数据位宽,同时向上一级缓存或主存储器发送访存请求,而且将发起访存的指令的指令预测执行位置位为1,并记录该指令访问的具体数据块地址和位宽,存在预测数据块寄存器中。较优地,所述预测执行单元,包括启动子单元,检测子单元和执行子单元,其中所述启动子单元,用于在缓存命中比较单元将处理器预测执行位置位为1,发生缓存预测执行时,启动进入预测执行模式;所述检测子单元,用于在进入预测执行模式后,每次发射指令时,检测处理器预测执行位是否为I ; 所述执行子单元,用于根据检测子单元的检测结果判断进行处理,若否,所述指令正常发射;若有,则根据是否存在数据依赖判断该指令所依赖的指令的指令预测执行位是否有效;若无,正常发射该指令;若有,置该指令的指令预测执行位为1,之后再发射该指令。较优地,所述预测执行回滚提交单元,包括取数子单元,判断子单元,处理子单元,其中所述取数子单元,用于根据发起访存请求地址的索引,取出对应索引的缓存块,并根据预测数据块寄存器,在对应索引的缓存块中得到对应偏移量以及位宽的数据,记为预测数据;同时,对取回的数据,也根据预测数据块寄存器,在取回的缓存块中得到对应偏移量以及位宽的数据,记为实际数据;所述判断子单元,用于判断实际数据和预测数据,如果实际数据和预测数据一样,记为一致,预测命中,否则,则不一致,预测不命中;所述处理子单元,用于根据判断子单元的判断结果进行处理,如果一致,则预测提交,将所有的指令预测标记位清O ;也将处理器预测执行位清O ;如果不一致,则将预测回滚,将所有指令预测执行位为I的指令返回发射队列,按现有技术中的方法,重新发射执行,不再预测执行,并将所有的指令预测标记位清O ;也将处理器预测执行位清O。为实现本发明目的,更提供一种缓存预测执行方法,包括如下步骤步骤S100,发起访存的指令的访存地址的低位对应的缓存块的标签和TLB出来的高位地址比较,根据比较结果置位处理器预测执行位,决定是否进入预测执行模式,并在进入预测执行模式后置位所述发起访存的指令的指令预测执行位有效;步骤S200,当发生缓存预测时,进行预测执行,根据后续指令与所述发起访存的指令的依赖关系,决定是否将对应的后续指令的指令预测执行位置有效,并发射访存指令及其后续指令,并在预测执行的同时,控制所述访存部件向上一级缓存或者内部存储器取回所述发起访存的指令的访存结果;步骤S300,在所述访存部件取回访存结果返回后,通过和预测的数据块进行比较,决定是否回滚或者提交,并将处理器预测执行位和指令预测执行位置无效。本发明的缓存预测执行的处理器与装置及方法,相比于传统发生缓存(Cache)无效时直接从上一级缓存(Cache)或者主存储器取数回来再执行的方法相比,对于预测成功的数据,可以将取数过程和指令执行过程并行进行,从而大大提高性能,预测失败带来的额外消耗也很小,只需要重新发射即可。
图I是本发明实施例缓存(Cache)预测执行的处理器的缓存预测执行装置结构示意图;图2是本发明实施例图I中的缓存(Cache)命中比较单元的结构示意图;图3是本发明实施例的图I中的指令预测执行单元的结构示意图;图4是本发明实施例的图I中的指令预测执行回滚提交单元的结构示意图;图5是本发明实施例中缓存预测执行方法流程图;图6是本发明实施例图5中步骤SlOO 命中比较过程流程图;图7是本发明实施例图5中步骤S200预测执行过程流程图;图8是本发明实施例图5中步骤S300执行回滚提交过程流程图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明的一种缓存预测执行的处理器与装置及方法进行解释。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。本发明针对现有技术中存在的问题,提出了一种缓存预测执行的方法和装置及处理器,当发生缓存块无效时,进入预测执行(即该指令不需要使用该缓存块内真正无效的数据),同时访问上一级缓存或主存,将最新的数据取回;在取回后,通过比较数据,判断预测是否正确,确定将预测提交还是回滚。作为一种可实施方式,本发明实施例的一种缓存预测执行的处理器,包括多级缓存(一级缓存LI和二级缓存L2等)(未示出),访存部件(未示出)以及主存储器(内存)(未示出);还包括缓存预测执行装置;如图I所示,所述缓存预测执行装置,包括①缓存命中比较单元②预测执行单元③预测执行回滚提交单元;还包括多个控制寄存器或者控制位,包括①预测数据块寄存器,用于存储引起预测执行的访存所访问的数据的位置,包括数据在缓存块中的偏移量(offset)以及数据位宽;②处理器预测执行位,用于表示整个处理器是否处于预测执行状态,用于控制预测执行单元是否工作;③指令预测执行位,对应于所述处理器执行的指令(每条指令有一个指令预测执行位),用于表示该指令是否属于预测执行指令。本发明实施例的处理器中,所述缓存命中比较单元,用于将发起访存的访存指令的访存地址的低位对应的缓存块的标签(Tag)和TLB出来的高位地址比较,根据比较结果置位处理器预测执行位,决定处理器是否进入预测执行模式(置I),并在进入预测执行模式后启动预测执行单元,置位所述发起访存的指令(被预测指令)的指令预测执行位有效(置 I)。作为一种可实施方式,所述缓存命中比较单元,根据发起访存的访存指令的指令访存地址的低位对应的缓存块,并判断所述缓存块是否为标签(Tag)命中且状态位为有效(Valid),将处理器预测执行位置位,表示处理器是否进入缓存(Cache)预测执行模式。作为一种可实施方式,当处理器预测执行位置I时,表示有效,处理器进入缓存预测执行模式;当处理器预测执行位置O时,表示无效,处理器不进入缓存预测执行模式,按现有技术的正常模式执行。较佳地,如图2所示,所述缓存命中比较单元,包括比较子单元,有效处理子单元,无效处理子单元,其中所述比较子单元,用于根据发起访存的指令访存地址的低位找到对应的缓存块,并将缓存块的标签(Tag)和TLB出来的高位地址比较判断是否命中;所述有效处理子单元,用于根据比较子单元比较结果进行处理,如果标签(Tag)不命中,则往上一级缓存或主存储器取数;如果标签(Tag)命中且缓存块状态为有效,则将数取到对应寄存器(未示出),正常执行,并将处理器预测执行位置位标记为O ;所述无效处理子单元,用于根据比较子单元判断结果进行处理,如果标签(Tag)命中且缓存块的状态位为无效(Invalid),则将处理器预测执行位置 标记为1,并记录该访存地址的偏移量(offset)以及数据位宽,同时向上一级缓存(Cache)或主存储器发送访存请求,而且将发起访存的指令的指令预测执行位置位为I,并记录该指令访问的具体数据块地址和位宽,存在预测数据块寄存器中。预测执行单元,用于当发生缓存预测时,进行预测执行,根据后续指令与所述发起访存的指令的依赖关系,决定是否将对应的后续指令的指令预测执行位置有效(置1),并发射指令,并在预测执行的同时,控制所述访存部件向上一级缓存或者内部存储器取回所述发起访存的指令的访存结果。较佳地,作为一种可实施方式,如图3所示,所述预测执行单元,包括启动子单元,检测子单元和执行子单元,其中所述启动子单元,用于在缓存命中比较单元将处理器预测执行位置位为1,发生缓存预测执行时,启动进入预测执行模式;所述检测子单元,用于在进入预测执行模式后,每次发射指令时,检测处理器预测执行位是否为I ;所述执行子单元,用于根据检测子单元的检测结果判断执行,若否(不为I),所述指令正常发射;若有(为I),则根据是否存在数据依赖判断该指令所依赖的指令的指令预测执行位是否有有效的;若无,正常发射该指令;若有,置该指令的指令预测执行位为1,之后再发射该指令。预测执行回滚提交单元,用于在所述发起访存的指令的访存返回后,通过和预测的数据块进行比较,决定是否回滚或者提交,并将处理器预测执行位和指令预测执行位置无效(清O)。预测执行回滚提交装置在引起预测执行的数据被取回来后,将取回的数据(取回的数据也就是缓存块)对应位置的数据和在预测数据块寄存器所对应的数据是否一致。作为一种可实施方式,所述取数过程是一种现有的技术,所不同的是,在本发明实施例中,取数过程中,和数据相关的指令也在预测执行,并行处理,而现有技术中需要等取数回来才能继续执行。较佳地,作为一种可实施方式,如图4所示,所述预测执行回滚提交单元,包括取数子单元,判断子单元,处理子单元,其中所述取数子单元,用于根据发起访存请求地址的索引,取出对应索引的缓存块,并根据预测数据块寄存器,在对应索引的缓存块中得到对应偏移量以及位宽的数据,记为预测数据;同时,对取回的数据(即缓存块),也根据预测数据块寄存器,在取回的缓存块中得到对应偏移量以及位宽的数据,记为实际数据;所述判断子单元,用于判断实际数据和预测数据,如果实际数据和预测数据一样,记为一致,预测命中,否则,则不一致,预测不命中;所述处理子单元,用于根据判断子单元的判断结果进行处理,如果一致,则预测提交,将所有的指令预测标记位清O ;也将处理器预测执行位清O ;如果不一致,则将预测回滚,将所有指令预测执行位为I的指令返回发射队列,按现有技术中的方法,重新发射执行,不再预测执行,并将所有的指令预测标记位清O ;也将处理器预测执行位清O。相应地,作为一种可实施方式,如图5所示,本发明实施例的一种缓存预测执行方法,包括如下步骤
步骤S100,发起访存的指令的访存地址的低位对应的缓存块的标签(Tag)和TLB出来的高位地址比较,根据比较结果置位处理器预测执行位,决定是否进入预测执行模式(置I),并在进入预测执行模式后置位所述发起访存的指令(被预测指令)的指令预测执行位有效(置I);步骤S200,当发生缓存预测时,进行预测执行,根据后续指令与所述发起访存的指令的依赖关系,决定是否将对应的后续指令的指令预测执行位置有效(置I),并发射访存指令及其后续指令,并在预测执行的同时,控制所述访存部件向上一级缓存或者内部存储器取回所述发起访存的指令的访存结果;步骤S300,在所述访存部件取回访存结果返回后,通过和预测的数据块进行比较,决定是否回滚或者提交,并将处理器预测执行位和指令预测执行位置无效(清O)。较佳地,如图6所示,所述步骤SlOO包括如下步骤步骤S110,根据发起访存的指令的访存地址的低位找到对应的缓存块,并将缓存块的标签(Tag)和TLB出来的高位地址比较判断是否命中;步骤S120,如果标签(Tag)不命中,则按现有技术的正常方法,往上一级缓存或主存储器取数;如果标签(Tag)命中且缓存块状态为有效,则按现有技术的正常方法,将数取到对应寄存器(未示出),正常执行,并将处理器预测执行位置位标记为O ;如果标签(Tag)命中且缓存块的状态位为无效(Invalid),则将处理器预测执行位置位标记为1,并记录该访存地址的偏移量(offset)以及数据位宽,同时向上一级缓存(Cache)或主存储器发送访存请求,而且将发起访存的指令的指令预测执行位置位为1,并记录该指令访问的具体数据块地址和位宽,存在预测数据块寄存器中。下面举例说明这一过程设一个32位地址,高16位(17-32位)为地址标签(Address Tag),中间为7位(10-16位)为索引(index),缓存块大小为512位,即偏移量(offset)位宽为9。设页表地址(物理地址高位)也为16位,页大小为64K,页内偏移量对应16位低地址。设缓存(Cache)为8路组相连。读(Load)指令读(load)的数据位宽为32位。如果有以下指令
Load $1, OxOOlf Ieff//读指令这条指令是从虚地址OxOOlf Oeff取数到寄存器。这条指令执行时,首先会根据指令访存虚地址的10-16位的索引(index)值f取出索引(index)为f的缓存(cache)块(因为是8路组相连,共有8块),在取缓存块的同时,会根据访存虚地址的高16位(17-32位)OxOOlf查找TLB (旁路转换缓冲),设查TLB翻译得到的物理地址高位为Oxff If。取出缓存块后,如8个都没有任何一个标签(tag)为Oxff If,则标签(Tag)都不命中,按正常方法执行,进行访存。设八个缓存块中有某一个的标签(tag)位为OxfflfJlJ该缓存块标签(tag)命中,再 查看命中缓存块的状态位,如果状态位有效,按正常方法从缓存中取数到相应寄存器(未示出)执行。如果状态位无效,除了需要做状态位有效的操作之外,还需置预测执行位为1,进入预测执行模式,并读取访存地址对应的偏移量(offset)(本例中为ff)以及访存数据位宽(32位),存入预测数据块寄存器。较佳地,如图7所示,所述步骤S200包括如下步骤步骤S210,当发生缓存预测执行时(即处理器预测执行位为I),启动进入预测执行模式;步骤S220,在进入预测执行模式后,每次发射指令时,检测处理器预测执行位是否为I ;步骤S230,若否,所述指令正常发射;若有,则根据是否存在数据依赖判断该指令所依赖的指令的指令预测执行位是否有有效的;若无,正常发射该指令;若有,置该指令的指令预测执行位为1,之后再发射该指令。下面举例说明如何置指令预测执行位设有如下指令序列①Load $1, OxOOlf Oeff //读指令@Add$2,$l,l//加指令③Load $3, OxOOlf Offf //读指令④Sub $4,$2,I//减指令设在①号指令执行时,发生标签(Tag)命中但是缓存(Cache)状态为无效,因此此时会置处理器预测执行位为I,进入预测执行模式,并且置①号指令的指令预测执行位为I。在执行②号指令时,由于②指令需要利用到①号指令的数据,因此和①号指令存在依赖关系,而①号指令的指令预测执行位为1,因此②号指令也要预测,需要置②号指令的指令预测位为I。而③号指令,不依赖于任何一条指令预测执行位为I的指令(这里只有①②号指令如此),因此其不用预测,不需要置其预测执行位为I。而④号指令,由于倚赖②号指令,同②号指令,也需要进入预测模式,置指令预测执行位为I。较佳地,作为一种可实施方式,如图8所示,所述步骤S300包括如下步骤步骤S310,根据发起访存请求地址的索引(index)(按现有技术的方法,这个信息会存在MissQ中),取出对应索引(index)的缓存块,并根据预测数据块寄存器,在对应索引(index)的缓存块中得到对应偏移量(offset)以及位宽的数据,记为预测数据;同时,对取回的数据(即缓存块),也根据预测数据块寄存器,在取回的缓存(Cache)块中得到对应偏移量(offset)以及位宽的数据,记为实际数据;步骤S320,判断实际数据和预测数据,如果实际数据和预测数据一样,记为一致,预测命中,否则,则不一致,预测不命中;步骤S330,如果一致,则预测提交,将所有的指令预测标记位清O ;也将处理器预测执行位清O ;如果不一致,则将预测回滚,将所有指令预测执行位为I的指令返回发射队列,按现有技术中的方法,重新发射执行,不再预测执行,并将所有的指令预测标记位清O ;也将处理器预测执行位清O。本发明实施例的缓存预测执行处理器与装置及方法,相比于传统发生缓存无效时直接从上一级缓存或者主存取数回来再执行的方法相比,对于预测成功的数据,可以将取数过程和指令执行过程并行进行,从而大大提高性能,预测失败带来的额外消耗也很小,只需要重新发射即可。最后应当说明的是,很显然,本领域的技术人员可以对本发明进行各种改动和变 型而不脱离本发明的精神和范围。这样,如果本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型。
权利要求
1.一种缓存预测执行的处理器,包括多级缓存,访存部件以及主存储器,其特征在于,还包括缓存预测执行装置; 所述缓存预测执行装置,包括缓存命中比较单元,预测执行单元,预测执行回滚提交单元;以及预测数据块寄存器,处理器预测执行位,指令预测执行位;其中 所述缓存命中比较单元,用于将发起访存的指令的访存地址的低位对应的缓存块的标签和TLB出来的高位地址比较,根据比较结果置位处理器预测执行位,决定处理器是否进入预测执行模式,并在进入预测执行模式后启动预测执行单元,置位所述发起访存的指令的指令预测执行位有效; 所述预测执行单元,用于当发生缓存预测时,进行预测执行,根据后续指令与所述发起访存的指令的依赖关系,决定是否将对应的后续指令的指令预测执行位置有效,并发射访存指令及其后续指令,并在预测执行的同时,控制所述访存部件向上一级缓存或者内部存储器取回所述发起访存的指令的访存结果;所述预测执行回滚提交单元,用于在所述访存部件取回访存结果返回后,通过和预测的数据块进行比较,决定是否回滚或者提交,并将处理器预测执行位和指令预测执行位置无效; 所述预测数据块寄存器,用于存储引起预测执行的访存所访问的数据的位置; 所述处理器预测执行位,用于表示整个处理器是否处于预测执行状态,用于控制预测执行单元是否工作; 所述指令预测执行位,对应于所述处理器执行的指令,用于表示该指令是否属于预测执行指令。
2.根据权利要求I所述的缓存预测执行的处理器,其特征在于,所述多级缓存为一级缓存LI和二级缓存L2 ;所述引起预测执行的访存所访问的数据的位置,包括数据在缓存块中的偏移量以及数据位宽。
3.一种缓存预测执行装置,其特征在于,包括缓存命中比较单元,预测执行单元,预测执行回滚提交单元;以及预测数据块寄存器,处理器预测执行位,指令预测执行位;其中 所述缓存命中比较单元,用于将发起访存的指令的访存地址的低位对应的缓存块的标签和TLB出来的高位地址比较,根据比较结果置位处理器预测执行位,决定处理器是否进入预测执行模式,并在进入预测执行模式后启动预测执行单元,置位所述发起访存的指令的指令预测执行位有效; 所述预测执行单元,用于当发生缓存预测时,进行预测执行,根据后续指令与所述发起访存的指令的依赖关系,决定是否将对应的后续指令的指令预测执行位置有效,并发射访存指令及其后续指令,并在预测执行的同时,控制所述访存部件向上一级缓存或者内部存储器取回所述发起访存的指令的访存结果; 所述预测执行回滚提交单元,用于在所述访存部件取回访存结果返回后,通过和预测的数据块进行比较,决定是否回滚或者提交,并将处理器预测执行位和指令预测执行位置无效; 所述预测数据块寄存器,用于存储引起预测执行的访存所访问的数据的位置; 所述处理器预测执行位,用于表示整个处理器是否处于预测执行状态,用于控制预测执行单元是否工作;所述指令预测执行位,对应于所述处理器执行的指令,用于表示该指令是否属于预测执行指令。
4.根据权利要求3所述的缓存预测执行装置,其特征在于,所述缓存命中比较单元包括比较子单元,有效处理子单元,无效处理子单元,其中 所述比较子单元,用于根据发起访存的指令访存地址的低位找到对应的缓存块,并将缓存块的标签和TLB出来的高位地址比较判断是否命中; 所述有效处理子单元,用于根据比较子单元比较结果进行处理,如果标签不命中,则往上一级缓存或主存储器取数;如果标签命中且缓存块状态为有效,则将数取到对应寄存器,正常执行,并将处理器预测执行位置位标记为O ; 所述无效处理子单元,用于根据比较子单元判断结果进行处理,如果标签命中且缓存块的状态位为无效,则将处理器预测执行位置位标记为1,并记录该访存地址的偏移量以·及数据位宽,同时向上一级缓存或主存储器发送访存请求,而且将发起访存的指令的指令预测执行位置位为1,并记录该指令访问的具体数据块地址和位宽,存在预测数据块寄存器中。
5.根据权利要求3所述的缓存预测执行装置,其特征在于,所述预测执行单元,包括启动子单元,检测子单元和执行子单元,其中 所述启动子单元,用于在缓存命中比较单元将处理器预测执行位置位为1,发生缓存预测执行时,启动进入预测执行模式; 所述检测子单元,用于在进入预测执行模式后,每次发射指令时,检测处理器预测执行位是否为I ; 所述执行子单元,用于根据检测子单元的检测结果判断进行处理,若否,所述指令正常发射;若有,则根据是否存在数据依赖判断该指令所依赖的指令的指令预测执行位是否有效;若无,正常发射该指令;若有,置该访存指令所依赖的指令的指令预测执行位为I再发射该指令。
6.根据权利要求3所述的缓存预测执行装置,其特征在于,所述预测执行回滚提交单元,包括取数子单元,判断子单元,处理子单元,其中 所述取数子单元,用于根据发起访存请求地址的索引,取出对应索引的缓存块,并根据预测数据块寄存器,在对应索引的缓存块中得到对应偏移量以及位宽的数据,记为预测数据;同时,对取回的数据,也根据预测数据块寄存器,在取回的缓存块中得到对应偏移量以及位宽的数据,记为实际数据; 所述判断子单元,用于判断实际数据和预测数据,如果实际数据和预测数据一杆,记为一致,预测命中,否则,则不一致,预测不命中; 所述处理子单元,用于根据判断子单元的判断结果进行处理,如果一致,则预测提交,将所有的指令预测标记位清O ;也将处理器预测执行位清O ;如果不一致,则将预测回滚,将所有指令预测执行位为I的指令返回发射队列,按现有技术中的方法,重新发射执行,不再预测执行,并将所有的指令预测标记位清O ;也将处理器预测执行位清O。
7.一种缓存预测执行方法,其特征在于,包括如下步骤 步骤S100,发起访存的指令的访存地址的低位对应的缓存块的标签和TLB出来的高位地址比较,根据比较结果置位处理器预测执行位,决定是否进入预测执行模式,并在进入预测执行模式后置位所述发起访存的指令的指令预测执行位有效; 步骤S200,当发生缓存预测时,进行预测执行,根据后续指令与所述发起访存的指令的依赖关系,决定是否将对应的后续指令的指令预测执行位置有效,并发射访存指令及其后续指令,并在预测执行的同时,控制所述访存部件向上一级缓存或者内部存储器取回所述发起访存的指令的访存结果; 步骤S300,在所述访存部件取回访存结果返回后,通过和预测的数据块进行比较,决定是否回滚或者提交,并将处理器预测执行位和指令预测执行位置无效。
8.根据权利要求7所述的缓存预测执行方法,其特征在于,所述步骤SlOO包括如下步骤 步骤S110,根据发起访存的指令访存地址的低位找到对应的缓存块,并将缓存块的标签和TLB出来的高位地址比较判断是否命中; 步骤S120,如果标签不命中,则按现有技术的正常方法,往上一级缓存或主存储器取数; 如果标签命中且缓存块状态为有效,则按现有技术的正常方法,将数取到对应寄存器,正常执行,并将处理器预测执行位置位标记为O ; 如果标签命中且缓存块的状态位为无效,则将处理器预测执行位置位标记为1,并记录该访存地址的偏移量以及数据位宽,同时向上一级缓存或主存储器发送访存请求,而且将发起访存的指令的指令预测执行位置位为1,并记录该指令访问的具体数据块地址和位宽,存在预测数据块寄存器中。
9.根据权利要求7所述的缓存预测执行方法,其特征在于,所述步骤S200包括如下步骤 步骤S210,当发生缓存预测执行时,即处理器预测执行位为I时,启动进入预测执行模式; 步骤S220,在进入预测执行模式后,每次发射指令时,检测处理器预测执行位是否为I ; 步骤S230,若否,所述指令正常发射;若有,则根据是否存在数据依赖判断该访存指令所依赖的指令的指令预测执行位是否有有效的;若无,正常发射该指令;若有,置该指令的指令预测执行位为1,之后再发射该指令。
10.根据权利要求7所述的缓存预测执行方法,其特征在于,所述步骤S300包括如下步骤 步骤S310,根据发起访存请求地址的索引,取出对应索引的缓存块,并根据预测数据块寄存器,在对应索引的缓存块中得到对应偏移量以及位宽的数据,记为预测数据;同时,对取回的缓存块,也根据预测数据块寄存器,在取回的缓存块中得到对应偏移量以及位宽的数据,记为实际数据; 步骤S320,判断实际数据和预测数据,如果实际数据和预测数据一样,记为一致,预测命中,否则,则不一致,预测不命中; 步骤S330,如果一致,则预测提交,将所有的指令预测标记位清O ;也将处理器预测执行位清O ; 如果不一致,则将预测回滚,将所有指令预测执行位为I的指令返回发射队列,按现有技术中的方法,重新发射执行,不再预测执行,并将所有的指令预测标记位清O ;也将处理 器预测执行位清O。
全文摘要
本发明公开了一种缓存(Cache)预测执行的处理器与装置及方法。该处理器包括多级缓存,访存部件以及主存储器,还包括缓存预测执行装置;所述缓存预测执行装置,包括缓存命中比较单元,预测执行单元,预测执行回滚提交单元;以及预测数据块寄存器,处理器预测执行位,指令预测执行位。其比较访存地址对应的缓存块的状态位是否为有效(Valid),决定是否缓存预测;当发生缓存预测时,进行预测执行,控制访存部件取回访存结果;根据访存结果,决定将预测执行结果直接提交,还是或者进行回滚,从预测点重新执行。该装置可以有效地降低了处理器的平均访存延时,提高了处理器的性能。
文档编号G06F12/08GK102841857SQ20121026072
公开日2012年12月26日 申请日期2012年7月25日 优先权日2012年7月25日
发明者刘道福, 陈云霁, 郭崎, 胡伟武 申请人:龙芯中科技术有限公司