CN103970512B - 多核处理器及其并行重放方法 - Google Patents
多核处理器及其并行重放方法 Download PDFInfo
- Publication number
- CN103970512B CN103970512B CN201410215006.0A CN201410215006A CN103970512B CN 103970512 B CN103970512 B CN 103970512B CN 201410215006 A CN201410215006 A CN 201410215006A CN 103970512 B CN103970512 B CN 103970512B
- Authority
- CN
- China
- Prior art keywords
- processor core
- sequence information
- access instruction
- record
- instruction
- 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.)
- Active
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种多核处理器及其并行重放方法,多核处理器包括多个处理器核、记录分析逻辑和读取缓存逻辑;多个处理器核分别与记录分析逻辑、读取缓存逻辑相耦合,其中,记录分析逻辑,用于在初次并行执行程序的过程中,记录每个处理器核执行访存操作的时间序信息和执行序信息,时间序信息包括处理器核每个时间段执行访存指令的数目,执行序信息包括处理器核之间的冲突操作的执行顺序;读取缓存逻辑,用于将时间序信息和执行序信息发送给对应的处理器核,以使得每个处理器核根据对应的时间序信息和执行序信息对程序进行并行重放,本发明的技术方案,可以使得重放执行可以并行执行,从而获得了由并行处理带来的性能提升,保证了确定性重放的性能。
Description
技术领域
本发明涉及计算机技术,尤其涉及一种多核处理器及其并行重放方法。
背景技术
随着多核处理器的发展,需要写出更好的并行程序来获得由多核带来的性能提升。然而,不同于串行程序的是,即使给并行程序一样的输入,并行程序的结果在不同执行中仍然是不一样的,其原因就是不同线程对同一个地址的访问顺序在不同执行中极有可能是不一样的。因此,直接重复的去执行一个并行程序无法复现上一次的执行结果。一旦有一个漏洞(bug)在一次执行中被找到,由于无法复现这一次的执行,调试该并行程序有着极大的困难。为了解决以上问题,确定性重放技术被提出以用来记录并行程序执行过程中的不确定性因素。具体来说,确定性重放在第一次执行中记录部分相关访存操作之间的执行序关系和不确定性因素作为日志,在第二次执行中根据记录下的日志重现第一次执行的结果。由于第一次执行时仅保存了部分相关访存操作之间的执行序关系以及不确定因素,为了保证第二次执行的结果跟第一次相同,只能通过串行重放实现确定性重放,通过确定性重放可以极为方便的去完成对并行程序的调试。特别的,称第一次执行为原执行,第二次执行为重放执行。
现有的确定性重放技术通过串行重放实现,重放执行时往往相对于原执行有着几倍甚至十几倍的性能损失,而在调试并行程序的过程中,重放执行的速度是与调试的效率直接相关的。因此,一种能够快速的实现重放执行的系统是亟需提出的。
发明内容
本发明提供一种多核处理器及其并行重放方法,用于使得重放执行可以并行执行,从而获得了由并行处理带来的性能提升。
本发明第一方面,提供一种多核处理器,包括多个处理器核、记录分析逻辑和读取缓存逻辑;所述多个处理器核分别与所述记录分析逻辑、读取缓存逻辑相耦合,其中
所述分析记录逻辑,用于在初次并行执行程序的过程中,记录每个处理器核执行访存操作的时间序信息和执行序信息,所述时间序信息包括处理器核每个时间段执行访存指令的数目,所述执行序信息包括处理器核之间的冲突操作的执行顺序;
所述读取缓存逻辑,用于将所述时间序信息和所述执行序信息发送给对应的处理器核,以使得所述每个处理器核根据对应的时间序信息和执行序信息对所述程序进行并行重放。
本发明第二方面,提供一种多核处理器的并行重放方法,包括:
在初次并行执行程序的过程中,记录每个处理器核执行访存操作的时间序信息和执行序信息,所述时间序信息包括处理器核每个时间段执行访存指令的数目,所述执行序信息包括处理器核之间的冲突操作的执行顺序;
将所述时间序信息和所述执行序信息发送给对应的处理器核,以使得所述每个处理器核根据对应的时间序信息和执行序信息对所述程序进行并行重放。
本发明提供的多核处理器及其并行重放方法,通过所述多核处理器中的记录分析逻辑在初次并行执行程序的过程中,记录每个处理器核执行访存操作的时间序信息和执行序信息,所述时间序信息包括处理器核每个时间段执行访存指令的数目,所述执行序信息包括处理器核之间的冲突操作的执行顺序,所述读取缓存逻辑将所述时间序信息和所述执行序信息发送给对应的处理器核,以使得所述每个处理器核根据对应的时间序信息和执行序信息对所述程序进行并行重放,可以保证重放执行的行为与原执行的行为一样,并且可以使得重放执行可以并行执行,从而获得了由并行处理带来的性能提升,保证了确定性重放的性能。
附图说明
图1为本发明提供的多核处理器实施例一的结构示意图;
图2为本发明提供的多核处理器实施例二的结构示意图;
图3为本发明提供的多核处理器实施例三的结构示意图;
图4为本发明提供的多核处理器的并行重放方法实施例一的流程图;
图5为本发明提供的多核处理器的并行重放方法实施例二的流程图;
图6为本发明提供的多核处理器的并行重放方法实施例三的流程图。
具体实施方式
图1为本发明提供的多核处理器实施例一的结构示意图,如图1所示,本实施例的多核处理器,包括多个处理器核11、记录分析逻辑12和读取缓存逻辑13;多个处理器核11分别与记录分析逻辑12、读取缓存逻辑13相耦合,其中,记录分析逻辑12用于在初次并行执行程序的过程中,记录每个处理器核11执行访存操作的时间序信息和执行序信息,时间序信息包括处理器核11每个时间段执行访存指令的数目,执行序信息包括处理器核11之间的冲突操作的执行顺序;读取缓存逻辑13用于将时间序信息和执行序信息发送给对应的处理器核,以使得每个处理器核根据对应的时间序信息和执行序信息对程序进行并行重放。
具体来说,本实施例的多核处理器适用的场景可以是确定性重放中的原执行过程和重放执行过程,其中,记录分析逻辑12可以用于在并行程序的原执行过程记录每个处理器核11执行访存操作的时间序信息和执行序信息,读取缓存逻辑13可以用于在并行程序的重放执行中将时间序信息和执行序信息发送给对应的处理器核,以使得每个处理器核根据对应的时间序信息和执行序信息对程序进行并行重放。
可以理解的是,记录分析逻辑12在记录完成每个处理器核11执行访存操作的时间序信息和执行序信息之后,可以将记录的时间序信息和执行序信息导出到多核处理器外部记录为日志,在开始执行重放执行时,将相应的日志导入读取缓存逻辑13内,以实现原执行过程中记录分析逻辑12记录的每个处理器核11执行访存操作的时间序信息和执行序信息不需要占用本实施例的多核处理器的内存。
本实施例的多核处理器除处理器核11之外的非处理器核设备可以包括但不限于二级缓存、片上网络、内存控制器等。
本实施例的多核处理器,通过记录分析逻辑12在初次并行执行程序的过程中,记录每个处理器核11执行访存操作的时间序信息和执行序信息,时间序信息包括处理器核11每个时间段执行访存指令的数目,执行序信息包括处理器核11之间的冲突操作的执行顺序,读取缓存逻辑13将时间序信息和执行序信息发送给对应的处理器核11,以使得每个处理器核11根据对应的时间序信息和执行序信息对程序进行并行重放,可以保证重放执行的行为与原执行的行为一样,并且可以使得重放执行可以并行执行,从而获得了由并行处理带来的性能提升,保证了确定性重放的性能。
图2为本发明提供的多核处理器实施例二的结构示意图,如图2所示,本实施例的多核处理器,在图1所示实施例的基础上,记录分析逻辑12包括与多个处理器核11一一对应的多个记录模块121,以及分析逻辑122,记录模块121与对应的处理器核11相耦合,分析逻辑122分别与多个处理器核11、多个记录模块121相耦合,其中,记录模块121用于记录相邻两时间段的访存信息并在当前时间段完成记录时提交当前时间段记录的访存信息的条数给对应的处理器核,访存信息包括访存地址、操作类型以及访存标识;分析逻辑122用于接收处理器核发送的第一访存指令的访存地址和操作类型,判断除发送第一访存指令的访存地址和操作类型的处理器核以外的处理器核对应的记录模块121中是否记录有与第一访存指令的访存地址和操作类型相冲突的第二访存指令的访存地址和访存操作,若存在,则记录第一访存指令和第二访存指令的编号。
记录模块121包括第一记录单元1211和第二记录单元1212;
第二记录单元1212用于记录当前执行时间段内提交的访存信息;
第一记录单元1211用于记录当前执行时间段的上一个时间段内提交的访存信息。
在一个实施例中,第一访存指令包括处理器核执行的所有访存指令,或者当处理器核执行的访存指令在一级缓存未命中的情况下发送给分析逻辑的访存指令。
在一个实施例中,第一记录单元1211和第二记录单元1212均可以采用内容可寻址存储器(content-addressable memory,简称CAM)。
具体来说,可以首先根据多核处理器的时钟周期将原执行的执行过程分为很多时间段,比如第1拍到第n拍是第一个时间段,第n+1拍到第2n拍是第二个时间段,依此类推。第一记录单元1211用于记录其对应的处理器核的在上一个n拍长的时间段内提交的访存指令,第二记录单元1212用于记录当前执行的时间段内提交的访存指令。比如在第7.5n拍时,第一记录单元1211记录6n+1到7n拍之间提交的访存指令,而第二记录单元1212记录7n+1到7.5n拍之间提交的访存指令。一旦在原执行的执行过程中时间到达n拍的整数倍,就将第一记录单元1211清空并变成新的第二记录单元1212,用来记录新的时间段里提交的访存指令,第二记录单元1212则变成第一记录单元1211。
举例来说,n可以取值为512,第一记录单元1211和第二记录单元1212的大小可以为512×27,第一记录单元1211记录上一时间段对应的处理器核执行的访存指令的访存指令信息,第二记录单元1212记录对应的处理器核当前时间段执行的访存指令信息,访存信息包括访存地址、操作类型以及访存标识,其中,访存标识可以包括访存指令的编号,每次提交一条访存指令,访存指令的编号加1,由于在大多数的多核处理器中每个处理器核每拍最多提交一条访存指令,所以512×27的记录单元足够记录每512拍内执行的访存指令。
记录模块121可以在当前时间段完成记录时提交当前时间段记录的访存信息的条数给对应的处理器核11。
可以理解的是,在另一种可能的实现方式中,可以向分析逻辑122发送的每个时间段每个处理器核提交的访存指令的数目,比如,第一个时间段(1拍到512拍)处理器核1提交了30条访存指令,30这个数就会从记录模块121传给分析逻辑122,并可以由分析逻辑122加上处理器核的编号后导出到处理器外部存为日志。
具体来说,分析逻辑122用于接收处理器核发送的第一访存指令的访存地址和操作类型,判断除发送第一访存指令的访存地址和操作类型的处理器核以外的处理器核对应的记录模块121中是否记录有与第一访存指令的访存地址和操作类型相冲突的第二访存指令的访存地址和访存操作,若存在,则记录第一访存指令和第二访存指令的编号,对于来自不同线程的一对访存操作,如果它们访问的地址相同,而且其中至少有一个是写操作,那么我们就称这对操作为一对冲突操作。每次有访存指令被提交时,该访存指令的地址和操作就会存在其对应的记录模块121中,并由记录模块121送到分析逻辑122内,分析模块根据送过来的访存指令的地址和操作,去找其他处理器核对应的记录模块121中是否有与之冲突的访存操作。如果有,则将该对冲突操作的指令编号记录下来,并可以动态的导出到确定性重放处理系统外存为日志,冲突操作的指令编号包含了执行序信息,其中,已存在记录模块121中的指令在刚刚提交的冲突指令之前执行。
读取缓存逻辑13包括与多个处理器核11一一对应的序缓冲模块131,以及读取逻辑132,序缓冲模块131与对应的处理器核11相耦合,读取逻辑132分别与多个处理器核11、多个序缓冲模块131相耦合,其中,读取逻辑132用于将读取到的时间序信息和执行序信息发送给序缓冲模块131;
序缓冲模块131用于根据时间序信息,将待执行的访存指令划分为多个访存指令块,其中第k个访存指令块由第k个时间段提交的访存指令构成,在多个处理器核中除第一处理器核之外的处理器核的第k-2个访存指令块提交之后,开始执行第一处理器核的第k个访存指令块,第一处理器核为完成第k-1个访存指令块提交的处理器核,k为大于等于3的正整数。
具体来说,读取缓存逻辑13将原执行过程中记录的时间序信息和执行序信息按照记录时的格式分为时间序信息和执行序信息,并发送给对应的处理器核,其中,对于执行序信息,两个冲突操作所在的处理器核都会被发送到。
读取逻辑132用于将读取到的时间序信息和执行序信息发送给序缓冲模块131。
每一个序缓冲模块根据得到的时间序信息,将执行的访存指令分成很多访存指令块,其中第k个访存指令块由第k个时间段提交的访存指令构成,k为大于等于3的正整数,通过记录下的每个时间段提交的访存指令的个数,可以知道具体每个访存指令块的访存指令编号。每当一个处理器核开始执行一个访存指令块时(比如第k个指令块),必须保证所有其他处理器核的第k-2个访存指令块已经提交(即该访存指令块的所有指令都已提交)。如果还有没有完全提交的指令,那么对应的处理器核就必须等待,直到所有的其他处理器核的第k-2个访存指令块已经提交。这样,我们就保证了重放执行的时间序与原执行的时间序一样。
举例来说,由于原执行过程中相邻两时间段之间访存指令的执行过程存在重叠,例如一条访存指令在前一时间段开始执行,而在当前时间段才完成执行,该访存指令会被记录在前一时间段的访存指令数目中,所以时间序信息中第一个时间段内提交的访存指令一定是在第三个时间段内提交的访存指令之前执行,相应的,在重放执行过程中,例如,每当一个处理器核开始执行第3个指令块时,必须保证所有其他处理器核的第1个访存指令块已经提交,如果还有没有完全提交的指令,那么对应的处理器核就必须等待,直到所有的其他处理器核的第1个访存指令块已经提交,才能就保证了重放执行的时间序与原执行的时间序一样,可以理解的是,由于处理器核的第2个访存指令块与所有其他处理器核之间不存在时间序的关系,所以处理器核的第1个访存指令块和第2个访存指令块可以直接执行。
每个序缓冲模块还根据已经得到的执行序信息去保证重放执行中的执行序与原执行中一样。例如对于每一条执行序a->b,在重放执行中,当指令b对应的处理器核准备执行指令b的时候,必须保证指令a在其所对应的处理器核中已经完成了指令a执行,否则指令b对应的处理器核就必须等待,直到指令a在其所对应的处理器核中已经完成了指令a的执行。这样,就保证了重放执行的执行序与原执行的执行序一样。
本实施例的多核处理器,通过记录分析逻辑12在初次并行执行程序的过程中,记录每个处理器核11执行访存操作的时间序信息和执行序信息,时间序信息包括处理器核11每个时间段执行访存指令的数目,执行序信息包括处理器核11之间的冲突操作的执行顺序,读取缓存逻辑13将时间序信息和执行序信息发送给对应的处理器核11,以使得每个处理器核11根据对应的时间序信息和执行序信息对程序进行并行重放,可以保证重放执行的行为与原执行的行为一样,并且可以使得重放执行可以并行执行,从而获得了由并行处理带来的性能提升,保证了确定性重放的性能,进一步地,本实施例记录时间序信息和执行序信息的日志较小,可以用较小的日志实现重放执行的并行执行。
图3为本发明提供的多核处理器实施例三的结构示意图,如图3所示,本实施例的多核处理器,在图2所示实施例的基础上,还包括与多个处理器核11一一对应的转移记录逻辑14;转移记录逻辑14与多个处理器核11相耦合;转移记录逻辑14用于记录在初次并行执行程序的过程中转移指令的执行结果,还包括与多个处理器核11一一对应的转移缓冲逻辑15;转移缓冲逻辑15与多个处理器核11相耦合;转移缓冲逻辑15用于根据接收自读取逻辑的转移指令的执行结果,预测对程序进行并行重放的过程中转移指令的转移结果。
具体来说,转移记录逻辑14用于记录并行程序在原执行过程中其对应处理器核所有转移指令的结果,即该次转移是否跳转。可以只需记录发生跳转的转移指令,这样没有记录的都是未跳转的转移指令,可以给每条转移指令给一个编号,每次执行一条转移指令,编号加一,在记录时,只需要记录跳转的转移指令的编号即可,转移记录逻辑14可以直接将记录的转移指令的执行结果,即跳转的转移指令的编号,导出处理器核外部存为日志,也可以先将转移指令的执行结果发送给分析逻辑122,再由分析逻辑122其导出到处理器外部存为日志。
相应地,读取逻辑132将转移指令的执行结果分别动态送到转移缓冲逻辑15中,每一个转移缓冲逻辑15动态地接收由读取逻辑132传递过来的转移指令的执行结果。当重放执行的过程中碰到转移指令时,根据接收到的转移指令的执行结果,成功地对转移指令是否跳转进行预测,由于重放执行的结果与原执行的行为是一样的,所以根据转移缓冲逻辑15内的转移指令的执行结果,我们可以确保每次转移预测都成功,从而进一步提高重放执行时的性能。
本实施例的多核处理器除处理器核11之外的非处理器核设备16可以包括但不限于二级缓存、片上网络、内存控制器等。
本实施例提供的确定性重放处理方法,除了可以使得重放执行可以并行执行,从而获得了由并行处理带来的性能提升,保证了确定性重放的性能以外,通过转移记录逻辑15记录在初次并行执行程序的过程中转移指令的执行结果,转移缓冲逻辑16根据接收自读取逻辑的转移指令的执行结果,预测对程序进行并行重放的过程中转移指令的转移结果,可以进一步提高并行程序重放执行时的性能。
图4为本发明提供的多核处理器的并行重放方法实施例一的流程图,如图4所示,本实施例的多核处理器的并行重放方法,包括:
S101、在初次并行执行程序的过程中,记录每个处理器核执行访存操作的时间序信息和执行序信息,时间序信息包括处理器核每个时间段执行访存指令的数目,执行序信息包括处理器核之间的冲突操作的执行顺序。
S102、将时间序信息和执行序信息发送给对应的处理器核,以使得每个处理器核根据对应的时间序信息和执行序信息对程序进行并行重放。
本实施例的多核处理器的并行重放方法可以由图1所示的多核处理器执行,其实现原理和技术效果类似,此处不再赘述。
图5为本发明提供的多核处理器的并行重放方法实施例二的流程图,如图5所示,本实施例的多核处理器的并行重放方法,包括:
S201、记录每个处理器核在相邻两时间段执行的访存指令的访存信息并在当前时间段完成记录时提交当前时间段记录的访存信息的条数给对应的处理器核,访存信息包括访问地址、操作类型以及访存标识。
S202、接收处理器核发送的第一访存指令的访存地址和操作类型,判断除发送第一访存指令的访存地址和操作类型的处理器核以外的处理器核对应的记录模块中是否记录有与第一访存指令的访存地址和操作类型相冲突的第二访存指令的访存地址和访存操作,若存在,则记录第一访存指令和第二访存指令的编号。
在一个实施例中,第一访存指令包括处理器核执行的所有访存指令,或者当处理器核执行的访存指令在一级缓存未命中的情况下发送的访存指令。
S203、根据时间序信息,将待执行的访存指令划分为多个访存指令块,其中第k个访存指令块由第k个时间段提交的访存指令构成,在多个处理器核中除第一处理器核之外的处理器核的第k-2个访存指令块提交之后,开始执行第一处理器核的第k个访存指令块,第一处理器核为完成第k-1个访存指令块提交的处理器核,k为大于等于3的正整数。
其中,S201-S202为并行程序的原执行过程,S203为并行程序的重放执行过程。
本实施例的多核处理器的并行重放方法可以由图2所示的多核处理器执行,其实现原理和技术效果类似,此处不再赘述。
图6为本发明提供的多核处理器的并行重放方法实施例三的流程图,如图6所示,本实施例的多核处理器的并行重放方法,包括:
S301、记录每个处理器核在相邻两时间段执行的访存指令的访存信息并在当前时间段完成记录时提交当前时间段记录的访存信息的条数给对应的处理器核,访存信息包括访问地址、操作类型以及访存标识。
S302、接收处理器核发送的第一访存指令的访存地址和操作类型,判断除发送第一访存指令的访存地址和操作类型的处理器核以外的处理器核对应的记录模块中是否记录有与第一访存指令的访存地址和操作类型相冲突的第二访存指令的访存地址和访存操作,若存在,则记录第一访存指令和第二访存指令的编号。
在一个实施例中,第一访存指令包括处理器核执行的所有访存指令,或者当处理器核执行的访存指令在一级缓存未命中的情况下发送的访存指令。
S303、记录在初次并行执行程序的过程中转移指令的执行结果。
S304、根据时间序信息,将待执行的访存指令划分为多个访存指令块,其中第k个访存指令块由第k个时间段提交的访存指令构成,在多个处理器核中除第一处理器核之外的处理器核的第k-2个访存指令块提交之后,开始执行第一处理器核的第k个访存指令块,第一处理器核为完成第k-1个访存指令块提交的处理器核,k为大于等于3的正整数。
S305、根据转移指令的执行结果,预测对程序进行并行重放的过程中转移指令的转移结果。
其中,S301-S303为并行程序的原执行过程,S304-S305为并行程序的重放执行过程。
本实施例的多核处理器的并行重放方法可以由图3所示的多核处理器执行,其实现原理和技术效果类似,此处不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (12)
1.一种多核处理器,其特征在于,包括多个处理器核、记录分析逻辑和读取缓存逻辑;所述多个处理器核分别与所述记录分析逻辑、读取缓存逻辑相耦合,其中
所述记录分析逻辑,用于在初次并行执行程序的过程中,记录每个处理器核执行访存操作的时间序信息和执行序信息,所述时间序信息包括处理器核每个时间段执行访存指令的数目,所述执行序信息包括处理器核之间的冲突操作的执行顺序;
所述读取缓存逻辑,用于将所述时间序信息和所述执行序信息发送给对应的处理器核,以使得所述每个处理器核根据对应的时间序信息和执行序信息对所述程序进行并行重放;
所述读取缓存逻辑,包括与所述多个处理器核一一对应的多个序缓冲模块,以及读取逻辑,所述多个序缓冲模块与对应的处理器核相耦合,所述读取逻辑分别与所述多个处理器核、所述多个序缓冲模块相耦合,其中,
所述读取逻辑,用于将读取到的所述时间序信息和所述执行序信息发送给所述多个序缓冲模块;
所述多个序缓冲模块,用于根据所述时间序信息,将待执行的访存指令划分为多个访存指令块,其中第k个访存指令块由第k个时间段提交的访存指令构成,在所述多个处理器核中除第一处理器核之外的处理器核的第k-2个访存指令块提交之后,开始执行所述第一处理器核的第k个访存指令块,所述第一处理器核为提交第k-1个访存指令块的处理器核,所述k为大于等于3的正整数。
2.根据权利要求1所述的多核处理器,其特征在于,所述记录分析逻辑,包括与所述多个处理器核一一对应的多个记录模块,以及分析逻辑,所述记录模块与对应的处理器核相耦合,所述分析逻辑分别与所述多个处理器核、所述多个记录模块相耦合,其中,
所述记录模块,用于记录相邻两时间段的访存信息并在当前时间段完成记录时提交当前时间段记录的访存信息的条数给对应的处理器核,所述访存信息包括访存地址、操作类型以及访存标识;
所述分析逻辑,用于接收处理器核发送的第一访存指令的访存地址和操作类型,判断除发送所述第一访存指令的访存地址和操作类型的处理器核以外的处理器核对应的记录模块中是否记录有与所述第一访存指令的访存地址和操作类型相冲突的第二访存指令的访存地址和操作类型,若存在,则记录所述第一访存指令和所述第二访存指令的编号。
3.根据权利要求2所述的多核处理器,其特征在于,所述第一访存指令包括所述发送所述第一访存指令的访存地址和操作类型的处理器核执行的所有访存指令,或者当所述发送所述第一访存指令的访存地址和操作类型的处理器核执行的访存指令在一级缓存未命中的情况下发送给所述分析逻辑的访存指令。
4.根据权利要求3所述的多核处理器,其特征在于,所述记录模块包括第一记录单元和第二记录单元;
所述第二记录单元,用于记录当前执行时间段内提交的访存信息;
所述第一记录单元,用于记录所述当前执行时间段的上一个时间段内提交的访存信息。
5.根据权利要求4所述的多核处理器,其特征在于,所述第一记录单元和所述第二记录单元均采用内容可寻址存储器。
6.根据权利要求1所述的多核处理器,其特征在于,还包括与所述多个处理器核一一对应的转移记录逻辑;所述转移记录逻辑与所述多个处理器核相耦合;
所述转移记录逻辑,用于记录在初次并行执行程序的过程中转移指令的执行结果。
7.根据权利要求1-6任一项所述的多核处理器,其特征在于,还包括与所述多个处理器核一一对应的转移缓冲逻辑;所述转移缓冲逻辑与所述多个处理器核相耦合;
所述转移缓冲逻辑,用于根据接收自所述读取逻辑的转移指令的执行结果,预测对所述程序进行并行重放的过程中转移指令的转移结果。
8.一种多核处理器的并行重放方法,其特征在于,包括:
在初次并行执行程序的过程中,记录每个处理器核执行访存操作的时间序信息和执行序信息,所述时间序信息包括处理器核每个时间段执行访存指令的数目,所述执行序信息包括处理器核之间的冲突操作的执行顺序;
将所述时间序信息和所述执行序信息发送给对应的处理器核,以使得所述每个处理器核根据对应的时间序信息和执行序信息对所述程序进行并行重放;
所述根据对应的时间序信息和执行序信息对所述程序进行并行重放,包括:
根据所述时间序信息,将待执行的访存指令划分为多个访存指令块,其中第k个访存指令块由第k个时间段提交的访存指令构成,在多个处理器核中除第一处理器核之外的处理器核的第k-2个访存指令块提交之后,开始执行所述第一处理器核的第k个访存指令块,所述第一处理器核为提交第k-1个访存指令块的处理器核,所述k为大于等于3的正整数。
9.根据权利要求8所述的方法,其特征在于,所述记录每个处理器核执行访存操作的时间序信息和执行序信息,包括:
记录所述每个处理器核在相邻两时间段执行的访存指令的访存信息并在当前时间段完成记录时提交当前时间段记录的访存信息的条数给对应的处理器核,所述访存信息包括访问地址、操作类型以及访存标识;
接收处理器核发送的第一访存指令的访存地址和操作类型,判断除发送所述第一访存指令的访存地址和操作类型的处理器核以外的处理器核对应的记录模块中是否记录有与所述第一访存指令的访存地址和操作类型相冲突的第二访存指令的访存地址和操作类型,若存在,则记录所述第一访存指令和所述第二访存指令的编号。
10.根据权利要求9所述的方法,其特征在于,所述第一访存指令包括所述发送所述第一访存指令的访存地址和操作类型的处理器核执行的所有访存指令,或者当所述发送所述第一访存指令的访存地址和操作类型的处理器核执行的访存指令在一级缓存未命中的情况下发送的访存指令。
11.根据权利要求8所述的方法,其特征在于,还包括:
记录在初次并行执行程序的过程中转移指令的执行结果。
12.根据权利要求8-11任一项所述的方法,其特征在于,还包括:
根据转移指令的执行结果,预测对所述程序进行并行重放的过程中转移指令的转移结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410215006.0A CN103970512B (zh) | 2014-05-21 | 2014-05-21 | 多核处理器及其并行重放方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410215006.0A CN103970512B (zh) | 2014-05-21 | 2014-05-21 | 多核处理器及其并行重放方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103970512A CN103970512A (zh) | 2014-08-06 |
CN103970512B true CN103970512B (zh) | 2016-09-14 |
Family
ID=51240058
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410215006.0A Active CN103970512B (zh) | 2014-05-21 | 2014-05-21 | 多核处理器及其并行重放方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103970512B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3451239A4 (en) | 2016-04-29 | 2020-01-01 | Cambricon Technologies Corporation Limited | APPARATUS AND METHOD FOR PERFORMING RECURRENT NEURONAL NETWORK AND LTSM CALCULATIONS |
CN107729127A (zh) * | 2016-08-12 | 2018-02-23 | 北京小米移动软件有限公司 | 智能控制方法及装置 |
CN108345789B (zh) * | 2017-04-01 | 2019-02-22 | 清华大学 | 记录访存操作信息的方法及装置 |
CN109710470A (zh) * | 2018-12-03 | 2019-05-03 | 中科曙光信息产业成都有限公司 | 处理器重放调试方法及系统 |
CN112231246A (zh) * | 2020-10-31 | 2021-01-15 | 王志平 | 一种处理器缓存结构的实现方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0270983A2 (en) * | 1986-12-08 | 1988-06-15 | International Business Machines Corporation | Method for the parallel simulation of multiprocessor computer systems |
CN102591763A (zh) * | 2011-12-31 | 2012-07-18 | 龙芯中科技术有限公司 | 一种基于确定性重放的处理器整体故障检测系统与方法 |
CN103365776A (zh) * | 2013-06-28 | 2013-10-23 | 中国科学院计算技术研究所 | 基于确定性重放的并行系统弱一致性的验证方法和系统 |
CN103425583A (zh) * | 2013-08-25 | 2013-12-04 | 浙江大学 | 一种多dsp并行系统的跟踪和回放方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040230784A1 (en) * | 2003-05-12 | 2004-11-18 | Cohen Eugene M. | Concurrent program loading and execution |
-
2014
- 2014-05-21 CN CN201410215006.0A patent/CN103970512B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0270983A2 (en) * | 1986-12-08 | 1988-06-15 | International Business Machines Corporation | Method for the parallel simulation of multiprocessor computer systems |
CN102591763A (zh) * | 2011-12-31 | 2012-07-18 | 龙芯中科技术有限公司 | 一种基于确定性重放的处理器整体故障检测系统与方法 |
CN103365776A (zh) * | 2013-06-28 | 2013-10-23 | 中国科学院计算技术研究所 | 基于确定性重放的并行系统弱一致性的验证方法和系统 |
CN103425583A (zh) * | 2013-08-25 | 2013-12-04 | 浙江大学 | 一种多dsp并行系统的跟踪和回放方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103970512A (zh) | 2014-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103970512B (zh) | 多核处理器及其并行重放方法 | |
CN104881494B (zh) | 与Redis服务器进行数据同步的方法、装置和系统 | |
US10019196B2 (en) | Efficient enforcement of command execution order in solid state drives | |
CN104965757B (zh) | 虚拟机热迁移的方法、虚拟机迁移管理装置及系统 | |
TWI515669B (zh) | 用於狀態機中資料分析之系統與方法 | |
CN104541244B (zh) | 用于进行重放执行的方法和设备 | |
US12014214B2 (en) | Tile subsystem and method for automated data flow and data processing within an integrated circuit architecture | |
CN105074671B (zh) | 用于在内核模块和设备驱动程序中检测并发编程错误的方法和系统 | |
TW201506632A (zh) | 用於提供藉由狀態機器引擎所接收之資料之方法及裝置 | |
US9817612B2 (en) | High-performance hash joins using memory with extensive internal parallelism | |
CN104601471B (zh) | 一种转发信息表的读写方法及网络处理器 | |
CN104571956A (zh) | 一种数据写入方法及拆分装置 | |
US9804903B2 (en) | Data processing apparatus for pipeline execution acceleration and method thereof | |
CN100573500C (zh) | 基于Avalon总线的流处理器IP核 | |
CN106030532A (zh) | 用于事务存储器程序的软件回放器 | |
CN115629844A (zh) | 一种虚拟机迁移方法、系统、设备及存储介质 | |
CN107480056A (zh) | 一种软件测试方法和装置 | |
CN102096734A (zh) | 一种验证总线乱序传输的方法和装置 | |
US8375188B1 (en) | Techniques for epoch pipelining | |
CN107741965A (zh) | 数据库同步处理方法、装置、计算设备及计算机存储介质 | |
JP2014219980A (ja) | メモリ制御装置及びメモリ制御方法 | |
CN106537331B (zh) | 指令处理方法及设备 | |
CN107025064B (zh) | 一种低延迟高iops的数据访问方法 | |
CN101819608B (zh) | 一种微处理器指令级随机验证中加速取指的装置和方法 | |
JP2008102599A (ja) | プロセッサ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder |
Address after: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing Patentee after: Loongson Zhongke Technology Co.,Ltd. Address before: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing Patentee before: LOONGSON TECHNOLOGY Corp.,Ltd. |
|
CP01 | Change in the name or title of a patent holder |