CN103365656B - 保证缓存一致性的方法和终端 - Google Patents
保证缓存一致性的方法和终端 Download PDFInfo
- Publication number
- CN103365656B CN103365656B CN201310268888.2A CN201310268888A CN103365656B CN 103365656 B CN103365656 B CN 103365656B CN 201310268888 A CN201310268888 A CN 201310268888A CN 103365656 B CN103365656 B CN 103365656B
- Authority
- CN
- China
- Prior art keywords
- gimple
- rtl
- caching
- consistent
- buffer consistency
- 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
- Devices For Executing Special Programs (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供了保证缓存一致性的方法和终端,包括:确定源程序包括具有缓存一致性属性的变量;生成对应于该源程序的泛化树,其中该泛化树包括具有缓存一致性属性的泛化节点,该具有缓存一致性属性的泛化节点对应于该具有缓存一致性属性的变量;生成对应于该泛化树的简化集合并生成对应于该简化集合的寄存器转换语言RTL集合,其中该RTL集合包括缓存一致的RTL,该缓存一致的RTL对应于该具有缓存一致性属性的泛化节点;基于该RTL集合,生成缓存一致的目标代码。通过缓存一致性关键字标识源程序中需要保证缓存一致的变量,在处理源程序时,可以识别出该具有缓存一致性属性的变量,从而可以生成缓存一致的目标代码,降低了保证缓存一致性的复杂程度。
Description
技术领域
本发明实施例涉及信息技术领域,并且更具体地,涉及保证缓存一致性的方法和终端。
背景技术
在现代计算机系统中,主存储器的存取速度远远小于比中央处理器操作速度,因此中央处理器的高速处理能力不能发挥。一种常用的解决方法就是在中央处理器与主存储器中间添加缓存(cache)。缓存的容量只用主存储器的几百分之一,但是缓存的存取速度与中央处理器相匹配。根据程序局部性原理,当主存储器的某一单元正在被使用时,其邻近单元将被用到的可能性较大。因此,当中央处理器存取主存储器某一单元时,计算机硬件就自动地将包括该单元在内的一组单元调入缓存,而中央处理器即将存取的主存储器单元很可能就在刚刚调入的一组单元内。这样,中央处理器就可以直接对缓存进行存取,从而提高了计算机系统的处理速度。
在采用缓存的情况下,需要保证数据在缓存中的副本与该数据在主存储器的副本是一致的。如果该数据在缓存中的副本与在主存储器的副本不一致,程序的后续处理就会出错。现有保证缓存一致性的一种方法是由处理器通过硬件对主存储器和缓存进行监控,而这种方法硬件复杂度很高,对硬件设计和实现的要求很高。现有保证缓存一致性的另一种方法是由程序员通过编写代码来保证缓存一致性,程序的执行效率取决于程序员的编程能力。
发明内容
本发明实施例提供了保证缓存一致性的方法和终端,能够降低保证缓存一致性的复杂程度。
第一方面,本发明实施例提供一种保证缓存一致性的方法,该方法包括:确定源程序包括具有缓存一致性属性的变量;生成对应于该源程序的泛化(generic)树,其中该generic树包括具有缓存一致性属性的generic节点,该具有缓存一致性属性的generic节点对应于该具有缓存一致性属性的变量;生成对应于该generic树gimple集合并生成对应于该gimple集合的RTL集合,其中该RTL集合包括缓存一致的RTL,该缓存一致的RTL对应于该具有缓存一致性属性的generic节点;基于该RTL集合,生成缓存一致的目标代码。
结合第一方面,在第一种可能的实现方式中,生成对应于该generic树的寄存器转换语言RTL集合,该RTL集合包括缓存一致的RTL,该缓存一致的RTL对应于该具有缓存一致性属性的generic节点,包括:对该generic树进行简化gimplify过程并进行缓存一致性处理,生成对应于该generic树的简化gimple集合,其中该gimple集合包括缓存一致的gimple,该缓存一致的gimple对应于该具有缓存一致性属性的generic节点;对该gimple集合进行扩展expand过程,生成对应于该gimple集合的该RTL集合,其中该RTL集合包括该缓存一致的RTL,该缓存一致的RTL对应于该缓存一致的gimple。
结合第一方面,在第二种可能的实现方式中,生成对应于该generic树的寄存器转换语言RTL集合,该RTL集合包括缓存一致的RTL,该缓存一致的RTL对应于该具有缓存一致性属性的generic节点,包括:对该generic树进行简化gimplify过程,生成对应于该generic树的简化gimple集合,其中该gimple集合包括具有缓存一致性属性的gimple,该具有缓存一致性属性的gimple对应于该具有缓存一致性属性的generic节点;对该gimple集合进行扩展expand过程并进行缓存一致性处理,生成对应于该gimple集合的该RTL集合,其中该RTL集合包括该缓存一致的RTL,该缓存一致的RTL对应于该具有缓存一致性属性的gimple。
结合第一种可能的实现方式或第二种可能的实现方式,在第三种可能的实现方式中,在生成对应于该gimple集合的该RTL集合之前,该方法还包括:对该gimple集合进行优化处理。
结合第一方面或上述任一种可能的实现方式,在第四种可能的实现方式中,在基于该RTL集合,生成缓存一致的目标代码之前,该方法还包括:对该RTL集合进行优化处理。
第二方面,本发明实施例提供一种终端,该终端包括:存储单元,用于存储源程序;控制单元,用于确定该源程序包括具有缓存一致性属性的变量;该控制单元,还用于生成对应于该源程序的泛化generic树,其中该generic树包括具有缓存一致性属性的generic节点,该具有缓存一致性属性的generic节点对应于该具有缓存一致性属性的变量;该控制单元,还用于生成对应于该generic树gimple集合并生成对应于该gimple集合的RTL集合,其中该RTL集合包括缓存一致的RTL,该缓存一致的RTL对应于该具有缓存一致性属性的generic节点;该控制单元,还用于基于该RTL集合,生成缓存一致的目标代码;该存储单元,还用于存储该缓存一致的目标代码。
结合第二方面,在第一种可能的实现方式中,该控制单元,具体用于对该generic树进行简化gimplify过程并进行缓存一致性处理,生成对应于该generic树的简化gimple集合,对该gimple集合进行扩展expand过程,生成对应于该gimple集合的该RTL集合,其中该gimple集合包括缓存一致的gimple,该缓存一致的gimple对应于该具有缓存一致性属性的generic节点,该RTL集合包括该缓存一致的RTL,该缓存一致的RTL对应于该缓存一致的gimple。
结合第二方面,在第二种可能的实现方式中,该控制单元,具体用于对该generic树进行简化gimplify过程,生成对应于该generic树的简化gimple集合,对该gimple集合进行扩展expand过程并进行缓存一致性处理,生成对应于该gimple集合的该RTL集合,其中该gimple集合包括具有缓存一致性属性的gimple,该具有缓存一致性属性的gimple对应于该具有缓存一致性属性的generic节点,该RTL集合包括该缓存一致的RTL,该缓存一致的RTL对应于该具有缓存一致性属性的gimple。
结合第一种可能的实现方式或第二种可能的实现方式,在第三种可能的实现方式中,该控制单元,还用于对该gimple集合进行优化处理。
结合第二方面或上述任一种可能的实现方式,在第四种可能的实现方式中,该控制单元,还用于对该RTL集合进行优化处理。
根据本发明实施例,在源程序中需要保证缓存一致性的变量加入缓存一致性关键字以便标识该变量为具有缓存一致性属性的变量,在处理源程序时,可以识别出该源程序中具有缓存一致性属性的变量,从而可以生成缓存一致的目标代码,降低了保证缓存一致性的复杂程度。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的保证缓存一致性的方法的示意性流程图。
图2是根据本发明实施例的保证缓存一致性的方法的示意性流程图。
图3是根据本发明实施例的保证缓存一致性的方法的示意性流程图。
图4是根据本发明实施例提供的终端的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
本发明中所称的终端为具有多核处理器的计算机,该具有多核处理器的计算机包括移动式计算机、便携式计算机、袖珍式计算机、手持式计算机等。
图1是根据本发明实施例的保证缓存一致性的方法的示意性流程图。
101,确定源程序包括具有缓存一致性属性的变量。
102,生成对应于该源程序的泛化(generic)树,其中该generic树包括具有缓存一致性属性的generic节点,该具有缓存一致性属性的generic节点对应于该具有缓存一致性属性的变量。
103,生成对应于该generic树的简化(gimple)集合并生成对应于该gimple集合的寄存器转换语言(Register Transfer Language,RTL)集合,其中该RTL集合包括缓存一致的RTL,该缓存一致的RTL对应于该具有缓存一致性属性的generic节点。
具体地,编译器可以先对该generic树进行简化(gimplify)过程并进行缓存一致性处理,生成对应于该generic树的gimple集合,然后再对该gimple集合进行扩展(expand)过程,生成对应于该gimple集合的RLT集合,其中该gimple集合包括缓存一致性的gimple,该缓存一致性的gimple对应于该具有缓存一致性属性的generic节点,该RTL集合包括缓存一致的RTL,该缓存一致的RTL对应于该缓存一致的gimple。换句话说,该RLT集合中的缓存一致的RTL对应于该generic树中具有缓存一致性属性的generic节点。或者,编译器还可以先对该generic树进行gimplify过程,生成对应于该generic树的gimple集合,然后再对该gimple集合进行扩展过程并进行缓存一致性处理,生成对应于该gimple集合的RTL集合,其中该gimple集合包括具有缓存一致性属性的gimple,该具有缓存一致性属性的gimple对应于该具有缓存一致性属性的generic节点,该RTL集合包括具有缓存一致的RTL,该缓存一致的RTL对应于该具有缓存一致性属性的gimple。换句话说,该RTL集合中的缓存一致的RTL对应于该generic树中的具有缓存一致性属性的generic节点。
104,基于该RTL集合,生成缓存一致的目标代码。
根据图1所示的方法,在源程序中需要保证缓存一致性的变量加入缓存一致性关键字以便标识该变量为具有缓存一致性属性的变量,在处理源程序时,可以识别出该源程序中具有缓存一致性属性的变量,从而可以生成缓存一致的目标代码,降低了保证缓存一致性的复杂程度。
图2是根据本发明实施例的保证缓存一致性的方法的示意性流程图。图2所示的方法是图1的保存缓存一致性的方法的具体实施例。
201,确定源程序是否包括具有缓存一致性属性的变量。
202,在该源程序包含具有缓存一致性属性的变量的情况下,生成对应于该源程序的泛化(generic)树,其中该generic树包括具有缓存一致性属性的generic节点,该具有缓存一致性属性的generic节点对应于该具有缓存一致性属性的变量。
具体地,程序员需要对编写的源程序进行分析,得出缓存一致性的需求,确定需要保证缓存一致性的变量。然后,程序员在编写源程序过程时,通过缓存一致性关键字对需要保证缓存一致性的变量进行限定,得到包含缓存一致性关键字的变量,该变量即为具有缓存一致性属性的变量。编译器在对源程序进行词法分析、语法分析和语义分析,生成generic树,其中该generic树包括具有缓存一致性属性的节点。该具有缓存一致性属性的节点对应于通过缓存一致性关键字限定的具有缓存一致性属性的变量。
可选的,作为一个实施例,可以执行步骤203-205,以便生成对应于该generic树的RTL集合,其中该RTL集合包括缓存一致的RTL,该缓存一致的RTL对应于该具有缓存一致性属性的generic节点。
203,对该generic树进行简化(gimplify)过程并进行缓存一致性处理,生成对应于该generic树的简化(gimple)集合,其中该gimple集合包括缓存一致的gimple,该缓存一致的gimple对应于该具有缓存一致性属性的generic节点。
具体地,在按照generic树转化为gimple的规则生成gimple(即对该generic树进行gimplify过程)时,获取该generic树上的一个generic节点,判断获取到的generic节点是否具有缓存一致性属性。如果该generic节点不具有缓存一致性属性,则直接通过进行gimplify过程生成普通的gimple。如果该generic节点具有缓存一致性属性,则在通过进行gimplify过程生成gimple时对该generic节点进行缓存一致性处理从而生成缓存一致的gimple。重复上述过程,直到该generic树上的所有节点都完成了gimplify过程,生成普通的gimple或缓存一致的gimple。进行了gimplify过程生成的一个或多个普通的gimple和一个或多个缓存一致的gimple组成了该gimple集合,该gimple集合对应于该generic树。
204,对该gimple集合进行优化处理(gimple passes)。
具体地,对该gimple集合进行优化处理生成优化的gimple集合。进一步,可以特别针对该gimple集合中缓存一致的gimple进行优化处理,从而可以保证缓存一致的gimple的高效性。
需要注意的是,步骤204为可选步骤。
205,对该gimple集合进行扩展(expand)过程,生成对应于该gimple集合的RTL集合,其中该RTL集合包括缓存一致的RTL,该缓存一致的RTL对应于该缓存一致的gimple。
具体地,按照gimple转化为RTL规则生成RTL(即对该gimple集合中的gimple进行expand过程),生成对应于该gimple集合的RTL集合。可以理解的是,如果输入的gimple为普通的gimple,则进行expand过程生成的RTL即为普通的RTL;如果输入的gimple为缓存一致的gimple,则进行expand过程生成的RTL为缓存一致的RTL。这样,该缓存一致的RTL对应于该缓存一致的gimple,也就对应于该具有缓存一致性属性的generic节点。
可以理解的是,如果执行了步骤204,则步骤205中的gimple集合为进行了优化处理的gimple集合,该缓存一致的gimple为进行了优化的缓存一致的gimple。
可选的,作为另一个实施例,可以执行步骤206-209,以便生成对应于该generic树的RTL集合,其中该RTL集合包括缓存一致的RTL,该缓存一致的RTL对应于该具有缓存一致性属性的generic节点。
206,对该generic树进行gimplify过程,生成对应于该generic树的gimple集合,其中该gimple集合包括具有缓存一致性属性的gimple,该具有缓存一致性属性的gimple对应于该具有缓存一致性属性的generic节点。
具体地,在对该generic树进行gimplify过程时,如果该generic树上的节点为普通的generic节点,则生成普通的gimple;如果该generic树上的节点为具有缓存一致性属性的generic节点,则生成对应的具有缓存一致性属性的gimple。进行了gimplify过程生成的一个或多个普通的gimple和一个或多个具有缓存一致性属性的gimple组成了gimple集合,该gimple集合对应于该generic树。
207,对该gimple集合进行优化处理(gimple passes)。
具体地,对该gimple集合进行优化处理生成优化的gimple集合。
需要注意的是,步骤207为可选步骤。
208,对该gimple集合进行expand过程并进行缓存一致性处理,生成对应于该gimple集合的RTL集合,其中该RTL集合包括缓存一致的RTL,该缓存一致的RTL对应于该具有缓存一致性属性的gimple。
具体地,在对该gimple集合进行expand过程(即按照gimple转化为RTL规则生成RTL)时,获取该gimple集合中的一条gimple,判断获取到的gimple是否具有缓存一致性属性。如果该gimple不具有缓存一致性属性,则直接通过expand过程生成普通的RTL。如果该gimple具有缓存一致性属性,则在通过expand过程生成RTL时对该gimple进行缓存一致性处理从而生成缓存一致的RTL,其中该缓存一致的RTL对应与该具有缓存一致性属性的gimple,也就对应于该具有缓存一致性属性的generic节点。重复上述过程,直到该gimple集合中的所有gimple都完成了expand过程,生成普通的RTL或缓存一致的RTL。进行了expand过程生成的一个或多个普通的RTL和一个或多个缓存一致的RTL做成了该RTL集合,该RTL集合对应于该generic树。
可以理解的是,如果执行了步骤207,则步骤208中的gimple集合为进行了优化处理的gimple集合
在执行了步骤203-205,或执行了步骤206-208,生成对应于该generic树的RTL集合后,该方法还包括以下步骤。
209,对该RTL集合进行优化处理(RTL passes)。
具体地,对该RTL集合进行优化处理生成优化的RTL集合。进一步,可以特别针对该RTL集合中缓存一致的RTL进行优化处理,从而可以保证缓存一致的RTL的高效性。
需要注意的是,步骤209为可选步骤。
210,基于该RTL集合,生成缓存一致的目标代码。
具体地,按照RTL和汇编对应的规则,将该RTL集合生成目标代码。可以理解的是,由于该RTL集合中包括了缓存一致的RTL,因此生成的目标代码也是缓存一致的。可以理解的是,如果执行了步骤209,则步骤210中的RTL集合为优化的RTL集合,该缓存一致的RTL为优化的缓存一致的RTL。
根据图2所示的方法,在源程序中需要保证缓存一致性的变量加入缓存一致性关键字以便标识该变量为具有缓存一致性属性的变量,在处理源程序时,可以识别出该源程序中具有缓存一致性属性的变量,从而可以生成缓存一致的目标代码。
本发明实施例提供的保证缓存一致性的方法缓存一致性的保证是由编译器来完成的,程序员只需要使用缓存一致性关键字对需要保证缓存一致性的变量进行限定即可。此外,编译器中还有很多成熟的代码优化方法,这些代码优化方法均可以应用于本发明实施例中。通过这些代码优化方法以及在编译器中添加缓存一致性的优化过程,可以保证生成的缓存一致性代码的高效性。
图3是根据本发明实施例的保证缓存一致性的方法的示意性流程图。图3的实施例是图1和图2所示的保证缓存一致性的方法的一个具体的实施例,该例子只是为了帮助本领域技术人员更好地理解本发明实施例,而非限制本发明实施例的范围。
源程序包括如下语句:cache int flag;flag=flag+1;其中,flag为缓存一致性关键字,换句话说,变量flag具有缓存一致性属性。
处理流程为:
301,词法分析。词法分析包括:接收源程序,输出记号流为flag,其中flag含有缓存一致性属性。
302,语法分析。语法分析包括:接收该记号流,输出语法树,其中flag=flag+1为该语法树的一部分,flag含有缓存一致性属性。
303,语义分析。语义分析包括:接收该语法树,输出generic树,其中flag=flag+1为该语法树的一部分,flag含有缓存一致性属性。
304,简化(gimplify)过程。gimplify过程包括:接收该generic树,输出缓存一致的gimple。由于flag含有缓存一致性属性,所以需要生成保证缓存一致的gimple,即:cache disable;flag=flag+1;cache enable;其中cachedisable表示缓存失效,cache enable表示缓存生效。
305,对简化(gimple)集合进行优化处理(gimple passes)。gimple passes包括:接收gimple,输出优化后的gimple,其中可以增加专门针对缓存一致的gimple进行的优化,输出cache disable;flag=flag+1;cache enable。
306,扩展(expand)过程。expand过程包括:接收gimple,输出RTL。由于接收的gimple为缓存一致的gimple,因此输出的RTL也是缓存一致的RTL,即cache disable;flag=flag+1;cache enable。
307,对RTL集合进行优化处理(RTL passes)。RTL passes包括:接收RTL,对RTL进行优化,输出优化后的RTL,其中可以增加专门针对缓存一致的RTL进行的优化,输出cache disable;flag=flag+1;cache enable。
308,目标代码生成。目标代码生成包括:接收优化后的RTL,输出目标代码。假设flag的值存放在r1寄存器中,则输出为cache disable;add r1r11;cache enable。
309,结束。
图4是根据本发明实施例提供的终端的结构框图。如图4所示,终端400包括存储单元401和控制单元402。
存储单元401,用于存储源程序。
控制单元402,用于读取该存储单元401存储的源程序,并确定该源程序包括具有缓存一致性属性的变量。
控制单元402,还用于生成对应于该源程序的generic树,其中该generic树包括具有缓存一致性属性的generic节点,该具有缓存一致性属性的generic节点对应于该具有缓存一致性属性的变量。
控制单元402,还用于生成对应于该generic树gimple集合并生成对应于该gimple集合的RTL集合,该缓存一致的RTL对应于该具有缓存一致性属性的generic节点。
控制单元402,还用于基于该RTL集合,生成缓存一致的目标代码。
存储单元401,还用于存储该缓存一致的目标代码。
根据图4所示的终端400,源程序中需要保证缓存一致性的变量被加入缓存一致性关键字以便表示该变量为具有缓存一致性属性的变量,在处理该源程序时,可以终端400可以识别出该源程序中具有缓存一致性属性的变量,从而可以生成缓存一致的目标代码。
可选的,作为一个实施例,控制单元402,具体用于对该generic树进行gimplify过程并进行缓存一致性处理,生成对应于该generic树的gimple集合,对该gimple集合进行expand过程,生成对应于该gimple集合的RTL集合,其中该gimple包括缓存一致的gimple,该缓存一致的gimple对应于该具有缓存一致性属性的generic节点,该RTL集合包括缓存一致的RTL,该缓存一致的RTL对应于该缓存一致的gimple。
可选的,作为另一个实施例,控制单元402,具体用于对该generic树进行gimplify过程,生成对应于该generic树的gimple集合,对该gimple集合进行expand过程并进行缓存一致性处理,生成对应于该gimple集合的RTL集合,其中该gimple集合包括具有缓存一致性属性的gimple,该具有缓存一致性属性的gimple对应与该具有缓存一致性属性的generic节点,该RTL集合包括缓存一致的RTL,该缓存一致的RTL对应于该具有缓存一致性属性的gimple。
进一步,控制单元402,还用于对该gimple集合进行优化处理。
进一步,控制单元402,还用于对该RTL集合进行优化处理。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random AccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内,因此本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种保证缓存一致性的方法,其特征在于,所述方法包括:
确定源程序包括具有缓存一致性属性的变量;
生成对应于所述源程序的泛化generic树,其中所述generic树包括具有缓存一致性属性的generic节点,所述具有缓存一致性属性的generic节点对应于所述具有缓存一致性属性的变量;
生成对应于所述generic树简化gimple集合并生成对应于所述gimple集合的寄存器转换语言RTL集合,其中所述RTL集合包括缓存一致的RTL,所述缓存一致的RTL对应于所述具有缓存一致性属性的generic节点;
基于所述RTL集合,生成缓存一致的目标代码。
2.如权利要求1所述的方法,其特征在于,所述生成对应于所述generic树简化gimple集合并生成对应于所述gimple集合的寄存器转换语言RTL集合,包括:
对所述generic树进行简化gimplify过程并进行缓存一致性处理,生成对应于所述generic树的简化gimple集合,其中所述gimple集合包括缓存一致的gimple,所述缓存一致的gimple对应于所述具有缓存一致性属性的generic节点;
对所述gimple集合进行扩展expand过程,生成对应于所述gimple集合的所述RTL集合,其中所述RTL集合包括所述缓存一致的RTL,所述缓存一致的RTL对应于所述缓存一致的gimple。
3.如权利要求1所述的方法,其特征在于,所述生成对应于所述generic树简化gimple集合并生成对应于所述gimple集合的寄存器转换语言RTL集合,包括:
对所述generic树进行简化gimplify过程,生成对应于所述generic树的简化gimple集合,其中所述gimple集合包括具有缓存一致性属性的gimple,所述具有缓存一致性属性的gimple对应于所述具有缓存一致性属性的generic节点;
对所述gimple集合进行扩展expand过程并进行缓存一致性处理,生成对应于所述gimple集合的所述RTL集合,其中所述RTL集合包括所述缓存一致的RTL,所述缓存一致的RTL对应于所述具有缓存一致性属性的gimple。
4.如权利要求2或3任一项所述的方法,其特征在于,在所述生成对应于所述gimple集合的所述RTL集合之前,所述方法还包括:
对所述gimple集合进行优化处理。
5.如权利要求1所述的方法,其特征在于,在所述基于所述RTL集合,生成缓存一致的目标代码之前,所述方法还包括:
对所述RTL集合进行优化处理。
6.一种终端,其特征在于,所述终端包括:
存储单元,用于存储源程序;
控制单元,用于确定所述源程序包括具有缓存一致性属性的变量;
所述控制单元,还用于生成对应于所述源程序的泛化generic树,其中所述generic树包括具有缓存一致性属性的generic节点,所述具有缓存一致性属性的generic节点对应于所述具有缓存一致性属性的变量;
所述控制单元,还用于生成对应于所述generic树简化gimple集合并生成对应于所述gimple集合的寄存器转换语言RTL集合,其中所述RTL集合包括缓存一致的RTL,所述缓存一致的RTL对应于所述具有缓存一致性属性的generic节点;
所述控制单元,还用于基于所述RTL集合,生成缓存一致的目标代码;
所述存储单元,还用于存储所述缓存一致的目标代码。
7.如权利要求6所述的终端,其特征在于,
所述控制单元,具体用于对所述generic树进行简化gimplify过程并进行缓存一致性处理,生成对应于所述generic树的简化gimple集合,对所述gimple集合进行扩展expand过程,生成对应于所述gimple集合的所述RTL集合,其中所述gimple集合包括缓存一致的gimple,所述缓存一致的gimple对应于所述具有缓存一致性属性的generic节点,所述RTL集合包括所述缓存一致的RTL,所述缓存一致的RTL对应于所述缓存一致的gimple。
8.如权利要求6所述的终端,其特征在于,
所述控制单元,具体用于对所述generic树进行简化gimplify过程,生成对应于所述generic树的简化gimple集合,对所述gimple集合进行扩展expand过程并进行缓存一致性处理,生成对应于所述gimple集合的所述RTL集合,其中所述gimple集合包括具有缓存一致性属性的gimple,所述具有缓存一致性属性的gimple对应于所述具有缓存一致性属性的generic节点,所述RTL集合包括所述缓存一致的RTL,所述缓存一致的RTL对应于所述具有缓存一致性属性的gimple。
9.如权利要求7或8所述的终端,其特征在于,
所述控制单元,还用于对所述gimple集合进行优化处理。
10.如权利要求6所述的终端,其特征在于,
所述控制单元,还用于对所述RTL集合进行优化处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310268888.2A CN103365656B (zh) | 2013-06-28 | 2013-06-28 | 保证缓存一致性的方法和终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310268888.2A CN103365656B (zh) | 2013-06-28 | 2013-06-28 | 保证缓存一致性的方法和终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103365656A CN103365656A (zh) | 2013-10-23 |
CN103365656B true CN103365656B (zh) | 2016-10-19 |
Family
ID=49367091
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310268888.2A Active CN103365656B (zh) | 2013-06-28 | 2013-06-28 | 保证缓存一致性的方法和终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103365656B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103714014B (zh) * | 2013-11-18 | 2016-12-07 | 华为技术有限公司 | 处理缓存数据的方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6018791A (en) * | 1997-04-14 | 2000-01-25 | International Business Machines Corporation | Apparatus and method of maintaining cache coherency in a multi-processor computer system with global and local recently read states |
CN1577294A (zh) * | 2003-06-25 | 2005-02-09 | 国际商业机器公司 | 具有多个一致性区域的多处理器计算机系统及其方法 |
CN101256524A (zh) * | 2007-12-17 | 2008-09-03 | 浪潮电子信息产业股份有限公司 | 一种保持文件系统缓存一致性的方法 |
US8473667B2 (en) * | 2008-01-11 | 2013-06-25 | International Business Machines Corporation | Network on chip that maintains cache coherency with invalidation messages |
-
2013
- 2013-06-28 CN CN201310268888.2A patent/CN103365656B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6018791A (en) * | 1997-04-14 | 2000-01-25 | International Business Machines Corporation | Apparatus and method of maintaining cache coherency in a multi-processor computer system with global and local recently read states |
CN1577294A (zh) * | 2003-06-25 | 2005-02-09 | 国际商业机器公司 | 具有多个一致性区域的多处理器计算机系统及其方法 |
CN101256524A (zh) * | 2007-12-17 | 2008-09-03 | 浪潮电子信息产业股份有限公司 | 一种保持文件系统缓存一致性的方法 |
US8473667B2 (en) * | 2008-01-11 | 2013-06-25 | International Business Machines Corporation | Network on chip that maintains cache coherency with invalidation messages |
Also Published As
Publication number | Publication date |
---|---|
CN103365656A (zh) | 2013-10-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12050606B2 (en) | Editor for generating computational graphs | |
CN110633248A (zh) | 高性能计算环境中的序列优化 | |
CN103678571B (zh) | 应用于单台多核处理器主机的多线程网络爬虫执行方法 | |
KR20220078566A (ko) | 메모리기반 프로세서 | |
CN107577483B (zh) | 组件工程调用主工程代码的方法、存储介质、设备及系统 | |
US10133827B2 (en) | Automatic generation of multi-source breadth-first search from high-level graph language | |
EP3306479A1 (en) | Memory structure comprising scratchpad memory | |
István et al. | Runtime parameterizable regular expression operators for databases | |
EP3387525B1 (en) | Learning from input patterns in programing-by-example | |
CN208283943U (zh) | 一种基于fpga的cnn加速优化装置 | |
JP2021072107A (ja) | ストレージ周辺の階層的ソート加速のためのストレージシステム及び方法 | |
CN103914483A (zh) | 文件存储方法、装置及文件读取方法、装置 | |
CN102355502B (zh) | 存储系统远程接入桌面操作系统的远程接入方法 | |
Viglas | Processing declarative queries through generating imperative code in managed runtimes | |
Rawlins et al. | An application classification guided cache tuning heuristic for multi-core architectures | |
CN112970011B (zh) | 记录查询优化中的谱系 | |
CN105447285B (zh) | 一种提高OpenCL硬件执行效率的方法 | |
Zhang et al. | G10: Enabling an efficient unified gpu memory and storage architecture with smart tensor migrations | |
CN103365656B (zh) | 保证缓存一致性的方法和终端 | |
CN105302551B (zh) | 一种大数据处理系统的正交分解构造与优化的方法及系统 | |
CN112579454A (zh) | 一种任务数据的处理方法、装置以及设备 | |
CN104932982A (zh) | 一种消息访存的编译方法及相关装置 | |
CN103019801B (zh) | 一种应用于高速数字io波形引擎的编译器 | |
CN106155878B (zh) | 用于在数据库中创建供软件测试用的测试环境的方法和装置 | |
US11157692B2 (en) | Neural networks using data processing units |
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 |