运算处理装置、信息处理装置及其控制方法技术领域
本发明涉及运算处理装置、信息处理装置及其控制方法。
背景技术
作为处理器的技术,公知有以下的方法。即,是使用与按每个指令
定义的电流消耗量具有相关性的值来预测各时钟周期下的消耗电流,如
果其变化率为规定值以上,则更换指令或置换成虚拟指令以使变化量变
小的方法。
专利文献1:日本特开2004-334641号公报
专利文献2:日本特开平10-207859号公报
专利文献3:日本特开2004-13820号公报
非专利文献1:"The SPARC Architecture Manual",version9,
SPARC International,Inc.,Santa Clara,California,SAV09R1459912
发明内容
本发明的目的在于,提供一种通过简易的构成就能够可靠地抑制消
耗电流的变化的运算处理装置。
将被指令解释部解释后的指令向运算部发布,并且计算出运算部因
在第1规定期间发布的指令而消耗的消耗电流值、和运算部因能够在第
2规定期间发布的指令而消耗的电流的消耗电流预定值,在消耗电流预
定值相对消耗电流值的变化量超过规定的限制值时,在第2规定期间中
抑制一部分指令的发布。
根据上述构成,能够提供通过简易的构成就能够可靠地抑制运算处
理装置中消耗电流的变化的构成。
附图说明
图1是用于对参考例的处理器中指令发布控制进行说明的处理器的
内部框图。
图2是用于对实施例的处理器中指令发布控制进行说明的处理器的
内部框图。
图3是图2所示的处理器的构成中特别地将指令发布控制部以及运
算单元提取出来加以表示的框图。
图4是用于对实施例的处理器中指令发布控制的方法进行说明的图
(之1)。
图5是用于对实施例的处理器中指令发布控制的方法进行说明的图
(之2)。
图6是用于对实施例的处理器中指令发布控制的方法进行说明的、
表示电流值表的构成例的图。
图7是用于对在实施例的处理器中限制指令的发布时的例子进行说
明的图。
图8是用于对在实施例的处理器中发布虚拟指令时的例子进行说明
的图。
图9是用于对实施例的处理器中指令发布控制的方法进行说明的、
表示程序中的指令与地址之间的关系的例子的图。
图10A是用于对实施例的处理器中指令发布控制的方法进行说明的
动作流程图(监控方法1中的消耗电流增加时,之1)。
图10B是用于对实施例的处理器中指令发布控制的方法进行说明的
动作流程图(监控方法1中的消耗电流增加时,之2)。
图11是对执行图10A、图10B所记载的流程图中的动作的一部分
的电路的构成例进行表示的图。
图12是用于对实施例的处理器中指令发布控制的方法进行说明的
动作流程图(监控方法1中的消耗电流减少时)。
图13A是用于对实施例的处理器中指令发布控制的方法进行说明的
动作流程图(监控方法2中的消耗电流增加时,之1)。
图13B是用于对实施例的处理器中指令发布控制的方法进行说明的
动作流程图(监控方法2中的消耗电流增加时,之2)。
图14是用于对实施例的处理器中指令发布控制的方法进行说明的
动作流程图(监控方法2中的消耗电流减少时)。
图15是对能够应用实施例的处理器的信息处理装置的硬件构成例
进行表示的框图。
具体实施方式
以下,对实施例进行说明。
在实施例中,在运算处理装置中、即作为半导体集成电路的处理器
中通过抑制指令发布数、发布频度,来实现电源噪声的抑制。其中,作
为运算处理装置的具体例,可举出CPU(Central Processing Unit)、GPU
(Graphical Processing Unit)、DSP(Digital Signal Processor)等。
处理器的低消耗电力化技术是为了实现信息通信设备的低消耗电
力化的重要技术。在处理器的低消耗电力化中,只向执行处理所需要的
寄存器供给时钟的时钟门控、只使执行处理所需要的RAM(Random
Access Memory)启动(enable)等抑制电路动作率的方法是有效方法。
但是,在这些方法中,为了防止产生因执行处理时与不执行处理时之间
的消耗电流之差引起的电源噪声,希望抑制作为电流时间变化率的
dI/dt。
作为用于降低LSI(Large Scale Integrated circuit)内部的电源噪
声的方法,存在在LSI内部搭载具有电容成分的电容器单元或去耦合电
容单元等,或者在封装体、系统板上还搭载去耦合电容器的方法。但如
果使用去耦合电容单元,则认为会引起芯片面积的增加、漏电电流的增
加等。
另外,作为用于降低电源噪声的电路控制方法,有通过在电路动作
开始时将时钟频率抑制得低,来将电流时间变化率dI/dt抑制得低这一
方法。并且,有一种在软件的编译阶段就预测指令的消耗电流,通过软
件来调整指令发布的方法。
但是,对于上述在电路动作开始时就将时钟频率抑制得低来将电流
时间变化率dI/dt抑制得低的方法而言,不以周期模型(cycle base)监
控电流变化量,而在花费规定的期间使时钟频率阶段性地变化的同时供
给时钟信号。因此认为,如果不插入相对时钟频率大的富裕量,则无法
应对因大电流变化而引起的电源噪声。而且,还可以想到针对小噪声使
时钟频率过度变慢的情况。即,在该方法中,由于不是根据噪声来调整
时钟频率,所以认为控制精度低。
另外,对上述在软件的编译阶段预测指令的消耗电流,通过改变指
令的顺序等用软件来调整指令的发布的方法而言,由于通过软件进行调
度,所以认为目标码变大。而且,由于需要能够以周期模型来完全把握
指令依赖性的编译器,所以难以实现。另外,在流水线互锁等情况下,
认为存在无法通过软件来应对的情况。这里,流水线互锁(pipeline
interlock)是指检测出冒险(hazard)并加以避免的机构。与数据依赖
相关的冒险(data dependent hazard)是指由于多个指令被乱序处理,
所以导致运算结果的写入、读出与机器语言的程序设计所意图的顺序前
后颠倒,成为与期待不同的结果的状况。将检测出冒险并使流水线停止
的情况称为“流水线互锁”。由于在流水线互锁中停止执行指令,所以消
耗电流减少,为了缓和这样的消耗电流的减少,使用“只执行虚拟指令
的虚拟电路”。这里,“虚拟指令”是不对后续的执行指令造成影响的指
令,“虚拟电路”是执行“虚拟指令”来消耗电流,使消耗电流的减少缓和
的电路。尤其在大规模的系统中,认为与因流水线互锁而引起的消耗电
流的减少对应的虚拟电路的规模变大,芯片面积增加、消耗电力等增加
等。
接着,为了和以下说明的实施例进行比较,对运算处理装置的参考
例进行说明。图1是表示作为运算处理装置的参考例的处理器的内部构
成的框图。图1的处理器例如是SPARC(Scalable Processor
ARChitecture)处理器,具有指令高速缓存器(指令保持部)11、解码
器(指令解释部)12、指令发布控制部13以及运算机构14。运算机构
14包括运算单元(运算部)14A、14B、14C、14D。
指令高速缓存器11是保存程序的高速缓存存储器。解码器12对程
序中包含的指令进行解码(解释)。指令发布控制部13对运算单元14A、
14B、14C、14D发布指令。运算单元(ALU:Arithmetic and Logic Unit)
14A、14B、14C、14D执行被发布的指令。而且,多个运算单元14A、
14B、14C、14D分别分担运算功能。例如可设为运算单元14A执行固
定小数点的加减运算,运算单元14B执行固定小数点的乘法运算,运算
单元14C执行浮动小数点的加减运算,运算单元14D执行浮动小数点
的乘法运算。此外,并不限定于该例,例如也可以使多个运算单元中的
2个以上运算单元执行同一运算功能。以下对该处理器的动作中、尤其
是与程序指令的发布相关的动作进行说明。
解码器12从指令高速缓存器11中获取(取得)指令对其进行解码,
并传递给指令发布控制部13。指令发布控制部13进行将从解码器传递
来的指令向运算单元14A~14D的发布。更具体而言,指令发布控制部
13将从解码器12传递来的指令保持在内部寄存器(省略图示)中,对
保持着能够发布的指令的内部寄存器内的入口进行识别。指令发布控制
部13从识别出的入口所保持的指令中选择要发布的指令。按能够执行
入口中保持的指令的每个运算单元来选择实际发布的指令。此时,对同
一运算单元能够执行的指令间赋予优先顺序,以该优先顺序的顺序来选
择所发布的指令。指令发布控制部13向对应的运算单元发布选择出的
指令,在该指令发布后释放对应的寄存器的入口。
在上述参考例的处理器中,由于没有特别考虑当指令发布控制部13
发布指令时,运算单元14A、14B、14C、14D执行指令时的消耗电流
的变化,所以存在发生电源噪声的可能性。
实施例具有防止电源噪声产生的构成。根据实施例涉及的处理器,
存储因在过去几个周期的期间发布的指令而消耗的电流的估计值。这
里,上述估计值是处理器整体消耗的电流的估计值。而且,计算出根据
当前周期能够发布的指令概算出的消耗电流值相对所存储的电流值的
增加量。然后,判定计算出的增加量是否超过处理器的允许电流变化量
(称为“限制值”),在超过限制值的情况下,限制指令的发布以便不超
过限制值。该限制值可以根据噪声解析模拟的结果或者根据测定值调查
获得。
或者,在实施例涉及的处理器中,存储因在过去几个周期的期间发
布的指令而消耗的电流的估计值,计算出根据当前周期能够发布的指令
概算出的消耗电流值相对该电流值的减少量。判定计算出的减少量是否
超过处理器的限制值,在超过的情况下发布虚拟指令以使其不超过限制
值。
作为虚拟指令,例如在SPARC的体系结构的情况下,可以利用
Global register zero(g0),应用使g0成为作为运算结果的储存寄存器
的目标(destination)的指令等对程序的执行不造成影响的现有指令。
或者,也可以通过使现有的电路工作来定义不变更处理器状态那样的新
建虚拟指令并加以应用。优选虚拟指令是只要不超过限制值,便尽可能
使消耗电流大幅变化的指令。这里,Global register zero(g0)是指如
果进行读出则总是得到"0",即使进行写入,值也不变的全局寄存器。
或者,在实施例涉及的指令发布装置中,存储在过去几个周期的期
间发布的指令或由这些指令消耗的电流的估计值。而且,计算出根据当
前周期能够发布的指令概算出的电流值相对该电流值的增加量。判定计
算出的增加量是否超过处理器的限制值,在超过的情况下限制指令的发
布以使其不超过限制值。
或者,在实施例涉及的指令发布装置中,存储在过去几个周期的期
间发布的指令或由这些指令消耗的电流的估计值。而且,计算出根据当
前周期能够发布的指令概算出的电流值相对该电流值的减少量。判定计
算出的减少量是否超过处理器的限制值,在超过的情况下发布对后续的
执行指令不造成影响的虚拟指令,以使其不超过限制值。
另外,在实施例中,当P(t)>P(t-1,t-N)时,按照满足P
(t)≤P(t-1,t-N)+ΔP1的条件的方式限制当前周期下的指令的发
布。这里,变量t表示当前周期,P(t-1,t-N)表示根据过去N个
周期的指令估计的平均消耗电流,ΔP1表示被处理器允许的限制值,P
(t)表示根据在当前周期能够发布的指令估计的消耗电流值。
另外,在实施例中,当P(t)<P(t-1,t-N)时,按照满足P
(t)≥P(t-1,t-N)-ΔP2的条件的方式,在当前周期中发布对后
续的执行指令不造成影响的虚拟指令。这里,与上述相同,变量t表示
当前周期,P(t-1,t-N)表示根据过去N个周期的指令估计的平均
消耗电流,ΔP2表示被处理器允许的限制值,P(t)表示根据在当前周
期能够发布的指令估计的消耗电流值。
图2是用于对实施例涉及运算处理装置的处理器的内部构成进行说
明的框图。图2的处理器例如是SPARC处理器,具有指令缓存器11、
解码器12、指令发布控制部13X以及运算机构14。运算机构14包括运
算单元14A、14B、14C、14D。
指令缓存器11是保存程序的高速缓存存储器。解码器12对程序中
所含的指令进行解码。指令发布控制部13X对运算单元14A、14B、14C、
14D发布指令。运算单元(ALU:Arithmetic and Logic Unit)14A、14B、
14C、14D执行被发布的指令。需要说明的是,如上所述运算单元14A、
14B、14C、14D分别分担运算功能。
根据实施例,处理器中的指令发布机构(即处理器中的指令发布控
制部13X)除了具有以往的指令发布控制部的功能的指令发布控制功能
部13R之外,还具有电流变化计算部13C以及指令发布调整部13A。
电流变化计算部13C基于被发布的指令的种类、发布数来计算电流变
化,在计算出的电流变化超过预先设定的阈值时输出对指令发布进行限
制的指示。指令发布调整部13A接收该指示,对所发布的指令进行限制。
其结果,能够降低因电流时间变化率dI/dt引起的电源噪声。
下面,对图2的处理器的动作中尤其与指令的发布相关的动作进行
说明。解码器12从指令缓存器11中获取指令,对其进行解码,并传递
给指令发布控制部13X。在指令发布控制部13X中,根据解码后的结果
来选择指令发布控制功能部13R能够发布的指令,电流变化计算部13C
对选择出的指令进行以下那样的基于消耗电流变化的发布控制。
指令发布控制部13X的电流变化计算部13C对保持了能够发布的指
令的内部寄存器的入口进行识别。然后,运算单元14A、14B、14C、
14D基于识别出的入口中保持的能够发布的指令的种类、数量等,计算
执行能够发布的指令时的消耗电流值。电流变化计算部13C还根据指令
数、种类来计算过去数个周期的平均消耗电流。在执行能够发布的指令
时的消耗电流值相对该过去的平均消耗电流的变化量(也简称为“变化
量”)不超过特定的阈值(即限制值ΔI)的范围内,决定在规定的期间
内能够发布的最大指令数,并将其传递给指令发布调整部13A。上述规
定的期间在本实施例中为1个周期。该规定的期间并不限定于1个周期,
例如也可以是数个周期。其中,在如实施例那样是超标量方式的处理器
时,作为硬件而言能够同时发布的指令数的上限是被决定的,同时能够
发布的指令数为该上限以下作为前提。在实施例的处理器中,由于运算
单元14A、14B、14C、14D的个数为4个,所以同时能够发布的指令
数的上限为4。
指令发布调整部13A接收在规定的期间内能够发布的最大指令数,
基于运算单元14A、14B、14C、14D中的、与所发布的各个指令对应
的各个运算单元,选择实际发布的指令。另外,在同时能够发布的指令
有多个的情况下,使多个指令之间具有优先顺序,按照优先顺序来选择
指令,以使每1个周期发布的指令数控制在能够发布的最大指令数内。
其中,作为优先顺序的决定方法,例如可以从当前能够发布的指令中在
程序中的执行顺序靠前的指令(如果不夹着分支指令,则在主存储装置
中储存程序的情况下从地址小的指令)开始按顺序发布、即基于程序中
的指令的出现顺序进行发布。或者,也可以维持每1个周期发布的指令
数不变,通过按照只在多个周期中的1个周期发布指令的方式限制指令
发布的频度,来限制所发布的指令数。而且,指令发布控制部13X如此
地以根据需要限制了指令的发布数的方式,对运算单元14A、14B、14C、
14D中对应的运算单元发布指令。然后,该指令发布控制部13X将发布
过的指令的入口释放。这样,在不超过限制值的范围发布尽量多的指令。
即,电流变化计算部13C设置在解码器12与运算单元14A、14B、
14C、14D之间,如图3所示那样,具有计算部13C、指令监控器13M、
以及电流表13T。指令监控器13M对到当前时刻为止的在规定数的周
期发布了的指令的种类、发布数进行监控。电流表13T按指令的种类来
保存对应的电流预测值(参照后述的图6)。其中,电流表13T可以如
上述那样根据指令的种类来保持电流预测值,或者也可以不基于指令的
种类地保持每1个指令的电流值。所保存的指令的种类、电流预测值可
以是按照在搭载有该处理器的LSI进行动作时能够调整的方式,通过程
序可变的构成。另外,与上述指令的种类对应的电流预测值例如可以在
进行LSI设计时进行电力模拟来预先求出。或者,也可以通过对实际制
造出的芯片中的处理器整体的消耗电力进行测定,来求出各指令的消耗
电力并进行设定。
电流变化计算部13C的计算部13CC利用指令监控器13M保存的
规定数的周期量的指令履历、和当前能够发布的指令,并参考电流表
13T来预测消耗电流的变化量。在消耗电流增加、作为消耗电流变化量
的电流增加量超过限制值的情况下,指令发布调整部13A按照增加量控
制在限制值以下的方式,求出能够发布的最大指令数,并输出能够发布
的最大指令数和电流计算结果。即,该情况下,通过限制当前发布的指
令的发布,来减少运算单元14A、14B、14C、14D中的消耗电流,将
其抑制在限制值以内。另一方面,在电流减少、作为消耗电流变化量的
电流减少量超过限制值的情况下,指令发布调整部13A按照减少量控制
在限制值以下的方式,求出所需的虚拟指令的发布数,并输出所需的虚
拟指令的发布数和电流计算结果。即,该情况下,除了程序中原本存在
的指令之外,通过虚拟指令的发布使运算单元14A、14B、14C、14D
中的消耗电流增加,将消耗电流抑制在限制值以内。
指令发布调整部13A按照由电流变化计算部13C输出的能够发布的
最大指令数或者所需的虚拟指令的发布数,对在规定期间内从指令发布
控制部13X发布的指令进行限制,或者只发布所需发布数量的虚拟指
令。
根据实施例,通过在处理器的指令发布控制部13X中设置电流变化
计算部13C、指令发布调整部13A,能够实现与实际执行的指令对应的
更高精度的电流变化控制。
以下,对消耗电流变化的计算方法的例子进行说明。作为消耗电流
变化的计算方法,有监控方法1以及监控方法2,可以使用监控方法1
以及监控方法2中的任意一个。
首先,利用图4对监控方法1进行说明。在监控方法1中,基于紧
前X个周期的指令数或者指令发布频度,对当前周期下的指令发布数或
者指令发布频度进行控制。以下对具体例进行说明。
所允许的最大电流变化值(即限制值)ΔI被预先设定给预先电流变
化计算部13C。电流变化计算部13C的计算部13CC参照指令监控器
13M以及电流表13T,计算在紧前X个周期发布的指令的电流预测值
的平均(将计算结果设为A)。并且,还计算当前能够发布的指令的电
流预测值(将计算结果设为B)。接着,计算电流值的差量B-A,如果
B-A>ΔI,则从电流变化计算部13C对指令发布调整部13A传递接下
来能够发布的最大指令数。另一方面,如果B-A<-ΔI,则从电流变
化计算部13C对指令发布调整部13A指示所需的虚拟指令的发布数。
消耗电流变化的计算可以按每1个周期进行,或者也可以按一定周期期
间进行。这里,按一定周期期间进行的方法是不在每个周期都进行消耗
电流变化的计算,而是按规定数的周期进行电流变化的计算的方法。
接着,利用图5对监控方法2进行说明。在监控方法2中,基于包
含当前周期在内的当前与紧前X个周期的指令数或者指令发布频度、和
更靠前X个周期的指令数或者指令发布频度,对当前周期下的指令发布
数或者指令发布频度进行控制。以下对具体例进行说明。
在监控方法2中,也将所允许的最大电流变化值(即限制值)ΔI预
先设定给电流变化计算部13C。电流变化计算部13C的计算部13CC参
照指令监控器13M以及电流表13T,分别计算包含当前周期在内的当
前与紧前X个周期发布的指令的电流预测值的平均(或者和)(设为A)、
和更靠前X个周期发布的指令的电流预测值的平均(或者和)(设为B),
并将其相互比较。如果B-A>ΔI,则从电流变化计算部13C对指令发
布调整部13A传递当前能够发布的最大指令数。如果B-A<-ΔI,则
从电流变化计算部13C对指令发布调整部13A指示所需的虚拟指令的
发布数。上述X的值根据应该处理的电源噪声的频带来设定。其中,高
频波段的噪声由安装于芯片的去耦合电容单元等除去,因此上述应该处
理的电源噪声的频带是中低频率的波段。一般频率高的噪声周期短,频
率低的噪声周期长。因此,通过根据应该处理的电源噪声的频带适当地
调整上述X的值,就能够监控该电源噪声。其中,该情况下,消耗电流
变化的计算可以按每1个周期进行,也可以是按一定周期期间进行的方
法。这里,按一定周期期间进行方法是不按每个周期都进行消耗电流变
化的计算,而按规定数的周期进行消耗电流变化的计算的方法。
接下来,利用图6、图7以及应用了上述监控方法1时的具体动作
例,对上述实施例的处理器中的消耗电流增加时的动作进行说明。
图6表示上述电流表13T的一个例子。在该例子的情况下,电流表
13T中储存有各指令的种类Inst1、Inst2、......、Inst8。并且,在电流
表13T中,作为上述4个运算单元14A~14D中对应的运算单元执行该
种类的各个指令时的消耗电流值,分别储存有300、200、......、250[μA]。
而且,在电流变化计算部13C中,作为电流变化限制值(也简称为
“限制值”),设定了ΔP1=500[μA]。另外,如上所述,在该处理器中
同时能够发布的指令数最大为4(#1、#2、#3、#4)。
图7表示了S1、S2、S3的各时刻的过去5个周期(“5”~“1”)发
布的指令、和在当前周期(“0”)中能够发布的指令。例如,图7表示
了在上段时刻S1中没有过去5个周期发布的指令,当前能够发布的指
令为Inst1、Inst2、Inst3、Inst4。
另外,在图7中,将不同时执行能够发布的指令#1、#2、#3、
#4各个时的每1个指令的消耗电流值分别设为20[μA]。
另外,将监控期间设为N=4[周期]。在图7的时刻S1的情况下,
在过去4个周期(“4”~“1”)中,同时能够发布的指令#1、#2、#3、
#4中的任意一个都未被执行。因此,该期间的运算单元14A、14B、
14C、14D的消耗电流(也简称为“消耗电流”)为20×4×4=320[μA],
过去4个周期中的每1个周期的平均消耗电流P(t-1,t-4)为320/4
=80[μA]。另一方面,当前能够发布的指令Inst1、Inst2、Inst3、Inst4
的消耗电流值P(t)为300+200+250+150=900[μA]。其结果,变
化量为P(t)-P(t-1,t-4)=820[μA],比限制值ΔP1=500[μA]
大320[μA]。因此,限制该4个周期的监控期间的下一个周期中的指
令发布数。其结果,由指令发布调整部13A发布限制后的指令。在图7
的例子中,按地址顺序选择指令Inst1、Inst2指令(能够发布的最大指
令数=2)。其原因在于,在还选择了指令Inst3的情况下,发布共计3
个指令Inst1、Inst2、Inst3时的变化量为300+200+250+20-80=690
[μA],超过限制值500[μA]。该情况下,结果发送当前能够发布的4
个指令Inst1、Inst2、Inst3、Inst4中地址顺序早的2个指令Inst1、Inst2,
将剩余2个指令Inst3、Inst4的发布延迟到下一周期以后(图7的中段
的时刻S2)。
接着,在图7的中段的时刻S2的情况下,当前能够发布的指令为4
个指令Inst5、Inst6、Inst3、Inst4。其中,2个指令Inst3、Inst4是如
上所述在之前的周期延迟了发布的指令,其他2个指令Inst5、Inst6是
对指令发布控制部13X新赋予的指令。该情况下,过去4个周期的监控
期间中的平均电流值P(t+1-1,t+1-4)为(20×4×3+20×2+300
+200)/4=195[μA]。另一方面,能够发布的上述4个指令Inst5、Inst6、
Inst3、Inst4的消耗电流值P(t+1)为250+200+250+150=850[μA]。
其结果,变化量为P(t+1)-P(t+1-1,t+1-4)=655[μA],比
限制值ΔP1=500[μA])大155[μA]。因此,限制该4个周期的监控
期间的下一周期中的指令发布数。指令发布调整部13A发布限制了发布
数后的指令。在图7的例子中,以地址顺序选择3个指令Inst3、Inst4、
Inst5(能够发布的最大指令数=3)。其结果,该3个指令Inst3、Inst4、
Inst5被发布,剩余的1个指令Inst6被延迟到下一周期以后(图7的下
段的时刻S3)。
此外,也能够成为基于超过限制值的量的电流的大小,使能够发布
的最大指令数不同那样的构成。而且,关于所发布的指令的选择,如上
述那样,按指令的地址顺序选择。这样,调整成在不超过限制值的范围
同时发布尽可能多的指令。另外,也可以将在前面的周期以前延迟的指
令优先发布。
接下来,利用图6、图8以及应用了上述监控方法1时的具体动作
例,对上述实施例的处理器中的消耗电流减少时的动作进行说明。
在电流变化计算部13C中,将限制值与上述ΔP1同样设定为ΔP2
=500[μA],同时能够发布的指令数也与上述同样最大为4。而且,与
上述相同,将没有同时执行能够发布的指令#1、#2、#3、#4各个时
的消耗电流按每一个指令设为20[μA]。另外,与上述同样设定为监控
期间N=4[周期]。
在图8的最上段的时刻S11中,利用指令监控器13M监控在过去4
个周期(“4”~“1”)的监控期间发布的指令。若参照图6的电流表13T
的例子,则过去4个周期的平均电流值P(t-1,t-4)为925[μA]。
另一方面,由于没有当前(周期“0”)能够发布的指令,所以电流值P
(t)为80[μA]。其结果,变化量为P(t-1,t-4)-P(t)=845
[μA],比限制值ΔP2=500[μA]大345[μA]。因此,电流变化计算
部13C决定所需的虚拟指令的发布数,并向指令发布调整部13A传递。
根据图6的电流表13T,每一个虚拟指令(dummy)的消耗电流值=200
[μA]。因此,为了将变化量抑制为345[μA]以下,由于200<345
+20[μA]、200×2=400>345+20×2[μA],所以需要两个虚拟指令。
因此,对指令发布调整部13A指示为需要的虚拟指令的发布数=2,以
便分别发送两个虚拟指令(dummy,dummy)作为同时能够发布的指令
中的指令#1、#2。指令发布调整部13A根据指示分别发布两个虚拟指
令(dummy,dummy),作为同时能够发布的指令中的#1、#2(图8
的中断的时刻S12)。
并且,在图8的中断的时刻S12中,在下一周期(“0”)中也没有
能够发布的指令。因此,过去4个周期的平均电流值P(t+1-1,t+1
-4)为797.5[μA],当前能够发布的指令的电流值P(t+1)为80[μA]。
该期间的变化量为P(t+1-1,t+1-4)-P(t+1)=717.5[μA],
比限制值ΔP2=500[μA]大217.5[μA]。为了将变化量抑制为217.5
[μA]以下,由于200<217.5+20[μA]、200×2=400>217.5+20×2
[μA],所以需要两个虚拟指令。因此,对指令发布调整部13A指示需
要的虚拟指令的发布数=2,以便发布两个虚拟指令(dummy,dummy)
作为同时能够发布的指令中的#3、#4。指令发布调整部13A根据指示分
别发布两个虚拟指令(dummy,dummy)作为同时能够发布的指令中的
#3、#4(图8的下段,时刻S13)。
接着,利用图9至图14,对上述实施例涉及的处理器中的、用于说
明基于消耗电流变化的指令发布控制的动作的流程图进行说明。
图9表示了由解码器12向指令发布控制部13X传递的指令Inst(1)、
Inst(2)、......、Inst(M)各自的消耗电流值I、与程序中的地址(i)
之间的关系。消耗电流值I通过图6所示的电流表13T来获得。
图10A是在监控方法1中消耗电流增加时的动作流程图(之1)。图
10A中,在步骤S21中从指令缓存器11获取到的指令被解码器12解码。
在步骤S21R、S22中,指令发布控制部13X的指令发布控制功能部13R
从解码后的指令中选择同时能够发布的M个指令Inst(1)、Inst
(2)、......、Inst(M)。然后,指令发布控制部13X进行步骤S23、S24、
S26、S27的循环动作。在该循环动作中,i从初始值M开始按顺序每
次减少1,在到i=1为止的期间,如果步骤S26的判断结果为是(YES),
则该循环动作结束。
在步骤S24中,由电流变化计算部13C的计算部13CC对上述M
个指令中的从第1到第i个指令Inst(1)、Inst(2)、......、Inst(i)
计算出消耗电流的合计P(t)。在步骤S25中,由电流变化计算部13C
的计算部13CC计算出过去N个周期量的消耗电流的平均值P(t-1,
t-N)。然后,在步骤S26中,将上述到第i个指令为止的消耗电流的
合计P(t)、与对过去N个周期的平均电流值P(t-1,t-N)加上上
述限制值ΔP1而得到的值进行比较。
其结果,上述循环动作持续进行到到第i个指令为止的消耗电流的
合计P(t)变为对过去N个周期的平均电流值P(t-1,t-N)加上上
述限制值ΔP1而得到的值以下(是)。这里,i的初始值为M,最初到
上述到第i个指令为止的消耗电流的合计P(t)是M个指令量的消耗
电流。如果在该时刻,该P(t)为对过去N个周期的平均电流值P(t
-1,t-N)加上了上述限制值ΔP1而得到的值以下(是),则结束循环
动作(步骤S27),电流变化计算部13C将能够发布的最大指令数=M
通知给指令发布调整部13A。指令发布调整部13A按照上述那样的优先
顺序,对运算单元14A、14B、14C、14D中的对应的运算单元发布指
令。这里,优先顺序包括如上述那样同时能够发布的指令具有多个时的
多个指令之间的优先顺序。
另一方面,当在上述最初的时刻上述P(t)超过对过去N个周期的
平均电流值P(t-1,t-N)加上了上述限制值ΔP1而得到的值(否)
时,继续进行循环动作。然后,在如上所述,P(t)变为对过去N个周
期的平均电流值P(t-1,t-N)加上了上述限制值ΔP1而得到的值以
下时(是),结束循环动作。其结果,从当前能够发布的M个指令中的
地址较大的一方开始按顺序依次减少一个指令,直至减少到计算出的P
(t)变为对过去N个周期的平均电流值P(t-1,t-N)加上了上述
限制值ΔP1而得到的值以下为止。因此,从能够发布的M个指令中的
地址较小的一方按顺序选择,最终选择P(t)即将超过对过去的平均电
流值P(t-1,t-N)加上了限制值ΔP1而得到的值之前的(第1至第
i个)指令。然后,该最终选择出的指令的信息被传递给指令发布调整
部13A。指令发布调整部13A将该最终选择出的第1至第i个指令在当
前周期中发布给运算单元14A、14B、14C、14D(步骤S28)。其中,
步骤S24的Ix表示当前周期中各指令的消耗电流值(参照图9)。
此外,在图10A的情况下进行了循环动作,但在获得相同结果的目
的下,例如可以使用图11的电路。图11的电路具有加法器A1、A2、
A3、和比较器C1、C2、C3、C4。限制值ΔP1被输入到比较器C1、C2、
C3、C4各自具有的一个输入。而且,在图11的例子的情况下,为了便
于说明,作为M个能够发布的指令,设定了4个指令(addr1的指令、
addr2的指令、addr3的指令、addr4的指令),但能够发布的指令数为
5个以上也能够通过同样的电路构成来应对。其中,上述addr1的指令、
addr2的指令、addr3的指令、addr4的指令例如可以分别设为算术运
算的加法(ADD)指令、减法(SUB)指令、逻辑运算的AND指令、
OR指令等。
加法器A1求出addr1的指令以及addr2的指令共计2个指令的消
耗电流的合计。加法器A2求出加法器A1的输出与addr3的指令的消
耗电流的合计,即求出addr1、addr2、addr3共计3个指令的消耗电流
的合计。同样地,加法器A3求出加法器A2的输出与addr4的指令的
消耗电流的合计,即求出addr1、addr2、addr3、addr4共计4个指令
的消耗电流的合计。然后,比较器C1、C2、C3、C4分别将addr1的
指令的消耗电流、加法器A1的输出、加法器A2的输出、加法器A3的
输出、与ΔP1进行比较。即,比较器C1将与addr1的指令相关的消耗
电流P(t)与ΔP1进行比较,比较器C2将与addr1、addr2各个指令
相关的合计的消耗电流P(t)与ΔP1进行比较。同样,比较器C3将与
addr1、addr2、addr3各个指令相关的合计消耗电流P(t)与ΔP1进
行比较。而且,比较器C4将与addr1、addr2、addr3、addr4各个指
令相关的合计消耗电流P(t)与ΔP1进行比较。
各比较器C1~C4在P(t)为ΔP以上的情况下输出1,在P(t)
小于ΔP的情况下输出0。而且,图11的电路生成地址的选择信号AD
[1:4]作为比较器C1~C4的输出。例如可以设定成在AD[1:4]
=0000时发布addr1~4的4个指令,在AD[1:4]=0001时发布addr1~
3的3个指令。同样,可以设定成在AD[1:4]=0011时发布addr1~2
的2个指令,在AD[1:4]=0111时发布addr1的1个指令。
图10B是在监控方法1中消耗电流增加时的动作流程图(之2)。图
10B的动作流程图(之2)表示了与上述图10A的动作流程图(之1)
不同的方法的例子。图10B的动作流程图(之2)中的步骤S21至S27
与图10A的动作流程图(之1)中的步骤S21至S27相同,省略重复的
说明。在图10B的动作流程图(之2)的情况下,可以在步骤S27A中
追加虚拟指令。如上所述,如果在步骤S27中P(t)为对过去N个周
期的平均电流值P(t-1,t-N)加上了上述限制值ΔP1而得到的值以
下(是),则结束循环动作。这里,例如当在上述限制值ΔP1的值小的
情况下等,结束该循环动作时,还可以想到上述P(t)小于上述过去N
个周期的平均电流值P(t-1,t-N)的情况、即消耗电流减少的情况。
在这样的情况下,可以追加与上述P(t)和P(t-1,t-N)之间的差
(消耗电流的减少量)对应的消耗电流的虚拟指令,来缓和消耗电流的
减少。作为用于实现该目的的虚拟指令,可以通过在图6以及上述的消
耗电流值=200[μA]的虚拟指令的基础上,另外设置例如消耗电流值
=100[μA]的虚拟指令等,来预先准备消耗电流不同的多个虚拟指令。
而且,可以根据上述P(t)与P(t-1,t-N)之间的差(消耗电流的
减少量),从这些消耗电流不同的多个虚拟指令中适当地选择并追加最
佳的消耗电流的虚拟指令。该情况下,通过上述步骤S27A对在上述步
骤S23、S24、S26、S27的循环动作中最终选择的第1至第i个指令追
加虚拟指令。然后,如此得到的表示应该发布的指令的信息被传递给指
令发布调整部13A。指令发布调整部13A将该被传递来的信息所表示的
指令在当前周期中对运算单元14A、14B、14C、14D发布(步骤S28A)。
图12是在监控方法1中消耗电流减少时的动作流程图。图12中,
在步骤S41中从指令缓存器11获取得到的指令被解码器12解码。在步
骤S41R、S42中,解码后的指令被传递给指令发布控制部13X的指令
发布控制功能部13R,选择同时能够发布的M个指令Inst(1)、Inst
(2)、......、Inst(M)。然后,指令发布控制部13X进行步骤S43、S45、
S46的循环动作。在该循环动作中,在步骤S46将所发布的虚拟指令
(dummy)的个数依次增加1,如果步骤S45的判断结果为是,则结束
该循环动作。
在步骤S43中,由电流变化计算部13C的计算部13CC对上述M
个指令Inst(1)、Inst(2)、......、Inst(M)和在步骤S46中追加的虚
拟指令计算消耗电流的合计P(t)。在步骤S44中,由电流变化计算部
13C的计算部13CC计算出过去N个周期量的消耗电流的平均值P(t
-1,t-N)。然后,在步骤S45中,将能够发布的指令以及虚拟指令的
消耗电流的合计P(t)、与从过去N个周期的平均电流值P(t-1,t-
N)中减去了上述限制值ΔP2后的值进行比较。其结果,循环动作持续
进行到能够发布的指令以及虚拟指令的消耗电流的合计P(t)变为从过
去N个周期的平均电流值P(t-1,t-N)中减去了上述限制值ΔP2
后的值以上(是)为止。其结果,决定根据需要追加了虚拟指令的结果
的消耗电流值P(t)变为从过去N个周期的平均电流值P(t-1,t-N)
减去了上述限制值ΔP2后的值以上那样的虚拟指令的发布数(即“所需
的虚拟指令的发布数”)。如此得到的需要的虚拟指令的发布数被传递给
指令发布调整部13A。指令发布调整部13A将对能够发布的指令加上了
上述所需的发布数的虚拟指令后的指令在当前周期中向运算单元14A、
14B、14C、14D发布(步骤S47)。
图13A是在监控方法2中消耗电流增加时的动作流程图(之1)。图
13A中,在步骤S61中从指令缓存器11获取得到的指令被解码器12解
码。在步骤S61R、S62中,解码后的指令被传递给指令发布控制部13X
的指令发布控制功能部,选择同时能够发布的M个指令Inst(1)、Inst
(2)、......、Inst(M)。然后,指令发布控制部13X进行步骤S63、S64、
S66、S67的循环动作。在该循环动作中,i从初始值M开始按顺序减
少1,在到i=1为止的期间,如果步骤S66的判断结果为是,则结束该
循环动作。
在步骤S64中,由电流变化计算部13C的计算部13CC求出上述M
个指令中从第1到第i个指令Inst(1)、Inst(2)、......、Inst(i)的
消耗电流的合计P(t)。然后,计算出加上了该当前周期的消耗电流P
(t)的当前与过去的N个周期量的消耗电流的平均值P(t,t-N+1)。
在步骤S65中,由电流变化计算部13C的计算部13CC计算出更加过去
的N个周期量的消耗电流的平均值P(t-N,t-2N+1)。然后,在步
骤S66中,将上述加上了当前周期的当前与过去的N个周期量的消耗电
流的平均值P(t,t-N+1)、与对更加过去N个周期的平均电流值P
(t-N,t-2N+1)加上了上述限制值ΔP1后的值进行比较。其结果,
循环动作持续进行到当前与过去的N个周期量的消耗电流的平均值P
(t,t-N+1)变为对更加过去N个周期的平均电流值P(t-N,t-
2N+1)加上了上述限制值ΔP1而得到的值以下(是)为止。与上述相
同,i的初始值为M,最初上述到第i个指令为止的消耗电流的合计P
(t)是M个指令量的消耗电流。如果在该时刻当前与过去的N个周期
量的平均电流值P(t,t-N+1)为对更加过去N个周期的平均电流值
P(t-N,t-2N+1)加上了上述限制值ΔP1而得到的值以下(是),
则结束循环动作(步骤S67),电流变化计算部13C将“能够发布的最大
指令数=M”通知给指令发布调整部13A。指令发布调整部13A按照如
上所述的优先顺序,对运算单元14A、14B、14C、14D中的对应的运
算单元发布指令。
另一方面,当在上述最初的时刻当前与过去的N个周期量的平均电
流值P(t,t-N+1)超过对更加过去N个周期的平均电流值P(t-N,
t-2N+1)加上了上述限制值ΔP1而得到的值(否)时,继续进行循环
动作。然后,上述所述,在当前与过去的N个周期量的平均电流值P(t,
t-N+1)变为对更加过去N个周期的平均电流值P(t-N,t-2N+1)
加上了上述限制值ΔP1而得到的值P(t)以下的时刻(是),结束循环
动作。其结果,从当前能够发布的M个指令中的地址较大的一方开始
按顺序依次减少一个指令,直到计算出的当前与过去的N个周期量的平
均电流值P(t,t-N+1)变为对更加过去N个周期的平均电流值P(t
-N,t-2N+1)加上了上述限制值ΔP1而得到的值以下为止。因此,
从能够发布的M个指令中的地址较小的一方按顺序选择,最终选择当
前与过去的平均电流值P(t,t-N+1)即将超过对更加过去的平均电
流值P(t-N,t-2N+1)加上了限制值ΔP1而得到的值之前的(第1
至第i个)指令。然后,该最终选择出的指令的信息被传递给指令发布
调整部13A。指令发布调整部13A将该最终选择出的第1至第i个指令
在当前周期向运算单元14A、14B、14C、14D发布(步骤S68)。
图13B是在监控方法2中消耗电流增加时的动作流程图(之2)。图
13B的动作流程图(之2)表示与上述的图13A的动作流程图(之1)
不同的方法的例子。图13B的动作流程图(之2)中的步骤S61至S67
与图13A的动作流程图(其1)中的步骤S61至S67相同,省略重复的
说明。在图13B的动作流程图(之2)的情况下,可以在步骤S67A中
追加虚拟指令。如上所述,在步骤S67中,如果当前与过去的N个周期
量的平均电流值P(t,t-N+1)为对更加过去N个周期的平均电流值
P(t-N,t-2N+1)加上了上述限制值ΔP1而得到的值以下,则结束
循环动作。这里,例如当在上述限制值ΔP1的值小的情况下等结束该循
环动作时,还可以想到上述当前与过去的N个周期量的平均电流值P(t,
t-N+1)比上述更加过去N个周期的平均电流值P(t-N,t-2N+1)
小(即消耗电量减少)的情况。在这样的情况下,可以根据需要追加与
上述P(t-N,t-2N+1)和上述P(t,t-N+1)之间的差(消耗电
流的减少量)对应的消耗电流的虚拟指令。作为用于实现该目的的虚拟
指令,可以通过在图6与上述的消耗电流值=200[μA]的虚拟指令的
基础上,另外设置例如消耗电流值=100[μA]的虚拟指令等,来预先
准备消耗电流不同的多个虚拟指令。而且,可以根据上述P(t-N,t
-2N+1)与上述P(t,t-N+1)之间的差(消耗电流的减少量),从
这些消耗电流不同的虚拟指令中适当地选择最佳的消耗电流的虚拟指
令来进行追加。该情况下,通过上述步骤S67A对在上述步骤S63、S64、
S66、S67的循环动作中最终选择的第1至第i个指令追加虚拟指令。然
后,如此得到的表示应该发布的指令的信息被传递给指令发布调整部
13A。指令发布调整部13A将该被传递的信息所表示的指令在当前周期
中向运算单元14A、14B、14C、14D发布(步骤S68A)。
图14是在监控方法2中消耗电流减少时的流程图。图14中,在步
骤S81中从指令缓存器11获取得到的指令被解码器12解码。在步骤
S81R、S82中,解码后的指令被传递给指令发布控制部13X的指令发布
控制功能部13R,选择同时能够发布的M个指令Inst(1)、Inst(2)、......、
Inst(M)。然后,指令发布控制部13X进行步骤S83、S85、S86的循
环动作。在该循环动作中,在步骤S86中将所发布的虚拟指令的个数依
次增加1,如果步骤S85的判断结果为是,则结束该循环动作。
在步骤S83中,由电流变化计算部13C的计算部13CC对上述M
个指令Inst(1)、Inst(2)、......、Inst(M)和在步骤S46中追加的虚
拟指令计算出消耗电流的合计P(t)。并且,计算出加上了该当前周期
的消耗电流的当前与过去的N个周期量的消耗电流和平均值P(t,t-
N+1)。在步骤S84中,由电流变化计算部13C的计算部13CC计算出
更加过去的N个周期量的消耗电流的平均值P(t-N,t-2N+1)。然
后,在步骤S85中,将加上了当前周期的消耗电流的当前与过去的N
个周期量的平均电流值P(t,t-N+1)、与从更加过去N个周期的平
均电流值P(t-N,t-2N+1)减去了上述限制值ΔP2后的值进行比较。
其结果,循环动作持续进行到加上了当前周期的消耗电流的当前与过去
的N个周期分的平均电流值P(t,t-N+1)变为从更加过去N个周期
的平均电流值P(t-N,t-2N+1)减去了上述限制值ΔP2而得到的值
以上(是)为止。其结果,按照追加了所需个数的虚拟指令的结果的、
加上了当前周期的消耗电流的当前与过去的N个周期量的平均电流值P
(t,t-N+1)变为从更加过去N个周期的平均电流值P(t-N,t-
2N+1)减去了上述限制值ΔP2后的值以上的方式,依次追加一个虚拟
指令(步骤S86)。如此得到的所需的虚拟指令的发布数被传递给指令
发布调整部13A。指令发布调整部13A将对能够发布的指令加上了上述
所需的发布数的虚拟指令后的指令在当前周期中向运算单元14A、14B、
14C、14D发布(步骤S87)。
图15是用于对能够应用上述实施例的处理器的服务器等信息处理
装置的硬件构成例进行说明的框图。该信息处理装置包括:作为运算处
理装置的处理器110、作为存储装置的存储器120、和将处理器110与
存储器120连接的总线130。存储器120储存被写入处理器110所执行
的指令的程序、作为上述指令的执行对象的数据、作为上述指令的执行
结果的数据等。作为处理器110,可以应用图2中记载的构成的处理器。
该情况下,图2所示的处理器的指令缓存器11取得存储器120中储存
的程序并进行保持,解码器12获取(取得)该程序的指令并进行解码
(解释),指令发布控制部13X将解码后的指令向运算机构14的运算单
元14A、14B、14C、14D发布。运算单元14A、14B、14C、14D执行
该被发布的指令。指令发布控制部13X具有与图2至14以及上述实施
例的处理器中的指令发布控制部13X相同的构成。