一种支持cache更新的一致性加速处理方法与流程

文档序号:32039402发布日期:2022-11-03 04:39阅读:98来源:国知局

1.本发明涉及计算机数据计算领域,具体处理器多核处理的加速方法。


背景技术:

2.随着处理器制造工艺的不断进步及实际应用需要,多核结构已成为当前高性能微处理器的发展趋势。相比单核处理器而言,多核处理器支持多线程,在一个时钟周期内能处理更多的任务,也支持多任务处理,其计算能力和运行效率都有着明显的优势。如公开号为cn201380009921.8公开了一种用于多核处理器中的核心间通信的方法和装置,再如公开号为cn201110452294.8公开了一种多核处理器的核间通信方法,在这两个专利文件所记载的技术方案中,都涉及到了多核处理器的数据计算方式,其包含生产核心和消费核心。在某一个程序任务中,生产核心负责产生相应的数据,而消费核心需要使用到生产核心所产生的数据。
3.而,多核处理器系统中出现的cache一致性问题是当今计算机体系结构中研究的热点问题。即,消费核心在数据处理过程中所拿到的数据需要保证是最新的数据版本,这才能保证各个消费核心在运算过程中的一致性。如cn201210544976.6一种具有多cache一致性域的多处理器节点系统构建方法,通过二级节点控制器来组成一个单一cache一致性域,(或称为一致性串行点),该一致性串行点在实际应用中为处理器芯片中的一个单独的硬件形式,负责消费核心和生产核心之间的数据交互,且保证交互过程中的数据一致性。具体方式为,消费核心取数据时向一致性串行点发送取数据的请求,一致性串行点在查找到最新版本的数据所在的地址后,向生产核心发送数据请求,取得数据。
4.然而这个技术方案存在一定的缺陷,当消费核心发送数据请求后,一致性串行点再向对应的生产核心去取数据。而此时,很有可能该生产核心正在生产其他数据,则对于该生产核心而言,为一致性串行点提供数据任务和生产下一数据任务,这两个任务之间就存在着任务竞争,影响了该生产核心的数据生产效率,而这些任务竞争进而产生了额外的时间开销和延迟。


技术实现要素:

5.本发明的目的是提供一种支持cache更新的一致性加速处理方法,在保证cache一致性的基础上,解决一致性操作的延迟开销,避免生产核心的多任务竞争,减少数据处理的延迟,提升效率。
6.本发明是按照如下技术方案来实现的:一种支持cache更新的一致性加速处理方法,其特征在于,包含如下步骤:s01、生产核心数据生产步骤;生产核心生产出批量数据;s02、完成通知即时发送步骤;所述生产核心给一致性串行点发送完成通知;
s03、串行点取数据步骤;所述一致性串行点从所述生产核心处获得刚处理完的数据,且将数据转存到主存中,在转存结束之前,该生产核心不生产新的数据;s04、消费核心获得数据步骤;当所述消费核心需要获得数据时,发送数据请求给所述一致性串行点,所述一致性串行点从所述主存中获得对应的数据给所述消费核心。
7.作为本发明的优选,所述生产核心和所述消费核心均为多个,但所述一致性串行点仅为一个,多个所述生产核心和多个所述消费核心共享一个所述一致性串行点。
8.作为本发明的优选,在所述s02中,所述生产核心发送给所述一致性串行点的完成通知的形式为总的描述符。
9.作为本发明的优选,在所述s03中,包含子步骤,拆包步骤;所述一致性串行点将一个总的描述符中涉及到的数据拆包成多个数据传输任务,每个数据传输任务以一个数据单位为操作密度。
10.作为本发明的优选,所述一个数据单位为一个cache行。
11.作为本发明的优选,在所述s03中,所述一致性串行点在对所述生产核心的数据操作包含置共享操作和置无效操作,所述置共享操作是数据除了进入了对应的内存中,但是生产核心处依然保留了该数据,用于生产核心的下一批数据计算;所述置无效操作是数据仅仅进入对应的内存中,生产核心处不保留该数据。
12.作为本发明的优选,所述一致性串行点的数据操作依靠软件编程实现,编程语言为汇编语言。
13.综上所述,本发明具有如下有益效果:1、消费核心获取数据的任务不会与生产核心新的数据生产任务产生任何竞争,不存在因任务竞争而引发的延迟开销,提高整个系统运行和计算的效率。
14.2、一致性串行点将生产核心产生的数据转移到内存,生产核心无需储存大量数据,提升硬件使用效率。
15.3、一致性串行点支持置共享操作和置无效操作,便于生产核心后续的数据计算与生产。
16.4、数据从生产核心转移到内存时为cache行逐个转移,保持数据精准不出错。
17.5、生产核心通知一致性串行点为一次性批量通知,以描述符的形式,高效快捷。
具体实施方式
18.以下对本发明作进一步详细说明。
19.本具体实施例仅仅是对本发明的解释,其并不是对本发明的限制,本领域技术人员在阅读完本说明书后可以根据需要对本实施例做出没有创造性贡献的修改,但只要在本发明的权利要求范围内都受到专利法的保护。
20.实施例1,一种支持cache更新的一致性加速处理方法,在系统构成上,需要包含生产核心、消费核心和一致性串行点,这三个部件并不是软件程序,而是以物理形式存在在处理器芯片上的硬件。与现有技术相同,生产核心负责数据的生产,而消费核心需要使用到生产核心所生产出的数据。而处理器芯片上的一致性串行点则需要保证数据的一致性,在现
有技术中,如消费核心a需要使用到数据1,而一致性串行点发现数据1的最新版本在生产核心c上,则一致性串行点就要向生产核心c取得数据1并提供给消费核心a,从而又保证了数据的正常使用,又保证了数据的一致性。
21.在本案中,芯片中的核心数量不做限定,根据场景的不同,核心的数量从几个到几百、几千不等。然而,一致性串行点的数量可设置的较少,无需巨量设置,一致性串行点可为多个核心服务。
22.在本实施例中,一致性串行点只设置一个,所有的核心均共用这一个一致性串行点。
23.一致性串行点的命令执行依靠编程来实现,可选用现有技术中成熟的编程语言,一致性串行点寻找数据的最新版本的方式,一致性串行点与核心之间数据的交互方式,这均为现有技术的内容,如,一致性串行点采用监听法或采用副本目录法来寻找数据的最新版本,本案不做赘述。
24.本案中,使用汇编语言来实现,这是由于汇编语言在编写和代码存储过程中占存储少,执行速度快,有利于更进一步提升运行效率。
25.s01、生产核心数据生产步骤。
26.生产核心a生产出了批量数据1。这一过程与现有技术相同。
27.s02、完成通知即时发送步骤。
28.这一步骤与现有技术不同,即生产核心a生产出了批量数据1后,马上给一致性串行点发送完成通知。
29.在本实施例中,该完成通知为描述符。在实际应用中,生产核心a一次性生产出批量的数据,例如存在2000个数据,而不论批量数据的具体数量,生产核心只发送一份描述符作为完成通知给一致性串行点。这里的批量数据是指生产核心往往是处理大批量的多个数据,但是数量可不同。在实际工业应用中,常常是2000或者4000个数据,但是在极端情况下,理论上也可能存在仅仅有1个的情况。描述符是在unix、linux的系统中的一种数据格式,在本实施例中,对描述符的具体编写形式不做具体限定,但是该描述符中包含两个数据信号——生产核心确认数据已生产完毕的信号、处理完的批量数据的数据量。且,生产核心a在发送完完成通知后,不进行新的批量数据的生产。
30.s03、串行点取数据步骤。
31.一致性串行点发送取数据请求,向生产核心索取刚生产完毕的批量数据1。
32.在本示例中,此处存在一个子步骤,即拆包步骤。在本实施例中,核心在操作时,以一个数据单位为操作密度,即一个cache行作为操作密度。如上文所述,生产核心a所产生的批量数据为2000个cache行,在本子步骤中,一致性串行点并不是产生一个总的数据请求命令,而是拆成了2000个数据请求命令,且逐个按序发送给生产核心a,去获得对应的数据。
33.转存步骤。
34.在本实施例中,一致性串行点从生产核心a处获得了批量数据1,即2000个cache行,并且把这批数据储存在主存中。主存即系统内存,此时,这些数据就从处理器芯片中转移到了系统内存中,如ddr内存条中。
35.在这个过程中,一致性串行点对数据有两种操作,分别是置共享操作和置无效操作。置共享操作是数据除了进入了对应的内存中,但是生产核心a处依然保留了该数据,这
是由于生产核心a的下一批数据计算和生产中会用到该数据。置无效操作是数据仅仅进入对应的内存中,生产核心a处不保留该数据。
36.s04、消费核心获得数据步骤。
37.消费核心需要获得数据后,就与现有技术相同,发送相应的数据请求给一致性串行点。与现有技术不同的是,一致性串行点无需再去对应的生产核心处去取数据,而是只需要去对应的内存中获得数据即可。此时只有消费核心、内存、一致性串行点之间存在数据交互任务,而生产核心与一致性串行点在此时没有数据传送任务。即,此时的生产核心a可以专注于新的批量数据2的生产任务,不存在任务竞争,更不存在因任务竞争而引发的延迟开销,提高整个系统运行和计算的效率。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1