Chinaunix首页 | 论坛 | 博客
  • 博客访问: 461256
  • 博文数量: 63
  • 博客积分: 1485
  • 博客等级: 上尉
  • 技术积分: 596
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-21 14:49
文章分类

全部博文(63)

文章存档

2018年(8)

2017年(25)

2016年(10)

2012年(6)

2010年(14)

我的朋友

分类: 嵌入式

2010-06-03 16:39:04

一直不清楚怎么计算一个报文究竟需要多少个cycle的处理才能达到wire speed。

一直对于这个问题很疑惑:
NP中对于一个报文的处理代码最多可以写多少行?累计多少个cycle才能达到线速呢?开发者怎么确定这个事情?难道总是在测试阶段才知道性能吗?太土了吧?!

今天看了一个文挡,描述了如何计算,挺简单的,暂且记录一下:

以IQ2200为例(过时的NP,没谁在用了。。。)

IQ2200,集成2个GE口,内部分4个硬件线程,每个线程工作频率400MHz。
对于报文的处理能力,通常:
在流量是1Gbps的情况下,线速状态下以太网报文包转发率是1.488Mpps。

那么2个GE口,双向总共就是4G流量,两个方向的报文都会进入NP处理的嘛。那么如果要达到线速转发,包转发率必须保证达到4*1.488Mpps = 6Mpps = 6 M packet/second.

再看硬件处理频率,一个NP中包括4个线程,所以总的工作频率是400MHz*4 = 1600MHz = 1600 M cycle / second。

(1600 M cycle / second) / (6 M packet/second) = 268 cycle/packet。

那么也就是说,对于一个报文的处理代码,累计的cycle不能超过268,否则肯定达不到线速。尤其对于短包,报文丢失率会很高。

一个系统如果对于短包也可以达到线速转发,那么长包的问题不大。





阅读(3701) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~