DE102021111809A1 - Verfahren und system zum übertragen von daten - Google Patents

Verfahren und system zum übertragen von daten Download PDF

Info

Publication number
DE102021111809A1
DE102021111809A1 DE102021111809.3A DE102021111809A DE102021111809A1 DE 102021111809 A1 DE102021111809 A1 DE 102021111809A1 DE 102021111809 A DE102021111809 A DE 102021111809A DE 102021111809 A1 DE102021111809 A1 DE 102021111809A1
Authority
DE
Germany
Prior art keywords
data
hardware component
processing units
read
common hardware
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.)
Pending
Application number
DE102021111809.3A
Other languages
English (en)
Inventor
Nenad Obradovic
Mario Dogan
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.)
Bayerische Motoren Werke AG
Original Assignee
Bayerische Motoren Werke AG
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 Bayerische Motoren Werke AG filed Critical Bayerische Motoren Werke AG
Priority to DE102021111809.3A priority Critical patent/DE102021111809A1/de
Publication of DE102021111809A1 publication Critical patent/DE102021111809A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox

Abstract

Beispiele betreffen ein Verfahren (10) zum Lesen von Daten von einer gemeinsamen Hardware-Komponente (33) durch eine oder mehrere einer Mehrzahl von Verarbeitungseinheiten (31a, 31b, 31c). Das Verfahren (10) umfasst ein Erfassen (11) eines zu lesenden Datums auf der gemeinsamen Hardware-Komponente (33) und Speichern einer Referenz des zu lesenden Datums in einer Verteilungseinheit (32), die der Mehrzahl von Verarbeitungseinheiten (31a, 31b, 31c) übergeordnet ist und ein Übertragen (12) der Referenz an zumindest eine der Mehrzahl von Verarbeitungseinheiten (31a, 31b, 31c). Ferner erfolgt ein Empfangen (13) einer Lesebestätigung von der zumindest einen Verarbeitungseinheit (31a, 31b, 31c), wobei die Lesebestätigung über das erfolgte Auslesen des Datums von der gemeinsamen Hardware-Komponente (33) durch die zumindest eine Verarbeitungseinheit (31a, 31b, 31c) informiert und ein Freigeben (14) des zu lesenden Datums auf der gemeinsamen Hardware-Komponente (33) durch die Verteilungseinheit (32), nach dem Empfangen der Lesebestätigung.

Description

  • Technisches Gebiet
  • Ausführungsbeispiele betreffen ein Verfahren zum Lesen von Daten von einer gemeinsamen Hardware-Komponente durch eine oder mehrere einer Mehrzahl von Verarbeitungseinheiten. Als Ergänzung wird zum Beispiel für eine bidirektionale Datenübertragung auch ein entsprechendes Verfahren zum Schreiben von Daten von einer Verarbeitungseinheit einer Mehrzahl von Verarbeitungseinheiten zumindest auf eine gemeinsame Hardware-Komponente vorgeschlagen. Ferner wird ein entsprechendes System zum Übertragen von Daten zwischen einer gemeinsamen Hardware-Komponente und einer Mehrzahl von Verarbeitungseinheiten vorgeschlagen.
  • Hintergrund
  • In modernen Kraftfahrzeugen werden zur Realisierung komplexer Funktionen, die zum Teil auch als sicherheitsrelevant eingestuft werden (z.B. Funktionen autonomen Fahrens) immer mehr und komplexere Rechensysteme, z.B. Mikrocontroller, verwendet.
  • Mikrocontroller, die in ein Fahrzeug eingebaut werden, werden zunehmend komplexer und folgen dem Trend, mehr CPU-Kerne in ein SoC (System-on-Chip; z.B. Mikrocontroller) zu integrieren. Solches Multicore-CPU-Design ermöglicht es dem System, mehr Funktionalität in ein einziges SoC zu integrieren. Für diese Systemtypen werden gleichzeitige SW (Software)-Architekturentwurfsmuster verwendet, aber auch gleichzeitiges Design impliziert bestimmte Einschränkungen, die behandelt werden müssen. In gemischten Kritikalitäts-Systemen (z.B. ein System, in dem gleichzeitig sicherheitskritische und weniger kritische oder unkritische Funktionen integriert sind), z.B. wenn einige oder alle Softwarefunktionen beispielsweise sicherheitskritische ASIL-D-Qualitätsstufen erfordern. Damit die Funktionen konform ausgeführt werden können, werden einige Anforderungen gestellt, die erfüllt werden müssen.
  • Zu diesen Anforderungen gehören zum Beispiel: • Störungsfreiheit (engl. Freedom-from-Interference; FFI) mit den Unteraspekten: o FFI in der Laufzeit: Betrieb und Verfügbarkeit eines SW- oder HW (Hardware)-Subsystems sollten von einer (richtigen oder fehlerhaften) Operation eines anderen SW- oder HW-Subsystems nicht betroffen sein; o FFI in der Buildzeit: Softwareänderungen in einem Subsystem sollten in keiner Weise Softwareänderungen in einem anderen Subsystem erfordern; o Räumlicher FFI: Ein SW- oder HW-Subsystem soll keine Daten oder Codes anderer HW/SW-Entitäten beeinflussen. Dies kann mit HW-Unterstützung erreicht werden, z.B. MPU/MMU, CPU-Schutzringe, CPU-Architektur-spezifischer Ansatz wie TrustZone oder ähnlichen Konzepten; o Temporales FFI: Eine SW- oder HW-Entität kann die Laufzeit- oder Ressourcenverfügbarkeit einer anderen Entität nicht deterministisch beeinflussen. Dieses Problem zu beheben, kann durch HW-Unterstützung, z. B. Priorisierung des Zugriffs auf internen CPU-Bus, erfolgen.
  • Weiterhin kann zu den Anforderungen • Quality of Service (QoS) gehören: Der Zugang zu den gemeinsam genutzten Ressourcen (z. B. RAM, ROM, spezielle Recheneinheiten, etc.) in sicherheitskritischen Systemen muss gewährleistet sein („babbling idiot“ Problem, Prioritätsinversionsgefahr sollte gemildert werden). Weiterhin kann zu den Anforderungen • Laufzeitleistung (engl.: runtime performance) gehören: Software, die auf einem Steuergerät ausgeführt wird, hat in der Regel harte Echtzeit-Laufzeitanforderungen mit begrenztem Speicher und begrenzter Rechenleistung im Vergleich zu Smartphone- oder Desktop-Computern.
  • Die Erfüllung dieser Anforderungen kann aufgrund von Hardwareressourcen, die von CPU-Kernen gemeinsam genutzt werden (z. B. gemeinsam genutzter RAM, Ethernet-Controller oder ein ROM-Speichercontroller, verschiedene Busse), eine Herausforderung darstellen.
  • Zusammenfassung
  • Es ist eine Aufgabe der vorliegenden Offenbarung, verbesserte Konzepte für die gemeinsame Nutzung einer Hardware-Komponente durch mehrere CPU-Kerne bereitzustellen, insbesondere im Bereich der Automobiltechnik.
  • Diese Aufgabe wird gelöst gemäß den Gegenständen der unabhängigen Patentansprüche. Weitere vorteilhafte Ausführungsformen werden in den abhängigen Patentansprüchen, der folgenden Beschreibung sowie in Verbindung mit den Figuren beschrieben.
  • Entsprechend wird Verfahren zum Lesen von Daten von einer gemeinsamen Hardware-Komponente durch eine oder mehrere einer Mehrzahl von Verarbeitungseinheiten vorgeschlagen. Die gemeinsame Hardware-Komponente kann von mehreren, zum Beispiel von zwei, drei, oder einer Vielzahl von Verarbeitungseinheiten (z.B. CPUs) geteilt werden. Mit anderen Worten ist die gemeinsame Hardware-Komponente eine von mehreren anderen Einheiten gemeinsam genutzte Komponente. Das Verfahren umfasst die Schritte:
    • - Erfassen zumindest eines zu lesenden Datums (oder einer Mehrzahl an Daten) auf der gemeinsamen Hardware-Komponente und Speichern einer Referenz (z.B. ein Zeiger, ein Pointer oder eine Speicheradresse) des zu lesenden Datums in einer Verteilungseinheit, die der Mehrzahl von Verarbeitungseinheiten übergeordnet ist. Die Verteilungseinrichtung kann z.B. auch als arbitration unit bezeichnet werden;
    • - Übertragen der Referenz an zumindest eine Verarbeitungseinheit der Mehrzahl von Verarbeitungseinheiten;
    • - Empfangen einer Lesebestätigung von der zumindest einen Verarbeitungseinheit, wobei die Lesebestätigung über das erfolgte Auslesen des Datums von der gemeinsamen Hardware-Komponente durch die zumindest eine Verarbeitungseinheit informiert; und
    • - Freigeben des zu lesenden Datums auf der gemeinsamen Hardware-Komponente durch die Verteilungseinheit, nach dem Empfangen der Lesebestätigung.
  • Durch das vorgeschlagene Verfahren kann ein Zugriff auf eine gemeinsame Hardware-Komponente für ein Auslesen von Daten von dieser Hardware-Komponente geregelt werden. Dabei ist beispielsweise vorteilhaft, dass die Zugriffszuweisung auf ein Kopieren der Daten selbst verzichten kann, da zunächst nur die Referenzen der Daten und damit verhältnismäßig kleine Datenmengen übertragen werden. Dadurch kann der Prozess zum Freigeben des Zugriffs auf die gemeinsame Hardware-Komponente sehr effizient erfolgen. Das Verwenden der Lesebestätigung kann es erlauben, dass die Daten auf der gemeinsamen Hardware-Komponente nur so lange bereitgehalten werden müssen, bis sie auch tatsächlich ausgelesen sind.
  • Gemäß einem Aspekt ist vorgesehen, dass die Referenz an zumindest zwei Verarbeitungseinheiten übertragen wird (z.B. an eine Mehrzahl von Verarbeitungseinheiten), wobei das Freigeben des zu lesenden Datums erst nach dem Empfangen der Lesebetätigungen beider Verarbeitungseinheiten erfolgt. Hier kann die Verteilungseinrichtung vorteilhafterweise das Datum auf der gemeinsamen Hardware-Komponente erst dann freigeben (z.B. zum Löschen von der gemeinsamen Hardware-Komponente) wenn beide Verarbeitungseinheiten das Datum ausgelesen haben. Beispielsweise kann die Referenz auch an eine Vielzahl an Verarbeitungseinheiten übertragen werden und das Freigeben des zu lesenden Datums erfolgt nach dem Empfang der jeweiligen Lesebetätigung aller Verarbeitungseinheiten, an welche die Referenz übertragen wurde. So steht das Datum bereit, bis alle Verarbeitungseinheiten es ausgelesen haben.
  • Gemäß einem Aspekt ist vorgesehen, dass das Freigeben umfasst, eine Information von der Verteilungseinheit an die gemeinsame Hardware-Komponente zu senden, dass das zu lesende Datum erfolgreich ausgelesen wurde und nicht mehr benötigt wird. Beispielsweise kann die gemeinsame Hardware-Komponente das Datum dann löschen, um Speicherplatz für neue zu übertragende Daten freizugeben.
  • Ein weiterer Aspekt der vorliegenden Offenbarung betrifft ein Verfahren zum Schreiben von Daten von einer Verarbeitungseinheit einer Mehrzahl von Verarbeitungseinheiten zumindest auf eine gemeinsame Hardware-Komponente. Das Verfahren kann als Gegenstück zum Leseverfahren gesehen werden. Durch die Kombination beider Verfahren kann die Zuweisung einer Zugriffsberechtigung sowohl für Lesen als auch Schreiben von Daten in effizienter Weise realisiert werden. Das Verfahren zum Schreiben der Daten umfasst die Schritte:
    • - Erfassen eines zu schreibenden Datums auf der Verarbeitungseinheit und Speichern einer Referenz des zu schreibenden Datums in einer Verteilungseinheit, die der Mehrzahl von Verarbeitungseinheiten übergeordnet ist;
    • - Übertragen der Referenz an die gemeinsame Hardware-Komponente;
    • - Empfangen einer Schreibbestätigung von der gemeinsamen Hardware-Komponente, wobei die Schreibbestätigung über das erfolgte Schreiben des Datums auf die gemeinsame Hardware-Komponente informiert; und
    • - Freigeben des zu schreibenden Datums auf der Verarbeitungseinheit durch die Verteilungseinheit, nach dem Empfangen der Schreibbestätigung.
  • Durch das vorgeschlagene Schreibverfahren kann ein Schreibzugriff auf eine gemeinsame Hardware-Komponente für das Übertragen oder Schreiben von Daten auf diese Hardware-Komponente geregelt werden. Dabei ist vorteilhaft, dass bei der Zugriffszuweisung auf ein Kopieren der Daten selbst verzichten kann, da zunächst nur die Referenzen der Daten übertragen werden. Dadurch kann der Prozess zum Freigeben des Zugriffs auf die gemeinsame Hardware-Komponente sehr effizient erfolgen. Beispielsweise kann die gemeinsame Hardware-Komponente nach Empfang der Referenz das tatsächliche Datum auslesen und die Schreibbestätigung senden, nachdem das Datum vollständig auf der gemeinsamen Hardware-Komponente gespeichert wurde. Das Verwenden der Schreibbestätigung kann es erlauben, dass die Daten auf der Verarbeitungseinheit nur so lange bereitgehalten werden müssen, bis sie auch tatsächlich auf die gemeinsame Hardware-Komponente geschrieben sind. Somit kann mit geringem Aufwand eine zeitnahe Freigabe des Speicherplatzes der Verarbeitungseinheit gewährleistet werden.
  • Gemäß einem Aspekt ist vorgesehen, dass das zu schreibende Datum ferner auf einen Zwischenspeicher der Verteilungseinheit gespeichert wird (z.B. mittels DMA; direct memory access) und an eine weitere der Mehrzahl von Verarbeitungseinheiten übertragen wird. Zum Beispiel kann ein Pointer, der auf den internen Speicher (z.B. Zwischenspeicher) der Verteilungseinheit verweist, an eine oder mehrere weitere Verarbeitungseinheiten übertragen werden. Dadurch kann das Datum nicht nur auf die gemeinsame Hardware-Komponente geschrieben werden, sondern auch auf weitere Verarbeitungseinheiten. Die Zwischenspeicherung des gesamten Datum (und nicht nur der Referenz) kann z.B. vorteilhaft sein, wenn eine der empfangenden Verarbeitungseinheiten langsam reagiert. Durch das Zwischenspeichern muss das zu schreibende Datum dennoch nicht länger im Speicher der sendenden Verarbeitungseinheit verbleiben, als das Schreiben auf die gemeinsame Hardware-Komponente dauert.
  • Gemäß einem Aspekt ist vorgesehen, dass die Referenz in einem First-in-First-out-Speicher der Verteilungseinheit gespeichert wird, wobei im Fall, dass der First-in-First-out-Speicher voll ist, die älteste Referenz gelöscht wird, wenn eine neue Referenz gespeichert werden soll. Dadurch können nicht bearbeitete Referenzen (z.B. Pointer) aus dem Speicher (z.B. Wartespeicher der Verteilungseinrichtung) herausgeschoben oder überschrieben werden. Im Fall, dass eine Verarbeitungseinheit nicht mehr reagiert und das Datum nicht ausliest, kann das Verfahren trotzdem fortgeführt werden, da die Referenz für die nicht funktionsfähige Verarbeitungseinrichtung ignoriert werden kann (z.B. nach einer gewissen Zeit automatisch nicht mehr verfügbar ist).
  • Gemäß einem Aspekt ist vorgesehen, dass die Referenz ein Pointer ist und die Lesebestätigung oder Schreibbestätigung den Pointer umfasst. Zum Beispiel kann ein Speichern des von der Verarbeitungseinheit (z.B. processing unit) zurückgeschickten Pointers in der einem Freigabespeicher (z.B. free queue) der Verteilungseinrichtung erfolgen. Wenn der Pointer im Freigabespeicher vorliegt ist bekannt, dass das zugehörige Datum ausgelesen oder geschrieben wurde.
  • Das Verwenden des Pointers für die Lese- oder Schreibbestätigung kann in effizienter Weise die Information bereitstellen, welches Datum erfolgreich gelesen oder geschrieben wurde, damit dieses Datum nachfolgend freigegeben werden kann.
  • Gemäß einem Aspekt ist vorgesehen, dass das zu lesende oder das zu schreibende Datum ein Datenframe, ein Datenpaket oder ein Datensegment ist. Vorteilhafterweise kann das vorgeschlagene Verfahren für eine Mehrzahl an Kommunikationsstandards verwendet werden (z.B. CAN-Bus; LIN-Bus; oder Ethernet-Kommunikation). Beispielsweise können unter Verwendung des Verfahrens auch verschieden große Daten übertragen werden.
  • Gemäß einem Aspekt ist vorgesehen, dass die gemeinsame Hardware-Komponente ein gemeinsam genutztes Dateninterface oder ein gemeinsam genutzter Speicher ist. Zum Beispiel kann es sich um ein Ethernet-Interface oder einen physischen Kontakt (z.B. Pin eines Mikrocontrollers) handeln. Vorteilhafterweise kann durch das vorgeschlagene Verfahren die Anzahl an physischen Datenschnittstellen reduziert werden, da diese von mehreren Verarbeitungseinheiten gleichzeitig genutzt werden können.
  • Ein weiterer Aspekt betrifft ein System zum Übertragen von Daten zwischen einer gemeinsamen Hardware-Komponente und einer Mehrzahl von Verarbeitungseinheiten. Das vorgeschlagene System umfasst: - eine Mehrzahl (zumindest zwei) von Verarbeitungseinheiten (z.B. CPU; Software; und/oder Virtual Machine), - eine Verteilungseinheit, die der Mehrzahl von Verteilungseinheiten übergeordnet ist; und - ein gemeinsam von der Mehrzahl von Verarbeitungseinheiten genutztes Dateninterface des Systems als gemeinsame Hardware-Komponente. Dabei ist das System ausgebildet, ein Verfahren auszuführen, wie es zuvor oder nachfolgend beschrieben ist.
  • Die Verteilungseinheit (z.B. arbitration unit) kann den Zugriff der mehreren Verarbeitungseinheiten auf die gemeinsame Hardware-Komponente (z.B. Dateninterface oder Speicher) steuern. Dabei kann die Verteilungseinrichtung z.B. exklusiv im System den Zugriff auf die gemeinsame Hardware-Komponente vergeben, während die Verarbeitungseinheiten nur nach einer Freigabe durch die Verteilungseinrichtung auf die gemeinsame Hardware-Komponente zugreifen können. Es kann eine direkte Datenverbindung und indirekte Datenverbindung (z.B. über die Verteilungseinrichtung) zwischen der gemeinsamen Hardware-Komponente und den Verarbeitungseinheiten ausgebildet sein.
  • Gemäß einem Aspekt ist vorgesehen, dass die Verteilungseinheit ferner einen Zwischenspeicher aufweist (z.B. Wartespeicher), der ein Speichern einer ersten Zahl von Referenzen ermöglicht. Die Mehrzahl der Verarbeitungseinheiten weist je einen Kommunikationsspeicher auf, wobei die Kommunikationsspeicher des Systems in Summe ein Speichern einer zweiten Zahl von Referenzen ermöglichen. Es ist vorgesehen, dass die die zweite Zahl nicht größer ist als die erste Zahl. Die zweite Zahl ist insbesondere kleiner als die erste Zahl. Mit anderen Worten können in Summe auf den verfügbaren Kommunikationsspeichern der Verarbeitungseinheiten nicht mehr Referenzen gespeichert werden, als im Speicher der Verteilungseinheit bzw. nicht mehr Referenzen gespeichert werden als Daten in der gemeinsamen Hardware-Komponente vorliegen. Dadurch kann eine Funktion des Systems auch dann gewährleistet sein, wenn eine oder mehrere der Verarbeitungseinheiten nicht reagieren. Weitere funktionsfähige Verarbeitungseinheiten (z.B. mit kritischen Funktionen) können dennoch Zugriff auf die gemeinsame Hardware-Komponente bekommen, da immer ein freier Speicherplatz im Wartespeicher für die Verarbeitungseinheiten mit kritischen Funktionen bereitstehen kann.
  • Gemäß einem Aspekt ist vorgesehen, dass das System in einem Mikrocontroller ausgebildet ist, wobei der Mikrocontroller einen Pin für das gemeinsam genutzte Dateninterface aufweist. Da bei Mikrocontrollern die Anzahl der Pins kostenrelevant ist, kann durch die gemeinsame Nutzung eines Pins (z.B. für einen Anschluss an eine Ethernet-Verbindung) eine Kostenersparnis ermöglicht werden.
  • Figurenliste
  • Ausführungsbeispiele werden nachfolgend bezugnehmend auf die beiliegenden Figuren näher erläutert. Es zeigen:
    • 1 ein Flussdiagramm eines Verfahrens zum Lesen von Daten;
    • 2 ein Flussdiagramm eines Verfahrens zum Schreiben von Daten;
    • 3 ein schematisches Beispiel eines Systems zum Übertragen von Daten;
    • 4 einen schematisches Ablauf eines Auslesens von Daten aus einer gemeinsamen Hardware-Komponente durch eine Mehrzahl von Verarbeitungseinrichtungen; und
    • 5 einen schematisches Ablauf eines Schreibens von Daten auf eine gemeinsame Hardware-Komponente von einer Mehrzahl von Verarbeitungseinrichtungen.
  • Beschreibung
  • Verschiedene Ausführungsbeispiele werden nun ausführlicher unter Bezugnahme auf die beiliegenden Zeichnungen beschrieben, in denen einige Ausführungsbeispiele dargestellt sind. In den Figuren können die Dickenabmessungen von Linien, Schichten und/oder Regionen um der Deutlichkeit Willen übertrieben dargestellt sein. Bei der nachfolgenden Beschreibung der beigefügten Figuren, die lediglich einige exemplarische Ausführungsbeispiele zeigen, können gleiche Bezugszeichen gleiche oder vergleichbare Komponenten bezeichnen.
  • Ein Element, das als mit einem anderen Element „verbunden“ oder „verkoppelt“ bezeichnet wird, mit dem anderen Element direkt verbunden oder verkoppelt sein kann oder dass dazwischenliegende Elemente vorhanden sein können. Solange nichts anderes definiert ist, haben sämtliche hierin verwendeten Begriffe (einschließlich von technischen und wissenschaftlichen Begriffen) die gleiche Bedeutung, die ihnen ein Durchschnittsfachmann auf dem Gebiet, zu dem die Ausführungsbeispiele gehören, beimisst.
  • 1 zeigt ein Flussdiagramm eines Verfahrens 10 zum Lesen von Daten. Das Verfahren 10 umfasst die Schritte: - Erfassen 11 eines zu lesenden Datums auf einer gemeinsamen Hardware-Komponente und Speichern einer Referenz des zu lesenden Datums in einer Verteilungseinheit, die der Mehrzahl von Verarbeitungseinheiten übergeordnet ist; - Übertragen 12 der Referenz an zumindest eine der Mehrzahl von Verarbeitungseinheiten; - Empfangen 13 einer Lesebestätigung von der zumindest einen Verarbeitungseinheit, wobei die Lesebestätigung über das erfolgte Auslesen des Datums von der gemeinsamen Hardware-Komponente durch die zumindest eine Verarbeitungseinheit informiert; und - Freigeben 14 des zu lesenden Datums auf der gemeinsamen Hardware-Komponente durch die Verteilungseinheit, nach dem Empfangen der Lesebestätigung.
  • Das Verfahren 10 ermöglicht einen koordinierten Zugriff zum Auslesen von Daten einer geteilt genutzten Hardware-Komponente. Dabei muss vorteilhafterweise beim Prozess der Zugriffsverteilung noch nicht das tatsächlich auszulesende Datum kopiert werden, sondern nur eine Referenz (z.B. Zeiger oder Pointer auf das auszulesende Datum) kopiert werden. Das Verfahren kann daher auch als Zero-Copy-Data-Forwarding bezeichnet werden. Dadurch kann eine hohe Performance ermöglicht werden. Beispielsweise kann vermieden werden, dass eine langsame Verarbeitungseinheit die gemeinsame Hardware-Komponente oft und lange blockiert. Somit können auch sicherheitsrelevante Funktionen besser mit einer geteilt genutzten Hardware-Komponente ausgeführt werden.
  • 2 zeigt ein Flussdiagramm eines Verfahrens 20 zum Schreiben von Daten. Das Verfahren 20 umfasst die Schritte: - Erfassen 21 eines zu schreibenden Datums auf der Verarbeitungseinheit und Speichern einer Referenz des zu schreibenden Datums in einer Verteilungseinheit, die der Mehrzahl von Verarbeitungseinheiten übergeordnet ist; - Übertragen 22 der Referenz an die gemeinsame Hardware-Komponente; - Empfangen 23 einer Schreibbestätigung von der gemeinsamen Hardware-Komponente, wobei die Schreibbestätigung über das erfolgte Schreiben des Datums auf die gemeinsame Hardware-Komponente informiert; und - Freigeben 24 des zu schreibenden Datums auf der Verarbeitungseinheit durch die Verteilungseinheit, nach dem Empfangen der Schreibbestätigung.
  • Auch beim vorgeschlagenen Schreibverfahren wird vorteilhafterweise für die Zugriffsverteilung nur eine Referenz auf das zu übertragende Datum kopiert statt des gesamten Datums. Hierdurch kann eine Verbesserung bei der Zuweisung des Schreibzugriffs auf eine gemeinsam genutzte Hardware-Komponente ermöglicht werden.
  • Weitere Einzelheiten und Aspekte sind in Verbindung mit den vor- oder nachstehend beschriebenen Ausführungsbeispielen erwähnt. Das in 2 gezeigte Ausführungsbeispiel kann ein oder mehrere optionale zusätzliche Merkmale aufweisen, die einem oder mehreren Aspekten entsprechen, die in Verbindung mit dem vorgeschlagenen Konzept oder mit einem oder mehreren vorstehend (z.B. 1) oder nachstehend (z.B. 3-5) beschriebenen Ausführungsbeispielen erwähnt sind.
  • 3 zeigt ein schematisches Beispiel eines Systems 30 zum Übertragen von Daten. Das vorgeschlagene System umfasst: - eine Mehrzahl von Verarbeitungseinheiten 31a, 31b, 31c, - eine Verteilungseinheit 32 (z.B. arbitration unit), die der Mehrzahl von Verteilungseinheiten übergeordnet 31a, 31b, 31c ist; und - ein gemeinsam von der Mehrzahl von Verarbeitungseinheiten 31a, 31b, 31c genutztes Dateninterface 33 (z.B. gemeinsame Hardware-Komponente33) des Systems 30. Dabei ist das System 30 durch das Bereitstellen der Verteilungseinrichtung 32 ausgebildet, ein im Vorangehenden oder Nachfolgenden beschriebenes Verfahren auszuführen.
  • Die Verteilungseinrichtung 32 kann den Zugriff (z.B. Lese- und/oder Schreibberechtigung) der einzelnen Verarbeitungseinheiten 31a, 31b, 31c auf die gemeinsame Hardware-Komponente 33 koordinieren. Dabei wird in effizienter Weise zunächst nicht das Datum oder die Daten selbst übertragen, sondern zunächst über die Verteilungseinrichtung 32 nur die Referenz zu den Daten übertragen. Im Moment, in dem dann die jeweilige Verarbeitungseinrichtung 31a, 31b, 31c tatsächlich den temporären Zugriff erteilt bekommt, kann das Datum dann direkt zwischen Verarbeitungseinrichtung 31a, 31b, 31c und gemeinsamer Hardware-Komponente 33 ausgetauscht werden.
  • Weitere Einzelheiten und Aspekte sind in Verbindung mit den vor- oder nachstehend beschriebenen Ausführungsbeispielen erwähnt. Das in 3 gezeigte Ausführungsbeispiel kann ein oder mehrere optionale zusätzliche Merkmale aufweisen, die einem oder mehreren Aspekten entsprechen, die in Verbindung mit dem vorgeschlagenen Konzept oder mit einem oder mehreren vorstehend (z.B. 1-2) oder nachstehend (z.B. 4-5) beschriebenen Ausführungsbeispielen erwähnt sind.
  • Ein vorgeschlagener Algorithmus bietet gemeinsamen Ressourcenzugriff sowohl zum Lesen (Empfangen) als auch zum Schreiben (Übertragen) von Daten. Der Algorithmus geht davon aus, dass im System nur ein einziges System (z.B. Subsystem; z.B. ein CPU-Kern; z.B. die Verteilungseinheit) exklusiven Zugriff auf die gemeinsam genutzte Ressource hat, während weitere Subsysteme (z.B. als Verarbeitungseinheiten bezeichnet) die Verteilungseinheit (z.B. arbitration unit) nach einem gemeinsamen (z.B. koordinierten) Ressourcenzugriff fragen.
  • Prinzipiell gibt es zwei grundlegende Szenarien für die Funktion des Algorithmus: 1) Verarbeitungseinheiten, die Daten von der gemeinsam genutzten Ressource erhalten (Lesezugriff; siehe auch 4); und 2) Verarbeitungseinheit, die Daten an die gemeinsam genutzte Ressource und möglicherweise auch an andere Verarbeitungseinheiten überträgt (Schreibzugriff; siehe auch 5).
  • 4 zeigt ein schematisches Beispiel 40 eines Ablaufs zum Auslesen von Daten aus einer gemeinsamen Hardware-Komponente 43 durch eine Mehrzahl von Verarbeitungseinrichtungen 41a, 41b, 41c. Das Beispiel umfasst eine Kombination verschiedener Aspekte. Die einzelnen Punkte können auch unabhängig voneinander ausgeführt werden. Das Beispiel 40 wird an einem System mit mehreren Verarbeitungseinheiten 41a, 41b, 41c, einer Verteilungseinheit 42 und einer gemeinsamen Hardware-Komponente 43 beschrieben.
  • Der Datenpfad zum Übertragen von Daten umfasst als erste von zwei Richtungen (Lesen von Daten von der gemeinsamen Hardware-Komponente): Gemeinsame Ressource (z.B. Hardware-Komponente 43) -> Verteilungseinheit 42 -> eine oder mehrere Verarbeitungseinheiten 41a, 41b, 41c.
  • Für das Szenario Lesen von Daten ist es erforderlich, dass das System (z.B. der Mikrocontroller) die Möglichkeit hat, Daten zwischen CPU-Kernen (z.B. Verarbeitungseinheiten 41a, 41b, 41c) und Peripherieressourcen (z.B. gemeinsame Hardware-Komponente 43) über einen z.B. Shared Memory-Mechanismus zu teilen, und dass es eine Speicherschutzeinheit (MPU; memory protection unit) gibt, die für jeden CPU-Kern konfiguriert werden kann. Es kann einen Teil des gemeinsam genutzten Speichers geben, der als gemeinsamer Puffer (z.B. Zwischenspeicher b in 4) für die Verwendung durch gemeinsam genutzte HW-Ressourcen 43, Verteilungseinheit 42 und Verarbeitungseinheiten 41a, 41b, 41c verwendet wird. Der gemeinsame Speicher b ist in einheitliche Blöcke (nbShMemChunks) unterteilt.
  • Durch den Austausch von Referenzen (z.B. Speicheradressen; z.B. Zeiger), die auf die Daten im gemeinsam genutzten Speicher verweisen, kann eine Datenübertragung erreicht werden, die als Zero Copy-Datenaustausch bezeichnet werden kann (da bei der Verteilung des Zugriffs auf die gemeinsame Hardware-Komponente 43 die Daten selbst nicht übertragen werden, sondern nur deren Referenzen bzw. Speicheradressen).
  • In 4 sind dabei ein Speicher a der gemeinsamen Hardware-Komponente 43 sowie ein Speicher b der Verteilungseinrichtung 42 dargestellt. Ein weiterer Speicher c der Verteilungseinrichtung 42 weist einen Wartespeicher c_p (pending queue) sowie einen Freigabespeicher (free queue) c_f auf. Die einzelnen Verarbeitungseinrichtungen 41a, 41b, 41c weisen je eine Kommunikationsspeicher d auf. Der Wartespeicher c_p ist ausgebildet, eine bestimmte Anzahl an Referenzen zu speichern. Jeder Kommunikationsspeicher d ist ebenfalls ausgebildet, eine gewisse Anzahl an Referenzen zu speichern. Insbesondere ist vorgesehen, dass im Kommunikationsspeicher d weniger Referenzen gespeichert werden können, als im Wartespeicher c_p (näheres siehe auch im Nachfolgenden).
  • Da der Zero-Copy-Vorgang beim Freigeben von Datenframes verwendet wird, wird nur der Zeiger auf den Frame (oder Frame-Deskriptor) zwischen interessierten Parteien geteilt (Verteilungseinrichtung und Verarbeitungseinheiten; zum Beispiel bei der Verteilung des Zugriffs auf die gemeinsam genutzte Hardware-Komponente 43). Im Lesedatenpfad kann Zero-Copy beim Weiterleiten von Frames in der ersten Übertragungsrichtung verwendet werden (d.h. von der gemeinsamen Ressource über Verteilungseinrichtung zu einer oder mehreren Verarbeitungseinheiten).
  • Um räumliche FFI-Einschränkungen zu adressieren, kann die MPU-Konfiguration bereitgestellt werden, damit nur das Teilsystem der gemeinsam genutzten Ressourcen 43 Schreibzugriff auf den freigegebenen Speicher hat, während Verarbeitungseinheiten 41a, 41b, 41c und Verteilungseinrichtung 42 nur aus dem freigegebenen Speicher lesen können. Die Adressierung zeitlicher FFI- und QoS-Beschränkungen wird im Folgenden auch unter Schritt 3) in der Datenpfadbeschreibung beschrieben.
  • Im Folgenden erfolgt eine detaillierte Beschreibung des ersten Datenpfads:
    • In einem Initialschritt 0) initialisiert die Verteilungseinrichtung 42 die gemeinsam genutzte Ressource 43, um mit dem Empfang der Daten (oder zumindest eines Datums) zu beginnen (z. B. CAN-Controller, Ethernet-Controller oder spezialisierte Verarbeitungseinheit) oder führt einen anderen Initialisierungsschritt für gemeinsam genutzte HW durch. Die Verteilungseinrichtung 42 kann auch mit dem Lesen der Daten aus gemeinsam genutzten HW-Ressourcen 43 beginnen (z. B. Flash-Speicher, der mit einem gemeinsam genutzten NVM-Controller verbunden ist).
  • In einem weiteren Schritt 1) kann der Speicher b (geteilter Speicher der Verteilungseinrichtung 42) die Daten erhalten haben oder die Daten wurden von der Verteilungseinrichtung 42 gelesen.
  • In einem weiteren Schritt 2) wird ein Zeiger (z.B. Referenz) auf den Teil des freigegebenen Speichers, in dem die Daten gespeichert sind, dann in eine „ausstehende“ Warteschlange (z.B. pending queue; z.B. Wartespeicher c_p der Verteilungseinrichtung 42) gesetzt. Die ausstehende Warteschlange oder der Wartespeicher c_p kann eine FIFO (first-in-first-out)-ähnliche Datenstruktur sein und somit die zeitliche Konsistenz der Daten gewährleisten, da die Daten, die zuerst von der freigegebenen HW-Einheit gelesen wurden, diejenige sind, die zuerst aus der „ausstehenden“ Warteschlange c gelesen wird. Die „Ausstehende“ Warteschlange c wird intern z.B. als doppelt verknüpfte Liste über ein statisches Array implementiert (so dass z.B. statische Speicherzuweisung gewährleistet werden kann; dies bietet z.B. die Möglichkeit des Cachefreundlichen Designs), die das Einfügen und Löschen von Elementen in O(1) algorithmische Komplexität ermöglicht, ohne die zeitliche Konsistenz zu beeinflussen (d. h. Elemente sind immer noch in chronologischer Reihenfolge sortiert). Die Warteschlange „Ausstehend“ wird als Puffer der Verteilungseinrichtung für das Puffern von Zeigern auf freigegebene Speicherdaten (z.B. der gemeinsamen Hardware-Komponente 43) verwendet, die für die Verarbeitung durch Verarbeitungseinheiten 41a, 41b, 41c ausstehen. Die Warteschlange „Ausstehend“ enthält z.B. nbShMemChunks (number shared memory chunks)-Elemente (z.B. Anzahl, wie viele Referenzen im Wartespeicher c_p gespeichert werden können).
  • In einem weiteren Schritt 3) leitet die Verteilungseinrichtung 42 die Daten aus der „ausstehenden“ Warteschlange (z.B. Wartespeicher c_p) an eine oder mehrere Verarbeitungseinheiten 41a, 41b, 41c weiter, abhängig vom Routingalgorithmus und den gemeinsam genutzten Daten (z. B. Ethernet-Frame kann an eine oder mehrere Verarbeitungseinheiten gesendet werden). Der Zeiger auf die Daten wird dann aus der „ausstehenden“ Warteschlange entnommen und in die Kommunikationswarteschlange d (oder Kommunikationsspeicher d) der Verarbeitungseinheit 41a, 41b, 41c gestellt. Abhängig vom Routingalgorithmus kann der Zeiger auf die Daten in der „ausstehenden“ Warteschlange in der „ausstehenden“ Warteschlange belassen werden, wenn einige der Verarbeitungseinheiten 41a, 41b, 41c ausgelastet sind und ihre Kommunikationswarteschlangen d voll sind und zu einem späteren Zeitpunkt aus der „ausstehenden“ Warteschlange entfernt werden. Jedes Mal, wenn die Verteilungseinrichtung 42 beim Routing versucht, so viele Daten aus der „ausstehenden“ Warteschlange c wie möglich in die Kommunikationswarteschlangen d der Verarbeitungseinheiten 41a, 41b, 41c zu legen (z.B. nach Schritt 3) kann die gesamte Kommunikationswarteschlange d voll sein, wenn genügend Daten in der „ausstehenden“ Warteschlange c vorhanden sind. Um QoS und zeitliches FFI zu gewährleisten, ist vorgesehen, dass die kombinierte Größe der Kommunikationswarteschlangen d der Verarbeitungseinheiten 41a, 41b, 41c (comQueueSize) kleiner ist als die Größe der „ausstehenden“ Warteschlange und/oder die Anzahl der Speicherbereich (chunks) des gemeinsam genutzten Speichers.
  • Somit gilt z.B. als Kriterium zum Implementieren der Speichergrößen: nbShMemChunks (Anzahl der Speicherbereiche des gemeinsamen Speichers b) > nbOfProcUnits (Anzahl der Verteilungseinrichtungen) * comQueueSize (Größe des Kommunikationsspeichers d). Wenn diese Bedingung beibehalten wird, wird z.B. die Dienstqualität gewährleistet, da selbst wenn eine Verarbeitungseinheit aufgrund eines Softwareproblems nicht reagiert, der Datendurchsatz sichergestellt ist. Die Zeiger auf den freigegebenen Speicher, die in der Warteschlange für nicht reagierende Verarbeitungseinheiten gespeichert werden, sind nur ein Teil des gesamten freigegebenen Speichers, was es dem System ermöglicht, die Verfügbarkeit mit möglicherweise geringerer Leistung aufrechtzuerhalten.
  • In einem weiteren Schritt 4) signalisiert die Verarbeitungseinheit 41a, 41b, 41c der Verteilungseinrichtung 42, dass sie die Daten in der Kommunikationswarteschlange verarbeitet hat, indem sie den Zeiger an den gemeinsamen Speicher zurück an die Verteilungseinrichtung 42 sendet. Dieser Zeiger wird dann aus der Kommunikationswarteschlange d der Verarbeitungseinheit entnommen und in die „freie“ Warteschlange c_f der Verteilungseinrichtung 42 gestellt, wenn die Verteilungseinrichtung 42 sicher ist, dass der vom Zeiger gezeigte gemeinsame Speicherblock frei ist, um von der gemeinsam genutzten HW-Ressource verwendet zu werden. Die „freie“ Warteschlange c_f hat z.B. die gleiche Größe wie die „ausstehende“ Warteschlange c_p und wird von der Verteilungseinrichtung 42 verwendet, um Blöcke des freigegebenen Speichers zu kennzeichnen, die der gemeinsam genutzten HW-Ressource frei gegeben werden können. Wenn der Zeiger auf einen freigegebenen Speicherblock von der „ausstehenden“ Warteschlange an weitere Verarbeitungseinheiten 41a, 41b, 41c weitergeleitet wurde, wird dieser Zeiger nur dann in die Warteschlange „frei“ (z.B. Freigabespeicher c_f) gesetzt, wenn alle Verarbeitungseinheiten 41a, 41b, 41c diesen Zeiger zurückgegeben haben.
  • In einem weiteren Schritt 5) nimmt die Verteilungseinrichtung 42 den Speicher aus „freie“ Warteschlange und der gesamte Prozess wiederholt sich von Schritt 1) an. Um QoS sicherzustellen, wenn die freie Warteschlange leer ist, was etwa bedeutet, dass eine oder mehrere Verarbeitungseinheiten zu langsam sind, um die Daten zu verarbeiten, kann die Verteilungseinrichtung 42 Zeiger aus der „ausstehenden“ Warteschlange zurückfordern. Da die Daten in der „ausstehenden“ Warteschlange noch auf die Verarbeitung warten, können sie sicher durch neue Daten aus freigegebenen HW-Ressourcen 43 überschrieben werden. Die „ausstehende“ Warteschlange c_p hat die Eigenschaft der zeitlichen Konsistenz, was bedeutet, dass die Elemente am Anfang der Warteschlange die ältesten im System sind, durch die Wiederverwendung dieses Speichers schreiben wir immer die ältesten Daten neu, die inhärent zur langsamsten Verarbeitungseinheit gehören. Die „ausstehende“ Warteschlange ist ein kombinierter Puffer, der allen Verarbeitungseinheiten 41a, 41b, 41c dient, sodass der darin gepufferte Dateninhalt das Verhältnis zwischen der Verarbeitungsgeschwindigkeit verschiedener Verarbeitungseinheiten 41a, 41b, 41c und der Datenmenge widerspiegelt, die von der gemeinsam genutzten HW-Einheit gelesen wird und an eine bestimmte Verarbeitungseinheit weitergeleitet werden soll.
  • Unter der Annahme, dass freigegebene Ressourcen die Daten erzeugen, die gleichmäßig auf Verarbeitungseinheiten 41a, 41b, 41c verteilt werden sollten, und alle Verarbeitungseinheiten 41a, 41b, 41c die Daten mit der gleichen Geschwindigkeit verarbeiten, ist zu erwarten, dass die in der „ausstehenden“ Warteschlange enthaltenen Daten diese Tatsache in dem Sinne widerspiegeln, dass, wenn z.B. drei Verarbeitungseinheiten 41a, 41b, 41c bereitstehen, etwa 33 % der enthaltenen Daten in der „ausstehenden“ Warteschlange von der ersten Verarbeitungseinheit verarbeitet werden, 33 % von der zweiten und 33 % durch die dritte Verarbeitungseinheit. Wenn z.B. eine Verarbeitungseinheit 41a langsamer ist als die andere 41b, ist zu erwarten, dass mehr Daten in der „ausstehenden“ Warteschlange gepuffert werden, die von einer langsamen Verarbeitungseinheit verarbeitet werden sollten. Aufgrund dieser Attribute der „ausstehenden“ Warteschlange werden die Daten der langsamsten Verarbeitungseinheit auch proportional öfter umgeschrieben als für die anderen schnelleren Verarbeitungseinheiten, indem die Daten ggf. wiederverwendet werden.
  • Weitere Einzelheiten und Aspekte sind in Verbindung mit den vor- oder nachstehend beschriebenen Ausführungsbeispielen erwähnt. Das in 4 gezeigte Ausführungsbeispiel kann ein oder mehrere optionale zusätzliche Merkmale aufweisen, die einem oder mehreren Aspekten entsprechen, die in Verbindung mit dem vorgeschlagenen Konzept oder mit einem oder mehreren vorstehend (z.B. 1-3) oder nachstehend (z.B. 5) beschriebenen Ausführungsbeispielen erwähnt sind.
  • 5 zeigt ein schematisches Beispiel 50 eines Schreibens von Daten auf eine gemeinsame Hardware-Komponente 53 von einer Mehrzahl von Verarbeitungseinrichtungen 51a, 51b, 51c. Der Schreibzugriff wird durch eine Verteilungseinrichtung 52 gesteuert.
  • Der zweite Datenpfad (Schreibpfad) umfasst die folgenden Richtungen: - erste Datenrichtung: von Verarbeitungseinheit 51a über Verteilungseinrichtung 52 zu gemeinsamer Ressource 53; - zweite Datenrichtung von Verarbeitungseinheit 51a über Verteilungseinrichtung 52 zu Verarbeitungseinheit 51b, 51c; - dritte Datenrichtung von Verarbeitungseinheit über Verteilungseinrichtung 52 zu gemeinsamer Ressource 53 und zusätzlich zumindest einer anderen Verarbeitungseinheit 51b, 51c.
  • Das Schreiben des Datenszenarios adressiert den Anwendungsfall, wenn die Verarbeitungseinheit 51a einige Daten an/über gemeinsam genutzte Ressourcen 53 (z. B. spezielle Verarbeitungseinheit, Ethernet-Hardware, HSM usw.) senden möchte. Es wird davon ausgegangen, dass die Verarbeitungseinheit 51a ihren Datenpuffer (z.B. Kommunikationsspeicher d) enthält, den sie zur Verarbeitung an die freigegebene Ressource 53 oder/und an eine andere Verarbeitungseinheit 51b, 51c senden möchte.
  • Da der Zero-Copy-Vorgang nur mit dem Zeiger auf den Datenframe (oder Frame-Deskriptor) verwendet wird, wird er von interessierten Parteien geteilt (Verteilungseinrichtung 52, gemeinsame Ressource 53 und Verarbeitungseinheiten 51a, 51b, 51c). Im Schreibdatenpfad kann Zero-Copy z.B. nur in der ersten Datenrichtung (Verarbeitungseinheit => Verteilungseinrichtung => Freigegebene Ressource) verwendet werden, da Latenz und Ressourcennichtverfügbarkeit für die Absenderverarbeitungseinheit ähnlich sind, wie wenn sich die sendende Verarbeitungseinheit allein im System befindet und exklusiven Zugriff auf die freigegebene Ressource hat.
  • Um räumliche FFI-Einschränkungen zu adressieren, kann die MPU-Konfiguration bereitgestellt werden, damit nur die berechtigte Verarbeitungseinheit 51a über Lese- und Schreibzugriffsrechte auf den Speicher verfügt.
  • Um zeitliche FFI-Beschränkungen zu adressieren, kann die Datenverarbeitung in der Verteilungseinrichtung 52 kurz genug sein, damit der Service für andere Verarbeitungseinheiten weiterhin verfügbar ist, wenn die Absenderverarbeitungseinheit 51a die Daten sendet. In der zweiten Datenrichtung kann der Nullkopiervorgang teils nicht für den gesamten Datenpfad (von der Absenderverarbeitungseinheit 51a bis zur empfangenden Verarbeitungseinheit 51b) verwendet werden, stattdessen müssen die Daten in den Speicherbereich b der Verteilungseinrichtung 52 kopiert werden. Zeitliches FFI kann z.B. nicht immer garantiert werden, wenn Empfängerverarbeitungseinheiten 51b, 51c einen Zeiger auf den Speicherbereich sendender Verarbeitungseinheiten 51a erhalten, wodurch die Speicherressource der sendenden Verarbeitungseinheiten gesperrt werden könnte. Dieses Problem wird mit DMA (direct memory access)-Kopie in den Speicher b der Verteilungseinrichtung 52 behoben. Der Rest der zweiten Datenrichtung kann wie im Lesedatenpfad verarbeitet werden (wobei der Speicher b der Verteilungseinrichtung 52 z.B. als gemeinsam genutzte Ressource angesehen werden kann).
  • Es folgt eine beispielhafte Detailbeschreibung des Datenpfads zum Schreiben von Daten auf eine gemeinsame Hardware-Komponente 53:
    • In Schritt 0') erfolgt eine Initialisierung: Die Verteilungseinrichtung 52 hat die gleiche Konfiguration wie im Lesedatenpfad beschrieben (s. 4). Jede Verarbeitungseinheit konfiguriert ihre eigenen TX (Sende)-Puffer (z.B. Kommunikationsspeicher d) und schützt sie mit MPU (entweder direkt im Initialisierungscode oder Verteilungseinrichtung 52). Die Verteilungseinrichtung 52 konfiguriert ausstehende und freie Verwaltungsdatenstrukturen (z.B. Zwischenspeicher c mit Wartespeicher c_p und Freigabespeicher c_f; siehe auch 4).
    • Es folgt Schritt 1': Die Absenderverarbeitungseinheit 51a stellt einen Zeiger auf den internen Puffer bereit, den sie über das freigegebene Speicherprotokoll senden möchte. Die Verteilungseinrichtung 52 speichert den Zeiger in die ausstehende Warteschlange c_p, wo dieser zeitlich getriggert oder direkt verarbeitet wird.
    • Es folgt Schritt 2': In der Verarbeitungsphase der Verteilungseinrichtung 52 werden Empfänger aufgelöst und dann Frame-Zeiger mit Frame-Deskriptor in die Verarbeitungswarteschlange c_p gespeichert. Für die erste Datenrichtung wird ein Frame direkt an die freigegebene Ressource weitergeleitet während für die zweite Datenrichtung DMA bereitgestellt wird, um die Daten von der Absenderverarbeitungseinheit in einen der RX (Empfangs)-Puffer zu kopieren (z.B. Zwischenspeicher b der Verteilungseinrichtung 52). Auf diese Weise wird die zweite Datenrichtung in effizienter Art entsprechend dem Algorithmus implementiert, der vom Lesedatenpfad bereitgestellt wird.
    • Es folgt Schritt 3': Wenn die gemeinsam genutzte Ressource 53 und/oder DMA mit der Frame-Verarbeitung abgeschlossen ist, wird sie die Verteilungseinrichtung 52 benachrichtigen (Empfang der Schreibbestätigung). Die Verteilungseinrichtung 52 prüft dann, ob das Frame zur Rückgabe (z.B. Freigabe) an die sendende Verarbeitungseinheit verfügbar ist (so dass das Frame oder Datum dann auf der sendenden Verarbeitungseinheit z.B. gelöscht werden kann).
    • Es folgt Schritt 4': Wenn das Frame nicht von der gemeinsam genutzten Ressource oder der DMA verwendet wird, benachrichtigt die Verteilungseinrichtung 52 die Verarbeitungseinheit über das Protokoll des gemeinsam genutzten Speichers, dass der gesendete Frame jetzt wieder verfügbar ist.
  • Weitere Einzelheiten und Aspekte sind in Verbindung mit den vor- oder nachstehend beschriebenen Ausführungsbeispielen erwähnt. Das in 5 gezeigte Ausführungsbeispiel kann ein oder mehrere optionale zusätzliche Merkmale aufweisen, die einem oder mehreren Aspekten entsprechen, die in Verbindung mit dem vorgeschlagenen Konzept oder mit einem oder mehreren vorstehend (z.B. 1-4) oder nachstehend beschriebenen Ausführungsbeispielen erwähnt sind.
  • Beispiele der vorliegenden Offenbarung beziehen sich auf einen Zero-Copy-Datenweiterleitungsmechanismus mit mehreren Empfängern z.B. in sicherheitskritischer SMP- und AMP-Umgebung. Vorteilhafterweise muss bei der Koordination eines Zugriffs auf eine gemeinsam genutzte Hardware-Komponente dabei kein Zwischenspeichern von Daten erfolgen. Vielmehr kann eine zentrale Einheit (Verteilungseinheit oder arbitration unit) durch das Weiterleiten von Referenzen das Kopieren von Daten koordinieren. Dadurch kann ein sehr effizientes Datenmanagement bereitgestellt werden. Der vorgeschlagene Algorithmus kann beispielsweise ermöglichen, alle drei oben genannten Anforderungen (FFI, QoS und Laufzeitleistung) zu erfüllen.
  • Der vorgeschlagene Algorithmus, z.B. das Übertragungsverfahren, kann verwendet werden, um mehreren Verarbeitungseinheiten eine gemeinsame Hardwareeinheit mit geringem Performance-Overhead und hoher Servicequalität und Störfreiheit zu ermöglichen. Der Preis für Mikrocontroller wird beispielsweise stärker durch die Anzahl der Pins (d. h. mehr Peripheriegeräte) als durch die Anzahl der CPU-Kerne beeinflusst, sodass eine gemeinsame Verwendung eines Pins Kostenvorteile haben kann. Bei der Steuergeräte-Entwicklung kann mehr Freiheit bei der Auswahl des Mikrocontrollers ermöglicht werden, da z.B. statt eines Mikrocontrollers mit drei oder mehreren CAN-I/O-Kanälen der Mikrocontroller mit nur 1 CAN-I/O-Kanal verwendet werden kann. Der vorgeschlagene Mechanismus kann verwendet werden, wenn ein Hochleistungs-Low-Overhead-Single-Producer-Multiple-Consumer-Muster etwa in sicherheitskritischen System erforderlich ist.

Claims (12)

  1. Verfahren (10) zum Lesen von Daten von einer gemeinsamen Hardware-Komponente (33) durch eine oder mehrere einer Mehrzahl von Verarbeitungseinheiten (31a, 31b, 31c), das Verfahren (10) umfassend: - Erfassen (11) eines zu lesenden Datums auf der gemeinsamen Hardware-Komponente (33) und Speichern einer Referenz des zu lesenden Datums in einer Verteilungseinheit (32), die der Mehrzahl von Verarbeitungseinheiten (31a, 31b, 31c) übergeordnet ist; - Übertragen (12) der Referenz an zumindest eine der Mehrzahl von Verarbeitungseinheiten (31a, 31b, 31c); - Empfangen (13) einer Lesebestätigung von der zumindest einen Verarbeitungseinheit (31a, 31b, 31c), wobei die Lesebestätigung über das erfolgte Auslesen des Datums von der gemeinsamen Hardware-Komponente (33) durch die zumindest eine Verarbeitungseinheit (31a, 31b, 31c) informiert; und - Freigeben (14) des zu lesenden Datums auf der gemeinsamen Hardware-Komponente (33) durch die Verteilungseinheit (32), nach dem Empfangen der Lesebestätigung.
  2. Verfahren (10) nach Anspruch 1, wobei die Referenz an zwei Verarbeitungseinheiten (31a, 31b, 31c) übertragen (12) wird, wobei das Freigeben (14) des zu lesenden Datums erst nach dem Empfangen (13) der Lesebetätigungen beider Verarbeitungseinheiten (31a, 31b, 31c) erfolgt.
  3. Verfahren (10) nach Anspruch 1 oder 2, wobei das Freigeben (14) umfasst, eine Information von der Verteilungseinheit (32) an die gemeinsame Hardware-Komponente (33) zu senden, dass das zu lesende Datum erfolgreich ausgelesen wurde und nicht mehr benötigt wird.
  4. Verfahren (20) zum Schreiben von Daten von einer Verarbeitungseinheit (31a, 31b, 31c) einer Mehrzahl von Verarbeitungseinheiten (31a, 31b, 31c) zumindest auf eine gemeinsame Hardware-Komponente (33), das Verfahren (20) umfassend: - Erfassen (21) eines zu schreibenden Datums auf der Verarbeitungseinheit (31a, 31b, 31c) und Speichern einer Referenz des zu schreibenden Datums in einer Verteilungseinheit (32), die der Mehrzahl von Verarbeitungseinheiten (31a, 31b, 31c) übergeordnet ist; - Übertragen (22) der Referenz an die gemeinsame Hardware-Komponente (33); - Empfangen (23) einer Schreibbestätigung von der gemeinsamen Hardware-Komponente (33), wobei die Schreibbestätigung über das erfolgte Schreiben des Datums auf die gemeinsame Hardware-Komponente (33) informiert; und - Freigeben (24) des zu schreibenden Datums auf der Verarbeitungseinheit (31a, 31b, 31c) durch die Verteilungseinheit (32), nach dem Empfangen der Schreibbestätigung.
  5. Verfahren (20) gemäß Anspruch 4, wobei das zu schreibende Datum ferner auf einen Zwischenspeicher (b) der Verteilungseinheit (32) gespeichert wird und an eine weitere der Mehrzahl von Verarbeitungseinheiten (31a, 31b, 31c) übertragen wird.
  6. Verfahren (10, 20) gemäß einem der vorhergehenden Ansprüche, wobei die Referenz in einem First-in-First-out-Speicher (c_p) der Verteilungseinheit (32) gespeichert wird, wobei im Fall, dass der First-in-First-out-Speicher (c_p) voll ist, die älteste Referenz gelöscht wird, wenn eine neue Referenz gespeichert werden soll.
  7. Verfahren (10, 20) gemäß einem der vorhergehenden Ansprüche, wobei die Referenz ein Pointer ist und die Lesebestätigung oder Schreibbestätigung den Pointer umfasst.
  8. Verfahren (10, 20) gemäß einem der vorhergehenden Ansprüche, wobei das zu lesende oder das zu schreibende Datum ein Datenframe, ein Datenpaket oder ein Datensegment ist.
  9. Verfahren (10, 20) gemäß einem der vorhergehenden Ansprüche, wobei die gemeinsame Hardware-Komponente (33) ein gemeinsam genutztes Dateninterface oder ein gemeinsam genutzter Speicher ist.
  10. System (30) zum Übertragen von Daten zwischen einer gemeinsamen Hardware-Komponente (33) und einer Mehrzahl von Verarbeitungseinheiten (31a, 31b, 31c), das System umfassend: - eine Mehrzahl von Verarbeitungseinheiten (31a, 31b, 31c), - eine Verteilungseinheit (32), die der Mehrzahl von Verarbeitungseinheiten (31a, 31b, 31c) übergeordnet ist; und - eine gemeinsam von der Mehrzahl von Verarbeitungseinheiten (31a, 31b, 31c) genutzte Hardware-Komponente (33), insbesondere ein Dateninterface (33), des Systems (30), wobei das System (30) ausgebildet ist, ein Verfahren (10, 20) gemäß einem der vorigen Ansprüche auszuführen.
  11. System (30) nach Anspruch 10, wobei die Verteilungseinheit (32) ferner einen Wartespeicher (c_p) aufweist, der ein Speichern einer ersten Zahl von Referenzen ermöglicht; wobei die Mehrzahl der Verarbeitungseinheiten (31a, 31b, 31c) je einen Kommunikationsspeicher (d) aufweist, wobei die Kommunikationsspeicher (d) in Summe ein Speichern einer zweiten Zahl von Referenzen ermöglichen, wobei die zweite Zahl nicht größer ist als die erste Zahl.
  12. System (30) nach Anspruch 10 oder 11, wobei das System (30) in einem Mikrocontroller ausgebildet ist, wobei der Mikrocontroller einen Pin für das gemeinsam genutzte Dateninterface (33) aufweist.
DE102021111809.3A 2021-05-06 2021-05-06 Verfahren und system zum übertragen von daten Pending DE102021111809A1 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE102021111809.3A DE102021111809A1 (de) 2021-05-06 2021-05-06 Verfahren und system zum übertragen von daten

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102021111809.3A DE102021111809A1 (de) 2021-05-06 2021-05-06 Verfahren und system zum übertragen von daten

Publications (1)

Publication Number Publication Date
DE102021111809A1 true DE102021111809A1 (de) 2022-11-10

Family

ID=83692490

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021111809.3A Pending DE102021111809A1 (de) 2021-05-06 2021-05-06 Verfahren und system zum übertragen von daten

Country Status (1)

Country Link
DE (1) DE102021111809A1 (de)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080148095A1 (en) 2006-12-14 2008-06-19 Motorola, Inc. Automated memory recovery in a zero copy messaging system
DE102019215296A1 (de) 2019-10-04 2021-04-08 Robert Bosch Gmbh Verfahren, Computerprogramm, elektronisches Speichermedium, Vorrichtung zur Bereitstellung eines Datums
DE102019215292A1 (de) 2019-10-04 2021-04-08 Robert Bosch Gmbh Datenstruktur, Speichermittel und Vorrichtung

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080148095A1 (en) 2006-12-14 2008-06-19 Motorola, Inc. Automated memory recovery in a zero copy messaging system
DE102019215296A1 (de) 2019-10-04 2021-04-08 Robert Bosch Gmbh Verfahren, Computerprogramm, elektronisches Speichermedium, Vorrichtung zur Bereitstellung eines Datums
DE102019215292A1 (de) 2019-10-04 2021-04-08 Robert Bosch Gmbh Datenstruktur, Speichermittel und Vorrichtung

Similar Documents

Publication Publication Date Title
DE2854485C2 (de) Datenverarbeitungsanlage
EP2030118B1 (de) Mehrprozessor-gateway
EP2030116A1 (de) Kommunikationsbaustein
DE102012023395A1 (de) Schnittstellenvorrichtung und Verfahren zum Austauschen von Nutzdaten
DE19607531A1 (de) Multicluster-Computersystem
DE3820544C2 (de) Ortsbereichsnetzsystem mit einem hiermit gekoppelten Mehrcomputersystem und Verfahren zur Steuerung hiervon
DE102006032832A1 (de) Netzwerksystem und Verfahren zur Steuerung verteilter Speicher
DE3837699A1 (de) Systembuserweiterung zur kopplung multimasterfaehiger mehrrechnersysteme
DE102019117794A1 (de) Speichervorrichtungen, die heterogene Prozessoren umfassen, welche sich Speicher teilen, und Verfahren zu deren Betrieb
DE112012006227T5 (de) Remotezugriff auf den direkten Speicher mit reduzierter Latenzzeit
DE102013209643A1 (de) Mechanismus für optimierte Nachrichtenaustauschdatenübertragung zwischen Nodelets innerhalb eines Plättchens
DE102020130534A1 (de) System, Vorrichtung und Verfahren zum persistenten Umgehen mit Speicheranforderungen in einem System
DE112013001211B4 (de) Multithread-Paketverarbeitung
DE10052132A1 (de) Graphikprozessor mit mehrfachen geometrischen Arbeitseinheiten und Verfahren zum Datenverarbeiten
DE102006009034B3 (de) Verfahren zum Betreiben eines Bussystems sowie Halbleiter-Bauelement, insbesondere Mikroprozessor- bzw. Mikrocontroller
DE102020210335A1 (de) System und Verfahren zum Einreihen von Arbeit innerhalb eines virtualisierten Planers basierend auf einem Abrechnen innerhalb einer Einheit von Einträgen innerhalb der Einheit
DE112012005663B4 (de) Vorrichtung, Verfahren und System zur Zuweisung von Prozesen oder Threads an Agenten
DE102021111809A1 (de) Verfahren und system zum übertragen von daten
DE60022186T2 (de) Unterhaltung einer entfernten Warteschlange unter Benutzung von zwei Zählern in der Verschiebesteuerung mit Hubs und Ports
DE102016206109A1 (de) Speicherdirektzugriffssteuereinrichtung für mindestens eine einen Arbeitsspeicher aufweisende Recheneinheit
DE69827879T2 (de) Zeitmultiplexschema zur Verklemmungsauflösung in distribuierter Arbitrierung
DE102018220823A1 (de) Dynamische routing-einrichtung und verfahren fur can-nachricht von fahrzeug
DE102014207422A1 (de) Busschnittstelleneinheit und Betriebsverfahren hierfür
DE102018123563B4 (de) Verfahren zur Zwischenkernkommunikation in einem Mehrkernprozessor
DE112013003924B4 (de) Nichttransitorisches computerlesbares Medium, Verfahren und prozessorbasiertes System zur Verarbeitung von Nachrichtenkanal-Transaktionen in einem Prozessorbasiertem System ohne Durchführung von Blockierungsoperationen

Legal Events

Date Code Title Description
R163 Identified publications notified