首页> 中国专利> 一种内存共享方法、异构硬件、主机及异构系统

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

摘要

本发明公开了一种内存共享方法,应用于异构硬件,异构硬件连接主机,本发明方法包括:异构硬件获取主机发送的主机的部分内存的内存地址;当异构硬件的内存的空闲容量低于预定容量时,异构硬件根据内存地址,将异构硬件的内存中使用频率低于预定使用频率的数据存储到部分内存。采用本发明提供的内存共享方法,能够将异构硬件的内存中使用频率低于预定使用频率的数据存储到主机的部分内存,减少使用频率低于预定使用频率的数据在异构硬件的内存中所占用的存储空间,从而增大异构硬件的空闲存储空间,为运行在异构硬件上的应用提供更多的内存空间。

著录项

  • 公开/公告号CN105224468A

    专利类型发明专利

  • 公开/公告日2016-01-06

    原文格式PDF

  • 申请/专利号CN201410252855.3

  • 发明设计人 解壁伟;高云伟;詹剑锋;张立新;

    申请日2014-06-09

  • 分类号G06F12/02;

  • 代理机构深圳市深佳知识产权代理事务所(普通合伙);

  • 代理人王仲凯

  • 地址 518129 广东省深圳市龙岗区坂田华为总部办公楼

  • 入库时间 2023-12-18 13:18:56

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-02-05

    授权

    授权

  • 2016-02-03

    实质审查的生效 IPC(主分类):G06F12/02 申请日:20140609

    实质审查的生效

  • 2016-01-06

    公开

    公开

说明书

技术领域

本发明涉及数据存储领域,具体涉及一种内存共享方法、异构硬件、主机 及异构系统。

背景技术

现有的单节点异构系统包括主机和异构硬件,主机与硬件通过总线PCI-E 互联。其中,异构硬件可以包括众核(ManyIntegratedCores,MIC)扩展卡、 通用图形处理器(Generate-purposeGraphicProcessingUnits,GPGPU)等,其 作为扩展卡为主机(Host)提供更强大的矢量处理、浮点运算或多线程并行等 能力。通常,在异构系统中,主机上的内存较大,而异构硬件上的内存较小。 由于目前异构硬件上的内存在存储数据之后,其剩余的空闲存储空间较小,可 能难以支持运行一些对内存要求较高的应用,甚至无法完整装载这些应用的数 据。因此,如何增大异构硬件的内存的空闲存储空间是目前亟待解决的问题。

发明内容

本发明的目的在于提供一种内存共享方法、异构硬件、主机及异构系统。 应用本发明方法,能够增大异构硬件的空闲存储空间。

本发明第一方面提供一种内存共享方法,所述方法应用于异构硬件,所述 异构硬件连接主机,所述方法包括:

所述异构硬件获取所述主机发送的所述主机的部分内存的内存地址;

当所述异构硬件的内存的空闲容量低于预定容量时,所述异构硬件根据所 述内存地址,将所述异构硬件的内存中使用频率低于预定使用频率的数据存储 到所述部分内存。

结合本发明第一方面,在第一方面的第一种可能实现方式中,所述方法还 包括:

所述异构硬件根据所述内存地址,生成所述部分内存的状态表;所述状态 表用于记录所述部分内存的内存页的状态;

当所述异构硬件的内存的空闲容量低于预定容量时,所述异构硬件根据所 述内存地址,将所述异构硬件的内存中使用频率低于预定使用频率的数据存储 到所述异构硬件的部分内存,包括:

当所述异构硬件的内存的空闲容量低于预定容量时,所述异构硬件在所述 状态表中查找所述部分内存中处于空闲状态的内存页;

所述异构硬件在查找到处于空闲状态的内存页之后,将使用频率低于预定 使用频率的数据存储到处于空闲状态的内存页中。

结合本发明第一方面的第一种可能实现方式,在第一方面的第二种可能实 现方式中,在所述异构硬件将使用频率低于预定使用频率的数据存储到处于空 闲状态的内存页中之后,所述方法还包括:

当所述异构硬件需要读取所述部分内存中的目标内存页的数据时,判断所 述目标内存页在所述状态表中是否处于被所述主机锁定的状态还是处于非锁 定状态;

若所述目标内存页处于非锁定状态,则所述异构硬件读取所述目标内存页 的数据;

若所述目标内存页处于被所述主机锁定的状态,则所述异构硬件向所述主 机请求对所述目标内存页进行解锁,使得所述主机终止对所述目标内存页的操 作,对所述目标内存页进行解锁,以及在对所述目标内存页进行解锁之后,向 所述异构硬件通知所述目标内存页已解锁;

所述异构硬件接收所述主机发送的所述目标内存页已解锁的通知,对所述 目标内存页进行锁定,并在对所述目标内存页锁定之后,读取所述目标内存页 中的数据。

结合本发明第一方面的第一种可能实现方式,在第一方面的第三种可能实 现方式中,在所述异构硬件根据所述内存地址,生成所述部分内存的状态表之 后,所述方法还包括:

所述异构硬件接收所述主机发送的查询所述部分内存中的目标内存页是 处于被所述异构硬件锁定的状态还是处于非锁定状态的请求;

所述异构硬件根据所述主机发送的请求,判断所述目标内存页是处于被所 述异构硬件锁定的状态还是处于非锁定状态;

若所述目标内存页处于非锁定状态,则所述异构硬件向所述主机通知所述 目标内存页处于非锁定状态,使得所述主机在接收到所述目标内存页处于非锁 定状态的通知之后,对所述目标内存页进行锁定,并在对所述目标内存页锁定 之后,对所述目标内存页进行操作;

若所述目标内存页处于被所述异构硬件锁定的状态,则所述异构硬件向所 述主机通知所述目标内存页被所述异构硬件锁定,以使得所述主机确定不能对 所述目标内存页进行操作。

结合本发明第一方面的第三种可能实现方式,在第一方面的第四种可能实 现方式中,在所述主机对所述目标内存页进行操作之后,所述方法还包括:

所述异构硬件接收所述主机在完成对所述目标内存页进行的操作之后解 除对所述目标内存页的锁定,并在解除对所述目标内存页的锁定之后发送的所 述目标内存页已解锁的通知;

所述异构硬件在接收到所述主机发送的所述目标内存页已解锁的通知之 后,将所述目标内存页在所述状态表中的状态修改为非锁定状态。

结合本发明第一方面或第一方面的第一至第四任意一种可能实现方式,在 第一方面的第五种可能实现方式中,在所述异构硬件将所述异构硬件的内存中 使用频率低于预定使用频率的数据存储到所述异构硬件的部分内存之后,所述 方法还包括:

所述异构硬件记录使用频率低于预定使用频率的数据在所述部分内存中 的存储时间;

当所述存储时间未达到阈值时,所述异构硬件禁止将所述使用频率低于预 定使用频率的数据从所述部分内存读取到所述异构硬件的内存中。

结合本发明第一方面的第二种可能实现方式,在第一方面的第六种可能实 现方式中,在所述异构硬件读取所述目标内存页的数据之后,所述方法还包括:

所述异构硬件记录读取的所述目标内存页的数据在所述异构硬件的内存 中的存储时间;

当所述存储时间未达到阈值时,所述异构硬件禁止将所述目标内存页的数 据从所述异构硬件的内存存储到所述部分内存。

本发明第二方面提供一种异构硬件,所述异构硬件连接主机,所述异构硬 件包括:

获取单元,用于获取所述主机发送的所述主机的部分内存的内存地址;

存储单元,用于当所述异构硬件的内存的空闲容量低于预定容量时,根据 所述内存地址,将所述异构硬件的内存中使用频率低于预定使用频率的数据存 储到所述部分内存。

结合本发明第二方面,在第二方面的第一种可能实现方式中,所述异构硬 件还包括:生成单元和查询单元,

所述生成单元用于根据所述获取单元获取的所述内存地址,生成所述部分 内存的状态表;所述状态表用于记录所述部分内存的内存页的状态;

所述查询单元用于当所述异构硬件的内存的空闲容量低于预定容量时,在 所述状态表中查找所述部分内存中处于空闲状态的内存页;

所述存储单元还用于在所述查询单元查找到处于空闲状态的内存页之后, 将使用频率低于预定使用频率的数据存储到处于空闲状态的内存页中。

结合本发明第二方面的第一种可能实现方式,在第二方面的第二种可能实 现方式中,所述查询单元还用于在所述存储单元将使用频率低于预定使用频率 的数据存储到处于空闲状态的内存页中之后,而且当所述异构硬件需要读取所 述部分内存中的目标内存页的数据时,判断所述目标内存页在所述状态表中是 否处于被所述主机锁定的状态还是处于非锁定状态;

所述异构硬件还包括读取单元、请求单元和锁定单元,

所述读取单元用于若所述查询单元判断所述目标内存页处于非锁定状态, 则读取所述目标内存页的数据;

所述请求单元用于若所述查询单元判断所述目标内存页处于被所述主机 锁定的状态,则向所述主机请求对所述目标内存页进行解锁,使得所述主机终 止对所述目标内存页的操作,对所述目标内存页进行解锁,以及在对所述目标 内存页进行解锁之后,向所述异构硬件通知所述目标内存页已解锁;

所述获取单元还用于接收所述主机发送的所述目标内存页已解锁的通知;

所述锁定单元用于在所述获取单元接收到所述主机发送的所述目标内存 页已解锁的通知,对所述目标内存页进行锁定;

所述读取单元还用于在所述锁定单元对所述目标内存页锁定之后,读取所 述目标内存页中的数据。

结合本发明第二方面的第一种可能实现方式,在第二方面的第三种可能实 现方式中,所述获取单元还用于在所述生成单元根据所述内存地址,生成所述 部分内存的状态表之后,接收所述主机发送的查询所述部分内存中的目标内存 页是处于被所述异构硬件锁定的状态还是处于非锁定状态的请求;

所述查询单元用于根据所述获取单元获取到的所述主机发送的请求,判断 所述目标内存页是处于被所述异构硬件锁定的状态还是处于非锁定状态;

所述异构硬件还包括:发送单元,所述发送单元用于若所述查询单元判断 所述目标内存页处于非锁定状态,则向所述主机通知所述目标内存页处于非锁 定状态,使得所述主机在接收到所述目标内存页处于非锁定状态的通知之后, 对所述目标内存页进行锁定,并在对所述目标内存页锁定之后,对所述目标内 存页进行操作;还用于若所述查询单元判断所述目标内存页处于被所述异构硬 件锁定的状态,则向所述主机通知所述目标内存页被所述异构硬件锁定,以使 得所述主机确定不能对所述目标内存页进行操作。

结合本发明第二方面的第三种可能实现方式,在第二方面的第四种可能实 现方式中,所述获取单元还用于在所述主机对所述目标内存页进行操作之后, 接收所述主机在完成对所述目标内存页进行的操作之后解除对所述目标内存 页的锁定,并在解除对所述目标内存页的锁定之后发送的所述目标内存页已解 锁的通知;

所述异构硬件还包括状态单元,所述状态单元用于在所述获取单元接收到 所述主机发送的所述目标内存页已解锁的通知之后,将所述目标内存页在所述 状态表中的状态修改为非锁定状态。

结合本发明第二方面或第一方面的第一至第四任意一种可能实现方式,在 第二方面的第五种可能实现方式中,所述异构硬件还包括时间单元和禁止单 元,

所述时间单元用于在所述存储单元将所述异构硬件的内存中使用频率低 于预定使用频率的数据存储到所述异构硬件的部分内存之后,记录使用频率低 于预定使用频率的数据在所述部分内存中的存储时间;

所述禁止单元用于当所述时间单元记录的所述存储时间未达到阈值时,禁 止将所述使用频率低于预定使用频率的数据从所述部分内存读取到所述异构 硬件的内存中。

结合本发明第二方面的第二种可能实现方式,在第二方面的第六种可能实 现方式中,所述异构硬件还包括时间单元和禁止单元,

所述时间单元用于在所述读取单元读取所述目标内存页的数据之后,记录 读取的所述目标内存页的数据在所述异构硬件的内存中的存储时间;

所述禁止单元用于当所述时间单元记录的所述存储时间未达到阈值时,禁 止将所述目标内存页的数据从所述异构硬件的内存存储到所述部分内存。

本发明第三方面提供一种内存共享方法,所述方法应用于主机,所述主机 连接异构硬件,所述方法包括:

所述主机向所述异构硬件发送所述主机的部分内存的内存地址,使得当所 述异构硬件的内存的空闲容量低于预定容量时,所述异构硬件根据所述内存地 址,将所述异构硬件的内存中使用频率低于预定使用频率的数据存储到所述部 分内存。

结合本发明第三方面,在第三方面的第一种可能实现方式中,所述方法还 包括:当所述异构硬件需要读取所述部分内存中的目标内存页的数据,并在所 述异构硬件根据所述内存地址生成的所述部分内存的状态表中查询到所述目 标内存页处于被所述主机锁定的状态时,所述主机接收所述异构硬件发送的对 所述目标内存页进行解锁的请求;所述部分内存的状态表用于记录所述部分内 存的内存页的状态;

所述主机在接收到对所述目标内存页进行解锁的请求之后,终止对所述目 标内存页的操作,并对所述目标内存页进行解锁;

所述主机在对所述目标内存页进行解锁之后,向所述异构硬件通知所述目 标内存页已解锁,使得所述异构硬件在接收到所述主机发送的所述目标内存页 已解锁的通知之后,对所述目标内存页进行锁定,并在对所述目标内存页锁定 之后,读取所述目标内存页中的数据。

结合本发明第三方面,在第三方面的第二种可能实现方式中,所述方法还 包括:

所述主机向所述异构硬件发送查询所述部分内存中的目标内存页是处于 被所述异构硬件锁定的状态还是处于非锁定状态的请求,使得所述异构硬件根 据所述主机发送的请求,查询根据所述内存地址生成的所述部分内存的状态 表,判断所述目标内存页是处于被所述异构硬件锁定的状态还是处于非锁定状 态;若所述目标内存页处于非锁定状态,则所述异构硬件向所述主机通知所述 目标内存页处于非锁定状态;若所述目标内存页处于被所述异构硬件锁定的状 态,则所述异构硬件向所述主机通知所述目标内存页被所述异构硬件锁定;所 述部分内存的状态表用于记录所述部分内存的内存页的状态;

当所述主机接收到所述目标内存页处于非锁定状态的通知时,对所述目标 内存页进行锁定;所述主机在对所述目标内存页锁定之后,对所述目标内存页 进行操作;

当所述主机接收到所述异构硬件发送的所述目标内存页处于被所述异构 硬件锁定的通知时,所述主机确定不能对所述目标内存页进行操作。

结合本发明第三方面的第二种可能实现方式,在第三方面的第三种可能实 现方式中,所述方法还包括:

所述主机在完成对所述目标内存页进行操作之后,解除对所述目标内存页 的锁定;

所述主机在解除对所述目标内存页的锁定之后,向所述异构硬件发送所述 目标内存页已解锁的通知,使得所述异构硬件在接收到所述主机发送的所述目 标内存页已解锁的通知之后,将所述目标内存页在所述状态表中的状态修改为 非锁定状态。

本发明第四方面提供一种主机,所述主机连接异构硬件,所述主机包括:

发送单元,用于向所述异构硬件发送所述主机的部分内存的内存地址,使 得当所述异构硬件的内存的空闲容量低于预定容量时,所述异构硬件根据所述 内存地址,将所述异构硬件的内存中使用频率低于预定使用频率的数据存储到 所述部分内存。

结合本发明第三方面,在第三方面的第一种可能实现方式中,所述异构硬 件还包括:接收单元和解锁单元,

所述接收单元用于当所述异构硬件需要读取所述部分内存中的目标内存 页的数据,并在所述异构硬件根据所述内存地址生成的所述部分内存的状态表 中查询到所述目标内存页处于被所述主机锁定的状态时,接收所述异构硬件发 送的对所述目标内存页进行解锁的请求;所述部分内存的状态表用于记录所述 部分内存的内存页的状态;

所述解锁单元用于在接收到对所述目标内存页进行解锁的请求之后,终止 对所述目标内存页的操作,并对所述目标内存页进行解锁;

所述发送单元还用于在对所述目标内存页进行解锁之后,向所述异构硬件 通知所述目标内存页已解锁,使得所述异构硬件在接收到所述主机发送的所述 目标内存页已解锁的通知之后,对所述目标内存页进行锁定,并在对所述目标 内存页锁定之后,读取所述目标内存页中的数据。

结合本发明第三方面,在第三方面的第二种可能实现方式中,所述发送单 元还用于向所述异构硬件发送查询所述部分内存中的目标内存页是处于被所 述异构硬件锁定的状态还是处于非锁定状态的请求,使得所述异构硬件根据所 述主机发送的请求,查询根据所述内存地址生成的所述部分内存的状态表,判 断所述目标内存页是处于被所述异构硬件锁定的状态还是处于非锁定状态;若 所述目标内存页处于非锁定状态,则所述异构硬件向所述主机通知所述目标内 存页处于非锁定状态;若所述目标内存页处于被所述异构硬件锁定的状态,则 所述异构硬件向所述主机通知所述目标内存页被所述异构硬件锁定;所述部分 内存的状态表用于记录所述部分内存的内存页的状态;

所述接收单元还用于接收所述目标内存页处于非锁定状态的通知或接收 所述异构硬件发送的所述目标内存页处于被所述异构硬件锁定的通知;

所述异构硬件还包括:锁定单元和操作单元,

所述锁定单元用于当所述接收单元接收到所述目标内存页处于非锁定状 态的通知时,对所述目标内存页进行锁定;

所述操作单元用于在所述锁定单元对所述目标内存页进行锁定之后,对所 述目标内存页进行操作。

结合本发明第四方面的第二种可能实现方式,在第四方面的第三种可能实 现方式中,所述解锁单元还用于在所述操作单元完成对所述目标内存页进行操 作之后,解除对所述目标内存页的锁定;

所述发送单元还用于在解除对所述目标内存页的锁定之后,向所述异构硬 件发送所述目标内存页已解锁的通知,使得所述异构硬件在接收到所述主机发 送的所述目标内存页已解锁的通知之后,将所述目标内存页在所述状态表中的 状态修改为非锁定状态。

本发明第五方面提供一种异构系统,其包括:主机和异构硬件,所述主机 与所述异构硬件连接;

所述主机用于向所述异构硬件发送所述主机的部分内存的内存地址;

所述异构硬件用于接收所述主机发送的所述内存地址,以及当所述异构硬 件的内存的空闲容量低于预定容量时,根据所述内存地址,将所述异构硬件的 内存中使用频率低于预定使用频率的数据存储到所述部分内存。

结合本发明第五方面,在第五方面的第一种可能实现形式中,所述异构硬 件还用于根据所述内存地址,生成所述部分内存的状态表;所述状态表用于记 录所述部分内存的内存页的状态;以及用于当所述异构硬件的内存的空闲容量 低于预定容量时,在所述状态表中查找所述部分内存中处于空闲状态的内存 页;在查找到处于空闲状态的内存页之后,将使用频率低于预定使用频率的数 据存储到处于空闲状态的内存页中。

结合本发明第五方面的第一种可能实现形式,在第五方面的第二种可能实 现形式中,所述异构硬件还用于在将使用频率低于预定使用频率的数据存储到 处于空闲状态的内存页中之后,而且当所述异构硬件需要读取所述部分内存中 的目标内存页的数据时,判断所述目标内存页在所述状态表中是否处于被所述 主机锁定的状态还是处于非锁定状态;

若所述目标内存页处于非锁定状态,则读取所述目标内存页的数据;

若所述目标内存页处于被所述主机锁定的状态,则向所述主机请求对所述 目标内存页进行解锁;

所述主机还用于接收所述异构硬件发送的对所述目标内存页进行解锁的 请求,终止对所述目标内存页的操作,对所述目标内存页进行解锁,以及在对 所述目标内存页进行解锁之后,向所述异构硬件通知所述目标内存页已解锁;

所述异构硬件还用于接收所述主机发送的所述目标内存页已解锁的通知, 对所述目标内存页进行锁定,并在对所述目标内存页锁定之后,读取所述目标 内存页中的数据。

结合本发明第五方面的第一种可能实现形式,在第五方面的第三种可能实 现形式中,所述主机还用于在所述异构硬件根据所述内存地址,生成所述部分 内存的状态表之后,向所述异构硬件发送查询所述部分内存中的目标内存页是 处于被所述异构硬件锁定的状态还是处于非锁定状态的请求;

所述异构硬件还用于接收所述主机发送的查询所述部分内存中的目标内 存页是处于被所述异构硬件锁定的状态还是处于非锁定状态的请求;以及用于 根据所述主机发送的请求,判断所述目标内存页是处于被所述异构硬件锁定的 状态还是处于非锁定状态;若所述目标内存页处于非锁定状态,则向所述主机 通知所述目标内存页处于非锁定状态;若所述目标内存页处于被所述异构硬件 锁定的状态,则向所述主机通知所述目标内存页被所述异构硬件锁定;

所述主机还用于在接收到所述目标内存页处于非锁定状态的通知之后,对 所述目标内存页进行锁定,并在对所述目标内存页锁定之后,对所述目标内存 页进行操作;以及用于在接收到所述目标内存页被所述异构硬件锁定的通知之 后,确定不能对所述目标内存页进行操作。

结合本发明第五方面的第三种可能实现形式,在第五方面的第四种可能实 现形式中,所述主机还用于在对所述目标内存页进行操作之后,解除对所述目 标内存页的锁定,并在解除对所述目标内存页的锁定之后,向所述异构硬件发 送所述目标内存页已解锁的通知;

所述异构硬件还用于接收所述主机发送的所述目标内存页已解锁的通知, 将所述目标内存页在所述状态表中的状态修改为非锁定状态。

结合本发明第五方面或第五方面的第一至第四种可能实现形式,在第五方 面的第五种可能实现形式中,所述异构硬件还用于在将所述异构硬件的内存中 使用频率低于预定使用频率的数据存储到所述异构硬件的部分内存之后,记录 使用频率低于预定使用频率的数据在所述部分内存中的存储时间;当所述存储 时间未达到阈值时,所述异构硬件禁止将所述使用频率低于预定使用频率的数 据从所述部分内存读取到所述异构硬件的内存中。

结合本发明第五方面的第二种可能实现形式,在第五方面的第六种可能实 现形式中,所述异构硬件还用于在读取所述目标内存页的数据之后,记录读取 的所述目标内存页的数据在所述异构硬件的内存中的存储时间;当所述存储时 间未达到阈值时,禁止将所述目标内存页的数据从所述异构硬件的内存存储到 所述部分内存。

采用本发明提供的内存共享方法,能够将异构硬件的内存中使用频率低于 预定使用频率的数据存储到主机的部分内存,减少使用频率低于预定使用频率 的数据在异构硬件的内存中所占用的存储空间,从而增大异构硬件的空闲存储 空间,为运行在异构硬件上的应用提供更多的内存空间。

附图说明

图1是本发明提供的一种内存共享方法的流程示意图;

图2是本发明提供的另一种内存共享方法的流程示意图;

图3是本发明提供的异构硬件从主机的部分内存读取数据的步骤示意图;

图4是本发明提供的主机读取所述部分内存的内存页的步骤示意图;

图5是本发明提供的一种异构硬件的结构示意图;

图6是本发明提供的另一种异构硬件的结构示意图;

图7是本发明提供的一种内存共享方法的流程示意图;

图8是本发明提供的主机解锁的流程示意图;

图9是本发明提供的主机对所述部分内存中的目标内存页进行操作的流程 示意图;

图10是本发明提供的一种主机的结构示意图;

图11是本发明提供的一种主机的结构示意图;

图12是本发明提供的一种异构系统的结构示意图;

图13是本发明提供的一种单节点异构系统示意图;

图14是本发明提供的共享内存与MIC中的内存映射关系示意图;

图15是本发明提供的共享内存与MIC0中的内存映射关系示意图;

图16是本发明提供的一种异构硬件的结构示意图;

图17是本发明提供的一种主机的结构示意图。

具体实施方式

以下列举实施例对本发明进行介绍。

如图1所示,本发明实施例提供一种内存共享方法,所述内存共享方法应 用于异构硬件,所述异构硬件连接主机。所述主机和所述异构硬件上均设有内 存。所述异构硬件为所述主机提供矢量处理、浮点运算或多线程并行等能力。 所述内存共享方法可以包括:

101、异构硬件获取所述主机发送的所述主机的部分内存的内存地址。

102、当所述异构硬件的内存的空闲容量低于预定容量时,所述异构硬件 根据所述内存地址,将所述异构硬件的内存中使用频率低于预定使用频率的数 据存储到所述部分内存。

在本实施例中,所述主机的部分内存用于作为共享内存,为所述异构硬件 中的内存数据提供存储空间。所述异构硬件可以根据近期最少使用(Least RecentlyUsed,LRU)算法,从所述异构硬件的内存中选出使用频率低于预定 使用频率的数据。所选出的使用频率低于预定使用频率的数据可以称为不常用 数据。在将不常用的数据存储到主机的部分内存上后,异构硬件上被不常用数 据占据的内存空间则可以用于存储其他数据,即增大了异构硬件的内存的空闲 存储空间。当应用在异构硬件运行时,异构硬件能够为应用提供更多的内存空 间的支持,减少因内存容量不足而导致应用无法完成数据加载的现象。

为了更好的理解本发明,以下列举更详细的实施例进行说明。如图2所示, 所述内存共享方法可以包括:

201、所述异构硬件获取所述主机发送的所述主机的部分内存的内存地址。

202、所述异构硬件根据所述内存地址,生成所述部分内存的状态表;所 述状态表用于记录所述部分内存的内存页的状态。

203、当所述异构硬件的内存的空闲容量低于预定容量时,所述异构硬件 在所述状态表中查找所述部分内存中处于空闲状态的内存页。

204、所述异构硬件在查找到处于空闲状态的内存页之后,将使用频率低 于预定使用频率的数据存储到处于空闲状态的内存页中。

在本实施例中,所述状态表中可以设置有所述部分内存的内存页的状态 位,所述状态位可以用于标识所述内存页当前所处的状态。所述状态位可以包 括使用状态位和锁定状态位,使用状态位可以标识当前内存页是否处于使用状 态,所述锁定状态位可以标识当前内存页是否处于锁定状态,所述状态表还记 录了内存页的地址。所述状态表由所述异构硬件进行维护。当所述异构硬件将 使用频率低于预定使用频率的数据存储到处于空闲状态的内存页中,异构硬件 将该内存页在状态表中的使用状态位设为使用状态。

在所述异构硬件将使用频率低于预定使用频率的数据存储到处于空闲状 态的内存页中之后,所述异构硬件有时仍然需要使用这些存储到主机部分内存 上的数据。如图3所示,图3描述了当所述异构硬件需要读取所述部分内存中的 目标内存页的数据时,异构硬件从主机的部分内存读取数据的步骤,具体包括:

301、判断所述目标内存页在所述状态表中是否处于被所述主机锁定的状 态还是处于非锁定状态。

若所述目标内存页处于非锁定状态,则执行步骤302:所述异构硬件读取 所述目标内存页的数据。

303、若所述目标内存页处于被所述主机锁定的状态,则所述异构硬件向 所述主机请求对所述目标内存页进行解锁。

所述目标内存页处于被所述主机锁定的状态表示所述目标内存页当前正 在被所述主机进行读或写等操作。所述主机在接收到所述异构硬件发送的对所 述目标内存页进行解锁的请求之后,终止对所述目标内存页的操作,对所述目 标内存页进行解锁,以及在对所述目标内存页进行解锁之后,向所述异构硬件 通知所述目标内存页已解锁。

304、所述异构硬件接收所述主机发送的所述目标内存页已解锁的通知, 对所述目标内存页进行锁定。

在所述异构硬件对所述目标内存页进行锁定之后,所述异构硬件将所述目 标内存页在状态表中的锁定状态位设为锁定状态。此时,所述主机将不能够对 所述目标内存页进行操作,从而避免所述主机和所述异构硬件在使用所述部分 内存的内存页时造成冲突。

在对所述目标内存页进行锁定之后,则执行步骤302:读取所述目标内存 页中的数据。

如图4所示,图4描述了所述主机读取所述部分内存的内存页的步骤,具体 包括:

401、所述异构硬件接收所述主机发送的查询所述部分内存中的目标内存 页是处于被所述异构硬件锁定的状态还是处于非锁定状态的请求。

402、所述异构硬件根据所述主机发送的请求,判断所述目标内存页是处 于被所述异构硬件锁定的状态还是处于非锁定状态。

若所述目标内存页处于非锁定状态,则执行步骤403:所述异构硬件向所 述主机通知所述目标内存页处于非锁定状态,使得所述主机在接收到所述目标 内存页处于非锁定状态的通知之后,对所述目标内存页进行锁定。

404、在对所述目标内存页锁定之后,对所述目标内存页进行操作。

在对所述目标内存页锁定之后,所述主机通知所述异构硬件所述目标内存 页被所述主机锁定,所述异构硬件接收到所述目标内存页被所述主机锁定的通 知之后,将所述目标内存页在所述状态表中的状态设为被所述主机锁定的状 态。

若所述目标内存页处于被所述异构硬件锁定的状态,则执行步骤405:所 述异构硬件向所述主机通知所述目标内存页被所述异构硬件锁定,以使得所述 主机确定不能对所述目标内存页进行操作。

在所述主机对所述目标内存页进行操作之后,所述方法还包括:

所述异构硬件接收所述主机在完成对所述目标内存页进行的操作之后解 除对所述目标内存页的锁定,并在解除对所述目标内存页的锁定之后发送的所 述目标内存页已解锁的通知;

所述异构硬件在接收到所述主机发送的所述目标内存页已解锁的通知之 后,将所述目标内存页在所述状态表中的状态修改为非锁定状态。

由于主机和异构硬件可能对用于共享的主机上的部分内存中的某一内存 页进行频繁读写,使得该内存页的数据频繁往返于主机的内存和异构硬件的内 存,容易对主机和异构硬件之间的信息传输造成不良影响。为了避免此不良影 响,所述内存共享方法可以采取以下技术措施。

具体的,在所述异构硬件将所述异构硬件的内存中使用频率低于预定使用 频率的数据存储到所述异构硬件的部分内存之后,所述内存共享方法还可以包 括:

所述异构硬件记录使用频率低于预定使用频率的数据在所述部分内存中 的存储时间;

当所述存储时间未达到阈值时,所述异构硬件禁止将所述使用频率低于预 定使用频率的数据从所述部分内存读取到所述异构硬件的内存中。

在所述异构硬件读取所述目标内存页的数据之后,所述内存共享方法还包 括:

所述异构硬件记录读取的所述目标内存页的数据在所述异构硬件的内存 中的存储时间;

当所述存储时间未达到阈值时,所述异构硬件禁止将所述目标内存页的数 据从所述异构硬件的内存存储到所述部分内存。该阈值可以不是定值,可以根 据所述目标内存页被访问的频率进行调整。

上述实施例的内存共享方法可以应用于异构硬件。以下将对所述异构硬件 进行介绍。

如图5所示,本发明实施例提供一种异构硬件501,所述异构硬件501连接 主机,所述异构硬件501包括:

获取单元502,用于获取所述主机发送的所述主机的部分内存的内存地址;

存储单元503,用于当所述异构硬件501的内存的空闲容量低于预定容量 时,根据所述内存地址,将所述异构硬件501的内存中使用频率低于预定使用 频率的数据存储到所述部分内存。

可选的,如图6所示,所述异构硬件还包括:生成单元504和查询单元505,

所述生成单元504用于根据所述获取单元获取的所述内存地址,生成所述 部分内存的状态表;所述状态表用于记录所述部分内存的内存页的状态;

所述查询单元505用于当所述异构硬件的内存的空闲容量低于预定容量 时,在所述状态表中查找所述部分内存中处于空闲状态的内存页;

所述存储单元还用于在所述查询单元505查找到处于空闲状态的内存页之 后,将使用频率低于预定使用频率的数据存储到处于空闲状态的内存页中。

可选的,所述查询单元505还用于在所述存储单元将使用频率低于预定使 用频率的数据存储到处于空闲状态的内存页中之后,而且当所述异构硬件需要 读取所述部分内存中的目标内存页的数据时,判断所述目标内存页在所述状态 表中是否处于被所述主机锁定的状态还是处于非锁定状态。

所述异构硬件还包括读取单元506、请求单元507和锁定单元508。

所述读取单元506用于若所述查询单元505判断所述目标内存页处于非锁 定状态,则读取所述目标内存页的数据;

所述请求单元507用于若所述查询单元505判断所述目标内存页处于被所 述主机锁定的状态,则向所述主机请求对所述目标内存页进行解锁,使得所述 主机终止对所述目标内存页的操作,对所述目标内存页进行解锁,以及在对所 述目标内存页进行解锁之后,向所述异构硬件通知所述目标内存页已解锁;

所述获取单元还用于接收所述主机发送的所述目标内存页已解锁的通知;

所述锁定单元508用于在所述获取单元接收到所述主机发送的所述目标内 存页已解锁的通知,对所述目标内存页进行锁定;

所述读取单元506还用于在所述锁定单元508对所述目标内存页锁定之后, 读取所述目标内存页中的数据。

可选的,所述获取单元还用于在所述生成单元504根据所述内存地址,生 成所述部分内存的状态表之后,接收所述主机发送的查询所述部分内存中的目 标内存页是处于被所述异构硬件锁定的状态还是处于非锁定状态的请求;

所述查询单元505用于根据所述获取单元获取到的所述主机发送的请求, 判断所述目标内存页是处于被所述异构硬件锁定的状态还是处于非锁定状态;

所述异构硬件还包括:发送单元509,所述发送单元509用于若所述查询单 元505判断所述目标内存页处于非锁定状态,则向所述主机通知所述目标内存 页处于非锁定状态,使得所述主机在接收到所述目标内存页处于非锁定状态的 通知之后,对所述目标内存页进行锁定,并在对所述目标内存页锁定之后,对 所述目标内存页进行操作;还用于若所述查询单元505判断所述目标内存页处 于被所述异构硬件锁定的状态,则向所述主机通知所述目标内存页被所述异构 硬件锁定,以使得所述主机确定不能对所述目标内存页进行操作。

可选的,所述获取单元还用于在所述主机对所述目标内存页进行操作之 后,接收所述主机在完成对所述目标内存页进行的操作之后解除对所述目标内 存页的锁定,并在解除对所述目标内存页的锁定之后发送的所述目标内存页已 解锁的通知;

所述异构硬件还包括状态单元512,所述状态单元512用于在所述获取单元 接收到所述主机发送的所述目标内存页已解锁的通知之后,将所述目标内存页 在所述状态表中的状态修改为非锁定状态。

可选的,所述异构硬件还包括时间单元510和禁止单元511。

所述时间单元510用于在所述存储单元将所述异构硬件的内存中使用频率 低于预定使用频率的数据存储到所述异构硬件的部分内存之后,记录使用频率 低于预定使用频率的数据在所述部分内存中的存储时间;

所述禁止单元511用于当所述时间单元510记录的所述存储时间未达到阈 值时,禁止将所述使用频率低于预定使用频率的数据从所述部分内存读取到所 述异构硬件的内存中。

可选的,所述时间单元510还用于在所述读取单元506读取所述目标内存页 的数据之后,记录读取的所述目标内存页的数据在所述异构硬件的内存中的存 储时间;

所述禁止单元511还用于当所述时间单元510记录的所述存储时间未达到 阈值时,禁止将所述目标内存页的数据从所述异构硬件的内存存储到所述部分 内存。

如图7所示,本发明实施例还提供一种内存共享方法,其可以应用于主机, 所述主机连接异构硬件,具体包括:

601、所述主机向所述异构硬件发送所述主机的部分内存的内存地址,使 得当所述异构硬件的内存的空闲容量低于预定容量时,所述异构硬件根据所述 内存地址,将所述异构硬件的内存中使用频率低于预定使用频率的数据存储到 所述部分内存。

可选的,如图8所示,图8描述的是当所述异构硬件需要读取所述部分内存 中的目标内存页的数据,并在所述异构硬件根据所述内存地址生成的所述部分 内存的状态表中查询到所述目标内存页处于被所述主机锁定的状态时,主机需 要执行的操作步骤,具体包括:

701、所述主机接收所述异构硬件发送的对所述目标内存页进行解锁的请 求;所述部分内存的状态表用于记录所述部分内存的内存页的状态;

702、所述主机在接收到对所述目标内存页进行解锁的请求之后,终止对 所述目标内存页的操作,并对所述目标内存页进行解锁;

703、所述主机在对所述目标内存页进行解锁之后,向所述异构硬件通知 所述目标内存页已解锁,使得所述异构硬件在接收到所述主机发送的所述目标 内存页已解锁的通知之后,对所述目标内存页进行锁定,并在对所述目标内存 页锁定之后,读取所述目标内存页中的数据。

如图9所示,图9描述的是当主机需要对所述部分内存中的目标内存页进行 操作时,主机需要执行的操作步骤,具体可以包括:

801、所述主机向所述异构硬件发送查询所述部分内存中的目标内存页是 处于被所述异构硬件锁定的状态还是处于非锁定状态的请求。

所述异构硬件根据所述主机发送的请求,查询根据所述内存地址生成的所 述部分内存的状态表,判断所述目标内存页是处于被所述异构硬件锁定的状态 还是处于非锁定状态;若所述目标内存页处于非锁定状态,则所述异构硬件向 所述主机通知所述目标内存页处于非锁定状态;若所述目标内存页处于被所述 异构硬件锁定的状态,则所述异构硬件向所述主机通知所述目标内存页被所述 异构硬件锁定;所述部分内存的状态表用于记录所述部分内存的内存页的状 态;

802、当所述主机接收到所述目标内存页处于非锁定状态的通知时,对所 述目标内存页进行锁定;

803、所述主机在对所述目标内存页锁定之后,对所述目标内存页进行操 作;

804、当所述主机接收到所述异构硬件发送的所述目标内存页处于被所述 异构硬件锁定的通知时,所述主机确定不能对所述目标内存页进行操作。

可选的,所述方法还包括:

所述主机在完成对所述目标内存页进行操作之后,解除对所述目标内存页 的锁定;

所述主机在解除对所述目标内存页的锁定之后,向所述异构硬件发送所述 目标内存页已解锁的通知,使得所述异构硬件在接收到所述主机发送的所述目 标内存页已解锁的通知之后,将所述目标内存页在所述状态表中的状态修改为 非锁定状态。

上述内存共享方法可以应用于主机,以下对所述主机进行介绍。

如图10所示,本发明实施例还提供一种主机901,所述主机901连接异构硬 件,所述主机901包括:

发送单元902,用于向所述异构硬件发送所述主机901的部分内存的内存地 址,使得当所述异构硬件的内存的空闲容量低于预定容量时,所述异构硬件根 据所述内存地址,将所述异构硬件的内存中使用频率低于预定使用频率的数据 存储到所述部分内存。

如图11所示,可选的,所述异构硬件还包括:接收单元903和解锁单元904,

所述接收单元903用于当所述异构硬件需要读取所述部分内存中的目标内 存页的数据,并在所述异构硬件根据所述内存地址生成的所述部分内存的状态 表中查询到所述目标内存页处于被所述主机901锁定的状态时,接收所述异构 硬件发送的对所述目标内存页进行解锁的请求;所述部分内存的状态表用于记 录所述部分内存的内存页的状态;

所述解锁单元904用于在接收到对所述目标内存页进行解锁的请求之后, 终止对所述目标内存页的操作,并对所述目标内存页进行解锁;

所述发送单元902还用于在对所述目标内存页进行解锁之后,向所述异构 硬件通知所述目标内存页已解锁,使得所述异构硬件在接收到所述主机901发 送的所述目标内存页已解锁的通知之后,对所述目标内存页进行锁定,并在对 所述目标内存页锁定之后,读取所述目标内存页中的数据。

可选的,所述发送单元902还用于向所述异构硬件发送查询所述部分内存 中的目标内存页是处于被所述异构硬件锁定的状态还是处于非锁定状态的请 求,使得所述异构硬件根据所述主机901发送的请求,查询根据所述内存地址 生成的所述部分内存的状态表,判断所述目标内存页是处于被所述异构硬件锁 定的状态还是处于非锁定状态;若所述目标内存页处于非锁定状态,则所述异 构硬件向所述主机901通知所述目标内存页处于非锁定状态;若所述目标内存 页处于被所述异构硬件锁定的状态,则所述异构硬件向所述主机901通知所述 目标内存页被所述异构硬件锁定;所述部分内存的状态表用于记录所述部分内 存的内存页的状态;

所述接收单元903还用于接收所述目标内存页处于非锁定状态的通知或接 收所述异构硬件发送的所述目标内存页处于被所述异构硬件锁定的通知;

所述异构硬件还包括:锁定单元905和操作单元906。

所述锁定单元905用于当所述接收单元903接收到所述目标内存页处于非 锁定状态的通知时,对所述目标内存页进行锁定;

所述操作单元906用于在所述锁定单元905对所述目标内存页进行锁定之 后,对所述目标内存页进行操作。

可选的,所述解锁单元904还用于在所述操作单元906完成对所述目标内存 页进行操作之后,解除对所述目标内存页的锁定;

所述发送单元902还用于在解除对所述目标内存页的锁定之后,向所述异 构硬件发送所述目标内存页已解锁的通知,使得所述异构硬件在接收到所述主 机901发送的所述目标内存页已解锁的通知之后,将所述目标内存页在所述状 态表中的状态修改为非锁定状态。

本发明实施例还将介绍可以应用上述内存共享方法的异构系统1001。

如图12所示,本发明实施例还提供一种异构系统1001,其包括:主机1002 和异构硬件1003,所述主机1002与所述异构硬件1003连接;

所述主机1002用于向所述异构硬件1003发送所述主机1002的部分内存的 内存地址;

所述异构硬件1003用于接收所述主机1002发送的所述内存地址,以及当所 述异构硬件1003的内存的空闲容量低于预定容量时,根据所述内存地址,将所 述异构硬件1003的内存中使用频率低于预定使用频率的数据存储到所述部分 内存。

可选的,所述异构硬件1003还用于根据所述内存地址,生成所述部分内存 的状态表;所述状态表用于记录所述部分内存的内存页的状态;以及用于当所 述异构硬件1003的内存的空闲容量低于预定容量时,在所述状态表中查找所述 部分内存中处于空闲状态的内存页;在查找到处于空闲状态的内存页之后,将 使用频率低于预定使用频率的数据存储到处于空闲状态的内存页中。

可选的,所述异构硬件1003还用于在将使用频率低于预定使用频率的数据 存储到处于空闲状态的内存页中之后,而且当所述异构硬件1003需要读取所述 部分内存中的目标内存页的数据时,判断所述目标内存页在所述状态表中是否 处于被所述主机1002锁定的状态还是处于非锁定状态;

若所述目标内存页处于非锁定状态,则读取所述目标内存页的数据;

若所述目标内存页处于被所述主机1002锁定的状态,则向所述主机1002 请求对所述目标内存页进行解锁;

所述主机1002还用于接收所述异构硬件1003发送的对所述目标内存页进 行解锁的请求,终止对所述目标内存页的操作,对所述目标内存页进行解锁, 以及在对所述目标内存页进行解锁之后,向所述异构硬件1003通知所述目标内 存页已解锁;

所述异构硬件1003还用于接收所述主机1002发送的所述目标内存页已解 锁的通知,对所述目标内存页进行锁定,并在对所述目标内存页锁定之后,读 取所述目标内存页中的数据。

可选的,所述主机1002还用于在所述异构硬件1003根据所述内存地址,生 成所述部分内存的状态表之后,向所述异构硬件1003发送查询所述部分内存中 的目标内存页是处于被所述异构硬件1003锁定的状态还是处于非锁定状态的 请求;

所述异构硬件1003还用于接收所述主机1002发送的查询所述部分内存中 的目标内存页是处于被所述异构硬件1003锁定的状态还是处于非锁定状态的 请求;以及用于根据所述主机1002发送的请求,判断所述目标内存页是处于被 所述异构硬件1003锁定的状态还是处于非锁定状态;若所述目标内存页处于非 锁定状态,则向所述主机1002通知所述目标内存页处于非锁定状态;若所述目 标内存页处于被所述异构硬件1003锁定的状态,则向所述主机1002通知所述目 标内存页被所述异构硬件1003锁定;

所述主机1002还用于在接收到所述目标内存页处于非锁定状态的通知之 后,对所述目标内存页进行锁定,并在对所述目标内存页锁定之后,对所述目 标内存页进行操作;以及用于在接收到所述目标内存页被所述异构硬件1003 锁定的通知之后,确定不能对所述目标内存页进行操作。

可选的,所述主机1002还用于在对所述目标内存页进行操作之后,解除对 所述目标内存页的锁定,并在解除对所述目标内存页的锁定之后,向所述异构 硬件1003发送所述目标内存页已解锁的通知;

所述异构硬件1003还用于接收所述主机1002发送的所述目标内存页已解 锁的通知,将所述目标内存页在所述状态表中的状态修改为非锁定状态。

可选的,所述异构硬件1003还用于在将所述异构硬件1003的内存中使用频 率低于预定使用频率的数据存储到所述异构硬件1003的部分内存之后,记录使 用频率低于预定使用频率的数据在所述部分内存中的存储时间;当所述存储时 间未达到阈值时,所述异构硬件1003禁止将所述使用频率低于预定使用频率的 数据从所述部分内存读取到所述异构硬件1003的内存中。

可选的,所述异构硬件1003还用于在读取所述目标内存页的数据之后,记 录读取的所述目标内存页的数据在所述异构硬件1003的内存中的存储时间;当 所述存储时间未达到阈值时,禁止将所述目标内存页的数据从所述异构硬件 1003的内存存储到所述部分内存。

以下结合具体应用场景,对本发明实施例提供的异构系统进行进一步说 明。

如图13所示,一种单节点异构系统包括:异构硬件和X86主机,其中异构 硬件包括MIC0和MIC1,MIC0和MIC1分别通过接口PCI-E与主机互联。MIC具 有244个硬件线程,具备很强的多线程并行能力。如图14所示,主机上为每个 MIC卡都预留出16G的存储空间,该存储空间用于作为主机与MIC的共享内存 空间。MIC可选取不常用的内存页的数据存储到共享内存上,如图15所示, MIC上始终维护一个共享内存的状态表,状态表中可以设置有地址状态位、使 用状态位和锁定状态位。其中,使用状态位可以设为使用Used状态和未被使用 Unused状态,锁定状态位可以设为锁定Lock状态和Unlock非锁定状态。图15 中的Addr表示主机上某内存页的地址;Used表示该内存页已被使用;Lock则 表示当前内存页被锁定;Unused表示该内存页未被使用;Unlock表示当前内存 页未被锁定。

如图16所示,图16中的主机上的16G共享内存中的阴影部分表示该内存页 正在被使用。

如图15所示,本发明实施例还提供一种异构硬件1101,其包括:处理器 1102、与所述处理器1102连接的内存1104,以及分别与所述处理器1102和内存 1104连接的传输接口1103。在图15中,处理器1102、内存1104和传输接口1103 可以通过总线1105进行连接。所述异构硬件的传输接口1103用于连接主机。所 述处理器1102通过所述传输接口1103获取所述主机发送的所述主机的部分内 存的内存地址;当所述异构硬件的内存的空闲容量低于预定容量时,所述异构 硬件根据所述内存地址,将所述异构硬件的内存中使用频率低于预定使用频率 的数据存储到所述部分内存。

可选的,所述处理器1102还用于根据获取的所述内存地址,生成所述部分 内存的状态表;所述状态表用于记录所述部分内存的内存页的状态;当所述异 构硬件的内存的空闲容量低于预定容量时,在所述状态表中查找所述部分内存 中处于空闲状态的内存页;在查找到处于空闲状态的内存页之后,将使用频率 低于预定使用频率的数据存储到处于空闲状态的内存页中。

所述处理器1102还用于判断所述目标内存页处于非锁定状态,则读取所述 目标内存页的数据;若判断所述目标内存页处于被所述主机锁定的状态,则通 过传输接口1103向所述主机请求对所述目标内存页进行解锁,使得所述主机终 止对所述目标内存页的操作,对所述目标内存页进行解锁,以及在对所述目标 内存页进行解锁之后,向所述异构硬件通知所述目标内存页已解锁;

所述处理器1102还用于通过所述传输接口1103接收所述主机发送的所述 目标内存页已解锁的通知;在接收到所述主机发送的所述目标内存页已解锁的 通知,对所述目标内存页进行锁定;在对所述目标内存页锁定之后,通过所述 传输接口1103读取所述目标内存页中的数据。

可选的,所述处理器1102还用于在根据所述内存地址,生成所述部分内存 的状态表之后,接收所述主机发送的查询所述部分内存中的目标内存页是处于 被所述异构硬件锁定的状态还是处于非锁定状态的请求;还用于根据获取到的 所述主机发送的请求,判断所述目标内存页是处于被所述异构硬件锁定的状态 还是处于非锁定状态;

所述处理器1102用于若判断所述目标内存页处于非锁定状态,则向所述主 机通知所述目标内存页处于非锁定状态,使得所述主机在接收到所述目标内存 页处于非锁定状态的通知之后,对所述目标内存页进行锁定,并在对所述目标 内存页锁定之后,对所述目标内存页进行操作;还用于若判断所述目标内存页 处于被所述异构硬件锁定的状态,则向所述主机通知所述目标内存页被所述异 构硬件锁定,以使得所述主机确定不能对所述目标内存页进行操作。

可选的,所述处理器1102还用于在所述主机对所述目标内存页进行操作之 后,通过所述传输接口1103接收所述主机在完成对所述目标内存页进行的操作 之后解除对所述目标内存页的锁定,并在解除对所述目标内存页的锁定之后发 送的所述目标内存页已解锁的通知;

所述处理器1102还用于在接收到所述主机发送的所述目标内存页已解锁 的通知之后,将所述目标内存页在所述状态表中的状态修改为非锁定状态。

可选的,所述处理器1102还用于在将所述异构硬件的内存中使用频率低于 预定使用频率的数据存储到所述异构硬件的部分内存之后,记录使用频率低于 预定使用频率的数据在所述部分内存中的存储时间;

所述处理器1102还用于当记录的所述存储时间未达到阈值时,所述异构硬 件禁止将所述使用频率低于预定使用频率的数据从所述部分内存读取到所述 异构硬件的内存中。

可选的,所述处理器1102还用于在读取所述目标内存页的数据之后,记录 读取的所述目标内存页的数据在所述异构硬件的内存中的存储时间;

所述处理器1102还用于当记录的所述存储时间未达到阈值时,禁止将所述 目标内存页的数据从所述异构硬件的内存存储到所述部分内存。

如图17所示,本发明实施例还提供一种主机1201,其包括:处理器1202、 与所述处理器1202连接的主机内存1204,以及分别与处理器1202和主机内存 1204连接的传输接口1203。在图17中,处理器1202、主机内存1204和传输接口 1203可以通过总线1205进行连接。主机内存1204中的部分内存1206作为共享内 存,除部分内存之外主机内存1204中的其他内存为剩余内存1207。所述主机 1201通过传输接口1203连接异构硬件。

所述处理器1202用于通过所述传输接口1203向所述异构硬件发送所述主 机的部分内存1206的内存地址,使得当所述异构硬件的内存的空闲容量低于预 定容量时,所述异构硬件根据所述内存地址,将所述异构硬件的内存中使用频 率低于预定使用频率的数据存储到所述部分内存1206。

所述处理器1202用于当所述异构硬件需要读取所述部分内存1206中的目 标内存页的数据,并在所述异构硬件根据所述内存地址生成的所述部分内存 1206的状态表中查询到所述目标内存页处于被所述主机锁定的状态时,通过传 输接口1203接收所述异构硬件发送的对所述目标内存页进行解锁的请求;所述 部分内存1206的状态表用于记录所述部分内存1206的内存页的状态;

所述处理器1202用于在接收到对所述目标内存页进行解锁的请求之后,终 止对所述目标内存页的操作,并对所述目标内存页进行解锁;

所述处理器1202用于在对所述目标内存页进行解锁之后,向所述异构硬件 通知所述目标内存页已解锁,使得所述异构硬件在接收到所述主机发送的所述 目标内存页已解锁的通知之后,对所述目标内存页进行锁定,并在对所述目标 内存页锁定之后,读取所述目标内存页中的数据。

所述处理器1202用于向所述异构硬件发送查询所述部分内存1206中的目 标内存页是处于被所述异构硬件锁定的状态还是处于非锁定状态的请求,使得 所述异构硬件根据所述主机发送的请求,查询根据所述内存地址生成的所述部 分内存1206的状态表,判断所述目标内存页是处于被所述异构硬件锁定的状态 还是处于非锁定状态;若所述目标内存页处于非锁定状态,则所述异构硬件向 所述主机通知所述目标内存页处于非锁定状态;若所述目标内存页处于被所述 异构硬件锁定的状态,则所述异构硬件向所述主机通知所述目标内存页被所述 异构硬件锁定;所述部分内存1206的状态表用于记录所述部分内存1206的内存 页的状态;

所述处理器1202用于当所述主机接收到所述目标内存页处于非锁定状态 的通知时,对所述目标内存页进行锁定;在对所述目标内存页锁定之后,对所 述目标内存页进行操作;

所述处理器1202用于当所述主机接收到所述异构硬件发送的所述目标内 存页处于被所述异构硬件锁定的通知时,确定不能对所述目标内存页进行操 作。

可选的,所述处理器1202用于在完成对所述目标内存页进行操作之后,解 除对所述目标内存页的锁定;

所述处理器1202用于在解除对所述目标内存页的锁定之后,通过传输接口 1203向所述异构硬件发送所述目标内存页已解锁的通知,使得所述异构硬件在 接收到所述主机发送的所述目标内存页已解锁的通知之后,将所述目标内存页 在所述状态表中的状态修改为非锁定状态。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步 骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读 存储介质中,存储介质可以包括:只读存储器(ROM,ReadOnlyMemory)、 随机存取记忆体(RAM,RandomAccessMemory)、磁盘或光盘等。

以上对本发明实施例所提供的内存共享方法、异构硬件、主机和异构系统 进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐 述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时, 对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均 会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号