《MSF的接收和发送数据流程韩婷.pdf》由会员分享,可在线阅读,更多相关《MSF的接收和发送数据流程韩婷.pdf(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、MSFMSF 的接收和发送数据流程的接收和发送数据流程一概述:The Media and Switch Fabric MSF Interface是IXP23XX与物理层设备physical layer device、交换结构switch fabric的接口单元;MSF的特点:有相互独立的数据接收接口和发送接口Receive Interface和Transmit Interface,每个接口可以独立配置,接口总线宽度为32bit可配置的总线接口:可配置为一个 32-bit,或被分为几个独立的总线:2个 16-bit 或 4 个 8-bit,或 16-bit+2 x18-bit 项目采用这种配置通
2、过UTOPIA 和POS_PHY协议与PHY相连,通过CSIX与交换结构SF相连;Note:UTOPIAalways refers to cell transport;POS-PHYrefers tovariable-length packet transport.项目中采用的是POS-PHY格式MSF-0位宽为16bit,与SDH接口芯片PM5352通过POS-PHY2规范相连;MSF-2位宽为8bit,与千兆以太网煤质接入模块通过POS-PHY3规范相连;MSF-3位宽为8bit,与高速串行接口模块通过POS-PHY3规范相连;POS-PHY接收状态字格式:POS-PHY发送状态字格式:M
3、SF在将网络数据接收下来之后,并不直接将其送入DRAM数据存储区,而是先将数据缓存在接收缓存RBUF中,然后将其移送到DRAM或ME中;二MSF 接收单元结构Rx pins:数据接收引脚,可接收 UTOPIA、POS-PHY、CSIX 协议格式的数据包Protocol Logic:协议控制逻辑单元,用于对来自于 Rx pins 的数据包做相应的协议检查和接收控制Checksum:对接收的数据包进行校验和计算,检验数据的完整性和正确性RBUF:Receive Buffer,数据包的接收缓存单元,容量为 8KB,可划分为:128x64B/Element 项目中选用、64x128B/Element、
4、32x256B/Element.MSF 从 PHY 或 SF 接收数据,缓存在 RBUF 中,当接收数据填满一个RBUF Element 一个 RBUF Element 缓存一个 mpacket 后,MSF 通知 ME 将 mpacket 读入 ME 的传输寄存器或 DRAM 中,然后进行处理;MEs使用msfread指令将数据从RBUF读到ME的传输寄存器中;数据RBUF control logic.通过SRAM Push Bus传到ME中指令格式如下:msfread,$s_xfer_reg,src_op_1,src_op_2,ref_cnt,optional_token其中,read指明是
5、从RBUF中读数据,src_op_1+src_op_2为源地址,指明数据在RBUF中的存放地址;$s_xfer_reg为目的地址,指明接收数据的传输寄存器的地址;ref_cnt指明数据长度以Longword为单位MEs也可以使用指令将数据从RBUF中读到DRAM中,指令格式如下:dramrbuf_rd,$s_xfer_reg,src_op1,src_op2,ref_cnt,optional_tokenBuffers:数据从Rbuf中向MEs或DRAM存储时的缓冲区,对开发者透明;Full Element List:用于记录RBUF中的Element的使用情况,当一个mpacket接收完毕后,相
6、应的Elem ment加入Full Element List,被标识为Full Element,之后将其中的mpacket送到ME或DRAM存储单元;Rx_Thread_Freelists:存储记录当前空闲线程;当将数据包接收下来,缓存在RBUF Element中之后,MSF通知某一特定的空闲线程来对RBUFElement中的数据进行处理;在将RBUF Element中的数据全部读入S_Xfer_in _reg或DRAM之后,线程释放相应的RBUF Element,重新用于新的数据包的接收缓存;Control:负责从 Full Element List中取出一个 Full Element,以及
7、从Rx_Thread_Freelists 中取出一个空闲线程执行后续的数据处理操作;三 MSF 的数据包的接收流程:NoteNote:在上述 9 个步骤中,步骤 1 和步骤 8 有 ME 实现,其余步骤有 MSF 完成;RBUF_Element_Done 是一个 32bit 的寄存器,当 ME 将某个 RBUF_Element中的分片处理完成之后,将该单元的编号写入该寄存器中,MSF 根据该寄存器的值释放相应的 RBUF_Element接收步骤:1 当某一个 Thread 完成指定的数据处理任务后,创建相应的Rx_Thread_Free_list_信息字,写入MSF中的Rx_Thread_Fr
8、ee_list寄存器中,将自己加入空闲线程链表;2 网络数据包到达 MSF 的 Receive Logic 单元;3 根据到来的是数据包的类型可能是 CSIX、UTOPA、SPI,为数据包分配合适的 RBUF Element;4Receive Logic 将数据移入 RBUF Element;5 在 Receive Logic 将数据移入 RBUF Element 之后,MSF 将该RBUF Element 标识为 Full Element,加入 Full_Element_List;6MSF 从 Full_Element_List 中取出一个 RBUF Element;7MSF 从 Threa
9、d_Free_list 中取出一个空闲 Thread;8MSF 创建关于 RBUF Element 中的数据的 RSW,并将该 RSW 送到空闲 Thread的传输寄存器中,然后通知空闲 Thread 处理数据包;9 在将 RBUF Element 中的数据包读入传输寄存器或 DRAM 存储器之后,Thread 将 RBUF Element 释放;四 MSFMSF 的的数据包的发送流程:NoteNote:在上述 6 个步骤中,步骤 1、2、3 由 ME 来实现,其余步骤由硬件完成发送步骤:1)Thread 取出一个空闲的 TBUF Element,分配给要发送的数据包;2)Thread 将数据包从传输寄存器或 DRAM 存储器中移入 TBUFElement;3)Thread 创建 TCW,并将 TBUF Element 标识为 Valid Element;4)MSF 将 TBUF Element 中的数据发送到 Transmit Logic 单元;5)MSF 将 Transmit Logic 单元的数据包按 TCW 指定的方式发送出去;