基于数据划分的多线程共享多核处理器二级缓存的方法

文档序号:6460488阅读:203来源:国知局
专利名称:基于数据划分的多线程共享多核处理器二级缓存的方法
技术领域
本发明涉及多核多线程技术领域,特别是涉及一种基于数据划分的多线程共 享多核处理器二级缓存的方法。
背景技术
随着集成电路技术的发展,处理器的性能提升已不能指望主频的提高,要想 使微处理器性能继续按摩尔定律推进,使处理器能够符合计算发展的需求,必
须研究新的微架构和新的计算模型,因此单芯片多处理器(Chip Multi-processors,简称CMP)架构,也就是通常所说的多核,成为现在学术界 和工业界关注的热点,并已成为服务器和桌面领域的主流。
每种新的硬件体系结构的提出,必然要与相适应的软件配合,才能发挥它的 最大性能。目前的硬件己经完成了从单核到多核的跨越,但多核的软件设计的 研究还是处于百家争鸣的状态,虽然有了一定的研究成果,但新的方法、新的 研究数据仍然曾出不穷。特别是在嵌入式多核领域,针对性的研究还是太少。 而嵌入式芯片的产量和应用又是远远大于桌面系统和服务器系统,并且高端的 嵌入式系统也早已崭露头角,并将继续占领一个重要的地位。多核嵌入式作为 其中的一个主要代表已渐渐成为嵌入式领域和多核领域的研究热点。
从多核的快速发展中可以预见,多核即将被广泛应用到一个更广阔的市场 ——嵌入式系统。据统计嵌入式芯片占整个芯片市场的80%-90%[1],而多核时 代的到来将使得这个领域焕发出新的研究热潮。由于底层体系结构的改变,许 多嵌入式研究方向需要进行修正,包括实时性、可靠性、节能等等。虽然这方 面的工作才公共起步,但必将在未来的几年中成为嵌入式研究的主流。
嵌入式的软件优化涉及到方方面面,包括实时性、可靠性、安全性、节能、 系统吞吐量等等。但是实时性一直占据着其中最重要的位置。可以说实时性是 航天、军事、工业控制等领域的命脉。
实时性的本质问题是在一个给定的时间T内,系统必须完成所要完成的任 务,如果完成的时间为t, t<=T。基于这个限制,许多研究正试图达到这个目的。 但过去的研究主要从操作系统等间接层面来改善系统的实时性,无法触及到根 本问题——实时任务。多核系统的出现,使得多个程序可以真正地同时运行在 一个系统。推而广之,只要方法适当,可以将一个程序同时运行在不同的核上,每个核完成任务的一部分。由于系统资源的提升,可以将这个实时任务的完成 时间縮为原来的一半,甚至更短。
目前多核处理器的二级缓存发生了改变,以往是每个核独占一个二级缓存,
而在如今的CMP (Chip Multi-processor)的处理器中,以多个核为一组共享二 级缓存,本发明通过基于数据划分的多线程多核二级缓存来进一步地提升实时 任务的性能。

发明内容
本发明的目的在于提供一种基于数据划分的多线程共享多核处理器二级缓 存的方法。
本发明解决其技术问题采用的技术方案如下
1) 基于数据的多线程划分
根据程序的结构,将程序按照数据操作进行划分,形成基于数据划分的多 线程;
2) 改进操作系统的线程分配
操作系统在启动的时候收集到关于多核处理器的所有信息,根据二级缓存 的配置将处理器进行分组;当实时任务的开发者将任务分解后的线程共享关系 传入操作系统,操作系统根据这个共享关系和处理器的配置进行线程的类别划 分;将共享数据量大的线程划分到一个线程类中,将会产生二级缓存访问冲突 的线程划分到不同的类当中,最后将不同的线程类映射至多核组;
3) 优化线程切换
对操作系统的线程切换模块的地址重新进行映射,将操作系统的线程切换
模块的地址映射到Scratchpad Memory。
本发明与背景技术相比,具有的有益的效果是
本发明是一种基于数据划分的多线程共享多核处理器二级缓存的方法,其 主要数据是结合多核处理器上二级缓存的特点,对程序进行基于数据的多线程 划分,并在操作系统中设计了基于二级缓存共享的线程分配算法,提供划分后 任务的运行支持。
(1) 高效性。本发明实现了多核处理器上二级缓存的多线程共享,可以大大 提升系统实时任务的性能,从而降低系统的激励-响应周期。
(2) 实用性。多线程可以同时运行在系统上,将大大縮短整个任务的运行时间。


图1是本发明的实施过程示意图。
图2是程序数据分解示意图。 图3是本发明中快速排序示意图。 图4是本发明中快速排序二线程示意图。 图5是本发明的线程分配过程示意图。
具体实施例方式
本发明是一种基于数据划分的多线程共享多核处理器二级缓存的方法,下 面结合图1说明其具体实施过程。 l)基于数据的多线程划分-
程序主要由两部分组成,程序流程的控制和数据的操作。对于一个单一的 任务,程序流程的控制是不能再分的,而它的数据操作部分是可以分解的,而 且数据操作部分所占用的执行时间一般远远大于流程控制部分。像图2(a)这样的 程序代码在程序的编码中是比较常见的。但是在单核体系结构下,即使存在并 行的可能也无法将之利用。但在多核体系结构下,情况就不同了。图2(b)就示意 了可以将原来的程序分解为两个线程分别进行运算。按照这种基于数据操作情 况的划分方法,将程序划分成多线程。
排序问题可以很好地作为案例来分析分解过程。排序问题在数据库、搜索 引擎等领域中,排序和索引程序占据了很大的一部分。很多程序优化方法的提 出,最早也都是在排序问题上进行测试的。将排序问题作为"基于数据划分"的案 例,也考虑到要考察大量数据情况下的并行性能和二级缓存的表现。下面以快 速排序为例,研究递归情况下的数据划分。
在快速排序中,首先将中心点找到,放到适当的位置。在这个位置前的数 都小于中心数,在这个数之后的数都大于中心数。接着在左半边和右半边分别 递归排序。可以发现在这个分支中,左右两部分的排序不存在依赖关系,也就 是说这里存在着并行的可能。于是可以将左半支排序放到一个核上运行,右半 支排序放到另一个核上运行。如果这个中心点找得好的话,工作量的分配是十 分均匀的。图3(a)表示一串未排序数列;图3(b)表示了正常的快速排序第一次找 中心点后的结果,接着递归继续排序;图3(c)表示在中心点找到后将程序分成两 个线程,对剩余部分同时进行排序。
图4是快速排序二线程示意图,表示一个线程在完成第一次中心点查找后, 再分解为两个线程进行同步运行。这两个线程被分布到不共享二级缓存的核上, 并保持其他核的空闲状态,以最大化二级缓存的利用率。图4只是快速排序根据数据划分的方法拆分为两个线程的示意图,如果排序数据量大,可以拆分出 更多的线程运行在空闲的核上。
2) 改进操作系统的线程分配
操作系统在启动的时候收集到关于多核处理器的所有信息,根据二级缓存 的配置将处理器进行分组。当实时任务的开发者将任务分解后的线程共享关系 传入操作系统,操作系统根据这个共享关系和处理器的配置进行线程的类别划 分。将共享数据量大的线程划分到一个线程类中,将会产生二级缓存访问冲突 的线程划分到不同的类当中,最后将不同的线程类映射至多核组,目的是最大 化二级缓存的访问命中。线程分配设计示意图如图5所示实时任务在划分为 多个子线程后,将这些线程的共享关系传递给操作系统,操作系统根据底层多 核的配置情况,计算出将线程分配给各个核的策略。
3) 优化线程切换
对操作系统的线程切换模块的地址重新进行映射,将操作系统的线程切换
模块的地址映射到Scratchpad Memory。利用处理器核上的Scratchpad Memory
部件,通过操作系统对线程切换模块的控制,使得线程切换模块不能被刷出内 存,锁住这部分代码的缓存,使之永远能够缓存访问命中以此来提升运行效率。
权利要求
1.基于数据划分的多线程共享多核处理器二级缓存的方法,其特征在于1)基于数据的多线程划分根据程序的结构,将程序按照数据操作进行划分,形成基于数据划分的多线程;2)改进操作系统的线程分配操作系统在启动的时候收集到关于多核处理器的所有信息,根据二级缓存的配置将处理器进行分组;当实时任务的开发者将任务分解后的线程共享关系传入操作系统,操作系统根据这个共享关系和处理器的配置进行线程的类别划分;将共享数据量大的线程划分到一个线程类中,将会产生二级缓存访问冲突的线程划分到不同的类当中,最后将不同的线程类映射至多核组;3)优化线程切换对操作系统的线程切换模块的地址重新进行映射,将操作系统的线程切换模块的地址映射到ScratchPad Memory。
全文摘要
本发明公开了一种基于数据划分的多线程共享多核处理器二级缓存的方法。本发明的方法结合多核处理器上二级缓存的特点,对程序进行基于数据的多线程划分,并在操作系统中设计了基于二级缓存共享的线程分配算法,提供划分后任务的运行支持。本方法实现了多核处理器上二级缓存的多线程共享,可以大大提升系统实时任务的性能,从而降低系统的激励-响应周期。本发明实现了多核处理器上二级缓存的多线程共享,可以大大提升系统实时任务的性能,从而降低系统的激励-响应周期;多线程可以同时运行在系统上,将大大缩短整个任务的运行时间。
文档编号G06F9/46GK101286138SQ20081006216
公开日2008年10月15日 申请日期2008年6月3日 优先权日2008年6月3日
发明者严力科, 冯德贵, 施青松, 章铁飞, 威 胡, 蒋冠军, 斌 谢, 陈天洲, 项凌祥, 黄江伟 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1