Rechtsprechung / BPatG / 2022
BPatG Beschluss vom 15.03.2022 – 17 W (pat) 5/21
17. Senat · ECLI:DE:BPatG:2022:150322B17Wpat5.21.0
BUNDESPATENTGERICHT
17 W (pat) 5/21 _______________________
(Aktenzeichen)
Verkündet am
15. März 2022
…
B E S C H L U S S
In der Beschwerdesache
betreffend die Teilanmeldung 10 2014 020 058.2
…
hat der 17. Senat (Technischer Beschwerdesenat) des Bundespatentgerichts auf
die mündliche Verhandlung vom 15. März 2022 unter Mitwirkung des Vorsitzenden
Richters Dipl.-Phys. Dr. Morawek, des Richters Dipl.-Phys. Dr. Forkel, der Richterin
Akintche und des Richters Dipl.-Phys. Dr. Städele
beschlossen:
ECLI:DE:BPatG:2022:150322B17Wpat5.21.0
Die Beschwerde wird zurückgewiesen.
G r ü n d e
I.
Die vorliegende Patentanmeldung
ist aufgrund einer Teilungserklärung
im
Beschwerdeverfahren aus der Patentanmeldung 10 2014 119 048.3 entstanden
und trägt die Bezeichnung
„ Ausführung von Verarbeitungsvorgängen in einer SIMD-Verarbeitungseinheit “.
Die Stammanmeldung, die eine GB-Priorität vom 18. Dezember 2013 in Anspruch
nimmt, wurde durch Beschluss der Prüfungsstelle für Klasse G06F des Deutschen
Patent- und Markenamts vom 20. Januar 2020 aus Gründen des Bescheids vom
24. September 2019 zurückgewiesen. In dem in Bezug genommenen Bescheid ist
sinngemäß ausgeführt, mangels einer ausreichenden Definition des unter Schutz
zu stellenden Gegenstands erfülle der (damalige) Patentanspruch 1 nicht die
Anforderungen nach §34 Abs. 3 Nr. 3 PatG und sei aus diesem Grund nicht
gewährbar. Selbst wenn dieser Mangel keine Berücksichtigung fände, sei der
Gegenstand des Patentanspruchs 1 mit Rücksicht auf den der Druckschrift D1
entnehmbaren Stand der Technik nicht neu und beruhe gegenüber der Druckschrift
D2 nicht auf einer erfinderischen Tätigkeit.
Die gegen den Beschluss der Prüfungsstelle gerichtete Beschwerde vom
19 Februar 2020 war beim Senat unter dem Aktenzeichen 17 W (pat) 20/20
anhängig und wurde mit Beschluss vom 15. Juni 2021 zurückgewiesen. Im Laufe
des Beschwerdeverfahrens erklärte die Anmelderin mit Schriftsatz vom
23. Dezember
die Teilung
der Anmeldung
gegenüber
dem
Bundespatentgericht. Das Deutsche Patent- und Markenamt legte für die
Trennanmeldung eine Akte mit dem Aktenzeichen 10 2014 020 058.2 an und stellte
am 3. März 2021 den fristgerechten Eingang der erforderlichen Unterlagen und der
Gebühren fest (siehe Gerichtsakte Bl. 14).
Die Anmelderin stellt den Antrag,
1.
das nachgesuchte Patent mit folgenden Unterlagen zu erteilen:
Patentansprüche 1 bis 9, eingegangen am 9. März 2022,
Beschreibung Seiten 1 bis 34, eingegangen am 23. Dezember 2020,
9 Blatt Zeichnungen mit Figuren 1 bis 10, eingegangen am
23 Dezember 2020.
2.
hilfsweise die Anmeldung zur Fortführung des Prüfungsverfahrens an
das Deutsche Patent- und Markenamt zurückzuverweisen.
Im Prüfungsverfahren der Stammanmeldung vor dem Deutschen Patent- und
Markenamt sind u.a. die Druckschriften
G9
Giesen, Fabian: A trip through the Graphics Pipeline 2011, part 8,
10.07.2011. URL: https://fgiesen.wordpress.com/2011/07/10/a-trip-throughthe-graphics-pipeline-2011-part-8/, [abgerufen am 10.09.2019]
und
D2
Rhu, Minsoo; Erez, Mattan: Maximizing SIMD Resource Utilization in
GPGPUs with SIMD Lane Permutation. In: SIGARCH Comput. Archit. News,
Volume 41, June 2013, Issue 3, S. 356-367. - ISSN 0163-5964.
http://doi.acm.org/10.1145/2508148.2485953, [abgerufen am 18.04.2016]
genannt worden. Vom Senat wurde zusätzlich die Druckschrift
D11 US 2007 / 0 182 746 A1
eingeführt.
Der geltende Patentanspruch 1 lautet mit einer möglichen Gliederung versehen:
M1
SIMD(Single Instruction Multiple Data)-Verarbeitungseinheit,
die ausgelegt ist,
M2
eine Mehrzahl von Verarbeitungsvorgängen zu verarbeiten,
M2a die jeweils Arbeitselemente bis zu einer vorbestimmten Höchstanzahl
umfassen,
M2b wobei die Arbeitselemente eines Verarbeitungsvorgangs ausgelegt
sind, eine gemeinsame Sequenz von Befehlen an entsprechenden
Datenelementen auszuführen, wobei
M2c ein Verarbeitungsvorgang durch Blöcke von Arbeitselementen
gebildet wird, die jeweils genau vier Arbeitselemente umfassen und
M2d sich auf ein jeweiliges Pixel-Quad beziehen, wobei jedes Pixel-Quad
einen 2x2 Block von vier Pixeln umfasst,
M3
wobei die SIMD-Verarbeitungseinheit umfasst:
eine Gruppe von Verarbeitungsbahnen, die ausgelegt sind, Befehle
von Arbeitselementen eines bestimmten Verarbeitungsvorgangs über
vier aufeinander folgende Verarbeitungszyklen auf SIMD-Weise
auszuführen,
M3a wobei jede der Verarbeitungsbahnen der Gruppe ausgelegt ist,
Befehle aller Arbeitselemente
für einen
jeweiligen Block von
Arbeitselementen, der sich auf ein jeweiliges Pixel-Quad bezieht, über
die vier aufeinander
folgenden Verarbeitungszyklen hinweg
auszuführen; und
M4
Logik, die mit der Gruppe von Verarbeitungsbahnen gekoppelt ist, die
ausgelegt ist, die Gruppe von Verarbeitungsbahnen zu veranlassen,
die Ausführung eines gegebenen Verarbeitungszyklus
zu
überspringen,
wenn keine gültigen Arbeitselemente für die Ausführung in der Gruppe
von Verarbeitungsbahnen in diesem Verarbeitungszyklus eingeplant
sind.
Zu den nebengeordneten Patentansprüchen 8 und 9 sowie zu den Unteransprüchen
2 bis 7 wird auf die Akte verwiesen.
II.
Die zulässige Beschwerde konnte keinen Erfolg haben, da der Gegenstand des
Patentanspruchs 1 nicht auf einer erfinderischen Tätigkeit beruht und somit nicht
patentfähig ist (§ 1 Abs. 1 i. V. m. § 4 Satz 1 PatG).
1.
Der Senat ist für die Behandlung der vorliegenden Teilanmeldung zuständig.
Durch
die
Teilungserklärung
erhält
das
Bundespatentgericht
die
Entscheidungskompetenz über die neue Teilanmeldung, weil deren Gegenstand mit
der Beschwerde in der Beschwerdeinstanz angefallen ist (Schulte, PatG, 11. Aufl.,
GRUR 2019, 766 - Abstandsberechnungsverfahren, Leitsatz b)).
Im vorliegenden Fall war das Beschwerdeverfahren gegen die Zurückweisung der
Stammanmeldung 10 2014 119 048.3 mit Eingang der Beschwerde am
19. Februar 2020 beim Bundespatentgericht anhängig. Über diese Beschwerde
wurde durch Beschluss vom 15. Juni 2021 entschieden. Die Teilungserklärung vom
23. Dezember
ging
somit während
der Anhängigkeit
des
Beschwerdeverfahrens beim Bundespatentgericht ein.
2.
Ausgehend von der Feststellung des Deutschen Patent- und Markenamts im
Schreiben vom 3. März 2021 bestehen an der Wirksamkeit der Teilung keine
Zweifel.
3.
Die vorliegende Teilanmeldung betrifft die Datenverarbeitung in SIMD-
Verarbeitungseinheiten („SIMD“ = „single instruction multiple data“).
In der Beschreibungseinleitung der Teilanmeldung wird ausgeführt, dass SIMD-
Verarbeitungseinheiten Datenelemente parallel verarbeiten können und daher
besonders nützlich sind, wenn derselbe Befehl an einer großen Anzahl von
Datenelementen
auszuführen
ist.
Beispielsweise
könne
eine
Grafikverarbeitungseinheit (GPU) eine SIMD-Verarbeitungseinheit verwenden, um
Verarbeitungsvorgänge
an
einer
großen Anzahl
von Pixeln
eines
computergenerierten Bilds durchzuführen (Seite 1, Zeile 6 bis 18 der Beschreibung
der Teilanmeldung; alle Seiten- und Zeilenangaben in den Abschnitten II.3 und II.4
dieses Beschlusses beziehen sich auf diese Beschreibung).
Ein Verarbeitungsvorgang könne aus einer Mehrzahl von Arbeitselementen
bestehen, bei deren Ausführung eine gemeinsame Sequenz von Befehlen an
entsprechenden
Datenelementen
ausgeführt
werde.
Eine
SIMD-
Verarbeitungseinheit könne Verarbeitungsbahnen umfassen, die jeweils ausgelegt
sind, einen Befehl eines Arbeitselements in mehreren Verarbeitungszyklen
auszuführen. Falls ein Verarbeitungsvorgang nur teilweise belegt sei oder ungültige
Arbeitselemente umfasse, blieben einige „Verarbeitungsschlitze“ - d.h. Zeitfenster,
in denen jeweils ein Befehl in einer bestimmten Verarbeitungsbahn abgearbeitet
werden kann - ungenutzt (Seite 1, Zeile 20 bis Seite 3, Zeile 21 sowie Figuren 1
und 2; der
in Figur 1 dargestellte Verarbeitungsvorgang 100 mit 32
Arbeitselementen wird gemäß Figur 2 auf 16 Verarbeitungsbahnen in zwei
Verarbeitungszyklen ausgeführt).
Moderne Grafikschnittstellen zur Anwendungsprogrammierung wie OpenGL und
DirectX definierten Befehle, die mit Pixeln in einem 2x2-Pixelquad arbeiten. Es sei
z.B. häufig erforderlich, die Änderungsrate einer variierenden Menge von
verschiedenen Pixeln mittels eines „Gradienten“-Vorgangs zu bestimmen. Die
Befehle der Grafikschnittstellen
ließen die Entfernung
von
„leeren“
Pixelverarbeitungsschlitzen (die ungültigen Arbeitselementen entsprechen) nicht
zu, wenn Arbeitselemente in Verarbeitungsvorgängen verpackt werden (Seite 3,
Zeile 23 bis 29).
Eine Aufgabe wird in der Beschreibung der vorliegenden Teilanmeldung nicht
ausdrücklich genannt. Jedoch lässt der Text auf Seite 7, Zeile 25 bis 28 aus Sicht
des Senats auf die Aufgabenstellung schließen, eine SIMD-Verarbeitungseinheit
bereitzustellen, die ausgelegt ist, die Anzahl von Verarbeitungsschlitzen zu
verringern, die aufgrund ungültiger Arbeitselemente in Verarbeitungsvorgängen
ungenutzt bleiben.
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 Datenverarbeitungsarchitekturen -
insbesondere
für
Grafikanwendungen - anzusehen.
4.
Zur Lehre von Patentanspruch 1
Patentanspruch 1 sieht eine SIMD-Verarbeitungseinheit vor (Merkmal M1), d.h. eine
Recheneinheit, die es gestattet, denselben Befehl gleichzeitig auf mehrere
unterschiedliche Daten anzuwenden (Seite 1, Zeile 6 bis 18).
Die
SIMD-Verarbeitungseinheit
ist
ausgelegt,
eine Mehrzahl
von
Verarbeitungsvorgängen zu verarbeiten, die jeweils Arbeitselemente bis zu einer
vorbestimmten Höchstanzahl umfassen (Merkmale M2, M2a). Ein Arbeitselement
kann einen Teilvorgang eines Verarbeitungsvorgangs und insbesondere eine
Sequenz von Befehlen umfassen (Seite 1, Zeile 20 bis 27).
Die Arbeitselemente eines Verarbeitungsvorgangs sollen ausgelegt sein, eine
„gemeinsame“ Sequenz von Befehlen an entsprechenden Datenelementen
auszuführen (Merkmal M2b). Dies soll bedeuten, dass die Arbeitselemente einer
Gruppe von Arbeitselementen des Verarbeitungsvorgangs dieselbe Sequenz von
Befehlen umfassen, die auf entsprechende Datenelemente anzuwenden sind
(Seite 1, Zeile 23 bis 27).
Ferner soll ein Verarbeitungsvorgang durch Blöcke von Arbeitselementen gebildet
werden, die jeweils genau vier Arbeitselemente umfassen und sich auf ein
jeweiliges Pixel-Quad beziehen, wobei jedes Pixel-Quad einen 2x2-Block von vier
Pixeln umfasst (Merkmale M2c, M2d). Ein Block von Arbeitselementen stellt eine
zusammenhängende Menge von Arbeitselementen dar, die in einer oder mehreren
Dimensionen angeordnet sind (vgl. z.B. die Figuren 1 und 2 der Teilanmeldung).
Die
SIMD-Verarbeitungseinheit
umfasst
ferner
eine Gruppe
von
Verarbeitungsbahnen, die ausgelegt sind, Befehle von Arbeitselementen eines
bestimmten
Verarbeitungsvorgangs
über
vier
aufeinander
folgende
Verarbeitungszyklen auf SIMD-Weise auszuführen (Merkmal M3). Dass Befehle
von Arbeitselementen „auf SIMD-Weise“ ausgeführt werden, bedeutet aus
fachmännischer Sicht, dass einzelne Befehle an alle Verarbeitungsbahnen
geschickt und dort
in Abhängigkeit
ihrer
„Breite“ und der Anzahl der
Verarbeitungsbahnen entweder in einem einzigen Verarbeitungszyklus oder in
mehreren aufeinanderfolgenden Verarbeitungszyklen ausgeführt werden (Seite 1,
Zeile 6 bis 18; siehe auch Druckschrift D2, Abschnitt 2.1, erster und zweiter Satz).
Jede der Verarbeitungsbahnen der Gruppe soll ferner ausgelegt sein, Befehle aller
Arbeitselemente für einen jeweiligen Block von Arbeitselementen, der sich auf ein
jeweiliges Pixel-Quad bezieht, über die
vier aufeinander
folgenden
Verarbeitungszyklen hinweg auszuführen (Merkmal M3a). Damit wird insbesondere
zum Ausdruck gebracht, dass die einzelnen Pixelwerte eines Pixelquads
nacheinander ausschließlich in einer einzigen Verarbeitungsbahn verarbeitet
werden (im Beispiel der Figur 6 sollen die Arbeitselemente 0 bis 3, mit denen
offensichtlich Berechnungen an den Pixeln eines ersten Pixelquads vorgenommen
werden, ausschließlich in der ganz linken Verarbeitungsbahn ausgeführt werden,
die Arbeitselemente 4 bis 7 in der zweiten Verarbeitungsbahn von links usw.). Diese
spaltenweise „vertikale“ Anordnung der Blöcke von Arbeitselementen wird in der
Teilanmeldung auch als „Spalte-zuerst-Ordnung“ bezeichnet (Seite 14, Zeile 21 bis
Seite 15, Zeile 13). Da die Befehle der Arbeitselemente gemäß Merkmal M3 über
vier aufeinanderfolgende Verarbeitungszyklen auf SIMD-Weise ausgeführt werden
sollen, implizieren die Merkmale M3 und M3a im Falle einer „Spalte-zuerst-
Ordnung“ der Arbeitselemente, dass auf all diejenigen Pixelquads, deren
zugehörige Arbeitselemente jeweils in einer von mehreren benachbarten „Spalten“
eines Verarbeitungsvorgangs liegen, dieselben Befehle angewendet werden.
Ferner soll die SIMD-Verarbeitungseinheit eine mit der Gruppe von
Verarbeitungsbahnen gekoppelte „Logik“ - also logische Schaltungen - umfassen,
die ausgelegt sind, die Gruppe von Verarbeitungsbahnen zu veranlassen, die
Ausführung eines gegebenen Verarbeitungszyklus zu überspringen, wenn keine
gültigen Arbeitselemente
für die Ausführung
in
der Gruppe
von
Verarbeitungsbahnen
in
diesem Verarbeitungszyklus
eingeplant
sind
(Merkmal M4). Damit wird zum Ausdruck gebracht, dass ein Verarbeitungszyklus
übergangen werden kann, in dem ausschließlich ungültige Arbeitselemente
ausgeführt werden sollen. Dadurch verringert sich die Anzahl ungenutzter
„Verarbeitungsschlitze“ (Seite 20, Zeile 4 bis 14), d.h. die Anzahl von Zeitfenstern,
in denen keine Befehle zur Ausführung vorgesehen sind.
Ein Arbeitselement ist dann ungültig, wenn es sich auf ein ungültiges Datenelement
bzw. einen ungültigen Pixelwert bezieht (Seite 4, Zeile 14 bis 15). Ein Pixelwert
eines Pixelquads wiederum kann ungültig sein, wenn an dem Pixelwert keine oder
nur sehr wenige Befehle auszuführen sind (Seite 10, Zeile 10 bis 16; Seite 24,
Zeile 12 bis 23). Aus Sicht des Fachmanns stellen auch maskierte oder
ausgeblendete
Arbeitselemente,
deren
Ausführungsergebnisse
nicht
weiterverwendet werden, ungültige Arbeitselemente im Sinne von Merkmal M4 dar
(Seite 28, Zeile 4 bis 15).
5.
Der Patentanspruch 1 ist so klar und deutlich gefasst, dass sein
Schutzbereich hinreichend sicher vorhersehbar ist. Außerdem ist die damit
beanspruchte Lehre in der Anmeldung so deutlich und vollständig offenbart, dass
ein Fachmann sie ausführen kann.
6.
Der Patentanspruch 1 ist nicht gewährbar, da sein Gegenstand nicht auf
einer erfinderischen Tätigkeit beruht.
6.1
Für die Beurteilung der beanspruchten Lehre sind die Druckschriften G9 und
D2 von besonderer Bedeutung.
6.1.1 Die Druckschrift G9 ist ein Teil einer einführenden Textreihe zur parallelen
Datenverarbeitung in einer Grafikpipeline (Seite 1, erster Absatz sowie zweiter
Absatz, erster Satz),
in dem die Parallelisierung von Rasterungs- und
Shadingoperationen (vgl. Abschnitte „Going wide during rasterization“, „You need
to go wider!“), die Interpolation von Pixelattributen (vgl. Abschnitte „Attribute
interpolation“, „“Centroid“ interpolation is tricky“) und weitere Teilaspekte des
Shadings (vgl. Abschnitt „The actual shader body“) diskutiert werden.
Dieser Druckschrift
ist
insbesondere zu entnehmen, dass bei der
Grafikverarbeitungsarchitektur „Fermi“ der Firma NVidia mehrere Warps, die aus
maximal 32 Threads bestehen (und somit im Sinne der Merkmale M2 und M2a als
eine Mehrzahl von Verarbeitungsvorgängen angesehen werden können, die jeweils
eine Höchstanzahl von 32 Arbeitselementen umfassen), an die Shader-Einheiten
einer GPU geschickt werden (Abschnitt „You need to go wider!“ - „for NVidia, the
unit of dispatch to shader units is 32 threads, which they call a “Warp“.“). Für den
Fachmann ist selbstverständlich, dass die Anzahl der Threads pro Warp ein bei der
Definition einer Grafikverarbeitungsarchitektur frei wählbarer Designparameter ist,
so dass die 32 Threads z.B. auch auf 2, 4 oder 8 einzelne Warps verteilt werden
können.
Die Pixelwerte, die bei der Ausführung der Warps verarbeitet werden, sind in
Pixelquads angeordnet, d.h. in 2x2-Blöcken (vgl. Figur auf Seite 3), wobei jedes
Pixel als ein Thread behandelt werden kann (Abschnitt „You need to go wider!“,
erster Absatz - „Each quad has 4 pixels (each of which in turn can be handled as
one thread)“). Alle 32 Threads eines Warps führen auf den Pixelwerten von jeweils
acht aufeinanderfolgenden Pixelquads gleichzeitig dieselben Befehle aus (vgl.
Seite 5, letzter Absatz - „work on all elements of each batch usually proceeds in
lockstep. All “threads“ run the same code, at the same time“ i. V. m. Seite 5,
vorletzter Absatz- „multiple batches (or „Warps“ on NVidia hardware […])“ sowie
Abschnitt „You need to go wider!“, erster Absatz - „we need to grab 8 incoming
quads […] before we can send off a batch“; vgl. Merkmal M2b). Daher stellt die in
Druckschrift G9 beschriebene GPU eine SIMD-Verarbeitungseinheit dar
(Merkmal M1), die ausgelegt ist, eine Mehrzahl von Verarbeitungsvorgängen
entsprechend den Merkmalen M2 bis M2b zu verarbeiten. Da ein Warp aus einer
durch 4 teilbaren Anzahl von Threads besteht und sich somit in Viererblöcke von
Arbeitselementen einteilen lässt, liegt auch Merkmal M2c vor.
Die Druckschrift G9 zeigt jedoch nicht ausdrücklich, dass sich die Arbeitselemente
eines solchen Viererblocks gemäß Merkmal M2d auf ein jeweiliges Pixelquad
beziehen, und offenbart auch keines der Merkmale M3, M3a und M4, die
Einzelheiten der Verarbeitung der Viererblöcke
in einer Gruppe von
Verarbeitungsbahnen betreffen.
6.1.2 Die Druckschrift D2 befasst sich mit Methoden zur Maximierung der
Ressourcenauslastung in Grafikverarbeitungseinheiten, die nach dem SIMD-Prinzip
arbeiten und aus mehreren Streaming-Multiprozessoren mit parallelen
Verarbeitungsbahnen („execution lanes“, „SIMD lanes“) bestehen. In diesen
Bahnen werden Threads (d.h. parallelisierbare Befehlsfolgen) ausgeführt, die ein
Programmierer zu sog. kooperativen Threadfeldern („CTAs“ = „cooperative thread
arrays“) gruppiert hat, die ihrerseits aus mehreren „Warps“ bestehen - d.h. aus
kleineren Threadgruppen, die denselben Code umfassen (vgl. Druckschriftentitel
i. V. m. Abschnitt 2.1). Die Anzahl gleichzeitig ausführbarer Threads (die „SIMDwidth“,
vgl. Abschnitt 3.3, Gleichung (1) mit darunterstehendem Text
-
„SIMDwidth
designates the width of the SIMD pipeline“) hängt dabei von der verwendeten
Grafikarchitektur ab; in den Figuren 1, 2, 5 und 7 sind beispielsweise vier
Verarbeitungsbahnen gezeigt.
Damit sind in der Lehre der Druckschrift D2 bereits die Merkmale M1, M2, M2a und
M2b verwirklicht. Denn ein nach dem SIMD-Prinzip arbeitender Streaming-
Multiprozessor ist eine SIMD-Verarbeitungseinheit im Sinne von Merkmal M1. Die
Verarbeitungsbahnen eines solchen Multiprozessors bilden eine Gruppe und sind
ausgelegt, die Befehle der Threads mehrerer CTAs - d.h. die Befehle der
Arbeitselemente mehrerer Verarbeitungsvorgänge - auszuführen (Merkmal M2).
Die Anzahl von Threads pro CTA ist ein Anwendungsparameter und stellt ebenso
wie die Anzahl von Threads pro Warp eine Höchstanzahl von Arbeitselementen dar
(vgl. Abschnitt 2.1, vorletzter Satz; Merkmal M2a). Da ein Streaming-Multiprozessor
eine SIMD-Verarbeitungseinheit
ist, wird
ein CTA
über mehrere
Verarbeitungsbahnen hinweg in mehreren Verarbeitungszyklen ausgeführt, so dass
jede Verarbeitungsbahn eine Sequenz von Befehlen (selbstverständlich an
entsprechenden Datenelementen) ausführt, die sie mit den anderen Bahnen
gemeinsam hat (Merkmal M2b).
Ferner ist den einleitenden Abschnitten der Druckschrift D2 zu entnehmen, dass ein
sogenanntes SIMT-Ausführungsmodell („SIMT“ = „single-instruction multiplethread“) es ermöglicht, in Grafikprozessoren („GPUs“) effiziente SIMD-Pipelines zu
verwenden und gleichzeitig in den ausgeführten Threads beliebige Kontrollflüsse
vorzusehen. Die GPU-Hardware würde auch bedingte Verzweigungen
unterstützen, so dass jede SIMD-Verarbeitungsbahn ihren eigenen logischen
Thread ausführen könne (vgl. Abschnitt 1, erster Absatz sowie Abschnitt 2.1 und
Abschnitt 2.2, erster Satz).
Die
unabhängige
Verarbeitung
von
Verzweigungen würde
durch
hardwaregenerierte Bitmasken ermöglicht, welche kennzeichneten, ob ein Thread
aktiv sei oder nicht. Gemäß dem SIMT-Ausführungsmodell würde die Ausführung
einer divergenten Verzweigung teilweise serialisiert, da der „wahre“ und der
„falsche“ Pfad nacheinander ausgeführt und die Threads auf dem jeweils nicht
aktiven Pfad maskiert werden müssten. Bei jeder Divergenz würden Threads
maskiert und nicht ausgeführt, so dass sich die Anzahl aktiver Threads und damit
die Auslastung der SIMD-Verarbeitungsbahnen weiter reduziere und die Anzahl
„vergeudeter Verarbeitungsschlitze“ („wasted execution slots“) erhöhe (vgl.
Abschnitt 2.2 i. V. m. Figur 1; Abschnitt 2.3, erster Satz; s. auch Abstract und
Abschnitt 1, erster Absatz).
Um die Auslastung der SIMD-Verarbeitungsbahnen zu verbessern, beschreibt die
Druckschrift D2 u.a. die Methode der Threadblock-Verdichtung („Thread block
compaction“ = „TBC“; vgl. Abschnitt 2.3 sowie Figuren 1 und 2). Dabei werden
Threads innerhalb eines CTA unter Beibehaltung ihrer Verarbeitungsbahn (ihrer
„home lane“) umgeordnet (vgl. Abschnitt 2.3 i. V. m. Figuren 1 und 2 - die Warps „-
- - 7“ und „- - A - “ des CTA B und die Warps „4 5 6 -“ und „8 9 - B“ des CTA C
werden umgeordnet, so dass die Warps „- - A 7“ und „- - - -“ bzw. „4 5 6 B“ und „8 9
- -“ gebildet werden). Falls nach einer solchen Verdichtung ein Warp entsteht, der
ausschließlich maskierte Threads - d.h. ungültige Arbeitselemente im Sinne von
Merkmal M4 - enthält, erhöht sich die Auslastung der SIMD-Verarbeitungsbahnen,
da der zur Ausführung dieses Warps vorgesehene Verarbeitungszyklus
übergangen wird (vgl. Figur 1 - ohne Verdichtung werden die Warps „- - - 7“ und „-
- A -“ des CTA B in zwei Verarbeitungszyklen ausgeführt, nach der Verdichtung
genügt stattdessen die Ausführung des verdichteten Warps „- - A 7“ in einem
einzigen Verarbeitungszyklus). Der Druckschrift D2 ist ebenfalls zu entnehmen,
dass Warps übergangen werden, die bereits vor einer Threadblock-Verdichtung
ausschließlich aus ungültigen Arbeitselementen bestehen; so ist der in Figur 1 (a)
gezeigte Warp „- - - -“ des CTA B bereits in dem in Figur 1 (b) gezeigten
Ausführungsablauf nicht mehr vorhanden.
Gemäß Druckschrift D2 können die Threads vor der Verdichtung im Rahmen einer
„SIMD lane permutation (SLP)“ über die Verarbeitungsbahnen hinweg permutiert
werden (vgl. Abschnitte 4.1 und 4.3 i. V. mit den Figuren 7 bis 9 sowie Abschnitt 4.4
- „Implementation of SLP […] Enabling SLP on top of TBC […]“). Durch diese
zusätzliche Maßnahme können in vielen Fällen noch mehr Verarbeitungszyklen
übergangen werden,
so dass eine noch höhere Auslastung der
Verarbeitungsbahnen erzielt wird (vgl. Figur 14).
Es ist selbstverständlich, dass das Übergehen der Warps durch logische
Schaltungen der Streaming-Multiprozessoren gesteuert werden muss, die mit den
einzelnen Verarbeitungsbahnen gekoppelt sind. Daher verwirklicht die Lehre der
Druckschrift D2 auch das Merkmal M4.
Die in Figur 7 (a) im Zusammenhang mit einer Threadblock-Verdichtung („TBC“)
gezeigten quadratischen Blöcke mit 16 Threads entsprechen jeweils einem CTA,
dessen Befehle
in vier Verarbeitungsbahnen
in vier Verarbeitungszyklen
abgearbeitet werden. Ein solcher CTA besteht aus vier „Spalten“, die jeweils genau
vier Threads enthalten und als „Blöcke von Arbeitselementen“ im Sinne von
Patentanspruch 1 angesehen werden können (z.B. umfasst die ganz linke Spalte
des CTA, der dem links in Figur 7 (a) gezeigten quadratischen Block entspricht, die
Threads „0 4 8 C“; die zweite Spalte von links die Threads „- - - -“ usw.; Merkmal 2c).
Die vier Verarbeitungsbahnen, die gemäß dem in Figur 7 (a) gezeigten Beispiel
verwendet werden, sind dazu ausgelegt, die Befehle der 16 Threads über vier
aufeinanderfolgende Verarbeitungszyklen auf SIMD-Weise auszuführen, indem
einzelne Befehle an alle vier Verarbeitungsbahnen geschickt und dort ausgeführt
werden (vgl. Abschnitt 2.1 - „streaming multiprocessors (SM) […] each SM contains
a number of parallel execution lanes […] that operate in SIMD fashion“;
Merkmal M3).
Jede einzelne dieser vier Verarbeitungsbahnen ist selbstverständlich ausgelegt, die
Befehle aller 16 Threads - und damit die Befehle der vier Thread-„Spalten“ - über
die vier Verarbeitungszyklen hinweg auszuführen (Teilmerkmal von Merkmal M3a).
Die Druckschrift D2 befasst sich allerdings nicht speziell mit der Verarbeitung von
Pixelquads und offenbart daher nicht ausdrücklich, dass sich vier Arbeitselemente
einer „Spalte“ von Arbeitselementen jeweils auf ein Pixel-Quad beziehen, das einen
2x2-Block von vier Pixeln umfasst (Merkmal M2d sowie verbleibendes
Teilmerkmal „[…] Block von Arbeitselementen, der sich auf ein jeweiliges Pixel-
Quad bezieht“ von Merkmal M3a).
6.2
Der Gegenstand von Patentanspruch 1 ist durch den aufgezeigten Stand der
Technik nahegelegt.
In Druckschrift G9 ist beschrieben, dass einige der Pixel eines Pixelquads, die an
die Shader-Einheiten der GPU geschickt werden, unsichtbar sind, so dass an ihnen
kein Shading durchgeführt werden muss (Seite 2, letzter Absatz und Seite 3, erster
Absatz i. V. m. der Figur auf Seite 3 - die Werte der hellgrau hinterlegten
unsichtbaren
Pixel werden weder
für
ein
Shading
noch
für
Gradientenberechnungen verwendet, die Werte der mittelgrau hinterlegten,
ebenfalls
unsichtbaren
Helferpixel
(„helper
pixels“)
nur
für
Gradientenberechnungen, und die Werte der dunkelgrau hinterlegten sichtbaren
Pixel sowohl für ein Shading als auch für Gradientenberechnungen). Die
unsichtbaren Pixel sind zwar maskiert, jedoch wird auch an ihnen zwangsläufig ein
Shading durchgeführt (vgl. Seite 2, zweiter vollständiger Absatz - „all pixels in a
quad, even the masked ones, get shaded“).
Die Werte der unsichtbaren Pixel stellen „ungültige“ Pixelwerte im Sinne des
Patentanspruchs 1 dar, da an ihnen selbstverständlich weniger Befehle als an den
Werten der sichtbaren Pixel auszuführen sind. Dementsprechend sind die
maskierten Threads, die der Verarbeitung der Werte der unsichtbaren Pixel dienen,
keine gültigen Arbeitselemente im Sinne von Patentanspruch 1.
Gemäß Druckschrift G9 werden 25%-75% der für das Shading eines Pixelquads
aufgewendeten Arbeit vergeudet, wenn viele kleine Dreiecke zu rendern sind, da
auch für die unsichtbaren Helferpixel ein Shading durchgeführt wird (vgl. Seite 2 -
„between 25-75% of the shading work for quads generated for triangle edges is
wasted“; Seite 3 - „wasted shading work on quads“; je nachdem ob ein Pixelquad
ein, zwei oder drei Helferpixel besitzt, sind 25%, 50% oder 75% der Shading-Arbeit
überflüssig). Zum Zeitpunkt der Abfassung der Druckschrift G9 erlaubten weder
Programmierschnittstellen noch die Hardware eine Vereinigung von Pixelquads
(Seite 3, erster Absatz, vorletzter Satz).
Der Fachmann hatte somit Veranlassung, im Stand der Technik nach Verfahren zu
suchen, die es erlauben, ein Pixel-Shading zu beschleunigen, wenn eine große Zahl
von Pixeln - und damit auch eine große Zahl der Threads, die zu diesen Pixeln
gehören - ungültig ist.
Hierbei konnte er auf die Druckschrift D2 stoßen, die aufzeigt, wie Warps
beschleunigt verarbeitet werden können, die ungültige Threads aufweisen (s.o.,
Abschnitt II.6.1.2).
Es bot sich daher für den Fachmann an, die in Druckschrift G9 beschriebenen
Pixelquads gemäß der in der Druckschrift D2 beschriebenen Lehre zu verarbeiten,
d.h.
Streaming-Multiprozessoren mit
insbesondere
vier
parallelen
Verarbeitungsbahnen vorzusehen, jeweils 16 Threads auf einen CTA mit vier Warps
zu verteilen und gemäß der Methode der Threadblock-Verdichtung mit der
Zielsetzung zu komprimieren, dass für einen Verarbeitungszyklus ausschließlich
ungültige Arbeitselemente vorgesehen sind, deren Ausführung übergangen werden
kann.
Von dieser kombinierten Lehre unterscheidet sich der Gegenstand von
Patentanspruch 1 nur durch das Merkmal M2d und das verbleibende Teilmerkmal
von Merkmal M3a.
Die Druckschriften D2 und G9 überlassen es dem Fachmann, die erforderliche
Anfangsverteilung der einzelnen Threads auf den CTA - und damit auch die
Anfangsverteilung der Pixelwerte der Pixelquads auf die Verarbeitungsbahnen -
festzulegen.
In diesem Zusammenhang war dem Fachmann hinlänglich bekannt, dass sich die
Leistungsfähigkeit von Grafikprogrammen, die ein Pixel-Shading durchführen,
erhöhen lässt, indem Grafikdaten mit „vertikalen“ Methoden verarbeitet werden.
Diese Methoden sind dadurch charakterisiert, dass Teilabschnitte der Grafikdaten -
also gerade auch Pixelquads - jeweils in einem einzigen von mehreren parallelen
„vertikalen“ Kanälen verarbeitet werden (vgl. D11, Absatz [0044] i. V. m. Absatz
[0022] und [0023], jeweils vorletzter Satz).
Daher lag es für den Fachmann auf der Hand, die Threads so auf den CTA zu
verteilen, dass jeweils vier auf dasselbe Pixelquad bezogene Threads „vertikal“ in
einer einzigen Spalte des CTA angeordnet sind, so dass sie einen Viererblock von
Arbeitselementen bilden, bei dessen Ausführung die Pixelwerte des Pixelquads
nach einer Threadblock-Verdichtung in einer einzigen Verarbeitungsbahn - je nach
Anzahl ungültiger Arbeitselemente in dem CTA in bis zu vier aufeinanderfolgenden
Verarbeitungszyklen - verarbeitet werden (vgl. Abschnitt II.6.1.2).
Auf diese Weise konnte der Fachmann somit auch zum Merkmal M2d sowie zum
verbleibenden Teilmerkmal von Merkmal M3a gelangen, ohne erfinderisch tätig
zu werden.
6.3
Die Anmelderin wendet sinngemäß ein, der Satz “This gives you a very cheap
way to get derivatives at the cost of always having to shade groups of 2x2 pixels at
once”
in Druckschrift G9 lenke den Fachmann gerade von einer vertikalen
Anordnung der auf die Pixel eines 2x2-Pixelquads bezogenen Arbeitselemente weg
in Richtung einer horizontalen Anordnung. Zudem würden in Druckschrift D2 die
Threads über die Verarbeitungsbahnen hinweg permutiert und damit gerade nicht
in derselben Verarbeitungsbahn ausgeführt, wie es hingegen gemäß
Patentanspruch 1 der Fall sei. Außerdem beträfen die in der Druckschrift D11
beschriebenen „vertikalen“ Verfahren im Gegensatz zu Merkmal M3 keine
Verarbeitung „auf SIMD-Weise“, was insbesondere aus den Absätzen [0021] und
[0028] der Druckschrift D11 hervorgehe.
Diese Argumente überzeugen allerdings nicht.
So differenziert der von der Anmelderin zitierte Satz in Druckschrift G9 nicht danach,
ob Gruppen von jeweils vier Threads, die sich auf die Pixel eines 2x2-Quads
beziehen, vertikal oder horizontal verarbeitet werden. Denn auch wenn diese
Gruppen jeweils in einzelnen vertikalen Spalten eines Verarbeitungsvorgangs
liegen, werden sie zeitgleich (“at once”) über insgesamt vier Verarbeitungszyklen
hinweg verarbeitet.
Weiterhin trifft es zwar zu, dass Threads, die zunächst in einer Spalte vertikal
angeordnet sind, nicht von derselben Verarbeitungsbahn abgearbeitet werden,
wenn sie über die Verarbeitungsbahnen hinweg “horizontal” permutiert worden sind.
Die aus der Druckschrift D2 bekannte Threadblock-Verdichtung erfordert jedoch
keine solchen Permutationen, so dass Threads, die gemäß einer bestimmten
Anfangsverteilung
in einer Spalte angeordnet worden sind, aufgrund der
Verdichtung nur innerhalb dieser Spalte - also nur “vertikal” - umgeordnet werden.
Da der Druckschrift D11 die allgemeine Lehre zu entnehmen ist, dass bei einer
„vertikalen“ Verarbeitung beliebige Befehle auf beliebige Daten angewendet werden
können (vgl. die oben in Abschnitt 6.2 zitierten Textstellen der Druckschrift D11 und
ferner auch die von der Anmelderin genannten Absätze [0021] („SIMD or other
instructions“) und [0028] („data (e.g., SIMD data) is pre-organized […] when
instructions and associated data are such that demand processing in the vertical
mode of operation […]“)), können Befehle, die in demselben Kanal „vertikal“
verarbeitet werden, auch gemäß Druckschrift D11 zu verschiedenen SIMD-
Befehlen gehören, die nacheinander ausgeführt werden. Die Druckschrift D11 führt
den Fachmann also nicht notwendigerweise auf eine Art der SIMD-
Instruktionsverarbeitung, die sich von der in der Druckschrift D2 beschriebenen
Herangehensweise unterscheidet.
Da auch nach einer Threadblock-Verdichtung über die vier Spalten des CTA hinweg
in jedem Verarbeitungszyklus auf den Pixelwerten vier aufeinanderfolgender
„vertikal“ verarbeiteter Pixelquads dieselben Befehle ausgeführt werden (vgl.
Druckschrift G9, Seite 5, letzter Absatz), können die Streaming-Multiprozessoren
diese Befehle auch wie in Druckschrift D2 beschrieben (vgl. Abschnitt II.6.1.2,
drittletzter Absatz) „auf SIMD-Weise“ ausführen.
Im Übrigen geht es dem Fachmann im vorliegenden Fall auch nicht darum, die
SIMD-Arbeitsweise der Streaming-Multiprozessoren der Druckschrift D2 in
technischer Hinsicht abzuändern, sondern es ist ihm vielmehr nur an einer
zweckmäßigen Anfangsverteilung der Threads innerhalb des CTA gelegen. Die
Druckschrift D11 belegt in diesem Zusammenhang lediglich das fachmännische
Wissen, dass es bei einem Pixel-Shading
vorteilhaft
sein
kann,
zusammenhängende Datenabschnitte (hier: die Pixelwerte eines Pixelquads) in
einer einzigen Verarbeitungsbahn zu verarbeiten, da sich dadurch die
Leistungsfähigkeit
einer Grafikpipeline
erhöht
und
bei
bestimmten
Rechenoperationen (etwa bei Gradientenberechnungen, vgl. Absatz [0043] der
Druckschrift D11) die Pixelwerte eines Pixelquads nicht zwischen verschiedenen
Verarbeitungsbahnen ausgetauscht werden müssen.
7.
Da über einen Antrag jeweils nur einheitlich entschieden werden kann, fallen
mit dem Patentanspruch 1 auch die übrigen Patentansprüche 2 bis 9 (BGH GRUR
1997, 120 - Elektrisches Speicherheizgerät).
8.
Eine Zurückverweisung der Sache an das Deutsche Patent- und Markenamt
zur Prüfung der Teilanmeldung, wie von der Anmelderin hilfsweise beantragt, kam
aus verfahrensökonomischen Gründen nicht in Betracht.
Das Bundespatentgericht hat zwar nach § 79 Abs. 3 PatG die Möglichkeit, die
Sache nach seinem pflichtgemäßen Ermessen an Deutsche Patent- und
Markenamt zurückzuverweisen. Dem Senat war allerdings eine eigene
Entscheidung über die Teilanmeldung möglich, weil die insoweit relevanten Fragen
überwiegend bereits im Verfahren über die Beschwerde gegen die Zurückweisung
der Stammanmeldung hinreichend aufbereitet waren und
im Übrigen mit
vertretbarem
Aufwand
geklärt
werden
konnten
(vgl.
BGH,
Abstandsberechnungsverfahren, a.a.O., Rdnr. 11 und Rdnr. 13). Die Sache war
somit entscheidungsreif und eine Zurückverweisung nicht veranlasst.
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
das beschließende Gericht nicht vorschriftsmäßig besetzt war,
1. 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,
2. einem Beteiligten das rechtliche Gehör versagt war,
3. 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,
4. der Beschluss aufgrund einer mündlichen Verhandlung ergangen ist, bei der die Vorschriften
über die Öffentlichkeit des Verfahrens verletzt worden sind, oder
5. 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
einen beim Bundesgerichtshof zugelassenen Rechtsanwalt als Bevollmächtigten
einzulegen.
Dr. Morawek
Dr. Forkel
Akintche
Dr. Städele
Fi