Zwischenvortag zur Studienarbeit Entwurf und Implementierung eines statischen Backbones für die Kommunikation mit dynamischen Nutzerpartitionen auf einem Multi-FPGA-Board Albert Schulz Dresden, 1
Gliederung 1. Motivation 2. Zielarchitektur 3. Stand der Technik 4. Systemstruktur 5. Protokollentwurf 6. Aktueller Stand 7. Ausblick 2
1. Motivation Multi-FPGA Board mit großen FPGAs Optimale Auslastung mehrere User Designs (Nutzerpartitionen) pro FPGA Kommunikation zwischen Host und User Designs über einen gemeinsamen Bus Multiplexen mehrerer Datenströme erforderlich 3
2. Zielarchitektur DNK7 F5 PCIe-Board mit 5 Kintex-7 FPGAs 4x gfpga: User FPGAs 1x dfpga: Dataflow Manager Verbindung der FPGAs über Ringbus mit 46 GPIO Pins PCIe-Interface zu Host-Rechner (mittels pfpga) 4
2. Zielarchitektur Clock Generation Si598 Synth Si598 Synth OnSemi MC100EP 210S (2x1:5 buffer) F0-F4 User FPGAs High-Speed: DDR3-1600 Low-Speed: DDR3-800 GPIO: 400Mbps High-Speed DDR3 (3 chip) Low-Speed DDR3 (2 chip) High-Speed DDR3 (3 chip) Low-Speed DDR3 (2 chip) User Clock from F1 OR Fixed 100MHz Clock from V6 Fixed 50MHz Clock from V6 Fan Header Temperature Sensors (3) EEPROM for Board Data OnSemi MC100EP 210S ICSLV810 Some Status LEDs Some Status LEDs F0-F4 User FPGAs All FPGAs I 2 C I 2 C to EEPROM PCIe Jitter Atten High-Speed DDR3 (3 chip) Kintex-7 XC7K325T FBG900 F0 GPIO (2 banks = 77 I/O + SS clock) V6 LX75T (PCIe controller) pfpga Low-Speed DDR3 (3 chip) GPIO (1 banks = 46 I/O + SS clock) GPIO (1 banks = 46 I/O + SS clock) Low-Speed DDR3 (2 chip) Kintex-7 XC7K325T FBG676 F1 Kintex-7 XC7K325T FBG676 F4 High-Speed DDR3 (3 chip) GPIO (1 banks = 46 I/O + SS clock) MB [5:0] GPIO (1 banks = 46 I/O + SS clock) Low-Speed DDR3 (2 chip) Kintex-7 XC7K325T FBG676 F2 GPIO (1 banks = 46 I/O + SS clock) Kintex-7 XC7K325T FBG676 F3 High-Speed DDR3 (3 chip) PCIe REFCLK PCIe x4 Gen-2 Interface DN0220_DNBFC_K7F5_PCIe Rev. 1 Functional Block Diagram Drawing Revision 3, Drawn 2011-12-19 Quelle: http://www.dinigroup.com/product/data/dnk7_f5pcie/files/hardware_manual_dnk7_f5_pcie_rev4.pdf 5
3. Stand der Technik systolische Datenübertragung über Ringbus Eingangs- und Ausgangspuffer an Sender/Empfänger Flusskontrolle zwischen benachbarten Knoten über Put/Go-Signale 6
3. Stand der Technik Source-Synchronous-Schaltung differenzieller Takt (durch gfpga 1 erzeugt) 7
4. Systemstruktur - Überblick 2 getrennte Busse: 32-Bit Datenbus 8-Bit Kontrollbus für latenzarme Übermittlung von Status- und Kontrollinformationen 8
4. Systemstruktur - Datenfluss 9
4. Systemstruktur - Datenfluss 10
5. Protokollentwurf paketorientiertes Protokoll Nutzung der 2 Busse: Datenpakete über breiten Datenbus Pakete für Flusskontrolle, Interrupts und Statusinformationen über Kontrollbus Paketaustausch nur zwischen dfpga <> gfpgas (User Design) 11
5. Protokollentwurf - Datenpaketformat Frame-Format für Datenpakete: 32 Bit 8 Bit 8 Bit 12 Bit 4 Bit 0-16 KiByte Sentinel Zieladresse Quelladresse Datenlänge Pakettyp Daten Sentinel zur Erkennung eines gültigen Pakets notwendig, da ungültiger Zustand nach Bus-Start beobachtet 12
5. Protokollentwurf - Datenpaketformat Frame-Format für Datenpakete: 32 Bit 8 Bit 8 Bit 12 Bit 4 Bit 0-16 KiByte Sentinel Zieladresse Quelladresse Datenlänge Pakettyp Daten Adressformat = 3 Bit ChipID + 5 Bit User Design ID 3 Bit ChipID notwendig für 5 FPGAs (dfpga + 4 gfpgas) max. 32 User Designs pro gfpga 13
5. Protokollentwurf - Datenpaketformat Frame-Format für Datenpakete: 32 Bit 8 Bit 8 Bit 12 Bit 4 Bit 0-16 KiByte Sentinel Zieladresse Quelladresse Datenlänge Pakettyp Daten max. Paketgröße: 2 12 Worte + Header = ~16 KiByte 16 Pakettypen definierbar z.b. Daten für Anwendung, Konfigurationsdaten, Speicherinhalt Weiterleitung der Daten durch Switch zu FIFOs, ICAP Interface oder RAM 14
5. Protokollentwurf - Flusskontrolle Flusskontrolle zwischen dfpga und User Designs über Credit-Based Flow Control verlustfrei, kein wiederholtes Senden von Paketen aufgrund von Pufferüberlauf nötig 15
5. Protokollentwurf - Flusskontrolle Empfänger vergibt Credits, wenn N Einträge aus Puffer gelesen wurden (N = Halbe Puffergröße) geringere Belastung des Kontrollbusses 16
5. Protokollentwurf - Flusskontrolle: Szenario 17
5. Protokollentwurf - Flusskontrolle: Szenario 18
5. Protokollentwurf - Kontrollpakete Frame-Format für Kontrollpakete: 1 Byte 1 Byte 1 Byte 1 Byte 1-n Byte Sentinel Zieladresse Quelladresse Pakettyp Daten 256 mögliche Pakettypen für z.b. Credits für Flusskontrolle, Statusinformationen, Interrupts Datenlänge abhängig vom Pakettyp, z.b.: 1 Byte bei Credit-Paketen (Anzahl an Credits) 19
5. Protokollentwurf - Arbitrierung faire Buszuteilung mittels gewichtetem Round- Robin-Verfahren (3:1) Ringbus Ringbus 20
6. Aktueller Stand Protokoll im Wesentlichen spezifiziert VHDL-Testbench Implementierung des Datenpfades für 32-Bit Bus (TX, RX, Switch, FIFOs, MUX) funktionierender Datentransfer zwischen dfpga- Design und User Designs 21
7. Ausblick Flusskontrolle implementieren Implementierung der Arbitrierung Kommunikation zwischen Host-Rechner und dfpga Fehlererkennung/-korrektur (falls notwendig) funktionaler Test des Designs (simulativ & physisch) Performance Test Dokumentation (Entwurf, Realisierung, Testergebnisse) 22
Quellen Infrastucture Proposal for Sharing the DINI FPGA Cluster - Dr.-Ing. Thomas B. Preußer DNK7_F5_PCIe Hardware Manual (Link) - N. Harder (The DINI Group) Traffic Management for High-Speed Networks: Fourth Lecture International Science Lecture Series - H.T. Kung https://de.wikipedia.org/wiki/weighted-fair- Queuing, Abruf 9.5.2016 23