インフラ・DevOps
EthernetスイッチASICの設計
Designing an Ethernet Switch ASIC (essenceia.github.io)
要約
著者は、世界初のオープンソースEthernetスイッチASICを開発しており、現在製造中です。このプロジェクトは、オープンソースソフトウェアエコシステムとは対照的に、ネットワーク機器におけるオープンソースハードウェアの欠如に対処することを目的としています。設計は、ピン数とダイ面積という制約の中で、外部PHYチップとRMIIバスを介してインターフェースする、カットスルー方式のスイッチASICに焦点を当てています。
全文翻訳
目次AI開示:すべてのバグは100%人間によって作られました。
世界初のオープンソーススイッチASICを開発し、11月中旬にファブから戻ってくるようです。
エリア密度表示を有効にしたスイッチフロアプランのレンダリング。面積は711.2 x 325umを占めています。このチップの最初のバージョンは現在、Tiny Tapeout gf26bシャトルチップ上でテープアウトされており、wafer.spaceの第2回実行の一部です。シリコンの起動は2026年11月15日を予定しています。
リポジトリはこちらです:
もっと狂気の話へようこそ。
読むための推奨サウンドトラック:Taishi - Reverie for Another Sphere
オープンソースのネットワーキングASICはどこにあるのか?
最近のFCCの決定により、ネットワーキング機器の中心的かつ重要な存在が注目されています。そしてそれに伴い、完全にオープンソースのネットワーキング機器ハードウェアの総不在も私の頭の中を占めるようになりました。
オープンソースシリコンはまだ初期段階ですが、現在、多くのプロジェクトが設計、テストされ、最も野心的なものの中には、すでに実証済みのシリコンが出回っているものもあります。
素晴らしいKian-Vプロジェクト、シリコンで実証済みのRISC-V SoCがwafer.spaceの実行1で製造されました。そしてはい、Linuxが動作します。元の投稿へのリンク。
とはいえ、最も野心的なプロジェクトの大多数は主にRISC-V SoCです。
驚くべきことに、ネットワーキング機器用のオープンハードウェアの構築への関心ははるかに低いのです。
まあ、実際には驚くことではありません...ネットワーキング機器はCPUよりも「セクシー」ではなく、そのためオープンソースコミュニティからの注目もはるかに少ないのです。一方で、これは、常識よりも時間がある人なら誰でもオープンソースネットワーキング機器チップを構築できる、巨大な未開拓の分野があることを意味します!
なぜなら、シリコンの大きな分断の向こう側では、オープンソースネットワーキング機器の世界は、その活発なソフトウェアエコシステムとオープンPCB/エレクトロニクスエコシステムの両方において、非常に豊かであり、フル機能のオープンソースルーターが数多く利用可能です。しかし、現在のエコシステムの制約により、その裏側では、中央のコンピューティングおよびルーティングタスクのために、すべてクローズドソースのブラックボックスプロプライエタリチップが実行されています。
では、ルーターチップを構築するには何が必要でしょうか?
ルーターは、強力なCPUと特殊なネットワーキングハードウェアの両方を必要とする複雑なSoCであり、有線および無線接続用のアナログフロントエンドも必要とするため、非常に野心的なプロジェクトです。フルルーターをゼロから構築するのは、一人の人間が決して成し遂げられないほど野心的なグリーンフィールドプロジェクトなので、より取り組みやすい最初のステップから始めましょう:スイッチの構築です。結局のところ、ほとんどの人はルーターを1台しか持っていませんが、いくつもの小さなスイッチを持つことができ、それらのためのオープンソースチップもありません。
ああ、そして、FPGAスイッチを構築しているわけではありません、いいえ、スイッチASICを構築し、それをテープアウトし、そしてシリコンが動作することを証明しているのです。
スイッチの種類
どのようなスイッチを構築したいかを考え始める前に、市場にあるさまざまな種類のスイッチの概要を説明しましょう。ネットワーキング機器に深く精通している読者はこの部分をスキップできます。
用語集
物理層
Ethernetは複数の物理層をサポートしており、IEEE 802.3仕様に概説されています。仕様の各条項は、特定の帯域幅でメディアを介してEthernetプロトコルを伝送するための基盤となるメディアの特性を定義しています。
10GbファイバーEthernetリンクも10Mb同軸ケーブルもEthernetパケットを伝送でき、物理層より上のレイヤーでは、パケットはまったく同じように見えます。
それらが異なるのは物理層であり、仕様には、どのタイミングで、どのようなエンコーディングでデータがメディア上で送信されるかが正確に概説されています。
これにより、異なるメーカー製のデバイスが「Ethernetで話す」ことが何を意味するのかについて合意できるようになり、相互運用性が確保されます。
したがって、私が最初に答えなければならない質問の1つは、私のスイッチがどの物理層をサポートすべきかということです。これは、どれだけのトラフィックをルーティングする必要があるか、どれだけ速くルーティングする必要があるか、そしてどれだけの帯域幅を伝送できるかを定義します。
マネージド対アンマネージド
2番目の質問は、どのような種類のスイッチを構築したいかということです。
スイッチには、マネージドとアンマネージドの2つの大きなファミリーがあります。名前が示すように、マネージドスイッチは外部から設定および管理できます。これにより、さまざまなVLANをサポートするなど、はるかにスマートなルーティングが可能になります。
一方、アンマネージドスイッチは、基本的に設定不可能なネットワーク機器であり、ネットワークに接続するだけで機能します(電源サージで壊れるまで)。
カットスルー対ストアアンドフォワード
最後のスイッチの特性は、カットスルーかストアアンドフォワードかです。
カットスルートラフィックは、パケットがまだ到着している間に転送を開始するため、ネットワーク遅延が大幅に低下します。一方、ストアアンドフォワードスイッチは、パケット全体が到着するのを待ち、破損がないかチェックしてから、そのチェックがパスした場合にのみパケットを転送します。
問題が発生するのは、パケットが破損した場合です。カットスルートラフィックは、転送がFCS(フレームチェックシーケンス)をチェックする前に開始されたため、破損したパケットをネットワーク全体に伝播させる可能性があります。
制約に対する設計(再び)
いつものように、私のASIC設計作業では、構築するものは、構築したいものと同じくらい、シリコンの制約によって形作られます。
ピン
私の最初の主要な制約はピンです。その数だけでなく、最大帯域幅もです。
この最初の世代のチップを、純粋なデジタルタイルのみを使用するTiny Tapeoutシャトルチップ上でテープアウトするため、これらのピンの制限を受けます。
合計で24ピンが利用可能です。8つの入力、8つの出力、そして8つの双方向(入力または出力ピンに設定可能)GPIOピンで、インバウンドおよびアウトバウンドデータの両方で50MHzで確実に動作するように定格されています。
アナログフロントエンドがないため、IEEE物理層に準拠したものを直接構築するのは困難ですが、回避策があります。外部PHY(物理層)チップを使用し、標準化されたRMIIバスを介してインターフェースすることです。これはEthernetインターフェースあたり7ビットを消費しますが、私の50Mbpsピンで100Mbps Ethernet(100BASE-TX)以上の送受信が可能になります。
Tiny Tapeoutシャトルチップ
インデックス
入力
出力
双方向
0
ui[0]
uo[0]
uio[0]
1
ui[1]
uo[1]
uio[1]
2
ui[2]
uo[2]
uio[2]
3
ui[3]
uo[3]
uio[3]
4
ui[4]
uo[4]
uio[4]
5
ui[5]
uo[5]
uio[5]
6
ui[6]
uo[6]
uio[6]
7
ui[7]
uo[7]
uio[7]
このインターフェースには、広く入手可能なMicrochip LAN8720A/LAN8720AI(この記事でAIに言及するのはこれだけになります)PHYチップをターゲットにします。このASICがこのPHYとどのようにインターフェースするかについては、後でもっと詳しく説明します。
エリア
私の2番目の主要な制約は、限られたダイ面積です。
結局のところ、私はすべて自腹で支払っています。面積が大きいほど、製造コストは高くなります。まあ、私は金塊を貯め込もうとしているわけではありません。ただ、マズローの欲求段階説に従って、ワッフルは面積よりも優先度が高く、製造コストが高いほどワッフルが少なくなります。だから、どんな半導体企業でもそうであるように、私も面積予算を管理下に置くことにインセンティブがあります。
歪んだASIC版マズローの欲求段階説。
ストアアンドフォワードはスイッチがパケットを転送する前にパケット全体を保存する必要があり、Ethernetフレームは1.5kバイト以上(ジャンボフレームの場合は9kバイト以上)に達するため、大量のストレージが必要です。そのための回避策は、パケットをオフチップメモリに保存することですが、現時点ではそのためのピン予算がありません。したがって、オンチップメモリが唯一の選択肢です。
問題は、オンチップメモリは、SRAMの大きなフットプリントと、フリップフロップの1ビットあたりのフットプリントがさらに大きいため、多くの面積を消費することです。
もし数バイトの話であれば交渉の余地がありますが、1.5kバイトのパケットが複数となると、これは取引を打ち切る要因となるため、ストアアンドフォワードは除外されます。
Tim Edwardの優れたOを使用したスイッチASICフロアプランの非常に高解像度のレンダリング