CN100373331C - 独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器 - Google Patents
独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器 Download PDFInfo
- Publication number
- CN100373331C CN100373331C CNB2005101251756A CN200510125175A CN100373331C CN 100373331 C CN100373331 C CN 100373331C CN B2005101251756 A CNB2005101251756 A CN B2005101251756A CN 200510125175 A CN200510125175 A CN 200510125175A CN 100373331 C CN100373331 C CN 100373331C
- Authority
- CN
- China
- Prior art keywords
- instruction
- priority
- functional unit
- stream
- logic processor
- 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
Links
- 238000012545 processing Methods 0.000 title description 23
- 238000000034 method Methods 0.000 claims description 49
- 230000008859 change Effects 0.000 claims description 12
- 238000010586 diagram Methods 0.000 description 27
- 230000006870 function Effects 0.000 description 26
- 230000015572 biosynthetic process Effects 0.000 description 17
- 101100353168 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) PRI1 gene Proteins 0.000 description 14
- 101100353178 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) PRI2 gene Proteins 0.000 description 14
- 101100353177 Schizosaccharomyces pombe (strain 972 / ATCC 24843) spp2 gene Proteins 0.000 description 14
- 101150047682 priL gene Proteins 0.000 description 14
- 101150103950 priS gene Proteins 0.000 description 14
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 description 12
- 230000008569 process Effects 0.000 description 10
- 230000004087 circulation Effects 0.000 description 8
- 238000012546 transfer Methods 0.000 description 8
- 238000007667 floating Methods 0.000 description 6
- 238000012360 testing method Methods 0.000 description 5
- 230000001052 transient effect Effects 0.000 description 5
- QMBJSIBWORFWQT-DFXBJWIESA-N Chlormadinone acetate Chemical compound C1=C(Cl)C2=CC(=O)CC[C@]2(C)[C@@H]2[C@@H]1[C@@H]1CC[C@@](C(C)=O)(OC(=O)C)[C@@]1(C)CC2 QMBJSIBWORFWQT-DFXBJWIESA-N 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 239000003112 inhibitor Substances 0.000 description 4
- 238000001514 detection method Methods 0.000 description 3
- 101000621511 Potato virus M (strain German) RNA silencing suppressor Proteins 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000001343 mnemonic effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- 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/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control instructions
-
- 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/3818—Decoding for concurrent execution
- G06F9/3822—Parallel decoding, e.g. parallel decode units
-
- 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
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:Intemational 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个以上的指令超高速缓冲存储器有同时指令提取要求的情况下,根据所述优先权控制电路的优先权,调解指令提取要求的指令提取控制器。
依据此构成,由于对指令超高速缓冲存储器中来自多个指令提取器的指令提取要求有争用的情况下按优先权进行调解,所以多线程处理器的上游处理中,可达到动态调整各指令流处理性能的效果。
此外,实现上述目的的多线程处理器具有执行指令的多个功能单元;从指令超高速缓冲存储器提取并解码指令,指定要执行该指令的功能单元,输出指令发出要求的多个指令解码部分;有与指令解码部分数量相同的寄存器组;是同时且独立地执行与指令解码部分数量相同的多个指令流的多线程处理器,它包括:
存储依据指令流中的指令在各指令流中设定的指令流优先权的存储器;
对于多个指令流的共有资源,在两个以上的指令流同时争用的情况下,根据所述优先权调解的控制器;
对所述共有资源的争用为对一个功能单元有来自两个以上的指令解码部分的指令发出要求的争用、对指令超高速缓冲存储器有来自两个以上的指令解码部分的指令提取要求的争用、对一个寄存器组有来自两个以上的功能单元的处理要求的争用的其中之一。
依据此构成,对指令流的共有资源有来自多个指令流处理要求的争用情况下,由于按优先权进行调解,所以可以达到软式调整各指令流处理性能的效果。
从本发明的实施例及其附图中,可进一步说明本发明的这些和其他目的、优点和特征。其中:
附图说明
图1是表示现有的多线程处理器的构成框图。
图2是表示本发明实施例的多线程处理器的构成框图。
图3是表示本发明实施例中指令流控制器的优先顺序指定寄存器的说明图。
图4是表示上述实施例中指令流控制器的优先顺序指定寄存器的低位2比特的说明图。
图5是表示上述实施例中指令流控制器的优先顺序指定寄存器的高位1比特的说明图。
图6是表示上述实施例中指令流控制器的内部中断寄存器的构成图。
图7是表示上述实施例中指令流控制器的隔断停止寄存器的构成图。
图8是表示上述实施例中指令发出判断部分的详细构成例的框图。
图9是表示上述实施例中指令发出调解部分的详细构成例的框图。
图10A~图10C是表示上述实施例中优先判定部分的控制逻辑的说明框图。
图11是表示上述实施例中指令发出禁止部分的详细构成例的框图。
图12是表示功能单元专用指令及控制寄存器的读出指令的执行内容的说明图。
图13是表示优先顺序控制部分的详细构成框图。
图14是表示连续循环优先部分内的选择器中输入的选择信号与输出值关系的说明图。
图15是表示本发明其他实施例的多线程处理器的框图。
具体实施方式
图2是表示本发明实施例的多线程处理器的主要部分的构成框图。
本多线程处理器具有指令解码部分1~3、功能单元A20、功能单元B2
1、功能单元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]的各比特。
〖movIR,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 (2)
1.同时且独立地执行多个指令流的多线程处理器,它具有执行指令的多个功能单元;从指令超高速缓冲存储器提取解码指令并解码,指定要执行该指令的功能单元,输出指令发出要求的多个指令解码部分;与指令解码部分相同数量的寄存器组;该多个指令流的数量与指令解码部分的数量相同,它还包括:
存储器
存储依据指令流中的指令在各指令流中可设定的指令流的优先权,各优先权与其他指令流的优先权独立,并通过专用指令变更;
控制器
对由多个指令流共有的资源,在两个以上的指令流同时争用的情况下,根据所述优先权进行调解;
对所述共有资源的争用为对一个功能单元有来自两个以上的指令解码部分的指令发出要求的争用、对指令超高速缓冲存储器有来自两个以上的指令解码部分的指令提取要求的争用、和对一个寄存器组有来自两个以上的功能单元的访问要求的争用的其中之一;
功能单元的1个接收指示优先权变更的专用指令,在存储器中存储的优先权中,只变更该专用指令所属的指令流的优先权。
2.如权利要求1的多线程处理器,其特征在于,
所述专用指令是指示提高或降低优先权的指令。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP22472096 | 1996-08-27 | ||
JP224720/1996 | 1996-08-27 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB031548881A Division CN1280714C (zh) | 1996-08-27 | 1997-08-27 | 独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1782989A CN1782989A (zh) | 2006-06-07 |
CN100373331C true CN100373331C (zh) | 2008-03-05 |
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 | 执行多个指令流的多程序流程同时处理器 |
CNB031548881A Expired - Lifetime CN1280714C (zh) | 1996-08-27 | 1997-08-27 | 独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器 |
CNB2005101251756A Expired - Lifetime CN100373331C (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 | 执行多个指令流的多程序流程同时处理器 |
CNB031548881A Expired - Lifetime CN1280714C (zh) | 1996-08-27 | 1997-08-27 | 独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器 |
Country Status (5)
Country | Link |
---|---|
US (1) | US6105127A (zh) |
EP (2) | EP1291765B1 (zh) |
KR (1) | KR100500002B1 (zh) |
CN (3) | CN1147785C (zh) |
DE (2) | DE69739726D1 (zh) |
Families Citing this family (147)
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 |
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 |
US7529907B2 (en) | 1998-12-16 | 2009-05-05 | Mips Technologies, Inc. | Method and apparatus for improved computer load and store operations |
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 |
US6477562B2 (en) * | 1998-12-16 | 2002-11-05 | Clearwater Networks, Inc. | Prioritized instruction scheduling for multi-streaming processors |
US7035997B1 (en) | 1998-12-16 | 2006-04-25 | Mips Technologies, Inc. | Methods and apparatus for improving fetching and dispatch of instructions in multithreaded processors |
US6389449B1 (en) | 1998-12-16 | 2002-05-14 | Clearwater Networks, Inc. | Interstream control and communications for multi-streaming digital 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 |
WO2001016702A1 (en) | 1999-09-01 | 2001-03-08 | Intel Corporation | Register set used in multithreaded parallel processor architecture |
EP1236088B9 (en) * | 1999-09-01 | 2008-10-08 | Intel Corporation | Register set used in multithreaded parallel processor architecture |
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 |
US6357016B1 (en) | 1999-12-09 | 2002-03-12 | Intel Corporation | Method and apparatus for disabling a clock signal 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 |
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 |
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 |
US6658551B1 (en) * | 2000-03-30 | 2003-12-02 | Agere Systems Inc. | Method and apparatus for identifying splittable packets in a multithreaded VLIW processor |
US7007153B1 (en) * | 2000-03-30 | 2006-02-28 | Agere Systems Inc. | Method and apparatus for allocating functional units in a multithreaded VLIW processor |
JP2004518183A (ja) | 2000-07-14 | 2004-06-17 | クリアウオーター・ネツトワークス・インコーポレイテツド | マルチスレッド・システムにおける命令のフェッチとディスパッチ |
WO2002046887A2 (en) * | 2000-10-23 | 2002-06-13 | 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 |
US7072970B2 (en) * | 2001-10-05 | 2006-07-04 | International Business Machines Corporation | Programmable network protocol handler architecture |
US7676588B2 (en) * | 2001-10-05 | 2010-03-09 | International Business Machines Corporation | Programmable network protocol handler architecture |
ATE554441T1 (de) * | 2001-11-26 | 2012-05-15 | Nytell Software LLC | Vliw-architektur mit abschalt-befehl |
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 |
US20030126416A1 (en) * | 2001-12-31 | 2003-07-03 | Marr Deborah T. | Suspending execution of a thread in a multi-threaded processor |
US7127561B2 (en) | 2001-12-31 | 2006-10-24 | Intel Corporation | Coherency techniques 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 |
FR2867872A1 (fr) * | 2004-03-18 | 2005-09-23 | St Microelectronics Sa | Dispositif et procede de gestion d'un etat d'attente d'un microprocesseur |
FR2867873A1 (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 |
US7509484B1 (en) | 2004-06-30 | 2009-03-24 | Sun Microsystems, Inc. | Handling cache misses by selectively flushing the pipeline |
US7343474B1 (en) | 2004-06-30 | 2008-03-11 | Sun Microsystems, Inc. | Minimal address state in a fine grain multithreaded processor |
US7290116B1 (en) | 2004-06-30 | 2007-10-30 | Sun Microsystems, Inc. | Level 2 cache index hashing to avoid hot spots |
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 |
US7366829B1 (en) | 2004-06-30 | 2008-04-29 | Sun Microsystems, Inc. | TLB tag parity checking without CAM read |
US7330988B2 (en) * | 2004-06-30 | 2008-02-12 | Sun Microsystems, Inc. | Method and apparatus for power throttling in a multi-thread processor |
US7185178B1 (en) | 2004-06-30 | 2007-02-27 | Sun Microsystems, Inc. | Fetch speculation in a 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 |
US7426630B1 (en) | 2004-06-30 | 2008-09-16 | Sun Microsystems, Inc. | Arbitration of window swap operations |
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 |
US7370243B1 (en) | 2004-06-30 | 2008-05-06 | Sun Microsystems, Inc. | Precise error handling in a fine grain multithreaded multicore processor |
US7676655B2 (en) * | 2004-06-30 | 2010-03-09 | Sun Microsystems, Inc. | Single bit control of threads in a multithreaded multicore processor |
US7747771B1 (en) | 2004-06-30 | 2010-06-29 | Oracle America, Inc. | Register access protocol in a multihreaded multi-core processor |
US7774393B1 (en) | 2004-06-30 | 2010-08-10 | Oracle America, Inc. | Apparatus and method for integer to floating-point format conversion |
US7401206B2 (en) * | 2004-06-30 | 2008-07-15 | Sun Microsystems, Inc. | Apparatus and method for fine-grained multithreading in a multipipelined processor core |
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 |
US7383403B1 (en) | 2004-06-30 | 2008-06-03 | Sun Microsystems, Inc. | Concurrent bypass to instruction buffers in a fine grain multithreaded 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 |
US7373489B1 (en) | 2004-06-30 | 2008-05-13 | Sun Microsystems, Inc. | Apparatus and method for floating-point exception prediction and recovery |
US7890734B2 (en) * | 2004-06-30 | 2011-02-15 | Open Computing Trust I & II | Mechanism for selecting instructions for execution in a multithreaded 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 |
US7861063B1 (en) | 2004-06-30 | 2010-12-28 | Oracle America, Inc. | Delay slot handling in a processor |
US7434000B1 (en) | 2004-06-30 | 2008-10-07 | Sun Microsystems, Inc. | Handling duplicate cache misses in a multithreaded/multi-core processor |
US8225034B1 (en) | 2004-06-30 | 2012-07-17 | Oracle America, Inc. | Hybrid instruction buffer |
US8095778B1 (en) * | 2004-06-30 | 2012-01-10 | Open Computing Trust I & II | Method and system for sharing functional units of a multithreaded processor |
US7178005B1 (en) | 2004-06-30 | 2007-02-13 | Sun Microsystems, Inc. | Efficient implementation of timers in a multithreaded processor |
US7702887B1 (en) | 2004-06-30 | 2010-04-20 | Sun Microsystems, Inc. | Performance instrumentation in a fine grain multithreaded multicore processor |
US7523330B2 (en) * | 2004-06-30 | 2009-04-21 | Sun Microsystems, Inc. | Thread-based clock enabling 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 |
US7635987B1 (en) * | 2004-12-13 | 2009-12-22 | Massachusetts Institute Of Technology | Configuring circuitry 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 |
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 |
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 |
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 |
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 |
US7506140B2 (en) * | 2005-02-04 | 2009-03-17 | Mips Technologies, Inc. | Return data selector employing barrel-incrementer-based round-robin apparatus |
US7657891B2 (en) * | 2005-02-04 | 2010-02-02 | Mips Technologies, Inc. | Multithreading microprocessor with optimized thread scheduler for increasing pipeline utilization efficiency |
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 |
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 |
US7752627B2 (en) * | 2005-02-04 | 2010-07-06 | Mips Technologies, Inc. | Leaky-bucket thread scheduler in a multithreading microprocessor |
US7681014B2 (en) | 2005-02-04 | 2010-03-16 | Mips Technologies, Inc. | Multithreading instruction scheduler employing thread group priorities |
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 |
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 |
JP2007109057A (ja) | 2005-10-14 | 2007-04-26 | Hitachi Ltd | プロセッサ |
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 |
EP2423808B1 (en) * | 2007-06-20 | 2014-05-14 | Fujitsu Limited | Arithmetic device |
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 |
JPWO2010021119A1 (ja) * | 2008-08-21 | 2012-01-26 | パナソニック株式会社 | 命令制御装置 |
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 |
US8024719B2 (en) | 2008-11-03 | 2011-09-20 | Advanced Micro Devices, Inc. | Bounded hash table sorting in a dynamic program profiling system |
US20100115494A1 (en) * | 2008-11-03 | 2010-05-06 | Gorton Jr Richard C | System for dynamic program profiling |
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 |
US9542193B2 (en) | 2012-12-28 | 2017-01-10 | Intel Corporation | Memory address collision detection of ordered parallel threads with bloom filters |
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 |
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 | 安徽寒武纪信息科技有限公司 | 运算方法、系统及相关产品 |
CN111078293B (zh) * | 2018-10-19 | 2021-03-16 | 中科寒武纪科技股份有限公司 | 运算方法、装置及相关产品 |
CN111079912B (zh) * | 2018-10-19 | 2021-02-12 | 中科寒武纪科技股份有限公司 | 运算方法、系统及相关产品 |
CN111079911B (zh) * | 2018-10-19 | 2021-02-09 | 中科寒武纪科技股份有限公司 | 运算方法、系统及相关产品 |
CN113168328B (zh) | 2018-12-11 | 2024-01-26 | 三垦电气株式会社 | 处理器和管线处理方法 |
JP7415345B2 (ja) * | 2019-07-03 | 2024-01-17 | オムロン株式会社 | 制御システム、サポート装置および設定プログラム |
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 | 北京经纬恒润科技股份有限公司 | 一种自动驾驶汽车底盘域的指令仲裁方法及系统 |
CN113157631B (zh) * | 2020-01-22 | 2024-06-21 | 瑞昱半导体股份有限公司 | 处理器电路以及数据处理方法 |
CN115629807B (zh) * | 2022-10-31 | 2023-04-14 | 海光信息技术股份有限公司 | 多线程处理器的译码方法、处理器、芯片及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6019709B2 (ja) * | 1977-07-19 | 1985-05-17 | 三菱電機株式会社 | 信号2値化装置 |
CN1030835A (zh) * | 1987-06-02 | 1989-02-01 | 德国Itt工业股份公司 | 中央处理器 |
CN1007665B (zh) * | 1985-09-12 | 1990-04-18 | 菲利蒲光灯制造公司 | 数据处理系统 |
US5430851A (en) * | 1991-06-06 | 1995-07-04 | Matsushita Electric Industrial Co., Ltd. | Apparatus for simultaneously scheduling instruction from plural instruction streams into plural instruction execution units |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
EP0919025B1 (en) * | 1996-07-16 | 2001-09-26 | Advanced Micro Devices, Inc. | A parallel and scalable instruction scanning unit |
-
1997
- 1997-08-27 EP EP02018254A patent/EP1291765B1/en not_active Expired - Lifetime
- 1997-08-27 CN CNB971193169A patent/CN1147785C/zh not_active Expired - Fee Related
- 1997-08-27 CN CNB031548881A patent/CN1280714C/zh not_active Expired - Lifetime
- 1997-08-27 KR KR1019970041451A patent/KR100500002B1/ko not_active IP Right Cessation
- 1997-08-27 US US08/920,135 patent/US6105127A/en not_active Expired - Fee Related
- 1997-08-27 EP EP97306565A patent/EP0827071B1/en not_active Expired - Lifetime
- 1997-08-27 DE DE69739726T patent/DE69739726D1/de not_active Expired - Lifetime
- 1997-08-27 DE DE69717369T patent/DE69717369T2/de not_active Expired - Fee Related
- 1997-08-27 CN CNB2005101251756A patent/CN100373331C/zh not_active Expired - Lifetime
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6019709B2 (ja) * | 1977-07-19 | 1985-05-17 | 三菱電機株式会社 | 信号2値化装置 |
CN1007665B (zh) * | 1985-09-12 | 1990-04-18 | 菲利蒲光灯制造公司 | 数据处理系统 |
CN1030835A (zh) * | 1987-06-02 | 1989-02-01 | 德国Itt工业股份公司 | 中央处理器 |
US5430851A (en) * | 1991-06-06 | 1995-07-04 | Matsushita Electric Industrial Co., Ltd. | Apparatus for simultaneously scheduling instruction from plural instruction streams into plural instruction execution units |
Also Published As
Publication number | Publication date |
---|---|
EP1291765A3 (en) | 2006-10-25 |
CN1495605A (zh) | 2004-05-12 |
CN1147785C (zh) | 2004-04-28 |
CN1782989A (zh) | 2006-06-07 |
EP1291765A2 (en) | 2003-03-12 |
DE69739726D1 (de) | 2010-02-11 |
KR100500002B1 (ko) | 2005-09-08 |
EP1291765B1 (en) | 2009-12-30 |
CN1177772A (zh) | 1998-04-01 |
EP0827071B1 (en) | 2002-11-27 |
KR19980019064A (ko) | 1998-06-05 |
DE69717369T2 (de) | 2003-09-11 |
US6105127A (en) | 2000-08-15 |
EP0827071A2 (en) | 1998-03-04 |
EP0827071A3 (en) | 1999-01-20 |
DE69717369D1 (de) | 2003-01-09 |
CN1280714C (zh) | 2006-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100373331C (zh) | 独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器 | |
CN100440139C (zh) | 双线程处理器和方法 | |
JP3760035B2 (ja) | 複数の命令流を独立に処理し、命令流単位に処理性能を柔軟に制御するマルチスレッドプロセッサ | |
US4217638A (en) | Data-processing apparatus and method | |
KR100989215B1 (ko) | 다중 레지스터 컨텍스트를 갖는 데이터 프로세싱 시스템및 이를 위한 방법 | |
US5251306A (en) | Apparatus for controlling execution of a program in a computing device | |
US5185868A (en) | Apparatus having hierarchically arranged decoders concurrently decoding instructions and shifting instructions not ready for execution to vacant decoders higher in the hierarchy | |
US7610473B2 (en) | Apparatus, method, and instruction for initiation of concurrent instruction streams in a multithreading microprocessor | |
CN100549943C (zh) | 具有用于增进流水线使用效率的优化线程调度器的多线程微处理器 | |
US4074353A (en) | Trap mechanism for a data processing system | |
CN101238425B (zh) | 使用低功率虚拟线程的软件指定的电源性能管理装置和方法 | |
CN100489784C (zh) | 多线程微处理器及其新线程的创建方法和多线程处理系统 | |
US20090138880A1 (en) | Method for organizing a multi-processor computer | |
EP1760580B1 (en) | Processing operation information transfer control system and method | |
US5930520A (en) | Pipelining device in a parallel processing apparatus and an instruction supplying method therefor | |
US4837688A (en) | Multi-channel shared resource processor | |
US6701429B1 (en) | System and method of start-up in efficient way for multi-processor systems based on returned identification information read from pre-determined memory location | |
JP2594600B2 (ja) | シングルチップマイクロコンピュータ | |
EP0297892B1 (en) | Apparatus and method for control of asynchronous program interrupt events in a data processing system | |
EP1237081B1 (en) | Multi-processor system | |
CA1302580C (en) | Apparatus and method for using lockout for synchronization of access to main memory signal groups in a multiprocessor data processing system | |
CN1016905B (zh) | 在非微码数据处理系统上提供扩展的处理环境的装置和方法 | |
JPH03188530A (ja) | プログラム先取り装置 | |
RU2042193C1 (ru) | Вычислительная система | |
SU309363A1 (ru) | Центральный процессор мультипрограммной мультипроцессорной вычислительной системы |
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: 20080305 |