运算处理装置、处理器、程序转换装置以及程序的制作方法

文档序号:6467766阅读:176来源:国知局
专利名称:运算处理装置、处理器、程序转换装置以及程序的制作方法
技术领域
本发明涉及以同一周期能够执行多个指令的运算处理装置,尤其涉及 有效适用于多线程化的处理器与硬件加速器高效率地同步的情况的技术。
背景技术
最近,不仅通过超流水线技术,而且还通过超标量(super scalar)或多 处理器、以及多线程体系结构等处理器的并列技术来提高处理性能。另一 方面,对硬件加速器、或来自程序的请求,应该在一定的时间内确实结束 处理的实时处理的要求也越来越高。
专利文献1 :(日本)特开平9-54693号公报(图1)
专利文献2 :(日本)特开2003-271399号公报(图1)
专利文献3 :美国特许第5958044号说明书(图1)
非专禾[J文献 1 : John L. Hennessy & David A. Patterson "Computer Architecture A Quantitative Approach Fourth Edition" 2006(P.172 Chapter Three Limits in Instruction-Level Parallelism)
然而,对于伴随向硬件加速器的访问的实时处理,适用所述并列技术 的处理器不具有容易保障实时处理性能的机构。因此,在试图保障实时处 理性能的情况下,需要具有充分的性能的处理器,或需要可以执行还设想 到本来发生频率低的最坏情况(处理器负载、存储器访问竞争、或其它的流 水线冲突(pipelinehazard))的有效性能的估计的处理器。例如,对于以装 入/保存访问的流水线推迟来等待实时处理完成的方法,由于可以与向硬件 加速器的访问同步,因此可以保障以最短时间的工作,但是,由于对流水 线控制需要互锁机构,因此在具有高速化了的超流水线机构的处理器的微 架构(Microarchitecture)中产生与高速传递有关的安装上的问题。并且, 对于以中断或Coarse- Grained Multithreading(CGMT :粗粒度多线程) 机构(参照,专利文献2等)来与向硬件加速器的访问同步的方法,由于当前的处理的切换的系统开销(overhead)的粒度较大,因此作为在处理器以几 周期到几十周期的粒度来实现定时(同步)的机构,从实时处理的最坏情况保 障的观点来看存在问题。最后,对于以分支指令、装入/保存访问的流水线 重新开始的执行、或插入NOP指令来调整定时的方法,适于以最细粒度来 可以实现定时(同步)的机构。但是,需要增加NOP指令数、或按照工作频 率变更指令码,另外,对于以超流水线级具有Simultaneous Multithreading(SMT :同时多线程)机构的处理器存在的问题是,即使根 据该分支指令、重新开始执行、NOP指令的插入,在设想最坏情况的情况 下,也难以调整该细粒度。对于与NOP指令数的增加有关的第一问题,若 利用专利文献3的机构,则可以减少指令码大小,但是,对于第二问题, 需要对工作频率的指令码变更,以软件的错误(bug汰检测该变更的遗漏是 非常困难的,因此还存在问题。对于以超流水线级具有SMT机构的处理器 的第一问题,由于以要执行尽量多的指令的想法来工作,因此需要将设想 到尽量多的指令被执行的情况的NOP指令数插入。即,在以SMT执行的 情况下,有其它线程的指令流被执行的情况,也有按每个周期本线程的指 令流不被执行的情况,因此根据估计最坏情况的NOP指令数,产生诸如实 时过长之类的调整粒度的问题。
如上所述,在以超流水线来多线程化的处理器向硬件加速器访问的情 况下,需要考虑以细粒度的期间(周期单位)的、以最短周期来可以保障指令 的执行的实时的方法。

发明内容
本发明的目的在于提供具有多线程流水线结构的运算处理装置,在与 硬件加速器同步的情况下,与多线程执行状态无关,以最短周期来保障指 令的执行的实时。
为了解决所述问题,本发明的运算处理装置,在同一周期可以执行多 个指令,其特点是,包括指令读取单元,读取多个指令码;指令发行单
元,将所述指令读取单元所读取的多个指令码,分割为由能够同时发行的
指令组成的一个以上的指令组,从而发行指令组的指令码;指令解码单元, 对所述指令发行单元所发行的一个以上的指令码进行解码,从而生成运算
7所需要的控制信号;以及运算处理单元,根据所述指令解码单元所生成的
所述控制信号进行运算,所述指令发行单元,具有检测单元,检测特定
指令,所述特定指令指示只在刚发行特定指令后的规定的周期期间停止发
行后续于所述特定指令的指令;以及指令发行停止单元,只在刚发行所述 特定指令后的规定的周期期间停止发行所述后续的指令。
在此,也可以是,所述指令发行单元,在检测出所述特定指令的情况 下,将后续于所述特定指令的指令从包含所述特定指令的指令组中除外。
在此,也可以是,所述指令读取单元,从多个线程中分别读取指令码, 所述指令发行单元,按每个线程将线程中的指令串分割为指令组。
而且,在本发明中,将进行以SMT能够执行的处理器的程序执行时间 的最短执行时间的调整之事宜描述为指令同步执行。
在此,也可以是,所述检测单元,依据指令码中的1位的指令位字段 来检测所述特定指令。根据该结构,由于通过对1位的指令位字段进行解 码,来进行所述指令同步执行检测,因此具有可以对所有的指令进行实时 执行的单元。
在此,也可以是,所述检测单元,通过对指令码中的多位的指令位字 段进行解码,从而检测所述特定指令。根据该结构,由于通过对多位的指 令位字段进行解码,来进行所述指令同步执行检测,因此具有可以对某种 特定的指令进行实时执行的单元。
在此,也可以是,所述检测单元,通过对指令码中的多位的指令位字 段进行解码,从而检测第一指令以及第二指令,将从所述第一指令直到所 述第二指令之前的各个指令作为所述特定指令来检测。在此,也可以是, 所述运算处理装置,还具有处理器状态寄存器,该处理器状态寄存器保持 状态信号,该状态信号示出正在处于停止发行所述后续指令的状态。根据 该结构,由于通过对多位的指令位字段进行解码,来进行所述指令同步执 行的有效检测和无效检测,因此具有管理能够实时执行的状态的单元。
在此,也可以是,所述保持单元,通过中断处理的发生来将所保持的 状态信号变为无效。根据该结构,由于具有通过对多位的指令位字段进行 解码,来进行所述指令同步执行的有效检测和无效检测、并在受理中断的 情况下也进行无效检测的单元,因此具有管理能够实时执行的状态而在通过中断处理等经过充分的时间的情况下解除此状态的单元。
在此,也可以是,所述指令发行停止单元,具有周期数记忆单元,记 忆示出所述规定的周期期间的周期数,并以所记忆的周期数来停止发行所 述后续指令。根据该结构,由于具有预定的周期数的停止单元,因此可以 设想能够实时执行的粒度。并且,由于具有以软件所设定的周期数来停止 的单元,因此可以变更能够实时执行的粒度。
在此,也可以是,所述周期数记忆单元,记忆与所述运算处理装置的 工作频率相对应的周期数。根据该结构,由于具有按照预定的处理器的工 作频率的周期数的停止单元,因此可以设想与工作频率无关地能够实时执 行的粒度。
在此,也可以是,所述周期数记忆单元,记忆与所述运算处理装置可 以工作的多个工作频率相对应的多个周期数。根据该结构,由于具有按照 处理器的工作频率的设定以预软件所设定的周期数来停止的单元,因此可 以与工作频率无关地变更能够实时执行的粒度。
在此,也可以是,所述指令发行单元,具有工作模式检测单元,检测 工作模式是否是使所述特定指令所属的线程优先于其它线程的工作模式, 所述指令发行停止单元,按照检测出的工作模式,只在所述规定的周期期
间停止发行所述后续指令。根据该结构,由于具有按照SMT执行中的性能 保障的设定的周期数的停止单元,因此可以设想与性能保障模式无关地能 够实时执行的粒度。
在此,也可以是,所述指令发行单元,具有工作模式检测单元以及周 期数记忆单元,所述工作模式检测单元,检测工作模式是否是使所述特定 指令所属的线程优先于其它线程的工作模式,所述周期数记忆单元,按每 个工作模式记忆示出所述规定的周期期间的周期数,所述指令发行停止单 元,只在按照检测出的工作模式的周期数的期间停止发行所述后续指令。 根据该结构,由于具有按照SMT执行中的性能保障的设定以预软件所设定 的周期数来停止的单元,因此可以与性能保障模式无关地变更能够实时执 行的粒度。
在此,也可以是,所述指令发行单元,具有指令数记忆单元,记忆在 所述第一指令到所述第二指令之间可以发行的指令数,在每次发行时进行倒计数。
在此,也可以是,所述运算处理装置,还具有处理器状态寄存器,该 处理器状态寄存器保持所述保持单元所保持的状态信号的值,所述指令发 行停止单元,具有指令数记忆单元,在所述保持单元保持示出正在处于停 止发行所述后续指令的状态的状态信号的情况下,记忆在所述第一指令到 所述第二指令之间可以发行的指令数,在每次发行时进行倒计数。根据该
结构,权利要求13、 14所述的运算处理装置,由于可以设定在指令同步 执行模式中可以发行的指令数,因此,即使不生成用于填充不必要的指令 槽的伪指令也可以控制指令发行数。
并且,本发明的程序转换装置,将第一程序转换为第二程序,其特点
是,具有抽出单元,从第一程序中抽出指示语句,该指示语句指示程序
转换装置设定特定指令;检测单元,根据第一程序中的所述指示语句,检
测第一指令和第二指令,该第一指令向外部装置请求处理,所述第二指令
从该外部装置读出应答;以及生成单元,通过在从所述第一指令到第二指 令为止的期间设定特定指令,从而生成第二程序,所述特定指令,指示将 后续于所述特定指令的指令从包含所述特定指令的指令组中除外,并且, 指示只在刚发行所述特定指令后的规定的周期期间停止发行后续的指令。 根据该结构,例如向以C语言描述的程序中插入指示语句(编译指示等), 从而可以将指令同步执行模式中的本线程的能够先行处理的程序插入。
并且,本发明的处理器,同时发行并执行构成由能够同时执行的指令 组成的指令组的指令,所述处理器,执行包含特定指令的程序,所述特定 指令,指示将后续于所述特定指令的指令从包含所述特定指令的指令组中 除外,并且,指示只在刚发行所述特定指令后的规定的周期期间停止发行 后续的指令。
在此,也可以是,所述处理器是多线程处理器,读取多个线程,按每 个线程将线程中的指令串分割为指令组。
本发明具有的效果是,在多线程处理器结构的运算处理装置中,与各 个线程的指令执行状态无关,可以以按照多线程执行性能分配的形式来保 障本线程的指令执行时间的最短执行时间。


图1是示出实施例1涉及的运算处理装置的结构的功能框图。
图2是示出指令码的位结构例的图。
图3是图1的指令同步执行检测部的内部结构中的、对应于一个线程 的结构框图。
图4是示出图l所述的寄存器组的内部结构的图。
图5是对应于一个线程的指令发行停止部的结构框图。
图6是示出用于对比说明的以往技术的线程A的程序例(程序A-l)的图。
图7是示出本实施例的线程A的程序例(程序A-2)的图。
图8是示出与线程A—起执行的程序例(程序B-l)的图。
图9是示出与线程A —起执行的程序例(程序C-l)的图。
图10是说明以SMT执行程序A-1、 B-l、 C-l的情况的工作的图。
图11是说明以SMT执行程序A-2、 B-l、 C-l的情况的工作的图。
图12是处理器的变形例的结构框图。
图13是示出指令码的位结构例的图。
图14是实施例2的指令同步执行检测部的内部结构中的、对应于一
个线程的结构框图。
图15是示出线程A的程序例(程序A-3)的图。
图16是示出实施例3的线程A的程序例(程序A-4)的图。
图17是实施例4的指令同步执行检测部的内部结构中的、对应于一
个线程的结构框图。
图18是示出本实施例的线程A的程序例瑕序A-5)的图。
图19是实施例5的指令同步执行检测部的内部结构中的、对应于一
个线程的结构框图。
图20是实施例6的对应于一个线程的指令发行停止部的结构框图。 图21是实施例7的对应于一个线程的指令发行停止部的结构框图。 图22是实施例8的对应于一个线程的指令发行停止部的结构框图。 图23是实施例9的指令同步执行检测部的内部结构中的、对应于一
个线程的结构框图。
ii图24是指令同步执行检测部的内部结构中的、对应于一个线程的结构 框图。
图25是示出线程A的程序例(程序A-6)的图。 图26是实施例10的程序转换装置的结构框图。 图27是示出线程A的源程序例(程序D-l)的图。
糾翻
100处理器
112指令发行部
121指令同步执行检测部
122指令发行停止部
731有效参考表
732无效参考表
910处理器状态寄存器
1060同步控制部
1181停止期间记忆部
1283工作频率检测部
1385性能保证工作模式检测部
1485指令同步执行指令发行数记忆部
具体实施例方式
以下,参照

本发明的实施例。 (实施例1)
本实施例的运算处理装置是一种处理器,同时发行并执行构成由能够 同时执行的指令组成的指令组的指令,该处理器执行的程序包含特定指令。 在此,特定指令是一种指令,指示将后续于所述特定指令的指令从包含所 述特定指令的指令组中除外,并且,指示只在刚发行所述特定指令后的规 定的周期期间停止发行后续的指令。
以下,利用图1 图12说明处理器是多线程处理器的情况,该多线程 处理器读取多个线程而按每个线程将线程中的指令串分割为指令组。以本 实施例的多线程处理器为一个例子,假设能够同时执行三个线程、按每个线程能够最多发行三个指令、能够同时发行的指令组是二个线程的指令组、 能够同吋最多发行四个指令而进行说明。
图1是示出本实施例涉及的运算处理装置的结构的功能框图。该图中,
作为运算处理装置的处理器100包括指令传递部110、运算执行部130、 指令存储器140、数据存储器150、寄存器组160,指令传递部110通过 总线171与指令存储器140连接、通过总线175与运算执行部130连接。 运算执行部130通过总线175与指令传递部110连接、通过总线172与 数据存储器150连接、通过总线173与寄存器组160连接。
指令传递部110包括指令读取部lll,从指令存储器140读取描述 为程序的指令、或记载在通过硬件控制被中断的处理来决定的地址的指令 码;指令发行部112,对通过指令读取部lll获得的按每个线程被分割的 指令码进行运算执行部130的流水线冲突检测、线程间的运算资源竞争检 测和线程间的指令发行调解后,向运算执行部130发行一个以上的指令码。
指令发行部112具有指令同步执行检测部121,检测是否为使指令 执行周期同步并执行的指令;指令发行停止部122,按照指令同步执行检 测部121的输出可以生成用于停止发行指令的信号中的一个。而且,通过 指令同步执行检测部121获得的检测信息,也用作线程内的指令发行组分 割的条件(后述的指令缓冲器的指令码有效位)。
运算执行部130包括指令解码部131,从指令传递部IIO输入以同 一周期可以执行多个线程的指令的指令组,并制作运算执行部130的控制 信号和运算所需要的数据;数据访问部132,根据指令解码部131所制作 的控制信号和数据进行数据访问;运算处理部133,根据指令解码部131 所制作的控制信号和数据访问部132所制作的数据执行运算。再者,数据 访问部132与数据存储器150以及寄存器组160连接,该寄存器组160 包括处理器所需要的各种寄存器。而且,在本实施例中假设,处理器具有 能够使三个线程工作的SMT结构。因此,假设,处理器按三个线程的每个 线程具有内部资源。
图2是示出指令码的位结构例的图。在本实施例中,以32位固定的 指令位图为例子进行说明,并示出为在位31的S为1时进行指令同步执 行的特定指令。在此,特定指令是一种指令,指示将后续于所述特定指令的指令从包含所述特定指令的指令组中排除,并且,指示只在刚发行所述 特定指令后的规定的周期期间停止发行后续的指令。如该图,由于依据位
31决定是否为特定指令,因此,在本实施例中所有的指令会成为特定指令。 而且,对于位的赋值方法,不仅限于此。
图3是图1的指令同步执行检测部121的内部结构中的、对应于一个 线程的结构框图。在同时执行三个线程的多线程处理器的情况下,图1的 指令同步执行检测部121具备三组该图的结构。
指令发行部112具有将按每个线程成为发行对象的最多指令数的指令 存储的指令缓冲器550,按程序计数器的顺序存储有第一指令码551、第 二指令码552、第三指令码553、以及第一有效位554、第二有效位555、 第三有效位556,这些有效位示出是否存储有有效于各个指令码的缓冲器 的指令。
输入这些信息,指令同步执行检测部500包括"与"门511,输入 第一指令码551的位31和第一有效位554;"与"门512,输入第二指令 码552的位31和第二有效位555;"与"门513,输入第三指令码553 的位31和第三有效位556;以及"或"门514,从"与"门511、"与" 门512、"与"门513输入。指令同步执行检测部500,依据第一 第三 指令码中的各1位的指令位字段,检测需要指令同步执行的所述的特定指 令。作为"或"门514的输出的指令同步执行检测信号590被生成,该指 令同步执行检测信号590示出包含需要指令同步执行的指令。
再者,为了通过指令同步执行检测信号590示出究竟能否发行指令缓 冲器所存储的指令而生成将第一有效位554原封不动输出的第一指令码 有效位591;从"与"门581输出的第二指令码有效位592,该"与"门 581输入第二有效位555和被反转的"与"门511的输出;从"与"门 582输出的第三指令码有效位593,该"与"门582输入第三有效位556、 "与"门581的输出和被反转的"与"门512的输出。所述的"与"门 511 513、 581以及582,在检测出特定指令的情况下,将后续于特定 指令的指令从包含特定指令的指令组中除外。即,在该情况下,对应于后 续的指令的有效位,作为第二指令码有效位592、第三指令码有效位593 被无效化。据此,依据指令同步执行检测部500输出的指令同步执行检测信号 590,来示出指令组中包含进行同步执行的特定指令,依据第一指令码有 效位591、第二指令码有效位592、第三指令码有效位593,后续于所述 特定指令的指令从线程内的包含特定指令的指令组中被除外。
而且,图3的指令同步执行检测部500中只示出一个线程内的控制信 号。在本实施例中,由于设想能够同时执行三个线程的处理器,因此这些 资源对每个线程都需要。但是,从以SMT能够执行的处理器的结构的观点 来看,当然具有该结构,因此以后省略说明。
图4是示出作为图1所述的寄存器组160的一个例子的寄存器组900 的内部结构的图。寄存器组900包括通用寄存器912 915;存储处理 器状态的处理器状态寄存器910;操作数数据锁存器921 924,寄存器 组900还包括存储运算结果的标记的标记寄存器;处理器所需要的控制 寄存器。而且,因此这些资源对每个线程都需要。但是,从以SMT能够执 行的处理器的结构的观点来看,当然具有该结构,因此以后省略说明。
图5是示出图1所述的指令发行停止部122的内部结构中的、对应于 一个线程的指令发行停止部1000的结构的框图。指令发行停止部1000 输入通过指令同步执行检测部500所输出的指令同步执行检测信号590来 获得的指令发行停止请求信号1010、和通过指令发行部112以及运算执 行部130获得的关于流水线冲突的流水线冲突状态信号1030。
指令发行停止部1000包括触发器(mp-flop)1020,输入指令发行 停止请求信号1010、和使用于指令传递部110的时钟信号1021;作为状 态机(state machine)的同步控制部1060,输入触发器1020的输出,且 生成示出发行停止期间的信号;作为状态机的冲突检测部1031,输入流水 线冲突状态信号1030,且生成示出发行停止期间的信号,指令发行停止部 1000还包括"或"门1040,输入同步控制部1060的输出和冲突检测 部1031的输出。同步控制部1060输出指令发行停止状态信号1050,该 指令发行停止状态信号1050指示只在刚发行所述特定指令后的规定的周 期期间停止发行后续于特定指令的指令。规定的周期期间也可以预先固定 为二个周期、三个周期等。
据此,"或"门1040的输出的指令发行停止状态信号1050,被生成为指令发行停止部1000的输出信号,依据指令发行停止状态信号1050 可以生成示出在下一个周期不能发行本线程的信号。
而且,图5的指令发行停止部1000中只示出一个线程内的控制信号。 在本实施例中,由于设想能够同时执行三个线程的处理器,因此这些资源 对每个线程都需要。但是,从以SMT能够执行的处理器的结构的观点来看, 当然具有该结构,因此以后省略说明。
而且,在本实施例1中示出了指令传递部和运算执行部的内部结构, 然而,对于这些处理的顺序,按照流水线的结构可以更换,因此不仅限于 此。
根据所述内容可以提供一种运算处理装置,该运算处理装置,通过具 有指令发行部112,从而以SMT能够执行的处理器,与其它线程的执行状 态无关而以细粒度来能够调整适合本线程的程序的执行时间的最短时间, 该指令发行部112,对示出进行指令同步执行之事宜的指令码进行预解码, 按每个线程根据流水线冲突状态信号1030和指令发行停止请求信号1010 的逻辑和来进行指令发行控制,所述流水线冲突状态信号1030是普通的 处理器所需要的,所述指令发行停止请求信号1010是与流水线冲突无关 而生成的。
以下,对于本实施例中说明的程序和其工作例,参照图6 图9示出 的程序例和图10、图11示出的各个线程的指令执行状态进行说明。
图6示出的程序A-l是线程A的程序例,用于说明不利用本实施例的 以往的技术的问题和实施例1的效果。图7示出的程序A-2是利用本实施 例的情况下的线程A的程序例。
图6示出的程序A-l中记载有指令发行部112所发行的线程A的指 令发行可能的指令组。在Step列,按照发行顺序将各个执行步骤记载为 SA1、 SA2、",、 SA15。对于在各个线程的同一周期可以发行的指令,装 入、保存指令只能够发行一个指令,算术逻辑运算以及传输指令能够发行 三个指令。SA1的指令是,Instructionl、 Instrucion2和Instruction3 的三个指令中可以发行的setlo指令以及sethi指令。setlo指令是,向寄 存器r0存储立即值(即値)32位(HWE—A)的低16位的指令。sethi指令是, 向寄存器r0存储立即值32位(HWE一A)的高16位的指令。为了避免SA1指令组的冲突,在SA2可以发行后续的st指令。SA2的指令是st指令以 及n叩指令,该st指令将寄存器rl的内容保存到以rO为地址的存储空 间。从SA3到SA9的指令是n叩指令。SAIO的指令是与SA1相同向寄 存器r2存储立即值32位(HWE-ST)的指令、以及nop指令。SA11的指 令是ld指令,从以rO为地址的存储空间装入,并向寄存器rl存储内容。 SA12的指令是add指令,将寄存器rl与立即值100的和存储到寄存器 rl。 SA13的指令是st指令,将寄存器rl的内容保存到以r2为地址的存 储空间。SA14以及SA15的指令是add指令,将寄存器r0与立即值1 的和存储到寄存器r0。该线程A的程序A-1是一种硬件加速器的模型,该 硬件加速器,对某硬件加速器(11\\^_八)进行写入,而经过8nSec后从该地 址装入,则可以获得特殊的运算结果。由于该程序工作的处理器的工作频 率为lGHz,因此,为了空出8nSec的时间,而从SA2到SA9为止发行 八个nop指令、在SA10发行三个指令,来以共九个nop指令来经过八 个指令发行周期、即空出共8nSec的时间,从而满足从硬件加速器装入的 时间限制。
图8示出的程序B-l中记载有指令发行部112所发行的线程B的指令 发行可能的指令组。在Step列,按照发行顺序将各个执行步骤记载为SB1、 SB2、、 SB13。对于在各个线程的同一周期可以发行的指令,装入、保 存指令只能够发行一个指令,算术逻辑运算以及传输指令能够发行三个指 令。SB1的指令是,Instructionl、 Instrucion2和Instruction3的三个 指令中可以发行的add指令以及Id指令,该add指令将寄存器r5与立即 值1的和存储到寄存器r7,该ld指令从以寄存器r2为地址的存储空间向 寄存器r3装入。SB2的指令是比较指令,在寄存器r5大于寄存器r7的 情况下向标记寄存器C6存储1; st指令,将寄存器r3的内容保存到以寄 存器r0为地址的存储空间;以及add指令,将寄存器r2与立即值120 的和存储到寄存器r0。 SB3的指令是mov指令,将寄存器r5的内容复 制到寄存器r6; st指令,将寄存器r5的内容保存到以寄存器r0为地址的 存储空间;以及br指令,在标记寄存器C6设定为1的情况下向L028标 签分支。SB4的指令是settar指令,向存储分支目标地址的目标地址寄 存器TAR存储分支目标地址;以及mov指令,将立即值200复制到寄存
17器rO。 SB5的指令是add指令,将寄存器r5与寄存器r0的和存储到寄存 器r4。 SB6的指令是s2add指令,将寄存器r4的内容向左移动2位、并 将与寄存器。的和存储到寄存器r4。 SB7的指令是add指令,将寄存器 r6与即值1的和存储到寄存器r6。 SB8的指令是比较指令,在寄存器r6 与寄存器r7相比小或相同的情况下,向标记寄存器C6存储1。 SB9的指 令是算后增量(post-increment)st指令,将寄存器r5的内容保存到以寄 存器r4为地址的存储空间并向地址r4加上4;以及jmpf指令,在标记 寄存器C6设定为1的情况下,向存储分支目标地址的目标地址寄存器TAR 所存储的分支目标地址转移。SB10的指令是mov指令,将立即值200复 制到寄存器r4。从SB11到SB13的指令是add指令,将寄存器r4与立 即值l的和存储到寄存器r4。
图9示出的程序C-l中记载有指令发行部112所发行的线程C的指 令发行可能的指令组。在Step歹U,按照发行顺序将各个执行步骤记载为 SC1、 SC2、"v SC14。对于在各个线程的同一周期可以发行的指令,装 入、保存指令只能够发行一个指令,算术逻辑运算以及传输指令能够发行 三个指令。SC1的指令是,Instructionl、 Instrucion2和Instruction3 的三个指令中可以发行的setlo指令以及sethi指令。setlo指令是,向寄 存器r0存储立即值32位(HWE—A)的低16位的指令。sethi指令是,向寄 存器r0存储立即值32位(HWE—A)的高16位的指令。SC2的指令是算 后增量ldp指令,从以寄存器r0为地址的存储空间装入8位来存储到寄存 器r2、寄存器r3,并向寄存器r0加上8;以及add指令,将寄存器rl 与立即值1000的和存储到寄存器rl。SC3的指令是算后增量ldp指令, 从以寄存器r0为地址的存储空间装入8位来存储到寄存器r4、寄存器r5, 并向寄存器r0加上8; add指令,将寄存器r2与寄存器r3的和存储到寄 存器r6;以及sub指令,将寄存器r2与寄存器r3的差存储到寄存器r7。 SC4的指令是算后增量ldp指令,从以寄存器rO为地址的存储空间装入 8位来存储到寄存器r2、寄存器r3,并向寄存器r0加上8; add指令, 将寄存器r4与寄存器r5的和存储到寄存器r8;以及sub指令,将寄存器 r4与寄存器r5的差存储到寄存器r9。SC5的指令是算后增量ldp指令, 从以寄存器r0为地址的存储空间装入8位来存储到寄存器r4、寄存器r5,并向寄存器r0加上8; add指令,将寄存器r2与寄存器r3的和存储到寄 存器rl0;以及sub指令,将寄存器r2与寄存器r3的差存储到寄存器rl 1 。 SC6的指令是算后增量stp指令,将寄存器r6和寄存器r7的内容,向 以寄存器rl为地址的存储空间保存8位,并向寄存器rl加上8; add指 令,将寄存器r4与寄存器r5的和存储到寄存器rl2;以及sub指令,将 寄存器r4与寄存器r5的差存储到寄存器rl3。SC7的指令是算后增量stp 指令,将寄存器r8和寄存器r9的内容,向以寄存器rl为地址的存储空间 保存8位,并向寄存器rl加上8。 SC8的指令是算后增量stp指令,将寄 存器rlO和寄存器rll的内容,向以寄存器rl为地址的存储空间保存8 位,并向寄存器rl加上8。 SC9的指令是算后增量stp指令,将寄存器r12 和寄存器r13的内容,向以寄存器rl为地址的存储空间保存8位,并向 寄存器rl加上8。从SC10到SC14的指令是add指令,将寄存器rl与 立即值1的和存储到寄存器rl。
以上,说明了用于说明本实施例的工作的各个线程的程序的内容。在 此,利用图IO说明以SMT能够执行的、图1所述的处理器的工作。而且, 为了简化本说明,指令发行部112支持根据以下规则的SMT执行。假设, 各个线程能够最多发行三个指令,按照优先级可以同时执行的线程是仅二 个线程。再者假设,在同时执行各个线程的指令的情况下,以不变更每个 线程的指令组为前提,只在能够发行四个指令的情况下,以SMT能够执行。 但是,在同一周期中,不能发行多个装入指令、多个保存指令,并且,能 够同时发行保存指令和装入指令。再者,为了简化这次说明,以分支指令、 各种运算或装入的吞吐量为1周期来进行说明。
图10是在以SMT执行图6的程序A-1、图8的程序B-1、图9的程 序C-1的情况下的工作的说明图。在Step歹ij,按照发行顺序将各个执行步 骤记载为T1、T2、…、T20。假设,能够执行的线程的优先级,根据Priority 列的规则被指令发行调解。在Tl,以A>C>B的优先级进行指令发行控制, SA1的二个指令和SC1的二个指令被发行。在T2,以C>B>A的优先级 进行指令发行控制,SC2的二个指令和SA2的二个指令被发行。这是因为, 由于SB1包含装入指令,且不能同时发行装入指令,因此,线程B的指令 组不被发行,而线程A的指令组被发行。在T3,以B〉AX:的优先级进行指令发行控制,SB1的二个指令和SA3的一个指令被发行。在T4,以 A>C>B的优先级进行指令发行控制,SA4的一个指令和SC3的三个指令 被发行。在T5,以C>B>A的优先级进行指令发行控制,SC4的三个指令 和SA5的一个指令被发行。在T6,以B>A>C的优先级进行指令发行控制, SB2的三个指令和SA6的一个指令被发行。在T7,以A>C>B的优先级进 行指令发行控制,SA7的一个指令和SC5的三个指令被发行。在T8,以 C>B>A的优先级进行指令发行控制,SC6的三个指令和SA8的一个指令 被发行。在T9,以B〉AX:的优先级进行指令发行控制,SB3的三个指令 和SA9的一个指令被发行。在TIO,以A>C>B的优先级进行指令发行控 制,SA10的三个指令和SC7的一个指令被发行。在Tll,以C>B>A的 优先级进行指令发行控制,SC8的一个指令和SB4的二个指令被发行。在 T12,以B〉AX:的优先级进行指令发行控制,SB5的一个指令和SAll的 —个指令被发行。在T13,以^OB的优先级进行指令发行控制,SA12 的一个指令和SC9的一个指令被发行。在T14,以C>B>A的优先级进行 指令发行控制,SC10的一个指令和SB6的一个指令被发行。在T15,以 B>A>C的优先级进行指令发行控制,SB7的一个指令和SA13的一个指令 被发行。在T16,以^OB的优先级进行指令发行控制,SA14的一个指 令和SC11的一个指令被发行。在T17,以C>B>A的优先级进行指令发 行控制,SC12的一个指令和SB8的一个指令被发行。在T18,以B〉^C 的优先级进行指令发行控制,SB9的二个指令和SA15的一个指令被发行。 在T19,以A>C>B的优先级进行指令发行控制,SA16的一个指令和SC13 的一个指令被发行。在T20,以C>B>A的优先级进行指令发行控制,SC14 的一个指令和SB10的一个指令被发行。
以上,示出了利用本实施例的以往的例子。其次,利用图7的程序A-2 说明利用本实施例的情况下的SMT工作。
图7示出的程序A-2中记载有指令发行部112所发行的线程A的指 令发行可能的指令组。在Step列,按照发行顺序将各个执行步骤记载为 SA'1、 SA'2、"*、 SA'15。对于在各个线程的同一周期可以发行的指令, 装入、保存指令只能够发行一个指令,算术逻辑运算以及传输指令能够发 行三个指令。SA'1的指令是,Instructionl、 Instrucion2和Instruction3的三个指令中可以发行的setlo指令以及sethi指令。setlo指令是,向寄 存器rO存储立即值32位(HWE—A)的低16位的指令。sethi指令是,向寄 存器rO存储立即值32位(HWE—A)的高16位的指令。为了避免SA'1指 令组的冲突,在SA'2可以发行后续的st指令。SA'2的指令是sync_st指 令,可以同步执行st指令,该st指令将寄存器rl的内容保存到以rO为 地址的存储空间。这是,在图2中记载的指令位图的位31的S位为1的 状态下的st指令。SA'3的指令是sync_setlo指令,可以同步执行setlo 指令,该setlo指令将立即值32位(HWE—ST)的低16位存储到寄存器r2。 SA'4的指令是sync_sethi指令,可以同步执行sethi指令,该sethi将立 即值32位(HW^ST)的高16位指令存储到寄存器r2。 SA'5的指令是ld 指令,从以寄存器rO为地址的存储空间装入来存储到寄存器rl。 SA'6的 指令是add指令,将寄存器rl与立即值100的和存储到寄存器rl。 SA'7 的指令是st指令,将寄存器rl的内容保存到以r2为地址的存储空间。从 SA'8到SA'14的指令是add指令,将寄存器r0与立即值1的和存储到寄 存器r0。该线程A的程序A-2(图7)是一种硬件加速器的模型,该硬件加 速器,对某硬件加速器(HWE一A)进行写入,而经过8nSec后从该地址装入, 则可以获得特殊的运算结果。由于该程序工作的处理器的工作频率为 lGHz,因此,为了空出8nSec的时间,以检测指令同步执行的指令后具 有二个周期的指令发行停止期间为特点,通过从SA'2到SA'4为止的三个 指令同步执行来空出共8nSec的时间,从而满足从硬件加速器装入的时间 限制。在此示出,图5中记载的指令发行停止部1000的触发器1020所 锁存的指令发行停止请求信号1010被输入到作为状态机的同步控制部 1060,与流水线冲突状态信号1030无关,在二个周期的期间输出指令发 行停止状态信号1050。
图ll是在以SMT执行图7的程序A-2、图8的程序B-1、图9的程 序C-1的情况下的工作的说明图。在Step歹iJ,按照发行顺序将各个执行步 骤记载为T1、T2、 "'、T20。假设,能够执行的线程的优先级,根据Priority 列的规则被指令发行调解。在Tl,以A>C>B的优先级进行指令发行控制, SA'1的二个指令和SC1的二个指令被发行。在T2,以C>B>A的优先级 进行指令发行控制,SC2的二个指令和SA'2的二个指令被发行。这是因为,由于SB1包含装入指令,且不能同时发行装入指令,因此,线程B的指令 组不被发行,而线程A的指令组被发行。在T3,以B〉A〉C的优先级进行 指令发行控制,SB1的二个指令和SA'3的一个指令被发行。在T4,以 A>C>B的优先级进行指令发行控制,然而,根据指令同步执行控制SA'的 指令被禁止发行二个周期,因此,SA'4的指令不被发行,而SC3的三个指 令被发行。在T5,以C>B>A的优先级进行指令发行控制,然而,与T4 相同SA'4的指令不被发行,因此,只SC4的三个指令被发行。在T6,以 B>A>C的优先级进行指令发行控制,SB2的三个指令和SA'4的一个指令 被发行。在T7,以^OB的优先级进行指令发行控制,然而,根据指令 同步执行控制SA'5的指令不被发行,而只SC5的三个指令被发行。在T8, 以C>B>A的优先级进行指令发行控制,然而,与T7相同SA'5的指令不 被发行,因此,只SC6的三个指令被发行。在T9,以B〉^C的优先级进 行指令发行控制,SB3的三个指令和SA'5的一个指令被发行。在TIO, 以A>C>B的优先级进行指令发行控制,然而,根据指令同步执行控制SA'6 的指令不被发行,而SC7的一个指令和SB4的二个指令被发行。在Tll, 以C>B>A的优先级进行指令发行控制,SC8的一个指令和SB5的一个指 令被发行。在T12,以B>A>C的优先级进行指令发行控制,SB6的一个 指令和SA'6的一个指令被发行。在T13,以A>C>B的优先级进行指令发 行控制,SA'7的三个指令和SC9的一个指令被发行。在T14,以OB〉A 的优先级进行指令发行控制,SC10的一个指令和SB7的一个指令被发行。 在T15,以B>A>C的优先级进行指令发行控制,SB8的一个指令和SA'8 的一个指令被发行。在T16,以A〉OB的优先级进行指令发行控制,SA'9 的一个指令和SC11的一个指令被发行。在T17,以C>B>A的优先级进 行指令发行控制,SC12的一个指令和SB9的二个指令被发行。在T18, 以B>A>C的优先级进行指令发行控制,SB10的一个指令和SA'IO的一个 指令被发行。在T19,以A>C>B的优先级进行指令发行控制,SA'll的 三个指令和SC13的一个指令被发行。在T20,以C>B>A的优先级进行 指令发行控制,SC14的一个指令和SB11的一个指令被发行。即,与图 IO的工作说明相比,在具有满足线程A的程序工作条件的结构的同时,可 以使其它线程的有效性能提高(例如,线程B的指令发行数增加了)。
22根据所述说明,通过利用指令发行部112和指令发行停止部122,在 多线程结构的运算器中,与各个线程的指令执行状态无关,可以确保本线 程的指令执行时间的最短时间,据此,还可以抑制本线程的指令发行,从 而对于其它线程可以提高多线程执行性能。并且,在本实施例,由于以1 位的指令位字段来进行指令同步执行检测,因此,可以对全部指令进行实 时执行。
而且,图12示出图1的处理器的变形例。图12的处理器,与图1的 处理器不同,取代指令发行停止部122而具备指令发行停止部241。其它 的结构,大致相同。如图12,可以构成为不使指令发行停止,而使指令执 行停止。
(实施例2)
然而,在为了进行指令同步执行检测而使用指令码的1位来实现这些 功能的情况下,可以认为从有效利用有限的指令位图的观点来看产生问题。 于是,禾!」用图13、图14以及图15说明,作为与实施例1相比不占有浪 费的指令位图的方法的第二指令同步执行检测部。
图13是示出实施例2的特定指令的指令码的图。在本实施例中,原 则上以32位固定的指令位图为例子说明指令码,示出在从位31到位24 的OP(Operation Code)是特定的位模式时成为进行指令同步执行的特定 指令。该特定指令,不是作为如实施例1那样与其它指令兼用的指令、而 是作为专用的指令来被分配位模式。而且,对于位图的分配方法,不仅限 于此。
图14是指令同步执行检测部的内部结构中的、对应于一个线程的结构 框图。指令发行部112具有将按每个线程成为发行对象的最多指令数的指 令(在本实施例中假设按每个线程能够发行三个指令、能够同时发行的指令 组是二个线程的指令组、能够同时发行四个指令而进行说明)存储的指令缓 冲器650,按程序计数器的顺序存储有第一指令码651、第二指令码652、 第三指令码653、以及第一有效位654、第二有效位655、第三有效位656, 这些有效位示出是否存储有有效于各个指令码的缓冲器的指令。
输入这些信息,指令同步执行检测部600包括"与"门611,输入 第一指令码651的从位31到位24的输出、参考表631的比较器621的输出和第一有效位654;"与"门612,输入第二指令码652的从位31 到位24的输出、参考表631的比较器622的输出和第二有效位655;"与" 门613,输入第三指令码653的从位31到位24的输出、参考表631的 比较器623的输出和第三有效位656;以及"或"门614,从"与"门 611、"与"门612、"与"门613输入;作为"或"门614的输出的指令 同步执行检测信号690被生成,该指令同步执行检测信号690示出包含需 要指令同步执行的指令。
参考表631保持特定指令的指令码(位模式)。比较器621 623,分 别通过对指令码中的多位的指令位字段进行预解码,从而检测特定指令。
再者,为了通过指令同步执行检测信号690示出究竟能否发行指令缓 冲器所存储的指令而生成将第一有效位654原封不动输出的第一指令码 有效位691;从"与"门681输出的第二指令码有效位692,该"与"门 681输入第二有效位655和被反转的"与"门611的输出;从"与"门 682输出的第三指令码有效位693,该"与"门682输入第三有效位656、 "与"门681的输出和被反转的"与"门612的输出。据此,通过指令同 步执行检测部600输出的指令同步执行检测信号690,示出指令组中包含 进行同步执行的指令,通过第一指令码有效位691、第二指令码有效位692 以及第三指令码有效位693、可以识别线程内的可以发行指令的指令码。 而且,图14的指令同步执行检测部600只示出一个线程内的控制信号。 在本实施例中,由于设想能够同时执行三个线程的处理器,因此这些资源 对每个线程都需要。但是,从以SMT能够执行的处理器的结构的观点来看, 当然具有该结构,因此以后省略说明。
如上所述,作为不占有浪费的指令位图而具有第二指令同步执行检测 部,在不占有指令位图的状况下,可以提供一种运算处理装置,该运算处 理装置,通过实施例1所述的以SMT能够执行的处理器,与其它线程的执 行状态无关,能够以细粒度调整符合本线程的程序的执行时间的最短时间。
以下,作为本实施例中说明的程序,说明在指令位图只增加sync指令 的、图15示出的程序A-3。
图15示出的程序A-3中记载有指令发行部112所发行的线程A的指 令发行可能的指令组。在Step歹i」,按照发行顺序将各个执行步骤记载为SA'1、 SA'2、",、 SA'15。对于在各个线程的同一周期可以发行的指令, 装入、保存指令只能够发行一个指令,算术逻辑运算以及传输指令能够发 行三个指令。SA'1的指令是,Instructionl、Instrucion2和Instruction3 的三个指令中可以发行的setlo指令以及sethi指令。setlo指令是,向寄 存器r0存储立即值32位(HWE—A)的低16位的指令。sethi指令是,向寄 存器r0存储立即值32位(HWE—A)的高16位的指令。为了避免SA'1指 令组的冲突,在SA'2可以发行后续的st指令。SA'2的指令是st指令和 sync指令,该st指令将寄存器rl的内容保存到以r0为地址的存储空间, 该sync指令能够进行指令同步执行。SA'3的指令是setlo指令和sync指 令,该setlo指令是向寄存器r2存储立即值32位(HWE—ST)的低16位的 指令。SA'4的指令是sethi指令和sync指令,该sethi指令是向寄存器 r2存储立即值32位(HWE—ST)的高16位的指令。SA'5的指令是ld指令, 从以寄存器rO为地址的存储空间装入来存储到寄存器rl。 SA'6的指令是 add指令,将寄存器rl与立即值100的和存储到寄存器rl。 SA'7的指令 是st指令,将寄存器rl的内容保存到以r2为地址的存储空间。从SA'8 到SA'14的指令是add指令,将寄存器r0与立即值1的和存储到寄存器 r0。该线程A的程序A-3(图15)是一种硬件加速器的模型,该硬件加速器, 对某硬件加速器(HWE—A)进行写入,而经过8nSec后从该地址装入,则可 以获得特殊的运算结果。由于该程序工作的处理器的工作频率为lGHz, 因此,为了空出8nSec的时间,以检测指令同步执行的指令后具有二个周 期的指令发行停止期间为特点,通过从SA'2到SA'4为止的三个指令同步 执行来空出共8nSec的时间,从而满足从硬件加速器装入的时间限制。在 此示出,图5中记载的指令发行停止部1000的触发器1020所锁存的指 令发行停止请求信号1010被输入到作为状态机的同步控制部1060,与流 水线冲突状态信号1030无关,在二个周期的期间输出指令发行停止状态 信号1050。
根据所述说明,通过利用本实施例涉及的指令同步执行检测部600和 指令发行停止部122,在多线程结构的运算器中,与各个线程的指令执行 状态无关,可以确保本线程的指令执行时间的最短时间,据此,还可以抑 制本线程的指令发行,从而对于其它线程可以提高多线程执行性能。并且,
25在本实施例,由于通过对多位的指令位字段进行解码,来进行指令同步执 行检测,因此,可以只对某种特定的指令进行实时执行。
(实施例3)
然而,为了进行指令同步执行检测,若增加对指令位字段进行解码而 进行指令同步执行检测的专用的sync指令,则不仅需要变更指令规格,还 需要变更软件开发环境,因此影响大。据此,利用图16示出的程序A-4 说明,与实施例2相比,不生成新的指令,而以将功能几乎相等的nop指 令扩展的方法来可以实现的指令同步执行检测部。
图16示出的程序A-4中记载有指令发行部112所发行的线程A的指 令发行可能的指令组。在Step歹U,按照发行顺序将各个执行步骤记载为 SA'1、 SA'2、、 SA'15。对于在各个线程的同一周期可以发行的指令, 装入、保存指令只能够发行一个指令,算术逻辑运算以及传输指令能够发 -斤三个指令。SA'1的指令是,Instructionl、Instrucion2和Instruction3 的三个指令中可以发行的setlo指令以及sethi指令。setlo指令是,向寄 存器r0存储立即值32位(HWE—A)的低16位的指令。sethi指令是,向寄 存器r0存储立即值32位(HWE—A)的高16位的指令。为了避免SA'1指 令组的冲突,在SA'2可以发行后续的st指令。SA'2的指令是st指令和 nop指令,该st指令将寄存器rl的内容保存到以r0为地址的存储空间, 该nop指令能够进行指令同步执行。SA'3的指令是setlo指令和n叩指 令,该setlo指令是向寄存器r2存储立即值32位(HWE—ST)的低16位的 指令,该n叩指令能够进行指令同步执行。SA'4的指令是sethi指令和 nop指令,该sethi指令是向寄存器r2存储立即值32位(HW^ST)的高 16位的指令,该nop指令能够进行指令同步执行。SA'5的指令是ld指令, 从以寄存器rO为地址的存储空间装入来存储到寄存器rl。 SA'6的指令是 add指令,将寄存器rl与立即值100与和存储到寄存器rl。 SA'7的指令 是st指令,将寄存器rl的内容保存到以r2为地址的存储空间。从SA'8 到SA'14的指令是add指令,将寄存器r0与立即值1的和存储到寄存器 r0。该线程A的程序A-4(图16)是一种硬件加速器的模型,该硬件加速器, 对某硬件加速器(HWE-A)进行写入,而经过8nSec后从该地址装入,贝何 以获得特殊的运算结果。由于该程序工作的处理器的工作频率为lGHz,因此,为了空出8nSec的时间,以检测指令同步执行的指令后具有二个周 期的指令发行停止期间为特点,通过从SA'2到SA'4为止的三个指令同步 执行来空出共8nSec的时间,从而满足从硬件加速器装入的时间限制。在 此示出,图5中记载的指令发行停止部1000的触发器1020所锁存的指 令发行停止请求信号1010被输入到作为状态机的同步控制部1060,与流 水线冲突状态信号1030无关,在二个周期的期间输出指令发行停止状态 信号1050。据此,不进行指令规格变更,也可以获得与程序A-3(图15) 相同的效果。 (实施例4)
然而,即使取代sync指令而使用n叩指令,也在线程A的各个St印 需要发行二个指令。因此,有可能不能发行其它线程的能够发行三个发行 的指令组。若解决该问题,则可以进一步改善性能。于是,只要在对诸如 硬件加速器之类的专用硬件设备进行装入、保存指令的期间,进行指令同 步执行检测即可,因此利用图17、图4说明第三指令同步执行检测有效部、 第三指令同步执行检测无效部和第三指令同步模式状态记忆部,这些部通 过使用成为硬件加速器专用的寄存器访问指令的wt指令以及rd指令,从 而可以提高性能。
图17是实施例4的指令同步执行检测部的内部结构中的、对应于一 个线程的结构框图。指令发行部112具有将按每个线程成为发行对象的最 多指令数的指令(在本实施例中假设按每个线程能够发行三个指令、能够同 时发行的指令组是二个线程的指令组、能够同时发行四个指令而进行说明) 存储的指令缓冲器750,按程序计数器的顺序存储有第一指令码751、第 二指令码752、第三指令码753、以及第一有效位754、第二有效位755、 第三有效位756,这些有效位示出是否存储有有效于各个指令码的缓冲器 的指令。输入这些信息,指令同步执行检测部包括"与"门711,输入 第一指令码751的从位31到位24的输出、参考表选择器733的比较器 721的输出和第一有效位754;"与"门712,输入第二指令码752的从 位31到位24的输出、参考表选择器733的比较器722的输出和第二有 效位755;"与"门713,输入第三指令码753的从位31到位24的输出、 参考表选择器733的比较器723的输出和第三有效位756;以及"或"门714,输入"与"门711、"与"门712、"与"门713、及带有复位的触 发器735的输出;作为"或"门714的输出的指令同步执行检测信号790 被生成,该指令同步执行检测信号790示出包含需要指令同步执行的指令。 并且,该输出,被输入到带有复位的触发器735的输出和"异或"门734 的输入,连接于触发器735的数据输入。据此,保持指令同步执行检测部 所检测的指令同步执行检测有效状态,进一步,根据指令同步执行检测部 所检测的指令同步执行检测无效请求,可以将该有效状态清除。再者,该 触发器的输出,还被用作有效参考表731和无效参考表732的选择器733 的选择信号。再者,为了通过指令同步执行检测信号示出究竟能否发行指 令缓冲器所存储的指令而生成将第一有效位754原封不动输出的第一指 令码有效位791;从"与"门781输出的第二指令码有效位792,该"与" 门781输入第二有效位755和被反转的"与"门711的输出;从"与" 门782输出的第三指令码有效位793,该"与"门782输入第三有效位 756、"与"门781的输出和被反转的"与"门712的输出。据此,通过 指令同步执行检测部输出的指令同步执行检测信号790,示出指令组中包 含进行同步执行的指令,通过第一指令码有效位791、第二指令码有效位 792以及第三指令码有效位793、可以识别线程内的可以发行指令的指令 码。而且,图17的指令同步执行检测部700只示出一个线程内的控制信 号。在本实施例中,由于设想能够同时执行三个线程的处理器,因此这些 资源对每个线程都需要。但是,从以SMT能够执行的处理器的结构的观点 来看,当然具有该结构,因此以后省略说明。
利用图4说明处理器状态寄存器所存储的指令同步执行模式记忆部。 寄存器组900包括处理器状态寄存器910、通用寄存器912 915、操作 数数据锁存器921 924等。处理器状态寄存器910保持SYNC位950。 该SYNC位950,根据图17所述的指令同步执行检测信号790被设定以 及复位。并且,SYNC位950,在产生中断处理时也被复位。
据此,通过将处于同步模式之事宜作为处理器状态来记忆,从而在因 中断而产生线程的分支的情况下,也可以管理此状态。
以下,作为本实施例涉及的工作,说明利用寄存器访问指令的图18 示出的程序A-5。图18示出的程序A-5中记载有指令发行部112所发行的线程A的指 令发行可能的指令组。在Step歹ij,按照发行顺序将各个执行步骤记载为 SA'1、 SA'2、"'、 SA'15。对于在各个线程的同一周期可以发行的指令, 装入、保存指令只能够发行一个指令,算术逻辑运算以及传输指令能够发 行三个指令。SA'1的指令是,Instructionl、Instrucion2禾B Instruction3 的三个指令中可以发行的setlo指令以及sethi指令。setlo指令是,向寄 存器r0存储立即值32创HWE—A)的低16位的指令。sethi指令是,向寄 存器r0存储立即值32位(HWE—A)的高16位的指令。为了避免SA1指令 组的冲突,在SA'2可以发行后续的st指令。SA'2的指令是wt指令,该 wt指令是将寄存器rl的内容保存到以rO为地址的硬件加速器的寄存器的 指令,也是示出指令同步执行模式的开始的指令。通过执行该wt指令,从 而在线程A设定指令同步执行模式。SA'3的指令是setlo指令,向寄存器 r2存储立即值32位(HWE-ST)的低16位的指令。该指令,由于以指令同 步执行模式来执行,因此单独执行。SA'4的指令是sethi指令和sync指 令,该sethi指令是向寄存器r2存储立即值32位(HWE—ST)的高16位的 指令。该指令,由于以指令同步执行模式来执行,因此单独执行。SA'5的 指令是rd指令,从以寄存器r0为地址的存储空间装入来存储到寄存器rl 。 根据该指令,指令同步执行模式被解除。SA'6的指令是add指令,将寄存 器rl与立即值100的和存储到寄存器rl。 SA'7的指令是st指令,将寄 存器rl的内容保存到以r2为地址的存储空间。从SA'8到SA'14的指令 是add指令,将寄存器r0与立即值1的和存储到寄存器r0。该线程A的 程序A-5(图18)是一种硬件加速器的模型,该硬件加速器,对某硬件加速 器(HWE一A)进行写入,而经过8nSec后从该地址装入,则可以获得特殊的 运算结果。由于该程序工作的处理器的工作频率为lGHz,因此,为了空 出8nSec的时间,以检测指令同步执行的指令后具有二个周期的指令发行 停止期间为特点,通过从SA'2到SA'4为止的三个指令同步执行来空出共 8nSec的时间,从而满足从硬件加速器装入的时间限制。在此示出,图5 中记载的指令发行停止部1000的触发器1020所锁存的指令发行停止请 求信号1010被输入到作为状态机的同步控制部1060,与流水线冲突状态 信号1030无关,在二个周期的期间输出指令发行停止状态信号1050。如上所述,示出指令同步执行模式的指令同步执行检测信号790被生成,而 通过指令同步执行有效指令的wt指令、和同步执行无效指令的rd指令, 可以进行与实施例1到3相同的工作,且可以将本线程的指令发行数变为 1,因此,不会受其它线程的指令发行。 (实施例5)
然而,虽然具有记忆指令同步执行模式的部,但是,在接受中断的情 况下,由于中断处理所需要的时间更长,因此若具有解除该指令同步执行 模式的构造,则可以减少不需要的指令同步执行模式的期间。据此,既然 可以改善对于其它线程的性能,还可以对于本线程,以中断处理时间来隐 蔽向硬件加速器的等待时间。
在本实施例中,利用与实施例3的图17的改善电路相对应的图19进 行说明。
图19是实施例5的指令同步执行检测部的内部结构中的、对应于一 个线程的结构框图。指令发行部112具有将按每个线程成为发行对象的最 多指令数的指令(在本实施例中假设按每个线程能够发行三个指令、能够同 时发行的指令组是二个线程的指令组、能够同时发行四个指令而进行说明) 存储的指令缓冲器850,按程序计数器的顺序存储有第一指令码851、第 二指令码852、第三指令码853、以及第一有效位854、第二有效位855、 第三有效位856,这些有效位示出是否存储有有效于各个指令码的缓冲器 的指令。输入这些信息,指令同步执行检测部包括"与"门811,输入 第一指令码851的从位31到位24的输出、参考表选择器833的比较器 821的输出和第一有效位854;"与"门812,输入第二指令码852的从 位31到位24的输出、参考表选择器833的比较器822的输出和第二有 效位855;"与"门813,输入第三指令码853的从位31到位24的输出、 参考表选择器833的比较器823的输出和第三有效位856;以及"或"门 814,输入"与"门811、"与"门812、"与"门813、及带有复位的触 发器835的输出;作为"或"门814的输出的指令同步执行检测信号890 被生成,该指令同步执行检测信号890示出包含需要指令同步执行的指令。 并且,该输出,被输入到带有复位的触发器835的输出和"异或"门834 的输入,连接于触发器835的数据输入。还包括"与"门837,向触发
30器835的复位端子输入中断受理信号的反转信号和复位信号。据此,保持 指令同步执行检测部所检测的指令同步执行检测有效状态,进一步,根据 指令同步执行检测部所检测的指令同步执行检测无效请求、或在受理中断 受理时,可以将该有效状态清除。再者,该触发器的输出,也被用作有效 参考表831和无效参考表832的选择器833的选择信号。再者,为了通 过指令同步执行检测信号示出究竟能否发行指令缓冲器所存储的指令而生 成将第一有效位854原封不动输出的第一指令码有效位891;从"与" 门881输出的第二指令码有效位892,该"与"门881输入第二有效位 855和被反转的"与"门811的输出;从"与"门882输出的第三指令码 有效位893,该"与"门882输入第三有效位856、"与"门881的输出 和被反转的"与"门812的输出。据此,通过指令同步执行检测部输出的 指令同步执行检测信号890,示出指令组中包含进行同步执行的指令,通 过第一指令码有效位891、第二指令码有效位892以及第三指令码有效位 893、可以识别线程内的可以发行指令的指令码。而且,图19的指令同步 执行检测部800只示出一个线程内的控制信号。在本实施例中,由于设想 能够同时执行三个线程的处理器,因此这些资源对每个线程都需要。 (实施例6)
然而,对于实施例1到5所述的指令发行停止部,停止发行的周期数 是固定的。实际上,由于处理器有可能以各种工作频率被LSI化,因此为 了保障实时的期间,需要具有可编程的结构。于是,利用与实施例1的图 5的改善电路相对应的图20进行说明。
图20是示出实施例6的对应于一个线程的指令发行停止部的结构的 框图。指令发行停止部1100输入通过指令同步执行检测部121所输出的 指令同步执行检测信号590来获得的指令发行停止请求信号1110、和通 过指令发行部212以及运算执行部230获得的关于流水线冲突的流水线冲 突状态信号1130。指令发行停止部1100包括触发器1120,输入指令 发行停止请求信号1110、和使用于指令传递部的时钟信号1121;作为状 态机的同步控制部1160,输入触发器1120的输出,且生成示出发行停止 期间的信号;以及作为状态机的冲突检测部1131,输入流水线冲突状态信 号1130,且生成示出发行停止期间的信号;同步控制部1160连接于停止期间记忆部1181,该停止期间记忆部1181连接于10总线1182;同步 控制部1160的状态机,以停止期间记忆部1181所记忆的周期数来使指 令发行禁止状态信号断言(assert)。指令发行停止部1100包括同步控制部 1160、和从冲突检测部1131输入的"或"门1140。据此,"或"门1140 的输出的指令发行停止状态信号1150,被生成为指令发行停止部1100的 输出信号,依据指令发行停止状态信号1150可以生成示出在下一个周期 不能发行本线程的信号。而且,图20的指令发行停止部只示出一个线程内 的控制信号。在本实施例中,由于设想能够同时执行三个线程的处理器, 因此这些资源对每个线程都需要。但是,从以SMT能够执行的处理器的结 构的观点来看,当然具有该结构,因此以后省略说明。 (实施例7)
然而,存在为了实现实时保障,而处理器的工作频率、或处理器和硬 件加速器的工作频率比被动态地变更的情况。在该情况下,本发明中还需 要保障实时(几个nSec)的期间。于是,禾,图21说明对于指令发行停止 部以具有工作频率检测部为特点的运算处理装置,该工作频率检测部获得 处理器的工作频率、或处理器和硬件加速器的工作频率比。
图21是示出实施例7的对应于一个线程的指令发行停止部的结构的 框图。指令发行停止部1200输入通过指令同步执行检测部121所输出的 指令同步执行检测信号590来获得的指令发行停止请求信号1210、和通 过指令发行部212以及运算执行部230获得的关于流水线冲突的流水线冲 突状态信号1230。指令发行停止部1200包括触发器1220,输入指令 发行停止请求信号1210、和使用于指令传递部的时钟信号1221;作为状 态机的同步控制部1260,输入触发器1220的输出,且生成示出发行停止 期间的信号;以及,作为状态机的冲突检测部1231,输入流水线冲突状态 信号1230,且生成示出发行停止期间的信号同步控制部1160连接于停止 期间记忆部1281,该停止期间记忆部1281连接于10总线1282;同步 控制部1260的状态机,以停止期间记忆部1281所记忆的周期数来使指 令发行禁止状态信号断言。还包括工作频率检测部1283,可以获得正在工 作中的处理器的工作频率、或处理器和硬件加速器的工作频率比,而停止 期间记忆部1281,根据工作频率检测部1283所记忆的信息,査找停止期间记忆部的设定值并将其输出给同步控制部1260。指令发行停止部1200 包括同步控制部1260、和从冲突检测部1231输入的"或"门1240。据 此,"或"门1240的输出的指令发行停止状态信号1250,被生成为指令 发行停止部1200的输出信号,依据指令发行停止状态信号1260可以生 成示出在下一个周期不能发行本线程的信号。而且,图21的指令发行停止 部只示出一个线程内的控制信号。在本实施例中,由于设想能够同时执行 三个线程的处理器,因此这些资源对每个线程都需要。但是,从以SMT能 够执行的处理器的结构的观点来看,当然具有该结构,因此以后省略说明。 (实施例8)
然而,对于以SMT执行的方法,可以设想几种工作模式。例如,对于 以SMT能够执行三个线程的处理器,也产生如图11所述以循环来调解三 个线程的三个线程等价模式,或产生将二个线程作为优先线程,而将剩下 的一个线程作为候补执行的情况。在该情况下,调解指令的定时,根据本 线程是优先线程还是候补线程而改变。于是,本实施例中,利用图22说明 具有性能保障工作模式检测部的运算处理装置,该性能保障工作模式检测 部检测本线程作为优先线程被分配、还是作为候补线程被分配,而对指令 同步执行期间进行切换。
图22是示出实施例8的对应于一个线程的指令发行停止部的结构的 框图。该图的指令发行停止部中,对于图21,增加了性能保障工作模式检 测部。
性能保障工作模式检测部1385,检测是否为优先于其它线程的工作模 式。例如,检测本线程是优先线程还是候补线程。
停止期间记忆部1381,按每个工作模式记忆表示停止期间的周期数。 对于被记忆的周期数,在工作模式是候补线程的情况下的停止期间的周期 数,可以比在优先线程的情况下的停止期间的周期数少。
所述停止期间记忆部,在按照检测到的工作模式的周期数的期间停止 所述后续指令的停止。
据此,在本线程为优先线程的情况下、和候补线程的情况下,都可以 保证性能。
(实施例9)
33在运算处理装置中,由于可以设定在指令同步执行模式中可以发行的 指令数,因此,即使不生成用于填充不必要的指令槽的伪指令也可以控制 指令发行数。
利用与实施例1到实施例7的图3到图4的改善电路相对应的图23、 图24进行说明。
图23是实施例9的指令同步执行检测部的内部结构中与一个线程相 对应的结构的框图。与图17相比,在图23的指令同步执行检测部中,增 加了指令同步执行指令发行数记忆部1485。
指令同步执行指令发行数记忆部1485,记忆在指令同步执行模式中可 以发行的指令数,而在每次发行时进行倒计数。据此,由于在指令同步执 行模式中可以发行nop等伪指令以外的有效的指令,因此可以提高线程的 处理效率。
(实施例10)
然而,虽然存在利用所述的指令同步检测部保障实时的最短时间的情 况,但是,由于C描述的程序中也存在可以先行进行处理的程序,因此, 在编译器检测到这些指令码的情况下,可以取代进行指令同步的指令而插 入这些指令码,从而支持进行相等的处理。于是,通过在编译处理的过程 中向C源程序插入编译指示,从而可以将指令同步执行模式中的本线程的 能够先行处理的指令提前来插入到程序。
图26是实施例10的程序转换装置的结构框图。该图的程序转换装置 包括编译器l、汇编器18、链接器19。编译器1包括语法解析部10、中 间代码生成部ll、最佳化部12、代码生成部13。通过使发挥各个功能框 的功能的软件在计算机上执行,从而可以实现该图的程序转换装置。
编译器1,将以高级语言描述的程序转换为汇编语言程序。高级语言 程序是,例如C语言等。
语法解析部IO,解析C语言等高级语言程序P1的语法。中间代码生 成部11,生成根据解析结果将高级语言程序P置换为中间代码(以下,简 单的称为指令。)的描述的中间代码指令串P2。
最佳化部12,对包含用于同步执行的特定指令的中间代码指令串P2 进行最佳化处理。因此,最佳化部12包括编译指示抽出部14、指令检测部15、特定指令设定部16、周期数指令数设定部17。
编译指示抽出部14,从中间代码指令串P2的程序中,抽出与对程序转 换装置的特定指令有关的指示语句(编译指示)。在图27示出程序的例子。 为了便于说明,举例示出,该程序D-l,不是中间码,而是包含在一部分 以汇编语言描述的程序的高级语言程序。该图中倒数第三行的以 "#pragma"开始的行是与特定指令有关的指示语句(编译指示)。并且, 第八行的wt指令和第十行的rd指令之间,插入有在第一行所定义的二个 nop指令。由于是指令同步执行模式,因此二个nop指令作为特定指令被 插入。
指令检测部15,根据所述指示语句,从中间代码指令串P2的程序中, 抽出向外部装置写入处理请求的第一指令(wt指令)、从该外部装置读出应 答的第二指令(rd指令)、以及特定指令。在图27中,wt指令被检测为第 一指令且特定指令,rd指令被检测为第二指令,而且,被插入到第八行的 二个nop指令也被检测为特定指令。
指令设定部16,在第二指令(rd指令)以后的指令,中若存在与n叩 指令相同的周期数的可置换的指令,则通过将第二指令以后的指令提前到 第一指令到第二指令之间而与nop指令置换,从而生成第二程序。
周期数指令数设定部17,将图21、图22示出的在停止期间记忆部设 定停止周期数的指令、或图23、图24示出的在指令同步执行指令发行数 记忆部设定指令数的指令等,插入到中间代码指令串P2的程序。
代码生成部13,根据由最佳化部12增加了所述指令的中间代码指令 串P2,生成汇编语言的指令串(助记形式的指令串)。
汇编器18,将汇编语言的指令串转换为机械语言指令串。链接器19, 通过链接多个机械语言指令串,从而生成执行文件。
图25示出未最佳化的程序的例子A-6,图18示出最佳化后的程序的 例子A-5。图25和图18相比,如图18的SA'3、 SA'4示出,通过进行 最佳化,二个n叩指令被置换为setlo指令和sethi指令。据此,可以提 高图18的程序的处理效率。
而且,实施例4的程序转换装置,在汇编器内向中间代码指令串P2 插入所述的指令,但也可以是(A)向高级语言程序Pl插入与所述的指令相对应的程序语句(函数等);(B)向汇编语言指令串插入与所述的指令相对 应的助记指令;或(C)向机械语言指令串插入与所述的指令相对应的机械语 言指令。
而且,在所述各个实施例中,说明了以SMT能够执行的处理器,但也 可以适用于VLIW(Very Long Instruction Word :超长指令字)处理器。
本发明的指令同步执行检测部、指令发行停止部、以及指令同步执行 指令发行数记忆部,有用于多线程化的处理器系统中的指令执行周期的同 步方法,并且,不变更基本的控制结构,也通过取指令发行部的控制的逻 辑和,从而可以以细粒度的期间(周期单位)保障指令执行周期。
权利要求
1、一种运算处理装置,在同一周期可以执行多个指令,其特征在于,包括指令读取单元,读取多个指令码;指令发行单元,将所述指令读取单元所读取的多个指令码,分割为由能够同时发行的指令组成的一个以上的指令组,从而发行指令组的指令码;指令解码单元,对所述指令发行单元所发行的一个以上的指令码进行解码,从而生成运算所需要的控制信号;以及运算处理单元,根据所述指令解码单元所生成的所述控制信号进行运算,所述指令发行单元,具有检测单元,检测特定指令,所述特定指令指示只在刚发行特定指令后的规定的周期期间停止发行后续于所述特定指令的指令;以及指令发行停止单元,只在刚发行所述特定指令后的规定的周期期间停止发行所述后续的指令。
2、 如权利要求1所述的运算处理装置,其特征在于, 所述指令发行单元,在检测出所述特定指令的情况下,将后续于所述特定指令的指令从包含所述特定指令的指令组中除外。
3、 如权利要求2所述的运算处理装置,其特征在于, 所述指令读取单元,从多个线程中分别读取指令码, 所述指令发行单元,按每个线程将线程中的指令串分割为指令组。
4、 如权利要求2所述的运算处理装置,其特征在于, 所述检测单元,依据指令码中的1位的指令位字段来检测所述特定指令。
5、 如权利要求2所述的运算处理装置,其特征在于,所述检测单元,通过对指令码中的多位的指令位字段进行解码,从而 检测所述特定指令。
6、 如权利要求2所述的运算处理装置,其特征在于, 所述检测单元,通过对指令码中的多位的指令位字段进行解码,从而检测第一指令以及第二指令,将从所述第一指令直到所述第二指令之前的 各个指令作为所述特定指令来检测。
7、 如权利要求6所述的运算处理装置,其特征在于, 所述第一指令是向外部装置写入处理请求的指令,所述第二指令是从该外部装置读出应答的指令。
8、 如权利要求6所述的运算处理装置,其特征在于, 所述运算处理装置,还具有处理器状态寄存器,该处理器状态寄存器保持状态信号,该状态信号示出正在处于停止发行所述后续指令的状态。
9、 如权利要求6所述的运算处理装置,其特征在于, 所述运算处理装置,还具有保持单元,保持状态信号,该状态信号示出刚发行所述特定指令后的规定的周期期间、且正在处于停止发行所述后 续指令的状态,所述检测单元,在检测出所述第一指令时将所述状态信号变为有效, 在检测出所述第二指令时将所述状态信号变为无效。
10、 如权利要求9所述的运算处理装置,其特征在于, 所述保持单元,通过中断处理的发生来将所保持的状态信号变为无效。
11、 如权利要求1所述的运算处理装置,其特征在于, 所述特定指令,后续于向外部装置请求处理的指令,该外部装置与所述运算处理装置连接。
12、 如权利要求1所述的运算处理装置,其特征在于, 所述指令发行停止单元,具有周期数记忆单元,记忆示出所述规定的周期期间的周期数,并以所记忆的周期数来停止发行所述后续指令。
13、 如权利要求12所述的运算处理装置,其特征在于, 所述周期数记忆单元,记忆与所述运算处理装置的工作频率相对应的周期数。
14、 如权利要求12所述的运算处理装置,其特征在于, 所述周期数记忆单元,记忆与所述运算处理装置可以工作的多个工作频率相对应的多个周期数。
15、 如权利要求1所述的运算处理装置,其特征在于, 所述指令发行单元,具有工作模式检测单元,检测工作模式是否是使所述特定指令所属的线程优先于其它线程的工作模式,所述指令发行停止单元,按照检测出的工作模式,只在所述规定的周 期期间停止发行所述后续指令。
16、 如权利要求1所述的运算处理装置,其特征在于, 所述指令发行单元,具有工作模式检测单元以及周期数记忆单元,所述工作模式检测单元,检测工作模式是否是使所述特定指令所属的线程优 先于其它线程的工作模式,所述周期数记忆单元,按每个工作模式记忆示 出所述规定的周期期间的周期数,所述指令发行停止单元,只在按照检测出的工作模式的周期数的期间 停止发行所述后续指令。
17、 如权利要求6所述的运算处理装置,其特征在于, 所述指令发行单元,具有指令数记忆单元,记忆在所述第一指令到所述第二指令之间可以发行的指令数,在每次发行时进行倒计数。
18、 如权利要求10所述的运算处理装置,其特征在于, 所述运算处理装置,还具有处理器状态寄存器,该处理器状态寄存器保持所述保持单元所保持的状态信号的值,所述指令发行停止单元,具有指令数记忆单元,在所述保持单元保持 示出正在处于停止发行所述后续指令的状态的状态信号的情况下,记忆在 所述第一指令到所述第二指令之间可以发行的指令数,在每次发行时进行 倒计数。
19、 一种处理器,同时发行并执行构成由能够同时执行的指令组成的指令组的指令,其 特征在于,所述处理器,执行包含特定指令的程序,所述特定指令,指示将后续于所述特定指令的指令从包含所述特定指 令的指令组中除外,并且,指示只在刚发行所述特定指令后的规定的周期 期间停止发行后续的指令。
20、 如权利要求19所述的处理器,其特征在于, 所述处理器是多线程处理器,读取多个线程,按每个线程将线程中的指令串分割为指令组。
21、 一种程序转换装置,将第一程序转换为第二程序,其特征在于,具有抽出单元,从第一程序中抽出指示语句,该指示语句指示程序转换装置设定特定指令;检测单元,根据第一程序中的所述指示语句,检测第一指令和第二指 令,该第一指令向外部装置请求处理,所述第二指令从该外部装置读出应 答;以及生成单元,通过在从所述第一指令到第二指令为止的期间设定特定指 令,从而生成第二程序,所述特定指令,指示将后续于所述特定指令的指令从包含所述特定指 令的指令组中除外,并且,指示只在刚发行所述特定指令后的规定的周期 期间停止发行后续的指令。
22、 一种计算机可读的程序,使计算机具有程序转换装置的功能,该 程序转换装置,将第一程序转换为第二程序,所述程序,其特征在于,使 计算机执行以下步骤;抽出步骤,从第一程序中抽出与对程序转换装置的特定指令有关的指 示语句;检测步骤,检测第一程序中的第一指令和第二指令,该第一指令向外 部装置写入处理请求,所述第二指令从该外部装置读出应答;以及生成步骤,通过在从所述第一指令到第二指令为止的期间将所述第二 指令以后的指令提前来配置,从而生成第二程序,所述特定指令,指示将后续于所述特定指令的指令从包含所述特定指 令的指令组中排除,并且,指示只在刚发行所述特定指令后的规定的周期 期间停止发行后续的指令。
全文摘要
提供一种运算处理装置,该运算处理装置在与硬件加速器同步的情况下,可以以最短周期来保障指令的执行的实时。本发明的处理器,同时发行并执行构成由能够同时执行的指令组成的指令组的指令,所述处理器,执行包含特定指令的程序,所述特定指令,指示将后续于所述特定指令的指令从包含所述特定指令的指令组中除外,并且,指示只在刚发行所述特定指令后的规定的周期期间停止发行后续的指令。
文档编号G06F9/38GK101425006SQ20081017381
公开日2009年5月6日 申请日期2008年10月29日 优先权日2007年10月29日
发明者尾崎伸治, 山本崇夫, 掛田雅英 申请人:松下电器产业株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1