棋子 · 2月5日

IC设计:ram的应用-使用bitmap实现数据压缩

1.Bitmap技术说明

Bitmap是一种通过位映射来高效存储和查询数据的技术,它在处理大规模数据集时能够有效地节省内存空间。Bitmap技术特别适用于需要对大量数据进行存在性检查的场景,比如用户签到、页面访问等,它可以显著节省内存空间。

例如,如果要记录10亿用户是否签到,如果使用传统的方法,如用一个长度为10亿的数组来存储用户的ID和签到状态,将会占用大量的内存。但如果采用Bitmap,则可以将这10亿个状态压缩存储到相对较少的内存中。假设每个用户的唯一标识符(如uid)是int64类型,那么传统方法可能需要大约8GB的内存,而Bitmap只需要约125MB的内存。

2.使用bitmap实现数据压缩

如果最大有2K个数据,数据是0到2047,如果使用fifo存储,每个数据需要11bit,那么fifo的深度为2K,总计需要11x2K=22Kbit。

如果使用bitmap的方式进行数据压缩,我们只需要64x32bit就能实现。Bitmap是如何实现数据压缩的呢?我们可以采用64x32bit的ram实现,ram中的每个bit表示一个数据。Bit位为1表示存在此数据,bit位为0表示不存在。

请看下图,采用4x8bit的ram表示32个数据,分别是0~31。图中行号为1,列号为1,的bit位代表数字0。图中行号为3,列号为2的bit位代表数字14。

由此可见,使用bitmap可以节约大量的存储空间,特别是在数据量较大时。

image.png

3.应用场景

场景1:在链表存储设计中,我们常常需要存储空闲地址,如果数据存储的深度为2K,采用传统存储方式需要2kx11bit的存储去实现。

场景2: 存储不同pkt_id/client_id/func_id是否发生过各类事件,例如1024个func_id 是否发生过错误。

作者:IC小鸽
文章来源:IC的世界

推荐阅读

更多IC设计干货请关注IC设计专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。
推荐阅读
关注数
10965
内容数
1214
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息