41 research outputs found

    Compileroptimierung und parallele Code-Generierung fĂŒr zeitkritische eingebettete Multiprozessorsysteme

    Get PDF
    Durch den voranschreitenden Trend der Digitalisierung gewinnen intelligente digitale Systeme in vielen Bereichen des tĂ€glichen Lebens zunehmend an Bedeutung. Dies betrifft insbesondere auch den Bereich sicherheitskritischer Echtzeitsysteme, fĂŒr deren sicheren Betrieb die EchtzeitfĂ€higkeit nachgewiesen werden muss. Im Gegensatz zu Anwendungsfeldern ohne diese Anforderung sind effiziente Mehrkernprozessoren in Echtzeitsystemen derzeit noch kaum verbreitet. Der Hauptgrund fĂŒr die bisherige Dominanz der Einzelkernprozessoren sind fehlende Methoden und Werkzeuge, um parallele Echtzeit-Software fĂŒr Mehrkernprozessoren zu entwickeln und selbst im ungĂŒnstigsten Fall noch eine maximale AusfĂŒhrungszeit (englisch Worst Case Execution Time, kurz WCET) garantieren zu können. In diesem Kontext besteht eines der wesentlichen Probleme darin, dass sich parallel ablaufende Software-Routinen im Hinblick auf ihre Laufzeit gegenseitig beeinflussen können. In Mehrkernprozessoren geschieht dies vor allem bei gleichzeitigen Zugriffen mehrerer Kerne auf eine gemeinsam genutzte Hardware-Ressource. Geeignete Methoden, um den Einfluss dieser als Interferenz bezeichneten Effekte bei der Software-Entwicklung prĂ€zise vorherzusagen und sichere Garantien fĂŒr die AusfĂŒhrungszeit abzuleiten, sind Gegenstand aktueller Forschung. Gleiches gilt fĂŒr Software-Werkzeuge zur automatischen Parallelisierung, die auf harte Echtzeitanwendungen spezialisiert sind. Diese Arbeit zielt darauf ab, die Anwendbarkeit von Mehrkernprozessoren in Echtzeitsystemen durch BeitrĂ€ge in den Bereichen der automatischen Software-Parallelisierung, Code-Optimierung und Hardware-Modellierung signifikant zu verbessern. Als Bestandteil einer Werkzeugkette zur automatischen Parallelisierung von sequentieller Echtzeit-Software wird in dieser Arbeit ein Compiler-Werkzeug zur WCET-optimierten parallelen Code-Generierung und ein zugehöriges paralleles Programmiermodell vorgestellt. Hierdurch können -- weitgehend ohne Zutun eines Endanwenders -- gut vorhersagbare parallele Programme erzeugt werden. Durch das Programmiermodell wird dabei sichergestellt, dass die AusfĂŒhrungszeit, einschließlich der Interferenzeffekte, mit Hilfe einer statischen WCET-Analyse sicher nach oben abgeschĂ€tzt werden kann. Als Teil der Code-Generierung stellt die vorliegende Arbeit zwei Optimierungsmethoden vor, die zum einen den Kommunikations- und Synchronisationsaufwand zwischen den Prozessorkernen reduzieren und zum anderen die optimierte Allokation verteilter Speicher in heterogenen Speicherhierarchien ermöglichen. Erstere ist auf des parallele Programmiermodell abgestimmt und erlaubt die optimierte Platzierung von Kommunikations- und Synchronisationsoperationen sowie das Entfernen redundanter Synchronisation auf einer feingranularen Ebene. Die Optimierung der Speicherallokation ergĂ€nzt den Ansatz um ein formales Optimierungsmodell zur Zuweisung der Datenfelder eines generierten Programms zu den Speicherbereichen der Zielplattform. Das Modell bezieht dabei sowohl die Kosten fĂŒr Interferenzeffekte als auch die Speicherhierarchie von Zielplattformen mit verteilten und heterogenen Speichern mit ein. Um die Schritte zur Generierung, Optimierung und Analyse von paralleler Echtzeit-Software weitgehend plattformunabhĂ€ngig aufbauen zu können, beinhaltet die vorliegende Arbeit außerdem einen Ansatz zur generischen Modellierung von Mehrkernprozessorarchitekturen. Dieser erlaubt es, die Zielplattform mit Hilfe einer entsprechend erweiterten Architekturbeschreibungssprache (ADL) zu beschreiben, wodurch sich die darauf aufbauenden Entwicklungswerkzeuge mit ĂŒberschaubarem Aufwand auf ein breites Spektrum von Hardware-Plattformen anwenden lassen. Mit dieser neuartigen Kombination erweitert die vorliegende Arbeit den Stand der Technik um einige wesentliche Bausteine, die die weitgehend automatisierte Parallelisierung von Echtzeit-Software ohne stark einschrĂ€nkende Annahmen bezĂŒglich der Struktur des Eingabeprogramms ermöglichen. Zu den weiteren Neuerungen dieser Arbeit zĂ€hlen die PlattformunabhĂ€ngigkeit bei der WCET-optimierten Software-Parallelisierung und die BerĂŒcksichtigung von Interferenzeffekten bei der Speicherallokation in Echtzeitsystemen. Die experimentelle Evaluation der vorgestellten Methoden und deren prototypischer Umsetzung zeigt, dass die WCET aller betrachteten Testanwendungen von der Parallelisierung profitieren kann. Auf einer Plattform mit vier Prozessorkernen konnte z.B. die WCET einer Anwendung aus dem Bereich der Bildverarbeitung durch die Parallelisierung im Vergleich zum sequentiellen Eingabeprogramm um Faktor 3,21 verbessert werden. Auch die OptimierungsansĂ€tze fĂŒr Kommunikation und Speicherallokation fĂŒhren grĂ¶ĂŸtenteils zu einer deutlichen Verbesserung der WCET. So konnten die durch Interferenzen verursachten Kosten im Zuge der Speicherallokation z.B. um bis zu 49% reduziert werden. Insgesamt haben die Ergebnisse dieser Arbeit damit das Potential, die effiziente und kostengĂŒnstige Nutzung von Mehrkernprozessoren im Bereich harter Echtzeitsysteme wesentlich voranzutreiben

    Cache-KohÀrenz in hart echtzeitfÀhigen Mehrkern-Prozessoren

    Get PDF
    Im Bereich der Echtzeitsysteme rĂŒcken Mehrkern-Prozessoren zunehmend in den Fokus. Dabei stellen Echtzeitsysteme besondere Anforderungen an die eingesetzte Systemarchitektur. Neben der logischen Korrektheit, ist in Echtzeitsystemen eine zeitlich vorhersagbare AusfĂŒhrung entscheidend. Cache- Speicher spielen in dieser Hinsicht eine besondere Rolle. Zum einen sind sie notwendig, um schnelle Zugriffe auf Instruktionen und Daten zu gewĂ€hrleisten, zum anderen beeintrĂ€chtigen sie die zeitliche Vorhersagbarkeit der AusfĂŒhrung. Beim Zugriff auf gemeinsame Daten in Mehrkern-Prozessoren ist zudem der Einsatz eines Cache-KohĂ€renzverfahrens notwendig. GĂ€ngige KohĂ€renzverfahren können die Anforderungen an Performanz und EchtzeitfĂ€higkeit nicht hinreichend erfĂŒllen. Die in hardwarebasierten KohĂ€renzverfahren eingesetzten KohĂ€renzoperationen machen eine prĂ€zise WCET-AbschĂ€tzung undurchfĂŒhrbar. Der On-Demand Coherent Cache (ODC2) stellt ein Cache- KohĂ€renzverfahren dar, das im Hinblick auf den Einsatz in Echtzeitsystemen entwickelt wurde. Es verzichtet auf eine gegenseitige Beeinflussung von Cache- Speicher durch KohĂ€renzoperationen und erreicht dadurch eine hinreichende zeitliche Vorhersagbarkeit der Zugriffe auf gemeinsame Daten. Das Verfahren des ODC2 zielt auf eine möglichst effiziente Nutzung des Cache-Speichers hin. Im Vergleich zu gĂ€ngigen, softwarebasierten Verfahren ermöglicht es eine signifikant höhere (Worst-Case) Performanz

    Modellierung von paralleler Software fĂŒr homogene und heterogene Multiprozessor-Systeme

    Get PDF
    Multicore-Prozessoren stellen leistungsstarke Architekturen fĂŒr die Signal- und Videoverarbeitung dar, die zunehmend auch in Echtzeitanwendungen eingesetzt werden. Da Multicore-Prozessoren in Hochsprachen programmiert werden, bieten sie eine hohe FlexibilitĂ€t und PortabilitĂ€t der Software. Eingebettete Multicore-Prozessoren werden beispielsweise im Bereich der kamerabasierten Fahrerassistenzsysteme zur Berechnung anspruchsvoller Algorithmen mit strengen Echtzeitkriterien verwendet. Die Fusion und Auswertung der gesammelten Daten aus einer Vielzahl von Sensoren besitzt eine hohe RechenkomplexitĂ€t und einen hohen Speicherbedarf. Gleichzeitig haben derartige Algorithmen kurze Entwicklungszyklen, was den Einsatz von flexibler Multicore-Software attraktiv macht. Eine optimale Auslastung aller Ressourcen und eine gute PortabilitĂ€t der Software zwischen Plattformen benötigt allerdings eine skalierbare parallele Implementierung. FĂŒr die Parallelisierung steht eine Vielzahl von Strategien zur Auswahl, die auf unterschiedlichen Plattformen jeweils andere Laufzeiteigenschaften und Limitierungen, wie z.B. Synchronisationen oder Speicherbandbreite, aufweisen. Moderne Plattformen kombinieren meist heterogene Prozessoren mit applikationsspezifischen Beschleunigern, was eine parallele Programmierung zusĂ€tzlich erschwert. Diese Arbeit adressiert die Programmierbarkeit von parallelen Plattformen mit dem Ziel Entwickler bei der Parallelisierung zu unterstĂŒtzen. Dazu wird die Abstraktionsschicht Modular Parallelization Abstraction Layer (MPAL) vorgestellt, die eine neue Schnittstelle zur parallelen Programmierung von Multicore- und Manycore-Prozessoren, sowie Beschleunigern, wie Grafikprozessoren oder Field Programmable Gate Arrays, bereitstellt. MPAL ermöglicht eine einfache Konfiguration der verwendeten Frameworks und der ParallelitĂ€t, sowie die Kontrolle des heterogenen Architektur-Mappings. Des Weiteren bietet MPAL Profiling-Methoden, die die Extraktion der Skalierungscharakteristiken erlauben, die wiederum bei der Identifikation von EngpĂ€ssen helfen. Weiterhin werden in dieser Arbeit Einflussfaktoren auf die Skalierbarkeit untersucht und modelliert, damit diese durch signifikante Modellparameter dargestellt und ausgewertet werden können. Unter Verwendung der Modellparameter als Deskriptoren stellt diese Arbeit eine neue Methode der Performance-PrĂ€diktion vor. Damit können das erwartete Skalierungsverhalten, sowie potentielle EngpĂ€sse nach einer Portierung der Software, abgeschĂ€tzt werden. Die vorgestellten Methoden werden mit Referenz-Methoden zur parallelen Programmierung und Performance-PrĂ€diktion verglichen und im Anschluss mithilfe von zwei Fahrerassistenzalgorithmen (Stereo-Vision und FußgĂ€ngererkennung) evaluiert.Multicore processors represent powerful architectures for signal- and video-processing, even applicable for real-time applications. Because these chips are programmable in high-level programming-languages, they offer good flexibility and software portability. For instance in the field of camera-based advanced driver assistance systems, which appear as demanding applications with strict real-time constraints, embedded multicores serve as target platforms. Such algorithms feature not only complex computations and high memory consumption due to the fusion of multiple sensor-data, but they also have short development cycles, which makes the flexibility of multicore-software even more desirable. However, gathering the theoretical peak performance of multicore processors requires parallel programming and a scalable work distribution in order to obtain software that is portable across platforms. Furthermore, parallel programming opens up a huge design space of parallelization strategies each with potential bottlenecks, like synchronization-count or memory bandwidth, which vary between platforms. Modern processors are often equipped with application specific accelerator architectures, resulting in multiple heterogeneous computational units eventually each requiring individual programming techniques. This work addresses the programmability of parallel platforms with the aim of supporting developers during the parallelization process. In order to ease the parallel programming, the middleware modular parallelization abstraction layer (MPAL) is introduced, which offers a new interface for programming multi-/manycores and accelerators (e.g., graphics processors, or field programmable gate arrays), while the actually used frameworks can be configured dynamically. MPAL allows the configuration of the parallelism and to control the architecture mapping including heterogeneous scheduling and data transfers. Furthermore, MPAL offers in-line profiling methodologies, which enable the extraction of the parallel runtime behavior and scalability characteristics, which help to analyze the parallelization success and identify bottlenecks. Most relevant, influencing scalability characteristics are modeled to represent trends in few significant and comparable model-parameters. Using these model-parameters as descriptive features, this work contributes a statistical performance prediction method, which allows for an estimation of the scalability trend and potential bottlenecks after porting a parallel software between platforms. All introduced methods are compared with state-of-the-art programming techniques and prediction methods, and will be evaluated using two driver-assistance algorithms (stereo-vision and pedestrian detection)

    Jahresbericht 1997/98 und 1. Halbjahr 1999 Abteilung Kommunikation und Datenverarbeitung

    Get PDF
    Bericht der Abteilung Kommunikation und Datenverarbeitung des FZR ĂŒber ihre TĂ€tigkeit in den Jahren 1997, 1998 und im 1. Halbjahr 199

    Beschleunigung ausgewÀhlter paralleler Standard Template Library Algorithmen

    Get PDF
    A diploma thesis presenting a hardware-oriented parallelization of the C++ Standard Template Library. Strategies like thread pooling and thread affinity are used to enable speedups already for small input sizes and to best exploit the underlying hardware. Comparisons with existing approaches are used for evaluations

    Eine adaptive Architekturbeschreibung fĂŒr eingebettete Multicoresysteme

    Get PDF

    Entwicklung integrierter IT-Infrastrukturen fĂŒr die Simulation komplexer geophysikalischer Prozesse

    Get PDF

    Legt die globale ErwĂ€rmung eine Pause ein? Simulation des vergangenen, heutigen und zukĂŒnftigen Klimas

    Get PDF
    corecore