论文部分内容阅读
随着半导体制造工艺的进一步发展,集成电路(integrated circuit,IC)的集成度越来越高。单位面积能够容纳的IC数量剧增,集成电路的规模在不断缩小。半导体工艺进步的同时也带来了一些问题。由于制造尺寸越小的晶体管所需要的制造难度越高,制造难度随晶体管尺寸变化成指数级增长,同一芯片不同部位的一致性更加难以把控。在制造晶体管过程中一些很微小的误差会导致集成后的芯片在性能上产生很大的差异。多核处理器相较单核处理器来说具有并行度高,性能好的优势,已经成为目前的主流处理器。目前在多核环境下任务调度的研究很少考虑到制程变异对多核处理器的影响,在同构多核处理器上的研究几乎都认为不同核心的频率是相同的,这是十分不准确的,会引起处理器性能的损失。因此,设计合理的考虑到同构多核处理器在生产过程中由于制造工艺导致的核心间频率不一致的任务调度算法是十分必要的。本文从不同角度对多核处理器进行阐述,并详细介绍多核处理器任务调度,深入分析在多核环境下任务调度存在的问题。考虑到制程差异,提出一种基于关键路径的任务调度策略。考虑到负载平衡,提出了任务窃取策略。为了解决在实际应用中在制程差异影响下多核环境下处理器性能发生损失的问题,本文考虑到制程差异对同构多核处理器核心频率的影响,将原本计算速度相同的核心分为快核和慢核两类。快核处理关键路径上的任务,慢核处理非关键路径上的任务。通过这种方式来发挥快核的优势,降低慢核对处理器性能的限制。其次,考虑到随着任务的执行,关键路径可能发生变化的情况,提出一种动态检测关键路径的策略。现有的基于关键路径的任务调度策略无法解决随着任务执行产生的关键路径变化的问题。本文通过记录上次判定为关键任务的任务以及当前就绪任务的优先级来判断关键路径是否发生变化。在关键路径发生变化后,可以重新检测关键路径,以便于后续的任务调度。在任务优先图深度很深或是宽度很宽的情况下,会出现两种情况。一种是关键路径上的任务数目很多而只有很少的任务在非关键路径上;另一种情况是关键路径上的任务数目很少而非关键路径上的任务很多。此时,可能会出现一类核心执行完任务一直空闲而另一类核心过载的情况。为了解决上述问题,提出任务窃取策略。在该策略中,空闲核心帮助忙碌核心执行任务。最后,通过实验对算法性能进行验证。通过随机生成任务数目不同的任务优先图,在核心数目不同的情况下进行实验,在运行时间以及算法健壮性方面与其他两个算法进行对比,发现本文提出的算法降低了运行时间并且更稳定,更适合于在实际生产过程中有制程差异的多核环境下进行任务调度。