为了满足应用程序的多样化需求,异构多核处理器出现并逐渐进入市场,其中的处理核心(core)具有不同的微架构或者指令集架构(ISA),为应用提供多样化特性支持,比如指令级并行(ILP)、内存级并行(MLP),这些核心协同工作满足整个计算系统的优化目标,比如高性能、低功耗或者良好的能效.然而,目前主流的调度技术主要是针对传统同构处理器架构设计,没有考虑异构硬件能力的差异性.在异构多核处理器环境下,调度技术如何感知硬件的异构特性,为不同类型的应用程序提供更加合适和匹配的硬件资源,这是值得探索的问题.对近年来在该研究领域的成果进行了综述研究,特别是在性能非对称多核处理器架构下,异构调度技术面临的优化目标、分析模型、调度决策和算法评估等主要问题进行了分析和描述,并依次对相关技术进行了系统的总结,最后从软硬件融合的角度对今后的研究工作进行了展望.
To meet the diverse needs of the applications, heterogeneous multicore processors appeared and entered into market, where the processing cores have a different microarchitecture or instruction set architecture (ISA), providing special features such as instruction level parallelism (ILP) and memory level parallelism (MLP). These cores work together to meet the optimization objectives of the entire computing system, such as high performance, low power consumption or energy efficiency. However, the mainstream scheduling technology is designed for the traditional homogeneous processor architecture, without considering the differences of processing capabilities of various cores. It is worth exploring for scheduling technologies that can perceive the heterogeneous characteristics of the hardware and make more suitable matching decision between applications and hardware resources. The researches of heterogeneous scheduling in recent years are systematically summarized in the paper. This paper also analyzes the scheduling challenges and techniques under the environment of performance asymmetric multicore processors from the following aspects:optimization objectives, analysis model, scheduling decision, and algorithm evaluation. Finally, the future work is prospected from the perspective of software and hardware integration.
现代的计算机处理系统呈现多样化趋势, 从手持设备、笔记本电脑到集群系统、大规模数据中心, 无不如此.同时, 随着人工智能、深度学习、大数据等技术的出现, 应用程序日趋多样和复杂, 比如多媒体、视觉和语音识别、自然语言处理、数据并行处理等, 应用程序呈现出不同的程序特性和资源需求.因此, 针对单一的处理器结构, 即使微架构设计经过充分的优化也无法同时满足多样化的应用需求, 比如实现更深的流水线, 增加更多计算资源(比如执行单元), 采用优化的缓存架构, 采用同时多线程技术等等.由于设计在功耗、面积、成本等方面的限制, 传统摩尔定律的效果不再明显, 即使芯片同一面积可以容纳越来越多的元器件, 功耗也成为不可逾越的障碍.传统的芯片改进技术(比如通过提高元器件密度增加处理核心数目, 对各种功能单元的算法优化)在不久的将来将不再具有优化效果.因此, 半导体制造产业需要探索更复杂的架构级优化来满足芯片高性能低功耗的发展需求, 而异构技术可以有效补偿半导体技术的这些限制, 以满足多样的应用程序需求[
异构多核处理器将不同类型的处理核心(core)集成在处理器芯片中, 以满足高性能和低功耗的需求.比如:ARM采用big.LITTLE大小核切换技术将高性能的Cortex A15和低功耗的A7桥接在一起, 根据不同应用的需求选择不同的核心处理; Intel新一代处理器产品, SandyBridge和Xeon phi将通用的CPU和GPU集成在一起处理多样化的应用需求, 采用少数发射带宽大的乱序(out-of-order)CPU核心提供高性能计算, 结合大量发射带宽小的顺序(in-order)GPU提供高并发低功耗计算.文献[
因此, 伴随着异构多核处理器的处理核心类型的多样化, 设计和实现复杂度增加, 传统的运行于同构多核处理器上的软件环境(如:操作系统、编译器、运行环境)无法对其进行很好的管理, 充分发挥异构多核处理器的特性和优势.作为应用和资源管理的重要组件, 任务调度在异构多核环境下的实现变得更加复杂, 需要充分考虑异构处理器系统的核间差异, 针对应用的特性分析, 根据应用需求进行线程的优化分配.近些年来, 在异构多核处理器领域中针对任务调度的优化出现了不少的研究工作, 本文主要针对异构感知的调度优化技术进行系统的总结.
本文总结的研究工作主要基于性能非对称性多核处理器, 首先根据处理核心设计及功能的差异, 对异构多核处理器进行分类, 并重点总结性能非对称性多核处理器的特性和功能.然后对异构多核处理器环境下调度面临的主要问题与挑战展开分析, 最主要的问题是如何感知微架构和程序特性的差异, 并根据优化目标采用相对最优的任务分配和迁移策略.因此, 本文围绕异构调度主要技术的4个方面, 包括优化目标、分析模型、调度决策和算法评估已有工作加以详述.最后, 分析异构处理系统未来发展的多样性和复杂性, 这些复杂的异构系统为调度技术提出更为复杂的环境和需求.对异构感知的调度技术与微架构深度融合的工作进行简要的总结与展望, 为了更好地适配和管理异构硬件, 不仅仅是调度算法, 与之相关的操作系统及相关软件都有很多工作值得去探索.
异构多核处理器又被称作非对称多核处理器(asymmetric multicore processor, 简称AMP), 如
同构和异构多核处理器结构
The structure of homogeneous and heterogeneous multicore processors
(1) 指令集架构差异:处理器每个核最核心的功能是对指令进行正确的译码和执行, 不同核实现的指令集不同, 比如X86指令集、ARM指令集和GPU特有的指令集, 支持执行的程序也不同.文献[
(2) 流水线差异:流水线设计是提高指令级并行(ILP)、有效利用处理器资源的关键, 从Intel处理器架构的发展来看, i486处理器引入了5级流水线, 奔腾处理器扩展到12级流水线, 2013年的Haswell有16级流水线, 而且除了流水级数的扩展外, Intel各代产品在流水线设计中增加了超标量(superscalar)、乱序(out-of-order)、超线程等技术, 使得处理器性能不断提升.而异构处理器中为了满足不同需求, 每个核采用不同的流水线设计, 比如复杂串行的任务适合在支持超标量、乱序的深度流水线执行, 简单并行的任务适合在顺序执行的简单流水线执行.同时, 流水线的微架构设计也存在差异, 比如:取指带宽(fetch width)不同, 分支预测单元(BPU)的大小和算法不同, 执行单元的数目和端口不同, 乱序窗口大小不同, 主要包括发射带宽(issue width)、分配带宽(dispatch width)、重排序队列(ROB)、保留站(RS)等.
(3) 缓存系统差异:缓存系统的设计直接决定程序访存的带宽和效率, 差异主要是缓存系统的架构层级, 每级缓存的大小(size)、关联方式(associativity)和数据包含关系(inclusive或者exclusive), 所采用的预取策略、替换算法、回写策略等, 对于访存密集型的应用, 需要使用复杂的缓存系统以更好地支持内存级并行(MLP).
如
异构多核处理器分类
The category of asymmetric multicore processors
分类 | ISA | Core Pipeline | 缓存系统 | 可配置 | 商业产品代表 |
性能非对称多核处理器 | 相同 | 不同 | 相同或不同 | No | ARM big.LITTLE, 如三星发布的Samsung Exynos 9 |
功能非对称多核处理器 | 不同 | 不同 | 相同或不同 | No | CPGPU结构, 如Intel Sandy Bridge、Ivy Bridge; AMD Fusion |
动态(可配置)多核处理器 | 相同 | 相同 | 相同 | Yes | Bahurupi(概念) |
功能非对称多核处理器在市场上以CPU-GPU为主要代表, CPU-GPU结构利用专门化的硬件对特定的工作负载(比如简单高并发处理的程序或者代码片段)提供加速支持, 见
本文主要对性能非对称多核处理器的调度优化技术进行总结与探讨, 性能非对称多核处理器一般将高性能、较高功耗的核和低功耗、性能较低的核集成在一块处理器芯片中, 为不同需求的应用程序提供服务.不同类型的核可以按照性能和复杂度进行排序和比较.目前典型的性能非对称处理器结构是ARM big.LITTLE结构, 通过SoC设计将高性能处理器和低功耗处理器集成协同工作, 比如三星Samsung Exynos 9系列处理器.如
Cortex A15 & A7的微架构参数
The micro-architecture configuration of Cortex A15 & A7
CortexA15 | CortexA7 | |
ISA | Armv7 | Armv7 |
Frequency | 1.7GHz | 1.3GHz |
Pipeline | Out-of-order | In-order |
Issue width | 3 | 2 |
Fetch width | 3 | 2 |
Pipeline stages | 15~24 | 8~10 |
L1 I-cache | 32KB/2-way | 32KB/2-way |
L1 D-cache | 32KB/2-way | 32KB/4-way |
L2 cache | 512K-4M/16-way | 128K-1M/8-way |
Branch predictor | 2K entry-BTB/2-way | 512-entry BTB/2-way |
本文调度优化工作中涉及的大核指的是微架构实现复杂、高性能的核, 比如Cortex A15, 小核则是微架构实现相对简单但是功耗低的核, 比如Cortex A7.本文统一采用线程来描述调度的粒度, 因为无论是多线程程序、单线程程序还是多进程程序, 最终在计算系统里都是以单个或者多个线程的形式存在.尽管不同的系统实现对于进程或者线程的定义有所差别, 比如Linux系统通过轻量级进程(light-weight process, 简称LWP)来定义线程, 多个共享组ID的轻量级进程在同一进程空间, 但是调度基本上都是以线程为粒度.
异构多核处理器最主要的作用是不同类型的处理核可以满足不同特定应用的需求.由于不同的核提供不同的资源和处理能力, 为了满足特定的优化目标, 在任务调度时, 需要为任务选择更合适的处理核心, 而传统的同构多核处理器环境下的调度技术并没有考虑由于核之间的差异所造成的处理能力上的差异, 主要根据程序的优先级和核的负载情况进行任务的分配与迁移.因此, 异构环境下调度技术的主要工作是有效感知异构所带来的计算能力的差异性, 感知工作负载特性, 选择更加合适的核而不是选择最空闲的核进行任务分配, 围绕对于微架构和工作负载的感知, 异构多核处理器环境对调度技术的研究提出了新的挑战.
异构多核处理器环境与同构多核处理器的核类型比较单一不同, 它具有不同类型的处理核心, 每种类型的核具有不同的微架构, 如处理器中有些核是顺序流水线设计, 有些是乱序流水线设计; 有些核是MT(multi-thread)模式, 有些核是ST(single-thread)模式; 有些核支持大的缓存结构, 有些核缓存结构较小.在这样的异构环境下, 不同于同构处理器环境下的调度算法, 在定义和满足优化目标时(如性能和功耗), 需要感知核之间的差异.
(1) 由于程序的特性不同, 如计算密集型、访存密集型、分支密集型等, 对于硬件资源的需求不同, 在不同核上的行为也有所不同, 故需要通过模型来感知不同程序在不同核上的特性核资源需求, 作为调度的主要依据.
(2) 在异构多核处理器环境下, 由于程序各执行阶段的行为特征不同以及核微架构的不同, 对于程序不同的执行阶段所提供的计算能力也有所不同.因此, 调度需要对负载进行感知, 并综合异构环境下不同核之间的迁移代价进行及时的调度决策响应.
(3) 算法评估的方式直接影响异构调度算法的验证效果, 评估平台或者模型的构建需要异构的特性, 对算法做出正确的评估.
本文从优化目标、分析模型、调度决策和算法评估这4个方面对异构感知的调度所面临的问题与挑战进行了总结和讨论.
满足性能目标主要是通过调度技术最大程度地利用处理器的并行处理能力, 包括指令级并行和线程级并行, 因此, 针对不同的程序, 在线程分配时, 需要考虑程序在哪种核上更加受益, 比如分配指令并行化程度高的线程在小核上执行, 串行的线程在大核上执行.程序的访存行为、程序之间的资源依赖和竞争关系都将影响到调度的决策以及系统性能.而且, 异构环境下不同核之间的能耗存在差异, 而目前异构多核处理器的主要应用场景为移动终端, 功耗是影响用户体验的关键因素.因此, 需要兼顾性能和功耗, 在满足性能和其他服务质量(QoS)指标的前提下通过调度来降低处理器功耗.
同时, 由于异构多核处理器核之间设计的差异性, 比如缓存设计不同, 结合核内对于访存指令执行的流水线设计的不同, 会导致缓存系统不同的吞吐量和延时, 异构调度需要考虑更多的影响因素来解决并发程序的瓶颈问题.比如程序的同步以及资源竞争所导致的性能或者功耗问题.多线程程序的完成必须等待所有线程全部执行结束, 程序的性能受限于执行时间最长的线程或者关键执行代码(比如锁同步的代码)执行的速度, 尽可能地将关键的线程或者代码分配到大核上进行加速.当多个程序或者线程共享缓存资源时, 要充分考虑线程的访存特性以及与其共享缓存的线程的访存踪迹, 尽量避免由于访存竞争造成的性能损失和较大的功耗.
因此, 异构调度需要考虑更多的微架构和程序特征影响的因素, 要定义和满足各种优化目标, 尤其要做到性能和公平性兼顾、性能和功耗兼顾以及其他QoS和功耗兼顾.
程序分析是调度技术的重要工作, 同构多核处理器环境下每个核提供的计算能力相同, 调度主要对程序本身的特性进行分析, 根据线程优先级和负载情况, 将线程分配到空闲的核上运行, 对于程序适合运行的核微架构信息无需考虑.而在异构多核处理器环境下, 由于核之间的微架构存在差异, 线程在不同类型核上的行为存在很大差异, 比如处理器中存在乱序执行和顺序执行两种核, 对于浮点计算程序, 如果任意调度到顺序执行核上运行, 将严重影响程序执行的性能.因此, 调度需要获取程序在不同类型核上的运行特性, 针对不同的优化目标, 建立分析模型来评估程序更适合运行的核, 作为调度决策的主要依据.因此, 分析模型需要同时考虑程序本身的特性和核的微架构特性, 是异构调度重点要解决的问题.
程序分析主要包括两个方面的工作:(1)获取不同类型核上的特性; (2)建立模型.要想获取不同核上的运行特性, 有些工作在调度时对线程的特性进行采样, 会造成比较大的开销, 随着核类型的不断增加, 可扩展性也变得较差.有些工作不需要将线程在每个核上执行, 通过预测模型评估不同核上的特性, 这种方法依赖于预测模型的可靠性, 容易造成误差.同时, 之前的异构调度技术多采用简单的分析模型, 比如简单地通过IPC(instructions per cycle)的统计或者最后一级缓存缺失数(LLC misses)统计将线程划分为计算密集型和访存密集型进行调度, 但是, 近期的研究工作表明, 简单的分析模型会导致不理想的线程分配.因此, 有研究工作通过机器学习等技术建立复杂的分析模型作为调度的依据, 但是过于复杂的模型可能会影响调度系统的性能, 而且模型需要的性能信息从现有硬件中获取不到, 可能需要实现额外的硬件支持.因此, 从复杂度、系统开销、模型正确性等方面考虑, 采用高效又准确的分析技术建立分析模型能够快速响应程序的变化且正确反映程序的资源需求, 是值得需要不断探索的问题.
调度技术中重要的工作之一就是如何快速且正确地预测程序执行阶段的变化, 并进行任务的迁移, 将任务分配到能够更加受益的核上执行.影响调度决策的因素主要包括执行阶段变化的分析和预测以及任务迁移开销.
目前, 大部分调度根据设置的指令窗口大小将程序划分为若干阶段, 根据基于运行时性能数据的分析模型进行调度决策和任务的迁移.采用这种方法指令窗口设置得是否合理, 其产生的影响就比较大, 划分粒度如果太小, 程序行为也许不会在这么短的时间间隔内发生变化, 会造成很多不必要的系统开销.划分粒度如果太大, 会错失真正的程序行为变化而无法做出正确的调度决策.因此, 如何正确地预测程序行为的变化(尤其是将要发生的执行阶段)并快速做出调度决策是值得研究的问题.
同时, 在线程迁移过程中, 迁移的代价除了表现在上下文环境的复制上, 缓存系统数据的热启动(warmup)开销也很大.最初阶段的冷启动会使得线程经历大量的缓存缺失, 从而导致大量的超长延时(一般数百个Cycle)的内存访问, 影响线程执行的性能和功耗.异构多核环境下, 由于不同核之间的差异所带来的迁移开销更加明显, 文献[
评估平台需要对异构多核处理器进行建模, 同一芯片中集成不同微架构类型的处理核心, 比如ARM big. LITTLE的SoC设计.但是, 由于异构处理器的设计和实现相对于传统的同构多核处理器要复杂很多, 所以实际的非对称异构处理器平台还没有被广泛地生产和使用.以前的研究工作通过(dynamic voltage and frequency scaling, 简称DVFS)技术调整核内的时钟频率和工作电压来仿真异构多核平台, 文献[
伴随着异构多核处理器逐渐成为主流, 如果想要在满足高性能、低功耗等优化目标的前提下, 通过异构调度优化技术对异构多核处理器进行有效管理, 就要充分发挥异构多核处理器中不同微架构设计核心的优势, 以上这些问题都值得去研究和探索.
围绕第2节提出的问题与挑战, 本文从优化目标、分析模型、调度决策、算法评估这4个方面对异构调度相关的已有研究工作进行了系统的总结(见
优化目标、分析模型、调度决策、算法评估这4个方面的总结
The technology summary of four aspects including optimization objectives, analysis model, scheduling decision and algorithm evaluation
4个方面 | 分类 | 参考文献 | 主要思想 | 总结 |
优化目标 | 满足性能 | [ |
根据程序运行时行为评估程序在不同核的性能表现, 分配明显受益(比如较高的加速比)的程序到大核上执行, 提升系统执行效率 | ①满足性能目标主要包括提高效率(efficiency)[ |
优化目标 | 特定QoS下的功耗优化 | [ |
在满足性能和其他服务质量(QoS)指标的前提下通过调度来降低总体功耗 | ①功耗优化除了基本的满足能效[ |
满足公平性 | [ |
在保证吞吐量的前提下, 通过调度使具有相同优先级的程序尽量公平地使用CPU资源 | ①公平性调度主要通过跟踪程序执行行为, 包括线程执行减速(slowdown)[ |
|
并发程序瓶颈优化 | [ |
通过任务调度解决多线程程序同步以及资源竞争所带来的性能和功耗损失问题.主要工作是识别落后和资源竞争的线程和线程中关键瓶颈代码, 通过分配更多的资源对其加速, 提高多线程程序执行效率 | ①同步加速一般采用静态分析结合运行时历史信息(比如IPC、提交指令等)[ |
|
特定应用领域优化 | [ |
异构环境下虚拟机的调度优化技术, 主要动态分析虚拟CPU (VCPU)的运行特性和资源需求, 分配给合适的物理核, 满足性能和能效需求 | ①不以虚拟机中的程序, 而以VCPU为基本调度对象, 对VCPU的运行时特性进行统计分析(包括执行时间、指令吞吐量、访存行为或者其他PMU事件).不同于一般通过LLC Miss Rate估计访存延时, 文献[ |
|
分析模型 | 架构无关分析模型 | [ |
调度需要获取程序在不同类型核上的运行特性, 针对不同的优化目标, 建立分析模型来评估程序更适合运行的核 | 主要借助编译器等静态分析技术对不依赖于微架构的程序内在特性(比如指令类型的分布、指令之间的依赖关系等)进行分析, 分析的开销比较小, 模型的正确性依赖于程序输入集的类型和覆盖率, 可扩展性差 |
CPI栈模型 | [ |
之前较多异构调度算法都采用CPI栈模型进行程序性能的评估, 方法主要包括采样和预测 |
||
经验模型 | [ |
经验模型主要根据选取的测试程序获取相关性能数据, 并采用机器学习的方法建立相关性能数据和目标的关系, 经验模型的正确性主要取决于测试程序是否具有代表性, 可以体现明显的微架构特征, 是否可以尽可能全面地覆盖各种程序特性等 | ||
混合模型 | [ |
伴随异构处理器的发展, 核的数目更多, 核间差异更大, 增加了在不同核上进行性能和功耗分析的难度.出现了混合模型, 结合编译器辅助的架构无关分析模型和经验模型等进行综合评估, 也是软硬件结合的研究方向 | ||
调度决策 | 训练决策和预测决策 | [ |
快速、准确地捕获程序执行阶段的变化, 进行重新调度的决策, 动态调度一般都会采用这种方式 | ①训练决策:方法简单, 需要考虑各种调度策略的可能性, 会带来比较大的系统开销, 可扩展性比较差.同时, 针对执行阶段行为比较稳定的程序比较有效 |
算法评估 | 真实硬件、模拟器、评估模型 | [ |
构建更加真实的性能非对称异构多核处理器环境, 对算法进行有效评估 | ①真实硬件针对特定架构和特性, 配置相对固定, 无法通过灵活配置和定制 |
异构环境下的调度主要是协同计算核心更好的工作来满足整个计算系统的优化目标, 除了满足性能目标, 因为异构环境的主要应用场景是移动终端(比如ARM的big.LITTLE架构设计), 功耗也是重点关注的优化目标, 在满足性能、实时性等QoS指标的情况下应尽可能地降低功耗.除此之外, 因为异构处理器在微架构方面的差异, 在程序同步和竞争、公平性以及在特定应用领域, 比如虚拟化方面, 都存在很多研究工作, 本节针对上述工作进行讨论和总结.
文献[
文献[
文献[
文献[
文献[
芯片级的线程级并行化(thread level parallelism, 简称TLP)是提高多核处理能力的关键技术, 投机线程(thread level speculation, 简称TLS)执行是串行程序的加速技术, 指的是抽取串行程序中有可以并行的程序片段(比如循环代码), 并将其分配到多个核上投机执行, 如果投机错误, 由于需要重新执行而带来的流水线刷新将会带来较大的系统惩罚, 影响了程序执行的性能.文献[
文献[
性能非对称多核处理器具有高性能和低功耗结合的特点.它在为不同需求的应用程序提供服务的同时, 功耗也是其重点关注的问题, 这对操作系统调度和电源管理技术提出了挑战.由于移动终端特别是手机的普及和流行, 应用需求多种多样, 对于任务来说, 任务执行时间、功耗以及其他QoS指标是相互制约的, 比如视频播放器, 为了满足性能和截止时间要求, 需要降低画面质量(QoS).因此, 在满足能效的情况下, 同时考虑多种QoS指标的功耗优化也是研究的热点.本节从满足能效、实时任务时间约束和满足用户体验需求这3个方面进行总结和分析.
(1) 满足能效
以能效优化为目标的调度技术, 主要是在满足程序执行性能需求的前提下尽可能地达到最低的功耗.
文献[
其中,
文献[
文献[
文献[
(2) 满足实时任务时间约束
文献[
文献[
文献[
(3) 满足用户体验需求
目前, 手机设备上的应用程序多种多样, 根据功能的不同, 从用户体验的角度来看, 对于程序的延时要求和容忍度也有所不同, 比如媒体播放器是延时敏感程序, 相反地, 比如文件解析程序就是延时容忍程序.文献[
对于大规模分布式系统来说, 尾延迟(tail latency)的影响尤其严重, 比如大规模搜索引擎, 单个请求发送到上万台服务器, 系统不得不等待尾延迟请求返回才能响应用户.据此, 文献[
多媒体程序由于使用硬件解码不会占用太多的CPU资源, 基于此分析, 文献[
文献[
文献[
针对多线程(multi-thread)和多程序(multi-program)的工作负载, 有些调度算法会造成有些线程很长时间没有被调度, 导致一直无法执行完成, 从系统执行的全局角度来看, 公平性对于整体性能的提升非常重要.
文献[
文献[
文献[
文献[
文献[
1) 程序同步
异构多核处理器环境下, 线程同步影响性能主要包括两个因素:(1)对于具有同步关系的并行程序(一个程序视为一个线程)或者没有交互关系的多线程程序, 多个线程需要在某个执行点或者在结束的时候进行同步, 执行时间最长的线程影响整个程序的运行时间, 影响的线程为落后线程(lagging thread); (2)多线程互斥访问, 关键代码的执行速度直接影响程序的性能.已有的调度研究工作主要针对上面这两种同步情况进行优化.
在异构多核处理器环境下, 由于核间性能不同, 在并行程序调度的时候, 如果没有考虑这种差异, 将会导致工作负载的不均衡, 如
线程的两种分配方法
Two possible thread allocation method
文献[
文献[
多线程程序的性能受执行瓶颈的影响, 比如关键代码、栅栏(barrier)等, 文献[
文献[
文献[
文献[
2) 资源竞争
文献[
文献[
文献[
文献[
文献[
文献[
文献[
文献[
文献[
文献[
文献[
文献[
根据调度技术中模型建立方法的不同, 可以将分析模型分为架构无关分析模型和架构相关分析模型两大类, 其中, 架构相关分析模型主要包括CPI(cycle per instruction)栈模型和经验模型.(1)架构无关分析模型的建立主要对不依赖于微架构的程序内在特性(比如指令类型的分布, 指令之间的依赖关系等)进行分析, 可以借助编译器等技术采用线下的方法提前对程序进行分析, 提前对程序阶段的变化进行标记.因此, 分析的开销比较小, 适用于生命周期比较短的线程, 但是模型的正确性依赖于程序输入集的类型和覆盖率, 如果输入集的选择不够全面和具有代表性, 则将直接影响模型的正确性, 而且, 在架构无关模型的建立过程中考虑程序在系统中真实执行的情况比, 如资源竞争, 也是比较困难的.(2)目前的很多异构调度算法都采用CPI栈模型进行程序性能的评估, 针对各种性能事件对于执行时间的影响进行量化.CPI栈由真正占用流水线执行的时间和由于流水线堵塞事件、分支预测错误等造成的惩罚时间组成, CPI栈信息主要通过线程在执行过程中的性能信息进行统计, 性能信息多与架构相关, 比如线程运行的时钟周期数、指令数、分支预测错误数、LLC Misses等, 这些信息可以通过CPU性能监控单元(PMU)辅助获得.构建CPI栈的方法主要有采样和预测.采样主要根据程序运行信息的统计和分析建立模型, 需要获取不同架构核上的性能数据.相对于架构无关分析, 考虑比如线程同步、资源竞争的实际情况, 可以适应程序真实执行状态的变化.但是, 程序的性能信息依赖于不同微架构的硬件支持, 开销比较大, 因此, 采样不适宜特别的频繁, 这样会影响对于短生命周期线程的分析, 采样的周期也决定了模型能否很好地适应程序阶段的变化.同时, 随着核数的增加, 可扩展性也比较差.而预测主要是根据某个核上的性能信息对其他核上的性能信息进行估计, 相比于采样, 开销和可扩展性都有所改进, 但在实现过程中, 根据模型的复杂程度需要获取更多的性能信息(比如依赖指令的分布信息), 就需要额外的硬件支持.(3)经验模型主要根据选取的测试程序获取相关性能数据, 并采用机器学习的方法建立相关性能数据和目标的关系, 经验模型的正确性主要取决于所选取的测试程序是否具有代表性, 以体现明显的微架构特征, 是否可以尽可能全面地覆盖各种程序特性等.
由于以上的分析方法各有利弊, 在近期的工作中也有考虑到借鉴架构无关分析, 提出基于架构无关分析、架构有关分析和经验分析的混合模型.分析模型的正确性直接影响到调度决策的正确性, 是值得重点研究的问题.
Chen和John[
由于模糊推理的方法采用“IF-THEN”的规则进行核配置的匹配, 实现的可扩展性比较差.Chen和John[
文献[
Shelepov[
文献[
文献[
文献[
文献[
(1) 采样
文献[
文献[
(2) 预测
文献基于CPI(cycle per instructions)栈模型对线程的性能和功耗进行估计与预测.
文献[
文献[
文献[
其中,
文献[
文献[
文献[
文献[
文献[
文献[
调度决策主要是能够快速、准确地捕获程序执行阶段的变化, 并根据阶段的行为做出是否需要重新调度的决定.本文将调度决策分为训练决策和预测决策.训练决策指的是将程序的行为阶段按照固定的指令窗口进行划分, 并将指令窗口的执行划分为训练阶段和决策阶段, 在训练阶段对程序进行随机调度, 并根据程序执行行为以及优化目标提供最优调度策略, 在决策阶段, 根据训练得到的调度策略进行线程的重新调度.预测决策虽然也是按照指令窗口进行程序阶段的划分, 但是每个执行阶段的调度决策不是通过训练得来.通过模型对程序的执行阶段进行预测, 如果执行阶段已经出现过, 则将按照之前的调度策略进行调度.
训练决策在对每个执行阶段进行训练的时候, 需要考虑各种调度策略的可能性, 并进行调度的优劣评估, 可能会带来比较大的系统开销.同时, 只有在程序执行阶段行为比较稳定的时候, 训练决策才可以做到准确; 而预测决策不需要对每个执行阶段进行训练, 效率比训练决策会高, 但是阶段预测模型的正确性会直接影响调度的效果.同时, 指令窗口的选择也尤为重要, 窗口选择过大的话无法快速适应执行阶段的变化, 窗口选择太小的话可能会导致频繁的任务迁移.因此, 指令窗口的选择需要全面的实验和仔细的评估.
文献[
文献[
文献[
文献[
对异构调度算法有效地进行评估需要实验平台更加真实地对异构多核处理器环境进行建模.由于通过DVFS调整核的电压和时钟频率无法真实地仿真异构多核处理器, 所以, 越来越多的研究工作采用真实的异构硬件、模拟器或者通过评估模型来进行算法的效果评估.
文献[
现在进入市场的异构产品, 比如NUMA和ARM big.LITTLE, 针对特定架构和特性, 配置相对固定, 无法通过灵活的参数配置和定制进行算法的测试.与之相比, 采用架构模拟器支持更灵活的配置, 可以全面地对算法进行评估.文献[
然而, 由于模拟器本身速度受限, 无法支持大量混合工作负载(比如:数百个并行程序)在合理时间内执行完成.有些工作建立了分析模型以进行异构处理环境下的程序性能(或功耗)的评估, 分析模型不需要像模拟器那样对异构多核处理器的微架构进行详细模拟, 通过模型和算法对复杂工作负载场景下的程序性能进行评估, 相比于模拟器来说, 速度更快, 可扩展性更好, 但是分析模型的正确性在算法评估时变得尤为重要.
文献[
MPPM同时支持同构和异构多核处理器的性能, 在异构多核处理器环境下, 算法将首先对所有程序在所有核上独立执行的性能数据进行收集分析, 然后随机选择测试的benchmark程序分配到
伴随计算机系统的日趋复杂和应用需求的多样化, 异构多核处理系统逐渐成为主流.调度技术作为充分管理和利用异构多核处理器的主要手段变得尤为重要[
异构调度的目标是根据负载特性和核之间微架构的差异, 将程序分配到最适合的核上运行.最主要的问题是如何感知微架构和程序特性的差异, 并根据优化目标采用相对最优的任务分配和迁移策略.因此, 本文从优化目标、分析模型、调度决策和算法评估这4个方面对异构调度技术已有工作进行了详述.由于异构环境中比如大核和小核的流水线设计差异、缓存架构差异等为各种优化目标的定义和实现提供了更加复杂的场景, 优化目标需要在定义和满足优化目标的度量标准时, 感知程序在不同微架构运行的差异.本文分别从满足性能、能效、公平性、并发程序瓶颈优化及特定应用领域优化等目标来描述异构调度的工作, 比如满足性能主要通过加速比、IPC比率、关键代码大核执行等的衡量标准将程序分配到更加受益的核上.分析模型主要在程序资源需求分析的时候建立程序特性与不同微架构之间的关联, 作为调度的主要依据.本文主要总结了架构无关分析、CPI模型、经验模型方法, 由于分析方法各有利弊, 在近期的工作中综合这几种分析方法提出了混合分析模型.由于程序资源需求伴随执行阶段而发生变化, 为了实现细粒度的异构调度, 调度决策主要通过对程序阶段变化的感知来进行任务迁移的决策, 主要的方法包括训练和预测模型, 预测决策不需要对每个执行阶段进行训练, 效率比训练决策会高, 但是预测模型的正确性会直接影响调度的效果.最后, 总结了对调度算法进行评估的方法, 在使用真实的异构硬件和模拟器的基础上, 描述了评估模型相关的工作, 在异构硬件环境有限的前提下, 分析模型不需要像模拟器那样对异构多核处理器的微架构进行详细模拟, 通过模型和算法对复杂工作负载场景下的程序性能进行评估, 相比于模拟器来说, 速度更快, 可扩展性更好, 但是评估模型的准确性就变得尤为重要.
然而, 当前异构计算机处理系统变得越来越复杂, 核的数量和种类不断增加, 同时, 更多关注微架构设计的持续优化与新软件技术的深度融合, 出现了AI芯片和深度学习处理器并开始应用.以内存为例, 在关于摩尔定律未来的讨论中, 有专家表明, 传统的DRAM访问延时如果从200ns降低为150ns, 整体的数据中心的功耗将下降15%.片上内存的架构设计成为一个有潜力的改进方向, 文献[
(1) 伴随异构处理器的应用尤其是在移动终端市场的普及, 在满足性能和其他服务质量(QoS)指标的前提下, 通过调度来降低功耗是被关注的工作, 处理器从硬件层面提供DVFS(dynamic voltage and frequency)、DPM (dynamic power management)等电源管理技术, 软件层面的调度技术如何根据用户QoS需求与硬件提供的电源管理技术深度融合以降低功耗是值得研究的方向.同时, 目前的硬件暂没有提供度量程序功耗的接口, 软件一般也没有提供程序行为变化的接口, 因此, 在满足异构调度优化目标尤其是功耗目标的工作中, 软硬件深度融合的协同工作将是未来主要的方向.
(2) 分析模型是异构感知调度重要的工作, 伴随着异构环境的日趋复杂, 指令和硬件类型的种类越来越多, 差异度也越来越大, 比如存在多种指令集(ARM、X86), 存在普通内存(DRAM)和非易失性内存(non-volatile memory, 简称NVM)等多种内存, 而且由于程序执行过程中竞争或者执行异常和错误会造成动态的异构变化, 这就给分析模型在不同微架构配置核上的性能评估带来了困难.如果处理器硬件能够提供合理的辅助程序分析模块, 就可以在系统层面提供相应的接口供调度做出更为准确的决策.比如文献[
(3) 在调度决策方面, 现在主要还是在当前指令窗口中采用边训练边决策的方式进行调度, 在复杂的异构环境下, 如何能够快速、准确地预测程序执行阶段的变化, 并快速进行决策值得继续探索.同时, 任务迁移也需要程序设计、编译器和系统架构给出优化的思路, 如果两个核之间具有不同的指令集架构就又增加了实现的难度, 目前在这方面还需要做更多的研究.
(4) 近年出现软件技术如近似计算(approximate computing)、近阈值计算(near-threshold computing)、内存系统的数据压缩技术也将推进更多样化的多核异构系统进入市场, 这些计算对于能效提出了更高的要求, 例如:百万兆的计算目标在20MW的功耗下1s完成1018次计算[
总之, 随着硬件芯片技术和软硬件融合技术的发展, 为了更好地适配和管理异构硬件, 不仅仅是调度算法, 与之相关的操作系统及相关软件都有很多工作要做.
Yeric G. Moore's law at 50: Are we planning for retirement. In: Proc. of the IEEE Int'l Electron Devices Meeting. 2015. 1.1.1-1.1.8.
Venkat A, Tullsen DM. Harnessing ISA diversity: Design of a heterogeneous-ISA chip multiprocessor. ACM SIGARCH Computer Architecture News, 2014, 121-132.
Pricopi M, Mitra T. Bahurupi: A polymorphic heterogeneous multi-core architecture. ACM Trans. on Architecture and Code Optimization, 2012, 8(4):1-21.
Greenhalgh P. Big.LITTLE processing with ARM CortexTM-A15 & Cortex-A7. In: Proc. of the ARM. 2011. 1-8.
Becchi M, Crowley P. Dynamic thread assignment on heterogeneous multiprocessor architectures. In: Proc. of the 3rd Conf. on Computing Frotiers. 2006. 29.
Lugini L, Petrucci V, Mosse D. Online thread assignment for heterogeneous multicore systems. In: Proc. of the 41st Int'l Conf. on Parallel Processing Workshops. 2012. 538-544.
Rehman M, Asfand-E-Yar M. Scheduling on heterogeneous multi-core processors using stable matching algorithm. Int'l Journal of Advanced Computer Science and Applications, 2016, 7(6).
Nie P, Duan Z. Efficient and scalable scheduling for performance heterogeneous multicore systems. Journal of Parallel and Distributed Computing, 2012, 72(3):353-361.
Saez JC, Prieto M, Fedorova A, Blagodurov S. A Comprehensive Scheduler for Asymmetric Multicore Systems. New York: Association for Computing Machinery, 2010. 139-152.
Luo YC, Packirisamy V, Hsu W C, Zhai A. Energy efficient speculative threads: Dynamic thread allocation in same-ISA heterogeneous multicore systems. In: Proc. of the 19th Int'l Conf. on Parallel Architectures and Compilation Techniques. 2010. 453-464.
Liu GS, Park J, Marculescu D. Dynamic thread mapping for high-performance, power-efficient heterogeneous many-core systems. In: Proc. of the 31st IEEE Int'l Conf. on Computer Design (ICCD). 2013. 54-61.
Navada S, Choudhary NK, Wadhavkar SV, Rotenberg E. A unified view of non-monotonic core selection and application steering in heterogeneous chip multiprocessors. In: Proc. of the 19th Int'l Conf. on Parallel Architectures and Compilation Techniques. 2013. 133-144.
Eyerman S, Eeckhout L. The benefit of SMT in the multi-core era: Flexibility towards degrees of thread-level parallelism. In: Proc. of the 19th Int'l Conf. on Architectural Support for Programming Languages and Operating Systems. 2014. 591-606.
Kim J, Lee J, Jeong J. Exploiting asymmetric CPU performance for fast startup of subsystem in mobile smart devices. IEEE Trans. on Consumer Electronics, 2015, 61(1):103-111.
Lin FX, Wang Z, Zhong L. K2: A mobile operating system for heterogeneous coherence domains. In: Proc. of the 19th Int'l Conf. on Architectural Support for Programming Languages and Operating Systems. 2014. 285-300.
Lustig D, Trippel C, Pellauer M, Martonosi M. ArMOR: Defending against memory consistency model mismatches in heterogeneous architectures. In: Proc. of the IEEE Int'l Symp. on Computer Architecture. 2015. 388-400.
Rodrigues R, Koren I, Kundu S. Performance and power benefits of sharing execution units between a high performance core and a low power core. In: Proc. of the 27th Int'l Conf. on VLSI Design. 2014. 204-209.
Deng Y, Cheng XH. A heterogeneous multiprocessor task scheduling algorithm based on SFLA. In: World Automation Congress. 2016. 1-5.
Zhou N, Qi D, Wang X, Zheng Z, Lin W-W. A list scheduling algorithm for heterogeneous systems based on a critical node cost table and pessimistic cost table. Concurrency and Computation: Practice and Experience, 2017, 29(5):e3944.
Petrucci V, Loques O, Mossé D,
Petrucci V, Loques O, Mossé D. Lucky scheduling for energy-efficient heterogeneous multi-core systems. In: Proc. of the 2012 USENIX Conf. on Power-Aware Computing and Systems. 2012. 7.
Muthukaruppan TS, Pathania A, Mitra T. Price theory based power management for heterogeneous multi-cores. In: Proc. of the 19th Int'l Conf. on Architectural Support for Programming Languages and Operating Systems. 2014. 161-176.
Winter JA, Albonesi DH. Scheduling algorithms for unpredictably heterogeneous CMP architectures. In: Proc. of the Int'l Conf. on Dependable Systems & Networks. 2008. 42-51.
Gutierrez A, Dreslinski RG, Mudge T. Evaluating private vs. shared last-level caches for energy efficiency in asymmetric multicores. In: Proc. of the Int'l Conf. on Embedded Computer Systems: Architecture, Modeling, and Simulation. 2014. 191-198.
Srinivasan S, Kurella N, Koren I,
Muthukaruppan TS, Pricopi M, Venkataramani V, Mitra T, Vishin S. Hierarchical power management for asymmetric multicore in dark silicon era. In: Proc. of the Design Automation Conf. 2013. 1-9.
Colin A, Kandhalu A, Rajkumar R,
Cheng T, Muthukaruppan TS, Mitra T, Lei J. Approximation-aware scheduling on heterogeneous multi-core architectures. In: Proc.of the Design Automation Conf. 2015. 618-623.
Tseng PH, Hsiu PC, Pan CC, Kuo TW. User-centric energy-efficient scheduling on multi-core mobile devices. In: Proc. of the 51st Annual Design Automation Conf. 2014. 1-6.
Haque ME, He Y, Elnikety S,
Kim YG, Kim M, Chung SW. Enhancing energy efficiency of multimedia applications in heterogeneous mobile multicore processors. IEEE Trans. on Computers, 2017, P(99):1.
Yuhao Z, Reddi VJ. High-performance and energy-efficient mobile Web browsing on big/little systems. In: Proc. of the IEEE Int'l Symp. on High Performance Computer Architecture. 2013. 13-24.
Sang JN, Kim YG, Chung SW. An energy-efficient task scheduler for mobile web browsing. In: Proc. of the IEEE Int'l Conf. on Consumer Electronics. 2017. 188-189.
Annamalai A, Rodrigues R, Koren I, Kundu S. An opportunistic prediction-based thread scheduling to maximize throughput/watt in AMPs. In: Proc. of the Int'l Conf. on Parallel Architectures & Compilation Techniques. 2013.
Homayoun H, Kontorinis V, Shayan A,
Khubaib K, Suleman MA, Hashemi M,
Kim M, Kim K, Geraci JR, Hong S. Utilization-aware load balancing for the energy efficient operation of the big.LITTLE processor. In: Proc. of the Design, Automation & Test in Europe Conf. & Exihibition. 2014.
Ko B-M, Lee J, Jo H. AMP aware core allocation scheme for mobile devices. In: Proc. of the Spring World Congress on Engineering and Technology. 2012. 1-4.
Lin FX, Wang Z, Likamwa R,
Lukefahr A, Padmanabha S, Das R,
Mühlbauer T, Rödiger W, Seilbeck R,
Nishtala R, Mosse D, Petrucci V. Energy-aware thread co-location in heterogeneous multicore processors. In: Proc. of the Int'l Conf. on Embedded Software. 2013. 1-9.
Liu Y, Li Y, Zhao Y,
Singh P, Hailu N. Energy-aware online non-clairvoyant multiprocessor scheduling: Multiprocessor priority round robin. IET Computers & Digital Techniques, 2017, 11(1):16-23.
Luo T, Ma S, Lee R,
https://www.researchgate.net/publication/248502496_Cache-Fair_Thread_Scheduling_for_Multicore_Processors]]>
Munkres J. Algorithms for the assignment and transportation problems. Journal of the Society for Industrial and Applied Mathematics, 1957, 5(1):32-38.
Saez JC, Pousa A, Castro F,
Kwon Y, Kim C, Maeng S,
Sun T, An H, Wang T,
Markovic N, Nemirovsky D, Unsal O,
Pricopi M, Mitra T. Task scheduling on adaptive multi-core. IEEE Trans. on Computers, 2014, 63(10):2590-2603.
Torng C, Wang M, Batten C. Asymmetry-aware work-stealing runtimes. In: Proc. of the ACM/IEEE Int'l Symp. on Computer Architecture. 2016, 44(3): 40-52.
Chen Q, Guo M. Adaptive workload-aware task scheduling for single-ISA asymmetric multicore architectures. ACM Trans. on Architecture and Code Optimization, 2014, 11(1):1-25.
Lakshminarayana NB, Lee J, Kim H. Age based scheduling for asymmetric multiprocessors. In: Proc. of the Conf. on High Performance Computing Networking, Storage and Analysis. 2009. 25.
Suleman MA, Mutlu O, Qureshi MK,
Lakshminarayana N, Rao S, Kim H. Asymmetry aware scheduling algorithms for asymmetric multiprocessors. Cc.gatech.edu, 2008.
Joao JA, Suleman MA, Mutlu O,
Joao JA, Suleman MA, Mutlu O,
Hwang W. HMMSched: Hybrid main memory-aware task scheduling on multicore systems. In: Proc. of the 5th Int'l Conf. on Future Computational Technologies and Applications. 2013. 39-48.
Merkel A, Bellosa F. Memory-aware scheduling for energy efficiency on multicore processors. In: Proc. of the Workshop on Power Aware Computing & Systems. 2008. 1.
Boyd-Wickizer S, Morris R, Kaashoek MF. Reinventing scheduling for multicore systems. In: Proc. of the Workshop on Hot Topics in Operating Systems. Monte Verità, 2009.
Ge R, Feng X, Cameron KW. Modeling and evaluating energy-performance efficiency of parallel processing on multicore based power aware systems. In: Proc. of the IEEE Int'l Symp. on Parallel & Distributed Processing. 2009. 1-8.
Merkel A, Stoess J, Bellosa F. Resource-conscious scheduling for energy efficiency on multicore processors. In: Proc. of the European Conf. on European Computer Systems. 2010. 153-166.
Eyerman S, Eeckhout L. Modeling critical sections in Amdahl's law and its implications for multicore design. ACM SIGARCH Computer Architecture News, 2010, 38(3):362.
Jia R, Kun W, Xiaobo Z,
https://www.researchgate.net/publication/228459497_Efficient_Virtual_Machine_Scheduling-policy_for_Virtualized_Heterogeneous_Multicore_Systems]]>
Kazempour V, Kamali A, Fedorova A. AASH: An asymmetry-aware scheduler for hypervisors. ACM SIGPLAN Notices, 2010, 45(7):85-96.
Wang Y, Wang X, Chen Y. Energy-efficient virtual machine scheduling in performance-asymmetric multi-core architectures. In: Ptoc. of the Int'l Conf. on Network & Service Management. 2012. 288-294.
Wang G, Wang Y, Liu H,
Jian C, John LK. Energy-aware application scheduling on a heterogeneous multi-core system. In: Proc. of the IEEE Int'l Symp. on Workload Characterization. 2008. 5-13.
Chen J, John LK. Efficient program scheduling for heterogeneous multi-core processors. In: Proc. of the 46th Annual Design Automation Conf. 2009. 927-930.
Shelepov D, Saez Alcaide JC, Jeffery S,
Saez JC, Shelepov D, Fedorova A,
Kiran DC, Radheshyam B, Gurunarayanan S,
Sondag T, Rajan H. Phase-guided thread-to-core assignment for improved utilization of performance-asymmetric multi-core processors. In: Proc. of the Int'l Workshop on Materials Science and Engineering. 2009. 73-80.
Sondag T, Krishnamurthy V, Rajan H. Predictive thread-to-core assignment on a heterogeneous multi-core processor. In: Proc. of the 4th Workshop on Programming Languages and Operating Systems. 2007. 1.
Koufaty D, Reddy D, Hahn S. Bias scheduling in heterogeneous multi-core architectures. In: Proc. of the 5th European Conf. on Computer Systems. 2010. 125-138.
Chen J, Nair AA, John LK. Predictive heterogeneity-aware application scheduling for chip multiprocessors. IEEE Trans. on Computers, 2014, 63(2):435-447.
Van Craeynest K, Jaleel A, Eeckhout L,
Mattson RL, Gecsei J, Slutz DR,
Saez JC, Fedorova A, Koufaty D,
Saez JC, Prieto M, Fedorova A,
Khan O, Kundu S. A self-adaptive scheduler for asymmetric multi-cores. In: Proc. of the Symp. on Great Lakes VLSI. 2010. 397.
Cong J, Yuan B. Energy-efficient scheduling on heterogeneous multi-core architectures. In: Proc. of the IEEE Int'l Symp. on Low Power Electronics & Design. 2012. 345.
Pricopi M, Muthukaruppan TS, Venkataramani V,
Eyerman S, Hoste K, Eeckhout L. Mechanistic-empirical processor performance modeling for constructing CPI stacks on real hardware. In: Proc. of the IEEE Int'l Symp. on Performance Analysis of Systems and Software. 2011. 216-226.
Jiang X, Mishra A, Zhao L,
Jooya AZ, Baniasadi A, Analoui M. History-aware, resource-based dynamic scheduling for heterogeneous multi-core processors. IET Computers & Digital Techniques, 2011.
Sawalha L, Wolff S, Tull MP,
Sawalha L, Barnes RD. Energy-efficient phase-aware scheduling for heterogeneous multicore processors. In: Proc. of the Green Technologies Conf. 2012. 1-6.
Li T, Baumberger D, Koufaty DA,
Muthukaruppan TS, Pathania A, Mitra T. Price theory based power management for heterogeneous multi-cores. In: Proc. of the Int'l Conf. on Architectural Support for Programming Languages & Operating Systems. 2014. 161-176.
Van Craeynest K, Eeckhout L. Understanding fundamental design choices in single-ISA heterogeneous multicore architectures. ACM Trans. on Architecture and Code Optimization, 2013, 9(4):1-23.
Mittal S. A survey of techniques for architecting and managing asymmetric multicore processors. ACM Computing Surveys, 2016, 48(3):1-38.
Shiu E, Prakash S. System challenges and hardware requirements for future consumer devices: From wearable to ChromeBooks and devices in-between. In: Proc. of the 2015 Symp. on VLSI Technology. 2015. 1-5.
Zhou X, Yang J, Xu Y,
Xu TC, Liljeberg P, Plosila J,
Srinivasan S, Iyer R, Zhao L,
Vetter JS, Mittal S. Opportunities for nonvolatile memory systems in extreme-scale high-performance computing. Computing in Science & Engineering, 2015, 17(2):73-82.