CN101246433A - 产生优化程序的装置和方法、程序执行装置及记录介质 - Google Patents

产生优化程序的装置和方法、程序执行装置及记录介质 Download PDF

Info

Publication number
CN101246433A
CN101246433A CNA2007103022680A CN200710302268A CN101246433A CN 101246433 A CN101246433 A CN 101246433A CN A2007103022680 A CNA2007103022680 A CN A2007103022680A CN 200710302268 A CN200710302268 A CN 200710302268A CN 101246433 A CN101246433 A CN 101246433A
Authority
CN
China
Prior art keywords
execution
program
parallel
path
computing machine
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CNA2007103022680A
Other languages
English (en)
Inventor
畑野文博
田中旭
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Publication of CN101246433A publication Critical patent/CN101246433A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Devices For Executing Special Programs (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)

Abstract

一种包括在执行程序(130)中的平行执行控制部件(131),其执行对基于存储在存储器(300)中的执行历史信息(301)和总执行次数信息(302)选择对应执行次数与总执行次数的比值大于路径选择阀值的特定路径代码的控制,以便基于目标硬件中可指派处理器元件的数量将处理器元件指派给补偿路径代码(132)和某些或全部所选特定路径代码并且彼此平行地执行这些路径代码,并且,每当路径的实际执行次数达到预定值时,其执行对将要与补偿路径代码平行执行的特定路径代码的检查。

Description

产生优化程序的装置和方法、程序执行装置及记录介质
技术领域
本发明涉及一种产生由具有多个处理器元件的处理器(计算机)执行的程序的技术,尤其涉及产生优化程序。
技术背景
在用于产生由可以彼此平行地执行两个以上指令的计算机执行的执行程序的技术中,特别用于在条件分支指令之后的预定片断中平行地布置指令,例如已知在日本专利申请2004-341236号中公开的技术。
根据日本专利申请2004-341236号,从包括条件分支指令的源程序获得在条件分支指令之后的预定片断中包括的每个执行路径(此后仅称为路径)信息。还通过使用典型数据执行执行程序获得每个路径的执行频率信息,其中通过将源程序转换为执行格式来产生执行程序。此后,该方法称为仿形。
根据该技术,基于获得的执行频率信息作为整体地选择具有高执行频率值的一个或多个路径。随后,优化包含在每个所选路径中的指令组。并且产生将不同处理器元件指派给优化指令组的代码序列以及源程序中所含全部指令的代码序列的执行程序,并且执行所产生的执行程序。以该结构,由于已经优化了所选路径的指令组,减少了具有高执行频率的所选路径的执行时间,并且由此作为整体增加了包括条件分支指令的程序的处理速度。
然而,一般来说,在执行程序的整个周期内每个路径的执行频率不是恒定的。例如,整个执行周期的开始、中间和结束周期的执行频率可能与由仿形或相似过程获得的整个执行周期的执行频率是不同的。
在这种情况中,当根据为程序的整个执行周期设定的确定执行频率信息将处理器元件指派给具有高执行频率的路径时,在执行周期内,不能有效使用具有与该确定执行频率不同的执行频率的处理器元件。
发明内容
因此,本发明的目标是提供用于产生包括分支指令的程序的程序产生装置,并且即使在该程序的整个执行周期内每个路径的执行频率不是恒定的,也能够有效使用处理器元件。
由产生如图13所示的执行程序的本发明的程序产生装置实现上述目标。更加明确地,由用于基于源程序产生由用于由包括多个处理器元件的计算机1300执行的多个部分构成的执行程序1310的程序产生装置实现上述目标,该程序产生装置包括:能够获得源程序的源程序获得部件;能够基于由源程序获得部件获得的源程序以执行格式产生用于将多个处理器元件一对一地指派给多个程序部分并且使计算机1300彼此平行地执行多个程序部分的平行执行程序部分1350的平行执行程序部分产生部件;能够产生用于使计算机1300获得多个程序部分中的每一个的执行历史并且使计算机1300保持所获执行历史的执行历史获得部分1320的执行历史获得部分产生部件;能够产生用于使计算机1300根据所获执行历史判断是否彼此平行地执行多个程序部分的平行执行判断部分1330的平行执行判断部分产生部件;以及能够产生用于使计算机1300取决于由平行执行判断部分1330做出的判断结果执行对确定是否将多个处理器元件指派给多个程序部分的控制的处理器元件指派控制部分1340的处理器元件指派控制部分产生部件。
在上述程序产生装置中,平行执行程序部分产生部件可能产生还包括下列内容的平行执行程序部分:包括分支指令和由该分支指令导致的多个执行路径的第一程序部分;和由计算机1300与第一程序部分平行地重复执行的第二程序部分,并且其包括具有与不包括该分支指令的多个执行路径中确定执行路径的一部分的处理内容相同的处理内容的部分,第二程序部分的该块具有小于确定执行路径的该部分的计算机1300执行时间,使计算机判断是否满足执行确定执行路径的条件的部分,以及当判断满足关于重复执行部件的条件时使计算机1300控制与第一程序部分一起处理下一个重复执行部件的部分,其中执行历史获得部分产生部件产生至少包括在第一程序部分和第二程序部分中的一个的执行历史获得部分1320。
以上述结构,其中当执行执行历史获得部分时其使计算机获得程序部分的执行历史并且使计算机保持所获执行历史,并且当执行平行执行判断部分时其使计算机根据所获执行历史判断是否彼此平行地执行第一和第二程序部分,当其执行时,处理器元件指派控制部分可以基于当执行程序时可能改变的执行历史将处理器元件指派给多个程序部分,使处理器元件能够有效地使用。
在上述程序产生装置中,执行历史获得部分产生部件可能产生使计算机计算确定执行路径的执行次数并且作为执行历史保持表示确定执行路径执行次数的信息的执行历史获得部分,而且平行执行判断部分产生部件产生当由执行历史表示的确定执行路径的执行次数小于预定阀值时使计算机判断不彼此平行地执行第二程序部分和第一程序部分的平行执行判断部分。
以上述结构,其中当执行平行执行判断部分时,其使计算机当确定执行路径的执行次数小于预定阀值时判断不彼此平行地执行第二程序部分和第一程序部分,能够防止将处理器元件指派给执行次数小于该阀值的具有低执行频率的程序部分,由此能够使处理器元件有效地使用。
在上述程序产生装置中,平行执行程序部分产生部件可能产生还包括下列内容的平行执行程序部分:由计算机与第一程序部分平行地重复执行的第三程序部分,其包括具有与在不包括分支指令的多个执行路径中作为确定执行路径的第一执行路径之外的第二执行路径的一部分的处理内容相同的处理内容的块,第三程序部分的该块具有小于第二执行路径的该部分的计算机执行时间,使计算机判断是否满足执行第二执行路径的条件的块,当判断满足重复执行部件的条件时使计算机控制与第一程序部分一起处理下一个重复执行部件的块,其中平行执行判断部分产生部件产生当计算机判断不彼此平行地执行第二程序部分和第一程序部分时使计算机根据所获执行历史重复判断是否彼此平行地执行第三程序部分和第一程序部分的平行执行判断部分,并且处理器元件指派控制部分产生使计算机将第一处理器元件指派给第一程序部分并且使计算机执行确定是否将第二处理器元件指派给第三程序部分的控制且彼此平行地执行第一程序部分和第三程序部分的处理器元件指派控制部分,取决于计算机通过平行执行判断部分做出的关于是否彼此平行地执行第一程序部分和第三程序部分的判断结果。
以上述结构,当执行平行执行判断部分时,其使计算机判断不彼此平行地执行第一程序部分和第三程序部分,并且当执行平行执行判断部分时,其使计算机根据所获执行历史判断是否彼此平行地执行第一程序部分和第三程序部分,第三程序部分包括具有多个执行路径中除确定执行路径之外的第二执行路径的处理内容的块。以上述结构,能够增加将处理器元件指派给具有高执行频率的程序部分的可能性。
在上述程序产生装置中,执行历史获得部分产生部件可能产生使计算机计算确定执行路径的执行次数并且使计算机作为执行历史保持表示确定执行路径的执行次数的信息的执行历史获得部分,并且平行执行判断部分产生部件产生当处理器元件指派控制部分使计算机执行确定将第二处理器元件指派给第二程序部分的控制并且彼此平行地执行第二程序部分和第一程序部分时且当由执行历史表示的确定执行路径的执行次数小于预定阀值时使计算机判断不彼此平行地执行第二程序部分和第一程序部分的平行执行判断部分,而且处理器元件指派控制部分产生部件产生使计算机执行停止彼此平行地执行第二程序部分和第一程序部分的控制的处理器元件指派控制部分。
以上述结构,其中当执行处理器元件指派控制部分时,其使计算机当该确定执行路径的执行次数小于预定阀值时执行停止彼此平行地执行第二程序部分和第一程序部分的控制,能够限制由执行具有低执行频率的程序引起的能量消耗。
在上述程序产生装置中,执行历史获得部分产生部件可能产生使计算机计算确定执行路径的执行次数并且使计算机作为执行历史保持表示确定执行路径执行次数的信息的执行历史获得部分,并且平行执行判断部分产生部件产生当处理器元件指派控制部分使计算机执行确定将第二处理器元件指派给第二程序部分的控制并且使计算机彼此平行地执行第二程序部分和第一程序部分时且当由执行历史表示的确定执行路径的执行次数小于预定阀值时使计算机判断不彼此平行地执行第二程序部分和第一程序部分的平行执行判断部分,并且处理器元件指派控制部分产生部件产生使计算机执行取消将第二处理器元件指派给第二程序部分的控制的处理器元件指派控制部分。
以上述结构,其中当执行处理器元件指派控制部分时,其使计算机当确定执行路径的执行次数小于预定阀值时取消将第二处理器元件指派给第二程序部分,能够将已经指派给具有低执行频率的程序的处理器元件指派给另一个处理,由此使处理器元件能够有效地使用。
在上述程序产生装置中,平行执行程序部分产生部件可能产生还包括下面内容的平行执行程序部分:由计算机与第一程序部分平行地重复执行的第三程序部分,其包括具有与不包括分支指令的多个执行路径中除确定执行路径之外的第二执行路径的一部分的处理内容相同的处理内容的块,第三程序部分的该块具有小于第二执行路径的该部分的执行时间,使计算机判断是否满足执行第二执行路径的条件的块,使计算机当其判断满足重复执行部件的条件时控制与第一程序部分一起处理下一个重复执行部件的块;并且执行历史获得部分产生部件产生包括在第三程序部分中并且使计算机获得并保持第二执行路径的执行历史的另一个执行历史获得部分,其中平行执行判断部分产生部件产生当计算机判断不彼此平行地执行第二程序部分和第一程序部分时使计算机根据由包括在第三程序部分中的另一个执行历史获得部分保持的执行历史重复判断是否彼此平行地执行第三程序部分和第一程序部分的平行执行判断部分,并且处理器元件指派控制部分产生部件产生使计算机将第一处理器元件指派给第一程序部分并使计算机执行确定是否将第二处理器元件指派给第三程序部分且彼此平行地执行第一程序部分和第三程序部分的控制的处理器元件指派控制部分,取决于由计算机通过平行执行判断部分做出的关于是否彼此平行地执行第三程序部分和第一程序部分的判断结果。
以上述结构,当由计算机取消将第二处理器元件指派给第二程序部分时,并且当执行平行执行判断部分时,其使计算机根据执行历史判断是否彼此平行地执行第三程序部分和第一程序部分,第三程序部分包括具有与多个执行路径中除确定执行路径之外的第二执行路径的处理内容相同的处理内容的块。以上述结构,能够增加将处理器元件指派给具有高执行频率的程序部分的可能性。
上述程序产生装置还可能包括产生用于使计算机获得表示在计算机的多个处理器元件中可指派的可指派处理器元件数量的信息的指派可用数量获得部分的指派可用数量获得部分产生部件,其中处理器元件指派控制部分产生部件产生还包括使计算机计算已经指派的指派处理器元件数量并且使计算机判断是否小于可指派处理器元件数量的指派可用性判断部分的处理器元件指派控制部分,并且处理器元件指派控制部分产生部件产生使计算机执行将第二处理器元件指派给第二程序部分的控制且当由平行执行判断部分的判断使计算机判断彼此平行地执行第二程序部分和第一程序部分时且指派处理器元件数量小于可指派处理器元件数量时使计算机彼此平行地执行第一程序部分和第二程序部分的处理器元件指派控制部分。
以上述结构,其中当执行处理器元件指派控制部分时,其使计算机当指派处理器元件数量小于可指派处理器元件数量时将第二处理器元件指派给第二程序部分。以上述结构,能够取决于可指派处理器元件数量执行平行执行。
上述程序产生装置还可能包括能够产生用于每当平行执行判断部分使计算机执行判断时初始化执行历史的执行历史初始化部分的执行历史初始化部分产生部件。
以上述结构,当执行执行历史初始化部分时,其使计算机每当平行执行判断部分判断是否彼此平行地执行第一和第二程序部分时初始化执行历史,并且当执行平行执行判断部分时,其使计算机基于在先前判断之后获得的执行历史执行判断。以上述结构,能够通过当执行程序时考虑执行历史指派处理器元件,由此使处理器元件能够有效地使用。
在上述程序产生装置中,平行执行程序部分产生部件可能产生还包括下面内容的平行执行程序部分:由计算机与第一程序部分平行地重复执行的第三程序部分,其包括:具有与作为多个执行路径中第一执行路径是确定执行路径且不包括分支指令的第一执行路径的一部分的第一非分支路径的处理内容相同的处理内容的第一块,第三程序部分的该第一块具有小于第一非分支部分的计算机执行时间,使计算机判断是否满足执行第一执行路径的条件的块,具有与作为多个执行路径中第一执行路径是除第一执行路径之外的另一个确定执行路径且不包括分支指令的第二执行路径的一部分的第二非分支路径的处理内容相同的处理内容的第二块,第三程序部分的该第二块具有小于第二非分支部分的计算机执行时间,使计算机当其判断满足重复执行部件的执行第一执行路径的条件时控制与第一程序部分一起处理下一个重复执行部件并且使计算机当其判断不满足条件时控制判断是否满足执行第二执行路径的条件的块,使计算机当其判断满足重复执行部件的执行第二执行路径的条件时控制与第一程序部分一起处理下一个重复执行部件的块,其中平行执行判断部分产生部件产生使计算机根据所获执行历史重复判断是否彼此平行地执行第三程序部分和第一程序部分的平行执行判断部分,并且处理器元件指派控制部分产生部件产生使计算机将第一处理器元件指派给第一程序部分且使计算机执行确定是否将第二处理器元件指派给第三程序部分并且彼此平行地执行第一程序部分和第三程序部分的控制的处理器元件指派控制部分,取决于由计算机通过平行执行判断部分做出的关于是否彼此平行地执行第三程序部分和第一程序部分的判断结果。
以上述结构,当执行处理器元件指派控制部分时,其使计算机采用处理器元件指派控制部分执行将第二处理器元件指派给第三程序部分的控制并且彼此平行地执行第一程序部分和第三程序部分,并且当其判断不满足执行第一执行路径的条件时相同处理器元件作为第一执行路径的处理的延续执行第二执行路径的处理。以上述结构,能够有效使用处理器元件。
在上述程序产生装置中,平行执行程序部分产生部件可能产生当由平行执行判断部分的判断使计算机判断不彼此平行地执行第二程序部分和第一程序部分时将第三程序部分中包括的第二执行路径设定为第二程序部分中的确定执行路径的部分。
以上述结构,当执行平行执行判断部分时,其使计算机判断不彼此平行地执行第二程序部分和第一程序部分,并且随后如果不满足执行第一执行路径的条件,相同处理器元件作为第一执行路径的处理的延续执行第二程序部分的确定执行路径的处理。以上述结构,能够有效使用处理器元件。
在上述程序产生装置中,执行历史获得部分产生部件可能产生包括在第三程序部分中的使计算机计算第一执行路径的执行次数且使计算机计算第二执行路径的执行次数并且使计算机作为执行历史保持第一和第二执行路径的执行次数执行历史获得部分,并且平行执行程序部分产生部件产生在其中第一执行路径的执行次数大于第二执行路径的执行次数的第三程序部分。
以上述结构,当试图执行具有大的执行次数的第一执行路径但不满足第一执行路径的条件时,执行其执行次数小于第一执行路径的执行次数的第二执行路径。以上述结构,能够有效使用处理器元件,并且增加实现高速处理的可能性。
附图说明
从参考描述本发明特定实施例的附图给出的下述描述,本发明的这些及其它目标、优点和特征将是显而易见的。
在附图中:
图1示出产生本发明的程序的程序产生装置100的结构;
图2是示出源程序110的一部分中流通的控制流程图;
图3示出实施例1的执行程序130的结构;
图4示出补偿路径代码132和特定路径代码的结构;
图5是示出在其中平行执行控制部件131选择路径的程序的流程图;
图6是示出在其中平行执行控制部件131指派处理器元件的程序的流程图;
图7是示出在其中历史更新代码407更新执行历史信息301和总执行次数信息302的程序的流程图;
图8是示出在其中历史更新代码420更新执行历史信息301和总执行次数信息302的程序的流程图;
图9是示出在其中平行执行控制部件131检查将要平行执行的特定路径代码的程序的流程图;
图10示出实施例2的执行程序1000的结构;
图11示出补偿路径代码132和特定路径代码的结构;
图12是示出在其中平行执行控制部件1001检查将要平行执行的特定路径代码的程序的流程图;
图13示出本发明的程序结构和程序执行装置之间的关系。
图标说明:
100程序产生装置
101分析部件
102优化部件
103代码转换部件
110源程序
120执行频率信息
130执行程序
131、1001平行执行控制部件132补偿路径代码133、1003第一路径代码
134、1004第二路径代码
135、1005第三路径代码
136、1006第n路径代码
200、201、202、203、204、205、206、207、208基块
300存储器
301执行历史信息
302总执行次数信息
303分支指令识别信息
311第一PE
312第二PE
313第三PE
401第一楔形代码
402第二楔形代码
403第三楔形代码
404第四楔形代码
405第五楔形代码
406第六楔形代码
407、420历史更新代码
408、410、412处理内容代码
409路径条件判断代码
430调配代码
440停止代码
1002合并路径信息
1101限制路径执行判断代码
1102限制路径执行代码
具体实施方式
下面通过优先实施例参考附图描述本发明的程序。
《实施例1》
<综述>
实施例1的程序是由具有多个处理器元件的处理器执行的程序,即由计算机(此后称为“目标硬件”)执行的程序。已经从传统程序改进了实施例1的程序。
实施例1的程序包括:包括通过将包括重复执行的部分的源程序转换为执行格式而产生的代码序列的代码序列(此后称为“补偿路径代码”);和包括分别对应补偿路径代码中包含的多个路径(其中没有分支指令)的代码序列的代码序列(此后称为“特定路径代码”)。
补偿路径代码和特定路径代码的每一个包括以“1”接“1”增加执行历史信息和总执行次数信息的历史更新处理代码,其中执行历史信息表示路径的执行次数,总执行次数信息表示作为补偿路径代码和每个特定路径代码的总执行次数的总执行次数。当执行实施例1的程序时,更新已经满足执行路径的条件的路径的总执行次数信息和执行历史信息。
实施例1的程序执行下述控制:基于执行历史信息,选择以高频执行的特定路径代码,以便与补偿路径代码平行执行;取决于在目标硬件上可用的处理器元件数量,将处理器元件指派给补偿路径代码和所选特定路径代码;并且彼此平行地执行已经指派了处理器元件的补偿路径代码和特定路径代码。
可以通过OS(操作系统)或相似物实现上述控制,以便将处理器的处理器元件指派给补偿路径代码和所选特定路径代码。
另外,实施例1的程序:每当实际执行的总次数达到由总执行次数信息表示的预定次数时,执行对将要与补偿路径代码平行执行的特定路径代码的检查;在检查中,基于执行历史信息,在平行执行的代码中检测从前次检查到当前检查期间其执行频率降低的特定路径代码;并且从平行执行的代码中去除所检测特定路径代码,即,停止指派给所检测特定路径代码的处理器元件的运行并且取消对所检测特定路径代码的处理器元件指派。
另外,当在当前没有平行执行的代码中存在以高频执行的特定路径代码时,实施例1的程序将处理器元件指派给具有高执行频率的特定路径代码,取决于目标硬件上可用的处理器元件数量,并且执行与补偿路径代码平行地执行指派了处理器元件的特定路径代码的控制。
如上所述,基于当其执行时实施例1的程序更新的执行历史信息,实施例1的程序使补偿路径代码与具有高执行频率的特定路径代码平行地执行。实施例1的程序的这种结构能够使目标硬件的处理器元件有效使用,并且增加减少实施例1的程序的执行时间的可能性。
<程序产生装置100>
下面描述用于产生实施例1的程序的程序产生装置100。
<程序产生装置的结构>
下面参考图1描述用于产生实施例1的程序的程序产生装置100的结构。
如图1所示,程序产生装置100包括分析部件101、优化部件102和代码转换部件103。
虽然没有示出,程序产生装置100还包括处理器和存储器,通过使处理器执行作为存储在存储器中的代码转换程序的编译器实现分析部件101、优化部件102和代码转换部件103的每种功能。
分析部件101具有下述功能:分析源程序110的分支和执行及向优化部件102输出由分析获得的涉及源程序110中包含的路径的路径信息。
优化部件102具有下述功能:通过优化源程序110中包含的路径产生中间代码,即通过,基于(i)从分析部件101接收的路径信息和(ii)作为关于每个路径执行频率的信息的执行频率信息120,改变以高频执行的路径中包含的指令(除了分支指令)的执行次序,以便减少指令执行时间。优化部件102将所产生的中间代码输出到代码转换部件103。
这里需要指出的是,可以通过执行仿形初步获得执行频率信息120。仿形是下述过程:通过当执行源程序110的分支指令时检测在分支点选择哪个路径获得每个路径的执行频率,将每当源程序110的任何路径通过所选路径时计算一次的仿形代码集成到源程序110中,并且执行通过将源程序110转换为执行格式所产生的执行程序。
同样,对于每个路径,通过将执行频率信息120与由软件开发员初步给出的代码产生阀值相比,判断是否该路径具有高的执行频率。
代码转换部件103具有下述功能:产生在硬件上可执行的执行程序130并且输出所产生的执行程序130。
执行程序130包括补偿路径代码、特定路径代码和平行执行控制代码。补偿路径代码包括通过将源程序110转换为执行格式产生的处理内容代码。每个特定路径代码包括通过将从优化部件102接收的具有高执行频率的每个路径的中间代码转换为执行格式产生的处理内容代码。平行执行控制代码基于表示对应特定路径代码的路径的执行次数的执行历史信息选择将要平行执行的特定路径代码,并且执行将处理器元件指派给补偿路径代码和所选特定路径代码的控制,还执行取消将处理器元件向特定路径代码的指派的控制。
补偿路径代码和特定路径代码的每一个包括以“1”接“1”增加执行历史信息和总执行次数信息的历史更新处理代码,其中执行历史信息表示一个路径的执行次数,总执行次数信息表示作为补偿路径代码和每个特定路径代码的总执行次数的总执行次数。当执行实施例1的程序时,更新已经满足执行条件的路径的总执行次数信息和执行历史信息。
以上述结构,其中,基于当执行执行程序130时更新的执行历史信息,执行对将处理器元件向每个特定路径代码的指派和指派取消的控制,能够有效使用处理器元件。
同样,只要执行执行程序130,就会执行补偿路径代码。因此,当实际执行的路径不是特定路径代码时,能够在执行结果中保持兼容性;并且当实际执行的路径是特定路径代码时,由于已经将每个特定路径代码优化为具有减少的执行时间,能够将其以比补偿路径代码高的速度执行。
将在后面描述执行程序130的细节。
<数据>
下面,描述将要输入到程序产生装置100的数据。
<源程序110>
图2是示出源程序110的一部分(此后称为部分程序)中的控制流的控制流程图。该示例的部分程序包括分支指令并且在整个源程序110中反复执行。部分程序包括作为基块的块I 200、块X 201、块J 202、块K 203、块Q 204、块S 205、块L 206、块U 207和块T 208。基块是不包括分支指令的指令的连续序列。
图2的控制流程图所示路径包括下面5个路径:(1)通过块I 200→J 202→Q 204的路径(此后将该路径称为“路径IJQ”);(2)通过块I 200→J 202→K 203→L 206的路径(此后将该路径称为“路径IJKL”);(3)通过块I 200→J 202→K 203→S 205→T 208的路径(此后将该路径称为“路径IJKST”);(4)通过块I 200→J 202→K 203→S 205→U 207的路径(此后将该路径称为“路径IJKSU”);(5)通过块I 200→X 201的路径(此后将该路径称为“路径IX”)。
<执行频率信息120>
每个执行频率信息120包括:用于识别源程序包含的路径的标识;和当在目标硬件或其它计算机上执行仿形时由标识识别的路径执行的次数。
在下面的描述中,假定作为执行仿形的一个示例,在仿形中将图2所示源程序110的一部分执行了一百次,并且作为仿形的结果获得的路径执行次数是:路径IJQ为60;路径IJKL为30;IJKST为5;路径IX为3;路径IJKSU为2。
<程序产生装置100的运行>
下面作为示例描述在其接收图2所示源程序110的部分程序之后程序产生装置100的运行,直到其输出执行程序130。
在下面的描述中,假定已经由软件开发员指定的代码产生阀值是“5%”。
基于接收源程序110,分析部件101分析源程序110,以便获得路径信息(从图2所示部分程序的分析,获得5个路径IJQ、IJKL、IJKST、IX和IJKSU的路径信息),并且将所获路径信息输出到优化部件102。
优化部件102通过将路径优化成具有优化执行时间产生中间代码,即通过,基于(i)从分析部件101接收的路径信息和(ii)已经通过仿形初步获得的执行频率信息120,改变以等于或高于代码产生阀值“5%”的高频率执行的路径(在图2所示部分程序中,3个路径IJQ、IJKL和IJKST)中包含的指令(除了分支指令)的执行次序。优化部件102将所产生的中间代码输出到代码转换部件103。
代码转换部件103产生执行程序130并且输出所产生的执行程序130。执行程序130包括补偿路径代码、特定路径代码和平行执行控制代码。补偿路径代码包括通过将源程序110转换为执行格式产生的处理内容代码。每个特定路径代码包括通过将从优化部件102接收的具有高执行频率的每个路径(在图2所示部分程序中,3个路径IJQ、IJKL和IJKST)的中间代码转换为执行格式产生的处理内容代码。平行执行控制代码基于表示对应特定路径代码的路径的执行次数的执行历史信息选择将要平行执行的特定路径代码,并且执行将处理器元件指派给补偿路径代码和所选特定路径代码的控制,还执行取消将处理器元件向特定路径代码的指派的控制。
补偿路径代码和特定路径代码的每一个包括以“1”接“1”增加执行历史信息和总执行次数信息的历史更新处理代码,其中执行历史信息表示一个路径的执行次数,总执行次数信息表示作为补偿路径代码和每个特定路径代码的总执行次数的总执行次数。
<执行程序130>
下面是实施例1的执行程序130的解释。
<结构>
参考图3描述实施例1的执行程序130的结构。
如图3所示,执行程序130存储在目标硬件中提供的存储器300中,并且包括平行执行控制部件131、补偿路径代码132、第一路径代码133、第二路径代码134、第三路径代码135、…、和第n路径代码136。
平行执行控制部件131具有下述功能:基于由存储在存储器300中的执行历史信息301表示的每个路径的执行次数,执行对从第一路径代码133、第二路径代码134、第三路径代码135、…、和第n路径代码136中选择将要与补偿路径代码132平行执行的特定路径代码和将处理器元件指派给补偿路径代码132及某些或全部所选特定路径代码的控制。这里需要指出的是,可指派处理器元件的数量是预定的,并且由此相应确定了指派处理器元件的特定路径代码数量。
更加明确地,平行执行控制部件131将由存储在存储器300中的执行历史信息301表示的每个路径的执行次数除以由在存储器300中的总执行次数信息302表示的总执行次数,总执行次数是补偿路径代码和特定路径代码的执行次数的总和,以便获得每个路径执行次数与总执行次数的比值,并且选择具有比后面将要描述的路径选择阀值高的前述比值的一个或多个特定路径代码。
另外,平行执行控制部件131将目标硬件上可用的处理器元件数量设定为“n”,执行将处理器元件指派给补偿路径代码132的控制,并且还执行按照从最高比值到低比值的次序将处理器元件指派给所选具有高比值的一个或多个特定路径代码中的(n-1)个特定路径代码中的每一个的控制。
这里,路径选择阀值可能是每个路径的执行次数与通过计算由执行仿形初步获得的每个路径执行次数的总和获得的总执行次数的比值,或者可能是每个路径的执行次数与由软件开发员以任意方式设定的总执行次数的比值。并且,在下面的描述中,假定路径选择阀值是后者,即每个路径的执行次数与由软件开发员以任意方式设定的总执行次数的比值。
每当总实际执行次数达到由存储在存储器300中的总执行次数信息302表示的次数(例如,“100”),平行执行控制部件131执行对将要与补偿路径代码132平行执行的特定路径代码的检查。
更加明确地,平行执行控制部件131选择预定数量的如上所述的将要与补偿路径代码132平行执行的特定路径代码。随后,当部分或全部正在与补偿路径代码132平行执行的特定路径代码没有包括在新选择的特定路径代码中时,平行执行控制部件131取消将处理器元件向该部分或全部特定路径代码的指派。同样,当部分或全部新选择的特定路径代码没有包括在正在与补偿路径代码132平行执行的特定路径代码中时,平行执行控制部件131将处理器元件指派给该部分或全部新选择的特定路径代码,取决于目标硬件上可用的处理器元件数量。
每当执行对将要与补偿路径代码132平行执行的特定路径代码的检查时,平行执行控制部件131初始化存储在存储器300中的执行历史信息301和总执行次数信息302,即将对应特定路径代码的路径的执行次数设定为“0”并将总执行次数设定为“0”(此后,将次数设定为“0”称为重设)。以这种结构,能够执行指派处理器元件或取消处理器元件的指派的控制,基于从先前检查到当前检查的期间内已经更新的对应特定路径代码的路径执行次数。
平行执行控制部件131通过在目标硬件上运行的OS(操作系统)实现对指派处理器元件或取消处理器元件的指派的控制。处理器元件的指派和指派的取消是OS的通用功能,因此忽略了其解释。
同样,当给平行执行控制部件131指派了目标硬件中提供的处理器元件时,其自身可以实现其功能。图3示出了给平行执行控制部件131指派了第一PE 311以及补偿路径代码132的示例。
当平行执行控制部件131执行对指派处理器元件的控制时,补偿路径代码132由作为目标硬件上的处理器元件的第一PE 311、第二PE 312、第三PE313和第四PE 314中的任何一个执行。在图3所示示例中,将第一PE 311指派给补偿路径代码132。
在下面的描述中,参考图4简要描述补偿路径代码132。
图4示出了如何给构成图2所示源程序110的部分程序的补偿路径代码132、第一路径代码133、第二路径代码134和第三路径代码135指派处理器元件并彼此平行地执行。
如图4所示,补偿路径代码132包括处理内容代码400、第一楔形代码401、第二楔形代码402、第三楔形代码403、第四楔形代码404、第五楔形代码405、第六楔形代码406和历史更新代码407。
处理内容代码400是通过将源程序转换为执行格式产生的代码序列,并且当没有执行对应将要彼此平行执行的特定路径代码的路径时用于补偿执行结果中的兼容性。
第一到第六楔形代码401-406分别输出不同的分支指令识别信息303。已经以这种方式输出的分支指令识别信息303用于识别实际执行的路径。将在后面描述分支指令识别信息303的数据结构,以及如何将分支指令识别信息303用于识别实际执行路径。
历史更新代码407具有执行历史更新处理的功能,其中,其根据从楔形代码输出的多个分支指令识别信息303的组合识别实际执行路径,对于所识别路径用“1”增加由执行历史信息301表示的执行次数,并且用“1”增加由总执行次数信息302表示的总执行次数。
第一路径代码133、第二路径代码134、第三路径代码135、…、和第n路径代码136是与补偿路径代码132平行执行的特定路径代码。当平行执行控制部件131执行对基于对应由执行历史信息301表示的特定路径代码的路径的执行次数指派处理器元件的控制时,第一路径代码133、第二路径代码134、第三路径代码135、…、和第n路径代码136由作为目标硬件上的处理器元件的第一PE 311、第二PE 312、第三PE 313和第四PE 314中的任何一个执行。在图3所示示例中,将第二PE 312、第三PE 313和第四PE 314分别指派给第一路径代码133、第二路径代码134和第三路径代码135,没有给第n路径代码136指派处理器元件。
由于,基本上,第一路径代码133、第二路径代码134、第三路径代码135、…、和第n路径代码136具有相同结构,在下面的详细描述中,将参考图4使用第一路径代码133。
如图4所示,第一路径代码133包括处理内容代码408、路径条件判断代码409、历史更新代码420、调配代码430和停止代码440。
通过将中间代码转换为执行格式产生处理内容代码408,该中间代码通过改变路径IJQ包含的指令(除了分支指令)的执行次序以便减少指令执行时间而产生。相应特定路径代码的处理内容代码是彼此不同的。通过将对于路径IJKL优化的中间代码转换为执行格式产生处理内容代码410;通过将对于路径JKDST优化的中间代码转换为执行格式产生处理内容代码412。
路径条件判断代码409具有判断是否满足执行路径IJQ的条件的功能。相应特定路径代码的路径条件判断代码是彼此不同的。路径条件判断代码411判断是否满足执行路径IJKL的条件;而路径条件判断代码413判断是否满足执行路径JKDST的条件。
当路径条件判断代码判断执行对应历史更新代码420所属的自身特定路径代码的路径的条件满足时,执行历史更新代码420,并且其具有以“1”增加由执行历史信息301表示的路径执行次数和以“1”增加由总执行次数信息302表示的执行总次数的功能。例如,第一路径代码133中的历史更新代码420以“1”增加路径IJQ的执行次数。
在执行历史更新代码420之后执行调配代码430,其具有停止除其所属的自身路径代码之外的路径的执行的功能,即停止补偿路径代码132和其它特定路径代码的执行,以便使由执行自身特定路径代码所获得的计算结果被反映。
当路径条件判断代码409判断不满足条件时执行停止代码440,并且其具有停止其所属自身路径代码的执行的功能。
这里需要指出的是,通过将已经优化为具有减少的执行时间的中间代码转换为执行格式产生处理内容代码408,以及特定路径代码的执行时间短于补偿路径代码132的执行时间。
因此,当路径条件判断代码409判断满足执行对应特定路径代码的路径的条件,为了停止补偿路径代码132的执行,执行调配代码430,并且由此不执行补偿路径代码132中包含的历史更新代码407。
<数据>
这里将描述由存储在目标硬件的存储器300中的执行程序130使用的数据。
执行历史信息301包括用于识别源程序中包含的路径的标识,并且包括表示在目标硬件上由标识识别的路径的实际执行次数的执行次数。
当执行补偿路径代码132的历史更新代码407或特定路径代码的历史更新代码420时,以“1”增加表示相应路径的实际执行次数的执行次数。
总执行次数信息302表示补偿路径代码132和每个特定路径代码的总执行次数。当执行补偿路径代码132的历史更新代码407或特定路径代码的历史更新代码420时,以“1”增加总执行次数。
当执行图4所示第一到第六楔形代码401-406时,输出分支指令识别信息303。每个分支指令识别信息303识别其从之输出的楔形代码。通过使用分支指令识别信息303,能够识别实际执行的路径。
分支指令识别信息303可能采取其可以识别执行的第一到第六楔形代码401-406中的一个的任何形式。在下面的描述中,作为一个示例,假定当执行第一到第六楔形代码401-406时,分别将“1”到“6”作为分支指令识别信息303输出。
例如,当仅有“1”作为分支指令识别信息303输出时,认为执行了基块I 200。其还表示没有执行基块J 202,而执行了基块X 201。以该方式,能够作为实际执行的路径识别路径IX。
<运行>
这里,将描述执行程序130的运行。
<路径选择>
在下面的描述中,将参考图5所示流程图描述由平行执行控制部件131执行的路径选择处理。
平行执行控制部件131判断是否在步骤S502中处理过对应特定路径代码的全部路径(步骤S501)。
当其判断没有处理国对应特定路径代码的全部路径时(步骤S501“N”),平行执行控制部件131基于存储在存储器300中的执行历史信息301和总执行次数信息302判断是否还没有处理的路径的执行次数与总执行次数的比值等于或大于由软件开发员以任意方式设定的路径选择阀值(步骤S502)。
当其判断路径的执行次数与总执行次数的比值等于或大于路径选择阀值时(步骤S502“Y”),平行执行控制部件131将该路径添加到平行执行路径列表中,以便每个路径的执行次数与总执行次数的比值以降序排列(步骤S503),并返回步骤S501。
当其判断路径的执行次数与总执行次数的比值小于路径选择阀值时(步骤S502“N”),平行执行控制部件131返回步骤S501。
当平行执行控制部件131判断处理过对应特定路径代码的全部路径(步骤S501“Y”),处理结束。
<处理器元件的指派>
在下面的描述中,将参考图6所示流程图描述由平行执行控制部件131执行的处理器元件指派。
平行执行控制部件131获得表示在目标计算机上可用的处理器元件数量的信息(步骤S601)。
平行执行控制部件131将处理器元件指派给补偿路径代码132,并且将补偿路径添加到执行路径列表(步骤S602)。
平行执行控制部件131判断是否已经指派了处理器元件的路径数量等于在目标计算机上可用的处理器元件数量(步骤S603)。
当其判断已经指派了处理器元件的路径数量不等于在目标计算机上可用的处理器元件数量(步骤S603“N”)时,平行执行控制部件131将处理器元件指派给对应平行执行路径列表的开始路径的特定路径代码,即具有平行执行路径列表中包括的路径的执行次数的最高比值的路径,并且从平行执行路径列表中删除对应指派了处理器元件的特定路径代码的路径(步骤S604)。
平行执行控制部件131将对应指派了处理器元件的特定路径代码的路径添加到执行路径列表(步骤S605)。
平行执行控制部件131判断是否平行执行路径列表不包含路径是真实的(步骤S606)。
当其判断平行执行路径列表不包含路径不是真实的(步骤S606“N”),平行执行控制部件131返回步骤S603;当其判断是真实的(步骤S606“Y”),平行执行控制部件131重设由执行历史信息301表示的每个路径的执行次数和由总执行次数信息302表示的总执行次数(步骤S607)。
平行执行控制部件131执行对应执行路径列表中包含的全部路径的代码(对应执行路径列表中包含的路径的补偿路径代码132和特定路径代码)(步骤S608)。
当其判断已经指派了处理器元件的路径数量等于在目标计算机上可用的处理器元件数量(步骤S603“Y”),平行执行控制部件131转到步骤S607。
<历史更新代码407的运行>
下面将参考图7所示流程图描述历史更新处理,在其中补偿路径代码132中包含的历史更新代码407更新执行历史信息301和总执行次数信息302。
历史更新代码407获得存储在存储器300中的分支指令识别信息303(步骤S701)。
历史更新代码407通过查阅所获分支指令识别信息303识别实际执行的路径(步骤S702)。
历史更新代码407以“1”增加由存储在存储器300中的分支指令识别信息303中包括的一个标识识别的实际执行路径的执行次数(步骤S703)。
历史更新代码407以“1”增加由总执行次数信息302表示的总执行次数(步骤S704)。
<历史更新代码420的运行>
下面将参考图8所示流程图描述历史更新处理,在其中每个特定路径代码中包含的历史更新代码420更新执行历史信息301和总执行次数信息302。
历史更新代码420以“1”增加对应自身特定路径代码的路径的执行次数,该路径由执行历史信息301中包括的一个标识识别(步骤S801)。
历史更新代码420以“1”增加由总执行次数信息302表示的总执行次数(步骤S802)。
<处理器元件的指派的检查>
下面将参考图9所示流程图描述检查将要与补偿路径代码302平行执行的特定路径代码的处理。
平行执行控制部件131判断是否由存储在存储器300中的总执行次数信息302表示的总执行次数等于“100”(步骤S901)。
当其判断总执行次数不等于“100”(步骤S901“N”)时,平行执行控制部件131返回步骤S901。
当其判断总执行次数等于“100”(步骤S901“Y”)时,为了选择对应将要与补偿路径代码302平行执行的特定路径代码的路径,平行执行控制部件131根据图5所示流程图执行路径选择处理(步骤S902)。
平行执行控制部件131判断是否存在包含在执行路径列表中但不包含在平行执行路径列表中的路径(步骤S903)。
当其判断存在包含在执行路径列表中但不包含在平行执行路径列表中的路径时(步骤S903“Y”),平行执行控制部件131取消将处理器元件向对应全部检测路径的特定路径代码的指派(步骤S904),并且转到步骤S905。
当其判断不存在包含在执行路径列表中但不包含在平行执行路径列表中的路径时(步骤S903“N”),平行执行控制部件131转到步骤S905。
平行执行控制部件131判断是否存在包含在平行执行路径列表中但不包含在执行路径列表中的路径(步骤S905)。
当其判断存在包含在平行执行路径列表中但不包含在执行路径列表中的路径(步骤S905“Y”),平行执行控制部件131从平行执行路径列表删除所检测路径之外的路径(步骤S906),并且转到步骤S907。
当其判断不存在包含在平行执行路径列表中但不包含在执行路径列表中的路径(步骤S905“N”),平行执行控制部件131转到步骤S912。
在这里忽略了后续步骤的描述,这是由于:步骤S907与图6所示处理器元件指派处理中步骤S601相同;步骤S908-913与图6所示处理器元件指派处理中步骤S603-608相同。
<特定示例的运行>
使用图2所示源程序110的部分,作为示例,更加详细地描述执行程序130的运行。
<路径选择>
在下面的描述中,将参考图5所示流程图描述由平行执行控制部件131执行的路径选择处理。
在下面的描述中,假定存储器300将对应路径IJQ、IJKL、IJKST和IX的特定路径代码存储为第一、第二、第三和第四路径代码。
在下面的描述中,还假定执行了仿形,在其中图2所示源程序110的一部分执行了一百次,并且将仿形结果用作执行历史信息301的初始值,并且假定由仿形获得的路径的执行次数是:路径IJQ为60;路径IJKL为30;路径IJKST为5;路径IX为3;以及路径IJKSU为2。
在下面的描述中,还假定已经由软件开发员以任意方式指定的路径选择阀值是“5%”。
平行执行控制部件131判断是否在步骤S502中处理过全部路径IJQ、IJKL、IJKST和IX(步骤S501)。
由于在步骤S502中没有处理过路径IJQ、IJKL、IJKST和IX,平行执行控制部件131做出否定判断(步骤S501“N”)。平行执行控制部件131基于存储在存储器300中的执行历史信息301和总执行次数信息302判断是否还没有处理过的路径IJQ的执行次数与总执行次数的比值(60%)等于或大于由软件开发员以任意方式指定的路径选择阀值(5%)。(步骤S502)。
平行执行控制部件131判断路径IJQ的执行次数与总执行次数的比值(60%)等于或大于路径选择阀值(5%)。(步骤S502“Y”)。平行执行控制部件131将路径IJQ添加到平行执行路径列表(步骤S503),并且返回步骤S501。
平行执行控制部件131判断是否在步骤S502中处理过全部路径IJQ、IJKL、IJKST和IX(步骤S501)。
由于在步骤S502中没有处理过路径IJKL、IJKST和IX,平行执行控制部件131做出否定判断(步骤S501“N”)。平行执行控制部件131基于存储在存储器300中的执行历史信息301和总执行次数信息302判断是否还没有处理过的路径IJKL的执行次数与总执行次数的比值(30%)等于或大于由软件开发员以任意方式指定的路径选择阀值(5%)。(步骤S502)。
平行执行控制部件131判断路径IJKL的执行次数与总执行次数的比值(30%)等于或大于路径选择阀值(5%)。(步骤S502“Y”)。平行执行控制部件131将路径IJKL添加到平行执行路径列表(步骤S503),并且返回步骤S501。
平行执行控制部件131判断是否在步骤S502中处理过全部路径IJQ、IJKL、IJKST和IX(步骤S501)。
由于在步骤S502中没有处理过路径IJKST和IX,平行执行控制部件131做出否定判断(步骤S501“N”)。平行执行控制部件131基于存储在存储器300中的执行历史信息301和总执行次数信息302判断是否还没有处理过的路径IJKST的执行次数与总执行次数的比值(5%)等于或大于由软件开发员以任意方式指定的路径选择阀值(5%)。(步骤S502)。
平行执行控制部件131判断路径IJKST的执行次数与总执行次数的比值(5%)等于或大于路径选择阀值(5%)。(步骤S502“Y”)。平行执行控制部件131将路径IJKST添加到平行执行路径列表(步骤S503),并且返回步骤S501。
平行执行控制部件131判断是否在步骤S502中处理过全部路径IJQ、IJKL、IJKST和IX(步骤S501)。
由于在步骤S502中没有处理过路径IX,平行执行控制部件131做出否定判断(步骤S501“N”)。平行执行控制部件131基于存储在存储器300中的执行历史信息301和总执行次数信息302判断是否还没有处理过的路径IX的执行次数与总执行次数的比值(3%)等于或大于由软件开发员以任意方式指定的路径选择阀值(5%)。(步骤S502)。
平行执行控制部件131判断路径IX的执行次数与总执行次数的比值(3%)不等于或大于路径选择阀值(5%)。(步骤S502“N”)。平行执行控制部件131返回步骤S501。
平行执行控制部件131判断是否在步骤S502中处理过全部路径IJQ、IJKL、IJKST和IX(步骤S501)。
由于在步骤S502中处理过全部路径IJQ、IJKL、IJKST和IX,平行执行控制部件131做出肯定判断(步骤S501“Y”),并且该处理结束。
在如上所述的执行该处理之后,已经将路径IJQ、IJKL和IJKST登记在平行执行路径列表中。
<处理器元件的指派>
在下面的描述中,将参考图6所示流程图描述由平行执行控制部件131执行的处理器元件指派处理。
在下面的描述中,假定将路径IJQ、IJKL和IJKST登记在平行执行路径列表中,并且假定在目标计算机上可用的处理器元件数量是“3”。
平行执行控制部件131获得表示在目标计算机上可用的处理器元件数量(3)的信息(步骤S601)。
平行执行控制部件131将处理器元件指派给补偿路径代码132,并且将补偿路径添加到执行路径列表(步骤S602)。
平行执行控制部件131判断是否已经指派了处理器元件的路径的数量(1)等于在目标计算机上可用的处理器元件数量(3)(步骤S603)。
平行执行控制部件131判断已经指派了处理器元件的路径的数量(1)不等于在目标计算机上可用的处理器元件数量(3)(步骤S603“N”)。平行执行控制部件131将处理器元件指派给对应作为平行执行路径列表的开始路径的路径IJQ的特定路径代码,并且从平行执行路径列表删除对应指派了处理器元件的特定路径代码的路径IJQ(步骤S604)。
平行执行控制部件131将对应指派了处理器元件的特定路径代码的路径IJQ添加到执行路径列表(步骤S605)。
平行执行控制部件131判断是否平行执行路径列表不包含路径是真实的(步骤S606)。
由于平行执行路径列表包含路径IJKL和IJKST,平行执行控制部件131判断其是不真实的(步骤S606“N”)。平行执行控制部件131返回步骤S603。
平行执行控制部件131判断是否已经指派了处理器元件的路径的数量(2)等于在目标计算机上可用的处理器元件数量(3)(步骤S603)。
平行执行控制部件131判断已经指派了处理器元件的路径的数量(2)不等于在目标计算机上可用的处理器元件数量(3)(步骤S603“N”)。平行执行控制部件131将处理器元件指派给对应作为平行执行路径列表的开始路径的路径IJKL的特定路径代码,并且从平行执行路径列表删除对应指派了处理器元件的特定路径代码的路径IJKL(步骤S604)。
平行执行控制部件131将对应指派了处理器元件的特定路径代码的路径IJKL添加到执行路径列表(步骤S605)。
平行执行控制部件131判断是否平行执行路径列表不包含路径是真实的(步骤S606)。
由于平行执行路径列表包含路径IJKST,平行执行控制部件131判断其是不真实的(步骤S606“N”)。平行执行控制部件131返回步骤S603。
平行执行控制部件131判断是否已经指派了处理器元件的路径的数量(3)等于在目标计算机上可用的处理器元件数量(3)(步骤S603)。
平行执行控制部件131判断已经指派了处理器元件的路径的数量(3)等于在目标计算机上可用的处理器元件数量(3)(步骤S603“Y”)。平行执行控制部件131转到步骤S607。
平行执行控制部件131重设由执行历史信息301表示的每个路径的执行次数和由总执行次数信息302表示的总执行次数(步骤S607)。
平行执行控制部件131执行对应执行路径列表中包含的全部路径的代码(补偿路径代码132和对应路径IJQ和IJKL的特定路径代码)(步骤S608)。
<历史更新代码407的运行>
下面将参考图7所示流程图描述历史更新处理,在其中补偿路径代码132中包含的历史更新代码407更新执行历史信息301和总执行次数信息302。
在下面的描述中,假定作为分支指令识别信息303登记了值“1”、“2”、“3”、“4”和“6”,假定由存储在存储器300中的执行历史信息301表示的路径IJKST的执行次数是“29”,并且假定由总执行次数信息302表示的总执行次数是“98”。
历史更新代码407获得存储在存储器300中的分支指令识别信息303(“1”、“2”、“3”、“4”和“6”)(步骤S701)。
历史更新代码407通过参考所获分支指令识别信息303(“1”、“2”、“3”、“4”和“6”)识别实际执行的路径IJKST(步骤S702)。
历史更新代码407以“1”增加由存储在存储器300中的执行历史信息301表示的路径IJKST的执行次数(29),以便该次数变为“30”(步骤S703)。
历史更新代码407以“1”增加由总执行次数信息302表示的总执行次数(98),以便该总次数变为“99”(步骤S704)。
<历史更新代码420的运行>
下面将参考图8所示流程图描述历史更新处理,在其中每个特定路径代码中包含的历史更新代码420更新执行历史信息301和总执行次数信息302。
在下面的描述中,假定已经将第二PE 312指派给作为对应路径IJQ的特定路径代码的第一路径代码,假定路径条件判断代码409已经判断是否满足执行路径IJQ的条件,假定由存储在存储器300中的执行历史信息301表示的路径IJQ的执行次数是“49”,并且假定由总执行次数信息302表示的总执行次数是“99”。
历史更新代码420以“1”增加对应自身特定路径代码的路径IJQ的执行次数(49),路径IJQ由执行历史信息301中包括的一个标识识别,以便该次数变为“50”(步骤S801)。
历史更新代码420以“1”增加由总执行次数信息302表示的总执行次数(99),以便该总次数变为“100”(步骤S802)。
<处理器元件指派的检查>
下面参考图9所示流程图描述检查将要与补偿路径代码132平行执行的特定路径代码的处理。
在下面的描述中,假定在执行路径列表中登记了补偿路径和路径IJQ和IJKL,假定已经指派了处理器元件的路径数量是“3”,并且假定在目标计算机上可用的处理器元件数量是“3”。
在下面的描述中,还假定由存储在存储器300中的执行历史信息301表示的路径的执行次数是:路径IJQ为50;路径IJKL为20;路径IJKST为30;路径IX为0,假定由总执行次数信息302表示的总执行次数为100,并且假定由软件开发员以任意方式指定的路径选择阀值为30%。
平行执行控制部件131判断是否由存储在存储器300中的总执行次数信息302表示的总执行次数(100)等于“100”(步骤S901)。
平行执行控制部件131判断总执行次数等于“100”(步骤S901“Y”)。为了选择对应将要与补偿路径代码132平行执行的特定路径代码的路径,平行执行控制部件131根据图5所示流程图执行路径选择处理(步骤S902)。作为路径选择处理的结果,将路径IJQ和IJKST登记在平行执行路径列表中。
平行执行控制部件131判断是否存在包含在执行路径列表(补偿路径和路径IJQ和IJKL)中但不包含在平行执行路径列表(路径IJQ和IJKST)中的路径(步骤S903)。
由于路径IJKL包含在执行路径列表中但不包含在平行执行路径列表中,平行执行控制部件131做出肯定判断(步骤S903“Y”)。平行执行控制部件131取消将处理器元件向对应路径IJKL的特定路径代码的指派,并且将路径IJKL从执行路径列表中删除(步骤S904)。作为该步骤的结果,已经指派了处理器元件的路径数量是“2”。
平行执行控制部件131判断是否存在包含在平行执行路径列表(路径IJQ和IJKST)中但不包含在执行路径列表(补偿路径和路径IJQ)中的路径(步骤S905)。
由于路径IJKST包含在平行执行路径列表中但不包含在执行路径列表中,平行执行控制部件131做出肯定断(步骤S905“Y”)。平行执行控制部件131从平行执行路径列表中删除路径IJKST以外的路径(步骤S906)。
平行执行控制部件131获得在目标计算机上可用的处理器元件数量(3)(步骤S907)。
平行执行控制部件131判断是否已经指派了处理器元件的路径数量(2)等于在目标计算机上可用的处理器元件数量(3)(步骤S908)。
由于已经指派了处理器元件的路径数量(2)等于在目标计算机上可用的处理器元件数量(3),平行执行控制部件131做出否定判断(步骤S908“N”)。平行执行控制部件131将处理器元件指派给对应作为平行执行路径列表的开始路径的路径IJKST的特定路径代码,并且从平行执行路径列表删除对应指派了处理器元件的特定路径代码的路径IJKST(步骤S909)。
平行执行控制部件131将对应指派了处理器元件的特定路径代码的路径IJKST添加到执行路径列表中(步骤S910)。
平行执行控制部件131判断是否平行执行路径列表不包含路径是真实的(步骤S911)。
由于平行执行路径列表不包含路径是真实的,平行执行控制部件131做出肯定判断(步骤S911“Y”)。平行执行控制部件131重设由执行历史信息301表示的每个路径的执行次数和由总执行次数信息302表示的总执行次数(步骤S912)。
平行执行控制部件131执行对应执行路径列表中包含的全部路径的代码(补偿路径代码132和对应路径IJQ和IJKST的特定路径代码)(步骤S913)。
《实施例2》
<综述>
在实施例1的检查将要彼此平行执行的特定路径代码的处理中,执行程序130取消将处理器元件向在已经与补偿路径代码平行执行的特定路径代码中的对应其执行次数与总执行次数的比值小于路径选择阀值的路径的特定路径代码(此后这种路径称为限制路径)的指派,将处理器元件指派给还没有平行执行的且其执行次数与总执行次数的比值大于路径选择阀值的特定路径代码,取决于目标硬件上可用的处理器元件的数量,并且使该特定路径代码与补偿路径代码平行地执行。该结构能够使处理器元件有效地使用并且使处理速度增加。
实施例2的执行程序1000具有与实施例1的执行程序130共有的部分:在检查将要彼此平行执行的特定路径代码的处理中,其取消将处理器元件向对应限制路径的特定路径代码的指派,以便有效地使用处理器元件。
实施例2的执行程序1000还将处理器元件指派给分别对应执行时间总和小于补偿路径代码的执行时间的连续执行路径和限制路径的一对特定路径代码,其中连续执行路径是对应已经与补偿路径代码平行执行的特定路径代码的且其执行次数与总执行次数的比值大于路径选择阀值的路径。实施例2的执行程序1000使该对特定路径代码与补偿路径代码平行执行。
指派给该对特定路径代码的处理器元件通常执行具有高执行频率的连续执行路径;并且当连续执行路径不满足执行条件时,处理器元件执行具有低执行频率的限制路径。以该结构,能够在当连续执行路径满足执行条件时如实施例1的情况中一样加速处理。
而且,由于分别对应连续执行路径和限制路径的特定路径代码的执行时间总和小于补偿路径代码的执行时间,能够在即使当连续执行路径不满足执行条件而限制路径满足执行条件时加速处理。
<程序产生装置>
将描述用于产生实施例2的程序的执行程序1000的程序产生装置。
基本上,实施例2的程序产生装置的结构具有与实施例1的程序产生装置100相同的结构,但与其不同的是实施例2的代码转换部件产生包含与实施例1的代码转换部件103产生的执行程序130中所包含代码不同的特定路径代码和平行执行控制代码的执行程序1000。
这里需要指出的是,输入到实施例2的程序产生装置的数据和实施例2的程序产生装置的运行与实施例1的程序产生装置100的是相同的,除了产生执行程序1000,并且忽略了其描述。
<执行程序1000>
下面是实施例2的执行程序1000的解释。
<结构>
将参考图10描述实施例2的执行程序1000的结构。
如图10所示,执行程序1000存储在目标硬件中提供的存储器300中,并且包括补偿路径代码132、平行执行控制部件1001、第一路径代码1003、第二路径代码1004、第三路径代码1005、…、和第n路径代码1006。
由于其与实施例1中的相同,这里忽略了补偿路径代码132的描述。
平行执行控制部件1001基本上具有与实施例1的平行执行控制部件131相同的功能,但是当检查特定路径代码时具有与其不同的功能。
平行执行控制部件1001具有下述功能:执行对在对应平行执行的特定路径代码的路径中检测执行次数与总执行次数的比值(此后该比值称为“执行比值”)小于路径选择阀值的限制路径的控制,取消处理器元件向对应所检测的限制路径的特定路径代码的指派,并且确定将处理器元件指派给一对对应执行比值大于路径选择阀值的连续执行路径的特定路径代码,和对应取消处理器元件指派的一个限制路径的特定路径代码。
更加明确地,当限制路径具有等于或小于路径选择阀值且等于或大于预定值(例如,预定值是通过用“0.7”乘以路径选择阀值而获得的值)的执行比值时,和当对应连续执行路径的特定路径代码的执行时间和对应限制路径的特定路径代码的执行时间的总和小于补偿路径代码的执行时间时,平行执行控制部件1001确定将处理器元件指派给一对对应连续执行路径的特定路径代码和对应限制路径的特定路径代码。在该情况中,平行执行控制部件1001将连续执行路径和限制路径的标识登记到存储在存储器300中的合并路径信息1002。
设定限制路径应该具有等于或小于路径选择阀值且等于或大于预定值(例如,预定值是通过用“0.7”乘以路径选择阀值而获得的值)的执行比值的条件的原因如下。就是说,当限制路径具有明显小于路径选择阀值的执行比值时,执行对应限制路径的特定路径代码的可能性非常低,即使平行执行控制部件1001将处理器元件指派给该对对应连续执行路径的特定路径代码和对应限制路径的特定路径代码。
在本实施例中,假定由软件开发员初步指定小于路径选择阀值的预定值,并且假定由仿形或相似方式初步获得对应连续执行路径的特定路径代码、对应限制路径的特定路径代码和使用的补偿路径代码的执行时间。
上述的本实施例标识与识别执行历史信息301中包括的那些相同。将在后面详细描述合并路径信息1002。
第一路径代码1003、第二路径代码1004、第三路径代码1005、…、和第n路径代码1006是基本与第一路径代码133、第二路径代码134、第三路径代码135、…、和第n路径代码136相同的特定路径代码,但是与其不同的是每个特定路径代码包括限制路径执行判断代码1101和限制路径执行代码1102,其中限制路径执行判断代码1101基于存储在目标硬件的存储器300中的合并路径信息1002判断是否执行执行对应限制路径的特定路径代码,而限制路径执行代码1102执行对应限制路径的特定路径代码。
由于基本上第一路径代码1003、第二路径代码1004、第三路径代码1005、…、和第n路径代码1006具有相同结构,在下面的详细描述中,将参考图11使用第一路径代码1003。
图11示出如何将处理器元件指派给构成图2所示源程序110的部分程序的补偿路径代码132、第一路径代码1003、第二路径代码1004和第三路径代码1005并且彼此平行地执行。
如图11所示,第一路径代码1003包括处理内容代码408、路径条件判断代码409、历史更新代码420。调配代码430、停止代码440、限制路径执行判断代码1101和限制路径执行代码1102。
第一路径代码1003中包括的代码与实施例1的第一路径代码133中包括的代码相同,除了限制路径执行判断代码1101和限制路径执行代码1102。因此,忽略了除了限制路径执行判断代码1101和限制路径执行代码1102之外的代码的描述。
限制路径执行判断代码1101是当路径条件判断代码409判断不满足条件时执行的代码,并且具有判断是否存在将要在路径IJQ之后执行的限制路径的功能。
更加明确地,当将对应路径IJQ的标识的限制路径的标识登记到存储在存储器300中的合并路径信息1002时,限制路径执行判断代码1101判断存在将要执行的限制路径。
当限制路径执行判断代码1101判断存在将要执行的限制路径时,限制路径执行代码1102基于存储在存储器300中的合并路径信息1002执行对应其标识对应路径IJQ的标识的限制路径的特定路径代码。
<数据>
合并路径信息1002包括用于识别连续执行路径的标识,并且包括用于识别将要在连续执行路径之后执行的限制路径的标识。
当平行执行控制部件1001确定将处理器元件指派给一对(i)对应连续执行路径的特定路径代码和(ii)对应限制路径的特定路径代码时,将数据添加到合并路径信息1002。
<运行>
<处理器元件的指派的检查>
下面参考图12所示流程图描述检查将要与补偿路径代码132平行执行的特定路径代码的处理。
由于其与图9的流程图所示步骤S901和S902相同,忽略了步骤S1201和S1202的描述。
平行执行控制部件1001判断是否存在包含在执行路径列表中但不包含在平行执行路径列表中的路径(步骤S1203)。
当存在包含在执行路径列表中但不包含在平行执行路径列表中的路径时(步骤S1203“Y”),平行执行控制部件1001取消处理器元件向对应全部所检测限制路径的指派,并且将全部所检测限制路径从执行路径列表删除(步骤S1204)。随后,平行执行控制部件1001转到步骤S1205。
当不存在这种包含在执行路径列表中但不包含在平行执行路径列表中的路径时(步骤S1203“N”),平行执行控制部件1001转到步骤S1212。
平行执行控制部件1001将全部所检测限制路径添加到限制路径列表(步骤S1205)。
平行执行控制部件1001判断是否限制路径的执行比值等于或大于预定值(例如,预定值是通过用“0.7”乘以路径选择阀值而获得的值)并且等于或小于路径选择阀值(步骤S1206)。
当其判断限制路径的执行比值等于或大于预定值并且等于或小于路径选择阀值时(步骤S1206“Y”),平行执行控制部件1001判断是否在执行路径列表中除了补偿路径和已经确定将处理器元件指派给每对对应该路径和限制路径中的一个的特定路径代码的路径之外的全部路径已经经历将在后面描述的步骤S1208(步骤S1207)。
当其判断不是全部执行路径列表中的路径已经经历该处理时(步骤S1207“N”),平行执行控制部件1001判断是否执行路径列表中可疑路径的执行时间和可疑限制路径的执行时间的总和小于补偿路径的执行时间(步骤S1208)。
当其判断可疑路径的执行时间和限制路径的执行时间的总和等于或大于补偿路径的执行时间时(步骤S1208“N”),平行执行控制部件1001返回步骤S1207。
当其判断可疑路径的执行时间和限制路径的执行时间的总和小于补偿路径的执行时间时(步骤S1208“Y”),平行执行控制部件1001将限制路径和执行路径列表中的可疑路径登记到存储在存储器300中的合并路径信息1002(步骤S1209)。
平行执行控制部件1001将可疑限制路径从限制路径列表中删除(步骤S1210)。
平行执行控制部件1001判断是否限制路径列表中没有路径是真实的(步骤S1211)。
当其判断限制路径列表中具有一个或多个路径时(步骤S1211“N”),平行执行控制部件1001返回步骤S1206。
当其判断限制路径列表中没有路径时(步骤S1211“Y”),平行执行控制部件1001重设由执行历史信息301表示的每个路径的执行次数和由总执行次数信息302表示的总执行次数(步骤S1212)。
平行执行控制部件1001执行执行路径列表中包含的全部路径的代码(补偿路径代码132和对应执行路径列表中包含的路径的特定路径代码)(步骤S1213)。
当其判断限制路径的执行比值小于比路径选择阀值小的预定值时(步骤S1206“N”),或当其判断执行路径列表中的全部路径已经经历该处理时(步骤S1207“Y”),平行执行控制部件1001转到步骤S1210。
<特定示例的运行>
将使用图2所示源程序110的该部分作为示例描述执行程序1000的运行。
<处理器元件的指派的检查>
下面将参考图12示出的流程图描述检查将要与补偿路径代码132平行执行的特定路径代码的处理。
在下面的描述中,假定将补偿路径和路径IJQ和IJKL登记到执行路径列表,假定已经指派了处理器元件的路径数量为“3”,并且假定可用处理器元件数量为“3”。
在下面的描述中,还假定由存储在存储器300中的执行历史信息301表示的路径的执行次数是:路径IJQ为70;路径IJKL为40;路径IJKST为10;经历IX为0,并且假定由总执行次数信息302表示的总执行次数为“100”。
在下面的描述中,还假定已经由软件开发员以任意方式指定的路径选择阀值为“30%”,并且假定小于路径选择阀值的预定值为“20%”。
在下面的描述中,还假定路径IJQ和IJKL的执行时间总和小于补偿路径的执行时间。
平行执行控制部件1001判断是否由存储在存储器300中的总执行次数信息302表示的总执行次数(100)等于“100”(步骤S1201)。
平行执行控制部件1001判断总执行次数等于“100”(步骤S1201“Y”)。为了选择对应将要与补偿路径代码132平行执行的特定路径代码的路径,平行执行控制部件1001根据执行图5所示流程图执行路径选择处理(步骤S1202)。作为路径选择处理的结果,将路径IJQ登记到平行执行路径列表。
平行执行控制部件1001判断是否存在包含在执行路径列表(补偿路径和路径IJQ和IJKL)中但不包含在平行执行路径列表(路径IJQ)中的路径(步骤S1203)。
平行执行控制部件1001判断存在包含在执行路径列表中但不包含在平行执行路径列表中的路径(路径IJKL)(步骤S1203“Y”),平行执行控制部件1001取消处理器元件向对应限制路径IJKL的特定路径代码的指派,并且从执行路径列表中删除限制路径IJKL(步骤S1204)。
平行执行控制部件1001将限制路径IJKL添加到限制路径列表(步骤S1205)。
平行执行控制部件1001判断是否限制路径IJKL的执行比值(20%)等于或大于预定值(20%)并且等于或小于路径选择阀值(步骤S1206)。
平行执行控制部件1001判断限制路径的执行比值等于或大于预定值并且等于或小于路径选择阀值(步骤S1206“Y”)。平行执行控制部件1001判断是否在执行路径列表中除了补偿路径和已经确定将处理器元件指派给每对对应该路径和限制路径中的一个的特定路径代码的路径之外的全部路径(路径IJQ)已经经历步骤S1208的处理(步骤S1207)。
由于路径IJQ还没有经历该处理,平行执行控制部件1001做出否定判断(步骤S1207“N”)。平行执行控制部件1001判断是否执行路径列表中的路径IJQ的执行时间和限制路径IJKL的执行时间的总和小于补偿路径的执行时间(步骤S1208)。
平行执行控制部件1001判断路径IJQ的执行时间和限制路径IJKL的执行时间的总和小于补偿路径的执行时间(步骤S1208“Y”)。平行执行控制部件1001将限制路径IJKL和执行路径列表中的路径IJQ的标识登记到存储在存储器300中的合并路径信息1002(步骤S1209)。
平行执行控制部件1001将限制路径IJKL从限制路径列表中删除(步骤S1210)。
平行执行控制部件1001判断是否限制路径列表中没有路径是真实的(步骤S1211)。
平行执行控制部件1001判断限制路径列表中没有路径(步骤S1211“Y”),平行执行控制部件1001重设由执行历史信息301表示的每个路径的执行次数和由总执行次数信息302表示的总执行次数(步骤S1212)。
平行执行控制部件1001执行执行路径列表中包含的全部路径的代码(补偿路径代码132和对应路径IJQ的特定路径代码)(步骤S1213)。
<补充说明>
到目前为止,已经通过几个实施例描述了本发明的程序。然而,不能将本发明限制在这些实施例,而是可以如下修改本发明,例如。
(1)可能由不同于执行补偿路径代码132和每个特定路径代码的目标硬件的另一个硬件处理实施例1的平行执行控制部件131和实施例2的平行执行控制部件1001。
(2)在上述实施例中,补偿路径代码132包括作为由将源程序其自身转换为执行格式产生的代码序列的处理内容代码400。然而,不限于此,处理内容代码400可能是由将对应特定路径代码的路径中包含的指令序列从源程序中去除而产生的程序。
(2)在上述实施例中,相同值用作(a)在如图5中流程图所示的路径选择处理中用于为平行执行选择特定路径代码的路径选择阀值和(b)用于在如图9中流程图所示的检查处理器元件的指派的处理中判断是否取消处理器元件的指派的路径选择阀值。然而,不限于此,在这些处理中可能分别将不同值用作路径选择阀值。例如,在如图5中流程图所示的用于为平行执行选择特定路径代码的路径选择处理中使用的路径选择阀值可以设定为“30%”,而在如图9中流程图所示的检查处理器元件的指派的处理中用于判断是否取消处理器元件的指派的路径选择阀值可以设定为“20%”。以这种布置,例如当每个特定路径代码的执行比值经常在路径选择阀值左右变化时,能够防止经常发生处理器元件的指派和指派取消。
(4)在实施例1中,在检查处理器元件的指派的处理中当每个特定路径代码的执行次数与总执行次数的比值小于路径选择阀值时,取消处理器元件的指派。然而,不限于此,当比值小于路径选择阀值时,可能仅停止每个特定路径代码的执行,但是可能保持处理器元件的指派。以该布置,当已经停止执行的特定路径代码的执行次数与总执行次数的比值变得大于与此前一样的路径选择阀值时,可能忽略将处理器元件指派给该特定路径代码的处理,由此可以在较早的时间开始执行。
(5)在上述实施例1和2中,每当路径实际执行的总次数达到“100”时,检查处理器元件向对应该路径的特定路径代码的指派。然而,不限于此,例如,可以基于累积执行次数执行检查,而不重设对应该特定路径代码的路径的执行次数。作为另一个示例,每当路径实际执行的总次数达到“200”时,可能检查处理器元件向对应该路径的特定路径代码的指派。
(6)在上述实施例1和2中,出于完全识别所执行路径的目的,在补偿路径代码132中提供第一到第六楔形代码401-406。然而,不限于此,例如,可能通过软件开发员的指定仅提供第一到第四楔形代码401-404,以便仅识别具有高执行频率的主路径。
(7)在实施例1中,假定分支指令识别信息303是从楔形代码输出的数字。然而,不限于此,分支指令识别信息303可能是由与所提供的楔形代码的数量相同的字节构成的初步嵌入二进制数据,并且当执行楔形代码时,可能将对应所执行楔形代码的预定字节设定为“1”。
(8)在实施例2中检查处理器元件的指派的处理中,指派一个处理器元件执行限制路径和连续执行路径。然而,当在路径选择处理中选择还没有平行执行的路径时,可能将处理器元件指派给对应所选路径的特定路径代码,取决于目标硬件上可用处理器元件的数量,如实施例1的情况那样。在
(9)实施例2中检查处理器元件的指派的处理中,指派一个处理器元件执行限制路径和连续执行路径。然而,当开始执行程序1000的执行时,在处理器元件指派处理中可能执行相同处理。
(10)在实施例1的程序中,通过OS(操作系统)或相似物实现处理器元件向补偿路径代码和所选特定路径代码的指派。然而,可能不使用OS或相似物实现。例如,实施例1的程序可能具有指派处理器元件的功能。
(11)在程序产生装置100中,代码产生阀值由软件开发员初步指定。然而,不限于此,代码产生阀值可能是初步设定固定值,或者可能是由预定算法获得的可变值。
(12)在实施例2中,将一个处理器元件指派给一对分别对应限制路径和连续执行路径的特定路径代码,并且当不执行对应连续执行路径的特定路径代码时,执行对应限制路径的特定路径代码。
以该结构,通过将一个处理器元件指派给一对分别对应具有高执行频率的连续执行路径和具有低执行频率的限制路径的特定路径代码,能够有效使用处理器元件。同样,当执行特定路径代码中的一个时,可以以高速执行。
然而,不限于一对分别对应限制路径和连续执行路径的特定路径代码,可能将一个处理器元件指派给一对对应限制路径的特定路径代码,或者可能指派给一对对应连续执行路径的特定路径代码。
另外,不限于两个特定路径代码,可能将一个处理器元件指派给三个或多个特定路径代码。
这里需要指出的是,在上述的任何情况中,如实施例2的情况那样,需要以从最高执行频率的次序执行已经指派了处理器元件的特定路径代码,并且需要已经指派了处理器元件的多个特定路径代码的执行时间的总和小于补偿路径代码的执行时间。
该结构使其能够加速在其中执行已经指派了处理器元件的特定路径代码的处理。
虽然已经参考附图以示例的方式完全描述了本发明,需要指出的是对于本领域技术人员,不同改变和修改将是显而易见的。因此,除非这种改变和修改偏离了本发明的范围,应该认为它们包括在本发明中。

Claims (15)

1. 一种用于基于源程序产生由用于由包括多个处理器元件的计算机执行的多个部分构成的执行程序的程序产生装置,该程序产生装置包括:
能够获得源程序的源程序获得部件;
能够基于还源程序获得部件获得的源程序产生用于将多个处理器元件一对一地指派给多个程序部分并且使计算机彼此平行地执行多个程序部分的执行格式的平行执行程序部分的平行执行程序部分产生部件;
能够产生用于使计算机获得多个程序部分中的每一个的执行历史并且使计算机保持所获执行历史的执行历史获得部分的执行历史获得部分产生部件;
能够产生用于使计算机根据所获执行历史判断是否彼此平行地执行多个程序部分的平行执行判断部分的平行执行判断部分产生部件;
能够产生使计算机取决于平行执行判断部分执行对确定是否将多个处理器元件指派给多个程序部分的控制的处理器元件指派控制部分的处理器元件指派控制部分产生部件。
2. 如权利要求1所述的程序产生装置,其中
平行执行程序部分产生部件产生还包括下面内容的平行执行程序部分:
包括分支指令和由分支指令导致的多个执行路径的第一程序部分;
由计算机与第一程序部分平行地重复执行的第二程序部分,其包括具有与不包括分支指令的多个执行路径中确定执行路径的一部分的处理内容相同的处理内容的块,第二程序部分的该块具有小于确定执行路径的该部分的计算机执行次数,使计算机判断是否满足执行确定执行路径的条件的块,以及当判断满足关于重复执行部件的条件时使计算机控制与第一程序部分一起处理下一个重复执行部件的块,其中
执行历史获得部分产生部件产生至少包括在第一程序部分和第二程序部分中的一个的执行历史获得部分。
3. 如权利要求2所述的程序产生装置,其中
执行历史获得部分产生部件产生使计算机计算确定执行路径的执行次数并且作为执行历史保持表示确定执行路径执行次数的信息的执行历史获得部分,而且
平行执行判断部分产生部件产生当由执行历史表示的确定执行路径的执行次数小于预定阀值时使计算机判断不彼此平行地执行第二程序部分和第一程序部分的平行执行判断部分。
4. 如权利要求2所述的程序产生装置,其中
平行执行程序部分产生部件产生还包括下列内容的平行执行程序部分:
由计算机与第一程序部分平行地重复执行的第三程序部分,其包括具有与在不包括分支指令的多个执行路径中作为确定执行路径的第一执行路径之外的第二执行路径的一部分的处理内容相同的处理内容的块,第三程序部分的该块具有小于第二执行路径的该部分的计算机执行时间,使计算机判断是否满足执行第二执行路径的条件的块,当判断满足重复执行部件的条件时使计算机控制与第一程序部分一起处理下一个重复执行部件的块,其中
平行执行判断部分产生部件产生平行执行判断部分,当计算机判断不彼此平行地执行第二程序部分和第一程序部分时,该平行执行判断部分使计算机根据所获执行历史重复判断是否彼此平行地执行第三程序部分和第一程序部分,并且
处理器元件指派控制部分产生使计算机将第一处理器元件指派给第一程序部分并且使计算机执行确定是否将第二处理器元件指派给第三程序部分的控制且彼此平行地执行第一程序部分和第三程序部分的处理器元件指派控制部分,取决于计算机通过平行执行判断部分做出的关于是否彼此平行地执行第一程序部分和第三程序部分的判断结果。
5. 如权利要求2所述的程序产生装置,其中
执行历史获得部分产生部件产生使计算机计算确定执行路径的执行次数并且使计算机作为执行历史保持表示确定执行路径的执行次数的信息的执行历史获得部分,并且
平行执行判断部分产生部件产生当处理器元件指派控制部分使计算机执行确定将第二处理器元件指派给第二程序部分的控制并且彼此平行地执行第二程序部分和第一程序部分时且当由执行历史表示的确定执行路径的执行次数小于预定阀值时使计算机判断不彼此平行地执行第二程序部分和第一程序部分的平行执行判断部分,而且
处理器元件指派控制部分产生部件产生使计算机执行停止彼此平行地执行第二程序部分和第一程序部分的控制的处理器元件指派控制部分。
6. 如权利要求2所述的程序产生装置,其中
执行历史获得部分产生部件产生使计算机计算确定执行路径的执行次数并且使计算机作为执行历史保持表示确定执行路径执行次数的信息的执行历史获得部分,并且
平行执行判断部分产生部件产生当处理器元件指派控制部分使计算机执行确定将第二处理器元件指派给第二程序部分的控制并且使计算机彼此平行地执行第二程序部分和第一程序部分时且当由执行历史表示的确定执行路径的执行次数小于预定阀值时使计算机判断不彼此平行地执行第二程序部分和第一程序部分的平行执行判断部分,并且
处理器元件指派控制部分产生部件产生使计算机执行取消将第二处理器元件指派给第二程序部分的控制的处理器元件指派控制部分。
7. 如权利要求6所述的程序产生装置,其中
平行执行程序部分产生部件产生还包括下面内容的平行执行程序部分:
由计算机与第一程序部分平行地重复执行的第三程序部分,其包括具有与不包括分支指令的多个执行路径中除确定执行路径之外的第二执行路径的一部分的处理内容相同的处理内容的块,第三程序部分的该块具有小于第二执行路径的该部分的执行时间,使计算机判断是否满足执行第二执行路径的条件的块,使计算机当其判断满足重复执行部件的条件时控制与第一程序部分一起处理下一个重复执行部件的块;并且
执行历史获得部分产生部件产生包括在第三程序部分中并且使计算机获得并保持第二执行路径的执行历史的另一个执行历史获得部分,其中
平行执行判断部分产生部件产生当计算机判断不彼此平行地执行第二程序部分和第一程序部分时使计算机根据由包括在第三程序部分中的另一个执行历史获得部分保持的执行历史重复判断是否彼此平行地执行第三程序部分和第一程序部分的平行执行判断部分,并且
处理器元件指派控制部分产生部件产生使计算机将第一处理器元件指派给第一程序部分并使计算机执行确定是否将第二处理器元件指派给第三程序部分且彼此平行地执行第一程序部分和第三程序部分的控制的处理器元件指派控制部分,取决于由计算机通过平行执行判断部分做出的关于是否彼此平行地执行第三程序部分和第一程序部分的判断结果。
8. 如权利要求2所述的程序产生装置,还包括
能够产生用于使计算机获得表示在计算机的多个处理器元件中可指派的可指派处理器元件数量的信息的指派可用数量获得部分的指派可用数量获得部分产生部件,其中
处理器元件指派控制部分产生部件产生还包括下面内容的处理器元件指派控制部分
使计算机计算已经指派的指派处理器元件数量并且使计算机判断是否指派的处理器元件数量小于可指派处理器元件数量的指派可用性判断部分,并且
处理器元件指派控制部分产生部件产生使计算机执行将第二处理器元件指派给第二程序部分的控制且当由平行执行判断部分的判断使计算机判断彼此平行地执行第二程序部分和第一程序部分时且指派处理器元件数量小于可指派处理器元件数量时使计算机彼此平行地执行第一程序部分和第二程序部分的处理器元件指派控制部分。
9. 如权利要求2所述的程序产生装置,还包括
能够产生用于每当平行执行判断部分使计算机执行判断时初始化执行历史的执行历史初始化部分的执行历史初始化部分产生部件。
10.如权利要求2所述的程序产生装置,其中
平行执行程序部分产生部件产生还包括下面内容的平行执行程序部分:
由计算机与第一程序部分平行地重复执行的第三程序部分,其包括:具有与作为多个执行路径中第一执行路径是确定执行路径且不包括分支指令的第一执行路径的一部分的第一非分支路径的处理内容相同的处理内容的第一块,第三程序部分的该第一块具有小于第一非分支部分的计算机执行时间,使计算机判断是否满足执行第一执行路径的条件的块,具有与作为多个执行路径中第一执行路径是除第一执行路径之外的另一个确定执行路径且不包括分支指令的第二执行路径的一部分的第二非分支路径的处理内容相同的处理内容的第二块,第三程序部分的该第二块具有小于第二非分支部分的计算机执行时间,使计算机当其判断满足重复执行部件的执行第一执行路径的条件时控制与第一程序部分一起处理下一个重复执行部件并且使计算机当其判断不满足条件时控制判断是否满足执行第二执行路径的条件的块,使计算机当其判断满足重复执行部件的执行第二执行路径的条件时控制与第一程序部分一起处理下一个重复执行部件的块,其中
平行执行判断部分产生部件产生使计算机根据所获执行历史重复判断是否彼此平行地执行第三程序部分和第一程序部分的平行执行判断部分,并且
处理器元件指派控制部分产生部件产生使计算机将第一处理器元件指派给第一程序部分且使计算机执行确定是否将第二处理器元件指派给第三程序部分并且彼此平行地执行第一程序部分和第三程序部分的控制的处理器元件指派控制部分,取决于由计算机通过平行执行判断部分做出的关于是否彼此平行地执行第三程序部分和第一程序部分的判断结果。
11. 如权利要求10所述的程序产生装置,其中
平行执行程序部分产生部件产生当由平行执行判断部分的判断使计算机判断不彼此平行地执行第二程序部分和第一程序部分时将第三程序部分中包括的第二执行路径设定为第二程序部分中的确定执行路径的部分。
12. 如权利要求10所述的程序产生装置,其中
执行历史获得部分产生部件产生包括在第三程序部分中的使计算机计算第一执行路径的执行次数且使计算机计算第二执行路径的执行次数并且使计算机作为执行历史保持第一和第二执行路径的执行次数的执行历史获得部分,并且
平行执行程序部分产生部件产生在其中第一执行路径的执行次数大于第二执行路径的执行次数的第三程序部分。
13. 一种用于基于包括分支指令和由分支指令引起的多个执行路径的源程序产生用于由包括多个处理器元件的计算机执行的执行程序的程序产生方法,该程序产生方法包括下列步骤:
基于源程序的多个执行路径中变化的全部指令产生执行格式的第一程序部分,保持多个执行路径之间的关系;
产生与第一程序部分平行执行的第二程序部分,其包括:具有与不包括分支指令的多个执行路径中确定执行路径的一部分的处理内容相同的处理内容的块,第二程序部分的该块具有小于确定执行路径的该部分的计算机执行时间,使计算机判断是否满足执行确定执行路径的条件的块,以及当判断满足关于重复执行部件的条件时控制与第一程序部分一起处理下一个重复执行部件的块;
产生至少包括在第一程序部分和第二程序部分中的一个的并且获得并保持每个执行路径的执行历史的执行历史获得部分;
产生根据执行历史判断是否彼此平行地执行第二程序部分和第一程序部分的平行执行判断部分;以及
产生将第一处理器元件指派给第一程序部分并且执行对确定是否将第二处理器元件指派给第二程序部分且彼此平行地执行第一程序部分和第二程序部分的控制的处理器元件指派控制部分,取决于由平行执行判断部分做出的关于是否彼此平行地执行第二程序部分和第一程序部分的判断结果。
14. 一种用于执行如权利要求2所述的程序产生装置产生的程序的程序执行装置,该程序执行装置包括:
用于获得程序的获得部件;以及
具有多个处理器元件且通过指派多个处理器元件执行所获程序的执行部件,其中
基于当执行程序时接收指派处理器元件的请求,执行部件指派当前没有指派的处理器元件。
15. 一种在其上记录用于由包括多个处理器元件的计算机执行的程序的计算机可读记录介质,该程序包括:
包括分支指令和由分支指令引起的多个执行路径的第一程序部分;
与第一程序部分平行地重复执行的第二程序部分,其包括:具有与不包括分支指令的多个执行路径中确定执行路径的一部分的处理内容相同的处理内容的块,第二程序部分的该块具有小于确定执行路径的该部分的计算机执行时间,使计算机判断是否满足执行确定执行路径的条件的块,以及当判断满足关于重复执行部件的条件时控制与第一程序部分一起处理下一个重复执行部件的块;
至少包括在第一程序部分和第二程序部分中的一个的并且获得并保持每个执行路径的执行历史的执行历史获得部分;
根据执行历史判断是否彼此平行地执行第二程序部分和第一程序部分的平行执行判断部分;以及
将第一处理器元件指派给第一程序部分并且执行对确定是否将第二处理器元件指派给第二程序部分且彼此平行地执行第一程序部分和第二程序部分的控制的处理器元件指派控制部分,取决于由平行执行判断部分做出的关于是否彼此平行地执行第二程序部分和第一程序部分的判断结果。
CNA2007103022680A 2006-12-22 2007-12-24 产生优化程序的装置和方法、程序执行装置及记录介质 Pending CN101246433A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2006346715A JP2008158806A (ja) 2006-12-22 2006-12-22 複数プロセッサエレメントを備えるプロセッサ用プログラム及びそのプログラムの生成方法及び生成装置
JP2006346715 2006-12-22

Publications (1)

Publication Number Publication Date
CN101246433A true CN101246433A (zh) 2008-08-20

Family

ID=39544798

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2007103022680A Pending CN101246433A (zh) 2006-12-22 2007-12-24 产生优化程序的装置和方法、程序执行装置及记录介质

Country Status (3)

Country Link
US (1) US20080155496A1 (zh)
JP (1) JP2008158806A (zh)
CN (1) CN101246433A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105144107A (zh) * 2013-02-18 2015-12-09 混合型服务器技术股份有限公司 用于运行可执行代码的方法、处理模块及系统

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8020930B2 (en) 2005-07-22 2011-09-20 Ts Tech Co., Ltd. Coupling mechanism for headrest of vehicle seat
JP2010039536A (ja) * 2008-07-31 2010-02-18 Panasonic Corp プログラム変換装置、プログラム変換方法およびプログラム変換プログラム
JP5880542B2 (ja) * 2011-03-16 2016-03-09 富士通株式会社 マルチコアプロセッサシステムおよびスケジューリング方法
US8997060B2 (en) * 2013-07-31 2015-03-31 International Business Machines Corporation Parallel program analysis and branch prediction
US10387152B2 (en) * 2017-07-06 2019-08-20 Arm Limited Selecting branch instruction execution paths based on previous branch path performance
JPWO2021210099A1 (zh) * 2020-04-15 2021-10-21

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5142634A (en) * 1989-02-03 1992-08-25 Digital Equipment Corporation Branch prediction
JP2921190B2 (ja) * 1991-07-25 1999-07-19 日本電気株式会社 並列実行方式
JPH0744397A (ja) * 1993-07-30 1995-02-14 Nec Corp プログラム処理高速化方式
JPH0784779A (ja) * 1993-09-09 1995-03-31 Toshiba Corp プログラム作成方法及びその装置
US6170083B1 (en) * 1997-11-12 2001-01-02 Intel Corporation Method for performing dynamic optimization of computer code
US6070009A (en) * 1997-11-26 2000-05-30 Digital Equipment Corporation Method for estimating execution rates of program execution paths
US6189141B1 (en) * 1998-05-04 2001-02-13 Hewlett-Packard Company Control path evaluating trace designator with dynamically adjustable thresholds for activation of tracing for high (hot) activity and low (cold) activity of flow control
JP2000047887A (ja) * 1998-07-30 2000-02-18 Toshiba Corp 投機的マルチスレッド処理方法および投機的マルチスレッド処理装置
JP3292189B2 (ja) * 1999-11-17 2002-06-17 日本電気株式会社 プロセッサ性能データ収集装置及び該装置を利用した最適化方法
JP4783005B2 (ja) * 2004-11-25 2011-09-28 パナソニック株式会社 プログラム変換装置、プログラム変換実行装置およびプログラム変換方法、プログラム変換実行方法。

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105144107A (zh) * 2013-02-18 2015-12-09 混合型服务器技术股份有限公司 用于运行可执行代码的方法、处理模块及系统

Also Published As

Publication number Publication date
JP2008158806A (ja) 2008-07-10
US20080155496A1 (en) 2008-06-26

Similar Documents

Publication Publication Date Title
CN101246433A (zh) 产生优化程序的装置和方法、程序执行装置及记录介质
CN100562849C (zh) 程序转换器件及方法、程序转换执行器件及转换执行方法
US20210182036A1 (en) Hardware platform specific operator fusion in machine learning
CN102163143B (zh) 一种实现值关联间接跳转预测的方法
US20100235819A1 (en) One-pass compilation of virtual instructions
CN101918917B (zh) 基于块计数的过程布局和拆分
CN103329132A (zh) 架构优化器
CN109324905B (zh) 数据库操作方法、装置、电子设备及存储介质
CN100382028C (zh) 中间代码预处理、执行装置及执行系统及计算机程序产品
US20170017475A1 (en) Information processing apparatus and compile method
US5596732A (en) Method of optimizing instruction sequence of compiler
WO2014142704A1 (en) Methods and apparatus to compile instructions for a vector of instruction pointers processor architecture
CN102156636B (zh) 一种实现值关联间接跳转预测的装置
CN115185818A (zh) 一种基于二进制集合的程序依赖簇检测方法
CN102724506A (zh) Jpeg_ls常规编码硬件实现方法
CN115167868B (zh) 代码编译方法、装置、设备及计算机存储介质
US9141357B2 (en) Computer-readable recording medium, compiling method, and information processing apparatus
CN115860066A (zh) 一种基于批处理的神经网络推理流水线复用的方法
WO2018066073A1 (ja) 情報処理装置、情報処理方法及び情報処理プログラム
CN114281339A (zh) 程序编译方法、编译器、设备及存储介质
Grabis On-Premise or Cloud Enterprise Application Deployment: Fit-Gap Perspective
CN111459576B (zh) 一种数据分析处理系统和模型运行方法
JP4219706B2 (ja) システムlsi設計支援装置及び設計支援方法
US11169814B2 (en) Information processing method and computer-readable recording medium having stored therein optimization program
CN116743670B (zh) 一种基于编码预制的同类信息快速自检查方法及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20080820