网络芯片设计需求不外乎2点:功能和性能。
功能我们先放在一边。
性能包括:带宽,吞吐量,容量,穿透延时。
其中,带宽为bps,吞吐量为pps,是同一概念的不同view;带宽侧重与单位时间处理的数据bit,吞吐量侧重的是每秒处理的包的个数;后者更有观测意义,因为用户体验的结果就是单位时间的收包速率,毕竟TCP/IP网络的业务是基于数据包为基本单元的。
容量,涉及到的是芯片的Memory的规划,与具体业务有关,放在一边。
穿透延时(latency)是指数据包从进入芯片到离开芯片消耗的时间。
从用户角度看,穿透延时和吞吐量是两个很关键的性能指标; 穿透延时直接影响了用户在首次连接时的等待时间(注意是首次);吞吐量表征了在建立连接后,后续数据的时延,是用户的持续体验。
网络芯片业务处理是基于包为单位的,这是业务特性的要求。
基于这个要求,我们芯片设计包括了大小两级流水。大流水是指将大的业务流程拆分成多个独立的子流程,这些子流程从时间上看有上下级关系,在子流程之间需要采用FIFO来缓存数据包,则子流程的处理耗时长短直接决定了子流程之间的FIFO的深度,当然子流程可以使用乒乓操作等手段来用子流程的硬件面积换取FIFO的面积;小流水是指子流程内部,基于一个包可以采用流水处理的模式;
考虑到穿透延时和吞吐量是两个十分重要的性能指标:
设计有必要将穿透延时降低到最小,并提高吞吐量。
其中穿透延时跟芯片需要处理的业务有关,业务越复杂,耗时越多,但是我们可以将业务处理采用组合逻辑而非时许逻辑,当然并不是组合逻辑能把所有业务都处理完毕,组合逻辑处理的业务量跟芯片始终频率有关,也跟芯片后端工艺有关,组合逻辑不能无限大,是受芯片的物理约束的,这个时候设计可以尽可能的将后端工艺和时钟频率柔和到设计方案中。另外,业务处理过程中的memory的访问穿透延时,不仅直接影响了芯片整体的穿透延时,另外也会对芯片内部FIFO或者硬件逻辑的面积大小有直接关系,因此在芯片初期要将Memory的穿透延时和带宽在早期就考虑进去,越早越好。