CN101286138A - 基于数据划分的多线程共享多核处理器二级缓存的方法 - Google Patents
基于数据划分的多线程共享多核处理器二级缓存的方法 Download PDFInfo
- Publication number
- CN101286138A CN101286138A CNA2008100621660A CN200810062166A CN101286138A CN 101286138 A CN101286138 A CN 101286138A CN A2008100621660 A CNA2008100621660 A CN A2008100621660A CN 200810062166 A CN200810062166 A CN 200810062166A CN 101286138 A CN101286138 A CN 101286138A
- Authority
- CN
- China
- Prior art keywords
- thread
- operating system
- data
- buffer memory
- secondary buffer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 22
- 230000005284 excitation Effects 0.000 abstract description 3
- 230000004044 response Effects 0.000 abstract description 3
- 238000011160 research Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 7
- 238000012163 sequencing technique Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 2
- 238000004134 energy conservation Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 238000004886 process control Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种基于数据划分的多线程共享多核处理器二级缓存的方法。本发明的方法结合多核处理器上二级缓存的特点,对程序进行基于数据的多线程划分,并在操作系统中设计了基于二级缓存共享的线程分配算法,提供划分后任务的运行支持。本方法实现了多核处理器上二级缓存的多线程共享,可以大大提升系统实时任务的性能,从而降低系统的激励-响应周期。本发明实现了多核处理器上二级缓存的多线程共享,可以大大提升系统实时任务的性能,从而降低系统的激励-响应周期;多线程可以同时运行在系统上,将大大缩短整个任务的运行时间。
Description
技术领域
本发明涉及多核多线程技术领域,特别是涉及一种基于数据划分的多线程共享多核处理器二级缓存的方法。
背景技术
随着集成电路技术的发展,处理器的性能提升已不能指望主频的提高,要想使微处理器性能继续按摩尔定律推进,使处理器能够符合计算发展的需求,必须研究新的微架构和新的计算模型,因此单芯片多处理器(ChipMulti-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说明其具体实施过程。
1)基于数据的多线程划分:
程序主要由两部分组成,程序流程的控制和数据的操作。对于一个单一的任务,程序流程的控制是不能再分的,而它的数据操作部分是可以分解的,而且数据操作部分所占用的执行时间一般远远大于流程控制部分。像图2(a)这样的程序代码在程序的编码中是比较常见的。但是在单核体系结构下,即使存在并行的可能也无法将之利用。但在多核体系结构下,情况就不同了。图2(b)就示意了可以将原来的程序分解为两个线程分别进行运算。按照这种基于数据操作情况的划分方法,将程序划分成多线程。
排序问题可以很好地作为案例来分析分解过程。排序问题在数据库、搜索引擎等领域中,排序和索引程序占据了很大的一部分。很多程序优化方法的提出,最早也都是在排序问题上进行测试的。将排序问题作为“基于数据划分”的案例,也考虑到要考察大量数据情况下的并行性能和二级缓存的表现。下面以快速排序为例,研究递归情况下的数据划分。
在快速排序中,首先将中心点找到,放到适当的位置。在这个位置前的数都小于中心数,在这个数之后的数都大于中心数。接着在左半边和右半边分别递归排序。可以发现在这个分支中,左右两部分的排序不存在依赖关系,也就是说这里存在着并行的可能。于是可以将左半支排序放到一个核上运行,右半支排序放到另一个核上运行。如果这个中心点找得好的话,工作量的分配是十分均匀的。图3(a)表示一串未排序数列;图3(b)表示了正常的快速排序第一次找中心点后的结果,接着递归继续排序;图3(c)表示在中心点找到后将程序分成两个线程,对剩余部分同时进行排序。
图4是快速排序二线程示意图,表示一个线程在完成第一次中心点查找后,再分解为两个线程进行同步运行。这两个线程被分布到不共享二级缓存的核上,并保持其他核的空闲状态,以最大化二级缓存的利用率。图4只是快速排序根据数据划分的方法拆分为两个线程的示意图,如果排序数据量大,可以拆分出更多的线程运行在空闲的核上。
2)改进操作系统的线程分配:
操作系统在启动的时候收集到关于多核处理器的所有信息,根据二级缓存的配置将处理器进行分组。当实时任务的开发者将任务分解后的线程共享关系传入操作系统,操作系统根据这个共享关系和处理器的配置进行线程的类别划分。将共享数据量大的线程划分到一个线程类中,将会产生二级缓存访问冲突的线程划分到不同的类当中,最后将不同的线程类映射至多核组,目的是最大化二级缓存的访问命中。线程分配设计示意图如图5所示:实时任务在划分为多个子线程后,将这些线程的共享关系传递给操作系统,操作系统根据底层多核的配置情况,计算出将线程分配给各个核的策略。
3)优化线程切换:
对操作系统的线程切换模块的地址重新进行映射,将操作系统的线程切换模块的地址映射到ScratchPad Memory。利用处理器核上的ScratchPad Memory部件,通过操作系统对线程切换模块的控制,使得线程切换模块不能被刷出内存,锁住这部分代码的缓存,使之永远能够缓存访问命中以此来提升运行效率。
Claims (1)
1.基于数据划分的多线程共享多核处理器二级缓存的方法,其特征在于:
1)基于数据的多线程划分:
根据程序的结构,将程序按照数据操作进行划分,形成基于数据划分的多线程;
2)改进操作系统的线程分配:
操作系统在启动的时候收集到关于多核处理器的所有信息,根据二级缓存的配置将处理器进行分组;当实时任务的开发者将任务分解后的线程共享关系传入操作系统,操作系统根据这个共享关系和处理器的配置进行线程的类别划分;将共享数据量大的线程划分到一个线程类中,将会产生二级缓存访问冲突的线程划分到不同的类当中,最后将不同的线程类映射至多核组;
3)优化线程切换:
对操作系统的线程切换模块的地址重新进行映射,将操作系统的线程切换模块的地址映射到ScratchPad Memory。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008100621660A CN101286138A (zh) | 2008-06-03 | 2008-06-03 | 基于数据划分的多线程共享多核处理器二级缓存的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008100621660A CN101286138A (zh) | 2008-06-03 | 2008-06-03 | 基于数据划分的多线程共享多核处理器二级缓存的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101286138A true CN101286138A (zh) | 2008-10-15 |
Family
ID=40058353
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2008100621660A Pending CN101286138A (zh) | 2008-06-03 | 2008-06-03 | 基于数据划分的多线程共享多核处理器二级缓存的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101286138A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102981805A (zh) * | 2012-11-02 | 2013-03-20 | 浪潮(北京)电子信息产业有限公司 | 串行软件的响应方法和系统 |
WO2013071485A1 (en) * | 2011-11-15 | 2013-05-23 | Intel Corporation | Scheduling thread execution based on thread affinity |
CN103197977A (zh) * | 2011-11-16 | 2013-07-10 | 华为技术有限公司 | 一种线程调度方法、线程调度装置及多核处理器系统 |
CN103473095A (zh) * | 2013-09-10 | 2013-12-25 | 江苏中科梦兰电子科技有限公司 | Cpu二级缓存的加速初始化方法 |
CN104272278A (zh) * | 2012-05-08 | 2015-01-07 | 高通股份有限公司 | 多线程处理器中的共享经分割高速缓冲存储器中的每线程高速缓冲存储器行分配机制 |
CN106126450A (zh) * | 2016-06-20 | 2016-11-16 | 中国航天科技集团公司第九研究院第七七研究所 | 一种应对多核处理器监听访问冲突的Cache设计结构及方法 |
CN107924327A (zh) * | 2015-07-27 | 2018-04-17 | 华为技术有限公司 | 用于多线程处理的系统和方法 |
CN110059024A (zh) * | 2019-04-19 | 2019-07-26 | 中国科学院微电子研究所 | 一种内存空间数据缓存方法及装置 |
-
2008
- 2008-06-03 CN CNA2008100621660A patent/CN101286138A/zh active Pending
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9268595B2 (en) | 2011-11-15 | 2016-02-23 | Intel Corporation | Scheduling thread execution based on thread affinity |
WO2013071485A1 (en) * | 2011-11-15 | 2013-05-23 | Intel Corporation | Scheduling thread execution based on thread affinity |
CN103197977A (zh) * | 2011-11-16 | 2013-07-10 | 华为技术有限公司 | 一种线程调度方法、线程调度装置及多核处理器系统 |
CN103197977B (zh) * | 2011-11-16 | 2016-09-28 | 华为技术有限公司 | 一种线程调度方法、线程调度装置及多核处理器系统 |
CN104272278B (zh) * | 2012-05-08 | 2017-05-24 | 高通股份有限公司 | 用于更新共享高速缓冲存储器的方法和多线程处理系统 |
CN104272278A (zh) * | 2012-05-08 | 2015-01-07 | 高通股份有限公司 | 多线程处理器中的共享经分割高速缓冲存储器中的每线程高速缓冲存储器行分配机制 |
US9824013B2 (en) | 2012-05-08 | 2017-11-21 | Qualcomm Incorporated | Per thread cacheline allocation mechanism in shared partitioned caches in multi-threaded processors |
CN102981805B (zh) * | 2012-11-02 | 2015-11-18 | 浪潮(北京)电子信息产业有限公司 | 串行软件的响应方法和系统 |
CN102981805A (zh) * | 2012-11-02 | 2013-03-20 | 浪潮(北京)电子信息产业有限公司 | 串行软件的响应方法和系统 |
CN103473095A (zh) * | 2013-09-10 | 2013-12-25 | 江苏中科梦兰电子科技有限公司 | Cpu二级缓存的加速初始化方法 |
CN107924327A (zh) * | 2015-07-27 | 2018-04-17 | 华为技术有限公司 | 用于多线程处理的系统和方法 |
CN106126450A (zh) * | 2016-06-20 | 2016-11-16 | 中国航天科技集团公司第九研究院第七七研究所 | 一种应对多核处理器监听访问冲突的Cache设计结构及方法 |
CN106126450B (zh) * | 2016-06-20 | 2018-10-30 | 中国航天科技集团公司第九研究院第七七一研究所 | 一种应对多核处理器监听访问冲突的Cache设计结构及方法 |
CN110059024A (zh) * | 2019-04-19 | 2019-07-26 | 中国科学院微电子研究所 | 一种内存空间数据缓存方法及装置 |
CN110059024B (zh) * | 2019-04-19 | 2021-09-21 | 中国科学院微电子研究所 | 一种内存空间数据缓存方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101286138A (zh) | 基于数据划分的多线程共享多核处理器二级缓存的方法 | |
Koliousis et al. | Saber: Window-based hybrid stream processing for heterogeneous architectures | |
US9990200B2 (en) | Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines | |
Nykiel et al. | MRShare: sharing across multiple queries in MapReduce | |
Böhm et al. | Density-based clustering using graphics processors | |
CN101329638B (zh) | 程序代码的并行性的分析方法和系统 | |
CN102902512B (zh) | 一种基于多线程编程及消息队列的多线程并行处理方法 | |
Pérache et al. | MPC: A unified parallel runtime for clusters of NUMA machines | |
CN101359333B (zh) | 一种基于隐含狄利克雷分配模型的并行数据处理方法 | |
CN103562866A (zh) | 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段 | |
CN114064551B (zh) | 基于cpu+gpu异构的高并发序列比对计算加速方法 | |
Khairy et al. | A survey of architectural approaches for improving GPGPU performance, programmability and heterogeneity | |
Karnagel et al. | The HELLS-join: a heterogeneous stream join for extremely large windows | |
Bøgh et al. | Efficient GPU-based skyline computation | |
Wahib et al. | Optimization of parallel genetic algorithms for nVidia GPUs | |
Wang et al. | Elastic pipelining in an in-memory database cluster | |
JP6318303B2 (ja) | 並列マージソート | |
Li et al. | Energy-aware scheduling on multiprocessor platforms | |
Kiani et al. | Efficient cache performance modeling in GPUs using reuse distance analysis | |
Tan et al. | Improving performance of dynamic programming via parallelism and locality on multicore architectures | |
Lai et al. | Accelerating multi-way joins on the GPU | |
Sha et al. | Self-adaptive graph traversal on gpus | |
Lai et al. | GPU-based hybrid parallel logic simulation for scan patterns | |
CN101290592A (zh) | 一种mpsoc上多道程序共享spm的实现方法 | |
Barreiros et al. | Parallel and efficient sensitivity analysis of microscopy image segmentation workflows in hybrid systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20081015 |