CN102934076A - 指令发行控制装置以及方法 - Google Patents

指令发行控制装置以及方法 Download PDF

Info

Publication number
CN102934076A
CN102934076A CN2011800278007A CN201180027800A CN102934076A CN 102934076 A CN102934076 A CN 102934076A CN 2011800278007 A CN2011800278007 A CN 2011800278007A CN 201180027800 A CN201180027800 A CN 201180027800A CN 102934076 A CN102934076 A CN 102934076A
Authority
CN
China
Prior art keywords
instruction
thread
department
multiline procedure
resource management
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
CN2011800278007A
Other languages
English (en)
Other versions
CN102934076B (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.)
Socionext Inc
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 CN102934076A publication Critical patent/CN102934076A/zh
Application granted granted Critical
Publication of CN102934076B publication Critical patent/CN102934076B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/30Arrangements for executing machine instructions, e.g. instruction decode
    • 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/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions

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)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

在能够执行多线程的多线程处理器中,为了选择改进多线程处理器的吞吐量的线程以及指令,多线程处理器(100)所具备的指令发行控制装置(220),具备:资源管理部(210),管理示出正在执行的线程的每一个线程是否处于暂停的暂停信息;线程选择部(206),选择正在执行的线程中的、未处于暂停的线程;以及指令发行控制部(204),进行控制,以使从被选择的线程中能够同时发行的指令被发行。

Description

指令发行控制装置以及方法
技术领域
本发明涉及,能够执行多线程的处理器系统结构。
背景技术
在单线程的执行时,由于各种各样的原因(指令高速缓存失败,数据高速缓存失败,指令间损失等),导致处理器暂停(stall)。
根据该暂停的周期,导致在单线程的执行时的处理器的执行效率(即,吞吐量)降低。
于是,为了提高处理器的执行效率,提出了具有能够同时执行多个线程的系统结构的多线程处理器。
对于能够同时执行多个线程的多线程处理器中,周知的是,例如,利用循环方式,一边以一定的时间间隔切换要执行的线程,一边进行线程的执行的方式。
在此情况下,每个线程的处理所需要的时间,比基于单一的线程的执行时长,但是,即使某线程暂停,在一定时间后也执行其他的线程,因此,与基于单一的线程的执行时相比,整体的吞吐量提高,据此,处理器的执行效率提高。
然而,在多线程的切换时,若单纯地以一定的时间间隔切换线程,则难以估计直到处理完成为止的处理时间,在需要实时性的领域的实用性低。并且,由于线程的执行顺序也不是最佳,因此,处理器的执行效率低。
于是,为了执行使处理时间的估计以及执行效率提高的线程切换,提出了如专利文献1、2那样的技术。
在专利文献1中,利用详细整体结构图,说明了线程调度。根据该结构,考虑线程的优先级,能够以优先级更高的线程的执行效率提高的方式来选择线程。
并且,在专利文献2中进行了关于以下的技术的说明,即,对线程内的指令发行组进行计数,来计算线程处理所需要的周期数,据此,考虑线程的优先级,来高效率地切换多线程。
利用图12,更具体地进行说明。
图12示出以往技术的具有指令发行控制装置的多线程处理器的整体结构图。
而且,本整体结构图中设想能够同时执行N线程的多线程处理器,但是,实际上,能够执行的线程的数量不受任何限制。
如图12所示,以往技术的具有指令发行控制装置的多线程处理器具备:指令高速缓冲存储器101;指令获取部102;指令缓冲器103;指令发行控制装置104;指令执行部107;数据高速缓冲存储器108;以及寄存器文件109。
指令高速缓冲存储器101,根据指令获取部102的请求,向指令缓冲器103提供指令。在被请求的指令没有被高速缓存的情况下,从位于多线程处理器的外部的主存储器(没有图示)获得指令。
指令获取部102,根据指令缓冲器103的请求,将指令从指令高速缓冲存储器101获取到指令缓冲器103。
指令缓冲器103,按照对应的每个线程存在N个,存放各个线程需要执行的指令的串。
指令发行控制装置104,向指令缓冲器103发送控制信号,将指令执行部107下次需要执行的指令作为指令组来发行。
指令执行部107是,包括加法器以及乘法器等、多个运算器的处理部,执行由指令缓冲器发行的指令组。
数据高速缓冲存储器108,根据指令执行部107的请求,向指令执行部107提供运算所需要的数据。数据高速缓冲存储器108,在没有存放被请求的数据的情况下,从位于多线程处理器的外部的主存储器(没有图示)获得被请求的数据后,向指令执行部107提供。
寄存器文件109,按照对应的每个线程存在N个,与关于各个线程的指令执行的寄存器访问对应。也就是说,是保持以下的数据的寄存器群,即,通过执行指令缓冲器103中存放的各个线程从而成为读出以及写入的对象的数据。
指令发行控制装置104具备,指令分组部105和线程选择部106。
指令分组部105,从与线程选择部106选择的线程对应的指令缓冲器103内的指令中,根据指令缓冲器内的依赖关系,将能够同时执行的一个以上的指令作为指令组来分组。
也就是说,按照被选择的每个线程,将在同一周期能够发行的指令作为一个组来分组。
线程选择部106,根据预先决定或动态地变化的优先级,从N个线程中,决定下次需要执行的线程。
也就是说,图1所示的以往技术的指令发行控制装置104,根据由线程选择部106预先决定或动态地变化的优先级,决定要执行的线程。并且,将与要执行的线程对应的指令缓冲器103中存放的指令串作为能够发行的组来分组,向指令执行部107发行。
(现有技术文献)
(专利文献)
专利文献1:国际公开第2006/129767号
专利文献2:日本特开2008-123045号公报
然而,在以往的线程切换方式中存在的问题是,不能充分地抑制因线程暂停的发生而导致的多线程处理器的吞吐量的降低。
更详细而言,利用图11进行说明。
图11是示出分配到线程A801、线程B802以及线程C803的三个线程的指令的执行定时以及暂停定时的模式图。
在线程A801、线程B802、线程C803中设想,如图所示,预先存在暂停周期发生的区间。
在以往技术中执行这样的线程的结果为,时间图804、时间图805以及时间图806。
时间图804示出,由线程A801的指令的执行定时以及暂停定时。
时间图805示出,由线程B802的指令的执行定时以及暂停定时。
时间图806示出,由线程C803的指令的执行定时以及暂停定时。
如图11的时间图804至806所示,例如,在线程A801中分配周期821后,线程B802中分配周期822,接着,线程C803中分配周期823。
进而,线程A801中分配周期824,接着,线程B802中分配周期825,接着,线程C803中分配周期826。
并且,对于周期831至周期836的6周期,虽然各个线程中分配周期,但是,由于各个线程暂停,因此成为不能执行线程的周期。
在图11中,周期831至周期836的6周期是无用的。
在专利文献1中,虽然提及了考虑高速缓存失败以及分支预测失败等的暂停时间来切换线程的情况,但是,没有公开用于实现它的处理所需要的控制线以及具体算法。并且,没有提及考虑到具有依赖关系的指令间的损失的线程切换。
在专利文献2中,虽然说明了考虑指令间损失来进行线程控制,但是,没有提及具体控制方法。
也就是说,在所述现有技术文献中没有提出,用于使根据因指令执行中的各种各样的原因(指令/数据高速缓存失败、指令间损失)发生的线程暂停而降低的多线程处理器的吞吐量提高的具体技术。
发明内容
为了解决所述的以往的问题,本发明的目的在于提供,能够抑制因线程暂停的发生而导致的多线程处理器的吞吐量的降低的指令发行控制装置以及具备这样的指令发行控制装置的多线程处理器。
为了解决所述以往的课题,本发明的某局面涉及的指令发行控制装置,具备:资源管理部,管理暂停信息,该暂停信息示出正在执行的线程的每一个线程是否处于暂停;线程选择部,选择正在执行的线程中的、未处于暂停的线程;以及指令发行控制部,控制多线程处理器,以使从被选择的线程中能够同时发行的指令被发行。
根据该结构,指令发行控制装置具备的资源管理部,按照正在执行的每个线程,能够管理是否处于暂停、以及在处于暂停的情况下还有几个暂停周期。指令发行控制装置,参照该管理信息,以暂停的线程不被执行的方式从指令缓冲器发行指令。其结果为,能够实现能够充分抑制因线程暂停的发生而导致的多线程处理器的吞吐量的降低的指令发行控制装置。
具体而言,也可以是,资源管理部,针对正在执行的线程的每一个线程,管理示出还有几个暂停周期的暂停周期数,判断暂停周期数是否为1以上,在暂停周期数为0的情况下,判断为线程未处于暂停,从而更新暂停信息。
并且,本发明的某局面涉及的多线程处理器也可以,是具备指令执行部和指令发行控制装置的多线程处理器,指令发行控制装置具备:资源管理部,管理暂停信息,该暂停信息示出正在执行的线程的每一个线程是否处于暂停;线程选择部,选择正在执行的线程中的、未处于暂停的线程;以及指令发行控制部,进行控制,以使从被选择的线程中能够同时发行的指令被发行到指令执行部。
根据该结构,指令发行控制装置具备的资源管理部,按照正在执行的每个线程,能够管理是否处于暂停、以及在处于暂停的情况下还有几个暂停周期。指令发行控制装置,参照该管理信息,以暂停的线程不被执行的方式从指令缓冲器发行指令。其结果为,能够实现充分抑制了因线程暂停的发生而导致的吞吐量的降低的多线程处理器。
具体而言,也可以是,资源管理部,针对正在执行的线程的每一个线程,管理示出还有几个暂停周期的暂停周期数,判断暂停周期数是否为1以上,在暂停周期数不是1以上(即,暂停周期数为0)的情况下,判断为线程未处于暂停,从而更新暂停信息。
更具体而言,也可以是,资源管理部具备第一标志保持部以及第一计数器,所述第一标志保持部保持作为暂停信息的线程就绪标志,所述第一计数器是用于管理暂停周期数的计数器,在第一计数器为1以上的情况下,将线程就绪标志设定为0,在第一计数器为0的情况下,将线程就绪标志设定为1。
进而,也可以是,多线程处理器具备,存储多个线程的每一个线程的指令串的多个指令缓冲器,指令发行控制部具备指令分组部,该指令分组部,将多个指令缓冲器所存储的指令中的、下次将要向指令执行部发行的能够同时发行的一个以上的指令,作为指令组来分组,指令分组部,进行分组,以使多个指令缓冲器所存储的指令中的、与由指令执行部正在执行的指令之间不具有依赖关系的指令优先包含在指令组中。
据此,避免因执行与正在执行的指令具有依赖关系的指令而线程暂停,其结果为,能够实现执行效率提高了的多线程处理器。
具体而言,也可以是,资源管理部具有第二标志保持部以及第二计数器,所述第二标志保持部,保持资源就绪标志,该资源就绪标志示出正在执行的线程的每一个线程当前是否占有共享资源的每一个共享资源,所述第二计数器,示出正在执行的线程的每一个线程占有共享资源的每一个共享资源的剩余周期数,指令分组部,进行分组,以使多个指令缓冲器所存储的指令中的、使用当前被占有的共享资源的指令不包含在指令组中。
并且,也可以是,指令分组部,将当前被占有的共享资源的识别信息以及占有该共享资源的线程的识别信息,通知给资源管理部,资源管理部,按照与被通知的共享资源对应的第二计数器,更新与被通知的识别信息对应的线程的第一计数器。
并且,也可以是,指令分组部,在多个指令缓冲器所存储的指令与由指令执行部正在执行的指令之间具有依赖关系的情况下,将指令缓冲器所存储的指令所属的正在执行的线程的识别信息以及正在执行的指令的剩余执行周期数,通知给资源管理部,资源管理部,按照被通知的剩余执行周期数,更新与识别信息对应的线程的第一计数器。
并且,也可以是,多线程处理器具备数据高速缓冲存储器,该数据高速缓冲存储器保持由指令执行部利用的数据,指令执行部,在发生了数据高速缓存失败的情况下,将正在执行的线程的识别信息以及周期数通知给资源管理部,周期数是,将发生了数据高速缓存失败的数据,从位于多线程处理器的外部的主存储器传输给数据高速缓冲存储器所需要的周期数,资源管理部,按照被通知的周期数,更新与识别信息对应的线程的第一计数器。
并且,也可以是,多线程处理器具备指令高速缓冲存储器以及指令获取部,所述指令获取部,从指令高速缓冲存储器获得指令,将获得的指令提供给指令缓冲器,指令获取部,在获取指令时发生了指令高速缓存失败的情况下,将正在执行的线程的识别信息以及周期数通知给资源管理部,所述周期数是,将发生了指令高速缓存失败的指令,从位于多线程处理器的外部的主存储器传输给指令高速缓冲存储器所需要的周期数,资源管理部,按照被通知的周期数,更新与识别信息对应的线程的第一计数器。
并且,也可以是,指令执行部,在执行分支指令的情况下,将直到确定其分支目的地地址为止所需要的周期数以及该分支指令所属的线程的识别信息,通知给资源管理部,资源管理部,按照被通知的周期数,更新与识别信息对应的线程的第一计数器。
据此,进一步,也由资源管理部管理因分支指令的执行而发生的暂停周期,不将暂停的线程选择为执行线程,从而能够实现执行效率提高了的多线程处理器。
并且,也可以是,多线程处理器具备总线控制单元,所述总线控制单元,与指令高速缓冲存储器、数据高速缓冲存储器、以及位于多线程处理器的外部的主存储器分别连接,在指令高速缓冲存储器以及数据高速缓冲存储器发生了高速缓存失败时,在总线控制单元已经被占有的情况下,总线控制单元,将示出当前的占有还要继续几周期的剩余占有周期数,通知给资源管理部,资源管理部,按照被通知的剩余占有周期数,更新第一计数器。
据此,由资源管理部能够管理与同一的总线控制单元连接的其他的要素(DSP(Digital Signal Processor)等)占有总线控制单元的占有时间,其结果为,能够更准确地管理暂停周期数,改进多线程处理器的吞吐量。
而且,资源管理部,针对正在执行的线程的每一个线程,仅在比第一计数器示出的值大的暂停周期数被通知的情况下,以被通知的暂停周期数来重写第一计数器示出的值。
并且,也可以是,资源管理部,按照多线程处理器的每一个周期的工作,从第一计数器以及第二计数器示出的值中减去事先规定的特定的值。
并且,本发明的其他的局面涉及的多线程处理器具备的指令发行控制部也可以,还具备分支预测器,所述分支预测器,在指令执行部完成分支指令的执行之前预测分支目的地地址,利用预测地址执行分支指令,并且,将因分支目的地地址的预测不准而有可能发生的暂停周期数,通知给资源管理部,资源管理部,在接受了通知的情况下,将第一计数器示出的值与被通知的暂停周期数相加。
据此,由资源管理部能够事先管理因分支预测器的分支预测不准而发生的分支预测失败损失所导致的暂停周期,能够隐藏因分支预测的失败而导致的暂停周期。
并且,本发明的某局面涉及的多线程处理器,是以一个周期的工作来将多个指令组同时发行给指令执行部的同步多线程方式的多线程处理器,多线程处理器具备指令发行控制装置,指令发行控制装置具备:资源管理部,管理暂停信息,该暂停信息示出正在执行的线程的每一个线程是否处于暂停;线程选择部,选择正在执行的线程中的、未处于暂停的线程;以及指令分组部,进行控制,以使得将属于被选择的线程的每一个线程的多个指令组同时发行给指令执行部。
据此,在SMT方式的多线程处理器中,通过管理暂停周期,从而也能够从执行对象中除去暂停的线程,能够提高多线程处理器的吞吐量。
而且,本发明,除了能够作为这样的指令发行控制装置以及多线程处理器来实现以外,还能够作为将指令发行控制装置以及多线程处理器中包含的特征单元作为步骤的指令发行控制方法来实现。
如上所述,本发明,能够提供能够抑制因线程暂停的发生而导致的多线程处理器的吞吐量的降低的指令发行控制装置以及具备这样的指令发行控制装置的多线程处理器。
附图说明
图1是本发明的实施例1的具备指令发行控制装置的多线程处理器的整体结构图。
图2是示出本发明的实施例1的资源管理表的详细内容的图。
图3是示出本发明的实施例1的第一计数器的改写算法的处理的流程的流程图。
图4是示出本发明的实施例1的第二计数器的改写算法的处理的流程的流程图。
图5是本发明的实施例1的指令发行控制部的功能的说明图。
图6是说明本发明的实施例1的用于进行由指令分组部的指令的分组、以及基于指令间损失的第一计数器的重写的算法的流程图。
图7是说明本发明的实施例1的效果的模式图。
图8是说明实施例1的变形例的总线控制单元的模式图。
图9是本发明的实施例2的包括分支预测器的多线程处理器的整体结构图。
图10是本发明的实施例3的多线程处理器的整体结构图。
图11是示出以往技术的利用指令发行控制装置时的指令的执行定时的模式图。
图12是以往技术的具备指令发行控制装置的多线程处理器的整体结构图。
具体实施方式
(实施例1)
以下,参照附图说明本发明的实施例1的指令发行控制装置、以及具备指令发行控制装置的多线程处理器。
图1是本发明的实施例1的具备指令发行控制装置的多线程处理器100的整体结构图。
从以往技术的主要变更点是,追加了资源管理部210之处,以及据此变更了线程选择部206以及指令分组部205的处理内容之处。
如图1所示,多线程处理器100具备:指令高速缓冲存储器201;指令获取部202;指令缓冲器203;指令发行控制装置220;指令执行部207;数据高速缓冲存储器208;以及寄存器文件209。
指令高速缓冲存储器201,根据指令获取部202的请求,向指令缓冲器203提供指令。在被请求的指令没有被高速缓存的情况下,从位于多线程处理器100的外部的主存储器904(参照后述的图8)获得指令。
指令获取部202,根据指令缓冲器203的请求,将指令从指令高速缓冲存储器201获取到指令缓冲器203。
指令缓冲器203,按照对应的每个线程存在N个,存放各个线程需要执行的指令的串。
例如,设想在多线程处理器100能够执行N个线程的情况下,存在第一指令缓冲器至第N指令缓冲器的共计N个指令缓冲器。而且,在此,原则上,将N个指令缓冲器的总称记载为指令缓冲器203。
指令发行控制装置220,向指令缓冲器203发送控制信号,进行控制,以将指令执行部207将要下次执行的、能够同时发行的一个以上的指令作为指令组来发行。
指令执行部207是,包括加法器以及乘法器等、多个运算器的处理部,执行由指令缓冲器203发行的由能够同时发行的一个以上的指令构成的指令组。
数据高速缓冲存储器208,根据指令执行部207的请求,将运算所需要的数据提供给指令执行部207。
数据高速缓冲存储器208,在没有存放被请求的数据的情况,从位于多线程处理器100的外部的主存储器904(参照后述的图8)获得被请求的数据后,提供给指令执行部207。
寄存器文件209,按照对应的每个线程存在N个,与关于各个线程的指令执行的寄存器访问对应。也就是说,是保持以下的数据的寄存器群,即,通过执行指令缓冲器203中存放的各个线程从而成为读出以及写入的对象的数据。而且,在此,原则上,将N个寄存器文件的总称记载为寄存器文件209。
指令发行控制装置220具备,指令发行控制部204以及资源管理部210。
指令发行控制部204,以从被选择的线程中发行能够同时发行的指令的方式控制多线程处理器。具体而言,指令发行控制部204具备,指令分组部205、以及线程选择部206。
指令分组部205,根据资源管理部210的信息、和指令缓冲器203内的依赖关系,将与由线程选择部206选择的线程对应的指令缓冲器203内的指令串中的、下次将要向指令执行部207发行的能够同时发行的一个以上的指令作为指令组来分组。
线程选择部206,利用预先决定或动态地变化的优先级、和资源管理部210的信息,决定下次需要执行的线程。
资源管理部210,管理资源表。资源表是,与多线程处理器100能够执行的每个线程对应而存在的。例如,若多线程处理器100能够执行N线程,则存在第一资源表至第N资源表的N个资源表。
资源管理部210,受理来自指令执行部207、指令缓冲器203以及指令获取部202的信息,利用对应的资源表来管理:(1)各个线程是否占有共享资源;(2)在占有的情况下,直到共享资源被开放为止的剩余周期数;(3)线程是否暂停;以及(4)在暂停的情况下,剩余的暂停周期数。
也就是说,多线程处理器100所具备的指令发行控制装置220具备:资源管理部210,管理暂停信息,该暂停信息示出正在执行的线程的每一个线程是否处于暂停;线程选择部206,选择正在执行的线程中的、未处于暂停的线程;以及指令发行控制部204,控制多线程处理器100,以使从被选择的线程中能够同时发行的指令被发行。
在此,正在执行的线程意味着,指令缓冲器203中已经读入的线程。在本实施例中,由于存在第一指令缓冲器至第N指令缓冲器的N个指令缓冲器,因此,与其对应,最大N个线程会成为正在执行。
换而言之,指令发行控制装置220,将属于指令缓冲器203中存放的未处于暂停的线程的多个指令中的、能够同时发行的指令,从指令缓冲器203向指令执行部207发行。
并且,资源管理部210,针对正在执行的线程的每一个线程,管理示出还有几个暂停周期的暂停周期数。资源管理部210,判断暂停周期数是否为1以上,若暂停周期数为1以上,则判断为线程处于暂停,更新对应的资源表的暂停信息。
另一方面,资源管理部210,若暂停周期数为0,则判断为线程未处于暂停,更新对应的资源表的暂停信息。
具体而言,资源管理部210,具备:第一标志保持部304,保持作为暂停信息的线程就绪标志;以及作为用于管理暂停周期数的计数器的第一计数器303。
资源管理部210,若第一计数器303为1以上,则将线程就绪标志设定为0,若第一计数器303为0,则将线程就绪标志设定为1。
并且,多线程处理器100具备,具有存储多个线程的每一个线程的指令串的多个缓冲器的指令缓冲器203,指令发行控制部204具备指令分组部205,指令分组部205,将指令缓冲器203所存储的指令中的、下次将要向指令执行部207发行的能够同时发行的一个以上的指令,作为指令组来分组。
在此,指令分组部205,进行分组,以使具有多个缓冲器的指令缓冲器203所存储的指令中的、与由指令执行部207正在执行的指令之间不具有依赖关系的指令优先包含在指令组中。
进而,并且,资源管理部210具有第二标志保持部306和第二计数器305,第二标志保持部306,保持资源就绪标志,该资源就绪标志示出正在执行的线程的每一个线程当前是否占有共享资源的每一个共享资源,第二计数器305,示出正在执行的线程的每一个线程占有共享资源的每一个共享资源的剩余周期数。
在此,指令分组部205,进行分组,以使具有多个缓冲器的指令缓冲器203所存储的指令中的、使用当前被占有的共享资源的指令不包含在发行给指令执行部207的指令组中。
并且,指令分组部205,将当前被占有的共享资源的识别信息以及占有共享资源的线程的识别信息,通知给资源管理部210,资源管理部210,按照与被通知的共享资源对应的第二计数器305,更新与被通知的识别信息对应的线程的第一计数器303。
并且,指令分组部205,在指令缓冲器203所存储的指令与由指令执行部207正在执行的指令之间具有依赖关系的情况下,将指令缓冲器203所存储的指令所属的正在执行的线程的识别信息以及正在执行的指令的剩余执行周期数,通知给资源管理部。
然后,接受了通知的资源管理部210,按照被通知的剩余执行周期数,更新与被通知的识别信息对应的线程的第一计数器。
并且,指令执行部207,在发生了数据高速缓存失败的情况下,将正在执行的线程的识别信息以及周期数通知给资源管理部210,所述周期数是,将发生了数据高速缓存失败的数据,从位于多线程处理器100的外部的主存储器904传输给数据高速缓冲存储器208所需要的周期数。
然后,资源管理部210,按照被通知的周期数,更新与被通知的识别信息对应的线程的第一计数器303。
并且,指令获取部202,在获取指令时发生了指令高速缓存失败的情况下,将正在执行的线程的识别信息以及周期数通知给资源管理部210,所述周期数是,将发生了指令高速缓存失败的指令,从位于多线程处理器100的外部的主存储器904传输给指令高速缓冲存储器201所需要的周期数。
接着,资源管理部210,按照被通知的周期数,更新与被通知的识别信息对应的线程的第一计数器303。
并且,指令执行部207,在执行分支指令的情况下,将直到确定其分支目的地地址为止所需要的周期数以及该分支指令所属的线程的识别信息,通知给资源管理部210。然后,资源管理部210,按照被通知的周期数,更新与被通知的识别信息对应的线程的第一计数器303。
而且,资源管理部210,针对正在执行的线程的每一个线程,仅在比第一计数器303示出的值大的暂停周期数被通知的情况下,以被通知的暂停周期数来重写该第一计数器303示出的值。
并且,资源管理部210,按照多线程处理器100的每一个周期的工作,从第一计数器303以及第二计数器305示出的值中减去事先规定的特定的值。
以下,进行更详细说明。
图2是示出本发明的实施例1的资源管理表的详细内容的图。
资源管理部210,由与N个(将多线程处理器100执行的线程数设为N个的情况。以下同样)线程对应的N个资源表构成。
所有的资源表的结构相同,因此,在此,利用第N资源表302进行说明。
第N资源表302具备,第一计数器303、第一标志保持部304、第二计数器305、以及第二标志保持部306。
第一计数器303是,保持示出线程暂停的周期数的暂停周期数(以后,也称为线程暂停周期321)的计数器。
第一标志保持部304,保持示出能够执行线程的线程就绪标志311。
在线程暂停周期321为1以上的情况下,线程就绪标志311为0,示出不能执行线程。
并且,在线程暂停周期321为0的情况下,线程就绪标志311为1,示出能够执行线程。
第二计数器305,在根据执行向共享资源的数据写入的指令而数据写入到共享资源的情况下,将示出直到该写入指令完成为止的处理器的剩余周期数的计数器(以后,也称为指令执行周期),按每个共享资源保持。也就是说,保持直到向各个共享资源的写入完成为止的处理器的周期数。
第二标志保持部306,保持示出能够利用共享资源的资源就绪标志。在指令执行周期为1以上时,资源就绪标志为0,示出不能使用共享资源,以及,在指令执行周期为0以上时,资源就绪标志为1,示出能够使用共享资源。
而且,资源就绪标志以及指令执行周期,按照共享资源的数量被保持。在本实施例中,与M个共享资源对应,第一资源就绪标志312至第M资源就绪标志315、以及第一指令执行周期322至第M指令执行周期325,分别由第二标志保持部306以及第二计数器305保持。
而且,第一计数器303、第一标志保持部304、第二计数器305、以及第二标志保持部306,例如,由处理器内的寄存器能够实现。
图3是示出本发明的实施例1的第一计数器303的改写算法的处理的流程的流程图。
如图1的整体结构图所示,资源管理部210,通过从指令执行部207、指令获取部202、以及指令发行控制部204接受控制信号,从而分别获得数据高速缓存失败、指令高速缓存失败、以及指令间损失等的使线程暂停的事件信息。事件信息中包含事件固有的暂停周期数,该暂停周期数也同时被通知到资源管理部210(S401)。
例如,在指令执行部207中数据高速缓存失败、指令获取部202中指令高速缓存失败、指令发行控制部204(具备的指令分组部205)中指令间损失等、分别发生了使线程暂停的事件的情况下,指令执行部207、指令获取部202以及指令分组部205,分别将事件发生了的线程等的识别信息以及暂停周期数,通知给资源管理部210。
资源管理部210,对被通知的事件的暂停周期数、与第一计数器303内已经存放的线程暂停周期321进行比较(S402)。而且,在重新被通知的事件的暂停周期数比较大的情况下,资源管理部210,以重新被通知的事件的周期数来重写第一计数器303中已经存放的线程暂停周期321(S403)。
并且,在重新被通知的事件的暂停周期数比较小的情况下,资源管理部210,不变更第一计数器303中已经存放的线程暂停周期321,而照原样保持(S404)。
根据如上所述的算法,资源管理部210,管理与各个线程对应的线程暂停周期321。
图4是示出本发明的实施例1的第二计数器305的改写算法的处理的流程的流程图。
资源管理部210,首先,从指令发行控制部204,被通知要执行的指令的执行周期数M、以及指令定义的共享资源(S501)。
接着,资源管理部210,判定重新被通知的执行周期数M是否为2以上(S502)。
在重新被通知的执行周期数小于2的情况下,由该指令定义为使用的共享资源是指令执行后马上能够使用的,因此,不需要由第二计数器305管理。因此资源管理部210不更新第二计数器305(S503)。
在重新被通知的执行周期数为2以上的情况下,该指令定义为使用的共享资源,指令执行后不等待1周期以上完成就不能使用。因此,该执行周期数需要由第二计数器305管理。
在此,将重新被通知的执行周期数设为S,将指令完成周期数定义为S-1。资源管理部210,判定该指令完成周期数S-1是否比对应的共享资源的第二计数器305中保持的指令执行周期数大(S504)。
假如,在第二计数器305中保持的指令执行周期数比S-1大的情况下,资源管理部210,照原样保持现有的指令执行周期数(S505)。
并且,在S-1比第二计数器305中保持的指令执行周期数大的情况下,资源管理部210,以指令完成周期数S-1来重写对应的第二计数器305(S506)。
在共享资源由指令事先定义为使用的情况下,资源管理部210,根据所述算法,将直到使用对应的共享资源的指令的执行完成为止的周期数保持到第二计数器305,管理不能使用该共享资源的情况。
图5是本发明的实施例1的指令发行控制部204的功能的说明图。
如已经说明,指令发行控制部204具备,指令分组部205、以及线程选择部206。
在此,指令分组部205具有,将指令缓冲器203中存放的指令串,根据资源管理部210内的第二标志保持部306以及指令缓冲器203内的指令间的依赖关系,作为能够同时发行的指令组来分组的功能。
指令分组部205还具有,进一步,检测指令缓冲器203中存放的指令间的指令间损失,将该损失周期作为线程暂停周期321,来登记到资源管理部210的功能。
接着,利用图6,说明由所述指令分组部205的指令的选择、以及以指令间损失来重写线程暂停周期321的算法。
图6是说明本发明的实施例1的用于进行由指令分组部205的指令的分组、以及基于指令间损失的第一计数器的重写的算法的流程图。
首先,由指令分组部205,选择指令缓冲器203中存放的指令串之中的、能够同时发行的多个指令候选,检测该指令使用的共享资源(S701)。
接着,指令分组部205,检查在被选择的指令候选间、或者在资源管理部210管理的共享资源与指令候选之间是否具有依赖关系(S702)。
对于被选择的指令候选各自,在指令候选间以及与资源管理部210管理的任何共享资源之间都没有依赖关系的情况下,指令分组部205,将指令候选全部作为指令组来分组,向指令缓冲器203发送控制信号,来控制为发行指令(S703)。
另一方面,在指令候选间、或者在指令候选与资源管理表的某个具有依赖关系的情况下,指令分组部205,将直到具有依赖关系的紧前的指令为止的指令候选作为指令组来分组,来控制为发行(S704)。
进而,将按照起因于依赖关系的指令间损失周期线程暂停的情况,指令分组部205,通知给资源管理部210(S705)。
利用图3所示的第一计数器303的改写算法,该通知由资源管理部210处理。
接着,对于线程选择部206的功能,再次参照图5以及图2进行说明。
线程选择部206,从资源管理部210的第一标志保持部304获得线程就绪标志的值。线程选择部206,仅将线程就绪标志的值为1的线程,设为下次需要执行的线程的选择候补。
通过进行如上所述的控制,指令发行控制部204,不会选择、发行处于暂停状态的线程,而时常继续选择、发行就绪状态的线程,因此,多线程处理器的吞吐量提高。
图7是说明本发明的实施例1的效果的模式图。
而且,对于示出与图11相同的内容的图,附上同一符号,并省略详细说明。
在线程A801、线程B802、线程C803中设想,如图所示,预先存在暂停周期发生的区间。
由本实施例的具备指令发行控制装置220的多线程处理器100执行这样的线程的结果为,时间图807、时间图808以及时间图809。
如图11所示,根据现有技术,在线程A的执行结果804、线程B的执行结果805、线程C的执行结果806中,分别发生2周期的暂停周期。
该结果意味着,线程执行整体的25%暂停。
另一方面,在作为由本实施例的具备指令发行控制装置220的多线程处理器100执行相同的线程的结果的时间图807至时间图809中,连1周期的暂停周期都没有发生。
这是因为,指令发行控制装置220,在各个线程暂停的期间,不将该线程设为发行的选择候补的缘故。
其结果为,与以往技术相比,根据本实施例的具备指令发行控制装置220的多线程处理器100,能够确认整体的吞吐量提高25%。
(变形例)
接着,说明实施例1的变形例涉及的指令发行控制装置220以及多线程处理器100。
在本变形例中,示出高速缓存失败等的损失因总线的访问状况而发生变化时的处理方法。
图8是说明本变形例的总线控制单元903的模式图。
如图8所示,总线控制单元903,经由总线,与指令高速缓冲存储器201、数据高速缓冲存储器208、处理器外的主存储器904连接。总线控制单元903,还与DSP(Digital Signal Processor:数字信号处理器)905、其他的CPU(Central Processing Unit:中央处理器)906、DMAC907(Direct MemoryAccess Controller:直接存储器访问控制器)连接。
总线控制单元903是,控制总线的控制芯片。总线控制单元903,例如,从主存储器904向指令高速缓冲存储器201传输指令,并且,从主存储器904向数据高速缓冲存储器208传输数据。
主存储器904是一种存储部,例如,将多线程处理器100在指令执行部207执行的指令以及数据,从外部存储中暂时读入并保持。主存储器904是RAM(Random Access Memory:随机存储器)等。
DSP905是,特别用于数字信号处理的微处理器。
DMAC907是一种控制器,用于实现不经由CPU而在输入输出设备与存储器间通过总线直接交换数据的DMA(Direct Memory Access:直接存储器访问)。
在此,在指令高速缓冲存储器201以及数据高速缓冲存储器208中发生了高速缓存失败时,在总线控制单元903已经(例如,由其他的CPU以及DPS等的处理装置)被占有的情况下,总线控制单元903,将示出当前的占有还有继续几个周期的剩余占有周期数通知给资源管理部210。
接着,资源管理部210,按照被通知的剩余占有周期数来更新第一计数器。
对于如上所述的内容,进行更具体说明。
在实施例1中,指令高速缓存失败、以及数据高速缓存失败的损失周期分别为固定值的损失周期。
但是,总线控制单元903,如图8所示,会有与作为其他的要素的DSP905、其他的CPU906、DMAC907等连接的情况。在此情况下,例如,即使从指令高速缓冲存储器201向总线控制单元903发送指令传输的请求,也在其他的要素占有总线控制单元903的情况下,不能开始指令的传输。
也就是说,将其他的要素占有总线控制单元903的周期数+从主存储器904向指令高速缓冲存储器201的传输周期,写入到资源管理部210的第一计数器303,从而能够进行管理直到向指令高速缓存的传输实际完成为止的周期数的线程控制。
如上所述,在本变形例涉及的多线程处理器100中,通过与同一总线控制单元903连接的其他的要素(DSP905等)占有总线控制单元903时的占有时间由资源管理部210管理,从而能够更准确地管理暂停周期数,能够提高多线程处理器100的吞吐量。
(实施例2)
接着,说明本发明的实施例2的指令发行控制装置220以及多线程处理器300。
在本实施例中,指令发行控制部204中包括分支预测器的多线程处理器300,能够管理暂停周期数,能够提高吞吐量。
图9是本发明的实施例2的包括分支预测器1005的多线程处理器300的整体结构图。而且,对于与图1相同的构成要素附上相同的符号,并省略详细说明。
图9所示的多线程处理器300,与图1所示的多线程处理器100相比,区别在于,在图9所示的多线程处理器300具备的指令发行控制装置220中,追加了分支预测器1005。
也就是说,指令发行控制部204还具备分支预测器1005,分支预测器1005,在指令执行部207完成分支指令的执行之前预测分支目的地地址,利用预测的地址执行分支指令,并且,将因分支目的地地址的预测不准而有可能发生的暂停周期数,通知给资源管理部210。
资源管理部210,在从分支预测器1005接受了预测了分支目的地地址的通知的情况下,将第一计数器303示出的值与被通知的暂停周期数相加。
接着,进行更详细说明。
一般而言,在执行分支指令的情况下,直到确定其分支目的地地址为止发生损失周期,在该损失周期的期间不能发行后续的指令。其结果为,指令执行部207暂停,执行效率降低。
分支预测器1005是,用于在指令执行部207完成分支指令的执行之前预测分支目的地地址,隐藏分支指令执行的损失周期的机构。
分支预测器1005,在指令缓冲器203发行分支指令时预测其分支目的地地址,投机获取并执行分支目的地地址所指定的指令。
因此,在分支预测器1005的预测准确的情况下,分支指令执行的损失被隐藏。但是,在分支预测器1005的分支预测不准的情况下,分支预测器1005,需要取消投机执行了的指令,从分支预测前的状态重新执行指令。
因此,在由分支预测器1005的分支预测不准的情况下,结果为会发生与分支指令执行相当的损失。
为了隐藏因该预测失败而引起的损失,本实施例的多线程处理器300具备的分支预测器1005,在进行分支预测时,将因分支预测不准而有可能发生的线程的暂停周期通知给资源管理部210。
如上所述,设想存在分支预测时线程暂停的可能性,通过将存在使线程暂停的可能性的周期数与资源管理部210具有的第一计数器303的值相加,从而能够隐藏因分支预测失败损失而引起的暂停周期。
而且,关于第一计数器303的更新,根据分支预测器1005的预测精度以及分支指令的种类(通常分支,间接分支),适当地变更更新算法,从而能够更提高多线程处理器300的吞吐量。
例如,可以考虑以下的情况,即,分支预测器1005存储上次的分支指令预测是否准确,在上次的预测准确的情况下,将比上次的预测不准确时少的暂停周期数,通知给资源管理部210。
并且,还可以考虑以下的情况,即,分支预测器1005,在分支指令为通常分支的情况下,将比间接分支少的暂停周期数通知给资源管理部210,反而,将比间接分支多的暂停周期数通知给资源管理部210。
根据以上所述的本实施例涉及的具备分支预测器1005的多线程处理器300,能够隐藏因分支预测器1005的分支预测不准而发生的分支预测失败损失所导致的暂停周期。
(实施例3)
接着,说明本发明的实施例3的指令发行控制装置220以及多线程处理器400。
本实施例涉及的具有SMT(Simultaneous Multithreading:同步多线程)功能的多线程处理器400,通过管理暂停周期数,从而提高吞吐量。
图10是本实施例的多线程处理器400的整体结构图。而且,对于与图1相同的构成要素附上相同的符号,并省略详细说明。
本实施例中新追加的构成要素是,指令执行检查部1105。
如实施例1的说明中所述,指令执行部207,被发行由指令分组部205分组后的由能够同时执行的一个以上的指令构成的指令组。
在此,由指令分组部205分组的指令,根据指令执行部207具备的运算单元的结构而决定。
更具体地说,考虑以下的情况,即,指令执行部207具备的运算单元,由两个整数运算单元、一个存储器访问单元、一个分支单元构成。
在此情况下,即使存在由优先级最高的线程中使用整数运算单元的三个指令构成的指令串,指令分组部205,也会分组为由两个指令构成的指令串所成的指令组。
反而,在指令分组部205,(根据属于同一线程的指令间的依赖关系)将使用整数运算单元的一个指令构成的组分组的情况下,即使整数运算单元以及除此以外的单元中有空闲,也发行使用一个整数运算单元的指令组。
其结果为,发生指令执行部207的处理效率降低的问题。
本实施例的多线程处理器400,通过设置指令执行检查部1105,从而解决所述问题。
具体而言,如下进行从就绪状态的线程中决定需要按照优先级顺序执行的线程的次序。
首先,指令分组部205将属于最优先的线程的指令分组。
接着,指令执行检查部1105,检查指令执行部207具有的运算单元中是否有空闲。
假如,在有空闲的情况下,线程选择部206选择下一个优先级的线程后,在属于该线程的指令中存在能够与上一个指令组同时(即,以同一周期)发行的一个以上的指令的情况下,指令分组部205进行控制,以将该指令作为新的指令组来分组,发行给指令执行部207。
通过反复进行所述操作,(1)直到到达指令发行的最大幅度为止,(2)直到到达指令执行部207具有的运算单元的数量的最大值为止,或者,(3)直到处于就绪状态的线程不存在为止,从而能够在同一发行周期内发行不同的线程的指令组。
一般而言,对于所述技术,周知的是SMT,但是,在本实施例中,考虑资源管理部210具有的第一标志保持部304的线程就绪标志,线程选择部206进行线程的选择。
进而,特点是,考虑资源管理部210具有的第二标志保持部306的资源就绪标志,指令分组部205进行指令的分组。
也就是说,在能够以一个周期的工作来将多个指令组同时发行给指令执行部207的、具备指令发行控制装置220的SMT方式的多线程处理器400中,指令发行控制装置220具备:资源管理部210,管理暂停信息,该暂停信息示出正在执行的线程的每一个线程是否处于暂停;线程选择部206,选择正在执行的线程中的、未处于暂停的线程;以及指令分组部205,进行控制,以使得将属于被选择的线程的每一个线程的多个指令组同时发行给指令执行部207。
根据这样的结构,在SMT方式的多线程处理器400中,通过管理暂停周期,从而也能够从执行对象中除去暂停的线程,能够提高多线程处理器400的吞吐量。
而且,所述实施例1至3涉及的指令发行控制装置以及多线程处理器中包含的各个处理部,作为典型的集成电路的LSI来实现。可以将它们分别单芯片化,也可以将它们单芯片化,使得包含一部分或全部。
在此,作为LSI,但也可以根据集成度不同被称为IC、系统LSI、超LSI、特大LSI。
并且,集成电路化不仅限于LSI,而可以以专用电路或通用处理器来实现。也可以利用在制造LSI后能够编程的FPGA(Field Programmable GateArray:现场可编程门阵列)、或可重构LSI内部的电路单元的连接以及设定的可重构处理器。
进而,当然,若因半导体技术的进步或导出的其它的技术而出现代替LSI的集成电路化的技术,则可以利用其技术对各个处理部进行集成化。可以考虑生物技术的应用等的可能性。
并且,也可以通过CPU等的处理器执行程序,从而实现所述实施例1至3涉及的指令发行控制装置以及多线程处理器的功能的一部分或全部。
进而,本发明可以是所述程序,也可以是记录有所述程序的记录介质。并且,当然,能够通过互联网等的传输介质来分发所述程序。
并且,也可以组合所述实施例1至3涉及的指令发行控制装置以及多线程处理器的功能中至少一部分。
并且,在上述利用了的数字都是为了具体说明本发明而示出的例子,本发明不仅限于以例子来示出的数字。
并且,构成要素间的连接关系是为了具体说明本发明而示出的例子,实现本发明的功能的连接关系不仅限于此。
进而,所述的实施例,利用硬件和/或软件构成,利用硬件的结构是,也能够利用软件构成的,利用软件的结构是,也能够利用硬件构成的。
进而,在不脱离本发明的要旨的范围内对本发明涉及的实施例1至3进行的本领域的技术人员能够想到的各种变形例也包含在本发明中。
本发明是,与处理器的线程发行控制有关的系统结构的原则所涉及的技术,也是能够提供执行性能高的处理器的技术。根据本发明,能够以简单的硬件来实现执行效率高的线程发行控制。
因此,在嵌入领域、通用PC领域、超计算领域等中均成为有用的技术。
符号说明
100 多线程处理器(实施例1)
101 指令高速缓冲存储器
102 指令获取部
103 指令缓冲器
104 指令发行控制装置
105 指令分组部
106 线程选择部
107 指令执行部
108 数据高速缓冲存储器
109 寄存器文件
201 指令高速缓冲存储器
202 指令获取部
203 指令缓冲器
204 指令发行控制部
205 指令分组部
206 线程选择部
207  指令执行部
208  数据高速缓冲存储器
209  寄存器文件
210  资源管理部
220  指令发行控制装置
300  多线程处理器(实施例2)
302  第N资源表
303  第一计数器
304  第一标志保持部
305  第二计数器
306  第二标志保持部
400  多线程处理器(实施例3)
903  总线控制单元
904  主存储器
905  DSP
906  其他的CPU
907  DMAC
1005 分支预测器
1105 指令执行检查部

Claims (18)

1.一种指令发行控制装置,是多线程处理器所具备的指令发行控制装置,该指令发行控制装置具备:
资源管理部,管理暂停信息,该暂停信息示出正在执行的线程的每一个线程是否处于暂停;
线程选择部,选择所述正在执行的线程中的、未处于暂停的线程;以及
指令发行控制部,控制所述多线程处理器,以使从被选择的所述线程中能够同时发行的指令被发行。
2.如权利要求1所述的指令发行控制装置,
所述资源管理部,针对所述正在执行的线程的每一个线程,管理示出还有几个暂停周期的暂停周期数,判断所述暂停周期数是否为1以上,在所述暂停周期数为0的情况下,判断为线程未处于暂停,从而更新所述暂停信息。
3.一种多线程处理器,是具备指令执行部和指令发行控制装置的多线程处理器,
所述指令发行控制装置具备:
资源管理部,管理暂停信息,该暂停信息示出正在执行的线程的每一个线程是否处于暂停;
线程选择部,选择所述正在执行的线程中的、未处于暂停的线程;以及
指令发行控制部,进行控制,以使从被选择的所述线程中能够同时发行的指令被发行到所述指令执行部。
4.如权利要求3所述的多线程处理器,
所述资源管理部,针对所述正在执行的线程的每一个线程,管理示出还有几个暂停周期的暂停周期数,判断所述暂停周期数是否为1以上,在所述暂停周期数为0的情况下,判断为线程未处于暂停,从而更新所述暂停信息。
5.如权利要求4所述的多线程处理器,
所述资源管理部具备第一标志保持部以及第一计数器,所述第一标志保持部保持作为所述暂停信息的线程就绪标志,所述第一计数器是用于管理所述暂停周期数的计数器,
在所述第一计数器为1以上的情况下,将所述线程就绪标志设定为0,
在所述第一计数器为0的情况下,将所述线程就绪标志设定为1。
6.如权利要求4所述的多线程处理器,
所述多线程处理器具备,存储多个线程的每一个线程的指令串的多个指令缓冲器,
所述指令发行控制部具备指令分组部,该指令分组部,将所述多个指令缓冲器所存储的指令中的、下次将要向所述指令执行部发行的能够同时发行的一个以上的指令,作为指令组来分组,
所述指令分组部,进行所述分组,以使所述多个指令缓冲器所存储的指令中的、与由所述指令执行部正在执行的指令之间不具有依赖关系的指令优先包含在所述指令组中。
7.如权利要求6所述的多线程处理器,
所述资源管理部具有第二标志保持部以及第二计数器,
所述第二标志保持部,保持资源就绪标志,该资源就绪标志示出所述正在执行的线程的每一个线程当前是否占有共享资源的每一个共享资源,
所述第二计数器,示出所述正在执行的线程的每一个线程占有所述共享资源的每一个共享资源的剩余周期数,
所述指令分组部,进行所述分组,以使所述多个指令缓冲器所存储的指令中的、使用当前被占有的共享资源的指令不包含在所述指令组中。
8.如权利要求7所述的多线程处理器,
所述指令分组部,将当前被占有的所述共享资源的识别信息以及占有该共享资源的线程的识别信息,通知给所述资源管理部,
所述资源管理部,按照与被通知的所述共享资源对应的所述第二计数器,更新与被通知的所述识别信息对应的线程的所述第一计数器。
9.如权利要求6所述的多线程处理器,
所述指令分组部,在所述多个指令缓冲器所存储的指令与由所述指令执行部正在执行的指令之间具有依赖关系的情况下,将所述指令缓冲器所存储的指令所属的所述正在执行的线程的识别信息以及所述正在执行的指令的剩余执行周期数,通知给所述资源管理部,
所述资源管理部,按照被通知的所述剩余执行周期数,更新与所述识别信息对应的线程的所述第一计数器。
10.如权利要求6所述的多线程处理器,
所述多线程处理器具备数据高速缓冲存储器,该数据高速缓冲存储器保持由所述指令执行部利用的数据,
所述指令执行部,在发生了数据高速缓存失败的情况下,将正在执行的线程的识别信息以及周期数通知给所述资源管理部,所述周期数是,将发生了所述数据高速缓存失败的数据,从位于所述多线程处理器的外部的主存储器传输给所述数据高速缓冲存储器所需要的周期数,
所述资源管理部,按照被通知的所述周期数,更新与所述识别信息对应的线程的所述第一计数器。
11.如权利要求6所述的多线程处理器,
所述多线程处理器具备指令高速缓冲存储器以及指令获取部,
所述指令获取部,从所述指令高速缓冲存储器获得指令,将获得的所述指令提供给所述指令缓冲器,
所述指令获取部,在获取指令时发生了指令高速缓存失败的情况下,将正在执行的线程的识别信息以及周期数通知给所述资源管理部,所述周期数是,将发生了所述指令高速缓存失败的指令,从位于所述多线程处理器的外部的主存储器传输给所述指令高速缓冲存储器所需要的周期数,
所述资源管理部,按照被通知的所述周期数,更新与所述识别信息对应的线程的所述第一计数器。
12.如权利要求6所述的多线程处理器,
所述指令执行部,在执行分支指令的情况下,将直到确定其分支目的地地址为止所需要的周期数以及该分支指令所属的线程的识别信息,通知给所述资源管理部,
所述资源管理部,按照被通知的所述周期数,更新与所述识别信息对应的线程的第一计数器。
13.如权利要求10或11所述的多线程处理器,
所述多线程处理器具备总线控制单元,
所述总线控制单元,与所述指令高速缓冲存储器、所述数据高速缓冲存储器、以及位于所述多线程处理器的外部的主存储器分别连接,
在所述指令高速缓冲存储器以及所述数据高速缓冲存储器发生了高速缓存失败时,在所述总线控制单元已经被占有的情况下,
所述总线控制单元,将示出当前的占有还要继续几周期的剩余占有周期数,通知给所述资源管理部,
所述资源管理部,按照被通知的所述剩余占有周期数,更新所述第一计数器。
14.如权利要求8至13的任一项所述的多线程处理器,
所述资源管理部,针对所述正在执行的线程的每一个线程,仅在比所述第一计数器示出的值大的暂停周期数被通知的情况下,以被通知的所述暂停周期数来重写该第一计数器示出的值。
15.如权利要求7所述的多线程处理器,
所述资源管理部,按照所述多线程处理器的每一个周期的工作,从所述第一计数器以及所述第二计数器示出的值中减去事先规定的特定的值。
16.如权利要求5所述的多线程处理器,
所述指令发行控制部还具备分支预测器,
所述分支预测器,在所述指令执行部完成分支指令的执行之前预测分支目的地地址,利用该预测地址执行所述分支指令,并且,将因所述分支目的地地址的预测不准而有可能发生的暂停周期数,通知给所述资源管理部,
所述资源管理部,在接受了所述通知的情况下,将所述第一计数器示出的值与被通知的暂停周期数相加。
17.一种多线程处理器,是以一个周期的工作来将多个指令组同时发行给指令执行部的同步多线程方式的多线程处理器,
所述多线程处理器具备指令发行控制装置,
所述指令发行控制装置具备:
资源管理部,管理暂停信息,该暂停信息示出正在执行的线程的每一个线程是否处于暂停;
线程选择部,选择所述正在执行的线程中的、未处于暂停的线程;以及
指令分组部,进行控制,以使得将属于被选择的所述线程的每一个线程的多个指令组同时发行给所述指令执行部。
18.一种指令发行控制方法,是多线程处理器的指令发行控制方法,
所述指令发行控制方法包括:
资源管理步骤,管理暂停信息,该暂停信息示出正在执行的线程的每一个线程是否处于暂停;
线程选择步骤,选择所述正在执行的线程中的、未处于暂停的线程;以及
指令发行控制步骤,进行控制,以使从被选择的所述线程中能够同时发行的指令被发行。
CN201180027800.7A 2010-06-11 2011-01-27 指令发行控制装置以及方法 Expired - Fee Related CN102934076B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2010134528A JP5548037B2 (ja) 2010-06-11 2010-06-11 命令発行制御装置及び方法
JP2010-134528 2010-06-11
PCT/JP2011/000432 WO2011155097A1 (ja) 2010-06-11 2011-01-27 命令発行制御装置及び方法

Publications (2)

Publication Number Publication Date
CN102934076A true CN102934076A (zh) 2013-02-13
CN102934076B CN102934076B (zh) 2015-07-22

Family

ID=45097720

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180027800.7A Expired - Fee Related CN102934076B (zh) 2010-06-11 2011-01-27 指令发行控制装置以及方法

Country Status (4)

Country Link
US (1) US9436464B2 (zh)
JP (1) JP5548037B2 (zh)
CN (1) CN102934076B (zh)
WO (1) WO2011155097A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104050215A (zh) * 2013-03-14 2014-09-17 三星电子株式会社 清除和重建相关性的系统和方法
CN104951283A (zh) * 2015-06-05 2015-09-30 中国航天科技集团公司第九研究院第七七一研究所 一种risc处理器的浮点处理单元集成电路及方法

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1813540A1 (en) 2006-01-30 2007-08-01 Impress Group B.V. Can end for a can and such can
GB2495959A (en) * 2011-10-26 2013-05-01 Imagination Tech Ltd Multi-threaded memory access processor
US8826216B2 (en) * 2012-06-18 2014-09-02 International Business Machines Corporation Token-based current control to mitigate current delivery limitations in integrated circuits
US8914764B2 (en) 2012-06-18 2014-12-16 International Business Machines Corporation Adaptive workload based optimizations coupled with a heterogeneous current-aware baseline design to mitigate current delivery limitations in integrated circuits
US8863068B2 (en) 2012-06-18 2014-10-14 International Business Machines Corporation Current-aware floorplanning to overcome current delivery limitations in integrated circuits
US8826203B2 (en) 2012-06-18 2014-09-02 International Business Machines Corporation Automating current-aware integrated circuit and package design and optimization
US9471310B2 (en) * 2012-11-26 2016-10-18 Nvidia Corporation Method, computer program product, and system for a multi-input bitwise logical operation
US9509804B2 (en) 2012-12-21 2016-11-29 Akami Technologies, Inc. Scalable content delivery network request handling mechanism to support a request processing layer
US9654579B2 (en) 2012-12-21 2017-05-16 Akamai Technologies, Inc. Scalable content delivery network request handling mechanism
CN103237049A (zh) * 2013-03-18 2013-08-07 北京易华录信息技术股份有限公司 一种文件传输方法及装置
CN104298552B (zh) * 2013-07-15 2018-06-19 华为技术有限公司 多线程处理器的线程取指调度方法、系统和多线程处理器
US10579389B2 (en) * 2015-11-02 2020-03-03 Arm Limited Fusion of instructions by delaying handling of a partial subset of a fusible group of instructions
US20170300361A1 (en) * 2016-04-15 2017-10-19 Intel Corporation Employing out of order queues for better gpu utilization
CN111930427B (zh) * 2020-08-17 2022-06-21 北京百度网讯科技有限公司 指令发射方法、装置、电子设备以及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5546593A (en) * 1992-05-18 1996-08-13 Matsushita Electric Industrial Co., Ltd. Multistream instruction processor able to reduce interlocks by having a wait state for an instruction stream
CN1801099A (zh) * 1999-12-09 2006-07-12 英特尔公司 进入和退出多线程处理器中多线程的方法和装置
CN101425006A (zh) * 2007-10-29 2009-05-06 松下电器产业株式会社 运算处理装置、处理器、程序转换装置以及程序

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0644089A (ja) * 1992-05-18 1994-02-18 Matsushita Electric Ind Co Ltd 情報処理装置
JPH06332700A (ja) * 1993-05-25 1994-12-02 Matsushita Electric Ind Co Ltd 情報処理装置
US5867725A (en) * 1996-03-21 1999-02-02 International Business Machines Corporation Concurrent multitasking in a uniprocessor
EP1291765B1 (en) 1996-08-27 2009-12-30 Panasonic Corporation Multithreaded processor for processing multiple instruction streams independently of each other by flexibly controlling throughput in each instruction stream
JP3760035B2 (ja) * 1996-08-27 2006-03-29 松下電器産業株式会社 複数の命令流を独立に処理し、命令流単位に処理性能を柔軟に制御するマルチスレッドプロセッサ
US5985042A (en) * 1997-05-28 1999-11-16 Fiedler; John Computer mouse cleaning device
US5913049A (en) * 1997-07-31 1999-06-15 Texas Instruments Incorporated Multi-stream complex instruction set microprocessor
US6477562B2 (en) 1998-12-16 2002-11-05 Clearwater Networks, Inc. Prioritized instruction scheduling for multi-streaming processors
JP2001084143A (ja) * 1999-09-10 2001-03-30 Matsushita Electric Ind Co Ltd 情報処理装置
EP1660993B1 (en) 2003-08-28 2008-11-19 MIPS Technologies, Inc. Integrated mechanism for suspension and deallocation of computational threads of execution in a processor
WO2005022385A1 (en) 2003-08-28 2005-03-10 Mips Technologies, Inc. Mechanisms for dynamic configuration of virtual processor resources
WO2006129767A1 (ja) 2005-06-02 2006-12-07 Keio University マルチスレッド中央演算装置および同時マルチスレッディング制御方法
JP2008123045A (ja) 2006-11-08 2008-05-29 Matsushita Electric Ind Co Ltd プロセッサ

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5546593A (en) * 1992-05-18 1996-08-13 Matsushita Electric Industrial Co., Ltd. Multistream instruction processor able to reduce interlocks by having a wait state for an instruction stream
CN1801099A (zh) * 1999-12-09 2006-07-12 英特尔公司 进入和退出多线程处理器中多线程的方法和装置
CN101425006A (zh) * 2007-10-29 2009-05-06 松下电器产业株式会社 运算处理装置、处理器、程序转换装置以及程序

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104050215A (zh) * 2013-03-14 2014-09-17 三星电子株式会社 清除和重建相关性的系统和方法
CN104050215B (zh) * 2013-03-14 2019-04-09 三星电子株式会社 清除和重建相关性的系统和方法
US10552157B2 (en) 2013-03-14 2020-02-04 Samsung Electronics Co., Ltd. System and method to clear and rebuild dependencies
CN104951283A (zh) * 2015-06-05 2015-09-30 中国航天科技集团公司第九研究院第七七一研究所 一种risc处理器的浮点处理单元集成电路及方法
CN104951283B (zh) * 2015-06-05 2017-05-31 中国航天科技集团公司第九研究院第七七一研究所 一种risc处理器的浮点处理单元集成电路及方法

Also Published As

Publication number Publication date
CN102934076B (zh) 2015-07-22
US9436464B2 (en) 2016-09-06
US20130097409A1 (en) 2013-04-18
WO2011155097A1 (ja) 2011-12-15
JP5548037B2 (ja) 2014-07-16
JP2011258147A (ja) 2011-12-22

Similar Documents

Publication Publication Date Title
CN102934076B (zh) 指令发行控制装置以及方法
JP5413001B2 (ja) キャッシュメモリ
CN102640124B (zh) 用于数据流的储存感知预取的计算系统、方法以及预取单元
US8521982B2 (en) Load request scheduling in a cache hierarchy
US9755994B2 (en) Mechanism for tracking age of common resource requests within a resource management subsystem
US8732711B2 (en) Two-level scheduler for multi-threaded processing
TWI509519B (zh) 維持公平和秩序的資源管理子系統
US9304920B2 (en) System and method for providing cache-aware lightweight producer consumer queues
CN106990941A (zh) 使用寄存器重命名处理移动指令
US10095548B2 (en) Mechanism for waking common resource requests within a resource management subsystem
US7603544B2 (en) Dynamic allocation of a buffer across multiple clients in multi-threaded processor without performing a complete flush of data associated with allocation
CN103547993A (zh) 通过使用由可分割引擎实例化的虚拟核来执行指令序列代码块
WO2006038991A2 (en) System, apparatus and method for managing predictions of various access types to a memory associated with cache
US10019283B2 (en) Predicting a context portion to move between a context buffer and registers based on context portions previously used by at least one other thread
KR100404672B1 (ko) 슈퍼스칼라프로세서의로드버퍼와저장버퍼우선순위동적전환방법및장치
US10884756B2 (en) System and method for variable lane architecture
KR20150076187A (ko) 메시지 시그널 인터럽트의 통신
US20160117118A1 (en) System and methods for processor-based memory scheduling
US10585701B2 (en) Dynamically allocating storage elements to provide registers for processing thread groups
US20080276045A1 (en) Apparatus and Method for Dynamic Cache Management
US20080022075A1 (en) Systems and Methods for Processing Buffer Data Retirement Conditions
US20070250668A1 (en) Data processing system, processor and method of data processing that support memory access according to diverse memory models
CN101847128A (zh) 管理tlb的方法和装置
JP2009252133A (ja) ベクトル処理装置及びベクトル処理方法
CN108475197B (zh) 用于嵌套抢占的高速缓存结构

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: SUOSI FUTURE CO., LTD.

Free format text: FORMER OWNER: MATSUSHITA ELECTRIC INDUSTRIAL CO, LTD.

Effective date: 20150715

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150715

Address after: Kanagawa

Patentee after: Co., Ltd. Suo Si future

Address before: Osaka Japan

Patentee before: Matsushita Electric Industrial Co., Ltd.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20150722

Termination date: 20210127