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

文档序号:9471304阅读:来源:国知局
行操作时,主机需要执行的操作步骤,具体可以包括:
[0183]801、所述主机向所述异构硬件发送查询所述部分内存中的目标内存页是处于被所述异构硬件锁定的状态还是处于非锁定状态的请求。
[0184]所述异构硬件根据所述主机发送的请求,查询根据所述内存地址生成的所述部分内存的状态表,判断所述目标内存页是处于被所述异构硬件锁定的状态还是处于非锁定状态;若所述目标内存页处于非锁定状态,则所述异构硬件向所述主机通知所述目标内存页处于非锁定状态;若所述目标内存页处于被所述异构硬件锁定的状态,则所述异构硬件向所述主机通知所述目标内存页被所述异构硬件锁定;所述部分内存的状态表用于记录所述部分内存的内存页的状态;
[0185]802、当所述主机接收到所述目标内存页处于非锁定状态的通知时,对所述目标内存页进行锁定;
[0186]803、所述主机在对所述目标内存页锁定之后,对所述目标内存页进行操作;
[0187]804、当所述主机接收到所述异构硬件发送的所述目标内存页处于被所述异构硬件锁定的通知时,所述主机确定不能对所述目标内存页进行操作。
[0188]可选的,所述方法还包括:
[0189]所述主机在完成对所述目标内存页进行操作之后,解除对所述目标内存页的锁定;
[0190]所述主机在解除对所述目标内存页的锁定之后,向所述异构硬件发送所述目标内存页已解锁的通知,使得所述异构硬件在接收到所述主机发送的所述目标内存页已解锁的通知之后,将所述目标内存页在所述状态表中的状态修改为非锁定状态。
[0191]上述内存共享方法可以应用于主机,以下对所述主机进行介绍。
[0192]如图10所示,本发明实施例还提供一种主机901,所述主机901连接异构硬件,所述主机901包括:
[0193]发送单元902,用于向所述异构硬件发送所述主机901的部分内存的内存地址,使得当所述异构硬件的内存的空闲容量低于预定容量时,所述异构硬件根据所述内存地址,将所述异构硬件的内存中使用频率低于预定使用频率的数据存储到所述部分内存。
[0194]如图11所示,可选的,所述异构硬件还包括:接收单元903和解锁单元904,
[0195]所述接收单元903用于当所述异构硬件需要读取所述部分内存中的目标内存页的数据,并在所述异构硬件根据所述内存地址生成的所述部分内存的状态表中查询到所述目标内存页处于被所述主机901锁定的状态时,接收所述异构硬件发送的对所述目标内存页进行解锁的请求;所述部分内存的状态表用于记录所述部分内存的内存页的状态;
[0196]所述解锁单元904用于在接收到对所述目标内存页进行解锁的请求之后,终止对所述目标内存页的操作,并对所述目标内存页进行解锁;
[0197]所述发送单元902还用于在对所述目标内存页进行解锁之后,向所述异构硬件通知所述目标内存页已解锁,使得所述异构硬件在接收到所述主机901发送的所述目标内存页已解锁的通知之后,对所述目标内存页进行锁定,并在对所述目标内存页锁定之后,读取所述目标内存页中的数据。
[0198]可选的,所述发送单元902还用于向所述异构硬件发送查询所述部分内存中的目标内存页是处于被所述异构硬件锁定的状态还是处于非锁定状态的请求,使得所述异构硬件根据所述主机901发送的请求,查询根据所述内存地址生成的所述部分内存的状态表,判断所述目标内存页是处于被所述异构硬件锁定的状态还是处于非锁定状态;若所述目标内存页处于非锁定状态,则所述异构硬件向所述主机901通知所述目标内存页处于非锁定状态;若所述目标内存页处于被所述异构硬件锁定的状态,则所述异构硬件向所述主机901通知所述目标内存页被所述异构硬件锁定;所述部分内存的状态表用于记录所述部分内存的内存页的状态;
[0199]所述接收单元903还用于接收所述目标内存页处于非锁定状态的通知或接收所述异构硬件发送的所述目标内存页处于被所述异构硬件锁定的通知;
[0200]所述异构硬件还包括:锁定单元905和操作单元906。
[0201]所述锁定单元905用于当所述接收单元903接收到所述目标内存页处于非锁定状态的通知时,对所述目标内存页进行锁定;
[0202]所述操作单元906用于在所述锁定单元905对所述目标内存页进行锁定之后,对所述目标内存页进行操作。
[0203]可选的,所述解锁单元904还用于在所述操作单元906完成对所述目标内存页进行操作之后,解除对所述目标内存页的锁定;
[0204]所述发送单元902还用于在解除对所述目标内存页的锁定之后,向所述异构硬件发送所述目标内存页已解锁的通知,使得所述异构硬件在接收到所述主机901发送的所述目标内存页已解锁的通知之后,将所述目标内存页在所述状态表中的状态修改为非锁定状
O
[0205]本发明实施例还将介绍可以应用上述内存共享方法的异构系统1001。
[0206]如图12所示,本发明实施例还提供一种异构系统1001,其包括:主机1002和异构硬件1003,所述主机1002与所述异构硬件1003连接;
[0207]所述主机1002用于向所述异构硬件1003发送所述主机1002的部分内存的内存地址;
[0208]所述异构硬件1003用于接收所述主机1002发送的所述内存地址,以及当所述异构硬件1003的内存的空闲容量低于预定容量时,根据所述内存地址,将所述异构硬件1003的内存中使用频率低于预定使用频率的数据存储到所述部分内存。
[0209]可选的,所述异构硬件1003还用于根据所述内存地址,生成所述部分内存的状态表;所述状态表用于记录所述部分内存的内存页的状态;以及用于当所述异构硬件1003的内存的空闲容量低于预定容量时,在所述状态表中查找所述部分内存中处于空闲状态的内存页;在查找到处于空闲状态的内存页之后,将使用频率低于预定使用频率的数据存储到处于空闲状态的内存页中。
[0210]可选的,所述异构硬件1003还用于在将使用频率低于预定使用频率的数据存储到处于空闲状态的内存页中之后,而且当所述异构硬件1003需要读取所述部分内存中的目标内存页的数据时,判断所述目标内存页在所述状态表中是否处于被所述主机1002锁定的状态还是处于非锁定状态;
[0211]若所述目标内存页处于非锁定状态,则读取所述目标内存页的数据;
[0212]若所述目标内存页处于被所述主机1002锁定的状态,则向所述主机1002请求对所述目标内存页进行解锁;
[0213]所述主机1002还用于接收所述异构硬件1003发送的对所述目标内存页进行解锁的请求,终止对所述目标内存页的操作,对所述目标内存页进行解锁,以及在对所述目标内存页进行解锁之后,向所述异构硬件1003通知所述目标内存页已解锁;
[0214]所述异构硬件1003还用于接收所述主机1002发送的所述目标内存页已解锁的通知,对所述目标内存页进行锁定,并在对所述目标内存页锁定之后,读取所述目标内存页中的数据。
[0215]可选的,所述主机1002还用于在所述异构硬件1003根据所述内存地址,生成所述部分内存的状态表之后,向所述异构硬件1003发送查询所述部分内存中的目标内存页是处于被所述异构硬件1003锁定的状态还是处于非锁定状态的请求;
[0216]所述异构硬件1003还用于接收所述主机1002发送的查询所述部分内存中的目标内存页是处于被所述异构硬件1003锁定的状态还是处于非锁定状态的请求;以及用于根据所述主机1002发送的请求,判断所述目标内存页是处于被所述异构硬件1003锁定的状态还是处于非锁定状态;若所述目标内存页处于非锁定状态,则向所述主机1002通知所述目标内存页处于非锁定状态;若所述目标内存页处于被所述异构硬件1003锁定的状态,则向所述主机1002通知所述目标内存页被所述异构硬件1003锁定;
[0217]所述主机1002还用于在接收到所述目标内存页处于非锁定状态的通知之后,对所述目标内存页进行锁定,并在对所述目标内存页锁定之后,对所述目标内存页进行操作;以及用于在接收到所述目标内存页被所述异构硬件1003锁定的通知之后,确定不能对所述目标内存页进行操作。
[0218]可选的,所述主机1002还用于在对所述目标内存页进行操作之后,解除对所述目标内存页的锁定,并在解除对所述目标内存页的锁定之后,向所述异构硬件1003发送所述目标内存页已解锁的通知;
[0219]所述异构硬件1003还用于接收所述主机1002发送的所述目标内存页已解锁的通知,将所述目标内存页在所述状态表中的状态修改为非锁定状态。
[0220]可选的,所述异构硬件1003还用于在将所述异构硬件1003的内存中使用频率低于预定使用频率的数据存储到所述异构硬件1003的部分内存之后,记录使用频率低于预定使用频率的数据在所述部分内存中的存储时间;当所述存储时间未达到阈值时,所述异构硬件1003禁止将所述使用频率低于预定使用频率的数据从所述部分内存读取到所述异构硬件1003的内存中。
[0221]可选的,所述异构硬件1003还用于在读取所述目标内存页的数据之后,记录读取的所述目标内存页的数据在所述异构硬件1003的内存中的存储时间;当所述存储时间未达到阈值时,禁止将所述目标内存页的数据从所述异构硬件1003的内存存储到所述部分内存。
[0222]以下结合具体应用场景,对本发明实施例提供的异构系统进行进一步说明。
[0223]如图13所示,一种单节点异构系统包括:异构硬件和X86主机,其中异构硬件包括MICO和MICl,MICO和MICl分别通过接口 PC1-E与主机互联。MIC具有244个硬件线程,具备很强的多线程并行能力。如图14所示,主机上为每个MIC卡都预留出16G的存储空间,该存储空间用于作为主机与MIC的共享内存空间。MIC可选取不常用的内存页的数据存储到共享内存上,如图15所示,MIC上始终维护一个共享内存的状态表,状态表中可以设置有地址状态位、使用状态位和锁定状态位。其中,使用状态位可以设为使用Used状态和未被使用Unused状态,锁定状态位可以设为锁定Lock状态和Unlock非锁定状态。图15中的Addr表示主机上某内存页的地址;Used表示该内存页已被使用;Lock则表示当前内存页被锁定;Unused表示该内存页未被使用;Unlock表示当前内存页未被锁定。
[0224]如图16所示,图16中的主机上的16G共享内存中的阴影部分表示该内存页正在被使用。
[0225]如图15所示,本发明实施例还提供一种异构硬件1101,其包括:处理器1102、与所述处理器1102连接的内存1104,以及分别与所述处理器1102和内存1104连接的传输接口1103。在图15中,处理器1102、内存1104和传输接口 1103可以通过总线1105进行连接。所述异构硬件的传输接口 1103用于连接主机。所述处理器1102通过所述传输接口 1103获取所述主机发送的所述主机的部分内存的内存地址;当所述异构硬件的内存的空闲容量低于预定容量时,所述异构硬件根据所述内存地址,将所述异构硬件的内存中使用频率低于预定使用频率的数据存储到所述部分内存。
[0226]可选的,所述处理器1102还用于根据获取的所述内存地址,生成所述部分内存的状态表;所述状态表用于记录所述部分内存的内存页的状态;当所述异构硬件的内存的空闲容量低于预定容量时,在所述状态表中查找所述部分内存中处于空闲状态的内存页;在查找到处于空闲状态的内存页之后,将使用频率低于预定使用频率的数据存储到处于空闲状态的内存页中。
[0227]所述处理器1102还用于判断所述目标内存页处于非锁定状态,则读取所述目标内存页的数据;若判断所述目标内存页处于被所述主机锁定的状态,则通过传输接口 1103向所述主机请求对所述目标内存页进行解锁,使得所述主机终止对所述目标内存页的操作,对所述目标内存页进行解锁,以及在对所述目标内存页进行解锁之后,向所述异构硬件通知所述目标内存页已解锁;
[0228]所述处理器1102还用于通过所述传输接口 1103接收所述主机发送的所述目标内存页已解锁的通知;在接收到所述主机发送的所述目标内存页已解锁的通知,对所述目标内存页进行锁定;在对所述目标内存页锁定之后,通过所述传输接口 1103读取所述目标内存页中的数据。
[0229]可选的,所述处理器1
当前第4页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1