信息处理装置和信息处理方法.pdf

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

CN201410131614.3

申请日:

2014.04.03

公开号:

CN104102474A

公开日:

2014.10.15

当前法律状态:

实审

有效性:

审中

法律详情:

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

IPC分类号:

G06F9/30; G06F9/48

主分类号:

G06F9/30

申请人:

瑞萨电子株式会社

发明人:

外山正胜; 林越正纪

地址:

日本神奈川

优先权:

2013.04.03 JP 2013-077455

专利代理机构:

中国国际贸易促进委员会专利商标事务所 11038

代理人:

欧阳帆

PDF下载: PDF下载
内容摘要

本发明涉及信息处理装置和信息处理方法。应用处理被在指令集体系结构没有兼容性的非对称的处理器核之间切换,使得处理可以被继续地执行。在信息处理装置中,当在第一处理器核正在执行应用程序的同时产生用于切换执行主体的请求时,切换处理代码使得第一处理器核指定目前正在执行的基本块。切换处理代码使得第一处理器核执行第一执行代码直到在指定的基本块的结尾处的分支指令为止,并且使得第二处理器核从在紧接于指定的基本块要执行的基本块的开头的指令起执行第二执行代码。

权利要求书

1.  一种信息处理装置,包括:
第一处理器核;
第二处理器核;以及
与第一处理器核和第二处理器核耦接的存储器,
其中该存储器存储:
第一执行代码和第二执行代码,该第一执行代码和第二执行代码是通过分别编译在第一处理器核和第二处理器核中的每一个中执行的应用程序而获得的;
表格,该表格示出存储器上的第一执行代码的基本块中的每一个的地址与存储器上的第二执行代码的基本块中的每一个的地址之间的对应关系;以及
切换处理代码,当在其中第一处理器核执行应用程序的时段期间产生切换执行主体的请求时,该切换处理代码操作,以及
其中该切换处理代码被配置为使得,当产生切换请求时,
使第一处理器核基于该表格指定目前正在执行的基本块,
使第一处理器核执行第一执行代码直到在所指定的基本块的结尾处的分支指令为止,以及
使第二处理器核从在紧接于所指定的基本块要执行的基本块的开头处的指令起执行第二执行代码。

2.
  根据权利要求1所述的信息处理装置,
其中第一处理器核具有第一寄存器组,
其中第二处理器核具有第二寄存器组,
其中该存储器包括:
为第一处理器核分配的第一堆栈区;以及
为第二处理器核分配的第二堆栈区,
其中在第一执行代码的基本块中的每一个的开头处分配给第一 寄存器组的数据的内容匹配在第二执行代码的对应基本块的开头处分配给第二寄存器组的数据的内容,以及
其中在第一执行代码的基本块中的每一个的开头处分配使得被保存在第一堆栈区中的数据的内容匹配在第二执行代码中的对应基本块的开头处分配使得被保存在第二堆栈区中的数据的内容。

3.
  根据权利要求2所述的信息处理装置,
其中该存储器还包括缓冲区,以及
其中该切换处理代码被配置为在完成所指定的基本块的执行之后通过第一处理器核将存储在第一寄存器组中的数据存储到缓冲区中,
其中该切换处理代码被配置为在完成所指定的基本块的执行之后通过第二处理器核将存储在第一堆栈区中的数据转换为用于在第二处理器核中执行的数据并且将结果得到的数据存储到第二堆栈区中,以及
其中该切换处理代码被配置为通过第二处理器核将存储在缓冲区中的数据转换为用于在第二处理器核中执行的数据并且将结果得到的数据存储到第二寄存器组中。

4.
  根据权利要求3所述的信息处理装置,
还包括电力管理单元,该电力管理单元能够独立地为第一处理器核和第二处理器核中的每一个供应电源电压,
其中当第一处理器核开始执行该应用程序时该电力管理单元将电源电压供应给第一处理器核但不将电源电压供应给第二处理器核,
其中,在产生切换请求之后,该电力管理单元开始将电源电压供应给第二处理器核,以及
其中,当供应给第二处理器核的电源电压达到操作所必需的水平时,该电力管理单元向第一处理器核通知准备完成。

5.
  根据权利要求4所述的信息处理装置,其中该切换处理代码被配置为使得,在从该电力管理单元向第一处理器核输出准备完成的通知并且存储在第一寄存器组中的数据被存储在缓冲区中之后,停止向第一处理器核供应电力的请求被输出到第一处理器核。

6.
  根据权利要求3所述的信息处理装置,
其中该切换处理代码被配置为基于该表格中示出的地址的对应关系通过第二处理器核将存储在缓冲区中的第一处理器核的程序计数器的值转换为用于第二处理器核的程序计数器的值,以及
其中该切换处理代码被配置为基于该表格中存储的地址的对应关系通过第二处理器核将存储在第一堆栈区中的地址的值转换为用于第二处理器核的地址的值。

7.
  根据权利要求1所述的信息处理装置,其中第一处理器核以比第二处理器核的频率低的频率操作。

8.
  根据权利要求1所述的信息处理装置,其中第一处理器核的指令集和第二处理器核的指令集不具有兼容性。

9.
  一种使用多核处理器的信息处理方法,该多核处理器包括第一处理器核、第二处理器核、以及与第一处理器核和第二处理器核耦接的存储器,
该方法包括以下步骤:
通过分别编译在第一处理器核和第二处理器核中的每一个中执行的应用程序,产生第一执行代码和第二执行代码;
产生表格,该表格示出存储器上的第一执行代码的基本块中的每一个的地址与存储器上的第二执行代码的基本块中的每一个的地址之间的对应关系;
允许第一处理器核基于该表格指定目前正在执行的基本块;
使第一处理器核执行第一执行代码直到在所指定的基本块的结尾处的分支指令为止;以及
使第二处理器核从在紧接于所指定的基本块要执行的基本块的开头处的指令起执行第二执行代码。

说明书

信息处理装置和信息处理方法
相关申请的交叉引用
将2013年4月3日提交的日本专利申请No.2013-077455的公开内容(包括说明书、附图以及摘要)通过参考全部并入在本申请中。
背景技术
本发明涉及信息处理装置和信息处理方法,并且例如优选地被用在具有其体系结构(architecture)彼此不同的异种的(heterogeneous)(非对称的)多核的中央处理单元(CPU)中。
要求电池驱动的装置(诸如传感器装置)在安装之后在没有更换电池的情况下长期操作。在这种装置中,通常,传感器的数据收集通过间歇操作被执行,并且使用存储的数据的计算处理或使用网络的数据传送在特定定时处被执行。因为CPU的计算能力在其中间歇地执行简单的数据收集处理的正常时间中是不必要的,所以CPU可以以尽可能低的操作频率操作以便不消耗电力。另一方面,在执行网络处理或大量数据的分析时,处理必须以高CPU能力在短时间中完成。
为了这种要求,使用通常称为DVFS(动态电压和频率调整(Scaling))的根据需要的计算能力改变CPU核的电压和操作频率的技术。然而,在单个CPU核的体系结构中,难以获得满足低功率消耗和高性能两者的特性。
ARM公司(ARM)企图通过将具有低功率导向特性的CPU核与高性能的CPU核结合并且在核之间无缝地切换软件的big.LITTLE处理体系结构来解决该问题(参考Peter Greenhalgh的“Big.LITTLEprocessing with ARM CortexTM-A15&Cortex-A7”,ARM,WHITEPAPER,2011年9月(非专利文献1))。
在日本未经审查的专利申请公开(PCT申请的翻译)No. 2010-538371(专利文献1)中描述了等效于ARM的big.LITTLE体系结构的方法。该文献公开了在具有不同操作频率和操作电力水平的特性的两个非对称的核之间透明地(transparently)切换来自OS(操作系统)的应用的方法。在该专利文献的配置中,两个非对称的核的指令集体系结构(ISA)必须具有兼容性。
背景技术文献
[专利文献]
专利文献1:日本未经审查的专利申请公开(PCT申请的翻译)No.2010-538371
[非专利文献]
[非专利文献1]
Peter Greenhalgh,“Big.LITTLE processing with ARMCortexTM-A15&Cortex-A7”,ARM,WHITEPAPER,2011年9月
发明内容
虽然日本未经审查的专利申请公开(PCT申请的翻译)No.2010-538371(专利文献1)公开了在核之间切换应用处理并且继续地执行它的方法,但是其前提是ISA具有兼容性。也就是说,虽然允许指令流水线、超标量(super scalar)等的微体系结构水平的差别,但是可执行指令的种类和通用寄存器组必须是共同的。因此,在不同特性的核之间的电力效率的差别或性能的差别被限制在若干倍的程度。类似地,同样在ARM的whitepaper(非专利文献1)的情况下,描述了Cortex-A7和Cortex-A15之间的性能的差别最大为三倍,并且电力效率的差别最大为约3.8倍。
本发明的一个主要目的是提供能够在其ISA没有兼容性的非对称的核之间切换应用处理的同时继续地执行该处理的信息处理装置和信息处理方法。
作为一个实施例的信息处理装置包括第一处理器核、第二处理器 核以及与第一和第二处理器核耦接的存储器。存储器存储第一执行代码、第二执行代码、表格以及切换处理代码。第一和第二执行代码是通过分别编译在第一和第二处理器核中的每一个中执行的应用程序获得的。该表格示出存储器上的第一执行代码的基本块中的每一个的地址与存储器上的第二执行代码的基本块中的每一个的地址之间的对应关系。当在其中第一处理器核执行应用程序的时段期间产生切换执行主体的请求时,该切换处理代码使得第一处理器核基于该表格指定目前正在执行的基本块。该切换处理代码使得第一处理器核执行第一执行代码直到在所指定的基本块的结尾处的分支指令(branchinstruction),并且使得第二处理器核从在紧接于所指定的基本块要执行的基本块的开头处的指令起执行第二执行代码。
根据该实施例,通过在其ISA没有兼容性的非对称的核之间切换应用处理,可以继续地执行该应用处理。
附图说明
图1是示出根据一个实施例的作为信息处理装置的非对称的多核的CPU装置的配置的框图。
图2是示出存储在图1中的存储器中的软件的配置的图。
图3是示出编译处理的过程的流程图。
图4是示出用于每一个核的应用处理代码和中间表现代码的对应关系的图。
图5是用于说明记录在图4的示例中的指令地址转换表中的地址信息的图。
图6是示出样本代码的图。
图7是示出与图6的样本代码对应的用于核1的应用处理代码的基本块的配置示例的图。
图8A-8C是示出在执行图6的样本代码上的处理时的堆栈的状态的图。
图9是用于说明执行语境转移(execution context transfer)处 理的具体的处理内容的图。
图10是示出图9中的基本块执行完成处理的步骤的流程图。
图11是示出图9中的堆栈转换处理的步骤的流程图。
图12是示出图9中的寄存器转换处理的步骤的流程图。
图13是示出传感器系统的操作示例的流程图。
图14是示出图13中的执行语境转移处理(步骤S615)的步骤的流程图。
具体实施方式
在下文中,将参考附图具体地描述实施例。相同的附图标记被指定给相同的或对应的部件并且不会重复它们的描述。
非对称的多核的CPU装置的一般配置
图1是示出根据一个实施例的作为信息处理装置的非对称的多核的CPU装置的配置的框图。
参考图1,非对称的多核的CPU装置1包括低功率导向的核1(20)、高性能导向的核2(30)以及电力管理单元10。与核2(30)相比,核1(20)以更低的操作频率操作并且以更低的操作电压操作,使得功率消耗较低。
安装在核1(20)中的指令集体系结构(ISA1)(21)和安装在核2(30)中的指令集体系结构(ISA2)(22)不必具有兼容性。此外,核1(20)中提供的寄存器组1(22)和核2(30)中提供的寄存器组2(32)不必具有兼容性。
例如,低功率导向的核1(20)的寄存器宽度可以被设定为16比特,而高性能导向的核2(30)的寄存器宽度可以被设定为32比特。通过使得核1(20)的寄存器宽度小于核2(30)的寄存器宽度,可以减少核1(20)中的寄存器的数量以及电路面积。因此,可以增大核1(20)与核2(30)之间的性能差别或电力效率差别。
电力管理单元10经由电源线11将电力(电源电压)供应给核1(20)并且经由电源线12将电力(电源电压)供应给核2(30)。给 核的电力供应由电力管理单元10独立地控制。电力管理单元10可以经由中断信号线13将中断通知发出给核1(20)。
非对称的多核的CPU装置1还包括存储器50、周边装置40、以及总线41。核1(20)、核2(30)、电力管理单元10、存储器50和周边装置40经由总线41彼此耦接。核1(20)和核2(30)经由总线41耦接到存储器50和周边装置40以便共享存储器50和周边装置40。
存储器上的软件的配置
图2是示出存储在图1中的存储器中的软件的配置的图。图2还示出通过编译器60将源代码61转换为用于核1(20)的执行代码和用于核2(30)的执行代码(在下文中,也称为指令代码或处理代码)的处理。
参考图1和图2,其中描述应用处理的源代码61由编译器60转换为被翻译为核1(20)的指令代码的用于核1的应用处理代码51、被翻译为核2(30)的指令代码的用于核2的应用处理代码52、以及由处理代码51和52共同参照的数据53。还产生示出用于核1的应用处理代码51和用于核2的应用处理代码52的地址的对应关系的指令地址转换表54。软件51-54在执行时被放置在存储器50上。
另外,在存储器50上,确保在核1(20)中执行用于核1的应用处理代码51时使用的用于核1的堆栈区55以及在核2(30)中执行用于核2的应用处理代码52时使用的用于核2的堆栈区56。在存储器50上,还放置具有将核1(20)的执行状态转移到核2(30)以及继续执行所必需的工作(working)的执行语境转移处理代码57以及用于临时存储作为核1(20)的执行状态的在寄存器组1(22)中的数据的寄存器组转换缓冲器58。
编译处理
1、词法分析(Lexical Analysis)
图3是示出编译处理的过程的流程图。参考图2和图3,在编译处理中,首先,执行将源代码61转换为作为文法的基本单位的一串 记号(token)的词法分析处理(步骤S100)。
2、语法分析(Syntax Analysis)和中间表现翻译处理
接下来,执行根据编程语言的文法规则分析记号串的语法分析处理(步骤S105),并且随后执行基于语法分析结果产生中间表现代码63的中间表现翻译处理62(步骤S110)。以这种方式,其中描述应用处理的源代码61在将代码转换为用于核的处理代码51和52时通过中间表现翻译处理62被临时地转换为作为不依赖于特定的ISA的指令代码的中间表现代码63。
作为通过编译器60执行词法分析和语法分析的结果通过明确地具体实现(embody)表示软件的逻辑结构的中间数据获得中间表现代码63。一般的编译器在内部保持与中间表现代码对应的中间数据,但是它不明确地输出具有中间表现代码形式的数据。中间表现代码例如具有不依赖于ISA的指令形式(诸如Java(注册商标)的字节码),并且是通用的指令代码方案,诸如装载、存储、算术运算和分支。将代码临时地翻译为中间表现代码、执行优化并且其后在编译器中将代码转换为目标指令代码的方法是在编译器库(compiler base)的LLVM(低水平虚拟机)等中使用的已知的技术。
通常,程序可以通过使用分支指令(跳转指令)作为标记被分成一些基本块(basic block)。基本块被限定为,(i)执行控制从构成基本块的句子的布置的开始进展到最后,(ii)分支指令(跳转指令)仅仅被放置在基本块的结尾处,以及(iii)处理可以从另一个基本块进入一个基本块的开始。使用基本块作为单位执行以下步骤。
3、代码优化处理/执行语境状态控制处理
接下来,编译器60执行代码优化处理以及执行语境状态控制处理64(步骤S115)。代码优化处理是为了产生更高效率的代码的、对中间表现代码63执行的每一个核的体系结构所特有的处理。例如,执行将变量或暂时的计算途中结果分配到特定的通用寄存器的处理等。
执行语境状态控制处理64被执行为对于代码优化处理添加限 制。在实施例中,在执行应用程序时将处理从核1切换到核2时,执行直到在核1目前正执行的基本块的结尾处的分支指令为止的处理,并且在基本块的边界处将处理从核1移交到核2。在这时候,后续基本块的开头(head)位置被用作检查点,并且核1的寄存器状态和堆栈状态(所谓的执行语境)被转换为用于核2的寄存器状态和堆栈状态。为了使得能够进行执行语境转换处理,以下限制被添加到代码优化处理。
限制1
在基本块的边界处,保存在用于核1(20)的堆栈区55中的数据的内容和顺序以及保存在用于核2(30)的堆栈区56中的数据的内容和顺序相匹配。保存在堆栈区中的数据的单位(寄存器宽度)不必匹配。
限制2
在基本块的边界处,保持在用于核1的寄存器组1(22)和用于核2(30)的寄存器组2(32)之中的核中具有共同使用目的的通用寄存器中的数据的内容相匹配。在基本块的内部处理中,通用寄存器可以被自由地用于代码优化。
限制3
在将指令代码的地址信息(例如,程序计数器(PC))保存在堆栈区中的情况下,地址信息被保存为使得它可以与保存在堆栈中的其它数据区分。需要限制3以使得能够在将处理从核1移交到核2时容易执行根据指令地址转换表54重写地址信息的处理。
对于限制1和2,例如,在基本块中使用的暂时的计算途中结果可以在被保持在具有足够数量的通用寄存器的处理器核中的寄存器中的同时被传给下一个基本块。另一方面,在具有有限数量的通用寄存器的处理器核中,暂时的数据被保存在堆栈中并且在下一个基本块中被取出,或者被暂时地丢弃,并且必须在下一个基本块中再次执行计算以便再产生数据。为了吸收由检查点(基本块的边界)处的处理器核的体系结构的差别所引起的处理的差别,在执行语境状态控制处 理64中,执行用于使得寄存器和堆栈的状态(执行语境)匹配的额外的处理。例如,在数据被存储在核中的一个中的通用寄存器中并且被存储在另一个核中的堆栈中的情况下,插入将前者的数据临时地保存到堆栈中的处理。
对于限制3,为了区分保存在堆栈区中的地址信息,执行记录附加信息的操作。例如,可以使用将指令代码的地址信息和特定的形式的数据(魔码(magic code))的组保存在堆栈区上的方法、产生表示地址信息的保存位置的指针信息的方法等。稍后将参考图6-8描述后者的方法。
4、指令代码翻译处理
在下面步骤中,经受优化处理和执行语境状态控制处理64的中间表现代码63通过用于核1的指令代码翻译处理65被转换为用于核1的指令代码(用于核1的应用处理代码51)并且通过用于核2的指令代码翻译处理66被转换为用于核2的指令代码(用于核2的应用处理代码52)(步骤S120)。使用基本块作为单位执行指令代码翻译处理65和66。
由于执行语境状态控制处理64被预先执行,因此指令代码翻译处理65和66根据共同的规则产生指令代码。具体地,在用于核1的应用处理代码51的基本块中的每一个的开头处分配给寄存器组1(22)的数据的内容匹配在用于核2的应用处理代码52中的对应基本块的开头处分配给寄存器组2(32)的数据的内容。此外,在用于核1的应用处理代码51的基本块中的每一个的开头处分配使得被保存在用于核1的堆栈区(55)中的数据的内容匹配在用于核2的应用处理代码52中的对应基本块的开头处分配使得被保存在用于核2的堆栈区(56)中的数据的内容。
5、链接处理/指令地址转换表的产生
接下来,通过链接处理67,用于核1的指令代码、用于核2的指令代码和数据被放置在存储器50的地址空间中(步骤S125)。在这时候,编译器60还产生指令地址转换表54,在该指令地址转换表 54中记录地址分派(allocation)之后的用于核1的指令代码(用于核1的应用处理代码51)和地址分派之后的用于核2的指令代码(用于核2的应用处理代码52)之间的地址对应关系(步骤S130)。
指令地址转换表的具体的示例
在下文中,将描述图2的指令地址转换表54的具体的示例。
图4是示出用于每一个核的应用处理代码和中间表现代码的对应关系的图。参考图2和图4,使用直到分支指令为止的连续指令串作为单位将中间表现代码63分成基本块。例如,在图4的示例中,中间表现代码63被分成基本块A、B和C。
编译器60以基本块单位为基础在指令代码翻译处理65和66中将中间表现代码63翻译为用于核的指令代码。例如,在图4的示例中,与中间表现代码63的基本块A对应的处理内容在中间表现代码63被翻译为用于核1的指令代码的情况下是经翻译的基本块1A,并且在中间表现代码63被翻译为用于核2的指令代码的情况下是经翻译的基本块2A。类似地,中间表现代码的基本块B对应于经翻译的基本块1B和经翻译的基本块2B,并且中间表现代码的基本块C对应于经翻译的基本块1C和经翻译的基本块2C。
经翻译的基本块1A-1C和2A-2C通过链接处理67被分配给地址空间。在这时候,对应的经翻译的基本块的开头地址的组被记录在指令地址转换表54中。
图5是用于说明记录在图4的示例中的指令地址转换表中的地址信息的图。参考图4和图5,经翻译的用于核1的基本块1A的开头地址0x1000和对应的经翻译的用于核2的基本块2A的开头地址0x8000的组被记录在指令地址转换表54中。对于基本块B和C执行类似的操作。
每个应用处理的指令代码被分配给每个核的区域。数据被分配给核共有的区域并且可以通过相同的地址由每个核参照。
执行语境状态控制处理的限制3的具体的示例
在下文中,作为执行语境状态控制处理64的限制3的具体的示 例,将描述分离地产生表示地址信息的保存位置的指针信息的方法。
图6是示出样本代码的图。在图6的样本代码中,示出顺序执行简单且没有分支的处理1、处理3和处理2的示例。
图7是示出与图6的样本代码对应的用于核1的应用处理代码的基本块的配置示例的图。
参考图6和图7,使用分支指令作为边界划分基本块,使得函数func_main由于调用函数func_a而被分成不同基本块。前半部被称为基本块1并且后半部被称为基本块2。函数func_a变为单个基本块3。基本块1的最后的指令是跳转到基本块3的分支指令。基本块3的最后的指令是返回到基本块2的开头的分支指令。处理的执行顺序是处理1(基本块1)、处理3(基本块3)和处理2(基本块2)。在示例中,寄存器宽度是16比特,并且经由堆栈传递用于函数调用的所有引数(argument)参数。
图8A-8C是示出在执行图6的样本代码上的处理时的堆栈的状态的图。
图8A示出基本块1的开头的堆栈的状态。堆栈指针(SP)指示堆栈区的开头。
参考图8B,在调用函数func_a的情况下,引数参数(0x0004,0x0008)被堆栈在堆栈区中,并且其后,作为返回目的地的指令代码的地址(基本块2的开头地址:0x103C)被堆栈。这是在基本块1的结尾处执行的处理作为用于调用函数func_a的预处理。
除了该处理之外,其中作为返回目的地的指令代码的地址被存储的SP的位置信息(地址0xBFFA)被存储在与堆栈区不同的区域中提供的保存地址信息区域中。保存地址信息区域也是像堆栈区一样扩展的区域。
因此,在紧接着到函数func_a的分支之后的基本块3的开头处,获得图8B中示出的堆栈状态。地址0xBFFA中的数据是保存在堆栈区中的数据中的指令代码的地址,并且可以通过扫描保存地址信息区域而被检测。
参考图8C,在基本块3的结尾处,从堆栈获得返回地址(地址0xBFFA)并且程序返回到该地址。在这时候,存储在保存地址信息区域中的数据也被丢弃。结果,在基本块2的开头处,获得图8C中示出的堆栈状态。
对保存地址信息区域的操作通过执行语境状态控制处理64(图3中的步骤S115)被插入并且通过用于核1的指令代码翻译处理65(图3中的步骤S120)被自动地增加到基本块中。可以通过硬件实现将返回地址保存到堆栈并且同时还将SP处的数据保存到保存地址信息区域的处理。
执行语境转移处理
接下来,将描述作为将核1(20)的执行状态转移到核2(30)并且继续地执行状态的处理的图2中的执行语境转移处理57。在用于核1的应用的执行期间时间约束改变的情况下,即,在必须通过高性能的核2(30)短时间内给出结果的情况(需要高计算能力的情况)下,开始执行语境转移处理57。
例如,将描述作为图1中的周边装置40提供的图像传感器。在没有图像被供应给图像传感器的正常时间中,不需要CPU的高计算能力。另一方面,在图像被供应给图像传感器并且图像传感器对它作出反应的情况下,CPU必须执行图像数据分析处理并且在预定时间内输出结果,并且要求高计算能力。在该情况下,响应于来自图像传感器的中断通知,在核1(20)中执行中断处理程序(interrupt handler)处理。响应于来自中断处理程序处理的请求,执行语境转移处理57在核1(20)和核2(30)中被执行。
作为另一个示例,通常地,足以慢慢地执行仅仅将输入数据存储到缓冲器中的简单处理。在预定量的输入数据被存储在缓冲器中时的时间点处,执行立即计算数据并且输出结果的处理。在该情况下,通过来自管理核1(20)中执行的输入数据的缓冲的处理程序的请求,执行语境转移处理57在核1(20)和核2(30)中被执行。
作为又一个示例,OS(操作系统)根据启动的任务的负载信息 确定调度是否是可能的,并且执行语境转移处理57通过来自OS的请求被执行。
图9是用于说明执行语境转移处理的具体的处理内容的图。图9示出通过核1(20)中执行的处理代码确定时间约束的改变并且产生用于将该处理从核1(20)切换到核2(30)的请求的示例。
1、核1侧的处理
如图9中所示出的,在执行语境转移处理57中,功能被分到核1(20)和核2(30)。作为核1侧的处理70,依次执行核2启动请求处理71、基本块执行完成处理72、寄存器存储处理73和核1停止处理74。
1-1、核2启动请求处理
参考图1和图9,首先,作为核2启动请求处理71,为了启动处于电力供应被停止的状态的核2(30),从核1(20)向电力管理单元10发送用于供应电力到核2(30)的请求。核1(20)执行用于核1的应用处理的其余部分。
1-2、基本块执行完成处理
当核2(30)启动并且进入可执行电力状态时,电力管理单元10通过中断信号向核1(20)通知核2(30)进入可执行状态的事实。接收到中断通知的核1(20)执行作为中断处理的基本块执行完成处理72。
图10是示出图9中的基本块执行完成处理的步骤的流程图。参考图9和10,首先,核1(20)获得正在执行的应用处理中的当前程序计数器(PC)的值(步骤S200)。
接下来,核1(20)扫描指令地址转换表54并且指定目前正在执行的基本块(步骤S205)。可以通过提供散列表(hash table)减少搜索指令地址转换表54的时间。
随后,核1(20)执行处理直到在指定的基本块的结尾处的分支指令为止,由此完成目前正在执行的基本块的处理并且刚好在接下来要执行的基本块的开头处的指令之前停止处理(步骤S210)。在作为 核1的功能而存在调试功能(诸如硬件断点(break point)或步进指令(step instruction)执行)的情况下,通过使用它,处理被执行到刚好在接下来要执行的基本块的开头处的指令之前,并且可以在该时间点处停止处理。还可以通过考虑分支指令的分支目的地地址设定软件断点来实现该功能。
当将电力供应给核2(30)的请求被发送给电力管理单元10时,在没有等待来自电力管理单元10的中断通知的情况下,可以从由当前应用处理的PC(程序计数器)指示的指令到在正在执行的基本块的结尾处的分支指令(直到刚好在接下来要执行的基本块的开头处的指令之前为止)地执行处理。在该情况下,在执行处理直到在目前正在执行的基本块的结尾处的分支指令为止之后,核1(20)等待核2(30)进入可执行状态的事实的中断通知。
1-3、寄存器存储处理
再次参考图9,接下来,核1(20)执行寄存器存储处理73。具体地,核1(20)将刚好在由应用处理代码执行在下一个基本块的开头处的指令之前的寄存器中的数据存储到寄存器组转换缓冲器58中。
1-4、核1停止处理
作为核1停止处理74,核1(20)请求开始核2(30)的执行(复位状态取消)并且请求电力管理单元10停止将电力供应给核1(20)自身。
2、核2侧的处理
当取消核2(30)的复位状态时,为执行所必需的最低限的初始化处理被执行并且其后,启动核2侧的执行语境转移处理57。作为核2侧的处理80,依次执行堆栈转换处理81、寄存器转换处理82、和语境分派处理83。
2-1、堆栈转换处理
图11是示出图9中的堆栈转换处理的步骤的流程图。
参考图9和图11,在堆栈转换处理81中,核2(30)读取存储器50上的用于核1的堆栈区55中的数据(步骤S300),扩展数据宽 度(步骤S305),并且将数据重新放置在用于核2的堆栈区56中(步骤S315)。在这时候,在从用于核1的堆栈区55读取的数据是诸如函数调用的返回值之类的指令代码的地址的情况下,核2(30)扫描指令地址转换表54,利用核2(30)的指令代码的对应地址代替该地址(步骤S310),并且将结果得到的数据放置在用于核2的堆栈区56中(步骤S315)。
对存储在用于核1的堆栈区55中的所有数据重复上述的步骤(直到在步骤S320中获得“是”)。在图11中,执行步骤S305和S310的顺序可以是相反的。
2-2、寄存器转换处理
图12是示出图9中的寄存器转换处理的步骤的流程图。参考图9和12,在寄存器转换处理82中,核2(30)将存储在寄存器组转换缓冲器58中的核1(20)中的通用寄存器中的数据转换为核2(30)中的通用寄存器的形式。
具体地,根据执行语境状态控制处理64中给出的约束条件,核2(30)转移寄存器中的数据,使得用于保持数据的通用寄存器的对应关系匹配(步骤S400)。此外,核2(30)将PC中的数据转换为通过扫描指令地址转换表54获得的核2(30)的指令代码地址(步骤S405)。核2(30)将SP中的数据替换为通过堆栈转换处理81产生并且堆栈在用于核2的堆栈区56的顶部的数据的地址(步骤S410)。作为执行步骤S400、S405和S410的顺序,可以首先执行任何步骤。
2-3、语境分派处理
在语境分派处理83中,核2(30)将通过寄存器转换处理82在寄存器组转换缓冲器58中产生的通用寄存器中的数据设定到核2(30)中的寄存器组32。因此,可以在核2(30)中重新开始核1(20)中中断的处理的继续。
根据用于核2的寄存器组32中包括的程序计数器(PC)的值,核2(30)从在紧接于目前正在执行的基本块要执行的基本块的开头处的指令起开始用于核2的应用处理代码52的执行。
传感器系统的应用示例
作为非对称的多核的CPU装置1被应用于其的系统的示例,存在以电池长期继续地操作的传感器系统。在下文中,将描述传感器系统的操作。
图13是示出传感器系统的操作示例的流程图。参考图1和13,在传感器系统中,CPU(核1(20)和核2(30)两者)通过间歇操作在正常时间中处于待机状态并且停止。周期性地或通过来自外部的请求(在步骤S500中为“是”),电力管理单元10开始将电力供应到核1(20)。从待机状态的开始点总是核1(20)。
当电力被从电力管理单元10供应时,核1(20)执行初始化处理(步骤S600)并且其后开始应用程序的执行(步骤S605)。当CPU的处理负载不增大时(在步骤S610中为“否”),核1(20)执行处理直到应用程序结束为止(直到在步骤S620中获得“是”为止)。其后,核1(20)请求电力管理单元10停止将电力供应到核1(20),并且电力管理单元10停止将电力供应到核1(20),由此返回到待机状态。
另一方面,在应用程序的执行期间CPU的处理负载增大的情况下(在步骤S610中为“是”),核1(20)的处理移动到参考图9描述的执行语境转移处理57(步骤S615)。作为CPU的处理负载增大的情况,例如,存在预定量的感测的输入数据被存储在缓冲器中、通过使用存储的数据执行计算、并且经由通信线输出计算结果的情况。
图14是示出图13中的该执行语境转移处理(步骤S615)的步骤的流程图。
参考图1、9和14,在执行语境转移处理中,核1(20)请求电力管理单元10启动核2(30)(图9中的71和步骤S630)。一收到来自核1(20)的该请求,电力管理单元10就开始将电力供应到核2(30)(步骤S515)。当供应给核2(30)的电源电压达到核2(30)可以操作的电压水平时,电力管理单元10通过中断信号向核1(20) 通知核2(30)进入可执行状态的事实(步骤S520)。
一收到来自电力管理单元10的中断通知,如参考图10所描述的,核1(20)执行完成目前正在执行的基本块的执行并且将该处理前进到刚好在下一个执行的基本块的开头之前的基本块执行完成处理72(步骤S635)。此外,核1(20)执行将寄存器组1(22)中的数据存储到寄存器组转换缓冲器58中的寄存器存储处理73(步骤S640)。
其后,如参考图9所描述的,核1(20)执行核1停止处理74(步骤S645)。具体地,核1(20)请求取消核2(30)的复位状态(步骤S650)并且请求电力管理单元10停止将电力供应到核1(20)自身(步骤S655)。响应于来自核1(20)的电力停止请求(步骤S655),电力管理单元10停止将电力供应到核1(20)(步骤S525)。
当复位状态被取消时,核2(30)执行初始化处理(步骤S700)。其后,如参考图11所描述的,核2(30)执行读取存储器50上的用于核1的堆栈区55中的数据、将该数据转换为用于该核自身的数据、并且将结果得到的数据放置在用于核2的堆栈区56中的堆栈转换处理81(步骤S705)。
随后,如参考图12所描述的,核2(30)执行将存储在寄存器组转换缓冲器58中的核1(20)中的通用寄存器中的数据转换为核2(30)中的通用寄存器的格式的寄存器转换处理82(步骤S710)。此外,核2(30)执行将通过寄存器转换处理82在寄存器组转换缓冲器58中产生的通用寄存器中的数据设定到核2(30)中的寄存器组32中的语境分派处理83(步骤S715)。
其后,核2(30)从紧接于其执行在核1(20)中结束的基本块要执行的基本块起重新开始应用程序的执行(步骤S720)。核2(30)继续该处理直到应用程序结束为止。
在完成应用程序(在步骤S725中为“是”)之后,核2(30)请求电力管理单元10停止将电力供应到核2(30)自身(步骤S730)。响应于来自核2(30)的电力停止请求,电力管理单元10停止将电力供应到核2(30)(步骤S530)。通过该操作,非对称的多核的CPU 装置1再次移动到待机状态。
如上所述,在该处理从核1(20)移动到核2(30)之后,它不被从核2(30)转移到核1(20)。原因在于,因为存在用于启动核2(30)的能量和处理性能方面的开销(overhead),所以期望在处理被移动到核2(30)之后执行所有剩余的处理并且尽快移动到待机状态。从待机状态的开始点总是核1(20)。
利用上述的系统配置,通过由高能量效率低性能的核1(20)执行在间歇操作中不要求高处理能力的简单操作,在稳定的(stationary)操作时的能量消耗量可以被抑制。结果,可以在电池驱动的装置中实现长期的连续操作。另一方面,在临时需要计算性能(诸如数据分析处理或通信处理)的情况下,通过切换核1到高性能的核2(30)并且移交该处理,可以满足实时性能。利用该配置,在设计或安装系统时,变得没有必要预先确定执行处理的核。在系统操作时时间约束或能量约束改变的情况下,可以实现根据该改变动态地调度执行处理的核的系统。
实施例的效果
如上所述,根据该实施例,通过在其ISA没有兼容性的非对称的核之间切换应用处理,实现继续的执行。由于ISA和寄存器组的兼容性是不必要的,例如,能够实现其寄存器宽度为16比特的低功率导向的核和其寄存器宽度为32比特的高性能导向的核的组合。通过将低功率导向的核的寄存器宽度抑制到16比特,减少晶体管的数量以及核的面积。因此,可以更大地确保性能或电力效率的差别。此外,由于应用处理不被固定到核但可以透明地执行,因此关于处理性能和电力的预先设计是不必要的,并且可以根据执行时的外部因素的发生状态灵活地切换处理被分配于其的核。
要注意此时公开的实施例在全部方面中都是示例性的而不是限制性的。本发明的范围由权利要求的范围而不是上述的描述限定,并且因此落入权利要求的等同物的范围和意思内的所有改变意图被包括在其中。

信息处理装置和信息处理方法.pdf_第1页
第1页 / 共25页
信息处理装置和信息处理方法.pdf_第2页
第2页 / 共25页
信息处理装置和信息处理方法.pdf_第3页
第3页 / 共25页
点击查看更多>>
资源描述

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

1、10申请公布号CN104102474A43申请公布日20141015CN104102474A21申请号201410131614322申请日20140403201307745520130403JPG06F9/30200601G06F9/4820060171申请人瑞萨电子株式会社地址日本神奈川72发明人外山正胜林越正纪74专利代理机构中国国际贸易促进委员会专利商标事务所11038代理人欧阳帆54发明名称信息处理装置和信息处理方法57摘要本发明涉及信息处理装置和信息处理方法。应用处理被在指令集体系结构没有兼容性的非对称的处理器核之间切换,使得处理可以被继续地执行。在信息处理装置中,当在第一处理器核正。

2、在执行应用程序的同时产生用于切换执行主体的请求时,切换处理代码使得第一处理器核指定目前正在执行的基本块。切换处理代码使得第一处理器核执行第一执行代码直到在指定的基本块的结尾处的分支指令为止,并且使得第二处理器核从在紧接于指定的基本块要执行的基本块的开头的指令起执行第二执行代码。30优先权数据51INTCL权利要求书2页说明书11页附图11页19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书11页附图11页10申请公布号CN104102474ACN104102474A1/2页21一种信息处理装置,包括第一处理器核;第二处理器核;以及与第一处理器核和第二处理器核耦接的存储器,其中。

3、该存储器存储第一执行代码和第二执行代码,该第一执行代码和第二执行代码是通过分别编译在第一处理器核和第二处理器核中的每一个中执行的应用程序而获得的;表格,该表格示出存储器上的第一执行代码的基本块中的每一个的地址与存储器上的第二执行代码的基本块中的每一个的地址之间的对应关系;以及切换处理代码,当在其中第一处理器核执行应用程序的时段期间产生切换执行主体的请求时,该切换处理代码操作,以及其中该切换处理代码被配置为使得,当产生切换请求时,使第一处理器核基于该表格指定目前正在执行的基本块,使第一处理器核执行第一执行代码直到在所指定的基本块的结尾处的分支指令为止,以及使第二处理器核从在紧接于所指定的基本块要。

4、执行的基本块的开头处的指令起执行第二执行代码。2根据权利要求1所述的信息处理装置,其中第一处理器核具有第一寄存器组,其中第二处理器核具有第二寄存器组,其中该存储器包括为第一处理器核分配的第一堆栈区;以及为第二处理器核分配的第二堆栈区,其中在第一执行代码的基本块中的每一个的开头处分配给第一寄存器组的数据的内容匹配在第二执行代码的对应基本块的开头处分配给第二寄存器组的数据的内容,以及其中在第一执行代码的基本块中的每一个的开头处分配使得被保存在第一堆栈区中的数据的内容匹配在第二执行代码中的对应基本块的开头处分配使得被保存在第二堆栈区中的数据的内容。3根据权利要求2所述的信息处理装置,其中该存储器还包。

5、括缓冲区,以及其中该切换处理代码被配置为在完成所指定的基本块的执行之后通过第一处理器核将存储在第一寄存器组中的数据存储到缓冲区中,其中该切换处理代码被配置为在完成所指定的基本块的执行之后通过第二处理器核将存储在第一堆栈区中的数据转换为用于在第二处理器核中执行的数据并且将结果得到的数据存储到第二堆栈区中,以及其中该切换处理代码被配置为通过第二处理器核将存储在缓冲区中的数据转换为用于在第二处理器核中执行的数据并且将结果得到的数据存储到第二寄存器组中。4根据权利要求3所述的信息处理装置,还包括电力管理单元,该电力管理单元能够独立地为第一处理器核和第二处理器核中权利要求书CN104102474A2/2。

6、页3的每一个供应电源电压,其中当第一处理器核开始执行该应用程序时该电力管理单元将电源电压供应给第一处理器核但不将电源电压供应给第二处理器核,其中,在产生切换请求之后,该电力管理单元开始将电源电压供应给第二处理器核,以及其中,当供应给第二处理器核的电源电压达到操作所必需的水平时,该电力管理单元向第一处理器核通知准备完成。5根据权利要求4所述的信息处理装置,其中该切换处理代码被配置为使得,在从该电力管理单元向第一处理器核输出准备完成的通知并且存储在第一寄存器组中的数据被存储在缓冲区中之后,停止向第一处理器核供应电力的请求被输出到第一处理器核。6根据权利要求3所述的信息处理装置,其中该切换处理代码被。

7、配置为基于该表格中示出的地址的对应关系通过第二处理器核将存储在缓冲区中的第一处理器核的程序计数器的值转换为用于第二处理器核的程序计数器的值,以及其中该切换处理代码被配置为基于该表格中存储的地址的对应关系通过第二处理器核将存储在第一堆栈区中的地址的值转换为用于第二处理器核的地址的值。7根据权利要求1所述的信息处理装置,其中第一处理器核以比第二处理器核的频率低的频率操作。8根据权利要求1所述的信息处理装置,其中第一处理器核的指令集和第二处理器核的指令集不具有兼容性。9一种使用多核处理器的信息处理方法,该多核处理器包括第一处理器核、第二处理器核、以及与第一处理器核和第二处理器核耦接的存储器,该方法包。

8、括以下步骤通过分别编译在第一处理器核和第二处理器核中的每一个中执行的应用程序,产生第一执行代码和第二执行代码;产生表格,该表格示出存储器上的第一执行代码的基本块中的每一个的地址与存储器上的第二执行代码的基本块中的每一个的地址之间的对应关系;允许第一处理器核基于该表格指定目前正在执行的基本块;使第一处理器核执行第一执行代码直到在所指定的基本块的结尾处的分支指令为止;以及使第二处理器核从在紧接于所指定的基本块要执行的基本块的开头处的指令起执行第二执行代码。权利要求书CN104102474A1/11页4信息处理装置和信息处理方法0001相关申请的交叉引用0002将2013年4月3日提交的日本专利申请。

9、NO2013077455的公开内容(包括说明书、附图以及摘要)通过参考全部并入在本申请中。背景技术0003本发明涉及信息处理装置和信息处理方法,并且例如优选地被用在具有其体系结构(ARCHITECTURE)彼此不同的异种的(HETEROGENEOUS)(非对称的)多核的中央处理单元(CPU)中。0004要求电池驱动的装置(诸如传感器装置)在安装之后在没有更换电池的情况下长期操作。在这种装置中,通常,传感器的数据收集通过间歇操作被执行,并且使用存储的数据的计算处理或使用网络的数据传送在特定定时处被执行。因为CPU的计算能力在其中间歇地执行简单的数据收集处理的正常时间中是不必要的,所以CPU可以以。

10、尽可能低的操作频率操作以便不消耗电力。另一方面,在执行网络处理或大量数据的分析时,处理必须以高CPU能力在短时间中完成。0005为了这种要求,使用通常称为DVFS(动态电压和频率调整(SCALING)的根据需要的计算能力改变CPU核的电压和操作频率的技术。然而,在单个CPU核的体系结构中,难以获得满足低功率消耗和高性能两者的特性。0006ARM公司(ARM)企图通过将具有低功率导向特性的CPU核与高性能的CPU核结合并且在核之间无缝地切换软件的BIGLITTLE处理体系结构来解决该问题(参考PETERGREENHALGH的“BIGLITTLEPROCESSINGWITHARMCORTEXTMA。

11、15CORTEXA7”,ARM,WHITEPAPER,2011年9月(非专利文献1)。0007在日本未经审查的专利申请公开(PCT申请的翻译)NO2010538371(专利文献1)中描述了等效于ARM的BIGLITTLE体系结构的方法。该文献公开了在具有不同操作频率和操作电力水平的特性的两个非对称的核之间透明地(TRANSPARENTLY)切换来自OS(操作系统)的应用的方法。在该专利文献的配置中,两个非对称的核的指令集体系结构(ISA)必须具有兼容性。0008背景技术文献0009专利文献0010专利文献1日本未经审查的专利申请公开(PCT申请的翻译)NO20105383710011非专利文献。

12、0012非专利文献10013PETERGREENHALGH,“BIGLITTLEPROCESSINGWITHARMCORTEXTMA15CORTEXA7”,ARM,WHITEPAPER,2011年9月发明内容0014虽然日本未经审查的专利申请公开(PCT申请的翻译)NO2010538371(专利文说明书CN104102474A2/11页5献1)公开了在核之间切换应用处理并且继续地执行它的方法,但是其前提是ISA具有兼容性。也就是说,虽然允许指令流水线、超标量(SUPERSCALAR)等的微体系结构水平的差别,但是可执行指令的种类和通用寄存器组必须是共同的。因此,在不同特性的核之间的电力效率的差。

13、别或性能的差别被限制在若干倍的程度。类似地,同样在ARM的WHITEPAPER(非专利文献1)的情况下,描述了CORTEXA7和CORTEXA15之间的性能的差别最大为三倍,并且电力效率的差别最大为约38倍。0015本发明的一个主要目的是提供能够在其ISA没有兼容性的非对称的核之间切换应用处理的同时继续地执行该处理的信息处理装置和信息处理方法。0016作为一个实施例的信息处理装置包括第一处理器核、第二处理器核以及与第一和第二处理器核耦接的存储器。存储器存储第一执行代码、第二执行代码、表格以及切换处理代码。第一和第二执行代码是通过分别编译在第一和第二处理器核中的每一个中执行的应用程序获得的。该表。

14、格示出存储器上的第一执行代码的基本块中的每一个的地址与存储器上的第二执行代码的基本块中的每一个的地址之间的对应关系。当在其中第一处理器核执行应用程序的时段期间产生切换执行主体的请求时,该切换处理代码使得第一处理器核基于该表格指定目前正在执行的基本块。该切换处理代码使得第一处理器核执行第一执行代码直到在所指定的基本块的结尾处的分支指令(BRANCHINSTRUCTION),并且使得第二处理器核从在紧接于所指定的基本块要执行的基本块的开头处的指令起执行第二执行代码。0017根据该实施例,通过在其ISA没有兼容性的非对称的核之间切换应用处理,可以继续地执行该应用处理。附图说明0018图1是示出根据一。

15、个实施例的作为信息处理装置的非对称的多核的CPU装置的配置的框图。0019图2是示出存储在图1中的存储器中的软件的配置的图。0020图3是示出编译处理的过程的流程图。0021图4是示出用于每一个核的应用处理代码和中间表现代码的对应关系的图。0022图5是用于说明记录在图4的示例中的指令地址转换表中的地址信息的图。0023图6是示出样本代码的图。0024图7是示出与图6的样本代码对应的用于核1的应用处理代码的基本块的配置示例的图。0025图8A8C是示出在执行图6的样本代码上的处理时的堆栈的状态的图。0026图9是用于说明执行语境转移(EXECUTIONCONTEXTTRANSFER)处理的具体。

16、的处理内容的图。0027图10是示出图9中的基本块执行完成处理的步骤的流程图。0028图11是示出图9中的堆栈转换处理的步骤的流程图。0029图12是示出图9中的寄存器转换处理的步骤的流程图。0030图13是示出传感器系统的操作示例的流程图。0031图14是示出图13中的执行语境转移处理(步骤S615)的步骤的流程图。说明书CN104102474A3/11页6具体实施方式0032在下文中,将参考附图具体地描述实施例。相同的附图标记被指定给相同的或对应的部件并且不会重复它们的描述。0033非对称的多核的CPU装置的一般配置0034图1是示出根据一个实施例的作为信息处理装置的非对称的多核的CPU装。

17、置的配置的框图。0035参考图1,非对称的多核的CPU装置1包括低功率导向的核1(20)、高性能导向的核2(30)以及电力管理单元10。与核2(30)相比,核1(20)以更低的操作频率操作并且以更低的操作电压操作,使得功率消耗较低。0036安装在核1(20)中的指令集体系结构(ISA1)(21)和安装在核2(30)中的指令集体系结构(ISA2)(22)不必具有兼容性。此外,核1(20)中提供的寄存器组1(22)和核2(30)中提供的寄存器组2(32)不必具有兼容性。0037例如,低功率导向的核1(20)的寄存器宽度可以被设定为16比特,而高性能导向的核2(30)的寄存器宽度可以被设定为32比特。

18、。通过使得核1(20)的寄存器宽度小于核2(30)的寄存器宽度,可以减少核1(20)中的寄存器的数量以及电路面积。因此,可以增大核1(20)与核2(30)之间的性能差别或电力效率差别。0038电力管理单元10经由电源线11将电力(电源电压)供应给核1(20)并且经由电源线12将电力(电源电压)供应给核2(30)。给核的电力供应由电力管理单元10独立地控制。电力管理单元10可以经由中断信号线13将中断通知发出给核1(20)。0039非对称的多核的CPU装置1还包括存储器50、周边装置40、以及总线41。核1(20)、核2(30)、电力管理单元10、存储器50和周边装置40经由总线41彼此耦接。核。

19、1(20)和核2(30)经由总线41耦接到存储器50和周边装置40以便共享存储器50和周边装置40。0040存储器上的软件的配置0041图2是示出存储在图1中的存储器中的软件的配置的图。图2还示出通过编译器60将源代码61转换为用于核1(20)的执行代码和用于核2(30)的执行代码(在下文中,也称为指令代码或处理代码)的处理。0042参考图1和图2,其中描述应用处理的源代码61由编译器60转换为被翻译为核1(20)的指令代码的用于核1的应用处理代码51、被翻译为核2(30)的指令代码的用于核2的应用处理代码52、以及由处理代码51和52共同参照的数据53。还产生示出用于核1的应用处理代码51和。

20、用于核2的应用处理代码52的地址的对应关系的指令地址转换表54。软件5154在执行时被放置在存储器50上。0043另外,在存储器50上,确保在核1(20)中执行用于核1的应用处理代码51时使用的用于核1的堆栈区55以及在核2(30)中执行用于核2的应用处理代码52时使用的用于核2的堆栈区56。在存储器50上,还放置具有将核1(20)的执行状态转移到核2(30)以及继续执行所必需的工作(WORKING)的执行语境转移处理代码57以及用于临时存储作为核1(20)的执行状态的在寄存器组1(22)中的数据的寄存器组转换缓冲器58。0044编译处理00451、词法分析(LEXICALANALYSIS)说。

21、明书CN104102474A4/11页70046图3是示出编译处理的过程的流程图。参考图2和图3,在编译处理中,首先,执行将源代码61转换为作为文法的基本单位的一串记号(TOKEN)的词法分析处理(步骤S100)。00472、语法分析(SYNTAXANALYSIS)和中间表现翻译处理0048接下来,执行根据编程语言的文法规则分析记号串的语法分析处理(步骤S105),并且随后执行基于语法分析结果产生中间表现代码63的中间表现翻译处理62(步骤S110)。以这种方式,其中描述应用处理的源代码61在将代码转换为用于核的处理代码51和52时通过中间表现翻译处理62被临时地转换为作为不依赖于特定的ISA。

22、的指令代码的中间表现代码63。0049作为通过编译器60执行词法分析和语法分析的结果通过明确地具体实现(EMBODY)表示软件的逻辑结构的中间数据获得中间表现代码63。一般的编译器在内部保持与中间表现代码对应的中间数据,但是它不明确地输出具有中间表现代码形式的数据。中间表现代码例如具有不依赖于ISA的指令形式(诸如JAVA(注册商标)的字节码),并且是通用的指令代码方案,诸如装载、存储、算术运算和分支。将代码临时地翻译为中间表现代码、执行优化并且其后在编译器中将代码转换为目标指令代码的方法是在编译器库(COMPILERBASE)的LLVM(低水平虚拟机)等中使用的已知的技术。0050通常,程序。

23、可以通过使用分支指令(跳转指令)作为标记被分成一些基本块(BASICBLOCK)。基本块被限定为,(I)执行控制从构成基本块的句子的布置的开始进展到最后,(II)分支指令(跳转指令)仅仅被放置在基本块的结尾处,以及(III)处理可以从另一个基本块进入一个基本块的开始。使用基本块作为单位执行以下步骤。00513、代码优化处理/执行语境状态控制处理0052接下来,编译器60执行代码优化处理以及执行语境状态控制处理64(步骤S115)。代码优化处理是为了产生更高效率的代码的、对中间表现代码63执行的每一个核的体系结构所特有的处理。例如,执行将变量或暂时的计算途中结果分配到特定的通用寄存器的处理等。0。

24、053执行语境状态控制处理64被执行为对于代码优化处理添加限制。在实施例中,在执行应用程序时将处理从核1切换到核2时,执行直到在核1目前正执行的基本块的结尾处的分支指令为止的处理,并且在基本块的边界处将处理从核1移交到核2。在这时候,后续基本块的开头(HEAD)位置被用作检查点,并且核1的寄存器状态和堆栈状态(所谓的执行语境)被转换为用于核2的寄存器状态和堆栈状态。为了使得能够进行执行语境转换处理,以下限制被添加到代码优化处理。0054限制10055在基本块的边界处,保存在用于核1(20)的堆栈区55中的数据的内容和顺序以及保存在用于核2(30)的堆栈区56中的数据的内容和顺序相匹配。保存在堆。

25、栈区中的数据的单位(寄存器宽度)不必匹配。0056限制20057在基本块的边界处,保持在用于核1的寄存器组1(22)和用于核2(30)的寄存器组2(32)之中的核中具有共同使用目的的通用寄存器中的数据的内容相匹配。在基本块的内部处理中,通用寄存器可以被自由地用于代码优化。0058限制3说明书CN104102474A5/11页80059在将指令代码的地址信息(例如,程序计数器(PC)保存在堆栈区中的情况下,地址信息被保存为使得它可以与保存在堆栈中的其它数据区分。需要限制3以使得能够在将处理从核1移交到核2时容易执行根据指令地址转换表54重写地址信息的处理。0060对于限制1和2,例如,在基本块中。

26、使用的暂时的计算途中结果可以在被保持在具有足够数量的通用寄存器的处理器核中的寄存器中的同时被传给下一个基本块。另一方面,在具有有限数量的通用寄存器的处理器核中,暂时的数据被保存在堆栈中并且在下一个基本块中被取出,或者被暂时地丢弃,并且必须在下一个基本块中再次执行计算以便再产生数据。为了吸收由检查点(基本块的边界)处的处理器核的体系结构的差别所引起的处理的差别,在执行语境状态控制处理64中,执行用于使得寄存器和堆栈的状态(执行语境)匹配的额外的处理。例如,在数据被存储在核中的一个中的通用寄存器中并且被存储在另一个核中的堆栈中的情况下,插入将前者的数据临时地保存到堆栈中的处理。0061对于限制3,。

27、为了区分保存在堆栈区中的地址信息,执行记录附加信息的操作。例如,可以使用将指令代码的地址信息和特定的形式的数据(魔码(MAGICCODE)的组保存在堆栈区上的方法、产生表示地址信息的保存位置的指针信息的方法等。稍后将参考图68描述后者的方法。00624、指令代码翻译处理0063在下面步骤中,经受优化处理和执行语境状态控制处理64的中间表现代码63通过用于核1的指令代码翻译处理65被转换为用于核1的指令代码(用于核1的应用处理代码51)并且通过用于核2的指令代码翻译处理66被转换为用于核2的指令代码(用于核2的应用处理代码52)(步骤S120)。使用基本块作为单位执行指令代码翻译处理65和66。。

28、0064由于执行语境状态控制处理64被预先执行,因此指令代码翻译处理65和66根据共同的规则产生指令代码。具体地,在用于核1的应用处理代码51的基本块中的每一个的开头处分配给寄存器组1(22)的数据的内容匹配在用于核2的应用处理代码52中的对应基本块的开头处分配给寄存器组2(32)的数据的内容。此外,在用于核1的应用处理代码51的基本块中的每一个的开头处分配使得被保存在用于核1的堆栈区(55)中的数据的内容匹配在用于核2的应用处理代码52中的对应基本块的开头处分配使得被保存在用于核2的堆栈区(56)中的数据的内容。00655、链接处理/指令地址转换表的产生0066接下来,通过链接处理67,用于。

29、核1的指令代码、用于核2的指令代码和数据被放置在存储器50的地址空间中(步骤S125)。在这时候,编译器60还产生指令地址转换表54,在该指令地址转换表54中记录地址分派(ALLOCATION)之后的用于核1的指令代码(用于核1的应用处理代码51)和地址分派之后的用于核2的指令代码(用于核2的应用处理代码52)之间的地址对应关系(步骤S130)。0067指令地址转换表的具体的示例0068在下文中,将描述图2的指令地址转换表54的具体的示例。0069图4是示出用于每一个核的应用处理代码和中间表现代码的对应关系的图。参考图2和图4,使用直到分支指令为止的连续指令串作为单位将中间表现代码63分成基本。

30、块。例如,在图4的示例中,中间表现代码63被分成基本块A、B和C。0070编译器60以基本块单位为基础在指令代码翻译处理65和66中将中间表现代码说明书CN104102474A6/11页963翻译为用于核的指令代码。例如,在图4的示例中,与中间表现代码63的基本块A对应的处理内容在中间表现代码63被翻译为用于核1的指令代码的情况下是经翻译的基本块1A,并且在中间表现代码63被翻译为用于核2的指令代码的情况下是经翻译的基本块2A。类似地,中间表现代码的基本块B对应于经翻译的基本块1B和经翻译的基本块2B,并且中间表现代码的基本块C对应于经翻译的基本块1C和经翻译的基本块2C。0071经翻译的基本。

31、块1A1C和2A2C通过链接处理67被分配给地址空间。在这时候,对应的经翻译的基本块的开头地址的组被记录在指令地址转换表54中。0072图5是用于说明记录在图4的示例中的指令地址转换表中的地址信息的图。参考图4和图5,经翻译的用于核1的基本块1A的开头地址0X1000和对应的经翻译的用于核2的基本块2A的开头地址0X8000的组被记录在指令地址转换表54中。对于基本块B和C执行类似的操作。0073每个应用处理的指令代码被分配给每个核的区域。数据被分配给核共有的区域并且可以通过相同的地址由每个核参照。0074执行语境状态控制处理的限制3的具体的示例0075在下文中,作为执行语境状态控制处理64的。

32、限制3的具体的示例,将描述分离地产生表示地址信息的保存位置的指针信息的方法。0076图6是示出样本代码的图。在图6的样本代码中,示出顺序执行简单且没有分支的处理1、处理3和处理2的示例。0077图7是示出与图6的样本代码对应的用于核1的应用处理代码的基本块的配置示例的图。0078参考图6和图7,使用分支指令作为边界划分基本块,使得函数FUNC_MAIN由于调用函数FUNC_A而被分成不同基本块。前半部被称为基本块1并且后半部被称为基本块2。函数FUNC_A变为单个基本块3。基本块1的最后的指令是跳转到基本块3的分支指令。基本块3的最后的指令是返回到基本块2的开头的分支指令。处理的执行顺序是处理。

33、1(基本块1)、处理3(基本块3)和处理2(基本块2)。在示例中,寄存器宽度是16比特,并且经由堆栈传递用于函数调用的所有引数(ARGUMENT)参数。0079图8A8C是示出在执行图6的样本代码上的处理时的堆栈的状态的图。0080图8A示出基本块1的开头的堆栈的状态。堆栈指针(SP)指示堆栈区的开头。0081参考图8B,在调用函数FUNC_A的情况下,引数参数(0X0004,0X0008)被堆栈在堆栈区中,并且其后,作为返回目的地的指令代码的地址(基本块2的开头地址0X103C)被堆栈。这是在基本块1的结尾处执行的处理作为用于调用函数FUNC_A的预处理。0082除了该处理之外,其中作为返回。

34、目的地的指令代码的地址被存储的SP的位置信息(地址0XBFFA)被存储在与堆栈区不同的区域中提供的保存地址信息区域中。保存地址信息区域也是像堆栈区一样扩展的区域。0083因此,在紧接着到函数FUNC_A的分支之后的基本块3的开头处,获得图8B中示出的堆栈状态。地址0XBFFA中的数据是保存在堆栈区中的数据中的指令代码的地址,并且可以通过扫描保存地址信息区域而被检测。0084参考图8C,在基本块3的结尾处,从堆栈获得返回地址(地址0XBFFA)并且程序返回到该地址。在这时候,存储在保存地址信息区域中的数据也被丢弃。结果,在基本块2的说明书CN104102474A7/11页10开头处,获得图8C中。

35、示出的堆栈状态。0085对保存地址信息区域的操作通过执行语境状态控制处理64(图3中的步骤S115)被插入并且通过用于核1的指令代码翻译处理65(图3中的步骤S120)被自动地增加到基本块中。可以通过硬件实现将返回地址保存到堆栈并且同时还将SP处的数据保存到保存地址信息区域的处理。0086执行语境转移处理0087接下来,将描述作为将核1(20)的执行状态转移到核2(30)并且继续地执行状态的处理的图2中的执行语境转移处理57。在用于核1的应用的执行期间时间约束改变的情况下,即,在必须通过高性能的核2(30)短时间内给出结果的情况(需要高计算能力的情况)下,开始执行语境转移处理57。0088例如。

36、,将描述作为图1中的周边装置40提供的图像传感器。在没有图像被供应给图像传感器的正常时间中,不需要CPU的高计算能力。另一方面,在图像被供应给图像传感器并且图像传感器对它作出反应的情况下,CPU必须执行图像数据分析处理并且在预定时间内输出结果,并且要求高计算能力。在该情况下,响应于来自图像传感器的中断通知,在核1(20)中执行中断处理程序(INTERRUPTHANDLER)处理。响应于来自中断处理程序处理的请求,执行语境转移处理57在核1(20)和核2(30)中被执行。0089作为另一个示例,通常地,足以慢慢地执行仅仅将输入数据存储到缓冲器中的简单处理。在预定量的输入数据被存储在缓冲器中时的时。

37、间点处,执行立即计算数据并且输出结果的处理。在该情况下,通过来自管理核1(20)中执行的输入数据的缓冲的处理程序的请求,执行语境转移处理57在核1(20)和核2(30)中被执行。0090作为又一个示例,OS(操作系统)根据启动的任务的负载信息确定调度是否是可能的,并且执行语境转移处理57通过来自OS的请求被执行。0091图9是用于说明执行语境转移处理的具体的处理内容的图。图9示出通过核1(20)中执行的处理代码确定时间约束的改变并且产生用于将该处理从核1(20)切换到核2(30)的请求的示例。00921、核1侧的处理0093如图9中所示出的,在执行语境转移处理57中,功能被分到核1(20)和核。

38、2(30)。作为核1侧的处理70,依次执行核2启动请求处理71、基本块执行完成处理72、寄存器存储处理73和核1停止处理74。009411、核2启动请求处理0095参考图1和图9,首先,作为核2启动请求处理71,为了启动处于电力供应被停止的状态的核2(30),从核1(20)向电力管理单元10发送用于供应电力到核2(30)的请求。核1(20)执行用于核1的应用处理的其余部分。009612、基本块执行完成处理0097当核2(30)启动并且进入可执行电力状态时,电力管理单元10通过中断信号向核1(20)通知核2(30)进入可执行状态的事实。接收到中断通知的核1(20)执行作为中断处理的基本块执行完成。

39、处理72。0098图10是示出图9中的基本块执行完成处理的步骤的流程图。参考图9和10,首先,核1(20)获得正在执行的应用处理中的当前程序计数器(PC)的值(步骤S200)。说明书CN104102474A108/11页110099接下来,核1(20)扫描指令地址转换表54并且指定目前正在执行的基本块(步骤S205)。可以通过提供散列表(HASHTABLE)减少搜索指令地址转换表54的时间。0100随后,核1(20)执行处理直到在指定的基本块的结尾处的分支指令为止,由此完成目前正在执行的基本块的处理并且刚好在接下来要执行的基本块的开头处的指令之前停止处理(步骤S210)。在作为核1的功能而存在。

40、调试功能(诸如硬件断点(BREAKPOINT)或步进指令(STEPINSTRUCTION)执行)的情况下,通过使用它,处理被执行到刚好在接下来要执行的基本块的开头处的指令之前,并且可以在该时间点处停止处理。还可以通过考虑分支指令的分支目的地地址设定软件断点来实现该功能。0101当将电力供应给核2(30)的请求被发送给电力管理单元10时,在没有等待来自电力管理单元10的中断通知的情况下,可以从由当前应用处理的PC(程序计数器)指示的指令到在正在执行的基本块的结尾处的分支指令(直到刚好在接下来要执行的基本块的开头处的指令之前为止)地执行处理。在该情况下,在执行处理直到在目前正在执行的基本块的结尾处。

41、的分支指令为止之后,核1(20)等待核2(30)进入可执行状态的事实的中断通知。010213、寄存器存储处理0103再次参考图9,接下来,核1(20)执行寄存器存储处理73。具体地,核1(20)将刚好在由应用处理代码执行在下一个基本块的开头处的指令之前的寄存器中的数据存储到寄存器组转换缓冲器58中。010414、核1停止处理0105作为核1停止处理74,核1(20)请求开始核2(30)的执行(复位状态取消)并且请求电力管理单元10停止将电力供应给核1(20)自身。01062、核2侧的处理0107当取消核2(30)的复位状态时,为执行所必需的最低限的初始化处理被执行并且其后,启动核2侧的执行语境。

42、转移处理57。作为核2侧的处理80,依次执行堆栈转换处理81、寄存器转换处理82、和语境分派处理83。010821、堆栈转换处理0109图11是示出图9中的堆栈转换处理的步骤的流程图。0110参考图9和图11,在堆栈转换处理81中,核2(30)读取存储器50上的用于核1的堆栈区55中的数据(步骤S300),扩展数据宽度(步骤S305),并且将数据重新放置在用于核2的堆栈区56中(步骤S315)。在这时候,在从用于核1的堆栈区55读取的数据是诸如函数调用的返回值之类的指令代码的地址的情况下,核2(30)扫描指令地址转换表54,利用核2(30)的指令代码的对应地址代替该地址(步骤S310),并且将。

43、结果得到的数据放置在用于核2的堆栈区56中(步骤S315)。0111对存储在用于核1的堆栈区55中的所有数据重复上述的步骤(直到在步骤S320中获得“是”)。在图11中,执行步骤S305和S310的顺序可以是相反的。011222、寄存器转换处理0113图12是示出图9中的寄存器转换处理的步骤的流程图。参考图9和12,在寄存器转换处理82中,核2(30)将存储在寄存器组转换缓冲器58中的核1(20)中的通用寄存器中的数据转换为核2(30)中的通用寄存器的形式。说明书CN104102474A119/11页120114具体地,根据执行语境状态控制处理64中给出的约束条件,核2(30)转移寄存器中的数。

44、据,使得用于保持数据的通用寄存器的对应关系匹配(步骤S400)。此外,核2(30)将PC中的数据转换为通过扫描指令地址转换表54获得的核2(30)的指令代码地址(步骤S405)。核2(30)将SP中的数据替换为通过堆栈转换处理81产生并且堆栈在用于核2的堆栈区56的顶部的数据的地址(步骤S410)。作为执行步骤S400、S405和S410的顺序,可以首先执行任何步骤。011523、语境分派处理0116在语境分派处理83中,核2(30)将通过寄存器转换处理82在寄存器组转换缓冲器58中产生的通用寄存器中的数据设定到核2(30)中的寄存器组32。因此,可以在核2(30)中重新开始核1(20)中中断。

45、的处理的继续。0117根据用于核2的寄存器组32中包括的程序计数器(PC)的值,核2(30)从在紧接于目前正在执行的基本块要执行的基本块的开头处的指令起开始用于核2的应用处理代码52的执行。0118传感器系统的应用示例0119作为非对称的多核的CPU装置1被应用于其的系统的示例,存在以电池长期继续地操作的传感器系统。在下文中,将描述传感器系统的操作。0120图13是示出传感器系统的操作示例的流程图。参考图1和13,在传感器系统中,CPU(核1(20)和核2(30)两者)通过间歇操作在正常时间中处于待机状态并且停止。周期性地或通过来自外部的请求(在步骤S500中为“是”),电力管理单元10开始将。

46、电力供应到核1(20)。从待机状态的开始点总是核1(20)。0121当电力被从电力管理单元10供应时,核1(20)执行初始化处理(步骤S600)并且其后开始应用程序的执行(步骤S605)。当CPU的处理负载不增大时(在步骤S610中为“否”),核1(20)执行处理直到应用程序结束为止(直到在步骤S620中获得“是”为止)。其后,核1(20)请求电力管理单元10停止将电力供应到核1(20),并且电力管理单元10停止将电力供应到核1(20),由此返回到待机状态。0122另一方面,在应用程序的执行期间CPU的处理负载增大的情况下(在步骤S610中为“是”),核1(20)的处理移动到参考图9描述的执行。

47、语境转移处理57(步骤S615)。作为CPU的处理负载增大的情况,例如,存在预定量的感测的输入数据被存储在缓冲器中、通过使用存储的数据执行计算、并且经由通信线输出计算结果的情况。0123图14是示出图13中的该执行语境转移处理(步骤S615)的步骤的流程图。0124参考图1、9和14,在执行语境转移处理中,核1(20)请求电力管理单元10启动核2(30)(图9中的71和步骤S630)。一收到来自核1(20)的该请求,电力管理单元10就开始将电力供应到核2(30)(步骤S515)。当供应给核2(30)的电源电压达到核2(30)可以操作的电压水平时,电力管理单元10通过中断信号向核1(20)通知核。

48、2(30)进入可执行状态的事实(步骤S520)。0125一收到来自电力管理单元10的中断通知,如参考图10所描述的,核1(20)执行完成目前正在执行的基本块的执行并且将该处理前进到刚好在下一个执行的基本块的开头之前的基本块执行完成处理72(步骤S635)。此外,核1(20)执行将寄存器组1(22)中的数据存储到寄存器组转换缓冲器58中的寄存器存储处理73(步骤S640)。说明书CN104102474A1210/11页130126其后,如参考图9所描述的,核1(20)执行核1停止处理74(步骤S645)。具体地,核1(20)请求取消核2(30)的复位状态(步骤S650)并且请求电力管理单元10停。

49、止将电力供应到核1(20)自身(步骤S655)。响应于来自核1(20)的电力停止请求(步骤S655),电力管理单元10停止将电力供应到核1(20)(步骤S525)。0127当复位状态被取消时,核2(30)执行初始化处理(步骤S700)。其后,如参考图11所描述的,核2(30)执行读取存储器50上的用于核1的堆栈区55中的数据、将该数据转换为用于该核自身的数据、并且将结果得到的数据放置在用于核2的堆栈区56中的堆栈转换处理81(步骤S705)。0128随后,如参考图12所描述的,核2(30)执行将存储在寄存器组转换缓冲器58中的核1(20)中的通用寄存器中的数据转换为核2(30)中的通用寄存器的格式的寄存器转换处理82(步骤S710)。此外,核2(30)执行将通过寄存器转换处理82在寄存器组转换缓冲器58中产生的通用寄存器中的数据设定到核2(30)中的寄存器组32中的语境分派处理83(步骤S715)。0129其后,核2(30)从紧接于其执行在核1(20)中结束的基本块要执行的基本块起重新开始应用程序的执行(步骤S720)。核2(30)继续该处理直到应用程序结束为止。0130在完成应用程序(在步骤S725中为“是”)之后,核2(30)请求电力管理单元10停止将电力供应到核2(30)自身(步骤S730)。响应于来自核2(30)的电力停止请求,电力管理单元10停止将电力供应到核2(。

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

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


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