DE102013214756A1 - Verfahren und vorrichtung zum verbessern des verarbeitungsleistungsvermögens eines mehrkernprozessors - Google Patents

Verfahren und vorrichtung zum verbessern des verarbeitungsleistungsvermögens eines mehrkernprozessors Download PDF

Info

Publication number
DE102013214756A1
DE102013214756A1 DE102013214756.2A DE102013214756A DE102013214756A1 DE 102013214756 A1 DE102013214756 A1 DE 102013214756A1 DE 102013214756 A DE102013214756 A DE 102013214756A DE 102013214756 A1 DE102013214756 A1 DE 102013214756A1
Authority
DE
Germany
Prior art keywords
task
priority
global
runnable
tasks
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE102013214756.2A
Other languages
English (en)
Other versions
DE102013214756B4 (de
Inventor
Paolo Giusto
Karthik Lakshmanan
Ragunathan Rajkumar
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Carnegie Mellon University
GM Global Technology Operations LLC
Original Assignee
Carnegie Mellon University
GM Global Technology Operations LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Carnegie Mellon University, GM Global Technology Operations LLC filed Critical Carnegie Mellon University
Publication of DE102013214756A1 publication Critical patent/DE102013214756A1/de
Application granted granted Critical
Publication of DE102013214756B4 publication Critical patent/DE102013214756B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Abstract

Ein Verfahren zum Verwalten einer Task-Ausführung in einem Mehrkernprozessor umfasst, dass ein Spinlock eingesetzt wird, um eine dynamisch erzwingbare Beschränkung eines gegenseitigen Ausschlusses zu bewirken, und ein Multiprozessorprioritätsobergrenzenprotokoll eingesetzt wird, um zu bewirken, dass die dynamisch erzwingbare Beschränkung eines gegenseitigen Ausschlusses mehrere Tasks synchronisiert, die in dem ersten und zweiten Verarbeitungskern des Mehrkernprozessors ausgeführt werden.

Description

  • TECHNISCHES GEBIET
  • Diese Offenbarung bezieht sich auf Mehrkernprozessoren.
  • HINTERGRUND
  • Die Aussagen in diesem Abschnitt stellen lediglich Hintergrundinformationen bereit, die sich auf die vorliegende Offenbarung beziehen. Dementsprechend sollen solche Aussagen nicht Stand der Technik bilden.
  • Prozessoren sind elektronische Einrichtungen, die mit einer zentralen Verarbeitungseinheit/zentralen Verarbeitungseinheiten (CPU/CPUs) ausgestaltet sind und denen ein Speicher und Speichereinrichtungen zugehörig sind, die Routinen ausführen, um Tasks durchzuführen. Das Leistungsvermögen eines Prozessors kann verbessert werden, indem die Taktgeschwindigkeit der CPU erhöht wird, was zu einer schnelleren Ausführung von Routinen führt. Es besteht eine obere Grenze hinsichtlich Taktgeschwindigkeit und zugehörigem Prozessorleistungsvermögen aufgrund von mechanischen, elektrischen und thermischen Einschränkungen der Prozessorhardware und der Schnittstelleneinrichtungen.
  • Mehrkernprozessoren wurden eingeführt, um das Leistungsvermögen beim Ausführen von Routinen zum Durchführen von Tasks zu verbessern. Bei solchen Architekturen ermöglicht das Vorhandensein mehrerer Verarbeitungskerne das Vermögen einer wahren parallelen Task-Ausführung. Tasks, die gleichzeitig an verschiedenen Kernen ausgeführt werden, müssen jedoch möglicherweise wegen Anwendungsebenenanforderungen miteinander synchronisiert und/oder koordiniert werden.
  • ZUSAMMENFASSUNG
  • Ein Verfahren zum Verwalten einer Task-Ausführung in einem Mehrkernprozessor umfasst, dass ein Spinlock eingesetzt wird, um eine dynamisch erzwingbare Beschränkung eines gegenseitigen Ausschlusses zu bewirken, und ein Multiprozessorprioritätsobergrenzenprotokoll eingesetzt wird, um zu bewirken, dass die dynamisch erzwingbare Beschränkung eines gegenseitigen Ausschlusses mehrere Tasks synchronisiert, die in dem ersten und zweiten Verarbeitungskern des Mehrkernprozessors ausgeführt werden.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Nachstehend werden eine oder mehrere Ausführungsformen beispielhaft und mit Bezugnahme auf die begleitenden Zeichnungen beschrieben, in denen:
  • 1-1 und 1-2 schematisch Ausführungsformen beispielhafter Mehrkernverarbeitungssysteme, die einen ersten und einen zweiten Verarbeitungskern umfassen, gemäß der Offenbarung zeigen;
  • 2-1 schematisch ein Task-Ausführungsdiagramm zum Ausführen mehrerer Tasks in einem Mehrkernverarbeitungssystem gemäß der Offenbarung zeigt;
  • 2-2 graphisch ein erstes Zeitdiagramm, das einer Task-Ausführung zugehörig ist, in Beziehung zu verstrichenen Zeitschritten, gemäß der Offenbarung zeigt;
  • 2-3 graphisch ein zweites Zeitdiagramm, das einer Task-Ausführung, die einen statischen Offset einsetzt, zugehörig ist, gezeigt in Beziehung zu verstrichenen Zeitschritten, gemäß der Offenbarung zeigt;
  • 3 graphisch eine Empfindlichkeitsbewertung von Setzen/Warten-Ereignissen für eine Basisnutzung und eine maximale Nutzung, dargestellt in Relation zu einer Brennkraftmaschinendrehzahl, gemäß der Offenbarung zeigt;
  • 4 schematisch einen Prozess zum Analysieren des Timing von Spinlocks einschließlich eines ersten und eines zweiten Verarbeitungskerns und einer gemeinsam genutzten Softwareressource, die entweder für eine Ausführung oder Zirkulation erlangt wird, gemäß der Offenbarung zeigt;
  • 5 graphisch ein Zeitdiagramm, das einer Task-Ausführung zugehörig ist, die Spinlocks einsetzt, gezeigt in Beziehung zu verstrichenen Zeitschritten, gemäß der Offenbarung zeigt;
  • 6 graphisch eine Empfindlichkeitsbewertung von Spinlocks für eine Basisnutzung und eine maximale Nutzung, dargestellt in Relation zu einer Brennkraftmaschinendrehzahl, gemäß der Offenbarung zeigt;
  • 7 schematisch eine Realisierung eines Multiprozessorprioritätsobergrenzenprotokolls, die einen ersten und einen zweiten Verarbeitungskern und eine entsprechende erste und zweite Prioritätswarteschlange, die zu einer gemeinsam genutzten Prioritätswarteschlange führen, die durch eine gemeinsam genutzte Softwareressource ausgeführt wird, gemäß der Offenbarung zeigt; und
  • 8 graphisch ein Zeitdiagramm, das einer Ausführung des Multiprozessorprioritätsobergrenzenprotokolls zugehörig ist, gemäß der Offenbarung zeigt.
  • DETAILLIERTE BESCHREIBUNG
  • Nun auf die Zeichnungen Bezug nehmend, in denen die Darstellungen lediglich zum Zweck des Erläuterns bestimmter beispielhafter Ausführungsformen und nicht zum Zweck des Einschränkens dieser vorgesehen sind, zeigen 1-1 und 1-2 schematisch Ausführungsformen von Mehrkernverarbeitungssystemen, die einen ersten und einen zweiten Verarbeitungskern umfassen. Die hierin beschriebenen Mehrkernverarbeitungssysteme, die einen ersten und einen zweiten Verarbeitungskern umfassen, sind erläuternd und nicht einschränkend. Ferner werden die Begriffe ”erster” und ”zweiter” eingesetzt, um spezifische Verarbeitungskerne zu identifizieren und zu unterscheiden, sie werden jedoch nicht eingesetzt, um eine Reihenfolge des Vorrangs oder der Vorliebe anzugeben. Das Mehrkernverarbeitungssystem ist vorzugsweise ein homogener Mehrkernprozessor, obwohl die Offenbarung nicht darauf beschränkt ist. Die hierin beschriebenen Konzepte treffen auf jedes beliebige Mehrkernverarbeitungssystem zu, das zwei oder mehr Verarbeitungskerne einsetzt.
  • 1-1 zeigt eine erste Ausführungsform eines homogenen Mehrkernprozessors 10, der vorzugsweise ein Einzelchipelement ist, das einen ersten und zweiten Verarbeitungskern 12 bzw. 22, einen ersten und zweiten Architekturzustand 13 bzw. 23 und einen individuellen ersten und zweiten On-Chip-L1-Speicher-Cache 14 bzw. 24 umfasst. Andere Merkmale umfassen thermische Controller 30, programmierbare Interrupt-Controller (APIC) 32 und eine Leistungsverwaltungslogik 34. Ein zweiter gemeinsam genutzter Speicher-Cache 36 und eine Busschnittstelle 38 werden eingesetzt, um mit einem externen Bus 40 zu kommunizieren.
  • 1-2 zeigt eine zweite Ausführungsform eines homogenen Mehrkernprozessors 50, der vorzugsweise ein Einzelchipelement ist und einen ersten und einen zweiten Verarbeitungskern 52 bzw. 62 und einen individuellen ersten und zweiten On-Chip-L1-Speicher-Cache 54 bzw. 64 umfasst. Andere Merkmale umfassen bei einer Ausführungsform eine Systemanforderungsschnittstelle 66, einen Crossbar-Schalter 67 und einen ersten und zweiten Speichercontroller 58 bzw. 68, die verwendet werden, um Kommunikationen mit externen Einrichtungen zu verwalten, die Kommunikationen über einen externen Bus 40 umfassen. Die erste und zweite Ausführungsform des homogenen Mehrkernprozessors 10 und 50 sind erläuternd.
  • Jeder der mehreren Tasks Ti umfasst eine Sequenz von Runnables, wobei m(i) die Anzahl von Runnables, die zu Task Ti gehören, bezeichnet. Die einzelnen Runnables sind mit Ri,1 bis Ri,m(i) bezeichnet. Die ungünstigste Ausführungszeit jedes Runnable Ri,j wird als bekannt angenommen und mit Ci,j bezeichnet. Die kumulative ungünstigste Ausführungszeit von Task Ti ist die Summe aller Bestandteil-Runnable-Ausführungszeiten, welche als Ci (d. h. Ci = Ci,1 + Ci,2 + ... + Ci,m(i)) bezeichnet ist. Der Begriff P(Ti) bezeichnet den Verarbeitungskern, dem Task Ti zugeordnet ist. Es wird angenommen, dass das erste Runnable Ri,1 jedes Tasks Ti entweder periodisch zu jedem Ti oder durch ein Ereignis Ei,1 das durch einen anderen Task mit Periode Ti gesetzt wird, ausgelöst wird. Es wird angenommen, dass alle nachfolgenden Runnables Ri,j (j > 1) durch entweder den Abschluss des vorherigen Runnable Ri,j-1 oder ein externes Ereignis Ei,j ausgelöst werden. Jedem Runnable Ri,j wird auch ein Offset Oi,j ≥ 0 zugeordnet, so dass das Runnable nur für eine Ausführung berechtigt ist, nachdem Oi,j Zeiteinheiten seit der entsprechenden Freigabe von Ri,1 verstrichen sind.
  • Das Runnable, das ein Ereignis Ei,j auslöst oder setzt, wird durch πi,j bezeichnet. Bei dem Szenario, bei dem ein Runnable Ri,j (j > 1) durch das vorherige Runnable Ri,j-1 ausgelöst wird, wird Ei,j durch πi,j = Ri,j-1 gesetzt. Der Einfachheit halber ist πi,j = O für jedes Runnable Ri,1, von dem angenommen wird, dass es periodisch zu jedem Ti ausgelöst wird. Jeder Task weist eine Deadline auf, die gleich seiner Periode Ti ist. Diese Annahme folgt der Tatsache, dass eine weitere Iteration von Task Ti startet, wenn Ti nicht in Ti Zeiteinheiten abgeschlossen ist. Es wird angenommen, dass die Prioritätszuordnung einem Rate Monotonic Scheduling folgt. Tasks mit kürzeren Perioden werden höhere Planungsprioritäten zugeordnet. Ohne Verlust der Allgemeingültigkeit wird der Task-Satz mit steigender Ordnung der Perioden und zunehmender Ordnung der Prioritäten bereitgestellt. Der Begriff hp(Ti) wird eingesetzt, um den Satz von Tasks, die eine höhere Priorität als Ti aufweisen, zu bezeichnen, und Ip(Ti) wird eingesetzt, um den Satz von Tasks zu bezeichnen, die eine niedrigere Priorität als Ti aufweisen. Der Begriff p(Ti) wird eingesetzt, um die Priorität von Task Ti zu bezeichnen. Für jede Sperre M, die eine sich gegenseitig ausschließende gemeinsam genutzte Ressource schützt, wird der Begriff I(M) eingesetzt, um die Anzahl an Tasks zu bezeichnen, die auf Sperre M zugreifen, und wird CM eingesetzt, um die maximale Dauer darzustellen, für die M gehalten werden kann.
  • Synchronisationsstrukturen, wie beispielsweise Vorrangbeschränkungen, können unter Verwendung von Ereignissen für Mehrkernvorrangbeschränkungen realisiert werden. Beispielhaft werden zwei Tasks in Betracht gezogen, die Task T1, der an Verarbeitungskern P1 ausgeführt wird, und Task T2, der an Verarbeitungskern P2 ausgeführt wird, umfassen. Die Anwendung erfordert, dass ein Runnable R2,d von Task T2 die Ausführung nach dem Abschluss eines Runnable R1,s von Task T1 startet. Bei diesem Szenario kann Runnable R2,d an P2 hinsichtlich eines Ereignisses E2,d Bevorstehen/Warten, welches wiederum durch den Abschluss von Runnable R1,s an P1 gesetzt werden kann. Setzen/Warten-Ereignisse werden eingesetzt, um Beschränkungen eines gegenseitigen Ausschlusses statisch zu erzwingen, indem Vorrangbeziehungen zwischen Runnables bei unterschiedlichen Tasks, die an dem gleichen Kern laufen, erzwungen werden, und werden hinsichtlich des Kontexts von Mehrkernprozessoren verallgemeinert.
  • Eine Analyse von Tasks mit Setzen/Warten-Ereignissen umfasst das Entwickeln einer Reaktionszeitanalyse für solche Tasks. Lediglich beispielhaft wird ein Task T1 an Verarbeitungskern P mit den Runnables Ri,1 bis Ri,m(i), der Setzen/Warten-Ereignisse verwendet, bewertet. Bei einem Szenario verwendet keiner der Tasks Th einer höheren Priorität (d. h. höhere Priorität als Ti) an P Setzen/Warten-Ereignisse, um sich mit anderen Tasks zu synchronisieren, d. h. ∀Th ∊ hp(Ti) und ∀k > 1, πh,k = Rh,k-1. Bei diesem Szenario kann eine Grenze hinsichtlich der ungünstigsten Reaktionszeit von Task Ti abgeleitet werden wie folgt. Es bezeichne F(Ri,j) eine obere Grenze hinsichtlich der Beendigungszeit von Runnable Ri,j. Um F(Ri,j) zu berechnen, wird das letzte Runnable Ri,e von Ti vor Ri,j eingesetzt, das durch ein externes Ereignis ausgelöst wurde, d. h. e < j ist der größte Wert, so dass e = 1 oder πi,e ≠ Ri,e. Der Zeitpunkt, zu dem dieses externe Ereignis gesetzt wird, kann mit Si,e bezeichnet werden. Wenn Wi,{e...j} die ungünstigste Reaktionszeit des Ti-Segments, das die Runnables Ri,e bis Ri,j umfasst, bezeichnet, wird F(Ri,j) wie folgt ermittelt. F(Ri,j) = Si,e + Wi,{e...j} [1]
  • Die Beendigungszeit von Runnable Ri,j ist somit nicht größer als Wi,{e...j} seit dem Setzen von Ereignis Ei,e bei Si,e.
  • Eine obere Grenze der ungünstigsten Reaktionszeit Wi,{e...j} kann unter der Annahme erhalten werden, dass keiner der Tasks einer höheren Priorität an Verarbeitungskern P externe Setzen/Warten-Ereignisse verwendet. Die ungünstigste Reaktionszeit Wi,{e...j} wird durch Verwenden des Standardreaktionszeittests berechnet, der die Konvergenz des Folgenden ist:
    Figure DE102013214756A1_0002
    wobei
  • Figure DE102013214756A1_0003
  • Unter der Annahme, dass Runnables ihre entsprechenden Ereignisse durch das Ende deren Ausführung setzen, umfasst das Ergebnis das Folgende. Si,e = F(πi,e) [3]
  • Dieser Betrieb wird mit Bezug auf 2-1, 2-2 und 2-3 gezeigt.
  • 2-1 zeigt schematisch ein Task-Ausführungsdiagramm zum Ausführen mehrerer Tasks in einem Mehrkernverarbeitungssystem wie es z. B. in Bezug auf 1-1 und 1-2 beschrieben ist. Die ausgeführten Tasks umfassen T1 210, T2 220, T3 230 und T4 240. T1 210 umfasst sequentiell ausgeführte Runnables R1,1 211, R1,2 212, R1,3 213 und wird durch den ersten Verarbeitungskern ausgeführt. Wie gezeigt ist T1 210 für eine Ausführung einmal alle vier Zeitschritte geplant und wird jedes Runnable in einem einzelnen Zeitschritt ausgeführt. T2 220 umfasst sequentiell ausgeführte Runnables R2,1 221 und R2,2 222 und wird durch den ersten Verarbeitungskern ausgeführt. Wie gezeigt ist T2 220 für eine Ausführung einmal alle sieben Zeitschritte geplant und wird jedes Runnable in einem einzelnen Zeitschritt ausgeführt. T1 210 hat eine höhere Priorität als T2 220 und hat somit bei einer Ausführung in dem ersten Verarbeitungskern Vorrang. T3 230 umfasst ein einzelnes Runnable R3,1 231 und wird durch den zweiten Verarbeitungskern ausgeführt. Wie gezeigt ist T3 230 für eine Ausführung einmal alle drei Zeitschritte geplant und wird jedes Runnable in einem einzelnen Zeitschritt ausgeführt. T4 240 umfasst ein einzelnes Runnable R4,1 241 und wird durch den zweiten Verarbeitungskern ausgeführt. Wie gezeigt ist T4 240 für eine Ausführung einmal alle vier Zeitschritte geplant und wird jedes Runnable in einem einzelnen Zeitschritt ausgeführt. T3 230 hat eine höhere Priorität als T4 240 und hat somit bei der Ausführung in dem zweiten Verarbeitungskern Vorrang. Der erste und zweite Verarbeitungskern 20 und 30 sind jeweils ausgestaltet, um zu einem Zeitpunkt ein Task-Runnable auszuführen. T2 220 und T3 230 können ohne Setzen/Warten-Ereignisbeschränkungen ausgeführt werden. T1 210 und T4 240 weisen jeweils eine Setzen/Warten-Ereignisbeschränkung auf, die eine Vorrangbeziehung ist, wobei die Ausführung von Runnable R1,2 212 nicht vor einer abgeschlossenen Ausführung von Runnable R1,1 211 von T1 210 in dem ersten Verarbeitungskern wie durch Verbinder 215 gezeigt und Runnable R4,1 241 von T4 240 in dem zweiten Verarbeitungskern wie durch Verbinder 245 gezeigt initiiert werden kann. Runnable R4,1 wird durch ein Ereignis E4,1 ausgelöst, das durch Runnable R2,3 gesetzt wird, d. h. R4,1 = R2,3. Ähnlich wird Runnable R2,4 durch ein Ereignis E2,4 ausgelöst, das durch Runnable R4,1 gesetzt wird, d. h. R2,4 = R4,1. Wie gezeigt wird die ungünstigste Reaktionszeit jedes intern ausgelösten benachbarten Segments berechnet, um die Gesamt-Task-Reaktionszeit zu begrenzen. Die Beendigungszeit F(R2,3) von Runnable R2,3 wird als ungünstigste Reaktionszeit von Segment R2,1 bis R2,3 unter Verwendung der in Bezug auf Gl. 2 beschriebenen Konvergenz berechnet. Diese wird dann als Setzzeit von Ereignis E4,1 unter Verwendung von Gl. 3 verwendet. Die ungünstigste Reaktionszeit des Segment-Runnable R4,1 wird unter Verwendung der Konvergenz von Gl. 2 berechnet. Wieder unter Verwendung der Gl. 1 und 3 wird die Beendigungszeit von Runnable R4,1 als F(R4,1) berechnet. Unter Verwendung dieses Beendigungszeitwerts in Gl. 1 und der ungünstigsten Reaktionszeit von Segment R2,4 bis R2,5, die unter Verwendung der Konvergenz von Gl. 2 erhalten wird, wird die Beendigungszeit von Runnable R2,5 erhalten. Dies ist auch eine obere Grenze hinsichtlich der ungünstigsten Reaktionszeit von T2 220. Obwohl die Analyse eine obere Grenze hinsichtlich der ungünstigsten Reaktionszeit von Tasks unter Verwendung von Setzen/Warten-Ereignissen bereitstellt, können die Grenzen aufgrund der Annahme von unabhängigen ungünstigsten Reaktionszeiten für jedes benachbarte Segment von intern ausgelösten Runnables pessimistisch sein. Die Strukturen der Setzen/Warten-Ereignisse führen auch oftmals zu größeren ungünstigsten Reaktionszeiten, die auf die Möglichkeit langer Verzögerungen beim Setzen von Ereignissen zurückzuführen sind. Beispielsweise bei dem in 2-1 gezeigten Beispiel, bei dem T2 220 die Bevorrechtigung bei T4 durch T2 230 berücksichtigen muss, da dies zu einer Verzögerung beim Setzen von E2,4 führt. Es kann somit sowohl aus einer Analyse- als auch einer Durchführungsperspektive vorteilhaft sein, wenn möglich Setzen/Warten-Ereignisstrukturen zu vermeiden, um sicherzustellen, dass der Task-Satz mit höheren Nutzungsschwellenwerten planbar ist, oder alternativ, um langsamere (und daher) billigere Prozessoren zu verwenden. Eine Konsequenz des Verwendens von Setzen/Warten-Ereignissen ist, dass es nicht mehr garantiert ist, dass die Freigabe von Runnables periodisch ist. In Abhängigkeit von der Setzzeit Si,e externer Ereignisse ändert sich die Freigabezeit von Runnable Ri,e. Dies führt zu Schwankungen und Planungsstrafen für Tasks einer niedrigeren Priorität. Dies kann vermieden werden, indem den Runnables, die durch externe Ereignisse ausgelöst werden, statisch geeignete Offsets zugeordnet werden.
  • 2-2 zeigt graphisch das erste Zeitdiagramm, das der Ausführung der Tasks T1 210, T2 220, T3 230 und T4 240 zugehörig ist, die in Bezug auf 2-1 beschrieben sind, in Beziehung zu verstrichenen Zeitschritten, die an der x-Achse 250 gezeigt sind. Es werden keine statischen Offsets eingesetzt. Es ist gezeigt, dass die Ausführungen von Task-Runnables bei Zeitschritt 0 starten. Mit voranschreitenden Zeitschritten werden die Runnables von T1 210, T2 220, T3 230 und T4 240 ausgeführt. Die Tasks T1 210 und T2 220 sind einem ersten Verarbeitungskern zugeordnet, während die Tasks T3 230 und T4 240 einem zweiten Verarbeitungskern zugeordnet sind. T1 210 und T4 240 sind miteinander unter Verwendung von Setzen/Warten-Ereignissen synchronisiert. T1 210 besteht aus den Runnables R1,1, R1,2 und R1,3. T4 240 besteht aus einem einzelnen Runnable R4,1. T1 210 und T4 240 werden periodisch alle 4 Zeiteinheiten ausgelöst. Runnable R1,2 ist für eine Ausführung nach dem Abschluss von R1,1 berechtigt und wird durch ein durch R4,1 gesetztes externes Ereignis E1,2 ausgelöst, d. h. T1,2 = R4,1. Wie bei den anderen Tasks weist T2 220 zwei Runnables R2,1 und R2,2 mit einer Periode von 7 Zeiteinheiten auf und weist T2 230 ein einzelnes Runnable R3,1 mit einer Periode von 3 Zeiteinheiten auf. Zur Vereinfachung der Darstellung wird angenommen, dass alle Runnables eine ungünstigste Ausführungszeit von 1 Zeiteinheit haben.
  • Bei dem in 2-2 gezeigten Szenario bewirkt die Freigabeschwankung von Runnable R1,2, dass T2 220 seine Deadline von 7 Zeiteinheiten verpasst. Es ist zu sehen, dass R1,2 hinsichtlich Ereignis E1,2 während der ersten Freigabe von T1 210 verzögert wurde, während es während der zweiten Freigabe nicht verzögert wurde. Dies bewirkt eine verstärkte Bevorrechtigung bei T2 220, was dazu führt, dass T2 220 seine Deadline verpasst.
  • Ein Mechanismus umfasst das Zuordnen von Freigabe-Offsets zusätzlich zu den Ereignisauslösern, um eine Freigabeschwankung zu berücksichtigen. Lediglich beispielhaft wird ein durch ein externes Ereignis Ei,e ausgelöstes Runnable πi,e bewertet. Es ist garantiert, dass das Ereignis Ei,e durch die ungünstigste Beendigungszeit F(πi,e) von Runnable Πi,e, das Ei, e setzt, gesetzt wird. Daher garantiert das Zuordnen eines statischen Offsets von Φi,e = F(πi,e), dass das Ereignis Ei,e gesetzt wird, bevor die Ausführung von Runnable Ri,e beginnt. Statische Offsets fungieren somit als einfacher Periodendurchsetzer, was eine periodische Freigabe von Runnable Ri,e ermöglicht und Tasks mit einer niedrigeren Priorität als Task Ti davon befreit, die Freigabeschwankung von Runnable Ri,e zu bewältigen. Wenn Runnables keine derartigen statischen Offsets zugeordnet werden, kann dies zu längeren ungünstigsten Reaktionszeiten und unvorhersagbaren Runnable-Freigabezeiten während des Systembetriebs führen.
  • Die Details des in 2-2 gezeigten Betriebs umfassen das Folgende. Bei Zeitschritt 0 wird Runnable R1,1 211 von T1 210 in dem ersten Verarbeitungskern ausgeführt und wird Runnable R3,1 231 von T2 230 gleichzeitig in dem zweiten Verarbeitungskern ausgeführt. Bei Zeitschritt 1 wird Runnable R2,1 221 von T2 220 in dem ersten Verarbeitungskern ausgeführt und wird Runnable R4,1 241 von T4 240 in dem zweiten Verarbeitungskern ausgeführt. Die Ausführung von T1 210 wird verzögert, da Runnable R1,2 212 von T1 210 auf die Ausführung von Runnable R4,1 241 von T4 240 in dem zweiten Verarbeitungskern wartet, was eine erforderliche Vorbedingung einer Ausführung von Runnable R1,2 212 von T1 210 ist, das eine niedrigere Priorität als Runnable R3,1 231 von T2 230 hat. Bei Zeitschritt 2 wird Runnable R1,2 212 von T1 210 in dem ersten Verarbeitungskern nach den abgeschlossenen Ausführungen der Vorbedingungen von Runnable R1,1 211 von T1 210 und Runnable R4,1 241 von T4 240 ausgeführt. Bei Zeitschritt 3 wird Runnable R3,1 231 von T2 230 wieder in dem zweiten Verarbeitungskern in Ansprechen auf seine geplante Ausführung, die alle drei Zeitschritte stattfindet, ausgeführt. Element R1,3 213 von T1 210 wird in dem ersten Verarbeitungskern ausgeführt, wodurch eine Iteration von T1 210 abgeschlossen wird. Bei Zeitschritt 4 wird eine andere Iteration von T1 210 in dem ersten Verarbeitungskern in Ansprechen auf seine geplante Ausführung, die alle vier Zeitschritte stattfindet, ausgeführt. Somit wird bei Zeitschritt 4 Runnable R1,1 211 von T1 210 ausgeführt. Gleichzeitig wird Runnable R4,1 241 von T4 240 in dem zweiten Verarbeitungskern ausgeführt, da Runnable R3,1 231 von T2 230 zuvor ausgeführt wurde und der zweite Verarbeitungskern für eine Ausführung verfügbar ist.
  • Die gleichzeitige Ausführung von Runnable R1,1 211 von T1 210 und Runnable R4,1 241 von T4 240 ermöglicht eine Ausführung von Runnable R1,2 212 von T1 210 bei Zeitschritt 5, gefolgt von einer Ausführung von Runnable R1,3 213 von T1 210 bei Zeitschritt 6. Diese Aktion schließt die Ausführung von Runnable R2,2 222 von T2 220 aufgrund dessen niedrigerer Priorität in dem ersten Verarbeitungskern aus. Somit gelingt die Ausführung von T2 220 in seiner zugeteilten Zeitperiode nicht, und es entsteht ein Fehler, wie es durch Element 235 angegeben ist.
  • 2-3 zeigt graphisch das zweite Zeitdiagramm, das der Ausführung der Tasks T1 210, T2 220, T3 230 und T4 240 zugehörig ist, die in Bezug auf 2-1 beschrieben sind, in Beziehung zu verstrichenen Zeitschritten, die an der x-Achse 250 gezeigt sind, und wobei bei T1 210 ein statischer Offset eingesetzt wird. T1 210 kann einen statischen Offset einsetzen, da es drei Task-Runnables und vier Zeitschritte, um die Tasks abzuschließen, gibt. Die Ausführungen der Task-Runnables sind startend bei Zeitschritt 0 gezeigt. Mit voranschreitenden Zeitschritten werden die Runnables T1 210, T2 220, T3 230 und T4 240 wie folgt ausgeführt. Bei Zeitschritt 0 wird Runnable R1,1 211 von T1 210 in dem ersten Verarbeitungskern ausgeführt und wird Runnable R3,1 231 von T2 230 gleichzeitig in dem zweiten Verarbeitungskern ausgeführt. Während jeder Iteration von T1 210 wird nach der Ausführung von Runnable R1,1 211 ein statischer Offset 214 in T1 210 eingeführt. Das Einführen des statischen Offsets 214 nach der Ausführung von Runnable R1,1 211 ist zulässig, da T1 210 drei Task-Runnables und vier Zeitschritte, in denen der Task abzuschließen ist, aufweist, wodurch das Einführen des statischen Offsets 214 die vollständige Ausführung von T1 210 nicht stört. Somit wird bei Zeitschritt 1 die Ausführung von T1 210 in Ansprechen auf eine Einführung des statischen Offsets 214 verzögert. Element R4,1 241 von T4 240 wird in dem zweiten Verarbeitungskern ausgeführt, das eine niedrigere Priorität als Runnable R3,1 231 von T2 230 hat. Das Einführen des statischen Offsets 214 nach der Ausführung von Runnable R1,1 211 wird bevorzugt, da die Ausführung von Runnable R4,1 241 von T4 240 eine erforderliche Vorbedingung hierfür ist und Runnable R4,1 241 von T4 240 in dem zweiten Verarbeitungskern mit einer niedrigeren Priorität als Runnable R3,1 231 von T2 230 ausgeführt wird. Bei Zeitschritt 2 wird Runnable R1,2 212 von T1 210 in dem ersten Verarbeitungskern nach den abgeschlossenen Ausführungen der Vorbedingungen von Runnable R1,1 211 von T1 210 und Runnable R4,1 241 von T4 240 ausgeführt. Bei Zeitschritt 3 wird Runnable R3,1 231 von T2 230 in Ansprechen auf seine geplante Ausführung, die alle drei Zeitschritte stattfindet, wieder in dem zweiten Verarbeitungskern ausgeführt. Element R1,3 213 von T1 210 wird in dem ersten Verarbeitungskern ausgeführt, wodurch eine Iteration von T1 210 abgeschlossen wird. Bei Zeitschritt 4 wird eine andere Iteration von T1 210 in dem ersten Verarbeitungskern in Ansprechen auf seine geplante Ausführung, die alle vier Zeitschritte stattfindet, ausgeführt. Somit wird bei Zeitschritt 4 Runnable R1,1 211 von T1 210 ausgeführt. Gleichzeitig wird Runnable R4,1 241 von T4 240 in dem zweiten Verarbeitungskern ausgeführt, da Runnable R3,1 231 von T2 230 zuvor ausgeführt wurde und der zweite Verarbeitungskern für eine Ausführung zur Verfügung steht. Bei Zeitschritt 5 wird die Ausführung von T1 210 in Ansprechen auf die Einführung des statischen Offsets 214 verzögert. Dies ermöglicht, dass Runnable R2,2 222 von T2 220 in dem ersten Verarbeitungskern bei Zeitschritt 5 ausgeführt wird, wodurch die Ausführung von T2 220 in der geplanten Ausführung, die alle sieben Zeitschritte befohlen wird, abgeschlossen wird. Somit gibt es keine Verzögerung bei der Ausführung von T2 220 und keine zugehörige Verzögerung hinsichtlich Reaktionszeiten von Systemen, die auf das Ergebnis von T2 220 warten. Bei Zeitschritt 6 wird Runnable R1,2 212 von T1 210 in dem ersten Verarbeitungskern ausgeführt und wird Runnable R3,1 231 von T2 230 wieder in dem zweiten Verarbeitungskern ausgeführt, und zwar in Ansprechen auf seine geplante Ausführung, die alle drei Zeitschritte stattfindet. Bei Zeitschritt 7 wird Runnable R1,3 213 von T1 210 in dem ersten Verarbeitungskern ausgeführt, wodurch eine andere Iteration von T1 210 abgeschlossen wird.
  • Das Einführen des statischen Offsets 214 nach der Ausführung von Runnable R1,1 211 macht einen Zeitschritt in dem ersten Verarbeitungskern frei, während dem T2 220 einer niedrigeren Priorität dessen Runnable ausführen kann. Somit erhöht das Einführen des statischen Offsets 214 nach der Ausführung von Runnable R1,1 211 die Wahrscheinlichkeit, dass T2 220 einer niedrigeren Priorität seine Runnables rechtzeitig ausführen kann, ohne die Reaktionszeit der Ausführung von T1 210 zu beeinflussen. Ferner verbessert das Einführen des statischen Offsets 214 die Timing-Vorhersagbarkeit von Tasks einer niedrigeren Priorität, z. B. T2 220.
  • 3 zeigt graphisch eine Empfindlichkeitsbewertung von Setzen/Warten-Ereignissen für eine Basisnutzung 315 und eine maximale Nutzung 325, dargestellt in Relation zu einer Brennkraftmaschinendrehzahl, die an der x-Achse 310 gezeigt ist. Die Nutzung ist an der y-Achse 320 gezeigt. Um die Timing-Analyse unter Verwendung von Setzen/Warten-Ereignissen zu bewerten, wurde ein beispielhaftes System mit zehn zeitlich ausgelösten Tasks und zwei synchronen Maschinen-Tasks in Betracht gezogen und bewertet. Für den Setzen/Warten-Ereignismechanismus sind zwei Paare von Tasks relevant: (i) primäre und sekundäre Tasks mit Perioden von 6,25 ms und (ii) primäre und sekundäre Tasks mit Perioden von 12,5 ms. Task-Paar (i) weist 5 Runnables auf, während Task-Paar (ii) 68 Runnables aufweist. Task-Paar (i) weist 1 Setzen/Warten-Ereignisstruktur auf, während Task-Paar (ii) 30 Setzen/Warten-Ereignisstrukturen aufweist. Es wurde eine Timing-Analyse dieses Aufbaus an einem Dualkernsystem unter Verwendung der Analyse ausgeführt. Bei der Empfindlichkeitsbewertung erhöhen sich die Ausführungszeiten von Tasks, bis die Analyse berechnet, dass ein Task in dem System gerade seine Deadline verpasst. Die Systemnutzung wurde bei dieser Last als maximale erreichbare Nutzung für den gegebenen Arbeitspunkt verzeichnet. Unter der Annahme, dass es zwei synchrone Maschinen-Tasks gibt, wurde die Maschinendrehzahl von 3500 U/min auf 5750 U/min geändert, während die maximale erreichbare Nutzung gemessen wurde. Die Ergebnisse gaben an, dass Setzen/Warten-Ereignisstrukturen die Nutzung beeinflussen und das System nicht dazu in der Lage ist, eine Nutzung von 52% zu übersteigen, auch wenn das Basissystem eine hohe Nutzung aufweist. Im Gegensatz dazu kann, wenn das System keine derartigen Setzen/Warten-Ereignisstrukturen, jedoch die gleichen ungünstigsten Ausführungszeiten, aufwies, die Systemnutzung bei 3500 U/min um 127% erhöht werden und bei 5750 U/min um 124% erhöht werden. Dies bedeutet, dass das System mit höheren Nutzungsschwellenwerten planbar ist. Dies hat drei Auswirkungen: zusätzliche Tasks können die CPU-Verarbeitungsleistung verwenden, oder alternativ kann eine langsamere CPU eingesetzt werden, oder alternativ können Prozessoren mit weniger Verarbeitungskernen eingesetzt werden. Es sei angemerkt, dass die Nutzung einer Ressource niemals höher als 100% sein kann. Gemeint ist, dass die aktuelle Nutzung, mit der das System planbar ist, um beispielsweise einen Faktor von 1,27 erhöht werden kann. Wenn die aktuelle Nutzung 60% beträgt, können zusätzliche 7% (60%·1,27) der Prozessornutzung durch Integrieren zusätzlicher Tasks eingesetzt werden. Mit anderen Worten wird das System immer noch mit einer Nutzung von 67% geplant. Es können andere Faktoren die Nutzung beeinflussen, die inhärente Verzögerungen umfassen, die durch Setzen/Warten-Ereignisstrukturen eingeführt werden.
  • Es kann ein Spinlock-Grundelement als Mechanismus für eine Laufzeit-Task-Synchronisation zwischen Kernen in einem Mehrkernbetriebssystem eingesetzt werden. Ein Spinlock ist ein Synchronisationsmechanismus, bei dem ein Verarbeitungs-Thread zur Synchronisation in einer Schleife wartet oder während des Wartens zirkuliert. Der Thread bleibt aktiv, führt jedoch keinen nützlichen Task durch. Sobald es erlangt wurde, wird das Spinlock bis zur Freigabe gehalten, wenn nicht eine Synchronisation oder eine andere Aktion die Sperre freigibt.
  • Wie hierin beschrieben sind Runnables erforderlich, um ein Spinlock zu erlangen, bevor auf irgendeine gemeinsam genutzte Ressource zugegriffen wird. Wenn aktuell eine Ressource verwendet wird und das Spinlock gehalten wird, zirkuliert (läuft) das Runnable, das diese Ressource anfordert, weiterhin an der Sperre, bis es freigegeben wird oder bis ihm ein anderes Runnable einer höheren Priorität an dem gleichen Kern zuvorkommt. Einem zirkulierenden Runnable kann jedoch zuvorgekommen werden. Dies fungiert als dynamischer Laufzeitmechanismus für einen gegenseitigen Ausschluss. Ein Spinlock kann eingesetzt werden, um eine Systemnutzung zu verbessern, indem der durch Setzen/Warten-Ereignisse eingeführte Overhead vermieden wird. Unter Verwendung des Spinlock-Grundelements können gemeinsam genutzte Logikressourcen über mehrere Verarbeitungskerne geschützt werden. Tasks, die auf jegliche sich gegenseitig ausschließende gemeinsam genutzte Ressourcen zugreifen, können das Spinlock halten, bevor dies geschieht. Wenn ein Task versucht, ein Spinlock zu erlangen, das aktuell von einem anderen Task gehalten wird, zirkuliert der Task oder wartet er aktiv an der Sperre, bis sie durch den Task freigegeben wird. Dieser Mechanismus stellt somit eine Unterstützung bereit, um einen gegenseitigen Ausschluss einer gemeinsam genutzten Ressource in einem Mehrkernprozessor zu realisieren.
  • Bei Mehrkernprozessorarchitekturen können sowohl Spinlocks als auch Setzen/Warten-Ereignisse eingesetzt werden. Bei Tasks, bei denen die Beschränkungen eines gegenseitigen Ausschlusses statisch erzwungen werden müssen, werden Setzen/Warten-Ereignisse eingesetzt. Bei Tasks, bei denen die Beschränkungen eines gegenseitigen Ausschlusses dynamisch erzwungen werden können, können Spinlocks und/oder ein Multiprozessorprioritätsobergrenzenprotokoll (MPCP) eingesetzt werden. Beispielsweise wird ein System mit mehreren Sensoren und Aktoren bewertet, bei dem die Verarbeitung an einem Dualkernprozessor gehandhabt wird. Die Verarbeitungs-Tasks können selbst Setzen/Warten-Ereignisbeschränkungen für einen statisch definierten gegenseitigen Ausschluss verwenden. Die Sensor- und Aktordatenhandhabungs-Tasks könnten Laufzeitgrundelemente eines gegenseitigen Ausschlusses verwenden, um konsistente Datenauslesungen sicherzustellen. Obwohl Spinlocks einen gegenseitigen Ausschluss aus einer funktionalen Perspektive erfolgreich sicherstellen, können sie aus einer Timing-Perspektive mehrere Probleme darstellen. Spinlocks zugehörige Timing-Herausforderungen umfassen Deadlocks, eine Prioritätsumkehr und ein Aushungern. Ein Deadlock tritt auf, wenn einem Task, der eine Sperre hält, ein Task einer höheren Priorität zuvorkommt, der die gleiche Sperre erfordert. In diesem Fall zirkuliert der Task einer höheren Priorität, der die Ressource erfordert, endlos oder wartet er endlos aktiv. Eine Lösung, um dieses Problem anzugehen, ist, Konstruktionsbeschränkungen vorzugeben, die verhindern, dass Tasks an dem gleichen Verarbeitungskern Spinlocks verwenden.
  • Eine Prioritätsumkehr tritt auf, wenn ein Task einer höheren Priorität darauf wartet, dass ein Task einer niedrigen Priorität eine Ressource freigibt. Die Verwendung von Spinlocks kann zu einer unbegrenzten Dauer einer Prioritätsumkehr führen, was eine signifikante Herausforderung für Tasks mit strengen Deadlines darstellt. In Situationen, in denen es viele Tasks mit mittlerer Priorität und mehrere Bevorrechtigungen bei einem Task gibt, kann ein Task einer hohen Priorität schließlich einem unbegrenzten Umfang an Prioritätsumkehr gegenüberstehen. Eine Prioritätsumkehr ist ein ernsteres Problem bei Spinlocks, da die Tasks einer hohen Priorität grundlegend aktiv wartende/Verschwendungszyklen an deren Verarbeitungskernen darstellen. Lange Dauern einer Prioritätsumkehr führen somit zu einem erheblichen Verlust an nützlicher Systemnutzung. Das Begrenzen solch einer Prioritätsumkehr ist wichtig, um sowohl eine Timing-Vorhersagbarkeit als auch eine bessere Nutzung zu erreichen.
  • Ein Aushungern tritt auf, wenn ein Task aushungert, bevor er Zugriff zu einer gemeinsam genutzten Ressource erhält. Bei einem Beispiel wird ein Spinlock zwischen Tasks einer niedrigeren Priorität hin und her erlangt und freigegeben, obwohl ein Task einer höheren Priorität darauf wartet. Diese Sequenz ist möglich, wenn eine Hardwaretestrealisierung nicht garantiert, Task-Prioritäten zu respektieren. Beim Verwenden von Spinlocks kann ein Aushungern entstehen, da die Hardwareplanung von Testoperationen für bestimmte Verarbeitungskerne günstiger sein kann oder dem Task, der an der Sperre zirkuliert, an seinem Verarbeitungskern zuvorgekommen werden könnte, wann immer die Sperre durch andere Tasks freigegeben wird. Wie bei Spinlocks führt das aktive Warten während solch eines Aushungerns auch zu einem Nutzungsverlust durch verschwendete Prozessorzyklen.
  • Es können Task-Reaktionszeiten bei Spinlocks ermittelt werden, um ein Verhalten eines begrenzten Timings zu erreichen, das Konstruktionsbeschränkungen und Annahmen berücksichtigt. Dies umfasst das Verwenden der in Gl. 1, 2 und 3 bereitgestellten Analyse, indem eine Zirkulationszeit, um die Sperrenwarteverzögerungen zu berücksichtigen, und eine Blockierzeit für die nicht präemptive Dauer von Tasks einer niedrigeren Priorität hinzugefügt werden. Die Blockierterme werden wie folgt berechnet. Unter Verwendung des zuvor beschriebenen Satzes von Konstruktionsbeschränkungen wird eine Sperrenwarteverzögerung ermittelt. Jedes Mal, wenn ein sich gegenseitig ausschließender Task, d. h. ein sich gegenseitig ausschließendes Ereignis (Mutex) M durch ein Runnable Ri,j von Task Ti angefordert wird, wird die Sperrenwartezeit unter Verwendung von Spinlocks auf eine Sperrenwarteverzögerung (I(M) – 1)CM beschränkt, wobei CM die maximale Sperrenhaltezeit ist. Für jeden Task Ti kann eine kumulative Zirkulationszeit CI(i, j) berechnet werden. Ein Mutex ist ein Prozess, der sicherstellt, dass keine zwei Prozesse oder Verarbeitungs-Threads auf eine gemeinsam genutzte Logikressource, z. B. einen gemeinsam genutzten Speicher-Cache oder -ort, während der gleichen Zeitperiode zugreifen, wodurch eine Korrumpierung der gemeinsam genutzten Ressource verhindert wird. Für jedes Ereignis wird eine nicht präemptive Dauer ermittelt, die jedes periodisch ausgelöste Runnable Ri,j jedes Tasks Ti umfasst. Eine nicht präemptive Dauer Bn(i, j) von Tasks einer niedrigeren Priorität ist durch Verwenden der maximalen nicht präemptitiven Dauer begrenzt, die als Maximum I(M)CM über allen Mutexes M bestimmt ist, die durch jeden Task mit einer niedrigeren Priorität als Ti gehalten werden können. Es wird angenommen, dass der Task einer niedrigeren Priorität über dieser gesamten Dauer nicht präemptiv ist. Für Runnables Ri,j (j > 1), die durch den Abschluss eines vorherigen Runnable Ri,j (j > 1) ausgelöst werden, wird die nicht präemptive Blockierdauer Bn(i, j) auf 0 gesetzt.
  • Der Zirkulationsterm CI(i, j) wird zu der ungünstigsten Ausführungszeit jedes Runnable Ri,j für alle Tasks (einschließlich der Tasks einer höheren Priorität) hinzugefügt. Der Blockierterm Bn(i, j) muss nur für den Task Ti angewandt werden, dessen Reaktionszeit unter Verwendung von Gl. 2 berechnet wird. Die zuvor erwähnte beschriebene Analyse wird somit erweitert, um die Verwendung von Spinlocks zu umfassen.
  • 4 zeigt schematisch einen Prozess zum Analysieren des Timing von Spinlocks einschließlich eines ersten und eines zweiten Verarbeitungskerns 410 bzw. 420 und einer gemeinsam genutzten Softwareressource 430, die entweder für eine Ausführung 415 oder eine Zirkulation 425 erlangt wird. Dies ermöglicht eine Einführung von Konstruktionsbeschränkungen, um eine Timing-Analyse zu ermöglichen, und ermöglicht eine Entwicklung einer Timing-Analyse mit den vorhandenen Konstruktionsbeschränkungen.
  • 5 zeigt graphisch ein Zeitdiagramm, das einer Task-Ausführung zugehörig ist, die Spinlocks einsetzt, gezeigt in Beziehung zu verstrichenen Zeitschritten. Die Tasks sind gleichzeitig in Relation zur verstrichenen Zeit an der x-Achse 505 gezeigt und umfassen Task T1 510, der eine Ausführung an einem zweiten Verarbeitungskern anstrebt, Task T2 520, der eine Ausführung an einem ersten Verarbeitungskern anstrebt, und Task T3 530, der eine Ausführung an dem ersten Verarbeitungskern anstrebt. Zu Beginn befindet sich T3 530 in einem aktiven/Wartemodus 515, wobei ein Sperrenhaltezustand 525 eine Alle-Interrupts-Aussetzen-Funktion 545 einsetzt. Bei Zeitschritt 540 begibt sich T1 510 in einen aktiven/Wartemodus 515, der sich bei Zeitschritt 550 in den Sperrenhaltezustand ändert und eine Fernblockierung einsetzt. T2 520 beginnt den Betrieb bei Zeitschritt 550 in einem präemptiven Blockiermodus 535. Somit setzt das Steuersystem, um Perioden eines aktiven Wartens zu begrenzen, eine Alle-Interrupts-Aussetzen-Funktion ein, bevor ein Spinlock erlangt wird, wodurch Interrupts nur nach dem Freigeben des Spinlocks zugelassen werden. Nachfolgende Anforderungen hinsichtlich eines Spinlocks M werden zeitlich durch I(M)CM verteilt, wobei I(M) eine Menge von Tasks ist, die auf Spinlock M zugreifen, und CM die maximale Dauer, für die M gehalten wird, d. h. die Sperrenhaltezeit, ist.
  • 6 zeigt graphisch eine Empfindlichkeitsbewertung von Spinlocks für eine Basisnutzung 615 und eine maximale Nutzung 625, dargestellt in Relation zur Maschinendrehzahl, die an der x-Achse 610 gezeigt ist. Die Nutzung ist an der y-Achse 620 gezeigt. In diesem Fall werden globale Logikressourcen zur gemeinsamen Nutzung an dem Dualkernprozessor eingeführt. Es wurden ein Minimum von 2 Tasks pro Ressource und ein Maximum von 3 Tasks pro Ressource mit nicht mehr als 2 Ressourcen pro Task eingesetzt. Der Prozentsatz an Zeit, die durch jeden Task aufgewandt wurde, wurde an jedem seiner globalen kritischen Abschnitte erhöht, bis analytisch ermittelt wurde, dass das System gerade seine Deadline verpasst hat. Die Setzen/Warten-Ereignisstrukturen wurden ignoriert. Wie es an diesen Ergebnissen zu sehen ist, arbeitet das System relativ gut, wobei jedem Task erlaubt wird, bis zu 50% seiner Ausführungszeit an global gemeinsam genutzten Ressourcen zu verbringen.
  • Das Einbringen eines einschränkenden Satzes von Konstruktionsbeschränkungen kann zu begrenzten Reaktionszeiten bei Spinlocks führen. Der Spinlock-Mechanismus stellt jedoch keine nach Priorität geordnete Bedienung von Ressourcenanforderungen sicher. Um die Annahmen zu lockern und um eine prioritätsgetriebene Bedienung sicherzustellen, kann ein Multiprozessorprioritätsobergrenzenprotokoll (MPCP) eingesetzt werden. Das MPCP wird für eine Task-Synchronisation in einem Mehrkernprozessor eingesetzt, um eine nach Priorität geordnete Bedienung von Ressourcenanforderungen durch Lockerungsannahmen zu erreichen. Interessant ist ein globales Mutex MG, das ein Mutex ist, das von Tasks gemeinsam genutzt wird, die an verschiedenen Verarbeitungskernen eingesetzt werden. Die entsprechenden kritischen Abschnitte werden als globale kritische Abschnitte (GCS) bezeichnet. Umgekehrt wird ein lokales Mutex nur zwischen Tasks an dem gleichen Verarbeitungskern gemeinsam genutzt, und die entsprechenden kritischen Abschnitte sind lokale kritische Abschnitte. Wenn ein Task T MG erlangt, führt er den GCS entsprechend dem globalen Mutex MG mit einer Priorität aus, die wie folgt gesetzt wird: p(MG) = p(G) + p(T0) wobei
    p(MG) eine Prioritätsobergrenze ist,
    p(G) ein Basisprioritätsniveau ist, das größer als das eines beliebigen anderen normal ausgeführten Tasks in dem System ist, und
    p(T0) die Priorität eines Tasks T0 einer höchsten Priorität ist, der das globale Mutex MG sperren kann.
  • Jedes MPCP minimiert eine Fernblockierung und Prioritätsumkehrungen, wenn globale Ressourcen gemeinsam genutzt werden. Jedes MPCP umfasst die folgenden Eigenschaften, die umfassen, dass Tasks zugeordnete Prioritäten verwenden, wenn sie sich nicht in kritischen Abschnitten befinden, und ein Einzelprozessorprioritätsobergrenzenprotokoll für alle Anforderungen hinsichtlich lokaler Mutexes verwendet wird. Ein Task in einem globalen kritischen Abschnitt (GCS), der durch das globale Mutex MG geschützt wird, weist die Priorität seines GCS auf, d. h. (p(G) + p(T0)). Ein Task in einem GCS kann einem anderen Task T* in einem GCS zuvorkommen, wenn die Priorität des GCS für T0 größer als die Priorität des GCS für T* ist. Wenn ein Task T ein globales Mutex MG anfordert, kann das globale Mutex MG für T mittels einer atomaren Transaktion an einem gemeinsam genutzten Speicher gewährt werden, wenn MG nicht von einem anderen Task gehalten wird. Wenn eine Anforderung hinsichtlich eines globalen Mutex MG nicht gewährt werden kann, wird Task T zu einer priorisierten Warteschlange hinsichtlich MG hinzugefügt, bevor ihm zuvorgekommen wird. Die Priorität, die als der Schlüssel für das Einsetzen in die Warteschlange verwendet wird, ist die T zugeordnete normale Priorität. Wenn ein Task T anstrebt, ein globales Mutex MG freizugeben, wird dies dem Task Th mit höchster Priorität, der auf MG wartet, signalisiert, und er wird zur Ausführung an dem Host-Verarbeitungskern von Th mit seiner GCS-Priorität berechtigt. Wenn keine Tasks an dem globalen Mutex MG ausgesetzt sind, wird es freigegeben.
  • 7 zeigt schematisch eine Realisierung eines Multiprozessorprioritätsobergrenzenprotokolls, das einen ersten und einen zweiten Verarbeitungskern 710 bzw. 720 mit einer entsprechenden ersten und zweiten Prioritätswarteschlange 705 bzw. 715 umfasst, was zu einer gemeinsam genutzten Prioritätswarteschlange 725 führt, die durch eine gemeinsam genutzte Softwareressource 730 ausgeführt wird. Jedes globale Mutex hält eine Prioritätswarteschlange von Tasks aufrecht, die auf dessen Erlangung warten. Wenn ein Task das globale Mutex erlangt, ist er für die Ausführung an dessen entsprechendem Verarbeitungskern mit der Fernprioritätsobergrenze des globalen Mutex bereit. Die Priorität wird als Maximum aller normalen Task-Ausführungsprioritäten und als Maximum aller normalen Prioritäten von Tasks, die auf die gemeinsam genutzte Softwareressource zugreifen, festgelegt, was hierin beschrieben ist.
  • 8 zeigt graphisch ein Zeitdiagramm, das einer Ausführung des Multiprozessorprioritätsobergrenzenprotokolls zugehörig ist. In diesem System gibt es vier Tasks, die T1 810, T2 820, T3 830 und T4 840 umfassen. Die Tasks T1 810 und T2 820 sind dem gleichen Verarbeitungskern P1 zugeordnet. Task T3 830 ist einem zweiten Verarbeitungskern P2 zugeordnet. Task T4 840 ist einem dritten Verarbeitungskern P3 zugeordnet. Die Tasks T1 810 und T4 840 nutzen eine Logikressource unter Verwendung eines ersten globalen Mutex M1 gemeinsam. Die Tasks T2 820 und T3 830 nutzen unter Verwendung eines zweiten globalen Mutex M2 eine andere Logikressource gemeinsam. Jeder der Tasks T1 810, T2 820, T3 830 und T4 840 umfasst eine normale Ausführung 825 und eine kritische Ausführung 815, wobei die kritische Ausführung 825 Tasks entspricht, die eine hohe Priorität aufweisen. Zu Beginn befinden sich die Tasks T1 810, T2 820 und T4 840 in einer normalen Ausführung 825. Bei Zeitschritt 850 beginnt T4 840 mit einer kritischen Ausführung 815. Bei Zeitschritt 852 beginnt T3 830 mit einer kritischen Ausführung 815 und beginnt T2 820 mit einer normalen Ausführung 825, die bei Zeitschritt 854 endet. T2 820 fordert das globale Mutex M2 an, das er erlangt, wenn das zweite globale Mutex M2 bei Zeitschritt 856 durch T3 830 freigegeben wird, wodurch ermöglicht wird, dass T2 mit einer kritischen Ausführung 815 ausgeführt wird. Wenn T2 820 die Ausführung mit der Fernprioritätsobergrenze des zweiten globalen Mutex M2 abschließt, wird das erste globale Mutex M1 mit höherer Fernprioritätsobergrenze bei Zeitschritt 858 durch T4 840 freigegeben und wird T1 810 die Priorität gegeben. Dies bewirkt eine Bevorrechtigung bei T2 820 durch T1 810, auch wenn T2 820 das zweite globale Mutex M2 hält, da das erste globale Mutex M1 eine höhere Fernprioritätsobergrenze aufweist als das zweite globale Mutex M2. Bei Zeitschritt 860 schließt T1 810 die kritische Ausführung 815 ab, was T2 820 ermöglicht, mit der kritischen Ausführung 815 zu arbeiten, endend bei Zeitschritt 862. Das Multiprozessorprioritätsobergrenzenprotokoll ermöglicht somit, dass Tasks, die globale Mutexes halten, durch globale Mutexes einer höheren Priorität zuvorgekommen wird, was beim Reduzieren der Sperrenwarteverzögerungen und der Sperrenhaltezeiten von globalen Mutexes, auf die durch Tasks einer hohen Priorität zugegriffen wird, von Vorteil ist.
  • Ein Vorteil des Verwendens des Multiprozessorprioritätsobergrenzenprotokolls umfasst das Zulassen eines prioritätsgetriebenen Zugriffs auf gemeinsam genutzte Ressourcen, wobei jedes globale Mutex eine Prioritätswarteschlange mit Tasks aufweist, die daran ausgesetzt sind. Wenn die Ressource freigegeben wird, wird sie dem Task mit höchster Priorität, der daran wartet, gegeben. Diese Eigenschaft wird nicht durch Spinlocks bereitgestellt, was ermöglicht, dass die Hardwaretestgrundelemente den Task ermitteln, der die Ressource erhält. Ein anderer Vorteil des Verwendens des Multiprozessorprioritätsobergrenzenprotokolls umfasst eine beschränkte Bevorrechtigung von Tasks, die Sperren halten. Mit dem MPCP wird eine globale Prioritätsobergrenze p(G) eingesetzt, die ermöglicht, dass Tasks, die Mutexes halten, durch Mutexes mit einer höheren Fernprioritätsobergrenze zuvorgekommen wird, wobei p(M_G) die Fernprioritätsobergrenze darstellt. Dies stellt die Ansprechbarkeit von Tasks mit höchster Priorität, die kürzere Deadlines haben können, sicher.
  • Ein weiterer Vorteil des Verwendens des Multiprozessorprioritätsobergrenzenprotokolls umfasst, dass keine Zyklen in einem Modus eines aktiven Wartens verschwendet werden, was eine aussetzungsbasierte Realisierung eines MPCP umfasst, bei der das Aussetzen von Tasks zugelassen ist, wenn die angeforderte Sperre nicht zur Verfügung steht. Der Task wird einer Prioritätswarteschlange an dem Mutex hinzugefügt und er wird benachrichtigt, wenn die Ressource gewährt wird. Dies vermeidet, dass irgendwelche Zyklen bei einem aktiven Warten verschwendet werden. Die Task-Aussetzung selbst führt jedoch die Möglichkeit einer Ausführung und eines Anforderns von globalen Mutexes von Tasks einer niedrigeren Priorität ein. Dies kann zu Bevorrechtigungen hinsichtlich solcher Tasks zu einem späteren Ausführungszeitpunkt führen. Um solch eine Strafe zu vermeiden, kann eine zirkulationsbasierte Realisierung eines MPCP eingesetzt werden, bei der Tasks an der angeforderten Sperre bis zu einer Verfügbarkeit zirkulieren.
  • Der zuvor erwähnte Reaktionszeittest für Tasks mit Setzen/Warten-Ereignissen kann leicht erweitert werden, um eine Synchronisation mit einem MPCP handzuhaben. Blockierferme werden für eine Warteverzögerung eines globalen Mutex und eine Haltedauer eines globalen Mutex einer niedrigeren Priorität definiert. Die Warteverzögerungen eines globalen Mutex sind wie nachstehend beschrieben. Die Tasks erlangen globale Mutexes in einer Prioritätsreihenfolge mit dem MPCP. Das Mutex kann somit als Ressource gesehen werden, die mit einer festen Prioritätsreihenfolge geplant wird. Die Blockierzeit BMi, j eines Runnable Ri, j von Task Ti, der auf ein globales Mutex M zugreift, ist wie folgt definiert.
    Figure DE102013214756A1_0004
    wobei
  • Figure DE102013214756A1_0005
  • Der erste Term entspricht der maximalen Dauer, für die das Mutex M von einem beliebigen Task Tl einer niedrigeren Priorität gehalten werden kann, wenn Ti M anfordert. Der zweite Term stellt die maximale Dauer dar, für die Tasks Th einer höheren Priorität das Mutex M halten können, bevor Task Ti M erlangen kann. Hier ist W 'M / l die maximale Haltezeit eines globalen Mutex von Task Tl in Bezug auf das globale Mutex M. Unter dem MPCP kann immer noch Tasks, die das globale Mutex M halten, durch Tasks, die Mutexes mit einer höheren Fernprioritätsobergrenze halten, zuvorgekommen werden. Die maximale Haltezeit eines globalen Mutex von Task Tl ist somit durch die Konvergenz wie folgt gegeben.
  • Figure DE102013214756A1_0006
  • In Gl. 5 stellt der erste Term CM die ungünstigste Ausführungszeit dar, wenn das globale Mutex M gehalten wird. Der zweite Term stellt die maximale mögliche Bevorrechtigung, wenn Ti das globale Mutex M hält, durch Tasks Tk an dem gleichen Verarbeitungskern wie Ti, wenn sie Mutexes M' mit höheren Fernprioritätsobergrenzen wie das globale Mutex M erlangen, dar.
  • Die gesamte Warteverzögerung Bi,j eines globalen Mutex für Runnable Ri,j wird durch Summieren der Blockierzeiten BMi,j für jeden Zugriff von Ti,j über alle Mutexes M ermittelt. Bi wird als die Summe der Warteverzögerungen über alle Runnables Ri,j die zu Task Ti gehören, dargestellt.
  • Eine Haltedauer eines globalen Mutex einer niedrigeren Priorität wird wie folgt ermittelt. Wann immer ein Task Tl mit einer niedrigeren Priorität als Ti ein globales Mutex M erlangt, wird seine Priorität hinsichtlich der Fernprioritätsobergrenze von M begünstigt. Diese Fernprioritätsobergrenze wird als über allen normalen Ausführungsprioritäten liegend definiert und bewirkt somit eine Bevorrechtigung bei Ti, auch wenn Ti keine Sperren hält. Dieser Bevorrechtigung hinsichtlich der Haltedauer eines globalen Mutex einer niedrigeren Priorität kann durch den Blockierterm Hi,j für jedes Runnable Ri,j Rechnung getragen werden. Ri,j wird extern ausgelöst und erlangt ρi,j globale Mutexes während der Ausführung wie folgt.
  • Figure DE102013214756A1_0007
  • Wenn Ri,j (mit j > 1) durch den Abschluss von Ri,j-1 ausgelöst wird und während der Ausführung ρi,j globale Mutexes erlangt, dann
    Figure DE102013214756A1_0008
  • Die gesamte Haltedauer Hi eines globalen Mutex einer niedrigeren Priorität, die Task Ti erfährt, kann berechnet werden, indem Hi,j über alle Runnables Ri,j summiert wird, die zu Task Ti gehören.
  • Die Konvergenz einer ungünstigsten Reaktionszeit, die in Gl. 2 gegeben ist, kann wie folgt modifiziert werden.
  • Figure DE102013214756A1_0009
  • Die Analyse umfasst somit einen gegenseitigen Ausschluss unter Verwendung des Multiprozessorprioritätsobergrenzenprotokolls (MPCP). Zusätzlich zu dem Bereitstellen einer prioritätsgetriebenen Bedienung und von Eigenschaften eines begrenzten Timings beseitigt die Verwendung von MPCP die Beschränkungen und Annahmen, die für Spinlocks erforderlich sind.
  • Die Offenbarung beschrieb bestimmte bevorzugte Ausführungsformen und Abwandlungen dieser. Weitere Abwandlungen und Änderungen können für Dritte beim Lesen und Verstehen der Beschreibung ersichtlich werden. Daher soll die Offenbarung nicht auf die bestimmte Ausführungsform/die bestimmten Ausführungsformen beschränkt sein, die als die Ausführungsform(en) offenbart ist/sind, die zum Ausführen dieser Offenbarung als am geeignetsten betrachtet wird/werden, sondern soll die Offenbarung alle Ausführungsformen umfassen, die innerhalb des Schutzumfangs der beigefügten Ansprüche liegen.

Claims (10)

  1. Verfahren zum Verwalten einer Task-Ausführung in einem Mehrkernprozessor, das umfasst, dass: ein Runnable eines Tasks in einem ersten Verarbeitungskern ausgeführt wird, was umfasst, dass ein statischer Offset für ein anderes Runnable eines Tasks eingeführt wird, das in einem zweiten Verarbeitungskern ausgeführt wird, um eine statisch definierte Beschränkung eines gegenseitigen Ausschlusses bei den Runnables zu bewirken; und selektiv Spinlocks, Setzen/Warten-Ereignisse und Multiprozessorprioritätsobergrenzenprotokolle eingesetzt werden, um Beschränkungen eines gegenseitigen Ausschlusses zu bewirken, um mehrere Tasks zu synchronisieren, die in dem ersten und zweiten Verarbeitungskern ausgeführt werden.
  2. Verfahren nach Anspruch 1, wobei das Einsetzen von Setzen/Warten-Ereignissen die Beschränkungen eines gegenseitigen Ausschlusses statisch erzwingt.
  3. Verfahren nach Anspruch 1, wobei das Einsetzen von Spinlocks und der Multiprozessorprioritätsobergrenzenprotokolle die Beschränkungen eines gegenseitigen Ausschlusses dynamisch erzwingt.
  4. Verfahren nach Anspruch 1, wobei das Einsetzen von Multiprozessorprioritätsobergrenzenprotokollen umfasst, dass eine globale Prioritätsobergrenze eingesetzt wird, um Tasks mit ausgewählten Beschränkungen eines gegenseitigen Ausschlusses durch einen Task mit einer Beschränkung eines gegenseitigen Ausschlusses mit einer höheren Fernprioritätsobergrenze zuvorzukommen.
  5. Verfahren nach Anspruch 4, wobei das Einsetzen der globalen Prioritätsobergrenze, um Tasks mit ausgewählten Beschränkungen eines gegenseitigen Ausschlusses zuvorzukommen, umfasst, dass globale kritische Abschnitte, die einem globalen Mutex MG entsprechen, wenn ein Task T das globale Mutex MG erlangt, mit einer Priorität ausgeführt werden, die gemäß der folgenden Beziehung gesetzt wird: p(MG) = p(G) + p(T0) wobei p(MG) eine Prioritätsobergrenze für das globale Mutex MG ist, p(G) ein Basisprioritätsniveau ist, das größer als ein anderer ausgeführter Task in dem System ist, und p(T0) die Priorität eines Tasks T0 einer höchsten Priorität ist, der das globale Mutex MG sperren kann.
  6. Verfahren nach Anspruch 5, wobei das globale Mutex MG ein Mutex ist, das von Tasks gemeinsam genutzt wird, die in dem ersten und dem zweiten Verarbeitungskern des Mehrkernprozessors eingesetzt werden.
  7. Verfahren nach Anspruch 1, wobei das Einsetzen der Multiprozessorprioritätsobergrenzenprotokolle umfasst, dass einem Task in einem globalen kritischen Abschnitt, der durch ein globales Mutex mit einer Priorität des globalen kritischen Abschnitts geschützt ist, eine Priorität zugeordnet wird.
  8. Verfahren nach Anspruch 7, wobei das Einsetzen der Multiprozessorprioritätsobergrenzenprotokolle ferner umfasst, dass einem ersten Task in dem globalen kritischen Abschnitt ermöglicht wird, einem zweiten Task in dem globalen kritischen Abschnitt zuvorzukommen, wenn eine Priorität des ersten Tasks größer als eine Priorität des zweiten Tasks ist.
  9. Verfahren nach Anspruch 8, wobei das Einsetzen der Multiprozessorprioritätsobergrenzenprotokolle ferner umfasst, dass ein globales Mutex einem Task unter Verwendung einer atomaren Transaktion in einem gemeinsam genutzten Speicher des Mehrkernprozessors gewährt wird, wenn das globale Mutex nicht von einem anderen Task gehalten wird.
  10. Verfahren nach Anspruch 9, wobei das Einsetzen der Multiprozessorprioritätsobergrenzenprotokolle ferner umfasst, dass ein Task zu einer priorisierten Warteschlange an dem globalen Mutex hinzugefügt wird, bevor dem Task zuvorgekommen wird, wenn eine Anforderung hinsichtlich eines globalen Mutex nicht gewährt werden kann, wobei eine Priorität für den der priorisierten Warteschlange hinzugefügten Task vorab zugeordnet wird.
DE102013214756.2A 2012-08-02 2013-07-29 Verfahren zum verwalten einer task-ausführung in einem mehrkernprozessor Active DE102013214756B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/564,804 US9063796B2 (en) 2012-08-02 2012-08-02 Method and apparatus for improving processing performance of a multi-core processor
US13/564,804 2012-08-02

Publications (2)

Publication Number Publication Date
DE102013214756A1 true DE102013214756A1 (de) 2014-02-06
DE102013214756B4 DE102013214756B4 (de) 2022-08-25

Family

ID=49944175

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013214756.2A Active DE102013214756B4 (de) 2012-08-02 2013-07-29 Verfahren zum verwalten einer task-ausführung in einem mehrkernprozessor

Country Status (3)

Country Link
US (1) US9063796B2 (de)
CN (1) CN103577376B (de)
DE (1) DE102013214756B4 (de)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013038472A1 (ja) * 2011-09-12 2013-03-21 トヨタ自動車株式会社 内燃機関の制御装置
US8938739B2 (en) * 2012-06-02 2015-01-20 Texas Instruments Incorporated Resource sharing aware task partitioning for multiprocessors
US9632844B2 (en) * 2013-12-12 2017-04-25 International Business Machines Corporation Non-preemption of a group of interchangeable tasks in a computing device
US9424102B2 (en) * 2014-05-14 2016-08-23 International Business Machines Corporation Task grouping by context
CN103995743B (zh) * 2014-05-21 2015-04-29 中国人民解放军国防科学技术大学 基于资源预约的两级混合任务调度方法
US9632569B2 (en) 2014-08-05 2017-04-25 Qualcomm Incorporated Directed event signaling for multiprocessor systems
CN105071973B (zh) * 2015-08-28 2018-07-17 迈普通信技术股份有限公司 一种报文接收方法及网络设备
US10628221B1 (en) * 2015-09-30 2020-04-21 EMC IP Holding Company LLC Method and system for deadline inheritance for resource synchronization
US10083068B2 (en) 2016-03-29 2018-09-25 Microsoft Technology Licensing, Llc Fast transfer of workload between multiple processors
US10248420B2 (en) 2017-04-05 2019-04-02 Cavium, Llc Managing lock and unlock operations using active spinning
US10331500B2 (en) 2017-04-05 2019-06-25 Cavium, Llc Managing fairness for lock and unlock operations using operation prioritization
CN109522101B (zh) * 2017-09-20 2023-11-14 三星电子株式会社 用于调度多个操作系统任务的方法、系统和/或装置
FR3077403B1 (fr) * 2018-01-29 2019-12-27 Continental Automotive France Procede de conception d’une architecture de taches applicative d’une unite de controle electronique avec un ou des cœurs virtuels
US10691487B2 (en) 2018-04-25 2020-06-23 International Business Machines Corporation Abstraction of spin-locks to support high performance computing
CN109656697B (zh) * 2018-12-07 2023-03-10 华侨大学 一种双模式资源受限周期任务能耗优化方法
CN113094260B (zh) * 2021-03-18 2024-04-05 西北工业大学 一种分布式系统时序关系建模与仿真分析方法
CN113806042B (zh) * 2021-08-25 2023-06-16 北京市遥感信息研究所 一种多核实时嵌入式系统的任务调度方法
CN116346953B (zh) * 2023-03-02 2024-02-13 杭州又拍云科技有限公司 一种用于实时数据传输的加速方法及装置

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5442758A (en) * 1993-07-19 1995-08-15 Sequent Computer Systems, Inc. Apparatus and method for achieving reduced overhead mutual exclusion and maintaining coherency in a multiprocessor system utilizing execution history and thread monitoring
US6823511B1 (en) * 2000-01-10 2004-11-23 International Business Machines Corporation Reader-writer lock for multiprocessor systems
US6782440B2 (en) * 2000-07-26 2004-08-24 T.N.S. Holdings, Inc. Resource locking and thread synchronization in a multiprocessor environment
US7007270B2 (en) 2001-03-05 2006-02-28 Cadence Design Systems, Inc. Statistically based estimate of embedded software execution time
US7058948B2 (en) * 2001-08-10 2006-06-06 Hewlett-Packard Development Company, L.P. Synchronization objects for multi-computer systems
US20030115476A1 (en) * 2001-10-31 2003-06-19 Mckee Bret Hardware-enforced control of access to memory within a computer using hardware-enforced semaphores and other similar, hardware-enforced serialization and sequencing mechanisms
US7096470B2 (en) * 2002-09-19 2006-08-22 International Business Machines Corporation Method and apparatus for implementing thread replacement for optimal performance in a two-tiered multithreading structure
US20050050257A1 (en) * 2003-08-25 2005-03-03 Alexey Shakula Nested locks to avoid mutex parking
US7383368B2 (en) * 2003-09-25 2008-06-03 Dell Products L.P. Method and system for autonomically adaptive mutexes by considering acquisition cost value
US20050081204A1 (en) * 2003-09-25 2005-04-14 International Business Machines Corporation Method and system for dynamically bounded spinning threads on a contested mutex
US7844973B1 (en) * 2004-12-09 2010-11-30 Oracle America, Inc. Methods and apparatus providing non-blocking access to a resource
US8387052B2 (en) * 2005-03-14 2013-02-26 Qnx Software Systems Limited Adaptive partitioning for operating system
US7861042B2 (en) * 2006-10-23 2010-12-28 Hewlett-Packard Development Company, L.P. Processor acquisition of ownership of access coordinator for shared resource
US8799591B2 (en) * 2007-01-30 2014-08-05 Hewlett-Packard Development Company, L.P. Read-write spinlock
KR101375836B1 (ko) 2007-06-26 2014-04-01 삼성전자주식회사 멀티코어 프로세서 상에서 연관된 작업들을 수행하는 방법및 장치
US7453910B1 (en) 2007-12-18 2008-11-18 International Business Machines Corporation Synchronization of independent clocks
US7716006B2 (en) 2008-04-25 2010-05-11 Oracle America, Inc. Workload scheduling in multi-core processors
US20090307707A1 (en) * 2008-06-09 2009-12-10 International Business Machines Corporation System and method for dynamically adaptive mutual exclusion in multi-threaded computing environment
CN101359238B (zh) 2008-09-02 2012-01-18 中兴通讯股份有限公司 一种多核系统的时间同步方法及系统
FR2937439B1 (fr) * 2008-10-17 2012-04-20 Commissariat Energie Atomique Procede d'execution deterministe et de synchronisation d'un systeme de traitement de l'information comportant plusieurs coeurs de traitement executant des taches systemes.
NL2004392A (en) 2009-04-15 2010-10-18 Asml Netherlands Bv Lithographic apparatus, control system, multi-core processor, and a method to start tasks on a multi-core processor.

Also Published As

Publication number Publication date
US20140040904A1 (en) 2014-02-06
US9063796B2 (en) 2015-06-23
CN103577376B (zh) 2016-11-02
CN103577376A (zh) 2014-02-12
DE102013214756B4 (de) 2022-08-25

Similar Documents

Publication Publication Date Title
DE102013214756B4 (de) Verfahren zum verwalten einer task-ausführung in einem mehrkernprozessor
Maldonado et al. Scheduling support for transactional memory contention management
DE112012002465T5 (de) Grafikprozessor mit nicht blockierender gleichzeitiger Architektur
EP3543852B1 (de) Systeme und verfahren zur variablen ratenbegrenzung eines gemeinsamen ressourcenzugriffs
US8707315B2 (en) Method and system for implementing realtime spinlocks
DE112015004750T5 (de) Eine beinahe faire aktive sperre
DE102016203808A1 (de) Verringern der Bevorrechtigung virtueller Maschinen in einer virtualisierten Umgebung
DE112014002754T5 (de) Effiziente Aufgabenplanung unter Verwendung eines Sperrmechanismus
CN111400015A (zh) 一种任务调度方法及装置
Wang et al. Adaptive scheduling of multiprogrammed dynamic-multithreading applications
DE102021108963A1 (de) Sperrenfreier arbeitseinsatz thread scheduler
Jiang et al. Suspension-based locking protocols for parallel real-time tasks
Arora et al. Schedulability analysis for 3-phase tasks with partitioned fixed-priority scheduling
DE102020214951A1 (de) Verfahren zum dynamischen Zuweisen von Speicherbandbreite
US8893134B2 (en) Locating bottleneck threads in multi-thread applications
Elliott et al. Gpusync: Architecture-aware management of gpus for predictable multi-gpu real-time systems
Osborne et al. Simultaneous multithreading applied to real time
Negrean et al. Timing analysis of multi-mode applications on AUTOSAR conform multi-core systems
CN111989651A (zh) 在多核系统中管理内核服务的方法和装置
DE112019000189T5 (de) Programmausführungs-steuerverfahren und fahrzeugsteuervorrichtung
Kim et al. Mixed-criticality on multicore (MC2): A status report
Bradatsch et al. Comparison of service call implementations in an AUTOSAR multi-core os
Wani Operating System
Burns et al. Multiprocessor systems session summary
Avron et al. Hardware Scheduler Performance on the Plural Many-Core Architecture

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final