片上多核处理器共享资源分配与调度策略研究综述(一)
扫描二维码
随时随地手机看文章
对于片上多核处理器,如何在多线程间公平有效地分配调度有限的共享资源是一个很重要的问题。随着处理器核规模的增长,多线程对于系统中有限的共享资源的争夺将愈发激烈,由此导致的对于系统性能的影响也将更加显着。为了缓解乃至解决这一问题,除了增加可用共享资源外,一个能够公平有效地在多线程间分配共享资源的调度算法也至关重要。在各类共享资源中,对于系统性能有着最大影响的是共享缓存和DRAM 系统。对于共享缓存,可以通过缓存分区,来降低由于线程间的争夺所带来的影响;对于DRAM系统,可以采取适当的调度算法来调节各个线程发出的访存请求的服务优先级,从而改善系统性能。首先分别以系统吞吐量和公平性为优化目标介绍了一系列对共享缓存的分区调度算法,并针对缓存分区粒度过大的问题给出了相关解决方案。然后从利用线程的访存行为特征和借鉴网络路由算法等多个角度介绍了DRAM 的调度算法。接下来,研究了从全局出发的联合调度算法,以解决针对不同共享资源的调度算法间相互矛盾的问题。最后,从不同角度对于今后的研究进行了展望。
随着集成电路工艺的发展,片上多核处理器(chip multi-processor, CMP)开始占据市场,在一个CMP 上并发地执行多个线程成为主流趋势。CMP上的多个核/线程通常共享最后一级缓存(lastlevel cache,LLC)、DRAM 控制器、主存总线带宽和预取部件(prefetching hardware)等多种资源。
系统中的共享资源总是有限的,线程间需要争夺共享资源的使用权。不同的线程其程序特征(在本文中主要指访存行为)存在差异,而线程争夺共享资源的能力通常与此相关。如果没有特别的调度机制,某些线程可能占用大部分乃至全部的系统资源,导致其他线程的请求得不到服务,最终对系统的性能(吞吐量和公平性)造成影响。
如果存在一个调度策略能够在多个并行线程间公平有效地分配共享资源,则可以缓解由于对共享资源的争夺所带来的负面影响,从而改善系统性能。
因此,在CMP 系统中对共享资源的分配调度成为一个值得研究的热点问题。
在CMP 系统中,最为重要的共享资源是其共享存储系统(主要包括共享缓存和主存带宽)。当线程的访存请求得不到服务时,由于所需数据没有及时返回,相关处理器核将会一直处于阻塞等待状态,导致计算资源的浪费,对系统性能会造成巨大影响。
学术界当前的研究重点也主要集中在共享缓存和主存带宽的分配调度上,因此,本文将从这两个方面对CMP 系统的共享资源调度问题进行阐述。
当私有缓存空间不够用时,程序将访问共享缓存,线程间会争夺有限的共享缓存空间。常用的最近最少使用替换算法(least recently used,LRU)不区分访存请求来自哪个线程,同等对待所有访存请求,当需要发生缓存替换时,总是逐出最近访问频率最低的缓存块。因此,多个线程实际上是在自由竞争共享缓存空间的使用权。一些能够快速产生大量缓存失效的线程可能替换掉其他线程的有效数据,独占大部分乃至全部缓存空间。缓存空间在线程间的分配方式不当会导致部分线程或总的缓存失效率急剧上升,影响到系统的性能。现有的研究大多通过缓存分区来解决这个问题。由于不同线程在不同的时刻对缓存空间的需求并不一样,简单地将共享缓存平均分给各个线程并不能有效解决问题。