一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种多核架构下实现快速计算与快速同步的方法与流程

2022-06-05 13:36:37 来源:中国专利 TAG:


1.本发明属于多核处理器领域,具体涉及一种多核架构下实现快速计算与快速同步的方法。


背景技术:

2.半导体技术进入后摩尔时代,芯片工艺提升速度放慢,处理器的频率提升幅度越来越小,由于功耗限制,处理器的频率也不能运行太高。所以靠单核提升性能越来越难,多核架构应运而生。现实生活中的大部分任务是可以互相不相关地并行运行的,我们称这种任务叫无状态任务,多核架构很好的解决了无状态任务的并行处理(stateless task)。但也有一些任务是前后相关的,比如报文的流量统计,上下文的更新,多核之间的原子操作等,即需要多个处理器实时通信,协同处理,这类任务我们称为有状态任务(stateful task)。
3.比如:网络发展迅速,网络带宽越来越高,网络协议越来越复杂,网络协议处理需要可编程处理,常常使用多核架构并行处理各个网络报文,但有些流量统计、spin lock等操作,必须是原子操作,即是串行执行并需要快速同步计算结算结果给各个处理器核;目前的多核架构大多数都是多个核通过ring总线,或crossbar总线互联地连接到一个统一的原子计算单元,各个核把原子计算指令通过总线串行传输给原子计算单元,原子计算单元计算完毕后,再通过总线串行回传计算结果给各个处理器核;由于总线是串行的,且总线位宽大,总裁节点多,一些简单的原子运算就会造成带宽浪费,延时也不确定,性能也难以满足需求。
4.多核通过ring总线访问原子操作单元,如图1所示。
5.多核通过星型互连的crossbar总线访问原子计算单元,如图2所示。
6.无论是ring总线,还是crossbar总线连接原子计算模块,原子计算模块的出口和入口都只有一个,这是因为这个总线不仅是用来传输计算命令,还用来传输数据用,由于总线要传输报文数据或api数据,所以总线很宽,原子计算模块的入口和出口不便于做成多套,否则芯片布局布线难以成功。多个处理器核的计算命令都是通过唯一的入口传给原子计算模块,原子计算模块通过唯一出口回传结果给各个处理器核。原子计算模块的唯一入口和唯一出口就成为了性能瓶颈。
7.当前通用技术的多核原子操作流程如图3所示。
8.所以,现有的技术有以下缺点:
9.原子计算的命令是通过传输数据的总线传输的,传输数据的总线太宽,造成带宽浪费;
10.原子计算的命令是通过传输数据的总线传输的,有多个仲裁节点,造成传输延时不确定性,即处理器不知道这个原子操作什么时候结束并还回结果,不利于处理器核做流水线处理,大大降低了处理器的处理效率。由于不确定原子操作何时还回,所以处理器就有一些等待指令的操作,即每个cycle执行的有效指令数量会大大降低;
11.由于原子计算模块的出口和入口单一,只能串行执行总线传来的命令,造成原子计算模块的处理效率低下。


技术实现要素:

12.(一)要解决的技术问题
13.本发明要解决的技术问题是如何提供一种多核架构下实现快速计算与快速同步的方法,以解决多核架构下的原子计算造成的处理器效率过低的问题。
14.(二)技术方案
15.为了解决上述技术问题,本发明提出一种多核架构下实现快速计算与快速同步的方法,该方法包括硬件改进和软件改进,
16.硬件上:
17.原子计算指令总线和其他传输数据的总线分离;
18.原子计算模块和每个处理器都有一个入口和一个出口,各个处理器的原子计算操作的延时不受其他处理器影响;
19.软件上:原子计算操作包括全局统计操作、原子锁操作和全局变量操作;
20.全局统计操作:每个处理器处理的报文的字节数量都通过原子计算模块累加到某个全局计数器里,原子计算模块将累加结果返回每个处理器,使每个处理器知道累加当前报文后的全局计数器的最新值;
21.原子锁操作:多个处理器同一个cycle可能抢同一个spin lock,原子计算模块需在同一个时刻完成原子锁的分配和信息还回;
22.全局变量操作:多个处理器需同时修改同一个变量的不同域,原子计算模块需要合并这些操作,并向各处理器还回这个变量最新值。
23.进一步地,原子计算指令总线位宽控制在16位宽,在一个时钟周期合并几十~几百个处理器的原子计算,并同时返回各个处理器的原子计算结果。
24.进一步地,单个处理器并发多个命令,多个命令的计算结果采用时分复用方式写入寄存器里。
25.进一步地,原子计算操作的延时在8个时钟周期左右。
26.进一步地,处理器和原子计算模块采用原子计算指令总线直接相连的方式,总线上没有仲裁节点。
27.进一步地,每个处理器的原子操作都走原子计算指令总线,原子计算模块在同一个时钟周期合并处理多个处理器的原子操作请求。
28.进一步地,当多核数量达到100个以上时,且原子操作不是加减运算时,原子操作的位宽设计为32bit位宽。
29.进一步地,每一个时钟周期,每个处理器都有可能发出这三类操作,原子计算模块需要合并多路输入,在一个cycle里,或者在多个cycle里以流水线处理方式还回结果给各个处理器。
30.进一步地,原子计算模块线速处理每个处理器的请求命令,并在固定时间点还回结果给各个处理器,即每个时钟周期都能输出原子计算结果给各个处理器。
31.进一步地,所述全局变量操作中,如果多个核在同一个时刻操作同一个变量的同
一个域,操作的结果就是多个处理器请求的合并处理的结果。
32.(三)有益效果
33.本发明提出一种多核架构下实现快速计算与快速同步的方法,本专利利用原子操作专用总线,实现了原子操作的延时固定(一般为8个时钟周期左右),大大提升了处理器的原子操作效率,提升了多个处理器之间的快速计算和计算结果的快速同步。
附图说明
34.图1为多核通过ring总线访问原子操作单元示意图;
35.图2为多核通过星型互连的crossbar总线访问原子计算单元示意图;
36.图3为通用技术的多核原子操作流程示意图;
37.图4为本发明处理器和原子计算模块直连总线示意图;
38.图5为本发明处理器处理数据的框图;
39.图6为本发明全局统计模块的处理流程示意图;
40.图7为本发明全局spin lock处理流程图示意图;
41.图8为本发明全局变量更新处理流程图示意图。
具体实施方式
42.为使本发明的目的、内容和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
43.本发明的目的就是要解决多核架构下的原子计算造成的处理器效率过低的问题。
44.本发明主要解决了以下四个难点问题:
45.解决原子计算的总线带宽浪费问题;
46.解决原子计算的总线延时和计算延时不固定问题;
47.解决原子计算模块的出口入口带宽瓶颈问题;
48.解决原子计算模块的计算瓶颈问题。
49.本发明包括硬件改进和软件改进,本发明的硬件实现如下:
50.硬件上实现原子计算指令总线和其他传输数据的总线分离。
51.原子计算模块和每个处理器都有一个入口和一个出口,各个处理器的原子计算操作的延时不受其他处理器影响。
52.在一个时钟周期合并几十~几百个处理器的原子计算。原子计算指令总线位宽小,比如一般控制在16bi t位宽,这种位宽从硬件设计上容易实现一个时钟周期合并几十~几百个处理器的原子计算,并同时返回各个处理器的原子计算结果。
53.由于原子计算的延时固定,单个处理器可以并发多个命令,多个命令的计算结果采用时分复用方式写入寄存器里。避免了复杂的仲裁逻辑。
54.原子计算操作的延时固定,一般在8个时钟周期左右,比起传统的原子操作的延时快10倍以上。
55.本发明的软件实现如下:
56.原子计算操作包括原子锁操作、全局统计操作、全局变量操作。
57.为解决原子计算的总线带宽浪费问题:原子计算指令总线和传输数据的总线分
离,原子计算指令总线位宽小,不占用数据总线,不会浪费数据总线的带宽;
58.为解决原子计算的总线延时和计算延时不固定问题:原子计算指令总线位宽小,处理器和原子计算模块采用原子计算指令总线直接相连的方式,总线上没有仲裁节点,总线延时和原子计算延时都是固定的;每个处理器的原子操作都走专有总线,原子计算模块可以在同一个时钟周期合并处理多个处理器的原子操作请求,计算延时也是固定的;
59.为解决原子计算模块的出口入口带宽问题:原子计算指令总线位宽小,处理器可以和原子计算模块采用直接相连的方式,原子计算模块和每个处理器都有一个入口和一个出口,不在存在出口和入口的带宽瓶颈问题;
60.为解决原子计算模块的多路合并计算问题:原子计算指令总线位宽小,处理器可以和原子计算模块采用直接相连的方式,原子计算模块和每个处理器都有一个入口和一个出口,对于原子计算指令总线的位宽小于等于16bi t的情况,原子计算模块可以同时连接上百个处理器(有上百套输入和输出接口);可以在每个时钟周期里合并所有处理器的原子操作命令,处理性能高,还回计算结果的延时固定;
61.当多核数量达到100个以上时,推荐合并加减指令的操作的位宽为16比特位宽,对于不是加减运算的原子操作,原子操作的位宽也可以做到32位宽。因为合并加减指令的后端t iming限制了位宽。其他原子操作的t iming要好处理一些,位宽可以做得更宽。
62.某些情况下,原子计算指令总线的位宽设计为32比特位宽,也可以达到这个效果。
63.针对原子操作,我们一般分为以下几类操作:
64.全局统计操作,每个处理器处理的报文的字节数量都通过原子计算模块累加到某个全局计数器里(快速计算),原子计算模块将累加结果返回每个处理器,使每个处理器知道累加当前报文后的全局计数器的最新值(快速同步);如图6所示。
65.原子锁操作,多个处理器同一个cycle可能抢同一个spin lock,原子计算模块需要在同一个时刻完成原子锁的分配和信息还回;如图7所示,多个处理器同一个周期抢同一个spin lock,原子计算模块在同一时刻返回分配结果。
66.全局变量操作(多写多读),多个处理器需要同时修改同一个变量的不同域。原子计算模块需要合并这些操作,并向各处理器还回这个变量最新值;如果多个核在同一个时刻操作同一个变量的同一个域,操作的结果就是多个处理器请求的合并处理的结果;如图8所示,多个处理器同时修改一个变量的时,合并这些操作,并返回变量最新值。
67.这三类操作,每一个时钟周期,每个处理器都有可能发出这三类操作,为了在固定时刻还回结果给各个处理器。原子计算模块需要合并多路输入,在一个cycle里,或者在多个cycle里以流水线处理方式还回结果给各个处理器;即原子计算模块可以线速处理每个处理器的请求命令,并在固定时间点还回结果给各个处理器,即每个时钟周期都可以输出原子计算结果给各个处理器。每个处理器和原子计算模块都有直连总线。如图4所示。
68.每个时钟周期,原子计算模块都可以合并各个处理器的输入数据,在固定时钟周期内,把结果线速还回给各个处理器,由于还回原子计算结果的延时固定,每个处理器可以流水线处理数据,几乎没有等待过程,处理框图如图5所示。
69.如图6所示,
70.处理器都是流水线方式处理报文,图1标识的每级流水线需要一个时钟周期;
71.流水线的第一级,处理器根据当前处理的报文大小,以及当前报文的输入和输出
端口编号,计算出需要累加的counter数量和要累加到哪个全局计数器;发出counter全局统计的累加命令。
72.流水线的第二级,原子计算模块在一个时钟周期合并累加当前时钟周期的多个处理器输入的所有全局统计累加命令的counter的累加数量。并把结果还回给发出统计命令的各个处理器。
73.流水线的第三级,各个处理器在固定时间内得到累加后的统计结果,实时得到到全局统计counter的当前统计值。
74.这是一个示例流程,实际在各种场景的实现过程中,由于逻辑复杂度不一样,每级流水线需要的时钟周期数量都不一样。全局统计的总延时一般在8个时钟周期左右。
75.以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献