DE69430529T2 - Daisy-Chain-Schaltung für die serielle Verbindung von Neuronalschaltungen - Google Patents

Daisy-Chain-Schaltung für die serielle Verbindung von Neuronalschaltungen

Info

Publication number
DE69430529T2
DE69430529T2 DE69430529T DE69430529T DE69430529T2 DE 69430529 T2 DE69430529 T2 DE 69430529T2 DE 69430529 T DE69430529 T DE 69430529T DE 69430529 T DE69430529 T DE 69430529T DE 69430529 T2 DE69430529 T2 DE 69430529T2
Authority
DE
Germany
Prior art keywords
circuit
signal
bus
neural
input
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
DE69430529T
Other languages
English (en)
Other versions
DE69430529D1 (de
Inventor
Catherine Godefroy
Paillet Guy
Andre Steimle
Pascal Tannhof
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Application granted granted Critical
Publication of DE69430529D1 publication Critical patent/DE69430529D1/de
Publication of DE69430529T2 publication Critical patent/DE69430529T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Image Analysis (AREA)
  • Character Discrimination (AREA)

Description

    GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung betrifft neurale Netzsysteme und insbesondere eine Daisy-Chain-Schaltung, die sich in jeder Neuronalschaltung eines neuralen Netzes befindet und deren Aufgabe in der Anzeige deren aktuellen Zustandes besteht. Alle diese Daisy-Chain-Schaltungen sind seriell miteinander verbunden, sodass die Neuronalschaltungen des neuralen Netzes wie eine Kette strukturiert sind. Der Zustand einer bestimmten Neuronalschaltung ergibt sich aus den entsprechenden logischen Werten der Eingangs- und Ausgangssignale der Daisy-Chain- Schaltung. Die Daisy-Chain-Schaltung unterscheidet nicht nur zwischen den zwei möglichen Zuständen einer Neuronalschaltung in der Kette, d. h. besetzt oder frei, sondern erkennt auch die erste freie Neuronalschaltung in der Kette, die als die lernbereite Neuronalschaltung bezeichnet wird. Sobald eine Neuronalschaltung einen Eingangsvektor lernt (d. h. sobald die Komponenten des Eingangsvektors als die Komponenten des an dieser Neuronalschaltung anliegenden Prototypvektors in ihrem Gewichtsspeicher gespeichert werden), ist sie nicht mehr frei, sondern wird als "besetzt" bezeichnet. Die Daisy-Chain-Schaltung stellt ein wesentliches Element für die Hintereinanderschaltung einer unbeschränkten Anzahl von Neuronalschaltungen, um das neurale Netz der gewünschten Größe zu bilden, dar.
  • GLEICHZEITIG ANHÄNGIGE PATENTANMELDUNGEN
  • EP-A-0 0 694 854: Improved neural semiconductor chip architectures and neural networks incorporated therein;
  • EP-A-0 0 694 852: Innovative neuron circuit architectures;
  • EP-A-0 0 694 855: Search/sort circuit for efficient searching/sorting of data in neural networks;
  • EP-A-0 0 694 853: Circuit for precharging the input vector components in a free neuron circuit during the recognition phase.
  • HINTERGRUND DER ERFINDUNG
  • Auf dem Gebiet der optischen Zeichenerkennung umfasst ein Erkennungsverfahren nach dem Stand der Technik die Verwendung eines Photozeichenkopfes, der im Wesentlichen aus einer Matrix lichtempfindlicher Elemente besteht. Im Modus LESEN (READ) werden diese Elemente nacheinander gescannt, um Signale zu generieren, die einen bestimmten Parameter des gescannten Zeichens wiedergeben. Anschließend werden die während jedes Scans erhaltenen Signale abgerufen und in einer Verarbeitungseinheit verarbeitet, um das gescannte Zeichen zu identifizieren. Der Identifizierungsprozess basiert grundsätzlich auf einem Vergleich zwischen dem gescannten Zeichen und einem in einem Speicher abgelegten Prototypmodell.
  • In Fig. 1, die den in eine Matrix von 9 · 8 Pixeln eingebetteten Großbuchstaben "E" zeigt, könnte ein erster für den Buchstaben E repräsentativer Parameter in der Anzahl der vertikalen und der horizontalen dunklen Pixel bestehen. Dann kann man einen Merkmalvektor F' definieren, der aus 17 Komponenten (oder Einträgen) F'1, F'2, ..., F'16, F'17 mit F'1 = 6, F'2 = 1, ..., F'16 = 2 und F'17 = 0 besteht und den Buchstaben "E" repräsentiert. Diesem Merkmalvektor F kann eine vom Benutzer definierte Kategorie (oder Klasse) C zugeordnet werden, um den Buchstaben "E" zu repräsentieren, zum Beispiel die Nummer in der Reihenfolge im Alphabet, d. h., in diesem Fall ist die Kategorie C gleich 5. Ebenso könnte als ein zweiter Parameter die Anzahl der dunklen Pixel oberhalb und unterhalb der Linie aa in Fig. 1 verwendet werden. In diesem sehr einfachen Fall besteht der neue Merkmalvektor nun anstatt aus siebzehn lediglich aus zwei Komponenten F1 = 13 und F2 = 9, weist jedoch immer noch dieselbe Kategorie C = 5 auf. Es ist auch anzumerken, dass obwohl der Großbuchstabe "E" und der Kleinbuchstabe "e" durch zwei verschiedene Merkmalvektoren repräsentiert werden (erst recht, wenn diese Buchstaben in verschiedenen Schriftarten gedruckt sein sollten), man sie als zu derselben Kategorie C gehörig ansehen kann. Auf diese Weise kann eine gewisse Beziehung oder Verbindung zwischen einem Merkmalvektor F und einer bestimmten Kategorie C hergestellt werden.
  • Im Folgenden soll die Darstellung des in Fig. 1 gezeigten Großbuchstabens "E" als das ideale Modell dieses Buchstabens angesehen werden. Man kann sich vorstellen, dass der aus zwei Komponenten bestehende Merkmalvektor F von Fig. 1 während einer frühen Lernphase einem herkömmlichen Zeichenerkennungssystem von einem Benutzer als Eingangsvektor vorgelegt wird und seine beiden Komponenten in diesem System in einem Speicher abgelegt werden. Sobald die Komponenten des Eingangsvektors F gespeichert worden sind und ihnen eine Kategorie C zugeordnet worden ist (im vorliegenden Beispiel C = 5), wird der Eingangsvektor F als ein Prototypvektor P bezeichnet.
  • In Fig. 2(A) wird der gespeicherte Prototypvektor P durch den Punkt P mit seinen beiden Komponenten P1 und P2 in einem zweidimensionalen Raum dargestellt. Dieser Raum wird für gewöhnlich als Merkmalsraum (oder charakteristischer Raum) bezeichnet. Ausgehend von dem für den Prototypvektor P charakteristischen Punkt P kann man eine Zone Z (oder eine Domäne Z) definieren, die vom System als ein Unterscheidungskriterium verwendet wird, um den Grad der Übereinstimmung zwischen dem Prototypvektor und einem beliebigen Eingangs- (oder ankommenden) Vektor (oder Muster) zu erkennen, der das gescannte Zeichen repräsentiert, welches dem System während der Erkennungsphase vorgelegt wird. Das System wird dann einen Vergleich zwischen dem Eingangsvektor A und dem gespeicherten Prototypvektor P durchführen, um deren Übereinstimmungsgrad zu erkennen. Dieser Übereinstimmungsgrad kann auf verschiedene Weise ermittelt werden; ein klassisches Verfahren beruht im Wesentlichen auf einem Abstandsbegriff. Für einen Eingangsvektor A entsprechend Fig. 2(A), der zur Übereinstimmung mit dem oben beschriebenen Prototypvektor P aus zwei Komponenten A1 und A2 bestehen möge, kann dieser Vergleich beispielsweise einfach unter Verwendung des Kriteriums des Euklidschen Abstandes AP, d. h. AP² = (P1 - A1)² + (P2 - A2)², durchgeführt werden. In diesem Fall wird die Zone Z einfach durch einen Kreis mit dem Mittelpunkt P und dem Radius r dargestellt. Der Radius r wird für gewöhnlich als der Wert des Einflussfeldes (oder Schwellwert) des Prototypvektors P bezeichnet. Bei der Initialisierung, d. h. während der frühen Lernphase, ist der Wert des Radius r allgemein durch den Standardwert r0 vorgegeben, der als das in Fig. 2(A) dargestellte maximale Einflussfeld MaxIF bezeichnet und im Allgemeinen willkürlich und empirisch festgelegt wird. Es gibt jedoch auch andere Verfahren zur Abstandsberechnung, wie beispielsweise das so genannte Manhattan- oder Häuserblock- Abstandsverfahren (L1-Norm) und das QUADRAT-Abstandsverfahren (Lsup-Norm), die jeweils Zonen unterschiedlicher Form erzeugen. Anstelle eines Kreises würde die L1-Norm einen Rhombus und die Lsup-Norm ein Quadrat im zweidimensionalen Merkmalsraum von Fig. 2(A) ergeben.
  • Für den in Fig. 2(A) dargestellten Prototypvektor P möge wiederum der Benutzer dem System einen Eingangsvektor A zur Erkennung vorlegen; der Eingangsvektor möge ebenfalls den Großbuchstaben "E" repräsentieren, dieser solle jedoch in einer anderen Schriftart gedruckt sein. Fällt nun der Eingangsvektor A in den Kreis Z, dann wird er als "übereinstimmend" mit dem Prototypvektor P angesehen und daher mit derselben Kategorie C bezeichnet. Dabei muss beachtet werden, dass das System dem Eingangsvektor die Kategorie während der Erkennungsphase zuordnet. Liegt der Eingangsvektor A jedoch außerhalb des Kreises Z, wird er bezüglich des Prototypvektors P als "nicht übereinstimmend" angesehen. In diesem Fall kann ihm das System die Kategorie C nicht zuweisen (oder zuordnen). Dann empfiehlt es sich, dass der Benutzer den Eingangsvektor A als einen neuen Prototypvektor mit derselben Kategorie C speichert. Zu diesem Zweck legt der Benutzer dem System den Eingangsvektor A mit seiner Kategorie C in einer nachfolgenden Lernphase des Systems erneut vor. Das System speichert den Eingangsvektor A als einen neuen Prototypvektor P' mit derselben ihm zugeordneten Kategorie C, um die aus den Kreisen Z und Z' bestehende erweiterte Zone in Fig. 2(B) zu erzeugen, welche nun die Kategorie C darstellt.
  • Im Folgenden möge ein Eingangsvektor A, der den Großbuchstaben "F" repräsentiert, dem System vorgelegt werden und in den Kreis Z des Prototypvektors P fallen. Da der Buchstabe "F" gemäß der oben gegebenen Definition offensichtlich zu einer anderen Kategorie gehört, kann das System ihm nicht die Kategorie C des Prototypvektors P zuweisen. Folglich muss der ursprünglich gezeichnete Kreis Z nun geschrumpft werden, um diesen Punkt A nicht zu erfassen. Mit anderen Worten: Der Radius r0 des den Prototypvektor P einschließenden Kreises muss verringert werden, wenn der Benutzer diesen Eingangsvektor A als einen neuen Prototypvektor P " zu speichern beabsichtigt. Dieser Schritt des Schrumpfens ist Teil des so genannten "Reduktionsprozesses", der einen wesentlichen Aspekt eines derartigen herkömmlichen Zeichenerkennungssystems darstellt. Nach dem Speichern des Eingangsvektors A als Prototypvektor P" erhält man den neuen Radius des Kreises Z durch Verringern des ursprünglichen Radius r0 = MaxIF auf einen Wert r, der kleiner oder gleich dem Abstand PP" ist. Dieser Wert r stellt auch den Radius des Kreises Z" (r" = r) dar. Dieser neue oder aktuelle Radiuswert r des Prototypvektors P wird für gewöhnlich als das tatsächliche Einflussfeld AlF bezeichnet. Die beiden Prototypvektoren P und P " mit den ihnen jeweils zugeordneten Kategorien C und C" und ihren Einflussfeldern r und r" sind in Fig. 2(C) veranschaulicht. Hier ist anzumerken, dass auch ein Minimalwert des Einflussfeldes definiert wird, der als das minimale Einflussfeld MinIF bezeichnet wird. Das tatsächliche Einflussfeld (AlF) eines Prototypvektors kann unter keinen Umständen einen Wert kleiner als MinIF besitzen.
  • Fig. 2(D) zeigt einen zweidimensionalen Merkmalsraum, der drei Prototypvektoren P, P' und P" mit ihren jeweiligen Einflussfeldern r, r' und r" sowie den zugeordneten Kategorien C, C' und C" umfasst. Wird nun dem System ein Eingangsvektor A zur Erkennung vorgelegt, dann kann das System die Abstände AP = D, AP' = D' und AP" = D" berechnen und dann den Minimalabstand Dmin zwischen ihnen ermitteln. Fällt der Eingangsvektor A in einen Kreis, z. B. in Kreis Z (Dmin < r), dann wird er vom System erkannt und die Kategorie wird ihm zugeordnet. Fällt nun der Eingangsvektor A, wie in Fig. 2(D) dargestellt, in keinen der Kreise Z, Z' und Z", wird der Eingangsvektor nicht erkannt und die Kategorie nicht zugewiesen. Beschließt der Benutzer, den Eingangsvektor A als neuen Prototypvektor zu speichern, dann wird er ihn während einer nachfolgenden Lernphase mit der entsprechenden Kategorie erneut dem System vorlegen. Der Benutzer legt also fest, welche Kategorie dem neuen Prototypvektor zugewiesen wird, beispielsweise eine der Kategorien C, C' oder C" oder eine neue Kategorie. Beschließt der Benutzer, ihm die Kategorie des nächstgelegenen Prototypvektors (basierend auf der Berechnung des Minimalabstandes Dmin) zuzuweisen, dann wird das Einflussfeld des neuen gespeicherten Prototypvektors einen Wert kleiner oder gleich Dmin besitzen, wenn Dmin < MaxIF ist, und MaxIF, wenn Dmin > = MaxIF ist. In dem in Fig. 2(D) gezeigten Fall entspricht dieser Minimalabstand Dmin dem Abstand D = AP. Fällt schließlich der Eingangsvektor A in eine Überlappungszone, d. h. eine gemeinsame Zone zwischen zwei Kreisen (nicht dargestellt), dann bestimmt der Benutzer nicht nur die richtige, dem neuen Prototypvektor zuzuweisende Kategorie, sondern er muss möglicherweise auch die angemessene Verringerung ihrer jeweiligen Einflussfelder vornehmen, sodass ein oder beide Prototypvektoren P' und P" von der Erkennung ausgenommen werden.
  • Obwohl die Fig. 2(A) bis 2(D) einen aus zwei Komponenten Ai und A2 bestehenden Eingangsvektor A zeigen, sollte klar sein, dass ein Eingangsvektor (oder Prototypvektor) generell aus n Komponenten besteht. Die Komponenten A1, A2, ..., An stellen also die allgemeinste Definition des Eingangsvektors A dar. Entsprechend dieser Annahme kann der in Fig. 2(A) dargestellte Kreis Z dann durch eine Hyperkugel in einem n-dimensionalen Merkmalsraum dargestellt werden. Der errechnete Abstand ist dann gleich dem Abstand zwischen dem Mittelpunkt der Hyperkugel, die den gespeicherten Prototypvektor repräsentiert, und dem Punkt, der den Eingangsvektor repräsentiert. Der Wert MaxIF entspricht dann dem größten Radius der Hyperkugel bei der Initialisierung. Ebenso entspricht der Wert MinIF dem kleinsten Radius der Hyperkugel, der im Verlauf des Reduktionsprozesses zugelassen ist. Bei Abstandsberechnungsverfahren, die sich von dem oben erwähnten Euklidschen Verfahren unterscheiden, befinden sich die äquidistanten Punkte nicht auf einer Hyperkugel, sondern auf einer Polyederoberfläche. Aus Gründen der Vereinfachung wird diese Polyederoberfläche im Folgenden jedoch als Hyperkugel bezeichnet.
  • Andererseits wird jede Komponente des Eingangsvektors, die einen bestimmten Analogwert repräsentiert, mit m Bits codiert, d. h., sie kann durch ein Binärwort des Typs a0... am-1 dargestellt werden. Bei dem zweikomponentigen Eingangsvektor A beispielsweise, der den Großbuchstaben "E" von Fig. 1 repräsentiert und bei dem die erste Komponente A1 gleich 13 ist, würde A1 unter der Annahme m = 4 durch das Binärwort A1 = 1101 dargestellt, das sich aus a0 = 1, a1 = 1, a2 = 0 und a3 = 1 zusammensetzt.
  • Im Ergebnis dessen ist ein computergestütztes Zeichenerkennungssystem denkbar, das so aufgebaut ist, dass es automatisch zum Vergleich eines Eingangsvektors mit den Prototypvektoren des Merkmalsraums übergeht, um die entsprechende, ihm zuzuweisende Kategorie oder Klasse (soweit vorhanden) zu ermitteln. Während bisher zur Hardware- Implementierung der oben beschriebenen Klassifizierungs- Verfahrensweise Computer auf der Grundlage Von-Neumannscher Prozessoren verwendet wurden, setzen heute neuere technologische Entwicklungsrichtungen in solchen Prozessoren neuronale Algorithmen ein (Softwareemulation).
  • Neuronale Computer verwenden neurale Netze, die durch Zusammensetzen einer beschränkten Anzahl elektronischer Neuronalschaltungen aufgebaut werden, um die Nervensysteme lebender Organismen nachzuahmen. Ein biologisches neurales Netz verwendet Nervenzellen oder Synapsen als deren Bestandteile und wird durch Verknüpfen einer extrem großen Anzahl dieser Synapsen aufgebaut. In biologischen neuralen Netzen führen die Synapsen Berechnungen im Parallelbetrieb aus, sodass die gesamte Verarbeitungszeit sehr kurz ist. Außerdem werden die Funktionen von biologischen neuralen Netzen durch Änderung des Verhaltens von Synapsen und der Verbindungszustände zwischen ihnen während des Lernens realisiert. Neuronale Computer sind zur Musterverarbeitung, wie beispielsweise Zeichen- oder Spracherkennung, Prozessoptimierung, Robotersteuerung und Ähnlichem, in der Lage. Allerdings dauert die Verarbeitung lange, da der Rechenprozess gemäß den Instruktionen eines Softwareprogramms sequenziell ausgeführt wird. Neuronale Computer verfügen über die besondere Eigenschaft, dass sie Funktionen bei solchen Problemen realisieren können, deren Verarbeitungsprozeduren nur schwer in formale Regeln zu fassen sind. Selbst wenn sich beim Betrieb neuronaler Computer während normaler Lernvorgänge die wünschenswerten Funktionen mit der Zeit ändern, sind diese in der Lage, solchen Änderungen zu folgen. Außerdem sind in derartigen neuronalen Computern implementierte neurale Netze durch Verknüpfung identischer neuronaler Basisschaltungen aufgebaut, sodass das neurale Netz bei Ausfall einer der neuronalen Basisschaltungen einfach repariert werden kann, indem die ausgefallene Neuronalschaltung durch eine andere, normal funktionierende, ersetzt wird. Auf diese Weise können neurale Netze mit einer hohen Störsicherheit realisiert werden, was bei der Verwendung von hochintegrierten Halbleiterchips (Very Large Scale Integration, VLSI) von großer Bedeutung ist.
  • Es sind verschiedene neurale Netzarchitekturen denkbar. Gemäß dem Standardverfahren nach der Radialen Basisfunktion (Radial Basic Function, RBF), die in dem Artikel "A high performance adaptive classifier using radial basis functions" von M. Holler et al., Microcircuit Applications Conference, 9.-12. November 1992, Las Vegas, USA (Lit. D1) beschrieben wird, weist ein bevorzugtes neurales Netz vom RBF-Typ eine Dreischichtstruktur auf. Die erste Schicht, die die Eingangsterminals umfasst, wird als Eingangsschicht oder als Eingangsneuronenschicht bezeichnet. Die zweite oder verborgene Schicht wird von den Neuronalschaltungen selbst gebildet. Die dritte oder Ausgangsneuronenschicht verwendet die Ausgangssignale der Neuronalschaltungen der zweiten Schicht als Eingangssignale. Jede Neuronalschaltung verfügt über Gewichtskoeffizienten (in der Literatur gegenwärtig als synaptische Gewichte bezeichnet), die sich auf die Komponenten des gespeicherten Prototypvektors beziehen. Die an den Eingangsterminals der ersten Schicht verfügbaren Eingangssignale werden zur Verarbeitung parallel an alle Neuronalschaltungen der zweiten Schicht angelegt. Die Verarbeitung besteht dann in dem oben erwähnten Vergleich, um die Abstände zwischen dem Eingangsvektor und allen Prototypvektoren des neuralen Netzes zu ermitteln und zu bewirken, dass bestimmte Neuronalschaltungen reagieren bzw. nicht reagieren. Das von jeder Neuronalschaltung der zweiten Schicht generierte Signal wird in lediglich ein Ausgangsneuron einer festgelegten Kategorie eingegeben.
  • Fig. 3(A) zeigt ein derartiges herkömmliches dreischichtiges neurales Netz 2, das zehn Neuronalschaltungen N1 bis N10 vom RBF-Typ umfasst. Die erste Schicht besteht aus zwei Eingangsneuronen I1 und I2, die für den Empfang eines aus zwei Komponenten Ai und A2 bestehenden Eingangsvektors A eingerichtet sind. Diese erste Schicht ist vollständig mit jeder Neuronalschaltung N1 bis N10 der zweiten Schicht verknüpft. Jede Neuronalschaltung der zweiten Schicht kann potenziell lediglich zu einem Ausgangsneuron der dritten Schicht in Beziehung gesetzt werden. Während der Lernphase werden die Neuronalschaltungen der zweiten Schicht zum Speichern der Prototypvektoren (je Neuronalschaltung wird ein Prototypvektor gespeichert) in einem Schreib-/Lesespeicher verwendet, der für gewöhnlich als Gewichtsspeicher bezeichnet wird. Wenn das neurale Netz 2 erstmalig benutzt wird, sind in allen Gewichtsspeichern zufällige Werte enthalten. Die Neuronalschaltungen werden als "frei" bezeichnet. Sobald der Prototypvektor in einer Neuronalschaltung gespeichert und eine Verbindung zwischen einer solchen Neuronalschaltung der zweiten Schicht und einem Ausgangsneuron der dritten Schicht hergestellt wird, d. h., wenn ihm eine bestimmte Kategorie zugewiesen wurde, hat diese Neuronalschaltung mithin "gelernt" und wird nicht mehr als frei angesehen, sondern als "besetzt" bezeichnet. Beispielsweise sind die Neuronalschaltungen N2, N5 und N8 (die durch das einzelne Ausgangsneuron O2 derselben Kategorie C2 zugeordnet wurden) besetzt. Ähnliche Überlegungen gelten für andere Neuronalschaltungen, die den Kategorien C1 und C3 zugeordnet wurden. Andererseits wurde oben erwähnt, dass der Wert des Einflussfeldes einer bestimmten Neuronalschaltung während der Lernphase im Verlauf des Reduktionsprozesses verringert werden könnte. Allerdings darf dieser Wert unter keinen Umständen einen Wert gleich oder kleiner als der Wert MinIF erreichen; wenn dies im Verlauf des Reduktionsprozesses dennoch geschieht, dann gilt diese Neuronalschaltung als "entartet" (degenerated). Die Neuronalschaltung N10 ist noch frei und da sie noch nicht gelernt hat, ist ihr noch keine Kategorie zugewiesen worden. Als Schlussfolgerung gilt, dass der Zustand einer ermittelten Neuronalschaltung in einem neuralen Netz entweder frei oder besetzt ist.
  • Der in Fig. 3(B) gezeigte Merkmalsraum wurde aus Gründen der Anschaulichkeit so gezeichnet, dass er im Wesentlichen mit der Neuronalschaltung 2 von Fig. 3(A) übereinstimmt (nur die Neuronalschaltung N10 wurde nicht dargestellt). Fig. 3(B) zeigt ein Beispiel eines zweidimensionalen Merkmalsraums, das die Einflussfelder der neun Prototypvektoren veranschaulicht, die in den Neuronalschaltungen N1 bis N9 gespeichert wurden. Sie sind in drei Gruppen zu 2, 3 und 4 Neuronalschaltungen angeordnet, die zu den Kategorien C1, C2 bzw. C3 gehören. Außerdem können sich, wie aus Fig. 3(B) ersichtlich, die den Prototypvektoren derselben Kategorie zugehörigen tatsächlichen Einflussfelder unterscheiden. Eine festgelegte Kategorie kann von einem oder von mehreren Prototypvektoren repräsentiert werden, die zueinander benachbart sein bzw. sich überlappen können. Je nachdem, wie der Eingangsvektor während der Erkennungsphase im zweidimensionalen Merkmalsraum von Fig. 3(B) abgebildet ist, ergeben sich aus dem Vergleich mit allen gespeicherten Prototypvektoren offensichtlich verschiedene Fälle, die im Folgenden diskutiert werden.
  • Während der Erkennungsphase, in der einem neuralen Netz 2 ein Eingangsvektor zum Vergleich mit allen Prototypvektoren des Merkmalsraums vorgelegt wird, errechnet jede Neuronalschaltung, wie unter Bezug auf Fig. 2(D) diskutiert wurde, den Abstand zwischen dem Eingangsvektor und seinem gespeicherten Prototypvektor. Wenn der Eingangsvektor in das Einflussfeld eines bestimmten Prototypvektors fällt, wird die diesem bestimmten Prototypvektor zugehörige Kategorie dem Eingangsvektor zugewiesen. Die gleichen Überlegungen gelten, wenn der Eingangsvektor in die Einflussfelder mehrerer Prototypvektoren derselben Kategorie fällt. In beiden Fällen wird der vom neuralen Netz anhand einer einzigen Kategorie erkannte Eingangsvektor als "identifiziert" bezeichnet. Wenn der Eingangsvektor in die Einflussfelder von mindestens zwei sich überlappenden Prototypvektoren unterschiedlicher Kategorien fällt, dann wird der Eingangsvektor mindestens zweimal erkannt aber nicht identifiziert, und der Eingangsvektor wird als "undefiniert" oder "unbestimmt" bezeichnet, da die ihm zuzuweisende (oder zuzuordnende) Kategorie nicht ermittelt werden kann. In allen obigen Fällen wird gesagt, dass die entsprechenden Neuronalschaltungen, die den Eingangsvektor erkannt haben, "ausgelöst" (fired) oder "getriggert" haben, und ein Auslösesignal F wird auf "aktiv" (F = 1) gesetzt. Wenn der Eingangsvektor in das Einflussfeld keines der Prototypvektoren fällt, löst keine Neuronalschaltung des neuralen Netzes aus (jedes Auslösesignal F wird auf "inaktiv" (F = 0) gesetzt). Man unterscheidet vorteilhafterweise zwischen Daten, die auf der Ebene der Neuronalschaltung generiert und als "lokale" oder "neuronale" Daten gekennzeichnet werden, und Daten, die auf der Ebene des neuralen Netzes generiert und als "globale" oder "neurale" Daten gekennzeichnet werden. Zu den lokalen Daten gehören zunächst Ergebnisdaten (z. B. generiert eine Neuronalschaltung, die aktiviert wird, ein lokales Auslöseergebnissignal) und Zustandsdaten (z. B. hat eine entartete Neuronalschaltung einen entarteten Zustand inne), die im Folgenden als Ergebnisdaten bezeichnet werden. Zu den lokalen Daten gehören ferner Ausgangsdaten (z. B. Abstands- oder Kategoriedaten). Desgleichen gehören zu den globalen Daten globale Ergebnisdaten (z. B. generiert ein neurales Netz, das einen Eingangsvektor identifiziert, ein globales Identifizierungsergebnissignal) und globale Ausgangsdaten (z. B. den Minimalabstand Dmin). Lokale Daten, die für die lokale Antwort einer einzelnen Neuronalschaltung auf das Vorlegen eines Eingangsvektors repräsentativ sind, werden daher auf der Ebene der Ausgangsneuronen "konsolidiert", um die globalen Daten zu erzeugen.
  • Neurale Netze des in Fig. 3(A) veranschaulichten Typs sind in der Industrie bislang in großem Umfang verwendet worden. Allerdings hat sich keine der bis jetzt bekannten Neuronalschaltungsarchitekturen als wirklich zufriedenstellend erwiesen; sie weisen allgemein zahlreiche Beschränkungen und/oder Schwierigkeiten.
  • Erstens zeichnen sich die herkömmlichen neuralen Netze durch keine oder eine beschränkte serielle Verknüpfbarkeit aus. Unter der seriellen Verknüpfbarkeit versteht man die Fähigkeit, eine unbegrenzte Anzahl von Neuronalschaltungen miteinander zu verbinden, um so ein komplexes neurales Netz zu bilden, das so viele Neuronalschaltungen enthält, wie von der Anwendung gefordert werden. Da neurale Netze für gewöhnlich in VLSI- Halbleiterchips implementiert werden, wäre es deshalb höchst wünschenswert, möglichst viele neurale Chips mit möglichst geringem zusätzlichen Schaltungsaufwand hintereinander zu schalten, um schließlich ein derartiges komplexes neurales Netz zu erzeugen. Leider konnte diese Flexibilität bisher noch nicht verwirklicht werden. Im Ergebnis dessen ist die serielle Verknüpfbarkeit neuronaler Standardchips/-module sehr eingeschränkt, da deren Zusammenschaltung in großen Stückzahlen nicht einfach ist und allgemein eine große Anzahl externer Bauelemente erfordert. Wenn solche externen Bauelemente erforderlich sein sollten, wäre die Anzahl der Neuronalschaltungen in einem komplexen neuralen Netz für den Benutzer außerdem nicht mehr transparent. Diese Transparenz stellt, insbesondere während der Lernphase, einen Faktor von herausragender Bedeutung dar.
  • Zweitens sind die bisher entwickelten herkömmlichen neuralen Netze nicht autonom, d. h., die Gewinnung von globalen Ergebnissen auf der Ebene des neuralen Netzes erfordert für das gesamte Datenmanagement zwingend die Überwachung durch einen Digitalcomputer, üblicherweise einen Mikrocontroller oder einen zweckbestimmten Mikroprozessor. Beispielsweise kann man die Patentschrift US-A-5165010 (Lit. D2) und insbesondere die Fig. 23 anführen, die einen Mikrocontroller veranschaulicht, der für die Überwachung einer Vielzahl von Neuronalschaltungen sorgt, die gemeinsam das neurale Netz bilden. Das in dieser Patentschrift beschriebene neuronale System ist mit derselben parallelen Architektur wie in einem herkömmlichen Mikrocontroller organisiert. Zwischen den Neuronalschaltungen und dem Mikrocontroller werden die Daten über den Datenbus ausgetauscht, während die Adressen standardmäßig über den Adressbus fließen. In herkömmlichen neuralen Netzen sind die Neuronalschaltungen daher völlig passiv und kommunizieren lediglich mit dem Mikrocontroller. Mit anderen Worten, zwischen den verschiedenen Neuronalschaltungen, aus denen das neurale Netz aufgebaut ist, findet keine Datenkommunikation bzw. kein Datenaustausch statt. Da die Computer mittels Software betrieben werden, führt außerdem die Erkennungsphase oder die Lernphase zu einem zeitaufwendigen und komplexen Vorgang. Eine weitere Folge besteht darin, dass bei herkömmlichen neuronalen Chips die Anzahl der Ein-/Ausgangsanschlüsse auf Grund von Adressierungserfordernissen von der Anzahl der darin integrierten Neuronalschaltungen abhängt. Die gleichen Überlegungen gelten für die Ein-/Ausgangsstifte der in solchen neuralen Chips enthaltenen elektronischen neuralen Module.
  • Andererseits ist die Anzahl der in solchen herkömmlichen neuralen Netzen verfügbaren Kategorien beschränkt. Betrachtet man nun beispielsweise das in der Patentschrift US-A-4326259 (Lit. D3) beschriebene neurale Netz, so sind die Neuronalschaltungen in einer Spalte angeordnet, um die horizontalen Zeilen einer PLA (programmierbare logische Anordnung) anzusteuern, deren vertikale Zeilen die Kategorien liefern. Aus Fig. 8 derselben Patentschrift ist deutlich zu ersehen, dass die Anzahl an Kategorien aus vielen Gründen nicht sehr stark erhöht werden kann, insbesondere weil der Benutzer das Ergebnis interpretieren muss. Die sich auf die formale Identifizierung des Eingangsvektors durch das neurale Netz beziehende globale Information wird nicht direkt generiert. Wenn mehrere Neuronalschaltungen auslösen, muss der Benutzer die Ergebnisse interpretieren.
  • Ebenso ist festzustellen, wenn man eine Kategorie als eine Markierung betrachtet, die jedem Ausgangsneuron des neuralen Netzes 2 von Fig. 3(A) zugeordnet wurde, dass es auf der Ebene der Neuronalschaltungen eine derartige Markierung nicht gibt. Dies stellt eine weitere Beschränkung herkömmlicher neuronaler Schaltungsarchitekturen dar, wenn bestimmte Neuronalschaltungen von der Teilnahme an der Erkennungsphase einer bestimmten Familie von Eingangsvektoren ausgeschlossen werden sollen. Durch diesen Ansatz wäre es auch möglich, das neurale Netz entweder als ein Einzelnetz oder als dessen Teilbereiche zu organisieren, die der Benutzer programmieren könnte.
  • Und schließlich läuft das Lernen nicht selbständig ab, aber die Gewichte werden allgemein vom Mikrocontroller einzeln ermittelt und dann in die Neuronalschaltungen geladen, wenn der Mikrocontroller die Lernphase als abgeschlossen erachtet. Daraus ergibt sich, dass die Erkennungs- und die Lernphase deutlich voneinander getrennte Zeitabschnitte darstellen. In herkömmlichen neuralen Netzen erfolgt das Lernen durch Anpassung der Gewichte, die bei der Initialisierung üblicherweise willkürlich gesetzt werden. Signale werden über das neurale Netz eingegeben und Ausgangssignale werden beobachtet. Stellt sich das Ausgangssignal als falsch heraus, dann wird durch eine mathematische Berechnung ermittelt, wie die Gewichte korrigiert werden müssen. Dann werden Eingangssignale erneut angelegt und das Ausgangssignal so lange wieder neu bestimmt, bis das Ausgangssignal richtig ist. In den Systemen nach dem Stand der Technik, wie sie in der Patentschrift US-A-5222193 (Lit. D4) beschrieben werden, wird für das Training eines neuralen Netzes ein Persönlicher Programmierer für Personal Computer (Personal Computer Personal Programmer, PCPP) benötigt, der über eine generische Universal-Programmierschnittstelle (Generic Universal Programmer Interface, GUPI) mit einem Hostcomputer verbunden ist.
  • Alle diese Nachteile werden durch das neurale Netz 2 von Fig. 3(A) einfach veranschaulicht. Zuerst soll beispielsweise die Ermittlung des Minimalabstandes Dmin zwischen einem Eingangsvektor und den in den Neuronalschaltungen N1 bis N9 gespeicherten Prototypvektoren betrachtet werden. Üblicherweise fragt der Mikrocontroller die erste Neuronalschaltung ab, um den von ihr errechneten Abstand zu erhalten, dann fragt er die zweite Neuronalschaltung ab und vergleicht die beiden Abstände, um den kleinsten Wert abzuspeichern. Dieser Sendeaufruf wird nacheinander durch aufeinander folgende Iterationen so lange fortgesetzt, bis die letzte Neuronalschaltung abgefragt worden ist. Deshalb wird der Minimalabstand zwischen dem Eingangsvektor und allen Prototypvektoren erst am Ende dieses Prozesses ermittelt, wodurch der oben erwähnte Reduktionsprozess deutlich hinausgezögert wird. Ein ähnliches Verfahren findet während des Reduktionsprozesses Anwendung. Es werden so lange aufeinander folgende Iterationen durchgeführt, um die Neuronalschaltungen, die fälschlicherweise ausgelöst haben, auszuschließen, bis nur noch die richtige Neuronalschaltung mit der zutreffenden Kategorie übrig bleibt. In allen Fällen ist ein zweckbestimmtes Softwareprogramm auf der Basis eines komplexen Sortieralgorithmus und deshalb mit einer Anzahl von Instruktionszeilen erforderlich, um die gesamte Abfolge von Abfrage- und Vergleichsschritten auszuführen. Daher ist der Sortierprozess außerordentlich zeitaufwendig. Da zwischen all den Neuronalschaltungen des neuralen Netzes 2 von Fig. 3(A) keine Kommunikation stattfindet, sind die potenziellen Korrelationen, die zwischen allen lokalen Ergebnissignalen auf der Ebene der Neuronalschaltungen und den globalen Ergebnissignalen auf der Ebene des neuralen Netzes existieren, noch nicht voll erschlossen worden. Infolgedessen liefert das herkömmliche neurale Netz von Fig. 3(A) bezüglich der globalen Daten dem Benutzer nur begrenzte Informationen. Außerdem ist die Anzahl der auf der Ebene der Ausgangsneuronen verfügbaren Kategorien offensichtlich durch die Hardwarekonstruktion der Ausgangsneuronen beschränkt. Die meisten, wenn nicht sogar alle, der oben erwähnten Beschränkungen und/oder Schwierigkeiten können durch Anwendung der verbesserten Neuralhalbleiterchip- Architekturen und der darin angeordneten neuralen Netze gemäß der vorliegenden Erfindung umgangen werden.
  • ÜBERBLICK ÜBER DIE ERFINDUNG
  • Eine Daisy-Chain-Schaltung wird in jeder Neuronalschaltung eines neuralen Netzes angeordnet, welches aus einer Vielzahl von Neuronalschaltungen besteht. Die Daisy-Chain-Schaltungen sind seriell miteinander verbunden, sodass die Neuronalschaltungen kettenförmig strukturiert sind. Die Hauptaufgabe der Daisy- Chain-Schaltung besteht darin, die zwei möglichen Zustände der Neuronalschaltung (besetzt oder frei) voneinander zu unterscheiden und darüber hinaus in Abhängigkeit von den jeweiligen Werten ihrer Eingangs- und Ausgangssignale die erste freie Neuronalschaltung in der Kette zu identifizieren, die als die lernbereite Neuronalschaltung bezeichnet wird. Die lernbereite Neuronalschaltung ist die einzige Neuronalschaltung in dem neuralen Netz, deren Eingangs- und Ausgangssignale zueinander komplementär sind. Sie ist um ein 1-Bit-Register herum angeordnet, das durch ein Freigabesignal zum Speichern gesteuert wird, welches bei der Initialisierung oder während der Lernphase auf "aktiv" gesetzt wird, wenn eine neue Neuronalschaltung besetzt werden muss. Das Eingangssignal, welches das von der vorhergehenden Daisy-Chain-Schaltung gelieferte Ausgangssignal darstellt, wird an den ersten Eingang eines Zweiwege-UND-Gatters angelegt, dessen anderer Eingang ein Rücksetzsignal empfängt. Der Ausgang dieses UND-Gatters ist mit dem Eingang des Registers verbunden. Der Ausgang des Registers wiederum ist mit dem ersten Eingang eines Zweiwege-ODER-Gatters verbunden. An den anderen Eingang dieses ODER-Gatters wird ein Prüfsignal angelegt. Das Prüfsignal erweist sich während des Tests des neuralen Netzes als nützlich, da sich alle Neuronalschaltungen wie besetzt verhalten, wenn das Prüfsignal auf "aktiv" gesetzt wurde. Der Ausgang des ODER-Gatters ist mit dem Ausgangsterminal der Daisy-Chain-Schaltung verbunden, an dem das Ausgangssignal zur Verfügung steht. Bei der Initialisierung werden das Rücksetzsignal und das Freigabesignal zum Speichern auf "aktiv" gesetzt, sodass alle Register der Kette auf einen ersten logischen Wert (z. B. 0) zurückgesetzt werden. Das Eingangsterminal der ersten Neuronalschaltung in der Kette ist mit einem zweiten logischen Wert (z. B. 1) verbunden, sodass diese nach der Initialisierung konstruktionsbedingt die lernbereite Neuronalschaltung ist. Unter normalen Betriebsbedingungen sind die Prüf- und Rücksetzsignale inaktiv. Während der Lernphase wird der Inhalt des 1-Bit-Registers der lernbereiten Neuronalschaltung durch das Speicherungsfreigabesignal auf den zweiten logischen Wert gesetzt. Die lernbereite Neuronalschaltung ist dann besetzt, während die folgende Neuronalschaltung in der Kette zur neuen lernbereiten Neuronalschaltung wird. Außerdem ist die Daisy- Chain-Schaltung dafür eingerichtet, verschiedene Steuersignale und insbesondere dasjenige Steuersignal zu generieren, das es ermöglicht, die Komponenten des Eingangsvektors während der Erkennungsphase in den Gewichtsspeicher lediglich der lernbereiten Neuronalschaltung laden.
  • Der aus dem Dokument EP-A-0 558 125 bekannte neurale Prozessor verfügt über mehrere Synapsenzellen, die von einem Adressbus und einem Betriebsbus parallel adressiert werden. Die Zellen kommunizieren über eine Datenkette und einen kettenförmigen Pfad, über die ein Besetztsignal weitergeleitet wird. Jede Synapsenzelle ermittelt ihren passenden Beitrag zum Gesamtergebnis selbst. Die Synapsenzellen können Gruppen von Synapsenzellen bilden, wobei jede Gruppe einen kettenförmigen Datenpfad aufweist. Die Kettenpfade können durch Pipelinebegrenzungen unterbrochen werden, sodass die Zykluszeiten reduziert werden können.
  • AUFGABEN DER ERFINDUNG
  • Es ist deshalb eine vorrangige Aufgabe der vorliegenden Erfindung, eine in jeder Neuronalschaltung eines neuralen Netzes angeordnete Daisy-Chain-Schaltung bereitzustellen, die dafür eingerichtet ist, zwischen den zwei möglichen Zuständen (frei oder besetzt) der Neuronalschaltung in Abhängigkeit vom logischen Wert deren Eingangs- und Ausgangssignale an den entsprechenden Eingangs- und Ausgangsterminals zu unterscheiden.
  • Eine weitere Aufgabe der vorliegenden Erfindung besteht darin, eine in jeder Neuronalschaltung eines neuralen Netzes angeordnete Daisy-Chain-Schaltung bereitzustellen, deren Eingangssignal mit dem Ausgangsterminal der Daisy-Chain- Schaltung einer vorhergehenden Neuronalschaltung und deren Ausgangssignal mit dem Eingangsterminal der Daisy-Chain- Schaltung der nachfolgenden Neuronalschaltung verbunden ist, sodass alle Neuronalschaltungen des neuralen Netzes kettenförmig strukturiert sind.
  • Eine weitere Aufgabe der vorliegenden Erfindung besteht darin, eine in jeder Neuronalschaltung eines kettenförmigen neuralen Netzes angeordnete Daisy-Chain-Schaltung bereitzustellen, bei der die erste freie Neuronalschaltung in der Kette automatisch als die lernbereite Neuronalschaltung festgelegt wird.
  • Eine weitere Aufgabe der vorliegenden Erfindung besteht darin, eine in jeder Neuronalschaltung eines kettenförmigen neuralen Netzes angeordnete Daisy-Chain-Schaltung bereitzustellen, bei der das Eingangsterminal der ersten Neuronalschaltung in der Kette mit einem bestimmten logischen Wert verbunden ist, sodass die erste Neuronalschaltung bei der Initialisierung konstruktionsbedingt die lernbereite Neuronalschaltung ist.
  • Eine weitere Aufgabe der vorliegenden Erfindung besteht darin, eine in jeder Neuronalschaltung eines neuralen Netzes angeordnete Daisy-Chain-Schaltung bereitzustellen, bei der die Eingangs- und Ausgangssignale verarbeitet werden, um ein Steuersignal zu generieren, das als Schreib-/Lese-Signal an den Gewichtsspeicher jeder Neuronalschaltung angelegt wird, sodass die Komponenten des Eingangsvektors lediglich in der lernbereiten Neuronalschaltung als die Komponenten eines neuen Prototypvektors gespeichert werden.
  • Eine weitere Aufgabe der vorliegenden Erfindung besteht darin, eine in jeder Neuronalschaltung eines neuralen Netzes angeordnete Daisy-Chain-Schaltung bereitzustellen, die mit einem Rücksetzsignal versehen ist, mit dem alle Neuronalschaltungen des neuralen Netzes in den freien Zustand gezwungen werden, wenn es aktiv ist.
  • Eine weitere Aufgabe der vorliegenden Erfindung besteht darin, eine in jeder Neuronalschaltung eines neuralen Netzes angeordnete Daisy-Chain-Schaltung bereitzustellen, die mit einem Prüfsignal versehen ist, mit dem alle Neuronalschaltungen des neuralen Netzes in den besetzten Zustand gezwungen werden, wenn es aktiv ist.
  • Die für diese Erfindung als charakteristisch erachteten neuartigen Merkmale werden in den angehängten Ansprüchen ausgeführt. Die Erfindung selbst wie auch weitere ihrer Aufgaben und Vorteile lassen sich jedoch am Besten anhand der folgenden detaillierten Beschreibung einer veranschaulichten bevorzugten Ausführungsart in Verbindung mit den beiliegenden Zeichnungen verstehen.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Fig. 1 zeigt den in eine Matrix von 9 · 8 Pixeln eingebetteten Großbuchstaben "E".
  • Fig. 2, die aus den Fig. 2(A) bis 2(D) besteht, soll verschiedene Beispiele der Implementierung eines Prototypvektors in einem zweidimensionalen Merkmalsraum zeigen. Fig. 2(A) zeigt einen einzelnen Prototypvektor und Sein durch einen Kreis veranschaulichtes Einflussfeld; Fig. 2(B) zeigt zwei Prototypvektoren mit derselben Kategorie C; Fig. 2(C) zeigt zwei zu unterschiedlichen Kategorien gehörende Prototypvektoren, um die Prinzipien auf der Grundlage des Reduktionsverfahrens zu veranschaulichen; Fig. 2(D) zeigt drei verschiedene, zu unterschiedlichen Kategorien gehörende Prototypvektoren, um den Begriff "Abstand" zu veranschaulichen.
  • Fig. 3 besteht aus den Fig. 3(A) und 3(B). Fig. 3(A) zeigt eine herkömmliche dreischichtige neurale Netzarchitektur vom RBF-Typ, die zehn Neuronalschaltungen für die Verarbeitung zweikomponentiger Eingangsvektoren zu deren Klassifizierung in drei Kategorien umfasst. Fig. 3(8) zeigt ein Beispiel, wie ein Merkmalsraum entsprechend dem neuralen Netz von Fig. 3(A) aussehen kann.
  • Fig. 4(A) zeigt schematisch das Blockdiagramm einer ersten Architekturvariante des Neuralhalbleiterchips, wenn dieser nur für den Standalone-Betrieb eingerichtet ist, und das darin angeordnete neurale Netz gemäß der vorliegenden Erfindung.
  • Fig. 4(B) zeigt schematisch das Blockdiagramm der bevorzugten Architektur des Neuralhalbleiter-Basis-Chips, wenn dieser entweder für den Standalone-Betrieb oder für den gemeinsamen Betrieb mit anderen ähnlichen Neuralchips in einer Mehrchipumgebung eingerichtet ist, sowie das darin angeordnete neurale Basisnetz gemäß der bevorzugten Ausführungsart der vorliegenden Erfindung.
  • Fig. 5 zeigt das schematische Blockdiagramm der bevorzugten Architektur der neuartigen Neuronalschaltung der Fig. 4(A) und 4(B) ebenfalls gemäß der vorliegenden Erfindung, um deren wesentliche Funktionsblöcke und die Hauptverbindungen zwischen ihnen zu veranschaulichen.
  • Fig. 6 zeigt das schematische Blockdiagramm der Zustands- und Steuerlogikschaltung 18 der Fig. 4(A) und 4(B), welche die internen Steuer-, Auswahl- und Adresssignale generiert, die für den Betrieb aller Blöcke von Fig. 5 erforderlich sind.
  • Fig. 7 zeigt das schematische Blockdiagramm der WENN-Schaltung 350 von Fig. 5, die aus einem Register und einem Multiplexer besteht.
  • Fig. 8 zeigt das schematische Blockdiagramm der Dmin- Bestimmungsschaltung 500 von Fig. 5, die einen Multiplexer, eine Logikschaltung und eine neuartige Such-/Sortierschaltung umfasst.
  • Die Fig. 9 und 10 zeigen zwei Architekturvarianten des neuralen Basis-Chips von Fig. 4(B).
  • Fig. 11 zeigt das Elementarmodul, das durch Zusammenschalten einer Vielzahl neuraler Halbleiter-Basis-Chips von Fig. 4(B) gebildet wird, die in Reihe miteinander verbunden sind, um die völlige Verknüpfbarkeit der neuralen Chips der vorliegenden Erfindung innerhalb der hinsichtlich ihrer Anzahl von der Halbleitertechnologie gezogenen Grenzen zu veranschaulichen.
  • Fig. 12 zeigt das durch Zusammenschalten von zwei Elementarmodulen von Fig. 11 gebildete komplexe Modul, wobei nur ein geringfügiger zusätzlicher Schaltungsaufwand in Kauf genommen wurde.
  • Fig. 13 zeigt das Flussdiagramm der wesentlichen Schritte der Initialisierungsphase des neuralen Basisnetzes.
  • Fig. 14 besteht aus den Fig. 14(A) und 14(B) und zeigt das Flussdiagramm der wesentlichen Schritte der Erkennungsphase des neuralen Basisnetzes.
  • Fig. 15 zeigt das Flussdiagramm der wesentlichen Schritte der Lernphase des neuralen Basisnetzes, welche den Reduktionsprozess und den Besetzungsprozess umfasst.
  • Fig. 16 zeigt den schematischen Schaltungsaufbau der Abgleichschaltung 150 von Fig. 5.
  • Fig. 17 veranschaulicht, wie durch Verwendung des Kontextansatzes verschiedene Teilbereiche des neuralen Basisnetzes von Fig. 4(B) definiert werden können.
  • Fig. 18 besteht aus den Fig. 18(A), 18(B) und 18(C). Fig. 18(A) ist eine detaillierte Ansicht der Schreib-/Lese- Speicherschaltung 250 von Fig. 5, die im Prinzip um einen RAM- Speicher herum angeordnet ist. Fig. 18(B) veranschaulicht den Datenfluss in der Schaltung 250 während der Erkennungsphase für eine besetzte Neuronalschaltung. Fig. 18(C) veranschaulicht den Datenfluss während der Erkennungsphase für die erste freie Neuronalschaltung, wobei der Schritt des Vorladens des RAM- Speichers mit den Komponenten des Eingangsvektors eingeschlossen ist.
  • Fig. 19 zeigt das schematische Schaltungsdiagramm der Abstandsbewertungsschaltung 200 von Fig. 5, die im Wesentlichen aus zwei Teilblöcken besteht, von denen jeder einen Summierer enthält, dessen Aufgabe es ist, den Abstand zwischen dem in der Neuronalschaltung gemäß einer vom Benutzer gewählten Norm gespeicherten Eingangsvektor und dem Prototypvektor zu berechnen.
  • Fig. 20 zeigt die vereinfachte zweiteilige Struktur des im ersten Teilblock der Abstandsbewertungsschaltung 200 implementierten Summierers.
  • Fig. 21 zeigt den detaillierten Aufbau des ersten Teils des Summierers von Fig. 20, der Zwischenbitsignale zur Verwendung in dessen zweiten Teil generiert.
  • Fig. 22 besteht aus den Fig. 22(A) bis 22(D). Fig. 22(A) zeigt den detaillierten Schaltungsaufbau einer XOR-Schaltung (exklusives ODER) mit verschiedenen Verbindungstypen. Fig. 22(B) zeigt den detaillierten Schaltungsaufbau einer kombinierten Auswahl-/NAND-Schaltung (NAND, negiertes UND). Fig. 22(C) zeigt den detaillierten Schaltungsaufbau einer kombinierten Auswahl-/ NOR-Schaltung (NOR, negiertes ODER). Und Fig. 22(D) zeigt schließlich den detaillierten Schaltungsaufbau der beiden Auswahltypen (Selector, SEL), die in den Schaltungen der Fig. 22(B) und (C) verwendet werden. Alle in Fig. 18 gezeigten Schaltungen werden im ersten Teil des Summierers von Fig. 20 in großem Umfang genutzt.
  • Fig. 23 zeigt den detaillierten Aufbau des zweiten Teils des Summierers von Fig. 20, der die Summenbitsignale generiert.
  • Fig. 24 ist die detaillierte Ansicht der Vergleichsschaltung 300 von Fig. 5, die Zwischensignale LT und LTE zur nachfolgenden Verarbeitung in der Identifizierungsschaltung 400 generiert.
  • Fig. 25 ist das schematische Schaltungsdiagramm der neuartigen Identifizierungsschaltung 400 von Fig. 5, welche die lokalen Ergebnis- und Zustandssignale auf der Ebene der Neuronalschaltungen generiert.
  • Fig. 26 zeigt den detaillierten Aufbau der Logikschaltung 503 in der Dmin-Bestimmungsschaltung 500 von Fig. 8.
  • Fig. 27 zeigt ein Flussdiagramm, das den der Such-/ Sortierschaltung 502 von Fig. 8 zugrunde liegenden Algorithmus zeigt.
  • Fig. 28 besteht aus den Fig. 28(A) und (B). Fig. 28(A) zeigt schematisch die Struktur der bevorzugten Elementarbasiseinheit, die in der Such-/Sortierschaltung 502 von Fig. 8 verwendet wird, um ein Bit des von der Neuronalschaltung errechneten Abstandssignals zu verarbeiten. Fig. 28(B) zeigt eine typische Implementierung der Basiseinheit mit Standard-Logikgattern.
  • Fig. 29 zeigt schematisch eine erste Variante der durch die Kombination von vier Such-/Sortierschaltungen 502 gebildeten fiktiven Gesamtschaltung, deren jede durch Zusammenfügen der gewünschten Anzahl elementarer Basiseinheiten von Fig. 28 aufgebaut ist, welche zur Ermittlung des Minimalabstandes aus vier mit je vier Bits codierten Abständen im neuralen Netz von Fig. 4(A) eingerichtet ist (unter der Annahme, dass Letzteres aus Gründen der Anschaulichkeit nur aus vier Neuronalschaltungen besteht).
  • Fig. 30 zeigt schematisch eine weitere Variante der fiktiven Gesamtschaltung von Fig. 29, die des Weiteren Speicherelemente enthält, mit denen die übrigen Abstände in steigender Reihenfolge sortiert werden können.
  • Fig. 31 zeigt den detaillierten Aufbau der Daisy-Chain-Schaltung 600 von Fig. 5.
  • Fig. 32 veranschaulicht schematisch die Anwendung des Ansatzes der Daisy-Chain-Schaltung 600 der vorliegenden Erfindung auf eine Mehrprozessorumgebung.
  • Fig. 33 zeigt schematisch die Struktur des Kommunikationssystems zwischen den Neuronen für den Neuralchip von Fig. 4(A), welcher für den Standalone-Betrieb eingerichtet ist und in dem die ODER- Funktion von einer ODER-Schaltung ausgeführt wird.
  • Fig. 34 zeigt schematisch die Struktur des Kommunikationssystems zwischen den Neuronen für den neuralen Basis-Chip von Fig. 4(B) für den Betrieb in einer Mehrchipumgebung, in dem die ODER- Funktion durch Verdrahten in den chipexternen gemeinsamen Kommunikationsbus ausgeführt wird.
  • Fig. 35 zeigt die detaillierte Implementierung der Treiberschaltungen für das erste Bit der globalen Ausgangssignale für den Fall, dass acht neurale Basis-Chips von Fig. 34 zu einem Elementarmodul zusammengeschaltet sind.
  • Fig. 36 besteht aus den Teilen (A), (B) und (C). Teil (A) stellt die logische Beziehung zwischen den Signalen OUT* und NOUT dar. Teil (B) stellt die logische Beziehung zwischen den Signalen OR und OUT* dar. Und Teil (C) schließlich stellt die logische Beziehung zwischen den Signalen /GUT** und für jedes ihrer Bits dar.
  • Fig. 37 zeigt die detaillierte Implementierung der Treiberschaltungen für das erste Bit des globalen Ausgangssignals für den Fall, dass acht neurale Basis-Chips zu einer Variante des Elementarmoduls von Fig. 35 zusammengeschaltet wurden, wobei jeder Chip mit der optionalen Dmin-Bestimmungs-Hauptschaltung 20 von Fig. 4(B) versehen ist.
  • Fig. 38 zeigt die Anordnung einer Vielzahl der Elementarmodule von Fig. 35 zu einem Komplexmodul.
  • Fig. 39 veranschaulicht die Anwendung des Ansatzes des interneuronalen Kommunikationssystems der vorliegenden Erfindung auf den Aufbau einer elementaren Mehrprozessoreinheit, die aus einer Vielzahl von Basis-Verarbeitungseinheiten besteht.
  • Fig. 40 zeigt die Anordnung von zwei elementaren Mehrprozessoreinheiten von Fig. 39, die eine komplexe Mehrprozessoreinheit bilden.
  • Fig. 41 zeigt die Implementierung einer Such-/Sortier- Blindschaltung in jedem neuralen Basis-Chip von Fig. 4(B), um das Signal MaxIF als ein lokales Ausgangssignal zu generieren.
  • BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSARTEN KURZBESCHREIBUNG DER ZISC-CHIP-ARCHITEKTUREN EINLEITUNG
  • Gemäß der vorliegenden Erfindung ist nach einer herkömmlichen 1um-CMOS-Technologie der Prototyp eines neuralen Chips hergestellt worden. Die Anzahl n der Vektorkomponenten reicht von 1 (Mindestzahl) bis 64 (Höchstzahl). Die Anzahl m der Bits zum Codieren jeder Komponente beträgt 8. Die Eingangsdatenschnittstelle wird durch einen bidirektionalen 16- Bit-Bus realisiert. Die oben erwähnten Normen L1 und Lsup stehen zur Berechnung des Abstandes mit einer Genauigkeit von 14 Bits zur Verfügung. Die Höchstzahl von Kontexten und Kategorien beträgt 127 bzw. 16384, da diese mit 7 bzw. 14 Bits codiert werden. Auch MaxIF und MinIF, die den Radiuswerten des größten und des kleinsten Einflussfeldes entsprechen, werden mit 14 Bits codiert. Bei der Initialisierung des ZISC-Chips 10 sind diese Werte gleich 010 ... 00 (d. h. 2**13 = 8192) bzw. 00 ... 10 (d. h. 2**1 = 2). Sie stellen empirisch und zufällig ermittelte Standardwerte dar. Auf dem Siliciumsubstrat wurden sechsunddreißig Neuronalschaltungen integriert, die auf dem Chip insgesamt ungefähr 400000 Transistoren zur Verfügung stellen. Diese Neuronalschaltungen mit einer neuartigen Architektur generieren Ergebnis- und Ausgangssignale. Um den komplett festverdrahteten und autonomen Charakter dieses neuralen Halbleiterchips zu unterstreichen, wird er im Folgenden als ZISC-Chip bezeichnet. ZISC (ein eingetragenes Warenzeichen von IBM Corp.) ist eine Abkürzung für Zero Instruction Set Computer/Classifier (Computer/Klassifizierer ohne Instruktionssatz). Dadurch unterscheidet sich der ZISC-Chip grundlegend von den CISC- oder RISC-Standard-Computerchips, da er für seinen Betrieb keinerlei Instruktionssätze benötigt. Die Bezeichnung ZISC kann auch auf die neuartigen Neuronalschaltungen, auf die durch Verknüpfen der neuralen Chips geschaffenen Module und schließlich auf die in den neuralen Chips oder Modulen angeordneten neuralen Netze Anwendung finden.
  • DIE ARCHITEKTUR DES ZISC-BASIS-CHIPS
  • In Fig. 4(A) ist das schematische Blockdiagramm der Architektur einer ersten Variante des ZISC-Basis-Chips 10 der vorliegenden Erfindung dargestellt. Die Chiparchitektur beinhaltet eine Vielzahl von neuartigen Neuronalschaltungen des Typs, der lokale (oder neuronale) Ergebnis- und lokale (oder neuronale) Ausgangsdaten generiert, und enthält ein neurales Netz ebenfalls gemäß der vorliegenden Erfindung. Die in Fig. 4(A) dargestellte Einzelchiparchitektur ist speziell für Standalone-Anwendungen eingerichtet worden. Die neuartigen Neuronalschaltungen sind in Blöcken 11-1 bis 11-N enthalten, die gemeinsam die neurale Einheit 11(#) bilden. Wie aus Fig. 4(A) ersichtlich, weisen die Neuronalschaltungen 11-1 bis 11-N eine serielle Verknüpfung auf, sodass sie kettenförmig strukturiert sind. Unter der Annahme, dass in dieser bevorzugten Ausführungsart alle diese Neuronalschaltungen identisch sind, wird beispielhaft eine Neuronalschaltung als 11 (oder allgemein 11-i) bezeichnet. Die bevorzugte Architektur der Neuronalschaltung 11 wird im Folgenden unter Bezug auf Fig. 5 genauer beschrieben. In der folgenden Beschreibung bezeichnet die Zahl 11 sowohl die Architektur der Neuronalschaltung als auch die Neuronalschaltung selbst. Eine ähnliche Bezeichnungsweise gilt auch für die Architektur des ZISC-Chips 10 und den ZISC-Chip 10 selbst. In Fig. 4(A) ist das neurale Netz als 11(A) bezeichnet. Es besteht im Wesentlichen aus der neuralen Einheit 11(#) und dem im ZISC- Einzelchip 10 gebildeten interneuronalen Kommunikationssystem. Gemäß der vorliegenden Implementierung der in Fig. 4(A) dargestellten Variante besteht das interneuronale Kommunikationssystem aus dem Block 12 und einem mit COM*-BUS bezeichneten gemeinsamen Kommunikationsbus auf dem Chip, der im Folgenden genauer beschrieben wird. Alle Blöcke von Fig. 4(A) bestehen aus Schaltungen, die leicht auf einem Siliciumsubstrat integriert werden können, um einen VLSI-IC-Chip zu bilden. Der ZISC-Chip 10 benötigt für die Überwachung des Betriebs des neuralen Netzes 11(A) nicht extra einen Mikrocontroller, wie das gegenwärtig bei den neuralen Standard-Chips der Fall ist. Folglich ist auch kein Instruktionssatz erforderlich. In Verbindung mit dem ZISC-Chip 10 könnte ein Mikrocontroller (oder ein Mikroprozessor) verwendet werden, doch würde sich seine Aufgabe darauf beschränken, die Eingangsvektoren (und -kategorien) dem neuralen Netz 11(A) vorzulegen und von ihm die globale Antwort entgegenzunehmen. Zur Vereinfachung werden diese Operationen im Folgenden als SCHREIB- und LESE-Operationen bezeichnet. Es sollte jedoch klar sein, dass diese Operationen aufgrund der verbesserten Architektur des ZISC-Chips 10 von Fig. 4(A) mittels manuell zu betätigender Schalter auch vom Benutzer ausgeführt werden könnten. Die Verbindungen zwischen bestimmten Blöcken des ZISC-Chips 10 und dem Mikrocontroller oder dem Benutzer (nicht dargestellt) werden durch den bidirektionalen 16-Bit-Eingangsdatenbus INDATA-BUS (der mit dem E/A-Bus des Mikrocontrollers, falls vorhanden, verbunden ist) und durch einen SEL/CTL-BUS dargestellt, der die Auswahl- und Steuersignale transportiert. Das herkömmliche 16-Bit- Eingangsregister (Register DATA), das während jedes Zyklus die auf dem INDATA-BUS erscheinenden Daten zwischenspeichert, ist nicht dargestellt. Die Empfänger-, Treiber- und Empfänger-/ Treiberschaltungen, die den ZISC-Chip 10 mit der äußeren Umgebung verbinden, werden schematisch durch die schwarzen Kästen RR, DR bzw. RR/DR wiedergegeben. Sie stellen für den Schaltungsentwickler sämtlich herkömmliche Schaltungen dar.
  • Block 13 ist ein 8-Bit-Register, in das vom DATA-BUS Daten geladen werden, die die Komponenten des Eingangsvektors darstellen. Dieses Register befindet sich wahlweise im Asynchronmodus und wird im Synchronmodus (BURST-Modus) nur des Betriebs des ZISC-Chips 10 benötigt.
  • Außer den Eingangsvektordaten werden auch verschiedene Installationsparameter (wie beispielsweise die Werte MaxIF und MinIF) und Eingangsdaten (wie beispielsweise die Eingangskategorie, der Eingangskontext und die Norm) in zugeordneten Registern des ZISC-Chips 10 gespeichert.
  • Die Blöcke 14 und 15 sind 14-Bit-Register, in die bei der Initialisierung die Werte des maximalen Einflussfeldes (MaxIF) und des minimalen Einflussfeldes (MinIF) geladen werden. Der Wert MaxIF stellt den maximalen Wert dar, den das Einflussfeld eines ermittelten Prototypvektors während des Lernens annehmen kann. MinIF stellt den kleinsten Wert dar, den das Einflussfeld während des Lernprozesses annehmen kann. Da die Werte MaxIF und MinIF in der dargestellten Ausführungsart des ZISC-Chips 10 niemals gleichzeitig verwendet werden, können die entsprechenden Ausgänge der Register 14 und 15 wahlweise mit den Eingängen eines Zweiwege-Multiplexers (MUX) 16 verbunden werden, dessen Ausgangsbus den 14-Bit-MaxIF/MinIF-BUS bildet.
  • Ein als NO/CXT-Hauptregister 17 bezeichneter vierter Block besteht aus einem 8-Bit-Register, das zum Speichern der Eingangsnorm- und Kontextdaten dient. Der vom NO/CXT- Hauptregister 17 abgehende Bus wird als NO/CXT-BUS bezeichnet und hat eine Breite von 8 Bit. Die Aufgabe dieser Eingangsnorm- und Kontextdaten wird in Verbindung mit Fig. 5 im Folgenden genauer beschrieben.
  • Die auf dem INDATA-BUS zur Verfügung stehenden Eingangskategoriedaten CAT werden auf einem speziell hierzu dienenden Bus übertragen, der als CAT-BUS bezeichnet wird und eine Breite von 14 Bit besitzt.
  • Die Leitungen, die die Steuersignale für alle Blöcke von Fig. 4(A) transportieren, sind aus Gründen der Übersichtlichkeit in der Zeichnung nicht dargestellt worden. Die meisten dieser Signale werden in einem zweckbestimmten Block 18 generiert. Der Block 18 besteht im Grunde aus einer Zustands- und Steuerlogikschaltung, die im Wesentlichen alle Steuerlogikschaltungen enthält, die für das ordnungsgemäße Funktionieren der Blöcke des ZISC-Chips 10 erforderlich sind. Der Aufbau des Blockdiagramms von Block 18 wird unter Bezug auf Fig. 6 im Folgenden genauer beschrieben.
  • Hierzu werden, wie aus Fig. 4(A) ersichtlich, die vier Busse DATA, CAT, MaxIF/MinIF und NO/CXT parallel an jede der Neuronalschaltungen 11-1 bis 11-N angeschlossen. Die Bitbreite jedes der oben genannten Busse wird aus Gründen der Anschaulichkeit unter Bezug auf die oben beschriebene spezielle Implementierung des ZISC-Chips 10 angegeben, was jedoch nicht als Einschränkung zu interpretieren ist.
  • In Fig. 5 wird in einem Blockdiagramm die Architektur einer einzelnen Neuronalschaltung 11 gemäß der vorliegenden Erfindung schematisch dargestellt. Wie aus Fig. 5 ersichtlich, ist der NO/CXT-BUS gleichzeitig an einen als lokales Norm-/ Kontextregister bezeichneten Block 100 sowie an den ersten Eingang eines Blocks 150 angeschlossen, der im Grunde eine herkömmliche Abgleich- oder Vergleichsschaltung darstellt und standardmäßig aus XOR- und ODER-Gattern besteht. Der NO/CXT-BUS transportiert ein 1-Bit-Eingangsnormsignal und ein 7-Bit- Kontexteingangssignal. Nach dem Speichern der vom Mikrocontroller oder vom Benutzer ausgegebenen Norm- und Kontexteingangsdaten im lokalen Norm-/Kontextregister 100 werden die gespeicherten Daten als die lokalen Norm- und Kontextdaten bezeichnet. Die vom Norm-/Kontextregister 100 ausgegebenen Daten werden mit der Kennzeichnung No für die lokalen Normdaten und mit Cxt für die lokalen Kontextdaten versehen. Diese Daten stehen auf dem No/Cxt-BUS zur Verfügung, der aus zwei Teilen besteht: einem 7-Bit-Cxt-BUS, der am zweiten Eingang der Abgleichschaltung 150 anliegt, und einem 1-Bit-No-BUS, der mit dem Block 200 verbunden ist. Letzterer wird im Folgenden als die Mehrnorm-Abstandsbewertungsschaltung bezeichnet wird.
  • Sobald der Mikrocontroller oder der Benutzer beschlossen hat, dass das neurale Netz 11(A) einen Eingangsvektor lernen soll, obliegt gemäß der vorliegenden Erfindung die Entscheidung, ob eine freie Neuronalschaltung 11 besetzt werden soll oder ob zur Reduktion des Wertes AlF der besetzten Neuronalschaltungen, die fälschlicherweise ausgelöst haben, übergegangen werden soll, dem neuralen Netz 11(A) selbst. Am Ende des Besetzungsprozesses wird der Inhalt des Norm-/Kontextregisters 100 automatisch über den NO/CXT-BUS aus dem NO/CXT-Hauptregister 17 von Fig. 4(A) geladen. Danach können sich die Inhalte des NO/CXT- Hauptregisters 17 und des Norm-/Kontextregisters 100 voneinander unterscheiden. Aus diesen Unterschieden zwischen den im lokalen Norm-/Kontextregister 100 gespeicherten lokalen Normdaten (No) und lokalen Kontextdaten (Cxt) und den im NO/CXT-Hauptregister 17 gespeicherten Normeingangsdaten (NO) und Kontexteingangsdaten (CXT) lassen sich erhebliche Vorteile ziehen.
  • Bezüglich des Kontextes kann dieser Unterschied vorteilhaft genutzt werden, um verschiedene Typen von Eingangsvektoren voneinander zu unterscheiden. Beispielsweise kann der Kontextdaten-Ansatz dazu verwendet werden, zwischen zwei Familien von Eingangsvektoren zu unterscheiden, von denen eine den Großbuchstaben und die andere den Kleinbuchstaben entspricht (oder allgemeiner, um zwischen verschiedenen Schriftarten zu unterscheiden). In diesem Fall würde in alle Neuronalschaltungen des neuralen Netzes 11(A), die die Großbuchstaben erkennen sollen, ein lokaler Kontextwert gleich einem ersten Binärwert geladen, während in alle übrigen Neuronalschaltungen, die die Kleinbuchstaben erkennen sollen, ein lokaler Kontextwert gleich einem zweiten Binärwert geladen wird. Im Ergebnis dessen kann man mit dem Ansatz auf Basis des lokalen bzw. Eingangskontextes diejenigen Neuronalschaltungen auswählen, welche bezüglich eines festgelegten Eingangskontextes gelernt haben, und alle anderen blockieren. Jedesmal, wenn ein Eingangsvektor erkannt wurde, wird der im lokalen Norm-/Kontextregister 100 der Neuronalschaltung 11 gespeicherte Kontextwert mit dem im NO/CXT- Hauptregister 17 gespeicherten Kontextwert verglichen. Wenn sie identisch sind, wird die Neuronalschaltung ausgewählt, bei Nichtidentität hingegen blockiert. Dieser Vergleich findet in der Abgleichschaltung 150 statt, deren Aufgabe es ist, ein Signal NS (NS steht für Neuronenauswahl, neuron selection) zu generieren, sodass eine ermittelte Neuronalschaltung entweder ausgewählt wird oder nicht. Zu diesem Zweck empfängt die Abgleichschaltung 150, wie oben erklärt, über den Kontextteil (CXT-BUS) des Busses NO/CXT-BUS das Signal CXT und über den Kontextteil (Cxt-BUS) des No/Cxt-BUS das vom Norm-/ Kontextregister 100 ausgegebene Signal Cxt. Bei Übereinstimmung dieser Signale wird das Signal NS auf "aktiv" gesetzt, um die Kommunikation dieser Neuronalschaltung mit den anderen Neuronalschaltungen des ZISC-Chips 10 zu ermöglichen, was später noch erklärt wird. Das Signal NS wird an bestimmte Blöcke der Neuronalschaltungsarchitektur von Fig. 5 angelegt, um sie, je nachdem, zu aktivieren oder zu deaktivieren. Eine Neuronalschaltung, die während der Erkennungsphase nicht mehr frei ist (d. h. zuvor besetzt worden ist) und durch das Signal NS ausgewählt wurde, wird als "fixiert" (committed) bezeichnet. Mit Hilfe des Kontextansatzes der vorliegenden Erfindung kann man folglich das neurale Netz 11(A) entweder als ein einzelnes neurales Netz oder als eine Anordnung separater Teilbereiche des neuralen Netzes konfigurieren. Im letzteren Fall werden daher verschiedene Gruppen von Neuronalschaltungen innerhalb der neuralen Einheit 11# definiert.
  • Das lokale Normsignal No hingegen legt fest, wie der Abstand zwischen dem im Gewichtsspeicher der Neuronalschaltung 11 gespeicherten Eingangsvektor A und Prototypvektor B errechnet werden soll. Dies wird im Folgenden beschrieben. Ebenfalls gemäß der vorliegenden Erfindung wählt das lokale Normsignal No den gewünschten Rechenalgorithmus über eine entsprechende Schaltlogikimplementierung in der Bewertungsschaltung 200 aus (der ZISC-Chip 10 basiert vollständig auf einer Hardwarelösung). Im vorliegenden Beispiel kann jede Neuronalschaltung 11 des ZISC-Chips 10 entweder den MANHATTAN-Abstand (L1-Norm), d. h. D = sum(abs(Ak-Bk)), oder den QUADRAT-Abstand (Lsup-Norm), d. h. D = max(abs(Ak-Bk)) berechnen, wobei die Variable k jeden Wert von 1 bis n annehmen kann. Der Ausdruck "abs" ist eine gebräuchliche Abkürzung für "Absolutwert". Gemäß der offengelegten Implementierung des ZISC-Chips 10 werden die lokalen Norm- und Kontextdaten mit 1 bzw. 7 Bit codiert. Beispielsweise stehen das höchstwertige Bit (Most Significant Bit, MSB) des No/Cxt-BUS für die lokale Norm und die übrigen Bits für den lokalen Kontext. Während der Initialisierung ist dieses Bit der lokalen Norm No gleich Null, um standardmäßig den MANHATTAN-Abstand zu berechnen. Da der Wert Null reserviert ist, sind andererseits lediglich maximal 127 verschiedene Kontextwerte möglich, obwohl zum Speichern der lokalen Kontextdaten 7 Bits verwendet werden. Im letzteren Fall werden alle Neuronalschaltungen des ZISC-Chips 10 ohne Weiteres ausgewählt. Mit anderen Worten, der oben erwähnte Vergleich zwischen den lokalen und Eingangskontextdaten wird nicht durchgeführt.
  • Der DATA-BUS wird an einen Eingang der Mehrnorm- Abstandsbewertungsschaltung 200 und an einen Block 250 angeschlossen, der üblicherweise eine Schreib-/Lese- Speicherschaltung ist. Gemäß der vorliegenden Implementierung des ZISC-Chips 10 von Fig. 4(A) besteht der Schreib-/ Lesespeicher 250 im Wesentlichen aus einem RAM-Makro der Größe 64 Worte · 8 Bit, der für gewöhnlich als Gewichtsspeicher bezeichnet wird. Ein wesentliches Merkmal der vorliegenden Erfindung besteht darin, dass in jeder Neuronalschaltung 11 eine Schreib-/Lese-Speicherschaltung vorliegt, die zum Speichern der Komponenten des zugehörigen Prototypvektors eingerichtet ist, anstelle einer einzigen Schreib-/Lese-Speicherschaltung, die allen Neuronalschaltungen des neuralen Netzes gemeinsam zur Verfügung steht. Der Bus, der die Schreib-/Lese- Speicherschaltung 250 mit dem anderen Eingang der Bewertungsschaltung 200 verbindet, wird als RAM-BUS bezeichnet. Während der Erkennungsphase werden die Schreib-/Lese- Speicherschaltungen 250 aller Neuronalschaltungen 11-1 bis 11-N von Block 18 über den IAAD/CTL-BUS gleichzeitig parallel und mit derselben Komponentenadresse adressiert. Ein Steuersignal RS wird an die Schreib-/Lese-Speicherschaltung 250 angelegt. Das Signal RS ist ein Speicherungsfreigabesignal, das die Speicherung der Komponenten des Eingangsvektors in der Schreib-/ Lese-Speicherschaltung 250 ausschließlich einer ermittelten freien Neuronalschaltung ermöglicht, beispielsweise der ersten Schaltung in der Kette. Diese erste freie Neuronalschaltung wird im Folgenden als die "lernbereite" Neuronalschaltung bezeichnet. Bei zuvor bereits besetzten Neuronalschaltungen, d. h., deren Schreib-/Lese-Speicherschaltung 250 bereits die Komponenten eines Prototypvektors enthält, ist das von diesen Neuronalschaltungen generierte Signal RS so geartet, dass in diese nicht mehr geschrieben werden kann. Das Laden von Eingangsvektorkomponenten in die Schreib-/Lese-Speicherschaltung 250 der lernbereiten Neuronalschaltung während der Erkennungsphase stellt ein weiteres wesentliches Merkmal der neuartigen Neuronalschaltungsarchitektur gemäß der vorliegenden Erfindung dar. Zum Zwecke der Stromeinsparung werden die Komponenten des Eingangsvektors nicht in die RAM- Speicherschaltung aller freien Neuronalschaltungen geladen. Vorzugsweise berechnet nur die Bewertungsschaltung 200 von besetzten Neuronalschaltungen den Abstand zwischen dem auf dem DATA-BUS vorgelegten Eingangsvektor A und dem in der Schreib-/ Lese-Speicherschaltung 250 gespeicherten Prototypvektor B. Je nach dem Wert des an die Bewertungsschaltung 200 angelegten lokalen Normsignals No wird als Abstand D, wie oben erläutert, entweder der MANHATTAN-Abstand (L1-Norm) oder der QUADRAT- Abstand (Lsup-Norm) berechnet. Es sind jedoch auch andere Berechnungsverfahren denkbar. Zur Erhöhung der Verarbeitungsgeschwindigkeit wird mit der Abstandsberechnung bereits begonnen, sobald die erste Eingangsvektorkomponente der Bewertungsschaltung 200 vorgelegt wird. Wenn alle Komponenten verarbeitet worden sind, generiert die Bewertungsschaltung 200 auf dem 14-Bit-DIST-BUS das endgültige Abstandssignal D. Nach der letzten Komponente eines Eingangsvektors folgt ein Steuersignal LCOMP (Letzte Komponente).
  • Das Abstandssignal D wird über den DIST-BUS an einen ersten Eingang von Block 300 und über den DIST-BUS an den ersten Eingang von Block 350 angelegt. Die Struktur von Block 350 wird in Fig. 7 schematisch dargestellt. Das von Block 350 ausgegebene Signal J wird an den zweiten Eingang von Block 300 angelegt.
  • Wie aus Fig. 7 ersichtlich, besteht der Block 350 im Wesentlichen aus einer WENN-Schaltung, die den Vierwege- Multiplexer 351 und ein 14-Bit-AIF-Register 352 umfasst. Zum Multiplexer 351 verlaufen der ODER-BUS, der DIST-BUS, der MaxIF/MinIF-BUS und über das AlF-Register 352 sein eigener Ausgang, um die über diese ausgegebenen Daten zu speichern. An dieser Stelle der Beschreibung genügt die Erklärung, dass der OR-BUS ein Bus der Breite 14 Bit ist, der Daten oder Signale vom Abstandstyp (und insbesondere den Minimalabstand Dmin) oder vom Kategorietyp transportiert. Während der Lernphase wird über den MaxIF/MinIF-BUS in das AlF-Register 352 der Neuronalschaltung 11 ein Wert geladen, dessen Maximum durch MaxIF gegeben ist. Ab diesem Moment unterliegt sein Inhalt während der nachfolgenden Lernphasen Änderungen, wann immer diese erforderlich sind. Der AlF-Wert einer fixierten Neuronalschaltung kann am Ende des Reduktionsprozesses entweder gleich dem von der Neuronalschaltung 11 errechneten Abstand D, gleich MinIF (wenn D < MinIF ist) oder gleich MaxIF (wenn D > MaxIF ist) sein. Der in die gerade eben besetzte erste freie Neuronalschaltung geladene AlF-Wert ist entweder Dmin (der Abstand zwischen dem Eingangsvektor und der am nächsten gelegenen Neuronalschaltung), MinIF oder MaxIF. Im AlF-Register 352 ist also AlF gespeichert, d. h. ein Wert zwischen den Grenzen MaxIF und MinIF (der jeweiligen oberen und unteren Grenze). Der Wert AlF kann nur während der Lernphase, nicht aber während der Erkennungsphase geändert werden. Sobald dieser untere Grenzwert erreicht wird (AlF = MinIF), gilt die entsprechende Neuronalschaltung 11 als entartet. Über den 14-Bit-J-BUS wird von der WENN-Schaltung 350 das Signal J ausgegeben. Die Eigenschaften dieses Signals J werden durch Anlegen entsprechender Steuersignale an den Multiplexer 351 festgelegt.
  • Block 300 in Fig. 5 besteht im Wesentlichen aus einer neuartigen Vergleichsschaltung, die den Vergleich zwischen den Signalen D und J vornimmt und zwei Signale LT (niedriger als, Lower Than) und LTE (niedriger als oder gleich, Lower Than or Equal) generiert, deren logischer Wert vom Ergebnis dieses Vergleichs abhängt. Je nach Betriebsmodus müssen verschiedene Fälle betrachtet werden. Die nun folgende Beschreibung bezieht sich auf den normalen Untermodus (NM) des Erkennungsmodus (RECOGNITION-Modus). Die Vergleichsschaltung 300 hat die Aufgabe, den Vergleich zwischen dem Abstand D und dem Inhalt des AlF-Registers 352 (J = AIF) durchzuführen. Fällt der für einen ermittelten Eingangsvektor errechnete Abstand D in das aktuelle Einflussfeld AlF dieser Neuronalschaltung, d. h., wenn D < AlF, dann ist der Eingangsvektor erkannt, die Neuronalschaltung wird ausgelöst, und abschließend wird das von der Vergleichsschaltung 300 generierte Signal LT auf "aktiv" gesetzt (LT = 1). Fällt hingegen der Eingangsvektor nicht genau in AlF, wenn also D > = AlF ist, dann ist der Eingangsvektor nicht erkannt, die Neuronalschaltung wird nicht aktiviert und das Signal LT wird dann auf "inaktiv" gesetzt (LT = 0). Im Erkennungsmodus wird das Signal LTE nicht genutzt. Während des Reduktionsprozesses in der Lernphase hingegen führt die Vergleichsschaltung 300 den Vergleich zwischen dem errechneten Abstand D und dem Wert MinIF durch (J = MinIF). Wenn der Abstand D kleiner oder gleich dem Wert MinIF ist, d. h. wenn D < = MinIF, so wird das von der Vergleichsschaltung 300 ausgegebene Signal LTE auf "aktiv" gesetzt (LTE = 1). In diesem Fall kommt dem Signal LTE die Aufgabe zu, durch Setzen eines bestimmten Registers (Register DEG) von Block 400 einen Entartungszustand zu kennzeichnen, wie im Folgenden erläutert wird. Ist hingegen D > MinIF, so wird das Signal LTE auf "inaktiv" gesetzt (LTE = 0). Das Signal LT wird im Lernmodus nicht genutzt. Daraus folgt, dass das Signal LT für eine fixierte Neuronalschaltung 11 in der Erkennungsphase dem lokalen Auslöseergebnissignal F und das Signal LTE in der Lernphase dem Entartungszustand der Neuronalschaltung zugeordnet wird.
  • Die von der Vergleichsschaltung 300 generierten Signale LT und LTE werden an Block 400 angelegt. Darüber hinaus ist der Block 400 auch mit dem OR-BUS, dem CAT-BUS und dem Ausgang von Block 450 verbunden. Letzterer besteht im Wesentlichen aus einem herkömmlichen 14-Bit-Register, um die auf dem CAT-BUS eintreffenden Eingangskategoriedaten CAT als die lokalen Kategoriedaten zur weiteren Verarbeitung zu speichern. Bei der Initialisierung ist der Inhalt des lokalen Kategorieregisters 450 gleich Null. Der mit dem Ausgang des Kategorieregisters 450 verbundene Bus wird als der Cat-BUS bezeichnet. Dieser transportiert die lokalen Kategoriedaten oder Kategoriesignal C. Im Ergebnis dessen können sich die auf dem CAT-BUS eintreffenden Eingangskategoriedaten CAT von den im Kategorieregister 450 gespeicherten lokalen Kategoriedaten C unterscheiden. Wenn sich eine Unterscheidung nicht lohnt, werden sie beide im Folgenden einfach mit dem einen Begriff Kategoriedaten bezeichnet. Während der Lernphase wird ein bestimmter Wert der Eingangskategorie in das Kategorieregister 450 geladen, sobald das neurale Netz 11(A) festgelegt hat, die Neuronalschaltung 11 zu besetzen, weil keine andere der Neuronalschaltungen des neuralen Netzes den Eingangsvektor erkannt hat. Block 400 besteht aus einer neuartigen Identifizierungsschaltung, die in erster Linie feststellen soll, ob der Eingangsvektor während der Erkennungsphase von der Neuronalschaltung 11 erkannt worden ist. Die Identifizierungsschaltung 400 generiert lokal auf der Ebene der Neuronalschaltung 11 drei lokale Ergebnissignale F, DEGOUT und UNC/FIRE.OK sowie ein lokales Zustandssignal DEG. Diese lokalen Ergebnissignale sind für das Generieren von globalen Ergebnissignalen von Bedeutung, welche für die Antwort des neuralen Netzes 11(A) als Ganzes auf das Vorlegen des Eingangsvektors repräsentativ sind.
  • Das lokale Auslöseergebnissignal F wird auf "aktiv" (F = 1) gesetzt, wenn die Neuronalschaltung 11 ausgelöst hat, d. h. den Eingangsvektor erkannt hat. Das Signal F wird mit dem Zustandssignal DEG kombiniert (welches intern als Ergebnis der vorherigen Verarbeitung des Signals LTE in dem zugeordneten Register DEG der Identifizierungsschaltung 400 zur Verfügung steht), um das Signal DEGOUT zu generieren, sodass DEGOUT = DEG AND F. Das Ergebnissignal DEGOUT für die entartete Schaltung wird deshalb auf "aktiv" gesetzt (DEGOUT = 1), wenn eine entartete Neuronalschaltung ausgelöst hat. Die Signale F und DEGOUT stellen die eigentliche lokale Antwort einer einzelnen Neuronalschaltung 11 darauf, dass dem neuralen Netz 11(A) ein Eingangsvektor vorgelegt wurde, dar. Außerdem übt das Signal F auch die Funktion eines Gate-Signals aus, wie später genauer erklärt werden soll. Es verhindert insbesondere, dass die fixierten Neuronalschaltungen, die nicht ausgelöst haben, mit den anderen Neuronalschaltungen, die ausgelöst haben, über die oben erwähnte OR-Schaltung 12 und den gemeinsamen auf dem Chip befindlichen Kommunikationsbus COM*-BUS kommunizieren können. Und schließlich generiert die Identifizierungsschaltung 400 das Signal UNC/FIRE.OK, dessen Bedeutung später erläutert wird. Das Signal UNC/FIRE.OK ist von anderer Beschaffenheit, da sein Wert die Antwort aller fixierten Neuronalschaltungen (über den OR- BUS) berücksichtigt, die ausgelöst haben (einschließlich der betrachteten Neuronalschaltung 11). Die lokalen (oder neuronalen) Ergebnissignale F, DEGOUT und UNC/FIRE.OK bilden gemeinsam das Gesamtsignal NR (NR steht für Neuronales Ergebnis, Neuron Result), welches auf dem 3-Bit-NR-BUS zur Verfügung steht.
  • Ein weiteres Hauptmerkmal der Neuronalschaltungsarchitektur von Fig. 5 liegt im neuartigen Aufbau von Block 500, der in jeder Neuronalschaltung 11 bereitgestellt und in Fig. 8 schematisch veranschaulicht wird.
  • Wie aus Fig. 8 ersichtlich, besteht der Block 500 schematisch aus einer Dmin-Bestimmungsschaltung, welche wiederum einen Dreiwege-Multiplexer 501, die neuartige Such-/ Sortierschaltung 502 und die Logikschaltung 503 umfasst. Der J-BUS, der No/Cxt- BUS und der Cat-BUS sind als Eingangsbusse an den Multiplexer 501 angeschlossen. Der Ausgang des Multiplexers 501 ist mit dem ersten Eingang der Such-/Sortierschaltung 502 verbunden, zu deren anderem Eingang der OR-BUS führt. Die Schaltung 500 generiert auf dem 14-Bit-NOUT-BUS ein lokales Ausgangssignal NOUT (NOUT steht für neuronaler Ausgang, Neuron OUTput). Die Logikschaltung 503 empfängt drei Eingangssignale F, RS und CO und generiert ein Auswahlsignal SELECT, das für den Betrieb der Such-/Sortierschaltung 502 von Nutzen ist. Eigenschaften und Aufgabe der Steuersignale RS und CO werden später genauer erklärt. Das lokale Abstandssignal D (über den J-BUS) und das lokale Kategoriesignal C (über den Cat-BUS) können in Abhängigkeit von den an den Multiplexer 501 als Standard angelegten Steuersignalen direkt an den Eingang der Such-/ Sortierschaltung 502 angelegt werden. Die Signale können entweder um die Such-/ Sortierschaltung 502 herum oder durch sie hindurchgeleitet werden, sodass speziell diese Signale auf dem NOUT-BUS zur Verfügung gestellt werden können. In der vorliegenden Implementierung des ZISC-Chips 10 wird die Such-/ Sortierschaltung 502 umgangen, wenn die 14 Bits des OR-BUS gleich Null gesetzt worden sind. Die Such-/Sortierschaltung 502 der Neuronalschaltung 11 ist so gestaltet, dass sie über das interneuronale Kommunikationssystem eng mit den entsprechenden Such-/ Sortierschaltungen der anderen im ZISC-Chip 10 angeordneten Neuronalschaltungen zusammenarbeiten kann, um eine fiktive Gesamtschaltung zu bilden (die später genauer erklärt wird). Eine wesentliche Aufgabe dieser Gesamtschaltung besteht darin, für diejenigen der Neuronalschaltungen 11-1 bis 11-N, die fixiert sind und ausgelöst haben, aus allen errechneten Abständen den Minimalabstand Dmin herauszufinden und dann die übrigen Abstände in steigender Reihenfolge zu sortieren.
  • Der Block 600 stellt ein weiteres neuartiges Merkmal der Neuronalschaltung 11 der vorliegenden Erfindung dar. Der Block 600 besteht im Wesentlichen aus einer Daisy-Chain-Schaltung, die mit gleichartigen Daisy-Chain-Schaltungen der zwei benachbarten Neuronalschaltungen seriell verknüpft werden kann, sodass, wie oben erwähnt, alle Neuronalschaltungen des ZISC-Chips 10 von Fig. 4(A) eine kettenförmige Struktur bilden. Zu diesem Zweck ist er mit zweckbestimmten Eingangs- und Ausgangsterminals DCI und DCO ausgestattet. Die Daisy-Chain-Schaltung 600 ist um ein 1-Bit Register (DAISY REG) herum angeordnet, welches einen ersten Binärwert (z. B. eine Null) speichert, wenn die Neuronalschaltung 11 frei ist, und einen zweiten Binärwert (z. B. eine Eins) speichert, wenn die Neuronalschaltung 11 besetzt ist. Bei der Initialisierung ist der Inhalt des 1-Bit- Registers gleich Null. Als Folge der zweckbestimmten Struktur der Daisy-Chain-Schaltung 600 wird die freie, lernbereite Neuronalschaltung leicht identifiziert, da sie die erste Schaltung in der Kette der Neuronalschaltungen 11-1 bis 11-N ist, deren an den Terminals DCI und DCO anliegenden Signale DCI bzw. DCO zueinander komplementär sind (z. B. Signal DCI = 1 und Signal DCO = 0). Während der Lernphase der lernbereiten Neuronalschaltung wird ein Signal ST (ST steht für Speichern freigeben, Storage enable) aktiviert, um am Ende des Besetzungsprozesses eine "Eins" in das 1-Bit-Register der Daisy- Chain-Schaltung 600 zu laden. Dann generiert die Daisy-Chain- Schaltung 600 an ihrem Terminal DCO ein 1-Bit-Signal DCO = 1, das wiederum als Eingangssignal an das Eingangsterminal DCI der Daisy-Chain-Schaltung der folgenden Neuronalschaltung angelegt wird. Letztere wird so zur neuen lernbereiten Neuronalschaltung. Sobald das Signal ST aktiviert worden ist, ist der Besetzungsprozess der Neuronalschaltung 11 eingeleitet. Wenn alle Neuronalschaltungen 11-1 bis 11-N des neuralen Netzes 11(A) mit Sicherheit besetzt sind, wird in ihre jeweiligen 1-Bit- DAISY-Register eine Eins eingegeben, wodurch das Signal DCO-N gleich 1 ist. Das Signal DCO-N kann damit als Signal FULL (voll) verwendet werden. Wenn es auf "aktiv" gesetzt ist, so bedeutet dies, dass im ZISC-Chip 10 keine freie Neuronalschaltung 11 mehr vorhanden ist. Und schließlich generiert die Daisy-Chain- Schaltung 600 auch Steuersignale CO und RS, die für die Arbeit der Neuronalschaltung 11 von Bedeutung sind.
  • Die Identifizierungsschaltung 400 und die Dmin- Bestimmungsschaltung 500 werden, ebenso wie die meisten anderen Blöcke von Fig. 5, durch verschiedene Steuersignale gesteuert. Einige Steuersignale unterdrücken, je nachdem, das Senden eines Signals auf dem NR-BUS und/oder auf dem NOUT-BUS, weil die Signale NR und NOUT nur für diejenigen Neuronalschaltungen ausgegeben werden sollen, die sowohl fixiert sind als auch ausgelöst haben. Zu diesem Zweck wird durch UND-Verknüpfung der Signale DCO und NS ein Steuersignal CO generiert. Das Signal CO soll somit anhand seines logischen Wertes angeben, ob die Neuronalschaltung fixiert ist oder nicht. Das Signal CO wird an die Identifizierungsschaltung 400 und an die Dmin- Bestimmungsschaltung 500 angelegt und nur für eine fixierte Neuronalschaltung auf "aktiv" (CO = 1) gesetzt. Das von der Daisy-Chain-Schaltung 600 generierte Signal CO und das von der Identifizierungsschaltung 400 generierte Signal F werden als Steuersignale an die Dmin-Bestimmungsschaltung 500 angelegt. Durch diese Kombination der Signale F und CO ist es nun möglich, dass nur die fixierten Neuronalschaltungen, die ausgelöst haben, auf ihrem jeweiligen NR-BUS und NOUT-BUS die zusammengesetzten lokalen Ergebnis- und Ausgangssignale NR und NOUT generieren können. Ebenso wird ein weiteres, durch eine exklusive ODER- Funktion aus den Signalen DCI und DCO abgeleitetes Signal RS (RS steht für Bereit zum Speichern, Ready to Store) in der Daisy- Chain-Schaltung 600 erzeugt. Mithin ist im neuralen Netz 11(A) die erste freie lernbereite Neuronalschaltung die Einzige, die die logische Beziehung Signal DCI = DCO erfüllt. Die Aufgabe des Signals RS besteht somit darin, die Operation SCHREIBEN in der Schreib-/Lese-Speicherschaltung 250 zuzulassen bzw. nicht zuzulassen. Während jeder Erkennungsphase werden die Komponenten des Eingangsvektors nur in der Schreib-/Lese-Speicherschaltung 250 der lernbereiten Neuronalschaltung gespeichert. Wenn das neurale Netz 11(A) festlegt, dass der Eingangsvektor als neuer Prototypvektor in der lernbereiten Neuronalschaltung gespeichert werden soll, dann wird das Signal RS der besetzten Neuronalschaltungen auf den entsprechenden logischen Pegel umgeschaltet, damit sie nicht weiter beschrieben werden können. Das Signal RS wird während eines bestimmten Betriebsmodus (Modus SICHERN, SAVE) des ZISC-Chips 10 auch an die Dmin- Bestimmungsschaltung 500 angelegt, wie später beschrieben wird.
  • Im Ergebnis der in Fig. 5 beschriebenen Architektur generiert jede fixierte Neuronalschaltung 11, die während der Erkennungsphase ausgelöst hat, eine lokale Antwort auf das Vorlegen eines Eingangsvektors. Diese lokale (oder neuronale) Antwort setzt sich im Wesentlichen aus zwei Daten- oder Signaltypen zusammen: Erstens aus den von der Identifizierungsschaltung 400 generierten lokalen Ergebnissignalen F, DEGOUT und UNC/FIRE.OK, die auf dem 3-Bit- NR-BUS ausgegeben werden, und zweitens aus dem von der Dmin- Bestimmungsschaltung 500 auf dem 14-Bit-NOUT-BUS generierten lokalen Ausgangssignal NOUT. Wenn die Signale durch die Such-/ Sortierschaltung 502 der Dmin-Bestimmungsschaltung 500 hindurchgeleitet werden, ist das Signal NOUT entweder der von der Abstandsbewertungsschaltung 200 berechnete lokale Abstand D oder die im Register 450 gespeicherte lokale Kategorie C. Werden die Signale hingegen nicht durch die Such-/Sortierschaltung 502 hindurchgeleitet, erscheint am Ende des Prozesses zur Ermittlung des Minimalabstandes der Minimalabstand Dmin auf dem NOUT-BUS der Neuronalschaltung, in der er gespeichert wird, während alle anderen Neuronalschaltungen ausgeschlossen werden. Das heißt, dass die Signale NOUT dieser Neuronalschaltungen neutrale Werte besitzen. Da in der vorliegenden Implementierung des ZISC-Chips 10 von Fig. 4(A) eine OR-Schaltung 12 verwendet wird, wird dieser neutrale Wert durch ein Signal NOUT gegeben, dessen sämtliche Bits gleich Null sind. Allerdings ist anzumerken, dass mehrere Neuronalschaltungen denselben Minimalabstand Dmin enthalten können.
  • In Fig. 4(A) werden das von allen Neuronalschaltungen 11-1 bis 11-N des neuralen Netzes 11(A) ausgegebene zusammengesetzte lokale Ergebnissignal NR und das lokale Ausgangssignal NOUT an die ODER-Schaltung 12 über deren NR-1-BU5 bis NR-N-BUS bzw. NOUT-1-BU5 bis NOUT-N-BUS angelegt. Tatsächlich sind nur die lokalen Ergebnis- und Ausgangssignale derjenigen Neuronalschaltungen für die weitere Verarbeitung in der ODER- Schaltung 12 von Bedeutung, die sowohl fixiert sind als auch ausgelöst haben (andere sind, wie oben erläutert, neutral).
  • Die ODER-Schaltung 12 in der offengelegten Implementierung des ZISC-Chips 10 besteht im Wesentlichen aus vier zweckbestimmten ODER-Teilschaltungen. Zunächst führen drei zweckbestimmte ODER- Teilschaltungen eine ODER-Funktion zwischen jedem der neuronalen Ergebnissignale durch, um auf einem R*-BUS genannten 3-Bit-Bus drei entsprechende globale Ergebnissignale, d. h. F*, DEGOUT* und UNC/FIRE.OK*, zu generieren. Bezeichnet man das lokale "Auslöse"-Ergebnissignal der Neuronalschaltung 11-i (i = 1 bis N) des neuralen Netzes 11(A) mit Fi, dann führt die ODER- Verknüpfung aller Signale Fi zum globalen "Auslöse"- Ergebnissignal F* entsprechend F* = Fi ODER ... ODER FN. Das lokale "Auslöse-"Ergebnissignal Fi ist gleich Eins, wenn die Neuronalschaltung 11-i aktiviert wurde, und gleich Null, wenn sie nicht aktiviert wurde. Aus diesem Signal F* kann direkt ein weiteres wichtiges globales Ergebnissignal, NID*, abgeleitet werden. Es wird durch die logische Beziehung NID* = definiert. Das Signal F* stellt eine erste globale Antwort des neuralen Netzes 11(A) auf das Vorlegen eines Eingangsvektors A dar. Das Signal F* wird demnach auf "aktiv" (F* = 1) gesetzt, wenn das neurale Netz 11(A) den Eingangsvektor erkannt hat, d. h. wenn mindestens eine Neuronalschaltung 11 ausgelöst hat. Die gleichen Überlegungen gelten für die Erzeugung der anderen globalen Ergebnissignale DEGOUT* (DEGOUT* = DEGOUT1 ODER ... ODER DEGOUTN) und UNC/FIRE.OK* (UNC/FIRE.OK* = UNC/FIRE.OK1 ODER ... ODER UNC/FIRE.OKN). Das Signal DEGOUT* wird also dann auf "aktiv" gesetzt (DEGOUT* = 1), wenn mindestens eine entartete fixierte Neuronalschaltung des neuralen Netzes 11(A) ausgelöst hat. Für eine Neuronalschaltung, die weder entartet ist noch ausgelöst hat, wird ihr Signal DEGOUT auf "inaktiv" (DEGOUT = 0) gesetzt, wodurch es keinen Einfluss auf das entsprechende globale "Entartungs"-Ergebnissignal DEGOUT* besitzt. Die Eigenschaften des globalen Signals UNC/FIRE.OK* werden später erklärt.
  • In derselben Weise führt eine vierte zweckbestimmte ODER- Teilschaltung eine ODER-Funktion zwischen allen lokalen Ausgangssignalen NOUT, die von den Neuronalschaltungen 11-1 bis 11-N generiert werden, sowie mit jedem ihrer Bits j (j = 1 bis p = 14) durch. Das Signal NOUT für die Neuronalschaltung 11-i ist ein Binärwort NOUT-i, das in der Form NOUT-i = NOUT1-i ... NOUTj-i ... NOUTp-i geschrieben werden kann. Das Signal wiederum, das von dieser vierten ODER-Teilschaltung ausgegeben wird, wird als das ebenfalls aus p = 14 Bits bestehende Signal OUT* bezeichnet, welches auf dem OUT*-BUS zur Verfügung steht. Das j-te Bit des Signals OUT*j kann demzufolge durch den Ausdruck OUT*j = NOUTj-1 ODER ... ODER NOUTj-N formuliert werden. Der 3-Bit-R*-BUS und der 14-Bit-OUT*-BUS werden zusammengefasst, um auf dem Chip einen gemeinsamen Kommunikationsbus zu bilden, der als der 17-Bit-COM*-BUS bezeichnet wird. Das Signal OUT* wird direkt über einen Rückkopplungsbus, OR-BUS, als ein Rückkopplungssignal an alle Neuronalschaltungen 11-1 bis 11-N von Fig. 4(A) angelegt. Der OR-BUS leitet sich somit direkt von dem Teil des COM*-BUS ab, der das Signal OUT* transportiert. Das Signal OUT* braucht weder durch den Mikrocontroller noch durch den Benutzer in irgend einer Weise verarbeitet zu werden. Es ist wichtig zu bemerken, dass das Signal OR direkt dem Signal OUT* in der offengelegten Implementierung des ZISC-Chips 10 von Fig. 4(A) entspricht. Der OR-BUS, dessen Aufbau sich in der Technik neuraler Chips als neuartig erweist, stellt daher einen wesentlichen Bestandteil des neuartigen interneuronalen Kommunikationssystems des ZISC- Chips 10 von Fig. 4(A) dar. Dieses interneuronale Kommunikationssystem stellt ein sehr effizientes System zur Verbindung zwischen allen Neuronalschaltungen 11-1 bis 11-N des ZISC-Chips 10 dar und ermöglicht einen vollständigen Datenaustausch zwischen ihnen, der vom Mikrocontroller oder vom Benutzer völlig unabhängig ist.
  • Eine vorrangige Rolle der vierten ODER-Teilschaltung besteht darin, eine ODER-Funktion mit allen lokalen Kategorien auszuführen, die im Kategorieregister 450 jeder fixierten Neuronalschaltung gespeichert sind, welche während der Erkennungsphase ausgelöst hat. Wie oben erwähnt, dürfen die Kategorie- und Abstandsdaten die Such-/Sortierschaltung 502 passieren, sodass diese Daten direkt als das lokale Ausgangssignal an den NOUT-BUS ihrer jeweiligen Neuronalschaltungen angelegt werden. Die Ausführung der ODER- Verknüpfung aller lokalen Kategoriewerte, die in jedem Kategorieregister 450 dieser Neuronalschaltungen in der ODER- Schaltung 12 gespeichert sind, erzeugt ein globales Kategoriesignal C* der Form C* = C1 ODER ... ODER CN. Dieses globale Kategoriesignal C* wird über den OR-BUS insbesondere an die Identifizierungsschaltung 400 jeder dieser Neuronalschaltungen angelegt. Für diejenigen Neuronalschaltungen, die nicht fixiert sind, wird ihr lokales Kategoriesignal C auf "inaktiv", d. h. gleich Null gesetzt, sodass sie nicht in die von der vierten ODER-Teilschaltung der ODER-Schaltung 12 durchgeführte ODER-Funktion eingreifen. In der Identifizierungsschaltung 400 wird mit der globalen Kategorie C* und der lokalen Kategorie C, welche im Kategorieregister 450 der Neuronalschaltung 11 gespeichert sind, eine XOR-Funktion ausgeführt. Sollten diese Werte nicht übereinstimmen, so bedeutet dies, dass mindestens zwei fixierte Neuronalschaltungen des neuralen Netzes 11(A) mit unterschiedlichen Kategorien ausgelöst haben. In diesem Fall wird in der Identifizierungsschaltung 400 das lokale Ergebnissignal UNC/FIRE.OK von mindestens einer ermittelten Neuronalschaltung auf "aktiv" (UNC/FIRE.OK = 1) gesetzt. Wenn die beiden Werte hingegen übereinstimmen, bedeutet dies, dass lediglich eine Kategorie beteiligt ist. In diesem letzteren Fall wird das lokale Ergebnissignal UNC/FIRE.OK aller fixierten Neuronalschaltungen auf "inaktiv" (UNC/FIRE.OK = 0) gesetzt, unabhängig davon, ob sie ausgelöst haben oder nicht. Alle lokalen Ergebnissignale UNC/FIRE.OK werden in der vierten zweckbestimmten ODER-Teilschaltung einer ODER-Verknüpfung unterzogen, um das globale Ergebnissignal UNC/FIRE.OK* zu erzeugen. Wenn mindestens ein Signal UNC/FIRE.OK auf "1" gesetzt wurde, bewirkt dies wiederum, dass das globale Ergebnissignal UNC/FIRE.OK* auf "1" gesetzt wird. Das Signal UNC/FIRE.OK* wird also auf "aktiv" (UNC/FIRE.OK* = 1) gesetzt, wenn ein Eingangsvektor von mindestens zwei Neuronalschaltungen des ZISC- Chips 10 erkannt wurde, welchen unterschiedliche Kategorien zugeordnet sind. Dies bedeutet, dass der Eingangsvektor vom neuralen Netz 11(A) zwar erkannt worden ist, seine Kategorie jedoch nicht mit Sicherheit ermittelt werden kann.
  • Die für die Identifizierung eines Eingangsvektors durch das neurale Netz 11(A) ausschlaggebende Information wird durch das globale Ergebnissignal ID* geliefert, welches gemäß der logischen Beziehung ID* = F* UND aus den Signalen F* und UNC/FIRE.OK* wiedererzeugt wird. Das Signal ID* wird mithin auf "aktiv" gesetzt, wenn ein Eingangsvektor von mindestens einer Neuronalschaltung (F* = 1) sowie zweifelsfrei (UNC/FIRE.OK* = 0) vom neuralen Netz 11(A) erkannt wurde. Das Signal UNC/FIRE.OK wird deshalb im Folgenden als das lokale Eindeutigkeits-Ergebnissignal bezeichnet.
  • Außerdem spielt die vierte zweckbestimmte ODER-Teilschaltung eine entscheidende Rolle bei der Suche nach dem Minimalabstand Dmin unter allen berechneten Abständen D1 bis DN (bzw. der Minimalkategorie Cmin). Die Such-/Sortierschaltung 502 (siehe Fig. 8) der Neuronalschaltung 11 ist sogar so aufgebaut, dass sie über die vierte zweckbestimmte ODER-Teilschaltung, den OUT*- BUS und den OR-BUS eng mit den anderen entsprechenden Such-/ Sortierschaltungen zusammenarbeiten kann, um den Minimalabstand Dmin zu ermitteln. Letzterer Wert erscheint dann am Ende des sogenannten Dmin-Bestimmungsprozesses als das Signal OUT* auf dem OUT*-BUS. Die oben erwähnte fiktive Gesamtschaltung ist tatsächlich so konstruiert, dass sich die Such-/ Sortierschaltungen während des Dmin-Bestimmungsprozesses so lange selbst ausschließen, bis nur noch diejenige(n) Such-/ Sortierschaltung(en) der neuronale(n) Schaltung(en) aktiv bleiben, die den Minimalabstand Dmin enthalten. Im Endergebnis darf nur diejenige Neuronalschaltung, in der der Minimalabstand Dmin gespeichert ist, diesen über ihren NOUT-BUS an die ODER- Schaltung 12 ausgeben. Der Wert des Minimalabstands Dmin (der in der ODER-Schaltung 12 nicht verändert wird) steht schließlich über den OUT*-BUS-Teil des COM*-BUS auf dem OR-BUS zur Verfügung. Während des Dmin-Bestimmungsprozesses sind die von den Neuronalschaltungen auf ihrem jeweiligen NOUT-BUS ausgegebenen lokalen Ausgangssignale NOUT bedeutungslos. Ähnliche Überlegungen gelten für die Ermittlung der Minimalkategorie Cmin aus allen lokalen Kategorien C1 bis CN, die im jeweiligen lokalen Kategorieregister 450 jeder Neuronalschaltung 11-1 bis 11-N gespeichert sind. Der Minimalabstand Dmin kann während des Besetzungsprozesses der Lernphase über den OR-BUS als der Wert AlF dieser Neuronalschaltung in das AlF-Register 352 der lernbereiten Neuronalschaltung geladen werden.
  • Die oben erwähnten globalen Ergebnis- und Ausgangssignale werden zum Speichern vorzugsweise an Block 18 angelegt. Die Aufgaben von Block 18 werden im Folgenden unter Bezug auf Fig. 6 genauer beschrieben. In Fig. 6 ist Block 18 über den SEL/CTL-BUS und den INDATA-BUS mit einem Block 22 verbunden, der den Mikrocontroller oder den Benutzer (im Folgenden als Mikrocontroller/Benutzer 22 bezeichnet) darstellen soll. Der SEL/CTL-BUS setzt sich aus einem Auswahlbus SEL-BUS und einem Steuerbus CTL-BUS zusammen. Der SEL-BUS transportiert insbesondere die Signale für die richtige Auswahl der verschiedenen Register des ZISC-Chips 10. Der CTL-BUS befördert Standardsteuer- und -taktsignale, wie STROBE, CHIP SELECT, CLOCK, ... und dergleichen mehr vom Mikrocontroller/Benutzer 22. Die Funktion der Decodierlogikschaltung 181 besteht darin, Auswahlsignale zu generieren, um den Zugriff auf bestimmte Daten in dem zutreffenden Register zu ermöglichen. In Abhängigkeit vom Wert dieser auf dem SEL/CTL-BUS erscheinenenden Auswahlsignale und Steuersignale generiert die Steuerlogikschaltung 182 alle Signale, die für das richtige Funktionieren des ZISC-Chips 10 intern erforderlich sind, einschließlich der Adresssignale, die für den Zugriff auf die Schreib-/Lese-Speicherschaltung 250 erforderlich sind, in der die Komponenten des Prototypvektors gespeichert sind. Die Adress- und Steuersignale werden von der Steuerlogikschaltung 182 über einen Bus IADD/CTL-BUS ausgegeben. Die Zustandsschaltung 183 steuert, insbesondere während der wesentlichen Lern- und Erkennungsphasen, die Reihenfolge der Aktivitäten des ZISC-Chips 10. Vorzugsweise wird eine Zustands-/ Steuerschaltung 184 implementiert, da sich diese für den Datenaustausch mit dem Mikrocontroller/Benutzer 22 als wichtig erweisen kann. Sie setzt sich im Wesentlichen aus einem Register 184.1 und einem Zweiwege-UND-Gatter 184.2 zusammen, dessen Rolle später genauer erklärt wird. Das Register 184.1 kann die globalen Ergebnis- und Ausgangssignale, die vom neuralen Netz 11(A) generiert werden, in ihrer Gesamtheit speichern, sowie auch Steuersignale, die in der Steuerlogikschaltung 182 verarbeitet werden. Die globalen Ergebnissignale F* (oder NID*), DEGOUT*, UNC/FIRE.OK* und ID* können in das Register 184.1 von Block 18 des ZISC-Chips 10 geladen werden. Insbesondere wird das Signal ID* im UND-Gatter 184.2 aus den Signalen F* und UNC/FIRE.OK* wiedergebildet und dann an einer bestimmten Stelle im Register 184.1 gespeichert. Auf diese Stelle muss der Mikrocontroller/Benutzer 22 leicht zugreifen können, da sie die Schlüsselinformationen darüber enthält, ob der Eingangsvektor von dem im ZISC-Chip 10 angeordneten neuralen Netz 11(A) schließlich richtig identifiziert worden ist. Insbesondere kann diese spezielle Stelle vorteilhaft über eine Verbindungsleitung mit einer außerhalb des ZISC-Chips 10 befindlichen Leuchtdiode (Light Emitting Diode, LED) verbunden werden, um den Benutzer sofort und visuell zu informieren. Diese globalen Ergebnis- und Ausgangssignale werden auf dem M-BUS transportiert. Außerdem kann das Register 184.1 auch Installationsparameter speichern, d. h. Daten, die sich auf die Betriebsmodi des neuralen Netzes 11(A) für die bidirektionale Kommunikation mit dem Mikrocontroller/Benutzer 22 über den INDATA-BUS beziehen. Insbesondere kann der Mikrocontroller/Benutzer 22 während einer Schreib- oder Leseoperation (WRITE, READ) auf dessen Inhalt zugreifen. Alle Schaltungen von Block 18 gelten für den Fachmann als herkömmlich. Der ZISC-Chip 10 von Fig. 4(A) ist jedoch vorzugsweise mit einer Schnittstellenschaltung in der Logikschaltung 182 ausgestattet, die zur Verknüpfung der verschiedenen Ressourcen des ZISC-Chips 10, einschließlich der Register, mit den gebräuchlichsten Standardbussen wie beispielsweise PCI, ISA und dergleichen sowie mit ihren jeweiligen Protokollen geeignet ist.
  • Der gemeinsame Kommunikationsbus COM*-BUS auf dem Chip wird, wie oben unter Bezug auf Fig. 4(A) beschrieben wurde, durch Zusammenfassen von R*-BUS und OUT*-BUS gebildet. Demgemäß transportiert der COM*-BUS die gesamte Antwort des ZISC-Chips 10 auf das Vorlegen eines Eingangsvektors. Das Signal ODER ist dem Signal OUT* identisch. Der ZISC-Chip 10 von Fig. 4(A) enthält demgemäß das neurale Netz 11(A), das sich aus der Neuraleinheit 11(#), der ODER-Schaltung 12, dem COM*-BUS und dem OR-BUS zusammensetzt (der OR-BUS kann als ein vom COM*-BUS abgeleiteter Teil angesehen werden). Bei Anwendungen, die keinen externen Ausgangsbus erfordern, ermöglicht es die oben beschriebene Architektur einem einzelnen ZISC-Chip 10 von Fig. 4(A), im Standalone-Modus eigenständig zu operieren. Diese beschriebene Architektur kann jedoch, ebenfalls gemäß der vorliegenden Erfindung, leicht so modifiziert werden, dass der ZISC-Chip 10 von Fig. 4(A) mit einem derartigen externen Ausgangsbus versehen ist, um in einer Mehrchipumgebung zu arbeiten; dies wird im Folgenden unter Bezug auf die immer noch mit 10 gekennzeichnete Architekturvariante von Fig. 4(B) beschrieben. Ebenso wird auch das im ZISC-Chip 10 von Fig. 4(B) enthaltene neurale Netz mit 11(A) bezeichnet. Das Ziel besteht darin, ein neurales Netz einer beliebigen gewünschten Neuralkapazität zu schaffen, indem so viele neurale Netze 11(A) kombiniert werden, wie die Anwendung erfordert. Dies wird erreicht, indem die entsprechende Anzahl ZISC-Chips 10 zusammengefügt wird, die für den Betrieb in einer Mehrchipumgebung angepasst wurden.
  • Wenn eine Vielzahl von ZISC-Chips 10 zusammengefügt werden soll, werden zu diesem Zweck die von der Vielzahl der ZISC-Chips 10 generierten globalen zusammengesetzten Ergebnis- und Ausgangssignale R* und OUT* auf einem anderen, im interneuralen Kommunikationssystem enthaltenen, gemeinsamen Kommunikationsbus einer ODER-Verknüpfung unterzogen. Dieser gemeinsame Kommunikationsbus wird nun zwangsläufig außerhalb der ZISC-Chips 10 untergebracht und im Folgenden als der chipexterne gemeinsame Kommunikationsbus bezeichnet. Vorzugsweise wird diese zusätzliche ODER-Funktion von entsprechenden Treiberschaltungen auf dem chipexternen gemeinsamen Kommunikationsbus direkt durchgeführt.
  • In Fig. 4(B) werden der R*-BUS und der OUT*-BUS an einen Block 19 angelegt, der aus Standardtreiber-, Standardempfänger- und Standard-Treiber-/Empfänger-Schaltungen sowie aus Treiberschaltungen DR* besteht, welche nicht nur zum Neugenerieren der Signale R* und OUT*, sondern auch zum Bereitstellen einer solchen verdrahteten ODER-Funktion auf dem chipexternen gemeinsamen Kommunikationsbus COM*-BUS in Fig. 4(B) besonders konstruiert sind. Die entsprechenden von den Treiberschaltungen DR* von Block 19 ausgegebenen globalen Signale werden auf ihrem R**-BUS bzw. OUT**-BUS, die zum COM**- BUS zusammengefasst werden, mit R** und OUT** bezeichnet. Das zweite Sternchen zeigt eindeutig an, dass die Signale R* und OUT* am Ausgang dieser Treiberschaltungen DR* einer zusätzlichen ODER-Funktion unterzogen worden sind.
  • Anstatt den OUT*-BUS direkt an die entsprechenden Treiberschaltungen DR* anzuschließen, kann dieser wahlweise auch mit dem Eingang eines Blocks 20 verbunden werden. Der Block 20 hat grundsätzlich denselben Aufbau wie die in jeder Neuronalschaltung 11 angeordnete Such-/Sortierschaltung 502 und wird im Folgenden als die Dmin-Bestimmungs-Hauptschaltung des ZISC-Chips 10 bezeichnet. Ebenso ist die Dmin-Bestimmungs- Hauptschaltung 20 mit einer Verbindung zu einem Rückkopplungsbus OR*-BUS versehen. Wenn eine Dmin-Bestimmungs-Hauptschaltung 20 verwendet wird, wird ihr über den OR*-BUS das Signal OUT** als Rückkopplungssignal zugeführt. Wenn nur ein einzelner oder nur sehr wenige ZISC-Chips 10 verwendet werden, ist die Dmin- Bestimmungs-Hauptschaltung 20 offensichtlich uninteressant; wenn es jedoch nötig sein sollte, eine große Anzahl von ZISC-Chips 10 zu kombinieren, kann sie sich als nützlich erweisen. Sie wird sogar die Gesamtverarbeitungsgeschwindigkeit jedes sich aus einer derartigen Kombination ergebenden neuralen Netzes erhöhen. Der COM**-BUS stellt den wesentlichen Bestandteil eines Universal-Ausgangsdatenbusses dar, der im Folgenden als GDATA- BUS bezeichnet wird. In der in Figur, 4(B) veranschaulichten Implementierung kann der GDATA-BUS andere Signale als die Signale R** und OUT** enthalten. Der COM**-BUS kann entweder direkt oder über das Register 184.1 mit dem Mikrocontroller/- Benutzer 22 verbunden sein, um die Daten zu speichern. Dank der in den Treiberschaltungen DR* von Block 19 auf dem COM**-BUS ausgeführten ODER-Funktion kann eine Vielzahl von ZISC-Chips 10 mit diesem verbunden werden. Im Ergebnis dessen kann ein größeres neurales Netz gebildet werden, indem eine entsprechende Vielzahl von neuralen Netzen 11(A) über diesen COM**-BUS verbunden wird und ihnen allen gemeinsam zur Verfügung steht. Die zusätzliche ODER-Funktion, die durch Verdrahten der ODER- Funktion auf dem COM**-BUS ausgeführt wird, stellt damit ein wesentliches Element der in Fig. 4(B) veranschaulichten ZISC- Chip 10-Implementierung dar, d. h., sobald dieser in einer Mehrchipumgebung arbeitet. Um sowohl den Betrieb in einer Standalone- als auch in einer Mehrchipumgebung zu ermöglichen, ist der ZISC-Chip 10 vorzugsweise mit einer Multiplexerschaltung 21 ausgestattet, durch die der Mikrocontroller/Benutzer 22 entweder den COM*-BUS (wenn ein Einzel-ZISC verwendet wird) oder den COM**-BUS (in einer Mehrchipumgebung) zu wählen, um den mit jeder Neuronalschaltung 11 verbundenen OR-BUS zu versorgen. Fig. 4(B) zeigt, wie der GDATA-BUS (oder zumindest dessen COM**-BUS- Anteil) über eine Treiber-/Empfängerschaltung DR/RR von Block 19 und den P-BUS wieder in den ZISC-Chip 10 zurückgeführt wird. Auf der anderen Seite des Multiplexers 21 versorgt der Q-BUS sowohl den OR-BUS als auch den M-BUS, der an die oben beschriebene (siehe Fig. 6) Zustands- und Steuerlogikschaltung 18 angelegt ist. Die in Fig. 4(B) gezeigte Schleife, die den Multiplexer 21 umgeht, zeigt an, dass einige Signale nicht vom Multiplexer erfasst zu werden brauchen, sodass eine direkte Verknüpfung zwischen der Zustands- und Steuerlogikschaltung 18 und dem GDATA-BUS besteht. Die in Fig. 4(B) veranschaulichte Implementierung stellt die bevorzugte Architektur des ZISC-Chips der vorliegenden Erfindung dar, da sie für beliebige Anwendungen eingerichtet ist. Der ZISC-Chip 10, ob mit oder ohne Multiplexer 21 (in diesem Fall ist der COM*-BUS formal nicht erforderlich), und das gemäß Fig. 4(B) darin angeordnete neurale Netz 11(A) werden in der folgenden Beschreibung als ZISC-Basis-Chip und als neurales Basisnetz bezeichnet. Die Neuralkapazität ist bei jeder Implementierung dieselbe, da sie sich aus der Anzahl der in der neuralen Einheit 11(#) angeordneten Neuronalschaltungen ergibt; es unterscheidet sich lediglich der Aufbau des interneuronalen Kommunikationssystems. Dieses basiert auf einer ODER-Stufe (ODER-Schaltung 12), dem COM*-BUS und dem OR-BUS in der Implementierung in Fig. 4(A) sowie auf zwei ODER-Stufen (ODER- Schaltung 12, in Block 19 ausgeführte verdrahtete ODER- Funktion), dem COM**-BUS und dem OR-BUS (sowie wahlweise dem OR*-BUS) in der Implementierung in Fig. 4(B). Im letzteren Fall ist das durch den OR-BUS transportierte Signal das Signal OUT**.
  • Im Verlauf der folgenden Beschreibung werden die oben eingeführten Bezeichnungen beibehalten. Der Bindestrich bezeichnet eine ermittelte Neuronalschaltung (z. B. 11-i). Zur Einheitlichkeit werden für die Schaltlogik (z. B. die Such-/ Sortierschaltung 502-i) und die Signale (z. B. NOUT-i), die sich auf eine solche ermittelte Neuronalschaltung beziehen, dieselben Bezeichnungen verwendet. Die sich aus einer ersten ODER-Funktion in der ODER-Schaltung 12 ergebenden globalen Signale und zugehörige Busse sind mit einem Sternchen gekennzeichnet (z. B. OUT* und OUT*-BUS in Fig. 4(A)). Wenn diese Signale der zusätzlichen ODER-Funktion am Ausgang der Treiberschaltungen DR* von Block 19 unterzogen werden, erhalten die dort ausgegebenen globalen Ergebnissignale und Ausgangsbusse eine Kennzeichnung durch zwei Sternchen (z. B. OUT** und OUT**-BUS in Fig. 4(B)). Die Klammern werden für jede auf den Chip bezogene Schaltlogik verwendet, zum Beispiel wird das im ZISC-Chip 10 von Fig. 4(B) angeordnete neurale Basisnetz durch 11(A) gekennzeichnet.
  • Auf der Ebene der Neuronalschaltung 11 liegen insgesamt sechs Eingangsbusse vor:
  • - der 8-Bit-DATA-BUS, der die Daten der Komponenten des Eingangsvektors transportiert;
  • - der 14-Bit-MaxIF/MinIF-BUS, der die Maximal- (MaxIF) und Minimalwerte (MinIF) des Einflussfeldes transportiert;
  • - Der 8-Bit-NO/CXT-BUS, der die 1 Bit breiten Eingangsnorm- und die 7 Bit breiten Eingangskontextdaten transportiert;
  • - der 14-Bit-CAT-BUS, der die Eingangskategoriedaten CAT transportiert;
  • - der IADD/CTL-BUS, der die Adress- und Steuersignale transportiert, die für die reibungslose Funktion aller Blöcke der Neuronalschaltung 11 von Fig. 5 erforderlich sind; und,
  • - der 14-Bit-OR-BUS, der entweder das Signal OUT* oder das Signal OUT** vom Abstandstyp oder vom Kategorietyp transportiert.
  • Auf der Ebene der Neuronalschaltung liegen außerdem noch zwei Ausgangsbusse vor:
  • - der NR-BUS, der das lokale (oder neuronale) zusammengesetzte Ergebnissignal transportiert, welches sich aus den Signalen F, DEGOUT und UNC/FIRE.OK zusammensetzt. Das Signal F veranschaulicht die "Auslöse"-Antwort einer fixierten Neuronalschaltung auf das Vorlegen des Eingangsvektors, d. h., ob er erkannt worden ist oder nicht. Das Signal DEGOUT veranschaulicht den "entarteten" Zustand, d. h., ob eine Neuronalschaltung, die ausgelöst hat, entartet ist oder nicht. Das Signal UNC/FIRE.OK ergibt sich aus dem Vergleich zwischen der lokalen Kategorie C der Neuronalschaltung 11 und der globalen Kategorie C*. Dieses Signal soll die Mehrdeutigkeit der Kategorie eines Eingangsvektors beseitigen, der erkannt worden ist; und,
  • - der NOUT-BUS, der das lokale (oder neuronale) Ausgangssignal NOUT transportiert. In jedem Betriebsmodus ist am Ende des Dmin-Bestimmungsprozesses für die Neuronalschaltung, die den Minimalabstand Dmin enthält, NOUT = Dmin; die Signale NOUT der übrigen Neuronalschaltungen sind bedeutungslos und besitzen auf der Ebene der ODER-Schaltung 12 keinen Einfluss. Wenn die Dmin-Bestimmungsschaltung 500 durchlaufen wird (genauer gesagt, das am Eingang angelegte Signal in der Schaltung nicht verarbeitet wird), kann das Signal NOUT den Wert jedes beliebigen Registers oder Speichers der Neuronalschaltung 11 darstellen. Für gewöhnlich transportiert der NOUT-BUS den von der Neuronalschaltung errechneten Abstand oder die in ihrem Kategorieregister 450 gespeicherte lokale Kategorie. Im Modus SPEICHERN und im Modus WIEDERHERSTELLEN transportiert er jedoch andere Daten (Installationsparameter, Komponenten des Prototypvektors und dergleichen).
  • Auf der Ebene des ZISC-Chips 10 weisen die Implementierungen bezüglich der Eingangsbusse, die den Chip mit dem Mikrocontroller/Benutzer 22 verbinden, keinen Unterschied auf. Dies sind die folgenden Eingangsbusse:
  • - der bidirektionale 16-Bit-INDATA-BUS, der die Eingangsvektordaten, die Installationsparameter, die Norm-/ Kontexteingangsdaten und die Kategorie-Eingangsdaten transportiert, um einen vollständigen Datenaustausch zwischen dem Mikrocontroller/Benutzer 22 und dem ZISC-Chip 10 zu ermöglichen; und,
  • - der SEL/CTL-BUS, der in gleicher Weise die Auswahl- und Steuersignale zum ZISC-Chip 10 transportiert.
  • Bezüglich des Ausgangsbusses auf der Ebene des ZISC-Chips 10 gibt es jedoch einen Unterschied. Bei der Implementierung von Fig. 4(A) ist der Ausgangsbus der auf dem Chip integrierte gemeinsame Kommunikationsbus COM*-BUS, der sich aus der Kombination von R*-BUS und OUT*-BUS nach dem Generieren ihrer jeweiligen Signale in der ODER-Schaltung 12 ergibt. Der R*-BUS transportiert die globalen Ergebnissignale F*, DEGOUT* und UNC/FIRE.OK*, die die globale Antwort des neuralen Netzes 11(A) auf das Vorlegen eines Eingangsvektors A veranschaulichen. Der OUT*-BUS transportiert das globale Ausgangssignal OUT*, das im Wesentlichen entweder den Minimalabstand Dmin (oder Cmin) aller Abstände (Kategorien), der von den Neuronalschaltungen des neuralen Netzes 11(A) am Ende des Dmin-(Cmin-) Bestimmungsprozesses errechnet (gespeichert) wurde, oder die globale Kategorie C* repräsentiert.
  • Die Implementierung von Fig. 4(B) ist für eine Mehrchipumgebung eingerichtet. Deshalb muss nun neben den Treiber-, Empfänger- und Treiber-/Empfängerschaltungen von Block 19 der chipexterne gemeinsame Kommunikationsbus COM**-BUS den ZISC-Basis-Chip 10 auch mit der Außenwelt, einschließlich den übrigen mit ihm zu verbindenden ZISC-Chips 10, verbinden. Der COM**-BUS ergibt sich aus der Kombination von R**-BUS und OUT**-BUS. Der R**-BUS transportiert das globale Ergebnissignal F**, DEGOUT** und UNC/FIRE.OK**. Der OUT**-BUS transportiert das globale Ausgangssignal OUT**. Der OUT**-BUS versorgt den OR-BUS jeder Neuronalschaltung 11 (dabei wird angenommen, dass der ZISC- Basis-Chip 10 keine Dmin-Bestimmungs-Hauptschaltung 20 enthält). Wenn zusätzliche Leitungen benötigt werden, kann ein mit einem 17-Bit-COM**-BUS ausgestatteter GDATA-BUS implementiert werden; ansonsten reicht der COM**-BUS für die Verknüpfung der ZISC- Basis-Chips 10 untereinander aus.
  • Unabhängig von der betrachteten Ebene ist in jeder Implementierung für die Verbindung aller Neuronalschaltungen eine serielle Daisy-Chain-Verbindung, d. h. die zwei Leitungen für den Transport der Daisy-Chain-Eingangs- und -Ausgangssignale (DCI, DCO), erforderlich.
  • VARIANTEN DER ARCHITEKTUR DES ZISC-BASIS-CHIPS
  • Bezüglich der Architektur des die Fig. 4(B) veranschaulichten ZISC-Basis-Chips 10 sind verschiedene Varianten denkbar. Erstens können die verschiedenen in der ODER-Schaltung 12 ausgeführten ODER-Funktionen leicht verteilt und damit in jeder Neuronalschaltung 11 des ZISC-Basis-Chips 10 installiert werden. In diesem durch den ZISC-Chip 10' in Fig. 9 veranschaulichten Fall weist der gemeinsame Kommunikationsbus nun eine aus den Buselementen COM**-1-BU5 bis COM**-N-BUS bestehende serielle Struktur auf. Der GDATA-BUS bleibt auch hier optional. Die Lösung ist relativ einfach, doch liegt jetzt die vollständig parallele Struktur des ZISC-Basis-Chips 10 von Fig. 4(B) nicht mehr vor, was zu einer deutlichen Verschlechterung der Gesamtverarbeitungszeit während der Lern- und der Erkennungsphase führt. Bei mehreren in einer Kette hintereinander geschalteten Chips ist der COM**-1-BUS des ersten ZISC-Chips 10' mit einer logischen Stufe verbunden, die für die ODER-Funktion neutral ist (gleich Null, wie oben erwähnt).
  • Eine weitere von der Implementierung von Fig. 4(B) abgeleitete wertvolle Variante kann als Alternative entworfen werden. Die ODER-Schaltung 12 kann physikalisch unterdrückt werden. Die in der ODER-Schaltung 12 durchgeführte ODER-Funktion, die für die Arbeit des ZISC-Basis-Chips 10 erforderlich ist, könnte sofort bewirkt werden, indem die ODER-Funktion der Signale NR und NOUT über eine Treiberschaltung vom DR*-Typ für jede Neuronalschaltung direkt auf dem COM**-BUS verdrahtet wird. Darüber hinaus könnte es auch wünschenswert sein, alle von den Blöcken 13 bis 18 durchgeführten Funktionen in jede Neuronalschaltung 11 zu verteilen und einzubauen. In diesem Fall würde der ZISC-Chip 10", wie in Fig. 10 veranschaulicht, lediglich auf eine Vielzahl von Neuronalschaltungen 11"-1 bis 11"-N beschränkt, die die neurale Einheit 11"(#) bilden. Eine solche Neuronalschaltung 11" könnte in eine ASIC-Bibliothek aufgenommen werden und zu einem ausbaufähigen neuralen Netzmakro führen, da sie eine Granularität von 1 besitzt (anstelle von 36 bei den einzelnen oben beschriebenen Implementierungen der ZISC- Chips 10 von Fig. 4(B) und 10' von Fig. 9). Bei der Implementierung von Fig. 10 ist der OR-BUS in jedem Bus enthalten, der über eine Treiber-/Empfängerschaltung DR*/RR eine ermittelte Neuronalschaltung 11" mit dem COM**-BUS verbindet. Bei der Lösung von Fig. 10 ist die Struktur des ZISC-Chips 10" zwar vollkommen parallel, benötigt aber genauso viele Male 31 (3 + 14 + 14) Leitungen auf dem COM**-BUS, wie Neuronalschaltungen im ZISC-Chip 10" enthalten sind. Auf der anderen Seite des ZISC- Chips 10" sind die beiden Eingangsbusse SEL/CTL-BUS und INDATA- BUS zu einem gemeinsamen Eingangsbus G-BUS vereinigt, um noch weiter die Kompaktheit und Granularität des Aufbaus des ZISC- Chips 10" zu veranschaulichen. Man kann auch noch weitere Varianten, einschließlich hybrider Architekturen, konstruieren. Die in Fig. 4(B) gezeigte Architektur wird jedoch wegen ihrer Vielseitigkeit bevorzugt.
  • DIE ZISC-MODUL-ARCHITEKTUREN
  • Zur Erweiterung der Neuralkapazität kann durch Verknüpfung mehrerer über den INDATA-BUS und den SEL/CTL-BUS mit dem Mikrocontroller/Benutzer 22 verbundener ZISC-Basis-Chips 10 von Fig. 4(B) ein ZISC-Elementarmodul konstruiert werden. In Fig. 11 wird eine Vielzahl seriell verknüpfter ZISC-Basis-Chips 10(1) bis 10(Q) gezeigt, die hintereinandergeschaltet wurden, um das ZISC-Elementarmodul 10[A] zu bilden, welches ein entsprechendes neurales Elementarnetz 11[A] enthält. Fig. 11 zeigt deutlich die vollständig parallele Verbindung der ZISC-Chips 10 mit dem INDATA-BUS, dem SEL/CTL-BUS und dem COM**-BUS. Ferner zeigt sie die serielle Verbindung der Daisy-Chain-Signale zwischen den ZISC-Chips 10. Das DCI-Eingangsterminal des ersten ZISC-Chips 10(1) ist mit einem ersten Potential VH verbunden, sodass an ihm eine logische Eins anliegt. Das DCO-Ausgangsterminal von Chip 10(1) ist mit dem Eingangsterminal DCI des nächsten Chips 10(2) verbunden und so weiter bis zum Chip 10(Q). Jedes Mal, wenn die DAISY-Register der Neuronalschaltungen eines ermittelten ZISC- Chips 10(q) mit Einsen gefüllt werden, kann das letzte von dort ausgegebene Signal DCO(q) als ein Signal VOLL (FULL) für diesen Chip interpretiert werden. Wenn das Signal DCO(Q) = 1 ist, bedeutet dies, dass in dem neuralen Elementarnetz 11[A] keine freie Neuronalschaltung mehr vorliegt. Der Buchstabe Q bedeutet die maximale Anzahl von ZISC-Basis-Chips 10, die gemäß der Technologie seriell miteinander verknüpft werden können. Das neurale Elementarnetz 11[A] wird demnach aus der Summe der neuralen Basisnetze 11(1) bis 11(Q) gebildet, die in den entsprechenden ZISC-Chips 10(1) bis 10(Q) eingebaut sind. Wie aus Fig. 11 ersichtlich, verfügen alle Chips über eine bidirektionale Busverbindung zum INCATA-BUS und zum SEL/CTL-BUS. Der Mikrocontroller/Benutzer 22 kann über den bidirektionalen INDATA-BUS in das Register 184.1 aller ZISC-Basis-Chips 10(1) bis 10(Q) schreiben; aber der Mikrocontroller/Benutzer 22 kann nur den Inhalt eines ZISC-Chips, zum Beispiel 10(1), lesen (obwohl die globale Antwort im Register 184.1 jedes ZISC-Chips 10(1) bis 10(Q) zur Verfügung steht). Zu diesem Zweck wird ein zweckbestimmtes Terminal INH aller ZISC-Chips 10 bis auf einen, z. B. 10(1), durch Verbinden mit der ersten Versorgungsspannung VH auf "1" gesetzt. Wie Fig. 11 zeigt, wird das Terminal INH des ZISC-Chips 10(1) mit einem zweiten Potential, in diesem Fall mit dem Massepotential GND verbunden. Dieses Terminal INH wird nämlich mit dem Steuerterminal der DR/RR-Schaltung verbunden, die den ZISC-Chip 10 mit dem bidirektionalen INDATA-BUS verbindet. Wenn die Spannung VH an diese DR/RR-Schaltung angelegt wird, wird Letztere in einen Zustand hoher Impedanz versetzt, sodass der INDATA-BUS nicht betrieben werden kann. Auf der anderen Seite des neuralen Elementarnetzes 11[A] kann man den GDATA-BUS finden, der damit allen ZISC-Chips 10(1) bis 10(Q) gemeinsam zur Verfügung steht, da deren entsprechende Busse RT**-BUS und OUT**-BUS parallel mit dessen COM**-BUS-Anteil verbunden sind, um darauf die ODER-Funktion zu verdrahten.
  • Da der IDNATA-BUS, der SEL/CTL-BUS und der GDATA-BUS alle Chips untereinander verbinden, kann man ein ZISC-Elementarmodul 10[A] aufbauen, indem man eine Anzahl von ZISC-Chips 10 zusammensetzt. Das in dem Basismodul 10[A] gebildete neurale Basisnetz 11[A] verfügt über eine Neuralkapazität, die gleich der Summe der Neuralkapazitäten der Chips 10(1) bis 10(Q) ist, und arbeitet im Grunde genauso, wie wenn diese in einem einzelnen ZISC-Chip 10 integriert wären. Dank dieser Verknüpfungskonstruktion kann ein aus ZISC-Chips 10 aufgebautes neurales Elementarnetz 11[A], zumindest theoretisch, entsprechend dem Bedarf der Anwendung ohne zusätzlichen Schaltungsaufwand wachsen. Andererseits kann ein beliebiges neurales Elementarnetz 11[A] immer noch durch den Mikrocontroller/Benutzer 22 entweder als ein einzelnes Netz oder als dessen getrennte Teilbereiche konfiguriert werden, indem er einen Vergleich zwischen den entsprechenden Kontextbereichen des NO/CXT-Registers 17 und des lokalen, No/Cxt-Registers 100 in jeder Neuronalschaltung 11 durchführt.
  • Infolge praktischer technologischer Beschränkungen, die sich aus dem Verdrahten der ODER-Funktion auf dem COM**-BUS bei der vorliegenden Implementierung des ZISC-Basis-Chips 10 ergeben, kann in Wirklichkeit leider nur eine begrenzte Anzahl von Chips direkt hintereinandergeschaltet werden, z. B. mit der oben erwähnten Technologie eine maximale Anzahl von Q = 8. Sollte die Anzahl der für eine bestimmte Anwendung erforderlichen Chips diese Zahl übersteigen, kann eine externe Schaltung beispielsweise auf der Ebene der Leiterplatte erforderlich werden, um in der oben erwähnten globalen ODER-Funktion eine dritte zusätzliche Stufe zu verwirklichen. In Fig. 12 wird ein Weg gezeigt, wie ein komplexes Modul 10{A} durch Zusammenbau zweier Elementarmodule 10[1] und 10[2] erzeugt werden kann, wie unter Bezug auf 10[A] in Fig. 11 schematisch veranschaulicht. Die oben erwähnten Regeln bezüglich des Anschließens der Terminals DCI und INH des ersten Chips 10(1) des Elementarmoduls 10[A] an entsprechende Potentiale gelten auch hier für den ersten ZISC-Chip 10 der Kette von Elementarmodulen. Ebenfalls wegen der dem ZISC-Basis-Chip 10 innewohnenden Eigenschaften genügt es, die entsprechenden Busse COM**[1]-BUS und COM**[2]- BUS jedes der Elementarmodule 10[1] und 10[2] an eine ODER- Schaltung 23 (die aus siebzehn Zweiwege-ODER-Gattern besteht) anzuschließen, um durch einen herkömmlichen Treiber DR die Signale zu generieren, die in das komplexe Modul über den COM***-BUS geleitet werden sollen, welcher alle darin enthaltenen Neuronalschaltungen versorgt. Diese Überlegungen lassen sich leicht auf die Kombination einer beliebigen Anzahl von Elementarmodulen des Typs 10[A] ausdehnen. Dies ist eine Folge der vollen seriellen Verknüpfbarkeit und Parallelität des ZISC-Basis-Chips 10. Man braucht lediglich eine ODER-Schaltung 23 mit einer gewünschten Anzahl von Eingängen zu entwerfen oder eine Anzahl solcher ODER-Schaltungen in einer Baumstruktur zu kombinieren (abhängig von den technologischen Möglichkeiten), um ein komplexes neurales Netz zu erhalten, das nun beispielsweise Hunderte oder Tausende einzelner Neuronalschaltungen enthält. Alle diese Neuronalschaltungen arbeiten so, wie wenn sie in einen einzigen ZISC-Basis-Chip 10 integriert wären und ihre Anzahl ist für den Benutzer transparent.
  • Im Verlauf der folgenden Beschreibung werden die oben eingeführten Bezeichnungen in derselben Weise weiter verwendet. Um zwischen verschiedenen ZISC-Chips in der Anordnung zu unterscheiden, welche, wie oben erwähnt, das ZISC-Elementarmodul 10[A] bildet, werden für chipbezogene Benennungen Klammern verwendet (z. B. wird mit Chip (q) der q-te Chip in der Kette bezeichnet). Eckige Klammern kennzeichnen eine auf das Elementarmodul bezogene Benennung. In derselben Weise werden die diesem Elementarmodul 10[A] zugeordneten Busse und die Schaltlogik gekennzeichnet. Um beispielsweise zwischen verschiedenen zu einem Komplexmodul 10{A} zusammengesetzten ZISC-Elementarmodulen zu unterscheiden, bezeichnet die Benennung 10[r] das r-te Elementarmodul in der Anordnung. Und schließlich werden die diesem Komplexmodul zugeordneten Busse und die Schaltlogik ebenso bezeichnet. Das komlexe neurale Netz, das auf diese Weise in jedem Komplexmodul 10{A} angeordnet ist, wird mit 11{A} bezeichnet.
  • In der obigen Beschreibung wurde auf aufeinander folgende ODER- Funktionen verwiesen. Diese ODER-Funktionen können entweder durch Hardware (z. B. die ODER-Schaltung 12) oder durch Verdrahten (z. B. die festverdrahtete ODER-Funktion auf dem COM**-BUS) realisiert werden.
  • Wenn dies die Technologie erfordern sollte, könnten diese ODER- Funktionen allerdings auch gemäß den de-Morganschen Gesetzen durch UND-Funktionen erreicht werden. Beispielsweise wurde das globale Auslöseergebnissignal F* durch ODER-Verknüpfung aller lokalen Auslöseergebnissignale der Neuronalschaltungen 11-1 bis 11-N definiert, d. h. F* = Fi ODER... ODER FN. In Abhängigkeit von der eingesetzten Technologie kann die Implementierung des Verdrahtens der ODER-Funktion bestimmte Nachteile erkennen lassen, da hierfür PFETs benötigt werden, die bekanntlich langsame Bauelemente sind. Da die Aufgabe darin besteht, festzustellen, ob mindestens eine Neuronalschaltung des neuralen Netzes aktiviert wurde, d. h. ob mindestens ein Signal Fi gleich 1 ist, kann man dasselbe Ergebnis selbstverständlich auch erhalten, wenn mindestens ein = 0 ist. In diesem Fall entspricht * = UND... UND FN der obigen Beziehung. Das Verdrahten der UND-Funktion, für das lediglich die als schnelle Schaltelemente bekannten NFETs erforderlich sind, ist daher weiter verbreitet.
  • KURZBESCHREIBUNG DER ARBEITSWEISE DES ZISC-BASIS-CHIPS
  • Im Folgenden wird in Verbindung mit den Fig. 13 bis 15, die schematisch die Flussdiagramme der Modi INITIALISIERUNG, ERKENNUNG UND VORLADEN bzw. LERNEN veranschaulichen, eine Kurzbeschreibung der wesentlichen Betriebsmodi des im ZISC- Basis-Chip 10 von Fig. 4(A) gebildeten neuralen Netzes 11(A) gegeben. Zum leichteren Verständnis für den Leser wird gelegentlich auf die in den Fig. 4 bis 12 beschriebenen Funktionsblöcke Bezug genommen.
  • INITIALISIERUNGSMODUS
  • Wie aus dem Flussdiagramm 24 in Fig. 13 ersichtlich, besteht der Modus INITIALISIERUNG im Wesentlichen aus einem Schritt (Kasten 25), der als Löschschritt bezeichnet wird. Während des Löschschrittes werden geeignete Standardwerte in bestimmte Register des ZISC-Basis-Chips 10 (einschließlich der Register der darin eingebauten Neuronalschaltungen) geladen. In das MaxiF-Register 14 und das MiniF-Register 15 werden die entsprechenden Werte MaxIF und MinIF geladen. In das NO/CXT- Hauptregister 17 wird ein vorgegebener Wert (z. B. Null) geladen. In das Register DAISY der Daisy-Chain-Schaltung 600 und in das Kategorieregister 450 jeder Neuronalschaltung 11 wird ein Nullwert geladen.
  • In andere Register und die Schreib-/Lease-Speicherschaltung 250 brauchen keine vorgegebenen Werte geladen zu werden, sodass ihr jeweiliger Inhalt beim Einschalten der Stromversorgung nicht festgelegt ist. Man kann jedoch einen zweiten Schritt, den Aktualisierungsschritt (Kasten 26), in. Betracht ziehen. In diesem optionalen Schritt kann der Mikrocontroller/Benutzer 22 wahlweise einige Werte verändern, z. B.. die in das NO/CXT- Hauptregister 17 geladenen Installationsparameter (MaxIF, MinIF) sowie Kontext- und Normeingangsdaten und der Inhalt von Register 184.1, welches außer den Daten der globalen Antwort insbesondere auch noch Daten der Betriebsmodi enthält. Diese Schritte werden unter der Kontrolle der auf dem SEL/CTL-BUS transportierten Steuersignale über den INDATA-BUS ausgeführt.
  • ERKENNUNGSMODUS UND VORIIADEMODUS
  • Im Folgenden soll das neurale Netz 11(A) unter normalen Betriebsbedingungen nach Beendigung der oben beschriebenen Initialisierungsphase betrachtet werden. Bestimmte Neuronalschaltungen sollen als bereits besetzt betrachtet werden (d. h. sie haben gelernt), während andere noch frei sind. Der Mikrocontroller/Benutzer 22 lädt über den INDATA-BUS nacheinander die Komponenten eines Eingangsvektors A in das A- Register 13 des ZISC-Chips 10. zu diesem Zweck wird das A-Register 13 über den IADD/CTL-BUS ausgewählt. Dann werden die in das A-Register 13 geladenen Daten an jede der Neuronalschaltungen der neuralen Einheit 11(#) übertragen, d. h. sowohl an die besetzten als auch an die noch freien. Diese Unterscheidung zwischen freien und besetzten Neuronalschaltungen ergibt sich aus der Betrachtung der logischen Signalpegel an den entsprechenden Terminals DCI und DCO der Daisy-Chain-Schaltung 600 jeder Neuronalschaltung 11. Fig. 14 besteht aus Fig. 14(A) und 14(B). Sie stellt das Flussdiagramm 27 dar, welches die wesentlichen während der Erkennungsphase im ZISC-Chip 10 durchgeführten Schritte veranschaulicht. In Fig. 14(A) ist ersichtlich, dass nur eine besetzte (Kasten 28) und vom Signal NS ausgewählte (Kasten 29) Neuronalschaltung 11, d. h. nur eine fixierte Neuronalschaltung, signifikant an der Erkennungsphase beteiligt ist. Sobald eine Neuronalschaltung gelernt hat, ist sie fixiert, d. h., sie ist nicht mehr frei. Eine Neuronalschaltung wird ausgewählt, wenn der lokale Kontextanteil (Cxt) ihres Norm-/Kontextregisters 100 mit dem im NO/CXT- Hauptregister 17 gespeicherten Kontexteingangsanteil (CXT) übereinstimmt. Ist dieser Kontexteiflgangsanteil jedoch gleich Null, werden alle besetzten Neuronalschaltungen des ZISC-Chips 10 an der Erkennungsphase beteiligt sein. In diesem Fall ist "fixiert" gleichbedeutend mit "besetzt". Bei einer besetzten Neuronalschaltung sind die Komponenten eines Prototypvektors zuvor in ihrer Schreib-/Lese-Speicherschaltung 250 gespeichert und darin durch das Steuersignal RS "eingefroren" worden, d. h., dass eine Operation SCHREIBEN nicht mehr möglich ist. Eine freie Neuronalschaltung 11, die durch die Antwort NEIN auf die in Kasten 28 durchgeführte Prüfung ermittelt wird, wird in Kasten 30 einer weiteren Prüfung unterzogen, um festzustellen, ob dies die erste freie, d. h. die lernbereite Neuronalschaltung ist. Falls JA, werden die Komponenten des Eingangsvektors in der Schreib-/Lese-Speicherschaltung 250 dieser lernbereiten Neuronalschaltung gespeichert, währenddessen der Eingangsvektor vorgelegt wird. Im Ergebnis dessen wird diese lernbereite Neuronalschaltung dann als "vorgeladen" (precharged) betrachtet, was durch Kasten 31 veranschaulicht wird. Die folgende Beschreibung befasst sich nur mit dem Fall einer fixierten Neuronalschaltung 11, d. h., nachdem die Prüfungen in Kasten 28 und 29 bereits positiv abgeschlossen worden sind. Wenn die Neuronalschaltung 11 nicht gemäß Kasten 29 ausgewählt worden ist, kann sie dennoch in derselben Weise funktionieren, allerdings ist dies mit einem erhöhten Energieverbrauch verbunden. Jedoch wird ihre lokale Antwort das Generieren der globalen Ergebnis- und Ausgangsdaten durch nichts beeinflussen.
  • Nachdem der Mikrocontroller/Benutzer 22 die letzte Komponente des Eingangsvektors angelegt hat, wird der von der Abstandsbewertungsschaltung 200 errechnete Abstand D zwischen dem Eingangsvektor A und dem Prototypvektor B in Kasten 32 zur Verfügung gestellt. Dieser Abstand D kann in Abhängigkeit von der verwendeten lokalen Norm No variieren. An dieser Stelle der Beschreibung müssen zwei Fälle betrachtet werden, die sich aus dem vom Mikrocontroller/Benutzer 22 ausgewählten Untermodus ergeben, wie in Kasten 33 veranschaulicht wird.
  • Im RBF- bzw. normalen Untermodus (NM) vergleicht die Abstandsvergleichsschaltung 300 entsprechend den oben angegebenen Regeln den Abstand D mit dem im AlF-Register 352 gespeicherten Wert AlF, um das Signal LT zu generieren. Mit der in Kasten 34 durchgeführten Prüfung soll festgestellt werden, ob D definitiv kleiner als AlF ist. Ist dies nicht der Fall (d. h. D > = AlF), löst die Neuronalschaltung 11 nicht aus und das Signal F wird in Kasten 35 auf "inaktiv" gesetzt, d. h. F = 0. Für diese ermittelte Neuronalschaltung ist der Erkennungsprozess beendet. Lautet die Antwort JA, wird das Signal LT auf "aktiv" (LT = 1) gesetzt; dies bedeutet, dass der Eingangsvektor A in den Bereich des Wertes AlF des in der Neuronalschaltung 11 gespeicherten Prototypvektors fällt. Das an die Identifizierungsschaltung 400 angelegte Signal LT setzt in Kasten 36 das Signal F auf "aktiv" (F = 1). Die Neuronalschaltung 11 hat ausgelöst und hat demnach den Eingangsvektor A erkannt. Sodann wird in Kasten 37 der Inhalt des Registers DEG in der Identifizierungsschaltung 400 geprüft. Stellt sich dabei die Neuronalschaltung 11 als entartet heraus (weil im Register DEG der Identifizierungsschaltung 400 eine "Eins" gespeichert ist), wird das Signal DEG auf "aktiv" gesetzt; in Kasten 38 wiederum wird das Signal DEGOUT auf "aktiv" (DEGOUT = F UND DEG = 1) gesetzt. Der Ausgang von Kasten 38 und der Ausgang NO von Prüfkasten 37 werden im gemeinsamen Knoten 39 vereinigt. Fig. 14(A) veranschaulicht das Flussdiagramm auf der Ebene der Neuronalschaltung (NC). Nun müssen alle Neuronalschaltungen des ZISC-Chips 10, die fixiert sind und ausgelöst haben (falls vorhanden), d. h. welche sich in dem durch Knoten 39 definierten Stadium befinden, berücksichtigt werden, um die auf der Ebene des neuralen Netzes 11(A) generierten globalen Ergebnis- und Ausgangsdaten zu betrachten. Der Übergang von der Ebene der Neuronalschaltung zu der des neuralen Netzes wird mit NC/NN bezeichnet und in Fig. 14(A) durch eine gestrichelte Linie dargestellt.
  • Unabhängig davon, ob die Neuronalschaltung 11 entartet ist oder nicht, muss nun ermittelt werden, ob diejenigen fixierten Neuronalschaltungen des neuralen Basisnetzes 11(A), die ausgelöst haben, zur gleichen Kategorie oder zu mindestens zwei unterschiedlichen Kategorien gehören. Zu diesem Zweck werden alle lokalen Kategorien dieser Neuronalschaltungen, wie oben erwähnt, in einer zweckbestimmten Teilschaltung der ODER- Schaltung 12 durch eine ODER-Operation verknüpft. In Fig. 14(B) wird dieser Schritt in Kasten 40 durchgeführt, um auf dem OUT*- BUS und dann auf dem OR-BUS die globale Kategorie C* zu erzeugen. Ebenso werden die globalen Ergebnissignale F* und DEGOUT* direkt auf dem R*-BUS zur Verfügung gestellt, nachdem sie in ihren jeweiligen zweckbestimmten ODER-Teilschaltungen verarbeitet worden sind. Wenn in Kasten 36 mindestens eine Neuronalschaltung ausgelöst hat, wird das globale Ergebnissignal F* auf "aktiv" gesetzt (F* = 1). Zur Ermittlung des Signals UNC/FIRE.OK* ist eine weitere Operation erforderlich, In jeder Neuronalschaltung 11 wird die globale Kategorie C* mit der lokalen Kategorie C in der Identifizierungsschaltung 400 verglichen (zu beachten ist, dass dieser Vergleich auf der Ebene der Neuronalschaltung durchgeführt wird). Diese Vergleichsprüfung wird durch Kasten 41 veranschaulicht. Wenn die lokale Kategorie C gleich der globalen Kategorie C* ist, so bedeutet dies, dass das neurale Netz 11(A) den Eingangsvektor erkannt hat. De facto wird das von jeder Neuronalschaltung generierte neuronale Ergebnissignal UNC/FIRE.OK auf "aktiv" (UNC/FIRE.OK = 0) gesetzt, sodass das globale Ergebnissignal UNC/FIRE.OK* gleich Null ist. Demzufolge wird das Signal ID* = F* UND auf "aktiv" gesetzt, d. h. ID* = 1 (Kasten 42). Der Eingangsvektor ist mit einer Kategorie gleich C* identifiziert worden. Die Kategorie C* wird dann auf dem COM*- BUS bereitgestellt und kann im Register 184.1 gespeichert werden. Der Mikrocontroller/Benutzer 22 kann die Kategorie bei Bedarf lesen (Kasten 43). Unterscheidet sich hingegen C* für mindestens eine Neuronalschaltung von C, wird das Signal UNC/FIRE.OK dieser ermittelten Neuronalschaltung auf "Eins" gesetzt, womit für das globale Ergebnissignal UNC/FIRE.OK* = 1 gilt. Folglich ist das Signal ID* = 0 (Kasten 44), was bedeutet, dass der Eingangsvektor nicht identifiziert worden ist. Die Ausgänge von Kasten 43 und 44 werden in einem gemeinsamen Knoten 45 zusammengeführt. In diesem NM-Untermodus können jedoch, wenn dies der Mikrocontroller/Benutzer 22 wünscht, entweder die Abstände oder die Kategorien auf dem COM*- BUS, vorzugsweise in ansteigender Reihenfolge, zur Verfügung gestellt werden. In diesem Fall muss daher Dmin oder Cmin ermittelt werden. Zu diesem Zweck kooperieren alle Such-/ Sortierschaltungen der Neuronalschaltungen, um den Minimalabstand Dmin, d. h. den kleinsten der durch diejenigen fixierten Neuronalschaltungen, die ausgelöst haben, errechneten Abstände, zu generieren (Kasten 46). Außerdem kann der Mikrocontroller/Benutzer 22 von den fixierten Neuronalschaltungen, die ausgelöst haben, nicht nur die Ermittlung des Minimalabstands Dmin, sondern auch die Ausgabe der übrigen Abstände in ansteigender Reihenfolge auf dem OUT*-BUS verlangen. Diese Schritte werden durch Kasten 46 veranschaulicht. Die gleichen Überlegungen gelten bei Bedarf für die Daten vom Kategorietyp. Es ist zu beachten, dass, wenn mehr als eine Neuronalschaltung ausgelöst hat, auf Anforderung und unter Kontrolle durch die Zustandsschaltung 183 die Abstände und ihre zugehörigen Kategorien entweder in einer kontinuierlichen Folge oder sich überschneidend ausgegeben werden können. Wenn lediglich eine Neuronalschaltung ausgelöst hat, werden auf dem OUT*-BUS nur ihre Abstands- oder ihre Kategoriedaten ausgegeben. Die Abstands- oder die Kategoriedaten werden entweder direkt an den Mikrocontroller/Benutzer 22 gesendet oder über den COM*-BUS im Register 184.1 zwischengespeichert, um dem Mikrocontroller/Benutzer 22 für eine spätere LESE-Operation zur Verfügung zu stehen.
  • Im Untermodus "nächster Nachbar" (NNM) findet kein Vergleich zwischen dem errechneten Abstand D und dem Wert AlF statt. In diesem Fall verlangt der Mikrocontroller/Benutzer 22 lediglich von allen Such-/Sortierschaltungen aller Neuronalschaltungen ohne Ausnahme (ob sie ausgelöst haben oder nicht), den Minimalabstand Dmin (oder Cmin) zu ermitteln und dann, wie oben erwähnt, die übrigen Abstände (oder Kategorien) auszugeben. Wie aus Fig. 14 ersichtlich, umfasst der Untermodus NNM nur die in Kasten 46 durchgeführten Schritte.
  • Schließlich endet der Modus ERKENNUNG unabhängig vom ausgewählten Untermodus im Kasten ENDE in Fig. 14(B). Da jedoch am Ende der in Fig. 14 veranschaulichten Erkennungsphase eine Neuronalschaltung 11 anschließend wieder einer Lernphase übergeben werden kann, ist als Alternative zum oben erwähnten Kasten ENDE ein Kasten 47 hinzugefügt worden.
  • LERNMODUS
  • Am Ende der Erkennungsphase kann der Benutzer einen Modus LERNEN ausführen. Das Lernen tritt in unterschiedlichen Fällen auf. Wenn der Benutzer beispielsweise mit der globalen Antwort nicht zufrieden ist, z. B. wenn er die vom neuralen Netz 11(A) ausgegebene Kategorie für nicht richtig hält, oder wenn ein "leeres" oder "jungfräuliches" neurales Netz 11(A) erstmals benutzt wird. Im letzteren Fall hat noch keine Neuronalschaltung gelernt und daher kann keine Neuronalschaltung ausgelöst haben, sodass das Signal F für jede Neuronalschaltung gleich Null ist, wie durch Kasten 35 in Fig. 14(A) gezeigt wird. Daher ist das Signal F* = 0 und das Signal UNC/FIRE.OK* = 0, sodass ID* = 0 ist; dies bedeutet, dass der Eingangsvektor A auf der Ebene des neuralen Netzes 11(A) nicht identifiziert worden ist. Gemäß einem bedeutenden Merkmal der vorliegenden Erfindung sind die Komponenten des Eingangsvektors A während der vorangegangenen Erkennungsphase in der ersten freien lernbereiten Neuronalschaltung gespeichert worden, die damit vorgeladen ist, wie oben unter Bezug auf Kasten 31 in Fig. 14(A) erklärt wurde.
  • Weiterhin soll angenommen werden, dass bestimmte Neuronalschaltungen bereits besetzt sind (d. h. gelernt haben), während andere noch frei sind. Der Modus LERNEN besteht im Wesentlichen im Reduktions- und/oder im Besetzungsprozess, die sich auf Neuronalschaltungen mit unterschiedlichen Zuständen richten. Der Reduktionsprozess betrifft alle fixierten Neuronalschaltungen, während der Besetzungsprozess lediglich die lernbereiten Neuronalschaltungen betrifft. Zur Vereinfachung werde angenommen, dass die Lernphase, wie unter Bezug auf Fig. 14 beschrieben wird, nach der Erkennungsphase durchgeführt wird. Das zur Übereinstimmung mit Kasten 47 in Fig. 14 als 47 bezeichnete Flussdiagramm in Fig. 15 veranschaulicht die wesentlichen Schritte dieser Reduktions- und Besetzungsprozesse. Die Lernphase verläuft unter der Kontrolle der Zustandsschaltung 183 der Zustands- und Steuerlogikschaltung 18. Die Zustandsschaltung 183 liefert Zustände in Reihenfolge, um alle Neuronalschaltungen des neuralen Netzes 11(A) parallel zu steuern. Für jede fixierte Neuronalschaltung, die während der Erkennungsphase ausgelöst hat (siehe Flussdiagramm 27 in Fig. 14) und eine von der Eingangskategorie CAT unterschiedliche lokale Kategorie C aufweist, erfolgt der Übergang zu einer automatischen Reduzierung des Wertes ihres Einflussfeldes. Zu diesem Zweck ist der ZISC-Chip 10 mit einem Anpassungsmechanismus versehen, der automatisch und gleichzeitig den Inhalt des AlF-Registers 352 dieser ermittelten Neuronalschaltung reduziert, welche fälschlicherweise ausgelöst hat, um den Eingangsvektor aus ihrem Auslösebereich zu entfernen. Wenn der Eingangsvektor auf der Ebene des neuralen Netzes 11(A) nicht korrekt erkannt worden ist, kann es andererseits vorteilhaft sein, eine neue aus den freien Neuronalschaltungen auszuwählende Neuronalschaltung zu besetzen. Diese beiden Fälle werden gesondert unter Bezug auf Fig. 15 genauer diskutiert.
  • Der linke Teil von Fig. 15 veranschaulicht den Fall einer fixierten Neuronalschaltung, die ausgelöst hat; der Lernprozess wird im Kasten START begonnen. Eine derartige Neuronalschaltung 11 wird zunächst in Kasten 48 daraufhin geprüft, ob die Eingangskategorie CAT und die lokale Kategorie C der Neuronalschaltung 11 gleich sind. Wenn sich CAT und C voneinander unterscheiden, bedeutet dies, dass die Neuronalschaltung 11 fälschlicherweise ausgelöst hat. Dies schließt auch den Fall mit CAT = 0 ein, da die lokale Kategorie einer fixierten Neuronalschaltung gezwungenermaßen ungleich Null ist. In diesem Fall ist das von der Identifizierungsschaltung 400 dieser ermittelten Neuronalschaltung ausgegebene Signal UNC/FIRE.OK gleich Null. Im. Modus LERNEN soll das Signal UNC/FIRE.OK anzeigen, dass ein Reduktionsprozess erforderlich ist. Der Reduktionsprozess dieser Neuronalschaltung 11 ist nötig, um ihren AlF-Wert zu verringern. Außerdem wird der errechnete Abstand D, der in einem zugeordneten Register der Bewertungsschaltung 200 gespeichert ist, in das AlF-Register 352 geladen (Kasten 49). Jetzt wird der Abstand D in der Vergleichsschaltung 300 mit MinIF verglichen, um das Signal LTE zu generieren. Wenn D kleiner oder gleich MinIF ist, wird die Neuronalschaltung 11 in Kasten 50 als entartet eingestuft, d. h., das in der Identifizierungsschaltung 400 generierte Signal DEG wird auf "aktiv" (DEG = 1) gesetzt. Praktisch wird in das Register DEG (als DEG. REG bezeichnet) eine "Eins" geladen, wie durch Kasten 51 veranschaulicht wird. Das Signal DEG fungiert als Steuersignal und bewirkt, dass der Wert MinIF gemäß Kasten 52 in das AlF-Register 352 geladen und dabei der vorige Wert D überschrieben wird. Der Ausgang NEIN von Kasten 50 und der Ausgang von Kasten 52 werden im gemeinsamen Knoten 53 zusammengeführt. Wenn in Kasten 48 CAT = C ist, dann bedeutet dies, dass die betrachtete Neuronalschaltung korrekterweise ausgelöst hat und ihr AlF deshalb keiner Reduzierung bedarf. Das Signal UNC/FIRE.OK dieser ermittelten Neuronalschaltung 11 wird auf "aktiv" (UNC/FIRE.OK = 1) gesetzt, wie in Kasten 54 veranschaulicht. Der Ausgang von Kasten 54 ist mit dem gemeinsamen Knoten 53 verbunden. Und schließlich werden in Kasten 55 der Minimalabstand Dmin und der Wert des globalen Ergebnissignals UNC/FIRE.OK* ermittelt. Beide Werte werden im Besetzungsprozess der lernbereiten Neuronalschaltung (sofern vorhanden) benötigt. Sie werden auf ihren jeweiligen Bussen zur Verfügung gestellt, wie oben unter Bezug auf Fig. 14 beschrieben, z. B. um im Register 184.1 zwischengespeichert zu werden.
  • Im rechten Teil von Fig. 15 wird der Besetzungsprozess der lernbereiten Neuronalschaltung 11 veranschaulicht. In diesem Fall entspricht der im Kasten START eingeleitete Prozess direkt dem Kasten ENDE in Fig. 14(A), d. h., das entspricht noch der Ebene der Neuronalschaltung. Zunächst wird in Kasten 56 der Wert der Eingangskategorie CAT geprüft, d. h. ob CAT gleich Null ist. Wenn CAT = 0, wird der Besetzungsprozess angehalten (man braucht nur, wie oben erwähnt, zum Reduktionsprozess der fixierten Neuronalschaltungen fortzuschreiten). Ist CAT jedoch nicht gleich Null, wird der Minimalabstand Dmin (dessen Wert im Kasten 55 ermittelt wurde) gemäß Kasten 57 in das AlF-Register 352 dieser lernbereiten Neuronalschaltung geladen. Wenn allerdings Dmin größer als MaxIF ist, wird stattdessen MaxIF geladen. Sodann wird in Kasten 58 ein Vergleich durchgeführt, um festzustellen, ob Dmin kleiner oder gleich MinIF ist. Lautet das Ergebnis JA, wird eine "Eins" in das Register DEG der Identifizierungsschaltung 400 und der Wert MinIF in das AlF- Register 352 (Kasten 59) geladen. Der Ausgang von Kasten 59 und der Ausgang NEIN von Kasten 58 werden im gemeinsamen Knoten 60 zusammengeführt. Dann wird der ebenfalls in Kasten 55 ermittelte Wert des globalen Ergebnissignals UNC/FIRE.OK* auf der Ebene des neuralen Netzes geprüft. Durch diese Prüfung wird festgestellt (Kasten 61), ob der Eingangsvektor von mindestens einer Neuronalschaltung mit der richtigen Kategorie erkannt worden ist. Wenn das Signal UNC/FIRE.OK* = 1 ist, bedeutet dies, dass der Eingangsvektor von mindestens einer Neuronalschaltung mit der richtigen Kategorie korrekt erkannt worden ist. In diesem Fall ist es möglicherweise nicht nötig, eine neue Neuronalschaltung zu besetzen, und die Lernphase wird dann normalerweise an diesem Punkt des Besetzungsprozesses angehalten. Wenn hingegen das Signal UNC/FIRE.OK* ungleich Eins ist (UNC/FIRE.OK* = 0), wird der Besetzungsprozess fortgesetzt. Die Eingangskategoriedaten CAT werden über den CAT-BUS in das Kategorieregister 450 und die Norm-/Kontexteingangsdaten über den NO/CXT-BUS der lernbereiten Neuronalschaltung in das NO/CXT- Hauptregister 17 geladen (Kasten 62). Schließlich wird das Signal ST aktiviert, um den am Eingangsterminal DCI der Daisy- Chain-Schaltung 600 der lernbereiten Neuronalschaltung anliegenden Wert "Eins" in deren Register DAISY zu verschieben, was durch Kasten 63 veranschaulicht wird. Der Besetzungsprozess ist jetzt beendet und die lernbereite Neuronalschaltung hat soeben gelernt. Die Eingangs- und Ausgangssignale der Daisy- Chain-Schaltung dieser soeben besetzten Neuronalschaltung sind gleich Eins. Die Lernphase ist abgeschlossen, wenn der Wert AlF aller fixierten Neuronalschaltungen, die fälschlicherweise ausgelöst haben, neu eingestellt wurde und/oder die neu besetzte Neuronalschaltung ihren Wert AlF bestimmt und ihre lokalen Kategorie- sowie Norm/Kontext-Register richtig geladen hat. Alternativ kann die in Kasten 61 abgeschlossene Prüfung auch zwischen den Kästen 56 und 57 durchgeführt werden.
  • Unmittelbar nach der Initialisierung, wenn also noch keine Neuronalschaltung des neuralen Netzes 11(A) gelernt hat, sind alle Neuronalschaltungen frei. Während der Erkennung des allerersten dem neuralen Netz 11(A) vorgelegten Eingangsvektors werden dessen Komponenten über den INDATA-BUS nacheinander an die Schreib-/Lese-Speicherschaltung 250 jeder Neuronalschaltung des ZISC-Chips 10 eingespeist. Die in der Abstandsbewertungsschaltung 200 durchgeführte Berechnung und der in der Abstandsvergleichsschaltung 300 einer beliebigen Neuronalschaltung durchgeführte Vergleich sind natürlich ohne Bedeutung. Da der erste Eingangsvektor von keiner Neuronalschaltung des neuralen Netzes 11(A) erkannt wurde, generiert jede Identifizierungsschaltung 400 ein lokales Auslöseergebnissignal F, das zusammen mit anderen F-Signalen in der ODER-Schaltung 12 der ODER-Verknüpfung unterzogen wird, um ein globales Auslöseergebnissignal, das gleich Null ist (F* = 0), zu erzeugen. Die lernbereite Neuronalschaltung, d. h. 11-1, muss deshalb, wie oben erklärt, diesen Eingangsvektor lernen. Als ein Ergebnis der Erkennungsphase sind jedoch die Komponenten dieses ersten Eingangsvektors zuvor in ihr gespeichert worden und diese erste (freie) Neuronalschaltung ist nun vorgeladen. Jetzt muss diese erste Neuronalschaltung, wie oben unter Bezug auf Fig. 15 beschrieben, nur noch besetzt werden, damit der erste Eingangsvektor als erster Prototypvektor gespeichert wird. In diesem Fall wird, wie zu beachten ist, der Wert MaxIF in das AlF-Register 352 geladen.
  • Aus diesem Grund ist ein effizientes Verfahren zum Vorladen der Komponenten des Eingangsvektors A in die Schreib-/Lese- Speicherschaltung 250 während der Erkennungsphase in den ZISC- Chip 10 implementiert worden. Darüber hinaus wird die lernbereite Neuronalschaltung leicht erkannt, da sie die einzige Neuronalschaltung des neuralen Netzes 11(A) ist, deren Signale DCI und DCO zueinander komplementär sind. Im Gegensatz zu neuralen Netzen nach dem Stand der Technik, die die Speicherung der Eingangsvektorkomponenten in einem vorgelagerten Schritt der Lernphase (während dessen der Eingangsvektor erneut dem neuralen Netz vorgelegt wird) im ZISC-Chip 10 erfordern, sind die Komponenten gemäß der vorliegenden Erfindung bereits zuvor, während der Erkennungsphase eines Eingangsvektors, in die Schreib-/Lese-Speicherschaltung 250 geladen worden. Im Ergebnis dessen wird die lernbereite Neuronalschaltung automatisch und unverzüglich vorgeladen, d. h. auf das anschließende Besetzen vorbereitet, falls das neurale Netz selbst dies verlangen sollte. Eine vorgeladene Neuronalschaltung wird jedoch so lange nicht als besetzt angesehen, wie die Eingangskategorie CAT noch nicht in das Kategorieregister 450 der Neuronalschaltung 11 geladen und das Signal ST noch nicht auf "aktiv" gesetzt wurde, um eine "Eins" in das Register DAISY der Daisy-Chain-Schaltung 600 zu laden. In allen Fällen, in denen das Lernen nicht erforderlich ist, werden die gespeicherten Komponenten überschrieben, wenn die Komponenten des nächsten Eingangsvektors in einer nachfolgenden Erkennungsphase auf dem INDATA-BUS vorgelegt werden. Sobald diese Neuronalschaltung besetzt worden ist, verhindert das Steuersignal RS jegliche nachfolgende SCHREIB-Operation in deren Schreib-/Lese-Speicherschaltung 250.
  • Zusammenfassend kann gesagt werden, dass der Lernmodus im ZISC- Basis-Chip 10 das Besetzen der lernbereiten Neuronalschaltung beinhaltet, sobald der zu lernende Eingangsvektor in der Schreib-/Lese-Speicherschaltung 250 der lernbereiten Neuronalschaltung gespeichert worden ist (wie oben unter Bezug auf den während jeder Erkennungsphase ausgeführten Modus VORLADEN beschrieben wurde). Dieser Besetzungsprozess endet, wenn die gewünschte Eingangskategorie in das Kategorieregister 450 und eine "Eins" in das Register DAISY der Daisy-Chain- Schaltung 600 geladen wird. Die Lernphase umfasst auch den Reduktionsprozess, der eventuell erforderlich sein kann, um den neuen Wert zu ermitteln, der in das AlF-Register 352 derjenigen fixierten Neuronalschaltungen, die fälschlicherweise ausgelöst haben, geladen werden muss. Alle entsprechenden Schritte der Lernphase werden vom neuralen Basisnetz 11(A) selbst ausgeführt. Neueinstellungen werden in allen Neuronalschaltungen des neuralen Netzes gleichzeitig und automatisch durchgeführt und erfordern keinerlei externe Überwachung, wie beispielsweise durch den Mikrocontroller/Benutzer 22. Somit ist der Lernprozess vollkommen intern und automatisch. Die Zustandsschaltung 183 steuert parallel die zeitliche Reihenfolge der Reduktions- und Besetzungsprozesse aller Neuronalschaltungen, die betroffen sind. Außerdem unterscheiden sich die Erkennungs- und die Lernphase wegen des Merkmals des Vorladens im Gegensatz zu herkömmlichen neuralen Netzen und gemäß einem Hauptmerkmal der vorliegenden Erfindung nicht vollständig voneinander.
  • SPEICHERMODUS UND WIEDERHERSTELLUNGSMODUS
  • Der ZISC-Basis-Chip 10 bietet schließlich auch noch zwei andere nützliche Betriebsmodi: den Modus SPEICHERN (SAVE) und den Modus WIEDERHERSTELLEN (RESTORE). Da in der vorliegenden Implementierung des ZISC-Chips 10 keine EPROMs (löschbare programmierbare Nur-Lese-Speicher) enthalten sind, gehen alle in den verschiedenen Registern des ZISC-Chips 10 gespeicherten Informationen beim Ausschalten verloren. Aus diesem Grund sind die Modi SPEICHERN und WIEDERHERSTELLEN höchst wünschenswert. Während der Speicherphase kann der Mikrocontroller/Benutzer 22 auf alle in den verschiedenen Registern des ZISC-Basis-Chips 10 (einschließlich der in den Registern der Neuronalschaltungen) gespeicherten wertvollen Daten zugreifen (Operation LESEN) und diese dann speichern. Beispielsweise betrifft dies die Komponenten (Gewichte) des in der Schreib-/Lese- Speicherschaltung 250 gespeicherten Prototypvektors B, den im AlF-Register 352 gespeicherten Wert AlF, die im Kategorieregister 450 gespeicherte lokale Kategorie, die im Register 100 gespeicherten lokalen Norm-/Kontextdaten, die Installationsparameter usw. Eine Festplatte stellt in dieser Hinsicht ein geeignetes Speichermittel zum Speichern dieser Daten dar. Der Modus WIEDERHERSTELLEN besteht im Grunde aus den umgekehrten Schritten. Aus verschiedenen Gründen kann der Mikrocontroller/Benutzer 22 wünschen, beliebige dieser Daten zum wiederherstellen in ihre jeweiligen Register zu laden (Operation SCHREIBEN). Während der Wiederherstellungsphase ist es wichtig, dass in eine beliebige Neuronalschaltung entweder ihre eigenen Daten oder bei Bedarf beliebige andere gewünschte Daten geladen werden. Es muss also eine ideale Kommunikation zwischen den Datenregistern und den Registern der Neuronalschaltungen bestehen. Bei der vorliegenden Implementierung des ZISC-Chips 10 nutzen der Modus SPEICHERN und der Modus WIEDERHERSTELLEN die Vorteile des Multiplexers 501 in der Dmin-Bestimmungsschaltung 500 (Fig. 8) und die der Daisy-Chain-Schaltung 600 eigenen Eigenschaften in vorteilhafter Weise.
  • Zuerst soll der Modus SPEICHERN betrachtet werden. Der Multiplexer 501 in Fig. 8 wird während der Speicherphase in geeigneter Weise aktiviert, um aus seinen drei Eingangsbussen den gewünschten Eingangsbus (und damit die Daten) auszuwählen. Je nach den über den IADD/CTL-BUS an den Multiplexer 501 angelegten Auswahlsignalen werden entweder die lokalen Kategoriedaten C, die lokalen Norm-/Kontextdaten No/Cxt oder die vom J-BUS kommenden Daten als ein erstes Eingangssignal an die Such-/Sortierschaltung 502 angelegt. Je nach den über den IADD/CTL-BUS an den Multiplexer 351 (siehe Fig. 7) angelegten Auswahlsignalen kann das Signal J wiederum die Inhalte des AlF- Registers 352 oder die auf dem DIST-BUS der betrachteten Neuronalschaltung 11 erscheinenden Daten oder den auf dem MaxIF/MinIF-BUS erscheinenden Wert MaxIF/MinIF repräsentieren. Die Daisy-Chain-Schaltung 600 wird zum Auswählen der geeigneten Neuronalschaltung verwendet. Dieselben Prinzipien, die oben bei der ersten freien Neuronalschaltung beschrieben wurden, können auch hier angewendet werden. Um die Komponenten des Prototypvektors B nacheinander auf dem DIST-BUS erscheinen zu lassen, genügt es, einen Eingangsvektor A vorzulegen, dessen Komponenten alle gleich Null sind (siehe Fig. 5). Schließlich werden alle diese zu einer Neuronalschaltung gehörenden Daten nacheinander über deren NOUT-BUS und die ODER-Schaltung 12 von der Dmin-Bestimmungsschaltung 500 dieser ermittelten Neuronalschaltung auf dem OUT*-BUS ausgegeben (alle anderen Signale NOUT werden auf einen neutralen Logikpegel gesetzt).
  • Zusammenfassend ergibt sich für den Modus SPEICHERN Folgendes: Die zu speichernden Daten werden vom Mikrocontroller/Benutzer 22 durch sequenzielles Auswählen der entsprechenden Daten über Steuersignale gelesen, um dann auf dem COM*-BUS ausgegeben zu werden; anschließend können sie über den M-BUS im Register 184.1 gespeichert oder, je nachdem, über einen (nicht dargestellten) Multiplexer direkt auf dem INDATA-BUS zur Verfügung gestellt werden. Die Daten werden auf Anforderung des Mikrocontrollers/- Benutzers 22 gemäß einer in der Logikschaltung 182 befindlichen Schnittstellenschaltung unter Kontrolle der Zustandsschaltung 183 auf dem INDATA-BUS ausgegeben. Die Daisy-Chain-Schaltung 600 garantiert, dass zu jedem Zeitpunkt jeweils nur eine Neuronalschaltung ausgewählt wird.
  • Beim Modus WIEDERHERSTELLEN werden die Daten vom Mikrocontroller/Benutzer 22 über den INDATA-BUS geladen. Über den IADD/CTL-BUS wird nacheinander jedes Register ausgewählt, um die Daten korrekt darin zu speichern. Gleiche Überlegungen gelten für die Schreib-/Lese-Speicherschaltung 250 jeder Neuronalschaltung.
  • Der Modus SPEICHERN oder der Modus WIEDERHERSTELLEN erfordern einige wenige Schritte. Zuerst stellt der Mikrocontroller/- Benutzer 22 den entsprechenden Modus ein (SPEICHERN oder WIEDERHERSTELLEN). Jeder Modus weist einen vorbereitenden Schritt auf, in dem alle Register DAISY des ZISC-Chips 10 zurückgesetzt werden. Der Mikrocontroller/Benutzer 22 wählt durch Senden der entsprechenden Adresse auf dem SEL/CTL-BUS die richtigen Daten aus, die zum richtigen Register oder zur Schreib-/Lese-Speicherschaltung 250 gehören. Unter der Kontrolle der Daisy-Chain-Schaltungen 600 werden die Neuronalschaltungen gemäß demselben Mechanismus nacheinander bearbeitet, wie oben beim Besetzungsprozess unter Bezug auf Fig. 15 beschrieben wurde. Dieser Schritt wird für jedes Register so oft wie erforderlich wiederholt. Die Neuronalschaltungen werden nacheinander gelesen oder beschrieben, bis hin zur ersten Neuronalschaltung, deren Wert der lokalen Kategorie gleich Null ist. Der Inhalt des lokalen Kategorieregisters 450 stellt somit ein geeignetes Mittel dar, um das Ende jedes Modus zu erkennen. Am Ende der Speicher- oder Wiederherstellungsphase befinden sich alle Register der Neuronalschaltungen, einschließlich der Register DAISY der Daisy-Chain-Schaltungen 600, wieder im Ausgangszustand, d. h. in demselben Zustand, in dem sie sich vor Beginn der Speicher- oder Wiederherstellungsphase befunden hatten. Nachdem alle betroffenen Register gelesen oder beschrieben worden sind, besteht schließlich der letzte Schritt darin, entweder in den Modus ERKENNEN oder den Modus LERNEN zurückzukehren. Der vorliegende Ansatz erfordert nur einen sehr geringen Schaltungsaufwand, da in jedem Modus für den Zugriff auf ein zugeordnetes Register der Neuronalschaltungen dieselben Verarbeitungsschritte Anwendung finden. Außerdem unterliegt die Zahl der Neuronalschaltungen, die entweder in den Modus SPEICHERN oder in den Modus WIEDERHERSTELLEN versetzt werden können, keinerlei Einschränkung.
  • Ähnliche Überlegungen gelten für das neurale Basisnetz 11(A) von Fig. 4(B) und können des Weiteren auf beliebige im Elementarmodul von Fig. 11 oder im Komplexmodul von Fig. 12 eingebaute neurale Netze erweitert werden. Dies ist eine direkte Folge der vollkommen parallelen Architektur des ZISC-Basis-Chips 10. Die erste globale ODER-Funktion wird in den entsprechenden zweckbestimmten Teilschaltungen der ODER-Schaltung 12 durch ODER-Verknüpfung der lokalen Ergebnis- und Ausgangssignale ausgeführt, um für jeden der ZISC-Chips 10(1) bis 10(Q) die globalen Ergebnissignale R* und Ausgangssignale OUT* zu erzeugen. Diese in Fig. 11 mit R*(1) bis R*(Q) bzw. OUT*(1) bis OUT*(Q) bezeichneten globalen Signale wiederum werden auf dem COM**-BUS erneut durch die ODER-Operation verknüpft, um die globalen Signale R** bzw. OUT** zu erzeugen. Wie in Fig. 11 ersichtlich steht der COM**-BUS sämtlichen Chips, die das Elementarmodul 10[A] bilden, welches das neurale Komplexnetz 11[A] enthält, gemeinsam zur Verfügung. In dem Fall, dass mehrere ZISC-Basis-Chips 10 zusammengebaut werden, kann die gemäß der Implementierung von Fig. 4(B) in jedem ZISC-Chip 10 optional zur Verfügung stehende Dmin-Bewertungs-Hauptschaltung 20 vorteilhaft zur Bestimmung des Minimalabstands Dmin zwischen den fixierten Neuronalschaltungen verwendet werden, welche zu all den Chips gehören, die das Elementarmodul 10[A] oder ein Komplexmodul 10{A} bilden. Im Ergebnis der sich daraus ergebenden seriellen Verknüpfbarkeit der Neuronalschaltungen und der Chips ist die Betriebsweise jedes neuralen Netzes entweder des in Fig. 11 veranschaulichten Typs 11[A] oder des in Fig. 12 veranschaulichten Typs 11{A} in jeder Hinsicht identisch der Betriebsweise des unter Bezug auf die Fig. 13 bis 15 beschriebenen neuralen Netzes 11(A) von Fig. 4(A). Die Unterscheidung zwischen einem neuralen Basisnetz, einem neuralen Elementarnetz und einem neuralen Komplexnetz ist für den Mikrocontroller/Benutzer 22 ohne Belang. Anders gesagt, die Anzahl der ZISC-Chips 10 (die jeweils ein neurales Basisnetz enthalten), die zu Elementarmodulen zusammengebaut sind, welche wiederum zu einem Komplexmodul zusammen gebaut sind, ergeben schließlich ein neurales Komplexnetz der gewünschten Größe, dessen Gesamtzahl von Neuronalschaltungen für den Mikrocontroller/Benutzer 22 völlig transparent ist. Darüber hinaus ist die Arbeitsweise eines solchen neuralen Netzes von dessen Größe unabhängig. Aus diesem Grund werden die oben erwähnten unterschiedlichen Typen von neuralen Netzen im Folgenden durch den Oberbegriff "neurale Netze" bezeichnet, sofern eine Unterscheidung zwischen ihnen nicht erforderlich ist.
  • DETAILLIERTE BESCHRETBUNG DES ZISC-BASIS-CHIPS KONTEXTREGISTER UND ABGLEICHSCHALTUNG (100/150)
  • Fig. 16 veranschaulicht den detaillierten Aufbau der Abgleichschaltung 150, deren Aufgabe darin besteht, die Neuronalschaltung 11 auszuwählen bzw. nicht auszuwählen. Die Abgleichschaltung 150 umfasst zunächst die NOR-Schaltung 151, die prüft, ob der Kontexteingangswert CXT gleich Null ist. Wenn der im NO/CXT-Hauptregister 17 gespeicherte Kontexteingangswert CXT gleich Null ist, wird eine logische "Eins" generiert und an den ersten Eingang eines Zweiwege-ODER-Gatters 152 angelegt. Gemäß Fig. 16 befindet sich zwar in jeder Neuronalschaltung eine NOR-Schaltung 151, jedoch ist auch eine einzige, dem ganzen ZISC-Basis-Chip 10 gemeinsame NOR-Schaltung denkbar (als einzelnes NO/CXT-Hauptregister 17, das allen Neuronalschaltungen von ZISC-Chips 10 gemeinsam zur Verfügung steht). Die NOR- Schaltung 151 besteht aus einem 7-Wege-NOR-Gatter. Die Abgleichschaltung 150 umfasst ferner eine XOR-Schaltung 153, die die Kontexteingangsdaten CXT und die lokalen Kontextdaten Cxt miteinander vergleicht. Die XOR-Schaltung 153 besteht im Grunde aus sieben Zweiwege-XOR-Gattern. Das von der XOR-Schaltung 153 ausgegebene Signal wird an die NOR-Schaltung 154 angelegt. Letztere besteht im Grunde aus einem 7-Wege-NOR-Gatter. Das von der NOR-Schaltung 154 generierte Signal wird an den zweiten Eingang des ODER-Gatters 152 angelegt. Das am Ausgang des ODER- Gatters 152 generierte Signal ist das oben erwähnte Signal NS (Neuron Selection, Neuronenauswahl). Wenn das Signal NS aktiv ist (NS = 1), wird die Neuronalschaltung 11 ausgewählt. Zusammenfassend kann man sagen, dass eine Neuronalschaltung 11 nur dann ausgewählt wird, wenn der Kontexteingangswert gleich Null ist oder wenn er mit dem lokalen Kontext übereinstimmt.
  • Fig. 17 veranschaulicht die Grundlagen des der offengelegten Implementierung des ZISC-Chips 10 zugrunde liegenden Kontextansatzes. Alle Neuronalschaltungen 11-1 bis 11-N arbeiten parallel mit denselben Kontexteingangsdaten CXT, die im Kontextanteil des NO/CXT-Hauptregisters 17 gespeichert sind. Während des Besetzungsprozesses einer ermittelten Neuronalschaltung, z. B. Neuronalschaltung 11, werden Daten aus dem NO/CXT-Hauptregister 17 über den CXT-BUS in den lokalen Kontextanteil im No/Cxt-Register 100 geladen. Durch den Kontextmechanismus kann für eine bestimmte Aufgabe die dynamische Auswahl einer festgelegten Anzahl von Neuronalschaltungen erfolgen, die das neurale Basisnetz 11(A) bilden. Beispielsweise besteht ein typisches Beispiel einer Kontextanwendung in der selektiven Erkennung einer Reihe von Eingangsvektoren durch ein neurales Netz durch zwei Gruppen von Neuronalschaltungen. Die erste, entsprechend der Norm L1 besetzte, Gruppe empfängt einen ersten Kontext (Kontext1) und die zweite, entsprechend der Norm Lsup besetzte, Gruppe empfängt einen zweiten Kontext (Kontext2). Wenn es erforderlich sein sollte, zur Erkennung eines Eingangsvektors lediglich durch die entsprechend der Norm L1 besetzten Neuronalschaltungen überzugehen, kann man dank der Kontextdifferenzierung leicht die Kontexte der ersten Gruppe auswählen und die der zweiten Gruppe ausschließen. Ein anderes typisches Beispiel betrifft den Fall, dass einige Neuronalschaltungen mit einem Eingangsvektor einer ersten Länge (z. B. n = 64) und andere mit einem Eingangsvektor einer zweiten Länge (z. B. n = 32) gelernt haben. Wenn dem neuralen Basisnetz 11(A) Eingangsvektoren der zweiten Gruppe vorgelegt werden, müssen die Neuronalschaltungen der ersten Gruppe inhibiert werden, da deren Antwort nicht signifikant ist.
  • Das oben beschriebene Konzept kann jedoch verallgemeinert werden. Man gehe von der Annahme aus, dass jede Neuronalschaltung 11 einer Basis-Verarbeitungseinheit entspricht. Eine aus einer Vielzahl solcher Basis- Verarbeitungseinheiten aufgebaute Mehrprozessoreinheit möge ebenso wie das neurale Basisnetz 11(A) ein Eingangsdatenmuster parallel verarbeiten. In manchen Fällen kann es erforderlich sein, die Eingangdatenmuster lediglich einer oder einigen wenigen Basis-Verarbeitungseinheiten zuzuleiten. Der vorliegende Kontextansatz vermeidet die Notwendigkeit, den Muster-Dispatcher (Musterzuteiler) zu konstruieren, der normalerweise vor jeder Mehrprozessoreinheit erforderlich gewesen wäre. Solche herkömmlichen Dispatcher weisen bekanntlich hoch komplexe Schaltungen auf. Gemäß dem vorliegenden Kontextansatz würde sich dieser Dispatcher auf ein einziges Kontexthauptregister reduzieren (welches dem NO/CXT-Hauptregister 17 von Fig. 17 entspräche). Jede Basis-Verarbeitungseinheit wiederum würde dann lokal mit einem zugeordneten lokalen Kontextregister (welches dem lokalen No/Cxt-Register 100 entspräche) und mit einem Bus versehen, der das Kontexthauptregister mit dem lokalen Kontextregister aller Basis-Verarbeitungseinheiten verbinden würde, die die Mehrprozessoreinheit bilden. Bei einer solchen Implementierung wird folglich vor dem Eingangsdatenmuster ein Kontexteingangssignal direkt in das Kontexthauptregister geladen, bevor der Mehrprozessoreinheit ein Eingangsdatenmuster vorgelegt wird, das in einer (oder mehreren) festgelegten Basis- Verarbeitungseinheiten verarbeitet werden soll. Stimmt der Inhalt des lokalen Kontextregisters mit dem im Kontext- Hauptregister gespeicherten Kontexteingangswert überein, dann wird dieses Eingangsdatenmuster (und, falls sich der Kontextwert nicht ändert, auch die Folgenden) von dieser festgelegten Verarbeitungseinheit verarbeitet. Eine zusätzliche zweckbestimmte Schaltung kann alle Basis-Verarbeitungseinheiten auswählen, sobald der Eingangskontext gleich Null ist. Der durch das obige Kontextmerkmal in Form verlangsamter Datenverarbeitung eingeführte Nachteil wird auf ein absolutes Minimum reduziert. Offensichtlich besteht dieser Nachteil nicht, wenn das Kontextmerkmal keine Anwendung findet (in diesem Fall muss der Inhalt des Kontext-Hauptregisters gleich Null sein). Das Einfügen eines Kontextwertes in das Eingangsdatenmuster erweist sich jedoch als nachteilig, sobald der Eingangskontext aktualisiert werden muss. Die stärkste Beeinträchtigung ergibt sich, wenn nach jedem Eingangsdatenmuster ein neuer Kontextwert eingefügt wird. Zusammenfassend kann man sagen, dass man durch die Einführung des Kontextmerkmals in eine Mehrprozessoreinheit die Flexibilität gewinnt, diese entweder als Einzeleinheit oder als deren separate Untereinheiten zu konfigurieren, die unabhängig voneinander arbeiten können, ohne den Betrieb der Anderen zu beeinträchtigen. Der oben beschriebene Kontextansatz, der vollständig auf einer Hardwarelösung beruht, stellt daher ein wesentliches Merkmal der vorliegenden Erfindung dar.
  • DIE SCHREIB-/LESE-SPEICHERSCHALTUNG 250
  • Fig. 18 besteht aus den Fig. 18(A), (B) und (C). Fig. 18(A) zeigt den detaillierten Aufbau der Schreib-/Lese- Speicherschaltung 250, die einen 64 · 8-Bit-RAM-Speicher 251 (für gewöhnlich als Gewichtsspeicher bezeichnet), den Adresszähler 252 und optional ein Register 253 umfasst. Das Signal A repräsentiert die Komponenten des Eingangsvektors, die auf dem DATA-BUS vom A-Register 13 ausgegeben werden. Das Signal B repräsentiert die Komponenten des Prototypvektors, die auf dem RAM-BUS vom Register 253 (sofern vorhanden) ausgegeben werden. Die Schreib-/Lese-Speicherschaltung 250 kann das Register 253 zum Zwischenspeichern der Daten enthalten, die vom RAM-Speicher 251 ausgegeben werden. Im Ergebnis dessen ist der RAM-Speicher 251 im Verlauf der automatischen Prüfungen, die während der Herstellung des ZISC-Chips 10 durchgeführt werden, isoliert. In diesem Fall wäre, wenn das Register 253 verwendet werden sollte, ein in den Datenpfad des Eingangsvektors eingefügtes (nicht gezeigtes) zusätzliches Register empfehlenswert, um die beiden Pfade zur Bewertungsschaltung 200 zum Zweck des Pipelinebetriebs im Synchronmodus (BURST) auszugleichen. Das Register 253 ist ein freilaufendes Register, d. h., die Daten werden in jedem Zyklus hineingeladen, wohingegen das Laden in das A-Register 13 durch ein Steuersignal gesteuert wird. Der Adresszähler hat die Aufgabe, die Komponenten des Eingangsvektors zu zählen und den RAM-Speicher 251 richtig zu adressieren. Der Zähler 252 wird durch zwei Steuersignale gesteuert: NEXTC (NEXT Component, Nächste Komponente), um die Komponenten nacheinander zu laden, und FCOMP (First COMPonent, erste Komponente) zum Rücksetzen des Zählers vor dem Laden der ersten Komponente. Der Zähler 252 wird daher zu Beginn einer neuen Erkennungsphase durch das Signal FCOMP zurückgesetzt und bei jedem Vorlegen einer Komponente durch das Signal NEXTC um Eins erhöht. Der Adresszähler 252 ist in der Schreib-/Lese-Speicherschaltung 250 gezeigt worden, könnte jedoch an einer beliebigen Stelle in der Neuronalschaltungsarchitektur von Fig. 5 angebracht werden. In der Praxis befindet er sich gemäß der vorliegenden Implementierung des ZISC-Chips 10 in der Zustands- und Steuerlogikschaltung 18. In diesem Fall generiert der Adresszähler 252 die RAM-Adresssignale, die dann allen Neuronalschaltungen des ZISC-Chips 10 gemeinsam zur Verfügung stehen. Der RAM-Speicher 251 ist ein 1-Port-RAM. Das Register 253 könnte mit einem komplementären Ausgang versehen werden, falls die Verarbeitung des Signals B in der Abstandsbewertungsschaltung 200 dies erfordern sollte. Die Schaltung, die das Signal RS generiert, wird im Folgenden unter Bezug auf die Daisy-Chain-Schaltung 600 beschrieben. An diesem Punkt der Beschreibung genügt die Feststellung, dass das Signal RS, das an den RAM-Speicher 251 der Neuronalschaltung 11 angelegt wird, für alle besetzten Neuronalschaltungen "inaktiv" und nur für das erste freie Neuron, d. h. die lernbereite Neuronalschaltung, "aktiv" ist, um das Vorladen der Komponenten des Eingangsvektors in den RAM-Speicher 251 zuzulassen. Das Signal RS entspricht in etwa dem herkömmlichen Schreib-/Lese- Signal, das gegenwärtig in jedem Standard-RAM-Speicher verwendet wird. Wenn das Signal RS "aktiv" ist (RS = 1), wird der RAM- Speicher 251 beschrieben, d. h., die Komponenten werden unter der Kontrolle des Adresszählers nacheinander geladen. Wenn hingegen das Signal RS "inaktiv" ist (RS = 0), kann der Inhalt des RAM-Speichers 251 nur gelesen werden. In Fig. 18(B) wird der Datenfluss für eine besetzte Neuronalschaltung während der Erkennungsphase gezeigt. Die Komponenten des Eingangsvektors A werden nur in das Register 13, aber nicht in den RAM-Speicher 251 geladen, weil das Signal RS "inaktiv" ist. Daher wird keine Komponente des Eingangsvektors in den RAM-Speicher 251 einer besetzten Neuronalschaltung geschrieben (der Pfad zum RAM- Speicher 251 ist leer dargestellt), weil ein solches Beschreiben die Integrität der darin gespeicherten Komponenten des Prototypvektors beeinträchtigen würde. Die Signale A und B stehen zum Vergleich in der Abstandsbewertungsschaltung 200 zur Verfügung. Fig. 18(C) zeigt den Datenfluss für die erste freie lernbereite Neuronalschaltung, ebenfalls während der Erkennungsphase. In diesem Fall werden die Komponenten des Eingangsvektors im RAM-Speicher 251 als die Gewichte des neuen Prototypvektors gespeichert, wenn das Steuersignal RS auf "aktiv" gesetzt worden ist. Wie in Fig. 18(C) durch die leer dargestellten Pfade veranschaulicht, werden die Signale A und B im Fall der lernbereiten Neuronalschaltung von der Abstandsbewertungsschaltung 200 nicht benutzt. Die Implementierung des Vorladeschrittes erfordert also Schreib-/ Lese-Speicherschaltung 250 und eine Schaltung, die das Signal RS generieren und die ermittelte freie Neuronalschaltung kennzeichnen kann, in deren Gewichtsspeicher die Komponenten des Eingangsvektors geladen werden müssen. Bei der vorliegenden Implementierung des ZISC-Basis-Chips 10 wird die Aufgabe dieser Schaltung von der Daisy-Chain-Schaltung 600 übernommen. Diesbezüglich bilden die Schreib-/Lese-Speicherschaltung 250 und die Daisy-Chain-Schaltung 600 somit die "Vorladeschaltung". Dieser Schritt des Vorladens der Komponenten des Eingangsvektors in den RAM-Speicher 251 der lernbereiten Neuronalschaltung während der Erkennungsphase stellt ein wichtiges Merkmal der vorliegenden Erfindung dar. Im Vergleich zu bekannten Lösungen nach dem Stand der Technik weist dieser Vorladeschritt einen wesentlichen Vorteil auf, da durch ihn das erneute Vorlegen des Eingangsvektors während der Lernphase vermieden wird; dies spart viel Zeit ein, sollte die lernbereite Neuronalschaltung als besetzt bestätigt werden.
  • DIE ABSTANDSBEWERTUNGSSCHALTUNG 200
  • In Fig. 19 wird der innere Aufbau des Mehrnorm- Abstandsbewertungsblocks 200 veranschaulicht, der im Wesentlichen aus zwei Teilschaltungen 201 und 202 sowie optional einem Register 203 besteht. Der 8-Bit-DATA-BUS (der die Komponenten des Eingangsvektors A transportiert) und der 8-Bit- RAM-BUS (der die Komponenten des Prototypvektors B transportiert) sind an beide Unterblöcke 201 angeschlossen, während das lokale Normsignal No an die Unterblöcke 201 und 202 angelegt wird. Der Block 200 generiert auf dem 14-Bit-DIST-BUS das Abstandssignal D. Es ist zu beachten, dass wenn der Mikrocontroller/Benutzer 22 einen Eingangsvektor A vorlegt, dessen sämtliche Komponenten gleich Null sind, der Abstandsbewerter 200 (im Fall der Norm L1) auf dem DIST-BUS alle Komponenten des Prototypvektors B ausgeben kann. Diese Eigenschaft findet im so genannten SPEICHER-Modus Anwendung. Der RAM-Speicher 251 und die Unterblöcke 201 und 202 der Abstandsbewertungsschaltung 200 bilden gemeinsam eine dreistufige Pipelinestruktur.
  • Wie oben erwähnt arbeitet der Block 200 gemäß einem wesentlichen Merkmal der vorliegenden Erfindung als eine Verarbeitungseinheit und ist dafür eingerichtet, den Abstand entweder nach der Norm L1 (MANHATTAN) oder nach der Norm Lsup (QUADRAT) mit einer Schaltlogik zu berechnen, welche so optimiert worden ist, dass sie nur eine minimale Anzahl von Bauelementen verwendet. Das auf dem 1-Bit-No-BUS transportierte lokale Normsignal No wird dazu verwendet, die bei der Abstandsberechnung zu verwendende gewünschte Norm auszuwählen. Wenn das Normsignal No gleich 1 ist, wird der Abstand zwischen dem Eingangsvektor A und dem Prototypvektor B nach der Norm L1 berechnet; wenn das Normsignal No gleich 0 ist, wird der Abstand hingegen nach der Norm Lsup berechnet. Unter Benutzung der oben verwendeten Bezeichnungsweise, d. h. A = A1, ..., Ai, ..., An und B = B1, ..., Bi, ..., Bn (jede Komponente Ai oder Bi wird mit m Bits codiert), wird der berechnete Abstand D für die Norm L1 gleich sum(abs(Ai-Bi)) bzw. für die Norm Lsup gleich max(abs(Ai-Bi)) sein (mit i = 1, ..., n). Die Abkürzung abs bedeutet "Absolutwert". Das folgende Beispiel veranschaulicht diese Feststellung. Wenn man die aus vier Komponenten bestehenden Vektoren A = 7 1 8 2 und B = 6 3 4 5 betrachtet, ist dieser Abstand nach der Norm L1 gleich 10 und nach der Norm Lsup gleich 4.
  • Zur Verallgemeinerung werde angenommen, dass das von Block 200 auf dem DIST-BUS generierte Abstandssignal D aus den Bits d0, ..., dp-1 besteht. Die Anzahl von p Bits für das Abstandssignal D hängt von der verwendeten Norm ab. Für die Norm Lsup ist p = m (die gleiche Anzahl Bits), während die Anzahl der Bits bei der Norm L1 von der Anzahl der Komponenten n abhängt. Beispielsweise ist die maximale Anzahl durch die Norm L1 für n = 4 durch (2**8)*4 = 1024 gegeben und das Ergebnis muss daher mit 10 Bits codiert werden, weil 2**10 = 1024. Bei der beschriebenen Implementierung des ZISC-Chips 10 werden n = 64 Komponenten mit m = 8 Bits codiert, was einer tatsächlichen Anzahl von (2**8)*64 = 2**14 entspricht und somit erklärt, warum der DIST-BUS in Fig. 19 eine Breite von 14 Bit aufweist.
  • Der Teilblock 201 errechnet den Absolutwert der Differenz zwischen zwei entsprechenden Komponenten Ai und Bi der Eingangs- bzw. Prototypvektoren, d. h. (abs(Ai-Bi)). Zur Berechnung der Differenz (Ai-Bi) ist die Berechnung der Summe (Ai + (Bi)) in einem Summierer erforderlich, wozu Bi, das Komplement von Bi, benötigt wird. In Abhängigkeit von der Polarität des von der Schreib-/Lese-Speicherschaltung 250' ausgegebenen Signals B kann in einem Eingangspfad des Summierers 205 eine Batterie von m = 8 Invertern 204 möglicherweise benötigt werden. Der Summierer 205 ist speziell so entworfen worden, dass er bezüglich Dichte und Geschwindigkeit die Anforderungen der vorliegenden Erfindung erfüllt. Der Summierer 205 errechnet den von den Bits 0 bis m-1 generierten internen Übertrag. Das vom Summierer 205 ausgegebene Signal wird an den Eingang einer Zweiwege-XOR-Schaltung 206 (exklusives ODER) angelegt. Das vom Summierer 205 generierte Übertragsignal wird als Cgen bezeichnet. Dieses Signal wird als Übertrageingangssignal Cin an den Summierer 205 sowie zu einer anderen Zweiwege-XOR-Schaltung 207 angelegt, an deren anderem Eingang das lokale Normsignal No anliegt. In Abhängigkeit vom Wert des lokalen Normsignals No steuert die Schaltung 207 die Polarität des von der XOR-Schaltung 206 generierten Ausgangssignals X. Durch den neuartigen Aufbau dieses zweckbestimmten Summierers 205 kann das Signal "Übertrag generieren" somit am Übertrageingangsterminal als das Signal Cin erneut angelegt werden. Die Grundfunktion des Summierers 205 wird anhand der folgenden allgemeinen Erklärung besser verständlich.
  • Wenn Ai > Bi ist, erzeugt der Summierer 205 ein internes Übertragsignal, d. h. Cgeni = 1, welches zum Ergebnis addiert wird, um den genauen Wert von (abs(Ai-Bi)) zu erzeugen. Wenn in diesem Fall No = 1 ist, ist das Ergebnis Xi gleich abs(Ai-Bi), und wenn No = 0 ist, wird das Ergebnis Xi gleich dem Komplement dieses Wertes, d. h. , sein. Dieser Wert Xi kann im Register 203 zwischengespeichert werden.
  • Ist Ai < Bi oder Ai = Bi, dann erzeugt der Summierer 205 kein internes Übertragsignal, d. h. Cgeni = 0. Ist No = 1, so erzeugt die XOR-Schaltung 206 das Komplement, um den richtigen Wert zu erzeugen. Wenn No = 0 ist, wird diese Komplementbildung nicht durchgeführt.
  • Die im Folgenden aufgeführten Zahlenbeispiele, die für die beiden Fälle Ai < Bi und Ai > Bi (der Fall Ai = Bi wird genauso behandelt wie der Fall Ai < Bi) auf 4-Bit-Komponenten beruhen, veranschaulichen dies.
  • Wie aus der obigen Berechnung zu ersehen ist, generiert der Summierer 205 den Ausdruck (Ai-Bi) = 0000 und einen Übertrag Cgeni = 1, sodass Cini = 1 ist. Dieser Wert Cini wiederum wird als Eingangsübertrag an den Summierer 205 angelegt und somit zum Ergebnis addiert: 0000 + 1 = 0001. Andererseits wird der Übertrag Cgen an die XOR-Schaltung 207 angelegt, die zwischen dem lokalen Normsignal No und Cgeni die exklusive ODER-Funktion ausführt. Dann wird das Ergebnis zusammen mit der vom Summierer 205 generierten Partialsumme Si an die XOR-Schaltung 206 angelegt. Und schließlich wird am Ausgang der XOR-Schaltung 206 das Signal Xi wie folgt erhalten: Xi = ((No XOR Cgeni) XOR Si). Xi wiederum entspricht schließlich entweder abs(Ai-Bi) oder .
  • Zusammenfassend kann die Funktion des Teilblocks 201 so beschrieben werden, dass das von diesem ausgegebene Signal Xi für jede Komponente i der Eingangs- und Prototypvektoren entweder abs(Ai-Bi), wenn No = 1 ist (d. h. Norm L1), oder seinem Komplementwert entspricht, wenn No = 0 ist (d. h. Norm Lsup).
  • Die Aufgabe des zweiten Teilblocks 202 besteht darin, das vom Teilblock 201 generierte Signal Xi zum Berechnen des Abstands D zu verwenden. Wenn ein Pipelineprozess verwendet werden soll, wird vorzugsweise ein freilaufendes Register 203 zwischen die Teilschaltungen 201 und 202 eingefügt.
  • Das Signal X wird an einen Eingang des Summierers 208 angelegt, an dessen anderem Eingang das Signal D empfangen wird. Der Summierer 208 kann entweder dieselbe Struktur wie Summierer 205 haben oder die eines beliebigen herkömmlichen Typs. Er besitzt zweierlei Aufgaben: Für No = 1 (Norm L1) addiert er den aktuellen Wert von X und den Abstand D und für No = 0 (Norm Lsup) vergleicht er den aktuellen Wert von X mit diesem Abstand. Das vom Summierer 208 generierte Signal Cout (Übertragsausgangssignal) wird an einen vom lokalen Normsignal No gesteuerten Inkrementierer 209 angelegt. Die Inkrementierschaltung 209 arbeitet normal, wenn No = 1 ist (Norm L1,) und wird völlig inhibiert (sie generiert Nullen), wenn No = 0 ist (Norm Lsup). Dieser Inkrementierer 209 findet nur für die Norm L1 Verwendung. Dank dieser Schaltung kann unabhängig von der verwendeten Norm die Bitbreite des Summierers von p Bits auf m Bits reduziert werden. Für jede Summe wird der Wert abs(Ai-Bi) mit m Bits codiert, sodass für den Summierer 208 nur eine Kapazität von m Bit benötigt wird.
  • Das Signal X wird über eine Batterie von acht Invertern 211 (ein Inverter je Bit) auch an das erste Eingangsterminal (1) einer Selektorschaltung 210 angelegt. Der Ausgang des Summierers 208 ist mit dem zweiten Eingangsterminal (2) des Selektors 210 verbunden und schließlich wird das Signal D an dessen drittes Eingangsterminal (3) angelegt. Das Normsignal N und das Signal Cout werden an die Befehlsterminals (Cmd) (1) bzw. (2) angelegt.
  • Bei Verwendung der Norm L1 wählt das Signal COUT das Eingangsterminal (2) aus. Wird die Norm Lsup verwendet, wählt das Signal Cout zwischen den Eingangsterminals (1) und (3) aus: Das Eingangsterminal (1) wird bei X > D und das Eingangsterminal (3) bei X < = D verwendet. Der Selektor 210 wird somit dazu verwendet, in Abhängigkeit vom Wert des Normsignals N und der Signale Cout das passende Signal auszuwählen. Ein Register 212 speichert den aktuellen Abstand während der Berechnung und wirkt so als Sammler. Das Signal D als Ergebnis der Abstandsberechnung steht am Ausgang des Registers 212 auf dem 14-Bit-DIST-BUS zur Verfügung.
  • Am Anfang des Abstandsberechnungsprozesses wird das Register 212 auf Null gesetzt.
  • Wenn die Norm L1 verwendet wird (No = 1), dann berechnet der Summierer 208 an dieser Stelle des Prozesses die Summe aus Xi = (abs(Ai-Bi)) und dem Abstand D oder dem aktuellen Abstand, der im Abstandsregister gespeichert ist. Der Selektor 210 überträgt die am Eingang (2) vorhandene Summe (Xi + D) in das Register 212, wo sie während des nächsten Zyklus zwischengespeichert bleibt. Wenn die Summe, d. h. der Abstand D, mehr als m Bits benötigt, wird der vom Summierer 208 generierte Übertragausgang vom Inkrementierer 209 bearbeitet. In jedem Zyklus werden die (p-m) höchstwertigen Bits durch den Inkrementierer 209 aktualisiert. Die (p-m) Bits und die restlichen m Bits werden in erste und zweite Eingangsterminals eines Registers 212 eingegeben. Wenn alle Komponentenpaare eingegeben worden sind, enthält das Register 212 den gemäß der Norm L1 berechneten Abstand D zwischen dem Eingangsvektor A und dem Prototypvektor B.
  • Wenn die Norm Lsup verwendet wird (No = 0), berechnet der Summierer 208 die Differenz zwischen abs(Ai-Bi) und dem aktuellen Abstand D. Ergibt die Differenzbildung einen Übertrag, d. h. Couti = 1, dann ist D > abs(Ai-Bi). In diesem Fall wird das Eingangsterminal (3) ausgewählt,, um das Maximum zwischen dem aktuellen Abstand und (Ai-Bi) zu erfassen. Wenn Couti = 0 ist, dann ist abs(Ai-Bi) > D und das Eingangsterminal (1) wird ausgewählt; diese Differenz wird im Register 212 gespeichert. Um abs(Ai-Bi) und D zu vergleichen, wird an den Summierer 208 ein Wert Xi = angelegt; deshalb muss, wenn es erforderlich ist, abs(Ai-Bi) in das Register 212 zu laden, dieses die entsprechende Polarität aufweisen, was durch den Inverter 211 bewirkt wird. Der vorliegende Fall wird durch die beiden folgenden Beispiele leichter verständlich. Beispiel 1 Beispiel 2
  • In Beispiel 1 wählt der Selektor 210 das Eingangsterminal (1) aus und der Wert Xi = wird in das Register 212 geladen. In Beispiel 2 passiert nichts. Das Signal Cout stellt somit das Kriterium zur Erkennung dar, ob Xi eindeutig kleiner als D ist. Dabei können die Inverter 211 unterdrückt werden. In diesem Fall enthält das Abstandsregister 212 den Wert . Deshalb muss im nächsten Vergleichsschritt die Polarität des Signals X am Eingang des Summierers geändert werden, damit der Vergleich mit dem Ausgang des Summierers erfolgen kann. In diesem Fall kommt dem Übertrag die entgegengesetzte Bedeutung zu. Diese Unterdrückung der Inverter kompliziert den Prozess etwas, jedoch wird bei einer großen Zahl m durch diese Unterdrückung eine Anzahl von Invertern eingespart.
  • Im Folgenden wird ein neuartiger schneller und kompakter Summierer beschrieben, bei dem das "Übertrag Generieren" vollständig so angepasst worden ist, dass die Anforderungen des Summierers 205 von Fig. 19, wie er im ZISC-Chip 10 implementiert ist, erfüllt werden. Gemäß der neuartigen Implementierung verwendet der Summierer 205 zur Berechnung des internen Übertrags (Übertrag Generieren) Selektorschaltungen. Die nun unter Bezug auf die Fig. 20 bis 23 beschriebene Architektur ist bezüglich der Schaltungsdichte und -geschwindigkeit (Verzögerung) sehr effizient.
  • Wie durch Fig. 20 veranschaulicht wird, kann der Summierer 205 in zwei Teilschaltungen 213 und 214 aufgeteilt werden. Die Teilschaltung 213 verwendet für jede Komponente des Eingangsvektors bzw. des Prototypvektors die primären Eingangsbits a0 bis a7 bzw. b0 bis b7, um diese zur Berechnung von Zwischensignalen, die zur Vereinfachung standardmäßig mit den Buchstaben c (carry, Übertrag), f (force, erzwingen) und p (propagate, ausbreiten) bezeichnet werden, und des internen Übertrags Cgen zu verarbeiten. Dieses Signal Cgen stellt tatsächlich den Übertrag dar, der sich aus der Addition ohne den Eingangsübertrag ergibt. Die Teilschaltung 214 verwende zur Berechnung des Endsummensignals 5 die von der Teilschaltung 213 ausgegebenen Zwischensignale und ein Übertrageingangssignal Cin. Durch die neuartige Architektur der Teilschaltung 213 wird es ermöglicht, das Ausgangsterminal Cgen direkt mit dem Eingangsterminal Cin der Teilschaltung 214 zu verbinden, ohne nachteilige Schleifeneffekte in Kauf nehmen zu müssen.
  • Fig. 21 zeigt den detaillierten Aufbau der Teilschaltung 213. Für jedes eine Scheibe bildende Bitpaar, z. B. a0 und b0, errechnet eine zweckbestimmte Schaltung, beispielsweise die Schaltung 215.1, den Zustand dieses Bitpaars, z. B. ermittelt sie, ob eine Übertragänderung stattgefunden hat; falls eine Übertragänderung erfolgt ist, ermittelt sie, ob der von dieser Bitscheibe (Bit-Slice) generierte Übertrag c auf 1 oder auf 0 gesetzt worden ist. Fig. 22(A) zeigt den inneren Aufbau der Schaltung 215.1, die im Wesentlichen aus einer Zweiwege-XOR- Schaltung 216 besteht. Diese Schaltung 215.1 generiert zwei Bits p0 und c0, deren Wert nach der folgenden Regel ermittelt wird. p0 = 1 bedeutet, dass keine Übertragänderung stattgefunden hat, während bei p0 = 0 eine Übertragänderung eingetreten ist. Wenn das Bit c0 so aussieht, als habe eine Übertragänderung stattgefunden, dann ist c0 gleich dem Übertrag. In Abhängigkeit von konstruktiven Beschränkungen kann die Schaltung 215.1 unterschiedlich verdrahtet sein, sodass verschiedene Optionen möglich sind. Allgemein gesprochen kann ci durch eine entsprechende Koppelverbindung gleich ai oder bi gesetzt werden, wie in Fig. 22(A) gezeigt wird; wenn elektrische Beschränkungen dies rechtfertigen, kann es durch eine entsprechende logische verdrahtete Funktion sogar gleich (ai UND bi) oder (ai ODER bi) gesetzt werden.
  • In Fig. 21 verarbeitet die Schaltung 215.1 die Bits a0 und b0, um die Signale p0 = (a0 XOR b0) und c0 = a0 zu generieren, die von der Teilschaltung 215.1 ausgegeben werden, aber sie werden auch zur weiteren Verarbeitung intern verwendet. In der zweiten Ebene der Teilschaltung 213 verarbeitet dann eine weitere zweckbestimmte Schaltung zwei von entsprechenden Schaltungen der ersten Ebene generierte Signalpaare, um das Ergebnis "Zustand" für eine 2-Bit-Scheibe zu berechnen. Beispielsweise verarbeitet die Schaltung 217.1 die von der Schaltung 215.1 generierten Bits p0 und c0 sowie die von der Schaltung 215.2 generierten Bits p1 und ci. Fig. 22(B) zeigt den inneren Aufbau der Schaltung 217.1, die im Wesentlichen aus einem Selektor (SEL) 218 und einem Zweiwege-UND-Gatter 219 besteht, die, wie dargestellt, in geeigneter Weise miteinander verbunden sind. Die Schaltung 217.1 generiert die Bits c1-0 und f2-0 zur internen Verwendung sowohl in der Teilschaltung 213 als auch in der Teilschaltung 214. Die Buchstaben p und f werden entsprechend dem oben Gesagten zur Veranschaulichung der Polarität des Signals Übertragänderung verwendet, wobei p = f ist. Da die Schaltung 217.1 von der durch das Bit p oder das Bit definierten Polarität der Eingangssignale abhängt, wird zur besseren Optimierung (um Invertierungsgatter einzusparen) anstelle der Schaltung von Fig. 22(B) die in Fig. 22(C) dargestellte Schaltungsstruktur verwendet, wenn sie nicht durch Eingangsbits vom Typ f, sondern vom Typ p angesteuert wird. Beispielsweise wird die Schaltung 220.1 von Fig. 22(C) in der dritten Ebene der Teilschaltung 213 von Fig. 21 verwendet, um die Bits c3-0 und p3-0 zu generieren. Diese Schaltung besteht aus einem Selektor 221 und einem damit verbundenen Zweiwege-NOR-Gatter 222, wie in Fig. 22(C) dargestellt. Die Arbeitsweise dieser beiden Selektortypen lässt sich im Wesentlichen in Fig. 22(D) erkennen. Ähnliche Überlegungen gelten für die andere Hälfte der Schaltung 213, die die vier übrigen Bitpaare verarbeitet, sodass die Schaltung 220.2 (vom gleichen Typ wie die Schaltung 220.1) die Bits c7-4 und p7-4 generiert. Und schließlich wird die Bitverarbeitung über mindestens eine vierte durch Schaltung 223 veranschaulichte Ebene fortgesetzt, die die Bits f7-0 und c7-0 generiert. Diese beiden Bits werden an ein Zweiwege-UND-Gatter 224 angelegt, dessen Ausgangsbit das Signal Cgen darstellt. Cgen ist somit der interne Übertrag für die Bits 0 bis 7 der primären Eingangsbits. Unter der Annahme Cin = 0 stellt dieses Übertragsignal Cgen den internen Übertrag der Primärbits dar. Da die Verarbeitung dieser Primärbits parallel erfolgt, kommt es nur zu einer geringfügigen Verzögerung. Die Struktur der Schaltung 223 ist identisch der Struktur der Schaltung 217.1. Wie aus Fig. 21 zu ersehen ist, liefert die Teilschaltung 213 auch alle oben erwähnten Zwischenbits zur weiteren Verarbeitung in der Teilschaltung 214.
  • Die folgende Tabelle fasst die Logiktabellen der Schaltungen 217.1 und 220.1 zusammen. Schaltung 217.1 Schaltung 220.1
  • Die Berechnung aller Summenbits s0 bis s7 des Summensignals S aus den Zwischenbits und dem Übertrageingangsbit Cin wird nun in Verbindung mit Fig. 23 erläutert.
  • Die Teilschaltung 214 in Fig. 23 enthält zunächst vier identische zweckbestimmte Schaltungen 225.1 bis 225.4. Jede Schaltung, z. B. 225.1, setzt sich aus zwei Zweiwege-XOR- Schaltungen 226 und 227 sowie einem Selektor 228 zusammen. Das Bit Cin wird beispielsweise in Schaltung 225.1 an ein erstes Eingangsterminal des Selektors 228 angelegt, dessen anderer Eingang das Bit c0 empfängt. Das Bit p0 steuert den Selektor 228 am Befehlseingang (Cmd). Das vom Selektor 228 generierte Bit und das Bit p1 werden an die XOR-Schaltung 226 angelegt, während die Bits c0 und Cin an die XOR-Schaltung 227 angelegt werden. Die von den XOR-Schaltungen 226 und 227 ausgegebenen Bits sind die Summenbits s1 bzw. s0. Die gleichen Überlegungen gelten für die Schaltungen 225.2 bis 225.4, soweit die Bits c2 bis c6 und die Bits p2 bis p7 betroffen sind; mit Ausnahme davon, dass Cin nicht mehr direkt an das erste Eingangsterminal der XOR- Schaltung 227 der Schaltungen 225.2 bis 225.4 angelegt wird. Je nach dem Wert des an den Selektor 229.1 angelegten Steuerbits f1-0 wird entweder das Bit c1-0 oder das Bit Cin an die XOR- Schaltung 227 der Schaltung 225.2 angelegt. Eine ähnliche Konstruktion gilt für den Selektor 229.2, in dem das Bit p3-0 entweder das Bit c3-0 oder das Bit Cin auswählt. Bezüglich der Schaltung 229.3 liegt eine etwas kompliziertere Situation vor. Das an den Selektor 229.3 angelegte Steuerbit ist gleich f5-0, welches dem im Zweiwege-NAND-Gatter 230 erzeugten Bit (p5-4 NAND p3-0) entspricht. Dieses Steuerbit f5-0 wählt entweder das Bit Cin oder das Bit c5-0 aus, welches sich aus der durch das Bit f5-4 gesteuerten Auswahl eines der Bits c5-4 oder c3-0 im Selektor 231 ergibt. Und schließlich generiert ein unabhängiger Selektor 232 das Übertragausgangsbit Cout, welches entweder das Bit Cin oder das Bit c7-0 ist, entsprechend der Steuerung durch das Bit p7-0. Aus der in Fig. 23 gezeigten Konstruktion ergibt sich, dass die Schaltungen 225.1 bis 225.3 zusätzlich zu dem, wie oben erläutert, von der Schaltung 225.1 generierten Summenbitpaar s0 s1 jeweils Summenbitpaare s2 s3, s4 s5, s6 s7 liefern.
  • Bei der in den Fig. 21 und 23 veranschaulichten Implementierung der Teilschaltungen 213 und 214 kann man die kritische Verzögerung in zwei Teile aufspalten. Die Teilschaltung 213 benötigt zum Generieren der Zwischensignale 4 Stufen, während zum Generieren des Signals Cgen 5 Stufen erforderlich sind. Die Teilschaltung 214 benötigt 4 Stufen. Allerdings kann man, je nach Anwendungsfall, die Anzahl der Elementarschaltungen in den Teilschaltungen 213 und 214 verringern; dies jedoch bewirkt eine Erhöhung der Anzahl der Stufen und damit der Gesamtverzögerung.
  • DIE ABSTANDSVERGLEICHS- UND WENN-SCHALTUNGEN (300/350)
  • Die Vergleichsschaltung 300 wird in jeder Neuronalschaltung 11 implementiert, um den Vergleich zwischen dem berechneten Abstandssignal D und dem Signal J durchzuführen. Das Signal J wird von der in Fig. 7 gezeigten WENN-Schaltung (IF) 350 geliefert. Wie aus Fig. 7 ersichtlich, entspricht das Signal J entweder demjenigen Signal, welches auf dem DIST-BUS, dem OR-BUS oder dem MinIF/MaxTF-BUS erscheint, oder dem Inhalt des AlF- Registers 352, in dem der Wert AlF gespeichert ist. Fig. 24 zeigt den detaillierten Aufbau der vollständig parallelen Vergleichsschaltung 300 gemäß einer bevorzugten Implementierung des ZISC-Chips 10. In Fig. 24 empfängt die Vergleichsschaltung 300 an einer ersten Gruppe von Eingangsterminals die 14 Primärbits d0 bis d13 des Signals des Abstands D, welches von der Abstandsbewertungsschaltung 200 generiert wurde. Ferner empfängt sie die 14 Primärbits j0 bis j13 des Signals J von der WENN-Schaltung 350, welche an eine andere Gruppe von Eingangsterminals angelegt werden. Kurz gesagt, die Vergleichsschaltung 300 generiert zwei Signale LT (Lower Than, kleiner als) und LTE (Lower Than or Egual, kleiner als oder gleich), die wiederum an die Identifizierungsschaltung 400 angelegt werden. Das Grundprinzip des in der Vergleichsschaltung 300 durchgeführten Vergleichs der Signale D und J besteht darin, festzustellen, (1) ob D eindeutig kleiner als J ist (dies ist die Aufgabe des Signals LT) und (2) ob D kleiner oder gleich J ist (dies ist die Aufgabe des Signals LTE).
  • Während der Erkennungsphase stellt das Signal J den im AlF- Register 352 gespeicherten Wert dar. Der errechnete Abstand D wird mit dem Wert AlF verglichen, um festzustellen, ob D < AlF ist. Während der Lernphase ist das Signal J gleich MinIF. Der errechnete Abstand D wird dann mit MinIF verglichen, um festzustellen, ob D < = MinIF ist. Die folgende TABELLE 1 veranschaulicht für eine ermittelte Neuronalschaltung 11 die Schlussfolgerungen, die man aus den Werten der Signale LT und LTE in ihren jeweiligen Modi ziehen kann.
  • TABELLE 1
  • Im Modus ERKENNEN:
  • LT Schlussfolgerungen
  • 0 Kein Auslösen (D > = AlF)
  • 1 Auslösen (D < AlF) Im Modus LERNEN:
  • Zu diesem Zweck wird zwischen jedem entsprechenden Bit der Signale J und D ein Vergleich durchgeführt. Dank der in Fig. 24 dargestellten baumartigen Struktur, die eine parallele Verarbeitung der Signale ermöglicht, erfolgt der Vergleich sehr schnell. Für jedes Paar Primärbits, die eine Bitscheibe bilden, z. B. d0 und j0, errechnet eine zweckbestimmte Schaltung, z. B. 301.1, den "Zustand" dieses Bitpaars, d. h., sie stellt fest, ob die beiden Bits gleich oder ungleich sind. Die Schaltung 301.1 weist zwar eine ähnliche Struktur wie die Schaltung 215.1 von Fig. 22(A) auf, die im Wesentlichen aus einer Zweiwege-XOR- Schaltung 216 besteht, doch benötigt sie zusätzlich an ihrem Ausgang ein Invertiergatter, um die gewünschte XORNOT-(XORN)- Funktion auszuführen. Diese Schaltung 301.1 generiert zwei Bits p0 und c0, deren Werte nach folgender Regel ermittelt werden: Wenn p0 = 1 ist, bedeutet dies Gleichheit zwischen den Bits d0 und j0; ist hingegen p0 = 0, bedeutet dies, dass die beiden Bits sich unterscheiden. Wie aus Fig. 24 ersichtlich, wird das Bit c0 gleich d0 gesetzt. Abhängig von konstruktiven Einschränkungen kann die Schaltung 301.1 unterschiedlich verdrahtet sein. Die Schaltung 301.1 verarbeitet das erste Bitpaar d0 und j0, um die Bits p0 und c0 zu generieren. Ebenso verarbeiten die Schaltungen 301.2 bis 301.14 die anderen Bitpaare, d. h. d1 und j1 bis d13 und j13, um die entsprechenden Bitpaare p1 und c1 bis p13 und c13 zu generieren.
  • In der zweiten Ebene der Schaltung 300 verarbeitet dann eine weitere zweckbestimmte Schaltung die beiden von entsprechenden Schaltungsscheiben der ersten Ebene generierten Bitpaare, um das Ergebnis für eine Zweibit-Scheibe zu berechnen. Beispielsweise verarbeitet die Schaltung 302.1 dieh von der Schaltung 301.1 generierten Bits p0 und c0 und die von der Schaltung 301.2 generierten Bits p1 und c1. Die Schaltung 302.1 wiederum generiert ein Bitpaar c1-0 und f1-0. Die Schaltung 302.1 besitzt eine der in Fig. 22(B) gezeigten Schaltung 217.1 identische Struktur, die im Wesentlichen aus einem Selektor 218 und einem Zweiwege-UND-Gatter 219 besteht, die in geeigneter Weise miteinander verbunden sind, wie in der Figur veranschaulicht wird. Der gleiche Aufbau trifft auf die Schaltungen 302.2 bis 302.7 zu. Da die Schaltung 303.1 von der durch den Buchstaben f statt p definierten Polarität der Eingangsbits abhängt, wird anstelle der Schaltung von Fig. 22(B) vorzugsweise die in Fig. 22(C) dargestellte Schaltungsstruktur zur stärkeren Optimierung, d. h. zum Einsparen von Invertierungsgattern, verwendet. Deshalb ist die Schaltung 303.1 vorzugsweise der Schaltung 220.1 von Fig. 22(C) identisch, um die Bits c3-0 und p3-0 zu generieren. Sie besteht aus einem Selektor 221 und einem Zweiwege-NOR-Gatter 222 einschließlich der in Fig. 22(C) dargestellten Verbindungen. Ähnliche Schaltungen 303.2 und 303.3 generieren entsprechende Bitpaare p7-4 und c7-4 sowie p11-8 und c11-8. Allein die Schaltung 303.4 weist eine andere Struktur auf und besteht lediglich aus einem Inverter, der das Bit p13-12 generiert.
  • Die Verarbeitung der Bitsignale wird auf der vierten Ebene fortgesetzt, wie durch die Schaltungen 304.1 und 304.2 veranschaulicht, die jeweils die Bitpaare f7-0 und c7-0 sowie f13-8 und c13-8 generieren. Diese beiden Schaltungen besitzen den gleichen Aufbau wie die Schaltung 217.1 von Fig. 22(B). Und schließlich werden diese Bitpaare an die Schaltung 305 angelegt, die die Bits p13-0 und c13-0 generiert. Die Schaltung 305 hat eine der Schaltung 220.1 von Fig. 22(C) identische Struktur. Diese beiden Bits werden an eine Schaltung 306 angelegt, die zunächst aus einem Zweiwege-NOR-Gatter 307 besteht, dessen Ausgangsbit das Signal LT darstellt. Die Bits p13-0 und LT werden an ein Zweiwege-ODER-Gatter 308 angelegt, um das Signal LTE zu generieren. Da die Verarbeitung dieser Primärbits in der Vergleichsschaltung 300 parallel erfolgt, ist die auftretende Gesamtverzögerung sehr klein. Bei dieser Beschreibung handelt es sich somit um eine schnelle und kompakte, vollkommen parallel arbeitende Vergleichsschaltung, die (unter minimaler Vergrößerung der Verzögerung) leicht auf eine größere Bitzahl erweitert werden kann und nur wenige Bauelemente benötigt.
  • DIE IDENTIFIZIERUNGSSCHALTUNG (400)
  • In Fig. 25 wird die detaillierte Struktur der Identifizierungsschaltung 400 der Neuronalschaltung 11 gezeigt. Der 14-Bit-CAT-BUS (der das vom Mikrocontroller/Benutzer 22 gelieferte Eingangskategoriesignal CAT transportiert) und der OR-BUS (der das globale Kategoriesignal C* transportiert) werden an einen Zweiwege-Multiplexer 401 angeschlossen, dessen Ausgang mit dem ersten Eingang des Komparators 402 verbunden ist. Je nach Betriebsmodus überträgt der Multiplexer 401 somit entweder das Eingangskategoriesignal CAT oder das globale Kategoriesignal C* an diesen ersten Eingang des Komparators 402. Hierbei ist zu beachten, dass der Multiplexer 401 durch eine Multiplexer- Hauptschaltung für alle Neuronalschaltungen des neuralen Basisnetzes 11(A) ersetzt werden kann. In diesem Fall wäre der OR-BUS nicht mehr erforderlich, da der CAT-BUS entweder die CAT- oder die C*-Daten transportiert. Der Cat-BUS wird an den zweiten Eingang des Komparators 402 angeschlossen. Der Komparator 402 wird üblicherweise aus vierzehn Zweiwege-XOR-Gattern aufgebaut, die ein 14-Wege-ODER-Gatter ansteuern. Der Ausgang des Komparators 402 wiederum wird an den ersten Eingang des Zweiwege-XOR-Gatters 403 angeschlossen, dessen anderer Eingang das LERN-Signal L empfängt. Das Signal L wird über den IADD/CTL- BUS transportiert und wird de facto direkt von einem Signal abgeleitet, das überwacht vom Mikrocontroller/ Benutzer 22 in der Zustands- und Steuerlogikschaltung 18 generiert wurde. Das Signal L wird während der Lernphase auf "aktiv" (L = 1) und während der Erkennungsphase auf "inaktiv" (L = 0) gesetzt. Die endgültige Entscheidung, ob eine Neuronalschaltung während der Lernphase einen Eingangsvektor speichern muss, obliegt jedoch der Identifizierungsschaltung 400, während sich die Rolle der Daisy-Chain-Schaltung 600 hierbei auf die Auswahl der lernbereiten Neuronalschaltung beschränkt, wie im Folgenden ausführlicher erklärt wird. Das vom XOR-Gatter 403 generierte 1- Bit-Signal wird als das Signal K bezeichnet. Die Signale LT und CO werden an ein Zweiwege-UND-Gatter 404 angelegt. Das in der Daisy-Chain-Schaltung 600 generierte Signal CO wird auf "aktiv" (CO = 1) gesetzt, sobald die Neuronalschaltung fixiert ist. Das vom UND-Gatter 404 ausgegebene Signal wird vorzugsweise in einem optionalen 1-Bit-F-Register 405 gespeichert, welches vom Signal gesteuert wird. Das vom Register 405 generierte Signal ist das lokale Auslöseergebnissignal F. Das Signal F wird auf "aktiv" gesetzt (F = 1), wenn die Neuronalschaltung 11 im Erkennungsmodus ausgelöst hat. Die Signale LTE und CO sowie das vom Komparator 402 ausgegebene Signal werden an ein Dreiwege- UND-Gatter 406 angelegt. Das vom UND-Gatter 406 generierte Signal wird unter Steuerung des Signals L im 1-Bit-DEG-Register 407 gespeichert und von der Identifizierungsschaltung 400 als Signal DEG ausgegeben. Das Signal DEG ist ein Zustandssignal der Neuronalschaltung 11. Wenn die Neuronalschaltung 11 entartet ist, enthält das Register 407 eine "1" (in diesem Fall wird MinIF in das AlF-Register 352 geladen). Das vom Register 407 ausgegebene Signal und das lokale Auslöseergebnissignal F werden an ein Zweiwege-UND-Gatter 408 angelegt, um das lokale Ergebnissignal DEGOUT zu generieren. Das Signal DEGOUT wird somit auf "aktiv" gesetzt, wenn eine entartete Neuronalschaltung während der Erkennungsphase ausgelöst hat. Und schließlich werden die Signale F und K an ein Zweiwege-UND-Gatter 409 angelegt, um das lokale Ergebnissignal UNC/FIRE.OK zu generieren. Dieses Signal besitzt je nach Betriebsmodus zwei Bedeutungen. Wenn das Signal UNC/FIRE.OK im Lernmodus während des Besetzungsvorgangs der lernbereiten Neuronalschaltung auf "aktiv" gesetzt wird (UNC/FIRE.OK = 1), wird der gespeicherte Eingangsvektor nicht als Prototypvektor "eingefroren". Die lernbereite Neuronalschaltung wird nicht besetzt, weil der Eingangsvektor von mindestens einer Neuronalschaltung des neuralen Netzes erkannt worden ist. Im Erkennungsmodus wird das Signal UNC/FIRE.OK auf "aktiv" gesetzt, wenn zwei Neuronalschaltungen mit unterschiedlichen Kategorien ausgelöst haben, d. h. der Eingangsvektor nicht identifiziert worden ist. Zusammenfassend ist zu sagen, dass die Identifizierungsschaltung 400 drei lokale Ergebnissignale F, DEGOUT und UNC/FIRE.OK (die die lokale Antwort einer bestimmten Neuronalschaltung auf die Vorlage eines Eingangsvektors darstellen) und ein Zustandssignal DEG generiert. Außerdem werden einige dieser Signale als Steuersignale verwendet.
  • Die Funktion des Komparators 402 im Erkennungsmodus besteht de facto darin, das im Kategorieregister 450 einer bestimmten Neuronalschaltung 11 gespeicherte lokale Kategoriesignal C mit dem auf dem OR-BUS vorgelegten globalen Kategoriesignal C* zu vergleichen. Falls es einen Unterschied zwischen den Signalen C und C* gibt, kommt es im Komparator 402 zu keiner Übereinstimmung. Zur Einheitlichkeit sei angenommen, dass in diesem Fall eine logische Eins generiert wird. Da das Signal L in diesem Modus inaktiv ist (L = 0), wird das vom XOR-Gatter 403 ausgegebene Signal K gleich 1 gesetzt, und wenn das Signal F aktiv ist (F = 1), ist das Signal UNC/FIRE.OK gleich 1. Dies bedeutet, dass mindestens zwei Neuronalschaltungen mit unterschiedlichen Kategorien ausgelöst haben. Nachdem mindestens ein Signal UNC/FIRE.OK gleich 1 gesetzt wurde, wird folglich das globale Ergebnissignal UNC/FIRE.OK*, welches sich aus dem Ausführen der ODER-Funktion mit allen lokalen Ergebnissignalen ergibt, auf 1 gesetzt. Auf der Ebene des neuralen Basisnetzes 11(A) bedeutet dies, dass der Eingangsvektor von mindestens zwei fixierten Neuronalschaltungen unterschiedlicher Kategorie, die ausgelöst haben, erkannt wurde und deshalb der Eingangsvektor nicht identifiziert worden ist. Wenn hingegen jede der fixierten Neuronalschaltungen, die ausgelöst haben, eine der globalen Kategorie C* identische lokale Kategorie C besitzt, werden alle davon generierten lokalen Ergebnissignale UNC/FIRE.OK gleich 0 gesetzt, weshalb das globale Ergebnissignal UNC/FIRE.OK* gleich 0 ist. Im letzteren Fall ist der Eingangsvektor identifiziert worden und seine Kategorie ist gleich C*.
  • Während der Lernphase ist es wichtig festzustellen, ob die Neuronalschaltung entarten wird. Für eine besetzte Neuronalschaltung wird die vom Mikrocontroller/Benutzer 22 auf dem CAT-BUS gelieferte Eingangskategorie CAT im Komparator 402 mit der lokalen Kategorie C verglichen. Wenn C gleich CAT, UNC/FIRE.OK = 1 ist und das Signal LTE nicht verwendet wird, findet der Reduktionsprozess nicht statt, da diese Neuronalschaltung den Eingangsvektor mit der richtigen Kategorie erkannt hat. Wenn sich jedoch C und CAT voneinander unterscheiden, müssen in Abhängigkeit vom Ergebnis des Vergleichs zwischen dem Abstand D und dem Wert von MinIF, also vom Wert des Signals LTE, zwei Fälle betrachtet werden. Wenn das Signal LTE = 1 ist (d. h. D < = MinIF), gilt die Neuronalschaltung 11 als entartet; dann wird die vom UND-Gatter 406 generierte logische Eins im DEG-Register 407 und der Wert MinIF im AlF-Register 352 gespeichert. Wenn das Signal LTE = 0 ist (d. h. D > MinIF), wird der Inhalt des DEG-Registers 407 nicht verändert, und das vom UND-Gatter 406 ausgegebene Signal ist gleich Null. Außerdem hat der Komparator 402 die Aufgabe, auf der Ebene des neuralen Netzes zu ermitteln, ob die Eingangskategorie CAT von mindestens einer Neuronalschaltung erkannt worden ist. Ein wesentlicher Schritt des Reduktionsprozesses besteht darin festzustellen, ob die Neuronalschaltung 11 entartet ist. Wenn während der Lernphase (Signal L = 1) das vom XOR-Gatter 403 ausgegebene Signal K auf 1 gesetzt wird (weil die Eingangskategorie CAT und die lokale Kategorie C gleich sind und deshalb im Komparator 402 Übereinstimmung festgestellt wird) und das Signal F = 1 ist, dann wird das Signal UNC/FIRE.OK auf 1 gesetzt. Die Bedeutung des vom UND-Gatter 409 generierten Signals UNC/FIRE.OK besteht darin anzuzeigen, dass die betrachtete Neuronalschaltung den Eingangsvektor richtig erkannt hat und deshalb der Eingangsvektor auf der Ebene des neuralen Basisnetzes 11(A) richtig erkannt worden ist. In diesem Fall bleibt die lernbereite Neuronalschaltung noch frei und der gespeicherte Eingangsvektor wird nicht als neuer Prototypvektor im RAM- Speicher 251 "eingefroren". Für das neurale Netz besteht keine Notwendigkeit, eine neue lernbereite Neuronalschaltung zu besetzen.
  • Es muss darauf hingewiesen werden, dass im Gegensatz zum globalen Ergebnissignal UNC/FIRE.OK* das aus dem Vergleich zwischen dem globalen Signal C* und dem lokalen Signal C in der Identifizierungsschaltung 400 stammende Signal UNC/FIRE.OK weder während der Erkennungsphase noch während der Lernphase lokal verwendet wird. Insgesamt bedeutet also der Fall Signal UNC/FIRE.OK* = 1 im Erkennungsmodus, dass mindestens zwei Neuronalschaltungen mit zwei unterschiedlichen Kategorien den Eingangsvektor erkannt haben. Der Fall UNC/FIRE.OK* = 0 hingegen bedeutet, dass der Eingangsvektor entweder von mindestens einer Neuronalschaltung mit einer einzigen Kategorie erkannt oder überhaupt nicht erkannt worden ist. Während der Lernphase spielt das globale Ergebnissignal UNC/FIRE.OK* (über das von ihm abgeleitete Signal ST) die entscheidende Rolle, die lernbereite Neuronalschaltung zum Einfrieren des Eingangsvektors zu zwingen bzw. nicht zu zwingen, welcher während des im Verlauf der vorangegangenen Erkennungsphase abgeschlossenen Vorladeschrittes im RAM-Speicher 251 gespeichert worden ist.
  • DIE Dmin-BESTIMMUNGSSCHALTUNG (500)
  • Wie oben unter Bezug auf Fig. 8 erwähnt, besteht die Dmin- Bestimmungsschaltung 500 aus dem Multiplexer 501, der Such-/ Sortierschaltung 502 und der Logikschaltung 503. Fig. 26 zeigt schematisch den inneren Aufbau der Logikschaltung 503, die das Signal SELECT generiert, welches an die Such-/Sortierschaltung 502 angelegt wird. In der Praxis empfängt die Logikschaltung 503 nicht nur, wie aus Fig. 8 ersichtlich, die Signale F, CO und RS, sondern auch drei Steuersignale, die unterschiedliche Betriebsmodi/Untermodi des ZISC-Basis-Chips 10 betreffen: die Signale NORMAL (NM), NÄCHSTER NACHBAR (NEAREST NEIGHBOR, NNM) und SPEICHERN (SAVE, SM). Diese drei Steuersignale werden von der Zustands- und Steuerlogikschaltung 18 generiert und über den IADD/CTL-BUS zur Logikschaltung 503 transportiert. Die Logikschaltung 503 umfasst ein Dreiwege-UND-Gatter 503.1, zwei Zweiwege-UND-Gatter 503.2 und 503.3 sowie ein Dreiwege-NOR- Gatter 503.4. Die Signale CO, F und NM werden an das UND-Gatter 503.1 angelegt. Die Signale CO und NNM werden an das UND-Gatter 503.2 angelegt. Die Signale RS und SM werden an das UND-Gatter 503.3 angelegt. Die Ausgänge dieser drei UND-Gatter werden an ihren jeweiligen Eingang des NOR-Gitters 503.4 angelegt, welches das Signal generiert. Das Signal wiederum wird als Sperrsignal an die Such-/Sortierschaltung 502 angelegt, wie im Folgenden unter Bezug auf Fig. 30 veranschaulicht wird.
  • Die Hauptaufgabe der Such-/Sortierschaltung 502 besteht im Wesentlichen darin, zur Suche des Minimalabstands Dmin unter allen von den Neuronalschaltungen eines neuralen Netzes berechneten Abständen beizutragen, sowie einen Beitrag zum Sortieren der restlichen Abstände in ansteigender Reihenfolge zu leisten (sie ist auch für den Umgang mit Daten vom Kategorietyp eingerichtet). Deshalb muss darauf hingewiesen werden, dass die Such- und Sortierprozesse von allen Neuronalschaltungen des neuralen Netzes gemeinsam durchgeführt werden. Allgemeiner gesagt besteht die Aufgabe der Such-/Sortierschaltung 502 zunächst darin, aus einer Gruppe mehrerer Parameter den Minimalwert herauszufinden und dann die verbleibenden Werte in ansteigender Reihenfolge zu sortieren. Es würde für den Fachmann allerdings eine triviale Aufgabe darstellen, die Schaltung so einzurichten, dass sie zunächst den Maximalwert herausfindet und dann die verbleibenden Werte in abnehmender Reihenfolge sortiert. Die Such- und Sortierprozesse müssen in möglichst kurzer Zeit und mit einem möglichst einfachen Schaltungsaufwand bewerkstelligt werden. Diese Kriterien werden durch die Such-/ Sortierschaltung 502 der vorliegenden Erfindung erfüllt. Im Folgenden sollen nur der Suchprozess zur Ermittlung des Minimalabstands Dmin und die zugehörige Schaltungsstruktur besprochen werden. Der Suchprozess zur Ermittlung des Maximalabstands würde jedoch im Wesentlichen nach den gleichen Regeln verlaufen und sich einer sehr ähnlichen Schaltungsstruktur bedienen.
  • Der dem Suchprozess der vorliegenden Erfindung zugrunde liegende Algorithmus wird unter Bezug auf das in Fig. 27 gezeigte Flussdiagramm 504 kurz beschrieben. Es wird von vier Neuronalschaltungen 11-1 bis 11-4 ausgegangen, deren jeweiliger Abstand D1, D2, D3 und D4 zwischen dem Eingangsvektor und ihrem gespeicherten Prototypvektor berechnet ist. Nun ergibt sich das Problem, unter diesen vier Abständen den kleinsten Wert Dmin zu ermitteln. Zunächst wird eine Matrix geschaffen, in der die Abstände in Spalten und die zugehörigen Bits in Zeilen angeordnet sind. Als einfaches Beispiel soll angenommen werden, dass der Minimalwert der vier Abstände D1, D2, D3 und D4 gefunden werden soll, welche jeweils aus je einem mit vier Bits codierten Binärwort bestehen, wie z. B. D1 = 0110, D2 = 1001, D3 = 1101 und D4 = 0101. Die folgende TABELLE II zeigt die sich daraus ergebende Matrix, in der die erste Zeile L1 die höchstwertigen Bits (MSB, most significant bit) darstellt und so weiter bis zur Zeile L4, welche die niedrigstwertigen Bits (LSB, least significant bit) repräsentiert. Allgemeiner gesagt steht die Bezeichnung dki für den Wert des Bits in der k-ten Zeile und der 1-ten Spalte. Im vorliegenden Beispiel = 1 stellt die Variable k (k = 1 bis 4) somit die Rangfolge des Bits in dem Binärwort, das einen Abstand repräsentiert, und die Variable i (i = 1 bis 4) die Rangfolge der betrachteten Neuronalschaltung dar. Wie aus TABELLE II ersichtlich, entspricht auch jeder Zeile ein Binärwort (z. B. ist das aus den höchstwertigen Bits MSB jedes Abstandswortes gebildete L1 = 0110). TABELLE II
  • Fig. 27 veranschaulicht das Flussdiagramm von Algorithmus 504. Nachdem der Suchprozess in Kasten "START" eingeleitet worden ist, wird in Kasten 505 zur Analyse der Bits in der ersten Zeile L1 übergegangen, sodass während der in Kasten 506 durchgeführten Prüfung festgestellt wird, ob sich in der Zeile wenigstens eine "0" befindet. In der ersten Zeile L/1 sind zwei Nullen enthalten, sodass gemäß Kasten 507 Abstände mit einer "1", d. h. D2 und D3, ausgeschlossen werden und an den nachfolgenden Verarbeitungsschritten nicht mehr beteiligt sind. Um das Ausschließen eines Abstands zu veranschaulichen, wird in der entsprechenden Spalte ein "X" eingetragen, wie durch die beiden folgenden Zeilen schematisch veranschaulicht wird:
  • Wie aus der obigen Zustandszeile (Status line, SL) zu ersehen ist, werden die den Abständen D2 und D3 entsprechenden Spalten ausgeschlossen. In Kasten 508 wird die aktuelle Zeile (L1) geprüft, um festzustellen, ob es sich um die letzte Zeile handelt. In diesem Beispiel ist L1 nicht die letzte Zeile, und der Prozess wird somit fortgesetzt. In Schritt 2 wird gemäß Kasten 509 die folgende Zeile L2 geprüft. Nachdem die Abstände D2 und D3 ausgeschlossen worden sind, werden während der in Kasten 506 durchgeführten Prüfung nur noch die Spalten D1 und D4 auf das Vorliegen einer "0" geprüft. Es wird keine Null gefunden, sodass in diesem Schritt keine weitere Spalte ausgeschlossen wird und der Kasten 507 umgangen wird. Wie unten veranschaulicht, verändert Schritt 2 die vorige Zustandszeile SL nicht, da die Zeile L2 keine Null enthält.
  • Der Prozess wird für Zeile L3 fortgesetzt und in Schritt 3 wird beim Bit d34 in Abstand D4 das Vorliegen einer neuen Null entdeckt, sodass nun der Abstand D1 ausgeschlossen wird, wie unten veranschaulicht.
  • Und schließlich wird in Schritt 4 in Kasten 506 die Zeile L4 geprüft, wobei keine Null gefunden wird; daher wird Kasten 507 umgangen und der in Schritt 3 gefundene Zustand somit bestätigt. Nachdem die Abstände D1, D2 und D3 ausgeschlossen worden sind, wird daher der Minimalwert durch den von der Neuronalschaltung 11-4 gefundenen Abstand D4 repräsentiert.
  • Da L4 die letzte Zeile ist, endet der Suchprozess nach der in Kasten 508 durchgeführten Prüfung in Kasten "ENDE". Schließlich wird der Minimalabstand durch Dmin = D4 = 0101 angegeben.
  • Fig. 28(A) zeigt den schematischen Aufbau der mit dem Oberbegriff 510 bezeichneten elementaren Basiseinheit, die den Grundbaustein der Such-/Sortierschaltung 502 gemäß der vorliegenden Erfindung bildet. Wie aus Fig. 28(A) ersichtlich, bezeichnet die Bezugszahl 510-ki die elementare Basiseinheit, die das Bit dki (Zeile k, Spalte i) des Abstandssignals D1 verarbeitet, das von der Bewertungsschaltung 200 der Neuronalschaltung 11-i (mit k = 1 bis p und i = 1 bis N) vorher berechnet wurde. Im Wesentlichen besteht die Einheit 510-ki aus zwei Untereinheiten 511-ki und 512-ki. An die Einheit 510-ki werden drei Eingangssignale angelegt: das Eingangsbitsignal dki, das Ausschluss-Eingangssignal EXCLINki und das Rückkopplungssignal ORk; von der Einheit werden zwei Ausgangssignale ausgegeben: das lokale Ausgangssignal NOUTk-i und das Ausschluss-Ausgangssignal EXCLOUTki. Je nach seinem jeweiligen Wert wird das Signal EXCLINki dazu verwendet, die Einheit 510-ki für den Suchprozess, d. h. für die Ermittlung von Dmin, auszuwählen oder zu sperren. Beispielsweise wird die Einheit 510-ki nicht ausgeschlossen, wenn EXCLINki auf "inaktiv" gesetzt wird (EXCLINki = 0); und umgekehrt, wenn EXCLINki auf "aktiv" gesetzt wird (EXCLINki = 1), wird die Einheit 510-ki außer Betrieb genommen und NOUTk-i auf "inaktiv" gesetzt (NOUTk-i = 0 bei der vorliegenden Implementierung des auf der ODER-Schaltung 12 basierenden ZISC-Chips 10). Die Funktion der Untereinheit 511-ki besteht, wenn sie nicht gesperrt wurde, im Wesentlichen darin, herauszufinden, ob das Bit dki gleich "0" ist. Zu diesem Zweck wird zwischen dem Bitsignal dki und dem Signal EXCLINki eine zweckbestimmte Logikfunktion ausgeführt, um das Ausgangssignal NOUTk-i zu generieren. Andererseits stellt das Signal EXCLOUTki eine bestimmte Logikfunktion der Signale EXCLINki, dki und ORk dar. Die Aufgabe der Einheit 512-ki besteht daher im Generieren eines geeigneten Eingangssignals für die zur nächsten Zeile gehörende nachfolgende Einheit 510-(k+1)i, welche das Bit d(k+1)i verarbeitet, um die Einheit in Abhängigkeit von dessen Wert entweder zu sperren oder freizugeben. Anders gesagt stellt die Untereinheit 512-ki fest, ob der Abstand D1 ausgeschlossen wird, wenn die nachfolgende Zeile verarbeitet wird. Das Signal ORk, das hier als Gate-Signal wirkt, ergibt sich aus der ODER-Verknüpfung aller Signale NOUTki, die von der Zeile k generiert werden (ORk = NOUTk-1 ODER... ODER NOUTk-N).
  • In einer in Fig. 28(B) veranschaulichten bevorzugten - Ausführungsart besteht die Untereinheit 511-ki aus einem NOR- Gatter 513, welches die Operation NOUTk-i = dki NOR EXCLINki durchführt. Die Untereinheit 512-ki, die bezüglich der Ausschlussfunktion eine wesentliche Rolle spielt, setzt sich aus dem UND-Gatter 514 und dem ODER-Gatter 515 zusammen, die so miteinander verbunden sind, dass sie eine UND-ODER-Funktion der Form EXCLOUTki = EXCLINki ODER (dki UND ORk) ausführen. Wenn beispielsweise das Signal EXCLINki = 1, wird das Signal NOUTk-i auf Null gezwungen, selbst wenn der Wert von dki bezüglich der ODER-Schaltung 12 neutral ist. Wenn nun das Signal EXCLINki = 0 (kein Ausschluss), wird das Signal NOUTk-i gleich sein. Wenn dki = 0, dann ist das Signal NOUTk-i = 1; der letztere Wert ist deshalb dafür charakteristisch, dass an dieser Stelle eine Null gefunden wurde. Infolgedessen ist das Signal ORk gleich Eins, und da dki = 0 und das Signal EXCLINki = 0, ergibt sich das Signal EXCLOUTki = 0. Das bedeutet, dass die nachfolgende Einheit nicht gesperrt wird. Ist hingegen dki = 1, da das Signal EXCLINki noch gleich 0 ist, wird das Signal NOUTk-i gleich 0 gesetzt. In Abhängigkeit von den, durch die anderen nicht ausgeschlossenen Spalten für diese Zeile k erhaltenen, Ergebnissen müssen nun zwei Fälle betrachtet werden. Sind alle Eingangsbitsignale gleich Eins, dann sind alle lokalen Ergebnissignale dieser Zeile k (für alle Werte von i) gleich Null; daraufhin ist das Signal ORk = 0 und schließlich das Signal EXCLOUTki = 0 (kein Ausschluss). Wenn ebenfalls in der Zeile k mindestens ein Eingangsbit gleich 0 ist, dann ist das zugehörige lokale Ergebnissignal NOUTk-i gleich 1, sodass das Signal ORk = 1 und schließlich EXCLOUTki = 1 ist; die Spalte 1 wird somit ausgeschlossen.
  • Die folgende Betrachtung gilt Fig. 29; diese zeigt, wie vier Such-/Sortierschaltungen 502-1 bis 502-4 (die zu vier verschiedenen Neuronalschaltungen 11-1 bis 11-4 gehören) mittels der entsprechenden zweckbestimmten ODER-Teilschaltung der ODER- Schaltung 12 verknüpft werden, um die Bits OUT*1 bis OUT*4 des globalen Ausgangssignals OUT* zu generieren. Die folgende Beschreibung bezieht sich auf das Beispiel der TABELLE II mit der Implementierung des ZISC-Chips 10 von Fig. 4(A). Diese ODER- Teilschaltung der ODER-Schaltung 12, die die lokalen Ausgangssignale NOUT verarbeitet, wird in Fig. 29 mit 12.1 bezeichnet, um die Funktionsweise der Such-/Sortierschaltung 502 leichter verständlich zu machen. Zur Vereinfachung wurden die in Fig. 29 dargestellten Such-/Sortierschaltungen 502 bewusst auf die zum Ausführen der Suchfunktion erforderliche Schaltlogik beschränkt. In der in Fig. 29 gezeigten Schaltung 516 sind vier Such-/Sortierschaltungen 502-1 bis 502-4 enthalten, die in Fig. 29 nebeneinander dargestellt werden, sodass sie die Gesamtschaltung 517 und die zweckbestimmte ODER-Teilschaltung 12.1 bilden. Die Gesamtschaltung 517 setzt sich somit aus sechzehn elementaren Basiseinheiten 510-11 bis 510-44 zusammen, die in einer Matrix angeordnet sind. Es sollte klar sein, dass sich jede dieser vier Such-/Sortierschaltungen in einer anderen Neuronalschaltung befindet und sie in diesem Beispiel nur zur Veranschaulichung fiktiv zusammen angeordnet worden sind. Wie aus Fig. 29 ferner zu erkennen ist, wird jede Such-/ Sortierschaltung 502 der Neuronalschaltung 11 gebildet, indem die entsprechende Anzahl (in diesem Fall vier) dieser in einer Spalte angeordneten Einheiten 510 übereinandergestapelt bzw. hintereinandergeschaltet wird. Der logische Pegel jedes Knotens der Schaltung 516 wurde in Fig. 29 so angegeben, dass die Übereinstimmung mit dem in TABELLE II veranschaulichten Beispiel am Ende des Dmin-Bestimmungsprozesses (-Suchprozesses) erhalten bleibt. Alle Such-/Sortierschaltungen sind identisch und weisen dieselbe Struktur auf. Nun wird die Gesamtschaltung 517 genauer beschrieben. Die erste Zeile der Einheiten 510-11 bis 510-14 betrifft die entsprechenden MSB-Bits d11 bis d14. Im folgenden Teil der Beschreibung werden die Signale EXCLINIi und EXCLOUT4i mit EXCLIN-i bzw. EXCLOUT-i bezeichnet. Ähnliche Überlegungen gelten für die anderen Spalten. Die Signale EXCLIN-1 bis EXCLIN-4 werden jeweils an die Einheiten 510-11 bis 510-14 angelegt. Diese Einheiten wiederum generieren jeweils die Signale NOUT1-1 bis NOUT1-4, die an das ODER-Gatter 12.1.1 angelegt werden, welches wiederum das Ausgangssignal OUT*1 liefert. Das Signal OUT*1 wird als Signal OR1 wieder an jede der Einheiten 510-11 bis 510-14 der ersten Zeile angelegt. Ähnliche Überlegungen gelten auch für das Generieren der Signale OUT*2 bis OUT*4 über die entsprechenden ODER-Gatter 12.1.2 bis 12.1.4, die ebenfalls ein Bestandteil der zweckbestimmten ODER- Teilschaltung 12.1 sind. In Wirklichkeit umfasst in der vorliegenden Implementierung des ZISC-Chips 10 die zweckbestimmte ODER-Teilschaltung 12.1 die ODER-Gatter 12.1.1 bis 12.1.N. Die Einheiten 510-11 bis 510-14 generieren auch die Zwischensignale EXCLOUT11 bis EXCLOUT14, die an die entsprechenden Eingangsterminals EXCLIN der Einheiten 510-21 bis 510-24 der zweiten Zeile angelegt werden. Ähnliche Überlegungen gelten für die Struktur der anderen Zeilen bis zur vierten Zeile der Gesamtschaltung 517. In der vierten Zeile generieren die Einheiten 510-41 bis 510-44 die endgültigen Signale EXCLOUT41 (oder EXCLOUT-1) bis EXCLOUT44 (oder EXCLOUT-4), die später Verwendung finden. Es ist zu beachten, dass NOR-Logikgatter anstelle der in Fig. 29 gezeigten ODER-Gatter wegen technologischer Beschränkungen verwendet werden können. In diesem Fall wäre für jedes Signal NOUTk-i ein Inverter erforderlich, um die richtige Polarität des Bitsignals ORk wiederzugewinnen. In jedem Fall muss die logische Beziehung ORk = OUT*k = NOUTk-1 ODER ... ODER NOUTk-N erfüllt sein.
  • Jetzt soll die Arbeitsweise der Schaltung von Fig. 29 beschrieben werden. Alle Signale EXCLIN-1 bis EXCLIN-4 befinden sich auf dem Logikpegel für Nichtsperren bzw. Auswahl, im oben beschriebenen Beispiel also z. B. gleich Null, d. h. EXCLIN-1 = = EXCLIN-4 = 0. Dann werden unmittelbar nach Beginn des Suchprozesses die Bits d11 bis d44 gemäß ihren in TABELLE II angegebenen Werten an ihre jeweiligen Eingänge der Einheiten 510-11 bis 510-44 angelegt. Wie aus Fig. 29 zu ersehen, werden alle höchstwertigen Bits (MSBs), d. h. d11, d12, d13 und d14, die das Binärwort L1 (L1 = 0110) bilden, an ihre entsprechenden Einheiten 510-11 bis 510-14 der ersten Zeile angelegt. Gemäß der oben beschriebenen inneren Struktur der Einheiten 510 lautet das von diesen ausgegebene Binärwort NOUT1-1 NOUT1-2 NOUT1-3 NOUT1-4 = 1001, d. h. . Diese NOUT-Signale werden im ODER-Gatter 12.1.1 durch ODER-Operationn verknüpft, um das erste Bit OUT*1 des Signals OUT* zu generieren. Das Signal OUT* ist gleich Eins (OUT*1 = 1), da in der ersten Zeile mindestens eine Null identifiziert wurde. Das Signal OUT*1 wiederum wird über eine Rückkopplungsschleife als Rückkopplungssignal an jede der Einheiten 510&supmin;¹¹ bis 510&supmin;¹&sup4; angelegt. Dieses Rückkopplungssignal wird zwecks Übereinstimmung mit der obigen Beschreibung als OR1 bezeichnet. Weiterhin ermittelt die Untereinheit 512 jeder der Einheiten der ersten Zeile den Wert des entsprechenden Signals EXCLOUT. In diesem Beispiel wird das Ergebnis durch EXCLOUT11 = 0, EXCLOUT12 = 1, EXCLOUT13 = 1 und EXCLOUT14 = 0 angegeben. Diese Signale werden an die entsprechenden Einheiten der zweiten Zeile, 510-21 bis 510-24, gesendet, aber es werden nur die Einheiten 510-22 und 510-23 gesperrt, da deren entsprechende Spalten ausgeschlossen sind. Sobald ein Signal EXCLIN gleich 1 ist, wird die entsprechende Einheit 510 gesperrt, welche daraufhin die entsprechende, zur selben Spalte gehörende, Einheit 510 der nachfolgenden Zeile sperrt, indem sie ein Signal EXCLOUT = 1 generiert. Ähnliche Überlegungen gelten für die anderen Zeilen. Die oben beschriebene Vorgehensweise wird Zeile für Zeile fortgesetzt, bis die vierte und letzte Zeile erreicht wird. Das an die Einheit 510-41 angelegte Signal EXCLIN41 ist gleich 1, um anzuzeigen, dass diese Spalte infolge des Wertes der Signale OUT*3 und d31 gesperrt wurde. Durch die Verarbeitung der LSBs in der vierten Zeile hat der aktuelle Zustand keine Veränderung erfahren. Das von den ODER-Gattern 12.1.1 bis 12.1.4 ausgegebene Endergebnis des Suchprozesses wird durch das Signal OUT* = OUT*1 OUT*2 OUT*3 OUT*4 = 1010 angegeben. Das Signal OUT* ist gleich dem Komplement des von der Neuronalschaltung 11-4 berechneten Abstands D4. Es ist außerdem erwähnenswert, dass alle Signale EXCLOUT-1 bis EXCLOUT-3 den Wert "1" besitzen und nur das Signal EXCLOUT-4 den Wert "0". Zusammenfassend ist zu sagen, dass nicht nur der Minimalabstand Dmin = D4 ermittelt worden ist (tatsächlich ist in der in Fig. 29 gezeigten Implementierung sein Komplementwert generiert worden), sondern auch die Neuronalschaltung, in der er gespeichert ist (in diesem Fall ist die Neuronalschaltung 11-4 die einzige Neuronalschaltung, deren Signal EXCLOUT gleich Null ist). Das gesamte Signal OUT* liegt am Ausgang der Schaltung 516 vor (welche sich aus der seriellen Verknüpfung der durch die Such-/Sortierschaltungen der vier Neuronalschaltungen 11-1 bis 11-4 gebildeten Gesamtschaltung 517 und der ODER-Teilschaltung 12.1 ergibt). Diese Überlegungen lassen sich auf die Anordnung von N Such-/Sortierschaltungen 502-1 bis 502-N verallgemeinern, von denen jede p Bits verarbeitet, sodass eine Gesamtschaltung 517 entsteht, die nun in der Lage ist, aus N Abständen D1, ..., DN den Minimalabstand Dmin zu ermitteln. Dabei soll bei der vorliegenden Implementierung des ZISC-Chips 10 jeder Abstand mit p = 14 Bits codiert werden. In diesem Fall setzt sich die ODER- Teilschaltung 12.1 aus p ODER-Gattern 12.1.1 bis 12.1.p mit je N Eingängen zusammen, um das Signal OUT* zu generieren (das sich aus den Bitsignalen OUT*1 bis OUT*p zusammensetzt). Das Signal ODER setzt sich dann aus p Bitsignalen OR1 bis ORp zusammen, die direkt aus den Bitsignalen OUT*1 bis OUT*p abgeleitet werden. Obwohl sich die obige Beschreibung zur besseren Veranschaulichung lediglich auf den Suchprozess des Minimalabstands Dmin bezieht, muss klar sein, dass die neuartige Such-/Sortierschaltung 502 der vorliegenden Erfindung in Wirklichkeit normalerweise sowohl mit Such- als auch mit Sortierfähigkeiten ausgestattet ist.
  • De facto kann die Schaltung von Fig. 29 durch Hinzufügen einer kleinen zusätzlichen Schaltlogik mit einer Sortierfunktion wesentlich verbessert werden, sodass die übrigen Abstände auf Wunsch in ansteigender Reihenfolge sortiert werden. Die mit beiden Funktionen ausgestattete Such-/Sortierschaltung 502 wird in Fig. 30 mit 518 bezeichnet. Wie aus Fig. 30 ersichtlich ist, beinhaltet die zusätzliche Schaltlogik im Vergleich zur Gesamtschaltung 517 und zur ODER-Teilschaltung 12.1 (die unter Bezug auf Fig. 29 zuvor beschrieben wurden) zwei Schaltungen 519 und 520. Beispielsweise besitzt die zweckbestimmte Schaltung 519 bezüglich des Abstands D1 und der Such-/Sortierschaltung 502-1 ein Zweiwege-ODER-Gatter 521-1, ein Zweiwege-ODER-Gatter 522-1 und ein Speicherelement, wie beispielsweise einen Zwischenspeicher 523-1. Das ODER-Gatter 522-1 und der Zwischenspeicher 523-1 sind seriell miteinander verbunden, wobei der Ausgang des ODER-Gatters den Eingang des Zwischenspeichers ansteuert. Der Ausgang des Zwischenspeichers 523-1 ist über eine Rückkopplungsschleife mit einem Eingang des ODER-Gatters 522-1 verbunden. Der andere Eingang des ODER-Gatters 522-1 empfängt ein Signal XOR-1, dessen Eigenschaften später erklärt werden. Der Zwischenspeicher 523-1 empfängt als Standard die geeigneten Signale TAKT (CLOCK) und ZURÜCKSETZEN (RESET). Der Ausgang des Zwischenspeichers 523-1 ist auch mit dem ersten Eingang des ODER-Gatters 521-1 verbunden, um das Signal EXCLIN'-1 anzulegen. Der andere Eingang des ODER-Gatters 521-1 empfängt das Signal . Das vom ODER-Gatter 521-1 ausgegebene Signal wird als Signal EXCLIN-1 an die Einheit 510-11 der Such-/ Sortierschaltung 502-1 angelegt. Ebenfalls in Bezug auf die Spalte des Abstands D1 beinhaltet die Schaltung 520 einen Inverter 524-1, der mit dem Ausgang der Such-/Sortierschaltung 502-1 verbunden ist, welche das Signal EXCLOUT-1 generiert. Der Inverter 524-1 besitzt die Aufgabe, das Komplement des Signals EXCLOUT-1 zu bilden, um ein Signal XOR-1 zu generieren. Das Signal XOR-1 wird an den anderen Eingang des ODER-Gatters 522-1 angelegt. Wie aus Fig. 30 zu ersehen ist, beinhalten die Schaltungen 519 und 520 für die Spalten D2 bis D4 drei weitere identische Schaltungen. In Wirklichkeit setzen sich die Schaltungen 519 und 520 aus N solcher identischen Schaltungen für die N Spalten zusammen, die den Abständen D1 bis DN entsprechen.
  • Unter Bezugnahme auf das Beispiel in TABELLE II läßt sich die Arbeitsweise der Schaltung von Fig. 30 wie folgt verstehen. Bei der Initialisierung werden die Signale EXCLIN'-1 bis EXCLIN'-4 auf 0000 zurückgesetzt. Dies erfolgt durch ein zugeordnetes Steuersignal ZURÜCKSETZEN (RESET), das an jeden Zwischenspeicher 523-1 bis 523-4 angelegt wird, wobei angenommen wird, dass alle vier Sortierschaltungen 502-1 bis 502-4 nicht durch das von der Logikschaltung 503 (Fig. 26) generierte Signal AUSWAHL ( = 0) gesperrt worden sind. Im Ergebnis dessen sind die Signale EXCLIN-1 bis EXCLIN-4 gleich Null (kein Ausschluss). Der Suchprozess erfolgt wie oben beschrieben, bis der dem Abstand D4 entsprechende Minimalabstand, der durch die Sortierschaltung 502-4 der Neuronalschaltung 11-4 ermittelt wurde, mit den in Fig. 29 dargestellten Nettowerten erhalten wird. Wie aus Fig. 29 zu ersehen ist, werden die Signale EXCLOUT-1 bis EXCLOUT-4 durch das Binärwort 1110 wiedergegeben. Nach dem Invertieren in den Invertern 523-1 bis 523-4 der Schaltung 520 werden die entsprechenden Signale XOR-1 bis XOR-4, wie in Fig. 30 gezeigt, durch das Binärwort 0001 wiedergegeben. Die Position der "1" zeigt an, dass der Minimalabstand in der Neuronalschaltung 11-4 gespeichert ist. Im Folgenden soll der Sortierprozess genauer betrachtet werden. Die Signale XOR-1 bis XOR-4 werden mit den Signalen EXCLIN'-1 bis EXCLIN'-4 (gleich dem Binärwort 0000) in den ODER-Gattern 522-1 bis 522-4 durch ODER-Operation verknüpft und dann in den Zwischenspeichern 523-1 bis 523-4 gespeichert. Schließlich wird dann der neue Wert der Signale EXCLIN-1 bis EXCLIN-4 durch das Binärwort 0001 gegeben, welches an die Gesamtschaltung 517 angelegt wird. Da die Signale EXCLIN-1 bis EXCLIN-4 jetzt gleich 0 sind, können sich die entsprechenden Such-/Sortierschaltungen 502-1 bis 502-3 am nächsten Schritt des Sortierprozesses beteiligen. Lediglich die Such-/ Sortierschaltung 502-4 ist an den nachfolgenden Suchschritten nicht beteiligt, da der Abstand D4 ausgeschlossen wurde. Die Schaltung 518 startet erneut einen Suchprozess, um zu ermitteln, bei welchem der drei verbleibenden Abstände D1, D2 oder D3 es sich um den Minimalabstand handelt. Es wird dasselbe Verfahren wie oben beschrieben durchgeführt. Der Abstand D1 ist als der gesuchte Minimalabstand bekannt. Danach setzt die Schaltung 518 den Suchprozess fort, um die Spalte des Abstands D1 auszuschließen. Die Such- und Sortierprozesse werden, wie oben unter Bezug auf den Abstand D1 beschrieben, fortgesetzt. Die Abstände werden dann nacheinander in ansteigender Reihenfolge auf dem OUT*-BUS zur Verfügung gestellt, d. h. im vorliegenden Beispiel D4, gefolgt von D1, D2 und D3. Ähnliche Überlegungen können auf eine Schaltung angewendet werden, die dafür eingerichtet ist, um zunächst den Maximalabstand zu ermitteln und dann die übrigen Abstände in abnehmender Reihenfolge zu sortieren. Bezüglich der Schaltung 518 von Fig. 30 würden aus der Sicht des Fachmanns hierfür im Grunde nur geringfügige Änderungen in der Struktur der Einheiten 510 erforderlich. Zusammenfassend kann man sagen, dass die Such- und Sortierfunktionen der Such-/Sortierschaltung 502 (in jeder Neuronalschaltung 11 des ZISC-Chips 10 ist jeweils eine Such-/ Sortierschaltung angeordnet) unter Bezug auf die Schaltungen von Fig. 29 und 30 beschrieben wurden. Die durch die Anordnung der Such-/Sortierschaltungen 502-1 bis 502-N gebildete Gesamtschaltung 517 ist eine sehr schnelle Schaltung, da alle p = 14 Bits aller Abstandssignale D1 bis DN parallel verarbeitet werden und somit kein Sequencer benötigt wird. Die Anzahl der Neuronalschaltungen beeinflusst die Gesamtverzögerung der Schaltung 518 nicht, sondern ändert nur die Anzahl der Eingänge der Logikgatter in der zweckbestimmten ODER-Untereinheit 12.1.
  • Und schließlich besitzt die Gesamtschaltung 517 eine ideale modulare Struktur und benötigt lediglich eine geringe Anzahl von Bauelementen.
  • DIE DAISY-CHAIN-SCHALTUNG (600)
  • Fig. 31 zeigt den detaillierten Aufbau der Daisy-Chain-Schaltung 600 der Neuronalschaltung 11, die um ein von einem Signal ST gesteuerten 1-Bit-DAISY-Register 601 herum angeordnet ist. Das Signal ST wird in zwei Fällen während der Lernphase auf "aktiv" gesetzt: wenn die Identifizierungsschaltung 400 bestätigt, dass eine Neuronalschaltung besetzt werden soll, oder bei der Initialisierung. Das Signal ST wird daher direkt von den Signalen UNC/FIRE.OK* und L abgeleitet. Das Signal DCI wird an den ersten Eingang eines Zweiwege-UND-Gatters 602 angelegt, dessen anderer Eingang das Signal empfängt. Der Ausgang des UND-Gatters 602 ist mit dem Eingang des Registers 601 verbunden. Der Ausgang des Registers 601 ist mit dem ersten Eingang eines Zweiwege-ODER-Gatters 603 verbunden, dessen anderer Eingang das Signal ALL empfängt. Das vom ODER-Gatter 603 am DCO-Ausgangsterminal ausgegebene Signal ist das Signal DCO. Bei der Initialisierung wird das Signal ZURÜCKSETZEN (RESET) auf "aktiv" gesetzt, d. h. = 0, und dieser vom UND-Gatter 602 ausgegebene Wert "0" in das DAISY-Register 601 geladen, sobald das Signal ST auf "aktiv" gesetzt wird, sodass das Signal DCO mittels des ODER-Gatters 603 (Signal ALL = 0) gleich Null gesetzt wird. Allgemeiner gesagt bedeutet dies, dass das Signal ST aktiviert wird, wenn die Daten am Ausgang des UND-Gatters 602 in das Register 601 geladen werden müssen. Wenn das Signal ALL aktiviert worden ist (ALL = 1), wird das Signal DCO unabhängig von dem im Register 601 gespeicherten binären Wert auf "aktiv" gesetzt (DCO = 1). Das Signal ALL erweist sich während der Prüfung des neuralen Netzes 11(A) als nützlich. Während der Prüfung verhalten sich nämlich alle Neuronalschaltungen des neuralen Netzes 11(A) ausnahmslos so, als wären sie besetzt. Unter normalen Betriebsbedingungen wird das Signal ALL gleich "0" gesetzt und das Signal auf "1" gelassen. Das DCI- Eingangsterminal der ersten Neuronalschaltung 11-1 ist über eine externe Leitung mit VH verbunden. Die Signale ST, RESET und ALL werden parallel an alle Daisy-Chain-Schaltungen 600 der Neuronalschaltungen 11-1 bis 11-N des ZISC-Chips 10 angelegt.
  • Im Folgenden soll die erste Neuronalschaltung des ZISC-Chips 10 betrachtet werden. Bei der Initialisierung befindet sich in allen Registern 601 des zISC-Chips 10 eine Null, nachdem, wie oben erwähnt, während der Initialisierung das allgemeine zurücksetzen ( = 0 und ST = 1) erfolgte. Da das Eingangsterminal DCI der ersten Neuronalschaltung 11-1 mit VH verbunden ist, legt das Signal DCI-1 nach dem Initialisierungsschritt eine Eins (DCI-1 = 1) an den ersten Eingang des UND-Gatters 602 und das Signal ebenfalls eine Eins an dessen anderen Eingang an, wodurch eine Eins an den Eingang des Registers 601 angelegt wird. Wird hingegen eine Null in das Register 601 geladen, dann ist das schließlich vom ODER- Gatter 603 (ALL = 0) ausgegebene Signal DCO-1 gleich 0. Deshalb besitzen lediglich die Signale DCI und DCO der ersten Neuronalschaltung 11-1 des neuralen Netzes 11(A) komplementäre Werte, d. h., sie erfüllen die logische Beziehung DCI = weil für alle anderen Daisy-Chain-Schaltungen (also die der Neuronalschaltungen 11-2 bis 11-N) die Beziehung Signal DCI = Signal DCO = 0 gilt. Sobald der Initialisierungsschritt abgeschlossen ist, ist die Neuronalschaltung 11-1 somit konstruktionsbedingt die lernbereite Neuronalschaltung. Wenn das Signal ST im Lernmodus auf "aktiv" gesetzt wird, dann wird die an den Eingang des Registers 601 angelegte logische Eins in diesem Register gespeichert. Im Ergebnis dessen werden die Signale DCI-1 und DCO-1 gleich 1 gesetzt, somit hat die erste Neuronalschaltung 11-1 gelernt und ist nun besetzt. Dagegen sind aus denselben Gründen wie oben erläutert DCI-2 = 1 und DCO-2 = 0. Das bedeutet, dass die in der Kette nachfolgende Neuronalschaltung, d. h. die Neuronalschaltung 11-2, jetzt die lernbereite Neuronalschaltung ist. Diese Überlegungen können solange fortgesetzt werden, bis die Neuronalschaltung 11-N besetzt ist. Da zum Generieren des Signals DCO lediglich maximal ein Register und zwei elementare Logikgatter in jeder Neuronalschaltung erforderlich sind, kommt nur eine sehr kurze Gesamtverzögerung zustande, die darüber hinaus auch noch von der Anzahl der Neuronalschaltungen des neuralen Netzes 11(A) unabhängig ist.
  • Die Daisy-Chain-Schaltung 600 umfasst ferner eine Steuer- Logikschaltung 604, die wiederum aus zwei Logikgattern besteht: einem Zweiwege-XOR-Gatter 605 und einem Zweiwege-UND-Gatter 606. Das XOR-Gatter 605 wird von den Signalen DCI und DCO der Neuronalschaltung 11 angesteuert und generiert das Signal RS (Ready to Store, Speicherbereit) für den RAM-Speicher 251. Das Signal RS fungiert im Grunde als ein Schreibfreigabe-Signal, welches die Operation SCHREIBEN (WRITE) in diesen Speicher erlaubt bzw. nicht erlaubt. Während der Erkennungsphase wird der Eingangsvektor allen fixierten (ausgewählten und besetzten) Neuronalschaltungen vorgelegt, aber die Eingangsvektorkomponenten werden nur in den RAM-Speicher 251 der lernbereiten Neuronalschaltung vorgeladen, da für die nachfolgende Lernphase eine mögliche Besetzung erwartet wird. Mit dem Vorladen des RAM-Speichers 251 während der Erkennungsphase sind deutliche Vorteile verbunden, da das Speichern der 64 Komponenten des Eingangsvektors ein zeitaufwendiger Vorgang ist. Bei der vorliegenden Implementierung des ZISC-Chips 10 muss praktisch nur noch die Eingangskategorie gespeichert und das Signal ST aktiviert werden, um zum Abschließen der Lernphase das Register 601 der lernbereiten Neuronalschaltung zu setzen. Dann wird das Signal RS auf "inaktiv" gesetzt, um das weitere Beschreiben des RAM-Speichers 251 zu verhindern. Das UND-Gatter 606 hingegen generiert aus den Signalen DCO und NS das Signal CO. Das Signal NS wird, wie oben erwähnt (siehe Fig. 5) von der Abgleichschaltung 150 in jeder Neuronalschaltung intern generiert. Das Signal CO wird somit für eine ausgewählte und besetzte (d. h. fixierte) Neuronalschaltung auf "aktiv" gesetzt. Dank dieser Signalkombination wird das Signal CO geschickterweise an bestimmte Blöcke des in Fig. 4(A) veranschaulichten ZISC-Chips 10 angelegt, sodass an der Erkennungsphase und am Reduktionsprozess während der Lernphase nur die fixierten Neuronalschaltungen teilnehmen können. Die folgende TABELLE III stellt zusammenfassend die Zustände der Neuronalschaltung den logischen Werten der Signale DCI und DCO gegenüber. TABELLE III
  • Die TABELLE III zeigt deutlich die beiden Grundzustände einer Neuronalschaltung: frei (einschließlich des Falls der lernbereiten Schaltung) und besetzt.
  • Das Signal DCO der letzten Neuronalschaltung eines einzelnen ZISC-Chips 10, d. h. DCO-N, kann als Anzeige dafür verwendet werden, ob die letzte Neuronalschaltung des neuralen Netzes 11(A) besetzt ist oder nicht. Anders gesagt, es kann als Signal VOLL (FULL) fungieren, denn wenn die Neuronalschaltung 11-N besetzt ist, bedeutet dies, dass das neurale Netz 11(A) voll ist. Es ist auch anzumerken, dass der kritische Verzögerungsweg des neuralen Netzes im Wesentlichen der in der Daisy-Chain- Schaltung der lernbereiten Neuronalschaltung ist. Die anderen Daisy-Chain-Schaltungen des neuralen Netzes bleiben unberührt und ihre Signale DCI und DCO erfahren keine Veränderung.
  • Die für den einzelnen ZISC-Chip 10 von Fig. 4(A) beschriebene Daisy-Chain-Schaltung ist ideal so angepasst, dass sie in einer Mehrchipumgebung arbeiten kann, falls mehrere Chips seriell miteinander verbunden werden sollten, wie in Fig. 11 und 12 veranschaulicht wird. Wie aus Fig. 11 noch besser zu ersehen, ist nur das Eingangsterminal DCI der ersten Neuronalschaltung des ersten ZISC-Chips 10(1) mit VH verbunden, sodass sie nach der Initialisierung konstruktionsbedingt die lernbereite Neuronalschaltung ist. Andererseits kann das Signal DCO des letzten ZISC-Chips 10(Q), der das Elementarmodul 10(A) bildet, zur Anzeige, ob eine Eins in das DAISY-Register der letzten Neuronalschaltung des letzten Chips geladen worden ist, verwendet werden. Wurde eine Eins in das Register geladen, bedeutet dies, dass alle Neuronalschaltungen besetzt sind, die das im Elementarmodul 10[A] befindliche neurale Elementarnetz 11[A] bilden.
  • Die Daisy-Chain-Schaltung 600 stellt somit ein wesentliches Merkmal für die serielle Verknüpfbarkeit des ZISC-Chips 10 dar, da die Adressierung der ZISC-Chips 10(1) bis 10(Q) im Gegensatz zu der in der oben erwähnten Patentschrift US-A-4974169 beschriebenen Architektur nicht erforderlich ist. Dies bedeutet, dass in jedem Chip die herkömmlichen Decoder- und Zeigerschaltungen eingespart werden, was wiederum zu einer bedeutenden Erhöhung der Schaltungsdichte führt. Ferner wird auch der Adressbus nicht mehr benötigt, der die Anzahl der adressierbaren Neuronalschaltungen begrenzt. Wie aus Fig. 4(A) und 4(B) ersichtlich, gibt es hier keinen Bus ADDRESS zur Verbindung der Neuronalschaltungen des ZISC-Basis-Chips 10 mit dem Mikrocontroller/Benutzer 22. Folglich kann, zumindest theoretisch, auf dem INDATA-BUS, dem SEL/CTL-BUS und dem GDATA- BUS eine unbegrenzte Anzahl von ZISC-Basis-Chips 10 parallel verbunden werden, wobei nur die Daisy-Chain-Verbindung vom seriellen Typ ist. Während der Lernphase ist für die Datenverwaltung kein Überwacher erforderlich, um über einen Adressbus anzuzeigen, welche Neuronalschaltung jetzt lernen soll. Gemäß der vorliegenden Erfindung besteht die Aufgabe des Mikrocontrollers/Benutzers 22 während der Lernphase nicht darin, die Arbeit der Neuronalschaltungen des ZISC-Chips 10 zu überwachen, sondern nur darin, ihnen Beispiele und die zugehörigen Kategorien zu liefern. Die Neuronalschaltungen des ZISC-Chips 10 vollführen eine Art des Selbstlernens. Dies trifft sogar soweit zu, dass die Entscheidung über Lernen oder Nichtlernen nicht vom Überwacher, sondern kollektiv von allen Neuronalschaltungen getroffen wird.
  • Der oben beschriebene Ansatz der Daisy-Chain-Schaltung, angewendet auf neurale Netze, kann durch eine einzelne Basis- Verarbeitungseinheit 65 problemlos auf eine Mehrprozessoreinheit 64 aus einer Vielzahl von Basis-Verarbeitungseinheiten ausgeweitet werden, wie in Fig. 32 veranschaulicht wird. Jede Verarbeitungseinheit ist über einen bidirektionalen Datenbus mit einem gemeinsamen Eingangsdatenbus DATAIN-BUS verbunden. In jeder Verarbeitungseinheit ist eine Schreib-/Lese- Speicherschaltung 66 enthalten. Die Daten werden auf dem DATAIN- BUS allen Verarbeitungseinheiten parallel vorgelegt. Eine Daisy- Chain-Schaltung 67 mit der gleichen Struktur wie die Daisy- Chain-Schaltung 600 von Fig. 31, d. h. im Grunde um ein DAISY- Register herum angeordnet, wird jeder Verarbeitungseinheit zugeordnet und generiert ein Signal START (RUN) (dem Signal CO äquivalent) sowie ein Signal LADEN (LOAD) (dem Signal RS äquivalent), die an die entsprechenden Blöcke der Verarbeitungseinheit angelegt werden. Zwischen den Daisy-Chain- Schaltungen der Mehrprozessoreinheit 64 wird eine serielle Verbindung DCI/DCO eingerichtet. Jede Daisy-Chain-Schaltung 67 empfängt ein von einer Zustandsschaltung (nicht dargestellt) generiertes Signal NÄCHSTE (NEXT) (dem Signal ST äquivalent), um den vom Signal DCI an den Eingang der Daisy-Chain-Schaltung 67 angelegten logischen Wert zu verschieben, damit er im DAISY- Register lediglich einer bestimmten Verarbeitungseinheit gespeichert wird. Das Laden von zugeordneten Eingangsdaten, die auf dem DATAIN-BUS der Schreib-/Lese-Speicherschaltung 66 einer solchen ermittelten Verarbeitungseinheit 65 (der de facto ladebereiten Verarbeitungseinheit) vorgelegt werden, wird somit von der Daisy-Chain-Schaltung automatisch durchgeführt, deren logische Eingangs- und Ausgangssignale DCI und DCO komplementäre Werte besitzen.
  • DAS INTERNEURONALE KONEZUNIKATIONSSYSTEM
  • Fig. 33 zeigt schematisch die Struktur des interneuronalen Kommunikationssystems bei Verwendung der Architektur des ZISC- Chips 10 von Fig. 4(A). Das interneuronale Kommunikationssystem umfasst die ODER-Schaltung 12, die auf dem R*-BUS die globalen Ergebnissignale F*, DEGOUT* und UNC/FIRE.OK* sowie auf dem OUT*- BUS das globale Ausgangssignal OUT* generiert. Diese beiden Busse werden durch elektrische Verbindungen zu dem gemeinsamen, auf dem Chip integrierten Kommunikationsbus COM*-BUS vereinigt. Ferner umfasst es den OR-BUS, der direkt vom OUT*-BUS abgeleitet wird und im Wesentlichen Daten vom Abstands- oder Kategorietyp transportiert.
  • In Fig. 33 sind hinsichtlich der Neuronalschaltung 11 lediglich deren Identifizierungsschaltung 400 und die Dmin- Bestimmungsschaltung 500 schematisch dargestellt. Wie aus Fig. 33 ersichtlich, werden alle von den einzelnen Neuronalschaltungen 11-1 bis 11-N lokal generierten lokalen Ergebnis- und Ausgangssignale an die entsprechenden zweckbestimmten ODER-Teilschaltungen angelegt, die gemeinsam die ODER-Schaltung 12 bilden. Das von jeder Neuronalschaltung generierte lokale Ausgangssignal NOUT, welches die Abstands-/ Kategoriedaten transportiert, wird an die zweckbestimmte ODER- Teilschaltung 12.1 angelegt. Das von der ODER-Teilschaltung 12.1 generierte globale Ausgangssignal OUT* wird über ein Bündel von vierzehn Verbindungsleitungen transportiert, die den OUT*-BUS bilden. Über den OR-BUS wird das Signal OUT* als Rückkopplungssignal erneut an jede Neuronalschaltung des ZISC- Chips 10 angelegt. Die lokalen Ergebnissignale F, DEGOUT und UNC/FIRE.OK jeder Neuronalschaltung werden jeweils an die zweckbestimmten ODER-Teilschaltungen 12.2, 12.3 und 12.4 angelegt. Die von diesen zweckbestimmten ODER-Teilschaltungen 12.2 bis 12.4 generierten globalen Ergebnissignale F*, DEGOUT* und UNC/FIRE.OK* werden dann auf ihren jeweiligen globalen Ergebnisleitungen bereitgestellt, die gemeinsam den R*-BUS bilden. Die ODER-Teilschaltung 12.1 setzt sich aus einer Batterie von vierzehn N-Wege-ODER-Gattern zusammen. Jede ODER- Teilschaltung 12.2 bis 12.4 besteht aus einem N-Wege-ODER- Gatter. Alternativ können die ODER-Teilschaltungen 12.1 bis 12.4 durch eine äquivalente Standard-Baumstruktur aufgebaut werden. Allerdings könnte man, wenn Konstruktion und Technologie dies zuließen, anstelle der Hardwareausführung der ODER-Funktion in der ODER-Schaltung 12 die ODER-Funktion verdrahten. Die globalen Ergebnis- und Ausgangsdaten werden zur weiteren Verarbeitung vorzugsweise im Register 184.1 gespeichert. Das Signal ID* wird im UND-Gatter 184.2 aus den Signalen F* und rekonstruiert. Das Signal ID* wird ebenfalls im Register 184.1 gespeichert, kann jedoch außerhalb des ZISC-Chips 10 ausgegeben werden, wie in Fig. 33 gezeigt, zur Verbindung mit einer Leuchtdiode (light emitting diode, LED), um dem Benutzer eine sofortige visuelle Information hinsichtlich der globalen Antwort des neuralen Netzes 11(A) zu liefern. Fig. 33 zeigt die Implementierung des interneuronalen Kommunikationssystems der vorliegenden Erfindung, das um den COM*-BUS des ZISC-Chips 10 von Fig. 4(A) herum angeordnet ist, in welchem sich das neurale Netz 11(A) für den Standalone-Betrieb befindet. Diese Architektur kann jedoch verbessert werden, damit eine Vielzahl von ZISC-Chips 10 zusammengefügt werden, um so größer dimensionierte neurale Netze zu erzeugen.
  • Im Folgenden soll der Fall des ZISC-Basis-Chips 10 betrachtet werden, dessen Architektur für den Betrieb in einer Mehrchipumgebung eingerichtet worden ist, wie oben unter Bezug auf Fig. 4(B) beschrieben wurde. In Fig. 34 verbinden nun die den R*-BUS und den OUT*-BUS bildenden Verbindungsleitungen in jedem ZISC-Chip 10 die Ausgänge der ODER-Teilschaltungen 12.1 bis 12.4 mit den entsprechenden Treiberschaltungen (z. B. beinhaltet der Teilblock 19.1 die Treiberschaltungen vom DR*- Typ, die mit jeder Leitung des OUT*-BUS verbunden sind). Diese Treiberschaltungen sind so gestaltet, dass sie eine zusätzliche verdrahtete ODER-Funktion auf dem chipexternen gemeinsamen Kommunikationsbus COM**-BUS zur Verfügung stellen, wodurch dieser von allen angeschlossenen ZISC-Chips 10 gemeinsam genutzt wird. Die globalen Ergebnissignale F**, DEGOUT** und UNC/FIRE.OK** sowie das globale Ausgangssignal OUT** stehen dann auf ihren jeweiligen globalen Leitungen des COM**-BUS bereit. Alle oder einige dieser globalen Ergebnis- und Ausgangssignale werden erneut an jeden ZISC-Chip 10 des neuralen Netzes angelegt; dies geschieht mittels geeigneter Empfängerschaltungen (RR), die sich ebenfalls in Kasten 19 jedes ZISC-Chips 10 befinden, wie aus Fig. 34 ersichtlich. Jedoch ist anzumerken, dass anstelle der oben beschriebenen verdrahteten ODER-Funktion eine nichtverdrahtete ODER-Funktion verwendet werden könnte, die sich etwa einer ODER-Funktion, wie z. B. 12, bedient. Im Gegensatz zur Architektur von Fig. 33, die nur eine ODER-Stufe besitzt, beinhaltet die Architektur von Fig. 34 zwei ODER- Stufen. Allerdings könnte man auch eine einzige ODER-Stufe in Betracht ziehen, wie oben unter Bezug auf die Architektur des ZISC-Chips 10" von Fig. 10 beschrieben wurde. Wenn die Unterscheidung zwischen dem COM*-BUS und dem COM**-BUS keine Rolle spielt, wird ein beliebiger Kommunikationsbus als der COM- BUS bezeichnet. Der in Fig. 4(B) gezeigte Multiplexer 21, mit dem die Auswahl getroffen werden kann, welches der Signale OUT* oder OUT** als ODER-Signal wieder an jede Neuronalschaltung 11 angelegt werden soll, stellt somit ein geeignetes Mittel für die Entscheidung dar, den ZISC-Chip 10 in einer Einzelchip- oder einer Mehrchipumgebung arbeiten zu lassen.
  • Fig. 35 zeigt die Einzelheiten einer typischen Implementierung des Treiber-Teilblocks 19.1 von Fig. 34 in der Konstruktion des Elementarmoduls 10[A] von Fig. 11. In Fig. 35 wird die Implementierung für das erste Bit von acht ZISC-Basis-Chips 10 gezeigt, die mit 10(1) bis 10(8) bezeichnet werden und gemeinsam das Elementarmodul 10[A] bilden. In Letzterem ist das neurale Elementarnetz 11[A] enthalten. Wie aus Fig. 35 ersichtlich, ist aus den nachfolgend genannten praktischen Gründen anstelle einer verdrahteten ODER-Funktion in Wirklichkeit eine festverdrahtete UND-Funktion implementiert worden. Für die verdrahtete ODER- Funktion wären PFETs (P-Kanal-Feldeffekttransistoren) erforderlich gewesen, bei denen es sich um langsame Bauelemente handelt. Deshalb werden an deren Stelle NFETs (N-Kanal- Feldeffekttransistoren) verwendet, die als schnelle Schaltelemente bekannt sind. Im vorliegenden Fall besteht somit jede Treiberschaltung DR* einfach aus einem NFET-Bauelement in offener Drain-Schaltung. Gemäß der Bipolartechnologie würden NPN-Transistoren in offener Collectorschaltung eine alternative Lösung darstellen. Sämtliche ersten Bitsignale für die acht Chips, d. h. die Signale OUT*1(1) bis OUT*1(8), werden an die Gatter ihrer jeweiligen NFET-Elemente angelegt, deren Drain in eine gemeinsame Leitung W1 verdrahtet wird, welche über einen mit dem ersten Potential VH verbundenen Lastwiderstand RL1 (Pull-up) geladen wird. Die Source-Elektrode jedes NFET-Elements ist mit dem zweiten Potential GND (ground, Masse) verbunden. Im Endergebnis wird auf den entsprechenden Leitungen des GDATA-BUS die gewünschte UND-Funktion zwischen den Bitsignalen ausgeführt, um das Bitsignal OUT**1 zu generieren. Das nun durch eine UND- Funktion gewonnene Signal OUT** besitzt eine dem oben beschriebenen Signal OUT**, welches durch eine ODER-Funktion gewonnen worden war (z. B. durch das Implementieren der Verdrahtung von Fig. 34), entgegengesetzte Polarität. Bemerkenswert ist, dass die Drain-Elektrode jedes NFET- Bauelements physisch nicht direkt mit dem Eingang der Empfängerschaltung RR im Chip verbunden ist. Für jeden ZISC-Chip 10 wird der Drain-Anschluss, der den Chip verlässt, mit einer Leitung W1 verbunden. Diese von allen NFET-Bauelementen gemeinsam benutzte Leitung W1 transportiert das Bitsignal OUT**1 zum GDATA-BUS. Das Bitsignal OUT**1 wird über die Leitung 21 und eine Empfängerschaltung RR wieder zu jedem ZISC-Chip 10 zurückgeführt. Eine Koppelleitung STR1 stellt die Verbindung zwischen den Leitungen W1 und 21 her. Die in Fig. 35 gezeigte Konstruktion kann leicht auf die anderen verbleibenden Bits übertragen werden, sodass das 14-Bit-Signal OUT** vollständig auf dem GDATA-BUS bereit steht. Gemäß der Darstellung in Fig. 35 ist die Empfängerschaltung RR ein Invertierungspuffer. Diese Schaltung kann nach beliebiger herkömmlicher Art sein. Es ist erforderlich, dass für jeden ZISC-Chip 10 das Bitsignal OR1 mit der richtigen Polarität regeneriert wird, da die Treiberschaltung DR* (die aus einem NFET-Bauelement besteht) als Inverter fungiert. Mitunter kann es günstig sein, ein Steuersignal PT (Pass-Through, hindurchgehen) an die Empfängerschaltung RR anzulegen, sodass das Signal OR1 gezwungen wird, den Wert "0" anzunehmen, wenn das Signal PT auf "aktiv" gesetzt wird. Wie oben unter Bezug auf Fig. 29 und 30 erwähnt wurde, wird die Such-/Sortierschaltung 502 passiert, wenn das Signal OR auf Null gesetzt wird (d. h. die oben erwähnte Ausschlussfunktion ist gesperrt). Das resultierende elementare ZISC-Modul 10[A] besteht somit aus einer Anzahl Q (im vorliegenden Fall Q = 8) ZISC-Basis-Chips 10 und benötigt keine externen Bauelemente. Dies ergibt sich aus dem besonderen Verfahren der verdrahteten Funktion einschließlich dem oben beschriebenen Verfahren der Koppelleitung. Falls die Verbindung direkt zwischen dem Ausgang der Treiberschaltung DR* und dem Eingang der Empfängerschaltung RR hergestellt werden sollte, würde dadurch die Flexibilität eingeschränkt. Die obige Konstruktion kann ferner auf jedes der globalen Ergebnissignale F**, DEGOUT** und UNC/FIRE.OK** erweitert werden.
  • Fig. 36 setzt sich aus den Teilen (A), (B) und (C) zusammen. Teil (A) zeigt die Beziehungen zwischen den Signalen OUT* und NOUT und Teil (B) die Beziehungen zwischen den Signalen OR und OUT* gemäß der Implementierung von Fig. 33 auf. Teil (C) zeigt die Beziehungen zwischen den Signalen OR/OUT** und OUT* gemäß der Implementierung von Fig. 35.
  • Die Suchzeit bei der Ermittlung von Dmin und die zum Sortieren der übrigen Abstände benötigte Sortierzeit hängen sehr stark von der Verzögerung der ODER-Teilschaltungen 12.1 bis 12.4 und der Treiberschaltungen (und damit von den Lastwiderständen) ab. Zur Verringerung dieser Verzögerungen wird die in Fig. 37 beschriebene Lösung empfohlen. Diese Lösung leitet sich direkt aus der in Fig. 35 gezeigten Konstruktion ab, profitiert jedoch von der optionalen Implementierung der Dmin-Bestimmungs- Hauptschaltung 20 in jedem ZISC-Basis-Chip 10.
  • In Fig. 37 ist die logische Implementierung einer Variante des Elementarmoduls 10[A] dargestellt; dieses besteht ebenfalls aus der Anordnung von acht ZISC-Basis-Chips 10(1) bis 10(8), wobei jedoch jeder mit einer eigenen Dmin-Bestimmungs-Hauptschaltung 20 ausgerüstet ist. Im ZISC-Chip 10(1) generiert die Gesamtschaltung 517 (siehe Fig. 30) die Signale NOUT1-1 bis NOUTp-N, die an die zweckbestimmten ODER-Teilschaltungen 12.1 angelegt werden. Die von der ODER-Teilschaltung 12.1 gelieferten Signale werden mit OUT*1 bis OUT*p bezeichnet und an die Dmin- Bestimmungs-Hauptschaltung 20 angelegt. Bei der vorliegenden Implementierung des ZISC-Basis-Chips 10 sind N = 36 und p = 14.
  • Das aus den Bitsignalen OUT*1 bis OUT*p bestehende Signal OUT*, das von der ODER-Teilschaltung 12.1 ausgegeben wird, wird nun als Eingangssignal an die Dmin-Bestimmungs-Hauptschaltung 20 angelegt. Das Leitungsbündel, das die Bitsignale OUT*1 bis OUT*p transportiert, wird als OR-BUS auch an die Gesamtschaltung 517 angelegt (für die Schaltung 517 ist das Signal OR gleich dem Signal OUT*). Die von der Dmin-Bestimmungs-Hauptschaltung 20 ausgegebenen Signale wiederum werden an ihre jeweiligen NFET- Bauelemente angelegt, die die Treiberschaltungen DR* des Teilblocks 19.1 bilden. Die vom ZISC-Chip 10(1) über die Drain- Elektroden der NFET-Bauelemente ausgegebenen Bitsignale OUT**1 bis OUT**p stehen auf den entsprechenden Leitungen W1 bis Wp bereit, die über entsprechende Lastwiderstände RL1 bis RLp mit VH verbunden sind. Nachdem die Bitsignale OUT** für alle 8 Chips und für alle p Bits durch UND-Operation verknüpft wurden, stehen auf dem GDATA-BUS die entsprechenden Bitsignale OUT**1 bis OUT**p des Signals OUT** bereit. Das Signal OUT** wird als OR*- BUS an die Dmin-Bestimmungs-Hauptschaltung 20 angelegt (für die Schaltung 20 sind die Signale OR* und OUT** nach der Komplementbildung gleich). Der Pfad, auf dem die Bitsignale OUT**1 bis OUT**p zur Dmin-Bestimmungs-Hauptschaltung 20 geleitet werden, beinhaltet die Koppelleitungen STR1 bis STRp, die Leitungen 21 bis Zp und die entsprechenden Empfängerschaltungen RR. Jede Dmin-Bestimmungs-Hauptschaltung 20 weist die gleiche Konstruktion wie die Such-/Sortierschaltung 502 auf. Die acht ZISC-Chips, die das Elementarmodul 10[A] in Fig. 37 bilden, arbeiten somit parallel, um zuerst unter den von den Neuronalschaltungen in jedem ZISC-Chip 10 berechneten Abständen den Wert des Minimalabstands zu ermitteln und dann wiederum den kleinsten Abstand dieser auf der Ebene des Elementarmoduls berechneten Minimalabstände zu ermitteln. Bei der in Fig. 37 dargestellten Implementierung werden die Such- und Sortierprozesse sehr effizient und schnell abgewickelt. Die Beschränkung der seriellen Verknüpfbarkeit auf acht Chips im beschriebenen Beispiel beruht auf der von der Technologie angenommenen maximalen Anzahl der verdrahteten UND-Funktionen. Ausgehend von den Beschreibungen der Fig. 35 veranschaulicht die Schaltung von Fig. 37 die praktische Ausführung der seriellen Verknüpfung von acht ZISC-Basis-Chips 10, die mit jeweils einer Dmin-Bestimmungs-Hauptschaltung 20 ausgerüstet sind, um eine verbesserte Variante des Elementarmoduls 10[A] von Fig. 11 zu bilden. Solche Elementarmodule wiederum können zu komplexen Modulen zusammengesetzt werden, die entsprechende neurale Komplexnetze beinhalten.
  • Ein derartiges äußerst wünschenswertes Ergebnis kann durch die Logikarchitektur von Fig. 38 erreicht werden. In diesem Fall existieren bezüglich der seriellen Verknüpfbarkeit der Elementarmodule keine praktischen Einschränkungen. In Fig. 38 wird der Aufbau eines Komplexmoduls 10{A} beschrieben, um zu veranschaulichen, wie eine Anzahl von R Elementarmodulen 10[A] angeordnet werden kann. Jedes Elementarmodul [A] setzt sich aus acht ZISC-Chips 10(1) bis 10(8) zusammen. Zur vereinfachten Darstellung soll lediglich das von jedem Elementarmodul generierte erste Bitsignal OUT**1 betrachtet werden. Die von den R Elementarmodulen generierten Bitsignale OUT**1 werden an den Eingang eines R-Wege-UND-Gatters 68.1 angelegt, um das Bitsignal OUT***1 zu generieren. Der dritte Stern zeigt an, dass eine dritte Logikfunktion (in diesem Fall eine UND-Funktion) ausgeführt worden ist. Das Bitsignal OUT***1 wiederum wird über eine invertierende Empfängerschaltung RR (nicht dargestellt) an jeden der acht ZISC-Chips jedes Elementarmoduls angelegt, um, wie oben erläutert, das Bitsignal OR1 zu generieren. Das UND- Gatter 68.1 gewährleistet die Übereinstimmung mit der unter Bezug auf Fig. 35 gezeigten Implementierung. Diese Überlegungen können auf die anderen Bitsignale angewendet werden, die in den entsprechenden UND-Gattern 68.2 bis 68.p verarbeitet werden, um die Signale OUT***2 bis OUT***p zu generieren, welche wiederum die Bitsignale OR2 bis ORp hervorbringen. Die UND-Schaltungen 68.1 bis 68.p können, sofern dadurch die gewünschte Logikfunktion UND bewirkt wird, aus ODER-, NOR- oder NAND- Gattern aufgebaut werden.
  • Die Beschreibung unter Bezug auf Fig. 38 zeigt deutlich, dass für die Implementierung des interneuralen Kommunikationssystems mit bis zu drei Logikfunktionen nur eine geringe Anzahl von Bauelementen erforderlich ist. Der COM***-BUS, der den wesentlichen Bestandteil des Busses GDATA-BUS darstellt, kann theoretisch eine unbegrenzte Anzahl von ZISC-Basis-Chips 10 und damit auch Neuronalschaltungen miteinander verbinden. Jede Neuronalschaltung sendet ihre lokalen Ergebnis- und Ausgangssignale gleichzeitig über den NR-BUS bzw. den NOUT-BUS, damit sie in der ODER-Schaltung 12 simultan verarbeitet werden. Dann werden die von der ODER-Schaltung 12 ausgegebenen Signale NR* und OUT* über die UND-Funktion auf dem COM**-BUS verdrahtet, welcher wiederum eine schnelle parallele Verarbeitung dieser Signale gewährleistet. Wegen der vollkommen parallelen Architektur des ZISC-Basis-Chips 10 führen diese beiden aufeinander folgenden ODER- und UND-Stufen schließlich zu einer geringfügigen Gesamtverzögerung des Verarbeitungsprozesses. Der COM**-BUS stellt auch ein wesentliches Element der oben unter Bezug auf die Daisy-Chain-Schaltung 600 diskutierten völligen seriellen Chipverknüpfung dar. Der OR-BUS, wie oben erwähnt, wird an jede Neuronalschaltung entweder eines jeden ZISC-Einzel- Chips 10 von Fig. 4(A) oder eines jeden ZISC-Basis-Chips 10 von Fig. 4(B) angelegt, die zu einem Elementarmodul oder einem Komplexmodul zusammengesetzt sind. Darüber hinaus verfügt der Benutzer über verschiedene Hardwarelösungen, um auf dem COM**- BUS beliebige globale Logikfunktionen zu realisieren, wie beispielsweise, jedoch nicht ausschließlich, die verdrahteten ODER-Funktionen und/oder UND-Funktionen. Außerdem ist zu beachten, dass bei der Architektur des ZISC-Chips 10 " von Fig. 10 lediglich eine ODER-Stufe erforderlich ist. Diese ODER-Stufe wird vorzugsweise durch Verdrahten der ODER-Funktion über Treiberschaltungen DR* durchgeführt. In diesem Fall beinhaltet das interneurale Kommunikationssystem nur den Kasten 19 (in dem aus den oben erläuterten praktischen Erwägungen anstelle des Verdrahtens der ODER-Funktion die UND-Funktion physisch verdrahtet wird), den COM**-BUS und den direkt davon abgeleiteten OR-BUS.
  • Die obige Beschreibung bezieht sich auf ein interneurales Kommunikationssystem und scheint daher auf eine spezielle Anwendung auf neurale Netze beschränkt zu sein, die entweder aus einem ZISC-Basis-Chip 10 oder durch Kombination einer gewünschten Anzahl von diesen aufgebaut sind. Dieser Ansatz kann jedoch insbesondere auf eine aus einer Vielzahl von Basis- Verarbeitungseinheiten bestehende Mehrprozessoreinheit verallgemeinert werden. Tatsächlich besitzt dieser Ansatz überall dort seine Gültigkeit, wo lokale Ergebnisdaten, die von allen oder zumindest einer bestimmten Anzahl von Verarbeitungseinheiten generiert wurden, gleichzeitig auf einem gemeinsamen Kommunikationsbus angelegt werden können und diese Verarbeitungseinheiten an der Ermittlung eines globalen Ergebnisses beteiligt werden können. Eine solche Ermittlung besteht üblicherweise im Ausführen einer gewünschten Logikfunktion mit den lokalen Ergebnisdaten, um auf dem gemeinsamen Kommunikationsbus verfügbare globale Ergebnisdaten zu generieren. Diese globalen Ergebnisdaten stehen für den direkten Zugriff auf diesem Bus zur Verfügung oder können in einem Register gespeichert werden. Und schließlich vergleicht dann eine in jeder Verarbeitungseinheit befindliche Vergleichsschaltung die lokalen Daten mit den globalen Daten, die ihr über einen Rückkopplungsbus zugeführt werden. Das Ergebnis dieses Vergleichs, welches neue lokale Ergebnisdaten darstellt, kann dann zum Einleiten verschiedener Aktionen verwendet werden, wie beispielsweise bestimmte Ressourcen oder Funktionsblöcke einer bestimmten Verarbeitungseinheit aus der Gruppe der Verarbeitungseinheiten zu inaktivieren oder auch weitere globale Ergebnisdaten zu berechnen. Jedes auf einer lokalen Leitung oder einem lokalen Bus transportierte lokale Ergebnissignal stellt somit das Ergebnis einer lokalen Bewertung dar, deren Zustand von der jeweils betrachteten Verarbeitungseinheit abhängt. Jedes auf einer globalen Leitung oder einem globalen Bus transportierte globale Ergebnissignal hingegen ist das Ergebnis einer globalen Bewertung, die auf der Ebene aller Basis-Verarbeitungseinheiten durchgeführt wird.
  • Im Fall des neuralen Netzes 11(A) von Fig. 4(A) sind die Neuronalschaltungen 11-1 bis 11-N über die ODER-Schaltung 12, den gemeinsamen, auf dem Chip integrierten Kommunikationsbus COM*-BUS und den OR-BUS als Rückkopplungsbus miteinander verbunden. Ein oben erwähntes wesentliches Problem besteht darin, herauszufinden, ob alle fixierten Neuronalschaltungen, die ausgelöst haben, die gleiche Kategorie besitzen oder ob sie zu mindestens zwei verschiedenen Kategorien gehören. Zu diesem Zweck werden in der Identifizierungsschaltung 400 die lokale Kategorie C (im Kategorieregister 450 gespeichert) und die globale Kategorie C* (über den OR-BUS) miteinander verglichen. In diesem Beispiel spielt die Neuronalschaltung 11 dieselbe Rolle wie die oben erwähnte Basis-Verarbeitungseinheit. Bei der im Kategorieregister 450 gespeicherten lokalen Kategorie C handelt es sich um lokale Daten und bei der globalen Kategorie C* um die globalen Daten, welche durch ODER-Verknüpfung aller Kategorien in der ODER-Teilschaltung 12.1 gewonnen wird. Die globale Kategorie C* wird über den OR-BUS, der somit als Rückkopplungsbus fungiert, zu jeder Neuronalschaltung transportiert, um mit der darin gespeicherten lokalen Kategorie C verglichen zu werden. Das Ergebnis dieses Vergleichs ist das Signal UNC/FIRE.OK, bei dem es sich um ein lokales Ergebnis handelt. Alle lokalen Ergebnissignale UNC/FIRE.OK wiederum werden in der Schaltung 12 durch ODER-Operation verknüpft, um das Signal UNC/FIRE.OK* zu generieren, bei dem es sich um ein globales Ergebnis handelt. Dieser Vergleich wird beispielsweise während der Erkennungsphase gemäß Kasten 41 in Fig. 14(B) durchgeführt. Der COM**-BUS schließlich besteht lediglich aus einer Vielzahl von globalen Ergebnisleitungen, die globale Ergebnissignale (F*, DEGOUT* und UNC/FIRE.OK*) transportieren, sowie einer Vielzahl von globalen Ausgangsleitungen, die das globale Ausgangssignal (OUT**) transportieren.
  • Im Folgenden soll angenommen werden, dass jede Basis- Verarbeitungseinheit über einen Ausgangsbus für den Transport eines lokalen Ergebnissignals sowie über einen Eingangs- oder Rückkopplungsbus für den Transport des globalen Ergebnissignals verfügt. Unter Anwendung allgemein üblicher Verknüpfungsregeln kann so eine Anzahl von Basis-Verarbeitungseinheiten miteinander verbunden werden. Fig. 39 zeigt ein Beispiel dieser Konfiguration für den Fall des Verdrahtens einer UND-Funktion, sodass die Implementierung sehr einfach ist. In Fig. 39 wird eine Elementar-Verarbeitungseinheit 69 gezeigt, die aus einer Anzahl von N Basis-Verarbeitungseinheiten 70-1 bis 70-N besteht. Die oben erwähnte Kopplungsfunktion, die zwischen dem globalen Ergebnisbus W und dem Rückkopplungsbus Z erforderlich ist, wird durch einen Kopplungsbus STR realisiert. Mit jeder Leitung des globalen Ergebnisbusses W wird, wie in Fig. 39 schematisch veranschaulicht, ein Lastwiderstand RL entsprechend verbunden. Dabei ist zu beachten, dass die Kopplungsfunktion durch eine Treiberschaltung ersetzt werden kann.
  • Der obige unter Bezug auf Fig. 39 veranschaulichte Ansatz kann noch komplizierter gestaltet werden, um eine größtmögliche Verallgemeinerung zu erzielen. Bei einer großen Anzahl miteinander zu verbindender Basis-Verarbeitungseinheiten kann diese Anzahl durch die technologischen Möglichkeiten begrenzt sein. Um diese Grenze zu überwinden, wäre ein zwischengeschalteter Verbindungsblock erforderlich, um zwei oder mehrere globale Ergebnissignale miteinander zu verbinden, die nun als Zwischen-Ergebnissignale anzusehen sind, um auf einem globalen Ergebnisbus ein neues globales Ergebnissignal zu generieren. Und schließlich wird dieser globale Ergebnisbus als Rückkopplungsbus über den Kopplungsbus mit jeder Basis- Verarbeitungseinheit verbunden. Infolge dieser Struktur wird für das Datenmanagement letztlich kein Überwacher, sondern lediglich die Koppelverbindung zwischen der globalen Ergebnisleitung und der Rückkopplungsleitung benötigt. Diese Überlegungen können sogar noch weiter verallgemeinert werden, indem neue globale Ergebnissignale wiederum zu Zwischen-Ergebnissignalen werden, die in einer weiteren Zwischenschaltung kombiniert werden, um so auf einem globalen Endergebnisbus ein globales Endergebnissignal zu generieren.
  • Fig. 40 veranschaulicht in einem gewissen Maße diese Verallgemeinerung. Zwei Elementar-Verarbeitungseinheiten 69[1] und 69[2], wie sie in Verbindung mit Fig. 39 beschrieben wurden, werden zu einer komplexen Verarbeitungseinheit 71 zusammengebaut. Die entsprechenden globalen Busse W1 und W2 werden an das UND-Gatter 72 angelegt, dessen Ausgang mittels des Kopplungsbusses STR den Rückkopplungsbus Z bildet, welcher jede Basis-Verarbeitungseinheit 70-1 bis 70-N jeder Elementar- Verarbeitungseinheit 69[1] und 69[2] versorgt.
  • HILFSSCHALTUNGEN
  • Eine einfache Möglichkeit, in das AlF-Register 352 einen Wert des Einflussfeldes zu laden, der immer kleiner als MaxIF ist, besteht in der Verwendung einer vereinfachten Version der unter Bezug auf Fig. 29 beschriebenen Such-/Sortierschaltung 502. In Fig. 41 wird die Schaltung 73 beschrieben, die den detaillierten Aufbau dieser Zusatzschaltung 502' im ZISC-Basis-Chip 10 veranschaulicht. Die Aufgabe dieser Schaltung 502' besteht darin, das Einflussfeld an den Wert MaxIF zu klemmen. Die Klemmschaltung 502' ist aus den gleichen Elementar- Basiseinheiten 510 wie in Fig. 28 aufgebaut, die auch in derselben Weise seriell miteinander verknüpft sind. Die Hauptunterschiede bezüglich der Such-/Sortierschaltung 502 in Fig. 29 sind nicht konstruktiver Natur, sondern beziehen sich eher auf die Verknüpfungen. Anstelle des berechneten Abstands D wird MaxIF an die Klemmschaltung 502' angelegt. Wenn die Klemmschaltung 502' ausgewählt (nicht gesperrt) werden soll, wird ihr Eingang EXCLIN mit dem Massepotential GND verbunden. Ihr Signal EXCLOUT hingegen wird nicht ausgegeben. Bei der beschriebenen Implementierung von Fig. 41 müssen die ODER-Gatter der zweckbestimmten ODER-Schaltung 12.1 von Fig. 29 einen zusätzlichen Eingang erhalten; sie werden nun mit 12'.1 bis 12'.1 bezeichnet und haben nicht N sondern N+1 Eingänge. In einem ZISC-Basis-Chip 10 ist nur eine Klemmschaltung 502' implementiert und sie ist in derselben Weise an der Ermittlung des Minimalabstands Dmin beteiligt. Die Aufgabe dieser Klemmschaltung 502' besteht somit darin, das AlF-Register 352 einer neu besetzten Neuronalschaltung während der Lernphase auf den Wert MaxIF zu setzen. Dies kann beispielsweise dann eintreten, wenn keine Neuronalschaltung des neuralen Basisnetzes 11(A) gelernt hat und der Wert MaxIF in die lernbereite Neuronalschaltung geladen wird.
  • DIE HAUPTMERFlALE DES ZISC-BASIS-CHIPS
  • Der ZISC-Basis-Chip 10 von Fig. 4(B) ist dafür eingerichtet, Eingangsvektoren mit bis zu 64 Komponenten (Einträgen) zu lernen und zu erkennen. Aufgrund seiner parallelen Architektur berechnet der ZISC-Chip 10 simultan den Abstand zwischen dem Eingangsvektor und allen zuvor in ihm gespeicherten Prototypvektoren (Neuronalschaltungen, die "gelernt" haben). Das Verfahren der Abstandsberechnung basiert auf einer Norm, die vom Benutzer ausgewählt werden kann. Man beachte, dass sich diese Norm von einer zur anderen Neuronalschaltung unterscheiden kann. Bei der obigen Beschreibung basieren die beiden verfügbaren Verfahren zur Abstandsberechnung auf den Normen L1 und Lsup, allerdings können auch andere Berechnungsverfahren Anwendung finden. Die Beschränkung auf N (N = 36) Neuronalschaltungen im ZISC-Basis-Chip 10 stellt kein Problem dar, da die Chips seriell völlig verknüpfbar sind. Daher kann in dem neuralen Netz eine unbegrenzte Anzahl von Prototypvektoren gespeichert werden. Während der Lernphase passt jede Neuronalschaltung automatisch ihr Einflussfeld an, um den Merkmalsraum optimal abzubilden. Diese Anpassung erfolgt ohne jegliche äußere Einflussnahme, wie beispielsweise die Überwachung durch einen Mikrocontroller, simultan in allen Neuronalschaltungen. Im Ergebnis dessen erfolgt der Lernprozess intern und voll automatisch. Andererseits ist die Lernzeit unabhängig von der Anzahl der Neuronalschaltungen, aus denen das neurale Netz besteht. Um zusätzlich Zeit einzusparen, wird außerdem im Vorladeschritt die Möglichkeit geschaffen, dass die Komponenten des Eingangsvektors während der Erkennungsphase gespeichert werden, sodass zum Lernen eine erneute Vorlage des Eingangsvektors nicht erforderlich ist. Der ZISC-Chip 10 ist mit einer großen Anzahl Kategorien (16384) ausgestattet und enthält ferner eine Kontextfunktion, durch die insbesondere das neurale Netz in eine Anzahl von Teilbereichen unterteilt werden kann. Er ist auch mit einem effizienten Such- und Sortiermechanismus zur schnellen Ermittlung des Minimalabstands und zum effektiven Sortieren der übrigen Abstände ausgestattet. Zur Erhöhung der Effektivität kann der ZISC-Basis-Chip 10 sowohl mit den Modi SPEICHERN als auch WIEDERHERSTELLEN arbeiten. Und schließlich ist die Anzahl der ein neurales Netz bildenden Neuronalschaltungen unbegrenzt und für den Benutzer transparent.
  • HAUPTANWENDUNGEN DES ZISC-CHIPS
  • Die ZISC-Basis-Chips 10 der vorliegenden Erfindung basieren auf einer außerordentlich neuartigen Architektur von Neuronalschaltungen. Diese ermöglicht die Konstruktion von Elementar- und Komplexmodulen, die neurale Netze einer beliebigen gewünschten Größe enthalten. Die dargelegten neuartigen neuralen Schaltungsstrukturen gemäß der vorliegenden Erfindung sind so gestaltet, dass sie eine Anzahl von Anwendungen in verschiedenen Gebieten der Technologie abdecken können. Der ZISC-Chip bietet eine neuartige und preiswerte Lösung in vielen Bereichen, wie z. B.:
  • Bilderkennung (Fertigungsautomatisierung, ...)
  • Bildkomprimierung (Datenspeicherung, ...)
  • Videokomprimierung (Videospeicherung, Videokonferenz, ...)
  • Zeichenerkennung
  • Sprachverarbeitung und -erkennung
  • Signalerkennung (Radar, Sonar u. ä.)
  • Datenanalyse
  • Robotertechnik
  • Geräteüberwachung
  • Signalverarbeitung
  • usw.
  • INHALTSVERZEICHNIS
  • TITEL
  • GEBIET DER ERFINDUNG
  • GLEICHZEITIG ANHÄNGIGE PATENTANMELDUNGEN
  • HINTERGRUND DER ERFINDUNG
  • ÜBERBLICK ÜBER DIE ERFINDUNG
  • AUFGABEN DER ERFINDUNG
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSARTEN
  • KURZBESCHREIBUNG DER ZISC-CHIP-ARCHITEKTUREN
  • EINLEITUNG
  • DIE ARCHITEKTUR DES ZISC-BASIS-CHIPS
  • VARIANTEN DER ARCHITEKTUR DES ZISC-BASIS-CHIPS
  • DIE ARCHITEKTUREN DES ZISC-MODULS
  • KURZBESCHREIBUNG DER ARBEITSWEISE DES ZISC-BASIS-CHIPS
  • INITIALISIERUNGSMODUS
  • ERKENNUNGSMODUS UND VORLADEMODUS
  • LERNMODUS
  • SPEICHERMODUS UND WIEDERHERSTELLUNGSMODUS
  • DETAILLIERTE BESCHREIBUNG DES ZISC-BASIS-CHIPS
  • KONTEXTREGISTER UND ABGLEICHSCHALTUNG (100/150)
  • DIE SCHREIB-/LESE-SPEICHERSCHALTUNG (250)
  • DIE ABSTANDSBEWERTUNGSSCHALTUNG (200)
  • DIE ABSTANDSVERGLEICHSSCHALTUNG UND DIE WENN-SCHALTUNGEN (300/350)
  • DIE IDENTIFIZIERUNGSSCHALTUNG (400)
  • DIE Dmin-BESTMMUNGSSCHALTUNG (500)
  • DIE DAISY-CHAIN-SCHALTUNG (600)
  • DAS INTERNEURONALE KOMMUNIKATIONSSYSTEM (COM-BUS)
  • HILFSSCHALTUNGEN
  • DIE HAUPTMERKMALE DES ZISC-BASIS-CHIPS
  • HAUPTANWENDUNGEN DES ZISC-BASIS-CHIPS
  • INHALTSVERZEICHNIS
  • LISTE DER SYMBOLE UND BEZEICHNUNGEN
  • ANSPRÜCHE
  • ZUSANMENFASSUNG
  • LISTE DER SYMBOLE UND BEZEICHNUNGEN (im Beschreibungstext) SYMBOL DEFINITION
  • A Eingangsvektor
  • AIF tatsächliches Einflussfeld
  • A1 erste Komponente (Gewicht) des Eingangsvektors
  • a1 erstes Bit der Eingangsvektorkomponente
  • B Prototypvektor
  • B1 erste Komponente des Prototypvektors
  • b1 erstes Bit der Prototypvektorkomponente
  • CAT Eingangskategorie
  • CAT-BUS Bus, der die Eingangskategorie transportiert
  • C lokale Kategorie der Neuronalschaltung 11
  • Cat-BUS Bus, der die lokale Kategorie transportiert
  • Ci oder C-i lokale Kategorie der Neuronalschaltung 11-i
  • C* oder C** globale Kategorie
  • c Übertragbitsignal
  • Cin Übertrageingangssignal von Summierern
  • Cgen, Cout Übertragausgangssignal von Summierern
  • Cmin Minimalkategorie
  • CO ein Steuersignal für fixierte Neuronalschaltungen
  • COM*-BUS Bus, der die Signale R* und OUT* transportiert
  • COM**-BUS Bus, der die Signale R** und OUT** transportiert
  • COM-BUS Oberbegriff der Busse COM*-BUS und COM**-BUS
  • CXT Eingangskontextdaten
  • CXT-BUS Bus, der die CXT-Daten transportiert
  • Cxt lokale Kontextdaten
  • Cxt-BUS Bus, der die Cxt-Daten transportiert
  • D, Di oder D-i von einer Neuronalschaltung berechneter Abstand
  • DATA-BUS Bus, der die Daten transportiert
  • DCI Daisy-Chain-Eingangsterminal/-signal
  • DCO Daisy-Chain-Ausgangsterminal/-signal
  • DIST-BUS Bus, der das Abstandssignal D transportiert
  • DEG Signal für den entarteten Zustand
  • DEGOUT lokales Ergebnissignal für entartete Schaltung
  • Dmin Minimalabstand
  • EXCLIN Ausschluss-Eingangssignal der Such-/ Sortierschaltung
  • EXCLOUT Ausschluss-Ausgangssignal der Such-/ Sortierschaltung
  • F lokales Auslöseergebnissignal
  • F* oder F** globales Auslöseergebnissignal
  • f Erzwingungs-Bitsignal
  • g invertiertes Erzwingungs-Bitsignal
  • GDATA-BUS globaler Ausgangsbus
  • INDATA-BUS Eingangsdatenbus
  • i eine Arbeitsvariable
  • i oder -i bezogen auf die Neuronalschaltung 11-i
  • J von der Vergleichsschaltung generiertes Signal
  • J-BUS Bus, der das Signal J transportiert
  • jk das k-te Bit des Signals J
  • K ein Zwischensignal in Block 400
  • k eine Arbeitsvariable
  • L ein während des Lernens aktives Steuersignal
  • LT ein Zwischensignal (kleiner als)
  • LTE ein Zwischensignal (kleiner als oder gleich)
  • Lk Binärwort, das von der k-ten Zeile Lk gebildet wird
  • Norm L1 Manhattanverfahren zur Abstandsberechnung
  • Lsup Berechnungsverfahren des QUADRAT-Abstands
  • 1 eine Arbeitsvariable
  • M-BUS ein Bus auf dem ZISC-Chip
  • m Anzahl der Bits zum Codieren einer Vektorkomponente
  • MaxIF Maximalwert des AlF
  • MinIF Minimalwert des AlF
  • n Anzahl der Vektorkomponenten
  • N Anzahl der Neuronalschaltungen in einem ZISC-Chip
  • NM der normale Untermodus (in der Erkennungsphase)
  • NNM Untermodus "nächster Nachbar" (")
  • NO Norm-Eingangssignal
  • NO-BUS Bus, der das Signal NO transportiert
  • No lokales Normsignal
  • No-BUS Bus, der das Signal No transportiert
  • NOUT lokales (oder neuronales) Ausgangssignal
  • NOUT-BUS Bus, der das Signal NOUT transportiert
  • NR zusammengesetztes lokales Ergebnissignal
  • NR-BUS Bus, der das Signal NR transportiert
  • OR Rückkopplungssignal (gleich OUT* oder OUT**)
  • OR-BUS Bus, der das Signal OR transportiert
  • OUT* globales Ausgangssignal (nach einmaliger ODER- Verknüpfung)
  • OUT** globales Ausgangssignal (nach zweimaliger ODER- Verknüpfung)
  • P Breite verschiedener Busse des ZISC-Chips
  • P Ausbreitungsbit (p = )
  • PU Verarbeitungseinheit
  • q eine Arbeitsvariable
  • Q maximale Anzahl Chips in einem Elementarmodul
  • R maximale Anzahl Elementarmodule in einem Komplexmodul
  • R* zusammengesetztes globales Ergebnissignal
  • R*-BUS Bus, der das Signal R* transportiert
  • RAM-BUS ein Bus der Neuronalschaltung
  • RESET Steuersignal zum allgemeinen Zurücksetzen
  • RS ein Steuersignal für BEREIT zum SPEICHERN
  • s ein Bit einer Partialsumme
  • S das von einem Summierer ausgegebene Summensignal
  • SELECT ein Gate-Signal
  • SL Zustandszeile
  • ST Steuersignal SPEICHERN
  • UNC/FIRE.OK lokales Mehrdeutigkeits-Ergebnissignal
  • UNC/FIRE.OK* globales Mehrdeutigkeits-Ergebnissignal
  • X Zwischensignal im Summierer
  • () auf einen Chip bezogene Bezugsnummer
  • [] auf ein Elementarmodul bezogene Bezugsnummer
  • {} auf ein Komplexmodul bezogene Bezugsnummer

Claims (7)

1. Daisy-Chain-Schaltung, die in jeder Neuronalschaltung eines aus einer Vielzahl von Neuronalschaltungen bestehenden neuralen Netzes angeordnet ist, um zwischen den beiden möglichen Zuständen einer Neuronalschaltung (frei oder besetzt) in Abhängigkeit vom jeweiligen Wert ihrer Eingangs- und Ausgangssignale zu unterscheiden; wobei die Daisy-Chain- Schaltung Folgendes beinhaltet:
Mittel zum Empfangen eines von der Daisy-Chain-Schaltung der vorhergehenden Neuronalschaltung generierten Eingangssignals an einem Eingangsterminal und Mittel zum Generieren eines Ausgangssignals an einem Ausgangsterminal, welches an ein Eingangsterminal der Daisy-Chain-Schaltung der nachfolgenden Neuronalschaltung angelegt wird, sodass die Neuronalschaltungen des neuralen Netzes kettenförmig strukturiert sind;
gekennzeichnet durch:
Registermittel (601) zum Speichern des Eingangssignals unter der Kontrolle eines Freigabesignals zum Speichern (ST), welches während der Lernphase aktiviert wird, um den logischen Wert des Eingangssignals in dieses Register zu speichern; und
mit diesem Register verbundene Rücksetzmittel, die dafür eingerichtet sind, während der Initialisierung in diesem Register einen ersten logischen Wert (L) zu erzwingen;
wobei das Eingangsterminal der ersten Daisy-Chain-Schaltung in der Kette mit einem ersten Potential (VH) verbunden ist, damit das erste Eingangssignal der Kette gleich einem zweiten logischen Wert (H) ist.
2. Daisy-Chain-Schaltung nach Anspruch 1, in der die Rücksetzmittel aus einem Zweiwege-UND-Gatter (602) bestehen, dessen Ausgang mit dem Eingang des Registers verbunden ist und das eine UND-Funktion zwischen dem von der vorhergehenden Daisy-Chain-Schaltung generierten Eingangssignal und einem Rücksetzsignal (-RESET) ausführt.
3. Daisy-Chain-Schaltung nach Anspruch 1 oder 2, in der der Zustand der Neuronalschaltung durch die folgende Tabelle gegeben ist:
TABELLE
4. Daisy-Chain-Schaltung nach Anspruch 1, 2 oder 3, die ferner ein Zweiwege-ODER-Gatter (603) enthält, dessen erster Eingang mit dem Ausgang der Registermittel verbunden ist, dessen anderer Eingang ein Prüfsignal (ALL) empfängt und dessen Ausgang mit dem Ausgangsterminal verbunden ist, an dem das Ausgangssignal zur Verfügung steht wobei das Prüfsignal überall dort, wo dies erwünscht ist, einen zweiten logischen Wert erzwingen kann, der die Neuronalschaltung in den besetzten Zustand versetzt.
5. Daisy-Chain-Schaltung nach einem der vorhergehenden Ansprüche, die ferner ein Zweiwege-XOR-Gatter (605) (exklusives ODER, XOR) enthält, dessen Eingänge jeweils mit dem Eingangs- und Ausgangsterminal der Daisy-Chain-Schaltung verbunden sind, um ein Speicherbereitschaftssignal (RS) zu generieren.
6. Daisy-Chain-Schaltung nach Anspruch 5, in der das Speicherbereitschaftssignal an den Gewichtsspeicher aller Neuronalschaltungen gesendet wird, damit die Komponenten des Eingangsvektors, die während der Erkennungsphase dem neuralen Netz vorgelegt werden, lediglich in der lernbereiten Neuronalschaltung gespeichert werden.
7. Daisy-Chain-Schaltung nach einem der vorhergehenden Ansprüche, die ferner ein Zweiwege-UND-Gatter (606) enthält, dessen erster Eingang mit dem Ausgangsterminal verbunden ist und dessen anderer Eingang ein Signal (NS) zur Auswahl einer Neuronalschaltung empfängt, um ein Steuersignal (CO) zu generieren, um lediglich die besetzten und die ausgewählten Neuronalschaltungen im neuralen Netz auszuwählen.
DE69430529T 1994-07-28 1994-07-28 Daisy-Chain-Schaltung für die serielle Verbindung von Neuronalschaltungen Expired - Fee Related DE69430529T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
EP94480072A EP0694856B1 (de) 1994-07-28 1994-07-28 Daisy-Chain-Schaltung für die serielle Verbindung von Neuronalschaltungen

Publications (2)

Publication Number Publication Date
DE69430529D1 DE69430529D1 (de) 2002-06-06
DE69430529T2 true DE69430529T2 (de) 2003-01-16

Family

ID=8218128

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69430529T Expired - Fee Related DE69430529T2 (de) 1994-07-28 1994-07-28 Daisy-Chain-Schaltung für die serielle Verbindung von Neuronalschaltungen

Country Status (4)

Country Link
US (1) US5710869A (de)
EP (1) EP0694856B1 (de)
JP (1) JP3172405B2 (de)
DE (1) DE69430529T2 (de)

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FI103304B1 (fi) 1997-03-26 1999-05-31 Nokia Oy Ab Assosiatiivinen neuroni
JP2002024199A (ja) * 1998-02-20 2002-01-25 Souwa Kenkyusho:Kk 二値システムの学習方法
US6377941B1 (en) * 1998-11-26 2002-04-23 International Business Machines Corporation Implementing automatic learning according to the K nearest neighbor mode in artificial neural networks
US6502083B1 (en) * 1998-12-29 2002-12-31 International Business Machines Corporation Neuron architecture having a dual structure and neural networks incorporating the same
US6523018B1 (en) * 1998-12-29 2003-02-18 International Business Machines Corporation Neural chip architecture and neural networks incorporated therein
US6332137B1 (en) * 1999-02-11 2001-12-18 Toshikazu Hori Parallel associative learning memory for a standalone hardwired recognition system
US6424998B2 (en) 1999-04-28 2002-07-23 World Theatre, Inc. System permitting the display of video or still image content on selected displays of an electronic display network according to customer dictates
US6430603B2 (en) * 1999-04-28 2002-08-06 World Theatre, Inc. System for direct placement of commercial advertising, public service announcements and other content on electronic billboard displays
US6430605B2 (en) * 1999-04-28 2002-08-06 World Theatre, Inc. System permitting retail stores to place advertisements on roadside electronic billboard displays that tie into point of purchase displays at stores
US7088335B2 (en) * 1999-04-28 2006-08-08 Novus Partners Llc Methods and apparatus for ultra-violet stimulated displays
US6952685B1 (en) * 1999-08-27 2005-10-04 Ochoa Optics Llc Music distribution system and associated antipiracy protection
US8090619B1 (en) 1999-08-27 2012-01-03 Ochoa Optics Llc Method and system for music distribution
US20020056118A1 (en) * 1999-08-27 2002-05-09 Hunter Charles Eric Video and music distribution system
US6647417B1 (en) 2000-02-10 2003-11-11 World Theatre, Inc. Music distribution systems
US7647618B1 (en) * 1999-08-27 2010-01-12 Charles Eric Hunter Video distribution system
US8656423B2 (en) 1999-08-27 2014-02-18 Ochoa Optics Llc Video distribution system
US7209900B2 (en) 1999-08-27 2007-04-24 Charles Eric Hunter Music distribution systems
MXPA02005948A (es) * 1999-12-17 2003-10-14 World Theatre Inc Sistema y metodo que permite a los clientes solicitar productos seleccionados de un conjunto vasto de productos ofrecidos por multiples comerciantes participantes.
US9252898B2 (en) 2000-01-28 2016-02-02 Zarbaña Digital Fund Llc Music distribution systems
US6606614B1 (en) * 2000-08-24 2003-08-12 Silicon Recognition, Inc. Neural network integrated circuit with fewer pins
US7054256B2 (en) * 2000-10-20 2006-05-30 Ochoa Optics Llc High capacity digital data storage by transmission of radiant energy through arrays of small diameter holes
US8027942B2 (en) * 2000-12-13 2011-09-27 International Business Machines Corporation Method and circuits for associating a complex operator to each component of an input pattern presented to an artificial neural network
US20020112243A1 (en) * 2001-02-12 2002-08-15 World Theatre Video distribution system
US20020112235A1 (en) * 2001-02-12 2002-08-15 Ballou Bernard L. Video distribution system
US8112311B2 (en) 2001-02-12 2012-02-07 Ochoa Optics Llc Systems and methods for distribution of entertainment and advertising content
US7088352B2 (en) * 2002-06-19 2006-08-08 Novus Partners Llc Dynamic device and method for dispensing machines
US7015875B2 (en) * 2001-06-29 2006-03-21 Novus Partners Llc Dynamic device for billboard advertising
US7098869B2 (en) * 2001-06-29 2006-08-29 Novus Partners Llc Business method for billboard advertising
JP2005504995A (ja) * 2001-06-29 2005-02-17 ノーヴァス・コミュニケーション・テクノロジーズ・インコーポレイテッド ダイナミック掲示板広告装置およびダイナミック掲示板広告方法
US7098870B2 (en) * 2001-06-29 2006-08-29 Novus Partners Llc Advertising method for dynamic billboards
US7960005B2 (en) * 2001-09-14 2011-06-14 Ochoa Optics Llc Broadcast distribution of content for storage on hardware protected optical storage media
US7233781B2 (en) 2001-10-10 2007-06-19 Ochoa Optics Llc System and method for emergency notification content delivery
ATE453903T1 (de) * 2001-12-21 2010-01-15 Ibm Verfahren und schaltungen zur bildskalierung mit hilfe neuronaler netzwerke
CN100440309C (zh) 2002-08-29 2008-12-03 N-特莱格有限公司 透明数字化器和被动型电子笔
EP2128580A1 (de) 2003-02-10 2009-12-02 N-Trig Ltd. Berührungsdetektion für einen Digitalisierer
US7366352B2 (en) * 2003-03-20 2008-04-29 International Business Machines Corporation Method and apparatus for performing fast closest match in pattern recognition
US8478081B2 (en) 2005-06-30 2013-07-02 Agc Flat Glass North America, Inc. Monolithic image perception device and method
RU2444059C2 (ru) * 2005-06-30 2012-02-27 Эй-Джи-Си Флэт Гласс Норт Америкэ, Инк. Интегральное устройство и способ восприятия образов
WO2007017848A2 (en) 2005-08-11 2007-02-15 N-Trig Ltd. Apparatus for object information detection and methods of using same
CN100430556C (zh) * 2006-04-28 2008-11-05 张有德 组合式多功能钢架
WO2008022156A2 (en) * 2006-08-14 2008-02-21 Neural Id, Llc Pattern recognition system
US20080168013A1 (en) * 2006-12-05 2008-07-10 Paul Cadaret Scalable pattern recognition system
US8825350B1 (en) 2011-11-22 2014-09-02 Kurt B. Robinson Systems and methods involving features of adaptive and/or autonomous traffic control
US10657451B2 (en) 2013-09-04 2020-05-19 Rokio, Inc. Pattern recognition system
FR3015068B1 (fr) * 2013-12-18 2016-01-01 Commissariat Energie Atomique Module de traitement du signal, notamment pour reseau de neurones et circuit neuronal
US11941512B2 (en) 2019-06-26 2024-03-26 Western Digital Technologies, Inc. Neural network engine utilizing a serial bus
US20240220585A1 (en) 2022-12-28 2024-07-04 Datashapes, Inc. Systems and methods for determining classification probability
CN118333100B (zh) * 2024-06-12 2024-08-09 上海岩芯数智人工智能科技有限公司 一种低贡献力神经元的网络裁剪方法及装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4326269A (en) * 1980-06-09 1982-04-20 General Electric Company One bit memory for bipolar signals
GB2224139A (en) * 1988-10-24 1990-04-25 Philips Electronic Associated Digital data processing apparatus
EP0378115B1 (de) * 1989-01-06 1998-09-30 Hitachi, Ltd. Neuronaler Rechner
US5319762A (en) * 1990-09-07 1994-06-07 The Mitre Corporation Associative memory capable of matching a variable indicator in one string of characters with a portion of another string
US5214747A (en) * 1990-12-24 1993-05-25 Eastman Kodak Company Segmented neural network with daisy chain control
US5222193A (en) * 1990-12-26 1993-06-22 Intel Corporation Training system for neural networks and the like
FR2687814A1 (fr) * 1992-02-26 1993-08-27 Philips Electronique Lab Processeur neuronal a cellules synaptiques reparties.

Also Published As

Publication number Publication date
JPH08171543A (ja) 1996-07-02
JP3172405B2 (ja) 2001-06-04
US5710869A (en) 1998-01-20
EP0694856A1 (de) 1996-01-31
DE69430529D1 (de) 2002-06-06
EP0694856B1 (de) 2002-05-02

Similar Documents

Publication Publication Date Title
DE69430529T2 (de) Daisy-Chain-Schaltung für die serielle Verbindung von Neuronalschaltungen
DE69430527T2 (de) Schaltung für das Vorladen von Eingangsvektorbestandteilen in eine freie Neuronalschaltung während der Erkennungsphase
DE69430744T2 (de) Verbesserte Neuronalhalbleiterchipsarchitekturen und Neuronalnetzwerke darin
DE69430528T2 (de) Such/Sortier-Schaltung für Neuronalnetzwerke
DE69430870T2 (de) Innovative Neuronalschaltungsarchitektur
DE69300041T2 (de) Mehrfachprozessor-Datenverarbeitungssystem.
DE112017000855B4 (de) Energiesparender zeitlich gemultiplexter neurosynaptischer Kern zum Implementieren neuronaler Netze
DE69218941T2 (de) Neuronale netzwerk architektur
DE69815390T2 (de) Neuronale netzwerke
DE102018212297A1 (de) Verwendung von programmierbaren Switching-Chips als künstliche neuronale Netzwerk Module
DE112021002939T5 (de) Effiziente kachel-zuordnung für zeilenweise zuordnung in neuronalen faltungsnetzen zur analogen inferenz in künstliche-intelligenz-netzen
US20040034609A1 (en) Neural cortex
Howard et al. Electronic neural networks
DE3587612T2 (de) Suchverfahren für Assoziationsmatrix.
El-Bakry Modular neural networks for solving high complexity problems
DE102023115286A1 (de) Analoger inhaltsadressierbarer speicher mit stromeingang
Howells et al. BCN: A novel network architecture for RAM-based neurons
DE112020005262T5 (de) Kapazitive verarbeitungseinheit
DE102022126236A1 (de) Kompakte k-sat-verifizierung mit tkameras
Verleysen et al. A new CMOS architecture for neural networks
El-Bakry et al. Modular neural networks for solving high complexity tasks
Goltsev Adaptive neuron-like network for a textural segmentation of images

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee