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可以节约大量的存储空间,特别是在数据量较大时。
3.应用场景
场景1:在链表存储设计中,我们常常需要存储空闲地址,如果数据存储的深度为2K,采用传统存储方式需要2kx11bit的存储去实现。
场景2: 存储不同pkt_id/client_id/func_id是否发生过各类事件,例如1024个func_id 是否发生过错误。
作者:IC小鸽
文章来源:IC的世界
推荐阅读
- Chisel相较于verilog有哪些优势?有哪些开源chisel项目?
- 标准延迟文件和时序报告中的delay value的一致性研究
- 老李带你看菜谱— stx_cookbook 之 加法器 (二)
- 老李带你看菜谱— stx_cookbook 之 加法器 (一)
- 数字IC设计中的update io clock latency
更多IC设计干货请关注IC设计专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。