CN1280714C - 独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器 - Google Patents

独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器 Download PDF

Info

Publication number
CN1280714C
CN1280714C CNB031548881A CN03154888A CN1280714C CN 1280714 C CN1280714 C CN 1280714C CN B031548881 A CNB031548881 A CN B031548881A CN 03154888 A CN03154888 A CN 03154888A CN 1280714 C CN1280714 C CN 1280714C
Authority
CN
China
Prior art keywords
instruction
priority
stream
functional unit
sent
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.)
Expired - Lifetime
Application number
CNB031548881A
Other languages
English (en)
Other versions
CN1495605A (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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Publication of CN1495605A publication Critical patent/CN1495605A/zh
Application granted granted Critical
Publication of CN1280714C publication Critical patent/CN1280714C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)

Abstract

一种执行多个指令流的多线程处理器,包括:多个功能单元,执行指令;多个指令解码器,与各指令流对应地设置,解码各个指令,完成作为执行该指令的功能单元要求将解码指令发给该功能单元的指令发出要求;优先权存储器,存储各指令流的优先权,各优先权与其他指令流的优先权独立,并通过专用指令变更;自停止数据存储器,在各指令流中存储指令流处于执行状态还是处于停止状态的自停止数据;调解器,接收来自多个指令解码部分通知的指令发出要求,2个以上的指令发出要求同时指定一个功能单元的情况下,根据优先权存储器中存储的优先权,确定向该功能单元要发出的解码指令;停止器,根据所述自停止数据,停止与正处于停止状态的指令流相应的指令解码部分向调解器的指令发出要求的通知。

Description

独立处理多个指令流、软式控制 各指令流的处理功能的多线程处理器
本申请是申请号为97119316.9、申请日为1997年8月27日的母案申请的分案申请,该母案的在先申请为JP96-224720,在先申请日为1996年8月27日。
技术领域
本发明涉及根据并行发出的来自多个指令流的指令、高效地使用多个运算单元的信息处理器。
背景技术
现有技术有在一个处理器内同时处理多个指令流的多线程处理器。在“AMultithreaded Processor Architecture with Simultaneous Instruction Issuing”(In Proc.of ISS 91:International Symposium on  Supercomputing.Fukuoka.Japan,pp.87~96,November 1991)中详细地说明了多线程处理器。
图1是表示现有技术的多线程处理器的构成框图。图中,多线程处理器配有指令超高速缓冲存储器500、3个指令提取单元501、3个指令解码单元502、12个备用站503、4个指令调度单元504、4个功能单元505、和寄存器组506,构成为能同时独立地执行与图中指令提取单元和指令解码单元组相应的3个指令流。其中,指令流相应于指令提取单元和指令解码单元组所构成的处理流。
图中,指令提取单元501从指令超高速缓冲存储器500中读出各个不同的指令流指令。
指令解码单元502对各个指令流的指令解码,在可处理的功能单元中连接该指令,在与可处理该指令的功能单元505连接的备用站503中装入指令解码结果(以下简单称为指令)。
指令调度单元504选取来自备用站503的适当指令,传给空着的功能单元505。在与1个功能单元对应的不同指令流的指令解码结果装在备用站503的情况下,按固定的序号选取指令。因而实现了指令流之间的公平。
功能元件505为执行各个指令的运算器,使用寄存器组506执行来自备用站503的指令。各功能元件最好是相同的单元,在多数情况下配备比如寄存器/存储器单元、整数运算单元、浮动小数点运算单元、乘除运算单元等类别的运算器。
下面,简单地说明如上述构成的多线程处理器的工作。
图中的多线程处理器中,由于装有3组指令提取单元501和指令解码单元502,所以能够并行地对3个指令流进行提取·解码。3个指令流和指令超高速缓冲存储器500(或是图外的主存储器)所对应的程序中,有1个程序对应1个指令流的情况(从3个程序中产生3个指令流的情况),和1个程序对应多个指令流的情况(从1个程序中产生3个指令流的情况)。后者比如为对于不同的图象数据同时执行多个指令流的1个图象处理程序的情况。
解码单元502通过备用站503、指令调度单元504,向接收该指令的功能单元发出解码指令。各功能单元也按照来自相应指令流的指令执行已发出的指令。
这样,多线程处理器的特征在于具有可同时执行多个指令流的共有运算器。
还有,多线程处理器是在1个处理器内部处理多个指令流,因此可把执行1个指令流的单元称为逻辑处理器。
逻辑处理器有处理各个独立的指令流的解码单元、指令顺序控制机构和寄存器组等。由多个逻辑处理器使用的功能单元和超高速缓冲存储器等在逻辑处理期间是共有的。
另一方面,可把对应逻辑处理器的整个处理器称为物理处理器。
还有,如果把多线程处理器与现有的超计数方式的处理器比较,由于超计数处理器仅进行了功能单元的多重化(重复化),所以同时可处理的指令流为1个,因指令之间的依存关系流水线联锁频繁发生,其结果不能提高功能单元的使用效率,因而难以提高性能。而上述多线程处理器因能并行地执行多个命令流的命令,所以可提高各功能单元的使用效率,实现性能的提高。
但是,上述多线程处理器构成有下述问题。
第1,由于多个逻辑处理器具有共有的功能单元,所以有从多个指令流所发出的指令争用功能单元的问题,因此,一定期间内,在特定逻辑处理器发出的指令与其他的逻辑处理器发出的指令相比不是很少的情况下,有降低该特定逻辑处理器性能的问题。而且,在逻辑处理器之间负荷差别大的情况下,即使有在逻辑处理器中分配相同处理内容的指令流(由上述程序生成),但由于只是特定的指令流的处理迟缓,所以就会造成处理的结束时间有偏差、不能提高整体速度的情况。
第2,即使在逻辑处理器中可以分配各个不同的指令流而可使特定逻辑处理器较早执行,因而相对地提高了特定逻辑处理器的处理速度的情况下,但由于不能占有指令超高速缓冲存储器等共有资源,所以整体性能仍较低。例如,难以承担有发生需要紧急中断处理等情况。
发明内容
鉴于上述问题,本发明的目的在于提供可软式调整多个指令流之间各指令流的处理性能,并能提高整体处理效率的多线程处理器。
实现上述目的的一种执行多个指令流的多线程处理器,包括:
·多个功能单元
执行指令;
·多个指令解码器
与各指令流对应地设置,分别解码各个指令,作成作为执行该指令的功能单元要求将该解码指令发给该功能单元的指令发出要求;
·优先权存储器
存储各指令流的优先权,各优先权与其他指令流的优先权独立,并通过专用指令变更;
·自停止数据存储器
对各指令流,存储表示应使指令流处于执行状态还是处于停止状态的自停止数据;
·调解器
接收来自多个指令解码部分通知的指令发出要求,在2个以上的指令发出要求同时指定一个功能单元的情况下,根据优先权存储器中存储的优先权,确定向该功能单元要发出的解码指令;
·停止器
在从多个指令解码器对上述调解器通知的指令发出要求之中,根据所述自停止数据,停止从与正处于停止状态的指令流对应的指令解码器向调解器的指令发出要求的通知;
功能单元的1个接收指示优先权变更的专用指令,在优先权存储器中存储的优先权内,只变更该专用指令所属的指令流的优先权;
功能单元的1个接收指示指令流停止的指令,变更在自停止数据存储器中存储的自停止数据,以使只有该指令所属的指令流停止。
根据这种构成,由于根据所述优先权决定各功能单元中要发出的指令(指令解码结果),所以可按优先权软式调整多个指令流之间负荷的分布,适当实现各指令流必要的处理性能,并能达到提高整体处理效率的效果。
其中,所述存储器还存储可依据指令设定、表示停止还是执行各指令流的指令流的标记群;
所述控制器也可配备:执行所述决定的调解器;和在设定表示停止的标志的情况下,排除与该标志对应的指令流的指令发出要求,根据进行的所述决定,停止该指令流的停止器。
依据这种构成,在指令流处于其执行过程中的怠速状态和等待状态的情况下,也能使指令流处于停止状态。其结果,由于可以优先执行其他指令流,所以还能提高整体处理性能。
其中,所述控制器还可配有禁止器,在其中一个指令流发生需要紧急处理的情况下,暂时禁止向功能单元发出所述控制器决定要发出的属于该指令流指令的指令。
依据这种构成,对某些指令流(逻辑处理器)发生需要紧急处理的情况下,利用禁止器暂时禁止该逻辑处理器发出指令。即在需要的紧急处理移动完了前暂时禁止仅几个周期的指令发出。因此,中断处理的移动可高速化。而且,由于在由调解器决定要发出的指令后,禁止器能禁止该指令的发出,所以在由调解器决定需要紧急处理的发生时限后,禁止器也可有效地禁止。例如,虽然有需要紧急处理的发生时限,但在机器周期期间的慢点内也能达到所谓的有效禁止效果。
其中的一个功能单元可构成为能接收指示优先权变更的专用指令,在存储器所存储的优先权中,可变更该专用指令所属的指令流的优先权。
这里,所述专用指令由指示提高或降低优先权的操作码组成。
所述功能单元中的1个也可构成为能在专用指令的解码结果发出的情况下,判别发出该专用指令的指令解码器,提高或降低与判别的指令解码器对应的指令流的优先权。
按照这种构成,在上述专用指令中,由于没有必要表示用于指定指令流的ID和指令流的比特位置的操作码,所以无论对于哪个指令流都可用上述指令简单地变更自身指令流的优先权。
此外,由于由所述1个功能单元变更该指令所属的指令流的优先权,所以不会误写为不同指令流的优先权,可防止误操作。例如,在RGB彩色图象的不同颜色图象数据中进行上述图象处理的场合,即在3个指令流独立并同时执行图象处理的1个程序的场合,可使信息隐蔽(程序没有必要区别是RGB中的哪一个),并能保证指令流的独立性,其结果提高了OS和系统整体的可靠度。
其中所述存储器包括有读出专用的第1字段的控制寄存器;
所述功能单元的一个还可以构成为,在发出读出寄存器的读出指令的解码结果的情况下,判别发出该读出指令的指令解码器,将与该指令解码器对应的指令流的ID作为第1字段读出数据在内部总线上输出。
按照此构成,在3个指令流独立并同时执行上述那样的1个程序的情况下,实际上可把1个程序假设为3个程序并行执行的情况。分别假设的程序(或指令流)因分别在第1字段读出,所以可容易地知道指令流自身的ID。
其中所述存储器有控制寄存器;
所述控制寄存器还用于存储指令流固有数据的各指令流的个别字段和读出专用的第2字段;
所述功能单元的1个还可构成为,在所述控制寄存器的读出指令执行期间,读出各指令流的个别字段,同时,将与发出该读出指令的指令解码器对应的指令流的固有数据作为第2字段读出数据在内部总线上输出。
按照这种构成,上述假设的程序(或指令流)因在第2字段读出,所以可容易地知道自身的优先权。
其中所述存储器有存储各指令流优先权的优先权字段;
所述优先权字段由表示指令流执行模式的其他优先权的小字段组成;
所述功能单元的1个还可构成为,在专用指令解码结果发出的情况下,判别发出该专用指令的指令解码器,提高或降低与判别的指令解码器对应的指令流优先权字段内当前执行模式的小字段的优先权。
依据此构成,执行模式,比如用户程序模式和特定观察程序模式中可设定独立的优先权,在向其他模式移动复归的情况下可按原样存储原来的优先权。
其中,多线程处理器还可包括:
功能单元中的1个开始执行特定指令时,检测是哪个指令解码器发出了该特定指令的解码结果的特定指令检测器;和
在检测特定指令开始执行之时,在预先确定的优先权期间暂时地变更与发出该特定指令的指令解码器对应的指令流优先权,使其指令流的优先权变得比其他指令流的优先权高的暂时变更器。
按此构成,由于暂时变更器暂时变更优先权,可保证指令流中的特定指令作为先头的指令列,并保证在连续周期内执行。
其中,多线程处理器还包括:
存储表示各指令流中的其他指令流是否处于要排他的停止状态的排他停止数据的排他停止数据存储器;
所述停止器还可构成为,利用所述排他停止数据,停止与正处于停止状态的指令流对应的指令解码部分向调解器的指令发出要求的通知。
依据此构成,可强制停止把某些指令流作为其他指令流的处理。因此,可在大范围内进行指令流之间的处理性能的调整。
此外,实现上述目的的同时且独立并行地执行多个指令流的多线程处理器,包括:
·多个功能单元
分别同时并独立地执行指令;
·多个指令解码器
与所述多个指令流对应地设置,分别提取并解码各个指令流的指令,决定所述功能单元中应作为发出目的地的功能单元;
·优先权指定器
指定所述多个指令流中的各个的优先权,各优先权与其他指令流的优先权独立,并通过专用指令变更;
·指令发出判断器
根据表示是否可以接收指令的各功能单元的状态,判断能否对应作为所述发出目的地的功能单元发出解码的指令;
·指令发出调解器
在对一个功能单元判断为可发出2个以上的指令的情况下,根据由所述优先权指定器中指定的优先权调解该2个以上的指令,确定对该一个功能单元应发出的一个指令;
所述功能单元的1个接收指示优先权变更的专用指令,在优先权指定器的优先权之中,只变更该专用指令所属的指令流的优先权。
依据此构成,由于对指令超高速缓冲存储器中来自多个指令提取器的指令提取要求有争用的情况下按优先权进行调解,所以多线程处理器的上游处理中,可达到动态调整各指令流处理性能的效果。
此外,实现上述目的的执行多个指令流的多线程处理器,包括:
·多个功能单元
分别执行指令;
·多个指令解码器
与各指令流对应地设置,分别解码各个指令,指定应执行该指令的功能单元,并且作成要求将解码了的指令要发给该功能单元的指令发出要求;
·存储器
对各指令流,存储各指令流的优先权,各优先权不依赖于其他指令流的优先权而独立,并通过专用指令变更;
·控制器
在两个以上的指令发出要求同时指定一个功能单元时,按照存储在存储器的优先权,决定应发出到该功能单元的已译码指令;
·改写器
按照指示优先权的变更的专用指令,在存储于存储器的优先权内,只改写该专用指令所属的指令流的优先权。
依据此构成,对指令流的共有资源有来自多个指令流处理要求的争用情况下,由于按优先权进行调解,所以可以达到软式调整各指令流处理性能的效果。
从本发明的实施例及其附图中,可进一步说明本发明的这些和其他目的、优点和特征。其中:
附图说明
图1是表示现有的多线程处理器的构成框图。
图2是表示本发明实施例的多线程处理器的构成框图。
图3是表示本发明实施例中指令流控制器的优先顺序指定寄存器的说明图。
图4是表示上述实施例中指令流控制器的优先顺序指定寄存器的低位2比特的说明图。
图5是表示上述实施例中指令流控制器的优先顺序指定寄存器的高位1比特的说明图。
图6是表示上述实施例中指令流控制器的内部中断寄存器的构成图。
图7是表示上述实施例中指令流控制器的隔断停止寄存器的构成图。
图8是表示上述实施例中指令发出判断部分的详细构成例的框图。
图9是表示上述实施例中指令发出调解部分的详细构成例的框图。
图10A~图10C是表示上述实施例中优先判定部分的控制逻辑的说明框图。
图11是表示上述实施例中指令发出禁止部分的详细构成例的框图。
图12是表示功能单元专用指令及控制寄存器的读出指令的执行内容的说明图。
图13是表示优先顺序控制部分的详细构成框图。
图14是表示连续循环优先部分内的选择器中输入的选择信号与输出值关系的说明图。
图15是表示本发明其他实施例的多线程处理器的框图。
具体实施方式
图2是表示本发明实施例的多线程处理器的主要部分的构成框图。
本多线程处理器具有指令解码部分1~3、功能单元A20、功能单元B 21、功能单元C22、功能单元D23、指令发出判断部分30、指令发出调解部分40、指令发出禁止部分50、优先顺序控制部分60和指令选择部分70,被构成为能相应于逻辑处理器的执行状态和指令流的优先权及外部因素调解向各功能单元发出的指令。
并且,本多线程处理器虽然配有图1所示的指令超高速缓冲存储器、指令提取单元、寄存器文件等,但在图2中省略了与现有技术例相同的部分。此外,为方便说明在本实施例中,各指令解码部分对每1指令流解码1指令,并且1次只发出1个指令。
图2中,指令解码部分1~3解码各个的指令流的指令,根据解码结果,向指令发出解码部分30输出指令发出要求,向指令选择部分70输出指令内容)执行等)。其中,指令发出要求包括要求有指令发出的标记(以下称为标记),和包含显示执行该指令的功能单元的种类(以下称为功能序号)的信息。由于独立解码指令流,所以指令解码部分1~3与上述各个的逻辑处理器相对应。本实施例中,由于1个物理处理程序中内装3个逻辑处理器,所以设有3个指令解码部分。以后,为相区别,把与指令解码部分1~3对应的逻辑处理器称为逻辑处理器1~3。相应地,与逻辑处理器1~3相应的指令流被称为指令流1~3。
功能单元A20、B21、C22、D23(以下称为功能单元A、B、C、D)通过指令选择部分70接收从指令解码部分1~3发出的指令(解码结果),并执行该指令,即进行数据存取处理和运算处理等。为容易理解,例示了各功能单元的功能完全相同的处理内容。
也就是说,功能单元A是处理存储器存取指令的寄存存储单元,功能单元B是处理整数运算的整数运算单元,功能单元C是进行浮动小数点的加减运算和整数与浮动小数点之间的变换的浮动小数点单元,功能单元D是进行浮动小数点的乘除运算的浮动小数点单元。并且,本实施例中,作为整数运算的一个处理内容,功能单元B有处理与优先权设定有关的指令的功能。这些功能单元与为逻辑处理器1~3的构成部分的逻辑处理器一一对应,并且也可共用逻辑处理器1~3。此外,按照是否在指令处理过程中,各功能单元把能接收指令的状态(以下简单称为ready)或不能接收的状态(以下简单称为not ready)通知给指令发出判断部分30。
指令发出判断部分30接收来自指令解码部分1~3的指令发出要求(上述要求标记和功能单元序号),判断先发出指令的功能单元,并且接收表示各功能单元是否ready的通知,和接收来自优先顺序控制部分60的表示各逻辑处理器是处于停止状态还是处于执行状态的通知,判断是否可对各功能单元A~D发出指令。
在判断可对1个功能单元发出时存在有多个指令发出要求的争用的情况下,指令发出调解部分40按照优先顺序控制部分60中指定的各逻辑处理器的优先权,调解多个指令发出要求,决定一个要发出的指令。
按照指令发出调解部分40的调解结果,指令发出禁止部分50最终判断是否发出该指令,判断的结果在指令选择部分70中指示要发出的指令。具体地说,在需要在各逻辑处理器中进行紧急处理的情况下,对于该逻辑处理器的指令流的指令暂时禁止发出,不在这样的情况下,就按指令选择部分70中指示发出指令。由于指令发出禁止部分50暂时禁止着指令的发出,在发生由指令发出判断部分30及指令发出调解部分40处理后需要上述紧急处理的情况下,这就是把它作为最优先的缘故。指令发出禁止部分50设置在指令调解部分40之后,把从外部中断的发生时间至禁止指令发出时的延迟时间抑制到最小。
优先顺序控制部分60进行各逻辑处理器的优先权管理,以及指示各逻辑处理器处于执行状态还是停止状态的信息管理,向指令发出调解部分40通知上述优先权,向指令发出判断部分30通知是否处于上述执行状态。而且,在特定的指令执行时,优先顺序控制部分60具有在预定数的连续循环期间优先进行该逻辑处理器的功能(以下称为连续循环优先功能)。作为上述优先权及是否示出执行状态的管理,优先顺序控制部分60配有3个控制寄存器即优先顺序指定寄存器、内部中断寄存器、排他寄存器。这些寄存器依据指令流中的指令设定其值。
指令选择部分70根据来自指令禁止部分50的发出源的指令解码部分及指示先发出的功能单元的指令发出指示,向功能单元A~D发出指令解码部分1~3的解码指令(操作等)。
<优先顺序控制部分60:优先顺序指定寄存器>
图3是表示装在优先顺序控制部分60中的优先顺序指定寄存器(以下称为PRI寄存器)的比特构成的说明图。
图中,PRI寄存器有MYID、PR13、PR12、PR11、MYPRI的各字段,存储着指示各逻辑处理器的优先顺序及是否处于停止状态的信息。
MYID字段为在逻辑处理器中执行本PRI寄存器的读出指令时指示执行该读出指令的逻辑处理器的ID字段。例如,在逻辑处理器3中执行该读出指令的情况下,就读出指示逻辑处理器3的ID(比如100)。
PR13字段为逻辑处理器3的优先顺序及指示是否处于停止状态的字段。
PR12、PR11字段为各个逻辑处理器2、1中与PR13相同的字段。
MYPRI字段为逻辑处理器中执行本PRI寄存器的读出指令时指示执行该读出指令的逻辑处理器优先顺序的字段。例如,在逻辑处理器1中执行该读出指令的情况下,在MYPRI字段中复制并读出PR11字段的内容。
图4是表示PRI寄存器中PR13~PR11字段各个的低位2比特分配的说明图。图中把PR13~1简略为PRIx,在[ ]内附记着字段内的比特位置。但是,x表示逻辑处理器序号(或线序号)。
图中PRIx[1:0]表示低(lowest)、中(middle)、高(highest)3个级别的优先顺序。由于用2比特表示3个级别的优先顺序,所以就可能分别把PRIx[1]设定为监督程序方式,把PRIx[0]设定为用户程序方式。这种优先顺序的设定根据下面表示的专用指令(存储表示)由功能单元B进行。
〖inc pri〗:此指令提高优先顺序,即在监督程序方式中把PRIx[1]设定为1、在用户程序方式中把PRIx[0]设定为1。
〖dec pri〗:此指令降低优先顺序,即在监督程序方式中把PRIx[1]设定为0、在用户程序方式中把PRIx[0]设定为0。
这些指令与通常寄存器之间的数据传送指令不同,不需要操作数,由于仅为操作码的指令,所以无论对哪一个指令流都可作为可采用的相同指令。例如,存在从1个程序中生成多个指令流、对各指令流承担不同的数据进行并行处理的情况。
例如,按照这些指令及图中的比特分配,即使在由用户程序方式向监督程序方式移动后变更优先顺序的情况下,仍存储用户程序方式时恢复以前的优先权。例如,在用户程序方式中发生中断,即使暂时向监督程序方式移动,从中断处理返回用户程序方式前,通过向源返回PRIx[1],存储用户程序方式中的优先顺序。
图5是表示优先顺序的PRI寄存器中的PR13~1字段各个高位1比特分配的说明图。
图中PRIx[2]表示逻辑处理器是处于执行状态或处于停止状态。从执行状态变为停止状态的设定根据下面表示的专用指令(存储表示)由功能单元B进行。
〖halt〗:此指令使发出源的逻辑处理器进入停止状态。也就是把该逻辑处理器的PRIx[2]设定为1。并且,把此指令的停止状态与由其他指令的停止状态进行区别时就称为自停止状态。
自停止状态的解除(恢复执行状态)不依据指令,而是依据对该逻辑处理器的中断输入。即在多线程处理器中由于中断处理是在个别逻辑处理器中发生的,所以对自停止状态中某些逻辑处理器的中断(外部中断、内部中断等)可在发生时解除。
<优先顺序控制部分60:内部中断寄存器>
图6是表示内装在优先顺序控制部分60的内部中断寄存器(以下称为IR寄存器)的比特构成说明图。其中,所谓的内部中断是逻辑处理器之间的中断,也称为从一个逻辑处理器向其他逻辑处理器的中断。由于进行内部中断的逻辑处理器在自停止状态情况下可解除自停止状态,所以可使用在比如逻辑处理器之间的同步处理和同步通信的情况。
图中所示的IR寄存器有MYID字段和IR3~IR1比特、是用于对其他逻辑处理器要求内部中断的寄存器。
由于MYID字段与上述图5所述相同,所以不再说明。
IR3~IR1比特是对逻辑处理器3要求其他逻辑处理器内部中断的比特。此比特如果为ON,那么按照接收该中断要求的指令解码部分3的控制,在把PR3[2]设定为0的同时,IR3返回OFF。其中,利用把PR3[2]设定为0,可解除逻辑处理器3的自停止状态。
IR2、IR1比特是对各个逻辑处理器2、1要求中断的比特,与IR3比特相同。
IR3~IR1比特的设定根据通常的寄存器传送指令进行。在通常的寄存器传送指令中由于有在IR3~IR1比特位置上直接中断的需要,所以对各指令流有必要区别是自身的逻辑处理器ID还是中断前的逻辑处理器ID,通过读出上述的MYID字段,对各指令流就能够进行逻辑处理器ID的操作。
<优先顺序控制部分60:排他停止寄存器>
图7是表示内装在优先顺序控制部分60中的排他停止寄存器(以下称为EXCL寄存器)的比特构成说明图。其中,把除某1个处理程序之外的逻辑处理器停止称为排他停止。但是,2个以上的逻辑处理器不能作为同时的排他停止状态。
图中所示的EXCL寄存器是有MYID字段和EXCL3~EXCL1的各比特、仅使1个逻辑处理器处于执行状态、对其他逻辑处理器要求停止状态的寄存器。
由于MYID字段与上述图3和图6相同,所以不再说明。
EXCL3比特表示该比特ON时逻辑处理器3执行排他停止。这种情况下,仅逻辑处理器3执行,使逻辑处理器2和逻辑处理器1变为停止状态。
EXCL2、EXCL1的各比特也是同样的。这些EXCL3~EXCL1的各比特根据下面表示的专用指令(存储表示)由功能单元B进行设定和解除。
〖excsv〗:该指令是对发出源的逻辑处理器中的排他停止的设定即是停止发出源以外的所有逻辑处理器的指令。例如,逻辑处理器1执行该指令的情况下,把EXCL1设定为ON,把EXCL2和EXCL3设定为OFF。此外,即便假设多个逻辑处理器同时发出此指令,也不会停止所有逻辑处理器的操作。其原因是因仅在功能单元B中执行该指令,所以用执行时间限定1个。
〖retex〗:此指令是对发出源的逻辑处理器的排他停止的解除、即按源状态恢复其他所有逻辑处理器的指令。例如,逻辑处理器1执行该指令的情况下,把EXCL1设定为OFF。
此指令也和上述incpr指令、decpr指令一样不需要操作数,无论对于哪一个指令流都可使用相同的指令。
上述PRI寄存器、IR寄存器、EXCL寄存器的3个控制寄存器分别是1个物理的实体,由于各寄存器的MYID字段和PRI寄存器的MYPRI字段是显示自逻辑处理器自身的值,所以可看到由各逻辑处理器中与逻辑处理器不同的寄存器的存在。此外,由于这样的控制寄存器的寻址都与逻辑处理器相同,即使执行相同的指令,也能看到各个的自逻辑处理器自身的ID和优先顺序。
<指令发出判断部分30>
图8是表示图2的指令发出部分30的详细构成例的框图。该指令发出判断部分30配有停止判断部分310、分配部分320、发出判断部分330。
停止判断部分310配有与指令解码部分1~3分别对应的3组NOR电路和AND电路。各组NOR电路和AND电路从指令解码部分接收上述指令发出要求(要求标记和功能单元序号),在各逻辑处理器中变为自停止状态(PRI寄存器的PRIx[2]为ON)或变为按排他停止的停止状态(EXCLx比特为ON)的情况下,把要求的标记信号(以下称为要求有无信号)强制OFF,并且在执行状态中利用排他停止未停止的情况下,照样输出要求的有无信号。
分配部分320配有与指令解码部分1~3分别对应的3个信号分离器。各信号分离器通过停止判断部分310把输入的要求有无信号、根据功能单元序号的该指令分配给执行该指令的功能单元。结果,输出各功能单元中来自各指令解码部分的要求有无信号。
发出判断部分330配有与功能单元A~D分别对应的4组AND电路群。各AND电路群将分配部分320分配的要求有无信号、在上述功能单元为ready状态的情况下,照样输出,在not ready状态的情况下,进行OFF输出。其中,在显示有ready状态的ready~n信号(n为A、B、C或D)表示对应功能单元接收指令状态为来自与逻辑处理器1~3对应的功能单元x的输出信号。例如,对于来自指令发出判断部分330的输出信号(1A~3A、1B~3B、1C~3C、1D~3D),无论哪一个逻辑“1”时就有效(能够发出指令),例如,输出信号1A表示在指令解码部分1先发出的发出源是功能单元A,输出信号3B表示在指令解码部分3中先发出的发出源是功能单元B。
<指令发出调解部分40>
图9是表示图2的指令发出调解部分40的详细构成例的框图。该指令发出调解部分40配有分别对应功能单元A~D的调解部分40A~40D。由于各调解部分进行同样的工作,所以仅以调解部分40A为代表进行说明。调解部分40A配有优先顺序判定部分41A和判定辅助部分42A。
优先顺序判定部分41A接收由发出判断部分330输出的信号1A、2A、3A,和各逻辑处理器的优先顺序PRI1[1:0]、PRI2[1:0]、PRI3[1:0],将有效的要求有无信号中优先顺序最高的输出。图10A~图10C示出优先顺序判定部分41A中为实现这种功能的控制原理图。
图10A中,表示在PRI寄存器中的PRI1、PRI2、PRI3字段指定逻辑处理器1~3的优先顺序为PRI1>PRI2>PRI3的情况,即表示优先等级中(PRI1、PRI2、PRI3)=(高、中、低)的情况的输入1A、2A、3A,输出1A’、2A’、3A’。此外,图中虽未示出,但即使在优先顺序为PR1>PR3>PR2的情况下、PR2>PR1>PR3的情况下、PR2>PR3>PR1的情况下、PR3>PR1>PR2的情况下,还是PR3>PR2>PR1的情况下,由于仅读出更换其中的信号名就变为完全相同的控制原理,所以省略说明。
图10B中,表示优先顺序为PRI1=PRI2>PRI3的情况,即表示优先等级中(PRI1、PRI2、PRI3)=(高、高、中)、(高、高、低)或(中、中、低)的情况。图中虽未示出,但即使在优先顺序为PR1=PR3>PR2的情况下、PR2=PR1>PR3的情况下、PR2=PR3>PR1的情况下、PR3=PR1>PR2的情况下,还是PR3=PR2>PR1的情况下,由于仅读出更换其中的信号名就变为完全相同的控制原理,所以省略说明。此外,象图中所加的波浪线的输出信号、输入信号中的优先顺序最高,并且在有效信号为2个以上的情况下,优先顺序判定部分41A以“1”作为其输出。
图10C中,表示优先顺序为PRI1>PRI2=PRI3的情况,即(PRI1、PRI2、PRI3)=(高、中、中)、(高、低、低)或(中、低、低)的情况。此外,图中虽未示出,但即使在优先顺序为PR1>PR3=PR2的情况下、PR2>PR1=PR3的情况下、PR2>PR3=PR1的情况下、PR3>PR1=PR2的情况下,还是PR3>PR2=PR1的情况下,由于仅读出更换其中的信号名就变为完全相同的控制原理,所以省略说明。
此外,优先顺序判定部分41A在优先顺序为PRI1=PRI2=PRI3的情况、有效信号为2个以上的情况下,以“1”作为其输出的有效信号。
判定辅助部分42A在把PRI寄存器中的优先顺序设定为相同逻辑处理程序的同时输出指令发出要求的情况下,即优先顺序判定部分41A的输出(1A’、2A’、3A’)中“1”为2个以上的情况下,为了无偏向地调整逻辑处理器之间的指令发出,所以其中有“1”就判定。例如,判定辅助部分42A进行:(1)用各循环(1次循环或数次循环)改变为1的逻辑处理器;(2)以前能发出指令的逻辑处理器优先;(3)确定固定其中一个。此外,能把这些进行替换更好。
<指令发出禁止部分50>
图11是表示图2的指令发出禁止部分50的详细构成例的框图。该指令发出禁止部分50配有分别与功能单元A~D对应的禁止部分50A~50D、和发出通知部分55。由于各禁止部分进行相同的操作,所以这里以禁止部分50A为代表进行说明。
禁止部分50A,作为要求的紧急处理,包括:在外部中断要求、内部中断要求、超高速缓冲存储器错误和存储器存取误差等的存取例外、收集指令等发生的情况下,检测其发生源的逻辑处理器ID和控制该逻辑处理器1循环期间禁止指令发出的禁止控制部分51A;依据禁止控制部分51A的指示选通调解部分40A的输出信号(1AA~3AA)按指令选择部分70的结果输出指令发出指示(1AAA~3AAA)的3个AND电路;和通知对应功能单元A的指令发出的OR电路。
发出通知部分55由对应指令解码部分1~3的3个OR电路组成,各自输出来自禁止部分51A~51D的各逻辑处理器的指令发出指示,输出发出通知,通知可发出对应指令解码部分中发出的一个指令。
<功能单元B>
功能单元B构成为除执行整数运算指令外,还执行上述各种专用指令和读出PRI寄存器、EXCL寄存器、IR寄存器的指令。
再有,对于上述专用指令,本实施例中虽由功能单元B执行,但也可由构成的其他功能单元执行。
图12是表示用功能单元B执行上述专用指令和读出指令的执行内容的说明图。图中,[x]表示该指令的发出源的逻辑处理器序号,[y]表示该指令的发出源以外的逻辑处理器ID。这个逻辑处理器序号由来自禁止部分50B的输出信号(图11的1BBB~3BBB)通知功能单元B。
如图所示的功能单元B,对于指令〖inc pri〗,在监督程序方式中把PRI寄存器的PRIx[1]比特设定为1,在用户程序方式中把PRIx[0]比特设定为1。
对于指令〖dec pri〗,在监督程序方式中把PRIx[1]比特设定为0,在用户程序方式中把PRIx[0]比特设定为0。
对于指令〖halt〗,把该逻辑处理器的PRI寄存器的PRIx[2]比特设定为1。
对于指令〖excsv〗,把EXCL寄存器的EXCLx比特设定为1,把EXCLy设定为0。例如,逻辑处理器2在本指令的发出源的情况下,功能单元B把EXCL2比特设定为1,把EXCL3比特和EXCL1比特设定为0。
对于指令〖retex〗,把EXCLx比特设定为0。
这样的上述专用指令还有相同的指令,根据该指令发出源的逻辑处理器进行寄存器中不同的比特的操作。
此外,对于图12所示的各mov指令,功能单元B按下述执行。
〖mov PRI,RO〗指令为把PRI寄存器内容向RO寄存器传送的指令。对该指令功能单元B按下面的指令执行。
对PRI寄存器中的MYID字段(=PRI[31:29]),将该指令的发出源的逻辑处理器ID写入RO[31:29]的各比特。
对于PRI寄存器中的PRI[11:9](=PRI3,PRI2,PRI1字段)的各比特,读出该数据后传送给RO寄存器中的[11:3]。
对于PRI[2:0](=MYPRI字段),将与PRI3、PRI2、PRI1字段中该指令发出源的逻辑处理器ID对应的PRIx写入RO[31:29]的各比特。
〖mov IR,RO〗指令为向RO寄存器传送IR寄存器内容的指令。对于该指令,功能单元B依据IR寄存器中的MYPRI字段(=IR[31:29])在RO[31:29]的各比特中写入该指令发出源的逻辑处理器ID。对于IR[2:0](=IR3,IR2,IR1比特)的各比特,读出其值后写入RO[2:0]的各比特中。
〖mov EXCL,RO〗指令为向RO寄存器传送的EXCL寄存器内容的指令。按照此指令的功能单元B的执行内容,与上述〖mov IR,RO〗指令相比,除传送源为IR寄存器外均相同。
通过执行上述的读出指令,各逻辑处理器可获得由读出的MYID字段的自身逻辑处理器ID的值、其他逻辑处理器的状态(优先状态、自停止状态、排他停止状态等)。
<优先顺序控制部分60的详细构成>
图13是表示优先顺序控制部分60的详细构成的框图。
优先顺序控制部分60配有PRI寄存器61、IR寄存器62、EXCL寄存器63、选择器64、连续循环优先部分69。
由于在图3、图6、图7中概要说明了PRI寄存器61、IR寄存器62、EXCL寄存器63的比特构成,所以这里说明其硬件构成。
这些寄存器61~63与本多线程处理器的内部总线连接,通过内部总线在功能单元B中进行读出和写入。
这些寄存器的高位3比特(MYID字段)没有存储数据的功能,寄存器的读出指令执行时,向直通的内部总线输出逻辑处理器ID。这时的逻辑处理器ID值由来自禁止部分50B的输出信号(图11的1BBB~3BBB)通知。
此外,PRI寄存器62的低位3比特在PRI寄存器的读出指令执行时向直通的内部总线输出选择器64的输出。
选择器64在PRI寄存器的读出指令执行时,在PRI寄存器62中的PRI3,PRI2,PRI1的字段内,选择与其指令发出源的逻辑处理器ID对应的ID后,经IR寄存器62中的[MYPRI]字段输出给内部总线。
连续循环优先部分69在特定的指令列执行期间具有使其优先权暂时变高的功能。其中,比如说执行与其他逻辑处理器共享资源的读出和写入等情况下,特定的指令列是指有必要用连续循环执行的指令列。
下面,举一个特定指令列的实例。但是,指令是用助记忆符号显示的。并且,下面是表示指令内容的注释。
LOOP:
    :级别
aldst MEM[100].RO
       :也称为原子装载启动(Atomic LoaD STart)。
       :向RO传送存储器(100号地址)的数据
test RO
       :若RO=0则把0特征位设定为1
beq LOOP
       :若零标记为1则向级别LOOP分支
store R1.MEM[100]
       :向存储器100号地址传送寄存器R1的数据
上述特定指令标记读出存储器100号地址,如果读出的数据为0,那么向存储器100号地址写入寄存器R1的数据。如果读出的数据不为0,那么直到变为0后显示重复读出循环处理。该特定指令列有用连续循环执行的必要,比如存在着把存储器100号地址作为多个逻辑处理器的共享资源使用的情况。也就是说,其他逻辑处理器不必写入更换存储器100号地址。
为保证这样的特定指令列用连续循环执行,连续循环优先部分69在用1个功能单元检测上述特定指令列的先头指令的执行开始时,由该指令的执行循环连续预定数的循环期间,因其指令发出源的逻辑处理器(指令流)的优先顺序也比其他逻辑处理器高,所以要暂时变更优先顺序控制部分60的优先顺序。
<连续循环优先部分69>
连续循环优先部分69配有图13所示的特定指令检测部分65、计数器66、比较器67、选择器68。
图中特定指令检测部分65对特定指令列的先头指令(以下称为特定指令)执行的开始进行检测。上述特定指令列的实例中,可检测作为特定指令的aldst指令。更具体地说,特定指令检测部分65接收来自指令解码部分1~3的特定指令解码后的通知,接收特定指令的指令发出禁止部分50向其1个功能单元发出的通知,以共同接收两通知作为特定指令执行开始的检测。
检测特定指令执行开始时,计数器66计数特定指令列的执行中要求的循环数。上述实例中,由于对与aldst指令连接的3指令的执行中要求的3次循环进行计数,所以输入检测特定指令执行开始时的初始值为3,直至降到0计数。因此,上述store R1,MEM[100]的执行循环变为0。此外,在上述特定指令列进行循环处理的情况下,计数器66把每次检测aldst指令从初始值3进行计数。
选择器67判定计数器66的计数值是否与0一致。即判定是否处于特定指令列的连续循环中。
比较器68为6比特长的4输入1输出的比较器,用于连续循环期间暂时变更优先顺序。
图14是表示选择器68中输入的选择信号与输出值关系的说明图。比较器68的输入值在图中虽省略了,但却为图13所示的〖PRI[11:3](=PRI3[1:0]、PRI2[1:0]、PRI1[1:0]〗、〖110000〗、〖001100〗、〖000011〗的4个。
按图,通常即未在连续循环期间的情况下(与计数值=0一致时),选择器68是输出PRI寄存器中PRI[11:3](=PRI3,2,1字段)内指定的优先顺序。
在连续循环期间的情况下(与计数值=0不一致时),此时的特定指令的发出源在逻辑处理器3中若为[110000],在逻辑处理器2中若为[001100],在逻辑处理器1中若为[000011],那么选择器68就输出PRI[11:3](=PRI3’[1:0],PRI2’[1:0],PRI1’[1:0])。
因此连续循环期间中,特定指令的发出源在逻辑处理器的优先顺序变得暂时最高。
下面,说明对象上述那样构成的本实施例的多线程处理器的操作。
<优先顺序、自停止状态、排他状态的设定操作>
本实施例的多线程处理器中,储备有称为专用指令的用于各指令流(逻辑处理器)优先顺序的设定·变更incpr指令和decpr指令、自停止halt指令、排他停止excsv指令和retex指令。这些专用指令在指令流的源程序中有必要预先适当设定。
比如,提高程序中的优先顺序的各处理部分中,最好在该程序部分之前设定incpr指令、在该程序部分之后设定decpr指令为好。这样设定的incpr指令和decpr指令利用功能单元B按下面那样执行。也就是说,依据逻辑处理器1~3的其中之一有发出源,功能单元B把与PRI寄存器对应的PRx字段中在用户程序方式时以PRIx[0]比特为对象设定为1或0,在监督程序方式时以PRIx[0]为对象设定为1或0。因此,必须依据各逻辑处理器中的优先顺序,就可动态地变更。
此外,停止其他逻辑处理器仅进行自身的逻辑处理器的操作应处理的程序部分中,变为在该程序部分前设定excsv指令,在该程序部分后设定retex指令。这些指令也利用功能单元B象上述那样执行。
相反地,优先其他逻辑处理器停止自身的逻辑处理器的情况下,就变为设定halt指令。这个指令也用功能单元B执行。但是,由于依据对该逻辑处理器中断要求解除停止状态,所以停止状态的逻辑处理器就有必要适当输入中断要求。例如,逻辑处理器之间的内部中断依据IR寄存器。也就是说,发生中断的逻辑处理器按事先通常的寄存器传送指令读取IR寄存器、PIR寄存器或EXCL寄存器后,读取自身的MYID,并且因决定中断前与逻辑处理器对应的IRx比特,所以可由通常的传送指令在IR寄存器中设定内部中断要求。
<整体操作>
例如,在输出指令解码部分1的解码结果和对功能单元B的指令发出要求(要求标记和功能单元B的序号)的情况下,在逻辑处理器1处于自停止状态或利用其他逻辑处理器的排他停止的停止状态的情况下,使根据指令发出判断部分30内的停止判断部分310的要求标记本身未变为无效的输出。因此,其他逻辑处理器2和3可使用功能单元。
逻辑处理器1即使不处于自停止状态,其他逻辑处理器也不处于排他停止的停止状态的情况下,指令发出判断部分30内的分配部分320就对功能单元B进行分配,并且如果功能单元B对逻辑处理器1处于ready状态,那么利用指令判断部分330判断为可发出;如果处于not ready状态就判断为不可发出。
接着,指令发出调解部分40接收来自指令发出判断部分30的各功能单元的指令发出要求,采用来自优先顺序控制部分60的各逻辑处理器的优先顺序,确定功能单元中可发出的逻辑处理器。例如,对于功能单元B仅有来自指令解码部分1的指令发出要求的输出的情况下(图9中1B~3B内仅1B有效的情况),指令发出调解部分40使其指令发出要求有效(图9中1BB~3BB内仅1BB有效)。
例如,指令解码部分1解码对功能单元A的指令,指令解码部分2解码对功能单元B的指令,指令解码部分3解码对功能单元C的指令,并且,在所有功能单元处于ready状态的情况下,对于指令发出调解部分40的3个指令发出要求均有效。
另一方面,指令解码部分1对功能单元A的指令解码,指令解码部分2也对功能单元A的指令解码的情况下(图9中1A和2A同时有效的情况),由于不知哪一个指令不能发出,所以优先顺序判定部分41A由优先顺序控制部分60内的寄存器判断优先顺序,发出优先顺序较高的指令。假设出现逻辑处理器1和逻辑处理器2的优先顺序相同的情况,那么就依据判定辅助部分42A仅使其中一个指令发出要求有效。
还有,指令发出禁止部分50对于由指令发出调解部分40决定发出的指令,在出现逻辑处理器的其中之一需要紧急处理的情况下,禁止该逻辑处理器的指令发出。
指令发出判断部分30和指令发出禁止部分50具有对任一指令发出要求由指令发出候补避开的功能,按下述理由分担功能。
也就是说,对于明确快阶段中指令不能接收的明确因素,在指令发出判断部分30中,不发出和判断不能接收的逻辑处理器的指令,用指令发出的候补避开,假如对于慢阶段仍不明确的因素,在指令发出判断部分30中,用指令发出的候补避开的话,则使能否发出指令的最终判断缓慢,对逻辑处理器的频率提高有影响。
例如,在按1循环进行从指令发出判断至指令发出禁止的情况下,如果在循环的最后将不能发出指令的因素通知给指令发出判断部分30,从那时起就有避开指令发出候补的必要。这种情况中必须使循环长度选取得很长,从而成为阻碍时钟频率提高的主要因素。其中,对于缓慢阶段中仍不明确的指令发出禁止的因素,指令发出禁止部分50就禁止发出。当然,在指令发出禁止部分50中某些逻辑处理器的指令发出被禁止的情况下,即使其以外的逻辑处理器的指令能够发出,但不能代替该指令的发出。对已有的各功能单元A~D的所有发出指令进行1次挤入后的情况。
然后,指令选择部分70,把指令解码部分1~3中解码的指令内容和操作根据来自指令发出禁止部分50的指令发出指示(图11中1AAA~3AAA、1BBB~3BBB、1CCC~3CCC、1DDD~3DDD),向功能单元A~D发出。
再有,本实施例中说明了逻辑处理器为3个、功能单元为4个的情况,当然可以把这些数进行任意地变更。
此外,最好采用多个寄存器分担PRI寄存器的内容。例如,自停止用的各PRIx[2]比特和优先顺序用的各PRIx[1:0]字段最好用个别的寄存器。反过来,最好使PRI寄存器和RI寄存器及EXCL寄存器为这样全部组合或部分组合为一体的寄存器。
还有,特定指令检测部分65也可检测特定指令的执行开始,开始其指令的执行,接收来自功能单元的通知。
本实施例中,展示在多个逻辑处理器对功能单元中指令发出有争用的情况下采用本发明的实例,即使在功能单元以外,多个逻辑处理器若有共有资源也能采用。下面,说明其他实施例。
<其他实施例>
本实施例中,在其有共有多个逻辑处理器资源情况的调解中也能够采用逻辑处理器之间的优先顺序,下面举一实例。
图15是表示本发明其他实施例的多线程处理器的构成框图。
本多线程处理器配有超高速缓冲存储器100、指令解码部分111~113、寄存器群131~133、指令提取控制部分140、指令发出控制部分150、优先顺序控制部分60、功能单元A20~D23、和寄存器控制部分170。与图2相同序号的构成要素因相同而不再说明,以不同点为中心进行说明。
图15中,超高速缓冲存储器100是生成指令流的源程序的超高速缓冲存储器。
指令解码部分111~113分别与图2的指令解码部分1~3相同,但接收指令提取部分140的控制点不同。
寄存器群131~133有分别由多个寄存器组成的寄存器字段,与指令解码部分111~113一一对应。因此,逻辑处理器1~3也一一对应。
指令提取控制部分140与图2所示的指令发出调解部分40和指令发出禁止部分50对应,除调解和禁止没有指令发出要求的指令要求的争用点不同外有相同的功能。也就是说,输入来自优先顺序控制部分60的各逻辑处理器的优先顺序的指定等,在对应超高速缓冲存储器100的多个指令解码部分出现同时指令提取要求的情况下,确定依据优先顺序的提取顺序,此外,在停止特定的逻辑处理器执行的情况下,停止来自其逻辑处理器指令解码部分的指令提取。
指令发出控制部分150把图2所示的指令发出判断部分30、指令发出调解部分40、指令发出禁止部分50和指令选择部分70作为1个构成部件记述,因其有相同的功能而不再说明。
寄存器控制部分170相应于图2所示的指令发出判断部分30和指令发出调解部分40,在没有指令发出要求时除停止和调解寄存器处理要求的争用方面不同外具有相同的功能。也就是说,输入来自优先顺序控制部分60的各逻辑处理器的优先顺序的指定等,对上述寄存器组同时写入多个功能单元的数据要求输出的情况下,为依据优先顺序确定写入顺序的指令发出控制部分。
对于上述构成的功能单元,无论是在逻辑处理器的争用、对超高速缓冲存储器的指令提取要求的争用、还是对寄存器群的数据处理要求的争用情况下,都能按优先顺序实施调解和停止。
再有,上述实施例中,虽然多个指令流和逻辑处理器为3个,功能单元为4个,但并不在意该数的大小。
还有,优先顺序的级别虽是2比特3级别的,实际上几个都行。此外,控制寄存器宽为32位,但不限于该比特宽度。
并且,多个逻辑处理器中同时发生分支的情况下,也可共有地址计算用的资源和超高速缓冲存储器等,与其他实施例一样能够按优先顺序调解。
再有,上述实施例中,PRI寄存器中虽构成有由专门指定的专用指令变更优先顺序,但在专用指令以外由硬件设定·变更也行。这种情况下,也可以利用预定各指令流的优先顺序的时限,或利用监视指令流状态的状态,通过触发硬件的外部因素和内部因素变更优先顺序。
此外,上述实施例中对于图9所示的优先顺序判定部分41A内2个或3个优先顺序相同的情况下,虽可使其首先全部有效后输出,但也可以使其中的一个有效后就输出。那种情况下,就可去除判定辅助部分42A。
而且,图9的判定辅助部分42A设置在优先顺序判定部分41A的后边,而把它设置在优先顺序控制部分60和优先顺序判定部分41A之间,在相同的优先顺序为多个的情况下,还可构成动态变更优先顺序。
再有,上述实施例中PRI寄存器中的MYPRI字段输出PRI寄存器读出指令发出源的优先顺序,但与其同样,比如设置MYDATA字段,也可以输出表示各逻辑处理器状态的数据(状态数据、误差信息等)。
需要禁止部分50A检测的紧急处理除外部中断要求、内部中断要求、超高速缓冲存储器错误和存储器处理误差等处理例以及收集指令等外,还可以有超高速缓冲存储器误差等的各种事件处理。
尽管已利用本发明的实施例并参照附图充分说明了本发明,但需指出,对本领域的技术人员来说,本发明显然还有各种变化和变型。因此,只要这些变化和变型不脱离本发明的范围,那么就应包括在本发明中。

Claims (22)

1.一种执行多个指令流的多线程处理器,包括:
多个功能单元
执行指令;
多个指令解码器
与各指令流对应地设置,分别解码各个指令,作成作为执行该指令的功能单元要求将解码指令发给该功能单元的指令发出要求;
优先权存储器
存储各指令流的优先权,各优先权与其他指令流的优先权独立,并通过专用指令变更;
自停止数据存储器
对各指令流,存储表示应使指令流处于执行状态还是处于停止状态的自停止数据;
调解器
接收来自多个指令解码部分通知的指令发出要求,在2个以上的指令发出要求同时指定一个功能单元的情况下,根据优先权存储器中存储的优先权,确定向该功能单元要发出的解码指令;
停止器
在从多个指令解码器对上述调解器通知的指令发出要求之中,根据所述自停止数据停止从与正处于停止状态的指令流对应的指令解码器向调解器的指令发出要求的通知;
功能单元的1个接收指示优先权变更的专用指令,在优先权存储器中存储的优先权内,只变更该专用指令所属的指令流的优先权;
功能单元的1个接收指示指令流停止的指令,变更在自停止数据存储器中存储的自停止数据,以使只有该指令所属的指令流停止。
2.如权利要求1的多线程处理器,其特征在于还包括:
排他停止数据存储器
存储排他停止数据,该数据表示各指令流中的其他指令流是否处于排他的停止状态;
所述停止器还利用所述排他停止数据,停止从与正处于停止状态的指令流对应的指令解码部分向调解器的指令发出要求的通知。
3.如权利要求1的多线程处理器,其特征在于,
所述专用指令仅由指示提高或降低优先权的操作码组成;
在专用指令解码结果发出的情况下,所述功能单元的1个判别发出该专用指令的指令解码器,提高或降低与判别的指令解码器对应的指令流的优先权。
4.如权利要求3的多线程处理器,其特征在于,
所述存储器包含有读出专用第1字段的控制寄存器;
所述功能单元的1个在控制寄存器读出指令的解码结果发出的情况下,判别发出该读出指令的指令解码器,将与该指令解码器对应的指令流的ID,作为第1字段读出数据在内部总线上输出。
5.如权利要求4的多线程处理器,其特征在于,
所述控制寄存器还有用于存储所述优先权的各指令流的优先权字段;
在控制寄存器读出指令的解码结果发出的情况下,所述功能单元的1个读出各优先权字段。
6.如权利要求1的多线程处理器,其特征在于,
所述存储器有控制寄存器;
所述控制寄存器还有用于存储指令流固有优先权的各指令流的个别字段和读出专用的第2字段;
在所述控制寄存器执行读出指令期间,所述功能单元的1个读出各指令流的个别字段,同时,将与发出该读出指令的指令解码器对应的指令流的固有优先权作为第2字段读出数据在内部总线上输出。
7.如权利要求3的多线程处理器,其特征在于,
所述存储器有存储各指令流优先权的优先权字段;
所述优先权字段由表示指令流按执行模式区分的优先权的小字段组成;
在专用指令解码结果发出的情况下,所述功能单元的1个判别发出该专用指令的指令解码器,提高或降低与判别指令解码器对应的指令流优先权字段内当前执行模式用的小字段的优先权。
8.如权利要求1的多线程处理器,其特征在于还包括:
特定指令检测器
在功能单元中的1个开始执行特定指令时,检测是哪个指令解码器发出了该特定指令的解码结果;
暂时变更器
在检测特定指令开始执行时,在预定期间暂时地变更与发出该特定指令的指令解码器对应的指令流的优先权,使该指令流的优先权变得比其他指令流的优先权高。
9.同时且独立并行地执行多个指令流的多线程处理器,包括:
多个功能单元
分别同时并独立地执行指令;
多个指令解码器
与所述多个指令流对应地设置,分别提取并解码各个指令流的指令,决定所述功能单元中应作为发出目的地的功能单元;
优先权指定器
指定所述多个指令流中的各个的优先权,各优先权与其他指令流的优先权独立,并通过专用指令变更;
指令发出判断器
根据表示是否可以接收指令的各功能单元的状态,判断能否对应作为所述发出目的地的功能单元发出解码的指令;
指令发出调解器
在对一个功能单元判断为可发出2个以上的指令的情况下,根据由所述优先权指定器中指定的优先权调解该2个以上的指令,确定对该一个功能单元应发出的一个指令;
所述功能单元的1个接收指示优先权变更的专用指令,在优先权指定器的优先权之中,只变更该专用指令所属的指令流的优先权。
10.如权利要求9的多线程处理器,其特征在于还包括:
指令发出禁止器
在发生对应于其中一个指令流的需要紧急处理的情况下,依据对属于该指令流指令的所述指令发出调解器要发出和确定的指令,暂时禁止向功能单元的指令发出。
11.如权利要求10的多线程处理器,其特征在于,
所述需要的紧急处理是当已知超高速缓冲存储器发生事件时产生中断要求。
12.如权利要求10的多线程处理器,其特征在于,
所述优先权指定器为
控制寄存器
存储各指令流中指令流的优先权;
其中,优先权根据指令流中的指令设定。
13.如权利要求12的多线程处理器,其特征在于,
所述指令发出调解器还对一个功能单元能否发出2个以上的指令进行判断,并且,在该2个以上的指令所属的指令流为同顺序的优先权情况下,按预定次序决定发出给该一个功能单元的指令。
14.如权利要求13的多线程处理器,其特征在于,
所述指令发出调解器为
辅助判定器
作为所述预定的次序、根据决定周期不同的指令流优先的次序、决定与指令流执行的履历的前次不同的指令流的指令次序、和决定固定其中任一个指令流的指令次序的任一个,决定要发出的指令。
15.如权利要求12的多线程处理器,其特征在于,
所述控制寄存器在各指令流中具有按执行模式区分的优先权字段;
所述指令发出调解器参照与指令流的执行模式相应的优先权字段进行所述调解。
16.如权利要求10的多线程处理器,其特征在于,
所述优先权指定器配有控制寄存器,该控制寄存器有根据指令流中的专用指令、能按执行模式区分而设定在各指令流中的优先权字段;
功能单元的1个检测与所述专用指令的发出源的指令解码器对应的指令流和其执行模式,根据与检测的指令流和执行模式相应的优先权字段中的专用指令设定优先权。
17.如权利要求16的多线程处理器,其特征在于,
所述专用指令仅由操作码组成,指示提高或下降优先权。
18.如权利要求9的多线程处理器,其特征在于,
所述优先权指定器,包括:
第1寄存器
存储依据第1指令可设定的各指令流的优先权;
第2寄存器
存储依据第2指令可设定的、表示指令流为执行状态还是停止状态的各指令流的状态标志;
第3寄存器
存储依据第3指令可设定的、表示停止其他所有指令流的各指令流的排他停止标志;
所述指令发出判断器判断能否根据所述状态标志和排他停止寄存器发出停止中的指令流的指令。
19.如权利要求18的多线程处理器,其特征在于,
所述第1指令为仅由指示提高或降低优先权的操作码组成的指令;
所述第2指令为仅由指示进入停止状态的操作码组成的指令;
所述第3指令为仅由指示停止其他指令流的操作码组成的指令;
在发出第1、第2或第3指令时,所述功能单元的1个检测与该指令的发出源的指令解码器对应的指令流,变更与检测的指令流相应的优先权、状态标记或排他停止标记。
20.执行多个指令流的多线程处理器,包括:
多个功能单元
分别执行指令;
多个指令解码器
与各指令流对应地设置,分别解码各个指令,指定应执行该指令的功能单元,并且作成要求将解码了的指令要发给该功能单元的指令发出要求;
存储器
对各指令流,存储各指令流的优先权,各优先权不依赖于其他指令流的优先权而独立,并通过专用指令变更;
控制器
在两个以上的指令发出要求同时指定一个功能单元时,按照存储在存储器的优先权,决定应发出到该功能单元的已译码指令;
改写器
按照指示优先权的变更的专用指令,在存储于存储器的优先权内,只改写该专用指令所属的指令流的优先权。
21.如权利要求20的多线程处理器,其特征在于,
所述控制器对一个功能单元能否发出2个以上的指令进行判断,并且,在该2个以上的指令所属的指令流为同顺序的优先权情况下,按预定次序决定应发出给该功能单元的指令。
22.如权利要求21的多线程处理器,其特征在于:
上述控制器作为上述预定次序,按照:使不同的指令流周期地优先的决定次序,由指令流的执行履历,决定应要发出与上次不同的指令流的指令的决定次序,和固定地决定任何一个指令流的指令的决定次序之中的任何一个,决定应要发出的指令。
CNB031548881A 1996-08-27 1997-08-27 独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器 Expired - Lifetime CN1280714C (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP224720/1996 1996-08-27
JP224720/96 1996-08-27
JP22472096 1996-08-27

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CNB971193169A Division CN1147785C (zh) 1996-08-27 1997-08-27 执行多个指令流的多程序流程同时处理器

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CNB2005101251756A Division CN100373331C (zh) 1996-08-27 1997-08-27 独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器

Publications (2)

Publication Number Publication Date
CN1495605A CN1495605A (zh) 2004-05-12
CN1280714C true CN1280714C (zh) 2006-10-18

Family

ID=16818198

Family Applications (3)

Application Number Title Priority Date Filing Date
CNB971193169A Expired - Fee Related CN1147785C (zh) 1996-08-27 1997-08-27 执行多个指令流的多程序流程同时处理器
CNB2005101251756A Expired - Lifetime CN100373331C (zh) 1996-08-27 1997-08-27 独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器
CNB031548881A Expired - Lifetime CN1280714C (zh) 1996-08-27 1997-08-27 独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器

Family Applications Before (2)

Application Number Title Priority Date Filing Date
CNB971193169A Expired - Fee Related CN1147785C (zh) 1996-08-27 1997-08-27 执行多个指令流的多程序流程同时处理器
CNB2005101251756A Expired - Lifetime CN100373331C (zh) 1996-08-27 1997-08-27 独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器

Country Status (5)

Country Link
US (1) US6105127A (zh)
EP (2) EP0827071B1 (zh)
KR (1) KR100500002B1 (zh)
CN (3) CN1147785C (zh)
DE (2) DE69717369T2 (zh)

Families Citing this family (145)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6658447B2 (en) * 1997-07-08 2003-12-02 Intel Corporation Priority based simultaneous multi-threading
KR100562116B1 (ko) * 1997-11-28 2006-05-25 마츠시타 덴끼 산교 가부시키가이샤 처리 효율을 높인 영상음성 처리장치
US6286027B1 (en) * 1998-11-30 2001-09-04 Lucent Technologies Inc. Two step thread creation with register renaming
US7035997B1 (en) 1998-12-16 2006-04-25 Mips Technologies, Inc. Methods and apparatus for improving fetching and dispatch of instructions in multithreaded processors
US7020879B1 (en) 1998-12-16 2006-03-28 Mips Technologies, Inc. Interrupt and exception handling for multi-streaming digital processors
US7237093B1 (en) 1998-12-16 2007-06-26 Mips Technologies, Inc. Instruction fetching system in a multithreaded processor utilizing cache miss predictions to fetch instructions from multiple hardware streams
US7257814B1 (en) 1998-12-16 2007-08-14 Mips Technologies, Inc. Method and apparatus for implementing atomicity of memory operations in dynamic multi-streaming processors
US7529907B2 (en) 1998-12-16 2009-05-05 Mips Technologies, Inc. Method and apparatus for improved computer load and store operations
US6389449B1 (en) 1998-12-16 2002-05-14 Clearwater Networks, Inc. Interstream control and communications for multi-streaming digital processors
US6477562B2 (en) * 1998-12-16 2002-11-05 Clearwater Networks, Inc. Prioritized instruction scheduling for multi-streaming processors
US6260133B1 (en) * 1999-02-08 2001-07-10 Kabushiki Kaisha Toshiba Processor having operating instruction which uses operation units in different pipelines simultaneously
US6535905B1 (en) 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor
US6542921B1 (en) * 1999-07-08 2003-04-01 Intel Corporation Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor
US7546444B1 (en) 1999-09-01 2009-06-09 Intel Corporation Register set used in multithreaded parallel processor architecture
WO2001018646A1 (en) * 1999-09-01 2001-03-15 Intel Corporation Branch instruction for multithreaded processor
JP4160705B2 (ja) * 1999-10-15 2008-10-08 富士通株式会社 プロセッサ及びプロセッサシステム
US7518993B1 (en) * 1999-11-19 2009-04-14 The United States Of America As Represented By The Secretary Of The Navy Prioritizing resource utilization in multi-thread computing system
US6889319B1 (en) * 1999-12-09 2005-05-03 Intel Corporation Method and apparatus for entering and exiting multiple threads within a multithreaded processor
US6496925B1 (en) 1999-12-09 2002-12-17 Intel Corporation Method and apparatus for processing an event occurrence within a multithreaded processor
US6357016B1 (en) 1999-12-09 2002-03-12 Intel Corporation Method and apparatus for disabling a clock signal within a multithreaded processor
US7051329B1 (en) 1999-12-28 2006-05-23 Intel Corporation Method and apparatus for managing resources in a multithreaded processor
DE10000960C1 (de) * 2000-01-12 2001-12-20 Infineon Technologies Ag Datenverarbeitungsvorrichtung
US6671795B1 (en) 2000-01-21 2003-12-30 Intel Corporation Method and apparatus for pausing execution in a processor or the like
US8041754B1 (en) * 2000-01-22 2011-10-18 Intel Corporation Establishing thread priority in a processor or the like
US7856633B1 (en) 2000-03-24 2010-12-21 Intel Corporation LRU cache replacement for a partitioned set associative cache
US7007153B1 (en) 2000-03-30 2006-02-28 Agere Systems Inc. Method and apparatus for allocating functional units in a multithreaded VLIW processor
US6658551B1 (en) * 2000-03-30 2003-12-02 Agere Systems Inc. Method and apparatus for identifying splittable packets in a multithreaded VLIW processor
WO2002006959A1 (en) 2000-07-14 2002-01-24 Clearwater Networks, Inc. Instruction fetch and dispatch in multithreaded system
AU2002241767A1 (en) * 2000-10-23 2002-06-18 Xyron Corporation Concurrent-multitasking processor
US7035998B1 (en) 2000-11-03 2006-04-25 Mips Technologies, Inc. Clustering stream and/or instruction queues for multi-streaming processors
US7139898B1 (en) * 2000-11-03 2006-11-21 Mips Technologies, Inc. Fetch and dispatch disassociation apparatus for multistreaming processors
GB2372847B (en) 2001-02-19 2004-12-29 Imagination Tech Ltd Control of priority and instruction rates on a multithreaded processor
US6895520B1 (en) 2001-03-02 2005-05-17 Advanced Micro Devices, Inc. Performance and power optimization via block oriented performance measurement and control
US7320065B2 (en) 2001-04-26 2008-01-15 Eleven Engineering Incorporated Multithread embedded processor with input/output capability
US20030014474A1 (en) * 2001-05-30 2003-01-16 Mckaig Ray S. Alternate zero overhead task change circuit
US20020184290A1 (en) * 2001-05-31 2002-12-05 International Business Machines Corporation Run queue optimization with hardware multithreading for affinity
US20040172631A1 (en) * 2001-06-20 2004-09-02 Howard James E Concurrent-multitasking processor
US6779065B2 (en) * 2001-08-31 2004-08-17 Intel Corporation Mechanism for interrupt handling in computer systems that support concurrent execution of multiple threads
US7676588B2 (en) * 2001-10-05 2010-03-09 International Business Machines Corporation Programmable network protocol handler architecture
US7072970B2 (en) * 2001-10-05 2006-07-04 International Business Machines Corporation Programmable network protocol handler architecture
AU2002348842A1 (en) * 2001-11-26 2003-06-10 Koninklijke Philips Electronics N.V. Wlim architecture with power down instruction
US7127561B2 (en) 2001-12-31 2006-10-24 Intel Corporation Coherency techniques for suspending execution of a thread until a specified memory access occurs
US20030126416A1 (en) * 2001-12-31 2003-07-03 Marr Deborah T. Suspending execution of a thread in a multi-threaded processor
US7363474B2 (en) 2001-12-31 2008-04-22 Intel Corporation Method and apparatus for suspending execution of a thread until a specified memory access occurs
US6895497B2 (en) * 2002-03-06 2005-05-17 Hewlett-Packard Development Company, L.P. Multidispatch CPU integrated circuit having virtualized and modular resources and adjustable dispatch priority
US7213134B2 (en) * 2002-03-06 2007-05-01 Hewlett-Packard Development Company, L.P. Using thread urgency in determining switch events in a temporal multithreaded processor unit
US8024735B2 (en) * 2002-06-14 2011-09-20 Intel Corporation Method and apparatus for ensuring fairness and forward progress when executing multiple threads of execution
JP3769249B2 (ja) * 2002-06-27 2006-04-19 富士通株式会社 命令処理装置および命令処理方法
US7219241B2 (en) * 2002-11-30 2007-05-15 Intel Corporation Method for managing virtual and actual performance states of logical processors in a multithreaded processor using system management mode
DE502004009010D1 (de) * 2003-03-05 2009-04-02 Bridgeco Ag Prozessor mit verschiedenartigen steuerwerken für gemeinsam genutzte ressourcen
US7013400B2 (en) * 2003-04-24 2006-03-14 International Business Machines Corporation Method for managing power in a simultaneous multithread processor by loading instructions into pipeline circuit during select times based on clock signal frequency and selected power mode
US7213093B2 (en) 2003-06-27 2007-05-01 Intel Corporation Queued locks using monitor-memory wait
US7239322B2 (en) 2003-09-29 2007-07-03 Ati Technologies Inc Multi-thread graphic processing system
US20050108711A1 (en) * 2003-11-13 2005-05-19 Infineon Technologies North America Corporation Machine instruction for enhanced control of multiple virtual processor systems
US6897871B1 (en) 2003-11-20 2005-05-24 Ati Technologies Inc. Graphics processing architecture employing a unified shader
US6987517B1 (en) * 2004-01-06 2006-01-17 Nvidia Corporation Programmable graphics processor for generalized texturing
FR2867873A1 (fr) 2004-03-18 2005-09-23 St Microelectronics Sa Dispositif et procede de gestion d'un etat d'attente d'un microprocesseur
FR2867872A1 (fr) * 2004-03-18 2005-09-23 St Microelectronics Sa Dispositif et procede de gestion d'un etat d'attente d'un microprocesseur
JP2005301791A (ja) * 2004-04-14 2005-10-27 Nec Corp 移動通信端末および移動通信端末のアプリケーション起動制御方法
US7418582B1 (en) 2004-05-13 2008-08-26 Sun Microsystems, Inc. Versatile register file design for a multi-threaded processor utilizing different modes and register windows
US7330988B2 (en) * 2004-06-30 2008-02-12 Sun Microsystems, Inc. Method and apparatus for power throttling in a multi-thread processor
US7216216B1 (en) 2004-06-30 2007-05-08 Sun Microsystems, Inc. Register window management using first pipeline to change current window and second pipeline to read operand from old window and write operand to new window
US7401206B2 (en) * 2004-06-30 2008-07-15 Sun Microsystems, Inc. Apparatus and method for fine-grained multithreading in a multipipelined processor core
US7343474B1 (en) 2004-06-30 2008-03-11 Sun Microsystems, Inc. Minimal address state in a fine grain multithreaded processor
US7434000B1 (en) 2004-06-30 2008-10-07 Sun Microsystems, Inc. Handling duplicate cache misses in a multithreaded/multi-core processor
US7366829B1 (en) 2004-06-30 2008-04-29 Sun Microsystems, Inc. TLB tag parity checking without CAM read
US7774393B1 (en) 2004-06-30 2010-08-10 Oracle America, Inc. Apparatus and method for integer to floating-point format conversion
US7676655B2 (en) * 2004-06-30 2010-03-09 Sun Microsystems, Inc. Single bit control of threads in a multithreaded multicore processor
US8095778B1 (en) * 2004-06-30 2012-01-10 Open Computing Trust I & II Method and system for sharing functional units of a multithreaded processor
US7373489B1 (en) 2004-06-30 2008-05-13 Sun Microsystems, Inc. Apparatus and method for floating-point exception prediction and recovery
US7185178B1 (en) 2004-06-30 2007-02-27 Sun Microsystems, Inc. Fetch speculation in a multithreaded processor
US7437538B1 (en) 2004-06-30 2008-10-14 Sun Microsystems, Inc. Apparatus and method for reducing execution latency of floating point operations having special case operands
US7509484B1 (en) 2004-06-30 2009-03-24 Sun Microsystems, Inc. Handling cache misses by selectively flushing the pipeline
US7426630B1 (en) 2004-06-30 2008-09-16 Sun Microsystems, Inc. Arbitration of window swap operations
US7523330B2 (en) * 2004-06-30 2009-04-21 Sun Microsystems, Inc. Thread-based clock enabling in a multi-threaded processor
US7478225B1 (en) 2004-06-30 2009-01-13 Sun Microsystems, Inc. Apparatus and method to support pipelining of differing-latency instructions in a multithreaded processor
US7861063B1 (en) 2004-06-30 2010-12-28 Oracle America, Inc. Delay slot handling in a processor
US7890734B2 (en) * 2004-06-30 2011-02-15 Open Computing Trust I & II Mechanism for selecting instructions for execution in a multithreaded processor
US7383403B1 (en) 2004-06-30 2008-06-03 Sun Microsystems, Inc. Concurrent bypass to instruction buffers in a fine grain multithreaded processor
US7533248B1 (en) * 2004-06-30 2009-05-12 Sun Microsystems, Inc. Multithreaded processor including a functional unit shared between multiple requestors and arbitration therefor
US7702887B1 (en) 2004-06-30 2010-04-20 Sun Microsystems, Inc. Performance instrumentation in a fine grain multithreaded multicore processor
US7353364B1 (en) 2004-06-30 2008-04-01 Sun Microsystems, Inc. Apparatus and method for sharing a functional unit execution resource among a plurality of functional units
US7370243B1 (en) 2004-06-30 2008-05-06 Sun Microsystems, Inc. Precise error handling in a fine grain multithreaded multicore processor
US8225034B1 (en) 2004-06-30 2012-07-17 Oracle America, Inc. Hybrid instruction buffer
US7290116B1 (en) 2004-06-30 2007-10-30 Sun Microsystems, Inc. Level 2 cache index hashing to avoid hot spots
US7178005B1 (en) 2004-06-30 2007-02-13 Sun Microsystems, Inc. Efficient implementation of timers in a multithreaded processor
US7747771B1 (en) 2004-06-30 2010-06-29 Oracle America, Inc. Register access protocol in a multihreaded multi-core processor
US7941642B1 (en) 2004-06-30 2011-05-10 Oracle America, Inc. Method for selecting between divide instructions associated with respective threads in a multi-threaded processor
US7595629B2 (en) * 2004-07-09 2009-09-29 Formfactor, Inc. Method and apparatus for calibrating and/or deskewing communications channels
US7890735B2 (en) * 2004-08-30 2011-02-15 Texas Instruments Incorporated Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture
US8037250B1 (en) 2004-12-09 2011-10-11 Oracle America, Inc. Arbitrating cache misses in a multithreaded/multi-core processor
US7394288B1 (en) * 2004-12-13 2008-07-01 Massachusetts Institute Of Technology Transferring data in a parallel processing environment
US8719819B2 (en) 2005-06-30 2014-05-06 Intel Corporation Mechanism for instruction set based thread execution on a plurality of instruction sequencers
US7657891B2 (en) * 2005-02-04 2010-02-02 Mips Technologies, Inc. Multithreading microprocessor with optimized thread scheduler for increasing pipeline utilization efficiency
US7506140B2 (en) * 2005-02-04 2009-03-17 Mips Technologies, Inc. Return data selector employing barrel-incrementer-based round-robin apparatus
US7631130B2 (en) * 2005-02-04 2009-12-08 Mips Technologies, Inc Barrel-incrementer-based round-robin apparatus and instruction dispatch scheduler employing same for use in multithreading microprocessor
US7664936B2 (en) * 2005-02-04 2010-02-16 Mips Technologies, Inc. Prioritizing thread selection partly based on stall likelihood providing status information of instruction operand register usage at pipeline stages
US7681014B2 (en) 2005-02-04 2010-03-16 Mips Technologies, Inc. Multithreading instruction scheduler employing thread group priorities
US7490230B2 (en) * 2005-02-04 2009-02-10 Mips Technologies, Inc. Fetch director employing barrel-incrementer-based round-robin apparatus for use in multithreading microprocessor
US7752627B2 (en) * 2005-02-04 2010-07-06 Mips Technologies, Inc. Leaky-bucket thread scheduler in a multithreading microprocessor
US7657883B2 (en) * 2005-02-04 2010-02-02 Mips Technologies, Inc. Instruction dispatch scheduler employing round-robin apparatus supporting multiple thread priorities for use in multithreading microprocessor
US7853777B2 (en) * 2005-02-04 2010-12-14 Mips Technologies, Inc. Instruction/skid buffers in a multithreading microprocessor that store dispatched instructions to avoid re-fetching flushed instructions
US7613904B2 (en) * 2005-02-04 2009-11-03 Mips Technologies, Inc. Interfacing external thread prioritizing policy enforcing logic with customer modifiable register to processor internal scheduler
US20060229638A1 (en) * 2005-03-29 2006-10-12 Abrams Robert M Articulating retrieval device
US7882339B2 (en) * 2005-06-23 2011-02-01 Intel Corporation Primitives to enhance thread-level speculation
JP2007109057A (ja) * 2005-10-14 2007-04-26 Hitachi Ltd プロセッサ
US7386647B2 (en) * 2005-10-14 2008-06-10 Dell Products L.P. System and method for processing an interrupt in a processor supporting multithread execution
US20070094664A1 (en) * 2005-10-21 2007-04-26 Kimming So Programmable priority for concurrent multi-threaded processors
US7734897B2 (en) * 2005-12-21 2010-06-08 Arm Limited Allocation of memory access operations to memory access capable pipelines in a superscalar data processing apparatus and method having a plurality of execution threads
CN100362477C (zh) * 2006-03-10 2008-01-16 华为技术有限公司 一种协调面向用户功能执行顺序的方法和装置
GB2449106B (en) * 2007-05-10 2011-07-27 Advanced Risc Mach Ltd Issue policy control within a multi-threaded in-order superscalar processor
CN101681260B (zh) * 2007-06-20 2013-04-17 富士通株式会社 运算装置
JP4907487B2 (ja) * 2007-10-24 2012-03-28 株式会社リコー 画像処理装置、画像処理方法及び該方法を実行させるためのプログラムを格納したコンピュータ読み取り可能な記録媒体
US7962690B2 (en) * 2008-01-04 2011-06-14 International Business Machines Corporation Apparatus and method to access data in a raid array
WO2010021119A1 (ja) * 2008-08-21 2010-02-25 パナソニック株式会社 命令制御装置
US7941644B2 (en) * 2008-10-16 2011-05-10 International Business Machines Corporation Simultaneous multi-thread instructions issue to execution units while substitute injecting sequence of instructions for long latency sequencer instruction via multiplexer
US20100115494A1 (en) * 2008-11-03 2010-05-06 Gorton Jr Richard C System for dynamic program profiling
US8024719B2 (en) 2008-11-03 2011-09-20 Advanced Micro Devices, Inc. Bounded hash table sorting in a dynamic program profiling system
US8478948B2 (en) * 2008-12-04 2013-07-02 Oracle America, Inc. Method and system for efficient tracing and profiling of memory accesses during program execution
US7930519B2 (en) * 2008-12-17 2011-04-19 Advanced Micro Devices, Inc. Processor with coprocessor interfacing functional unit for forwarding result from coprocessor to retirement unit
CN101770357B (zh) * 2008-12-31 2014-10-22 世意法(北京)半导体研发有限责任公司 减少处理器中的指令冲突
JP5330507B2 (ja) 2009-05-18 2013-10-30 パナソニック株式会社 プロセッサ
JP5548037B2 (ja) 2010-06-11 2014-07-16 パナソニック株式会社 命令発行制御装置及び方法
GB2486485B (en) 2010-12-16 2012-12-19 Imagination Tech Ltd Method and apparatus for scheduling the issue of instructions in a microprocessor using multiple phases of execution
US8938606B2 (en) * 2010-12-22 2015-01-20 Intel Corporation System, apparatus, and method for segment register read and write regardless of privilege level
US9424685B2 (en) 2012-07-31 2016-08-23 Imagination Technologies Limited Unified rasterization and ray tracing rendering environments
US10140129B2 (en) * 2012-12-28 2018-11-27 Intel Corporation Processing core having shared front end unit
US9417873B2 (en) 2012-12-28 2016-08-16 Intel Corporation Apparatus and method for a hybrid latency-throughput processor
US9361116B2 (en) 2012-12-28 2016-06-07 Intel Corporation Apparatus and method for low-latency invocation of accelerators
US9542193B2 (en) 2012-12-28 2017-01-10 Intel Corporation Memory address collision detection of ordered parallel threads with bloom filters
US10346195B2 (en) 2012-12-29 2019-07-09 Intel Corporation Apparatus and method for invocation of a multi threaded accelerator
JP5803972B2 (ja) 2013-04-18 2015-11-04 株式会社デンソー マルチコアプロセッサ
KR101502421B1 (ko) 2013-07-31 2015-03-16 한국항공우주연구원 시험 및 운영 절차 동시 수행 방법 및 시스템
EP2940575B1 (en) * 2014-05-02 2018-05-09 Nxp B.V. Controller circuits, data interface blocks, and methods for transferring data
US10467011B2 (en) 2014-07-21 2019-11-05 Intel Corporation Thread pause processors, methods, systems, and instructions
GB2544994A (en) 2015-12-02 2017-06-07 Swarm64 As Data processing
US10706101B2 (en) 2016-04-14 2020-07-07 Advanced Micro Devices, Inc. Bucketized hash tables with remap entries
CN111079916B (zh) * 2018-10-19 2021-01-15 安徽寒武纪信息科技有限公司 运算方法、系统及相关产品
CN111079912B (zh) * 2018-10-19 2021-02-12 中科寒武纪科技股份有限公司 运算方法、系统及相关产品
CN111079911B (zh) * 2018-10-19 2021-02-09 中科寒武纪科技股份有限公司 运算方法、系统及相关产品
CN111078293B (zh) * 2018-10-19 2021-03-16 中科寒武纪科技股份有限公司 运算方法、装置及相关产品
CN113168328B (zh) 2018-12-11 2024-01-26 三垦电气株式会社 处理器和管线处理方法
US11397612B2 (en) * 2019-07-27 2022-07-26 Analog Devices International Unlimited Company Autonomous job queueing system for hardware accelerators
CN110979347B (zh) * 2019-12-10 2021-11-23 北京经纬恒润科技股份有限公司 一种自动驾驶汽车底盘域的指令仲裁方法及系统
CN115629807B (zh) * 2022-10-31 2023-04-14 海光信息技术股份有限公司 多线程处理器的译码方法、处理器、芯片及电子设备

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6019709B2 (ja) * 1977-07-19 1985-05-17 三菱電機株式会社 信号2値化装置
DE3532481A1 (de) * 1985-09-12 1987-03-19 Philips Patentverwaltung Datenverarbeitungsanordnung
CN1009399B (zh) * 1987-06-02 1990-08-29 德国Itt工业股份公司 中央处理器
JP2908598B2 (ja) * 1991-06-06 1999-06-21 松下電器産業株式会社 情報処理装置
US5357617A (en) * 1991-11-22 1994-10-18 International Business Machines Corporation Method and apparatus for substantially concurrent multiple instruction thread processing by a single pipeline processor
US5404469A (en) * 1992-02-25 1995-04-04 Industrial Technology Research Institute Multi-threaded microprocessor architecture utilizing static interleaving
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
DE69615588T2 (de) * 1996-07-16 2002-05-29 Rammohan Narayan Parallele und skalierbare befehlsabtasteinheit

Also Published As

Publication number Publication date
EP1291765B1 (en) 2009-12-30
CN100373331C (zh) 2008-03-05
CN1177772A (zh) 1998-04-01
EP0827071A2 (en) 1998-03-04
EP1291765A2 (en) 2003-03-12
EP0827071B1 (en) 2002-11-27
EP1291765A3 (en) 2006-10-25
DE69739726D1 (de) 2010-02-11
CN1147785C (zh) 2004-04-28
CN1782989A (zh) 2006-06-07
CN1495605A (zh) 2004-05-12
DE69717369T2 (de) 2003-09-11
DE69717369D1 (de) 2003-01-09
KR100500002B1 (ko) 2005-09-08
KR19980019064A (ko) 1998-06-05
US6105127A (en) 2000-08-15
EP0827071A3 (en) 1999-01-20

Similar Documents

Publication Publication Date Title
CN1280714C (zh) 独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器
CN1287282C (zh) 执行实时操作的方法和系统
CN1284095C (zh) 多处理器系统中的任务分配方法和多处理器系统
CN1175341C (zh) 异步更新共享资源的接口系统和方法
CN1295583C (zh) 实现实时操作的方法和系统
CN1185592C (zh) 并行处理器结构
CN1153155C (zh) 装有高效利用主处理器中的寄存器数据的协处理器的信息处理装置
CN1113289C (zh) 能执行多异步运行任务中的异步事件任务的处理器
CN1271513C (zh) 转移指令的方法和处理器
CN1846194A (zh) 一种在处理器中执行的计算线程的暂停与解除分配的整合机制
CN1577311A (zh) 调度方法和实时处理系统
CN1916961A (zh) 可中断图形处理单元及其控制方法
CN1916962A (zh) 存储和回存状态上下文在图形处理单元的方法和装置
CN1233016A (zh) 具有事件相关矢量选择的历境控制器和采用其的处理器
CN1601474A (zh) 执行实时操作的方法和系统
CN1906583A (zh) 信息处理设备、中断处理控制方法、以及计算机程序
CN1760836A (zh) 信息处理系统、信息处理方法和程序
CN1497435A (zh) 处理器
CN1912926A (zh) 可中断图形处理单元处理多个程序的方法和图形处理单元
CN1734438A (zh) 信息处理设备、信息处理方法和程序
CN1609812A (zh) 用于增强协处理器性能的系统和方法
CN1993674A (zh) 多芯架构中的资源管理
CN1319210A (zh) 可配置的硬件块的配置方法
CN1387644A (zh) 并行处理器体系结构的sdram控制器
CN1908904A (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
CX01 Expiry of patent term
CX01 Expiry of patent term

Granted publication date: 20061018