发明内容
本发明实施例提供一种系统内存访问方法、节点控制器和多处理器系统,能够减少系统时延,提高多处理系统的性能。
第一方面,提供了一种多处理器系统的系统内存访问方法,该多处理器系统包括本地节点、第一远端节点和第二远端节点,该本地节点包括节点控制器和该多处理器系统的系统内存,该方法包括:节点控制器接收该第一远端节点发送的事务请求,该事务请求携带该第一远端节点准备访问的系统内存的地址信息和该第一远端节点的系统内存访问类型;该节点控制器获取该系统内存的地址信息在该节点控制器的目录中对应的目录项的访问属性;如果该目录项的访问属性包含第二远端节点对该目录项对应的系统内存的访问状态,则该节点控制器向该第二远端节点发送侦听消息,并在发送该侦听消息的过程中并行向该系统内存发送内存访问请求,该内存访问请求中携带该第一远端节点的系统内存访问类型;该节点控制器根据该侦听消息的反馈结果和/或该内存访问请求的反馈结果,向该第一远端节点发送该事务请求的响应消息。。
结合第一方面,在第一种可能的实现方式中,具体实现为:该第二远端节点对该目录项所对应的系统内存的访问状态包括:该第二远端节点对该目录项所对应的系统内存的独占或共享。
结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,节点控制器根据该侦听消息的反馈结果和/或该内存访问请求的反馈结果,向该第一远端节点发送该事务请求的响应消息具体实现为:如果该目录项的访问状态为该第二远端节点对该目录项所对应的系统内存的独占,且该第一远端节点的内存访问类型为独占或共享,且该侦听消息的反馈结果指示该侦听消息引起该第二远端节点的数据转发,则该节点控制器根据该侦听消息的反馈结果向该第一远端节点发送该事务请求的响应消息;或者如果该目录项的访问状态为该第二远端节点对该目录项所对应的系统内存的独占,且该第一远端节点的内存访问类型为独占或共享,且该侦听消息的反馈结果指示该侦听消息未引起该第二远端节点的数据转发,则该节点控制器根据该侦听消息的反馈结果和该内存访问请求的反馈结果向该第一远端节点发送该事务请求的响应消息。
结合第一方面的第一种可能的实现方式,在第三种可能的实现方式中,节点控制器根据该侦听消息的反馈结果和/或该内存访问请求的反馈结果,向该第一远端节点发送该事务请求的响应消息具体实现为:如果该目录项的访问状态为该第二远端节点对该目录项所对应的系统内存的共享,且该第一远端节点的内存访问类型为共享,且该侦听消息的反馈结果指示该侦听消息引起该第二远端节点的数据转发,则该节点控制器根据该侦听消息的反馈结果向该第一远端节点发送该事务请求的响应消息;或者如果该目录项的访问状态为该第二远端节点对该目录项所对应的系统内存的共享,且该第一远端节点的内存访问类型为共享,且该侦听消息的反馈结果指示该侦听消息未引起该第二远端节点的数据转发,则该节点控制器根据该侦听消息的反馈结果和该内存访问请求的反馈结果向该第一远端节点发送该事务请求的响应消息。
结合第一方面的第一种可能的实现方式,在第四种可能的实现方式中,节点控制器根据该侦听消息的反馈结果和/或该内存访问请求的反馈结果,向该第一远端节点发送该事务请求的响应消息具体实现为:如果目录项的状态为该第二远端节点对该目录项所对应的系统内存的独占或共享,且该第一远端节点的内存访问类型为无效,则该节点控制器根据该侦听消息的反馈结果和该内存访问请求的反馈结果向该第一远端节点发送该事务请求的响应消息;或者如果目录项的状态为该第二远端节点对该目录项所对应的系统内存的共享,且该第一远端节点的内存访问类型为独占,则该节点控制器根据该侦听消息的反馈结果和该内存访问请求的反馈结果向该第一远端节点发送该事务请求的响应消息。
第二方面,提供了多处理器系统的系统内存访问方法,该多处理器系统包括本地节点、第一远端节点和第二远端节点,该本地节点包括节点控制器和该多处理器系统的系统内存,该方法包括:
结合第二方面,在第一种可能的实现方式中,具体实现为:该第二远端节点对该目录项所对应的系统内存的访问状态包括:该第二远端节点对该目录项所对应的系统内存的独占或共享。
结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,节点控制器根据该侦听消息的反馈结果和/或该内存访问请求的反馈结果,向该第一远端节点发送该事务请求的响应消息具体实现为:如果该目录项的访问状态为该第二远端节点对该目录项所对应的系统内存的独占,且该第一远端节点的内存访问类型为独占或共享,且该侦听消息的反馈结果指示该侦听消息引起该第二远端节点的数据转发,则该节点控制器根据该侦听消息的反馈结果向该第一远端节点发送该事务请求的响应消息;或者如果该目录项的访问状态为该第二远端节点对该目录项所对应的系统内存的独占,且该第一远端节点的内存访问类型为独占或共享,且该侦听消息的反馈结果指示该侦听消息未引起该第二远端节点的数据转发,则该节点控制器根据该侦听消息的反馈结果和该内存访问请求的反馈结果向该第一远端节点发送该事务请求的响应消息。
结合第二方面的第一种可能的实现方式,在第三种可能的实现方式中,节点控制器根据该侦听消息的反馈结果和/或该内存访问请求的反馈结果,向该第一远端节点发送该事务请求的响应消息具体实现为:如果该目录项的访问状态为该第二远端节点对该目录项所对应的系统内存的共享,且该第一远端节点的内存访问类型为共享,且该侦听消息的反馈结果指示该侦听消息引起该第二远端节点的数据转发,则该节点控制器根据该侦听消息的反馈结果向该第一远端节点发送该事务请求的响应消息;或者如果该目录项的访问状态为该第二远端节点对该目录项所对应的系统内存的共享,且该第一远端节点的内存访问类型为共享,且该侦听消息的反馈结果指示该侦听消息未引起该第二远端节点的数据转发,则该节点控制器根据该侦听消息的反馈结果和该内存访问请求的反馈结果向该第一远端节点发送该事务请求的响应消息。
结合第二方面的第一种可能的实现方式,在第四种可能的实现方式中,节点控制器根据该侦听消息的反馈结果和/或该内存访问请求的反馈结果,向该第一远端节点发送该事务请求的响应消息具体实现为:如果目录项的状态为该第二远端节点对该目录项所对应的系统内存的独占或共享,且该第一远端节点的内存访问类型为无效,则该节点控制器根据该侦听消息的反馈结果和该内存访问请求的反馈结果向该第一远端节点发送该事务请求的响应消息;或者如果目录项的状态为该第二远端节点对该目录项所对应的系统内存的共享,且该第一远端节点的内存访问类型为独占,则该节点控制器根据该侦听消息的反馈结果和该内存访问请求的反馈结果向该第一远端节点发送该事务请求的响应消息。
第三方面,提供了多处理器系统的一种节点控制器,该多处理器系统包括本地节点、第一远端节点和第二远端节点,该本地节点包括节点控制器和该多处理器系统的系统内存,该节点控制器包括:接收单元,用于接收该第一远端节点发送的事务请求,该事务请求携带该第一远端节点准备访问的系统内存的地址信息和该第一远端节点的系统内存访问类型;获取单元,用于获取该系统内存的地址信息在该节点控制器的目录中对应的目录项的访问属性;发送单元,用于如果该目录项的访问属性包含第二远端节点对该目录项对应的系统内存的访问状态,则向该第二远端节点发送侦听消息,并在发送该侦听消息的过程中并行向该系统内存发送内存访问请求;该发送单元还用于根据该侦听消息的反馈结果和/或该内存访问请求的反馈结果,向该第一远端节点发送该事务请求的响应消息。
结合第三方面,在第一种可能的实现方式中,具体实现为:该第二远端节点对该目录项所对应的系统内存的访问状态包括:该第二远端节点对该目录项所对应的系统内存的独占或共享。
结合第三方面的第一种可能的实现方式,在第二种可能的实现方式中,在用于根据该侦听消息的反馈结果和/或该内存访问请求的反馈结果,向该第一远端节点发送该事务请求的响应消息,该发送单元具体实现为:如果该目录项的访问状态为该第二远端节点对该目录项所对应的系统内存的独占,且该第一远端节点的内存访问类型为独占或共享,且该侦听消息的反馈结果指示该侦听消息引起该第二远端节点的数据转发,则根据该侦听消息的反馈结果向该第一远端节点发送该事务请求的响应消息;或者如果该目录项的访问状态为该第二远端节点对该目录项所对应的系统内存的独占,且该第一远端节点的内存访问类型为独占或共享,且该侦听消息的反馈结果指示该侦听消息未引起该第二远端节点的数据转发,则根据该侦听消息的反馈结果和该内存访问请求的反馈结果向该第一远端节点发送该事务请求的响应消息。
结合第三方面的第一种可能的实现方式,在第三种可能的实现方式中,在用于根据该侦听消息的反馈结果和/或该内存访问请求的反馈结果,向该第一远端节点发送该事务请求的响应消息,该发送单元具体实现为:如果该目录项的访问状态为该第二远端节点对该目录项所对应的系统内存的共享,且该第一远端节点的内存访问类型为共享,且该侦听消息的反馈结果指示该侦听消息引起该第二远端节点的数据转发,则根据该侦听消息的反馈结果向该第一远端节点发送该事务请求的响应消息;或者如果该目录项的访问状态为该第二远端节点对该目录项所对应的系统内存的共享,且该第一远端节点的内存访问类型为共享,且该侦听消息的反馈结果指示该侦听消息未引起该第二远端节点的数据转发,则根据该侦听消息的反馈结果和该内存访问请求的反馈结果向该第一远端节点发送该事务请求的响应消息。
结合第三方面的第一种可能的实现方式,在第四种可能的实现方式中,具体实现为:在用于根据该侦听消息的反馈结果和/或该内存访问请求的反馈结果,向该第一远端节点发送该事务请求的响应消息,该发送单元具体实现为:如果目录项的状态为该第二远端节点对该目录项所对应的系统内存的独占或共享,且该第一远端节点的内存访问类型为无效,则根据该侦听消息的反馈结果和该内存访问请求的反馈结果向该第一远端节点发送该事务请求的响应消息;或者如果目录项的状态为该第二远端节点对该目录项所对应的系统内存的共享,且该第一远端节点的内存访问类型为独占,则根据该侦听消息的反馈结果和该内存访问请求的反馈结果向该第一远端节点发送该事务请求的响应消息。
第四方面,提供了多处理器系统的一种节点控制器,该多处理器系统包括本地节点、第一远端节点和第二远端节点,该本地节点包括节点控制器和该多处理器系统的系统内存,该节点控制器包括:
结合第四方面,在第一种可能的实现方式中,具体实现为:该第二远端节点对该目录项所对应的系统内存的访问状态包括:该第二远端节点对该目录项所对应的系统内存的独占或共享。
结合第四方面的第一种可能的实现方式,在第二种可能的实现方式中,在用于根据该侦听消息的反馈结果和/或该内存访问请求的反馈结果,向该第一远端节点发送该事务请求的响应消息,该发送单元具体实现为:如果该目录项的访问状态为该第二远端节点对该目录项所对应的系统内存的独占,且该第一远端节点的内存访问类型为独占或共享,且该侦听消息的反馈结果指示该侦听消息引起该第二远端节点的数据转发,则根据该侦听消息的反馈结果向该第一远端节点发送该事务请求的响应消息;或者如果该目录项的访问状态为该第二远端节点对该目录项所对应的系统内存的独占,且该第一远端节点的内存访问类型为独占或共享,且该侦听消息的反馈结果指示该侦听消息未引起该第二远端节点的数据转发,则根据该侦听消息的反馈结果和该内存访问请求的反馈结果向该第一远端节点发送该事务请求的响应消息。
结合第四方面的第一种可能的实现方式,在第三种可能的实现方式中,在用于根据该侦听消息的反馈结果和/或该内存访问请求的反馈结果,向该第一远端节点发送该事务请求的响应消息,该发送单元具体实现为:如果该目录项的访问状态为该第二远端节点对该目录项所对应的系统内存的共享,且该第一远端节点的内存访问类型为共享,且该侦听消息的反馈结果指示该侦听消息引起该第二远端节点的数据转发,则根据该侦听消息的反馈结果向该第一远端节点发送该事务请求的响应消息;或者如果该目录项的访问状态为该第二远端节点对该目录项所对应的系统内存的共享,且该第一远端节点的内存访问类型为共享,且该侦听消息的反馈结果指示该侦听消息未引起该第二远端节点的数据转发,则根据该侦听消息的反馈结果和该内存访问请求的反馈结果向该第一远端节点发送该事务请求的响应消息。
结合第四方面的第一种可能的实现方式,在第四种可能的实现方式中,具体实现为:在用于根据该侦听消息的反馈结果和/或该内存访问请求的反馈结果,向该第一远端节点发送该事务请求的响应消息,该发送单元具体实现为:如果目录项的状态为该第二远端节点对该目录项所对应的系统内存的独占或共享,且该第一远端节点的内存访问类型为无效,则根据该侦听消息的反馈结果和该内存访问请求的反馈结果向该第一远端节点发送该事务请求的响应消息;或者如果目录项的状态为该第二远端节点对该目录项所对应的系统内存的共享,且该第一远端节点的内存访问类型为独占,则根据该侦听消息的反馈结果和该内存访问请求的反馈结果向该第一远端节点发送该事务请求的响应消息。
第五方面,提供了一种多处理器系统,该多处理器系统包括本地节点、第一远端节点和第二远端节点,该本地节点包括该多处理器系统的系统内存和节点控制器,该节点控制器为本发明第三方面或第三方面的第一种可能的实现方式至第三方面的第四种可能的实现方式中任一种可能的实现方式或第四方面或第四方面的第一种可能的实现方式至第四方面的第四种可能的实现方式中任一种可能的实现方式所示的节点控制器。
基于以上技术方案,本发明实施例的用于系统内存访问方法、节点控制器和多处理器系统,能够减少系统响应事务请求的时延,提高多处理系统的性能。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是本发明实施例的应用场景示意图。如图1所示,一个多处理器(CPU)系统中包括了本地节点(100)和多个远端节点(101),本地节点(100)与各远端节点(101)通过节点间网络(102)连接。本地节点(100)包括了一个本地网络(106)、一个节点控制器(103)、一个或多个系统内存(104)。系统内存(104)通过本地网络(106)与节点控制器相连(103)为方便描述,本地节点(100)中所有的系统内存统(104)称为本地内存。本地节点(100)通过节点控制器(103)与节点间网络(102)连接。节点控制器(103)包含了一个目录(105)。节点控制器(103)通过该目录(105)控制本地内存(104)。图中虽然只示出了2个远端节点的情况,但本发明实施例的方法并不局限于此,还可以是3个、4个乃至无穷个远端节点的情况。如图1所示,一个事务请求可包括①、②、③、④、⑤五个步骤,其中①表示发起事务请求,②表示访问目录,③表示侦听及侦听反馈,④表示系统内存请求及系统内存请求反馈,⑤表示对事务请求反馈。当然,根据实际情况的不同,也可减少其中的某些不必要的步骤。
为了方便理解本发明实施例,首先在此介绍本发明实施例描述中会引入的几个要素。
目录,是多处理器系统中本地节点的节点控制器管理系统内存的对象,包含系统内存的地址信息,以及远端节点对系统内存的访问属性,每个系统内存的地址都对应一个目录项。目录项的访问属性可包括独占、共享和无效三种方式。
目录项状态独占,表示存在唯一远端节点独占用该目录项对应的系统内存。
目录项状态共享,表示存在一个或以上远端节点共享该目录项对应的系统内存。
目录项状态无效,表示不存在远端节点占用该目录项对应的系统内存。
远端节点对系统内存的访问类型,也包含独占、共享和无效三种方式。
远端节点对系统内存的独占,是指远端节点要求对系统内存独占,不允许其他远端节点在本远端节点独占该系统内存的时候同时占用该系统内存。
远端节点对系统内存的共享,是指远端节点要求占用该系统内存,但允许其他远端节点同时共享占用该系统内存。
远端节点对系统内存的无效,是指远端节点要求临时占用该系统内存,在成功读取数据后马上释放,并缓存系统内存,不保留占用状态。
图2是本发明实施例多处理器系统的系统内存访问方法流程图。图2的方法由多处理器系统中本地节点的节点控制器执行。其中,该多处理器系统包括本地节点、第一远端节点和第二远端节点,该本地节点包括节点控制器和该多处理器系统的系统内存。该方法包括:
201,节点控制器接收该第一远端节点发送的事务请求。
其中,该事务请求携带该第一远端节点准备访问的系统内存的地址信息和该第一远端节点的系统内存访问类型。
通常情况下,远端节点发送的一个事务请求中,包含远端节点包含系统内存的一个地址信息。系统内存的地址信息,具体可以是系统内存的物理地址、节点标识或其它能够被节点控制器识别的系统内存地址。
当然,也不排除一个事务请求中存在多个请求访问的系统内存地址的情况,本发明实施例在此不作限制。
第一远端节点的系统内存访问类型,可包括独占、共享和无效三种类型。
202,该节点控制器获取该系统内存的地址信息在该节点控制器的目录中对应的目录项的访问属性。
节点控制器的目录记录着系统内存所有地址的访问属性,目录下的一个目录项对应着系统内存的一个内存地址。
目录项的访问属性可包括独占、共享和无效三种目录项状态。
203,如果该目录项的访问属性包含第二远端节点对该目录项对应的系统内存的访问状态,则向该第二远端节点发送侦听消息,并在发送该侦听消息的过程中并行向该系统内存发送内存访问请求信息。
其中,该内存访问请求中携带该第一远端节点的系统内存访问类型。
204,节点控制器根据侦听消息的反馈结果和\或内存访问请求的反馈结果,向第一远端节点发送所述事务请求的响应消息。
本发明实施例中,通过并行执行对当前已访问目录的其它远端节点的侦听流程和对系统内存的访问请求流程,减少了当前待访问系统内存的远端节点的事务请求等待时间,提高了多处理器系统的性能。
可选地,步骤203中,该第二远端节点对该目录项所对应的系统内存的访问状态包括:该第二远端节点对该目录项所对应的系统内存的独占或共享。当目录项为无效时,不存在远端节点对目录项所对应的系统内存的访问,因此,第二远端节点对目录项所对应的系统内存的访问状态只可能包括独占和共享两种状态。
可选地,作为一个实施例,该节点控制器根据该侦听消息的反馈结果和/或该内存访问请求的反馈结果,向该第一远端节点发送该事务请求的响应消息具体可以实现为:如果该目录项的访问状态为该第二远端节点对该目录项所对应的系统内存的独占,且该第一远端节点的内存访问类型为独占或共享,且该侦听消息的反馈结果指示该侦听消息引起该第二远端节点的数据转发,则该节点控制器根据该侦听消息的反馈结果向该第一远端节点发送该事务请求的响应消息。
可选地,作为另一个实施例,该节点控制器根据该侦听消息的反馈结果和/或该内存访问请求的反馈结果,向该第一远端节点发送该事务请求的响应消息具体可以实现为:如果该目录项的访问状态为该第二远端节点对该目录项所对应的系统内存的独占,且该第一远端节点的内存访问类型为独占或共享,且该侦听消息的反馈结果指示该侦听消息未引起该第二远端节点的数据转发,则该节点控制器根据该侦听消息的反馈结果和该内存访问请求的反馈结果向该第一远端节点发送该事务请求的响应消息。
可选地,作为再一个实施例,该节点控制器根据该侦听消息的反馈结果和/或该内存访问请求的反馈结果,向该第一远端节点发送该事务请求的响应消息具体可以实现为:如果该目录项的访问状态为该第二远端节点对该目录项所对应的系统内存的共享,且该第一远端节点的内存访问类型为共享,且该侦听消息的反馈结果指示该侦听消息引起该第二远端节点的数据转发,则该节点控制器根据该侦听消息的反馈结果向该第一远端节点发送该事务请求的响应消息。
可选地,作为再一个实施例,该节点控制器根据该侦听消息的反馈结果和/或该内存访问请求的反馈结果,向该第一远端节点发送该事务请求的响应消息具体可以实现为:如果该目录项的访问状态为该第二远端节点对该目录项所对应的系统内存的共享,且该第一远端节点的内存访问类型为共享,且该侦听消息的反馈结果指示该侦听消息未引起该第二远端节点的数据转发,则该节点控制器根据该侦听消息的反馈结果和该内存访问请求的反馈结果向该第一远端节点发送该事务请求的响应消息。
可选地,作为再一个实施例,该节点控制器根据该侦听消息的反馈结果和/或该内存访问请求的反馈结果,向该第一远端节点发送该事务请求的响应消息具体可以实现为:如果目录项的状态为该第二远端节点对该目录项所对应的系统内存的独占或共享,且该第一远端节点的内存访问类型为无效时,则该节点控制器根据该侦听消息的反馈结果和该内存访问请求的反馈结果向该第一远端节点发送该事务请求的响应消息。
可选地,作为再一个实施例,该节点控制器根据该侦听消息的反馈结果和/或该内存访问请求的反馈结果,向该第一远端节点发送该事务请求的响应消息具体可以实现为:如果目录项的状态为该第二远端节点对该目录项所对应的系统内存的共享,且该第一远端节点的内存访问类型为独占时,则该节点控制器根据该侦听消息的反馈结果和该内存访问请求的反馈结果向该第一远端节点发送该事务请求的响应消息。
本发明实施例中,通过并行执行对当前已访问目录的其它远端节点的侦听流程和对系统内存的访问请求流程,根据目录项的状态、远端节点的内存访问类型及侦听消息的反馈结果的不同,使得节点控制器在保证事物请求反馈结果正确的前提下尽可能的减少处理时延,提高了系统的效率。
下面,结合具体的实施例,对本发明实施例的方法进行描述。
图3是本发明实施例多处理器系统的系统内存访问的交互流程图。图3中,第一远端节点、第二远端节点和本地节点都属于多处理器系统,多处理器系统的系统内存在本地节点上。
301,第一远端节点发送事务请求。
其中,该事务请求中可包含第一远端节点准备访问的系统内存的地址信息和第一远端节点的系统内存访问类型。该系统内存的地址信息,具体可以是系统内存的物理地址、节点标识或其它能够被节点控制器识别的系统内存地址。
第一远端节点的系统内存访问类型,可包括独占、共享和无效三种类型。
302,节点控制器查询目录。
本地节点的节点控制器在接收到第一远端节点的事务请求后,可根据事务请求中携带的系统内存的地址信息,查询目录以获取该系统内存地址对应的目录项的访问属性。
303,节点控制器获取目录项的访问属性。
节点控制器通过查询目录,可获取该系统内存的地址信息对应的目录项的访问属性。具体地,目录项的访问属性是指当前时刻远端节点对该目录项所对应的系统内存的访问属性。
目录项的访问属性,可包括独占、共享和无效三种类型。
当目录项为独占时,目录项的访问属性包含一个远端节点对目录项的独占状态信息。
当目录项为共享时,目录项的访问属性包含一个或多个远端节点对目录项的独占状态信息。
当目录项为无效时,目录项的访问属性表示不存在远端节点占用该目录项对应的系统内存。
对于目录项为独占和共享时目录项的访问属性中包含的远端节点,不妨命名为第二远端节点,以区别于发起事务请求的第一远端节点。
根据目录的目录项的访问属性(表中简称目录项)及第一远端节点事务请求的内存访问类型(表中简称请求),节点控制器可发起侦听流程和内存访问请求流程。
当目录项的状态为无效时,表明此时不存在其它远端节点对该内存地址的访问,此时节点控制器只需要发起系统内存访问请求流程,即执行步骤306。
当目录项的状态为独占或共享时,节点控制器可同时发起侦听流程和内存访问请求流程,即并行执行步骤304和步骤306。
304,节点控制器向第二远端节点发送侦听消息。
节点控制器根据目录项的访问属性中包含的第二远端节点的信息,向第二远端节点发送侦听消息。
305,节点控制器接收第二远端节点的侦听反馈结果。
节点控制器接收到侦听反馈结果后,跳转至步骤308。
306,节点控制器向系统内存发送内存请求消息。
节点控制器根据请求的系统内存地址,向系统内存发送内存请求消息,该内存请求消息还可携带第一远端节点的系统内存访问类型。
307,节点控制器接收系统内存的内存请求反馈结果。
节点控制器接收到内存请求反馈结果后,跳转至步骤308。
308,节点控制器生成事务请求的反馈消息,并向第一远端节点发送事务请求的反馈消息。
根据目录项的访问属性和第一远端节点事务请求的内存访问类型的不同,节点控制器反馈事务请求所需要的反馈结果也不同。如表1所示,其中,a表示需要侦听流程的反馈结果,b表示需要系统内存访问请求流程的反馈结果。
表1
当目录项的状态为独占,且第一远端节点的内存访问类型为独占或共享时,或者当目录项的状态为共享,且第一远端节点的内存访问类型为共享时,存在3种的可能情况。第一种情况,节点控制器先收到侦听消息的反馈结果,且侦听消息的反馈结果指示该侦听消息引起第二远端节点的数据转发,则节点控制器可不用等待内存访问请求的反馈结果,即可根据侦听消息的反馈结果生成事务请求的反馈消息,并向第一远端节点发送事务请求的反馈消息。第二种情况,节点控制器先收到侦听消息的反馈结果,且侦听消息的反馈结果指示该侦听消息未引起第二远端节点的数据转发,则节点控制器还需要等待内存访问请求的反馈结果,然后根据侦听消息的反馈结果和内存访问请求的反馈结果生成事务请求的反馈消息,并向第一远端节点发送事务请求的反馈消息。第三种情况,节点控制器先收到内存访问请求的反馈结果,则节点控制器还需要等待侦听消息的反馈结果,然后根据侦听消息的反馈结果和内存访问请求的反馈结果生成事务请求的反馈消息,并向第一远端节点发送事务请求的反馈消息。
当目录项的状态为独占或共享,且第一远端节点的内存访问类型为无效时,或者当目录项的状态为共享,且第一远端节点的内存访问类型为独占时,节点控制器需要在侦听消息的反馈结果和内存访问请求的反馈结果都接收到后,再根据侦听消息的反馈结果和内存访问请求的反馈结果生成事务请求的反馈消息,并向第一远端节点发送事务请求的反馈消息。
如图3所示,第一远端节点发送请求的时间为T1,节点控制器查询目录的时间为T2,节点控制器对第二远端节点执行侦听并获得响应的时间为T3,节点控制器请求系统内存并获得响应的时间为T4,节点控制器向第一远端节点发送请求响应的时间为T5。
在本发明实施例中,当T3小于等于T4时,系统可节省T3的时间;当T3大于T4时,系统可节省T4的时间。
图4是本发明实施例多处理器系统的系统内存访问方法流程图。图3的方法由多处理器系统中本地节点的节点控制器执行。其中,该多处理器系统包括本地节点、第一远端节点和第二远端节点,该本地节点包括节点控制器和该多处理器系统的系统内存。该方法包括:
401,节点控制器接收该第一远端节点发送的事务请求。
其中,该事务请求携带该第一远端节点准备访问的系统内存的地址信息和该第一远端节点的系统内存访问类型。
第一远端节点的系统内存访问类型,可包括独占、共享和无效三种类型。
402,该节点控制器获取该系统内存的地址信息在该节点控制器的目录中对应的目录项的访问属性并根据该目录项的访问属性向第二远端节点发送侦听消息,并在获取所述目录项的访问属性和发送所述侦听消息的过程中并行向该系统内存发送内存访问请求。
其中,该目录项的访问属性包含该第二远端节点对该目录项的对应的系统内存的访问状态,该内存访问请求中携带该第一远端节点的系统内存访问类型。
403,该节点控制器根据该侦听消息的反馈结果和/或该内存访问请求的反馈结果,向该第一远端节点发送该事务请求的响应消息。
本发明实施例中,通过在访问目录侦听当前已访问目录的其它远端节点的同时并行执行对系统内存的访问请求,减少了当前待访问系统内存的远端节点的事务请求等待时间,提高了多处理器系统的性能。
可选地,步骤402中,该第二远端节点对该目录项所对应的系统内存的访问状态包括:该第二远端节点对该目录项所对应的系统内存的独占或共享。当目录项为无效时,不存在远端节点对目录项所对应的系统内存的访问,因此,第二远端节点对目录项所对应的系统内存的访问状态只可能包括独占和共享两种状态。
可选地,作为一个实施例,该节点控制器根据该侦听消息的反馈结果和/或该内存访问请求的反馈结果,向该第一远端节点发送该事务请求的响应消息具体可以实现为:如果该目录项的访问状态为该第二远端节点对该目录项所对应的系统内存的独占,且该第一远端节点的内存访问类型为独占或共享,且该侦听消息的反馈结果指示该侦听消息引起该第二远端节点的数据转发,则该节点控制器根据该侦听消息的反馈结果向该第一远端节点发送该事务请求的响应消息。
可选地,作为另一个实施例,该节点控制器根据该侦听消息的反馈结果和/或该内存访问请求的反馈结果,向该第一远端节点发送该事务请求的响应消息具体可以实现为:如果该目录项的访问状态为该第二远端节点对该目录项所对应的系统内存的独占,且该第一远端节点的内存访问类型为独占或共享,且该侦听消息的反馈结果指示该侦听消息未引起该第二远端节点的数据转发,则该节点控制器根据该侦听消息的反馈结果和该内存访问请求的反馈结果向该第一远端节点发送该事务请求的响应消息。
可选地,作为再一个实施例,该节点控制器根据该侦听消息的反馈结果和/或该内存访问请求的反馈结果,向该第一远端节点发送该事务请求的响应消息具体可以实现为:如果该目录项的访问状态为该第二远端节点对该目录项所对应的系统内存的共享,且该第一远端节点的内存访问类型为共享,且该侦听消息的反馈结果指示该侦听消息引起该第二远端节点的数据转发,则该节点控制器根据该侦听消息的反馈结果向该第一远端节点发送该事务请求的响应消息。
可选地,作为再一个实施例,该节点控制器根据该侦听消息的反馈结果和/或该内存访问请求的反馈结果,向该第一远端节点发送该事务请求的响应消息具体可以实现为:如果该目录项的访问状态为该第二远端节点对该目录项所对应的系统内存的共享,且该第一远端节点的内存访问类型为共享,且该侦听消息的反馈结果指示该侦听消息未引起该第二远端节点的数据转发,则该节点控制器根据该侦听消息的反馈结果和该内存访问请求的反馈结果向该第一远端节点发送该事务请求的响应消息。
可选地,作为再一个实施例,该节点控制器根据该侦听消息的反馈结果和/或该内存访问请求的反馈结果,向该第一远端节点发送该事务请求的响应消息具体可以实现为:如果目录项的状态为该第二远端节点对该目录项所对应的系统内存的独占或共享,且该第一远端节点的内存访问类型为无效时,则该节点控制器根据该侦听消息的反馈结果和该内存访问请求的反馈结果向该第一远端节点发送该事务请求的响应消息。
可选地,作为再一个实施例,该节点控制器根据该侦听消息的反馈结果和/或该内存访问请求的反馈结果,向该第一远端节点发送该事务请求的响应消息具体可以实现为:如果目录项的状态为该第二远端节点对该目录项所对应的系统内存的共享,且该第一远端节点的内存访问类型为独占时,则该节点控制器根据该侦听消息的反馈结果和该内存访问请求的反馈结果向该第一远端节点发送该事务请求的响应消息。
本发明实施例中,通过在访问目录侦听当前已访问目录的其它远端节点的同时并行执行对系统内存的访问请求,并根据目录项的状态、远端节点的内存访问类型及侦听消息的反馈结果的不同,使得节点控制器在保证事物请求反馈结果正确的前提下尽可能的减少处理时延,提高了系统的效率。
下面,结合具体的实施例,对本发明实施例的方法进行描述。
图5是本发明实施例多处理器系统的系统内存访问的交互流程图。图5中,第一远端节点、第二远端节点和本地节点都属于多处理器系统,多处理器系统的系统内存在本地节点上。
501,第一远端节点发送事务请求。
其中,该事务请求中可包含第一远端节点准备访问的系统内存的地址信息和第一远端节点的系统内存访问类型。该系统内存的地址信息,具体可以是系统内存的物理地址、节点标识或其它能够被节点控制器识别的系统内存地址。
第一远端节点的系统内存访问类型,可包括独占、共享和无效三种类型。
此时,节点控制器在执行访问目录、侦听流程的同时,并行执行系统内存请求流程。即执行步骤502、506。
502,节点控制器查询目录。
本地节点的节点控制器在接收到第一远端节点的事务请求后,可根据事务请求中携带的系统内存的地址信息,查询目录,以获取该系统内存地址对应的目录项的访问属性。具体地,目录项的访问属性是指当前时刻远端节点对该目录项所对应的系统内存的访问属性。
503,节点控制器获取目录项的访问属性。
节点控制器通过查询目录,可获取该系统内存的地址信息对应的目录当前的访问属性。
具体地,目录项的访问属性是指当前时刻远端节点对该目录项所对应的系统内存的访问属性。
目录项的访问属性,可包括独占、共享和无效三种类型。
当目录项为独占时,目录项的访问属性包含一个远端节点对目录项的独占状态信息。
当目录项为共享时,目录项的访问属性包含一个或多个远端节点对目录项的独占状态信息。
当目录项为无效时,目录项的访问属性表示不存在远端节点占用该目录项对应的系统内存。
对于目录项为独占和共享时目录项的访问属性中包含的远端节点,不妨命名为第二远端节点,以区别于发起事务请求的第一远端节点。
当目录项的状态为无效时,节点控制器不需要发起侦听流程,此时,跳转至步骤508。
当目录项的状态为独占或共享时,执行步骤504。
504,节点控制器向第二远端节点发送侦听消息。
节点控制器根据目录项的访问属性中包含的第二远端节点的信息,向第二远端节点发送侦听消息。
505,节点控制器接收第二远端节点的侦听反馈结果。
节点控制器接收到侦听反馈结果后,跳转至步骤508。
506,节点控制器向系统内存发送内存请求消息。
节点控制器根据请求的系统内存地址,向系统内存发送内存请求消息,该内存请求消息还可携带第一远端节点的系统内存访问类型。
507,节点控制器接收系统内存的内存请求反馈结果。
节点控制器接收到内存请求反馈结果后,跳转至步骤508。
508,节点控制器生成事务请求的反馈消息,并向第一远端节点发送事务请求的反馈消息。
根据目录项的访问属性和第一远端节点事务请求的内存访问类型的不同,节点控制器反馈事务请求所需要的反馈结果也不同。如表2所示,其中,a表示需要侦听流程的反馈结果,b表示需要系统内存访问请求流程的反馈结果。
表2
当目录项的状态为独占,且第一远端节点的内存访问类型为独占或共享时,或者当目录项的状态为共享,且第一远端节点的内存访问类型为共享时,存在3种的可能情况。第一种情况,节点控制器先收到侦听消息的反馈结果,且侦听消息的反馈结果指示该侦听消息引起第二远端节点的数据转发,则节点控制器可不用等待内存访问请求的反馈结果,即可根据侦听消息的反馈结果生成事务请求的反馈消息,并向第一远端节点发送事务请求的反馈消息。第二种情况,节点控制器先收到侦听消息的反馈结果,且侦听消息的反馈结果指示该侦听消息未引起第二远端节点的数据转发,则节点控制器还需要等待内存访问请求的反馈结果,然后根据侦听消息的反馈结果和内存访问请求的反馈结果生成事务请求的反馈消息,并向第一远端节点发送事务请求的反馈消息。第三种情况,节点控制器先收到内存访问请求的反馈结果,则节点控制器还需要等待侦听消息的反馈结果,然后根据侦听消息的反馈结果和内存访问请求的反馈结果生成事务请求的反馈消息,并向第一远端节点发送事务请求的反馈消息。
当目录项的状态为独占或共享,且第一远端节点的内存访问类型为无效时,或者当目录项的状态为共享,且第一远端节点的内存访问类型为独占时,节点控制器需要在侦听消息的反馈结果和内存访问请求的反馈结果都接收到后,再根据侦听消息的反馈结果和内存访问请求的反馈结果生成事务请求的反馈消息,并向第一远端节点发送事务请求的反馈消息。
如图5所示,第一远端节点发送请求的时间为T1,节点控制器查询目录的时间为T2,节点控制器对第二远端节点执行侦听并获得响应的时间为T3,节点控制器请求系统内存并获得响应的时间为T4,节点控制器向第一远端节点发送请求响应的时间为T5。
在本发明实施例中,当T2+T3小于等于T4时,系统可节省T2+T3的时间;当T2+T3大于T4时,系统可节省T4的时间。
图6是本发明实施例节点控制器600的结构示意图。其中,多处理器系统包括本地节点、第一远端节点和第二远端节点,该本地节点包括节点控制器600和该多处理器系统的系统内存。节点控制器600可包括接收单元601、获取单元602和发送单元603。
接收单元601,用于接收该第一远端节点发送的事务请求。
其中,该事务请求携带该第一远端节点准备访问的系统内存的地址信息和该第一远端节点的系统内存访问类型。
获取单元602,用于获取该系统内存的地址信息在该节点控制器的目录中对应的目录项的访问属性。
发送单元603,用于如果该目录项的访问属性包含第二远端节点对该目录项对应的系统内存的访问状态,则向该第二远端节点发送侦听消息,并在发送该侦听消息的过程中并行向该系统内存发送内存访问请求。
其中,该内存访问请求中携带第一远端节点的系统内存访问类型。
发送单元603还用于根据该侦听消息的反馈结果和/或该内存访问请求的反馈结果,向该第一远端节点发送该事务请求的响应消息。
本发明实施例中,节点控制器600通过并行执行对当前已访问目录的其它远端节点的侦听流程和对系统内存的访问请求流程,减少了当前待访问系统内存的远端节点的事务请求等待时间,提高了多处理器系统的性能。
可选地,该第二远端节点对该目录项所对应的系统内存的访问状态包括:该第二远端节点对该目录项所对应的系统内存的独占或共享。
可选地,作为一个实施例,在用于根据该侦听消息的反馈结果和/或该内存访问请求的反馈结果,向该第一远端节点发送该事务请求的响应消息,发送单元603具体实现为:如果该目录项的访问状态为该第二远端节点对该目录项所对应的系统内存的独占,且该第一远端节点的内存访问类型为独占或共享,且该侦听消息的反馈结果指示该侦听消息引起该第二远端节点的数据转发,则发送单元603根据该侦听消息的反馈结果向该第一远端节点发送该事务请求的响应消息。
可选地,作为另一个实施例,在用于根据该侦听消息的反馈结果和/或该内存访问请求的反馈结果,向该第一远端节点发送该事务请求的响应消息,发送单元603具体实现为:如果该目录项的访问状态为该第二远端节点对该目录项所对应的系统内存的独占,且该第一远端节点的内存访问类型为独占或共享,且该侦听消息的反馈结果指示该侦听消息未引起该第二远端节点的数据转发,则发送单元603根据该侦听消息的反馈结果和该内存访问请求的反馈结果向该第一远端节点发送该事务请求的响应消息。
可选地,作为再一个实施例,在用于根据该侦听消息的反馈结果和/或该内存访问请求的反馈结果,向该第一远端节点发送该事务请求的响应消息,发送单元603具体实现为:如果该目录项的访问状态为该第二远端节点对该目录项所对应的系统内存的共享,且该第一远端节点的内存访问类型为共享,且该侦听消息的反馈结果指示该侦听消息引起该第二远端节点的数据转发,则发送单元603根据该侦听消息的反馈结果向该第一远端节点发送该事务请求的响应消息。
可选地,作为再一个实施例,在用于根据该侦听消息的反馈结果和/或该内存访问请求的反馈结果,向该第一远端节点发送该事务请求的响应消息,发送单元603具体实现为:如果该目录项的访问状态为该第二远端节点对该目录项所对应的系统内存的共享,且该第一远端节点的内存访问类型为共享,且该侦听消息的反馈结果指示该侦听消息未引起该第二远端节点的数据转发,则发送单元603根据该侦听消息的反馈结果和该内存访问请求的反馈结果向该第一远端节点发送该事务请求的响应消息。
可选地,作为再一个实施例,在用于根据该侦听消息的反馈结果和/或该内存访问请求的反馈结果,向该第一远端节点发送该事务请求的响应消息,发送单元603具体实现为:如果目录项的状态为该第二远端节点对该目录项所对应的系统内存的独占或共享,且该第一远端节点的内存访问类型为无效时,则发送单元603根据该侦听消息的反馈结果和该内存访问请求的反馈结果向该第一远端节点发送该事务请求的响应消息。
可选地,作为再一个实施例,在用于根据该侦听消息的反馈结果和/或该内存访问请求的反馈结果,向该第一远端节点发送该事务请求的响应消息,发送单元603具体实现为:如果目录项的状态为该第二远端节点对该目录项所对应的系统内存的共享,且该第一远端节点的内存访问类型为独占时,则发送单元603根据该侦听消息的反馈结果和该内存访问请求的反馈结果向该第一远端节点发送该事务请求的响应消息。
另外,节点控制器600还可执行图2的方法,并具备节点控制器在图3所示实施例中的功能,具体可参考图2、图3所示的实施例,本发明实施例在此不再赘述。
另外,节点控制器600的具体实现上可以与其功能的划分有所差异。例如,接收单元601和发送单元603可以耦合成一个输入输出(I/O)接口,获取单元602可用一个带有处理功能的硬件(比如,处理器等)实现,该硬件还可用于控制I/O接口的输入输出。节点控制器600的物理实现,可以是一个逻辑芯片,或者集成电路等。
图7是本发明实施例节点控制器700的结构示意图。其中,多处理器系统包括本地节点、第一远端节点和第二远端节点,该本地节点包括节点控制器700和该多处理器系统的系统内存。节点控制器700可包括接收单元701、获取单元702和发送单元703。
接收单元701,用于接收该第一远端节点发送的事务请求。
其中,该事务请求携带该第一远端节点准备访问的系统内存的地址信息和该第一远端节点的系统内存访问类型。
第一远端节点的系统内存访问类型,可包括独占、共享和无效三种类型。
获取单元702,用于获取该系统内存的地址信息在该节点控制器的目录中对应的目录项的访问属性。
发送单元703,用于根据该目录项的访问属性向第二远端节点发送侦听消息。
其中,该目录项的访问属性包含该第二远端节点对该目录项的对应的系统内存的访问状态。
发送单元703还用于在获取单元702获取该目录项的访问属性和发送单元703发送该侦听消息的过程中并行向该系统内存发送内存访问请求。
其中,该内存访问请求中携带该第一远端节点的系统内存访问类型。
发送单元703还用于根据该侦听消息的反馈结果和/或该内存访问请求的反馈结果,向该第一远端节点发送该事务请求的响应消息。
本发明实施例中,节点控制器700通过在访问目录侦听当前已访问目录的其它远端节点的同时并行执行对系统内存的访问请求,减少了当前待访问系统内存的远端节点的事务请求等待时间,提高了多处理器系统的性能。
可选地,该第二远端节点对该目录项所对应的系统内存的访问状态包括:该第二远端节点对该目录项所对应的系统内存的独占或共享。当目录项为无效时,不存在远端节点对目录项所对应的系统内存的访问,因此,第二远端节点对目录项所对应的系统内存的访问状态只可能包括独占和共享两种状态。
可选地,作为一个实施例,在用于根据该侦听消息的反馈结果和/或该内存访问请求的反馈结果,向该第一远端节点发送该事务请求的响应消息,发送单元703具体实现为:如果该目录项的访问状态为该第二远端节点对该目录项所对应的系统内存的独占,且该第一远端节点的内存访问类型为独占或共享,且该侦听消息的反馈结果指示该侦听消息引起该第二远端节点的数据转发,则发送单元703根据该侦听消息的反馈结果向该第一远端节点发送该事务请求的响应消息。
可选地,作为另一个实施例,在用于根据该侦听消息的反馈结果和/或该内存访问请求的反馈结果,向该第一远端节点发送该事务请求的响应消息,发送单元703具体实现为:如果该目录项的访问状态为该第二远端节点对该目录项所对应的系统内存的独占,且该第一远端节点的内存访问类型为独占或共享,且该侦听消息的反馈结果指示该侦听消息未引起该第二远端节点的数据转发,则发送单元703根据该侦听消息的反馈结果和该内存访问请求的反馈结果向该第一远端节点发送该事务请求的响应消息。
可选地,作为再一个实施例,在用于根据该侦听消息的反馈结果和/或该内存访问请求的反馈结果,向该第一远端节点发送该事务请求的响应消息,发送单元703具体实现为:如果该目录项的访问状态为该第二远端节点对该目录项所对应的系统内存的共享,且该第一远端节点的内存访问类型为共享,且该侦听消息的反馈结果指示该侦听消息引起该第二远端节点的数据转发,则发送单元703根据该侦听消息的反馈结果向该第一远端节点发送该事务请求的响应消息。
可选地,作为再一个实施例,在用于根据该侦听消息的反馈结果和/或该内存访问请求的反馈结果,向该第一远端节点发送该事务请求的响应消息,发送单元703具体实现为:如果该目录项的访问状态为该第二远端节点对该目录项所对应的系统内存的共享,且该第一远端节点的内存访问类型为共享,且该侦听消息的反馈结果指示该侦听消息未引起该第二远端节点的数据转发,则发送单元703根据该侦听消息的反馈结果和该内存访问请求的反馈结果向该第一远端节点发送该事务请求的响应消息。
可选地,作为再一个实施例,在用于根据该侦听消息的反馈结果和/或该内存访问请求的反馈结果,向该第一远端节点发送该事务请求的响应消息,发送单元703具体实现为:如果目录项的状态为该第二远端节点对该目录项所对应的系统内存的独占或共享,且该第一远端节点的内存访问类型为无效时,则发送单元703根据该侦听消息的反馈结果和该内存访问请求的反馈结果向该第一远端节点发送该事务请求的响应消息。
可选地,作为再一个实施例,在用于根据该侦听消息的反馈结果和/或该内存访问请求的反馈结果,向该第一远端节点发送该事务请求的响应消息,发送单元703具体实现为:如果目录项的状态为该第二远端节点对该目录项所对应的系统内存的共享,且该第一远端节点的内存访问类型为独占时,则发送单元703根据该侦听消息的反馈结果和该内存访问请求的反馈结果向该第一远端节点发送该事务请求的响应消息。
节点控制器700还可执行图4的方法,并具备节点控制器在图5所示实施例中的功能,具体可参考图4、图5所示的实施例,本发明实施例在此不再赘述。
另外,节点控制器700的具体实现上可以与其功能的划分有所差异。例如,接收单元701和发送单元703可以耦合成一个输入输出(I/O)接口,获取单元702可用一个带有处理功能的硬件(比如,处理器等)实现,该硬件还可用于控制I/O接口的输入输出。节点控制器700的物理实现,可以是一个逻辑芯片,或者集成电路等。
图8是本发明实施例多处理器系统800的结构示意图。多处理器系统800可包括:本地节点801、第一远端节点802和第二远端节点803,其中,本地节点801可包括多处理器系统的系统内存804和节点控制器805。节点控制器805可以是图6所示的实施例中的节点控制器600或图7所示的实施例中的节点控制器700。节点控制器805可用于根据第一远端节点的事务请求,通过并行处理响应所述事务请求所需的流程,对第一远端节点的事务请求进行响应反馈。
本发明实施例中,多处理器系统800通过并行处理响应事务请求的流程,减少了事务请求响应的时延,提高了系统的性能。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。