数据处理装置.pdf

上传人:b*** 文档编号:469135 上传时间:2018-02-18 格式:PDF 页数:30 大小:6.48MB
返回 下载 相关 举报
摘要
申请专利号:

CN201280069647.9

申请日:

2012.02.14

公开号:

CN104106046A

公开日:

2014.10.15

当前法律状态:

实审

有效性:

审中

法律详情:

著录事项变更IPC(主分类):G06F 9/38变更事项:申请人变更前:瑞萨电子株式会社变更后:瑞萨电子株式会社变更事项:地址变更前:日本神奈川县变更后:日本东京都|||实质审查的生效IPC(主分类):G06F 9/38申请日:20120214|||公开

IPC分类号:

G06F9/38; G06F12/08

主分类号:

G06F9/38

申请人:

瑞萨电子株式会社

发明人:

石崎雅胜

地址:

日本神奈川县

优先权:

专利代理机构:

北京市金杜律师事务所 11256

代理人:

陈伟;王娟娟

PDF下载: PDF下载
内容摘要

根据一个实施方式,数据处理装置具有存储器、指令高速缓存、运算处理部(CPU)、取出处理控制部。存储器存储通过多个指令描述的程序。指令高速缓存仅在执行包含在程序中的分支指令时动作,从存储器读出并预先存储比存储器的总线宽度大的容量的数据。运算处理部向存储器以及指令高速缓存的双方访问,使从存储器或者指令高速缓存读出的指令在流水线中执行。取出处理控制部根据在运算处理部中执行的分支指令,生成用于停止从存储器读出指令的取出处理的停止信号,向存储器输出。

权利要求书

1.  一种数据处理装置,具有:
存储器,其存储通过多个指令描述的程序;
指令高速缓存,其仅在执行包含在所述程序中的分支指令时动作,从所述存储器读出并预先存储有比所述存储器的总线宽度大的容量的数据;
运算处理部,其向所述存储器以及所述指令高速缓存的双方访问,使从所述存储器或者所述指令高速缓存读出的指令在流水线中执行;以及
取出处理控制部,其根据在所述运算处理部执行的分支指令,生成用于停止取出处理的停止信号,并将该停止信号向所述存储器输出,其中,所述取出处理是从所述存储器读出指令的处理。

2.
  根据权利要求1所述的数据处理装置,其中,
所述指令高速缓存包含比较器,该比较器在所述运算处理部中执行分支指令时,比较向所述存储器访问的地址和预先存储的指令的地址,并在一致的情况下,判断为存储有相对于该分支指令来说的分支目标的指令,
所述取出处理控制部是停止处理部,在所述比较器判断为在所述指令高速缓存中存储有分支目标的指令的情况下,生成用于在将存储于所述指令高速缓存的指令读出的期间停止所述取出处理的停止信号,并将该停止信号向所述存储器输出。

3.
  根据权利要求2所述的数据处理装置,其中,
所述比较器对根据地址一致的指令而能够将存储在所述指令高速缓存中的指令读出的次数进行计数来作为命中量,
所述停止处理部包含计数器,该计数器通过将所述命中量作为初始值并进行递减计数,设定使向所述存储器的访问停止的期间。

4.
  根据权利要求2所述的数据处理装置,其中,
所述停止处理部在分支目标的指令再分支的情况下,取消使向所 述存储器的访问停止的处理。

5.
  根据权利要求2所述的数据处理装置,其中,
所述指令高速缓存具有所述存储器的总线宽度的N倍的容量,
所述停止处理部使向所述存储器访问的次数最大停止N-1次。

6.
  根据权利要求1所述的数据处理装置,其中,
所述运算处理部包含:
指令队列,其从所述存储器预先读出并存储指令;
指令解码器,其依次读出存储在所述指令队列的指令并对指令进行解码;
指令执行部,其执行在所述指令解码器中解码得到的指令;
指令取出接口部,其将来自所述指令队列的读出请求向所述存储器输出;以及
预解码器,其判断在所述指令解码器中接下来要解码的指令是否是分支指令,如果该指令是分支指令,则生成用于停止所述取出处理的停止信号,并将该停止信号向所述指令取出接口部输出,
所述取出处理控制部是所述预解码器。

7.
  根据权利要求6所述的数据处理装置,其中,
所述预解码器在使所述取出处理停止后,当所判断出的分支指令在所述指令执行部中执行时,再次开始所述取出处理。

8.
  根据权利要求6所述的数据处理装置,其中,
所述预解码器通过比较在所述指令解码器中接下来要解码的指令和预先存储的停止对象指令,来判断指令是否是分支指令。

9.
  根据权利要求6所述的数据处理装置,其中,
所述存储器在读出指令时需要预定的等待期间。

10.
  根据权利要求8所述的数据处理装置,其中,
所述预解码器在指令长度根据各指令而不同的情况下,根据通过在所述指令解码器中解码指令的结果所得到的指令长度,从所述指令队列选择并读出接下来要解码的指令。

11.
  根据权利要求10所述的数据处理装置,其中,
所述预解码器具有关于所读出的多个指令分别并行判断是否是分支指令的多个子预解码器。

12.
  根据权利要求8所述的数据处理装置,其中,
所述预解码器按每个所述停止对象指令而附加有位信息,所述位信息使得即使在判断成所述指令解码器中接下来要解码的指令为分支指令的情况下,也不生成用于停止所述取出处理的停止信号。

13.
  根据权利要求1所述的数据处理装置,其中,
所述指令高速缓存包含比较器,该比较器在所述运算处理部中执行分支指令时,比较向所述存储器访问的地址和预先存储的指令的地址,并在一致的情况下,判断成存储有相对于该分支指令来说的分支目标的指令,
所述运算处理部包含:
指令队列,其从所述存储器预先读出并存储指令;
指令解码器,其依次读出存储在所述指令队列中的指令,并对指令进行解码;
指令执行部,其执行在所述指令解码器中解码得到的指令;以及
指令取出接口部,其将来自所述指令队列的读出请求向所述存储器以及所述指令高速缓存输出,
所述取出处理控制部包含:
停止处理部,其当所述比较器判断成在所述指令高速缓中存储有分支目标的指令的情况下,生成用于在将存储于所述指令高速缓存中的指令读出的期间停止所述取出处理的停止信号,并将该停止信号向所述存储器输出;以及
预解码器,其设置在所述运算处理部内,判断在所述指令解码器中接下来要解码的指令是否是分支指令,如果该指令是分支指令,则生成用于停止所述取出处理的停止信号,并将该停止信号向所述存储器输出。

说明书

数据处理装置
技术领域
本发明涉及数据处理装置,例如,涉及具有存储器和指令高速缓存(instruction cache)的数据处理装置,其中,所述存储器存储通过多个指令描述的程序,所述指令高速缓存仅在执行分支指令时动作。
背景技术
在CPU(Central Processing Unit:中央处理单元)等数据处理装置中,除了设有存储程序的存储器以外,还设有暂时存储程序的指令的指令高速缓存,以实现处理的高性能化。但是,数据处理装置在要执行的指令并未包含在指令高速缓存中的脱靶(miss)时,产生补偿(penalty)。为了实现数据处理装置的处理的高性能化,该补偿不能被忽略。因此,在数据处理装置中,提出有通过对存储器以及指令高速缓存的双方进行访问来避免补偿的构成。
此外,具有指令高速缓存的数据处理装置的构成在专利文献1(日本特开2008-052518号公报)以及专利文献2(日本特开2001-142698号公报)中公开。专利文献1中公开的CPU系统的动作条件是,CPU的动作速度是SDRAM的突发读取(burst read)时的动作速度以下。比较器在CPU处理分支指令时,判断在指令高速缓冲存储器中是否存储有分支目标的指令。当在指令高速缓冲存储器中存储有分支目标的指令的情况下,将该指令从指令高速缓冲存储器读出。
在专利文献2中公开的CPU中,采用如下存储器访问方式:在指令用存储器的访问的同时也进行主存储器的访问,无缝取出(fetch)来自指令用存储器的指令代码和来自主存储器的指令代码。
此外,在数据处理装置中,在从存储器预先读出并存储指令的指令队列中有空闲时,与执行指令无关地发生从存储器向指令队列读出 指令的取出处理。关于该取出处理,在专利文献3(日本2006-048258号公报)、专利文献4(日本特开平06-161750号公报)、专利文献5(日本特开2000-357090号公报)、以及专利文献6(日本特开平05-027972号公报)中公开。
在专利文献3公开的数据处理器中包含指令的取出控制部、保持通过取出控制部而被取出的指令的指令缓冲器、将保持在指令缓冲器中的指令按规定的顺序在流水线(pipeline)中执行的执行部。然后,取出控制部使用分支指令的指令地址,获得表示条件分支的预测方向和其准确度的预测信息,能够进行在条件分支指令中分支预测侧的指令的取出与分支非预测侧的指令的取出,同时根据预测信息选择性地停止分支非预测的指令的取出。
专利文献4公开的CPU设置有提前分支条件检查电路,该提前分支条件检查电路在针对分支指令的预取出定时,检测标记(tag)的状态,观察缓冲器或者条件代码中的零标志的内容,提前进行分支判断。
专利文献5公开的CPU为了缩短在基于条件分支指令而产生高速缓存脱靶时向主存储器的访问时间,内置有分支预测机构。
专利文献6公开的CPU使指令检测部介于指令队列与存储器之间,在指令队列读入的指令中含有分支指令的情况下,直至该分支指令的分支目标地址确定之前,暂停从存储器读出指令。
现有技术文献
专利文献
专利文献1:日本特开2008-052518号公报
专利文献2:日本特开2001-142698号公报
专利文献3:日本特开2006-048258号公报
专利文献4:日本特开平06-161750号公报
专利文献5:日本特开2000-357090号公报
专利文献6:日本特开平05-027972号公报
发明内容
但是,在现有的数据处理装置中,为了避免在要执行的指令未包含在指令高速缓存的脱靶时的补偿,向存储器以及指令高速缓存双方进行访问。因此,由于在现有的数据处理装置中,指令包含在指令高速缓存中而命中(hit)时也向存储器进行访问,存在总是会消耗向存储器以及指令高速缓存双方访问的电力这样的问题。
此外,在现有的数据处理装置中,在从存储器预先读出并存储指令的指令队列中有空闲时,与执行指令无关地发生从存储器读出指令的取出处理。因此,在现有的数据处理装置中,由于从存储器读出不需要的指令,所以因无用的存储器访问而消耗电力。特别是,在即将分支指令之前进行了取出处理的情况下,会从存储器读出根据分支的结果而不需要执行的指令,因此,存在因无用的存储器访问而导致电力消耗的问题。
其它的课题与新的特征将从本说明书的描述以及添加附图而得以明确。
用于解决课题的手段
根据一个实施方式,数据处理装置具有存储器、指令高速缓存、运算处理部、取出处理控制部。存储器存储通过多个指令描述的程序。指令高速缓存仅在执行包含在程序中的分支指令时动作,从存储器读出并预先存储比存储器的总线宽度大的容量的数据。运算处理部向存储器以及指令高速缓存的双方访问,使从存储器或者指令高速缓存读出的指令在流水线中执行。取出处理控制部根据在运算处理部中执行的分支指令,生成用于停止从存储器读出命令的取出处理的停止信号,向存储器输出。
发明效果
根据所述一个实施方式,数据处理装置能够减少用于向存储器访问的电力的消耗。尤其是,数据处理装置能够减少在向存储器以及指令高速缓存的双方访问时消耗的电力、用于从存储器读出根据分支的结果而不需要执行的指令的取出处理中消耗的电力。
附图说明
图1是表示实施方式1涉及的数据处理装置的构成的框图。
图2是表示实施方式1涉及的数据处理装置的指令高速缓存的进一步详细构成的框图。
图3表示实施方式1涉及的数据处理装置的停止处理部的进一步详细构成的框图。
图4是用于说明实施方式1涉及的数据处理装置的动作的时序图。
图5是用于说明实施方式1涉及的数据处理装置的基于分支通知而进行的动作的时序图。
图6是表示实施方式2涉及的数据处理装置的构成的框图。
图7是表示实施方式2涉及的数据处理装置的指令高速缓存的进一步详细构成的框图。
图8是用于说明实施方式2涉及的数据处理装置的动作的时序图。
图9是表示实施方式3涉及的数据处理装置的构成的框图。
图10是用于说明在不含有预解码器的构成的数据处理装置中预取出处理的时序的时序图。
图11是表示实施方式3涉及的数据处理装置的指令队列以及预解码器的构成的框图。
图12是用于说明实施方式3涉及的数据处理装置中预取出处理的时序的时序图。
图13是用于说明实施方式3涉及的数据处理装置中执行预取出处理的条件分支指令的情况下的时序的时序图。
图14是用于说明实施方式4涉及的数据处理装置中预取出处理的时序的时序图。
图15是表示实施方式5涉及的数据处理装置的指令队列以及预解码器的构成的框图。
图16是表示实施方式5的变形例涉及的数据处理装置的指令队列以及预解码器的构成的框图。
图17是表示实施方式6涉及的数据处理装置的预解码器的构成的框图。
图18是用于说明实施方式6涉及的数据处理装置中预取出处理的时序的时序图。
图19表示实施方式7涉及的数据处理装置的构成的框图。
图20是用于说明实施方式7涉及的数据处理装置的动作的时序图。
具体实施方式
以下,关于本发明涉及的实施方式参照附图进行说明。
(实施方式1)
图1是表示实施方式1涉及的数据处理装置的构成的框图。图1所示的数据处理装置100包含CPU1、存储器2、指令高速缓存3、以及停止处理部4,从CPU1向存储器2以及指令高速缓存3的双方访问,从存储器2或者指令高速缓存3读出指令(取出处理)。数据处理装置100向存储器2以及指令高速缓存3双方访问,由此减少高速缓存脱靶的补偿。
CPU1能够在流水线中执行从存储器2以及指令高速缓存3读出的指令。此外,CPU1在向存储器2以及指令高速缓存3访问时,向存储器2以及指令高速缓存3输出进行指令的读出的请求和读取目标的指令的地址。进而,CPU1在读出的指令为分支指令的情况下,输出分支通知。
存储器2存储通过多个指令描述的程序。存储器2基于来自CPU1的请求以及地址,将在该地址存储的指令向CPU1输出。用于从存储器2向CPU1输出指令的总线宽度为64位。
指令高速缓存3仅在执行包含在程序中的分支指令时动作,将比存储器2的总线宽度大容量的数据从存储器2读出并预先存储。具体 来说,指令高速缓存3能够存储相当于存储器2的总线宽度的2倍的128位的数据。然后,指令高速缓存3将所存储的数据分成64位的前半部分数据和64位的后半部分数据来存储。此外,存储在前半部分数据和后半部分数据中的指令是连续指令。
进而,指令高速缓存3将所存储的指令的地址作为TAG_ADDR信息而存储。此外,指令高速缓存3含有比较从CPU1请求的指令的地址和在TAG_ADDR信息中存储的地址的比较器31。
比较器31在CPU1中执行分支指令时,比较对存储器2进行访问的地址(从CPU1请求的指令的地址)和预先存储的指令的地址(TAG_ADDR信息中存储的地址)。然后,比较器31利用在指令高速缓存3中存储的指令的连续性,判断相对于从CPU1请求的指令的分支目标的指令存储在指令高速缓存3中。具体来说,比较器31在向存储器2访问的地址与存储在前半部分数据中的指令的地址一致的情况下,判断为分支目标的指令存储在后半部分数据中。
图2是表示实施方式1涉及的数据处理装置100的指令高速缓存3的进一步详细构成的框图。图2所示的比较器31包含地址比较/命中判断部311、命中量计数器312。地址比较/命中判断部311通过来自CPU1的请求而被起动,比较向存储器2访问的地址和存储在TAG_ADDR信息中的地址,在两地址一致的情况(命中时)下输出命中的信息,在不一致的情况(脱靶时)下,输出脱靶的信息。
命中量计数器312在向存储器2访问的地址与存储在前半部分数据中的指令的地址一致的情况下,输出命中量“2”。此外,命中量计数器312在向存储器2访问的地址与存储在后半部分数据中的指令的地址一致的情况下,输出命中量“1”。另外,命中量是表示CPU1能够向指令高速缓存3访问几次来读出数据的值。具体来说,在命中量为“2”的情况下,CPU1向指令高速缓存3进行2次访问而能够读出前半部分数据与后半部分数据。此外,在命中量“1”的情况下,CPU1向指令高速缓存3进行1次访问而仅能够读出后半部分数据。
停止处理部4在比较器31判断为在指令高速缓存3中存储有分 支目标的指令的情况下,生成用于在读出存储在指令高速缓存3中的指令的期间停止取出处理的停止信号,向存储器2输出。
图3是表示实施方式1涉及的数据处理装置100的停止处理部4的进一步详细构成的框图。停止处理部4包含剩余停止量计数器41。剩余停止量计数器41通过来自CPU1的请求而被起动,基于来自指令高速缓存3的命中或者脱靶的信息、命中量,设置剩余停止量计数器量,当该剩余停止量计数器量为“0”时生成停止信号,并向存储器2输出。
具体来说,剩余停止量计数器41根据来自指令高速缓存3的命中或者脱靶的信息、命中量而计算剩余停止量计数器量的初始值。例如,剩余停止量计数器41在从指令高速缓存3接收命中的信息和命中量“2”的情况下,将停止量计数器量设置为“1”,在从指令高速缓存3接收命中的信息和命中量“1”的情况下,将停止量计数器量设置为“0”。设置了初始值的剩余停止量计数器41在每次有来自CPU1的请求时,使停止量计数器量每次下降“1”。另外,在剩余停止量计数器41从CPU1接收分支信号的情况下,停止量计数器量无论是什么值都设为“0”,不生成停止信号。
另外,数据处理装置100使向存储器2以及指令高速缓存3双方访问并读出的指令在选择器5中选择某一方的指令,向CPU1读出。例如,选择器5在从存储器2以及指令高速缓存3读出的指令相同的情况下,选择从指令高速缓存3读出的指令,在从存储器2以及指令高速缓存3读出的指令不同的情况下,选择从存储器2读出的指令。
接下来,关于本实施方式1涉及的数据处理装置100的动作进行说明。图4是用于说明实施方式1涉及的数据处理装置100的动作的时序图。在图4所示的时序图中,分别示出了CPU1的时钟信号、读出目标地址、命中信息、命中量、停止信号、以及向存储器2的访问信号的波形。
针对CPU1的一个时钟信号而使读出目标的指令的地址的一个地址从CPU1向存储器2以及指令高速缓存3输出。在图4所示的例子 中,读出目标的指令的地址按地址A、地址A+1、地址A+2、地址A+3、地址A+4、以及地址A+5的顺序,从CPU1向存储器2以及指令高速缓存3输出。
首先,指令高速缓存3分别向前半部分数据存储地址A+1的指令,向后半部分数据存储地址A+2的指令。然后,比较器31在作为读出目标的指令的地址而接收到地址A+1的情况下,比较所接收的地址A+1和在TAG_ADDR信息中存储的地址。由于接收到的地址A+1与在前半部分数据中存储的指令的地址一致,所以比较器31能够通过指令的连续性判断存储在后半部分数据中的指令的地址为地址A+2。因此,比较器31将命中信息以及命中量“2”向停止处理部4输出。即,如图4所示,在读出目标的指令的地址是地址A+1的定时,命中信息为“H”电平,命中量为“2”。
由于在后半部分数据存储了地址A+2的指令,所以停止处理部4能够在从指令高速缓存3读出地址A+2的指令的期间停止向存储器2的访问。因此,剩余停止量计数器41在从比较器31(指令高速缓存3)接收到命中信息和命中量“2”时,将停止量计数器量设为“1”,在与向存储器2访问1次相当的期间,向存储器2输出停止信号。即,如图4所示,在读出目标的指令的地址为地址A+2的定时,停止信号设为“H”电平。
存储器2通过图1所示的运算处理部6而被输入对停止信号的反转信号和来自CPU1的请求的信号进行了AND运算而得到的信号作为向存储器2的访问信号。即,在来自CPU1的请求的信号为“H”电平,停止信号为“L”电平的情况下,向存储器2的访问信号为“H”电平,当停止信号为“H”电平时,向存储器2的访问信号为“L”电平。如图4所示,由于在读出目标的指令的地址为地址A+2的定时,停止信号为“H”电平,所以向存储器2的访问信号为“L”电平。
当向存储器2的访问信号为“L”电平时,停止从CPU1向存储器2的访问,数据处理装置100能够在从CPU1向存储器2的访问停 止的期间减少消耗电力。
如前所述,指令高速缓存3根据指令的连续性,分别向前半部分数据存储地址A+1的指令,向后半部分数据存储地址A+2的指令。但是,在CPU1执行地址A+1的指令的结果是在接下来要读出的指令的地址为地址B的情况下,不能停止从CPU1向存储器2的访问。因此,CPU1对停止处理部4输出分支通知,取消停止信号为“H”电平。
图5是用于说明实施方式1涉及的数据处理装置100的基于分支通知进行的动作的时序图。在图5所示的时序图中,分别示出CPU1的时钟信号、读出目标地址、命中信息、命中量、停止信号、以及向存储器2的访问信号的波形。
针对CPU1的一个时钟信号而使读出目标的指令的地址的一个地址从CPU1向存储器2以及指令高速缓存3输出。在图5所示的例子中,读出目标的指令的地址以地址A、地址A+1、地址B、地址B+1、地址B+2、以及地址B+3的顺序,从CPU1向存储器2以及指令高速缓存3输出。即,CPU1执行地址A+1的指令的结果是,接下来读出的指令的地址从地址A+2、地址A+3、地址A+4、以及地址A+5的顺序变更为地址B、地址B+1、地址B+2、以及地址B+3的顺序。
但是,指令高速缓存3按照指令的连续性,分别向前半部分数据存储地址A+1的指令,向后半部分数据存储地址A+2的指令。然后,比较器31在作为读出目标的指令的地址而接收到地址A+1的情况下,比较所接收的地址A+1和在TAG_ADDR信息中存储的地址。由于所接收的地址A+1与在前半部分数据中存储的指令的地址一致,所以比较器31通过指令的连续性而判断为在后半部分数据中存储的指令的地址为地址A+2。因此,比较器31将命中的信息以及命中量“2”向停止处理部4输出。即,如图5所示,在读出目标的指令的地址为地址A+1的定时,命中信息为“H”电平,命中量为“2”。
停止处理部4进行将停止信号向存储器2输出的处理。但是,当 地址A+1的指令分支成地址B的指令时,接下来从CPU1请求的指令的地址不是地址A+2,而是地址B。因此,若从CPU1向存储器2的访问停止,则CPU1进行高速缓存脱靶的补偿。因此,CPU1为了避免高速缓存脱靶,执行指令的结果是,在接下来读出的指令是分支的情况下,将分支通知向停止处理部4输出,取消使停止信号向存储器2输出的处理。即,如图5所示,在读出目标的指令的地址为地址A+2的定时,取消停止信号为“H”电平。
存储器2通过如图1所示的运算处理部6而被输入对停止信号的反转信号和来自CPU1的请求的信号进行了AND运算而得到的信号作为向存储器2的访问信号。因此,由于来自CPU1的请求的信号为“H”电平,停止信号为“L”电平,所以向存储器2的访问信号被维持为“H”电平的状态。
当向存储器2的访问信号被维持在“H”电平的状态时,不停止从CPU1向存储器2的访问,数据处理装置100从CPU1向存储器2和指令高速缓存3双方访问,能够减少高速缓存脱靶的补偿。
如以上那样,本实施方式1涉及的数据处理装置100在比较器31判断为向指令高速缓存3存储分支目标的指令的情况下,停止处理部4生成用于在读出存储于指令高速缓存3的指令的期间,停止取出处理的停止信号,向存储器2输出。因此,数据处理装置100在停止从CPU1向存储器2的访问的期间,能够减少消耗电力。
另外,在数据处理装置100中,关于使存储器2形成在与CPU1相同的半导体衬底上的情况(单芯片的半导体器件)进行了说明,但也可以使存储器2形成在存在于CPU1的外部的不同半导体衬底上。但是,在使存储器2形成在存在于CPU1的外部的不同半导体衬底上的情况下,数据处理装置100有必要设置用于连接CPU1与存储器2的CPU接口。
此外,数据处理装置100不限定于指令长度为固定的情况,也可以是指令长度可变的情况。
(实施方式2)
在实施方式1涉及的数据处理装置100中,关于包含能够存储相当于存储器2的总线宽度的2倍的数据的指令高速缓存3的构成进行了说明。但是,能够存储在指令高速缓存3中的数据的容量不限定于存储器2的总线宽度的2倍。因此,在本实施方式2涉及的数据处理装置中,关于包含与实施方式1相比能够存储的数据更大的指令高速缓存的构成进行说明。
图6是表示实施方式2涉及的数据处理装置的构成的框图。图6所示的数据处理装置200包含CPU1、存储器2、指令高速缓存3a、以及停止处理部4,从CPU1向存储器2以及指令高速缓存3a的双方访问,从存储器2或者指令高速缓存3读出指令(取出处理)。此外,对于数据处理装置200与实施方式1涉及的数据处理装置100相同的构成要素,标注相同的附图标记,不重复详细的说明。
指令高速缓存3a仅在执行包含在程序中的分支指令时动作,从存储器2读出并预先存储比存储器2的总线宽度大的容量的数据。具体来说,指令高速缓存3a能够存储相当于存储器2的总线宽度的4倍的256位的数据。然后,指令高速缓存3a将所存储的数据按每64位而分成D0数据、D1数据、D2数据、以及D3数据这4个数据来存储。另外,在D0数据~D3数据中存储的指令是连续指令。
进而,指令高速缓存3a将所存储的指令的地址存储为TAG_ADDR信息。此外,指令高速缓存3a包含比较器31a,该比较器31a比较从CPU1请求的指令的地址与存储在TAG_ADDR信息中的地址。
当在CPU1中执行分支指令时,比较器31a比较向存储器2访问的地址(从CPU1请求的指令的地址)与预先存储的指令的地址(存储在TAG_ADDR信息中的地址)。然后,比较器31a利用在指令高速缓存3a中存储的指令的连续性,判断相对于从CPU1请求的指令的分支目标的指令存储在指令高速缓存3a中。具体来说,比较器31a在向存储器2访问的地址与在D0数据中存储的指令的地址一致的情况下,判断为分支目标的指令存储在D1数据~D3数据中。
图7是表示实施方式2涉及的数据处理装置200的指令高速缓存3a的进一步详细构成的框图。图7所示的比较器31a包含地址比较/命中判断部311a、命中量计数器312a。地址比较/命中判断部311a通过来自CPU1的请求而被起动,比较向存储器2访问的地址与存储在TAG_ADDR信息中的地址,在两地址一致的情况(命中的情况)下输出命中的信息,在不一致的情况下输出脱靶的信息。
命中量计数器312a在向存储器2访问的地址与在D0数据中存储的指令的地址一致的情况下,输出命中量“4”。命中量计数器312a在向存储器2访问的地址与在D1数据中存储的指令的地址一致的情况下,输出命中量“3”。输出命中量“4”。命中量计数器312a在向存储器2访问的地址与在D2数据中存储的指令的地址一致的情况下,输出命中量“2”。输出命中量“4”。命中量计数器312a在向存储器2访问的地址与在D3数据中存储的指令的地址一致的情况下,输出命中量“1”。另外,命中量是表示CPU1能够向指令高速缓存3a访问几次来读出数据的值。具体来说,在命中量为“4”的情况下,CPU1向指令高速缓存3a访问4次,能够读出D1数据~D3数据的指令。
接下来,关于本实施方式2涉及的数据处理装置200的动作进行说明。图8是用于说明实施方式2涉及的数据处理装置200的动作的时序图。在图8所示的时序图中,分别示出了CPU1的时钟信号、读出目标地址、命中信息、命中量、停止信号、以及向存储器2的访问信号的波形。
针对CPU1的一个时钟信号而使读出目标的指令的地址的一个地址从CPU1向存储器2以及指令高速缓存3a输出。在图8所示的例子中,读出目标的指令的地址按地址A、地址A+1、地址A+2、地址A+3、地址A+4、以及地址A+5的顺序,从CPU1向存储器2以及指令高速缓存3a输出。
首先,指令高速缓存3a分别向D0数据存储地址A+1的指令、向D1数据存储地址A+2的指令、向D2数据存储地址A+3的指令、 以及向D3数据存储地址A+4的指令。然后,比较器31a在作为读出目标的指令的地址而接收到地址A+1的情况下,比较接收的地址A+1与存储在TAG_ADDR信息中的地址。由于接收的地址A+1与存储在D0数据中的指令的地址一致,所以比较器31a根据指令的连续性,能够判断存储在D1数据~D3数据中的指令的地址是地址A+2~地址A+4。因此,比较器31a将命中的信息以及命中量“4”向停止处理部4输出。即,如图8所示,在读出目标的指令的地址是地址A+1的定时,命中信息为“H”电平,命中量为“4”。
由于在D1数据~D3数据中存储有地址A+2~地址A+4的指令,所以停止处理部4能够在从指令高速缓存3读出地址A+2~地址A+4的指令的期间,停止向存储器2的访问。因此,剩余停止量计数器41在从比较器31a(指令高速缓存3a)接收到命中的信息和命中量“4”时,将停止量计数器量设置为“3”,在与向存储器2访问3次相当的期间,将停止信号向存储器2输出。即,如图8所示,在读出目标的指令的地址为地址A+2~地址A+4的定时,停止信号为“H”电平。
存储器2通过图1所示的运算处理部6而被输入对停止信号的反转信号和来自CPU1的请求的信号进行了AND运算而得到的信号作为向存储器2的访问信号。即,在来自CPU1的请求的信号为“H”电平,停止信号为“L”电平的情况下,向存储器2的访问信号为“H”电平,停止信号为“H”电平时为“L”电平。如图8所示,在读出目标的指令的地址是地址A+2~地址A+4的定时,由于停止信号为“H”电平,所以向存储器2的访问信号为“L”电平。
当向存储器2的访问信号为“L”电平时,从CPU1向存储器2的访问停止,数据处理装置200能够在从CPU1向存储器2的访问停止的期间,减少消耗电力。
如以上那样,关于本实施方式2涉及的数据处理装置200,指令高速缓存3a具有存储器2的总线宽度的4倍的容量,停止处理部4使向存储器2访问的次数最大停止3次,因此,与本实施方式1相比, 能够使停止向存储器2的访问的期间变长,使消耗电力更加减少。
另外,指令高速缓存3a的容量不限定于4倍,也可以构成为,具有存储器的总线宽度的N倍的容量,停止处理部4使向存储器2访问的次数最大停止N-1次。
(实施方式3)
在实施方式1以及2涉及的数据处理装置100、200中,关于利用设置在CPU1的外部的停止处理部4(取出处理控制部)来停止向存储器2的访问的构成进行了说明。但是,CPU1在内部所包含的指令队列中有空闲的情况下,向存储器2访问,进行从该存储器2读出指令的预取出处理。因此,在本实施方式3涉及的数据处理装置中,关于在CPU的内部设置取出处理控制部来停止向存储器2的访问的构成进行说明。
图9是表示本实施方式3涉及的数据处理装置的构成的框图。如图9所示的数据处理装置300包含CPU1以及CPU接口7,经由CPU接口7,从CPU1向存储器2访问,从存储器2读出指令(预取出处理)。另外,对于数据处理装置300与实施方式1涉及的数据处理装置100相同的构成要素,标注相同的附图标记,不重复进行详细的说明。
数据处理装置300即使向存储器2的访问需要数个等待(wait)的等待期间,只要指令提供能力足够,则通常情况下的性能就不会降低。因此,数据处理装置300只要仅在执行分支指令时容许性能恶化即可。
CPU1包含指令队列11、指令解码器12、数据通道13、指令取出接口部14、以及预解码器15。指令队列11是用于从存储器2事先读出指令(预取出处理)并存储的存储部。指令解码器12是依次读出存储在指令队列的指令,对指令进行解码的CPUCNT部的一部分。数据通道13是执行在指令解码器12中解码得到的指令的指令执行部。指令取出接口部14使从指令队列11的读出请求(IFREQ)向存储器2输出。
预解码器15判断在指令解码器12中接下来要解码的指令是否是分支指令,如果该指令是分支指令,则生成用于停止预取出处理的停止信号,向指令取出接口部14输出。即,预解码器15能够作为取出处理控制部而发挥作用,停止向存储器2的访问。
在说明本实施方式3涉及的数据处理装置300的动作前,说明不包含预解码器15的构成的数据处理装置的动作。图10是用于说明在不包含预解码器15的构成的数据处理装置中预取出处理的时序的时序图。图10的(a)是在执行分支指令的定时进行预取出处理的例子,图10的(b)是在执行分支指令前的定时进行预取出处理的例子。
在此,在图10所示的时序图中,图示有分支指令、分支目标指令、以及预取出处理各自的时序。另外,在分支指令以及分支目标指令中,包含指令取出阶段IF、指令解码阶段D、以及执行阶段E。在指令取出阶段IF(Instruction Fetch)中,进行将在指令队列中存储的指令向指令解码器读出的处理。在指令解码阶段D(Decode)中,进行从指令取出阶段IF提供的指令的解码处理。在执行阶段E(Execute)中,进行在指令解码阶段D中被解码得到的指令的执行。例如,进行算术逻辑计算和/或分支判断处理等。
如图10所示,CPU分别在1时钟中处理分支指令以及分支目标指令的指令取出阶段IF以及指令解码阶段D,在2个时钟中处理以1个等待向存储器访问的预取出处理。因此,如图10的(a)所示的时序图示出那样,CPU如果在指令取出阶段IF开始的定时开始预取出处理的执行,就能够从执行阶段E的第1个时钟开始执行分支目标指令的预取出处理。
如果能够从执行阶段E的第1个时钟开始执行分支目标指令的预取出处理,CPU就能够从分支指令的执行阶段E的第3个时钟开始执行分支目标指令的指令取出阶段IF。即,CPU能够将分支目标指令的指令取出阶段IF成为执行等待的期间(IF-stall)抑制为1个时钟。
但是,如图10的(b)所示的时序图示出那样,如果CPU在指令解码阶段D开始的定时开始预取出处理的执行,就不能从执行阶段 E的第1个时钟开始执行分支目标指令的预取出处理。因此,由于CPU在执行阶段E的第1个时钟通过其它指令的预取出处理向存储器进行访问,所以不能为了执行分支目标指令的预取出处理而向存储器访问。因此,由于CPU进行的分支目标指令的预取出处理从分支指令的执行阶段E的第2个时钟开始,所以分支目标指令的指令取出阶段IF成为执行等待的期间(IF-stall)需要2个时钟。
此外,在分支指令的指令解码阶段D之前开始的预取出处理由于从存储器读出与分支目标指令不同的指令,所以从存储器读出执行所不需要的指令,是无用的预取出处理。
于是,在本实施方式3涉及的数据处理装置300中设置预解码器15,导入在分支指令前的时钟停止预取出处理的机构,因此,减少了向存储器2的不需要的访问,减少消耗电力。
图11是表示实施方式3涉及的数据处理装置300的指令队列11以及预解码器15的构成的框图。预解码器15包含存储部151、比较部152、以及运算部153。存储部151预先存储有需要停止预取出处理的分支指令(停止对象指令)。存储部151存储有例如从分支指令1至分支指令N的N个分支指令。
比较部152比较从指令队列11读出的对象指令与在存储部151中预先存储的分支指令(停止对象指令)。运算部153运算将对象指令和在存储部151中存储的分支指令的每一个进行比较而得到的结果,生成停止信号。在运算部153中生成的停止信号在放大器154中被放大至预定的电压电平,向指令取出接口部14输出。
另外,指令队列11具有选择器11a,该选择器11a基于选择信号从存储的指令中选择接下来要执行的指令,向比较部152输出。
接下来,关于数据处理装置300使用预解码器15停止预取出处理的动作进行说明。图12是用于说明在实施方式3涉及的数据处理装置300中预取出处理的时序的时序图。在图12所示的时序图中,分别图示有分支指令、分支目标指令、以及预取出处理的时序。另外,在分支指令、以及分支目标指令中,包含指令取出阶段IF、指令解码 阶段D、以及执行阶段E。
如图12所示,CPU1分别在1个时钟中处理分支指令以及分支目标指令的指令取出阶段IF以及指令解码阶段D,在1个时钟中处理以无等待(no wait)向存储器2访问的预取出处理。然后,CPU1在指令取出阶段IF中,从指令队列11向指令解码器12读出指令,并且也向预解码器15输出该指令。
预解码器15判断在指令取出阶段IF中被输入的指令(对象指令)是否是分支指令(分支判断)。在预解码器15判断指令为分支指令的情况下,在指令解码阶段D中,停止对于指令的执行所不需要的指令的预取出处理。另外,指令取出接口部14在停止信号为“1”的情况下,作为来自存储器2的读出请求(IFREQ),输出“0”。
另外,预解码器15并不仅是分支指令,即使是条件分支指令也能够同样地动作。具体来说,图13是用于说明在实施方式3涉及的数据处理装置300中执行预取出处理的条件分支指令的情况的时序的时序图。如图13所示,CPU1分别在1个时钟中处理分支指令以及分支目标指令的指令取出阶段IF以及指令解码阶段D,在1个时钟中处理以无等待向存储器2访问的预取出处理。然后,CPU1在指令取出阶段IF中,从指令队列11向指令解码器12读出指令,并且也向预解码器15输出该指令。
预解码器15判断在指令取出阶段IF中被输入的指令(对象指令)是否是条件分支指令(分支判断)。预解码器15在判断成指令为条件分支指令的情况下,在指令解码阶段D中,停止对于指令的执行所不需要的指令的预取出处理。但是,CPU1在条件分支目标指令是不分支(non-taken)指令的情况下,再次开始预取出处理。
如以上那样,本实施方式3涉及的数据处理装置300中,预解码器15判断在指令解码器12中接下来要解码的指令是否是分支指令,如果该指令是分支指令,则生成用于停止取出处理的停止信号。因此,数据处理装置300能够使从存储器2读出执行所不需要的指令的无用预取出处理停止。进而,数据处理装置300通过使无用的预取出处理 (向存储器2的访问)停止,能够进一步减少消耗电力。此外,在数据处理装置300中,由于能够从分支指令的开始而开始指令取出,因此,还能够避免因预取出处理而使执行分支指令的时钟数变多的问题。
另外,预解码器15在判断成指令解码器12中接下来要解码的指令为在处理中需要多个时钟期间的指令(例如,除法指令等)的情况下,也可以在直到该处理结束的期间停止预取出处理。
此外,在数据处理装置300中,关于使CPU1和存储器2形成在不同的半导体衬底上的情况进行了说明,但也可以使CPU1和存储器2形成在相同的半导体衬底上(单芯片半导体器件)。但是,在CPU1和存储器2形成在相同的半导体衬底上的情况下,数据处理装置300可以不设置用于连接CPU1和存储器2的CPU接口7。
(实施方式4)
在实施方式3涉及的数据处理装置300中,关于以无等待向存储器2访问的预取出处理的情况进行了说明。但是,数据处理装置也可以设置向存储器2的访问的等待,进行预取出处理。于是,在本实施方式4涉及的数据处理装置中,关于对存储器2的访问设置等待时间,进行预取出处理的情况进行说明。另外,实施方式4涉及的数据处理装置由于是与实施方式3涉及的数据处理装置300相同的构成,所以不重复图示,以下,对相同的构成要素标注相同的附图标记来进行说明。
图14是用于说明实施方式4涉及的数据处理装置300中预取出处理的时序的时序图。在图14所示的时序图中,图示有分支指令、分支目标指令、以及预取出处理各自的时序。另外,在分支指令以及分支目标指令中包含指令取出阶段IF、指令解码阶段D、以及执行阶段E。
如图14所示,CPU1分别在1个时钟中处理分支指令以及分支目标指令的指令取出阶段IF以及指令解码阶段D,在2个时钟中处理以1个等待向存储器2访问的预取出处理。然后,预解码器15判断 在指令取出阶段IF中输入的指令(对象指令)是否是分支指令(分支判断)。因此,CPU1在开始指令解码阶段D的定时,即使预定开始预取出处理的执行,在预解码器15判断成指令为分支指令的情况下,也停止预取出处理。
因此,CPU1能够从执行阶段E的第1个时钟开始,执行分支目标指令的预取出处理,能够将分支目标指令的指令取出阶段IF成为执行等待的期间(IF-stall)抑制成1个时钟。此外,通过停止在分支指令的指令解码阶段D之前开始的无用的预取出处理,能够减少向存储器2的不需要的访问,减少消耗电力。
如以上那样,在本实施方式4涉及的数据处理装置300中,即使是在读出指令时需要预定的等待期间的存储器2,预解码器15也能够停止无用的预取出处理,从执行阶段E的第1个时钟开始执行预取出处理。
(实施方式5)
在实施方式3以及4涉及的数据处理装置300中,关于指令长度为固定的情况进行了说明。但是,数据处理装置的指令长度也可以是可变的情况。因此,在本实施方式5涉及的数据处理装置中,关于指令长度可变的情况进行说明。另外,实施方式5涉及的数据处理装置由于与实施方式3涉及的数据处理装置300构成相同,因此不重复图示,以下,对相同的构成要素标注相同的附图标记进行说明。
实施方式5涉及的数据处理装置300由于指令长度是可变的,因此,预解码器15从指令队列11读出指令(对象指令)的构成不同。图15表示实施方式5涉及的数据处理装置300的指令队列11以及预解码器15的构成的框图。预解码器15与图11所示的预解码器15同样地,包含存储部151、比较部152、以及运算部153。
指令队列11具有选择器11a、开头计算部11b、以及指令选择器11c。指令队列11由于存储有指令长度可变的指令,因此在选择器11a所选择的线(line)中包含多个指令。因此,选择器11a基于线选择信号以线为单位读出所存储的多个指令,向指令选择器11c输出。开 头计算部11b从指令解码器12输出的指令的指令长度,计算接下来要执行的指令的开头,向指令选择器11c输出。指令选择器11c基于开头计算部11b输出的表示指令的开头的信息,从选择器11a输出的线中包含的多个指令中选择接下来要执行的指令,向比较部152输出。
比较部152比较从指令队列11读出的对象指令和预先存储在存储部151中的分支指令(停止对象指令)。运算部153运算将对象指令和存储在存储部151中的分支指令的每一个进行比较而得到的结果,生成停止信号。在运算部153中生成的停止信号在放大器154中被放大至预定的电压电平,并向指令取出接口部14输出。
如以上那样,在本实施方式5涉及的数据处理装置300中,由于在指令长度根据各指令而不同的情况(指令长度可变的情况)下,通过根据在指令解码器12中解码指令的结果所得到的指令长度,从指令队列中选择并读出接下来要解码的指令,所以能够得到与指令长度为固定的指令的情况相同的效果。
(变形例)
能够考虑如下情况:当指令队列11的指令长度为可变指令的情况下在指令解码器12中解码指令并得到指令长度为止要花费时间时,预解码器15不进行将无用的预取出处理停止的处理。于是,在变形例涉及的预解码器中,关于包含在线中的全部多个指令,与在存储部中预先存储的分支指令(停止对象指令)进行比较来判断是否是分支指令。
图16是表示实施方式5的变形例涉及的数据处理装置300的指令队列11以及预解码器的构成的框图。预解码器15a设置图11所示的多个预解码器15来作为子预解码器155。因此,多个子预解码器155并行处理关于包含在读出的线中的多个指令是否是分支指令。具体来说,在包含在读出的线中的指令是下一条指令候选1~下一条指令候选M的情况下,准备M个子预解码器155,关于下一条指令候选1~下一条指令候选M的指令,并行分别进行是否是分支指令的处理。选择器156基于开头计算部11b输出的表示指令的开头的信息, 从下一条指令候选1~下一条指令候选M的指令中选择一个指令,从在处理了所选择的指令的子预解码器155中生成的停止信号,选择作为向指令取出接口部14输出的停止信号。
另外,在选择器156中选择的停止信号在放大器157中被放大至预定的电压电平,向指令取出接口部14输出。此外,包含在线中的多个指令由于被提供给多个子预解码器155,所以也可以在放大器11d中被放大至预定的电压电平。
如以上那样,在本实施方式5的变形例涉及的数据处理装置300中,针对所读出的多个指令的每一个而具有并行判断是否是分支指令的多个子预解码器155,所以能够使停止预取出处理的处理稳定地进行。
(实施方式6)
关于本实施方式6涉及的数据处理装置并不始终使预先存储在预解码器15的存储部151中的分支指令(停止对象指令)的全部判断为分支指令并停止预取出处理,能够动态地变更的构成进行说明。
图17是表示实施方式6涉及的数据处理装置的预解码器的构成的框图。另外,实施方式6涉及的数据处理装置由于是与实施方式3涉及的数据处理装置300相同的构成,所以不重复图示,以下,对相同的构成要素标注相同的附图标记进行说明。此外,在预解码器15b中,关于与图11所示的预解码器15相同的构成要素,标注相同的附图标记,不重复详细说明。
预解码器15b包含存储部151a、比较部152、以及运算部153。存储部151a预先存储有需要停止预取出处理的分支指令(停止对象指令),并且附加并存储有关于各分支指令决定是否为停止预取出处理的对象的有效位Vbit和表示各分支指令的指令长度的长度信息len。存储部151b存储有例如从分支指令1至分支指令N的N个分支指令。另外,长度信息len在指令长度为固定的分支指令的情况下是不需要的。
通过使用有效位Vbit,CPU1在条件分支目标指令不分支 (non-taken)的指令是连续的情况下,能够避免如下情况:停止预取出处理的处理过度地动作,使从指令队列11向指令解码器12的指令提供能力不足而性能恶化。
即,由于CPU1向不需要将预取出处理停止的处理的分支指令的有效位Vbit写入“0”,所以不进行将预取出处理停止的处理。另外,在向有效位Vbit写入“1”的情况下,CPU1进行将预取出处理停止的处理。
图18是用于说明在实施方式6涉及的数据处理装置300中预取出处理的时序的时序图。在图18所示的时序图中,分别图示有分支指令1、通常指令、分支指令2、分支目标指令、以及预取出处理的时序。另外,在分支指令1、通常指令、分支指令2、以及分支目标指令中,包含指令取出阶段IF、指令解码阶段D、以及执行阶段E。
如图18所示,CPU1分别在1个时钟中处理指令取出阶段IF以及指令解码阶段D,在1个时钟中以无等待的方式处理向存储器2访问的预取出处理。然后,预解码器15b判断在分支指令1的指令取出阶段IF输入的指令(对象指令)是否是分支指令(分支判断)。但是,由于预解码器15b向分支指令1的有效位Vbit中写入“0”(v=0),所以不生成停止预取出处理的停止信号。
然后,CPU1执行通常指令以及分支指令2。然后,预解码器15b判断在分支指令2的指令取出阶段IF输入的指令(对象指令)是否是分支指令(分支判断)。由于预解码器15b向分支指令2的有效位Vbit写入“1”(v=1),所以生成停止预取出处理的停止信号。因此,CPU1在开始指令解码阶段D的定时,即使预定开始预取出处理的执行,也停止预取出处理。
然后,CPU1能够从执行阶段E的第1个时钟起执行分支目标指令的预取出处理,使分支目标指令的指令取出阶段IF成为执行等待的期间(IF-stall)抑制在1个时钟内。通过停止在分支指令2的指令解码阶段D之前开始的无用的预取出处理,能够减少向存储器2的不必要的访问,减少消耗电力。进而,通过在分支指令1中不停止预取 出处理,在分支指令2中停止预取出处理,从而防止了过度进行停止预取出处理的处理。
如以上那样,在本实施方式6的变形例涉及的数据处理装置300中,即使在判断为分支指令的情况下,也按每一个停止对象指令而附加不生成用于停止取出处理的停止信号的位信息(有效位Vbit)。因此,本实施方式6的变形例涉及的数据处理装置300能够防止停止预取出处理的处理过度地进行,避免指令提供能力不足而导致性能恶化。
(实施方式7)
在实施方式1涉及的数据处理装置100中,关于利用设置在CPU1的外部的停止处理部4(取出处理控制部)来停止向存储器2的访问的构成进行了说明。在实施方式3涉及的数据处理装置300中,关于利用设置在CPU1的内部的预解码器15(取出处理控制部)来停止向存储器2的访问的构成进行了说明。在本实施方式7涉及的数据处理装置中,关于设置组合两者而成的取出处理控制部来停止向存储器2的访问的构成进行说明。
图19是表示本实施方式7涉及的数据处理装置的构成的框图。图19所示的数据处理装置400包含CPU1、存储器2、指令高速缓存3、以及停止处理部4,从CPU1向存储器2以及指令高速缓存3双方访问,从存储器2或者指令高速缓存3读出指令(取出处理)。此外,图19所示的CPU1包含指令队列11、指令解码器12、数据通道13、指令取出接口部14、以及预解码器15。
另外,关于实施方式7涉及的数据处理装置400与实施方式1涉及的数据处理装置100、以及实施方式3涉及的数据处理装置300相同的构成要素,标注相同的附图标记,不重复详细的说明。
接下来,关于本实施方式7涉及的数据处理装置400的动作进行说明。图20是用于说明实施方式7涉及的数据处理装置400的动作的时序图。在图7所示的时序图中,分别示出了CPU1的时钟信号、指令取出阶段IF、指令解码阶段D、执行阶段E、读出目标地址、分 支判断信号、停止信号、分支通知、命中信息、命中量、以及向存储器2的访问信号的波形。
CPU1使“bra1”、“sub”、“bra2”、“add”、以及“bra3”的顺序的指令在指令取出阶段IF、指令解码阶段D、以及执行阶段E的各阶段中按顺序在流水线中处理。例如,CPU1在使“bra1”的指令在指令取出阶段IF处理后的下一个时钟,使“bra1”的指令在指令解码阶段D中处理,在再下一个时钟,使“bra1”的指令在执行阶段E中处理。
预解码器15在处理分支指令的“bra1”、“bra2”、以及“bra3”时,由于在指令取出阶段IF中进行分支判断并判断为分支指令,因此,使分支判断信号为“H”电平。进而,预解码器15当分支判断信号为“H”电平时,在下一时钟的定时使停止信号为“H”电平,向存储器2输出。
存储器2通过图19所示的运算处理部6a而被输入对停止处理部4以及预解码器15的停止信号的反转信号和来自CPU1的请求的信号进行了AND运算而得到的信号作为向存储器2的访问信号。具体来说,在来自CPU1的请求的信号为“H”电平,预解码器15的停止信号为“L”电平的情况下,向存储器2的访问信号为“H”电平,但预解码器15的停止信号为“H”电平时为“L”电平。向存储器2的访问信号如图20所示,在预解码器15的停止信号为“H”电平的定时为“L”电平(I,III)。
此外,指令高速缓存3在从存储器2读出“bra1”的指令之前,分别向前半部分数据存储“bra1”的指令,向后半部分数据存储“sub”的指令。然后,比较器31在从指令取出接口部14接受的地址与向前半部分数据存储的“bra1”的指令的地址一致的情况下,根据指令的连续性,判断向后半部分数据存储的指令为“sub”。因此,比较器31将命中的信息以及命中量“2”向停止处理部4输出。即,如图20所示,在指令取出阶段IF中,在“sub”的指令被处理的定时,命中信息为“H”电平,命中量为“2”。当命中信息为“H”电平,命中 量为“2”时,向存储器2的访问信号在下一时钟的定时为“L”电平(II)。
如以上那样,在本实施方式7涉及的数据处理装置400中,作为取出处理控制部,具有设置在CPU1的外部的停止处理部4和设置在CPU1的内部的预解码器15。因此,本实施方式7涉及的数据处理装置400在判断为向指令高速缓存3存储有分支目标的指令的情况、以及判断下一指令为分支指令的情况中的至少一方的情况下,能够停止向存储器2的访问。因此,本实施方式7涉及的数据处理装置400通过停止向存储器2的无用的访问,能够使消耗电力更减少。
应当认为本次公开的实施方式全部方面是例示而不用来限制。本发明的范围不是上述的说明,而由权利要求书示出,并意图包括与权利要求书等同的意思以及范围内的全部变更。
附图标记说明
1:CPU;2:存储器;3:指令高速缓存;4:停止处理部;11a,156:选择器;6、6a:运算处理部;7:CPU接口;11:指令队列;11b:开头计算部;11c:指令选择器;11d、154、157:放大器;12:指令解码器;13:数据通道;14:指令取出接口部;15、15a、15b:预解码器;31、31a:比较器;41:剩余停止量计数器;100、200、300、400:数据处理装置;151、151a、151b:存储部;152:比较部;153:运算部;155:子预解码器;311、311a:命中判断部;312、312a:命中量计数器。

数据处理装置.pdf_第1页
第1页 / 共30页
数据处理装置.pdf_第2页
第2页 / 共30页
数据处理装置.pdf_第3页
第3页 / 共30页
点击查看更多>>
资源描述

《数据处理装置.pdf》由会员分享,可在线阅读,更多相关《数据处理装置.pdf(30页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN104106046A43申请公布日20141015CN104106046A21申请号201280069647922申请日20120214G06F9/38200601G06F12/0820060171申请人瑞萨电子株式会社地址日本神奈川县72发明人石崎雅胜74专利代理机构北京市金杜律师事务所11256代理人陈伟王娟娟54发明名称数据处理装置57摘要根据一个实施方式,数据处理装置具有存储器、指令高速缓存、运算处理部CPU、取出处理控制部。存储器存储通过多个指令描述的程序。指令高速缓存仅在执行包含在程序中的分支指令时动作,从存储器读出并预先存储比存储器的总线宽度大的容量的数据。运算。

2、处理部向存储器以及指令高速缓存的双方访问,使从存储器或者指令高速缓存读出的指令在流水线中执行。取出处理控制部根据在运算处理部中执行的分支指令,生成用于停止从存储器读出指令的取出处理的停止信号,向存储器输出。85PCT国际申请进入国家阶段日2014081386PCT国际申请的申请数据PCT/JP2012/0533472012021487PCT国际申请的公布数据WO2013/121516JA2013082251INTCL权利要求书2页说明书15页附图12页19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书15页附图12页10申请公布号CN104106046ACN104106046。

3、A1/2页21一种数据处理装置,具有存储器,其存储通过多个指令描述的程序;指令高速缓存,其仅在执行包含在所述程序中的分支指令时动作,从所述存储器读出并预先存储有比所述存储器的总线宽度大的容量的数据;运算处理部,其向所述存储器以及所述指令高速缓存的双方访问,使从所述存储器或者所述指令高速缓存读出的指令在流水线中执行;以及取出处理控制部,其根据在所述运算处理部执行的分支指令,生成用于停止取出处理的停止信号,并将该停止信号向所述存储器输出,其中,所述取出处理是从所述存储器读出指令的处理。2根据权利要求1所述的数据处理装置,其中,所述指令高速缓存包含比较器,该比较器在所述运算处理部中执行分支指令时,比。

4、较向所述存储器访问的地址和预先存储的指令的地址,并在一致的情况下,判断为存储有相对于该分支指令来说的分支目标的指令,所述取出处理控制部是停止处理部,在所述比较器判断为在所述指令高速缓存中存储有分支目标的指令的情况下,生成用于在将存储于所述指令高速缓存的指令读出的期间停止所述取出处理的停止信号,并将该停止信号向所述存储器输出。3根据权利要求2所述的数据处理装置,其中,所述比较器对根据地址一致的指令而能够将存储在所述指令高速缓存中的指令读出的次数进行计数来作为命中量,所述停止处理部包含计数器,该计数器通过将所述命中量作为初始值并进行递减计数,设定使向所述存储器的访问停止的期间。4根据权利要求2所述。

5、的数据处理装置,其中,所述停止处理部在分支目标的指令再分支的情况下,取消使向所述存储器的访问停止的处理。5根据权利要求2所述的数据处理装置,其中,所述指令高速缓存具有所述存储器的总线宽度的N倍的容量,所述停止处理部使向所述存储器访问的次数最大停止N1次。6根据权利要求1所述的数据处理装置,其中,所述运算处理部包含指令队列,其从所述存储器预先读出并存储指令;指令解码器,其依次读出存储在所述指令队列的指令并对指令进行解码;指令执行部,其执行在所述指令解码器中解码得到的指令;指令取出接口部,其将来自所述指令队列的读出请求向所述存储器输出;以及预解码器,其判断在所述指令解码器中接下来要解码的指令是否是。

6、分支指令,如果该指令是分支指令,则生成用于停止所述取出处理的停止信号,并将该停止信号向所述指令取出接口部输出,所述取出处理控制部是所述预解码器。7根据权利要求6所述的数据处理装置,其中,所述预解码器在使所述取出处理停止后,当所判断出的分支指令在所述指令执行部中权利要求书CN104106046A2/2页3执行时,再次开始所述取出处理。8根据权利要求6所述的数据处理装置,其中,所述预解码器通过比较在所述指令解码器中接下来要解码的指令和预先存储的停止对象指令,来判断指令是否是分支指令。9根据权利要求6所述的数据处理装置,其中,所述存储器在读出指令时需要预定的等待期间。10根据权利要求8所述的数据处理。

7、装置,其中,所述预解码器在指令长度根据各指令而不同的情况下,根据通过在所述指令解码器中解码指令的结果所得到的指令长度,从所述指令队列选择并读出接下来要解码的指令。11根据权利要求10所述的数据处理装置,其中,所述预解码器具有关于所读出的多个指令分别并行判断是否是分支指令的多个子预解码器。12根据权利要求8所述的数据处理装置,其中,所述预解码器按每个所述停止对象指令而附加有位信息,所述位信息使得即使在判断成所述指令解码器中接下来要解码的指令为分支指令的情况下,也不生成用于停止所述取出处理的停止信号。13根据权利要求1所述的数据处理装置,其中,所述指令高速缓存包含比较器,该比较器在所述运算处理部中。

8、执行分支指令时,比较向所述存储器访问的地址和预先存储的指令的地址,并在一致的情况下,判断成存储有相对于该分支指令来说的分支目标的指令,所述运算处理部包含指令队列,其从所述存储器预先读出并存储指令;指令解码器,其依次读出存储在所述指令队列中的指令,并对指令进行解码;指令执行部,其执行在所述指令解码器中解码得到的指令;以及指令取出接口部,其将来自所述指令队列的读出请求向所述存储器以及所述指令高速缓存输出,所述取出处理控制部包含停止处理部,其当所述比较器判断成在所述指令高速缓中存储有分支目标的指令的情况下,生成用于在将存储于所述指令高速缓存中的指令读出的期间停止所述取出处理的停止信号,并将该停止信号。

9、向所述存储器输出;以及预解码器,其设置在所述运算处理部内,判断在所述指令解码器中接下来要解码的指令是否是分支指令,如果该指令是分支指令,则生成用于停止所述取出处理的停止信号,并将该停止信号向所述存储器输出。权利要求书CN104106046A1/15页4数据处理装置技术领域0001本发明涉及数据处理装置,例如,涉及具有存储器和指令高速缓存INSTRUCTIONCACHE的数据处理装置,其中,所述存储器存储通过多个指令描述的程序,所述指令高速缓存仅在执行分支指令时动作。背景技术0002在CPUCENTRALPROCESSINGUNIT中央处理单元等数据处理装置中,除了设有存储程序的存储器以外,还设。

10、有暂时存储程序的指令的指令高速缓存,以实现处理的高性能化。但是,数据处理装置在要执行的指令并未包含在指令高速缓存中的脱靶MISS时,产生补偿PENALTY。为了实现数据处理装置的处理的高性能化,该补偿不能被忽略。因此,在数据处理装置中,提出有通过对存储器以及指令高速缓存的双方进行访问来避免补偿的构成。0003此外,具有指令高速缓存的数据处理装置的构成在专利文献1日本特开2008052518号公报以及专利文献2日本特开2001142698号公报中公开。专利文献1中公开的CPU系统的动作条件是,CPU的动作速度是SDRAM的突发读取BURSTREAD时的动作速度以下。比较器在CPU处理分支指令时,。

11、判断在指令高速缓冲存储器中是否存储有分支目标的指令。当在指令高速缓冲存储器中存储有分支目标的指令的情况下,将该指令从指令高速缓冲存储器读出。0004在专利文献2中公开的CPU中,采用如下存储器访问方式在指令用存储器的访问的同时也进行主存储器的访问,无缝取出FETCH来自指令用存储器的指令代码和来自主存储器的指令代码。0005此外,在数据处理装置中,在从存储器预先读出并存储指令的指令队列中有空闲时,与执行指令无关地发生从存储器向指令队列读出指令的取出处理。关于该取出处理,在专利文献3日本2006048258号公报、专利文献4日本特开平06161750号公报、专利文献5日本特开2000357090。

12、号公报、以及专利文献6日本特开平05027972号公报中公开。0006在专利文献3公开的数据处理器中包含指令的取出控制部、保持通过取出控制部而被取出的指令的指令缓冲器、将保持在指令缓冲器中的指令按规定的顺序在流水线PIPELINE中执行的执行部。然后,取出控制部使用分支指令的指令地址,获得表示条件分支的预测方向和其准确度的预测信息,能够进行在条件分支指令中分支预测侧的指令的取出与分支非预测侧的指令的取出,同时根据预测信息选择性地停止分支非预测的指令的取出。0007专利文献4公开的CPU设置有提前分支条件检查电路,该提前分支条件检查电路在针对分支指令的预取出定时,检测标记TAG的状态,观察缓冲器。

13、或者条件代码中的零标志的内容,提前进行分支判断。0008专利文献5公开的CPU为了缩短在基于条件分支指令而产生高速缓存脱靶时向主说明书CN104106046A2/15页5存储器的访问时间,内置有分支预测机构。0009专利文献6公开的CPU使指令检测部介于指令队列与存储器之间,在指令队列读入的指令中含有分支指令的情况下,直至该分支指令的分支目标地址确定之前,暂停从存储器读出指令。0010现有技术文献0011专利文献0012专利文献1日本特开2008052518号公报0013专利文献2日本特开2001142698号公报0014专利文献3日本特开2006048258号公报0015专利文献4日本特开平。

14、06161750号公报0016专利文献5日本特开2000357090号公报0017专利文献6日本特开平05027972号公报发明内容0018但是,在现有的数据处理装置中,为了避免在要执行的指令未包含在指令高速缓存的脱靶时的补偿,向存储器以及指令高速缓存双方进行访问。因此,由于在现有的数据处理装置中,指令包含在指令高速缓存中而命中HIT时也向存储器进行访问,存在总是会消耗向存储器以及指令高速缓存双方访问的电力这样的问题。0019此外,在现有的数据处理装置中,在从存储器预先读出并存储指令的指令队列中有空闲时,与执行指令无关地发生从存储器读出指令的取出处理。因此,在现有的数据处理装置中,由于从存储器。

15、读出不需要的指令,所以因无用的存储器访问而消耗电力。特别是,在即将分支指令之前进行了取出处理的情况下,会从存储器读出根据分支的结果而不需要执行的指令,因此,存在因无用的存储器访问而导致电力消耗的问题。0020其它的课题与新的特征将从本说明书的描述以及添加附图而得以明确。0021用于解决课题的手段0022根据一个实施方式,数据处理装置具有存储器、指令高速缓存、运算处理部、取出处理控制部。存储器存储通过多个指令描述的程序。指令高速缓存仅在执行包含在程序中的分支指令时动作,从存储器读出并预先存储比存储器的总线宽度大的容量的数据。运算处理部向存储器以及指令高速缓存的双方访问,使从存储器或者指令高速缓存。

16、读出的指令在流水线中执行。取出处理控制部根据在运算处理部中执行的分支指令,生成用于停止从存储器读出命令的取出处理的停止信号,向存储器输出。0023发明效果0024根据所述一个实施方式,数据处理装置能够减少用于向存储器访问的电力的消耗。尤其是,数据处理装置能够减少在向存储器以及指令高速缓存的双方访问时消耗的电力、用于从存储器读出根据分支的结果而不需要执行的指令的取出处理中消耗的电力。附图说明0025图1是表示实施方式1涉及的数据处理装置的构成的框图。0026图2是表示实施方式1涉及的数据处理装置的指令高速缓存的进一步详细构成的说明书CN104106046A3/15页6框图。0027图3表示实施方。

17、式1涉及的数据处理装置的停止处理部的进一步详细构成的框图。0028图4是用于说明实施方式1涉及的数据处理装置的动作的时序图。0029图5是用于说明实施方式1涉及的数据处理装置的基于分支通知而进行的动作的时序图。0030图6是表示实施方式2涉及的数据处理装置的构成的框图。0031图7是表示实施方式2涉及的数据处理装置的指令高速缓存的进一步详细构成的框图。0032图8是用于说明实施方式2涉及的数据处理装置的动作的时序图。0033图9是表示实施方式3涉及的数据处理装置的构成的框图。0034图10是用于说明在不含有预解码器的构成的数据处理装置中预取出处理的时序的时序图。0035图11是表示实施方式3涉。

18、及的数据处理装置的指令队列以及预解码器的构成的框图。0036图12是用于说明实施方式3涉及的数据处理装置中预取出处理的时序的时序图。0037图13是用于说明实施方式3涉及的数据处理装置中执行预取出处理的条件分支指令的情况下的时序的时序图。0038图14是用于说明实施方式4涉及的数据处理装置中预取出处理的时序的时序图。0039图15是表示实施方式5涉及的数据处理装置的指令队列以及预解码器的构成的框图。0040图16是表示实施方式5的变形例涉及的数据处理装置的指令队列以及预解码器的构成的框图。0041图17是表示实施方式6涉及的数据处理装置的预解码器的构成的框图。0042图18是用于说明实施方式6。

19、涉及的数据处理装置中预取出处理的时序的时序图。0043图19表示实施方式7涉及的数据处理装置的构成的框图。0044图20是用于说明实施方式7涉及的数据处理装置的动作的时序图。具体实施方式0045以下,关于本发明涉及的实施方式参照附图进行说明。0046实施方式10047图1是表示实施方式1涉及的数据处理装置的构成的框图。图1所示的数据处理装置100包含CPU1、存储器2、指令高速缓存3、以及停止处理部4,从CPU1向存储器2以及指令高速缓存3的双方访问,从存储器2或者指令高速缓存3读出指令取出处理。数据处理装置100向存储器2以及指令高速缓存3双方访问,由此减少高速缓存脱靶的补偿。0048CPU。

20、1能够在流水线中执行从存储器2以及指令高速缓存3读出的指令。此外,CPU1在向存储器2以及指令高速缓存3访问时,向存储器2以及指令高速缓存3输出进行指令的读出的请求和读取目标的指令的地址。进而,CPU1在读出的指令为分支指令的情况下,输出分支通知。说明书CN104106046A4/15页70049存储器2存储通过多个指令描述的程序。存储器2基于来自CPU1的请求以及地址,将在该地址存储的指令向CPU1输出。用于从存储器2向CPU1输出指令的总线宽度为64位。0050指令高速缓存3仅在执行包含在程序中的分支指令时动作,将比存储器2的总线宽度大容量的数据从存储器2读出并预先存储。具体来说,指令高速。

21、缓存3能够存储相当于存储器2的总线宽度的2倍的128位的数据。然后,指令高速缓存3将所存储的数据分成64位的前半部分数据和64位的后半部分数据来存储。此外,存储在前半部分数据和后半部分数据中的指令是连续指令。0051进而,指令高速缓存3将所存储的指令的地址作为TAGADDR信息而存储。此外,指令高速缓存3含有比较从CPU1请求的指令的地址和在TAGADDR信息中存储的地址的比较器31。0052比较器31在CPU1中执行分支指令时,比较对存储器2进行访问的地址从CPU1请求的指令的地址和预先存储的指令的地址TAGADDR信息中存储的地址。然后,比较器31利用在指令高速缓存3中存储的指令的连续性,。

22、判断相对于从CPU1请求的指令的分支目标的指令存储在指令高速缓存3中。具体来说,比较器31在向存储器2访问的地址与存储在前半部分数据中的指令的地址一致的情况下,判断为分支目标的指令存储在后半部分数据中。0053图2是表示实施方式1涉及的数据处理装置100的指令高速缓存3的进一步详细构成的框图。图2所示的比较器31包含地址比较/命中判断部311、命中量计数器312。地址比较/命中判断部311通过来自CPU1的请求而被起动,比较向存储器2访问的地址和存储在TAGADDR信息中的地址,在两地址一致的情况命中时下输出命中的信息,在不一致的情况脱靶时下,输出脱靶的信息。0054命中量计数器312在向存储。

23、器2访问的地址与存储在前半部分数据中的指令的地址一致的情况下,输出命中量“2”。此外,命中量计数器312在向存储器2访问的地址与存储在后半部分数据中的指令的地址一致的情况下,输出命中量“1”。另外,命中量是表示CPU1能够向指令高速缓存3访问几次来读出数据的值。具体来说,在命中量为“2”的情况下,CPU1向指令高速缓存3进行2次访问而能够读出前半部分数据与后半部分数据。此外,在命中量“1”的情况下,CPU1向指令高速缓存3进行1次访问而仅能够读出后半部分数据。0055停止处理部4在比较器31判断为在指令高速缓存3中存储有分支目标的指令的情况下,生成用于在读出存储在指令高速缓存3中的指令的期间停。

24、止取出处理的停止信号,向存储器2输出。0056图3是表示实施方式1涉及的数据处理装置100的停止处理部4的进一步详细构成的框图。停止处理部4包含剩余停止量计数器41。剩余停止量计数器41通过来自CPU1的请求而被起动,基于来自指令高速缓存3的命中或者脱靶的信息、命中量,设置剩余停止量计数器量,当该剩余停止量计数器量为“0”时生成停止信号,并向存储器2输出。0057具体来说,剩余停止量计数器41根据来自指令高速缓存3的命中或者脱靶的信息、命中量而计算剩余停止量计数器量的初始值。例如,剩余停止量计数器41在从指令高速缓存3接收命中的信息和命中量“2”的情况下,将停止量计数器量设置为“1”,在从指令。

25、高速缓存3接收命中的信息和命中量“1”的情况下,将停止量计数器量设置为“0”。设置了说明书CN104106046A5/15页8初始值的剩余停止量计数器41在每次有来自CPU1的请求时,使停止量计数器量每次下降“1”。另外,在剩余停止量计数器41从CPU1接收分支信号的情况下,停止量计数器量无论是什么值都设为“0”,不生成停止信号。0058另外,数据处理装置100使向存储器2以及指令高速缓存3双方访问并读出的指令在选择器5中选择某一方的指令,向CPU1读出。例如,选择器5在从存储器2以及指令高速缓存3读出的指令相同的情况下,选择从指令高速缓存3读出的指令,在从存储器2以及指令高速缓存3读出的指令。

26、不同的情况下,选择从存储器2读出的指令。0059接下来,关于本实施方式1涉及的数据处理装置100的动作进行说明。图4是用于说明实施方式1涉及的数据处理装置100的动作的时序图。在图4所示的时序图中,分别示出了CPU1的时钟信号、读出目标地址、命中信息、命中量、停止信号、以及向存储器2的访问信号的波形。0060针对CPU1的一个时钟信号而使读出目标的指令的地址的一个地址从CPU1向存储器2以及指令高速缓存3输出。在图4所示的例子中,读出目标的指令的地址按地址A、地址A1、地址A2、地址A3、地址A4、以及地址A5的顺序,从CPU1向存储器2以及指令高速缓存3输出。0061首先,指令高速缓存3分别。

27、向前半部分数据存储地址A1的指令,向后半部分数据存储地址A2的指令。然后,比较器31在作为读出目标的指令的地址而接收到地址A1的情况下,比较所接收的地址A1和在TAGADDR信息中存储的地址。由于接收到的地址A1与在前半部分数据中存储的指令的地址一致,所以比较器31能够通过指令的连续性判断存储在后半部分数据中的指令的地址为地址A2。因此,比较器31将命中信息以及命中量“2”向停止处理部4输出。即,如图4所示,在读出目标的指令的地址是地址A1的定时,命中信息为“H”电平,命中量为“2”。0062由于在后半部分数据存储了地址A2的指令,所以停止处理部4能够在从指令高速缓存3读出地址A2的指令的期间。

28、停止向存储器2的访问。因此,剩余停止量计数器41在从比较器31指令高速缓存3接收到命中信息和命中量“2”时,将停止量计数器量设为“1”,在与向存储器2访问1次相当的期间,向存储器2输出停止信号。即,如图4所示,在读出目标的指令的地址为地址A2的定时,停止信号设为“H”电平。0063存储器2通过图1所示的运算处理部6而被输入对停止信号的反转信号和来自CPU1的请求的信号进行了AND运算而得到的信号作为向存储器2的访问信号。即,在来自CPU1的请求的信号为“H”电平,停止信号为“L”电平的情况下,向存储器2的访问信号为“H”电平,当停止信号为“H”电平时,向存储器2的访问信号为“L”电平。如图4所。

29、示,由于在读出目标的指令的地址为地址A2的定时,停止信号为“H”电平,所以向存储器2的访问信号为“L”电平。0064当向存储器2的访问信号为“L”电平时,停止从CPU1向存储器2的访问,数据处理装置100能够在从CPU1向存储器2的访问停止的期间减少消耗电力。0065如前所述,指令高速缓存3根据指令的连续性,分别向前半部分数据存储地址A1的指令,向后半部分数据存储地址A2的指令。但是,在CPU1执行地址A1的指令的结果是在接下来要读出的指令的地址为地址B的情况下,不能停止从CPU1向存储器2的访问。因此,CPU1对停止处理部4输出分支通知,取消停止信号为“H”电平。说明书CN104106046。

30、A6/15页90066图5是用于说明实施方式1涉及的数据处理装置100的基于分支通知进行的动作的时序图。在图5所示的时序图中,分别示出CPU1的时钟信号、读出目标地址、命中信息、命中量、停止信号、以及向存储器2的访问信号的波形。0067针对CPU1的一个时钟信号而使读出目标的指令的地址的一个地址从CPU1向存储器2以及指令高速缓存3输出。在图5所示的例子中,读出目标的指令的地址以地址A、地址A1、地址B、地址B1、地址B2、以及地址B3的顺序,从CPU1向存储器2以及指令高速缓存3输出。即,CPU1执行地址A1的指令的结果是,接下来读出的指令的地址从地址A2、地址A3、地址A4、以及地址A5的。

31、顺序变更为地址B、地址B1、地址B2、以及地址B3的顺序。0068但是,指令高速缓存3按照指令的连续性,分别向前半部分数据存储地址A1的指令,向后半部分数据存储地址A2的指令。然后,比较器31在作为读出目标的指令的地址而接收到地址A1的情况下,比较所接收的地址A1和在TAGADDR信息中存储的地址。由于所接收的地址A1与在前半部分数据中存储的指令的地址一致,所以比较器31通过指令的连续性而判断为在后半部分数据中存储的指令的地址为地址A2。因此,比较器31将命中的信息以及命中量“2”向停止处理部4输出。即,如图5所示,在读出目标的指令的地址为地址A1的定时,命中信息为“H”电平,命中量为“2”。。

32、0069停止处理部4进行将停止信号向存储器2输出的处理。但是,当地址A1的指令分支成地址B的指令时,接下来从CPU1请求的指令的地址不是地址A2,而是地址B。因此,若从CPU1向存储器2的访问停止,则CPU1进行高速缓存脱靶的补偿。因此,CPU1为了避免高速缓存脱靶,执行指令的结果是,在接下来读出的指令是分支的情况下,将分支通知向停止处理部4输出,取消使停止信号向存储器2输出的处理。即,如图5所示,在读出目标的指令的地址为地址A2的定时,取消停止信号为“H”电平。0070存储器2通过如图1所示的运算处理部6而被输入对停止信号的反转信号和来自CPU1的请求的信号进行了AND运算而得到的信号作为向。

33、存储器2的访问信号。因此,由于来自CPU1的请求的信号为“H”电平,停止信号为“L”电平,所以向存储器2的访问信号被维持为“H”电平的状态。0071当向存储器2的访问信号被维持在“H”电平的状态时,不停止从CPU1向存储器2的访问,数据处理装置100从CPU1向存储器2和指令高速缓存3双方访问,能够减少高速缓存脱靶的补偿。0072如以上那样,本实施方式1涉及的数据处理装置100在比较器31判断为向指令高速缓存3存储分支目标的指令的情况下,停止处理部4生成用于在读出存储于指令高速缓存3的指令的期间,停止取出处理的停止信号,向存储器2输出。因此,数据处理装置100在停止从CPU1向存储器2的访问的。

34、期间,能够减少消耗电力。0073另外,在数据处理装置100中,关于使存储器2形成在与CPU1相同的半导体衬底上的情况单芯片的半导体器件进行了说明,但也可以使存储器2形成在存在于CPU1的外部的不同半导体衬底上。但是,在使存储器2形成在存在于CPU1的外部的不同半导体衬底上的情况下,数据处理装置100有必要设置用于连接CPU1与存储器2的CPU接口。0074此外,数据处理装置100不限定于指令长度为固定的情况,也可以是指令长度可变的情况。说明书CN104106046A7/15页100075实施方式20076在实施方式1涉及的数据处理装置100中,关于包含能够存储相当于存储器2的总线宽度的2倍的数。

35、据的指令高速缓存3的构成进行了说明。但是,能够存储在指令高速缓存3中的数据的容量不限定于存储器2的总线宽度的2倍。因此,在本实施方式2涉及的数据处理装置中,关于包含与实施方式1相比能够存储的数据更大的指令高速缓存的构成进行说明。0077图6是表示实施方式2涉及的数据处理装置的构成的框图。图6所示的数据处理装置200包含CPU1、存储器2、指令高速缓存3A、以及停止处理部4,从CPU1向存储器2以及指令高速缓存3A的双方访问,从存储器2或者指令高速缓存3读出指令取出处理。此外,对于数据处理装置200与实施方式1涉及的数据处理装置100相同的构成要素,标注相同的附图标记,不重复详细的说明。0078。

36、指令高速缓存3A仅在执行包含在程序中的分支指令时动作,从存储器2读出并预先存储比存储器2的总线宽度大的容量的数据。具体来说,指令高速缓存3A能够存储相当于存储器2的总线宽度的4倍的256位的数据。然后,指令高速缓存3A将所存储的数据按每64位而分成D0数据、D1数据、D2数据、以及D3数据这4个数据来存储。另外,在D0数据D3数据中存储的指令是连续指令。0079进而,指令高速缓存3A将所存储的指令的地址存储为TAGADDR信息。此外,指令高速缓存3A包含比较器31A,该比较器31A比较从CPU1请求的指令的地址与存储在TAGADDR信息中的地址。0080当在CPU1中执行分支指令时,比较器31。

37、A比较向存储器2访问的地址从CPU1请求的指令的地址与预先存储的指令的地址存储在TAGADDR信息中的地址。然后,比较器31A利用在指令高速缓存3A中存储的指令的连续性,判断相对于从CPU1请求的指令的分支目标的指令存储在指令高速缓存3A中。具体来说,比较器31A在向存储器2访问的地址与在D0数据中存储的指令的地址一致的情况下,判断为分支目标的指令存储在D1数据D3数据中。0081图7是表示实施方式2涉及的数据处理装置200的指令高速缓存3A的进一步详细构成的框图。图7所示的比较器31A包含地址比较/命中判断部311A、命中量计数器312A。地址比较/命中判断部311A通过来自CPU1的请求而。

38、被起动,比较向存储器2访问的地址与存储在TAGADDR信息中的地址,在两地址一致的情况命中的情况下输出命中的信息,在不一致的情况下输出脱靶的信息。0082命中量计数器312A在向存储器2访问的地址与在D0数据中存储的指令的地址一致的情况下,输出命中量“4”。命中量计数器312A在向存储器2访问的地址与在D1数据中存储的指令的地址一致的情况下,输出命中量“3”。输出命中量“4”。命中量计数器312A在向存储器2访问的地址与在D2数据中存储的指令的地址一致的情况下,输出命中量“2”。输出命中量“4”。命中量计数器312A在向存储器2访问的地址与在D3数据中存储的指令的地址一致的情况下,输出命中量“。

39、1”。另外,命中量是表示CPU1能够向指令高速缓存3A访问几次来读出数据的值。具体来说,在命中量为“4”的情况下,CPU1向指令高速缓存3A访问4次,能够读出D1数据D3数据的指令。0083接下来,关于本实施方式2涉及的数据处理装置200的动作进行说明。图8是用说明书CN104106046A108/15页11于说明实施方式2涉及的数据处理装置200的动作的时序图。在图8所示的时序图中,分别示出了CPU1的时钟信号、读出目标地址、命中信息、命中量、停止信号、以及向存储器2的访问信号的波形。0084针对CPU1的一个时钟信号而使读出目标的指令的地址的一个地址从CPU1向存储器2以及指令高速缓存3A。

40、输出。在图8所示的例子中,读出目标的指令的地址按地址A、地址A1、地址A2、地址A3、地址A4、以及地址A5的顺序,从CPU1向存储器2以及指令高速缓存3A输出。0085首先,指令高速缓存3A分别向D0数据存储地址A1的指令、向D1数据存储地址A2的指令、向D2数据存储地址A3的指令、以及向D3数据存储地址A4的指令。然后,比较器31A在作为读出目标的指令的地址而接收到地址A1的情况下,比较接收的地址A1与存储在TAGADDR信息中的地址。由于接收的地址A1与存储在D0数据中的指令的地址一致,所以比较器31A根据指令的连续性,能够判断存储在D1数据D3数据中的指令的地址是地址A2地址A4。因此。

41、,比较器31A将命中的信息以及命中量“4”向停止处理部4输出。即,如图8所示,在读出目标的指令的地址是地址A1的定时,命中信息为“H”电平,命中量为“4”。0086由于在D1数据D3数据中存储有地址A2地址A4的指令,所以停止处理部4能够在从指令高速缓存3读出地址A2地址A4的指令的期间,停止向存储器2的访问。因此,剩余停止量计数器41在从比较器31A指令高速缓存3A接收到命中的信息和命中量“4”时,将停止量计数器量设置为“3”,在与向存储器2访问3次相当的期间,将停止信号向存储器2输出。即,如图8所示,在读出目标的指令的地址为地址A2地址A4的定时,停止信号为“H”电平。0087存储器2通过。

42、图1所示的运算处理部6而被输入对停止信号的反转信号和来自CPU1的请求的信号进行了AND运算而得到的信号作为向存储器2的访问信号。即,在来自CPU1的请求的信号为“H”电平,停止信号为“L”电平的情况下,向存储器2的访问信号为“H”电平,停止信号为“H”电平时为“L”电平。如图8所示,在读出目标的指令的地址是地址A2地址A4的定时,由于停止信号为“H”电平,所以向存储器2的访问信号为“L”电平。0088当向存储器2的访问信号为“L”电平时,从CPU1向存储器2的访问停止,数据处理装置200能够在从CPU1向存储器2的访问停止的期间,减少消耗电力。0089如以上那样,关于本实施方式2涉及的数据处。

43、理装置200,指令高速缓存3A具有存储器2的总线宽度的4倍的容量,停止处理部4使向存储器2访问的次数最大停止3次,因此,与本实施方式1相比,能够使停止向存储器2的访问的期间变长,使消耗电力更加减少。0090另外,指令高速缓存3A的容量不限定于4倍,也可以构成为,具有存储器的总线宽度的N倍的容量,停止处理部4使向存储器2访问的次数最大停止N1次。0091实施方式30092在实施方式1以及2涉及的数据处理装置100、200中,关于利用设置在CPU1的外部的停止处理部4取出处理控制部来停止向存储器2的访问的构成进行了说明。但是,CPU1在内部所包含的指令队列中有空闲的情况下,向存储器2访问,进行从该。

44、存储器2读出指令的预取出处理。因此,在本实施方式3涉及的数据处理装置中,关于在CPU的内部设置说明书CN104106046A119/15页12取出处理控制部来停止向存储器2的访问的构成进行说明。0093图9是表示本实施方式3涉及的数据处理装置的构成的框图。如图9所示的数据处理装置300包含CPU1以及CPU接口7,经由CPU接口7,从CPU1向存储器2访问,从存储器2读出指令预取出处理。另外,对于数据处理装置300与实施方式1涉及的数据处理装置100相同的构成要素,标注相同的附图标记,不重复进行详细的说明。0094数据处理装置300即使向存储器2的访问需要数个等待WAIT的等待期间,只要指令提。

45、供能力足够,则通常情况下的性能就不会降低。因此,数据处理装置300只要仅在执行分支指令时容许性能恶化即可。0095CPU1包含指令队列11、指令解码器12、数据通道13、指令取出接口部14、以及预解码器15。指令队列11是用于从存储器2事先读出指令预取出处理并存储的存储部。指令解码器12是依次读出存储在指令队列的指令,对指令进行解码的CPUCNT部的一部分。数据通道13是执行在指令解码器12中解码得到的指令的指令执行部。指令取出接口部14使从指令队列11的读出请求IFREQ向存储器2输出。0096预解码器15判断在指令解码器12中接下来要解码的指令是否是分支指令,如果该指令是分支指令,则生成用。

46、于停止预取出处理的停止信号,向指令取出接口部14输出。即,预解码器15能够作为取出处理控制部而发挥作用,停止向存储器2的访问。0097在说明本实施方式3涉及的数据处理装置300的动作前,说明不包含预解码器15的构成的数据处理装置的动作。图10是用于说明在不包含预解码器15的构成的数据处理装置中预取出处理的时序的时序图。图10的A是在执行分支指令的定时进行预取出处理的例子,图10的B是在执行分支指令前的定时进行预取出处理的例子。0098在此,在图10所示的时序图中,图示有分支指令、分支目标指令、以及预取出处理各自的时序。另外,在分支指令以及分支目标指令中,包含指令取出阶段IF、指令解码阶段D、以。

47、及执行阶段E。在指令取出阶段IFINSTRUCTIONFETCH中,进行将在指令队列中存储的指令向指令解码器读出的处理。在指令解码阶段DDECODE中,进行从指令取出阶段IF提供的指令的解码处理。在执行阶段EEXECUTE中,进行在指令解码阶段D中被解码得到的指令的执行。例如,进行算术逻辑计算和/或分支判断处理等。0099如图10所示,CPU分别在1时钟中处理分支指令以及分支目标指令的指令取出阶段IF以及指令解码阶段D,在2个时钟中处理以1个等待向存储器访问的预取出处理。因此,如图10的A所示的时序图示出那样,CPU如果在指令取出阶段IF开始的定时开始预取出处理的执行,就能够从执行阶段E的第1。

48、个时钟开始执行分支目标指令的预取出处理。0100如果能够从执行阶段E的第1个时钟开始执行分支目标指令的预取出处理,CPU就能够从分支指令的执行阶段E的第3个时钟开始执行分支目标指令的指令取出阶段IF。即,CPU能够将分支目标指令的指令取出阶段IF成为执行等待的期间IFSTALL抑制为1个时钟。0101但是,如图10的B所示的时序图示出那样,如果CPU在指令解码阶段D开始的定时开始预取出处理的执行,就不能从执行阶段E的第1个时钟开始执行分支目标指令的预取出处理。因此,由于CPU在执行阶段E的第1个时钟通过其它指令的预取出处理向存储器进行访问,所以不能为了执行分支目标指令的预取出处理而向存储器访问。

49、。因此,由于CPU进行的分支目标指令的预取出处理从分支指令的执行阶段E的第2个时钟开始,所以分说明书CN104106046A1210/15页13支目标指令的指令取出阶段IF成为执行等待的期间IFSTALL需要2个时钟。0102此外,在分支指令的指令解码阶段D之前开始的预取出处理由于从存储器读出与分支目标指令不同的指令,所以从存储器读出执行所不需要的指令,是无用的预取出处理。0103于是,在本实施方式3涉及的数据处理装置300中设置预解码器15,导入在分支指令前的时钟停止预取出处理的机构,因此,减少了向存储器2的不需要的访问,减少消耗电力。0104图11是表示实施方式3涉及的数据处理装置300的指令队列11以及预解码器15的构成的框图。预解码器15包含存储部151、比较部152、以及运算部153。存储部151预先存储有需要停止预取出处理的分支指令停止对象指令。存储部151存储有例如从分支指令1至分支指令N的N个分支指令。0105比较部152比较从指令队列11读出的对象指令与在存储部151中预先存储的分支指令停止对象指令。运算部153运算将对象指令和在存储部151中存储的分支指令的每一个进行比较而得到的结果,生成停止信号。在运算部153中生成的停止信号在放大器154中被放大至预定的电压电平,向指令取出接口部14输出。0106另外,指令队列11具。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1