NPUのお仕事(Intel IXP 1200の場合)

2001年ぐらいにリリースされたNPU,Intel IXP1200の場合.

資料はこのへん.

  1. http://www.tu-ilmenau.de/fileadmin/public/iks/files/lehre/wi/WI-IXP.pdf
  2. http://www.cs.cmu.edu/~rajesh/papers/15740f00-ixp1200.pdf
  3. http://web.ict.kth.se/~mahidell/pubs/networking04_tutorial_final.pdf

NPUの制御はイーサネットコントローラ上部.
1番目の資料に全て書いてあるので,それをメモする.
NPUの構成については,マッチングを行うMicroEngine(ME),SRAM/DRAMおよびそれらのUnit,MAC層と接続しているIX Bus Unit,StrongARM(CPU)がある.

  1. イーサネットコントローラまで上がってきたフレームはRxFIFO(IX Bus Unitの一部)に格納される.
  2. MEが定期的にRxFIFOを監視していて(6MEx4Thread=24threadのうち2threadが監視用っぽい),フレームを見つけるまで監視し続ける
  3. RxFIFOにフレームを発見したMEは,フレーム全体をSDRAMにコピーするようにIX Bus Unitに指示する.そうすると後はIX Bus Unitが勝手にRxFIFOからSDRAMにコピーしてくれる.並行してMEは転送先を探索すべく,RxFIFOからフレームヘッダだけを取得してME内部のTransport Registerにコピーする.MEはこれとSRAMにあるテーブルとマッチングを行う.
  4. MEは必要に応じてSDRAM上のフレームのヘッダ情報を書き換える.
  5. 転送先の探索結果に基づいて転送する準備をする.MEがSDRAM UnitにIX Bus UnitのTxFIFOへコピーするように指示する.あとは勝手にSDRAM Unitがやってくれる.
  6. コピーが終わったらSDRAM UnitがMEに通知するので,それを持ってMEがIX Bus UnitへMAC層へ渡すように指示する.

マッチングに引っかからなかった時はStrongARMにあげて処理を決める.その結果(転送先情報)はStrongARMがSRAMに書き込む.