一种数据存储方法和装置制造方法

文档序号:6514598阅读:197来源:国知局
一种数据存储方法和装置制造方法
【专利摘要】本发明的实施例提供一种数据存储的方法和装置,应用于计算机领域,能够支持混合内存中待存储数据的存储。所述数据存储方法用于编译器,包括:判断待存储数据的数据类型;若所述待存储数据的数据类型是预设数据类型,获取所述待存储数据贡献值;根据所述待存储数据的贡献值判断所述待存储数据在混合内存的存储位置,所述混合内存由消息式内存和普通内存构成。本发明的实施例提供一种数据存储方法和装置,用于混合内存中数据的存储。
【专利说明】一种数据存储方法和装置

【技术领域】
[0001] 本发明涉及计算机领域,尤其涉及一种数据存储方法和装置。

【背景技术】
[0002] 内存性能为内存的访存速度,内存性能是影响计算机性能的重要因素之一,近年 来,随着计算机的发展,内存的访存速度已经成为制约计算机性能的主要瓶颈。目前,数据 在普通内存进行访存时的,数据粒度是固定不变的,但是在实际应用中,待存储数据不同, 数据粒度也是变化的,对于一些数据粒度较小的数据的访存,按照固定不变的数据粒度在 普通内存进行存储必然造成浪费,如普通内存的存储粒度占用缓存链路(cacheIine)32个 字节,而待存储数据的实际数据粒度为4个字节,所述待存储数据在普通内存进行存储时, 需要填充28个空白字节。
[0003] 现有技术中,针对数据粒度较小的数据访存,提出了一种新的内存结构,即称为消 息式内存,所述消息式内存支持随机的小数据粒度的待存储数据的访存。但是目前,消息式 内存还不能完全取代普通内存,因此普通内存和消息式内存构成的混合内存将广泛存在, 但是,现有的数据存储方法,只针对普通内存进行待存储数据的存储,无法支持混合内存中 待存储数据的存储。


【发明内容】

[0004] 本发明的实施例提供一种数据存储的方法和装置,能够支持混合内存中待存储数 据的存储。
[0005] 为达到上述目的,本发明的实施例采用如下技术方案:
[0006] 第一方面,提供一种数据存储方法,用于编译器,包括:
[0007] 判断待存储数据的数据类型;
[0008] 若所述待存储数据的数据类型是预设数据类型,获取所述待存储数据贡献值;
[0009] 根据所述待存储数据的贡献值判断所述待存储数据在混合内存的存储位置,所述 混合内存由消息式内存和普通内存构成。
[0010] 结合第一方面,在第一种可实现方式中,所述获取所述待存储数据的贡献值包 括:
[0011] 根据所述待存储数据的数据类型,标记所述待存储数据在作用域函数集合中的各 个访存点的贡献值;
[0012] 层次遍历所述作用域函数集合的函数调用图,生成所述待存储数据的作用域函数 队列;
[0013] 按照从后往前的顺序计算所述作用域函数队列中的各个函数的贡献值;
[0014] 获取所述各个函数的贡献值之和得到所述待存储数据的贡献值。
[0015] 结合第一种可实现方式,在第二种可实现方式中,所述计算所述各个函数的贡献 值包括:
[0016] 获取函数f?中访存点的个数,所述函数f?为所述作用域函数集合中的任意函数;
[0017] 获取所述函数f中各个访存点的估计执行次数;
[0018] 获取所述函数f?中各个访存点的贡献值;
[0019] 获取所述函数f?的估计执行次数;
[0020] 根据所述函数f中访存点的个数、所述函数f中各个访存点的估计执行次数、所述 函数f中各个访存点的贡献值及所述函数f?的估计执行次数获取所述函数f?的贡献值,所 述函数f的贡献值V(f)满足下列公式:

【权利要求】
1. 一种数据存储方法,其特征在于,用于编译器,包括: 判断待存储数据的数据类型; 若所述待存储数据的数据类型是预设数据类型,获取所述待存储数据贡献值; 根据所述待存储数据的贡献值判断所述待存储数据在混合内存的存储位置,所述混合 内存由消息式内存和普通内存构成。
2. 根据权利要求1所述的方法,其特征在于,所述获取所述待存储数据的贡献值包括: 根据所述待存储数据的数据类型,标记所述待存储数据在作用域函数集合中的各个访 存点的贡献值; 层次遍历所述作用域函数集合的函数调用图,生成所述待存储数据的作用域函数队 列; 按照从后往前的顺序计算所述作用域函数队列中的各个函数的贡献值; 获取所述各个函数的贡献值之和得到所述待存储数据的贡献值。
3. 根据权利要求2所述的方法,其特征在于,所述计算所述各个函数的贡献值包括: 获取函数f中访存点的个数,所述函数f为所述作用域函数集合中的任意函数; 获取所述函数f中各个访存点的估计执行次数; 获取所述函数f中各个访存点的贡献值; 获取所述函数f的估计执行次数; 根据所述函数f中访存点的个数、所述函数f中各个访存点的估计执行次数、所述函数 f中各个访存点的贡献值及所述函数f的估计执行次数获取所述函数f的贡献值,所述函数 f的贡献值V (f)满足下列公式:
其中,所述 '表示所述函数f中第j个访存点的贡献值,所述h表示所述函数f中第 j个访存点的估计执行次数,所述η表示所述函数f中访存点的个数,所述m表示所述函数 f的估计执行次数。
4. 根据权利要求1至3任意一项权利要求所述的方法,其特征在于,所述预设数据类型 为占用内存空间大于预设阈值的数组; 或,所述预设数据类型为第一复杂类型数据,所述第一复杂类型数据包含至少一个所 述占用内存空间大于预设阈值的数组; 或,所述预设数据类型为第二复杂类型数据,所述第二复杂类型数据包含自身类型指 针。
5. 根据权利要求4所述的方法,其特征在于, 所述根据所述待存储数据的贡献值判断所述待存储数据在混合内存的存储位置包 括: 若所述贡献值大于预设贡献值阈值,则将所述待存储数据存储在消息式内存中; 若所述贡献值小于等于所述预设贡献值阈值,则将所述待存储数据存储在普通内存 中。
6. 根据权利要求1至5任意一项权利要求所述的方法,其特征在于,在所述判断待存储 数据的数据类型之后,所述方法还包括: 若所述待存储数据的数据类型不是预设数据类型,判断所述待存储数据同层次的数据 中是否含有存储在消息式内存中的数据; 若所述待存储数据的同层次的数据中含有存储在消息式内存中的数据,则将待存储数 据存储在消息式内存中; 若所述待存储数据的同层次的数据中不含存储在消息式内存中的数据,则将待存储数 据存储在普通内存中。
7. -种编译器,其特征在于,包括: 第一判断单元,用于判断待存储数据的数据类型; 获取单元,用于若判断单元判断出所述待存储数据的数据类型是预设数据类型,获取 所述待存储数据贡献值; 第二判断单元,用于根据所述获取单元获取的所述待存储数据的贡献值判断所述待存 储数据在混合内存的存储位置,所述混合内存由消息式内存和普通内存构成。
8. 根据权利要求7所述的编译器,其特征在于,所述获取单元还包括: 标记子单元,用于根据所述待存储数据的数据类型,标记所述待存储数据在作用域函 数集合中的各个访存点的贡献值; 生成子单元,用于层次遍历所述作用域函数集合的函数调用图,生成所述待存储数据 的作用域函数队列; 第一计算子单元,用于按照从后往前的顺序计算所述作用域函数队列中的各个函数的 贡献值; 第二计算子单元,用于获取所述各个函数的贡献值之和得到所述待存储数据的贡献 值。
9. 根据权利要求8所述的编译器,其特征在于,所述第一计算子单元具体用于: 获取函数f中访存点的个数,所述函数f为所述作用域函数集合中的任意函数; 获取所述函数f中各个访存点的估计执行次数; 获取所述函数f中各个访存点的贡献值; 获取所述函数f的估计执行次数; 根据所述函数f中访存点的个数、所述函数f中各个访存点的估计执行次数、所述函数 f中各个访存点的贡献值及所述函数f的估计执行次数获取所述函数f的贡献值,所述函数 f的贡献值V (f)满足下列公式:
其中,所述 '表示所述函数f中第j个访存点的贡献值,所述h表示所述函数f中第 j个访存点的估计执行次数,所述η表示所述函数f中访存点的个数,所述m表示所述函数 f的估计执行次数。
10. 根据权利要求7至9任意一项权利要求所述的编译器,其特征在于,所述预设数据 类型为占用内存空间大于预设阈值的数组; 或,所述预设数据类型为第一复杂类型数据,所述第一复杂类型数据包含至少一个所 述占用内存空间大于预设阈值的数组; 或,所述预设数据类型为第二复杂类型数据,所述第二复杂类型数据包含自身类型指 针。
11. 根据权利要求10所述的编译器,其特征在于, 所述第二判断单元具体用于: 若所述贡献值大于预设贡献值阈值,则将所述待存储数据存储在消息式内存中; 若所述贡献值小于等于所述预设贡献值阈值,则将所述待存储数据存储在普通内存 中。
12. 根据权利要求7至11任意一项权利要求所述的编译器,其特征在于,所述编译器还 包括第三判断单元,用于: 若所述待存储数据的数据类型不是预设数据类型,判断所述待存储数据同层次的数据 中是否含有存储在消息式内存中的数据; 若所述待存储数据的同层次的数据中含有存储在消息式内存中的数据,则将待存储数 据存储在消息式内存中; 若所述待存储数据的同层次的数据中不含存储在消息式内存中的数据,则将待存储数 据存储在普通内存中。
【文档编号】G06F12/02GK104516823SQ201310464285
【公开日】2015年4月15日 申请日期:2013年9月30日 优先权日:2013年9月30日
【发明者】卢廷玉, 刘颖 申请人:华为技术有限公司, 中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1