CN108628639B - 处理器和指令调度方法 - Google Patents
处理器和指令调度方法 Download PDFInfo
- Publication number
- CN108628639B CN108628639B CN201710169572.6A CN201710169572A CN108628639B CN 108628639 B CN108628639 B CN 108628639B CN 201710169572 A CN201710169572 A CN 201710169572A CN 108628639 B CN108628639 B CN 108628639B
- Authority
- CN
- China
- Prior art keywords
- instruction
- jth
- decoding
- processing unit
- thread
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 50
- 238000012545 processing Methods 0.000 claims abstract description 124
- 230000008569 process Effects 0.000 description 29
- 238000010586 diagram Methods 0.000 description 22
- 230000005540 biological transmission Effects 0.000 description 19
- 238000013461 design Methods 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 6
- 230000003068 static effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012546 transfer 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
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- 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/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- 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
-
- 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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
- G06F9/3895—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/325—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
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)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
一种处理器和指令调度方法,属于计算机技术领域。处理器支持X路交织多线程,X为大于1的整数。该处理器包括译码单元和处理单元。译码单元用于在每一个循环周期内,从预定义的Z个线程的每一个线程中分别获取一条指令,对获取的Z条指令进行译码得到Z个译码结果,并将Z个译码结果发送给处理单元;其中,每一个循环周期包括X个发送周期,每一个发送周期向处理单元发送一个译码结果,Z个译码结果中可存在译码结果被译码单元在多个发送周期内重复发送,1≤Z<X或Z=X,Z为整数。处理单元用于根据译码结果执行指令。本申请实施例提供的技术方案,使得处理单元得到充分利用,从而确保处理单元的高使用效率,其性能能够得到充分利用。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种处理器和指令调度方法。
背景技术
处理器通常采用流水线技术来加快处理速度。如果流水线中即将执行的指令需要依赖于前面指令的执行结果,而前一指令却并未完成时,会导致该指令无法立刻开始执行,此时,所引发的冲突可以称为数据冒险(data hazard),进而导致处理上的指令处理延时。在现有技术中,采用交织多线程(Interleaved Multi-Threading,IMT)技术来解决流水线上因数据冒险而引起的指令处理延时。
IMT技术是一种利用线程级并行性(Thread Level Parallelism,TLP)的指令调度机制。请参考图1,其示出了一个支持4路IMT的处理器的指令调度过程的示意图。也即,该处理器支持的最大线程数量X为4。处理器包括指令译码器(instruction decoder)和数据通路(data path);其中,指令译码器用于对指令进行译码得到译码结果并将译码结果发送给数据通路,数据通路用于根据译码结果执行指令。如图1所示,PC0、PC1、PC2和PC3分别表示4个独立线程的程序计数器(Program Counter,PC)。指令译码器按照如下顺序调度各个线程中的指令:在第1个时间周期,译码单元获取PC0对应的线程中的第1条指令并对其译码;在第2个时间周期,译码单元获取PC1对应的线程中的第1条指令并对其译码;在第3个时间周期,译码单元获取PC2对应的线程中的第1条指令并对其译码;在第4个时间周期,译码单元获取PC3对应的线程中的第1条指令并对其译码;之后,在第5个时间周期,译码单元重新返回PC0,获取PC0对应的线程中的第2条指令并对其译码,以此循环。
这样,对于同一个线程中的前后两条指令来说,这两条指令之间会有若干个时间周期的缓冲期。例如对于图1所示的支持4路IMT的处理器来说,同一个线程中的前后两条指令之间存在3个时间周期的缓冲期。当后一条指令开始执行的时候,前一条指令已经完成数据写回操作,因此不会产生数据冒险。并且,在同一个线程中的前后两条指令之间的缓冲期内,流水线一直被其它线程所使用,因此流水线也保持了很高的使用效率。
上文介绍的现有的IMT技术可以称为静态IMT(Static IMT,S-IMT)技术。S-IMT技术也存在着如下的技术问题:
当处理器实际执行的线程数量Z小于其支持的最大线程数量X时,指令译码器仍然按照上述固定顺序在X个线程中循环调度指令。结合参考图2,仍然以支持4路IMT的处理器为例,当处理器实际执行的线程数量Z为2时,指令译码器的指令调度顺序仍然如上所述,在PC0、PC1、PC2和PC3对应的4个线程中循环往复。由于PC2和PC3并没有对应的线程在执行,因此在每一轮循环过程中总有2个时间周期内指令译码器不执行译码操作,也不向数据通路发送译码结果,进而导致数据通路也存在不执行指令的空闲时段。
因此,对于现有的采用S-IMT技术的处理器来说,当其实际执行的线程数量小于其支持的最大线程数量时,无法充分利用数据通路,导致数据通路的使用效率降低,性能得不到充分利用。
发明内容
本申请实施例提供了一种处理器和指令调度方法,用以解决现有的采用S-IMT技术的处理器,当其实际执行的线程数量小于其支持的最大线程数量时,无法充分利用数据通路,导致数据通路的使用效率降低,性能得不到充分利用的问题。
一方面,提供了一种处理器,该处理器支持X路IMT,该处理器包括译码单元和处理单元,X为大于1的整数;译码单元用于在每一个循环周期内,从预定义的Z个线程的每一个线程中分别获取一条指令,对获取的Z条指令进行译码得到Z个译码结果,并将Z个译码结果发送给处理单元;其中,每一个循环周期包括X个发送周期,每一个发送周期向处理单元发送一个译码结果,Z个译码结果中可存在译码结果被译码单元在多个发送周期内重复发送,1≤Z<X或Z=X,且Z为整数;处理单元用于根据译码结果执行指令。
本申请实施例提供的技术方案,在处理器实际执行的线程数量小于其支持的最大线程数量的情况下,由于译码单元将译码结果在多个发送周期内重复地发送给处理单元,使得译码单元在每一个发送周期内都会向处理单元发送一个译码结果,因此处理单元并不会存在不执行指令的空闲时段,使得处理单元得到充分利用,从而确保处理单元的高使用效率,其性能能够得到充分利用。
在一个可能的设计中,译码单元包括指令译码器和X个程序计数器;指令译码器用于令k=1,在第n个循环周期的第i个发送周期,根据第j个程序计数器的值,从预定义的Z个线程的第j个线程中获取一条指令;其中,n、i、j的初始值为1,X是Z的整数倍;更新第j个程序计数器的值,并对获取的指令进行译码得到第j个线程中的指令对应的译码结果;将第j个线程中的指令对应的译码结果发送给处理单元;令i=i+1,判断i是否大于X;若i不大于X,则令k=k+1,判断k是否大于X/Z;若k不大于X/Z,则再次从将第j个线程中的指令对应的译码结果发送给处理单元的步骤开始执行;若k大于X/Z,则令j=j+1,k=1,并再次从在第n个循环周期的第i个发送周期,根据第j个程序计数器的值,从预定义的Z个线程的第j个线程中获取一条指令的步骤开始执行;若i大于X,则令n=n+1,i=1,j=1,k=1,并再次从在第n个循环周期的第i个发送周期,根据第j个程序计数器的值,从预定义的Z个线程的第j个线程中获取一条指令的步骤开始执行。
在一个可能的设计中,译码单元包括指令译码器和X个程序计数器;指令译码器用于在第n个循环周期的第i个发送周期,根据第j个程序计数器的值,从预定义的Z个线程的第j个线程中获取一条指令;其中,n、i、j的初始值为1,X是Z的整数倍;更新第j个程序计数器的值,并对获取的指令进行译码得到第j个线程中的指令对应的译码结果;将第j个线程中的指令对应的译码结果发送给处理单元;令i=i+1,比对i与X、Z之间的大小关系;若i不大于Z,则令j=j+1,并再次从在第n个循环周期的第i个发送周期,根据第j个程序计数器的值,从预定义的Z个线程的第j个线程中获取一条指令的步骤开始执行;若i大于Z且不大于X,令j=i除Z的余数,并再次从将第j个线程中的指令对应的译码结果发送给处理单元的步骤开始执行;若i大于X,则令n=n+1,i=1,j=1,并再次从在第n个循环周期的第i个发送周期,根据第j个程序计数器的值,从预定义的Z个线程的第j个线程中获取一条指令的步骤开始执行。
本申请实施例提供的技术方案,始终能够确保每个线程中相邻两条指令的指令处理间隔相同,并且不同线程对应的指令处理间隔也相同,因此可以避免因指令处理间隔不均一而导致增加处理器逻辑电路的复杂度的问题,使得处理器逻辑电路简单,利于处理器主频的提升。
在一个可能的设计中,该处理器还包括Z寄存器;Z寄存器用于存储所述Z的值。
在一个可能的设计中,该处理器还包括模式寄存器;模式寄存器,用于向译码单元指示指令调度模式,指令调度模式包括线程级并行性TLP模式、数据级并行性DLP模式、混合模式中的前两种或全部三种;其中,TLP模式是指Z=X时译码单元的指令调度模式,DLP模式是指Z=1时译码单元的指令调度模式,混合模式是指1<Z<X时译码单元的指令调度模式。
在一个可能的设计中,一个处理单元包括一个数据通路和X组数据寄存器,每一组数据寄存器包括至少一个数据寄存器;数据通路用于对于译码单元在每一个循环周期的第i个发送周期内发送的译码结果,根据译码结果中的地址码,从第i组数据寄存器中与地址码相对应的数据寄存器中读取操作数,1≤i≤X,i为整数;根据译码结果中的操作码对操作数执行操作。
在一个可能的设计中,处理单元的数量为一个或多个。
本申请实施例提供的处理器,通过配置多个处理单元并行执行指令,进一步提升处理器性能。
在一个可能的设计中,译码单元的主频低于处理单元的主频。
本申请实施例提供的处理器,通过将译码单元的主频配置为低于处理单元的主频,从而降低处理器的功耗。
另一方面,本申请实施例提供一种指令调度方法,应用于处理器的译码单元中,处理器支持X路交织多线程IMT,X为大于1的整数;该方法包括:译码单元在每一个循环周期内,从预定义的Z个线程的每一个线程中分别获取一条指令,对获取的Z条指令进行译码得到Z个译码结果,并将Z个译码结果发送给处理单元;其中,每一个循环周期包括X个发送周期,每一个发送周期向处理单元发送一个译码结果,Z个译码结果中可存在译码结果被译码单元在多个发送周期内重复发送,1≤Z<X或Z=X,且Z为整数。
在一个可能的设计中,译码单元包括指令译码器和X个程序计数器。令k=1,指令译码器在第n个循环周期的第i个发送周期,根据第j个程序计数器的值,从预定义的Z个线程的第j个线程中获取一条指令;其中,n、i、j的初始值为1,X是Z的整数倍;指令译码器更新第j个程序计数器的值,并对获取的指令进行译码得到第j个线程中的指令对应的译码结果;指令译码器将第j个线程中的指令对应的译码结果发送给处理单元;令i=i+1,指令译码器判断i是否大于X;若i不大于X,则令k=k+1,指令译码器判断k是否大于X/Z;若k不大于X/Z,则指令译码器再次从将第j个线程中的指令对应的译码结果发送给处理单元的步骤开始执行;若k大于X/Z,则令j=j+1,k=1,指令译码器再次从在第n个循环周期的第i个发送周期,根据第j个程序计数器的值,从预定义的Z个线程的第j个线程中获取一条指令的步骤开始执行;若i大于X,则令n=n+1,i=1,j=1,k=1,指令译码器再次从在第n个循环周期的第i个发送周期,根据第j个程序计数器的值,从预定义的Z个线程的第j个线程中获取一条指令的步骤开始执行。
在一个可能的设计中,译码单元包括指令译码器和X个程序计数器。指令译码器在第n个循环周期的第i个发送周期,根据第j个程序计数器的值,从预定义的Z个线程的第j个线程中获取一条指令;其中,n、i、j的初始值为1,X是Z的整数倍;指令译码器更新第j个程序计数器的值,并对获取的指令进行译码得到第j个线程中的指令对应的译码结果;指令译码器将第j个线程中的指令对应的译码结果发送给处理单元;令i=i+1,指令译码器比对i与X、Z之间的大小关系;若i不大于Z,令j=j+1,则指令译码器再次从在第n个循环周期的第i个发送周期,根据第j个程序计数器的值,从预定义的Z个线程的第j个线程中获取一条指令的步骤开始执行;若i大于Z且不大于X,令j=i除Z的余数,则指令译码器再次从将第j个线程中的指令对应的译码结果发送给处理单元的步骤开始执行;若i大于X,令n=n+1,i=1,j=1,则指令译码器再次从在第n个循环周期的第i个发送周期,根据第j个程序计数器的值,从预定义的Z个线程的第j个线程中获取一条指令的步骤开始执行。
本申请实施例提供的技术方案,在处理器实际执行的线程数量小于其支持的最大线程数量的情况下,由于译码单元将译码结果在多个发送周期内重复地发送给处理单元,使得译码单元在每一个发送周期内都会向处理单元发送一个译码结果,因此处理单元并不会存在不执行指令的空闲时段,使得处理单元得到充分利用,从而确保处理单元的高使用效率,其性能能够得到充分利用。
附图说明
图1示出了现有技术涉及的一种采用S-IMT技术的处理器的指令调度过程的示意图;
图2示出了现有技术涉及的另一种采用S-IMT技术的处理器的指令调度过程的示意图;
图3A示出了本申请一个实施例提供的处理器的结构示意图;
图3B是图3A实施例涉及的一种处理器的指令调度过程的示意图;
图4示出了本申请另一个实施例提供的处理器的结构示意图;
图5示出了一种Z=X时的指令调度过程的流程图;
图6示出了一种Z=X时的指令调度过程的示意图;
图7示出了一种1≤Z<X时的指令调度过程的流程图;
图8示出了一种1≤Z<X时的指令调度过程的示意图;
图9示出了另一种1≤Z<X时的指令调度过程的流程图;
图10示出了另一种1≤Z<X时的指令调度过程的示意图;
图11示出了一种Z=1时的指令调度过程的示意图;
图12示出了一种混合模式下调度和执行指令的示意图;
图13A示出了本申请另一个实施例提供的处理器的结构示意图;
图13B是图13A实施例提供的处理器采用TLP模式调度指令的示意图;
图13C是图13A实施例提供的处理器采用DLP模式调度指令的示意图;
图13D是图13A实施例提供的处理器采用混合模式调度指令的示意图;
图14A示出了另一种混合模式下的指令调度过程的示意图;
图14B示出了另一种TLP模式下的指令调度过程的示意图;
图15A示出了另一种混合模式下的指令调度和执行过程的示意图;
图15B示出了另一种DLP模式下的指令调度和执行过程的示意图;
图15C示出了另一种TLP模式下的指令调度和执行过程的示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
请参考图3A,其示出了本申请一个实施例提供的处理器的结构示意图。处理器30支持X路IMT,X为大于1的整数。处理器30可以包括:译码单元31和处理单元(ProcessingElement,PE)32。
译码单元31,用于在每一个循环周期内,从预定义的Z个线程的每一个线程中分别获取一条指令,对获取的Z条指令进行译码得到Z个译码结果,并将Z个译码结果发送给处理单元32,1≤Z<X或Z=X,且Z为整数。
处理器30支持的最大线程数量为X,处理器30实际执行的线程数量为Z,由于Z≤X,因此处理器30实际执行的线程数量等于或小于其支持的最大线程数量。其中,处理器30实际执行的线程数量Z可预先定义,例如根据所需执行的程序的具体情况预定义Z的值。
每一个循环周期包括X个发送周期。每一个发送周期译码单元31向处理单元32发送一个译码结果。Z个译码结果中可存在译码结果被译码单元31在多个发送周期内重复发送,这样,当1≤Z<X时,Z个译码结果中存在至少一个译码结果被译码单元31在多个发送周期内重复发送。
在一个示例中,假设X=4且Z=2,也即处理器30支持的最大线程数量为4,处理器30实际执行的线程数量为2,假设这2个实际执行的线程对应的程序计数器为PC0和PC1。以第1个循环周期为例,在第1个循环周期内,译码单元31获取PC0对应的线程中的第1条指令(记为指令1)并获取PC1对应的线程中的第1条指令(记为指令2),译码单元31对指令1和指令2进行译码得到译码结果1和译码结果2。1个循环周期包括4个发送周期,译码单元31在每一个发送周期向处理单元32发送一个译码结果,因此译码结果1和译码结果2中存在至少一个译码结果被译码单元31在上述4个发送周期内重复发送。具体包括如下几种可能的实现方式:
1、在第1至4个发送周期分别发送:译码结果1、译码结果1、译码结果2、译码结果2(如图3B所示);
2、在第1至4个发送周期分别发送:译码结果1、译码结果1、译码结果1、译码结果2;
3、在第1至4个发送周期分别发送:译码结果1、译码结果2、译码结果2、译码结果2;
4、在第1至4个发送周期分别发送:译码结果1、译码结果2、译码结果1、译码结果2;
5、在第1至4个发送周期分别发送:译码结果1、译码结果2、译码结果2、译码结果1;
6、在第1至4个发送周期分别发送:译码结果1、译码结果1、译码结果2、译码结果1。
类似地,在后续的每一个循环周期,译码单元31分别从PC0和PC1对应的线程中获取下1条未执行的指令并对其译码得到译码结果,并在4个发送周期内发送上述2个译码结果,其中存在至少一个译码结果被译码单元31在多个发送周期内重复发送。
处理单元32,用于根据译码结果执行指令。
可选地,处理单元32用于根据译码结果采用流水线技术执行指令,从而能够实现多条指令并行处理,提高执行指令的效率。
综上所述,本申请实施例提供的技术方案,在处理器实际执行的线程数量小于其支持的最大线程数量的情况下,由于译码单元将译码结果在多个发送周期内重复地发送给处理单元,使得译码单元在每一个发送周期内都会向处理单元发送一个译码结果,因此处理单元并不会存在不执行指令的空闲时段,使得处理单元得到充分利用,从而确保处理单元的高使用效率,其性能能够得到充分利用。
本文中介绍的本申请实施例所采用的IMT技术可以称为SS-IMT(Static SIMDIMT)技术。
请参考图4,其示出了本申请另一个实施例提供的处理器的结构示意图。处理器30支持X路IMT,X为大于1的整数。处理器30可以包括:译码单元31和处理单元32。
译码单元31主要用于对指令进行译码。译码单元31可以包括:指令译码器311和X个程序计数器312。指令译码器311用于对指令进行译码得到译码结果。其中,指令包括操作码和地址码。操作码用于指示指令的操作特性与功能,地址码用于指示参与操作的操作数的地址。每一个程序计数器312对应于一个线程,程序计数器312用于存放指令地址,该指令地址是指待执行的下一条指令的存放地址。
处理单元32主要用于根据译码结果执行指令;其中,译码结果中包括指令的操作码和地址码。处理单元32可以包括:数据通路321和X组数据寄存器322。数据通路321用于根据指令的地址码获取操作数,并根据指令的操作码对操作数执行相应的操作。数据寄存器322用于存储操作数。每一组数据寄存器322包括至少一个数据寄存器。
如图4所示,在本申请实施例中,处理器30还包括Z寄存器33。Z寄存器33用于存储Z的值,也即用于存储处理器30实际执行的线程数量Z。Z的值在Z寄存器33中预定义,例如根据所需执行的程序的具体情况在Z寄存器33中预定义Z的值。Z的取值范围为大于等于1且小于等于X的整数。
当Z=X时,处理器30实际执行的线程数量与其支持的最大线程数量相等。结合参考图5,其示出了当Z=X时指令译码器311的指令调度顺序。指令译码器311用于执行如下步骤:
步骤51,在第n个循环周期的第i个发送周期,根据第j个程序计数器的值,从预定义的Z个线程的第j个线程中获取一条指令;其中,n、i、j的初始值为1,Z与X相等;
步骤52,更新第j个程序计数器的值,并对获取的指令进行译码得到第j个线程中的指令对应的译码结果;
步骤53,将第j个线程中的指令对应的译码结果发送给处理单元;
步骤54,令i=i+1,判断i是否大于X;
若否(也即i≤X),则令j=j+1,并再次从上述步骤51开始执行;
若是(也即i>X),则令n=n+1,i=1,j=1,并再次从上述步骤51开始执行。
以X=8为例,当Z=X=8时,指令译码器411的指令调度顺序如图6所示。
当Z=X时,可以将指令译码器311的指令调度模式称为TLP模式。
当1≤Z<X时,处理器30实际执行的线程数量小于其支持的最大线程数量。指令译码器311按照上述图3A实施例介绍的指令调度顺序调度指令。下面,对指令译码器311两种可能的指令调度顺序进行介绍说明。
在第一种可能的实现方式中,如图7所示,指令译码器311用于执行如下步骤:
步骤71,令k=1,在第n个循环周期的第i个发送周期,根据第j个程序计数器的值,从预定义的Z个线程的第j个线程中获取一条指令;其中,n、i、j的初始值为1,X是Z的整数倍;
步骤72,更新第j个程序计数器的值,并对获取的指令进行译码得到第j个线程中的指令对应的译码结果;
步骤73,将第j个线程中的指令对应的译码结果发送给处理单元;
步骤74,令i=i+1,判断i是否大于X;
若否(也即i≤X),则执行下述步骤75;
若是(也即i>X),则令n=n+1,i=1,j=1,k=1,并再次从上述步骤71开始执行;
步骤75,令k=k+1,判断k是否大于X/Z;
若否(也即k≤X/Z),则再次从上述步骤73开始执行;
若是(也即k>X/Z),则令j=j+1,k=1,并再次从上述步骤71开始执行。
以X=8,Z=4为例,在上述第一种可能的实现方式中,指令译码器311的指令调度顺序如图8所示。
在第二种可能的实现方式中,如图9所示,指令译码器311用于执行如下步骤:
步骤91,在第n个循环周期的第i个发送周期,根据第j个程序计数器的值,从预定义的Z个线程的第j个线程中获取一条指令;其中,n、i、j的初始值为1,X是Z的整数倍;
步骤92,更新第j个程序计数器的值,并对获取的指令进行译码得到第j个线程中的指令对应的译码结果;
步骤93,将第j个线程中的指令对应的译码结果发送给处理单元;
步骤94,令i=i+1,比对i与X、Z之间的大小关系;
若i≤Z,则令j=j+1,并再次从上述步骤91开始执行;
若Z<i≤X,令j=i除Z的余数,并再次从上述步骤93开始执行;
若i>X,则令n=n+1,i=1,j=1,并再次从上述步骤91开始执行。
以X=8,Z=4为例,在上述第二种可能的实现方式中,指令译码器311的指令调度顺序如图10所示。
上述两种实现方式相比,由于在第一种可能的实现方式中,指令译码器311在连续的发送周期内将相同的译码结果发送给处理单元32,因此不必配置额外的缓存来存储译码结果,有助于节省处理器30的硬件成本。
另外,当Z=1时,指令译码器311用于:在每一个循环周期内,从预定义的1个线程中获取一条指令,对获取的该条指令进行译码得到一个译码结果,并在该循环周期包括的X个发送周期内将该译码结果重复地发送给处理单元32。指令译码器311在每一个发送周期向处理单元32发送一个译码结果。
以X=8,Z=1为例,指令译码器311的指令调度顺序如图11所示。
当Z=1时,可以将指令译码器311的指令调度模式称为DLP模式。
当1<Z<X时,可以将指令译码器311的指令调度模式称为混合模式、DTLP模式或TDLP模式。
在实际实现时,指令译码器311从Z寄存器33中获取Z的值,根据Z和X的大小关系,确定指令调度模式,进而按照确定出的指令调度模式调度指令。其中,指令调度模式包括TLP模式、DLP模式、混合模式中的前两种或全部三种。也即,在一种情况下,处理器40支持TLP模式和DLP模式共2种指令调度模式;在另一种情况下,处理器30支持TLP模式、DLP模式和混合模式共3种指令调度模式。
可选地,如图4所示,处理器30还包括模式寄存器34。模式寄存器34用于向译码单元31指示指令调度模式,该指令调度模式包括TLP模式、DLP模式、混合模式中的前两种或全部三种。
在实际实现时,模式寄存器34从Z寄存器33中获取Z的值,根据Z和X的大小关系,确定指令调度模式,并按照确定出的指令调度模式设置其自身的值。指令译码器311获取模式寄存器34的值,并根据模式寄存器34的值确定指令调度模式,进而按照确定出的指令调度模式调度指令。
在一种情况下,处理器30支持TLP模式和DLP模式共2种指令调度模式。其中,TLP模式以第一数值表示,DLP模式以第二数值表示,第一数值与第二数值不同。例如,第一数值为0且第二数值为1,或者,第一数值为1且第二数值为0。当处理器30支持上述2种指令调度模式时,模式寄存器34占用1bit(比特)。
在另一种情况下,处理器30支持TLP模式、DLP模式和混合模式共3种指令调度模式。其中,TLP模式以第一数值表示,DLP模式以第二数值表示,混合模式以第三数值表示,第一数值、第二数值和第三数值均不相同。例如,第一数值为0、第二数值为1且第三数值为2。当处理器30支持上述3种指令调度模式时,模式寄存器34占用2bit。
另外,不论译码单元31按照何种指令调度模式调度指令,处理单元32的数据通路321均按照如下方式执行指令。数据通路321,用于:对于译码单元31在每一个循环周期的第i个发送周期内发送的译码结果,根据该译码结果中的地址码,从第i组数据寄存器中与该地址码相对应的数据寄存器中读取操作数,1≤i≤X,i为整数;根据译码结果中的操作码对上述读取的操作数执行操作。
以X=8,Z=2为例,处理器30在混合模式下采用上文介绍的第一种可能的实现方式对指令进行调度,相应的调度和执行过程如图12所示。假设PC0和PC1分别表示上述2个线程的程序计数器。在每一个循环周期内,指令调度和执行过程如下:
第1个发送周期,指令译码器311根据PC0的值从第1个线程中获取一条指令,对该指令进行译码后得到译码结果(记为译码结果1),并将译码结果1发送给数据通路321;数据通路321根据该译码结果1中的地址码,从第1组数据寄存器中与该地址码相对应的数据寄存器中读取操作数,并根据译码结果1中的操作码对上述读取的操作数执行操作;
在第2个发送周期,指令译码器311再次将译码结果1发送给数据通路321;数据通路321根据该译码结果1中的地址码,从第2组数据寄存器中与该地址码相对应的数据寄存器中读取操作数,并根据译码结果1中的操作码对上述读取的操作数执行操作;
在第3个发送周期,指令译码器311再次将译码结果1发送给数据通路321;数据通路321根据该译码结果1中的地址码,从第3组数据寄存器中与该地址码相对应的数据寄存器中读取操作数,并根据译码结果1中的操作码对上述读取的操作数执行操作;
在第4个发送周期,指令译码器311再次将译码结果1发送给数据通路321;数据通路321根据该译码结果1中的地址码,从第3组数据寄存器中与该地址码相对应的数据寄存器中读取操作数,并根据译码结果1中的操作码对上述读取的操作数执行操作;
第5个发送周期,指令译码器311根据PC1的值从第2个线程中获取一条指令,对该指令进行译码后得到译码结果(记为译码结果2),并将译码结果2发送给数据通路321;数据通路321根据该译码结果2中的地址码,从第5组数据寄存器中与该地址码相对应的数据寄存器中读取操作数,并根据译码结果2中的操作码对上述读取的操作数执行操作;
在第6个发送周期,指令译码器311再次将译码结果2发送给数据通路321;数据通路321根据该译码结果2中的地址码,从第6组数据寄存器中与该地址码相对应的数据寄存器中读取操作数,并根据译码结果2中的操作码对上述读取的操作数执行操作;
在第7个发送周期,指令译码器311再次将译码结果2发送给数据通路321;数据通路321根据该译码结果2中的地址码,从第7组数据寄存器中与该地址码相对应的数据寄存器中读取操作数,并根据译码结果2中的操作码对上述读取的操作数执行操作;
在第8个发送周期,指令译码器311再次将译码结果2发送给数据通路321;数据通路321根据该译码结果2中的地址码,从第8组数据寄存器中与该地址码相对应的数据寄存器中读取操作数,并根据译码结果2中的操作码对上述读取的操作数执行操作。
例如,假设译码结果1中的操作码用于指示加法操作,地址码用于指示第3个数据寄存器;译码结果2中的操作码用于指示减法操作,地址码用于指示第2个数据寄存器,则:
数据通路321在接收到指令译码器311在第1个发送周期发送的译码结果1之后,从第1组数据寄存器中的第3个数据寄存器中读取操作数(假设为x1和y1),对上述操作数执行加法操作,也即计算x1和y1的和,得到z1;
数据通路321在接收到指令译码器311在第2个发送周期发送的译码结果1之后,从第2组数据寄存器中的第3个数据寄存器中读取操作数(假设为x2和y2),对上述操作数执行加法操作,也即计算x2和y2的和,得到z2;
数据通路321在接收到指令译码器311在第3个发送周期发送的译码结果1之后,从第3组数据寄存器中的第3个数据寄存器中读取操作数(假设为x3和y3),对上述操作数执行加法操作,也即计算x3和y3的和,得到z3;
数据通路321在接收到指令译码器311在第4个发送周期发送的译码结果1之后,从第4组数据寄存器中的第3个数据寄存器中读取操作数(假设为x4和y4),对上述操作数执行加法操作,也即计算x4和y4的和,得到z4;
数据通路321在接收到指令译码器311在第5个发送周期发送的译码结果2之后,从第5组数据寄存器中的第2个数据寄存器中读取操作数(假设为x5和y5),对上述操作数执行减法操作,也即计算x5和y5的差,得到z5;
数据通路321在接收到指令译码器311在第6个发送周期发送的译码结果2之后,从第6组数据寄存器中的第2个数据寄存器中读取操作数(假设为x6和y6),对上述操作数执行减法操作,也即计算x6和y6的差,得到z6;
数据通路321在接收到指令译码器311在第7个发送周期发送的译码结果2之后,从第7组数据寄存器中的第2个数据寄存器中读取操作数(假设为x7和y7),对上述操作数执行减法操作,也即计算x7和y7的差,得到z7;
数据通路321在接收到指令译码器311在第8个发送周期发送的译码结果2之后,从第8组数据寄存器中的第2个数据寄存器中读取操作数(假设为x8和y8),对上述操作数执行减法操作,也即计算x8和y8的差,得到z8。
综上所述,本申请实施例提供的技术方案,在处理器实际执行的线程数量小于其支持的最大线程数量的情况下,由于译码单元可将译码结果在多个发送周期内重复地发送给处理单元,使得译码单元在每一个发送周期内都会向处理单元发送一个译码结果,因此处理单元并不会存在不执行指令的空闲时段,使得处理单元得到充分利用,从而确保处理单元的高使用效率,其性能能够得到充分利用。
另外,本申请实施例提供的技术方案,始终能够确保每个线程中相邻两条指令的指令处理间隔相同,并且不同线程对应的指令处理间隔也相同,因此可以避免因指令处理间隔不均一而导致增加处理器逻辑电路的复杂度的问题,使得处理器逻辑电路简单,利于处理器主频的提升。
在本申请实施例中,处理单元32的数量为一个或多个。
当处理单元32的数量为多个时,译码单元31将指令的译码结果发送给该多个处理单元32,由该多个处理单元32并行执行指令,进一步提升处理器性能。
在一个例子中,如图13A所示,处理器30包括译码单元31和4个处理单元32。其中,译码单元31包括:指令译码器311和X个程序计数器312。每一个处理单元32包括:数据通路321和X组数据寄存器322。每一组数据寄存器322包括至少一个数据寄存器。不同组的数据寄存器322中包括的数据寄存器的数量可以相同,也可以不同。
以X=8为例,处理器30在TLP模式下的指令调度过程如图13B所示,在DLP模式下的指令调度过程如图13C所示,在混合模式下的指令调度过程如图13D所示。
本申请实施例提供的处理器,通过配置多个处理单元并行执行指令,进一步提升处理器性能。
可选地,在本申请实施例中,允许译码单元31的主频低于处理单元32的主频,也即指令译码器311的主频低于数据通路321的主频。元器件的主频反映了该元器件的工作效率。主频越高,其工作效率越高,相应的功耗也较高;反之,主频越低,其工作效率越低,相应的功耗也较低。
假设译码单元31的主频是处理单元32的主频的1/w,w为2的正整数次幂且w<X,则处理器30实际支持的最大线程数量由X降低至X/w。这样,当Z=X/w时,译码单元31的指令调度模式为TLP模式;当Z=1时,译码单元31的指令调度模式为DLP模式;当1<Z<X/w时,译码单元31的指令调度模式为混合模式。
在一个例子中,以X=8,Z=2为例,假设译码单元31的主频是处理单元32的主频的1/2,则译码单元31的指令调度过程如图14A所示。图14A所示的指令调度过程可以看作是混合模式。
可选地,译码单元31的主频是处理单元32的主频的Z/X,也即指令译码器311的主频是数据通路321的主频的Z/X。此时,译码单元31(或者指令译码器311)的主频取最小值,其功耗降到最低。
在一个例子中,以X=8,Z=2为例,假设译码单元31的主频是处理单元32的主频的1/4,也即指令译码器311的主频是数据通路321的主频的1/4,则译码单元31的指令调度过程如图14B所示。图14B所示的指令调度过程可以看作是TLP模式。
本申请实施例提供的处理器,通过将译码单元的主频配置为低于处理单元的主频,从而降低处理器的功耗。
可选地,在本申请实施例中,除了允许译码单元31的主频低于处理单元32的主频,也即指令译码器311的主频低于数据通路321的主频之外,可配置q×Z个处理单元32,q为正整数。对于处理器30实际执行的Z个线程,为每一个线程配置q个处理单元32用以执行该线程中的指令。此配置虽然需要额外的缓存来存储译码结果,但因为将同一线程中的指令交由同一个处理单元32执行,即可以采用处理单元32内流水线段间传递数据的方式来实现线程内数据传递,简化其实现之开销。
在一个例子中,假设译码单元31的主频是处理单元32的主频的1/2,也即指令译码器311的主频是数据通路321的主频的1/2。以X=8为例,在指令译码器311的主频是数据通路321的主频的1/2的情况下,处理器30实际支持的最大线程数量为8×1/2=4。在混合模式下,以Z=2,且为每一个线程配置2个处理单元32用以执行该线程中的指令为例,相应的指令调度和执行过程如图15A所示。在DLP模式下,Z=1,以为每一个线程配置4个处理单元32用以执行该线程中的指令为例,相应的指令调度和执行过程如图15B所示。在TLP模式下,Z=4,以为每一个线程配置1个处理单元32用以执行该线程中的指令为例,相应的指令调度和执行过程如图15C所示。
本申请实施例还提供了一种指令调度方法,该方法可应用于上述实施例提供的处理器的译码单元中。该方法可以包括如下步骤:
译码单元在每一个循环周期内,从预定义的Z个线程的每一个线程中分别获取一条指令,对获取的Z条指令进行译码得到Z个译码结果,并将Z个译码结果发送给处理单元。
其中,每一个循环周期包括X个发送周期,每一个发送周期向处理单元发送一个译码结果,Z个译码结果中可存在译码结果被译码单元在多个发送周期内重复发送,1≤Z<X或Z=X,且Z为整数。
可选地,译码单元包括指令译码器和X个程序计数器。译码单元可以按照上文介绍的3种指令调度模式调度指令。
对于本申请方法实施例中未披露的细节,请参考本申请中有关处理器的实施例。
综上所述,本申请实施例提供的技术方案,在处理器实际执行的线程数量小于其支持的最大线程数量的情况下,由于译码单元将译码结果在多个发送周期内重复地发送给处理单元,使得译码单元在每一个发送周期内都会向处理单元发送一个译码结果,因此处理单元并不会存在不执行指令的空闲时段,使得处理单元得到充分利用,从而确保处理单元的高使用效率,其性能能够得到充分利用。
需要补充说明的一点是,本申请实施例提供的处理器,可应用于任何有计算处理需求的电子设备中。例如,该电子设备可以是个人计算机(Personal Computer,PC)、手机、平板电脑、电子书阅读器、多媒体播放设备、可穿戴设备、服务器或网络通讯设备,等等。
应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的示例性实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (11)
1.一种处理器,其特征在于,所述处理器支持X路交织多线程IMT,所述处理器包括:译码单元和处理单元,X为大于1的整数;
所述译码单元,用于在每一个循环周期内,从预定义的Z个线程的每一个线程中分别获取一条指令,对获取的所述Z条指令进行译码得到Z个译码结果,并将所述Z个译码结果发送给所述处理单元;其中,每一个循环周期包括X个发送周期,每一个发送周期向所述处理单元发送一个译码结果,所述Z个译码结果中可存在译码结果被所述译码单元在多个发送周期内重复发送,1≤Z<X,且Z为整数;
所述处理单元,用于根据所述译码结果执行指令。
2.根据权利要求1所述的处理器,其特征在于,所述译码单元包括:指令译码器和X个程序计数器;
所述指令译码器,用于:
令k=1,在第n个循环周期的第i个发送周期,根据第j个程序计数器的值,从所述预定义的Z个线程的第j个线程中获取一条指令;其中,n、i、j的初始值为1,X是Z的整数倍;
更新所述第j个程序计数器的值,并对获取的所述指令进行译码得到所述第j个线程中的指令对应的译码结果;
将所述第j个线程中的指令对应的译码结果发送给所述处理单元;
令i=i+1,判断i是否大于X;
若i不大于X,则令k=k+1,判断k是否大于X/Z;若k不大于X/Z,则再次从所述将所述第j个线程中的指令对应的译码结果发送给所述处理单元的步骤开始执行;若k大于X/Z,则令j=j+1,k=1,并再次从所述在第n个循环周期的第i个发送周期,根据第j个程序计数器的值,从所述预定义的Z个线程的第j个线程中获取一条指令的步骤开始执行;
若i大于X,则令n=n+1,i=1,j=1,k=1,并再次从所述在第n个循环周期的第i个发送周期,根据第j个程序计数器的值,从所述预定义的Z个线程的第j个线程中获取一条指令的步骤开始执行。
3.根据权利要求1所述的处理器,其特征在于,所述译码单元包括:指令译码器和X个程序计数器;
所述指令译码器,用于:
在第n个循环周期的第i个发送周期,根据第j个程序计数器的值,从所述预定义的Z个线程的第j个线程中获取一条指令;其中,n、i、j的初始值为1,X是Z的整数倍;
更新所述第j个程序计数器的值,并对获取的所述指令进行译码得到所述第j个线程中的指令对应的译码结果;
将所述第j个线程中的指令对应的译码结果发送给所述处理单元;
令i=i+1,比对i与X、Z之间的大小关系;
若i不大于Z,则令j=j+1,并再次从所述在第n个循环周期的第i个发送周期,根据第j个程序计数器的值,从所述预定义的Z个线程的第j个线程中获取一条指令的步骤开始执行;
若i大于Z且不大于X,令j=i除Z的余数,并再次从所述将所述第j个线程中的指令对应的译码结果发送给所述处理单元的步骤开始执行;
若i大于X,则令n=n+1,i=1,j=1,并再次从所述在第n个循环周期的第i个发送周期,根据第j个程序计数器的值,从所述预定义的Z个线程的第j个线程中获取一条指令的步骤开始执行。
4.根据权利要求1所述的处理器,其特征在于,所述处理器还包括:Z寄存器;
所述Z寄存器,用于存储所述Z的值。
5.根据权利要求1所述的处理器,其特征在于,所述处理器还包括:模式寄存器;
所述模式寄存器,用于向所述译码单元指示指令调度模式,所述指令调度模式包括线程级并行性TLP模式、数据级并行性DLP模式、混合模式中的前两种或全部三种;
其中,所述TLP模式是指Z=X时所述译码单元的指令调度模式,所述DLP模式是指Z=1时所述译码单元的指令调度模式,所述混合模式是指1<Z<X时所述译码单元的指令调度模式。
6.根据权利要求1所述的处理器,其特征在于,所述处理单元包括:数据通路和X组数据寄存器,每一组数据寄存器包括至少一个数据寄存器;
所述数据通路,用于:
对于所述译码单元在每一个循环周期的第i个发送周期内发送的译码结果,根据所述译码结果中的地址码,从第i组数据寄存器中与所述地址码相对应的数据寄存器中读取操作数,1≤i≤X,i为整数;
根据所述译码结果中的操作码对所述操作数执行操作。
7.根据权利要求1所述的处理器,其特征在于,所述处理单元的数量为一个或多个。
8.根据权利要求1所述的处理器,其特征在于,所述译码单元的主频低于所述处理单元的主频。
9.一种指令调度方法,其特征在于,应用于处理器的译码单元中,所述处理器支持X路交织多线程IMT,X为大于1的整数;所述方法包括:
所述译码单元在每一个循环周期内,从预定义的Z个线程的每一个线程中分别获取一条指令,对获取的所述Z条指令进行译码得到Z个译码结果,并将所述Z个译码结果发送给处理单元;
其中,每一个循环周期包括X个发送周期,每一个发送周期向所述处理单元发送一个译码结果,所述Z个译码结果中可存在译码结果被所述译码单元在多个发送周期内重复发送,1≤Z<X,且Z为整数。
10.根据权利要求9所述的方法,其特征在于,所述译码单元包括:指令译码器和X个程序计数器;
令k=1,所述指令译码器在第n个循环周期的第i个发送周期,根据第j个程序计数器的值,从所述预定义的Z个线程的第j个线程中获取一条指令;其中,n、i、j的初始值为1,X是Z的整数倍;
所述指令译码器更新所述第j个程序计数器的值,并对获取的所述指令进行译码得到所述第j个线程中的指令对应的译码结果;
所述指令译码器将所述第j个线程中的指令对应的译码结果发送给所述处理单元;
令i=i+1,所述指令译码器判断i是否大于X;
若i不大于X,则令k=k+1,所述指令译码器判断k是否大于X/Z;若k不大于X/Z,则所述指令译码器再次从所述将所述第j个线程中的指令对应的译码结果发送给所述处理单元的步骤开始执行;若k大于X/Z,则令j=j+1,k=1,所述指令译码器再次从所述在第n个循环周期的第i个发送周期,根据第j个程序计数器的值,从所述预定义的Z个线程的第j个线程中获取一条指令的步骤开始执行;
若i大于X,则令n=n+1,i=1,j=1,k=1,所述指令译码器再次从所述在第n个循环周期的第i个发送周期,根据第j个程序计数器的值,从所述预定义的Z个线程的第j个线程中获取一条指令的步骤开始执行。
11.根据权利要求9所述的方法,其特征在于,所述译码单元包括:指令译码器和X个程序计数器;
所述指令译码器在第n个循环周期的第i个发送周期,根据第j个程序计数器的值,从所述预定义的Z个线程的第j个线程中获取一条指令;其中,n、i、j的初始值为1,X是Z的整数倍;
所述指令译码器更新所述第j个程序计数器的值,并对获取的所述指令进行译码得到所述第j个线程中的指令对应的译码结果;
所述指令译码器将所述第j个线程中的指令对应的译码结果发送给所述处理单元;
令i=i+1,所述指令译码器比对i与X、Z之间的大小关系;
若i不大于Z,令j=j+1,所述指令译码器再次从所述在第n个循环周期的第i个发送周期,根据第j个程序计数器的值,从所述预定义的Z个线程的第j个线程中获取一条指令的步骤开始执行;
若i大于Z且不大于X,令j=i除Z的余数,所述指令译码器再次从所述将所述第j个线程中的指令对应的译码结果发送给所述处理单元的步骤开始执行;
若i大于X,令n=n+1,i=1,j=1,所述指令译码器再次从所述在第n个循环周期的第i个发送周期,根据第j个程序计数器的值,从所述预定义的Z个线程的第j个线程中获取一条指令的步骤开始执行。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710169572.6A CN108628639B (zh) | 2017-03-21 | 2017-03-21 | 处理器和指令调度方法 |
PCT/CN2018/073200 WO2018171319A1 (zh) | 2017-03-21 | 2018-01-18 | 处理器和指令调度方法 |
EP18770207.1A EP3591518B1 (en) | 2017-03-21 | 2018-01-18 | Processor and instruction scheduling method |
US16/577,092 US11256543B2 (en) | 2017-03-21 | 2019-09-20 | Processor and instruction scheduling method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710169572.6A CN108628639B (zh) | 2017-03-21 | 2017-03-21 | 处理器和指令调度方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108628639A CN108628639A (zh) | 2018-10-09 |
CN108628639B true CN108628639B (zh) | 2021-02-12 |
Family
ID=63586305
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710169572.6A Active CN108628639B (zh) | 2017-03-21 | 2017-03-21 | 处理器和指令调度方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11256543B2 (zh) |
EP (1) | EP3591518B1 (zh) |
CN (1) | CN108628639B (zh) |
WO (1) | WO2018171319A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110297662B (zh) * | 2019-07-04 | 2021-11-30 | 中昊芯英(杭州)科技有限公司 | 指令乱序执行的方法、处理器及电子设备 |
CN113031561A (zh) * | 2021-03-05 | 2021-06-25 | 深圳市元征科技股份有限公司 | 车辆数据获取方法、发送方法、电子设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102089742A (zh) * | 2008-02-26 | 2011-06-08 | 高通股份有限公司 | 执行单元内的数据转发系统和方法 |
US8195921B2 (en) * | 2008-07-09 | 2012-06-05 | Oracle America, Inc. | Method and apparatus for decoding multithreaded instructions of a microprocessor |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6311204B1 (en) * | 1996-10-11 | 2001-10-30 | C-Cube Semiconductor Ii Inc. | Processing system with register-based process sharing |
US7657893B2 (en) | 2003-04-23 | 2010-02-02 | International Business Machines Corporation | Accounting method and logic for determining per-thread processor resource utilization in a simultaneous multi-threaded (SMT) processor |
US8074051B2 (en) | 2004-04-07 | 2011-12-06 | Aspen Acquisition Corporation | Multithreaded processor with multiple concurrent pipelines per thread |
US7428653B2 (en) * | 2004-07-23 | 2008-09-23 | Mindspeed Technologies, Inc. | Method and system for execution and latching of data in alternate threads |
US20060206902A1 (en) | 2005-03-14 | 2006-09-14 | Sujat Jamil | Variable interleaved multithreaded processor method and system |
US7523295B2 (en) * | 2005-03-21 | 2009-04-21 | Qualcomm Incorporated | Processor and method of grouping and executing dependent instructions in a packet |
US7917907B2 (en) * | 2005-03-23 | 2011-03-29 | Qualcomm Incorporated | Method and system for variable thread allocation and switching in a multithreaded processor |
US7383420B2 (en) * | 2005-03-24 | 2008-06-03 | Qualcomm Incorporated | Processor and method of indirect register read and write operations |
US20060230257A1 (en) * | 2005-04-11 | 2006-10-12 | Muhammad Ahmed | System and method of using a predicate value to access a register file |
US8713286B2 (en) * | 2005-04-26 | 2014-04-29 | Qualcomm Incorporated | Register files for a digital signal processor operating in an interleaved multi-threaded environment |
US8429384B2 (en) * | 2006-07-11 | 2013-04-23 | Harman International Industries, Incorporated | Interleaved hardware multithreading processor architecture |
US7904704B2 (en) * | 2006-08-14 | 2011-03-08 | Marvell World Trade Ltd. | Instruction dispatching method and apparatus |
US8032737B2 (en) * | 2006-08-14 | 2011-10-04 | Marvell World Trade Ltd. | Methods and apparatus for handling switching among threads within a multithread processor |
US20100281234A1 (en) * | 2009-04-30 | 2010-11-04 | Novafora, Inc. | Interleaved multi-threaded vector processor |
US8397238B2 (en) * | 2009-12-08 | 2013-03-12 | Qualcomm Incorporated | Thread allocation and clock cycle adjustment in an interleaved multi-threaded processor |
US9558000B2 (en) * | 2014-02-06 | 2017-01-31 | Optimum Semiconductor Technologies, Inc. | Multithreading using an ordered list of hardware contexts |
-
2017
- 2017-03-21 CN CN201710169572.6A patent/CN108628639B/zh active Active
-
2018
- 2018-01-18 WO PCT/CN2018/073200 patent/WO2018171319A1/zh unknown
- 2018-01-18 EP EP18770207.1A patent/EP3591518B1/en active Active
-
2019
- 2019-09-20 US US16/577,092 patent/US11256543B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102089742A (zh) * | 2008-02-26 | 2011-06-08 | 高通股份有限公司 | 执行单元内的数据转发系统和方法 |
US8195921B2 (en) * | 2008-07-09 | 2012-06-05 | Oracle America, Inc. | Method and apparatus for decoding multithreaded instructions of a microprocessor |
Also Published As
Publication number | Publication date |
---|---|
US20200012524A1 (en) | 2020-01-09 |
EP3591518A1 (en) | 2020-01-08 |
WO2018171319A1 (zh) | 2018-09-27 |
EP3591518B1 (en) | 2022-07-27 |
EP3591518A4 (en) | 2020-12-23 |
CN108628639A (zh) | 2018-10-09 |
US11256543B2 (en) | 2022-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2171576B1 (en) | Scheduling threads in a processor | |
US20080074433A1 (en) | Graphics Processors With Parallel Scheduling and Execution of Threads | |
US20130219130A1 (en) | Method, apparatus, and computer program product for inter-core communication in multi-core processors | |
CN112540796B (zh) | 一种指令处理装置、处理器及其处理方法 | |
KR100983135B1 (ko) | 패킷의 의존성 명령을 그룹핑하여 실행하는 프로세서 및 방법 | |
US8707013B2 (en) | On-demand predicate registers | |
US20230093393A1 (en) | Processor, processing method, and related device | |
CN108628639B (zh) | 处理器和指令调度方法 | |
CN114968373A (zh) | 指令分派方法、装置、电子设备及计算机可读存储介质 | |
US20200326940A1 (en) | Data loading and storage instruction processing method and device | |
US11467844B2 (en) | Storing multiple instructions in a single reordering buffer entry | |
US20200364048A1 (en) | Method and apparatus for processing data splicing instruction | |
JP2013045145A (ja) | プロセッサ | |
JP3562215B2 (ja) | マイクロコンピュータ及び電子機器 | |
WO2022040877A1 (zh) | 一种图指令处理方法及装置 | |
US20240176621A1 (en) | Processor | |
JP2006195705A (ja) | プロセッサ | |
May | XMOS XS1 Architecture | |
CN117170747A (zh) | 程序与指令处理、训练与预测方法与装置、处理器 | |
CN115269009A (zh) | 指令处理方法、装置、处理器和电子设备 | |
CN114579264A (zh) | 处理装置、处理系统和处理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |