CN113467830A - 具有时延移位器的处理器和使用所述处理器的控制方法 - Google Patents
具有时延移位器的处理器和使用所述处理器的控制方法 Download PDFInfo
- Publication number
- CN113467830A CN113467830A CN202011360338.XA CN202011360338A CN113467830A CN 113467830 A CN113467830 A CN 113467830A CN 202011360338 A CN202011360338 A CN 202011360338A CN 113467830 A CN113467830 A CN 113467830A
- Authority
- CN
- China
- Prior art keywords
- instruction
- shifter
- write
- clock cycle
- latency
- 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.)
- Withdrawn
Links
- 238000000034 method Methods 0.000 title claims abstract description 17
- 230000005540 biological transmission Effects 0.000 claims description 35
- 239000000872 buffer Substances 0.000 claims description 16
- 230000003111 delayed effect Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 15
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 3
- 230000009467 reduction Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000007175 bidirectional communication Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30134—Register stacks; shift 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address 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/30098—Register arrangements
- G06F9/30141—Implementation provisions of register files, e.g. ports
-
- 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
-
- 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
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- 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
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)
- Executing Machine-Instructions (AREA)
Abstract
本发明介绍了一种包含寄存器组、时延移位器、解码单元以及多个功能单元的处理器及使用所述处理器的控制方法。寄存器组包含写入端口。时延移位器包含多个移位器条目且每一时钟周期移出移位器条目中的一移位器条目。移位器条目中的每一个与时钟周期相关联,且移位器条目中的每一个包含指示寄存器组的写入端口是否可用于相关联时钟周期中的回写操作的回写值。解码单元配置成对指令进行解码且根据时延移位器的回写值发射指令。功能单元耦合到解码单元和寄存器组且配置成执行由解码单元发射的指令并对寄存器组的写入端口执行回写操作。
Description
技术领域
本发明大体上涉及一种处理器架构,且更具体地说,涉及一种包含时延移位器的处理器和用于控制处理器的指令流水线(instruction pipeline)的控制方法。
背景技术
用于提高处理器的性能的一种方法是使用指令流水线来执行指令。指令流水线中的指令的执行分解成包含回写阶段的数个阶段。在回写阶段,执行回写操作以将结果数据通过寄存器组的写入端口写入到寄存器组。因为寄存器组中的写入端口的数量受到限制,所以在同一时钟周期中数个指令需要比可用写入端口的数量多的写入端口以回写到寄存器组时可能发生冲突。使用写入端口的冲突引起指令流水线中的指令的停滞或互锁,从而降低处理器的性能。此外,回写阶段常常是流水线执行的最后阶段,由于回写冲突而引起的指令的停滞对所有执行流水线阶段具有深远广泛的影响。另外,指令流水线具有需要来自处理器的数个地点和组件的信息的极复杂的控制逻辑。
随着对提高处理器的性能的需求,对可有效防止指令的停滞和互锁的处理器和控制方法的需要日益增长。
发明内容
在本发明的一个实施例中,一种微处理器包含寄存器组、时延移位器、解码单元以及功能单元。寄存器包含写入端口。时延移位器包含多个移位器条目且配置成在每一时钟周期移出多个移位器条目当中的一移位器条目,其中多个移位器条目中的每一个与时钟周期相关联,且多个移位器条目中的每一个包括回写值,其中所述回写值用于指示可对所述寄存器组的写入端口进行回写操作的时钟周期。解码单元,耦合到时延移位器,配置成对指令进行解码且基于包含于时延移位器的多个移位器条目中的回写值发射指令。另外,功能单元到解码单元和寄存器组且配置成执行由解码单元发射的指令并对寄存器组的写入端口执行回写操作。
在一个实施例中,一种排程微处理器的寄存器组的写入端口的方法至少包含以下步骤。基于待发射的指令的执行时延时间确定第一时钟周期。基于时延移位器的回写值确定写入端口在第一时钟周期的可用性,其中回写值包含于移位器时延的多个移位器条目当中的一移位器条目中,且每一时钟周期移出多个移位器条目。在时延移位器的回写值指示写入端口于第一时钟周期中可用时,对指令进行解码且发射所述指令。在时延移位器的回写值指示写入端口于第一时钟周期中不可用时,停滞指令。
附图说明
结合附图阅读以下详细描述会最佳地理解本发明的各方面。应注意,根据业界中的标准惯例,各个特征未按比例绘制。实际上,为了论述清楚起见,可任意增大或减小各个特征的尺寸。
图1为示出根据一些实施例的计算机处理系统的框图;
图2为示出根据一些实施例的处理器的框图;
图3A到图3B示出根据一些实施例的时延移位器;
图3C示出根据一些实施例的旋转缓冲器的框图;
图4为示出根据一些实施例的基于时延移位器的指令的发射的流程图;
图5为示出根据一些实施例的基于时延移位器的矢量指令的发射的流程图;
图6为示出根据一些实施例的第M时钟周期中的指令的发射的流程图;
图7为示出根据一些实施例的第M时钟周期中的矢量指令的发射的流程图;
图8为示出根据一些实施例的基于时延移位器和长时延计数器的长时延指令的发射的图;
图9为示出根据一些实施例的基于时延移位器的除法指令的发射的流程图;
图10为示出根据一些实施例的基于时延移位器的加载指令的发射的流程图;
图11为示出根据一些实施例的控制指令流水线的方法的流程图。
附图标号说明
10:计算机处理系统;
100:处理器;
110:指令提取单元;
111、I1、I2、I3:指令;
120、320:发射/解码单元;
121、171:信号;
123、500:总线;
130、330a、330b:时延移位器;
140:寄存器组;
150:执行队列;
151:发射指令/总线;
160:功能单元模块;
161:结果数据;
170:计数器;
180:数据高速缓冲存储器;
200:存储器;
300:输入/输出接口;
330c:旋转缓冲器;
400:外围装置;
D1:方向;
ex_cnt[x]、ex_cnt[y]:计数器值;
E[0]、E[N]、E[x]:移位器条目;
Funit、funit[5]、funit[x]:功能单元值;
FUNIT_A、FUNIT_B、FUNIT_C:功能单元;
I4:除法指令;
I5:加载指令;
REG_1、REG_M、v5:寄存器;
Rpt:读取指针/读取点;
s:步幅值;
S410、S420、S430、S440、S450、S460、S510、S520、S530、S540、S550、S560、S610、S620、S630、S640、S650、S660、S710、S720、S730、S740、S750、S760、S810、S820、S830、S840、S850、S860、S910、S920、S930、S940、S950、S952、S954、S960、S1010、S1020、S1030、S1050、S1070、S1080、S1110、S1120、S1130、S1140:步骤;
V1、V2:矢量指令;
wb_shift、wb_shift[0]、wb_shift[5]、wb_shift[N]、wb_shift[x]、wb_shift[x+1]、wb_shift[x+M]、wb_shift[(x+K):x]、wb_shift[(x+K):(x)]、wb_shift[(x+K+M):(x+M)]:回写值;
wr_addr、wr_addr[5]、wr_addr[x]:寄存器地址值;
WR_P1、WR_PK:写入端口;
wr_size、wr_size[5]、wr_size[x]:回写大小值;
x:时延;
y:执行时延时间。
具体实施方式
以下公开内容提供用于实施本发明的不同特征的许多不同实施例或实例。下文描述组件和布置的特定实例来简化本发明。当然,这些组件和布置仅是实例且并不希望为限制性的。举例来说,在以下描述中,第一特征在第二特征上方或上的形成可包含第一特征与第二特征直接接触地形成的实施例,且还可包含可在第一特征与第二特征之间形成额外特征以使得第一特征与第二特征可不直接接触的实施例。另外,本发明可在各种实例中重复附图标记和/或字母。此重复是出于简化和清楚的目的,且本身并不规定所论述的各种实施例和/或配置之间的关系。
另外,为易于描述,本文中可使用如“在…之下”、“在…下方”、“下部”、“在…上方”、“上部”等等的空间相对术语,以描述如图中所示出的一个元件或特征与另一元件或特征的关系。除图中所描绘的定向之外,空间相对术语意图涵盖装置在使用或操作中的不同定向。设备可以其它方式定向(旋转90度或处于其它定向),且本文中所使用的空间相对描述词因此可同样地进行解释。
图1示出根据一些实施例的包含处理器100、存储器200、输入/输出(input/output;I/O)接口300、外围装置400以及总线500的计算机处理系统10。总线500可允许计算机处理系统10的组件当中的双向通信。本发明的一些实施例可使用比图1中所示出的组件更多、更少或不同的组件。作为实例,计算机处理系统10可还包含计时器、串行外围接口、数/模转换器、模/数转换器、显示驱动器、多种类型的存储器以及任何其它合适的组件。
在一些实施例中,处理器100配置成使用指令流水线(instruction pipeline)执行指令,其中指令的执行分解成数个阶段,例如指令提取(instruction fetch)阶段、指令解码(instruction decode)阶段、指令执行(instruction execution)阶段以及回写(writeback)阶段。处理器100可包含具有相对较高的存取速率的高速缓冲存储器,例如数据高速缓冲存储器和指令高速缓冲存储器。处理器100的数据高速缓冲存储器可为多级数据高速缓冲存储器,所述多级数据高速缓冲存储器可包含L1数据高速缓冲存储器、L2数据高速缓冲存储器以及L3数据高速缓冲存储器。L1数据高速缓冲存储器、L2数据高速缓冲存储器以及L3数据高速缓冲存储器可位于处理器100内部或外部。在一些实施例中,计算机处理系统10包含多个处理器,且任何数量的处理器可相同或可与处理器100不同。
存储器200配置成存储执行指令所需的指令和数据的程序代码。存储器200可包含非易失性存储器或易失存储器或其组合。举例来说,存储器200可包含随机存取存储器(random access memory;RAM)、动态随机存取存储器(dynamic random access memory;DRAM)、静态随机存取存储器(static random access memory;SRAM)、只读存储器(readonly memory;ROM)、可编程只读存储器(programmable read only memory;PROM)、电可编程只读存储器(electrically programmable read only memory;EPROM)、电可擦除可编程只读存储器(electrically erasable programmable read only memory;EEPROM)以及闪速存储器中的至少一个。
I/O接口300配置成将输入装置和输出装置通过总线500耦合到计算机系统10。计算机系统10可从输入装置接收数据且通过I/O接口300将数据发送到输出装置。I/O接口300可包含呈有线或无线连接的串联接口和并联接口中的至少一个。外围装置400可包含键盘、鼠标、传感器、信号接收器、监视器以及任何其它合适的装置。
图2示出根据一些实施例的处理器100的框图。处理器100可包含指令提取单元(instruction fetch unit)110、发射/解码单元(issue/decode unit)120、时延移位器(latency shifter)130、寄存器组(register file)140、执行队列(execution queue)150以及功能单元(functional unit)模块160。指令提取单元110配置成提供指令111以供处理器100执行。取决于处理器100的架构,指令111可为标量指令或矢量指令。在一些实施例中,指令111可为通用指令、长时延指令或未知时延指令。通用指令可指具有已知执行时延时间的指令,且已知执行时延时间短于阈值。长时延指令可指具有已知执行时延时间的指令,且已知执行时延时间大于阈值。举例来说,长时延指令可为浮点除法指令、浮点平方根指令、浮点求和减法指令(floating-point sum reduction instruction)以及整数除法指令。未知时延指令可指具有未知执行时延时间的指令,例如加载指令。
寄存器组寄存器组140可包含配置成存储寄存器组寄存器组140的数据的多个寄存器REG_1到REG_M。寄存器REG_1到寄存器REG_M可存储用于执行发射指令的操作数和/或通过发射指令的回写操作写入寄存器组寄存器组140的结果数据。寄存器REG_1到寄存器REG_M的数量可根据处理器100的架构而变化。在一些实施例中,寄存器组寄存器组140更包含至少一个写入端口WR_P1到WR_PK,其中通过至少一个写入端口WR_P1到WR_PK将结果数据写入寄存器组寄存器组140。在一些实施例中,寄存器组140可还包含用于读取存储在寄存器组140中的数据的至少一个读取端口(未示出)。
时延移位器130可包含每一时钟周期移位的多个移位器条目。时延移位器130的每一移位器条目与时钟周期(例如,第x时钟周期,其中x为正整数)相关联,且每一移位器条目包含回写值(例如,回写值wb_shift[x]),所述回写值指示在时钟周期中寄存器组140的写入端口的可用性。回写值wb_shift[x]可为指示逻辑值“1”和逻辑值“0”的多位值或单位值。举例来说,在回写值wb_shift[x]为逻辑值“1”时,其指示在第x时钟周期中写入端口不可用于回写操作。换句话说,存在将要在第x时钟周期中对写入端口执行的另一回写操作。或者,在回写值wb_shift[x]为逻辑值“0”时,其指示在第x中写入端口可用于回写操作。在一些实施例中,在发射待由处理器100执行的指令后,设定时延移位器130的回写值。
发射/解码单元120耦合到指令提取单元110和时延移位器130且配置成对指令111进行解码且基于存储在时延移位器130的移位器条目中的回写值发射所述指令111。在一些实施例中,在将指令111提供到发射/解码单元120时,发射/解码单元120可确定指令111的执行时延时间。指令111的执行时延时间可为执行指令111所需的时钟周期的数量。在一些实施例中,具有x个时钟周期的执行时延时间的指令111将在第x时钟周期中具有回写操作。在一些实施例中,发射/解码单元120配置成基于时延移位器130的回写值wb_shift[x]确定是否停滞或发射具有x个时钟周期的执行时延时间的指令111。在回写值wb_shift[x]为“0”时,发射/解码单元120对指令111进行解码且将所述指令111发到执行队列150。在发射指令111后,将时延移位器130的回写值wb_shift[x]设定为“1”。在时延移位器130的回写值wb_shift[x]为“1”时,发射/解码单元120停滞指令111的发射且检查写入端口在下一时钟周期或第(x+1)时钟周期的可用性。发射/解码单元120可通过信号121与时延移位器130通信。
在一些实施例中,执行队列150耦合到发射/解码单元120且配置成将发射指令布置于队列中。执行队列150可将发射指令151提供到功能单元模块160以供执行。
功能单元模块160可包含配置成执行由执行队列150提供的发射指令的多个功能单元FUNIT_A、FUNIT_B以及FUNIT_C。在一些实施例中,功能单元模块160可包含算术逻辑单元(arithmetic logic unit;ALU)、地址生成单元(address generation unit;AGU)、浮点单元(floating-point unit;FPU)、加载存储单元(load-store unit;LSU)、分支执行单元(branch execution unit;BEU)以及其它合适的功能单元。在一些实施例中,待由处理器100的功能单元执行的指令151可与操作数集合相关联,所述操作数存储在寄存器组140中。处理器100的功能单元可通过寄存器组140的可用读取端口存取寄存器组140,以获得用于执行指令151的操作数集合。由功能单元模块160输出的结果数据161可在回写操作中通过寄存器组140的可用写入端口写入寄存器组140。在一些实施例中,可针对指令流水线中的其它指令转发功能单元模块160的结果数据161,以提高处理器100的性能。
在一些实施例中,处理器100更包含计数器170和数据高速缓冲存储器180,其中计数器170可通过信号171与时延移位器130通信。数据高速缓冲存储器180可与功能单元模块160的加载/存储功能单元(未示出)通信。计数器170可具有计数器值ex_cnt[x],且计数器170配置成每一时钟周期对计数器值ex_cnt[x]进行倒计数,直到计数器值ex_cnt[x]达到阈值为止。在一些实施例中,根据时延移位器130中的移位器条目的总数确定阈值。在一些实施例中,计数器170和时延移位器130可用于辅助发射/解码单元120发射长时延指令,例如浮点指令、平方根指令、浮点求和减法指令或整数除法指令。
数据高速缓冲存储器180可包含不同高速缓冲存储器级,例如L1数据高速缓冲存储器、L2数据高速缓冲存储器以及L3数据高速缓冲存储器,其中L1数据高速缓冲存储器、L2数据高速缓冲存储器以及L3数据高速缓冲存储器的存取速率不同。L1数据高速缓冲存储器的存取速率比L2数据高速缓冲存储器的存取速率更快,且L2数据高速缓冲存储器的存取速率比L3数据高速缓冲存储器的存取速率更快。在一些实施例中,所有L1数据高速缓冲存储器、L2数据高速缓冲存储器以及L3数据高速缓冲存储器都定位于处理器100内部。在替代实施例中,L1数据高速缓冲存储器定位于处理器100内部,且L2数据高速缓冲存储器和L3数据高速缓冲存储器定位于处理器100外部。在一些实施例中,请求接受协议可在数据高速缓冲存储器180与时延移位器130之间实施。另外,请求接受协议还可在外部存储器(例如,图1中的存储器200)与时延移位器130之间实施。请求接受协议可用于辅助发射未知时延指令,例如加载指令。加载指令的执行时延时间由于数据高速缓冲存储器命中/未命中和数据库冲突的性质而为未知的。举例来说,在执行加载数据所必需的数据在L1高速缓冲存储器数据而非L2高速缓冲存储器数据或L3高速缓冲存储器数据中发现时,加载指令的执行短得多。当在外部存储器中发现数据时,加载指令的执行时延时间较长且为未知的。
在一些实施例中,寄存器组140的写入端口WR_P1到写入端口WR_PK包含多个共用写入端口和专用写入端口,其中所有功能单元共用所述共用写入端口,且专用写入端口配置成用于未知时延指令,例如加载指令。在一些实施例中,处理器中的时延移位器130的数量等于寄存器组140中的共用写入端口的数量,且写入端口中的每一个与时延移位器中的一个相关联。
图3A示出根据一些实施例的时延移位器330a。时延移位器330a可包含配置成每一时钟周期在方向D1上移位的多个移位器条目E[0]到E[N]。移位器条目E[0]称为底部移位器条目(例如,最低有效位(least significant bit),LSB),且移位器条目E[N]称为顶部移位器条目(例如,最高有效位(most significant bit),MSB)。时延移位器330a可每一时钟周期移出底部移位器条目E[0]。在一些实施例中,时延移位器330a的移位器条目E[x]包含回写值wb_shift[x],所述回写值指示寄存器组140的写入端口在第x时钟周期的可用性。在回写值wb_shift[x]为第一预定值(例如,“1”)时,其指示写入端口于第x时钟周期中不可使用。在回写值wb_shift[x]为第二预定值(例如,“0”)时,其指示写入端口于第x时钟周期中可使用。举例来说,移位器条目E[0]的回写值wb_shift[0]为“0”,其指示寄存器组140的写入端口于下一时钟周期中可使用。回写值wb_shift[5]为“1”,其指示寄存器组140的写入端口于第五时钟周期中不可使用。
在一些实施例中,发射/解码单元320可基于存储在时延移位器330a的移位器条目E[0]到移位器条目E[N]中的回写值wb_shift[0]到回写值wb_shift[N]控制指令的发射。举例来说,在发射/解码单元320接收具有x个时钟周期的执行时延时间的指令时,发射/解码单元320可检查回写值wb_shift[x]是否为“1”或“0”。如果回写值wb_shift[x]为“0”,那么发射/解码单元320可发射指令,且在第x时钟周期中执行指令的回写操作。一旦发射指令,就将时延移位器330a的回写值wb_shift[x]设定为“1”以用于防止在第x时钟周期中使用写入端口的冲突。如果回写值wb_shift[x]为“1”,那么发射/解码单元320停滞指令,且针对第(x+1)时钟周期检查写入端口在下一时钟周期的可用性。发射/解码单元320可在后续时钟周期中通过时延移位器330a的回写值检查写入端口的可用性,直到发现可用的移位器条目为止。以此方式,通过仅检查存储在时延移位器330a中的回写值wb_shift[x]来检查写入端口的可用性。因而,在使用时延移位器330a的情况下简化指令流水线的控制。
图3B示出根据一些实施例的时延移位器330b。图3A中所示的时延移位器330a与图3B中所示的时延移位器330b之间的差异是时延移位器330b存储的信息比时延移位器330a存储的信息多。更具体地说,除回写值之外,时延移位器330b的每一条目还可包含寄存器地址值wr_addr、功能单元值funit以及回写大小值wr_size。应注意,与指令的发射和执行有关的其它信息或值也可包含于时延移位器330b中。
时延移位器330b的每一移位器条目中的寄存器地址值wr_addr[x]可指示在第x时钟周期中写入数据的寄存器的地址。举例来说,寄存器地址值wr_addr[5]指示在第五时钟周期中将结果数据写入寄存器v5。功能单元值funit[x]可指示在第x时钟周期中输出结果数据的功能单元。举例来说,功能单元值funit[5]指示在第五时钟周期中由ALU输出结果数据。回写大小值wr_size[x]指示在第x时钟周期中结果数据的大小。举例来说,回写大小值wr_size[5]指示在第五时钟周期中结果数据的大小为“一半”。
发射/解码单元320可基于存储在时延移位器330b中的回写值wb_shift、寄存器地址值wr_addr、功能单元值funit以及回写大小值wr_size中的至少一个控制指令的发射。在实例中,如果回写值wb_shift[x]为第一预定值,那么发射/解码单元320可停滞指令且在下一时钟周期检查回写值wb_shift[x+1]。如果回写值wb_shift[x]为第二预定值,那么发射/解码单元320可发射指令。在将指令经由总线123从发射/解码单元320发到执行队列150时,随着设定wb_shift[x],将寄存器地址值wr_addr[x]、功能单元值funit[x]、大小值wr_size[x]写入时延移位器中。因而,可在时延移位器330b中发现用于指令的发射和执行的所有必需信息。换句话说,例如功能单元、寄存器地址以及回写数据大小的所有执行流水线控制在时延移位器330b中,且不需要从许多不同地点路由控制信号和寄存器地址。此外,功能单元模块(例如,图2中的功能单元模块160)的功能单元不需要追踪回写寄存器。以此方式,简化、集中化流水线执行机构,且减少处理器的功率消耗。在一些实施例中,将时延移位器的条目数量设定为所有指令的最大时延值。
在一些实施例中,图3A和图3B中所示的时延移位器330a和时延移位器330b可由旋转缓冲器实施以用于进一步节约功率消耗。图3C为示出根据一些实施例的旋转缓冲器330c的框图。旋转缓冲器300c可包含配置成存储时延移位器的值的多个缓冲器条目E[0]到E[N]。在一些实施例中,旋转缓冲器300c包含读取指针Rpt,其中读取点Rpt可指示读出存储值的缓冲器条目的地址。在一些实施例中,每一时钟周期移出旋转缓冲器330c的一个缓冲器条目,且读取指针Rpt可每一时钟周期移动以指示移出的缓冲器条目的地址。
时延移位器上的移位操作为高耗能的,这是因为所有移位器条目必须每一时钟周期用新值更新。在旋转缓冲器330用作时延移位器(例如,图3A和图3B中的时延移位器330a和时延移位器330b)时,读取点Rpt可防止在每一时钟周期中更新时延移位器的所有移位器条目的必要性。因此,减少由旋转缓冲器实施的时延移位器的功率消耗。
图4为示出根据一些实施例的基于时延移位器(例如,图2中的时延移位器130)的指令I1的发射的流程图。在步骤S410中,将具有x个时钟周期的执行时延时间的指令I1提供到发射/解码单元(例如,图2中的发射/解码单元120)。在步骤S420中,发射/解码单元可确定存储在时延移位器中的回写值wb_shift[x]是否是第一预定值(例如,“1”)或第二预定值(例如,“0”)。在确定回写值wb_shift[x]为第一预定值时,发射/解码单元在第x时钟周期停滞指令I1的发射,且在下一时钟周期检查回写值wb_shift[x]以确定是否发射或停滞指令I1(步骤S430和步骤S440)。
如果回写值wb_shift[x]为第二预定值(例如,“0”),那么在步骤S450中将回写值wb_shift[x]设定为第一预定值(例如,“1”),且在步骤S460中,发射/解码单元发射指令I1。换句话说,在回写值wb_shift[x]为第二预定值(例如,“0”)时,其指示在第x时钟周期中寄存器组的写入端口可用于指令I1的回写操作。因而,允许指令I1的发射,且将回写值wb_shift[x]设定为第一预定值以防止在第x时钟周期中与对写入端口的其它回写操作的冲突。
图5为示出根据一些实施例的基于时延移位器(例如,图2中的时延移位器130)的矢量指令V1的发射的流程图。矢量指令V1可包含K个微操作,其中K个微操作中的每一个具有x个时钟周期的执行时延时间。在步骤S510中将矢量指令V1提供到发射/解码单元(例如,图2中的发射/解码单元120)。在步骤S520中,发射/解码单元可确定时延移位器的多个连续移位器条目中的回写值wb_shift[(x+K):x]。在确定回写值wb_shift[(x+K):x]中的至少一个为第一预定值(例如,“1”)时,在步骤S530中,发射/解码单元停滞矢量指令V1的发射。在步骤S540中,发射/解码单元停滞向量指令V1,直到下一时钟周期为止,且在下一时钟周期检查回写值wb_shift[(x+K):(x)]以确定是否发射矢量指令V1。在一些实施例中,K个微操作的读取值不是连续周期但具有步幅值s。在这种情况下,回写值为wb_shift[K*s+1,(K-1)*s+1,(K-2)*s+1,…,2s+1,s+1,1]。将指令经由图2的总线151每s个周期从执行队列150发送到功能单元160。
如果所有回写值wb_shift[(x+K):x]为第二预定值(例如,“0”),那么在步骤S550中将所有回写值wb_shift[(x+K):x]设定为第一预定值(例如,“1”),且在步骤S560中,发射/解码单元发射矢量指令V1。换句话说,在所有回写值wb_shift[(x+K):x]为第二预定值(例如,“0”)时,其指示从第x时钟周期到第(x+K)时钟周期寄存器组的写入端口可用于矢量指令V1的回写操作。因而,允许矢量指令V1的发射,且将回写值回写值wb_shift[(x+K):x]设定为第一预定值以防止在第(x+K)时钟周期到第x时钟周期中对写入端口的其它回写操作。应注意,在K=0时,此图5与图4相同。
图6示出根据一些实施例的基于时延移位器(例如,图2中的时延移位器130)的在第M时钟周期中指令I2的发射。在步骤S610中,将指令I2提供到发射/解码单元(例如,图2中的发射/解码单元120)。在步骤S620中,发射/解码单元可确定时延移位器中的回写值wb_shift[x+M]是否是第一预定值(例如,“1”)或第二预定值(例如,“0”)。如果回写值wb_shift[x+M]为第一预定值,那么发射/解码单元使指令I2的发射停滞一个时钟周期,且在下一时钟周期中再次检查回写值wb_shift[x+M](步骤S630和步骤S640)。如果时延移位器中的回写值wb_shift[x+M]为第二预定值(例如,“0”),那么在步骤S650中将回写值wb_shift[x+M]设定为第一预定值(例如,“1”),且在步骤S660中,发射/解码单元发射指令I2。应注意,在M=0时,此图6与图4相同。
图7示出根据一些实施例的基于时延移位器(例如,图2中的时延移位器130)的在第M时钟周期中矢量指令V2的发射。矢量指令V2可包含K个微操作,其中K个微操作中的每一个具有x个时钟周期的执行时延时间。在步骤S710中将矢量指令V2提供到发射/解码单元(例如,图2中的发射/解码单元120)。在步骤S720中,发射/解码单元可确定时延移位器的多个连续移位器条目中的回写值wb_shift[(x+K+M):(x+M)]中的任一个是否是第一预定值或第二预定值。在确定回写值wb_shift[(x+K+M):(x+M)]中的至少一个为第一预定值(例如,“1”)时,发射/解码单元使矢量指令V2的发射停滞一个时钟周期,且检查回写值wb_shift[(x+K+M):(x+M)]以确定是否发射矢量指令V2(步骤S730和步骤S740)。在所有回写值wb_shift[(x+K+M):(x+M)]都是第二预定值(例如,“0”)时,在步骤S750中将所有回写值wb_shift[(x+K+M):(x+M)]设定为第一预定值(例如,“1”),且在步骤S760中,发射/解码单元发射矢量指令V2。应注意,在M=0时,此图7与图5相同。
在一些实施例中,时延移位器中的条目数量限于较小大小。举例来说,因为大部分指令具有小于32个周期的时延且小于少数指令具有大于32个周期的时延,所以时延移位器设定有32个条目,且需要用以处置长时延指令的机构。长时延计数器用于长时延指令,此在面积、功率以及时序方面高效得多。图8示出根据一些实施例的基于时延移位器(例如,图2中的时延移位器130)和长时延计数器(例如,图2中的计数器170)的长时延指令I3的发射。长时延指令I3可为浮点指令、平方根指令、浮点求和减法指令或整数除法指令。
在步骤S810中,将具有y个时钟周期执行时间的长时延指令I3提供到发射/解码单元(例如,图2中的发射/解码单元120)。y值为时延移位器(例如,图2中的时延移位器130)的移位器条目的总数的较大N。为简单起见,每一计数器170可仅处置一个长时延指令。计数器170可具有忙碌状态和可用状态,其中忙碌状态指示计数器170忙于处置一个长时延指令,且可用状态指示计数器170可用于处置新的长时延指令。在步骤S820中,检查计数器170的状态。在计数器170处于忙碌状态时,发射/解码单元停滞指令I3的发射且在下一时钟周期中再检查计数器170的状态(步骤S830和步骤S840)。在计数器170处于可用状态时,针对长时延计数器(例如,图2中的计数器170)基于长时延指令I3的执行时延时间y设定计数器值ex_cnt[y](步骤S850)在步骤S860中,发射/解码单元发射指令I3。在一些实施例中,计数器配置成每一时钟周期对计数器值ex_cnt[y]进行倒计数,直到计数器值ex_cnt[y]达到N为止;意思是来自长时延指令的结果数据将在N个时钟周期中回写到寄存器组140。在长时延计数器的计数器值ex_cnt[y]达到N时,将顶部时延移位器的回写值wb_shift[N]设定为第一预定值(例如,“1”)。如前述,长时延指令I3具有写入时延移位器中的较高优先级,由此长时延指令I3可始终在无任何冲突的情况下写入时延移位器。
图9示出根据一些实施例的基于时延移位器(例如,图2中的时延移位器130)的除法指令I4的发射。除法指令具有在除法操作的执行期间已知的动态执行时间。换句话说,了解除法指令的执行时间花费极少时钟周期(例如,6个时钟周期)。在一些实施例中,在执行时间已知时,时延移位器不在指令发射阶段期间设定,而在执行的极少时钟周期之后设定。
在步骤S910中将除法指令I4提供到发射/解码单元(例如,图2中的发射/解码单元120),且在不设定时延移位器中的任何回写值的情况下将除法指令I4发到执行队列150(步骤S920)。指令I4最终发到功能单元160以供执行。功能单元分析源操作数数据以确定指令I4的真实时延,例如时延x,此时功能单元160在步骤S930中访问时延移位器130以在将回写值wb_shift[x]设定为第一预定值之前针对冲突检查回写值wb_shift[x]的值。
在将来的某时,在根据功能单元模块已知除法指令I4的时延时间时,功能单元模块将时延时间(例如,x个时钟周期)发送到时延移位器。在步骤S940中,发射/解码单元120可确定与第x时钟周期相关联的移位器条目的回写值wb_shift[x]是否是第一预定值(例如,“1”)或第二预定值(例如,“0”)。在回写值wb_shift[x]为第一预定值(例如,“1”)时,发射/解码单元120可在下一时钟周期中检查移位器条目的回写值(步骤S950)。在步骤S950中,周期计数用于追踪在功能单元160产生的有效结果数据之后多少个周期将写入寄存器组140。仅当写入端口可用时,指令I4的结果数据才可仅写入寄存器组140。除法功能单元可在结果数据被下一除法指令覆写之前保存结果数据若干时钟周期;例如H个周期。在步骤S952中,将周期计数与H相比较,如果周期计数大于H,那么在步骤S954中,下一除法指令在发到功能单元160之前必须针对执行队列150中的额外周期停滞。在回写值wb_shift[X]为第二预定值(例如,“0”)时,在步骤S960中将回写值wb_shift[x]设定为第一预定值(例如,“1”)。因而,基于时延移位器的回写值执行回写操作以将来自功能单元模块的除法指令I4的结果数据写入寄存器组。
图10示出根据一些实施例的基于时延移位器(例如,图2中的时延移位器130)的加载指令I5的发射。加载指令由于数据高速缓冲存储器命中/未命中和数据库冲突的性质而具有未知的时延执行时间。请求接受协议可针对加载指令的发射来实施。加载指令的数据高速缓冲存储器命中与除法指令类似,其中加载执行单元访问时延移位器130以设定回写值wb_shift[x]以要求写入端口写回来自数据高速缓冲存储器的数据。
在步骤S1010和步骤S1020中,在不设定时延移位器中的任何回写值的情况下提供和发射加载指令I5。在一些实施例中,功能单元模块的加载/存储功能单元利用接受/应答协议实施,其中在发现数据时数据高速缓冲存储器发送指示有效数据的信号,且加载/存储功能单元可通过利用接受/应答信号答复来接受数据。在一些实施例中,在未命中数据高速缓冲存储器时,必须在例如L2数据高速缓冲存储器、L3数据高速缓冲存储器或外部存储器的较低层级组件中查找数据。一旦在较低层级组件中发现数据,数据高速缓冲存储器就可将有效数据信号发送到加载/存储功能单元。数据高速缓冲存储器将保存数据,直到从加载/存储功能单元接收到接受/应答信号为止。
在步骤S1030中,加载/存储功能单元检查是否接收到有效数据信号(例如,指示数据高速缓冲存储器的有效数据的信号)。在接收到有效数据信号时,功能单元模块可确定对应于第x时钟周期的回写值wb_shift(x)是否是第一预定值(例如,“1”)(步骤S1040)。在回写值wb_shift(x)为第一预定值时,加载/存储功能单元可延迟将接受/应答信号发送到将保存数据的数据高速缓冲存储器(步骤S1050)。在回写值wb_shift(x)为第二预定值(例如,“0”)时,在步骤S1070中,加载/存储功能单元将接受/应答信号发送到数据高速缓冲存储器,且在步骤S1080中,将回写值wb_shift(x)设定为第一预定值(例如,“1”)。以此方式,在使用时延移位器(例如,图2中的时延移位器130)的情况下简化加载指令I5的发射和回写操作的控制。
在一些实施例中,寄存器组(例如,图2中的寄存器组140)包含多个共用写入端口和专用写入端口,其中所有功能单元或在一组功能单元之间共用所述共用写入端口,且针对未知执行时延时间配置专用写入端口。因为使用专用写入端口将例如加载指令的未知指令写入寄存器组中,所以简化流水线控制机构同时防止流水线中的冲突。
图11示出根据一些实施例的控制流水线执行的方法。在步骤S1110中,基于指令的执行时延时间确定待发射的指令的第一时钟周期。在步骤S1120中,基于时延移位器的回写值确定写入端口在第一时钟周期的可用性,其中回写值包含于移位器时延的多个移位器条目当中的一移位器条目中,且每一时钟周期移出多个移位器条目。在步骤S1130中,在时延移位器的回写值指示写入端口于第一时钟周期中可使用时对指令进行解码且发射所述指令。在步骤S1140中,在时延移位器的回写值指示写入端口于第一时钟周期中不可使用时停滞指令。
根据本发明的一些实施例,介绍了一种包含寄存器组、时延移位器、解码单元以及多个功能单元的处理器。寄存器组包含写入端口。时延移位器包含多个移位器条目且配置成每一时钟周期移出移位器条目当中的一移位器条目。多个移位器条目中的每一个与时钟周期相关联,且多个移位器条目中的每一个包含回写值,其中所述回写值指示在相关联时钟周期中寄存器组的写入端口是否可用于回写操作。解码单元耦合到时延移位器且配置成对指令进行解码并根据时延移位器的回写值发射指令。多个功能单元耦合到解码单元和寄存器组,且配置成执行由解码单元发射的指令且对寄存器组的写入端口执行回写操作。
根据本发明的一些实施例,介绍了一种控制指令流水线的方法。方法包含以下步骤:基于指令的执行时延时间确定待发射的指令的第一时钟周期;基于时延移位器的回写值,确定写入端口在第一时钟周期的可用性,其中回写值包含于移位器时延的多个移位器条目当中的一移位器条目中,且每一时钟周期移出多个移位器条目;在时延移位器的回写值指示写入端口于第一时钟周期中可使用时对指令进行解码且发射所述指令;以及在时延移位器的回写值指示写入端口于第一时钟周期中不可使用时停滞指令。
前文已概述了若干实施例的特征以使得本领域的技术人员可更好地理解以下详细描述。本领域的技术人员应了解,其可轻易地将本发明用作设计或修改用于实现本文中所介绍的实施例的相同目的和/或达成相同优点的其它工艺和结构的基础。本领域的技术人员还应认识到,此类等效构造并不脱离本发明的的精神和范围,且其可在不脱离本发明的精神和范围的情况下在本文中进行各种改变、替代以及更改。
Claims (29)
1.一种微处理器,包括:
寄存器组,包括写入端口;
时延移位器,包括多个移位器条目,所述时延移位器在每一时钟周期移出所述多个移位器条目当中的一移位器条目,其中所述多个移位器条目与一时钟周期相关联,且所述多个移位器条目中的每一个包括回写值,其中所述回写值用于指示在所述时钟周期中所述寄存器组的所述写入端口是否可用于回写操作;
解码单元,耦合到所述时延移位器,所述解码单元对指令进行解码且基于所述时延移位器的所述多个移位器条目中的所述回写值发射所述指令;以及
至少一个功能单元,耦合到所述解码单元和所述寄存器组,所述至少一个功能单元执行由所述解码单元发射的所述指令且在所述回写值时产生结果数据并提供至所述寄存器组的所述写入端口。
2.根据权利要求1所述的微处理器,其中所述时延移位器配置成每一时钟周期移出所述时延移位器的底部移位器条目,其中所述移出操作控制所述寄存器组的所述回写操作。
3.根据权利要求1所述的微处理器,其中
在所述回写值为第一预定值时,在所述时钟周期中所述寄存器组的所述写入端口不可用于所述回写操作;以及
在所述回写值为第二预定值时,在所述时钟周期中所述寄存器组的所述写入端口可用于所述回写操作。
4.根据权利要求3所述的微处理器,其中
在待发射的第一指令将在第一时钟周期执行第一回写操作且所述时延移位器指示所述寄存器组的所述写入端口于所述第一时钟周期中不可使用时,所述解码单元停滞所述第一指令的发射,以及
在待发射的所述第一指令将在所述第一时钟周期执行第一回写操作且所述时延移位器指示所述寄存器组的所述写入端口于所述第一时钟周期中可使用时,所述解码单元发射所述第一指令且将与所述第一时钟周期相关联的所述移位器条目的所述回写值设定成所述第一预定值。
5.根据权利要求4所述的微处理器,其中根据所述第一指令的执行时延时间来决定所述第一指令的所述第一时钟周期。
6.根据权利要求4所述的微处理器,其中
在所述解码单元配置成停滞在所述第一时钟周期时发射所述第一指令时,所述解码单元配置成确定所述寄存器组的所述写入端口在第二时钟周期的可用性,其中所述第二时钟周期在所述第一时钟周期之后。
7.根据权利要求1所述的微处理器,还包括:
指令提取单元,耦合到所述解码单元,所述指令提取单元配置成将所述指令提供至所述解码单元;以及
执行队列,耦合到所述发射/解码单元和所述至少一个功能单元,所述执行队列配置成将发射指令存储到所述执行队列的多个队列条目且将存储在所述执行队列中的所述发射指令提供到所述至少一个功能单元。
8.根据权利要求1所述的微处理器,其中
所述寄存器组更包括具有多个寄存器地址的多个寄存器,以及
所述时延移位器的所述多个移位器条目中的每一个还包括:
寄存器地址值,配置成存储所述多个寄存器地址当中的一寄存器地址以用于所述指令的所述回写操作;以及
功能单元值,配置成指示用于执行所述指令的所述至少一个功能单元当中的一功能单元。
9.根据权利要求1所述的微处理器,其中
使用旋转缓冲器实施所述时延移位器,且所述旋转缓冲器包括:
读取指针,配置成指向从所述旋转缓冲器读出数据的地址。
10.根据权利要求1所述的微处理器,还包括:
长时延计数器,耦合到所述时延移位器,所述长时延计数器配置成每一时钟周期对可设定计数器值进行倒计数,直到所述可设定计数器值达到第一阈值为止,其中
所述发射/解码单元进一步配置成基于所述长时延计数器的状态对所述指令进行解码且发射所述指令,
在所述长时延计数器的所述状态为忙碌状态且所述指令的执行时延时间大于第二阈值时,所述发射/解码单元配置成停滞所述指令的发射,以及
在所述长时延计数器的所述状态为可用状态且所述指令的所述执行时延时间大于所述第二阈值时,根据所述指令的所述执行时延时间设定所述可设定计数器值。
11.根据权利要求10所述的微处理器,其中
当所述可设定计数器值倒计数到所述第一阈值时,针对所述指令设定所述时延移位器的顶部移位器条目。
12.根据权利要求1所述的微处理器,其中所述至少一个功能单元包括加载/存储功能单元,所述加载/存储功能单元配置成:
延迟接受信号发送到所述数据高速缓冲存储器,以回应从数据高速缓冲存储器接收到有效数据信号且所述时钟周期中的所述回写值指示所述寄存器组的所述写入端口于所述时钟周期中不可使用时;以及
将所述接受信号发送到所述数据高速缓冲存储器,以回应从所述数据高速缓冲存储器接收到所述有效数据信号且所述时钟周期中的所述回写值指示所述寄存器组的所述写入端口于所述时钟周期中可使用时。
13.根据权利要求1所述的微处理器,其中所述写入端口包括:
多个第一写入端口,所述至少一个功能单元共用所述多个第一写入端口;以及
第二写入端口,专用于未知时延指令。
14.根据权利要求13所述的微处理器,其中
所述时延移位器包括多个第一时延移位器,且所述多个第一时延移位器中的每一个对应于所述多个第一写入端口中的一个。
15.根据权利要求14所述的微处理器,其中
所述指令为包括多个微操作的矢量指令,以及
所述矢量指令的所述多个微操作包含于所述多个第一时延移位器当中的同一第一时延移位器中。
16.根据权利要求1所述的微处理器,其中
所述指令为包括多个微操作的矢量指令,以及
所述微操作包含于所述时延移位器的连续移位器条目中。
17.一种排程微处理器的寄存器组的写入端口的方法,包括:
基于待发射的指令的执行时延时间确定第一时钟周期;
基于时延移位器的回写值,确定所述写入端口在所述第一时钟周期的可用性,其中所述回写值包含于所述移位器时延的多个移位器条目当中的一移位器条目中,且每一时钟周期移出所述多个移位器条目;
在所述时延移位器的所述回写值指示所述写入端口于所述第一时钟周期中可使用时对所述指令进行解码且发射所述指令;以及
在所述时延移位器的所述回写值指示所述写入端口于所述第一时钟周期中不可使用时停滞所述指令。
18.根据权利要求17所述的排程微处理器的寄存器组的写入端口的方法,其中
在所述回写值为第一预定值时,在所述时钟周期中所述寄存器组的所述写入端口不可用于所述回写操作;以及
在所述回写值为第二预定值时,在所述时钟周期中所述寄存器组的所述写入端口可用于所述回写操作。
19.根据权利要求18所述的排程微处理器的寄存器组的写入端口的方法,还包括:
在对所述指令进行解码和发射所述指令时将所述回写值设定成所述第一预定值;
确定所述寄存器组的所述写入端口在第二时钟周期中是否可用,其中所述第二时钟周期在所述第一时钟周期之后;以及
在所述时延移位器的所述回写值指示所述写入端口于所述第二时钟周期中可使用时,对所述指令进行解码且发射所述指令。
20.根据权利要求17所述的排程微处理器的寄存器组的写入端口的方法,其中所述时延移位器的所述多个移位器条目中的每一个还包括:
寄存器地址值,配置成存储所述多个寄存器地址当中的一寄存器地址以用于所述指令的所述回写操作;
功能单元值,配置成指示用于执行所述指令的所述至少一个功能单元当中。
21.根据权利要求17所述的排程微处理器的寄存器组的写入端口的方法,还包括:
确定长时延计数器的状态;
确定所述指令的执行时延时间是否大于第二阈值;
在所述长时延计数器的所述状态为忙碌状态且所述指令的所述执行时延时间大于所述第二阈值时,停滞所述指令的发射;以及
在所述长时延计数器的所述状态为可用状态且所述指令的所述执行时延时间大于所述第二阈值时,基于所述指令的所述执行时延时间设定所述长时延计数器的可设定计数器值。
22.根据权利要求21所述的排程微处理器的寄存器组的写入端口的方法,还包括:
每一时钟周期对所述可设定计数器值进行倒计数,直到所述可设定计数器值达到第一阈值为止;
发射所述指令且响应于确定使所述可设定计数器值倒计数到所述第一阈值,针对所述指令设定所述时延移位器的顶部移位器条目。
23.一种数据处理系统,包括:
微处理器,其中所述微处理器包含:
寄存器组,包括写入端口;
时延移位器,包括多个移位器条目,所述时延移位器配置成在每一时钟周期移出所述多个移位器条目当中的一移位器条目,其中所述多个移位器条目中的每一个与时钟周期相关联,且所述多个移位器条目中的每一个包括回写值,其中所述回写值用于指示在所述时钟周期中所述寄存器组的所述写入端口是否可用于回写操作;
指令提取单元,配置成提供指令;
解码单元,耦合到所述时延移位器,所述解码单元配置成对所述指令进行解码且基于包含于所述时延移位器的所述多个移位器条目中的所述回写值发射所述指令;
执行队列,耦合到所述解码单元,所述执行队列配置成将发射指令存储到所述执行队列的多个队列条目;以及
至少一个功能单元,耦合到所述执行队列和所述寄存器组,所述至少一个功能单元配置成执行所述发射指令且在所述回写值时,产生结果数据并提供至所述寄存器组的所述写入端口;
主存储器,耦合到所述微处理器;
总线桥,耦合到所述微处理器;以及
输入/输出装置,耦合到所述总线桥。
24.根据权利要求23所述的数据处理系统,其中所述时延移位器配置成每一时钟周期移出所述时延移位器的底部移位器条目,其中所述移位器的所述移出值控制所述寄存器组的所述回写操作。
25.根据权利要求23所述的数据处理系统,其中
在所述回写值为第一预定值时,在所述时钟周期中所述寄存器组的所述写入端口不可用于所述回写操作;以及
在所述回写值为第二预定值时,在所述时钟周期中所述寄存器组的所述写入端口可用于所述回写操作。
26.根据权利要求23所述的数据处理系统,其中
在待发射的第一指令配置成将在第一时钟周期执行第一回写操作且所述时延移位器指示所述寄存器组的所述写入端口于所述第一时钟周期中不可使用时,所述解码单元配置成停滞所述第一指令的发射,以及
在待发射的所述第一指令配置成将在所述第一时钟周期执行第一回写操作且所述时延移位器指示所述寄存器组的所述写入端口于所述第一时钟周期中可使用时,所述解码单元配置成发射所述第一指令且将与所述第一时钟周期相关联的所述移位器条目的所述回写值设定成所述第一预定值。
27.根据权利要求26所述的数据处理系统,其中根据所述第一指令的执行时延时间来决定所述第一指令的所述第一时钟周期。
28.根据权利要求23所述的数据处理系统,还包括:
长时延计数器,耦合到所述时延移位器,所述长时延计数器配置成每一时钟周期对可设定计数器值进行倒计数,直到所述可设定计数器值达到第一阈值为止,其中
所述发射/解码单元进一步配置成基于所述长时延计数器的状态对所述指令进行解码且发射所述指令,
在所述长时延计数器的所述状态为忙碌状态且所述指令的执行时延时间大于第二阈值时,所述发射/解码单元配置成停滞所述指令的发射,以及
在所述长时延计数器的所述状态为可用状态且所述指令的所述执行时延时间大于所述第二阈值时,根据所述指令的所述执行时延时间设定所述可设定计数器值。
29.根据权利要求28所述的数据处理系统,其中
当所述可设定计数器倒计数到所述第一阈值时,针对所述指令设定所述时延移位器的顶部移位器条目。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/836,864 US11132199B1 (en) | 2020-03-31 | 2020-03-31 | Processor having latency shifter and controlling method using the same |
US16/836,864 | 2020-03-31 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113467830A true CN113467830A (zh) | 2021-10-01 |
Family
ID=77854611
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011360338.XA Withdrawn CN113467830A (zh) | 2020-03-31 | 2020-11-27 | 具有时延移位器的处理器和使用所述处理器的控制方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11132199B1 (zh) |
JP (1) | JP2021163453A (zh) |
CN (1) | CN113467830A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11687347B2 (en) | 2021-05-25 | 2023-06-27 | Andes Technology Corporation | Microprocessor and method for speculatively issuing load/store instruction with non-deterministic access time using scoreboard |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2023054537A (ja) | 2021-10-04 | 2023-04-14 | 株式会社アマダ | 板材分離装置,板材分離方法,及びパレット棚装置 |
US11829187B2 (en) | 2022-01-30 | 2023-11-28 | Simplex Micro, Inc. | Microprocessor with time counter for statically dispatching instructions |
US11954491B2 (en) | 2022-01-30 | 2024-04-09 | Simplex Micro, Inc. | Multi-threading microprocessor with a time counter for statically dispatching instructions |
US11829762B2 (en) | 2022-01-30 | 2023-11-28 | Simplex Micro, Inc. | Time-resource matrix for a microprocessor with time counter for statically dispatching instructions |
US11829767B2 (en) | 2022-01-30 | 2023-11-28 | Simplex Micro, Inc. | Register scoreboard for a microprocessor with a time counter for statically dispatching instructions |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5222240A (en) * | 1990-02-14 | 1993-06-22 | Intel Corporation | Method and apparatus for delaying writing back the results of instructions to a processor |
US5826055A (en) * | 1991-07-08 | 1998-10-20 | Seiko Epson Corporation | System and method for retiring instructions in a superscalar microprocessor |
US6240508B1 (en) * | 1992-07-06 | 2001-05-29 | Compaq Computer Corporation | Decode and execution synchronized pipeline processing using decode generated memory read queue with stop entry to allow execution generated memory read |
US6367027B1 (en) * | 1999-03-22 | 2002-04-02 | Infineon Technologies Ag | Skew pointer generation |
US7478225B1 (en) * | 2004-06-30 | 2009-01-13 | Sun Microsystems, Inc. | Apparatus and method to support pipelining of differing-latency instructions in a multithreaded processor |
US7418551B2 (en) * | 2004-07-06 | 2008-08-26 | Intel Corporation | Multi-purpose register cache |
US7506140B2 (en) * | 2005-02-04 | 2009-03-17 | Mips Technologies, Inc. | Return data selector employing barrel-incrementer-based round-robin apparatus |
US8782378B2 (en) * | 2010-09-14 | 2014-07-15 | Arm Limited | Dynamic instruction splitting |
US9286069B2 (en) * | 2012-12-21 | 2016-03-15 | Arm Limited | Dynamic write port re-arbitration |
-
2020
- 2020-03-31 US US16/836,864 patent/US11132199B1/en active Active
- 2020-11-27 CN CN202011360338.XA patent/CN113467830A/zh not_active Withdrawn
- 2020-12-10 JP JP2020204775A patent/JP2021163453A/ja not_active Withdrawn
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11687347B2 (en) | 2021-05-25 | 2023-06-27 | Andes Technology Corporation | Microprocessor and method for speculatively issuing load/store instruction with non-deterministic access time using scoreboard |
Also Published As
Publication number | Publication date |
---|---|
US20210303305A1 (en) | 2021-09-30 |
US11132199B1 (en) | 2021-09-28 |
JP2021163453A (ja) | 2021-10-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113467830A (zh) | 具有时延移位器的处理器和使用所述处理器的控制方法 | |
EP2171574B1 (en) | Multiple-core processor and system with hierarchical microcode store and method therefor | |
US11163582B1 (en) | Microprocessor with pipeline control for executing of instruction at a preset future time | |
US11243775B2 (en) | System, apparatus and method for program order queue (POQ) to manage data dependencies in processor having multiple instruction queues | |
US11204770B2 (en) | Microprocessor having self-resetting register scoreboard | |
US11263013B2 (en) | Processor having read shifter and controlling method using the same | |
KR20190033084A (ko) | 로드 스토어 유닛들을 바이패싱하여 스토어 및 로드 추적 | |
KR101466934B1 (ko) | 동시, 비순차적 디스패치를 사용하는 분산 디스패치 | |
EP4020189A1 (en) | Methods, systems, and apparatuses for a scalable reservation station implementing a single unified speculation state propagation and execution wakeup matrix circuit in a processor | |
US20080244224A1 (en) | Scheduling a direct dependent instruction | |
CN114253607A (zh) | 用于由集群化解码流水线对共享微代码定序器的乱序访问的方法、系统和装置 | |
US6425090B1 (en) | Method for just-in-time delivery of load data utilizing alternating time intervals | |
EP0778519A2 (en) | Multiple instruction dispatch system for pipelined microprocessor without branch breaks | |
EP4020229A1 (en) | System, apparatus and method for prefetching physical pages in a processor | |
EP3757772A1 (en) | System, apparatus and method for a hybrid reservation station for a processor | |
US6957319B1 (en) | Integrated circuit with multiple microcode ROMs | |
TW522339B (en) | Method and apparatus for buffering microinstructions between a trace cache and an allocator | |
US11914998B2 (en) | Processor circuit and data processing method for load instruction execution | |
US11720498B2 (en) | Arithmetic processing device and arithmetic processing method | |
US11314505B2 (en) | Arithmetic processing device | |
US20210200538A1 (en) | Dual write micro-op queue | |
US20130046961A1 (en) | Speculative memory write in a pipelined processor | |
JP2023047283A (ja) | クラスタ化されたデコードパイプラインのためのスケーラブルなトグル点制御回路 |
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 | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20211001 |