CN110597556B - 一种寄存器映射表检查点资源的管理方法、系统及介质 - Google Patents
一种寄存器映射表检查点资源的管理方法、系统及介质 Download PDFInfo
- Publication number
- CN110597556B CN110597556B CN201910849406.XA CN201910849406A CN110597556B CN 110597556 B CN110597556 B CN 110597556B CN 201910849406 A CN201910849406 A CN 201910849406A CN 110597556 B CN110597556 B CN 110597556B
- Authority
- CN
- China
- Prior art keywords
- ptr
- checkpoint
- alloc
- branch
- instruction
- 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
- 238000013507 mapping Methods 0.000 title claims abstract description 94
- 238000007726 management method Methods 0.000 title abstract description 19
- 238000011084 recovery Methods 0.000 claims abstract description 46
- 238000000034 method Methods 0.000 claims description 22
- 230000009191 jumping Effects 0.000 claims description 10
- 230000005540 biological transmission Effects 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 7
- 230000002159 abnormal effect Effects 0.000 claims description 5
- 238000012545 processing Methods 0.000 claims description 4
- 238000000605 extraction Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- COCAUCFPFHUGAA-MGNBDDOMSA-N n-[3-[(1s,7s)-5-amino-4-thia-6-azabicyclo[5.1.0]oct-5-en-7-yl]-4-fluorophenyl]-5-chloropyridine-2-carboxamide Chemical compound C=1C=C(F)C([C@@]23N=C(SCC[C@@H]2C3)N)=CC=1NC(=O)C1=CC=C(Cl)C=N1 COCAUCFPFHUGAA-MGNBDDOMSA-N 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000010926 purge Methods 0.000 description 1
- 230000009467 reduction 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
-
- 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/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Retry When Errors Occur (AREA)
- Advance Control (AREA)
Abstract
本发明公开了一种寄存器映射表检查点资源的管理方法、系统及介质,本发明步骤包括初始化寄存器映射表检查点资源空闲列表;初始化前瞻分配指针、分配指针和回收指针三个指针且均指向前述列表的第0项;在寄存器重命名阶段,根据指令类型决定是否更新前瞻分配指针,在指令分派阶段,根据指令类型决定是否更新分配指针,在分支指令被发射执行时,检查点资源编号随同分支指令一起沿着分支指令的执行流水线向后传递;在指令执行完毕后,当发生异常或分支误预测时,将前瞻分配指针回退到分配指针来实现分派队列中的分支指令占用的检查点资源的回收。本发明能够实现在使用检查点恢复寄存器映射表时,具有逻辑实现简单、硬件开销小的优点。
Description
技术领域
本发明属于微处理器设计技术领域,涉及乱序超标量微处理器设计技术,具体涉及一种寄存器映射表检查点资源的管理方法、系统及介质。
背景技术
目前主流的商用高性能微处理器(CPU)几乎都采用乱序超标量结构,这种结构以不同于程序的顺序执行指令,从而更大程度的开发指令级并行性。指令间存在的相关限制了指令的乱序执行。相关有数据相关和名相关两种类型。数据相关也叫写后读相关,当一条指令的结果要被其后面的指令使用时就产生了数据相关。当存在这种相关时,两条指令只能按照程序序执行。名相关是指两条指令使用了相同的寄存器或者主存单元,即同一个名字,但是指令之间却不存在数据的流动。名相关有两种:读后写相关和写后写相关。当一条指令要读一个寄存器,而其后面的指令要写这个寄存器时就产生了寄存器的读后写相关;当一条指令和其后面的指令都要写同一个寄存器时就产生了寄存器的写后写相关。
微处理器的体系结构寄存器(即程序员可见的寄存器)通常只有32个,导致程序中寄存器的名相关非常常见,消除寄存器名相关对提高乱序超标量微处理器的性能至关重要,因此,乱序超标量微处理器都会采用寄存器重命名技术。寄存器重命名是指当某个体系结构寄存器作为一条指令的目的寄存器时,将其映射到微处理器实现的一个空闲的物理寄存器的过程。如图1(a)所示,ADD指令要写体系结构寄存器R1,SUB指令要读寄存器R1,ADD和SUB之间存在写后读相关;MUL指令要写R1,SUB和MUL之间存在读后写相关;ADD和MUL都要写R1,存在写后写相关。采用寄存器重命名技术后,ADD指令要写体系结构寄存器R1,将其映射到物理寄存器P1,SUB指令要写体系结构寄存器R2,将其映射到物理寄存器P2,MUL也要写R1,将其映射到物理寄存器P3,如图1(b)所示,存在写后读相关的ADD和SUB,它们之间的数据依赖关系依然存在,而存在读后写相关的SUB和MUL以及存在写后写相关的ADD和MUL,因为寄存器重命名,它们之间的名相关被消除了。
在进行寄存器重命名时,需要将体系结构寄存器和物理寄存器之间的映射关系保存起来,保存寄存器映射关系的结构叫做寄存器映射表。寄存器映射表是在指令执行到寄存器重命名阶段时被更新的,这时还不确定指令最终是否会被提交。如果发生了异常或者分支误预测,那么前瞻执行的指令要被清除,该指令对寄存器映射表的更新也要被清除,寄存器映射表需要恢复到前瞻执行的指令被重命名之前的状态。寄存器映射表的恢复通常有两种方法:一种方法是重建。在这种方法中,每条具有目的寄存器的、正在执行中的指令都会记录其目的寄存器在该指令被重命名之前映射到的物理寄存器号,当发生异常或者分支误预测时,从最后一条完成重命名的指令开始,一直回溯到发生异常或者分支误预测的指令,用每条指令记录的映射关系重建寄存器映射表,撤销前瞻指令对寄存器映射表的修改。如果正在执行的指令很多,那么寄存器映射表的重建时间会比较长,从而影响微处理器的性能。另一种方法是检查点。在这种方法中,一条指令在进行寄存器重命名时,申请一个检查点资源,用于记录该指令被重命名之前的整个寄存器映射表信息。当该指令发生异常或者分支误预测时,直接使用检查点恢复寄存器映射表即可。检查点方法能够快速恢复寄存器映射表,但是硬件开销较大,所以大部分微处理器只为分支指令设置寄存器映射表的检查点。
为便于描述,本发明提出的寄存器映射表检查点资源的管理方法面向的微处理器只针对分支指令设置寄存器映射表检查点,但是本发明同样适用于为所有指令都设置寄存器映射表检查点的微处理器。同时,为了后续描述方便,我们在图2中给出了本发明面向的乱序超标量微处理器的微体系结构。指令从指令缓冲(ICache)中取出来后被译码,以获取操作数等有关信息;对于寄存器类型的操作数,需要进行寄存器重命名。如果一条分支指令正在经历重命名阶段,那么该指令会申请分配一个空闲的寄存器映射表检查点资源,用于保存该指令重命名前的寄存器映射表信息;重命名后,指令进入分派队列,在需要的队列资源都有空闲时,指令被分派到发射队列,同时还会在再定序缓冲(ReOrder Buffer,简称ROB)中按顺序记录被分派的指令,使得乱序执行的指令能够按照程序提交;发射队列中的指令只要源操作数准备就绪,并且不存在结构相关,就可以乱序发射执行;指令执行完毕后,如果发生了分支误预测,那么使用检查点恢复寄存器映射表,同时释放检查点资源。如果一条分支指令预测正确,那么不需要恢复寄存器映射表,该分支指令占用的检查点直接被释放。要对被释放的检查点资源进行回收以供后续分支指令使用;提交按程序序进行。
从上面描述可以看出,寄存器映射表检查点资源的管理涉及两个方面:分配和回收。分配发生在寄存器重命名阶段,每条分支指令经历寄存器重命名阶段时都会申请分配一个寄存器映射表检查点资源。回收正常情况下发生在分支指令执行完毕后,但是如果发生了异常或者分支误预测需要清除前瞻取指并执行的指令时,经历了寄存器重命名阶段但是还没有被执行的分支指令占用的寄存器映射表检查点资源也是需要被回收的,这些分支指令可能位于分派队列中,也可能位于发射队列中。可见,寄存器映射表检查点资源的回收点有三个:分派队列、发射队列和分支指令执行流水线。此外,由于分支指令是乱序执行的,所以寄存器映射表检查点资源的回收顺序和分配顺序不再一致。这些都使得寄存器映射表检查点资源的管理变得非常复杂。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种寄存器映射表检查点资源的管理方法、系统及介质。本发明能够实现在使用检查点恢复寄存器映射表时,提供一种逻辑实现简单、硬件开销小的寄存器映射表检查点资源管理。
为了解决上述技术问题,本发明采用的技术方案为:
一种寄存器映射表检查点资源的管理方法,实施步骤包括:
1)初始化寄存器映射表检查点资源空闲列表chkpnt_freelist;
2)初始化前瞻分配指针spec_alloc_ptr、分配指针alloc_ptr和回收指针dealloc_ptr三个指针且均指向寄存器映射表检查点资源空闲列表chkpnt_freelist的第0项;
3)在寄存器重命名阶段,根据指令类型决定是否更新前瞻分配指针spec_alloc_ptr,仅针对分支指令读取前瞻分配指针spec_alloc_ptr指向的内容并分配给分支指令,并根据读取的项目更新前瞻分配指针spec_alloc_ptr的内容,且将分配给分支指令的寄存器映射表检查点的编号随同分支指令一起存入分派队列;
4)在指令分派阶段,根据指令类型决定是否更新分配指针alloc_ptr,仅针对分派的分支指令将分配指针alloc_ptr前进,且将分配给分支指令的寄存器映射表检查点的编号随同分支指令一起进存发射队列;
5)在分支指令被发射执行时,检查点资源编号随同分支指令一起沿着分支指令的执行流水线向后传递;
6)在指令执行完毕后,当发生异常或分支误预测时,将前瞻分配指针spec_alloc_ptr回退到分配指针alloc_ptr来实现分派队列中的分支指令占用的检查点资源的回收。
可选地,步骤1)中初始化寄存器映射表检查点资源空闲列表chkpnt_freelist时,寄存器映射表检查点资源空闲列表chkpnt_freelist共包括N项,每项只有一个字段,字段为对应检查点资源的编号,其中N为微处理器共设置的寄存器映射表检查点数量。
可选地,步骤3)的详细步骤包括:
3.1)判断进行寄存器重命名的是否是分支指令,如果是则跳转执行步骤3.2);否则跳转执行步骤3.3);
3.2)确定当前进行寄存器重命名的分支指令数量m,分支指令数量m为大于等于1的整数,读出从前瞻分配指针spec_alloc_ptr在寄存器映射表检查点资源空闲列表chkpnt_freelist中指向的项开始的连续m项的内容,按序依次分配给正在进行重命名的分支指令,同时前瞻分配指针spec_alloc_ptr前进m项,且如果某一步前瞻分配指针spec_alloc_ptr前进指向的项超过了N-1,那么对其进行N的取模;跳转执行步骤3.4);
3.3)将前瞻分配指针spec_alloc_ptr保持不变,跳转执行步骤3.4);
3.4)指令进入分派队列,如果是分支指令,分配给该分支指令的寄存器映射表检查点的编号随同分支指令一起进入分派队列。
可选地,步骤4)的详细步骤包括:
4.1)判读正在分派的指令是否是分支指令,如果是则跳转执行步骤4.2);否则跳转执行步骤4.3);
4.2)确定当前进行分派的分支指令数量m,分支指令数量m为大于等于1的整数,将分配指针alloc_ptr前进m项,且如果某一步分配指针alloc_ptr前进指向的项超过了N-1,那么对其进行N的取模;跳转执行步骤4.4);
4.3)将分配指针alloc_ptr保持不变,跳转执行步骤4.4);
4.4)指令进入发射队列,如果是分支指令,分配给该分支的寄存器映射表检查点的编号随同分支指令一起进入发射队列。
可选地,步骤6)的详细步骤包括:
6.1)指令执行完毕后,判断执行完毕的指令是否是分支指令,如果是则跳转执行步骤6.2);否则判断执行是否发生异常,如果没有发生异常则结束并退出,如果发生异常,则跳转执行步骤6.6);
6.2)判断分支预测是否正确,如果预测错误则跳转执行步骤6.3);否则跳转执行步骤6.4);
6.3)使用分支指令携带的检查点资源编号指向的检查点恢复寄存器映射表,然后跳转执行步骤6.4);
6.4)释放该分支指令占用的检查点资源,被释放的检查点资源的编号写入回收指针dealloc_ptr指向的项,同时回收指针dealloc_ptr前进n项,且如果某一步回收指针dealloc_ptr前进指向的项超过了N-1,那么对其进行N的取模,其中n为被释放的检查点资源的数量;
6.5)判断是否是预测正确的分支,如果是预测正确的分支,则不需要做进行其他处理,结束并退出;否则如果是预测错误的分支,除了回收其自身占用的检查点资源外,已经经历重命名阶段但是还没有执行的错误路径上的分支指令占用的检查点资源也需要被回收,跳转执行步骤6.6);
6.6)将前瞻分配指针spec_alloc_ptr回退到分配指针alloc_ptr以回收分派队列中的分支指令占用的检查点资源;
6.7)从发射队列清除分支指令时,释放分支指令占用的检查点资源,被释放的检查点资源的编号写入回收指针dealloc_ptr指向的项,同时回收指针dealloc_ptr进行相应的前进;结束并退出。
可选地,步骤6.7)中从发射队列清除分支指令具体是指一次清除一项或者一次清除多项,且一次清除一项则回收一个检查点资源,一次清除多项则回收多个检查点资源。
此外,本发明还提供一种寄存器映射表检查点资源的管理系统,包括:
列表初始化程序单元,用于初始化寄存器映射表检查点资源空闲列表chkpnt_freelist;
指针初始化程序单元,用于初始化前瞻分配指针spec_alloc_ptr、分配指针alloc_ptr和回收指针dealloc_ptr三个指针且均指向寄存器映射表检查点资源空闲列表chkpnt_freelist的第0项;
寄存器重命名执行程序单元,用于在寄存器重命名阶段,根据指令类型决定是否更新前瞻分配指针spec_alloc_ptr,仅针对分支指令读取前瞻分配指针spec_alloc_ptr指向的内容并分配给分支指令,并根据读取的项目更新前瞻分配指针spec_alloc_ptr的内容,且将分配给分支指令的寄存器映射表检查点的编号随同分支指令一起存入分派队列;
分派执行程序单元,用于在指令分派阶段,根据指令类型决定是否更新分配指针alloc_ptr,仅针对分派的分支指令将分配指针alloc_ptr前进,且将分配给分支指令的寄存器映射表检查点的编号随同分支指令一起存入发射队列;
发射执行程序单元,用于在分支指令被发射执行时,检查点资源编号随同分支指令一起沿着分支指令的执行流水线向后传递;
前瞻分配指针spec_alloc_ptr回退程序单元,用于在指令执行完毕后,当发生异常或分支误预测时,将前瞻分配指针spec_alloc_ptr回退到分配指针alloc_ptr来实现分派队列中的分支指令占用的检查点资源的回收。
此外,本发明还提供一种寄存器映射表检查点资源的管理系统,包括带有乱序超标量微处理器和存储器的计算机设备,该乱序超标量微处理器被编程或配置以执行所述寄存器映射表检查点资源的管理方法的步骤。
此外,本发明还提供一种寄存器映射表检查点资源的管理系统,包括带有乱序超标量微处理器和存储器的计算机设备,该存储器上存储有被编程或配置以执行所述寄存器映射表检查点资源的管理方法的计算机程序。
此外,本发明还提供一种计算机可读存储介质,该计算机可读存储介质上存储有被编程或配置以执行所述寄存器映射表检查点资源的管理方法的计算机程序。
和现有技术相比,本发明具有下述优点:
1、本发明能简化寄存器映射表检查点资源的管理。本发明中发生异常或分支误预测时,分派队列中的分支指令占用的检查点资源的回收非常简单,只需要回退前瞻分配指针spec_alloc_ptr指针即可,不需要发生将被分配出去的检查点资源编号写回到空闲列表的动作,使得需要向空闲列表写回检查点资源编号的回收点从三个变成了两个,简化了寄存器映射表检查点资源的管理。
2、本发明能降低寄存器映射表检查点资源管理的硬件开销。本发明中,虽然增加了一个寄存器映射表检查点资源空闲列表的分配指针alloc_ptr,但是不需要使用该指针作为索引读取空闲列表,只需要根据分派的分支指令数目更新该指针即可,需要的硬件开销很小。然而,需要向空闲列表写回检查点资源编号的回收点从三个减少到两个带来的硬件开销降低却比较明显。因此,本发明总体上降低了寄存器映射表检查点资源管理的硬件开销。
附图说明
图1为现有技术的通过寄存器重命名消除名相关的示意图。
图2为现有技术的乱序超标量微处理器的微体系结构示意图。
图3为本发明实施例方法的基本流程示意图。
图4为应用本发明实施例的chkpnt_freelist的初始状态。
图5为本发明实施例的详细步骤示意图。
图6为应用本发明实施例的寄存器重命名后chkpnt_freelist的状态实例。
图7为应用本发明实施例的指令分派后chkpnt_freelist的状态实例。
图8为应用本发明实施例的预测正确的分支指令执行完毕后chkpnt_freelist的状态实例。
图9为应用本发明实施例的预测错误的分支指令执行完毕后chkpnt_freelist的状态实例。
图10为应用本发明实施例的发生异常的指令执行完毕后chkpnt_freelist的状态实例。
具体实施方式
如图3所示,本实施例寄存器映射表检查点资源的管理方法的实施步骤包括:
1)初始化寄存器映射表检查点资源空闲列表chkpnt_freelist;
2)初始化前瞻分配指针spec_alloc_ptr、分配指针alloc_ptr和回收指针dealloc_ptr三个指针且均指向寄存器映射表检查点资源空闲列表chkpnt_freelist的第0项;初始时三个指针的状态如图4所示,都指向寄存器映射表检查点资源空闲列表chkpnt_freelist的第0项。
3)在寄存器重命名阶段,根据指令类型决定是否更新前瞻分配指针spec_alloc_ptr,仅针对分支指令读取前瞻分配指针spec_alloc_ptr指向的内容并分配给分支指令,并根据读取的项目更新前瞻分配指针spec_alloc_ptr的内容,且将分配给分支指令的寄存器映射表检查点的编号随同分支指令一起存入分派队列;
4)在指令分派阶段,根据指令类型决定是否更新分配指针alloc_ptr,仅针对分派的分支指令将分配指针alloc_ptr前进,且将分配给分支指令的寄存器映射表检查点的编号随同分支指令一起存入发射队列;
5)在分支指令被发射执行时,检查点资源编号随同分支指令一起沿着分支指令的执行流水线向后传递;
6)在指令执行完毕后,当发生异常或分支误预测时,将前瞻分配指针spec_alloc_ptr回退到分配指针alloc_ptr来实现分派队列中的分支指令占用的检查点资源的回收。
本实施例中,步骤1)中初始化寄存器映射表检查点资源空闲列表chkpnt_freelist时,寄存器映射表检查点资源空闲列表chkpnt_freelist共包括N项,每项只有一个字段,字段为对应检查点资源的编号,其中N为微处理器共设置的寄存器映射表检查点数量。假设微处理器共设置N个寄存器映射表检查点,那么chkpnt_freelist共有N项,如图4所示,每项只有一个字段,即检查点资源的编号。初始时,该列表中第n项的值为n,其中0≤n<N。
如图3和图5所示,所示本实施例步骤3)的详细步骤包括:
3.1)判断进行寄存器重命名的是否是分支指令,如果是则跳转执行步骤3.2);否则跳转执行步骤3.3);
3.2)确定当前进行寄存器重命名的分支指令数量m,分支指令数量m为大于等于1的整数,读出从前瞻分配指针spec_alloc_ptr在寄存器映射表检查点资源空闲列表chkpnt_freelist中指向的项开始的连续m项的内容,按序依次分配给正在进行重命名的分支指令,同时前瞻分配指针spec_alloc_ptr前进m项,且如果某一步前瞻分配指针spec_alloc_ptr前进指向的项超过了N-1,那么对其进行N的取模;跳转执行步骤3.4);
3.3)将前瞻分配指针spec_alloc_ptr保持不变,跳转执行步骤3.4);
3.4)指令进入分派队列,如果是分支指令,分配给该分支指令的寄存器映射表检查点的编号随同分支指令一起进入分派队列。
在寄存器重命名阶段,根据指令类型决定是否更新前瞻分配指针spec_alloc_ptr。如果是分支指令,那么将前瞻分配指针spec_alloc_ptr指向的项的内容读取出来,分配给正在进行重命名的分支指令,同时前瞻分配指针spec_alloc_ptr前进到下一项。如果当前前瞻分配指针spec_alloc_ptr指向的是第N-1项,那么将前进到第0项。如果有多条分支指令(假设为m条)正在经历寄存器重命名阶段,那么读出从前瞻分配指针spec_alloc_ptr指向的项开始的连续m项的内容,按序依次分配给正在进行重命名的分支指令,同时前瞻分配指针spec_alloc_ptr前进m项。在寄存器重命名阶段通过前瞻分配指针spec_alloc_ptr读取到的检查点资源的编号用来指示向哪一个检查点保存寄存器映射表信息,同时该编号也会跟随分支指令进入分派队列。如果不是分支指令,那么前瞻分配指针spec_alloc_ptr保持不变,指令直接进入分派队列。如图6所示,假设从初始状态开始,有3条分支指令经历了寄存器重命名阶段,这三条指令按序分别被分配了0号检查点、1号检查点和2号检查点,并且还没有分支指令被分派,那么分派队列将有3条有效的分支指令。寄存器映射表检查点资源空闲列表的前瞻分配指针spec_alloc_ptr将前进三项,指向第3项;因为还没有分支指令被分派和执行,所以分配指针alloc_ptr和回收指针dealloc_ptr保持不变。
如图3和图5所示,本实施例步骤4)的详细步骤包括:
4.1)判读正在分派的指令是否是分支指令,如果是则跳转执行步骤4.2);否则跳转执行步骤4.3);
4.2)确定当前进行分派的分支指令数量m,分支指令数量m为大于等于1的整数,将分配指针alloc_ptr前进m项,且如果某一步分配指针alloc_ptr前进指向的项超过了N-1,那么对其进行N的取模;跳转执行步骤4.4);
4.3)将分配指针alloc_ptr保持不变,跳转执行步骤4.4);
4.4)指令进入发射队列,如果是分支指令,分配给该分支的寄存器映射表检查点的编号随同分支指令一起进入发射队列。
在指令分派阶段,根据指令类型决定是否更新分配指针alloc_ptr。如果是分支指令,那么将分配指针alloc_ptr前进到下一项。如果当前分配指针alloc_ptr指向的是第N-1项,那么将前进到第0项。如果有多条分支指令(假设为m条)正在经历指令分派阶段,那么分配指针alloc_ptr前进m项。可见,经历寄存器重命名阶段进入分派队列的分支指令只是前瞻分配了检查点资源,只有当分支指令进入发射队列时,才会更新分配指针alloc_ptr,这时才为分支指令真正分配检查点资源。指令分派阶段只需要根据分派的分支指令数目更新分配指针alloc_ptr即可,不需要读取分配指针alloc_ptr指向的项的内容,这是因为寄存器重命名阶段分配给分支指令的检查点编号已经跟随分支指令进入了分派队列,而寄存器重命名和指令分派都是按照程序序顺序进行的,同一条分支指令在寄存器重命名阶段通过前瞻分配指针spec_alloc_ptr申请得到的检查点资源编号和在指令分派阶段通过分配指针alloc_ptr申请得到的检查点资源编号一定是相同的。指令分派时,分配给分支指令的检查点资源编号随同分支指令一起进入发射队列。如果不是分支指令,那么分配指针alloc_ptr保持不变,指令直接进入发射队列。如图7所示,假设又有两条分支指令进行了寄存器重命名进入分派队列,分支0和分支1从被分派出去进入发射队列,并且还没有分支指令被发射执行,那么分派队列中将有3条有效的分支指令,发射队列将有2条有效的分支指令。寄存器映射表检查点资源空闲列表的前瞻分配指针spec_alloc_ptr再前进两项,指向第5项;分配指针alloc_ptr前进两项,指向第2项,第0号检查点和第1号检查点被正式分配给分支指令;因为还没有分支指令被执行,所以回收指针dealloc_ptr保持不变。
如图3和图5所示,本实施例步骤6)的详细步骤包括:
6.1)指令执行完毕后,判断执行完毕的指令是否是分支指令,如果是则跳转执行步骤6.2);否则判断执行是否发生异常,如果没有发生异常则结束并退出,如果发生异常,则跳转执行步骤6.6);
6.2)判断分支预测是否正确,如果预测错误则跳转执行步骤6.3);否则跳转执行步骤6.4);
6.3)使用分支指令携带的检查点资源编号指向的检查点恢复寄存器映射表,然后跳转执行步骤6.4);
6.4)释放该分支指令占用的检查点资源,被释放的检查点资源的编号写入回收指针dealloc_ptr指向的项,同时回收指针dealloc_ptr前进n项,且如果某一步回收指针dealloc_ptr前进指向的项超过了N-1,那么对其进行N的取模,其中n为被释放的检查点资源的数量;释放检查点资源的数量n可以为1,即:被释放的检查点资源的编号写入回收指针dealloc_ptr指向的项,同时回收指针dealloc_ptr前进到下一项。如果微处理器实现了多条(假设为m条)分支执行流水线,那么使用发生预测错误的分支指令中最老的分支指令携带的检查点资源编号指向的检查点恢复寄存器映射表,然后释放m个检查点资源。被释放的m个检查点资源的编号写入从回收指针dealloc_ptr指向的项开始的m项,同时回收指针dealloc_ptr前进m项。同时释放的m个检查点资源可以以任意顺序被回收。如图8所示,假设后续暂时没有新的分支指令被重命名,所以前瞻分配指针spec_alloc_ptr保持不变。分支2被分派出去进入发射队列,分派队列中还有2条有效的分支指令,分配指针alloc_ptr前进一项,指向第3项。指令发射是乱序的,分支1被发射执行,发射队列还有2条有效的分支指令。假设分支1的预测结果正确,那么只需要回收分支1占用的检查点资源,所以检查点编号1写入回收指针ddealloc_ptr指向的第0项,之后回收指针ddealloc_ptr前进一项,指向第1项。
6.5)判断是否是预测正确的分支,如果是预测正确的分支,则不需要做进行其他处理,结束并退出;否则如果是预测错误的分支,除了回收其自身占用的检查点资源外,已经经历重命名阶段但是还没有执行的错误路径上的分支指令占用的检查点资源也需要被回收,跳转执行步骤6.6);
6.6)将前瞻分配指针spec_alloc_ptr回退到分配指针alloc_ptr以回收分派队列中的分支指令占用的检查点资源;
6.7)从发射队列清除分支指令时,释放分支指令占用的检查点资源,被释放的检查点资源的编号写入回收指针dealloc_ptr指向的项,同时回收指针dealloc_ptr进行相应的前进;结束并退出。本实施例中,步骤6.7)中从发射队列清除分支指令具体是指一次清除一项或者一次清除多项,且一次清除一项则回收一个检查点资源,一次清除多项则回收多个检查点资源。
指令执行完毕后,根据指令执行类型和指令情况决定如何恢复寄存器映射表以及如何回收检查点资源。如果是分支指令,那么有两种情况:如果分支预测正确,直接释放其占用的检查点资源;如果分支预测错误,那么使用分支指令携带的检查点资源编号指向的检查点恢复寄存器映射表,然后释放该分支指令占用的检查点资源。被释放的检查点资源的编号写入回收指针dealloc_ptr指向的项,同时回收指针dealloc_ptr前进到下一项。如果当前回收指针dealloc_ptr指向的是第N-1项,那么将前进到第0项。如果微处理器实现了多条(假设为m条)分支执行流水线,那么使用发生预测错误的分支指令中最老的分支指令携带的检查点资源编号指向的检查点恢复寄存器映射表,然后释放m个检查点资源。被释放的m个检查点资源的编号写入从回收指针dealloc_ptr指向的项开始的m项,同时回收指针dealloc_ptr前进m项。同时释放的m个检查点资源可以以任意顺序被回收。除了回收执行完毕的分支指令占用的检查点资源外,当发生分支误预测时,已经经历重命名阶段但是还没有执行的错误路径上的分支指令占用的检查点资源也需要被回收。这些分支指令可能位于分派队列中,也可能位于发射队列中。如果位于分派队列中,那么这些分支指令只是前瞻分配了检查点资源,它们还没有更新分配指针alloc_ptr,所以只需要将前瞻分配指针spec_alloc_ptr回退到回收指针alloc_ptr即可回收分派队列中的分支指令占用的检查点资源;如果位于发射队列中,那么从发射队列清除分支指令时,释放检查点资源,被释放的检查点资源的编号写入回收指针dealloc_ptr指向的项,同时回收指针dealloc_ptr进行相应的前进。从发射队列清除分支指令时,可以一次清除一项,也可以一次清除多项。如果一次清除多项,那么就要同时回收多个检查点资源。如果不是分支指令,那么也有两种情况:如果指令没有发生异常,不需要进行任何处理;如果指令发生了异常,需要回收经历了寄存器重命名阶段但是还没有被执行的分支指令占用的寄存器映射表检查点资源。同样的,如果分支指令位于分派队列中,只需要将前瞻分配指针spec_alloc_ptr回退到分配指针alloc_ptr即可回收这些分支指令占用的检查点资源;如果分支指令位于发射队列中,那么从发射队列清除分支指令时释放检查点资源,被释放的检查点资源的编号写入回收指针dealloc_ptr指向的项,同时回收指针dealloc_ptr进行相应的前进。如图9所示,假设执行完毕的分支1的预测结果是错误的,那么除了回收分支1占用的1号检查点外,还要回收已经经历重命名阶段但是还没有执行的错误路径上的分支指令占用的检查点资源,也就是分支2、分支3和分支4占用的检查点,分支0在程序序上位于分支1之前,分支1预测错误不影响分支0。直接将前瞻分配指针spec_alloc_ptr回退到分配指针alloc_ptr,使前瞻分配指针spec_alloc_ptr指向第3项,这样就回收了位于发射队列中的分支3和分支4占用的3号检查点和4号检查点,再有分支进入寄存器重命名阶段时,将从3号检查点开始分配。将分支2从发射队列清除时,分支2占用的发射队列项变成无效,同时分支2占用的2号检查点写入回收指针dealloc_ptr指向的第1项,之后回收指针dealloc_ptr前进一项,指向第2项。如图10所示,假设执行完毕的分支1的预测结果是正确的,1号检查点已经被回收写入寄存器映射表检查点资源空闲列表chkpnt_freelist,之后执行了一条程序序中位于分支指令0前的指令,该指令发生了异常,那么要回收已经经历重命名阶段但是还没有执行的分支指令占用的检查点资源,也就是分支0、分支2、分支3和分支4占用的检查点。同样的,直接将前瞻分配指针spec_alloc_ptr回退到分配指针alloc_ptr,使前瞻分配指针spec_alloc_ptr指向第3项。分支0和分支2都需要从发射队列中被清除,分支0和分支2占用的发射队列项变成无效,同时它们占用的0号检查点和2号检查点写入从dealloc_ptr指向的项开始的两项,即第1项和第2项,之后回收指针dealloc_ptr前进两项,指向第3项。
综上所述,本实施例寄存器映射表检查点资源的管理方法为寄存器映射表检查点资源空闲列表设置前瞻分配指针spec_alloc_ptr、分配指针alloc_ptr和回收指针dealloc_ptr三个指针,在分支指令经历寄存器重命名阶段进入分派队列时,只更新前瞻分配指针spec_alloc_ptr,只有当分支指令被分派进入发射队列时才更新分配指针alloc_ptr,这时才真正为分支指令分配检查点资源。当发生异常或分支误预测时,分派队列中的分支指令占用的检查点资源的回收非常简单,只需要回退前瞻分配指针spec_alloc_ptr即可,不需要发生将被分配出去的检查点资源编号写回到空闲列表的动作,使得需要向空闲列表写回检查点资源编号的回收点从三个变成了两个,简化了寄存器映射表检查点资源的管理,降低了硬件开销。
此外,本实施例还提供一种寄存器映射表检查点资源的管理系统,包括:
列表初始化程序单元,用于初始化寄存器映射表检查点资源空闲列表chkpnt_freelist;
指针初始化程序单元,用于初始化前瞻分配指针spec_alloc_ptr、分配指针alloc_ptr和回收指针dealloc_ptr三个指针且均指向寄存器映射表检查点资源空闲列表chkpnt_freelist的第0项;
寄存器重命名执行程序单元,用于在寄存器重命名阶段,根据指令类型决定是否更新前瞻分配指针spec_alloc_ptr,仅针对分支指令读取前瞻分配指针spec_alloc_ptr指向的内容并分配给分支指令,并根据读取的项目更新前瞻分配指针spec_alloc_ptr的内容,且将分配给分支指令的寄存器映射表检查点的编号随同分支指令一起存入分派队列;
分派执行程序单元,用于在指令分派阶段,根据指令类型决定是否更新分配指针alloc_ptr,仅针对分派的分支指令将分配指针alloc_ptr前进,且将分配给分支指令的寄存器映射表检查点的编号随同分支指令一起存入发射队列;
发射执行程序单元,用于在分支指令被发射执行时,检查点资源编号随同分支指令一起沿着分支指令的执行流水线向后传递;
前瞻分配指针spec_alloc_ptr回退程序单元,用于在指令执行完毕后,当发生异常或分支误预测时,将前瞻分配指针spec_alloc_ptr回退到分配指针alloc_ptr来实现分派队列中的分支指令占用的检查点资源的回收。
此外,本实施例还提供一种寄存器映射表检查点资源的管理系统,包括带有乱序超标量微处理器和存储器的计算机设备,该乱序超标量微处理器被编程或配置以执行本实施例前述寄存器映射表检查点资源的管理方法的步骤。
此外,本实施例还提供一种寄存器映射表检查点资源的管理系统,包括带有乱序超标量微处理器和存储器的计算机设备,该存储器上存储有被编程或配置以执行本实施例前述寄存器映射表检查点资源的管理方法的计算机程序。
此外,本实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有被编程或配置以执行本实施例前述寄存器映射表检查点资源的管理方法的计算机程序。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (9)
1.一种寄存器映射表检查点资源的管理方法,其特征在于实施步骤包括:
1)初始化寄存器映射表检查点资源空闲列表chkpnt_freelist;
2)初始化前瞻分配指针spec_alloc_ptr、分配指针alloc_ptr和回收指针dealloc_ptr三个指针且均指向寄存器映射表检查点资源空闲列表chkpnt_freelist的第0项;
3)在寄存器重命名阶段,根据指令类型决定是否更新前瞻分配指针spec_alloc_ptr,仅针对分支指令读取前瞻分配指针spec_alloc_ptr指向的内容并分配给分支指令,并根据读取的项目更新前瞻分配指针spec_alloc_ptr的内容,且将分配给分支指令的寄存器映射表检查点的编号随同分支指令一起存入分派队列;
4)在指令分派阶段,根据指令类型决定是否更新分配指针alloc_ptr,仅针对分派的分支指令将分配指针alloc_ptr前进,且将分配给分支指令的寄存器映射表检查点的编号随同分支指令一起存入发射队列;
5)在分支指令被发射执行时,检查点资源编号随同分支指令一起沿着分支指令的执行流水线向后传递;
6)在指令执行完毕后,当发生异常或分支误预测时,将前瞻分配指针spec_alloc_ptr回退到分配指针alloc_ptr来实现分派队列中的分支指令占用的检查点资源的回收;
步骤3)的详细步骤包括:
3.1)判断进行寄存器重命名的是否是分支指令,如果是则跳转执行步骤3.2);否则跳转执行步骤3.3);
3.2)确定当前进行寄存器重命名的分支指令数量m,分支指令数量m为大于等于1的整数,读出从前瞻分配指针spec_alloc_ptr在寄存器映射表检查点资源空闲列表chkpnt_freelist中指向的项开始的连续m项的内容,按序依次分配给正在进行重命名的分支指令,同时前瞻分配指针spec_alloc_ptr前进m项,且如果某一步前瞻分配指针spec_alloc_ptr前进指向的项超过了N-1,那么对其进行N的取模;跳转执行步骤3.4);
3.3)将前瞻分配指针spec_alloc_ptr保持不变,跳转执行步骤3.4);
3.4)指令进入分派队列,如果是分支指令,分配给该分支指令的寄存器映射表检查点的编号随同分支指令一起进入分派队列。
2.根据权利要求1所述的寄存器映射表检查点资源的管理方法,其特征在于,步骤1)中初始化寄存器映射表检查点资源空闲列表chkpnt_freelist时,寄存器映射表检查点资源空闲列表chkpnt_freelist共包括N项,每项只有一个字段,字段为对应检查点资源的编号,其中N为微处理器共设置的寄存器映射表检查点数量。
3.根据权利要求1所述的寄存器映射表检查点资源的管理方法,其特征在于,步骤4)的详细步骤包括:
4.1)判读正在分派的指令是否是分支指令,如果是则跳转执行步骤4.2);否则跳转执行步骤4.3);
4.2)确定当前进行分派的分支指令数量m,分支指令数量m为大于等于1的整数,将分配指针alloc_ptr前进m项,且如果某一步分配指针alloc_ptr前进指向的项超过了N-1,那么对其进行N的取模;跳转执行步骤4.4);
4.3)将分配指针alloc_ptr保持不变,跳转执行步骤4.4);
4.4)指令进入发射队列,如果是分支指令,分配给该分支的寄存器映射表检查点的编号随同分支指令一起进入发射队列。
4.根据权利要求1所述的寄存器映射表检查点资源的管理方法,其特征在于,步骤6)的详细步骤包括:
6.1)指令执行完毕后,判断执行完毕的指令是否是分支指令,如果是则跳转执行步骤6.2);否则判断执行是否发生异常,如果没有发生异常则结束并退出,如果发生异常,则跳转执行步骤6.6);
6.2)判断分支预测是否正确,如果预测错误则跳转执行步骤6.3);否则跳转执行步骤6.4);
6.3)使用分支指令携带的检查点资源编号指向的检查点恢复寄存器映射表,然后跳转执行步骤6.4);
6.4)释放该分支指令占用的检查点资源,被释放的检查点资源的编号写入回收指针dealloc_ptr指向的项,同时回收指针dealloc_ptr前进n项,且如果某一步回收指针dealloc_ptr前进指向的项超过了N-1,那么对其进行N的取模,其中n为被释放的检查点资源的数量;
6.5)判断是否是预测正确的分支,如果是预测正确的分支,则不需要做进行其他处理,结束并退出;否则如果是预测错误的分支,除了回收其自身占用的检查点资源外,已经经历重命名阶段但是还没有执行的错误路径上的分支指令占用的检查点资源也需要被回收,跳转执行步骤6.6);
6.6)将前瞻分配指针spec_alloc_ptr回退到分配指针alloc_ptr以回收分派队列中的分支指令占用的检查点资源;
6.7)从发射队列清除分支指令时,释放分支指令占用的检查点资源,被释放的检查点资源的编号写入回收指针dealloc_ptr指向的项,同时回收指针dealloc_ptr进行相应的前进;结束并退出。
5.根据权利要求4所述的寄存器映射表检查点资源的管理方法,其特征在于,步骤6.7)中从发射队列清除分支指令具体是指一次清除一项或者一次清除多项,且一次清除一项则回收一个检查点资源,一次清除多项则回收多个检查点资源。
6.一种寄存器映射表检查点资源的管理系统,其特征在于包括:
列表初始化程序单元,用于初始化寄存器映射表检查点资源空闲列表chkpnt_freelist;
指针初始化程序单元,用于初始化前瞻分配指针spec_alloc_ptr、分配指针alloc_ptr和回收指针dealloc_ptr三个指针且均指向寄存器映射表检查点资源空闲列表chkpnt_freelist的第0项;
寄存器重命名执行程序单元,用于在寄存器重命名阶段,根据指令类型决定是否更新前瞻分配指针spec_alloc_ptr,仅针对分支指令读取前瞻分配指针spec_alloc_ptr指向的内容并分配给分支指令,并根据读取的项目更新前瞻分配指针spec_alloc_ptr的内容,且将分配给分支指令的寄存器映射表检查点的编号随同分支指令一起存入分派队列;
分派执行程序单元,用于在指令分派阶段,根据指令类型决定是否更新分配指针alloc_ptr,仅针对分派的分支指令将分配指针alloc_ptr前进,且将分配给分支指令的寄存器映射表检查点的编号随同分支指令一起存入发射队列;
发射执行程序单元,用于在分支指令被发射执行时,检查点资源编号随同分支指令一起沿着分支指令的执行流水线向后传递;
前瞻分配指针spec_alloc_ptr回退程序单元,用于在指令执行完毕后,当发生异常或分支误预测时,将前瞻分配指针spec_alloc_ptr回退到分配指针alloc_ptr来实现分派队列中的分支指令占用的检查点资源的回收;
所述寄存器重命名执行程序单元的详细步骤包括:3.1)判断进行寄存器重命名的是否是分支指令,如果是则跳转执行步骤3.2);否则跳转执行步骤3.3);3.2)确定当前进行寄存器重命名的分支指令数量m,分支指令数量m为大于等于1的整数,读出从前瞻分配指针spec_alloc_ptr在寄存器映射表检查点资源空闲列表chkpnt_freelist中指向的项开始的连续m项的内容,按序依次分配给正在进行重命名的分支指令,同时前瞻分配指针spec_alloc_ptr前进m项,且如果某一步前瞻分配指针spec_alloc_ptr前进指向的项超过了N-1,那么对其进行N的取模;跳转执行步骤3.4);3.3)将前瞻分配指针spec_alloc_ptr保持不变,跳转执行步骤3.4);3.4)指令进入分派队列,如果是分支指令,分配给该分支指令的寄存器映射表检查点的编号随同分支指令一起进入分派队列。
7.一种寄存器映射表检查点资源的管理系统,包括带有乱序超标量微处理器和存储器的计算机设备,其特征在于,该乱序超标量微处理器被编程或配置以执行权利要求1~5中任意一项所述寄存器映射表检查点资源的管理方法的步骤。
8.一种寄存器映射表检查点资源的管理系统,包括带有乱序超标量微处理器和存储器的计算机设备,其特征在于,该存储器上存储有被编程或配置以执行权利要求1~5中任意一项所述寄存器映射表检查点资源的管理方法的计算机程序。
9.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有被编程或配置以执行权利要求1~5中任意一项所述寄存器映射表检查点资源的管理方法的计算机程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910849406.XA CN110597556B (zh) | 2019-09-09 | 2019-09-09 | 一种寄存器映射表检查点资源的管理方法、系统及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910849406.XA CN110597556B (zh) | 2019-09-09 | 2019-09-09 | 一种寄存器映射表检查点资源的管理方法、系统及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110597556A CN110597556A (zh) | 2019-12-20 |
CN110597556B true CN110597556B (zh) | 2021-08-13 |
Family
ID=68858317
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910849406.XA Active CN110597556B (zh) | 2019-09-09 | 2019-09-09 | 一种寄存器映射表检查点资源的管理方法、系统及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110597556B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111984326B (zh) * | 2020-07-02 | 2023-12-19 | 江苏华创微系统有限公司 | 混合式寄存器别名表恢复系统和方法 |
CN112181497B (zh) * | 2020-09-28 | 2022-07-19 | 中国人民解放军国防科技大学 | 一种分支目标预测地址在流水线中的传递方法和装置 |
CN112181494B (zh) * | 2020-09-28 | 2022-07-19 | 中国人民解放军国防科技大学 | 一种浮点物理寄存器文件的实现方法 |
CN113590197B (zh) * | 2021-07-30 | 2023-09-26 | 中国人民解放军国防科技大学 | 一种支持可变长向量处理的可配置处理器及其实现方法 |
CN114356420B (zh) * | 2021-12-28 | 2023-02-17 | 海光信息技术股份有限公司 | 指令流水线的处理方法及装置、电子装置及存储介质 |
CN116700792B (zh) * | 2023-06-09 | 2024-03-08 | 合芯科技有限公司 | 一种指令流寄存器的映射方法、结构、存储介质及芯片 |
CN117472445B (zh) * | 2023-12-26 | 2024-04-23 | 睿思芯科(深圳)技术有限公司 | 基于发射缓冲的超标量处理系统、方法及相关设备 |
CN117472447B (zh) * | 2023-12-28 | 2024-03-12 | 北京微核芯科技有限公司 | 寄存器重命名恢复方法、装置和设备 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6633970B1 (en) * | 1999-12-28 | 2003-10-14 | Intel Corporation | Processor with registers storing committed/speculative data and a RAT state history recovery mechanism with retire pointer |
US9940138B2 (en) * | 2009-04-08 | 2018-04-10 | Intel Corporation | Utilization of register checkpointing mechanism with pointer swapping to resolve multithreading mis-speculations |
CN102073533B (zh) * | 2011-01-14 | 2013-06-19 | 中国人民解放军国防科学技术大学 | 支持动态二进制翻译的多核体系结构 |
US9875105B2 (en) * | 2012-05-03 | 2018-01-23 | Nvidia Corporation | Checkpointed buffer for re-entry from runahead |
GB2525314B (en) * | 2014-01-17 | 2016-02-24 | Imagination Tech Ltd | Stack pointer value prediction |
US10108417B2 (en) * | 2015-08-14 | 2018-10-23 | Qualcomm Incorporated | Storing narrow produced values for instruction operands directly in a register map in an out-of-order processor |
CN105528195B (zh) * | 2015-12-03 | 2017-12-15 | 上海高性能集成电路设计中心 | 一种支持同时多线程指令乱序发射的飞行记分牌处理方法 |
CN106293642B (zh) * | 2016-08-08 | 2018-10-02 | 合肥工业大学 | 一种用于粗粒度多核计算系统的分支处理模块及其分支处理机制 |
CN107688544B (zh) * | 2016-12-23 | 2020-02-11 | 北京国睿中数科技股份有限公司 | 一种对寄存器别名表恢复方法 |
US11055096B2 (en) * | 2018-01-05 | 2021-07-06 | Arm Limited | Checkpointing of architectural state for in order processing circuitry |
CN108845830B (zh) * | 2018-07-03 | 2021-12-03 | 中国人民解放军国防科技大学 | 一种一对数装载指令的执行方法 |
-
2019
- 2019-09-09 CN CN201910849406.XA patent/CN110597556B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110597556A (zh) | 2019-12-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110597556B (zh) | 一种寄存器映射表检查点资源的管理方法、系统及介质 | |
CN106990941B (zh) | 使用寄存器重命名处理移动指令 | |
US7496733B2 (en) | System and method of execution of register pointer instructions ahead of instruction issues | |
JP3781052B2 (ja) | スーパースケーラマイクロプロセサ | |
US5887161A (en) | Issuing instructions in a processor supporting out-of-order execution | |
US7568088B1 (en) | Flag management in processors enabled for speculative execution of micro-operation traces | |
US5913048A (en) | Dispatching instructions in a processor supporting out-of-order execution | |
JP3754439B2 (ja) | 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法 | |
US20110238962A1 (en) | Register Checkpointing for Speculative Modes of Execution in Out-of-Order Processors | |
US20060112261A1 (en) | Method and apparatus for incremental commitment to architectural state in a microprocessor | |
US7660971B2 (en) | Method and system for dependency tracking and flush recovery for an out-of-order microprocessor | |
US7155599B2 (en) | Method and apparatus for a register renaming structure | |
US9182986B2 (en) | Copy-on-write buffer for restoring program code from a speculative region to a non-speculative region | |
US20170109166A1 (en) | Method and apparatus for recovery in a microprocessor having a multi-execution slice architecture | |
US10977038B2 (en) | Checkpointing speculative register mappings | |
KR20030019451A (ko) | 추측실행의 비순차적 프로세서에서 정확한 예외를전송하는 메카니즘 | |
US9535744B2 (en) | Method and apparatus for continued retirement during commit of a speculative region of code | |
US10545765B2 (en) | Multi-level history buffer for transaction memory in a microprocessor | |
US7200742B2 (en) | System and method for creating precise exceptions | |
US6898696B1 (en) | Method and system for efficiently restoring a processor's execution state following an interrupt caused by an interruptible instruction | |
US7716457B2 (en) | Method and apparatus for counting instructions during speculative execution | |
US10255071B2 (en) | Method and apparatus for managing a speculative transaction in a processing unit | |
CN110647361B (zh) | 一种空闲物理寄存器的获取方法和装置 | |
CN117806706A (zh) | 存储顺序违例处理方法、装置、电子设备及介质 | |
Omondi et al. | Interrupts and Branch Mispredictions |
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 |