一种面向众核处理器的全局感知数据主动预取方法及系统
技术领域
本发明涉及数据预取技术领域,具体而言,涉及一种面向众核处理器的全局感知数据主动预取方法及系统。
背景技术
“存储墙”问题一直是影响计算机效能的挑战性问题。随着处理器体系结构技术的发展,处理器和存储器的速度差异不断的增大,同时大规模众核技术使得存储瓶颈更加严重。随着网络服务、人工智能及物联网等技术的迅猛发展,数据中心的并发用户数量从千万级发展到亿级规模,数据规模从目前的10PB(1016B)增加到海量的EB(1018B)级。这种由互联网发展带来的新型应用(以下称为高通量应用)已经成为数据中心的主要负载,其特征也从传统的浮点计算变成处理大量高并发的用户服务请求以及海量数据分析,强调任务的高并发、用户服务请求的强实时以及数据的高吞吐的处理能力。众核处理器因其具有高并发处理能力、高能效比等特点,成为数据中心处理器设计的主要选择。
随着数据中心处理的数据量的激增,处理器结构的访存数据通路的设计变得越来越关键。传统的Cache结构已无法满足高并发、高通量数据处理的需求。预取技术是提高处理器访存请求效率的重要方式,目前的处理器几乎都采用了各种各样的预取技术。预取技术通过提前从内存读取将来可能使用的数据降低内存时延对处理器执行的影响,是一种被广泛应用的提升处理器性能的技术。预取技术分为软件预取和硬件预取。软件预取为编程人员和编译器通过插入软件预取指令来实现数据预取,比较有代表性的工作有,D.Callahan等人发表在ASPLOS’91会议上的成果提出了在程序的循环中执行静态插入预取操作,通过在程序中对即将要用到的数据进行提前的预读,实现数据从主存到Cache中,提高读取效率;Y.Wu等人在CC’02会议以及M.Khan等人在PACT’15会议上发表的成果提出在程序运行过程中通过预测或者使用软件工具的方法实现预取,实现边执行边预测预取的操作;J.Garside等人在RTNS'14会议发表成果分析了预取机制对WCET模型的影响并提出了优化解决方案;Huaiyu Zhu等人在ICS’10会议上发表的成果则考虑数据预取时机的合理性。硬件预取所能处理的数据访问模式比较固定,例如英特尔V.Viswanathan等人以及TaesuKim等人在CF’14会议上提出的按照访问数据的stride机械地预取数据;随着研究的深入也出现了更为智能化的硬件预取控制方式,例如Saami Rahman等人在HPCC’15上提出的利用机器学习算法控制硬件逻辑执行预取。随着处理器芯片核数越来越多,数据预取的公平性、合理性、实时性变得越来越重要。例如Jiyang Yu等人在ICCD’14上发表的通过预测线程之间的共享数据以及根据预取的反馈信息自动调节数据预取的控制;Chia-Jung Chang等人在VLSI-DAT’15会议上提出的AGP策略,通过调节粗细粒度的预取以及调节预取的深度,减少处理器核之间的干扰;Junghoon Lee等人在MICRO’11会议上发表的论文通过在片上网络对结合预取感知的路由器设计和拥塞敏感的预取控制提高预取的性能;Eiman Ebrahimi等人从多核处理器的全局性能考虑,在MICRO’09上发表了研究成果,结合局部单核和全局多核的反馈信息最大化系统的执行性能。
然而,随着数据中心高并发、高数据通路的需求,单芯片的计算核心会逐渐增多,简单不合时宜的预取技术会引发众核之间的严重相互干扰。目前的预取策略在高通量应用带来的高并发任务中并不适用,大量的存储共享会造成预取的混乱和低效,甚至造成预取比不预取性能更差的现象。
实践证明,华为和百度的典型高通量应用负载对系统实际带宽利用率低于5%,然而其数据中心的处理器流水线的执行部件的利用率却并不高,实验证明,在除去指令取值的延迟造成的处理器流水线暂停之外,数据的供给仍然是造成处理器利用率较低的主要原因,也就是一直困扰冯诺依曼体系结构的瓶颈问题—“存储墙”。
总体来说,在目前的体系结构上,处理端想要的数据与存储器主动供给的数据并不匹配,导致处理效率低下,另外,较低的带宽利用率也恰好给数据的预取提供了发挥的空间。
发明内容
本发明提供一种面向众核处理器的全局感知数据主动预取方法及系统,用以保证数据渗透的公平性、均衡性以及实时性等。
为达到上述目的,本发明提供了一种面向众核处理器的全局感知数据主动预取方法,该方法用于将一处理端需要的数据从一存储端预取出来并通过一传输端将预取出的数据传输至所述处理端,该方法在存储端设置有一需求信息表,所述需求信息表具有多个信息条目,每一信息条目分别记录有一线程的线程号num、该线程中正在执行的任务的优先级VPriority以及该线程中的任务在最近时间T内的访存频率Vmemory,该方法在存储端设置一渗透决策器,所述渗透决策器包括一忙闲感知单元、一决策计算单元以及一渗透执行单元,其中,所述忙闲感知单元与访存存储器端口及/或总线的忙闲端口连接,以实时侦测访存存储器端口及/或总线的忙闲端口的忙闲状态,所述决策计算单元用于根据每一任务的优先级VPriority、访存频率Vmemory以及预设的优先级权值m和访存频率权值n决定是否对任务进行数据渗透操作,所述渗透执行单元用于根据所述决策计算单元的命令执行数据渗透操作,该方法包括以下步骤:
S1:设置一精灵线程,所述精灵线程用于实时收集众核处理器中的多个核上执行的多个任务的实时性需求;
S2:所述精灵线程根据每一任务的实时性需求得出其相应的优先级并反馈给每个任务;
S3:每个任务将其对应的优先级添加至其发送的数据请求包中;
S4:所述数据请求包经过所述传输端而被发送至所述存储端;
S5:所述需求信息表读取所述数据请求包中的信息并更新相应的信息条目中的线程号以及优先级;
S6:每一信息条目根据对应的线程中的任务在最近时间T内的访存次数更新Vmemory;
S7:所述决策计算单元读取所述需求信息表中的数据并根据以下公式计算每一线程中正在执行的任务对应的决策值P:
P=m×VPriority+n×Vmemory
S8:当所述忙闲感知单元侦测到访存存储器端口及/或总线的忙闲端口处于空闲状态时,所述渗透执行单元根据决策值P执行数据渗透操作。
在本发明的一实施例中,任务的实时性需求包括任务预先被设置的优先级以及任务距离必须结束时间点的时间。
在本发明的一实施例中,每个任务发送的数据请求包的包头包含一优先级信息域,其中记录有任务的优先级。
在本发明的一实施例中,于该方法中进一步设置有一访存频率累计单元,用于累计每一线程中的任务在最近的时间T内的访存频率并将其实时更新至所述需求信息表。
在本发明的一实施例中,所述渗透执行单元执行数据渗透操作的机制为:所述渗透执行单元根据每一线程中正在执行的任务对应的决策值P由大至小的顺序依次对每一任务执行数据渗透。
在本发明的一实施例中,所述渗透执行单元执行数据渗透操作的机制为:所述渗透执行单元根据“决策值P/所有决策值之和”的比例对每一线程分配相应的时间以进行数据渗透。
本发明还提供了一种面向众核处理器的全局感知数据主动预取系统,该系统用于执行上述面向众核处理器的全局感知数据主动预取方法。
本发明提供的面向众核处理器的全局感知数据主动预取方法和系统适用于面向数据中心大规模众核处理器结构的数据预取,通过收集系统全局的访存需求并且结合任务服务质量的需求,利用带宽传输空隙,由存储器向处理器主动渗透数据,从而有效提高处理器整体的执行效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例的面向众核处理器的全局感知数据主动预取系统示意图;
图2为数据请求包的示意图;
图3为需求信息表示意图;
图4为渗透决策器示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明一实施例的面向众核处理器的全局感知数据主动预取系统示意图,本发明提供的面向众核处理器的全局感知数据主动预取方法通过图1所示的系统而执行,图1中的实线箭头为传统的数据访存路线,虚线箭头为本发明采用的预取方法中控制信号和预取数据的传输路线,如图1所示,本发明提供的面向众核处理器的全局感知数据主动预取方法用于将一处理端需要的数据从一存储端预取出来并通过一传输端将预取出的数据传输至处理端,其中,处理端为众核处理器中的处理核的集合,存储端可以为主存储器、多个核共享的片上存储器Cache或SPM等,传输端可以为Mesh片上网络或其他总线形式的连接网络。
如图1所示,本发明提供的面向众核处理器的全局感知数据主动预取方法在存储端设置有一需求信息表,如图3所示为需求信息表示意图,需求信息表具有多个信息条目,每一信息条目分别记录有一线程的线程号num、该线程中正在执行的任务的优先级VPriority以及该线程中的任务在最近时间T内的访存频率Vmemory,于该方法中还可以进一步设置有一访存频率累计单元,用于累计每一线程中的任务在最近的时间T内的访存频率并将其实时更新至需求信息表。另外,该方法在存储端设置一渗透决策器,如图4为渗透决策器示意图,渗透决策器包括一忙闲感知单元、一决策计算单元以及一渗透执行单元,其中,忙闲感知单元与访存存储器端口及/或总线的忙闲端口连接,以实时侦测访存存储器端口及/或总线的忙闲端口的忙闲状态,决策计算单元用于根据每一任务的优先级VPriority、访存频率Vmemory以及预设的优先级权值m和访存频率权值n决定是否对任务进行数据渗透操作,渗透执行单元用于根据决策计算单元的命令执行数据渗透操作,该方法包括以下步骤:
S1:设置一精灵线程,如图1所示,精灵线程用于实时收集众核处理器中的多个核上执行的多个任务的实时性需求;
其中,任务的实时性需求例如可以包括任务预先被设置的优先级以及任务距离必须结束时间点的时间,一般而言,面向用户服务的应用的任务都会有一个响应时限,即在一定的时间内必须完成任务,并将结果反馈给用户,否则这个任务失败,随着时间的推移,任务的执行程度的不同也会导致任务的优先级也会不断改变,因而每一任务在不同的时间均有着一定的实时性需求。
S2:精灵线程根据每一任务的实时性需求得出其相应的优先级并反馈给每个任务;
如图1所示,任务的优先级分为5级,分别用数字1~5表示任务的优先级VPriority,其中“5”对应优先级最高的任务,“1”对应优先级最低的任务。
S3:每个任务将其对应的优先级添加至其发送的数据请求包中,如图2所示为数据请求包的示意图,每个任务发送的数据请求包的包头包含一优先级信息域,其中记录有任务的优先级,也即,优先级信息域中写入有于任务优先级对应的数字1~5;
S4:数据请求包经过传输端而被发送至存储端;
S5:需求信息表读取数据请求包中的信息并更新相应的信息条目中的线程号以及优先级;
其中,若该数据请求包对应的线程为首次执行,则在需求信息表中新建一个信息条目以对该线程进行记录,若该数据请求包对应的线程不是首次执行,则从需求信息表中的已有的条目中选择其对应的线程(依据线程号选择)并更新对应的优先级。
S6:每一信息条目根据对应的线程中的任务在最近时间T内的访存次数更新Vmemory;
S7:决策计算单元读取需求信息表中的数据并根据以下公式计算每一线程中正在执行的任务对应的决策值P:
P=m×VPriority+n×Vmemory
本发明中可以令m介于0~1之间,n也介于0~1之间,以便于计算P的值。
通常来说,任务的执行主要体现在两方面:一方面,任务的计算访存比。计算访存比小代表着任务运行时需要更多的访存请求,因此访存请求对任务执行的影响较大;另一方面,任务的优先级,优先级代表着任务执行的裕度时间的多少,一般来说,任务的裕度时间越少代表着任务越紧急,越需要更多的资源保障任务的成功率。因此,本发明以这两个维度为考量因素,在决策计算单元中进行权衡控制。
S8:当忙闲感知单元侦测到访存存储器端口及/或总线的忙闲端口处于空闲状态时,渗透执行单元根据决策值P执行数据渗透操作。
数据渗透操作能够将预取的数据被传输至片上存储设备,例如LLC或者SPM等。通过S8步骤,能够在存储端口(访存带宽)空闲时执行对存储器的数据读取和传输动作,从而降低对正常存储器访问的干扰。实验证明,华为和百度的典型高通量应用负载对系统实际带宽利用率低于5%,即使是在大规模的众核并发访存模式下,或是片上网络传输拥塞的原因,或是存储器供数能力的原因,带宽的利用率仍然不会饱和,因此会有大量的空闲带宽供决策器用于数据渗透。
本发明通过处理端和存储端的联合控制,可以更为合理的为更多的高并发任务实现预取操作,基于任务实时性需求之上,减少任务之间的相互干扰,保证处理器的高并发处理任务的成功率。
在本发明的一实施例中,渗透执行单元执行数据渗透操作的机制例如可以为:渗透执行单元根据每一线程中正在执行的任务对应的决策值P由大至小的顺序依次对每一任务执行数据渗透。这种数据渗透机制下,能够综合任务优先级以及访存频率两个因素而对数据渗透操作要求最高的任务先进行数据渗透。
在本发明的一实施例中,渗透执行单元执行数据渗透操作的机制例如可以为:渗透执行单元根据“决策值P/所有决策值之和”的比例对每一线程分配相应的时间以进行数据渗透。这种数据渗透机制下,由于每一具有渗透需求的任务均占用一定的时间进行数据渗透,因而数据渗透操作要求高的任务不一定能够最先完成数据渗透,同时能够保证所有有数据渗透需求的任务均有机会进行数据渗透以提高任务执行效率。
在本发明的一实施例中,如果一任务的优先级非常高,为了保证此任务的执行的成功率,也可考虑和其它访存操作竞争访存端口和访存总线,以尽快执行数据渗透,保证任务的成功率。
除了上述渗透机制外,本发明还可以在任务生成请求数据包时按照任务的执行目的和任务执行时间等对其进行分类,并根据任务所属类别的不同执行个性化的数据渗透策略。
本发明中的需求信息表例如可以设置在存储端的寄存器堆或RAM中,其大小可以根据实施时核的数量以及处理器能够同时处理的任务并发度确定。
于本发明中,T例如可以为1000个时钟周期,也可以由用户根据实际的数据渗透需要将T设置为其他时间数值。
本发明提供的面向众核处理器的全局感知数据主动预取方法及系统适用于面向数据中心大规模众核处理器结构的数据预取,通过收集系统全局的访存需求并且结合任务服务质量的需求,利用带宽传输空隙,由存储器向处理器主动渗透数据,从而有效提高处理器整体的执行效率。
本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域普通技术人员可以理解:实施例中的装置中的模块可以按照实施例描述分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。