Grundlagen der Rechnerarchitektur
Ein‐ und Ausgabe
Übersicht
• Parallele und Serielle Busse
• Zugriff auf IO‐Geräte
• Parallelität und IO: Raid‐Systeme
Parallele und Serielle Busse
Interaktion zwischen Chips über deren Pins
Verbindung der zusammenpassenden Pins von CPU, Speicher und I/O über parallel laufende Leitungen: Bus
Adress‐Pins (übliche Werte 16, 20, 32) und Daten‐Pins (übliche Werte 8, 16, 32, 64) für Speicherzugriff
Des Weiteren Control‐Pins:
• Bus‐Control: Zur Steuerung von Speicher und IO durch die CPU
• Interrupts: Zur Unterbrechung der CPU durch I/O
• Bus‐Arbitration: zur Regelung des Bus‐Zugriffs durch mehrere
Teilnehmer (CPU ist gewöhnlicher Bus‐Teilnehmer)
• Coprocessor‐Signaling: Kommu‐
nikation zwischen CPU und
Coprozessor (Beispiel: Coprocessor0
Interaktion zwischen Chips über deren Pins
Typischerweise spezieller Bus zwischen CPU und Speicher und mindestens einen weiteren Bus für I/O.
Orchestrierung des Bus über Bus‐Controller; erfordert Bus‐Protokoll Des Weiteren, Elektrische und Mechanische Spezifikation
(Austauschbarkeit von Komponenten; Dritthersteller) Beispiele für Bus‐Standards:
• Omnibus (PDP‐8), Unibus (PDP‐11), Multibus (8086), VME, IBM PC (PC/XT)
• ISA (PC/AT), EISA (80386), Microchannel (PS/2), Nubus (Mac), PCI (PC), SCSI, USB, Firewire,…
Bemerkung: Kommunikation zwischen Register und ALUs über On‐Chip Bus
Master/Slave
Master: Gerät welches Aktion über den Bus imitiert Slave: Gerät welches auf Request wartet
Geräte können auch beides sein Beispiele:
Master Slave Beispiel‐Aktion
CPU Speicher Fetch von Instruktionen und Daten
CPU IO‐Gerät Datentransfer initiieren
CPU Coprocessor Instruktion an Coprozessor weiter geben
IO‐Gerät Speicher DMA (siehe später)
Coprocessor CPU Coprozessor liest Operanden aus der
Bus Driver, Reciever, Transceiver, Decoder
Bus‐Driver: verstärkt Signale eines Masters für den Bus Bus‐Receiver: dasselbe für Slaves
Transceiver: Baustein für Chips die Master und Slave sind Abbindung mehrerer auf zwei Arten:
• Tri‐State – Gerät wird vom Bus getrennt
• Wired‐Or – In Leitung können mehrere mehrere Signale gleichzeitig sein
Adress‐, Daten‐ und Control‐Pins eines Gerätes müssen nicht 1‐zu1 mit dem Bus übereinstimmen; in diesem Fall benötigt man einen Decoder‐Chip
Beispiel: Drei CPU Pins zum encoden von Memory‐Read, Memory‐
Write, IO‐Read, IO‐Write auf einzelne Control‐Leitungen des Busses
für diese Funktionen abbilden
Generelle Bus‐Designmerkmale
• Breite (d.h. Anzahl Adress‐ und Datenleitungen)
• Clocking
• Arbitrierung
• Operation
Designmerkmal Breite
Tradeoff zwischen Systemkosten (Anzahl Leitungen und Platz auf dem Mother‐Board,
Konnektor‐Breite) und maximal adressierbare Speichergröße bzw. Bus‐Performance (durch mehr parallele Datenleitungen)
Manche Bussysteme sind über die Jahre „gewachsen“. Beispiel: IBM‐PC EISA
(Ebenso für Datenleitungen: 81632)
Solche Backward‐Kompatibilität zu älteren Systemen macht den Bus nicht gerade überschaubar…
Reduktion von Busleitungen auch mittels Multiplexed‐Bussen möglich (erst Adresse senden dann Daten über dieselben Adressleitungen schreiben/lesen)
Designmerkmal Clocking
Offensichtlich: Höhere Bustaktung = höhere Performance; aber höhere Taktung
irgendwann problematisch aufgrund von Bus‐Skew (Signalleitungen unterschiedlicher Länge führt zu unterschiedlichen Signalempfangszeiten)
Generelle Unterscheidung bzgl. Taktung
• Synchron – eine Clock; Busoperationen benötigen immer ein ganzzahliges Vielfaches der Bus‐Cycle‐Time (Typische Bus‐Taktfrequenzen zwischen 5 bis 100MHz)
• Asynchron – jedes Paar von Geräten kann mit „individuellem Takt“ über die Busleitungen kommunizieren
Designmerkmal Arbitrierung
Zugriff mehrerer Master (CPU, Coprozessor, IO) auf den Bus erfordert Bus‐Arbitrierung Zwei Arten möglich:
Gezeigtes Beispiel (a): Daisy‐Chaining
Problem: Priorität implizit durch Position in der Kette; Lösung: mehrere Ketten mit Prioritäts‐Level (siehe (b) für 2 Level; häufig 4, 8 oder 16 Leitungen)
Dezentrale Arbitrierung: einfache aber unflezible nicht platzsparende Lösung: für jeden eine separate Request‐Leitung, die auch die übrigen beobachten
Skalierbare Lösung (siehe (c))
Zentral Dezentral
(a)
(b)
(c)
Designmerkmal Operations
Neben den Bus‐Zyklen zum Schreiben und Lesen gibt es Zyklen auf denen auch
weitere Bus‐Funktionen stattfinden Beispiel 1: Block‐Transfer
Beispiel 2: Read‐Modify‐Write‐Buszyklus Verhindert dass mehrere CPUS gleichzeitig auf eine Speicherstelle zugreifen können (Erinnerung: Synchronisierung)
Beispiel 3: Interrupt‐Handling
Beispiele (1)
Entwicklung paralleler PC‐Bussysteme
• IBM PC – Standard auf 8088‐basierten Systemen (Geschichte)
• PC/AT – Weiterentwicklung des PC‐Bus für 80286 (Weiterer Connector für mehr
Adress‐ und Datenleitungen)
• ISA – Im wesentlichen PC/AT mit 8.33MHz Bus‐Takt und 16‐Bit Breite, d.h. 16.7 MB/sec
• EISA – im Wesentlichen Erweiterung von ISA auf 32‐Bit, d.h. 33.3 MB/sec
Diese Busse wurden wachenden Bedarf an Video‐Performance nicht gerecht (z.B.
1024x768 3‐Byte‐Farbe benötigt 135 MB/sec)
• PCI (Peripheral Component Interconnect)
• Original 32‐Bit bei 33MHz, d.h.
133MB/sec. Erweitert auf 64‐Bit bei 66MHz, d.h. 528 MB/sec
• Aber: nicht schnell genug für Speicher und nicht kompatibel mit alten Karten
• Damit: PCI‐Bridge
Beispiele (2)
Mit wachsendem Bedarf an Video‐Performance (z.B. wachsende Auflösung) Bedarf für speziellen Grafik‐Bus
• AGP (Accelerated Graphics Port) – initial „nur“ 264 MB/sec aber dediziert für Grafikkarte. Neuere Versionen: z.B. AGP3.0 8x mit 2.1 GB/sec
Beispiele (3)
Problem paralleler Busse: konkurrierende Master/Slaves beeinflussen die Performance Für mehr Performance Wechsel auf Switching mit Point2Point seriellen Verbindungen: PCIe (PCI Express)
• Analogon zu geswitchtem LAN
• Protocol‐Layering
• Physical – Lanes, Encoding
• Link – CRC, ACK, Flow‐Control
• Transaction – Virtual Circuits
• Software – Inteface zwischen PCIe‐
System und OS (Emulation von PCI über PCIe für OS welches noch auf PCI
basiert)
Analoge Entwicklungen
• ATA: SATA (Serial ATA)
• SCSI: Serial Attached SCSI (SAS), Fibre Channel und iSCSI.
Weitere übliche Serielle Bus‐Systeme (extern):
USB, FireWire
Bildquelle: Andrew S. Tanenbaum, „Structured Computer Organization“, Fifth Edition, 2006 Tabelle: https://de.wikipedia.org/wiki/PCI_Express