Source: https://www3.hhu.de/duesseldorfer-archiv/?p=2365
Timestamp: 2019-08-25 11:02:50
Document Index: 37107036

Matched Legal Cases: ['BGH', 'BGH', '§ 1032', 'Art. 7', '§ 9', '§ 242']

4b O 86/12 – Fehlercodierungsdatenblock | Düsseldorfer Entscheidungen
4b O 86/12 – Fehlercodierungsdatenblock
Düsseldorfer Entscheidung Nr.: 2158
Urteil vom 5. Dezember 2013, Az. 4b O 86/12
Der Kläger nimmt die Beklagte wegen Patentverletzung auf Unterlassung, Rechnungslegung, Vernichtung, Rückruf und Feststellung der Entschädigungs- und Schadensersatzpflicht in Anspruch.
Der Kläger ist Insolvenzverwalter über das Vermögen der A AG, über das mit Beschluss vom 01.04.2009 das Insolvenzverfahren eröffnet wurde. Die A AG geht auf eine Ausgründung der Halbleiterspeicherbranche seitens der B AG zurück. Sie ist eingetragene Inhaberin des Patents DE 10 2007 011 XXXB4 (nachfolgend: Klagepatent, Anlage K-C-1; K-C-2). Die B AG geht ihrerseits auf eine Ausgründung des Halbleitergeschäfts der C AG zurück.
Das Klagepatent wurde am 12.03.2007 angemeldet. Die Anmeldung wurde am 18.09.2008 und die Patenterteilung am 02.04.2009 veröffentlicht. Das Klagepatent steht in Kraft. Die Beklagte reichte am 01.10.2012 Nichtigkeitsklage beim Bundespatentgericht ein (Anlage B4), über die noch nicht entschieden ist.
Das Klagepatent betrifft eine Schaltung zum Erzeugen eines Fehlercodierungsdatenblocks, eine Vorrichtung mit der Schaltung und eine Vorrichtung zum Erzeugen eines Fehlercodierungsdatenblocks. Die vom Kläger geltend gemachten Patentansprüche 1 und 11 lauten:
Schaltung (100) zum Erzeugen eines Fehlercodierungsdatenblocks für einen ersten Datenblock mit
einem ersten Fehlercodierungsweg (120), der ausgebildet ist, den Fehlercodierungsdatenblock gemäß einer ersten Fehlercodierung zu erzeugen; und
einem zweiten Fehlercodierungsweg (130), der ausgebildet ist, den Fehlercodierungsdatenblock gemäß einer zweiten Fehlercodierung zu erzeugen;
wobei der Fehlercodierungsdatenblock für den ersten Datenblock abhängig von einem Steuerindikator (116) wahlweise durch den ersten (120) oder zweiten (130) Fehlercodierungsweg erzeugt wird, und der erste Fehlercodierungsweg eine Datenanordnungsveränderungsvorrichtung (122) aufweist, die ausgebildet ist einen ersten Datenanordnungsänderungsalgorithmus durchzuführen, und der zweite Fehlercodierungsweg eine Datenanordnungsveränderungsvorrichtung (132) aufweist, die ausgebildet ist einen zweiten von dem ersten unterschiedlichen Datenanordnungsänderungsalgorithmus durchzuführen.
Patentanspruch 11
einem Prozessor (310);
einem Speicher (320); und
einer Schaltung zum Erzeugen eines Fehlercodierungsdatenblocks für einen ersten Datenblock nach einem der Ansprüche 1 bis 10, die zwischen dem
Prozessor (310) und den Speicher (320) gekoppelt ist.
Nachfolgend abgebildet sind zeichnerische Darstellungen, die bevorzugte Ausführungsformen der Erfindung betreffen und der Klagepatentschrift entnommen sind.
Figur 1C zeigt ein Blockschaltbild eines Ausführungsbeispiels einer Schaltung mit einem Steuerindikator und mit einem gemeinsamen Fehlercodierer:
Figur 3 stellt ein Blockschaltbild einer Schaltung als Schnittstellenvorrichtung zwischen einer Speichersteuerung und einem Speicherchip dar:
Figur 4 zeigt ein Blockschaltbild eines Ausführungsbeispiels einer Schaltung als Speicherschnittstellenvorrichtung mit einem parallelen Eingang, einem Seriell-zu-Parallel-Wandler, einer programmierbaren logischen Einheit, einem Fehlercodierer und einem Modus-Register.
Die Beklagte greift „jede auf GDDR5-Speichertechnologie basierende Grafikkarte“ an (vgl. Bl. 93 GA; nachfolgend: angegriffene Ausführungsform). Sie bietet an und vertreibt in der Bundesrepublik Deutschland u.a. Workstationen, die Grafikkarten aufweisen, welche auf der GDDR5-Speichertechnologie basieren. Konkret enthalten die Grafikkarten GDDR5-DRAM-Bausteine, bei denen die Schaltung zum Erzeugen eines Fehlercodierungsdatenblocks standardisiert ist. Die Schaltungen entsprechen den Vorgaben des JEDEC-Standard GDDR5 SGRAM JESD212 (Dezember 2009) (nachfolgend: Standard). Als ein Beispiel nennt der Kläger die Grafikkarte „D 1,0 GB“ (vgl. Anlage K-C-4 und K-C-7). Die Grafikkarte beinhaltet einen Grafikprozessor des Typs „D“ und GDDR5-DRAM-Bausteine von E (vgl. Anlage K-C-7). Auf der Grafikkarte steht „Made in China“ (vgl. Anlage K-C-7, drittletzte Seite).
Der Signalweg im Schreib- und Lesevorgang kann nach dem übereinstimmenden Vortrag der Parteien anhand Figur 18 des Standards nachvollzogen werden, die nachfolgend eingeblendet wird:
Im März 1995 schlossen die C AG und E Co. Ltd. einen Kreuzlizenzvertrag über die Nutzung verschiedener Schutzrechte im Bereich der Halbleitertechnologie. Der Lizenzvertrag bezieht sich auf „Semiconductor Devices“ auf deren Definition im Vertrag verwiesen wird (vgl. Anlage 2 zum Protokoll).
Der Kläger meint, Vorrichtungen, die den Vorgaben des Standards folgten, machten zwangsläufig von der Lehre der Klagepatentansprüche 1 und 11 Gebrauch. Da der Standard die Benutzung der patentgemäßen Lehre voraussetze, verletze auch die angegriffene Ausführungsform das Klagepatent.
Der GDDR5 DRAM der angegriffenen Ausführungsform erzeuge Fehlercodierungsdatenblöcke im Sinne des Klagepatents für die Read/Write-Daten, die zur Überprüfung an einen Prozessor/Speichercontroller gesandt würden. Dies entspreche dem Ausführungsbeispiel gemäß Figur 4 des Klagepatents, bei der die Schaltung eine Speicherschnittstellenvorrichtung zwischen einem Prozessor und einem Speicher sei.
Figur 3 verdeutliche eine Schaltung, bei der die Daten einmal vom Prozessor zum Speicher beim Schreiben und beim Lesen in umgekehrter Richtung flössen. Dies seien zwei Fehlercodierungswege im Sinne des Klagepatents. Das Klagepatent beschreibe, dass der gleiche Fehlercodierungsalgorithmus für beide Fehlercodierungswege verwendet würde. Es würden aber unterschiedliche Datenanordnungsänderungsalgorithmen genutzt, und zwar zueinander quasi inverse Datenanordnungsänderungsalgorithmen. Nichts anderes schreibe Patentanspruch 1 vor. Die angegriffene Ausführungsform arbeite so.
Beim Lese- und Schreibzugriff lägen nach dem Standard unterschiedliche Fehlercodierungswege im Sinne des Klagepatents vor. Die Erzeugung des Fehlercodierungsdatenblocks sei abhängig von der Information im Mode-Register. Der Steuerindikator bestehe aus read/ write und den zugehörigen Modus-Register-Einträgen „read CRC/ write CRC“). Der Fehlercodierungsdatenblock werde dabei abhängig von einem Steuerindikator wahlweise durch den ersten oder den zweiten Fehlercodierungsweg erzeugt.
Der erste Datenanordnungsänderungsalgorithmus der ersten Datenanordnungsänderungsvorrichtung im Standard sei auf die Anordnung der 64 Datenbits bezogen, die parallel auf einmal aus den Speicherzellen ausgelesen und ggf. invertiert würden zusammen mit den 8 DBI-Bits in einer Matrix von 72 Zellen, die dann der CRC-Schaltung zugeführt werde, um den Fehlercodierungsdatenblock zu erzeugen. Der zweite Datenanordnungsänderungsalgorithmus der zweiten Datenanordnungsänderungsvorrichtung beziehe sich auf die Anordnung von jeweils 9 gleichzeitig empfangenen Daten (8 DQ-Daten und 1 DBI-Datum), die Eingabe in einen Seriell-Parallel-Wandler, der aus 8 nacheinander empfangenen 9 Bit-Paketen ein 72 Bit-Paket erzeuge, das nach einer Synchronisation der Schaltung zugeführt werde, um den Fehlercodierungsdatenblock zu erzeugen.
1. es bei Meidung eines für jeden Fall der Zuwiderhandlung vom Gericht festzusetzenden Ordnungsgeldes bis zu 250.000,00 EUR – ersatzweise Ordnungshaft – oder einer Ordnungshaft bis zu sechs Monaten, im Falle wiederholter Zuwiderhandlung bis zu insgesamt zwei Jahren, wobei die Ordnungshaft hinsichtlich der Beklagten an ihrem Geschäftsführer zu vollziehen ist, zu unterlassen,
a) Schaltungen zum Erzeugen eines Fehlercodierungsdatenblocks für einen ersten Datenblock mit einem ersten Fehlercodierungsweg, der ausgebildet ist, den Fehlercodierungsdatenblock gemäß einer ersten Fehlercodierung zu erzeugen; und einem zweiten Fehlercodierungsweg, der ausgebildet ist, den Fehlercodierungsdatenblock gemäß einer zweiten Fehlercodierung zu erzeugen;
wobei der Fehlercodierungsdatenblock für den ersten Datenblock abhängig von einem Steuerindikator wahlweise durch den ersten oder zweiten Fehlercodierungsweg erzeugt wird, und der erste Fehlercodierungsweg eine Datenanordnungsveränderungsvorrichtung aufweist, die ausgebildet ist einen ersten Datenanordnungsänderungsalgorithmus durchzuführen, und der zweite Fehlercodierungsweg eine Datenanordnungsveränderungsvorrichtung aufweist, die ausgebildet ist einen zweiten von dem ersten unterschiedlichen Datenanordnungsänderungsalgorithmus durchzuführen;
(DE 10 2007 011 XXXB4, Anspruch 1)
b) Vorrichtungen mit einem Prozessor, einem Speicher und einer Schaltung zum Erzeugen eines Fehlercodierungsdatenblocks für einen ersten Datenblock gemäß I.1.a), die zwischen dem Prozessor und dem Speicher gekoppelt ist;
(DE 10 1007 011 XXXB4, Anspruch 11)
2. dem Kläger darüber Rechnung zu legen, in welchem Umfang sie die zu 1. bezeichneten Handlungen seit dem 18. Oktober 2008 begangen hat, und zwar unter Angabe
c) der einzelnen Angebote, aufgeschlüsselt nach Angebotsmengen, -zeiten und -preisen sowie Produkt- und Typenbezeichnungen sowie der Namen und Anschriften der Angebotsempfänger,
der Beklagten vorbehalten bleibt, die Namen und Anschriften der nichtgewerblichen Abnehmer und der Angebotsempfänger statt dem Kläger einem von dem Kläger zu bezeichnenden, ihm gegenüber zur Verschwiegenheit verpflichteten, in der Bundesrepublik Deutschland ansässigen, vereidigten Wirtschaftsprüfer mitzuteilen, ob ein bestimmter Abnehmer oder Angebotsempfänger in der Aufstellung enthalten ist;
die Beklagte zum Nachweis der Angaben zu a) und b) die entsprechenden Einkaufs- und Verkaufsbelege (Rechnungen oder Lieferscheine) in Kopie vorzulegen hat, wobei geheimhaltungsbedürftige Details außerhalb der auskunftspflichtigen Daten geschwärzt werden dürfen;
die Angaben zu e) nur für die Zeit seit dem 2. Mai 2009 zu machen sind;
3. die in ihrem unmittelbaren oder mittelbaren Besitz oder Eigentum befindlichen, unter 1. bezeichneten Erzeugnisse selbst zu vernichten oder an einen von dem Kläger zu benennenden Gerichtsvollzieher zum Zwecke der Vernichtung auf ihre Kosten herauszugeben;
4. die unter 1. beschriebenen frühestens seit dem 02.04.2009 in Verkehr gebrachten Erzeugnisse gegenüber den gewerblichen Abnehmern unter Hinweis auf den gerichtlich (Urteil … vom …) festgestellten patentverletzenden Zustand der Sache und mit der verbindlichen Zusage zurückzurufen, etwaige Entgelte zu erstatten sowie Kosten der Rückgabe wie für Verpackung, Transport oder Lagerung zu übernehmen und die Erzeugnisse wieder an sich zu nehmen.
1. dass die Beklagte verpflichtet ist, dem Kläger für die zu I. 1. bezeichneten, in der Zeit vom 18. Oktober 2008 bis zum 1. Mai 2009 begangenen Handlungen eine angemessene Entschädigung zu zahlen;
2. dass die Beklagte verpflichtet ist, dem Kläger allen Schaden zu ersetzen, der ihm durch die zu I. 1. bezeichneten, seit dem 2. Mai 2009 begangenen Handlungen entstanden ist und noch entstehen wird.
hilfsweise das Verfahren bis zur rechtskräftigen Entscheidung über die Nichtigkeit des Klagepatents auszusetzen,
hilfsweise das Verfahren bis zum rechtskräftigen Abschluss des derzeit beim BGH unter dem Aktenzeichen X ZR 94/13 anhängigen Verfahrens (zuvor: OLG München, Az.: 6 U 541/12) auszusetzen.
Die Beklagte meint, dass das Klagepatent keinen Niederschlag in dem Standard gefunden habe. Die Merkmale 2 bis 6 des Anspruchs 1 des Klagepatents seien nicht standardgemäß. Die angegriffene Ausführungsform verwirkliche nicht diese Merkmale des Klagepatents.
Der Standard zeige weder mehrere Fehlercodierungswege, noch eine Auswahl eines Fehlercodierungswegs, noch verschiedene Datenanordnungsänderungsvorrichtungen auf.
Der Lese- und Schreibzugriff, der notwendigerweise unterschiedliche Wege der Datenblöcke mit sich bringe, benutze keine unterschiedlichen Fehlercodierungswege im Sinne des Klagepatents. Nach dem Klagepatent müssten für den ersten Datenblock, der beispielsweise in einem Schreibmodus geschrieben werden solle, zwei Fehlercodierungswege zur Verfügung stehen.
Es finde keine Wahl des Fehlercodierungsweges abhängig von einem Steuerindikator statt. Ein am Eingang 102 anliegender Datenblock müsse nach dem Klagepatent grundsätzlich unterschiedliche Wege der Codierung eischlagen können, die insbesondere verschiedene Datenanordnungsveränderungsvorrichtungen aufwiesen. Im Standard werde jeder an einem Eingang 102 (beispielsweise den DQ- und DBI-Pins) anliegende Datenblock auf demselben Weg einer Fehlercodierung unterzogen. Eine Auswahl von Fehlercodierungswegen im Sinne des Klagepatents finde nicht statt.
Der Standard arbeite nicht mit unterschiedlichen Datenanordnungsveränderungsvorrichtungen bzw. unterschiedlichen Datenanordnungsänderungsalgorithmen. Eine Datenanordnungsveränderungsvorrichtung im Sinne des Klagepatents erzeuge auf der Basis des ersten Datenblocks einen zweiten Datenblock, der an den Fehlercodierer ausgegeben werde. Gegenstand der Datenanordnungsveränderung sei die Vorbereitung auf einen Fehlererkennungs- oder –korrekturalgorithmus. Datenanordnungsveränderung im Sinne des Klagepatents bedeute also nicht lediglich die Umgruppierung von Daten, um die weitere Verarbeitung im System zu gewährleisten, sondern die spezifisch auf eine Verbesserung der Robustheit der Übertragung abzielende Änderung der Datenanordnung.
Die Beklagte erhebt den Einwand der Erschöpfung, da die GDDR5-DRAM-Bausteine von E aus lizenzierter Quelle stammten. Die Lizenzierung sei insolvenzfest.
Die Beklagte erhebt darüber hinaus die Einrede der fehlenden Klagbarkeit. Der Kläger verlagere den Rechtsstreit auf die Beklagte, statt sich mit E zu einigen oder ein Schiedsverfahren anzustrengen – wie es der Lizenzvertrag mit E vorsehe. Damit verstoße der Kläger gegen den mit E abgeschlossenen Vertrag. Die Beklagte könne sich darauf berufen.
Die Beklagte ist der Meinung, der Kläger sei auch auf kartellrechtlicher Grundlage gehindert, seine Ansprüche durchzusetzen. Er missbrauche gegenüber der Beklagten eine marktbeherrschende Stellung.
Die Beklagte ist schließlich der Ansicht, das Klagepatent werde sich als nicht rechtsbeständig erweisen. Im anhängigen Nichtigkeitsverfahren werde das Klagepatent vernichtet.
Im Übrigen sei das Verfahren bis zum rechtskräftigen Abschluss des beim BGH anhängigen Verfahrens (vormals OLG München, Az. 6 U 541/12) auszusetzen, da andernfalls die Gefahr sich widersprechender Entscheidungen bestehe.
Wegen der weiteren Einzelheiten des Sach- und Streitstandes wird auf die wechselseitigen Schriftsätze der Parteien nebst Anlagen sowie auf das Protokoll der mündlichen Verhandlung vom 31.10.2013 Bezug genommen. Die beigezogenen Akten der Parallelverfahren (4b O 39/11, 4b O 85/12, 4b O 87/12 und 4b 88/12) waren Gegenstand der mündlichen Verhandlung.
Der Zulässigkeit der Klage steht nicht die fehlende Klagbarkeit der geltend gemachten Ansprüche entgegen. Die Beklagte beruft sich insofern auf eine Schiedsgerichtsklausel im Lizenzvertrag mit E. Um dieser aus dem Weg zu gehen, nehme er die Beklagte in Anspruch und verlagere den Streit auf diese. Dieser Einwand greift nicht durch. Die Schiedsgerichtsklausel wirkt lediglich inter partes, so dass allenfalls Rechtsstreitigkeiten zwischen den Vertragsparteien der staatlichen Gerichtsbarkeit entzogen sind, § 1032 ZPO. Darüber hinaus hindert sie den Kläger nicht, Ansprüche gegen Dritte geltend zu machen, selbst wenn sie im Zusammenhang mit dem Lizenzvertrag mit E stehen. Etwas anderes ergibt sich auch nicht aus dem von der Beklagten zitierten Art. 7.2 des Lizenzvertrages. Dieser betrifft lediglich die Absicht, auf Anfrage in Vertragsverhandlungen für weitere Patente zu treten, die Halbleiterbausteine betreffen, welche nicht unter den Lizenzvertrag fallen. Auch die Präambel gibt in dieser Hinsicht nichts her. Allein die Absicht, Streitigkeiten im gegenseitigen Einvernehmen beziehungsweise vor einem Schiedsgericht zu lösen, entfaltet keine rechtliche Bindungswirkung im Hinblick auf die Klagbarkeit von Ansprüchen gegen Dritte.
Dem Kläger stehen die geltend gemachten Ansprüche auf Unterlassung, Rechnungslegung, Vernichtung, Rückruf und Feststellung der Schadensersatzpflicht gemäß den §§ 9, 139 Abs. 1, 139 Abs. 2, 140b Abs. 1, Abs. 3 PatG, §§ 242, 259 BGB, 140a Abs. 1, S. 1, Abs. 3 S. 1, 1. Alt. PatG nicht zu.
Das Klagepatent bezieht sich auf Schaltungen zum Fehlercodieren.
Das Klagepatent führt einleitend aus, dass die Anforderungen an die Datenübertragungsgeschwindigkeit von Systemen ständig wachsen. Dabei komme der Fehlererkennung und/oder der Fehlerkorrektur eine Schlüsselrolle zu, um eine fehlerlose Datenübertragung zu gewährleisten und/oder die Systembandbreite weiter zu erhöhen (Klagepatentschrift, Abs. [0002]).
Es gebe zwei Hauptgründe für den Einsatz von Fehlererkennungscodierung und möglicherweise von Fehlerkorrekturcodierung. Der erste Grund liege darin, dass neue Anwendungen wie beispielsweise Graphikspeicher Befehlssätze einsetzten. Ein Bitfehler in einem Code bzw. einem Befehlssatz könne dazu führen, dass das System sich „aufhänge“, d.h. nicht länger funktioniere. Der zweite Grund bestehe darin, dass der Einsatz von Fehlererkennungs- und –korrekturcodes es ermögliche, die Systembandbreite zu erhöhen (Klagepatentschrift, Abs. [0050]).
Das Klagepatent betont, dass verschiedene Fehlerarten auftreten könnten, die erkannt bzw. korrigiert werden müssten. Wünschenswert sei daher der Einsatz eines Konzepts, das Fehler verschiedener Fehlerarten effizient erkennen und korrigieren könne (Klagepatentschrift, Abs. [0003] und [0004]).
Das Klagepatent geht davon aus, dass eine optimale Fehlerkorrektur immer auch von den Charakteristika der übertragenen Daten abhängt. Bei jeder Art von Fehlererkennungscodierung bzw. Fehlerkorrekturcodierung müssten daher die richtigen Charakteristika ausgewählt werden. Aus einer Vielzahl möglicher Algorithmen (wie z.B. polynombasierter Codes wie CRC-Codes) müsste also der beste Algorithmus mit dem besten Polynom ausgesucht werden. Auch müsse die Anordnung für die Datenverarbeitung gewählt werden, die beeinflusse, welche Art von Fehlern am besten erkannt bzw. korrigiert werden könne (vgl. Klagepatentschrift, Abs. [0051].
Vor diesem Hintergrund stellt sich das Klagepatent die Aufgabe (das technische Problem), Schaltungen zum Fehlercodieren bereit zu stellen, die abhängig von den übertragenen Daten verschiedene Fehlerkorrekturen zulassen. Dabei sollen die Schaltungen eine flexible Auswahl beispielsweise der Datenverarbeitungsreihenfolge und des CRC-Polynoms abhängig von den übertragenen Daten ermöglichen (vgl. Klagepatentschrift Abs. [0055], [0003], [0004] und [0008]).
Diese Aufgabe löst das Klagepatent u.a. durch eine Schaltung nach Anspruch 1 und eine Vorrichtung nach Anspruch 11 mit den folgenden Merkmalen:
(1) Schaltung (100) zum Erzeugen eines Fehlercodierungsdatenblocks für einen ersten Datenblock
(2) mit einem ersten Fehlercodierungsweg (120), der ausgebildet ist, den Fehlercodierungsdatenblock gemäß einer ersten Fehlercodierung zu erzeugen,
(3) mit einem zweiten Fehlercodierungsweg (130), der ausgebildet ist, den Fehlercodierungsdatenblock gemäß einer zweiten Fehlercodierung zu erzeugen;
(4) wobei der Fehlercodierungsdatenblock für den ersten Datenblock abhängig von einem Steuerindikator (116) wahlweise durch den ersten (120) oder zweiten (130) Fehlercodierungsweg erzeugt wird;
(5) der erste Fehlercodierungsweg eine Datenanordnungsveränderungsvorrichtung (122) aufweist, die ausgebildet ist, einen ersten Datenanordnungsänderungsalgorithmus durchzuführen;
(6) der zweite Fehlercodierungsweg eine Datenanordnungsveränderungsvorrichtung (132) aufweist, die ausgebildet ist, einen zweiten von dem ersten unterschiedlichen Datenanordnungsänderungsalgorithmus durchzuführen.
(2) mit einem Prozessor (310),
(3) einem Speicher (320 ) und
(4) einer Schaltung zum Erzeugen eines Fehlercodierungsdatenblocks für einen ersten Datenblock nach einem der Ansprüche 1 bis 10, die zwischen dem
Gegenstand von Patentanspruch 1 ist eine Schaltung, deren Funktion es ist, einen Fehlercodierungsdatenblock für einen ersten Datenblock zu erzeugen (Merkmal 1). Dabei weist die Schaltung zwei Fehlercodierungswege auf, die jeweils ausgebildet sind, den Fehlercodierungsdatenblock gemäß einer ersten bzw. einer zweiten Fehlercodierung zu erzeugen (Merkmale 2 und 3).
Je nachdem, ob der erste oder der zweite Fehlercodierungsweg eingeschlagen wird, können demnach zwei verschiedene Fehlercodierungsdatenblöcke entstehen. Zentraler Punkt der Erfindung ist damit, dass für einen Datenblock, der beispielsweise in einem Schreibmodus geschrieben werden soll (vgl. Klagepatentschrift, Abs. [0085]), – je nach Fehlerart – eine Auswahl unter verschiedenen Fehlercodierungswegen möglich ist (vgl. Klagepatentschrift, Abs. [0019]). Sobald der Datenblock in das System eingegeben wird, müssen diese unterschiedlichen Wege eröffnet sein. Welcher Weg für den Datenblock eingeschlagen wird, entscheidet der Steuerindikator (vgl. Klagepatentschrift, Abs. [0022], [0026], [0028]).
Das Klagepatent zielt damit auf eine flexible Lösung ab, nach der abhängig von der in dem Datenblock auftretenden Fehlerart die bestmögliche Fehlererkennung bzw. Fehlerkorrektur im Hinblick auf diesen einen Datenblock erreicht werden soll. Die beste Fehlerkennung bzw. Fehlerkorrektur soll durch Auswahl und Kombination eines geeigneten Datenveränderungsalgorithmus und eines geeigneten Fehlercodierungsalgorithmus bewirkt werden (vgl. Klagepatentschrift, Abs. [0035] und Abs. [0037]). Durch die flexible Anpassung der Fehlercodierung soll die Fehlererkennungs- bzw. Fehlerkorrekturrate erhöht werden.
Demnach ergibt sich aus dem Wortlaut des Klagepatentanspruchs 1 („wahlweise“ in Merkmal 4) und aus der zugehörigen Beschreibung (Abs. [0019], [0055], [0076]) aber auch aus der soeben geschilderten, mit der Bereitstellung verschiedener Fehlercodierungswege verbundenen Funktion, dass zwischen dem ersten und zweiten Fehlercodierungsweg eine Wahl möglich sein soll. Es muss die Möglichkeit bestehen, für ein und denselben ersten Datenblock den ersten oder den zweiten Fehlercodierungsweg zu wählen. Der erste Datenblock muss sowohl im ersten, als auch im zweiten Fehlercodierungsweg codiert werden können, wobei mittels des Steuerindikators letztlich einer der beiden Fehlercodierungswege ausgewählt wird.
Nichts anderes ergibt sich aus den Absätzen [0084] ff. der Klagepatentschrift. Abs. [0085] der Klagepatentschrift beschreibt das Erzeugen eines Fehlercodierungsdatenblocks nach Auswahl eines bestimmten Datenanordnungsveränderungsalgorithmus und eines Fehlercodierungsalgorithmus beispielhaft in Bezug auf einen Schreibvorgang. Der Verweis auf einen Schreibvorgang und einen Lesevorgang in Absatz [0084] gibt hingegen nichts dafür her, dass jeder Vorgang für sich als Fehlercodierungsweg aufgefasst werden kann. Figur 3, auf den Abs. [0085] Bezug nimmt, verdeutlicht, wie der Datenblock im Schreibmodus von dem Eingang (102) bzw. (222E) der Datenanordnungsänderungsvorrichtung (222) zum Speicher (320) geführt wird. Dabei wird abhängig von dem Steuerindikator (116) in der Datenanordnungsveränderungsvorrichtung der für den Datenblock optimale Datenanordnungsänderungsalgorithmus gewählt, um einen zweiten Datenblock zu erzeugen (wie in Figur 4 dargestellt). Dieser zweite Datenblock enthält eine Datenanordnung, die zu einer guten Fehlererkennung bzw. Fehlerkorrektur durch den Fehlercodierer (224) führt. Figur 3 zeigt damit eine Schaltung, bei der Daten, die geschrieben werden sollen, vom Prozessor zum Speicher fließen. In dem beschriebenen Ausführungsbeispiel werden die Informationen des ersten Datenblocks am Ende des Schreibvorgangs zusammen mit dem Fehlercodierungsdatenblock in dem Speicher (320) gespeichert.
Abs. [0085] beschreibt sodann, dass die Korrektheit der Informationen des ersten Datenblocks bei einem anderen Vorgang, nämlich dem Auslesevorgang, über die Auswertung des Fehlercodierungsdatenblocks überprüft werden kann. Diese Überprüfung der Informationen erläutert Abs. [0086] der Klagepatentschrift näher unter Bezugnahme auf Figur 2. Danach gibt es zwei Möglichkeiten. Sind die Informationen des ersten Datenblocks in Form des ersten Datenblocks zusammen mit dem Fehlercodierungsdatenblock abgelegt, werden die beiden Blöcke ausgelesen und der erste Datenblock wird – ähnlich wie in dem Schreibvorgang – gemäß einer Schaltung verarbeitet. Das bedeutet, dass er in einer Datenanordnungsveränderungseinheit in einen zweiten Datenblock mit einer zweiten Datenanordnung umgewandelt wird. Sodann wird derselbe Fehlercodierungsalgorithmus angewandt wie zuvor beim Schreibvorgang. So wird ein Fehlercodierungsdatenblock basierend auf dem ersten Datenblock erzeugt. Dieser Fehlercodierungsdatenblock wird mit dem gespeicherten Fehlercodierungsdatenblock verglichen. Stimmen die Fehlercodierungsdatenblöcke überein, sind die Informationen des ausgelesenen ersten Datenblocks korrekt.
Im zweiten Fall sind die Informationen des ersten Datenblocks in Form eines zweiten Datenblocks in dem Speicher abgespeichert (vgl. Klagepatentschrift, Abs. [0087]). Werden beim Lesevorgang der zweite Datenblock und der Fehlercodierungsdatenblock ausgelesen, wird der zweite Datenblock (der bereits eine Datenanordnungsänderungsvorrichtung durchlaufen hat) direkt einem Fehlercodierer zugeführt. Dort wird eine Fehlercodierung gemäß demselben Fehlercodierungsalgorithmus durchgeführt, der bereits beim Schreibvorgang angewandt wurde. Der dadurch erzeugte zweite Fehlercodierungsdatenblock wird dann mit dem gespeicherten Fehlercodierungsdatenblock verglichen. Um den ersten Datenblock wieder herzustellen, wird dann beispielsweise der inverse Datenanordnungsänderungsalgorithmus zu dem Datenanordnungsänderungsalgorithmus, der im Schreibvorgang verwendet wurde, durchgeführt.
Damit beschreiben die Abätze [0085] bis [0087] den Schreibvorgang und den Auslesevorgang nicht als mehrere unterschiedliche Fehlercodierungswege. Ein Fehlercodierungsweg ist immer nur bezogen auf einen Datenblock in einem Modus. In den Absätzen [0085] ff. geht es lediglich darum, festzustellen, ob die nach dem bereits beendeten Schreibvorgang abgespeicherten Informationen des ersten Datenblocks beim späteren, davon zu unterscheidenden Auslesevorgang richtig wiedergegeben werden. Dazu werden Fehlercodierungsdatenblöcke miteinander verglichen, die im ersten Fall (erster Datenblock wurde im Speicher abgespeichert) identisch hergestellt werden und im zweiten Fall (zweiter Datenblock wurde im Speicher abgespeichert) nahezu identisch (unter Auslassung des in diesem Fall nicht notwendigen Durchlaufens der Datenanordnungsänderungsvorrichtung). Das Klagepatent stellt damit den Schreibvorgang einerseits und den Auslesevorgang andererseits nicht als zwei unterschiedliche Fehlercodierungswege dar. Schreib- und Lesevorgang sind vielmehr zwei unterschiedliche Modi, bei denen theoretisch jeweils eine Auswahl eines Fehlercodierungsweges von mehreren Fehlercodierungswegen stattfinden könnte und jedenfalls in Bezug auf den Schreibvorgang gemäß der Beschreibungsstelle in Abs. [0085] auch stattgefunden hat (vgl. Abs. [0085]). Da die beiden Vorgänge aufeinander bezogen sind, wird beim Auslesevorgang im Ergebnis derselbe Fehlercodierungsweg genommen, der bereits beim Schreibvorgang ausgewählt wurde. Der inverse Datenanordnungsänderungsalgorithmus dient lediglich dazu, aus dem zweiten Datenblock wieder den ersten Datenblock herzustellen, nicht aber zur Erzeugung eines Fehlercodierungsweges. Mit unterschiedlichen Fehlercodierungswegen im Sinne des Klagepatents hat dies nichts zu tun.
Gemäß den Merkmalen 5 und 6 weisen der erste und der zweite Fehlercodierungsweg eine Datenanordnungsveränderungsvorrichtung auf, die ausgebildet ist einen ersten Datenanordnungsänderungsalgorithmus bzw. einen zweiten von dem ersten unterschiedlichen Datenanordnungsänderungsalgorithmus durchzuführen.
Die Datenanordnungsveränderungsvorrichtung soll die Daten des Datenblocks auf den Fehlererkennungs- bzw. Fehlerkorrekturalgorithmus vorbereiten. Das Klagepatent nennt z.B. zeitliche und räumliche Bündelfehler, die von einem Fehlercodierungsalgorithmus besser erkannt werden, wenn die Daten des ersten Datenblocks entsprechend umsortiert wurden (vgl. Klagepatentschrift, Abs. [0071] ff.).
Konkret erzeugt die Datenanordnungsveränderungsvorrichtung auf Basis des eingegebenen ersten Datenblocks mit Hilfe eines bestimmten Datenanordnungsveränderungsalgorithmus einen zweiten Datenblock, der an den Fehlercodierer weitergegeben wird (Klagepatentschrift, Abs. [0023] und [0069]). Dabei verändert die Datenanordnungsveränderungsvorrichtung die Anordnung der Daten in dem ersten Datenblock in der Art und Weise, dass ein zweiter Datenblock mit einer geänderten Datenanordnung entsteht. Dieser zweite Datenblock ist nichts anderes als der erste Datenblock, allerdings durch Änderung der Anordnung der Daten aufbereitet für den nun folgenden Fehlererkennungs- bzw. Fehlerkorrekturalgorithmus. Mit Hilfe dieses Algorithmus wird nun der Fehlercodierungsdatenblock für den ersten Datenblock erzeugt.
Ein „Seriell-Parallel-Wandler“ allein stellt nicht zwingend eine Datenanordnungsveränderungsvorrichtung im Sinne des Klagepatents dar. Der Begriff beschreibt lediglich, in welcher zeitlichen Reihenfolge – nacheinander oder gleichzeitig – Daten übertragen werden. Eine Änderung der Datenanordnung ist damit nicht zwingend verbunden. Denn die Bits liegen sowohl bei der seriellen wie auch bei der parallelen Übertragung in einer bestimmten Anordnung „sortiert“ vor. Eine Veränderung der Datenanordnung liegt erst dann vor, wenn die Daten bei der Weiterverarbeitung in einer anderen Anordnung bzw. Reihenfolge vorliegen als vorher. Dies ist beispielsweise der Fall, wenn bei einer Speichermatrix die Werte spaltenweise eingetragen, jedoch zeilenweise ausgelesen werden (vgl. Klagepatentschrift, Abs. [0070]).
Auch aus dem Ausführungsbeispiel 4 folgt, dass erst durch die Seriell-zu-Parallel-Wandlung und die Reihenfolgenänderung im ersten oder zweiten Teilbereich der erste bzw. der zweite Datenanordnungsänderungsalgorithmus realisiert wird (vgl. Klagepatentschrift, Abs. [0060]). In Figur 4 wird die Datenanordnungsänderungsvorrichtung durch den Seriell-zu-Parallel-Wandler, die programmierbare logische Einheit und den Demultiplexer gebildet (Klagepatentschrift, Abs. [0058]).
Vor dem Hintergrund dieser Auslegung lässt sich jedenfalls nicht feststellen, dass durch Angebot und Vertrieb der angegriffenen Ausführungsform (die unstreitig nach dem Standard ausgestaltet ist) die Merkmale 2, 3, 5 und 6 des Anspruchs 1 des Klagepatents verletzt werden. Denn es ist nicht erkennbar, dass diese Merkmale ihren Niederschlag im Standard gefunden haben.
Es ist nicht erkennbar, dass in dem Standard mehrere Fehlercodierungswege im Sinne des Klagepatents beschrieben werden (Merkmale 2 und 3). Auch eine Auswahl eines von mehreren Fehlercodierungswegen lässt sich dem Standard nicht entnehmen.
Entgegen der Auffassung des Klägers lässt sich nicht feststellen, dass die Erzeugung des Fehlercodierungsdatenblocks im Fall eines Lesevorgangs (READ CRC) und die Erzeugung des Fehlercodierungsdatenblocks im Fall eines Schreibvorgangs (WRITE CRC) zwei Fehlercodierungswege im Sinne des Klagepatents sind. Denn für ein und denselben Datenblock sind nicht mehrere Wege zur Fehlercodierung eröffnet. Vielmehr steht bei der angegriffenen Ausführungsform der Signalweg bereits fest, wenn der erste Datenblock überhaupt erst entsteht – beim Lesevorgang am Ausgang des Memory Core bzw. der Invertierung, beim Schreibvorgang an den Eingängen DQ0-DQ7 und DBI bzw. hinter dem Seriell-Parallel-Wandler. Auch innerhalb des Schreib- und des Lesevorgangs stehen keine zwei Fehlercodierungswege zur Verfügung.
Der eingeschlagene Weg – und damit auch die Art der Datenanordnung des Datenblocks, der bei CRC8 ankommt – ist für jeden Datenblock, der geschrieben wird, exakt der gleiche. In Figur 18 des Standards ist es für den an den Eingängen „DQ0-DQ7, DBI0#“ bzw. hinter dem „Serial to Parallel Converter“ entstandenen Datenblock der ab „DQ0-DQ7, DBI0#“ bzw. an dem „Serial to Parallel Converter“ nach oben verlaufende Weg bis zu „CRC8“. Dafür, dass ab „DQ0-DQ7, DBI0‘“ oder ab dem „Serial to Parallel Converter“ ein anderer Weg eingeschlagen werden oder auf dem eingeschlagenen Weg zwischen zwei unterschiedlichen Datenanordnungsänderungsalgorithmen gewählt werden kann, bestehen keine Anhaltspunkte.
Aus Figur 18 ergibt sich, dass der Weg des Datenblocks im Lesemodus, der am Ausgang des „Dram Core“ bzw. hinter „DBI“ entsteht, vom „DRAM Core“ zu „CRC8“ lediglich über einen Signalweg (nach unten und sodann rechts hoch) läuft. Auch hier bestehen keine Anhaltspunkte dafür, dass nach Einschlagen dieses alternativlosen Weges zwischen zwei Datenanordnungsänderungsalgorithmen gewählt werden kann. Im Übrigen behauptet auch der Kläger nicht, dass der Datenblock im Schreibmodus bzw. der Datenblock im Lesemodus innerhalb eines dieser Modi unterschiedliche Fehlercodierungswege beschreiten kann.
Dem Standard lassen sich darüber hinaus nicht zwei Datenanordnungsänderungsvorrichtungen entnehmen, die ausgebildet sind, unterschiedliche Datenanordnungsänderungsalgorithmen auszuführen (Merkmale 5 und 6).
Es lässt sich nicht feststellen, dass im Standard Daten mit Blick auf die nachfolgende Fehlererkennung durch den Fehlercodierer (im Standard: CRC8) umgeordnet werden. Es ist nicht erkennbar, dass der Kasten „DBI“ in Figur 18 des Standards unterhalb des „DRAM Core“, leicht links versetzt, oder der „Seriell to Parallel Converter“ (Kasten: „8:1“) oben links in Figur 18 des Standards die vom Klagepatent geforderte Datenumgruppierung innerhalb eines Datenblocks leisten kann.
In den Kasten „DBI“ (“Data Bus Inversion“) werden 64 Datenbits im Auslesemodus eingegeben, die parallel auf einmal aus den Speicherzellen („DRAM Core“) ausgelesen wurden. Diese Datenbits werden im Kasten „DBI“ ggf. invertiert und zusammen mit 8 DBI-Bits in einer Matrix von 72 Zellen ausgegeben. Die 72 Bits werden sodann dem Fehlercodierer „CRC8“ zugeführt, um den Fehlercodierungsdatenblock zu erzeugen. Es ist bereits nicht erkennbar, dass allein die Invertierung im DBI-Block eine patentgemäße Anordnungsveränderung bewirkt. Aus der in Bezug genommenen Figur 18 ergibt sich schon nicht, dass das Hinzufügen der 8 DBI-Bits zu den 64 Bits dazu dient, die Daten des 64-Bits-Datenblocks in der Art und Weise anzuordnen, dass der Datenblock durch die andere Anordnung seiner Daten auf die Fehlererkennung vorbereitet wird. Darüber hinaus dürfte die CRC-Codierung beim Lesevorgang der Überprüfung eines Fehlercodierungsdatenblocks und nicht der Erstellung eines ersten Fehlercodierungsdatenblocks dienen. Während es bei der Erstellung des ersten Fehlercodierungsdatenblocks im Schreibvorgang denkbar ist, dass auch ein Datenblock mit 64 Bits (als ein Vielfaches von 8) dem Fehlercodierer CRC8 zugeführt wird, dürfte dies bei der Überprüfung eines Fehlercodierungsdatenblocks im Lesevorgang nicht der Fall sein. Denn erst die 8 DBI, die die Invertierung anzeigen, machen aus dem Datenblock einen Datenblock, der der Überprüfung unterzogen werden soll. Demnach setzt die CRC8-Codierung im Lesevorgang einen 72-Bit-Datenblock voraus. Der 72-Bits-Datenblock entsteht jedoch erst nach der Invertierung. Dass aber die Daten des im Lesevorgang überhaupt erst codierungsfähigen 72-Bits-Datenblock vor Erreichen des CRC8 umgruppiert werden, ist Figur 18 bereits nicht zu entnehmen.
In Bezug auf den Schreibvorgang ist ebenfalls nicht erkennbar, dass die jeweils 9 gleichzeitig empfangenen Daten (8 DQ-Daten und 1 DBI-Datum), die in den Kasten „8:1“ oben links in Figur 18 des Standards, dem „Serial to Parallel Converter“, eingegeben werden, in dem 72 Bit-Paket anders angeordnet sind als zuvor, bevor sie dem „CRC8“ zugeführt werden. Der Verweis auf die Ausführungsbeispiele und die Beschreibung des Klagepatents reicht nicht, da der Seriell-zu-Parallel-Wandler alleine nicht zwingend eine Datenanordnungsveränderungsvorrichtung bildet.
Da eine Verletzung von Anspruch 1 des Klagepatents nicht feststellbar ist, scheidet auch die Verletzung von Anspruch 11 des Klagepatents, die die Parteien im Übrigen nicht weiter diskutieren, aus.
← 4b O 200/12 – Patentanwaltlicher Falschberatung 4b O 78/13 – Ringschloss →