Implementierungsansätze für ein FPGA basiertes Multiprozessor
SystemSystem
Marco Kirschke
INF-M1 – Anwendung 1 - Wintersemester 2009/2010
25. November 2009
Inhalt
� Motivation
� FPGA-based Embedded Systems
� Entwurfsübersicht zu MPSoC� Entwurfsprozess der Hardware Modellierung� Entwurfsprozess der Hardware Modellierung� Festlegung der Multiprozessor Architektur
� Multiprozessor System on Chip mit Altera Nios II
� Zusammenfassung
25.11.2009Marco Kirschke2
Motivation
Zielsetzung für den Masterstudiengang
� Erfahrungen der Bachelor Arbeit ausbauen
� Masterstudiengang „Verteilte Systeme“
� Übersicht zu Techniken und Methoden von Multiprozessor Systemen Multiprozessor Systemen
� Adaptierung von etablierten Vorgehensweisen auf FPGA basierte Systeme
� Technologie Grundlagen für ein späteres Arbeitsumfeld
25.11.2009Marco Kirschke4
Aufgabengebiete an der HAW
� SoC Fahrzeug� Multiprozessor System für verschiedene Anforderungen
des Carolo Cups
� 3D Audio� SoC mit einer Audioquelle ausgelastet� Multiprozessor System für
� mehrere Audioobjekte
� Klangobjekte im Raum platzieren (Positionsbestimmung)
� Verwaltungsprozessor für Szenarien
� Living Place Hamburg� Probleme bei der Vielzahl an Sensoren?
25.11.2009Marco Kirschke5
� Entwicklung von Embedded Systems� Einschränkende Randbedingungen
Zielsetzung
� Einsatz von FPGAs
� Flexible Plattformen
25.11.2009Marco Kirschke6
� Einsatz von FPGAs
� Entwicklung von Embedded Systems� Einschränkende Randbedingungen
Zielsetzung
� Einsatz von FPGAs
� Flexible Plattformen
25.11.2009Marco Kirschke7
� Einsatz von FPGAs
� Optimierung des Entwicklungsprozesses
� Entwicklung von Embedded Systems� Einschränkende Randbedingungen
Zielsetzung
� Einsatz von FPGAs
� Flexible Plattformen
25.11.2009Marco Kirschke8
� Einsatz von FPGAs
� Skalierung des Systems
� Optimierung des Entwicklungsprozesses
FPGA-basedEmbedded SystemsEmbedded Systems
Einsatzgebiete
Automotive Wireline & WirelessSolutions
25.11.2009Marco Kirschke10
Data Storage &Processing
Consumer ElectronicsAerospace &
Military
Anbieter
� Low Cost/Power FPGA� XPGA (non-volatile, flash-based FPGA)
25.11.2009Marco Kirschke11
� Low Cost/Power FPGA� Radiation-Tolerant FPGA� ARM Prozessoren verfügbar
Xilinx und AlteraProduktpalette Xilinx Altera
High Performance FPGA
VIRTEX Family Stratix Series
Low Cost/Power FPGA
SPARTAN Family Cyclone Series
25.11.2009Marco Kirschke12
SPARTAN Family Cyclone Series
Entwicklungsumgebung
ISE Design Suite Quartus
System on Chip
Hardware
SoftwareXilinx Platform Studio/EDKXilinx Platform Studio/SDK
SOPC Builder/QuartusNIOS IDE
Soft Processor Cores PPC 440, PPC405, MicroBlaze
C68000, ARM Cortex, NIOS2
� Xtensa Xplorer IDE zur Konfiguration
Tensilica
� Konfigurierbare Prozessoren
� Kunden können sich auf dieSoftware Entwicklung
25.11.2009Marco Kirschke13
Software Entwicklung konzentrieren
� Bereitstellung von Anwendungen zur HW und SW Erstellung
EntwurfsübersichtMultiprocessor System on ChipMultiprocessor System on Chip
Multiprocessor System on Chip
� Erzeugung der Komponenten eines MPSoC� starke Abhängigkeit an die Anforderungen des Systems
� Entwurfsprozess der Hardware Modellierung
25.11.2009Marco Kirschke15
Hardware Modellierung
� Zusammenführung der Software und Hardware Komponenten
� Festlegung der MP Architektur
Entwurfsprozess der HW Modellierung
� Entwurfsmethoden� Full-Custom-Entwurf � individueller Entwicklungsansatz
� Semi-Custom-Entwurf � Einsatz von Codegeneratoren
� Hohes Optimierungspotential � erhöhter Aufwand
25.11.2009Marco Kirschke16
� Semi-Custom-Entwurf � Einsatz von Codegeneratoren
� verminderte Entwicklungszeit � begrenzte Konfiguration
� Erzeugung der RTL Beschreibung in VHDL oder Verilog
� Vorgehensweise
Entwurfsprozess der HW Modellierung
� Testen des Entwurfskonzeptes (Simulation mit C oder MATLAB)
� Spezifikation des Systems
� Erzeugung des „Programming Files“� Verteilung der Gatterebene auf die HW (Fitter – Place&Route)
� Simulation des Syntheseergebnisses (z.B. in ModelSim)
� Synthese (Umsetzung der RTL Beschreibung auf Gatterebene)
25.11.2009Marco Kirschke17
Festlegung der Multiprozessor Architektur
� Welche Aufgaben übernehmen die Prozessoren?
� Wie sind die Prozessoren angeordnet?
� Prozessorkoordination in HW oder SW?� Anpassung der HW an die Software des MPSoC?� Anpassung der HW an die Software des MPSoC?
oder� Anpassung der SW an die Hardware des MPSoC?
25.11.2009Marco Kirschke18
Wechsel zu Multiprozessor Systemen
� wachsende Anforderungen an Rechenleistung
� Abweichung von Erhöhung der Taktraten
� Senkung des Energiebedarfs und der WärmeentwicklungWärmeentwicklung
� Einsatz von Spezial- bzw. Coprozessoren� Netzwerkprozessoren� Medienprozessoren (Audio/Video)� Kryptographieprozessoren
25.11.2009Marco Kirschke19
Gliederung von MP Architekturen
� Homogene Multiprozessoren� Primär zur Leistungssteigerung� Gemeinsamer Zugriff auf Systemressourcen
� Heterogene MultiprozessorenHeterogene Multiprozessoren� Spezialprozessoren für verschiedene Anforderungen� Beispiel: DVD Player
25.11.2009Marco Kirschke20
Anordnung von Prozessoren in MPSoC
� Multiprozessor� Mehrere CPUs nutzen einen
gemeinsamen Speicher� Synchronisation notwendig
� Multicomputer� CPUs mit eigenem privaten Speicher� Nachrichtenaustausch über ein
Verbindungsnetzwerk� Network on Chips
25.11.2009Marco Kirschke21
Multiprozessor
� Verwendung eines gemeinsamen Speichers� UMA (Uniform Memory Access)
� Feste/Vorhersagbare Zugriffszeit auf Speicherreferenzen
� NUMA (NonUniform Memory Access)Speicherreferenzen mit unterschiedlichen Zugriffszeiten� Speicherreferenzen mit unterschiedlichen Zugriffszeiten
� COMA (Cache Only Memory Access)� Adressraum wird auf Cache-Zeilen aufgeteilt
� Auswirkung auf die Software Erstellung
25.11.2009Marco Kirschke22
Software für Multiprozessoren
� Vorteile für Software Entwickler� Load/Store Befehle für gemeinsam genutzte Speicher
� Festlegung eines Konsistenzmodells� Speicherzugriffe müssen koordiniert werdenSpeicherzugriffe müssen koordiniert werden� Scheduling Verfahren beachten
� Parallelen zu Threadbasierter Programmierung� DSM - Distributed Shared Memory
� Verwendung eines seitenbasierten virtuellen Adressraumes
� MMU erzeugt Seitenfehler � Seiten werden nachgeladen
� Anforderungen an das Betriebssystem
25.11.2009Marco Kirschke23
Multicomputer
� Prozessoren verwalten ihren privaten Speicher
� Nachrichtenaustausch über Verbindungsnetze� Einsatz verschiedener Topologien
� Stern, Baum, Ring, Gitter, Würfel, etc.
� Routing der Nachrichten nötig
� Aufwendigere Software Entwicklung� Verteilung der Informationen mit Send/Receive Methoden� Synchroner oder gepufferter Nachrichtenaustausch� MPI - Message Passing Interface
25.11.2009Marco Kirschke24
Auswahl eines Betriebssystems
� Auswahlkriterien für ein RTOS� Architektur des MPSoC� Unterstützung von Standard Bibliotheken� Ressourcenverbrauch� Verfügbarkeit / Integration von Treibern für Peripherie
� Xilinx und Altera FPGAs unterstützen� µC/OS II� BlueCat Embedded Linux / Wind River Linux� ThreadX
25.11.2009Marco Kirschke25
MPSoC mit 3Nios II ProzessorenNios II Prozessoren
terasic Development Board DE2-70
� Altera Cyclone II 2C70 FPGA
� Two 32-Mbyte SDRAM
� 8-Mbyte Flash Memory
� 50-MHz oscillator
� Entwicklungsboard
� 50-MHz oscillator
� 24-bit CD-quality audio CODEC
� VGA DAC ADV7123
� 2 TV Decoder (NTSC/PAL/SECAM)
� 10/100 Ethernet Controller with a connector
� USB Host/Slave Controller
� RS-232 transceiver
� PS/2 mouse/keyboard connector
� IrDA transceiver
25.11.2009Marco Kirschke27
Nios II Multiprocessor System
� „Hello World“ Beispiel mit 3 Nios II Prozessoren
� Zugriff auf On-Chip Memory über Hardware Mutex
� CPU1 behandelt Ausgabe über JTAG UART
25.11.2009Marco Kirschke28
SOPC Builder und Quartus II
25.11.2009Marco Kirschke29
SOPC Builder und Quartus II
25.11.2009Marco Kirschke30
SOPC Builder und Quartus II
25.11.2009Marco Kirschke31
Nios IDE zur Softwareerstellung
25.11.2009Marco Kirschke32
Nios IDE zur Softwareerstellung
25.11.2009Marco Kirschke33
Zusammenfassung
Zusammenfassung
� Implementierungsansätze für MPSoC
� High Performance Embedded Systems durch Verwendung von FPGAs
� Optimierung des Entwicklungsprozesses durch � Optimierung des Entwicklungsprozesses durch Integration von Software Komponenten
� Auslagerung der Anforderungen auf unterschiedliche Prozessoren
25.11.2009Marco Kirschke35
Vielen Dank für Ihre Vielen Dank für Ihre Aufmerksamkeit.
Literatur[1] Altera. 2007. Creating Multiprocessor Nios II Systems Altera:Tutorial. [Online] 5. Dezember 2007. [November
2009.] www.altera.com/literature/tt/tt_nios2_multiprocessor_tutorial.pdf
[2] Wolf, W. 2007. High Performance Embedded Computing. San Francisco, CA: Morgan Kaufmann, 2007. 0-12-369485-0
[3] Tanenbaum, A. . 2006. Computerarchitektur. München: Pearsum Studium, 2006. 3-8273-7151-1.
[4] Rauber, T. und Rünger, G. 2008.[4] Rauber, T. und Rünger, G. 2008. Multicore: Parallele Programmierung. Heidelberg: Springer, 2008. 3-540-73113-9.
[5] Jerraya, A. und Wolf, W. 2005. Multiprocessor Systems-on-Chips. San Francisco, CA: Morgan Kaufmann, 2005. 0-12-385251-0
[6] Ienne, P. und Leupers, R. 2007. Customizable Embedded Processors. San Francisco, CA: Morgan Kaufmann, 2007. 0-12-369526-0