CN104216684A - 一种多核并行系统及其数据处理方法 - Google Patents
一种多核并行系统及其数据处理方法 Download PDFInfo
- Publication number
- CN104216684A CN104216684A CN201310219732.5A CN201310219732A CN104216684A CN 104216684 A CN104216684 A CN 104216684A CN 201310219732 A CN201310219732 A CN 201310219732A CN 104216684 A CN104216684 A CN 104216684A
- Authority
- CN
- China
- Prior art keywords
- serialization
- processor
- critical area
- data
- process request
- 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.)
- Granted
Links
Landscapes
- Multi Processors (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请提供了一种多核并行系统及其数据处理方法;方法包括:将串行化关键区域中的数据按照第一规则分配给所述多核并行系统中的多个处理器保存;当所述多个处理器中任一处理器需要处理串行化关键区域中的数据且待处理数据不在本处理器上时,根据所述第一规则确定保存待处理数据的处理器,生成串行化关键区域处理请求发送给所确定的处理器;接收到所述串行化关键区域处理请求的处理器根据所接收的串行化关键区域处理请求进行处理;处理完成后,将处理结果返回给生成所述串行化关键区域处理请求的处理器。本申请能够提高多核并行系统对串行化关键区域的处理性能。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种多核并行系统及其数据处理方法。
背景技术
最近几年内,处理器厂商受到功耗和温度的限制,同时为了保持高性能运算持续增长,计算机已经朝着多核计算机体系架构方向发展。为了充分利用多核架构,应用程序被拆分成多个可独立运行在单个CPU上面的线程,这样设计程序可以并行执行提高整体运行效率。基于这样的程序体系,为了保证数据处理的同步性和数据完整性,线程之间需要用锁来串行访问共享区域。用锁来保证的共享数据串行化操作的这段共享区域被称之为串行化关键区域。随着CPU的增加,并行处理的线程也开始增多,这使串行化的操作变得更加频繁,串行化操作将原本可以并行操作的事物串行操作,从Amdahl定律可知程序代码包括两个部分,并行处理和串行处理代码,串行化操作时间比例越大越会阻碍并行程序的性能提升,约束系统架构的可扩展性。
当前多核体系架构的主流设计方案的一个例子如图1所示,图1a中共有16个CPU核,彼此通过路由(图中粗线)可相互访问,图1b中是每个CPU的框架,其中*Ln代表First Level Cache(一级缓存)缓存L1,或者L1及SecondLevel Cache(二级缓存)缓存L2;Last Level Cache为最后一级缓存,简称LLC,*Ln和LLC及路由相连,LLC的目录和路由相连。当从内存中读出内存数据后会将内存数据均匀分摊到每个处理器的LLC。
为了加快串行关键区域代码的运行,现有的一些方案提出通过使用非对称多核架构(Asymmetric Multi-Core Architectures),将在众多小核(small cpucores)中执行的串行化关键区域放到一个功能强大的CPU core中执行,缩短串行化关键区域的执行时间,试验结果取得了很好的并行性和扩展性。
但是,这些方案将不可避免的带来非常大的数据迁移,比如固定的大处理器需要对分布在其他小处理器上面的共享数据做串行化处理的时候,就不得不将数据迁移过来,然后进行操作;但是随着CPU核数目和并行程序的增多,这种换入换出的操作变得更加频繁,数据在CPU网络间迁移的延迟使关串行化键区域处理时间变得更长;而且当完成操作的时候,大处理器会将处理结果写到本地缓存*Ln中,数据一致性处理增加了CPU网络之间的负担;由于内部总线的延迟,芯片上远方缓存(cache)数据的访问也将成为瓶颈;因此,现有方案当CPU核数目/并行程序增多后会导致多核并行系统的性能下降,影响多核并行系统的可扩展性。
发明内容
本申请要解决的技术问题是如何提高多核并行系统对串行化关键区域的处理性能。
为了解决上述问题,本申请提供了一种多核并行系统的数据处理方法,包括:
将串行化关键区域中的数据按照第一规则分配给所述多核并行系统中的多个处理器保存;
当所述多个处理器中任一处理器需要处理串行化关键区域中的数据且待处理数据不在本处理器上时,根据所述第一规则确定保存待处理数据的处理器,生成串行化关键区域处理请求发送给所确定的处理器;
接收到所述串行化关键区域处理请求的处理器根据所接收的串行化关键区域处理请求进行处理;处理完成后,将处理结果返回给生成所述串行化关键区域处理请求的处理器。
进一步地,所述串行化关键区域处理请求中包括以下传输参数:
待处理数据的地址,返回地址、及待进行的处理;
所述待进行的处理以串行化关键区域函数的地址表示。
进一步地,将处理结果返回给生成所述串行化关键区域处理请求的处理器的步骤包括:
根据所述第一规则确定返回地址所在的处理器;
在所确定的处理器的缓存中,根据所述返回地址逐级查找所述返回地址对应的位置;
查找到后将处理结果写入所查找到的位置。
进一步地,所述接收到所述串行化关键区域处理请求的处理器根据所接收的串行化关键区域处理请求进行处理的步骤包括:
31、接收到所述串行化关键区域处理请求的处理器暂停执行本处理器上的线程;
32、根据所述串行化关键区域处理请求中串行化关键区域函数的地址,执行相应的串行化关键区域函数;在执行过程中,如果判断执行所需数据不在本处理器上,则进行步骤33;如果在本处理器上,则进行步骤34;
33、根据所述第一规则确定保存执行所需数据的处理器,将所述串行化关键区域处理请求中的待处理数据的地址修改为执行所需数据的地址后,转发给所确定的处理器,继续执行所暂停的线程;接收到所述串行化关键区域处理请求的处理器进行步骤31;
34、执行所述串行化关键区域函数处理本处理器上相应的数据,完成后将处理结果返回给生成所述串行化关键区域处理请求的处理器,恢复执行所暂停的线程。
进一步地,所述将串行化关键区域中的数据按照第一规则分配给多核并行系统中的多个处理器保存的步骤包括:
从串行化关键区域中读出数据;
对于读出的每条数据,分别用该数据的地址对N取模,N为所述多核并行系统中,用于保存串行化关键区域的数据的处理器的个数;
将读出的数据分配给该数据取模结果所代表的处理器;
处理器将所分配的数据保存在本处理器的缓存中;
所述根据所述第一规则确定保存待处理数据的处理器的步骤包括:
用待处理数据的地址对N取模;取模结果所代表的处理器为保存所述待处理数据的处理器。
本申请还提供了一种多核并行系统,包括:
分配单元,用于将串行化关键区域中的数据按照第一规则分配给所述多核并行系统中的多个处理器保存;
多个处理器;
各所述处理分别包括:
请求单元,用于当需要处理串行化关键区域中的数据且待处理数据不在本处理器上时,根据所述第一规则确定保存待处理数据的处理器,生成串行化关键区域处理请求发送给所确定的处理器;
执行单元,用于当接收到串行化关键区域处理请求时,根据所接收的串行化关键区域处理请求进行处理;处理完成后,将处理结果返回给生成所述串行化关键区域处理请求的处理器。
进一步地,所述串行化关键区域处理请求中包括以下传输参数:
待处理数据的地址,返回地址、及待进行的处理;
所述待进行的处理以串行化关键区域函数的地址表示。
进一步地,所述执行单元将处理结果返回给生成所述串行化关键区域处理请求的处理器是指:
所述执行单元根据所述第一规则确定返回地址所在的处理器;在所确定的处理器的缓存中,根据所述返回地址逐级查找所述返回地址对应的位置;查找到后将处理结果写入所查找到的位置。
进一步地,所述执行单元包括:
转发模块;
中断模块,用于当接收到所述串行化关键区域处理请求时暂停执行本处理器上的线程;
函数执行模块,用于根据所述串行化关键区域处理请求中串行化关键区域函数的地址,执行相应的串行化关键区域函数,完成后将处理结果返回给生成所述串行化关键区域处理请求的处理器,通知所述中断模块恢复执行所暂停的线程;在执行过程中,如果判断执行所需数据不在本处理器上,则通知转发模块;
所述转发模块用于根据所述第一规则确定保存执行所需数据的处理器,将所述串行化关键区域处理请求中的待处理数据的地址修改为执行所需数据的地址后转发给所确定的处理器,通知所述中断模块恢复执行所暂停的线程。
进一步地,所述分配单元将串行化关键区域中的数据按照第一规则分配给多核并行系统中的多个处理器保存是指:
所述分配单元从串行化关键区域中读出数据;对于读出的每条数据,分别用该数据的地址对N取模,N为所述多核并行系统中,用于保存串行化关键区域的数据的处理器的个数;将读出的数据分配给该数据取模结果所代表的处理器;
各所述处理器将所分配的数据保存在本处理器的缓存中;
所述请求单元根据所述第一规则确定保存待处理数据的处理器是指:
所述请求单元用待处理数据的地址对N取模;取模结果所代表的处理器为保存所述待处理数据的处理器。
本申请的至少一个备选方案系统全面地考虑并且利用了共享数据在多核系统中的分布特性,不需要迁移共享数据来完成串行化关键区域的操作,可以减少访问数据延迟,提高了处理速度,避免了处理器核数目或并行程序增加而导致性能降低的问题;本申请的一个优化方案当完成串行化操作时会将结果直接写到发出请求的处理器,减少执行结果导致的缓存缺失,提高了系统的可扩展性;本申请的又一个优化方案将正常情况下必须要串行执行的代码,根据数据分布的特点自适性的转变为动态并行处理,可以减少整体系统的串行化时间,大大提高系统整体效率和可扩展性。另外,本申请可以在不增加新的硬件的情况下实现。当然,实施本申请的任一产品必不一定需要同时达到以上所述的所有优点。
附图说明
图1a为多核并行系统中多个处理器的示意图;
图1b为各处理器的结构示意图;
图2为实施例一的多核并行系统的数据处理方法的流程示意图;
图3为实施例一中例子里处理器之一的流程示意图;
图4为实施例一中例子里处理器之二的流程示意图。
具体实施方式
下面将结合附图及实施例对本申请的技术方案进行更详细的说明。
需要说明的是,如果不冲突,本申请实施例以及实施例中的各个特征可以相互结合,均在本申请的保护范围之内。另外,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在一个典型的配置中,多核并行系统可包括多个处理器(CPU)、一个或多个输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM),快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
实施例一、一种多核并行系统的数据处理方法,如图2所示,包括:
S101、将串行化关键区域中的数据按照第一规则分配给所述多核并行系统中的多个处理器保存;
S102、当所述多个处理器中任一处理器需要处理串行化关键区域中的数据且待处理数据不在本处理器上时,根据所述第一规则确定保存待处理数据的处理器,生成串行化关键区域处理请求发送给所确定的处理器;
S103、接收到所述串行化关键区域处理请求的处理器根据所接收的串行化关键区域处理请求进行处理;处理完成后,将处理结果返回给生成所述串行化关键区域处理请求的处理器。
本实施例根据串行化关键区域中的数据(后文称为共享数据)在多核并行系统各处理器上的分布特性,将处理请求发送给保存共享数据的处理器,避免共享数据的来回传输影响性能。考虑到随着并行程序的增加共享数据将会越来越多,而多数共享数据是一个处理器进行写操作后,其他处理器也仅仅需要读取一次,所以进行实际处理的处理器当串行化关键区域处理结束后,没有必要保留处理结果(该处理结果也是共享数据),而是将处理结果返回给最初生成串行化关键区域处理请求的请求者,从而避免了不必要的数据一致性要求,而且不会在处理者缓存中增加不必要的共享数据,更加有助于性能提升。
本实施例的一种备选方案中,所述步骤S101具体可以包括:
从串行化关键区域中读出数据;
对于读出的每条数据,分别用该数据的地址对N取模,N为所述多核并行系统中,用于保存串行化关键区域的数据的处理器的个数;
将读出的数据分配给该数据取模结果所代表的处理器;
处理器将所分配的数据保存在本处理器的缓存中。
相应地,步骤S102中根据所述第一规则确定保存待处理数据的处理器的步骤具体可以包括:
用待处理数据的地址对N取模;取模结果所代表的处理器为保存所述待处理数据的处理器。
本备选方案中,是将串行化关键区域的数据按照取模公式n=A mod N均匀分配到每个处理器上,保存在每个处理器的LLC或其它级缓存中;这里n为处理器的标号,或其它能唯一指定一处理器的标识,是0至N-1的整数,A为数据的地址。比如图1中N为16,则串行化关键区域的数据分别位于处理器P0至P15上;数据的取模结果为1时,P1就是保存该数据的处理器,依此类推。当处理器Pk(k为0至N-1的整数)做串行化关键区域处理的数据保存在处理器Pn(n≠k)中时,Pn称为拥有者,Pk仅仅将串行化关键区域处理请求发送给处理器Pn,Pn处理后将处理结果写入Pk的缓存。
在其它备选方案中,也可以采用其它的规则来为串行化关键区域的数据分配处理器、及确定待处理数据所在的处理器。
本实施例的一种备选方案中,所述串行化关键区域处理请求中包括以下传输参数:
待处理数据的地址,返回地址、及待进行的处理。
本备选方案中,由于所述串行化关键区域处理请求包含的内容很少,同时由数据拥有者Pn来更快地处理本地数据,所以带来更短的延迟。举例来说处理器P0需要串行化处理的数据来自于P6所对应的LLC上,不需要像现有技术那样让P0将P6的LLC上的共享数据拿到P0本地执行串行化关键区域操作;由于P6为此共享数据的拥有者,仅仅需要P0将串行化关键区域处理请求发送给P6,让P6执行后将处理结果按照所述返回地址写回到P0的缓存中相应位置即可。
本备选方案的一种实施方式中,将处理结果返回给生成所述串行化关键区域处理请求的处理器的步骤具体可以包括:
根据所述第一规则确定返回地址所在的处理器;
在所确定的处理器的缓存中,根据所述返回地址逐级查找所述返回地址对应的位置;
查找到后将处理结果写入所查找到的位置。
生成串行化关键区域处理请求的处理器当检测到该返回地址对应的位置被写入处理结果后就可以开始进行下一步的处理。可以认为,Pn处理串行化关键区域处理请求的过程和Pk处理存在于本处理器Pk上的串行化关键区域数据的过程,除了接收串行化关键区域处理请求的步骤之外,是完全相同的,就好比Pn模仿Pk进行了处理。这样有效地避免了数据迁移及共享数据过多的问题。
本备选方案的一种实施方式中,所述待进行的处理可以但不限于以串行化关键区域函数的地址表示(比如为Serial_Function地址)。
本实施方式中,所述步骤S103具体可以包括:
31、接收到所述串行化关键区域处理请求的处理器暂停执行本处理器上的线程;
32、根据所述串行化关键区域处理请求中串行化关键区域函数的地址,执行相应的串行化关键区域函数;在执行过程中,如果判断执行所需数据不在本处理器上,则进行步骤33;如果在本处理器上,则进行步骤34;
33、根据所述第一规则确定保存执行所需数据的处理器,将所述串行化关键区域处理请求中的待处理数据的地址修改为执行所需数据的地址后,转发给所确定的处理器,继续执行所暂停的线程;接收到所述串行化关键区域处理请求的处理器进行步骤31;
34、执行所述串行化关键区域函数处理本处理器上相应的数据,完成后将处理结果返回给生成所述串行化关键区域处理请求的处理器,恢复执行所暂停的线程。
在执行串行化关键区域函数的过程中,可能不同步骤需要不同的数据,比如第一个数据在本处理器上,而第二个数据不在;此时就需要转发所述串行化关键区域处理请求,并将传输参数里待处理数据的地址修改为该第二个数据的地址。收到所转发的所述串行化关键区域处理请求的处理器也是一样,如果执行过程中发现有的数据不在本处理器上,则修改待处理数据的地址后继续转发,直到串行化关键区域函数执行完毕。由于无论转发多少次,返回地址是不变的,所以最后执行完串行化关键区域函数的处理器可以直接将处理结果写入到最初生成串行化关键区域处理请求的处理器缓存中。当然,所转发到的处理器也有可能是是生成串行化关键区域处理请求的处理器,比如执行到某步骤时所需数据正好属于生成串行化关键区域处理请求的处理器。
可见,原本由一个大处理器串行执行的函数有可能会被分到多个处理器上执行,因此本实施方式是将共享数据串行化操作在一定程度上转变为并行处理,从多核并行系统的整体而言,提高了处理性能。
本实施方式中,所述生成串行化关键区域处理请求的步骤中还可以包括:
将执行串行化关键区域函数所需要的运行参数填写到所述返回地址对应的单元结构之中。
本实施方式中,所有的指令分布会通过部分重复来减少访问的延迟。
本实施方式中,传输参数中待处理数据的地址以指针shared_cirtical_data表示,生成串行化关键区域处理请求的处理器可根据取模公式n=A mod N得到处理器Pn的标号。
传输参数中的返回地址就是函数内容返回的地址,属于生成所述串行化关键区域处理请求的处理器,以指针return_private_data_structure表示;该传输参数的内容结构完全由发出请求者与执行者共同灵活的决定,比如这是一个包含多条记录的结构体。同时这个结构体也可以指示执行串行化关键区域过程中传递的、实时的运行参数的位置,例如发出请求者和执行者可以将串行化关键区域函数的运行参数保存在最后一个返回变量之后的内存中,注意这段内存是属于最初生成请求的处理器,所有执行者在执行的过程中都可能访问这段内存,直到执行结束。当执行结束之后,执行函数的处理器即共享数据(shared_cirtical_data)的拥有者(比如在未转发过串行化关键区域处理请求的情况下为处理器Pn)会将执行的结果写入所述返回地址,执行函数的处理器根据所述取模公式确认此返回地址的拥有者是生成串行化关键区域处理请求的Pk。
本实施方式中,所述串行化关键区域函数可以但不限于为如下形式:
其中的shared_cirtical_data是指向串行化关键区域处理过程中涉及的共享数据的指针;当处理器Pk发出串行化关键区域处理请求时,这块数据为处理器Pk的待处理数据,其拥有者为处理器Pn;如果处理器Pn执行所述串行化关键区域函数的过程中,发现执行到某一步时,执行所需数据不在本处理器上,则转发所述串行化关键区域处理请求给保存执行所需数据的处理器,转发时将shared_cirtical_data修改为指向该执行所需数据的指针。
return_private_data_structure是指向返回地址的指针,此处这块地址的拥有者是生成串行化关键区域处理请求的处理器Pk。
本实施方式的一个具体例子中,处理器Pk处理串行化关键区域的过程如图3所示,包括如下步骤S201~206:
S201、进行函数调用的处理器Pk根据待处理数据的指针shared_cirtical_data、根据公式n=A mod N查看待处理数据的拥有者,如果是本处理器将直接处理并跳到步骤S206,否则继续步骤S202。
S202、如果数据拥有者为处理器Pn(n≠k),则填写串行化关键区域处理请求,将执行串行化关键区域函数所需要的运行参数按照该串行化关键区域函数规定的格式填写到return_private_data_structure对应的单元结构之中,然后将该串行化关键区域处理请求发送到数据拥有者Pn的串行化关键区域的请求队列。
S203、处理器Pk查看本地的串行化关键区域的请求队列,如果队列为空直接跳到步骤S205,否则进行S204。这样可以利用等待的空闲时间优先处理其它处理器的串行化关键区域处理请求,提高整个系统的处理性能;;而且还兼带避免发生“死锁”的好处,比如处理器Pn在处理处理器Pk的串行化关键区域处理请求的过程中,将该请求转发给了处理器Pk(即转发到处理器Pk的串行化关键区域的请求队列),则处理器Pk只有在处理完该转发的请求后,才有可能得到所需的处理结果。
S204、处理器Pk处理请求队列中一个串行化关键区域处理请求后跳回到步骤S203。串行化关键区域请求队列中的请求都是由于当前处理器Pk是数据的拥有者才发送给处理器Pk,所以处理器Pk可以快速处理。
S205、处理器Pk判断是否接收到处理器Pn完整的处理结果,比如返回参数包含的最后一项已经填写完毕,如果没有跳回到步骤S203;如果有则进行步骤S206;
S206、处理器Pk根据处理结果继续执行程序。
多核并行系统中任何一个处理器(包括处理器Pn)如果在处理过程中需要用到其它处理器上的数据,处理过程都同上。
处理器Pn处理过程如图4所示,包括如下步骤S301~304:
处理器发送的串行化关键区域处理请求意味着该请求阻碍对应处理器继续运行串行化关键区域之外的处理工作,所以应该给予更高的优先级别。这种传递方式非常像现有系统中的中断转移,所以完全可以利用现有的硬件设计,处理串行化关键区域请求,硬件逻辑几乎不发生改动。
如果一个处理器本身正在对串行化关键区域进行处理,则该处理器暂时先不处理其它处理器发来的串行化关键区域处理请求;如果该处理器处理过程中由于需要用到其它处理器的数据而发出串行化关键区域处理请求,则在等待处理结果的这段时间中优先处理其它处理器所发来的串行化关键区域处理请求,直到处理完毕请求队列中的串行化关键区域处理请求,再判断处理结果是否已得到。即按照图3所示的处理过程操作。
S301、判断当前串行化关键区域的请求队列是否为空,如果是则程序继续执行,否则暂停本处理器上运行的线程,进入步骤S302。
S302、判断当前执行所需数据的拥有者是否为本处理器;在执行串行化关键区域函数的过程中虽然第一个所需数据的拥有者一定是本处理器,但是接下来所需的数据有可能是保存在非连续的空间(事实上即使连续分配的空间也可能由于映射公式n=A mod N的原因,拥有者为系统中其它处理器),那么在处理的过程中就很有可能发生当前处理器并不是当前执行所需数据的拥有者的情况。
如果不是本处理器,那么仅将shared_cirtical_data换成当前执行所需数据的地址,return_private_data_structure和串行化关键区域处理函数地址内容维持不变,根据公式n=A mod N将串行化关键区域处理请求发送到拥有shared_cirtical_data的处理器,同时将队列减1跳回到步骤S302;如果是本处理器则跳到步骤S303。
如果根据函数的约定,下一次执行该函数时需要访问运行参数,则作为下一次执行主体的处理器会访问return_private_data_structure对应的单元结构中的运行参数。
S303、执行串行化关键区域函数(如果执行时需要运行参数,则从return_private_data_structure对应的位置读取运行参数,然后开始执行)。
S304、当前串行关键区域处理是否处理结束,如果结束则请求队列减1,跳到步骤S301;如果没结束则跳到步骤S302。
多核并行系统中任何一个处理器(包括处理器Pk)如果收到其它处理器发来的串行化关键区域处理请求,处理过程都同上。
实施例二、一种多核并行系统,包括:
分配单元,用于将串行化关键区域中的数据按照第一规则分配给所述多核并行系统中的多个处理器保存;
多个处理器;
各所述处理分别包括:
请求单元,用于当需要处理串行化关键区域中的数据且待处理数据不在本处理器上时,根据所述第一规则确定保存待处理数据的处理器,生成串行化关键区域处理请求发送给所确定的处理器;
执行单元,用于当接收到串行化关键区域处理请求时,根据所接收的串行化关键区域处理请求进行处理;处理完成后,将处理结果返回给生成所述串行化关键区域处理请求的处理器。
本实施例的一种备选方案中,所述串行化关键区域处理请求中可以包括以下传输参数:
待处理数据的地址,返回地址、及待进行的处理。
该备选方案的一种实施方式中,所述待进行的处理以串行化关键区域函数的地址表示。
该备选方案的一种实施方式中,所述执行单元将处理结果返回给生成所述串行化关键区域处理请求的处理器是指:
所述执行单元根据所述第一规则确定返回地址所在的处理器;在所确定的处理器的缓存中,根据所述返回地址逐级查找所述返回地址对应的位置;查找到后将处理结果写入所查找到的位置。
该备选方案的一种实施方式中,所述执行单元具体可以包括:
转发模块;
中断模块,用于当接收到所述串行化关键区域处理请求时暂停执行本处理器上的线程;
函数执行模块,用于根据所述串行化关键区域处理请求中串行化关键区域函数的地址,执行相应的串行化关键区域函数,完成后将处理结果返回给生成所述串行化关键区域处理请求的处理器,通知所述中断模块恢复执行所暂停的线程;在执行过程中,如果判断执行所需数据不在本处理器上,则通知转发模块;
所述转发模块用于根据所述第一规则确定保存执行所需数据的处理器,将所述串行化关键区域处理请求中的待处理数据的地址修改为执行所需数据的地址后转发给所确定的处理器,通知所述中断模块恢复执行所暂停的线程。
该实施方式中,所述请求单元还可以用于在生成所述串行化关键区域处理请求时,将执行串行化关键区域函数所需要的运行参数填写到所述返回地址对应的单元结构之中。
本实施例的一种备选方案中,所述分配单元将串行化关键区域中的数据按照第一规则分配给多核并行系统中的多个处理器保存是指:
所述分配单元从串行化关键区域中读出数据;对于读出的每条数据,分别用该数据的地址对N取模,N为所述多核并行系统中,用于保存串行化关键区域的数据的处理器的个数;将读出的数据分配给该数据取模结果所代表的处理器;
各所述处理器将所分配的数据保存在本处理器的缓存中;
相应地,所述请求单元根据所述第一规则确定保存待处理数据的处理器是指:
所述请求单元用待处理数据的地址对N取模;取模结果所代表的处理器为保存所述待处理数据的处理器。
其它实施细节可参考实施例一。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本申请不限制于任何特定形式的硬件和软件的结合。
当然,本申请还可有其他多种实施例,在不背离本申请精神及其实质的情况下,熟悉本领域的技术人员当可根据本申请作出各种相应的改变和变形,但这些相应的改变和变形都应属于本申请的权利要求的保护范围。
Claims (10)
1.一种多核并行系统的数据处理方法,包括:
将串行化关键区域中的数据按照第一规则分配给所述多核并行系统中的多个处理器保存;
当所述多个处理器中任一处理器需要处理串行化关键区域中的数据且待处理数据不在本处理器上时,根据所述第一规则确定保存待处理数据的处理器,生成串行化关键区域处理请求发送给所确定的处理器;
接收到所述串行化关键区域处理请求的处理器根据所接收的串行化关键区域处理请求进行处理;处理完成后,将处理结果返回给生成所述串行化关键区域处理请求的处理器。
2.如权利要求1所述的方法,其特征在于,所述串行化关键区域处理请求中包括以下传输参数:
待处理数据的地址,返回地址、及待进行的处理;
所述待进行的处理以串行化关键区域函数的地址表示。
3.如权利要求2所述的方法,其特征在于,将处理结果返回给生成所述串行化关键区域处理请求的处理器的步骤包括:
根据所述第一规则确定返回地址所在的处理器;
在所确定的处理器的缓存中,根据所述返回地址逐级查找所述返回地址对应的位置;
查找到后将处理结果写入所查找到的位置。
4.如权利要求2所述的方法,其特征在于,所述接收到所述串行化关键区域处理请求的处理器根据所接收的串行化关键区域处理请求进行处理的步骤包括:
31、接收到所述串行化关键区域处理请求的处理器暂停执行本处理器上的线程;
32、根据所述串行化关键区域处理请求中串行化关键区域函数的地址,执行相应的串行化关键区域函数;在执行过程中,如果判断执行所需数据不在本处理器上,则进行步骤33;如果在本处理器上,则进行步骤34;
33、根据所述第一规则确定保存执行所需数据的处理器,将所述串行化关键区域处理请求中的待处理数据的地址修改为执行所需数据的地址后,转发给所确定的处理器,继续执行所暂停的线程;接收到所述串行化关键区域处理请求的处理器进行步骤31;
34、执行所述串行化关键区域函数处理本处理器上相应的数据,完成后将处理结果返回给生成所述串行化关键区域处理请求的处理器,恢复执行所暂停的线程。
5.如权利要求1到4中任一项所述的方法,其特征在于,所述将串行化关键区域中的数据按照第一规则分配给多核并行系统中的多个处理器保存的步骤包括:
从串行化关键区域中读出数据;
对于读出的每条数据,分别用该数据的地址对N取模,N为所述多核并行系统中,用于保存串行化关键区域的数据的处理器的个数;
将读出的数据分配给该数据取模结果所代表的处理器;
处理器将所分配的数据保存在本处理器的缓存中;
所述根据所述第一规则确定保存待处理数据的处理器的步骤包括:
用待处理数据的地址对N取模;取模结果所代表的处理器为保存所述待处理数据的处理器。
6.一种多核并行系统,其特征在于,包括:
分配单元,用于将串行化关键区域中的数据按照第一规则分配给所述多核并行系统中的多个处理器保存;
多个处理器;
各所述处理分别包括:
请求单元,用于当需要处理串行化关键区域中的数据且待处理数据不在本处理器上时,根据所述第一规则确定保存待处理数据的处理器,生成串行化关键区域处理请求发送给所确定的处理器;
执行单元,用于当接收到串行化关键区域处理请求时,根据所接收的串行化关键区域处理请求进行处理;处理完成后,将处理结果返回给生成所述串行化关键区域处理请求的处理器。
7.如权利要求6所述的系统,其特征在于,所述串行化关键区域处理请求中包括以下传输参数:
待处理数据的地址,返回地址、及待进行的处理;
所述待进行的处理以串行化关键区域函数的地址表示。
8.如权利要求7所述的系统,其特征在于,所述执行单元将处理结果返回给生成所述串行化关键区域处理请求的处理器是指:
所述执行单元根据所述第一规则确定返回地址所在的处理器;在所确定的处理器的缓存中,根据所述返回地址逐级查找所述返回地址对应的位置;查找到后将处理结果写入所查找到的位置。
9.如权利要求7所述的系统,其特征在于,所述执行单元包括:
转发模块;
中断模块,用于当接收到所述串行化关键区域处理请求时暂停执行本处理器上的线程;
函数执行模块,用于根据所述串行化关键区域处理请求中串行化关键区域函数的地址,执行相应的串行化关键区域函数,完成后将处理结果返回给生成所述串行化关键区域处理请求的处理器,通知所述中断模块恢复执行所暂停的线程;在执行过程中,如果判断执行所需数据不在本处理器上,则通知转发模块;
所述转发模块用于根据所述第一规则确定保存执行所需数据的处理器,将所述串行化关键区域处理请求中的待处理数据的地址修改为执行所需数据的地址后转发给所确定的处理器,通知所述中断模块恢复执行所暂停的线程。
10.如权利要求6到9中任一项所述的系统,其特征在于,所述分配单元将串行化关键区域中的数据按照第一规则分配给多核并行系统中的多个处理器保存是指:
所述分配单元从串行化关键区域中读出数据;对于读出的每条数据,分别用该数据的地址对N取模,N为所述多核并行系统中,用于保存串行化关键区域的数据的处理器的个数;将读出的数据分配给该数据取模结果所代表的处理器;
各所述处理器将所分配的数据保存在本处理器的缓存中;
所述请求单元根据所述第一规则确定保存待处理数据的处理器是指:
所述请求单元用待处理数据的地址对N取模;取模结果所代表的处理器为保存所述待处理数据的处理器。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310219732.5A CN104216684B (zh) | 2013-06-04 | 2013-06-04 | 一种多核并行系统及其数据处理方法 |
HK15103209.4A HK1202676A1 (zh) | 2013-06-04 | 2015-03-31 | 種多核並行系統及其數據處理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310219732.5A CN104216684B (zh) | 2013-06-04 | 2013-06-04 | 一种多核并行系统及其数据处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104216684A true CN104216684A (zh) | 2014-12-17 |
CN104216684B CN104216684B (zh) | 2017-05-31 |
Family
ID=52098224
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310219732.5A Active CN104216684B (zh) | 2013-06-04 | 2013-06-04 | 一种多核并行系统及其数据处理方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN104216684B (zh) |
HK (1) | HK1202676A1 (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017129022A1 (zh) * | 2016-01-30 | 2017-08-03 | 华为技术有限公司 | 一种终端数据库的并行执行方法和装置 |
CN108170526A (zh) * | 2017-12-06 | 2018-06-15 | 北京像素软件科技股份有限公司 | 负载能力优化方法、装置、服务器及可读存储介质 |
CN108549583A (zh) * | 2018-04-17 | 2018-09-18 | 成都致云科技有限公司 | 大数据处理方法、装置、服务器及可读存储介质 |
CN109614220A (zh) * | 2018-10-26 | 2019-04-12 | 阿里巴巴集团控股有限公司 | 一种多核系统处理器和数据更新方法 |
CN110032407A (zh) * | 2019-03-08 | 2019-07-19 | 阿里巴巴集团控股有限公司 | 提升cpu并行性能的方法及装置和电子设备 |
CN113836209A (zh) * | 2021-09-02 | 2021-12-24 | 深圳市道通智能汽车有限公司 | 多核处理器的共享资源访问方法、处理器及多核系统 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005124549A1 (ja) * | 2004-06-15 | 2005-12-29 | Sony Computer Entertainment Inc. | 処理管理装置、コンピュータ・システム、分散処理方法及びコンピュータプログラム |
CN101065732A (zh) * | 2004-11-26 | 2007-10-31 | 富士通株式会社 | 计算机系统和信息处理方法 |
CN101639769A (zh) * | 2008-07-30 | 2010-02-03 | 国际商业机器公司 | 在多处理器系统上对数据集进行划分及排序的方法和装置 |
CN101826003A (zh) * | 2010-04-16 | 2010-09-08 | 中兴通讯股份有限公司 | 多线程处理方法和装置 |
CN101937331A (zh) * | 2009-06-26 | 2011-01-05 | 英特尔公司 | 自适应处理远程原子执行 |
US20110161943A1 (en) * | 2009-12-30 | 2011-06-30 | Ibm Corporation | Method to dynamically distribute a multi-dimensional work set across a multi-core system |
CN102129394A (zh) * | 2010-01-14 | 2011-07-20 | 优必达科技有限公司 | 分布式计算方法及系统 |
WO2011134875A1 (en) * | 2010-04-30 | 2011-11-03 | International Business Machines Corporation | Data center operation |
CN102393839A (zh) * | 2011-11-30 | 2012-03-28 | 中国工商银行股份有限公司 | 并行数据处理系统及方法 |
-
2013
- 2013-06-04 CN CN201310219732.5A patent/CN104216684B/zh active Active
-
2015
- 2015-03-31 HK HK15103209.4A patent/HK1202676A1/zh unknown
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005124549A1 (ja) * | 2004-06-15 | 2005-12-29 | Sony Computer Entertainment Inc. | 処理管理装置、コンピュータ・システム、分散処理方法及びコンピュータプログラム |
CN101065732A (zh) * | 2004-11-26 | 2007-10-31 | 富士通株式会社 | 计算机系统和信息处理方法 |
CN101639769A (zh) * | 2008-07-30 | 2010-02-03 | 国际商业机器公司 | 在多处理器系统上对数据集进行划分及排序的方法和装置 |
CN101937331A (zh) * | 2009-06-26 | 2011-01-05 | 英特尔公司 | 自适应处理远程原子执行 |
US20110161943A1 (en) * | 2009-12-30 | 2011-06-30 | Ibm Corporation | Method to dynamically distribute a multi-dimensional work set across a multi-core system |
CN102129394A (zh) * | 2010-01-14 | 2011-07-20 | 优必达科技有限公司 | 分布式计算方法及系统 |
CN101826003A (zh) * | 2010-04-16 | 2010-09-08 | 中兴通讯股份有限公司 | 多线程处理方法和装置 |
WO2011134875A1 (en) * | 2010-04-30 | 2011-11-03 | International Business Machines Corporation | Data center operation |
CN102393839A (zh) * | 2011-11-30 | 2012-03-28 | 中国工商银行股份有限公司 | 并行数据处理系统及方法 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10884817B2 (en) | 2016-01-30 | 2021-01-05 | Huawei Technologies Co., Ltd. | Method and apparatus for parallel execution in terminal database using data partitions |
CN107025225A (zh) * | 2016-01-30 | 2017-08-08 | 华为技术有限公司 | 一种终端数据库的并行执行方法和装置 |
WO2017129022A1 (zh) * | 2016-01-30 | 2017-08-03 | 华为技术有限公司 | 一种终端数据库的并行执行方法和装置 |
CN107025225B (zh) * | 2016-01-30 | 2018-12-14 | 华为技术有限公司 | 一种终端数据库的并行执行方法和装置 |
CN108170526A (zh) * | 2017-12-06 | 2018-06-15 | 北京像素软件科技股份有限公司 | 负载能力优化方法、装置、服务器及可读存储介质 |
CN108549583A (zh) * | 2018-04-17 | 2018-09-18 | 成都致云科技有限公司 | 大数据处理方法、装置、服务器及可读存储介质 |
CN108549583B (zh) * | 2018-04-17 | 2021-05-07 | 致云科技有限公司 | 大数据处理方法、装置、服务器及可读存储介质 |
CN109614220B (zh) * | 2018-10-26 | 2020-06-30 | 阿里巴巴集团控股有限公司 | 一种多核系统处理器和数据更新方法 |
CN109614220A (zh) * | 2018-10-26 | 2019-04-12 | 阿里巴巴集团控股有限公司 | 一种多核系统处理器和数据更新方法 |
US11106795B2 (en) | 2018-10-26 | 2021-08-31 | Advanced New Technologies Co., Ltd. | Method and apparatus for updating shared data in a multi-core processor environment |
CN110032407A (zh) * | 2019-03-08 | 2019-07-19 | 阿里巴巴集团控股有限公司 | 提升cpu并行性能的方法及装置和电子设备 |
CN110032407B (zh) * | 2019-03-08 | 2020-12-22 | 创新先进技术有限公司 | 提升cpu并行性能的方法及装置和电子设备 |
US11080094B2 (en) | 2019-03-08 | 2021-08-03 | Advanced New Technologies Co., Ltd. | Method, apparatus, and electronic device for improving parallel performance of CPU |
CN113836209A (zh) * | 2021-09-02 | 2021-12-24 | 深圳市道通智能汽车有限公司 | 多核处理器的共享资源访问方法、处理器及多核系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104216684B (zh) | 2017-05-31 |
HK1202676A1 (zh) | 2015-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6314355B2 (ja) | メモリ管理方法およびデバイス | |
US10114749B2 (en) | Cache memory system and method for accessing cache line | |
CN1717645B (zh) | 用于多线程处理器性能控制的装置和方法 | |
CN104216684A (zh) | 一种多核并行系统及其数据处理方法 | |
TWI531974B (zh) | 管理巢狀執行串流的方法和系統 | |
KR20120123127A (ko) | 이종 플랫폼에서 포인터를 공유시키는 방법 및 장치 | |
CN110187832B (zh) | 一种数据操作的方法、设备和系统 | |
US20160004654A1 (en) | System for migrating stash transactions | |
CN114942831A (zh) | 处理器、芯片、电子设备及数据处理方法 | |
US20110320722A1 (en) | Management of multipurpose command queues in a multilevel cache hierarchy | |
WO2024036985A1 (zh) | 存储系统及其计算存储处理器、固体硬盘和数据读写方法 | |
CN105045729A (zh) | 一种远端代理带目录的缓存一致性处理方法与系统 | |
JP2012043031A (ja) | 共有キャッシュメモリ装置 | |
CN114328315A (zh) | 基于dma的数据预处理方法、dma部件及芯片结构 | |
US8656120B2 (en) | Device, method and computer-readable medium relocating remote procedure call data in heterogeneous multiprocessor system on chip | |
US11429299B2 (en) | System and method for managing conversion of low-locality data into high-locality data | |
CN105103138B (zh) | 用于实时应用的嵌入式存储器管理方案 | |
CN102023845A (zh) | 一种基于状态机的Cache并发访问管理方法 | |
CN110119245A (zh) | 用于操作nand闪存物理空间以扩展存储器容量的方法和系统 | |
CN108563507A (zh) | 一种内存管理方法、装置、设备及可读存储介质 | |
TWI760756B (zh) | 共用代碼之系統與代碼共用方法 | |
US11275589B2 (en) | Method for managing the supply of information, such as instructions, to a microprocessor, and a corresponding system | |
US9703599B2 (en) | Assignment control method, system, and recording medium | |
US9305036B2 (en) | Data set management using transient data structures | |
CN110659118B (zh) | 一种用于多领域芯片设计的可配置混合异构计算核心系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1202676 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: GR Ref document number: 1202676 Country of ref document: HK |