[go: up one dir, main page]

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-Steuervorrichtung

Info

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
Application number
DE19581638T
Other languages
English (en)
Other versions
DE19581638T1 (de
Inventor
Shay-Ping Thomas Wang
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Motorola Solutions Inc
Original Assignee
Motorola Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Motorola Inc filed Critical Motorola Inc
Publication of DE19581638T1 publication Critical patent/DE19581638T1/de
Application granted granted Critical
Publication of DE19581638C2 publication Critical patent/DE19581638C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0499Feedforward networks
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical 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.
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.
DE19581638T 1994-05-02 1995-03-28 Rechenvorrichtung mit einem Mikroprozessor, einem neuralen Netz-Koprozessor und einer DMA-Steuervorrichtung Expired - Fee Related DE19581638C2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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