Inhalt Teil 8 (PCI-Bus) aus 5. Busse und Systemstrukturen 1 5.6 Der PCI-Local-Bus
5.6 Der PCI-Local-Bus (Peripheral Component Interconnect Bus) 2 Bridge Prozessor Cache Speicher Memory-Controller PCI-Bus-Controller Busarbitration Datenpuffer PCI-Bus PCI-Slave/Master PCI-Contr. Speicher EA Systembus, unabhängig vom Prozessortyp definiert 1994 Multimasterfähig Blocktransfers Sequentielle Zugriffe der CPU werden von der Bridge automatisch zu einem Burst zusammengesezt Sender u. Empfänger erhöhen gleichzeitig die Adressen Parallele Transfers. Parallel zum Prozessor/Speicherzugriff sind Transfers zwischen den PCI-Komponenten möglich. Synchroner Multiplexbus, 33 oder 66 MHz, 32 oder 64 Bit relativ hohe Busbandbreite zur Versorgung schneller Peripherie (Audio, SCSI-, LAN- Controller, Grafik) 32 Bit Daten, 33 MHz => 4 Byte * 33 MHz, max. 132 MByte/s 64 Bit Daten, 66 MHz => 8 Byte * 66 MHz, max. 528 MByte/s
Host-to-PCI-Bridge (Bridge/Memory-Controller) 3 Prozessor kann über die Bridge direkt auf den eigenen Speicher und den PCI-Slave zugreifen. Die Umsetzung der Buszyklen übernimmt die Bridge. Zugriff Prozessor Cache Speicher Prozessor- Buszyklen Bridge Memory-Controller PCI-Bus-Controller Busarbitration PCI-Bus PCI- Buszyklen PCI-Slave/Master PCI-Contr. Speicher EA P2P PCI-Master können direkt auf den Hauptspeicher über die Bridge zugreifen. (ähnlich wie DMA-Transfers) weitere PCI-Komponenten
Begriffe 4 Bus Components, Agents, Devices: angeschlossene Komponenten Master (Initiator) : Bus Transaktion wird von einem Master initiiert Slave (Target) : interpretiert Kommando vom Master
Zugriffsräume 5 Konfigurationsraum Memory-Adressraum 256 Bytes normaler 32-Bit-Adressraum Zugriff über Aktivierung von IDSEL und Zugriffskommando Informationen Device-ID, Hersteller-ID, Geräteklasse (IO-Adressraum) nur 16-Bit Adressen, wird kaum noch benutzt Maske, die spezifiziert welche Kommandos von dem Device akzeptiert werden z.b. darf Busmaster sein, darf auf dem Memory-Bereich zugreifen, darf auf den IO-Bereich zugreifen 6 Basisadressregister (Anfangsadresse eines Blocktransfers) Statusinformation / Kontrollinformation Paritätsfehler, Abort (vom Target bzw. Master) Device-Select-Time (Reaktionszeit, die zwischen der Adressierung des Device und dezentraler Erkennung (DEVSL) vergeht) Latenzzeit (gibt an, wie lange die Aufforderung zur Rückgabe des Busses ignoriert wird) Interrupt-Nummer
Festlegung der Zugriffsräume 6 Adressbereiche, die ein Device im Memory- oder IO-Adressraum belegt, werden durch Basisregister definiert Basisadresse Memory-Adressraum Bit 2,1,0 = 000 Bit 3: Zugriffe sind im Vorgriff erlaubt Die Adressbits [k..4] = 0..0 definieren die Größe des Adressbereichs Die Bits 31..k+1 werden vom BS als Anfangsseitenadresse festgelegt (IO-Adressraum) Bits 1,0 = 00 Die höherwertigen Adressbits 31..2 definieren die Adressbereich Die PCI-Devices decodieren die Adressen selbst (dezentral). 00...0 k 4 0000 Adressraum Adressbereich Basisregister
Adressierung 7 Zugriff auf den Memory-Adressraum mittels der Wortadresse AD[31:2] und BE (Byte-Enable) AD[1:0] spezifiziert die Adressweiterschaltung Linear-Incrementing: Erhöhung der Adresse um 4 Bytes (32-Bit-Transfer) oder um 8 Bytes nach jeder Datenphase Cacheline-Wrap-Mode: Beginn bei beliebiger Adresse mit wrap-around. Zugriff auf den IO-Adressraum mittels der Wortadresse AD[31:2] Während der Datenphase gibt C/BE an, welches Byte gemeint ist.
Slot 1 Slot 2 Slot 3 Slot 4 Busarbitration 8 IDSEL Arbitration Control (Auswahl Master) REQ# GNT Arbitrierung erfolgt "hidden" (überlappend) nach jedem Transfer neue Arbitration PCI HOST AD C/BE# Control Interrupt Control IRQ# 4
Busmastering 9 1. Busanforderung Device fordert beim zentralen Arbiter den Bus an (REQ-Signal) Zentraler Arbiter gibt die Buskontrolle ab (GNT) 2. Datenübertragung Device fungiert als Master und generiert die erforderlichen Kontrollsignale und Adressen 3. Busrückgabe Device deaktiviert das REQ-Signal Arbiter bestätigt durch Deaktivierung von GNT Vorzeitige Busrückgabe Arbiter deaktiviert GNT Device gibt Bus nach einer voreingestellten (konfigurierten) Latenzzeit zurück
Signale 10 Die wichtigsten Signale AD C/BE# FRAME# IRDY# TRDY# DEVSEL# Multiplexbus, Adressen, Daten (Initiator) Kommandos / Byteauswahl (Initiator) Aktiv vom Beginn bis zum vorletzten Takt der Übertragung (Initiator) Bereit zur Durchführung und Beendigung der Datenphase (Target) Bereit zur Durchführung und Beendigung der Datenphase (Target) Adresse erkannt (selektiert) Alle Signale haben Pullup-Widerstände
Signalarten (ausführlich) 11 Signalarten in Input Eingangssignal out Totem Poole Output Ausgangssignal mit hohen Strömen, nur ein Treiber erlaubt. t/s Tristate bidirektionaler Tri-State-Ausgang mit Eingangsport. s/t/s Sustained Tristate 0-aktives EA-Signal, das zu einem Zeitpunkt nur von einem Device aktiviert werden darf. Freigabe durch Setzen auf HIGH für mindestens einen Takt. Frühestens einen Takt noch HIGH darf das Singal wieder 0 werden. Ein zentraler Pullup-Widerstand ist erforderlich. 0/d Open Drain von mehreren Devices nutzbares Aktivierungssignal, Wired-or-Funktion
PCI-Schnittstellen-Signale (ausführlich) 12 AD[31:0]# t/s Adress or Data im Multiplexbetrieb. Turnaround bei READ. C/BE[3:0]# t/s Bus Command während der Adressphase oder Byte Enable während der Datenphase PAR t/s Parity: Parität über AD und C/BE FRAME# s/t/s Cycle Frame, aktueller Master zeigt Beginn und Dauer der Transaktion an. IRDY# s/t/s Initiator Ready, Bereitschaft des aktuellen Masters, die aktuelle Datenphase abzuschließen. TRDY# s/t/s Target Ready, Bereitschaft des angewählten Targets, die aktuelle Datenphase abzuschließen STOP# s/t/s Stop: Target signalisiert dem Master, dass es die Transaktion abbrechen möchte. DEVSEL# s/t/s Device Select: Target meldet dem Master, dass es angewählt wurde. IDSEL in Initialisation Device Select: Chip-Select Signal für die Konfigurationsregister REQ# s/t/s Request: Busanforderungssignal von jedem Master zum Arbiter GNT# in Grant: Bus-Grant-Signal vom Arbiter zu jedem Master PERR# s/t/s Parity Error: Datenparitätsfehler bei Bustransaktion, erzeugt vom Datenempfänger SERR# o/d System Error: schwerwiegender Systemfehler RST# in Reset: Initialisierung der PCI-spezifischen Register und Signale CLK in Clock: Bustakt (33/66 MHz)
Busoperationen 13 Master sendet Kommandos zum Target. Explizite Adressierung Memory- und IO-Adressraum Kommandos bewirken Lese- oder Schreibzugriffe mit expliziter oder impliziter Adressierung. Implizite Adressierung Konfigurationsregister, Targets, ggf. Interrupt-Controller codiert in C/BE[4]#, Übertragung während der Adressphase 12 der 16 Codierungen werden benutzt.
Buskommandos 14 C/BE[4]# Configuration-Read, Configuration-Write Memory-Read, Memory Write Memory-Read-Line Memory-Read-Multiple Zugriff auf den Konfigurationsadressraum (256 Bytes) im Konfigurationszyklus. Quasi-implizite Adressierung. Zugriff auf den Memory-Adressraum. Explizite Adressierung. Einzel- und Blocktransport. Lesen einer (Cache)-Line aus dem Speicher (prefetch bis zum Ende der Cache-Line erlaubt) Lesen mehrerer (Cache)-Lines (The memory read multiple command allows pre-fetch even beyond the end of the current cache line) Memory-Write-and- Invalidate I/O-Read, I/O-Write Interrupt-Acknowledge Special-Cycle Dual-Address-Cycle (Zurück) Schreiben von mindestens einer ganzen (Cache)-Line in den Speicher. (bei Write Back: Cache Lines des Prozessors können auf Invalid gesetzt werden) Zugriff auf Targets, die im IO-Adressraum liegen. Explizite Übertragung der Adresse. (Sonderfall für alten 8259 kompatiblen IR-Controller, Lesezugriff) (Lesen der Vektornummer) Broadcasting einer Nachricht an alle Agenten. 64-Bit-Adressierung im Memory-Adressraum von Targets in zwei Zyklen.
Write-Block-Transaction 15 I I FRAME# Signal vom Master, bestimmt Beginn und Ende der Transaktion I I T T DEVSL# Antwort vom Target, Adresse erkannt, Anwahl bestätigt IRDY#, TRDY# Nur wenn wenn Initiator und Target Ready sind, findet ein Datentransfer statt. Ansonsten werden Wartezyklen eingeschoben.
Read-Block-Transaction 16 I I T I I T T
Beispiel: CEPRA-1X, Prozessor für die zellulare Verarbeitung mit PCI-Interface 17 holt sich einen Datenblock aus dem Hauptspeicher schreibt einen Datenblock in den Hauptspeicher schreibt einen Datenblock in den Grafikspeicher
CEPRA-64b 18 Entwickelt von D. Paschka 2007 Hardware: PCI-Einsteckkarte mit Cyclone II FPGA (483 840 Logic Elements, 33 216 Speicherbits) 64 MB DDR2 DRAM-Speicher FPGA-Configware, entwickelt mit ALTERA- Quartus, Verilog PCI-Interface DDR2-Interface Blocktransfers zwischen dem DDR2-Speicher und den lokalen Speichern auf den FPGA C-Treiber für die Karte unter Linux Cellular Automata Configware Zellgröße: 64 bis 1 Bit Verarbeitungsprinzip: Zeilenpuffer für die letzten zwei Berechnungszeilen, ein Ausgabe- Zeilenpuffer Berechnung von k Generationen, die sich im DDR2-Speicher befinden System-Software zur Kommunikation mit dem Host-PC Filetransfers zwischen DDR2-Speicher und PC über DMA Remotezugriff auf den PC Anwendungssoftware CA-Beispiel-Anwendungen