COTEON data flow 翻译,图参考文档

1 介绍

OCTEON处理器包含了若干功能块,他们一起工作管理包流通过处理器。在这个文档,处理器指的是完整的芯片,拥有所有的不同功能的硬件块,芯片上的所有核。

这个章节分为不同的部分:

1)  章节2-包流纵览,一个典型包流程被讨论,展示不同的功能块怎么协同工作去创造一个快速包处理。

2)  章节3-硬件特性加速包处理,关键硬件加速特性被讨论:

(1)      包分类和优先的硬件管理

(2)      硬件缓存管理

(3)      包连接锁

(4)      包序列管理

3)  调度/同步/序化单元介绍,SSO提供必要的能力

SSO单元提供下面的关键功能

(1)      调度:根据QOS优先权调度包处理

(2)      同步:通过提供包连接锁支持同步,这些锁可以被用来保护临界区,或串行包转发;

(3)      序化:

2 包流总览

这个部分介绍关键功能块在包处理中的使用,和一个包如何穿过处理器。在接下来的图中,说明包流穿过一个OCTEON处理器。前三个图书包流的总览。而后的图,包流被细分解为一系列分开的图。总览图和细节图概括了同样的事实,但是总线被引入更容易说明细节的图。

在这些图中有两个Psedo blocks。一个是“simplified packet interface pseudo block”,另一个是”packetinput pseudo block”。这两个pseudo block被包括在帮助阅读者理解OCTEON处理器的各种功能。

1)  simplified packet interface pseudo block 是一个一般的接受和转发功能的表现,包接口可以说下面任何一个:XAUI,PCIE,SPI-4.2,PCI/PCI-X/SGM2,RGM2,GM2,M2等待。simplifiedpacket interface pseudo block已经被极大简化和包含两个子块,被标注为TX端口和RX端口。

2)  packet input pseudo block包含两个块,一个是PIP一个是IPD。这个块从simplifiedpacket interface接收和处理数据。

 

包流以三个不同的部分在下面的图中展示:

1)  包入

2)  SSO和内核处理

3)  包出

注意:这些图简化了包流,在真实的系统中,许多活动是平行执行的。例如,IPD预取包的同时仍然在处理当前的包。有很多特殊的特性没有被描述在这个章节。

注意:这些图假定包没有被丢弃直到可配置的RED,或包错。在RED里,包可以被丢弃如果缓冲被填满。

注意:文档中的指针是物理地址,SDK函数如cvmx_pow_work_request_sync()转换物理地址到虚拟地址,若需要的话。


IPBD=IPD总线

PKOB=PKO总线

POB=包出总线

I/O总线包含两个总线:IOBI(输入)IOBO(输出)。接收数据直接从接口RX到IPD通过IOBI,不需要结果IOB(I/O BRIAGE)

1)  接口RX接收到包后,检查错误,它通过IOBI传递这个包到IPD单元,IPD和PIP共享这个数据。这两个单元一起工作处理这个输入包

2)  在PIP对这个包进行解析,包括检查软件配置,它计算数据是否需要被IPD

3)  若IPD没有丢弃这个包,它从FPA单元申请一个WQEBUFFER和包数据BUFFER。

4)  IPD写WQE区域到WQE BUFFER,写包数据到包数据BUFFER

5)  IPD执行add_work操作增加WQE指针到SSO段元的QOS队列

注意:操作步骤3分配了两个BUFFER,一个是WQE BUFFER,一个是PACKET DATA BUFFER,在释放时是分开释放的后面流程中需要特别注意。


SSO调度WQE是基于QOS优先权,进入次序等。

6a 6b.内核通过get_work操作从SSO单元中获取新的WQE指针。WQE包含了包数据BUFFER指针。

7 内核处理包数据,读写,包数据在L2/DRAM中。

8 处理完毕包数据后,内核发送包数据BUFFER指针和数据偏移到PKO单元的出包队列。队列配置指明出包的端口和包的优先权。若需要,包的输出安装包的进入顺序。

9 内核释放WQE BUFFER到FPA。

注意步骤8PKO传递了两个参数,一个是PACKET DATABUFFER,一个是DATA OFFSET; 步骤9这里释放的是WQE而不是DATA BUFFER




10 PKO通过DMA将数据从L2/DRAM中的包数据BUFFER到自己的内部内存。(由于PKO拥有PACKET DATA BUFFERADDRESSDATA OFFSET,所有PKO可以直接在L2/DRAM中获取数据

11 PKO选择性的增加TCP/UDP的检验和,然后从它的内部内存发送包数据到OUTPUT端口。TX接口将转发这个包。然后PKO通告内核这个包已经发送。

12 PKO释放包数据BUFFER到FPA(注意这里释放了PACKET DATA BUFFER

 

接下来的图展示了和上面图相同的事实,但是总线被引入。理解这个信息对展示很有用:

通过想象处理器中的准确的数据流过程,可以经常能编码性能上的问题。注意那个特殊的总线,和DMA设备提供的数据转发将保持IOB变得过载。

下面图片中的英文和上面的基本雷同,不再做翻译,请特别注意数据是通过不同的总线在各个单元间进行传输。


3 硬件特性加速包处理

在你学习包处理细节之前,有几种非常重要的OCTEON特性,这些腾信对加速包流非常必要,他们是:

1)  硬件管理的包分类和优先权[z1] 

2)  硬件管理的BUFFER池[z2] 

3)  硬件管理的包连接锁[z3] 

4)  硬件管理的包序[z4] 

3.1 分类和优先权

这个是OCTEON处理器的关键特性。硬件分类和优先权包括:

1)  包进入处理器时,被PKI被分类和给一个QOS优先权,然后包数据被放入到SSO单元里的指定的QOS输入队列。QOS的输入队列是高可配的。

2)  内核从SSO单元请求一个包。SSO返回一个最高优先权的调度包。当内核收到这个包时,它已经准备好处理它。内核不检查包的优先级。它永远不会收到一个正在等待锁的包。

3)  当包处理完毕后,内核把包放到PKO的输出队列中等待转发。PKO的输出队列被映射到一个指定的输出端口。PKO输出队列的优先权是高可配的。

通过允许内核以并行的方式处理包,这个硬件处理删除了包流的瓶颈,不需要分类和排列包的优先级。

这是包优先级硬件管理的简化视图。SSO单元和其他硬件单元提供一个强有力的和灵活的调度能力。这些能力在相应的章节被仔细描述。

3.2 BUFFER申请单元

包流非常依赖内存的BUFFER。FPA(FREE POLL ALLOCATOR)单元在OCTEON处理上的其他硬件单元管理内存BUFFER。在系统初始化的时候,这些BUFFER被从L2/DRAM申请,同时被商定到高达8个BUFFER池中。通常每个BUFFER池有相同的大小,而且被用作相同的目的.例如,有分开的池为两种不同类型的BUFFER,下面他们将被介绍:PACKET DATA BUFFER和WORK QUEUE ENTRY BUFFER.

每个池的大小依赖于池的数量。池的大小配置时应该格外小心,目的总要有可用的BUFFER。

FPA章包含配置BUFFER的细节。

3.2.1 分配BUFFER

一个硬件单元,像IPD或内核,可以从FPA中的指定的池请求BUFFER。FPA将BUFFER指针从池上取下,把地址扔给请求者。这个操作较分配一个BUFFER。

Buffer可以预先分配和保存,以等待请求者需要。这个预分配被IPD和内核都在使用以增加包的处理速度。

3.2.2 释放BUFFER

很多硬件单元可以把一个BUFFER指针返回给FPA池。FPA池得到这个BUFFER指针,将它插入到池中。这个操作较释放BUFFER。

3.3 包连接锁

锁的硬件管理去保护临界区。这些锁和锁不是同一类的:他们被直接连接到包的处理,所以被叫做包连接锁。包处理过程中,如代码的临界区,如读编辑TCP/IP控制块,必须用锁保护。在每个流中只有一个TCP/IP控制块。访问这个锁必须安装包的进入顺序,没有随机顺序或先来先服务。硬件锁设备.

硬件包连接锁特性包括:

1)  减负软件:硬件锁通过减负软件改进系统效率:SSO负责批准锁和计算出哪个包是下一个。

2)  原子访问:仅仅一个包在同一时间才能获取到该锁。

3)  锁被授予包进入次序: 通常在收到包的时候临界区应该被锁住,而不是请求锁的顺序。SSO提供硬件锁执行规则。

4)  异步锁获得:另外一个特性是异步锁的获得。在内核需要所得时候,内核可以请求锁,结束包处理,然后检查锁是否已经获得。当锁被获得内核将被通知。

包连接锁被用作异步包处理。

注意:内核在同一时刻仅仅能够有一个包分配,在同一时刻内核也仅仅能保持/请求一个包连接锁。

3.4 包序

当并行处理被请求的时候,多内核可以一齐工作处理相同流的多个包。当包改变处理阶段时,或需要访问硬件锁,SSO将强迫包安装进入次序停留。这个特性被用作保持包次序。


 [z1]Q1:这个操作在哪个硬件单元进行?

Q2: [z2]在哪个部件进行?

 [z3]同上

 [z4]同上



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值