CN105308557B - 一种数据处理装置及方法 - Google Patents
一种数据处理装置及方法 Download PDFInfo
- Publication number
- CN105308557B CN105308557B CN201480000412.3A CN201480000412A CN105308557B CN 105308557 B CN105308557 B CN 105308557B CN 201480000412 A CN201480000412 A CN 201480000412A CN 105308557 B CN105308557 B CN 105308557B
- Authority
- CN
- China
- Prior art keywords
- register
- source
- module
- destination
- physical
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 53
- 238000000034 method Methods 0.000 title claims abstract description 39
- 238000003672 processing method Methods 0.000 claims description 31
- 230000006399 behavior Effects 0.000 description 5
- 238000013507 mapping Methods 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
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
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
本发明的实施例提供一种数据处理装置及方法,涉及计算机领域,能够有效提高寄存器堆缓存子模块的使用效率。所述数据处理装置,包括:指令预译码模块、指令缓存模块、寄存器堆控制模块、重命名模块、寄存器堆缓存子模块,获取N个源寄存器号和N个目的寄存器号;当第i目的寄存器号满足第一预设条件时,标记所述第i目的寄存器号,将标记的所述第i目的寄存器号映射到寄存器堆缓存子模块中的第一物理寄存器的寄存器号。本发明实施例提供的数据处理装置及方法用于处理数据。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种数据处理装置及方法。
背景技术
随着超标量技术和多线程技术的发展,超标量通用处理器成为处理器体系架构的一个重要组成部分。超标量通用处理器一般包括IFU(Instruction Fetch Unit,指令读取单元)模块、指令预译码(Pre-decoder)模块、IB(Instruction Buffer,指令缓存)模块、指令译码(Decoder)模块、重命名(Rename)模块、RF(Register File,寄存器堆)模块、Exe(Execute Unit,执行单元)模块和WB(Write Back,写回)等模块,其中,Rename模块可以采用重命名技术将一个体系结构寄存器的寄存器号映射到物理寄存器的寄存器号,所述物理寄存器为多个空闲的物理寄存器中任意一个,所述体系结构寄存器是处理器指令架构的组成部分,RF模块用于存储指令运行过程中的中间结果及超标量通用处理器的运行状态,随着现代处理器中使用的物理寄存器越来越多,RF一般包含RFC(Register File Cache,寄存器堆缓存)子模块和MRF(Main Register File,主寄存器堆)子模块,RFC子模块一般包含最近使用的物理寄存器,MRF子模块包括所有物理寄存器,RFC子模块中的物理寄存器是MRF子模块中的物理寄存器的一个子集。
现有技术中,首先IFU模块从存储器或高速缓冲存储器中读取指令,并将指令传输至Pre-decoder模块,Pre-decoder模块对指令进行预译码得到指令类型、源寄存器号和目的寄存器号,并将源寄存器号和目的寄存器号传输至IB模块,IB模块中存储了源寄存器号和目的寄存器号,再通过Decoder模块将源寄存器号和目的寄存器号传输至Rename模块,然后,Rename模块将源寄存器号映射到第一物理寄存器的寄存器号,将目的寄存器号映射到第二物理寄存器的寄存器号,并将所述第一物理寄存器的寄存器号和所述第二物理寄存器的寄存器号传输至RF模块,所述源寄存器号为指令的源操作数的体系结构寄存器的寄存器号,所述目的寄存器号为指令的目的操作数的体系结构寄存器的寄存器号,所述指令包括源操作数的体系结构寄存器的寄存器号和目的操作数的体系结构寄存器的寄存器号,所述第一物理寄存器为RFC子模块或MRF子模块中多个空闲的物理寄存器中任意一个,所述第二物理寄存器为RFC子模块或MRF子模块中多个空闲的物理寄存器中任意一个,所述第一物理寄存器的寄存器号和所述第二物理寄存器的寄存器号不同。
在RF模块中,RFC子模块读写速度快,支持多端口同时读写,但存储容量有限,MRF子模块存储容量大,但读写端口有限和读写速度慢。首先RFC子模块根据第一物理寄存器的寄存器号从所述第一物理寄存器中获取源操作数,RFC子模块再将所述源操作数传输至Exe模块,Exe模块对该源操作数进行运算得到目的操作数,WB模块再根据RFC子模块传输的第二物理寄存器的寄存器号将所述目的操作数写回到第二物理寄存器,所述第一物理寄存器为RFC子模块中的物理寄存器。
但是,当第一物理寄存器不在RFC子模块中时,RFC子模块根据第一物理寄存器的寄存器号在RFC子模块中获取不到源操作数,则需要MRF子模块根据第一物理寄存器的寄存器号从所述第一物理寄存器获取源操作数,同时MRF子模块将第一物理寄存器回填到RFC子模块中,导致第一物理寄存器可能覆盖RFC子模块中其他指令需要用的物理寄存器。因此,出现了RFC子模块的使用效率较低的问题。
发明内容
本发明的实施例提供一种数据处理装置及方法,能够有效提高RFC子模块的使用效率。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,提供一种数据处理装置,所述数据处理装置包括指令预译码Pre-decoder模块、指令缓存IB模块、寄存器堆控制RF-Ctl模块、重命名Rename模块、寄存器堆RF模块,所述RF模块包括寄存器堆缓存RFC子模块和主寄存器堆MRF子模块,其中,
所述寄存器堆控制模块,用于从所述指令预译码模块,或者所述指令缓存模块,或者所述指令预译码模块和所述指令缓存模块中获取N个源寄存器号和N个目的寄存器号;
所述寄存器堆控制模块还用于:
当第i目的寄存器号满足第一预设条件时,标记所述第i目的寄存器号,所述i为大于等于1且小于等于N的整数,所述N为大于等于2的整数;
所述重命名模块,用于将标记的所述第i目的寄存器号映射到所述寄存器堆缓存子模块中的第一物理寄存器的寄存器号,所述第一物理寄存器为所述寄存器堆缓存子模块中多个空闲的物理寄存器中任意一个。
结合第一方面,在第一种可实现方式中,
所述第一预设条件为所述第i目的寄存器号等于第i+1源寄存器号至第N源寄存器号中至少一个源寄存器号,所述i+1为小于等于N的整数。
结合第一种可实现方式,在第二种可实现方式中,
所述指令预译码模块,用于预译码至少一条指令,得到N个源寄存器号和N个目的寄存器号,每一个所述指令包括至少一个源寄存器号和至少一个目的寄存器号;
所述指令缓存模块用于存储所述指令。
结合第二种可实现方式,在第三种可实现方式中,
所述寄存器堆控制模块具体用于:
从所述指令缓存模块获取N个源寄存器号和N个目的寄存器号;
或者,直接从所述指令预译码模块获取N个源寄存器号和N个目的寄存器号;
或者,从所述指令缓存模块获取N-1个源寄存器号和N-1个目的寄存器号,从所述指令预译码模块获取第N源寄存器号和第N目的寄存器号。
结合第三种可实现方式,在第四种可实现方式中,
所述寄存器堆控制模块还用于:
当第i+1源寄存器号满足第二预设条件时,标记所述第i+1源寄存器号,所述i+1为小于等于N的整数;
所述重命名模块还用于:
将标记的所述第i+1源寄存器号映射到所述寄存器堆缓存子模块中的物理寄存器的寄存器号,所述物理寄存器的寄存器号为与所述第i+1源寄存器号相等的目的寄存器号被映射到的所述寄存器堆缓存子模块中的物理寄存器的寄存器号;
所述寄存器堆缓存子模块,用于根据所述物理寄存器的寄存器号从所述物理寄存器读取第一源操作数。
结合第四种可实现方式,在第五种可实现方式中,所述第二预设条件为所述第i+1源寄存器号等于第i目的寄存器号至第1目的寄存器号中的任意一个目的寄存器号,所述i+1为小于等于N的整数,或,所述第i+1源寄存器号等于所述N个源寄存器号中两个或两个以上的源寄存器号。
结合第五种可实现方式,在第六种可实现方式中,
所述重命名模块具体用于:
当所述第i+1源寄存器号等于第i目的寄存器号时,将标记的所述第i+1源寄存器号映射到所述寄存器堆缓存子模块中的所述第一物理寄存器的寄存器号;
所述寄存器堆缓存子模块具体用于:
根据所述第一物理寄存器的寄存器号从所述第一物理寄存器读取所述第一源操作数。
结合第五种可实现方式,在第七种可实现方式中,
所述寄存器堆控制模块还用于:
当第i+1目的寄存器号等于第i+2源寄存器号至第N源寄存器号中至少一个源寄存器号时,标记所述第i+1目的寄存器号,所述i+2为小于等于N的整数;
所述重命名模块还用于:
将标记的所述第i+1目的寄存器号映射到所述寄存器堆缓存子模块中的第二物理寄存器的寄存器号,所述第二物理寄存器为所述寄存器堆缓存子模块中多个空闲的物理寄存器中任意一个。
结合第七种可实现方式,在第八种可实现方式中,所述数据处理装置还包括执行单元Exe模块和写回WB模块,其中,
所述执行单元模块,用于获取所述第一源操作数和所述第二物理寄存器的寄存器号,根据所述第一源操作数运算得到第一目的操作数;
所述写回模块,用于根据所述第二物理寄存器的寄存器号将所述第一目的操作数写回到所述第二物理寄存器。
结合第三种可实现方式,在第九种可实现方式中,
所述重命名模块还用于:
当所述第i目的寄存器号不等于第i+1源寄存器号至第N源寄存器号中任意一个源寄存器号时,将所述第i目的寄存器号映射到所述主寄存器堆子模块中的第三物理寄存器的寄存器号,所述第三物理寄存器为所述主寄存器堆子模块中多个空闲的物理寄存器中任意一个。
结合第九种可实现方式,在第十种可实现方式中,
所述重命名模块还用于:
当所述第i+1源寄存器号不等于第i目的寄存器号至第1目的寄存器号中的任意一个目的寄存器号,或,所述第i+1源寄存器号不等于所述N个源寄存器号中任意一个源寄存器号时,将所述第i+1源寄存器号映射到所述主寄存器堆子模块中的第四物理寄存器的寄存器号,所述第四物理寄存器为所述主寄存器堆子模块中多个空闲的物理寄存器中任意一个。
结合第十种可实现方式,在第十一种可实现方式中,
所述主寄存器堆子模块,用于根据所述第四物理寄存器的寄存器号从所述第四物理寄存器读取第二源操作数。
结合第五种可实现方式或第十一种可实现方式中的任意一种,在第十二种可实现方式中,
所述重命名模块还用于:
当所述第i+1目的寄存器号不等于第i+2源寄存器号至第N源寄存器号中任意一个源寄存器号时,将所述第i+1目的寄存器号映射到所述主寄存器堆子模块中的第五物理寄存器的寄存器号,所述第五物理寄存器为所述主寄存器堆子模块中多个空闲的物理寄存器中任意一个。
结合第十二种可实现方式,在第十三种可实现方式中,
所述执行单元模块,用于获取所述第一源操作数和所述第五物理寄存器的寄存器号,根据所述第一源操作数运算得到第一目的操作数;
所述写回模块,用于根据所述第五物理寄存器的寄存器号将所述第一目的操作数写回到所述第五物理寄存器。
结合第十二种可实现方式,在第十四种可实现方式中,
所述执行单元模块还用于:
获取所述第二源操作数和所述第五物理寄存器的寄存器号,根据所述第二源操作数运算得到第二目的操作数;
所述写回模块还用于:
根据所述第五物理寄存器的寄存器号将所述第二目的操作数写回到所述第五物理寄存器。
第二方面,提供一种数据处理方法,用于数据处理装置,所述数据处理装置包括指令预译码Pre-decoder模块、指令缓存IB模块、寄存器堆控制RF-Ctl模块、重命名Rename模块、寄存器堆RF模块,所述RF模块包括寄存器堆缓存RFC子模块和主寄存器堆MRF子模块,其中,
从所述指令预译码模块,或者所述指令缓存模块,或者所述指令预译码模块和所述指令缓存模块中获取N个源寄存器号和N个目的寄存器号;
当第i目的寄存器号满足第一预设条件时,标记所述第i目的寄存器号,所述i为大于等于1且小于等于N的整数,所述N为大于等于2的整数;
将标记的所述第i目的寄存器号映射到所述寄存器堆缓存子模块中的第一物理寄存器的寄存器号,所述第一物理寄存器为所述寄存器堆缓存子模块中多个空闲的物理寄存器中任意一个。
结合第二方面,在第一种可实现方式中,所述第一预设条件为所述第i目的寄存器号等于第i+1源寄存器号至第N源寄存器号中至少一个源寄存器号,所述i+1为小于等于N的整数。
结合第一种可实现方式,在第二种可实现方式中,
在所述从所述指令预译码模块,或者所述指令缓存模块,或者所述指令预译码模块和所述指令缓存模块中获取N个源寄存器号和N个目的寄存器号之前,所述方法还包括:
预译码至少一条指令,得到N个源寄存器号和N个目的寄存器号,每一个所述指令包括至少一个源寄存器号和至少一个目的寄存器号;
存储所述指令。
结合第二种可实现方式,在第三种可实现方式中,
所述从所述指令预译码模块,或者所述指令缓存模块,或者所述指令预译码模块和所述指令缓存模块中获取所述N个源寄存器号和N个目的寄存器号包括:
从所述指令缓存模块获取N个源寄存器号和N个目的寄存器号;
或者,直接从所述指令预译码模块获取N个源寄存器号和N个目的寄存器号;
或者,从所述指令缓存模块获取N-1个源寄存器号和N-1个目的寄存器号,从所述指令预译码模块获取第N源寄存器号和第N目的寄存器号。
结合第三种可实现方式,在第四种可实现方式中,
在所述将标记的所述第i目的寄存器号映射到所述寄存器堆缓存子模块中的第一物理寄存器的寄存器号之后,所述方法还包括:
当第i+1源寄存器号满足第二预设条件时,标记所述第i+1源寄存器号,所述i+1为小于等于N的整数;
将标记的所述第i+1源寄存器号映射到所述寄存器堆缓存子模块中的物理寄存器的寄存器号,所述物理寄存器的寄存器号为与所述第i+1源寄存器号相等的目的寄存器号被映射到的所述寄存器堆缓存子模块中的物理寄存器的寄存器号;
根据所述物理寄存器的寄存器号从所述物理寄存器读取第一源操作数。
结合第四种可实现方式,在第五种可实现方式中,所述第二预设条件为所述第i+1源寄存器号等于第i目的寄存器号至第1目的寄存器号中的任意一个目的寄存器号,所述i+1为小于等于N的整数,或,所述第i+1源寄存器号等于所述N个源寄存器号中两个或两个以上的源寄存器号。
结合第五种可实现方式,在第六种可实现方式中,所述将标记的所述第i+1源寄存器号映射到所述寄存器堆缓存子模块中的物理寄存器的寄存器号包括:
当所述第i+1源寄存器号等于第i目的寄存器号时,将标记的所述第i+1源寄存器号映射到所述寄存器堆缓存子模块中的所述第一物理寄存器的寄存器号;
根据所述第一物理寄存器的寄存器号从所述第一物理寄存器读取所述第一源操作数。
结合第五种可实现方式,在第七种可实现方式中,在所述将标记的所述第i目的寄存器号映射到所述寄存器堆缓存子模块中的第一物理寄存器的寄存器号之后,所述方法还包括:
当第i+1目的寄存器号等于第i+2源寄存器号至第N源寄存器号中至少一个源寄存器号时,标记所述第i+1目的寄存器号,所述i+2为小于等于N的整数;
将标记的所述第i+1目的寄存器号映射到所述寄存器堆缓存子模块中的第二物理寄存器的寄存器号,所述第二物理寄存器为所述寄存器堆缓存子模块中多个空闲的物理寄存器中任意一个。
结合第七种可实现方式,在第八种可实现方式中,所述数据处理装置还包括执行单元Exe模块和写回WB模块,在所述将标记的所述第i+1目的寄存器号映射到所述寄存器堆缓存子模块中的第二物理寄存器的寄存器号之后,所述方法还包括:
获取所述第一源操作数和所述第二物理寄存器的寄存器号,根据所述第一源操作数运算得到第一目的操作数;
根据所述第二物理寄存器的寄存器号将所述第一目的操作数写回到所述第二物理寄存器。
结合第三种可实现方式,在第九种可实现方式中,在所述从所述指令预译码模块,或者所述指令缓存模块,或者所述指令预译码模块和所述指令缓存模块中获取N个源寄存器号和N个目的寄存器号之后,所述方法还包括:
当所述第i目的寄存器号不等于第i+1源寄存器号至第N源寄存器号中任意一个源寄存器号时,将所述第i目的寄存器号映射到所述主寄存器堆子模块中的第三物理寄存器的寄存器号,所述第三物理寄存器为所述主寄存器堆子模块中多个空闲的物理寄存器中任意一个。
结合第九种可实现方式,在第十种可实现方式中,在所述从所述指令预译码模块,或者所述指令缓存模块,或者所述指令预译码模块和所述指令缓存模块中获取N个源寄存器号和N个目的寄存器号之后,所述方法还包括:
当所述第i+1源寄存器号不等于第i目的寄存器号至第1目的寄存器号中的任意一个目的寄存器号,或,所述第i+1源寄存器号不等于所述N个源寄存器号中任意一个源寄存器号时,将所述第i+1源寄存器号映射到所述主寄存器堆子模块中的第四物理寄存器的寄存器号,所述第四物理寄存器为所述主寄存器堆子模块中多个空闲的物理寄存器中任意一个。
结合第十种可实现方式,在第十一种可实现方式中,在所述将所述第i+1源寄存器号映射到所述主寄存器堆子模块中的第四物理寄存器的寄存器号之后,所述方法还包括:
根据所述第四物理寄存器的寄存器号从所述第四物理寄存器读取第二源操作数。
结合第五种可实现方式,在第十二种可实现方式中,在所述根据所述物理寄存器的寄存器号从所述物理寄存器读取第一源操作数之后,所述方法还包括:
当所述第i+1目的寄存器号不等于第i+2源寄存器号至第N源寄存器号中任意一个源寄存器号时,将所述第i+1目的寄存器号映射到所述主寄存器堆子模块中的第五物理寄存器的寄存器号,所述第五物理寄存器为所述主寄存器堆子模块中多个空闲的物理寄存器中任意一个。
结合第十二种可实现方式,在第十三种可实现方式中,在所述将所述第i+1目的寄存器号映射到所述主寄存器堆子模块中的第五物理寄存器的寄存器号之后,所述方法还包括:
获取所述第一源操作数和所述第五物理寄存器的寄存器号,根据所述第一源操作数运算得到第一目的操作数;
根据所述第五物理寄存器的寄存器号将所述第一目的操作数写回到所述第五物理寄存器。
结合第十一种可实现方式,在第十四种可实现方式中,在所述根据所述第四物理寄存器的寄存器号从所述第四物理寄存器读取第二源操作数之后,所述方法还包括:
当所述第i+1目的寄存器号不等于第i+2源寄存器号至第N源寄存器号中任意一个源寄存器号时,将所述第i+1目的寄存器号映射到所述主寄存器堆子模块中的第五物理寄存器的寄存器号,所述第五物理寄存器为所述主寄存器堆子模块中多个空闲的物理寄存器中任意一个。
结合第十四现方式,在第十五种可实现方式中,在所述将所述第i+1目的寄存器号映射到所述主寄存器堆子模块中的第五物理寄存器的寄存器号之后,所述方法还包括:
获取所述第二源操作数和所述第五物理寄存器的寄存器号,根据所述第二源操作数运算得到第二目的操作数;
根据所述第五物理寄存器的寄存器号将所述第二目的操作数写回到所述第五物理寄存器。
本发明的实施例提供一种数据处理装置及方法,所述数据处理装置,包括:所述数据处理装置包括指令预译码Pre-decoder模块、指令缓存IB模块、寄存器堆控制RF-Ctl模块、重命名Rename模块、寄存器堆RF模块,所述RF模块包括寄存器堆缓存RFC子模块和主寄存器堆MRF子模块,其中,所述寄存器堆控制模块,用于从所述指令预译码模块,或者所述指令缓存模块,或者所述指令预译码模块和所述指令缓存模块中获取N个源寄存器号和N个目的寄存器号;所述寄存器堆控制模块还用于:当第i目的寄存器号满足第一预设条件时,标记所述第i目的寄存器号,所述i为大于等于1且小于等于N的整数,所述N为大于等于2的整数;所述重命名模块,用于将标记的所述第i目的寄存器号映射到所述寄存器堆缓存子模块中的第一物理寄存器的寄存器号,所述第一物理寄存器为所述寄存器堆缓存子模块中多个空闲的物理寄存器中任意一个。这样一来,当寄存器堆控制模块获取到的第i目的寄存器号满足第一预设条件时,标记第i目的寄存器号,重命名模块将所述第i目的寄存器号映射到寄存器堆缓存子模块的物理寄存器号,相对于现有技术,能够有效地提高寄存器堆缓存子模块的使用效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供一种现有技术的数据处理装置结构示意图;
图2为本发明实施例提供一种数据处理装置结构示意图;
图3为本发明实施例提供一种数据处理方法流程图;
图4为本发明实施例提供另一种数据处理方法流程图;
图5为本发明实施例提供又一种数据处理方法流程图;
图6为本发明实施例提供再一种数据处理方法流程图;
图7为本发明实施例提供另再一种数据处理方法流程图;
图8为本发明实施例提供又再一种数据处理方法流程图;
图9为本发明实施例提供再再一种数据处理方法流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
现有技术中,如图1所示,数据处理装置10包括指令读取单元(IFU)模块101、指令预译码(Pre-decoder)模块102、指令缓存(IB)模块103、指令译码(Decoder)模块104、重命名(Rename)模块105、寄存器堆(RF)模块106、执行单元(Exe)模块107和写回(WB)模块108,其中,寄存器堆(RF)模块106包括寄存器堆缓存(RFC)子模块1061和主寄存器堆(MRF)子模块1062。所述数据处理装置10可以是超标量通用处理器。
其中,指令读取单元模块101与指令预译码模块102连接,指令预译码模块102与指令缓存模块103连接,指令缓存模块103与指令译码模块104连接,指令译码模块104与重命名模块105连接,重命名模块105与寄存器堆缓存子模块1061连接,寄存器堆缓存子模块1061与主寄存器堆子模块1062连接,主寄存器堆子模块1062与执行单元模块107连接,执行单元模块107与写回模块108连接,写回模块108分别连接寄存器堆缓存子模块1061和主寄存器堆子模块1062,寄存器堆缓存子模块1061再与执行单元模块107连接。
本发明实施例提供一种数据处理装置20,如图2所示,包括指令读取单元(IFU)模块201、指令预译码(Pre-decode)模块202、指令缓存(IB)模块203、寄存器堆控制(RF-Ctl)模块204、指令译码(Decoder)模块205、重命名(Rename)模块206、寄存器堆(RF)模块207、执行单元(Exe)模块208、写回(WB)模块209,所述寄存器堆(RF)模块207包括寄存器堆缓存(RFC)子模块2071和主寄存器堆(MRF)子模块2072。所述数据处理装置20可以是超标量通用处理器。
其中,指令读取单元(IFU)模块201与指令预译码(Pre-decoder)模块202连接,指令预译码(Pre-decoder)模块202与指令缓存(IB)模块203连接,指令缓存(IB)模块203与指令译码(Decoder)模块205连接,指令译码(Decoder)模块205与重命名(Rename)模块206连接,重命名(Rename)模块206与寄存器堆缓存(RFC)子模块2071连接,寄存器堆缓存(RFC)子模块2071与主寄存器堆子(MRF)模块2072连接,主寄存器堆(MRF)子模块2072与执行单元(Exe)模块208连接,执行单元(Exe)模块208与写回(WB)模块209连接,写回(WB)模块209分别连接寄存器堆缓存(RFC)子模块2071与主寄存器堆(MRF)子模块2072,寄存器堆缓存(RFC)子模块2071再与执行单元(Exe)模块208连接,寄存器堆控制(RF-Ctl)模块204分别连接指令预译码(Pre-decoder)模块202、指令缓存(IB)模块203和重命名(Rename)模块206。
所述寄存器堆控制模块204,用于从所述指令预译码模块202,或者所述指令缓存模块203,或者所述指令预译码模块202和所述指令缓存模块203中获取N个源寄存器号和N个目的寄存器号。
所述寄存器堆控制模块204还用于当第i目的寄存器号满足第一预设条件时,标记所述第i目的寄存器号,所述i为大于等于1且小于等于N的整数,所述N为大于等于2的整数。
所述第一预设条件为所述第i目的寄存器号等于第i+1源寄存器号至第N源寄存器号中至少一个源寄存器号,所述i+1为小于等于N的整数。
所述重命名模块206用于将标记的所述第i目的寄存器号映射到所述寄存器堆缓存子模块2071中的第一物理寄存器的寄存器号,所述第一物理寄存器为所述寄存器堆缓存子模块2071中多个空闲的物理寄存器中任意一个。
这样一来,当寄存器堆控制模块获取到的第i目的寄存器号满足第一预设条件时,标记第i目的寄存器号,重命名模块将所述第i目的寄存器号映射到寄存器堆缓存子模块的物理寄存器号,相对于现有技术,能够有效地提高寄存器堆缓存子模块的使用效率。
所述指令预译码模块202,用于预译码至少一条指令,得到N个源寄存器号和N个目的寄存器号,每一个所述指令包括至少一个源寄存器号和至少一个目的寄存器号。
所述指令缓存模块203用于存储所述指令。
所述寄存器堆控制模块204具体用于:
从所述指令缓存模块203获取N个源寄存器号和N个目的寄存器号;
或者,直接从指令预译码模块202获取N个源寄存器号和N个目的寄存器号;
或者,从指令缓存模块203获取N-1个源寄存器号和N-1个目的寄存器号,从指令预译码模块202获取第N源寄存器号和第N目的寄存器号。
所述寄存器堆控制模块204还用于:
当第i+1源寄存器号满足第二预设条件时,标记所述第i+1源寄存器号,所述i+1为小于等于N的整数。
所述第二预设条件为所述第i+1源寄存器号等于第i目的寄存器号至第1目的寄存器号中的任意一个目的寄存器号,所述i+1为小于等于N的整数,或,所述第i+1源寄存器号等于所述N个源寄存器号中两个或两个以上的源寄存器号。
所述重命名模块206还用于:
将标记的所述第i+1源寄存器号映射到所述寄存器堆缓存子模块中的物理寄存器的寄存器号,所述物理寄存器的寄存器号为与所述第i+1源寄存器号相等的目的寄存器号被映射到的所述寄存器堆缓存子模块中的物理寄存器的寄存器号。
所述寄存器堆缓存子模块2071,用于根据所述物理寄存器的寄存器号从所述物理寄存器读取第一源操作数。
所述重命名模块206具体用于:
当所述第i+1源寄存器号等于第i目的寄存器号时,将标记的所述第i+1源寄存器号映射到所述寄存器堆缓存子模块2071中的所述第一物理寄存器的寄存器号。
所述寄存器堆缓存子模块2071具体用于:
根据所述第一物理寄存器的寄存器号从所述第一物理寄存器读取所述第一源操作数。
所述寄存器堆控制模块204还用于:
当第i+1目的寄存器号等于第i+2源寄存器号至第N源寄存器号中至少一个源寄存器号时,标记所述第i+1目的寄存器号,所述i+2为小于等于N的整数。
所述重命名模块206还用于:
将标记的所述第i+1目的寄存器号映射到所述寄存器堆缓存子模块中的第二物理寄存器的寄存器号,所述第二物理寄存器为所述寄存器堆缓存子模块中多个空闲的物理寄存器中任意一个。
所述执行单元模块208,用于获取所述第一源操作数和所述第二物理寄存器的寄存器号,根据所述第一源操作数运算得到第一目的操作数。
所述写回模块209,用于根据所述第二物理寄存器的寄存器号将所述第一目的操作数写回到所述第二物理寄存器。
所述重命名模块206还用于:
当所述第i目的寄存器号不等于第i+1源寄存器号至第N源寄存器号中任意一个源寄存器号时,将所述第i目的寄存器号映射到所述主寄存器堆子模块中的第三物理寄存器的寄存器号,所述第三物理寄存器为所述主寄存器堆子模块中多个空闲的物理寄存器中任意一个。
所述重命名模块206还用于:
当所述第i+1源寄存器号不等于第i目的寄存器号至第1目的寄存器号中的任意一个目的寄存器号,或,所述第i+1源寄存器号不等于所述N个源寄存器号中任意一个源寄存器号时,将所述第i+1源寄存器号映射到所述主寄存器堆子模块中的第四物理寄存器的寄存器号,所述第四物理寄存器为所述主寄存器堆子模块中多个空闲的物理寄存器中任意一个。
所述主寄存器堆子模块2072,用于根据所述第四物理寄存器的寄存器号从所述第四物理寄存器读取第二源操作数。
所述重命名模块206还用于:
当所述第i+1目的寄存器号不等于第i+2源寄存器号至第N源寄存器号中任意一个源寄存器号时,将所述第i+1目的寄存器号映射到所述主寄存器堆子模块中的第五物理寄存器的寄存器号,所述第五物理寄存器为所述主寄存器堆子模块中多个空闲的物理寄存器中任意一个。
所述执行单元模块208,用于获取所述第一源操作数和所述第五物理寄存器的寄存器号,根据所述第一源操作数运算得到第一目的操作数。
所述写回模块209,用于根据所述第五物理寄存器的寄存器号将所述第一目的操作数写回到所述第五物理寄存器。
所述执行单元模块208还用于:
获取所述第二源操作数和所述第五物理寄存器的寄存器号,根据所述第二源操作数运算得到第二目的操作数;
所述写回模块209还用于:
根据所述第五物理寄存器的寄存器号将所述第二目的操作数写回到所述第五物理寄存器。
示例的,假设数据处理装置20为超标量通用处理器,首先,指令读取单元(IFU)模块201从缓存或高速缓冲存储器读取两条指令,并将所述两条指令传输至指令预译码(Pre-decode)模块202,该两条指令分别为第一指令和第二指令。
然后,指令预译码(Pre-decode)模块202对所述第一指令和所述第二指令进行预译码,得到每个所述指令的指令类型、源寄存器号和目的寄存器号,其中,第一指令包括第一指令类型、三个源寄存器号和三个目的寄存器号,三个源寄存器号分别为第一源寄存器号、第二源寄存器号、第三源寄存器号,三个目的寄存器号分别为第一目的寄存器号、第二目的寄存器号和第三目的寄存器号,第二指令包括第二指令类型、三个源寄存器号和三个目的寄存器号,三个源寄存器号分别为第四源寄存器号、第五源寄存器号、第六源寄存器号,三个目的寄存器号分别为第四目的寄存器号、第五目的寄存器号和第六目的寄存器号。指令预译码(Pre-decode)模块202再将六个源寄存器号和六个目的寄存器号传输至指令缓存(IB)模块203。
指令缓存(IB)模块203存储所述六个源寄存器号和所述六个目的寄存器号。
寄存器堆控制(RF-Ctl)模块204从指令缓存(IB)模块203获取所述六个源寄存器号和所述六个目的寄存器号。寄存器堆控制(RF-Ctl)模块204分析所述六个源寄存器号和所述六个目的寄存器号之间的相关性。具体的,假设所述六个源寄存器号分别为第一源寄存器号至第六源寄存器号,所述六个目的寄存器号分别为第一目的寄存器号至第六目的寄存器号。
需要说明的是,寄存器堆控制(RF-Ctl)模块还可以从指令预译码模块,或者从指令预译码模块和指令缓存模块中获取六个源寄存器号和六个目的寄存器号。当指令缓存模块中存储五个源寄存器号和五个目的寄存器号,寄存器堆控制(RF-Ctl)模块可以从指令缓存模块中获取五个源寄存器号和五个目的寄存器号,从指令预译码模块获取一个源寄存器号和一个目的寄存器号。
进一步的,当第一源寄存器号等于第二源寄存器号,且第一源寄存器号等于第五源寄存器号时,当第一目的寄存器号等于第二源寄存器号时,寄存器堆控制(RF-Ctl)模块204标记所述第一源寄存器号和第一目的寄存器号,并将标记的所述第一源寄存器号和标记的所述第一目的寄存器号传输至重命名(Rename)模块206。
重命名(Rename)模块206将标记的所述第一源寄存器号映射到寄存器堆缓存(RFC)子模块2071中的第一物理寄存器的寄存器号,将标记的所述第一目的寄存器号映射到寄存器堆缓存(RFC)子模块2071中的第二物理寄存器的寄存器号,并将第一物理寄存器的寄存器号和第二物理寄存器的寄存器号传输至寄存器堆缓存(RFC)子模块2071。所述第一物理寄存器的寄存器号为所述寄存器堆缓存子模块中多个空闲的物理寄存器中任意一个,所述第二物理寄存器的寄存器号为所述寄存器堆缓存子模块中多个空闲的物理寄存器中任意一个,该第一物理寄存器的寄存器号与该第二物理寄存器的寄存器号不同。
寄存器堆缓存(RFC)子模块2071根据第一物理寄存器的寄存器号从第一物理寄存器读取第一源操作数,并将所述第一源操作数和第二物理寄存器的寄存器号传输至执行单元(Exe)模块208。
执行单元(Exe)模块208根据所述第一源操作数运算得到第一目的操作数,再将所述第一目的操作数和第二物理寄存器的寄存器号传输至写回(WB)模块209。
写回(WB)模块209根据第二物理寄存器的寄存器号将所述第一目的操作数写回到寄存器堆缓存(RFC)子模块2071中的所述第二物理寄存器。
再者,当第二源寄存器号等于第一目的寄存器号时,当第二目的寄存器号等于第六源寄存器号时,寄存器堆控制(RF-Ctl)模块204标记第二源寄存器号和第二目的寄存器号,并将标记的所述第二源寄存器号和标记的所述第二目的寄存器号传输至重命名(Rename)模块206。
需要说明的是,第二源寄存器号还可以等于第一源寄存器号和第五源寄存器号,寄存器堆控制(RF-Ctl)模块204也可以标记第二源寄存器号,并将标记的所述第二源寄存器号传输至重命名(Rename)模块206。
重命名(Rename)模块206将标记的所述第二源寄存器号映射到寄存器堆缓存(RFC)子模块2071中的第二物理寄存器的寄存器号,所述第二物理寄存器的寄存器号为所述第一目的寄存器号所映射的物理寄存器的寄存器号。将标记的所述第二目的寄存器号映射到寄存器堆缓存(RFC)子模块2071中的第三物理寄存器的寄存器号,并将第二物理寄存器的寄存器号和第三物理寄存器的寄存器号传输至寄存器堆缓存(RFC)子模块2071。
寄存器堆缓存(RFC)子模块2071根据第二物理寄存器的寄存器号从第二物理寄存器读取第二源操作数,并将所述第二源操作数和第三物理寄存器的寄存器号传输至执行单元(Exe)模块208。
执行单元(Exe)模块208根据所述第二源操作数运算得到第二目的操作数,再将所述第二目的操作数和第三物理寄存器的寄存器号传输至写回(WB)模块209。
写回(WB)模块209根据第三物理寄存器的寄存器号将所述第二目的操作数写回到寄存器堆缓存(RFC)子模块2071中的所述第三物理寄存器。
进一步的,当第三源寄存器号不等于六个源寄存器号中任意一个,且不等于第二目的寄存器号和第一目的寄存器号中任意一个时,当第三目的寄存器号不等于第四源寄存器号、第五源寄存器号和第六源寄存器号中任意一个时,寄存器堆控制(RF-Ctl)模块204将第三源寄存器号和第三目的寄存器号传输至重命名(Rename)模块206。
重命名(Rename)模块206将第三源寄存器号映射到主寄存器堆(MRF)子模块2072中的第一物理寄存器的寄存器号,将第三目的寄存器号映射到主寄存器堆(MRF)子模块2072中的第二物理寄存器的寄存器号,并将所述第一物理寄存器的寄存器号和所述第二物理寄存器的寄存器号传输至寄存器堆缓存(RFC)子模块2071,寄存器堆缓存(RFC)子模块2071再将所述第一物理寄存器的寄存器号和所述第二物理寄存器的寄存器号传输至主寄存器堆(MRF)子模块2072。
主寄存器堆(MRF)子模块2072根据所述第一物理寄存器的寄存器号从第一物理寄存器读取第三源操作数,并将所述第三源操作数和第二物理寄存器的寄存器号传输至执行单元(Exe)模块208。
执行单元(Exe)模块208根据所述第三源操作数运算得到第三目的操作数,再将所述第三目的操作数和第二物理寄存器的寄存器号传输至写回(WB)模块209。
写回(WB)模块209根据第二物理寄存器的寄存器号将所述第三目的操作数写回到主寄存器堆(MRF)子模块2072中的所述第二物理寄存器。
又进一步的,当第四源寄存器号不等于六个源寄存器号中任意一个,且不等于第三目的寄存器号、第二目的寄存器号和第一目的寄存器号中任意一个时,当第四目的寄存器号等于第五源寄存器号时,寄存器堆控制(RF-Ctl)模块204标记第四目的寄存器号,并将第四源寄存器号和标记的第四目的寄存器号传输至重命名(Rename)模块206。
重命名(Rename)模块206将标记的所述第四目的寄存器号映射到寄存器堆缓存(RFC)子模块2071中的第四物理寄存器的寄存器号,将第四源寄存器号映射到主寄存器堆(MRF)子模块2072中的第三物理寄存器的寄存器号,并将所述第四物理寄存器的寄存器号和所述第三物理寄存器的寄存器号传输至寄存器堆缓存(RFC)子模块2071,寄存器堆缓存(RFC)子模块2071再将所述第四物理寄存器的寄存器号和所述第三物理寄存器的寄存器号传输至主寄存器堆(MRF)子模块2072。
主寄存器堆(MRF)子模块2072根据所述第三物理寄存器的寄存器号从第三物理寄存器读取第四源操作数,并将所述第四源操作数和第四物理寄存器的寄存器号传输至执行单元(Exe)模块208。
执行单元(Exe)模块208根据所述第四源操作数运算得到第四目的操作数,再将所述第四目的操作数和第四物理寄存器的寄存器号传输至写回(WB)模块209。
写回(WB)模块209根据第四物理寄存器的寄存器号将所述第四目的操作数写回到寄存器堆缓存(RFC)子模块2071中的所述第四物理寄存器。
再进一步的,当第五源寄存器号等于第四目的寄存器号时,当第五目的寄存器号不等于第六源寄存器号时,寄存器堆控制(RF-Ctl)模块204标记第五源寄存器号,并将标记的第五源寄存器号和第五目的寄存器号传输至重命名(Rename)模块206。
需要说明的是,第五源寄存器号还可以等于第一源寄存器号和第二源寄存器号,寄存器堆控制(RF-Ctl)模块204也可以标记第五源寄存器号,并将标记的第五源寄存器号传输至重命名(Rename)模块206。
重命名(Rename)模块206将标记的所述第五源寄存器号映射到寄存器堆缓存(RFC)子模块2071中的第四物理寄存器的寄存器号,所述第四物理寄存器的寄存器号为所述第四目的寄存器号所映射的物理寄存器的寄存器号。将第五目的寄存器号映射到主寄存器堆(MRF)子模块2072中的第四物理寄存器的寄存器号,并将寄存器堆缓存(RFC)子模块2071中的所述第四物理寄存器的寄存器号和主寄存器堆(MRF)子模块2072中的所述第四物理寄存器的寄存器号传输至寄存器堆缓存(RFC)子模块2071。
寄存器堆缓存(RFC)子模块2071根据所述第四物理寄存器的寄存器号从第四物理寄存器第五读取源操作数,再将所述第五源操作数和主寄存器堆(MRF)子模块2072中的所述第四物理寄存器的寄存器号传输至主寄存器堆(MRF)子模块2072,主寄存器堆(MRF)子模块2072再将所述第五源操作数和第四物理寄存器的寄存器号传输至执行单元(Exe)模块208。
执行单元(Exe)模块208根据所述第五源操作数运算得到第五目的操作数,再将所述第五目的操作数和第四物理寄存器的寄存器号传输至写回(WB)模块209。
写回(WB)模块209根据第四物理寄存器的寄存器号将所述第五目的操作数写回到主寄存器堆(MRF)子模块2072中的所述第四物理寄存器。
最后,当第六源寄存器号等于第二目的寄存器号时,寄存器堆控制(RF-Ctl)模块204标记第六源寄存器号,并将标记的第六源寄存器号和第六目的寄存器号传输至重命名(Rename)模块206。
重命名(Rename)模块206将标记的所述第六源寄存器号映射到寄存器堆缓存(RFC)子模块2071中的第三物理寄存器的寄存器号,所述第三物理寄存器的寄存器号为所述第二目的寄存器号所映射的物理寄存器的寄存器号。将第六目的寄存器号映射到主寄存器堆(MRF)子模块2072中的第五物理寄存器的寄存器号,并将寄存器堆缓存(RFC)子模块2071中的所述第三物理寄存器的寄存器号和主寄存器堆(MRF)子模块2072中的所述第五物理寄存器的寄存器号传输至寄存器堆缓存(RFC)子模块2071。
寄存器堆缓存(RFC)子模块2071根据所述第三物理寄存器的寄存器号从第三物理寄存器读取第六源操作数,再将所述第六源操作数和主寄存器堆(MRF)子模块2072中的所述第五物理寄存器的寄存器号传输至主寄存器堆(MRF)子模块2072,主寄存器堆(MRF)子模块2072再将所述第六源操作数和第五物理寄存器的寄存器号传输至执行单元(Exe)模块208。
执行单元(Exe)模块208根据所述第六源操作数运算得到第六目的操作数,再将所述第六目的操作数和第五物理寄存器的寄存器号传输至写回(WB)模块209。
写回(WB)模块209根据第五物理寄存器的寄存器号将所述第六目的操作数写回到主寄存器堆(MRF)子模块2072中的所述第五物理寄存器。
需要说明的是,本发明实施例所述的指令缓存(IB)模块的每个线程可以是32位,每个线程可以缓存8到16条指令。本发明实施例所述的六个源寄存器号与六个目的寄存器号不限于两条指令的源寄存器号和目的寄存器号,还可以是三条指令或其他数量的指令,不同指令的源寄存器号可以映射到同一个物理寄存器号,或不同指令的目的寄存器号可以映射到同一个物理寄存器号,且本发明所述的映射关系只是示意性说明,实际应用中N个源寄存器号和N个目的寄存器号之间还可以有其他的映射关系,本发明对此不作限定。
本发明实施例所述的数据处理装置,在寄存器堆控制模块获取到N个源寄存器号与N个目的寄存器号后,分析N个源寄存器号与N个目的寄存器号的相关性,当第i目的寄存器号等于第i+1源寄存器号至第N源寄存器号中至少一个源寄存器号时,重命名模块将第i目的寄存器号映射到寄存器堆缓存子模块的物理寄存器号,当第i+1源寄存器号等于第i目的寄存器号至第1目的寄存器号中的任意一个目的寄存器号,或者所述第i+1源寄存器号等于所述N个源寄存器号中两个或两个以上的源寄存器号时,重命名模块将第i+1源寄存器号映射到寄存器堆缓存子模块的物理寄存器号,当第i目的寄存器号不等于第i+1源寄存器号至第N源寄存器号中任意一个源寄存器号时,重命名模块将第i目的寄存器号映射到主寄存器堆子模块的物理寄存器号,当第i+1源寄存器号不等于第i目的寄存器号至第1目的寄存器号中的任意一个目的寄存器号,或者所述第i+1源寄存器号不等于所述N个源寄存器号中任意一个源寄存器号时,重命名模块将第i+1源寄存器号映射到主寄存器堆子模块的物理寄存器号,相对于现有技术,能够有效地提高寄存器堆缓存子模块的使用效率。
本发明实施例提供一种数据处理方法,如图3所示,假设用于数据处理装置20,所述数据处理装置包括指令预译码Pre-decoder模块、指令缓存IB模块、寄存器堆控制RF-Ctl模块、重命名Rename模块、寄存器堆RF模块,所述RF模块包括寄存器堆缓存RFC子模块和主寄存器堆MRF子模块,所述方法包括:
步骤301、从所述指令预译码模块,或者所述指令缓存模块,或者所述指令预译码模块和所述指令缓存模块中获取N个源寄存器号和N个目的寄存器号。
首先,预译码至少一条指令,得到N个源寄存器号和N个目的寄存器号,每一个所述指令包括至少一个源寄存器号和至少一个目的寄存器号,然后,存储所述指令。
可以从所述指令缓存模块获取N个源寄存器号和N个目的寄存器号;
或者,可以直接从所述指令预译码模块获取N个源寄存器号和N个目的寄存器号;
或者,可以从所述指令缓存模块获取N-1个源寄存器号和N-1个目的寄存器号,从所述指令预译码模块获取第N源寄存器号和第N目的寄存器号。
步骤302、当第i目的寄存器号满足第一预设条件时,标记所述第i目的寄存器号,所述i为大于等于1且小于等于N的整数,所述N为大于等于2的整数。
所述第一预设条件为所述第i目的寄存器号等于第i+1源寄存器号至第N源寄存器号中至少一个源寄存器号,所述i+1为小于等于N的整数。
步骤303、将标记的所述第i目的寄存器号映射到所述寄存器堆缓存子模块中的第一物理寄存器的寄存器号,所述第一物理寄存器为所述寄存器堆缓存子模块中多个空闲的物理寄存器中任意一个。
这样一来,当寄存器堆控制模块获取到的第i目的寄存器号满足第一预设条件时,标记第i目的寄存器号,重命名模块将所述第i目的寄存器号映射到寄存器堆缓存子模块的物理寄存器号,相对于现有技术,能够有效地提高寄存器堆缓存子模块的使用效率。
本发明实施例提供一种数据处理方法,如图4所示,假设用于数据处理装置20,所述数据处理装置包括指令读取单元(IFU)模块201、指令预译码(Pre-decode)模块202、指令缓存(IB)模块203、寄存器堆控制(RF-Ctl)模块204、指令译码(Decoder)模块205、重命名(Rename)模块206、寄存器堆(RF)模块207、执行单元(Exe)模块208、写回(WB)模块209,所述寄存器堆(RF)模块207包括寄存器堆缓存(RFC)子模块2071和主寄存器堆(MRF)子模块2072,所述方法包括:
步骤401、指令读取单元模块读取指令。
指令读取单元(IFU)模块可以从缓存或高速缓冲存储器读取指令,并将所述指令传输至指令预译码(Pre-decode)模块。
本发明实施例假设指令读取单元(IFU)模块从缓存或高速缓冲存储器读取了两条指令,并将所述两条指令传输至指令预译码(Pre-decode)模块,该两条指令分别为第一指令和第二指令。
步骤402、指令预译码模块预译码第一指令和第二指令。
指令预译码(Pre-decode)模块接收到第一指令和第二指令之后,对所述第一指令和所述第二指令进行预译码,得到每个所述指令的指令类型、源寄存器号和目的寄存器号,其中,第一指令包括第一指令类型、三个源寄存器号和三个目的寄存器号,三个源寄存器号分别为第一源寄存器号、第二源寄存器号、第三源寄存器号,三个目的寄存器号分别为第一目的寄存器号、第二目的寄存器号和第三目的寄存器号,第二指令包括第二指令类型、三个源寄存器号和三个目的寄存器号,三个源寄存器号分别为第四源寄存器号、第五源寄存器号、第六源寄存器号,三个目的寄存器号分别为第四目的寄存器号、第五目的寄存器号和第六目的寄存器号。指令预译码(Pre-decode)模块再将六个源寄存器号和六个目的寄存器号传输至指令缓存(IB)模块。
步骤403、指令缓存模块存储六个源寄存器号和六个目的寄存器号。
指令缓存(IB)模块接收到六个源寄存器号和六个目的寄存器号之后,存储所述六个源寄存器号和所述六个目的寄存器号。
步骤404、寄存器堆控制模块获取六个源寄存器号和六个目的寄存器号。
寄存器堆控制(RF-Ctl)模块从指令缓存(IB)模块获取六个源寄存器号和六个目的寄存器号。
需要说明的是,寄存器堆控制(RF-Ctl)模块还可以从指令预译码模块,或者从指令预译码模块和指令缓存模块中获取六个源寄存器号和六个目的寄存器号。当指令缓存模块中存储五个源寄存器号和五个目的寄存器号,寄存器堆控制(RF-Ctl)模块可以从指令缓存模块中获取五个源寄存器号和五个目的寄存器号,从指令预译码模块获取一个源寄存器号和一个目的寄存器号。
寄存器堆控制(RF-Ctl)模块分析所述六个源寄存器号和所述六个目的寄存器号之间的相关性。假设所述六个源寄存器号分别为第一源寄存器号至第六源寄存器号,所述六个目的寄存器号分别为第一目的寄存器号至第六目的寄存器号。
步骤405、寄存器堆控制模块标记第一源寄存器号和第一目的寄存器号。
假设当第一源寄存器号等于第二源寄存器号,且第一源寄存器号等于第五源寄存器号时,寄存器堆控制(RF-Ctl)模块标记所述第一源寄存器号,并将标记的所述第一源寄存器号传输至重命名(Rename)模块。
当第一目的寄存器号等于第二源寄存器号时,寄存器堆控制(RF-Ctl)模块标记所述第一目的寄存器号,并将标记的所述第一目的寄存器号传输至重命名(Rename)模块。
步骤406、重命名模块将第一源寄存器号和第一目的寄存器号映射到寄存器堆缓存子模块。
重命名(Rename)模块将标记的所述第一源寄存器号映射到寄存器堆缓存(RFC)子模块中的第一物理寄存器的寄存器号,将标记的所述第一目的寄存器号映射到寄存器堆缓存(RFC)子模块中的第二物理寄存器的寄存器号,并将第一物理寄存器的寄存器号和第二物理寄存器的寄存器号传输至寄存器堆缓存(RFC)子模块。所述第一物理寄存器的寄存器号为所述寄存器堆缓存子模块中多个空闲的物理寄存器中任意一个,所述第二物理寄存器的寄存器号为所述寄存器堆缓存子模块中多个空闲的物理寄存器中任意一个,该第一物理寄存器的寄存器号与该第二物理寄存器的寄存器号不同。
步骤407、寄存器堆缓存子模块读取第一源操作数。
寄存器堆缓存(RFC)子模块根据第一物理寄存器的寄存器号从第一物理寄存器读取第一源操作数,并将所述第一源操作数和第二物理寄存器的寄存器号传输至执行单元(Exe)模块。
步骤408、执行单元模块根据所述第一源操作数运算得到第一目的操作数。
再将所述第一目的操作数和第二物理寄存器的寄存器号传输至写回(WB)模块。
步骤409、写回模块将第一目的操作数写回。
写回(WB)模块根据第二物理寄存器的寄存器号将所述第二目的操作数写回到寄存器堆缓存(RFC)子模块中的所述第二物理寄存器。
如图5所示,本发明实施例提供一种数据处理方法还包括步骤4010至步骤4014。
步骤4010、寄存器堆控制模块标记第二源寄存器号和第二目的寄存器号。
当第二源寄存器号等于第一目的寄存器号时,寄存器堆控制(RF-Ctl)模块标记第二源寄存器号,并将标记的所述第二源寄存器号传输至重命名(Rename)模块。
当第二目的寄存器号等于第六源寄存器号时,寄存器堆控制(RF-Ctl)模块标记第二目的寄存器号,并将标记的所述第二目的寄存器号传输至重命名(Rename)模块。
需要说明的是,第二源寄存器号还可以等于第一源寄存器号和第五源寄存器号,寄存器堆控制(RF-Ctl)模块也可以标记第二源寄存器号,并将标记的所述第二源寄存器号传输至重命名(Rename)模块。
步骤4011、重命名模块将第二源寄存器号和第二目的寄存器号映射到寄存器堆缓存子模块。
重命名(Rename)模块将标记的所述第二源寄存器号映射到寄存器堆缓存(RFC)子模块中的第二物理寄存器的寄存器号,所述第二物理寄存器的寄存器号为所述第一目的寄存器号所映射的物理寄存器的寄存器号,并将第二物理寄存器的寄存器号传输至寄存器堆缓存(RFC)子模块。
重命名(Rename)模块将标记的所述第二目的寄存器号映射到寄存器堆缓存(RFC)子模块中的第三物理寄存器的寄存器号,并将第三物理寄存器的寄存器号传输至寄存器堆缓存(RFC)子模块。
所述第三物理寄存器的寄存器号为所述寄存器堆缓存子模块中多个空闲的物理寄存器中任意一个,所述第二物理寄存器的寄存器号为所述寄存器堆缓存子模块中多个空闲的物理寄存器中任意一个,该第三物理寄存器的寄存器号与该第二物理寄存器的寄存器号不同。
步骤4012、寄存器堆缓存子模块读取第二源操作数。
寄存器堆缓存(RFC)子模块根据第二物理寄存器的寄存器号从第二物理寄存器读取第二源操作数,并将所述第二源操作数和第三物理寄存器的寄存器号传输至执行单元(Exe)模块。
步骤4013、执行单元模块根据所述第二源操作数运算得到第二目的操作数。
再将所述第二目的操作数和第三物理寄存器的寄存器号传输至写回(WB)模块。
步骤4014、写回模块将第二目的操作数写回。
写回(WB)模块根据第三物理寄存器的寄存器号将所述第二目的操作数写回到寄存器堆缓存(RFC)子模块中的所述第三物理寄存器。
如图6所示,本发明实施例提供一种数据处理方法还包括步骤4015至步骤4020。
步骤4015、寄存器堆控制模块将第三源寄存器号和第三目的寄存器号传输至重命名模块。
当第三源寄存器号不等于六个源寄存器号中任意一个,且不等于第二目的寄存器号和第一目的寄存器号中任意一个时,寄存器堆控制(RF-Ctl)模块将第三源寄存器号传输至重命名模块。
当第三目的寄存器号不等于第四源寄存器号、第五源寄存器号和第六源寄存器号中任意一个时,寄存器堆控制(RF-Ctl)模块将第三目的寄存器号传输至重命名(Rename)模块。
步骤4016、重命名模块将第三源寄存器号和第三目的寄存器号映射到主寄存器堆子模块。
重命名(Rename)模块将第三源寄存器号映射到主寄存器堆(MRF)子模块中的第一物理寄存器的寄存器号,并将所述第一物理寄存器的寄存器号传输至寄存器堆缓存(RFC)子模块。
重命名(Rename)模块将第三目的寄存器号映射到主寄存器堆(MRF)子模块中的第二物理寄存器的寄存器号,并将所述第二物理寄存器的寄存器号传输至寄存器堆缓存(RFC)子模块。
步骤4017、寄存器堆缓存子模块再将所述第一物理寄存器的寄存器号和所述第二物理寄存器的寄存器号传输至主寄存器堆子模块。
步骤4018、主寄存器堆子模块读取第三源操作数。
主寄存器堆(MRF)子模块根据所述第一物理寄存器的寄存器号从第一物理寄存器读取第三源操作数,并将所述第三源操作数和第二物理寄存器的寄存器号传输至执行单元(Exe)模块。
步骤4019、执行单元模块根据所述第三源操作数运算得到第三目的操作数。
再将所述第三目的操作数和第二物理寄存器的寄存器号传输至写回(WB)模块。
步骤4020、写回模块将第三目的操作数写回。
写回(WB)模块根据第二物理寄存器的寄存器号将所述第三目的操作数写回到主寄存器堆(MRF)子模块中的所述第二物理寄存器。
如图7所示,本发明实施例提供一种数据处理方法还包括步骤4021至步骤4026。
步骤4021、寄存器堆控制模块将第四源寄存器号传输至重命名模块。
当第四源寄存器号不等于六个源寄存器号中任意一个,且不等于第三目的寄存器号、第二目的寄存器号和第一目的寄存器号中任意一个时,寄存器堆控制(RF-Ctl)模块将第四源寄存器号传输至重命名(Rename)模块。
步骤4022、寄存器堆控制模块标记第四目的寄存器号。
当第四目的寄存器号等于第五源寄存器号时,寄存器堆控制(RF-Ctl)模标记第四目的寄存器号,并将第四源寄存器号和标记的第四目的寄存器号传输至重命名(Rename)模块。
步骤4023、重命名模块将第四源寄存器号映射到主寄存器堆模块,将第四目的寄存器号映射到寄存器堆缓存子模块。
重命名(Rename)模块将第四源寄存器号映射到主寄存器堆(MRF)子模块中的第三物理寄存器的寄存器号,并将所述第三物理寄存器的寄存器号传输至寄存器堆缓存(RFC)子模块,寄存器堆缓存(RFC)子模块再将所述第四物理寄存器的寄存器号和所述第三物理寄存器的寄存器号传输至主寄存器堆(MRF)子模块。
重命名(Rename)模块将标记的所述第四目的寄存器号映射到寄存器堆缓存(RFC)子模块中的第四物理寄存器的寄存器号,并将所述第四物理寄存器的寄存器号传输至寄存器堆缓存(RFC)子模块。
需要说明的是,若第四目的寄存器号与第二目的寄存器号为同一条指令包括的寄存器号,第二目的寄存器号被映射到的第三物理寄存器的寄存器号和第四目的寄存器号被映射到的第四物理寄存器的寄存器号可以不同;若第四目的寄存器号与第二目的寄存器号为不同指令包括的寄存器号,第二目的寄存器号被映射到的第三物理寄存器的寄存器号和第四目的寄存器号被映射到的第四物理寄存器的寄存器号可以相同。
所述第三物理寄存器的寄存器号为所述主寄存器堆子模块中多个空闲的物理寄存器中任意一个,所述第四物理寄存器的寄存器号为所述寄存器堆缓存子模块中多个空闲的物理寄存器中任意一个,该第三物理寄存器的寄存器号与该第四物理寄存器的寄存器号不同。
步骤4024、主寄存器堆子模块读取第四源操作数。
主寄存器堆(MRF)子模块根据所述第三物理寄存器的寄存器号从第三物理寄存器读取第四源操作数,并将所述第四源操作数和第四物理寄存器的寄存器号传输至执行单元(Exe)模块。
步骤4025、执行单元模块根据所述第四源操作数运算得到第四目的操作数。
再将所述第四目的操作数和第四物理寄存器的寄存器号传输至写回(WB)模块。
步骤4026、写回模块将第四目的操作数写回。
写回(WB)模块根据第四物理寄存器的寄存器号将所述第四目的操作数写回到寄存器堆缓存(RFC)子模块中的所述第四物理寄存器。
如图8所示,本发明实施例提供一种数据处理方法还包括步骤4027至步骤4032。
步骤4027、寄存器堆控制模块标记第五源寄存器号。
当第五源寄存器号等于第四目的寄存器号时,寄存器堆控制(RF-Ctl)模块标记第五源寄存器号,并将标记的第五源寄存器号传输至重命名(Rename)模块。
需要说明的是,第五源寄存器号还可以等于第一源寄存器号和第二源寄存器号,寄存器堆控制(RF-Ctl)模块也可以标记第五源寄存器号,并将标记的第五源寄存器号传输至重命名(Rename)模块。
步骤4028、寄存器堆控制模块将第五目的寄存器号传输至重命名模块。
当第五目的寄存器号不等于第六源寄存器号时,将第五目的寄存器号传输至重命名(Rename)模块。
步骤4029、重命名模块将标记的第五源寄存器号映射到寄存器堆缓存子模块,将第五目的寄存器号映射到主寄存器堆模块。
重命名(Rename)模块将标记的所述第五源寄存器号映射到寄存器堆缓存(RFC)子模块中的第四物理寄存器的寄存器号,所述第四物理寄存器的寄存器号为所述第四目的寄存器号所映射的物理寄存器的寄存器号,并将寄存器堆缓存(RFC)子模块中的所述第四物理寄存器的寄存器号传输至寄存器堆缓存(RFC)子模块。
重命名(Rename)模块将第五目的寄存器号映射到主寄存器堆(MRF)子模块中的第四物理寄存器的寄存器号,并将主寄存器堆(MRF)子模块中的所述第四物理寄存器的寄存器号传输至寄存器堆缓存(RFC)子模块。
所述第四物理寄存器的寄存器号为所述主寄存器堆子模块中多个空闲的物理寄存器中任意一个,所述第四物理寄存器的寄存器号为所述寄存器堆缓存子模块中多个空闲的物理寄存器中任意一个,该第四物理寄存器的寄存器号与该第四物理寄存器的寄存器号可以不同,也可以相同。
步骤4030、寄存器堆缓存子模块读取第五源操作数。
寄存器堆缓存(RFC)子模块根据所述第四物理寄存器的寄存器号从第四物理寄存器读取第五源操作数,再将所述第五源操作数和主寄存器堆(MRF)子模块中的所述第四物理寄存器的寄存器号传输至主寄存器堆(MRF)子模块,主寄存器堆(MRF)子模块再将所述第五源操作数和第四物理寄存器的寄存器号传输至执行单元(Exe)模块。
步骤4031、执行单元模块根据所述第五源操作数运算得到第五目的操作数。
再将所述第五目的操作数和第四物理寄存器的寄存器号传输至写回(WB)模块。
步骤4032、写回模块将第五目的操作数写回。
写回(WB)模块根据第四物理寄存器的寄存器号将所述第五目的操作数写回到主寄存器堆(MRF)子模块中的所述第四物理寄存器。
如图9所示,本发明实施例提供一种数据处理方法还包括步骤4033至步骤4038。
步骤4033、寄存器堆控制模块标记第六源寄存器号。
当第六源寄存器号等于第二目的寄存器号时,寄存器堆控制(RF-Ctl)模块标记第六源寄存器号,并将标记的第六源寄存器号传输至重命名(Rename)模块。
步骤4034、寄存器堆控制模块将第六目的寄存器号传输至重命名模块。
步骤4035、重命名模块将标记的第六源寄存器号映射到寄存器堆缓存子模块,将第六目的寄存器号映射到主寄存器堆模块。
重命名(Rename)模块将标记的所述第六源寄存器号映射到寄存器堆缓存(RFC)子模块中的第三物理寄存器的寄存器号,所述第三物理寄存器的寄存器号为所述第二目的寄存器号所映射的物理寄存器的寄存器号,并将寄存器堆缓存(RFC)子模块中的所述第三物理寄存器的寄存器号传输至寄存器堆缓存(RFC)子模块。
重命名(Rename)模块将第六目的寄存器号映射到主寄存器堆(MRF)子模块中的第五物理寄存器的寄存器号,并将主寄存器堆(MRF)子模块中的所述第五物理寄存器的寄存器号传输至寄存器堆缓存(RFC)子模块。
步骤4036、寄存器堆缓存子模块读取第六源操作数。
寄存器堆缓存(RFC)子模块根据所述第三物理寄存器的寄存器号从第三物理寄存器读取第六源操作数,再将所述六源操作数和主寄存器堆(MRF)子模块中的所述第五物理寄存器的寄存器号传输至主寄存器堆(MRF)子模块,主寄存器堆(MRF)子模块再将所述第六源操作数和第五物理寄存器的寄存器号传输至执行单元(Exe)模块。
步骤4037、执行单元模块根据所述第六源操作数运算得到第六目的操作数。
再将所述第六目的操作数和第五物理寄存器的寄存器号传输至写回(WB)模块。
步骤4038、写回模块将第六目的操作数写回。
写回(WB)模块根据第五物理寄存器的寄存器号将所述第六目的操作数写回到主寄存器堆(MRF)子模块中的所述第五物理寄存器。
需要说明的是,本发明实施例所述的指令缓存(IB)模块的每个线程可以是32位,每个线程可以缓存8到16条指令。本发明实施例所述的六个源寄存器号与六个目的寄存器号不限于两条指令的源寄存器号和目的寄存器号,还可以是三条指令或其他数量的指令,不同指令的源寄存器号可以映射到同一个物理寄存器号,或不同指令的目的寄存器号可以映射到同一个物理寄存器号,且本发明所述的映射关系只是示意性说明,实际应用中N个源寄存器号和N个目的寄存器号之间还可以有其他的映射关系,本发明对此不作限定。
本发明实施例所述的数据处理装置,在寄存器堆控制模块获取到N个源寄存器号与N个目的寄存器号后,分析N个源寄存器号与N个目的寄存器号的相关性,当第i目的寄存器号等于第i+1源寄存器号至第N源寄存器号中至少一个源寄存器号时,重命名模块将第i目的寄存器号映射到寄存器堆缓存子模块的物理寄存器号,当第i+1源寄存器号等于第i目的寄存器号至第1目的寄存器号中的任意一个目的寄存器号,或者所述第i+1源寄存器号等于所述N个源寄存器号中两个或两个以上的源寄存器号时,重命名模块将第i+1源寄存器号映射到寄存器堆缓存子模块的物理寄存器号,当第i目的寄存器号不等于第i+1源寄存器号至第N源寄存器号中任意一个源寄存器号时,重命名模块将第i目的寄存器号映射到主寄存器堆子模块的物理寄存器号,当第i+1源寄存器号不等于第i目的寄存器号至第1目的寄存器号中的任意一个目的寄存器号,或者所述第i+1源寄存器号不等于所述N个源寄存器号中任意一个源寄存器号时,重命名模块将第i+1源寄存器号映射到主寄存器堆子模块的物理寄存器号,相对于现有技术,能够有效地提高寄存器堆缓存子模块的使用效率。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (31)
1.一种数据处理装置,其特征在于,所述数据处理装置包括指令预译码Pre-decoder模块、指令缓存IB模块、寄存器堆控制RF-Ctl模块、重命名Rename模块、寄存器堆RF模块,所述RF模块包括寄存器堆缓存RFC子模块和主寄存器堆MRF子模块,其中,
所述寄存器堆控制模块,用于从所述指令预译码模块,或者所述指令缓存模块,或者所述指令预译码模块和所述指令缓存模块中获取N个源寄存器号和N个目的寄存器号;
所述寄存器堆控制模块还用于:
当第i目的寄存器号满足第一预设条件时,标记所述第i目的寄存器号,所述i为大于等于1且小于等于N的整数,所述N为大于等于2的整数;
所述重命名模块,用于将标记的所述第i目的寄存器号映射到所述寄存器堆缓存子模块中的第一物理寄存器的寄存器号,所述第一物理寄存器为所述寄存器堆缓存子模块中多个空闲的物理寄存器中任意一个。
2.根据权利要求1所述的数据处理装置,其特征在于,所述第一预设条件为所述第i目的寄存器号等于第i+1源寄存器号至第N源寄存器号中至少一个源寄存器号,所述i+1为小于等于N的整数。
3.根据权利要求2所述的数据处理装置,其特征在于,
所述指令预译码模块,用于预译码至少一条指令,得到N个源寄存器号和N个目的寄存器号,每一个所述指令包括至少一个源寄存器号和至少一个目的寄存器号;
所述指令缓存模块用于存储所述指令。
4.根据权利要求3所述的数据处理装置,其特征在于,
所述寄存器堆控制模块具体用于:
从所述指令缓存模块获取N个源寄存器号和N个目的寄存器号;
或者,直接从所述指令预译码模块获取N个源寄存器号和N个目的寄存器号;
或者,从所述指令缓存模块获取N-1个源寄存器号和N-1个目的寄存器号,从所述指令预译码模块获取第N源寄存器号和第N目的寄存器号。
5.根据权利要求4所述的数据处理装置,其特征在于,
所述寄存器堆控制模块还用于:
当第i+1源寄存器号满足第二预设条件时,标记所述第i+1源寄存器号,所述i+1为小于等于N的整数;
所述重命名模块还用于:
将标记的所述第i+1源寄存器号映射到所述寄存器堆缓存子模块中的物理寄存器的寄存器号,所述物理寄存器的寄存器号为与所述第i+1源寄存器号相等的目的寄存器号被映射到的所述寄存器堆缓存子模块中的物理寄存器的寄存器号;
所述寄存器堆缓存子模块,用于根据所述物理寄存器的寄存器号从所述物理寄存器读取第一源操作数。
6.根据权利要求5所述的数据处理装置,其特征在于,所述第二预设条件为所述第i+1源寄存器号等于第i目的寄存器号至第1目的寄存器号中的任意一个目的寄存器号,所述i+1为小于等于N的整数,或,所述第i+1源寄存器号等于所述N个源寄存器号中两个或两个以上的源寄存器号。
7.根据权利要求6所述的数据处理装置,其特征在于,
所述重命名模块具体用于:
当所述第i+1源寄存器号等于第i目的寄存器号时,将标记的所述第i+1源寄存器号映射到所述寄存器堆缓存子模块中的所述第一物理寄存器的寄存器号;
所述寄存器堆缓存子模块具体用于:
根据所述第一物理寄存器的寄存器号从所述第一物理寄存器读取所述第一源操作数。
8.根据权利要求6所述的数据处理装置,其特征在于,
所述寄存器堆控制模块还用于:
当第i+1目的寄存器号等于第i+2源寄存器号至第N源寄存器号中至少一个源寄存器号时,标记所述第i+1目的寄存器号,所述i+2为小于等于N的整数;
所述重命名模块还用于:
将标记的所述第i+1目的寄存器号映射到所述寄存器堆缓存子模块中的第二物理寄存器的寄存器号,所述第二物理寄存器为所述寄存器堆缓存子模块中多个空闲的物理寄存器中任意一个。
9.根据权利要求8所述的数据处理装置,其特征在于,所述数据处理装置还包括执行单元Exe模块和写回WB模块,其中,
所述执行单元模块,用于获取所述第一源操作数和所述第二物理寄存器的寄存器号,根据所述第一源操作数运算得到第一目的操作数;
所述写回模块,用于根据所述第二物理寄存器的寄存器号将所述第一目的操作数写回到所述第二物理寄存器。
10.根据权利要求4所述的数据处理装置,其特征在于,
所述重命名模块还用于:
当所述第i目的寄存器号不等于第i+1源寄存器号至第N源寄存器号中任意一个源寄存器号时,将所述第i目的寄存器号映射到所述主寄存器堆子模块中的第三物理寄存器的寄存器号,所述第三物理寄存器为所述主寄存器堆子模块中多个空闲的物理寄存器中任意一个。
11.根据权利要求10所述的数据处理装置,其特征在于,
所述重命名模块还用于:
当所述第i+1源寄存器号不等于第i目的寄存器号至第1目的寄存器号中的任意一个目的寄存器号,或,所述第i+1源寄存器号不等于所述N个源寄存器号中任意一个源寄存器号时,将所述第i+1源寄存器号映射到所述主寄存器堆子模块中的第四物理寄存器的寄存器号,所述第四物理寄存器为所述主寄存器堆子模块中多个空闲的物理寄存器中任意一个。
12.根据权利要求11所述的数据处理装置,其特征在于,
所述主寄存器堆子模块,用于根据所述第四物理寄存器的寄存器号从所述第四物理寄存器读取第二源操作数。
13.根据权利要求6或12所述的数据处理装置,其特征在于,
所述重命名模块还用于:
当第i+1目的寄存器号不等于第i+2源寄存器号至第N源寄存器号中任意一个源寄存器号时,将所述第i+1目的寄存器号映射到所述主寄存器堆子模块中的第五物理寄存器的寄存器号,所述第五物理寄存器为所述主寄存器堆子模块中多个空闲的物理寄存器中任意一个。
14.根据权利要求13所述的数据处理装置,其特征在于,所述数据处理装置还包括执行单元模块和写回模块,
所述执行单元模块,用于获取第一源操作数和所述第五物理寄存器的寄存器号,根据所述第一源操作数运算得到第一目的操作数;
所述写回模块,用于根据所述第五物理寄存器的寄存器号将所述第一目的操作数写回到所述第五物理寄存器。
15.根据权利要求13所述的数据处理装置,其特征在于,所述数据处理装置还包括执行单元模块和写回模块,
所述执行单元模块还用于:
获取第二源操作数和所述第五物理寄存器的寄存器号,根据所述第二源操作数运算得到第二目的操作数;
所述写回模块还用于:
根据所述第五物理寄存器的寄存器号将所述第二目的操作数写回到所述第五物理寄存器。
16.一种数据处理方法,其特征在于,用于数据处理装置,所述数据处理装置包括指令预译码Pre-decoder模块、指令缓存IB模块、寄存器堆控制RF-Ctl模块、重命名Rename模块、寄存器堆RF模块,所述RF模块包括寄存器堆缓存RFC子模块和主寄存器堆MRF子模块,其中,
从所述指令预译码模块,或者所述指令缓存模块,或者所述指令预译码模块和所述指令缓存模块中获取N个源寄存器号和N个目的寄存器号;
当第i目的寄存器号满足第一预设条件时,标记所述第i目的寄存器号,所述i为大于等于1且小于等于N的整数,所述N为大于等于2的整数;
将标记的所述第i目的寄存器号映射到所述寄存器堆缓存子模块中的第一物理寄存器的寄存器号,所述第一物理寄存器为所述寄存器堆缓存子模块中多个空闲的物理寄存器中任意一个。
17.根据权利要求16所述的数据处理方法,其特征在于,所述第一预设条件为所述第i目的寄存器号等于第i+1源寄存器号至第N源寄存器号中至少一个源寄存器号,所述i+1为小于等于N的整数。
18.根据权利要求17所述的数据处理方法,其特征在于,在所述从所述指令预译码模块,或者所述指令缓存模块,或者所述指令预译码模块和所述指令缓存模块中获取N个源寄存器号和N个目的寄存器号之前,所述方法还包括:
预译码至少一条指令,得到N个源寄存器号和N个目的寄存器号,每一个所述指令包括至少一个源寄存器号和至少一个目的寄存器号;
存储所述指令。
19.根据权利要求18所述的数据处理方法,其特征在于,所述从所述指令预译码模块,或者所述指令缓存模块,或者所述指令预译码模块和所述指令缓存模块中获取所述N个源寄存器号和N个目的寄存器号包括:
从所述指令缓存模块获取N个源寄存器号和N个目的寄存器号;
或者,直接从所述指令预译码模块获取N个源寄存器号和N个目的寄存器号;
或者,从所述指令缓存模块获取N-1个源寄存器号和N-1个目的寄存器号,从所述指令预译码模块获取第N源寄存器号和第N目的寄存器号。
20.根据权利要求19所述的数据处理方法,其特征在于,在所述将标记的所述第i目的寄存器号映射到所述寄存器堆缓存子模块中的第一物理寄存器的寄存器号之后,所述方法还包括:
当第i+1源寄存器号满足第二预设条件时,标记所述第i+1源寄存器号,所述i+1为小于等于N的整数;
将标记的所述第i+1源寄存器号映射到所述寄存器堆缓存子模块中的物理寄存器的寄存器号,所述物理寄存器的寄存器号为与所述第i+1源寄存器号相等的目的寄存器号被映射到的所述寄存器堆缓存子模块中的物理寄存器的寄存器号;
根据所述物理寄存器的寄存器号从所述物理寄存器读取第一源操作数。
21.根据权利要求20所述的数据处理方法,其特征在于,所述第二预设条件为所述第i+1源寄存器号等于第i目的寄存器号至第1目的寄存器号中的任意一个目的寄存器号,所述i+1为小于等于N的整数,或,所述第i+1源寄存器号等于所述N个源寄存器号中两个或两个以上的源寄存器号。
22.根据权利要求21所述的数据处理方法,其特征在于,所述将标记的所述第i+1源寄存器号映射到所述寄存器堆缓存子模块中的物理寄存器的寄存器号包括:
当所述第i+1源寄存器号等于第i目的寄存器号时,将标记的所述第i+1源寄存器号映射到所述寄存器堆缓存子模块中的所述第一物理寄存器的寄存器号;
根据所述第一物理寄存器的寄存器号从所述第一物理寄存器读取所述第一源操作数。
23.根据权利要求21所述的数据处理方法,其特征在于,在所述将标记的所述第i目的寄存器号映射到所述寄存器堆缓存子模块中的第一物理寄存器的寄存器号之后,所述方法还包括:
当第i+1目的寄存器号等于第i+2源寄存器号至第N源寄存器号中至少一个源寄存器号时,标记所述第i+1目的寄存器号,所述i+2为小于等于N的整数;
将标记的所述第i+1目的寄存器号映射到所述寄存器堆缓存子模块中的第二物理寄存器的寄存器号,所述第二物理寄存器为所述寄存器堆缓存子模块中多个空闲的物理寄存器中任意一个。
24.根据权利要求23所述的数据处理方法,其特征在于,所述数据处理装置还包括执行单元Exe模块和写回WB模块,在所述将标记的所述第i+1目的寄存器号映射到所述寄存器堆缓存子模块中的第二物理寄存器的寄存器号之后,所述方法还包括:
获取所述第一源操作数和所述第二物理寄存器的寄存器号,根据所述第一源操作数运算得到第一目的操作数;
根据所述第二物理寄存器的寄存器号将所述第一目的操作数写回到所述第二物理寄存器。
25.根据权利要求19所述的数据处理方法,其特征在于,在所述从所述指令预译码模块,或者所述指令缓存模块,或者所述指令预译码模块和所述指令缓存模块中获取N个源寄存器号和N个目的寄存器号之后,所述方法还包括:
当所述第i目的寄存器号不等于第i+1源寄存器号至第N源寄存器号中任意一个源寄存器号时,将所述第i目的寄存器号映射到所述主寄存器堆子模块中的第三物理寄存器的寄存器号,所述第三物理寄存器为所述主寄存器堆子模块中多个空闲的物理寄存器中任意一个。
26.根据权利要求25所述的数据处理方法,其特征在于,在所述从所述指令预译码模块,或者所述指令缓存模块,或者所述指令预译码模块和所述指令缓存模块中获取N个源寄存器号和N个目的寄存器号之后,所述方法还包括:
当所述第i+1源寄存器号不等于第i目的寄存器号至第1目的寄存器号中的任意一个目的寄存器号,或,所述第i+1源寄存器号不等于所述N个源寄存器号中任意一个源寄存器号时,将所述第i+1源寄存器号映射到所述主寄存器堆子模块中的第四物理寄存器的寄存器号,所述第四物理寄存器为所述主寄存器堆子模块中多个空闲的物理寄存器中任意一个。
27.根据权利要求26所述的数据处理方法,其特征在于,在所述将所述第i+1源寄存器号映射到所述主寄存器堆子模块中的第四物理寄存器的寄存器号之后,所述方法还包括:
根据所述第四物理寄存器的寄存器号从所述第四物理寄存器读取第二源操作数。
28.根据权利要求21所述的数据处理方法,其特征在于,在所述根据所述物理寄存器的寄存器号从所述物理寄存器读取第一源操作数之后,所述方法还包括:
当第i+1目的寄存器号不等于第i+2源寄存器号至第N源寄存器号中任意一个源寄存器号时,将所述第i+1目的寄存器号映射到所述主寄存器堆子模块中的第五物理寄存器的寄存器号,所述第五物理寄存器为所述主寄存器堆子模块中多个空闲的物理寄存器中任意一个。
29.根据权利要求28所述的数据处理方法,其特征在于,在所述将所述第i+1目的寄存器号映射到所述主寄存器堆子模块中的第五物理寄存器的寄存器号之后,所述方法还包括:
获取所述第一源操作数和所述第五物理寄存器的寄存器号,根据所述第一源操作数运算得到第一目的操作数;
根据所述第五物理寄存器的寄存器号将所述第一目的操作数写回到所述第五物理寄存器。
30.根据权利要求27所述的数据处理方法,其特征在于,在所述根据所述第四物理寄存器的寄存器号从所述第四物理寄存器读取第二源操作数之后,所述方法还包括:
当第i+1目的寄存器号不等于第i+2源寄存器号至第N源寄存器号中任意一个源寄存器号时,将所述第i+1目的寄存器号映射到所述主寄存器堆子模块中的第五物理寄存器的寄存器号,所述第五物理寄存器为所述主寄存器堆子模块中多个空闲的物理寄存器中任意一个。
31.根据权利要求30所述的数据处理方法,其特征在于,在所述将所述第i+1目的寄存器号映射到所述主寄存器堆子模块中的第五物理寄存器的寄存器号之后,所述方法还包括:
获取所述第二源操作数和所述第五物理寄存器的寄存器号,根据所述第二源操作数运算得到第二目的操作数;
根据所述第五物理寄存器的寄存器号将所述第二目的操作数写回到所述第五物理寄存器。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2014/076406 WO2015165017A1 (zh) | 2014-04-28 | 2014-04-28 | 一种数据处理装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105308557A CN105308557A (zh) | 2016-02-03 |
CN105308557B true CN105308557B (zh) | 2018-06-15 |
Family
ID=54357982
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480000412.3A Active CN105308557B (zh) | 2014-04-28 | 2014-04-28 | 一种数据处理装置及方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN105308557B (zh) |
WO (1) | WO2015165017A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109101276B (zh) * | 2018-08-14 | 2020-05-05 | 阿里巴巴集团控股有限公司 | 在cpu中执行指令的方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1226699A (zh) * | 1998-02-17 | 1999-08-25 | 国际商业机器公司 | 高性能的推测性字符串/多重操作 |
CN101169710A (zh) * | 2006-10-26 | 2008-04-30 | 中国科学院计算技术研究所 | 对状态寄存器进行重命名的方法和使用该方法的处理器 |
CN101447911A (zh) * | 2007-11-27 | 2009-06-03 | 上海高性能集成电路设计中心 | 一种通过分布控制扩展访存队列容量的装置 |
CN102306092A (zh) * | 2011-07-29 | 2012-01-04 | 北京北大众志微系统科技有限责任公司 | 超标量处理器实现指令缓存路选择的方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7428631B2 (en) * | 2003-07-31 | 2008-09-23 | Intel Corporation | Apparatus and method using different size rename registers for partial-bit and bulk-bit writes |
-
2014
- 2014-04-28 CN CN201480000412.3A patent/CN105308557B/zh active Active
- 2014-04-28 WO PCT/CN2014/076406 patent/WO2015165017A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1226699A (zh) * | 1998-02-17 | 1999-08-25 | 国际商业机器公司 | 高性能的推测性字符串/多重操作 |
CN101169710A (zh) * | 2006-10-26 | 2008-04-30 | 中国科学院计算技术研究所 | 对状态寄存器进行重命名的方法和使用该方法的处理器 |
CN101447911A (zh) * | 2007-11-27 | 2009-06-03 | 上海高性能集成电路设计中心 | 一种通过分布控制扩展访存队列容量的装置 |
CN102306092A (zh) * | 2011-07-29 | 2012-01-04 | 北京北大众志微系统科技有限责任公司 | 超标量处理器实现指令缓存路选择的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2015165017A1 (zh) | 2015-11-05 |
CN105308557A (zh) | 2016-02-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101754462B1 (ko) | 동적 비순차적 프로세서 파이프라인을 구현하기 위한 방법 및 장치 | |
US6687810B2 (en) | Method and apparatus for staggering execution of a single packed data instruction using the same circuit | |
US5546597A (en) | Ready selection of data dependent instructions using multi-cycle cams in a processor performing out-of-order instruction execution | |
CN103098020B (zh) | 由多个指令集使用的寄存器间映射 | |
US5564056A (en) | Method and apparatus for zero extension and bit shifting to preserve register parameters in a microprocessor utilizing register renaming | |
CN104813281B (zh) | 用于指令的快速失败处理的装置和方法 | |
US9904553B2 (en) | Method and apparatus for implementing dynamic portbinding within a reservation station | |
US10901744B2 (en) | Buffered instruction dispatching to an issue queue | |
CN109643233A (zh) | 具有带读取和读取/前进操作数编码的流引擎的数据处理设备 | |
CN106547518A (zh) | 用于加速器的低等待时间调用的装置和方法 | |
US6233671B1 (en) | Staggering execution of an instruction by dividing a full-width macro instruction into at least two partial-width micro instructions | |
US10866902B2 (en) | Memory aware reordered source | |
CN111752617A (zh) | 用于poq的系统、设备和方法以管理具有多个指令队列的处理器中的数据依赖关系 | |
US10437594B2 (en) | Apparatus and method for transferring a plurality of data structures between memory and one or more vectors of data elements stored in a register bank | |
GB2496934A (en) | Multi-stage register renaming using dependency removal and renaming maps. | |
CN109791493A (zh) | 用于乱序集群化解码中的负载平衡的系统和方法 | |
US11392386B2 (en) | Program counter (PC)-relative load and store addressing for fused instructions | |
CN111459543B (zh) | 一种管理寄存器文件单元的方法 | |
US7315935B1 (en) | Apparatus and method for port arbitration in a register file on the basis of functional unit issue slots | |
US7441099B2 (en) | Configurable SIMD processor instruction specifying index to LUT storing information for different operation and memory location for each processing unit | |
US8914615B2 (en) | Mapping same logical register specifier for different instruction sets with divergent association to architectural register file using common address format | |
US10628166B2 (en) | Allocating and deallocating reorder queue entries for an out-of-order processor | |
JP4589305B2 (ja) | Ilp及びtlpを利用する再構成可能なプロセッサアレイ | |
CN105308557B (zh) | 一种数据处理装置及方法 | |
US20040064679A1 (en) | Hierarchical scheduling windows |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20210430 Address after: Unit 3401, unit a, building 6, Shenye Zhongcheng, No. 8089, Hongli West Road, Donghai community, Xiangmihu street, Futian District, Shenzhen, Guangdong 518040 Patentee after: Honor Device Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |