MorphCore-An Energy-Efficient Microarchitecture for High Performance ILP and High Throughput TLP

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/shuiliusheng/article/details/82691037

MorphCore: An Energy-Efficient Microarchitecture for High Performance ILP and High Throughput TLP

  1. 当今的工作负载需要一个能够处理高性能单线程代码和高吞吐量多线程代码的微体系结构,而消耗的能量并不比需要的多。

  2. MorphCore:一个独特的方法,用于满足这些相互矛盾的要求。从传统的高性能out of order核开始,通过最小的改动,以便在必要时将其转换为高度线程化的按序SMT核

  3. Compared to a 2-way SMT out-of-order core, MorphCore increases performance by 10% and reduces energy-delay-squared product by 22%

  4. 工业上,通常情况下的两种类型的核

    • large out of order cores(OOO):通过利用ILP,为单线程提供高性能,但是对于多线程而言能效较低,因为他们不必要地浪费能源来开发ILP而不是利用现有的TLP
    • small cores:不会将能量浪费在OOO中,而是以线程性能差为代价提供高并行吞吐量
  5. ACMPs(Asymmetric Chip Multiprocessors):用于处理软件的多样性。主要思想:提供一个或者少数的large cores用于高性能的单线程执行,提供多个small cores,用于支持多线程程序的高吞吐量。问题在于:结构在设计时已经固定,无法动态更改

  6. CoreFusion-like architectures:解决ACMPs的限制。提供许多small cores用于提高多线程程序的吞吐量,同时当需要执行单线程程序时,这些small cores能够动态的融合成一个large core。问题在于:融合的large core相较于传统的OOO core而言,性能更低,功耗和能耗更大:

    • 在融合的large core的流水线阶段之间会有额外的延迟,因此会增加core的延迟
    • 模式切换之间需要刷新I-cache,并且small core之间缓存的数据需要进行迁移,会增加迁移成本
  7. MorphCore和CoreFusion之间的不同:后者将多个small core融合为一个large OOO core;前者则是以一个large OOO core作为基础,增加按序SMT的能力,从而能够利用程序的并行性。因此MorphCore有两种模式:OOO和InO

    • OOO mode:提供传统OOO core的单线程性能,性能下降最小
    • InO mode:当TLP可用时,利用变形,将OOO core转变为高度线程化(并发执行多个线程)的 in-order SMT core。从而允许利用不同线程并发执行掩盖长延迟,实现比OOO更高的吞吐量。
    • MorphCore因为在切换mode时,不需要进行指令或者数据的迁移,因此代价会很小
  8. MorphCore的两个关键观点:

    • 高度线程化的in-order core(6-8 way SMT)可以实现和OOO core相同或者更好的性能
    • 一个高度线程化的in-order SMT core可以由一个激进的OOO core的硬件子集构建出来
  9. MorphCore相对于OOO core更节能的原因:它通过利用TLP减少执行时间,并通过在In Order模式下关闭几个耗电结构(例如,重命名逻辑、无序调度和LDQ)来减少能耗。

  10. energy-delay-squared:

PDP=Powerdelay:衡量每个操作的能量消耗,主要用于衡量系统的能耗
EDP=PDP
delay:由于低能耗解决方案可能只是性能较低,因此我们需要一个包含能源和性能的指标。
EDS=sqrt(dalay)*Power

扫描二维码关注公众号,回复: 3719748 查看本文章
  1. A high-level layout of a 2-way SMT OOO core pipeline.(RAT:per-thread Register Alias Table)
    这里写图片描述

  2. Simultaneous Multi-Threading (SMT) :改善硬件资源的利用率

    • 一个核并发执行多个线程的指令
    • 每个周期,core会从多个ready的线程中选择一个线程,然后从这个线程中取指令。但是所有线程的指令会共用一个RS,因此core找到可以执行的指令就会变多,从而提高吞吐量
  3. 一个观察:一个高度多线程in order core可以实现类似于OOO core的指令发射吞吐量。(Out-of-order execution may not be cost effective on processors featuring simultaneous multithreading )

  4. 尽管乱序执行功耗很高,但是因为它能够提供比按序执行更显著的性能改进,因此仍是必须的。如果需要提高单线程性能,乱序执行需要保留;如果需要利用软件并行性,按序SMT应该被使用。

  5. MorphCore Microarchitecture

    • 相对于之前OOO的微体系结构的整体上的变化。
      这里写图片描述

    • Fetch and Decode Stages

      MorphCore增加了六个SMT contexts。每个context由PC,BHR,RAS组成。OOO模式下有两个SMT contexts,InO模式下有8个SMT contexts。
      这里写图片描述

    • Rename stage

      InO模式下,PRF用于存储多个按序SMT线程的体系结构寄存器。PRF被从逻辑上分成划分为多个固定大小的分区,每个分区存储一个线程的体系结构寄存器的状态。问题:SMT线程的寄存器个数受限,但是目前PRF很多,因此不成问题
      这里写图片描述
      这里写图片描述

    • Allocating/Updating the Resources

      • OOO模式下,为重命名之后的指令分配ROB,LDQ,SDQ资源
      • InO模式下,ROB被用作存储指令信息,ROB被划分为固定大小的块,每个块对应于一个活动线程。同时load指令必须按序完成,因此不需要LDQ。SDQ用于保存已经提交的Store指令的但未写回D-cache的数据,SDQ也根据线程个数被均分
    • Insert into the Reservation Station (RS)

      • OOO模式中,RS被多个线程共享,RS根据free list进行entry分配
      • InO模式中,RS在多个线程间被划分为固定大小的分区,每个分区作为环形队列使用
        这里写图片描述
        这里写图片描述
    • Select and Wakeup

      • Out of Order Wakeup (高能耗的广播)

        OOO Wakeup logic works exactly the same as a traditional out-of-order core。当指令发射时,将其目的寄存器tag和所有RS中的源寄存器tag进行比较,如果匹配,则将Match bit设置为1,Delay字段设置为发射指令的执行延迟。Delay字段也会锁存在Shift字段。当Match bit为1时,Shift每周期向右移动一位,当shift字段为0时,R位会被设置为1。RS的表项等待两个源操作数都就绪,然后设置Req-OOO Exec line。

      • Out of Order Select (高能耗的广播)

        监视RS中所有的指令,并选择设置了Req OOO Exec的最老的指令。输出为Grant Bit向量,用于指示下一次会被发射的RS的表项。当指令被发射之后,scheduled bit设置为1,用于指示已经被调度

      • In Order Wakeup

        为RS表项增加两个字段:Scheduled和Match(M),同时保留其它字段。当指令发射时,操作与之前OOO一样。每周期,检查每个线程的RS中的最老的两条指令的源操作数的可用性,如果可用,则将M bit设置为1。(没有广播操作)

      • In Order Select

        使用一个复杂但是高效的分层工作。首先维护8个In Order的选择块和一个其它的块。每个select block在自己对应的线程中选择指令,最后一个select block从8个选择块的结果中选择指令。每个in-order只查找RS分区中的最老的两条指令。(没有广播操作)
        这里写图片描述

    • Execution and Commit

      大致和OOO情况下一致,读取操作数,执行,bypass广播结果。但是在In-Order模式中,需要增加额外的PRF-bypass和data buffer,用于存储和bypass之后已经执行但未提交的指令的结果,因此之前可能会有指令延迟较长尚未执行完。

    • Load/Store Unit

      • 在OOO模式中,load指令在发射后,更新Load Queue的表项,同时搜索Store Queue获取最新的值。在store指令发射后,更新并且将数据存储在Store Queue中,同时搜索Load Queue以检查Store-to-Load的顺序的正确性
      • 在In-Order模式中,load/store不再推测执行,因此不需要Load Queue,但是load仍旧会搜索Store Queue
        这里写图片描述
    • Recovering from Branch Mispredictions

      在Out of Order模式下,分支错误预测触发恢复机制,该机制将F-RAT恢复到重命名错误的分支指令之前的状态。 在In Order模式下,分支错误预测会压缩RS分区中的指令,ROB分区和来自线程的前端流水线,然后将PC重定向到正确的目标。

  6. Area and Power Overhead of MorphCore

    • SMT ways增加到了8个,因此取指阶段和其它部分都会增加硬件,使用McPAT评测,面积增加小于0.5%
    • 增加了InOrder wakeup和select的逻辑,面积认为增加了0.5%,乱序的一半
    • 增加了额外的Bypass和Buffer,面积认为也增加了0.5%
  7. Timing/Frequency Impact of MorphCore

    • InOrder renaming/scheduling/execution logic. :在三个阶段需要增加多路选择器,Rename阶段选择重命名的指令,指令调度阶段选择就绪的指令,PRF-read阶段(增加的bypass)。整体估计MorphCore比基本的OOO core慢2.5%
    • 更多的SMT上下文。延长前端的Thread selection逻辑,从二选一变为了八选一。但是之前的延迟可以掩盖掉前端的线程选择延迟
    • 虽然In-order模式下,增加了选择和唤醒逻辑,但是由于相对于乱序的逻辑更加简单,因此认为不会改变关键路径的延迟
  8. MorphCore Turning Off Structures in In-Order Mode :在按序模式下,OOO的重命名逻辑,调度逻辑和LDQ将不会使用,因此不会有动态功耗,但是仍会有静态功耗。虽然可以进一步降低静态动态,但是相对于得到的好处,不值得

  9. MorphCore interaction with OS:操作系统不需要有变化,模式切换由硬件完成

  10. When does MorphCore Switch Modes:根据观察现有处于激活状态的线程的数目决定

    • 线程处于激活状态:不需要等待任何的同步事件
    • 当激活线程个数小于阈值,切换到OOO;超过阈值则切换到In-Order
  11. MorphCore Changing Mode from OOO to In-Order :通过执行微代码例程处理

    • 排干流水线
    • 将所有线程的体系结构寄存器保存到一个保留的内存区域。为避免这些写入时出现高速缓存未命中,我们使用完全高速缓存行写入指令,这些指令在写入之前不会读取高速缓存行
    • 关闭Rename unit,OOO wakeup和select逻辑块,LDQ
    • 将寄存器值填充回每个线程的PRF分区。 这是使用特殊的加载微操作来完成的,这些微操作可以直接寻址PRF条目而无需重命名。
  12. MorphCore Changing Mode from In-Order to OOO :因为In-Order模式下运行的线程比OOO模式更多,因此一些线程需要标记为 inactive/“not running”,除非某些线程已经处于inactive状态。非活动线程被存储在内存中,直到成为活动线程。为了加载活动线程状态,MorphCore使用 Active Threads Table的结构存储指向非活动线程的体系结构状态的指针,使用线程ID进行索引,每个线程存储一个8字节的指针

    • 排空流水线
    • 保存所有线程的体系结构寄存器,将inactive threads的指针存储在Active Thread Table中
    • 打开Renaming unit,OOO wakeup和select逻辑块,LDQ
    • 仅仅将active thread的体系结构寄存器根据之前确定的位置加载进入PRF,更新Speculative-RAT和Permanent-RAT
  13. MorphCore Overheads of Changing the Mode

    • 主要是排干流水线的开销
    • 换入换出线程的体系结构寄存器的延迟可以被排空流水线的延迟所掩盖
  14. 将多个small core合并为一个large core的缺点

    • 融合的Cores的性能是受限的,因为组成的small cores的操作是同步的。此外,融合会增加流水线阶段之间的延迟,核与核之间的通信也会产生延迟
    • 模式切换时,由于I-cache刷新和D-cache之间的数据迁移会产生很高的代价
    • 由于使用中等大小的OOO core作为基础核,因此在非融合模式或者融合模式下,能效都很低
  15. 异构多核处理器的限制

    • large core和small core的个数在设计阶段已经固定
    • 两种类型的核之间的执行迁移会有代价
  16. SMT的缺点:

    • 当TLP可用时,SMT并不能降低功耗
    • 传统的SMT会增加核的面积,设计复杂度和功耗

猜你喜欢

转载自blog.csdn.net/shuiliusheng/article/details/82691037