[发明专利]基于散列链表的内容寻址方法及相应的存储器电路有效

专利信息
申请号: 201210579916.8 申请日: 2012-12-27
公开(公告)号: CN103064948A 公开(公告)日: 2013-04-24
发明(设计)人: 田泽;张荣华;张玲;刘航 申请(专利权)人: 中国航空工业集团公司第六三一研究所
主分类号: G06F17/30 分类号: G06F17/30;G06F12/02
代理公司: 西安智邦专利商标代理有限公司 61211 代理人: 王少文
地址: 710068 *** 国省代码: 陕西;61
权利要求书: 查看更多 说明书: 查看更多
摘要: 发明涉及一种基于散列链表的内容寻址方法及相应的存储器电路,本发明包括存储器单元、控制单元、寄存器接口和数据检索比较接口,采用散列、链表、多字并行存储和比较等方法,解决了现有技术采用专门工艺或器件实现内容寻址存储器的使用限制,以及传统设计方法内容寻址检索速度慢,消耗资源多,不利于内容寻址检索深度和宽度扩展等问题,具有通用性强、检索速度快、硬件利用率高、易于扩展等特点,使用不受流片工艺和FPGA器件所限制。
搜索关键词: 基于 散列链表 内容 寻址 方法 相应 存储器 电路
【主权项】:
一种基于链接散列的内容寻址方法,其特征在于:包括以下步骤:步骤1、用户定义检索关键字和检索深度,其中检索关键字位宽为M,检索关键字关联内容位宽为C,检索深度为2S;步骤2、取检索关键字最高位作为分支BR,从次高位开始依次取3位作为迷你关键字MKEY,检索关键字剩余位作为散列地址HASHADD;步骤3、定义检索散列函数,将检索关键字作为散列函数的输入,散列地址HASHADD作为散列函数的结果;步骤4、构造链表存储器,在链表存储器中动态创建散列函数结果冲突的检索数据链表,其中冲突数目大于1且小于等于4时,创建一级链表存储器,冲突数目大于4时,创建二级链表存储器;链表存储器地址宽度为S/2,存储器数据宽度为W=4×(关键字有效位+迷你关键字+偏移地址),存储4个检索关键字对应的关键字有效位#_VAL、迷你关键字#_MKEY、偏移地址#_OFFSET,所述#_VAL代表3_VAL,2_VAL,1_VAL,0_VAL;所述#_MKEY代表3_MKEY,2_MKEY,1_MKEY,0_MKEY;所述#_OFFSET代表3_OFFSET,2_OFFSET,1_OFFSET,0_OFFSET;当3_VAL为1时,链表存储器3_VAL、3_MKEY、3_OFFSET字段为一个有效的数据项对应的检索信息;当3_VAL为0且3_MKEY为111时,字段3_OFFSET为一个二级链表指针;当3_VAL为0且3_MKEY为100时,字段3_OFFSET为下一个空闲链表指针;当3_VAL为0且3_MKEY为其他值时,3_MKEY、3_OFFSET字段为无效的数据项;步骤5、构造链表存储器管理电路,包括位宽为S/2的空闲链表头指针、位宽为S/2的空闲链表尾指针、位宽为S/2+1的空闲链表计数器、位宽为S/2+1的链表使用计数器;步骤5.1,内容寻址存储器复位后,空闲链表头指针为0,空闲链表尾指针为2S/2‑1,空闲链表计数为2S/2,链表初始化状态信号为0,链表使用计数器为2;步骤5.2,当内容寻址存储器新增数据项的散列结果冲突,且为第2个或第5个冲突数据项,将动态分配空闲链表头指针作为新的散列冲突数据项存储位置;当链表使用计数器小于2S/2时,空闲链表计数器减1,空闲链表头指针加1,链表使用计数器加1;当链表使用计数器大于等于2S/2时,首先按照空闲头指针 访问链表存储器,将获取的下一个空闲链表指针作为新的空闲链表头指针,然后空闲链表计数器减1,链表使用计数器不变;步骤5.3,当内容寻址存储器删除某数据项时,如果删除前该地址散列结果冲突数目为2或5,要求对删除后的散列冲突数据项排列进行移位,释放一个链表存储器地址。并将释放的链表存储器地址作为下一个空闲链表指针写到空闲链表尾指针指向的链表存储器地址,然后将释放的链表存储器地址作为新的空闲链表尾指针,然后空闲链表计数器加1,链表使用计数器不变;步骤6、构造一个散列存储器,散列存储器地址宽度为(M‑4),数据宽度=2×(迷你关键字位宽+检索关键字对应的偏移地址位宽+链表存储器地址位宽+链表指针有效位);存储器数据内容包括位数相等的高字段和低字段,其中高字段对应分支BR=1的数据、低字段对应分支BR=0的数据,字段数据依次为链表指针有效位EXL,一级链表指针LINK,关键字有效位VAL,迷你关键字MKEY,偏移地址OFFSET;步骤7,构造一个内容存储器,内容存储器地址宽度S,数据宽度为C;步骤8,构造一个插入检索数据计数器,位宽为S,计数器范围0~2S,复位初始值为0;步骤9,获取与检索关键字相关的所有数据项:步骤9.1,将散列函数结果作为散列存储器地址,执行存储器读操作,获取散列存储器存储数据;步骤9.2,根据检索关键字的分支BR的值,相应选择散列存储器存储数据的高字段或低字段进行判断,具体如下:如果该字段中链表指针有效位EXL为1,按照获取散列存储器存储的一级链表指针访问一级链表存储器,执行步骤9.3;如果该字段中链表指针有效位EXL为0,执行步骤10;步骤9.3,执行一级链表存储器读操作,如果一级链表存储数据字段3_VAL为0且3_MKEY为111,根据字段3_OFFSET对应的二级链表指针访问二级链表存储器,执行步骤9.4,否则执行步骤10;步骤9.4,执行二级链表存储器读操作,获取二级链表存储器检索数据;步骤10,将获取的与检索关键字相关的数据项进行排列和比较:步骤10.1,如果没有一级链表指针,散列存储器的分支作为第1个排列数 据,第2~8个排列数据以无效数据代替;如果没有二级链表指针,散列存储器的分支作为第1个排列数据,一级链表存储器第0、1、2个数据项分别作为第2、3、4个排列数据,第5~8个排列数据以无效数据代替;如果有一级链表指针和二级链表指针,散列存储器的分支作为第1个排列数据,一级链表存储器第0、1、2个数据项分别作为第2、3、4个排列数据,二级链表存储器第0、1、2、3个数据项分别作为第5、6、7、8个排列数据,第1个排列数据位于最左边,第8个排列数据位于最右边;步骤10.2,将检索关键字的迷你关键字段与上述8个排列数据中的迷你关键字段进行比较,如果上述8个排列数据中的迷你关键字段有且只有一个与检索迷你关键字段完全相同,则显示匹配成功,执行步骤10.3,否则,显示匹配失败;步骤10.3,将匹配成功的排列数据中的偏移地址OFFSET作为内容存储器地址,访问内容存储器,输出内容存储器的数据。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国航空工业集团公司第六三一研究所,未经中国航空工业集团公司第六三一研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/patent/201210579916.8/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top