DE102022200501A1 - Verfahren zur paketorientierten Datenkommunikation zwischen zwei Recheneinheiten - Google Patents

Verfahren zur paketorientierten Datenkommunikation zwischen zwei Recheneinheiten Download PDF

Info

Publication number
DE102022200501A1
DE102022200501A1 DE102022200501.5A DE102022200501A DE102022200501A1 DE 102022200501 A1 DE102022200501 A1 DE 102022200501A1 DE 102022200501 A DE102022200501 A DE 102022200501A DE 102022200501 A1 DE102022200501 A1 DE 102022200501A1
Authority
DE
Germany
Prior art keywords
receiver
buffer
transmitter
transmit
memory section
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
DE102022200501.5A
Other languages
English (en)
Inventor
Tobias Laichinger
Andreas Karasek
Bernhard Plametzberger
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.)
Robert Bosch GmbH
Original Assignee
Robert Bosch GmbH
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 Robert Bosch GmbH filed Critical Robert Bosch GmbH
Priority to DE102022200501.5A priority Critical patent/DE102022200501A1/de
Publication of DE102022200501A1 publication Critical patent/DE102022200501A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/625Queue scheduling characterised by scheduling criteria for service slots or service orders
    • H04L47/6275Queue scheduling characterised by scheduling criteria for service slots or service orders based on priority
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/6295Queue scheduling characterised by scheduling criteria using multiple queues, one for each individual QoS, connection, flow or priority

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

Die Erfindung betrifft ein Verfahren zur paketorientierten Datenkommunikation zwischen zwei Recheneinheiten (1, 2), die mittels einer Schnittstelle (4_1, 4_2) verbunden sind; wobei jede Recheneinheit dazu eingerichtet ist, eine Sendequeue (6_1, 6_2) zu verwalten, die Einträge umfasst, die jeweils eine Sendepriorität aufweisen und einen zu übertragenden Speicherabschnitt spezifizieren; wobei wenigstens eine der Recheneinheiten senderseitig wirkt und mehrere als Ringpuffer eingerichtete Sendepuffer (50_1, 50_2) aufweist und die wenigstens eine andere der Recheneinheiten empfängerseitig wirkt und mehrere zu den Sendepuffern korrespondierende als Ringpuffer eingerichtete Empfangspuffer (52_1, 52_2) aufweist, wobei jedem Sendepuffer und dem korrespondierenden Empfangspuffer eine Priorisierung zugewiesen ist; wobei die wenigstens eine senderseitige Recheneinheit dazu eingerichtet ist, zu übertragende Pakete in die Sendepuffern zu speichern (320), wobei jedes Paket entsprechend einer Klassifizierung in einem Sendepuffer geschrieben wird, für jeden Sendepuffer für jedes darin gespeicherte Paket wenigstens einen Eintrag in der Sendequeue zu erzeugen (340), wobei dem wenigstens einen Eintrag eine Sendepriorität entsprechend der Priorisierung des Sendepuffers zugewiesen wird und in dem wenigstens einen Eintrag ein Speicherabschnitt, in dem zumindest ein Teil des Pakets gespeichert ist, spezifiziert wird; wobei die wenigstens eine empfängerseitige Recheneinheit dazu eingerichtet ist, Pakete aus den Empfangspuffern zu lesen (420), wobei die Pakete entsprechend der Priorisierung der Empfangspuffer gelesen werden.

Description

  • Die vorliegende Erfindung betrifft ein Verfahren zur paketorientierten Datenkommunikation zwischen zwei Recheneinheiten sowie ein System, eine Recheneinheit und ein Computerprogramm zu dessen Durchführung.
  • Hintergrund der Erfindung
  • Bei Steuergeräten (von Kraftfahrzeugen oder Maschinen in industriellen Anlagen), welche mehrere Recheneinheiten, z.B. Mikrocontroller, verwenden, kann zur Kommunikation zwischen den Recheneinheiten eine serielle Kommunikation (z.B. UART mit proprietärem Protokoll) oder eine ethernet-basierte Lösung mit einem zusätzlichen Ethernet-Switch in Hardware zum Einsatz kommen. Nachteilig an proprietären Protokollen ist, dass je nach verwendetem System eine Adaptierung an die nativen Kommunikationsmechanismen erfolgen muss, was zusätzliche Softwareschichten notwendig macht. Bei den ethernet-switch-basierten Systemen steigen die Kosten und die Komplexität durch die zusätzlichen Hardwarebauelemente und den erhöhten Flächenbedarf auf einer etwaigen Platine.
  • Offenbarung der Erfindung
  • Erfindungsgemäß werden ein Verfahren zur paketorientierten Datenkommunikation zwischen zwei Recheneinheiten sowie ein System, eine Recheneinheit und ein Computerprogramm zu dessen Durchführung mit den Merkmalen der unabhängigen Patentansprüche vorgeschlagen. Vorteilhafte Ausgestaltungen sind Gegenstand der Unteransprüche sowie der nachfolgenden Beschreibung.
  • Die Erfindung bedient sich der Maßnahme, zur paketorientierten Datenkommunikation zwischen zwei Recheneinheiten, die mittels einer Schnittstelle verbunden sind, mehrere Sendepuffer mit jeweiliger Priorisierung vorzusehen, in die Pakete entsprechend einer Klassifizierung, die z.B. einer Dringlichkeit des jeweiligen Pakets entspricht, geschrieben bzw. gespeichert werden, und über die Schnittstelle in korrespondierende Empfangspuffer zu senden bzw. zu übertragen. Hierbei werden für jedes Paket ein oder mehre Einträge in einer Sendewarteschlange (im Folgenden Sendequeue) erzeugt, wobei den Einträgen eine Sendepriorität entsprechend dem Sendepuffer, in dem das Paket gespeichert ist, bzw. dessen Priorisierung zugewiesen wird. Dies ist vorteilhaft, da einerseits Sendepuffer mit hoher Priorisierung für möglichst rasch, mit geringer Latenz zu übertragende Pakete vorgesehen werden können und andererseits Sendepuffer für große Pakete, die mit hoher Bandbreite übertragen werden sollen, vorgesehen werden können.
  • Die Schnittstelle ist dazu eingerichtet ist, Speicherabschnitte bzw. Adressabschnitte in korrespondierende Speicherabschnitte der jeweilig anderen Recheneinheit zu senden bzw. zu übertragen (z.B. sogenannte speicherbasierte Schnittstelle). Die Schnittstelle kann kostengünstig, z.B. als serielle Schnittstelle, ausgeführt werden. Als Schnittstelle kann beispielsweise eine LVDS-Schnittstelle (Low Voltage Differential Signal) verwendet werden. Hier können etwa 5-polige LFAST/SIPI-Schnittstellen (LVDS Fast Asynchronous Serial Transmission Interface; Serial Inter-Prozessor Interface) verwendet werden, wobei je Kommunikationsrichtung zwei Leitungen und eine fünfte Leitung für ein Synchronisationssignal verwendet werden. Auch eine HSSL-Schnittstelle (High Speed Serial Link) kann verwendet werden. Solche Schnittstellen bieten Übertragungs-Bandbreiten von einigen Hundert Mbit/s bis einige Gbit/s. Auch die Verwendung von PCIe-Schnittstelle (PCI Express, Peripheral Component Interconnect Express) ist denkbar, wobei hier Bandbreiten von einigen GB/s möglich sind. Speicheradressen von Speicherabschnitten der Sendepuffer bzw. Empfangspuffer können, insbesondere bei Mikrocontrollern, von vornherein festgelegt sein, z.B. in einem Computerprogramm, das das Verfahren implementiert, gespeichert sein. Gemäß einer bevorzugten Ausführungsform (siehe unten) ist jedoch auch eine dynamische Initialisierung denkbar.
  • Jede Recheneinheit ist dazu eingerichtet, eine Sendequeue bzw. Sendewarteschlange zu verwalten, die Einträge umfasst, wobei jedem Eintrag eine Sendepriorität zugewiesen ist und jeder Eintrag einen zu übertragenden Speicherabschnitt spezifiziert. Die Einträge werden in einer Reihenfolge entsprechend der Sendepriorität bearbeitet, wobei für jeden Eintrag beim Bearbeiten der darin spezifizierte Speicherabschnitt über die Schnittstelle gesendet wird und der Eintrag (nach dem Bearbeiten) aus der Sendequeue entfernt wird. Nach dem Bearbeiten eines Eintrags wird mit dem Bearbeiten des entsprechend der Reihenfolge nächsten, noch nicht bearbeiteten bzw. sich noch nicht in Bearbeitung befindlichen Eintrags fortgefahren. Falls die Recheneinheit entsprechend eingerichtet ist, z.B. mehrere Prozessoren aufweist, können Einträge auch zumindest teilweise parallel bearbeitet werden.
  • Die Sendeprioritäten können Werte einer kontinuierlichen oder diskreten geordneten Menge (z.B. einer Teilmenge der reellen oder vorzugsweise der natürlichen Zahlen) sein, die beschränkt oder unbeschränkt sein kann. Die Reihenfolge der Bearbeitung der Einträge erfolgt so, dass Einträge mit höherer Sendepriorität vor Einträgen mit niedriger Sendepriorität bearbeitet werden, wobei sich „höher“, „niedriger“ auf die Ordnung der Menge beziehen. Die Verwaltung der Einträge kann in geeigneten Datenstrukturen erfolgen, z.B. mittels einer Liste, einer Tabelle, einem Ringpuffer, einem Baum oder Ähnlichem. Hierbei kann auch vorgesehen sein, dass für verschiedene Sendeprioritäten (oder für verschiedene Bereiche von Sendeprioritäten) jeweils eine eigene dieser Datenstrukturen vorgesehen ist. Bei der Bearbeitung von Einträgen mit gleicher Sendepriorität sind verschiedene Vorgehensweisen bzw. Reihenfolgen denkbar. Vorzugsweise erfolgt die Bearbeitung von Einträgen mit gleicher Sendepriorität entsprechend der zeitlichen Reihenfolge, mit der sie erzeugt wurden (FIFO-Prinzip bei Einträgen gleicher Sendepriorität; FIFO: First In - First Out, d.h. der Reihe nach). Dies kann z.B. realisiert werden, indem die Einträge in einer geordneten oder in mehreren geordneten Datenstrukturen verwaltet werden.
  • Wenigstens eine der Recheneinheiten wirkt als Sender bzw. senderseitig (im Folgenden als senderseitige Recheneinheit bezeichnet) und die wenigstens eine andere der Recheneinheiten wirkt als Empfänger bzw. empfängerseitig (im Folgenden als empfängerseitige Recheneinheit bezeichnet), wobei die wenigstens eine senderseitige Recheneinheit mehrere als Ringpuffer eingerichtete Sendepuffer aufweist und die wenigstens eine empfängerseitige Recheneinheiten mehrere, zu den Sendepuffern korrespondierende, als Ringpuffer eingerichtete Empfangspuffer aufweist, wobei jedem Sendepuffer und dem korrespondierenden Empfangspuffer eine Priorisierung zugewiesen ist. Es ist möglich, dass nur eine der zwei Recheneinheiten als Sender wirkt und die andere Recheneinheit als Empfänger wirkt. In diesem Fall kann vorgesehen sein, dass in der senderseitigen Recheneinheit nur Sendepuffer und in der empfängerseitigen Recheneinheit nur korrespondierende Empfangspuffer vorgesehen sind. Vorzugsweise wirken beide Recheneinheiten sowohl als Sender als auch als Empfänger. Die Anzahl und die Größe der Sendepuffer und der korrespondierende Empfangspuffer können dann in den Recheneinheiten verschieden sein. Es sollten mindestens zwei der Sendepuffer (und korrespondierend der Empfangspuffer) verschiedene Priorisierungen aufweisen.
  • Jedes Paket weist eine Klassifizierung auf. Die Klassifizierung kann insbesondere durch ein Kommunikations-Protokoll, mit dem das Paket kodiert ist, gegeben sein. Bevorzugt sind die Pakete Pakete eines Standardprotokolls, insbesondere eines TCP/IP-Protokolls bzw. Internetprotokolls, eines Ethernet-Protokolls, eines CAN-Protokolls (Controller-Area-Network), eines LIN-Protokolls (Local-Interconnection-Network). Die Erfindung ermöglicht die Verknüpfung von Standardprotokollen mit einer speicherbasierten Schnittstelle, so dass auf die Verwendung von Hardware bzw. eine physikalische Implementierung (z.B. PHY, Kabel, Switches usw.), die mit dem Einsatz von Standardprotokollen üblicherweise verbunden ist, verzichtet werden kann. Auch kann so auf Seiten der Anwendungssoftware, die in den Recheneinheiten läuft, das verwendete Protokoll unverändert beibehalten werden. Alternativ oder zusätzlich können die Pakete auf andere Weise klassifiziert sein, etwa durch eine Dringlichkeits-Anforderung bzw. Latenzzeit-Anforderung mit der die Pakete übertragen werden sollen, durch die Größe (z.B. gemessen in Byte) der Pakete, durch das Anwendungs-Computerprogramm, welches das Paket übertragen will, oder Ähnliches.
  • Die wenigstens eine senderseitige Recheneinheit ist dazu eingerichtet, zu übertragende Pakete in die Sendepuffer zu speichern bzw. schreiben, wobei jedes Paket entsprechend seiner Klassifizierung in einen der Klassifizierung zugeordneten Sendepuffer gespeichert wird. Sie ist weiterhin dazu eingerichtet, für jeden Sendepuffer für jedes darin gespeicherte Paket entsprechend der Ringpufferstruktur wenigstens einen Eintrag in der Sendequeue zu erzeugen, wobei dem wenigstens einen Eintrag eine Sendepriorität entsprechend der Priorisierung des Sendepuffers zugewiesen wird und in dem wenigstens einen Eintrag ein Speicherabschnitt, in dem zumindest ein Teil des Pakets gespeichert ist, spezifiziert wird. In einem Sendepuffer können verschiedene Klassifizierungen zugeordnet sein. Jede Klassifizierung ist bevorzugt genau einem Sendepuffer zugeordnet.
  • Die wenigstens eine empfängerseitige Recheneinheit ist dazu eingerichtet, Pakete aus den Empfangspuffern zu lesen, wobei die Pakete entsprechend der Priorisierung der Empfangspuffer unter Berücksichtigung der jeweiligen Ringpufferstruktur gelesen werden.
  • Bevorzugt ist die wenigstens eine senderseitige Recheneinheit dazu eingerichtet, für in einem der Sendepuffer gespeicherte Pakete, die einen Paket-Speicherabschnitt belegen, der eine maximale Größe überschreitet, jeweils mehrere Einträge in der Sendequeue zu erzeugen, in denen verschiedene Speicherabschnitte spezifiziert sind, die Teil des Paket-Speicherabschnitts sind, so dass jeder der verschiedenen Speicherabschnitte die maximale Größe nicht überschreitet. Durch diese Ausgestaltung wird die Schnittstelle nicht für längere Zeit durch große Pakete blockiert wird, so dass möglichst schnell zu übertragende Pakete spätestens nach einer Zeit, die der Sendezeitdauer eines Pakets mit maximaler Größe bzw. maximaler Paketgröße entspricht, gesendet werden. Die maximale Größe (Paketgröße) kann insbesondere aus den Sendezeitanforderungen vorrangig zu übertragender Pakete abgeleitet werden, d.h. die maximale Paketgröße wird so gewählt, dass die Sendezeitdauer eines Pakets mit maximaler Paketgröße kleiner als die Sendezeitanforderungen vorrangig zu übertragender Pakete ist.
  • Bevorzugt ist die wenigstens eine senderseitige Recheneinheit dazu eingerichtet, das Bearbeiten eines Eintrags der Sendequeue, der eine Sendepriorität kleiner als eine erste Vorrangpriorität aufweist, abzubrechen, wenn bzw. sobald ein Eintrag in der Sendequeue erzeugt wird, der eine Sendepriorität gleich oder größer als eine zweite Vorrangpriorität aufweist. Nachdem das Bearbeiten des Eintrags mit Sendepriorität kleiner als die erste Vorrangpriorität (d.h. mit niedriger Sendepriorität) abgebrochen bzw. unterbrochen wird, werden die Einträge der Sendequeue in der Reihenfolge entsprechend der Sendepriorität bearbeitet, es wird also der neu erzeugte Eintrag (mit hoher Sendepriorität) bearbeitet, d.h. der Eintrag mit Sendepriorität gleich oder größer als die zweite Vorrangpriorität wird bearbeitet, sobald er erzeugt wird bzw. direkt nach Abbrechen der Bearbeitung des Eintrags mit niedriger Sendepriorität. Der Eintrag, dessen Bearbeitung abgebrochen wird, wird nicht aus der Sendequeue entfernt, d.h. er wird zu einem späteren Zeitpunkt erneut bearbeitet. Die erste Vorrangpriorität kann kleiner oder gleich der zweiten Vorrangpriorität sein. Vorteilhafterweise wird durch diese Ausgestaltung eine möglichst schnelle Übertragung von Paketen mit hoher Priorität erreicht. Durch die erste und die zweite Vorrangpriorität werden die Sendeprioritäten im Allgemeinen in drei Prioritätsbereiche eingeteilt: einen höchsten Prioritätsbereich (Sendepriorität gleich oder größer als die zweite Vorrangpriorität), einen niedrigsten Prioritätsbereich (Sendepriorität kleiner als die erste Vorrangpriorität) und einen dazwischen gelegenen mittleren Prioritätsbereich (der entfällt, dass die erste gleich der zweiten Vorrangpriorität ist). Einträge mit Sendepriorität im höchsten Prioritätsbereich unterbrechen das Senden von Einträgen mit Sendepriorität im niedrigsten Prioritätsbereich, aber nicht das Senden von Einträgen mit Sendepriorität im mittleren Prioritätsbereich.
  • Alternativ zur vorherigen Ausgestaltung ist bevorzugt die wenigstens eine senderseitige Recheneinheit dazu eingerichtet, das Bearbeiten eines (ersten) Eintrags der Sendequeue abzubrechen, wenn bzw. sobald ein (zweiter) Eintrag in der Sendequeue erzeugt wird, der eine höhere Sendepriorität aufweist (als der erste Eintrag). Diese Ausgestaltung ist beispielsweise zweckmäßig, wenn vor allem Pakete mit einer niedrigsten Sendepriorität übertragen werden und relativ wenige Pakete mit höheren Sendeprioritäten. Der Effekt beider Ausgestaltungen ist, dass Pakete mit hoher Sendepriorität so schnell wie möglich übertragen werden.
  • Bevorzugt ist in der wenigstens einen senderseitigen Recheneinheit wenigstens einer der Sendepuffer als Trigger-Sendepuffer ausgewählt (d.h. einer oder mehrere der Sendepuffer wird als ein oder mehrere Trigger-Sendepuffer ausgewählt bzw. als solcher bezeichnet); wobei die wenigstens eine senderseitige Recheneinheit dazu eingerichtet ist, eine Triggernachricht zu senden, wenn oder nachdem ein Eintrag der Sendequeue bearbeitet wird, in dem ein Speicherabschnitt in dem wenigstens einen Trigger-Sendepuffer spezifiziert ist, wobei die Triggernachricht eine Information umfasst, die den jeweiligen Trigger-Sendepuffer anzeigt; und wobei die wenigstens eine empfängerseitige Recheneinheit dazu eingerichtet ist, wenn die Triggernachricht empfangen wird, ein Lesen des Lesepuffers auszulösen, der zu dem Trigger-Sendepuffer korrespondiert, der durch die in der Triggernachricht enthaltenen Information angezeigt wird. Durch diese Ausgestaltung kann sichergestellt werden, dass Pakete mit hoher Priorität auch empfängerseitig möglichst schnell gelesen werden. Weitergehend könnte empfängerseitig vorgesehen sein, dass nach dem Lesen eine Verarbeitung des Pakets ausgelöst wird. Das Senden der Triggernachricht kann auf verschiedene Weisen erfolgen. Insbesondere kann in der Schnittstellen-Spezifikation das Senden solcher Triggernachrichten vorgesehen sein. In der Schnittstellen-Spezifikation kann insbesondere vorgesehen sein, dass ein Interrupt bzw. eine Interrupt-Nachricht, die der Triggernachricht entspricht, erzeugt wird. Ebenso könnte eine gesonderte Datenleitung vorgesehen sein, über die die Triggernachricht gesendet wird. In beiden Fällen kann empfängerseitig insbesondere vorgesehen sein kann, dass die Triggernachricht sofort ausgewertet wird. Auch können entsprechende korrespondierende Speicherabschnitte (Triggernachricht-Speicherabschnitte) vorgesehen sein, wobei dann ein Eintrag in der Sendequeue mit entsprechend hoher Sendepriorität (d.h. so dass der Eintrag, der den Triggernachricht-Speicherabschnitt spezifiziert, baldmöglichst bzw. unmittelbar nach dem Eintrag, den die Triggernachricht betrifft, bearbeitet wird) erzeugt wird. In diesem Fall sollte empfängerseitig der empfängerseitige Triggernachricht-Speicherabschnitt zyklisch (z.B. in Zeitabständen, so dass Latenzzeitanforderungen eingehalten werden können) geprüft werden, ob eine Triggernachricht empfangen wurde. In allen Fällen kann empfängerseitig insbesondere vorgesehen sein kann, dass der Interrupt bzw. die Triggernachricht sofort ausgewertet wird.
  • Bevorzugt, wenn die Schnittstelle mehrere voneinander unabhängige Übertragungswege (bei seriellen Schnittstellen üblicherweise als „Lanes“ bezeichnet) aufweist, ist jeder Sendepuffer einem Übertragungsweg zugeordnet. Dies ist vorteilhaft, da einerseits eine oder mehrere der Lanes für vorrangig zu übertragende Pakete vorgesehen werden können und andererseits andere Lanes für größere, nicht zeitkritische Pakete, die mit möglichst hoher Überragungsrate übertragen werden sollen, vorgesehen werden können. Es können mehrere Unter-Sendequeues und/oder die parallele Bearbeitung von Einträgen, die Sendepuffern, die verschiedenen Übertragungswegen zugeordnet sind, vorgesehen sein.
  • Allgemeiner können Schritte des Verfahrens parallelisiert ausgeführt werden, soweit dies nicht zu inkonsistenten Zuständen der Sende- bzw. Empfangspuffer führt. Etwa können zwei (oder mehr) Pakete, die in verschiedenen Sendepuffern gespeichert werden, zumindest teilweise gleichzeitig gespeichert werden. Ebenso können verschiedene Empfangspuffer zumindest teilweise gleichzeitig gelesen werden. Dies ist von der Hardware der Recheneinheiten abhängig, z.B. ob eine Recheneinheit mehrere Prozessorkerne aufweist oder parallelisiert auf Speicher zugegriffen werden kann.
  • Bevorzugt ist in der wenigstens einen empfängerseitigen Recheneinheit wenigstens einer der Empfangspuffer als Bestätigungs-Empfangspuffer ausgewählt ist und in der wenigstens einen senderseitigen Recheneinheit wenigstens einer der Sendepuffer als Bestätigungs-Sendepuffer ausgewählt ist, so dass dieser zum wenigstens einen Bestätigungs-Empfangspuffer korrespondiert (d.h. Bestätigungs-Empfangspuffer und Bestätigungs-Sendepuffer sind Bezeichnungen für bestimmte der Empfangspuffer bzw. der Sendepuffer, für die das Verfahren entsprechend dieser bevorzugten Ausgestaltung implementiert wird; es können ein oder mehrere Empfangs- und Sendpuffer ausgewählt werden). Die wenigstens eine empfängerseitige Recheneinheit und/oder die Schnittstelle ist vorzugsweise dazu eingerichtet, für jeden empfangenen Speicherabschnitt, der in dem wenigstens einen Bestätigungs-Empfangspuffer gespeichert wird, zu prüfen, ob der Speicherabschnitt fehlerfrei empfangen wurde, und eine Bestätigungsnachricht an die wenigstens eine senderseitige Recheneinheit zu senden, die anzeigt, ob oder ob nicht der Speicherabschnitt fehlerfrei empfangen wurde. Die wenigstens eine senderseitige Recheneinheit ist bevorzugt dazu eingerichtet, beim Bearbeiten eines Eintrags der Sendequeue, der einen Speicherabschnitt in dem wenigstens einen Bestätigungs-Sendepuffer spezifiziert, nach dem Senden zu prüfen, ob die Bestätigungsnachricht vorliegt, und, wenn die Bestätigungsnachricht den fehlerfreien Empfang nicht bestätigt oder keine Bestätigungsnachricht vorliegt und wenn eine maximale Anzahl von Sendewiederholungen nicht erreicht ist, den im Eintrag spezifizierten Speicherabschnitt erneut zu senden, und wenn die Bestätigungsnachricht den fehlerfreien Empfang bestätigt, den Eintrag aus der Sendequeue (der senderseitigen Recheneinheit) zu entfernen (und unmittelbar darauf mit der Bearbeitung eines anderen Eintrags, d.h. des entsprechend der Sendepriorität nächsten noch nicht bearbeiteten oder noch nicht in Bearbeitung befindlichen Eintrags, fortzufahren).
  • Diese Ausgestaltungen sind zweckmäßig, da so sichergestellt werden kann, dass Pakete auch tatsächlich übertragen werden, bzw., dass anderenfalls eine Fehlermeldung erzeugt werden kann. Das Prüfen, ob die Bestätigungsnachricht vorliegt, erfolgt vorzugsweise nach einer gewissen Wartezeit, die z.B. einer erwarteten Zeit bzw. Latenzzeit entspricht, bis die Bestätigungsnachricht übermittelt sein sollte. Dieses Abwarten der Wartezeit kann als Teil des Prüfens angesehen werden. Die Übertragung der Bestätigungsnachricht erfolgt vorzugsweise über einen von den Sende- und Empfangspuffern unabhängigen Übertragungskanal. Insbesondere kann das Übermitteln bzw. Senden von Bestätigungsnachrichten (,Ack`, Acknowledgment) in der Schnittstellen-Spezifikation der verwendeten Schnittstelle vorgesehen sein. Auch könnte beispielsweise eine gesonderte Datenleitung vorgesehen werden.
  • Weiter bevorzugt ist die wenigstens eine senderseitige Recheneinheit dazu eingerichtet ist, wenn die Bestätigungsnachricht den fehlerfreien Empfang nicht bestätigt oder keine Bestätigungsnachricht vorliegt und wenn die maximale Anzahl von Sendewiederholungen erreicht ist, die Bearbeitung von Einträgen der Sendequeue zu unterbrechen, und eine Neuinitialisierung (bzw. Reset, bzw. Neustart) der beiden Recheneinheiten, der wenigstens einen empfängerseitigen Recheneinheit, der Schnittstelle, der senderseitigen Sendequeue, der empfängerseitigen Sendequeue, der senderseitigen Sendepuffer und/oder der empfängerseitigen Empfangspuffer zu veranlassen („und/oder“ soll hier so verstanden werden, dass eine oder eine Kombination mehrerer dieser Möglichkeiten gewählt wird). Neuinitialisierung der Sendequeue bedeutet insbesondere, dass die Einträge gelöscht werden. Neuinitialisierung von Sende-/Empfangspuffern bedeutet insbesondere, dass diese geleert werden bzw. als leer angesehen werden (d.h. Zeiger die innerhalb eines Ringpuffers auf Anfang und Ende des befüllten Ringpuffer-Bereichs zeigen, zeigen auf die gleiche Adresse, z.B. werden Lese- und Schreibindizes zurückgesetzt). Neuinitialisierung der Sendequeues und der Sende-/Empfangspuffer kann als Neubeginn des Verfahrens zur paketorientierten Datenkommunikation angesehen werden. Senderseitig sollte optional eine Fehlerbenachrichtigung (vorzugsweise vor Neuinitialisierung) an höhere Protokollschichten, bzw. die Anwendungs-Programme, die die Pakete an die andere Recheneinheit übertragen wollen, gesendet werden. Unabhängig davon kann weiter bevorzugt für den Fall, dass die Neuinitialisierung der wenigstens einen empfängerseitigen Recheneinheit und/oder der Schnittstelle veranlasst wird (aber nicht der senderseitigen Recheneinheit), nach der Neuinitialisierung mit der Bearbeitung von Einträgen der Sendequeue der wenigstens einen senderseitigen Recheneinheit fortgefahren wird.
  • Weiter bevorzugt ist in der wenigstens einen empfängerseitigen Recheneinheit wenigstens ein empfängerseitiger Bestätigungs-Speicherabschnitt vorgesehen und ist in der wenigstens einen senderseitigen Recheneinheit wenigstens ein senderseitiger Bestätigungs-Speicherabschnitt vorgesehen, in den der empfängerseitige Bestätigungs-Speicherabschnitt durch die Schnittstelle übertragen wird. Vorzugsweise ist die wenigstens eine empfängerseitige Recheneinheit dazu eingerichtet, die Bestätigungsnachricht in dem empfängerseitigen Bestätigungs-Speicherabschnitt zu speichern, und in der Sendequeue (der empfängerseitigen Recheneinheit) einen Eintrag zu erzeugen, in dem der empfängerseitige Bestätigungs-Speicherabschnitt spezifiziert wird. Vorzugsweise ist die wenigstens eine senderseitige Recheneinheit dazu eingerichtet, den senderseitigen Bestätigungs-Speicherabschnitt zu lesen, um zu prüfen, ob die Bestätigungsnachricht vorliegt.
  • Weiter vorzugsweise ist die wenigstens eine empfängerseitige Recheneinheit dazu eingerichtet, dem Eintrag, in dem der empfängerseitige Bestätigungs-Speicherabschnitt spezifiziert wird, eine Sendepriorität entsprechend der Priorisierung des Bestätigungs-Empfangspuffers oder eine höchste Sendepriorität zuzuweisen. Diese Ausgestaltung ist beispielsweis zweckmäßig, wenn in der Schnittstellen-Spezifikation keine Bestätigungsnachrichten vorgesehen sind. Um zu verhindern, dass eine Blockade (Deadlock) auftritt, wenn beide Recheneinheiten gleichzeitig auf Bestätigungsnachrichten warten, deren Einträge in der Sendequeue jedoch nicht bearbeitet werden, da die andere Recheneinheit ebenfalls auf ein Bestätigungsnachricht wartet, sollte für die Übertragung der Bestätigungs-Speicherabschnitte ein gesonderter Übertragungsweg vorgesehen sein.
  • Weiter bevorzugt ist die wenigstens eine senderseitige Recheneinheit dazu eingerichtet ist, während des Prüfens, ob die Bestätigungsnachricht vorliegt, mit dem Bearbeiten des nächsten Eintrags der Sendequeue zu beginnen. Hiermit wird die verfügbare Bandbreite erhöht. Es wird ebenfalls das Problem einer gegenseitigen Blockade gelöst, insbesondere dann, wenn die Einträge, in denen der empfängerseitige Bestätigungs-Speicherabschnitt spezifiziert wird, die höchste Sendepriorität zugewiesen wird.
  • Bevorzugt sind in der wenigstens einen senderseitigen Recheneinheit für jeden Sendepuffer ein senderseitiger Schreibindex-Speicherabschnitt und ein senderseitiger Leseindex-Speicherabschnitt vorgesehen, und in der wenigstens einen empfängerseitigen Recheneinheit sind für jeden Empfangspuffer ein empfängerseitiger Schreibindex-Speicherabschnitt und ein empfängerseitiger Leseindex-Speicherabschnitt vorgesehen. Dabei ist die wenigstens eine senderseitige Recheneinheit bevorzugt dazu eingerichtet, beim Speichern eines Pakets in einem der Sendepuffer entsprechend der Klassifizierung, basierend auf einem Schreibindex, der dem Sendepuffer zugeordnet ist und der anzeigt, bis zu welcher Speicheradresse Pakete in den Sendepuffer gespeichert sind, und einem Leseindex, der in dem senderseitigen Leseindex-Speicherabschnitt, der dem Sendepuffer zugeordnet ist, gespeichert ist, unter Berücksichtigung der Ringpufferstruktur zu prüfen, ob ausreichend Speicherplatz für das Paket im Sendepuffer vorhanden ist. Wenn ausreichend Speicherplatz vorhanden ist, wird beginnend an einer Speicheradresse nach der durch den Schreibindex angezeigten Speicheradresse das Paket in den Sendepuffer geschrieben, der Schreibindex aktualisiert, so dass dieser anzeigt, bis zu welcher Speicheradresse das geschriebene Paket im Sendepuffer gespeichert ist, und der aktualisierte Schreibindex in dem senderseitigen Schreibindex-Speicherabschnitt, der dem Sendepuffer zugeordnet ist, gespeichert, und in der Sendequeue wird ein Eintrag erzeugt, in dem der senderseitige Schreibindex-Speicherabschnitt spezifiziert wird. Dabei ist die wenigstens eine empfängerseitige Recheneinheit dazu eingerichtet, beim Lesen eines Pakets aus einem der Empfangspuffer basierend auf einem dem Empfangspuffer zugeordneten Leseindex, der anzeigt, bis zu welcher Speicheradresse zuletzt ein Paket aus dem Empfangspuffer gelesen wurde, und einem Schreibindex, der in dem empfängerseitigen Schreibindex-Speicherabschnitt, der dem Empfangspuffer zugeordnet ist, gespeichert ist, zu prüfen, ob ein noch nicht gelesenes Paket im Empfangspuffer vorhanden ist. Wenn ein noch nicht gelesenes Paket vorhanden ist, wird beginnend an einer Speicheradresse nach der durch den Leseindex angezeigten Speicheradresse unter Berücksichtigung der Ringpufferstruktur das Paket aus dem Empfangspuffer gelesen, der Leseindex aktualisiert, so dass dieser anzeigt, bis zu welcher Speicheradresse das gelesene Paket aus dem Empfangspuffer gelesen wurde, und der aktualisierte Leseindex in dem empfängerseitigen Leseindex-Speicherabschnitt, der dem Empfangspuffer zugeordnet ist gespeichert, und in der (empfängerseitigen) Sendequeue ein Eintrag erzeugt, in dem der empfängerseitigen Leseindex-Speicherabschnitt spezifiziert ist. Auf diese Weise kann sichergestellt werden, dass senderseitig kein noch nicht gelesener Speicherabschnitt in einem Sendepuffer überschrieben wird und empfängerseitig kein Speicherabschnitt in einem Empfangspuffer gelesen wird, in den noch keine Paketdaten geschrieben wurden oder in dem sich noch alte (bereits gelesene) Paketdaten befinden.
  • Weiter bevorzugt ist die wenigstens eine senderseitige Recheneinheit dazu eingerichtet, dem Eintrag, in dem der senderseitige Schreibindex-Speicherabschnitt spezifiziert wird, die Sendepriorität entsprechend der Priorisierung des entsprechenden Sendepuffers zuzuweisen, wobei der Eintrag so in der Sendequeue erzeugt wird, dass er erst nach dem wenigstens einen Eintrag, der für das entsprechende Paket erzeugt wurde, bearbeitet wird. Dabei ist die wenigstens eine empfängerseitige Recheneinheit dazu eingerichtet, dem Eintrag, in dem der empfängerseitige Leseindex-Speicherabschnitt spezifiziert wird, die Sendepriorität entsprechend der Priorisierung des entsprechenden Empfangspuffers zuzuweisen.
  • Insbesondere wird der Eintrag für den Schreibindex-Speicherabschnitt erst erzeugt, nachdem der wenigstens eine Eintrag für das Paket erzeugt wurde. Im Prinzip ist es auch möglich, dem Eintrag für den Schreibindex-Speicherabschnitt eine niedrigere Sendepriorität zuzuweisen als dem Sendepuffer, um sicherzustellen, dass der Schreibindex-Speicherabschnitt erst nach dem Paket selbst übertragen wird.
  • Bevorzugt sind in der wenigstens einen empfängerseitigen Recheneinheit für jeden Empfangspuffer ein empfängerseitiger Anfangsadress-Speicherabschnitt und ein empfängerseitiger Endadress-Speicherabschnitt vorgesehen, und in der wenigstens einen senderseitigen Recheneinheit für jeden Sendepuffer ein senderseitiger Anfangsadress-Speicherabschnitt und ein senderseitiger Endadress-Speicherabschnitt vorgesehen, Dabei ist die wenigstens eine empfängerseitige Recheneinheit dazu eingerichtet, bei einem Start oder einer Initialisierung bzw. Neuinitialisierung (Neustart), für jeden Empfangspuffer einen Speicherbereich von einer Anfangs-Speicheradresse bis zu einer End-Speicheradresse festzulegen, die Anfangs-Speicheradresse in den empfängerseitigen Anfangsadress-Speicherabschnitt und die End-Speicheradresse in den empfängerseitigen Endadress-Speicherabschnitt zu schreiben, den empfängerseitigen Anfangsadress-Speicherabschnitt und den empfängerseitigen Endadress-Speicherabschnitt über die Schnittstelle in den senderseitigen Anfangsadress-Speicherabschnitt und den sendeseitigen Endadress-Speicherabschnitt zu übertragen. Dabei ist die wenigstens eine senderseitige Recheneinheit dazu eingerichtet, beim Senden von Speicherabschnitten der Sendepuffer, insbesondere beim Bearbeiten von Einträgen der Sendequeue, eine Adressberechnung basierend auf der im senderseitigen Anfangsadress-Speicherabschnitt empfangenen Anfangs-Speicheradresse und/oder basierend auf der im senderseitigen Endadress-Speicherabschnitt empfangenen End-Speicheradresse durchzuführen. Dies ermöglicht eine (Neu- )Initialisierung des Systems, ohne dass die Speicherbereiche für die Empfangspuffer von vornherein unveränderlich festgelegt sein müssten, d.h. die Speicherbereiche können dynamisch initialisiert werden. Ein Start oder eine Initialisierung bzw. eine Neuinitialisierung (Neustart) schließt insbesondere eine (Neu-)Initialisierung der Sendequeues und der Sende- und Empfangspuffer ein.
  • Allgemeiner werden bei einem Start oder einer (Neu-)Initialisierung insbesondere Initialisierungsnachrichten bzw. Pings über die Schnittstelle und/oder über gesonderte Datenleitung zwischen den Recheneinheiten ausgetauscht. Diese ermöglichen es den Recheneinheiten zu erkennen, ob oder inwieweit die jeweilig andere Recheneinheit bereit ist, das Verfahren paketorientierten Datenkommunikation auszuführen bzw. mit dessen Ausführung zu beginnen. Initialisierungsnachrichten können zusätzlich auch Konfigurationsdaten enthalten, so dass eine dynamische Initialisierung bzw. Konfiguration ermöglicht wird.
  • Ein erfindungsgemäßes System umfasst zwei Recheneinheiten, die mittels einer Schnittstelle verbunden sind, und ist, insbesondere programmtechnisch, dazu eingerichtet, alle Verfahrensschritte eines erfindungsgemäßen Verfahrens durchzuführen.
  • Eine erfindungsgemäße Recheneinheit, z.B. in einem Steuergerät eines Kraftfahrzeugs umfasst, ist, insbesondere programmtechnisch, dazu eingerichtet, dies senderseitigen und/oder empfängerseitigen Schritte eines erfindungsgemäßen Verfahrens durchzuführen. D.h. die erfindungsgemäße Recheneinheit ist dazu eingerichtet, senderseitig und/oder empfängerseitig zu wirken.
  • Auch die Implementierung eines erfindungsgemäßen Verfahrens in Form eines Computerprogramms oder Computerprogrammprodukts mit Programmcode zur Durchführung aller Verfahrensschritte ist vorteilhaft, da dies besonders geringe Kosten verursacht, insbesondere wenn ein ausführendes Steuergerät noch für weitere Aufgaben genutzt wird und daher ohnehin vorhanden ist. Schließlich ist ein maschinenlesbares Speichermedium vorgesehen mit einem darauf gespeicherten Computerprogramm wie oben beschrieben. Geeignete Speichermedien bzw. Datenträger zur Bereitstellung des Computerprogramms sind insbesondere magnetische, optische und elektrische Speicher, wie z.B. Festplatten, Flash-Speicher, EEPROMs, DVDs u.a.m. Auch ein Download eines Programms über Computernetze (Internet, Intranet usw.) ist möglich. Ein solcher Download kann dabei drahtgebunden bzw. kabelgebunden oder drahtlos (z.B. über ein WLAN-Netz, eine 3G-, 4G-, 5G- oder 6G-Verbindung, etc.) erfolgen.
  • Weitere Vorteile und Ausgestaltungen der Erfindung ergeben sich aus der Beschreibung und der beiliegenden Zeichnung.
  • Die Erfindung ist anhand von Ausführungsbeispielen in der Zeichnung schematisch dargestellt und wird im Folgenden unter Bezugnahme auf die Zeichnung beschrieben.
  • Figurenliste
    • 1 zeigt ein System mit zwei Recheneinheiten, zwischen denen eine paketorientierte Datenkommunikation implementiert ist, gemäß einer bevorzugten Ausführungsform der Erfindung.
    • 2 zeigt einen Sendepuffer und einen korrespondierenden Empfangspuffer sowie weitere senderseitige und empfängerseitige Speicherabschnitte.
    • 3 zeigt in einer senderseitigen Recheneinheit ausgeführte Verfahrensschritte gemäß einer bevorzugten Ausführungsform der Erfindung.
    • 4 zeigt in einer empfängerseitigen Recheneinheit ausgeführte Verfahrensschritte gemäß einer bevorzugten Ausführungsform der Erfindung.
    • 5 zeigt das Bearbeiten von Einträgen der Sendequeue einer senderseitigen Recheneinheit gemäß einer bevorzugten Ausführungsform der Erfindung.
  • Ausführungsform(en) der Erfindung
  • 1 zeigt ein System mit zwei Recheneinheiten, zwischen denen eine paketorientierte Datenkommunikation implementiert ist, gemäß einer bevorzugten Ausführungsform der Erfindung. Die in den Recheneinheiten dargestellten Elemente betreffen sowohl Hardware- als auch Softwareelemente.
  • Dargestellt sind eine erste Recheneinheit 1 und eine zweite Recheneinheit 2, die über eine speicherbasierte Schnittstelle 4_1, 4_2 (die beispielsweise Transmitter in jeder der Recheneinheiten umfasst), über die Daten kommuniziert werden können, drahtgebunden oder drahtlos miteinander verbunden sind. Die Schnittstelle ist dazu eingerichtet, Speicherabschnitte, z.B. charakterisiert durch jeweilige aufeinander abzubildende Speicheradressen, in Speicherabschnitte der jeweilig anderen Recheneinheit zu übertragen. Dazu können insbesondere Ausgangsspeicheradressen (in der Recheneinheit, aus der die Daten übertragen werden sollen) und Zielspeicheradressen (in der Recheneinheit, in die die Daten übertragen werden sollen) angegeben werden. Die Angabe kann beispielsweise (abhängig von der Spezifikation der Schnittstelle) jeweils dergestalt erfolgen, dass eine Anfangsspeicheradresse und eine Endspeicheradresse angegeben wird (zwischen den sich die zusendenden Daten senderseitig befinden bzw. in die die Daten empfängerseitig geschrieben werden), oder, dass eine Anfangsspeicheradresse und eine Länge des zu übertragenden Speicherabschnitts angegeben werden. Diese Angaben werden in jeder der Recheneinheiten mittels einer jeweiligen Sendequeue 6_1, 6_2 verwaltet, deren Einträge die zu sendenden Speicherabschnitte spezifizieren und denen eine Reihenfolge bzw. Sendepriorität zugewiesen ist. Die Einträge werden entsprechend der Sendepriorität (d.h. in einer Reihenfolge entsprechend der Sendepriorität) bearbeitet und über die Schnittstelle übertragen.
  • In jeder Recheneinheit werden beispielsweise mehrere Anwendungs-Computerprogramme 8_1, 8_2 (Anwendungssoftware) ausgeführt, die mittels des erfindungsgemäßen Verfahrens paketorientiert Daten mit in der jeweilig anderen Recheneinheit ausgeführten Anwendungsprogrammen kommunizieren können. Um Daten von der ersten zur zweiten Recheneinheit zu übertragen, sind in der ersten Recheneinheit 1 mehrere (hier beispielsweise drei) Sendepuffer 50_1 vorgesehen, und in der zweiten Recheneinheit 2 mehrere zu den Sendepuffern korrespondierende Empfangspuffer 52_2 (d.h. gleiche Anzahl, wobei ein Empfangspuffer die gleiche Größe aufweist wie der Sendepuffer, zu dem er korrespondiert). Ebenso sind, um Daten von der zweiten zur ersten Recheneinheit zu übertragen, in der zweiten Recheneinheit 2 mehrere (hier beispielsweise ebenfalls drei) Sendepuffer 50_2 vorgesehen, und in der ersten Recheneinheit 1 mehrere zu den Sendepuffern korrespondierende Empfangspuffer 52_1. Die Sende- und Empfangspuffer sind typischerweise in flüchtigen Speicherelementen der jeweiligen Recheneinheiten vorgesehen, wobei prinzipiell auch die Verwendung von nichtflüchtigen Speicherelementen denkbar ist.
  • Speicherabschnitte der Sendepuffer 50_1, 50_2 werden, entsprechend der Korrespondenz eines Sendepuffers mit einem Empfangspuffer, mittels der Schnittstelle in entsprechende Speicherabschnitte der Empfangspuffer 52_2, 52_1 übertragen. Neben den in 1 gezeigten Sende- und Empfangspuffern können noch weitere Speicherabschnitte vorgesehen sein, die zur Implementierung des Verfahrens verwendet und über die Schnittstelle übertragen werden. Hierzu wird insbesondere auf 2, in der ein Sendepuffer und ein dazu korrespondierender Empfangspuffer dargestellt sind, verwiesen.
  • Zur Implementierung des Verfahrens wird in jeder der Recheneinheiten wenigstens ein Verwaltungs-Computerprogramm 10_1, 10_2 ausgeführt. Beispielhaft ist in der Figur der Übertragungsweg eines Pakets von einem Verwaltungs-Computerprogramm 10_1, das in der ersten Recheneinheit 1 ausgeführt wird, zu einem Verwaltungs-Computerprogramm 10_2, das in der ersten Recheneinheit 2 ausgeführt wird, mittels Pfeilen skizziert. Zu übertragende Pakete der Anwendungs-Computerprogramme 8_1, 8_2 werden von diesen an das Verwaltung-Computerprogramm weitergegeben (Pfeil 20) und vom Verwaltungs-Computerprogramm in den Sendepuffern gespeichert (Pfeil 22).
  • Zu übertragende Pakete weisen eine Klassifizierung auf, z.B. entsprechend einem Protokoll (Ethernet, CAN, ...) oder einer Dringlichkeit, wobei Pakete entsprechend ihrer Klassifizierung in einem der Sendepuffer gespeichert werden. Die Sendepuffer weisen wiederum eine Priorisierung auf (es wird davon ausgegangen, dass die Priorisierung wenigstens zweier Sendepuffer unterschiedlich ist). Für jedes in einem Sendepuffer gespeicherte bzw. geschriebene Paket wird nach und/oder parallel zum Speichern wenigstens ein Eintrag in dem Sendpuffer erzeugt (Pfeil 24), in dem wenigstens ein Teil-Speicherabschnitt des Paket-Speicherabschnitts des Pakets im Sendepuffer spezifiziert ist. Dem wenigstens einen Eintrag wird eine Sendepriorität zugewiesen, die dem jeweiligen Sendepuffer bzw. dessen Priorisierung entspricht. Das Erzeugen von Einträgen in der Sendequeue und/oder das Speichern von Paketen in den Sendepuffern erfolgt entsprechend der Reihenfolge der Priorisierung der jeweiligen Sendepuffer, soweit mehrere Pakete gleichzeitig durch das Verwaltungs-Computerprogramm verarbeitet werden und eine parallele Verarbeitung nicht möglich ist. Bezogen auf einen einzelnen Sendepuffer erfolgt das Erzeugen von Einträgen vorzugsweise entsprechend der Ringpufferstruktur.
  • Die so erzeugten Einträge der Sendequeue werden in einer Reihenfolge entsprechend der Sendepriorität der Einträge bearbeitet (Pfeil 26), wobei jeweils über die Schnittstelle der spezifizierte Speicherabschnitt in den entsprechenden Speicherabschnitt der anderen Recheneinheit übertragen bzw. gesendet wird (Pfeil 28). Insbesondere werden dabei auch Pakete in die Empfangspuffer, die zu den Sendepuffern korrespondieren, übertragen. Empfangspuffer weisen die gleiche Priorisierung auf wie der jeweilig korrespondierende Sendepuffer. In den Empfangspuffern gespeicherte Pakete werden auf Seiten des Empfängers gelesen (Pfeil 30; vom jeweiligen Verwaltungs-Computerprogramm) und an das Anwendungs-Computerprogramm, für das das jeweilige Paket gedacht ist (erkennbar etwa an einem Eintrag in einem Paketheader), weitergegeben (Pfeil 32). Die Empfangspuffer werden in einer Reihenfolge entsprechend der Priorisierung der Empfangspuffer gelesen. Innerhalb einzelner Empfangspuffer erfolgt das Lesen wieder vorzugsweise entsprechend der Ringpufferstruktur.
  • 2 zeigt einen Sendepuffer 50 und einen korrespondierenden Empfangspuffer 52 sowie weitere senderseitige und empfängerseitige Speicherabschnitte. Der Sendepuffer 50 und der Empfangspuffer 52 sind als Ringpuffer gleicher Größe realisiert. Konkret kann ein Ringpuffer beispielsweise in einem Speicherbereich, der sich von einer niedrigsten bis zu einer höchsten Speicheradresse erstreckt, realisiert werden, wobei Speicherzugriffe (Schreiben, Lesen) in aufsteigender Speicheradresse-Reihenfolge erfolgen, und sobald bei Speicherzugriffen die höchste Speicheradresse erreicht wird, mit der niedrigsten Speicheradresse fortgefahren wird („Warparound“). Dies wird als Ringpufferstruktur bezeichnet.
  • Speicherabschnitte, d.h. Adressabschnitte, z.B. von einer Anfangs- bis zu einer Endadresse oder eine gewisse Anzahl von Bytes beginnend bei der Anfangsadresse, des Senderingpuffers 50 können mittels der Schnittstelle in korrespondierende Speicherabschnitte des Empfangspuffers 52 übertragen werden (Pfeil 54).
  • Im gezeigten Beispiel sind Pakete bis zu einer Speicheradresse, die durch einen Schreibindex 56 angezeigt wird, in dem Sendepuffer 50 gespeichert. Der Schreibindex 56 wird in einem senderseitigen Schreibindex-Speicherabschnitt 58 gespeichert. Der senderseitige Schreibindex-Speicherabschnitt 58 wird über die Schnittstelle in einen korrespondierenden empfängerseitigen Schreibindex-Speicherabschnitt 60 übertragen (Pfeil 62), so dass der darin gespeicherte empfängerseitige Schreibindex 64 die Speicheradresse anzeigt, bis zu der im Empfangspuffer 52 Pakete gespeichert sind. Die empfängerseitige Recheneinheit kann also anhand dieses empfängerseitigen Schreibindex 64 bestimmen, bis zu welcher Speicheradresse Pakete im Empfangspuffer gespeichert sind, d.h. bis zu welcher Speicheradresse Pakete aus dem Empfangspuffer gelesen werden können.
  • Empfängerseitig wird ein Leseindex 66, der anzeigt, bis zu welcher Speicheradresse (im Empfangspuffer) Pakete aus dem Empfangspuffer durch die empfängerseitige Recheneinheit gelesen wurden, in einem (empfängerseitigen) Leseindex-Speicherabschnitt 68 gespeichert. Der empfängerseitige Leseindex-Speicherabschnitt 68 wird über die Schnittstelle in einen korrespondierenden senderseitigen Leseindex-Speicherabschnitt 70 übertragen (Pfeil 72), so dass der darin gespeicherte senderseitige Leseindex 74 die entsprechende Speicheradresse im Sendepuffer 50 anzeigt, bis zu welcher Pakete vom Empfänger gelesen wurden. Anhand des senderseitigen Leseindex 74 kann die senderseitige Recheneinheit bestimmen, bis zu welcher Speicheradresse sie neue Pakete in den Sendepuffer schreiben kann. Der Speicherbereich von Sende- bzw. Empfangspuffer, in dem sich zu übertragende aber noch nicht gelesene Pakete befinden, ist jeweils schraffiert in der Figur dargestellt.
  • Insgesamt kann durch die Übertragung des Schreibindex und des Leseindex mittels der Schreibindex-Speicherabschnitte und der Leseindex-Speicherabschnitte die Konsistenz zwischen dem Sende- und Empfangspuffer sichergestellt werden.
  • Zusätzlich können optional (z.B. falls in der Schnittstelle die Übermittlung von Bestätigungsnachrichten nicht spezifiziert bzw. implementiert ist) ein empfängerseitiger Bestätigungs-Speicherabschnitt 76 und ein korrespondierender senderseitiger Bestätigungs-Speicherabschnitt 78 vorgesehen sein. In dem empfängerseitiger Bestätigungs-Speicherabschnitt 76 kann die empfängerseitige Recheneinheit für jeden (oder ausgewählte) im Empfangspuffer empfangenen Speicherabschnitt eine Betätigungsnachricht schreiben, die anzeigt, ob oder ob nicht der Speicherabschnitt korrekt bzw. fehlerfrei empfangen wurde. Dazu können etwa Paritätsbits oder Prüfsummen, die zusammen mit den Daten des Speicherabschnitts gesendet werden, verwendet werden. Der empfängerseitige Bestätigungs-Speicherabschnitt 76 wird durch die Schnittstelle in den senderseitigen Bestätigungs-Speicherabschnitt 78 übertragen (Pfeil 80). Die senderseitige Recheneinheit kann also feststellen, ob der Speicherabschnitt fehlerfrei empfangen wurde, und, wenn dies nicht der Fall ist, ein erneutes Senden veranlassen, wobei die maximale Anzahl von Sendeversuchen begrenzt sein kann. Wenn der Speicherabschnitt fehlerfrei empfangen wurde, kann beispielsweise mit dem nächsten zu übertragenden Speicherabschnitt fortgefahren werden. Der empfängerseitige Bestätigungs-Speicherabschnitt 76 und der senderseitige Bestätigungs-Speicherabschnitt 78 können dem gezeigten Sendepuffer und Empfangspuffer zugeordnet sein oder mehreren oder allen miteinander korrespondierenden Sende- und Empfangspuffern zugeordnet sein. Es können ebenso mehrere empfängerseitige Bestätigungs-Speicherabschnitte und senderseitige Bestätigungs-Speicherabschnitte vorgesehen sein, insbesondere, wenn mehrere Übertragungswege der Schnittstelle verwendet werden und/oder eine parallele Bearbeitung von Einträgen der Sendequeue erfolgt.
  • Im Allgemeinen sind beim Start des Systems bzw. der Recheneinheiten oder bei einem Neustart einer der Recheneinheiten die Speicherbereiche (Adressbereiche), in denen sich die Empfangspuffer empfängerseitig befinden, senderseitig nicht bekannt. Daher ist bevorzugt für jeden Empfangspuffer ein empfängerseitiger Anfangsadress-Speicherabschnitt 82 und ein empfängerseitiger Endadress-Speicherabschnitt 84 vorgesehen, in die die Recheneinheit beim Start/Neustart die Anfangs-Speicheradresse und die End-Speicheradresse, zwischen denen sich der jeweilige Empfangspuffer empfängerseitig befindet, schreibt. Der Inhalt dieser Speicherabschnitte 82, 84 wird anschließend über die Schnittstelle in einen senderseitigen Anfangsadress-Speicherabschnitt 90 und einen senderseitigen Endadress-Speicherabschnitt 92 übertragen 86, 88, wobei auch hier (senderseitig) für jeden Empfangspuffer bzw. den korrespondierenden Sendepuffer ein Anfangsadress-Speicherabschnitt 90 und ein Endadress-Speicherabschnitt 92 vorgesehen sind. Die senderseitige Recheneinheit kann so Speicheradressen der Sendepuffer auf Speicheradressen der korrespondierenden Empfangspuffer abbilden und die Schnittstelle veranlassen, durch Speicheradressbereiche charakterisierte Speicherabschnitte direkt in die entsprechenden empfängerseitigen Speicherabschnitte zu übertragen bzw. zu senden.
  • 3 zeigt in einer senderseitigen Recheneinheit ausgeführte Verfahrensschritte beim Senden eines zu übertragenden Pakets gemäß einer bevorzugten Ausführungsform. Für das zu übertragendes Paket wird in Schritt 310 zunächst geprüft, ob ausreichend Speicherplatz im Sendepuffer vorhanden ist, so dass keine noch nicht gelesenen Pakete überschrieben werden. Es wird also anhand des Schreibindex und des im Leseindex-Speicherabschnitt empfangenen Leseindex geprüft (unter Berücksichtigung der Ringpufferstruktur), ob ausreichend Speicherplatz vorhanden ist. Der verfügbare Speicherplatz erstreckt sich von der Speicheradresse, die auf die Speicheradresse folgt, die durch den Schreibindex angezeigt wird, bis zu der Speicheradresse, die durch den Leseindex angezeigt wird. Zu übertragende Pakete weisen eine Klassifizierung auf, wobei Pakete entsprechend ihrer Klassifizierung in einem der Sendepuffer gespeichert werden. Beim Prüfen, ob ausreichend Speicherplatz im Sendepuffer vorhanden ist, wird selbstverständlich derjenige Sendepuffer geprüft, der der entsprechend der Klassifizierung des Pakets zu dessen Übertragung vorgesehen ist.
  • Wenn ausreichend Speicherplatz vorhanden ist, wird in Schritt 320 das Paket beginnend nach der durch den Schreibindex angezeigten Speicheradresse in den Sendepuffer, der für das Paket entsprechend dessen Klassifizierung vorgesehen ist, geschrieben. Wenn nicht ausreichend Speicherplatz vorhanden ist, kann vorzugsweise das Paket verworfen werden und optional eine Fehlermeldung an die Einheit (Anwendungssoftware), die das Paket übertragen möchte, übermittelt werden, oder ebenso vorzugsweise nach einer gewissen Zeit erneut geprüft werden, ob ausreichend Speicherplatz vorhanden ist.
  • Anschließend wird in Schritt 330 der Schreibindex aktualisiert, so dass dieser die Speicheradresse im Sendepuffer anzeigt, bis zu der das zu übertragende Paket gespeichert wurde. Der aktualisierte Schreibindex wird im Schreibindex-Speicherabschnitt gespeichert.
  • In Schritt 340 (der auch vor oder zumindest teilweise parallel zu Schritt 330 erfolgen kann, etwa wenn mehrere Prozessorkerne vorhanden sind) wird wenigstens ein Eintrag für das zu übertragende, im Sendepuffer gespeicherte Paket in der Sendequeue erzeugt. Hierbei kann ein einzelner Eintrag vorgesehen sein, in dem der gesamte Speicherabschnitt (genannt Paket-Speicherabschnitt), in dem das Paket im Sendepuffer gespeichert ist, spezifiziert ist. Auch können mehrere Einträge vorgesehen sein, in denen jeweils Teile des Paket-Speicherabschnitts als (Teil-)Speicherabschnitte spezifiziert sind. Alle Teile zusammen sollten selbstverständlich den gesamten Paket-Speicherabschnitt abdecken. Mehrere Einträge können insbesondere dann verwendet werden, wenn eine maximale Größe zu sendender Speicherabschnitte nicht überschritten werden soll, etwa, um Latenzzeitanforderungen einzuhalten. Dem wenigstens einen Eintrag wird eine Sendepriorität zugewiesen, die durch die Priorisierung des Sendepuffers, in dem das Paket gespeichert ist, bestimmt ist.
  • In Schritt 350 wird ein Eintrag in der Sendequeue erzeugt, der den Schreibindex-Speicherabschnitt spezifiziert. Diesem Eintrag wird eine Sendepriorität entsprechend der Priorisierung des Sendepuffers zugewiesen. Dies erfolgt so, dass sichergestellt wird, dass der den Schreibindex-Speicherabschnitt betreffende Eintrag erst nach dem wenigstens einen Eintrag, der das Paket bzw. den entsprechenden Paket-Speicherabschnitt betrifft, gesendet wird. Vorzugsweise erhält der den Schreibindex-Speicherabschnitt betreffende Eintrag die gleiche Sendepriorität wie der wenigstens eine das Paket betreffende Eintrag, wird allerdings später in die Sendequeue eingestellt, wenn Einträge mit gleicher Sendepriorität der Sendequeue entsprechend der zeitlichen Reihenfolge ihres Eingangs abgearbeitet werden. Alternativ könnte vorgesehen sein, dass der den Schreibindex-Speicherabschnitt betreffende Eintrag eine niedrigere Sendepriorität erhält als der wenigstens eine das Paket betreffende Eintrag. In diesem Fall sollte diese niedrigere Sendepriorität aber höher sein als die nächstniedrigere Sendepriorität, die aufgrund anderer Sendepuffer besteht (sind beispielweise drei Sendepuffer mit den Sendeprioritäten 1, 3, 5 vorhanden, könnten die Schreibindex-Speicherabschnitte betreffende Einträge entsprechend mit den Sendeprioritäten 0, 2, 4 erzeugt werden).
  • Anschließend können die Schritte 310 bis 350 für das nächste zu übertragende Paket durchgeführt werden.
  • 4 zeigt in einer empfängerseitigen Recheneinheit ausgeführte Verfahrensschritte beim Lesen wenigstens eines Pakets gemäß einer bevorzugten Ausführungsform. Zunächst wird in Schritt 410 entsprechend der Reihenfolge der Priorisierung (d.h. Empfangspuffer mit höherer Priorisierung werden vor Empfangspuffern mit niedriger geprüft) der Empfangspuffer geprüft, ob ein noch nicht gelesenes Paket in einem Empfangspuffer vorliegt. Dabei wird für jeden Empfangspuffer jeweils der Leseindex und der im Schreibindex-Speicherabschnitt empfangene (empfängerseitige) Schreibindex verwendet (hier werden der Leseindex und der Schreibindex-Speicherabschnitt ausgewertet, die dem jeweiligen Empfangspuffer zugeordnet sind). Insbesondere ist kein noch nicht gelesenes Paket im jeweiligen Empfangspuffer vorhanden, wenn Leseindex und empfängerseitiger Schreibindex die gleiche Speicheradresse anzeigen.
  • In Schritt 420 wird das wenigstens eine Paket aus dem Empfangspuffer gelesen. Hierbei kann an der Speicheradresse begonnen werden, die auf die Speicheradresse folgt, die durch den Leseindex angezeigt wird. Es können Paketheader vorgesehen sein, anhand derer einzelne Pakete unterschieden werden können. Beispielsweise kann im Paketheader angegeben sein, wie lange das Paket ist. Durch Auswerten dieser Paketheader-Informationen können Pakete einzeln gelesen werden und die nachfolgenden Schritte 430, 440 für einzelnen Pakete durchgeführt werden. Oder es können mehrere Pakete gelesen werden (bis maximal zum Schreibindex), die anschießend anhand der Paketheader-Informationen getrennt werden, wobei in diesem Fall nachfolgende Schritte 430, 440 für diese mehreren Pakete einmalig (nach Lesen des letzte Pakets) durchgeführt werden.
  • In Schritt 430 wird der Leseindex aktualisiert, so dass dieser die letzte im Empfangspuffer gelesene Speicheradresse (des zuletzt gelesenen Pakets) anzeigt. Der aktualisierte Leseindex wird im Leseindex-Speicherabschnitt gespeichert.
  • In Schritt 440 wird ein Eintrag in der Sendequeue der empfängerseitigen Recheneinheit erzeugt, in dem der Leseindex-Speicherabschnitt spezifiziert wird. Dem Eintrag wird eine Sendepriorität zugewiesen, die der Priorisierung des Empfangspuffers entspricht.
  • Anschließend können die Schritte 410 bis 440 für das nächste wenigstens eine zu lesende Paket durchgeführt werden.
  • 5 zeigt das Bearbeiten 500 von Einträgen der Sendequeue einer senderseitigen Recheneinheit gemäß einer bevorzugten Ausführungsform. Zunächst wird in Schritt 510 der Eintrag mit der höchsten Sendepriorität zum Bearbeiten ausgewählt. Wenn mehrere Einträge gleicher Sendepriorität vorhanden sind, kann die Auswahl entsprechend einer Reihenfolge innerhalb der Einträge der Sendepriorität erfolgen, z.B. entsprechend der zeitlichen Reihenfolge, mit der die Einträge in der Sendequeue erzeugt wurden.
  • In Schritt 520 wird der Speicherabschnitt, der im Eintrag spezifiziert ist, mittels der Schnittstelle von der senderseitigen Recheneinheit zu der empfängerseitigen Recheneinheit übertragen. Der Speicherabschnitt ist beispielhaft ein Speicherabschnitt des Sendepuffers, wobei der ausgewählte Eintrag ebenso den Leseindex-Speicherabschnitt spezifizieren könnte.
  • In Schritt 530 wird geprüft, ob eine Bestätigungsnachricht empfangen wird. Dies kann einmalig nach einer gewissen Wartezeit oder mehrmals bis eine maximale Wartezeit abgelaufen ist, erfolgen. Die Möglichkeit solcher Bestätigungsnachrichten (ACK) kann etwa in der Schnittstellen-Spezifikation der Schnittstelle vorgesehen sein. Alternativ, etwa wenn die Schnittstelle eine solche Möglichkeit nicht bietet, könnte die Übermittlung von Bestätigungsnachrichten mittels Bestätigungs-Speicherabschnitten erfolgen, d.h. es wird der senderseitige Bestätigungs-Speicherabschnitt gelesen und senderseitig bestimmt, ob eine Bestätigungsnachricht, die den in Schritt 520 gesendeten Speicherabschnitt betrifft, im senderseitigen Bestätigungs-Speicherabschnitt empfangen wurde. Die Bestätigungsnachricht selbst wird von der empfängerseitigen Recheneinheit in den empfängerseitigen Bestätigungs-Speicherabschnitt geschrieben und mittels der Schnittstelle übertragen. Während einer Wartezeit auf den Empfang einer Bestätigungsnachricht kann mit der Bearbeitung eines anderen Eintrags der Sendequeue begonnen werden.
  • In Schritt 540 wird geprüft, ob eine Bestätigungsnachricht empfangen wurde und welchen Inhalt diese aufweist. Wenn eine maximale Anzahl (etwa eine Zahl kleiner als 10, z.B. 3) von Sendeversuchen noch nicht erreicht ist und wenn keine Bestätigungsnachricht empfangen wurde oder eine Bestätigungsnachricht empfangen wurde und diese anzeigt, dass der Speicherabschnitt empfängerseitig nicht fehlerfrei empfangen wurde, wird der Speicherabschnitt erneut gesendet, d.h. es wird zu Schritt 520 zurückgesprungen (Pfeil 545).
  • Wenn eine Bestätigungsnachricht empfangen wurde, die anzeigt, dass der Speicherabschnitt empfängerseitig fehlerfrei empfangen wurde, wird in Schritt 550 der Eintrag aus der Sendequeue entfernt und mit dem Bearbeiten des nächsten bzw. eines anderen Eintrags der Sendequeue fortgefahren, d.h. es wird zu Schritt 510 zurückgesprungen (Pfeil 555).
  • Wenn andererseits die maximale Anzahl von Sendeversuchen erreicht wird, ohne dass eine Bestätigungsnachricht empfangen wurde, die anzeigt, dass der Speicherabschnitt empfängerseitig fehlerfrei empfangen wurde, wird optional in Schritt 560 eine (Neu-)Initialisierung bzw. ein Neustart der beiden Recheneinheiten oder zumindest der empfängerseitigen Recheneinheit und/oder der Schnittstelle veranlasst. Ein potentieller Fehlerzustand kann so behoben werden.

Claims (16)

  1. Verfahren zur paketorientierten Datenkommunikation zwischen zwei Recheneinheiten (1, 2), wobei zu übertragende Pakete eine Klassifizierung aufweisen und wobei die Recheneinheiten mittels einer Schnittstelle (4_1, 4_2) verbunden sind, die dazu eingerichtet ist, Speicherabschnitte in korrespondierende Speicherabschnitte der jeweilig anderen Recheneinheit zu übertragen; wobei jede Recheneinheit dazu eingerichtet ist, eine Sendequeue (6_1, 6_2) zu verwalten, die Einträge umfasst, wobei jedem Eintrag eine Sendepriorität zugewiesen ist und jeder Eintrag einen zu übertragenden Speicherabschnitt spezifiziert, wobei die Einträge in einer Reihenfolge entsprechend der Sendepriorität bearbeitet werden, wobei für jeden Eintrag beim Bearbeiten der darin spezifizierte Speicherabschnitt über die Schnittstelle gesendet wird und der Eintrag aus der Sendequeue entfernt wird; wobei wenigstens eine der Recheneinheiten senderseitig wirkt und die wenigstens eine andere der Recheneinheiten empfängerseitig wirkt, wobei die wenigstens eine senderseitige Recheneinheit mehrere als Ringpuffer eingerichtete Sendepuffer (50_1, 50_2) aufweist und die wenigstens eine empfängerseitige Recheneinheit mehrere, zu den Sendepuffern korrespondierende, als Ringpuffer eingerichtete Empfangspuffer (52_1, 52_2) aufweist, wobei jedem Sendepuffer und dem korrespondierenden Empfangspuffer eine Priorisierung zugewiesen ist; wobei die wenigstens eine senderseitige Recheneinheit (1, 2) dazu eingerichtet ist, zu übertragende Pakete in den Sendepuffern (50_1, 50_2) zu speichern (320), wobei jedes Paket entsprechend seiner Klassifizierung in einen der Klassifizierung zugeordneten Sendepuffer geschrieben wird, für jeden Sendepuffer für jedes darin gespeicherte Paket entsprechend der Ringpufferstruktur wenigstens einen Eintrag in der Sendequeue (6_1, 6_2) zu erzeugen (340), wobei dem wenigstens einen Eintrag eine Sendepriorität entsprechend der Priorisierung des Sendepuffers zugewiesen wird und in dem wenigstens einen Eintrag ein Speicherabschnitt, in dem zumindest ein Teil des Pakets gespeichert ist, spezifiziert wird; wobei die wenigstens eine empfängerseitige Recheneinheit (1, 2) dazu eingerichtet ist, Pakete aus den Empfangspuffern (52_1, 52_2) zu lesen (420), wobei die Pakete entsprechend der Priorisierung der Empfangspuffer gelesen werden unter Berücksichtigung der jeweiligen Ringpufferstruktur.
  2. Verfahren nach Anspruch 1, wobei die wenigstens eine senderseitige Recheneinheit (1, 2) dazu eingerichtet ist, für in einem der Sendepuffer (50_1, 50_2) gespeicherte Pakete, die einen Paket-Speicherabschnitt belegen, der eine maximale Größe überschreitet, jeweils mehrere Einträge in der Sendequeue (6_1, 6_2) zu erzeugen, in denen verschiedene Speicherabschnitte spezifiziert sind, die Teil des Paket-Speicherabschnitts sind, so dass jeder der verschiedenen Speicherabschnitte die maximale Größe nicht überschreitet.
  3. Verfahren nach einem der vorstehenden Ansprüche, wobei die wenigstens eine senderseitige Recheneinheit (1, 2) dazu eingerichtet ist, das Bearbeiten eines Eintrags der Sendequeue (6_1, 6_2), der eine Sendepriorität kleiner als eine erste Vorrangpriorität aufweist, abzubrechen, wenn bzw. sobald ein Eintrag in der Sendequeue erzeugt wird, der eine Sendepriorität gleich oder größer als eine zweite Vorrangpriorität aufweist; oder wobei die wenigstens eine senderseitige Recheneinheit (1, 2) dazu eingerichtet ist, das Bearbeiten eines Eintrags der Sendequeue (6_1, 6_2) abzubrechen, wenn bzw. sobald ein Eintrag mit in der Sendequeue erzeugt wird, der eine höhere Sendepriorität.
  4. Verfahren nach einem der vorstehenden Ansprüche, wobei in der wenigstens einen senderseitigen Recheneinheit (1, 2) wenigstens einer der Sendepuffer als Trigger-Sendepuffer ausgewählt ist; wobei die wenigstens eine senderseitige Recheneinheit (1, 2) dazu eingerichtet ist, eine Triggernachricht zu senden, wenn oder nachdem ein Eintrag der Sendequeue bearbeitet wird, in dem ein Speicherabschnitt in dem wenigstens einen Trigger-Sendepuffer spezifiziert ist, wobei die Triggernachricht eine Information umfasst, die den jeweiligen Trigger-Sendepuffer anzeigt; und wobei die wenigstens eine empfängerseitige Recheneinheit (1, 2) dazu eingerichtet ist, wenn die Triggernachricht empfangen wird, ein Lesen des Lesepuffers auszulösen, der zu dem Trigger-Sendepuffer korrespondiert, der durch die in der Triggernachricht enthaltenen Information angezeigt wird.
  5. Verfahren nach einem der vorstehenden Ansprüche, wobei, wenn die Schnittstelle (4_1, 4_2) mehrere voneinander unabhängige Übertragungswege aufweist, jeder Sendepuffer einem Übertragungsweg zugeordnet ist.
  6. Verfahren nach einem der vorstehenden Ansprüche, wobei in der wenigstens einen empfängerseitigen Recheneinheit wenigstens einer der Empfangspuffer als Bestätigungs-Empfangspuffer (52) ausgewählt ist und in der wenigstens einen senderseitigen Recheneinheit wenigstens einer der Sendepuffer als Bestätigungs-Sendepuffer (50) ausgewählt ist, so dass dieser zum wenigstens einen Bestätigungs-Empfangspuffer korrespondiert; wobei die wenigstens eine empfängerseitige Recheneinheit und/oder die Schnittstelle für jeden empfangenen Speicherabschnitt, der in dem wenigstens einen Bestätigungs-Empfangspuffer (52) gespeichert wird, dazu eingerichtet ist, zu prüfen, ob der Speicherabschnitt fehlerfrei empfangen wurde, und eine Bestätigungsnachricht an die wenigstens eine senderseitige Recheneinheit zu senden, die anzeigt, ob oder ob nicht der Speicherabschnitt fehlerfrei empfangen wurde; wobei die wenigstens eine senderseitige Recheneinheit dazu eingerichtet ist, beim Bearbeiten eines Eintrags der Sendequeue, der einen Speicherabschnitt in dem wenigstens einen Bestätigungs-Sendepuffer (50) spezifiziert, nach dem Senden zu prüfen (530), ob die Bestätigungsnachricht vorliegt, und, wenn die Bestätigungsnachricht den fehlerfreien Empfang nicht bestätigt oder keine Bestätigungsnachricht vorliegt (545) und wenn eine maximale Anzahl von Sendewiederholungen nicht erreicht ist, den im Eintrag spezifizierten Speicherabschnitt erneut zu senden (520), und wenn die Bestätigungsnachricht den fehlerfreien Empfang bestätigt, den Eintrag aus der Sendequeue zu entfernen (550).
  7. Verfahren nach Anspruch 6, wobei die wenigstens eine senderseitige Recheneinheit dazu eingerichtet ist, wenn die Bestätigungsnachricht den fehlerfreien Empfang nicht bestätigt oder keine Bestätigungsnachricht vorliegt (545) und wenn die maximale Anzahl von Sendewiederholungen erreicht ist, die Bearbeitung von Einträgen der Sendequeue zu unterbrechen, und eine Neuinitialisierung (560) der beiden Recheneinheiten, der wenigstens einen empfängerseitigen Recheneinheit, der Schnittstelle, der senderseitigen Sendequeue, der empfängerseitigen Sendequeue, der senderseitigen Sendepuffer, und/oder der empfängerseitigen Empfangspuffer zu veranlassen.
  8. Verfahren nach Anspruch 6 oder 7, wobei in der wenigstens einen empfängerseitigen Recheneinheit wenigstens ein empfängerseitiger Bestätigungs-Speicherabschnitt (76) vorgesehen ist und in der wenigstens einen senderseitigen Recheneinheit wenigstens ein senderseitiger Bestätigungs-Speicherabschnitt (78) vorgesehen ist, in den der empfängerseitige Bestätigungs-Speicherabschnitt durch die Schnittstelle übertragen wird; wobei die wenigstens eine empfängerseitige Recheneinheit dazu eingerichtet ist, die Bestätigungsnachricht in dem empfängerseitigen Bestätigungs-Speicherabschnitt (76) zu speichern, und in der Sendequeue einen Eintrag zu erzeugen, in dem der empfängerseitige Bestätigungs-Speicherabschnitt spezifiziert wird; wobei die wenigstens eine senderseitige Recheneinheit dazu eingerichtet ist, den senderseitigen Bestätigungs-Speicherabschnitt (78) zu lesen, um zu prüfen (530), ob die Bestätigungsnachricht vorliegt; wobei vorzugsweise die wenigstens eine empfängerseitige Recheneinheit dazu eingerichtet ist, dem Eintrag, in dem der empfängerseitige Bestätigungs-Speicherabschnitt (76) spezifiziert wird, eine Sendepriorität entsprechend der Priorisierung des Bestätigungs-Empfangspuffers (52) oder eine höchste Sendepriorität zuzuweisen.
  9. Verfahren nach einem der Ansprüche 6 bis 8, wobei die wenigstens eine senderseitige Recheneinheit dazu eingerichtet ist, während dem Prüfen (530), ob die Bestätigungsnachricht vorliegt, mit dem Bearbeiten des nächsten Eintrags der Sendequeue zu beginnen.
  10. Verfahren nach einem der vorstehenden Ansprüche, wobei in der wenigstens einen senderseitigen Recheneinheit für jeden Sendepuffer ein senderseitiger Schreibindex-Speicherabschnitt (58) und ein senderseitiger Leseindex-Speicherabschnitt (70) vorgesehen sind, und wobei in der wenigstens einen empfängerseitigen Recheneinheit für jeden Empfangspuffer ein empfängerseitiger Schreibindex-Speicherabschnitt (60) und ein empfängerseitiger Leseindex-Speicherabschnitt (68) vorgesehen sind; wobei die wenigstens eine senderseitige Recheneinheit dazu eingerichtet ist, beim Speichern eines Pakets in einem der Sendepuffer (50) entsprechend der Klassifizierung, basierend auf einem Schreibindex (56), der dem Sendepuffer zugeordnet ist und anzeigt, bis zu welcher Speicheradresse Pakete in den Sendepuffer gespeichert sind, und einem Leseindex, der in dem senderseitigen Leseindex-Speicherabschnitt (70), der dem Sendepuffer zugeordnet ist, gespeichert ist, unter Berücksichtigung der Ringpufferstruktur zu prüfen (310), ob ausreichend Speicherplatz für das Paket im Sendepuffer vorhanden ist, wenn ausreichend Speicherplatz vorhanden ist, beginnend an einer Speicheradresse nach der durch den Schreibindex angezeigten Speicheradresse das Paket in den Sendepuffer zu schreiben (320), den Schreibindex zu aktualisieren (330), so dass dieser anzeigt, bis zu welcher Speicheradresse das geschriebene Paket im Sendepuffer gespeichert ist, und den aktualisierten Schreibindex im dem senderseitigen Schreibindex-Speicherabschnitt (58), der dem Sendepuffer zugeordnet ist, zu speichern, und in der Sendequeue einen Eintrag zu erzeugen (350), in dem der senderseitige Schreibindex-Speicherabschnitt spezifiziert wird; und wobei die wenigstens eine empfängerseitige Recheneinheit dazu eingerichtet ist, beim Lesen eines Pakets aus einem der Empfangspuffer, basierend auf einem Leseindex (66), der dem Empfangspuffer (52) zugeordnet ist und anzeigt, bis zu welcher Speicheradresse zuletzt ein Paket aus dem Empfangspuffer gelesen wurde, und einem Schreibindex (64), der in dem empfängerseitigen Schreibindex-Speicherabschnitt (60), der dem Empfangspuffer zugeordnet ist, gespeichert ist, zu prüfen (410), ob ein noch nicht gelesenes Paket im Empfangspuffer vorhanden ist, wenn ein noch nicht gelesenes Paket vorhanden ist, beginnend an einer Speicheradresse nach der durch den Leseindex angezeigten Speicheradresse unter Berücksichtigung der Ringpufferstruktur das Paket aus dem Empfangspuffer zu lesen (420), den Leseindex zu aktualisieren (430), so dass dieser anzeigt, bis zu welcher Speicheradresse das gelesene Paket aus dem Empfangspuffer gelesen wurde, und den aktualisierten Leseindex in dem empfängerseitigen Leseindex-Speicherabschnitt (68), der dem Empfangspuffer zugeordnet ist, zu speichern, und in der Sendequeue einen Eintrag zu erzeugen (440), in dem der empfängerseitige Leseindex-Speicherabschnitt spezifiziert ist.
  11. Verfahren nach Anspruch 10, wobei die wenigstens eine senderseitige Recheneinheit dazu eingerichtet ist, dem Eintrag, in dem der senderseitige Schreibindex-Speicherabschnitt (58) spezifiziert wird, die Sendepriorität entsprechend der Priorisierung des entsprechenden Sendepuffers (50) zuzuweisen, wobei der Eintrag so in der Sendequeue erzeugt wird, dass er erst nach dem wenigstens einen Eintrag, der für das entsprechende Paket erzeugt wurde, bearbeitet wird; und wobei die wenigstens eine empfängerseitige Recheneinheit dazu eingerichtet ist, dem Eintrag, in dem der empfängerseitige Leseindex-Speicherabschnitt (68) spezifiziert wird, die Sendepriorität entsprechend der Priorisierung des entsprechenden Empfangspuffers zuzuweisen.
  12. Verfahren nach einem der vorstehenden Ansprüche, wobei in der wenigstens einen empfängerseitigen Recheneinheit für jeden Empfangspuffer ein empfängerseitiger Anfangsadress-Speicherabschnitt (82) und ein empfängerseitiger Endadress-Speicherabschnitt (84) vorgesehen sind und wobei in der wenigstens einen senderseitigen Recheneinheit für jeden Sendepuffer ein senderseitiger Anfangsadress-Speicherabschnitt (90) und ein senderseitiger Endadress-Speicherabschnitt (92) vorgesehen sind; wobei die wenigstens eine empfängerseitige Recheneinheit dazu eingerichtet ist, bei einem Start oder einer Neuinitialisierung, für jeden Empfangspuffer einen Speicherbereich von einer Anfangs-Speicheradresse bis zu einer End-Speicheradresse festzulegen, die Anfangs-Speicheradresse in den empfängerseitigen Anfangsadress-Speicherabschnitt (82) und die End-Speicheradresse in den empfängerseitigen Endadress-Speicherabschnitt (84) zu schreiben, den empfängerseitigen Anfangsadress-Speicherabschnitt und den empfängerseitigen Endadress-Speicherabschnitt über die Schnittstelle in den senderseitigen Anfangsadress-Speicherabschnitt und den sendeseitigen Endadress-Speicherabschnitt zu übertragen; und wobei die wenigstens eine senderseitige Recheneinheit dazu eingerichtet ist, beim Senden von Speicherabschnitten der Sendepuffer, insbesondere beim Bearbeiten von Einträgen der Sendequeue, eine Adressberechnung basierend auf der im senderseitigen Anfangsadress-Speicherabschnitt (90) empfangenen Anfangs-Speicheradresse und/oder basierend auf der im senderseitigen Endadress-Speicherabschnitt empfangenen End-Speicheradresse (92) durchzuführen.
  13. System umfassend zwei Recheneinheiten (1, 2), die mittels einer Schnittstelle (4_1, 4_2) verbunden sind, das dazu eingerichtet ist, alle Verfahrensschritte eines Verfahrens nach einem der vorstehenden Ansprüche durchzuführen.
  14. Recheneinheit (1, 2), die dazu eingerichtet ist, alle senderseitigen und/oder empfängerseitigen Verfahrensschritte eines Verfahrens nach einem der Ansprüche 1 bis 10 durchzuführen.
  15. Computerprogramm, das eine Recheneinheit (1, 2) dazu veranlasst, alle senderseitigen und/oder empfängerseitigen Verfahrensschritte eines Verfahrens nach einem der Ansprüche 1 bis 10 durchzuführen, wenn es auf der Recheneinheit ausgeführt wird.
  16. Maschinenlesbares Speichermedium mit einem darauf gespeicherten Computerprogramm nach Anspruch 13.
DE102022200501.5A 2022-01-18 2022-01-18 Verfahren zur paketorientierten Datenkommunikation zwischen zwei Recheneinheiten Pending DE102022200501A1 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE102022200501.5A DE102022200501A1 (de) 2022-01-18 2022-01-18 Verfahren zur paketorientierten Datenkommunikation zwischen zwei Recheneinheiten

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102022200501.5A DE102022200501A1 (de) 2022-01-18 2022-01-18 Verfahren zur paketorientierten Datenkommunikation zwischen zwei Recheneinheiten

Publications (1)

Publication Number Publication Date
DE102022200501A1 true DE102022200501A1 (de) 2023-07-20

Family

ID=86990611

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022200501.5A Pending DE102022200501A1 (de) 2022-01-18 2022-01-18 Verfahren zur paketorientierten Datenkommunikation zwischen zwei Recheneinheiten

Country Status (1)

Country Link
DE (1) DE102022200501A1 (de)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090016217A1 (en) 2007-07-13 2009-01-15 International Business Machines Corporation Enhancement of end-to-end network qos

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090016217A1 (en) 2007-07-13 2009-01-15 International Business Machines Corporation Enhancement of end-to-end network qos

Similar Documents

Publication Publication Date Title
DE112020002498T5 (de) System und verfahren zur erleichterung einer effizienten paketweiterleitung in einer netzwerkschnittstellensteuerung (nic)
DE60307032T2 (de) Steuerungs-Verfahren und -Vorrichtung zur Datenübertragung
DE102017211860B3 (de) Verfahren zur Übertragung von Daten über einen seriellen Kommunikationsbus, entsprechend ausgelegte Busschnittstelle sowie entsprechend ausgelegtes Computerprogramm
DE60317837T2 (de) Verfahren und System zur Messung von Last und Kapazität auf einem Kanal mit variabler Kapazität
DE60111551T2 (de) Mechanismus zur vervollständigung von nachrichten im speicher
DE112008000598B4 (de) Relaisschaltungseinheit für ein Fahrzeug
DE69935554T2 (de) Verfahren und Rechnerprogrammprodukt zum effizienten und zuverlässigen Übertragen von kleinen Datennachrichten von einem Sendesystem zu einer grossen Anzahl von Empfangssystemen
DE602005003142T2 (de) Vorrichtung und verfahren zur unterstützung von verbindungsherstellung in einem offload der netzwerkprotokollverarbeitung
EP2702497B1 (de) Verfahren und vorrichtung zur an speichergrössen angepassten seriellen datenübertragung
EP3248362B1 (de) Datenübertragung in einem kommunikationsnetzwerk
EP2115948A1 (de) Verfahren und anlage zur optimierten übertragung von daten zwischen einer steuereinrichtung und mehreren feldgeräten
DE102006059376A1 (de) Synchrone Datenübertragung
DE102006059377A1 (de) Synchrone Datenübertragung
DE602004011453T2 (de) Sendegerät zur Steuerung der Datenübertragung
DE112004002544B4 (de) Verfahren, System und Programm zur Identifizierung von Datenüberlauf
WO2020099318A1 (de) Fehlerrahmenabschirmeinheit für eine teilnehmerstation eines seriellen bussystems und verfahren zur kommunikation in einem seriellen bussystem
DE102004046822A1 (de) Verfahren zum Übertragen von Daten zwischen einem Speicher und mehreren peripheren Einheiten mit Hilfe einer Direct Memory Access-Steuerung sowie entsprechende Direct Memory Access-Steuervorrichtung
DE112013000812T5 (de) Variable Bestätigungsrate zum Verringern von Buskonflikt in Gegenwart von Datenübertragungsfehlern
EP1911213A1 (de) Flexray-kommunikationsbaustein, flexray-kommunikationscontroller und verfahren zur botschaftsübertragung zwischen einer flexray-kommunikationsverbindung und einem flexray-teilnehmer
DE102017012214B4 (de) Verfahren zur Übertragung von Daten über einen seriellen Kommunikationsbus, entsprechend ausgelegte Busschnittstelle sowie entsprechend ausgelegtes Computerprogramm
DE102008001548B4 (de) Teilnehmerknoten eines Kommunikationssystems, Kommunikationssystem und Verfahren zum Übertragen einer Nachricht in dem Kommunikationssystem
DE102022200501A1 (de) Verfahren zur paketorientierten Datenkommunikation zwischen zwei Recheneinheiten
WO2015185386A1 (de) Übertragungseinheit mit prüffunktion
DE102009050767B4 (de) Verfahren und Vorrichtung zur Datenübertragung
EP2538618A1 (de) Verfahren zur Übertragung von Datenpaketen

Legal Events

Date Code Title Description
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: H04L0047620000

Ipc: H04L0047629500

R163 Identified publications notified