片上网络多核处理器多线程的资源分配处理方法和系统的制作方法

文档序号:6444925阅读:474来源:国知局
专利名称:片上网络多核处理器多线程的资源分配处理方法和系统的制作方法
技术领域
本发明涉及在多核处理器上多线程处理技术领域,尤其涉及到动态改变多核处理器芯片资源分配的一种片上网络(Network-on-chip,NoC)多核处理器多线程的资源分配处理方法和系统。
背景技术
随着摩尔(Moore)定律的持续应用,单芯片上集成的晶体管数量越来越多,为了充分利用如此多的晶体管以提高性能,同时由于设计复杂度的过高、功耗和温度的限制,微处理器工业界不得不从努力提高乱序执行的单核处理器性能转变为提高片上网络(NoC) 多核处理器性能。多核处理器,甚至众核处理器的出现,使得多线程程序的普及是不可避免,因此, 为了在多核处理器上提高应用程序的总体性能,尽可能的开发线程级并行性而不是传统的单线程程序的指令级并行性已经是大势所趋。在多线程程序中,各个线程分别执行同一个程序的不同部分,并通过共享内存进行交互,为了保证程序的正确性,多个线程不允许同时更新共享数据,这就是互斥原则。现有技术中,在多线程程序的互斥控制中,使用同步原语(比如,锁(lock)),其将包含有对共享数据访问的代码保护起来,其中被保护起来的代码段称为临界区,这意味着, 在同一时间内,只能有一个线程进入临界区,而其他需要访问该临界区的线程必须忙等待, 直到该线程离开临界区才能进入。因此,对临界区的冲突访问使得多线程的执行串行化,会大大降低了程序整体性能,并且其他线程等待进入临界区所执行的自旋操作,既占用了处理器资源,也浪费了功耗,而且过多的自旋操作容易影响正确性(比如,活锁)。对于某些具有非常多的数据同步的程序(比如,Mozilla Firef0X、MySQL、操作系统内核),临界区不仅降低了性能,而且限制了程序的可扩展性(达到峰值性能所需的线程数)。同时,在多线程程序的互斥控制中,还使用栅栏(barrier)同步,其对先到达同步点的线程需要等待其他还没有到达该同步点的线程,直到指定数量的线程都到达同步点, 所有线程才执行下一个阶段的计算。因此,先到达同步点的线程忙等待的时间在很大程度上是由最后到达该同步点的线程决定的。先到达同步点的线程所执行的自旋等待操作,其中,除了最后一个迭代循环检测到标志位翻转,之前的迭代循环都是无效操作。因此,在栅栏(barrier)同步的互斥控制中,同样也存在既占用了处理器资源,也浪费了功耗的问题。

发明内容
本发明的目的在于提供一种片上网络多核处理器多线程的资源分配处理方法和系统,其有效地提高了多核处理器多线程程序的整体性能和可扩展性。为实现本发明目的而提供的一种片上网络多核处理器多线程的资源分配处理方法,包括如下步骤步骤S100,在片上网络多核处理器多线程程序执行过程中,检测出互斥控制的地址和数值,并将地址和数值写入互斥控制索引表;步骤S200,根据所述互斥控制索引表的地址和数值,将具有相同地址的互斥控制的线程排列进入登记队列,并剥夺所述登记队列中的部分线程的忙等待核资源,分发给其他线程使用。较优地,所述步骤SlOO中,检测出互斥控制的地址和数值,并将地址和数值写入互斥控制索引表,包括如下步骤步骤S110,检测出锁和/或栅栏,并且将锁的地址和数值、和/或栅栏的同步信号量的地址和数值分别存入锁硬件索引表和/或同步信号量硬件索引表。较优地,所述步骤S200,包括如下步骤步骤S210,使用锁硬件索引表记录的锁的地址和数值,并将需要同一把锁的线程进入锁登记队列,根据计时器计时,在计时达到预设值时,剥夺锁登记队列中部分线程所在的忙等待核资源,分发给正在临界区中的线程使用;较优地,所述步骤S200还包括下列步骤步骤S220,使用同步信号量硬件索引表记录同步信号量地址和数值,并将先到达同步点的线程进入同步登记队列,根据计时器计时,在计时达到预设值时,剥夺同步登记队列中部分线程所在的忙等待核资源,分发给未到达同步点的线程使用。为实现本发明目的还提供一种片上网络多核处理器多线程的资源分配处理系统, 包括检测单元,互斥控制索引表,剥夺分发处理单元,其中所述检测单元,用于在片上网络多核处理器多线程程序执行过程中,检测出互斥控制的地址和数值,并将地址和数值写入互斥控制索引表;所述互斥控制索引表,用于存储所述检测单元检测出的互斥控制的地址和数值;所述剥夺分发处理单元,用于根据所述互斥控制索引表的地址和数值,将具有相同地址的互斥控制的线程排列进入登记队列,并剥夺所述登记队列中的部分线程的忙等待核资源,分发给其他线程使用,从而加快临界区的执行。较优地,所述互斥控制的地址和数值,包括锁的地址和数值和/或栅栏的同步信号量的地址和数值;所述互斥控制索引表,包括锁硬件索引表和/或同步信号量硬件索引表。较优地,所述剥夺分发处理单元,包括锁线程剥夺处理子单元,栅栏线程剥夺子处理单元和计时器,其中所述锁线程剥夺处理子单元,用于使用锁硬件索引表记录的锁的地址和数值,并将需要同一把锁的线程进入锁登记队列,根据计时器计时,在计时达到预设值时,剥夺锁登记队列中部分线程所在的忙等待核资源,分发给正在临界区中的线程使用;所述栅栏线程剥夺子处理单元,用于使用同步信号量硬件索引表记录同步信号量地址和数值,并将先到达同步点的线程进入同步登记队列,根据计时器计时,在计时达到预设值时,剥夺同步登记队列中部分线程所在的忙等待核资源,分发给未到达同步点的线程使用;所述计时器,用于进行计时。较优地,所述剥夺的核资源为剥夺运算部件和一级缓存资源;在剥夺所述一级缓存时,采用最近最少使用页面替换策略,并且按预设的数量限定可剥夺缓存的数量进行剥夺。较优地,所述锁登记队列或者所述同步登记队列的每一项是32位向量,每一位顺序对应不同的线程。本发明的有益效果本发明的片上网络多核处理器多线程的资源分配处理方法和系统,通过检测出由于互斥控制(如锁(lock)和栅栏(barrier)机制)导致的忙等待处理器核,利用忙等待核的资源加速临界区和同步点之间的线程的执行,从而提高程序的整体性能和可扩展性。


图1为本发明实施例的片上网络多核处理器多线程的资源分配处理系统结构示意图;图2为本发明片上网络多核处理器多线程的资源分配处理方法进行锁剥夺执行多线程程序运行与传统的多线程程序运行效果对比图;图3为本发明片上网络多核处理器多线程的资源分配处理方法进行同步资源剥夺执行多线程程序运行与传统的多线程程序运行效果对比图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明片上网络多核处理器多线程的资源分配处理方法和系统的实现进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。作为一种可实施方式,本发明实施例的片上网络多核处理器多线程的资源分配处理方法,包括如下步骤步骤S100,在片上网络多核处理器多线程程序执行过程中,检测出互斥控制的地址和数值,并将地址和数值写入互斥控制索引表;步骤S200,根据所述互斥控制索引表的地址和数值,将具有相同地址的互斥控制的线程排列进入登记队列,并剥夺所述登记队列中的部分线程的忙等待核资源,分发给其他线程使用,从而加快临界区的执行。较佳地,作为一种可实施方式,所述步骤SlOO中,所述互斥控制的地址和数值,包括锁的地址和数值和/或栅栏的同步信号量的地址和数值;所述互斥控制索引表,包括锁硬件索引表和/或同步信号量硬件索引表。较佳地,作为一种可实施方式,所述剥夺的核资源为剥夺运算部件和一级缓存(Li cache)资源等;作为一种可实施方式,所述运算部件包括但不限于浮点和整数加法器、乘法器和除法器;作为一种可实施方式,所述一级缓存(Li cache)包括但不限于指令缓存 (Instruction cache,Icache)禾口数据缓存(Data cache,Dcache) 0在加速临界区执行和加快关键线程到达同步点的方法中涉及到的资源,作为一种可实施方式,可以是运算部件和一级缓存(Li cache)等。运算部件包括浮点和整数加法器、 乘法器和除法器。一级缓存(Li cache)包括指令缓存(Instruction cache, Icache)和数WiM^f (Data cacne, Dcache)。通过增加处理器核运算部件的个数,使得每ー拍从保留站发射到功能部件的指令数增多,等同于增大了指令窗ロ的大小。通过增加处理器一级缓存(Li cache)大小,大大加快了处理器核取指和取数速/又。为了避免被剥夺资源的处理器核恢复使用它自己的资源时产生不必要的开销,更佳地,在剥夺所述一级缓存(Li cache)时,采用最近最少使用页面(Least Recently Used, LRU)替换策略,并且按预设的数量限定可剥夺缓存(cache)的数量进行剥夺。较佳地,作为ー种可实施方式,所述步骤SlOO中,检测出互斥控制的地址和数值, 并将地址和数值写入互斥控制索引表,包括如下步骤步骤S110,检测出锁(lock)和/或栅栏(barrier),并且将锁的地址和数值、和/ 或栅栏的同步信号量的地址和数值分别存入锁硬件索引表和/或同步信号量硬件索引表。作为ー种可实施方式,本发明实施例中,可通过利用11/sc指令判定检测锁。由于实现锁的汇编代码中包含有特殊的11/sc指令,所以本发明实施例中,通过检测11/sc指令来判定锁,当某一把锁被第一次使用,抢锁必定成功,将该锁的地址和数值存入锁硬件索引表。所述步骤S200,包括如下步骤步骤S210,使用锁硬件索引表记录的锁的地址和数值,并将需要同一把锁的线程进入锁登记队列,根据计时器计时,在计时达到预设值吋,剥夺锁锁登记队列中部分线程所在的忙等待核资源,分发给正在临界区中的线程使用,从而加速临界区的执行;较佳地,作为ー种可实施方式,所述步骤S210中,包括如下步骤步骤S211,在该锁的地址和数值存入锁硬件索引表时,启动计时器开始计吋,当检测出抢同一把锁的其他线程时,如果锁此时不可用,则将该同一把锁的其他线程标记到锁登记队列;步骤S212,当原来占用该锁的线程还没有离开临界区,而计时器到达预设数值时, 则从登记队列的队尾中取出一个或者多个线程,剥夺所述队尾取出的一个或者多个线程的部分资源给正在临界区中的线程使用,同时将计时器归零并重新开始计时;步骤S213,当原来占用该锁的线程离开临界区,则从登记队列的队头中取出ー个线程,让所述队头取出的线程进入临界区作为新的占用该锁的线程,同时将剥夺的资源转交给所述队头取出的线程,并将该离开临界区的线程从锁登记队列删除,计时器归零后重新开始计吋,返回步骤S212,直至锁登记队列为空后结束返回。步骤S220,使用同步信号量硬件索引表记录同步信号量地址和数值,并将先到达同步点的线程进入同步登记队列,根据计时器计时,在计时达到预设值吋,剥夺同步登记队列中部分线程所在的忙等待核资源,分发给未到达同步点的线程使用,从而加速未到达同步点的线程的执行。栅栏的功能是迫使先到达同步点的线程等待,直到所有线程都到达同步点后才能继续执行。栅栏检测是ー种现有技木,因此,在本发明实施例中,不再一一详细描述。较佳地,作为ー种可实施方式,所述步骤S220中,包括如下步骤
8
步骤S221,当第一个线程到达栅栏(barrier),在同步信号量硬件索引表中记录同步信号量的地址和数值时,启动计时器开始计时;步骤S222,当其他线程到达栅栏(barrier),则标记登记队列的相应位;步骤S223,当计时器到达某ー预设的数值,而该栅栏(barrier)指定数量的线程还没有完全到达,则从登记队列中取出队尾的一个或者多个线程,剥夺它们的部分资源给未到达该栅栏(barrier)的线程使用;步骤S2M,同时计时器归零后重新开始计吋,返回步骤S223,直至所述预先指定数量的线程都到达栅栏后进入步骤S225 ;步骤S225,当所有预先指定数量的线程都到达了栅栏(barrier),则将同步信号量硬件登记表清空并返回。作为ー种可实施方式,在系统初始化吋,将计时器初始化归零。更佳地,所述锁登记队列或者所述同步登记队列的每ー项是32位向量,每一位順序对应不同的线程。相应地,本发明实施例的一种片上网络多核处理器多线程的资源分配处理系统, 如图3所示,其包括检测单元10,互斥控制索引表30,剥夺分发处理单元20,其中所述检测単元10,用于在片上网络多核处理器多线程程序执行过程中,检测出互斥控制的地址和数值,并将地址和数值写入互斥控制索引表30 ;所述互斥控制索引表30,用于存储所述检测単元10检测出的互斥控制的地址和数值;所述剥夺分发处理単元20,用于根据所述互斥控制索引表的地址和数值,将具有相同地址的互斥控制的线程排列进入登记队列,并剥夺所述登记队列中的部分线程的忙等待核资源,分发给其他线程使用,从而加快临界区的执行。较佳地,所述较佳地,作为ー种可实施方式,所述步骤SlOO中,所述互斥控制的地址和数值,包括锁的地址和数值和/或栅栏的同步信号量的地址和数值;所述互斥控制索引表,包括锁硬件索引表和/或同步信号量硬件索引表。较佳地,作为ー种可实施方式,所述剥夺的核资源为剥夺运算部件和一级缓存(Li cache)资源等;所述运算部件包括但不限于浮点和整数加法器、乘法器和除法器;所述ー级缓存(Li cache)包括但不限于指令缓存instruction cache, Icache) 禾ロ(Data cache, Dcache)。较佳地,作为ー种可实施方式,所述剥夺分发处理単元20,包括锁线程剥夺处理子単元201,栅栏线程剥夺子处理单元202和计时器203,其中所述锁线程剥夺处理子単元201,用于使用锁硬件索引表记录的锁的地址和数值, 并将需要同一把锁的线程进入锁登记队列,根据计时器202计时,在计时达到预设值吋,剥夺锁锁登记队列中部分线程所在的忙等待核资源,分发给正在临界区中的线程使用,加速临界区的执行;所述栅栏线程剥夺子处理单元202,用于使用同步信号量硬件索引表记录同步信号量地址和数值,并将先到达同步点的线程进入同步登记队列,根据计时器202计时,在计时达到预设值吋,剥夺同步登记队列中部分线程所在的忙等待核资源,分发给未到达同步点的线程使用,加速未到达同步点的线程的执行;所述计时器202,用于进行计时。本发明实施例的片上网络多核处理器多线程的资源分配处理系统,其与本发明实施例的片上网络多核处理器多线程的资源分配处理方法工作过程相同,因此,在本发明实施例中,不再一一详细描述。如图4为本发明实施例片上网络多核处理器多线程的资源分配处理方法和系统执行的多线程程序通过检测锁(lock)并剥夺核资源而加快运行与传统的多线程程序运行效果对比图。图5为本发明实施例片上网络多核处理器多线程的资源分配处理方法通过检测栅栏((barrier)剥夺核资源而加快运行执行与传统的多线程程序运行效果对比图。其中,检测环境如表1所示。表1为本发明资源分配检测运行环境表
权利要求
1.一种片上网络多核处理器多线程的资源分配处理方法,其特征在于,包括如下步骤步骤S100,在片上网络多核处理器多线程程序执行过程中,检测出互斥控制的地址和数值,并将地址和数值写入互斥控制索引表;步骤S200,根据所述互斥控制索引表的地址和数值,将具有相同地址的互斥控制的线程排列进入登记队列,并剥夺所述登记队列中的部分线程的忙等待核资源,分发给其他线程使用。
2.根据权利要求1所述的片上网络多核处理器多线程的资源分配处理方法,其特征在于,所述步骤SlOO中,检测出互斥控制的地址和数值,并将地址和数值写入互斥控制索引表,包括如下步骤步骤S110,检测出锁和/或栅栏,并且将锁的地址和数值、和/或栅栏的同步信号量的地址和数值分别存入锁硬件索引表和/或同步信号量硬件索引表。
3.根据权利要求2所述的片上网络多核处理器多线程的资源分配处理方法,其特征在于,所述步骤S200,包括如下步骤步骤S210,使用锁硬件索引表记录的锁的地址和数值,并将需要同一把锁的线程进入锁登记队列,根据计时器计时,在计时达到预设值时,剥夺锁登记队列中部分线程所在的忙等待核资源,分发给正在临界区中的线程使用。
4.根据权利要求3所述的片上网络多核处理器多线程的资源分配处理方法,其特征在于,所述步骤S210中,包括如下步骤步骤S211,在该锁的地址和数值存入锁硬件索引表时,启动计时器开始计时,当检测出抢同一把锁的其他线程时,如果锁此时不可用,则将该同一把锁的其他线程标记到登记队列;步骤S212,当原来占用该锁的线程还没有离开临界区,而计时器到达预设数值时,则从登记队列的队尾中取出一个或者多个线程,剥夺所述队尾取出的一个或者多个线程的部分资源给正在临界区中的线程使用,同时将计时器归零并重新开始计时;步骤S213,当原来占用该锁的线程离开临界区,则从登记队列的队头中取出一个线程, 让所述队头取出的线程进入临界区作为新的占用该锁的线程,同时将剥夺的资源转交给所述队头取出的线程,并将该离开临界区的线程从锁登记队列删除,计时器归零后重新开始计时,返回步骤S212,直至锁登记队列为空后结束返回。
5.根据权利要求2至4任一项所述的片上网络多核处理器多线程的资源分配处理方法,其特征在于,所述步骤S200还包括下列步骤步骤S220,使用同步信号量硬件索引表记录同步信号量地址和数值,并将先到达同步点的线程进入同步登记队列,根据计时器计时,在计时达到预设值时,剥夺同步登记队列中部分线程所在的忙等待核资源,分发给未到达同步点的线程使用。
6.根据权利要求5所述的片上网络多核处理器多线程的资源分配处理方法,其特征在于,所述步骤S220包括如下步骤步骤S221,当第一个线程到达栅栏,在同步信号量硬件索引表中记录同步信号量的地址和数值时,启动计时器开始计时;步骤S222,当其他线程到达栅栏,则标记登记队列的相应位;步骤S223,当计时器到达某一预设的数值,而该栅栏指定数量的线程还没有完全到达, 则从登记队列中取出队尾的一个或者多个线程,剥夺它们的部分资源给未到达该栅栏的线程使用;步骤S224计时器归零后重新开始计时,返回步骤S223,直至所述预先指定数量的线程都到达栅栏后进入步骤S225 ;步骤S225,当所有预先指定数量的线程都到达栅栏,则将同步信号量硬件登记表清空并返回。
7.根据权利要求5所述的片上网络多核处理器多线程的资源分配处理方法,其特征在于,所述剥夺的核资源为剥夺运算部件和一级缓存资源;在剥夺所述一级缓存时,采用最近最少使用页面替换策略,并且按预设的数量限定可剥夺缓存的数量进行剥夺。
8.一种片上网络多核处理器多线程的资源分配处理系统,其特征在于,包括检测单元, 互斥控制索引表,剥夺分发处理单元,其中所述检测单元,用于在片上网络多核处理器多线程程序执行过程中,检测出互斥控制的地址和数值,并将地址和数值写入互斥控制索引表;所述互斥控制索引表,用于存储所述检测单元检测出的互斥控制的地址和数值;所述剥夺分发处理单元,用于根据所述互斥控制索引表的地址和数值,将具有相同地址的互斥控制的线程排列进入登记队列,并剥夺所述登记队列中的部分线程的忙等待核资源,分发给其他线程使用。
9.根据权利要求8所述的片上网络多核处理器多线程的资源分配处理系统,其特征在于,所述互斥控制的地址和数值,包括锁的地址和数值和/或栅栏的同步信号量的地址和数值;所述互斥控制索引表,包括锁硬件索引表和/或同步信号量硬件索引表。
10.根据权利要求9所述的片上网络多核处理器多线程的资源分配处理系统,其特征在于,所述剥夺分发处理单元,包括锁线程剥夺处理子单元,栅栏线程剥夺处理子单元和计时器,其中所述锁线程剥夺处理子单元,用于使用锁硬件索引表记录的锁的地址和数值,并将需要同一把锁的线程进入锁登记队列,根据计时器计时,在计时达到预设值时,剥夺锁锁登记队列中部分线程所在的忙等待核资源,分发给正在临界区中的线程使用;所述栅栏线程剥夺子处理单元,用于使用同步信号量硬件索引表记录同步信号量地址和数值,并将先到达同步点的线程进入同步登记队列,根据计时器计时,在计时达到预设值时,剥夺同步登记队列中部分线程所在的忙等待核资源,分发给未到达同步点的线程使用;所述计时器,用于进行计时。
11.根据权利要求9至10任一项所述的片上网络多核处理器多线程的资源分配处理系统,其特征在于,所述剥夺的核资源为剥夺运算部件和一级缓存资源;在剥夺所述一级缓存时,采用最近最少使用页面替换策略,并且按预设的数量限定可剥夺缓存的数量进行剥夺。
12.根据权利要求11所述的片上网络多核处理器多线程的资源分配处理系统,其特征在于,所述锁登记队列或者所述同步登记队列的每一项是32位向量,每一位顺序对应不同的线程。
全文摘要
本发明提供一种片上网络多核处理器多线程的资源分配处理方法和系统。该系统包括检测单元,用于在片上网络多核处理器多线程程序执行过程中,检测出互斥控制的地址和数值,并将地址和数值写入互斥控制索引表;互斥控制索引表,用于存储所述检测单元检测出的互斥控制的地址和数值;剥夺分发处理单元,用于根据所述互斥控制索引表的地址和数值,将具有相同地址的互斥控制的线程排列进入登记队列,并剥夺所述登记队列中的部分线程的忙等待核资源,分发给其他线程使用。其有效地提高了多核处理器多线程程序的整体性能和可扩展性。
文档编号G06F9/50GK102591722SQ201110460300
公开日2012年7月18日 申请日期2011年12月31日 优先权日2011年12月31日
发明者尹一笑, 杨旭, 郭崎, 陈云霁 申请人:龙芯中科技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1