一种乱序执行微处理器中的有条件加载指令的制作方法

文档序号:6495499阅读:108来源:国知局
一种乱序执行微处理器中的有条件加载指令的制作方法
【专利摘要】微处理器指令编译器将有条件加载指令编译成至少两个微指令。乱序执行流水线执行这些微指令。为了执行第一个微指令,一个执行单元从寄存器文件的源寄存器接收源操作数,并且作为响应这个执行单元使用这些源操作数产生第一结果。为了执行第二个微指令,一个执行单元接收目标寄存器的在前值及第一结果,并且作为响应,这个执行单元从由第一结果指定的存储单元读取数据且这个执行单元提供一个第二结果,如果满足条件则第二结果是此数据,并且如果不满足条件,则第二结果是目标寄存器的在前值。目标寄存器的在前值包含由执行一个微指令所产生的结果,其中这个微指令是关于第二个微指令的目标寄存器的次序上最近的在前写入者。
【专利说明】一种乱序执行微处理器中的有条件加载指令
[0001]相关申请的交叉引用
[0002]本申请为下列美国非临时性专利申请的一个部分延续申请案(CIP )。
[0003]
【权利要求】
1.一种微处理器,具有定义有条件加载指令的指令集架构,所述微处理器包括: 寄存器文件; 指令编译器,将所述有条件加载指令编译为至少两个微指令,其中所述有条件加载指令指定所述寄存器文件的目标寄存器以及源寄存器;以及 乱序执行流水线,包括执行所述微指令的复数个执行单元; 其中为了执行所述微指令的第一个微指令,一个所述执行单元从所述寄存器文件的所述源寄存器接收源操作数,并且作为响应该一个执行单元使用所述源操作数产生第一结果; 其中为了执行所述微指令的第二个微指令,一个所述执行单元接收所述目标寄存器的在前值及所述第一结果,并且作为响应,该一个执行单元从由所述第一结果指定的存储单元读取数据且该一个执行单元提供第二结果,如果满足条件时所述第二结果是所述数据,并且如果不满足所述条件时,所述第二结果是所述目标寄存器的所述在前值; 其中所述目标寄存器的所述在前值包含由执行一个微指令所产生的结果,其中所述微指令是关于所述第二个微指令的所述目标寄存器的次序上最近的在前写入者。
2.根据权利要求1所述的微处理器,其中所述微指令的编码方式与由所述指令集架构定义的所述指令的编码方式不相同。
3.根据权利要求1所述的微处理器, 其中由所述有条件加载指令指定的所述寄存器文件的所述源寄存器是最多N个不相同的源寄存器,其中由所述有条件加载指令指定的所述目标寄存器是所述寄存器文件的寄存器,该寄存器是与由所述有条件加载指令指定的所有N个不相同的源寄存器不相同的寄存器,其中N为至少两个; 其中对于执行所述微指令的每一个所述执行单元,所述寄存器文件包括最多N个读端口以同时提供最多N个源操作数给所述执行单元。
4.根据权利要求3所述的微处理器, 其中所述寄存器文件是一个架构寄存器文件,所述架构寄存器文件保持由所述指令集架构定义的通用寄存器的架构状态; 其中所述微处理器进一步包括推测寄存器文件,所述推测寄存器文件从所述复数个执行单元接收结果用于存储,直到所述结果退出到所述架构寄存器文件,其中所述推测寄存器文件将在所述推测寄存器文件中存储的所述结果作为源操作数提供给所述复数个执行单元,其中对于执行所述微指令的每一个所述执行单元,所述推测寄存器文件包括最多N个读端口以同时提供最多N个源操作数给所述执行单元。
5.根据权利要求4所述的微处理器,进一步包括: 重命名单元,其中对于由所述指令编译器产生的每一微指令,所述重命名单元将所述架构寄存器文件的寄存器重命名为所述推测寄存器文件的寄存器。
6.根据权利要求4所述的微处理器,进一步包括: 发送总线,将来自执行所述第一个微指令的所述执行单元的所述第一结果发送到执行所述第二微指令的所述执行单元;以及 多路复用逻辑电路,选择以下来源的一个以将所述第一结果提供给执行所述第二微指令的所述执行单元:所述架构寄存器文件、所述推测寄存器文件、以及所述发送总线。
7.根据权利要求3所述的微处理器, 其中所述有条件加载指令进一步指定,如果满足所述条件的话,一个基址寄存器使用从中读出所述数据的所述存储单元的地址进行更新,其中所述基址寄存器是由所述有条件加载指令指定的所述寄存器文件的所述N个源寄存器中的一个源寄存器; 其中所述至少两个微指令包括一个第三微指令,所述第三微指令指定所述基址寄存器作为所述第三微指令的目标寄存器,其中为了执行所述第三微指令,一个所述执行单元接收所述基址寄存器的在前值及所述第一结果,并且作为响应该一个所述执行单元提供一个第三结果,当满足所述条件时所述第三结果是所述第一结果,并且如果不满足所述条件时所述第三结果是所述基址寄存器的所述在前值; 其中所述基址寄存器的所述在前值包括由执行一个微指令所产生的结果,其中所述微指令是关于所述第三微指令的所述基址寄存器的次序上最近的在前写入者。
8.根据权利要求1所述的微处理器, 其中所述有条件加载指令进一步指定一个移位量; 其中所述至少两个微指令包括一个第三微指令,其中为了执行所述第三微指令,一个所述执行单元接收所述移位量以及来自所述寄存器文件的一个所述源操作数,并且作为响应该一个所述执行单元提供一个第三结果,所述第三结果是移位了所述移位量的该一个所述源操作数; 其中执行所述第一个微指令的所述执行单元接收所述第三结果而非来自所述源寄存器的一个所述源操作数, 并且执行所述第一个微指令的所述执行单元使用所述第三结果而非来自所述源寄存器的所述源操作数产生所述第一结果。
9.根据权利要求1所述的微处理器, 其中所述第二微指令指定待写入到所述目标寄存器的所述第二结果; 其中在顺序上位于所述第二微指令之后的一个用户微指令指定一个源寄存器,所述源寄存器是由所述第二微指令指定的所述目标寄存器,其中与是否满足所述条件无关,所述用户微指令使用所述第二微指令的所述第二结果作为源操作数。
10.根据权利要求1所述的微处理器,其中所述第一个微指令将所述微处理器的一个非架构寄存器指定作为所述第一个微指令的目标寄存器,其中所述第二微指令将由所述第一个微指令指定的所述非架构寄存器指定作为所述第二微指令的一个源寄存器。
11.根据权利要求1所述的微处理器,进一步包括: 架构条件标志寄存器,保持由所述指令集架构定义的条件标志的架构状态; 推测条件标志寄存器文件,从所述复数个执行单元接收条件标志结果用于存储,直到所述条件标志结果退出到所述架构条件标志寄存器; 标志发送总线,将所述条件标志结果在所述执行单元之间彼此发送;以及多路复用逻辑电路,选择以下来源的一个以将条件标志结果提供给执行所述第二微指令的所述执行单元:所述架构条件标志寄存器文件、所述推测条件标志寄存器文件、以及所述条件标志发送总线; 其中执行所述第二微指令的所述执行单元确定从所述多路复用逻辑电路接收的所述条件标志结果是否满足所述条件。
12.根据权利要求11所述的微处理器,其中由所述多路复用逻辑电路选择的所述条件标志结果包括由执行一个第三微指令所产生的条件标志结果,其中所述第三微指令是关于所述第二微指令的所述架构条件标志寄存器的次序上最近的在前写入者。
13.根据权利要求11所述的微处理器,其中所述推测条件标志寄存器文件包括复数个条目,所述复数个条目用于存储所述执行流水线中每一个未退出的微指令的所述推测条件标志结果。
14.一种微处理器的操作方法,其中所述微处理器具有定义有条件加载指令的指令集架构且具有寄存器文件,所述微处理器的操作方法包括: 将所述有条件加载指令编译成至少两个微指令,其中所述有条件加载指令指定所述寄存器文件的目标寄存器以及源寄存器;以及 通过所述微处理器的乱序执行流水线执行所述微指令; 其中所述执行所述微指令的第一个微指令包括从所述寄存器文件的所述源寄存器接收源操作数,并且作为响应使用所述源操作数产生第一结果; 其中所述执行所述微指令的第二个微指令包括接收所述目标寄存器的在前值及所述第一结果,并且作为响应从由所述第一结果指定的存储单元读取数据且提供一个第二结果,当满足条件时所述第二结果是所述数据且当不满足条件时所述第二结果是所述目标寄存器的所述在前值; 其中所述目标寄存器的所述在前值包括由执行一个微指令所产生的结果,其中所述微指令是关于所述第二微指令的所述目标寄存器的次序上最近的在前写入者。
15.根据权利要求14所述的微处理器的操作方法,其中所述微指令的编码方式与由所述指令集架构定义的所述指令的编码方式不相同。
16.根据权利要求14所述的微处理器的操作方法, 其中所述有条件加载指令进一步指定一个移位量; 其中所述至少两个微指令包括一个第三微指令; 其中所述执行所述第三微指令包括接收所述移位量及来自所述寄存器文件的一个所述源操作数,并且作为响应提供一个第三结果,所述第三结果是移位了所述移位量的该一个所述源操作数; 其中所述接收来自所述寄存器文件的所述源寄存器的源操作数包括接收所述第三结果而非来自所述源寄存器的一个所述源操作数,并且使用所述第三结果而非来自所述源寄存器的该一个所述源操作数产生所述第一结果。
17.根据权利要求14所述的微处理器的操作方法, 其中所述第二微指令指定待写入到所述目标寄存器的所述第二结果; 其中在顺序上位于所述第二微指令之后的一个用户微指令指定一个源寄存器,所述源寄存器是由所述第二微指令指定的所述目标寄存器,其中与是否满足所述条件无关,所述用户微指令使用所述第二微指令的所述第二结果作为源操作数。
18.—种微处理器,具有定义有条件加载指令的指令集架构,所述微处理器包括: 其中所述有条件加载指令指定目标寄存器、基址寄存器、以及偏移量,并且所述有条件加载指令指定所述基址寄 存器待更新; 指令编译器,将所述有条件加载指令编译成至少两个微指令,其中所述微指令的编码方式与由所述指令集架构定义的指令的编码方式不相同;以及乱序执行流水线,包括执行所述微指令的复数个执行单元; 其中为了执行所述微指令的第一个微指令,一个所述执行单元接收所述目标寄存器的在前值,并且作为响应该一个所述执行单元从存储器读取数据且该一个所述执行单元提供第一结果,如果满足条件则该第一结果是所述数据且如果不满足所述条件则该第一结果是所述目标寄存器的所述在前值; 其中为了执行所述微指令的第二个微指令,一个所述执行单元接收所述偏移量及所述基址寄存器的在前值,并且作为响应,该一个执行单元计算所述偏移量与所述基址寄存器的所述在前值的总和且该一个执行单元提供第二结果,如果满足所述条件则所述第二结果是所述总和,并且如果不满足所述条件,则所述第二结果是所述基址寄存器的所述在前值; 其中所述目标寄存器的所述在前值包括由执行一个微指令所产生的结果,其中所述微指令是关于所述第一个微指令的所述目标寄存器的次序上最近的在前写入者; 其中所述基址寄存器的所述在前值包括由执行一个微指令所产生的结果,其中所述微指令是关于所述第二微指令的所述基址寄存器的次序上最近的在前写入者。
19.根据权利要求18所述的微处理器,其中由该一个所述执行单元接收的所述偏移量是一个立即值, 其中所述有条件加载指令指定所述立即值。
20.根据权利要求19所述的微处理器,其中如果所述有条件加载指令指定所述基址寄存器不进行更新,则然后所述指令编译器将所述有条件加载指令编译成一单个微指令而不是至少两个微指令,其中所述单个微指令是所述第一个微指令。
21.根据权利要求18所述的微处理器,其中由该一个执行单元接收的所述偏移量从偏移寄存器中接收,其中所述有条件加载指令指定所述偏移寄存器。
22.根据权利要求18所述的微处理器,其中所述有条件加载指令指定从中待读出所述数据的所述寄存器中的单元地址是所述基址寄存器数值与立即值的总和,其中所述指令编译器发出所述第一个微指令以命令所述执行单元将所述地址计算为所述基址寄存器的所述在前值与所述立即值的所述总和。
23.根据权利要求18所述的微处理器,其中所述有条件加载指令指定所述存储单元的所述地址是所述基址寄存器数值,其中所述指令编译器发出所述第一个微指令以命令所述执行单元将所述地址计算为所述基址寄存器的所述在前值。
24.根据权利要求18所述的微处理器,进一步包括: 寄存器文件,其中对于执行所述微指令的每一个所述执行单元,所述寄存器文件包括最多两个读端口以对所述执行单元同时提供所述偏移量及所述基址寄存器的所述在前值; 其中由所述有条件加载指令指定的所述目标寄存器是所述寄存器文件中的寄存器,所述寄存器是与所述基址寄存器及提供所述偏移量的偏移寄存器不相同的寄存器。
25.一种微处理器的操作方法,其中所述微处理器具有定义有条件加载指令的指令集架构,其中所述有条件加载指令指定目标寄存器、基址寄存器、以及偏移量,并且所述有条件加载指令指定所述基址寄存器待更新,所述微处理器的操作方法包括: 将所述有条件加载指令编译成至少两个微指令,其中所述微指令的编码方式与由所述指令集架构定义的指令的编码方式不相同;以及通过所述微处理器的乱序执行流水线执行所述微指令; 其中所述执行所述微指令的第一个微指令包括接收所述目标寄存器的在前值,并且作为响应从寄存器读取数据且提供一个第一结果,如果满足条件则所述第一结果是所述数据,并且如果不满足所述条件则所 述第一结果是所述目标寄存器的所述在前值; 其中所述执行所述微指令的第二个微指令包括接收所述偏移量及所述基址寄存器的在前值,并且作为响应计算所述偏移量与所述基址寄存器的所述在前值的总和且提供一个第二结果,如果满足所述条件则所述第二结果是所述总和,如果不满足所述条件则所述第二结果是所述基址寄存器的所述在前值; 其中所述目标寄存器的所述在前值包括由执行一个微指令所产生的结果,其中所述微指令是关于所述第一个微指令的所述目标寄存器的次序上最近的在前写入者; 其中所述基址寄存器的所述在前值包括由执行一个微指令所产生的结果,其中所述微指令是关于所述第二微指令的所述基址寄存器的次序上最近的在前写入者。
26.根据权利要求25所述的微处理器的操作方法,其中所述偏移量是立即值,其中所述有条件加载指令指定所述立即值。
27.根据权利要求26所述的微处理器的操作方法,其中如果所述有条件加载指令指定所述基址寄存器不进行更新,则然后所述编译包括将所述有条件加载指令编译成单个微指令而不是至少两个微指令,其中所述单个微指令是所述第一个微指令。
28.根据权利要求25所述的微处理器的操作方法,其中所述偏移量从偏移寄存器接收,其中所述有条件加载指令指定所述偏移寄存器。
29.根据权利要求25所述的微处理器的操作方法,其中所述有条件加载指令指定从中待读出所述数据的所述寄存器中的单元地址是所述基址寄存器数值与立即值的总和,其中所述编译包括发出所述第一个微指令以命令将所述地址计算为所述基址寄存器的所述在前值与所述立即值的所述总和。
30.根据权利要求25所述的微处理器的操作方法,其中所述有条件加载指令指定所述存储单元的所述地址是所述基址寄存器数值,其中所述编译包括发出所述第一个微指令以命令将所述地址计算为所述基址寄存器的所述在前值。
31.一种微处理器,具有定义有条件加载指令的指令集架构,所述微处理器包括: 寄存器文件; 指令编译器,将所述有条件加载指令编译成至少两个微指令,其中所述有条件加载指令指定所述寄存器文件的目标寄存器以及源寄存器;以及 乱序执行流水线,包括执行所述微指令的复数个执行单元; 其中为了执行所述微指令的第一个微指令,一个所述执行单元接收来自所述寄存器文件的所述源寄存器的源操作数,该一个所述执行单元从存储单元读取数据,其中所述存储单元的地址随所述源操作数而变化,并且该一个所述执行单元提供所述数据作为第一结果; 其中为了执行所述微指令的第二个微指令,一个所述执行单元接收所述目标寄存器的在前值及所述第一结果,并且作为响应该一个执行单元提供第二结果,如果满足条件则所述第二结果是所述第一结果,并且如果不满足所述条件则所述第二结果是所述目标寄存器的所述在前值;其中所述目标寄存器的所述在前值包括由执行一个微指令所产生的结果,其中所述微指令是关于所述第二个微指令的所述目标寄存器的次序上最近的在前写入者。
32.根据权利要求31所述的微处理器, 其中由所述有条件加载指令指定的所述寄存器文件的所述源寄存器是最多N个不相同的源寄存器,其中由所述有条件加载指令指定的所述目标寄存器是所述寄存器文件的寄存器,该寄存器是与由所述有条件加载指令指定的所有N个不相同的源寄存器不相同的寄存器,其中N为至少两个; 其中对于执行所述微指令的每一个所述执行单元,所述寄存器文件包括最多N个读端口以同时提供最多N个源操作数给所述执行单元。
33.根据权利要求31所述的微处理器,其中为了执行所述第一个微指令,如果不满足所述条件,则所述执行单元避免从所述存储器读取所述数据且所述执行单元提供不同的数据作为所述第一结果。
34.根据权利要求31所述的微处理器,其中为了执行所述第一个微指令,如果不满足所述条件,则所述执行单元避免改变所述微处理器的架构状态。
35.根据权利要求31所述的微处理器, 其中所述有条件加载指令进一步指定如果满足所述条件,则使用从中读取所述数据的所述存储单元的地址来更新基址寄存器,其中所述基址寄存器是由所述有条件加载指令指定的所述寄存器文件的所述源寄存器的一个源寄存器; 其中所述至少两个微指令包括一个第三微指令,所述第三微指令指定所述基址寄存器作为所述第三微指令的目标寄存器,其中为了执行所述第三微指令,一个所述执行单元接收所述基址寄存器的在前值及偏移量,并且作为响应该一个所述执行单元提供第三结果,如果满足所述条件则所述第三结果是所述偏移量与所述基址寄存器的所述在前值的总和,并且如果不满足所述条件则所述第三结果所述基址寄存器的所述在前值; 其中所述基址寄存器的所述在前值包括由执行一个微指令所产生的结果,其中所述微指令是关于所述第三微指令的所述基址寄存器的次序上最近的在前写入者。
36.一种微处理器的操作方法,其中所述微处理器具有定义有条件加载指令的指令集架构且具有寄存器文件,所述微处理器的操作方法包括: 将所述有条件加载指令编译成至少两个微指令,其中所述有条件加载指令指定所述寄存器文件的目标寄存器及源寄存器;以及 通过所述微处理器的乱序执行流水线执行所述微指令; 其中所述执行所述微指令的第一个微指令包括从所述寄存器文件的所述源寄存器接收源操作数,从存储单元读取数据,其中所述存储单元的地址随着所述源操作数而变化,并且将所述数据提供为第一结果; 其中所述执行所述微指令的第二个微指令包括接收所述目标寄存器的在前值及所述第一结果,并且作为响应提供第二结果,其中当满足条件时所述第二结果是所述第一结果,并且如果不满足所述条件时所述第二结果是所述目标寄存器的所述在前值; 其中所述目标寄 存器的所述在前值包括由执行一个微指令所产生的结果,其中所述微指令是关于所述第二微指令的所述目标寄存器的次序上最近的在前写入者。
37.根据权利要求36所述的微处理器的操作方法,其中所述执行所述第一个微指令包括如果不满足所述条件则避免从所述存储器读取所述数据且提供不同的数据作为所述第一结果。
38.根据权利要求36所述的微处理器的操作方法,其中所述执行所述第一个微指令包括如果不满足所述条件则避免改变所述微处理器的架构状态。
39.根据权利要求36所述的微处理器的操作方法, 其中所述有条件加载指令进一步指定如果满足所述条件,则基址寄存器使用从中读出所述数据的所述存储单元的地址进行更新,其中所述基址寄存器是由所述有条件加载指令指定的所述寄存器文件的所述源寄存器的一个源寄存器; 其中所述至少两个微指令包括一个第三微指令,所述第三微指令指定所述基址寄存器作为所述第三微指令的目标寄存器; 其中所述执行所述第三微指令包括接收所述基址寄存器的在前值及一个偏移量,并且作为响应提供一个第三结果,如果满足所述条件则所述第三结果是所述偏移量与所述基址寄存器的所述在前值的总和,并且如果不满足所述条件则所述第三结果是所述基址寄存器的所述在前值; 其中所述基址寄存器的所述在前值包括由执行一个微指令所产生的结果,其中所述微指令是关于所述第三微 指令的所述基址寄存器的次序上最近的在前写入者。
【文档编号】G06F9/30GK103907089SQ201280027858
【公开日】2014年7月2日 申请日期:2012年4月6日 优先权日:2011年4月7日
【发明者】G·格伦·亨利, 杰勒德·M·科尔, 科林·埃迪, 罗德尼·E·胡克, 特里·帕克斯 申请人:威盛电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1