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

文档序号:9471304阅读:来源:国知局
120]为了更好的理解本发明,以下列举更详细的实施例进行说明。如图2所示,所述内存共享方法可以包括:
[0121]201、所述异构硬件获取所述主机发送的所述主机的部分内存的内存地址。
[0122]202、所述异构硬件根据所述内存地址,生成所述部分内存的状态表;所述状态表用于记录所述部分内存的内存页的状态。
[0123]203、当所述异构硬件的内存的空闲容量低于预定容量时,所述异构硬件在所述状态表中查找所述部分内存中处于空闲状态的内存页。
[0124]204、所述异构硬件在查找到处于空闲状态的内存页之后,将使用频率低于预定使用频率的数据存储到处于空闲状态的内存页中。
[0125]在本实施例中,所述状态表中可以设置有所述部分内存的内存页的状态位,所述状态位可以用于标识所述内存页当前所处的状态。所述状态位可以包括使用状态位和锁定状态位,使用状态位可以标识当前内存页是否处于使用状态,所述锁定状态位可以标识当前内存页是否处于锁定状态,所述状态表还记录了内存页的地址。所述状态表由所述异构硬件进行维护。当所述异构硬件将使用频率低于预定使用频率的数据存储到处于空闲状态的内存页中,异构硬件将该内存页在状态表中的使用状态位设为使用状态。
[0126]在所述异构硬件将使用频率低于预定使用频率的数据存储到处于空闲状态的内存页中之后,所述异构硬件有时仍然需要使用这些存储到主机部分内存上的数据。如图3所示,图3描述了当所述异构硬件需要读取所述部分内存中的目标内存页的数据时,异构硬件从主机的部分内存读取数据的步骤,具体包括:
[0127]301、判断所述目标内存页在所述状态表中是否处于被所述主机锁定的状态还是处于非锁定状态。
[0128]若所述目标内存页处于非锁定状态,则执行步骤302:所述异构硬件读取所述目标内存页的数据。
[0129]303、若所述目标内存页处于被所述主机锁定的状态,则所述异构硬件向所述主机请求对所述目标内存页进行解锁。
[0130]所述目标内存页处于被所述主机锁定的状态表示所述目标内存页当前正在被所述主机进行读或写等操作。所述主机在接收到所述异构硬件发送的对所述目标内存页进行解锁的请求之后,终止对所述目标内存页的操作,对所述目标内存页进行解锁,以及在对所述目标内存页进行解锁之后,向所述异构硬件通知所述目标内存页已解锁。
[0131]304、所述异构硬件接收所述主机发送的所述目标内存页已解锁的通知,对所述目标内存页进行锁定。
[0132]在所述异构硬件对所述目标内存页进行锁定之后,所述异构硬件将所述目标内存页在状态表中的锁定状态位设为锁定状态。此时,所述主机将不能够对所述目标内存页进行操作,从而避免所述主机和所述异构硬件在使用所述部分内存的内存页时造成冲突。
[0133]在对所述目标内存页进行锁定之后,则执行步骤302:读取所述目标内存页中的数据。
[0134]如图4所示,图4描述了所述主机读取所述部分内存的内存页的步骤,具体包括:
[0135]401、所述异构硬件接收所述主机发送的查询所述部分内存中的目标内存页是处于被所述异构硬件锁定的状态还是处于非锁定状态的请求。
[0136]402、所述异构硬件根据所述主机发送的请求,判断所述目标内存页是处于被所述异构硬件锁定的状态还是处于非锁定状态。
[0137]若所述目标内存页处于非锁定状态,则执行步骤403:所述异构硬件向所述主机通知所述目标内存页处于非锁定状态,使得所述主机在接收到所述目标内存页处于非锁定状态的通知之后,对所述目标内存页进行锁定。
[0138]404、在对所述目标内存页锁定之后,对所述目标内存页进行操作。
[0139]在对所述目标内存页锁定之后,所述主机通知所述异构硬件所述目标内存页被所述主机锁定,所述异构硬件接收到所述目标内存页被所述主机锁定的通知之后,将所述目标内存页在所述状态表中的状态设为被所述主机锁定的状态。
[0140]若所述目标内存页处于被所述异构硬件锁定的状态,则执行步骤405:所述异构硬件向所述主机通知所述目标内存页被所述异构硬件锁定,以使得所述主机确定不能对所述目标内存页进行操作。
[0141]在所述主机对所述目标内存页进行操作之后,所述方法还包括:
[0142]所述异构硬件接收所述主机在完成对所述目标内存页进行的操作之后解除对所述目标内存页的锁定,并在解除对所述目标内存页的锁定之后发送的所述目标内存页已解锁的通知;
[0143]所述异构硬件在接收到所述主机发送的所述目标内存页已解锁的通知之后,将所述目标内存页在所述状态表中的状态修改为非锁定状态。
[0144]由于主机和异构硬件可能对用于共享的主机上的部分内存中的某一内存页进行频繁读写,使得该内存页的数据频繁往返于主机的内存和异构硬件的内存,容易对主机和异构硬件之间的信息传输造成不良影响。为了避免此不良影响,所述内存共享方法可以采取以下技术措施。
[0145]具体的,在所述异构硬件将所述异构硬件的内存中使用频率低于预定使用频率的数据存储到所述异构硬件的部分内存之后,所述内存共享方法还可以包括:
[0146]所述异构硬件记录使用频率低于预定使用频率的数据在所述部分内存中的存储时间;
[0147]当所述存储时间未达到阈值时,所述异构硬件禁止将所述使用频率低于预定使用频率的数据从所述部分内存读取到所述异构硬件的内存中。
[0148]在所述异构硬件读取所述目标内存页的数据之后,所述内存共享方法还包括:
[0149]所述异构硬件记录读取的所述目标内存页的数据在所述异构硬件的内存中的存储时间;
[0150]当所述存储时间未达到阈值时,所述异构硬件禁止将所述目标内存页的数据从所述异构硬件的内存存储到所述部分内存。该阈值可以不是定值,可以根据所述目标内存页被访问的频率进行调整。
[0151]上述实施例的内存共享方法可以应用于异构硬件。以下将对所述异构硬件进行介绍。
[0152]如图5所示,本发明实施例提供一种异构硬件501,所述异构硬件501连接主机,所述异构硬件501包括:
[0153]获取单元502,用于获取所述主机发送的所述主机的部分内存的内存地址;
[0154]存储单元503,用于当所述异构硬件501的内存的空闲容量低于预定容量时,根据所述内存地址,将所述异构硬件501的内存中使用频率低于预定使用频率的数据存储到所述部分内存。
[0155]可选的,如图6所示,所述异构硬件还包括:生成单元504和查询单元505,
[0156]所述生成单元504用于根据所述获取单元获取的所述内存地址,生成所述部分内存的状态表;所述状态表用于记录所述部分内存的内存页的状态;
[0157]所述查询单元505用于当所述异构硬件的内存的空闲容量低于预定容量时,在所述状态表中查找所述部分内存中处于空闲状态的内存页;
[0158]所述存储单元还用于在所述查询单元505查找到处于空闲状态的内存页之后,将使用频率低于预定使用频率的数据存储到处于空闲状态的内存页中。
[0159]可选的,所述查询单元505还用于在所述存储单元将使用频率低于预定使用频率的数据存储到处于空闲状态的内存页中之后,而且当所述异构硬件需要读取所述部分内存中的目标内存页的数据时,判断所述目标内存页在所述状态表中是否处于被所述主机锁定的状态还是处于非锁定状态。
[0160]所述异构硬件还包括读取单元506、请求单元507和锁定单元508。
[0161]所述读取单元506用于若所述查询单元505判断所述目标内存页处于非锁定状态,则读取所述目标内存页的数据;
[0162]所述请求单元507用于若所述查询单元505判断所述目标内存页处于被所述主机锁定的状态,则向所述主机请求对所述目标内存页进行解锁,使得所述主机终止对所述目标内存页的操作,对所述目标内存页进行解锁,以及在对所述目标内存页进行解锁之后,向所述异构硬件通知所述目标内存页已解锁;
[0163]所述获取单元还用于接收所述主机发送的所述目标内存页已解锁的通知;
[0164]所述锁定单元508用于在所述获取单元接收到所述主机发送的所述目标内存页已解锁的通知,对所述目标内存页进行锁定;
[0165]所述读取单元506还用于在所述锁定单元508对所述目标内存页锁定之后,读取所述目标内存页中的数据。
[0166]可选的,所述获取单元还用于在所述生成单元504根据所述内存地址,生成所述部分内存的状态表之后,接收所述主机发送的查询所述部分内存中的目标内存页是处于被所述异构硬件锁定的状态还是处于非锁定状态的请求;
[0167]所述查询单元505用于根据所述获取单元获取到的所述主机发送的请求,判断所述目标内存页是处于被所述异构硬件锁定的状态还是处于非锁定状态;
[0168]所述异构硬件还包括:发送单元509,所述发送单元509用于若所述查询单元505判断所述目标内存页处于非锁定状态,则向所述主机通知所述目标内存页处于非锁定状态,使得所述主机在接收到所述目标内存页处于非锁定状态的通知之后,对所述目标内存页进行锁定,并在对所述目标内存页锁定之后,对所述目标内存页进行操作;还用于若所述查询单元505判断所述目标内存页处于被所述异构硬件锁定的状态,则向所述主机通知所述目标内存页被所述异构硬件锁定,以使得所述主机确定不能对所述目标内存页进行操作。
[0169]可选的,所述获取单元还用于在所述主机对所述目标内存页进行操作之后,接收所述主机在完成对所述目标内存页进行的操作之后解除对所述目标内存页的锁定,并在解除对所述目标内存页的锁定之后发送的所述目标内存页已解锁的通知;
[0170]所述异构硬件还包括状态单元512,所述状态单元512用于在所述获取单元接收到所述主机发送的所述目标内存页已解锁的通知之后,将所述目标内存页在所述状态表中的状态修改为非锁定状态。
[0171]可选的,所述异构硬件还包括时间单元510和禁止单元511。
[0172]所述时间单元510用于在所述存储单元将所述异构硬件的内存中使用频率低于预定使用频率的数据存储到所述异构硬件的部分内存之后,记录使用频率低于预定使用频率的数据在所述部分内存中的存储时间;
[0173]所述禁止单元511用于当所述时间单元510记录的所述存储时间未达到阈值时,禁止将所述使用频率低于预定使用频率的数据从所述部分内存读取到所述异构硬件的内存中。
[0174]可选的,所述时间单元510还用于在所述读取单元506读取所述目标内存页的数据之后,记录读取的所述目标内存页的数据在所述异构硬件的内存中的存储时间;
[0175]所述禁止单元511还用于当所述时间单元510记录的所述存储时间未达到阈值时,禁止将所述目标内存页的数据从所述异构硬件的内存存储到所述部分内存。
[0176]如图7所示,本发明实施例还提供一种内存共享方法,其可以应用于主机,所述主机连接异构硬件,具体包括:
[0177]601、所述主机向所述异构硬件发送所述主机的部分内存的内存地址,使得当所述异构硬件的内存的空闲容量低于预定容量时,所述异构硬件根据所述内存地址,将所述异构硬件的内存中使用频率低于预定使用频率的数据存储到所述部分内存。
[0178]可选的,如图8所示,图8描述的是当所述异构硬件需要读取所述部分内存中的目标内存页的数据,并在所述异构硬件根据所述内存地址生成的所述部分内存的状态表中查询到所述目标内存页处于被所述主机锁定的状态时,主机需要执行的操作步骤,具体包括:
[0179]701、所述主机接收所述异构硬件发送的对所述目标内存页进行解锁的请求;所述部分内存的状态表用于记录所述部分内存的内存页的状态;
[0180]702、所述主机在接收到对所述目标内存页进行解锁的请求之后,终止对所述目标内存页的操作,并对所述目标内存页进行解锁;
[0181]703、所述主机在对所述目标内存页进行解锁之后,向所述异构硬件通知所述目标内存页已解锁,使得所述异构硬件在接收到所述主机发送的所述目标内存页已解锁的通知之后,对所述目标内存页进行锁定,并在对所述目标内存页锁定之后,读取所述目标内存页中的数据。
[0182]如图9所示,图9描述的是当主机需要对所述部分内存中的目标内存页进
当前第3页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1