发明内容
本发明实施例提供一种多核处理器及数据访问方法,用以解决现有技术中多个处理核协同产生的冲突导致无法保证多核处理器性能的问题。
第一方面,本发明实施例提供一种多核处理器,包括:至少两个处理核,以及与所述至少两个处理核通过总线连接的串行协处理器;
各所述处理核,分别用于读取共享数据访问指令,将所述共享数据访问指令通过总线发送给所述串行协处理器;
所述串行协处理器,用于对通过总线接收到的全部共享数据访问指令串行化,并根据串行化后的各共享数据访问指令依次通过本地的L1缓存访问共享数据。
结合第一方面,在第一方面的第一种可能的实现方式中,所述共享数据访问指令包括访问地址;所述通过本地的L1缓存访问共享数据,包括:当所述访问地址命中本地的L1缓存时,访问本地的L1缓存中的共享数据。
结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述共享数据访问指令包括访问地址;所述通过本地的L1缓存访问共享数据,包括:当所述访问地址未命中本地的L1缓存时,通过本地的L1缓存访问其它级缓存或内存中的共享数据。
结合第一方面或第一方面的上述任一种可能的实现方式,在第一方面的第三种可能的实现方式中,当所述共享数据访问指令为共享数据读指令时,所述通过本地的L1缓存访问共享数据,包括:通过本地的L1缓存读取所述共享数据读指令对应的共享数据;
所述串行协处理器还用于,将所述读取的共享数据通过所述总线返回给发送所述共享数据读指令的处理核。
第二方面,本发明实施例提供一种数据访问方法,包括:
读取共享数据访问指令;
将所述共享数据访问指令通过总线发送给串行协处理器,以使所述串行协处理器对通过总线接收到的全部共享数据访问指令串行化并根据串行化后的各共享数据访问指令依次通过本地的L1缓存访问共享数据。
结合第二方面,在第二方面的第一种可能的实现方式中,当所述共享数据访问指令为共享数据读指令时,所述将所述共享数据访问指令通过总线发送给串行协处理器之后,还包括:
接收所述串行协处理器通过总线返回的所述共享数据读指令对应的共享数据。
第三方面,本发明提供一种数据访问方法,包括:
通过总线接收各处理核发送的共享数据访问指令;
对接收到的全部共享数据访问指令串行化;
根据串行化后的各共享数据访问指令依次通过本地的L1缓存访问共享数据。
结合第三方面,在第三方面的第一种可能的实现方式中,所述共享数据访问指令包括访问地址;所述通过本地的L1缓存访问共享数据包括:
当所述访问地址命中本地的L1缓存时,访问本地的L1缓存中的共享数据。
结合第三方面或第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,所述共享数据访问指令包括访问地址;所述通过本地的L1缓存访问共享数据包括:
当所述访问地址未命中本地的L1缓存时,通过本地的L1缓存访问其它级缓存或内存中的共享数据。
结合第三方面或第三方面的上述任一种可能的实现方式,在第三方面的第三种可能的实现方式中,当所述各共享数据访问指令中包括共享数据读指令时,所述通过本地的L1缓存访问共享数据,包括:
通过本地的L1缓存读取所述共享数据读指令对应的共享数据;
所述方法还包括:将所述读取的共享数据通过所述总线返回给发送所述共享数据读指令的处理核。
以上多个技术方案中的一个至少具有如下技术效果:
本发明实施例通过在多核处理器中设置一个与各处理核通过总线连接的串行协处理器,串行协处理器对通过总线接收到的各处理核发送的共享数据访问指令串行化,并根据串行化后的各共享数据访问指令依次通过本地的L1缓存访问共享数据,即由串行协处理器完成各核处理器之间的协同操作,具体地,当多个处理核协同时,即多个处理核同时访问同一共享数据时,由于共享数据均指向串行协处理器且串行协处理器能将通过总线接收到的全部共享数据访问指令串行化,因此,解决了冲突问题,进而保证了协同时间的相对固定。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的一种多核处理器100的结构示意图。如图1所示,多核处理器100包括:至少两个处理核101,以及与所述至少两个处理核通过总线102连接的串行协处理器103;
各处理核101,分别用于读取共享数据访问指令,将所述共享数据访问指令通过总线102发送给串行协处理器103;
串行协处理器103,用于根据对通过总线102接收到的全部共享数据访问指令串行化,并根据串行化后的各共享数据访问指令依次通过本地的L1cache1031访问共享数据。
另外,各处理核101的L1cache1011和串行协处理器103的L1cache1031均可以直接与内存连接,或通过L2cache与内存连接,或通过L2cache和L3cache与内存连接。另外,串行协处理器103可以看做一个特别的协处理器,能够对从总线接收到的各指令串行化,即顺序执行各指令。
通常,各处理核101分别从内存的指令空间中读取共享数据访问指令。本发明实施例中,新增设计一类指向共享数据的专用指令,即共享数据访问指令。需要说明的是,各处理核101发送给串行协处理器103的各共享数据访问指令的对应的访问类型或访问地址,可以相同,也可以不同,其中,访问类型包括读取、写入等;对应地,当共享数据访问指令的对应的访问类型为读取时,该共享数据访问指令也可称为共享数据读指令,当共享数据访问指令的对应的访问类型为写入时,该共享数据访问指令也可称为共享数据写指令。
进一步地,所述共享数据访问指令包括访问地址;所述通过本地的L1cache1031访问共享数据,包括:当所述访问地址命中本地的L1cache1031时,访问本地的L1cache1031中的共享数据。
进一步地,所述共享数据访问指令包括访问地址;所述通过本地的L1cache1031访问共享数据,包括:当所述访问地址未命中L1cache1031时,通过L1cache1031访问其它级缓存或内存中的共享数据。
具体地,串行协处理器103根据各共享数据访问指令访问L1cache1031时,可能出现命中和不命中两种情况,当命中时,串行协处理器103直接基于本地的L1cache1031完成访问,当不命中时,串行协处理器103可以进一步地通过本地的L1cache1031,访问更高级别的缓存或内存,以完成访问。相当于,各核处理器之间的协同时间有两类,一类是命中场景下的协同时间,另一种是不命中场景下的协同时间,均相对固定。
当所述共享数据访问指令为共享数据读指令时,所述通过本地的L1cache1031访问共享数据,包括:通过本地的L1cache1031读取所述共享数据读指令对应的读数据;串行协处理器103还用于,将所述读取的共享数据通过总线102返回给发送所述共享数据读指令的处理核101。
图2为图1所示实施例的一种应用示意图。如图2所示,Core0、Core1、Core2均为多核处理器中的处理核,Core0、Core1、Core2与串行协处理器中均包括各自的L1cache,Core0、Core1、Core2与串行协处理器之间均通过总线连接。其中,Core0、Core1、Core2可以通过各自的L1cache从更高级别的L2级cache或内存的指令空间读取指令,Core0、Core1、Core2与串行协处理器均可以通过各自的L1cache从更高级别的L2cache或内存的数据空间读写数据。
本发明实施例通过在多核处理器中设置一个与各处理核通过总线连接的串行协处理器,串行协处理器对通过总线接收到的各处理核发送的共享数据访问指令串行化,并根据串行化后的各共享数据访问指令依次通过本地的L1缓存访问共享数据,即由串行协处理器完成各核处理器之间的协同操作,具体地,当多个处理核协同时,即多个处理核同时访问同一共享数据时,由于共享数据均指向串行协处理器且串行协处理器能将通过总线接收到的全部共享数据访问指令串行化,因此,解决了冲突问题,进而保证了协同时间的相对固定。
图3为本发明实施例提供的一种数据访问方法的流程示意图。如图3所示,该方法包括:
301、读取共享数据访问指令。
举例来说,处理核从本地的L1cache或更高级别的cache或内存的指令空间中读取共享数据访问指令。
302、将所述共享数据访问指令通过总线发送给串行协处理器,以使所述串行协处理器对通过总线接收到的全部共享数据访问指令串行化并根据串行化后的各共享数据访问指令依次通过本地的L1cache访问共享数据。
本发明实施例中,新增设计一类指向共享数据的专用指令,即共享数据访问指令。基于图1所示的硬件体系,处理核能够识别该类新增的共享数据访问指令,并在读取到共享数据访问指令后直接将所述共享数据访问指令通过自身与串行协处理器之间的总线发送给所述串行协处理器。
另外,若处理核读取到指向私有数据的通用指令,则通过处理核本地的L1cache进行处理。
进一步地,当所述共享数据访问指令为共享数据读指令时,所述将所述共享数据访问指令通过总线发送给串行协处理器之后,还包括:
接收所述串行协处理器通过总线返回的所述共享数据读指令对应的共享数据。
本发明实施例通过在多核处理器中设置一个与各处理核通过总线连接的串行协处理器,串行协处理器对通过总线接收到的各处理核发送的共享数据访问指令串行化,并根据串行化后的各共享数据访问指令依次通过本地的L1缓存访问共享数据,即由串行协处理器完成各核处理器之间的协同操作,具体地,当多个处理核协同时,即多个处理核同时访问同一共享数据时,由于共享数据均指向串行协处理器且串行协处理器能将通过总线接收到的全部共享数据访问指令串行化,因此,解决了冲突问题,进而保证了协同时间的相对固定。
图4为本发明实施例提供的又一种数据访问方法的流程示意图。如图4所示,该方法包括:
401、通过总线接收各处理核发送的共享数据访问指令。
举例来说,串行协处理器通过总线接收各处理核发送的共享数据访问指令。
402、对接收到的全部共享数据访问指令串行化。
具体地,对从总线上接收到全部共享数据访问指令进行串行化,以使顺序执行各共享数据访问指令。
403、根据串行化后的各共享数据访问指令依次通过本地的L1cache访问共享数据。
进一步地,所述共享数据访问指令包括访问地址;所述通过本地的L1cache访问共享数据,包括:
当所述访问地址命中本地的L1cache时,访问本地的L1cache中的共享数据。
进一步地,所述共享数据访问指令包括访问地址;所述通过本地的L1cache访问共享数据,包括:
当所述访问地址未命中本地的L1cache时,通过本地的L1cache访问其它级缓存或内存中的共享数据。
具体地,串行协处理器根据各共享数据访问指令访问本地的L1cache时,可能出现命中和不命中两种情况,当命中时,串行协处理器直接基于本地的L1cache完成访问,当不命中时,串行协处理器可以进一步地通过本地的L1cache,访问更高级别的cache或内存,以完成访问。
本发明实施例中,新增设计一类指向共享数据的专用指令,即共享数据访问指令。基于图1所示的硬件体系,处理核能够识别该类新增的共享数据访问指令,并在读取到共享数据访问指令后直接将所述共享数据访问指令通过自身与串行协处理器之间的总线发送给所述串行协处理器。串行协处理器对从总线上接收到的全部共享数据访问指令进行串行化后,并依次执行串行化后的各共享数据访问指令。
进一步地,当接收到的全部共享数据访问指令中包括共享数据读指令时,所述通过本地的L1cache访问共享数据,包括:
通过本地的L1cache读取所述共享数据读指令对应的读数据;
对应地,403之后还包括:将所述读取的共享数据通过所述总线返回给发送所述共享数据读指令的处理核。
本发明实施例通过在多核处理器中设置一个与各处理核通过总线连接的串行协处理器,串行协处理器对通过总线接收到的各处理核发送的共享数据访问指令串行化,并根据串行化后的各共享数据访问指令依次通过本地的L1缓存访问共享数据,即由串行协处理器完成各核处理器之间的协同操作,具体地,当多个处理核协同时,即多个处理核同时访问同一共享数据时,由于共享数据均指向串行协处理器且串行协处理器能将通过总线接收到的全部共享数据访问指令串行化,因此,解决了冲突问题,进而保证了协同时间的相对固定。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。