基于数据流块的空间指令调度方法_刘炳涛
单片机中的任务调度算法

单片机中的任务调度算法任务调度是指在一个系统中,根据任务的优先级和执行条件,按照一定的策略来分配和安排任务的执行顺序。
在单片机系统中,任务调度算法是实现多任务并发执行的关键技术之一。
本文将介绍单片机中常用的任务调度算法及其原理。
一、任务调度算法的概述任务调度算法是指根据任务的优先级和执行条件,在多任务系统中进行任务执行顺序的安排的策略。
在单片机系统中,由于资源有限,任务调度算法需要合理地安排任务执行顺序,以充分利用系统资源,提高系统的响应速度和效率。
二、常用的任务调度算法1. 优先级调度算法优先级调度算法是最常用的任务调度算法之一。
该算法根据任务的优先级来确定任务的执行顺序。
优先级高的任务将优先被执行,而优先级低的任务将被推迟执行。
这种算法简单易实现,适用于任务优先级固定且相对固定的场景。
2. 循环调度算法循环调度算法是一种较为简单和公平的任务调度算法。
该算法将任务按照一定的顺序排序,并循环遍历执行这些任务,保证每个任务都有机会执行。
循环调度算法适用于任务之间的优先级差异不大,需要保证任务都能得到执行的场景。
3. 时间片轮转调度算法时间片轮转调度算法是一种公平且高效的任务调度算法。
该算法为每个任务分配一个固定大小的时间片,任务在该时间片内执行完毕或者被中断后,按照顺序被放到队列的末尾,等待下次执行。
时间片轮转调度算法能够公平地分配系统资源,并且保证每个任务都有机会得到执行。
4. 最短剩余时间优先调度算法最短剩余时间优先调度算法是一种基于任务剩余执行时间的动态任务调度算法。
该算法在每个时间片开始时,根据任务的剩余执行时间排序,选择剩余时间最短的任务执行。
这种调度算法能够充分利用系统资源,提高系统的响应速度和效率。
三、任务调度算法的选择在选择任务调度算法时,需要根据具体的系统需求和资源限制进行综合考虑。
如果任务的优先级差异比较大,可以选择优先级调度算法。
如果任务之间的优先级差异不大,需要保证任务都能得到执行,可以选择循环调度算法。
基于内存池的空间数据调度算法

(tt Ke a oao yfr n omainE gn e n u v y n p ig a dRe t S n i g W u a ie s y W u a 3 0 9 Sae yL b rtr f r t n ie r gi S r e ig Ma p n n moe e sn , h Unv ri , h n4 0 7 ) oI o i n n t
d s ac p t l a a a d e h n e e c e c . s d on a v re y o p c fc ma sn d l, do to ft e t c n l g t i i g di e e t mo i p t h s a i t n n a c f in y Ba e a t fs e i p u i g mo e s a p n o h o o y u i z n f r n ad i i i i h e l f me r y p o sp g e a e e tago t m a fe t e y r d c e t e i t r c i n b t e x e n l e y n n e a mo . p rme tlr s lss o o l a er plc m n l r h c n e f c i l e u e h n e a t e we n e tr a mor a d i tr l i v o m n me r Ex e y i n a e u t h w t ep o o e o u i n i d a o S s se i h mb dd d e u p n t i td m e o a a i . h r p s d s l t si e l rGI y t m t ee e e q i me t o f n wih l mie m r c p c t y y
基于RM调度的任务抢占次数最多分析

基于RM调度的任务抢占次数最多分析
彭德坤;宋红军;刘博阳
【期刊名称】《计算机工程》
【年(卷),期】2009(035)008
【摘要】传统的实时系统可调度性分析方法往往忽略任务抢占的时间开销,然而在重负载情况下,如果任务抢占次数很多,则由此带来的时间开销将不可忽略.该文分析基于单调速率调度算法的系统中任务抢占次数最多需要满足的条件,提出通过修改任务参数来减少抢占次数的方法,减少了系统在最坏情况下的任务响应时间.
【总页数】3页(P263-265)
【作者】彭德坤;宋红军;刘博阳
【作者单位】中国科学院电子学研究所,北京,100080;中国科学院研究生院,北京,100080;中国科学院电子学研究所,北京,100080;四方电气(集团)有限公司,北京,100085
【正文语种】中文
【中图分类】N945
【相关文献】
1.基于非抢占RMS的分布式控制系统中实时任务调度算法 [J], 刘怀;黄建新;史国生
2.基于特定应用的可抢占与不可抢占任务调度算法 [J], 何东之;李伟;朱长海;张向文
3.基于抢占阈值调度的周期任务最小响应时间分析 [J], 杨玉海;宾雪莲;金士尧;宾
亚
4.改进的基于抢占阈值调度的任务响应时间分析方法 [J], 王涛;刘大昕
5.改进的基于抢占阈值调度的任务响应时间分析方法 [J], 王涛;刘大昕
因版权原因,仅展示原文概要,查看原文内容请购买。
SDN数据中心网络基于流表项转换的流表调度优化

SDN数据中心网络基于流表项转换的流表调度优化唐菀;王敢甫;吴京京;王文涛【期刊名称】《中南民族大学学报(自然科学版)》【年(卷),期】2017(036)003【摘要】The resource limitation of the flowtable in OpenFlow switches causes the problem of flowtable overflow or controller congestion in the SDN-based datacenter network. To address the issue, in this paper, the concept of Free Entries Cost is introduced for describing the utilization efficiency of network resources, and the relationship between the numbers of free flowtable resources and that of the flowentries being forwarded repeatedly is analyzed. Then, a flowtable scheduling strategy based on the flowtable timeout mechanism is proposed, which can do real-time conversion between static and dynamic flowentries according to the survival time and the count of the flowentry matching. Via the simulation platform of SDN-based datacenter network with the Fat-tree topology, the availability of the proposed mechanism for optimizing the usage of flowtables is verified.%针对基于软件定义网络(SDN)架构的数据中心网络中,SDN交换机流表资源的有限性导致的流表溢出或控制器拥塞等问题,引入空闲流表资源代价的概念描述了网络资源的利用率,并分析了空闲流表资源量与重复下发的流表项数量之间的关系,提出了一个基于流表超时机制的流表调度策略,依据流表项生存时间和匹配计数来进行静态流表项和动态流表项之间的实时转换.在Fat-tree拓扑SDN数据中心网络仿真实验中,对该机制对流表资源优化的有效性进行了验证.【总页数】7页(P111-117)【作者】唐菀;王敢甫;吴京京;王文涛【作者单位】中南民族大学计算机科学学院,武汉430074;武汉烽火信息集成技术有限公司 IT事业部,武汉430074;中南民族大学计算机科学学院,武汉430074;中南民族大学计算机科学学院,武汉430074【正文语种】中文【中图分类】TP393【相关文献】1.数据中心网络中基于SDN的大象流负载均衡的研究 [J], 金玲;束永安2.基于SDN的数据中心网络流概率路径选择方法 [J], 张钊;李海龙;董思歧;胡磊;马景仁3.基于蚁群算法的SDN数据中心网络大象流调度研究 [J], 李宏慧; 杨光; 路海亮; 付学良; 申志军4.基于SDN的数据中心网络中考虑等待时间的流调度策略研究 [J], 黄梅根;庞瑞琴;刘亮;何大聪;汪涛5.基于分类搜索的SDN流表无环一致性更新方案 [J], 杨荣宽;张奇支;赵淦森;郑伟平因版权原因,仅展示原文概要,查看原文内容请购买。
2022年北华航天工业学院计算机科学与技术专业《操作系统》科目期末试卷B(有答案)

2022年北华航天工业学院计算机科学与技术专业《操作系统》科目期末试卷B(有答案)一、选择题1、()结构的文件最适合于随机存取的应用场合。
A.流式B.索引C.链接D.顺序2、操作系统为了管理文件,设计了文件控制块(FCB),文件控制块的建立是().A.在调用create()时B.在调用open()时C.在调用read()时D.在调用write()3、若一个用户进程通过read系统调用读取一个磁盘文件中的数据,则下列关于此过程的叙述中,正确的是()。
I.若该文件的数据不在内存中,则该进程进入睡眠等待状态II.请求rcad系统调用会导致CPU从用户态切换到核心态III.read系统调用的参数应包含文件的名称A.仅I、IIB. 仅I、IIIC.仅II、IIID. I、II和III4、设有n个进程共用一个相同的程序段,若每次最多允许m个进程(mSn)同时进入,临界区,则信号量的初值为()。
A.nB.mC.m-nD.-m5、使用TSL(TestandSetLock)指令实现进程互斥的伪代码如下所示。
do{while(TSL(&lock));criticalsection;lock=FALSE;}while(TRUE);下列与该实现机制相关的叙述中,正确的是()A.退出临界区的进程负责唤醒阻塞态进程B.等待进入临界区的进程不会主动放弃CPUC.上述伪代码满足“让权等待”的同步准则D.while(TSL(&lock))语句应在关中断状态下执行6、下列关于页式存储说法中,正确的是()。
I.在页式存储管理中,若关闭TLB,则每当访问一条指令或存取一个操作数时都要访问两次内存II.页式存储管理不会产生内部碎片III.页式存储管理当中的页面是为用户所感知的IV.页式存储方式可以采用静态重定位A.仅I、II,IVB. 仅I、IVC. 仅ID.I、II、III、IV7、有一个矩阵为100行x200列,即a[100][200]。
并行任务调度算法研究

非确定性调度技术又称为随机搜索调度技术 ,它主要是通 过有导向的随机选择来搜索问题的解空间而并不是单纯的随 机搜索 。这类技术组合前面搜索结果的知识和特定的随机搜 索特点来产生新的结果 。遗传算法是最流行和使用最广泛的 该类技术 ,它们的调度时间一般高于使用其他技术的调度算 法 ,适合于某一种任务图的控制参数优化集并不适合于另一种 类型的任务图 ,即对新的任务图遗传算法需要长时间的训练学 习 。另外 ,模拟退火方法也属于该类型技术 。
考虑到任务图的基本信息以及处理单元本身和其互连结 构的基本信息是否在应用程序执行前可以得到 ,已经调度好的 任务是否可以由于其处理单元失效而实时迁移等因数可以把 并行任务调度算法分为两大类 。一类假设任务图和处理单元 相关的信息在程序执行前可以精确获取 ,调度好的任务节点不 能迁移 ,基于这类假设的调度算法称为静态调度算法 ,也叫编 译时间调度算法 ;反之则称为动态调度算法 ,也叫实时调度算 法 。前者存在如何精确获取所需信息的问题 ,但其可凭借成熟 的模型组织有效而具体的启发式算法 ,文献中大多数算法均属 于此类算法 ;后者需要程序实时执行期间得到相应调度信息来 调度任务 ,有许多不确定因数存在 ,调度开销一般较大 ,但在大 型分布式系统如网格计算中该类算法不失为有效的方法 ,也适 合于含有条件分支和循环的任务图调度 。本文讨论的并行任 务调度算法主要限于第一类 。图 1 就已有的并行任务调度算 法进行了粗略的分类 。
第 11 期
马 丹等 :并行任务调度算法研究
·91 ·
并行任务调度算法研究
马 丹1 , 张 薇1 ,2 , 李肯立1
(1. 华中科技大学 计算机学院 , 湖北 武汉 430074 ; 2. 武汉军械士官学校 , 湖北 武汉 430075)
基于优先级调度的8位单片机内核实现方案

基于优先级调度的8位单片机内核实现方案
李开旭;温东彪;刘锦棠
【期刊名称】《日用电器》
【年(卷),期】2015(000)008
【摘要】普通的8位单片机的程序在主循环里一般都是顺序执行,主循环中有时候执行较长,有时候又较短,导致有些实时性要求较高,需要优先处理的程序无法放在主循环里运行,如果放在中断里又会增加中断的内容,同时也会影响整个程序的架构,使程序的可读性和移植性变差。
鉴于此,在时间片内核的基础上引入优先级的调度,形成了不可剥夺的优先级内核。
【总页数】3页(P66-68)
【作者】李开旭;温东彪;刘锦棠
【作者单位】珠海格力电器股份有限公司珠海 519070;珠海格力电器股份有限公司珠海 519070;珠海格力电器股份有限公司珠海 519070
【正文语种】中文
【相关文献】
1.基于优先级调度算法的高校排课系统设计与实现 [J], 徐谦;邓婕
2.基于8位单片机的玩具控制器的研究与实现 [J], 祁兵兵;吴长奇
3.基于8位单片机的小型机器人系统的设计与实现 [J], 郝佳晶
4.Nachos中基于优先级调度器的实现 [J], 张芳琴
5.基于自适应随机线性网络编码的优先级调度方案 [J], 王练;张贺;张昭;张勋杨
因版权原因,仅展示原文概要,查看原文内容请购买。
2022年东华理工大学计算机科学与技术专业《操作系统》科目期末试卷B(有答案)

2022年东华理工大学计算机科学与技术专业《操作系统》科目期末试卷B(有答案)一、选择题1、某文件系统物理结构采用三级索引分配方法,如果每个磁盘块的大小为1024B.每个盘块索引号占用4B,请问在该文件系统中,最大文件的大小最接近的是()A.8GBB.16GBC.32GBD.2TB2、驱动调度算法中,()算法可能会随时改变移动臂的运动方向。
A.电梯调度B.最短寻道时间优先C.扫描D.单向扫描3、可以被多个进程在任意时刻共享的代码必须是()。
A.顺序代码B.机器语言代码C.不能自身修改的代码D.无转移指令代码4、若每个作业只能建立“一个进程,为了照顾短作业用户,应采用();为了照顾紧急作业用户,应采用():为了实现人机交,应采用():为了使短作业、长作业,和交互作业用户都满意,应采用()。
I.FCFS调度算法II.短作业优先调度算法,III.时间片轮转调度算法IV.多级反馈队列调度算法V.基于优先级的剥夺调度算法A. II、V、I,IVB. I、V、III、IVC. I、II、IV、IIID.II、V、III、IV5、进程调度算法中,可以设计成可抢占式的算法有()。
A.先来先服务调度算法B.最高响应比优先调度算法C.最短作业优先调度算法D.时间片轮转调度算法6、总体上说,“按需调页”(Demand-Paging)是个很好的虚拟内存管理策略。
但是,有些程序设计技术并不适合于这种环境,例如()A.堆栈B.线性搜索C.矢量运算D.分法搜索7、有一个矩阵为100行x200列,即a[100][200]。
在一个虚拟系统中,采用LRU算法。
系统分给该进程5个页面来存储数据(不包含程序),设每页可存放200个整数,该程序要对整个数组初始化,数组存储时是按行存放的。
试计算下列两个程序各自的缺页次数(假定所有页都以请求方式调入)()。
程序一:for(i=0;i<=99;i++)for(j=0:j<=199;j++)A[i][j]=i*j:程序二:for(j=0:j<=199;j++)for(i=0;i<=99;i++)A[i][j]=i*j;A.100,200B.100,20000C.200.100D.20000,1008、下列选项中,操作系统提供给应用程序的接口是()。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机研究与发展DOI:10.7544/issn1000-1239.2017.20160138Journal of Computer Research and Development 54(4):750-763,2017基于数据流块的空间指令调度方法刘炳涛1,2,3 王 达1 叶笑春1 范东睿1,2 张志敏1 唐志敏11(计算机体系结构国家重点实验室(中国科学院计算技术研究所) 北京 100190)2(中国科学院大学计算机与控制学院 北京 100049)3(杭州电子科技大学信息与控制研究所 310018)(liubingtao@ict.ac.cn)The Data-Flow Block Based Spatial Instruction Scheduling MethodLiu Bingtao1,2,3,Wang Da1,Ye Xiaochun1,Fan Dongrui 1,2,Zhang Zhimin1,and Tang Zhimin11(State Key Laboratory of Computer Architecture(Institute of Computing Technology,Chinese Academy of Sciences),Beijing100190)2(School of Computer and Control Engineering,University of Chinese Academy of Sciences,Beijing100049)3(Institute of Information and Control,Hangzhou Dianzi University,Hangzhou310018)Abstract Clustered superscalar processors partition hardware resources to circumvent the energy andcycle time penalties incurred by large,monolithic structures.Dynamic multi-core processors fusehardware resources of several physical cores to provide the computation capability adapting toapplications.Energy-efficient computation is achieved in these architectures with a carefullyorchestrated utilization of spatially distributed hardware resources.Problems such as instruction loadimbalance and operand forwarding latency between partitions may cause performance penalties,so aneffective spatial instruction scheduling method is needed to distribute the computation among thepartitions of spatial architectures.We present the data-flow block(DFB)based spatial instructionscheduling method.DFBs are dynamically constructed,cached and reused schedule patterns for one ormore sequentially executed instruction basic blocks.DFB scheduling algorithm models the data-flowconstraints of dynamic instruction stream and the scheduling space defined by hardware resources,then makes the scheduling decision according to the relative criticality,which is the quantitativescheduling slack of instructions.We present the framework and algorithm related to DFB scheduling.Through experimenting with various microarchitecture parameters closely related to schedulingmethod such as partition count,inter-partition latency and schedule window capacity,we prove thatideal DFB scheduling performs better and stabler than round-robin and dependence-based scheduling.At last,we show that the scheduling performance with a DFB cache implementation example closes toideal DFB scheduling.Key words processor microarchitecture;load balancing;instruction scheduling;data-flow;critical path摘 要 分簇超标量处理器将硬件资源分区来避免大的单体部件导致的功耗与周期惩罚,动态多核处理器融合多个物理核的硬件资源提供适应程序需求的计算能力,这些结构合理使用空间分布的硬件资源 收稿日期:2016-03-10;修回日期:2016-06-07 基金项目:国家重点研发计划项目(2016YFB0200501);国家自然科学基金项目(61332009,61521092,61671196,61327902);数学工程与先进计算国家重点实验室开放基金项目(2016A04);北京市科委科技计划专项项目(Z15010101009)This work was supported by the National Key Research and Development Program of China(2016YFB0200501),the NationalNatural Science Foundation of China(61332009,61521092,61671196,61327902),the Open Program of the State KeyLaboratory of Mathematical Engineering and Advanced Computing(2016A04),and Beijing Municipal Science and TechnologyCommission Program(Z15010101009).实现高能效的计算.空间分区结构中指令负载不均衡和跨区操作数传递延迟等问题可导致性能惩罚,需要有效的指令调度方法将计算在分区间进行分布.提出了基于数据流块(data-flow block,DFB)的空间指令调度方法.DFB是动态构建、缓存并重用的一个或数个顺序执行的指令基本块的调度模式.DFB调度算法建模动态指令流中的数据流约束和硬件资源定义的调度空间,然后根据指令量化的相对关键性完成调度决策.介绍了DFB调度的微结构框架和算法.通过对分区数、分区间延迟和调度窗口容量等与调度方法密切相关的微结构参数的实验,证明了DFB调度的性能和稳定性优于负载均衡调度和基于依赖的调度.最后举例证明结合一种数据流块缓存实现的DFB调度达到的调度效果接近理想化的DFB调度.关键词 处理器微结构;负载均衡;指令调度;数据流;关键路径中图法分类号 TP303 超标量处理器发掘指令级并行性(instructionlevel parallelism,ILP)的能力随着发射宽度和调度窗口的增大而提升,然而发射队列和操作数传递网络等关键部件的复杂度随着发射宽度和调度窗口的增大呈平方增长的趋势[1].分簇超标量处理器[2]将硬件资源分区来避开大的单体部件带来的功耗与周期惩罚.如图1所示,分簇超标量处理器负责完成指令执行的流水线后端划分为多个区,各分区有独立的发射队列、物理寄存器文件和功能单元,跨分区传递操作数需要额外的周期,我们称之为分区间延迟(inter-partition latency,IPL).Fig.1 Clustered superscalar processor microarchitecture图1 分簇超标量处理器微结构处理器单核的性能和频率提升受限于结构复杂度和功耗墙[3]等问题,为了提升计算能效,善于发掘线程级并行性(thread level parallelism,TLP)的多核处理器逐渐成为主流[4].但处理器的单线程处理能力仍然重要,Hill与Marty[5]指出,依据阿姆达法则,随着并行部分的加速,串行部分逐渐成为继续降低程序运行时间的瓶颈.动态多核处理器(dynamicmulti-core,DMC)[5]融合数个物理核的资源来提供适应需求的计算能力.如图2所示,含8个物理核的DMC处理器可以提供相当于2个或4个物理核计算能力的虚拟核.物理核有独立的硬件资源,虚拟核内跨越物理核边界传递操作数也存在IPL.超标量处理器采用同时多线程技术(simultaneousmultithreading,SMT)[6]可以发掘TLP.SMT技术在Fig.2 Dynamic multi-core processor microarchitecture图2 动态多核处理器微结构单核中发掘TLP,DMC技术在多核中发掘ILP.殊途同归,它们都是通过合理使用在空间分布的硬件资源实现高能效计算.分区结构能以较低功耗与周期开销提供可扩展的计算能力,但负载不均衡和IPL可能导致性能惩罚,分区结构需要有效的指令调度方法分布指令到各分区.负载均衡倾向于将指令分布到不同分区,而减少IPL惩罚则倾向于将指令根据依赖关系分布到同一分区,存在冲突的策略需要根据指令的关键性进行权衡决策,这就是空间指令调度问题.为解决空间指令调度问题,我们提出了基于数据流块(data-flow block,DFB)的空间指令调度方法,简称DFB调度.DFB是动态构建、缓存并重用的一个或数个顺序执行的指令基本块的调度模式.DFB调度算法用数据流约束模型描述动态指令序列中的依赖关系,用调度空间模型描述硬件资源约束,量化分析每条指令的调度裕量,根据指令间的相对关键性完成调度决策,生成周期跨度尽量小的调度模式,DFB调度缓存重用这种调度模式.我们介绍了DFB调度的微结构框架和算法.通过对分区数、IPL和调度窗口容量等与调度方法密切相关的微结构参数的实验,我们证明了DFB调度的性能和稳定性优于负载均衡调度和基于指令绝对关键性的依赖调度.最后举例证明结合一种数据流块缓存实现的DFB调度达到的调度效果接近理想化的DFB调度.157刘炳涛等:基于数据流块的空间指令调度方法本文贡献主要存在于3方面:1)我们构造了描述指令依赖关系的数据流约束模型并提出了基于量化指标的指令相对关键性的概念;2)我们构造了描述分区结构资源限制的调度空间模型并分析了空间指令调度问题;3)我们提出了DFB调度并进行了评估.1 相关工作Palacharla等人[1]研究了发射队列的复杂度与时钟周期的关系,指出随着发射宽度和调度窗口增大,唤醒和选择逻辑成为关键路径.该文提出了多体发射队列,利用分区结构解决超标量处理器可扩展性问题.指令预调度[7-9]从时间维度调度指令,提升发射队列效率.根据生产者指令执行延迟,指令在预调度窗口内重新排列,然后逐行进入发射队列,这样减少了指令在发射队列内的等待周期数.WIB[10]和Cyclone[11]将阻塞指令从发射队列中暂时取出,也属于时间指令调度.较多研究[12-15]关注分簇超标量处理器中指令空间调度问题.已有方法首先判断指令是否是关键路径指令,然后做出调度决策,研究重点在于指令关键性的判定.Fields等人[16]通过指令依赖链的长度做出指令关键性预测.Salverda等人[17]通过指令的历史执行信息做出关键性预测.本文提出的DFB调度量化指令的调度裕量并参照硬件资源约束做出调度决策.动态多核处理器[18-22]通过重构虚拟核的硬件资源来适应计算需求.Core Fusion[18]融合片上多核处理器(chip multi-core processor,CMP)中多个物理核提供发射宽度可变的虚拟核.TFlex[19]采用EDGE指令集,借助编译器进行指令调度.DCM(dynamiccore morphing)[20]可以根据应用的阶段性特征,提供合适的后端完成计算.Voltron[21]实现宽发射的VLIW虚拟核和能进行细粒度通信的多VLIW核双模式计算.WiDGET[22]根据需求分配合适数量的功能单元来实现与功耗成比例的计算.部分动态多核结构借助编译器完成静态指令调度,部分动态多核结构采用基于依赖的动态指令调度.除了动态多核处理器外,其他类型的空间结构[23-26]多借助编译器完成指令调度.DFB调度缓存、优化并重用指令调度策略.DIF[27]结构将调度完成的指令组缓存.再次遇到时,指令组由VLIW后端加速执行.Fill unit[28]将执行的指令压缩并缓存,提高发射带宽.基于TraceCache[29],处理器可以对缓存的指令进行动态优化以提升其执行性能[30].rePLay[31]提出了支持动态优化的框架.2 空间指令调度问题描述与建模分簇超标量处理器与动态多核处理器中负责执行指令的流水线后端都可抽象为分区结构.硬件资源由单体实现变为分区实现带来的变化主要有3点:1)单个分区分得的功能单元减少;2)跨分区传递操作数有额外的延迟;3)单个分区的发射队列变小.分区结构的指令调度可以看作优化问题,尝试减弱或消除上述3要素导致的性能惩罚,使分区实现接近单体实现的执行效率.Fig.3 Scheduling space model for spatial architecture图3 分区结构的调度空间模型单个分区的指令发射带宽、功能单元组成和发射队列容量等限制指令调度,我们用调度块(scheduleblock,ScB)描述这些资源约束.随着周期的增长,所有分区的ScB构成了矩阵形式的调度空间约束模型,矩阵行坐标T表示指令的预期发射周期,列坐标C表示指令的分区指派,矩阵的第i行第j列的元素ScBij描述了第j个分区在第i个周期的资源约束.空间指令调度为动态指令片段中的指令确定分区指派C,在不违反调度空间约束模型的情况下,尽量减小指令片段调度模式的周期跨度.图3展示了4分区结构的调度空间约束模型,单个分区每周期可发射2条指令,有2个整型、1个浮点、1个访存和1个分支功能单元.调度空间约束模型的术语定义如表1所示.257计算机研究与发展 2017,54(4)Table 1 Terminology of Schedule Space Constraints Model表1 调度空间约束模型术语Terminology Symbol DefinitionIssue Width Constraint E E(ScBij)describes the available issue slots in ScBij.Function Units Constraint F Fconstrains instruction mix according to the combination of functions units.Issue Queue Capacity Constraint IQ_Load IQ_Loaddescribes the instruction load of instruction queue.Partition Assignment C C(I)records the assigned partition of instruction I.Instruction Execution Latency Lat Lat(I)is the optimistic estimate of execution latency of instruction I.Instruction Steering Time SteerT SteerT(I)records when instruction Ienters issue queue.Instruction Issuing Time IssT IssT(I)records when instruction Iis issued to function unit.Instruction Executed Time ExedT ExedT(I)records when the destination register of instruction Iis available. 指令I调度到ScBij意味着IssT(I)=i,C(I)=j.指令执行完成周期等于发射周期加上指令的执行延迟ExedT(I)=IssT(I)+Lat(I).举例说明在调度空间约束模型下如何完成指令调度.如图3所示,I1依赖I0,假设I1调度到ScBij,则需要满足4项约束:E(ScBij)>0,(1)F(ScBij)[type(I1)]>0,(2)IQ_Load(ScBij)<IQ_Size,(3)IssT(I1)≥ExedT(I0)+IPL,C(I1)≠C(I0);ExedT(I0),C(I1)=C(I0){.(4) 其中,type(I)表示取执行指令I的功能单元类型,IQ_Size是单个分区的发射队列容量,IPL为分区间延迟.式(1)~(3)为资源约束,式(4)为生产者指令对消费者指令的调度约束.IPL设定为1周期,假设I0调度到ScB00,且Lat(I0)=3,则I1在I0的约束下的调度备选ScB如图3所示.如何完成调度使指令序列在调度空间约束模型的T方向上分布尽量窄,即指令调度问题.指令空间调度通过改变指令的C(I)来权衡负载均衡与IPL.已有调度方法考察指令位于关键路径的可能性,然后依照其关键性预测做负载均衡和依赖调度2选1的即时决策,我们称这种定性的决策标准为指令的绝对关键性.我们认为依据绝对关键性进行调度存在不足,原因有2个:1)实时关键性难以准确预测,指令位于不同执行路径时,其关键性存在差异;2)调度决策会反馈影响指令关键性,根据依赖进行调度会加重负载的不均衡,根据负载进行调度会使得路径的延迟增长,非关键路径可转化为关键路径.DFB调度根据指令上下文分析其调度裕量,不违反调度空间约束模型生成合理的调度模式并缓存复用.关注指令调度需求与资源约束的互动,通过对比竞争资源的多个指令的调度裕量做出调度决策,我们称这种定量的决策标准为指令的相对关键性.第3节介绍定量描述程序调度需求的数据流约束模型.3 数据流约束模型“操作数准备好,指令开始执行.”是数据流计算的基本思想,也为指令调度提供依据.我们在数据流概念的基础上做出扩展,定义指令的数据流约束为与指令有依赖关系的生产者与消费者指令对指令调度附加的周期约束.数据流约束有2个特点:1)量化约束关系,计算指令的调度裕量;2)参考指令的消费者依赖关系,即反向数据流依赖.传统指令调度方法逐条完成指令调度,无法参考反向数据流依赖关系,DFB调度缓存并重用指令调度模式,能够参考指令的消费者对其附加的数据流约束.数据流约束模型的术语的定义如表2所示.数据流约束的计算举例如图4所示.动态指令序列可表示为无环的有向数据流图,如图4中①所示,边表示指令间的依赖关系,边的权值表示估计的指令执行延迟Lat(I),虚线框表示指令是Terminal.数据流约束的计算有3步:1)按指令序遍历所有指令,计算得到指令的调度上限sched_ub.如图4中②所示,I0,I1等没有生产者指令约束的指令sched_ub为周期0,ExedT(I0)=1且ExedT(I1)=3,则sched_ub(I2)=3.2)设置Terminal的sched_lb为其sched_ub,如图4中③所示,然后逐个遍历D-Tree追踪反向数据流依赖关系,更新lb_mat,如图4中④⑤所示.3)lb_mat中指令约束最紧值即为指令的sched_lb,(sched_ub,sched_lb)定义指令的调度区间,差值为调度裕量,如图4中⑥所示.357刘炳涛等:基于数据流块的空间指令调度方法Table 2 Terminology of Data-Flow Constraints Model表2 数据流约束模型术语Terminology Symbol DefinitionTerminal term Instructions which have no consumer in DFB.Dependence Tree D-Tree The tree structure with a terminal as its root,obtained by back tracing the depencence.ScheduleUpperboundsched_ubsched_ub(I)describes when instruction Ican be waken up,which is determined by its operandproducers.ScheduleLowerboundsched_lbsched_lb(I)describes when instruction Ishould be issued,which is determined by its operandconsumers.Lowerbound Matrix lb_mat lb_mat records the sched_lb constraints to instructions by different D-Tree .Fig.4 Data-flow constraints computation图4 数据流约束的计算 数据流约束描述了程序的细粒度计算需求,调度上下限差值为指令的调度裕量:1)调度裕量量化表示了指令的相对关键性强弱,调度裕量越大其相对关键性越弱,当多条指令竞争调度资源时,优先满足相对关键性强的指令;2)调度裕量是考虑了调度策略影响的动态指标,当指令跨分区传递操作数时,IPL消耗指令的调度裕量,其相对关键性得到提升.调度裕量表示的相对关键性是与上下文相关的、量化的、动态的指令关键性指标.4 基于数据流块的空间指令调度的框架DFB是动态构建、缓存并重用的调度模式.扩展支持DFB调度的处理器微结构框图如图5所示.在传统分区结构的基础上,添加了DFB构建、缓存和重用的逻辑.DFB调度的实现基于集成数据流缓存的处理器前端设计[32],该设计解耦合指令转换与分支预测,DFB Cache利用程序的计算局部性覆盖大部分的动态指令流,从而降低DFB构建的执行频率,减少DFB Trainer的功耗开销.DFB Trainer可以被芯片上多个物理核复用,降低其平均面积开销.Fig.5 Microarchitecture augmented with DFB scheduling图5 扩展支持DFB调度后的微结构分支预测器给出取指地址来查询DFB Cache:1)命中,DFB Scheduler取出缓存的DFB,指导指令的空间调度;2)未命中,DFB Trainer采样指令,并执行DFB调度算法,将调度模式存入DFB Cache.在程序的计算局部性支持下,经过一段时间的训练,DFB Cache可以覆盖大部分的动态指令.457计算机研究与发展 2017,54(4)DFB内指令依赖的表示采用前向数据流指针[32],操作数由生产者指令主动传递给消费者指令,DFBTrainer在DFB内插入额外的copy指令完成操作数的跨分区传递.指令不需要跨分区广播操作数或访问物理寄存器文件.主分区维护ROB(reorderbuffer)信息,每个DFB占用ROB的1个空位,当DFB的最后1条指令达到提交阶段时,整个DFB一起提交.物理寄存器和ROB的实现不会限制结构的可扩展性.5 DFB空间调度算法DFB Trainer使用DFB调度算法,输入动态指令序列,参照数据流约束模型和调度空间约束模型完成指令调度,输出指令序列的调度模式.DFB调度算法的目标是在不违反资源限制的前提下,尽量满足程序的计算需求,生成时间跨度尽量小的调度模式.在数据流约束表示的指令相对关键性的指导下,DFB调度算法对每条指令做依赖调度和负载均衡调度的权衡,为其指派分区.当指令的数据流约束无法满足时,放宽约束所在D-Tree上指令的sched_lb,继续尝试调度当前指令,直到所有指令调度完成.Fig.6 Dependence based scheduling constraints图6 基于依赖的调度约束5.1 基于依赖的调度调度依指令序逐条进行,当某指令开始调度时,其生产者指令已经调度完成,对其调度上限构成约束.图6展示指令I2开始调度的周期,其依赖的指令I0调度在ScB00,I1调度在ScB12.假设Lat(I0)=3,Lat(I1)=1,IPL=1,则I0与I1附加的调度上限约束分别如图6中虚线和点划线所示.基于依赖的调度要求IssT(I2)同时满足2个约束,灰色ScB为备选位置.考虑I2的相对关键性.当I2的调度下限大于周期3时,可以将I2调度到分区0以外,此时I0附加的调度约束如图7中虚线所示.将I2调度到分区0之外,让出了分区0的执行机会或者使负载更均衡.Fig.7 Scheduling according to relative criticality图7 依据相对关键性进行调度Fig.8 Loosen data-flow constraints when needed图8 适时放松数据流约束根据依赖关系和相对关键性确定了备选ScB后,按照IssT从小到大的顺序考察ScB,若找到不违反资源限制约束的且IssT满足sched_lb要求的ScB开始下条指令的调度;否则,放松数据流约束,继续尝试调度当前指令.如图8所示,I1调度在了557刘炳涛等:基于数据流块的空间指令调度方法ScB22,则sched_lb(I2)=3的数据流约束无法满足.追踪约束来源的D-Tree,将对应的Terminal的sched_lb增1,更新lb_mat,计算sched_lb约束,重新尝试调度I2,重复该过程直到调度成功.5.2 基于负载均衡的调度DFB空间调度算法使用调度空间约束模型对功能单元计算能力建模,而采用计数排序的方法应对发射队列负载均衡的问题,优先考虑指令数少的分区,对于指令数相等的分区,优先调度到最久没有被使用的分区.根据分区负载确定调度优先级的电路示意图如图9所示:Fig.9 Priority updating circuit for load balancing图9 负载均衡优先级更新电路电路主要维护2组寄存器,CSIZE寄存器组存储各分区已经指派的指令数量,ORDER寄存器组按负载均衡优先级输出调度分区编号.DFB开始构建时CSIZE寄存器清0,每调度1条指令,CSIZE寄存器和ORDER寄存器依次变化,更新优先级:1)指令调度的分区号C控制对应的CSIZE寄存器加1;2)更新ORDER寄存器,CSIZE越大的分区优先级越低,CSIZE相等的分区,维持优先级顺序.5.3 算法伪代码与分析DFB调度算法依指令序逐条调度指令.调度单条指令分为3步:1)根据依赖关系和数据流约束表示的相对关键性确定备选ScB;2)按照IssT递增的顺序在备选的ScB中尝试调度指令,相同IssT的ScB依负载均衡优先级调度,若成功则完成当前指令调度;3)放松当前指令sched_lb所在D-Tree的约束,并返回步骤1继续尝试进行调度.DFB的所有指令调度完成时算法结束.伪代码中,n为指令数,nC为分区数,IPL为跨分区操作数传递延迟.inst是输入指令序列,ScB是调度空间模型矩阵,sched_con记录指令的关键消费者;输出是分区指派C和预期发射周期IssT.算法如下:算法1.DFB空间指令调度.输入:inst[],ScB[][],sched_ub[],sched_lb[],sched_con[];输出:C[0:n-1],IssT[0:n-1].伪代码:函数SCHED_MAIN()/*初始化负载均衡优先级电路*/①for all:ORDER[i]=(rr_token+i)%nC;②for all:CSIZE[i]=0;③rr_token=(rr_token+P)%nC;/*按指令序依次调度*/④for each i in[0:n-1]⑤ while(SCHED_INST(i)≠true)/*调度失败则放松数据流约束,直到调度成功*//*term为指令约束所在D-Tree的根*/⑥ sched_lb[term]++;⑦ recalc_lb();⑧ end while/*更新负载均衡优先级*/⑨ for each jin[0:nC-1]⑩ vec.add(CSIZE[ORDER[j]] 4|j2|ORDER[j]); 瑏瑡 end for 瑏瑢 vec.sort(‘<’); 瑏瑣 for each jin[0:nC-1] 瑏瑤 ORDER[j]=vec[j]%nC; 瑏瑥 end for 瑏瑦end for函数SCHED_INST(idx)瑏瑧if(inst[idx] s src1is valid):/*操作数1有依赖*/瑏瑨 ExedT[src1]=IssT[src1]+Lat[src1]; 瑏瑩 if(sched_con[src1]≠idx &&(ScB[ExedT[src1]][C[src1]]isnearly full‖sched_lb[idx]>ExedT[src1]))yield=true; 瑐瑠 end if 瑐瑡 for each i in[0:nC-1]瑐瑢 if(i==C[src1]) 瑐瑣 if(yield)Y1[i]=maxINT;/*最大整数*/ 瑐瑤 else Y1[i]=ExedT[src1]; 瑐瑥 end if 瑐瑦 else Y1[i]=ExedT[src1]+IPL;657计算机研究与发展 2017,54(4)瑐瑧 end if瑐瑨 end for瑐瑩end if瑑瑠if(inst[idx] s src2is valid)/*操作数2有依赖*/瑑瑡 Y[:]=max(Y1[:],Y2[:]);瑑瑢 minY=min(Y[:]);瑑瑣end if瑑瑤if(minY>sched_lb[idx])return false;瑑瑥end for瑑瑦for each i in(minY:sched_lb[idx])瑑瑧 for each jin[0:nC-1]瑑瑨 if(Y[ORDER[j]]≤i)瑑瑩 if(ScB[i][ORDER[j]]satisfiesinst[idx])瑒瑠 C[idx]=ORDER[j];瑒瑡 IssT[idx]=i;瑒瑢 CSIZE[ORDER[j]]++;瑒瑣 return true;瑒瑤 end if瑒瑥 end if瑒瑦 end for瑒瑧end for瑒瑨return false.时间复杂度简要分析如下:函数SCHED_INST调度单条指令,Y1和Y2分别表示2条生产者指令对当前指令的调度上限约束,Y由Y1和Y2共同确定,Y的最小值minY表示当前指令最早的IssT,行 瑏瑧~ 瑑瑤计算的时间复杂度为O(1).Y与sched_lb确定了IssT的取指范围,各分区最顶部的ScB作为调度目标,算法在硬件实现时可以维护各分区各功能单元的发射机会向量,其与调度范围求交集后,顶部的ScB即是各分区的候选,对最多nC个备选的ScB,按照小的IssT第1优先,ORDER寄存器第2优先的顺序确定调度到的ScB,行 瑑瑦~ 瑒瑨计算的时间复杂度为O(1).所以,SCHED_INST的时间复杂度为O(1).SCHED_MAIN负责指令序列的调度.行⑨~ 瑏瑥更新负载均衡优先级电路,其时间复杂度为O(n).行④~⑤确定2层循环,行⑤~⑦为最内层循环体,每进行1次约束放松,至少有1条指令的sched_lb增1.任何1条指令的sched_lb不会超过n×(max(Lat)+IPL),行⑥~⑦进行约束放松为O(n2)次,行⑤调用SCHED_INST的次数等于约束放松的次数加n.因此算法总的时间复杂度为O(n2).6 实验评估6.1 实验设置我们为ESESC模拟器[33]添加了DFB调度后运行SPECINT CPU2006测试程序集,使用ref输入数据.我们略过初始的1亿条指令后,模拟1亿条指令的连续执行.因为DFB Cache依赖程序的计算局部性,关闭模拟器的采样执行模式使模拟的动态指令流的计算局部性尽量接近程序实际执行情况.支持乱序执行的流水线的指令执行性能受到多个结构参数的影响,取指带宽、指令窗口容量、调度窗口容量、功能单元配置等都会影响程序的执行.为了评估指令空间调度方法,使指令执行性能体现调度方法的差异,我们对结构参数进行了差异化的设置,重点关注3个与指令空间调度方法密切相关的结构参数:分区数、IPL和调度窗口容量.部分结构参数配置如表3所示.ROB、寄存器文件等后端部件使用多端口RAM实现,可扩展性强于调度器,它们的设置根据调度窗口容量和功能单元配置合理设定,尽量减少对性能的影响.Table 3 Processor Model Configuration表3 处理器模型配置Parameter SetupBPredHybrid local/global predictor,11bit historyregister,2bit saturate counter,16K-entry PHTfor global/local/choice eachIssue Width 8instructions per cycleFU 8universalFU LatencyINT:mul 5cycles,div 8cycles,others 1cycle,FP:mul 7cycles,div 28cycles,others 4cyclesL1DCache 64KB,4-way,32Bline,2-cycle hit latencyL2Cache Unlimited,20-cycle latencyScheduler Size 64/128/256entriesIPL 1/2/3cyclePartition Count 1/2/4/8Schedule Method RR/DEP/DFB已有的指令调度方法对指令关键性的判定存在差异,但调度策略可以归为负载均衡和依赖调度2类.我们设置2个参照的调度方法:RR调度轮转分配指令到各分区,维持负载均衡;DEP调度基于生产者依赖关系调度指令,没有依赖时按照LRU(least recently used)策略选择分区;DFB调度即本文提出的依据指令的相对关键性构建调度模式并缓存重用的调度方法.757刘炳涛等:基于数据流块的空间指令调度方法6.2 DFB调度算法的评估与分析算法评估基于理想DFB调度,假设所有动态指令都被DFB Cache覆盖.对分区数量、IPL和调度窗口容量3个结构参数,每次变化其中1个,观察不同调度方法的性能差异.调度效果评价有2个指标:1)每指令周期数(cycle per instruction,CPI),CPI越低调度效果越好,我们以CPI最低的配置为基准对CPI进行归一化处理,方便比较;2)调度阻塞率(schedule blocking rate,SBR),如果调度方法为指令选择的分区发射队列已满,则阻塞流水线,直至调度成功,SBR表示阻塞周期数占总周期数的比率,SBR越小通常调度效果越好.6.2.1 分区数与调度效果不考虑分区结构在功耗、时序以及可扩展性等方面存在的优势.分区越多,单个分区的资源越少,负载不均衡和IPL对性能产生负面影响的可能性越大.我们设置IPL为1个周期,总调度窗口容量为128条指令.分区数为2,4,8的配置下,各调度方法的测试结果分别如图10~12所示.折线表示程序的CPI,绘制在主纵轴上;柱状图表示程序的SBR,绘制在辅纵轴,用百分比表示.Fig.10 Experimental result for 2partitions图10 分区数为2的实验结果程序的并行性特征不同导致其对调度方法存在偏好.perlbench的ILP有限,指令依赖较多,偏好DEP调度;bzip2的ILP较高,负载均衡压力大,调度窗口易阻塞,偏好RR调度;omnetpp和xalancbmk在分区数较小时偏好DEP调度,随着分区数增大逐渐偏好RR调度.不同程序对调度方法的偏好不同,同一个程序对调度方法的偏好也随分区数改变,所以RR调度和DEP调度之间不存在绝对的性能优劣,适应程序并行性特征的调度方法的调度效果较Fig.11 Experimental result for 4partitions图11 分区数为4的实验结果Fig.12 Experimental result for 8partitions图12 分区数为8的实验结果好.DFB调度量化程序的数据流约束,参照硬件资源约束生成调度模式并缓存重用,可以DFB调度的质量和稳定性优于RR和DEP调度.Fig.13 Performance trend with increasing partition count图13 随着分区数增加性能的变化趋势程序平均性能随分区数变化的趋势如图13所示.随着分区数增加,CPI和SBR逐渐上升,负载均857计算机研究与发展 2017,54(4)衡和IPL对性能影响逐渐增大.RR调度有最低的SBR;DEP调度容易导致调度窗口阻塞,SBR较高;DFB调度维持负载均衡的效果弱于RR,但其性能强于RR,说明DFB调度对指令关键性把握较好,照顾负载均衡的同时并没有使得关键路径过多受到IPL的惩罚.6.2.2 跨区操作数传递延迟与调度效果芯片上的功能单元互相传递操作数需要通信网络.单体实现时,操作数的传递延迟为1个周期,但周期较长.分区实现时,邻近功能单元操作数的传递延迟为1个周期,而距离越远延迟周期数越多,但周期较短.IPL定量描述了功能单元间通信延迟不均匀的程度,比如,分簇超标量处理器中调度到同簇的指令可以背靠背执行,延迟为0周期,跨越簇的边界广播操作数,需要1周期.动态多核处理器中虚拟核的物理分区之间传递操作数需要配对的复制或同步指令,需要2或3周期.基于片上网络在更多的核间传递操作数的延迟与核间的曼哈顿距离成比例.我们设置总调度窗口容量为128条指令,分区数为8.IPL为1,2,3周期时,各调度方法的测试结果分别如图14~16所示.Fig.14 Experimental result for 1-cycle IPL图14 IPL为1周期的实验结果IPL增加会增大跨分区传递操作数导致的性能惩罚.RR调度不考虑指令的依赖关系,随IPL增加性能下降最明显;DEP调度的SBR随着IPL增加基本没有变化,因为存在依赖关系的指令被分到同一分区的概率较高,性能变化较小.程序的平均性能随IPL变化的趋势如图17所示.DFB调度具有最佳调度效果.随着IPL增长,调度裕量消耗加快,负载均衡调度的机会减少,调度结果逐渐趋近于DEP调度.Fig.15 Experimental result for 2-cycle IPL图15 IPL为2周期的实验结果Fig.16 Experimental result for 3-cycle IPL图16 IPL为3周期的实验结果Fig.17 Performance trend with increasing IPL图17 随着IPL增加性能的变化趋势6.2.3 调度窗口容量与调度效果发射队列影响周期长度.小的发射队列容易被阻塞导致性能损失.我们设置分区数为8,IPL为1个周期.总调度窗口容量为64,128,256条指令时,各调度方法的测试结果见图18~20所示.957刘炳涛等:基于数据流块的空间指令调度方法。