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,

57

ff.

Datengenerator;

GRUR

2007,

862

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