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

图数据预取方法、处理器和电子设备与流程

2022-02-25 23:54:10 来源:中国专利 TAG:


1.本发明涉及计算机领域,特别是涉及一种图数据预取方法、处理器和电子设备。


背景技术:

2.图(graph)是一种用于表示对象之间关联关系的抽象数据结构,使用顶点(vertex)和边(edge)进行描述,顶点表示对象,边表示对象之间的关系,可抽象成用图描述的数据即为图数据。通常情况下,图数据以压缩稀疏行(compress sparse row,csr)的格式存储,csr格式使用偏移数组、边数组和顶点数组存储图数据。偏移数组存储每个顶点对应的一个位置数据,边数组按照顶点顺序存储每个顶点作为源顶点时,连接的所有边对应的目的顶点的编号,顶点数组存储每个顶点的属性值。
3.图计算是以图数据来表达问题并予以解决的过程,图计算通常采用以顶点为中心(vertex-centric)的计算模式,在对每个顶点的属性值进行计算时,需要读取与该顶点相邻的顶点的属性值。因此在进行图计算时,处理器(central processing unit,cpu)对图数据的访问是随机的,使得缓存无法预先将cpu即将访问的图数据预先读取到缓存中,cpu需要频繁从内存中读取数据,导致图计算的效率较低。


技术实现要素:

4.鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种图数据预取方法,以解决在图计算过程中效率较低的问题。
5.相应的,本发明实施例还提供了一种处理器和电子设备,用以保证上述方法的实现及应用。
6.为了解决上述问题,本发明实施例公开了一种图数据预取方法,应用于预取器,所述预取器设置于处理器中,所述处理器中还包括与所述预取器对应的处理器核和私有缓存;所述方法包括:
7.获取所述处理器核向所述私有缓存发送的访存地址,以及所述私有缓存通过所述访存地址获取的访存数据;
8.在所述访存地址位于边数组的存储范围内的情况下,确定所述访存数据中包括所述边数组中存储的多个顶点编号;所述边数组用于存储图数据中的顶点作为源顶点时对应的目的顶点的编号;
9.基于所述多个顶点编号,确定所述边数组中的多个目标顶点编号;
10.将所述目标顶点编号所属顶点在顶点数组中的存储位置作为第一预取地址;所述顶点数组用于存储所述图数据中顶点的属性值;
11.向所述私有缓存发送所述第一预取地址,以使所述私有缓存通过所述第一预取地址将所述目标顶点编号所属顶点的属性值预先存储在所述私有缓存中。
12.可选地,所述私有缓存中包括一级缓存;
13.所述基于所述多个顶点编号,确定所述边数组中的多个目标顶点编号,包括:将所
述多个顶点编号作为所述目标顶点编号;
14.所述向所述私有缓存发送所述第一预取地址,以使所述私有缓存通过所述第一预取地址将所述目标顶点编号所属顶点的属性值预先存储在所述私有缓存中,包括:
15.向所述一级缓存发送所述第一预取地址,以使所述一级缓存通过所述第一预取地址将所述目标顶点编号所属顶点的属性值预先存储在所述一级缓存中。
16.可选地,所述私有缓存中包括二级缓存;
17.所述基于所述多个顶点编号,确定所述边数组中的多个目标顶点编号,包括:在确定所述多个顶点编号分别所属的多个顶点存储密集的情况下,确定从编号最大的所述顶点编号开始之后的预设数量个顶点编号为所述目标顶点编号;
18.所述向所述私有缓存发送所述第一预取地址,以使所述私有缓存通过所述第一预取地址将所述目标顶点编号所属顶点的属性值预先存储在所述私有缓存中,包括:
19.向所述二级缓存发送所述第一预取地址,以使所述二级缓存通过所述第一预取地址将所述目标顶点编号所属顶点的属性值预先存储在所述二级缓存中。
20.可选地,所述访存地址通过在所述边数组的起始地址上增加起始地址偏移值后得到;所述处理器核预先从所述图数据的偏移数组中获取有当前处理顶点对应的所述起始地址偏移值和终止地址偏移值;
21.在所述将所述目标顶点编号所属顶点在顶点数组中的存储位置作为第一预取地址之前,还包括:
22.确定与所述访存地址对应的终止偏移地址;所述终止偏移地址通过在所述边数组的起始地址上增加所述终止地址偏移值后得到;
23.从所述多个目标顶点编号中去除存储位置在所述终止偏移地址之后的顶点编号。
24.可选地,所述方法还包括:在所述访存地址位于偏移数组的存储范围内的情况下,确定所述访存数据中包括当前处理顶点对应的起始地址偏移值;所述偏移数组用于存储所述图数据中的顶点对应的起始地址偏移值;
25.将所述边数据组中从第一地址之后的多个地址作为第二预取地址;所述第一地址通过在所述边数组的起始地址上增加所述起始地址偏移值后得到;
26.向所述私有缓存发送所述第二预取地址,以使所述私有缓存通过所述第二预取地址将所述第二预取地址中存储的顶点编号预先存储在所述私有缓存中。
27.可选地,所述方法还包括:
28.在所述访存地址位于所述边数组的存储范围内的情况下,将所述访存地址之后的预设数量个地址作为第二预取地址;
29.向所述私有缓存发送所述第二预取地址,以使所述私有缓存通过所述第二预取地址将所述第二预取地址中存储的顶点编号预先存储在所述私有缓存中。
30.可选地,在所述向所述私有缓存发送所述第二预取地址之前,还包括:
31.从多个所述第二预取地址中删除位于第二地址之后的第二预取地址;所述第二地址通过在所述边数组的起始地址上增加终止地址偏移值后得到,所述终止地址偏移值包括于所述访存数据、与所述当前处理顶点对应。
32.可选地,在所述向所述私有缓存发送所述第二预取地址之前,还包括:
33.从多个所述第二预取地址中删除位于第二地址之后的第二预取地址;所述第二地
址通过在所述边数组的起始地址上增加终止地址偏移值后得到,所述终止地址偏移值包括于所述访存数据、与当前处理顶点对应。
34.本发明实施例还公开了一种处理器,包括至少一个处理器核,以及与所述处理器核对应的预取器和私有缓存;
35.所述处理器核与所述私有缓存连接,用于向所述私有缓存发送访存地址,以使所述私有缓存通过所述访存地址获取访存数据;
36.所述预取器与所述私有缓存连接,用于从所述私有缓存获取所述访存地址和所述访存数据,并在所述访存地址位于边数组的存储范围内的情况下,确定所述访存数据中包括所述边数组中存储的多个顶点编号,以及基于所述多个顶点编号,确定所述边数组中的多个目标顶点编号,将所述目标顶点编号所属顶点在顶点数组中的存储位置作为第一预取地址,并向所述私有缓存发送所述第一预取地址;
37.所述私有缓存用于接收所述第一预取地址,并通过所述第一预取地址将所述目标顶点编号所属顶点的属性值预先存储在所述私有缓存中;
38.其中,所述顶点数组用于存储图数据中顶点的属性值,所述边数组用于存储所述图数据中的顶点作为源顶点时,对应的目的顶点的编号。
39.本发明实施例还公开了一种电子设备,包括如上所述的处理器。本发明实施例包括以下优点:
40.在本发明实施例中,预取器获取处理器核向私有缓存发送的访存地址,以及私有缓存通过访存地址获取的访存数据,在访存地址位于边数组的存储范围内的情况下,确定访存数据中包括边数组中存储的多个顶点编号,基于多个顶点编号,确定边数组中的多个目标顶点编号。将目标顶点编号所属顶点在顶点数组中的存储位置作为第一预取地址,向私有缓存发送第一预取地址,以使私有缓存通过第一预取地址将目标顶点编号所属顶点的属性值预先存储在私有缓存中。在图计算过程中,当处理器核访问边数组中的数据时,确定处理器核即将访问的顶点数组中的数据,将该数据预先存储在私有缓存中,当处理器核访问顶点数组中的数据时,可以由私有缓存快速的为处理器核提供该数据,可以缩短处理器核的访问延迟,从而可以提高图计算的效率。
附图说明
41.图1示出了本发明实施例中的一种图数据的结构示意图;
42.图2示出了本发明实施例中的图数据的存储示意图;
43.图3示出了本发明实施例中的一种图数据预取方法实施例的步骤流程图;
44.图4示出了本发明实施例中的一种处理器的局部结构示意图;
45.图5示出了本发明实施例中的一种预取器的结构示意图;
46.图6示出了本发明实施例中的一种顶点数组地址生成器的逻辑示意图;
47.图7示出了本发明实施例中的一种边数组地址生成器的逻辑示意图;
48.图8示出了本发明实施例中的一种电子设备的结构框图。
具体实施方式
49.为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实
施方式对本发明作进一步详细的说明。
50.为了更详细的介绍本发明,首先对图数据和图数据的读取方式进行简要介绍。
51.图数据由顶点集合以及顶点之间的边的集合组成,图数据中的一个顶点可以表示真实或虚拟世界中的一个对象,顶点的属性值表示对象具有的特征,顶点之间的边可以表示对象之间的关系。例如,顶点可以表示一个人物,顶点的属性值中包括年龄、性别和喜好等特征,连接两个顶点的边可以表示两个人物之间的父子、同事或朋友等关系。图1示出了本发明实施例中的一种图数据的结构示意图,图数据中包括顶点0至顶点4,图1中的每个圆表示一个顶点,圆中的数字表示顶点对应的对象,也表示顶点的编号。各个顶点之间通过边直接或间接连接,边具有方向,边出发的顶点为源顶点,边指向的顶点为目的顶点。例如,边101从顶点0指向顶点1,顶点0为顶点1对应的源顶点,顶点1为顶点0作为源顶点时对应的目的顶点。
52.如图2所示,图2示出了本发明实施例中的图数据的存储示意图,当采用csr格式存储图数据时,由偏移数组、边数组和顶点数组共同存储图数据,顶点数组203按顶点的编号顺序,依次存储每个顶点的属性值,也即存储图数据中的每个顶点;边数组202按顶点的编号顺序,依次存储每个顶点作为源顶点时对应的目的顶点的编号,源顶点与目的顶点的对应关系可以表示顶点之间的边,也即边数组202可以存储图数据中的边;偏移数组201依次存储顶点数组203中每个顶点对应一个位置信息,位置信息中包括起始地址偏移值和终止地址偏移值(图2中仅示出起始地址偏移值),起始地址偏移值和终止地址偏移值限定了顶点作为源顶点时对应的所有目的顶点的编号在边数组202中的存储位置。例如,图1中的顶点0至顶点4的属性值依次存储在顶点数组203中,顶点数组203中符号d0、d1、d2、d3和d4分别表示顶点0、顶点1、顶点2、顶点3和顶点4。偏移数组201中的第一个位置存储有顶点0对应的起始地址偏移值和终止地址偏移值,起始地址偏移值为图2所示的数字0,终止地址偏移值为2,起始地址偏移值0和终止地址偏移值2限定了边数组202中的一个存储区域,即在边数组202的起始地址x上增加起始地址偏移值0,得到起始偏移地址(x 0),起始偏移地址为边数组202中的第一位,在边数组202的起始地址x上增加终止地址偏移值2得到终止偏移地址(x 2),终止偏移地址为边数组202中的第3位。如图2所示,边数组202的第一位存储有顶点1的编号,第二位存储有顶点2的编号,第三位存储有顶点3的编号,顶点1、顶点2和顶点3均为顶点0作为源顶点时,对应的目的顶点。同样的,偏移数组201中的第二位存储有顶点1对应的起始地址偏移值和终止地址偏移值。
53.本发明实施例中,图计算框架均采用以顶点为中心(vertex-centric)的计算模式,在该计算模式下,cpu在计算某个顶点的属性值时,首先从偏移数组中读取该顶点对应的位置数据,位置数据即位置信息,获取起始地址偏移值和终止地址偏移值,然后根据起始地址偏移值和终止地址偏移值确定边数组中的一个存储范围,从存储范围内读取对应的目的顶点的编号,最后根据目的顶点的编号,从顶点数组中读取目的顶点的编号所属的顶点的属性值。例如,在计算顶点0(顶点0为当前处理顶点)的属性值时,首先从偏移数组201中读取与顶点0对应的偏移数组201中的第一个位置数据,包括起始地址偏移值0和终止地址偏移值2,然后根据起始地址偏移值0和边数组202的起始地址,从边数组202中确定起始偏移地址(即边数组202中的第一位),并根据终止地址偏移值2和边数组202的起始地址,从边数组201中确定终止偏移地址(即边数组202中的第三位),再从边数组202中读取第一位至
第三位的顶点编号,即顶点1的编号、顶点2的编号和顶点3的编号,最后根据顶点1的编号、顶点2的编号和顶点3的编号,从顶点数组203中读取顶点1的属性值、顶点2的属性值和顶点3的属性值,以计算顶点0的属性值。
54.其中,图计算的具体过程由处理器中的处理器核实施,在进行图计算时,处理器核首先从私有缓存中读取图数据,若私有缓存中未存储对应的图数据,则私有缓存从共享缓存(共享缓存也可以称之为三级缓存)中读取对应的图数据发送给私有缓存,若共享缓存中未存储对应的图数据,则共享缓存从内存中读取对应的图数据发送给私有缓存。结合图1和图2所示,处理器核在计算顶点2(顶点2为当前处理顶点)的属性值时,顶点2作为源顶点对应的目的顶点包括顶点3和顶点4,处理器核首先可以向私有缓存发送包括访存地址的访存请求,该访存地址对应偏移数组201中的第三位(第三位与顶点2在顶点数组203中的存储位置对应),存储有顶点2对应的位置数据。私有缓存在向处理器核返回位置数据之后,处理器核可以根据位置数据和边数组202的起始地址计算得到起始偏移地址和终止偏移地址,起始偏移地址为边数组202中的第五位,终止偏移地址为边数组202中的第六位,第五位存储有顶点3的编号,第六位存储有顶点4的编号。此时,处理器核需要根据起始偏移地址获取边数组202中第五位和第六位中存储的顶点编号。处理器核可以向私有缓存发送包括访存地址的访存请求,该访存地址为计算得到的起始偏移地址。私有缓存若存储有起始偏移地址对应的编号3,则向cpu返回编号3,若未存储有编号3,则通过上述流程从共享缓存获取编号3。
55.本发明实施例的核心构思之一在于,基于图数据的存储和读取方式,在从边数组中读取到顶点编号之后,基于顶点编号,将顶点数组中对应顶点的属性值预先读取并存储在私有缓存中,避免从内存中读取顶点的属性值,以缩短处理核的访存延迟,提高图计算的效率。
56.参照图3,示出了本发明实施例中的一种图数据预取方法实施例的步骤流程图,该方法可以包括如下步骤:
57.步骤301、获取处理器核向私有缓存发送的访存地址,以及私有缓存通过访存地址获取的访存数据。
58.步骤302、在访存地址位于边数组的存储范围内的情况下,确定访存数据中包括边数组中存储的多个顶点编号。
59.其中,边数组用于存储图数据中的顶点作为源顶点时对应的目的顶点的编号。
60.本实施例中,图数据的预取过程可以由预取器(graph structure prefetcher,gsp)实施,预取器设置于处理器,处理器中还包括与预取器对应的处理器核和私有缓存。如图4所示,图4示出了本发明实施例中的一种处理器的局部结构示意图,cpu中包括一个或多个处理器核,在处理器中分别为每个处理器核设置一个对应的预取器,以及对应的私有缓存,私有缓存可以由一级缓存和二级缓存组成,处理器核与对应的预取器连接,并与对应的一级缓存连接,一级缓存与二级缓存连接。一级缓存为一级数据缓存,用于存储从二级缓存读取的数据,以供处理器核读取。二级缓存用于存储从共享缓存读取的数据,以供一级缓存读取,共享缓存设置在cpu的外部,共享缓存用于从内存读取数据,以供二级缓存读取。处理器核在处理某个顶点时,该顶点即为当前处理顶点,处理器核首先向私有缓存发送访存请求,以从私有缓存中读取对应的数据进行图计算。私有缓存在接收到处理器核发送的访存
请求之后,可以根据访存请求中包括的访存地址,从共享缓存中获取访存地址中存储的数据,并向处理器核发送获取到的数据,或者向处理器核发送私有缓存中已经存储的与该访存地址对应的数据。其中,私有缓存与预取器连接,私有缓存在接收到处理器核发送的访存请求之后,还可以向预取器发送访存请求中包括的访存地址,并在根据该访存地址获取到访存数据之后,向预取器发送该访存数据。
61.本实施例中,私有缓存由一级缓存和二级缓存组成,处理器核在处理某个顶点时,首先可以向一级缓存发送访存请求,以从一级缓存中读取对应的数据进行图计算。一级缓存在接收到处理器核发送的访存请求之后,可以根据访存请求中包括的访存地址,从二级缓存中获取访存地址中存储的数据,并向处理器核发送获取到的数据,或者向处理器核发送一级缓存中已经存储的与该访存地址对应的数据。一级缓存与预取器连接,一级缓存在接收到处理器核发送的访存请求之后,还可以向预取器发送访存请求中包括的访存地址,并在根据该访存地址获取到访存数据之后,向预取器发送该访存数据。预取器从一级缓存获取访存地址和访存数据的具体过程可以根据需求设置,本实施例对此不做限制。
62.对应的,预取器在接收到一级缓存发送的访存地址之后,首先判断访存地址是否位于边数组的存储范围内,若访存地址位于边数组的存储范围内,则可以确定预取器根据该访存地址获取的访存数据中存储有边数据中的顶点编号。如图5所示,图5示出了本发明实施例中的一种预取器的结构示意图,预取器中包括地址寄存器、地址生成器和缓存单元,地址寄存器与图4中的一级缓存连接,并与处理器核连接,地址寄存器可以被配置为用户态可以读写的寄存器,在进行图计算之前,处理器核可以向地址寄存器中写入偏移数组201的起始地址和终止地址、边数组202的起始地址和终止地址,以及顶点数组203的起始地址和终止地址。地址寄存器接收到一级缓存发送的访存地址之后,可以比较访存地址与预先写入的起始地址和终止地址,若判断访存地址位于边数组202的起始地址和终止地址限定的存储范围内,可以确定访存地址位于边数组202的存储范围内。进一步地,可以确定一级缓存通过该访存地址获取的访存数据为边数组202中存储的数据,包括边数组202中存储的多个顶点编号。
63.其中,一级缓存在获取数据的过程中,每次获取一个缓存行的数据量。例如,若一个缓存行中可以存储64个字节的二进制数据,每个顶点编号的数据量为4字节,则一级缓存每次可以从二级缓存中获取16个顶点编号,即64个字节的二进制数据。预取器在接收到一级缓存发送的访存数据,确定访存数据中存储有多个顶点编号之后,可以确定多个顶点编号中存储有当前处理顶点作为源顶点时,对应的目的顶点的顶点编号。结合上述举例,若当前处理顶点为顶点2,处理器核需要从边数组202中获取顶点2对应的目的顶点的编号,此时处理器核向一级缓存发送的访存地址为边数组202中第5位的地址,可以从二级缓存中获取一个缓存行的数据量,包括16个顶点编号,即访存数据中包括16个顶点编号,则16个顶点编号中包括顶点3和顶点4的顶点编号。实际应用中,每个顶点作为源顶点时对应的目的顶点的数量并不确定,因此当前处理顶点对应的目的顶点的顶点编号数量可能小于一个缓存行可以容纳的顶点编号的数量,也可能大于一个缓存行可以容纳的顶点编号的数量。缓存行的具体大小可以根据需求设置,每个顶点编号的数据量根据图数据的类型确定,本实施例对此不做具体限制。
64.需要说明的是,处理器核在向一级缓存发送访存地址的过程中,可以先向处理器
中的数据转换查找缓冲区(data translation lookaside buffer,dtlb)发送访存地址,访存地址为虚拟地址,由dtlb将虚拟地址转换为物理地址之后,向一级缓存发送转换得到的物理地址,一级缓存根据接收到的物理地址从二级缓存获取数据。如图4所示,处理器中还包括dtlb,dtlb分别与处理器核、一级缓存和预取器连接,一级缓存向预取器发送的访存地址也为物理地址,地址寄存器中预先写入的起始地址和终止地址可以为虚拟地址,地址寄存器可以根据虚拟地址与物理地址的对应关系,确定接收到的物理地址是否位于边数组的存储范围内。或者,地址寄存器可以将接收到的物理地址转换为虚拟地址,以确定接收到的物理地址是否位于边数组的存储范围内。
65.步骤303、基于多个顶点编号,确定边数组中的多个目标顶点编号。
66.步骤304、将目标顶点编号所属顶点在顶点数组中的存储位置作为第一预取地址。
67.其中,顶点数组用于存储图数据中顶点的属性值。
68.可选地,步骤303可以包括:将多个顶点编号作为目标顶点编号。
69.在一种实施例中,预取器在确定访存数据中包括边数组中存储的多个顶点编号之后,可以确定处理器核下一步即将访问顶点编号所属顶点的属性值,可以直接将确定的该顶点编号作为目标顶点编号。结合上述举例,处理器核在计算顶点2的属性值时,若从一级缓存中获取到顶点2作为源顶点时对应的目的顶点的顶点编号,即顶点3和顶点4的编号,则处理器核下一步需要从顶点数组203中获取顶点3的属性值和顶点4的属性值,以计算顶点2的属性值。此时,预取器可以将顶点3的顶点编号和顶点4的顶点编号作为目标顶点编号,并确定顶点3在顶点数组203中的存储位置,以及顶点4在顶点数组203中的存储位置,将确定的存储位置作为第一预取地址。
70.如图5所示,地址生成器与地址寄存器连接,地址寄存器在确定访存数据中包括顶点编号之后,可以将一级缓存发送的访存数据发送给地址生成器,即将顶点编号发送给地址生成器。地址生成器中包括顶点数组地址生成器,顶点数组地址生成器可以根据顶点编号,确定顶点编号所属的顶点在顶点数组203中的存储位置。如图6所示,图6示出了本发明实施例中的一种顶点数组地址生成器的逻辑示意图,预取器从一级缓存中获取的访存数据中包括v0至vn等(n 1)个顶点编号。由于顶点数组203按顶点编号依次存储每个顶点的属性值,则在顶点数组203的起始地址上增加每个顶点编号的数据量与顶点编号的乘积,即可确定该顶点编号所属的顶点在顶点数组203中的存储位置。如图2所示,顶点3存储在顶点数组203的第四位,顶点3的编号为3,每个顶点的数据量为4个字节,则在顶点数组203的起始地址增加(3
×
4)即可得到顶点3在顶点数组203中的存储位置。图6中符号“<<2”表示向左移动2位,表示每个二进制的顶点编号乘以4,“起始地址”为顶点数组203的起始地址,符号“ ”表示相加。每个顶点编号对应的第一预取地址可以通过公式:pv=vertex_begin 4
×
vertex_id计算得到。其中,符号pv表示第一预取地址,符号vertex_begin表示顶点数组203的起始地址,符号vertex_id表示顶点编号。针对顶点编号v0,v0乘以4后与顶点数组203的起始地址相加,为顶点编号v0所属的顶点在顶点数组203中的存储位置。针对v0至vn等(n 1)个顶点编号,可以确定每个顶点编号分别对应的存储地址,即第一预取地址。顶点数组地址生成器在计算得到第一预取地址之后,可以向图5所示的缓存单元发送第一预取地址,将第一预取地址存储在缓存单元中。
71.可选地,步骤303可以包括:在确定多个顶点编号分别所属的多个顶点存储密集的
情况下,确定从编号最大的顶点编号开始之后的预设数量个顶点编号为目标顶点编号。
72.在一种实施例中,预取器在确定访存数据中包括边数组中存储的多个顶点编号之后,还可以在确定多个顶点编号分别所属的多个顶点存储密集的情况下,确定从编号最大的顶点编号开始之后的预设数量个顶点编号为目标顶点编号。示例性地,预取器可以在确定多个顶点编号中的编号上限与编号下限之间的实际差值小于预设差值的情况下,确定多个顶点编号分别所属的多个顶点存储密集。预设差值可以为48,编号上限可以是多个顶点编号中的最大顶点编号,编号下限可以是多个顶点编号中的最小顶点编号。如图6所示,预取器在确定v0至vn等n 1个顶点编号之后,首先可以从多个顶点编号中确定编号最大的顶点编号为编号上限,并确定编号最小的顶点编号为编号下限,然后计算编号上限与编号下限之间的实际差值,比较实际差值与预设差值之间的大小,若实际差值小于预设差值48,则确定多个顶点编号分别所属的多个顶点存储较为密集。反之,当实际差值大于或等于预设差值48时,确定多个顶点编号分别所属的多个顶点稀疏分布,存储较为分散。实际应用中,编号上限和编号下限也可以是多个顶点编号中的其他顶点编号,预设差值的具体值可以根据需求设置,本实施例对此不做限制。
73.其中,图数据中的顶点具有社区结构(community structure),关联度较高的多个顶点组成一个社区结构,属于同一个社区结构中的多个顶点的属性值存储在相近的多个缓存行内。在含有较多社区结构的图数据中,仅将访存数据中的多个顶点编号作为目标顶点编号时,预取的数据量较少,不能充分利用内存带宽,导致数据预取的及时性较差。结合上述举例,当采用csr格式存储图数据时,图数据中每个顶点的属性值按顶点的编号依次存储在顶点数组203中,属于同一个社区结构中的多个顶点存储在相近的缓存行内,顶点的编号之间的差值越小,说明顶点存储越密集。当多个顶点编号中的编号上限与编号下限之间的实际差值小于预设差值48时,说明当前处理顶点所在社区结构内的顶点存储较为密集,分布在较近的一到三个缓存行内。此时,可以将存储较为密集、关联度较高的多个顶点的属性值预先存储在私有缓存中。确定多个顶点存储密集的方法可以包括但不限于上述举例,本实施例对此不做限制。
74.在一种实施例中,可以根据实际差值确定对应的预设数量,不同实际差值可以对应不同的预设数量。结合图6所示,选择器用于在确定实际差值小于预设差值48之后,根据实际差值确定预设数量的大小,当实际差值大于或等于32、且小于48时,预设数量可以选择16,即一个缓存行、64个字节的数据量,此时可以选择编号最大的顶点编号vn之后的16个编号作为目标顶点编号。相应的,顶点数组地址生成器首先确定编号最大的顶点编号vn的存储地址,将vn的存储地址之后64个字节的存储地址作为第一预取地址。同理,当实际差值大于或等于16、且小于32时,预设数量可以为32,即2个缓存行、128个字节的数据量,可以选择顶点编号vn之后的32个编号作为目标顶点编号,将vn的存储地址之后128个字节的存储地址作为第一预取地址。同理,当实际差值小于16时,预设数量可以为48,即3个缓存行、192个字节的数据量,可以选择顶点编号vn之后的48个编号作为目标顶点编号,将vn的存储地址之后192个字节的存储地址作为第一预取地址。
75.步骤305、向私有缓存发送第一预取地址,以使私有缓存通过第一预取地址将目标顶点编号所属顶点的属性值预先存储在私有缓存中。
76.本实施例中,预取器在确定第一预取地址之后,可以向私有缓存发送第一预取地
址,由私有缓存通过第一预取地址,将目标顶点编号所属顶点的属性值预先存储在私有缓存中。
77.可选地,当目标顶点编号为访存数据中的顶点编号时,步骤305可以通过如下方式实现:
78.向一级缓存发送第一预取地址,以使一级缓存通过第一预取地址将目标顶点编号所属顶点的属性值预先存储在一级缓存中。
79.在一种实施例中,若直接将访存数据中的顶点编号作为目标顶点编号,可以由一级缓存预先存储目标顶点编号所属顶点的属性值。结合图4和图5所示,预取器中的缓存单元与dtlb连接,缓存单元可以向dtlb发送第一预取地址,由dtlb将第一预取地址转换为物理地址后发送给一级缓存,缓存单元可以在处理器核空闲时,向一级缓存发送第一预取地址。一级缓存在接收到预取器发送的第一预取地址(物理地址)之后,可以向二级缓存发送包括第一预取地址的访存请求,从二级缓存中获取第一预取地址中存储的数据,也即顶点数组中存储的顶点的属性值。结合上述举例,针对当前处理顶点2,一级缓存在接收到预取器发送的顶点3和顶点4分别对应的第一预取地址之后,可以向二级缓存发送对应的第一预取地址,从二级缓存获取顶点数组203中存储的顶点3的属性值和顶点4的属性值,并进行存储。若二级缓存中为存储顶点3的属性值和顶点4的属性值,二级缓存可以基于第一预取地址,从共享缓存中获取顶点3的属性值和顶点4的属性值,然后发送给一级缓存存储。此时,顶点3的属性值和顶点4的属性值预先存储在一级缓存中,当一级缓存在接收到处理器核针对顶点3和顶点4发送的访存请求时,可以直接向处理器核发送预先存储的顶点3属性值和顶点4的属性值,可以缩短处理器核的等待时间,从而可以缩短访存延迟,提高计算效率。
80.在另一种实施例中,当直接将访存数据中的顶点编号作为目标顶点编号时,也可以由二级缓存预先存储目标顶点编号所属顶点的属性值。如图4所示,dtlb与二级缓存连接,dtlb也可以将第一预取地址发送给二级缓存,由二级缓存通过第一预取地址,将顶点3的属性值和顶点4的属性值预先存储在二级缓存中。
81.可选地,在将目标顶点编号所属顶点在顶点数组中的存储位置作为第一预取地址之前,该方法还包括:
82.确定与访存地址对应的终止偏移地址;终止偏移地址通过在边数组的起始地址上增加终止地址偏移值后得到;
83.从多个目标顶点编号中去除存储位置在终止偏移地址之后的顶点编号。
84.在一种实施例中,在确定目标顶点编号之后,可以从多个目标顶点编号中去除与当前处理顶点无关的顶点的顶点编号。结合上述举例,由于一级缓存每次读取一个缓存行的数据量,因此当一级缓存从边数组202中读取顶点2对应的顶点编号时,可以读取到16个顶点编号,16个顶点编号中仅顶点3和顶点4的顶点编号与顶点2相关,为顶点2作为源顶点时,对应的目的顶点的顶点编号,其他顶点编号并不是顶点2对应的目的顶点的编号。此时,若将其他顶点编号所属顶点的属性值读入一级缓存,在计算顶点2的属性值时并不会用到该部分数据,并且读入一级缓存的该部分数据会替换掉一级缓存中已经存储的其他有效数据,会造成缓存污染。
85.结合上述举例,预取器在从偏移数组201中获取到顶点2对应的位置数据之后,可根据位置数据中的终止地址偏移值和边数组202的起始地址确定终止偏移地址,即顶点2作
为源顶点时对应的目的顶点4的顶点编号在边数组202中的存储位置,然后将存储位置在终止偏移地址之后的顶点编号去除,即将边数组202中存储位置在顶点编号4的存储位置之后的顶点编号0、顶点编号1和顶点编号3去除。此时,在确定第一预取地址的过程中,第一预取地址仅包括顶点3和顶点4在顶点数组203中的存储位置。
86.在本发明实施例中,根据当前处理顶点对应的终止偏移地址去除与当前处理顶点无关的顶点的顶点编号,在根据剩余的顶点编号确定预取地址时,预取地址中存储的顶点的属性值均为当前处理顶点对应的目的顶点的属性值。在数据预取过程中,可以避免将无关数据读入一级缓存,从而可以实现更精准的数据预取,并可以避免缓存污染。
87.在另一种实施例中,在确定多个顶点编号之后,还可以去除多个顶点编号中的重复编号。结合图2所示,一级缓存每次可以读取16个顶点编号,16个顶点编号中可能存在有重复的顶点编号。预取器在确定16个顶点编号之后,首先可以删除16个顶点编号中的重复编号,然后根据剩余的顶点编号确定第一预取地址。实际应用中,对多个顶点编号中的顶点进行去重,可以避免重复将相同顶点的属性值读入一级缓存,从而可以提高数据预取的效率。
88.可选地,当目标顶点编号为访存数据中的顶点编号时,步骤305可以通过如下方式实现:
89.向二级缓存发送第一预取地址,以使二级缓存通过第一预取地址将目标顶点编号所属顶点的属性值预先存储在二级缓存中。
90.在一种实施例中,在确定从编号最大的顶点编号开始之后的预设数量个顶点编号为目标顶点编号时,可以由二级缓存预先存储目标顶点编号所属顶点的属性值。如图4所示,dtlb与二级缓存连接,顶点数组生成器在确定第一预取地址之后,可以将第一预取地址存储在缓存单元中。缓存单元在处理器核空闲时,可以将第一预取地址发送给dtlb,由dtlb将第一预取地址转为物理地址之后发送给二级缓存。相应的,二级缓存可以通过第一预取地址,从共享缓存中获取目标顶点编号所属的顶点的属性值,存储在二级缓存中。当处理器核需要获取目标顶点编号所属顶点的属性值时,一级缓存在接收到访存请求之后,可以快速从二级缓存中获取数据,避免从共享缓存或内存中获取数据,从而可以缩短处理器核的等待时间,提高计算效率。
91.在一种实施例中,在将目标顶点编号所属顶点在顶点数组中的存储位置作为第一预取地址之前,还可以确定与访存地址对应的终止偏移地址,从多个目标顶点编号中去除存储位置在终止偏移地址之后的顶点编号。结合上述举例,在确定目标顶点编号之后,也可以确定当前处理顶点2对应的终止偏移地址,删除存储位置在终止偏移地址之后的顶点编号,将剩余的目标顶点编号所属顶点在顶点数组中的存储地址作为第一预取地址。
92.在本发明实施例中,利用图数据的社区结构,在顶点存储较为密集的情况下,将存储密集的与当前顶点关联度较高的多个顶点预先读取到二级缓存中,可以缩短处理器的访问延迟,提高图计算的效率。并且,由于数据被存储二级缓存中,可以避免直接存入一级缓存,减少对一级缓存中缓存数据的污染。同时,在确定顶点存储密集的情况下进行预取,可以避免在顶点存储比较分散的情况下,进行数据预取,避免对缓存中的数据造成污染。
93.在先技术中,预取器通常设置在处理器的外部,并且预取器采用流式预取的方式将处理器核即将访问的数据从内存预先读取到缓存中。由于图计算过程中处理器对图数据
的访问是随机的,当采用流式预取时,预取的数据并不准确,导致处理器需要频繁从内存中读取数据,访存延迟较长,导致图计算的效率较低。本发明实施例中,预取器设置在处理器内部,根据处理器核当前访问的图数据,确定即将访问的图数据,将即将访问的数据预先存储在缓存中,可以实现对图数据的精准预取,从而可以缩短处理器核的访存延迟,提高图计算的效率,并且可以避免将无效数据读入缓存,对缓存中的数据造成污染。
94.需要说明的是,在图计算开始之前,处理器可以关闭位于处理器外部的预取器,以避免在图计算过程中,位于处理器外部的预取器将不必要的数据读入缓存,替换掉由处理器内部预取器读入缓存的数据,造成缓存污染。
95.综上所述,在本发明实施例中,预取器获取处理器核向私有缓存发送的访存地址,以及私有缓存通过访存地址获取的访存数据,在访存地址位于边数组的存储范围内的情况下,确定访存数据中包括边数组中存储的多个顶点编号,基于多个顶点编号,确定边数组中的多个目标顶点编号。将目标顶点编号所属顶点在顶点数组中的存储位置作为第一预取地址,向私有缓存发送第一预取地址,以使私有缓存通过第一预取地址将目标顶点编号所属顶点的属性值预先存储在私有缓存中。在图计算过程中,当处理器核访问边数组中的数据时,确定处理器核即将访问的顶点数组中的数据,将该数据预先存储在私有缓存中,当处理器核访问顶点数组中的数据时,可以由私有缓存快速的为处理器核提供该数据,可以缩短处理器核的访问延迟,从而可以提高图计算的效率。
96.本实施例提供的预取方法,相比于无预取的情况,可以实现65%至176%的性能提升;相对于设置于处理器外部的流式预取器,可以实现6%至21%的性能提升,相对于传统的预取器可以实现4%至18%的性能提升。同时,由于预先读入私有缓存的数据根据当前访问的数据确定,被处理器核访问的概率较高,可以避免将访问概率低的数据读入私有缓存,对私有缓存内的数据造成污染。并且,由于预取器设置在处理器内部,在物理地址和虚拟地址的转换过程中,可以由处理器内部的dtlb实现虚拟地址与物理地址之间的转换,可以避免另外为预取器设置单独的dtlb,从而可以避免额外的dtlb设计开销。
97.可选地,该方法还可以包括:
98.在访存地址位于偏移数组的存储范围内的情况下,确定访存数据中包括当前处理顶点对应的起始地址偏移值;偏移数组用于存储图数据中的顶点对应的起始地址偏移值;
99.将边数据组中从第一地址之后的多个地址作为第二预取地址;第一地址通过在边数组的起始地址上增加起始地址偏移值后得到;
100.向私有缓存发送第二预取地址,以使私有缓存通过第二预取地址将第二预取地址中存储的顶点编号预先存储在私有缓存中。
101.本实施例中,在图计算的过程中,还可以对边数组中存储的顶点编号进行预取。结合上述举例,地址寄存器中还存储有偏移数组201的起始地址和终止地址,预取器在接收到私有缓存发送的访存地址之后,若判断访存地址位于偏移数组201的起始地址和终止地址之间,则可以确定私有缓存通过该访存地址读取的访存数据为偏移数组中的数据,即访存数据中包括当前处理顶点对应的位置数据,包括起始地址偏移值和终止地址偏移值。进一步的,可以确定处理器核下一步将访问边数组202中的数据。
102.如图7所示,图7示出了本发明实施例中的一种边数组地址生成器的逻辑示意图,预取地址生成器中还包括边数组地址生成器,一级缓存每次获取一个缓存行的数据量,当
一级缓存读取到偏移数组201中的数据时,每次获取的数据中包括m个位置数据,即包括m个顶点对应的位置数据。若当前处理顶点为顶点2,则获取的m个位置数据中,第一个位置数据u1为顶点2对应的位置数据,包括起始地址偏移值和终止地址偏移值。此时,边数组地址生成器可以只将顶点2对应的起始偏移地址作为第二预取地址。第二预取地址可以通过公式:pe=offset edge_begin计算得到,其中符号pe表示第二预取地址,offset表示位置数据中的起始地址偏移值,edge_begin为边数组202的起始地址(预先存储在地址寄存器中)。针对顶点2,offset为顶点对应的位置数据中的起始地址偏移值。预取器在确定访存地址为偏移数组201中的地址时,可以存储访存地址和访存数据,访存地址用于从访存数据中确定对应的位置数据。如图7所示,在确定顶点2对应的访存地址之后,多路选择器可以基于访存地址,从64个字节的数据中选择确定与顶点2对应的位置数据u1,并从位置数据u1中提取起始地址偏移值,然后将起始地址偏移值与边数组202的起始地址相加,得到第二预取地址。
103.在另一种实施例中,可以将起始偏移地址之后的一个或多个缓存行容量的地址作为第二预取地址。如图7所示,在确定顶点2对应的起始偏移地址之后,可以将该地址之后64个字节的存储地址作为第二预取地址,或者将该地址之后的128个字节的存储地址作为第二预取地址,或者将该地址之后的192个字节的存储地址作为第二预取地址。第二预取地址的具体数量可以根据需求设置,本实施例对此不做限制。
104.在一种实施例中,可以由一级缓存预先存储第二预取地址中的数据。具体的,在确定第二预取地址之后,边数组地址生成器可以将第二预取地址存储在缓存单元中,在处理器核空闲时向dtlb发送第二预取地址,由dtlb将第二预取地址转换为物理地址之后发送给一级缓存。此时,一级缓存可以基于第二预取地址,从二级缓存中读取第二预取地址中存储的数据,即边数组202中存储的顶点编号预先存储在一级缓存中。或者,也可以由二级缓存预先存储第二预取地址中的数据。
105.本发明实施例中,在图计算过程中,当处理器核访问偏移数组时,确定处理器核即将访问的边数组中的数据,将该数据预先存储在一级缓存中,当处理器核访问边数组中的数据时,可以由一级缓存快速的为处理器核提供该数据,可以缩短处理器核的访问延迟,从而可以提高图计算的效率。
106.可选地,在向私有缓存发送第二预取地址之前,该还可以包括:
107.从多个第二预取地址中删除位于第二地址之后的第二预取地址;第二地址通过在边数组的起始地址上增加终止地址偏移值后得到,终止地址偏移值包括于访存数据、且与当前处理顶点对应。
108.其中,第二地址为当前处理顶点对应的终止偏移地址。结合上述举例,针对当前处理顶点2,访存数据中包括顶点2对应的位置数据时,根据边数组202的起始地址和位置数据中的起始地址偏移值可以计算得到顶点2对应的起始偏移地址和终止偏移地址,起始偏移地址为边数组202中顶点2对应的编号3所在的存储地址,终止偏移地址为顶点2对应的编号4所在的存储位置。当确定的第二预取地址包括多个缓存行的容量时,可以删除位于终止偏移地址之后的第二预取地址,即删除编号4所在存储位置之后的多个第二预取地址。
109.在本发明实施例中,在对边数组中的数据进行预取的过程中,针对当前处理顶点,可以只预取当前处理顶点对应的顶点编号。例如,在去除位于第二地址之后的第二预取地址时,第二预取地址仅包括编号3和编号4在边数组中的存储地址,未包括其他顶点对应的
存储地址。由于对边数组的预取只针对当前处理顶点,因此可以对边数组进行更精准的预取。
110.可选地,该方法还可以包括:
111.在访存地址位于边数组的存储范围内的情况下,将访存地址之后的预设数量个地址作为第三预取地址;
112.向私有缓存发送第三预取地址,以使私有缓存通过第三预取地址将第三预取地址中存储的顶点编号预先存储在私有缓存中。
113.在一种实施例中,可以采用流式预取的方式对边数组中的数据进行预取。结合图5和图7所示,预取器在接收到一级缓存发送的访存地址之后,首先可以比较访存地址与预先存储的边数组202的起始地址和终止地址,当访存地址位于边数组202的起始地址和终止地址限定的存储范围内的情况下,确定访存地址属于边数组202。此时,可以将访存地址之后4个缓存行容量、256的字节的存储地址作为第三预取地址。在确定第三预取地址之后,边数组地址生成器可以将第三预取地址发送到缓存单元进行存储,并在处理器核空闲时向dtlb发送第三预取地址,由dtlb将第三预取地址转换为物理地址之后,发送给一级缓存或二级缓存中的至少一个,由一级缓存或二级缓存通过第三预取地址,将第三预取地址中存储的数据预先存储,即将边数组中的数据预先存储在一级缓存或二级缓存中。
114.在本发明实施例中,当一级缓存接收到的访存地址属于边数组时,可以采用流式预取的方式,确定访存地址之后的多个预取地址,将预取地址中存储的数据预先存储的一级缓存或二级缓存中。当处理核在访问数据时,可以快速为处理器核提高该数据,缩短处理器核的访问延迟,提高图计算的效率。
115.可选地,在向所述私有缓存发送第三预取地址之前,还包括:
116.从多个第三预取地址中删除位于第二地址之后的第三预取地址;第二地址通过在边数组的起始地址上增加终止地址偏移值后得到,终止地址偏移值包括于访存数据、与当前处理顶点对应。
117.其中,删除位于第二地址之后的第三预取地址的过程与删除位于第二地址之后的第二预取地址的过程相同,本实施例对此不做赘述。
118.本发明实施例还提供一种处理器,包括:至少一个处理器核,以及与处理器核对应的预取器和私有缓存;
119.处理器核与所述私有缓存连接,用于向私有缓存发送访存地址,以使私有缓存通过访存地址获取访存数据;
120.预取器与私有缓存连接,用于从私有缓存获取访存地址和访存数据,并在访存地址位于边数组的存储范围内的情况下,确定访存数据中包括边数组中存储的多个顶点编号,以及基于多个顶点编号,确定边数组中的多个目标顶点编号,将目标顶点编号所属顶点在顶点数组中的存储位置作为第一预取地址,并向私有缓存发送第一预取地址;
121.私有缓存用于接收第一预取地址,并通过第一预取地址将目标顶点编号所属顶点的属性值预先存储在私有缓存中;
122.其中,顶点数组用于存储图数据中顶点的属性值,边数组用于存储图数据中的顶点作为源顶点时,对应的目的顶点的编号。
123.可选地,私有缓存包括一级缓存。
124.所述预取器具体用于将多个顶点编号作为目标顶点编号,向一级缓存发送第一预取地址。
125.一级缓存用于通过第一预取地址将目标顶点编号所属顶点的属性值预先存储在一级缓存中。
126.可选地,私有缓存中包括二级缓存。
127.所述预取器具体用于在确定多个顶点编号分别所属的多个顶点存储密集的情况下,确定从编号最大的顶点编号开始之后的预设数量个顶点编号为目标顶点编号,并向二级缓存发送第一预取地址。
128.二级缓存用于通过第一预取地址将目标顶点编号所属顶点的属性值预先存储在二级缓存中。
129.可选地,访存地址通过在边数组的起始地址上增加起始地址偏移值后得到;处理器核预先从图数据的偏移数组中获取有当前处理顶点对应的起始地址偏移值和终止地址偏移值;预取器还用于确定与访存地址对应的终止偏移地址;终止偏移地址通过在边数组的起始地址上增加终止地址偏移值后得到;从多个目标顶点编号中去除存储位置在终止偏移地址之后的顶点编号。
130.可选地,预取器还用于在访存地址位于偏移数组的存储范围内的情况下,确定访存数据中包括当前处理顶点对应的起始地址偏移值;偏移数组用于存储图数据中的顶点对应的起始地址偏移值;将边数据组中从第一地址之后的多个地址作为第二预取地址;第一地址通过在边数组的起始地址上增加起始地址偏移值后得到;向私有缓存发送第二预取地址;
131.私有缓存还用于通过第二预取地址将第二预取地址中存储的顶点编号预先存储在私有缓存中。
132.可选地,预取器还用于在访存地址位于边数组的存储范围内的情况下,将访存地址之后的预设数量个地址作为第三预取地址;向私有缓存发送第三预取地址。
133.私有缓存还用于通过第三预取地址将第三预取地址中存储的顶点编号预先存储在私有缓存中。
134.可选地,预取器还用于在向私有缓存发送第二预取地址之前,从多个第二预取地址中删除位于第二地址之后的第二预取地址;第二地址通过在边数组的起始地址上增加终止地址偏移值后得到,终止地址偏移值包括于访存数据、与当前处理顶点对应。
135.可选地,预取器还用于在向私有缓存发送第三预取地址之前,从多个第三预取地址中删除位于第二地址之后的第三预取地址;第二地址通过在边数组的起始地址上增加终止地址偏移值后得到,终止地址偏移值包括于访存数据、与当前处理顶点对应。
136.对处理器和预取器的理解可参考上述举例,本实施例对此不做赘述。
137.本发明实施例还提供一种电子设备,包括如上所述的处理器。
138.图8示出了本发明实施例中的一种电子设备的结构框图。例如,电子设备800可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
139.参照图8,电子设备800可以包括以下一个或多个组件:处理组件802,存储器804,电源组件806,多媒体组件808,音频组件810,输入/输出(i/o)的接口812,传感器组件814,
以及通信组件816。
140.处理组件802通常控制电子设备800的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理元件802可以包括一个或多个处理器820来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件802可以包括一个或多个模块,便于处理组件802和其他组件之间的交互。例如,处理部件802可以包括多媒体模块,以方便多媒体组件808和处理组件802之间的交互。
141.存储器804被配置为存储各种类型的数据以支持在设备700的操作。这些数据的示例包括用于在电子设备800上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器804可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。
142.电源组件806为电子设备800的各种组件提供电力。电源组件806可以包括电源管理系统,一个或多个电源,及其他与为电子设备800生成、管理和分配电力相关联的组件。
143.多媒体组件808包括在所述电子设备800和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件808包括一个前置摄像头和/或后置摄像头。当电子设备800处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
144.音频组件810被配置为输出和/或输入音频信号。例如,音频组件810包括一个麦克风(mic),当电子设备800处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器804或经由通信组件816发送。在一些实施例中,音频组件810还包括一个扬声器,用于输出音频信号。
145.i/o接口812为处理组件802和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
146.传感器组件814包括一个或多个传感器,用于为电子设备800提供各个方面的状态评估。例如,传感器组件814可以检测到设备700的打开/关闭状态,组件的相对定位,例如所述组件为电子设备800的显示器和小键盘,传感器组件814还可以检测电子设备800或电子设备800一个组件的位置改变,用户与电子设备800接触的存在或不存在,电子设备800方位或加速/减速和电子设备800的温度变化。传感器组件814可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件814还可以包括光传感器,如cmos或ccd图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件814还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
147.通信组件816被配置为便于电子设备800和其他设备之间有线或无线方式的通信。电子设备800可以接入基于通信标准的无线网络,如wifi,2g或3g,或它们的组合。在一个示
例性实施例中,通信组件816经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件816还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。
148.在示例性实施例中,电子设备800可以被一个或多个应用专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
149.在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器804,上述指令可由电子设备800的处理器820执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。
150.一种非临时性计算机可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行一种图数据预取方法,该方法包括:
151.获取处理器核向私有缓存发送的访存地址,以及私有缓存通过访存地址获取的访存数据;
152.在访存地址位于边数组的存储范围内的情况下,确定访存数据中包括边数组中存储的多个顶点编号;边数组用于存储图数据中的顶点作为源顶点时对应的目的顶点的编号;
153.基于多个顶点编号,确定边数组中的多个目标顶点编号;
154.将目标顶点编号所属顶点在顶点数组中的存储位置作为第一预取地址;顶点数组用于存储图数据中顶点的属性值;
155.向私有缓存发送第一预取地址,以使私有缓存通过第一预取地址将目标顶点编号所属顶点的属性值预先存储在私有缓存中。
156.可选地,私有缓存包括一级缓存。
157.所述基于多个顶点编号,确定边数组中的多个目标顶点编号,包括:用于将多个顶点编号作为目标顶点编号。
158.所述向私有缓存发送第一预取地址,以使私有缓存通过第一预取地址将目标顶点编号所属顶点的属性值预先存储在私有缓存中,包括:向一级缓存发送第一预取地址,以使一级缓存通过第一预取地址将目标顶点编号所属顶点的属性值预先存储在一级缓存中。
159.可选地,私有缓存中包括二级缓存。
160.基于多个顶点编号,确定边数组中的多个目标顶点编号,包括:在确定多个顶点编号分别所属的多个顶点存储密集的情况下,确定从编号最大的顶点编号开始之后的预设数量个顶点编号为目标顶点编号;
161.向私有缓存发送第一预取地址,以使私有缓存通过第一预取地址将目标顶点编号所属顶点的属性值预先存储在私有缓存中,包括:向二级缓存发送第一预取地址,以使二级缓存通过第一预取地址将目标顶点编号所属顶点的属性值预先存储在二级缓存中。
162.可选地,访存地址通过在边数组的起始地址上增加起始地址偏移值后得到;处理器核预先从图数据的偏移数组中获取有当前处理顶点对应的起始地址偏移值和终止地址偏移值;
163.在将目标顶点编号所属顶点在顶点数组中的存储位置作为第一预取地址之前,还包括:
164.确定与访存地址对应的终止偏移地址;终止偏移地址通过在边数组的起始地址上增加终止地址偏移值后得到;
165.从多个目标顶点编号中去除存储位置在终止偏移地址之后的顶点编号。
166.可选地,还包括:
167.在访存地址位于偏移数组的存储范围内的情况下,确定访存数据中包括当前处理顶点对应的起始地址偏移值;偏移数组用于存储图数据中的顶点对应的起始地址偏移值;
168.将边数据组中从第一地址之后的多个地址作为第二预取地址;第一地址通过在边数组的起始地址上增加起始地址偏移值后得到;
169.向私有缓存发送第二预取地址,以使私有缓存通过第二预取地址将第二预取地址中存储的顶点编号预先存储在私有缓存中。
170.可选地,还包括:
171.在访存地址位于边数组的存储范围内的情况下,将访存地址之后的预设数量个地址作为第三预取地址;
172.向私有缓存发送第三预取地址,以使私有缓存通过第三预取地址将第三预取地址中存储的顶点编号预先存储在私有缓存中。
173.可选地,在向私有缓存发送第二预取地址之前,还包括:
174.从多个第二预取地址中删除位于第二地址之后的第二预取地址;第二地址通过在边数组的起始地址上增加终止地址偏移值后得到,终止地址偏移值包括于访存数据、与当前处理顶点对应。
175.可选地,在向私有缓存发送第三预取地址之前,还包括:
176.从多个第三预取地址中删除位于第二地址之后的第三预取地址;第二地址通过在边数组的起始地址上增加终止地址偏移值后得到,终止地址偏移值包括于访存数据、与当前处理顶点对应。
177.本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
178.本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
179.本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
180.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以预测方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
181.这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
182.尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
183.最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
184.以上对本发明所提供的一种图数据预取方法和装置、一种电子设备以及一种存储介质,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
再多了解一些

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

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

相关文献