Technologie: Sběrnice PCI Express
- Technologie: Sběrnice PCI Express
- Sběrnice PCI Express
- Vrstvy sběrnice PCI Express
V předcházející části jsme se seznámili se zařízeními, které tvoří základní bloky sběrnice. Jednotlivá zařízení jsou propojena tzv. Linkem, který zajišťuje přenos dat pomocí paketů mezi jednotlivými komponenty a tvoří část přenosové trasy. Dále je přenosová trasa připojena k vysílači a přijímači fyzické vrstvy. Na tuto vrstvu navazuje linková a transakční vrstva, ve kterých je formován paket a doplňován o potřebné informace. Tyto tři vrstvy tvoří základní komunikační model sběrnice PCI Express definované specifikaci 1.a.
Transakční vrstva je obvykle propojena ještě s vrstvou (core logic), která realizuje interface mezi hostitelským procesorem a sběrnicí PCI Express. Tato vrstva není specifikována standardem PCI Express a záleží na konkrétní implementaci použitého procesoru nebo systému.
3.2.4 Transakční vrstva
Nejvyšší vrstvou architektury je transakční vrstva. Tato vrstva je zodpovědná za zpracování (kompozici a dekompozici) paketů transakční vrstvy (Transaction Layer Packet - TLP) obr. 11. Tyto pakety nesou informaci o typu prováděné operace, jako je čtení, zápis, zpráva nebo operace s IO prostorem. Všechny pakety, které výžadují potvrzení jsou implementovány jako dvě transakce (request/completion) a jsou přijímány nebo posílaný do vrstvy core logic. Každý vysílaný paket má svoje identifikační číslo, aby cílové zařízení mohlo poslat completion transakci zdroji. Dále vrstva zajišťuje nastavování atributů, posílaní zpráv, které v podstatě realizují virtruální vodiče přerušení, řízení napájení, jak jsme je znali z jiných typů sběrnic.
Obrázek 11: Paket transakční vrstvy
Jak je vidět z obr. 11, paket transakční vrstvy se skládá z hlavičky (TLP Header - obr. 12), vlastních dat, pokud jsou požadována pro příslušný typ operace a nepovinným kontrolním součtem ECRC .
Hlavička se skládá z řídících informací o typu přenosu. Délka hlavičky může být v rozsahu 3-4 doublewordy podle Fmt (DW = 4 byty) viz. tab. 3. Význam jednotlivých atributů hlavičky je popsán v následujícím textu.
- Fmt udává formát paketu TLP a zda paket obsahuje data:
Fmt[1:0] | Formát TLP |
00b | 3 DW, bez dat |
01b | 4 DW, bez dat |
10b | 3 DW a data |
11b | 4 DW a data |
- Type udává typ paketu TLP, respektive typ operace, co se bude provádět. Je vázán také na Fmt. Příslušné kombinace Fmt a typu operace jsou uvedeny v tab. 4.
- TC udává Traffic Class
- TD povoluje připojení ECRC (TLP Digest) ke konci paketu
- EP nese informaci o chybě vzniklé v datech, například při chybě parity při čtení ze sběrnice PCI. Tato chyba nemusí být nutně kritická. Jedná se o informaci pro nadřazený sytém, který se s chybou vypořádá. Tato chyba se nesmí vyskytnou v žádné jiné části než datové! Proto se tomuto mechanizmu také říká data poisoning.
- Attr atributy udávající informace pro přenos dat a koherenci cache
- Lenght jde o délku přenášených dat v DW uvnitř paketu. Tedy maximální délka může být 2**10 DW = 4096 bytů
Obrázek 12: Formát hlavičky paketu sběrnice PCI Express
Typ TLP | Fmt | Type | Popis |
MRd | 00/01 | 0 0000 | Žádost o čtení z paměti |
MRdLk | 00/01 | 0 0001 | Žádost o čtení z paměti s požadavkem na Lock |
MWr | 10/11 | 0 0000 | Žádost o zápis do paměti |
IORd | 00 | 0 0010 | Žádost o I/O čtení |
IOWd | 10 | 0 0010 | Žádost o I/O zápis |
CfgRd0 | 00 | 0 0100 | Konfigurační čtení typu 0 |
CfgWr0 | 10 | 0 0100 | Konfigurační zápis typu 0 |
CfgRd1 | 00 | 0 0101 | Konfigurační čtení typu 1 |
CfgWr1 | 10 | 0 0101 | Konfigurační zápis typu 1 |
Msg | 01 | 1 0rrr | Žádost o zprávu - rrr viz tab. 5 |
MsgD | 11 | 1 0rrr | Žádost o zprávu - rrr viz tab. 5 |
Cpl | 00 | 0 1010 | Dokončení transakce bez dat |
CplD | 10 | 0 1010 | Dokončení transakce s daty |
CplLk | 00 | 0 1011 | Dokončení transakce bez dat s Lockem |
CplDLk | 10 | 0 1011 | Dokončení transakce s daty a s Lockem |
r[2:0] | Popis |
000 | Zpráva je směřována na root complex |
001 | Směrováno podle adresy |
010 | Směrováno podle ID |
011 | Vysíláno root complexem |
100 | Lokální - ignorováno v příjímači |
101 | Zpráva je odeslána do RC switchem až po přijmu zprávy od všech zařízení |
110 a 111 | Nepoužívají se a jsou ignorovány |
3.2.5 Linková vrstva
Linková vrstva je vložená mezi transakční a fyzickou vrstvu. Jejím úkolem je zajišťování integrity dat - detekce a oprava chyb. Data přijatá z transakční vrstvy jsou opatřena kontrolním kódem, identifikačním číslem a poslána do fyzické vrstvy viz. obr. 13. Naopak data přijatá z fyzické vrstvy jsou otestována, zda neobsahují nějakou chybu a jsou poslána do transakční vrstvy. V případě výskytu chyby, vrstva zajišťuje opakovaný požadavek na data, dokud nejsou požadovaná data přitomná, nebo dokud není linka prohlášena za nefunkční.
Obrázek 13: Paket linkové vrstvy
3.2.6 Fyzická vrstva
Fyzická vrstva zajišťuje veškeré obvody nutné pro připojení k linku. Jsou to fázové závěsy, buffery, sério-paralelní a paralelně sériové převodníky, impedanční přizpůsobení a v neposlední řadě i logiku pro inicializaci a udržování spojení na linku (vyjednání přenosové rychlosti, formátu přenosu dat). Tato vrstva je zodpovědná za komunikaci mezi linkem a linkovou vrstvou. Paket přijatý z linkové vrstvy LLTP je doplněn o kódy začátku konce paketu podobně, jako je tomu u síťových paketů (Ethernet). Dále je paket zakódován kódem 8 na 10. Tím jsou do paketu doplněny další informace zajišťující synchronizaci. Potom je paket převeden na sériový kód a odvysílán do příslušného Lanu. Přijímací část fyzické vrstvy postupuje opačným způsobem. Dekóduje přijatý paket na řídící kódy, data a rekonstruuje hodiny. Pokud je rámec paketu v pořádku a odpovídá kontrolní součet, je odeslán do linkové vrstvy, dále je také odesláno potvrzení o přijetí dat zdroji transakce, který vyprázdní retry buffer. Pokud přijdou data s chybou, odesílá se do zdrojového portu požadavek na opakování transakce.
Je nutno podotknout, že pokud dojde v budoucnu ke změně formátu kódování (64bitů na 66bitů) nebo rychlosti, je třeba změnit pouze fyzickou vrstvu a není nutné měnit žádnou jinou vrstvu modelu PCI Express.
3.2.7 Virtuální kanály - VC a Traffic Class - TC
Každý PCI Express port může byt rozdělen až do 8mi virtuálních kanálů, identifikovaných číslem kanálu. Jak napovídá název, virtuální kanál není fyzickým kanálem, ale mapuje se na fyzické kanály v časovém multiplexu a podle pravidel určovaných arbitrážní logikou kanálů. Traffic class zajišťuje relativní prioritu mezi jednotlivými přenosy. Pomocí mapovaní TC na VC je možné zajistit deterministický a izochronní transfer dat tzv. Quality of Service.
Využití virtuálních kanálů a traffic classes umožňuje využít přenosovou trasu z hlediska přenosu velkých objemů dat (paketů). Horší situace nastane při vzniku požadavku na přenos série menších paketů. V takovémto případě je přenosová rychlost ovlivněna délkou paketu, kdy je k aktivním datům připojena řídící informace a to 5 DW hlavičky + 2 DW DLLP (Data Link Layer Packet). Dále požadavek na čtení je ovlivněn latencí (doba od poslání požadavku na čtení až po příjem dat). U zápisu není latence obvykle kritická, protože se tvoří přirozený pipe-line při průchodu dat směrem od zdroje k cíli. Posledním faktorem, který ovlivňuje rychlost čtení, je nastavení maximální délky požadavku na čtení v registru RCB. Nastavení se může pohybovat v rozsahu 128, 256, 512, 1024, 2048 a 4096 bytů. Přehled využití linky nám ukáže tab. 6.
Délka datové části paketu | Využití sběrnice PCI Express v[ %] | ||
byty | Zápis | Čtení RCB (256B) | Čtení RCB(128B) |
4 | 16 | 12 | 12 |
8 | 28 | 22 | 22 |
32 | 62 | 53 | 53 |
64 | 76 | 69 | 69 |
128 | 86 | 82 | 72 |
256 | 92 | 90 | 74 |
512 | 96 | 94 | 75 |
1024 | 98 | 97 | 75 |
2048 | 99 | 98 | 75 |
4096 | 99 | 98 | 76 |
3.3 Signály sběrnice PCI Express a mechanické uspořádání
Jak již bylo zmíněno v předešlých kapitolách, tak sběrnice PCI Express pracuje na jiných principech něž dosud používané sběrnice v počítačích PC. Základem je Line sestavený ze dvou diferenciálních párů a to příjímacího a vysílacího. Vlastní sběrnice je doplněna o další pomocné a napájecí signály. Přehled signálů pro konektor typu x1 a jejich popis je uveden v tab. 7.
Číslo pinu | Stran A | Stran B | ||
Název | Popis | Název | Popis | |
1 | +12V | Napájení +12V | PRSNT1# | Detekce přítomnosti karty Hot-Plug |
2 | +12V | Napájení +12V | +12V | Napájení +12V |
3 | RSVD | Vyhrazeno pro budoucí použití | +12V | Napájení +12V |
4 | GND | Zem | GND | Zem |
5 | SMCLK | System Managenet Bus Clock | JTAG2 | TCK, hodinový signál pro JTAG |
6 | SMDAT | System Management Bus Data | JTAG3 | TDI, vstupní data pro JTAG |
7 | GND | Zem | JTAG4 | TDO, výstupní data od JTAGu |
8 | +3,3V | Napájení +3,3V | JTAG5 | TMS, výběr modu pro JTAG |
9 | JTAG1 | TRST, reset JTAGu | +3,3V | Napájení +3,3V |
10 | 3,3Vaux | Pomocné napájení 3,3V - pro wake-up | +3,3V | Napájení +3,3V |
11 | WAKE# | Signál pro reaktivaci zařízení z PWD | PERST# | Reset |
12 | RSVD | Vyhrazeno pro budoucí použití | GND | Zem |
13 | GND | Zem | REFCLK- | Referenční hodinový signál, negativní |
14 | PETp0 | Vysílač - Lane 0 pozitivní | REFCLK+ | Referenční hodinový signál, pozitivní |
15 | PETn0 | Vysílač - Lane 0 negativní | GND | Zem |
16 | GND | Zem | PERp0 | Přijímač - Lane 0 pozitivní |
17 | PRSNT2# | Detekce přítomnosti karty Hot-Plug | PERn0 | Přijímač - Lane 0 negativní |
18 | GND | Zem | GND | Zem |
Konektor pro verze x2, x4, x8 a x16 je rozšířen o další nože konektoru - obvykle o čtyři pozice, které obsahují GND a přijímací a vysílací pár. Je nutno podotknout, že implementace některých signálů není nutná a je pouze doporučena. Detailní popis signálů bude rozebrán v následujícím odstavci, nebo v literatuře [3].
- REFCLK (nutno implementovat)
Referenční hodiny - obdoba signálu CLK jak ho známe ze sběrnice PCI. Vlastní hodinový rozvod se skládá z diferenciálních vodičů REFCLK+ a REFCLK- s rozsahem napěťových úrovní 0 - 0,7V. Pracovní kmitočet je stanoven na 100MHz ±300ppm. Zásuvná karta nemusí využívat referenční hodiny z konektoru, ale musí udržovat datový tok v rozsahu 600ppm. Referenční hodiny mohou využívat hodiny s rozprostřeným spektrem.
- PERST (nutno implementovat)
Signál inicializující kartu po zapnutí napájení, nebo může sloužit jako tzv. warm reset.
- WAKE# (nepovinné)
Signál pro reaktivaci zařízení z power down modu, otevřený kolektor. Tato funkce vyžaduje přítomnost napájecího napětí 3,3Vaux. Po detekci signálu WAKE# musí sytém zapojit hlavní napájení slotu a obnovit referenční hodiny.
- SMBus System Management Bus (nepovinné)
Sběrnice určená ke komunikaci mezi zařízeními, může zajišťovat doplňkovou zprávu power managementu, identifikovat verze firmwaru a hardwaru. Sběrnice se skládá ze dvou signálů SMCLK a SMDAT a odpovídá standardu I2C.
Napájecí napětí | 1x | 4x/8x | 16x |
+3,3V | |||
Tolerance napětí | 9% | 9% | 9% |
Proud | 3.0A (max) | 3.0A (max) | 3.0A (max) |
Zatížení (kapacita) | 1000uF | 1000uF | 1000uF |
+12V | |||
Tolerance napětí | 8% | 8% | 8% |
Proud | 0,5A(max) | 2,1A (max) | 4,4A (max) |
Zatížení (kapacita) | 300uF | 1000uF | 2000uF |
+3,3Vaux | |||
Tolerance napětí | 9% | 9% | 9% |
Proud | |||
Povoleny waku-up | 375mA (max) | 375mA (max) | 375mA (max) |
Nepovoleny wake-up | 20mA (max) | 20mA (max) | 20mA (max) |
Zatížení (kapacita) | 150uF | 150uF | 150uF |
3.3.1 Mechanické uspořádání
Mechanické uspořádání ukazuje obr. 14. Jak je vidět PCI Express konektor s šířkou X16 se využíje pro grafickou kartu a nahradí stávající AGP konektor. Další konektory budou pro běžné PC X1 a pro servery X4 nebo X8. Po dobu několika let se bude ještě udržovat standard PCI, který bude postupně nahrazen sběrnicí PCI Express (obdobný přechod se odehrával u sběrnice ISA, která byla postupně vytlačena PCI konektory).
Obrázek 14: Mechanické uspopřádání konektorů na základní desce PC v roce 2004
Rozměry přídavných karet by měly splňovat některá omezení, co se týče maximálních rozměrů dle tab. 9. Karty připojované pomocí kabelů mohou mít jiné rozměry a uspořádání.
Šířka linku | Typ karty | Výška karty | Šířka karty |
x1 | Standardní karty poloviční délky | 111.15 mm (max) | 167,65 mm (max) |
x1,x4,x8,x16 | Standardní karty plné délky | 111.15 mm (max) | 312 mm (max) |
x1,x4,x8,x16 | Karty s nízkým profilem | 68,9 mm (max) | 167,65 mm (max) |
4 Souhrn
Využití sběrnice PCI Express přináší zvýšení propustnosti dat v oblasti počítačů PC, zmenšení rozměrů karet, zjednodušení návrhu plošných spojů a sjednocení různých platforem, jako jsou síťové karty, grafické karty a komponenty přenosných počítačů. Dále specifikace umožňuje připojovat zařízení pomocí kabelů, což vede k vysoké univerzálnosti standardu (nepředpokládá se nahrazení rozhraní SerialATA).
Jako příklad porovnávající výkonnost sběrnice PCI a PCI Express uveďme síťovou kartu pracující na 1Gbitu/s, kdy máme k dispozici standardní počítač, který má sběrnici PCI v šířce 32 bitů pracující na frekvenci 33MHz. Tedy maximální datový tok, který může vzniknout, je 100Mbytu pro příjem a stejný objem pro vysílaní, což není standardní sběrnice PCI schopna přenést (max. propustnost je 133Mbytu/s v jednom směru) a potřebuje 124 nožů konektoru. Sběrnice PCI Express x1 potřebuje 36 nožů konektoru a maximální propustnost je 2,5Gbitů/s v obou směrech (při použití kódování 8/10 asi 250Mbytů surových dat za sekundu). Navíc propojení je typů peer-to-peer, takže datový tok není omezován žádným dalším zařízením na sběrnice. K saturaci může docházet až ve switchi nebo root complexu při přístupu do paměti. Připojení 4 takových síťových karet do systému je bez problému možné, co se týče sběrnice a propustnosti dat mezi pamětí a root complexem. Jako další příklad uveďme grafickou kartu pracující na sběrnici AGP. V současné době je maximální propustnost sběrnice AGP 2Gbyty/s jedním směrem. Při použití sběrnice PCI Express x16 bude propustnost směrem do karty dvojnásobná (viz. tab. 10) a směrem z karty bude možné využít další 4Gbyty/s. Tedy celková propustnost dat mezi grafickou kartou a hlavní pamětí činí 8Gbytů/s. Při využití plné šířky kanálu nebude v současnosti vznikat úzké hrdlo na sběrnici, ale spíš v paměťových modulech.
Zvýšení pracovní frekvence sběrnice ze současných 2,5Gbitu/s na 5Gbitů/s (3,125Gbitů/s) a později na 10Gbitů/s povede k lineárnímu nárůstu výkonu s frekvencí. Nasazení sběrnice s vyšší frekvencí zatím brání relativně vysoká cena nových technologií pracujících na frekvencích do 10Gbitů/s, nedostatečná propustnost dat mezi hlavní pamětí a sběrnicí a v neposlední řadě je nutné ověřit, funkčnost a vlastnosti masového nasazení technologie PCI Express.
Počet lanu v linku | x1 | x2 | x4 | x8 | x12 | x16 | x32 |
Počet vodičů pro jeden směr | 2 | 4 | 8 | 16 | 24 | 32 | 64 |
Přenosová rychlost v Gbitech/s | 2,5 | 5 | 10 | 20 | 30 | 40 | 80 |
Přenosová rychlost v Mbytech/s | 250 | 500 | 1000 | 2000 | 3000 | 4000 | 8000 |
Odvrácenou stránkou technologie PCI Express je relativní složitost vlastního protokolu, znemožňující jednoduchý, levný a rychlý návrh řadiče do hradlového pole. Navíc v současné době (rok 2004) neexistují běžně dostupné komponenty převádějící protokol PCI Express na uživatelsky "přívětivou" sběrnici, jak tomu bývalo dřív u výrobců PCI matchmakeru, které převáděly protokol PCI do paměťově mapovaných prostorů doplněných o sadu uživatelských registrů, mailboxu, doorbellu a DMA kanálů. Toto zatím znemožňuje návrh zařízení s touto technologií pro malosériovou výrobu v počtu stovek kusů.
Jako nejschůdnější řešení se jeví využití hradlových polí se sériovým interfacem schopným zpracovávat datový tok fyzické vrstvy kompatibilní s formátem PCI Express a implementovat zbývající vrstvy včetně logic core. Vhodná hradlová pole pro tento účel jsou Virtex II Pro, nebo Virtex II Pro X od firmy Xilinx a Stratix GX od firmy Altera.
Literatura
[1] PCI Special Interest Group. PCI Local Bus Specification, rev 2.3, March 29, 2002. Dostupné na www.pcisig.com
[2] PCI Special Interest Group. PCI-X Protocol Addendum to the PCI Local Bus Specification Revision 2.0a. July 22, 2003. Dostupné na www.pcisig.com
[3] PCI Special Interest Group. PCI Express Base Specification Revision 1.0a. April 15, 2003. Dostupné na www.pcisig.com
[4] Edward Solari, Brad Congdom: The Complete PCI Express Reference Design Insights for Hardware and Software Developers. Intel Press 2003, ISBN 0-9717861-9-4
Poznámky
- Jedná se o minimální počet pinů, nejsou zde zahrnuty přerušení, pomocné signály a napájecí piny
- Jde pouze o teoretické přenosové rychlosti, do kterých není započítaná žádná režie sběrnice
- MSI Message Signaled Interrupt
- MSI Message Signaled Interrupt
Autoři článku děkují za laskavou podporu projektu LN00B096, MSM262200012.