一种内存共享方法、异构硬件、主机及异构系统的制作方法

文档序号:9471304阅读:436来源:国知局
一种内存共享方法、异构硬件、主机及异构系统的制作方法
【技术领域】
[0001]本发明涉及数据存储领域,具体涉及一种内存共享方法、异构硬件、主机及异构系统。
【背景技术】
[0002]现有的单节点异构系统包括主机和异构硬件,主机与硬件通过总线PC1-E互联。其中,异构硬件可以包括众核(Many Integrated Cores, MIC)扩展卡、通用图形处理器(Generate-purpose Graphic Processing Units, GPGPU)等,其作为扩展卡为主机(Host)提供更强大的矢量处理、浮点运算或多线程并行等能力。通常,在异构系统中,主机上的内存较大,而异构硬件上的内存较小。由于目前异构硬件上的内存在存储数据之后,其剩余的空闲存储空间较小,可能难以支持运行一些对内存要求较高的应用,甚至无法完整装载这些应用的数据。因此,如何增大异构硬件的内存的空闲存储空间是目前亟待解决的问题。

【发明内容】

[0003]本发明的目的在于提供一种内存共享方法、异构硬件、主机及异构系统。应用本发明方法,能够增大异构硬件的空闲存储空间。
[0004]本发明第一方面提供一种内存共享方法,所述方法应用于异构硬件,所述异构硬件连接主机,所述方法包括:
[0005]所述异构硬件获取所述主机发送的所述主机的部分内存的内存地址;
[0006]当所述异构硬件的内存的空闲容量低于预定容量时,所述异构硬件根据所述内存地址,将所述异构硬件的内存中使用频率低于预定使用频率的数据存储到所述部分内存。
[0007]结合本发明第一方面,在第一方面的第一种可能实现方式中,所述方法还包括:
[0008]所述异构硬件根据所述内存地址,生成所述部分内存的状态表;所述状态表用于记录所述部分内存的内存页的状态;
[0009]当所述异构硬件的内存的空闲容量低于预定容量时,所述异构硬件根据所述内存地址,将所述异构硬件的内存中使用频率低于预定使用频率的数据存储到所述异构硬件的部分内存,包括:
[0010]当所述异构硬件的内存的空闲容量低于预定容量时,所述异构硬件在所述状态表中查找所述部分内存中处于空闲状态的内存页;
[0011]所述异构硬件在查找到处于空闲状态的内存页之后,将使用频率低于预定使用频率的数据存储到处于空闲状态的内存页中。
[0012]结合本发明第一方面的第一种可能实现方式,在第一方面的第二种可能实现方式中,在所述异构硬件将使用频率低于预定使用频率的数据存储到处于空闲状态的内存页中之后,所述方法还包括:
[0013]当所述异构硬件需要读取所述部分内存中的目标内存页的数据时,判断所述目标内存页在所述状态表中是否处于被所述主机锁定的状态还是处于非锁定状态;
[0014]若所述目标内存页处于非锁定状态,则所述异构硬件读取所述目标内存页的数据;
[0015]若所述目标内存页处于被所述主机锁定的状态,则所述异构硬件向所述主机请求对所述目标内存页进行解锁,使得所述主机终止对所述目标内存页的操作,对所述目标内存页进行解锁,以及在对所述目标内存页进行解锁之后,向所述异构硬件通知所述目标内存页已解锁;
[0016]所述异构硬件接收所述主机发送的所述目标内存页已解锁的通知,对所述目标内存页进行锁定,并在对所述目标内存页锁定之后,读取所述目标内存页中的数据。
[0017]结合本发明第一方面的第一种可能实现方式,在第一方面的第三种可能实现方式中,在所述异构硬件根据所述内存地址,生成所述部分内存的状态表之后,所述方法还包括:
[0018]所述异构硬件接收所述主机发送的查询所述部分内存中的目标内存页是处于被所述异构硬件锁定的状态还是处于非锁定状态的请求;
[0019]所述异构硬件根据所述主机发送的请求,判断所述目标内存页是处于被所述异构硬件锁定的状态还是处于非锁定状态;
[0020]若所述目标内存页处于非锁定状态,则所述异构硬件向所述主机通知所述目标内存页处于非锁定状态,使得所述主机在接收到所述目标内存页处于非锁定状态的通知之后,对所述目标内存页进行锁定,并在对所述目标内存页锁定之后,对所述目标内存页进行操作;
[0021]若所述目标内存页处于被所述异构硬件锁定的状态,则所述异构硬件向所述主机通知所述目标内存页被所述异构硬件锁定,以使得所述主机确定不能对所述目标内存页进行操作。
[0022]结合本发明第一方面的第三种可能实现方式,在第一方面的第四种可能实现方式中,在所述主机对所述目标内存页进行操作之后,所述方法还包括:
[0023]所述异构硬件接收所述主机在完成对所述目标内存页进行的操作之后解除对所述目标内存页的锁定,并在解除对所述目标内存页的锁定之后发送的所述目标内存页已解锁的通知;
[0024]所述异构硬件在接收到所述主机发送的所述目标内存页已解锁的通知之后,将所述目标内存页在所述状态表中的状态修改为非锁定状态。
[0025]结合本发明第一方面或第一方面的第一至第四任意一种可能实现方式,在第一方面的第五种可能实现方式中,在所述异构硬件将所述异构硬件的内存中使用频率低于预定使用频率的数据存储到所述异构硬件的部分内存之后,所述方法还包括:
[0026]所述异构硬件记录使用频率低于预定使用频率的数据在所述部分内存中的存储时间;
[0027]当所述存储时间未达到阈值时,所述异构硬件禁止将所述使用频率低于预定使用频率的数据从所述部分内存读取到所述异构硬件的内存中。
[0028]结合本发明第一方面的第二种可能实现方式,在第一方面的第六种可能实现方式中,在所述异构硬件读取所述目标内存页的数据之后,所述方法还包括:
[0029]所述异构硬件记录读取的所述目标内存页的数据在所述异构硬件的内存中的存储时间;
[0030]当所述存储时间未达到阈值时,所述异构硬件禁止将所述目标内存页的数据从所述异构硬件的内存存储到所述部分内存。
[0031]本发明第二方面提供一种异构硬件,所述异构硬件连接主机,所述异构硬件包括:
[0032]获取单元,用于获取所述主机发送的所述主机的部分内存的内存地址;
[0033]存储单元,用于当所述异构硬件的内存的空闲容量低于预定容量时,根据所述内存地址,将所述异构硬件的内存中使用频率低于预定使用频率的数据存储到所述部分内存。
[0034]结合本发明第二方面,在第二方面的第一种可能实现方式中,所述异构硬件还包括:生成单元和查询单元,
[0035]所述生成单元用于根据所述获取单元获取的所述内存地址,生成所述部分内存的状态表;所述状态表用于记录所述部分内存的内存页的状态;
[0036]所述查询单元用于当所述异构硬件的内存的空闲容量低于预定容量时,在所述状态表中查找所述部分内存中处于空闲状态的内存页;
[0037]所述存储单元还用于在所述查询单元查找到处于空闲状态的内存页之后,将使用频率低于预定使用频率的数据存储到处于空闲状态的内存页中。
[0038]结合本发明第二方面的第一种可能实现方式,在第二方面的第二种可能实现方式中,所述查询单元还用于在所述存储单元将使用频率低于预定使用频率的数据存储到处于空闲状态的内存页中之后,而且当所述异构硬件需要读取所述部分内存中的目标内存页的数据时,判断所述目标内存页在所述状态表中是否处于被所述主机锁定的状态还是处于非锁定状态;
[0039]所述异构硬件还包括读取单元、请求单元和锁定单元,
[0040]所述读取单元用于若所述查询单元判断所述目标内存页处于非锁定状态,则读取所述目标内存页的数据;
[0041]所述请求单元用于若所述查询单元判断所述目标内存页处于被所述主机锁定的状态,则向所述主机请求对所述目标内存页进行解锁,使得所述主机终止对所述目标内存页的操作,对所述目标内存页进行解锁,以及在对所述目标内存页进行解锁之后,向所述异构硬件通知所述目标内存页已解锁;
[0042]所述获取单元还用于接收所述主机发送的所述目标内存页已解锁的通知;
[0043]所述锁定单元用于在所述获取单元接收到所述主机发送的所述目标内存页已解锁的通知,对所述目标内存页进行锁定;
[0044]所述读取单元还用于在所述锁定单元对所述目标内存页锁定之后,读取所述目标内存页中的数据。
[0045]结合本发明第二方面的第一种可能实现方式,在第二方面的第三种可能实现方式中,所述获取单元还用于在所述生成单元根据所述内存地址,生成所述部分内存的状态表之后,接收所述主机发送的查询所述部分内存中的目标内存页是处于被所述异构硬件锁定的状态还是处于非锁定状态的请求;
[0046]所述查询单元用于根据所述获取单元获取到的所述主机发送的请求,判断所述目标内存页是处于被所述异构硬件锁定的状态还是处于非锁定状态;
[0047]所述异构硬件还包括:发送单元,所述发送单元用于若所述查询单元判断所述目标内存页处于非锁定状态,则向所述主机通知所述目标内存页处于非锁定状态,使得所述主机在接收到所述目标内存页处于非锁定状态的通知之后,对所述目标内存页进行锁定,并在对所述目标内存页锁定之后,对所述目标内存页进行操作;还用于若所述查询单元判断所述目标内存页处于被所述异构硬件锁定的状态,则向所述主机通知所述目标内存页被所述异构硬件锁定,以使得所述主机确定不能对所述目标内存页进行操作。
[0048]结合本发明第二方面的第三种可能实现方式,在第二方面的第四种可能实现方式中,所述获取单元还用于在所述主机对所述目标内存页进行操作之后,接收所述主机在完成对所述目标内存页进行的操作之后解除对所述目标内存页的锁定,并在解除对所述目标内存页的锁定之后发送的所述目标内存页已解锁的通知;
[0049]所述异构硬件还包括状态单元,所述状态单元用于在所述获取单元接收到所述主机发送的所述目标内存页已解锁的通知之后,将所述目标内存页在所述状态表中的状态修改为非锁定状态。
[0050]结合本发明第二方面或第一方面的第一至第四任意一种可能实现方式,在第二方面的第五种可能实现方式中,所述异构硬件还包括时间单元和禁止单元,
[0051]所述时间单元用于在所述存储单元将所述异构硬件的内存中使用频率低于预定使用频率的数据存储到所述异构硬件的部分内存之后,记录使用频率低于预定使用频率的数据在所述部分内存中的存储时间;
[0052]所述禁止单元用于当所述时间单元记录的所述存储时间未达到阈值时,禁止将所述使用频率低于预定使用频率的数据从所述部分内存读取到所述异构硬件的内存中。
[0053]结合本发明第二方面的第二种可能实现方式,在第二方面的第六种可能实现方式中,所述异构硬件还包括时间单元和禁止单元,
[0054]所述时间单元用于在所述读取单元读取所述目标内存页的数据之后,记录读取的所述目标内存页的数据在所述异构硬件的内存中的存储时间;
[0055]所述禁止单元用于当所述时间单元记录的所述存储时间未达到阈值时,禁止将所述目标内存页的数据从所述异构硬件的内存存储到所述部分内存。
[0056]本发明第三方面提供一种内存共享方法,所述方法应用于主机,所述主机连接异构硬件,所述方法包括:
[0057]所述主机向所述异构硬件发送所述主机的部分内存的内存地址,使得当所述异构硬件的内存的空闲容量低于预定容量时,所述异构硬件根据所述内存地址,将所述异构硬件的内存中使用频率低于预定使用频率的数据存储到所述部分内存。
[0058]结合本发明第三方面,在第三方面的第一种可能实现方式中,所述方法还包括:当所述异构硬件需要读取所述部分内存中的目标内存页的数据,并在所述异构硬件根据所述内存地址生成的所述部分内存的状态表中查询到所述目标内存页处于被所述主机锁定的状态时,所述主机接收所述异构硬件发送的对所述目标内存页进行解锁的请求;所述部分内存的状态表用于记录所述部分内存的内存页的状态;
[0059]所述主机在接收到对所述目标内存页进行解锁的请求之后,终止对所述目标内存页的操作,并对所述目标内存页进行解锁;
[0060]所述主机在对所述目标内存页进行解锁之后,向所述异构硬件通知所述目标内存页已解锁,使得所述异构硬件在接收到所述主机发送的所述目标内存页已解锁的通知之后,对所述目标内存页进行锁定,并在对所述
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1