-
Die Erfindung betrifft ein Verfahren zur Abarbeitung von mehreren Aufgaben in einem datenverarbeitenden System mit geteilter zentraler Datenverarbeitung. Das vorgestellte Verfahren dient insbesondere zur priorisierten Ablaufplanung bei einer geteilten zentralen Datenverarbeitung und eine Schaltungsanordnung zur Durchführung des Verfahrens.
-
Stand der Technik
-
In datenverarbeitenden Systemen, wie bspw. in Rechner-Mikroprozessor-Systemen, Steuereinheiten, peripheren Einheiten sowie in anderen informationsverarbeitenden Systemen, werden zum Zweck der Berechnung häufig sogenannte CPUs (Central Processing Unit) als zentrale Verarbeitungseinheiten eines Computers oder aber auch lediglich einfache arithmetisch-logische Einheiten (ALU) verwendet. Ferner werden zur Speicherung von Programmen und Daten entsprechende Speicher wie RAM, ROM, EPROM, EEPROM usw. eingesetzt. Der Prozessor bzw. die CPU arbeitet ein Programm ab bzw. führt ein Programm aus. Das Programm ist dabei in der Regel aus verschiedenen Teilprogrammen zusammengesetzt, die ggf. wiederum unterschiedliche Aufgaben (Tasks) gewidmet sein können. Man spricht dabei von Multitasking.
-
Je nach einem aktuellen Szenario, d. h. welche Aufgaben zu diesem Zeitpunkt eine Bearbeitung anfordern, wird dabei entschieden, welche Aufgabe durch die CPU abgearbeitet werden soll. Dabei ist es denkbar, dass unterschiedlichen Aufgaben unterschiedliche Prioritäten zugewiesen sind, so dass bei Abarbeitung der Aufgaben die den jeweiligen Aufgaben zugeordnete Priorität beachtet wird und entsprechend die Aufgabe der höchsten Priorität vorrangig bearbeitet wird. Dies geschieht bspw. durch sogenannte Interrupts. Bei einem Interrupt handelt es sich um eine kurzfristige Unterbrechung eines Programms, um eine andere, prioritätshöhere bzw. zeitkritische Verarbeitung einer anderen Aufgabe durchzuführen. Dabei wird zunächst eine Unterbrechungsanforderung gestellt, woraufhin eine Unterbrechungsroutine ausgeführt wird und die zuvor ausgeführte Aufgabe unterbrochen und nach Beendigung des Interrupts diese Aufgabe an der Unterbrechungsstelle fortgesetzt wird. Das bedeutet, dass in der Regel dabei eine aktuelle Anforderung einer Aufgabe, die eine höhere Priorität besitzt als die sich gerade in Bearbeitung befindende Aufgabe, vorrangig bearbeitet wird, und dass dafür die sich bereits in Bearbeitung befindende Aufgabe unterbrochen wird. Der betreffende Interrupt veranlasst dabei die CPU zu einem Sprung in einen entsprechenden Programmabschnitt, um so den Taskwechsel zu realisieren. Hierbei müssen benutzte Register der CPU in einem Datenspeicher, üblicherweise ein RAM, zwischengespeichert werden, die dann anschließend nach Beendigung des unterbrechenden Tasks wiederhergestellt werden. Sowohl das Zwischenspeichern als auch das Wiederherstellen von benutzen Registern benötigt zusätzliche Rechenzeit der CPU, die ausschließlich dem Wechseln eines Tasks zugeordnet werden kann und somit keinen Fortschritt in der Berechnung der Aufgaben leistet.
-
Das voranstehend genannte Multitasking kann auch ein sogenanntes "Time Sharing" bewirken, das mehrere Nutzer scheinbar gleichzeitig bedient. Generell bezeichnet Multitasking die Fähigkeit einer CPU, mehrere Aufgaben (Tasks) nebenläufig auszuführen. Dabei werden die verschiedenen Prozesse in so kurzen Abständen immer abwechselnd aktiviert, dass ein Eindruck der Gleichzeitigkeit entsteht.
-
Die Auswahl der einzelnen Aufgaben können allerdings dazu führen, dass Aufgaben mit niedriger Priorität selten und im Extremfall gar nicht abgearbeitet werden. Dies kann dann der Fall sein, wenn quasi dauerhaft vorstehend genannte Interrupt-Anfragen kommen und somit die Abhängigkeit einer in Relation zu anderen Aufgaben niedrig priorisierte Aufgabe hier nicht vollständig vollendet werden kann. In diesem Fall ist es notwendig, Maßnahmen zu ergreifen, die eine sogenannte Worst-Case Execution-Time (WCET) garantieren und damit ein Mindestmaß an Arbeitskapazität der CPU für jede zu bearbeitende Aufgabe garantieren.
-
In der Druckschrift
DE 10 2010 003 521 A1 wird eine Zeitgeber-Einheit beschrieben, die eine modularen Struktur zur Datenverarbeitung darstellt. Diese Struktur stellt sogenannte Multi-Channel-Sequencer-Module (MCS-Module) bereit, die eine Ausführung von mehreren, ggf. unabhängigen Aufgaben auf einer gemeinsam genutzten zentralen Datenverarbeitungseinheit ermöglichen.
-
Die Druckschrift
DE 10 2010 003 512 A1 beschreibt eine Schaltungsanordnung für ein datenverarbeitendes System zur Abarbeitung von mehreren Aufgaben mit einer geteilten zentralen Verarbeitungseinheit, sogenannte Multi-Channel-Sequencer-Module, MCS-Module.
-
Diese Schaltungsanordnung wird zusammen mit einem vorgeschlagenen Algorithmus in der Druckschrift
DE 10 2011 083 468 A1 vorgestellt. Die Schaltungsanordnung ist dazu konfiguriert, den jeweiligen Aufgaben die Verarbeitungseinheit zur Verarbeitung zeitlich versetzt zuzuordnen, so dass jedem aktiven Kanal eines MCS eine Worst-Case Execution-Time von T = N·T
CLK garantiert wird, wobei T
CLK die Taktdauer bezeichnet. Um dies garantieren zu können, wird in einer Schaltungsanordnung eine Prioritätsliste verwaltet, die zeitlich länger zurückliegende aktive Aufgaben mit einer höheren Priorität behandelt als aktive Aufgaben, die erst kürzlich bearbeitet wurden. Aufgaben ohne Bearbeitungsanforderung werden in der Prioritätsliste übersprungen, so dass die Rechenkapazität ausschließlich aktiven Aufgaben zugeteilt wird und keine Rechenkapazität und inaktive Aufgaben verschwendet wird.
-
Ein in der genannten Druckschrift vorgestellter Algorithmus zur Ablaufplanung der Datenverarbeitung besitzt die Eigenschaft, dass die zur Verfügung stehenden Zeiteinheiten der zentralen Datenverarbeitungseinheit immer gleichmäßig den aktiven Kanälen eines MCS zugeteilt werden, so dass die Worst-Case Execution-Time von T = N·TCLK für jeden Kanal garantiert werden kann. Diese Zuteilung wird üblicherweise beim Bearbeiten von unabhängigen Aufgaben bevorzugt. In Ausnahmefällen kann eine priorisierte Bearbeitung von einem oder mehreren Kanälen jedoch vorteilhaft bzw. erforderlich sein. Für sicherheitskritische Anwendungen wird beispielsweise ein separater MCS-Kanal reserviert, der beim Auftreten eines externen Störereignisses bzw. Ausnahmeereignisses, z.B. Ausfall eines Sensors zur Positionserfassung eines Motors, möglichst schnell ein Kanalprogramm ausführen muss um eine Not-Abschaltung vorzunehmen.
-
Offenbarung der Erfindung
-
Vor diesem Hintergrund werden ein Verfahren gemäß Anspruch 1 und eine Schaltungsanordnung nach Anspruch 10 vorgestellt. Ausführungsformen ergeben sich aus den abhängigen Ansprüchen und der Beschreibung.
-
Es wurde erkannt, dass, da in dem in der Druckschrift
DE 10 2011 083 468 A1 vorgestellte Algorithmus zur Ablaufplanung alle Kanäle stets gleichberechtigt behandelt werden, für die Behandlung des Ausnahmeereignisses nicht die gesamtmögliche Kapazität der Verarbeitungseinheit zur Verfügung steht.
-
Dieser Mangel wird mit dem beschriebenen Verfahren und der vorgestellten Schaltungsanordnung behoben, indem für die Zeit zwischen Auftreten eines Ausnahmeereignisses und dessen vollständiger Behandlung die gesamtmögliche Kapazität der Verarbeitungseinheit zur Behandlung des Ausnahmeereignisses zur Verfügung gestellt wird. Hierbei kann optional unmittelbar von einer Optimierung, nämlich einer Instruktionsvorladung und Ablaufplanung bei einer geteilten zentralen Datenverarbeitung, profitiert werden. Durch Annahme eines spekulativen Programmverlaufs durch die Instruktionsvorladung kann ggf. eine Beschleunigung der Befehlsabarbeitung erzielt werden.
-
Zu beachten ist, dass nach Abschluss der Behandlung des Ausnahmeereignisses wieder eine Gleichverteilung der Kapazität der Verarbeitungseinheit an die MCS Kanäle erfolgen sollte, bei der wieder die ursprüngliche Worst-Case Execution-Time von T = N·TCLK garantiert wird.
-
Weitere Vorteile und Ausgestaltungen der Erfindung ergeben sich aus der Beschreibung und den beiliegenden Zeichnungen.
-
Es versteht sich, dass die voranstehend genannten und die nachstehend noch zu erläuternden Merkmale nicht nur in der jeweils angegebenen Kombination, sondern auch in anderen Kombinationen oder in Alleinstellung verwendbar sind, ohne den Rahmen der vorliegenden Erfindung zu verlassen.
-
Kurze Beschreibung der Zeichnungen
-
1 zeigt eine Ausführungsform einer Schaltungsanordnung mit sieben Pipelinestufen für ein datenverarbeitendes System mit einer geteilten zentralen Verarbeitungseinheit.
-
2 zeigt eine Schaltungsanordnung zur Ablaufplanung die als zentrales Teilmodul "Task-Scheduler", in der in 1 gezeigten Schaltungsanordnung enthalten ist.
-
3 zeigt das zeitliche Verhalten der sieben Pipelinestufen der Schaltungsanordnung aus 1 im Falle einer priorisierten Ablaufplanung bei einem Ausnahmeereignis.
-
Ausführungsformen der Erfindung
-
Die Erfindung ist anhand von Ausführungsformen in den Zeichnungen schematisch dargestellt und wird nachfolgend unter Bezugnahme auf die Zeichnungen ausführlich beschrieben.
-
1 zeigt eine Ausführungsform der Schaltungsanordnung, die insgesamt mit der Bezugsziffer 10 bezeichnet ist. Eine Pipelinestufe 0 15 berechnet die Adressen für einen RAM-Zugriff. Eine erste und zweite Pipelinestufe 12 sind für einen RAM-Zugriff vorgesehen, eine dritte Pipelinestufe 14 für eine Instruktionsverteilung, eine vierte Pipelinestufe 16 für das Decodieren, eine fünfte Pipelinestufe 18 für die Ausführung und eine sechste Pipelinestufe 20 für das Speichern.
-
In Pipelinestufe 0 15 ist ein RAM-Zugriff-Decoder 42 vorgesehen. In der ersten und zweiten Stufe 12 ist ein RAM-Prioritäts-Decoder 22, der über eine Slave-Bus-Schnittstelle 24 an externe Bus-Master angebunden ist und über weitere Anschlüsse 26 mit einem RAM 0 28 und einem optionalen RAM 1 30 verbunden ist. In der dritten Stufe 14 ist ein Verteiler 32 für Instruktionen und Daten vorgesehen. In der vierten Stufe 16 ist ein Instruktionsdecoder 34 vorgesehen. In der fünften Stufe 18 ist eine ALU 36 vorgesehen. In der sechsten Pipelinestufe werden die in der ALU berechneten Ergebnisse über den MCS internen Bus 82 und 84 in einem Zielregister 60, 62, 64, 66, 68 oder 70 gespeichert.
-
Die Schaltungsteile der unterschiedlichen Pipelinestufen und der externen RAM-Module werden durch sogenannte Pipeline-Register 40 und 26 getrennt. Wenn die zwischen den Pipelinestufen auszutauschenden Daten länger als ein Systemtakt gehalten werden müssen, so werden taskspezifische Pipeline-Register 40a in Form von N-Fachen Register-Arrays vorgesehen.
-
In einem weiteren Block 50 sind gemeinsam genutzte sowie taskspezifische Speicher- und Kommunikationsressourcen eines MCS bereitgestellt, die über MCS interne Busse 84, 81 und 82 Daten mit den MCS Pipelinestufen austauschen oder über eine Slave-Bus-Schnittstelle 52 von einem extern angeschlossene Bus-Master kontrolliert werden können. Die taskspezifischen Datenregister 60 bis 62 dienen typischerweise als Quell- und Zielregister für Rechenoperationen. Die taskspezifischen Kontrollregister 64 bis 66 und die gemeinsam genutzten Kontrollregister 68 bis 70 können zusätzliche Hardware-Funktionalität beinhalten. Hierzu werden extern angeschlossene Hardwaremodule über zusätzliche Ein- bzw. Ausgangssignale 54 und 56 mit den Kontrollregistern verbunden. Zudem besitzt jeder MCS-Kanal eine eigne Bus-Master-Ressource 87, mit der über ein externes Bus-Interface 58 mit angeschlossenen Slave-Bus-Teilnehmer kommuniziert werden kann.
-
Weiterhin ist ein Aufgaben-Einteiler bzw. Task-Scheduler 80 dargestellt, der über die Kontrollsignale 83 steuert, dass ein bestimmter MCS-Kanal in einer bestimmten Pipelinestufe aktiviert wird.
-
1 zeigt einen MCS mit sieben statt vier Pipelinestufen, wodurch eine Erhöhung der Taktfrequenz erreicht werden kann. Die zu berechnenden Aufgaben werden in Form von sogenannten (Kanal-)Programmen den N Kanälen eines MCS-Moduls zugeordnet. Ein MCS-Kanal stellt dabei einige spezifische Hardware-Ressourcen, im Wesentlichen Daten- und Kontrollregister, zur Verfügung, die nicht für andere Aufgaben geteilt werden. Durch diese exklusive Zuordnung kann das vorstehend erwähnte Zwischenspeichern und Wiederherstellen von benutzen Registern in einem Datenspeicher gänzlich entfallen und die erwähnte zusätzlich anfallende Zeit für einen Taskwechsel wird gänzlich eliminiert. Um eine zeitlich gleichmäßige Zuteilung der zentralen Datenverarbeitungseinheit zu den Kanälen des MCS zu ermöglichen, wird eine Schaltungsanordnung mit einem Algorithmus zur Ablaufplanung verwendet, nämlich der Task Scheduler 80.
-
2 zeigt eine Schaltungsanordnung zur Ablaufplanung, die aus N Registern 100_0 bis 100_N – 1 und einem Schaltnetz 103 besteht. Die Register 100_0 bis 100_N – 1 dienen zum Speichern der Listenelemente der Prioritätsliste LPRIO[i] (i = 0, ..., N – 1) und das Schaltnetz dient zur Auswahl derjenigen Aufgabe s bzw. eines entsprechend zugeordneten Kanals s, welche im Rahmen eines Bearbeitungszyklus als nächstes bearbeitet werden soll. Das vorgestellte Verfahren sieht für die Bestimmung des als nächstes zu bearbeitenden Kanals, d. h. desjenigen Kanals, der im nächsten Taktzyklus in die Pipelinestufe 0 eingeschoben wird, den voranstehend beschriebenen Algorithmus vor, der mit Hilfe der Prioritätenliste LPRIO dargestellt eine Ablaufplanung vornimmt. Die Register 100_0, ..., 100_N – 1 der Prioritätenliste werden mit LPRIO[i] (i = 0, ..., N – 1) referenziert, wobei die Anzahl der Aufgaben N ist. Das letzte Listenelement 100_N – 1 = LPRIO[N – 1] bezeichnet dabei die Aufgabe, die beim anstehenden Ablaufplanungsschritt mit höchster Priorität behandelt wird. Das Vorgängerregister 100_N – 2 = LPRIO[N – 2] bezeichnet dabei die Aufgabe, die beim anstehenden Ablaufplanungsschritt mit zweit-höchster Priorität behandelt wird usw. Die Register 100_0 bis 100_N – 1 werden zum Zeitpunkt eines Schaltungs-Resets mit den Werten: LPRIO[i] = i für alle i = 0, ..., N – 1 initialisiert.
-
Innerhalb eines Taktzyklus wird nun Kanal s ermittelt bzw. selektiert, der in Pipelinestufe 0 eingeschoben, d. h. dessen ihm zugeordnete Aufgabe als nächstes bearbeitet wird. Hierzu evaluiert der im Schaltnetz 103 realisierte Algorithmus die Register über die dargestellten Eingangssignale 101_0 bis 101_N – 1, wobei die Funktion "is_active" durch Auswertung der N Eingangssignale 104 und die Funktion "not_in_pipe" durch Auswertung der Eingangssignale 105 realisiert wird. Funktion "is_active" gibt an, ob eine gerade betrachtete Aufgabe s aktiv ist, d. h. ob der ihr zugeordnete Kanal bereit ist, Rechenkapazität der ALU in Anspruch zu nehmen. Funktion "not_in_pipe" prüft, ob die Aufgabe s im nächsten Takt nicht mehr in einer Pipelinestufe ist. Die Informationen für die Bildung der Funktionen "is_active" und "not_in_pipe" können beispielsweise, wie dies dargestellt ist, durch jeweils N Einzelsignale 104 und 105 bereitgestellt werden. In diesem Fall gibt ein einzelnes binäres Signal den Zustand eines einzelnen vorherbestimmten Kanals wieder. Die Register 101_0 bis 100_N – 1 werden in absteigender Reihenfolge durchlaufen und wenn die beiden entsprechenden Bits aus 104 und 105 der gerade betrachteten Aufgabe wahr sind, so wird diese Aufgabe als Aufgabe s ausgewählt und im nächsten Takt in die Pipeline eingeschoben. Parallel dazu wird s im nächsten Takt über Signal 107 in das Prioritätsregister 100_0 mit niedrigster Priorität eingeschoben. Zudem bringt das Schaltnetz 103 über Multiplexer 106_1 bis 106_N – 1 die Steuersignale 102_1 bis 102_N – 1 in die gewünschte Stellung, und zwar genau so, dass der gewählte Kanal s nicht mehr in den Registern 100_1 bis 100_N – 1 enthalten. ist. Die in den Registern 100_0 bis 100_N – 1 vorhandenen Kanäle werden hierzu um eine oder zwei Listenstellen nach oben in der Prioritätenliste geschoben. Die Listenstelle LPRIO[i] wird dann von dem vorhergehenden Element/Aufgabe eingenommen, das zuvor auf Listenstelle LPRIO[i – 1] war oder falls das ausgewählte Element s auf dieser Listenstelle LPRIO[i – 1] war oder bereits einer in der vorigen Iteration in der Liste gefunden wurde von dem vorvorgehenden Element/Aufgabe, das zuvor auf Listenstelle LPRIO[i – 2] war, so dass jede Aufgabe spätestens nach N Takten zur Bearbeitung ansteht, d. h. Listenstelle LPRIO[N – 1] innehat.
-
Die dargestellte Schaltungsanordnung kann bzgl. ihrer Struktur nahezu unmittelbar für das hier vorgeschlagene Verfahren angewandt werden. Analog zu den N-Eingangssignalen 104 und 105 werden allerdings zusätzliche N Eingangssignale 108 dem Schaltnetz 103 zugefügt. Eine neue Funktion "can_prefetch" kann somit durch Auswertung dieser Eingangssignale 108 realisiert werden. Der Algorithmus zur Ablaufplanung wird außerdem modifiziert. Hierzu wird eine Variable Cp (mit p ∊ {0, 1, ... N – 1}) eingeführt, mit der der zu priorisierende MCS-Kanal ausgewählt wird. p wird üblicherweise dabei vom Anwender des Systems zu Beginn festgelegt. Eine Änderungen von p kann aber auch während der Laufzeit des Systems erfolgen. Mittels einer weiteren Variablen h (h ∊ {0, 1}) wird durch den Algorithmus festgelegt, ob das Schaltnetz zur Aktualisierung der Prioritätenliste angehalten ist (h = 1) oder nicht (h = 0).
-
Eine weitere Optimierung, nämlich eine Instruktionsvorladung und Ablaufplanung bei einer geteilten zentralen Datenverarbeitung des Algorithmus zur Ablaufplanung kann optional auch zusammen mit der hierin vorgeschlagenen Änderung verwendet werden.
-
Der Algorithmus aus der Druckschrift
DE 10 2011 083 468 A1 aus Absatz [0054] wird unter Berücksichtig der in der Optimierung Instruktionsvorladung und Ablaufplanung bei einer geteilten zentralen Datenverarbeitung vorgeschlagenen Änderungen wie folgt modifiziert:
-
Weiterhin wird der Algorithmus aus der Druckschrift
DE 10 2011 083 468 A1 in Absatz [0058] wie folgt modifiziert:
-
Nach Festlegung des priorisierten Kanals p durch den Anwender arbeitet der Algorithmus zunächst gemäß der ursprünglichen Variante. Zur Überprüfung des Ausnahmeereignisses wird der MCS-Kanal p derartig konfiguriert, dass er beim Eintreffen des Ereignisses aktiviert wird (is_active(p) ist wahr) und nach Behandlung dieses Ausnahmeereignisses wird der Kanal p wieder deaktiviert, d. h. is_active(p) ist falsch. Mit dieser Annahme und dem vorstehend geänderten Algorithmus gilt: solange is_active(p) wahr ist, wird MCS-Kanal p vom Algorithmus der Ablaufplanung bevorzugt behandelt und die Aktualisierung der Prioritätenliste wird angehalten (h = 1). Wenn diese Art der Bevorzugung im Zusammenhang mit einer Instruktionsvorladung angewandt wird, so stehen nach Eintreten des Ausnahmeereignisses bis zum Abschluss der Behandlung des Ausnahmeereignisses die Ressourcen aller Pipelinestufen dem priorisierten Kanal p uneingeschränkt zur Verfügung. Durch diese Bevorzugung kann nun die ursprüngliche Worst-Case Execution-Time von T = N·TCLK den Nachbarkanälen von p für die Dauer der Behandlung des Ausnahmeereignisses nicht mehr garantiert werden. Nach Abschluss der Behandlung des Ausnahmeereignisses wird diese Bevorzugung jedoch aufgegeben und die ursprüngliche Worst-Case Execution-Time von T = N·TCLK gilt wieder für alle Kanäle i mit i ≠ p.
-
3 zeigt das zeitliche Verhalten an einem Beispiel. Die Darstellung zeigt oben den Verlauf von Signalen, und zwar ein erstes Signal 200 für C0 ist aktiv, ein zweites Signal 202 für C1 ist aktiv, ein drittes Signal 204 für C2 ist aktiv und ein viertes Signal 206 für Ci, i = 3 ... N – 1, ist aktiv. Eine Reihe 210 bezeichnet den Zyklus 0 bis 14. Weitere Reihen bezeichnen Stufe 0 220, Stufe 1 222, Stufe 2 224, Stufe 3 226, Stufe 4 228, Stufe 5 230 und Stufe 6 232.
-
Es wird angenommen, dass der priorisierte Kanal p = C2 ist, die Kanäle C0 und C1 sind über den gesamten Betrachtungszeitraum aktiv und ermöglichen immer Instruktionsvorladung. Weiter wird angenommen, dass das Störereignis in Zyklus 4 eintrifft.
-
Bei komplexeren Anwendungen kann es erforderlich sein, dass mehrere Ausnahmeereignisse behandelt werden müssen. In diesem Fall muss eine individuelle Gewichtung der Priorität für alle Ausnahmeereignisses vom Anwender vorgenommen werden. Ein Anwender kann hier z. B. definieren, dass ein Kanal p
0 für die Behandlung eines ersten Ausnahmeereignisses und ein zweiter Kanal p
1 für die Behandlung eines zweiten Ausnahmeereignisses verwendet wird. Wenn weiterhin definiert ist, dass beim gleichzeitigen Auftreten beider Störfälle das erste Ausnahmeereignis immer höhere Priorität hat, kann die folgende Änderung von Algorithmus aus Absatz [0054] der Druckschrift
DE 10 2011 083 468 A1 das erforderliche Verhalten leisten:
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-
- DE 102010003521 A1 [0006]
- DE 102010003512 A1 [0007]
- DE 102011083468 A1 [0008, 0011, 0030, 0031, 0035]