PCI

Aus Foxwiki

Grundlagen

  • PCI-Steckplätze können genutzt werden, um Erweiterungskarten auf die Hauptplatine eines Computers zu stecken (Sound-, Netzwerk-und Grafikkarten usw.).


PCI-Express- und PCI-Steckplätze auf einer PC-Hauptplatine
von oben nach unten
  • PCI-Express x4, x16, x1, x16 und konventionelles PCI
  • Zum Überblick über den PCI-Bus benutzt man das Kommando lspci.
  • Das Kommando unterscheidet drei verbose Stufen. lspci -v gibt sehr detaillierte Informationen über den PCI-Bus.

´

# lspci -v
...
00:02.0 VGA compatible controller: Intel Corporation Atom Processor Z36xxx/
Z37xxx Series Graphics & Display (rev 0e) (prog-if 00 [VGA controller])
Subsystem: Lenovo Device 368d
Flags: bus master, fast devsel, latency 0, IRQ 88
Memory at b0000000 (32-bit, non-prefetchable) [size=4M]
Memory at a0000000 (32-bit, prefetchable) [size=256M]
I/O ports at f080 [size=8]
[virtual] Expansion ROM at 000c0000 [disabled] [size=128K]
Capabilities: [d0] Power Management version 2
Capabilities: [90] MSI: Enable+ Count=1/1 Maskable- 64bit-
Capabilities: [b0] Vendor Specific Information: Len=07 <?>
Kernel driver in use: i915
  • Das Programm lspci bezieht seine Informationen aus dem Verzeichnis /proc/bus/pci
  • Es wertet die Dateien aus und stellt sie übersichtlich dar.
  • Mit -t stellt lspci die PCI-Geräte in einem Baumdiagramm dar.
Prinzipielle Darstellung des PCI-Busses

PCI-Express

  • PCI Express („Peripheral Component Interconnect Express“, abgekürzt PCIe oder PCI-E)[[1]] ist ein Standard zur Verbindung von Peripheriegeräten mit dem Chipsatz eines Hauptprozessors.
  • PCIe ist der Nachfolger von PCI, PCI-X und AGP und bietet im Vergleich eine höhere Datenübertragungsrate pro Pin.
  • Während ihrer Entwicklung wurde die Schnittstelle „3GIO“ (3rd Generation Input/Output) genannt.
PCIe-Graphikkarte


Technik

Verbindungen

  • PCIe besteht aus dedizierten Punkt-zu-Punkt-Verbindungen.
  • Einzelne Komponenten werden über Switches verbunden.
  • Diese ermöglichen direkte Verbindungen zwischen einzelnen PCIe-Geräten, so dass die Kommunikation einzelner Geräte untereinander die Datenrate anderer Geräte nicht beeinflusst.

Taktung

  • Die einzelnen Punkt-zu-Punkt-Verbindungen von PCIe werden durch eine oder mehrere Lanes einer selbstgetakteten seriellen Verbindung ausgeführt.
  • Es gibt kein eigenes Taktsignal, lediglich ein Referenztakt von 100 MHz wird separat übertragen.
  • Die Taktrückgewinnung erfolgt aus dem Empfangssignal.

Kodierung

  • Dieses ist speziell dafür kodiert (bis PCIe  2.1 nach dem 8b/10b, PCIe 3.0 bis 5.0 eine „Scrambling“-Kodierung, welche 128 Netto-Datenbits jeweils 2 Synchronisations-Bit voranstellt).
  • Ab PCIe 6.0 werden pro Symbol 2 Bit übertragen, neben einem Synchronisationsymbol kommen 15 Symbole zur Vorwärtsfehlerkorrektur dazu.

Senden und Empfangen

  • Für das Senden der Daten werden Parallel-zu-seriell-Wandler und für den Empfang Seriell-zu-parallel-Wandler in den Baugruppen eingesetzt.
  • Trotz dieses sehr abweichenden Aufbaus ist PCIe softwareseitig voll kompatibel zu PCI, so dass weder Betriebssysteme und Treiber noch Anwendungsprogramme angepasst werden müssen.

Datenübertragung

  • PCIe ist vollduplexfähig (dual-simplex) und arbeitet je nach Version mit 250, 500, 985, 1969 oder 3938 MB/s pro Lane und Richtung.
  • Sämtliche Datenübertragungen und sämtliche Signale (z. B. IRQs) auf der PCIe-Verbindung werden in Pakete aufgeteilt.

Aufbau

  • Auf Grund des anderen elektrischen Aufbaus und der anderen Übertragungsform sind keine Mischgeräte möglich.
  • Das ist auch durch die Anschlüsse bedingt, so dass für PCIe-Karten entsprechende Motherboards bzw. Controller verwendet werden müssen.
  • PCIe ist prinzipiell Hot-Plug-fähig, was das Ein- und Ausbauen von (z. B. defekten) Erweiterungskarten im laufenden Betrieb ermöglicht, sofern die HW und das Betriebssystem das unterstützen.

Topologien

  • PCIe kann über drei verschiedene elektrische Topologien angebunden sein:
  • PCIe-Gerät auf der Systemplatine
  • PCIe-Geräte verbunden über einen Steckverbinder auf der Systemplatine, in dem eine Add-On-Karte steckt
  • PCIe-Geräte verbunden über zwei Steckverbinder: einen auf der Systemplatine, in dem eine Riser-Karte[[2]] steckt, und eine/mehrere Add-On-Karte(n) im/in den Steckplatz(en) der Riser-Karte (wird von PCIe 4 passiv nicht mehr unterstützt).
  • Letztere weisen neben den Standardbusbreiten auch ×16 (als zwei ×8), ×24 (als drei ×8), ×32 (als zwei ×16) oder ×48 (als drei ×16) auf.
  • Bei den erhältlichen ×24, ×32 und ×48-Steckplätzen handelt es sich um Riser-Steckplätze zur Aufnahme von Erweiterungskarten, die dann 1 bis 3 PCI ×8- oder ×16-Karten aufnehmen können.

Übertragungsschichten

Lanes

  • Die Übertragung wird durch mehrere Schichten dargestellt, von denen jede nur mit den direkt benachbarten Schichten kommuniziert.
  • Für die auf dieser Schicht übertragenen Daten wird eine Fehlererkennung oder -korrektur durchführt.
  • Die unterste Schicht, der sog. Physical Layer, stellt die elektrische Verbindung zwischen zwei miteinander verbundenen Geräten dar.
  • Das sind z. B. ein Endgerät (z. B. eine Einsteckkarte) und der nächstgelegene Switch.
  • Die logische Verbindung („Link“) zwischen diesen Geräten besteht aus 1 bis 16 Lanes.
  • Jede Lane wiederum besteht aus zwei Leitungspaaren, je ein differentielles Paar für das Senden und Empfangen (dual-simplex).

Datenübertragung

  • Sämtliche Daten, die zwischen PCIe-Geräten übertragen werden, werden gemischt übertragen.
  • Da das serielle Protokoll jedoch nicht angehalten werden kann, ergibt sich eine höhere und auch schwankende Interruptlatenz[[3]].
  • Der Data Link Layer überträgt die Datenpakete des Transaction Layers zwischen den beiden Verbindungspartnern.
  • Dazu versieht er sie mit einer Sequenznummer, sowie einem 32-Bit-CRC-Wert, dem sogenannten Link CRC (LCRC).

Pakete

  • Empfangene Pakete werden dem direkten Verbindungspartner mittels Data Link Layer Packets mitgeteilt, ebenso wie der Zustand des Pakets.
  • Beschädigte oder verlorene Pakete werden vom Verbindungspartner erneut gesendet und vom höheren Layer von elektrischen Übertragungsstörungen entkoppelt.

Transaction Layer

  • Der Transaction Layer [[4]]transportiert die Nutzdaten zwischen dem logischen Sender und Empfänger, d.h. ohne Berücksichtigung der dazwischenliegenden Switches.
  • Die Transaction Layer Packets (TLP) enthalten im Header eine Kennzeichnung, um was für eine Art von Übertragung es sich handelt.
  • Typische Beispiele sind Schreibzugriffe (Writes) sowie Leseanforderungen (Reads) sowie Leseantworten (Completions). Schreibzugriffe sind sogenannte posted transactions, d.h., sie werden gesendet und erzeugen auf dem Transaction Layer keinerlei Antwort.

Stromversorgung

Ein PCIe-Steckplatz versorgt das angeschlossene Gerät mit Strom.

Spezifikation

  • Laut Spezifikation beträgt die gelieferte Leistung für einen Steckplatz max. 25 Watt, für Low-Profile-Karten höchstens 10 Watt und bei einem PEG-(PCIe-×16)-Steckplatz max. 75 Watt.
  • Diese max. 75 W sind aufgeteilt in 5,5 Ampere über 12 Volt (66 W) und 3 A über 3,3 V (9,9 W).

Stecker

  • Da das für manche Einsatzzwecke wie Grafikkarten oder USB 3.0-Karten jedoch häufig zu wenig ist, sieht die Spezifikation unterschiedliche Zusatzstecker zur Stromversorgung vor, sogenannte PCIe (Graphics) Power Supply Connector (auch PEG-Connector oder PCIe-Kabel), die +12 Volt liefern.
  • Die erste Version der Zusatzstecker hat 6 Pins und kann bis zu 75 W liefern, wodurch die dem Gerät max. bereitgestellte Leistung auf 150 W steigt, bei Nutzung zweier solcher Stecker auf 225W
  • In der Spezifikation von PCIe 2.0 wurde ein neuer Zusatzstecker mit 8 Pins definiert, der maximal 150 W führen kann.

  • Für noch höhere Leistungen kann ein zusätzlicher Stecker mit 6 Pins genutzt werden, der weitere 75 Watt zuführt, wodurch die max. Leistungsaufnahme einer PCIe-Karte auf 300 Watt begrenzt ist (75 W vom Steckplatz, 150 W 1. Stecker, 75 W 2. Stecker).
  • Neue Grafikkarten sehen die Verwendung von zwei 8-Pin-Steckern vor.
  • Dadurch erhöht sich die max. Leistungsaufnahme auf 375 Watt. (75 W vom Steckplatz, je 150 W pro Stecker).
  • Wenn ein 6-Pin-Stecker in eine 8-Pin-Buchse gesteckt wird, merkt die Karte am fehlenden Sense1, dass sie über die Kabelverbindung nur 75 W beziehen darf.

Slot-Varianten

Grössen

  • PCI-Express-Karten und PCI-Express-Steckplätze haben zwei Parameter:
  • Entsprechend der Länge des Slots oder Steckplatzes spricht man von PCIe ×1, PCIe ×4, PCIe ×8 oder PCIe ×16.
PCIe-Slotvarianten
  • Es gibt „offene“ Steckplätze, in die man mechanisch beliebig lange Karten stecken kann.
  • Allerdings funktioniert dort die Kartendetektion durch die #PRSNT-Kontakte nicht mehr.
  • Häufig entsprechen die max. verwendbaren Lanes eines Steckplatzes oder einer PCIe-Karte der mechanischen Länge, können aber auch kleiner, aber niemals größer sein.
  • Häufig anzutreffen sind mechanische ×16-Steckplätze, die elektrisch nur ×4 oder ×8 sind.
  • Oft sind bei Boards mit mehreren ×16-Steckplätzen diese bei gleichzeitiger Verwendung weniger Lanes bereitgestellt.
  • Im Desktopbereich wird meist ×1 als Ersatz für den PCI-Bus und ×16 als Ersatz für den AGP-Steckplatz zur Anbindung von Grafikkarten verwendet.
  • ×4 ist im Serverbereich für Karten mit hohem Durchsatz (Festplattencontroller, 10GE-Netzwerkkarten) zu finden.
  • Es gibt noch die PCIe-Varianten ×4 und ×8.
  • Die Slots sind abwärtskompatibel, d.h. eine ×1-Karte kann z. B. auch in einen ×4-Slot gesteckt werden, von den vier Lanes des Steckplatzes wird dann nur eine Lane genutzt.
  • Einige Motherboards besitzen PCIe-Steckplätze ohne abschließenden Steg („offener“ Steckplatz), so dass „größere“ Karten eingesteckt werden können.
  • Sogar das Aufsägen von geschlossenen Slots ist möglich, birgt aber das Risiko das Mainboard mechanisch zu zerstören.
  • Zudem dürfen keine Mainboard-Bauteile wie Kondensatoren, Stiftleisten, SATA-Anschlüsse oder M.2-Geräte den langen Anschluss an der Karte blockieren.

Anbindung von Lanes

  • Möglich ist auch, dass Slots eine von der Bauform abweichende Anbindung der Lanes haben.
  • Dies ist meist der Fall, wenn für SLI und Crossfire zwei (oder mehr) ×16-Slots vorhanden sind und die Hauptplatine bzw. der darauf verwendete Chipsatz keine 32 Lanes für die Grafikkarten bereitstellt.
  • Dann ist der untere Slot langsamer angebunden (meist ×4, oft auch nur mit der vorherigen Generation) und/oder er teilt sich bei seiner Verwendung die Lanes mit dem Hauptslot, was dann nur 8 Lanes auf dem Hauptslot ergibt.
  • Allerdings findet in letzterem Fall diese Verminderung der Übertragungskapazität nicht nur bei zwei Grafikkarten statt, sondern z. B. auch bei Verwendung einer ×16-Grafikkarte und einer ×1-Karte in diesen Slots, sodass die Grafikkarte nur mit ×8 läuft und 7 Lanes ungenutzt bleiben.
  • Das Verhalten einer Hauptplatine ist in ihren Spezifikationen und im Handbuch vermerkt.
  • Die Reduktion der Lanes senkt die Leistung allerdings nicht um den gleichen Faktor.
  • Durch Abkleben der Kontakte einiger der letzten PCIe-2.0-Karten sind meist nur geringe Leistungseinbußen festzustellen.
  • Bis runter auf PCIe 2.0 ×4 war der Verlust meist allenfalls messbar, während sich PCIe 2.0 ×1 dann negativ auswirkte, wenn der Speicher der Grafikkarte zu klein war.

Bereiche

  • Der Steckplatz ist mechanisch in zwei Bereiche unterteilt:
  • Im linken Bereich befinden sich immer 22 Steckkontakte, die hauptsächlich für die Stromversorgung und die Verwaltungskommunikation (SMBus, JTAG) verantwortlich sind.
  • Im rechten Bereich befinden sich je nach Anzahl der Verbindungen 14 bis 142 Steckkontakte, die für die eigentliche Nutzdatenübertragung und weitere Signale konzipiert sind.

Varianten

  • Darüber hinaus gibt es bei Notebooks miniaturisierte Varianten von PCIe, unter anderem ExpressCard, PCI Express Mini Card und M.2 für Erweiterungen wie WLAN und SSD oder als Mobile PCI Express Module für Grafikkarten.
  • Zunächst in Servern, mittlerweile auch in Desktop-Computer und Notebooks werden SSDs auch direkt über PCI-Express angesprochen, siehe U.2 und NVMe.
  • Auch M.2 ist hier inzwischen üblich.

Externe Links

  1. https://de.wikipedia.org/wiki/PCI_Express
  2. https://de.wikipedia.org/wiki/Riser-Karte
  3. https://en.wikipedia.org/wiki/Interrupt_latency
  4. https://www.tecchannel.de/a/pci-express-der-highspeed-datenbus-im-detail,401953,17