NP路由器——OE要点整理


实习期间开始学习的NP路由器的部分要点,准备把做的笔记一点点整理出来~可能有很多地方整理得不够清晰,毕竟本人也只是刚开始学习,还望海涵。

OE的保序功能

NP路由器——OE要点整理

  1. 当NP有空闲线程时,IQM会送新包给NP,并且产生一个PAC_ID。
  2. PBA同时将PAC_ID注册到OE队列,完成“取号”动作
  3. NP多个线程可以同时处理不同的报文,最后发送Transmit指令给OE
    1)如果有需要也可以“插队”
    ①可以将当前PAC_ID切换至其他有序流的队尾;
    ②直接切换至无序流,报文直接调度出队。
    2)OE始终调度有序流队首的PAC_ID,直至队列为空;
  4. OE将发送dispatch命令行给IQM,完成报文的发送。

常用名词

NP路由器——OE要点整理

有序流和无序流示意图

有序流示意图:
NP路由器——OE要点整理
无序流示意图:
NP路由器——OE要点整理

OE处理命令

Command Description
Bind 注册新的Packet ID到有序流队列;该命令只由PBA硬件发起,Atom不能发起该命令给OE。
ChangeFlow 变更有序流队列。将Packet ID从一条流注册到另外一条流。
OrderedAccess 协处理器顺序访问。对访问协处理器的命令排队,OE确保命令按有序流队列中的正确顺序排队。当命令入队时OE将报文重新指定到新的有序流队列,因此,该命令与ChangeFlow命令相似。
TransmitUcast 发送单播报文或最后一份组播复制报文。当Atom线程发送此命令给OE后,该线程无需等待OE响应直接被释放,可以接收新的报文进行处理。
TransmitUcast with NPR 指示当前报文需要进行NP复制。其他跟TransmitUcast命令一样。
Flush 发送Discard标识置位的Dispatch命令给IQM以删除报文。对于有序流队列,当报文位于有序流队列的头部时,从有序流队列中删除该报文。该命令还可以用来删除Timeout FIFO中位于头位置的报文。(处理超时/或特殊情况的报文)

超时事件处理过程

NP路由器——OE要点整理

  • 控制平面响应中断(也可用查询方式),读取中断寄存器发现超时报警。
  • CPU暂时屏蔽Timeout中断。确保Flush动作完成后再开启,避免整个流程被中断。
  • 该步骤可选。如果检测到超时,可根据需要通过读超时信息寄存器获取超时的报文ID和流序号。
  • CPU可以构造Flush命令来删除Timeout FIFO头部的PAC_ID。
  • CPU通过轮询RBA寄存器检测Flush命令是否成功到达OE。
  • CPU清除Timeout中断状态,再打开Timeout中断使能开关。