Ethernetのしくみとハードウェア設計技法
Ethernetのしくみとハードウェア設計技法―プロトコルの詳細からネットワーク対応機器の作成まで (TECHI―Bus Interface)
- 作者: インターフェース編集部
- 出版社/メーカー: CQ出版
- 発売日: 2006/07/01
- メディア: 単行本
- 購入: 17人 クリック: 372回
- この商品を含むブログ (10件) を見る
日本語で読めるethernetハードウェアの内容としては最上級のものと実感。
やはり日本語技術書ではこういうムックが最も詳しいのですね。
これでダメなら原著の仕様書にあたるしかない。
- プリアンブルとSFD (Start Frame Delimiter)
- 受信側がタイミング調整を行うために利用する。
- MIIでは、「プリアンブルの先頭部分は取りこぼしても可」としている。
- プリアンブル: "10"を28回繰り返す56bit
- SFD (Start Frame Delimiter): 101010"11"
- Ethernetのレイヤ1
- PLS (Physical Layer Signaling): 01情報をマンチェスタ符号化する所
- AUI: 基板またはLSI内部の配線にすぎない。
- MDI: 単なるRJ-45コネクタのこと。
- carrier senseの方法
- ネットワーク上に電位差が見えるかどうかで判断
- colision detectionの方法
- 送信データがネットワーク上にあることを確認する。
- 衝突が分かった送信側は途中からデータでなくジャム信号を送信し、受信側に衝突を正しく知らせる。
- 1000Base-Tと1000Base-TX
- 1000Base-TXは、100Base-TXと同じ信号速度である125MHzを4ペア使う。
- 1000Base-Tは、そうではない。カテゴリ6が良い。
- リンクパルス
- 10Base-Tでは、リンクパルスを出し続けることでethernet接続を検出していた。
- 100Base-TXでは、アイドル状態でも、伝送路上に"1"が連続して送信される(MLT-3的には電位が常に変化ている)ので、ethernet接続検出は、明示的なリンクパルス無しでもできる。
- Power over Ethernet
- IEEE802.3af
- 通信に使っている送受信ペアを使うタイプと、通信に未使用な送受信ペアを使うタイプと、がある。
- オートネゴシエーション
- 電源を入れたとき、あるいはケーブルを挿したときに行われる。
- 10Base-Tで使われるリンクパルスを拡張し、ここに情報を入れて交換する。
- IEEE802.11b/gのネゴシエーションと似たようなもん
- リンクダウンしたらオートネゴシエーションやりなおし。
- PAUSEフレームとMACコントロール
- ethrnetコントローラ配置方法分類
- 汎用バスタイプとPCIバス接続タイプの比較
- Intel 8255Xシリーズの使いかた
-
- コマンドブロックをリンク(数珠つなぎ)にできる。ELビットがゼロであれば、リンクアドレスを参照して次のコマンドブロックを連続して処理する。高スループットな送信や受信ができる。
-
- 送信用のコマンドブロック。データ格納領域はポインタとして保持。こうすることで、実データは連続したメモリに格納しておきながら、ether frameとして分割して送信指示できる。(もしこれがないと、実データをether frameとして送信するための分割しながらコピーする必要がある)
- Intel 8255Xシリーズ PHYへのアクセス
-
- ドライバソフトウェアがPHYを操作するには、MDI (Management Data Interface)を通じてPHYの持つレジスタをアクセスします。
-
- MDIは、MDIO (Input/Output)と、MDC (Clock)からなる2線式シリアルインタフェースです。
-
- 例えば、PHYの初期設定や、リンク状態の取得のためには、PHYへのアクセスが必要。
- キャッシュの整合性問題が発生する理由
-
- 通常は、CPUがキャッシュを介してメインメモリにアクセスするのみで、この場合だけ考えていれば、キャッシュとメインメモリの整合性が崩れることはない。
-
- しかし、 デバイスが直接メインメモリにアクセスと、メインメモリとキャッシュの間で値の不整合が起こる。
-
- ドライバが書いた値をデバイスが直接読もうとすると...
-
-
- ドライバアクセスはキャッシュ経由なので、書き込みはキャッシュに留まっているのみでメインメモリに反映されていない可能性がある。そのため、デバイスが直接メインメモリにアクセスするとデータが古い可能性がある。
-
-
- デバイスが直接書いた値をドライバ(ソフトウェア)が読もうとすると...
-
-
- CPUキャッシュの値は古いままの可能性がある。
- 解決策?
- 例えば、読み取りの際にキャッシュを無効化するとか。
- 書き込んだときに、write throughする。
-
- Realtek RTL8139シリーズの使いかた
- MII (Media Independent Interface)
-
-
- PHYから常時提供されるタイミング信号がある(RX-CLK)。とはいえ、受信フレームのデータ線からクロック情報を得ることができる変調方式である場合は、そちらを使っても良い。
- 送信用にもPHYから常時提供されるタイミング信号がある(TX-CLK)。
- マネージメント制御系信号としてMDIO (management data input/output), MDC (management data clock)がある。
- MDIOはPHYの状態確認や制御のために用いられる。
- より具体的には、PHYからオートネゴシエーションの結果を受け取ったり、PHYに対して、モード(例えば全二重固定等)を指定したりするために使う。
- MDCは、MDIOのために用いるタイミング(クロック)情報
-
-
- フレーム送受信
- 送信時は、信号線の数にあわせて4bitパラレルに変換する。
- フレーム送受信
-
-
- LSI内部や基板上の高速配線では多くの場合、「立上り送信,立上り受信」等の同相処理を行う。しかし、基板間の接続では、逆相処理を行う(「立上り送信,立下がり受信」)。信号がもっとも安定した状態であることが期待できるから。
-
-
- ソケットバッファ(skb...)
- head: ヘッダの先頭
- data: ヘッダとデータの間
- tail: データのお尻
- dev: 操作するドライバを登録
- protocol: Ethernet等のデータタイプを指定
- ソケットバッファ(skb...)
-
- ドライバモジュールアンロード時の処理(cleanup_module)