精华内容
下载资源
问答
  • 寄存器重命名

    千次阅读 2015-05-27 09:34:12
    寄存器重命名技术在乱序执行流水线中有两个作用。一是消除指令之间的寄存器读后写相关(WAR),和写后写相关(WAW);二是当指令执行发生例外或转移指令猜测错误而取消后面的指令时可以保证现场的精确。 寄存器...

    寄存器重命名技术在乱序执行流水线中有两个作用。一是消除指令之间的寄存器读后写相关(WAR),和写后写相关(WAW);二是当指令执行发生例外或转移指令猜测错误而取消后面的指令时可以保证现场的精确。

    寄存器重命名的思路很简单:就是当一条指令写一个结果寄存器时不直接写到这个结果寄存器,而是先写到一个中间寄存器过渡一下,当这条指令提交的时候再写到结果寄存器中。


    指令重命名有两种方法:软件重命名和硬件重命名方法。


    • 软件寄存器重命名方法  是在编译的过程中消除指令集的数据相关的方法:

    例如,具体示例如下,Addy 摘自胡老总《计算机体系结构》(相同颜色为 寄存器相关):

    通过软件方法,在编译过程中将寄存器相关的部分,通过软件寄存器重命名的方法解决部分寄存器相关,增大了指令间的并行性。

    如下图所示为 软件修改结果。



    • 硬件寄存器重命名方法   大致可以分成两种,一是把重命名寄存器和结构寄存器分开;二是不把重命名寄存器和结构寄存器分开。

              重命名寄存器(程序员不可见微结构寄存器)和结构寄存器(程序员可见寄存器)。

            重命名寄存器和结构寄存器独立方式 如图:


    • 重命名寄存器的状态

              EMPTY:表示该寄存器没有被重命名(重命名后又已经被释放)。
              MAPPED:表示已经被重命名但结果没有写回。
              WRITEBACK:表示结果已经写回重命名寄存器但没有Commit到结构寄存器。

    • 结构寄存器的状态

             VALID:表示相应寄存器的值可用。
             INVALID:表示相应寄存器的值不可用。

    • 映射关系
            可以在结构寄存器中增加一个指向重命名寄存器的重命名寄存器号域。


        重命名寄存器和结构寄存器合并方式(寄存器堆)如图:


    • 核心是重命名表
           可以用CAM或RAM的方法,以CAM的方法为例。
           项数与物理寄存器一样。
           主要包括三个域:
               name:相应的逻辑寄存器号。
               state:状态,EMPTY:表示该寄存器没有被重命名(重命名后又已经被释放);MAPPED:表示已经被重命名但结果没有写回;WRITEBACK:表示结果已经写回重命名寄存器但没有Commit到结构寄存器;COMMIT:表示结果已经被确认。
              valid:在一个逻辑寄存器对应多个物理寄存器的情况下表示最新映。

    展开全文
  • arm专利: 数据处理系统中的寄存器重命名
  • IDA对寄存器重命名

    2018-02-07 14:03:22
    IDA可以对寄存器重命名,如下图:可以设置新名称作用范围:起始地址、结束地址好强大的功能

    IDA可以对寄存器重命名,如下图:


    可以设置新名称作用范围:起始地址、结束地址

    好强大的功能



    展开全文
  • 寄存器重命名(Register Rename) 重命名缓存类型(Rename Buffer Type) merged architectural and rename register file 每个物理寄存器处于4状态中的一个,4个状态如下: available: uncommitted state AR...

    寄存器重命名(Register Rename)

    1. 重命名缓存类型(Rename Buffer Type)

      • merged architectural and rename register file
        每个物理寄存器处于4状态中的一个,4个状态如下:
        available: uncommitted state
        AR(architectural register): 作为指令集寄存器
        RB(rename buffer), not valid: 作为RB,但是寄存器不包含指令返回的结果。
        RB, valid: 作为RB,寄存器包含指令返回的结果。
        Rename buffer的一般类型,灰色为Rename Buffer

        初始化时,前n个物理寄存器被分配成AR状态。n为指令集中定义的寄存器个数。剩余的寄存器处于avaliable状态。
        当一条包含目的寄存器的指令被发射时,需要从avaliable的寄存器中分配一个物理寄存器。相应地,它的状态被设置成“RB, not valid”,valid bit被清除。等到相应的指令执行完,结果写进分配好的rename buffer中。这时valid bit被置1,状态转到“RB,valid”。接着,当该指令执行完时,被分配的rename buffer将进入AR状态。最后,当旧的AR回收时,被置成Available状态。
        如果指令发生错误(faulty)或者异常(exception),未完成的指令必须被取消。已经被分配的rename buffer处于RB,valid或者RB,not valid的状态将变成available状态。另外,相应的映射表或者rename buffer也将被取消。
        状态转移图相比于其他类型,merged模式不需要AR和RB之间的数据传输。

      • stand-alone rename register
        Rename buffer可以和指令集buffer分开。指令执行完需要有从RB到AR的回写。

      • keeping renamed values in ROB
        ROB(reorder buffer)是用来暂存已经发射的指令,确保指令顺序执行的循环buffer。每个ROB的entry都存放正在执行的指令,当然可以扩充一个位域用来存放返回结果。ROB也可以进一步扩展作为终于暂存站(central shelving buffer)。

      • keeping renamed values in shelving buffers
        Rename Buffer也可以用指令缓存区来实现。这样做有个明显的缺点,就是指令缓存在指令分发出去时就可以回收,而RB必须等到指令执行完才可以回收。

    2. 拆分rename 寄存器
      前面为了简单起见,统一叫AR。在实际cpu中,定点的寄存器和浮点的寄存器往往是分开存放的。但是无论定点指令还是浮点指令都统一存放在一个ROB中,因此ROB要有足够的深度来保持定点和浮点的数据。

    3. RB的数量
      RB保存寄存器结果直到指令完成。考虑到并非所有指令都是寄存器指令。因此,正在执行的尚未完成的最大指令数是我们需要的RB数量。这些尚未执行完的指令包括:

      • 放在暂存架上尚未执行的指令
      • 在执行单元中的指令
      • 在load queue中的等待cache访问的指令
      • 在store queue中的等待结束的指令
        因此最大未完成指令数为:
        npmax = wdw + nEU + nLq + nSq
        wdw:暂存架深度
        nEU:并行执行单元个数
        nLq:load queue的深度
        nSq:store queue的深度
        假设最差情况,RB个数需要:
        nrmax = wdw + nEU + nLq
        store指令不需要RB。
        如果CPU中用了ROB,那么ROB的深度和npwax一样。
        如果设计中ROB个数或者RB的个数少于上面的公式,在最差情况下,有可能造成因资源不足而导致的阻塞,对性能有一些影响。典型的场景中,满足如下公式:
        wdw < nr < nROB
    4. 读写端口数
      读写端口数是在一个周期内,根据操作数的个数决定的。这还跟操作数获取策略(Operand fetch policies)有关。策略分为发射获取(issue-bound fetch)和分发获取(dispatch-bound fetch)两种。如果是发射获取,那么操作数在存入暂存站时就把寄存器也同时存入暂存站,而分发获取则在暂存站只保留寄存器号,等到分发时才读取寄存器。发射获取模式下,寄存器读写端口跟发射数有关。比如4发射,定点指令如果最多有3个操作数,那么需要12个读4个写端口。分发获取则考虑执行单元的并发数。

    5. 寄存器映射方法(Register mapping methods)
      在寄存器重命名期间,处理器需要分配物理寄存器,同时在指令结束前,跟踪架构寄存器到物理寄存器的映射关系。因此重命名包括三个组件:

      • 重命名buffer的分配
      • 映射关系的跟踪方法
      • 重命名buffer的回收
        因为寄存器只有在指令发射时才会用到,因此在发射之前重命名会浪费RB的空间。
        跟踪寄存器映射关系通常有两类方法。一是构造映射表。表的深度为架构寄存器的数量,根据架构寄存器索引物理寄存器。另一类是物理寄存器上增加一些标识,来记录映射关系。
        寄存器映射关系跟踪a是映射关系表。b是在物理寄存器上扩展出5个位域。
        Entry valid: 表示改物理寄存器已经分配了。
        Dest register no: 表示架构寄存器号。
        Lastest bit:在重复重命名时会出现多个有效表示,last表示最后一次分配。
        Value: 寄存器的值
        Value valid: 寄存器值是否有效,当指令执行完并返回结果时,有效位置1.
    6. 重命名率
      重命名率是指在一个周期内,处理器可以操作的最多的重命名数量。重命名率应该等于发射率(issue rate)。但是实现高的重命名率并不容易。首先分析指令之间的依赖关系将变得复杂,其次需要更多的寄存器读写端口。

    7. 可能的实现
      寄存器重命名实现方法

    8. 应用实践
      在这里插入图片描述从Free list里按顺序找到可用的物理寄存器,写到rename table中,同时在ROB中跟踪映射关系。

    参考文献:The Design Space of Register Renaming Techniques, Sima, IEEE 2000.

    展开全文
  • 寄存器重命名技术在乱序执行流水线中有两个作用。一是消除指令之间的寄存器读后写相关(WAR),和写后写相关(WAW);二是当指令执行发生例外或转移指令猜测错误而取消后面的指令时可以保证现场的精确。 寄存器...

    寄存器重命名技术在乱序执行流水线中有两个作用。一是消除指令之间的寄存器读后写相关(WAR),和写后写相关(WAW);二是当指令执行发生例外或转移指令猜测错误而取消后面的指令时可以保证现场的精确。

    寄存器重命名的思路很简单:就是当一条指令写一个结果寄存器时不直接写到这个结果寄存器,而是先写到一个中间寄存器过渡一下,当这条指令提交的时候再写到结果寄存器中。


    指令重命名有两种方法:软件重命名和硬件重命名方法。


    • 软件寄存器重命名方法  是在编译的过程中消除指令集的数据相关的方法:

    例如,具体示例如下,Addy 摘自胡老总《计算机体系结构》(相同颜色为 寄存器相关):

    通过软件方法,在编译过程中将寄存器相关的部分,通过软件寄存器重命名的方法解决部分寄存器相关,增大了指令间的并行性。

    如下图所示为 软件修改结果。



    • 硬件寄存器重命名方法   大致可以分成两种,一是把重命名寄存器和结构寄存器分开;二是不把重命名寄存器和结构寄存器分开。

              重命名寄存器(程序员不可见微结构寄存器)和结构寄存器(程序员可见寄存器)。

            重命名寄存器和结构寄存器独立方式 如图:


    • 重命名寄存器的状态

              EMPTY:表示该寄存器没有被重命名(重命名后又已经被释放)。
              MAPPED:表示已经被重命名但结果没有写回。
              WRITEBACK:表示结果已经写回重命名寄存器但没有Commit到结构寄存器。

    • 结构寄存器的状态

             VALID:表示相应寄存器的值可用。
             INVALID:表示相应寄存器的值不可用。

    • 映射关系
            可以在结构寄存器中增加一个指向重命名寄存器的重命名寄存器号域。


        重命名寄存器和结构寄存器合并方式(寄存器堆)如图:


    • 核心是重命名表
           可以用CAM或RAM的方法,以CAM的方法为例。
           项数与物理寄存器一样。
           主要包括三个域:
               name:相应的逻辑寄存器号。
               state:状态,EMPTY:表示该寄存器没有被重命名(重命名后又已经被释放);MAPPED:表示已经被重命名但结果没有写回;WRITEBACK:表示结果已经写回重命名寄存器但没有Commit到结构寄存器;COMMIT:表示结果已经被确认。
              valid:在一个逻辑寄存器对应多个物理寄存器的情况下表示最新映。






    展开全文
  • 寄存器重命名法将原来的32个寄存器映射到两组寄存器,分别是标准规定的32个寄存器,我们称作虚拟寄存器或者架构寄存器和CPU内置的物理寄存器。我们建立虚拟寄存器到物理寄存器的映射关系,并将数据(指令产生的结果...
  • 寄存器不能随便改名字,否则原来的数据依赖关系被打乱,会导致错误的执行结果,那么怎样才能既保留原先的数据依赖关系,又能将没有数据依赖性的指令的寄存器改名字呢? 这里介绍一种在处理器中经常实现的策略: 1....
  • 提出一种重命名寄存器配对共享分配策略,在运行N个独立线程的结构中,将重命名寄存器分成N份,每个主动线程及其相应的冗余线程共享其中的一份,这样就可以比较有效地缓解竞争式共享所带来的负面影响.实验表明,配对共享...
  • CUDA:寄存器详解

    千次阅读 2018-05-21 10:46:15
    CPU通过使用寄存器重命名和栈来执行多线程。为了运行一个新任务,CPU需要进行上下文切换,将当前所有寄存器的状态保存到栈上,然后从栈中恢复当前需要执行的新线程上次的执行状态。这些操作需要花费上百个CPU时钟...
  • fpu,mmx以及sse寄存器的少量简介

    千次阅读 2013-06-15 23:31:24
    FPU: 8个80位浮点寄存器(数据),16位状态寄存器,16位控制寄存器,16为标识寄存器。  使用FPU指令对这些寄存器...MMX: 将8个FPU寄存器重命名为8个64位MMX寄存器,即mm0到mm7。[号称多媒体处理技术]  57条MMX指
  • CUDA 学习(十)、寄存器用法

    千次阅读 2016-10-26 14:00:14
    CPU通过使用寄存器重命名和栈来执行多线程。为了运行一个新的任务,CPU需要进行上下文切换,将当前所有寄存器的状态保存到栈(系统内存)上,然后从栈恢复当前需要执行的新线程上次的执行状态。这些操作通常需要花费...
  • 寄存器重命名被RAT(寄存器重命名表)和重排序缓冲区控制,如图6.1所示。来自译码器和stack engine的uops通过queue进入RAT,而后进入ROB-read 和保留站。RAT可以每周期处理4条uop。RAT可以每周期重命名4个寄存器,并且...
  • 多发射数据通路-CA

    2020-01-21 15:47:19
    文章目录乱序执行的关键技术指令级并行的关键技术动态调度技术动态调度流水线数据通路保留站的组织(指令缓存结构)寄存器与保留站的关系---读取寄存器值的时机寄存器重命名方法硬件重命名的分类具体应用常见处理器...
  • 编译器本质上通过每个循环迭代中寄存器重命名来展开循环 硬件也可以通过寄存器重命名和乱序执行来获得同样的效果 动态调度 - 记分牌 - Tomasulo's 算法 冒险的检测和调度 1.如果存在数据相关,硬件检测机制...
  • 现代处理器的结构和特点

    千次阅读 2017-10-08 22:06:19
    流水线 高速缓存 乱序执行 寄存器重命名 分支目标预测
  • 6.4. 寄存器重命名寄存器重命名由图6.1所示的寄存器别名表(RAT)控制。来自解码器的μop通过队列去往RAT,然后到ROB与保留站。RAT每时钟周期可以处理3个μop。这意味着微处理器的总体吞吐率平均不会超过每时钟周期...
  • 循环展开实现实例

    2015-12-20 13:43:43
    完整实现了计算机体系结构中的循环展开,包括迭代复制、寄存器重命名、调度等
  • 优化程序性能

    2021-05-13 15:25:03
      寄存器重命名是计算机CPU的微体系结构(Microarchitecture)中的一种技术,避免了机器指令或者微操作不必要的顺序化执行,从而提高了处理器的指令级并行的能力。   最常见的控制操作数在执行单元间传送的机制...
  • 重命名和注释变量重命名 快捷键(y),若想恢复则更名为空白名称即可方法/寄存器重命名 快捷键(N)注释:常规注释(:)/可重复注释(;),「;」表示该行为注释如果你所分析的文件类型与常见...
  • 寄存器重命名是为了移除false data dependancy。它减少了指令执行序列之间的要求,因此更多的指令可以并行的执行,进而处理器的性能增强。 寄存器重名的原理是简单地。如果处理器遇到了一条指令,它会将指令的结果写...
  • OPTIMIZING THE EXECUTION CORE 通用的优化准则来充分利用超标量cpu的并行性: - 遵循前端优化准则,最大化译码带宽和... - 最大化寄存器重命名带宽。本文将讨论包括如何正确处理partial registers, ROB read port...

空空如也

空空如也

1 2 3 4 5 6
收藏数 117
精华内容 46
关键字:

寄存器重命名