CN102067088A - 多处理器 - Google Patents

多处理器 Download PDF

Info

Publication number
CN102067088A
CN102067088A CN2009801228436A CN200980122843A CN102067088A CN 102067088 A CN102067088 A CN 102067088A CN 2009801228436 A CN2009801228436 A CN 2009801228436A CN 200980122843 A CN200980122843 A CN 200980122843A CN 102067088 A CN102067088 A CN 102067088A
Authority
CN
China
Prior art keywords
thread
processor
register
operand
processing
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
CN2009801228436A
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 CN102067088A publication Critical patent/CN102067088A/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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • 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
    • 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)
  • Advance Control (AREA)

Abstract

提供一种多处理器,不会降低处理效率的多处理器,而能够处理多个线程。该多处理器包括:第一处理器,对多个线程中的作为执行对象的规定个数的线程分别分配不同的寄存器文件,并行进行所分配的各线程的处理;以及第二处理器,进行对应于所述第一处理器的指示的处理,所述第一处理器具有按照所述多个线程的每个线程分配的存储区域,按照执行对象的一个线程所包含的指令,向所述第二处理器进行处理委托,若从所述第二处理器接收到对该线程的处理结果的值的写入请求,则判断在当前时点该线程是否为执行对象,在判断为不是执行对象的情况下,控制为向分配给该线程的存储区域写入所述处理结果的值。

Description

多处理器
技术领域
本发明涉及在能够同时执行多个线程的一个处理器和进行对应于所述一个处理器的处理请求的处理的另一处理器中,高效进行这些处理器间的数据交换的技术。
背景技术
为了进行数字化后的影像数据和声音数据等的压缩、解压缩等的媒体处理,使用着专用硬件或高性能的DSP(Digital Signal Processor:数字信号处理器)等。
近年来,媒体处理的复杂度升高,图像大小、声音的声道数等也处于增加的趋势,该媒体处理的运算量也趋向于增大。因此,要求提高处理效率。
因此,例如,在非专利文献1中,公开了通过同时执行多个程序来大幅提高运算效率的高性能多线程处理器。通过使用该多线程处理器,能够实现媒体处理性能的提高。
非专利文献1:″A Multithreaded Processor Architecture with Simultaneous Instruction Issuing″,In Proc.of ISS′91:International Symposium on Supercomputing,Fukuoka,Japan,pp.87-96,November 1991
但是,在使用非专利文献1公开的多线程处理器来实现媒体处理的方法中,在处理器间进行数据的交换时存在问题。
具体而言,在为了实现某个应用程序而由多线程处理器执行多个线程、且另一处理器根据来自多线程处理器所执行的一个线程的处理请求而进行处理的情况下,需要在这些处理器之间进行数据的交换。在进行该交换动作时,在接收数据侧的线程(请求处理的线程)不是活动状态(active)的情况下,需要等待对方侧成为活动状态,或进行用于使对方侧变为活动状态的处理。在该期间,传送数据侧的所述另一处理器为使用资源的状态,会降低处理器的运算效率。
在图13中表示具体例。这里,假设在两个逻辑处理器上执行不同的线程,扩展运算处理器通过逻辑处理器上的线程的处理委托来执行处理,并将执行结果送回委托源的线程。
在时间t0时点,在第一逻辑处理器中执行线程2,在第二逻辑处理器中执行线程1(步骤S500、S501)。
在时间t1,线程1向扩展运算处理器进行处理委托,接收到处理委托的扩展运算处理器进行对线程1的处理(步骤S502)。
在时间t2,线程1变为非活动,线程3被在第二逻辑处理器上执行(步骤S503),在线程3的执行中的时间t3结束扩展运算处理器的处理。在该情况下,由于在执行着线程3,所以扩展运算处理器不能将处理结果反映到线程1,因此在第二处理器上的处理对象从线程3切换到线程1之前,处于等待状态。因此,在时间t4,即使由线程2发出处理委托,扩展运算处理器也不能接受处理委托。
之后,如果在第二逻辑处理器上处理对象从线程3切换到线程1(时间t5),则扩展运算处理器将步骤S502中的处理结果反映到线程1,从线程1的处理释放(时间t6)。
在时间t6以后,在第二逻辑处理器中执行反映了处理结果的线程1(步骤S504)。
并且,在时间t7,扩展运算处理器接受来自线程2的处理委托,进行对线程2的处理。
这样,在时间t3到t5期间,尽管对线程1的处理已结束,但由于线程1不是处理对象,即没有处于能够反映处理结果的状态,因此扩展运算处理器仍处于没有从线程1的占有中被释放的状态,所以运算效率下降。
发明内容
因此,本发明的目的是提供一种不会降低处理效率、而能够处理多个线程的多处理器和处理方法。
为了实现上述的目的,本发明的多处理器,包括:第一处理器,对多个线程中的作为执行对象的规定个数的线程分别分配不同的寄存器文件,并行进行所分配的各线程的处理;以及第二处理器,进行按照所述第一处理器的指示的处理,上述多处理器的特征在于,如果由所述第一处理器进行处理委托,则所述第二处理器进行按照所述第一处理器的指示的处理,并将该处理结果的值的写入请求通知给所述第一处理器;所述第一处理器包括:存储单元,具有按照所述多个线程各自分配的区域;第一控制单元,对于作为执行对象的各线程,在该线程从执行对象变为非执行对象的情况下,将分配给该线程的寄存器文件内的值保存到在所述存储单元中分配的区域;第二控制单元,控制为按照执行对象的一个线程所包含的指令,向所述第二处理器进行处理委托,如果从所述第二处理器接收到对该线程的处理结果的值的写入请求,则判断在当前时点该线程是否为执行对象,在判断为不是执行对象的情况下,向在所述存储单元中分配给该线程的区域的一部分写入所述处理结果的值;以及第三控制单元,在线程从非执行对象再次成为执行对象的情况下,将分配给该线程的区域内的值再次恢复到所分配的寄存器文件中。
根据该结构,多处理器的第一处理器在接收到来自第二处理器的写入请求的时点,在向第二处理器委托处理的线程不是执行对象的情况下,将处理结果的值写入存储单元,所以能够结束第二处理器对委托了处理的线程的处理。由此,第一处理器能够将下面的处理委托委托给第二处理器,所以能够处理多个线程,而不会使多处理器处理效率下降。
这里,也可以是,所述第二控制单元在对所述第二处理器委托处理时,将识别所述一个线程的线程标识符输出给所述第二处理器;所述第二处理器从所述第一处理器接收所述线程标识符,并进行存储;所述第二控制单元如果接收到所述写入请求,则取得存储在所述第二处理器中的所述线程标识符,并根据所取得的线程标识符,确定作为所述判断对象的线程。
根据该结构,多处理器的第一处理器在接收到所述写入请求时,从第二处理器取得对进行了处理委托的线程进行识别的线程标识符,所以能够可靠地确定判断对象的线程。
这里,也可以是,所述第二控制单元存储在所述存储单元中分配给各线程的区域各自的开头地址;所述第二处理器,如果执行包含操作码、第一操作数以及第二操作数的指令,则将所述写入请求通知给所述第一处理器,所述操作码用于指示传送所述处理结果的值,所述第一操作数用于指定存储有所述处理结果的值的第二处理器内的寄存器文件内的寄存器,所述第二操作数用于指定传送目的地的寄存器文件内的寄存器;所述第二控制单元,在通过所述判断而判断为所述线程标识符所表示的线程为非执行对象的情况下,控制为根据对所述线程标识符所表示的线程分配的区域的开头地址、以及由所述第二处理器执行的指令所包含的所述第二操作数所表示的寄存器,确定所述存储单元中的写入位置,并向所确定的位置写入存储在由所述第二处理器执行的指令所包含的所述第一操作数所表示的寄存器中的所述处理结果的值;在通过所述判断而判断为所述线程标识符所表示的线程为执行对象的情况下,控制为在对应的寄存器标识符所表示的寄存器文件中,向所述第二操作数所表示的寄存器写入存储在由所述第二处理器执行的指令所包含的所述第一操作数所表示的寄存器中的所述处理结果的值。
根据该结构,通过第二处理器执行所述指令,能够可靠地确定第二处理器内的处理结果的值的保存位置、和对进行处理委托的线程的写入位置。
这里,也可以是,所述第二控制单元,对于所述多个线程的各个线程,将表示该线程为执行对象还是非执行对象的标志和在该线程为执行对象的情况下识别被分配的寄存器文件的寄存器标识符对应起来存储;在所述判断中,使用与所述线程标识符所表示的线程对应的标志来进行所述判断。
根据该结构,第一处理器通过使用所述标志,能够可靠地判断判断对象的线程是否为执行对象。
这里,也可以是,所述第二控制单元在向所述第二处理器径向处理委托时,将识别所述一个线程的线程标识符输出给所述第二处理器;所述第二处理器从所述第一处理器接收并存储所述线程标识符,并在通知所述写入请求时,将所述线程标识符包含在所述写入请求中通知给所述第一处理器;所述第二控制单元如果接收到所述写入请求,则根据接收到的所述写入请求所包含的线程标识符,确定作为所述判断对象的线程。
根据该结构,多处理器的第一处理器接收包含用于对进行了处理委托的线程进行识别的线程标识符的所述写入请求,所以能够可靠地确定判断对象的线程。
这里,也可以是,所述第二控制单元存储在所述存储单元中分配给各线程的区域各自的开头地址;所述第二处理器,如果执行包含操作码、第一操作数、第二操作数以及线程标识符的指令,则将包含所述线程标识符的所述写入请求通知给所述第一处理器,所述操作码用于指示传送所述处理结果的值,所述第一操作数用于指定存储有所述处理结果的值的第二处理器内的寄存器文件内的寄存器,所述第二操作数用于指定传送目的地的寄存器文件内的寄存器,所述线程标识符用于对请求处理的线程进行识别;所述第二控制单元在通过所述判断而判断为所述线程标识符所表示的线程为非执行对象的情况下控制为,根据对所述线程标识符所表示的线程分配的区域的开头地址、以及由所述第二处理器执行的指令所包含的所述第二操作数所表示的寄存器,确定所述存储单元中的写入位置,并向所确定的位置写入存储在由所述第二处理器执行的指令所包含的所述第一操作数所表示的寄存器中的所述处理结果的值。
根据该结构,通过第二处理器执行所述指令,能够可靠地确定第二处理器内的处理结果的值的存储位置、对进行了处理委托的线程的写入位置、和进行了处理委托的线程。
这里,也可以是,所述多处理器是执行影像的解码处理的处理系统;
由所述第一处理器处理的各线程进行所述解码处理中的被可变长编码的信号的解码;由所述第二处理器进行的对应于所述指示的处理是与所述解码处理中的逆量化、逆频率变换、运动补偿以及图像数据的加法有关的处理。
根据该结构,由多处理器进行的解码处理能够不降低处理效率地处理多个线程。
这里,也可以是,所述多处理器是执行影像的编码处理的处理系统;由所述第一处理器处理的各线程进行所述编码处理中的与对图像数据的可变长编码有关的处理;由所述第二处理器进行的对应于所述指示的处理是与所述编码处理中的对编码对象的图像数据的预测误差、量化、频率变换、运动补偿、运动检索、逆量化、逆频率变换以及图像数据的加法有关的处理。
根据该结构,多处理器进行的编码处理能够不降低处理效率地处理多个线程。
附图说明
图1是表示多处理器系统10的结构的图。
图2是表示控制部111的结构的图。
图3是表示线程信息表T100的数据结构的一例的图。
图4是表示运算结束控制指令T110的数据结构的一例的图。
图5是表示反映对象线程活动的情况下的数据的反映目的地的图。
图6是表示反映对象线程不活动的情况下的数据的反映目的地的图。
图7是表示运算结束控制指令T110执行时的处理动作的流程图。
图8是表示执行多个线程的情况下的动作的具体例的图。
图9是表示运算结束控制指令T120的数据结构的一例的图。
图10是表示多处理器系统1000的结构的图。
图11是表示将多处理器系统10适用于解码器10A的情况下的一例的图。
图12是表示将多处理器系统10适用于编码器10B的情况下的一例的图。
图13是表示在现有技术中执行多个线程的情况下的动作的具体例的图。
具体实施方式
1.实施方式1
下面,参照附图说明本发明的实施方式1。
1.1结构
图1表示本发明的实施方式1的多处理器系统10的结构。
多处理器系统10包括多线程处理器11和扩展运算处理器12。
多线程处理器11是同时独立执行最大N(N是2以上的整数)个指令流(N个线程)的处理器。
扩展运算处理器12是通过来自多线程处理器11的控制而启动,并基于在多线程处理器11中执行中的1个线程的指示来执行处理的处理器。
下面,说明这些处理器的结构。
(1)多线程处理器11的结构
多线程处理器11如图1所示,包括指令存储器101、指令解码器102、N个指令缓冲器(第一指令缓冲器103、第二指令缓冲器104、…、第N指令缓冲器105)、N个寄存器文件(第一寄存器文件106、第二寄存器文件107、…、第N寄存器文件108)、运算器组109、回写(write back)总线110、控制部111、和上下文存储器112。
这里,各指令缓冲器和各寄存器文件一对一地对应,构成N个逻辑处理器。在本实施方式1中,设为由第一指令缓冲器103和第一寄存器文件106构成第一逻辑处理器151,由第二指令缓冲器104和第二寄存器文件107构成第二逻辑处理器152,…,由第N指令缓冲器105和第N寄存器文件108构成第N逻辑处理器153。
多线程处理器11通过将多个线程中最大N个线程分别分配给不同的逻辑处理器,实现并行执行最大N个线程。
(1-1)指令存储器101
指令存储器101保持由N个逻辑处理器中的某一个逻辑处理器执行的多个指令流(线程)。
(1-2)指令解码器102
指令解码器102从指令存储器101中读出属于作为执行对象的1个以上的线程的指令,进行解码,并写入到被分配了该指令所属的线程的逻辑处理器的指令缓冲器中。
(1-3)第一指令缓冲器103~第N指令缓冲器105
第i指令缓冲器(i是1以上N以下的整数,下面相同。)属于第i逻辑处理器,接受属于分配到该第i逻辑处理器的线程的指令,并进行保持。
(1-4)第一寄存器文件106~第N寄存器文件108
第i寄存器文件属于第i逻辑处理器,是在执行第i指令缓冲器所保持的指令时,保持作为读出和写入对象的数据的寄存器组。
另外,设各个寄存器文件的开头地址从0开始。
(1-5)运算器组109
运算器组109是包含加法器和乘法器等多个运算器的处理部,并行进行各逻辑处理器的处理。
(1-6)回写总线110
回写总线110是用于将来自运算器组109的输出写回到第一寄存器文件106~第N寄存器文件108的总线。
(1-7)控制部111
控制部111如图2所示,包括线程控制部160、线程信息存储部161和处理器控制部162。
(1-7-1)线程控制部160
线程控制部160管理各线程的活动(active)化和非活动化。这里,所谓活动的线程是指被确保为占有第i逻辑处理器、即第i指令缓冲器和第i寄存器文件的资源、并处于能够在该第i逻辑处理器上立即执行的状态的线程。所谓非活动的线程是指没有被确保为占有任何一个逻辑处理器的资源的线程。
线程控制部160根据线程切换的原因,来进行线程的非活动化和活动化。这里,作为线程切换的原因,可以举出接收表示活动的线程的执行时间达到一定值的信号、接收从其他硬件输入的事件发生信号、以及执行指定的指令。
线程控制部160如图2中所示,具有保存部165和恢复部166,在保存部165中进行线程的非活动化,在恢复部166中进行线程的活动化。
线程控制部160例如如果接收到表示活动的线程的执行时间达到一定值的信号,则将该线程设为非活动化。具体而言,保存部165停止从被决定为非活动化对象的线程(例如为在第二逻辑处理器上执行的线程)的指令存储器101读出指令,并且停止从第二指令缓冲器104发出指令。并且,保存部165将第二寄存器文件107的内容保存到上下文存储器112的预定区域上。
线程控制部160在非活动状态的线程再次成为执行对象的情况下,进行该线程的活动化。具体而言,恢复部166从上下文存储器112读出被定义为活动对象的线程(这里设为分配给第二逻辑处理器的线程)所使用的数据(值),并恢复到第二寄存器文件107。之后,从指令存储器101读出对应的指令,并开始执行。对于上下文存储器112上的数据的管理方法,将在后面叙述。
线程控制部160在将线程设为活动化和非活动化时,进行后述的线程信息表T100的更新。
(1-7-2)线程信息存储部161
线程信息存储部161管理各个线程各自的状态,具有如图3所示的线程信息表T100。
线程信息表T100具有用于存储多个(线程个数)下述组(条目)的区域,该组由线程ID201、有效(Valid)标志202、逻辑处理器ID203、线程状态标志204、和基本地址205构成。
线程ID201是表示各条目所保持的线程的信息对应于哪个线程的ID号。
有效标志202是表示各条目所保持的线程的信息是否有效的有效位,“0”表示无效的信息,“1”表示有效的信息。
逻辑处理器ID203是表示各条目所保持的线程的信息是否在某个逻辑处理器上被执行着的ID号。例如,逻辑处理器ID的值“00”表示第一逻辑处理器151,“01”表示第二逻辑处理器152。
线程状态标志204是表示各条目所保持的线程状态的信息。“00”表示非活动状态、“01”表示活动状态、“10”或“11”表示在活动化或非活动化的处理过程中。另外,线程状态标志204在线程控制部160中进行线程的从活动向非活动的状态变更、或从非活动向活动的状态变更时,由线程控制部160更新。例如,线程的从活动向非活动的状态变更是由保存部165进行,从非活动向活动的状态变更是由恢复部166进行。
基本地址205表示上下文存储器112内的地址,以该地址为开头位置,存储对与保持在条目中的线程ID对应的线程的寄存器值。
条目206表示线程ID为“00001”线程1有效,并通过当前逻辑处理器ID“00”和线程状态标志,表示在第一逻辑处理器151上执行。
此外,条目208表示线程ID为“00011”的线程3有效,且当前处于非活动状态。
另外,如上所述,线程信息表T100由线程控制部160更新。例如,在线程1从活动切换为非活动的情况下,保存部165将线程1、即与线程ID“00001”对应的线程状态标志从“00”更新为表示线程状态的切换中的值“10”,若切换完成,则线程状态标志从“10”更新为表示非活动状态的值“01”。此外,相反,在从非活动切换为活动的情况下,恢复部166将线程1的线程状态标志从“01”更新为表示线程状态的切换中的值“11”,表示在线程状态的切换中,若切换完成,则将线程状态标志从“11”更新为“00”。
进一步,例如,在线程3初次分配到逻辑处理器时(这里,设为第一逻辑处理器),线程控制部160追加与线程3对应的条目。在该情况下,条目中包含线程ID“00011”、有效标志“1”、逻辑处理器ID“00”、线程状态标志“01”、和基本地址“0x4000000”。
(1-7-3)处理器控制部162
处理器控制部162根据作为执行对象的一个线程的指令,向扩展运算处理器12进行处理委托。具体而言,处理器控制部162按照运算器组109中的、执行分配给1个逻辑处理器的线程的指令的运算器所执行的指令,向扩展运算处理器12进行处理委托。另外,处理器控制部162从线程信息表T100取得对请求了处理的该一个线程进行识别的线程ID,并将所取得的线程ID输出给扩展运算处理器。
之后,处理器控制部162如果从扩展运算处理器12接收与向对扩展运算处理器12请求了处理的线程的写入有关的写入请求,则从扩展运算处理器12取得处理的委托源的线程的线程ID。这里,所谓写入请求是指若由扩展运算处理器12执行运算结束控制指令T110,则通知给处理器控制部162的请求。对于运算结束控制指令T110的细节,将在后面叙述。
处理器控制部162使用线程信息表T100,参照包含所取得的线程ID的条目内的线程状态标志,判断是否将与该线程ID对应的线程作为执行对象分配了逻辑处理器,即判断是活动状态还是非活动状态。
在判断为是非活动状态的情况下,处理器控制部162控制为,将从扩展运算处理器12输出的写入对象的数据写入到由该条目内的基本地址和在扩展运算处理器12中指定的寄存器确定的上下文存储器112内的地址。另外,向上下文存储器112的写入不会对当前时点活动的线程的执行带来影响,而通过硬件的处理并行实现。通过这样的动作,可以防止抢占执行活动的线程的执行时间而降低处理效率。
在判断为是活动状态的情况下,处理器控制部162控制为在分配了与该线程ID对应的线程的逻辑处理器的寄存器文件中,将从扩展运算处理器12输出的写入对象的数据写入到由扩展运算处理器12指定的地址中。
这里,说明由扩展运算处理器12执行的运算结束控制指令T110的数据结构。
图4是本实施方式1的运算结束控制指令T110的格式,由操作码301、第一操作数302以及第二操作数303构成。
操作码301是指示处理器以使其完成执行中的本线程(扩展运算处理器12)、并且将本线程(扩展运算处理器12)的在寄存器文件内的数据传送到其他线程(请求源的线程)的寄存器文件内的代码。
第一操作数302将本线程(扩展运算处理器)所使用的寄存器文件的寄存器指定为数据传送源。
第二操作数303将其他线程(请求源的线程)所使用的寄存器文件的寄存器指定为数据传送目的地。另外,这里设第二操作数303是用寄存器号表示寄存器的操作数。
在请求源的线程为活动状态的情况下,通过处理器控制部162的控制,将由第一操作数302表示的寄存器中存储的数据(值)写入到由第二操作数303表示的、逻辑处理器内的寄存器文件的寄存器中。
在请求源的线程为活动状态的情况下,通过处理器控制部162的控制,首先使用线程信息表T100,从包含所取得的线程ID的条目中确定(特别指定)与请求源的线程相对应的基本地址。根据所确定的基本地址和由第二操作数303表示的值(Rd),确定应在上下文存储器112内写入的地址。例如,在用4个字节存储基本地址、且寄存器的大小各为4个字节的情况下,用公式“基本地址+(第二操作数×4)”来确定。存储在由第一操作数302表示的寄存器中的数据(值)被写入到由所确定的上下文存储器112上的地址表示的寄存器中。
图5和图6是本实施方式1中的执行(发出)了运算结束控制指令T110的情况下的动作。另外,这里,为了便于说明,设多线程处理器11仅具有寄存器文件106、107两个,线程1向扩展运算处理器12进行处理委托,且在处理委托时点,线程1和线程2分别分配到寄存器文件106、107。
若在扩展运算处理器12中发出线程完成指令,则在应反映结果的线程(这里是线程1)、即对扩展运算处理器12进行了处理委托的线程1为活动的情况下,如图5所示,在由第一操作数302指定的、寄存器文件116内的寄存器Rs402中存储的值通过处理器控制部162的控制,传送(写入)到进行了处理委托的线程1所占有的寄存器文件106内的、由第二操作数303指定的寄存器Rd404中。
在应反映结果的线程(这里是线程1)在多线程处理器11上非活动的情况下,例如,在寄存器文件106由线程3占有、寄存器文件107由线程2占有的情况下,如图6所示,通过处理器控制部162的控制,根据与进行了处理委托的线程1对应的上下文存储器112内的基本地址和由第二操作数303指定的寄存器Rd404,通过上述公式确定上下文存储器112上的存储目的地的地址,并且在由第一操作数302指定的、寄存器文件116内的寄存器RS402中存储的值被传送(写入)到所确定的地址中。
(1-8)上下文存储器112
上下文存储器112是保存处于非活动状态的线程的寄存器组的内容的存储器,对各线程分别分配不同的区域。
这里,对各线程,分别将不同的地址作为基本地址建立对应,从而实现区域的分配。
(2)扩展运算处理器12的结构
扩展运算处理器12如图1所示,包括指令存储器113、指令解码器114、指令缓冲器115、寄存器文件116、运算器组117、回写总线118和线程信息存储部119。
(2-1)指令存储器113
指令存储器113是保持在扩展运算处理器12中执行的指令的存储器。
(2-2)指令解码器114
指令解码器114是从指令存储器113读出指令,进行解码,并写入到指令缓冲器115的处理部。
若通过解码发出(执行)运算结束控制指令T110,则指令解码器114将发出的运算结束控制指令T110写入到指令缓冲器115,并且对多线程处理器11的处理器控制部162通知写入请求。
(2-3)指令缓冲器115
指令缓冲器115是从指令解码器114接收指令并进行保持的存储部。
寄存器文件116是在执行保持在指令缓冲器115中的指令时,保持作为读出和写入对象的数据的寄存器组。
另外,设寄存器文件116的开头地址从0开始。
(2-4)运算器组117
运算器组117是包含加法器和乘法器等多个运算器的处理部,执行保持在指令缓冲器115中的指令。
运算器组117,如果从指令缓冲器115读出运算结束控制指令T110,则读出所读出的运算结束控制指令T110所包含的第一操作数302所表示的寄存器Rs的值,并经由回写总线118,将所读出的值和将该值写入到由第二操作数302表示的寄存器Rd中的指示输出给多线程处理器11。另外,对于回写总线118,将在后面叙述。
这时,如果从扩展运算处理器12输出这些信息,则多线程处理器11的处理器控制部162控制为根据之前进行的判断结果,将输出的值写入到使用写入目的地的地址来确定的写入目的地。
(2-5)回写总线118
回写总线118是用于将来自运算器组117的输出写回到寄存器文件116、第一寄存器文件106~第N寄存器文件108,以及用于将寄存器文件116的内容写入到第一寄存器文件106~第N寄存器文件108或上下文存储器112的总线。
(2-6)线程信息存储部119
线程信息存储部119具有存储线程ID的区域,该线程ID对有处理委托的请求的线程进行识别。
对该线程信息存储部119的写入由多线程处理器11的处理器控制部162进行。
1.2动作
这里,使用图7所示的流程图来说明执行了运算结束控制指令T110时的多处理器系统10的动作。
若由扩展运算处理器12发出运算结束控制指令T110,则多线程处理器11的处理器控制部162从线程信息存储部119取得应反映的线程的ID、即处理请求源的线程ID(步骤S105)。
处理器控制部162读出线程信息表T100的记录了应反映的线程ID的信息的条目(步骤S110)。
处理器控制部162判断所读出的条目所包含的有效标志202的内容是否是1(步骤S115)。
在判断为不是1的情况下(步骤S115中的“否”),多处理器系统10进行错误处理(步骤S140),结束处理。这里错误处理例如是丢弃保存在寄存器文件116中的内容、保持在指令缓冲器中的指令、和当前由扩展运算处理器在执行中的指令的处理。
在判断为是1的情况下(步骤S115中的“是”),处理器控制部162判断所读出的条目所包含的线程状态标志204的内容是否是01(步骤S120)。
在判断为是01的情况下(步骤S120中的“是”),处理器控制部162控制为向所读出的条目所包含的逻辑处理器ID203的内容所表示的逻辑处理器具有的寄存器文件中的、由第二操作数303表示的寄存器Rd,写入扩展运算处理器的寄存器文件116中的、由第一操作数302表示的寄存器Rs的内容(步骤S125)。
在判断为线程状态标志204的内容不是01的情况下(步骤S125中的“否”),处理器控制部162判断线程状态标志204的内容是否是00(步骤S130)。
在判断为是00的情况下(步骤S130中的“是”)、处理器控制部162将扩展运算处理器的寄存器文件116中的、由第一操作数302表示的寄存器Rs的内容,传送到根据所读出的条目所包含的基本地址205和由第二操作数303表示的寄存器Rd计算出的上下文存储器112上的地址,完成线程完成指令的执行。
在判断为线程状态标志204的内容不是00的情况下(步骤S130中的“否”),处理回到步骤S120,等待线程的状态被更新。
1.3实施方式1的总结
图8是本发明的实施方式1中的多个线程动作的情形。另外,这里,设逻辑处理器的个数为2个。
在时间t0时点,在第一逻辑处理器151中执行线程2,在第二逻辑处理器152中执行线程1(步骤S201、S202)。
在时间t1,线程1向扩展运算处理器12进行处理委托,接受了处理委托的扩展运算处理器12进行对线程1的处理(步骤S203)。
在时间t2,线程1成为非活动,线程3在第二逻辑处理器151上被执行(步骤S204),若在线程3的执行中的时间t3结束扩展运算处理器12的处理,则由于线程1为非活动的状态,所以处理结果被写入到上下文存储器。
之后,在线程3的执行中的时间t4,若线程2向扩展运算处理器12进行了处理委托,则扩展运算处理器12从线程1的处理中释放,即,没有被线程1占有,所以扩展运算处理器12进行对线程2的处理(步骤S205)。
在线程3结束后的时间t5,若线程1再次成为活动,则由于在上下文存储器112中反映了基于扩展运算处理器12的处理结果,所以线程1通过使用保持在上下文存储器112内的数据,继续进行处理(步骤S206)。
这样,本实施方式1的多处理器系统10在基于来自线程1的处理请求进行的扩展运算处理器12的处理结束了时,即使在作为数据的反映目的地的线程1不活动的情况下,也可通过上述的运算结束控制指令T110将处理结果(数据)反映到上下文存储器112上的与线程1对应的区域上,并立即完成处理。因此,不会产生不需要的等待时间,而能够有效使用运算资源。
根据本实施方式的多处理器,在使基于扩展运算处理器12的线程结束、并且将作为处理结果的数据传送到其他线程(委托源的线程)时,根据该其他线程的状态,即数据接收侧的线程是否活动,来适当选择数据传送目的地,所以能够有效进行线程间的数据交换。
2.实施方式2
实施方式2中,运算结束控制指令字段的数据结构与实施方式1不同。
以下说明指令字段的结构和动作流程图中的不同点。另外,对于与实施方式1相同的结构要素,使用同一符号。
2.1关于运算结束控制指令T120
图9是本发明的实施方式2中的运算结束控制指令T120的格式,由操作码901、第一操作数902、第二操作数903和第三操作数904构成。
操作码901、第一操作数902、第二操作数903与实施方式1的操作码301、第一操作数302、第二操作数303相同,所以这里省略说明。
第三操作数904指定具有由第二操作数903指定的寄存器的线程ID、即进行了处理请求的线程的线程ID。
2.2结构
说明实施方式2中的多处理器系统1000。
多处理器系统1000如图10所示,由多线程处理器11a和扩展运算处理器12a构成。
在实施方式2中,指令解码器和处理器控制部与实施方式1不同。下面,说明图10所示的实施方式2中的指令解码器114a和处理器控制部162a。对于赋予了与实施方式1同样的附图标记的结构要素,由于已在实施方式1中进行了说明,所以省略这里的说明。另外,图10所示的第一逻辑处理器151,虽然未图示但与实施方式1同样具有第一指令缓冲器103和第一寄存器文件106。此外,第二逻辑处理器152和第N逻辑处理器153也同样具有实施方式1所示的指令缓冲器和寄存器文件。对于线程控制部160,也虽然没有图示,但是与实施方式1同样,具有保存部165和恢复部166。
(1)指令解码器114a
若通过解码发出运算结束控制指令T120,则指令解码器114a从第三操作数取得线程ID。指令解码器114a将所发出的运算结束控制指令T120写入指令缓冲器115,并且向多线程处理器11的处理器控制部162a通知包含所取得的线程ID的写入请求。
(2)处理器控制部162a
处理器控制部162a与实施方式1同样,根据作为执行对象的一个线程的指令,向扩展运算处理器12进行处理委托,并向扩展运算处理器12通知进行了处理委托的线程的线程ID。这时,线程ID被写入到线程信息存储部119。
之后,处理器控制部162a若从扩展运算处理器12接收包含线程ID的写入请求,则参照包含接收到的写入请求所包含的线程ID的条目内的线程状态标志,判断与该线程ID对应的线程是否被作为执行对象来分配了逻辑处理器,即,是活动状态还是非活动状态。对于之后的动作,由于与实施方式1同样,所以省略这里的说明。
2.3动作
以下,对于执行了运算结束控制指令T120的情况下的多处理器系统10的动作,仅说明图7的变更点。
变更点如以下这样改变步骤S105的动作。
若在扩展运算处理器12中执行运算结束控制指令T120,则从第三操作数904取得运算结束控制指令T120所包含的线程ID。
之后的动作与图7所示的步骤S110到S140的动作相同,所以省略这里的说明。
2.4实施方式2的总结
在实施方式2中,表示作为是否活动的判断对象的线程的线程ID的取得方法与实施方式1不同,所得到的效果相同。
3.实施方式3
这里,作为使用实施方式1所示的多处理器系统10的系统的具体例,说明适用于影像的解码、编码处理的情况。
图11表示将多处理器系统10适用于进行解码处理的解码器10A的情况。
图12表示将多处理器系统10适用于进行编码处理的编码器10B的情况。
3.1适用于解码处理的情况
解码器10A如图11所示,包括可变长解码部500、逆量化·逆正交变换部501、运动补偿部502、加法部503、开关504和参照图像缓冲器505。
这些构成要素是已知的,所以省略这里的详细说明,仅说明这些的概要。
可变长解码部500对被可变长编码的信号进行解码(decode)。
逆量化·逆正交变换部501对由可变长解码部500得到的量化DCT系数进行逆量化和逆频率变换。
运动补偿部502进行使用了运动矢量的图像数据的生成。
加法部503相加由运动补偿部502得到的图像数据和由逆量化·逆正交变换部501得到的图像的数据,而生成应输出的图像数据。
开关504根据由可变长解码部500得到的解码对象的图片种类(P、I、B图片),切换与逆量化·逆正交变换部501的连接或与加法部503的S连接。
参照图像缓冲器505用于保持参照图像。
这里,如图11所示,通过适用为使实施方式1所示的多线程处理器11进行与可变长解码部500和开关有关的处理,扩展运算处理器12进行与逆量化·逆正交变换部501、运动补偿部502和加法部503有关的处理,从而能够将实施方式1所示的多处理器系统10适用于进行解码处理的解码器。
3.3适用于编码处理的情况
编码器10B如图12所示,包括减法部600、正交变换·量化部601、可变长编码部602、逆量化·逆正交变换部603、加法部604、运动补偿部605、运动检索部606和参照图像缓冲器607。
由于这些构成要素是已知的,所以省略这里的详细说明,而仅说明这些的概要。
减法部600计算对编码对象的图像数据的预测误差。
正交变换·量化部601对预测误差进行频率变换和量化。
可变长编码部602对量化DCT系数和运动矢量进行可变长编码。
逆量化·逆正交变换部603为了在运动补偿预测中使用而对量化DCT系数进行逆量化和逆频率变换。
加法部604进行由运动补偿部502得到的图像数据与从逆量化·逆正交变换部501得到的图像的数据的相加,并通过去块滤波器对相加结果的图像数据实施去块滤波处理,生成用于在参照图像缓冲器607中作为参照图像来保持的图像数据。
运动补偿部605进行使用了运动矢量的图像数据的生成。
运动检索部606进行运动补偿预测,检测出运动矢量。
参照图像缓冲器607用于保持参照图像。
这里,如图12所示,通过适用为使实施方式1所示的多线程处理器11进行与可变长编码部602有关的处理,扩展运算处理器12进行与减法部600、正交变换·量化部601、逆量化·逆正交变换部603、加法部604、运动补偿部605和运动检索部606有关的处理,从而能够在编码器10B中适用实施方式1所示的多处理器系统10。
3.3实施方式3的总结
对使用H.264等标准压缩的影像信号进行解码时,如上所述,需要进行比特流的解析、被可变长编码的信号的解码处理、逆量化、逆频率变换、运动补偿、去块滤波处理。
在这些处理中,比特流的解析、被可变长编码的信号的解码处理这样的顺序处理,在一般处理器(多线程处理器)中能够进行实际的动作频率下的处理。另一方面,关于作为像素处理的逆量化、逆频率变换、运动补偿、去块滤波处理,适用对多个像素同时进行运算的数据并行式处理器(扩展运算处理器)。
数据并行式处理器因寄存器组和运算器而需要宽度较宽的数据宽度,所以通过设为独立的扩展运算处理器,能够安装高效的处理器,而不会增加进行顺序处理的处理器的资源。
在本实施例中,通过由多线程处理器进行顺序处理、由所述扩展运算处理器进行像素处理,能够构筑抑制了电路规模的增加、并且提高扩展运算处理器的使用效率的实时影像处理系统。
4.变形例
上述说明的各实施方式是本发明的实施的一例,本发明并不限于该实施方式,可以在不脱离其精神的范围内以各种方式进行实施。例如,下面这种情形也包含在本发明中。
(1)上述实施方式中,扩展运算处理器12的各结构要素113~117可以与多线程处理器11的结构要素共用。
(2)上述实施方式中,扩展运算处理器12与多线程处理器11相独立地保持了指令,但是并不限于此。
也可以是,扩展运算处理器12根据供给源的线程、即逻辑处理器的指示来动作。
(3)上述实施方式中,指令解码器114将写入请求通知给处理器控制部162,但是并不限于此。
也可以是,运算器组117在进行基于运算结束控制指令T110的处理后,向多线程处理器11输出数据时,将写入请求通知给处理器控制部162。
此外,在运算器组117进行基于运算结束控制指令T120的处理的情况下,也同样通过在向多线程处理器11输出数据时,将包含线程ID的写入请求通知给处理器控制部162来实现。
(4)上述实施方式中,运算结束控制指令T110包含一组由第一操作数Rs和第二操作数Rd构成的组,但是并不限于此。在运算结束控制指令T110内也可以包含多个该组。
此外,在运算结束控制指令T120中也同样,可以包含多个由第一操作数Rs和第二操作数Rd构成的组。
(5)上述实施方式中,在执行了运算结束控制指令T110时,运算器组117将在运算结束控制指令T110所包含的第一操作数所表示的寄存器Rs中存储的值(处理结果)、和将该值写入到第二操作数所表示的寄存器Rd中的指示输出给多线程处理器11,但是并不限于此。
也可以是,运算器组117将运算结束控制指令T110所包含的第一操作数所表示的寄存器Rs、和将该值写入到第二操作数所表示的寄存器Rd中的指示输出给多线程处理器11。
这时,处理器控制部162根据接收到的指示所包含的寄存器Rs所表示的地址,从寄存器文件116读出处理结果,并对于所读出的处理结果,使用寄存器Rd确定与请求源的线程的状态对应的写入目的地。
此外,在实施方式2中,能够通过在上述的指示中进一步包含由第3操作数表示的请求源的线程ID来实现。
(6)在上述实施方式中,在线程初次分配到逻辑处理器时,线程控制部160追加与该线程对应的条目,但是并不限于此。
例如,也可以将各线程与被分配的逻辑处理器预先建立对应。该情况下,在线程信息表T100中预先登记有每个线程的条目,将条目所包含的有效标志和线程状态标志各自的初始值设为“0”和“00”,并根据对应的线程的状态,线程控制部160更新这些标志的值。
(8)在上述实施方式中,多线程处理器11是1个处理器,在该处理器内构成多个逻辑处理器,但是并不限于此。
在多线程处理器11内也可以构成多个处理器元件。
(9)在上述实施方式中,扩展运算处理器12在对处理请求源的线程的处理完成的时点,将与写入有关的请求通知给多线程处理器11,但是并不限于此。
也可以在处理过程中,向多线程处理器11通知与写入有关的请求。
(10)在上述实施方式中,寄存器的尺寸为4个字节,但是并不限于此。
寄存器的尺寸也可以是其他值。例如16个字节。在该情况下,上述的公式变更为“基本地址+(第二操作数×16)”。
(11)在上述实施方式中,各逻辑处理器并行执行,但是并不限于此。
例如,也可以是仅对各逻辑处理器中的一个逻辑处理器分配运算器组109、并通过时间段变更该分配的基于模拟并行的处理。
另外,这种模拟的并行处理也包含在本发明的并行处理的概念中。
(12)本发明也可以是如上所述的方法。此外,也可以是通过计算机实现这些方法的计算机程序,也可以是由所述计算机程序构成的数字信号。
此外,本发明也可以是将所述计算机程序或所述数字信号记录在计算机可读取的记录介质、例如软盘、硬盘、CD-ROM、MO、DVD、DVD-ROM、DVD-RAM、BD(Blu-ray Disc)、半导体存储器等上的结构。此外,也可以是在这些记录介质上记录的所述数字信号。
(13)可以分别组合上述实施方式和上述变形例。
工业实用性
本发明的多处理器系统具有灵活地实现高性能的运算处理的功能,因此能够适用于DVD记录机或数字TV等进行影像或声音的媒体处理的多处理器系统。
在制造、销售本发明的多处理器系统的产业中,能够经营性地、即反复且持续地使用。
符号说明
10多处理器系统
11多线程处理器
12扩展运算处理器
101指令存储器
102指令解码器
103第一命令缓冲器
104第二命令缓冲器
105第N命令缓冲器
106第一寄存器文件
107第二寄存器文件
108第N寄存器文件
109运算器组
110回写总线
111控制部
112上下文存储器
113指令存储器
114指令解码器
115指令缓冲器
116寄存器文件
117运算器组
118回写总线
119线程信息存储部
160线程控制部
161线程信息存储部
162处理器控制部
165保存部
166恢复部

Claims (9)

1.一种多处理器,包括:第一处理器,对多个线程中的作为执行对象的规定个数的线程分别分配不同的寄存器文件,并行进行所分配的各线程的处理;以及第二处理器,进行按照所述第一处理器的指示的处理,上述多处理器的特征在于,
如果由所述第一处理器进行处理委托,则所述第二处理器进行按照所述第一处理器的指示的处理,并将该处理结果的值的写入请求通知给所述第一处理器;
所述第一处理器包括:
存储单元,具有按照所述多个线程的每个线程分配的区域;
第一控制单元,对于作为执行对象的各线程,在该线程从执行对象变为非执行对象的情况下,将分配给该线程的寄存器文件内的值保存到在所述存储单元中分配的区域;
第二控制单元,控制为按照执行对象的一个线程所包含的指令,向所述第二处理器进行处理委托,如果从所述第二处理器接收到对该线程的处理结果的值的写入请求,则判断在当前时点该线程是否为执行对象,在判断为不是执行对象的情况下,向在所述存储单元中分配给该线程的区域的一部分写入所述处理结果的值;以及
第三控制单元,在线程从非执行对象再次成为执行对象的情况下,将分配给该线程的区域内的值再次恢复到所分配的寄存器文件中。
2.根据权利要求1所述的多处理器,其特征在于,
所述第二控制单元在向所述第二处理器进行处理委托时,将识别所述一个线程的线程标识符输出给所述第二处理器;
所述第二处理器从所述第一处理器接收所述线程标识符,并进行存储;
所述第二控制单元如果接收到所述写入请求,则取得存储在所述第二处理器中的所述线程标识符,并根据所取得的线程标识符,确定作为所述判断对象的线程。
3.根据权利要求2所述的多处理器,其特征在于,
所述第二控制单元存储在所述存储单元中分配给各线程的区域各自的开头地址;
所述第二处理器,如果执行包含操作码、第一操作数以及第二操作数的指令,则将所述写入请求通知给所述第一处理器,所述操作码用于指示传送所述处理结果的值,所述第一操作数用于指定存储有所述处理结果的值的第二处理器内的寄存器文件内的寄存器,所述第二操作数用于指定传送目的地的寄存器文件内的寄存器;
所述第二控制单元,
在通过所述判断而判断为所述线程标识符所表示的线程为非执行对象的情况下,控制为根据对所述线程标识符所表示的线程分配的区域的开头地址、以及由所述第二处理器执行的指令所包含的所述第二操作数所表示的寄存器,确定所述存储单元中的写入位置,并向所确定的位置写入存储在由所述第二处理器执行的指令所包含的所述第一操作数所表示的寄存器中的所述处理结果的值;
在通过所述判断而判断为所述线程标识符所表示的线程为执行对象的情况下,控制为在对应的寄存器标识符所表示的寄存器文件中,向所述第二操作数所表示的寄存器写入存储在由所述第二处理器执行的指令所包含的所述第一操作数所表示的寄存器中的所述处理结果的值。
4.根据权利要求3所述的多处理器,其特征在于,
所述第二控制单元,
对于所述多个线程的各个线程,将表示该线程为执行对象还是非执行对象的标志和在该线程为执行对象的情况下识别被分配的寄存器文件的寄存器标识符对应起来存储;
在所述判断中,使用与所述线程标识符所表示的线程对应的标志来进行所述判断。
5.根据权利要求1所述的多处理器,其特征在于,
所述第二控制单元在向所述第二处理器进行处理委托时,将识别所述一个线程的线程标识符输出给所述第二处理器;
所述第二处理器从所述第一处理器接收并存储所述线程标识符,并在通知所述写入请求时,将所述线程标识符包含在所述写入请求中通知给所述第一处理器;
所述第二控制单元如果接收到所述写入请求,则根据接收到的所述写入请求所包含的线程标识符,确定作为所述判断对象的线程。
6.根据权利要求5所述的多处理器,其特征在于,
所述第二控制单元存储在所述存储单元中分配给各线程的区域各自的开头地址;
所述第二处理器,如果执行包含操作码、第一操作数、第二操作数以及线程标识符的指令,则将包含所述线程标识符的所述写入请求通知给所述第一处理器,所述操作码用于指示传送所述处理结果的值,所述第一操作数用于指定存储有所述处理结果的值的第二处理器内的寄存器文件内的寄存器,所述第二操作数用于指定传送目的地的寄存器文件内的寄存器,所述线程标识符用于对请求处理的线程进行识别;
所述第二控制单元在通过所述判断而判断为所述线程标识符所表示的线程为非执行对象的情况下,控制为根据对所述线程标识符所表示的线程分配的区域的开头地址、以及由所述第二处理器执行的指令所包含的所述第二操作数所表示的寄存器,确定所述存储单元中的写入位置,并向所确定的位置写入存储在由所述第二处理器执行的指令所包含的所述第一操作数所表示的寄存器中的所述处理结果的值。
7.根据权利要求1所述的多处理器,其特征在于,
所述多处理器是执行影像的解码处理的处理系统;
由所述第一处理器处理的各线程进行所述解码处理中的被可变长编码的信号的解码;
由所述第二处理器进行的对应于所述指示的处理是与所述解码处理中的逆量化、逆频率变换、运动补偿以及图像数据的加法有关的处理。
8.根据权利要求1所述的多处理器,其特征在于,
所述多处理器是执行影像的编码处理的处理系统;
由所述第一处理器处理的各线程进行所述编码处理中的与对图像数据的可变长编码有关的处理;
由所述第二处理器进行的对应于所述指示的处理是与所述编码处理中的对编码对象的图像数据的预测误差、量化、频率变换、运动补偿、运动检索、逆量化、逆频率变换以及图像数据的加法有关的处理。
9.一种处理方法,在多处理器中使用,该多处理器包括:第一处理器,对多个线程中的作为执行对象的规定个数的线程分别分配不同的寄存器文件,并行进行所分配的各线程的处理;以及第二处理器,进行按照所述第一处理器的指示的处理,上述处理方法的特征在于,
如果由所述第一处理器进行处理委托,则所述第二处理器进行按照所述第一处理器的指示的处理,并将该处理结果的值的写入请求通知给所述第一处理器;
所述第一处理器具备存储单元,该存储单元具有按照所述多个线程的每个线程分配的区域;
所述处理方法包括:
第一控制步骤,对于作为执行对象的各线程,在该线程从执行对象变为非执行对象的情况下,将分配给该线程的寄存器文件内的值保存到在所述存储单元中所分配的区域;
第二控制步骤,控制为按照执行对象的一个线程所包含的指令,向所述第二处理器进行处理委托,如果从所述第二处理器接收到对该线程的处理结果的值的写入请求,则判断在当前时点该线程是否为执行对象,在判断为不是执行对象的情况下,向在所述存储单元中分配给该线程的区域的一部分写入所述处理结果的值;以及
第三控制步骤,在线程从非执行对象再次成为执行对象的情况下,将分配给该线程的区域内的值再次恢复到所分配的寄存器文件中。
CN2009801228436A 2008-06-19 2009-06-16 多处理器 Pending CN102067088A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2008159964 2008-06-19
JP2008-159964 2008-06-19
PCT/JP2009/002735 WO2009153977A1 (ja) 2008-06-19 2009-06-16 マルチプロセッサ

Publications (1)

Publication Number Publication Date
CN102067088A true CN102067088A (zh) 2011-05-18

Family

ID=41433895

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009801228436A Pending CN102067088A (zh) 2008-06-19 2009-06-16 多处理器

Country Status (4)

Country Link
US (1) US8433884B2 (zh)
JP (1) JP5379122B2 (zh)
CN (1) CN102067088A (zh)
WO (1) WO2009153977A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104603748A (zh) * 2012-09-27 2015-05-06 英特尔公司 具有多个核、共享的核扩展逻辑及共享的核扩展利用指令的处理器
TWI703496B (zh) * 2017-10-20 2020-09-01 英商葛夫科有限公司 處理器及其操作之方法,以及電腦程式產品
US11163618B1 (en) 2020-07-24 2021-11-02 Citrix Systems, Inc. Auto termination of applications based on application and user activity

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5336423B2 (ja) 2010-05-14 2013-11-06 パナソニック株式会社 計算機システム
GB2481819B (en) 2010-07-07 2018-03-07 Advanced Risc Mach Ltd Switching between dedicated function hardware and use of a software routine to generate result data
TWI439925B (zh) * 2011-12-01 2014-06-01 Inst Information Industry 內嵌式系統及其執行緒與緩衝區管理方法
US9021237B2 (en) * 2011-12-20 2015-04-28 International Business Machines Corporation Low latency variable transfer network communicating variable written to source processing core variable register allocated to destination thread to destination processing core variable register allocated to source thread
US9069598B2 (en) * 2012-01-06 2015-06-30 International Business Machines Corporation Providing logical partions with hardware-thread specific information reflective of exclusive use of a processor core
US20130339681A1 (en) * 2012-06-18 2013-12-19 Freescale Semiconductor, Inc. Temporal Multithreading
US9430411B2 (en) 2013-11-13 2016-08-30 Sandisk Technologies Llc Method and system for communicating with non-volatile memory
US9390033B2 (en) 2013-11-13 2016-07-12 Sandisk Technologies Llc Method and system for communicating with non-volatile memory via multiple data paths
US9377968B2 (en) 2013-11-13 2016-06-28 Sandisk Technologies Llc Method and system for using templates to communicate with non-volatile memory
US20170147408A1 (en) * 2014-04-22 2017-05-25 Hitachi, Ltd. Common resource updating apparatus and common resource updating method
US10990445B2 (en) * 2017-08-04 2021-04-27 Apple Inc. Hardware resource allocation system for allocating resources to threads
US11269396B2 (en) * 2018-09-28 2022-03-08 Intel Corporation Per-core operating voltage and/or operating frequency determination based on effective core utilization
US11861403B2 (en) * 2020-10-15 2024-01-02 Nxp Usa, Inc. Method and system for accelerator thread management

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04195664A (ja) * 1990-11-28 1992-07-15 Hitachi Ltd マルチプロセッサシステム
US6223208B1 (en) * 1997-10-03 2001-04-24 International Business Machines Corporation Moving data in and out of processor units using idle register/storage functional units
JP2006099332A (ja) * 2004-09-29 2006-04-13 Sony Corp 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム
JP2006350531A (ja) * 2005-06-14 2006-12-28 Sony Computer Entertainment Inc 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム
JP2008052750A (ja) * 2005-04-12 2008-03-06 Matsushita Electric Ind Co Ltd プロセッサ
JP2008123045A (ja) * 2006-11-08 2008-05-29 Matsushita Electric Ind Co Ltd プロセッサ

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002163121A (ja) * 2000-11-22 2002-06-07 Toshiba Corp 仮想マルチスレッドプロセッサ及びスレッド実行方法
US20030225816A1 (en) * 2002-06-03 2003-12-04 Morrow Michael W. Architecture to support multiple concurrent threads of execution on an arm-compatible processor
US7694304B2 (en) * 2003-08-28 2010-04-06 Mips Technologies, Inc. Mechanisms for dynamic configuration of virtual processor resources
US20050050305A1 (en) * 2003-08-28 2005-03-03 Kissell Kevin D. Integrated mechanism for suspension and deallocation of computational threads of execution in a processor
US7418585B2 (en) * 2003-08-28 2008-08-26 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7711931B2 (en) * 2003-08-28 2010-05-04 Mips Technologies, Inc. Synchronized storage providing multiple synchronization semantics
US9032404B2 (en) * 2003-08-28 2015-05-12 Mips Technologies, Inc. Preemptive multitasking employing software emulation of directed exceptions in a multithreading processor
US7870553B2 (en) * 2003-08-28 2011-01-11 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7836450B2 (en) * 2003-08-28 2010-11-16 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7594089B2 (en) * 2003-08-28 2009-09-22 Mips Technologies, Inc. Smart memory based synchronization controller for a multi-threaded multiprocessor SoC
US7376954B2 (en) * 2003-08-28 2008-05-20 Mips Technologies, Inc. Mechanisms for assuring quality of service for programs executing on a multithreaded processor
US7849297B2 (en) * 2003-08-28 2010-12-07 Mips Technologies, Inc. Software emulation of directed exceptions in a multithreading processor
JP4195664B2 (ja) 2004-01-22 2008-12-10 日立建機株式会社 埋設管の取替え方法及び埋設管取替え用の管内周壁加工装置
WO2006109835A1 (ja) 2005-04-12 2006-10-19 Matsushita Electric Industrial Co., Ltd. プロセッサ
US7281118B2 (en) * 2005-08-05 2007-10-09 International Business Machines Corporation Sending thread message generated using DCR command pointed message control block storing message and response memory address in multiprocessor
US7555593B1 (en) * 2006-01-31 2009-06-30 Netlogic Microsystems, Inc. Simultaneous multi-threading in a content addressable memory
US8032734B2 (en) * 2006-09-06 2011-10-04 Mips Technologies, Inc. Coprocessor load data queue for interfacing an out-of-order execution unit with an in-order coprocessor
US7647475B2 (en) * 2006-09-06 2010-01-12 Mips Technologies, Inc. System for synchronizing an in-order co-processor with an out-of-order processor using a co-processor interface store data queue
US20090063881A1 (en) * 2007-08-31 2009-03-05 Mips Technologies, Inc. Low-overhead/power-saving processor synchronization mechanism, and applications thereof

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04195664A (ja) * 1990-11-28 1992-07-15 Hitachi Ltd マルチプロセッサシステム
US6223208B1 (en) * 1997-10-03 2001-04-24 International Business Machines Corporation Moving data in and out of processor units using idle register/storage functional units
JP2006099332A (ja) * 2004-09-29 2006-04-13 Sony Corp 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム
JP2008052750A (ja) * 2005-04-12 2008-03-06 Matsushita Electric Ind Co Ltd プロセッサ
JP2006350531A (ja) * 2005-06-14 2006-12-28 Sony Computer Entertainment Inc 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム
JP2008123045A (ja) * 2006-11-08 2008-05-29 Matsushita Electric Ind Co Ltd プロセッサ

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104603748A (zh) * 2012-09-27 2015-05-06 英特尔公司 具有多个核、共享的核扩展逻辑及共享的核扩展利用指令的处理器
US9582287B2 (en) 2012-09-27 2017-02-28 Intel Corporation Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions
US10061593B2 (en) 2012-09-27 2018-08-28 Intel Corporation Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions
CN104603748B (zh) * 2012-09-27 2018-10-02 英特尔公司 具有多个核、共享的核扩展逻辑及共享的核扩展利用指令的处理器
US10901748B2 (en) 2012-09-27 2021-01-26 Intel Corporation Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions
US10963263B2 (en) 2012-09-27 2021-03-30 Intel Corporation Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions
US11494194B2 (en) 2012-09-27 2022-11-08 Intel Corporation Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions
TWI703496B (zh) * 2017-10-20 2020-09-01 英商葛夫科有限公司 處理器及其操作之方法,以及電腦程式產品
US11113060B2 (en) 2017-10-20 2021-09-07 Graphcore Limited Combining states of multiple threads in a multi threaded processor
US11163618B1 (en) 2020-07-24 2021-11-02 Citrix Systems, Inc. Auto termination of applications based on application and user activity
WO2022016481A1 (en) * 2020-07-24 2022-01-27 Citrix Systems, Inc. Auto termination of applications based on application and user activity
US11550645B2 (en) 2020-07-24 2023-01-10 Citrix Systems, Inc. Auto termination of applications based on application and user activity

Also Published As

Publication number Publication date
US8433884B2 (en) 2013-04-30
JP5379122B2 (ja) 2013-12-25
US20110113220A1 (en) 2011-05-12
WO2009153977A1 (ja) 2009-12-23
JPWO2009153977A1 (ja) 2011-11-24

Similar Documents

Publication Publication Date Title
CN102067088A (zh) 多处理器
JP6047747B2 (ja) 制御タイプの実行モードとデータフロータイプの実行モードとの組み合わせによりタスクを並列に実行可能な複数の処理ユニットを有するシステム
JP7465887B2 (ja) データ構造処理
CN103279428B (zh) 一种显式的面向流应用的多核Cache一致性主动管理方法
CN102017625A (zh) 解码装置
JP5370359B2 (ja) Simd型並列計算機システム、simd型並列計算方法及び制御プログラム
US7007031B2 (en) Memory system for video decoding system
JPH0984004A (ja) 画像処理装置
JP2002041285A (ja) データ処理装置およびデータ処理方法
CN102483708B (zh) 处理器
US20080235519A1 (en) Data processing method and data processing device
CN102193828B (zh) 从处理器中的并发物理线程的数目中去耦合逻辑线程的数目
KR100895298B1 (ko) 멀티미디어 데이터의 효율적인 병렬 처리를 위한 장치,방법, 데이터 처리 엘리먼트
KR20070082835A (ko) 직접 메모리 액세스 제어장치 및 방법
JP2005102144A (ja) Mpegのデータ処理装置
CN114168199B (zh) 读写操作多数据请求解耦电路结构及读写方法
US20220100543A1 (en) Feedback mechanism for improved bandwidth and performance in virtual environment usecases
KR100846791B1 (ko) 비디오 데이터 저장 방법 및 장치
CN102428441B (zh) 处理器
JPWO2013011620A1 (ja) マルチプロセッサシステム
KR101084044B1 (ko) 고화질 멀티 포맷 비디오 코덱 시스템을 위한 멀티 프로세서 플랫폼 기반 시스템
JP2011160077A (ja) 復号装置および方法
CN116821008B (zh) 具有提高的高速缓存命中率的处理装置及其高速缓存设备
JPH07210545A (ja) 並列処理プロセッサ
US8373711B2 (en) Image processing apparatus, image processing method, and computer-readable storage medium

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: 20110518