Rewizje specyfikacji i bajty wersji
Specyfikacje to żywe dokumenty. Moduł deklaruje, którą rewizję realizuje jego mapa pamięci, a host parsuje mapę według rewizji, którą zna. Przez większość czasu te dwie rzeczy zgadzają się wystarczająco dobrze; gdy nie, bajt zostaje odczytany jako coś, czym nie jest. Ta strona wymienia bajty wersji, sposób ich dekodowania i — w przybliżeniu — co dodała każda generacja, żebyś mógł stwierdzić, czy pole, na które patrzysz, w ogóle istnieje w module, który masz przed sobą.
Gdzie deklarowana jest wersja
| Rodzina | Bajt | Kodowanie |
|---|---|---|
| SFF-8472 (SFP) | A0h, bajt 94 | kod wyliczeniowy (tabela poniżej) |
| SFF-8636 (QSFP) | bajt 1 | kod wyliczeniowy (tabela poniżej) |
| CMIS | bajt 1 | starszy półbajt . młodszy półbajt (50h = 5.0) |
| MIS (SFP-DD) | bajt 1 | jak CMIS |
| INF-8077i (XFP) | brak | identyfikator 06h oznacza INF-8077i rev 4.x |
SFF-8472 — bajt 94
| Wartość | Rewizja | Istotne dodatki, w przybliżeniu |
|---|---|---|
| 00h | nieokreślona | moduły sprzed diagnostyki; tylko dane identyfikacyjne |
| 01h | 9.3 | pierwsza diagnostyka cyfrowa: progi A2h, wielkości mierzone, flagi |
| 02h | 9.5 | doprecyzowania, opcjonalne wielkości mierzone temperatury lasera / TEC |
| 03h | 10.2 | era SFP+: wybór szybkości, opcja odbiornika liniowego, rozszerzone opcje bajtu 93 |
| 04h | 10.4 | programowy wybór szybkości według SFF-8431, poziom mocy 2, wybór aplikacji według SFF-8079 |
| 05h | 11.0 | kodowanie miedzi 10G (DAC) — bity technologii kabla, tłumienie w 60–61 |
| 06h | 11.3 | rozszerzone opcje, opcja nadajnika przestrajalnego, kody szybkości 16GFC |
| 07h | 11.4 | stronicowana pamięć A2h (bajt 64, bit 4), strona 02h przestrajalna według SFF-8690 |
| 08h | 12.0 | rozszerzona zgodność specyfikacji w bajcie 36 przez SFF-8024; kody z ery 25G/100G |
| 09h | 12.4 | poziom mocy 3 (2,0 W), szybkość FC 2 w bajcie 62, kod kodowania PAM4, dostosowanie do SFF-8024 |
Zasada praktyczna: moduł deklarujący 08h albo 09h musi mieć sensowny (albo zerowy) bajt 36 oraz szybkość ×250 Mb/s w bajcie 66, gdy bajt 12 = FFh; moduł deklarujący 03h albo niżej nie ma żadnej semantyki bajtu 36 — hosty go ignorują.
SFF-8636 — bajt 1
| Wartość | Mapa zgodna z | Istotne dodatki |
|---|---|---|
| 00h | nieokreślona (SFF-8436 rev 4.8 albo wcześniej) | pierwotna mapa QSFP+ |
| 01h | SFF-8436 rev 4.8 albo wcześniej | — |
| 02h | SFF-8436 rev 4.8 z bajtami 186–189 według SFF-8636 | pola długości fali i tolerancji |
| 03h | SFF-8636 rev 1.3 albo wcześniej | pierwsza SFF-8636 |
| 04h | rev 1.4 | — |
| 05h | rev 1.5 | — |
| 06h | rev 2.0 | QSFP28 / 100G: rozszerzona zgodność w bajcie 192, klasy mocy 5–7, sterowanie CDR i flagi LOL |
| 07h | rev 2.5, 2.6, 2.7 | strony 20h–21h, szybki tryb Tx-disable, więcej kodów z tabeli 4-4 |
| 08h | rev 2.8, 2.9, 2.10 | klasa mocy 8 i maks. moc w bajcie 107, kody 200G (QSFP56), kodowanie PAM4 |
Hosty starsze niż rev 2.0 nie zaglądają do bajtu 192 — moduł 100G w przełączniku z ery 40G jest z tego samego powodu „nieznany”, niezależnie od tego, co mówi blok producenta.
CMIS — bajt 1
| Wartość | Wersja | Istotne zmiany |
|---|---|---|
| 30h | 3.0 (2018, QSFP-DD MSA) | pierwszy wspólny model: strony dolne/górne, aplikacje, automaty stanów modułu i ścieżki danych, CDB |
| 40h | 4.0 (2019) | etapowe zestawy sterowania, strony VDM 20h–2Fh, rozszerzone deskryptory aplikacji, jaśniej określone czasy trwania |
| 41h | 4.1 | poprawki i doprecyzowania |
| 50h | 5.0 (2021, OIF) | banki do 32 linii, dopracowany model ścieżki danych i flag linii, rozszerzone wielkości obserwowane VDM, strony diagnostyczne 13h–14h |
| 51h–53h | 5.1, 5.2, 5.3 | przyrostowe: dodatkowe typy VDM, zaczepy monitorowania koherentnego (ZR), udoskonalenia zarządzania firmware |
Moduł CMIS 5.x w hoście, który implementuje 4.0, zwykle działa w podstawowym przepływie (automat stanów, wybór aplikacji), ale host nie odczyta nowszych stron VDM; host obsługujący tylko 3.0 może w ogóle nie uruchomić modułu 5.x — Problemy z CMIS. Wersje MIS podążają za CMIS: MIS.
Reguły zgodności
- Nowszy moduł, starszy host — nieznane kody dekodują się jako nieznane; wyższa wartość bajtu 94 / bajtu 1 jest zwykle tolerowana. Problemy zaczynają się, gdy host potrzebuje pola, które istnieje tylko w nowej rewizji (bajt 192, aplikacje).
- Starszy moduł, nowszy host — bez problemu; hosty zachowują wsteczne parsowanie.
- Deklarowana rewizja niespójna z zawartością — prawdziwa pułapka. Zadeklarowanie 12.x z pustym bajtem 66, gdy bajt 12 = FFh, daje hostowi „0 Gb/s”; zadeklarowanie rev 2.0+ ze śmieciami w bajcie 192 daje nieznany typ. Przy kodowaniu ustaw bajt rewizji zgodnie z polami, których faktycznie używasz.
- SFF-8024 nie ma bajtu wersji w module; rewizja tabeli hosta decyduje, które kody potrafi on nazwać.
Pozostałe dokumenty i tempo ich aktualizacji
| Dokument | Aktualna generacja | Uwagi |
|---|---|---|
| SFF-8024 | rev 4.x, aktualizowana kilka razy w roku | nowe identyfikatory, złącza i identyfikatory interfejsów trafiają najpierw tutaj |
| INF-8077i | rev 4.5 (2005) | XFP; stabilna, bez oczekiwanych dalszych rewizji — XFP |
| SFF-8690 / SFF-TA-1004 | 1.x | mapy przestrajalne — Mapy przestrajalne |
| SFF-8079 / SFF-8089 | 1.x | wybór szybkości/aplikacji — Wybór szybkości |
| Specyfikacje sprzętowe (SFF-8431, SFF-8679, QSFP-DD HW, OSFP) | patrz katalog | rodziny sprzętowe SFP, QSFP |
Numery i tytuły dokumentów: Katalog specyfikacji MSA.
W CodingBox
CodingBox najpierw odczytuje bajt rewizji i stosuje pasujące definicje pól, dzięki czemu pola, których nie ma w zadeklarowanej rewizji, są pokazywane jako zarezerwowane, a nie błędnie nazwane. EEPROM editor pozwala ustawić bajt rewizji razem z polami, którymi zarządza.