CN102707930A - 寄存器换名系统及方法 - Google Patents
寄存器换名系统及方法 Download PDFInfo
- Publication number
- CN102707930A CN102707930A CN201210125393XA CN201210125393A CN102707930A CN 102707930 A CN102707930 A CN 102707930A CN 201210125393X A CN201210125393X A CN 201210125393XA CN 201210125393 A CN201210125393 A CN 201210125393A CN 102707930 A CN102707930 A CN 102707930A
- Authority
- CN
- China
- Prior art keywords
- name
- calling
- unit
- register
- renaming
- 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.)
- Granted
Links
Images
Landscapes
- Advance Control (AREA)
Abstract
本发明公开了一种寄存器换名系统,包括第一换名单元和第二换名单元,所述第一换名单元,对所有经过译码的操作进行换名;所述第二换名单元,对依存对象不确定的操作进行再次换名。本发明寄存器换名系统,在寄存器换名时,对于依存对象不确定的Operand给与2次换名。一个是CPU自身拥有的换名,一个是提案的换名。换名的同时利用MP(MappingTable)和ST(S-tagTable)保持状态。因为使用了原来换名的资源,所以硬件的资源没有大幅度的增加。如果出现预测错误时,用新的换名并寻找正确的依存对象,从而得到正确地执行。对处理速度得到了显著的提高。
Description
技术领域
本发明涉及计算机处理器领域,特别是涉及一种寄存器换名系统及方法。
背景技术
处理器是一种可以运算计算机程序以执行算术计算、数据置换等等的设备。微处理器是这样一种类型的处理器,其将处理器的大多数功能或所有功能都合并在单个集成电路上,可以通过同时将多个指令分派给处理器中的冗余的运行资源而能够在一个时钟周期中运行不止一个指令。当运行指令和微操作时,处理器通常从寄存器中读取源操作数并将结果或目标操作数存储在寄存器中。寄存器是处理器中的临时存储单元,寄存器通常被用于保存供处理器使用的算术和其他结果。
寄存器重命名是微处理器设计中用于通过允许指令无序执行来提高性能的一种公知技术。程序由对数值进行运算的指令组成。指令必须对这些数值进行命名,以便将他们相互区分。一个典型的指令例如可以是:将X和Y相加,并将结果放到Z中。在该指令中,X、Y和Z是存储位置的名字。为了具有紧凑的指令编码,大多数处理器指令集具有很小一组特定位置能够被直接命名。在更小的处理器中,这些位置的名字直接对应于寄存器文件的元素。
随着中央处理器(CPU)的pipeline段数的增加,分支预测错误错带来的损失将越来越大。以图1所示的分支命令为例,命令A是分支命令,他们有2种情况可能发生,一个就是执行ABCDEFGH的路径,另一个就是执行AIJCDEFGH的路径。
现有技术的具体实行方法是,当命令A被取出是,为了不间断CPU的运作,现在的中央处理器大都采用了分支预测的手段来预测分支命令A之后要被执行的命令。如果预测正确,CPU将不间断执行。如果预测失败,CPU将取消A之后的命令,在重新取出正确的命令。用上面的例子进一步说明,如果预测的是BCDEFGH,那么CPU将取出BCDEFGH并执行,当A执行完毕发现预测的路径为错误将删除BCDEFGH,再度读取IJCDEFGH。但是在这种方法下,我们发现CDEFGH是被读取了2次和删除了一次。所以说中央处理器在处理分支预测错误是产生了浪费。
现有的方法主要有文献一(E. Rotenberg, Q. Jacobsen, and J. Smith.“A Study of Control Independence in Superscalar Processors”,Proc. 5th ISCA, pp.115-124, January 1999.)公开的方法,将所有的命令都做了重命名,这样需要需要大量的硬件支持,比较浪费资源。
另一个文献(A. Gandhi, H. Akkary, and S. Srinivasan.“Reducing Branch Misprediction Penalty via Selective Branch Recovery”,Proc. 10th HPCA, pp.254-265, Feb.2004.)公开的方法只能针对特殊情况,没有普遍意义。
发明内容
本发明主要解决的技术问题是提供一种寄存器换名系统,能够有效提高处理速度,避免不必要的浪费。
为解决上述技术问题,本发明采用的一个技术方案是:提供一种寄存器换名系统,包括第一换名单元和第二换名单元,
所述第一换名单元,对所有经过译码的操作进行换名;
所述第二换名单元,对依存对象不确定的操作进行再次换名。
在本发明一个较佳实施例中,所述第一换名单元包括:第一分发队列单元和第一映射表,所述第一分发队列单元保存换名后的操作队列,等待分发;所述第一映射表保存操作标签和寄存器的关系。
在本发明一个较佳实施例中,所述第二换名单元包括第二分发队列单元和第二映射表,所述第二分发队列单元保存双重换名后的操作队列,等待分发;所述第二映射表保存追加的操作标签和寄存器的关系。
本发明的另一个目的是提供一种寄存器换名方法,具体步骤包括:
(100)提供一种寄存器换名系统,包括第一换名单元和第二换名单元;
(200)、对所有经过译码的指令进行换名;
(300)、判断操作是否为依存对象不确定的操作,是则对该操作进行再次换名,将进行双重换名后的操作依次保存在第二换名单元中;
(400)、当出现预测错误时,对错误的指令进行更正。
在本发明一个较佳实施例中,所述第一换名单元包括:第一分发队列和第一映射表,所述第一分发队列单元保存换名后的操作队列,等待分发;所述第一映射表保存操作标签和寄存器的关系;所述步骤(200)中,将所述换名后的操作依次保存到第一分发队列中。
在本发明一个较佳实施例中,所述第二换名单元包括第二分发队列和第二映射表,所述第二分发队列保存双重换名后的操作队列,等待分发;所述第二映射表保存追加的操作标签和寄存器的关系;所述步骤(300)中,将进行双重换名后的操作依次保存在第二分发队列中。
本发明的有益效果是:本发明寄存器换名系统,在寄存器换名时,对于依存对象不确定的Operand给与2次换名。一个是CPU自身拥有的换名,一个是提案的换名。换名的同时利用MP( Mapping Table ) 和ST(S-tag Table)保持状态。因为使用了原来换名的资源,所以硬件的资源没有大幅度的增加。如果出现预测错误时,用新的换名并寻找正确的依存对象,从而得到正确地执行。对处理速度得到了显著的提高。
附图说明
图1是一种常见分支命令执行结构;
图2是本发明寄存器换名系统的结构示意图;
图3是本发明寄存器换名方法的一种优选实施例的换名流程示意图;
图4是图3预测错误后改正的流程示意图;
图5所示为本发明寄存器换名方法的检测结果图。
具体实施方式
下面结合附图对本发明的较佳实施例进行详细阐述,以使本发明的优点和特征能更易于被本领域技术人员理解,从而对本发明的保护范围做出更为清楚明确的界定。
请参阅图2,本发明实施例包括:
一种寄存器换名系统,一种寄存器换名系统,包括:指令缓存区(I-cache)、指令提取(Fetch)模块、指令译码队列(Decode queue)、指令译码(Decode) 模块和分派单元,依次进行数据传输。
所述分派单元主要完成从指令提取队列经过译码和相关性检测的指令送到相应的发射队列以及指令重新定序缓冲区的过程。
所述分派单元包括依次进行数据传输的换名单元、分派(Dispatch)模块、发布队列(Issue queue)、发布(Issue)单元和重定序缓冲区(Reorder Buffer),所述换名单元包括第一换名模块和第二换名模块,所述第一换名模块对所有经过译码的操作进行换名,换名后的操作队列保存在第一分发队列(Dispatch queue)中,等待分发;所述第二换名模块,对依存对象不确定的操作进行再次换名,双重换名后的操作队列保存在第二分发队列(Re- Dispatch queue)中,等待分发。
图1所示A为分支命令,可能执行B操作,也可能执行I、F,一定会执行的对象命令为C、D、E、F、G、H。
我们发现C的源操作数(Source Operand)的R1(左)为依存对象不确定的操作数(Operand)。
D的源操作数(Source Operand)的R2也为依存对象不确定的操作数(Operand)。
E的源操作数(Source Operand)的R3也为依存对象不确定的操作数(Operand)。
所以换名(Renaming)时候给与2个Tag。
结合图3所示,以预测命令预测执行B操作为例,
Dispatch Queue是等待发行的命令的Queue,保存Renaming后的ABCDE的Queue;
Re-Dispatch Queue是保存了双重Renaming的命令(C’,D’,E’);
MT为Mapping Table,ST为secondTag(追加Tag的Table)它保存这追加的tag(Stag)和Register的关系。
命令被Renaming,这时候C,D,E是提案手法双重寄存器换命的对象,
因为C的Source Operand的R1(左)为依存对象不确定的操作Operand;
D的Source Operand的R2也为依存对象不确定的Operand;
E的Source Operand的R3也为依存对象不确定的Operand;
所以给它们进行双重命名。
本来的命名结果存放在Dispatch Queue,tag和Register的关系保存在MT中;
追加的命名的命令存放在Re-dispatch Queue中,Stag和Register的关系保存在ST中。
图4所示为预测命令错误时的操作流程图;
当错误发生时,首先加入命令IJ,更新MT。
其次我们用,追加的S-tag来寻找依赖对象。
首先查看check命令C’的 S1 我们发现S1->R1->P1;
因为P1在A错误后被更改,所以S1将被更改为P1再执行;
查看check命令D’的S2我们发现S2->R2->P16;
因为P2在A错误后被更改,所以S2将被更改为P16再执行;
查看check命令E’的S3我们发现S3->R3->P3;
因为P3在A错误后未被更改,所以该命令不用再执行。这也就是本发明方法能够提高效率的原因。
检测结果见图5:
如图5所示,利用Commbench 和Specint2000的进行了评价,本发明的寄存器换名方法最大达到了29.52%的提速,平均8%左右的提速。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (6)
1.一种寄存器换名系统,其特征在于,包括第一换名单元和第二换名单元,
所述第一换名单元,对所有经过译码的操作进行换名;
所述第二换名单元,对依存对象不确定的操作进行再次换名。
2.根据权利要求1所述的寄存器换名系统,其特征在于,所述第一换名单元包括:第一分发队列和第一映射表,所述第一分发队列保存换名后的操作队列,等待分发;所述第一映射表保存操作标签和寄存器的关系。
3.根据权利要求1所述的寄存器换名系统,其特征在于,所述第二换名单元包括第二分发队列和第二映射表,所述第二分发队列保存双重换名后的操作队列,等待分发;所述第二映射表保存追加的操作标签和寄存器的关系。
4.一种寄存器换名方法,其特征在于,具体步骤包括:
(100)提供一种寄存器换名系统,包括第一换名单元和第二换名单元;
(200)、对所有经过译码的操作进行换名;
(300)、判断操作是否为依存对象不确定的操作,是则对该操作进行再次换名,将进行双重换名后的操作依次保存在第二换名单元中;
(400)、当出现预测错误时,对错误的操作进行更正。
5.根据权利要求4所述的一种寄存器换名方法,其特征在于,所述第一换名单元包括:第一分发队列和第一映射表,所述第一分发队列单元保存换名后的操作队列,等待分发;所述第一映射表保存操作标签和寄存器的关系;所述步骤(200)中,将所述换名后的操作依次保存到第一分发队列中。
6.根据权利要求4所述的一种寄存器换名方法,其特征在于,所述第二换名单元包括第二分发队列和第二映射表,所述第二分发队列保存双重换名后的操作队列,等待分发;所述第二映射表保存追加的操作标签和寄存器的关系;所述步骤(300)中,将进行双重换名后的操作依次保存在第二分发队列中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210125393.XA CN102707930B (zh) | 2012-04-26 | 2012-04-26 | 寄存器换名系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210125393.XA CN102707930B (zh) | 2012-04-26 | 2012-04-26 | 寄存器换名系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102707930A true CN102707930A (zh) | 2012-10-03 |
CN102707930B CN102707930B (zh) | 2015-04-08 |
Family
ID=46900759
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210125393.XA Expired - Fee Related CN102707930B (zh) | 2012-04-26 | 2012-04-26 | 寄存器换名系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102707930B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060106923A1 (en) * | 2004-06-08 | 2006-05-18 | Rajeev Balasubramonian | Dynamically managing the communication-parallelism trade-off in clustered processors |
CN101036120A (zh) * | 2004-11-29 | 2007-09-12 | 英特尔公司 | 频率和电压缩放架构 |
US20100169617A1 (en) * | 2008-12-25 | 2010-07-01 | Stmicroelectronics (Beijing) R&D Co. Ltd. | Power efficient system for recovering an architecture register mapping table |
-
2012
- 2012-04-26 CN CN201210125393.XA patent/CN102707930B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060106923A1 (en) * | 2004-06-08 | 2006-05-18 | Rajeev Balasubramonian | Dynamically managing the communication-parallelism trade-off in clustered processors |
CN101036120A (zh) * | 2004-11-29 | 2007-09-12 | 英特尔公司 | 频率和电压缩放架构 |
US20100169617A1 (en) * | 2008-12-25 | 2010-07-01 | Stmicroelectronics (Beijing) R&D Co. Ltd. | Power efficient system for recovering an architecture register mapping table |
Also Published As
Publication number | Publication date |
---|---|
CN102707930B (zh) | 2015-04-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2972844B1 (en) | Method and apparatus for efficient scheduling for asymmetrical execution units | |
CN101694613B (zh) | 不对准存储器存取预测 | |
US8433885B2 (en) | Method, system and computer-accessible medium for providing a distributed predicate prediction | |
US20180210735A1 (en) | System and method for using a branch mis-prediction buffer | |
US20030126408A1 (en) | Dependence-chain processor | |
US20060190700A1 (en) | Handling permanent and transient errors using a SIMD unit | |
CN102934075A (zh) | 用于使用预先通知技术改变程序的顺序流程的方法和设备 | |
CN101776989B (zh) | 乱序执行微处理器及提升效能的方法、执行方法 | |
EP2972783B1 (en) | Method and apparatus to avoid deadlock during instruction scheduling using dynamic port remapping | |
CN101147125A (zh) | 用于直接累积未调准数据的可写入分段字的架构型寄存器 | |
US20090328057A1 (en) | System and method for reservation station load dependency matrix | |
CN101268440A (zh) | 具有固定数量的可变长度指令的指令高速缓存器 | |
US9317285B2 (en) | Instruction set architecture mode dependent sub-size access of register with associated status indication | |
CN104156197A (zh) | 微处理器以及微处理器操作方法 | |
CN110928577B (zh) | 一种带异常返回的向量存储指令的执行方法 | |
CN105793825A (zh) | 可从过多的近似计算误差中恢复的处理器 | |
JP2015133126A (ja) | プロシージャリターンシーケンスを加速するための方法およびシステム | |
US20160283247A1 (en) | Apparatuses and methods to selectively execute a commit instruction | |
EP2972791B1 (en) | Method and apparatus for forwarding literal generated data to dependent instructions more efficiently using a constant cache | |
CN101727312B (zh) | 一种支持自动纠错功能的返回地址栈实现方法 | |
CN104216681A (zh) | 一种cpu指令处理方法和处理器 | |
JP2843750B2 (ja) | スーパースカラ・プロセッサ・システムにおける非逐次命令ディスパッチおよび実行のための方法およびシステム | |
CN102637149B (zh) | 一种处理器及其运行方法 | |
CN110515656B (zh) | 一种casp指令的执行方法、微处理器及计算机设备 | |
US20170344368A1 (en) | Identifying an effective address (ea) using an interrupt instruction tag (itag) in a multi-slice processor |
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: 20150408 Termination date: 20210426 |