NPUのお仕事(Intel IXP 1200の場合)
2001年ぐらいにリリースされたNPU,Intel IXP1200の場合.
資料はこのへん.
- http://www.tu-ilmenau.de/fileadmin/public/iks/files/lehre/wi/WI-IXP.pdf
- http://www.cs.cmu.edu/~rajesh/papers/15740f00-ixp1200.pdf
- 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)がある.
- イーサネットコントローラまで上がってきたフレームはRxFIFO(IX Bus Unitの一部)に格納される.
- MEが定期的にRxFIFOを監視していて(6MEx4Thread=24threadのうち2threadが監視用っぽい),フレームを見つけるまで監視し続ける
- RxFIFOにフレームを発見したMEは,フレーム全体をSDRAMにコピーするようにIX Bus Unitに指示する.そうすると後はIX Bus Unitが勝手にRxFIFOからSDRAMにコピーしてくれる.並行してMEは転送先を探索すべく,RxFIFOからフレームヘッダだけを取得してME内部のTransport Registerにコピーする.MEはこれとSRAMにあるテーブルとマッチングを行う.
- MEは必要に応じてSDRAM上のフレームのヘッダ情報を書き換える.
- 転送先の探索結果に基づいて転送する準備をする.MEがSDRAM UnitにIX Bus UnitのTxFIFOへコピーするように指示する.あとは勝手にSDRAM Unitがやってくれる.
- コピーが終わったらSDRAM UnitがMEに通知するので,それを持ってMEがIX Bus UnitへMAC層へ渡すように指示する.
マッチングに引っかからなかった時はStrongARMにあげて処理を決める.その結果(転送先情報)はStrongARMがSRAMに書き込む.