CN104035748B - 包括打包源字段和目的地字段的微操作 - Google Patents
包括打包源字段和目的地字段的微操作 Download PDFInfo
- Publication number
- CN104035748B CN104035748B CN201410083147.1A CN201410083147A CN104035748B CN 104035748 B CN104035748 B CN 104035748B CN 201410083147 A CN201410083147 A CN 201410083147A CN 104035748 B CN104035748 B CN 104035748B
- Authority
- CN
- China
- Prior art keywords
- register
- packing
- source
- microoperation
- destination
- 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
- 238000012856 packing Methods 0.000 title claims abstract description 227
- 238000000034 method Methods 0.000 claims abstract description 27
- 238000012545 processing Methods 0.000 claims description 7
- 238000003672 processing method Methods 0.000 claims description 2
- 238000013461 design Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 238000010009 beating Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
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
-
- 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
-
- 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/22—Microcontrol or microprogram arrangements
-
- 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- 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/30105—Register structure
-
- 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/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
提供了用于在微处理器中在寄存器重新命名之前进行寄存器打包的方法和装置。该方法包括:接收从一个或多个指令解码的多个微操作;基于通过其读或写打包寄存器以用于寄存器重新命名的重新命名器的重新命名端口的预设数目,将包括在所述微操作中的多个寄存器打包成为包括多个打包寄存器的打包寄存器结构;以及发送打包寄存器以用于寄存器重新命名。
Description
技术领域
按照示范性实施例的方法和装置涉及在寄存器重新命名阶段之前在微处理器中运行的微操作(micro-ops)中对源寄存器字段和目的地寄存器字段打包。
背景技术
现代微处理器通常在其中提供的解码器处将例如宏指令的高级指令分解或者翻译为低级、硬件可运行微操作以提高数据处理的效率。解码的微操作的数量和格式取决于高级指令集架构和内部微处理器架构。
微操作典型具有两个或者三个源操作数(operand)和一个或者两个目的地操作数。源操作数用来指定包含源数据的寄存器。目的地操作数用来指定在微操作的操作执行之后该微操作的操作的结果写到的寄存器。
用于特定微操作的源寄存器和目的地寄存器的数目取决于正在运行的指令的类型。例如,ADD指令具有两个源操作数和一个目的地操作数。乘积累加(multiplyaccumulate)指令具有三个源操作数和一个或多个目的地操作数。分支指令仅仅具有一个源操作数用以指定非直接分支地址,而不具有目的地操作数。在解码出微操作之后,微操作被发送到重新命名器,其中微操作的寄存器要在微操作被排定和运行之前被重新命名。寄存器重新命名是一种用于消除数据故障的常见技术,数据故障诸如微操作的无序运行中的读后写和写后写故障。重新命名过程包括检查用于每个寄存器的重新命名表格,重新分配不同或者附加的物理寄存器以替换微操作的目的地寄存器,记录关于微操作之间的相关性的数据。重新命名的微操作被发送到调度器和运行单元。然后,被运行的微操作发送到目的地寄存器和/或存储器或者高速缓存以存储。
寄存器重新命名是针对高速微处理器设计中定时和性能的瓶颈(bottleneck)。当源寄存器和目的地寄存器的数目增加时该限制变得更加显著。为了优化整体性能,将每一周期待重新命名的微操作的数目最大化而不增加重新命名器的重新命名端口的数目是有利的。
发明内容
为了解决现有技术中重新命名处理的问题,本发明构思的一个或多个示范性实施例提供了增加每一周期将被重新命名的微操作的数目而不增加重新命名器的重新命名端口的数目的方法和装置。
一个或多个示范性实施例还提供在重新命名寄存器之前将源寄存器和目的地寄存器打包成为打包寄存器结构以便增强寄存器重新命名操作的效率的方法和装置。
根据示范性实施例的方面,提供一种指令处理方法,包括:接收从一个或多个指令解码的多个微操作(micro-op);基于通过其读或写打包寄存器以用于寄存器重新命名的重新命名器的重新命名端口的预设数目,将包括在所述微操作中的多个寄存器打包成为包括多个打包寄存器的打包寄存器结构;以及发送所述打包寄存器以用于寄存器重新命名。这里,被打包成为打包寄存器结构中的每一个寄存器可以包括有效源数据或者有效目的地数据。
所述方法还可以包括重新命名所述打包寄存器,其中所述重新命名端口的预设数目被设置为小于允许微操作在一个周期中作为操作数所具有的全部寄存器的数目。
可以基于关于预定寄存器的有效信息和使用年限信息,从所述预定寄存器当中选择将被打包成为打包寄存器结构的寄存器中的每一个,所述预定寄存器从全部寄存器当中选择。
所述打包寄存器结构还可以包括关于被打包成为打包寄存器结构的寄存器中的每一个的属性信息,其中,所述属性信息包括:关于寄存器中的每一个是否具有有效源信息或者目的地信息的信息;寄存器中的每一个的标识符;以及包括寄存器中的每一个的微操作当中的微操作的标识符。
所述微操作的标识符可以包括关于已经对微操作解码的解码器的信息。
所述属性信息还可以包括关于寄存器中的每一个的使用年限信息。
所述方法还可以包括:确定打包寄存器的数目是否超出所述重新命名器端口的预设数目,其中,如果确定所述打包寄存器的数目未超出所述预设数目,则在当前周期发送所述打包寄存器用于寄存器重新命名,和其中,如果确定所述打包寄存器的数目超出所述预设数目,则在下一周期发送包括在多个微操作当中的一个或多个微操作中的一个或多个寄存器以用于寄存器重新命名。
所述预设数目可以小于允许微操作作为操作数所具有的全部寄存器的数目。
将由打包器打包的源寄存器和目的地寄存器中的每一个可以是有效寄存器。
可以基于多个微操作的使用年限,从所述多个微操作当中选择所述一个或多个微操作。
根据另一示范性实施例的方面,提供一种包括打包器的指令处理装置,打包器被配置为:接收从一个或多个指令解码的多个微操作;基于通过其读或写打包寄存器以用于寄存器重新命名的重新命名器的重新命名端口的预设数目,将包括在所述微操作中的多个寄存器打包成为包括多个打包寄存器的打包寄存器结构;以及发送所述打包寄存器以用于寄存器重新命名。
所述重新命名端口的预设数目可以被设置为小于允许微操作在一个周期中作为操作数所具有的全部源寄存器的数目。
所述装置还可以包括:控制器,其确定打包寄存器的数目是否超出所述重新命名器端口的预设数目,其中,如果确定所述打包寄存器的数目未超出所述预设数目,则所述控制器控制所述打包器在当前周期发送所述打包寄存器以用于寄存器重新命名,和其中,如果确定所述打包寄存器的数目超出所述预设数目,则所述控制器控制所述打包器在下一周期发送包括在所述多个微操作当中的一个或多个微操作中的一个或多个寄存器以用于寄存器重新命名。
附图说明
上面和/或其它方面将从下面结合附图的示例性实施例的描述中变得明显并且更加容易理解,附图中:
图1示出根据示范性实施例的微处理器的一部分;
图2示出根据示范性实施例的、被配置为将源寄存器和目的地寄存器打包成为打包寄存器结构的微处理器的一部分;
图3示出根据另一示范性实施例的、在打包源寄存器和目的地寄存器中使用多路复用器的微处理器的一部分;以及
图4是示出根据示范性实施例的寄存器打包的流程图。
具体实施方式
将参考附图详细描述示范性实施例以便由本领域普通技术人员容易地实现。本发明构思可以以各种形式具体实现而不局限于这里阐述的示范性实施例。公知部分的描述尚未详细示出以避免不必要地模糊本发明,并且相同的参考标记贯穿始终指代相同元件。
作为预备考虑,下面的方法可以提出以提高频率由此增强微处理器的性能:降低包括每一周期将被重新命名的寄存器的微操作的数目或者降低解码宽度;降低微操作中的源字段和目的地字段的数目;采用附加(多个)周期以重新命名寄存器;以及建立定制重新命名电路以满足影响功率和设计复杂度的定时等等。但是,这些方法仍可以伴随调整重新命名器的重新命名端口大小为源寄存器和目的地寄存器的最差情况数目,这可能影响微处理器的定时或者架构性能。
为了优化微处理器就寄存器重新命名方面来说的整体性能,考虑通过提供具有每一周期最优数目的源寄存器和目的地寄存器的重新命名器来最大化每一周期将被重新命名的微操作的数目,而不增加重新命名端口的数目,如下面的示范性实施例所述。
图1示出根据示范性实施例的、包括多个解码器0、1和2和重新命名器100的微处理器10的一部分。如图1中所示,解码器通过对从存储器或者高速缓存(未示出)接收到的一个或多个指令(未示出)进行解码来生成微操作。重新命名器100使用重新命名逻辑对微操作中的源寄存器和/或目的地寄存器重新命名。微处理器10具有解码宽度三。解码宽度指的是在一个周期中解码的微操作的数目。重新命名器100可以具有18个重新命名端口110,相应于微操作能够具有的源寄存器字段和目的地寄存器字段的总数。也就是说,微处理器10的微操作的格式支持多达四个源寄存器(A、B、C和D)和两个目的地寄存器(A和B),并且因此,可以在一个周期中生成的寄存器的总数是12个源寄存器和6个目的地寄存器。该解码器和重新命名器结构可以要求重新命名器100具有多达18个重新命名端口用于重新命名。
图2示出根据示范性实施例的、包括多个解码器0、1和2、打包器200、重新命名器300和控制器400的微处理器20的一部分。微处理器20的解码器0、1和2和重新命名器300可以类似于图1的微处理器10中的那些。但是,根据示范性实施例,微处理器20被配置使得由解码器解码的微操作的源寄存器字段和目的地寄存器字段在寄存器被重新命名之前被打包。在下文中,微操作的打包源寄存器字段和打包目的地寄存器字段也分别被称作打包源寄存器和打包目的地寄存器。打包器200被配置为将由解码器解码的微操作中的源寄存器和目的地寄存器,在寄存器在重新命名器300处被重新命名之前分别打包成为打包源结构210和打包目的地结构220。以下,打包源结构210和打包目的地结构220被共同称作打包寄存器结构。控制器400被配置为至少控制打包器200的输出操作,如稍后将描述的那样。这里,将打包成为打包寄存器结构的源寄存器和目的地寄存器中的每一个都可以是具有有效源数据或者目的地数据的寄存器。也就是说,包括在微操作中并且不具有有效源数据或者目的地数据的任意寄存器可以不打包成为打包寄存器结构。
在本实施例中,图2中示出的微处理器20与图1中示出的微处理器10类似,具有解码宽度三,具有三个解码器0、1和2,用于在每个周期将诸如宏指令这样的复杂指令解码为微操作。而且,每个解码器的微操作格式支持四个源寄存器(A、B、C和D)和两个目的地寄存器(A和B),像图1中的微处理器10那样。寄存器A、B、C和D可以称作微操作中指定的架构寄存器(architectural registers),与通过在重新命名器300中的重新命名将架构寄存器映射到的物理寄存器相反。因为在本实施例中每一周期解码三个微操作,所以在一个周期时段内可以通过这三个解码器生成总共12个源寄存器和6个目的地寄存器。在本实施例中,打包源结构210具有八个条目以容纳多达八个打包源寄存器,并且打包目的地结构220具有三个条目以容纳多达三个打包目的地寄存器。
在图2中,在重新命名器300中重新命名之前,基于重新命名器300的重新命名端口310的预设数目,八个源寄存器和三个目的地寄存器被打包成为打包寄存器结构。这里,重新命名器300的重新命名端口310的预设数目是八。具体地说,三个微操作的八个源寄存器(A、B、C、D、B、A、C、D)被打包以构成具有八个打包源寄存器(打包源0至打包源7)的八个条目的打包源结构210。类似地,三个微操作的三个目的地寄存器(A、B和A)被打包以构成具有三个打包目的地寄存器(打包Dest0至Dest2)的三个条目的打包目的地结构220。因此,打包寄存器结构中的打包源寄存器和打包目的地寄存器的总数是八个,这与重新命名器端口310的数目相同。这些被打包成为打包寄存器结构的源寄存器和目的地寄存器是分别从微操作的源字段和目的地字段提供的。源寄存器和目的地寄存器的打包可以同时或者在不同时间处理。
如果用于微操作的打包源寄存器和打包目的地寄存器的总数等于或者小于重新命名端口310的预设数目,则根据示范性实施例,打包源寄存器和打包目的地寄存器在用于重新命名这些打包寄存器的相同周期中,在控制器400的控制下被发送到重新命名器300。这里,重新命名端口310的预设数目可以是系统允许的重新命名端口的最大数目。如果打包源寄存器和打包目的地寄存器的数目超出重新命名端口310的预设数目,则根据示范性实施例,接收自解码器0、1和2的微操作当中的一个或多个微操作在用于重新命名这些所选择的微操作中的打包源和/或寄存器的下一周期中,在控制器400的控制下被发送到重新命名器300。可以根据(多个)微操作的使用年限(age)选择在下一周期中将发送到重新命名器300的(多个)微操作。
如图2中所示,根据示范性实施例,用于源寄存器和目的地寄存器的系统允许的最大重新命名器端口可以分别设置为八个和三个。这些数目八和三小于可以在一个周期时段内由三个解码器生成的源寄存器和目的地寄存器的最大数目,即12和6。可以在一个周期时段内由三个解码器生成的源寄存器和目的地寄存器的最大数目与由解码器0、1和2的解码宽度所提供的源字段和目的地字段的数目相同。
在图2中,由解码器0解码的第一微操作具有四个源寄存器和两个目的地寄存器作为其操作数(operand),第二微操作具有一个源寄存器并且没有目的地寄存器作为其操作数,并且第三微操作具有三个源寄存器和一个目的地寄存器作为其操作数。来自三个解码器的打包源寄存器的总数是八个,并且打包目的地寄存器的总数是三个,这与系统允许的重新命名端口310的最大数目相同。因此,打包源寄存器和打包目的地寄存器可以在一个周期中被发送到重新命名器300用于重新命名。用这样的方式,在每个周期中发送到重新命名器300的源寄存器和目的地寄存器的数目被优化。
根据示范性实施例,多个位被添加到打包源结构210和打包目的地结构220以指示被接收作为打包源结构210和打包目的地结构220的各个条目的打包源寄存器的属性和打包目的地寄存器的属性,如图2中所示。属性位可以包括有效位、解码器标识符(ID)位、源ID位、使用年限掩码位等等,如稍后将描述的那样。因此,如图2中所示,每个打包源寄存器的属性通过一个有效位、一个解码器ID位、一个源ID位和用于使用年限掩码向量的多个位表示。另外,图2示出每个打包目的地寄存器的属性在没有使用年限掩码向量位的条件下通过一个有效位、一个解码器ID位和一个目的地ID位表示。现在,在下面描述属性位的功能。
用于打包源寄存器的有效位中的每一个都指示相应打包源寄存器源自其的源寄存器是有效还是无效(例如,1用于有效,0用于无效)。参考图2,打包源结构210中的八个条目的每个有效位都指示为有效。这表示相应于打包源寄存器并且包括在微操作中的每个源寄存器都具有有效源数据。类似地,用于打包目的地寄存器的有效位中的每一个都指示相应打包目的地寄存器源自其的目的地寄存器是有效还是无效。参考图2,打包寄存器结构220中的三个条目的每个有效位都指示为有效。这表示相应于打包目的地寄存器并且包括在微操作中的每个目的地寄存器都具有有效目的地数据。
提供解码器ID位以分别识别打包寄存器源自其的解码器。在图2中,用于头四个打包源寄存器中的每一个的解码器ID是0,其表示打包源寄存器的头四个条目来源于解码器0。类似地,提供用于打包目的地寄存器的解码器ID位以分别识别打包目的地寄存器的来源。根据另一示范性实施例,解码器ID位可以分别指示微操作的ID,所述微操作分别采用被打包成为打包源结构210或者打包目的地结构220的源寄存器或者目的地寄存器。
提供用于打包源寄存器的源寄存器ID位以分别识别打包源寄存器源自其的源寄存器。在图2中,用于头四个打包源寄存器的源寄存器ID分别是A、B、C和D,表示解码器中的这些源寄存器的ID分别是A、B、C和D。类似地,提供目的地寄存器ID位以识别打包目的地寄存器源自其的目的地寄存器。
还提供用于使用年限掩码向量的多个位用于每一个打包源寄存器。用于每个使用年限掩码向量的位的数目可以相应于打包目的地寄存器的数目以使得使用年限掩码向量的每个位指示相关于打包目的地结构220中的每一个打包目的地寄存器的、打包源结构210中的相应打包源寄存器的使用年限属性。也就是说,使用年限掩码向量追踪相对于打包目的地寄存器的、打包源寄存器的使用年限。考虑到相对于打包目的地寄存器的打包源寄存器的使用年限来设置使用年限掩码向量中的每个位;当打包源寄存器比相应于位位置的打包目的地寄存器更年轻(或者更老)时,位被设置为1(或者0)。使用年限掩码向量被重新命名器300中的重新命名逻辑使用以计算组内源到目的地的相关性。例如,打包源结构210中的用于第一打包源寄存器A的使用年限掩码向量是000,其表示打包目的地结构220中存在三个打包目的地寄存器,并且每个打包目的地寄存器都比第一打包源寄存器A年轻。在图2中,使用年限掩码向量位仅仅包括在打包源结构210中。但是,根据示范性实施例,使用年限掩码向量位可以包括在打包目的地结构220而非打包源结构210中,以指示相对于打包源寄存器的打包目的地寄存器的使用年限。而且,根据另一示范性实施例,使用年限掩码向量位可以既包括在打包源结构210中,也包括在打包目的地结构220中。
上面描述的属性位不仅仅局限于有效位、解码器ID位、源寄存器ID位和使用年限掩码向量位。根据示范性实施例,附加位可以被添加到图2中的打包寄存器结构以指示打包寄存器的不同属性。例如,存储在源寄存器和目的地寄存器中的物理寄存器的ID可以添加到图2中的打包寄存器结构。
根据本实施例使用重新命名之前打包的方法优化发送到重新命名器300的源寄存器和目的地寄存器的数目使得能够在一个周期中重新命名更多微操作,从而导致更好的效率和更高的架构性能。
图3示出根据示范性实施例的、除了图2的微处理器20的相同结构之外包括多个多路复用器(MUX)A至K的微处理器30的一部分。在图3中,耦接到打包源结构210的解码器0至2与耦接到打包目的地结构220的的解码器0至2相同,并且仅为了简要描述的目的而单独示出。在图3中,为了简要描述的目的,重新命名器300和控制器400也被省去。在本实施例中,八个源打包MUX A至H分别用来选择将被打包的源寄存器,并且三个目的地打包MUX I至K分别用来选择将被打包的目的地寄存器。具体地说,为了寄存器打包,八个源打包MUX A至H中的每一个被配置为接收在一个周期时段内能够由三个解码器生成的全部源寄存器当中多达预定数目的源寄存器,然后选择接收到的寄存器中的一个来构成打包源结构210的条目。三个目的地打包MUX I至K中的每一个也被配置为接收在一个周期时段内能够由三个解码器生成的全部目的地寄存器当中多达预定数目的目的地寄存器,然后选择接收到的寄存器中的一个构成打包目的地结构220的条目。更具体地说,每个MUX耦接到解码器0至2中的两个以接收多达预定数目的寄存器,以及选择接收到的寄存器当中的一个寄存器以输出,以用于与其它MUX选择的寄存器一起打包。
根据另一示范性实施例,MUX A至K中的每一个可以仅仅被分配给四个寄存器A至D(未示出)当中的特定寄存器。例如,源打包MUX A可以仅仅被分配给每个解码器的源寄存器A和B以便仅仅接收源寄存器A和B供选择,而源打包MUX B可以仅仅被分配给源寄存器C和D。根据又一示范性实施例,每个MUX可以被分配给解码器0至2(未示出)当中的特定解码器。例如,源打包MUX A可以被配置为仅仅接收由解码器0使用的源寄存器。
在图3中,同时并行执行打包源寄存器和打包目的地寄存器,以最小化可能的MUX延迟。
在图3中,能够输入到每个MUX的寄存器的数目如上面所说明的那样受限制。图3具体地示出将12个源寄存器和6个目的地寄存器打包成为八个打包源寄存器(打包源0至打包源7)和三个打包目的地寄存器(打包Dest0至打包Dest2)的方案。如图3中所示,源打包MUXA至H中的每一个将源寄存器的数目从12→1降低到5→1,这表示用于打包源寄存器的每个MUX能够接收多达5个未打包源寄存器以选择5个未打包源寄存器中的一个来构成打包源结构210的条目。类似地,目的地打包MUX I至K中的每一个将目的地寄存器的数目从6→1降低到4→1,这表示用于打包目的地寄存器的每个MUX能够接收多达4个未打包目的地寄存器以选择4个未打包目的地寄存器中的一个来构成打包目的地结构220的条目。该打包源结构210和打包目的地结构220的方案会能够降低用于在MUX中进行选择的时间而不丢失任何架构性能。
根据示范性实施例,MUX A至K中的每一个应用优先逻辑以选择将被打包的源寄存器或者目的地寄存器。例如,源打包MUX B接收五个源寄存器的输入,这五个源寄存器包括来自解码器0的三个源寄存器(B、C和D)和来自解码器1的两个源寄存器(A和B)。使用优先逻辑,源打包MUX B选择五个源寄存器中的一个并且输出所选择的源寄存器用于打包。可以基于输入至MUX A至K中的每一个的关于源寄存器和目的地寄存器的有效信息和使用年限信息至少其中一个来设置优先逻辑。
用于在MUX B中进行选择的示范性优先逻辑描述如下:
(a)Sel_Decoder0_SourceB=Decoder0_Source_B is valid&Decoder0_Source_Ais valid;
(b)Sel_Decoder0_SourceC=Decoder0_Source_C is valid&EXACTLY_ONE_IS_VALID(Decoder0_Source_A,Decoder0_Source_B);
(c)Sel_Decoder0_SourceD=Decoder0_Source_D is valid&EXACTLY_ONE_IS_VALID(Decoder0_Source_A,Decoder0_Source_B,Decoder0_Source_C);
(d)Sel_Decoder1_SourceA=Decoder1_Source_A is valid&EXACTLY_ONE_IS_VALID(Decoder0_Source_A,Decoder0_Source_B,Decoder0_Source_C,Decoder0_Source_D);and
(e)Sel_Decoder1_SourceB=Decoder1_Source_B is valid&(((Decoder0_Source_A is NOT valid&EXACTLY_ONE_IS_VALID(Decoder0_Source_B,Decoder0_Source_C,Decoder0_Source_D,Decoder1_Source_A))|(Decoder0_Source_A is valid&NONE_OF_IS_VALID(Decoder0_Source_B,Decoder0_Source_C,Decoder0_Source_D,Decoder1_Source_A)));
通过预先确定微操作中的哪些源寄存器和目的地寄存器将被打包成为打包源结构210和打包目的地结构210,可以减少图2中示出的属性位的量,以加速微操作的通道中未打包操作下行数据流。
图4是示出根据示范性实施例的、在微处理器中在寄存器重新命名之前寄存器打包的流程图。
如图4中所示,在操作100中,复杂指令在微处理器的一个或多个解码器处被解码成为微操作。在操作200中,在解码的微操作中的源寄存器和目的地寄存器被分别打包成为打包源结构和打包目的地结构以由打包器构成打包寄存器结构。这里,源寄存器和目的地寄存器中的每一个都可以是具有有效源或者目的地信息的寄存器。
操作200可以包括附加操作210,其中能够在一个周期时段内由解码器生成的全部源寄存器当中、微操作的预定源寄存器被多路复用,以输出用于与由其它MUX选择的寄存器一起打包的一个寄存器。
操作200还可以包括附加操作220,其中多个位被添加到打包源结构和打包目的地结构以指示作为打包源结构和打包目的地结构的各个条目接收的、打包源寄存器的属性和打包目的地寄存器的属性。这些属性位指示被接收作为打包源结构210和打包目的地结构220的各个条目的、打包源寄存器的属性和打包目的地寄存器的属性,如图2中所示。属性位可以包括有效位、解码器ID位、源ID位、使用年限掩码位等等,但不局限于此。打包源结构和打包目的地结构的每个条目的属性通过一个有效位、一个解码器ID位、一个源ID位和/或用于使用年限掩码向量的多个位表示。上面描述的属性位不仅仅局限于有效位、解码器ID位、源寄存器ID位和使用年限掩码向量位。附加位可以被添加到打包寄存器结构以指示打包寄存器的不同属性。存储在源寄存器和目的地寄存器中的物理寄存器的ID可以是这样的属性。
在操作300中,确定打包源寄存器和打包目的地寄存器的数目是否超出重新命名器中提供的重新命名端口的预设数目。如果确定所述数目等于或者小于预设数目,则在相同周期分别将打包源寄存器和打包目的地寄存器发送到重新命名器以用于重新命名。
另一方面,如果确定所述数目大于预设数目,则在下一周期,从解码器接收到的微操作当中、在一个或多个所选择的微操作中的一个或多个打包源寄存器和打包目的地寄存器被发送到重新命名器以用于在一个或多个微操作中重新命名打包寄存器。端口的预设数目可以是系统允许的重新命名端口的最大数目。
发送到重新命名器的打包寄存器在重新命名器中被重新命名,然后在操作400中被发送以用于调度和运行。
根据上面描述的实施例,具有在重新命名之前将源寄存器和目的地寄存器打包成为打包寄存器结构的打包器的微处理器可以处理更多微操作,而不增加重新命名端口的数目和对处理时间产生不利影响。同时,通过限制源寄存器和目的地寄存器的数目或者通过指定将打包成为打包寄存器结构的预定源寄存器和目的地寄存器,可以实现处理微操作的额外效率。
上面描述的实施例仅仅是说明性的而不意欲限制本发明构思的范围。例如,未打包结构中以及打包结构中的源寄存器和目的地寄存器的示范性数目能够是任意数目。而且,解码器和MUX的数目能够是任意数目。此外,本领域普通技术人员能够容易地认识到,附图中的词“源”和“目的地”分别包括“源寄存器”和“目的地寄存器”的意思。而且,根据各种实施例的处理器可以是任意类型的处理器、微处理器或者中央处理单元(CPU)或者图形处理单元(GPU)或者包括多核处理器的数据处理单元。这些和其它变化、修改、添加和改进可以落入本发明构思的范围内。
在上面描述的实施例中,用于描述诸如“解码器”、“打包器”、“重新命名器”、“MUX”和“控制器”这样的微处理器20和30中的每一个组件的术语指示但是不局限于诸如集成芯片这样的执行特定任务的软件或者硬件组件。提供用于这些组件的功能可以合并成较少的组件或者一个组件或者分离为额外组件。此外,这些组件可以实现为使得它们在通信系统中运行一个或多个计算机。
本领域普通技术人员将理解,可以在此进行形式和细节上的各种改变而不脱离本发明构思的精神和范围。因此,本发明构思的范围并非通过具体实施例的详细描述定义,而是通过后附权利要求来定义,并且在范围内的所有差异将理解为包括在本发明构思内。
Claims (32)
1.一种指令处理方法,包括:
接收从一个或多个指令解码的多个微操作;
基于通过重新命名器读或写打包寄存器以用于寄存器重新命名的所述重新命名器的重新命名端口的预设数目,将包括在所述微操作中的多个寄存器打包成为包括多个打包寄存器的打包寄存器结构;以及
将打包寄存器发送到所述重新命名器以用于寄存器重新命名。
2.如权利要求1所述的方法,其中,被打包成为打包寄存器结构中的寄存器中的每一个包括有效源数据或者有效目的地数据。
3.如权利要求1所述的方法,还包括重新命名所述打包寄存器,
其中所述重新命名端口的预设数目被设置为小于允许微操作在一个周期中作为操作数所具有的全部寄存器的数目。
4.如权利要求3所述的方法,其中从预定寄存器当中选择将被打包成为打包寄存器结构的寄存器中的每一个,所述预定寄存器从全部寄存器当中选择。
5.如权利要求4所述的方法,其中基于关于预定寄存器的有效信息和使用年限信息选择将被打包的寄存器中的每一个。
6.如权利要求1所述的方法,其中,所述打包寄存器结构还包括关于被打包成为打包寄存器结构的寄存器中的每一个的属性信息。
7.如权利要求6所述的方法,其中,所述属性信息包括以下至少其中之一:
关于寄存器中的每一个是否具有有效源信息或者目的地信息的信息;
寄存器中的每一个的标识符;以及
包括寄存器中的每一个的微操作当中的微操作的标识符。
8.如权利要求7所述的方法,其中,所述微操作的标识符包括关于已经解码微操作的解码器的信息。
9.如权利要求7所述的方法,其中,所述属性信息还包括关于寄存器中的每一个的使用年限信息。
10.如权利要求1所述的方法,还包括确定打包寄存器的数目是否超出所述重新命名器端口的预设数目,
其中,如果确定所述打包寄存器的数目未超出所述预设数目,则在当前周期中发送所述打包寄存器以用于寄存器重新命名,以及
其中,如果确定所述打包寄存器的数目超出所述预设数目,则在下一周期发送包括在所述多个微操作当中的一个或多个微操作中的一个或多个寄存器以用于寄存器重新命名。
11.如权利要求10所述的方法,其中,所述预设数目小于允许微操作采用其作为操作数的全部寄存器的数目。
12.如权利要求11所述的方法,其中,基于多个微操作的使用年限,从所述多个微操作当中选择所述一个或多个微操作。
13.如权利要求1所述的方法,其中,所述多个寄存器包括至少一个源寄存器和至少一个目的地寄存器,以及
其中,所述打包寄存器结构包括:
打包源结构,包括通过打包所述至少一个源寄存器而生成的至少一个打包源寄存器;以及
打包目的地结构,包括通过打包至少一个目的地寄存器而生成的至少一个打包目的地寄存器。
14.如权利要求13所述的方法,其中,所述打包源结构还包括关于所述至少一个打包源寄存器中的每一个源自其的源寄存器的源属性信息;以及
其中,所述打包目的地结构还包括关于所述至少一个打包目的地寄存器中的每一个源自其的目的地寄存器的目的地属性信息。
15.如权利要求14所述的方法,其中,所述源属性信息包括以下至少其中之一:
关于源寄存器是否具有有效源信息的信息;
源寄存器的标识符;以及
包括源寄存器的微操作当中的微操作的标识符,并且
其中所述目的地属性信息包括:
关于所述目的地寄存器是否具有有效目的地信息的信息;
目的地寄存器的标识符;以及
包括目的地寄存器的微操作当中的微操作的标识符。
16.如权利要求15所述的方法,其中,所述源属性信息和所述目的地属性信息至少其中一个包括关于所述源寄存器和所述目的地寄存器的使用年限信息。
17.一种包括至少一个微处理器的指令处理装置,所述微处理器被配置为实现执行以下操作的打包器:
接收从一个或多个指令解码的多个微操作;
基于通过重新命名器读或写打包寄存器以用于寄存器重新命名的所述重新命名器的预设数目的重新命名端口,将包括在所述微操作中的多个寄存器打包成为包括多个打包寄存器的打包寄存器结构;以及
发送所述打包寄存器以用于寄存器重新命名。
18.如权利要求17所述的装置,其中,被打包成为打包寄存器结构中的寄存器中的每一个包括有效源数据或者有效目的地数据。
19.如权利要求17所述的装置,其中所述重新命名端口的预设数目被设置为小于允许微操作在一个周期中作为操作数所具有的全部源寄存器的数目。
20.如权利要求19所述的装置,其中所述微处理器还被配置为实现多个多路复用器,每一个多路复用器从预定寄存器当中选择将被打包成为打包寄存器结构的寄存器中的每一个,所述预定寄存器从全部寄存器当中选择。
21.如权利要求20所述的装置,其中基于关于预定寄存器的有效信息和使用年限信息选择将被打包的寄存器中的每一个。
22.如权利要求17所述的装置,其中,所述打包寄存器结构还包括关于被打包成为打包寄存器结构的寄存器中的每一个的属性信息。
23.如权利要求22所述的装置,其中,所述属性信息包括以下至少其中之一:
关于寄存器中的每一个是否具有有效源信息或者目的地信息的信息;
寄存器中的每一个的标识符;以及
包括寄存器中的每一个的微操作当中的微操作的标识符。
24.如权利要求23所述的装置,其中,所述微操作的标识符包括关于已经解码微操作的解码器的信息。
25.如权利要求24所述的装置,其中,所述属性信息还包括关于寄存器中的每一个的使用年限信息。
26.如权利要求17所述的装置,其中所述微处理器还被配置为实现控制器,其确定打包寄存器的数目是否超出所述重新命名器端口的预设数目,
其中,如果确定所述打包寄存器的数目未超出所述预设数目,则所述控制器控制所述打包器在当前周期发送所述打包寄存器以用于寄存器重新命名,以及
其中,如果确定所述打包寄存器的数目超出所述预设数目,则所述控制器控制所述打包器在下一周期发送包括在所述多个微操作当中的一个或多个微操作中的一个或多个寄存器以用于寄存器重新命名。
27.如权利要求26所述的装置,其中,所述预设数目小于允许微操作采用其作为操作数的全部寄存器的数目。
28.如权利要求27所述的装置,其中,所述控制器控制所述打包器基于所述多个微操作的使用年限,从所述多个微操作当中选择所述一个或多个微操作。
29.如权利要求17所述的装置,其中,所述多个寄存器包括至少一个源寄存器和至少一个目的地寄存器,以及
其中,所述打包寄存器结构包括:
打包源结构,包括通过打包所述至少一个源寄存器而生成的至少一个打包源寄存器;以及
打包目的地结构,包括通过打包所述至少一个目的地寄存器而生成的至少一个打包目的地寄存器。
30.如权利要求29所述的装置,其中,所述打包源结构还包括关于所述至少一个打包源寄存器中的每一个源自其的源寄存器的源属性信息;以及
其中,所述打包目的地结构还包括关于所述至少一个打包目的地寄存器中的每一个源自其的目的地寄存器的目的地属性信息。
31.如权利要求30所述的装置,其中,所述源属性信息包括以下至少其中之一:
关于源寄存器是否具有有效源信息的信息;
源寄存器的标识符;以及
包括源寄存器的微操作当中的微操作的标识符,以及
其中所述目的地属性信息包括:
关于所述目的地寄存器是否具有有效目的地信息的信息;
目的地寄存器的标识符;以及
包括目的地寄存器的微操作当中的微操作的标识符。
32.如权利要求31所述的装置,其中,所述源属性信息和所述目的地属性信息至少其中一个包括关于所述源寄存器和所述目的地寄存器的使用年限信息。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/790,661 US9395988B2 (en) | 2013-03-08 | 2013-03-08 | Micro-ops including packed source and destination fields |
US13/790,661 | 2013-03-08 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104035748A CN104035748A (zh) | 2014-09-10 |
CN104035748B true CN104035748B (zh) | 2018-03-09 |
Family
ID=51385697
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410083147.1A Active CN104035748B (zh) | 2013-03-08 | 2014-03-07 | 包括打包源字段和目的地字段的微操作 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9395988B2 (zh) |
JP (1) | JP6347629B2 (zh) |
KR (1) | KR102042780B1 (zh) |
CN (1) | CN104035748B (zh) |
DE (1) | DE102014102614A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11237974B2 (en) * | 2019-08-27 | 2022-02-01 | Arm Limited | Operation cache compression |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6675288B2 (en) * | 1998-08-24 | 2004-01-06 | Hewlett-Packard Development Company L.P. | Apparatus for mapping instructions using a set of valid and invalid logical to physical register assignments indicated by bits of a valid vector together with a logical register list |
CN1655118A (zh) * | 2004-02-12 | 2005-08-17 | 松下电器产业株式会社 | 处理器和编译器 |
CN101290567A (zh) * | 2007-04-18 | 2008-10-22 | 国际商业机器公司 | 通用寄存器重命名方法和具有通用寄存器重命名的微处理器 |
CN101447911A (zh) * | 2007-11-27 | 2009-06-03 | 上海高性能集成电路设计中心 | 一种通过分布控制扩展访存队列容量的装置 |
CN101601008A (zh) * | 2007-01-24 | 2009-12-09 | 高通股份有限公司 | 用于在扩展指令的组成指令之间转发中间结果的寄存器重命名系统的使用 |
US8335912B2 (en) * | 2009-04-22 | 2012-12-18 | Oracle America, Inc. | Logical map table for detecting dependency conditions between instructions having varying width operand values |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5452426A (en) * | 1994-01-04 | 1995-09-19 | Intel Corporation | Coordinating speculative and committed state register source data and immediate source data in a processor |
US5699536A (en) * | 1995-04-13 | 1997-12-16 | International Business Machines Corporation | Computer processing system employing dynamic instruction formatting |
US7395298B2 (en) | 1995-08-31 | 2008-07-01 | Intel Corporation | Method and apparatus for performing multiply-add operations on packed data |
US6192464B1 (en) | 1997-12-31 | 2001-02-20 | Intel Corporation | Method and apparatus for decoding one or more instructions after renaming destination registers |
US6041404A (en) | 1998-03-31 | 2000-03-21 | Intel Corporation | Dual function system and method for shuffling packed data elements |
US6122656A (en) * | 1998-07-31 | 2000-09-19 | Advanced Micro Devices, Inc. | Processor configured to map logical register numbers to physical register numbers using virtual register numbers |
GB2352536A (en) | 1999-07-21 | 2001-01-31 | Element 14 Ltd | Conditional instruction execution |
US6748521B1 (en) | 2000-02-18 | 2004-06-08 | Texas Instruments Incorporated | Microprocessor with instruction for saturating and packing data |
US20030105945A1 (en) | 2001-11-01 | 2003-06-05 | Bops, Inc. | Methods and apparatus for a bit rake instruction |
US6567902B1 (en) | 2000-08-15 | 2003-05-20 | Juniper Networks. Inc. | Systems and methods for packing data into a destination register |
JP3501761B2 (ja) * | 2001-01-30 | 2004-03-02 | 株式会社半導体理工学研究センター | 大規模データパス・アーキテクチャの実行機構 |
US7155601B2 (en) | 2001-02-14 | 2006-12-26 | Intel Corporation | Multi-element operand sub-portion shuffle instruction execution |
JP3763518B2 (ja) * | 2001-05-29 | 2006-04-05 | インターナショナル・ビジネス・マシーンズ・コーポレーション | コンパイラ、そのコンパイル方法およびプログラム |
US7685212B2 (en) * | 2001-10-29 | 2010-03-23 | Intel Corporation | Fast full search motion estimation with SIMD merge instruction |
US20040268093A1 (en) * | 2003-06-26 | 2004-12-30 | Samra Nicholas G | Cross-thread register sharing technique |
US7555514B2 (en) | 2006-02-13 | 2009-06-30 | Atmel Corportation | Packed add-subtract operation in a microprocessor |
US20080077772A1 (en) | 2006-09-22 | 2008-03-27 | Ronen Zohar | Method and apparatus for performing select operations |
US8078846B2 (en) * | 2006-09-29 | 2011-12-13 | Mips Technologies, Inc. | Conditional move instruction formed into one decoded instruction to be graduated and another decoded instruction to be invalidated |
JP4996945B2 (ja) * | 2007-02-28 | 2012-08-08 | 公立大学法人広島市立大学 | データ処理装置、データ処理方法 |
US8355028B2 (en) * | 2007-07-30 | 2013-01-15 | Qualcomm Incorporated | Scheme for varying packing and linking in graphics systems |
-
2013
- 2013-03-08 US US13/790,661 patent/US9395988B2/en active Active
- 2013-10-21 KR KR1020130125470A patent/KR102042780B1/ko active IP Right Grant
-
2014
- 2014-02-27 DE DE102014102614.4A patent/DE102014102614A1/de active Pending
- 2014-03-07 CN CN201410083147.1A patent/CN104035748B/zh active Active
- 2014-03-07 JP JP2014044870A patent/JP6347629B2/ja active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6675288B2 (en) * | 1998-08-24 | 2004-01-06 | Hewlett-Packard Development Company L.P. | Apparatus for mapping instructions using a set of valid and invalid logical to physical register assignments indicated by bits of a valid vector together with a logical register list |
CN1655118A (zh) * | 2004-02-12 | 2005-08-17 | 松下电器产业株式会社 | 处理器和编译器 |
CN101601008A (zh) * | 2007-01-24 | 2009-12-09 | 高通股份有限公司 | 用于在扩展指令的组成指令之间转发中间结果的寄存器重命名系统的使用 |
CN101290567A (zh) * | 2007-04-18 | 2008-10-22 | 国际商业机器公司 | 通用寄存器重命名方法和具有通用寄存器重命名的微处理器 |
CN101447911A (zh) * | 2007-11-27 | 2009-06-03 | 上海高性能集成电路设计中心 | 一种通过分布控制扩展访存队列容量的装置 |
US8335912B2 (en) * | 2009-04-22 | 2012-12-18 | Oracle America, Inc. | Logical map table for detecting dependency conditions between instructions having varying width operand values |
Also Published As
Publication number | Publication date |
---|---|
DE102014102614A1 (de) | 2014-09-11 |
US20140258687A1 (en) | 2014-09-11 |
KR102042780B1 (ko) | 2019-11-27 |
US9395988B2 (en) | 2016-07-19 |
JP2014175005A (ja) | 2014-09-22 |
JP6347629B2 (ja) | 2018-06-27 |
CN104035748A (zh) | 2014-09-10 |
KR20140110705A (ko) | 2014-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5826054A (en) | Compressed Instruction format for use in a VLIW processor | |
US8583895B2 (en) | Compressed instruction format for use in a VLIW processor | |
US20140215189A1 (en) | Data processing apparatus and method for controlling use of an issue queue | |
US9965275B2 (en) | Element size increasing instruction | |
CN101449256A (zh) | 对载明并行和依赖运算的指令矩阵进行处理的装置和方法 | |
CN109643233A (zh) | 具有带读取和读取/前进操作数编码的流引擎的数据处理设备 | |
WO2001016710A1 (fr) | Processeur de donnees | |
CN108205448A (zh) | 具有在每个维度上可选择的多维循环寻址的流引擎 | |
CN109952559A (zh) | 具有单独可选元素及成组复制的流式传输引擎 | |
US10303399B2 (en) | Data processing apparatus and method for controlling vector memory accesses | |
US11036502B2 (en) | Apparatus and method for performing a rearrangement operation | |
CN108139911A (zh) | 在vliw处理器的同一执行包中使用有条件扩展槽的指令的有条件执行规格 | |
US9804853B2 (en) | Apparatus and method for compressing instruction for VLIW processor, and apparatus and method for fetching instruction | |
Kohútka et al. | Hardware accelerated scheduling in real-time systems | |
CN104035748B (zh) | 包括打包源字段和目的地字段的微操作 | |
CN101714076B (zh) | 对指令束进行解压缩的处理器和方法 | |
US10567163B2 (en) | Processor with secure hash algorithm and digital signal processing method with secure hash algorithm | |
EP0843848B1 (en) | Vliw processor which processes compressed instruction format | |
KR101042647B1 (ko) | 단일 명령 복수 데이터 처리 시스템 내의 결과 분할 | |
CN106610817A (zh) | 用于采取vliw处理器中的相同执行数据包中的常数扩展槽指定或扩展常数位数的方法 | |
US8055883B2 (en) | Pipe scheduling for pipelines based on destination register number | |
CN110073332A (zh) | 向量生成指令 | |
US8560811B2 (en) | Lane crossing instruction selecting operand data bits conveyed from register via direct path and lane crossing path for execution | |
US20190250914A1 (en) | Vector register access | |
CN112181497A (zh) | 一种分支目标预测地址在流水线中的传递方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |