CN102841857A - 缓存预测执行的处理器与装置及方法 - Google Patents
缓存预测执行的处理器与装置及方法 Download PDFInfo
- Publication number
- CN102841857A CN102841857A CN2012102607240A CN201210260724A CN102841857A CN 102841857 A CN102841857 A CN 102841857A CN 2012102607240 A CN2012102607240 A CN 2012102607240A CN 201210260724 A CN201210260724 A CN 201210260724A CN 102841857 A CN102841857 A CN 102841857A
- Authority
- CN
- China
- Prior art keywords
- prediction
- instruction
- memory access
- processor
- cache
- 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.)
- Granted
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Abstract
本发明公开了一种缓存(Cache)预测执行的处理器与装置及方法。该处理器包括:多级缓存,访存部件以及主存储器,还包括缓存预测执行装置;所述缓存预测执行装置,包括缓存命中比较单元,预测执行单元,预测执行回滚提交单元;以及预测数据块寄存器,处理器预测执行位,指令预测执行位。其比较访存地址对应的缓存块的状态位是否为有效(Valid),决定是否缓存预测;当发生缓存预测时,进行预测执行,控制访存部件取回访存结果;根据访存结果,决定将预测执行结果直接提交,还是或者进行回滚,从预测点重新执行。该装置可以有效地降低了处理器的平均访存延时,提高了处理器的性能。
Description
技术领域
本发明涉及实现一种计算机处理器技术领域,尤其是一种当发生缓存(Cache)块无效时的缓存预测执行的处理器与装置及方法。
背景技术
随着处理器内部主频的提高以及结构的优化,处理器的运算性能越来越高,但是,主存的访问速度却没有同步的增长速度,于是出现了访存墙(Memory Wall)的问题。为了解决该问题,现代处理器一般都是通过增加多级缓存(Cache)来缓和问题。
在多核处理器中,各个处理器核一般都有其私有缓存(Cache),这会导致不同处理器核中私有缓存(cache)数据备份不一致的问题。为了解决该问题,现代处理器都支持各种缓存(Cache)一致性协议,这些协议的基本思想和实现都是,当一个处理器核对一地址发生写时,会发送无效请求(invalidate)给所有含有相同缓存(Cache)的处理器核,将对应其他处理器核上的对应缓存块(又称缓存行,Cache Line)的状态位置为无效(invalid)。之后,当发生访问该无效的缓存块的访存请求时,需要从上一级缓存或主存取回最新的值,对应指令才能继续执行。
但是,这种方法存在一个伪共享的问题,为了节省缓存(Cache)空间,提高缓存(Cache)利用率,现代处理器核的缓存块(Cache Line)一般都是256位,或者512位,而实际的访存操作,往往才访问8位,16位或者32位的数据。而由于无效是按缓存块为单位进行无效的,导致即使修改了整个缓存块的1位数据,整个缓存块都会无效,以后其他处理器即使访问该缓存块的其他部分数据,也必须从上一级缓存或者主存取回来,指令才能继续执行,大大浪费时间和效率,降低处理器的性能。
发明内容
本发明的目的在于提供一种缓存(Cache)预测执行的处理器与装置及方法,其有效地降低了处理器的平均访存延时,提高了处理器的性能。
为实现本发明目的而提供的一种缓存预测执行的处理器,包括多级缓存,以及主存储器,还包括缓存预测执行装置;
所述缓存预测执行装置,包括缓存命中比较单元,预测执行单元,预测执行回滚提交单元;以及预测数据块寄存器,处理器预测执行位,指令预测执行位;其中:
所述缓存命中比较单元,用于将发起访存的指令的访存地址的低位对应的缓存块的标签(Tag)和TLB出来的高位地址比较,根据比较结果置位处理器预测执行位,决定处理器是否进入预测执行模式,并在进入预测执行模式后启动预测执行单元,置位所述发起访存的指令的指令预测执行位有效;
所述预测执行单元,用于当发生缓存预测时,进行预测执行,根据后续指令与所述发起访存的指令的依赖关系,决定是否将对应的后续指令的指令预测执行位置有效(1),并发射访存指令及其后续指令,并在预测执行的同时,控制所述访存部件向上一级缓存或者内部存储器取回所述发起访存的指令的访存结果;
所述预测执行回滚提交单元,用于在所述访存部件取回访存结果返回后,通过和预测的数据块进行比较,决定是否回滚或者提交,并将处理器预测执行位和指令预测执行位置无效;
所述预测数据块寄存器,用于存储引起预测执行的访存所访问的数据的位置;
所述处理器预测执行位,用于表示整个处理器是否处于预测执行状态,用于控制预测执行单元是否工作;
所述指令预测执行位,对应于所述处理器执行的指令,用于表示该指令是否属于预测执行指令。
为实现本发明目的还提供一种缓存预测执行装置,包括缓存命中比较单元,预测执行单元,预测执行回滚提交单元;以及预测数据块寄存器,处理器预测执行位,指令预测执行位;其中:
所述缓存命中比较单元,用于将发起访存的指令的访存地址的低位对应的缓存块的标签(TAG)和TLB出来的高位地址比较,根据比较结果置位处理器预测执行位,决定处理器是否进入预测执行模式,并在进入预测执行模式后启动预测执行单元,置位所述发起访存的指令的指令预测执行位有效;
所述预测执行单元,用于当发生缓存预测时,进行预测执行,根据后续指令与所述发起访存的指令的依赖关系,决定是否将对应的后续指令的指令预测执行位置有效,并发射访存指令及其后续指令,并在预测执行的同时,控制所述访存部件向上一级缓存或者内部存储器取回所述发起访存的指令的访存结果;
所述预测执行回滚提交单元,用于在所述访存部件取回访存结果返回后,通过和预测的数据块进行比较,决定是否回滚或者提交,并将处理器预测执行位和指令预测执行位置无效;
所述预测数据块寄存器,用于存储引起预测执行的访存所访问的数据的位置;
所述处理器预测执行位,用于表示整个处理器是否处于预测执行状态,用于控制预测执行单元是否工作;
所述指令预测执行位,对应于所述处理器执行的指令,用于表示该指令是否属于预测执行指令。
较优地,所述缓存命中比较单元包括比较子单元,有效处理子单元,无效处理子单元,其中:
所述比较子单元,用于根据发起访存的指令访存地址的低位找到对应的缓存块,并将缓存块的标签(Tag)和TLB出来的高位地址比较判断是否命中;
所述有效处理子单元,用于根据比较子单元比较结果进行处理,如果标签不命中,则往上一级缓存或主存储器取数;如果标签命中且缓存块状态为有效,则将数取到对应寄存器,正常执行,并将处理器预测执行位置位标记为0;
所述无效处理子单元,用于根据比较子单元判断结果进行处理,如果标签命中且缓存块的状态位为无效,则将处理器预测执行位置位标记为1,并记录该访存地址的偏移量以及数据位宽,同时向上一级缓存或主存储器发送访存请求,而且将发起访存的指令的指令预测执行位置位为1,并记录该指令访问的具体数据块地址和位宽,存在预测数据块寄存器中。
较优地,所述预测执行单元,包括启动子单元,检测子单元和执行子单元,其中:
所述启动子单元,用于在缓存命中比较单元将处理器预测执行位置位为1,发生缓存预测执行时,启动进入预测执行模式;
所述检测子单元,用于在进入预测执行模式后,每次发射指令时,检测处理器预测执行位是否为1;
所述执行子单元,用于根据检测子单元的检测结果判断进行处理,若否,所述指令正常发射;若有,则根据是否存在数据依赖判断该指令所依赖的指令的指令预测执行位是否有效;若无,正常发射该指令;若有,置该指令的指令预测执行位为1,之后再发射该指令。
较优地,所述预测执行回滚提交单元,包括取数子单元,判断子单元,处理子单元,其中:
所述取数子单元,用于根据发起访存请求地址的索引,取出对应索引的缓存块,并根据预测数据块寄存器,在对应索引的缓存块中得到对应偏移量以及位宽的数据,记为预测数据;同时,对取回的数据,也根据预测数据块寄存器,在取回的缓存块中得到对应偏移量以及位宽的数据,记为实际数据;
所述判断子单元,用于判断实际数据和预测数据,如果实际数据和预测数据一样,记为一致,预测命中,否则,则不一致,预测不命中;
所述处理子单元,用于根据判断子单元的判断结果进行处理,如果一致,则预测提交,将所有的指令预测标记位清0;也将处理器预测执行位清0;如果不一致,则将预测回滚,将所有指令预测执行位为1的指令返回发射队列,按现有技术中的方法,重新发射执行,不再预测执行,并将所有的指令预测标记位清0;也将处理器预测执行位清0。
为实现本发明目的,更提供一种缓存预测执行方法,包括如下步骤:
步骤S100,发起访存的指令的访存地址的低位对应的缓存块的标签和TLB出来的高位地址比较,根据比较结果置位处理器预测执行位,决定是否进入预测执行模式,并在进入预测执行模式后置位所述发起访存的指令的指令预测执行位有效;
步骤S200,当发生缓存预测时,进行预测执行,根据后续指令与所述发起访存的指令的依赖关系,决定是否将对应的后续指令的指令预测执行位置有效,并发射访存指令及其后续指令,并在预测执行的同时,控制所述访存部件向上一级缓存或者内部存储器取回所述发起访存的指令的访存结果;
步骤S300,在所述访存部件取回访存结果返回后,通过和预测的数据块进行比较,决定是否回滚或者提交,并将处理器预测执行位和指令预测执行位置无效。
本发明的缓存预测执行的处理器与装置及方法,相比于传统发生缓存(Cache)无效时直接从上一级缓存(Cache)或者主存储器取数回来再执行的方法相比,对于预测成功的数据,可以将取数过程和指令执行过程并行进行,从而大大提高性能,预测失败带来的额外消耗也很小,只需要重新发射即可。
附图说明
图1是本发明实施例缓存(Cache)预测执行的处理器的缓存预测执行装置结构示意图;
图2是本发明实施例图1中的缓存(Cache)命中比较单元的结构示意图;
图3是本发明实施例的图1中的指令预测执行单元的结构示意图;
图4是本发明实施例的图1中的指令预测执行回滚提交单元的结构示意图;
图5是本发明实施例中缓存预测执行方法流程图;
图6是本发明实施例图5中步骤S100命中比较过程流程图;
图7是本发明实施例图5中步骤S200预测执行过程流程图;
图8是本发明实施例图5中步骤S300执行回滚提交过程流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明的一种缓存预测执行的处理器与装置及方法进行解释。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明针对现有技术中存在的问题,提出了一种缓存预测执行的方法和装置及处理器,当发生缓存块无效时,进入预测执行(即该指令不需要使用该缓存块内真正无效的数据),同时访问上一级缓存或主存,将最新的数据取回;在取回后,通过比较数据,判断预测是否正确,确定将预测提交还是回滚。
作为一种可实施方式,本发明实施例的一种缓存预测执行的处理器,包括多级缓存(一级缓存L1和二级缓存L2等)(未示出),访存部件(未示出)以及主存储器(内存)(未示出);
还包括缓存预测执行装置;
如图1所示,所述缓存预测执行装置,包括①缓存命中比较单元②预测执行单元③预测执行回滚提交单元;
还包括多个控制寄存器或者控制位,包括:
①预测数据块寄存器,用于存储引起预测执行的访存所访问的数据的位置,包括数据在缓存块中的偏移量(offset)以及数据位宽;
②处理器预测执行位,用于表示整个处理器是否处于预测执行状态,用于控制预测执行单元是否工作;
③指令预测执行位,对应于所述处理器执行的指令(每条指令有一个指令预测执行位),用于表示该指令是否属于预测执行指令。
本发明实施例的处理器中,所述缓存命中比较单元,用于将发起访存的访存指令的访存地址的低位对应的缓存块的标签(Tag)和TLB出来的高位地址比较,根据比较结果置位处理器预测执行位,决定处理器是否进入预测执行模式(置1),并在进入预测执行模式后启动预测执行单元,置位所述发起访存的指令(被预测指令)的指令预测执行位有效(置1)。
作为一种可实施方式,所述缓存命中比较单元,根据发起访存的访存指令的指令访存地址的低位对应的缓存块,并判断所述缓存块是否为标签(Tag)命中且状态位为有效(Valid),将处理器预测执行位置位,表示处理器是否进入缓存(Cache)预测执行模式。
作为一种可实施方式,当处理器预测执行位置1时,表示有效,处理器进入缓存预测执行模式;当处理器预测执行位置0时,表示无效,处理器不进入缓存预测执行模式,按现有技术的正常模式执行。
较佳地,如图2所示,所述缓存命中比较单元,包括比较子单元,有效处理子单元,无效处理子单元,其中:
所述比较子单元,用于根据发起访存的指令访存地址的低位找到对应的缓存块,并将缓存块的标签(Tag)和TLB出来的高位地址比较判断是否命中;
所述有效处理子单元,用于根据比较子单元比较结果进行处理,如果标签(Tag)不命中,则往上一级缓存或主存储器取数;如果标签(Tag)命中且缓存块状态为有效,则将数取到对应寄存器(未示出),正常执行,并将处理器预测执行位置位标记为0;
所述无效处理子单元,用于根据比较子单元判断结果进行处理,如果标签(Tag)命中且缓存块的状态位为无效(Invalid),则将处理器预测执行位置位标记为1,并记录该访存地址的偏移量(offset)以及数据位宽,同时向上一级缓存(Cache)或主存储器发送访存请求,而且将发起访存的指令的指令预测执行位置位为1,并记录该指令访问的具体数据块地址和位宽,存在预测数据块寄存器中。
预测执行单元,用于当发生缓存预测时,进行预测执行,根据后续指令与所述发起访存的指令的依赖关系,决定是否将对应的后续指令的指令预测执行位置有效(置1),并发射指令,并在预测执行的同时,控制所述访存部件向上一级缓存或者内部存储器取回所述发起访存的指令的访存结果。
较佳地,作为一种可实施方式,如图3所示,所述预测执行单元,包括启动子单元,检测子单元和执行子单元,其中:
所述启动子单元,用于在缓存命中比较单元将处理器预测执行位置位为1,发生缓存预测执行时,启动进入预测执行模式;
所述检测子单元,用于在进入预测执行模式后,每次发射指令时,检测处理器预测执行位是否为1;
所述执行子单元,用于根据检测子单元的检测结果判断执行,若否(不为1),所述指令正常发射;若有(为1),则根据是否存在数据依赖判断该指令所依赖的指令的指令预测执行位是否有有效的;若无,正常发射该指令;若有,置该指令的指令预测执行位为1,之后再发射该指令。
预测执行回滚提交单元,用于在所述发起访存的指令的访存返回后,通过和预测的数据块进行比较,决定是否回滚或者提交,并将处理器预测执行位和指令预测执行位置无效(清0)。
预测执行回滚提交装置在引起预测执行的数据被取回来后,将取回的数据(取回的数据也就是缓存块)对应位置的数据和在预测数据块寄存器所对应的数据是否一致。
作为一种可实施方式,所述取数过程是一种现有的技术,所不同的是,在本发明实施例中,取数过程中,和数据相关的指令也在预测执行,并行处理,而现有技术中需要等取数回来才能继续执行。
较佳地,作为一种可实施方式,如图4所示,所述预测执行回滚提交单元,包括取数子单元,判断子单元,处理子单元,其中:
所述取数子单元,用于根据发起访存请求地址的索引,取出对应索引的缓存块,并根据预测数据块寄存器,在对应索引的缓存块中得到对应偏移量以及位宽的数据,记为预测数据;同时,对取回的数据(即缓存块),也根据预测数据块寄存器,在取回的缓存块中得到对应偏移量以及位宽的数据,记为实际数据;
所述判断子单元,用于判断实际数据和预测数据,如果实际数据和预测数据一样,记为一致,预测命中,否则,则不一致,预测不命中;
所述处理子单元,用于根据判断子单元的判断结果进行处理,如果一致,则预测提交,将所有的指令预测标记位清0;也将处理器预测执行位清0;如果不一致,则将预测回滚,将所有指令预测执行位为1的指令返回发射队列,按现有技术中的方法,重新发射执行,不再预测执行,并将所有的指令预测标记位清0;也将处理器预测执行位清0。
相应地,作为一种可实施方式,如图5所示,本发明实施例的一种缓存预测执行方法,包括如下步骤:
步骤S100,发起访存的指令的访存地址的低位对应的缓存块的标签(Tag)和TLB出来的高位地址比较,根据比较结果置位处理器预测执行位,决定是否进入预测执行模式(置1),并在进入预测执行模式后置位所述发起访存的指令(被预测指令)的指令预测执行位有效(置1);
步骤S200,当发生缓存预测时,进行预测执行,根据后续指令与所述发起访存的指令的依赖关系,决定是否将对应的后续指令的指令预测执行位置有效(置1),并发射访存指令及其后续指令,并在预测执行的同时,控制所述访存部件向上一级缓存或者内部存储器取回所述发起访存的指令的访存结果;
步骤S300,在所述访存部件取回访存结果返回后,通过和预测的数据块进行比较,决定是否回滚或者提交,并将处理器预测执行位和指令预测执行位置无效(清0)。
较佳地,如图6所示,所述步骤S100包括如下步骤:
步骤S110,根据发起访存的指令的访存地址的低位找到对应的缓存块,并将缓存块的标签(Tag)和TLB出来的高位地址比较判断是否命中;
步骤S120,如果标签(Tag)不命中,则按现有技术的正常方法,往上一级缓存或主存储器取数;
如果标签(Tag)命中且缓存块状态为有效,则按现有技术的正常方法,将数取到对应寄存器(未示出),正常执行,并将处理器预测执行位置位标记为0;
如果标签(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)指令读(1oad)的数据位宽为32位。
如果有以下指令:
Load $1,0x001f 1eff//读指令
这条指令是从虚地址0x001f 0eff取数到寄存器。这条指令执行时,首先会根据指令访存虚地址的10-16位的索引(index)值f取出索引(index)为f的缓存(cache)块(因为是8路组相连,共有8块),在取缓存块的同时,会根据访存虚地址的高16位(17-32位)0x001f查找TLB(旁路转换缓冲),设查TLB翻译得到的物理地址高位为0xff1f。
取出缓存块后,如8个都没有任何一个标签(tag)为0xff1f,则标签(Tag)都不命中,按正常方法执行,进行访存。设八个缓存块中有某一个的标签(tag)位为0xff1f,则该缓存块标签(tag)命中,再查看命中缓存块的状态位,如果状态位有效,按正常方法从缓存中取数到相应寄存器(未示出)执行。如果状态位无效,除了需要做状态位有效的操作之外,还需置预测执行位为1,进入预测执行模式,并读取访存地址对应的偏移量(offset)(本例中为ff)以及访存数据位宽(32位),存入预测数据块寄存器。
较佳地,如图7所示,所述步骤S200包括如下步骤:
步骤S210,当发生缓存预测执行时(即处理器预测执行位为1),启动进入预测执行模式;
步骤S220,在进入预测执行模式后,每次发射指令时,检测处理器预测执行位是否为1;
步骤S230,若否,所述指令正常发射;若有,则根据是否存在数据依赖判断该指令所依赖的指令的指令预测执行位是否有有效的;若无,正常发射该指令;若有,置该指令的指令预测执行位为1,之后再发射该指令。
下面举例说明如何置指令预测执行位:
设有如下指令序列:
①Load $1,0x001f 0eff //读指令
②Add $2,$1,1 //加指令
③Load $3,0x001f 0fff //读指令
④Sub $4,$2,1 //减指令
设在①号指令执行时,发生标签(Tag)命中但是缓存(Cache)状态为无效,因此此时会置处理器预测执行位为1,进入预测执行模式,并且置①号指令的指令预测执行位为1。在执行②号指令时,由于②指令需要利用到①号指令的数据,因此和①号指令存在依赖关系,而①号指令的指令预测执行位为1,因此②号指令也要预测,需要置②号指令的指令预测位为1。而③号指令,不依赖于任何一条指令预测执行位为1的指令(这里只有①②号指令如此),因此其不用预测,不需要置其预测执行位为1。而④号指令,由于倚赖②号指令,同②号指令,也需要进入预测模式,置指令预测执行位为1。
较佳地,作为一种可实施方式,如图8所示,所述步骤S300包括如下步骤:
步骤S310,根据发起访存请求地址的索引(index)(按现有技术的方法,这个信息会存在MissQ中),取出对应索引(index)的缓存块,并根据预测数据块寄存器,在对应索引(index)的缓存块中得到对应偏移量(offset)以及位宽的数据,记为预测数据;同时,对取回的数据(即缓存块),也根据预测数据块寄存器,在取回的缓存(Cache)块中得到对应偏移量(offset)以及位宽的数据,记为实际数据;
步骤S320,判断实际数据和预测数据,如果实际数据和预测数据一样,记为一致,预测命中,否则,则不一致,预测不命中;
步骤S330,如果一致,则预测提交,将所有的指令预测标记位清0;也将处理器预测执行位清0;
如果不一致,则将预测回滚,将所有指令预测执行位为1的指令返回发射队列,按现有技术中的方法,重新发射执行,不再预测执行,并将所有的指令预测标记位清0;也将处理器预测执行位清0。
本发明实施例的缓存预测执行处理器与装置及方法,相比于传统发生缓存无效时直接从上一级缓存或者主存取数回来再执行的方法相比,对于预测成功的数据,可以将取数过程和指令执行过程并行进行,从而大大提高性能,预测失败带来的额外消耗也很小,只需要重新发射即可。
最后应当说明的是,很显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,如果本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型。
Claims (10)
1.一种缓存预测执行的处理器,包括多级缓存,访存部件以及主存储器,其特征在于,还包括缓存预测执行装置;
所述缓存预测执行装置,包括缓存命中比较单元,预测执行单元,预测执行回滚提交单元;以及预测数据块寄存器,处理器预测执行位,指令预测执行位;其中:
所述缓存命中比较单元,用于将发起访存的指令的访存地址的低位对应的缓存块的标签和TLB出来的高位地址比较,根据比较结果置位处理器预测执行位,决定处理器是否进入预测执行模式,并在进入预测执行模式后启动预测执行单元,置位所述发起访存的指令的指令预测执行位有效;
所述预测执行单元,用于当发生缓存预测时,进行预测执行,根据后续指令与所述发起访存的指令的依赖关系,决定是否将对应的后续指令的指令预测执行位置有效,并发射访存指令及其后续指令,并在预测执行的同时,控制所述访存部件向上一级缓存或者内部存储器取回所述发起访存的指令的访存结果;
所述预测执行回滚提交单元,用于在所述访存部件取回访存结果返回后,通过和预测的数据块进行比较,决定是否回滚或者提交,并将处理器预测执行位和指令预测执行位置无效;
所述预测数据块寄存器,用于存储引起预测执行的访存所访问的数据的位置;
所述处理器预测执行位,用于表示整个处理器是否处于预测执行状态,用于控制预测执行单元是否工作;
所述指令预测执行位,对应于所述处理器执行的指令,用于表示该指令是否属于预测执行指令。
2.根据权利要求1所述的缓存预测执行的处理器,其特征在于,所述多级缓存为一级缓存L1和二级缓存L2;所述引起预测执行的访存所访问的数据的位置,包括数据在缓存块中的偏移量以及数据位宽。
3.一种缓存预测执行装置,其特征在于,包括缓存命中比较单元,预测执行单元,预测执行回滚提交单元;以及预测数据块寄存器,处理器预测执行位,指令预测执行位;其中:
所述缓存命中比较单元,用于将发起访存的指令的访存地址的低位对应的缓存块的标签和TLB出来的高位地址比较,根据比较结果置位处理器预测执行位,决定处理器是否进入预测执行模式,并在进入预测执行模式后启动预测执行单元,置位所述发起访存的指令的指令预测执行位有效;
所述预测执行单元,用于当发生缓存预测时,进行预测执行,根据后续指令与所述发起访存的指令的依赖关系,决定是否将对应的后续指令的指令预测执行位置有效,并发射访存指令及其后续指令,并在预测执行的同时,控制所述访存部件向上一级缓存或者内部存储器取回所述发起访存的指令的访存结果;
所述预测执行回滚提交单元,用于在所述访存部件取回访存结果返回后,通过和预测的数据块进行比较,决定是否回滚或者提交,并将处理器预测执行位和指令预测执行位置无效;
所述预测数据块寄存器,用于存储引起预测执行的访存所访问的数据的位置;
所述处理器预测执行位,用于表示整个处理器是否处于预测执行状态,用于控制预测执行单元是否工作;
所述指令预测执行位,对应于所述处理器执行的指令,用于表示该指令是否属于预测执行指令。
4.根据权利要求3所述的缓存预测执行装置,其特征在于,所述缓存命中比较单元包括比较子单元,有效处理子单元,无效处理子单元,其中:
所述比较子单元,用于根据发起访存的指令访存地址的低位找到对应的缓存块,并将缓存块的标签和TLB出来的高位地址比较判断是否命中;
所述有效处理子单元,用于根据比较子单元比较结果进行处理,如果标签不命中,则往上一级缓存或主存储器取数;如果标签命中且缓存块状态为有效,则将数取到对应寄存器,正常执行,并将处理器预测执行位置位标记为0;
所述无效处理子单元,用于根据比较子单元判断结果进行处理,如果标签命中且缓存块的状态位为无效,则将处理器预测执行位置位标记为1,并记录该访存地址的偏移量以及数据位宽,同时向上一级缓存或主存储器发送访存请求,而且将发起访存的指令的指令预测执行位置位为1,并记录该指令访问的具体数据块地址和位宽,存在预测数据块寄存器中。
5.根据权利要求3所述的缓存预测执行装置,其特征在于,所述预测执行单元,包括启动子单元,检测子单元和执行子单元,其中:
所述启动子单元,用于在缓存命中比较单元将处理器预测执行位置位为1,发生缓存预测执行时,启动进入预测执行模式;
所述检测子单元,用于在进入预测执行模式后,每次发射指令时,检测处理器预测执行位是否为1;
所述执行子单元,用于根据检测子单元的检测结果判断进行处理,若否,所述指令正常发射;若有,则根据是否存在数据依赖判断该指令所依赖的指令的指令预测执行位是否有效;若无,正常发射该指令;若有,置该访存指令所依赖的指令的指令预测执行位为1再发射该指令。
6.根据权利要求3所述的缓存预测执行装置,其特征在于,所述预测执行回滚提交单元,包括取数子单元,判断子单元,处理子单元,其中:
所述取数子单元,用于根据发起访存请求地址的索引,取出对应索引的缓存块,并根据预测数据块寄存器,在对应索引的缓存块中得到对应偏移量以及位宽的数据,记为预测数据;同时,对取回的数据,也根据预测数据块寄存器,在取回的缓存块中得到对应偏移量以及位宽的数据,记为实际数据;
所述判断子单元,用于判断实际数据和预测数据,如果实际数据和预测数据一杆,记为一致,预测命中,否则,则不一致,预测不命中;
所述处理子单元,用于根据判断子单元的判断结果进行处理,如果一致,则预测提交,将所有的指令预测标记位清0;也将处理器预测执行位清0;如果不一致,则将预测回滚,将所有指令预测执行位为1的指令返回发射队列,按现有技术中的方法,重新发射执行,不再预测执行,并将所有的指令预测标记位清0;也将处理器预测执行位清0。
7.一种缓存预测执行方法,其特征在于,包括如下步骤:
步骤S100,发起访存的指令的访存地址的低位对应的缓存块的标签和TLB出来的高位地址比较,根据比较结果置位处理器预测执行位,决定是否进入预测执行模式,并在进入预测执行模式后置位所述发起访存的指令的指令预测执行位有效;
步骤S200,当发生缓存预测时,进行预测执行,根据后续指令与所述发起访存的指令的依赖关系,决定是否将对应的后续指令的指令预测执行位置有效,并发射访存指令及其后续指令,并在预测执行的同时,控制所述访存部件向上一级缓存或者内部存储器取回所述发起访存的指令的访存结果;
步骤S300,在所述访存部件取回访存结果返回后,通过和预测的数据块进行比较,决定是否回滚或者提交,并将处理器预测执行位和指令预测执行位置无效。
8.根据权利要求7所述的缓存预测执行方法,其特征在于,所述步骤S100包括如下步骤:
步骤S110,根据发起访存的指令访存地址的低位找到对应的缓存块,并将缓存块的标签和TLB出来的高位地址比较判断是否命中;
步骤S120,如果标签不命中,则按现有技术的正常方法,往上一级缓存或主存储器取数;
如果标签命中且缓存块状态为有效,则按现有技术的正常方法,将数取到对应寄存器,正常执行,并将处理器预测执行位置位标记为0;
如果标签命中且缓存块的状态位为无效,则将处理器预测执行位置位标记为1,并记录该访存地址的偏移量以及数据位宽,同时向上一级缓存或主存储器发送访存请求,而且将发起访存的指令的指令预测执行位置位为1,并记录该指令访问的具体数据块地址和位宽,存在预测数据块寄存器中。
9.根据权利要求7所述的缓存预测执行方法,其特征在于,所述步骤S200包括如下步骤:
步骤S210,当发生缓存预测执行时,即处理器预测执行位为1时,启动进入预测执行模式;
步骤S220,在进入预测执行模式后,每次发射指令时,检测处理器预测执行位是否为1;
步骤S230,若否,所述指令正常发射;若有,则根据是否存在数据依赖判断该访存指令所依赖的指令的指令预测执行位是否有有效的;若无,正常发射该指令;若有,置该指令的指令预测执行位为1,之后再发射该指令。
10.根据权利要求7所述的缓存预测执行方法,其特征在于,所述步骤S300包括如下步骤:
步骤S310,根据发起访存请求地址的索引,取出对应索引的缓存块,并根据预测数据块寄存器,在对应索引的缓存块中得到对应偏移量以及位宽的数据,记为预测数据;同时,对取回的缓存块,也根据预测数据块寄存器,在取回的缓存块中得到对应偏移量以及位宽的数据,记为实际数据;
步骤S320,判断实际数据和预测数据,如果实际数据和预测数据一样,记为一致,预测命中,否则,则不一致,预测不命中;
步骤S330,如果一致,则预测提交,将所有的指令预测标记位清0;也将处理器预测执行位清0;
如果不一致,则将预测回滚,将所有指令预测执行位为1的指令返回发射队列,按现有技术中的方法,重新发射执行,不再预测执行,并将所有的指令预测标记位清0;也将处理器预测执行位清0。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210260724.0A CN102841857B (zh) | 2012-07-25 | 2012-07-25 | 缓存预测执行的处理器与装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210260724.0A CN102841857B (zh) | 2012-07-25 | 2012-07-25 | 缓存预测执行的处理器与装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102841857A true CN102841857A (zh) | 2012-12-26 |
CN102841857B CN102841857B (zh) | 2015-02-25 |
Family
ID=47369242
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210260724.0A Active CN102841857B (zh) | 2012-07-25 | 2012-07-25 | 缓存预测执行的处理器与装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102841857B (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104461758A (zh) * | 2014-11-10 | 2015-03-25 | 中国航天科技集团公司第九研究院第七七一研究所 | 一种容忍cache缺失快速清空流水线的异常处理方法及其处理结构 |
CN105808497A (zh) * | 2014-12-30 | 2016-07-27 | 华为技术有限公司 | 一种数据处理方法 |
CN107688470A (zh) * | 2016-12-23 | 2018-02-13 | 北京国睿中数科技股份有限公司 | uncache数据访存的验证方法及装置 |
WO2018107331A1 (zh) * | 2016-12-12 | 2018-06-21 | 华为技术有限公司 | 计算机系统及内存访问技术 |
CN108197456A (zh) * | 2018-01-16 | 2018-06-22 | 飞天诚信科技股份有限公司 | 一种设备数据的缓存方法及装置 |
CN108509791A (zh) * | 2018-02-09 | 2018-09-07 | 清华大学 | 检测处理器的方法、检测装置以及检测系统 |
CN111241551A (zh) * | 2019-09-19 | 2020-06-05 | 中国科学院信息工程研究所 | 基于缓存命中状态的处理器芯片假安全依赖冲突的识别方法 |
CN111324948A (zh) * | 2020-02-10 | 2020-06-23 | 上海兆芯集成电路有限公司 | 模拟方法及模拟系统 |
CN112905501A (zh) * | 2015-04-29 | 2021-06-04 | 谷歌有限责任公司 | 数据高速缓存 |
CN114116528A (zh) * | 2021-11-22 | 2022-03-01 | 深圳大学 | 一种内存访问地址预测方法、装置、存储介质及电子设备 |
CN116701246A (zh) * | 2023-05-23 | 2023-09-05 | 合芯科技有限公司 | 一种提升缓存带宽的方法、装置、设备及存储介质 |
CN117389630A (zh) * | 2023-12-11 | 2024-01-12 | 北京开源芯片研究院 | 一种数据缓存方法、装置、电子设备及可读存储介质 |
WO2024113838A1 (zh) * | 2022-11-28 | 2024-06-06 | 北京微核芯科技有限公司 | 处理器设置方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1955947A (zh) * | 2005-10-28 | 2007-05-02 | 中国科学院计算技术研究所 | 一种高速缓存失效的处理器访存指令处理方法 |
US20110138149A1 (en) * | 2009-12-09 | 2011-06-09 | Sun Microsystems, Inc. | Preventing duplicate entries in a non-blocking tlb structure that supports multiple page sizes |
CN102306092A (zh) * | 2011-07-29 | 2012-01-04 | 北京北大众志微系统科技有限责任公司 | 超标量处理器实现指令缓存路选择的方法及装置 |
-
2012
- 2012-07-25 CN CN201210260724.0A patent/CN102841857B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1955947A (zh) * | 2005-10-28 | 2007-05-02 | 中国科学院计算技术研究所 | 一种高速缓存失效的处理器访存指令处理方法 |
US20110138149A1 (en) * | 2009-12-09 | 2011-06-09 | Sun Microsystems, Inc. | Preventing duplicate entries in a non-blocking tlb structure that supports multiple page sizes |
CN102306092A (zh) * | 2011-07-29 | 2012-01-04 | 北京北大众志微系统科技有限责任公司 | 超标量处理器实现指令缓存路选择的方法及装置 |
Non-Patent Citations (1)
Title |
---|
武淑丽等: "基于预测缓存的低功耗TLB快速访问机制", 《计算机应用研究》, vol. 28, no. 8, 31 August 2011 (2011-08-31) * |
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104461758B (zh) * | 2014-11-10 | 2017-08-25 | 中国航天科技集团公司第九研究院第七七一研究所 | 一种容忍cache缺失快速清空流水线的异常处理方法及其处理结构 |
CN104461758A (zh) * | 2014-11-10 | 2015-03-25 | 中国航天科技集团公司第九研究院第七七一研究所 | 一种容忍cache缺失快速清空流水线的异常处理方法及其处理结构 |
CN105808497A (zh) * | 2014-12-30 | 2016-07-27 | 华为技术有限公司 | 一种数据处理方法 |
CN105808497B (zh) * | 2014-12-30 | 2018-09-21 | 华为技术有限公司 | 一种数据处理方法 |
CN112905501A (zh) * | 2015-04-29 | 2021-06-04 | 谷歌有限责任公司 | 数据高速缓存 |
WO2018107331A1 (zh) * | 2016-12-12 | 2018-06-21 | 华为技术有限公司 | 计算机系统及内存访问技术 |
US11093245B2 (en) | 2016-12-12 | 2021-08-17 | Huawei Technologies Co., Ltd. | Computer system and memory access technology |
CN107688470A (zh) * | 2016-12-23 | 2018-02-13 | 北京国睿中数科技股份有限公司 | uncache数据访存的验证方法及装置 |
CN107688470B (zh) * | 2016-12-23 | 2020-04-07 | 北京国睿中数科技股份有限公司 | uncache数据访存的验证方法及装置 |
CN108197456B (zh) * | 2018-01-16 | 2020-05-19 | 飞天诚信科技股份有限公司 | 一种设备数据的缓存方法及装置 |
CN108197456A (zh) * | 2018-01-16 | 2018-06-22 | 飞天诚信科技股份有限公司 | 一种设备数据的缓存方法及装置 |
CN108509791A (zh) * | 2018-02-09 | 2018-09-07 | 清华大学 | 检测处理器的方法、检测装置以及检测系统 |
CN108509791B (zh) * | 2018-02-09 | 2021-06-04 | 清华大学 | 检测处理器的方法、检测装置以及检测系统 |
CN111241551A (zh) * | 2019-09-19 | 2020-06-05 | 中国科学院信息工程研究所 | 基于缓存命中状态的处理器芯片假安全依赖冲突的识别方法 |
CN111241551B (zh) * | 2019-09-19 | 2022-01-25 | 中国科学院信息工程研究所 | 基于缓存命中状态的处理器芯片假安全依赖冲突的识别方法 |
CN111324948A (zh) * | 2020-02-10 | 2020-06-23 | 上海兆芯集成电路有限公司 | 模拟方法及模拟系统 |
CN111324948B (zh) * | 2020-02-10 | 2023-04-25 | 上海兆芯集成电路有限公司 | 模拟方法及模拟系统 |
CN114116528A (zh) * | 2021-11-22 | 2022-03-01 | 深圳大学 | 一种内存访问地址预测方法、装置、存储介质及电子设备 |
WO2024113838A1 (zh) * | 2022-11-28 | 2024-06-06 | 北京微核芯科技有限公司 | 处理器设置方法、装置、电子设备及存储介质 |
CN116701246A (zh) * | 2023-05-23 | 2023-09-05 | 合芯科技有限公司 | 一种提升缓存带宽的方法、装置、设备及存储介质 |
CN116701246B (zh) * | 2023-05-23 | 2024-05-07 | 合芯科技有限公司 | 一种提升缓存带宽的方法、装置、设备及存储介质 |
CN117389630A (zh) * | 2023-12-11 | 2024-01-12 | 北京开源芯片研究院 | 一种数据缓存方法、装置、电子设备及可读存储介质 |
CN117389630B (zh) * | 2023-12-11 | 2024-03-05 | 北京开源芯片研究院 | 一种数据缓存方法、装置、电子设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN102841857B (zh) | 2015-02-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102841857A (zh) | 缓存预测执行的处理器与装置及方法 | |
US9513904B2 (en) | Computer processor employing cache memory with per-byte valid bits | |
CN102169429B (zh) | 预取单元、数据预取方法以及微处理器 | |
CN102483704B (zh) | 具有高效的高速缓存支持的事务内存系统 | |
EP0185867B1 (en) | A memory hierarchy and its method of operation | |
JP5526626B2 (ja) | 演算処理装置およびアドレス変換方法 | |
CN102937937B (zh) | 数据预取器及预取数据至高速缓存存储器的方法 | |
US8499123B1 (en) | Multi-stage pipeline for cache access | |
CN101158925B (zh) | 用于支持跟踪和标准高速缓存行的同时存储的装置和方法 | |
US7363435B1 (en) | System and method for coherence prediction | |
CN103198026A (zh) | 指令高速缓存功耗降低 | |
JP2024520742A (ja) | 複数のスレッド間での命令キャッシュのフットプリントの共有 | |
CN109799897B (zh) | 一种减少gpu二级缓存能耗的控制方法及装置 | |
US20090292857A1 (en) | Cache memory unit | |
US20070073971A1 (en) | Memory caching in data processing | |
KR100840011B1 (ko) | 3차원 그래픽 연산을 위한 캐쉬 메모리 장치 및 3차원그래픽 연산 처리 방법 | |
EP4127917B1 (en) | Fetch stage handling of indirect jumps in a processor pipeline | |
US11048637B2 (en) | High-frequency and low-power L1 cache and associated access technique | |
CN101158926B (zh) | 跟踪高速缓存中节省功率的装置和方法 | |
US20090063773A1 (en) | Technique to enable store forwarding during long latency instruction execution | |
US20110283041A1 (en) | Cache memory and control method thereof | |
CN101419543B (zh) | 预测高速寄存器的存取位置的方法及系统 | |
CN110750468A (zh) | 一种支持内存一致性功能的数据缓存装置 | |
WO2010098152A1 (ja) | キャッシュメモリシステムおよびキャッシュメモリ制御方法 | |
KR20240067941A (ko) | 예비 디렉토리 항목에 특정 데이터 패턴의 표시 저장 |
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 | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing Patentee after: Loongson Zhongke Technology Co.,Ltd. Address before: 100190 No. 10 South Road, Zhongguancun Academy of Sciences, Haidian District, Beijing Patentee before: LOONGSON TECHNOLOGY Corp.,Ltd. |