CN101290567B - 通用寄存器重命名方法和具有通用寄存器重命名的微处理器 - Google Patents
通用寄存器重命名方法和具有通用寄存器重命名的微处理器 Download PDFInfo
- Publication number
- CN101290567B CN101290567B CN2008100926391A CN200810092639A CN101290567B CN 101290567 B CN101290567 B CN 101290567B CN 2008100926391 A CN2008100926391 A CN 2008100926391A CN 200810092639 A CN200810092639 A CN 200810092639A CN 101290567 B CN101290567 B CN 101290567B
- Authority
- CN
- China
- Prior art keywords
- destination
- instruction
- rename
- register
- label
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 62
- 230000007246 mechanism Effects 0.000 claims abstract description 58
- 230000008878 coupling Effects 0.000 claims description 16
- 238000010168 coupling process Methods 0.000 claims description 16
- 238000005859 coupling reaction Methods 0.000 claims description 16
- 244000188472 Ilex paraguariensis Species 0.000 claims description 14
- 238000011084 recovery Methods 0.000 claims description 12
- 239000013598 vector Substances 0.000 abstract description 15
- 238000007667 floating Methods 0.000 abstract description 8
- 229910052710 silicon Inorganic materials 0.000 abstract description 5
- 239000010703 silicon Substances 0.000 abstract description 5
- 238000010586 diagram Methods 0.000 description 23
- 230000008569 process Effects 0.000 description 22
- 238000012545 processing Methods 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 4
- 239000000126 substance Substances 0.000 description 4
- 230000003213 activating effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000005055 memory storage Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 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/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
-
- 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
-
- 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
-
- 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/3861—Recovery, e.g. branch miss-prediction, exception handling
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
在微处理器中提供了一种用于不同指令类型目标的统一的寄存器重命名机制。通用重命名机制使用单重命名结构对不同指令类型的目的地进行重命名。因此,可以利用相同重命名结构将正在更新浮点寄存器(FPR)的指令与正在更新通用寄存器(GPR)或矢量多媒体扩展(VMX)指令寄存器(VR)的指令一起重命名,因为用于GPR的架构化状态的数量与用于FPR和VR的架构化状态的数量相同。每个目的地标签(DTAG)被分配给一个目的地。浮点指令可以被分配给DTAG,然后定点指令可以被分配给下一个DTAG,依此类推。使用通用重命名机制,由于对于所有指令类型只有一个重命名结构,从而可以显著地节省硅和功耗。
Description
技术领域
本申请一般涉及改进的数据处理系统和方法。更具体而言,本申请涉及用于微处理器中不同指令类型的目标的通用寄存器重命名机制。
背景技术
寄存器重命名是微处理器设计中用于通过允许指令无序执行来提高性能的一种公知技术。程序由对数值进行运算的指令组成。指令必须对这些数值进行命名,以便将它们互相区分。一个典型的指令例如可以是:将X和Y相加,并将结果放到Z中。在该指令中,X、Y和Z是存储位置的名字。为了具有紧凑的指令编码,大多数处理器指令集具有很小一组特定位置能够被直接命名。在更小的处理器中,这些位置的名字直接对应于寄存器文件的元素。
不同指令花费不同时间量。例如,在从主存储器的单个加载进行期间,处理器可能能够执行数百条指令。在该加载未完成期间执行的较短指令将首先结束;因此,这些指令不按照原始程序顺序结束。无序执行已经被用在最近的高性能CPU中,以便实现其速度增益中的一部分。
考虑在无序CPU上运行的这段代码:
1、Load register 1 from memory location 1024(从存储器位置1024加载寄存器1)
2、Add the number 2 to register 1(将数字2加到寄存器1)
3、Store register 1 to memory location 1032(存储寄存器1到存储器位置1032)
4、Load register 1 from memory location 2048(从存储器位置2048加载寄存器1)
5、Add the number 4 to register 1(将数字4加到寄存器1)
6、Store register 1 to memory location 2056(存储寄存器1到存储器位置2056)
指令4、5和6独立于指令1、2和3,但是处理器在3结束之前不能完成4,因为那样3会写错误的值。
寄存器重命名可以通过改变一些寄存器的名字来消除该限制:
1、Load register 1 from memory location 1024(从存储器位置1024加载寄存器1)
2、Add the number 2 to register 1(将数字2加到寄存器1)
3、Store register 1 to memory location 1032(存储寄存器1到存储器位置1032)
4、Load register 2 from memory location 2048(从存储器位置2048加载寄存器2)
5、Add the number 4 to register 2(将数字4加到寄存器2)
6、Store register 2 to memory location 2056(存储寄存器2到存储器位置2056)
现在指令4、5和6可以与指令1、2和3并行地执行,从而程序可以更快地执行。
在可能时,编译器执行该重命名。编译器在许多方面被约束,主要被指令集中有限数量的寄存器名字所约束。很多高性能微处理器重命名硬件中的寄存器,以得到附加的并行性。
通常,对微处理器中每个目的地类型需要不同的重命名结构。例如,通用寄存器(GPR)定点目的地将需要不同于浮点寄存器(FPR)目的地的重命名结构。所有这些重命名结构和逻辑通常非常复杂并且在功率和硅方面的花费很大。
发明内容
这里描述的示例性实施例认识到现有技术的缺点,并提供了一种用于微处理器中不同指令类型的目标的统一的寄存器重命名机制。通用重命名机制使用单重命名结构来对不同指令类型的目的地进行重命名。因此,可以利用相同的重命名结构将正在更新浮点寄存器(FPR)的指令与正在更新通用寄存器(GPR)或矢量多媒体扩展(VMX:vector multimedia extensions)指令寄存器(VR)的指令一起重命名,因为用于GPR的架构化状态(architected state)的数量与用于FPR和VR的架构化状态的数量相同。每个目的地标签(DTAG)被分配给一个目的地。浮点指令可以被分配给DTAG,然后定点指令可以被分配给下一个DTAG,依此类推。使用通用重命名机制,由于对于所有指令类型仅具有一个重命名结构,因此可以显著地节省硅和功耗。
在一个示例性实施例中,一种通用寄存器重命名方法包括:为微处理器中正在被发布的指令分配目的地标签,在微处理器中重命名级中在逻辑寄存器数组中为该指令设置目的地类型,以及如果该指令的结果被写到对应于该目的地类型的重命名缓冲器,则在该逻辑寄存器数组中声明(assert)重命名缓冲器比特。
在一个示例性实施例中,该方法还包括:确定该指令是否访问与先前指令匹配的目标寄存器,并且如果该指令访问与先前指令匹配的寄存器,则将用于该先前指令的目的地标签写入复原链路数组中的复原链路条目中。在另一示例性实施例中,该方法还包括在复原链路数组中维持条目的有效性。在再一示例性实施例中,该方法还包括为指令声明最新指令比特,以指示该指令是访问目标寄存器的最新指令。在还一示例性实施例中,该方法还包括为先前指令解除声明(de-assert)最新指令比特。
在另一示例性实施例中,该方法还包括在发布队列中,确定发布指令是否依赖于更新的指令。该方法还包括,如果该发布指令不依赖于更新的指令,则为该发布指令声明该发布队列中的架构化寄存器比特,而如果该发布指令依赖于更新的指令,则为该发布指令解除声明该发布队列中的架构化寄存器比特。
在再一示例性实施例中,该方法还包括:对于具有声明的重命名缓冲器比特的发布指令,发送用于该发布指令的架构化寄存器比特、源目的地标签、目的地标签、一个或多个分发源寄存器地址(dispatching source register address)和逻辑寄存器目标到相应的执行单元。
在还一示例性实施例中,该方法还包括,如果用于该发布指令的架构化寄存器比特被声明,则通过使用该一个或多个分发源寄存器地址作为读地址,从对应于该发布指令的目的地类型的架构化寄存器读取一个或多个操作数。该方法还包括,如果用于该发布指令的架构化寄存器比特被解除声明,则通过使用该源目的地标签作为读地址,从对应于该发布指令的目的地类型的重命名缓冲器读取一个或多个操作数。
在再一示例性实施例中,该方法还包括,在执行指令的执行时,比较要被写的操作数的执行目的地标签与该发布指令的源目的地标签,并且如果要被写的操作数的执行目的地标签与该发布指令的源目的地标签匹配,则为该发布指令声明发布队列中的重命名缓冲器比特。在另一示例性实施例中,该方法还包括,在重命名级,声明逻辑寄存器数组中由该执行目的地标签所指向的位置处的重命名缓冲器比特。
在另一示例性实施例中,该方法还包括,通过使用该执行目的地标签作为写地址,将执行结果写到与该执行指令的目的地类型相对应的重命名缓冲器中。在再一示例性实施例中,该方法还包括:在完成时,将用于完成指令的完成目的地标签发送到发布队列和重命名级。在另一示例性实施例中,该方法还包括:在发布队列处,比较发布指令的源目的地标签与完成目的地标签,并且如果源目的地标签与完成目的地标签匹配,则声明发布队列中与源目的地标签相对应的架构化寄存器比特。在还一示例性实施例中,该方法还包括:在重命名级,在完成目的地标签指向的位置处设置最新指令比特。
在再一示例性实施例中,该方法还包括:使用完成目的地标签来从逻辑寄存器数组读出完成寄存器目标字段和目的地类型比特、使用完成目的地标签来从与完成指令的目的地类型相对应的重命名缓冲器中读出结果、和将结果写到与完成指令的目的地类型相对应的架构化寄存器。
在另一示例性实施例中,该方法还包括:对完成目的地标签解除分配,以由新的分发指令使用。在再一示例性实施例中,该方法还包括:发送最老的刷新目的地标签(flush destination tage)到重命名级,以将最新的指令比特恢复到合适的状态,并清除重命名级中与最老的刷新目的地标签相等或比其更新的任何目的地标签。
在再一示例性实施例中,一种具有通用寄存器重命名的微处理器,包括:发布队列、重命名机制、多个执行单元和完成逻辑。发布队列发布指令给这多个执行单元。这多个执行单元发送用于执行指令的信息到发布队列和重命名机制。完成逻辑发送用于被完成指令的信息到发布队列和重命名机制。重命名机制为正在微处理器中被发布的指令分配目的地标签、在逻辑寄存器数组中为该指令设置目的地类型、并且如果该指令的结果被写到对应于该目的地类型的重命名缓冲器中,则在逻辑寄存器数组中声明重命名缓冲器比特。
在一个示例性实施例中,重命名机制确定指令是否访问与先前指令匹配的目标寄存器,并且如果指令访问与先前指令匹配的寄存器,则将用于该先前指令的目的地标签写入复原链路数组中的复原链路条目中。在另一示例性实施例中,重命名机制在复原链路数组中维持条目的有效性。在再一示例性实施例中,重命名机制为该指令声明最新指令比特,以指示该指令是访问该目标寄存器的最新指令。在还一示例性实施例中,重命名机制为该先前指令解除声明最新指令比特。
在另一示例性实施例中,发布队列确定发布指令是否依赖于更新的指令。如果发布指令不依赖于更新的指令,则为该发布指令声明该发布队列中的架构化寄存器比特。如果该发布指令依赖于更新的指令,则为该发布指令解除声明该发布队列中的该架构化寄存器比特。
在再一示例性实施例中,对于具有声明的重命名缓冲器比特的发布指令,发布队列发送用于该发布指令的架构化寄存器比特、源目的地标签、目的地标签、一个或多个分发源寄存器地址和逻辑寄存器目标到这多个执行单元中的相应执行单元。
在另一示例性实施例中,如果用于该发布指令的架构化寄存器比特被声明,则执行单元通过使用该一个或多个分发源寄存器地址作为读地址而从与该发布指令的目的地类型相对应的架构化寄存器中读取一个或多个操作数。如果用于该发布指令的架构化寄存器比特被解除声明,则执行单元通过使用源目的地标签作为读地址而从与该发布指令的目的地类型相对应的重命名缓冲器中读取一个或多个操作数。
在再一示例性实施例中,在执行指令的执行时,发布队列比较要被写的操作数的执行目的地标签与发布指令的源目的地标签,并且如果要被写的操作数的执行目的地标签与该发布指令的源目的地标签匹配,则为该发布指令声明发布队列中的重命名缓冲器比特。
在还一示例性实施例中,重命名机制声明该逻辑寄存器数组中由执行目的地标签所指向的位置处的重命名缓冲器比特。
在一个示例性实施例中,执行单元通过使用执行目的地标签作为写地址而将执行结果写入与执行指令的目的地类型相对应的重命名缓冲器中。在另一示例性实施例中,在完成时,完成逻辑将用于完成指令的完成目的地标签发送到发布队列和重命名机制。在再一示例性实施例中,发布队列比较发布指令的源目的地标签和完成目的地标签,并且如果源目的地标签与完成目的地标签匹配,则声明发布队列中对应于该源目的地标签的架构化寄存器比特。
在另一示例性实施例中,重命名机制在完成目的地标签所指向的位置处设置最新指令比特。
在再一示例性实施例中,重命名机制使用完成目的地标签来从逻辑寄存器数组中读出完成寄存器目标字段和目的地类型比特,使用完成目的地标签来从与完成指令的目的地类型相对应的重命名缓冲器中读出结果,并将结果写到与完成指令的目的地类型相对应的架构化寄存器。在还一示例性实施例中,重命名机制解除分配完成目的地标签,以由新的分发指令使用。
在再一示例性实施例中,完成逻辑发送最老的刷新目的地标签到重命名机制,以将最新指令比特恢复到合适的状态。重命名机制清除重命名机制中与最老的刷新目的地标签相等或比其更新的任何目的地标签。
本发明的这些和其他特征和优点将在以下对本发明示例性实施例的详细描述中被描述,或本领域技术人员借助于以下对本发明示例性实施例的详细描述将容易了解本发明的这些和其他特征和优点。
附图说明
结合附图通过参考以下对示例性实施例的详细描述将更好地理解本发明及其优选使用模式和其他目的和优点,其中:
图1是其中可以根据示例性实施例实施本发明的数据处理系统的图示;
图2是其中可以实施示例性实施例各方面的示例性数据处理系统的框图;
图3的框图示出了具有根据一个示例性实施例的通用寄存器重命名机制的微处理器的各部分;
图4显示了根据一个示例性实施例的寄存器重命名机制的数据流;
图5的流程图显示了根据一个示例性实施例的具有通用重命名机制的微处理器在分发时的操作;
图6A和6B的流程图显示了根据一个示例性实施例的具有通用重命名缓冲器的微处理器的发布队列的操作;
图7的流程图显示了根据一个示例性实施例的具有通用重命名机制的微处理器在执行/写回时的操作;
图8A和8B的流程图显示了根据一个示例性实施例的具有通用重命名机制的微处理器在完成时的操作;
图9的流程图显示了根据一个示例性实施例的具有通用重命名机制的微处理器在刷新时的操作;
图10的流程图显示了根据一个示例性实施例的恢复功能的操作。
具体实施方式
现在参考附图,尤其参考图1-2,提供其中可以实施本发明的示例性实施例的数据处理环境的示例性图解。应当理解,图1-2仅仅是示例性的,而并不是要声明或暗示对于其中可以实施本发明各方面或实施例的环境的任何限制。可以对所示环境进行许多修改,而不背离本发明的精神和范围。
现在参考附图1,根据示例性实施例显示了其中可以实施本发明的数据处理系统的图示。所示的计算机100包括系统单元102、视频显示终端104、键盘106、存储装置108和鼠标110,其中存储装置108可以包括软盘驱动器和其他类型的永久的和可移动的存储介质。附加的输入装置可以被包括在个人计算机100中,例如操纵杆、触摸板、触摸屏、跟踪球、麦克风等等。计算机100可以使用任何合适的计算机来实施,诸如位于Armonk,New York的国际商业机器公司的产品IBM eServer计算机或IntelliStation计算机。虽然所示出的表示显示的是个人计算机,但是本发明的其他实施例可以在其他类型的数据处理系统中实施,诸如网络计算机。计算机100优选地还包括图形用户接口(GUI),其可以借助于驻留在工作于计算机100中的计算机可读介质中的系统软件来实施。
现在参考图2,显示了其中可以实施示例性实施例各方面的数据处理系统的框图。数据处理系统200是本发明的说明性实施例的示例性方面可以位于其中的计算机、诸如图1中计算机100的一个例子。
在所示例子中,数据处理系统200使用包括北桥和存储器控制中心(NB/MCH)202以及南桥和输入/输出(I/O)控制中心(SB/ICH)204的集线架构(hub architecture)。处理单元206、主存储器208、和图形处理器210被连接到NB/MCH 202。图形处理器210可以通过加速图形端口(AGP)被连接到NB/MCH 202。
在所描绘的例子中,局域网(LAN)适配器212连接到SB/ICH204。音频适配器216、键盘和鼠标适配器220、调制解调器222、只读存储器(ROM)224、硬盘驱动器(HDD)226、CD-ROM驱动器230、通用串行总线(USB)端口和其他通信端口232、和PCI/PCIe设备234通过总线238和总线240连接到SB/ICH 204。PCI/PCIe设备例如可以包括以太网适配器、附加卡(add-in card)、和用于笔记本计算机的PC卡。PCI使用插件总线控制器(card bus controller),而PCIe不使用插件总线控制器。ROM 224例如可以是闪存(flash)二进制输入/输出系统(BIOS:binary input/output system)。
HDD 226和CD-ROM驱动器230通过总线240连接到SB/ICH204。HDD 226和CD-ROM驱动器230例如可以使用集成驱动器件电子技术(IDE)或串行高级技术连接(SATA)接口。超级I/O(SIO)设备236可以连接到SB/ICH 204。
操作系统运行在处理单元206上。操作系统协调和控制图2中数据处理系统200内的各组件。在客户端,操作系统可以是商用操作系统,诸如(Microsoft和Windows是微软公司在美国、其他国家或二者的商标)。面向对象的编程系统、诸如JavaTM编程系统可以与操作系统结合运行,并提供从在数据处理系统200上执行的JavaTM程序或应用程序对操作系统的调用(Java是SunMicrosystems公司在美国、其他国家或二者的商标)。
在服务器,数据处理系统200例如可以是运行高级交互执行体操作系统或操作系统的计算机系统(eServer、pSeries和AIX是国际商业机器公司在美国、其他国家或两者的商标,而LINUX是Linus Torvalds在美国、其他国家或两者的商标)。数据处理系统200可以是在处理单元206中包括多个处理器的对称多处理器(SMP)系统。替换地,可以使用单处理器系统。
用于操作系统、面向对象编程系统和应用或程序的指令位于诸如HDD 226的存储装置中,并且可以被加载入主存储器208中,以由处理单元206执行。本发明的示例性实施例的过程可以由处理单元206利用计算机可用程序代码执行,其中计算机可用程序代码可以位于诸如主存储器208、ROM 224这样的存储器中或者例如位于一个或多个外围装置226和230中。
总线系统、诸如图2中所示的总线238或总线240可以由一个或多个总线组成。当然,可以利用提供连接到通信组织或架构的不同装置或组件之间数据传输的任何类型的通信组织或架构来实现总线系统。通信单元、诸如图2中的调制解调器222或网络适配器212可以包括一个或多个用于发送和接收数据的装置。存储器例如可以是主存储器208、ROM 224、或诸如在图2的NB/MCH 202中发现的高速缓存器。
本领域的技术人员将理解,图1-2中的硬件可以根据实施而有所不同。作为图1-2中所示的硬件的附加或替换,可以使用其他内部硬件或外围装置(诸如闪存、等效的非易失性存储器、或光盘驱动器等等)。此外,示例性实施例的处理器可以被应用于除了上述提到的SMP系统之外的其他多处理器数据处理系统,而不背离本发明的精神和范围。
而且,数据处理系统200可以采取大量包括客户端计算装置、服务器计算装置、平板电脑(tablet computer)、膝上型计算机、电话或其他通信装置、个人数字助理(PDA)等等的不同数据处理系统中任何数据处理系统的形式。在一些示例性例子中,数据处理系统200例如可以是便携式计算装置,其配备有闪存以提供非易失性存储器,用于存储操作系统文件和/或用户生成的数据。本质上,数据处理系统200可以是任何已知的或未来开发的数据处理系统,而没有架构限制。
在一个示例性实施例中,处理单元206可以是具有通用寄存器重命名机制的微处理器。通用重命名机制使用单重命名结构来对不同指令类型的目的地进行重命名。因此,可以使用相同重命名结构来将正在更新浮点寄存器(FPR)的指令与正在更新通用寄存器(GPR)或矢量多媒体扩展(VMX)指令寄存器(VR)的指令一起重命名,因为用于GPR的架构化状态的数量与用于FPR和VR的架构化状态的数量相同。每个目的地标签(DTAG)被分配给一个目的地。浮点指令可以被分配给DTAG,然后定点指令可以被分配给下一个DTAG,依此类推。使用通用重命名机制,由于对于所有指令类型只具有一个重命名结构,从而可以显著地节省硅和功耗。
图3的框图显示了根据一个示例性实施例的具有通用寄存器重命名机制的微处理器的各部分。处理器例如可以是图2中的处理单元206。微处理器包括指令解码和发布逻辑310,其接收指令、解码该指令并发布该指令到执行单元312、314、316。在一个示例性实施例中,执行单元312、314、316可以执行不同的指令类型。例如,执行单元312可以执行通用指令,执行单元314可以执行浮点指令,执行单元316可以执行矢量多媒体扩展(VMX)指令。通用重命名机制350使用单重命名结构来对不同指令类型的目的地进行重命名。
总线322将执行单元312-316连接到寄存器文件320。总线332将执行单元312-316连接到存储器330。存储器330可以是处理器内部的只读存储器(ROM),诸如高速缓存存储器。替换地,存储器330可以是处理器外部的,诸如系统存储器。虽然图3显示的是共享总线322、332将执行单元312-316连接到寄存器文件320和存储器330,但是应当理解,在一个替换实施例中,每个执行单元可以具有其自己独立的到寄存器文件320和存储器330的连接。
执行单元312-316连接到指令解码和发布逻辑310和通用重命名机制350。当执行单元312-316结束指令的执行时,它们可以将信息发送回指令解码和发布逻辑310和通用重命名机制350,以更新信息,如以下进一步详细介绍所述。完成逻辑340处理指令执行的完成,诸如刷新指令。完成逻辑340连接到指令解码和发布逻辑310和通用重命名机制350。在完成时,完成逻辑340可以将信息发送回指令解码和发布逻辑310和通用重命名机制350,以更新信息,如以下将进一步详细介绍所述。
图4显示了根据一个示例性实施例的寄存器重命名机制的数据流。定点单元(FXU)指令可以更新通用寄存器(GPR)。浮点单元(FPU)指令可以更新浮点寄存器(FPR)。并且,矢量多媒体扩展(VMX)指令可以更新VMX寄存器。
在分发时为每个指令分配目的地标签(DTAG),以指示指令可以将其结果写到哪个物理寄存器。DTAG是特定逻辑寄存器(LR)402的重命名寄存器。DTAG在分发时被顺序地分配,并且在完成时被解除分配。逻辑寄存器(LR)402是指令的架构化目的地寄存器或寄存器目标(RT)。LR被用作到寄存器文件的写地址,以在完成时写其结果。
逻辑寄存器402中的每个条目包括Destination_type_GPR(目的地_类型_GPR)比特(GR)、Destination_type_FPR(目的地_类型_FPR)比特(FR),和Destination_type_VR(目的地_类型_VR)比特(VR)。GR比特在激活时指示DTAG被分配给FXU指令(更新GPR)。FR比特在激活时指示DTAG被分配给FPU指令(更新FPR)。VR比特在激活时指示DTAG被分配给VMX指令(更新VR)。
Y比特406指示哪个DTAG是更新特定目的地寄存器(RT)的最新指令。当存在多个指令需要更新相同RT字段时,只允许最新指令使该比特被声明为1。当Y比特406被声明时,任何更新的依赖性指令(dependent instruction)将等待该特定DTAG,并忽略Y比特406被解除声明的所有其他指令。对于每个DTAG位置有一个Y比特406。该公共Y比特被所有指令类型使用。如果Y=1并且Destination_type_GPR=1,则DTAG属于FXU指令。如果Y=1并且Destination_type_FPR=1,则DTAG属于FPU指令。如果Y=1并且Destination_type_VR=1,则DTAG属于VMX指令。
W比特410指示RT被重命名为特定的DTAG。如果W=0并且Y=1,则结果还没有被写入重命名缓冲器422、432或442。如果W=1,则结果已经被写入重命名缓冲器422、432或442。
复原链路408包含与分发指令更新相同RT的先前指令的DTAG和V比特。复原链路408被用于将Y比特恢复为与刷新后指令更新相同RT位置的先前的未刷新DTAG。V比特指示复原链路408中的条目是有效的,即该条目中的DTAG仍然处于被重命名状态。
GPR重命名缓冲器422、FPR重命名缓冲器432和VR重命名缓冲器442形成一组寄存器,以在指令完成时临时结果可以被提交到架构化设施中之前保持临时结果。对于GPR、FPR和VR,通常每个DTAG(0到N)有一个重命名缓冲器。
比较逻辑404比较DTAG,以确定新分发的DTAG是否是更新Y比特的特定类型的更新的指令、被执行指令是否与读出W比特的源DTAG匹配,如将在下面详细介绍。
在示出的例子中,指令类型是定点指令(FXU)、浮点指令(FPU)、和矢量多媒体扩展(VMX)指令。寄存器类型分别是通用寄存器(GPR)424、浮点寄存器(FPR)434、和VMX寄存器(VR)444。但是,本领域技术人员将理解,指令类型和寄存器类型可以根据实施的变化而变化。此外,通用重命名机制可以处理更多或更少的指令类型。可以进行其他修改,而不背离本发明的精神和范围。
在发布队列(未示出)中,如果A=1,则A比特指示结果在架构化寄存器中。如果A=0,则结果处于被重命名状态。在发布队列中,对于每个DTAG有一个A比特。这个公共的A比特被所有指令类型使用。如果A=1并且Destination_type_GPR=1,则DTAG属于FXU指令。如果A=1并且Destination_type_FPR=1,则DTAG属于FPU指令。如果A=1并且Destination_type_VR=1,则DTAG属于VMX指令。
对于初始重命名状态,逻辑寄存器数组402中的RT字段被设置为0,所有的Y比特406被设置为0,所有的W比特410被设置为0,复原链路408中的V比特被设置为0。重命名结构可以由DTAG头指针(未示出)和DTAG尾指针(未示出)管理。DTAG头指针指向最老的未完成DTAG。DTAG在分发时被顺序分配,在完成时被解除分配。空闲DTAG的数量可以通过检查DTAG头指针和DTAG尾指针的状态来确定。
在分发时,头/尾指针逻辑(未示出)可以确定有多少DTAG可用于分配给分发指令。如果所有的DTAG已经被分配给指令,则分发必须停止,并且等待DTAG变得可用。如果有可用的DTAG要被分配,则分发逻辑分配DTAG给分发指令。新分配的DTAG可以由DTAG头指针加上N来获得,其中0-N表示可用DTAG。在将DTAG分配给分发指令之后,DTAG头指针前进到下一个空闲DTAG。
在刷新时,DTAG头指针必须移动回到最老的未刷新DTAG加1的位置。换句话说,DTAG头指针必须移动回到要被分配的下一个空闲DTAG。在刷新时,flush_DTAG(刷新_DTAG)(与flush_DTAG相等或比其更新的任何DTAG将被清除)被发送到头/尾指针管理逻辑。flush_DTAG然后将当前DTAG头指针替换为新的DTAG头指针。
在完成时,DTAG尾指针必须向前移动,以对完成DTAG解除分配。在完成时,完成DTAG的计数被发送到头/尾指针管理逻辑。DTAG尾指针逻辑将基于完成DTAG的计数向前移动(解除分配)。例如,如果4个DTAG已经被完成,则DTAG尾指针将向前移动4个时隙,以解除分配这4个DTAG。
图5是显示根据一个示例性实施例的具有通用重命名机制的微处理器在分发时的操作的流程图。应该理解,流程图示的框图支持执行特定功能的装置组合和执行特定功能的步骤组合。还应当理解,流程图示的每个框图以及流程图示中框图的组合可以通过执行特定功能或步骤的专用的基于硬件的计算机系统来实施。
此外,提供流程图来演示示例性实施例中所执行的操作。流程图并不意味着陈述或暗示对于特定操作、或尤其是操作顺序的限制。流程图的操作可以被修改,以适合具体实施,而不背离本发明的精神和范围。
现在参考图5,操作开始,并且微处理器为正在更新目的地(例如,GPR、FPR或VR)的指令分配目的地标签(DTAG)(步骤502)。微处理器为每一个目的地分配一个DTAG。微处理器使用被分配的DTAG来将分发指令的目的地寄存器字段或寄存器目标(RT)字段写入逻辑寄存器数组中(块504)。在相同位置处,微处理器为指令设置目的地类型(块506)。例如,如果指令是FXU指令,则微处理器将Destination_type_GPR设置为1,或者如果指令是FPU指令,则微处理器将Destination_type_FPR设置为1,或者如果指令是VMX指令,则微处理器将Destination_type_VR设置为1。在示出的例子中,对于每个DTAG,仅一个目的地类型比特可以是激活的。
在DTAG位置处,微处理器设置W=0和Y=1(块508)。设置W=0表示结果还没有被写入重命名缓冲器。设置Y=1表示指令是更新特定RT位置的最新指令。
微处理器使用分发RT来比较逻辑寄存器数组中的所有条目(块510)。微处理器确定指令类型是否匹配(块512)。如果指令类型匹配(例如,分发指令是FXU指令,并且Destination_type_GPR=1),则在匹配位置处,微处理器将匹配的DTAG在由分发DTAG指向的位置处保存入复原链路数组中(块514)。此外,在块514中,微处理器在复原链路数组中该位置处设置V=1,以指示在该位置中保存的DTAG仍然处于重命名状态。因此,新的分发DTAG将携带到正在更新相同RT位置的先前DTAG的链路。此外,在匹配位置处,微处理器重置Y=0,以指示匹配位置处的DTAG不再是更新该RT的最新指令(块516)。
此后,或者如果在块512中指令类型不匹配,则微处理器还使用分发源寄存器(RA、RB、RC)来与逻辑寄存器数组中的所有条目进行比较(块518)。微处理器确定指令类型是否匹配(块520)。如果指令类型匹配(例如分发指令是FXU并且Destination_type_GPR=1),则在Y=1的匹配位置处,微处理器将比较结果编码,以形成“hit source_DTAG”(“命中源_DTAG”)(块522)。然后,微处理器发送结果到发布队列(块524)。source_DTAG(源_DTAG)是RA/RB所依赖的更老指令的DTAG。注意,对于每个RA或RB,应该只有一个匹配的比较,因为仅仅只有一个RT字段具有Y=1。其余的比较将不匹配。因此,对于RA或RB,比较将得到可以被编码形成“source_DTAG”的“热1”(“hot 1”)字段。
此后,或者如果在块520中指令类型不匹配逻辑寄存器数组中的其他指令,则微处理器发送分发DTAG、source_DTAG、W和A比特到发布队列(块526)。然后,指令的分发结束,并且操作前进到图6A,以下将详细介绍。
以下信息被发送到发布队列:W比特、分发DTAG(这是结果将被写入的目的地)、no-hit(未命中)指示符。对于匹配(命中)的情况,source_DTAG被发送到发布队列,从而指令可以知道从重命名缓冲器读取哪个位置。对于不匹配的情况(未命中),source_DTAG是“无所谓(don’t care)”值,因为数据将在架构化寄存器中。
图6A和6B是显示根据一个示例性实施例的具有通用重命名缓冲器的微处理器的发布队列的操作的流程图。参考图6A,操作开始,并且发布队列逻辑确定来自重命名级的no-hit指示符是否是1(块602)。如果no-hit指示符是1,则发布队列逻辑将发布队列中的A比特和W比特设置为1(块604)。这表示指令准备好被发布,因为其不依赖于任何更老的指令,并且可以从架构化寄存器获得操作数。
W和A都可以是1。例如,W可以被用于选择用于发布的指令,而A比特可以被用于确定数据(在重命名中或者在架构化寄存器中)的位置。例如,如果W=0,则不能选择用于发布的指令。如果W=1且A=0,则指令可以被发布,但是数据被写入重命名缓冲器中。如果W=1且A=1(当更老的指令已经被完成、但是依赖性指令最近被分发或仍然位于发布队列中等待发布时,可能发生这种情况),则指令可以被发布,但是数据在架构化寄存器。如果在块602中,no-hit指示符是0,则发布队列逻辑设置A=0,并将从重命名级所获得的W比特写到发布队列(块606)。
在块604或块606之后,发布队列监听(snoop)来自执行单元的DTAG(块608)。微处理器确定是否是W=1(块610)。当W=1时,发布队列可以只发布指令。如果W=1,则发布队列逻辑发布指令,并且操作前进到图6B中的块618,以下将详细介绍。
如果在块610中W=0,则微处理器确定执行DTAG是否与source_DTAG匹配、以及指令类型是否匹配(块612)。如果执行DTAG与source_DTAG匹配、并且指令类型匹配(例如,分发指令是FXU指令并且Destination_type_GPR=1),则在匹配位置处,微处理器设置W=1(块616),并且操作前进到图6B中的块618,以下将详细介绍。如果在块612中,执行DTAG与source_DTAG不匹配,或者指令类型不匹配,则发布队列逻辑不发布指令(块614),并且操作返回到块608。
现在参考图6B,在发布级,发布逻辑将逻辑RT、RA、RB、DTAG、source_DTAG和A比特与发布指令一起发送到合适的执行单元(块618)。
对于GPR,如果在块620中W=1,则微处理器通过使用source_DTAG作为读地址而从GPR重命名缓冲器中读取操作数(块622)。此后,操作结束。如果在块620中A=1,则微处理器通过使用RA/RB字段作为读地址而从架构化GPR中读取操作数(块624)。此后,发布队列的操作结束,并且操作前进到图7,以下将详细介绍。
对于FPR,如果在块626中W=1,则微处理器通过使用source_DATG作为读地址而从FPR重命名缓冲器中读取操作数(块628)。此后,操作结束。如果在块626中A=1,则微处理器通过使用RA/RB/RC字段作为读地址而从架构化FPR读取操作数(块630)。此后,发布队列的操作结束,并且操作前进到图7,以下将详细介绍。
对于VR,如果在块632中W=1,则微处理器通过使用source_DATG作为读地址而从VR重命名缓冲器中读取操作数(块634)。此后,操作结束。如果在块632中A=1,则微处理器通过使用RA/RB/RC字段作为读地址而从架构化VR中读取操作数(块636)。此后,发布队列的操作结束,并且操作前进到图7,以下将详细介绍。
图7是显示根据一个示例性实施例的具有通用重命名机制的微处理器在执行/写回时的操作的流程图。操作开始于完成时间,并且执行单元发送回DTAG(execution_DTAG(执行_DTAG))到发布队列和重命名级,以更新W比特(块702)。在发布队列处,微处理器比较source_DTAG和execution_DTAG(块704)。微处理器确定execution_DTAG是否与source_DTAG匹配、以及指令类型是否匹配(块706)。如果execution_DTAG匹配source_DTAG,并且指令类型匹配(例如,分发指令是FXU指令并且Destination_type_GPR=1),则在匹配位置处,微处理器设置W=1,以指示操作数现在可以从重命名缓冲器读取数据(块708)。
在重命名级,微处理器在execution_DTAG所指向的位置处设置W=1(块710)。当W=1时,任何更新的依赖于RT的指令将必须从重命名缓冲器中读取其操作数。
对于GPR,微处理器通过使用execution_DTAG作为写地址而将执行结果写入GPR重命名缓冲器中(块712)。此后,操作结束。
对于FPR,微处理器通过使用execution_DTAG作为写地址而将执行结果写入FPR重命名缓冲器中(块714)。此后,操作结束。
对于VR,微处理器通过使用execution_DTAG作为写地址而将执行结果写入VR重命名缓冲器中(块716)。此后,操作结束。
图8A和8B的流程图显示了根据一个示例性实施例的具有通用重命名机制的微处理器在完成时的操作。参考图8A,操作开始于完成时,并且完成逻辑发送completing_DTAG(完成_DTAG)到发布队列和重命名级,以更新W比特(块802)。在发布队列处,微处理器比较source_DTAG和completing_DTAG(块804)。微处理器确定completing_DTAG是否匹配source_DTAG、以及指令类型是否匹配(块806)。如果completing_DTAG匹配source_DTAG,并且指令类型匹配(例如分发指令是FXU指令并且Destination_type_GPR=1),则在匹配位置处,微处理器设置A=1,以指示操作数现在可以从架构化缓冲器读取数据(块808)。
此后,或者如果在块806中completing_DTAG与source_DTAG不匹配,则在重命名级,微处理器在completing_DTAG所指向的位置处设置Y=0(块810)。微处理器使用completing_DTAG来与复原链路数组中的所有DTAG相比较(块812)。微处理器确定是否有任何completing_DTAG与复原链路数组中的任何DTAG匹配(块814)。如果存在任何匹配,则在匹配位置处,微处理器将V比特重置为0,以指示这些位置被完成(块816)。此后,或者如果在块814中不存在匹配,则操作继续到图8B中的块818,其中微处理器使用completing_DTAG来从逻辑寄存器数组中读出completing_RT字段和目的地类型比特。
如果目的地类型是GPR,则微处理器使用completing_DTAG来从GPR重命名缓冲器中读取结果,并将结果写到GPR(块820)。微处理器使用completing_RT字段作为GPR写地址。如果目的地类型是FPR,则微处理器使用completing_DTAG来从FPR重命名缓冲器中读取结果,并将结果写到FPR(块822)。微处理器使用completing_RT字段作为FPR写地址。如果目的地类型是VR,则微处理器使用completing_DTAG来从VR重命名缓冲器中读取结果,并将结果写到VR(块824)。微处理器使用completing_RT字段作为VR写地址。
在块820、块822或块824中将结果写到架构化寄存器之后,微处理器对完成的DTAG解除分配,以由新的分发指令重新使用(块826)。此后,操作结束。
图9是显示根据一个示例性实施例的具有通用重命名机制的微处理器在刷新时的操作的流程图。操作开始,并且完成逻辑发送最老的刷新DTAG到重命名级,以将Y比特恢复为合适的状态(块902)。然后,完成逻辑刷新任何与最老的刷新DTAG相等或比其更新的DTAG(块904)。接下来,微处理器利用来自完成逻辑的最老的刷新DTAG和DTAG头指针产生刷新DTAG矢量(块906)。
然后,微处理器将考虑复原链路数组中与最老的刷新DTAG相等或比其更新的具有V=1的任何DTAG作为被刷新条目(块908)。换句话说,DTAG头指针和最老的刷新DTAG(包括最老的刷新DTAG)之间的任何条目都被清除。微处理器读出被刷新条目处的DTAG,以恢复Y比特(块910)。这些DTAG被称作restore_DTAG(恢复DTAG)。来自所有被刷新条目的DTAG必须在分发新指令流之前被读出和恢复。此后,操作结束。
图10是显示根据一个示例性实施例的恢复功能的操作的流程图。操作开始,并且对于复原链路数组中的每个条目(块1002),微处理器对来自刷新DTAG矢量的相关比特执行V比特的按位“与(AND)”运算,以指示该条目正被刷新并且内容应当被读出(块1004)。然后,微处理器通过解码复原链路中的DTAG以形成热(hot)“1”矢量而读出复原条目的内容(块1006)。然后,微处理器对热“1”矢量与从块1004所得到的按位“与”运算结果执行“与”运算(块1008)。这为每个条目形成restore_DATG。微处理器使用restore_DATG作为到Y比特矢量的写地址,以在恢复位置处设置Y=1(块1010)。然后,微处理器考虑复原链路数组中的下个条目(块1012),并且操作返回到块1002,直到考虑了复原链路数组中的所有条目。
在所有Y比特被恢复之后,微处理器在新恢复的Y比特矢量中的Y比特之间以刷新DTAG矢量执行按位“与”运算,以清除从块1004到1010恢复的被刷新指令的任何Y比特(块1014)。在匹配位置处,微处理器将Y比特重置为0(块1016)。这防止对于相同逻辑RT寄存器将多个Y比特设置为1。换句话说,如果restore_DATG正指向被刷新条目,则用于该条目的Y比特必须被重置为0,而不是设置为1。此后,操作结束。图10所示的恢复功能确保了在刷新之后新分发的指令知道哪个RT是依赖的最新RT。
因此,示例性实施例通过为微处理器中不同指令类型的目标提供统一的寄存器重命名机制而解决了现有技术的缺点。通用重命名机制使用单重命名结构来重命名不同指令类型的目的地。因此,可以使用相同重命名结构将正在更新浮点寄存器(FPR)的指令与正在更新通用寄存器(GPR)或矢量多媒体扩展(VMX)指令寄存器(VR)的指令一起重命名,因为用于GPR的架构化状态的数量与用于FPR和VR的架构化状态的数量相同。每个目的地标签(DTAG)被分配给一个目的地。浮点指令可以被分配给DTAG,然后定点指令可以被分配给下一个DTAG,依此类推。使用通用重命名机制,因为对于所有指令类型只有一个重命名结构,因此可以显著地节省硅和功耗。
应当理解,所示的实施例可以采取纯硬件实施例、纯软件实施例或包含硬件和软件元件的实施例的形式。在一个示例性实施例中,示例性实施例的机制以软件实现,包括但不限于固件、驻留软件、微代码等等。
此外,示例性实施例可以采取可以从用于提供由计算机或任何指令执行系统使用或与其相关的程序代码的计算机可用或计算机可读介质访问的计算机程序产品的形式。为了描述的目的,计算机可用或计算机可读介质可以是可以包含、存储、通信、传播、或传输由指令执行系统、设备或装置使用或与其相关的程序的任何设备。
介质可以是电子的、磁的、光学的、电磁的、红外的或半导体的系统(或设备或装置)或传播介质。计算机可读介质的例子包括半导体或固态存储器、磁带、可移动计算机磁盘、随机存取存储器(RAM)、只读存储器(ROM)、硬磁盘和光盘。当前的光盘例子包括光碟-只读存储器(CD-ROM)、光碟-读/写(CD-R/W)和DVD。
适于存储和/或执行程序代码的数据处理系统将包括直接地或通过系统总线间接地耦接到存储器元件的至少一个处理器。存储器元件可以包括在程序代码实际执行期间所使用的本地存储器、大容量存储器和临时存储至少一些程序代码以便减少执行期间必须从大容量存储器检索代码的次数的高速缓存存储器。
输入/输出或I/O装置(包括但不限于键盘、显示器、指示装置等等)可以直接耦接到系统,或通过中间I/O控制器耦接到系统。网络适配器也可以被耦接到系统,以使数据处理系统能够通过中间的专用或公共网络耦接到其他数据处理系统或远程打印机或存储设备。调制解调器、有线调制解调器和以太网卡是几种目前可用类型的网络适配器。
示例性实施例的描述是为了示例和描述的目的而提供的,而并不是要穷举或限制到所公开形式的说明性实施例。很多修改和变形对于本领域技术人员来说是显而易见的。选择和描述了实施例,以便更好地解释发明原理、实践应用,并使本领域的其他技术人员能够理解本发明的多种实施方式,其中可以想到适于特定使用的各种变形。
Claims (34)
1.一种通用寄存器重命名方法,所述方法包括:
为微处理器中正被发布的指令分配目的地标签;
在微处理器中的重命名级中,在逻辑寄存器数组中为所述指令设置目的地类型;以及
如果所述指令的结果被写到对应于所述目的地类型的重命名缓冲器,则在所述逻辑寄存器数组中声明重命名缓冲器比特。
2.根据权利要求1的方法,还包括:
确定所述指令是否访问与先前指令匹配的目标寄存器;以及
如果所述指令访问与先前指令匹配的目标寄存器,则将所述先前指令的目的地标签写入复原链路数组中的复原链路条目中。
3.根据权利要求2的方法,还包括:
在所述复原链路数组中维持条目的有效性。
4.根据权利要求2的方法,还包括:
为所述指令声明最新指令比特,以指示所述指令是访问所述目标寄存器的最新指令。
5.根据权利要求2的方法,还包括:
为所述先前指令解除声明最新指令比特。
6.根据权利要求1的方法,还包括:
在发布队列中,确定发布指令是否依赖于更新的指令;以及
如果所述发布指令不依赖于更新的指令,则为所述发布指令声明所述发布队列中的架构化寄存器比特;以及
如果所述发布指令依赖于更新的指令,则为所述发布指令解除声明所述发布队列中的架构化寄存器比特。
7.根据权利要求6的方法,还包括:
对于具有声明的重命名缓冲器比特的发布指令,发送用于所述发布指令的架构化寄存器比特、源目的地标签、目的地标签、一个或多个分发源寄存器地址、逻辑寄存器目标到相应的执行单元。
8.根据权利要求7的方法,还包括:
如果用于所述发布指令的架构化寄存器比特被声明,则通过使用所述一个或多个分发源寄存器地址作为读地址而从与所述发布指令的目的地类型相对应的架构化寄存器读取一个或多个操作数;以及
如果用于所述发布指令的架构化寄存器比特被解除声明,则通过使用所述源目的地标签作为读地址而从与所述发布指令的目的地类型相对应的重命名缓冲器读取一个或多个操作数。
9.根据权利要求7的方法,还包括:
在执行指令的执行时,比较要被写的操作数的执行目的地标签与所述发布指令的源目的地标签;
如果所述要被写的操作数的执行目的地标签与所述发布指令的源目的地标签匹配,则为所述发布指令声明发布队列中的重命名缓冲器比特。
10.根据权利要求9的方法,还包括:
在重命名级,声明所述逻辑寄存器数组中由所述执行目的地标签所指向的位置处的重命名缓冲器比特。
11.根据权利要求9的方法,还包括:
通过使用所述执行目的地标签作为写地址而将执行结果写到与所述执行指令的目的地类型相对应的重命名缓冲器中。
12.根据权利要求11的方法,还包括:
在完成时,将用于完成指令的完成目的地标签发送到发布队列和重命名级。
13.根据权利要求12的方法,还包括:
在发布队列,比较发布指令的源目的地标签与所述完成目的地标签;以及
如果所述源目的地标签与所述完成目的地标签匹配,则声明所述发布队列中与所述源目的地标签相对应的架构化寄存器比特。
14.根据权利要求12的方法,还包括:
在重命名级,在所述完成目的地标签所指向的位置处设置最新指令比特。
15.根据权利要求12的方法,还包括:
使用所述完成目的地标签来从所述逻辑寄存器数组读出完成寄存器目标字段和目的地类型比特;以及
使用所述完成目的地标签来从与所述完成指令的目的地类型相对应的重命名缓冲器读出结果;以及
将所述结果写到与所述完成指令的目的地类型相对应的架构化寄存器。
16.根据权利要求15的方法,还包括:
对所述完成目的地标签解除分配,以由新的分发指令使用。
17.根据权利要求15的方法,还包括:
发送最老的刷新目的地标签到重命名级,以将最新的指令比特恢复到合适的状态;以及
清除重命名级中与所述最老的刷新目的地标签相等或比其更新的任何目的地标签。
18.一种具有通用寄存器重命名的微处理器,包括:
发布队列;
重命名机制;
多个执行单元;和
完成逻辑;
其中所述发布队列发布指令到所述多个执行单元;
其中所述多个执行单元发送用于执行指令的信息到所述发布队列和所述重命名机制;
其中所述完成逻辑发送用于被完成指令的信息到所述发布队列和所述重命名机制;并且
其中所述重命名机制为正在微处理器中被发布的指令分配目的地标签,在逻辑寄存器数组中为所述正在微处理器中被发布的指令设置目的地类型,并且如果所述正在微处理器中被发布的指令的结果被写到与所述目的地类型相对应的重命名缓冲器中,则在所述逻辑寄存器数组中声明重命名缓冲器比特。
19.根据权利要求18的微处理器,其中所述重命名机制确定所述正在微处理器中被发布的指令是否访问与先前指令匹配的目标寄存器,并且如果所述正在微处理器中被发布的指令访问与先前指令匹配的目标寄存器,则将用于所述先前指令的目的地标签写入复原链路数组中的复原链路条目中。
20.根据权利要求19的微处理器,其中所述重命名机制在所述复原链路数组中维持条目的有效性。
21.根据权利要求19的微处理器,其中所述重命名机制为所述正在微处理器中被发布的指令声明最新指令比特,以指示所述正在微处理器中被发布的指令是访问所述目标寄存器的最新指令。
22.根据权利要求19的微处理器,其中所述重命名机制为所述先前指令解除声明最新指令比特。
23.根据权利要求18的微处理器,其中所述发布队列确定发布指令是否依赖于更新的指令;
其中如果所述发布指令不依赖于更新的指令,则所述发布队列为所述发布指令声明所述发布队列中的架构化寄存器比特;以及
如果所述发布指令依赖于更新的指令,则所述发布队列为所述发布指令解除声明所述发布队列中的架构化寄存器比特。
24.根据权利要求23的微处理器,其中对于具有声明的重命名缓冲器比特的发布指令,所述发布队列发送用于所述发布指令的架构化寄存器比特、源目的地标签、目的地标签、一个或多个分发源寄存器地址、逻辑寄存器目标到所述多个执行单元中的相应执行单元。
25.根据权利要求24的微处理器,其中如果用于所述发布指令的架构化寄存器比特被声明,则所述执行单元通过使用所述一个或多个分发源寄存器地址作为读地址而从与所述发布指令的目的地类型相对应的架构化寄存器中读取一个或多个操作数;以及
其中如果用于所述发布指令的架构化寄存器比特被解除声明,则所述执行单元通过使用所述源目的地标签作为读地址而从与所述发布指令的目的地类型相对应的重命名缓冲器读取一个或多个操作数。
26.根据权利要求24的微处理器,其中在执行指令的执行时,所述发布队列比较要被写的操作数的执行目的地标签与所述发布指令的源目的地标签,并且如果所述要被写的操作数的执行目的地标签与所述发布指令的源目的地标签匹配,则为所述发布指令声明发布队列中的重命名缓冲器比特。
27.根据权利要求26的微处理器,其中所述重命名机制声明所述逻辑寄存器数组中由所述执行目的地标签所指向的位置处的重命名缓冲器比特。
28.根据权利要求26的微处理器,其中所述执行单元通过使用所述执行目的地标签作为写地址而将执行结果写入与所述执行指令的目的地类型相对应的重命名缓冲器中。
29.根据权利要求28的微处理器,其中在完成时,所述完成逻辑将用于完成指令的完成目的地标签发送到所述发布队列和所述重命名机制。
30.根据权利要求29的微处理器,其中所述发布队列比较发布指令的源目的地标签与所述完成目的地标签,并且如果所述源目的地标签与所述完成目的地标签匹配,则声明所述发布队列中与所述源目的地标签相对应的架构化寄存器比特。
31.根据权利要求29的微处理器,其中所述重命名机制在所述完成目的地标签所指向的位置处设置最新指令比特。
32.根据权利要求29的微处理器,其中所述重命名机制使用所述完成目的地标签来从所述逻辑寄存器数组读出完成寄存器目标字段和目的地类型比特,使用所述完成目的地标签来从与所述完成指令的目的地类型相对应的重命名缓冲器中读出结果,并将所述结果写到与所述完成指令的目的地类型相对应的架构化寄存器。
33.根据权利要求32的微处理器,其中所述重命名机制对所述完成目的地标签解除分配,以由新的分发指令使用。
34.根据权利要求32的微处理器,其中所述完成逻辑发送最老的刷新目的地标签到所述重命名机制,以将最新指令比特恢复到合适的状态;以及
其中所述重命名机制清除所述重命名机制中与所述最老的刷新目的地标签相等或比其更新的任何目的地标签。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/736,844 | 2007-04-18 | ||
US11/736,844 US7765384B2 (en) | 2007-04-18 | 2007-04-18 | Universal register rename mechanism for targets of different instruction types in a microprocessor |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101290567A CN101290567A (zh) | 2008-10-22 |
CN101290567B true CN101290567B (zh) | 2012-03-21 |
Family
ID=39873407
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008100926391A Expired - Fee Related CN101290567B (zh) | 2007-04-18 | 2008-04-16 | 通用寄存器重命名方法和具有通用寄存器重命名的微处理器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7765384B2 (zh) |
JP (1) | JP5243836B2 (zh) |
CN (1) | CN101290567B (zh) |
TW (1) | TW200907694A (zh) |
Families Citing this family (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8312458B2 (en) | 2008-02-01 | 2012-11-13 | International Business Machines Corporation | Central repository for wake-and-go mechanism |
US8516484B2 (en) | 2008-02-01 | 2013-08-20 | International Business Machines Corporation | Wake-and-go mechanism for a data processing system |
US8341635B2 (en) | 2008-02-01 | 2012-12-25 | International Business Machines Corporation | Hardware wake-and-go mechanism with look-ahead polling |
US8250396B2 (en) | 2008-02-01 | 2012-08-21 | International Business Machines Corporation | Hardware wake-and-go mechanism for a data processing system |
US8452947B2 (en) | 2008-02-01 | 2013-05-28 | International Business Machines Corporation | Hardware wake-and-go mechanism and content addressable memory with instruction pre-fetch look-ahead to detect programming idioms |
US8788795B2 (en) | 2008-02-01 | 2014-07-22 | International Business Machines Corporation | Programming idiom accelerator to examine pre-fetched instruction streams for multiple processors |
US8225120B2 (en) | 2008-02-01 | 2012-07-17 | International Business Machines Corporation | Wake-and-go mechanism with data exclusivity |
US8127080B2 (en) | 2008-02-01 | 2012-02-28 | International Business Machines Corporation | Wake-and-go mechanism with system address bus transaction master |
US8171476B2 (en) | 2008-02-01 | 2012-05-01 | International Business Machines Corporation | Wake-and-go mechanism with prioritization of threads |
US8386822B2 (en) | 2008-02-01 | 2013-02-26 | International Business Machines Corporation | Wake-and-go mechanism with data monitoring |
US8880853B2 (en) | 2008-02-01 | 2014-11-04 | International Business Machines Corporation | CAM-based wake-and-go snooping engine for waking a thread put to sleep for spinning on a target address lock |
US8725992B2 (en) | 2008-02-01 | 2014-05-13 | International Business Machines Corporation | Programming language exposing idiom calls to a programming idiom accelerator |
US8640141B2 (en) | 2008-02-01 | 2014-01-28 | International Business Machines Corporation | Wake-and-go mechanism with hardware private array |
US8015379B2 (en) * | 2008-02-01 | 2011-09-06 | International Business Machines Corporation | Wake-and-go mechanism with exclusive system bus response |
US8316218B2 (en) | 2008-02-01 | 2012-11-20 | International Business Machines Corporation | Look-ahead wake-and-go engine with speculative execution |
US8732683B2 (en) | 2008-02-01 | 2014-05-20 | International Business Machines Corporation | Compiler providing idiom to idiom accelerator |
US8145849B2 (en) | 2008-02-01 | 2012-03-27 | International Business Machines Corporation | Wake-and-go mechanism with system bus response |
US8612977B2 (en) | 2008-02-01 | 2013-12-17 | International Business Machines Corporation | Wake-and-go mechanism with software save of thread state |
US8145723B2 (en) | 2009-04-16 | 2012-03-27 | International Business Machines Corporation | Complex remote update programming idiom accelerator |
US8886919B2 (en) | 2009-04-16 | 2014-11-11 | International Business Machines Corporation | Remote update programming idiom accelerator with allocated processor resources |
US8230201B2 (en) | 2009-04-16 | 2012-07-24 | International Business Machines Corporation | Migrating sleeping and waking threads between wake-and-go mechanisms in a multiple processor data processing system |
US8082315B2 (en) | 2009-04-16 | 2011-12-20 | International Business Machines Corporation | Programming idiom accelerator for remote update |
US9170638B2 (en) * | 2010-12-16 | 2015-10-27 | Advanced Micro Devices, Inc. | Method and apparatus for providing early bypass detection to reduce power consumption while reading register files of a processor |
CN107092466B (zh) * | 2011-12-29 | 2020-12-08 | 英特尔公司 | 用于控制mxcsr的方法及装置 |
WO2013101323A1 (en) * | 2011-12-30 | 2013-07-04 | Intel Corporation | Micro-architecture for eliminating mov operations |
US9454371B2 (en) | 2011-12-30 | 2016-09-27 | Intel Corporation | Micro-architecture for eliminating MOV operations |
US9513915B2 (en) * | 2012-03-28 | 2016-12-06 | International Business Machines Corporation | Instruction merging optimization |
US9588766B2 (en) | 2012-09-28 | 2017-03-07 | Intel Corporation | Accelerated interlane vector reduction instructions |
US9395988B2 (en) * | 2013-03-08 | 2016-07-19 | Samsung Electronics Co., Ltd. | Micro-ops including packed source and destination fields |
US9588770B2 (en) * | 2013-03-15 | 2017-03-07 | Samsung Electronics Co., Ltd. | Dynamic rename based register reconfiguration of a vector register file |
US9971686B2 (en) * | 2015-02-23 | 2018-05-15 | Intel Corporation | Vector cache line write back processors, methods, systems, and instructions |
CN110673878B (zh) * | 2019-09-11 | 2023-03-31 | 上海高性能集成电路设计中心 | 一种基于指令集模拟器的指令信息查询及执行调试方法 |
CN110795364B (zh) * | 2019-10-31 | 2023-06-02 | 四川效率源信息安全技术股份有限公司 | 一种ide模式下访问硬盘的方法 |
CN112052041B (zh) * | 2020-10-10 | 2022-03-11 | 乐鑫信息科技(上海)股份有限公司 | 更新寄存器的方法 |
US11500642B2 (en) * | 2020-11-10 | 2022-11-15 | International Busines Machines Corporation | Assignment of microprocessor register tags at issue time |
CN113268757B (zh) * | 2021-06-03 | 2024-01-02 | 西京学院 | 一种基于虚拟现实的工业设计模型展示方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6192461B1 (en) * | 1998-01-30 | 2001-02-20 | International Business Machines Corporation | Method and apparatus for facilitating multiple storage instruction completions in a superscalar processor during a single clock cycle |
US20050027968A1 (en) * | 2003-07-31 | 2005-02-03 | Rupley Jeffrey P. | Renaming for register with multiple bit fields |
US20060095733A1 (en) * | 2004-09-08 | 2006-05-04 | Samsung Electronics Co., Ltd. | Hardware device for executing conditional instruction out-of-order fetch and execution method thereof |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5548776A (en) * | 1993-09-30 | 1996-08-20 | Intel Corporation | N-wide bypass for data dependencies within register alias table |
US6047369A (en) * | 1994-02-28 | 2000-04-04 | Intel Corporation | Flag renaming and flag masks within register alias table |
US5826070A (en) * | 1996-08-30 | 1998-10-20 | International Business Machines Corporation | Apparatus and method for maintaining status flags and condition codes using a renaming technique in an out of order floating point execution unit |
US5961636A (en) * | 1997-09-22 | 1999-10-05 | International Business Machines Corporation | Checkpoint table for selective instruction flushing in a speculative execution unit |
US5974525A (en) * | 1997-12-05 | 1999-10-26 | Intel Corporation | System for allowing multiple instructions to use the same logical registers by remapping them to separate physical segment registers when the first is being utilized |
US6240507B1 (en) * | 1998-10-08 | 2001-05-29 | International Business Machines Corporation | Mechanism for multiple register renaming and method therefor |
US6311267B1 (en) * | 1998-11-20 | 2001-10-30 | International Business Machines Corporation | Just-in-time register renaming technique |
US6266763B1 (en) * | 1999-01-05 | 2001-07-24 | Advanced Micro Devices, Inc. | Physical rename register for efficiently storing floating point, integer, condition code, and multimedia values |
US6625746B1 (en) * | 2000-06-15 | 2003-09-23 | International Business Machines Corporation | Microprocessor instruction buffer redundancy scheme |
US6772317B2 (en) * | 2001-05-17 | 2004-08-03 | Intel Corporation | Method and apparatus for optimizing load memory accesses |
US7093106B2 (en) * | 2003-04-23 | 2006-08-15 | International Business Machines Corporation | Register rename array with individual thread bits set upon allocation and cleared upon instruction completion |
US20060265555A1 (en) * | 2005-05-19 | 2006-11-23 | International Business Machines Corporation | Methods and apparatus for sharing processor resources |
US7506139B2 (en) * | 2006-07-12 | 2009-03-17 | International Business Machines Corporation | Method and apparatus for register renaming using multiple physical register files and avoiding associative search |
-
2007
- 2007-04-18 US US11/736,844 patent/US7765384B2/en not_active Expired - Fee Related
-
2008
- 2008-04-03 TW TW097112405A patent/TW200907694A/zh unknown
- 2008-04-14 JP JP2008104478A patent/JP5243836B2/ja not_active Expired - Fee Related
- 2008-04-16 CN CN2008100926391A patent/CN101290567B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6192461B1 (en) * | 1998-01-30 | 2001-02-20 | International Business Machines Corporation | Method and apparatus for facilitating multiple storage instruction completions in a superscalar processor during a single clock cycle |
US20050027968A1 (en) * | 2003-07-31 | 2005-02-03 | Rupley Jeffrey P. | Renaming for register with multiple bit fields |
US20060095733A1 (en) * | 2004-09-08 | 2006-05-04 | Samsung Electronics Co., Ltd. | Hardware device for executing conditional instruction out-of-order fetch and execution method thereof |
Also Published As
Publication number | Publication date |
---|---|
US20080263321A1 (en) | 2008-10-23 |
JP5243836B2 (ja) | 2013-07-24 |
TW200907694A (en) | 2009-02-16 |
US7765384B2 (en) | 2010-07-27 |
JP2008269601A (ja) | 2008-11-06 |
CN101290567A (zh) | 2008-10-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101290567B (zh) | 通用寄存器重命名方法和具有通用寄存器重命名的微处理器 | |
TWI528291B (zh) | 用於在移動消除操作中旗標追蹤之系統與方法 | |
US9448936B2 (en) | Concurrent store and load operations | |
US7577825B2 (en) | Method for data validity tracking to determine fast or slow mode processing at a reservation station | |
US8904153B2 (en) | Vector loads with multiple vector elements from a same cache line in a scattered load operation | |
CN108205433B (zh) | 用来加速稀疏矩阵乘密集向量以及稀疏向量乘密集向量乘法的存储器到存储器指令 | |
CN101281460B (zh) | 处理多个线程的方法和设备 | |
TWI483180B (zh) | 重疊原子區域執行的方法 | |
US20120060016A1 (en) | Vector Loads from Scattered Memory Locations | |
TW201140435A (en) | Synchronizing SIMD vectors | |
CN101154192A (zh) | 管理计算机存储器高速缓存中的访问冲突的方法和装置 | |
JP2021163449A (ja) | 自己リセットレジスタスコアボードを備えたマイクロプロセッサ | |
CN115867888B (zh) | 用于利用主-影子物理寄存器文件的方法和系统 | |
EP3716046B1 (en) | Technology for providing memory atomicity with low overhead | |
US7809929B2 (en) | Universal register rename mechanism for instructions with multiple targets in a microprocessor | |
CN104216681A (zh) | 一种cpu指令处理方法和处理器 | |
WO2016093975A1 (en) | Providing early instruction execution in an out-of-order (ooo) processor, and related apparatuses, methods, and computer-readable media | |
US10133620B2 (en) | Detecting errors in register renaming by comparing value representing complete error free set of identifiers and value representing identifiers in register rename unit | |
TW201344568A (zh) | 用於消除移動操作之微架構 | |
TWI751990B (zh) | 衝突罩生成 | |
TW201342065A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120321 |