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

一种编程语言指针类型Cache属性扩展方法与流程

2022-03-22 20:18:09 来源:中国专利 TAG:

一种编程语言指针类型cache属性扩展方法
技术领域
1.本发明涉及一种编程语言指针类型cache属性扩展方法,属于编程语言设计技术领域。


背景技术:

2.指针类型是c语言等编程语言中的一种基本数据类型,通过指针访问数据是是一种普遍的数据访问方式。
3.使用spm等弱一致性存储器作为缓存能够减少芯片面积、降低功耗,在高性能和嵌入式等领域芯片中被大量使用,但spm完全由用户程序控制的方式增加了编程人员的负担。允许spm能够根据程序需要动态配置为硬件cache以及程序运行过程中动态决定数据是否进入cache,成为了一种缓存结构发展的新趋势,能够在好用性和功耗之间进行平衡。现有的编程语言指针类型没有cache属性,不能很好的适应新的存储结构。


技术实现要素:

4.本发明的目的是提供一种编程语言指针类型cache属性扩展方法,其方便编程人员提高程序访存效率和降低cache部件功耗。
5.为达到上述目的,本发明采用的技术方案是:提供一种编程语言指针类型cache属性扩展方法,基于以下配置:扩展指针类型的cache属性,cache属性具有cached和uncached两个值,通过值为cached属性的指针访问数据,则数据在访问过程中会进入cache;通过值为uncached属性的指针访问数据,则数据不进入cache;cache属性初始化,允许在指针变量申明时为指针变量的cache属性设置初始值;cache属性设置,允许在程序语句中动态设置和修改指针变量的cache属性值;cache子属性设置,具体为:cache写暗示段子属性设置,在程序执行语句使用中对指定空间进行写暗示,指示对指定地址空间将马上进行写操作;cache私有段子属性设置,作用域为其后的for、while、do-while、if语句或{}括起来的复合语句,指示对指定地址空间的访问是私有的;基于上述配置的编程方法包括以下步骤:s1、申明指针变量时,对指针变量的cache属性进行初始化;s2、在程序执行语句中,根据访存模式,动态设置指针变量的cache属性值;s3、对只写访问的数据,设置cache写暗示段子属性,对只写访问的性能进行优化;s4、对私有访问的数据,设置cache私有段子属性,对私有访问的性能进行优化。
6.上述技术方案中进一步改进的方案如下:1. 上述方案中,cache属性初始化配置中,允许在申明指针变量时,初始化指针数据类型的cache属性值。
7.2. 上述方案中,cache属性设置中,指针变量的cache属性值允许在程序中根据需要进行动态设置和修改。
8.由于上述技术方案的运用,本发明与现有技术相比具有下列优点:本发明编程语言指针类型cache属性扩展方法,针对新型缓存结构中数据访问可选则是否进入cache的情况,通过扩展编程语言中指针类型的cache属性,为编程人员提供简单灵活的cache使用方式,方便编程人员提高程序访存效率和降低cache部件功耗,降低编程人员在新型缓存结构上编程的复杂度,提升新型缓存结构的好用性。
附图说明
9.附图1为本发明扩展的指针类型cache属性总体结构框架示意图。
具体实施方式
10.实施例:本发明提供一种编程语言指针类型cache属性扩展方法,基于以下配置:扩展指针类型的cache属性,cache属性具有cached和uncached两个值,通过值为cached属性的指针访问数据,则数据在访问过程中会进入cache;通过值为uncached属性的指针访问数据,则数据不进入cache;cache属性初始化,允许在指针变量申明时为指针变量的cache属性设置初始值;cache属性设置,允许在程序语句中动态设置和修改指针变量的cache属性值;cache子属性设置,具体为:cache写暗示段子属性设置,在程序执行语句使用中对指定空间进行写暗示,指示对指定地址空间将马上进行写操作;cache私有段子属性设置,作用域为其后的for、while、do-while、if语句或{}括起来的复合语句,指示对指定地址空间的访问是私有的;基于上述配置的编程方法包括以下步骤:s1、申明指针变量时,对指针变量的cache属性进行初始化;s2、在程序执行语句中,根据访存模式,动态设置指针变量的cache属性值;s3、对只写访问的数据,设置cache写暗示段子属性,对只写访问的性能进行优化;s4、对私有访问的数据,设置cache私有段子属性,对私有访问的性能进行优化。
11.cache属性初始化配置中,允许在申明指针变量时,初始化指针数据类型的cache属性值。
12.cache属性设置中,指针变量的cache属性值允许在程序中根据需要进行动态设置和修改。
13.对上述实施例的进一步解释如下:本专利发明的cache属性作为指针类型的全局属性,在整个指针变量的生存期都起作用,并且允许cache属性动态修改。
14.指针类型的cache属性具有cached和uncached两个值:通过值为cached属性的指针访问数据,则数据在访问过程中会进入cache;通过值为uncached属性的指针访问数据,则数据直接从主存进入寄存器,不进入cache。指针变量的cache属性值默认为uncached,即不做特殊说明的情况下,通过指针进行数据访问不进入cache。
15.为进一步优化cache的访存性能,cache属性还可以包括多个子属性,如cache写暗示段,cache私有段等。cache写暗示段表示程序后续的访问行为为对该段内存空间只进行写操作,设置写暗示段的效果是cache与该段内存空间建立映射关系,但不把该段内存中的数据读入cache,可以减少数据从主存进入cache的次数和降低功耗;cache私有段表示对该段空间是私有访问的,在多核共享内存私有cache的存储结构上,私有段可以避免为解决假共享问题必须进行的细粒度掩码写,增大数据从cache写入内存的粒度,减少写入的时间。
16.本专利的cache属性描述方法包括cache属性初始化和cache属性设置两类,cache属性设置又分为设置为cached和设置为uncached。本发明所述的cache属性描述采用编译指示的形式实现,具体的编译指示格式如下:1、cache属性初始化#pragma cache cached/uncached申明式语句,后续必须是指针变量申明语句,表示后续语句申明的指针变量的cache属性值为cached或uncached。
17.2、设置cache属性#pragma cache cached/uncached [ptr]命令式语句,在程序执行语句中使用,参数为指针变量名,用于设置参数的cache属性值为cached或uncached。
[0018]
3、cache子属性(1)cache写暗示段#pragma cache write_hint [a, (start:end)]命令式语句,在程序执行语句中使用,对指定空间进行写暗示,指示对指定地址空间将马上进行写操作。参数为数组名或起始地址和结束地址组成的二元组,指示对指定的空间进行写暗示。
[0019]
(2)cache私有段#pragma cache private_section [a, (start:end))]private_section子句与for、while、do-while、if语句或{}括起来的复合语句绑定,作用域为其后的for、while、do-while、if语句或{}括起来的复合语句。设置cache私有段属性,指示对指定地址空间的访问是私有的。参数为数组名或起始地址和结束地址组成的二元组,表示私有区为整个数组或start到end的内存区域。cache私有段属性为局部属性,只在作用域内有效。
[0020]
采用上述一种编程语言指针类型cache属性扩展方法时,其针对新型缓存结构中数据访问可选则是否进入cache的情况,通过扩展编程语言中指针类型的cache属性,为编程人员提供简单灵活的cache使用方式,方便编程人员提高程序访存效率和降低cache部件功耗,降低编程人员在新型缓存结构上编程的复杂度,提升新型缓存结构的好用性。
[0021]
上述实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。
再多了解一些

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

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

相关文献