控制高速缓存的高速缓存系统和高速缓存控制装置的制作方法

文档序号:6380715阅读:201来源:国知局
专利名称:控制高速缓存的高速缓存系统和高速缓存控制装置的制作方法
技术领域
本发明涉及高速缓存系统和高速缓存控制装置,具体地说,涉及控制具有两种访问模式即在高电力消耗下高速运转的访问模式和在低电力消耗下低速运转的访问模式的高速缓存的高速缓存系统和高速缓存控制装置。
背景技术
以前,为了补偿主存的访问速度,采用高速缓存的高速缓存系统进入实用化。所谓高速缓存是指设置在处理器和主存之间的高速记录介质。该高速缓存中放置使用频度高的数据。处理器不访问主存,而访问该高速缓存,由此取出数据,故而可以高速执行处理。
日本专利特开平11-39216公开了具有两个访问模式的高速缓存。就是说,在所有访问模式中,与高速缓存中的地址存储器在命中/未命中判定动作并行,执行对于所有路径的索引动作。以此可使高速缓存命中的数据向外输出的高速化。另一方面,在唯一的访问模式的情况下,对用由高速缓存内地址存储器命中/未命中判定动作而得的路径选择信号选择的路径执行索引动作。以此变得只在必要的最小限度的存储器区域内动作,可望降低电力消耗。
但是,上述日本专利特开平11-39216记载的示例,只是在连续读出这样的突发访问的情况下,对所有的访问模式和唯一的访问模式执行选择的示例。就是说,在连续读出这样的突发访问的情况下,第一次访问是在全部访问模式下执行访问,第二次访问以后,在唯一的访问模式下执行访问。
然而,如上所述,必须执行两个访问模式的选择,不限于连续读出的第一次访问和第二次之后的访问。
例如,在执行大量数据的流水线处理的高速缓存系统中,防止流水线停顿(处理等待),或者即使出现停顿,也希望尽可能缩短等待时间。另一方面,不发生流水线停顿时,希望尽量在低电力消耗下运转。
另外,在使用从两种以上的时钟频率中选择一种进行运转的CPU(中央处理单元,处理器)的高速缓存系统中,在选择高的时钟频率时,与降低电力消耗相比,优先要求高速运转,在选择低的时钟频率时,与加快运行速度相比,优先降低电力消耗。

发明内容
本发明的主要目标是提供一种高速缓存系统,它是在本发明的CPU进行多指令流水线处理的情况下,满足防止流水线处理等待或缩短处理等待时间的条件,能够适当地选择访问模式,以便在尽可能低的电力消耗下运行的高速缓存系统。
此外,本发明的另一目标是提供一种高速缓存控制装置,它在使用从两种以上的时钟频率中选择一种进行运行的CPU的情况下,可以根据当前选择的频率,适当选择访问模式。
按照本发明一个方面的高速缓存系统具有高速缓存,它在被访问时,具有在第一周期执行输出存储数据的动作的第一访问模式和在比第一周期长的第二周期执行输出存储数据的动作的第二访问模式;处理器,对高速缓存内的数据执行流水线处理;访问模式控制部,根据在各访问模式下运行时有无流水线处理等待,对高速缓存输出指示在第一访问模式下执行动作的第一访问模式信号和指示在第二访问模式下执行动作的第二访问模式信号中的一个。因此,可以在满足防止流水线处理等待或缩短处理等待时间的条件上,适当选择访问模式,使之在电力消耗尽可能低的情况下运行。
另外,按照本发明另一方面的高速缓存控制装置,用于控制高速缓存,高速缓存在被访问时,具有在第一周期执行输出存储数据的动作的第一访问模式和在比第一周期长的第二周期执行输出存储数据的动作的第二访问模式;高速缓存控制装置具有判定部,对从多种时钟频率中选择其中一种频率进行动作的处理器是在预定值以上的时钟频率下动作还是在不足预定值的时钟频率下动作进行判定,处理器是对高速缓存内的数据执行处理的处理器;访问模式控制部,当判定部判定处理器在预定值以上的时钟频率下动作时,输出指示第一访问模式的第一访问模式信号,当判定部判定处理器在不足预定的时钟频率下动作时,输出指示第二访问模式的第二访问模式信号。


图1表示按照本发明第一实施例的高速缓存的结构;图2表示高速缓存访问模式切换部9的详细结构;图3是表示双周期访问模式下高速缓存100的动作时序图;图4是表示单周期访问模式下高速缓存100的动作时序图;图5表示按照本发明第一实施例的高速缓存系统的构成;图6表示分支和预取动作以外的动作时高速缓存100内指令读出和执行的顺序;图7表示分支时高速缓存100内指令读出和执行的顺序;图8表示预取时高速缓存100内指令读出和执行的顺序;图9表示按照本发明第二实施例的高速缓存系统的构成;图10是表示分支目的地址的低2位为“HH”时高速缓存100内指令读出和执行的顺序;图11表示指令队列18的状态变迁;图12表示按照本发明第三实施例的高速缓存系统的构成;图13表示寄存器编号一致时高速缓存100内指令和操作数数据的读出和执行的顺序;
图14表示寄存器编号不一致时高速缓存100内指令和操作数数据的读出和执行的顺序;图15表示按照本发明第四实施例的高速缓存系统的构成;图16表示CPU时钟频率高时指令高速缓存98内指令的读出的执行的顺序;图17表示CPU时钟频率高时指令高速缓存98内的指令和数据高速缓存99内的操作数数据的读出和执行的顺序;图18表示CPU时钟频率低时指令高速缓存98内指令的读出的执行的顺序;图19表示CPU时钟频率低时指令高速缓存98内的指令和数据高速缓存99内的操作数数据的读出和执行的顺序;图20表示分支目的地址的低2位为“HH”时指令高速缓存100内指令的读出和执行的顺序的变形例;图21表示分支目的地址的低2位为“HH”时指令高速缓存100内指令的读出和执行的顺序的变形例。
具体实施例方式
以下将利用

本发明的实施例。
(第一实施例)(结构)图1所示的高速缓存100以双路径设置相联方式构成。参照该图,高速缓存100包括标记存储器1、比较器920、921、未命中判定装置3、高速缓存访问模式切换部9、数据存储器4、锁存器回路6和选择器5。
标记存储器1是地址存储器,包括两个作为地址阵列的标记路径0和标记路径1。保存使标记路径0、标记路径1与索引地址对应的标记地址。
用标记路径0的索引地址指定的标记地址,表示用后述的数据路径0的同一个索引地址指定的数据高位地址。同样地,用标记路径1的索引地址指定的标记地址,表示用数据路径1的同一个索引地址指定的数据高位地址。
标记路径0、标记路径1输入作为所指定的地址的低位地址的索引地址,输出与该索引地址对应的标记地址。
在标记路径0和标记路径1上,输入标记使能信号。标记路径0和标记路径1在标记使能信号为“H”电平时动作,在标记使能信号为“L”电平时不动作。
比较器920把从标记路径0输出的标记地址与作为所指定的地址的高位地址的标记地址加以比较,一致时把TagHitWay0(标记命中路径0)设置为“H”电平,以表示数据路径0所指定的地址的数据存在,就是说,表示命中了;不一致时把TagHitWay0(标记命中路径0)设置为“L”电平,以表示数据路径0所指定的地址的数据不存在,就是说,表示未命中。
比较器921把从标记路径1输出的标记地址与作为所指定的地址的高位地址的标记地址加以比较,一致时把TagHitWay1(标记命中路径1)设置为“H”电平,以表示数据路径1所指定的地址的数据存在,就是说,表示命中了;不一致时把TagHitWay1(标记命中路径1)设置为“L”电平,以表示数据路径1所指定的地址的数据不存在,就是说,表示未命中。
未命中判定装置3在TagHitWay0=“L”,而且TagHitWay1=“L”时,向CPU120输出表示数据路径0和数据路径1所指定的地址的数据不存在的未命中信号。CPU120收到未命中信号时,把高速缓存输出的数据按无效数据处理。
数据存储器4包含作为两个数据阵列的数据路径0和数据路径1。数据路径0和数据路径1保存与索引地址对应的数据。在这里,所谓数据是指指令和操作数数据。记为数据时,可能指指令和操作数数据中的一个。
保存在数据路径0的数据作为对应的索引地址的低位地址,与标记路径0内的同一索引地址对应而保存的标记地址是作为高位地址的数据。
同样地,保存在数据路径1的数据是这样一种数据,它把对应的索引地址作为低位地址,把与标记路径1内的同一索引地址对应而保存的标记地址作为高位地址。
在数据路径0和数据路径1上输入索引地址。
数据路径0在从高速缓存访问模式切换部9输出的Way0Enable为“H”电平时,把与输入的索引地址对应的数据输出到选择器5。数据路径0在Way0Enable为“L”电平时,不动作。
数据路径1在从高速缓存访问模式切换部9输出的Way1Enable为“H”电平时,把与输入的索引地址对应的数据输出到选择器5。数据路径1在Way1Enable为“L”电平时,不动作。
高速缓存访问模式切换信号从外部送到高速缓存访问模式切换部9。高速缓存访问模式切换信号为“H”电平时,高速缓存100以单周期访问模式执行动作,高速缓存访问模式切换信号为“L”电平时,高速缓存100以双周期访问模式执行动作。
如图2所示,高速缓存访问模式切换部9包括锁存器910、911、选择器930、931、94。
锁存器910把比较器920输出的TagHitWay0延迟1/2周期后输出。
锁存器911把比较器921输出的TagHitWay1延迟1/2周期后输出。
选择器930在高速缓存访问模式切换信号为“H”电平时,输出“H”电平信号作为Way0Enable。
选择器930在高速缓存访问模式切换信号为“L”电平时,把锁存器回路910输出的信号作为Way0Enable,亦即把比较器920输出的TagHitWay0延迟1/2周期的信号输出。这样,数据路径0动作周期比标记存储器1动作的周期晚1个周期。
选择器931在高速缓存访问模式切换信号为“L”电平时,输出“H”电平信号作为Way1Enable。
选择器931在高速缓存访问模式切换信号为“L”电平时,把锁存器回路911输出的信号作为Way1Enable,亦即把比较器921输出的TagHitWay1延迟1/2周期的信号输出。这样,数据路径1动作周期比标记存储器1动作的周期晚1个周期。
如上所述,通过选择器930和931,在双周期访问模式下,标记存储器1动作(访问)的周期,变得比数据存储器4动作(访问)的周期早一个周期。因此,以双周期从高速缓存100输出数据。另一方面,在单周期访问模式下,标记存储器1动作(访问)的周期,变得比数据存储器4动作(访问)的周期早1/2周期。因此,以单周期从高速缓存100输出数据。
选择器94在高速缓存访问模式切换信号为“L”电平时,输出Way1Enable作为WaySelect。之所以如此,是因为在高速缓存访问模式切换信号为“L”电平时,数据路径1被选择时,Way1Enable比标记存储器1的访问周期晚1/2周期,就是说,在数据存储器4的访问周期的1/2周期之前变为“H”电平。
选择器94在高速缓存访问模式切换信号为“H”电平时,输出TagHitWay1作为WaySelect。之所以如此,是因为在高速缓存访问模式切换信号为“H”电平时,数据路径1被选择时,TagHitWay1在与标记存储器1的访问周期处于同一周期的数据存储器4的访问周期内变为“H”电平。
锁存器6保持从选择器94输出的WaySelect。
选择器5在锁存器6输出的信号为“L”电平时,输出数据路径0输出的数据,锁存器6输出的信号为“H”电平时,输出数据路径1输出的数据。
(双周期访问模式下的动作)接着,采用如图3所示的时序图,说明双周期访问模式下高速缓存100的动作。
参照该图,在双周期访问模式下,以标记访问周期和数据访问周期的两个周期,从高速缓存100输出数据。
首先,在标记访问周期的前半段,对标记存储器1进行访问,分别从标记路径0和标记路径1输出标记地址。
比较器920把标记路径0输出的标记地址与外部指定的标记地址加以比较,若一致,则设置TagHitWay0=“H”,若不一致,则设置TagHitWay0=“L”。比较器921把标记路径1输出的标记地址与外部指定的标记地址加以比较,若一致,则设置TagHitWay1=“H”,若不一致,则设置TagHitWay1=“L”。因此,在高速缓存的数据存储器4中,指定地址的数据存在时,把TagHitWay0和TagHitWay1中的一个设置为“H”,指定地址的数据不存在时,把TagHitWay0和TagHitWay1中的一个设置为“L”。
接着,在标记访问周期的后半段,若TagHitWay0=“H”,则设置Way0Enable=“H”,若TagHitWay1=“H”,则设置Way1Enable=“H”。
接着,在数据访问周期的前半段,若Way0Enable=“H”,则在数据路径0进行访问并输出数据,若Way1Enable=“H”,则在数据路径1进行访问并输出数据。
这样,在双周期访问模式下,以单周期对标记存储器进行访问,在第二周期对数据存储器进行访问。此时,数据路径0和数据路径1中任何一方动作,另一方不动作,故消耗电力少。
(单周期访问模式下的动作)接着,采用图4所示的时序图,说明单周期访问模式下高速缓存100的动作。
参照该图,在单周期访问模式下,以单周期的标记和数据访问周期,从高速缓存100输出数据。
首先,在标记和数据访问周期的前半段,对标记存储器1进行访问,分别从标记路径0和标记路径1输出标记地址。
比较器920把标记路径0输出的标记地址与外部指定的标记地址加以比较,若一致,则设置TagHitWay0=“H”,若不一致,则设置TagHitWay0=“L”。比较器921把标记路径1输出的标记地址与外部指定的标记地址加以比较,若一致,则设置TagHitWay1=“H”,若不一致,则设置TagHitWay1=“L”。这样,在高速缓存的数据存储器4中,指定地址的数据存在时,把TagHitWay0和TagHitWay1中的一个设置为“H”,指定地址的数据不存在时,把TagHitWay0和TagHitWay1中的一个设置为“L”。
与比较器920和921进行的上述处理并行,在同一周期,设定Way0Enable=“H”,而且Way1Enable=“H”。
接着,在标记和数据访问周期的后半段,在数据路径0和数据路径1进行访问并输出数据。
选择器5根据TagHitWay1的值相应地确定WaySelect的值,对数据路径0或数据路径1输出的数据进行选择。
这样,在一个周期中进行单周期标记存储器访问和数据存储器访问。在这种情况下,数据路径0和数据路径1两者同时动作,故消耗电力多。
接着,说明采用这样的高速缓存的高速缓存系统。
图5所示的高速缓存系统200包括高速缓存100、CPU(处理器)120、指令队列18、队列控制部31和分支预取判定部17。
该高速缓存系统200采用多指令同时执行的流水线处理。
高速缓存100如上述图1所示。高速缓存100中流水线IF1阶段上,以指令地址指定的数据(指令)进行标记存储器访问和数据存储器访问,从高速缓存100输出指令。该IF1阶段,在双周期访问模式下,变为两个周期,在单周期访问模式下,变为一个周期。在该高速缓存100中,同时输出共用去除了从外部输入的指令地址的低两位的高位地址的4个指令。
指令队列18包括队列0和队列1。在各队列中,在流水线IF2阶段(双周期前半段的一个周期),写入从高速缓存输出的指令。
各队列最多保存4个指令。各队列中输出该队列的末指令后从高速缓存100同时送来4个指令。在各队列中,从头开始顺序存入低位地址的两位为“LL”、“LH”、“HL”、“HH”的指令。
若各队列的末指令向CPU120输出,则从其他队列向CPU120输出指令。就是说,队列0的末指令输出之后,从队列1输出指令。队列1的末指令输出之后,从队列0输出指令。各队列中的指令,通常从头开始顺序输出。就是说,顺序输出低位地址两位为“LL”、“LH”、“HL”、“HH”的指令。因此,将低位地址两位为“LL”的指令称为首指令,低位地址两位为“LH”的指令称为第二指令,低位地址两位为“HL”的指令称为第三指令,低位地址两位为“HH”的指令称为末指令。其中,执行分支指令后,与上述顺序无关,从队列输出分支目的地址指令。
队列控制部31控制保存在指令队列18各队列中的指令的输出。队列控制部31在各队列的末指令输出时,向分支预取判定部17输出预取请求信号。
队列控制部31收到分支请求信号时,删除保存在指令队列18内所有队列的指令。
CPU(处理器)120对指令进行流水线处理。就是说,CPU120在IF2阶段(双周期的后半段的一个周期)从队列读出指令,在DEC阶段对指令进行译码、在Exe阶段执行指令,在WB阶段把执行结果存入寄存器。其中,关于该WB阶段,在无须把执行结果存入寄存器的指令中,例如在分支指令中,该WB阶段被省略。
CPU120执行分支指令后,向分支预取判定部17和队列控制部31输出分支请求信号。
另外,CPU120执行分支指令后,清除流水线。就是说,CPU120对于该分支指令的后续处理中的指令,不再执行已经进行的处理。
分支预取判定部17没有收到分支请求信号或预取请求信号中任何一个时,把标记使能信号设置为“L”电平,把高速缓存访问模式切换信号设置为“L”电平。在这种情况下,高速缓存100内的标记存储器1和数据存储器4中任何一个都不动作。
分支预取判定部17收到分支请求信号时,把标记使能信号设置为“H”。在这种情况下,高速缓存100在单周期访问模式下动作,以单周期输出来自高速缓存100的指令。执行分支指令后,清除流水线,并清除指令队列部18的所有队列,所以这样以单周期输出指令,可缩短执行分支指令后到执行下一条指令为止的等待时间。
分支预取判定部17收到预取请求信号时,把标记使能信号设置为“H”电平,把高速缓存切换信号设置为“L”。在这种情况下,高速缓存100在双周期访问模式下动作,以双周期从高速缓存100输出指令。这是因为,即使一个队列空了,其他队列内仍存有4个指令。就是说,以双周期向空队列输出指令期间,进行其他队列内4个指令的处理,所以不会发生流水线停顿。
(平时的动作)图6表示分支和预取以外的一般动作时,高速缓存100内指令读出和执行的顺序。参照该图,在第一周期,进行队列访问,读出指令,在第二周期,进行指令译码,在第三周期执行指令,在第四周期,把执行结果存入CPU内部寄存器。对多个指令的上述流水线处理是以每隔一个周期的形式同时进行的。
(分支时的动作)图7表示分支时高速缓存100内的指令读出和执行顺序。参照该图,如(1)所示,CPU120执行分支指令之后,如(2)所示,在清除流水线的同时,清除指令队列18。此后,CPU120向分支预取判定部17输出分支请求信号。分支预取判定部17把标记使能信号设置为“H”电平,把高速缓存访问模式切换信号设置为“H”电平。以此使高速缓存100如(3)所示在单周期访问模式下动作,以单周期从高速缓存100输出指令。
(预取时的动作)图8表示预取时高速缓存100内指令的读出和执行顺序。参照该图,如(1)所示,CPU120读出队列0内的末指令。队列控制部31在输出队列0的末指令时,向分支预取判定部17输出预取请求信号。分支预取判定部17把标记使能信号设置为“H”电平,把高速缓存访问模式切换信号设置为“L”。这样,高速缓存100如(2)所示,以双周期访问模式动作,以双周期从高速缓存100输出指令。
另外,若队列0的末指令输出,则如(3)所示,顺序地对队列1内的4个指令进行处理。执行队列1内的末指令后,转而执行队列0内的指令,由于队列1内有4条指令保存着,所以如(2)所示,即使高速缓存100在双周期访问模式下动作,也不会出现流水线停顿。
如上所述,在CPU120对多个指令进行流水线处理的情况下,在执行分支指令之后,若使高速缓存100在双周期访问模式下动作(也可以使之在单周期访问模式下动作),会出现流水线停顿。因此,采用本实施例的高速缓存系统,可使高速缓存100在单周期访问模式下动作,故可缩短指令执行的等待时间。
另外,发生预取时,在其他队列内仍保存有3个以上的指令,所以即使高速缓存100在双周期访问模式下动作,也不会发生流水线停顿,故可使高速缓存100在双周期访问模式下动作,以便在低电力消耗下动作。
第二实施例图9所示的高速缓存系统300包括高速缓存100、CPU130、指令队列18、队列控制部31和分支预取判定部19。本实施例的高速缓存系统与图5所示的第一实施例的高速缓存系统具有共同的部分。在图9构成要素中,与图5相同的构成要素均标以与图5相同的号码。下面仅就不同的部分作一说明。
CPU130执行分支指令后,向分支预取判定部19和队列控制部31输出分支请求信号,同时向分支预取判定部19输出分支目的地址信号。
分支预取判定部19没有收到分支请求信号或预取请求信号中的任何一个时,把标记使能信号设置为“L”电平,把高速缓存访问模式切换信号设置为“L”电平。在这种情况下,高速缓存100内的标记存储器1和数据存储器4中任何一个都不动作。
分支预取判定部19收到分支请求信号时,检查与该信号同时接收的分支目的地址的低2位的值,当其值为“HH”时,把预取模式标志20设置为“H”。于是,分支预取判定部19与第一实施例相同,把标记使能信号设置为“H”电平,把高速缓存访问模式切换信号设置为“H”电平。在这种情况下,高速缓存100在单周期访问模式下动作,以单周期从高速缓存100输出指令。
分支预取判定部19收到预取请求信号时,检查预取模式标志的值。
分支预取判定部19在预取模式标志为“L”时(亦即,执行分支指令之后,但分支目的地址低2位不为“HH”时,或者没有执行分支指令时),与第一实施例相同,把标记使能信号设置为“H”电平,把高速缓存访问模式切换信号设置为“L”电平。在这种情况下,高速缓存100在双周期访问模式下动作,以双周期从高速缓存100输出指令。
分支预取判定部19在预取模式标志为“H”时(亦即,执行分支指令,分支目的地址低2位为“HH”时),把标记使能信号设置为“H”电平,把高速缓存访问模式切换信号设置为“H”电平。在这种情况下,高速缓存100在单周期访问模式下动作,以单周期从高速缓存100输出指令。在单周期访问模式下动作,分支目的地址低2位为“HH”时,该分支目的地址所指定的指令,变为队列内的末指令。所述指令执行后,队列内不存在后续指令,所以必须从高速缓存100取出后续的指令。
然后,分支预取判定部19输出高速缓存访问模式切换信号之后,处于预取模式标志初始状态的“L”。
(分支目的地址低2位的值为“HH”时的动作)图10表示分支目的地址为“HH”时高速缓存100内的指令读出和执行顺序。图11表示指令队列18的状态变迁。
如图10(1)所示,CPU130中执行分支指令后,如图10(2)所示,随着清除流水线,还清除指令队列18。在图11(1)中,表示此时的指令队列18的状态。
CPU130向分支预取判定部19输出分支请求信号和低2位值为“HH”的分支目的地址。分支预取判定部19由于分支目的地址低2位为“HH”,所以把预取模式标志置为“H”。分支预取判定部19把标记使能信号设置为“H”电平,把高速缓存访问模式切换信号设置为“H”电平。以此使高速缓存100如图10(3)所示,在单周期访问模式下动作,以单周期从高速缓存输出指令。图11(2)表示此时指令队列18的状态。
CPU130如图10(4)所示,读出队列0内分支目的地址指令,亦即作为队列0内的末指令的地址低2位为“HH”的指令。图11(3)表示队列0内末指令读出前指令队列的状态,图11(4)表示队列0内末指令读出后指令队列的状态。
队列控制部31在输出作为队列0内末指令的地址低2位为“HH”的指令时,向分支预取判定部19输出预取请求信号。
由于所设置的预取模式标志为“H”,分支预取判定部19将标记使能信号设置为“H”电平,将高速缓存访问模式切换信号设置为“H”电平。以此使高速缓存100如10(5)图所示,在单周期访问模式下动作,以单周期从高速缓存100输出指令。图11(5)表示此时指令队列18的状态。
如上所述,CPU对多个指令进行流水线处理时,包含于分支指令的分支目的地址低2位为“HH”时,执行分支指令后,分支目的地址指令被存为队列内的末指令,故该分支目的地址指令从队列输出后,若使高速缓存100在双周期访问模式下动作,则会发生流水线停顿。因此,采用本实施例的高速缓存系统可使高速缓存100在单周期访问模式下动作,可以缩短指令执行的等待时间。
(第三实施例)图12所示的高速缓存系统400包括指令高速缓存98、数据高速缓存99、CPU140和寄存器编号一致判定部21。本实施例的高速缓存系统,与图5所示的第一实施例的高速缓存系统有共同的部分。在图12的构成要素中,与图5相同的构成要素均标以与图5构成要素相同的号码。以下只说明不同的部分。
在本实施例中,高速缓存分成存储指令的指令高速缓存98和存储数据的数据高速缓存99。
在DEC阶段对指令进行译码时,若该指令是把数据保存在寄存器的加载指令,则CPU140将表示包含于该指令的寄存器编号的存储寄存器编号信号输出到寄存器编号一致判定部21。
当加载指令之后(不限于紧跟在其后的)的指令在DEC阶段进行译码时,若该指令是参照寄存器内的数据的参照指令,则CPU140把表示该指令所包含的寄存器编号的参照寄存器编号信号输出到寄存器编号一致判定部21。
寄存器编号一致判定部21在从CPU140送来的存储寄存器编号和参照寄存器编号一致时,把高速缓存访问模式切换信号置为“H”。
寄存器编号一致判定部21在存储寄存器编号与参照寄存器编号不一致时,把高速缓存访问模式切换信号置为“L”。
(寄存器编号一致时的动作)图13表示寄存器编号一致时,指令高速缓存98内的指令和数据高速缓存99内的操作数数据的读出和执行顺序。
参照该图,首先,如图(1)所示,CPU140对加载指令进行译码时,把存储寄存器编号送入寄存器编号一致判定部21。接着,如(2)所示,CPU140参照指令被译码时,参照寄存器编号送入寄存器编号一致判定部21。由于存储寄存器编号与参照寄存器编号一致,所以处于“H”电平的高速缓存访问模式切换信号送往数据高速缓存99。数据高速缓存99如(3)所示,在单周期访问模式下动作,以单周期从数据高速缓存99输出操作数数据。
(寄存器编号不一致时的动作)图14表示寄存器编号不一致时,指令高速缓存98内的指令和数据高速缓存98的操作数数据的读出和执行的顺序。
参照该图,首先,如(1)所示,CPU140对加载指令进行译码时,把存储寄存器编号送到寄存器编号一致判定部21。接着,如(2)所示,CPU140对参照指令进行译码时,把参照寄存器编号送往寄存器编号一致判定部21。由于存储寄存器编号与参照寄存器编号不一致,所以把处于“L”电平的高速缓存访问模式切换信号送往数据高速缓存99。数据高速缓存99如(3)所示,在双周期访问模式下动作,以双周期从数据高速缓存99输出操作数数据。
如上所述,当把数据存入寄存器的指令中所包含的存储寄存器编号与在后续于加载指令的指令中参照寄存器内的数据的指令中所包含的参照寄存器编号一致时,若数据高速缓存99在双周期访问模式下动作,(也可以在单周期访问模式下动作),则会发生流水线停顿。因此,若采用本实施例的高速缓存系统,则在单周期访问模式下动作,可缩短指令等待时间。
另一方面,存储寄存器编号与参照寄存器编号不一致时,即使在双周期访问模式下动作,也不会发生流水线停顿,所以可通过使数据高速缓存99在双周期访问模式下动作,以便能在低电力消耗下动作。
(第四实施例)图15所示的高速缓存系统500包括高速缓存100、CPU150、时钟频率设定部51和时钟频率判定部22。本实施例的高速缓存系统与图5所示的第一实施例的高速缓存系统具有共同的部分。在图15的构成要素中,与图5具有同一构成要素均标以图5构成要素相同的号码。以下仅就不同的部分作一说明。
在本实施例中,高速缓存分成保存指令的指令高速缓存98和保存数据的数据高速缓存99。
时钟频率设定部51在设定寄存器中设定高的和低的时钟频率。
CPU150具有时钟换档功能,运行于保存在设定寄存器52中的设定时钟频率。
时钟频率判定部22在从设定寄存器52输出的时钟频率设定值信号显示高的时钟频率时,把高速缓存访问模式切换信号设定为“H”电平。这样,指令高速缓存98和数据高速缓存99在单周期访问模式下动作。
时钟频率判定部22在从设定寄存器52输出的时钟频率设定值信号显示低的时钟频率的情况下,把高速缓存访问模式切换信号设定为“L”电平。这样,指令高速缓存98和数据高速缓存99在双周期访问模式下动作。
(时钟频率高时的动作)图16表示CPU时钟频率高时指令高速缓存98内的指令的读出和执行顺序。
参照该图,指令高速缓存98如(1)所示,在单周期访问模式下动作,以单周期从指令高速缓存输出指令。
图17表示CPU时钟频率高时指令高速缓存98内的指令和数据高速缓存99内的操作数数据的读出和执行顺序。
参照该图,指令高速缓存98如(1)所示,在单周期访问模式下动作,以单周期从指令高速缓存输出指令。另外,数据高速缓存99如(2)所示,在单周期访问模式下动作,以单周期从数据高速缓存99输出操作数数据。
(时钟频率低时的动作)图18表示CPU时钟频率低时指令高速缓存98内的指令的读出和执行顺序。
参照该图,指令高速缓存98如(1)所示,在双周期访问模式下动作,以双周期从指令高速缓存98输出指令。
图19表示CPU时钟频率低时指令高速缓存98内的指令和数据高速缓存99内的操作数数据的读出和执行顺序。
参照该图,指令高速缓存98如(1)所示,在双周期访问模式下动作,以双周期从指令高速缓存输出指令。另外,数据高速缓存99如(2)所示,在双周期访问模式下动作,以双周期从数据高速缓存99输出操作数数据。
如上所述,若采用本实施例的高速缓存系统,则CPU在高的时钟频率下运行时,由于数据高速处理优先于电力消耗,故使其在单周期访问模式下动作,以此能够对高速缓存内的数据进行高速处理。
另一方面,CPU在低的时钟频率下运行时,由于电力消耗优先于数据高速处理,故使其在双周期访问模式下运行,以此高速缓存能在低的电力消耗下运行。
(变形例)本发明不限于上述实施例,当然也包括以下的变形例。
(1)在第三实施例中,作为分支目的地址指令的队列0内的末指令从队列0输出后,发生预取请求信号,以该信号作为触发信号,进行预取,但不限于此。
图20表示分支目的地址的低2位为“HH”时,高速缓存100内的指令的读出和执行的顺序。
在该图中,处理队列0内的分支指令的顺序,和预取多个指令至队列0、处理分支目的地址指令即队列0内的末指令的顺序,与图10所示者相同。
在该变形例中,如该图的(4)所示,以分支指令的执行作为触发信号,从分支指令执行的周期起两个周期后,使预取请求信号发生。这是因为,从队列0读出分支目的地址指令的阶段,和把预取的指令写入队列0的阶段不重复,指令不会消失。故可缩短流水线的处理等待时间。
(2)在第三实施例中,分支目的地址的低2位为“HH”时,分支目的地址指令从队列0输出后,分支目的地址指令的后续指令从高速缓存输出到队列0,但不限于此。
图21表示分支目的地址的低2位为“HH”时高速缓存100内的指令的读出和执行顺序的变形例。
在该图中,处理队列0内分支指令的顺序,和预取多条指令至队列0、处理分支目的地址指令即队列0内的末指令的顺序,与图10所示相同。
在该变形例中,如该图的(4)所示,以分支指令为触发信号,从分支指令执行周期起一个周期后,发生预取至队列1的预取请求信号。这是因为,队列1处于分支指令执行后清除的空白状态,所以即使分支目的地址指令的后续指令从高速缓存输出到队列1,指令也不会消失。故可防止流水线停顿。
(3)在第四实施例中,CPU在高低两种时钟频率的切换下动作,但是不限于此。CPU也可以在3种以上的时钟频率的切换下动作。在这种情况下,也可以在CPU运行于预定值以上的时钟频率时,使高速缓存在单周期访问模式下动作,CPU在不足预定值的时钟频率下动作时,在双周期访问模式下动作。
例如,CPU在3种时钟频率的切换下动作时,也可以在CPU高速和中速动作时,使高速缓存在单周期访问模式下动作,CPU在低速下动作时,使高速缓存在双周期访问模式下动作。或者,也可以在CPU在高速下动作时,使高速缓存在单周期访问模式下动作,而在中速和低速下动作时,使高速缓存在双周期访问模式下动作。
(4)在本发明的实施例中,指令队列18由队列0和队列1构成来说明的,但不限于此,由3个以上的队列构成亦可。
(5)在本发明的实施例中,从高速缓存输出的指令,存入指令队列18,但是在不进行预取的情况下,从高速缓存100输出的指令也可以直接取入CPU。
(6)在第一和第二实施例中,高速缓存100同时输出4条指令,各队列最多保存4条指令,但不限于此。
在第一实施例中,高速缓存100也可以同时输出3条指令,各队列最多保存3条指令。即使在这种情况下,预取时可使高速缓存100在单周期访问模式下动作。
另外,在第二实施例中,高速缓存也可以同时输出2个以上的指令,各队列最多保存2条指令。在这种情况下,也可以根据构成分支目的地址的预定的位值,在把分支目的地址指令保存入队列时,判定该指令是否末指令。
权利要求
1.一种高速缓存系统,它具有高速缓存,它在被访问时,具有在第一周期执行输出存储数据的动作的第一访问模式和在比第一周期长的第二周期执行输出存储数据的动作的第二访问模式;处理器,对所述高速缓存内的数据执行流水线处理;访问模式控制部,根据在所述各访问模式下运行时有无流水线处理停顿,对所述高速缓存输出指示在所述第一访问模式下执行动作的第一访问模式信号和指示在所述第二访问模式下执行动作的第二访问模式信号中的一个。
2.权利要求1所述的高速缓存系统,其特征在于,所述处理器在执行分支指令之后输出分支请求信号,与此同时为后续指令清除流水线的处理,所述访问模式控制部在收到所述分支请求信号时,输出所述第一访问模式信号。
3.权利要求2所述的高速缓存系统,其特征在于,包括多个队列,保存从所述高速缓存输出的指令;以及队列控制部,在输出各队列内的末指令时输出预取请求信号,所述高速缓存同时把至少3个以上的指令输出到一个队列,所述访问模式控制部在收到所述预取请求信号时,输出所述第二访问模式信号。
4.权利要求2所述的高速缓存系统,其特征在于,包括多个队列,保存从所述高速缓存输出的指令;以及队列控制部,在输出各队列内的末指令时输出预取请求信号,所述高速缓存同时把多个指令输出到一个队列,所述处理器从所述队列读出指令并执行,执行分支指令后,再输出分支目的地址,所述访问模式控制部在收到分支目的地址、该分支目的地址指令存入指令队列并变为队列内的末指令时,设置标志,所述访问模式控制部在收到预取请求信号时,在所述标志已经设定的情况下,输出所述第一访问模式信号,在该输出后解除所述标志。
5.权利要求1所述的高速缓存系统,其特征在于,所述处理器对把存储器中的数据存入寄存器的指令执行译码后,输出该指令所包含的存储寄存器的编号,对所述指令的后续指令,即参照寄存器中的数据的指令执行译码后,输出该指令中所包含的参照寄存器的编号,所述访问模式控制部在收到所述存储寄存器的编号和所述参照寄存器编号时,判定所述存储寄存器的编号和所述参照寄存器的编号是否一致,一致时,输出所述第一访问模式信号,不一致时,输出所述第二访问模式信号。
6.权利要求1所述的高速缓存系统,其特征在于,所述高速缓存,在所述第一访问模式下,在所述第一周期中执行使多个路径同时动作、输出多个数据、选择其中一个并输出的处理,在所述第二访问模式下,在所述第二周期中执行选择多个路径中的一个、只让选中的路径动作、输出数据的处理。
7.一种高速缓存控制装置,用于控制高速缓存,所述高速缓存在被访问时,具有在第一周期执行输出存储数据的动作的第一访问模式和在比第一周期长的第二周期执行输出存储数据的动作的第二访问模式;所述高速缓存控制装置具有判定部,对从多种时钟频率中选择其中一种频率进行动作的处理器是在预定值以上的时钟频率下动作还是在不足所述预定值的时钟频率下动作进行判定,所述处理器是对所述高速缓存内的数据执行处理的处理器;访问模式控制部,当所述判定部判定所述处理器在所述预定值以上的时钟频率下动作时,输出指示第一访问模式的第一访问模式信号,当所述判定部判定所述处理器在不足所述预定的时钟频率下动作时,输出指示第二访问模式的第二访问模式信号。
8.权利要求7所述的高速缓存控制装置,其特征在于,所述高速缓存,在所述第一访问模式下,在所述第一周期中执行使多个路径同时动作、输出多个数据、从其中选择一个并输出的处理;在第二访问模式下,在所述第二周期中执行从多个路径中选择一个、只让该选中的路径动作、输出数据的处理。
全文摘要
分支预取判定部(17)在收到分支请求信号时,把高速缓存访问模式切换信号设置为“H”电平。这样,高速缓存(100)便在电力消耗高的单周期访问模式下动作。分支预取判定部(17)在收到预取请求信号时,把高速缓存访问模式切换信号设置为“L”电平。这样,高速缓存(100)便在电力消耗低的双周期访问模式下动作。
文档编号G06F9/32GK1503142SQ0315941
公开日2004年6月9日 申请日期2003年9月19日 优先权日2002年11月19日
发明者伊藤辉之, 奥村直人, 人 申请人:株式会社瑞萨科技
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1