IC设计:缓存容量管理先扣除再补偿

EETOP 2025-09-23 08:39

1. 数据流处理

在如下的设计中,模块 a 负责产生原始数据(data_payload)。模块a知道模块 c 内部包缓存(pkt_buffer)总容量(pkt_buffer_max_byte)并且负责计算模块 c 内部包缓存(pkt_buffer)有效存储字节(pkt_buffer_valid_byte);当模块 a 发现 pkt_buffer_valid_byte 小于即将发送的 pkt 所占用的 byte 总量时,会停止发送 pkt data payload。

模块b负责给pkt组包添加包头(pkt_head)和包尾(pkt_tail)字段并且负责包格式检查,一旦发现不符合规范,则丢弃数据。

模块c拥有pkt_buffer负责存储pkt。当满足一定条件时会将pkt从pkt_buffer中读出。

资讯配图

2. Buffer size管理

因为模块b会添加pkt_head和pkt_tail并且还会丢包,因此模块a不知道一个包真实占用模块c中pkt_buffer的多少有效byte。此时,即使模块a知道pkt_buffer的总容量也不知道该如何管理缓存(pkt_buffer)有效存储字节(pkt_buffer_valid_byte)。所以在设计上,我们采用这样一套方法来实现:首先减去一个包可能会占用pkt_buffer的最大容量,当下游模块能够知道当前包真实占用缓存容量时,将多扣除的容量补偿回来。

初始状态,模块c中的pkt_buffer没有数据,模块a中pkt_buffer_valid_byte等于pkt_buffer_max_byte。模块C发出pkt之前会计算出当前pkt可能占用的最大byte(current_pkt_max_byte),仅仅当pkt_buffer_valid_byte不小于current_pkt_max_byte时,模块c才会发出当前pkt。一旦发出pkt后,模块c会更新包缓存有效存储字节,即pkt_buffer_valid_byte=pkt_buffer_valid_byte-current_pkt_max_byte。模块c发出的pkt会通过a2b_pkt_vld/a2b_pkt_md 传递给模块b,其中current_pkt_max_byte会赋值给a2b_pkt_md中的len字段。模块b收到pkt时,在完成包头、包尾添加和丢包判断后,会根据实际情况判断当前pkt的包长真实字节(current_pkt_real_byte),丢包时,current_pkt_real_byte为0。一旦模块b发现current_pkt_max_byte大于current_pkt_real_byte,则会通过b2a_credit_comp_vld/b2a_credit_comp_num信号补偿模块a中的pkt_buffer_valid_byte,其中b2a_credit_comp_num等于current_pkt_max_byte减去current_pkt_real_byte。当模块a收到补偿时,更新pkt_buffer_valid_byte,即pkt_buffer_valid_byte=pkt_buffer_valid_byte+b2a_credit_comp_num,此操作保证了被额外扣除的有效缓存size会被补偿回来。

当模块C中的pkt从pkt_buffer中读出时,模块c会通过c2a_credit_feedback_vld/c2a_credit_feedback_num信号将已被释放的缓存字节还给模块a,模块a会更新pkt_buffer_valid_byte,即pkt_buffer_valid_byte=pkt_buffer_valid_byte+c2a_credit_feedback_num。

3. 案例说明

如图所示,第一个包(黄色)、第二个包(橙色)、第三个包(蓝色),pkt_buffer_max_byte等于600。

第一个包在模块a计算current_pkt_max_byte等于100;初始状态pkt_buffer_valid_byte等于600,减去100后得到500。第一个包在经过模块b时实际包长current_pkt_real_byte等于80,因此模块b需要补偿20个字节给模块a,如图c2a_credit_comp_num=20,此时pkt_buffer_valid_byte更新为520,当包从模块C中缓存读出时,模块c给模块a反馈80字节,如图c2a_credit_feedback_num=80,pkt_buffer_valid_byte在520的基础上加上80得到600。

资讯配图





明天直播,报名即将关闭!

资讯配图


声明:内容取材于网络,仅代表作者观点,如有内容违规问题,请联系处理。 
IC
more
《Science Robotics》封面:DeepMind发布RoboBallet,重新定义多机器人协同规划
数据即智能,Agentic AI 驱动存储范式改变
ICPC总决赛被AI统治!GPT-5组合系统12题全对登顶,人类打破头只能争夺第三
Microchem J:分子印迹电化学手性传感器高选择性检测(1S,2S)-伪麻黄碱
兆易创新(GigaDevice):清洁电器开卷,智能MCU是关键变量
雷神推出 VIC68 Ultra 有线磁轴键盘:0.001mm RT 精度、TTC 万磁王 RGB 轴体,899 元
IGL-Nav:基于增量式3D高斯定位的图像目标导航(ICCV'25)
“重启”布局移动机器人后,Rethink Robotics再次倒闭
登上Science Robotics的中国冠军:HANDSON团队如何用「最聪明」的机器人假肢征服“半机械人仿生奥运会”?
ICCV'25开源|FiVE-Bench:精细视频编辑新基准,揭示扩散与整流流模型实力
Copyright © 2025 成都区角科技有限公司
蜀ICP备2025143415号-1
  
川公网安备51015602001305号