もう15年くらいですかね。
SoCがコモディティ化して長いですよね。
例えば15年くらい前だと、イーサネット動画転送装置、の構成は以下のような感じ。
- SHマイコン
- MPEG2 CODECチップ(ASSP/ASIC)
- イーサネットコントローラ
SHマイコンはペリフェラルのコンフィグや、UI周りくらいが仕事です。
イーサのフレームの転送は、当然ですが“オフロード”です。
CPUがペイロードを触っていたら100Mbpsどころか10Mbpsもあやしいです。つまり、フレームのヘッダを触るだけです。
GbEはぼつぼつ出ていましたが、カメラがせいぜいHDなので、いらなかったですよね?
コーデックもオンチップで、カメラリンクと直結なわけですから、これもCPUはデータ部分を触りません。コンフィグに応じてレジスタに設定値を書き込むくらいが仕事です。
当然というか、UIが組み込みWebサーバになっているので、その部分はCPUがペイロードも触ります。でもそこだけです。
あとは各チップに設定だけすれば、CPUとは”別のバス上”をデータが流れ、イーサのPHYからデータが飛んでいきます。
なんでもかんでもマイコンでやる、というのは、そもそも昔からやられていない構成なわけですね。
で、上に書いたような構成をSoCにしたからと言って、ソフトやシステムの何がかわるかというと、何も変わりません。
CPU部分が触るのは、イーサフレームはヘッダだけ、MPEG2がH.264になってもコンテナヘッダだけ。
哀れなのは、10BASEくらいのころに苦労してパケットドライバを書いていたような人が、時代に取り残されたプラットフォームで相も変わらずFE(ファストイーサ)のべたなドライバをメンテしていたような場合です。
こういう人たちは最新のSoCを買ってきたら“API叩くだけで”ラインスピードの95%が出るようなスイッチングハブやルータが構成できるということを知らないようです。
”おまけ”のマイコン内蔵イーサコントローラのドライバをシコシコ書いても、CPUパワーは食うわ、タイミングは遅れるわで、スループットなんか全然出ませんよね。
というわけで、面談などで“パケットドライバ作ったことありますか”って聞いてくるマイコン屋さんは、あぁニッチな業界で食べてる自覚がないんだな、と思うことにしました。