Implementierung eines auf Streaming optimierten SATA - TU Dresden

Implementierung eines auf Streaming optimierten SATA - TU Dresden

Fakultät Informatik, Inst. für Tech. Informatik, Prof. für VLSI-Entwurfssysteme, Diagnostik und Architektur Implementierung eines auf Streaming optim...

738KB Sizes 0 Downloads 2 Views

Fakultät Informatik, Inst. für Tech. Informatik, Prof. für VLSI-Entwurfssysteme, Diagnostik und Architektur

Implementierung eines auf Streaming optimierten SATA-Host-Bus-Adapters (HBA) Patrick Lehmann

Dresden, 11.04.2012

http://commons.wikimedia.org/

11.04.2012

Streaming optimierter SATA-HBA

Folie Nr. 2 von 39

Agenda 1

OSI-Referenzmodell

2

SATAController

3

Vom Frame zum Paket / Kommando

4

Streaming-optimierter Datenzugriff

5

Ausblick

1.1 1.2 2.1 2.2 2.3 3.1 3.2 4.1 4.2

Einordnung von Serial-ATA Einordnung von AT-Attachement Electrical-Physical-Layer Logical-Physical-Layer Link-Layer

Implementierungsvarianten ATAStreamingController

11.04.2012

Implementierungsvarianten StreamingDB

Streaming optimierter SATA-HBA

Folie Nr. 3 von 39

1 OSI-Referenzmodell

11.04.2012

Streaming optimierter SATA-HBA

Folie Nr. 4 von 39

1.1 Einordnung von Serial-ATA Bereich des Standards: • Neue elektrische Spezifikationen − Kabel, Stecker, Schirmung − Leitungskodierung

• Kompatibilitätsmodi − Transport von ATA-Registern − PIO- und DMA-Transfer − Native Übertragung von LBA48-Adressen

• Erweiterungen: − − − −

Geschwindigkeitsaushandlung Neues Programmiermodell (AHCI) Port-Multiplier (PM) Native-Command-Queuing (NCQ)

[4] Serial ATA: High Speed Serialized AT Attachment – Rev. 1.0a

11.04.2012

Streaming optimierter SATA-HBA

Folie Nr. 5 von 39

1.2 Einordnung von AT-Attachement ATA bleibt erhalten: • Transport der Befehle durch Registertransfers • Alle ATA Kommandos werden unterstützt • Erweiterung um neue DMA-Befehle für NCQ

Advanced Host Controller Interface (AHCI): • Parallele Abarbeitung von bis zu 32 ATA Kommandos • Erlaubt bis zu 15 Devices pro Host-Port (PM) • Taskfile basiertes Programmiermodell − Im Hauptspeicher abgelegte Frames − autonomer Transport über DMA-Engine (First Party DMA) [2] AT Attachemnet 8 – ATA/ATAPI Architecture Model [3] AHCI – Serial-ATA – Advanced Host Controller Interface Specification 1.3

11.04.2012

Streaming optimierter SATA-HBA

Folie Nr. 6 von 39

OSI-Referenzmodell – angepasst auf SATA [5] #

OSI-Layer

7

Application

6

Presentation

StreamingDB

5

Session

CommandLayer

4

Transport

TransportLayer

3

Network

2

Link

LinkLayer

1.2

Logical Physical

PhysicalLayer

1.1

Electrical Physical

TransceiverLayer

11.04.2012

Modulname

Streaming optimierter SATA-HBA

Folie Nr. 7 von 39

OSI-Referenzmodell – angepasst auf SATA [5] #

OSI-Layer

7

Application

6

Presentation

StreamingDB

5

Session

CommandLayer

4

Transport

TransportLayer

3

Network

2

Link

LinkLayer

1.2

Logical Physical

PhysicalLayer

1.1

Electrical Physical

TransceiverLayer

11.04.2012

Modulname

logische Verbindung - Übertragung von Frames, Sicherung per CRC physische Verbindung - Verbindungsaufbau, Geschwindigkeitsaushandlung FPGA spezifische Schicht - Konfiguration des MGT für SATA - Clock-Netzwerk, DCMs, PLLs, OOB-Signaling

Streaming optimierter SATA-HBA

Folie Nr. 8 von 39

OSI-Referenzmodell – angepasst auf SATA [5] #

OSI-Layer

7

Application

6

Presentation

StreamingDB

5

Session

CommandLayer

ATA8 Befehlsschicht - Versand und Empfang von Paketen - DMA-Zugriff, Native-Command-Queuing (NCQ)

4

Transport

TransportLayer

Serial-ATA Kompatibilitätsschicht - Transport von ATA8 Paketen in Serial-ATA Frames - Übertragung von Status- und Error-Bitvektoren

3

Network

2

Link

LinkLayer

1.2

Logical Physical

PhysicalLayer

1.1

Electrical Physical

TransceiverLayer

11.04.2012

Modulname

entfällt bei SATA bis Rev. 2.0 logische Verbindung - Übertragung von Frames, Sicherung per CRC physische Verbindung - Verbindungsaufbau, Geschwindigkeitsaushandlung FPGA spezifische Schicht - Konfiguration des MGT für SATA - Clock-Netzwerk, DCMs, PLLs, OOB-Signaling

Streaming optimierter SATA-HBA

Folie Nr. 9 von 39

OSI-Referenzmodell – angepasst auf SATA [5] #

OSI-Layer

7

Application

6

Presentation

StreamingDB

Verwaltung einer Zuordnungstabelle - Zugriff auf Datenblöcke über eine Blocknummer

5

Session

CommandLayer

ATA8 Befehlsschicht - Versand und Empfang von Paketen - DMA-Zugriff, Native-Command-Queuing (NCQ)

4

Transport

3

Network

2

Link

LinkLayer

1.2

Logical Physical

PhysicalLayer

Electrical Physical

TransceiverLayer

1.1

Modulname Beispielanwendungen: - Genom Alignment, SHAP

ATAStreamingController TransportLayer

Serial-ATA Kompatibilitätsschicht - Transport von ATA8 Paketen in Serial-ATA Frames - Übertragung von Status- und Error-Vektoren entfällt bei SATA bis Rev. 2.0 logische Verbindung - Übertragung von Frames, Sicherung per CRC physische Verbindung - Verbindungsaufbau, Geschwindigkeitsaushandlung

SATAController mit FIFO-Interface

11.04.2012

FPGA spezifische Schicht - Konfiguration des MGT für SATA - Clock-Netzwerk, DCMs, PLLs, OOB-Signaling

Streaming optimierter SATA-HBA

Folie Nr. 10 von 39

2 SATAController

11.04.2012

Streaming optimierter SATA-HBA

Folie Nr. 11 von 39

11.04.2012

Streaming optimierter SATA-HBA

Folie Nr. 12 von 39

2.1 Electrical Physical Layer Angebotene Dienste: • • • •

Ein FPGA und Hersteller unabhängiges Interface Konfiguration des MGT für Serial-ATA Kapselung des FPGA spezifischen Taktnetzwerkes Geschwindigkeitsumschaltung − Virtex5: − Virtex6:

Reprogrammierung zur Laufzeit Ändern von ClockDividern zur Laufzeit Reset des MMCM

• Erkennung von leeren Ports/neu angesteckten Geräten [3] PHY Interface for PCI Express 3.0 Architecture – PIPE 2.00

11.04.2012

Streaming optimierter SATA-HBA

Folie Nr. 13 von 39

Daten, OOB-Signale, Clocks, Reset

Konvertierung Byte <=> 32Bit Wort

GTP TX

11.04.2012

Reconfig

Device Detection

GTP RX

Streaming optimierter SATA-HBA

Folie Nr. 14 von 39

2.2 Logical Physical Layer Angebotene Dienste: • • • •

Physischer Verbindungsaufbau Geschwindigkeitsaushandlung Erkennung von Leitungsfehlern (z.B. 8B10B Fehler) Senden und Empfangen von Hardresets

[6] SATA Storage Technology, MindShare Press

11.04.2012

Streaming optimierter SATA-HBA

Folie Nr. 15 von 39

Logic OOBHandshaking PrimitiveMux

11.04.2012

SpeedControl

Streaming optimierter SATA-HBA

PrimitiveDetector

Folie Nr. 16 von 39

2.3 Link Layer Angebotene Dienste: Logische Verbindung herstellen und halten Verpacken von Daten in Frames CRC-Berechnung und Prüfung am Paketende Scrambling SATA-Primtive in Datenstrom einfügen/entfernen Flusskontrolle durch HOLDP Primitive Richtungsaushandlung zwischen Host und Device Bestätigungs-/Fehlermeldung über R_OKP, R_ERRORP Primitive • Frames wiederholt senden • Sende- und Empfangs-FIFOs (ca. 8kB)

• • • • • • • •

[6] SATA Storage Technology, MindShare Press

11.04.2012

Streaming optimierter SATA-HBA

Folie Nr. 17 von 39

2.3 Link Layer LinkLayer Interface: • Command, Status, Error • 32-Bit FIFO Interface für TX und RX − *_Ready, *_Valid − *_Data, *_SOF, *_EOF

• 2-Bit FIFO Interface für Frame-Status − *_Ready, Valid − *_SendOK, *_CRC_OK, *_Abort

• Diverse Generics zur Parametrierung (Auswahl) − Anzahl der Ports − Porttyp (Host / Device) − Timeout-Zeiten [1] Xilinx LocalLink Interface Specification (SP006)

11.04.2012

Streaming optimierter SATA-HBA

Folie Nr. 18 von 39

TX-FIFO

CRC32

11.04.2012

RX-FIFO

LinkLayer FSM

CRC32

Scrambler

Scrambler

Primitives

Primitives Streaming optimierter SATA-HBA

Folie Nr. 19 von 39

FPGA Ressourcenverbrauch Virtex5 – LX50T Virtex6 – LX240T 1 Port 2 Ports 1 Port 2 Ports LUTs

ca. 1250

ca. 2600

Slices

ca. 620

ca. 1270

ca. 660

ca. 910

Register

ca. 600

ca. 1030

ca. 660

ca. 660

BlockRAM

4

8

4

8

MGTs

1

1

1

2

3/-

5/-

2/1

4/1

1

1

1

2

8,5 %

17,6 %

1,8 %

2,4 %

BUFG / BUFR DCM bzw. MMCM Gesamtverbrauch1 1 Gesamtverbrauch

11.04.2012

ca. 1450 ca. 2060

= max(LUTs, Slices, Register)

Streaming optimierter SATA-HBA

Folie Nr. 20 von 39

SATAController - Anwendungsfälle Genom

SHAP

ATAStreaming Controller

AHCI Controller

SATAController Thema der Bachelor-LinkLayer arbeit

BoardBoard

FullduplexLinkLayer

PhysicalLayer

TransceiverLayer

Virtex5.GTP 11.04.2012

Virtex6.GTXE1 Streaming optimierter SATA-HBA

Folie Nr. 21 von 39

3 Vom Frame zum Paket / Kommando

11.04.2012

Streaming optimierter SATA-HBA

Folie Nr. 22 von 39

Implementierungsvarianten AHCI Controller: + +

Hauptspeicher (z.B. SRAM) DMA-Engine Blockweise Datentransfers Zusätzlicher Overhead durch DMA-Setup-FISes NCQ ist realisierbar (bis zu 32 ausstehende Operationen) Vollduplex

ATAStreamingController: + +

BlockRAM für FIFOs (ca. 8 kB) Halbduplex DMA Bursttransfers (bis zu 32 MB/Burst) FIFO Interface

11.04.2012

Streaming optimierter SATA-HBA

Folie Nr. 23 von 39

11.04.2012

Streaming optimierter SATA-HBA

Folie Nr. 24 von 39

Unterstützte ATA8 Kommandos Command Category

Command Name

Non-Data

FLUSH_CACHE_EXT

PIO-Data-In

IDENTIFY_DEVICE

DMA-In

READ_DMA_EXT READ_FPDMA_QUEUED

DMA-Out

WRITE_DMA_EXT WRITE_FPDMA_QUEUED

Kompatibilitätseinschränkung: • DMA-Transfers • LBA Adressierung im 48-Bit Modus [2] AT Attachemnet 8 – ATA/ATAPI Command Set

11.04.2012

Streaming optimierter SATA-HBA

Folie Nr. 25 von 39

ATAStreamingController TransportLayer Dienste: • ATA Paket- und Sitzungsverfolgung • Transparente Register Transfers • Extraktion von Daten FISes

CommandLayer Dienste: • ATA8 Kommando Generierung • Auswertung des IDENTIFY_DEVICE Antwortpaketes • Adressumrechnung: − Umrechnung von n AppLB in m DevLB − 1 AppLB := 8 kB − 1 DevLB umfasst je nach Device 512 Bytes, 4 kBytes, ... [6] SATA Storage Technology, MindShare Press 11.04.2012

Streaming optimierter SATA-HBA

Folie Nr. 26 von 39

Adressrechnung

Burstgenerierung

ATA Kompatibilitätsregister FIS Behandlung

11.04.2012

Streaming optimierter SATA-HBA

Folie Nr. 27 von 39

FPGA Ressourcenverbrauch Virtex5 SATAC + ATASC ISCID.2009.124 LUTs

ca. 2080

ca. 2610

Slices

ca. 1100

ca. 13902

Register

ca. 1180

ca. 2230

15 %3

19 %

Gesamtverbrauch1

Gesamtverbrauch = max(LUTs, Slices, Register) 2 Slices mit einer LUT/Slice-Rate von 1,88 abgeschätzt 3 kleiner als 1 SHAP Kern 1

ISCID.2009.124 Implementing a Serial ATA Controller base on FPGA Wei Wu, Hai-bing Su, Qin-zhang Wu Second International Symposium on Computational Intelligence and Design, 2009

11.04.2012

Streaming optimierter SATA-HBA

Folie Nr. 28 von 39

4 Streaming-optimierter Datenzugriff

11.04.2012

Streaming optimierter SATA-HBA

Folie Nr. 29 von 39

Implementierungsvarianten „echtes“ Dateisystem: +

Partitionstabelle Viele Indirektionsstufen Ungeeignet für FSMs => Einsatz eines Softcores Teilweise mit Patenten geschützt Ungenutzte Dateisystemfunktionen (z.B. Ordner, Löschen) Einfaches Zugriffsmodell im Rechner über Treibermodell

„einfache“ Zuordnungstabelle: + + +

LowLevel Schreibzugriff auf RAW-Device im Rechner Master Table im BlockRAM speicherbar Durch einfache FSMs zu realisieren Zugriff über Datenbanknummer

11.04.2012

Streaming optimierter SATA-HBA

Folie Nr. 30 von 39

Datenzuordnungstabelle Master Table (MT) • • • •

Erster 8 kB Block auf der Festplatte Metadaten (Version, Datum, LBU Größe) Anzahl Datenbankeinträge Datenbank Einträge (je 8 Byte) − Daten Startadresse in LBU − Daten Länge in LBU − CRC16-IBM Checksumme

32 Bit 16 Bit 16 Bit

(zu Testzwecken)

Beispiel: 1 Logical Block Unit (LBU) = 8 kB ⇒ Festplatten bis zu 32 TB Gesamtkapazität ⇒ Ca. 1000 Datenbanken von 8 kB bis 32 TB 11.04.2012

Streaming optimierter SATA-HBA

Folie Nr. 31 von 39

Datenzuordnungstabelle

11.04.2012

Streaming optimierter SATA-HBA

Folie Nr. 32 von 39

Master Table

11.04.2012

Streaming optimierter SATA-HBA

Folie Nr. 33 von 39

Virtex5: Test mit HDD

Virtex5: Test mit HDD

Virtex5: Test mit HDD

Virtex5: Test mit FPGA Virtex6: Simulation 11.04.2012

Streaming optimierter SATA-HBA

Folie Nr. 34 von 39

5 Ausblick

11.04.2012

Streaming optimierter SATA-HBA

Folie Nr. 35 von 39

TODO Liste SATAController • Frames wiederholt senden • Scrambling der Sendedaten

ATAStreamingController • Fehler finden und beheben

StreamingController • CRC16-IBM Checksumme auswerten

Funktionstest des SATA-/ATA-Stacks • Aufzeichnung von Messwerten 11.04.2012

Streaming optimierter SATA-HBA

Folie Nr. 36 von 39

Messwerterfassung

11.04.2012

Streaming optimierter SATA-HBA

Folie Nr. 37 von 39

ChipScope Ansicht

11.04.2012

Streaming optimierter SATA-HBA

Folie Nr. 38 von 39

Literaturverzeichnis [1] http://www.xilinx.com/ • • •

Xilinx User Guides: UG190, UG191, UG196 Xilinx Datasheets: DS202 Xilinx Specifications: LocalLink Interface Specification (SP006)

[2] http://www.T13.org/ • • •

AT Attachemnet 8 – ATA/ATAPI Architecture Model (ATA8-AAM; T13.1700-D) AT Attachemnet 8 – ATA/ATAPI Command Set (ATA8-ACS; T13.1699-D) AT Attachemnet 8 – ATA Serial Transport (ATA8-AST; T13.1697-D)

[3] http://www.Intel.com/ • •

AHCI – Serial-ATA – Adavanced Host Controller Interface Specification 1.3 PHY Interface for PCI Express 3.0 Architecture – PIPE 2.00

[4] http://www.serialata.org/ •

Serial ATA: High Speed Serialized AT Attachment – Rev. 1.0a

[5] http://www.iso.org/ •

Open System Interconnection - Basic Reference Model (ISO 7498-1:1994)

[6] SATA Storage Technology • • 11.04.2012

Donovan Anderson, MindShare Press, April 2007 ISBN: 978-0-9770878-1-5 Streaming optimierter SATA-HBA

Folie Nr. 39 von 39

Fakultät Informatik, Inst. für Tech. Informatik, Prof. für VLSI-Entwurfssysteme, Diagnostik und Architektur

Implementierung eines auf Streaming optimierten SATA-Host-Bus-Adapters (HBA) Patrick Lehmann

Dresden, 11.04.2012

Anhang

11.04.2012

Streaming optimierter SATA-HBA

Folie Nr. 41 von 39

2.1 Electrical Physical Layer Transceiver Interface: • Takt • Reset

• OOB-Signaling • Sonstiges • Reconfig-Port

ClockIn_150MHz, SATA_Clock Reset, ResetDone ClockNetwork_Reset, *_ResetDone Command, Status, TX_Error, RX_Error TX_Data, RX_Data TX_CharIsK, RX_CharIsK OOB_Command, *_Status, *_Complete SATAGeneration, HandshakingComplete Reconfig, Complete, Reloaded, Lock, Locked

• LVDS-Signale:

TX_n, TX_p, RX_n, RX_p

• Controllpfade • Datenpfade

[3] PHY Interface for PCI Express 3.0 Architecture – PIPE 2.00

11.04.2012

Streaming optimierter SATA-HBA

Folie Nr. 42 von 39

2.1 Electrical Physical Layer Transceiver Submodule: • ClockNetwork • MGT

Virtex5: Virtex6: Virtex7: Virtex5: Virtex6: Virtex7:

BUFG, DCM, „ClockMux“ BUFG, BUFR, MMCM BUFG, BUFR, MMCM, „Quad-PLL“ GTP_DUAL, GTX GTXE1 GTXE2

• BitWidthConverter Virtex5: • WordAligner Virtex6:

8  32 Bit, inkl. Byte Alignment 16 Bit Alignment in 32 Bit-Worten

• Reconfigurator

Virtex5:

Reprogrammierung des FPGA

• Sonstige Logik

Transceiver Interface  spez. MGT Signale Reset-Netzwerk Crossclock-Pfade

11.04.2012

Streaming optimierter SATA-HBA

Folie Nr. 43 von 39

FPGA Ressourcenverbrauch Virtex5 StreamingDB LUTs

ca. 2220

Slices

ca. 1180

Register

ca. 1260

Gesamtverbrauch1) 1) Gesamtverbrauch

11.04.2012

16 % = max(LUTs, Slices, Register)

Streaming optimierter SATA-HBA

Folie Nr. 44 von 39