Lehrveranstaltung Speichersysteme Sommersemester 2009 Kapitel 9: Verbindungstechnologien I André Brinkmann
Gliederung Anbindung von I/O an Prozessoren Memory mapped I/O vs. Ported IO Programmed I/O vs. DMA SCSI ATA SAS und SATA
CPU Memory SchniOstelle CPU HautspeicherschniOstelle besteht aus: Uni direkqonalem Adressbus Bi direkqonalem Datenbus Taktsignal Write Enable Maskierungs Bits, weitere Steuersignale Hauptspeicherzugriff erfordert TransakQon auf dem Speicherbus: Read: Setze Adresse, Read, Mask Kopiere Daten nach spezifizierter Zeitdauer Schreiben: Setze Adresse, Daten, Write und Mask FerQg nach spezifizierter Zeitdauer CPU Adressbus Datenbus clk write enable mask bits Hauptspeicher Folie basiert auf Intel-Vorlesung "Introduction to Embedded Systems"
CPU Bus I/O CPU kommuniziert auch mit I/O Geräten wie Tastatur, Maus, Video, Netzwerk und FestplaOen Memory-mapped I/O Geräte werden in spezifischen Bereich des RAMs eingeblendet Benutzt Load/Store InstrukQonen CPU Address Data Read Write Memory Address I/O Device Ported I/O Spezielle Bussignale und InstrukQonen CPU Data Memory I/O Read Write Memory I/O Port I/O Device Folie basiert auf Intel-Vorlesung "Introduction to Embedded Systems"
So^ware Adressierung von I/O Geräten Memory mapped I/O Geräte werden in den Adressraum eingeblendet, z.b. 7 Segment Anzeige Standard Load and Store InstrukQonen manipulieren Geräte Ported I/O (I/O mapped I/O) Geräte werden NICHT auf den Adressraum abgebildet Spezielle Prozessorinstruk5onen fragen Daten von dem Gerät an Beispiel IN REG, PORT OUT REG, PORT Welches ist der bessere Ansatz? Memory mapped I/O benutzt bekannte Load/Store Paradigma. Es allokiert jedoch auch Teile des Adressraums Der volle Adressraum ist für den Fall von Ported I/O verfübar, es werden jedoch spezielle InstrukQonen und Kontrollsignale benöqg Folie basiert auf Intel-Vorlesung "Introduction to Embedded Systems"
I/O Register I/O Register verhalten sich NICHT wie normaler Speicher Ereignisse des Gerätes können Inhalt verändern (z.b. Status Registers) Lesen des Registers kann den Status verändern (z.b. Read Error CondiQon and Reset) Mehrfaches Lesen kann zu verschiedenen Ergebnissen führen Einige Register sind read only (z.b. Receive Register) Einige Register sind write only (z.b. Submit Register) Verschiedene I/O Register können auf dieselbe Adresse abgebildet werden Auswahl erfolgt durch weitere InformaQonen (z.b. Read vs. Write, Kontrollbits) Die Bits in einem Kontrollregister spezifizieren häufig sehr unterschiedliche Eigenscha^en und haben wichqge Seiteneffekte Cache muss für Memory Mapped I/O ausgeschaltet werden Beim Pollen von I/O Registern kann dem Compiler mitgegeben werden, dass der Inhalt sich von selbst Ändern kann volatile int *ptr; Folie basiert auf Intel-Vorlesung "Introduction to Embedded Systems"
Programmed I/O DMA (Direct Memory Access) Programmed I/O: Ein Programm auf dem Prozessor bewegt über Prozessor InstrukQonen Daten zu/von dem Gerät Ende einer TransakQon wird entweder über Polling oder durch Interrupts detekqert DMA verlangt zusätzliche Intelligenz der Geräte Ein Gerät kann Daten selbsoäqg mit Hauptspeicher austauschen Vorteil: Prozessor ist nicht länger eine Datenpumpe Nachteil: Deutlich komplizierter Folie basiert auf Intel-Vorlesung "Introduction to Embedded Systems"
DMA (Direct Memory Access) Prozessor On-chip Cache Memory Buffer Program DMA liest/schreibt in den Hauptspeicher Gerät Bus... während die CPU Instruktionen eines anderen Prozesses ausführt Folie basiert auf Intel-Vorlesung "Introduction to Embedded Systems"
Direct Memory Access Wie? Das Gerät kann Zugriffszeiten des Prozessors auf den Speicherbus klauen, wenn der Prozessor aktuell nicht liest oder schreibt Möglicher Ablauf Ein Block wird zur Übertragung vorbereitet, wobei dieser z.b. eine Größe von 512 Byte haben kann Eine Setup RouQne wird zur IniQalisierung der Übertragung ausgeführt Die Daten werden transferiert Ein Signal zeigt den Abschluss des Transfers an Weitere DMA Methoden sind möglich: Ein reines DMA Geräte kann Daten von/zu Geräten verschieben Sinnvoll, wenn viele dumme Geräte angeschlossen Folie basiert auf Intel-Vorlesung "Introduction to Embedded Systems"
Höhere Performanz Direct Memory Access Warum? Nur ein Interrupt für N Bytes, die transferiert werden. Dem steht ein Interrupt für jedes Byte ohne DMA Transfer entgegen Das Klauen von Buszyklen und das Durchführen des Transfers ist schneller als eine einzelne move() InstrukQon Ein Byte wird seltener über den Bus gesendet Wird für schnelle, block orienqerte Geräte verwendet: FestplaOen, Bandlaufwerke, Netzwerke,... Folie basiert auf Intel-Vorlesung "Introduction to Embedded Systems"
Direct Memory Access Beispiel OperaQonen auf dem Prozessor Lade Startadresse des Buffers Lade maximale Anzahl von Worten Starte DMA auf Gerät Warte auf einen Interrupt Verarbeite Inhalt der Daten struct dmadevice { /* device registers */ unsigned int startingaddressofbuffer; unsigned int wordcount; unsigned char controlandstatus; } OperaQonen auf DMA Gerät wait for start signal while (wordcount--) mem(address++) = devicedata; signal done (IRQ) Folie basiert auf Intel-Vorlesung "Introduction to Embedded Systems"
SCSI Standard SCSI ist eine RPC SchniOstelle zwischen Computern und Speichersystemen Command and Reply SCSI IniQatoren senden Kommandos SCSI Targets senden Antworten Struktur ermöglicht Erweiterung auf Netzwerke Read(block #, length) Reply(data=ABC) Folie basiert auf Vorlesung von R. Burns
SCSI System Jedes Speichersystem verfügt über einen SCSI Kontroller Jedem SCSI Kontroller muss eindeuqge ID zugeordnet werden Die Anfrage wird über ein Verbindungsmedium gesendet (SCSI Bus, FiberChannel, IP(Ethernet)) Anfragen werden in CDBs (Command Descriptor Blocks) übertragen Ziel einer Anfrage wird über ID festgelegt Host-Adapter SCSI ID 7 SCSI Kontroller ID 0 Disk 1 Lun 0 SCSI Festplatte SCSI-Bus CDB Host Computer SCSI Kontroller ID 1 Disk 2 Lun 0 SCSI Festplatte Folie basiert auf Vorlesung von R. Burns
Basic SCSI Kommandos: READ(6) Typisches Kommando: opcode(lun, LBN, length, control flags) SCSI Command Descriptor Block (CDB) (hier für Read(6)) Opcode spezifiziert Kommando LUN Logical Unit Number Logical Block Datenlänge 21 bits 512 * 2 21 = 1GB Keine Unterteilung in <Sektor, Zylinder, Kopf> # of logical blocks to transfer Control Extra Bits Folie basiert auf Vorlesung von R. Burns
Basic SCSI Kommandos: READ(10)
SCSI 2 Block Kommandos Übersicht
SCSI 2 Block Kommandos Übersicht
Folie basiert auf R. Elliot: Serial Attached SCSI General overview SCSI Standards
Folie basiert auf www.t10.org SCSI Module
ATA AT AOachment ATA FestplaOen sind heute die am meisten verbreiteten FestplaOen 1984 1986 durch Western Digital als IDE (Integrated Device Electronics) entwickelt Als ATA I Standard 1989 durch T13 Technical Commi0ee standardisiert Bietet Zugriff über PIO (Programmed I/O) oder DMA an Ermöglicht bis zu 2 Geräte pro Kontroller Mehr als 70 % Anteil am FestplaOenmarkt ATA ist eine I/O Register SchniOstelle zu den FestplaOen ATAPI (ATA Packet Interface) ermöglicht Übersendung einer Teilmenge der SCSI Kommandos an Speichergeräte
Programmierung einer ATA FestplaOe I Register der ATA FestplaOe werden in den I/O Bereich des Rechners eingeblendet Der I/O Bereich des IA32 I/O ist der Adressbereich 0x0000.. 0xFFFF Andere Rechner mappen den I/O Bereich in den regulären Adressbereich Eine FestplaOe entspricht somit für den Rechner einer Menge Register Der Prozessor liest/schreibt diese Register um die FestplaOe zu managen IA32 Architektur verfügt über spezielle InstrukQonen, um auf den I/O Bereich zuzugreifen IN und OUT InstrukQonen lesen/schreiben Geräteregister Beispiel MOV DX, 0x8000 MOV AL, 0x0000 OUT DX, AL Folie basiert auf Vorlesung von R. Burns
Folie basiert auf Vorlesung von R. Burns Programmierung einer ATA FestplaOe II
Programmierung der ATA Register Jedes Register muss mit den korrekten InformaQonen belegt werden Gerät führt programmierte InstrukQon aus Beispiel: Lesen eines Sektors von der FestplaOe SectorNumberRegister CylinderRegister Drive/headRegister SectorCounter CommandRegister: Read with PIO (Programmed I/O) Anschließend setzt Gerät das StatusRegister[BusyBit] auf 1und startet Lesevorgang Nach Abschluß des Lesevorgangs wird StatusRegister[BusyBit] zurückgesetzt und das StatusRegister[DRQ] Bit auf 1 gesetzt Server erkennt am Statusregister, dass Daten aus dem FestplaOen Buffer eingelesen: for (j< 0; j < sizeofread; j++) osbuffer[j] = dataregister; /* done with IN instruction */ Folie basiert auf Vorlesung von R. Burns
Folie basiert auf R. Elliot: Serial Attached SCSI General overview ATA Standards
Parallel Seriell SCSI und ATA waren ursprünglich parallele Verbindungstechnologien Parallele Übertragungstechniken haben Grenzen erreicht Lange Kabel führen zu Clock Skew zwischen den einzelnen Leitern Hohe Frequenzen führen zu Cross Talk zwischen den Leitern Hoher Aufwand notwendig, um gleichzeiqg Übertragungsrate und Reichweite zu erhöhen Serielle Übertragungstechnik verspricht, beide Parameter gleichzeiqg skalieren zu können
Folie basiert auf R. Elliot: Serial Attached SCSI General overview (Alte) Serielle SCSI Protokolle
SAS und SATA Serielle SCSI Protokolle bisher für den Au~au von Speichernetzwerken ausgelegt Serial ATA (SATA) als Ersatz für Parallel ATA Serial AOached SCSI (SAS) als AlternaQve für den Einsatz in einem Server SAS unterstützt SCSI und ATA Physikalische Schicht für SAS und SATA idenqsch Bis zu 3 GBit/s pro Port 8B/10B Kodierung 3 GBit/s entsprechen 300 MByte/s 3 verschiedene Transportprotokolle Serial SCSI Protocol (SSP) Unterstützt SAS (SCSI) FestplaOen, Bandlaufwerke, etc. Serial ATA Tunneling Protocol (STP) Unterstützt Serial ATA Laufwerke Serial Management Protocol (SMP) Unterstützt SAS Expanders Folie basiert auf R. Elliot: Serial Attached SCSI General overview
SAS Direct AOached und Expander AOached
SAS Netzwerke
Kostenvergleich SCSI ATA I
Kostenvergleich SCSI ATA II
Kostenvergleich SCSI ATA III