303 research outputs found

    Java in eingebetteten Systemen

    Get PDF
    Moderne, objektorientierte Sprachen spielen bei der Entwicklung von Software für eingebettete Systeme bislang kaum eine Rolle. Die Gründe hierfür sind vielfältig, meist wird jedoch die mangelnde Effizienz und der größere Speicherbedarf hervorgehoben. Obwohl Java viele Eigenschaften hat, die sehr für einen Einsatz in eingebetteten Systemen sprechen, so hängt doch gerade Java vielfach immer noch das Vorurteil an, in Systemen mit beschränkter Rechenleistung und Speicher zu viele Ressourcen zu benötigen. Diese Arbeit soll dazu beitragen, diese Vorurteile abzutragen. Sie stellt insbesondere Techniken vor, die den Speicherbedarf einer JVM so gering wie möglich halten und diese effizient mit der zur Verfügung stehenden Rechenleistung umgehen lassen. Viele der dargestellten Verfahren und Algorithmen wurden in der Kertasarie VM implementiert, einer virtuellen Maschine, die speziell für den Einsatz in eingebetteten Systemen konzipiert wurde. Durch die weit verbreitete Vernetzung eingebetteter Systeme über das Internet stellt sich in vielen Fällen zudem das Problem einer modernen, abstrakten und effizienten Form der Kommunikation. Aus diesem Grund liegt der zweite Schwerpunkt dieser Arbeit auf dem Vergleich von objektorientierten Middleware-Architekturen, insbesondere von Java-RMI. Auch auf diesem Gebiet wird eine eigene, speziell an eingebettete Systeme angepasste RMI-Variante vorgestellt.Modern, object oriented languages do not play an important role when developing software for embedded systems. There are many reasons for it, most often an inadequate performance and a greater memory demand are mentioned. In spite of the fact that Java has many features suitable for embedded systems, Java often faces the prejudice to consume too much resources in systems with limited processing power and memory. This work is a contribution to diminish this prejudices. It presents techniques to limit the memory demands of a Java Virtual Machine and to effectively cope with limited computing power. Many of the presented methods and algorithms are implemented in the Kertasarie VM, a JVM designed to run in embedded systems.Due to the fact of increasing network capabilities embedded systems often face the problem of a modern, abstract and efficient communication. Therefore the second emphasis of this work is put on the comparison of object oriented middleware architectures, especially Java-RMI. An own implementation for embedded systems is also presented

    Effiziente Mehrkernarchitektur für eingebettete Java-Bytecode-Prozessoren

    Get PDF
    Die Java-Plattform bietet viele Vorteile für die schnelle Entwicklung komplexer Software. Für die Ausführung des Java-Bytecodes auf eingebetteten Systemen eignen sich insbesondere Java-(Bytecode)-Prozessoren, die den Java-Bytecode als nativen Befehlssatz unterstützen. Die vorliegende Arbeit untersucht detailliert die Gestaltung einer Mehrkernarchitektur für Java-Prozessoren zur effizienten Nutzung der auf Thread-Ebene ohnehin vorhandenen Parallelität eines Java-Programms. Für die Funktionalitäts- und Leistungsbewertung eines Prototyps wird eine eigene Trace-Architektur eingesetzt. Es wird eine hohe Leistungssteigerung bei nur geringem zusätzlichem Hardwareaufwand erzielt sowie eine höhere Leistung als bekannte alternative Ansätze erreicht

    Ablaufsteuerung fuer ein System mit einfacher Hardware-Struktur

    Get PDF

    Ein Modell zur effizienten Parallelisierung von Algorithmen auf komplexen, dynamischen Datenstrukturen

    Get PDF
    Moderne berechnungsintensive Algorithmen, beispielsweise adaptive numerische Lösungsverfahren für partielle Differentialgleichungen, arbeiten oftmals auf komplexen, dynamischen Datenstrukturen. Die Implementierung solcher Algorithmen auf Parallelrechnern mit verteiltem Speicher mittels Datenpartitionierung wirft zahlreiche Probleme auf (z.B. Lastverteilung). Im Rahmen der vorliegenden Arbeit wurde das neue parallele Programmiermodell Dynamic Distributed Data (DDD) entwickelt, durch das die Parallelisierungsarbeit vom Design der verteilten Datenstrukturen bis hin zur Erstellung des portablen, parallelen und effizienten Programmcodes unterstützt wird. Dem DDD-Konzept liegt ein graphbasiertes formales Modell zugrunde. Dabei wird die Datenstruktur des jeweiligen Programms (z.B. unstrukturierte Gitter) formal auf einen verteilten Graphen abgebildet, der aus mehreren lokalen Graphen besteht. Das formale Modell dient als Spezifikation des Programmiermodells und gleichzeitig zur Definition der wichtigen in dieser Arbeit verwendeten Begriffe. Der Systemarchitektur von DDD-basierten Anwendungen liegt ein Schichtenmodell zugrunde, den Kern stellt dabei die DDD-Programmbibliothek dar. Diese bietet Funktionen zur dynamischen Definition verteilter Datentypen und zur Verwaltung lokaler Objekte. In den Überlappungsbereichen der lokalen Graphen stehen abstrakte Kommunikationsfunktionen in Form von sog. Interfaces zur Verfügung. Die wesentliche Neuerung gegenüber nahezu allen bestehenden Arbeiten ist jedoch die Möglichkeit zur dynamischen Veränderung des verteilten Graphen; dies ermöglicht es beispielsweise, dynamische Lastverteilung oder Gittergenerierungsverfahren einfach und effizient zu implementieren. Damit können beliebig komplexe Datentopologien dynamisch erzeugt, migriert und wieder entfernt werden

    Vergleich von IaaS-Anbietern

    Get PDF
    Cloud Computing ist zurzeit eines der zentralen Themen in der Informatik. Wenn man allerdings einmal hinter die Wand aus Modewörtern blickt, wird sehr schnell klar, dass es sich hierbei nicht etwa um neue Technologien handelt, sondern viel mehr um das Konzept, klassische IT-Infrastrukturen zu abstrahieren. Es ist nun möglich, Ressourcen wie Rechenleistung und Datenspeicher, dynamisch an den tatsächlichen Bedarf anzupassen. Dies führt zu einer nie da gewesenen Flexibilität bei gleichzeitig überschaubaren Kosten. Allerdings merkt man dem Markt an, dass er noch relativ jung ist. Viele der angebotenen Dienstleistungen sind nicht standardisiert und jeder Anbieter tritt mit einem eigenen Vokabular auf. Es ist deshalb sehr schwierig, eine fundierte Anbieterauswahl zu treffen, und es werden harte Auswahlkriterien benötigt. Mit dieser Ausarbeitung sollen wiederverwendbare Bewertungskriterien definiert und am Beispiel von fünf IaaS-Anbietern exemplarisch durchgespielt werden. Ferner sollen verschiedene Anwendungsszenarien als Entscheidungshilfe für die Auswahl des passenden Dienstleisters dienen

    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

    Entwicklung einer Software zur Akquisition von Autofluo-reszenzlebensdauern und Autofluoreszenzintensitätsbildern der Retina

    Get PDF
    Die vorliegende Arbeit beschäftigt sich mit der Entwicklung einer Aufnahmesoftware sowie der Optimierung einer Aufnahmeapparatur zur Messung von Autofluoreszenzlebensdauern und Autofluoreszenzintensitäten im Bereich der Retina. Mithilfe eines blauen Lasers werden fluoreszierende Moleküle in der Retina, Fluorophore, zum Abstrahlen von Licht, der so genannten Fluoreszenz, angeregt. Die Abklingzeit der Fluoreszenzintensität bis zum Ende der Lichtemission eines Moleküls, wird als Fluoreszenzlebensdauer bezeichnet. Die Software ermöglicht es, durch den Einsatz eines speziellen Detektors und einer sehr genauen Stoppuhr diese Fluoreszenzlebensdauer im Pikosekundenbereich zu messen. Anhand der für jeden Stoff individuellen Fluoreszenzlebensdauer können die Moleküle exakt bestimmt werden. Mit einem Messgerät, welches die im Auge vorkommenden Substanzen und deren Verhältnis zueinander messen kann, lassen sich bei Abweichungen von der Norm Diagnosen erstellen und eine Behandlung einleiten. Soft- und Hardware sind in der Lage, die Augenbewegung während einer Messung auszugleichen, sodass selbst bei Messungen im Bereich von einigen Minuten verlässliche Messdaten generiert werden. Ziel dieser Arbeit ist die Fertigstellung eines für den Routineeinsatz geeigneten Prototyps

    Modelle zur rechnergestuetzten Simulation von Kommunikationsfluessen in Rechnernetzen

    Get PDF

    Implementierung von Java-Threads in Software und rekonfigurierbarer Hardware

    Get PDF
    Der Markt tragbarer Geräte gewinnt eine immer stärkere Bedeutung. Mobiltelefone, PDAs (Personal Digital Assistant), Smartphones und viele weitere Geräte werden kontinuierlich mit neuen Funktionen ausgestattet und übernehmen zunehmend klassische Aufgaben eines Personal Computers (PC), wie beispielsweise die Textverarbeitung oder die Ausführung multimedialer Anwendungen. Speziell letztere stellen an die Geräte hohe Anforderungen, die sich nicht allein durch den Einsatz leistungsstärkerer Prozessoren lösen lassen. Nicht selten werden deshalb für rechenaufwendige Arbeiten Chips zur Umsetzung der speziellen Anforderungen in Hardware eingesetzt. Diese werden als Application Specific Integrated Circuit (ASIC) bezeichnet
    corecore