CN1172240C - 多处理器系统及程序最佳化方法 - Google Patents

多处理器系统及程序最佳化方法 Download PDF

Info

Publication number
CN1172240C
CN1172240C CNB02142103XA CN02142103A CN1172240C CN 1172240 C CN1172240 C CN 1172240C CN B02142103X A CNB02142103X A CN B02142103XA CN 02142103 A CN02142103 A CN 02142103A CN 1172240 C CN1172240 C CN 1172240C
Authority
CN
China
Prior art keywords
processor
program
instruction
control mode
multicomputer system
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.)
Expired - Fee Related
Application number
CNB02142103XA
Other languages
English (en)
Other versions
CN1407455A (zh
Inventor
�G���Һ�
笹川幸宏
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 CN1407455A publication Critical patent/CN1407455A/zh
Application granted granted Critical
Publication of CN1172240C publication Critical patent/CN1172240C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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 or 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • 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 or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

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)
  • Multi Processors (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

一种多处理器系统,其中多个处理器(10、20)分别把表示VLIW模式或多线程模式的程序控制模式的信息保持在程序控制装置(13、23)的程序同步标识(13a、23a)中。使成为主处理器的处理器(10)进行系统全体的程序控制,并且,当程序同步标识(13a)的信息被更新后,把该更新后的信息通知给保存程序的各个指令的指令保存部(30)。本发明能够使多处理器系统适应多样化的处理,可提高全体系统的处理效率。

Description

多处理器系统及程序最佳化方法
技术领域
本发明涉及在多处理器系统内的程序控制技术。
背景技术
图17是表示以往的一例使多个运算装置及寄存器进行并行动作的处理器系统的构成图。如图17(a)所示为日本国公开公报特开平4-265970公开的多处理器系统,在该系统中一般使各个处理器110、120的线程(处理单位)进行独立的动作。因此,在并行执行多个独立的线程的应用情况下,可实现高的处理能力。
另一方面,如图17(b)所示为日本国公开公报特开平4-167027公开的VLIW(Very Long Instruction Word)系统,在该系统中,在单一的指令码内记述有控制多个运算装置及寄存器的文件,从而具有高的单一线程的处理能力。
关于上述的系统的孰优孰劣,由于受应用程序的限制,所以理想的是对应具有应用程序的线程的特点而采用相应的系统。
但是,在最近的组合系统中,由于需要同时进行各种处理,所以很难判断出究竟是采用哪种处理系统最好。例如,在同时需要为了实现高速的实时处理而要求具有非常高的处理能力的单一线程的处理和不需要非常高的处理能力的由多个线程实施并行处理的情况下,很难说采用哪种处理系统为最佳。因此,在一般的情况下,对所采用的处理系统的处理能力都设定有一定的余量,然而这样却极大地防碍了系统的电力低消耗化和高速化的实现。
发明内容
为了解决上述的问题,本发明的目的是,实现一种可对应多样化处理的多处理器系统,提高全体系统的处理效率。
为了解决上述的问题,本发明之1所提出的解决方案是作为一种具有多个处理器和保存程序的各个指令的指令存储部的多处理器系统,具有通过单一的程序控制使所述多个处理器动作的第1程序控制模式和通过各自独立的多个程序控制分别使所述多个处理器动作的第2程序控制模式,所述多个处理器分别具有包括程序同步标识的程序控制装置,在所述程序同步标识中保持有表示所述第1及第2程序控制模式中的任意一种的程序同步信息,作为所述多个处理器之一的主处理器进行该多处理器系统全体的程序控制,并且在更新了所述程序同步信息后,把该更新后的程序同步信息通知给所述指令存储部。
根据本发明之1,在具有多个处理器的多处理器系统中,可在通过单一的程序控制使所述多个处理器动作的第1程序控制模式与通过各自独立的多个程序控制分别使所述多个处理器动作的第2程序控制模式之间进行适当切换的同时,执行被保存在指令存储部中的程序。因此,可在提高系统全体的处理效率的同时有效地利用各个处理器的资源,所以,可同时实现低电力消耗和高速的处理。
另外,本发明之2是在本发明之1所述的多处理器系统中,使所述第1程序控制模式为VLIW模式,所述第2程序控制系统为多线程模式。
另外,本发明之3是在本发明之1所述的多处理器系统中,使所述指令存储部具有与所述多个处理器数目相同的指令存储器,并且,当由所述主处理器通知的程序同步信息表示为所述第1程序控制模式时,使所述各个指令存储器作为单一的存储体动作,把从所述主处理器输出的指令地址输入到所述各个指令存储器中,并输出单一的指令数据,而在该程序同步信息表示为所述第2程序控制模式时,使所述各个指令存储器作为多个独立的存储体动作,把从所述各个处理器输出的指令地址输入到所述各个指令存储器,并输出多个指令数据。
另外,本发明之4是在本发明之1所述的多处理器系统中,还包括具有指令集并先把从所述指令存储部输出的指令数据存入所述指令集,然后再供给到所述多个处理器的指令供给部,所述指令供给部接收从所述主处理器发来的所述程序同步信息的通知,当该程序同步信息表示为所述第1程序控制模式时,把所述指令集作为对应单一的指令数据的指令集而使用,而当表示为所述第2程序控制模式时,把所述指令集作为对应多个指令数据的指令集而使用。
本发明之5是在本发明之1所述的多处理器系统中,使所述主处理器在所述第1程序控制模式下,在接收到具有多个地址数据的第1分支指令码时,更新所述程序同步信息,使其表示所述第2程序同步控制模式,所述多个处理器分别在所述第2程序控制模式下,在接收到具有1个地址数据的第2分支指令码时,更新所述程序同步信息,使其表示所述第1程序同步控制模式。
另外,本发明之6的多处理器系统的解决方案,是一种具有至少包括第1及第2处理器的多处理器系统,在所述第1处理器中包括传达所述第2处理器的内部主要构成部分的输出的信息传达装置,所述第1处理器在接收到具有指定所述第2处理器的内部主要构成部分的操作数的指令码时,通过所述信息传达装置,使用所述第2处理器的所述内部主要构成部分的输出,执行按照该指令码的处理。
根据本发明之6,通过进行组合多个处理器的主要构成的组合处理,可提高运算处理能力。
另外,本发明之7提出的解决方案是一种具有多个处理器的多处理器系统,在所述多个处理器中至少有1个具有包括存储指令码的指令寄存器的,把输入到该处理器的指令码与被存储在所述指令寄存器中的指令码进行比较,检测出其是否一致的指令触发信号生成装置,并且,在接收到触发信号设定指令时,把成为触发信号的指令码存入所述寄存器中,所述指令触发信号生成装置在检测出指令码的一致时,把触发信号通知给其他的处理器。
根据本发明之7,通过进行组合其他处理器的处理状况的组合处理,可提高程序控制处理能力。
另外,本发明之8提出的解决方案是一种在具有多个处理器,并且,具有通过单一的程序控制使所述多个处理器动作的第1程序控制模式和通过各自独立的多个程序控制分别使所述多个处理器动作的第2程序控制模式的多处理器系统中能够执行程序的最佳化方法,包括对于所述程序的各个模块检测出与其他模块的依存关系的第1步骤、检测出所述程序的各个模块的处理量的第2步骤、使用检测出的依存关系和处理量,判定以所述第1及第2程序控制模式中的哪一种模式执行各个模块的第3步骤。
另外,本发明之9是在本发明之8的程序最佳化方法中,还包括使用在所述步骤3得出的判定结果,在由所述多处理系统所具有的指令存储器构成的指令存储器地址空间内分配各个模块的指令码的步骤。
另外,本发明之10提出的解决方案是,一种在具有多个处理器,并且具有通过单一的程序控制使所述多个处理器动作的第1程序控制模式和通过各自独立的多个程序控制分别使所述多个处理器动作的第2程序控制模式的多处理器系统中能够执行程序的最佳化方法,其特征在于:包括使用记述有对应所述多存储器系统中所具有的各个处理器的对应各种指令种类的电力消耗的电力消耗表,求出各个模块的峰值电力和平均电力的第1步骤、参照求出的各个模块的峰值电力和平均电力,判定以所述第1及第2程序控制模式中的哪一种模式执行各个模块的第2步骤。
附图说明
图1是示意表示本发明实施例1的多处理器系统的构成的方框图。
图2是示意表示由多个指令存储器构成的指令存储器地址空间的图。
图3示意表示在每个程序控制模式下的存储器存取动作的图。
图4是表示使用指令码的程序控制模式的切换的图。
图5(a)是表示关于程序同步标志的处理器控制顺序的时序流程图,(b)是表示处理器之间的同步动作的时序流程图。
图6是示意表示本发明实施例1的多处理器系统的动作的时序流程图。
图7是表示设置在指令供给部内的指令提示电路的动作的图。
图8是表示由寄存器执行程序控制模式切换的情况下的构成的图。
图9是表示本发明实施例2的多处理器系统的主要部分的构成的图。
图10(a)是表示本发明实施例3的多处理器系统的主要部分的构成的图,(b)是一在(a)的构成中的指令记述实例。
图11是示意表示本发明实施例4的程序最佳化装置的构成的方框图。
图12(a)是表示检测出的依赖关系及处理量的一例,(b)是表示模式判断结果的图。
图13表示判定各个模块的程序控制模式的程序的一例。
图14是示意表示以程序为对象的指令存储器的分配的图。
图15是表示本发明实施例4的程序最佳化的其他构成例的方框图。
图16(a)是电力消耗表内容的一例,(b)说明参照电力消耗的程序控制模式判定的图。
图17是以往的多处理器系统的构成图。
图中:10、10A-处理器(多功能处理器),13-程序控制装置,13a-程序同步标识,20、20A-处理器,23-程序控制装置,23a-程序同步标识,AD1、AD2-指令地址,30-指令记忆部,33-指令存储器,34-指令存储器,40-指令供给部,41-指令集,50-处理器(第1处理器),60-处理器(第2处理器),51、61-运算装置,52、62-寄存器,56、66-通用总线(信息传达机构),70、80-处理器,71、81-指令触发信号发生装置,91-依赖关系检测装置,92-处理量检测装置,93-程序控制判定装置,94-指令存储器分配装置,101-电力消耗推断装置,103-程序控制判断装置。
具体实施方式
下面,结合附图对本发明的实施例进行说明。
(实施例1)
图1是示意表示本发明实施例1的多处理器系统的构成的方框图。在图1中,多个处理器10、20(处理器A、B)与指令记忆部30及指令供给装置40构成相互的连接。处理器10、20分别具有指令解码11、21、指令地址发生装置12、22、程序控制装置13、23、指令触发信号发生装置14、24、运算装置15、25及寄存器16、26。另外,指令记忆部30具有存储器控制装置31、指令地址供给装置32及多个指令存储器33、34(指令存储器A、B)。
图1所示的多功能处理系统具有通过对单一的处理器进行单一的程序控制使多个处理器10、20动作的第1程序控制模式和通过多个独立的程序控制使多个处理器10、20动作的第2程序控制模式。在本实施例中,把VLIW模式作为第1程序控制模式,把多线程模式作为第2程序控制模式。
在各个处理器10、20中,程序控制装置13、23分别具有程序同步标识13a、23a,在该程序同步标识13a、23a中,保存有表示VLIW模式或多线程模式的程序同步信息。而且,处理器10在VLIW模式时,成为执行此多处理器系统全体的程序控制和指令的主处理器,处理器20为只执行程序控制指令的从属处理器。成为主处理器的处理器10在更新程序同步信息时,把该更新的程序同步信息通知给指令记忆部30和指令供给部40。
指令存储器33、34中存储有该多处理器系统执行处理的程序的各个指令。从处理器10内的的指令地址发生装置12输出第1指令地址AD1,从处理器20内的的指令地址发生装置22输出第2指令地址AD2。该第1及第2指令地址AD1、AD2被输入到指令记忆部30的指令地址供给装置32。而且,指令地址供给装置32向指令存储器33、34攻击指令地址,从而可从指令存储器33、34中读出程序的各个指令。
图2是示意表示由多个指令存储器33、34构成的指令存储器地址空间的图。如图2所示,在对应VLIW模式的VLIW区域R1中,由多个指令存储器33、34构成单一指令存储器地址空间,另一方面,在对应多线程模式的多线程区域R2、、R3中,多个指令存储器33、34分别构成独立的多个指令存储器地址空间。
图3示意表示在每个程序控制模式下的存储器存取动作的图。首先,在VLIW模式中,如图3(a)所示,向指令存储器33、34供给通用的地址(从成为主处理器的处理器10输出的第1指令地址AD1)。从指令存储器33、34输出的数据通过合成作为单一的指令数据而输出。即,在VLIW模式下,指令存储器33、34作为具有相当于存储器个数的数据长度的逻辑存储体进行动作。
另一方面,如图3(b)所示,在多线程模式下,向指令存储器33供给第1指令地址AD1,而向第2指令存储器34供给第2指令地址AD2。而且,从指令存储器33、34输出的数据分别被直接作为多个指令数据输出。即,在多线程模式下,是进行作为把数据分别独立输出的逻辑存储器的动作。
指令地址供给装置32根据存储控制装置31的指示,进行如图3所示存储器存取动作的切换。成为主处理器的处理器10在更新了被保存在程序同步标识13中的程序同步信息时,把该被更新的程序同步信息通知给指令记忆部30内的存储器控制装置31。存储器控制装置31在接收到该通知后,对程序控制模式的切换进行检测,指示指令地址供给装置32进行存储器存取动作的切换。
在本实施例中,是通过施加特定的指令码进行程序控制模式的切换。图4是表示在实施例4中使用指令码的程序控制模式的切换的图,图中(a)表示从VLIW模式切换到多线程模式的切换。(b)表示从多线程模式到VLIW模式的切换。如图4所示,在本多处理器系统中,具有作为用于从VLIW模式转换至多线程模式的指令的fork指令,和作为用于从多线程模式转换至VLIW模式的指令的join指令。作为第1分支指令码的fork指令具有多个地址数据adr1、adr2,作为指令操作数可指定各个处理器10、20分别所在分支的目的地址。另外,作为第2分支指令码的join指令具有1个地址数据adr,作为指令操作数可指定成为主处理器的处理器10所在分支的目的地址。
如图4(a)所示,本多处理器系统当在VLIW模式下施加fork指令时,在此被指定的地址adr1、adr2分别被设置在指令地址发生装置12、22中,与此同时,程序控制装置13、23把程序控制模式转换为多线程模式。而且,指令地址供给装置32把从指令地址发生装置12、22输出的各个地址adr1、adr2分别供给到指令存储器33、34。
另外,如图4(b)所示,本多处理器系统当在多线程模式下施加join指令时,于是被指定的地址adr被设置在成为主处理器的处理器10的指令地址发生装置12中,与此同时,程序控制装置13把程序控制模式转换为VLIW模式。即,更新程序同步标识13a所保持的程序同步信息,使其表示VLIW模式,并且通知该其他的处理器20。指令地址供给装置32把从指令地址发生装置12输出的地址adr分别供给到指令存储器33、34。
通过这样的动作,可实现从VLIW模式到多线程模式、或从多线程模式到VLIW模式的转换。
另外,在本实施例中,通过各个处理器10、20的程序控制装置13、23所具有的程序同步标识13a、23a,可确保在程序控制模式转换中的处理器之间的控制同步。另外,也可以构成由与同步标识13a、23a连动的标识确保控制同步。
图5(a)是表示关于程序同步标志的处理器控制顺序的时序流程图。如图5(a)所示,当各个处理器10、20结束多线程模式(S11)后,首先更新程序同步标识(S12)。通过该更新,向其他的处理器通知程序同步信息。然后,确认是否有从其他的处理器发送来的程序同步信息的通知(S13)。在确认有从其他的处理器发送来的程序同步信息的通知时,开始VLIW模式的动作(S14)。
图5(b)是表示根据图5(a)所示的处理器控制顺序的处理器之间的同步动作的时序流程图。如同5(b)所示,首先,使处理器10、20在多线程模式下进行动作。然后使处理器20在先结束多线程模式。处理器20更新程序同步标识,并向处理器10通知程序同步信息。然后处理器20在接收到从处理器10发来的程序同步信息的通知之前处于动作待机状态。
然后在处理器10结束了多线程模式后,更新程序同步标识。此时由于处理器10已接收到从处理器20发送来的程序同步信息的通知,所以转换至VLIW模式。另一方面,处理器20由于接收到处理器10的程序同步信息通知,所以与处理器10同时转移到VLIW模式。然后各个处理器10、20进行VLIW模式下的动作。通过这样的动作,可确保程序控制模式转换时的控制同步。
图6是示意表示本发明实施例1的多处理器系统的动作的时序流程图。在施加如图6(a)所示的程序时,首先如图6(b)所示地切换程序控制模式,然后在执行。例如,模块A在VLIW模式下执行,另外,对于模块B和模块C在多线程模式下有处理器A(处理器10)及处理器B(处理器20)分别执行。
下面,说明在VLIW模式及多线程模式下的指令供给。如图1所示,指令供给部40具有指令集41。该指令集41即使在指令长度可变的情况下,也可以用于通过1个单位的指令读取动作向处理器供给全部的指令数据。
图7是表示指令提示电路41的动作的图,(a)表示在VLIW模式下,(b)表示在多线程模式下)。指令提示电路41大致分为4个工序,工序1:向多个处理器供给指令,工序2:转移残留指令数据,工序3:新建指令数据的读取,工序4:指令数据的合并。
其中,在VLIW时与多线程模式时的指令提示电路动作的不同之处是指令码的边界和指令的储存方法。
如图(a)所示,在VLIW模式下的指令码的边界对应供给各个处理器的指令码的长度而不同。在工序1中,在把指令数据供给到各个处理器10、20后,在工序2中,把残留的指令数据移动到边界的前边。在VLIW模式下只有1个边界前边,与指令集41的前边相同。而且,把在工序3中从多个存储器33、34读取出的数据在工序4中与残留的指令数据合并。
另一方面,如图7(b)所示,在多线程模式下的指令码边界与供给到各个处理器10、20的指令码长度无关,保持一定,等于相当于指令存储器总线宽度的2倍的位置。在工序1中,把指令数据供给到各个处理器10、20,然后在工序2中,把残留的指令数据移动到边界的前端。由于在多线程模式下存在多个边界前端,所以把残留指令数据分散地配置在指令集41内。然后把在工序3中从多个存储器33、34读取出的数据在工序4中分别与残留的指令数据合并。通过这样的指令集41的动作,在VLIW模式和多线程模式下可实现长度可变的指令的动作。
另外,程序控制模式的切换也可以不依赖于指令码,而通过其他的方法实现。图8是表示由寄存器执行程序控制模式切换的情况下的构成的图。在图8的例中,处理器10A及处理器20A分别具有用于保持在模式转换时的分支地址的地址寄存器17、27、和用于保持程序控制模式信息的模式寄存器18、28。
(实施例2)
图9是表示本发明实施例2的多处理器系统的主要部分的构成的图。在图9中,作为第1处理器的处理器50及作为第2处理器的处理器60分别具有运算装置51、61、寄存器52、62、选择器53、63、共用寄存器(vr)54、64、共用控制装置55、65、共用总线56、66及转送/运算总线57、67。作为处理器50的内部主要构成的共用寄存器54经过作为信息传送机构的共用总线66连接到处理器60的转送/运算总线67,作为处理器60的内部主要构成的共用寄存器64经过作为信息传送机构的共用总线56连接到处理器50的转送/运算总线57。
在处理器50中,由选择器53选择运算装置51的输出及寄存器52的输出,并输入到共用寄存器54。选择器53在共用控制装置55的控制下,决定是选择运算装置51还是选择寄存器52。另外,在处理器60中,由选择器63选择运算装置61的输出及寄存器62的输出,并输入到共用寄存器64。选择器63在共用控制装置65的控制下,决定是选择运算装置61还是选择寄存器62。
对于图9所示的多处理器系统可设定如下的指令表述。
opecode1 dst1,src1 opecode2 dst2,src2
另外,
“opecode1”:处理器50的指令
“opecode2”:处理器60的指令
“dst1”:处理器50的转送目的地址
“dst2”:处理器60的转送目的地址
“src1”:处理器50的转送源地址
“src2”:处理器60的转送源地址
对于这样的指令的表述构成如下的对应关系:
当dst1=vr时,把处理器50的共用寄存器54作为转送目的地;
当src1=vr时,把处理器60的共用寄存器64作为转送源;
当dst1=vr时,把处理器60的共用寄存器64作为转送目的地;
当src2=vr时,把处理器50的共用寄存器54作为转送源。
即,处理器50在接收到具有指定处理器60的共用寄存器64的操作数的指令码时,通过共用总线56,并使用处理器60的共用寄存器64的输出,执行该指令码所指定的处理。而且,同样,处理器60在接收到具有指定处理器50的共用寄存器54的操作数的指令码时,通过共用总线66,并使用处理器50的共用寄存器54的输出,执行该指令码所指定的处理。
通过这样的动作可提高在1个处理步骤可实现的运算的自由度,从而可提高处理能力。作为运算式的实例,例如有把像Y=A+B与B=C×D这样的运算式组合而成的Y=A+(C×D)。可通过假设B=rr来实现。
另外,在图9所示的构成中,是分别对应各个处理器50、60设置共用寄存器54、64,但也可以不设置共用寄存器,而把各个选择器53、63直接连接到共用总线。在这样的情况下,作为指令码的操作数可直接指定对方的处理器的运算装置和寄存器。
另外,关于共用总线56、66只要是能够进行信号的传送,也可以使用专用信号线以外的信息传送装置。
(实施例3)
图10(a)是表示本发明实施例3的多处理器系统的主要部分的构成的图。在图10(a)中,处理器70具有包括指令寄存器72及比较器73的指令触发信号发生装置71和指令触发信号检测装置75。而且处理器80同样具有包括指令寄存器82及比较器83的指令触发信号发生装置81和指令触发信号检测装置85。在处理器70的指令触发信号发生装置71与处理器80的指令触发信号检测装置85之间构成第1触发信号通信总线74,而且,在处理器80的指令触发信号发生装置81与处理器70的指令触发信号检测装置75之间构成第2触发信号通信总线84。
在处理器70中指令触发信号发生装置71通过比较器73对输入到处理器70的指令码与存储器指令寄存器72中的指令码进行比较,检测两者是否一致。而且当检测为一致时,输出触发信号。从指令触发信号发生装置71输出的触发信号通过第1触发信号通信总线74被通知给处理器80的指令触发信号检测装置85。指令触发信号检测装置85接受触发信号的通知,输出插入控制信号,这样,在处理器80中发生插入。
同样,在处理器80中指令触发信号发生装置81通过比较器83对输入到处理器80的指令码与存储器指令寄存器82中的指令码进行比较,检测两者是否一致。而且当检测为一致时,输出触发信号。从指令触发信号发生装置81输出的触发信号通过第2触发信号通信总线84被通知给处理器70的指令触发信号检测装置75。指令触发信号检测装置75接受触发信号的通知,输出插入控制信号,这样,在处理器70中发生插入。
图10(b)是在图10(a)所示的多处理器系统中的指令记述实例。其中假设处理器70及处理器80都是在多线程模式下动作。而且,设定由处理器70执行图10(b)的汇编源程序。
其中“trig”记述语句为把在其后记述的指令设定为触发信号的指令。被设定为触发的指令被登录到指令寄存器72中。另外,“untrig”记述语句为解除触发设定的指令。即,在图10(b)中,通过“trig”把下一个指令“add r0、r1”登录到指令寄存器72,并被设定为触发指令。然后,处理器70顺序地执行汇编程序,当执行了“add r0、r1”的指令后,从指令触发信号发生装置71输出触发信号。该触发信号通过第1触发信号通信总线74被通知给处理器80的指令触发信号检测装置85。然后,在不需要触发信号的阶段,通过“untrig”使处理器70解除触发信号的设定。通过这样的一系列的动作,可在本实施例中可实现对应程序执行内容的同步。
一般在处理器之间进行这样的触发信号交换的情况下,可通过存储器和寄存器之间的通信而实施,但在这样的情况下,为了传递触发信息,在执行程序的过程中必须要写入存储器或寄存器。而本实施例由于在执行程序的过程中,被执行的指令本身即为触发信息,因此不需要进行写入处理,并可提高实现同步的动作效率。
(实施例4)
本发明实施例4是关于能够在实施例1所述的多处理器系统中执行的程序的优化方法。
图11是示意表示本发明实施例4的程序最佳化装置的构成的方框图。在图11中,构成应用程序的各个模块的源代码90被输入到依存关系检测装置91、处理量检测装置92及编译器95。依存关系检测装置91对模块源代码90进行分析,检测程序的各个模块与其他的模块的依存关系。另外,处理量检测装置92对模块源代码90进行分析,并检测程序的各个模块的处理量。
图12(a)是说明依存关系及处理量的检测的图。首先,设定处理对象的程序包括3个模块,即模块A、模块B及模块C。模块A的处理量大于模块B及模块C,模块B与模块A之间存在数据的依存关系(自变量、返回值)。依存关系检测装置91检测出该模块A与模块B的依存关系,处理量检测装置92检测出模块A、模块B及模块C的处理量。
被检测出的依存信息及处理量信息被供给给程序控制判定装置93。程序控制判定装置93根据被供给的依存信息及处理量信息,决定使各个模块是在VLIW模式下还是在多线程模式下动作,进行编码器95及汇编程序96的动作模式的控制。
图12(b)是表示判断结果的图例。处理量大的模块A在VLIW模式下动作,没有依存关系的模块C通过多线程模式与模块B进行并列动作。编码器95根据该动作模式控制,对模块源代码90进行编码,向模块单位插入向VLIW模式或多线程模式转移的模式转移代码,并把汇编码数据供给到汇编程序96。汇编程序96也是根据程序控制判定装置93的动作模式控制,向模块单位插入或移动向VLIW模式或多线程模式转移的模式转移代码。在本实施例中,由编码器95、汇编程序96双方执行模式转移代码的插入,其目的是在多个阶段形成最佳化。另外,被插入的动作模式转移代码最好是在实施例1所述的fork指令及join指令,或者是可实现同样动作的代码。
图13表示从编译器95输出的一例程序。在图13的程序中,对各个模块的程序控制模式已经进行了判定,并作为动作模式转移代码而插入了fork指令及join指令。
然后,程序控制判定装置93把动作模式信息供给给指令存储器分配装置94。指令存储器分配装置94把各个模块分配到指令存储器地址空间中的VLIW区域及多线程区域,并实施连接程序97的地址空间控制。
图14是示意表示在以图13的程序为对象的情况下的指令存储器的分配的图。如图14所示,首先把各个模块配置到假设的存储器中。把VLIW模式下执行的模块A、D配置在VLIW区域的假设存储器内,把多线程模式下执行的模块B、C、E配置在各个多线程区域内。然后进行实际地址的变换。即,对于VLIW区域,把指令存储器33、34假定为单一的存储器进行地址的变换,对于多线程区域对分别与其对应的指令存储器33、34进行地址的变换。
然后,连接程序97对于从汇编程序96供给的指令码数据,按照指令存储器分配装置94的地址空间控制,制作出对应每个模块的指令存储器地址表,并把其结果作为命令码98输出。通过这样的一系列的动作,可实现各个模块的动作最佳化。
图15是表示本发明实施例4的程序最佳化的其他构成例的方框图。在图15中,对于与图11中相同的主要构成部分用与图11中的相同符号标记,并在此省略对其的详细说明。构成应用程序的各个模块的源代码90被输入到电力消耗推定装置101及编译器95。另外,在电力消耗表100中记述有在多处理器系统的各个处理器的执行每种指令的消耗电力。电力消耗推定装置101在对模块源代码90进行分析的同时,从电力消耗表100接收电力消耗信息,由此来推断在执行各个模块时的峰值电力消耗和平均电力消耗。
图16(a)是电力消耗表内容的一例,图16(b)对每个模块的电力消耗推断结果的一实例。如图16(a)所示,多处理器系统的各个处理器由于其运算器及寄存器的构造不同,所以其电力消耗特性也不同。而且在VLIW模式和多线程模式下,其电力的消耗也不同。
另外,程序控制判定装置103根据峰值电力和平均电力的信息,判定使各个模块在VLIW模式或多线程模式的任意模式下动作。在图16(b)的情况下,判定使模块A在VLIW模式下执行,使模块B、C在多线程模式下执行。
之后的动作与图11的构成相同。通过这样的一系列的工作,可实现各个模块的动作最佳化,从而可在照顾到各个处理器的相互不同的电力消耗特性的同时在应用程序中满足最适宜的电力消耗。
另外,对于本实施例所述的程序最佳化,只要构成具有多个处理器,并且具有通过单一的程序控制是该多个处理器动作的第1程序控制模式和通过独立的多个程序控制使其分别动作的第2程序控制模式的多处理器系统,任何的形式都可达到该效果。
另外,在上述的各个实施例中,为了便于说明,只例举了具有2个处理器的多处理器系统,但处理器的数量可以多于2个。
另外,作为第1及第2程序控制模式的实例,使用了VLIW模式和多线程模式,但也可以是除此以外的控制模式。
如上所述,根据本发明,在多处理器系统中,由于可对应目标程序内的处理内容动态地使处理器的负荷达到最佳化,所以通过以最小限度构成的运算器和寄存器资源加以充分有效地利用,可同时达到降低电力消耗和提高处理速度的效果。
另外,根据本发明,可实现程序控制模式的动态切换,并且可实现第1程序控制模式下的把多个处理器的多个运算器组合的运算动作及第2程序控制模式下的多个处理器之间的同步。
并且,根据本发明,对于在具有第1及第2程序控制模式的多处理器系统中所执行的程序可生成最佳的指令码,而且,可生成考虑到各个处理器的不同电力消耗特性的指令码。

Claims (10)

1.一种多处理器系统,是一种具有多个处理器和保存程序的各个指令的指令存储部的多处理器系统,其特征在于:
具有通过单一的程序控制使所述多个处理器动作的第1程序控制模式和通过各自独立的多个程序控制分别使所述多个处理器动作的第2程序控制模式,
所述多个处理器分别具有包括程序同步标识的程序控制装置,在所述程序同步标识中保持有表示所述第1及第2程序控制模式中的任意一种的程序同步信息,
作为所述多个处理器之一的主处理器进行该多处理器系统全体的程序控制,并且在更新所述程序同步信息后,把该更新后的程序同步信息通知给所述指令存储部。
2.根据权利要求1所述的多处理器系统,其特征在于:所述第1程序控制模式为VLIW模式,所述第2程序控制系统为多线程模式。
3.根据权利要求1所述的多处理器系统,其特征在于:所述指令存储部具有与所述多个处理器数目相同的指令存储器,并且,当由所述主处理器通知的程序同步信息表示为所述第1程序控制模式时,使所述各个指令存储器作为单一的存储体动作,把从所述主处理器输出的指令地址输入到所述各个指令存储器中,并输出单一的指令数据,而在该程序同步信息表示为所述第2程序控制模式时,使所述各个指令存储器作为多个独立的存储体动作,把从所述各个处理器输出的指令地址输入到所述各个指令存储器,并输出多个指令数据。
4.根据权利要求1所述的多处理器系统,其特征在于:包括具有指令集,并先把从所述指令存储部输出的指令数据存入所述指令集,然后再供给到所述多个处理器的指令供给部,所述指令供给部接收从所述主处理器发来的所述程序同步信息的通知,当该程序同步信息表示为所述第1程序控制模式时,把所述指令集作为对应单一的指令数据的指令集而使用,而当表示为所述第2程序控制模式时,把所述指令集作为对应多个指令数据的指令集而使用。
5.根据权利要求1所述的多处理器系统,其特征在于:所述主处理器在所述第1程序控制模式下,在接收到具有多个地址数据的第1分支指令码时,更新所述程序同步信息,使其表示所述第2程序同步控制模式,所述多个处理器分别在所述第2程序控制模式下,在接收到具有1个地址数据的第2分支指令码时,更新所述程序同步信息,使其表示所述第1程序同步控制模式,并且把更新的程序同步信息通知给其他的处理器。
6.一种多处理器系统,是一种具有至少包括第1及第2处理器的多处理器系统,其特征在于:在所述第1处理器中包括传达所述第2处理器的内部主要构成部分的输出的信息传达装置,所述第1处理器在接收到具有指定所述第2处理器的内部主要构成部分的操作数的指令码时,通过所述信息传达装置,使用所述第2处理器的所述内部主要构成部分的输出,执行按照该指令码的处理。
7.一种具有多个处理器的多处理器系统,其特征在于:在所述多个处理器中至少有1个具有包括存储指令码的指令寄存器的,把输入到该处理器的指令码与被存储在所述指令寄存器中的指令码进行比较,检测出其是否一致的指令触发信号生成装置,并且,在接收到触发信号设定指令时,把成为触发信号的指令码存入所述寄存器中,所述指令触发信号生成装置在检测出指令码的一致时,把触发信号通知给其他的处理器。
8.一种程序最佳化方法,是一种在具有多个处理器,并且,具有通过单一的程序控制使所述多个处理器动作的第1程序控制模式和通过各自独立的多个程序控制分别使所述多个处理器动作的第2程序控制模式的多处理器系统中能够执行程序的最佳化方法,其特征在于:包括对于所述程序的各个模块检测出与其他模块的依存关系的第1步骤、检测出所述程序的各个模块的处理量的第2步骤、使用检测出的依存关系和处理量,判定以所述第1及第2程序控制模式中的哪一种模式执行各个模块的第3步骤。
9.根据权利要求8所述的程序最佳化方法,其特征在于:还包括使用在所述步骤3得出的判定结果,在由所述多处理系统所具有的指令存储器构成的指令存储器地址空间内分配各个模块的指令码的步骤。
10.一种程序最佳化方法,是一种在具有多个处理器,并且,具有通过单一的程序控制使所述多个处理器动作的第1程序控制模式和通过各自独立的多个程序控制分别使所述多个处理器动作的第2程序控制模式的多处理器系统中能够执行程序的最佳化方法,其特征在于:包括使用记述有对应所述多存储器系统中所具有的各个处理器的对应各种指令种类的电力消耗的电力消耗表,求出各个模块的峰值电力和平均电力的第1步骤、参照求出的各个模块的峰值电力和平均电力,判定以所述第1及第2程序控制模式中的哪一种模式执行各个模块的第2步骤。
CNB02142103XA 2001-09-03 2002-08-26 多处理器系统及程序最佳化方法 Expired - Fee Related CN1172240C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2001265555 2001-09-03
JP2001265555A JP3708853B2 (ja) 2001-09-03 2001-09-03 マルチプロセッサシステムおよびプログラム制御方法

Publications (2)

Publication Number Publication Date
CN1407455A CN1407455A (zh) 2003-04-02
CN1172240C true CN1172240C (zh) 2004-10-20

Family

ID=19092003

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB02142103XA Expired - Fee Related CN1172240C (zh) 2001-09-03 2002-08-26 多处理器系统及程序最佳化方法

Country Status (3)

Country Link
US (1) US7127594B2 (zh)
JP (1) JP3708853B2 (zh)
CN (1) CN1172240C (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107924309A (zh) * 2015-07-30 2018-04-17 华为技术有限公司 用于可变通道架构的系统和方法

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4502650B2 (ja) * 2004-02-03 2010-07-14 日本電気株式会社 アレイ型プロセッサ
US7890735B2 (en) * 2004-08-30 2011-02-15 Texas Instruments Incorporated Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture
US8453157B2 (en) * 2004-11-16 2013-05-28 International Business Machines Corporation Thread synchronization in simultaneous multi-threaded processor machines
CN100388209C (zh) * 2005-01-05 2008-05-14 英业达股份有限公司 防止数据处理混乱的方法
JP4148223B2 (ja) * 2005-01-28 2008-09-10 セイコーエプソン株式会社 プロセッサおよび情報処理方法
US7337339B1 (en) * 2005-09-15 2008-02-26 Azul Systems, Inc. Multi-level power monitoring, filtering and throttling at local blocks and globally
EP1963963A2 (en) * 2005-12-06 2008-09-03 Boston Circuits, Inc. Methods and apparatus for multi-core processing with dedicated thread management
GB0605349D0 (en) * 2006-03-17 2006-04-26 Imec Inter Uni Micro Electr Reconfigurable multi-processing coarse-grain array
DE102006048379B4 (de) * 2006-10-12 2008-11-06 Infineon Technologies Ag Verfahren zur Durchsatzsteuerung einer elektronischen Schaltung sowie entsprechende Durchsatzsteuerung und zugehörige Halbleiterschaltung
EP1986122A1 (fr) * 2007-04-23 2008-10-29 Stmicroelectronics Sa Unite de traitement securisee
US8898653B2 (en) * 2007-06-27 2014-11-25 International Business Machines Corporation Non-disruptive code update of a single processor in a multi-processor computing system
JP5125659B2 (ja) * 2008-03-24 2013-01-23 富士通株式会社 情報処理装置、情報処理方法及びコンピュータプログラム
CN101266561B (zh) * 2008-04-29 2010-06-09 中兴通讯股份有限公司 一种在多核多线程处理器中的核间消息通信方法
US20090313600A1 (en) * 2008-06-13 2009-12-17 Microsoft Corporation Concurrent code generation
US8522193B2 (en) * 2009-02-10 2013-08-27 International Business Machines Corporation Program development tool configured to compile source code according to energy consumption requirements
US8312441B2 (en) * 2009-02-10 2012-11-13 International Business Machines Corporation Presenting energy consumption information in an integrated development environment tool
JP5549455B2 (ja) * 2010-07-21 2014-07-16 富士電機株式会社 プログラマブルコントローラシステムおよびそのプログラム更新方法
CN102693210B (zh) * 2011-03-21 2017-03-01 中兴通讯股份有限公司 一种处理器间传递参数的方法及装置
US9202308B2 (en) * 2011-12-28 2015-12-01 Think Silicon Sa Methods of and apparatus for assigning vertex and fragment shading operations to a multi-threaded multi-format blending device
US9058680B2 (en) * 2011-12-28 2015-06-16 Think Silicon Ltd Multi-threaded multi-format blending device for computer graphics operations
KR101452895B1 (ko) * 2012-11-20 2014-10-23 주식회사 포스코 엘이디 디스플레이 모듈용 구동 제어 장치 및 이의 구동 제어 방법
US11379708B2 (en) * 2018-08-09 2022-07-05 Nvidia Corporation Techniques for efficiently operating a processing system based on energy characteristics of instructions and machine learning

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2610821B2 (ja) * 1986-01-08 1997-05-14 株式会社日立製作所 マルチプロセツサシステム
US4926318A (en) * 1986-11-12 1990-05-15 Nec Corporation Micro processor capable of being connected with a coprocessor
JP2539974B2 (ja) * 1991-11-20 1996-10-02 富士通株式会社 情報処理装置におけるレジスタの読出制御方式
JP3146707B2 (ja) 1992-01-06 2001-03-19 株式会社日立製作所 並列演算機能を有する計算機
JPH09274567A (ja) 1996-04-08 1997-10-21 Hitachi Ltd プログラムの実行制御方法及びそのためのプロセッサ
JPH1091439A (ja) 1996-05-23 1998-04-10 Matsushita Electric Ind Co Ltd プロセッサ
KR100280460B1 (ko) 1998-04-08 2001-02-01 김영환 데이터 처리 장치 및 이의 복수의 스레드 처리 방법
US6112288A (en) * 1998-05-19 2000-08-29 Paracel, Inc. Dynamic configurable system of parallel modules comprising chain of chips comprising parallel pipeline chain of processors with master controller feeding command and data
US6317820B1 (en) 1998-06-05 2001-11-13 Texas Instruments Incorporated Dual-mode VLIW architecture providing a software-controlled varying mix of instruction-level and task-level parallelism
US6272616B1 (en) * 1998-06-17 2001-08-07 Agere Systems Guardian Corp. Method and apparatus for executing multiple instruction streams in a digital processor with multiple data paths
JP2000047887A (ja) 1998-07-30 2000-02-18 Toshiba Corp 投機的マルチスレッド処理方法および投機的マルチスレッド処理装置
US20010042187A1 (en) * 1998-12-03 2001-11-15 Marc Tremblay Variable issue-width vliw processor
JP2001184208A (ja) 1999-12-27 2001-07-06 Matsushita Electric Ind Co Ltd 低電力マイクロプロセッサおよびプログラム低電力化方法
EP1261921A2 (en) * 2000-03-08 2002-12-04 Sun Microsystems, Inc. Vliw computer processing architecture with on-chip dynamic ram
US6687838B2 (en) * 2000-12-07 2004-02-03 Intel Corporation Low-power processor hint, such as from a PAUSE instruction

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107924309A (zh) * 2015-07-30 2018-04-17 华为技术有限公司 用于可变通道架构的系统和方法
US10691463B2 (en) 2015-07-30 2020-06-23 Futurewei Technologies, Inc. System and method for variable lane architecture
US10884756B2 (en) 2015-07-30 2021-01-05 Futurewei Technologies, Inc. System and method for variable lane architecture

Also Published As

Publication number Publication date
JP2003076667A (ja) 2003-03-14
JP3708853B2 (ja) 2005-10-19
CN1407455A (zh) 2003-04-02
US7127594B2 (en) 2006-10-24
US20030074542A1 (en) 2003-04-17

Similar Documents

Publication Publication Date Title
CN1172240C (zh) 多处理器系统及程序最佳化方法
US7398521B2 (en) Methods and apparatuses for thread management of multi-threading
JP4987882B2 (ja) スレッドに最適化されたマルチプロセッサアーキテクチャ
CN1123837C (zh) 计算机系统及多处理器计算机系统中的第一处理器
CN110308982B (zh) 一种共享内存复用方法及装置
CN1828563A (zh) 处理器及信息处理方法
CN101030181A (zh) 按优先级的次序处理非易失性存储器的操作的设备和方法
CN1234548A (zh) 混合执行堆栈及异常处理
CN1541355A (zh) 数据处理系统以及控制方法
JP2001147819A (ja) 最適化装置および記録媒体
CN1434380A (zh) 图像处理装置和方法以及用于该装置的编译程序
CN1716187A (zh) 预载控制器、由处理器控制将数据预载至临时存储器的预载控制方法和程序
US8578389B1 (en) Method and system for merging directed acyclic graphs representing data flow codes
CN101980147B (zh) 多线程处理器及其指令执行与同步方法
US6675289B1 (en) System and method for executing hybridized code on a dynamically configurable hardware environment
CN1149472C (zh) 更名装置及处理器
CN1310116C (zh) 具有功率控制功能的微处理器以及指令转换装置
US8490098B2 (en) Concomitance scheduling commensal threads in a multi-threading computer system
Sakdhnagool et al. RegDem: Increasing GPU performance via shared memory register spilling
CN1096025C (zh) 信息处理装置及多任务控制方法
EP1387266A1 (en) Software pipelining for branching control flow
CN1713135A (zh) 处理器和半导体器件
Dümmler et al. Execution schemes for the NPB-MZ benchmarks on hybrid architectures: a comparative study
JP2004240953A (ja) コンピュータシステム、その同時多重スレッディング方法およびキャッシュコントローラシステム。
CN1945542A (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
C14 Grant of patent or utility model
GR01 Patent grant
C19 Lapse of patent right due to non-payment of the annual fee
CF01 Termination of patent right due to non-payment of annual fee