CN104025045A - 处理器***及加速器 - Google Patents

处理器***及加速器 Download PDF

Info

Publication number
CN104025045A
CN104025045A CN201280065692.7A CN201280065692A CN104025045A CN 104025045 A CN104025045 A CN 104025045A CN 201280065692 A CN201280065692 A CN 201280065692A CN 104025045 A CN104025045 A CN 104025045A
Authority
CN
China
Prior art keywords
mark
processor
data
write
accelerator
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.)
Granted
Application number
CN201280065692.7A
Other languages
English (en)
Other versions
CN104025045B (zh
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.)
Waseda University
Original Assignee
Waseda University
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 Waseda University filed Critical Waseda University
Publication of CN104025045A publication Critical patent/CN104025045A/zh
Application granted granted Critical
Publication of CN104025045B publication Critical patent/CN104025045B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation 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
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • 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/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • G06F9/3881Arrangements for communication of instructions and data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Multi Processors (AREA)
  • Advance Control (AREA)
  • Bus Control (AREA)

Abstract

一种处理器***,加速器按照命令区域中存储的任务进行动作,当确认到表示处理器的处理已结束的标志被写入了同步标志区域时,即使处理器正在执行其他处理,也开始与标志对应的加速处理,在加速处理结束后,将表示加速处理已结束的标志写入同步标志区域,处理器确认到表示加速处理已结束的标志被写入了同步标志区域时,即使加速器正在执行其他处理,也开始与标志对应的处理。

Description

处理器***及加速器
本申请主张2011年11月4日提交的日本专利申请2011-242824的优先权,其内容通过参照而包含于本申请。
技术领域
本发明涉及加速器及包含该加速器的处理器***。
背景技术
为了提高作为构成要素而包含处理器***、特别是多核心处理器***的计算机(个人计算机)的特定功能的处理能力,并且将耗电抑制得较低,将被称为加速器(以下称为“ACC”)的硬件模组加入到处理器***中。ACC指的是,例如用于使图形显示高速化的图形加速器、用于使三维示高速化的3D加速器等。
作为将这样的ACC与处理器***连接的方式,以往有密耦合型的连接方式和疏耦合型的连接方式。
密耦合型的连接方式指的是,使ACC和CPU(Central Processing Unit,通用处理器,以下称为“处理器”)以一体化或接近一体化的形态连接的方式。在该密耦合型的连接方式中,ACC和处理器紧密地协同而发挥功能,具有用于启动并控制ACC的***开销较低的优点。由此,具有如下优点:即使在短向量处理(处理数据量较少的加速处理)等、ACC中的执行时间较短的情况下,也能够高效地使用ACC。
但是,在该密耦合型的连接方式中存在如下问题:向处理器新连接ACC的情况下,根据所连接的ACC,有时需要扩展处理器的命令集。在该扩展的命令集中,例如有非种类文献1所公开的Streaming SIMD Extensions(SSE)等。
此外,作为属于密耦合型的连接方式的范畴的技术,例如在非专利文献2中公开了像辅助处理器那样将ACC直接连接到处理器的连接方式相关的技术。该方式不需要扩展命令集,但是需要按每个处理单位(加速器命令)调用辅助处理器,因此需要大的***开销,存在整体上不利于运算速度提高的问题。
另一方面,疏耦合型的连接方式指的是,例如非专利文献3公开的使ACC与处理器的外部总线连接的Graphics Processing Unit(GPU)的方式、或者非专利文献4公开的使ACC与处理器的内部总线连接的OpenMultimedia Application Platform(OMAP)的方式。在该疏耦合型的连接方式中,ACC和处理器单独设置,所以存在外部总线连接方式和内部总线连接方式的差别,但是能够富余地确保ACC用的运算器和存储器,具有适合于针对大量数据的规则的运算处理的优点。
此外,在疏耦合型的连接方式中,不需要命令集的扩展。
但是,在疏耦合型的连接方式中,需要按每个处理单位(加速器命令)调用ACC或进行数据传送,因此需要大的***开销,存在作为整体无法提高运算速度的问题。因此,不适合于不规则的运算处理。
此外,上述的多核心处理器***是由多个处理器核心构成的处理器***,各处理器核心具备处理器,并且在必要的情况下具备上述ACC。
在多核心处理器***中,通过多个处理器核心使处理并行化,从而降低耗电,并且提高运算处理能力。因此,并行化编译器对逐次处理的输入程序进行解析,从该输入程序中提取能够并行动作的部分,并将该部分的运算处理分配给多个处理器,从而如上述那样,与由一个处理器构成的处理器***相比,提高了处理能力,上述并行化编译器将仅能够在由一个处理器构成的处理器***上动作的逐次处理程序,变换为能够在由多个处理器核心构成的所谓多核心处理器上并行动作的并行处理程序。
作为生成并行处理程序的并行化编译器相关的技术,已知专利文献1~4所公开的技术等,该并行处理程序能够在上述那样的多核心处理器***、特别是具备多个包含通用处理器和特定用途处理器(本申请中的ACC等)的处理器核心的多核心处理器***的架构及多核心处理器上并行动作。
在专利文献1中公开了如下的多处理器***相关的技术:在搭载了多种处理器核心的多核心处理器***中,从成为处理对象的逐次处理的输入程序自动地提取具备并行性的任务,与各处理器核心的特性相应地配置该任务,从而高效地利用该处理器核心,进而,通过预估该处理器核心的处理量,生成使动作频率和电源电压最优化的代码,从而实现向目的程序附加的编译器及其最优化。
在专利文献2中公开了如下的技术:在具备多个命令集及构造不同的处理器元素(处理器等)的异构多处理器***中,防止特定的处理器元素的资源不足,提高多处理器***整体的处理能力。
在专利文献3中公开了如下的技术:在集成了多种处理器核心的多处理器***中,通过使该处理器核心高效动作的程序的分割配置、以及生成控制代码的多个编译器协作程序并行化手法,能够最大限度地发挥该处理器***的性能,并且以低功耗高效地进行处理。
在专利文献4中公开了如下的技术:在多个处理器核心分别具备数据传送机构的多核心处理器中,降低处理器核心之间的数据传送的***开销,同时使得编译器的数据传送最优化容易进行,从而提高处理器整体的处理能力。
在先技术文献
专利文献
专利文献1:特开2006-293768号公报
专利文献2:特开2007-328415号公报
专利文献3:特开2007-328416号公报
专利文献4:专利4476267号公报
非专利文献
非专利文献1:S.Thakkar,T.Huff,"The Internet Streaming SIMDExtensions",Intel Technology Journal Q2,1999.
非专利文献2:M.Awaga,H.Takahashi,"The uVP64-Bit VectorCoprocessor:A New Implementation of High Performance NumericalComputation",IEEE Micro,Vol.13,No.5,October1993.
非专利文献3:"NVIDIA CUDA C Programming Guide Version3.2",2010.
非专利文献4:"OMAP-L137Application Processor SystemReference Guide",Texas Instruments,March,2010.
发明的概要
发明所要解决的课题
但是,前述的异构多核心处理器由具有通用处理器核心的一个或多个处理器核心和包含ACC等特定用途处理器的一个或多个处理器核心构成。但是,为了比该异构多核心处理器更进一步提高耗电及运算处理能力,需要在处理器核心之中使通用处理器和ACC等特定用途处理器并存,构筑具有多个这样构成的处理器核心的多核心处理器。
在这样的多核心处理器***所搭载的各处理器核心内部或外部具备上述ACC的情况下,也采用前述的密耦合型及疏耦合型的某个方式。
但是,在前述的以往的密耦合型或疏耦合型的连接方式中,存在如前述那样需要扩展命令集、以及伴随着数据传送等的处理***开销的增加等若干问题。
例如,在前述的密耦合的连接方式中,新连接ACC的情况下,根据所连接的ACC,需要扩展处理器的命令集(例如Streaming SIMD Extensions等)。此外,特别是在处理器为RISC(Reduced Instruction Set Computer)型处理器的情况下,通过有限的命令长度来进行命令编码非常困难。特别是在新扩展命令集的情况下,需要进行命令集的扩展、以及用于命令集扩展的硬件(例如命令解读部及处理器控制部等)的大幅扩展。
此外,在密耦合的连接方式中,处理器和ACC一体化,所以存在如下的问题:无法为了ACC而确保向每次请求大量数据的ACC提供充分量的数据的寄存器。因此,无法向ACC无限地投入数据,运算器的使用效率较低。
另外,在像辅助处理器这样的与处理器直接连接的连接方式中,不需要扩展处理器的命令集。但是,由于按照命令的每个处理单位调用辅助处理器,所以控制***开销较大。
另一方面,在上述的疏耦合的连接方式中,与密耦合的连接方式相比,ACC和处理器之间的物理距离较远,ACC的控制的***开销和向ACC的数据传送的***开销显著变大。
发明内容
本发明考虑了上述课题,其目的在于,提供一种ACC、以及在内外具有包含ACC的多核心处理器***,在向处理器新连接ACC时不需要对于处理器扩展命令集,并且能够对ACC确保充分的数据供给能力,进而降低ACC的控制***开销。
解决课题所采用的技术手段
为了解决上述课题,例如采用下述技术方案所记载的构成。
本申请包括多个解决上述课题的手段,但是作为一例,一种处理器***,在半导体芯片上具备处理器核心,该处理器核心具有:进行运算处理的处理器、存储器、以及经由耦合网与所述处理器及所述存储器连接的加速器(ACC);所述存储器具有:命令区域,预先存储由所述处理器及所述加速器执行的任务;同步标志区域,存储用于在所述处理器和所述加速器之间使各个动作同步的标志;以及数据区域,保存所述处理器及所述加速器在处理中使用的数据及处理后的数据;所述加速器按照所述命令区域中存储的任务进行动作,当确认到表示所述处理器的规定处理已结束的标志被写入所述同步标志区域时,即使所述处理器正在执行其他处理,也读取被写入所述数据区域的数据并执行与该标志对应的任务,从而开始加速处理,在所述加速处理结束后,将所述加速处理后的数据保存到所述数据区域,并且将表示该加速处理已结束的标志写入所述同步标志区域,所述处理器确认到表示所述加速处理已结束的标志被写入所述同步标志区域后,即使所述加速器正在执行其他处理,也开始与该标志对应的任务。
发明的效果
根据本发明的一个实施方式,在处理器及ACC相互的同步控制中不花费时间,能够分别自主地进行动作,所以在新连接ACC时,不需要对处理器扩展命令集,并且能够对ACC确保充分的数据供给能力,进而降低ACC的控制***开销。
附图说明
图1是表示本发明的实施方式的多核心处理器***的构成例的图。
图2是表示本发明的实施方式的ACC的第1构成例及包含ACC的处理器核心的构成例的图。
图3是表示本发明的实施方式的ACC的第2构成例及包含ACC的处理器核心的构成例的图。
图4是表示本发明的实施方式的ACC的第3构成例及包含ACC的处理器核心的构成例的图。
图5是表示本发明的实施方式的ACC的第4构成例及包含ACC的处理器核心的构成例的图。
图6是表示本发明的实施方式的标志写入/确认器的构成例的图。
图7是表示本发明的实施方式的标志写入/确认器所进行的标志设置/检查的动作概要的图。
图8是表示在本发明的实施方式的多核心处理器***中执行的程序的参考例的图。
图9是表示执行参考例的程序时的处理流程的图。
图10是表示在本发明的实施方式的多核心处理器***中执行的程序的第1例的图。
图11是表示执行第1例的程序时的处理流程的图。
图12是表示执行第1例的程序时的处理流程的变形例的图。
图13是表示在本发明的实施方式的多核心处理器***中执行的程序的第2例的图。
图14是表示执行第2例的程序时的处理流程的图。
图15是表示在本发明的实施方式的多核心处理器***中执行的程序的第3例的图。
图16是表示执行第3例的程序时的处理流程的图。
图17是表示在本发明的实施方式的多核心处理器***中执行的程序的第4例的执行时的处理流程的图。
图18是表示在本发明的实施方式的多核心处理器***中执行的程序的第5例的执行时的处理流程的图。
图19是本发明的实施方式的并行化编译器执行的处理的流程图。
具体实施方式
以下,参照附图说明本发明的实施方式。
图1是表示本发明的实施方式的多核心处理器***(处理器***)1的构成例的图。
图1所示的多核心处理器***1设置在1个半导体芯片2上,除了通用处理器、DTU、存储器以外,还具备包含ACC的多个处理器核心10-1~10-n、ACC20、数据传送单元(Data Transfer Unit:DTU)30、以及片内(on chip)集中共用存储器40、半导体芯片2外部的片外(off chip)集中共用存储器50。各处理器核心10-1~10-n通过共用总线等处理器核心间耦合网(总线)连接。另外,可以具备片内集中共用存储器40和片外集中共用存储器50的任一方或双方。
在本实施方式中,示出了各处理器核心10-1~10-n的构造相同的同构多核心处理器***1的构成例。因此,仅说明处理器核心10-1的构造,而省略其他处理器核心10-2~10-n的说明。另外,本发明不仅能够应用于同构多核心处理器***,也能够应用于异构多核心处理器***。
处理器核心10-1具备:处理器11、加速器(ACC)12、DTU13、分散共用存储器(Distributed Shared Memory:DSM)14、本地存储器(LocalMemory:LM)15、总线接口16、FV寄存器(Frequency/Voltage controlRegister:FVR)17。
处理器11是执行各种运算处理的中央处理装置。
ACC12是能够高速且低耗电地处理特定功能的ACC。本实施方式的ACC12即使没有来自处理器11的指示也自主地进行动作。该ACC12的详细情况留待后述。
DTU13是具备后述的基于同步标志检查的命令串的执行、同步标志的写入等功能的一种Direct Memory Access Controller(DMAC),是在ACC12、DSM14、LM15或其他处理器核心10-2~10-n的DSM14之间执行数据传送的数据传送装置。本实施方式的DTU13通过来自处理器11的单一的指示开始动作,然后自主地进行动作。该DTU13的详细情况也留待后述。本地存储器15保存仅由一个处理器使用的数据,分散共用存储器14保存由多个处理器共用的数据。
DSM14是能够从所有处理器核心10-1~10-n访问的分散共用存储器。处理器核心10-1~10-n所具备的各个DSM14配置于由全部处理器核心10-1~10-n共用的一个存储器图,经由该存储器图,全部处理器10-1~10-n访问各处理器核心10-1~10-n所具备的DSM14。该DSM14用于通过自处理器或其他处理器11或DTU13来接收/发送计算结果。该DSM14具备命令区域14-1、同步标志区域14-2、数据区域14-3。
此外,例如处理器核心10-1内的LM15是仅能够由处理器核心10-1的处理器11、ACC12、DTU13访问、而不能从其他处理器核心10-2~10-n访问的本地存储器。该LM15具备命令区域15-1、同步标志区域15-2、数据区域15-3。
总线接口16是用于在与其他处理器核心10-2~10-n、ACC20、DTU30、片内集中共用存储器40、片外集中共用存储器50之间通信数据的接口。
FVR17是用于执行决定对处理器11的供给电压和动作频率的频率及/或电源电压控制的寄存器。
ACC20是与各处理器核心10-1~10-n的处理器11的外部总线连接、代行处理器11的处理的GPU等加速器。
DTU30是可附加的数据传送装置,与各处理器核心10-1~10-n的处理器11的外部总线连接,在与各处理器核心10-1~10-n的LM15及DSM14、他处理器核心上的DSM14、片内集中共用存储器40、片外集中共用存储器50之间执行数据的传送,以及在与各处理器核心10-1~10-n的DSM14、ACC20、片内集中共用存储器40、片外集中共用存储器50之间执行数据的传送。
片内集中共用存储器40是与各处理器核心10-1~10-n连接、由全部处理器核心10-1~10-n共用的半导体芯片2上的存储器。该片内集中共用存储器40具有命令区域40-1、同步标志区域40-2、数据区域40-3。片内集中共用存储器40保存无法保存到DSM的共用数据、动态调度所需的任务队列等信息。
片外集中共用存储器50是与各处理器核心10-1~10-n连接、由全部处理器核心10-1~10-n共用的半导体芯片2外部的可附加的存储器。该片外集中共用存储器50根据需要可以具有命令区域、同步标志区域、数据区域(均未图示)。此外,片外集中共用存储器50与片内集中共用存储器40、DSM14及其他多核心处理器***(多处理器芯片)共存的情况下,可以构成为也能够从其他多核心处理器访问。片外集中共用存储器50保存片内集中共用存储器40中放不下的数据。
在以上所示的构成中,在命令区域14-1、15-1、40-1中保存由后述的并行化编译器生成的处理器11、ACC12、DTU13用的命令(程序)。ACC12用的命令指的是,例如针对ACC12的加法、乘法那样的各种运算命令、标志设置命令、标志检查命令、以及基于标志检查的命令串执行开始命令。此外,DTU13用的命令指的是,例如针对DTU13的数据传送的命令、标志设置命令、标志检查命令、以及基于标志检查的命令串执行开始命令。
另外,由处理器核心10-1执行的命令原则上配置在处理器核心10-1的命令区域14-1、15-1。但是,命令的尺寸较大的情况下,配置在片内集中共用存储器40的命令区域40-1。这种情况下,处理器核心10-1读取命令区域40-1中配置的命令(加载)。另一方面,ACC20、DTU30用的命令配置在片内集中共用存储器40的命令区域40-1或片外集中共用存储器50的命令区域(未图示)。
同样,在同步标志区域14-2、15-2、40-2中保存由并行化编译器生成的处理器11、ACC12、DTU13用的同步标志。同步标志指的是,处理器11、ACC12、DTU13相互取得同步并且协同地动作所使用的标志(数据)。在同步标志区域14-2、15-2、40-2中配置由处理器核心10-1执行的每个处理集合(例如任务)的同步标志。处理集合为循环处理的情况下,可以根据循环处理的回转次数来配置赋予了版本编号的同步标志。详细情况留待后述。另一方面,ACC20、DTU30用的同步标志配置在片内集中共用存储器40的同步标志区域40-2或片外集中共用存储器50的同步标志区域(未图示)。
在数据区域14-3、15-3、40-3中,保存处理器11、ACC12、DTU13在处理中使用的数据及处理后的数据。另一方面,ACC20、DTU30在处理中使用的数据及处理后的数据保存在片内集中共用存储器40的数据区域40-3或片外集中共用存储器50的同步标志区域(未图示)。
如以上那样,处理器核心10-1上的处理器11、ACC12、DTU13共用自处理器核心10-1上的DSM14、及LM15。
此外,各处理器核心10-1~10-n上的处理器11、ACC12、DTU13共用各处理器核心10-1~10-n上的DSM14、片内集中共用存储器40。
另外,多核心处理器***1根据自***的用途,也可以仅具有DSM14、LM15、片内集中共用存储器40、片外集中共用存储器50中的必要的存储器。
此外,多核心处理器***1有时仅由1个处理器核心构成,这种情况下,不需要ACC20、DTU30等。进而,在多核心处理器***1的多个处理器核心10-1~10-n中,有时包含不具有ACC12的通用处理器核心。
图2是表示本发明的实施方式的ACC12的第1构成例及包含ACC12的处理器核心的构成例的图。另外,在以下的说明中,对于与图1同样的构成要素赋予同一符号并适当省略重复的说明。在图2中,黑箭头表示同步标志的通信。白箭头表示用于进行除了同步标志以外的命令及数据的传送的通信。各箭头的粗细表示通信速度的程度。
在图2中,ACC12具备:ACC本体121、ACC寄存器/本地存储器122(以下简称为“ACC寄存器122”)、加载/储存单元123、控制寄存器群组124、FVR125,经由处理器核心内耦合网(总线或开关网络等)18与处理器11、LM15、DSM14、DTU13、FVR17连接。
ACC本体121是使用LM15或DSM14中保存的ACC命令串而只执行特定处理的ACC本体。另外,ACC命令串指的是,预先由并行化编译器生成的ACC12用的程序(依次执行多个命令串的程序)。
ACC寄存器122是用于对ACC本体121供给数据的寄存器等存储部。特别是,ACC为ACC20(GPU等,参照图1)的情况下,ACC寄存器指的是ACC20独自具有的本地存储器。该ACC寄存器122仅能够由ACC本体121及加载/储存单元123访问,不能从经由处理器核心内耦合网18连接的处理器11等访问。另外,也可以是ACC寄存器122能够由ACC12外部的构成(例如DTU13)直接访问。
该ACC寄存器122优选为向ACC本体121高速地供给数据的矢量寄存器等高速寄存器。
加载/储存单元123是在ACC寄存器122和DSM14、LM15之间执行数据的传送的数据传送装置。该加载/储存单元123通过被称为矢量加载的命令,将LM15或DSM14内的连续的数据读取到ACC寄存器122。此外,通过被称为矢量储存的命令,将ACC寄存器122内的连续的数据保存到LM15或DSM14(储存)。该加载/储存单元123具备标志写入/确认器123A。标志写入/确认器123A是向LM15或DSM14等存储器上的规定(任意)的区域(地址空间)的地址(以下称为“规定的地址”)写入(设置)同步标志、或者确认(检查)被写入存储器上的规定的地址的同步标志的功能部。
控制寄存器群组(file)124是由多个控制寄存器构成的寄存器群。该控制寄存器群组124包括用于控制ACC本体121的控制寄存器和用于控制加载/储存单元123的控制寄存器。
FVR125是用于决定对于ACC本体121的供给电压和时钟频率、并且进行具有电源切断功能的频率/电源电压(FV)控制的可附加的寄存器。ACC12在标志检查开始后,根据FVR125中设定的值,降低或切断向ACC12的供给电压和时钟频率。由此,能够进行电力控制。
以上所示的构成的ACC12与处理器11、DTU13协同地进行动作。简单说明该协同动作。
(ACC12和处理器11的协同动作)
首先,作为ACC12和处理器11的协同动作的一例,说明加载/储存单元123向LM15或DSM14保存数据后、由处理器11开始使用了所保存的数据的处理的动作。
加载/储存单元123将由ACC本体121保存到ACC寄存器122的加速处理后的数据保存到LM15的数据区域15-3或DSM14的数据区域14-3。这样,标志写入/确认器123A将与该储存处理对应的同步标志(数据)写入LM15或DSM14的规定的地址、即15-2或14-2。到同步标志被写入LM15或DSM14的规定的地址为止的期间,处理器11反复检查对LM15或DSM14的同步标志分配的规定的地址(15-2或14-2)。处理器11确认到(检测)被写入的同步标志后,使用15-3或14-3中保存的数据,开始自身的处理。这样,ACC12和处理器11进行协同动作。
接着,作为ACC12和处理器11的协同动作的另一例,说明处理器11向LM15或DSM14保存数据后、由加载/储存单元123开始将所保存的数据向ACC寄存器122读取的动作。
处理器11将处理后的数据保存到LM15的数据区域15-3或DSM14的数据区域14-3。这样,处理器11将与该保存处理对应的同步标志(数据)写入LM15或DSM14的规定的地址、即15-2或14-2。到同步标志被写入LM15或DSM14的规定的地址为止的期间,标志写入/确认器123A反复确认对LM15或DSM14的同步标志分配的规定的地址(15-2或14-2)。标志写入/确认器123A确认到(检测)被写入的同步标志后,将15-3或14-3中保存的数据保存到ACC寄存器122。另外,ACC本体121使用ACC寄存器122中保存的数据来开始自身的处理。这样,ACC12和处理器11协同动作。
(ACC12和DTU13的协同动作)
首先,作为ACC12和DTU13的协同动作的一例,说明由DTU13结束向LM15或DSM14的数据传送处理后、由加载/储存单元123开始将传送的数据向ACC寄存器122读取的动作。
DTU13结束(例如从片内集中共用存储器40)向LM15的数据区域15-3的数据传送后,将与该数据传送处理对应的同步标志写入LM15或DSM14的规定的地址或由命令指定的地址、即15-2或14-2。到同步标志被写入LM15或DSM14的规定的地址为止的期间,标志写入/确认器123A反复确认对LM15或DSM14的同步标志分配的规定的地址(15-2或14-2)。标志写入/确认器123A确认到被写入的同步标志后,加载/储存单元123开始将传送到LM15的数据区域15-3的数据向ACC寄存器122读取。然后,ACC本体121执行加速处理。具体地说,依次执行ACC12用的程序中包含的标志检查命令、数据加载命令、加速处理命令。这样,ACC12和DTU13协同动作。
接着,作为ACC12和DTU13的协同动作的另一例,说明由加载/储存单元123向LM15或DSM14保存数据后、由DTU13开始使用了所保存的数据的处理的动作。
加载/储存单元123将由ACC本体121保存到ACC寄存器122的加速处理后的数据保存到LM15的数据区域15-3或DSM14的数据区域14-3。这样,标志写入/确认器123A将与该储存处理对应的同步标志(数据)写入LM15或DSM14的规定的地址、即15-2或14-2。到同步标志被写入LM15或DSM14的规定的地址为止的期间,DTU13反复检查对LM15或DSM14的同步标志分配的规定的地址(15-2或14-2)。DTU13确认到(检测)被写入的同步标志后,使用15-3或14-3中保存的数据来开始数据传送处理。这样,ACC12和DTU13协同动作。
此外,说明处理器11和DTU13的协同动作。DTU13将处理器核心中处理所需的数据从其他处理器核心的分散共用存储器14、其他处理器核心的片内集中共用存储器40或片外集中共用存储器50读取到自处理器核心的本地存储器15或分散共用存储器14,或者将自处理器核心的本地存储器15或分散共用存储器14中保存的数据传送到其他存储器,该动作通过由处理器11将最初的数据传送指示设定到DTU13,从本地存储器15等读取DTU13的自主动作所需的程序而执行。关于该数据传送中的处理器11和DTU13的协作动作,在专利文献4中有详细记载。
如以上所示,第1构成例的ACC12、处理器11、DTU13通过针对LM15或DSM14的标志设置/检查来取得同步而进行协同动作。
图3是表示本发明的实施方式的ACC12的第2构成例及包含ACC12的处理器核心的构成例的图。另外,在以下的说明中,对于与图1及图2同样的构成要素赋予同一符号并适当省略重复的说明。
图3所示的ACC12不具备加载/储存单元,因此与图2所示的ACC12的不同点在于,在ACC本体121中具备标志写入/确认器121A(相当于图2中的123A)。另外,标志写入/确认器121A与标志写入/确认器123A同样,具有向LM15或DSM14等存储器上的规定的地址写入同步标志、或者确认被写入到存储器上的规定的地址的同步标志的功能。此外,处理器11或DTU13通过向ACC寄存器122读写数据,取代图2的加载/储存单元123的功能。
以上所示的构成的ACC12与处理器11、DTU13协同地动作。简单说明该协同动作。
(ACC12和处理器11的协同动作)
首先,作为ACC12和处理器11的协同动作的一例,说明由处理器11结束规定的处理后、由ACC12开始处理的动作。
处理器11结束规定的处理后,将处理结果的数据写入到ACC寄存器122。然后,处理器11将与该规定的处理对应的同步标志写入LM15或DSM14的规定的地址、即15-2或14-2。到同步标志被写入LM15或DSM14的规定的地址为止的期间,标志写入/确认器121A反复检查对LM15或DSM14的同步标志分配的规定的地址(15-2或14-2)。由标志写入/确认器121A确认到被写入的同步标志后,ACC本体121使用ACC寄存器122中保存的处理器11的处理结果的数据来开始自身的处理。具体地说,依次执行ACC12用的程序中包含的标志检查命令、数据加载命令、加速处理命令。这样,ACC12和处理器11协同动作。
接着,作为ACC12和处理器11的协同动作的另一例,说明由ACC12结束规定的处理后、由处理器11开始处理的动作。
由ACC本体121结束处理后,将处理结果的数据写入ACC寄存器122。然后,标志写入/确认器121A将与该规定的处理对应的同步标志写入LM15或DSM14的规定的地址、即15-2或14-2。到同步标志被写入LM15或DSM14的规定的地址的期间,处理器11反复检查对LM15或DSM14的同步标志分配的规定的地址(15-2或14-2)。处理器11确认到被写入的同步标志后,读取ACC寄存器122中保存的处理结果的数据,开始自身的处理。这样,ACC12和处理器11协同动作。
(ACC12和DTU13的协同动作)
接下来,作为ACC12和DTU13的协同动作的一例,说明由ACC本体121结束处理后、由DTU13开始数据传送的动作。
ACC本体121结束规定的处理后,将处理结果的数据发送到ACC寄存器122。然后,标志写入/确认器121A将与该规定的处理对应的同步标志写入LM15或DSM14的规定的地址、即15-2或14-2。到同步标志被写入LM15或DSM14的规定的地址为止的期间,DTU13在其他数据传送处理结束后,反复确认对LM15或DSM14的同步标志分配的规定的地址(15-2或14-2)。DTU13确认到被写入的同步标志后,开始读取ACC寄存器122中保存的数据并向LM15或DSM14传送的处理。这样,ACC12和DTU13协同动作。
接下来,作为ACC12和DTU13的协同动作的一例,说明由DTU13结束数据传送后、由ACC本体121开始处理的动作。
DTU13通过规定的数据传送处理,将数据写入ACC寄存器122。然后,DTU13将与该规定的处理对应的同步标志写入LM15或DSM14的规定的地址、即15-2或14-2。到同步标志被写入LM15或DSM14的规定的地址为止的期间,标志写入/确认器121A反复确认对LM15或DSM14的同步标志分配的规定的地址(15-2或14-2)。标志写入/确认器121A确认到被写入的同步标志后,ACC本体121使用被写入ACC寄存器122的数据,开始自身的处理。具体地说,依次执行ACC12用的程序中包含的标志检查命令、数据加载命令、加速处理命令。这样,ACC12和DTU13协同动作。
如以上那样,第2构成例的ACC12、处理器11、DTU13通过针对LM15或DSM14的标志设置/检查,取得同步而进行协同动作。
图4是表示本发明的实施方式的ACC12的第3构成例及包含ACC12的处理器核心的构成例的图。另外,在以下的说明中,对于与图1~图3所示的构成要素相同的构成要素赋予同一符号,并适当省略重复的说明。
图4所示的ACC12具有具备标志写入/确认器121A的ACC本体121和具备标志写入/确认器123A的加载/储存单元123的双方。
在以上所示的构成的ACC12中,ACC本体121和加载/储存单元123分别自主地且相互协同地动作。此外,ACC本体121和加载/储存单元123还与处理器11、DTU13协同地动作。简单说明该协同动作。
(ACC本体121和加载/储存单元123的协同动作1)
首先,作为ACC本体121和加载/储存单元123的协同动作的第1例,说明由加载/储存单元123结束将LM15内的数据读取到ACC寄存器122的处理后、由ACC本体121开始处理的动作。
加载/储存单元123执行将LM15内的数据读取到ACC寄存器122的处理。然后,标志写入/确认器123A将与该加载处理对应的同步标志写入LM15或DSM14的规定的地址。在此期间,标志写入/确认器121A反复检查是否向LM15或DSM14写入了同步标志。然后,标志写入/确认器121A确认到被写入的同步标志后,ACC本体121使用ACC寄存器122中保存的数据,开始自身的处理。这样,ACC本体121和加载/储存单元123协同动作。
(ACC本体121和加载/储存单元123的协同动作2)
接下来,作为ACC本体121和加载/储存单元123的协同动作的第2例,说明由ACC本体121结束处理后、由加载/储存单元123将处理后的数据保存到LM15的动作。
ACC本体121结束规定的处理后,将处理结果的数据发送给ACC寄存器122。然后,标志写入/确认器121A将与该规定的处理对应的同步标志写入LM15或DSM14的规定的地址。在此期间,标志写入/确认器123A反复检查是否向LM15或DSM14写入了同步标志。标志写入/确认器123A确认到被写入的同步标志后,加载/储存单元123开始将ACC寄存器122中保存的数据向LM15或DSM14传送的处理。然后,标志写入/确认器123A向由命令指定的LM15、自处理器核心或他处理器核心上的DSM14的规定的地址写入同步标志。这样,ACC本体121和加载/储存单元123协同动作。
如以上所示,在第3构成例的ACC12中,ACC本体121和加载/储存单元123通过经由LM15或DSM14的标志设置/检查,相互取得同步而进行协同动作。当然,也能够与处理器11、DTU13取得同步而进行协同动作。由此,在ACC本体121正在执行加速处理时,加载/储存单元123能够读取/保存数据。此外,还能够对处理器11、DTU13、ACC本体121、加载/储存单元123分别进行独立的频率/电源控制(FV控制)。
图5是表示本发明的实施方式的ACC12的第4构成例及包含ACC12的处理器核心的构成例的图。另外,在以下的说明中,对于与图4所示的构成要素相同的构成要素赋予同一符号,并适当省略重复的说明。
图5所示的ACC12与图4所示的ACC12的不同点在于,具有ACC内标志授受寄存器126。
ACC内标志授受寄存器126是用于供标志写入/确认器121A、123A设置及检查同步标志的ACC12内部的寄存器。
在以上所示的构成的ACC12中,ACC本体121和加载/储存单元123分别自主地且相互协同地动作。此外,ACC本体121和加载/储存单元123还与处理器11、DTU13协同地动作。简单说明该协同动作。
(ACC本体121和加载/储存单元123的协同动作1)
首先,作为ACC本体121和加载/储存单元123的协同动作的第1例,说明由加载/储存单元123结束将LM15内的数据读取到ACC寄存器122的处理后、由ACC本体121开始处理的动作。
加载/储存单元123执行将LM15内的数据读取到ACC寄存器122的处理。然后,标志写入/确认器123A将与该加载处理对应的同步标志写入ACC内标志授受寄存器126。在此期间,ACC本体121执行由命令指定的其他处理,在其他处理结束后,执行标志检查命令。具体地说,标志写入/确认器121A反复检查是否向ACC内标志授受寄存器126写入了同步标志。然后,标志写入/确认器121A确认到被写入的同步标志后,ACC本体121使用ACC寄存器122中保存的数据,开始自身的处理。自身的处理结束后,将处理结果保存到ACC寄存器122。然后,在执行标志设置命令时,将由命令指定的值写入ACC内标志授受寄存器126的由命令指定的位置(地址)。这样,ACC本体121和加载/储存单元123协同动作。
(ACC本体121和加载/储存单元123的协同动作2)
接下来,作为ACC本体121和加载/储存单元123的协同动作的第2例,说明由ACC本体121结束处理后、由加载/储存单元123将处理后的数据保存到LM15的动作。
ACC本体121结束规定的处理后,将处理结果的数据发送给ACC寄存器122。然后,标志写入/确认器121A将与该规定的处理对应的同步标志写入ACC内标志授受寄存器126。在此期间,标志写入/确认器123A反复检查是否向ACC内标志授受寄存器126写入了同步标志。标志写入/确认器123A确认到被写入的同步标志后,加载/储存单元123开始将ACC寄存器122中保存的数据向LM15或DSM14传送的处理。这样,ACC本体121和加载/储存单元123协同动作。
如以上那样,在第4构成例的ACC12中,ACC本体121和加载/储存单元123通过经由ACC内标志授受寄存器126的标志设置/检查,相互取得同步而进行协同动作。因此,与经由前述的第1~第3构成例的LM15或DSM14的标志设置/检查相比,能够降低标志设置/检查的***开销。
图6是表示本发明的实施方式的标志写入/确认器121A(123A)的构成例的图。如图6所示,标志写入/确认器121A具备地址寄存器21、标志值寄存器22、总线接口23、条件值寄存器24、比较器25、26、定序器27。
该标志写入/确认器121A(123A)的动作分为写入同步标志的动作(标志设置)和确认同步标志的动作(标志检查),所以分别说明这些动作。
(标志设置)
标志写入/确认器121A向LM15或DSM14等存储器上的规定的地址写入同步标志。具体地说,处理器11向标志写入/确认器121A输入标志地址(应该写入同步标志的存储器上的地址)、标志值(应该写入的同步标志的值)及标志设置的指示,标志写入/确认器121A按照该指示进行动作。
这样,向地址寄存器21和标志值寄存器22分别写入标志地址和标志值。此外,向定序器27写入标志设置的指示。总线接口23基于这些输入的信息,发行总线请求,并向被指定的存储器上的地址写入被指定的同步标志的值。
(标志检查)
另一方面,标志写入/确认器121A确认对LM15或DSM14等存储器上的规定的地址设置的同步标志。具体地说,首先,标志写入/确认器121A输入标志地址(应该确认的存储器上的地址)、标志值(应该确认的同步标志的值)及标志检查的指示。
这样,向地址寄存器21和标志值寄存器22分别写入了标志地址和标志值。此外,向定序器27写入了标志检查的指示。总线接口23基于这些输入的信息中的标志地址及标志检查指示,发行总线请求,并读取被指定的存储器上的地址所保存的同步标志的值。
由总线接口23读取的标志值(以下称为“读取标志值”)被发送到比较器26。比较器26比较读取标志值和标志值寄存器22的标志值。两者一致的情况下,将一致的意思输出至定序器27,两者不一致的情况下,将不一致的意思输出至定序器27。定序器27在比较器26的输出结果不一致的情况下,向总线接口23请求再次读取。另一方面,比较器26的输出结果一致的情况下,通知处理结束。
另一方面,确认同步标志的值是否与规定的条件值一致的情况下,处理器11进一步向标志写入/确认器121A输入同步标志的条件值。通过指定条件值,能够通知特定处理的指示。这里的特定处理指的是,在同步标志的值为条件值的情况下执行的处理,例如与图2的控制寄存器群组124的值对应的处理。这样,向条件值寄存器24写入了同步标志的条件值。这种情况下,由总线接口23读取的读取标志值被发送至比较器25。比较器25比较读取的标志值和条件值寄存器24中保存的条件值。两者一致的情况下,将一致的意思输出至定序器27。此外,两者不一致的情况下,将不一致的意思输出至定序器27。定序器27在比较器25的输出结果不一致的情况下,向总线接口23请求再次读取。另一方面,比较器25的输出结果一致的情况下,通知特定处理的指示。
作为补充,标志写入/确认器121A向LM15或DSM14等存储器上的规定的地址写入同步标志的情况下,通过变更被写入的地址,能够写入多个同步标志。即,根据ACC12所执行的处理的进行状况,能够向同步标志区域写入(输出)表示进行经过的不同的多个标志。各标志与后续于ACC12执行的处理而应该由处理器11或DTU13执行的处理建立对应。由此,例如处理器11能够开始与由ACC12写入到同步标志区域的标志建立了对应的、应该后续执行的处理。另外,处理器11和DTU13也同样,能够根据自身所执行的处理的进行状况,向同步标志区域写入表示进行经过的不同的多个标志。
图7是表示本发明的实施方式的标志写入/确认器121A(123A)的标志设置/检查的动作的概要的图。在此,将标志设置/检查的动作分为7个阶段来说明。
阶段(0)是初始设定的阶段。即,在LM15的同步标志区域15-2中确保标志变量A、标志变量B用的存储器区域。标志变量A、B的值用i(i=0等)来预先初始化。
在阶段(1)中,处理器11向标志变量A的值写入(i+1)。在阶段(2)中,DTU13在阶段(1)的前后反复检查标志变量A的值是否变化为(i+1)。
在阶段(3)中,在标志变量A的值变化为(i+1)的情况下,DTU13执行数据传送。在阶段(4)中,DTU13结束数据传送后,向标志变量B的值写入(i+1)。
在阶段(5)中,ACC12在阶段(4)的前后反复检查标志变量B的值是否变化为(i+1)。在阶段(6)中,标志变量B的值变化为(i+1)的情况下,ACC12执行自身应该执行的加速处理。
如以上所示,处理器11和DTU13通过标志变量A进行协同动作。同样地,DTU13和ACC12通过标志变量B进行协同动作。即,处理器11、ACC12、DTU13通过LM15的同步标志区域15-2中保存的标志变量A、B进行协同动作。
另外,标志变量A、B除了LM15以外,也可以保存在DSM14、片内集中共用存储器40、片外集中共用存储器50中。例如,处理器核心10-1的DTU13可以向片内集中共用存储器40的同步标志区域40-2写入同步标志。这种情况下,其他处理器核心10-2~10-n的DTU13确认被写入同步标志区域40-2的同步标志。由此,不同的处理器核心10-1~10-n彼此通过标志变量协同地动作。
图8是表示在本发明的实施方式的多核心处理器***1中执行的程序的参考例的图。在此,首先说明通过以往的手法执行的程序。
在图8所示的程序80中,外侧for语句是用于由DTU13读取数据、以及保存内侧for语句的处理结果数据的循环语句。另一方面,内侧for语句是用于由ACC12对外侧for语句读取的数据执行加速处理的循环语句。
外侧for语句内的DTU加载语句是用于由DTU13从片外集中共用存储器50向LM15读取ACC12能够处理的量的数据的命令语句。内侧for语句内的加速器加载语句是用于由ACC12将被读取到LM15的数据的一部分读取到ACC寄存器122的命令语句。运算语句是用于由ACC12使用通过加速器加载语句读取的数据来进行运算的命令语句。加速器储存语句是用于由ACC12将运算语句的运算结果保存到LM15的命令语句。下一重复的准备语句是用于下一循环的准备处理(下一数据的基础地址计算、循环计数运算等)的命令语句。外侧for语句内的DTU储存语句是用于由DTU13将LM15中保存的运算结果的数据保存到片外集中共用存储器50的命令语句。在图8的程序中,作为保存应该由ACC处理的数据、以及由ACC处理后的数据的存储器而使用LM15,但是当然也可以替代LM15而使用DSM14。具体地说,在拥有LM15的处理器核心(例如处理器核心10-1)在本地利用的数据的情况下可以使用LM15,在与其他处理器核心10-1~10-n共用的数据的情况下能够使用DSM14。另外,LM15和DSM14由编译器分开使用。
图9是表示执行参考例的程序时的处理流程的图。
首先,在步骤901中,处理器11对DTU13发出驱动命令(901)。然后,在步骤902中,DTU13开始驱动,将ACC12能够处理的量的数据从片外集中共用存储器50读取到LM15(902)。DTU13结束加载处理后,向处理器11通知加载处理的结束。
在步骤903中,从DTU13接受到该通知的处理器11对ACC12发出驱动命令(903)。然后,在步骤904中,ACC12开始驱动,使用步骤902中读取的数据的一部分进行运算,并将运算结果保存到LM15(904)。ACC12结束一系列处理后,向处理器11通知处理结束。
在步骤905中,从ACC12接受到该通知的处理器11执行下一重复处理的准备(905)。然后,在步骤906中,对ACC12发出驱动命令(906)。然后,将步骤903~906的处理重复内侧for语句的循环的次数。
结束内侧for语句的循环处理后,在步骤907中,处理器11对DTU13发出驱动命令(907)。这样,在步骤908中,DTU13开始驱动,将LM15中保存的运算结果的数据保存到片外集中共用存储器50。然后,将步骤901~908的处理重复外侧for语句的循环的次数。
如以上说明,根据以往的手法,处理器11的处理、DTU13的处理、以及ACC12的处理不重复地逐次执行。此外,DTU13和ACC12的动作由处理器11控制。
图10是表示在本发明的实施方式的多核心处理器***1中执行的程序的第1例的图。
如图10所示,第1例的程序包括由处理器11执行的程序100、由DTU13执行的程序101、103、由ACC12执行的程序102。即,将通过图8所示的以往的手法执行的程序80变换为本发明的实施方式的处理器核心用(追加标志设置语句、标志检查语句等)之后,分割为由处理器11执行的程序100、由DTU13执行的程序101、103、由ACC12执行的程序102。
另外,各程序100、101、102、103包含标志设置语句及标志检查语句。标志检查语句是反复确认被写入到LM15或DSM14等存储器上的规定的地址的同步标志变量(例如A)的值、直到该值与预先设定的比较值一致的命令语句。向同步标志变量写入了标志的情况下,进入与该标志对应的以后的命令语句。另一方面,标志设置语句是用于向LM15或DSM14等存储器上的规定的地址写入标志、具体地说向同步标志变量写入数据的(更新被写入同步标志变量的数据)的命令语句。写入标志后,进入以后的命令语句。
此外,各程序100、101、102、103由后述的并行化编译器预先生成,并配置在LM15、DSM14等存储器上的规定的地址、即15-1、14-1等。
另外,DTU13及ACC12根据处理器11向控制寄存器群组124的数据写入或多核心处理器***1的起动而起动。然后,与处理器11独立地自主执行程序。例如,ACC12按照程序102,首先执行标志检查语句,标志被写入了标志变量C后,执行与写入的标志对应的以后的命令语句。
图11是表示执行第1例的程序时的处理流程的图。
首先,在步骤1101中,处理器11按照程序100进行动作,进入外侧for语句的循环,向标志变量A写入标志(1101)。然后,在步骤1102中确认标志变量B(1102)。
另一方面,在步骤1103中,DTU13按照程序101进行动作,确认标志变量A(1103)。通过步骤1101向标志变量A写入了标志后,DTU13开始数据的读取,数据的读取结束后,向标志变量B写入标志(1104)。这时,使被写入标志变量A的标志返回初始状态(重置)。
在步骤1105中,处理器11通过步骤1104向标志变量B写入了标志后,确认其标志值是否为规定的值,进入内侧for语句的循环,向标志变量C写入标志(1105)。然后,执行下一重复的准备(1106),确认标志变量D(1107)。
另一方面,在步骤1108中,ACC12按照程序102进行动作,确认标志变量C(1108)。通过步骤1105向标志变量C写入了标志后,ACC12确认其标志值是否为规定的值,开始执行加速处理,加速处理结束后,向标志变量D写入标志(1109)。这时,使被写入了标志变量C的标志返回初始状态。
在步骤1110中,处理器11通过步骤1109的处理向标志变量D写入了标志后,进入内侧for语句的下一循环,向标志变量C写入标志(1110)。这时,使被写入了标志变量D的标志返回初始状态。以后重复步骤1106~1110的处理。
在步骤1111中,处理器11在内侧for语句的循环处理结束后,向标志变量E写入标志(1111)。然后,确认标志变量F(1112)。另一方面,在步骤1113中,DTU13按照程序103进行动作,确认标志变量E(1113)。通过步骤1111向标志变量E写入了标志后,开始数据的保存,数据的保存结束后,向标志变量F写入标志(1114)。这时,使被写入了标志变量E的标志返回初始状态。
在步骤1115中,处理器11通过步骤1114向标志变量F写入了标志后,进入外侧for语句的下一循环,向标志变量A写入标志(1115)。这时,使被写入了标志变量F的标志返回初始状态。以后,重复步骤1102~1115的处理。
如以上的处理所示,处理器11、ACC12和DTU13通过标志设置及标志检查相互取得同步,并且分别自主地动作。根据该第1例的程序,处理器11能够在步骤1109所示的ACC12的处理中执行步骤1106的处理。即,能够使处理器11的处理和ACC12的处理重叠。因此,能够使下一重复的准备(步骤1106的处理)的开始时间提前。即,能够消除处理器11对ACC12的控制的***开销。
此外,ACC12按照LM15或DSM14中保存的程序102进行动作,所以不需要扩展命令集。即,对于任意的处理器11,不必扩展命令集,就能够追加任意的ACC12。
另外,第1例的程序重复外侧for语句及内侧for语句的循环处理。在此,也可以如下的构成程序:每当重复循环处理,便写入与重复次数相应的标志值。例如,在内侧for语句所示的循环处理的第n次重复中,向同步标志变量C、D写入赋予了编号n的标志值(例如Cn、Dn)并确认。由此,能够降低使标志值返回初始状态的***开销。
此外,也可以如下的构成程序:在执行标志检查语句时,根据对FVR124设定的值,到经过规定的时间为止的期间,使时钟频率变化为低频率或切断等。由此,能够削减标志检查的耗电。
图12是表示执行第1例的程序时的处理流程的变形例的图。
在此,作为图11所示的处理流程的变形例,说明如下的处理:在处理器11满足规定条件的情况下(条件分支或循环次数达到一定数的情况下),向标志变量C'写入标志,另一方面,ACC12执行与被写入标志变量C'的标志相应的动作。另外,用于执行这样的处理的处理器11、ACC12用的程序由后述的并行化编译器预先生成,并配置在LM15、DSM14等存储器上的规定的地址。
在步骤1116中,处理器11在内侧for语句的循环处理的执行中满足规定的条件的情况下(条件分支或循环次数达到一定数的情况下),向标志变量C'作为标志而写入条件值(1116)。条件值如前述那样,用于通知特定处理的指示。另一方面,ACC12确认标志变量C'(1117)。通过步骤1115向标志变量C'写入了条件值后,ACC12开始特别的动作。特别的动作指的是,例如读取控制寄存器群组124并执行读取的值所示的下一任务的动作。
如以上的处理所示,处理器11、ACC12和DTU13通过标志设置及标志检查相互取得同步,并且分别自主地动作。进而,根据该变形例的程序,即使ACC12正在执行加速处理,在处理器11满足规定条件的情况下,也能够变更为使ACC12进行特别的动作。即,能够进行动态调度。
图13是表示在本发明的实施方式的多核心处理器***1中执行的程序的第2例的图。
如图13所示,第2例的程序包括由处理器11执行的程序130、由DTU13执行的程序131、133、由ACC12执行的程序132。即,将图8所示的程序80变换为本发明的实施方式的处理器核心用(追加标志设置语句、标志检查语句等)之后,分割为由处理器11执行的程序130、由DTU13执行的程序131、133、由ACC12执行的程序132。
另外,各程序130、131、132、133包含与图10所示的形态不同的标志设置语句及标志检查语句。即,处理器11的内侧for语句的处理的结束(标志设置(H))决定ACC12的加速处理的执行开始(标志检查(H))。另一方面,ACC12的加速处理的结束(标志设置(G))决定处理器11的内侧for语句的处理的执行开始(标志检查(G))。
这样的各程序130、131、132、133由后述的并行化编译器预先生成,并配置在LM15、DSM14等存储器上的规定的地址。
图14是表示第2例的程序的执行时的处理流程的图。
首先在,在步骤1401中,处理器11按照程序130进行动作,进入外侧for语句的循环,向标志变量A写入标志(1401)。然后,在步骤1402中,确认标志变量B(1402)。
另一方面,在步骤1403中,DTU13按照程序131进行动作,检查标志变量A(1403)。通过步骤1401向标志变量A写入了标志并确认后,DTU13开始数据的读取,数据的读取结束后,向标志变量B写入标志(1404)。这时候,使被写入标志变量A的标志返回初始状态(重置)。
处理器11通过步骤1404向标志变量B写入了标志后,进入内侧for语句的循环,确认标志变量G(1405)。在此,向标志变量G作为初始设定写入了标志。然后,执行下一重复的准备(1406),向标志变量H写入标志(1407)。这时,使被写入了标志变量G的标志返回初始状态。然后,进入外侧for语句的下一循环,确认标志变量G(1408)。以后,重复步骤1406~1408的处理。
另一方面,在步骤1409中,ACC12按照程序132进行动作,确认标志变量B(1409)。通过步骤1404向标志变量B写入了标志后,确认标志变量H(1410)。在此,向标志变量H作为初始设定写入了标志。然后,开始执行加速处理,加速处理结束后,向标志变量G写入标志(1411)。这时,使被写入了标志变量H的标志返回初始状态。以后,重复步骤1410~1411的处理。
在步骤1412中,处理器11在内侧for语句的循环处理结束后,向标志变量E写入标志(1412)。然后,确认标志变量F(1413)。另一方面,在步骤1414中,DTU13按照程序133进行动作,确认标志变量E(1414)。通过步骤1412向标志变量E写入了标志后,开始数据的保存,数据的保存结束后,向标志变量F写入标志(1415)。这时,使被写入了标志变量E的标志返回初始状态。
在步骤1416中,处理器11通过步骤1415向标志变量F写入了标志后,进入外侧for语句的下一循环,向标志变量A写入标志(1416)。这时,使被写入到标志变量F、B的标志返回初始状态。以后,重复步骤1402~1416的处理。
如以上的处理所示,处理器11、ACC12、DTU13经由标志设置及标志检查相互取得同步,并且分别自主地动作。根据该第2例的程序,处理器11能够在步骤1411所示的ACC12的处理中执行步骤1406的处理。即,处理器11的处理和ACC12的处理重叠。
此外,通过步骤1407的处理,能够在ACC12的步骤1417、1418的处理之前从处理器11发出ACC12的控制的触发。因此,能够使下一重复的准备(步骤1406)的开始时间提前处理器11的标志检查/设置的量。即,能够消除处理器11的ACC12的控制的***开销。
另外,第2例的程序与第1例的程序同样,重复外侧for语句和内侧for语句的循环处理。在此,也可以如下地构成程序:每当重复循环处理,都写入与重复次数相应的标志值。例如,在内侧for语句所示的循环处理的第n次重复中,向同步标志变量H写入赋予了编号n的标志值(例如Hn)并确认。由此,能够减少使标志值返回初始状态的***开销。
此外,也可以如下地构成程序:在执行标志检查语句时,根据对FVR124设定的值,到经过规定的时间为止的期间,使时钟频率变化为低频率或切断等。由此,能够削减标志检查的耗电。
图15是表示在本发明的实施方式的多核心处理器***1中执行的程序的第3例的图。
如图15所示,第3例的程序包含由处理器11执行的程序150、由DTU13执行的程序151、153、由ACC12执行的程序152、154。即,将图8所示的程序80变换为本发明的实施方式的处理器核心用(追加标志设置语句、标志检查语句等)之后,分割为由处理器11执行的程序150、由DTU13执行的程序151、由DTU13执行的程序153、由ACC12执行的程序152及由ACC12执行的程序154。
此外,处理器11用的程序150与图10所示的程序100的不同点在于,内侧for语句被分为多个(在图15中,外侧for语句的第奇数个回转(第2n+1个回转,以下简称为“第奇数个回转”)、以及第偶数个回转(第2n个回转,以下简称为“第偶数个回转”)。
同样,DTU13用的程序也被分为多个(在图15中为程序151及153)。程序151是如下的程序:保存LM15中保存的第偶数个回转的计算结果,并且将下一第偶数个回转的计算用的数据读取到LM15。另一方面,程序153是如下的程序:保存LM15中保存的第奇数个回转的计算结果,并且将下一第奇数个回转的计算用的数据读取到LM15。另外,在LM15中未保存有计算结果的情况下,不执行计算结果的保存。
此外,ACC12用的程序也被分为多个(在图15中为程序152、154)。程序152是用于执行第奇数个回转的加速处理的程序。另一方面,程序154是用于执行第偶数个回转的加速处理的程序。
另外,各程序150、151、152、153、154包含与图10所示的形态不同的标志设置语句及标志检查语句。这样的各程序150、151、152、153、154由后述的并行化编译器预先生成,并配置在LM15、DSM14等存储器上的规定的地址。
图16是表示第3例的程序的执行时的处理流程的图。
首先,在步骤1601中,处理器11按照程序150进行动作,进入外侧for语句的循环,向标志变量A1写入标志,并执行标志变量B0的确认(1601)。
然后,在步骤1602中,处理器11进入外侧for语句的第奇数个回转(为便于说明,设为第1个回转)的循环,重复标志变量G0的确认、下一重复的准备、以及向标志变量H0的标志的写入(1602)。该步骤1602的处理与图14的步骤1405~1407的处理的重复相同,所以在此省略说明。另外,使被写入到标志变量B0的标志返回初始状态(重置)。
另一方面,在步骤1603中,DTU13按照程序151进行动作,执行标志变量A1的确认、数据的保存、数据的读取、以及向标志变量B1的标志的写入(1603)。在该步骤1603的处理中,不存在应该保存的数据,所以DTU13将下一第偶数个回转、即第2个回转的加速处理(步骤1608)用的数据读取到LM15。
另一方面,在步骤1604中,ACC12按照程序152进行动作,执行标志变量B0的确认、标志变量H0的确认、以及第1个回转的加速处理(1604)。这时,使被写入到标志变量B0、H0的标志返回初始状态。
如以上的步骤1601~1604的处理所示,处理器11、ACC12、DTU13经由标志设置及标志检查相互取得同步,并且分别自主地动作。特别是,ACC12在执行第1个回转的加速处理时,DTU13能够保存上次的加速处理(在此不存在)的计算结果的数据,并且读取第2个回转的加速处理所使用的数据。即,处理器11的处理、ACC12的处理的、DTU13的处理能够重叠。
然后,在步骤1605中,处理器11执行向标志变量A0的标志的写入、标志变量B1的确认(1605)。
然后,在步骤1606中,处理器11进入外侧for语句的第2个回转的循环,重复标志变量G1的确认、下一重复的准备、以向标志变量H1的标志的写入(1606)。该步骤1606的处理也和图14的步骤1405~1407的处理的重复相同,所以在此省略说明。另外,使被写入到标志变量B1的标志返回初始状态。以后,处理器11重复步骤1601、1602、1605及1606的处理。
另一方面,在步骤1607中,DTU13按照程序153进行动作,执行标志变量A0的确认、数据的保存、数据的读取、以及向标志变量B0的标志的写入(1607)。在该步骤1606的处理中,将步骤1604所示的第1个回转的加速处理的计算结果保存到LM15,并且将下一第奇数个回转、即第3个回转的加速处理用的数据读取到LM15。以后,DTU13重复步骤1603及1607的处理。
此外,在步骤1608中,ACC12按照程序154进行动作,执行标志变量B1的确认、标志变量H1的确认、以及第2个回转的加速处理(1608)。在该步骤1608的处理中,对通过步骤1603读取的第2个回转的加速处理用的数据执行加速处理。这时,使被写入到标志变量B1、H1的标志返回初始状态。以后,ACC12重复步骤1604及1608的处理。
如以上的步骤1605~1608的处理所示,处理器11、ACC12、DTU13经由标志设置及标志检查相互取得同步,并且分别自主地动作。特别是,在ACC12执行第2个回转的加速处理时,DTU13能够保存第1个回转的加速处理的计算结果的数据,并且读取第3个回转的加速处理中使用的数据。即,处理器11的处理、ACC12的处理、DTU13的处理能够重叠。
如以上的处理所示,处理器11、ACC12、DTU13经由标志设置及标志检查相互取得同步,并且分别自主地动作。根据该第3例的程序,在ACC12执行加速处理(例如第奇数个回转的处理)时,DTU13能够保存上次的加速处理(第偶数个回转的处理)的计算结果的数据,并且取得下次加速处理(第偶数个回转的处理)所使用的数据。
此外,通过分为ACC12的处理用的数据区域、DTU13的数据储存用的数据区域、DTU13的数据加载用的数据区域(三重缓冲),并且使处理器11的处理、ACC12的处理、DTU13的处理重叠,能够消除数据传送的***开销并使处理高速化。此外,与前述的第2例的程序相比,能够将计算时间进一步缩短该数据传送的***开销的量。
另外,第3例的程序与第1例及第2例的程序同样,重复外侧for语句和内侧for语句的循环处理。在此,也可以将程序构成为:每当重复循环处理,就写入与重复次数相应的标志值。例如,在内侧for语句所示的循环处理的第n次重复中,向标志变量H0、H1写入赋予了编号n的标志值(例如H0n、H1n)并确认。由此,能够降低使标志值返回初始状态的***开销。
此外,也可以如下地构成程序:在执行标志检查语句时,根据对FVR124设定的值,到经过规定的时间为止的期间,使时钟频率变化为低频率或切断。由此,能够削减标志检查的耗电。
图17是表示在本发明的实施方式的多核心处理器***1中执行的程序的第4例的执行时的处理流程的图。
第4例的程序包含由处理器11执行的程序1701~1703、由DTU13执行的程序1704~1710、以及由ACC12执行的程序1711~1725。
另外,考虑LM15等的存储器尺寸而将由多核心处理器***1执行的程序的一系列处理分割为多个循环处理的情况下,程序1701~1703是与各循环处理对应的处理器11用的程序。同样,程序1704~1710、程序1711~1725分别是上述情况下的DTU13用的程序、ACC12用的程序。
这些程序1701~1725由后述的并行化编译器预先生成,并配置在LM15、DSM14等存储器上的规定的地址。
另外,程序1701包含写入用于与程序1704的处理协同的标志的程序、写入用于与程序1712的处理协同的标志的程序、以及处理器11从LM15、DSM14等读取数据并进行运算处理的程序(即,能够与ACC12等并行地进行动作的处理器11的程序)。同样,程序1702及1703包含写入用于与DTU13或ACC12的处理协同的标志的程序。
程序1704是由DTU13将程序1716中由ACC12在加速处理中使用的数据提前读取到(预加载)LM15或DSM14的程序。该程序1704将由后述的并行化编译器最优化之后的尺寸的数据预加载到LM15或DSM14。该程序1704包含写入用于与程序1715的处理协同的标志的程序。
程序1705是确认在程序1702的处理中被写入的标志的程序。
程序1706是由DTU13将程序1722中由ACC12在加速处理中使用的数据提前预加载到LM15或DSM14的程序。该程序1706与程序1704同样,将由后述的并行化编译器最优化之后的尺寸数据预加载到LM15或DSM14。该程序1706包含写入用于与程序1721的处理协同的标志的程序。
程序1707是将程序1713中由ACC12保存到LM15或DSM14等存储器的数据保存到(后储存)片内集中共用存储器40或片外集中共用存储器50的程序。该程序1707包含确认由程序1713写入的标志的程序。程序1708~1710与程序1705~1707相同,因此在此省略说明。
程序1711是确认通过程序1701的处理被写入的标志的程序。程序1712是ACC12与处理器11协同而始终重复执行加速处理的程序。另外,为了便于说明,这里设为执行加速处理时使用的数据已经被预加载。程序1713是将程序1712的加速处理的计算结果的数据保存到LM15或DSM14等存储器的程序。
程序1714是确认通过程序1704的处理被写入的标志的程序。程序1715是将在程序1704的处理中由DTU13预加载到LM15或DSM14的数据读取到ACC寄存器122的程序。程序1716是ACC12对被读取到ACC寄存器122的数据执行加速处理的程序。
程序1717~1725与程序1711~1716相同,因此在此省略说明。
如以上的处理所示,处理器11、ACC12、DTU13经由标志设置及标志检查相互取得同步,并且分别自主地动作。根据该第4例的程序,能够在将ACC12的处理分为与DTU13协同(链锁化)地执行处理的部分(例如程序1716)、和与处理器11协同地执行重复处理的部分(例如程序1718)之后执行处理。因此,在与例如DTU13之间的协同处理中,不经由处理器11地执行加速处理,所以能够消除处理器11的控制的***开销。
此外,通过预加载处理,DTU13在ACC12执行加速处理时,将预先由并行化编译器最优地分割的尺寸的ACC12的下次处理用的数据读取到LM15等。因此,能够向ACC12连续地供给数据。另一方面,通过后储存处理,DTU13在ACC12执行加速处理时,能够从LM15等保存ACC12的加速处理的计算结果的数据。
图18是表示在本发明的实施方式的多核心处理器***1中执行的程序的第5例的执行时的处理流程的图。在此,说明多个不同的处理器核心10-1、10-2上的DTU13-1、ACC12-1、DTU13-2通过标志设置/检查来协同的动作。
第5例的程序包含由处理器核心10-1的处理器11-1执行的程序1801、1802、由DTU13-1执行的程序1803、1804、由ACC12-1执行的程序1805、1806。此外,包含由处理器核心10-2的处理器11-2执行的程序1811、由DTU13-2执行的程序1812、1813。
处理器核心10-1用的程序1801~1806由后述的并行化编译器预先生成,并配置在处理器核心10-1的LM15、DSM14等存储器上的规定的地址。另一方面,处理器核心10-2用的程序1807~1809配置在处理器核心10-2的LM15、DSM14等存储器上的规定的地址。
另外,程序1801是由处理器11-1执行任务1的程序。该程序1801包含如下的程序:在执行任务1时,将用于与DTU13-1的程序1803的处理协同的标志写入到处理器核心10-1的LM15等的程序。程序1802是由处理器11-1执行任务2的程序。
程序1803是确认通过处理器11-1的程序1801的处理被写入的标志的程序。程序1804是由DTU13-1将LM15或DSM14中保存的处理器11-1的计算结果的数据保存到片外集中共用存储器50的程序。该程序1804包含将用于与DTU13-2的程序1812的处理协同的标志写入到处理器核心10-2的DSM14的程序。
程序1805是由ACC12-1确认通过DTU13-2的程序1812的处理被写入的标志的程序。程序1806是ACC12-1对通过DTU13-2的程序1813传送的数据执行加速处理的程序。
程序1811是处理器11-2执行任务3的程序。程序1812是DTU13-2确认通过DTU13-1的程序1804的处理被写入的标志的程序。程序1813是DTU13-2将LM15或DSM14中保存的处理器11-2的计算结果的数据保存到处理器核心10-1的DSM14的程序。该程序1813包含将用于与ACC12-1的程序1805的处理协同的标志写入到处理器核心10-1的DSM14的程序。
如以上的处理所示,多个不同的处理器核心10-1、10-2上的处理器11、ACC12、DTU13通过标志设置及标志检查相互取得同步,并且分别自主地动作。
从本发明的到此为止的说明可知,不仅是处理器核心10-1、10-2那样的2个处理器核心间之间,全部处理器核心10-1~10-n(中的处理器11、ACC12、DTU13)并行地执行由并行化编译器从逐次处理程序生成的各处理器核心用的程序的情况下,能够自主地执行该处理的同步化。由此,即使新追加ACC12,也不需要新扩展命令集,并且大幅减少伴随着同步化的处理器11、ACC12、DTU13的参与、即***开销,从而能够执行高效的运算处理。
图19是本发明的实施方式的并行化编译器执行的处理的流程图。在此,说明从逐次处理程序生成的并行化编译器在计算机上执行在包含本发明的实施方式的ACC的处理器***上进行执行处理的并行化程序的处理。编译器通常指的是将编译对象的源程序变换为所谓计算机可执行的程序(机器语言的程序等)的软件,但是本发明中所说的并行化编译器如前述那样,指的是从逐次处理程序的源代码生成并行化程序的编译器。
首先,并行化编译器解析源程序的字句,并解析程序的语法(1901)。另外,在本实施方式中由编译器来解析程序,但是也可以由程序员(人)来解析程序。此外,在制作程序时,可以制作本实施方式中需要的程序的信息。
接着,并行化编译器基于语法的解析结果,生成阶层性的任务、即程序的阶层性宏任务的表达(1902)。在此,生成由处理器11用的任务、ACC12用的任务等构成的粗粒度任务(宏任务)。另外,生成的宏任务能够进行循环等级的并行处理和逐次处理的情况下,考虑LM15等的存储器尺寸,分割为不同的多个宏任务(循环整合分割)。
然后,对生成的任务间的依存关系(控制流程)进行解析(1903),对任务间的数据依存进行解析(1904),对由各任务访问的数据的范围进行解析(1905)。
然后,使用程序的解析结果,对程序能够最早执行的条件进行解析(1906),使用最早执行条件的解析结果来决定并行处理区间和被分配了任务的处理器数,生成宏任务图表。
然后,执行决定各任务的执行顺序的任务调度(1907)。在此执行的任务调度执行存储器管理/任务调度、数据传送调度及低耗电调度。
存储器管理/任务调度指的是,用于执行经由各处理器核心10-1~10-n的LM15的高效的数据的授受的调度。
数据传送调度指的是,如图17的例子所示的预加载和后储存那样,用于实现各处理器核心10-1~10-n中的数据传送、及多核心处理器***1整体的数据传送的最优化的调度。
低耗电调度指的是,在处理器11、ACC12、DTU13处于等待状态的情况下,根据等待时间来使时钟频率变化为低频率或切断电源的、实现电力控制的调度。
然后,基于通过步骤1907执行的任务调度,生成能够在多核心处理器***1中执行的并行程序(1908)。该并行程序包含处理器11用的任务、ACC12用的任务、DTU13用的任务的命令语句。在此生成的并行程序中,向相互存在依存关系的处理器11用的任务、ACC12用的任务及DTU13用的任务的命令语句***标志设置语句、标志检查语句。这些ACC12用的任务、DTU13用的任务的命令语句及标志区域配置在DSM14、LM15、片内集中共用存储器40、片外集中共用存储器中的至少某一个以上的存储器。
另外,也可以将特定的动作与标志的值建立关联,并指定标志检查后的动作。例如,将ACC12用的标志检查语句构成为,在检查的标志的值为特定值的情况下,确认控制寄存器群组124的值,执行由处理器11指定的命令串(任务)。
如以上所示,并行化编译器为各处理器11、ACC12、DTU13生成不同的程序。然后,并行化编译器将生成的程序保存到各处理器核心10-1~10-n的LM15、DSM14、片内集中共用存储器40、片外集中共用存储器50上的规定的地址。
以上说明了本发明的实施方式,但是上述实施方式只示出本发明的一个应用例,本发明的技术范围不限于上述实施方式的具体构成。在不脱离本发明的主旨的范围内,能够进行各种变更。
例如,在本发明的实施方式中,说明了处理器11、ACC12、DTU13通过标志设置/检查来相互同步的动作,但是不限于这种情况。各装置也可以通过标志设置/检查以外的方法、即发行及确认表示自装置的处理结束的通知来相互进行同步。

Claims (21)

1.一种处理器***,在半导体芯片上具备处理器核心,该处理器核心具有:进行运算处理的处理器、存储器、以及经由耦合网与所述处理器及所述存储器连接的加速器,所述处理器***的特征在于,
所述存储器具有:命令区域,预先存储由所述处理器及所述加速器执行的任务;同步标志区域,存储用于在所述处理器和所述加速器之间使各个动作同步的标志;以及数据区域,保存所述处理器及所述加速器在处理中使用的数据及处理后的数据,
所述加速器按照所述命令区域中存储的任务进行动作,
当确认到表示所述处理器的规定处理已结束的标志被写入所述同步标志区域时,即使所述处理器正在执行其他处理,所述加速器也读取被写入所述数据区域的数据并执行与该标志对应的任务,从而开始加速处理,
在所述加速处理结束后,所述加速器将所述加速处理后的数据保存到所述数据区域,并且将表示该加速处理已结束的标志写入到所述同步标志区域,
所述处理器确认到表示所述加速处理已结束的标志被写入所述同步标志区域后,即使所述加速器正在执行其他处理,也开始与该标志对应的任务。
2.如权利要求1所述的处理器***,其特征在于,
所述加速器及所述处理器的每一个,根据自身所执行的处理的进行状况,将后续应该执行的任务所分别对应的不同的多个标志写入所述同步标志区域,后续执行任务的所述加速器及所述处理器的每一个确认被写入到所述同步标志区域的标志,执行所述对应的任务。
3.如权利要求1或2所述的处理器***,其特征在于,
所述存储器包含能够由所述加速器及所述处理器访问的本地存储器、以及还能够由其他处理器核心访问的分散共用存储器的至少一方,
所述处理器核心还具有在所述存储器间传送数据的数据传送单元,
所述同步标志区域包含存储用于在数据传送单元和处理器及加速器之间使各自的动作同步的标志的区域,
所述命令区域包含预先存储由数据传送单元执行的任务的区域,
所述加速器确认到表示所述数据传送单元的规定的数据传送处理已结束的标志被写入到所述同步标志区域后,即使所述数据传送单元正在执行其他数据传送处理,也读取被写入到所述数据区域的数据,并执行与该标志对应的任务,从而开始加速处理,
在所述加速处理结束后,所述加速器将所述加速处理后的数据保存到所述数据区域,并且将表示该加速处理已结束的标志写入到所述同步标志区域,
所述数据传送单元确认到表示所述加速处理已结束的标志被写入到所述同步标志区域后,即使所述加速器正在执行其他处理,也执行与该标志对应的任务,从而开始数据传送处理。
4.一种处理器***,在半导体芯片上具备处理器核心,该处理器核心作为构成要素具有:进行运算处理的处理器、存储器、在所述存储器间传送数据的数据传送单元、经由耦合网与所述处理器及所述存储器及所述数据传送单元连接的加速器,所述处理器***的特征在于,
所述存储器具有:命令区域,预先存储由所述处理器及所述数据传送单元及所述加速器的各构成要素执行的任务;同步标志区域,存储用于在所述各构成要素间使各个动作同步的标志;以及数据区域,保存所述各构成要素在处理中使用的数据及处理后的数据,
所述各构成要素按照与所述命令区域中存储的所述各构成要素对应的任务进行动作,
所述处理器在所述数据传送单元及所述加速器的某一个构成要素结束规定的处理后,将处理后的数据保存到所述数据区域,并且将表示该处理已结束的标志写入到所述同步标志区域,由所述一个构成要素以外的其他构成要素确认到所述标志被写入后,即使所述一个构成要素正在执行其他处理,所述其他构成要素也读取所述数据区域中保存的所述处理后的数据并开始与该标志对应的任务,与所述该标志对应的任务结束后,将与所述该标志对应的任务的执行后的数据保存到所述数据区域,并且将表示与所述该标志对应的任务已结束的标志写入所述同步标志区域,
所述处理器、所述数据传送单元及所述加速器中的所述其他构成要素以外的构成要素,在确认到表示与所述该标志对应的任务已结束的标志被写入所述同步标志区域时,即使所述其他构成要素正在执行其他处理,也开始执行与该标志对应的任务。
5.如权利要求1~4中任一项所述的处理器***,其特征在于,
所述各构成要素执行的任务是参照对由所述处理器***执行的程序进行解析而得到的信息、从所述程序生成的,所述生成的任务与所述标志建立对应。
6.如权利要求1~5中任一项所述的处理器***,其特征在于,
所述加速器具有:处理部,执行加速处理;内部存储区域,暂时保存由所述处理部处理后的数据;以及加载/储存单元,在所述内部存储区域和所述存储器之间执行数据传送,
所述加载/储存单元具有加载/储存单元侧标志写入/确认器,该加载/储存单元侧标志写入/确认器根据所述内部存储区域和所述存储器之间的数据传送的执行状况,向所述同步标志区域写入标志、以及确认向所述同步标志区域写入了标志的情况。
7.如权利要求1~5中任一项所述的处理器***,其特征在于,
所述加速器具有:处理部,执行加速处理;以及内部存储区域,暂时保存由所述处理部处理后的数据,
所述处理部具有处理部侧标志写入/确认器,该处理部侧标志写入/确认器根据所述内部存储区域和所述处理部之间的数据传送的执行状况,向所述同步标志区域写入标志、以及确认向所述同步标志区域写入了标志的情况。
8.如权利要求1~5中任一项所述的处理器***,其特征在于,
所述加速器具备:处理部,执行加速处理;内部存储区域,暂时保存由所述处理部处理后的数据;以及加载/储存单元,在所述内部存储区域和所述存储器之间执行数据传送,
所述处理部具有处理部侧标志写入/确认器,该处理部侧标志写入/确认器根据该处理部的处理的执行状况,向所述同步标志区域写入标志、以及确认向所述同步标志区域写入了标志的情况,
所述加载/储存单元具有加载/储存单元侧标志写入/确认器,该加载/储存单元侧标志写入/确认器根据该加载/储存单元的处理的执行状况,向所述同步标志区域写入标志、以及向所述同步标志区域写入了标志的情况。
9.如权利要求1~5中任一项所述的处理器***,其特征在于,
所述加速器具备:处理部,执行加速处理;内部存储区域,暂时保存由所述处理部处理后的数据;加载/储存单元,在所述内部存储区域和所述存储器之间执行数据传送;以及标志授受寄存器,存储用于使所述处理部和所述加载/储存单元的动作同步的标志,
所述处理部具有处理部侧标志写入/确认器,该处理部侧标志写入/确认器根据该处理部的处理的执行状况,向所述同步标志区域或所述标志授受寄存器写入标志、以及确认向所述同步标志区域或所述标志授受寄存器写入了标志的情况,
所述加载/储存单元具有加载/储存单元侧标志写入/确认器,该加载/储存单元侧标志写入/确认器根据该加载/储存单元的处理的执行状况,向所述同步标志区域或所述标志授受寄存器写入标志、以及确认向所述同步标志区域或所述标志授受寄存器写入了标志的情况。
10.如权利要求1~5中任一项所述的处理器***,其特征在于,
所述处理器***具备多个所述处理器核心。
11.如权利要求10所述的处理器***,其特征在于,
所述处理器***具备由多个所述处理器核心共用的所述半导体芯片上的片内集中共用存储器和由多个所述处理器核心共用的所述半导体芯片外部的片外集中共用存储器中的至少一方。
12.如权利要求1~6中任一项所述的处理器***,其特征在于,
所述加速器具备FV寄存器,该FV寄存器用于决定针对该加速器的供给电压和动作频率、以及对电源进行控制,
所述加速器在确认到向所述同步标志区域写入了标志后,根据所述FV寄存器中设定的值,执行该加速器的时钟频率的增减、电源电压的增减、以及电源的通断的至少一个。
13.如权利要求3或4所述的处理器***,其特征在于,
所述存储器还包括设置在所述加速器内的存储器及寄存器的至少一方,
所述数据传送单元,
在确认到表示所述加速处理已结束的标志被写入了所述同步标志区域后,即使所述处理器或所述加速器正在执行其他处理,也将所述加速器的加速处理的计算结果的数据从所述加速器保存到所述存储器,
即使所述处理器或所述加速器正在执行其他处理,也执行从所述存储器将所述加速器在下次加速处理中使用的数据提前读取到所述加速器的加载处理,
将表示所述加载处理已结束的标志写入到所述同步标志区域。
14.一种加速器,包含在处理器***中,该处理器***包括:处理器,进行运算处理;以及加速器,经由耦合网与存储数据的存储器连接;该加速器的特征在于,
所述存储器具有:命令区域,预先存储由所述处理器及所述加速器执行的任务;同步标志区域,存储用于在所述处理器和所述加速器之间使各个动作同步的标志;以及数据区域,保存所述处理器及所述加速器在处理中使用的数据及处理后的数据;
所述加速器具备:处理部,执行加速处理;以及内部存储区域,暂时保存由所述处理部处理后的数据;
按照所述命令区域中存储的任务进行动作,
在确认到表示所述处理器已结束规定的处理的标志被写入到所述同步标志区域后,即使所述处理器正在执行其他处理,也由所述处理部执行与该标志对应的任务,从而开始加速处理,
所述加速处理结束后,将所述加速处理的计算结果的数据写入所述内部存储区域,并且将表示该加速处理已结束的标志写入所述同步标志区域。
15.如权利要求14所述的加速器,
所述处理器及所述加速器执行的任务是参照对由所述处理器***执行的程序进行解析而得到的信息、从所述程序生成的,所述生成的任务和所述标志建立对应。
16.如权利要求14或15所述的加速器,
所述加速器根据自身执行的处理的进行状况,将后续应该执行的任务所分别对应的不同的多个标志写入所述同步标志区域。
17.如权利要求13~16中任一项所述的加速器,
所述加速器具备FV寄存器,该FV寄存器用于决定针对该加速器的供给电压和动作频率、以及对电源进行控制,
所述加速器确认到向所述同步标志区域写入了标志后,根据所述FV寄存器中设定的值,执行向该加速器的时钟频率的增减、电源电压的增减、以及电源的通断的至少一个。
18.如权利要求13~17中任一项所述的加速器,其特征在于,
所述加速器具备加载/储存单元,该加载/储存单元在所述内部存储区域和所述存储器之间执行数据传送,
所述加载/储存单元加载/储存单元侧标志写入/确认器,该加载/储存单元侧标志写入/确认器根据所述内部存储区域和所述存储器之间的数据传送的执行状况,向所述同步标志区域写入标志、以及确认向所述同步标志区域写入了标志的情况。
19.如权利要求18所述的加速器,其特征在于,
所述处理部具有处理部侧标志写入/确认器,该处理部侧标志写入/确认器根据该处理部的处理的执行状况,向所述同步标志区域写入标志、以及确认向所述同步标志区域写入了标志的情况。
20.如权利要求19所述的加速器,其特征在于,
所述加速器具备标志授受寄存器,该标志授受寄存器存储用于使所述处理部和所述加载/储存单元的动作同步的标志,
所述处理部侧标志写入/确认器根据该处理部的处理的执行状况,向所述标志授受寄存器写入标志、以及确认向所述标志授受寄存器写入了标志的情况,
所述加载/储存单元侧标志写入/确认器根据该加载/储存单元的处理的执行状况,向所述标志授受寄存器写入标志、以及确认向所述标志授受寄存器写入了标志的情况。
21.如权利要求13~17中的任一项所述的加速器,
所述处理部具有处理部侧标志写入/确认器,该处理部侧标志写入/确认器根据所述内部存储区域和所述处理部之间的数据传送的执行状况,向所述同步标志区域写入标志、以及确认向所述同步标志区域写入了标志的情况。
CN201280065692.7A 2011-11-04 2012-10-30 处理器***及加速器 Active CN104025045B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2011242824 2011-11-04
JP2011-242824 2011-11-04
PCT/JP2012/078043 WO2013065687A1 (ja) 2011-11-04 2012-10-30 プロセッサシステム及びアクセラレータ

Publications (2)

Publication Number Publication Date
CN104025045A true CN104025045A (zh) 2014-09-03
CN104025045B CN104025045B (zh) 2017-07-04

Family

ID=48192033

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280065692.7A Active CN104025045B (zh) 2011-11-04 2012-10-30 处理器***及加速器

Country Status (6)

Country Link
US (2) US9846673B2 (zh)
JP (2) JP6103647B2 (zh)
CN (1) CN104025045B (zh)
GB (1) GB2511672B (zh)
TW (1) TWI597661B (zh)
WO (1) WO2013065687A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112506568A (zh) * 2016-12-31 2021-03-16 英特尔公司 用于异构计算的***、方法和装置

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015014833A (ja) * 2013-07-03 2015-01-22 スパンション エルエルシー 再構築可能なlsi
US9880935B2 (en) * 2014-03-24 2018-01-30 Intel Corporation Efficient data transfer between a processor core and an accelerator
US11132203B2 (en) * 2014-08-14 2021-09-28 Texas Instruments Incorporated System and method for synchronizing instruction execution between a central processor and a coprocessor
JP2017107448A (ja) * 2015-12-10 2017-06-15 株式会社デンソー 並列化方法、並列化ツール、車載装置
EP3208712B1 (en) * 2016-02-22 2020-02-19 Karlsruher Institut für Technologie Computer system and method for parallel program code optimization and deployment
US10310897B2 (en) * 2016-09-30 2019-06-04 Intel Corporation Hardware accelerators and methods for offload operations
US10671361B2 (en) * 2016-10-25 2020-06-02 Paypal, Inc. Automatically determining data dependencies to facilitate code execution
KR102424962B1 (ko) * 2017-11-15 2022-07-25 삼성전자주식회사 병렬 연산 처리를 수행하는 메모리 장치 및 이를 포함하는 메모리 모듈
GB2575289B (en) * 2018-07-04 2020-09-16 Graphcore Ltd Streaming engine
WO2020026315A1 (ja) * 2018-07-30 2020-02-06 三菱電機株式会社 割り込み制御装置、割り込み制御方法および割り込み制御プログラム
US11515291B2 (en) 2018-08-28 2022-11-29 Adeia Semiconductor Inc. Integrated voltage regulator and passive components
US11397612B2 (en) 2019-07-27 2022-07-26 Analog Devices International Unlimited Company Autonomous job queueing system for hardware accelerators
US11144290B2 (en) * 2019-09-13 2021-10-12 Huawei Technologies Co., Ltd. Method and apparatus for enabling autonomous acceleration of dataflow AI applications
EP4044156A4 (en) * 2019-10-10 2023-06-21 Nippon Telegraph And Telephone Corporation DEVICE, METHOD AND PROGRAM FOR MULTI-ITERATIVE SECRET CALCULATION
KR20210094178A (ko) * 2020-01-20 2021-07-29 삼성전자주식회사 직렬로 연결된 전자 장치들 사이에서 컴플리션을 조기에 전송하기 위한 컴퓨팅 시스템
US11176043B2 (en) * 2020-04-02 2021-11-16 International Business Machines Corporation Distributed memory-augmented neural network architecture

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002530736A (ja) * 1998-11-16 2002-09-17 テレフオンアクチーボラゲツト エル エム エリクソン(パブル) 多重処理システムにおける改良結果処理方法
JP2006139766A (ja) * 2004-10-12 2006-06-01 Nec Electronics Corp 情報処理装置
US20070174841A1 (en) * 2006-01-26 2007-07-26 Exegy Incorporated & Washington University Firmware socket module for FPGA-based pipeline processing
JP2007317152A (ja) * 2006-05-29 2007-12-06 Yuundo:Kk 情報処理装置
CN101925881A (zh) * 2008-01-25 2010-12-22 学校法人早稻田大学 多处理器***以及多处理器***的同步方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61134863A (ja) * 1984-12-04 1986-06-21 Mitsubishi Electric Corp デ−タ処理装置
JP3137117B2 (ja) * 1987-03-27 2001-02-19 将容 曽和 高速処理計算機
JPH1091603A (ja) * 1996-09-12 1998-04-10 Fujitsu Ltd デュアルcpuシステムにおける立ち上げ同期確立方法及び異常監視方法
US6044206A (en) * 1997-10-14 2000-03-28 C-Cube Microsystems Out of order instruction processing using dual memory banks
US6832305B2 (en) * 2001-03-14 2004-12-14 Samsung Electronics Co., Ltd. Method and apparatus for executing coprocessor instructions
JP4062441B2 (ja) * 2003-07-18 2008-03-19 日本電気株式会社 並列処理システム及び並列処理プログラム
JP4276028B2 (ja) * 2003-08-25 2009-06-10 株式会社日立製作所 マルチプロセッサシステムの同期方法
US7590823B1 (en) * 2004-08-06 2009-09-15 Xilinx, Inc. Method and system for handling an instruction not supported in a coprocessor formed using configurable logic
US7370123B2 (en) 2004-10-12 2008-05-06 Nec Electronics Corporation Information processing apparatus
JP4082706B2 (ja) * 2005-04-12 2008-04-30 学校法人早稲田大学 マルチプロセッサシステム及びマルチグレイン並列化コンパイラ
JP4936517B2 (ja) 2006-06-06 2012-05-23 学校法人早稲田大学 ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ
JP4784827B2 (ja) 2006-06-06 2011-10-05 学校法人早稲田大学 ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ
JP5137171B2 (ja) * 2006-07-24 2013-02-06 ルネサスエレクトロニクス株式会社 データ処理装置
JP4476267B2 (ja) * 2006-10-06 2010-06-09 株式会社日立製作所 プロセッサ及びデータ転送ユニット
JP2010003151A (ja) * 2008-06-20 2010-01-07 Renesas Technology Corp データ処理装置
EP2278452A1 (en) * 2009-07-15 2011-01-26 Nxp B.V. Coprocessor programming

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002530736A (ja) * 1998-11-16 2002-09-17 テレフオンアクチーボラゲツト エル エム エリクソン(パブル) 多重処理システムにおける改良結果処理方法
JP2006139766A (ja) * 2004-10-12 2006-06-01 Nec Electronics Corp 情報処理装置
US20070174841A1 (en) * 2006-01-26 2007-07-26 Exegy Incorporated & Washington University Firmware socket module for FPGA-based pipeline processing
JP2007317152A (ja) * 2006-05-29 2007-12-06 Yuundo:Kk 情報処理装置
CN101925881A (zh) * 2008-01-25 2010-12-22 学校法人早稻田大学 多处理器***以及多处理器***的同步方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112506568A (zh) * 2016-12-31 2021-03-16 英特尔公司 用于异构计算的***、方法和装置

Also Published As

Publication number Publication date
GB2511672B (en) 2020-04-15
CN104025045B (zh) 2017-07-04
TWI597661B (zh) 2017-09-01
GB2511672A (en) 2014-09-10
GB201409767D0 (en) 2014-07-16
US20140304491A1 (en) 2014-10-09
JP6103647B2 (ja) 2017-04-05
JP6525286B2 (ja) 2019-06-05
JP2017091589A (ja) 2017-05-25
US10095657B2 (en) 2018-10-09
JPWO2013065687A1 (ja) 2015-04-02
WO2013065687A1 (ja) 2013-05-10
US9846673B2 (en) 2017-12-19
US20180060275A1 (en) 2018-03-01
TW201333814A (zh) 2013-08-16

Similar Documents

Publication Publication Date Title
CN104025045A (zh) 处理器***及加速器
CN105487838B (zh) 一种动态可重构处理器的任务级并行调度方法与***
Cabarle et al. A spiking neural P system simulator based on CUDA
CN103809936A (zh) 编译或运行时执行分叉-合并数据并行程序的***和方法
O'Neil et al. A parallel gpu version of the traveling salesman problem
CN102193830B (zh) 面向众核环境的分治映射/归约并行编程模型
CN104281495B (zh) 多核处理器共享高速缓存任务调度方法
CN103714039A (zh) 通用计算数字信号处理器
Lisper Towards parallel programming models for predictability
CN100489830C (zh) 面向科学计算的64位流处理器芯片
CN114035916A (zh) 计算图的编译、调度方法及相关产品
CN106293736B (zh) 用于粗粒度多核计算***的两级编程装置及其计算方法
US20140331216A1 (en) Apparatus and method for translating multithread program code
Riedel et al. MemPool: A scalable manycore architecture with a low-latency shared L1 memory
US20230185991A1 (en) Multi-processor simulation on a multi-core machine
CN102542525B (zh) 一种信息处理设备以及信息处理方法
CN102184090B (zh) 一种动态可重构处理器及其固定数的调用方法
JP3008223B2 (ja) プロセッサ間の同期処理装置
CN110262884B (zh) 一种基于申威众核处理器的核组内多程序多数据流分区并行的运行方法
WO2021013727A1 (en) Processor
US11940940B2 (en) External exchange connectivity
CN111831333A (zh) 用于智能处理器的指令分解方法、装置及电子设备
US11726937B2 (en) Control of data sending from a multi-processor device
Ghose et al. PySchedCL: Leveraging Concurrency in Heterogeneous Data-Parallel Systems
Al Shehri A Parallel HPC-based Resource Management System for Big Data Applications

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant