OOO Execution May Not Be Cost-Effective on Processors Featuring SMT

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

Out-Of-Order Execution May Not Be Cost-Effective on Processors Featuring Simultaneous Multithreading

  1. 摘要:

    • SMT是一种有前景的方法,能够用来在超标量流水线中实现高吞吐量
    • 在一个四线程的SMT处理器中,乱序执行相对于按序执行而言,能够带来的性能优势很小
    • 在某些相对于关注单应用性能,更关注吞吐量的应用领域,SMT+INO可能会比乱序超标量或者乱序SMT更具有成本效益
  2. Motivation:

    • 为了提高单线程的性能,出现了更加复杂,激进的技术。硬件的设计复杂性逐渐增加,同时硬件的设计和测试周期都有可能会增加
    • 更多的多线程应用出现
    • 之前没有工作比较过SMT在按序和乱序执行中所带来的性能
  3. 论文内容:
    在这里插入图片描述

    • 按序执行模型:每个线程都有一个32个表项的指令队列。在每个周期,队列会选择指令发射到功能部件。线程之间的选择通过优先级来决定。当选择一个线程中,指令会一直从当前队列中按序发射出去,直到出现了资源冲突,数据相关或者是分支。然后根据优先级选择下一个线程。每个线程都可以访问32个整数和32个浮点寄存器。

    • 乱序执行模型:在译码之后,指令会在保留站中等待直到操作数可用,并且功能部件空闲。每个周期,任何指令都有可能被发射。乱序执行需要重命名,因此每个线程会有64个整数和浮点数寄存器。每个RS有16个表项

    • 论文实验:比较了在按序执行和乱序执行情况下,SMT的线程个数,存储层次和分支预测对性能的影响
      在这里插入图片描述

    • 乱序执行在单线程上相对于按序执行的性能优势会由于SMT提供的更多的线程数而减弱。因为在按序流水线中,由于更多的线程并行执行,将会出现更多非相关指令可使用。而在乱序执行中,由于执行某些可能会被取消的指令所占用的硬件资源,会影响从其他线程中执行有效指令所需要使用的资源

    • 当线程数变多时,分支预测错误所带来的影响将会减弱

      • 因为有更多来自不同线程的有效指令可用,推测执行将会变少
      • 当分支预测错误时,可以使用其它线程的指令继续填充流水线
    • 当线程数增多时,存储层次对性能的影响更加重要。因为一个cache miss,会使得所有线程都受到影响,因为它占用了带宽,同时延迟了所有其它线程的之后的cache miss

  4. 论文结论:

    • 当时钟频率相同,流水线级数相同时,单线程情况下,按序相对于乱序的性能差距46%,在四线程SMT的情况下,性能差距15%。(一般情况下,按序流水线的频率会更高事实上)
    • 多线程的情况下,分支预测错误的影响会减小(收到影响的指令会变少),但是会增加对存储系统的压力,会产生更多的cache miss和memory traffic

猜你喜欢

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