CN115629807B - 多线程处理器的译码方法、处理器、芯片及电子设备 - Google Patents
多线程处理器的译码方法、处理器、芯片及电子设备 Download PDFInfo
- Publication number
- CN115629807B CN115629807B CN202211348787.1A CN202211348787A CN115629807B CN 115629807 B CN115629807 B CN 115629807B CN 202211348787 A CN202211348787 A CN 202211348787A CN 115629807 B CN115629807 B CN 115629807B
- Authority
- CN
- China
- Prior art keywords
- instruction
- target
- queue
- thread
- queues
- 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 65
- 230000011218 segmentation Effects 0.000 claims description 19
- 230000004044 response Effects 0.000 claims description 7
- 101100310497 Arabidopsis thaliana SMT2 gene Proteins 0.000 description 37
- 230000008569 process Effects 0.000 description 31
- 101100427545 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) ULP2 gene Proteins 0.000 description 27
- 238000010586 diagram Methods 0.000 description 17
- 239000002699 waste material Substances 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 239000003550 marker Substances 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
本申请实施例提供了一种多线程处理器的译码方法、处理器、芯片及电子设备,该方法包括:根据取指请求取指指令流;响应于多线程处理器处于单线程模式,对取指出的指令流进行切分;以切分位置的指令为切换指令队列的分界,将切分的指令流分配到多个目标指令队列;其中,所述多个目标指令队列包括活跃的线程对应的指令队列和不活跃的线程对应的指令队列;利用多个译码器组译码所述多个目标指令队列中的指令,以得到各个译码器组译码后的微指令。本申请实施例能够在兼容多种线程模式的情况下,提升多线程处理器的译码效率。
Description
技术领域
本申请实施例涉及处理器技术领域,具体涉及一种多线程处理器的译码方法、处理器、芯片及电子设备。
背景技术
多线程处理器(Simultaneously Multi-threading)是同一个处理器上的多个线程同步执行并共享处理器上的运算和访存资源,从而最大限度的实现处理器的多发射、乱序处理。多线程处理器在具有多种线程模式的情况下,具有向下兼容的特性,例如四线程(SMT4)处理器支持四线程(SMT4)模式、二线程(SMT2)模式以及单线程(ST)模式,并且SMT4处理器支持在SMT4模式、SMT2模式以及ST模式之间切换。
在多线程处理器中,指令需要经过取指、译码和执行等处理过程;其中,译码是译码器对取指的指令进行解析编译,以得到微指令(micro-op)的过程。为提升译码性能,多线程处理器中可设置多个译码器组对多个指令进行译码,然而,在多线程处理器兼容多种线程模式的情况下,如何提升多线程处理器的译码效率成为了难题。
发明内容
有鉴于此,本申请实施例提供一种多线程处理器的译码方法,能够在兼容多种线程模式的情况下,提升多线程处理器的译码效率。
为实现上述目的,本申请实施例提供如下技术方案:
第一方面,本申请实施例提供一种多线程处理器的译码方法,包括:
根据取指请求取指指令流;
响应于多线程处理器处于单线程模式,对取指出的指令流进行切分;
以切分位置的指令为切换指令队列的分界,将切分的指令流分配到多个目标指令队列;其中,所述多个目标指令队列包括活跃的线程对应的指令队列和不活跃的线程对应的指令队列;
利用多个译码器组译码所述多个目标指令队列中的指令,以得到各个译码器组译码后的微指令;其中,一个译码器组译码所对应的目标指令队列中的指令,在单线程模式下,一个译码器组对应至少一个目标指令队列。
第二方面,本申请实施例提供一种多线程处理器,包括:
指令缓存,用于根据取指请求取指指令流;
指令多路适配器,用于响应于多线程处理器处于单线程模式,对取指出的指令流进行切分;以切分位置的指令为切换指令队列的分界,将切分的指令流分配到多个目标指令队列;其中,所述多个目标指令队列包括活跃的线程对应的指令队列和不活跃的线程对应的指令队列;
多个译码器组,用于利用多个译码器组译码所述多个目标指令队列中的指令,以得到各个译码器组译码后的微指令,其中,一个译码器组译码所对应的目标指令队列中的指令,在单线程模式下,一个译码器组对应至少一个目标指令队列。
第三方面,本申请实施例提供一种芯片,包括如前所述的处理器。
第四方面,本申请实施例提供一种电子设备,包括如前所述的芯片。
本申请实施例提供的多线程处理器的译码方法,能够根据取指请求取指指令流;进而响应于多线程处理器处于单线程模式,对取指出的指令流进行切分;并且以切分位置的指令为切换指令队列的分界,将切分的指令流分配到多个目标指令队列;其中,所述多个目标指令队列包括活跃的线程对应的指令队列和不活跃的线程对应的指令队列;最后利用多个译码器组译码所述多个目标指令队列中的指令,以得到各个译码器组译码后的微指令。本申请实施例在多线程处理器中设置多个译码器组,并且使每组译码器组能够对应多线程处理器中的一个或者多个线程,执行译码操作,以实现在多线程处理器中的指令需要处理时,能够利用多个译码器组并行处理,提升译码过程的吞吐量,进而提升了多线程处理器的译码效率;进一步的,本申请实施例中的多线程处理器支持指令的乱序译码,尽可能融合多线程处理器中多个线程的资源,实现在提高多线程处理器的译码效率时有效融合多线程处理器的资源,避免多线程处理器中的资源浪费。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1A为单线程处理器的架构示意图;
图1B为单线程处理器的另一架构示意图;
图1C为SMT2处理器处于SMT2模式的架构框图;
图1D为SMT2处理器处于ST模式的架构框图;
图2为本申请实施例提供的多线程处理器的结构示意图;
图3为本申请实施例中由多线程处理器执行的译码方法的可选流程图;
图4为本申请实施例提供的根据指令边界信息对指令流进行切分的流程图;
图5为本申请实施例提供的为切分位置的指令附带切换标记的示意图;
图6为本申请实施例中译码方法的另一种流程示意图;
图7为本申请实施例提供的多线程处理器的架构示意图;
图8为本申请实施例中多线程处理器处于多线程模式下的译码方法流程图;
图9为本申请实施例提供的多线程处理器的另一架构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
指令是控制计算机执行操作的命令,也称为机器指令。指令的作用是协调各硬件部件之间的工作关系,它反映了计算机所拥有的基本功能,是计算机运行的最小功能单位。在计算机执行某种操作命令时,处理器需要对指令进行处理,转化为能够被机器识别的机器语言。在处理器中,一般使用流水线(pipeline)技术实现指令的处理。
在处理器的流水线作业中,指令需要经过取指(Instruction Fetch)、译码(Instruction Decode)、执行(Execute)等处理过程。取指为从处理器的缓存或主存储器中取指出程序运行对应的指令;译码操作为对取指出的指令进行译码,以确定指令的操作码和/或地址码等;执行操作为根据得到的操作码和/或地址码等执行指令操作,实现程序运行。其中,由于指令中存在改变程序流程的分支指令的可能,为解决在处理分支指令时,处理器等待分支指令的执行结果来确定下一步取指而导致的流水线延迟,处理器处理指令的流水线的前端还可设置分支预测单元,以实现指令的分支预测。
图1A示例性的示出了单线程处理器的架构框图,其中,单线程指的是一个处理器的译码进程中只存在一个单一顺序的控制流,该处理器包括:分支预测单元101、指令缓存102、译码器组103。
分支预测单元101是一种数字电路,可对指令进行分支预测,并基于分支预测结果生成取指请求。分支预测结果例如当前指令是否为分支指令、分支指令的分支结果(方向、地址、目标地址等)等。在一种实现中,分支预测单元可基于分支指令的历史执行信息和结果进行指令的分支预测,从而得到指令的取指地址范围并生成取指请求。分支预测单元生成的取指请求中包含有若干条指令的取指地址,用于从指令缓存102中读取相应的指令。
指令缓存102中存储有指令,根据分支预测单元生成的取指请求,能够在指令缓存中102取指出多条待译码指令。可选的,指令缓存102可以是位于处理器的一级缓存中的用于存储指令的缓存部分。
译码器组103能够对指令进行解析编译,通过译码器组对指令进行译码操作,可以得出译码后的指令。译码后的指令可以是解释指令所得出的可由机器执行的操作信息,诸如控制字段所形成的机器可执行的uop;也就是说,译码器可对指令进行译码,从而得到微指令。
图1A所示的处理器架构使用单一译码器组对指令进行译码,其受限于译码器组的吞吐量,指令的译码效率难以有效提升。基于此,使用多个译码器组对指令进行并行译码的处理器应运而生。图1B示例性的示出了处理器的另一架构框图。结合图1A和图1B所示,图1B所示处理器设置了多个译码器组1031至103n,n的具体数值可以根据处理器的具体设计而定,本申请实施例并不设限。基于处理器设置的多个译码器组1031至103n,指令缓存102基于取指请求取指出的指令流可以分配给多个译码器组进行译码,使得多个译码器组进行指令的乱序译码,并分别输出译码得到的微指令,提升指令的译码效率。
在一个示例中,多个译码器组可以为两组译码器组,例如分别为译码器组1031和译码器组1032。其中,译码器组1031和译码器组1032可以不按指令的顺序在指令缓存中交替取指出待译码指令并进行译码操作,进而实现指令的乱序译码。需要说明的是,在实际应用中,处理器可以根据需要设置两组以上的译码器组,为便于理解,本申请实施例仅示出两组译码器组的示例。
然而图1A和图1B所示的处理器为具有单线程的处理器,但是随着处理器技术的不断发展,提出了具有同时多线程功能的高性能处理器,即多线程处理器。在多线程处理器中,一个处理器能够同时存在有多条线程,用于执行处理器的译码操作,并且,多个线程可以同时执行并共享处理器的执行资源,可最大限度地实现指令的并发执行。多线程处理器具有向下兼容的特性,例如多线程处理器支持多种处理器模式,例如四线程(SMT4)处理器支持四线程(SMT4)模式、二线程(SMT2)模式以及单线程(ST)模式,并且SMT4处理器支持在SMT4模式、SMT2模式以及ST模式下任两个之间切换;而二线程(SMT2)处理器支持二线程(SMT2)模式以及单线程(ST)模式,并且SMT2处理器支持在SMT2模式以及ST模式两种模式之间切换。以SMT2处理器为例,图1C为SMT2处理器处于SMT2模式的架构框图。如图1C所示,分支预测单元负责产生取指请求,指令缓存负责执行取指请求从缓存中取出指令,译码器组负责对指令进行译码得到微指令,微指令分发用于将译码出的微指令进行分发,以实现指令的计算和访存。其中,SMT2处理器的各功能单元(即分支预测单元、指令缓存、译码器组以及微指令分发)之间通常会有缓冲队列,从前到后依次是取指请求队列、指令队列和微指令队列。
需要说明的是,多线程处理器的各功能单元之间的缓冲队列个数取决于多线程处理器所支持的线程数量,每个线程都有各自独立的缓冲队列,所述多线程处理器可以至少包括四线程处理器和二线程处理器,在其他可能实现中,还可以为八线程处理器,这里不做具体限定。
在多线程处理器中,各功能单元(即分支预测单元、指令缓存、译码器组以及微指令分发)从多个线程的缓冲队列中通过多路选择器(Tmux)进行选择,在处理器的每个时钟周期内选出一个线程的输入执行相应的功能,多路适配器(Tdemux)作为功能单元的输出,依据当前执行的线程号决定写入对应线程的指令队列。参考图1C所示,分支预测单元生成取值请求,Tdemux00依据当前执行的线程号,将取值请求分配到对应线程号的取指请求队列T0中,进而通过Tmux00将线程0的取指请求队列中的指令传输到指令缓存中;Tdemux01根据指令缓存输出的待译码指令的线程号,将该待译码指令写入线程0对应的指令队列T0'中,通过Tmux01将待译码指令交由译码器组进行译码操作,并将译码后的微指令通过Tdemux02写入线程0对应的微指令队列T0”中,通过Tmux02对微指令队列进行选择,并在对应的微指令队列中读取微指令,将读取的微指令进行微指令分发。在SMT2中,线程1的操作同线程0,可参照执行。
需要说明的是,在SMT2中,当线程0和线程1同为活跃的线程时,则由Tdemux01根据指令缓存输出指令的线程号,选择将指令写入与线程号对应的线程的指令队列中;由Tmux01根据线程号对指令队列进行选择,并将指令队列中的待译码指令进行读取,输出给译码器组执行译码操作;并将译码后的微指令交由Tdemux02根据线程号在微指令队列中进行选择与线程号对应的线程的微指令队列,将微指令写入对应微指令队列中;微指令分发前的Tmux02根据线程号选择与线程号对应的微指令队列,将对应微指令队列中的微指令输出给微指令分发单元。
在本申请实施例中的一种可选实现中,可以是Tdemux01基于指令缓存输出指令的线程号,确定线程号对应的多个目标指令队列;将取指出的指令流分配到对应的多个目标指令队列。
基于多线程处理器具有向下兼容的特性,为此,在多线程处理器在多线程模式切换到单线程模式下时,多线程处理器中的多条线程可以存在不活跃线程。以SMT2为例,对SMT2模式切换至ST模式的译码过程进行说明。图1D为SMT2处理器处于ST模式的架构框图。
如图1D所示,在SMT2处理器的ST模式下,线程0为活跃线程,线程1为不活跃线程。具体的,当线程1不活跃时,其对应的取指请求队列T1(图中灰色部分)不再接受Tdemux00写入取指请求,指令队列T1'(图中灰色部分)不再接受Tdemux01写入指令,微指令队列T1”(图中灰色部分)不再接受Tdemux02写入微指令,同理,Tmux00也不再对线程1对应的取指请求队列T1进行挑选,Tmux00也不再对线程1中的指令队列T1'进行挑选,Tmux00也不再对线程1中的微指令队列T1”进行挑选。可见,当SMT2向下兼容单线程模式时,SMT2的线程1对应的T1队列(即取指请求队列T1、指令队列T1'、微指令队列T1”)被闲置,造成了SMT2的队列空间资源浪费,也就是说,当多线程处理器中存在不活跃线程时,多线程处理器不能够充分利用不活跃线程的空间资源。
在另一可选实现中,SMT2的不活跃线程1对应的T1队列也可以合并给线程0对应的T0队列(即取指请求队列T0、指令队列T0'、微指令队列T0”)使用,使线程0对应的T0队列的深度可以变为原来的两倍,但在此种情况下,将不活跃线程的资源合并使用,仅能增加活跃线程的深度,在单组译码器组的情况下,多线程处理器的译码效率并不高。
基于前述,无论是多线程处理器中存在不活跃线程的空间资源,又或者是,将不活跃的线程合并给活跃的线程使用的前提下,仅采用单组译码器组,只能按照Tmux选择的指令队列写入待译码指令的顺序执行译码操作,目前来说,多线程处理器的译码效率不高。
基于上述,本申请实施例提出多线程处理器的改进结构,在多线程处理器中设置多个译码器组,并且使每组译码器组能够对应多线程处理器中的一个或者多个线程,执行译码操作,以实现在多线程处理器中的指令需要处理时,能够利用多个译码器组并行处理,提升译码过程的吞吐量,进而提升了多线程处理器的译码效率;进一步的,当多线程处理器处于单线程模式下,对指令进行乱序译码时,还可以融合多线程处理器中多个线程的资源,实现在提高多线程处理器的译码效率时有效融合多线程处理器的资源,避免多线程处理器中的资源浪费。也就是说,本申请实施例可在多线程模式下,利用多组译码器,提升译码吞吐量;在单线程模式下,利用多组译码器并进行乱序译码,提升译码吞吐量。
基于上述思路,继续以SMT2处理器为例进行说明。图2为本申请实施例提供的多线程处理器(SMT2)的结构示意图。如图2所示,SMT2处理器包括:指令缓存、多个译码器组(分别为译码器组0和译码器组1)以及微指令分发,在本实施例中,一个译码器组对应有一个指令队列和一个微指令队列。当SMT2处理器处于SMT2模式时,指令缓存根据分支预测单元生成的取指请求取指出指令,Tdemux01将指令适配给线程号对应的指令队列,进而利用与线程号匹配的译码器组进行译码。首先对线程0的译码过程进行说明,Tdemux01根据线程号0将指令分配到指令队列T0'中,进而指令队列T0'中的指令被传输到译码器组0中进行译码,得到的微指令写入微指令队列T0”,从而Tmux01能够根据线程号对微指令队列执行微指令传输;类似的,线程1上的译码过程为:Tdemux01根据线程号1将指令分配到指令队列T1'中,进而指令队列T1'中的指令被传输到译码器组1中进行译码,得到的微指令写入微指令队列T1”,从而Tmux01能够根据线程号1实现微指令分发传输。可选的,当Tmux01需要分发微指令队列T0”中的指令以及微指令队列T1”中的指令时,可以根据线程号的不同,实现不同微指令队列中的微指令分发。
当SMT2处理器在ST模式下时,此时,只有线程0活跃或者只有线程1活跃,指令缓存根据分支预测单元生成的取指请求取指出的指令流发送至Tdemux01,Tdemux01此时会对指令流进行切分处理,使得切分后的指令流能够分配到SMT2处理器的线程0和线程1对应的指令队列中(线程0或者线程1中只有一个活跃),进而利用两个线程中的两组译码器组进行并行译码,从而实现在SMT2处理器的ST模式下,采用两个指令队列以及两个译码器组,并将两个译码器组译码后的微指令存储到对应的微指令队列。当在SMT2处理器处于ST模式下,基于Tdemux01的对指令流的切分作用,能够实现ST模式下指令的乱序译码操作。并且,在本申请实施例的ST模式下,不活跃线程的队列资源能够进行融合,避免多线程处理器中的资源浪费,能够有效提升了处理器的译码性能。可见,本申请实施例能够在单线程模式下,利用多组译码器并进行乱序译码,提升译码吞吐量。
在多线程处理器的架构下,图3为本申请实施例中由多线程处理器执行的译码方法的可选流程图。参考图3所示,该译码方法可以具体包括:
步骤S31、根据取指请求取指指令流。
其中,取指请求用于指示从指令缓存中取指指令流。
步骤S32、响应于多线程处理器处于单线程模式,对取指出的指令流进行切分。
由于多线程处理器具有向下兼容的模式,因此,多线程处理器存在处于单线程模式的情况。当多线程处理器处于单线程模式且需要译码时,为有效利用多线程处理器的多个指令队列,需要对在指令缓存中取指出的指令流进行切分。
步骤S33、以切分位置的指令为切换指令队列的分界,将切分的指令流分配到多个目标指令队列;其中,所述多个目标指令队列包括活跃的线程对应的指令队列和不活跃的线程对应的指令队列。
其中,目标指令队列用于存放待译码的指令。并且,所述多个目标指令队列的数量小于或者等于所述多线程处理器具有的指令队列的数量。
在一种实施例中,当多个目标指令队列的数量小于多线程处理器具有的线程数量时,可以将对应同一译码器组的一活跃的线程对应的指令队列和另一活跃线程对应的指令队列两两合并,作为目标指令队列;还可以是对应同一译码器组的活跃的线程对应的指令队列和不活跃线程对应的指令队列两两合并,作为目标指令队列;又可以将对应同一译码器组的活跃的线程对应的指令队列作为目标指令队列,将不活跃的线程对应的指令队列舍弃,再可以是,将对应同一译码器组的不活跃的线程对应的指令队列作为目标指令队列,将活跃的线程对应的指令队列舍弃。
进一步的,在其他实施例中,当多个目标指令队列的数量等于多线程处理器具有的线程数量时,则多线程处理器不同线程对应的指令队列为多个目标指令队列。
可以理解的是,分支预测单元生成的取指请求中存在分支预测跳转的指令地址,从而指令缓存根据分支预测单元取指出的指令流中存在有分支跳转指令,其中,分支跳转指令是具有指令结尾的指令,则指令流中的分支跳转指令的指令结尾可以作为指令流的切分位置,将指令流切分成多个指令组,从而以切分位置的指令可以作为切分指令队列的分界,将切分的指令组分配给多个指令队列。本申请实施例在多线程处理器处于单线程模式下时,Tdemux可以识别指令缓存取指出的指令流中的切分位置,将该切分位置作为指令流的指令边界信息,以实现Tdemux对指令流的切分。需要说明的是,本申请实施例的指令边界信息不止局限于分支跳转指令指示的切分位置,也可以有实现其他机制,只要保证能够在指令流的有效边界进行切分即可作为指令边界信息,对此本申请实施例不做过多限制。
在一些实施例中,由于指令边界信息指示进行指令切分的指令位置(例如指令结束地址),因此在Tdemux得到指令流后,能够以切分位置的指令为切换指令队列的分界,对指令流进行切分,并将切分的指令流分配给多个译码器组进行并行译码。
作为对指令流进行切分的可选实现,Tdemux以指令边界信息指示的指令位置为分界,将指令流切分成切分前的指令和切分后的指令,从而将指令流切分为多个指令流。在Tdemux将多个指令流分配给对应的指令队列执行译码操作时,可以将切分前的指令分配给一线程对应的目标指令队列,将切分后的指令切换到与上一线程不同的另一线程对应的目标指令队列,其他线程以此类推进行分配。
继续结合图2,SMT2处理器具有与支持的两个线程(线程T0和线程T1)对应的两个指令队列,分别为指令队列T0'和指令队列T1',指令队列T0'对应有译码器组0,指令队列T1'对应有译码器组1。
在一些实施例中,当SMT2处理器处于单线程(ST)模式下,此时仅有一个线程活跃,该活跃的线程可以为线程T0或者线程T1。示例的,SMT2处理器处于ST模式下,当线程T0活跃时,线程T1不活跃;当线程T0不活跃时,线程T1活跃,以上两种状态下线程对应的指令队列均可以作为目标指令队列。
进一步的,以SMT2处理器处于单线程模式下,仅线程T0活跃为例,将切分后的指令流依次分配到线程T0对应的活跃的指令队列T0'和线程T1对应的不活跃的指令队列T1',其中,活跃的线程T0对应的指令队列T0'和不活跃的线程T1对应的指令队列T1'均作为本申请实施例中的多个目标指令队列。
步骤S34、利用多个译码器组译码所述多个目标指令队列中的指令,以得到各个译码器组译码后的微指令;其中,一个译码器组译码所对应的目标指令队列中的指令,在单线程模式下,一个译码器组对应至少一个目标指令队列。
可选的,一个译码器组对应至少一个目标指令队列,为此,可以利用多个译码器组对多个目标指令队列中的指令进行并行译码,从而得到多个译码器组译码后的微指令。
本申请实施例中多线程处理器处于单线程模式下,能够对取指出的指令流进行切分,将切分后的指令流分配到多线程处理器对应的多个目标指令队列中,进而利用多个译码器组对多个目标指令队列进行并行处理,提高了译码过程的吞吐量,进而提升了多线程处理器的译码性能。
一些实施例中,当多线程处理器处于单线程模式时,本申请实施例公开了对取指出的指令流进行切分的一种可选的实施方式。本申请实施例中的对指令流进行切分,可以包括:根据指令边界信息指示的进行指令切分的切分位置,对所述指令流进行切分;所述指令边界信息携带在所述取指请求中。
指令边界信息用于指示指令切分的指令位置。在多线程处理器处于单线程模式下,结合图2所示,多线程处理器中的Tdemux01能够根据指令边界信息指示的切分位置,对指令缓存中取指出的指令进行切分。
在一些实施例中,本申请实施例中的指令边界信息指示分支跳转指令的指令结尾位置。一段指令流中有可能存在分支指令,分支指令可改变程序的执行流程或者调用子程序。分支预测单元对分支指令的预测能够确定分支指令的下个指令的取指地址。当分支预测单元预测出的指令为跳转时,则以取指请求中对应分支跳转指令的当前取指结束地址为分支跳转指令的结束地址,下一个指令的取指起始地址为跳转到的取指地址。可以理解为,分支跳转指令是一个完整的指令,则分支跳转指令的指令结尾位置可以作为一个有效的指令边界,即本申请实施例中的指令边界信息。
为便于理解基于指令边界信息指示的指令位置对指令流进行切分的原理,结合图4进行详细的介绍。图4示出了本申请实施例中根据指令边界信息对指令流进行切分的示意图。
结合图4所示,指令边界信息对应于指令50i的结尾位置,由Tdemux(指令多路适配器)根据指令边界信息对指令流(即指令500至50n)进行切分。其中,指令50i与指令50i+1相邻,在对指令流进行切分时,将目标指令50i切分到前一个指令组(即指令500至指令50i为切分后的前一个指令组),指令50i+1切分到后一个指令组(即指令50i+1至指令50n为切分后的后一个指令组),从而实现根据指令边界信息指示的进行指令切分的切分位置,对所述指令流进行切分。
需要说明的是,当读取的指令边界信息为多个时,也可按上述切分原理进行指令流的切分,比如,一个取指请求中包含有多个指令边界信息,而多个指令边界信息指示进行指令切分的多个位置,本申请实施例可根据多个指令边界信息指示的多个指令切分的位置,在指令流中进行多次指令流的切分操作,并将切分后的多个指令组依次分配到对应的目标指令队列。
在一种可选实现中,可以以切分位置的指令为切换指令队列的分界,将切分的指令流分配到多个目标指令队列,包括:
为切分位置的指令附带切换标记;基于所述切分位置的指令的切换标记,将切分的指令流分配到多个目标指令队列。
本申请实施例中的切换标记位于切分位置的指令中,用于表示当前指令结束的位置即为切分位置。当切分位置的指令附带切换标记时,附带切换标记的指令会被分配到前一个指令队列,而下一个指令会被分配到与附带切换标记的指令不同的指令队列。
图5为本申请实施例提供的为切分位置的指令附带切换标记的示意图。如图5所示,以指令流为指令500到指令50n进行说明。当切分后的前一个指令组为指令500至指令50i,切分后的后一个指令组为指令50i+1至指令50n,此时,指令50i为切分位置的指令,指令50i中附带切换标记。进一步的,在切分指令流的过程中,可以以指令50i为切分位置,将切分的前一个指令组500至指令50i写入译码器0的指令队列,将切分的后一个指令组指令50i+1至指令50n写入译码器1的指令队列。
需要说明的是,切换标记可以指示对指令流进行指令切分的位置;假如一次取指请求最多为64byte,切换标记为6bit,则指示在64byte中第几个byte实现指令切分。
在一些实施例中,切换标记可以发生透传。其中,切换标记用于指示当前指令为切换前的最后一条指令,从而切分之前指令流中的最后一条指令附带切换标记,使得在将切分后的指令流根据切换标记分配到多个目标指令队列,由于切换标记可以发生透传,为此,即便是分配到多个指令队列中,多个指令队列中位于切分位置的指令也携带有切换标记,进而在译码器组对多个指令队列译码后,译码后的微指令队列中,与切分位置对应的微指令也会携带有切换标记,为此,在后续读取微指令过程中,可以根据切换标记在不同的微指令队列中切换的读取微指令,保证了微指令的读取顺序与前述取指的指令流的顺序相同。
可选的,当指令为变长指令集(Complex Instruction Set Computer,CISC)中的指令时,变长指令集对应的指令流包括切换标记,可以按照如前所述的切换标记的读取方式对其进行读取,这里不再赘述。
进一步的,在切分完成后,可以以切分位置的指令为切换指令队列的分界,将切分的指令流分配到多个目标指令队列。所述多个目标指令队列与所述多线程处理器具有的线程相关。可选的,多线程处理器的线程的数量可以决定多个目标指令队列的数量。示例的,当多线程处理器为SMT4处理器时,SMT4处理器具有4个线程,对应任一个线程均会有一个指令队列,为此,SMT4处理器具有的指令队列的数量为4,为此,SMT4处理器下,目标指令队列的数量最大为4。类似的,当多线程处理器为SMT2处理器时,SMT2处理器具有2个线程,SMT2处理器具有的指令队列的数量为2,为此,SMT2处理器下,目标指令队列的数量最大为2。
多个目标指令队列用于保存对应的译码器组中待译码的指令流。所述目标指令队列与待译码的指令流一一对应,为此,可以将指令流交替写入多线程处理器支持的目标指令队列中,多线程处理器支持的指令队列与多个目标指令队列的数量相等;还可以是指令流交替写入多线程处理器支持的指令队列合并后的目标指令队列中,此时,目标指令队列的数量小于多线程处理器支持的指令队列的数量。
作为可选实现,目标指令队列也可以是,在舍弃多线程处理器中部分不活跃的指令队列后,多线程处理器剩余的指令队列,此时,目标指令队列的数量小于多线程处理器支持的指令队列的数量。
示例的,当多线程处理器为SMT4处理器时,SMT4处理器中的线程对应的指令队列的数量为4,若是将指令流交替写入多线程处理器支持的目标指令队列中,此时的多个目标指令队列的数量为4;若是多线程处理器支持的指令队列两两合并得到的,将指令流交替写入多线程处理器支持的指令队列合并后的目标指令队列中,此时的多个目标指令队列的数量为2;若是多线程处理器中将2个不活跃的线程对应的指令队列舍弃,将指令流交替写入多线程处理器支持的指令队列合并后的目标指令队列中,此时的多个目标指令队列的数量为2。
在一些实施例中,利用多个译码器组译码所述多个目标指令队列中的指令,以得到各个译码器组译码后的微指令包括:
利用多个译码器组译码多个目标指令队列中的指令,得到各个译码器组译码后的微指令,其中,位于切分位置的微指令携带有切换标记。
一个目标指令队列可被一个译码器组译码得到微指令,在译码器组执行译码操作的过程中,切换标记能够不被译码器组解析编译,并且译码得到的微指令也中携带切换标记。
在可选实施例中,图6为本申请实施例中译码方法的另一种流程示意图。参考图6所示,在步骤S34之后,还可以执行:
步骤S35、将各个译码器组译码后的微指令,保存在译码器组对应的目标微指令队列,其中,一个译码器组对应有至少一个目标微指令队列。
目标微指令队列用于保存译码器组译码指令得到的微指令;例如,如图2中的,译码器组0,其对应的目标微指令队列T0”保存译码器组0的译码得到的微指令;译码器组1,其对应的目标微指令队列T1”保存译码器组1的译码得到的微指令。
步骤S36、在各个译码器组对应的目标微指令队列中切换的读取微指令。
可选的,在各个译码器组对应的目标微指令队列中切换的读取微指令的一种可选实现方式可以是:基于目标微指令队列中保存的携带切换标记的微指令,在多个目标微指令队列中切换的读取微指令;其中,微指令中的切换标记通过译码前的指令透传得到。
进一步的,若是指令的切换标记透传到译码后的微指令,针对任一个译码器组对应的多个微指令队列,在读取一个微指令队列时,如果读取到附带切换标记的微指令,则切换到下一个微指令队列读取微指令,以交替的在译码器组对应的多个目标微指令队列中读取微指令。
由于指令流在单线程模式下会被拆分,为此,可以在各个译码器对应的目标微指令队列中切换的读取微指令,保证读取出来的微指令与初始的指令流中的顺序相同。
在本申请实施例中当切分位置的携带有切换标记时,由于切换标记在译码过程中可以发生透传,为此,一旦指令队列中存在切换标记后,切换标记会随着指令队列的流转而流转。也就是说,针对携带切换标记的指令,指令在被分配给目标指令队列时,目标指令队列中对应的指令也携带有切换标记,进而在目标指令队列中的指令被译码后,携带切换标记的指令对应译码后的微指令也携带有切换标记。
在一些实施例中,当多线程处理器支持的线程数量大于2(例如SMT4处理器),该多线程处理器的单线程模式下,由于每个线程存在对应的一个指令队列和微指令队列,多线程处理器的指令队列数量以及微指令队列数量都大于2,为实现多线程处理器的队列资源的有效利用,可以对共享有一个译码器组的线程进行合并处理。也就是说,在至少两组线程中的指令队列共享有一个译码器组时,可以将至少两组线程中的指令队列合并,使得合并后的目标指令队列拥有更大的深度。不同的线程中均有指令队列和微指令队列,为此,在合并过程中,可以将至少两组线程中的指令队列合并后作为目标指令队列,目标微指令队列的合并方式与目标指令队列的合并方式对应,从而为指令流的译码过程提供更大的深度。
当然,当多线程处理器支持的线程数量大于2(例如SMT4处理器),该多线程处理器的单线程模式下,由于每个线程存在对应的一个指令队列和微指令队列,多线程处理器的指令队列数量以及微指令队列数量都大于2,也可以对共享有一个译码器组的不活跃的线程舍弃。也就是说,在至少两个线程中的指令队列共享有一个译码器组时,将共享有一个译码器组中的活跃的线程对应的指令队列保留作为目标指令队列,在活跃的线程对应的指令队列被保留时,对应的目标微指令队列会被保留;将共享有一个译码器组的不活跃的线程对应的指令队列舍弃,在不活跃的线程对应的指令队列被舍弃时,对应的目标微指令队列也会被舍弃。
示例的,本申请实施例多线程处理器还可以为SMT4处理器,下面对SMT4处理器处于单线程模式下目标指令队列的情况进行说明。
图7为本申请实施例中SMT4处理器的架构框图,以SMT4处理器处于单线程模式下进行说明。
需要说明的是,SMT4处理器在单线程模式下,实际上是只有一个线程处于活跃,但是为了尽可能的整合处理器的资源,可以将SMT4处理器中对应的同一译码器组的指令队列进行两两合并,分别得到目标指令队列T01'和目标指令队列T23',从而目标指令队列T01'利用对应的译码器组0进行译码得到目标微指令队列T01”,目标指令队列T23'利用对应的译码器组1进行译码得到目标微指令队列T23”。
进一步的,目标指令队列T01'为指令队列T0'和T1'的合并,目标指令队列T23'为指令队列T2'和T3'的合并,目标微指令队列T01”为微指令队列T0”和T1”的合并,目标微指令队列T23”为微指令队列T2”和T3”的合并。
可以理解的是,在多线程处理器的单线程模式下,指令队列的合并可以根据多线程处理器对队列资源的需求进行,若不需要对队列资源进行融合,则目标指令队列为各线程对应的指令队列,目标微指令队列为各线程对应的微指令队列,在已定数量的译码器组为前提的情况下,利用与译码器组数量相同的队列资源,其他队列资源可闲置,本申请实施例对此不作过多限制。
经由上述指令队列的合并,目标指令队列T01'相对于指令队列T0'或者指令队列T1'来说,合并后的目标指令队列整合了数据资源,拥有更大的数据深度;进一步,利用目标指令队列对应的译码器组进行译码,相对于采用单组译码器来说,能够通过多个译码器组提升译码过程的吞吐量;进一步的,在多个译码器组并行译码的过程中,可以实现乱序译码,提升了译码效率,目标指令队列T23'相对于指令队列T2'或者指令队列T3'的实现效果参见前述目标指令队列T01'相对于指令队列T0'或者指令队列T1'的效果,这里不再赘述。
在一种可选实现中,多线程处理器还可以处于多线程模式。图8为本申请实施例中多线程处理器处于多线程模式下的译码方法流程图。参考图8所示,该译码步骤包括:
步骤S81、响应于多线程处理器处于多线程模式,将取指出的指令流分配到所述多个目标指令队列;
其中,所述多线程模式可以是二线程模式或者四线程模式。可选的,当多线程处理器为二线程处理器时,其对应的多线程模式仅有二线程模式;当多线程处理器为四线程处理器时,其对应的多线程模式可以为四线程模式,也可以为二线程模式。
在一种实施例中,在多线程模式下,基于指令缓存输出的指令,根据线程号将指令分配到指令的线程号所对应的目标指令队列,其中,一个线程号对应一个目标指令队列,指令流中存在不同线程号的多个指令。
多线程处理器对应有多个线程,任一个线程均会有其对应的线程号,并且,当多线程处理器处于多线程模式下,可以根据线程号将多个指令分配给对应的目标指令队列。
步骤S82、利用多个译码器组译码所述多个目标指令队列中的指令,以得到各个译码器组译码后的微指令,其中,在多线程模式下,一个译码器组对应至少一个目标指令队列。
由于在多线程模式下,一个译码器组对应至少一个目标指令队列,为此,可以利用多个译码器组对多个目标指令队列中的指令进行并行译码,从而得到多个译码器组译码后的微指令。
步骤S83、将各个译码器组译码后的微指令,保存在译码器组对应的目标微指令队列,其中,一个译码器组对应有至少一个目标微指令队列;
在一种实施例中,根据所述目标指令队列的线程号,将各个译码器组译码后的微指令,保存在译码器组对应的目标微指令队列。
由于在多线程模式下,各个译码器组能够将不同线程号的目标指令队列进行译码,进而也可以根据不同线程号将译码后的微指令保存到译码器组对应的目标微指令队列中。
步骤S84、在各个译码器组对应的目标微指令队列中切换的读取微指令。
在一种实施例中,能够根据所述目标微指令队列的线程号,在各个译码器组对应的目标微指令队列中切换的读取微指令。
在可选实现中,图9为本申请实施例中SMT4处理器的另一架构框图,以SMT4处理器处于多线程模式下进行说明。结合图9所示,假设SMT4处理器包括四个线程,分别为:线程0、线程1、线程2以及线程3。其中,线程0对应指令队列T0'、译码器组0、微指令队列T0”;线程1对应指令队列T1'、译码器组1、微指令队列T1”;线程2对应指令队列T2'、译码器组2、微指令队列T2”;线程3对应指令队列T3'、译码器组3、微指令队列T3”;SMT4处理器处于四线程模式下,指令队列T0'、指令队列T1'、指令队列T2'以及指令队列T3'均可以作为目标指令队列,此时,多个目标指令队列的数量等于多线程处理器中的线程的数量。
在一种实施例中,当SMT4处理器处于四线程模式时,从指令缓存中取指出指令流后,将指令流输入到Tdemux01中,Tdemux01基于线程号对指令流中的指令进行分配,将指令流依次写入对应的指令队列T0'、指令队列T1'、指令队列T2'以及指令队列T3'。可选的,若是指令流中的线程号为0,则将线程号为0的指令写入指令队列T0'中,其他线程号可以参考线程号为0时所述,这里不再赘述。
进而,在译码器组译码后,根据线程号的不同,将各个译码器组译码后的微指令,保存在译码器组对应的目标微指令队列。也就是说,若是指令流中的线程号为0,则将译码器组0译码后的微指令写入目标微指令队列T0”中,若是指令流中的线程号为1,则将译码器组0译码后的微指令写入目标微指令队列T1”中,其他线程号写入目标微指令队列的方式可以参考线程号为0时所述,这里不再赘述。
此时,在仅有两个译码器组时,在将各个译码器组译码后的微指令保存到对应的微指令队列之前,还可以设立一个Tdemux02或者Tdemux03,如图7中所示,在写入微指令队列之前,根据微指令流中指令对应的线程号,将不同线程号的指令写入到不同的微指令队列中。
最后,在执行微指令分发之前,可以利用Tmux01根据目标微指令队列的线程号在各个译码器组对应的目标微指令队列中切换的读取微指令,从而保证读取出来的微指令流的顺序与从指令缓存中取指出的指令流相同。
当然在本申请实施例中,所述SMT4处理器还可以处于二线程模式,此时结合图9所示,假定线程0和线程2活跃,线程1和线程3不活跃,此时,与四线程模式下不同的是,线程1中的指令队列与线程0中的指令队列合并,线程3中的指令队列可以与线程2中的指令队列合并,从而得到目标指令队列。此时,多个目标指令队列的数量不大于四线程处理器具有的线程的数量,可见,即便是在SMT4处理器还可以处于二线程模式时,也能够利用四个线程上的全部指令队列资源,不会造成资源的浪费。
进一步的,在其他实施例中,SMT4处理器处于二线程模式下,继续以线程0和线程2活跃,线程1和线程3不活跃进行说明,此时,与前述二线程模式下不同的是,可以将线程1中的指令队列和线程3中的指令队列舍弃,仅使用线程0中的指令队列和线程2中的指令队列,将线程0中的指令队列和线程2中的指令队列确定为目标指令队列,此时,所述多个目标指令队列的数量不大于所述四线程处理器具有的线程的数量,此种情况下,相对于前述的合并处理的方式,会造成资源的浪费。
但是,无论是SMT4处理器处于四线程模式下,或者是处于二线程模式下,在指令译码过程中,均能够利用多线程队列资源和多个译码器并行译码,保证了采用译码器组的译码过程中的吞吐量的同时实现乱序译码,且读出微指令流中的微指令的顺序与从指令缓存中取指出的指令流的顺序相同。
本申请实施中的多线程处理器处于单线程模式下,多线程处理器中设置多个译码器组,并且每组译码器组对应多线程处理器中的一个或者多个指令队列,在指令译码过程中利用多线程处理器中的多个译码器组并行译码,保证译码过程的吞吐量,提升了多线程处理器的译码效率;进一步的,本申请中由于在指令中携带有切换标记,为此,多线程处理器支持单线程模式下的指令的乱序译码,在乱序译码过程中,还可以融合多线程处理器中多个线程(线程对应有指令队列中或者微指令队列)的资源,实现在提高多线程处理器的译码效率时有效融合多线程处理器的资源,避免多线程处理器中的资源浪费。
本申请实施中的多线程处理器处于多线程模式下,多线程处理器中设置多个译码器组,并且每组译码器组对应多线程处理器中的一个或者多个指令队列,在指令译码过程中利用多线程处理器中的多个译码器组并行译码,保证译码过程的吞吐量,提升了多线程处理器的译码效率;并且,本申请中在指令流中存在切换标记,为此,多线程处理器可以根据切换标记将乱序译码的微指令输出,保证与指令缓存出来的指令流顺序一致。进一步的,在乱序译码过程中,还可以融合多线程处理器中多个线程(线程对应有指令队列中或者微指令队列)的资源,实现在提高多线程处理器的译码效率时有效融合多线程处理器的资源,避免多线程处理器中的资源浪费。
本申请实施例还提供一种多线程处理器,其结构可以参考图7或图9,该多线程处理器至少包括:
指令缓存,用于根据取指请求取指指令流;
指令多路适配器(Tdemux01),用于响应于多线程处理器处于单线程模式,对取指出的指令流进行切分;以切分位置的指令为切换指令队列的分界,将切分的指令流分配到多个目标指令队列;其中,所述多个目标指令队列包括活跃的线程对应的指令队列和不活跃的线程对应的指令队列;
多个译码器组(如图7中的译码器组0、译码器组1或者如图9中的译码器组0、译码器组1、译码器组2以及译码器组3),用于利用多个译码器组译码所述多个目标指令队列中的指令,以得到各个译码器组译码后的微指令,其中,一个译码器组译码所对应的目标指令队列中的指令,在单线程模式下,一个译码器组对应至少一个目标指令队列。
可选的,所述多个目标指令队列的数量小于或者等于所述多线程处理器具有的指令队列的数量。
可选的,所述指令多路适配器(Tdemux01),还用于响应于多线程处理器处于多线程模式,将取指出的指令流分配到多线程对应的多个目标指令队列,其中,多线程数量与多个目标指令队列相对应。
可选的,所述指令多路适配器,用于响应于多线程处理器处于多线程模式,将取指出的指令流分配到多线程对应的多个目标指令队列,包括:
在多线程模式下,基于指令缓存输出的指令流中各指令的线程号,将指令分配到指令的线程号所对应的目标指令队列,其中,一个线程号对应一个目标指令队列,指令流中存在不同线程号的多个指令。
在本申请实施例中的一种可选实现中,还包括:指令多路选择器(Tmux02或者Tmux03),用于将目标指令队列中的指令传输到对应的译码器组,以利用译码器组对指令进行译码。
进一步的,在本申请实施例中,还包括:
微指令多路适配器(Tdemux02或者Tdemux03),用于将各个译码器组译码后的微指令,保存在译码器组对应的目标微指令队列,其中,一个译码器组对应有至少一个目标微指令队列;
微指令多路选择器Tmux01,用于在各个译码器组对应的目标微指令队列中切换的读取微指令。
可选的,所述微指令多路选择器,在单线程模式下,用于在各个译码器组对应的目标微指令队列中切换的读取微指令包括:
基于目标微指令队列中保存的携带切换标记的微指令,在译码器组对应的多个目标微指令队列中切换的读取微指令;其中,如果指令携带有切换标记,则指令的切换标记透传到译码后的微指令。
可选的,所述微指令多路选择器,在单线程模式下,用于基于目标微指令队列中保存的携带切换标记的微指令,在译码器组对应的多个目标微指令队列中切换的读取微指令包括:
针对任一个译码器组对应的多个微指令队列,在读取一个微指令队列时,如果读取到附带切换标记的微指令,则切换到下一个微指令队列读取微指令,以交替的在译码器组对应的多个目标微指令队列中读取微指令。
可选的,所述指令多路适配器,用于响应于多线程处理器处于多线程模式,将取指出的指令流分配到多线程对应的多个目标指令队列,包括:
在多线程模式下,基于指令缓存输出的指令流中各指令的线程号,将指令分配到指令的线程号所对应的目标指令队列,其中,一个线程号对应一个目标指令队列,指令流中存在不同线程号的多个指令。
可选的,本申请中的微指令多路适配器,用于将各个译码器组译码后的微指令,保存在译码器组对应的目标微指令队列,其中,一个译码器组对应有至少一个目标微指令队列;
微指令多路选择器,用于在各个译码器组对应的目标微指令队列中切换的读取微指令。
可选的,所述微指令多路适配器,在多线程模式下,用于将各个译码器组译码后的微指令,保存在译码器组对应的目标微指令队列,包括:
根据所述目标指令队列的线程号,将各个译码器组译码后的微指令,保存在译码器组对应的目标微指令队列;
微指令多路选择器,用于在各个译码器组对应的目标微指令队列中切换的读取微指令,包括:
根据所述目标微指令队列的线程号,在各个译码器组对应的目标微指令队列中切换的读取微指令。
在一种实施例中,所述多线程处理器至少包括四线程处理器或者二线程处理器;
当所述四线程处理器处于四线程模式或者二线程处理器处于二线程模式时,所述多个目标指令队列的数量等于多线程处理器中的线程的数量。
可选的,当四线程处理器处于二线程模式时,所述多个目标指令队列的数量不大于所述四线程处理器具有的线程的数量,其中,所述多个目标指令队列通过四线程处理器对应同一个译码器组的指令队列两两合并,或者,舍弃不活跃的线程对应的指令队列得到。
本申请实施中的多线程处理器处于单线程模式下,多线程处理器中设置多个译码器组,并且每组译码器组对应多线程处理器中的一个或者多个指令队列,在指令译码过程中利用多线程处理器中的多个译码器组并行译码,保证译码过程的吞吐量,提升了多线程处理器的译码效率;进一步的,本申请中由于在指令中携带有切换标记,为此,多线程处理器支持指令的乱序译码,在乱序译码过程中,还可以融合多线程处理器中多个线程(线程对应有指令队列中或者微指令队列)的资源,实现提高多线程处理器的译码效率时有效融合多线程处理器的资源,避免多线程处理器中的资源浪费。
本申请实施中的多线程处理器处于多线程模式下,多线程处理器中设置多个译码器组,并且每组译码器组对应多线程处理器中的一个或者多个指令队列,在指令译码过程中利用多线程处理器中的多个译码器组并行译码,保证译码过程的吞吐量,提升了多线程处理器的译码效率;并且,本申请中在指令流中存在线程号,为此,多线程处理器可以根据线程号将乱序译码的微指令输出,保证与指令缓存出来的指令流顺序一致。进一步的,在乱序译码过程中,还可以融合多线程处理器中多个线程的资源(线程的指令队列中或者微指令队列),实现在提高多线程处理器的译码效率时有效融合多线程处理器的资源,避免多线程处理器中的资源浪费。
本申请实施例中还提供了一种芯片,该芯片可以包括上述的处理器。
本申请实施例还提供一种电子设备,例如服务器设备或者终端设备,该电子设备可以包括上述的芯片。
上文描述了本申请实施例提供的多个实施例方案,各实施例方案介绍的各可选方式可在不冲突的情况下相互结合、交叉引用,从而延伸出多种可能的实施例方案,这些均可认为是本申请实施例披露、公开的实施例方案。
虽然本申请实施例披露如上,但本申请并非限定于此。任何本领域技术人员,在不脱离本申请的精神和范围内,均可作各种更动与修改,因此本申请的保护范围应当以权利要求所限定的范围为准。
Claims (21)
1.一种多线程处理器的译码方法,其特征在于,包括:
根据取指请求取指指令流;
响应于多线程处理器处于单线程模式,对取指出的指令流进行切分;
以切分位置的指令为切换指令队列的分界,将切分的指令流分配到多个目标指令队列;其中,所述多个目标指令队列包括活跃的线程对应的指令队列和不活跃的线程对应的指令队列;
利用多个译码器组译码所述多个目标指令队列中的指令,以得到各个译码器组译码后的微指令;其中,一个译码器组译码所对应的目标指令队列中的指令,在单线程模式下,一个译码器组对应至少一个目标指令队列。
2.根据权利要求1所述的多线程处理器的译码方法,其特征在于,所述多个目标指令队列的数量小于或者等于所述多线程处理器具有的指令队列的数量。
3.根据权利要求1所述的多线程处理器的译码方法,其特征在于,所述对取指出的指令流进行切分,包括:
根据指令边界信息指示的进行指令切分的切分位置,对所述指令流进行切分;所述指令边界信息携带在所述取指请求中。
4.根据权利要求3所述的多线程处理器的译码方法,其特征在于,所述以切分位置的指令为切换指令队列的分界,将切分的指令流分配到多个目标指令队列,包括:
为切分位置的指令附带切换标记;
基于所述切分位置的指令的切换标记,将切分的指令流分配到多个目标指令队列。
5.根据权利要求4所述的多线程处理器的译码方法,其特征在于,还包括:
将各个译码器组译码后的微指令,保存在译码器组对应的目标微指令队列,其中,一个译码器组对应有至少一个目标微指令队列;
在各个译码器组对应的目标微指令队列中切换的读取微指令。
6.根据权利要求5所述的多线程处理器的译码方法,其特征在于,所述在各个译码器组对应的目标微指令队列中切换的读取微指令包括:
基于目标微指令队列中保存的携带切换标记的微指令,在译码器组对应的多个目标微指令队列中切换的读取微指令;其中,如果指令携带有切换标记,则指令的切换标记透传到译码后的微指令中。
7.根据权利要求6所述的多线程处理器的译码方法,其特征在于,所述基于目标微指令队列中保存的携带切换标记的微指令,在译码器组对应的多个目标微指令队列中切换的读取微指令包括:
针对任一个译码器组对应的多个微指令队列,在读取一个微指令队列时,如果读取到附带切换标记的微指令,则切换到下一个微指令队列读取微指令,以交替的在译码器组对应的多个目标微指令队列中读取微指令。
8.根据权利要求1所述的多线程处理器的译码方法,其特征在于,还包括:
响应于多线程处理器处于多线程模式,将取指出的指令流分配到多线程对应的多个目标指令队列,其中,多线程数量与多个目标指令队列相对应;
利用多个译码器组译码所述多个目标指令队列中的指令,以得到各个译码器组译码后的微指令,其中,在多线程模式下,一个译码器组对应至少一个目标指令队列。
9.根据权利要求8所述的多线程处理器的译码方法,其特征在于,所述响应于多线程处理器处于多线程模式,将取指出的指令流分配到多线程对应的多个目标指令队列,包括:
在多线程模式下,基于指令缓存输出的指令流中各指令的线程号,将指令分配到指令的线程号所对应的目标指令队列,其中,一个线程号对应一个目标指令队列,指令流中存在不同线程号的多个指令。
10.根据权利要求8所述的多线程处理器的译码方法,其特征在于,还包括:
将各个译码器组译码后的微指令,保存在译码器组对应的目标微指令队列,其中,一个译码器组对应有至少一个目标微指令队列;
在各个译码器组对应的目标微指令队列中切换的读取微指令。
11.根据权利要求10所述的多线程处理器的译码方法,其特征在于,所述将各个译码器组译码后的微指令,保存在译码器组对应的目标微指令队列,包括:
根据所述目标指令队列的线程号,将各个译码器组译码后的微指令,保存在译码器组对应的目标微指令队列;
所述在各个译码器组对应的目标微指令队列中切换的读取微指令,包括:
根据所述目标微指令队列的线程号,在各个译码器组对应的目标微指令队列中切换的读取微指令。
12.根据权利要求8所述的多线程处理器的译码方法,其特征在于,所述多线程处理器至少包括四线程处理器和二线程处理器;
当所述四线程处理器处于四线程模式或者二线程处理器处于二线程模式时,所述多个目标指令队列的数量等于多线程处理器中的线程的数量。
13.根据权利要求12所述的多线程处理器的译码方法,其特征在于,当四线程处理器处于二线程模式时,所述多个目标指令队列的数量不大于所述四线程处理器具有的线程的数量,其中,所述多个目标指令队列通过四线程处理器对应同一个译码器组的指令队列两两合并,或者,舍弃不活跃的线程对应的指令队列而得到。
14.一种多线程处理器,其特征在于,包括:
指令缓存,用于根据取指请求取指指令流;
指令多路适配器,用于响应于多线程处理器处于单线程模式,对取指出的指令流进行切分;以切分位置的指令为切换指令队列的分界,将切分的指令流分配到多个目标指令队列;其中,所述多个目标指令队列包括活跃的线程对应的指令队列和不活跃的线程对应的指令队列;
多个译码器组,用于利用多个译码器组译码所述多个目标指令队列中的指令,以得到各个译码器组译码后的微指令,其中,一个译码器组译码所对应的目标指令队列中的指令,在单线程模式下,一个译码器组对应至少一个目标指令队列。
15.根据权利要求14所述的多线程处理器,其特征在于,所述指令多路适配器,还用于响应于多线程处理器处于多线程模式,将取指出的指令流分配到多线程对应的多个目标指令队列,其中,多线程数量与多个目标指令队列相对应。
16.根据权利要求15所述的多线程处理器,其特征在于,所述指令多路适配器,用于响应于多线程处理器处于多线程模式,将取指出的指令流分配到多线程对应的多个目标指令队列,包括:
在多线程模式下,基于指令缓存输出的指令流中各指令的线程号,将指令分配到指令的线程号所对应的目标指令队列,其中,一个线程号对应一个目标指令队列,指令流中存在不同线程号的多个指令。
17.根据权利要求15所述的多线程处理器,其特征在于,还包括:
指令多路选择器,用于将目标指令队列中的指令传输到对应的译码器组,以利用译码器组对指令进行译码。
18.根据权利要求17所述的多线程处理器,其特征在于,还包括:
微指令多路适配器,用于将各个译码器组译码后的微指令,保存在译码器组对应的目标微指令队列,其中,一个译码器组对应有至少一个目标微指令队列;
微指令多路选择器,用于在各个译码器组对应的目标微指令队列中切换的读取微指令。
19.根据权利要求18所述的多线程处理器,其特征在于,所述微指令多路选择器,用于在各个译码器组对应的目标微指令队列中切换的读取微指令包括:
在单线程模式下,基于目标微指令队列中保存的携带切换标记的微指令,在译码器组对应的多个目标微指令队列中切换的读取微指令;其中,如果指令携带有切换标记,则指令的切换标记透传到译码后的微指令;
在多线程模式下,根据所述目标微指令队列的线程号,在各个译码器组对应的目标微指令队列中切换的读取微指令。
20.一种芯片,其特征在于,包括如权利要求14-19任一项所述的处理器。
21.一种电子设备,其特征在于,包括如权利要求20所述的芯片。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211348787.1A CN115629807B (zh) | 2022-10-31 | 2022-10-31 | 多线程处理器的译码方法、处理器、芯片及电子设备 |
PCT/CN2023/118573 WO2024093541A1 (zh) | 2022-10-31 | 2023-09-13 | 多线程处理器的译码方法、处理器、芯片及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211348787.1A CN115629807B (zh) | 2022-10-31 | 2022-10-31 | 多线程处理器的译码方法、处理器、芯片及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115629807A CN115629807A (zh) | 2023-01-20 |
CN115629807B true CN115629807B (zh) | 2023-04-14 |
Family
ID=84908497
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211348787.1A Active CN115629807B (zh) | 2022-10-31 | 2022-10-31 | 多线程处理器的译码方法、处理器、芯片及电子设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115629807B (zh) |
WO (1) | WO2024093541A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115629807B (zh) * | 2022-10-31 | 2023-04-14 | 海光信息技术股份有限公司 | 多线程处理器的译码方法、处理器、芯片及电子设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1782989A (zh) * | 1996-08-27 | 2006-06-07 | 松下电器产业株式会社 | 独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器 |
CN102023846A (zh) * | 2011-01-06 | 2011-04-20 | 中国人民解放军国防科学技术大学 | 基于单片多处理器系统的共享前端流水线结构 |
CN102439561A (zh) * | 2009-04-29 | 2012-05-02 | 超威半导体公司 | 在同步多线程机上使用比较和传送指令的可靠执行 |
CN102495726A (zh) * | 2011-11-15 | 2012-06-13 | 无锡德思普科技有限公司 | 机会多线程方法及处理器 |
CN104040490A (zh) * | 2011-11-22 | 2014-09-10 | 索夫特机械公司 | 用于多引擎微处理器的加速的代码优化器 |
CN105723329A (zh) * | 2013-12-23 | 2016-06-29 | 英特尔公司 | 用于识别多指令串无序处理器中的引退的指令的指令和逻辑 |
CN106465404A (zh) * | 2014-02-06 | 2017-02-22 | 优创半导体科技有限公司 | 用于使得处理器能够生成流水线控制信号的方法和装置 |
CN111679857A (zh) * | 2020-06-15 | 2020-09-18 | 上海兆芯集成电路有限公司 | 高效能复杂指令译码的微处理器 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE60035480T2 (de) * | 2000-01-14 | 2008-04-17 | Texas Instruments Inc., Dallas | Mikroprozessor mit ermässigtem Stromverbrauch |
GB2519103B (en) * | 2013-10-09 | 2020-05-06 | Advanced Risc Mach Ltd | Decoding a complex program instruction corresponding to multiple micro-operations |
US9672043B2 (en) * | 2014-05-12 | 2017-06-06 | International Business Machines Corporation | Processing of multiple instruction streams in a parallel slice processor |
US20180004512A1 (en) * | 2016-06-30 | 2018-01-04 | Intel Corporation | System and Method for Out-of-Order Clustered Decoding |
CN106406814B (zh) * | 2016-09-30 | 2019-06-14 | 上海兆芯集成电路有限公司 | 处理器和将架构指令转译成微指令的方法 |
US20220100519A1 (en) * | 2020-09-25 | 2022-03-31 | Advanced Micro Devices, Inc. | Processor with multiple fetch and decode pipelines |
CN114090077B (zh) * | 2021-11-24 | 2023-01-31 | 海光信息技术股份有限公司 | 调取指令的方法及装置、处理装置及存储介质 |
CN115629807B (zh) * | 2022-10-31 | 2023-04-14 | 海光信息技术股份有限公司 | 多线程处理器的译码方法、处理器、芯片及电子设备 |
-
2022
- 2022-10-31 CN CN202211348787.1A patent/CN115629807B/zh active Active
-
2023
- 2023-09-13 WO PCT/CN2023/118573 patent/WO2024093541A1/zh unknown
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1782989A (zh) * | 1996-08-27 | 2006-06-07 | 松下电器产业株式会社 | 独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器 |
CN102439561A (zh) * | 2009-04-29 | 2012-05-02 | 超威半导体公司 | 在同步多线程机上使用比较和传送指令的可靠执行 |
CN102023846A (zh) * | 2011-01-06 | 2011-04-20 | 中国人民解放军国防科学技术大学 | 基于单片多处理器系统的共享前端流水线结构 |
CN102495726A (zh) * | 2011-11-15 | 2012-06-13 | 无锡德思普科技有限公司 | 机会多线程方法及处理器 |
CN104040490A (zh) * | 2011-11-22 | 2014-09-10 | 索夫特机械公司 | 用于多引擎微处理器的加速的代码优化器 |
CN105723329A (zh) * | 2013-12-23 | 2016-06-29 | 英特尔公司 | 用于识别多指令串无序处理器中的引退的指令的指令和逻辑 |
CN106465404A (zh) * | 2014-02-06 | 2017-02-22 | 优创半导体科技有限公司 | 用于使得处理器能够生成流水线控制信号的方法和装置 |
CN111679857A (zh) * | 2020-06-15 | 2020-09-18 | 上海兆芯集成电路有限公司 | 高效能复杂指令译码的微处理器 |
Non-Patent Citations (2)
Title |
---|
B. Sinharoy等.POWER5 system microarchitecture.《IEEE》.2005,505-521. * |
高小洁.面向处理器解析模型的Trace采样方法研究.《中国优秀硕士论文电子期刊网 信息科技辑》.2020,I137-37. * |
Also Published As
Publication number | Publication date |
---|---|
WO2024093541A1 (zh) | 2024-05-10 |
CN115629807A (zh) | 2023-01-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100871956B1 (ko) | 다중 스레드 초장 명령어 프로세서, 명령 처리 방법 및 컴파일러 | |
US7269712B2 (en) | Thread selection for fetching instructions for pipeline multi-threaded processor | |
US20080046689A1 (en) | Method and apparatus for cooperative multithreading | |
CN115525344B (zh) | 一种译码方法、处理器、芯片及电子设备 | |
JP2008123045A (ja) | プロセッサ | |
CN115629807B (zh) | 多线程处理器的译码方法、处理器、芯片及电子设备 | |
KR20160110528A (ko) | 명령어 체이닝 능력을 이용한 멀티스레드형 프로세서에서의 기회 멀티스레딩 | |
KR20010095069A (ko) | 다중 스레드 초장 명령어 프로세서, 명령어 처리 방법 및그 제품 | |
CN109101276B (zh) | 在cpu中执行指令的方法 | |
JPWO2008155834A1 (ja) | 処理装置 | |
US11366669B2 (en) | Apparatus for preventing rescheduling of a paused thread based on instruction classification | |
CN114201219B (zh) | 指令调度方法、指令调度装置、处理器及存储介质 | |
US20220214884A1 (en) | Issuing instructions based on resource conflict constraints in microprocessor | |
CN101763251A (zh) | 多线程微处理器的指令译码缓冲装置 | |
KR20010095073A (ko) | 다중 스레드 초장 명령어 프로세서, 명령어 처리 방법 및그 제품 | |
CN111538535B (zh) | 一种cpu指令处理方法、控制器和中央处理单元 | |
GB2458487A (en) | Processor with multiple execution pipeline paths | |
KR101603752B1 (ko) | 멀티 모드 지원 프로세서 및 그 프로세서에서 멀티 모드를 지원하는 방법 | |
US20060149927A1 (en) | Processor capable of multi-threaded execution of a plurality of instruction-sets | |
US20150143378A1 (en) | Multi-thread processing apparatus and method for sequentially processing threads | |
CN114168202B (zh) | 指令调度方法、指令调度装置、处理器及存储介质 | |
KR20230070247A (ko) | 다수의 페치 및 디코드 파이프라인을 갖는 프로세서 | |
CN115525343B (zh) | 一种并行译码的方法、处理器、芯片及电子设备 | |
KR20230070042A (ko) | 다수의 op 캐시 파이프라인을 갖는 프로세서 | |
CN115658150A (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 |