系统以及检测方法

文档序号:6484658阅读:186来源:国知局
系统以及检测方法
【专利摘要】检测出因程序中未被明示的循环而产生的自旋状态。CPU(#0)基于标志的监视进行了状态迁移等待的结果是正执行成为自旋状态的线程(0)。自旋避免机构(104#0)监视CPU(#0)的电力、和CPU(#0)内的高速缓冲存储器(103#0)的状态。自旋避免机构(104#0)在CPU(#0)的电力成为阈值以上且表示高速缓冲存储器(103#0)的状态无变化时,检测为CPU(#0)是自旋状态。
【专利说明】系统以及检测方法
【技术领域】
[0001]本发明涉及检测自旋状态的系统以及检测方法。
【背景技术】
[0002]以往,在软件以多线程进行动作的情况下,有时一边进行同步处理或排他控制一边执行处理。在同步处理或排他控制中,作为明示地使用特定命令的方法,存在进行利用CPU (Central Processing Unit:中央处理器)等硬件功能的障栅同步命令,或者作为OS(Operating System:操作系统)的程序库的线程的暂时停止、解除的互斥体(Mutex)。另外,作为未明示的排他控制,例如存在通过监视标志的基于状态变迁等待的安装方法。
[0003]对这样的同步处理或排他控制而言,是虽然从硬件方面出发正在执行处理,但软件反复进行相同处理而处理不进展的状态,成为使系统的处理能力降低的原因。以下,将这样的反复进行相同处理的状态定义为自旋(spin)状态。另外,成为自旋状态的CPU的消耗电力上升。因此,公开了一种检测自旋状态来避免自旋状态的技术。
[0004]作为检测自旋状态的技术,例如公开了一种对正在程序中循环这样的自旋等待命令进行检测的技术。另外,作为检测自旋状态的其他技术,例如公开了一种使用统计信息预测命令例的循环,来检测自旋状态的技术。另外,作为检测出自旋状态的情况下的调度技术,例如公开了一种当检测出自旋状态时,使动作状态退避并恢复的技术。另外,存在一种当存在成为自旋状态的线程时,将其他线程分配给CPU的技术(例如参照下述专利文献I?
4。)。
[0005]专利文献1:国际公开第2003 / 040948号小册子
[0006]专利文献2:日本特开2006 - 40142号公报
[0007]专利文献3:日本特开2009 - 116885号公报
[0008]专利文献4:日本特开平5 - 204675号公报
[0009]然而,在上述的现有技术中,由于通过参照明示记述的自旋等待命令来检测出自旋状态,所以存在难以检测由程序中未明示的循环产生的自旋状态这一问题。例如,由于在进行基于标志的监视的状态迁移等待的程序的命令组中不存在利用CPU的硬件功能的命令,或者调用OS的程序库的命令,所以不存在相应的程序成为引起自旋状态的标记的命令。因此,在现有技术所涉及的技术中,难以检测出这样的程序引起自旋状态。
[0010]另外,在上述的现有技术中,能够通过使用统计信息对未明示的自旋状态进行某种程度预测。然而,由于对于在统计信息收集时未产生的位置不能够检测自旋状态,所以存在难以全部检测出未明示的自旋状态这一问题。

【发明内容】

[0011]本发明的目的在于,为了解除上述现有技术的问题点,提供一种能够检测由程序中未被明示的循环产生的自旋状态的系统以及检测方法。
[0012]为了解决上述课题来实现目的,根据本发明的一个方式,提出了一种包含CPU、检测CPU的电力的传感器、监视高速缓冲存储器的状态的高速缓冲存储器状态监视电路、以及基于来自传感器的传感器信号和来自高速缓冲存储器状态监视电路的状态信号来检测CPU执行的程序的自旋状态的检测电路的系统以及检测方法。
[0013]根据本发明的一个方式,起到能够检测出由程序中未被明示的循环产生的自旋状态这一效果。
【专利附图】

【附图说明】
[0014]图1是表示多核处理器系统100的动作例的说明图。
[0015]图2是表示多核处理器系统100的硬件例的框图。
[0016]图3是表示多核处理器系统100的CPU周边的硬件和软件例的框图。
[0017]图4是表示自旋避免机构104的硬件例的框图。
[0018]图5是表示自旋判定部402的自旋状态检测的一个例子的框图。
[0019]图6是表示自旋判定部402的自旋状态解除检测的一个例子的框图。
[0020]图7是表示高速缓冲存储器状态监视电路403的动作例的说明图。
[0021]图8是表示自旋状态的消耗电力状态的一个例子的说明图。
[0022]图9是表示自旋状态的解除的定时的判定方法例子的说明图。
[0023]图10是表示自旋状态检测判定的一个例子的时序图。
[0024]图11是表示自旋状态解除判定的一个例子的时序图。
[0025]图12是表示自旋避免机构驱动器412的自旋状态周期性判断处理的一个例子的流程图。
[0026]图13是表示分派调度器324的线程退避恢复处理的一个例子的流程图。
【具体实施方式】
[0027]以下,参照附图对公开的系统以及检测方法的实施方式进行详细的说明。其中,作为本实施方式所涉及的系统的例子,利用具有多个CPU的多核处理器系统进行说明。多核处理器是搭载有多个核心的处理器。只要搭载多个核心,则可以是搭载了多个核心的单一处理器,也可以是单核的处理器并联而成的处理器组。其中,在本实施方式中,为了将说明简化,以单核的处理器并联而成的处理器组为例进行说明。
[0028]图1是表示多核处理器系统100的动作例的说明图。图1示出的多核处理器系统100包括CPU # O和CPU # I。以下,附带后缀记号“ # η”的记号表示与第η个CPU对应的记号。多核处理器系统100假定为移动电话这样的移动终端。利用符号101表示的说明图表示了 CPU # O成为自旋状态的状态,利用符号102表示的说明图表示了成为自旋状态的CPU # O被解除而成为非自旋状态的情况。另外,CPU # O、CPU # I包含高速缓冲存储器103 # O、高速缓冲存储器103 # I。并且,CPU # O、CPU # I分别具有对成为自旋状态进行检测的自旋避免机构104 # O、自旋避免机构104 # I。
[0029]在符号101所示的说明图中,CPU # O正执行包含执行代码105的线程O。执行代码105成为等待改写* y的值而跳出循环的算法。在这样的算法的情况下,若通过互斥体那样的专用命令进行排他同步,则编译器能够识别明示的锁定状态。然而,在正进行如执行代码105那样的编码的情况下,编译器等不能够判定其是否引起自旋状态。[0030]若CPU # O通过线程O的执行而成为自旋状态,则CPU # O的电力上升。另外,由于反复进行同一处理,所以高速缓冲存储器103 # O的状态不变化。自旋避免机构104 # O根据CPU # O的电力和高速缓冲存储器103 # O的状态来检测自旋状态。这样,自旋避免机构104 # O通过使用自旋状态下的多核处理器系统100的状态进行检测,能够不使用排他控制用的特别命令便检测出因所安装的排他控制而产生的自旋状态。
[0031]在符号102所示的说明图中,是自旋状态检测后的多核处理器系统100的状态。CPU # O通过自旋避免机构104 # O的自旋状态的检测,容易确定成为自旋状态且在程序内未明示排他控制的记述的线程O。因此,CPU# O使确定出的线程O从调度循环中退避出。由此,由于CPU # O的电力下降,所以多核处理器系统100能够削减消耗电力。
[0032](多核处理器系统100的硬件)
[0033]图2是表示多核处理器系统100的硬件例的框图。在图2中,多核处理器系统100包括:包含多个 CPU 的 CPUs201、R0M (Read - Only Memory:只读存储器)202、RAM (RandomAccess Memory:随机存储器)203。另外,多核处理器系统100包含快闪R0M204、快闪ROM控制器205、和快闪R0M206。另外,多核处理器系统100包含显示器207、I / F (Interface:接口)208和键盘209,作为与用户、其他设备的输入输出装置。另外,各部分别通过总线210连接。
[0034]这里,CPUs201管理多核处理器系统100的整体控制。CPUs201包含CPU # O?CPU # η。η是I以上的整数。另外,CPU # O?CPU # η中存在图1所示的高速缓冲存储器103、自旋避免机构104、以及其他硬件。利用图3在后面叙述这些硬件。
[0035]R0M202存储有引导程序等程序。RAM203被作为CPUs201的工作区使用。快闪R0M204是读出速度高速的快闪R0M,例如是NOR型闪存。例如,快闪R0M204存储有OS等系统软件、应用软件等。例如,在更新OS的情况下,多核处理器系统100利用I / F208接收新的OS,并将储存在快闪R0M204中的旧的OS更新为接收到的新的OS。
[0036]快闪ROM控制器205按照CPUs201的控制来控制针对快闪R0M206的数据的读/写。快闪R0M206是以数据的保存、输送为主要目的的快闪R0M,例如是NAND型闪存。快闪R0M206对在快闪ROM控制器205的控制下写入的数据进行存储。作为数据的具体例,是使用多核处理器系统100的用户通过I / F208获取的图像数据、映像数据、执行本实施方式所涉及的线程处理方法的程序等。快闪R0M206例如能够采用存储器卡、SD卡等。
[0037]显示器207以光标、图标或者工具箱为代表来显示文件、图像、功能信息等数据。显示器207例如能够采用TFT (Thin Film Transistor:薄膜晶体管)液晶显示器等。
[0038]I / F208通过通信线路与LAN、WAN(Wide Area Network:广域网)、互联网等网络211连接,并经由网络211与其他装置连接。而且,I / F208管理网络211与内部的接口,控制来自外部装置的数据的输入输出。I / F208例如能够采用调制解调器、LAN适配器等。
[0039]键盘209具有用于数字、各种指示等的输入的键,进行数据的输入。另外,键盘209也可以是触摸面板式的输入板、数字键等。
[0040]图3是表示多核处理器系统100的CPU周边的硬件和软件例的框图。首先,多核处理器系统100包含监听(Snoop)机构301、热电力检测部303、PMU (Power ManagementUnit:电源管理单元)304、自旋避免机构104作为硬件。
[0041]监听机构301是获取CPU # O?CPU # η访问的高速缓冲存储器103的匹配性的装置。例如,若高速缓冲存储器103 # O被更新,则监听机构301向高速缓冲存储器103
#I通知更新内容。作为监听机构301的协议,存在无效型协议和更新型协议。
[0042]其中,获取高速缓冲存储器103的匹配性的装置被分类为超高速缓存相关性机构,作为超高速缓存相关性机构的一个例子,存在监听机构。超高速缓存相关性机构大致有采用了监听方式的监听机构和目录方式。本实施方式所涉及的监听机构301也可以是采用了目录方式的超高速缓存相关性机构。
[0043]存储器302是能够由CPUs201访问的共享的存储装置。其中,存储器302可以是RAM203的全部,或者也可以是一部分。并且,存储器302也可以包含R0M202、快闪R0M204、快闪 R0M206。
[0044]此外,CPU # O?CPU # η全部都具有在图3说明的监听机构301、存储器302以外的硬件、软件。因此,在以下的图3的说明中,对与CPU # O有关的硬件、软件进行说明,并且省略后缀记号“# O”。
[0045]作为CPU # O内的硬件,CPU # O包含程序计数器311、计时器312、和高速缓冲存储器103。另外,作为由CPU# O执行的软件,CPU# O执行0S321、线程331?线程333、空闲线程 334。0S321 包含内核 322、API (Application Programming Interface:应用编程接口)323、分派调度器324、和排他同步API检测部325。
[0046]热电力检测部303具有由附随于CPU的进行温度调节的自动调温器检测电力、温度的功能。其中,热电力检测部303不与CPU布线连接而在底座上物理连接。PMU304是管理CPU的电源电压、时钟的装置。
[0047]自旋避免机构104基于来自热电力检测部303、高速缓冲存储器103、以及排他同步API检测部325的输入来检测自旋状态。检测结果被输出给分派调度器324。其中,利用图4在后面叙述自旋避免机构104的内部。
[0048]程序计数器311是CPU的寄存器之一,是对储存有CPU当前执行中的命令的存储器302上的地址进行储存的存储区域。计时器312具有通知经过时间的功能。其中,在CPU的时钟计数器等中安装计时器312。
[0049]高速缓冲存储器103是为了 CPU能够高速访问存储器302的数据而复制了存储器302的数据的一部分的存储区域。另外,高速缓冲存储器103包含存储数据的高速数据缓存、和存储程序内的命令的指令高速缓冲存储器。
[0050]0S321是控制多核处理器系统100的程序。例如,0S321管理存储器302,或者将文件系统提供给应用程序。内核322具有成为0S321的中心的功能。例如,核心322包含控制快闪ROM控制器205、键盘209等硬件的设备驱动程序。
[0051]API323是用于线程331?线程333访问0S321提供的程序库的接口。例如,API323被作为执行文件系统的控制、图像处理、文字控制等的函数提供。
[0052]分派调度器324具有控制线程的分配的功能。例如,分派调度器324决定接下来分配给CPU的线程,并将所决定的线程分配给CPU。由分派调度器324分配的线程是线程331?线程333、空闲线程334。另外,分派调度器324在将空闲线程334分配给CPU的情况下,通知PMU304停止向CPU供给时钟。
[0053]排他同步API检测部325是控制自旋避免机构104的API。具体而言,排他同步API检测部325包含设定为自旋状态的AP1、和解除自旋状态的API。[0054]线程331?线程333执行应用软件内的一个功能。例如,假定应用软件是动态图像再生应用程序。此时,线程331成为从网络211下载的下载线程,线程332成为按照动态图像编解码器进行解码的解码线程,线程333成为在显示器207上显示的描绘线程。空闲线程334是什么也不做的线程。例如,空闲线程执行NOP命令。
[0055]以下,利用图4?图6对自旋避免机构104的硬件例进行说明。在图4?图6中,以与CPU # O对应的自旋避免机构104 # O为例进行说明,由于自旋避免机构104 # I?自旋避免机构104 # η为相同的硬件,所以省略说明,也省略后缀记号“# η”。
[0056]图4是表示自旋避免机构104的硬件例子的框图。自旋避免机构104包含存储部401、自旋判定部402、高速缓冲存储器状态监视电路403、传感器I / F404、和发行命令缓冲器405。另外,自旋避免机构104接受来自传感器411的输入。另外,自旋避免机构104受到来自内核322内的自旋避免机构驱动器412的控制。
[0057]存储部401是存储信息的寄存器组,包含控制寄存器421、自旋状态状态寄存器422、和传感器阈值储存寄存器423。控制寄存器421包含自旋状态设定、自旋状态解除设定、自旋状态这三个字段。自旋状态设定字段、自旋状态解除设定字段是由自旋避免机构驱动器412设定的字段。
[0058]自旋状态设定字段在由自旋避免机构驱动器412指示为是自旋状态的情况下,储存表示指示的标识符。例如,自旋状态设定字段在被指示为是自旋状态的情况下,储存TRUE(真),在未被指示时,储存FALSE (伪)。自旋状态解除设定字段在被指示为解除自旋状态的情况下,储存表示指示的标识符。例如,自旋状态解除设定字段在被指示为解除自旋状态的情况下,储存TRUE,在未被指示时,储存FALSE。
[0059]自旋状态字段基于由自旋判定部402判定出的结果来储存表示是否是自旋状态的标识符。例如,自旋状态字段在通过自旋判定部402判定为是自旋状态的情况下,储存TRUE,在判定为是非自旋状态时,储存FALSE。另外,自旋状态字段对自旋避免机构驱动器412通知表示是否为自旋状态的中断信号。
[0060]自旋状态状态寄存器422是为了在自旋避免机构104内部使用自旋状态、或者非自旋状态而准备的寄存器。具体而言,自旋状态状态寄存器422如果是自旋状态则为TRUE,如果是非自旋状态则储存FALSE。传感器阈值储存寄存器423储存相对于传感器411的值的阈值。作为具体的阈值的值,将利用图8后述。
[0061]自旋判定部402根据来自控制寄存器421、传感器I/ F404、传感器阈值储存寄存器423、自旋状态状态寄存器422、发行命令缓冲器405的输入来判定是否为自旋状态,并输出给控制寄存器421。另外,自旋判定部402包含检测为是自旋状态的自旋状态检测电路431、和检测为自旋状态被解除而是非自旋状态的自旋状态解除电路432。其中,将利用图5在后面叙述自旋状态检测电路431的详细情况。另外,将利用图6后述自旋状态解除电路432的详细情况。
[0062]高速缓冲存储器状态监视电路403监视高速缓冲存储器103的状态。具体而言,高速缓冲存储器状态监视电路403使用程序计数器311 # O来获取高速缓冲存储器103内的储存于指令高速缓冲存储器的命令,并储存到发行命令缓冲器405。另外,高速缓冲存储器状态监视电路403将对高速缓冲存储器103的状态进行表示的状态信号输出给自旋判定部402。将利用图7后述高速缓冲存储器状态监视电路403的动作。传感器I / F404是针对传感器411的接口。传感器I / F404从传感器411获取电力量,并作为传感器信号输出。发行命令缓冲器405蓄积CPU执行过的命令。
[0063]传感器411是热电力检测部303等电力传感器。另外,传感器411也可以是温度传感器。上述的传感器阈值储存寄存器423储存有与传感器411对应的阈值。
[0064]自旋避免机构驱动器412是控制自旋避免机构104的驱动器。具体而言,自旋避免机构驱动器412对自旋状态设定字段、自旋状态解除设定字段进行写入。另外,自旋避免机构驱动器412按照计时器312的一定周期来获取与自旋状态字段的状态对应的中断信号,判断是否是自旋状态恶化的状态,并且判断自旋状态是否有周期性。判断结果被通知给分派调度器324。
[0065]图5是表示自旋判定部402的自旋状态检测的一个例子的框图。在图5中,表示了在自旋判定部402的自旋状态检测时使用的电路的例子。自旋判定部402使用自旋状态检测电路431、比较电路501、和判定电路502来检测自旋状态。另外,自旋状态检测电路431包含AND电路511和OR电路512。另外,判定电路502包含判定电路503、提取电路504、提取电路505、和比较电路506。
[0066]另外,自旋判定部402为了自旋状态检测而接受从控制寄存器421、传感器I /F404、传感器阈值储存寄存器423、高速缓冲存储器状态监视电路403输出的高速缓存状态信号521、程序计数器311的输入。并且,自旋判定部402将检测出的自旋状态输出给控制寄存器421、自旋状态状态寄存器422。高速缓存状态信号521是表示高速缓冲存储器103的状态是否变化的信号。其中,将利用图7后述高速缓存状态信号521的详细内容。
[0067]比较电路501将传感器I / F404和传感器阈值储存寄存器423进行比较,并将比较结果输出给自旋状态检测电路431内的AND电路511。具体而言,比较电路501在来自传感器I / F404的传感器信号为传感器阈值储存寄存器423的值以上的情况下,输出TRUE作为比较结果。另外,比较电路501在来自传感器I / F404的传感器信号比传感器阈值储存寄存器423的值小的情况下,输出FALSE作为比较结果。
[0068]判定电路502判定程序所执行的命令是否时规定命令,并将判定结果输出给自旋状态检测电路431的AND电路511。这里,规定命令是跳转命令。或者,也可以是通过执行规定命令而成为跳转命令的命令。例如,当存在对程序计数器311设定通用寄存器的值、存储器的值这一命令时,通过进行设定,使得下一命令的执行位置成为被设定的值,进行与跳转命令相同的动作。因此,进行这样的动作的命令也可以作为规定命令而包含。
[0069]判定电路503判定高速缓存状态信号521是否没有高速缓存状态变化,并将判定结果输出给提取电路504。具体而言,判定电路503在高速缓存状态信号521是表示无高速缓存状态变化的状态信号的情况下,输出TRUE作为判定结果,在是表示有高速缓存状态变化的状态信号的情况下,输出FALSE作为判定结果。
[0070]在判定结果为TRUE的情况下,提取电路504从发行命令缓冲器405蓄积的命令提取出跳转目的地地址并输出给比较电路506。例如,在所蓄积的命令成为跳转命令+跳转目的地地址的情况下,提取电路504提取出跳转目的地地址。另外,若所蓄积的命令是对程序计数器311设定跳转表内的偏移值的地址的命令,则提取电路504提取出跳转表内的偏移值的地址作为跳转目的地地址。
[0071]提取电路505从程序计数器311指出的地址提取出跳转目的地地址并输出给比较电路506。由于具体的跳转目的地地址的提取方法与提取电路504等同,所以省略说明。
[0072]比较电路506将提取电路504与提取电路505的提取结果进行比较,并将判定结果输出给自旋状态检测电路431的AND电路511。这里,规定命令是跳转命令。具体而言,若提取电路504与提取电路505的提取结果是相同的跳转目的地地址,则比较电路506输出TRUE作为比较结果,若为不同地址,则输出FALSE。
[0073]AND电路511将比较电路501与比较电路506的逻辑积输出给OR电路512。OR电路512将控制寄存器421的自旋状态设定字段与AND电路511的逻辑和输出给控制寄存器421的自旋状态字段和自旋状态状态寄存器422。
[0074]此外,判定电路502也可以在比较电路501的比较结果为TRUE之后进行判定。在判定电路502中,由于进行高速缓冲存储器103的监视,所以处理负荷增大,但通过在比较电路501的比较结果成为TRUE时使判定电路502动作,能够使自旋避免机构104的处理效
率良好。
[0075]图6是表示自旋判定部402的自旋状态解除检测的一个例子的框图。在图6中,表示了在自旋判定部402的自旋状态解除检测时使用的电路的例子。自旋判定部402使用自旋状态解除电路432、比较电路601、判定电路602、自旋状态状态寄存器422、AND电路603来检测自旋状态的解除。另外,自旋状态解除电路432包含OR电路611。
[0076]另外,自旋判定部402为了自旋状态解除检测而接受控制寄存器421、传感器I /F404、传感器阈值储存寄存器423、高速缓存状态信号521的输入。并且,自旋判定部402将检测出的自旋状态输出给控制寄存器421、自旋状态状态寄存器422。
[0077]比较电路601将传感器I / F404和传感器阈值储存寄存器423进行比较,并将比较结果输出给自旋状态解除电路432内的OR电路611。具体而言,比较电路601在来自传感器I / F404的传感器信号小于传感器阈值储存寄存器423的值的情况下,输出TRUE作为比较结果。另外,比较电路601在来自传感器I / F404的传感器信号为传感器阈值储存寄存器423的值以上的情况下,输出FALSE作为比较结果。
[0078]判定电路602判定高速缓存状态信号521是否有高速缓存状态变化,并将判定结果输出给AND电路603。具体而言,判定电路602在高速缓存状态信号521是表示有高速缓存状态变化的状态信号的情况下,输出TRUE作为判定结果,在是表示无高速缓存状态变化的状态信号的情况下,输出FALSE作为判定结果。
[0079]AND电路603将判定电路602与自旋状态状态寄存器422的逻辑积输出给OR电路611。具体而言,AND电路603在来自判定电路602的输出信号为TRUE、且自旋状态状态寄存器422是意味自旋状态的TRUE的情况下,将TRUE输出给OR电路611。OR电路611将控制寄存器421的自旋状态解除设定字段、比较电路601的比较结果和AND电路603的逻辑和输出给控制寄存器421的自旋状态字段和自旋状态状态寄存器422。
[0080]图7是表示高速缓冲存储器状态监视电路403的动作例的说明图。高速缓冲存储器103包括指令高速缓冲存储器701和高速数据缓存702。在监听机构301动作的情况下,高速缓冲存储器状态监视电路403输出高速缓冲存储器103的状态正发生变化这一状态信号作为高速缓存状态信号521。另外,在监听机构301不动作的情况下,高速缓冲存储器状态监视电路403输出高速缓冲存储器103的状态未发生变化这一状态信号作为高速缓存状态信号521。[0081]并且,在高速缓冲存储器103的状态未发生变化的情况下,高速缓冲存储器状态监视电路403获取由程序计数器311发行的命令,并储存于发行命令缓冲器405。
[0082]接下来,使用图7对发行跳转命令的情况下的高速缓冲存储器状态监视电路403的动作进行说明。在执行第一次循环中的地址:0x0012的跳转命令的情况下,由于指令高速缓冲存储器701中没有命令,所以CPU # O将命令从存储器302读出并执行。另一方面,CPU # O将读出的命令储存于指令高速缓冲存储器701。
[0083]这里,由于是从0x0012地址到0x0000地址的较短区间,所以假定是在CPU # O执行地址:0x0012的跳转命令时,第二次以后在指令高速缓冲存储器701中命中(hit)的情况。
[0084]当执行第二次循环以后的地址:0x0012的跳转命令时,CPU # O获取在指令高速缓冲存储器701内命中的命令并执行。此时,由于高速缓冲存储器103的状态未发生变化,所以高速缓冲存储器状态监视电路403从程序计数器311所指的地址:0x0012获取相应的命令“JumpOxOOOO”。在获取之后,高速缓冲存储器状态监视电路403将“Jump”和跳转目的地地址“0x0000”作为跳转命令储存于发行命令缓冲器405。
[0085]当执行第三次循环以后的地址:0x0012的跳转命令时,CPU # O获取在指令高速缓冲存储器701内命中的命令并执行。另外,在第三次以后,提取电路504提取出跳转目的地地址并输出给比较电路506,比较电路506输出将提取电路504和提取电路505进行比较后的结果、TRUE。
[0086]通过图4~图7所示的硬件、动作,自旋避免机构104进行自旋状态的检测、和自旋状态的检测的解除。接下来,利用图8、图9,对成为自旋状态的情况下的电力特性、和自旋状态的解除的定时的判定方法进行说明。
`[0087]图8是表示自旋状态的消耗电力状态的一个例子的说明图。在符号801所示的说明图中,表示了在多核处理器系统100中成为自旋状态的线程的例子,在符号802所示的说明图中,表示了电力特性的式子,图表803表示了自旋状态下的CPU的消耗电力的特性。
[0088]符号801的说明图所示的多核处理器系统100执行属于并列应用程序的线程I以及线程2、和属于其他应用程序的线程3、线程4。CPU # O执行线程I和线程3,CPU # I执行线程2和线程4。此时,假定通过线程2的指示,线程I执行排他控制处理。
[0089]假定线程I的排他控制处理执行基于标志的监视的状态迁移等待。此时,线程I读出标志I,判断标志是否符合条件,在不符合条件的情况下,再次读出标志I。在进行这样的动作的情况下,CPU持续执行Load (加载)、Compare (比较)、Jump (跳转)这样的命令。由于各命令被存储在高速缓冲存储器103中,所以命令的取出时间最小,由于CPU的运算单元持续动作,所以CPU陷入自旋状态。由于CPU成为以最高的效率高速执行庞大的运算那样的动作,所以陷入消耗电力最大的状态。
[0090]在符号802所示的说明图中,表示了自旋状态的电力特性的式子。若在CPU中N个线程处于动作中、一个线程为自旋状态,则CPU成为自旋状态的概率为I / N。单位时间的CPU成为自旋状态的时间为I / N [秒]。接下来,在自旋状态中的电力特性为P (t)的情况下,CPU消耗的消耗能量为下述(I)式。
[0091]消耗能量=/1/Np (t)dt [J / 秒]…(I)
[0092]其中,(I)式在低频CPU、命令读取反应时间较长的芯片中,值变小。相反,在通过运算列很长的软件执行处理的情况下,存在(I)的值变大的情况。
[0093]图表803表示了 CPU的消耗电力的特性。图表803的横轴表示时刻,纵轴表示电力。电力特性804表示CPU的运算命令单元动作时的电力特性,电力特性805表示CPU的Jump / Compare命令发行所引起的自旋状态的电力特性。电力特性804近似恒定。理由是由于运算命令与存储器的加载存储等花费反应时间(latency)的处理先后进行,所以CPU内不总是流通电,在一个运算处理完成的期间,反复进行激发和待机。因此,即使单次的消耗电力较高、即使连续执行,电力也不加速上升。
[0094]电力特性805在最初是比电力特性804低的电力,但消耗电力加速增加。理由是因为在最初的阶段,Jump / Compare命令只是进行程序计数器311的改写、逻辑比较这样的处理,所以电力特性805成为比电力特性804低的电力。
[0095]然而,若经过一段时间,则由于跳转命令能够以单次的命令逐个动作,所以CPU以被赋予的时钟周期,不花费反应时间地始终动作。结果,CPU进行高密度的命令执行,激发状态持续,温度上升,由泄露电流所起的消耗电力因温度上升而上升。
[0096]其中,关于具体的电力特性804、电力特性805的测量方法,只要针对电力特性804,CPU单纯使进行计算的程序动作,并测量此时的电力值即可。或者,也可以由设计者从处理器的设计书、数据表获取。对于电力特性805,只要执行JumpOxOOOO这一代码作为0x0000地址的命令代码,并测量电力值即可。
[0097]这样,在自旋状态刚刚开始之后的阶段,由于电力消耗为低的状态,所以不解除自旋状态,通过在电力特性805的消耗能量超过了电力特性804的消耗能量的情况下解除自旋状态,能够抑制消耗电力。具体而言,CPU通过在成为下述(2)式的解的时间T解除自旋状态,能够使电力效率提高。
[0098]f tp (t) dt = Pc.t...(2)
[0099]其中,Pc是运算命令单元动作时的消耗电力,Pc.t成为电力特性804的消耗能量。例如,Pc = 40 [mW]。其中,Pc的值被储存于传感器阈值储存寄存器423。
[0100]例如,假定本实施方式中的CPU的电力特性P (t)能够通过下述(3)式算出的情况。
[0101]P (t) = t 八 2 + 30 [mff]…(3)
[0102]CPU将(3)式代入到(2)式,能够得到T = 5.5 [m秒]。因此,CPU通过在自旋状态经过了 5.5 [m秒]时解除自旋状态,能够使电力效率提高。设计者在解开(2)式后,设定为成为自旋避免机构驱动器412的设定项目的规定时间。
[0103]图9是表示自旋状态的解除的定时的判定方法例的说明图。在图8中,说明了当自旋状态在作为(2 )式的解的规定时间以上时,通过解除自旋状态而能够使电力效率提高的情况。在图9中,进一步对自旋状态反复发生的状态进行说明。
[0104]图9所示的CPU # O以一定周期一边调度一边执行自旋状态的线程5、和普通线程处理的线程6。在进行这样的动作的情况下,来自控制寄存器421的中断信号成为一定周期的脉冲而被通知。其中,假定中断信号为HIGH电平时是自旋状态,中断信号为LOW电平时是非自旋状态的情况。
[0105]例如,CPU # O也可以在变成中断信号为HIGH电平的时间的激发宽度超过规定时间,并且反复了规定次数的情况下,解除自旋状态。由此,CPU# O对于一时性的温度上升、成为一次脉冲的单次的自旋状态,能够不解除自旋状态。其中,规定次数的决定方法基于CPU的电力特性、配置文件(profile)结果等由设计者预先决定。在图9的例子中,产生了两次脉冲。在一次脉冲的激发宽度为规定时间以上、规定次数为两次的情况下,CPU # O解除自旋状态。
[0106]接下来,图10、图11所示的时序图表示自旋判定部402中的自旋状态检测判定和自旋状态解除判定的顺序。在图10、图11中,假定自旋避免机构104 # O进行的情况,并省略后缀记号“# O”。
[0107]图10是表示自旋状态检测判定的一个例子的时序图。传感器阈值储存寄存器423将阈值输出给比较电路501 (步骤S1001)。另外,传感器I / F404将传感器信号输出给比较电路501 (步骤S1002)。比较电路501在传感器信号表示的电力量成为阈值以上的情况下,将针对AND电路511的输出信号从FALSE变更为TRUE (步骤S1003)。另外,判定电路502在判定为程序执行的命令为跳转命令的情况下,将针对AND电路511的输出信号从FALSE 变更为 TRUE (步骤 S1004)。
[0108]AND电路511将比较电路501与比较电路506的逻辑积输出给OR电路512 (步骤S1005)。例如,在比较电路501执行了步骤S1003,判定电路502执行了步骤S1004的情况下,AND电路511将针对OR电路512的输出信号从FALSE变更为TRUE。OR电路512在执行了步骤S1005的情况下,将针对控制寄存器421的自旋状态字段的输出信号从FALSE变更为TRUE (步骤S1006)。
[0109]图11是表示自旋状态解除判定的一个例子的时序图。传感器阈值储存寄存器423将阈值输出给比较电路601 (步骤S1101)。另外,传感器I / F404将传感器信号输出给比较电路601 (步骤S1102)。比较电路601在传感器信号表示的电力量小于阈值的情况下,将针对OR电路611的输出信号从FALSE变更为TRUE (步骤S1103)。
[0110]判定电路602在高速缓存状态有变化的情况下,将针对AND电路603的输出信号从FALSE变更为TRUE(步骤S1104)。另外,自旋状态状态寄存器422将自旋状态输出给AND电路603(步骤SI 105)。具体而言,如果是自旋状态,则自旋状态状态寄存器422将TRUE输出给AND电路603,如果是非自旋状态,则将FALSE输出给AND电路603。
[0111]AND电路603将判定电路602与自旋状态状态寄存器422的逻辑积输出给OR电路611 (步骤S1106)。例如,在判定电路602执行了步骤S1104,自旋状态状态寄存器422执行了步骤S1105的情况下,AND电路603将针对OR电路611的信号从FALSE输出为TRUE。
[0112]OR电路611将比较电路601与AND电路603的逻辑和输出给控制寄存器421的自旋状态字段(步骤S1107)。例如,在比较电路601正执行步骤SI 103,或者AND电路603正执行步骤SI 106的情况下,OR电路611将针对控制寄存器421的自旋状态字段的输出信号从FALSE输出为TRUE。
[0113]接下来,在图12、图13中,表示由CPU # O执行的流程图。在图12中,CPU # O通过自旋避免机构驱动器412 # O的功能来执行自旋状态周期性判断处理,在图13中,CPU
#O通过分派调度器324 # O的功能来执行线程退避恢复处理。在图12、图13中,假定CPU
#O进行的情况,省略后缀记号“# O”。
[0114]图12是表示自旋避免机构驱动器412的自旋状态周期性判断处理的一个例子的流程图。自旋避免机构驱动器412将自旋状态周期性标志设定为无周期性(步骤S1201)。在设定后,自旋避免机构驱动器412将反复次数设定为O (步骤S1202),并参照调度计时器对来自控制寄存器421的中断信号进行取样(步骤S1203)。具体而言,自旋避免机构驱动器412以调度计时器表示的时间的数十次,持续监视中断信号,生成中断信号的波形。
[0115]在取样后,自旋避免机构驱动器412判断激发宽度是否为规定时间以上(步骤S1204)。在激发宽度为规定时间以上的情况下(步骤S1204:是),自旋避免机构驱动器412将反复次数加1(步骤S1205),并判断反复次数是否为规定次数以上(步骤S1206)。在反复次数小于规定次数的情况下(步骤S1206:否),自旋避免机构驱动器412移至步骤S1203的处理。
[0116]在反复次数为规定次数以上的情况下(步骤S1206:是),自旋避免机构驱动器412判断自旋状态周期性标志是否为有周期性的状态(步骤S1207)。在是有周期性的状态的情况下(步骤S1207:是),自旋避免机构驱动器412移至步骤S1203的处理。在是无周期性的状态的情况下(步骤S1207:否),自旋避免机构驱动器412将自旋状态周期性标志设定为有周期性(步骤S1208)。在设定后,自旋避免机构驱动器412将有周期性通知给分派调度器324 (步骤S1209),并移至步骤S1203的处理。
[0117]在激发宽度小于规定时间的情况下(步骤S1204:否),自旋避免机构驱动器412判断自旋状态周期性标志是否是无周期性的状态(步骤S1210)。在是无周期性的状态的情况下(步骤S1210:是),自旋避免机构驱动器412移至步骤S1202的处理。在是有周期性的状态的情况下(步骤S1210:否),自旋避免机构驱动器412将自旋状态周期性标志设定为无周期性(步骤S1211)。在设定后,自旋避免机构驱动器412将无周期性通知给分派调度器324(步骤S1212),并移至步骤S1202的处理。
[0118]由此,自旋避免机构驱动器412在激发宽度为规定时间以上,并且自旋状态与非自旋状态重复了规定次数时,可判断为有周期性。
[0119]图13是表示分派调度器324的线程退避恢复处理的一个例子的流程图。分派调度器324判断是否从自旋避免机构驱动器412接受到通知(步骤S1301)。在未接受到通知的情况下(步骤S1301:无通知),分派调度器324在经过一定时间后再次执行步骤S1301的处理。
[0120]在接受到有周期性的通知的情况下(步骤S1301:有周期性),分派调度器324判断除了执行中的线程以外是否分配有其他线程(步骤S1302)。在分配有其他线程的情况下(步骤S1302:是),分派调度器324使执行中的线程从调度循环中退避(步骤S1303),并移至步骤S1301的处理。
[0121]在未被分配其他线程的情况下(步骤S1302:否),分派调度器324使执行中的线程退避并更换为空闲线程(步骤S1304)。在更换后,分派调度器324通知PMU304停止向CPU供给时钟(步骤S1305),并移至步骤S1301的处理。
[0122]在接受到无周期性的通知的情况下(步骤S1301:无周期性),分派调度器324将退避了的线程恢复到调度循环(步骤S1306),并移至步骤S1301的处理。其中,当存在多个退避了的线程时,分派调度器324将退避了的所以线程恢复到调度循环。
[0123]由此,分派调度器324能够使成为自旋状态的原因的线程退避。另外,分派调度器324通过在成为非自旋状态的情况下恢复线程,能够继续进行退避了的线程。
[0124]另外,上述的各流程图所示的步骤具体是例如使CPUs201执行在图2所示的R0M202、RAM203、快闪R0M204、快闪R0M206等存储装置中存储的检索程序的处理。另外,执行后的执行结果每次都被写入到存储装置,并根据来自其他处理的读入请求而读出。
[0125]如以上说明那样,根据系统以及检测方法,包含检测电路,该检测电路根据来自检测电力的传感器的传感器信号和来自监视高速缓冲存储器的状态的高速缓冲存储器状态监视电路的状态信号来检测程序的自旋状态。由此,系统通过使用CPU的电力和高速缓冲存储器的状态变化等自旋状态中的系统的状态作为自旋状态的检测条件,能够不使用排他控制用的命令地检测出由所安装的程序产生的自旋状态。
[0126]其中,在自旋状态的检测中优选是来自传感器的信号和来自高速缓冲存储器状态监视电路的状态信号的组合。理由是因为在仅利用来自传感器的信号检测自旋状态的情况下,若具有系统的移动终端被放入到用户的口袋,则导致热量被闷在里面,不管是否是非自旋状态,消耗电力都上升。另外,对于只利用高速缓冲存储器的状态信号来检测自旋状态的情况,若以不改写指令高速缓冲存储器的方式执行所安装的程序,则成为即使是非自旋状态,状态也不发生变化这样的状态。
[0127]另外,由于本实施方式所涉及的系统在进行自旋状态的检测、自旋状态解除的检测时不进行存储器访问,所以能够几乎无负荷地检测出在现有技术中不能检测的自旋状态。
[0128]另外,系统也可以包含在检测到自旋状态的情况下将程序的自旋状态解除的解除电路。由此,系统即使暂时成为自旋状态也能够迁移为非自旋状态。
[0129]另外,系统也可以将传感器信号和阈值进行比较,并将比较结果输出给检测电路。由此,存在成为自旋状态,CPU的运算单元持续动作而消耗电力、温度上升的可能性,系统能够将有成为了自旋状态的可能性输出给检测电路。
[0130]另外,系统也可以判定程序执行的命令是否是规定命令,并将判定结果输出给检测电路。其中,规定命令可以是跳转命令,也可以是将跳转表的地址加载到程序计数器的命令。由此,由于检测到相同的跳转命令被持续执行,所以系统能够将有成为自旋状态的可能性输出给检测电路。
[0131]另外,系统也可以将用于基于检测电路的检测结果来控制CPU执行的程序的信息保持于控制寄存器。由此,CPU通过参照控制寄存器,能够获取是自旋状态还是非自旋状态。
[0132]另外,系统也可以在传感器信号为阈值以上、高速缓冲存储器的状态无变化的情况下,检测为自旋状态。由此,由于系统检测到消耗电力因自旋状态而加速为止,并且,检测出高速缓冲存储器没有因自旋状态而变更地持续执行相同的命令,所以能够确定为是自旋状态。
[0133]另外,系统也可以在高速缓冲存储器的状态无变化、程序的命令为规定命令的情况下检测为自旋状态。由此,由于系统检测出作为规定命令的跳转命令被反复执行,所以能够确定为是自旋状态。
[0134]另外,系统也可以在传感器信号小于阈值时,或者是自旋状态时高速缓冲存储器的状态有变化的情况下,检测为非自旋状态。由此,由于自旋状态的检测条件的至少任意一个被消除,所以系统能够确定为是非自旋状态。
[0135]另外,系统也可以在检测到自旋状态的情况下,将与自旋状态对应的处理置换为规定的处理而解除自旋状态。其中,规定处理为空闲线程。由此,系统能够解除成为自旋状态而消耗电力加速上升的状态,可使电力效率提高。
[0136]另外,系统也可以在自旋状态的时间为规定时间以上的情况下,停止与自旋状态对应的处理的分配。例如,如果即使成为自旋状态,也存在立即满足标志条件的线程,且使这样的线程退避,则导致处理性能从本来应该立即解除自旋状态的定时劣化处理的退避以及恢复的量。另外,由于刚刚成为自旋状态之后的消耗电力比一般的运算单元低,所以若在刚刚成为自旋状态之后停止处理的分配,则消耗电力增加。因此,系统通过在自旋状态持续了预先设定的规定时间以上的情况下停止处理的分配,能够维持处理性能,并且也可使电力效率提高。
[0137]另外,系统也可以在自旋状态的时间为规定时间以上、且将自旋状态和非自旋状态反复的次数为规定次数以上的情况下,停止与自旋状态对应的处理的分配。例如,若在反复的次数较少的状态下停止处理的分配,则系统能够削减电力的过度供给状态,但由于处理的分配的停止,以及分配的恢复的次数增大,所以停止、恢复所花费的系统开销增大。因此,系统通过在预先设定的规定次数以上时停止处理的分配,能够抑制停止、恢复所花费的系统开销,并使电力效率提高。
[0138]例如,在以往例所涉及的系统进行TCP (Transmission Control Protocol:传输控制协议)分组缓冲器的I / O排他锁定的情况下,自旋状态的反复次数从数千次至数百万次。鉴于此,本实施方式所涉及的系统通过在将规定次数设为数十次,将自旋状态和非自旋状态反复了规定次数以上的情况下,停止与自旋状态对应的处理的分配,与以往例的系统相比,能够提高电力效率。
[0139]此外,本实施方式中说明的检测方法能够通过利用个人计算机、工作站等计算机执行预先准备的程序来实现。该检测程序被记录在硬盘、软盘、CD - R0M、M0、DVD等计算机能够读取的记录介质中,并由计算机从记录介质读出而执行。另外,该检测程序也可以经由互联网等网络来进行发布。
[0140]另外,本实施方式中说明的自旋避免机构104也能够通过标准单元、结构化ASIC(Application Specific Integrated Circuit:专用集成电路)等面向特定用途的IC (以下简称为“ASIC”)、FPGA等PLD (Programmable Logic Device:可编程逻辑器件)来实现。具体而言,例如通过将上述的自旋避免机构104的功能(存储部401?发行命令缓冲器405)基于HDL描述来进行功能定义,并逻辑合成该HDL描述而赋予给ASIC、PLD,能够制造自旋避免机构104。
[0141]附图标记说明:103 —高速缓冲存储器;104 -自旋避免机构;311 —程序计数器;404 —传感器I / F ;421 一控制寄存器;422 —自旋状态状态寄存器;423 —传感器阈值储存寄存器;431 —自旋状态检测电路;432 —自旋状态解除电路;501 —比较电路;502 —判定电路;521 —高速缓存状态信号;601 —比较电路;602 —判定电路。
【权利要求】
1.一种系统,其特征在于,包含: CPU ; 传感器,其检测所述CPU的电力; 高速缓冲存储器状态监视电路,其对高速缓冲存储器的状态进行监视;以及检测电路,其基于来自所述传感器的传感器信号和来自所述高速缓冲存储器状态监视电路的状态信号来检测所述CPU执行的程序的自旋状态。
2.根据权利要求1所述的系统,其特征在于, 所述系统包含解除电路,该解除电路在检测出所述自旋状态时将所述程序的自旋状态解除。
3.根据权利要求1或者权利要求2所述的系统,其特征在于, 所述系统包含比较电路,该比较电路将所述传感器信号与阈值进行比较,并将比较结果输出给所述检测电路。
4.根据权利要求1~权利要求3中任意一项所述的系统,其特征在于, 所述系统包含判定电路,该判定电路判定所述程序执行的命令是否是规定命令,并将判定结果输出给所述检测电路。
5.根据权利要求4所述的系统,其特征在于, 所述规定命令是跳转命令。
6.根据权利要求1~权利要求5中任意一项所述的系统,其特征在于, 所述系统包含控制寄存器,该控制寄存器储存用于基于所述检测电路的检测结果来控制所述程序的信息。
7.一种系统,其特征在于,包含:
CPU ; 传感器,其检测所述CPU的电力,并输出传感器信号;以及 高速缓冲存储器状态监视电路,其对高速缓冲存储器的状态进行监视并输出状态信号, 在所述传感器信号成为阈值以上的情况下,当所述状态信号表示所述高速缓冲存储器的状态无变化时,检测出所述CPU执行的程序的自旋状态。
8.根据权利要求7所述的系统,其特征在于, 在所述状态信号表示所述高速缓冲存储器的状态无变化的情况下,当执行的所述程序的命令为规定命令时,检测出所述自旋状态。
9.根据权利要求7或者权利要求8所述的系统,其特征在于, 在所述传感器信号小于所述阈值时,或者在是所述自旋状态的情况下所述状态信号表示所述高速缓冲存储器的状态有变化时,检测出非自旋状态。
10.一种检测方法,其特征在于, 对CPU的电力进行检测; 对高速缓冲存储器的状态进行监视; 基于检测出的电力和所述高速缓冲存储器的状态来检测所述CPU执行的程序的自旋状态。
11.根据权利要求10所述的检测方法,其特征在于,检测所述电力是否为阈值以上, 当所述电力为所述阈值以上时,检测出所述自旋状态, 当所述电力小于所述阈值时,不进行所述自旋状态的检测。
12.根据权利要求10或者权利要求11所述的检测方法,其特征在于, 在检测出所述自旋状态的情况下,将与所述自旋状态对应的处理置换成规定的处理来解除所述自旋状态。
13.根据权利要求12所述的检测方法,其特征在于, 在所述自旋状态的时间为规定时间以上的情况下,使与所述自旋状态对应的处理的分配停止。
14.根据权利要求13所述的检测方法,其特征在于, 使所述分配停止的处理还在将所述自旋状态和非自旋状态反复的次数为规定次数以上的情况下,使与所述自旋状态对应的处理的分配停止。
【文档编号】G06F11/30GK103493023SQ201180070365
【公开日】2014年1月1日 申请日期:2011年4月26日 优先权日:2011年4月26日
【发明者】山下浩一郎, 山内宏真, 铃木贵久, 栗原康志 申请人:富士通株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1