Zertifizierung von sicherheitskritischen System auf Multicore

Transcription

Zertifizierung von sicherheitskritischen System auf Multicore
ZERTIFIZIERUNG VON SICHERHEITSSYSTEMEN
AUF MULT-CORE BASIS
Von Rudolf Fuchsen und Mehmet Özer, SYSGO AG, Klein-Winternheim, Deutschland
Zusammenfassung
Hypervisor basierte Separation/Trennung ist eine effektive Methode, um ein zertifizierbares
Sicherheitssystem zu erstellen. Die Luftfahrtelektronik hat diese Idee übernommen und setzt dieses Konzept mit
der Richtlinie ARINC 653 für softwarebasierte Sicherheitssysteme um. In der Automobilindustrie wird dasselbe
Konzept angewandt, um die Sicherheit von Fahrerassistenzsystemen zu gewährleisten und mehrere Steuergeräte
in einem mehrfach partitionierten System (ECU-Konsolidierung) zu kombinieren. In der Bahnindustrie
verwenden Sicherheitssysteme wie Communication-Based Train Control (CBTC) und softwarebasierte
Stellwerksysteme eine Separation mittels Hypervisor, um die softwarebasierte SIL4-Sicherheit zu gewährleisten.
Ein robuster Hypervisor garantiert eine rückwirkungsfreie Trennung, sodass Anwendungen mit mehreren
Kritikalitätsstufen auf einer Hardware-Plattform konsolidiert werden können. Sicherheitsfunktionen,
Informationsdienste und Komfortfunktionen können gleichzeitig mit einer Hardware bereitgestellt werden,
wodurch Größe, Gewicht und Leistungsverbrauch (SWAP) optimiert werden. Parallel wächst die Anforderung
an die Rechenleistung.
Der traditionelle Ansatz zur Bereitstellung einer höheren Rechenleistung war, die Taktfrequenz des
Prozessors zu erhöhen, durch Befehlspipelines und spekulative Programmausführungen die pseudo-parallele
Verarbeitung auf Befehlsebene zu steigern sowie die Cache-Größe und Anzahl der Cache-Ebenen zu erhöhen.
Mit der heutigen Technologie hat dieser Ansatz seine Grenzen erreicht. Die Erhöhung der Prozessorfrequenz
führt zu einem unverhältnismäßig hohen Stromverbrauch und damit zu einer unverhältnismäßig hohen
Verlustleistung. Chip-interne und -externe Übersprecher/Crosstalks, Signalverzögerungen und Reflexionen sind
weitere Probleme, die durch eine höhere Taktfrequenz bedingt werden. Die bestehende Parallelität und
Abhängigkeiten auf der Code-Ebene verhindern zudem eine weitere Leistungssteigerung durch
Parallelausführung auf Befehlsebene. Um die Prozessorleistung weiter zu erhöhen, ist die Chip-Industrie bei
Hochleistungsprozessoren auf das Mehrkernkonzept (Multi-Core) umgestiegen.
Dieser Artikel befasst sich mit der Frage, ob eine Plattform auf Mehrkernbasis (Multi-Core) dasselbe Maß
an Determinismus erreichen kann wie eine Einkernplattform (Single-Core), da dies ein wichtiger Aspekt für
eine Sicherheitszertifizierung darstellt. Im Folgenden werden die potenziellen Hardware- und SoftwareInterferenzkanäle einer Plattform auf Mehrkernbasis analysiert.
© 2016 SYSGO AG // www.sysgo.com
1
Überlegungen zur Zertifizierung
Für die Integration von Software-Diensten mit unterschiedlicher Funktionalität, Robustheit und Sicherheit
sowie unterschiedlichen Sicherheitsanforderungen ist eine eingebettete Plattform erforderlich, die





ausreichend Prozessorleistung, Speicherressourcen und E/A-Bandbreite bereitstellt;
ausreichende Zuverlässigkeit bietet;
ein deterministisches und vorhersagbares Echtzeitverhalten besitzt;
eine sichere und stabile Partitionierung der Ressourcen und Prozessorzeit unterstützt;
nach den geltenden Sicherheitsstandards zertifizierbar ist.
Processor Design Assurance
Historisch gesehen verwendeten hochkritische Sicherheitsplattformen typischerweise Einkernprozessoren,
die meist auf einer RISC-Architektur mit einer recht einfachen Cache und Pipeline-Architektur basieren.
Design-Unterlagen stehen in einem gewissen Ausmaß zur Verfügung, um den Zertifizierungsvorgang zu
unterstützen. Aufgrund ihrer häufigen Verwendung, gibt es zahlreiche Informationen über den bewährten
Betrieb, was das Risiko unerkannter systematischer Fehler reduziert. Zertifizierungsstellen haben
Sicherheitsplattformen auf Basis dieser Prozessoren für Anwendungen auf höchster Kritikalitätsstufe schon
mehrfach zertifiziert (z.B. DO-178B DAL A oder EN 50128 SIL4).
Mehrkernprozessoren als typische Nachfolger hochentwickelter Einkernprozessoren, übernehmen die
Prinzipien wie komplexe Befehlspipelines, Sprungvorhersagen und mehrstufige Caches. Zudem benötigen sie
Cache-Kohärenz-Module und Cross-Connects, um die Kerne miteinander zu verbinden. Mehrkernprozessoren
sind die modernsten Entwicklungen der Chip-Technologie. Chip-Hersteller tun sich deshalb schwer, detaillierte
Informationen über das Design der Chips bereitzustellen, die zur Zertifizierung der Plattform erforderlich sind.
Aufteilung von Zeit und Prozessorressourcen
Ein- und Mehrkernprozessoren verwenden dieselben Verfahren für den Ressourcenschutz. Beide wenden
das Konzept der Privilege-Levels (Supervisor and User) an und verfügen über eine Memory Management Unit
(MMU), um den Zugriff auf privilegierte Befehls- und Prozessorregister, physikalischen Speicher und im
Speicher abgebildete E/A-Geräte zu kontrollieren. Im Hinblick auf die Zertifizierung der RessourcenPartitionierung besteht kein wesentlicher Unterschied zwischen Ein- und Mehrkernplattformen.
Die Zeitpartitionierung ist bei einem System auf Mehrkernbasis komplizierter. Bei einem Einkernprozessor
gibt es immer nur einen einzelnen Thread. Dieser Thread kann durch ein asynchrones Ereignis unterbrochen
werden. In diesem Fall wird die Kontrolle an den Handler übergeben. Dabei gibt es keine konkurrierende
Ausführung. Eine Ausnahme kann ein E/A-Gerät sein, das Direct Memory Access (DMA) nutzt. Auf einem
Mehrkernprozessor stellt die parallele Ausführung den Normalfall dar, was zu Interferenzen zwischen den
Anwendungen führen kann, die auf den verschiedenen Kernen ausgeführt werden.
Hardware-Interferenzkanäle
Die Ausführung von Anwendungen, die auf den verschiedenen Kernen eines Mehrkernprozessors
ausgeführt werden, erfolgt nicht unabhängig voneinander. Auch wenn es zwischen diesen Anwendungen keinen
expliziten Datenfluss oder Steuerungen gibt, besteht eine Kopplung auf Plattformebene, da Plattformressourcen
implizit geteilt werden. Eine Plattformeigenschaft, die zu Interferenzen zwischen unabhängigen Anwendungen
führen kann, nennt sich Hardware-Interferenzkanäle. Die Analyse von Hardware-Interferenzkanäle erfordert
eine tiefgreifende Kenntnis der Plattform-Architektur einschließlich der Prozessor-Strukturen.
© 2016 SYSGO AG // www.sysgo.com
2
Die in dieser Abhandlung analysierten Mehrkernprozessoren besitzen ein Unified Memory Model, was
bedeutet, dass sich alle Kerne denselben physikalischen Adressraum teilen. Dadurch wird die Plattform
vereinfacht, da nur ein externer Prozessorbus erforderlich ist und die Kommunikation zwischen den Kernen über
den gemeinsamen physikalischen Speicher erfolgt. Abbildung 1 zeigt die typische Architektur einer solchen
Plattform.
Abbildung 1. Plattform auf Doppelkernbasis
Einige der Hardwarekomponenten, wie der Speichercontroller, der PCI-Controller oder andere E/A-Geräte
können mit dem Prozessor integriert sein, um ein Multiprozessor-Ein-Chip-System (MPSoC) zu bilden.
Prozessorkerne
Es wird angenommen, dass Prozessorkerne unabhängig voneinander arbeiten, solange sie nicht auf
gemeinsame Ressourcen zugreifen oder Inter Processor Interrupts (IPIs) verwenden. IPIs werden zusammen
mit den Software-Interferenzkanälen angegangen, da sie aktiv durch die Software ausgelöst werden müssen.
Caches
Zwei verschiedene Aspekte der Cache-Architektur können Interferenzkanäle zwischen Prozessoren
darstellen: die Cache-Kohärenz und der gemeinsame Cache.
Das Speichersystem kann als hierarchisches System angesehen werden: Auf der untersten Stufe befindet
sich der Prozessorkern, über dem sich eine oder mehrere Cache-Ebenen befinden und an der Spitze steht der
Speicher. Der Cache, der direkt mit dem Prozessor verbunden ist, ist der L1-Cache, auf welchen der L2-Cache
folgt usw. Die höchste Cache-Ebene ist mit dem externen Bus und somit mit dem Hauptspeicher verbunden.
Eine Datenabfrage, die auf einer bestimmten Ebene nicht erfüllt werden kann, wird auf die nächsthöhere
Ebene übertragen. Mit zunehmender Cache-Ebene nimmt auch die Cache-Größe zu. Es erhöht sich jedoch auch
die Latenzzeit für jeden Speicherzugriff.
Gemeinsamer Cache
Der L1-Cache ist in der Regel in einen Datencache und einen Befehlscache unterteilt, während alle anderen
Ebenen Daten und Befehle speichern.
© 2016 SYSGO AG // www.sysgo.com
3
Die meisten Mehrkernprozessoren besitzen einen eigenen L1-Daten- und-Befehlscache für jeden Kern,
während sich die Architektur der L2- und L3-Caches je nach Prozessorfamilie unterscheidet.
Gemeinsam verwendeter Cache ist in einem Mehrkernprozessor einer der Hauptgründe für Interferenzen.
Ein Vergleich des Lese- und Schreibdurchsatzes zwischen Doppelkernprozessoren von INTEL und AMD zeigt
die Auswirkungen eines gemeinsam genutzten L2-Cache. Der Intel-Prozessor verfügt über einen eigenen L1Cache für jeden Kern. Der L2-Cache wird von beiden Kernen gemeinsam benutzt. Der AMD-Prozessor besitzt
getrennte L1- und L2-Caches für jeden Kern. Abbildung 2 zeigt die Ergebnisse für beide Prozessoren. Wenn der
Datensatz klein genug ist, um in den (für jeden Kern eigenen) L1-Cache zu passen, zeigen der Intel- und der
AMD-Prozessor keinen Leistungsverlust, wenn der zweite Kern aktiv wird. Wenn der Datensatz kleiner als der
den Kernen zugängliche L2-Cache ist und dieser nicht gemeinsam genutzt wird (AMD-Prozessor), verursacht
der zweite Kern ebenso keinen Leistungsabfall. Wenn der Datensatz jedoch kleiner als der für einen Kern
verfügbare L2-Cache ist und der L2-Cache gemeinsam genutzt wird (Intel-Prozessor), hängt der
Leistungsverlust durch den zweiten Kern von der Größe des Datensatzes ab und liegt zwischen 30 und 95 % für
Schreibvorgänge und zwischen 19 und 92 % für Lesezugriffe. Die größte Auswirkung (92 %) ist dann
festzustellen, wenn der Datensatz der Größe des L2-Cache genau entspricht. Mit einem Kern passen die Daten
nämlich noch vollständig in den L2-Cache, während mit zwei Kernen alle Daten vom Speicher abgerufen
werden müssen, was bedeutet, dass wir die Leistung des L2-Cache mit der Leistung des Speicherbusses
vergleichen.
Ist der Datensatz deutlich größer als der L2-Cache, liegt der größte durch den zweiten Kern verursachte
Leistungsverlust bei rund 50 % für Lese- und Schreibvorgänge.
Abbildung 2. Lese- und Schreibdurchsatz auf getrennten Datensätzen (MByte)
Cache-Kohärenz
Ein weiterer wichtiger Aspekt bei der Cache-Verwendung ist die Konsistenz der lokalen Caches, die mit
einer gemeinsam genutzten Ressource verbunden sind. In Mehrkernsystemen mit Unified Memory ist die
Cache-Kohärenz von besonderer Bedeutung. Cache-Kohärenz bedeutet: „Wenn einer der lokalen Caches des
Kerns CA einen Bezug zur physikalischen Ressource Px besitzt und der im Cache gespeicherte Wert aktueller ist
als der in der Ressource Px gespeicherte, muss jeder Lesezugriff von jedem Kern (einschließlich dem Kern CA)
den im Cache des Kerns CA gespeicherten Wert bereitstellen.“ Die Kohärenz zwischen den Caches wird mit
Hilfe des Cache-Kohärenz-Protokolls aufrechterhalten.
© 2016 SYSGO AG // www.sysgo.com
4
Wenn beide Kerne nur lesen, zeigt der zweite Kern im Falle des Intel-Prozessors über den gesamten
Datensatz-Bereich fast keine Auswirkungen auf die Leistung, während die Leistung beim AMD-Prozessor auf
50 % sinkt, wenn der Datensatz größer als der L2-Cache ist. Wenn beide Kerne nur schreiben, wird der IntelProzessor vom gleichzeitigen Schreiben viel weniger beeinträchtigt als der AMD-Prozessor. Die Abhängigkeit
von der Datensatzgröße ist jedoch ähnlich (siehe Abbildung 3).
Abbildung 3. Lese- und Schreibdurchsatz auf gemeinsame Datensätze (MByte)
Wenn ein Kern denselben Datensatz liest, den der andere Kern schreibt, verhalten sich der Intel- und der
AMD-Prozessor vollkommen unterschiedlich. Abbildung 4 zeigt den relativen Datendurchsatz für beide
Prozessoren im Vergleich zum Datendurchsatz, wenn nur ein Kern aktiv ist. Beim Intel-Prozessor wird der
schreibende Prozessor von einem gleichzeitigen Lesevorgang viel weniger beeinträchtigt als beim AMDProzessor. Der höchste Leistungsverlust erreicht jedoch ebenfalls 90 %, sollte die Datensatzgröße 4 MByte
betragen.
Beim AMD-Prozessor liegt der Leistungsverlust bei kleinen Datensätzen bei 99 %, bei großen Datensätzen
bei rund 50 %. Wenn wir den Verlust der Leseleistung vergleichen, kommen wir zum Schluss, dass auf dem
Intel-Prozessor das Lesen bei sehr kleinen Datensätzen beinahe vollständig blockiert wird. Beim AMDProzessor ist diese Auswirkung nicht zu beobachten. Werden die Datensätze größer, verhalten sich der Intelund der AMD-Prozessor ähnlich. Für mittelgroße Datensätze beträgt der Verlust rund 90 % für beide
Prozessoren.
Abbildung 4. Relativer Leistungsverlust bei gleichzeitigen Lese- und Schreibvorgängen
© 2016 SYSGO AG // www.sysgo.com
5
Datenbusse
Die Ergebnisse der Leistungsmessungen (Abbildungen 2 und 3) zeigen, dass die Bandbreite des
Speicherbusses zwischen den Kernen geteilt wird. Wenn die Kerne einen Datensatz bearbeiten, der so groß ist,
dass die Caches keinen Einfluss haben, sinkt die Leistung auf 50 % ab, wenn beide Kerne aktiv sind. Dieselbe
Wirkung wurde auf dem PCI-Bus gemessen. Während eine Cache-Trefferrate von 0 % beim Speicherzugriff
sehr unwahrscheinlich ist, stellt sie auf dem PCI-Bus den Normalfall dar, da auf PCI-Geräte normalerweise mit
deaktivierten Caches zugegriffen wird.
Gemeinsame E/A-Geräte
Die durch gleichzeitigen Zugriff auf gemeinsame E/A-Geräte hervorgerufene Leistungsminderung hängt
hauptsächlich vom Bus ab, der das Gerät mit dem Prozessor verbindet (z.B. der PCI-Bus) sowie vom Gerät
selbst. Ein Gerät, das nur eine Anfrage nach der anderen bearbeiten kann, kann eine zweite Anfrage für
Hunderte von Mikrosekunden blockieren.
Geteilte Interrupts
Auf einer Mehrkernplattform wird ein Hardware-Interrupt in der Regel auf einen Kern geleitet. Sind
mehrere Geräte mit einer Interrupt-Leitung verbunden, und werden diese Geräte nicht vom selben Kern bedient,
muss der Kern, der den Interrupt empfängt diesen an den/die anderen Kern(e) weiterleiten und diese(n) dazu
bringen, den Interrupt-Status seiner/ihrer Geräte zu überprüfen. Geteilte Interrupts können erhebliche
Interferenzen zwischen den Kernen verursachen. Diese müssen durch ein geeignetes Plattformdesign verhindert
werden.
Software-Interferenzkanäle
Interferenzen zwischen Softwarekomponenten, die gleichzeitig auf verschiedenen Kernen laufen, hängen in
erster Linie von der Software-Architektur und der Art und Weise ab, wie die Software die Kerne verwendet. Auf
Betriebssystemebene werden zwei Konzepte für Mehrkern- und Mehrprozessor-Systeme unterschieden: das
asymmetrische Multiprozessorsystem (AMP) und das symmetrische Multiprozessorsystem (SMP).
Beim AMP-Ansatz wird eine Mehrkernprozessor-Plattform sehr ähnlich wie bei einem
Multiprozessorsystem eingesetzt. Jeder Kern führt seine eigene System-Software aus. Die Kerne sind über
verschiedene Kommunikationskanäle gekoppelt, die auf Inter Processor Interrupts (IPIs), gemeinsam genutzten
Speicherbereichen (Shared Memory) oder externen Geräten basieren können.
Interferenzen auf einer AMP-Plattform werden hauptsächlich durch gemeinsame Caches, Speicher und
E/A-Busse sowie den gleichzeitigen Zugriff auf gemeinsame Geräte verursacht. Interferenzen am Speicherbus
sind nur schwer vermeidbar, während der Zugriff auf E/A-Geräte auf einen Kern beschränkt werden kann.
Kohärenzprobleme sind auf unterschiedliche Kommunikationspuffer begrenzt. Die durch die Systemsoftware
hervorgerufenen Interferenzen beschränken sich auf gemeinsame Geräte-Handle.
Der SMP-Ansatz nutzt eine Instanz der Systemsoftware, um alle Kerne und Plattformressourcen zu steuern.
Das Betriebssystem stellt üblicherweise Dienste zur Inter- und Intrapartitionskommunikation bereit, die eine
transparente Kommunikation zwischen den Kernen verwalten. Die Gerätetreiber sind dafür verantwortlich, den
gleichzeitigen Zugriff auf Plattformressourcen zu verwalten.
Im Vergleich zu einer AMP-Konfiguration fügt der SMP-Ansatz eine bedeutende Quelle für mögliche
Interferenzen hinzu: die gemeinsame System-Softwareschicht. Ein sorgfältiges Design der kritischen Abschnitte
kann jedoch die Auswirkungen begrenzen.
© 2016 SYSGO AG // www.sysgo.com
6
Ein SMP-Ansatz für hochkritische Sicherheitssysteme
Der AMP-Ansatz ist für spezifische Lösungen interessant, vor allem bei der Anwendung auf Dual-core
Plattformen, bei denen ein Kern vollständig der E/A-Verarbeitung dient und der andere Kern die
Anwendungssoftware ausführt. Die durch den E/A-Prozessor hervorgerufene Interferenz ist überschaubar, da
dieser vollständig unter der Kontrolle der (vertrauenswürdigen) Software auf Plattformebene läuft. Dieser
Ansatz scheint ein sinnvoller erster Schritt in Richtung Sicherheitssysteme auf Mehrkernbasis zu sein. Es wird
jedoch keine wesentliche zusätzliche Verarbeitungsbandbreite für die Anwendungen erzielt.
Ein allgemeinerer Ansatz ist die Verwendung eines SMP-Betriebssystems, da es besser mit zunehmender
Anzahl der Prozessorkerne skaliert und erhöhte Flexibilität bietet.
Das folgende Beispiel erläutert die Verwendung einer Hypervisor-Technologie auf Basis eines
Separationskernel zur Steuerung eines Mehrkernprozessors, um die strengen Anforderungen mehrerer
Sicherheitsstandards zu erfüllen. Die Architektur eines Separationskernel folgt einem stark modularen Ansatz,
mit den Grundprinzipien Least-Privilege und minimaler Trusted-Code-Base. Der Separationkernel vereint einen
Mikrokernel, der Echtzeitverhalten und grundlegende Ressourcenverwaltung gewährleistet, mit einem
Hypervisor. Der Hypervisor sorgt durch Separation und kontrollierten Informationsfluss für Sicherheit. Die
Grundkomponenten eines solchen Echtzeit-Hypervisors sind virtuelle Maschinen, die in der Separationkernel
Fachbezeichnung Ressourcenpartitionen (RP) genannt werden. Die Partitionen beherbergen entweder ein
vollwertiges Betriebssystem wie z.B. Linux, oder eine Laufzeitumgebung wie POSIX oder JAVA oder
technologiespezifische Lösungen wie AUTOSAR oder ARINC 653 (siehe Abb. 5). Die Rechenzeit wird mittels
Zeitpartitionierung zugeteilt. Dafür wird ein zweistufiger Scheduler verwendet. Die erste Stufe teilt die
verfügbare Zeit in Zeitpartitionen (tp) auf und weist einer Zeitpartition eine oder mehrere Ressourcenpartitionen
zu. Die zweite Stufe schedulet die zu jeder Zeitpartition gehörenden Threads (aus den Ressource Partitionen)
auf FIFO- und Prioritätsbasis. Eine definierte Abfolge von Zeitpartitionen wird in einem Major Time-Frame
(MTF) gruppiert und zyklisch ausgeführt, immer wenn ein MTF beendet ist (siehe Abb. 5).
© 2016 SYSGO AG // www.sysgo.com
7
Abbildung 5. Zeit und Ressource Partitionierung für einen Separation-Kernel
Abbildung 6. Konfigurationsbeispiel und Laufzeitmodell unter Einsatz des PikeOS-Partitionschedulers
Die Prozessorkerne sind Ressourcenpartitionen statisch zugewiesen, wobei eine Ressourcenpartition
mehrere Kerne nutzen kann. Abbildung 6 zeigt eine mögliche Konfiguration des PikeOS-Partition-Schedulers:
© 2016 SYSGO AG // www.sysgo.com
8
Die angenommene Plattform basiert auf einem Vierkernprozessor. Der Major-Time-Frame ist in drei
Partitionsfenster unterteilt (tp1 bis tp3). Die sicherheitskritische Anwendung (RP3, rot) soll ausschließlichen
Zugriff auf einen der Kerne (Core_C) sowie exklusiven Zugriff auf die gesamte Plattform während ihres
Zeitfensters (tp3) haben. Eine rechenintensive Partition (RP2) soll während ihres Zeitfensters (tp2)exklusiven
Zugriff auf die verbleibenden drei Kerne besitzen. Eine weitere Zeitpartition (tp1) wird von zwei
Ressourcenpartitionen (RP1 und RP4) geteilt. RP1 wird auf zwei Kernen ausgeführt, RP4 auf einem Kern.
Die gewählte Konfiguration setzt auf ein Höchstmaß an Isolation für die kritische Anwendung und
akzeptiert dafür die Vergeudung von Prozessorzeit. Rp3 ist die einzige Partition, die auf Kern C ausgeführt
wird; während der Zeitscheibe der Zeitpartition tp3 wird keine andere Partition ausgeführt. Dadurch werden alle
Interferenzen auf Hardware- und Softwareebene eliminiert. Der Grad an Determinismus dieser Konfiguration ist
sogar höher als auf einer RTOS-basierten Plattform, da die kritische Anwendung den Kern nicht mit anderen
Partitionen teilt und dadurch der Zustand der privaten Caches unverändert bleibt.
Nichtsdestotrotz muss die Einstellung der Caches und Übersetzungspuffer (TLB) berücksichtigt werden.
Der PikeOS-Hypervisor stellt Mittel zur Verfügung, um Befehlscaches und TLBs zu invalidieren und den
Datencache zwischen den Umschaltungen der Zeitpartitionen zu leeren. Dadurch wird sichergestellt, dass sich
Caches und Übersetzungspuffer bei der Partitionsausführung in einem definierten Zustand befinden. Das Leeren
und invalidieren des Cache / Übersetzungspuffers erfolgt während der Umschaltung der Zeitpartition, wodurch
den eigentlichen Zeitpartitionen Prozessorzyklen verloren gehen (Jitter). Ein möglicher Ansatz ist, ein kleines
Zeitpartitionsfenster zu definieren, dem eine eigene Zeitpartitions-ID zugewiesen wird, und dieses vor der
Ausführung der zeitkritischen Anwendung einzufügen. Dadurch wird der Jitter der zeitkritischen Anwendung
eliminiert.
Vertikale Marktaspekte
Mit dem Positionspapier CAST 32 (Originalfassung) [3] haben die EASA und FAA eine Abhandlung
veröffentlicht, in welcher 24 Zielvorgaben zur Handhabung von Mehrkernprozessoren in Avioniksystemen auf
den Sicherheitsanforderungsstufen (DAL) A und B erörtert werden. Es wurde eine Untergruppe von 16 Zielen
ermittelt, um in Avioniksystemen der Stufe DAL C Mehrfachkerne anzuwenden. Die Abhandlung bezieht sich
nur auf Mehrkernprozessoren mit zwei aktiven Kernen. Das Positionspapier CAST 32 kann als sehr brauchbare
Einführung angesichts der Bedenken der Luftfahrtbehörden bezüglich des Einsatzes von Mehrfachkernen
verwendet werden.
Die Sicherheitsstandards für die Bahnindustrie (EN50128, EN50129) sind flexibler und erwähnen den
Einsatz von Multiprozessorsystemen für „Eisenbahnsteuerungs- und Überwachungssysteme “. Das
Hauptanliegen beim Einsatz von Mehrkernprozessoren ist die Bestimmung der maximalen Ausführungszeit
(Worst Case Execution Time, WCET). Die in dieser Abhandlung erörterten Hardware- und SoftwareInterferenzkanäle können die Bestimmung der maximalen Ausführungszeit unmöglich machen. Das
Unternehmen SYSGO hat die oben beschriebene Konfiguration für sein PikeOS-Echtzeit-Hypervisor
verwendet, um das weltweit erste SIL4-Zertifikat für ein Mehrkernsystem (Dual-Core Intel i7) zu erhalten.
Dieses Prinzip ist nicht auf Doppelkerne beschränkt, solange eine passende PikeOS-Konfiguration den
Prozessor deterministisch kontrollieren kann.
Literaturhinweise:
[1] – How to address certification for multi-core based IMA platforms; Rudolf Fuchsen, SYSGO AG
[2]- How hypervisor operating systems can cope with multi-core certification challenges; Sven
Nordhoff, SYSGO AG.
[3] - CAST-32, Mai 2014, Position Paper CAST-32 on Multi-core Processors, Originalfassung.
© 2016 SYSGO AG // www.sysgo.com
9

Documents pareils