链表的硬件实现
IC小狮子 IC小狮子 4月14日
知乎搜索链表,基本上跳出来的全是C或者C++中软件行为方式的链表描述。链表在动态缓存管理中是应用得非常广泛的,其让多个队列共享一片资源大的缓存,能够避免队列流量不均导致的缓存的膨胀。最简单的fifo结构的缓存,基于每个队列用fifo缓存,那么最大的量就是队列的个数乘以最大突发量队列的fifo的缓存大小。若用链表结构的共享缓存则可以减小总的缓存空间,极大的降低面积,节约成本。
先来说说链表由哪些部分组成:1、bitmap式空闲地址管理模块(提供申请地址和回收地址功能);2、头尾指针更新管理模块 。缓存部分则根据需求设计:一般共享缓存的资源大,可以采用2片SP替换一片TP的mem,pingpong操作,能够节省面积。
*********************分割线*******************************
C中的链表如下图所示:
实际硬件实现的链表元素如下:
vld:指示链表中有无数据。
hp(head pointer):链表头指针【实际使用REG来存储】
tp(tail pointer) :链表尾指针【实际使用REG来存储】
body ram:链表指针存储ram【使用RAM来存储】(存的是下一跳地址