DE19581638C2 - Rechenvorrichtung mit einem Mikroprozessor, einem neuralen Netz-Koprozessor und einer DMA-Steuervorrichtung - Google Patents
Rechenvorrichtung mit einem Mikroprozessor, einem neuralen Netz-Koprozessor und einer DMA-SteuervorrichtungInfo
- Publication number
- DE19581638C2 DE19581638C2 DE19581638T DE19581638T DE19581638C2 DE 19581638 C2 DE19581638 C2 DE 19581638C2 DE 19581638 T DE19581638 T DE 19581638T DE 19581638 T DE19581638 T DE 19581638T DE 19581638 C2 DE19581638 C2 DE 19581638C2
- Authority
- DE
- Germany
- Prior art keywords
- coprocessor
- neural network
- microprocessor
- output
- computing device
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
- G06F9/3879—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0499—Feedforward networks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Molecular Biology (AREA)
- Neurology (AREA)
- Multi Processors (AREA)
- Advance Control (AREA)
- Computer And Data Communications (AREA)
- Feedback Control In General (AREA)
- Complex Calculations (AREA)
Description
Diese Erfindung bezieht sich auf eine Rechenvorrichtung, die
einen Mikroprozessor mit mindestens einem neuralen Netz-
Coprozessor verwendet, der eine parallele
Hochgeschwindigkeitsberechnung durchführen kann und der in
einem VLSI Chip (einem hoch
integrierten Chip) implementiert werden kann.
Ähnliche von der Anmelderin entwickelte Rechenvorrichtungen sind in den US 5 390 136 und US
5 517 667 beschrieben. Künstliche neurale Netze finden
Verwendung in einer Vielzahl von Rechnerumgebungen, wie
beispielsweise bei der Spracherkennung, Prozeßsteuerung, der
optischen Zeichenerkennung, der Signalverarbeitung und der
Bildverarbeitung. Verarbeitungsgeräte für viele der
vorhergehenden Umgebungen können durch neurale Netze
implementiert werden, die eine Vielzahl elementarer
Logikelemente, Neuronenschaltungen genannt, umfassen.
Eine Neuronenschaltung ist der fundamentale Baustein eines
neuralen Netzes. Eine Neuronenschaltung hat mehrere Eingänge
und einen Ausgang. Wie das in der verwandten, oben angegebe
nen Erfindung Nr. 1 beschrieben ist, umfaßt die Struktur ei
ner konventionellen Neuronenschaltung oft eine Multiplizier
schaltung, eine Summierschaltung, eine Schaltung zur Durch
führung einer nichtlinearen Funktion (wie beispielsweise ein
binärer Schwellwert oder eine Sigmoidfunktion), und eine
Schaltung, die als Synapsen oder gewichtete Eingangsverbin
dungen fungiert. Die oben erwähnte verwandte Erfindung Nr. 1
beschreibt in einer Ausführungsform eine Neuronerischaltung,
die nur einen Addierer als ihr Hauptverarbeitungselement ent
hält.
Wie in der oben angegebenen verwandten Erfindung Nr. 2 disku
tiert ist, gibt es mehr als zwanzig bekannte Arten von neura
len Netzarchitekturen, von denen die "Rückwärtsausbreitung
(back-propagation)", "Perzeptron" und das "Hopfield-Netz" die
bekanntesten sind. Die verwandte Erfindung Nr. 2 beschreibt
in einer Ausführungsform ein neurales Netz, das kein wieder
holtes Training erfordert, das ein globales Minimum für jeden
Satz von Eingangsvektoren ergibt, und das eine Architektur
aufweist, die einfach zu implementieren ist.
Wie bekannt ist, umfassen konventionelle Verarbeitungsmaschi
nen (des von Neumann Typs) zwei fundamentale Blöcke, eine Re
cheneinheit und eine Speichereinheit, von der die Rechenein
heit Befehle und Daten erhält, um sequentiell ihre Funktionen
auszuführen. Das einzig verfügbare Verfahren zur Erhöhung der
Rechnerleistung besteht darin, die Rechengeschwindigkeit zu
erhöhen und somit die pro Zeiteinheit ausführbaren Operatio
nen zu erhöhen.
Fig. 1 zeigt eine Verarbeitungsmaschine des von Neumann Typs
des Standes der Technik. Um allgemein eine Funktion auszufüh
ren, führt die CPU 1 (Zentralverarbeitungseinheit) wiederholt
die folgenden sequentiellen Schritte aus, die die Basis für
den Betrieb jedes von Neumann-Rechners bilden. Als erstes ge
winnt die CPU 1 einen Befehl vom Hauptspeicher 3 über den
CPU-Bus 4. Als nächstes holt die CPU 1 Daten vom Hauptspei
cher 3 und führt eine arithmetische oder logische Operation
mit diesen Daten gemäß dem vorher erwähnten Befehl durch.
Schließlich speichert die CPU 1 die Ergebnisse der ausgeführ
ten Operation im Hauptspeicher 3.
Die hauptsächliche Beschränkung des von Neumann Rechners be
steht darin, daß er nur eine Operation zu einem Zeitpunkt
durchführt, und obwohl die Operation in einer sehr kurzen
Zeit stattfinden mag, schließt die bloße Tatsache, daß die
Operationen seriell ausgeführt werden, eine dramatische Erhö
hung der Rechengeschwindigkeit aus. Es wurden daher Rechner
architekturen entwickelt, die Operationen gleichzeitig aus
führen können.
Fig. 2 zeigt einen herkömmlichen Rechner mit Mehr
fachprozessor. Der Mehrfachprozessor-Rechner umfaßt eine
Vielzahl von von Neumann Rechnern 7, 9, 11, die miteinander
über ein sie verbindendes Netz 14 kommunizieren. Durch die
Tatsache, daß er eine Vielzahl von Operationen zur selben
Zeit ausführen kann, erhöht der Mehrfachprozessor-Rechner die
Rechenleistung gegenüber einem traditionellen von Neumann-
Rechner. Der Mehrfachprozessor-Rechner ist jedoch teuer und
schwierig zu implementieren und zu programmieren. Das Ausfüh
ren von Software-Anwendungen auf einem Mehrfachprozessor-
Rechner erfordert einen komplizierten Compiler. Zusätzlich
ergibt die Kommunikation zwischen den Prozessoren häufig Eng
paßsituationen, die die gesamte Rechenleistung des Mehrfach
prozessor-Rechners vermindern.
Fig. 3 zeigt einen herkömmlichen von Neumann-Rechner mit
einem mathematischen Koprozessor. Die CPU 20 ist mit dem
mathematischen Koprozessor 22 und dem Hauptspeicher 24 über
den CPU-Bus 26 verbunden. Die CPU 20 führt im allgemeinen die
gleichen Funktionen wie die oben beschriebene CPU 1 der Fig.
1 durch. Aber zusätzlich steuert die CPU 20 die Operation des
Datentransfers zum mathematischen Koprozessor 22. Der
mathematische Koprozessor 22 ist eine logische Schaltung, die
speziell geeignet ist, um mathematische Berechnungen in
wesentlich kürzerer Zeit als die CPU 20 auszuführen. Typi
scherweise umfaßt ein mathematischer Koprozessor speziali
sierte Elektronikschaltungen, um arithmetische Operationen,
wie beispielsweise Gleitkomma-Divisionen und Multiplikationen
und transzendentale Funktionen, wie Sinus, Cosinus, Tangens,
u. s. w. durchzuführen. Auch wenn ein mathematischer Koprozes
sor die Rechenleistung erhöhen mag, so leidet die in Fig. 3
dargestellte Architektur an der fundamentalen Begrenzung, daß
sie nur eine Operation zu einem Zeitpunkt ausführen kann. Zu
sätzlich sind die mathematischen Funktionen, die durch den
Koprozessor beschleunigt werden, durch die Schaltung des ma
thematischen Koprozessors vorbestimmt und somit in ihrer Zahl
begrenzt und nicht durch Software neu konfigurierbar.
Die WO 93/05473 A1 lehrt ein neuronales Netzwerk
bestehend aus einer CPU, einem Speicher und einem neuralen Netz-Koprozessor.
Die US 5 204 938 beschreibt eine Computerarchitektur, die
besonders zum Einrichten neuronaler Netzwerke ausgelegt ist.
Sie umfaßt mehrere parallele Prozessoren, von denen jeder
seinen eigenen Speicher für Gewicht- und
Verbindungsinformationen über die Knoten des neuronalen
Netzwerks aufweist. Die Prozessoren berechnen Ausgabewerte
für eine Menge von Knoten der nächsthöheren Schicht des
neuronalen Netzwerkes. Die Computerarchitektur weist ferner
einen globalen Speicher auf, der mit jedem der Prozessoren
über einen gemeinsamen Datenbus verbunden ist. Ausgabewerte
der Prozessoren werden über den globalen Speicher an jeden
Prozessor gesendet, wobei auch Direct Memory Access (DMA) vorgesehen ist.
Die oben beschriebenen herkömmlichen Konfigurationen liefern
nicht unter allen Umständen eine befriedigende
Rechenleistung. Besonders wenn eine umfangreiche
mathematische Berechnung erforderlich ist, bieten die
herkömmlichen Lösungen im allgemeinen keine adäquate
Rechenleistung zu einem vernünftigen Preis.
Aufgabe der Erfindung ist es, eine Rechenvorrichtung
anzugeben, die eine Vielzahl komplizierter mathematischer
Funktionen und eine große Zahl von Rechenoperationen pro
Zeiteinheit, wie sie insbesondere für neurale Netze benötigt werden, durchführen kann, sowie leicht zu programmieren
und billig zu implementieren ist.
Diese Aufgabe wird durch die Lehre des unabhängigen Anspruchs
1 gelöst.
Bevorzugte Ausführungsformen sind Gegenstand der
Unteransprüche.
Ein Vorteil der Erfindung besteht daher darin, eine
Rechenvorrichtung anzugeben, die einen Koprozessor umfaßt,
der keine Folge von Rechenbefehlen erfordert und der eine
einfache Schnittstelle ähnlich einer konventionellen
Speichervorrichtung aufweist.
Vorteilhaft ist ferner die stark verbesserte Rechenleistung
eines neuralen Netz-Koprozessors, der arithmetische
Operationen gleichzeitig durchführt. Die stark verbesserte
Rechenleistung führt zu einer Verminderung der Rechenzeit und
somit zu einer starken Senkung der Kosten sowie der
Komplexität der Programmierung und Implementierung.
Ein weiterer Vorteil der Erfindung besteht in einer
wesentlichen Verkleinerung der für die Implementierung der
Rechenvorrichtung benötigten Chipfläche, wenn der neurale
Netz-Koprozessor mit einem Mikroprozessorchip integriert
wird.
Ein anderer Vorteil der Erfindung besteht darin, daß ein
neuraler Netz-Koprozessor durch Software konfigurierbar ist,
um eine Vielzahl verschiedener mathematischer Funktionen zu
berechnen.
Ferner wird durch einen direkten Speicherzugriff (DMA) der
Austausch von Datenblöcken zwischen dem neuralen Netz-
Koprozessor und anderen Vorrichtungen über einen
Verbindungsbus in vorteilhafter Weise beschleunigt, was die
Gesamtrechenleistung der Rechenvorrichtung erhöht.
Im folgenden wird eine bevorzugte Ausführungsform der
Erfindung unter Bezugnahme auf die beiliegenden Zeichnungen
näher erläutert.
Fig. 1 zeigt einen von Neumann-Rechner des Standes der Tech
nik.
Fig. 2 zeigt einen Mehrfachprozessorrechner des Standes der
Technik.
Fig. 3 zeigt einen von Neumann-Rechner des Standes der Tech
nik mit einem mathematischen Koprozessor.
Fig. 4 zeigt ein schematisches Diagramm einer Rechenvorrich
tung, die einen neuralen Netz-Koprozessor und einen Mikropro
zessor umfaßt, in Übereinstimmung mit einer bevorzugten Aus
führungsform der Erfindung.
Fig. 5 zeigt ein schematisches Diagramm einer Rechenvorrich
tung, die mindestens einen neuralen Netz-Koprozessor und ei
nen Mikroprozessor, der in die gleiche integrierte Schaltung
eingebettet ist, umfaßt, in Übereinstimmung mit einer bevor
zugten Ausführungsform der Erfindung.
Fig. 6 zeigt ein schematisches Diagramm einer Rechnerarchi
tektur, die einen Mikroprozessor mit einer Vielzahl neuraler
Netz-Koprozessoren umfaßt, in Übereinstimmung mit der
Erfindung.
Fig. 7 zeigt ein schematisches Diagramm eines neuralen Netz-
Koprozessors, dessen Eingangsgrößen sequentiell empfangen
werden und der eine Vielzahl von Ausgängen hat, in Überein
stimmung mit einer bevorzugten Ausführungsform der Erfindung.
Fig. 8 zeigt ein Flußdiagramm eines Verfahrens zum Betreiben
jeder der Rechnervorrichtungen, die in den Fig. 4, 5 und 6
gezeigt sind.
Fig. 9 zeigt ein Verfahren zum Schreiben von Torfunktionen in
den neuralen Netz-Koprozessor gemäß einer bevorzugten
Ausführungsform der Erfindung.
Fig. 10 zeigt ein Verfahren zum Schreiben von Gewichtswerten
in den neuralen Netz-Koprozessor gemäß einer bevorzugten Aus
führungsform der Erfindung.
Für einen Fachmann ist es klar, daß die Rechenvorrichtung der
Erfindung in einer integrierten Schaltung, einer gedruckten
Leiterplatte oder einer Kombination daraus implementiert
werden kann, und daß die Bezeichnungen "zentrale
Verarbeitungseinheit" (CPU), "Universalprozessor", und
"Mikroprozessor" in dieser Beschreibung austauschbar verwen
det werden, was ebenso für die Bezeichnungen
"Neuronenschaltung" und "Neuron" und
"Summierschaltung"/"Summierer" u. s. w. gilt.
Fig. 4 zeigt ein schematisches Diagramm einer Rechenvorrich
tung, die einen neuralen Netz-Koprozessor und einen Mikropro
zessor umfaßt, gemäß einer bevorzugten Ausführungsform der
Erfindung. Der Mikroprozessor 30 ist eine CPU oder irgend
eine andere digitale Steuervorrichtung, die eine
Universalrecheneinheit umfaßt. Der Mikroprozessor 30 ist
durch den Bus 34 mit dem Hauptspeicher 31, der I/O Steuerung
33 und dem neuralen Netz-Koprozessor 32 verbunden. Der Mikro
prozessor führt Universalprogramme aus und kann auch den Da
tenfluß zwischen über den Bus 34 verbundenen Vorrichtungen
steuern. Die I/O Steuerung ist eine Vorrichtung, die den Da
tenfluß zwischen dem Bus 34 und externen Vorrichtungen steu
ert, die nicht mit dem Bus 34 verbunden sind.
Der Bus 34 ist ein digitaler Bus und ein Fachmann wird erken
nen, daß die Breite des Busses 8, 16, 32 oder irgendeine an
dere Zahl von Bits betragen kann.
Der Mikroprozessor 30 führt Softwareprogramme aus, die übli
cherweise im Hauptspeicher 31 gespeichert sind. Ein Fachmann
wird jedoch erkennen, daß der Mikroprozessor 30 einen inter
nen Speicher umfassen kann, der auch verwendet werden kann,
um ausführbare Softwareprogramme durchzuführen.
Obwohl der Mikroprozessor 30 ein Universalprozessor ist, der
eine Vielzahl verschiedener Algorithmen ausführen kann, kann
es unter gewissen Umständen allgemein akzeptabel sein, in ei
ner bevorzugten Ausführungsform die Funktionen des Mikropro
zessors 30 darauf zu begrenzen, den Hauptspeicher, den neura
len Netz-Koprozessor und die Datenübertragung über den Bus zu
steuern. Ein Fachmann wird erkennen, daß die Datenübertragung
einfach dadurch durchgeführt werden kann, daß der Mikropro
zessor 30 eine Serie von Befehlen ausführt, die die Daten
über den Bus 34 bewegen. In einer bevorzugten Ausführungsform
der Erfindung wird jedoch ein sogenannter direkter Speicher
zugriff (DMA) allgemein verwendet, um Daten über den Bus zu
übertragen.
Der DMA kann verwendet werden, um Daten zwischen irgendwelchen
Vorrichtungen, die mit dem Bus verbunden sind, zu übertragen.
In einer bevorzugten Ausführungsform wird der DMA insbeson
dere verwendet, um Daten zwischen dem neuralen Netz-Koprozes
sor 32 und den anderen Vorrichtungen zu übertragen. Eine Mi
kroprozessorsteuerung ist während einer DMA-Datenübertragung
nicht notwendig; somit ist der Mikroprozessor frei, um wäh
rend einer DMA-Übertragung andere Aufgaben auzuführen. Im
allgemeinen werden während einer DMA-Übertragung große Daten
ströme über den Bus ohne Unterbrechung übertragen.
Eine DMA-Steuerung 15, die in einer bevorzugten Ausführungs
form im neuralen Netz-Koprozessor 32 enthalten ist, initiiert
einen DMA-Transfer zwischen zwei Vorrichtungen, die beide mit
dem Bus 34 verbunden sind, indem sie einer Vorrichtung signa
lisiert, Daten auf den Bus zu schreiben und der anderen Vor
richtung signalisiert, gleichzeitig die gleichen Daten vom
Bus zu lesen. Obwohl in Fig. 4 die DMA-Steuervorrichtung als
im Koprozessor 32 befindlich gezeigt ist, wird es einem Fach
mann verständlich, daß die DMA-Steuervorrichtung auch im Mi
kroprozessor 30, im Hauptspeicher 31, in der I/O Steuerung 33
oder in einer getrennten mit dem Bus verbundenen Vorrichtung
untergebracht sein kann. Für einen Fachmann ist es auch ver
ständlich, daß Daten, die während eines DMA-Transfers auf den
Bus 34 geschrieben werden, gleichzeitig durch eine oder meh
rere der mit dem Bus verbundenen Vorrichtungen gelesen werden
können.
Der Koprozessor 32 kann Daten von irgendeiner der anderen mit
dem Bus 34 verbundenen Vorrichtungen, einschließlich des
Hauptspeichers 32, der I/O-Steuerung 33 und des Mikroprozes
sors 30 empfangen, und er kann Daten zu irgend einer anderen
Vorrichtung auf dem Bus, einschließlich des Hauptspeichers
31, der I/O-Steuerung 33 und dem Mikroprozessor 30 ausgeben.
Die Daten, die vom Koprozessor 32 empfangen werden, umfassen
Torfunktionen, Neuronengewichtswerte (polynomische
Koeffizienten) und Koprozessoreingaben, wobei die Bedeutung
dieser Daten in der Erfindung nachfolgend beschrieben wird.
Der neurale Netz-Koprozessor 32 dient im allgemeinen um po
lynomische Erweiterungen zu berechnen. Die Form der
polynomischen Erweiterungen, die durch den Koprozessor 32
berechnet werden können, werden weiter unten detailliert be
schrieben.
Fig. 5 zeigt ein schematisches Diagramm einer Rechenvorrich
tung, die mindestens einen neuralen Netz-Koprozessor und ei
nen Mikroprozessor, der in der gleichen integrierten Schal
tung eingebettet ist, umfaßt, gemäß einer bevorzugten Ausfüh
rungsform der vorliegenden Erfindung. Der Vorteil der Einbet
tung des neuralen Netz-Koprozessors zusammen mit einem Mikro
prozessor in einem einzigen Chip besteht darin, daß die Re
chenvorrichtung weniger Leistung und Raum verbraucht.
Der Hybridmikroprozessor 35 ist eine integrierte Schaltung,
die einen Mikroprozessor und mindestens einen neuralen Netz-
Koprozessor umfaßt. Der Mikroprozessor der im Hybridmikropro
zessor 35 enthalten ist, führt Funktionen aus, die ähnlich
dem des Mikroprozessors 30 der Fig. 4 sind, und ebenso dienen
der Hauptspeicher 36, der Bus 37 und die I/O-Steuerung 38
Zwecken, die ähnlich denen des oben beschriebenen Hauptspei
chers 31, des Buses 34 beziehungsweise der I/O-Steuerung 33
der Fig. 4 sind. Der Hybridmikroprozessor 35, der Hauptspei
cher 36 und die I/O-Steuerung 38 sind durch den Datenbus 37
verbunden.
Die neuralen Netz-Koprozessoren, die im Hybridmikroprozessor
35 enthalten sind, dienen allgemein dazu, polynomische Erwei
terungen zu berechenen. Die Form der polynomischen Erweite
rungen, die durch die neuralen Netz-Koprozessoren berechnet
werden können, werden nachfolgend im Detail beschrieben.
Zusätzlich können die neuralen Netz-Koprozessoren des Hybrid
mikroprozessors 35 Daten vom Mikroprozessor oder irgend einer
Vorrichtung, die mit dem Bus 37 verbunden ist, einschließlich
des Hauptspeichers 36 und der I/O-Steuerung 38 empfangen, und
sie können Daten zum Mikroprozessor oder irgendeiner Vorrich
tung auf dem Bus, einschließlich dem Hauptspeicher 36 und der
I/O-Steuerung 38 ausgeben. Die Daten, die durch die neuralen
Netz-Koprozessoren empfangen werden, umfassen Torfunktionen
neuraler Gewichtswerte (polynomische Koeffizienten) und
Koprozessoreingaben, wobei die Bedeutung dieser Daten in der
Erfindung nachfolgend beschrieben wird.
Eine DMA-Steuervorrichtung ist auch in der in Fig. 5 darge
stellten Rechenvorrichtung enthalten. Die Funktion der DMA-
Steuervorrichtung der Fig. 5 ist äquivalent zu der der oben
beschriebenen DMA-Steuervorrichtung in Fig. 4. In einer be
vorzugten Ausführungsform befindet sich die DMA-Steuervor
richtung im Hauptspeicher 36; ein Fachmann wird jedoch erken
nen, daß die DMA-Steuervorrichtung im Hybridmikroprozessor 35
der I/O-Steuerung 38 enthalten sein kann oder als getrennte
Vorrichtung mit dem Bus 37 verbunden sein kann. Ein Fachmann
wird auch erkennen, daß Daten, die während eines DMA-Trans
fers auf den Bus 37 geschrieben werden, gleichzeitig von ei
ner oder mehreren der mit dem Bus verbundenen Vorrichtungen
gelesen werden können.
Fig. 6 zeigt ein schematisches Diagramm einer Rechenvorrich
tung, die einen Mikroprozessor mit einer Vielzahl neuraler
Netz-Koprozessoren gemäß der vorliegenden Erfindung umfaßt.
Der Mikroprozessor 40 führt Funktionen aus, die ähnlich denen
des Mikroprozessors 30 der Fig. 4 sind, und ebenso dienen der
Hauptspeicher 39 und der Bus 41 Zwecken ähnlich denen des
oben beschriebenen Hauptspeichers 31 beziehungsweise des Bus
ses 34 der Fig. 4.
Eine DMA-Steuervorrichtung, die äquivalent ist zu der der
Fig. 5, kann in der in Fig. 6 gezeigten Rechenvorrichtung
eingeschlossen sein.
Neurale Netz-Koprozessoren 42, 44 und 46 können Daten vom Mi
kroprozessor 40 oder irgend einer Vorrichtung, die mit dem
Bus 41 verbunden ist, einschließlich des Hauptspeichers 39
oder anderen neuralen Netz-Koprozessoren empfangen. Außerdem
können sie Daten an den Mikroprozessor 40 oder irgend eine
andere Vorrichtung auf dem Bus, einschließlich des
Hauptspeicher 39 oder andere neuraler Netz-Koprozessoren,
ausgeben. Die Daten, die durch die neuralen Netz-
Koprozessoren empfangen werden, umfassen Torfunktionen,
Neuronengewichtswerte (polynomische Koeffizienten) und
Koprozessoreingaben, wobei die Bedeutung dieser Daten in der
vorliegenden Erfindung nachfolgend beschrieben wird.
Die neuralen Netz-Koprozessoren 42, 44 und 46 dienen allgemein
um polynomische Erweiterungen zu berechnen. Die Formen der
polynomischen Erweiterungen, die durch die neuralen Netz-Ko
prozessoren berechnet werden kann, sind nachfolgend im Detail
beschrieben. Der Vorteil der in Fig. 6 dargestellten Rechen
vorrichtung ist der, daß die neuralen Netz-Koprozessoren es
gestatten, eine größere Zahl von Berechnungen parallel auszu
führen, wodurch sich die Rechenleistung der Vorrichtung dra
matisch erhöht.
Während Fig. 6 nur drei neurale Netz-Koprozessoren in der Re
chenvorrichtung zeigt, wird ein Fachmann erkennen, daß eine
beliebige Zahl neuraler Netz-Koprozessoren verwendet werden
kann, wenn eine spezielle Anwendung mehr oder weniger als
drei Koprozessoren erfordert.
Jeder neurale Netz-Koprozessor kann verwendet werden, um eine
andere polynomische Erweiterung gleichzeitig zu berechenen.
Beispielsweise kann der neurale Netz-Koprozessor 42 folgendes
berechnen: y1 = 1,02 + 5,6x1 + 3x2, während der neurale
Netz-Koprozessor 44 folgendes berechnet: y2 = 3,14x1 3 +
11x2 2, während der neurale Netz-Koprozessor 46 folgendes be
rechnet: y3 = 0,2x2 2, wobei x1 und x2 Koprozessoreingaben
sind, die zu jedem der Koprozessoren durch den Mikroprozessor
40 übertragen werden, und y1 und y2 und y3 Werte sind, die
von den Koprozessoren 42, 44 beziehungsweise 46 ausgegeben
werden.
Ein Fachmann wird verstehen, daß der neurale Netz-Koprozes
sor der vorliegenden Erfindung nicht auf die Berechnung drei
er polynomischer Ausdrücke y1, y2 und y3, wie sie im obigen
Beispiel gezeigt sind, beschränkt ist, und daß das oben ge
zeigte Beispiel keine Einschränkungen bezüglich der Form der
polynomischen Erweiterungen liefert, die durch die hier be
schriebene Rechenvorrichtung berechnet werden können. Weiter
hin wird ein Fachmann verstehen, daß einer oder eine belie
bige Zahl von neuralen Netz-Koprozessoren verwendet werden
kann, um gleichzeitig die oben gezeigten polynomischen Erwei
terungen y1, y2 und y3 zu berechnen.
Der Betrieb des neuralen Netz-Koprozessors der vorliegenden
Erfindung basiert auf der Verwendung einer polynomischen Er
weiterung, und in einem allgemeineren Sinn in der Verwendung
einer orthogonalen Funktion, wie beispielsweise Sinus, Cosi
nus, Exponentialfunktion/Logarithmus, Fourier-Transformation,
einer Entwicklung nach Legendreschen Polynomen, einer nicht
linearen Basisfunktion, wie beispielsweise eine Volterra-
Funktion oder einer radialen Basisfunktion oder derartigem,
oder einer Kombination aus einer polynomischen Erweiterung
und orthogonalen Funktionen.
Eine bevorzugte Ausführungsform verwendet eine polynomische
Erweiterung, deren allgemeiner Fall durch Gleichung 1 wie
folgt dargestellt wird:
wobei xi die Koprozessoreingaben darstellt und es sich dabei
um eine Funktion, wie beispielsweise xi = fi(zj) handeln
kann, wobei zj eine willkürliche Variable ist, und wobei die
Indizes i und j irgendwelche positive ganze Zahlen sein kön
nen, wobei y die Ausgangsgröße des neuralen Netz-Koprozessors
bezeichnet; wobei wi-1 das Gewicht des i-ten Neurons dar
stellt; wobei g1i, . . ., gni Torfunktionen des i-ten Neurons
darstellen und ganze Zahlen sind, wobei diese in einer
bevorzugten Ausführungsform 0 oder größer sind; und n die
Zahl der Koprozessoreingaben ist.
Jeder Term der Gleichung (1) bezeichnet eine Neuronenausgabe
und das Gewicht und die Torfunktionen, die mit einem solchen
Neuron verbunden sind. Die Zahl der Terme der polynomischen
Erweiterung, die in einem neuralen Netz verwendet werden
soll, basiert auf einer Anzahl von Faktoren, einschließlich
der Zahl der verfügbaren Neuronen, der Zahl der
Übungsbeispiele u. s. w. Es sollte verständlich sein, daß die
Terme höherer Ordnung der polynomische Erweiterung im allge
meinen weniger Signifikanz haben als die Terme niedrigerer
Ordnung. Somit werden in einer bevorzugten Ausführungsform
die Terme niedriger Ordnung wenn möglich gewählt, basierend
auf den verschiedenen, oben erwähnten Faktoren. Da auch die
Einheit der Messung, die mit den verschiedenen Eingaben ver
bunden ist, variieren kann, müssen die Eingaben normalisiert
werden, bevor sie verwendet werden.
Gleichung 2 ist eine alternative Darstellung der Gleichung 1,
die Terme bis zu Termen dritter Ordnung zeigt.
wobei die Variablen die gleiche Bedeutung wie in Gleichung 1
haben, und wobei f1(i) eine Indexfunktion im Bereich von n + 1
bis 2n ist; f2(i,j) eine Indexfunktion im Bereich von 2n + 1
bis 2n + (n)(n - 1)/2 ist; und f3(i,j) sich im Bereich von
2n + 1 + (n)(n - 1)/2 bis 3n + (n)(n - 1)/2 bewegt. f4 bis f6 werden in
ähnlicher Weise dargestellt.
Fachleute werden erkennen, daß die Torfunktionen in den durch
Gleichung (2) ausgedrückten Termen eingebettet sind. Bei
spielsweise kann die Gleichung (2) folgendermaßen dargestellt
werden:
y = w0 + w1 x1 + w2 x2 + . . . wi xi + . . . + wn xn
+ wn+1 x1 2 + . . . + w2n xn 2
+ w2n+1 x1 x2 + w2n+2 x1 x3 + . . .
+ w3n-1 x1 xn + w3n x2 x3 + w3n+1 x2 x4 +
. . . w2n(n)(n-1)/2 xn-1 xn + . . .
+ wN-1 x1 g1N x2 g2N . . . xn gnN + . . . Gleichung 3
wobei die Variablen dieselbe Bedeutung wie in Gleichung (1)
haben.
Es sollte angemerkt werden, daß obwohl die Torexponenten gin
explizit nur im letzten gezeigten Term der Gleichung (3)
auftauchen, es verständlich ist, daß jeder der anderen Terme
seine Terme giN hat, die nicht explizit gezeigt sind
(beispielsweise ist für den w1 x1 Term g12 = 1 und die anderen
gi2 = 0, i = 2, 3, . . ., n). N ist eine beliebige positive ganze Zahl
und stellte das N-te Neuron im Netz dar.
Fig. 7 zeigt ein schematisches Diagramm eines neuralen Netz-
Koprozessors, dessen Eingangsgrößen sequentiell empfangen
werden, und der eine Vielzahl von Ausgängen aufweist, gemäß
einer bevorzugten Ausführungsform der Erfindung.
Eine Vielzahl von Koprozessoreingangsgrößen x1, x2, . . ., xn
wird in den Eingangsanschluß 50 eingegeben. Der Ausgangswert
des Eingangsanschlusses x1, x2, . . ., xn wird nach und nach
über den Bus 52 zu jeder Neuronenschaltung 56, 58, 60 und 62
der versteckten Schicht (hidden layer) verteilt. Obwohl nur
vier Neuronenschaltungen N1, N2, Nn-1 und Nn gezeigt sind,
kann die versteckte Schicht eine beliebige Zahl Neuronen
schaltungen umfassen. Mit anderen Worten, die Ausgabewerte
des Eingangsanschlußes werden sukzesive über den Bus zu jeder
der Neuronenschaltungen 56, 58, 60 und 62 und zu allen ande
ren (nicht gezeigten) Neuronenschaltungen in der versteckten
Schicht verteilt.
In einer bevorzugten Ausführungsform der vorliegenden Erfin
dung wendet jedes Neuron einen Torexponenten gni auf jede der
Koprozessoreingangsgrößen an, um bestimmte
Eingangsgrößen auszublenden oder durchzuleiten, wobei die Variable g und die
unteren Indizes i und n die gleiche Bedeutung wie in oben an
gegebener Gleichung (1) haben. Irgendeine vorgegebenen Neuro
nenschaltung kann eine andere Torfunktion zu jeder anderen
Koprozessoreingangsgröße geben, die sie empfängt. Bei
spielsweise wendet das Neuron 56 einen Torexponenten g11 auf
den Koprozessoreingangswert x1 an, den sie vom Eingangs
anschluß 50 empfängt; sie wendet einen Torexponenten g21 auf
den Koprozessoreingangswert x2 an, und so weiter. Die
durchgeleiteten Eingangswerte werden multipliziert durch das
Neuron, um ein Produkt zu bilden, das dann mit einem Gewicht
wi-1 multipliziert wird, um die Ausgangsgröße der
Neuronenschaltung zu bilden, wobei die Variable w, und der
untere Index i die gleichen Bedeutungen wie in der oben gege
benen Gleichung 1 haben.
Die Ausgangsgrößen der Neuronenschaltung werden durch Sum
mierschaltungen der Ausgangsschicht des Koprozessors sum
miert, um die Koprozessorausgangsgrößen zu bilden. Beispiels
weise werden die Ausgangsgrößen der Neuronenschaltungen 56
und 58 durch die Summierschaltung 64 summiert, um eine neura
le Netz-Koprozessorausgangsgröße y1 zu bilden, und dann wer
den die Ausgangsgrößen der Neuronenschaltung 60 und 62 durch
eine Summierschaltung 66 summiert, um eine neurale Netz-Ko
prozessorausgangsgröße yn zu bilden.
Während Fig. 7 nur zwei Summierschaltungen in der Ausgangs
schicht zeigt, wird ein Fachmann erkennen, daß der Koprozes
sor eine beliebige Anzahl Summierschaltungen enthalten kann.
Darüberhinaus kann der Ausgangswert jeder Neuronenschaltung
durch irgendeine der Summierschaltungen als auch durch mehr
als eine der Summierschaltungen empfangen werden.
Eine Vielzahl Gewichte w0, w1, . . ., wi-1 werden in den Ein
gangsanschluß 50 eingegeben, wobei die Variable w und der un
tere Index i die gleiche Bedeutung wie in der oben angegeben
Gleichung 1 haben. Im allgemeinen gibt es mindestens ein Ge
wicht, das jeder Neuronenschaltung entspricht. Die Gewichte
werden sequentiell über den Bus 52 zu ihrer entsprechenden
Neuronenschaltung verteilt. Wie in der oben angegebenen ver
wandten Erfindung Nr. 1 beschrieben ist, umfaßt jede Neuro
nenschaltung eine Vorrichtung zur Speicherung von Gewichten.
Die Gewichte, die durch jede Neuronenschaltung gespeichert
sind, können periodisch aktualisiert werden, in Abhängigkeit
von den Bedingungen, unter denen die hier beschriebene Re
chenvorrichtung arbeitet. Wenn mehr als ein Gewicht durch ei
ne Neuronenschaltung gespeichert wird, so kann auf jedes Ge
wicht einzeln zugegriffen werden, oder es kann mehrfach pa
rallel zugegriffen werden, entweder durch die DMA-Steuervor
richtung oder den Mikroprozessor.
Eine Vielzahl von Torexponenten g11, g12, . . ., gni werden dem
Eingangsanschluß 50 zugeführt, wobei die Variable g und die
unteren Indizes i und n die gleiche Bedeutung wie in der oben
angegebenen Gleichung 1 haben. Im allgemeinen gibt es eine
Vielzahl von Torexponenten, die jeder Neuronenschaltung
entsprechen. Die Torexponenten werden sequentiell über den
Bus 52 zu ihrer entsprechenden Neuronenschaltung verteilt. In
einer bevorzugten Ausführungsform der Erfindung umfaßt jede
Neuronenschaltung eine Vorrichtung zur Speicherung einer
entsprechenden Vielzahl von Torexponenten. Die Torexponenten
jeder Neuronenschaltung können periodisch aktualisiert werden
in Abhängigkeit von den Bedingungen, unter denen die hier
beschriebene Rechenvorrichtung arbeitet. Die Vorrichtung zur
Speicherung gestattet es, daß auf die Torexponenten entweder
einzeln zugegriffen wird, oder daß ein mehrfacher paralleler
Zugriff durch entweder die DMA-Steuervorrichtung oder den
Mikroprozessor erfolgt.
Fig. 8 zeigt ein Flußdiagramm eines Verfahrens zum Betreiben
jeder der in den Fig. 4, 5 und 6 dargestellten Rechenvor
richtungen. Wie im Kasten 72 gezeigt ist, wird mindestens ein
Torexponent in die neuralen Netz-Koprozessoren geschrieben.
Obwohl Kasten 72 einen Mikroprozessor zeigt, der den
Torexponenten schreibt, wird es für einen Fachmann
verständlich, daß eine DMA-Steuervorrichtung das Schreiben
ebenso durchführen kann. Es kann eine beliebige Zahl von
Torexponenten in einen oder in eine beliebige Zahl von
neuralen Netz-Koprozessoren geschrieben werden.
Als nächstes wird, wie in Kasten 74 angegeben, mindestens ein
Gewicht in die neuralen Netz-Koprozessoren eingeschrieben.
Obwohl der Kasten 74 einen Mikroprozessor zeigt, der das Ge
wicht einschreibt, wird es für einen Fachmann verständlich,
daß eine DMA-Steuervorrichtung das Schreiben ebenso ausführen
kann. Irgendeine Anzahl von Gewichten kann in einen oder eine
beliebige Zahl von neuralen Netz-Koprozessoren geschrieben
werden.
Als nächstes wird, wie in Kasten 76 gezeigt, mindestens eine
Koprozessoreingangsgröße in die neuralen Netz-Koprozessoren
geschrieben. Es kann in diesem Schritt mehr als eine Kopro
zessoreingangsgröße entweder gleichzeitig oder nacheinander
zum Koprozessor übertragen werden. Zusätzlich können Kopro
zessoreingangsgrößen gleichzeitig in eine Vielzahl vorbe
stimmter neuraler Netz-Koprozessoren geschrieben werden. Ob
wohl Kasten 76 einen Mikroprozessor zeigt, der die Koprozes
soreingangsgröße einschreibt, wird es für einen Fachmann ver
ständlich, daß auch eine DMA-Steuervorrichtung das Schreiben
durchführen kann.
Wie in Kasten 77 gezeigt, berechnet der neurale Netz-Kopro
zessor eine mathematische Funktion, die die Torfunktionen,
Gewichtswerte und Koprozessoreingangsgrößen verwendet. Der
Koprozessor erzeugt eine Ausgangsgröße als Ergebnis der
Berechnung der mathematischen Funktion.
Als nächstes wird, wie im Entscheidungskasten 78 gezeigt, ei
ne Prüfung durchgeführt, um zu sehen, ob einer der neuralen
Netz-Koprozessorenausgangswerte bereit ist, gelesen zu wer
den. Diese Entscheidung fällt entweder ein Mikroprozessor
oder eine DMA-Steuervorrichtung. Wenn keine der Ausgangsgrö
ßen für das Lesen bereit ist, dann kehrt das Verfahren zum
Kasten 76 zurück. Ansonsten geht es zum Kasten 80.
Als nächstes werden in Kasten 80 die zum Lesen bereiten
Koprozessorausgangsgrößen entweder durch einen Mikroprozessor
oder eine DMA-Steuervorrichtung gelesen.
Schließlich wird, wie im Entscheidungskasten 82 dargestellt,
eine Überprüfung durchgeführt, um zu bestimmten, ob weitere
Koprozessoreingangsgrößen vorhanden sind, die in die Kopro
zessoren geschrieben werden müssen. Wenn noch mehrere Kopro
zessoreingangsgrößen vorhanden sind, die eingeschrieben wer
den müssen, so kehrt das Verfahren zum Kasten 76 zurück, an
sonsten endet das Verfahren.
Fig. 9 zeigt ein Verfahren zum Schreiben von Torexponenten in
den neuralen Netz-Koprozessor gemäß einer bevorzugten
Ausführungsform der Erfindung. Wie im Entscheidungskasten 86
dargestellt ist, wird eine Überprüfung durchgeführt, um zu
bestimmten, ob die Torexponenten unter Verwendung eines
Globalmoduses, eines sequentiellen Moduses oder eines Block
moduses eingeschrieben werden müssen. Wenn die Torexponenten
unter Verwendung eines Globalmoduses eingeschrieben werden
müssen, dann geht das Verfahren zum Kasten 88 weiter. Wenn
die Torexponenten unter Verwendung des Blockmoduses
eingeschrieben werden müssen, dann geht das Verfahren zum
Kasten 92. Wenn die Torexponenten unter Verwendung des
sequentiellen Moduses eingeschrieben werden müssen, dann geht
das Verfahren zum Kasten 96.
Betrachtet man den Kasten 88, so wird ein Globalmodustransfer
durch Übertragen eines einzelnen Torexponenten über den Bus
zu allen neuralen Netz-Koprozessoren durchgeführt, wobei
einer oder mehrere Koprozessoren mit dem Bus verbunden sein
können. Obwohl Kasten 88 einen Mikroprozessor zeigt, der die
Torfunktion überträgt, wird es einem Fachmann klar sein, daß
eine DMA-Steuervorrichtung den Wert übertragen kann.
Als nächstes setzt, wie im Kasten 90 gezeigt, jeder Koprozes
sor alle seine Torexponenten gleich der übertragenen
Torexponenten. Beim Verlassen des Kastens 90 endet das
Verfahren.
Ein Blockmodustransfer der Torexponenten beginnt beim
Eintritt in Kasten 92. Wie im Kasten 92 dargestellt ist, wer
den die Blockmodustransfers erzielt durch ein gleichzeitiges
Übertragen von einem oder mehreren Torexponenten zu vor
bestimmten neuralen Netz-Koprozessoren. Obwohl der Kasten 92
einen Mikroprozessor zeigt, der die Torexponenten überträgt,
wird es einem Fachmann verständlich werden, daß eine DMA-
Steuervorrichtung die Werte übertragen kann.
Als nächstes wird, wie im Kasten 94 dargestellt, wenn ein Ko
prozessor mindestens einen Torexponenten empfängt, der min
destens eine Torexponente in eine ausgewählte Schaltung aus
der Vielzahl der Neuronschaltungen im Koprozessor einge
schrieben.
Als nächstes wird, wie im Entscheidungskasten 98 gezeigt, ei
ne Prüfung durchgeführt, um zu bestimmen, ob weitere
Torexponenten vorhanden sind, die in die Koprozessoren einge
schrieben werden müssen. Wenn es noch mehrere einzuschreiben
de Torexponenten gibt, so kehrt das Verfahren zum Kasten 86
zurück, ansonsten endet das Verfahren.
Der Transfer des sequentiellen Moduses der Torexponenten
beginnt beim Eintritt in den Kasten 96. Wie im Kasten 96 dar
gestellt ist, werden eine oder mehrere Torexponenten in eine
vorbestimmte Neuronenschaltung in einem neuralen Netz-
Koprozessor geschrieben. Obwohl Kasten 96 einen Mikroprozes
sor zeigt, der die Torexponenten einschreibt, wird es einem
Fachmann verständlich werden, daß eine DMA-Steuervorrichtung
die Werte einschreiben kann.
Als nächstes wird, wie im Entscheidungskasten 98 gezeigt, ei
ne Prüfung durchgeführt, um zu bestimmten, ob weitere in die
Koprozessoren einzuschreibende Torexponenten vorhanden sind.
Wenn weitere einzuschreibende Torexponenten vorhanden sind,
so kehrt das Verfahren zum Kasten 86 zurück, ansonsten endet
das Verfahren.
Fig. 10 zeigt ein Verfahren zum Schreiben von Gewichten in
den neuralen Netz-Koprozessor gemäß einer bevorzugten Ausfüh
rungsform der Erfindung. Das in Fig. 10 beschriebene Verfah
ren ähnelt ganz allgemein dem in Fig. 9 beschriebenen Verfah
ren, mit der Ausnahme, daß in Fig. 10 Gewichte anstatt der
Torexponenten in die neuralen Netz-Koprozessoren geschrieben
werden.
Wie im Entscheidungskasten 100 dargestellt ist, wird eine
Überprüfung durchgeführt, um zu bestimmten, ob die Gewichte
unter Verwendung eines Globalmoduses, eines sequentiellen Mo
duses oder eines Blockmoduses eingeschrieben werden müssen.
Wenn die Gewichte unter Verwendung eines Globalmoduses einge
schrieben werden müssen, dann geht das Verfahren zum Kasten
102 weiter. Wenn die Gewichte unter Verwendung des Blockmo
duses eingeschrieben werden müssen, dann geht das Verfahren
zum Kasten 106. Wenn die Gewichte unter Verwendung des se
quentiellen Moduses eingeschrieben werden müssen, dann geht
das Verfahren zum Kasten 110.
Betrachtet man den Kasten 102, so wird ein Globalmodustrans
fer durch Übertragen eines einzelnen Gewichts über den Bus zu
allen neuralen Netz-Koprozessoren durchgeführt, wobei einer
der mehrere Koprozessoren mit dem Bus verbunden sein können.
Obwohl Kasten 102 einen Mikroprozessor zeigt, der das Gewicht
überträgt, wird es einem Fachmann klar sein, daß eine DMA-
Steuervorrichtung das Gewicht übertragen kann.
Als nächstes setzt, wie im Kasten 104 gezeigt, jeder Kopro
zessor alle seine Gewichte gleich dem übertragenen Gewicht.
Beim Verlassen des Kastens 104 endet das Verfahren.
Ein Blockmodustransfer der Gewichte beginnt beim Eintritt in
Kasten 106. Wie im Kasten 106 dargestellt ist, werden die
Blockmodustransfers erzielt durch ein gleichzeitiges Übertra
gen eines oder mehrerer Gewichte zu vorbestimmten neuralen
Netz-Koprozessoren. Obwohl der Kasten 106 einen Mikroprozes
sor zeigt, der das Gewicht überträgt, wird es einem Fachmann
verständlich werden, daß eine DMA-Steuervorrichtung die Ge
wichte einschreiben kann.
Als nächstes wird, wie im Kasten 108 dargestellt, wenn ein
Koprozessor mindestens ein Gewicht empfängt, das mindestens
eine Gewicht in ausgewählte Schaltungen aus der Vielzahl der
Neuronenschaltungen im Koprozessor eingeschrieben.
Als nächstes wird, wie im Entscheidungskasten 112 gezeigt,
eine Prüfung durchgeführt, um zu bestimmen, ob weitere Gewich
te vorhanden sind, die in die Koprozessoren eingeschrieben
werden müssen. Wenn es noch mehrere einzuschreibende Gewichte
gibt, so kehrt das Verfahren zum Kasten 100 zurück, ansonsten
endet das Verfahren.
Der Transfer des sequentiellen Moduses der Gewichte beginnt
beim Eintritt in den Kasten 110. Wie im Kasten 110 darge
stellt ist, werden ein oder mehrere Gewichte in eine vorbe
stimmte Neuronenschaltung in einem neuralen Netz-Koprozessor
geschrieben. Obwohl Kasten 110 einen Mikroprozessor zeigt, der
die Gewichte einschreibt, wird es einem Fachmann verständlich
werden, daß eine DMA-Steuervorrichtung die Gewichte ein
schreiben kann.
Als nächstes wird, wie im Entscheidungskasten 112 gezeigt,
eine Prüfung durchgeführt, um zu bestimmten, ob weitere in
die Koprozessoren einzuschreibende Gewichte vorhanden sind.
Wenn weitere einzuschreibende Gewichte vorhanden sind, so
kehrt das Verfahren zum Kasten 86 zurück, ansonsten endet das
Verfahren.
Es wird auch deutlich, daß der Grad des Abschneidens der oben
erwähnten polynomischen Erweiterung vom Grad der gewünschten
Genauigkeit abhängt.
Claims (8)
1. Rechenvorrichtung mit:
einem Mikroprozessor zur Ausführung von Universalprogrammen, wobei der Mikroprozessor mindestens einen Ausgangsanschluß für das Senden von Daten und mindestens einen Eingangsanschluß für das Empfangen von Daten aufweist;
einem neuralen Netz-Koprozessor zur Durchführung mathematischer Berech nungen, wobei der Koprozessor auf den mindestens einen Mikroprozessoraus gangsanschluß anspricht und mindestens eine Ausgangsgröße erzeugt, und wobei der mindestens eine Mikroprozessoreingangsanschluß auf die mindestens eine Ko prozessorausgangsgröße anspricht; und
einer DMA-Steuervorrichtung, die mit dem neuralen Netz-Koprozessor ver bunden ist, um nacheinander eine aus der Vielzahl der Eingangsgrößen zum neuralen Netz-Koprozessor zu übertragen;
wobei der neurale Netz-Koprozessor folgendes umfaßt:
einen Eingangsanschluß zum Empfang der nacheinander übertragenen Ein gangsgrößen aus der Vielzahl der Eingangsgrößen und zur Erzeugung entspre chender Ausgangsgrößen;
eine Vielzahl von Neuronen, wobei jedes Neuron mindestens eine Eingangs größe hat und eine Ausgangsgröße erzeugt;
eine Vorrichtung zur Verteilung der Ausgangsgrößen des Eingangsanschlus ses zu dem mindestens einen Eingang von jedem aus der Vielzahl von Neuronen; und
eine Vielzahl von Summierern, wobei jeder die Ausgangsgrößen von vorbe stimmten Neuronen summiert und die mindestens eine Koprozessorausgangsgröße erzeugt;
wobei jedes der Neuronen folgendes umfaßt:
eine erste Speichervorrichtung, die auf die Ausgangsgröße des Eingangsan schlußes anspricht, zur Speicherung mindestens eines Gewichtswertes, wobei auf jeden der mindestens einen Gewichtswerte durch den Mikroprozessor zugegriffen werden kann, und wobei auf jeden der mindestens einen Gewichtswerte durch die DMA-Steuervorrichtung zugegriffen werden kann; und
eine zweite Speichervorrichtung, die auf die Ausgangsgröße des Eingangs anschlusses anspricht, um eine Vielzahl von Torfunktionen zu speichern, wobei auf jede der Torfunktionen durch den Mikroprozessor zugegriffen werden kann; und wo bei auf jede der Torfunktionen durch die DMA-Steuervorrichtung zugegriffen werden kann.
einem Mikroprozessor zur Ausführung von Universalprogrammen, wobei der Mikroprozessor mindestens einen Ausgangsanschluß für das Senden von Daten und mindestens einen Eingangsanschluß für das Empfangen von Daten aufweist;
einem neuralen Netz-Koprozessor zur Durchführung mathematischer Berech nungen, wobei der Koprozessor auf den mindestens einen Mikroprozessoraus gangsanschluß anspricht und mindestens eine Ausgangsgröße erzeugt, und wobei der mindestens eine Mikroprozessoreingangsanschluß auf die mindestens eine Ko prozessorausgangsgröße anspricht; und
einer DMA-Steuervorrichtung, die mit dem neuralen Netz-Koprozessor ver bunden ist, um nacheinander eine aus der Vielzahl der Eingangsgrößen zum neuralen Netz-Koprozessor zu übertragen;
wobei der neurale Netz-Koprozessor folgendes umfaßt:
einen Eingangsanschluß zum Empfang der nacheinander übertragenen Ein gangsgrößen aus der Vielzahl der Eingangsgrößen und zur Erzeugung entspre chender Ausgangsgrößen;
eine Vielzahl von Neuronen, wobei jedes Neuron mindestens eine Eingangs größe hat und eine Ausgangsgröße erzeugt;
eine Vorrichtung zur Verteilung der Ausgangsgrößen des Eingangsanschlus ses zu dem mindestens einen Eingang von jedem aus der Vielzahl von Neuronen; und
eine Vielzahl von Summierern, wobei jeder die Ausgangsgrößen von vorbe stimmten Neuronen summiert und die mindestens eine Koprozessorausgangsgröße erzeugt;
wobei jedes der Neuronen folgendes umfaßt:
eine erste Speichervorrichtung, die auf die Ausgangsgröße des Eingangsan schlußes anspricht, zur Speicherung mindestens eines Gewichtswertes, wobei auf jeden der mindestens einen Gewichtswerte durch den Mikroprozessor zugegriffen werden kann, und wobei auf jeden der mindestens einen Gewichtswerte durch die DMA-Steuervorrichtung zugegriffen werden kann; und
eine zweite Speichervorrichtung, die auf die Ausgangsgröße des Eingangs anschlusses anspricht, um eine Vielzahl von Torfunktionen zu speichern, wobei auf jede der Torfunktionen durch den Mikroprozessor zugegriffen werden kann; und wo bei auf jede der Torfunktionen durch die DMA-Steuervorrichtung zugegriffen werden kann.
2. Rechenvorrichtung nach Anspruch 1, wobei die Neuronen eine lineare Transfer
funktion aufweisen.
3. Rechenvorrichtung nach Anspruch 1, wobei die Ausgangsgrößen von mindestens
einigen Neuronen durch mehr als einen der Summierer summiert werden können.
4. Rechenvorrichtung nach Anspruch 1, wobei der Mikroprozessor iterativ ein Pro
gramm ausführt, wobei dieses Programm Daten zu dem Ein
gangsanschluß des Koprozessors überträgt und dieses Programm Daten von
mindestens einem Ausgang des Koprozessors überträgt.
5. Rechenvorrichtung nach Anspruch 1, wobei die Rechenvorrichtung in einer inte
grierten Schaltung enthalten ist.
6. Rechenvorrichtung nach Anspruch 1, wobei die Rechenvorrichtung auf einer ge
druckten Leiterplatte enthalten ist.
7. Rechenvorrichtung nach Anspruch 1, wobei der neurale Netz-Koprozessor eine
polynomische Erweiterung berechnet.
8. Rechenvorrichtung nach Anspruch 7, wobei die polynomische Erweiterung fol
gende Form hat:
wobei y die Ausgangsgröße des neuralen Netz-Koprozessors darstellt;
wobei wi-1 den Gewichtswert für das i-te Neuron darstellt;
wobei x1, x2, . . ., xn die Eingangsgrößen des neuralen Netz-Koprozessors darstellen;
wobei g1i, . . .., gni Torexponenten für das i-te Neuron, das diesen Eingän gen zugeführt wird, darstellen und auf diese Weise die Torfunktionen durch Torex ponenten gebildet werden; und
wobei n eine positive ganze Zahl ist.
wobei y die Ausgangsgröße des neuralen Netz-Koprozessors darstellt;
wobei wi-1 den Gewichtswert für das i-te Neuron darstellt;
wobei x1, x2, . . ., xn die Eingangsgrößen des neuralen Netz-Koprozessors darstellen;
wobei g1i, . . .., gni Torexponenten für das i-te Neuron, das diesen Eingän gen zugeführt wird, darstellen und auf diese Weise die Torfunktionen durch Torex ponenten gebildet werden; und
wobei n eine positive ganze Zahl ist.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US08/235,996 US5583964A (en) | 1994-05-02 | 1994-05-02 | Computer utilizing neural network and method of using same |
| PCT/US1995/003627 WO1995030194A1 (en) | 1994-05-02 | 1995-03-28 | Computer utilizing neural network and method of using same |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| DE19581638T1 DE19581638T1 (de) | 1997-04-17 |
| DE19581638C2 true DE19581638C2 (de) | 1999-06-24 |
Family
ID=22887701
Family Applications (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| DE19581638T Expired - Fee Related DE19581638C2 (de) | 1994-05-02 | 1995-03-28 | Rechenvorrichtung mit einem Mikroprozessor, einem neuralen Netz-Koprozessor und einer DMA-Steuervorrichtung |
| DE29521338U Expired - Lifetime DE29521338U1 (de) | 1994-05-02 | 1995-03-28 | Rechner mit einem neutralen Netz |
Family Applications After (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| DE29521338U Expired - Lifetime DE29521338U1 (de) | 1994-05-02 | 1995-03-28 | Rechner mit einem neutralen Netz |
Country Status (7)
| Country | Link |
|---|---|
| US (2) | US5583964A (de) |
| CN (1) | CN1150847A (de) |
| AU (1) | AU2126995A (de) |
| CA (1) | CA2189148A1 (de) |
| DE (2) | DE19581638C2 (de) |
| GB (1) | GB2302192A (de) |
| WO (1) | WO1995030194A1 (de) |
Families Citing this family (48)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5583964A (en) * | 1994-05-02 | 1996-12-10 | Motorola, Inc. | Computer utilizing neural network and method of using same |
| US5748845A (en) * | 1995-07-31 | 1998-05-05 | Motorola, Inc. | FES method and system for controlling the movement of a limb |
| US5724486A (en) * | 1995-08-21 | 1998-03-03 | Motorola Inc. | Method for structuring an expert system utilizing one or more polynomial processors |
| US5796922A (en) * | 1996-03-29 | 1998-08-18 | Weber State University | Trainable, state-sampled, network controller |
| JPH09293056A (ja) * | 1996-04-25 | 1997-11-11 | Aiwa Co Ltd | データ処理装置 |
| US6665639B2 (en) | 1996-12-06 | 2003-12-16 | Sensory, Inc. | Speech recognition in consumer electronic products |
| US6236908B1 (en) | 1997-05-07 | 2001-05-22 | Ford Global Technologies, Inc. | Virtual vehicle sensors based on neural networks trained using data generated by simulation models |
| US7024363B1 (en) * | 1999-12-14 | 2006-04-04 | International Business Machines Corporation | Methods and apparatus for contingent transfer and execution of spoken language interfaces |
| JP4080236B2 (ja) * | 2002-05-15 | 2008-04-23 | 株式会社リコー | 射出成形の見積りシステム及び見積りプログラム |
| AU2003287318B2 (en) | 2002-10-31 | 2010-11-25 | Lockheed Martin Corporation | Programmable circuit and related computing machine and method |
| US7418574B2 (en) * | 2002-10-31 | 2008-08-26 | Lockheed Martin Corporation | Configuring a portion of a pipeline accelerator to generate pipeline date without a program instruction |
| US7676649B2 (en) | 2004-10-01 | 2010-03-09 | Lockheed Martin Corporation | Computing machine with redundancy and related systems and methods |
| KR100640876B1 (ko) | 2004-11-17 | 2006-11-02 | 엘지전자 주식회사 | 이동 방송 수신기의 비디오 디코딩 시스템 |
| JP4532450B2 (ja) * | 2006-09-06 | 2010-08-25 | 株式会社デンソー | エンジン制御用データの処理装置及びエンジン制御装置 |
| CN102693212A (zh) * | 2011-03-23 | 2012-09-26 | 苏州科雷芯电子科技有限公司 | 一种可变功能计算机系统及其运算方法 |
| US9424513B2 (en) | 2011-11-09 | 2016-08-23 | Qualcomm Incorporated | Methods and apparatus for neural component memory transfer of a referenced pattern by including neurons to output a pattern substantially the same as the referenced pattern |
| US9015091B2 (en) * | 2011-11-09 | 2015-04-21 | Qualcomm Incorporated | Methods and apparatus for unsupervised neural replay, learning refinement, association and memory transfer: structural plasticity and structural constraint modeling |
| US9424511B2 (en) * | 2011-11-09 | 2016-08-23 | Qualcomm Incorporated | Methods and apparatus for unsupervised neural component replay by referencing a pattern in neuron outputs |
| US9443190B2 (en) | 2011-11-09 | 2016-09-13 | Qualcomm Incorporated | Methods and apparatus for neural pattern sequence completion and neural pattern hierarchical replay by invoking replay of a referenced neural pattern |
| US9395955B2 (en) | 2013-03-18 | 2016-07-19 | Jayarama Marks | Programming system and method |
| FR3011659B1 (fr) * | 2013-10-04 | 2015-10-16 | Commissariat Energie Atomique | Circuit electronique, notamment apte a l'implementation d'un reseau de neurones, et systeme neuronal |
| CN104809501B (zh) * | 2014-01-24 | 2018-05-01 | 清华大学 | 一种基于类脑协处理器的计算机系统 |
| CN104809498B (zh) * | 2014-01-24 | 2018-02-13 | 清华大学 | 一种基于神经形态电路的类脑协处理器 |
| US10049322B2 (en) * | 2015-05-21 | 2018-08-14 | Google Llc | Prefetching weights for use in a neural network processor |
| US10083395B2 (en) | 2015-05-21 | 2018-09-25 | Google Llc | Batch processing in a neural network processor |
| CN106503797B (zh) * | 2015-10-08 | 2019-03-15 | 上海兆芯集成电路有限公司 | 具有神经存储器的神经网络单元以及集体将接收自神经存储器的数据列进行移位的神经处理单元阵列 |
| CN111860813B (zh) * | 2016-04-29 | 2024-01-16 | 中科寒武纪科技股份有限公司 | 一种用于执行卷积神经网络正向运算的装置和方法 |
| DE102016216947A1 (de) * | 2016-09-07 | 2018-03-08 | Robert Bosch Gmbh | Modellberechnungseinheit und Steuergerät zur Berechnung eines mehrschichtigen Perzeptronenmodells |
| DE102016216950A1 (de) | 2016-09-07 | 2018-03-08 | Robert Bosch Gmbh | Modellberechnungseinheit und Steuergerät zur Berechnung eines mehrschichtigen Perzeptronenmodells mit Vorwärts- und Rückkopplung |
| US12430543B2 (en) | 2017-04-04 | 2025-09-30 | Hailo Technologies Ltd. | Structured sparsity guided training in an artificial neural network |
| US11544545B2 (en) | 2017-04-04 | 2023-01-03 | Hailo Technologies Ltd. | Structured activation based sparsity in an artificial neural network |
| US11238334B2 (en) | 2017-04-04 | 2022-02-01 | Hailo Technologies Ltd. | System and method of input alignment for efficient vector operations in an artificial neural network |
| US11615297B2 (en) | 2017-04-04 | 2023-03-28 | Hailo Technologies Ltd. | Structured weight based sparsity in an artificial neural network compiler |
| US11551028B2 (en) | 2017-04-04 | 2023-01-10 | Hailo Technologies Ltd. | Structured weight based sparsity in an artificial neural network |
| US10387298B2 (en) | 2017-04-04 | 2019-08-20 | Hailo Technologies Ltd | Artificial neural network incorporating emphasis and focus techniques |
| US11270198B2 (en) | 2017-07-31 | 2022-03-08 | Syntiant | Microcontroller interface for audio signal processing |
| CN111091189B (zh) * | 2017-12-14 | 2023-08-29 | 中科寒武纪科技股份有限公司 | 集成电路芯片装置及相关产品 |
| CN110825530B (zh) * | 2018-08-10 | 2022-12-23 | 昆仑芯(北京)科技有限公司 | 用于人工智能芯片的指令执行方法和装置 |
| WO2020107265A1 (zh) * | 2018-11-28 | 2020-06-04 | 深圳市大疆创新科技有限公司 | 神经网络处理装置、控制方法以及计算系统 |
| CN109657784A (zh) * | 2018-12-25 | 2019-04-19 | 北京迈格威科技有限公司 | 神经网络创建方法和装置、图像处理方法和电子设备 |
| US11221929B1 (en) | 2020-09-29 | 2022-01-11 | Hailo Technologies Ltd. | Data stream fault detection mechanism in an artificial neural network processor |
| US11263077B1 (en) | 2020-09-29 | 2022-03-01 | Hailo Technologies Ltd. | Neural network intermediate results safety mechanism in an artificial neural network processor |
| US11874900B2 (en) | 2020-09-29 | 2024-01-16 | Hailo Technologies Ltd. | Cluster interlayer safety mechanism in an artificial neural network processor |
| US11237894B1 (en) | 2020-09-29 | 2022-02-01 | Hailo Technologies Ltd. | Layer control unit instruction addressing safety mechanism in an artificial neural network processor |
| US11811421B2 (en) | 2020-09-29 | 2023-11-07 | Hailo Technologies Ltd. | Weights safety mechanism in an artificial neural network processor |
| US12248367B2 (en) | 2020-09-29 | 2025-03-11 | Hailo Technologies Ltd. | Software defined redundant allocation safety mechanism in an artificial neural network processor |
| CN115031363B (zh) * | 2022-05-27 | 2023-11-28 | 约克广州空调冷冻设备有限公司 | 预测空调性能的方法和装置 |
| CN117436491A (zh) | 2022-07-11 | 2024-01-23 | 阿里巴巴(中国)有限公司 | 用于神经形态计算的系统、芯粒和芯片 |
Family Cites Families (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5014219A (en) * | 1988-05-06 | 1991-05-07 | White James A | Mask controled neural networks |
| JP2679738B2 (ja) * | 1989-03-01 | 1997-11-19 | 富士通株式会社 | ニューロコンピュータにおける学習処理方式 |
| US5204938A (en) * | 1989-05-30 | 1993-04-20 | Loral Aerospace Corp. | Method of implementing a neural network on a digital computer |
| US5142665A (en) * | 1990-02-20 | 1992-08-25 | International Business Machines Corporation | Neural network shell for application programs |
| US5222196A (en) * | 1990-02-20 | 1993-06-22 | International Business Machines Corporation | Neural network shell for application programs |
| US5182794A (en) * | 1990-07-12 | 1993-01-26 | Allen-Bradley Company, Inc. | Recurrent neural networks teaching system |
| EP0468229A3 (en) * | 1990-07-27 | 1994-01-26 | Hnc Inc | A neural network with expert system functionality |
| IT1244912B (it) * | 1991-01-31 | 1994-09-13 | Texas Instruments Italia Spa | Sistema di apprendimento per rete neuronica di opportuna architettura fisicamente inseribile nel processo di apprendimento. |
| US5408588A (en) * | 1991-06-06 | 1995-04-18 | Ulug; Mehmet E. | Artificial neural network method and architecture |
| US5438644A (en) * | 1991-09-09 | 1995-08-01 | University Of Florida | Translation of a neural network into a rule-based expert system |
| US5583964A (en) * | 1994-05-02 | 1996-12-10 | Motorola, Inc. | Computer utilizing neural network and method of using same |
-
1994
- 1994-05-02 US US08/235,996 patent/US5583964A/en not_active Expired - Lifetime
-
1995
- 1995-03-28 CN CN95192898A patent/CN1150847A/zh active Pending
- 1995-03-28 CA CA002189148A patent/CA2189148A1/en not_active Abandoned
- 1995-03-28 DE DE19581638T patent/DE19581638C2/de not_active Expired - Fee Related
- 1995-03-28 DE DE29521338U patent/DE29521338U1/de not_active Expired - Lifetime
- 1995-03-28 AU AU21269/95A patent/AU2126995A/en not_active Abandoned
- 1995-03-28 WO PCT/US1995/003627 patent/WO1995030194A1/en not_active Ceased
-
1996
- 1996-10-26 GB GB9622325A patent/GB2302192A/en not_active Withdrawn
- 1996-12-09 US US08/764,113 patent/US5740325A/en not_active Expired - Lifetime
Also Published As
| Publication number | Publication date |
|---|---|
| US5583964A (en) | 1996-12-10 |
| CA2189148A1 (en) | 1995-11-09 |
| US5740325A (en) | 1998-04-14 |
| DE29521338U1 (de) | 1997-03-20 |
| GB9622325D0 (en) | 1996-12-18 |
| DE19581638T1 (de) | 1997-04-17 |
| GB2302192A (en) | 1997-01-08 |
| CN1150847A (zh) | 1997-05-28 |
| AU2126995A (en) | 1995-11-29 |
| WO1995030194A1 (en) | 1995-11-09 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| DE19581638C2 (de) | Rechenvorrichtung mit einem Mikroprozessor, einem neuralen Netz-Koprozessor und einer DMA-Steuervorrichtung | |
| DE69300041T2 (de) | Mehrfachprozessor-Datenverarbeitungssystem. | |
| DE60024582T2 (de) | Neuronales verarbeitungselement zur verwendung in einem neuronalen netzwerk | |
| DE69430838T2 (de) | Schaltung und Verfahren zur parallelen Verschiebung und Addition | |
| DE69132129T2 (de) | In der Grundzahl 4 arbeitende Übertragvorgriffsbäume | |
| DE3883192T2 (de) | Neuronale Netzwerkschaltung und -struktur. | |
| DE102020105535A1 (de) | Neuronale Netzwerkvorrichtung und Verfahren zum Quantisieren von Parametern eines neuronalen Netzwerks | |
| DE69132495T2 (de) | Verteilter Verarbeitungsspeicher | |
| EP0349820B1 (de) | Netzwerk -Baustein und Architektur für die programmierbare Emulation künstlicher neuronaler Netze mit digitaler Arbeitsweise | |
| DE2524046C2 (de) | Elektronische Datenverarbeitungsanlage | |
| DE102018111905A1 (de) | Domänenspezifische Sprache zur Erzeugung rekurrenter neuronaler Netzarchitekturen | |
| DE112016002292T5 (de) | Stapel-verarbeitung in einem neuronalen netzwerkprozessor | |
| DE202016107436U1 (de) | Neuronaler Netzwerkprozessor | |
| DE102024101470A1 (de) | Text-zu-bild-diffusionsmodell mit komponentensperre und rang-eins-bearbeitung | |
| DE112021002239T5 (de) | Deep learning-beschleuniger und direktzugriffsspeicher mit einer kameraschnittstelle | |
| DE102019109631A1 (de) | Tiefes komprimiertes netzwerk | |
| DE112019000676T5 (de) | Zentraler scheduler und anweisungszuteiler für einen neuronalen inferenzprozessor | |
| DE68925625T2 (de) | Verfahren zur Rückführung von Fehlern und neuronale Netzstruktur | |
| EP3590078B1 (de) | Neuronalnetzsystem | |
| DE112019002061T5 (de) | Zeit- und platzsparende sowie energieeffiziente neuronale inferenz durch parallelismus und on-chip-speicher | |
| DE102022100920A1 (de) | Compute-in-memory-akkumulator | |
| DE112021004537T5 (de) | Speicherorientierter beschleuniger für neuronale netze für bereitstellbare inferenzsysteme | |
| DE69315250T2 (de) | Neuronaler Prozessor mit Datennormalisierungsanlage | |
| DE102019112186A1 (de) | Doppelladebefehl | |
| EP0620519B1 (de) | Vorrichtung zur Inferenzbildung und Defuzzifikation und ihre Verwendung in einem hochauflösenden Fuzzy-Logik-Coprozessor |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| OP8 | Request for examination as to paragraph 44 patent law | ||
| D2 | Grant after examination | ||
| 8364 | No opposition during term of opposition | ||
| 8339 | Ceased/non-payment of the annual fee |