CN101715576A - 信息处理装置 - Google Patents
信息处理装置 Download PDFInfo
- Publication number
- CN101715576A CN101715576A CN200780053366A CN200780053366A CN101715576A CN 101715576 A CN101715576 A CN 101715576A CN 200780053366 A CN200780053366 A CN 200780053366A CN 200780053366 A CN200780053366 A CN 200780053366A CN 101715576 A CN101715576 A CN 101715576A
- Authority
- CN
- China
- Prior art keywords
- subclauses
- clauses
- branch
- instruction
- thread
- 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
Links
- 230000003750 conditioning effect Effects 0.000 claims description 23
- 230000009471 action Effects 0.000 description 14
- 238000000034 method Methods 0.000 description 10
- 238000005187 foaming Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000007599 discharging Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000005587 bubbling Effects 0.000 description 2
- 239000012467 final product Substances 0.000 description 2
- 238000009434 installation Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 102100023817 26S proteasome complex subunit SEM1 Human genes 0.000 description 1
- 101000684297 Homo sapiens 26S proteasome complex subunit SEM1 Proteins 0.000 description 1
- 101000873438 Homo sapiens Putative protein SEM1, isoform 2 Proteins 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 238000004134 energy conservation Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000002045 lasting effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000004043 responsiveness Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
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)
- Multi Processors (AREA)
Abstract
一种同步多线程(SMT)方式的信息处理装置,例如在并行执行2个线程(指令串)时,将指令控制装置的分支保留站的条目分成指令串(0)用的条目、指令串(1)用的条目来使用。通过切换选择电路来分别将指令串(0)的数据和指令串(1)的数据分配给条目。另外,当从分支保留站中释放条目时,用选择电路切换指令串而释放条目,以使得在1个指令串内的分支指令的释放有序。
Description
技术领域
本发明涉及信息处理装置,尤其涉及使用无序处理进行指令控制、并且进行基于称为SMT(Simultaneous Multi Thread,同步多线程)的多线程处理方式的指令控制的信息处理装置。
背景技术
IT技术高速发展,人们意识到服务器等的通用计算机已作为社会基础设施的一部分,对计算机的性能提高和节能运用的市场要求越来越大。对于计算机内的CPU(中央运算处理装置)而言,该要求也是同样的。
一直以来,将指令处理从有序方式改进为无序方式,或进行由半导体技术的进步带来的指令处理电路的改进和动作速度的高频化,由此实现了CPU的性能提高。但是,由于伴随着半导体技术的精细化的进步,针对动作功耗的必要条件愈发严格、性能提高相对于增加的晶体管数量的比的停滞等,使用传统延伸的方法很难解决问题。
其中,采取了设置CPU内的多个核心数,或可在1个核心内处理多个指令线程等方法。作为在核心内处理多个指令线程的方法,存在VMT(Vertical Multi Thread,垂直多线程)、SMT(Simultaneous Multi Thread,同步多线程)的方式。
VMT具有通过追加比较少的晶体管数即可处理多个指令线程的优点,但是,不能同时处理多个线程,因此当发生线程切换时,会发生不利情况。
SMT虽然不会像VMT那样发生线程切换,但是晶体管数量的增加较大,并且有时线程之间的影响明显,即:当具有为了减少晶体管数量而在线程之间共享的电路时,一个线程的处理的延迟会影响其它线程的处理。尤其是,对于SMT而言,晶体管数量的增大是不可避免的,如何高效地使用增大的晶体管数量将成为课题。
在专利文献1中记载有与多线程处理器中的状态机有关的技术。在专利文献2中,记载有对应于多线程的存储器。在专利文献3以及4中,公开了在多线程计算机中不能对存在缺陷的线程进行访问的技术。
专利文献1:日本特表2003-516570号公报
专利文献2:日本特开平10-97461号公报
专利文献3:日本特开2002-108630号公报
专利文献4:日本特开2002-123402号公报
发明内容
本发明的课题是提供在信息处理装置中尤其是SMT方式的信息处理装置中,能够有效地使用硬件资源的指令控制装置。
本发明第1方面的指令控制装置是能够执行单一线程或同时执行多个线程的信息处理装置的指令控制装置,其特征在于,该指令控制装置具有:线程个数检测单元,其检测正在执行的线程的个数;以及分支保留站单元,其根据正在执行的线程的个数,将条目分成线程个数个组,使各个条目组与各个线程对应,针对每个线程独立地无序地进行存储在条目中的分支指令的处理,选择条目组进行条目的释放,使得在各个线程内条目的释放是有序的。
本发明第2方面的指令控制装置是能够执行单一线程或同时执行多个线程的信息处理装置的指令控制装置,其特征在于,该指令控制装置具有:线程个数检测单元,其检测正在执行的线程的个数;以及延迟指令堆栈单元,其根据正在执行的线程的个数,将条目分成线程个数个组,使各个条目组与各个线程对应,针对每个线程独立地无序地进行存储在条目中的分支延迟指令的处理,选择条目组进行条目的释放,使得在各个线程内条目的释放是有序的。
本发明第3方面的指令控制装置是能够执行单一线程或同时执行多个线程的信息处理装置的指令控制装置,其特征在于,该指令控制装置具有:线程个数检测单元,其检测正在执行的线程的个数;以及分支目的地地址缓存器单元,其根据正在执行的线程的个数,将条目分成线程个数个组,使各个条目组与各个线程对应,针对每个线程独立地存储分支目的地地址,选择条目组进行条目的释放。
附图说明
图1是本发明的实施方式的指令控制装置的整体的框图。
图2是对一般的分支保留站的动作进行说明的图。
图3是对基于本发明的实施方式的分支保留站的动作进行说明的图(其1)。
图4是对基于本发明的实施方式的分支保留站的动作进行说明的图(其2)。
图5是对基于本发明的实施方式的分支保留站的动作进行说明的图(其3)。
图6是对基于本发明的实施方式的分支保留站的动作进行说明的图(其4)。
图7是说明延迟指令堆栈的图。
图8是说明分支目的地地址缓存器的动作图(其1)。
图9是说明分支目的地地址缓存器的动作图(其2)。
图10是对RSBR的使用条目数的控制进行说明的图(其1)。
图11是对RSBR的使用条目数的控制进行说明的图(其2)。
图12是对RSBR的使用条目数的控制进行说明的图(其3)。
图13是对RSBR的使用条目数的控制进行说明的图(其4)。
图14示出生成优先级信号的电路的门级图(其1)。
图15示出生成优先级信号的电路的门级图(其2)。
图16示出生成优先级信号的电路的门级图(其3)。
图17是示出指令串为n个时的RSBR的结构示例的图。
具体实施方式
在本发明的实施方式中,考虑为了分支指令控制而具有分支保留站且既能够在核心内执行单一线程也能够同时执行多个线程的信息处理装置。在分支保留站中,对投入到执行流水线的分支指令进行控制,同时分别对多个分支指令进行控制。对于分支指令,进行1次指令控制需要消耗分支保留站的1个条目。可同时控制的分支指令数取决于分支保留站的条目数。
在本发明的实施方式中,当执行单一线程时,将分支保留站的全部条目分配为分支控制用,当执行多个线程时,将全部条目分配给各个线程。在分支保留站内,对于单一线程和多个线程都可以分配全部的条目,可以不剩余地使用安装的资源。另外,在执行多个线程时,独立地控制各个线程的分支指令,使得即使在用于在指令串之间进行协调的控制电路中也不产生性能影响。与多线程处理不同,能够以事件发生为起因来对在分支保留站内使用的条目数施加限制。该控制电路使用与用于多线程的控制电路共同的电路。
在本实施方式的信息处理装置中,设为采用SPARC-V9架构,并且指令控制装置在无序处理方面采用称为SMT的同步多线程方式。下面,将执行多线程时的最大线程数设为2个线程,来进行说明,但是在大于等于3个线程的情况下,也可用相同的电路实现。另外,保留站等的条目数也可以不是下面的实施方式中记载的个数,而是任意的个数。
图1是本发明的实施方式的指令控制装置的整体的框图。
指令控制装置具有分支预测电路(branch history:BRHIS)10作为分支预测机构,并具有分支指令控制电路(branch control:BRCTL)11作为用于对分支指令进行控制的电路。分支指令控制电路11具有用于对分支指令进行控制的分支保留站(reservation station for branch:RSBR)、以及用于对分支延迟指令(instruction in the delay slot或delay instruction)进行控制的延迟指令堆栈(delay slot stack:DSS)。在分支指令控制电路11中,进行下述处理,即:分支判定、分支目的地地址的管理、分支预测的成败判定、分支预测失败时的指令重取请求、分支预测失败时的分支延迟指令重新投入到指令解码器12等。分支目的地地址的管理被分为在分支指令控制电路11内的控制、以及脱离分支指令控制电路11的控制后直到分支指令完成为止的期间内的控制。为了进行后者的控制而具有分支目的地地址缓存器(target address buffer)13。
分支目的地地址缓存器13由多个条目构成,所管理的是完成了分支判定的指令进行分支时的分支目的地地址。除此以外,在指令控制装置中还设有:进行分支目的地地址计算的指令相对分支地址生成电路14、运算器单元15、指令取得控制电路16、指令缓存器17、指令解码器12、指令提交控制电路18、处理机检查电路19以及高速缓存部20。
来自指令取得控制电路16的指令取得指令被赋予给高速缓存部20,在所取得的指令存储在指令存储器17中之后,在指令解码器12中对所取得的指令进行解码。指令相对分支地址生成电路14生成相对分支指令的分支目的地地址。当在指令解码器12中解码的指令是分支指令时,分支指令被登记到分支指令控制电路11中,并被执行。
运算单元15对分支指令的分支目的地地址进行运算。分支预测电路10对位于分支指令控制电路11中的分支指令进行指令的分支目的地的预测,将所预测出的分支目的地地址赋予给指令取得控制电路16,使其执行分支目的地指令的预取(Prefetch)。
指令提交控制电路18对所解码的指令中的等待执行完成的指令进行管理。分支目的地地址缓存器13对确定的分支指令的分支目的地地址进行管理。程序计数器21以及次程序计数器22是对执行中的指令的地址(或地址)序号以及下一个指令的地址(或地址)序号进行计数的计数器。这些计数器的计数的触发是由指令提交控制电路18赋予的。处理机检查电路19对在指令缓存器17、指令解码器12、分支指令控制电路11、运算单元15、指令提交控制电路18中并行执行的指令串的个数进行管理,并向它们指示当前的指令串的个数。当分支地址缓存器13的条目已“满”时,TGT_BUFF_BUSY输入到分支指令控制电路11。RSBR_PLID将下一个要处理的指令语句的ID通知给分支指令控制电路11。当需要跳转到分支目的地地址时,分支目的地地址缓存器13对次程序计数器22进行更新。
图2是对一般的分支保留站的动作进行说明的图。
在图2中,示出了7个分支保留站(RSBR)。对RSBR0至RSBR6按照由旧到新的顺序设置指令。即对RSBR0设置最旧的指令。在指令解码周期中新的条目被设置在RSBR内。新的条目生成最多可生成2个指令。对于RSBR内的条目,有序地进行控制,并进行分支判定、分支预测的成败判定/指令再次取得请求的控制。控制结束后的条目释放是有序地进行的,按照由旧到新的顺序最多可释放2个指令。并且,指令再取得按照由旧到新的顺序最多可取得3个指令。在图2中,用起泡方式对条目进行管理,仅有与释放数量相等个数的条目进行起泡。起泡顺序为RSBR6->RSBR5->RSBR4->RSBR3->RSBR2->RSBR1->RSBR0。因而,当在RSBR2后面存在条目时,有时RSBR0、RSBR1的VALID(有效)保持原样。条目数据可由起泡处理进行重写。在指令解码周期(D周期)中,新的条目被存储在保留站的条目中。当分支预测失败时,向保留站发行指令重取请求,当在指令提交控制电路18中指令的完成处理结束时,进行条目的释放。
1)关于对分支指令控制电路的指令投入以及分支指令控制电路上的条目生成
当指令数据从指令缓存器17供给到指令解码器(以下称为解码器)12时,由解码器12对指令进行解码,判断从指令缓存器17供给的指令种类。当在从指令缓存器17供给的指令中发现分支指令时,解码器12将分支指令的控制分配给分支指令控制电路11。指令提交控制电路18对投入到执行流水线的全部指令进行控制直至指令完成。在指令提交控制电路18中,进行指令顺序保障以及寄存器更新控制。虽然解码器12最多同时可对4个指令进行解码,但在分支指令控制电路11中,由于电路的限制,最多投入2个分支指令。从解码器12向分支指令控制电路11发送控制所需的数据、标签,并且发送+D_RSBR_USE、+D_IID[5:0]、+D_STRAND_ID以及+D_REL这些信号。针对1个分支指令发送1组这些信号。
这里,+D_RSBR_USE是表示投入到执行流水线的指令为使用RSBR的指令的信号。+D_IID是表示投入到执行流水线的指令的指令顺序的信号。下面,IID称作指令ID。+D_STRAND_ID是表示投入到执行流水线的指令的指令串ID的信号。+D_REL是当指令投入到执行流水线时变成1的信号。
图3~图6是对基于本发明的实施方式的分支保留站的动作进行说明的图。
在图3所示的示例中,RSBR由总共14个条目构成。按照每7个条目构成一组的方式,将这些条目划分成2组。这里,第1组设为RSBRL(RSBR0、RSBR1、...、RSBR6,指令串0),第2组设为RSBRH(RSBR10、RSBR11、...、RSBR16,指令串1)。
从处理机取得电路19向保留站发送表示是单一线程还是多线程的状态信号,以判断由执行流水线所执行的线程的个数。这里,线程个数是2个线程,分别区分为指令串0、1。该“0”、“1”是指令串ID。对指令串的区分命名只是使得在指令控制装置内容易判断。
接着,对多线程执行时进行说明。当从解码器投入指令时变成+D_REL=1,当该指令是分支指令时,同时变成+D_RSBR_USE=1。当投入的分支指令是指令串0时,向RSBRL侧分配条目,当投入的分支指令是指令串1时,向RSBRH侧分配条目,在空的条目处生成新的条目。该指令串的分配也可以是相反的。但是,同一组内的条目必须全部是同一指令串。
按照解码顺序对各组内的条目进行管理,例如,对于RSBRL而言,从RSBR0按照RSBR1、2、3、4、5、6的顺序生成条目。当生成了新的条目时,表示该条目当前有效(使用中)的信号变成+RSBR_VALID=1。在条目中登记有控制所需的数据和标签,并且还登记有+RSBR_IID[5:0]、+RSBR_STRAND_ID。这里,+RSBR_VALID是表示RSBR条目有效的信号。+RSBR_IID是表示登记的条目(分支指令)的指令ID的信号。+RSBR_STRAND_ID是表示登记的条目(分支指令)的指令串ID的信号。保持这些信号直至分支指令控制电路的控制结束为止。
当在各个组内不再有空条目时,从分支指令控制电路向解码器发送信号+RSBR_PLID=1,以停止该组所属的指令串的新指令投入。当发送了该信号时,解码器暂时停止该指令串的指令解码。当对指令串0的分支指令进行管理的RSBRL成为“满”状态时,变成+RSBR_PLID_STRAND_0=1,当对指令串1的分支指令进行管理的RSBRH成为“满”状态时,变成+RSBR_PLID_STRAND_1=1。针对每个指令串发送该信号,当对于全部指令串而言信号变成1时,解码器暂时停止。
当分支指令控制电路的分支指令控制结束时,释放结束的条目,可生成空条目,因此变成+RSBR_PLID=0,重新开始解码。+RSBR_PLID是表示在分支指令控制电路内没有空条目的信号。+RSBR_PLID_STRAND_0是表示指令串0的RSBR已“满”的信号,+RSBR_PLID_STRAND_1是表示指令串1的RSBR已“满”的信号。
参照图5对单一线程执行时进行说明。首先,RSBRL、RSBRH都处于没有条目的状态。当从解码器投入分支指令时,新的条目分配给RSBRL(也可以是RSBRH)。按照RSBR0、1、2、3、4、5、6的顺序生成条目,当RSBRL成为“满”状态时,接着,新的条目分配给RSBRH。此时,即使在从RSBRL到RSBRH跨越组来生成条目的情况下,解码器也不停止。
当在RSBRH中按照RSBR10、11、12、13、14、15、16的顺序生成条目,成为“满”状态时,向解码器发送+RSBR_PLID=1。与多线程时相同,发送的信号是针对每个指令串的,在指令串0由单一线程执行时,变成+RSBR_PLID_STRAND_0=1(相反的情况也是有可能的)。持续+RSBR_PLID=1直至不存在RSBRL的条目为止。当在RSBRL中不存在条目时,变成+RSBR_PLID=0,重新开始解码,按照RSBR0、1、2、3、4、5、6的顺序生成条目。对于单一线程而言,是该内容的反复,按照RSBRL->RSBRH->RSBRL->RSBRH的顺序生成条目。登记的条目数据无论是在多线程时还是单一线程时都是相同的。
除了用于控制分支指令的RSBR以外,分支指令控制电路还具有用于控制分支延迟指令的DSS(延迟指令堆栈:Delay Slot Stack)。
图7是说明延迟指令堆栈的图
DSS也是由与RSBR相同个数的条目构成,即对于本实施方式而言,由总共14个条目构成。这样,保留站RSBR与DSS 1对1地对应。按照每7个条目构成一组的方式,将DSS的条目划分成2组。这里,第1组设为DSSL(DSS0、DSS1、...、DSS6),第2组设为DSSH(DSS10、DSS11、...、DSS16)。从解码器向分支指令控制电路发送控制所需的数据和标签,并且发送+D_DELAY_SLOT、+D_STRAND_ID以及+D_REL这些信号。针对1个分支指令发送1组这些信号。这里,+D_DELAY_SLOT表示投入到执行流水线中的指令是使用DSS的指令。
分支延迟指令是指在分支指令的下一个投入的指令,其IID必然是[分支指令IID]+1。通过与RSBR的情况相同的方法生成新的条目,但是不会像RSBR那样进行用于停止解码的控制。
分支指令、分支延迟指令与指令串无关,只要遵循同一指令串上的指令顺序,怎样投入指令都可以。
2)关于分支指令控制电路的条目清除
当该分支指令的分支控制结束时,分支指令控制电路的条目从条目中释放出来。分支控制是指分支判定/分支目的地地址确定/分支预测的成败判定/指令重取请求和其地址确定的各个控制。从条目中释放出来是指该分支指令脱离分支指令控制电路的控制,此时,条目被清除。作为清除条目的条件,除此之外,还有中断处理、先行指令发出指令重取请求时等。
对分支控制结束时的条目释放进行说明。在分支指令控制电路中,单独地进行各个条目的分支控制。对于条目的释放,在分支指令控制电路中必须遵循同一指令串上的分支指令顺序。在指令串之间,完全没有这样的限制。在本实施方式中,在同一指令串上,来自分支指令控制电路的条目释放最多可同时释放2个指令。虽然也可同时释放多个指令串的条目,但是由于安装布线量和晶体管数量增大,因此在本实施方式中没有进行。
参照图4对多线程执行时进行说明。如1)所述,分支指令控制电路按照解码顺序生成并管理条目,因此,在条目中,始终保障了指令顺序。因而,如果是RSBRL,则从RSBR0、RSBR1开始释放条目,如果是RSBRH,则从RSBR10、RSBR11开始释放条目。在图4的示例中,为了不同时释放不同指令串的条目,始终需要决定从哪个组释放条目。该处理针对RSBR的每个组决定其优先权,与向哪个组分配哪个线程完全无关。
这里,假设在RSBRL中RSBR0的释放条件成立。当释放条件成立时,变成+RSBR0_COMPLETE_OR=1。此时,当在RSBRH中RSBR10的释放条件不成立时,始终选择RSBRL侧,变成+RSBR10_COMPLETE_PRIORITY=0(priority信号为0)。该信号表示RSBRL、RSBRH 哪个组具有条目释放的优先权,+RSBR10_COMPLETE_PRIORITY=0表示RSBRL具有优先权,+RSBR10_COMPLETE_PRIORITY=1表示RSBRH具有优先权。这里,+RSBR0_COMPLETE_OR是表示RSBR条目的释放条件成立的信号。该priority信号输入到2个选择电路中,由此,选择从RSBRL、RSBRH的哪一个中释放条目。从选择电路0输出RSBR0或RSBR10的条目作为BR0_COMP,从选择电路1输出RSBR1或RSBR11的条目作为BR1_COMP。
条目的释放条件不成立是指下述任意一个情况,即:分支判定没有结束、分支目的地地址没有确定、需要指令重取时不能发出取得请求、没有发行与条目对应的分支延迟指令、不存在条目、在分支条目的分支目的地地址缓存器中不存在空隙。当+RSBR0_COMPLETE_OR=1与+RSBR10_COMPLETE_OR=1同时成立时,如果在前一个周期中没有从RSBRL中释放条目,则变成+RSBR10_COMPLETE_PRIORITY=0,优先权交付给RSBRL。在该情况下,在下一个周期中必然变成+RSBR10_COMPLETE_PRIORITY=1,优先权交付给RSBRH。在RSBRL、RSBRH的释放条件同时成立的期间内,优先权按照RSBRL、RSBRH、RSBRL、RSBRH...的顺序移动。当RSBRL的释放条件不成立或在前一个周期中条目已从RSBRL中释放时,RSBRH能够获得优先权。在除此以外的情况下,RSBRL具有优先权。
当+RSBR_COMPLETE_OR=1、+RSBR_COMPLETE_PRIORITY=1时,能够释放条目。在释放条目时,必须遵循同一指令串上的分支指令顺序,因此RSBR1只与RSBR0同时进行条目的释放,RSBR11只与RSBR10同时进行条目的释放。释放条目的同时,分支指令控制电路清除该条目。条目的清除是指使+RSBR_VALID从1变成0。例如,当同时对RSBR0与RSBR1进行释放时,+RSBR0_VALID从1变成0,+RSBR1_VALID从1变成0。
在本实施方式中,用起泡方式对条目进行管理,仅有与释放的条目数量相等数量的条目进行起泡。起泡顺序为RSBR6->RSBR5->RSBR4->RSBR3->RSBR2->RSBR 1->RSBR0。RSBRH的情况也是相同的。因而,当在RSBR2后面存在条目时,有时RSBR0、RSBR1的VALID(有效)保持原样。条目数据可由起泡处理进行重写。从分支指令控制电路中释放条目,并且将该信息通知给指令提交控制电路。由指令提交控制电路控制从分支指令控制电路中释放的分支指令。
参照图6,对单一线程时的处理进行说明。对于条目的释放,在分支指令控制电路中必须遵循同一指令串上的分支指令顺序,这一点是相同的。虽然在单一线程时不发生指令串选择,但如1)所述那样,有时在RSBRL、RSBRH双方中存在条目。在同一组内保障了指令顺序,但是需要判断RSBRL、RSBRH的哪一个是先行指令组。为了对其进行判断,使用上述的+RSBR10_COMPLETE_PRIORITY(priority信号)。该priority信号输入到2个选择电路中,由此,选择从RSBRL、RSBRH的哪一个中释放条目。从选择电路0输出RSBR0或RSBR10的条目作为BR0_COMP,从选择电路1输出RSBR1或RSBR11的条目作为BR1_COMP。
当在RSBRL中存在条目、在RSBRH中不存在条目时,设为+RSBR10_COMPLETE_PRIORITY=0。另一方面,当在RSBRH中存在条目、在RSBRL中不存在条目时,设为+RSBR10_COMPLETE_PRIORITY=1。当在RSBRL、RSBRH双方中存在条目时,指定先行指令组。例如,假设在RSBRL、RSBRH双方中存在条目,且RSBRL是先行指令组。由于RSBRL是先行指令组,因此,变成+RSBR10_COMPLETE_PRIORITY=0。当RSBRL的最后的条目被释放时,变成+RSBR10_COMPLETE_PRIORITY=1。然后是反复以上过程,优先权按照RSBRL、RSBRH、RSBRL、RSBRH...的顺序移动。当对立的组的条目不存在时,发生优先权的移动。对于其它动作而言,在单一线程时和多个线程时是同一动作。
在上述实施方式中,将+RSBR10_COMPLETE_PRIORITY这一个信号作为意味着释放的优先权的信号进行了说明,但是在指令控制装置中,同时执行大于等于3个线程时,根据执行该信号的线程数来增加信号数即可。具体而言,在本实施方式中,+RSBR10_COMPLETE_PRIORITY设计为指针那样的概念,因此对于2个线程的情况而言1位就足够了。如果线程个数是3个线程或4个线程,则追加1位后即总共有2位的话,就能够进行设计,设为[1:0]形式,且00表示线程0、01表示线程1、10表示线程2、11表示线程3即可。
3)关于分支目的地地址的管理
对于分支指令,分支目的地地址的计算方法可分为2种。即:指令相对分支,其根据分支指令地址来计算由操作码(Operation code)指定的指令个数的地址,作为分支目的地地址;以及寄存器相对分支,其参照由操作码指定的寄存器来计算分支目的地地址。在本实施方式中,指令相对分支是用指令相对分支地址生成电路来计算分支目的地地址的,寄存器相对分支是用运算单元来计算分支目的地地址的。指令相对分支在解码周期内计算地址,当从解码器投入分支指令时,同时分支目的地地址被交付给分支指令控制电路。当此时正在进行分支预测时,对分支预测地址与计算出的分支目的地地址进行比较,将其结果通知给分支指令控制电路。寄存器相对分支在解码后的运算周期内进行计算,分支目的地地址被交付给分支指令控制电路。当正在进行分支预测时,由分支指令控制电路对分支预测地址与计算出的分支目的地地址进行比较。在分支指令处于分支指令控制电路控制下的期间内,针对每个条目将分支目的地地址作为条目数据进行管理。
在分支指令控制结束而释放条目的同时,分支目的地地址被交付给分支目的地地址缓存器。交付的地址只是在分支判定后,进行分支的指令的分支目的地地址。
图8以及图9是说明分支目的地地址缓存器的动作图。
在本实施方式中,为了节约安装布线量、晶体管数量,交付给分支目的地地址的数据是1个指令的数据。除了分支目的地地址以外,还有+COMPLETE_RSBR_IID[5:0]、+COMPLETE_RSBR_STRAND_ID被交付给分支目的地地址缓存器。这里,+COMPLETE_RSBR_IID是表示交付给分支目的地地址缓存器的地址的指令ID的信号。+COMPLETE_RSBR_STRAND_ID是表示交付给分支目的地地址缓存器的地址的指令串ID的信号。
当分支指令从分支指令控制电路释放后,分支目的地地址缓存器对分支目的地地址进行管理,直至指令提交(指令完成),PC(programcounter,程序计数器)、nPC(next program counter,次程序计数器)被更新为止。当提交分支的指令时,从指令提交控制电路发送+LOAD_TARGET_TO_NPC、+COMMIT_STRAND_ID。分支目的地地址缓存器根据该信息进行nPC更新和条目清除。作为清除条目的条件,除此以外还有基于先行指令的中断处理等。在本实施方式中,对于基于分支的分支指令的nPC更新,在1个周期内仅进行1个指令串的1个指令的nPC更新。这里,+LOAD_TARGET_TO_NPC是表示分支的指令进行提交、分支目的地地址缓存器对nPC的更新的信号。+COMMIT_STRAND_ID表示提交的指令的指令串ID。
当分支目的地地址缓存器变成“满”状态时,变成+RSBR_TGT_BUFF_BUSY=1,从分支指令控制电路不再释放分支的指令。虽然释放不进行分支的指令,但是如2)所述那样,存在下述限制,即:对于条目的释放,在分支指令控制电路中必须遵循同一指令串上的分支指令顺序,因此终究有可能暂时停止释放处理。分支目的地地址缓存器变成“满”状态是由进行分支的指令的先行指令的提交处理滞后带来的影响。这里,+RSBR_TGT_BUFF_BUSY是表示分支目的地地址缓存器中不存在空条目的信号。
分支目的地地址缓存器由总共4个条目构成,分别为TGT_BUFF_0、TGT_BUFF_1、TGT_BUFF_2、TGT_BUFF_3。分支目的地地址缓存器也与RSBR等相同,用起泡方式将条目分为2组(TGT_BUFF_0、1和TGT_BUFF_2、3)。
在多个指令串时(图8),将指令串0的分支目的地地址分配给TGT_BUFF_0、1,将指令串1的分支目的地地址分配给TGT_BUFF_2、3,起泡是按照TGT_BUFF_1->TGT_BUFF_0、TGT_BUFF_3->TGT_BUFF_2的顺序。次程序计数器(nPC)根据各个指令串而设置,当输入了LOAD_TARGET_TO_NPC信号时,TGT_BUFF_0的地址用于更新指令串0用的nPC,TGT_BUFF_2的地址用于更新指令串1用的nPC。
在单一指令串时(图9),将分支目的地地址分配给TGT_BUFF_0、1、2、3,起泡是按照TGT_BUFF_3->TGT_BUFF_2->TGT_BUFF_1->TGT_BUFF_0的顺序。次程序计数器(nPC)针对各个指令串而设置,但是,在单一指令串时不使用指令串1用的nPC。当输入了LOAD_TARGET_TO_NPC信号时,TGT_BUFF_0的地址用于更新指令串0用的nPC。
以上是多线程时和单线程时的条目控制方法。此外,还可对事件发生时使用的条目个数施加限制。
具体而言,可对RSBR、DSS、TGT_BUFF的条目个数施加限制。RSBR、DSS能够改变使+PLID_RSBR设为1的条目“满”状态的条件,TGT_BUFF能够改变使+RSBR_TGT_BUFF_BUSY设为1的条目“满”状态的条件。通常,为了确保指令处理装置的性能,是以用尽全部条目为前提的,但是在特定条件下,能够使用于期望减少使用的条目个数的情况。无论是什么样的事件都可以,作为示例,可设想期望减少性能时或减少功耗时等。
图10~图13是对RSBR的使用条目数进行说明的图。
图10是指令串为2个且分别将RSBR的使用条目数限定为4个的图。指令串(0)1使用RSBR0~RSBR3,指令串(1)0使用RSBR10~RSBR13。RSBR4~RSBR6和RSBR14~RSBR16是未使用的条目。图11是使用RSBR的全部条目时的图。RSBR0~RSBR6由指令串0(1)使用,RSBR10~RSBR16由指令串1(0)使用。图12是指令串为1个且分别将RSBR的使用条目数限定为7个时的图。使用了RSBR0~RSBR6,而未使用RSBR10~RSBR16。图13表示指令串为1个且没有限定RSBR的使用条目数的情况。使用全部的14个条目。
图14~图16示出生成优先级信号的电路的门级图。
这些电路是设置在分支指令控制电路11内的电路。指令串为2个时的电路(图14、图15)和指令串为1个时的电路(图16)是并列地设置的,根据指令串的个数,其中的某一个进行动作。
图14、图15是指令串为2个的情况,图16是指令串为1个的情况。
下面是在图14~图16中出现的信号名及其说明。
+RSBR0_VALID:表示RSBRO的条目有效。
+RSBR0_RESLOVED:表示RSBR0的分支判定已确定。
+RSBR0_TAV:表示RSBR0的分支目的地地址已确定。
+TWO_STRAND_MODE:是来自处理机检查电路的指示信号,表示执行流水线正在执行2个线程(执行多个线程)。
+RSBR0_TAKEN:表示RSBR0的分支判定已确定,进行分支。
+RSBR0_TGT_BUFF_BUSY:表示在RSBRO所使用的分支目的地地址缓存器中不存在空条目。
+RSBR0_COMPLETE:表示发生RSBR0的条目释放
+RESET_RSBR0_VALID:表示必须复位RSBR0的条目。复位条件是执行流水线清除指示(处理机检查电路进行指示)、条目释放。关于RSBR10的信号也是相同的。
并且,RSBR后面的数字表示RSBR的条目的序号。因此,RSBR0_VALID是与RSBR0有关的信号,RSBR10_VALID是与RSBR10有关的信号。
在图14中,
·在2个指令串执行中,RSBR0条目的分支指令的释放条件没有满足。
·在2个指令串执行中,RSBR0条目是进行分支的指令,并且在RSBRO(RSBRL侧)可使用的分支目的地地址缓存器中不存在空条目,不能释放条目。
·在2个指令串执行中,释放了RSBR0条目的分支指令。根据该条件,当指令串0、1都满足释放条件时,可以0、1交替的进行释放。
·RSBR0条目的复位请求已到来。
在上述任意一个条件成立时,变成+RSBR10_COMP_PRIO_TERM=1。
在图15中,
·在2个指令串执行中,RSBR10条目的分支指令的释放条件已满足。
·+RSBR10_COMP_PRIO_TERM=1
在上述全部的条件满足时,变成+SET_RSBR10_COMPLETE_PRIORITY=1。
该信号是上述的+RSBR10_COMPLETE_PRIORITY(优先级信号)的设置信号。作为选择RSBR的指令串的信号的+RSBR10_COMPLETE_PRIORITY是通过锁存器(触发器)对+SET_RSBR10_COMPLETE_PRIORITY的值进行锁存后输出的信号。
图16表示指令串为1个时的电路。图16的信号中的、上面没有出现的信号的意思如下所述。
+ONE_STRAND_MODE:是表示执行流水线正在根据来自处理机检查电路的指示信号执行单一线程。
在图16中,
·在单一线程执行中,在RSBR0中不存在条目。
·在单一线程执行中,+RSBR10_COMPLETE_PRIORITY已经是1。
·RSBR0条目的复位请求已到来。
当上述任意一个条件满足,并且在RSBR10中存在条目时,变成上述的+SET_RSBR10_COMPLETE_PRIORITY=1。
该信号是+RSBR10_COMPLETE_PRIORITY(优先级信号)的设置信号。+RSBR10_COMPLETE_PRIORITY是通过锁存器(触发器)对+SET_RSBR10_COMPLETE_PRIORITY的值进行锁存后输出的信号。
图17是示出指令串为n个时的RSBR的结构示例的图。
RSBR_COMPLETE_PRIORITY[x:0]是指示优先释放哪个指令串的分支指令的指针。X由2^(x+1)≥n确定。在从保留站中释放分支指令时,分支指令控制已完成,从指针所指示的指令串开始优先地进行选择而释放。当从指令解码器投入指令时,在D周期内将指令串ID赋予给选择电路,并将指令存储在与指令串ID对应的指令串的条目中。当从指令提交电路通知对于RSBR0~RSBR6中的任意一个分支指令控制已完成时,通过RSBR_COMPLETE_PRIORITY[x:0](选择信号)来对选择电路所释放的指令串的条目进行选择,输出所释放的条目作为BR_COMP。在图17中,设为线程个数是n个。
并且,在执行流水线上,从处理机检查电路指示优先执行的指令串。指示的内容为:是单一线程执行,还是2个线程执行(多个线程执行),在单一线程执行的情况下,执行指令串0、指令串1中的哪一个。决定是单一线程执行还是多个线程执行的是处理机检查电路,但是作为可想到的控制,有基于来自执行程序的指示的控制、由于硬件的故障而难以执行多线程时等。决定是单一线程执行还是多个线程执行的因素也可以是上述因素之外的因素。在单一线程执行多个线程执行的切换时,执行流水线上的指令被暂时清除,从指令取得开始重新执行。
并且,上面,当存在线程数(指令串数)的变更时,处理机检查电路对其进行检测,将指令串个数设定在分支保留站、延迟指令堆栈、分支目的地地址缓存器中,由此能够动态地应对线程个数的变更。
如上所述,当同时执行多个线程时,分支保留站、延迟指令堆栈、分支目的地地址缓存器的条目分为与线程个数相等数量的组,在各个线程中独立地使用条目,在单一线程时,不对这些条目进行分组,而是在该线程中使用。在单一线程的情况和多个线程的情况下,适当地对条目进行分组并使用,由此,减少了白白浪费而未使用的条目的个数,从而可对信息处理装置具有的硬件资源进行有效利用。
Claims (9)
1.一种信息处理装置,其能够执行单一线程或多个线程,其特征在于,该信息处理装置具有:
线程个数检测单元,其检测正在执行的线程的个数;以及
分支保留站单元,其根据正在执行的线程的个数,将条目分成线程个数个组,使各个条目组与各个线程对应,针对每个线程独立地无序地进行存储在条目中的分支指令的处理,选择条目组进行条目的释放,使得在各个线程内条目的释放是有序的。
2.根据权利要求1所述的信息处理装置,其特征在于,
所述分支保留站单元使得一部分的条目不能使用。
3.根据权利要求1所述的信息处理装置,其特征在于,
根据所述线程个数的变化,动态地进行所述分支保留站单元的条目的分组。
4.一种信息处理装置,其能够执行单一线程或多个线程,其特征在于,该信息处理装置具有:
线程个数检测单元,其检测正在执行的线程的个数;以及
延迟指令堆栈单元,其根据正在执行的线程的个数,将条目分成线程个数个组,使各个条目组与各个线程对应,针对每个线程独立地无序地进行存储在条目中的分支延迟指令的处理,选择条目组进行条目的释放,使得在各个线程内条目的释放是有序的。
5.根据权利要求4所述的信息处理装置,其特征在于,
所述延迟指令堆栈单元使得一部分的条目不能使用。
6.根据权利要求4所述的信息处理装置,其特征在于,
根据所述线程个数的变化,动态地进行所述延迟指令堆栈单元的条目的分组。
7.一种信息处理装置,其能够执行单一线程或多个线程,其特征在于,该信息处理装置具有:
线程个数检测单元,其检测正在执行的线程的个数;以及
分支目的地地址缓存单元,其根据正在执行的线程的个数,将条目分成线程个数个组,使各个条目组与各个线程对应,针对每个线程独立地存储分支目的地地址,选择条目组进行条目的释放。
8.根据权利要求7所述的信息处理装置,其特征在于,
所述分支目的地地址缓存单元使得一部分的条目不能使用。
9.根据权利要求4所述的信息处理装置,其特征在于,
根据所述线程个数的变化,动态地进行所述分支目的地地址缓存单元的条目的分组。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2007/000646 WO2008155794A1 (ja) | 2007-06-19 | 2007-06-19 | 情報処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101715576A true CN101715576A (zh) | 2010-05-26 |
CN101715576B CN101715576B (zh) | 2013-04-17 |
Family
ID=40155959
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800533663A Expired - Fee Related CN101715576B (zh) | 2007-06-19 | 2007-06-19 | 运算处理装置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8151097B2 (zh) |
EP (1) | EP2159686B1 (zh) |
JP (1) | JP5104861B2 (zh) |
KR (1) | KR101100144B1 (zh) |
CN (1) | CN101715576B (zh) |
WO (1) | WO2008155794A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103944952A (zh) * | 2013-01-17 | 2014-07-23 | 富士通株式会社 | 信息处理系统及其控制方法 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5861354B2 (ja) * | 2011-09-22 | 2016-02-16 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
US9280398B2 (en) | 2012-01-31 | 2016-03-08 | International Business Machines Corporation | Major branch instructions |
US9229722B2 (en) | 2012-01-31 | 2016-01-05 | International Business Machines Corporation | Major branch instructions with transactional memory |
WO2016193774A1 (en) * | 2015-06-01 | 2016-12-08 | Intel Corporation | Multi-core processor for execution of strands of instructions grouped according to criticality |
US10175985B2 (en) | 2016-03-28 | 2019-01-08 | International Business Machines Corporation | Mechanism for using a reservation station as a scratch register |
US10831607B2 (en) * | 2018-07-30 | 2020-11-10 | International Business Machines Corporation | Dynamic transaction throttling in a data processing system supporting transactional memory |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6441530A (en) | 1987-08-07 | 1989-02-13 | Sumitomo Electric Industries | Mobile communication system |
US5778243A (en) | 1996-07-03 | 1998-07-07 | International Business Machines Corporation | Multi-threaded cell for a memory |
US6233599B1 (en) | 1997-07-10 | 2001-05-15 | International Business Machines Corporation | Apparatus and method for retrofitting multi-threaded operations on a computer by partitioning and overlapping registers |
US6889319B1 (en) | 1999-12-09 | 2005-05-03 | Intel Corporation | Method and apparatus for entering and exiting multiple threads within a multithreaded processor |
US7051329B1 (en) | 1999-12-28 | 2006-05-23 | Intel Corporation | Method and apparatus for managing resources in a multithreaded processor |
US20010037447A1 (en) * | 2000-04-19 | 2001-11-01 | Mukherjee Shubhendu S. | Simultaneous and redundantly threaded processor branch outcome queue |
US6681345B1 (en) | 2000-08-15 | 2004-01-20 | International Business Machines Corporation | Field protection against thread loss in a multithreaded computer processor |
US6748556B1 (en) | 2000-08-15 | 2004-06-08 | International Business Machines Corporation | Changing the thread capacity of a multithreaded computer processor |
US6988186B2 (en) * | 2001-06-28 | 2006-01-17 | International Business Machines Corporation | Shared resource queue for simultaneous multithreading processing wherein entries allocated to different threads are capable of being interspersed among each other and a head pointer for one thread is capable of wrapping around its own tail in order to access a free entry |
US20030126416A1 (en) * | 2001-12-31 | 2003-07-03 | Marr Deborah T. | Suspending execution of a thread in a multi-threaded processor |
JP3839755B2 (ja) | 2002-06-28 | 2006-11-01 | 富士通株式会社 | 命令制御方法及びプロセッサ |
US7120784B2 (en) * | 2003-04-28 | 2006-10-10 | International Business Machines Corporation | Thread-specific branch prediction by logically splitting branch history tables and predicted target address cache in a simultaneous multithreading processing environment |
JP4327008B2 (ja) * | 2004-04-21 | 2009-09-09 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
JP3926809B2 (ja) * | 2004-07-27 | 2007-06-06 | 富士通株式会社 | 分岐命令制御装置、および制御方法。 |
US20060168571A1 (en) * | 2005-01-27 | 2006-07-27 | International Business Machines Corporation | System and method for optimized task scheduling in a heterogeneous data processing system |
US7882505B2 (en) * | 2005-03-25 | 2011-02-01 | Oracle America, Inc. | Method and apparatus for switching between per-thread and per-processor resource pools in multi-threaded programs |
JP4952580B2 (ja) * | 2005-04-21 | 2012-06-13 | 富士通株式会社 | プロセッサ装置 |
US7577826B2 (en) * | 2006-01-30 | 2009-08-18 | Sony Computer Entertainment Inc. | Stall prediction thread management |
-
2007
- 2007-06-19 WO PCT/JP2007/000646 patent/WO2008155794A1/ja active Application Filing
- 2007-06-19 JP JP2009520135A patent/JP5104861B2/ja not_active Expired - Fee Related
- 2007-06-19 KR KR1020097025988A patent/KR101100144B1/ko active IP Right Grant
- 2007-06-19 CN CN2007800533663A patent/CN101715576B/zh not_active Expired - Fee Related
- 2007-06-19 EP EP07790172.6A patent/EP2159686B1/en not_active Not-in-force
-
2009
- 2009-12-04 US US12/631,143 patent/US8151097B2/en not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103944952A (zh) * | 2013-01-17 | 2014-07-23 | 富士通株式会社 | 信息处理系统及其控制方法 |
Also Published As
Publication number | Publication date |
---|---|
JPWO2008155794A1 (ja) | 2010-08-26 |
US8151097B2 (en) | 2012-04-03 |
WO2008155794A1 (ja) | 2008-12-24 |
KR20100007996A (ko) | 2010-01-22 |
EP2159686A1 (en) | 2010-03-03 |
JP5104861B2 (ja) | 2012-12-19 |
EP2159686B1 (en) | 2019-01-09 |
EP2159686A4 (en) | 2011-11-30 |
KR101100144B1 (ko) | 2011-12-29 |
CN101715576B (zh) | 2013-04-17 |
US20100082952A1 (en) | 2010-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101715576B (zh) | 运算处理装置 | |
KR101100145B1 (ko) | 명령실행 제어장치 및 명령실행 제어방법 | |
CN100357884C (zh) | 用于处理指令的方法、处理器以及系统 | |
TW539997B (en) | Method and apparatus for identifying splittable packets in a multithreaded VLIW processor | |
CN101427213B (zh) | 用于实现多态分支预测器的方法和装置 | |
CN101133391B (zh) | 多线程微处理器中的二分化线程调度器 | |
US5918033A (en) | Method and apparatus for dynamic location and control of processor resources to increase resolution of data dependency stalls | |
EP2192483B1 (en) | Processing device | |
US7734897B2 (en) | Allocation of memory access operations to memory access capable pipelines in a superscalar data processing apparatus and method having a plurality of execution threads | |
US20060161762A1 (en) | Method and logical apparatus for managing processing system resource use for speculative execution | |
CN100517218C (zh) | 用于在多线程处理器中分配线程优先级的方法和设备 | |
US20130205058A1 (en) | Multi-thread processor and its interrupt processing method | |
CN1092882A (zh) | 超标量处理机系统中单周期调度多指令的方法和系统 | |
CN105359089A (zh) | 用于在微处理器中进行选择性重命名的方法和设备 | |
CN1926514B (zh) | 从处理器中的并发物理线程的数目中去耦合逻辑线程的数目 | |
KR101077514B1 (ko) | 캐시 제어장치 및 제어방법 | |
KR100431975B1 (ko) | 분기에의한중단이없는파이프라인방식의마이크로프로세서를위한다중명령디스패치시스템 | |
US5822556A (en) | Distributed completion control in a microprocessor | |
US7337304B2 (en) | Processor for executing instruction control in accordance with dynamic pipeline scheduling and a method thereof | |
CN101176067A (zh) | 基于专用处理单元的使用动态修改系统参数 | |
CN101689109A (zh) | 指令控制装置以及指令控制方法 | |
US20040128476A1 (en) | Scheme to simplify instruction buffer logic supporting multiple strands | |
Funk | Simultaneous Multi-threading (SMT) on eServer iSeries Power5™ Processors | |
CN111708622B (zh) | 一种指令组调度方法、架构、设备及存储介质 | |
US20040128488A1 (en) | Strand switching algorithm to avoid strand starvation |
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 | ||
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: 20130417 |