Rechtsprechung / BPatG / 2024
BPatG Beschluss vom 16.01.2024 – 17 W (pat) 33/20
17. Senat · ECLI:DE:BPatG:2024:160124B17Wpat33.20.0
BUNDESPATENTGERICHT
17 W (pat) 33/20 _______________________
(Aktenzeichen)
Verkündet am
16. Januar 2024
…
B E S C H L U S S
In der Beschwerdesache
…
betreffend die Patentanmeldung 11 2012 002 465.6
hat der 17. Senat (Technischer Beschwerdesenat) des Bundespatentgerichts auf
die mündliche Verhandlung vom 16. Januar 2024 unter Mitwirkung des
Vorsitzenden Richters Dipl.-Phys. Dr. Morawek, der Richterin Akintche, des
Richters Dipl.-Phys. Dr. Forkel und des Richters Dipl.-Phys. Dr. Städele
beschlossen:
ECLI:DE:BPatG:2024:160124B17Wpat33.20.0
Die Beschwerde wird zurückgewiesen.
G r ü n d e
I.
Die vorliegende Patentanmeldung 11 2012 002 465.6 trägt die Bezeichnung
„ Grafikprozessor mit nicht blockierender gleichzeitiger Architektur “
und geht aus einer PCT-Anmeldung hervor, die am 15. Juni 2012 unter
Inanspruchnahme einer US-amerikanischen Priorität vom 16. Juni 2011 (US
61/497,915) eingereicht und in englischer Sprache als WO 2012 / 174 334 A1 und
in deutscher Übersetzung als DE 11 2012 002 465 T5 veröffentlicht worden ist. Die
Patentanmeldung wurde durch Beschluss der Prüfungsstelle für Klasse G06F des
Deutschen Patent- und Markenamts vom 7. Oktober 2020 zurückgewiesen, da die
Gegenstände der Patentansprüche 1 nach dem Hauptantrag sowie den
Hilfsanträgen 1 bis 3 nicht auf einer erfinderischen Tätigkeit des Fachmanns
beruhten, soweit sie ein technisches Problem mit technischen Mitteln lösten und
damit eine Erfindung auf Gebieten der Technik beträfen.
Gegen diesen Beschluss ist die Beschwerde der Anmelderin gerichtet.
Die Anmelderin stellt den Antrag,
den Beschluss der Prüfungsstelle für Klasse G06F des Deutschen Patent-
und Markenamts vom 7. Oktober 2020 aufzuheben und das Patent auf der
Grundlage folgender Unterlagen zu erteilen:
Hauptantrag:
Patentansprüche 1 bis 23, eingegangen am 25. September 2020,
Beschreibung Seiten 1 bis 47, eingegangen am 16. Dezember 2013
sowie
12 Blatt Zeichnungen mit Figuren 1 bis 16, eingegangen am 16.
Dezember 2013;
Hilfsantrag 1:
Patentansprüche 1 bis 23, eingegangen am 25. September 2020,
Beschreibung und Zeichnungen wie Hauptantrag;
Hilfsantrag 2:
Patentansprüche 1 bis 26, eingegangen am 25. September 2020,
Beschreibung und Zeichnungen wie Hauptantrag;
Hilfsantrag 3:
Patentansprüche 1 bis 23, eingegangen am 7. Oktober 2020,
Beschreibung und Zeichnungen wie Hauptantrag;
Hilfsantrag 4:
Patentanspruch 1, überreicht in der mündlichen Verhandlung,
Patentansprüche 2 bis 11 basierend auf Hilfsantrag 3,
Beschreibung und Zeichnungen wie Hauptantrag.
Der geltende Patentanspruch 1 gemäß Hauptantrag lautet (mit einer Gliederung
versehen, die an die Gliederung aus dem Zurückweisungsbeschluss angelehnt ist):
A1
Verarbeitungssystem, das
in der Lage
ist, gleichzeitige
Grafikberechnung durchzuführen, umfassend:
A2
eine Vielzahl
von Berechnungselementen, wobei
jedes
Berechnungselement einen lokalen Speicher und eine Vielzahl von
arithmetisch-logischen Einheiten (ALU) umfasst,
A2.1
wobei die jeweiligen arithmetisch-logischen Einheiten jedes der
Vielzahl von Berechnungselementen von einem gemeinsamen
Programmzähler aus betrieben werden
A3
einen Scheduler für die Berechnungselemente,
A3a
wobei der Scheduler einen Grob-Scheduler (44) und eine Paketeinheit
(105, 205) umfasst und
A3b
betriebsfähig ist, Eingaben zu empfangen, die Instanzen einer ersten
an der Vielzahl von Berechnungselementen durchzuführenden
Berechnungsart definieren,
A3.1
wobei jede Berechnungsinstanz mit
einem jeweiligen Datenelement, das in einem lokalen Speicher eines
der Vielzahl von Berechnungselementen gespeichert ist,
und einem jeweiligen Scheduling-Schlüssel
assoziiert ist,
A3.2
wobei der Scheduler betriebsfähig ist, die Berechnungsinstanzen nach
ihren Scheduling-Schlüsseln zu Paketen zu gruppieren und ein Paket
auszugeben, das eine Vielzahl von Berechnungsinstanzen umfasst;
und
A4
einen Verteiler, der betriebsfähig ist, das Paket zu empfangen und die
Berechnungsinstanzen auf die Berechnungselemente des Clusters
zur Durchführung auf diesen zu verteilen,
A4.1
wobei
jedes
der Berechnungselemente
betriebsfähig
ist,
Berechnungsinstanzen zur gleichzeitigen Durchführung durch ihre
ALUs zu kombinieren, für welche dieselbe Art von Berechnung
durchzuführen ist,
A4.2
und die sich auf verschiedene Datenelemente beziehen, die in ihrem
lokalen Speicher gespeichert sind, um gleichzeitig die Berechnung für
die kombinierten Berechnungsinstanzen durchzuführen.
Patentanspruch 1 nach Hilfsantrag 1 beruht auf Patentanspruch 1 nach
Hauptantrag, wobei Merkmal A3.2 durch das Merkmal
A3.2Hi1 wobei der Scheduler betriebsfähig ist, die Berechnungsinstanzen nach
ihren Scheduling-Schlüsseln zu Paketen zu gruppieren und ein Paket
auszugeben, das eine Vielzahl von Berechnungsinstanzen umfasst,
die einen Scheduling-Schlüssel teilen; und
ersetzt wird (Änderungen gegenüber Hauptantrag markiert).
Patentanspruch 1 nach Hilfsantrag 2 unterscheidet sich von Patentanspruch 1
nach Hauptantrag dadurch, dass zwischen den Merkmalen A3.1 und A3.2 das
Merkmal
A3.3Hi2 wobei jede Berechnungsinstanz einen Identifikator für ein als
Scheduling-Schlüssel verwendetes Datenelement umfasst,
eingeschoben wird.
Patentanspruch 1 nach Hilfsantrag 3 geht aus Patentanspruch 1 nach Hilfsantrag
2 hervor, indem die zwischen den Merkmalen A3.3Hi2 und A3.2 das Merkmal
A3.4Hi3 wobei das als Scheduling-Schlüssel verwendete Datenelement einen
Offset des globalen Speichers, eine Verzweigungsbedingung, eine
Speicherreferenzen einer Berechnungsinstanz, eine Speicheradresse
einer Hauptspeicherleseoperation und/oder eine Ausgangsspeicheradresse eines ersten Elements einer Beschleunigerstruktur umfasst.
eingefügt wird.
Bei Patentanspruch 1 nach Hilfsantrag 4 fehlt gegenüber Patentanspruch 1 nach
Hauptantrag das Merkmal A3a; ferner wurden die Merkmale A3.1 und A3.2 durch
die Merkmale
A3.1Hi4 wobei
jede Berechnungsinstanz ein erstes und ein zweites
Datenelement aufweist,
wobei eines der Datenelemente als Scheduling-Schlüssel verwendet
wird, um zu steuern, wie diese Arbeitsbelastung mit anderen
Arbeitsbelastungen gruppiert wird und
das andere steuert, wo unter der Vielzahl von Berechnungselementen
diese Berechnungsinstanz ausgeführt wird,
und A3.2Hi1 ersetzt sowie das Merkmal A3.4Hi3 in den Anspruch aufgenommen.
Zu den nebengeordneten Patentansprüchen sowie zu den Unteransprüchen aller
Anträge wird auf die Akte verwiesen.
Im Prüfungsverfahren vor dem deutschen Patent- und Markenamt sind u.a. die
Druckschriften
P1
US 7 925 860 B1
und
P2
US 2008 / 0 074 433 A1
genannt worden.
II.
Die Beschwerde wurde rechtzeitig eingelegt und ist auch sonst zulässig. Sie hat
jedoch keinen Erfolg, da der Gegenstand des jeweiligen Patentanspruchs 1 nach
Hauptantrag sowie nach den Hilfsanträgen 1 bis 4 nicht auf erfinderischer Tätigkeit
beruht (§ 1 Abs. 1 i. V. m. § 4 Satz 1 PatG).
1.
Die vorliegende Patentanmeldung betrifft die Verarbeitung von Daten mittels
paralleler Verarbeitungsressourcen.
In der Beschreibung der Anmeldung wird ausgeführt, dass sich eine parallele
Datenverarbeitung nicht analog zur Verfügbarkeit von Berechnungsressourcen
skalieren lasse. Ein Grund dafür sei, dass die Speicherbandbreite nicht
im
Verhältnis zur verfügbaren Rechenleistung skaliere. Berechnungsprobleme, die
keine inhärente Datenlokalität aufweisen, könnten daher dazu führen, dass
Berechnungselemente auf Daten aus dem Speicher, auf den sie gerade zugreifen,
warten müssten (vgl. DE 11 2012 002 465 T5 (im Folgenden „DE-T5“ genannt),
Absatz [0043]).
Außerdem ergebe sich aus der SIMD-Beschaffenheit von Berechnungsclustern,
dass
das
gleichzeitige
Ausführen
von
Threads
identischen
Programmausführungspfaden
folgen müsse,
um
einen maximalen
Berechnungsdurchsatz zu erzielen. Wenn sich beispielsweise die Hälfte der
Threads in einem SIMD-Cluster in die eine und der Rest der Threads in die andere
Richtung verzweige, müsse die Hardware diese beiden Pfade serialisieren. In einer
solchen Situation erreiche die Berechnungseinheit nur 50 % des möglichen
Durchsatzes. In Situationen, in denen eine ausgeführte Codebasis zahlreiche
Zweige enthalte, könne sich die Leistung im schlechtesten Fall um den Faktor
1/SIMD-Breite reduzieren, was bei einer SIMD-Architektur der Breite 32 etwa 3%
Wirkungsgrad entspreche. Es gebe eine große Anzahl von Berechnungsproblemen,
die zwar theoretisch parallelisierbar seien, aber nicht effizient an solche breiten
SIMD-Architekturen angepasst worden seien (DE-T5, Absatz [0044]).
Eine Aufgabe wird in der vorliegenden Patentanmeldung nicht ausdrücklich
genannt. Jedoch lassen die vorstehend zitierten Absätze [0043] und [0044] der
Druckschrift
DE-T5
auf
die
Aufgabenstellung
schließen,
ein
Grafikdatenverarbeitungssystem bereitzustellen, mit dem sich ein höherer
Berechnungsdurchsatz und demzufolge eine höhere Datenverarbeitungsgeschwindigkeit erzielen lassen, als dies bei aus dem Stand der Technik bekannten
Grafikdatenverarbeitungssystemen der Fall ist.
Als Fachmann, der mit der Lösung dieser Aufgabe betraut wird, ist ein Informatiker
oder Ingenieur der Fachrichtung Elektrotechnik mit mehrjähriger Erfahrung in der
Entwicklung paralleler, insbesondere für Grafikverarbeitungssysteme verwendbarer
Datenverarbeitungsarchitekturen anzusehen.
2.
Zur Lehre von Patentanspruch 1
Patentanspruch 1 nach Hauptantrag sieht ein Verarbeitungssystem vor, das in der
Lage ist, gleichzeitige Grafikberechnung durchzuführen (Merkmal A1) und eine
Vielzahl von Berechnungselementen umfasst, von denen jedes einen lokalen
Speicher und eine Vielzahl von arithmetisch-logischen Einheiten (ALU) umfasst
(Merkmal A2).
Gemäß Merkmal A2.1 werden die ALUs jedes dieser Berechnungselemente von
einem gemeinsamen Programmzähler aus betrieben. Dieses Merkmal ist aus Sicht
des Fachmanns insbesondere dann erfüllt, wenn die Befehle, die eine jeweilige ALU
zur Ausführung erhält, mittels desselben - gemeinsamen - Programmzählers aus
einem Speicher abgerufen werden wie die Befehle mindestens einer weiteren ALU,
die von der Vielzahl von Berechnungselementen umfasst wird. Nach dem Wortlaut
von Merkmal A2.1 ist nicht ausgeschlossen, dass das Verarbeitungssystem noch
weitere Programmzähler zum Abruf von Befehlen umfasst, die an ALUs übermittelt
werden, die nicht unter die in Merkmal A2 definierte Vielzahl von ALUs eines
Berechnungselements zu subsumieren sind.
Des Weiteren umfasst das Verarbeitungssystem laut Merkmal A3 i. V. m. Merkmal
A1 einen Scheduler für die Berechnungselemente, d.h. eine Einheit, die die zeitliche
Ausführung von Arbeitsaufgaben durch die Berechnungselemente regelt oder
beeinflusst, z.B. indem sie die Aufgaben auf verschiedene Ressourcen (z.B. auf
Prozessoren) verteilt.
Der Scheduler umfasst seinerseits einen Grob-Scheduler und eine Paketeinheit
(Merkmal A3a). Was unter einem Grob-Scheduler - ein solcher ist in den Figuren 1
und 2 der DE-T5 abgebildet - konkret zu verstehen sein soll, lässt die vorliegende
Anmeldung offen. Da in ihr aber auch von einem „lokalen Scheduler“ und einem
„ALU-Cluster-Scheduler“ die Rede ist (vgl. DE-T5, Absätze [0025], [0091]; Fig. 6),
wird der Fachmann einen Grob-Scheduler insbesondere als einen Scheduler
ansehen, der Arbeitsaufgaben auf die einzelnen Berechnungselemente verteilt,
aber
nicht direkt an die einzelnen ALUs
innerhalb
eines
jeweiligen
Berechnungselements weitergibt. Weiterhin wird der Fachmann
eine
anspruchsgemäße Paketeinheit vor dem Hintergrund der Absätze [0078] und [0080]
der DE-T5 als eine Hardware- und/oder Softwarekomponente ansehen, die
Berechnungsinstanzen in Form von „Paketen“ (d.h. Gruppen) verarbeitet.
Der Scheduler soll ferner betriebsfähig sein, Eingaben zu empfangen, die Instanzen
einer ersten an der Vielzahl von Berechnungselementen durchzuführenden
Berechnungsart definieren (Merkmal A3b). Der Fachmann versteht unter derartigen
Instanzen insbesondere Threads, die eine bestimmte Datenverarbeitungsoperation
- z.B. eine numerische Operation wie z.B. eine Addition oder Multiplikation, die von
einem Vertex- oder Pixelshader festgelegt wird - ausführen (vgl. DE-T5, Absätze
[0073] und [0074]).
Ferner soll jede Berechnungsinstanz mit einem jeweiligen Datenelement, das in
einem lokalen Speicher eines der Vielzahl von Berechnungselementen gespeichert
ist, und einem jeweiligen Scheduling-Schlüssel assoziiert sein (Merkmal A3.1),
wobei der Scheduler entsprechend dem Merkmal A3.2 die Berechnungsinstanzen
nach ihren Scheduling-Schlüsseln zu Paketen gruppieren und ein Paket ausgeben
kann, das eine Vielzahl von Berechnungsinstanzen umfasst.
Laut Beschreibung der vorliegenden Patentanmeldung können solche Scheduling-
Schlüssel nicht nur zur Gruppierung von Berechnungsinstanzen eingesetzt werden,
sondern auch, um Kriterien anzuzeigen, die beim Scheduling der Ausführung einer
„fibre“ bzw. Faser (d.h. eines speziellen Threads) verwendet werden, oder aber
auch, um Fasern zu sammeln oder zu sortieren (vgl. DE-T5, Absätze [0063], [0069],
[0086], [0087], [0089], [0090],
[0113],
[0119]). Ein Scheduling-Schlüssel kann
insbesondere eine Speicherreferenz, eine Speicheradresse oder ein Teil einer
solchen Adresse sein (DE-T5, Absätze [0108], [0112]).
Der Fachmann versteht daher unter einem anspruchsgemäßen Scheduling-
Schlüssel eine Information, anhand derer Berechnungsinstanzen beim Scheduling
zu Paketen zusammengestellt werden, d.h.
insbesondere zu Gruppen von
Berechnungsinstanzen, die zusammen verarbeitet werden sollen.
Weiterhin soll der Verteiler betriebsfähig sein, das von dem Scheduler ausgegebene
Paket zu empfangen und die Berechnungsinstanzen auf die Berechnungselemente
„des Clusters“ zur Durchführung auf diesen zu verteilen (Merkmal A4). Da von
einem Cluster an keiner anderen Stelle des Patentanspruchs 1 die Rede ist, wird
der Fachmann Merkmal A4 dahingehend interpretieren, dass der Verteiler imstande
sein soll, die Berechnungsinstanzen des Pakets an Berechnungselemente eines
(beliebigen) Clusters weiterzugeben, zu übertragen oder auf diese aufzuteilen (vgl.
DE-T5, Absätze [0078] bis [0080] i. V. m. Figur 2, Bezugszeichen 225; Absatz [0091]
i. V. m. Figur 6; Absatz [0100] i. V. m. Figur 8). Ein „Cluster“ ist laut Absatz [0081]
der DE-T5 ein Mittel, um gleichzeitige Berechnungen auf einer Vielzahl von
Datenelementen mittels eines einzelnen Steuerflusses durchzuführen.
Jedes der Berechnungselemente soll betriebsfähig sein, Berechnungsinstanzen, für
die dieselbe Art von Berechnung durchzuführen ist, zur gleichzeitigen Durchführung
durch ihre ALUs zu kombinieren (Merkmal A4.1). Dabei sollen sich die kombinierten
Berechnungsinstanzen auf verschiedene Datenelemente beziehen, die im lokalen
Speicher eines jeweiligen Berechnungselements gespeichert sind, um gleichzeitig
die Berechnung
für die kombinierten Berechnungsinstanzen durchzuführen
(Merkmal A4.2).
3.
Der Hauptantrag hat keinen Erfolg, weil der Gegenstand seines
Patentanspruchs 1 nicht auf erfinderischer Tätigkeit beruht.
3.1
Zur Beurteilung der beanspruchten Lehre ist die Druckschrift P1 von
besonderer Bedeutung.
So beschreibt die Druckschrift P1 ein Computersystem 100 mit einem
Grafikverarbeitungssubsystem 112 und N Grafikverarbeitungseinheiten 122, von
denen jede ein Core-Array 202 besitzt, das mehrere Threads gleichzeitig abarbeiten
kann. Ein Core-Array 202 umfasst mindestens einen Verarbeitungscluster 302, der
wiederum mindestens einen Core 310 enthält, mit dem Threads für allgemeine
Berechnungen oder auch für spezielle Bildverarbeitungsberechnungen wie z. B. ein
Vertex-, Geometrie- oder Pixel-Shading ausgeführt werden (Spalte 4, Zeilen 36 bis
60; Spalte 5, Zeile 42 bis 61; Figuren 1 bis 3). Jeder Core 310 besteht aus P
Parallelprozessoren 320, die jeweils eine Reihe von arithmetisch-logischen
Einheiten sowie ein lokales Registerfile 325 enthalten, SIMD-Befehle von einer
Befehlseinheit 312 entgegennehmen und G Threads gleichzeitig („concurrently“)
ausführen können (Spalte 6, Zeilen 4 bis 9 sowie 20 bis 23; Spalte 7, Zeile 11 bis
15; Figur 3).
Damit offenbart die Druckschrift P1 ein Verarbeitungssystem, welches in der Lage
ist, gleichzeitige Grafikberechnungen auszuführen, und welches mit den Cores 310
eine Vielzahl von Berechnungselementen enthält, die mit dem lokalen Registerfile
325 neben einer Vielzahl von arithmetisch-logischen Einheiten jeweils auch einen
lokalen Speicher enthalten - Merkmale A1 und A2.
Jeder Core 310 kann die Threads nach dem sogenannten SIMD-Prinzip („SIMD“ =
„single-instruction, multiple-data“) abarbeiten, um die Ressourcenallokation zu
vereinfachen. Dazu werden jeweils P Threads von einem Core-Array 202 zu einer
SIMD-Gruppe zusammengestellt, indem diesen ein Gruppenindex GID zugewiesen
wird (Spalte 5, Zeilen 55 bis 65; Spalte 6, Zeilen 50 bis 56 - „[…] a “group index“
(GID) for the associated thread may be included with the instruction“ i. V. m. Spalte
20, Zeilen 8 bis 11 - „organizing the threads […] into a plurality of SIMD groups“).
Die Core-Schnittstelle 308 gibt eine SIMD-Gruppe an einen der Cores 310 weiter
und übermittelt diesem den Befehl, mit der Ausführung der SIMD-Gruppe zu
beginnen (Spalte 6, Zeile 61 bis Spalte 7, Zeile 10 - „core interface 308 […] loads a
SIMD group into core 310, then instructs core to launch the group“). Dazu erhalten
alle P Parallelprozessoren 320 eines Cores 310 von der Befehlseinheit 312 in jedem
Taktzyklus denselben (SIMD-)Befehl, der auf unterschiedlichen Datenelementen
ausgeführt wird (Spalte 6, Zeilen 29 bis 33 sowie 38 bis 44 und 50 bis 56 - „On each
clock cycle, one instruction is issued to all P Threads making up a selected one of
the G SIMD groups“; Spalte 9, Zeilen 28 bis 30; Spalte 10, Zeilen 3 bis 10).
Hieraus ergibt sich unmittelbar, dass ein Gruppenindex GID und eine SIMD-Gruppe
einen Scheduling-Schlüssel bzw. ein aus einer Vielzahl von Berechnungsinstanzen
bestehendes Paket im Sinne der Merkmale A3.1 und A3.2 darstellen.
Ferner stellt die Core-Schnittstelle 308 einen anspruchsgemäßen Grob-Scheduler
dar, der die SIMD-Gruppen erstellt und an die Cores 310 weitergibt. Da die Cores
310 die SIMD-Gruppen verarbeiten und
insbesondere deren Ausführung
veranlassen (vgl. das obenstehende Zitat „core interface 308 […] instructs core to
launch the group“), kann die Gesamtheit der Cores 310 als eine Paketeinheit
angesehen werden, die zusammen mit der Core-Schnittstelle 308 einen Scheduler
für die Threads bildet. Damit liegen die Merkmale A3, A3a und A3.2 vor.
Weiterhin zeigt die Druckschrift P1, dass Threads zur Vereinfachung der
Ressourcenzuteilung innerhalb der Grafikprozessoren auch in Form sogenannter
kooperativer Thread-Arrays („cooperative thread arrays“ = CTAs) abgearbeitet
werden können. Ein CTA besteht aus mehreren Threads oder SIMD-Gruppen
(Spalte 7, Zeilen 39 bis 44 sowie 52 bis 56; Spalte 8, Zeile 35; Spalte 9, Zeilen 39
bis 43) und wird von einem Core-Array 202 gebildet, indem dieses jedem Thread
des CTA eine CTA-ID zuordnet (Spalte 18, Zeilen 46 bis 48; Spalte 8, Zeile 31).
Insoweit stellen auch die Größen CTA-ID bzw. CTA einen Scheduling-Schlüssel
bzw. ein eine Vielzahl von Berechnungsinstanzen umfassendes Paket im Sinne der
Merkmale A3.1 und A3.2 dar.
Der P1 ist ferner zu entnehmen, dass ein Core-Array 202 ein CTA an einen der
Cores 310 weitergibt (Spalte 17, Zeilen 50/51). Daraus folgt, dass Bestandteile des
Core-Arrays 202, die außerhalb der Cores 310 angeordnet sind, die Threads zu den
CTAs gruppieren. Da diese Bestandteile auch die zeitliche Ausführung der Threads
beeinflussen, indem sie diese zu einem definierten Zeitpunkt in Form einzelner
CTAs an einen jeweiligen Core 310 weitergeben, bilden sie einen Grob-Scheduler
für die Cores 310, welcher zusammen mit der Gesamtheit der Cores 310 einen
anspruchsgemäßen Scheduler repräsentiert (ebenfalls Merkmale A3, A3a). Da der
Grob-Scheduler die Threads zu CTAs gruppiert und an einen jeweiligen Core
weitergibt (s.o.), wird das Merkmal A3.2 auch auf diese Weise in der Lehre der P1
verwirklicht.
Des Weiteren ist es selbstverständlich, dass das Core-Array 202 zu verarbeitende
Daten in Gestalt von Eingaben empfängt, welche von der Rendering-Pipeline 200
und dem Shading-Modul 210 stammen (vgl. P1, Figur 2), bestimmte, von den
Threads auszuführende Berechnungen (z.B. Shader-Berechnungen) festlegen und
damit auch die Threads selbst definieren (Merkmal A3b).
Da die von einem Thread verarbeiteten Datenelemente in dem lokalen Registerfile
325, also einem lokalen Speicher, gespeichert sein können und ferner einem
Thread ein Gruppenindex GID einer SIMD-Gruppe (Spalte 6, Zeilen 51 bis 54;
Spalte 12, Zeile 12 bis 17) oder auch eine CTA-ID (Spalte 8, Zeile 31; Spalte 18,
Zeile 46 bis 48) als Scheduling-Schlüssel zugeordnet sein kann, liegt auch Merkmal
A3.1 vor.
Ferner müssen die Threads eines CTA von einem jeweiligen Core 310 empfangen
und in geeigneter Weise auf die Parallelprozessoren 320 verteilt werden, um dort
ausgeführt werden zu können. Die Hardware- und/oder Softwareeinheiten eines
Cores 310, die diese Verteilung bewerkstelligen, bilden einen Verteiler im Sinne von
Merkmal A4. Da die Parallelprozessoren 320 Berechnungselemente eines
Verarbeitungsclusters 302 sind (vgl. Figur 3), ist auch Merkmal A4 gemäß der
vorstehenden Auslegung aus Abschnitt II.2 erfüllt.
Wie vorstehend ausgeführt, können die Parallelprozessoren 320 nach dem SIMD-
Prinzip arbeiten und G Threads, die beispielsweise Shader-Berechnungen - und
damit eine bestimmte Berechnungsart - repräsentieren, gleichzeitig ausführen. Das
bedeutet, dass jeder Core 310 diese G Threads zur gleichzeitigen Ausführung durch
die ALUs, auf denen die Threads abgearbeitet werden, kombiniert (Merkmal A4.1).
Da die Datenelemente, die von diesen Threads verarbeitet werden, in dem lokalen
Registerfile 325 gespeichert sein können, liegt auch Merkmal A4.2 vor.
Der P1 ist allerdings nicht ausdrücklich zu entnehmen, dass die arithmetischlogischen Einheiten eines Cores 310 gemäß dem verbleibenden Merkmal A2.1 von
einem Programmzähler aus betrieben werden, der diesen Einheiten gemeinsam ist.
3.2
Ausgehend von der Druckschrift P1 gelangt der Fachmann jedoch ohne
erfinderisches Zutun zum Gegenstand des Patentanspruchs 1 gemäß Hauptantrag.
So ist in P1 die im Zusammenhang mit einer parallelen Datenverarbeitung gemäß
dem SIMD-Prinzip
fachübliche Verfahrensweise
beschrieben, dass die
Befehlseinheit 312 allen Parallelprozessoren 320 in jedem Taktzyklus - also
gleichzeitig - dieselbe SIMD-Instruktion übermittelt (Spalte 6, Zeilen 29 bis 31, 38
bis 40 und 50/51) und zum Abruf dieser Instruktion nur eine einzige Steuereinheit
verwendet wird (Spalte 5, Zeilen 61 bis 65). Für den Fachmann liegt es daher auf
der Hand, auch nur einen einzigen Programmzähler zum Abruf der SIMD-Instruktion
zu verwenden. In diesem Fall werden die ALUs der Parallelprozessoren 320, die
die SIMD-Instruktion verarbeiten, von einem gemeinsamen Programmzähler aus
betrieben, wie es laut Merkmal A2.1 beansprucht ist.
3.3
Die Anmelderin ist sinngemäß der Auffassung, die vorliegende Erfindung
erlaube die Möglichkeit einer flexiblen Mischung zwischen paralleler und serieller
Ausführung von Fasern in Abhängigkeit von einem Scheduling-Schlüssel oder dem
Umstand, dass sich eine Berechnung auf dieselben oder verschiedene
Datenelemente bezieht. Diese Möglichkeit sei nicht in P1 gezeigt, da ein CTA
mehrere vollständige Threads umfasse und daher nicht mit einem Scheduling-
Schlüssel gleichgesetzt werden könne. Ferner ermögliche es die Erfindung,
Berechnungsinstanzen mit
verschiedenen
Scheduling-Schlüsseln
zur
gleichzeitigen Durchführung zu kombinieren.
Diese Argumentation hält einer näheren Überprüfung nicht stand.
So bezieht sich Patentanspruch 1 bereits nicht ausdrücklich auf Fasern, sondern
auf beliebige Berechnungsinstanzen (z.B. auf
jede Art von Threads). Dass
Berechnungsinstanzen in Abhängigkeit eines Scheduling-Schlüssels seriell oder
parallel verarbeitet werden, ist ebensowenig Gegenstand von Patentanspruch 1 wie
der Umstand, dass Berechnungsinstanzen mit verschiedenen Scheduling-
Schlüsseln gleichzeitig ausgeführt werden müssen. Patentanspruch 1 fordert nur,
dass Berechnungsinstanzen gemäß ihren Scheduling-Schlüsseln zu Paketen
gruppiert werden (vgl. Merkmal A3.2) und Berechnungsinstanzen, für die dieselbe
Art von Berechnungen durchzuführen ist, die aber ansonsten beliebig sind, zur
gleichzeitigen Durchführung kombiniert werden können (vgl. Merkmal A4.1). Diese
beiden Kriterien sind erfüllt, wenn - wie in P1 beschrieben - Threads gemäß ihren
SIMD-Gruppenindizes
oder CTA-IDs
zu SIMD-Gruppen
bzw. CTAs
zusammengestellt werden und die ALUs der Parallelprozessoren 320 Threads
verschiedener SIMD-Gruppen bzw CTAs nach dem SIMD-Prinzip parallel
abarbeiten.
3.4
Somit waren für den Fachmann lediglich fachgemäße Überlegungen
erforderlich, um in Kenntnis der Druckschrift P1 zu einem Verfahren mit den
Merkmalen des Patentanspruchs 1 in der Fassung des Hauptantrags zu gelangen.
3.5
Die Anmelderin verfolgt ihr Patentbegehren mit dem Hauptantrag und den
Hilfsanträgen jeweils in Form eines in sich geschlossenen Anspruchssatzes. Da
über einen Antrag nur einheitlich entschieden werden kann, sind daher auch die
Patentansprüche 2 bis 23 gemäß Hauptantrag nicht gewährbar (vgl. BGH GRUR
2017,
ff.
–
Datengenerator;
GRUR
2007,
ff.
–
Informationsübermittlungsverfahren
II; GRUR 1997, 120
– Elektrisches
Speicherheizgerät).
4.
Hilfsantrag 1 ist nicht günstiger als der Hauptantrag zu bewerten.
4.1
Patentanspruch 1 nach Hilfsantrag 1 beruht auf dem Patentanspruch 1 nach
Hauptantrag, wobei Merkmal A3.2 durch das Merkmal A3.2Hi1 ersetzt worden ist.
Das letztgenannte Merkmal fügt dem Gegenstand von Patentanspruch 1 nach
Hauptantrag hinzu, dass diejenigen Berechnungsinstanzen, die von dem Paket
umfasst sind, welches von dem Scheduler ausgegeben werden kann, einen
Scheduling-Schlüssel teilen sollen.
4.2
Dieser Unterschied geht jedoch aus der Druckschrift P1 hervor.
Denn die CTA-ID - ein anspruchsgemäßer Scheduling-Schlüssel - ist allen Threads
eines CTAs gemeinsam (vgl. Spalte 8, Zeilen 25 bis 27 - „a CTA identifier (“CTA
ID“) that is common to all threads in the CTA“). Entsprechendes gilt ferner auch für
den Gruppenindex GID der Threads einer SIMD-Gruppe (vgl. Spalte 12, Zeile 16/17
- „x is a SIMD group index […] that is the same for all threads in a SIMD group“).
4.3
Unter Berücksichtigung der Ausführungen zum Hauptantrag sind daher auch
die Merkmale des Gegenstandes des Patentanspruchs 1 gemäß Hilfsantrag 1 aus
der Druckschrift P1 nahegelegt.
4.4 Mit dem Patentanspruch 1 gemäß Hilfsantrag 1
fallen auch die
Patentansprüche 2 bis 23.
5.
Auch dem Hilfsantrag 2 kann nicht stattgegeben werden, weil die Lehre
seines Patentanspruchs 1 für den Fachmann nahegelegen hat.
5.1
Hilfsantrag 2 beruht auf dem Hauptantrag, wobei zwischen den Merkmalen
A3.1 und A3.2 das Merkmal A3.3Hi2 eingeschoben worden ist. Dieses Merkmal
besagt, dass jede Berechnungsinstanz einen Identifikator für ein als Scheduling-
Schlüssel verwendetes Datenelement umfassen soll.
Ein solcher Identifikator ist aus Sicht des Fachmanns eine Größe, die zur
Identifikation, Kennzeichnung oder Ermittlung eines als Scheduling-Schlüssel
verwendeten Datenelements herangezogen werden kann.
5.2. Auch Merkmal A3.3Hi2 kann eine Patentfähigkeit nicht begründen.
So wird laut P1 an alle P Threads einer SIMD-Gruppe ein Befehl weitergegeben,
der den Gruppenindex GID enthält, um anzuzeigen, welcher Thread aktuell aktiv ist
(Spalte 6, Zeile 50 bis 54). Damit umfasst jeder der Threads diesen Befehl. Da sich
der Gruppenindex - ein Datenelement - anhand des Befehls ermitteln lässt, stellt
der Befehl einen Identifikator für den als Scheduling-Schlüssel verwendeten
Gruppenindex dar.
Somit geht auch das Merkmal A3.3Hi2 aus P1 hervor. Unter Berücksichtigung der
Ausführungen zum Hauptantrag sind daher auch die Merkmale des Gegenstandes
des Patentanspruchs 1 nach Hilfsantrag 2 durch die Lehre der Druckschrift P1
nahegelegt.
5.3 Mit dem Patentanspruch 1 fällt der gesamte Hilfsantrag 2.
6.
Hilfsantrag 3 bleibt ohne Erfolg, weil sein Patentanspruch 1 nichts
Zusätzliches enthält, was eine Patentfähigkeit tragen könnte.
6.1
Im Vergleich mit dem Patentanspruch 1 nach Hilfsantrag 2 enthält der
Patentanspruch 1 nach Hilfsantrag 3 zwischen den Merkmalen A3.3Hi2 und A3.2
das weitere Merkmal
A3.4Hi3 wobei das als Scheduling-Schlüssel verwendete Datenelement einen
Offset des globalen Speichers, eine Verzweigungsbedingung, eine
Speicherreferenzen einer Berechnungsinstanz, eine Speicheradresse
einer Hauptspeicherleseoperation und/oder eine Ausgangsspeicheradresse eines ersten Elements einer Beschleunigerstruktur umfasst.
Dabei versteht der Fachmann unter einem globalen Speicher insbesondere einen
Hauptspeicher eines Computersystems (vgl. DE-T5, Figur 10, Bezugszeichen 584,
585, 587), und unter einem Offset des globalen Speichers einen Versatz, der in
Form eines ganzzahligen Wertes zu einer Referenz- bzw. Basisadresse addiert
wird, um eine absolute Speicheradresse festzulegen.
6.2
Auch das Merkmal A3.4Hi3 entnimmt der Fachmann der Druckschrift P1.
So geht aus P1 hervor, dass die Adressen, über die die Threads einer SIMD-Gruppe
auf die zu verarbeitenden Datenelemente zugreifen, zusammenhängenden
Speicherbereichen des Grafikspeichers 124 oder des Systemspeichers 104
entsprechen können („Base+TID addressing“, vgl. Spalte 12, Zeilen 1 bis 12 und 36
bis 45 i. V. m. Spalte 5, Zeilen 29 bis 40 sowie Spalte 7, Zeilen 28 bis 31). Die beiden
Speicher 104 und 124 sind die Hauptspeicher des Computersystems 100 bzw. des
Grafikverarbeitungssubsystems 112 (vgl. P1, Figur 1) und somit jeweils globale
Speicher.
Falls ein CTA mehrere SIMD-Gruppen umfasst, können die Speicheradressen
gemäß den Gleichungen (2d) und (3) aus Spalte 12 der P1 in der Form „ base + y*w
= a0 + x*P*w + y*w “ geschrieben werden. Dabei
ist die Größe „base“ eine
Basisadresse. Der Parameter a0 stellt die Adresse des ersten Elements, auf das
zugegriffen wird (und damit eine Basisadresse für den gesamten CTA) dar. Ferner
bezeichnet die Variable x den Gruppenindex einer aus P Threads bestehenden
SIMD-Gruppe, und die Variable y gibt die Größe jedes Datenelements, auf das
zugegriffen wird, in Bytes an (Spalte 12, Zeilen 20 bis 31 sowie 49 bis 60).
Der Fachmann wird erkennen, dass die Speicheradressen auch in der zu den
Gleichungen (2d) und (3) äquivalenten Form „ a0 + x + x + … + x + x + y*w “
geschrieben werden können, wobei hier der Gruppenindex P*w-mal addiert wird.
Der Gruppenindex x bildet somit einen Versatz, der zu der Größe a0 - einer
Basisadresse für den gesamten CTA - mehrfach addiert wird, und stellt somit nicht
nur einen Scheduling-Schlüssel, sondern auch einen Offset des globalen Speichers
im Sinne des Merkmals A3.4Hi3 dar.
Damit geht die Alternative des Merkmals A3.4Hi3, nach der das als Scheduling-
Schlüssel verwendete Datenelement einen Offset des globalen Speichers umfasst,
aus der P1 hervor.
Mit Rücksicht auf die Ausführungen zu Hilfsantrag 2 ergibt sich der Gegenstand von
Patentanspruch 1 nach Hilfsantrag 3 somit für den Fachmann in naheliegender
Weise aus der P1.
6.3 Mit seinem Patentanspruch 1 fällt der gesamte Hilfsantrag 3.
7.
Auch Hilfsantrag 4 kann nicht günstiger beurteilt werden.
7.1
Hilfsantrag 4 beruht auf dem Hauptantrag, wobei in dessen Patentanspruch
1 die Merkmale A3.1 und A3.2 durch die Merkmale
A3.1Hi4 wobei
jede Berechnungsinstanz ein erstes und ein zweites
Datenelement aufweist,
wobei eines der Datenelemente als Scheduling-Schlüssel verwendet
wird, um zu steuern, wie diese Arbeitsbelastung mit anderen
Arbeitsbelastungen gruppiert wird und
das andere steuert, wo unter der Vielzahl von Berechnungselementen
diese Berechnungsinstanz ausgeführt wird,
und A3.2Hi1 ersetzt wurden. Zudem wurde das Merkmal A3a gestrichen und
Merkmal A3.4Hi3 neu in den Patentanspruch 1 aufgenommen.
Mit einer - durch Unterstreichung hervorgehobenen - redaktionellen Anpassung
lauten die Merkmale A3 und A3b wie folgt:
A3
einen Scheduler für die Berechnungselemente,
A3b
der betriebsfähig ist, Eingaben zu empfangen, die Instanzen einer
ersten an der Vielzahl von Berechnungselementen durchzuführenden
Berechnungsart definieren,
Gemäß dem neuen Merkmal A3.1Hi4 weist jede Berechnungsinstanz nunmehr zwei
Datenelemente auf. Eines dieser Elemente soll als Scheduling-Schlüssel verwendet
werden, um zu steuern, wie „diese Arbeitsbelastung“ - also das mit der Ausführung
einer
jeden Berechnungsinstanz
verbundene Arbeitspensum,
das
die
Berechnungselemente bewältigen müssen - mit anderen Arbeitsbelastungen
gruppiert - d.h. zur gemeinsamen Abarbeitung zusammengestellt - wird.
Das
andere
Datenelement
steuert, wo
unter
der Vielzahl
von
Berechnungselementen diese Berechnungsinstanz ausgeführt wird. Dies bedeutet
insbesondere, dass mittels des anderen Datenelements mindestens ein innerhalb
der Menge der Berechnungselemente liegender Ort festgelegt wird, an dem die
Berechnungsinstanz ausgeführt werden soll.
7.2 Mit den Merkmalen A3.1Hi4, A3.2Hi1 und A3.4Hi3 kann eine Patentfähigkeit
nicht begründet werden.
7.2.1 Zu den Merkmalen A3.2Hi1 und A3.4Hi3 wird auf die vorstehenden
Ausführungen zu den Hilfsanträgen 1 und 3 verwiesen.
7.2.2 Ferner wurde in Abschnitt II.3 dieses Beschlusses im Zusammenhang mit
Merkmal A3.1 erläutert, dass jeder Thread einen Index GID einer SIMD-Gruppe und
eine CTA-ID aufweisen kann. Diese Größen können jeweils als Scheduling-
Schlüssel - d.h. als anspruchsgemäßes erstes Datenelement - verwendet werden,
um - selbstverständlich mittels entsprechender Programmbefehle, die auf einem
Rechner ausgeführt werden - zu steuern, wie die Threads zu SIMD-Gruppen bzw.
CTAs gruppiert werden.
Dadurch, dass die Threads in Form von SIMD-Gruppen oder CTAs abgearbeitet
werden, fallen die mit den Threads verbundenen Arbeitsbelastungen gleichzeitig an,
d.h. die Gruppierung der Threads überträgt sich auf die Gruppierung der
Arbeitsbelastungen. Diese sind somit ebenfalls gruppiert.
Daher ist der erste Teil von Merkmal A3.1Hi4 „wobei eines der Datenelemente als
Scheduling-Schlüssel verwendet wird, um zu steuern, wie diese Arbeitsbelastung
mit anderen Arbeitsbelastungen gruppiert wird“ der P1 zu entnehmen.
7.2.3 Der verbleibende Teil
von Merkmal A3.1Hi4, gemäß dem eine
Berechnungsinstanz neben dem als Scheduling-Schlüssel verwendeten
Datenelement noch ein anderes, zweites Datenelement aufweist, das steuert, wo
unter der Vielzahl von Berechnungselementen diese Berechnungsinstanz
ausgeführt wird, ergibt sich aus dem zitierten Stand der Technik in mehrfacher
Hinsicht:
(1)
Laut P1 wird jeder Thread einer SIMD-Gruppe oder eines CTA auf einen
bestimmten Parallelprozessor 320 abgebildet (P1, Spalte 10, Zeile 6 bis 10 - „SIMD
groups get scheduled onto the processing engines such that each thread is mapped
to a particular processing engine“). Demnach wird jedem Thread eine bestimmte
Information zugeordnet, die festlegt, wo - d.h. auf welchem Parallelprozessor 320 -
der Thread abgearbeitet wird. Diese Information muss in dem Verarbeitungssystem
der P1 in Form eines entsprechenden (weiteren) Datenelements vorliegen.
(2)
Aus der Angabe, dass die P Parallelprozessoren 320 eine Anzahl von P*G
Threads gleichzeitig ausführen können (Spalte 6, Zeile 33 bis 35 - „each processing
engine 320 is also multithreaded, supporting up to G threads, core 310 […] can have
up to P*G threads in process concurrently“), schließt der Fachmann, dass die ALUs
eines Parallelprozessors 320 G Verarbeitungsbahnen bilden können, auf denen G
Threads in demselben Taktzyklus parallel ausgeführt werden. In diesem Fall muss
festgelegt werden, wo - d.h. auf welcher Verarbeitungsbahn - ein jeweiliger Thread
in einem
jeweiligen Taktzyklus abgearbeitet wird. Zur Festlegung der
Verarbeitungsbahn eines Threads bietet sich die Thread-ID an, da diese laut P1 zur
Steuerung der Threadverarbeitung verwendet wird und für einen Thread während
seiner Ausführung verfügbar ist (vgl. P1, Spalte 7, Zeilen 44 bis 51 - „[…] “thread
ID“ or “TID“ […] that is accessible to the thread during its execution. The TID controls
various aspects of the thread’s processing behavior“). Somit spielt auch eine
Thread-ID die Rolle des zweiten, anderen Datenelements aus Merkmal A3.1Hi4.
(3)
Im Übrigen ist dem Fachmann geläufig, dass Threads zur Vereinfachung der
Ressourcenzuweisung eine Hardware-ID umfassen können, die eine dedizierte
Hardwareeinheit kennzeichnet, an die ein Thread gesendet bzw. auf der der Thread
ausgeführt werden soll (vgl. P2, Figur 2 mit Claims 24/25 sowie Absätzen [0046] -
„To simplify scheduling, instructions may be associated with hardware identifiers
(HW IDs) that indicate which hardware units to use for the instructions“, [0058] -
„pre-decoder 450 […] may determine the hardware unit to use for each instruction
[…], [0059] - „The HW IDs may be stored in the context register for the thread and
used for scheduling“).
Der Fachmann wird bei Bedarf die aus P1 bekannten Cores 310 auch als dedizierte
Hardwareeinheiten ausgestalten, die jeweils an allgemeine Berechnungen oder
alternativ dazu an verschiedene Shader-Berechnungen angepasst sind, und in
diesem Fall einem Thread zur Vereinfachung der Ressourcenzuweisung eine
entsprechende Hardware-ID zuweisen. Diese kann ebenfalls als ein anderes,
zweites Datenelement eines Threads angesehen werden, das steuert, wo der
Thread ausgeführt wird.
7.2.4 Nachdem somit auch mit Merkmal A3.1Hi4 eine erfinderische Tätigkeit nicht
begründet werden kann, ergibt sich der Gegenstand von Patentanspruch 1 nach
Hilfsantrag 4 unter Berücksichtigung der Ausführungen zum Hauptantrag und den
Hilfsanträgen 1 und 3 in naheliegender Weise aus dem Stand der Technik.
7.3 Mit dem Patentanspruch 1 nach Hilfsantrag 4 fallen auch die übrigen
Patentansprüche dieses Antrags.
III.
Nachdem keiner der gestellten Anträge Erfolg hatte, war die Beschwerde der
Anmelderin gegen den Zurückweisungsbeschluss der Prüfungsstelle für Klasse
G06F des Deutschen Patent- und Markenamtes zurückzuweisen.
Rechtsmittelbelehrung
Gegen diesen Beschluss steht den am Beschwerdeverfahren Beteiligten das Rechtsmittel der
Rechtsbeschwerde zu. Da der Senat die Rechtsbeschwerde nicht zugelassen hat, ist sie nur
statthaft, wenn gerügt wird, dass
1. das beschließende Gericht nicht vorschriftsmäßig besetzt war,
2. bei dem Beschluss ein Richter mitgewirkt hat, der von der Ausübung des Richteramtes kraft
Gesetzes ausgeschlossen oder wegen Besorgnis der Befangenheit mit Erfolg abgelehnt
war,
3. einem Beteiligten das rechtliche Gehör versagt war,
4. ein Beteiligter im Verfahren nicht nach Vorschrift des Gesetzes vertreten war, sofern er nicht
der Führung des Verfahrens ausdrücklich oder stillschweigend zugestimmt hat,
5. der Beschluss aufgrund einer mündlichen Verhandlung ergangen ist, bei der die Vorschriften
über die Öffentlichkeit des Verfahrens verletzt worden sind, oder
6. der Beschluss nicht mit Gründen versehen ist.
Die Rechtsbeschwerde ist innerhalb eines Monats nach Zustellung des Beschlusses beim
Bundesgerichtshof, Herrenstr. 45 a, 76133 Karlsruhe durch eine beim Bundesgerichtshof
zugelassene Rechtsanwältin oder durch einen beim Bundesgerichtshof zugelassenen Rechtsanwalt
einzulegen.
Dr. Morawek
Dr. Forkel
Akintche
Dr. Städele