多处理器的制作方法

文档序号:6593961阅读:125来源:国知局
专利名称:多处理器的制作方法
技术领域
本发明涉及在能够同时执行多个线程的一个处理器和进行对应于所述一个处理 器的处理请求的处理的另一处理器中,高效进行这些处理器间的数据交换的技术。
背景技术
为了进行数字化后的影像数据和声音数据等的压缩、解压缩等的媒体处理,使用 着专用硬件或高性能的DSP(Digital Signal Processor 数字信号处理器)等。近年来,媒体处理的复杂度升高,图像大小、声音的声道数等也处于增加的趋势, 该媒体处理的运算量也趋向于增大。因此,要求提高处理效率。因此,例如,在非专利文献1中,公开了通过同时执行多个程序来大幅提高运算效 率的高性能多线程处理器。通过使用该多线程处理器,能够实现媒体处理性能的提高。非专禾丨J 文献 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(步骤3500、5501)。在时间tl,线程1向扩展运算处理器进行处理委托,接收到处理委托的扩展运算 处理器进行对线程1的处理(步骤S502)。在时间t2,线程1变为非活动,线程3被在第二逻辑处理器上执行(步骤S503), 在线程3的执行中的时间t3结束扩展运算处理器的处理。在该情况下,由于在执行着线程 3,所以扩展运算处理器不能将处理结果反映到线程1,因此在第二处理器上的处理对象从 线程3切换到线程1之前,处于等待状态。因此,在时间t4,即使由线程2发出处理委托,扩 展运算处理器也不能接受处理委托。之后,如果在第二逻辑处理器上处理对象从线程3切换到线程1 (时间t5),则扩展 运算处理器将步骤S502中的处理结果反映到线程1,从线程1的处理释放(时间t6)。
5
在时间t6以后,在第二逻辑处理器中执行反映了处理结果的线程1 (步骤S504)。并且,在时间t7,扩展运算处理器接受来自线程2的处理委托,进行对线程2的处理。这样,在时间t3到t5期间,尽管对线程1的处理已结束,但由于线程1不是处理 对象,即没有处于能够反映处理结果的状态,因此扩展运算处理器仍处于没有从线程1的 占有中被释放的状态,所以运算效率下降。

发明内容
因此,本发明的目的是提供一种不会降低处理效率、而能够处理多个线程的多处 理器和处理方法。为了实现上述的目的,本发明的多处理器,包括第一处理器,对多个线程中的作 为执行对象的规定个数的线程分别分配不同的寄存器文件,并行进行所分配的各线程的处 理;以及第二处理器,进行按照所述第一处理器的指示的处理,上述多处理器的特征在于, 如果由所述第一处理器进行处理委托,则所述第二处理器进行按照所述第一处理器的指示 的处理,并将该处理结果的值的写入请求通知给所述第一处理器;所述第一处理器包括 存储单元,具有按照所述多个线程各自分配的区域;第一控制单元,对于作为执行对象的各 线程,在该线程从执行对象变为非执行对象的情况下,将分配给该线程的寄存器文件内的 值保存到在所述存储单元中分配的区域;第二控制单元,控制为按照执行对象的一个线程 所包含的指令,向所述第二处理器进行处理委托,如果从所述第二处理器接收到对该线程 的处理结果的值的写入请求,则判断在当前时点该线程是否为执行对象,在判断为不是执 行对象的情况下,向在所述存储单元中分配给该线程的区域的一部分写入所述处理结果的 值;以及第三控制单元,在线程从非执行对象再次成为执行对象的情况下,将分配给该线程 的区域内的值再次恢复到所分配的寄存器文件中。根据该结构,多处理器的第一处理器在接收到来自第二处理器的写入请求的时 点,在向第二处理器委托处理的线程不是执行对象的情况下,将处理结果的值写入存储单 元,所以能够结束第二处理器对委托了处理的线程的处理。由此,第一处理器能够将下面的 处理委托委托给第二处理器,所以能够处理多个线程,而不会使多处理器处理效率下降。这里,也可以是,所述第二控制单元在对所述第二处理器委托处理时,将识别所述 一个线程的线程标识符输出给所述第二处理器;所述第二处理器从所述第一处理器接收所 述线程标识符,并进行存储;所述第二控制单元如果接收到所述写入请求,则取得存储在所 述第二处理器中的所述线程标识符,并根据所取得的线程标识符,确定作为所述判断对象 的线程。根据该结构,多处理器的第一处理器在接收到所述写入请求时,从第二处理器取 得对进行了处理委托的线程进行识别的线程标识符,所以能够可靠地确定判断对象的线程。这里,也可以是,所述第二控制单元存储在所述存储单元中分配给各线程的区域 各自的开头地址;所述第二处理器,如果执行包含操作码、第一操作数以及第二操作数的指 令,则将所述写入请求通知给所述第一处理器,所述操作码用于指示传送所述处理结果的 值,所述第一操作数用于指定存储有所述处理结果的值的第二处理器内的寄存器文件内的寄存器,所述第二操作数用于指定传送目的地的寄存器文件内的寄存器;所述第二控制单 元,在通过所述判断而判断为所述线程标识符所表示的线程为非执行对象的情况下,控制 为根据对所述线程标识符所表示的线程分配的区域的开头地址、以及由所述第二处理器执 行的指令所包含的所述第二操作数所表示的寄存器,确定所述存储单元中的写入位置,并 向所确定的位置写入存储在由所述第二处理器执行的指令所包含的所述第一操作数所表 示的寄存器中的所述处理结果的值;在通过所述判断而判断为所述线程标识符所表示的线 程为执行对象的情况下,控制为在对应的寄存器标识符所表示的寄存器文件中,向所述第 二操作数所表示的寄存器写入存储在由所述第二处理器执行的指令所包含的所述第一操 作数所表示的寄存器中的所述处理结果的值。根据该结构,通过第二处理器执行所述指令,能够可靠地确定第二处理器内的处 理结果的值的保存位置、和对进行处理委托的线程的写入位置。这里,也可以是,所述第二控制单元,对于所述多个线程的各个线程,将表示该线 程为执行对象还是非执行对象的标志和在该线程为执行对象的情况下识别被分配的寄存 器文件的寄存器标识符对应起来存储;在所述判断中,使用与所述线程标识符所表示的线 程对应的标志来进行所述判断。根据该结构,第一处理器通过使用所述标志,能够可靠地判断判断对象的线程是 否为执行对象。这里,也可以是,所述第二控制单元在向所述第二处理器径向处理委托时,将识别 所述一个线程的线程标识符输出给所述第二处理器;所述第二处理器从所述第一处理器接 收并存储所述线程标识符,并在通知所述写入请求时,将所述线程标识符包含在所述写入 请求中通知给所述第一处理器;所述第二控制单元如果接收到所述写入请求,则根据接收 到的所述写入请求所包含的线程标识符,确定作为所述判断对象的线程。根据该结构,多处理器的第一处理器接收包含用于对进行了处理委托的线程进行 识别的线程标识符的所述写入请求,所以能够可靠地确定判断对象的线程。这里,也可以是,所述第二控制单元存储在所述存储单元中分配给各线程的区域 各自的开头地址;所述第二处理器,如果执行包含操作码、第一操作数、第二操作数以及线 程标识符的指令,则将包含所述线程标识符的所述写入请求通知给所述第一处理器,所述 操作码用于指示传送所述处理结果的值,所述第一操作数用于指定存储有所述处理结果的 值的第二处理器内的寄存器文件内的寄存器,所述第二操作数用于指定传送目的地的寄存 器文件内的寄存器,所述线程标识符用于对请求处理的线程进行识别;所述第二控制单元 在通过所述判断而判断为所述线程标识符所表示的线程为非执行对象的情况下控制为,根 据对所述线程标识符所表示的线程分配的区域的开头地址、以及由所述第二处理器执行的 指令所包含的所述第二操作数所表示的寄存器,确定所述存储单元中的写入位置,并向所 确定的位置写入存储在由所述第二处理器执行的指令所包含的所述第一操作数所表示的 寄存器中的所述处理结果的值。根据该结构,通过第二处理器执行所述指令,能够可靠地确定第二处理器内的处 理结果的值的存储位置、对进行了处理委托的线程的写入位置、和进行了处理委托的线程。这里,也可以是,所述多处理器是执行影像的解码处理的处理系统;由所述第一处理器处理的各线程进行所述解码处理中的被可变长编码的信号的解码;由所述第二处理器进行的对应于所述指示的处理是与所述解码处理中的逆量化、逆 频率变换、运动补偿以及图像数据的加法有关的处理。根据该结构,由多处理器进行的解码处理能够不降低处理效率地处理多个线程。这里,也可以是,所述多处理器是执行影像的编码处理的处理系统;由所述第一处 理器处理的各线程进行所述编码处理中的与对图像数据的可变长编码有关的处理;由所述 第二处理器进行的对应于所述指示的处理是与所述编码处理中的对编码对象的图像数据 的预测误差、量化、频率变换、运动补偿、运动检索、逆量化、逆频率变换以及图像数据的加 法有关的处理。根据该结构,多处理器进行的编码处理能够不降低处理效率地处理多个线程。


图1是表示多处理器系统10的结构的图。图2是表示控制部111的结构的图。图3是表示线程信息表TlOO的数据结构的一例的图。图4是表示运算结束控制指令TllO的数据结构的一例的图。图5是表示反映对象线程活动的情况下的数据的反映目的地的图。图6是表示反映对象线程不活动的情况下的数据的反映目的地的图。图7是表示运算结束控制指令TllO执行时的处理动作的流程图。图8是表示执行多个线程的情况下的动作的具体例的图。图9是表示运算结束控制指令T120的数据结构的一例的图。图10是表示多处理器系统1000的结构的图。图11是表示将多处理器系统10适用于解码器IOA的情况下的一例的图。图12是表示将多处理器系统10适用于编码器IOB的情况下的一例的图。图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指令缓冲器10 、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- 指令解码器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在将线程设为活动化和非活动化时,进行后述的线程信息表TlOO 的更新。(1-7-2)线程信息存储部161线程信息存储部161管理各个线程各自的状态,具有如图3所示的线程信息表 T100。线程信息表TlOO具有用于存储多个(线程个数)下述组(条目)的区域,该组由 线程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有效,且当前处于非活动状态。另外,如上所述,线程信息表TlOO由线程控制部160更新。例如,在线程1从活动 切换为非活动的情况下,保存部165将线程1、即与线程ID“00001”对应的线程状态标志从 “00”更新为表示线程状态的切换中的值“ 10”,若切换完成,则线程状态标志从“ 10”更新为 表示非活动状态的值“01”。此外,相反,在从非活动切换为活动的情况下,恢复部166将线
10程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从线程信息表TlOO取得对请求了处理的该一个线程进行识别的线程ID,并 将所取得的线程ID输出给扩展运算处理器。之后,处理器控制部162如果从扩展运算处理器12接收与向对扩展运算处理器12 请求了处理的线程的写入有关的写入请求,则从扩展运算处理器12取得处理的委托源的 线程的线程ID。这里,所谓写入请求是指若由扩展运算处理器12执行运算结束控制指令 T110,则通知给处理器控制部162的请求。对于运算结束控制指令TllO的细节,将在后面 叙述。处理器控制部162使用线程信息表T100,参照包含所取得的线程ID的条目内的线 程状态标志,判断是否将与该线程ID对应的线程作为执行对象分配了逻辑处理器,即判断 是活动状态还是非活动状态。在判断为是非活动状态的情况下,处理器控制部162控制为,将从扩展运算处理 器12输出的写入对象的数据写入到由该条目内的基本地址和在扩展运算处理器12中指定 的寄存器确定的上下文存储器112内的地址。另外,向上下文存储器112的写入不会对当 前时点活动的线程的执行带来影响,而通过硬件的处理并行实现。通过这样的动作,可以防 止抢占执行活动的线程的执行时间而降低处理效率。在判断为是活动状态的情况下,处理器控制部162控制为在分配了与该线程ID对 应的线程的逻辑处理器的寄存器文件中,将从扩展运算处理器12输出的写入对象的数据 写入到由扩展运算处理器12指定的地址中。这里,说明由扩展运算处理器12执行的运算结束控制指令TllO的数据结构。图4是本实施方式1的运算结束控制指令TllO的格式,由操作码301、第一操作数 302以及第二操作数303构成。操作码301是指示处理器以使其完成执行中的本线程(扩展运算处理器12)、并 且将本线程(扩展运算处理器1 的在寄存器文件内的数据传送到其他线程(请求源的线 程)的寄存器文件内的代码。第一操作数302将本线程(扩展运算处理器)所使用的寄存器文件的寄存器指定 为数据传送源。第二操作数303将其他线程(请求源的线程)所使用的寄存器文件的寄存器指定 为数据传送目的地。另外,这里设第二操作数303是用寄存器号表示寄存器的操作数。在请求源的线程为活动状态的情况下,通过处理器控制部162的控制,将由第一 操作数302表示的寄存器中存储的数据(值)写入到由第二操作数303表示的、逻辑处理
11器内的寄存器文件的寄存器中。在请求源的线程为活动状态的情况下,通过处理器控制部162的控制,首先使用 线程信息表T100,从包含所取得的线程ID的条目中确定(特别指定)与请求源的线程相对 应的基本地址。根据所确定的基本地址和由第二操作数303表示的值(Rd),确定应在上下 文存储器112内写入的地址。例如,在用4个字节存储基本地址、且寄存器的大小各为4个 字节的情况下,用公式“基本地址+(第二操作数X4)”来确定。存储在由第一操作数302 表示的寄存器中的数据(值)被写入到由所确定的上下文存储器112上的地址表示的寄存 器中。图5和图6是本实施方式1中的执行(发出)了运算结束控制指令TllO的情况下 的动作。另外,这里,为了便于说明,设多线程处理器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- 指令解码器114指令解码器114是从指令存储器113读出指令,进行解码,并写入到指令缓冲器 115的处理部。若通过解码发出(执行)运算结束控制指令T110,则指令解码器114将发出的运 算结束控制指令TllO写入到指令缓冲器115,并且对多线程处理器11的处理器控制部162 通知写入请求。
(2-3)指令缓冲器115指令缓冲器115是从指令解码器114接收指令并进行保持的存储部。寄存器文件116是在执行保持在指令缓冲器115中的指令时,保持作为读出和写 入对象的数据的寄存器组。另外,设寄存器文件116的开头地址从0开始。(2-4)运算器组 117运算器组117是包含加法器和乘法器等多个运算器的处理部,执行保持在指令缓 冲器115中的指令。运算器组117,如果从指令缓冲器115读出运算结束控制指令T110,则读出所读出 的运算结束控制指令TllO所包含的第一操作数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所示的流程图来说明执行了运算结束控制指令TllO时的多处理器 系统10的动作。若由扩展运算处理器12发出运算结束控制指令T110,则多线程处理器11的处理 器控制部162从线程信息存储部119取得应反映的线程的ID、即处理请求源的线程ID (步 骤 S105)。处理器控制部162读出线程信息表TlOO的记录了应反映的线程ID的信息的条目 (步骤 Sl 10)。处理器控制部162判断所读出的条目所包含的有效标志202的内容是否是1(步 骤 Sl 15)。在判断为不是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)。在时间tl,线程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不活动的情况下, 也可通过上述的运算结束控制指令TllO将处理结果(数据)反映到上下文存储器112上 的与线程1对应的区域上,并立即完成处理。因此,不会产生不需要的等待时间,而能够有 效使用运算资源。根据本实施方式的多处理器,在使基于扩展运算处理器12的线程结束、并且将作 为处理结果的数据传送到其他线程(委托源的线程)时,根据该其他线程的状态,即数据接 收侧的线程是否活动,来适当选择数据传送目的地,所以能够有效进行线程间的数据交换。2.实施方式2实施方式2中,运算结束控制指令字段的数据结构与实施方式1不同。以下说明指令字段的结构和动作流程图中的不同点。另外,对于与实施方式1相 同的结构要素,使用同一符号。
14
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所示,由多线程处理器Ila和扩展运算处理器12a构 成。在实施方式2中,指令解码器和处理器控制部与实施方式1不同。下面,说明图10 所示的实施方式2中的指令解码器IHa和处理器控制部16加。对于赋予了与实施方式1 同样的附图标记的结构要素,由于已在实施方式1中进行了说明,所以省略这里的说明。另 外,图10所示的第一逻辑处理器151,虽然未图示但与实施方式1同样具有第一指令缓冲器 103和第一寄存器文件106。此外,第二逻辑处理器152和第N逻辑处理器153也同样具有 实施方式1所示的指令缓冲器和寄存器文件。对于线程控制部160,也虽然没有图示,但是 与实施方式1同样,具有保存部165和恢复部166。(1)指令解码器11 若通过解码发出运算结束控制指令T120,则指令解码器11 从第三操作数取得 线程ID。指令解码器IHa将所发出的运算结束控制指令T120写入指令缓冲器115,并且 向多线程处理器11的处理器控制部16 通知包含所取得的线程ID的写入请求。(2)处理器控制部16 处理器控制部16 与实施方式1同样,根据作为执行对象的一个线程的指令,向 扩展运算处理器12进行处理委托,并向扩展运算处理器12通知进行了处理委托的线程的 线程ID。这时,线程ID被写入到线程信息存储部119。之后,处理器控制部16 若从扩展运算处理器12接收包含线程ID的写入请求, 则参照包含接收到的写入请求所包含的线程ID的条目内的线程状态标志,判断与该线程 ID对应的线程是否被作为执行对象来分配了逻辑处理器,S卩,是活动状态还是非活动状态。 对于之后的动作,由于与实施方式1同样,所以省略这里的说明。2. 3 动作以下,对于执行了运算结束控制指令T120的情况下的多处理器系统10的动作,仅 说明图7的变更点。变更点如以下这样改变步骤S105的动作。若在扩展运算处理器12中执行运算结束控制指令T120,则从第三操作数904取得 运算结束控制指令T120所包含的线程ID。之后的动作与图7所示的步骤SllO到S140的动作相同,所以省略这里的说明。2. 4实施方式2的总结在实施方式2中,表示作为是否活动的判断对象的线程的线程ID的取得方法与实施方式1不同,所得到的效果相同。3.实施方式3这里,作为使用实施方式1所示的多处理器系统10的系统的具体例,说明适用于 影像的解码、编码处理的情况。图11表示将多处理器系统10适用于进行解码处理的解码器IOA的情况。图12表示将多处理器系统10适用于进行编码处理的编码器IOB的情况。3. 1适用于解码处理的情况解码器IOA如图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适用于编码处理的情况编码器IOB如图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有关的处理,从 而能够在编码器IOB中适用实施方式1所示的多处理器系统10。3. 3实施方式3的总结对使用H. 264等标准压缩的影像信号进行解码时,如上所述,需要进行比特流的 解析、被可变长编码的信号的解码处理、逆量化、逆频率变换、运动补偿、去块滤波处理。在这些处理中,比特流的解析、被可变长编码的信号的解码处理这样的顺序处理, 在一般处理器(多线程处理器)中能够进行实际的动作频率下的处理。另一方面,关于作 为像素处理的逆量化、逆频率变换、运动补偿、去块滤波处理,适用对多个像素同时进行运 算的数据并行式处理器(扩展运算处理器)。数据并行式处理器因寄存器组和运算器而需要宽度较宽的数据宽度,所以通过设 为独立的扩展运算处理器,能够安装高效的处理器,而不会增加进行顺序处理的处理器的 资源。在本实施例中,通过由多线程处理器进行顺序处理、由所述扩展运算处理器进行 像素处理,能够构筑抑制了电路规模的增加、并且提高扩展运算处理器的使用效率的实时 影像处理系统。4.变形例上述说明的各实施方式是本发明的实施的一例,本发明并不限于该实施方式,可 以在不脱离其精神的范围内以各种方式进行实施。例如,下面这种情形也包含在本发明中。(1)上述实施方式中,扩展运算处理器12的各结构要素113 117可以与多线程 处理器11的结构要素共用。(2)上述实施方式中,扩展运算处理器12与多线程处理器11相独立地保持了指 令,但是并不限于此。也可以是,扩展运算处理器12根据供给源的线程、即逻辑处理器的指示来动作。(3)上述实施方式中,指令解码器114将写入请求通知给处理器控制部162,但是 并不限于此。也可以是,运算器组117在进行基于运算结束控制指令TllO的处理后,向多线程 处理器11输出数据时,将写入请求通知给处理器控制部162。此外,在运算器组117进行基于运算结束控制指令T120的处理的情况下,也同样 通过在向多线程处理器11输出数据时,将包含线程ID的写入请求通知给处理器控制部162 来实现。(4)上述实施方式中,运算结束控制指令Tl 10包含一组由第一操作数Rs和第二操 作数Rd构成的组,但是并不限于此。在运算结束控制指令TllO内也可以包含多个该组。此外,在运算结束控制指令T120中也同样,可以包含多个由第一操作数Rs和第二 操作数Rd构成的组。(5)上述实施方式中,在执行了运算结束控制指令Tl 10时,运算器组117将在运算 结束控制指令TllO所包含的第一操作数所表示的寄存器Rs中存储的值(处理结果)、和将 该值写入到第二操作数所表示的寄存器Rd中的指示输出给多线程处理器11,但是并不限于此。也可以是,运算器组117将运算结束控制指令TllO所包含的第一操作数所表示的 寄存器Rs、和将该值写入到第二操作数所表示的寄存器Rd中的指示输出给多线程处理器 11。这时,处理器控制部162根据接收到的指示所包含的寄存器Rs所表示的地址,从 寄存器文件116读出处理结果,并对于所读出的处理结果,使用寄存器Rd确定与请求源的 线程的状态对应的写入目的地。此外,在实施方式2中,能够通过在上述的指示中进一步包含由第3操作数表示的 请求源的线程ID来实现。(6)在上述实施方式中,在线程初次分配到逻辑处理器时,线程控制部160追加与 该线程对应的条目,但是并不限于此。例如,也可以将各线程与被分配的逻辑处理器预先建立对应。该情况下,在线程信 息表TlOO中预先登记有每个线程的条目,将条目所包含的有效标志和线程状态标志各自 的初始值设为“0”和“00”,并根据对应的线程的状态,线程控制部160更新这些标志的值。(8)在上述实施方式中,多线程处理器11是1个处理器,在该处理器内构成多个逻 辑处理器,但是并不限于此。在多线程处理器11内也可以构成多个处理器元件。(9)在上述实施方式中,扩展运算处理器12在对处理请求源的线程的处理完成的 时点,将与写入有关的请求通知给多线程处理器11,但是并不限于此。也可以在处理过程中,向多线程处理器11通知与写入有关的请求。(10)在上述实施方式中,寄存器的尺寸为4个字节,但是并不限于此。寄存器的尺寸也可以是其他值。例如16个字节。在该情况下,上述的公式变更为 “基本地址+(第二操作数X 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恢复部
说明书
15/15 页
19
权利要求
1.一种多处理器,包括第一处理器,对多个线程中的作为执行对象的规定个数的线 程分别分配不同的寄存器文件,并行进行所分配的各线程的处理;以及第二处理器,进行按 照所述第一处理器的指示的处理,上述多处理器的特征在于,如果由所述第一处理器进行处理委托,则所述第二处理器进行按照所述第一处理器的 指示的处理,并将该处理结果的值的写入请求通知给所述第一处理器; 所述第一处理器包括存储单元,具有按照所述多个线程的每个线程分配的区域;第一控制单元,对于作为执行对象的各线程,在该线程从执行对象变为非执行对象的 情况下,将分配给该线程的寄存器文件内的值保存到在所述存储单元中分配的区域;第二控制单元,控制为按照执行对象的一个线程所包含的指令,向所述第二处理器进 行处理委托,如果从所述第二处理器接收到对该线程的处理结果的值的写入请求,则判断 在当前时点该线程是否为执行对象,在判断为不是执行对象的情况下,向在所述存储单元 中分配给该线程的区域的一部分写入所述处理结果的值;以及第三控制单元,在线程从非执行对象再次成为执行对象的情况下,将分配给该线程的 区域内的值再次恢复到所分配的寄存器文件中。
2.根据权利要求1所述的多处理器,其特征在于,所述第二控制单元在向所述第二处理器进行处理委托时,将识别所述一个线程的线程 标识符输出给所述第二处理器;所述第二处理器从所述第一处理器接收所述线程标识符,并进行存储; 所述第二控制单元如果接收到所述写入请求,则取得存储在所述第二处理器中的所述 线程标识符,并根据所取得的线程标识符,确定作为所述判断对象的线程。
3.根据权利要求2所述的多处理器,其特征在于,所述第二控制单元存储在所述存储单元中分配给各线程的区域各自的开头地址; 所述第二处理器,如果执行包含操作码、第一操作数以及第二操作数的指令,则将所述 写入请求通知给所述第一处理器,所述操作码用于指示传送所述处理结果的值,所述第一 操作数用于指定存储有所述处理结果的值的第二处理器内的寄存器文件内的寄存器,所述 第二操作数用于指定传送目的地的寄存器文件内的寄存器; 所述第二控制单元,在通过所述判断而判断为所述线程标识符所表示的线程为非执行对象的情况下,控制 为根据对所述线程标识符所表示的线程分配的区域的开头地址、以及由所述第二处理器执 行的指令所包含的所述第二操作数所表示的寄存器,确定所述存储单元中的写入位置,并 向所确定的位置写入存储在由所述第二处理器执行的指令所包含的所述第一操作数所表 示的寄存器中的所述处理结果的值;在通过所述判断而判断为所述线程标识符所表示的线程为执行对象的情况下,控制为 在对应的寄存器标识符所表示的寄存器文件中,向所述第二操作数所表示的寄存器写入存 储在由所述第二处理器执行的指令所包含的所述第一操作数所表示的寄存器中的所述处 理结果的值。
4.根据权利要求3所述的多处理器,其特征在于, 所述第二控制单元,对于所述多个线程的各个线程,将表示该线程为执行对象还是非执行对象的标志和在 该线程为执行对象的情况下识别被分配的寄存器文件的寄存器标识符对应起来存储; 在所述判断中,使用与所述线程标识符所表示的线程对应的标志来进行所述判断。
5.根据权利要求1所述的多处理器,其特征在于,所述第二控制单元在向所述第二处理器进行处理委托时,将识别所述一个线程的线程 标识符输出给所述第二处理器;所述第二处理器从所述第一处理器接收并存储所述线程标识符,并在通知所述写入请 求时,将所述线程标识符包含在所述写入请求中通知给所述第一处理器;所述第二控制单元如果接收到所述写入请求,则根据接收到的所述写入请求所包含的 线程标识符,确定作为所述判断对象的线程。
6.根据权利要求5所述的多处理器,其特征在于,所述第二控制单元存储在所述存储单元中分配给各线程的区域各自的开头地址; 所述第二处理器,如果执行包含操作码、第一操作数、第二操作数以及线程标识符的指 令,则将包含所述线程标识符的所述写入请求通知给所述第一处理器,所述操作码用于指 示传送所述处理结果的值,所述第一操作数用于指定存储有所述处理结果的值的第二处理 器内的寄存器文件内的寄存器,所述第二操作数用于指定传送目的地的寄存器文件内的寄 存器,所述线程标识符用于对请求处理的线程进行识别;所述第二控制单元在通过所述判断而判断为所述线程标识符所表示的线程为非执行 对象的情况下,控制为根据对所述线程标识符所表示的线程分配的区域的开头地址、以及 由所述第二处理器执行的指令所包含的所述第二操作数所表示的寄存器,确定所述存储单 元中的写入位置,并向所确定的位置写入存储在由所述第二处理器执行的指令所包含的所 述第一操作数所表示的寄存器中的所述处理结果的值。
7.根据权利要求1所述的多处理器,其特征在于, 所述多处理器是执行影像的解码处理的处理系统;由所述第一处理器处理的各线程进行所述解码处理中的被可变长编码的信号的解码;由所述第二处理器进行的对应于所述指示的处理是与所述解码处理中的逆量化、逆频 率变换、运动补偿以及图像数据的加法有关的处理。
8.根据权利要求1所述的多处理器,其特征在于, 所述多处理器是执行影像的编码处理的处理系统;由所述第一处理器处理的各线程进行所述编码处理中的与对图像数据的可变长编码 有关的处理;由所述第二处理器进行的对应于所述指示的处理是与所述编码处理中的对编码对象 的图像数据的预测误差、量化、频率变换、运动补偿、运动检索、逆量化、逆频率变换以及图 像数据的加法有关的处理。
9.一种处理方法,在多处理器中使用,该多处理器包括第一处理器,对多个线程中的 作为执行对象的规定个数的线程分别分配不同的寄存器文件,并行进行所分配的各线程的 处理;以及第二处理器,进行按照所述第一处理器的指示的处理,上述处理方法的特征在 于,如果由所述第一处理器进行处理委托,则所述第二处理器进行按照所述第一处理器的 指示的处理,并将该处理结果的值的写入请求通知给所述第一处理器;所述第一处理器具备存储单元,该存储单元具有按照所述多个线程的每个线程分配的 区域;所述处理方法包括第一控制步骤,对于作为执行对象的各线程,在该线程从执行对象变为非执行对象的 情况下,将分配给该线程的寄存器文件内的值保存到在所述存储单元中所分配的区域;第二控制步骤,控制为按照执行对象的一个线程所包含的指令,向所述第二处理器进 行处理委托,如果从所述第二处理器接收到对该线程的处理结果的值的写入请求,则判断 在当前时点该线程是否为执行对象,在判断为不是执行对象的情况下,向在所述存储单元 中分配给该线程的区域的一部分写入所述处理结果的值;以及第三控制步骤,在线程从非执行对象再次成为执行对象的情况下,将分配给该线程的 区域内的值再次恢复到所分配的寄存器文件中。
全文摘要
提供一种多处理器,不会降低处理效率的多处理器,而能够处理多个线程。该多处理器包括第一处理器,对多个线程中的作为执行对象的规定个数的线程分别分配不同的寄存器文件,并行进行所分配的各线程的处理;以及第二处理器,进行对应于所述第一处理器的指示的处理,所述第一处理器具有按照所述多个线程的每个线程分配的存储区域,按照执行对象的一个线程所包含的指令,向所述第二处理器进行处理委托,若从所述第二处理器接收到对该线程的处理结果的值的写入请求,则判断在当前时点该线程是否为执行对象,在判断为不是执行对象的情况下,控制为向分配给该线程的存储区域写入所述处理结果的值。
文档编号G06F9/48GK102067088SQ20098012284
公开日2011年5月18日 申请日期2009年6月16日 优先权日2008年6月19日
发明者森下广之 申请人:松下电器产业株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1