A Survey of Techniques for Architecting and Managing Asymmetric Multicore Processors(第七章)

A Survey of Techniques for Architecting and Managing Asymmetric Multicore Processors(第七章)

  1. 可重配置的AMP分类:

    • 动态融合或者划分cores,能够改变核数
    • 在核间共享或者交换(trade)硬件资源
    • 转换核的架构
  2. 核数可变的AMP

    • Ipek提出了Core Fusion,允许将相邻的OOO核融合成一个发射宽度更宽的OOO核。

      • 论文将四个OOO核和相应的L1 cache(D/I)在运行时合并成一个L1 cache,BTB,BP大小变为四倍,取指,发射,提交宽度提升4倍的核。
      • 一种可重新配置、分布式的前端和指令缓存组织,它可以利用单个核心前端结构来提供具有侵略性的融合后端,同时最小化对单个前端的过度供应。
      • Core Fusion提供了两种融合方式,即三种执行模式:支持细粒度并行的小核,更少但是性能更强的四发射supercore支持粗粒度并行,支持串行执行的八发射supercore
    • Mukundan针对于Core Fusion在融合之后的性能比标准的OOO处理器明显更小的问题,提出了解决方案

      • 原有的设计中,每次提交一个fetch group,由8条指令组成。如果无法取到8条指令,则用NOPs填充ROB,此时ROB的有效大小将会降低。论文提出一种方式,使得NOPs在ROB中的表示更加紧凑
      • 论文提出了一种基于遗传算法的指令控制机制,以减少跨核操作所带来的通信开销
        在这里插入图片描述
    • Zhong提出了一个可重配置的AMP,使用多个简单同构的核,可以用解耦模式或耦合模式进行组织。

      • 解耦模式:核在不同细粒度的通信线程上独立工作。通过使用编译器,将程序细分为多个通信子图,子图使用线程的方式执行,从而充分利用TLP和循环级并行性
      • 耦合模式:所有核共同作为一个宽发射的VLIW处理器,以同步方式处理多个指令流
    • Tarjan提出一种体系结构,支持将两个标量按序处理器组合形成一个发射宽度为2的乱序处理器。

      • 在两个按序核之间,增加低开销的查找表实现乱序核中的发射队列(CAMs)和发射逻辑。查找表纪录这生产者和消费者的对应关系,从而能够用于乱序发射
      • 对于单线程应用程序,这种结构可以实现按序处理器两倍的性能
        在这里插入图片描述
    • Watanabe提出了一种架构能够使用多个按序执行单元EU,根据需求近似得到乱序发射的功能,可以提高能效

      • 将线程上下文管理(指令引擎IE)从众多简单的执行单元中分离出来,从而支持在单个芯片上能够支持多个不同组合的小型/更大的核
      • 通过全局的资源分配,改变 使用的IEs的数量(其余的关闭,节省能量)和分配给每个IE的EU的数量
      • 有依赖关系的指令在可以临近EU组成的集群中执行,独立指令可以在一个空闲的EU上同时执行
        在这里插入图片描述
    • Chiu提出了一种架构允许将多个标量的核动态的合并成一个大的超标量处理器,从而同时支持高/低的TLP

      • 为了解决融合之后的寄存器管理问题,提出了一个虚拟共享寄存器堆VSRFs。线程可以执行访问VSRFs,然后在于硬件将VSRFs和物理的寄存器连接在一起。
      • 程序员不需要指导寄存器的有效值的位置,这些信息通过基于表的机制隐式管理
        在这里插入图片描述
    • Pricopi提出了一种可重配置的多核架构,能够同时利用TLP和ILP

      • 该架构能够动态的将两个或者多个简单的核合并起来,为串行代码提供ILP
      • 为了提高伸缩性,论文使用了一个分布式的执行框架,从而消除了集中取指,译码,调度和相关解析。该执行模式类似于并行计算中的线程池模式,通过创建许多线程来执行更多的任务。在该架构中,core对应于线程,基本块对应于任务。
      • 通过利用编译器,实现识别基本块和寄存器依赖关系,从而保证core能够一次获取和执行一个基本块。
        在这里插入图片描述
  3. 支持核间资源交换和共享的可重配置AMP

    • Pericas提出了一种处理器架构支持在运行时动态调整指令窗口大小

      • 该架构中的指令窗口包含着分布在处理单元上的数千条指令,在很大程度上克服了内存长延迟操作的负面影响
      • 指令窗口非常大,但是发射窗口很小,因为每个处理单元上执行的指令很少。指令窗口的大小通过增加或者删除 memory engines来实现
      • 在架构中包含一类cache core用于执行局部性非常好的代码;另一类memory engine,用于执行局部性差,访存密集的代码。每个线程在功耗约束的情况下,激活需要的memory engine,改善性能
    • Gupta提出了一种可重配置的架构,模糊了单个核的边界,能够从打破的流水线阶段级别的资源网络中重新组装得到可变宽度的逻辑处理器

      • 通过组合成多个单发射流水线提高并行性能,而多发射流水线则用于提高串行性能
      • 需要编译器参与进行指令的控制
      • 可配置为吞吐量计算、单线程性能、容错、定制处理等的大量building块
        在这里插入图片描述
    • Rodrigues提出了一种可重配置的AMP,其中每一个核在各个方面都有适度的自己的资源,同时在特定的领域(例如浮点或者整数)具有额外的优势资源。即每个核都适合于特定的工作负载。

      • 当一个线程有多个方面的需求时,可以重新排列资源,使得一个core可以将自己的较弱的硬件资源和另一个core的同一个方面较强的资源交换,从而提高该线程的性能
      • 示例:一个AMP中包含两个核,一个核善于整数计算但是浮点表现差,另一个善于浮点计算而不擅长于整数计算。一个既需要整数计算也需要浮点计算的线程希望提高性能,此时可以将第一个核的FP的单元和第二个核的FP进行交换,从而在第一个核上可以提高能效
        在这里插入图片描述
    • Rodrigues指出了大核的性能优化并没有被充分利用。同时为了优化能耗,小核的执行单元又很少。此时当线程运行在小核上需要更多的资源时,可以共享大核的一些未被利用的资源。这种方式对大核的性能影响很小,同时节省了面积和功耗,提高了小核的性能
      在这里插入图片描述

  4. 可变核心架构的AMP

    • Khubaib提出了一种架构,以OOO的大核为基础提高单线程性能,同时允许重新配置为按序的SMT核,从而支持加速并行程序
      • 根据线程数目决定是否从OOO转变为INO SMT
      • 某些资源被划分用来支持SMT的INO,一些资源则会停止工作在INO模式下
    • Lukefahr提出了一种核心架构,组合了一个高性能核(big uEngine)和一个高能效核(small uEngine)
      • 每个时间点,只会有一个引擎在工作。根据程序不同阶段的特点动态切换
      • 通过在线性能估计机制,预测未使用的微引擎上的可能的性能。当未执行的引擎能够提供更高的吞吐量或者能效时,切换引擎
    • Fallin指出对于串行代码,经常会间隔数十或者数百条指令出现不一样的特性,这些特性能够将连续区域的指令划分成组,成为单独的执行块。论文提出了一种组合的后端流水线架构,后端包括三种结构:OOO、INO、VLIW。通过将程序划分为代码块,然后根据代码块的特征选择最适合的后端模式执行,从而得到更好能效(相对于单一的任意一种模式)
    • Srinivasan提出了一种体系结构,允许在运行过程中,将乱序核转换为按序核,只要发现按序核能够提供更有效的功率效率(性能/瓦特)
    • Srinivasan指出在核内的不同的微架构会对应用产生不同的功率效率,例如ROB,LSQ,IQ的大小,取指和发射宽度,电压和频率。通过设计空间的探测,找到这些因素对结果的影响,从而允许动态的切换不同的微架构特征
  5. 使用非传统的ISA,设计可配置的AMP

    • Sankaralingam提出了一种多形态的Trips体系结构,可以配置为利用不同粒度和类型的并行性的结构。该结构包括4个乱序,16发射的核,为单线程程序提供高性能。同时这些核可以被继续划分,从而支持更细粒度的调度。
      • 为了利用ILP,将核的指令缓冲区是为分散的指令发射窗口,利用trips isa实现OOO执行
      • 为了利用TLP,为线程之间提供共享的ALU
      • 为了开发DLP,多个架构中的框架被融合在一起(例如相同索引的RS被融合在一个索引下),然后将流媒体程序中的内层循环展开,从而填充融合之后的RS
    • Kim提出了一种可重配置的AMP,能够将简单的内核动态的融合成更大的内核,从而优化性能,能耗和面积
      • 使用显示数据图执行(EDGE ISA),将块内指令的依赖关系静态的显示编码出来
      • 利用EDGE作为ISA,能够通过更好的伸缩性和灵活性
  6. 使用3D堆叠技术设计AMP

    • 在二维平面中设计流水线布局,在第三维中分配额外的资源,例如LSQ,ROB,Cache等,从而能够不影响二维的流水线布局。
    • 通过3D堆叠技术能够实现更小的通信延迟,同时能够提供更加灵活的资源池
  7. 可重配置的AMP中的调度策略

    • Panneerselvam提出了通过扩展linux OS来支持可重配置的AMPs。
      • 通过处理器代理,让另一个处理器支持通信和全局操作,从而能够让处理器快速重新配置
      • 将物理核和硬件线程抽象为逻辑对象,从而使得调度程序不需要知道物理硬件细节
      • 根据并行应用程序和串行应用程序的需求,调度器决定处理器何时并且如何重新配置,从而更好的平衡线程之间的性能平衡
    • Sun提出了一种用于改善可重配置的AMP和性能和公平性的技术
      • OS调度器运行在独立的core上,而不是可重配置的core
      • 提供了一种基于EDP的动态优先级算法,以保证调度的公平性。该算法既能够为同一类任务提供和优先级成正比的性能提升,也能够为相同优先级的不同任务提供一致的减速
  8. 使用静态AMP提供类似于可重配置的AMP的效果

    • Ansari提出了一种结合编译的技术。将在小核上运行的线程进行简化和抽取,运行在大核上,从而为小核的执行提供提示,以加速小核的执行性能。这种技术提供了比所有小核更高的单线程性能,同时提供了比所有大核更高的吞吐量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值