CN103455434B - 一种建立缓存目录的方法及*** - Google Patents
一种建立缓存目录的方法及*** Download PDFInfo
- Publication number
- CN103455434B CN103455434B CN201310377351.XA CN201310377351A CN103455434B CN 103455434 B CN103455434 B CN 103455434B CN 201310377351 A CN201310377351 A CN 201310377351A CN 103455434 B CN103455434 B CN 103455434B
- Authority
- CN
- China
- Prior art keywords
- index information
- catalogue vector
- catalogue
- vector
- target data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种建立缓存目录的方法及***,该方法包括:确定用于标识缓存目标数据的处理器的目录向量对应的索引信息,以及确定所述目标数据在存储器中的存储地址;建立所述索引信息和所述存储地址的第一对应关系。在上述技术方案中,通过确定目录向量对应的索引信息,建立索引信息与存储地址之间的映射关系,在多个存储地址对应相同目录向量时避免重复存储相同目录向量,从而减小缓存目录占用的存储空间,进而解决了现有技术中缓存目录占用存储空间过大的技术问题,减小缓存目录的空间占用率。
Description
技术领域
本发明涉及电子技术领域,特别涉及一种建立缓存目录的方法及电子设备。
背景技术
分布式共享存储器DSM(Distribute Share Memory)***中,为了保证物理存储中已经被修改的内容与缓存中的内容一致,即保证缓存一致性CC(Cache Coherence),现有技术中,由目录来跟踪某一个内存块被哪些处理器进行了访问和缓存。当其它处理器需要读写此内存数据块时,目录将向具有此数据的处理器发送点对点的消息,使其数据失效或回写。
现有技术提供一种全向量目录Full Bit Vector Scheme:目录向量的每一Bit指向一个处理器,每一个缓存行Cache line中的目标数据对应一个目录向量。全向量目录在存储的过程中存储目标数据在内存中的存储地址,及与每个存储地址对应的目录向量,具体存储情况如下表:
目标数据1的存储地址 | 目录向量1 |
目标数据2的存储地址 | 目录向量2 |
…… | …… |
本申请发明人在实现本申请实施例中技术方案的过程中,发现现有技术存在如下技术问题:
在有技术中,常常会出现许多不同的目标数据被相同的处理器所缓存,即在全向量目录中经常出现不同的存储地址对应的目录向量相同,导致全向量目录中重复存储多个相同的目录向量。由于在大规模的处理器***中,处理器的数量较多,目录向量所占用的存储空间较大,存储大量重复的目录向量导致全向量目录占用极大的存储空间。可见现有技术中因为缓存目录中存储多个相同的目录向量,导致缓存目录占用存储空间过大的技术问题。
发明内容
本发明实施例提供一种建立缓存目录的方法及***,用于解决现有技术中缓存目录占用存储空间过大的技术问题,减小缓存目录的空间占用率。
第一方面,本发明提供一种建立缓存目录的方法,该方法包括:确定用于标识缓存目标数据的处理器的目录向量对应的索引信息,以及确定所述目标数据在存储器中的存储地址;建立所述索引信息和所述存储地址的第一对应关系。
结合第一方面,在第一种可能的实现方式中,所述确定用于标识缓存目标数据的处理器的目录向量对应的索引信息,具体包括:判断已建立的目录向量和索引信息的第二对应关系集中是否有所述目录向量、以及与所述目录向量对应的所述索引信息;如果有,则根据所述第二对应关系集确定所述目录向量对应的所述索引信息;否则,根据所述目录向量的汉明重量和所述目录向量,确定所述目录向量对应的所述索引信息。
结合第一种可能的实现方式,在第二种可能的实现方式中,所述根据所述目录向量的汉明重量和所述目录向量,确定所述目录向量对应的所述索引信息,具体为:若所述汉明重量小于设定阈值,对所述目录向量进行编码,并将编码后得到的结果作为所述目录向量对应的所述索引信息;或,若所述汉明重量不小于所述设定阈值,根据所述目录向量和所述第二对应关系集,生成所述目录向量对应的所述索引信息。
结合第二种可能的实现方式,在第三种可能的实现方式中,根据所述目录向量的汉明重量和所述目录向量,生成所述目录向量对应的索引信息之后,所述方法还包括:将用于标识获取所述目录向量的方式的标识信息置于所述索引信息中。
结合第二种可能的实现方式,在第四种可能的实现方式中,所述根据所述目录向量和所述第二对应关系集,生成所述目录向量的所述索引信息,具体为:将所述目录向量添加到所述第二对应关系集所在的表格中,生成用于标识所述目录向量在所述表格中所处位置的位置信息,将所述位置信息作为所述索引信息;或,生成与所述第二对应关系集中所有的索引号不同的一个目标索引号,将生成的所述目标索引号作为所述索引信息。
结合第四种可能的实现方式,在第五种可能的实现方式中,所述将所述目录向量添加到所述第二对应关系集所在的表格中,具体包括:对所述目录向量进行位分段,划分获得至少两个分段位;对所述至少两个分段位中每个分段位进行异或操作,获得所述表格中用于存储所述目录向量的列标识或行标识;将所述目录向量添加到所述列标识或所述行标识对应的行或列中。
结合第二种至第五种中任一可能的实现方式,在第六种可能的实现方式中,所述判断已建立的目录向量和索引信息的第二对应关系集中是否有所述目录向量、以及与所述目录向量对应的所述索引信息,具体包括:确定所述汉明重量对应的表格,所述表格中包含所述第二对应关系集;判断所述第二对应关系集中是否有所述目录向量对应的所述索引信息;其中,所述目录向量的汉明重量在所属的所述表格对应的汉明重量范围内。
结合第六种可能的实现方式,在第七种可能的实现方式中,在根据所述目录向量和所述第二对应关系集,生成所述目录向量对应的所述索引信息之后,所述方法还包括:将所述目录向量的汉明重量对应的表格的表格标识添加到所述索引信息中。
结合第六种可能的实现方式,在第七种可能的实现方式中,在所述根据所述目录向量和所述第二对应关系集,生成所述目录向量对应的所述索引信息之后,所述方法还包括:在根据生成的所述索引信息和所述目录向量,更新所述第二对应关系集。
结合第一方面或第一种至第七种中任一可能的实现方式,所述确定用于标识缓存目标数据的处理器的目录向量对应的索引信息,具体为:在检测到缓存所述目标数据的所述处理器发生了变化时,确定所述目录向量对应的所述索引信息;或,在检测到所述处理器缓存了所述存储器中的所述目标数据时,确定所述目录向量对应的所述索引信息。
第二方面,本发明提供一种确定目录向量的方法,包括:
根据索引信息和存储地址的第一对应关系,确定目标数据在存储器中的存储地址对应的索引信息;
根据确定的所述索引信息,确定用于标识缓存所述目标数据的处理器的目录向量。
结合第二方面,在第一种可能的实现方式中,所述根据确定的所述索引信息,确定用于标识缓存所述目标数据的处理器的目录向量,包括:
根据所述索引信息包含的用于标识获取所述目录向量的方式的标识信息,在确定所述标识信息为一级标识时,对所述索引信息进行解码,并将解码后的结果作为所述目录向量;或
根据所述索引信息包含的用于标识获取所述目录向量的方式的标识信息,在确定所述标识信息为二级标识时,根据目录向量和索引信息的第二对应关系,确定目标数据在存储器中的存储地址对应的索引信息对应的目录向量,其中所述目录向量用于标识缓存目标数据的处理器。
结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述根据目录向量和索引信息的第二对应关系,确定目标数据在存储器中的存储地址对应的索引信息对应的目录向量,具体包括:
确定所述目录向量的汉明重量对应的表格,其中,所述表格包含所述第二对应关系;
根据所述表格包含的所述第二对应关系,确定所述索引信息对应的所述目录向量;
其中,所述第二对应关系中的目录向量的汉明重量在所属的所述表格对应的汉明重量范围内。
第三方面,本发明提供一种建立缓存目录的***,包括:
确定单元,用于确定用于标识缓存目标数据的处理器的目录向量对应的索引信息,以及确定所述目标数据在存储器中的存储地址;
关联单元,用于建立所述索引信息和所述存储地址的第一对应关系。
结合第三方面,在第一种可能的实现方式中,所述确定单元具体用于:
判断已建立的目录向量和索引信息的第二对应关系集中是否有所述目录向量、以及与所述目录向量对应的所述索引信息;若有,根据所述第二对应关系集确定所述目录向量对应的所述索引信息;否则,根据所述目录向量的汉明重量和所述目录向量,确定所述目录向量对应的所述索引信息。
结合第三方面的第一种可能的实现方式,在第二种可能的实现方式中,所述确定单元还用于:
在所述汉明重量小于设定阈值时,对所述目录向量进行编码,并将编码后得到的结果作为所述目录向量对应的所述索引信息;或在所述汉明重量不小于所述设定阈值时,根据所述目录向量和所述第二对应关系集,生成所述目录向量对应的所述索引信息。
结合第三方面的第二种可能的实现方式,在第三种可能的实现方式中,所述确定单元还用于:
在根据所述目录向量的汉明重量和所述目录向量,生成所述目录向量对应的索引信息之后,将用于标识获取所述目录向量的方式的标识信息置于所述索引信息中。
结合第三方面的第二种可能的实现方式,在第四种可能的实现方式中,所述确定单元还用于:
在所述汉明重量不小于所述设定阈值时,将所述目录向量添加到所述第二对应关系集所在的表格中,生成用于标识所述目录向量在所述表格中所处位置的位置信息,将所述位置信息作为所述索引信息;或生成与所述第二对应关系集中所有的索引号不同的一个目标索引号,将生成的所述目标索引号作为所述索引信息。
结合第三方面的第四种可能的实现方式,在第五种可能的实现方式中,所述确定单元将所述目录向量添加到所述第二对应关系集所在的表格中,具体用于:
对所述目录向量进行位分段,划分获得至少两个分段位;对所述至少两个分段位中每个分段位进行异或操作,获得所述表格中用于存储所述目录向量的列标识或行标识;将所述目录向量添加到所述列标识或所述行标识对应的行或列中。
结合第三方面的第一种至第五种中任一可能的实现方式,在第六种可能的实现方式中,所述确定单元还用于:
确定所述汉明重量对应的表格,所述表格中包含所述第二对应关系集;判断所述第二对应关系集中是否有所述目录向量对应的所述索引信息;其中,所述目录向量的汉明重量在所属的所述表格对应的汉明重量范围内。
结合第三方面的第六种可能的实现方式,在第七种可能的实现方式中,所述确定单元还用于:
在根据所述目录向量和所述第二对应关系集,生成所述目录向量对应的所述索引信息之后,将所述目录向量的汉明重量对应的表格的表格标识添加到所述索引信息中。
结合第三方面的第六种可能的实现方式,在第八种可能的实现方式中,所述确定单元还用于:
在所述根据所述目录向量和所述第二对应关系集,生成所述目录向量对应的所述索引信息之后,根据生成的所述索引信息和所述目录向量,更新所述第二对应关系集。
结合第三方面的第一种至第八种中任一可能的实现方式,在第九种可能的实现方式中,所述确定单元还用于:
在检测到缓存所述目标数据的所述处理器发生了变化时,确定所述目录向量对应的所述索引信息;或在检测到所述处理器缓存了所述存储器中的所述目标数据时,确定所述目录向量对应的所述索引信息。
第四方面,本发明提供一种确定目录向量的***,包括:
第一确定单元,用于根据索引信息和存储地址的对应关系,确定目标数据在存储器中的存储地址对应的索引信息;
第二确定单元,用于根据确定的所述索引信息,确定用于标识缓存所述目标数据的处理器的目录向量。
结合第四方面,在第一种可能的实现方式中,所述第二确定单元具体用于:
根据所述索引信息包含的用于标识获取所述目录向量的方式的标识信息,在确定所述标识信息为一级标识时,对所述索引信息进行解码,并将解码后的结果作为所述目录向量;或根据所述索引信息包含的用于标识获取所述目录向量的方式的标识信息,在确定所述标识信息为二级标识时,根据目录向量和索引信息的第二对应关系,确定目标数据在存储器中的存储地址对应的索引信息对应的目录向量。
结合第四方面的第一种可能实现的方式,在第二种可能的实现方式中,所述第二确定单元还用于:
确定存储所述目录向量表格,其中,所述表格包含所述第二对应关系;根据所述表格包含的所述第二对应关系,确定所述索引信息对应的所述目录向量。
第五方面,本发明提供一种分布式共享存储器***,包括:
节点控制器,用于确定的目录向量对应的索引信息,其中所述目录向量用于标识缓存目标数据的处理器,以及用于确定所述目标数据在存储器中的存储地址;并建立所述索引信息和所述存储地址的第一对应关系;
目录存储器,用于保存所述第一对应关系。
结合第五方面,在第一种可能的实现方式中,所述目录存储器还用于:
存储目录向量和索引信息的第二对应关系集;所述节点控制器,具体用于:
判断所述目录存储器中已存储的目录向量和索引信息的第二对应关系集中是否有所述目录向量、以及与所述目录向量对应的所述索引信息;若有,根据所述第二对应关系集确定所述目录向量对应的所述索引信息;否则,根据所述目录向量的汉明重量和所述目录向量,确定所述目录向量对应的所述索引信息。
结合第五方面的第一种可能的实现方式,在第二种可能的实现方式中,所述节点控制器还用于:
在所述汉明重量小于设定阈值时,对所述目录向量进行编码,并将编码后得到的结果作为所述目录向量对应的所述索引信息;或在所述汉明重量不小于所述设定阈值时,根据所述目录向量和所述第二对应关系集,生成所述目录向量对应的所述索引信息。
结合第五方面的第二种可能的实现方式,在第三种可能的实现方式中,所述节点控制器还用于:
在根据所述目录向量的汉明重量和所述目录向量,生成所述目录向量对应的索引信息之后,将用于标识获取所述目录向量的方式的标识信息置于所述索引信息中。
结合第五方面的第二种可能的实现方式,在第四种可能的实现方式中,所述节点控制器还用于:
在所述汉明重量不小于所述设定阈值时,将所述目录向量添加到所述目录存储器中存储所述第二对应关系集的表格中,并生成用于标识所述目录向量在所述表格中所处位置的位置信息,将所述位置信息作为所述索引信息;或生成与所述第二对应关系集中所有的索引号不同的一个目标索引号,将生成的所述目标索引号作为所述索引信息。
结合第五方面的第四种可能的实现方式,在第五种可能的实现方式中,所述节点控制器具体用于:
将所述目录向量添加到所述目录存储器中存储所述第二对应关系集的表格中时,对所述目录向量进行位分段,划分获得至少两个分段位;对所述至少两个分段位中每个分段位进行异或操作,获得所述表格中用于存储所述目录向量的列标识或行标识;将所述目录向量添加到所述列标识或所述行标识对应的行或列中。
结合第五方面的第一种至第五种中任一可能的实现方式,在第六种可能的实现方式中,所述节点控制器具体用于:
在判断已建立的目录向量和索引信息的第二对应关系集中是否有所述目录向量、以及与所述目录向量对应的所述索引信息时,确定所述汉明重量对应的表格,所述表格中包含所述第二对应关系集;判断所述第二对应关系集中是否有所述目录向量对应的所述索引信息;其中,所述目录向量的汉明重量在所属的所述表格对应的汉明重量范围内。
结合第五方面的第六种可能的实现方式,在第七种可能的实现方式中,所述节点控制器还用于:
在根据所述目录向量和所述第二对应关系集,生成所述目录向量对应的所述索引信息之后,将所述目录向量的汉明重量对应的表格的表格标识添加到所述索引信息中。
结合第五方面的第六种可能的实现方式,在第八种可能的实现方式中,所述节点控制器还用于:
在根据所述目录向量和所述第二对应关系集,生成所述目录向量对应的所述索引信息之后,根据生成的所述索引信息和所述目录向量,更新所述目录存储器中保存的所述第二对应关系集。
结合第五方面的第一种至第八种中任一可能的实现方式,在第九种可能的实现方式中,所述节点控制器还用于:
在检测到缓存所述目标数据的所述处理器发生了变化时,确定所述目录向量对应的所述索引信息;或在检测到所述处理器缓存了所述存储器中的所述目标数据时,确定所述目录向量对应的所述索引信息。
结合第五方面的第九种可能的实现方式,在第十种可能的实现方式中,所述节点控制器还用于:
根据索引信息和存储地址的对应关系,确定目标数据在存储器中的存储地址对应的索引信息;根据确定的所述索引信息,确定用于标识缓存所述目标数据的处理器的目录向量。
结合第五方面的第十种可能的实现方式,在第十一种可能的实现方式中,所述节点控制器具体用于:
根据所述索引信息包含的用于标识获取所述目录向量的方式的标识信息,在确定所述标识信息为一级标识时,对所述索引信息进行解码,并将解码后的结果作为所述目录向量;或根据所述索引信息包含的用于标识获取所述目录向量的方式的标识信息,在确定所述标识信息为二级标识时,根据目录向量和索引信息的第二对应关系,确定目标数据在存储器中的存储地址对应的索引信息对应的目录向量。
结合第五方面的第十一种可能的实现方式,在第十二种可能的实现方式中,所述节点控制器具体用于:
确定存储所述目录向量表格,其中,所述表格包含所述第二对应关系;根据所述表格包含的所述第二对应关系,确定所述索引信息对应的所述目录向量。
本发明实施例针对标识缓存目标数据的处理器的目录向量,通过确定获取该目录向量的索引信息,并建立确定的索引信息与存储该目标数据的存储地址之间的第一对应关系,即通过索引信息表示目标数据的存储地址与目录向量之间的对应关系,为此在有另一目标数据对应相同的目录向量时,只需要存储该目标数据的存储地址及对应目录向量的索引信息即可,不需要在重复存储目录向量,避免重复存储相同目录向量,从而减小缓存目录占用的存储空间,进而解决了现有技术中缓存目录占用存储空间过大的技术问题,减小缓存目录的空间占用率。
附图说明
图1为本申请实施例一提供的缓存目录的映射示意图;
图2为本申请实施例一提供的一种建立缓存目录对应关系的流程示意图;
图3为本申请实施例一提供的确定目录向量对应的索引信息的流程图;
图4为本申请实施例一提供的一级索引信息和二级索引信息的构成图;
图5为本申请实施例一提供的二级表格示意图;
图6为本申请实施例一提供的目录向量合并示意图;
图7为本申请实施例二提供的时建立包含多张二级表格的缓存目录对应关系的流程示意图;
图8为本申请实施例三提供的一种确定目录向量的方法的流程示意图;
图9为本申请实施例四提供的一种建立缓存目录的***的结构方框图;
图10为本申请实施例五提供的一种确定目录向量的***的结构方框图;
图11为本申请实施例六提供的一种分布式共享存储器***的结构示意图;
图12为本申请实施例六提供的节点控制器与处理器的连接示意图。
具体实施方式
本申请实施例提供一种建立缓存目录对应关系的方法、确定目录向量的方法及电子设备,用以解决现有技术中存在的因为缓存目录中存储多个相同的目录向量,导致缓存目录占用存储空间过大的技术问题。
本发明实施例中的技术方案为解决上述的技术问题,总体思路如下:
请参考图1,Tag表示目标数据在存储器中的存储地址,S0_ptr表示目录向量对应的索引信息,S1_0~S1_3表示存储目录向量的二级表格。在建立缓存目录的过程中,建立两级映射关系:在用于标识缓存目标数据的处理器的目录向量与用于确定对应的目录向量的索引信息之间建立第二对应关系集,如二级表格S1_0~S1_3。在索引信息与被缓存的目标数据的存储地址之间建立第一对应关系,如Tag、S0_ptr所在的表格,使得建立缓存目录时仅需存储一次目录向量,不同的目标数据被相同的处理器所缓存时,只需要存储目标数据的存储地址与目录向量对应的索引信息之间的第一对应关系即可,不需要重复存储相同的目录向量,从而解决现有技术中存在的因为缓存目录中存储多个相同的目录向量,导致缓存目录占用存储空间大的技术问题,以达到减小缓存目录的空间占用率的技术效果。
下面结合附图对本申请实施例技术方案的主要实现原理、具体实施方式及其对应能够达到的有益效果进行详细的阐述。
实施例一
请参考图2,本申请实施例提供一种建立缓存目录对应关系的方法,包括:
S201:确定用于标识缓存目标数据的处理器的目录向量对应的索引信息,以及确定所述目标数据在存储器中的存储地址。
在具体实施过程中,所述目录向量由指向各个处理器的位组成。在分布式共享存储器DSM***中包含多个处理器,用1bit表示1个处理器缓存或未缓存目标数据,通常情况下用“1”表示处理器缓存了所述目标数据,用“0”表示处理器未缓存所述目标数据。表示所有处理器对目标数据是否缓存的位合在一起便组成了目录向量,标识所有处理器对目标数据的缓存状态。例如,一分布式共享存储器DSM***中包含16个处理器,那么目录向量则由16bit的向量组成,若其中第一个处理器和第16个处理器缓存了目标数,那么此时标识缓存目标数据的的处理器的目录向量则为1000_0000_0000_0001。
在建立缓存目录对应关系时,一、确定所述目录向量对应的索引信息,所述索引信息可以为指向存储所述目录向量的位置信息、标识所述目录向量的索引号或标识所述目录向量的编码;二、确定目标数据在存储器中的存储地址,所述存储器具体为内存块(Memory Block)或硬盘(Hard Disk Drive),其中,所述索引信息和所述存储地址的确定顺序无先后之分。在确定出所述目录向量对应的索引信息和所述目标数据在存储器中的存储地址之后执行S102。
S202:建立所述索引信息和所述存储地址的第一对应关系。
具体的,所述索引信息与所述存储地址之间的第一对应关系可以通过表格的形式呈现,如表一,Tag表示目标数据在存储器中的存储地址,S0_ptr表示所述目录向量对应的所述索引信息。
Tag | S0_ptr |
表一
在具体实施过程中,在下述两种情况下,可触发电子设备确定所述目录向量对应的所述索引信息:第一种情况,在检测到所述处理器缓存了所述存储器中的所述目标数据时,因为在处理器缓存目标数据时便对应产生一个目录向量,此时触发电子设备确定产生的目录向量对应的所述索引信息;第二种情况:在检测到缓存目标数据的处理器发生了变化时,如缓存目标数据的处理器的数量减少或增加,目标数据存储地址对应的目录向量发生改变,此时也将触发电子设备确定所述目录向量对应的所述索引信息。
例如:内存中的数据1被第10个处理器和第4个处理器缓存时,产生一个新的目录向量0000_0010_0000_1000,此时触发电子设备确定目录向量对应的索引信息。一段时间之后,第4个处理器将数据1写回内存中,即释放对数据1的缓存,那么此时缓存数据1的处理器发生改变,对应的目录向量也从原来的0000_0010_0000_1000改变为0000_0010_0000_0000,那么此时也将触发电子设备确定该目录向量对应的索引信息。
在具体实施过程中,为了减小目录向量对存储空间的占用率,本申请实施例确定的索引信息具体为一级索引信息或二级索引信息。一级索引信息直接指向缓存了所述目标数据的处理器ID,而二级索引信息则指向存储目录向量的二级表格,再通过存储目标向量的二级表格获取目录向量,从而获取缓存目标数据的处理器ID。
由于一级索引信息直接指向缓存了所述目标数据的处理器ID,所以一级索引信息更适合处理器数量比较少的情况;相应的,二级索引信息更适合处理器数量比较多的情况。
为了进一步减小缓存目录占用的存储空间,对于处理器数量比较少的情况可以将对处理器ID进行编码得到的结果作为一级索引信息,在查找的时候采用对应的方式进行解码获得处理器ID。
下面对具体如何确定所述目录向量对应的索引信息进行详细说明。
请参考图3,在具体实施过程中,确定所述目录向量对应的索引信息的具体过程为:
S301:判断已建立的目录向量和索引信息的第二对应关系集中是否有所述目录向量、以及与所述目录向量对应的所述索引信息,即判断二级表格中是否已经存储有所述目录向量、及与所述目录向量对应的所述索引信息。
具体的,执行S301时,具体分以下三种情况执行:
第一种情况,所述目录向量的汉明重量小于设定阈值,此时所述目录向量对应的索引信息为一级索引信息,即所述索引信息可直接由所述目录向量和所述目录向量的所述汉明重量编码确定,且不用将所述目录向量存储到二级表格中。此时可判断出已建立的目录向量和索引信息的第二对应关系集中没有所述目录向量、及与所述目录向量对应的索引信息,接下来执行S303。
第二种情况,所述目录向量的汉明重量不小于设定阈值,且所有的已建目录向量均存储在一张二级表格中时,即已建立的目录向量和索引信息的第二对应关系集均包含在该一张二级表格中,那么判断包含所述第二对应关系集的二级表格中是否有所述目录向量、及与所述目录向量对应的所述索引信息。
第三种情况,所述目录向量的汉明重量不小于设定阈值,且存储已建立的目录向量和索引信息的二级表格为多张。由于不同的二级表格存储汉明重量不同的目录向量,为了减少判断过程的计算量,先确定所述目录向量的汉明重量对应的表格即第几张二级表格,所述表格中包含所述第二对应关系集;然后判断从确定出的表格包含的所述第二对应关系集中是否有所述目录向量、及与所述目录向量对应的所述索引信息,其中,所述目录向量的汉明重量在所属的所述表格对应的汉明重量范围内。例如:输入的所述目录向量为5,存储已建立的目录向量和索引信息的二级表格为S1_0~S1_3四张表格,其中二级表格S1_2中存储的是汉明重量为5~7的目录向量,那么第三种情况下,先确定所述目录向量的汉明重量5对应的表格为第三张二级表格S1_2,再从二级表格S1_2中判断是否有所述目录向量、及与所述目录向量对应的索引信息。
第二种情况和第三种情况的区别是:第二种情况将所有的第二对应关系集存储到一张二级表格。由于第二对应关系集中的第二对应关系的数量很庞大,每次查找都要遍历二级表格,造成效率比较低。
第三种情况是将第二对应关系集分成多个子集,每个子集存储到一张二级表格。划分的方式是根据汉明重量进行划分。这样当需要查找时,先根据目录向量的汉明重量确定对应的二级表格,然后在确定的二级表格中进行查找,从而提高了查找效率。
上述S301的第二种情况和第三种情况均存在两种判断结果,一种是:已建立的目录向量和索引信息的第二对应关系集中有所述目录向量、以及与所述目录向量对应的所述索引信息,接下来则执行S302。另一种是:已建立的目录向量和索引信息的第二对应关系集中没有所述目录向量、以及与所述目录向量对应的所述索引信息,那么接下来执行S303。
S302:在已建立的目录向量和索引信息的第二对应关系集中有所述目录向量、以及与所述目录向量对应的所述索引信息时,根据所述对应关系集确定所述目录向量对应的所述索引信息。例如:假设输入的所述目录向量为1000_0010_1001_0000,通过检索缓存目录中已建立的目录向量和索引信息的第二对应关系集,判断出所述第二对应关系集中存在所述目录向量1000_0010_1001_0000、及与该目录向量对应的索引信息11001,那么此时根据所述第二对应关系集确定该目录向量对应的索引信息为11001。
为了记录多少个目标数据被相同的处理器所缓存,即同一个目录向量被多少个目标数据的存储地址所映射,在S302之后,将二级表格中所述目录向量对应的计数器做加一步长值(比如1)操作。相反的,在一目标数据的存储地址映射的目录向量发生变化时,将原来的目录向量对应的计数器做减一步长值(比如1)操作,当计数器的计数为0时,表明该目录向量无效可以替换为其他目录向量。从而避免无效的目录向量占用缓存目录的存储空间。
S303:在已建立的目录向量和索引信息的第二对应关系集中没有所述目录向量、以及与所述目录向量对应的所述索引信息时,根据所述目录向量的汉明重量和所述目录向量,确定所述目录向量对应的所述索引信息。
在具体实施过程中,S303根据所述目录向量的汉明重量和所述目录向量,确定所述目录向量对应的所述索引信息,包含以下两种情况:
第一种情况:若所述目录向量的汉明重量小于设定阈值,对所述目录向量进行编码,并将编码后得到的结果作为所述目录向量对应的所述索引信息。所述编码后得到的结果具体为指向缓存所述目标数据的一个或两个处理器的ID,即得到所述索引信息为一级索引信息。例如:假设输入的所述目录向量为0000_0010_0000_0000,该目录向量的汉明重量为1,设定阈值为3,所述目录向量的汉明重量1小于设定阈值3,那么对所述目录向量0000_0010_0000_0000进行编码,如编码结果为1010表示所述目标数据被第10个处理器所缓存,并将编码后得到的结果1010作为该目录向量0000_0010_0000_0000对应的索引信息。
在第一种情况下,确定出的索引信息为一级索引信息,为了便于在根据目标数据的存储地址获取目录向量时,确定是通过解码索引信息获取,还是通过查找二级表格获取,将用于标识获取所述目录向量的方式的标识信息置于所述索引信息中。即将标志一级索引信息的一级标志P置于所述索引信息中。
例如:一输入的目录向量为0000_0010_0000_1000,该目录向量的汉明重量为2小于设定阈值3,由于缓存目标数据的处理器为第10个处理器和第4个处理器,编码该目录向量得到指向第10个处理器的编码结果为1010、第4个处理器的编码结果为100,那么将指向第10个处理器的编码结果1010作为索引信息的Ptr0,将指向第4个处理器的编码结果100作为索引信息的Ptr1;或将1010作为索引信息的Ptr1,将100作为索引信息的Ptr0,并将标志该索引信息为一级索引信息、并标志通过解码的方式获取所述目录向量的一级标志P添加到所述索引信息中,如:P_1010_100。
第二种情况:若所述目录向量的汉明重量不小于所述设定阈值,根据所述目录向量和所述第二对应关系集,生成所述目录向量对应的所述索引信息。
在所述汉明重量不小于所述设定阈值时,由于根据目录向量和所述第二对应关系生成所述索引信息,所述索引信息指向存储所述目录向量的位置信息,所以此时生成的所述索引信息为二级索引信息,那么在生成所述目录向量对应的索引信息之后,将所述索引信息为二级索引信息的标识信息T添加到所述索引信息中。
在具体实施过程中,索引信息可以是目录向量在表格中所处位置的位置信息或索引号。
请参考图4,所述索引信息的设置具体如下:当索引信息为一级索引信息时用P标志,并且由指针Ptr0和Ptr1分别指向缓存所述目标数据的一个处理器ID;当索引信息为二级索引信息时用T标志,并且由S表示目录向量存储在第几张二级表格中,由C表示目录向量存储在表格内的第几行;由R表示目录向量存储在表格内的第几列(图4中二级索引信息是在多张二级表格的情况下采用位置信息作为索引信息)。
在具体实施过程中,用于存储目录向量的二级表格可以为1张,也可以为多张,每张表格至少包含一行或一列。当二级表格中只包含一行或一列时,二级索引信息中的C或R可以略去,此时二级索引信息中R或C表示目录向量的索引号,如表二和表三所示:
目录向量1 | 目录向量2 | 目录向量3 | …… |
表二
目录向量1 |
目录向量2 |
目录向量3 |
…… |
表三
当然,所述二级表格也可以为n行k列的表格,可存储n*k个目录向量,其中n和k均为大于2的整数,而n和k的具体数值可以由设计者自行设定。比如,针对16bit的目录向量,可建立3*8、16*8、16*16的二级表格。
下面以一张二级表格和多张二级表格存储目录向量的情况下,针对不同的索引信息的处理情况分别进行说明。
一、索引信息是索引号以及采用一张二级表格。
当汉明重量不小于设定阈值的目录向量,及其对应的所有索引信息存储在一张表格中时,将所述目录向量添加到表示目录向量与索引信息之间映射关系的表格中,生成与所述对应关系集中所有的索引号不同的一个目标索引号,将生成的所述目标索引号作为所述索引信息。例如,输入的目录向量为1000_0010_1000_0100,该目录向量的汉明重量4大于设定阈值3,已建立的目录向量与索引信息如表四所示:
索引号 | 目录向量 |
1 | 1000_0010_1001_0000 |
2 | 1000_0010_0000_0100 |
…… | …… |
37 | 1001_0010_0001_0100 |
表四
该表格中没有输入目录向量1000_0010_1000_0100,那么生成与所述对应关系集中即表三中所有的索引号不同的一个目标索引号如38,将生成的所述目标索引号38作为所述索引信息。并且,将该输入目录向量和对应生成的索引号添加的表三中,以更新已建立的目录向量与索引信息之间的关系集,更新后的表三变为表五:
索引号 | 目录向量 |
1 | 1000_0010_1001_0000 |
2 | 1000_0010_0000_0100 |
…… | …… |
37 | 1001_0010_0001_0100 |
38 | 1000_0010_1000_0100 |
表五
二、索引信息是索引号以及采用多张二级表格。
当汉明重量不小于设定阈值的目录向量,及其对应的所有索引信息分别存储在多张表格中时,本申请实施例提供一种建立目录向量和索引信息对应关系的方法:由于缓存目标数据的处理器数量越多出现的概率越低,即汉明重量越大的目录向量出现的概率越低,所以可以单独用一张表格来存储某一个较小汉明重量对应的目录向量,使用另一张表格存储某几个较大汉明重量对应的目录向量。
请参考图5,下面以16bit的目录向量为例,设定阈值为3,进行举例说明二级表格具体的建立方案如下:
1、对于汉明重量m=3的目录向量,出现概率较高,可以使用较多的存储单元来存储,比如单独使用一张表格来进行存储;
2、对于汉明重量m=4的目录向量,出现概率比m=3的情况稍低,但其相对于汉明重量4以上的目录相连出现的概率高很多,也可以单独使用一张表格来进行存储;
3、对于汉明重量m=5~7的目录向量,出现的概率较低,可以共用一张表格来进行存储。
4、对于汉明重量m=8~16的目录向量,出现的概率就更低了,可以共用一个表格来进行存储。
为此,该实例中用二级表格S1_0存储汉明重量为3的目录向量;用二级表格S1_1存储汉明重量为4的目录向量;用二级表格S1_2存储汉明重量为5~7的目录向量;用二级表格S1_3存储汉明重量为8~16的目录向量。
根据上述二级表格的划分,在确定汉明重量大于设定阈值的目录向量对应的索引号时,先确定与所述目录向量的汉明重量相对应的二级表格;然后,将所述目录向量添加到确定的二级表格中;接着,生成与确定的二级表格中包含的索引号不同的一个目标索引号;随后将生成的所述目标索引号和确定的二级表格的标识作为所述索引号。
例如:输入的目录向量为1000_0000_1000_0100,该目录向量的汉明重量3不小于设定阈值3,确定该目录向量对应的索引号时,先确定存储汉明重量为3的二级表格为S1_0;然后将该目录向量存储到二级表格S1_0中;接着生成其对应的目标索引号如39;随后将生成的目标索引号39和确定的二级表格S1_0的标识作为所述索引号。
三、索引信息是位置信息以及采用一张二级表格。
当汉明重量不小于设定阈值的目录向量,及所有的目录向量均存储在一张二级表格中时,根据所述目录向量和所述第二对应关系集,生成所述目录向量对应的所述索引信息,具体为:首先,将所述目录向量添加到二级表格中。由于二级表格中的每个存储单元都对应一个计数器,记录该存储单元中的目录向量被多少个目标数据使用,当该计数器的计数为0时表示该存储单元为空可以添加目录向量,所以可以将所述目录向量添加到所述表格中计数为0的存储单元中。然后,生成用于标识所述目录向量在所述表格中所处位置的位置信息,将所述位置信息作为所述索引信息。所述位置信息由CR组成,其中:C表示表格内的行、R表示表格内的列。
例如,假设输入的所述目录向量为1000_0000_1000_0101,将该目录向量添加到二级表格的第2行第5列中,其中,第2行第5列的计数为0,然后将第2行第5列的位置信息10_0101作为所述索引信息。
四、索引信息是位置信息以及采用多张二级表格。
当汉明重量不小于设定阈值的目录向量,及不同汉明重量的目录向量存储在多张二级表格中时,根据所述目录向量和所述第二对应关系集,生成所述目录向量对应的所述索引信息,具体为:首先,将所述目录向量添加到所述第二对应关系集所在的表格中。同样的,每张二级表格中的每个存储单元都对应一个计数器,记录该存储单元中的目录向量被多少个目标数据使用,当该计数器的计数为0时表示该存储单元为空可以添加目录向量,可将所述目录向量添加到所述表格中计数为0的存储单元中。然后,生成用于标识所述目录向量在所述表格中所处位置的位置信息,将所述位置信息作为所述索引信息。所述位置信息由SCR组成,其中:S表示第几张二级表格、C表示表格内的行、R表示表格内的列。
例如,假设输入的所述目录向量的汉明重量为4,与该汉明重量对应的第二对应关系集在二级表格S1_1中,那么将该目录向量添加到二级表格S1_1的第3行第6列中,其中,第3行第6列的计数为0,然后将标识二级表格S1_1的第3行第6列的位置信息10_11_0100作为所述索引信息。
在具体实施过程中,所述将所述目录向量添加到所述第二对应关系集所在的表格中时,还可以对所述目录向量进行位分段,划分获得至少两个分段位;对所述至少两个分段位中每个分段位进行异或操作,获得所述表格中用于存储所述目录向量的列标识或行标识;将所述目录向量添加到所述列标识或所述行标识对应的行或列中。
例如:某一输入的目录向量为1000_0010_0000_0100,对该目录向量进行4位分段,划分获得4个分段位1000、0010、0000、0100,然后,将每个分段位与分段标准位进行异或操作:1000^0000=1,0010^0000=1,0000^0000=0,0100^0000=1,获得异或操作结果为1101,即所述表格中用于存储所述目录向量的列标识或行标识为1101,将该目录向量添加到所述列标识或所述行标1101对应的行或列中计数为0的存储单元。
在具体实施过程中,若所述目录向量对应的二级表中每个存储单元都已经存储有不同于所述目录向量的已建目录向量,那么此时执行如下操作:
第一步:获取与所述目录向量汉明距离最小的最小目录向量。所述汉明距离为两个向量之间不相同的位的数量。
第二步:将所述目录向量和最小目录向量进行位或操作获得合并目录向量。
第三步:将所述合并目录向量作为所述目录向量,并确定所述索引信息。
请参考图6,例如:某一输入目录向量为1100_0000_0110_0100,与该目录向量汉明距离最小的最近目录向量为1100_0000_0110_0101,那么将1100_0000_0110_0100与1100_0000_0110_0101进行位或操作得到合并目录向量1100_0000_0110_0101,将合并目录向量作为所述目录向量,并确定对应的索引信息。
由于将输入目录向量与最小目录向量合并,即与其汉明距离最小的目录向量合并,可以进一步减少缓存目录对存储空间的占用。并且,在建立缓存目录的二级表格时,对每个存储单元中目录向量的映射次数进行计数,以便于获知存储单元中目录向量是否有效,在目录向量无效的情况下可将该存储单元用于存储新的目录向量,使得缓存目录可以自动更新,丢弃掉无效的目录向量,提高存储单元的利用率。
实施例二
请参考图7,下面以存储目录向量的二级表格集为多张表格为例,对本申请提供的一种建立缓存目录对应关系的方法的完整实施过程进行详细说明。该方法包括以下步骤:
S701:确定被处理器缓存的目标数据在内存中的存储地址,及标识缓存该目标数据的处理器的目录向量。
S702:确定所述目录向量的汉明重量,并判断所述汉明重量是否不小于设定阈值,若否执行S703,若是转至S704。
S703:当所述汉明重量小于设定阈值时,确定所述目标数据对应的索引信息类型为一级索引信息,并对所述目录向量进行编码,获得指向缓存所述目标数据的处理器ID的索引信息,并转向S712。
S704:当所述汉明重量不小于设定阈值时,确定所述索引信息为二级索引信息,并确定所述汉明重量所属的值域对应的二级表格。
S705:根据所述目录向量,确定所述目录向量在确定的二级表格中所处的行或列。
S706:判断确定的二级表格中的行或列中是否存储有所述目录向量,若否执行S707,若是执行S711。
S707:当确定的二级表格中对应的行或列中没存储有所述目录向量,判断确定的二级表格中对应的行或列中是否有空闲的存储空间,若是执行S708,若否执行S709。
S708:在有空闲存储空间时,将所述目录向量写入确定的二级表格中对应的行或列中,并将所述目录向量所在的二级表格、及对应的列和行的标识信息写入索引信息中,并转向S712。
S709:在没有空闲的存储空间时,选择与所述目录向量之间汉明距离最小的最小目录向量,并将所述目录向量与最小目录向量合并。
S710:将合并后的目录向量所在的行和列作为所述目录向量的索引信息,并转向S712。
S711:当确定的二级表格中对应的行或列中有所述目录向量,将所述目录向量所在的行和列写入索引信息,并将所述目录向量对应的计数器加上一步长值,如加1。
S712:建立所述存储地址与所述索引信息之间的第一对应关系,将所述存储地址写入缓存目录的标识存储地址的Tag中,将所述索引信息写入对应的标识索引信息的S0_ptr中。
在具体实施过程中,S701中标识缓存该目标数据的处理器的目录向量由Pbit组成,每一bit表示一个处理器对目标数据的缓存状态,通常用“1”表示目标数据被该位的处理器所缓存,用“0”表示目标数据未被该位的处理器缓存,其中P为分布式共享存储器DSM***中包含的处理器的个数,例如,若DSM***中处理器的个数为8,那么目录向量则由8bit组成。
由于绝大部分目标数据都只被一个或两个处理器所缓存,并且随着缓存目标数据的处理器数量的增加,被缓存的目标数据成指数下降。即目标数据对应的目录向量的汉明重量越大出现的概率越低,所以在建立缓存目录对应关系时,建立两级索引信息,对于汉明重量小于设定阈值的、出现概率较高的目录向量建立一级索引信息,直接指向缓存目标数据的处理器ID,便于根据索引信息快速获取处理器ID。而对于汉明重量不小于设定阈值的、出现概率较低的目录向量建立二级索引信息,指向存储所述目录向量的二级表格,减少缓存目录对存储空间的占用。为此在S701之后执行S702。
S702:确定所述目录向量的汉明重量,并判断所述汉明重量是否不小于设定阈值,若否执行S703,若是转至S704。例如:假设设定阈值为3,若确定出的目录向量为0000_0000_0011,那么确定出目录向量0000_0000_0011的汉明重量为2小于设定阈值3,那么接下来执行S703;相反的,若确定出的目录向量为0000_1001_0011,确定出该目录向量1001_0011的汉明重量4不小于设定阈值3,那么接下来执行S704。
S703:当所述汉明重量小于设定阈值时,确定所述目标数据对应的索引信息类型为一级索引信息,并对所述目录向量进行编码,获得指向缓存所述目标数据的处理器ID的索引信息,并转向S712。具体的,在索引信息中的标志位用P标识一级索引信息。
例如,目录向量0000_0000_0011的汉明重量2小于设定阈值3,确定所述目标数据对应的索引信息为一级索引信息,在标识位用0表示一级索引信息P,对目录向量进行重新编码:由于12bit的目录向量表示处理器有12个,可以用4比特来表示,目录向量0000_0000_0011中第一个处理器和第二处理器缓存了该目标数据,那么对第一个处理器和第二个处理器分别编码位:0001、0010,获得完整的一级索引信息为000010010,然后转向S712建立目标数据的存储地址与索引信息之间的对应关系,将存储地址写入Tag、索引信息写入S0_ptr中。
S704:当所述汉明重量不小于设定阈值时,确定所述索引信息为二级索引信息,并确定所述汉明重量所属的值域对应的二级表格。具体的,在索引信息中的标志位用T标识二级索引信息。
例如:假设缓存目录中建立了4张二级表格S1_0~S1_2,二级表格S1_0存储汉明重量为3的目录向量,S1_1存储汉明重量为4~6的目录向量,S1_2存储汉明重量为7~12的目录向量。若确定的目录向量为0000_1001_0011,其汉明重量为4不小于设定阈值3,确定对应的索引信息为二级索引信息,则在索引信息中的标志位上用T标识,并确定汉明重量4所属的值域对应的二级表格为S1_1,接下来执行S705。
S705:根据所述目录向量,确定所述目录向量在确定的二级表格中所处的行或列。具体的,可对所述目录向量进行分段划分,并对每个分段位与0向量进行或操作从而确定目录向量在确定的二级表格中所处的行或列。
例如:确定的目录向量为0000_1001_0011,对应的二级表格S1_1为7行8列的表格,其中7行可用3bit标识,每一行存储的目录向量分段压缩后得到该行的行标,那么将目录向量分为3段0000、1001、0011,每一段与0向量进行或操作获得011,则确定二级表格S1_1中目录向量所处的行为第011行。同样的道理,若二级表格S1_1中每一列存储的目录向量分段压缩后为该列的列标,那么则根据目录向量确定其在二级表格中所处的列,如二级表格S1_1包含8列可以用3bit来标识,那么可将目录向量分为3段0000、1001、0011,每一段与0向量进行或操作获得011,则确定二级表格S1_1中目录向量所处的列为第0111列。在确定目录向量所在的行或列之后,执行S706。
S706:判断确定的二级表格中的行或列中是否存储有所述目录向量,若否执行S707,若是执行S711。在具体的实施过程中,很多时候不同的目标数据对应的目录向量相同,此时相同的目录向量只用存储一次,用较小数据量的对应索引信息与目标数据的存储地址建立对应关系,避免重复存储数据量较大的目录向量。
例如,假设在二级表格S1_1中所述目录向量0000_1001_0011所对应的第011行中已存储的目录向量分别为:0000_1001_0011、0000_1010_0011、0000_0101_0011、0000_0110_0011、0000_1011_0001、0000_1011_0010、0000_1101_0010、0000_0111_0010,判断确定第1101行中已经存储有目录1001_0011,那么接下来执行S711,反之若第011行中未存储目录向量0000_1001_0011那么执行S707。
S707:当确定的二级表格中对应的行或列中没存储有所述目录向量,判断确定的二级表格中对应的行或列中是否有空闲的存储空间,若是执行S708,若否执行S709。
在具体实施过程中,二级表格的每一个存储空间均对应一个计数器,记录存储在该存储空间中的目录向量被映射的次数,当映射次数为0时表明该目录向量为无效,此时该存储空间可用于存储其他有效的目录向量。为此,判断确定的二级标识中对应的行或列中是否有空闲的存储空间,可判断各个存储单元中是否有计数器计数为0的存储单元,若是则表明有空闲的存储空间,若否则表明没有空闲的存储空间。
S708:在有空闲存储空间时,将所述目录向量写入确定的二级表格中对应的行或列中,并将所述目录向量所在的二级表格、及对应的列和行的标识信息写入索引信息中,并转向S712。
例如:在二级表格S1_1中确定的目录向量0000_1001_0011所对应的第011行中未存储有目录向量0000_1001_0011,且二级表格S1_1的第011行第110列为空闲存储空间,那么将目录向量0000_1001_0011写入第011行第110列,并将存储该目录向量的二级表格、及对应的行列标识写入索引信息中,其中二级表格S1_1的标识为10,那么对应的索引信息则为110011110,其中最高位的1表示该索引信息为二级索引信息T,对应的目录向量需要查询二级表格获得。
S709:在没有空闲的存储空间时,选择与所述目录向量之间汉明距离最小的最小目录向量,并将所述目录向量与最小目录向量合并。具体的,汉明距离为两个目录向量之间不相同的位的位数。所述目录向量与最小目录向量合并具体可以将目录向量与最小目录向量进行位或操作。
例如:在二级表格S1_1中确定的目录向量0000_1001_0011所对应的第011行中未存储有目录向量0000_1001_0011,且二级表格S1_1的第011行的所有存储单元的计数器的计数均不未0,即对应的行没有空闲的存储空间,那么选择与所述目录向量之间汉明距离最小的最小目录向量,假设第011行存储有目录向量0000_1001_0101和0000_1011_0011,其中目录向量0000_1001_0011与目录向量0000_1001_0101之间的汉明距离为2,而与0000_1011_0011之间的汉明距离为1,那么选择0000_1011_0011为最小目录向量,接着将目录向量0000_1001_0011与最小目录向量0000_1011_0011进行位或操作,获得合并后的目录向量0000_1011_0011。随后执行S710。
S710:将合并后的目录向量所在的行和列作为所述目录向量的索引信息,并转向S712。
例如:确定的目录向量0000_1001_0011与最小目录向量0000_1011_0011合并后的目录向量为0000_1011_0011,若合并后的目录向量为所在的列为111、所在的行为011,那么将该行和列信息作为目录向量0000_1001_0011的索引信息,那么得到完整的索引信息为:110011111,最后执行S712:建立目标数据的存储地址与索引信息之间的对应关系,将目标数据的存储地址写入Tag、索引信息写入对应的S0_ptr中。
S711:当确定的二级表格中对应的行或列中有所述目录向量,将所述目录向量所在的行和列写入索引信息,并将所述目录向量对应的计数器加上一步长值,如加1。
例如:在二级表格S1_1中所述目录向量0000_1001_0011所对应的第011行中的第一列已存储目录向量0000_1001_0011,那么将0000_1001_0011所在的行和列写入索引信息中,即将011001写入索引信息中,获得完整的索引信息为110011001,并将所述目录向量0000_1001_0011对应的计数器的计数加1。
需要说明的是:分布式共享存储器DSM***中包含的处理器的个数越多,索引信息与目录向量的数据量差异就越大,节省的存储空间就越多,因此采用该方法建立的缓存目录节约的存储空间就越多。
实施例三
请参考图8,本申请实施例提供一种确定目录向量的方法,该方法包括:
S801:根据索引信息和存储地址的对应关系,确定目标数据在存储器中的存储地址对应的索引信息;
S802:根据索引信息和存储地址的对应关系,确定目标数据在存储器中的存储地址对应的索引信息。
在具体实施过程中,该确定目录向量的方法应用于按照实施例一提供的方法建立的缓存目录中。该缓存目录包含一级表格和二级表格,其中一级表格用于存储目标数据在存储器中存储地址及其对应的索引信息,而二级表格则用于存储标识缓存目标数据的处理器的目录向量。
当一个处理器在需要使用某一数据时,首先确定该目标数据是否被缓存到了高速缓冲存储器中,若缓存到了高速缓冲存储器中则表明该数据命中为目标数据,由于缓存该目标数据的处理器可能不止一个,为了保证缓存一致性,需要无效其他处理器中高速缓冲存储器中的该目标数据,为此需要确定该目标数据的目录向量。在存储索引信息和存储地址的对应关系的缓存目录中,每一个目标数据的在存储器中存储地址对应一个索引信息,根据其对应的索引信息可以确定对应的目录向量,于是执行S801确定目标数据的存储地址对应的索引信息。
在执行完S801确定出对应的索引信息之后,执行S802根据索引信息确定用于标识缓存所述目标数据的处理器的目录向量。具体的,索引信息分为一级索引信息和二级索引信息两类,其中,一级索引信息中包含标识获取目录向量的方式的一级标识信息和指向缓存该目标数据的某一个处理器ID的指针,而二级索引信息中也包含获取目录向量的方式的二级标识信息和存储该目录向量的地址指针。
因此针对不同类型的索引信息,确定用于标识缓存所述目标数据的处理器的目录向量的方法不同,具体如下:
第一种:在索引信息为一级索引信息时,首先根据所述索引信息包含的用于标识获取所述目录向量的方式的标识信息,在确定所述标识信息为一级标识时,对所述索引信息进行解码,并将解码后的结果作为所述目录向量。
例如:请参考图4,索引信息S0_ptr中首位标识为P的表示该索引信息为一级索引信息,首位标识为T的表示该索引信息为二级索引信息,在一级索引信息中Ptr0和Ptr1分别指向缓存所述目标数据的一个处理器ID。假设根据目标数据在存储器中的存储地址确定的索引信息为:0_0011_1000,在索引信息中首位“0”表示标识P、首位“1”表示标识T,那么则根据该索引信息中的首位“0”确定出该索引信息为一级索引信息,即索引信息中的标识信息为一级标识,因此对索引信息进行解码,即对Ptr0和Ptr1“0011_1000”进行解码,由于“0011”由4bit组成表明处理器的个数为16,则对应的目录向量由16bit组成,且“0011”表示的数值为3表明第二个处理器缓存了该目标数据,同理“1000”表示的数值为8表明第八个处理器缓存了该目标数据,综上获得解码结果为“0000_0000_1000_0100”,即该目标数据对应的目录向量则为“0000_0000_1000_0100”。
第二种:在索引信息为二级索引信息时,根据所述索引信息包含的用于标识获取所述目录向量的方式的标识信息,在确定所述标识信息为二级标识时,根据目录向量和索引信息的第二对应关系,确定目标数据在存储器中的存储地址对应的索引信息对应的目录向量。
具体的,在本申请提供缓存目录中存储目录向量的二级表格可以为一张二级表格也可以为多张二级表格,针对存储目录向量的二级表格的数量和形式不同时,确定目录向量的方法不同,下面进行分别说明:
一、目录向量存储在一张二级表格中,且该二级表格只包含一行或一列。
此时,在确定索引信息的标识信息为二级标识时,即该索引信息为索引信息,需要根据索引信息中的地址指针获取目录向量。由于目录向量存储在一张二级表格中,且该二级表格只包含一行或一列,因此二级索引信息中除标识信息以外的其他信息则直接指向二级表格的某一列或某一行,根据二级索引信息中的列指针或行指针可从对应的二级表格中获得目录向量。
例如,假设获得索引信息为1_0100_0000,在索引信息中首位“0”表示标识P、首位“1”表示标识T,那么则根据该索引信息中的首位“1”确定出该索引信息为二级索引信息,即索引信息中的标识信息为二级标识,表明“0100_0000”为二级表格中的列指针或行指针,则对应从二级表格中第64列中获得目录向量,或从二级表格中第64行中获得目录向量,若在二级表格中第64行或第64列中存储的数据为“1000_0000_1000_0101”,那么则确定目标数据对应的目录向量为“1000_0000_1000_0101”。
二、目录向量存储在一张包含n行m列的二级表格中(n和m为大于1的整数)。
此时,二级索引信息中除了标识信息以外,包含的则是指向存储目录向量所在行和列的指针。为此根据二级索引信息中的行和列指针确定目录向量。例如:获得的索引信息为“1_0100_0010”,首位“1”为二级标识,表明索引信息为二级索引信息,对应将“0100_0010”作为存储目录向量的行和列指针从对应的二级表格中获得目录向量。若二级表格为16行16列的表格,那么“0100_0010”表示第4行第2列,那么对应获取二级表格中第4行第2列的数据作为目录向量。
三、目录向量存储在多张包含n行m列的二级表格中(n和m为大于1的整数)。
请参考图4,此时二级索引信息的组成为:由首位标识T表示该索引信息为二级索引信息,由S表示目录向量存储在第几张二级表格中,C表示目录向量存储在对应二级表格内的第几行,R表示目录向量存储在对应表格内的第几列,即由SCR构成存储该目录向量的地址指针。
在二级索引信息由SCR构成时,首先根据确定的索引信息确定存储所述目录向量的表格,其中,所述表格包含目录向量与索引信息的第二对应关系,即索引信息中对应表格的某一行某一列存储了待确定的目录向量;然后根据第二对应关系,确定索引信息中对应的二级表格中对应的行和列存储的目录向量。
例如:获得的索引信息为“1_11_0100_0010”,首位“1”为二级标识,表明索引信息为二级索引信息。若索引信息的预设结构为第9~10位表示S,第5~8位表示C,第1~4位表示R,那么先从第9~10位“11”确定存储目录向量的二级表格为第3张二级表格,再从第5~8位“0100”和第1~4位“0010”确定目录向量存储在第3张二级表格的第4行第2列中,从而对应在第3张二级表格的第4行第2列中获得目录向量。
实施例四
请参考图9,本申请实施例提供一种建立缓存目录的***,该***包括:
确定单元91,用于确定用于标识缓存目标数据的处理器的目录向量对应的索引信息,以及确定所述目标数据在存储器中的存储地址;
关联单元92,用于建立所述索引信息和所述存储地址的第一对应关系。
在具体实施过程中,所述确定单元91,具体用于:
判断已建立的目录向量和索引信息的第二对应关系集中是否有所述目录向量、以及与所述目录向量对应的所述索引信息;若有,根据所述第二对应关系集确定所述目录向量对应的所述索引信息;否则,根据所述目录向量的汉明重量和所述目录向量,确定所述目录向量对应的所述索引信息。
进一步,所述确定单元91还用于:
在所述汉明重量小于设定阈值时,对所述目录向量进行编码,并将编码后得到的结果作为所述目录向量对应的所述索引信息;或在所述汉明重量不小于所述设定阈值时,根据所述目录向量和所述第二对应关系集,生成所述目录向量对应的所述索引信息。
在具体实施过程中,所述确定单元还用于:
根据所述目录向量的汉明重量和所述目录向量,生成所述目录向量对应的索引信息之后,将用于标识获取所述目录向量的方式的标识信息置于所述索引信息中。
进一步,在所述汉明重量不小于所述设定阈值时,所述确定单元91还用于:
将所述目录向量添加到所述第二对应关系集所在的表格中,生成用于标识所述目录向量在所述表格中所处位置的位置信息,将所述位置信息作为所述索引信息;或生成与所述第二对应关系集中所有的索引号不同的一个目标索引号,将生成的所述目标索引号作为所述索引信息。
进一步,所述确定单元91具体用于:
将所述目录向量添加到所述第二对应关系集所在的表格中时,对所述目录向量进行位分段,划分获得至少两个分段位;对所述至少两个分段位中每个分段位进行异或操作,获得所述表格中用于存储所述目录向量的列标识或行标识;将所述目录向量添加到所述列标识或所述行标识对应的行或列中。
进一步,所述确定单元91还用于:
确定所述汉明重量对应的表格,所述表格中包含所述第二对应关系集;判断所述第二对应关系集中是否有所述目录向量对应的所述索引信息;其中,所述目录向量的汉明重量在所属的所述表格对应的汉明重量范围内。
在具体实施过程中,所述确定单元还用于:
在根据所述目录向量和所述第二对应关系集,生成所述目录向量对应的所述索引信息之后,将所述目录向量的汉明重量对应的表格的表格标识添加到所述索引信息中。
在具体实施过程中,所述确定单元还用于:
在所述根据所述目录向量和所述第二对应关系集,生成所述目录向量对应的所述索引信息之后,根据生成的所述索引信息和所述目录向量,更新所述第二对应关系集。
进一步,所述确定单元91还用于:
在检测到缓存所述目标数据的所述处理器发生了变化时,确定所述目录向量对应的所述索引信息;或在检测到所述处理器缓存了所述存储器中的所述目标数据时,确定所述目录向量对应的所述索引信息。
在以上各实施例中,在不冲突的情况下,可以相互组合实施。
前述建立缓存目录的方法中的各种变化方式和具体实例同样适用于本实施例的***,通过前述建立缓存目录的方法的详细描述,本领域技术人员可以清楚的知道本实施例中建立缓存目录***的实施方法,所以为了说明书的简洁,在此不再详述。
实施例五
请参考图10、本申请实施例提供一种确定目录向量的***,该***包括:
第一确定单元101,用于根据索引信息和存储地址的对应关系,确定目标数据在存储器中的存储地址对应的索引信息;
第二确定单元102,用于根据确定的所述索引信息,确定用于标识缓存所述目标数据的处理器的目录向量。
在具体实施过程中,所述第二确定单元102具体用于:
根据所述索引信息包含的用于标识获取所述目录向量的方式的标识信息,在确定所述标识信息为一级标识时,对所述索引信息进行解码,并将解码后的结果作为所述目录向量;或根据所述索引信息包含的用于标识获取所述目录向量的方式的标识信息,在确定所述标识信息为二级标识时,根据目录向量和索引信息的第二对应关系,确定目标数据在存储器中的存储地址对应的索引信息对应的目录向量。
进一步,所述第二确定单元102进一步用于:
确定存储所述目录向量表格,其中,所述表格包含所述第二对应关系;根据所述表格包含的所述第二对应关系,确定所述索引信息对应的所述目录向量。
前述确定目录向量的方法中的各种变化方式和具体实例同样适用于本实施例的***,通过前述确定缓存目录的方法的详细描述,本领域技术人员可以清楚的知道本实施例中确定目录向量的***的实施方法,所以为了说明书的简洁,在此不再详述。
实施例六
请参考图11,本申请实施例提供一种分布式共享存储器***,该***包括:节点控制器(Node Controller)111和目录存储器(Directory Memory)112。具体的,分布式共享存储器***中的节点控制器111用于:确定的目录向量对应的索引信息,其中所述目录向量用于标识缓存目标数据的处理器,以及确定所述目标数据的存储地址;并建立所述索引信息和所述存储地址的第一对应关系。相应的,目录存储器112用于保存所述第一对应关系。
在具体实施过程中,所述目录存储器112还用于:存储目录向量和索引信息的第二对应关系集,以便于节点控制器111通过索引信息将目标数据的存储地址与目录向量关联在一起。
请参考图12,分布式共享存储器***中节点控制器111还与N个处理器连接,其中N为大于1的整数。
在实施中,若节点控制器111和目录存储器112与N个处理器处于同一实体中,则节点控制器111通过数据总线与处理器相连。
若节点控制器111和目录存储器112与N个处理器处于不同的实体中,则节点控制器111通过外部接口与处理器相连,比如USB口等。
其中,N个处理器还与目标数据存储器相连。
具体的,目标数据存储器具体为内存块(Memory Block)或硬盘(Hard DiskDrive),目标数据的存储地址则为在目标数据存储器中的存储地址。***中这N个处理器可以共享目标数据存储器中的数据内容;可将目标数据缓存到各自的高速缓冲存储器中。为了保证缓存一致性(Cache Coherence),节点控制器111需要记录每个处理器对目标数据的缓存情况,并针对每一个目标数据确定对应的索引信息。
较佳的,所述节点控制器111在确定索引信息时,先判断已建立的目录向量和索引信息的第二对应关系集中是否有所述目录向量、以及与所述目录向量对应的所述索引信息;若有,根据所述第二对应关系集确定所述目录向量对应的所述索引信息;否则,根据所述目录向量的汉明重量和所述目录向量,确定所述目录向量对应的所述索引信息。
在判断出已建立的目录向量和索引信息的第二对应关系集中没目录向量及其对应的索引信息时,节点控制器111还用于:在所述汉明重量小于设定阈值时,对所述目录向量进行编码,并将编码后得到的结果作为所述目录向量对应的所述索引信息;或在所述汉明重量不小于所述设定阈值时,根据所述目录向量和所述第二对应关系集,生成所述目录向量对应的所述索引信息。
具体的,所述节点控制器111进一步用于:在根据所述目录向量的汉明重量和所述目录向量,生成所述目录向量对应的索引信息之后,将用于标识获取所述目录向量的方式的标识信息置于所述索引信息中。
在具体实施过程中,在所述汉明重量不小于所述设定阈值时,所述节点控制器进一步用于:将所述目录向量添加到所述目录存储器中存储所述第二对应关系集的表格中,并生成用于标识所述目录向量在所述表格中所处位置的位置信息,将所述位置信息作为所述索引信息;或生成与所述第二对应关系集中所有的索引号不同的一个目标索引号,将生成的所述目标索引号作为所述索引信息。
较佳的,在将所述目录向量添加到所述目录存储器中存储所述第二对应关系集的表格中时,节点控制器111具体用于:先对所述目录向量进行位分段,划分获得至少两个分段位;再对所述至少两个分段位中每个分段位进行异或操作,获得所述表格中用于存储所述目录向量的列标识或行标识;最后将所述目录向量添加到所述列标识或所述行标识对应的行或列中。
在具体实施过程中,在判断已建立的目录向量和索引信息的第二对应关系集中是否有所述目录向量、以及与所述目录向量对应的所述索引信息时,所述节点控制器111具体用于:先确定所述汉明重量对应的表格,所述表格中包含所述第二对应关系集;然后判断所述第二对应关系集中是否有所述目录向量对应的所述索引信息;其中,所述目录向量的汉明重量在所属的所述表格对应的汉明重量范围内。
较佳的,为了进一步完善索引信息,所述节点控制器111进一步用于:在根据所述目录向量和所述第二对应关系集,生成所述目录向量对应的所述索引信息之后,将所述目录向量的汉明重量对应的表格的表格标识添加到所述索引信息中。
较佳的,为了保证缓存目录的准确性所述节点控制器111具体还用于:在根据所述目录向量和所述第二对应关系集,生成所述目录向量对应的所述索引信息之后,根据生成的所述索引信息和所述目录向量,更新所述目录存储器中保存的所述第二对应关系集。
在具体实施过程中,所述节点控制器111还用于:在检测到缓存所述目标数据的所述处理器发生了变化时,确定所述目录向量对应的所述索引信息;或在检测到所述处理器缓存了所述存储器中的所述目标数据时,确定所述目录向量对应的所述索引信息。
在处理器需要对目标数据进行读或写操作时,为了保证缓存一致性需要确定目标数据的目录向量,因此所述节点控制器111还用于:根据索引信息和存储地址的对应关系,确定目标数据在存储器中的存储地址对应的索引信息;根据确定的所述索引信息,确定用于标识缓存所述目标数据的处理器的目录向量。
进一步的,所述节点控制器111具体用于:根据所述索引信息包含的用于标识获取所述目录向量的方式的标识信息,在确定所述标识信息为一级标识时,对所述索引信息进行解码,并将解码后的结果作为所述目录向量;或根据所述索引信息包含的用于标识获取所述目录向量的方式的标识信息,在确定所述标识信息为二级标识时,根据目录向量和索引信息的第二对应关系,确定目标数据在存储器中的存储地址对应的索引信息对应的目录向量。
进一步的,所述节点控制器111具体用于:在根据目录向量和索引信息的第二对应关系确定目录向量时,先确定存储所述目录向量表格,其中,所述表格包含所述第二对应关系;然后根据所述表格包含的所述第二对应关系,确定所述索引信息对应的所述目录向量。
本发明实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
在建立缓存目录时,针对标识缓存目标数据的处理器的目录向量,通过确定获取该目录向量的索引信息,并建立确定的索引信息与存储该目标数据的存储地址之间的第一对应关系,即通过索引信息表示目标数据的存储地址与目录向量之间的对应关系,为此在有另一目标数据对应相同的目录向量时,只需要存储该目标数据的存储地址及对应目录向量的索引信息即可,不需要在重复存储目录向量,避免重复存储相同目录向量,从而减小缓存目录占用的存储空间,进而解决了现有技术中缓存目录占用存储空间过大的技术问题,减小缓存目录的空间占用率。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (39)
1.一种建立缓存目录的方法,其特征在于,包括:
确定用于标识缓存目标数据的处理器的目录向量对应的索引信息,以及确定所述目标数据在存储器中的存储地址;所述目录向量由指向各个处理器的位组成;
建立所述索引信息和所述存储地址的第一对应关系。
2.如权利要求1所述的方法,其特征在于,所述确定用于标识缓存目标数据的处理器的目录向量对应的索引信息,包括:
判断已建立的目录向量和索引信息的第二对应关系集中是否有所述目录向量、以及与所述目录向量对应的所述索引信息;如果有,则根据所述第二对应关系集确定所述目录向量对应的所述索引信息;否则,根据所述目录向量的汉明重量和所述目录向量,确定所述目录向量对应的所述索引信息。
3.如权利要求2所述的方法,其特征在于,所述根据所述目录向量的汉明重量和所述目录向量,确定所述目录向量对应的所述索引信息,具体为:
若所述汉明重量小于设定阈值,对所述目录向量进行编码,并将编码后得到的结果作为所述目录向量对应的所述索引信息;或
若所述汉明重量不小于所述设定阈值,根据所述目录向量和所述第二对应关系集,生成所述目录向量对应的所述索引信息。
4.如权利要求3所述的方法,其特征在于,根据所述目录向量的汉明重量和所述目录向量,生成所述目录向量对应的索引信息之后,所述方法还包括:
将用于标识获取所述目录向量的方式的标识信息置于所述索引信息中。
5.如权利要求3所述的方法,其特征在于,所述根据所述目录向量和所述第二对应关系集,生成所述目录向量的所述索引信息,具体为:
将所述目录向量添加到所述第二对应关系集所在的表格中,生成用于标识所述目录向量在所述表格中所处位置的位置信息,将所述位置信息作为所述索引信息;或
生成与所述第二对应关系集中所有的索引号不同的一个目标索引号,将生成的所述目标索引号作为所述索引信息。
6.如权利要求5所述的方法,其特征在于,所述将所述目录向量添加到所述第二对应关系集所在的表格中,包括:
对所述目录向量进行位分段,划分获得至少两个分段位;
对所述至少两个分段位中每个分段位进行异或操作,获得所述表格中用于存储所述目录向量的列标识或行标识;
将所述目录向量添加到所述列标识或所述行标识对应的行或列中。
7.如权利要求3~6中任一权项所述的方法,其特征在于,所述判断已建立的目录向量和索引信息的第二对应关系集中是否有所述目录向量、以及与所述目录向量对应的所述索引信息,具体包括:
确定所述汉明重量对应的表格,所述表格中包含所述第二对应关系集;
判断所述第二对应关系集中是否有所述目录向量对应的所述索引信息;
其中,所述目录向量的汉明重量在所属的所述表格对应的汉明重量范围内。
8.如权利要求7所述的方法,其特征在于,在根据所述目录向量和所述第二对应关系集,生成所述目录向量对应的所述索引信息之后,还包括:
将所述目录向量的汉明重量对应的表格的表格标识添加到所述索引信息中。
9.如权利要求7所述的方法,其特征在于,在所述根据所述目录向量和所述第二对应关系集,生成所述目录向量对应的所述索引信息之后,所述方法还包括:
根据生成的所述索引信息和所述目录向量,更新所述第二对应关系集。
10.如权利要求1~6中任一权项所述的方法,其特征在于,所述确定用于标识缓存目标数据的处理器的目录向量对应的索引信息,具体为:
在检测到缓存所述目标数据的所述处理器发生了变化时,确定所述目录向量对应的所述索引信息;或
在检测到所述处理器缓存了所述存储器中的所述目标数据时,确定所述目录向量对应的所述索引信息。
11.一种确定目录向量的方法,其特征在于,包括:
根据索引信息和存储地址的第一对应关系,确定目标数据在存储器中的存储地址对应的索引信息;
根据确定的所述索引信息,确定用于标识缓存所述目标数据的处理器的目录向量;所述目录向量由指向各个处理器的位组成。
12.如权利要求11所述的方法,其特征在于,所述根据确定的所述索引信息,确定用于标识缓存所述目标数据的处理器的目录向量,包括:
根据所述索引信息包含的用于标识获取所述目录向量的方式的标识信息,在确定所述标识信息为一级标识时,对所述索引信息进行解码,并将解码后的结果作为所述目录向量;或
根据所述索引信息包含的用于标识获取所述目录向量的方式的标识信息,在确定所述标识信息为二级标识时,根据目录向量和索引信息的第二对应关系,确定目标数据在存储器中的存储地址对应的索引信息对应的目录向量。
13.如权利要求12所述的方法,其特征在于,所述根据目录向量和索引信息的第二对应关系,确定目标数据在存储器中的存储地址对应的索引信息对应的目录向量,具体包括:
确定存储所述目录向量表格,其中,所述表格包含所述第二对应关系;
根据所述表格包含的所述第二对应关系,确定所述索引信息对应的所述目录向量。
14.一种建立缓存目录的***,其特征在于,包括:
确定单元,用于确定用于标识缓存目标数据的处理器的目录向量对应的索引信息,以及确定所述目标数据在存储器中的存储地址;所述目录向量由指向各个处理器的位组成;
关联单元,用于建立所述索引信息和所述存储地址的第一对应关系。
15.如权利要求14所述的***,其特征在于,所述确定单元具体用于:
判断已建立的目录向量和索引信息的第二对应关系集中是否有所述目录向量、以及与所述目录向量对应的所述索引信息;若有,根据所述第二对应关系集确定所述目录向量对应的所述索引信息;否则,根据所述目录向量的汉明重量和所述目录向量,确定所述目录向量对应的所述索引信息。
16.如权利要求15所述的***,其特征在于,所述确定单元还用于:
在所述汉明重量小于设定阈值时,对所述目录向量进行编码,并将编码后得到的结果作为所述目录向量对应的所述索引信息;或在所述汉明重量不小于所述设定阈值时,根据所述目录向量和所述第二对应关系集,生成所述目录向量对应的所述索引信息。
17.如权利要求16所述的***,其特征在于,所述确定单元还用于:
在根据所述目录向量的汉明重量和所述目录向量,生成所述目录向量对应的索引信息之后,将用于标识获取所述目录向量的方式的标识信息置于所述索引信息中。
18.如权利要求16所述的***,其特征在于,所述确定单元还用于:
在所述汉明重量不小于所述设定阈值时,将所述目录向量添加到所述第二对应关系集所在的表格中,生成用于标识所述目录向量在所述表格中所处位置的位置信息,将所述位置信息作为所述索引信息;或生成与所述第二对应关系集中所有的索引号不同的一个目标索引号,将生成的所述目标索引号作为所述索引信息。
19.如权利要求18所述的***,其特征在于,所述确定单元具体用于:
将所述目录向量添加到所述第二对应关系集所在的表格中时,对所述目录向量进行位分段,划分获得至少两个分段位;对所述至少两个分段位中每个分段位进行异或操作,获得所述表格中用于存储所述目录向量的列标识或行标识;将所述目录向量添加到所述列标识或所述行标识对应的行或列中。
20.如权利要求16~19中任一权项所述的***,其特征在于,所述确定单元还用于:
确定所述汉明重量对应的表格,所述表格中包含所述第二对应关系集;判断所述第二对应关系集中是否有所述目录向量对应的所述索引信息;其中,所述目录向量的汉明重量在所属的所述表格对应的汉明重量范围内。
21.如权利要求20所述的***,其特征在于,所述确定单元还用于:
在根据所述目录向量和所述第二对应关系集,生成所述目录向量对应的所述索引信息之后,将所述目录向量的汉明重量对应的表格的表格标识添加到所述索引信息中。
22.如权利要求20所述的***,其特征在于,所述确定单元还用于:
在所述根据所述目录向量和所述第二对应关系集,生成所述目录向量对应的所述索引信息之后,根据生成的所述索引信息和所述目录向量,更新所述第二对应关系集。
23.如权利要求14~19中任一权项所述的***,其特征在于,所述确定单元还用于:
在检测到缓存所述目标数据的所述处理器发生了变化时,确定所述目录向量对应的所述索引信息;或在检测到所述处理器缓存了所述存储器中的所述目标数据时,确定所述目录向量对应的所述索引信息。
24.一种确定目录向量的***,其特征在于,包括:
第一确定单元,用于根据索引信息和存储地址的对应关系,确定目标数据在存储器中的存储地址对应的索引信息;
第二确定单元,用于根据确定的所述索引信息,确定用于标识缓存所述目标数据的处理器的目录向量;所述目录向量由指向各个处理器的位组成。
25.如权利要求24所述的***,其特征在于,所述第二确定单元具体用于:
根据所述索引信息包含的用于标识获取所述目录向量的方式的标识信息,在确定所述标识信息为一级标识时,对所述索引信息进行解码,并将解码后的结果作为所述目录向量;或根据所述索引信息包含的用于标识获取所述目录向量的方式的标识信息,在确定所述标识信息为二级标识时,根据目录向量和索引信息的第二对应关系,确定目标数据在存储器中的存储地址对应的索引信息对应的目录向量。
26.如权利要求25所述的***,其特征在于,所述第二确定单元还用于:
确定存储所述目录向量表格,其中,所述表格包含所述第二对应关系;根据所述表格包含的所述第二对应关系,确定所述索引信息对应的所述目录向量。
27.一种分布式共享存储器***,其特征在于,包括:
节点控制器,用于确定的目录向量对应的索引信息,其中所述目录向量由指向各个处理器的位组成,所述目录向量用于标识缓存目标数据的处理器,以及用于确定所述目标数据的存储地址;并建立所述索引信息和所述存储地址的第一对应关系;
目录存储器,用于保存所述第一对应关系。
28.如权利要求27所述的***,其特征在于,所述目录存储器还用于:
存储目录向量和索引信息的第二对应关系集;
所述节点控制器具体用于:
判断所述目录存储器中已存储的目录向量和索引信息的第二对应关系集中是否有所述目录向量、以及与所述目录向量对应的所述索引信息;若有,根据所述第二对应关系集确定所述目录向量对应的所述索引信息;否则,根据所述目录向量的汉明重量和所述目录向量,确定所述目录向量对应的所述索引信息。
29.如权利要求28所述的***,其特征在于,所述节点控制器还用于:
在所述汉明重量小于设定阈值时,对所述目录向量进行编码,并将编码后得到的结果作为所述目录向量对应的所述索引信息;或在所述汉明重量不小于所述设定阈值时,根据所述目录向量和所述第二对应关系集,生成所述目录向量对应的所述索引信息。
30.如权利要求29所述的***,其特征在于,所述节点控制器还用于:
在根据所述目录向量的汉明重量和所述目录向量,生成所述目录向量对应的索引信息之后,将用于标识获取所述目录向量的方式的标识信息置于所述索引信息中。
31.如权利要求29所述的***,其特征在于,所述节点控制器还用于:
在所述汉明重量不小于所述设定阈值时,将所述目录向量添加到所述目录存储器中存储所述第二对应关系集的表格中,并生成用于标识所述目录向量在所述表格中所处位置的位置信息,将所述位置信息作为所述索引信息;或生成与所述第二对应关系集中所有的索引号不同的一个目标索引号,将生成的所述目标索引号作为所述索引信息。
32.如权利要求31所述的***,其特征在于,所述节点控制器具体用于:
将所述目录向量添加到所述目录存储器中存储所述第二对应关系集的表格中时,对所述目录向量进行位分段,划分获得至少两个分段位;对所述至少两个分段位中每个分段位进行异或操作,获得所述表格中用于存储所述目录向量的列标识或行标识;将所述目录向量添加到所述列标识或所述行标识对应的行或列中。
33.如权利要求29~32中任一权项所述的***,其特征在于,所述节点控制器具体用于:
在判断已建立的目录向量和索引信息的第二对应关系集中是否有所述目录向量、以及与所述目录向量对应的所述索引信息时,确定所述汉明重量对应的表格,所述表格中包含所述第二对应关系集;判断所述第二对应关系集中是否有所述目录向量对应的所述索引信息;其中,所述目录向量的汉明重量在所属的所述表格对应的汉明重量范围内。
34.如权利要求33所述的***,其特征在于,所述节点控制器还用于:
在根据所述目录向量和所述第二对应关系集,生成所述目录向量对应的所述索引信息之后,将所述目录向量的汉明重量对应的表格的表格标识添加到所述索引信息中。
35.如权利要求33所述的***,其特征在于,所述节点控制器还用于:
在根据所述目录向量和所述第二对应关系集,生成所述目录向量对应的所述索引信息之后,根据生成的所述索引信息和所述目录向量,更新所述目录存储器中保存的所述第二对应关系集。
36.如权利要求27~32中任一权项所述的***,其特征在于,所述节点控制器还用于:
在检测到缓存所述目标数据的所述处理器发生了变化时,确定所述目录向量对应的所述索引信息;或在检测到所述处理器缓存了所述存储器中的所述目标数据时,确定所述目录向量对应的所述索引信息。
37.如权利要求36所述的***,其特征在于,所述节点控制器还用于:
根据索引信息和存储地址的对应关系,确定目标数据在存储器中的存储地址对应的索引信息;根据确定的所述索引信息,确定用于标识缓存所述目标数据的处理器的目录向量。
38.如权利要求37所述的***,其特征在于,所述节点控制器具体用于:
根据所述索引信息包含的用于标识获取所述目录向量的方式的标识信息,在确定所述标识信息为一级标识时,对所述索引信息进行解码,并将解码后的结果作为所述目录向量;或根据所述索引信息包含的用于标识获取所述目录向量的方式的标识信息,在确定所述标识信息为二级标识时,根据目录向量和索引信息的第二对应关系,确定目标数据在存储器中的存储地址对应的索引信息对应的目录向量。
39.如权利要求38所述的***,其特征在于,所述节点控制器具体用于:
确定存储所述目录向量表格,其中,所述表格包含所述第二对应关系;根据所述表格包含的所述第二对应关系,确定所述索引信息对应的所述目录向量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310377351.XA CN103455434B (zh) | 2013-08-26 | 2013-08-26 | 一种建立缓存目录的方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310377351.XA CN103455434B (zh) | 2013-08-26 | 2013-08-26 | 一种建立缓存目录的方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103455434A CN103455434A (zh) | 2013-12-18 |
CN103455434B true CN103455434B (zh) | 2016-12-28 |
Family
ID=49737829
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310377351.XA Active CN103455434B (zh) | 2013-08-26 | 2013-08-26 | 一种建立缓存目录的方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103455434B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016049807A1 (zh) | 2014-09-29 | 2016-04-07 | 华为技术有限公司 | 多核处理器***的缓存目录处理方法和目录控制器 |
CN104951516A (zh) * | 2015-05-29 | 2015-09-30 | 小米科技有限责任公司 | 存储网页文件的方法及装置 |
CN111078153B (zh) * | 2019-12-20 | 2023-08-01 | 同方知网数字出版技术股份有限公司 | 一种基于文件的分布式存储方法 |
CN115954024B (zh) * | 2023-03-14 | 2023-06-02 | 长鑫存储技术有限公司 | 一种解码器及其解码方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1659525A (zh) * | 2002-06-04 | 2005-08-24 | 杉桥技术公司 | 简化了缓存替换策略的实现的多线程缓存方法和装置 |
CN1790296A (zh) * | 2004-11-08 | 2006-06-21 | 国际商业机器公司 | 缩短与高速缓存相关性目录遗漏关联的延迟的方法和*** |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201015321A (en) * | 2008-09-25 | 2010-04-16 | Panasonic Corp | Buffer memory device, memory system and data trnsfer method |
-
2013
- 2013-08-26 CN CN201310377351.XA patent/CN103455434B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1659525A (zh) * | 2002-06-04 | 2005-08-24 | 杉桥技术公司 | 简化了缓存替换策略的实现的多线程缓存方法和装置 |
CN1790296A (zh) * | 2004-11-08 | 2006-06-21 | 国际商业机器公司 | 缩短与高速缓存相关性目录遗漏关联的延迟的方法和*** |
Also Published As
Publication number | Publication date |
---|---|
CN103455434A (zh) | 2013-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103577440B (zh) | 一种非关系型数据库中的数据处理方法和装置 | |
CN103810237B (zh) | 数据管理方法和*** | |
CN103455434B (zh) | 一种建立缓存目录的方法及*** | |
CN103488709B (zh) | 一种索引建立方法及***、检索方法及*** | |
US9418019B2 (en) | Cache replacement policy methods and systems | |
CN110399104A (zh) | 数据存储方法、数据存储装置、电子设备、存储介质 | |
CN107209714A (zh) | 分布式存储***及分布式存储***的控制方法 | |
WO2013152678A1 (zh) | 元数据查询方法和装置 | |
US20190057032A1 (en) | Cache Coherence Management Method and Node Controller | |
CN110795363B (zh) | 一种存储介质的热页预测方法和页面调度方法 | |
CN109241023A (zh) | 分布式存储***数据存储方法、装置、***及存储介质 | |
CN104252457B (zh) | 一种用于对数据集合进行管理的方法与设备 | |
CN110532200B (zh) | 一种基于混合内存架构的内存*** | |
CN110297787A (zh) | I/o设备访问内存的方法、装置及设备 | |
CN106802772A (zh) | 数据回收的方法、装置及固态硬盘 | |
GB2581938A (en) | Configuration state registers grouped based on functional affinity | |
CN105359142A (zh) | 哈希连接方法、装置和数据库管理*** | |
CN114281989A (zh) | 基于文本相似度的数据去重方法、装置及存储介质和服务器 | |
CN103021016B (zh) | 一种渲染过程中海量三维地理信息数据处理方法 | |
CN109165096A (zh) | web集群的缓存利用***及方法 | |
CN115438081A (zh) | 一种海量船舶位置点云多级聚合与实时更新方法 | |
CN106503260A (zh) | 一种提高数据库的有效存储空间的方法和装置 | |
CN106547484A (zh) | 一种基于raid5的实现内存数据可靠性方法及*** | |
CN104050189B (zh) | 页面共享处理方法及装置 | |
CN104516823B (zh) | 一种数据存储方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |