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

文档序号:9471304阅读:来源:国知局
目标内存页锁定之后,读取所述目标内存页中的数据。
[0061]结合本发明第三方面,在第三方面的第二种可能实现方式中,所述方法还包括:
[0062]所述主机向所述异构硬件发送查询所述部分内存中的目标内存页是处于被所述异构硬件锁定的状态还是处于非锁定状态的请求,使得所述异构硬件根据所述主机发送的请求,查询根据所述内存地址生成的所述部分内存的状态表,判断所述目标内存页是处于被所述异构硬件锁定的状态还是处于非锁定状态;若所述目标内存页处于非锁定状态,则所述异构硬件向所述主机通知所述目标内存页处于非锁定状态;若所述目标内存页处于被所述异构硬件锁定的状态,则所述异构硬件向所述主机通知所述目标内存页被所述异构硬件锁定;所述部分内存的状态表用于记录所述部分内存的内存页的状态;
[0063]当所述主机接收到所述目标内存页处于非锁定状态的通知时,对所述目标内存页进行锁定;所述主机在对所述目标内存页锁定之后,对所述目标内存页进行操作;
[0064]当所述主机接收到所述异构硬件发送的所述目标内存页处于被所述异构硬件锁定的通知时,所述主机确定不能对所述目标内存页进行操作。
[0065]结合本发明第三方面的第二种可能实现方式,在第三方面的第三种可能实现方式中,所述方法还包括:
[0066]所述主机在完成对所述目标内存页进行操作之后,解除对所述目标内存页的锁定;
[0067]所述主机在解除对所述目标内存页的锁定之后,向所述异构硬件发送所述目标内存页已解锁的通知,使得所述异构硬件在接收到所述主机发送的所述目标内存页已解锁的通知之后,将所述目标内存页在所述状态表中的状态修改为非锁定状态。
[0068]本发明第四方面提供一种主机,所述主机连接异构硬件,所述主机包括:
[0069]发送单元,用于向所述异构硬件发送所述主机的部分内存的内存地址,使得当所述异构硬件的内存的空闲容量低于预定容量时,所述异构硬件根据所述内存地址,将所述异构硬件的内存中使用频率低于预定使用频率的数据存储到所述部分内存。
[0070]结合本发明第三方面,在第三方面的第一种可能实现方式中,所述异构硬件还包括:接收单元和解锁单元,
[0071]所述接收单元用于当所述异构硬件需要读取所述部分内存中的目标内存页的数据,并在所述异构硬件根据所述内存地址生成的所述部分内存的状态表中查询到所述目标内存页处于被所述主机锁定的状态时,接收所述异构硬件发送的对所述目标内存页进行解锁的请求;所述部分内存的状态表用于记录所述部分内存的内存页的状态;
[0072]所述解锁单元用于在接收到对所述目标内存页进行解锁的请求之后,终止对所述目标内存页的操作,并对所述目标内存页进行解锁;
[0073]所述发送单元还用于在对所述目标内存页进行解锁之后,向所述异构硬件通知所述目标内存页已解锁,使得所述异构硬件在接收到所述主机发送的所述目标内存页已解锁的通知之后,对所述目标内存页进行锁定,并在对所述目标内存页锁定之后,读取所述目标内存页中的数据。
[0074]结合本发明第三方面,在第三方面的第二种可能实现方式中,所述发送单元还用于向所述异构硬件发送查询所述部分内存中的目标内存页是处于被所述异构硬件锁定的状态还是处于非锁定状态的请求,使得所述异构硬件根据所述主机发送的请求,查询根据所述内存地址生成的所述部分内存的状态表,判断所述目标内存页是处于被所述异构硬件锁定的状态还是处于非锁定状态;若所述目标内存页处于非锁定状态,则所述异构硬件向所述主机通知所述目标内存页处于非锁定状态;若所述目标内存页处于被所述异构硬件锁定的状态,则所述异构硬件向所述主机通知所述目标内存页被所述异构硬件锁定;所述部分内存的状态表用于记录所述部分内存的内存页的状态;
[0075]所述接收单元还用于接收所述目标内存页处于非锁定状态的通知或接收所述异构硬件发送的所述目标内存页处于被所述异构硬件锁定的通知;
[0076]所述异构硬件还包括:锁定单元和操作单元,
[0077]所述锁定单元用于当所述接收单元接收到所述目标内存页处于非锁定状态的通知时,对所述目标内存页进行锁定;
[0078]所述操作单元用于在所述锁定单元对所述目标内存页进行锁定之后,对所述目标内存页进行操作。
[0079]结合本发明第四方面的第二种可能实现方式,在第四方面的第三种可能实现方式中,所述解锁单元还用于在所述操作单元完成对所述目标内存页进行操作之后,解除对所述目标内存页的锁定;
[0080]所述发送单元还用于在解除对所述目标内存页的锁定之后,向所述异构硬件发送所述目标内存页已解锁的通知,使得所述异构硬件在接收到所述主机发送的所述目标内存页已解锁的通知之后,将所述目标内存页在所述状态表中的状态修改为非锁定状态。
[0081]本发明第五方面提供一种异构系统,其包括:主机和异构硬件,所述主机与所述异构硬件连接;
[0082]所述主机用于向所述异构硬件发送所述主机的部分内存的内存地址;
[0083]所述异构硬件用于接收所述主机发送的所述内存地址,以及当所述异构硬件的内存的空闲容量低于预定容量时,根据所述内存地址,将所述异构硬件的内存中使用频率低于预定使用频率的数据存储到所述部分内存。
[0084]结合本发明第五方面,在第五方面的第一种可能实现形式中,所述异构硬件还用于根据所述内存地址,生成所述部分内存的状态表;所述状态表用于记录所述部分内存的内存页的状态;以及用于当所述异构硬件的内存的空闲容量低于预定容量时,在所述状态表中查找所述部分内存中处于空闲状态的内存页;在查找到处于空闲状态的内存页之后,将使用频率低于预定使用频率的数据存储到处于空闲状态的内存页中。
[0085]结合本发明第五方面的第一种可能实现形式,在第五方面的第二种可能实现形式中,所述异构硬件还用于在将使用频率低于预定使用频率的数据存储到处于空闲状态的内存页中之后,而且当所述异构硬件需要读取所述部分内存中的目标内存页的数据时,判断所述目标内存页在所述状态表中是否处于被所述主机锁定的状态还是处于非锁定状态;
[0086]若所述目标内存页处于非锁定状态,则读取所述目标内存页的数据;
[0087]若所述目标内存页处于被所述主机锁定的状态,则向所述主机请求对所述目标内存页进行解锁;
[0088]所述主机还用于接收所述异构硬件发送的对所述目标内存页进行解锁的请求,终止对所述目标内存页的操作,对所述目标内存页进行解锁,以及在对所述目标内存页进行解锁之后,向所述异构硬件通知所述目标内存页已解锁;
[0089]所述异构硬件还用于接收所述主机发送的所述目标内存页已解锁的通知,对所述目标内存页进行锁定,并在对所述目标内存页锁定之后,读取所述目标内存页中的数据。
[0090]结合本发明第五方面的第一种可能实现形式,在第五方面的第三种可能实现形式中,所述主机还用于在所述异构硬件根据所述内存地址,生成所述部分内存的状态表之后,向所述异构硬件发送查询所述部分内存中的目标内存页是处于被所述异构硬件锁定的状态还是处于非锁定状态的请求;
[0091]所述异构硬件还用于接收所述主机发送的查询所述部分内存中的目标内存页是处于被所述异构硬件锁定的状态还是处于非锁定状态的请求;以及用于根据所述主机发送的请求,判断所述目标内存页是处于被所述异构硬件锁定的状态还是处于非锁定状态;若所述目标内存页处于非锁定状态,则向所述主机通知所述目标内存页处于非锁定状态;若所述目标内存页处于被所述异构硬件锁定的状态,则向所述主机通知所述目标内存页被所述异构硬件锁定;
[0092]所述主机还用于在接收到所述目标内存页处于非锁定状态的通知之后,对所述目标内存页进行锁定,并在对所述目标内存页锁定之后,对所述目标内存页进行操作;以及用于在接收到所述目标内存页被所述异构硬件锁定的通知之后,确定不能对所述目标内存页进行操作。
[0093]结合本发明第五方面的第三种可能实现形式,在第五方面的第四种可能实现形式中,所述主机还用于在对所述目标内存页进行操作之后,解除对所述目标内存页的锁定,并在解除对所述目标内存页的锁定之后,向所述异构硬件发送所述目标内存页已解锁的通知;
[0094]所述异构硬件还用于接收所述主机发送的所述目标内存页已解锁的通知,将所述目标内存页在所述状态表中的状态修改为非锁定状态。
[0095]结合本发明第五方面或第五方面的第一至第四种可能实现形式,在第五方面的第五种可能实现形式中,所述异构硬件还用于在将所述异构硬件的内存中使用频率低于预定使用频率的数据存储到所述异构硬件的部分内存之后,记录使用频率低于预定使用频率的数据在所述部分内存中的存储时间;当所述存储时间未达到阈值时,所述异构硬件禁止将所述使用频率低于预定使用频率的数据从所述部分内存读取到所述异构硬件的内存中。
[0096]结合本发明第五方面的第二种可能实现形式,在第五方面的第六种可能实现形式中,所述异构硬件还用于在读取所述目标内存页的数据之后,记录读取的所述目标内存页的数据在所述异构硬件的内存中的存储时间;当所述存储时间未达到阈值时,禁止将所述目标内存页的数据从所述异构硬件的内存存储到所述部分内存。
[0097]采用本发明提供的内存共享方法,能够将异构硬件的内存中使用频率低于预定使用频率的数据存储到主机的部分内存,减少使用频率低于预定使用频率的数据在异构硬件的内存中所占用的存储空间,从而增大异构硬件的空闲存储空间,为运行在异构硬件上的应用提供更多的内存空间。
【附图说明】
[0098]图1是本发明提供的一种内存共享方法的流程示意图;
[0099]图2是本发明提供的另一种内存共享方法的流程示意图;
[0100]图3是本发明提供的异构硬件从主机的部分内存读取数据的步骤示意图;
[0101]图4是本发明提供的主机读取所述部分内存的内存页的步骤示意图;
[0102]图5是本发明提供的一种异构硬件的结构示意图;
[0103]图6是本发明提供的另一种异构硬件的结构示意图;
[0104]图7是本发明提供的一种内存共享方法的流程示意图;
[0105]图8是本发明提供的主机解锁的流程示意图;
[0106]图9是本发明提供的主机对所述部分内存中的目标内存页进行操作的流程示意图;
[0107]图10是本发明提供的一种主机的结构示意图;
[0108]图11是本发明提供的一种主机的结构示意图;
[0109]图12是本发明提供的一种异构系统的结构示意图;
[0110]图13是本发明提供的一种单节点异构系统示意图;
[0111]图14是本发明提供的共享内存与MIC中的内存映射关系示意图;
[0112]图15是本发明提供的共享内存与MIC0中的内存映射关系示意图;
[0113]图16是本发明提供的一种异构硬件的结构示意图;
[0114]图17是本发明提供的一种主机的结构示意图。
【具体实施方式】
[0115]以下列举实施例对本发明进行介绍。
[0116]如图1所示,本发明实施例提供一种内存共享方法,所述内存共享方法应用于异构硬件,所述异构硬件连接主机。所述主机和所述异构硬件上均设有内存。所述异构硬件为所述主机提供矢量处理、浮点运算或多线程并行等能力。所述内存共享方法可以包括:
[0117]101、异构硬件获取所述主机发送的所述主机的部分内存的内存地址。
[0118]102、当所述异构硬件的内存的空闲容量低于预定容量时,所述异构硬件根据所述内存地址,将所述异构硬件的内存中使用频率低于预定使用频率的数据存储到所述部分内存。
[0119]在本实施例中,所述主机的部分内存用于作为共享内存,为所述异构硬件中的内存数据提供存储空间。所述异构硬件可以根据近期最少使用(Least Recently Used, LRU)算法,从所述异构硬件的内存中选出使用频率低于预定使用频率的数据。所选出的使用频率低于预定使用频率的数据可以称为不常用数据。在将不常用的数据存储到主机的部分内存上后,异构硬件上被不常用数据占据的内存空间则可以用于存储其他数据,即增大了异构硬件的内存的空闲存储空间。当应用在异构硬件运行时,异构硬件能够为应用提供更多的内存空间的支持,减少因内存容量不足而导致应用无法完成数据加载的现象。
[0
当前第2页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1