DE60213007T2 - Unscharf adressierbarer digitaler speicher - Google Patents

Unscharf adressierbarer digitaler speicher Download PDF

Info

Publication number
DE60213007T2
DE60213007T2 DE60213007T DE60213007T DE60213007T2 DE 60213007 T2 DE60213007 T2 DE 60213007T2 DE 60213007 T DE60213007 T DE 60213007T DE 60213007 T DE60213007 T DE 60213007T DE 60213007 T2 DE60213007 T2 DE 60213007T2
Authority
DE
Germany
Prior art keywords
address
data
bits
memory
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 - Lifetime
Application number
DE60213007T
Other languages
English (en)
Other versions
DE60213007D1 (de
Inventor
Stephen Byram Wilmslow FURBER
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.)
Cogniscience Ltd
Original Assignee
Cogniscience Ltd
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 Cogniscience Ltd filed Critical Cogniscience Ltd
Publication of DE60213007D1 publication Critical patent/DE60213007D1/de
Application granted granted Critical
Publication of DE60213007T2 publication Critical patent/DE60213007T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/06Address interface arrangements, e.g. address buffers

Landscapes

  • Engineering & Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Read Only Memory (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Error Detection And Correction (AREA)
  • Static Random-Access Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Holo Graphy (AREA)
  • Magnetically Actuated Valves (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Communication Control (AREA)

Description

  • Die vorliegende Erfindung betrifft einen digitalen Speicher.
  • Die zunehmende Benutzung von Computersystemen und digitalen elektronischen Vorrichtungen hat zu einer Anzahl unterschiedlicher vorgestellter Speicherstrukturen geführt. Die weite Spanne der Anwendungen, die einen digitalen Speicher benötigen, bedeutet, daß Speicher mit unterschiedlichen Eigenschaften benötigt werden.
  • Beispielsweise benötigen Speicher zur Benutzung in einem üblichen Rechner mit gespeichertem Programm einen hohen Grad an Datenintegrität, da ein einziges fehlerhaftes Bit zu einer Fehlfunktion des Rechners führt. Ein üblicher Computerspeicher erfordert, daß eine Leseadresse genau bekannt ist, um Information abzurufen, die an einer bestimmten Adresse gespeichert ist. Dies liegt daran, daß ein üblicher Speicher eine Folge von N binären Ziffern (im folgenden ein Wort) an einer bestimmten Stelle im Speicher speichert. Nur ein Wort ist zu einem jeweiligen Zeitpunkt an einer jeweiligen Stelle gespeichert.
  • Bei einigen Anwendungen, die die Speicherung großer Datenmengen umfassen, ist eine gewisse Menge an Fehlern in den Daten, die aus dem Speicher abgerufen werden, akzeptabel, und kann von dem System ignoriert werden. Außerdem kann es in einigen Fällen nötig sein, das Abrufen von Daten mit Hilfe einer ungenauen Leseadresse zuzulassen. Die vorliegende Erfindung betrifft einen Speicher, der für solche Anwendungen geeignet ist.
  • Eine bekannte Speicherstruktur wurde von Kanerva entwickelt, und ist in Kanerva P., „Sparse Distributed Memory", MIT Press, 1988, und auch in Kanerva P., „Self-propagating search: A Unified Theory of Memory", Report Nr. CSLI-84-7, Stanford University 1984 beschrieben. Hier ist eine große Zahl von Adreßdecodierern mit einem Datenspeicher verbunden, der eine Anzahl von Wortleitungen aufweist. Jeder Adreßdecodierer ist mit einer unterschiedlichen Wortleitung in dem Datenspeicher verbunden. Jeder Decodierer ist durch eine Adresse in der Form einer hohen Binärzahl definiert.
  • Wenn Daten in den Speicher geschrieben werden, wird einer Gruppe von Decodierern eine Eingabeadresse präsentiert, und die Decodierer, die eine Kennung innerhalb einer vorbestimmten Hamming-Distanz von der Eingabeadresse aufweisen, werden aktiviert. Die Wortleitungen, die mit den aktivierten Decodierern verbunden sind, werden dann ausgewählt, um Schreibdaten zu empfangen. Wenn Daten aus dem Speicher abgerufen werden sollen, wird den Decodierern eine Adresse präsentiert, und eine Anzahl von Wortleitungen wird erneut aktiviert. Das Summieren jedes Bits jeder aktivierten Wortleitung und das Anwenden eines geeigneten Schwellenwerts erlaubt ein Abrufen der in den Speicher geschriebenen Daten. Ein derartiges Schreiben und Abrufen von Daten ermöglicht es, die Auswirkungen von Adreß- und Datenfehlern zu minimieren.
  • Die Speicherstruktur, die von Kanerva vorgestellt wird, weist eine Reihe von Nachteilen auf. Einer dieser Nachteile ist, daß die Berechnungen der Hamming-Distanz speziell ausgelegte Hardware erfordern, wenn sie effizient durchgeführt werden sollen.
  • Eine alternative Speicherstruktur, die diesen Nachteil zu überwinden sucht, ist in WO 90/04830 (Universities Space Research Association) beschrieben. Dieses System benutzt die von Kanerva vorgeschlagene Grundarchitektur, bestimmt jedoch mit Hilfe eines andersartigen Kriteriums, welche Adreßdecodierer in Reaktion auf eine jeweilige Eingabeadresse aktiviert werden sollen. In diesem System werden einer Untergruppe von q Bits jeder Decodiereradresse bestimmte „0"- und „1"-Werte zugeteilt. Wenn dem System eine Eingabeadresse präsentiert wird, werden die Werte der q Bits der präsentierten Adresse mit denen jedes Adreßdecodierers verglichen. Wenn die präsentierte Adresse an diesen q Bits dieselben Werte aufweist wie ein bestimmter Adreßdecodierer, wird dieser Decodierer aktiviert. Der Oberbegriff von Anspruch 1 basiert auf diesem Dokument.
  • Es ist eine Aufgabe der vorliegenden Erfindung, eine Speicherstruktur als Alternative zu den oben aufgeführten bereitzustellen.
  • Gemäß einem ersten Aspekt der vorliegenden Erfindung ist eine Speicherkonfigurierung zur Benutzung in einem Computersystem bereitgestellt, wobei der Speicher eine Vielzahl von Adreßdecodierern umfaßt, denen jeweils eine Kennung mit einer vorbestimmten Anzahl von Bits zugeteilt ist, wobei jedes Bit einen ersten und einen zweiten auswählbaren Zustand hat, und einen Datenspeicher mit einer Vielzahl von Wortleitungen vorbestimmter Länge, wobei jeder der Adreßdecodierer aktivierbar ist, um eine aus der Vielzahl von Wortleitungen auszuwählen, und die Adreßdecodierer Mittel zum Empfangen einer Eingabeadresse mit einer vorbestimmten Anzahl von Bits, und Mittel zum Vergleichen der Kennung eines Adreßdecodierers mit der Eingabeadresse umfassen, wobei der Speicher ferner Mittel umfaßt, um einen Adreßdecodierer zu aktivieren, wenn mindestens eine vorbestimmte Mindestanzahl von in den ersten auswählbaren Zustand versetzten Bits in der Eingabeadresse mit in den ersten auswählbaren Zustand versetzten Bits in der Decodiererkennung übereinstimmt.
  • Der Nutzen und die Vorteile, die durch die vorliegende Erfindung bereitgestellt werden, ergeben sich teilweise aus der Aktivierung von Adreßdecodierern auf der Basis von Bits, die in einer Eingabeadresse in den ersten auswählbaren Zustand versetzt wurden, während Bits, die in den zweiten auswählbaren Zustand versetzt wurden, ignoriert werden. Im Gegensatz dazu aktivieren die oben beschriebenen Systeme des Stands der Technik Adreßdecodierer, indem sie Bits vergleichen, die in den ersten und zweiten auswählbaren Zustand versetzt wurden.
  • Vorzugsweise berücksichtigen die Mittel zum Vergleichen der Kennung eines Adreßdecodierers mit der Eingabeadresse eine positionsbezogene Übereinstimmung zwischen Bits in der Eingabeadresse, die in den ersten auswählbaren Zustand versetzt wurden, und Bits in den Decodiererkennungen, die in den zweiten auswählbaren Zustand versetzt wurden.
  • Jede Adreßdecodiererkennung kann eine gleiche Anzahl von Bits aufweisen, die in den ersten auswählbaren Zustand versetzt wurden. Die Mittel, um eine Eingabeadresse zu empfangen, können dazu konfiguriert sein, Adressen zu empfangen, die eine vorbestimmte Anzahl von Bits enthalten, die in den ersten auswählbaren Zustand versetzt wurden. Die vorbestimmte Anzahl von Bits in einer Eingabeadresse, die in den ersten auswählbaren Zustand versetzt wurden, ist in geeigneter Weise gleich der Anzahl von Bits in jeder der Adreßdecodiererkennungen, die in den zweiten auswählbaren Zustand versetzt wurden.
  • Vorzugsweise umfaßt der Datenspeicher eine Vielzahl von Einzelbitspeichern, sodaß jedes Bit jeder Wortleitung in einem Einzelbitspeicher gespeichert ist. Der Datenspeicher kann eine Dateneingangsleitung umfassen, die eine gleiche Anzahl von Bits wie jede der Vielzahl von Wortleitungen enthält. Die Speicherkonfigurierung kann außerdem Datenschreibemittel umfassen, um Daten von der Dateneingangsleitung in Wortleitungen zu kopieren, die von den Adreßdecodierern aktiviert wurden. Die Dateneingangsleitung kann dafür konfiguriert sein, Eingabedaten zu empfangen, die eine vorbestimmte Anzahl von Bits enthalten, die in den ersten auswählbaren Zustand versetzt wurden.
  • Die Speicherkonfigurierung kann außerdem Mittel umfassen, um Werte zu summieren, die an jedem Bit von Wortleitungen gespeichert sind, die von einem Adreßdecodierer aktiviert wurden, um einen Aktivierungsgrad-Wert für jedes Bit zu erzeugen. Die Speicherkonfigurierung kann außerdem Mittel umfassen, um ein Ausgabewort zu erzeugen, das die vorbestimmte Anzahl von Bits enthält, die in den ersten auswählbaren Zustand versetzt wurden. Bei den Bits in der Ausgabe, die in den ersten auswählbaren Zustand versetzt wurden, kann es sich um eine vorbestimmte Anzahl von Bits handeln, die den höchsten Aktivierungsgrad aufweisen.
  • Der Speicher kann mit Hilfe einer Vielzahl künstlicher Neuronen implementiert sein, die miteinander verbunden sind, um ein neuronales Netzwerk zu bilden. Die Vielzahl der Adreßdecodierer kann durch eine Vielzahl von Adreßdecodierer-Neuronen dargestellt sein, und der Datenspeicher kann durch eine Vielzahl von Datenneuronen dargestellt sein.
  • Die Erfindung stellt außerdem eine neuronale Netzwerk-Speicherkonfigurierung zur Benutzung in einem Computersystem gemäß Anspruch 15 bereit. Der Speicher umfaßt eine Vielzahl von Adreßdecodierer-Neuronen, von denen jedes mit einer vorbestimmten Anzahl von Eingangsneuronen verbunden ist, und einen Datenspeicher mit einer Vielzahl von Datenneuronen, wobei jedes der Adreßdecodierer-Neuronen aktivierbar ist, um einige aus der Vielzahl von Datenneuronen auszuwählen, und die Adreßdecodierer-Neuronen Mittel zum Empfangen eines Signals umfassen, das ein Feuern eines Eingangsneurons darstellt, mit dem es verbunden ist, wobei ein Adreßdecodierer-Neuron Mittel umfaßt, um Datenneuronen zu aktivieren, wenn von mindestens einer vorbestimmten Mindestanzahl von Eingangsneuronen, mit denen das Adreßdecodierer-Neuron verbunden ist, Feuersignale empfangen werden.
  • In der Praxis kann jedes Adreßdecodierer-Neuron mit jedem Eingangsneuron verbunden sein, wobei jeder dieser Verbindungen eine „1"- oder eine „0"-Gewichtung zugeteilt wird. In einer solchen Implementierung hat eine „0"-Gewichtung dieselbe Auswirkung wie keine Verbindung zwischen einem jeweiligen Eingangsneuron und dem Adreßdecodierer-Neuron. So stellen nur Feuersignale von Eingangsneuronen, die mit einem Adreßdecodierer-Neuron so verbunden sind, daß die Verbindung eine „1"-Gewichtung aufweist, eine Verbindung dar, wie in dem vorangegangenen Abschnitt beschrieben.
  • Gemäß einem zweiten Aspekt der vorliegenden Erfindung ist ein Verfahren zum Betreiben eines Speichers zur Benutzung in einem Computersystem beschrieben, wobei der Speicher eine Vielzahl von Adreßdecodierern umfaßt, denen jeweils eine Kennung mit einer vorbestimmten Anzahl von Bits zugeteilt ist, wobei jedes Bit einen ersten und einen zweiten auswählbaren Zustand aufweist, und einen Datenspeicher mit einer Vielzahl von Wortleitungen vorbestimmter Länge, wobei jeder der Adreßdecodierer aktivierbar ist, um eine aus der Vielzahl von Wortleitungen auszuwählen, wobei eine Eingabeadresse mit einer vorbestimmten Anzahl von Bits in den Adreßdecodierer eingegeben wird, wobei die Kennung eines Adreßdecodierers mit der Eingabeadresse verglichen wird und Adreßdecodierer aktiviert werden, wenn mindestens eine vorbestimmte Mindestanzahl von in den ersten auswählbaren Zustand versetzten Bits in der Eingabeadresse mit in den ersten auswählbaren Zustand versetzten Bits in der Decodiererkennung übereinstimmt.
  • Die Eingabedaten können als eine Dateneingabe des Datenspeichers dargestellt sein, und die Daten können in die Wortleitungen geschrieben werden, die von den aktivierten Adreßdecodierern aktiviert wurden. Die vorbestimmte Mindestanzahl von Bits ist vorzugsweise so eingestellt, daß weniger als 100 Adreßdecodierer von einer jeweiligen gültigen Eingabeadresse aktiviert werden. Die vorbestimmte Mindestanzahl von Bits ist weiterhin vorzugsweise so eingestellt, daß weniger als 50 Adreßdecodierer von einer jeweiligen gültigen Eingabeadresse aktiviert werden. Insbesondere ist die vorbestimmte Mindestanzahl von Bits so eingestellt, daß weniger als 20 Adreßdecodierer und nicht weniger als 11 Adreßdecodierer von einer jeweiligen gültigen Eingabeadresse aktiviert werden.
  • Die Erfindung stellt außerdem ein Trägermedium bereit, das computerlesbare Codemittel trägt, um zu bewirken, daß ein Computer eine Prozedur gemäß dem oben angeführten Verfahren durchführt, und ein Computerprogramm zum Durchführen des oben angeführten Verfahrens.
  • Im folgenden soll eine Ausführungsform der vorliegenden Erfindung beispielhaft unter Bezugnahme auf die begleitenden Figuren beschrieben werden, wobei:
  • 1 eine schematische Darstellung einer Speicherkonfigurierung ist, die aus dem Stand der Technik bekannt ist;
  • 2 eine schematische Darstellung einer Speicherkonfigurierung gemäß der vorliegenden Erfindung ist;
  • 3 eine dreidimensionale Ansicht ist, die Speicherkapazität für eine bestimmte Konfigurierung des Speichers aus 2 zeigt;
  • 4 ein Konturdiagramm der dreidimensionalen Ansicht aus 3 ist;
  • 5 das Konturdiagramm aus 4 ist, das geändert wurde, um unabhängig aktivierte Adreßdecodierer zu berücksichtigen;
  • 6 eine schematische Darstellung eines künstlichen neuronalen Netzwerks ist, das benutzt werden kann, um einen Speicher gemäß der vorliegenden Erfindung zu implementieren;
  • 7 eine schematische Darstellung einer ersten Konfigurierung für Verbindungen zwischen Eingangsneuronen und Adreßdecodierer-Neuronen in einem künstlichen neuronalen Netzwerk ist, das eine allgemeine Form aufweist, die ähnlich ist wie die desjenigen aus 6; und
  • 8 eine schematische Darstellung einer Konfigurierung für Verbindungen zwischen Eingangsneuronen und Adreßdecodierer-Neuronen alternativ zu der in 7 gezeigten ist.
  • Die von Kanerva beschriebene Adreßkonfigurierung, die oben umrissen wurde, ist in 1 dargestellt. Eine Vielzahl von Adreßleitungen 1 ist vorgesehen, auf denen eine Adresse übertragen werden kann. Die Adresse ist eine Binärzahl, und jede Adreßleitung 1 überträgt ein Bit der Adresse derart, daß n Leitungen benötigt werden, um eine Adresse von n Bit darzustellen. Die Adreßleitungen bilden einen Eingang für ein Array aus Adreßdecodierern 2, und jeder Adreßdecodierer 2 weist eine Kennung in Form einer Binärzahl von n Bit auf. Die Adreßdecodierer 2 sind mit einem Datenspeicher 3 verbunden, der eine Anzahl von Wortleitungen zum Speichern von Daten umfaßt. Jede Wortleitung weist eine Speicherkapazität von M Bits auf. Jedes Bit jeder Wortleitung wird in einem Zähler 4 gespeichert. Daten, die in den Datenspeicher geschrieben werden sollen, werden auf einer Dateneingangsleitung 5 übertragen. Daten, die aus dem Speicher abgelesen werden, passieren Datenleitungen 8 bis zu Addierblöcken 6, und werden von den Addierblöcken 6 an Datenausgangsleitungen 7 ausgegeben.
  • Üblicherweise liegt die Anzahl von Adreßleitungen 1 im Bereich von eintausend, sodaß den Adreßdecodierern 2 eine Binärzahl von eintausend Bit präsentiert wird. Da eine sehr hohe Zahl von Adressen durch eine Binärzahl von eintausend Bit dargestellt werden kann (etwa 10301), ist eine separate Wortleitung zum Speichern von Daten für jede mögliche Adresse nicht praktikabel. Entsprechend wird eine große Zufallsstichprobe von Adressen innerhalb des möglichen Adreßraums implementiert. Üblicherweise werden eine Million Adressen implementiert, von denen jede einem Adreßdecodierer 2 zugeteilt wird. Aus diesem Grund wird der von Kanerva vorgestellte Speicher als zerstreut beschrieben, da die eine Million (106) Decodiereradressen zerstreut in dem verfügbaren Adreßraum (10301 Adressen) verteilt sind.
  • Bei der Benutzung wird eine Adresse auf der Adreßleitung 1 übertragen, und wird von den Adreßdecodierern 2 empfangen. Es findet ein Vergleich zwischen der übertragenen Adresse und der Adresse jedes Adreßdecodierers statt. Dieser Vergleich wird mit Hilfe der Berechnung einer Hamming-Distanz durchgeführt, die berechnet, wie viele Bits der übertragenen Adresse sich von den Adressen unterscheiden, die jedem Adreßdecodierer 2 zugeordnet sind. Die Berechnung der Hamming-Distanz ist in Gleichung (1) dargestellt:
    Figure 00050001
    wobei:
  • x
    ein Binärvektor mit N Elementen ist,
    y
    ein Binärvektor mit N Elementen ist; und
    H
    die Hamming-Distanz zwischen x und y ist, welche die Anzahl von Bitpositionen ist, an denen x1 ≠ yi.
  • Decodierer mit einer vorbestimmten Hamming-Distanz r der übertragenen Adresse x werden aktiviert. Dieser Aktivierungsbereich für jede Adresse kann als eine Kugel betrachtet werden, deren Mitte x ist, und die einen Radius r aufweist. Beispielsweise hat Kanerva gezeigt, daß, wenn jede Adresse 1000 Bits aufweist, und die vorbestimmte Hamming-Distanz r 451 beträgt, der kugelförmige Bereich etwa 1/1000 der Adressen enthält, die den Adreßdecodierern zugeordnet sind. Bei der Benutzung berechnet ein Prozessor eine Hamming-Distanz zwischen jeder Decodiereradresse und einer präsentierten Eingabeadresse. Wenn die Distanz für einen jeweiligen Adreßdecodierer weniger als r beträgt, wird dieser Decodierer aktiviert.
  • Im folgenden sollen Details eines Verfahrens zum Schreiben von Daten in einen Speicher in dem von Kanerva vorgestellten System beschrieben werden. Wenn ein bestimmter Adreßdecodierer 2 aktiviert wird, werden Daten, die an dem Dateneingang 5 des Speichers präsentiert werden, in die Wortleitung geschrieben, die mit dem aktivierten Adreßdecodierer verbunden ist. Da die Aktivierung eines Adreßdecodierers immer dann eingeleitet wird, wenn eine Adresse auftritt, die innerhalb der vorbestimmten Hamming-Distanz von dem Adreßdecodierer liegt, werden die Daten in eine Anzahl verschiedener Wortleitungen geschrieben. Ebenso gibt es eine Anzahl verschiedener Adressen, die denselben Adreßdecodierer aktivieren. Das bedeutet, daß Daten für eine Anzahl unterschiedlicher Schreibeingabe-Adressen in eine jeweilige Wortleitung geschrieben werden.
  • Jede Wortleitung umfaßt M Zähler, von denen jeder ein einzelnes Datenbit speichert. Die Zähler an einer jeweiligen Wortleitung erlauben die lineare Akkumulierung einer Anzahl von Worten mit M Bits, die in der Wortleitung gespeichert sind. Wenn eine „1" an einem jeweiligen Bit einer Wortleitung präsentiert wird, wird der zugeordnete Zähler 4 erhöht. Wenn eine „0" an einem jeweiligen Bit präsentiert wird, wird der Zähler 4, der diesem Bit zugeordnet ist, herabgesetzt.
  • Es ist zu beachten, daß die Zähler eine endliche Kapazität aufweisen, und daß, sobald diese Kapazität durch aufeinanderfolgende Datenschreibvorgänge erreicht wurde, ein weiteres Schreiben von Daten keine Auswirkungen hat. Wenn beispielsweise der Zähler seinen Maximalwert durch wiederholtes Schreiben von „1" erreicht hat, kann das Schreiben einer weiteren „1" keine Auswirkung haben. Ebenso kann, wenn der Zähler durch wiederholtes Schreiben von „0" erreicht hat, das Schreiben einer weiteren „0" in diesen Zähler keine Auswirkung haben. Es ist normalerweise ausreichend, 8-Bit-Zähler zu benutzen, wobei jeder eine Spanne von ±127 aufweist. In der Praxis kann es ausreichend sein, 2-Bit- oder 4-Bit-Zähler zu implementieren. Es ist jedoch zu beachten, daß Aufwärts-Abwärts-Zähler jeder Bitlänge in dem von Kanerva vorgestellten Speicher einen beachtlichen Overhead darstellen.
  • Die Adreßdecodierer 2 sind so konfiguriert, daß für eine Million Adreßdecodierer 2 eine zufällige Adresse innerhalb der vorbestimmten Hamming-Distanz von etwa 1000 der Decodierer liegt. Für eine zufällige Eingabeadresse werden also in 1000 Wortleitungen in dem Datenspeicher 3 Eingabedaten geschrieben, wobei die geeigneten Zähler 4 jeder Wortleitung erhöht oder herabgesetzt werden, wie oben beschrieben.
  • Im folgenden sollen Details eines Verfahrens zum Abrufen von Daten aus einem Speicher in dem von Kanerva vorgestellten System beschrieben werden.
  • Daten werden von dem Speicher abgerufen, indem eine Eingabeadresse an den Adreßleitungen 1 bereitgestellt wird. Wenn diese Eingabeadresse identisch ist zu der, die zum Schreiben der Daten verwendet wurde, die abgerufen werden sollen, werden dieselben Adreßdecodierer aktiviert, und Daten werden aus den richtigen Wortleitungen abgerufen.
  • Wenn eine Adresse präsentiert wird, die der Adresse nah ist, welche zum Schreiben benutzt wurde, werden viele Adreßdecodierer 2, die aktiviert wurden, um die Daten zu schreiben, aktiviert, um die Daten zu lesen. Es ist jedoch zu beachten, daß einige Decodierer, die zum Schreiben aktiviert wurden, nicht aktiviert werden, und andere, die zuvor nicht aktiviert wurden, nun aktiviert werden. Dies führt dazu, daß in den abgerufenen Daten ein Rauschen vorhanden ist. Geht man davon aus, daß den Lese- und Schreibprozeduren eine ausreichende Zahl von Decodierern gemeinsam ist, werden von den Addierern 6 trotzdem die richtigen Daten ausgegeben, und die Auswirkungen des Rauschens werden abgeschwächt. Dies ist ein vorteilhaftes Merkmal des von Kanerva vorgestellten Speichers.
  • Die Werte, die in den Zählern 4 jeder Wortleitung gehalten werden, die mit einem aktivierten Adreßdecodierer verbunden sind, werden während eines Lesezyklus an Datenleitungen 8 ausgegeben. Die Werte, die an jeder Datenleitung 8 ausgegeben werden, werden von einem Addierer 6 addiert. Die Addierer, deren Ausgabe einen bestimmten Schwellewert überschreitet, erzeugen eine Ausgabe „1" an den Datenleitungen 7, und diejenigen, die den Schwellenwert nicht überschreiten, erzeugen eine Ausgabe „0".
  • Kanerva hat bestimmt, daß die Struktur und Funktion des Speichers bedeutet, daß von den eintausend Bits in einer Eingabeadresse nur sechshundert Bits in einer Leseadresse richtig sein müssen, um ein erfolgreiches Abrufen von derselben Eingabeadresse zu ermöglichen. Wenn ein Bit beispielsweise während des Schreibens der Daten in eintausend der Wortleitungen auf „1" gesetzt wird, wäre zu erwarten, daß der Addierer 6, der mit den Zählern verbunden ist, die Werte für das Bit enthalten, 1000 ausgeben sollte. Wenn allerdings nur eine Mehrheit der eintausend Wortleitungen, in die Daten geschrieben wurden, von einer Abrufadresse abgerufen wird, gibt der Addierer im allgemeinen einen Wert aus, der richtig interpretiert wird. Auf diese Weise weist der von Kanerva vorgestellte Speicher nützliche Fehlerkorrektureigenschaften auf, und erlaubt eine Abschwächung der Auswirkungen des oben beschriebenen Rauschens.
  • Ein N-von-M-Code ist ein Code, bei dem N Bits von einer Binärzahl mit M Bits auf „1" gesetzt sind. Jeder N-von-M-Code umfaßt deshalb N Bits, die auf „1" gesetzt sind, und M-N Bits, die auf „0" gesetzt sind. Jeder Wert, der von dem Code dargestellt wird, unterscheidet sich durch den Umfang, in dem „1" und „0" erscheinen. N-von-M-Codes sind selbsttaktend, indem dann, wenn N „1"en empfangen wurden, bekannt ist, daß der Code vollständig ist (d.h. ein Wert empfangen wurde), aber dann, wenn weniger als N „1"en empfangen wurden, bekannt ist, daß der Code unvollständig ist.
  • Die Speicherkonfigurierung der vorliegenden Erfindung verwendet die Eigenschaften der zerstreuten Verteilung des Speichers des Stands der Technik aus 1, und führt mehrere Anwendungen der N-von-M-Codierung ein, um den Speicher mit einer Reihe von Verbesserungen auszustatten, die im folgenden genauer erläutert werden sollen. Eine Speicherkonfigurierung, welche die vorliegende Erfindung verkörpert, ist auf höherer Ebene in 2 dargestellt. Es ist zu sehen, daß die allgemeine Konfigurierung ähnlich ist wie die aus 1, und es werden, wo zutreffend, die gleichen Bezugszeichen benutzt. Nur Unterschiede zwischen dem Speicher aus 1 und dem durch die Erfindung bereitgestellten sollen im folgenden genauer erörtert werden.
  • Im allgemeinen umfaßt der Speicher W Adreßdecodierer 2, von denen w für einen bestimmte Lese- oder Schreibvorgang aktiviert sind. Jeder der W Adreßdecodierer umfaßt eine Adresse von A Bits, und jede dieser Adressen umfaßt a Bits mit einem Wert „1". So ist die Adresse jedes Adreßdecodierers ein a-von-A-Code. Wenn die Adresse in die Adreßdecodierer 2 eingegeben wird, weist sie i Bits auf, die auf einen „1"-Wert gesetzt sind, und A-i Bits, die auf einen „0"-Wert gesetzt sind. So ist jede Eingabeadresse ein i-von-A-Code. In einigen Implementierungen ist es der Fall, daß alle Eingabeadressen eine Anzahl von „1"-Bits aufweisen, die derjenigen der Adressen der Decodierer entspricht (i = a). Allerdings ist es normalerweise marginal vorteilhaft, i unabhängig von a sein zu lassen.
  • Wenn eine Eingabeadresse von den Adreßdecodierern 2 empfangen wird, wird ein Vergleich zwischen dem a-von-A-Code jedes Decodierers und dem i-von-A-Code der Eingabeadresse durchgeführt. Jeder Adreßdecodierer weist einen zugeordneten Schwellenwert T auf. Der Schwellenwert T bestimmt die Anzahl von „1"en, die zwischen der Eingabeadresse und der Adresse des Decodierers übereinstimmen müssen.
  • Es sollen nun vereinfachte Beispiele der Decodierer-Aktivierungsprozedur vorgestellt werden. In diesen Beispielen wird angenommen, daß drei Adreßdecodierer (A, B und C) vorliegen, die jeweils einen 3-von-8-Code aufweisen. Die Adressen dieser Decodierer lauten wie folgt:
    A: 01001001
    B: 10001010
    C: 01101000
  • In der folgenden Beschreibung ist jede der Adressen von links nach rechts indiziert, beginnend mit einem Index 0.
  • In einem ersten Szenario ist der Schwellenwert für jeden Decodierer derart, daß wenigstens zwei Bits einer Eingabeadresse mit zwei Bits der Decodiereradresse übereinstimmen müssen. Also bei einer Präsentation von:
    Adresse1: 01001000 (ein 2-von-8-Code)
    ist erkennbar, daß die Decodierer A und C aktiviert sind, da die Bits 1 und 4 der Eingabeadresse „1"en sind, und die Bits 1 und 4 der Adressen der Decodierer A und C ebenfalls „1"en sind. So wird der Schwellenwert von zwei übereinstimmenden Bits erreicht. Decodierer B wird nicht aktiviert, da nur eine der „1"en zwischen Adresse1 und Decodierer B übereinstimmt (Bit 4).
  • Bei einer Präsentation von:
    Adresse2: 01000011 (ein 3-von-8-Code)
    und unter der Annahme, daß der Schwellenwert T unverändert bleibt, ist erkennbar, daß Adresse2 „1"en in Bits 1 und 7 aufweist, und Decodierer A „1"en an denselben Positionen aufweist, was bedeutet, daß der Decodierer A aktiviert wird. Die Decodierer B und C werden noch nicht aktiviert, da nur ein „1"-Bit jeder Decodiereradresse mit einer „1" in Adresse2 übereinstimmt.
  • Die oben beschriebene Aktivierungsprozedur aktiviert w Decodierer von einer Gesamtzahl W. So ist das Aktivierungsmuster ein w-von-W-Code. Dies ist ähnlich wie der Prozeß, der oben unter Bezugnahme auf 1 beschrieben wurde, obwohl beachtet werden muß, daß der Schwellenwert T vorzugsweise so eingestellt ist, daß sicherstellt wird, daß ein Optimum oder ein annäherndes Optimum einer Anzahl von Adreßdecodierern während eines jeweiligen Lese- oder Schreibzyklus feuert. Es wurde festgestellt, daß diese Optimalzahl üblicherweise weit geringer ist als die Anzahl, die in dem Speicher aktiviert wird, der von Kanerva vorgestellt wurde. Der Erfinder hat herausgefunden, daß Daten mit ausreichender Genauigkeit unter Verwendung einer geringeren Zahl von Decodiereraktivierungen aus dem Speicher abgelesen oder in diesen geschrieben werden können, und daß das Aktivieren von eintausend Decodierern, wie im System von Kanerva, unnötig ist. Eine genauere Analyse dieses Kennzeichens des Speichersystems ist im folgenden gegeben.
  • Die w aktivierten Decodierer wiederum wählen w Wortleitungen aus, an denen Daten gelesen oder geschrieben werden sollen. Auf diese Weise ist die Kommunikation zwischen den Adreßdecodierern 2 und den Wortleitungen des Datenspeichers 3 ein w-von-W-Code (d.h. w aktivierte Decodierer von W Decodierern insgesamt). Man wird verstehen, daß es normalerweise nicht praktikabel ist, sicherzustellen, daß w konstant ist, angesichts der Aktivierungsprozedur, die unabhängig aktivierte Adreßdecodierer umfaßt, wie oben beschrieben. Die Übermittlung dieses w-von-W-Codes von den Adreßdecodierern 2 an den Datenspeicher 3 ist in 2 durch einen Pfeil 9 gezeigt.
  • Die w aktivierten Decodierer wählen w Wortleitungen aus. Schreibdaten werden präsentiert, um Daten in den Datenspeicher 3 zu schreiben, und Lesedaten werden aus dem Datenspeicher 3 abgelesen. Das Lesen oder Schreiben wird an jeder der w aktivierten Wortleitungen ausgeführt. Die Eingabedaten 5 sollen einen d-von-D-Code darstellen, wobei jede Wortleitung D Bits aufweist, von denen d auf „1" gesetzt sind. Wenn jede Eingabe ein d-von-D-Code ist, schreibt jeder Datenschreibvorgang Daten ein, die d „1"en enthalten.
  • Jedes Bit von jeder Wortleitung ist in einem üblichen binären Einzelbitspeicher gespeichert. Alle Bits aller Wortleitungen werden anfänglich auf „0" gesetzt. Wenn eine „1" in ein Bit geschrieben werden soll, wird der „0"-Wert durch eine „1" ersetzt. Sobald ein Bit auf „1" gesetzt ist, wird es niemals auf „0" zurückgesetzt, auch wenn ein späterer Schreibzyklus versucht, eine „0" in das Bit zu schreiben. Das heißt, sobald ein Datenschreibvorgang einen Wert eingestellt hat, ist eine weitere Erhöhung dieses Werts nichts als Rauschen, und kann deshalb verworfen werden. Diese Speicherprozedur basiert auf der unipolaren Natur von N-von-M-Codes, und die Gründe für ihre Zuverlässigkeit werden im folgenden erläutert.
  • Wenn Daten aus dem Datenspeicher 3 gelesen werden sollen, wird den Adreßdecodierern 2 eine Adresse präsentiert, die dazu führt, daß w Adreßdecodierer aktiviert werden. Diese w Adreßdecodierer wiederum aktivieren w Wortleitungen in dem Datenspeicher 3. Jedes Wort enthält D Bits, und der Inhalt jedes Bit jeder aktivierten Wortleitung wird summiert, um D Ausgaben zu ergeben. Diese Summen werden im folgenden als Aktivierungsgrade bezeichnet. Es ist bekannt, daß alle Schreibedaten ein d-von-D-Code sind, weshalb zutreffen sollte, daß die Daten, die aus dem Speicher abgelesen werden, ebenfalls ein d-von-D-Code sind.
  • Wenn ein einzelner Schreibzyklus einen Wert an eine bestimmte Adresse schreibt, und diese Adresse für einen Datenlesevorgang präsentiert wird (ohne die Intervention eines weiteren Schreibzyklus), ist zu erwarten, daß der Aktivierungsgrad jedes auf „1" gesetzten Bits in den Schreibedaten w sein wird, während der Aktivierungsgrad jedes Bits, das auf „0" gesetzt ist, null sein wird. Auf diese Weise ist leicht erkennbar, welche Bits in den Ausgabedaten auf „1" gesetzt werden sollten.
  • Wenn allerdings zwei Schreibzyklen Daten an unterschiedliche Eingabeadressen schreiben, kann es sein, daß einige der Adreßdecodierer, die während des ersten Schreibzyklus aktiviert werden, auch während des zweiten Schreibzyklus aktiviert werden. Das heißt, einige Wortleitungen in dem Datenspeicher 3 enthalten einige Bits, die durch den ersten Schreibzyklus auf „1" gesetzt sind, und einige Bits, die durch den zweiten Schreibzyklus auf „1" gesetzt sind.
  • Wenn eine Adresse, die gleich der ersten Schreibadresse ist, den Adreßdecodierern 2 präsentiert wird, aktiviert die Datenleseprozedur w Wortleitungen, und berechnet Aktivierungsgrade wie oben beschrieben. Aufgrund der Aktion des intervenierenden Schreibzyklus enthalten diese Aktivierungsgrade einige Werte, die von dem zweiten Schreibzyklus stammen, das heißt, einige Bits, die in dem ersten Schreibzyklus auf „0" gesetzt wurden, weisen jetzt einen Nichtnull-Aktivierungsgrad auf, obwohl diese Aktivierungsgrade weniger sein sollten als die der Bits, die während des ersten Schreibzyklus auf „1" gesetzt wurden. Das heißt, mehr als d Bits weisen Nichtnull-Aktivierungsgrade auf.
  • Da bekannt ist, daß die Ausgabedaten ein d-von-D-Code sein sollten, wird ein modifizierter Winner-takes-all-(Alles für den Sieger – WTA)-Algorithmus angewandt, um die d Bits zu bestimmen, die den höchsten Aktivierungsgrad aufweisen. Diese d Bits sind diejenigen, die höchstwahrscheinlich während des Schreibens von Daten an diese Adresse auf „1" gesetzt wurde, und werden deshalb in den Ausgabedaten auf „1" gesetzt.
  • Ein WTA-Algorithmus bestimmt normalerweise einen einzigen Sieger aus einer Ansammlung von Daten. In diesem Fall bestimmt der modifizierte Algorithmus (im folgenden als ein k-WTA-Algorithmus bezeichnet) d Werte, die den höchsten Aktivierungsgrad aufweisen, und die Bits, die diese Werte aufweisen, werden in der Ausgabe auf „1" gesetzt. Das heißt, diese d Bits sind die „Sieger" in dem Algorithmus. Ein k-WTA-Algorithmus kann implementiert werden, indem die D Werte mit Hilfe eines geeigneten Sortierungsalgorithmus sortiert werden, und indem die d höchsten Werte aus diesen sortierten Werten ausgewählt werden.
  • Es muß beachtet werden, daß die Anwendung einer N-von-M-Codierung auf den Datenspeicher den Einsatz dieser Form von Leseprozeß erlaubt, da bekannt ist, wie viele „1"en in den Ausgabedaten erscheinen sollten. In dem von Kanerva vorgestellten System, bei dem die in den Speicher geschriebenen Daten binär sind, kann nicht ermittelt werden, wie viele „1"en in den Ausgabedaten erscheinen sollten, weshalb Kanerva Zähler als Speicherelemente benutzt, um die in jedes Bit geschriebenen Daten zu akkumulieren, wobei der Inhalt der Zähler summiert wird, und ein Schwellenwert angewandt wird, um eine Ausgabe zu erzeugen.
  • Es wurde oben erwähnt, daß ein Einzelbitspeicher niemals über „1" hinaus erhöht wird. Dies liegt daran, daß der Wert an einem jeweiligen Bit nur entweder „1" oder „0" sein kann. Deshalb muß eine Erhöhung über „1" hinaus bedeuten, daß an diesem Bit Rauschen gespeichert ist, das unerwünscht ist. Das Rauschen wird von zwei Schreibadressen erzeugt, die eine gemeinsame Wortleitung aktivieren. Im vorliegenden Fall kann der k-WTA-Algorithmus richtig ermitteln, welche Bits auf „1" gesetzt werden sollen, ohne daß Zähler benötigt werden, die über „1" hinaus erhöht werden können. Kanervas Implementierung von Aufwärts-Abwärts-Zählern sowie ein Nullschwellenwert sind nicht länger nötig, um zu bestimmen, ob ein jeweiliges Ausgabebit auf „0" oder „1" zu setzen ist. So stellt die vorliegende Erfindung einen Speicher bereit, in dem Daten in üblichen Einzelbitspeichern gespeichert werden, und nicht in Zählern. Dies führt zu einer hohen Einsparung an Implementierungskosten. Außerdem haben jüngere Entwicklungen zu großen Mengen geeigneten Speichers (RAM) geführt, der billig und effizient verfügbar ist.
  • Ein üblicher Meßwert der Effektivität eines Speichers ist seine Speicherkapazität, in Bezug auf die Anzahl von Informationsbits, die in nutzbarer Weise für jedes Bit des Speichers gespeichert werden können. Mit Hilfe dieses Meßwerts bietet ein System, das die vorliegende Erfindung verkörpert, beachtliche Vorteile gegenüber dem von Kanerva vorgestellten. Der Hauptgrund für diese größere Speicherkapazität ergibt sich daraus, daß Daten in eine geringere Anzahl von Wortleitungen geschrieben werden. Der Erfinder hat festgestellt, daß, während Kanerva Daten in einige 1000 Wortleitungen geschrieben hat, Daten typischerweise in eine weit geringere Anzahl von Wortleitungen geschrieben werden können, wobei die Vorteile des Speichers von Kanerva beibehalten werden, und eine größere Speichereffizienz erzielt wird. Beispielsweise wird es für Speichereigenschaften, wie sie unten beschrieben sind, bevorzugt, daß Daten in weniger als 1000 Wortleitungen geschrieben werden, und insbesondere, daß Daten in weniger als 50 Wortleitungen geschrieben werden, wobei es jedoch operativ am vorteilhaftesten ist, wenn Daten in 11 bis 20 Wortleitungen geschrieben werden. Eine Analyse der Speicherkapazität, zusammen mit Gleichungen, um die optimale Anzahl von Wortleitungen zu bestimmen, in die Daten geschrieben werden sollten w, soll im folgenden vorgestellt werden.
  • Der Datenspeicher 3 ist eine Form von Korrelationsmatrix-Speicher. Korrelationsmatrix-Speicher wurden beispielsweise in Kohonen, T. „Correlation Matrix Memories", IEEE Transactions Computers C-21(4) April 1972, Seiten 353–359, und Turner, M. und Austin, J. „Matching Performance of Binary Correlation Matrix Memories", Neural Networks 10(9), 1997, Seiten 1637–1648, gründlich untersucht. Ein Überblick über diese Analyse soll hier als eine Basis für die Herleitung von w vorgestellt werden.
  • Es wird davon ausgegangen, daß Adreß- und Dateneingaben gleichmäßig über ihre jeweiligen Räume verteilt sind. Der Datenspeicher 3 enthält anfangs an jedem Bit „0". Es wird der Meßwert der Belegung h benutzt, wobei h die Wahrscheinlichkeit darstellt, daß ein beliebiges Bit in dem Datenspeicher zu einem Zeitpunkt des Schreibprozesses auf „1" gesetzt ist. Nach Z Schreibvorgängen wird die erwartete Belegung durch Gleichung (2) wiedergegeben:
    Figure 00110001
  • Der Ausdruck
    Figure 00110002
    von Gleichung (2) liefert die Wahrscheinlichkeit, daß ein jeweiliges Bit in dem Datenspeicher während eines einzelnen Schreibvorgangs auf „1" gesetzt wird. Durch Subtrahieren dieses Ausdrucks von 1 ergibt sich ein Wert für die Wahrscheinlichkeit, daß das Bit während eines jeweiligen Vorgangs nicht auf „1" gesetzt wird. Diese Subtraktion wird dann mit Z potenziert, um die Auswirkung von Z Schreibvorgängen darzustellen. Auf diese Weise liefert der Ausdruck
    Figure 00110003
    eine Wahrscheinlichkeit, daß das beliebige Bit nach Z Schreibvorgängen nicht auf „1" gesetzt wird. Um also h herzuleiten, die Wahrscheinlichkeit, daß ein beliebiges Bit nach Z Schreibvorgängen auf „1" gesetzt wird, wird dieser Ausdruck von 1 subtrahiert, woraus sich Gleichung (2) ergibt.
  • Aus Gleichung (2) geht hervor, daß h zunächst 0 ist, da Z zunächst 0 ist, und die rechte Seite der Gleichung vereinfacht sich zu 1 – 1. h erhöht sich monoton auf 1, indem mehr Daten in dem Speicher gespeichert werden.
  • Gleichung (2) kann unter Benutzung von Logarithmen umgeschrieben werden, um folgendes zu erhalten:
    Figure 00110004
  • Der Ausdruck
    Figure 00110005
    ist klein, da d typischerweise wesentlich kleiner als D ist, und w typischerweise wesentlich kleiner als W ist. Deshalb kann der natürliche Logarithmus auf der rechten Seite der Gleichung an den ersten Ausdruck der Taylor-Serie angenähert werden. Dies ergibt einen Ausdruck für die Anzahl gespeicherter Dateneinheiten, wie in Gleichung (4) gezeigt.
  • Figure 00120001
  • Die gesamte Information, die nach Z Schreibvorgängen in dem Speicher gespeichert ist, kann identifiziert werden, indem die Anzahl von Symbolen berücksichtigt wird, die durch einen d-von-D-Code darstellbar ist. Dieser Informationsinhalt ergibt sich aus Gleichung (5). I(Z) = Z·log[CdD ]Bits (5)
  • Wir können die Speichereffizienz durch Vergleichen der Informationskapazität, die sich aus Gleichung (5) ergibt, mit der Anzahl der binären Speicherstellen in dem Datenspeicher berechnen, um den Ausdruck von Gleichung (6) zu erhalten.
    Figure 00120002
    wobei η(Z) die Speichereffizienz des Speichers ist.
  • Für einen hohen Wert von D kann eine Annäherung an den kombinatorischen Ausdruck von Gleichung (6) erreicht werden durch:
    Figure 00120003
  • Für einen zerstreuten Speicher, wobei d wesentlich niedriger ist als D, ergibt ein Substituieren der Gleichungen (7) und (4) in Gleichung (6) nach Vereinfachung:
    Figure 00120004
    wobei η(Z) die Speichereffizienz des Speichers ist.
  • Dies zeigt, daß der effizienteste Speicher für eine jeweilige Belegung h und unter Nullfehler-Bedingungen ein Speicher ist, in dem Daten als ein 1-von-D-Code geschrieben werden (auch als „1-Hot"-Code bekannt), und wobei die kleinste Anzahl von Adreßdecodierern für eine jeweilige Eingabeadresse feuert. Das heißt, d = 1 und w = 1. Ein Einstellen von d und w gemäß diesen Kriterien beeinträchtigt allerdings die Robustheit des Speichers bei hoher Kapazität oder Eingabefehlern, wie im folgenden beschrieben.
  • Um die Robustheit des Datenspeichers zu berücksichtigen, wird das Abrufen eines einzelnen Datenworts nach dem Schreiben von Z Datenworten berücksichtigt, wobei die Abrufadresse ohne Fehler präsentiert wird. Die w Adreßdecodierer, die von der Leseadresse aktiviert werden, sind dieselben w Adreßdecodierer, die während des Datenschreibprozesses aktiviert wurden. Wenn Daten, die in ein jeweiliges Bit geschrieben wurden, „1" sind, sollte jede der w Wortleitungen an diesem Bit eine „1" speichern, um einen Aktivierungsgrad gemäß Gleichung (9) zu liefern. E(X1) = w (9)wobei E(X) der Aktivierungsgrad ist.
  • Wenn allerdings der in ein jeweiliges Bit geschriebene Datenwert eine „0" war, ist der erwartete Aktivierungsgrad: E(X0) = w·h (10)wobei h wie oben definiert ist.
  • Da h weniger als 1 ist, ist zu erwarten, daß der Speicher die eingeschriebenen Daten wiederherstellen kann, da die auf „1" gesetzten Bits einen höheren Aktivierungsgrad aufweisen als die auf „0" gesetzten, wie aus den Gleichungen (9) und (10) hervorgeht. Allerdings unterliegt der Aktivierungsgrad für ein auf „0" gesetztes Bit statistischen Schwankungen, und mit einer (geringen) Wahrscheinlichkeit wurden alle Gewichtungen durch andere Datenschreibvorgänge auf „1" gesetzt. In diesem Fall ist der Aktivierungsgrad einer Ausgabe, die eine „0" sein sollte, derselbe wie der einer Ausgabe, die eine „1" sein sollte. Dies ergibt die Möglichkeit eines Fehlerzustands „falsche 1". Bei der Abwesenheit von Schreibfehlern ist erkennbar, daß keine Möglichkeit für „falsche 0"-Fehler vorliegt.
  • Ein „falsche 1"-Fehler tritt nur auf, wenn jedes Bit, das zu einer „0"-Ausgabe beiträgt, falsch auf „1" gesetzt ist. Die Wahrscheinlichkeit, daß ein „0"-Bit richtig gelesen wird, ergibt sich deshalb aus Gleichung (11). p(x0 < w) = [1 – hw] (11)
  • Das heißt, hw liefert einen Wert für die Wahrscheinlichkeit, daß die w Bits, die zu dem Aktivierungsgrad beitragen, falsch auf „1" gesetzt wurden. Ein Subtrahieren dieses Werts von 1 ergibt also die Wahrscheinlichkeit, daß ein „0"-Wert richtig gelesen wird, das heißt, die Wahrscheinlichkeit, daß die w Bits nicht alle falsch auf „1" gesetzt wurden.
  • Ein Datenwort wird dann richtig gelesen, wenn jedes seiner D – d Bits, die auf „0" gesetzt sind, richtig gelesen werden. Die Wahrscheinlichkeit, daß ein Wort richtig gelesen wird, wird durch Gleichung (12) geliefert: p(Datenwort richtig) = [1 – hw]D-d (12)
  • Das heißt, der Ausdruck von Gleichung (11), potenziert mit D-d, vorausgesetzt, daß D-d Bits in ihrer Gesamtheit abgerufen werden sollen.
  • Wenn Z Datenwörter in den Speicher geschrieben wurden, ergibt sich die Wahrscheinlichkeit, daß jedes gespeicherte Datenwort richtig gelesen werden kann, aus Gleichung (13): Pc = [1 – hw]Z(D-d) (13)
  • Während sich h erhöht, nimmt die Wahrscheinlichkeit einer fehlerfreien Wiederherstellung gegen null ab.
  • Ein Umschreiben von Gleichung (13) mit Logarithmen ergibt: ln(Pc) = Z·(D – d)·ln(1 – hw) (14)
  • Da hw sehr klein ist, wobei w wesentlich höher als 1 ist, liefert der erste Ausdruck eine starke Annäherung für den Logarithmus auf der rechten Seite von Gleichung (14), um zu ergeben: ln(Pc) = –Z·(D – d)·hw (15)
  • Um den Datenspeicher optimal zu konfigurieren, ist vorgesehen, daß die Anzahl der Adreßdecodierer W und die Wortlänge D festgelegt sind.
  • Es ist auch vorgesehen, daß die Datencodierung (d-von-D) festgelegt ist. Um die Wahrscheinlichkeit einer richtigen Datenwiederherstellung zu maximieren, geht aus Gleichung (13) hervor, daß hw oder äquivalent (w ln h) minimiert werden sollte. Wir suchen also eine Lösung, wobei:
    Figure 00140001
  • Unter Verweis auf Gleichung (4):
    Figure 00140002
    die umgeschrieben werden kann als:
    Figure 00140003
  • Eine Differenzierung von Gleichung (17) in Bezug auf w, und ein Ersetzen des Werts von Z, der aus Gleichung (17) hervorgeht er eben:
    Figure 00140004
  • Das Substituieren des Werts von
    Figure 00140005
    aus Gleichung (18) in Gleichung (16) ergibt für h die folgende Formel:
    Figure 00140006
  • Dies wird vereinfacht, um zu ergeben:
    Figure 00140007
    wobei beide Seiten der Gleichung (20) mit h multipliziert werden: h ln h· –(1 - h)·ln(1 - h)= 0 (21)
  • Gleichung (21) hat die Lösung h = 0,5.
  • Zuvor wurde gezeigt, daß der maximale Informationsgehalt eines Korrelationsmatrix-Speichers eintritt, wenn h = 0,5 (siehe Nadal, J-P., und Toulouse, Gl, „Information Storage in Sparsely Coded Memory Nets" Network 1 (1990), Seiten 61 bis 74). Die oben präsentierte Optimierung von h befaßte sich nicht damit, wieviel Information der Speicher halten kann, sondern wieviel zuverlässig wiederhergestellt werden kann. Der maximale wiederherstellbare Inhalt stimmt deshalb mit dem maximalen Inhalt überein.
  • Die Substituierung eines Werts von Z aus Gleichung (4) in Gleichung (15) ergibt:
    Figure 00140008
  • Unter Benutzung des Optimalwerts von h, der oben hergeleitet wurde, das heißt h = 0,5, und vorausgesetzt, daß W, d und D bekannt sind, und unter Benutzung einer akzeptablen Wahrscheinlichkeit für eine fehlerfreie Wiederherstellung Pc, kann ein Wert für w berechnet werden.
  • Allerdings ist unter einigen Umständen eine vollkommen fehlerfreie Wiederherstellung (von der bislang ausgegangen wurde) angesichts der Natur des Speichers eine zu restriktive Anforderung. Eine alternative Definition für die Informationskapazität des Speichers ist es, die maximale Anzahl von Datenelementen aufzustellen, die ohne Fehler wiederhergestellt werden kann, und zuzulassen, daß einige andere Elemente mit Fehler wiederhergestellt werden könnten.
  • Unter Verweis auf Gleichung (12): p(Datenwort richtig) = [1 – hw]D-d (12) ist es möglich, einen Ausdruck für die Anzahl von Datenelementen herzuleiten, die genau wiederhergestellt werden kann, während andere mit Fehlern Ec wiederhergestellt werden. Dieser Ausdruck ist in Gleichung (23) gegeben: Ec = Z·[1 – hw]D-d (23)wobei Z die Anzahl der Wörter ist, die in dem Speicher enthalten sind.
  • Für einen jeweiligen Wert von Z wird w variiert, um Ec zu maximieren, wobei dieses Maximum bei h = 0,5 auftritt.
  • Wenn Daten in den Speicher geschrieben werden, bis jeder neue Eintrag einen oder mehrere weitere Lesefehler verursacht, ist die maximale nutzbare Kapazität des Speichers erreicht. Der Punkt ist erreicht, wenn:
  • Figure 00150001
  • Wird Gleichung (23) umgeschrieben als: lnEc = (D – d)lnZ·[1 – hw] (25)ergibt die Differenzierung von Gleichung (25):
    Figure 00150002
  • Wird Gleichung (4) umgeschrieben als:
    Figure 00150003
    geht aus Gleichung (27) hervor, daß für ein konstantes h, wZ konstant ist (vorausgesetzt, daß W, D und d festgelegt sind). Also:
    Figure 00150004
  • Eine Substituierung von Gleichung (28) in Gleichung (26) ergibt:
    Figure 00150005
  • Gleichung (29) bietet einen alternativen Wert für ein optimales w, wenn es Ziel ist, so viele Wörter wie möglich richtig abzurufen, während einige Wörter mit Fehlern abgerufen werden. Der Wert von w, der durch Gleichung (29) erzielt werden kann, ist kleiner als der, der durch Gleichung (22) erzielt wird. Dies spiegelt die Tatsache wider, daß das Aktivieren einer großen Anzahl von Adreßdecodierern (d.h. das Erhöhen von w) zu einem Speicher führt, der weniger Fehler aufweist, aber eine niedrigere Kapazität. Umgekehrt führt ein kleinerer Wert von w zu einem Speicher, der mehr Fehler erzeugt, aber eine größere Kapazität aufweist, da jeder Datenschreibvorgang Werte in weniger Wortleitungen des Datenspeichers setzt. In beiden Fällen kommt es zu einem Maximum extrahierbarer Information, wenn h = 0,5 ist.
  • Der Erfinder hat mit Herleitung der oben angeführten Ausdrücke festgestellt, daß ein Speicher, der die vorliegende Erfindung verkörpert, wesentlich verbessert werden kann, wenn w so eingestellt ist, daß es zwischen den durch die Gleichungen (22) und (29) bestimmten Werten liegt.
  • Die oben beschriebene Analyse soll nun unter Bezugnahme auf 3 und 4 beschrieben werden. 3 zeigt ein dreidimensionales Diagramm von Gleichung (23). Eine Achse, die mit Z bezeichnet ist, stellt die Anzahl von Elementen dar, die in den Speicher geschrieben sind, eine Achse, die mit w bezeichnet ist, stellt die Anzahl von Adreßdecodierern dar, die durch einen Lese- oder Schreibvorgang aktiviert werden, und eine Achse, die mit Ec bezeichnet ist, stellt die von Gleichung (23) gelieferte Größe dar. 4 ist ein Konturdiagramm des Diagramms aus 3, wobei die w- und die Z-Achse dieselben Größen darstellen wie die jeweiligen Achsen in 3. Das in den Graphen dargestellte beispielhafte System ist eines, bei dem 4096 Adreßdecodierer vorliegen (d.h. W 4096), und Daten mit einem 11-von-256-Code gespeichert werden (d.h. d = 11 und D = 256). Andere Konfigurierungen zeigen ähnliche Ergebnisse.
  • Zunächst bezugnehmend auf 3, ist zu erkennen, daß die Anzahl der Wörter, die richtig abgerufen werden kann Ec, zunimmt, je mehr Daten in den Speicher geschrieben werden, (d.h. indem Z zunimmt), jedoch steil abfällt, wenn Z zu groß wird (eine klippenartige Formation 10). Das heißt, nach einer Anzahl von Datenschreibvorgängen ist der Speicher gesättigt, und die Anzahl der Wörter, die richtig wiederhergestellt werden kann, fällt steil ab.
  • Unter Bezugnahme auf 4 soll nun eine weitere Analyse bereitgestellt werden. Die fortlaufenden Konturlinien zeigen, daß die erwartete Anzahl richtiger Wörter (Ec) mit der Anzahl gespeicherter Einträge (Z) und der Anzahl aktivierter Adreßdecodierer (w) variiert. Der Spitzenwert von Ec ist 5332, mit einer Fehlerrate von etwa 11 %. Diese Spitzenkapazität ist höher als die Anzahl der Wortleitungen (W = 4096). Die mittlere Konturlinie 11 ist bei Ec = 5000 gezogen, und nachfolgende Konturen sind in Schritten von 500 gezogen. Die Südseite des Diagramms ist nahezu flach, und Ec ist sehr nahe an Z, bis auf die Westseite des Diagramms, wo w klein ist. Die Leistung nimmt rapide ab, wenn entweder w zu klein oder Z zu groß ist, wie jeweils durch die steilen Hänge an der West- bzw. Nordseite des Diagramms gezeigt.
  • Die fortlaufenden Konturen, die oben beschrieben wurden, sind durch zwei weitere Datensätze überlagert. Ein erster Datensatz enthält drei Hyperbeln 12, die in lang gestrichelten Linien gezeichnet sind. Jede Hyperbel stellt die Werte von w und Z dar, die einen jeweiligen Wert für h erzeugen. Die erste der Hyperbeln A stellt Punkte dar, an denen h = 0,2, eine zweite Hyperbel B stellt h = 0,5 dar, und eine dritte Hyperbel C stellt h = 0,8 dar. Es ist erkennbar, daß die Linie, die die optimale Belegung (h = 0,5) bezeichnet, den Scheitel des Diagramms durchläuft.
  • Drei weitere Kurven 13 zweigen, wie Werte von w und Z den Wert von Pc beeinflussen. Die drei Kurven stellen jeweils, von links nach rechts gelesen, Werte von 0,1, 0,5 bzw. 0,9 für Pc dar. In 4 ist erkennbar, daß der Scheitel jeder der Kurven 13 an der Linie h = 0,5 liegt. Es ist zu beachten, daß die drei Kurven 13 nahe beieinander liegen, was anzeigt, daß die Kapazität gegenüber der Wahrscheinlichkeit Pc relativ unempfindlich ist.
  • Aus den vorangehenden Erörterungen wird deutlich, daß der optimale Wert für w für eine maximale richtige Datenwiederherstellung, wobei andere Daten mit Fehlern wiederhergestellt werden, an dem Scheitel des Diagramms auftritt. Das heißt w = 11. Die Optimalwert für eine fehlerfreie Wiederherstellung ist von dem Punkt an zu lesen, an dem die mittlere Hyperbel B die mittlere Kurve der Kurven 13 kreuzt (das heißt, dem Punkt, an dem die Linie h = 0,5 die Linie Pc = 0,5 kreuzt). In diesem Fall ist w = 20, was mehr als zweifach über dem Wert einer Wiederherstellung mit Fehlern liegt. Um den Wert von w für eine fehlerfreie Wiederherstellung zu bestimmen, ist es nötig, das Maximum der Pc-Kurve zu lokalisieren. Allerdings ist die Ermittlung des Maximums sehr schwierig, da diese Kurve sehr flach ist. Da bekannt ist, daß dieses Maximum an einem Punkt auftritt, wo h = 0,5, ist es möglich, den Schnittpunkt der Linien Pc = 0,5 und h = 0,5 zu benutzen, um den Wert von w für eine maximale fehlerfreie Datenwiederherstellung zu bestimmen. Deshalb wird gemäß den Entwicklungen gemäß der Erfindung jeder Speicher, der die oben genannten Parameter aufweist, optimal mit einem Wert von w zwischen 11 und 20 betrieben.
  • Die vorangegangenen Erörterungen haben ein neuartiges Verfahren vorgestellt, um einen Optimalwert für w zu bestimmen, und es wurden Vorteile einer solchen Bestimmung vorgestellt. Allerdings ist zu beachten, daß es schwierig ist, sicherzustellen, daß genau w Adressen von jeder Eingabeadresse aktiviert werden, da jeder Adreßdecodierer unabhängig feuert, das heißt, für w liegt eine gewisse Schwankung vor. Die oben vorgestellte Analyse soll nun unter Berücksichtigung dieser Beobachtung modifiziert werden.
  • Es wurde erläutert, daß ein Schwellenwert T auf einen Adreßdecodierer angewandt wird, um die Anzahl von Bits zu bestimmen, die zwischen einer Eingabeadresse und einer Decodiererkennung übereinstimmen müssen, damit ein Decodierer aktiviert wird. Die aktivierten Adreßdecodierer sind diejenigen, bei denen wenigstens T Bits ihrer Eingabe mit der Eingabeadresse übereinstimmen.
  • Die Wahrscheinlichkeit, daß ein erster N1-von-M-Code T gemeinsame „1"en mit einem zweiten N2-von-M-Code aufweist, ist durch Gleichung (30) angegeben:
    Figure 00170001
  • Da die Adreßdecodierer, die T Bits mit der Eingabeadresse gemeinsam haben, aktiviert werden, kann der Mittelwert von w, bezeichnet als w ^, mit Hilfe von Gleichung (31) hergeleitet werden:
    Figure 00170002
  • Wenn der Speicher mit einer fehlerfreien Eingabe arbeitet, werden von einer jeweiligen Eingabeadresse stets dieselben Adreßdecodierer aktiviert. Allerdings liegt eine gewisse statistische Schwankung in der Anzahl der Decodierer vor, die von verschiedenen Eingabeadressen aktiviert werden. Für eine jeweilige Eingabeadresse ergibt sich die Wahrscheinlichkeit, daß ein Adreßdecodierer aktiviert wird, durch:
    Figure 00170003
  • Die W Adreßdecodierer ergeben eine binomische Verteilung von w, mit einem Mittelwert gemäß Gleichung (31), und einer Varianz gemäß Gleichung (33): σ2a = W·pa·(1 – pa) (33)
  • Die Wahrscheinlichkeit, daß w einen bestimmten Wert w' annimmt, ist: Pw' = (1 – pa)W-w'·paw'·Cw'W (34)
  • Gleichung (13) oben liefert einen Ausdruck für die Wahrscheinlichkeit, daß alle gespeicherten Datenwerte ohne Fehler wiederhergestellt werden können. Mit Gleichung (34) kann Gleichung (13) modifiziert werden, um zu ergeben:
    Figure 00180001
  • Das heißt, Gleichung (13) wird modifiziert, um die Varianz des Werts von w zu berücksichtigen.
  • Ebenso wird Gleichung (23), die einen Wert für die erwartete Anzahl richtig wiederherstellbarer Datenelemente liefert (unter Ignorierung derjenigen, die mit Fehler wiederhergestellt wurden):
    Figure 00180002
  • Angesichts dieser Veränderungen der Werte von Ec und Pc, um die binomische Verteilung von w zu berücksichtigen, wird das Konturdiagramm aus 4 zu dem in 5 gezeigten modifiziert. Die Konturlinien, Hyperbeln und Kurven bezeichnen dieselbe Information wie die aus 4. Die vertikale (Z) Achse aus 5 stellt dieselbe Größe dar wie die entsprechende Achse aus 4. Die w-Horizontale ist so angepaßt, daß sie den Mittelwert von w wiedergibt.
  • In diesem Fall ist der Scheitelwert von Ec bei Ec = 4445 niedriger, wobei Z = 5440 und w = 15. Dieser Scheitelwert tritt nicht länger bei h = 0,5 auf, sondern tritt nun bei h = 0,575 auf. Die fehlerfreie Leistung ist bei niedrigeren Werten von w wesentlich schlechter, doch die allgemeine Form des Diagramms bleibt unbeeinflußt. Allerdings ist erkennbar, daß aufgrund der binomischen Verteilung von w der Wert von T eingestellt sein muß, um w einen höheren Mittelwert zu verleihen als oben empfohlen. Der erforderliche Wert von T kann durch Umstellen von Gleichung (31) bestimmt werden, und unter Verwendung geeigneter Werte für a, A, i und w, um T zu bestimmen.
  • Das System der vorliegenden Erfindung kann mit Hilfe der Technologie künstlicher neuronaler Netzwerke implementiert werden, und eine solche Implementierung soll nun beschrieben werden. Die Grundstruktur eines geeigneten künstlichen neuronalen Netzwerks ist in 6 gezeigt. Das neuronale Netzwerk umfaßt eine Schicht aus Eingangsneuronen 14, die mit einer Schicht von Adreßdecodierer-Neuronen 15 verbunden sind. Der Datenspeicher umfaßt D Neuronen 16. Jedes Datenneuron 16 ist mit jedem Adreßdecodierer 15 verbunden. Jedes Datenneuron 16 weist einen Datenschreibeingang IP und einen Datenleseausgang OP auf.
  • Das System ist insbesondere für eine Implementierung geeignet, die auf Leaky-Integrate-and-Fire-Spiking-Neuronen basieren, obwohl auch andere neuronale Modell anwendbar sind. Ein Integrate-and-Fire-Neuron weist n Eingänge auf und ermittelt eine gewichtete Summe dieser Eingänge. Diese Summe ist als der Aktivierungsgrad des Neurons bekannt. Ein Neuron feuert nur dann, wenn der Aktivierungsgrad einen vorbestimmten Schwellenwert überschreitet. Die unten beschriebene Implementierung basiert auf Spiking-Neuronen, die einen einzelnen Impuls ausgeben – das heißt, entweder feuert ein Neuron und erzeugt einen Impuls, oder es feuert nicht und erzeugt keinen Impuls. Also kann die Ausgabe eines Neurons als eine digitale 0/1-Ausgabe betrachtet werden. Die Leck-(leaky)-Eigenschaft des Neurons bedeutet, daß eine Eingabe von einem Neuron für eine vorbestimmte Zeitdauer beibehalten wird. Nach dieser Zeit fällt der Aktivierungsgrad auf null zurück. Wenn also die Eingänge in Wellen feuern, werden nur die Eingaben einer jeweiligen Welle bei der Berechnung eines Aktivierungsgrads berücksichtigt, da andere Eingaben zurück auf null „geleckt" sind. Diese „Leck"-Eigenschaft ist wichtig, da sie sicherstellt, daß ein Neuron nicht aufgrund vorhergehender Eingaben falsch feuert. Die „Leck"-Eigenschaft stellt sicher, daß die Neuronen in dem System sich zwischen „Wellen" von Aktivität in inaktiven Zuständen beruhigen.
  • Eine Adresse in der Form eines i-von-A-Codes wird in die Adreßdecodierer-Neuronen 15 von den Eingangsneuronen 14 eingegeben. Diese Eingabe ist eine Serie von i Impulsfolgen (spikes) an i der A Eingangsneuronen an das System, die etwa zum selben Zeitpunkt eintreffen. Diese Spiking-Neuronen tragen zu dem Aktivierungsgrad einiger der Adreßdecodierer-Neuronen bei, wie im folgenden beschrieben.
  • Der Adreßdecodierer umfaßt W Adreßdecodierer-Neuronen 15. Verbindungen zwischen den Eingangsneuronen 14 und den Neuronen, die den Adreßdecodierern zugeordnet sind, sind festgelegt. Ebenso ist der Schwellenwert festgelegt, an dem die Adreßdecodierer-Neuronen feuern. Beispielsweise kann es in der vereinfachten Darstellung von 6 sein, daß wenigstens eins der zwei Eingangsneuronen 14, das mit einem bestimmten Adreßdecodierer-Neuron 15 verbunden ist, feuern muß, wenn dieses Adreßdecodierer-Neuron 15 feuern soll. Das heißt, jedes Adreßdecodierer-Neuron weist einen Schwellenwert von 1 auf.
  • Eine Matrix kann gebildet werden, die die Verbindungen zwischen den Eingangsneuronen 14 und den Adreßdecodierer-Neuronen 15 darstellt, und diese Verbindungsmatrix ist vollständig – das heißt, jedes Eingangsneuron ist mit jedem Adreßdecodierer-Neuron verbunden. Jedes Adreßdecodierer-Neuron weist A Gewichtungen auf. a Gewichtungen sind in der Verbindungsmatrix auf „1" gesetzt, und A-a Gewichtungen sind auf „0" gesetzt. Ein Teil einer Verbindungsmatrix ist in 7 gezeigt. Hier sind Verbindungen für ein Adreßdecodierer-Neuron gezeigt. Fünf Eingabeleitungen 17 sind jeweils mit einer Eingabeleitung 18 eines einzelnen Adreßdecodierer-Neurons verbunden (nicht dargestellt). Jeder dieser Verbindungen zwischen einer Eingabeleitung 17 und einer Adreßdecodierer-Eingabeleitung 18 ist entweder eine Gewichtung „1" oder eine Gewichtung „0" zugeteilt.
  • Gelesen von Eingabeleitungen 17 von links nach rechts und den Adreßdecodierer-Neuroneingängen von oben nach unten kann man sehen dass die Verbindung zwischen die erste Eingabeleitung und der ersten Adreßdecodierer-Neuroneingang „0" zugewiesen wird, während die Verbindung zwischen der zweiten Eingabeleitung und dem zweiten Neuroneingang „1" zugewiesen wird.
  • Es gibt fünf Eingabeleitungen 17, und fünf Adreßdecodierer-Eingänge 18. Verbindungen zwischen drei dieser Leitungen ist eine „1"-Gewichtung zugeteilt. So ist jedem Adreßdecodierer-Neuron im Prinzip ein 3-von-5-Code als eine Kennung zugeteilt. Für jede der Verbindungen mit einer „1"-Gewichtung trägt ein Eingangsneuron, das an der zugeordneten Eingabeleitung feuert, zu dem Aktivierungsgrad des Adreßdecodierer-Neurons bei. Umgekehrt trägt für eine Verbindung, die eine „0"-Gewichtung aufweist, ein Eingangsneuron, das an der zugeordneten Eingabeleitung feuert, nicht zu dem Aktivierungsgrad des Adreßdecodierer-Neurons bei.
  • Die in 7 gezeigte Struktur ist so wiederholt, daß jede Eingabeleitung 17 mit W Adreßdecodierer-Neuroneneingängen verbunden ist. In der Ansicht aus 7 sind nur die Eingänge eines einzigen Adreßdecodierer-Neurons gezeigt, sodaß jede Eingabeleitung 17 mit nur einem einzigen Eingang 18 verbunden ist.
  • Da eine „1"-Gewichtung bedeutet, daß ein feuerndes Eingangsneuron einen Adreßdecodierer-Neuroneneingang 18 beeinflußt (d.h. daß diese Eingabeleitung in der Kennung des Adreßdecodierers eine „1" darstellt), und daß eine „0" effektiv eine Darstellung einer Nichtverbindung ist (d.h. daß ein Neuron, daß an dieser Eingabeleitung feuert, keinen Einfluß auf das Adreßdecodierer-Neuron ausübt), muß jedes Adreßdecodierer-Neuron nur mit den i Eingangsneuronen verbunden sein, die „1"en tragen. Dies ist in 8 gezeigt, wo nur die drei Eingabeleitungen 17, die „1"-Gewichtungen aufweisen, mit den Eingängen 18 eines Adreßdecodierer-Neurons 15 verbunden sind.
  • Auf diese Weise können die Verbindungen zwischen Eingangs- und Adreßdecodierer-Neuronen entweder als vollständige Verbindungsmatrix mit „0"- und „1"-Werten (7), oder als eine Leitwegtabelle betrachtet werden, die bestimmte Verbindungen enthält (8). Diese zwei Ansichten sind äquivalent. Es ist zu beachten, daß, wie in der Ansicht aus 7, in 8 nur Verbindungen für ein einziges Adreßdecodierer-Neuron 15 gezeigt sind, und daß ähnliche Verbindungen für jedes der W Adreßdecodierer-Neuronen benötigt werden.
  • Im allgemeinen werden die Verbindungen (oder „1"en) für jedes Adreßdecodierer-Neuron zufällig ausgewählt.
  • Wenn Impulsfolgen eintreffen (die eine Eingabeadresse darstellen), feuert eine Anzahl von Adreßdecodierer-Neuronen. Die feuernden Neuronen sind die, die „1"-Werte an einer ausreichenden Anzahl von „1"-gewichteten Eingabeleitungen empfangen haben, um den Aktivierungsgrad des Adreßdecodierer-Neurons über den Schwellenwert T zu heben. Dieses Feuern von Adreßdecodierer-Neuronen 15 ist ein w-von-W-Code, wie oben beschrieben.
  • Der Datenspeicher 3 umfaßt D Neuronen 16, von denen jedes die W Adreßdecodierer-Neuronen als Eingang aufweist. Jedes der D Datenspeicherneuronen weist einen einzigartigen Datenschreibeingang IP auf. Die Verbindungen zwischen den W Adreßdecodierer-Neuronen und den D Datenspeicherneuronen sind anfänglich so eingestellt, daß sie Null-Gewichtungen aufweisen. Die Verbindungen von den Datenschreibeingängen (nicht dargestellt) weisen Werte auf, die zunächst irrelevant sind. Wenn allerdings ein Datenschreibneuron feuert, muß es ein entsprechendes Datenspeicherneuron in einen Hebbschen Lernmodus zwingen, der während der gesamten zugehörigen eintreffenden Welle von feuernden Adreßdecodierer-Neuronen aufrechterhalten wird. Das heißt, wenn Daten geschrieben werden sollen, muß jedes der Datenspeicherneuronen aktiviert werden, um die Daten speichern zu können, die von den Datenschreibneuronen präsentiert werden.
  • Es soll nun die Prozedur zum Schreiben von Daten in den Datenspeicher beschrieben werden. Zunächst feuern d der D Datenschreibneuronen (nicht dargestellt), und die entsprechenden d Datenspeicherneuronen 16 werden in einen Hebbschen Lernmodus versetzt. Die Adreßdecodierer-Neuronen 15 feuern wie oben beschrieben, was dazu führt, daß w-von-W-Code an die Datenspeicherneuronen übermittelt wird. Die w Neuronen, die von den Adreßdecodierer-Neuronen Impulsfolgen empfangen, und die von den Datenschreibeingabe-Neuronen in einen Hebbschen Lernmodus versetzt wurden, weisen auf „1" gesetzte Gewichtungen auf.
  • Sobald die Welle eintreffender Impulsfolgen der Adreßdecodierer-Neuronen vorbei ist, veranlaßt die „Leck"-Eigenschaft aller Neuronen die Aktivierungsgrade dazu, zu „0" zurückzukehren. An diesem Punkt hören die Datenspeicherneuronen auf, im Hebbschen Lernmodus zu sein. Nach einer geeigneten Verzögerung ist der Speicher in einem geeigneten Zustand zum Einleiten eines weiteren Lese- oder Schreibzyklus. Auf diese Weise wird deutlich, daß die „Leck"-Eigenschaft der Neuronen sicherstellt, daß die Aktivierung von einem vorangegangenen Schreizyklus nicht den Vorgang des aktuellen Schreibzyklus beeinflußt.
  • Wenn Daten aus dem Datenspeicher abgelesen werden sollen, sind die Datenschreibneuronen inaktiv. Ein Lesevorgang wird durch das Feuern von w der W Adreßdecodierer-Neuronen eingeleitet, wie oben beschrieben. Die w gefeuerten Adreßdecodierer-Neuronen führen dazu, daß die Aktivierungsgrade an einigen Datenspeicherneuronen ansteigen, wobei davon ausgegangen wird, daß wenigstens einige Neuronen durch einen vorhergehenden Schreibzyklus eingestellt wurden.
  • Ein verallgemeinerter „Winner-takes-all"-(k-WTA)-Stil einer Ausgabelogik wählt d Datenspeicherneuronen mit dem höchsten Aktivierungsgrad aus, und diese geben Datenimpulse an ihren jeweiligen Ausgängen OP aus, um eine Darstellung der Datenausgabe zu bilden. Wie oben beschrieben, ist eine geeignete Verzögerung nötig, bevor ein weiterer Lese- oder Schreibzyklus eingeleitet werden kann. Eine Anzahl bekannter Verfahren kann benutzt werden, um den k-WTA-Algorithmus zu implementieren. Bei einem solchen Verfahren feuern die Ausgangsneuronen in absteigender Ordnung des Aktivierungsgrads, wobei das Neuron mit dem höchsten Aktivierungsgrad zuerst feuert. So ist, nachdem d Neuronen gefeuert haben, bekannt, daß die d Neuronen, die den höchsten Aktivierungsgrad aufweisen, zu der Ausgabe beigetragen haben. Ein weiteres Feuern kann dann von einem Gegenneuron unterdrückt werden, das die d Feuerzyklen beobachtet hat, und ein Unterdrückungssignal ausgibt, um ein weiteres Feuern zu verhindern.
  • Die Anwendung der N-von-M-Codierung auf die Adreßdecodierer-Logik, wie oben beschrieben, bietet eine Reihe von Vorteilen. Insbesondere sind solche Codes, da sie nur an der Position von „1"-Bits in einem Datenwert interessiert sind, besonders für Anwendungen in neuronalen Netzwerken geeignet, wo eine „1" von einem feuernden Neuron dargestellt wird. In einem binären System ist es vergleichsweise schwierig, ein nicht feuerndes Neuron darzustellen und zu erfassen, was eine neuronale Implementierung eines binären Systems schwer realisierbar macht. So stellt die Anwendung von N-von-M-Codierung ein effektives vorgangsgetriebenes System bereit, wobei Vorgänge (ein Neuron feuert) Auswirkungen haben, und Nicht-Vorgänge (ein Neuron feuert nicht) keine Auswirkungen haben.
  • Die jeweilige Auswahl von M- und N-Werten für einen M-von-N-Code hängt in gewissem Umfang von der Anwendung ab. Beispielsweise wird in Anwendungen der Bioinformatik, wo DNS-Daten darzustellen sind, häufig ein 1-von-4-Code ausgewählt. Diese Auswahl wird getroffen, da DNS eine Anzahl von Basen enthält, wobei jede Base aus einer Gruppe möglicher Basen ausgewählt wird, die allgemein als G, A, T und C bezeichnet werden. Auf diese Weise wird jede Base durch eine „1" an einer der vier Eingaben dargestellt, die von dem Code bereitgestellt werden. Das heißt z.B.:
    G = 0001 A = 0010
    T = 0100 C = 1000
  • Das heißt, ein 1-von-4-Code erlaubt die Darstellung vier unterschiedlicher Werte (einer Zwei-Bit-Binärzahl). Eine DNS-Sequenz wird dann als eine Serie von 1-von-4-Codes dargestellt, ein Code für jede Base der DNS-Sequenz. Mit Hilfe dieser Sequenz wird eine Vier-Basen-DNS-Sequenz von einem 4-von-16-Code dargestellt. Es ist zu beachten, daß dies ein beschränkter 4-von-16-Code ist, mit der Beschränkung, daß eins der „1"-Bits in den ersten vier Bits des Codes vorkommen muß, das zweite in den nächsten vier Bits usw.
  • Ein allgemeiner Binärcode kann in einen N-von-M-Code umgewandelt werden, beispielsweise mit Hilfe einer Zweileitungscodierung. Hier werden jedem Bit des Binärcodes zwei „Leitungen" zugeteilt. Ein Impuls wird auf der ersten Leitung eines Bit übertragen, wenn das Bit auf „1" gesetzt ist, während ein Puls auf der zweiten Leitung dieses Bits übertragen wird, wenn das Bit auf „0" gesetzt ist. Wird diese Zweileitungsimplementierung auf das neuronale Netzwerk aus 6 bezogen, akzeptiert jedes Eingangsneuron 14 Eingaben von zwei Zweileitungs-Eingangsneuronen. Das heißt, es gibt zehn Zweileitungs-Eingangsneuronen in dem System. Wenn eine Eingabe empfangen wird, geschieht dies in der Form eines 5-von-10-Codes, mit einer Beschränkung, daß eine „1" an einem Neuron des ersten Neuronenpaars auftreten muß, eine an dem zweiten usw. Eingangsneuronen, die Eingaben von den „1"-Leitungsneuronen empfangen, feuern dann wie oben beschrieben.
  • Es ist zu beachten, daß eine derartige Hinzufügung von Zweileitungstechnologie ein System bereitstellt, bei dem die Zweileitungseingaben mit Hilfe eines beschränkten N-von-M-Codes wie beschrieben betrieben werden, während die Eingangsneuronen binär arbeiten, ohne Sicherheit darüber, wie viele Neuronen feuern werden. Dies stellt eine effektive Umwandlung eines N-von-M-Systems in ein Binärsystem bereit.
  • Es wird für Fachleute offensichtlich sein, daß die Speicherkonfigurierung der vorliegenden Erfindung in Bezug auf traditionelle Adreßdecodierer, und Wortleitungen von Datenspeichern, oder als ein neuronales System, wie oben beschrieben, implementiert werden kann. Es wird auch offensichtlich sein, daß das System entweder durch Herstellen entsprechender Hardwarekomponenten oder durch Konfigurieren neu konfigurierbarer Komponenten wie z.B. feldprogrammierbarer Gate-Arrays (FPGAs) implementiert werden kann. Alternativ kann das System realisiert werden, indem ein geeignetes Computerprogramm geschrieben wird, um auf einem üblichen Computersystem abzulaufen. Ein solches System benutzt Hardware des üblichen Computers derart, daß ein Speicher simuliert wird, der die Erfindung verkörpert. Das Computerprogramm kann in jeder der zahlreichen weit verbreiteten Programmiersprachen geschrieben werden, obwohl eine objektorientierte Implementierung besonders bevorzugt wird.

Claims (22)

  1. Speicherkonfiguration zur Verwendung in einem Computersystem, wobei der Speicher eine Vielzahl von Adreßdecodierern (2) umfaßt, denen jeweils eine Kennung mit einer vorbestimmten Anzahl von Bits zugeteilt ist, wobei jedes Bit einen ersten und einen zweiten auswählbaren Zustand hat, und einen Datenspeicher (3) mit einer Vielzahl von Wortleitungen vorbestimmter Länge, wobei jeder der Adreßdecodierer (2) aktivierbar ist, um eine aus der Vielzahl von Wortleitungen auszuwählen, und die Adreßdecodierer (2) Mittel zum Empfangen einer Eingabeadresse mit einer vorbestimmten Anzahl von Bits und Mittel zum Vergleichen der Kennung eines Adreßdecodierers (2) mit der Eingabeadresse umfassen, dadurch gekennzeichnet, daß der Speicher ferner Mittel umfaßt, um einen Adreßdecodierer (2) zu aktivieren, wenn mindestens eine vorbestimmte Mindestanzahl von in den ersten auswählbaren Zustand versetzten Bits in der Eingabeadresse mit in den ersten auswählbaren Zustand versetzten Bits in der Decodiererkennung übereinstimmt.
  2. Speicherkonfiguration nach Anspruch 1, wobei die Mittel zum Vergleichen der Kennung eines Adreßdecodierers (2) mit der Eingabeadresse positionsbezogene Übereinstimmung zwischen in den ersten auswählbaren Zustand versetzten Bits in der Eingabeadresse und in den ersten auswählbaren Zustand versetzten Bits in den Kennungen der Decodierer (2) berücksichtigt.
  3. Speicherkonfiguration nach Anspruch 1 oder 2, wobei jede Kennung eines Adreßdecodierers (2) eine gleiche Anzahl von in den ersten auswählbaren Zustand versetzten Bits hat.
  4. Speicherkonfiguration nach einem der vorhergehenden Ansprüche, wobei die Mittel zum Empfang einer Eingabeadresse dafür konfiguriert sind, Adressen zu empfangen, die eine vorbestimmte Anzahl von in den ersten auswählbaren Zustand versetzten Bits enthalten.
  5. Speicherkonfiguration nach Anspruch 3 und 4, wobei die vorbestimmte Anzahl von in den ersten auswählbaren Zustand versetzten Bits in einer Eingabeadresse gleich der Anzahl der in den ersten auswählbaren Zustand versetzten Bits in jeder der Kennungen der Adreßdecodierer (2) ist.
  6. Speicherkonfiguration nach einem der vorhergehenden Ansprüche, wobei der Datenspeicher (3) eine Vielzahl von Einzelbitspeichern umfaßt, so daß jedes Bit jeder Wortleitung in einem Einzelbitspeicher gespeichert wird.
  7. Speicherkonfiguration nach einem der vorhergehenden Ansprüche, wobei der Datenspeicher (3) eine Dateneingabeleitung (5) umfaßt, die eine gleiche Anzahl von Bits wie jede aus der Vielzahl von Wortleitungen enthält.
  8. Speicherkonfiguration nach Anspruch 7, ferner Datenschreibmittel umfassend, um Daten aus der Dateneingabeleitung (5) in Wortleitungen zu kopieren, die durch die Adreßdecodierer (2) aktiviert sind.
  9. Speicherkonfiguration nach Anspruch 7 oder 8, wobei die Dateneingabeleitung (5) dafür konfiguriert ist, Eingabedaten zu empfangen, die eine vorbestimmte Anzahl von in den ersten auswählbaren Zustand versetzten Bits enthalten.
  10. Speicherkonfiguration nach einem der vorhergehenden Ansprüche, ferner mit Mitteln zum Summieren von Werten, die in jedem Bit von Wortleitungen gespeichert sind, die durch einen Adreßdecodierer (2) aktiviert sind, um einen Aktivierungsgrad-Wert für jedes Bit zu erzeugen.
  11. Speicherkonfiguration nach Anspruch 9 und 10, ferner mit Mitteln zum Erzeugen eines Ausgabeurorts, das die vorbestimmte Anzahl von in den ersten auswählbaren Zustand versetzten Bits enthält.
  12. Speicherkonfiguration nach Anspruch 11, wobei die in den ersten auswählbaren Zustand versetzten Bits in der Ausgabe die vorbestimmte Anzahl von Bits mit dem höchsten Aktivierungsgrad sind.
  13. Speicherkonfiguration nach einem der Ansprüche 1 bis 12, wobei der Speicher unter Verwendung einer Vielzahl von künstlichen Neuronen (16) implementiert ist, die miteinander verbunden sind, um ein neuronales Netzwerk zu bilden.
  14. Speicherkonfiguration nach Anspruch 13, wobei die Vielzahl von Adreßdecodierern (2) durch eine Vielzahl von Adreßdecodierer-Neuronen (15) dargestellt wird und der Datenspeicher (3) durch eine Vielzahl von Datenneuronen dargestellt wird.
  15. Speicherkonfiguration nach Art eines neuronalen Netzwerks zur Verwendung in einem Computersystem, wobei der Speicher eine Vielzahl von Adreßdecodierer-Neuronen (15) umfaßt, von denen jedes mit einer vorbestimmten Anzahl von Eingangsneuronen (14) verbunden ist, und einen Datenspeicher mit einer Vielzahl von Datenneuronen, wobei jedes der Adreßdecodierer-Neuronen (15) aktivierbar ist, um einige aus der Vielzahl von Datenneuronen auszuwählen, und die Adreßdecodierer-Neuronen (15) Mittel zum Empfangen eines Signals umfassen, das ein Feuern eines Eingangsneurons (14) darstellt, mit dem es verbunden ist, wobei ein Adreßdecodierer-Neuron (15) Mittel umfaßt, um Datenneuronen aktivieren, wenn von mindestens einer vorbestimmten Mindestanzahl von Eingangsneuronen (14), mit denen das Adreßdecodierer-Neuron (15) verbunden ist, Feuersignale empfangen werden.
  16. Verfahren zum Betreiben eines Speichers zur Verwendung in einem Computersystem, wobei der Speicher eine Vielzahl von Adreßdecodierern (2) umfaßt, denen jeweils eine Kennung mit einer vorbestimmten Anzahl von Bits zugeteilt ist, wobei jedes Bit einen ersten und einen zweiten auswählbaren Zustand hat, und einen Datenspeicher (3) mit einer Vielzahl von Wortleitungen vorbestimmter Länge, wobei jeder der Adreßdecodierer (2) aktivierbar ist, um eine aus der Vielzahl von Wortleitungen auszuwählen, wobei eine Eingabeadresse mit einer vorbestimmten Anzahl von Bits in den Adreßdecodierer (2) eingegeben wird, wobei die Kennung eines Adreßdecodierers (2) mit der Eingabeadresse verglichen wird und Adreßdecodierer (2) aktiviert werden, wenn mindestens eine vorbestimmte Mindestanzahl von in den ersten auswählbaren Zustand versetzten Bits in der Eingabeadresse mit in den ersten auswählbaren Zustand versetzten Bits in der Decodiererkennung übereinstimmt.
  17. Verfahren nach Anspruch 16, wobei Eingabedaten an einen Dateneingang des Datenspeichers angelegt werden und die Daten in Wortleitungen geschrieben werden, die durch die aktivierten Adreßdecodierer (2) aktiviert sind.
  18. Verfahren nach Anspruch 16 oder 17, wobei die vorbestimmte Mindestanzahl von Bits so festgelegt wird, daß durch jede beliebige gültige Eingabeadresse weniger als 100 Adreßdecodierer (2) aktiviert werden.
  19. Verfahren nach Anspruch 18, wobei die vorbestimmte Mindestanzahl von Bits so festgelegt wird, daß durch jede beliebige gültige Eingabeadresse weniger als 50 Adreßdecodierer (2) aktiviert werden.
  20. Verfahren nach Anspruch 19, wobei die vorbestimmte Mindestanzahl von Bits so festgelegt wird, daß durch jede beliebige gültige Eingabeadresse weniger als 20 und mehr als 11 Adreßdecodierer (2) aktiviert werden.
  21. Ein Trägermedium, das computerlesbare Codemittel trägt, um zu bewirken, daß ein Computer eine Prozedur gemäß dem Verfahren nach einem der Ansprüche 16 bis 20 ausführt.
  22. Computerprogramm zur Durchführung des Verfahrens nach einem der Ansprüche 16 bis 20.
DE60213007T 2002-03-28 2002-10-14 Unscharf adressierbarer digitaler speicher Expired - Lifetime DE60213007T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB0207372 2002-03-28
GBGB0207372.4A GB0207372D0 (en) 2002-03-28 2002-03-28 Digital memory
PCT/GB2002/004650 WO2003083669A2 (en) 2002-03-28 2002-10-14 Inexact addressable digital memory

Publications (2)

Publication Number Publication Date
DE60213007D1 DE60213007D1 (de) 2006-08-17
DE60213007T2 true DE60213007T2 (de) 2007-02-08

Family

ID=9933933

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60213007T Expired - Lifetime DE60213007T2 (de) 2002-03-28 2002-10-14 Unscharf adressierbarer digitaler speicher

Country Status (10)

Country Link
US (1) US7512572B2 (de)
EP (1) EP1488425B1 (de)
JP (1) JP4209335B2 (de)
AT (1) ATE332564T1 (de)
AU (1) AU2002330642B2 (de)
CA (1) CA2479944C (de)
DE (1) DE60213007T2 (de)
ES (1) ES2268084T3 (de)
GB (1) GB0207372D0 (de)
WO (1) WO2003083669A2 (de)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0524126D0 (en) * 2005-11-26 2006-01-04 Cogniscience Ltd Data transmission method
US8862854B2 (en) 2006-08-18 2014-10-14 Ramachandran Vaidyanathan Configurable decoder with applications in FPGAs
US20100114760A1 (en) * 2008-08-04 2010-05-06 Raj Sundarasen Online interactive issued account acquired transaction information management
US8473439B2 (en) 2010-12-08 2013-06-25 International Business Machines Corporation Integrate and fire electronic neurons
US8812414B2 (en) 2011-05-31 2014-08-19 International Business Machines Corporation Low-power event-driven neural computing architecture in neural networks
US8909576B2 (en) 2011-09-16 2014-12-09 International Business Machines Corporation Neuromorphic event-driven neural computing architecture in a scalable neural network
US9235499B2 (en) 2011-12-16 2016-01-12 General Electric Company System and method for identifying a character-of-interest
US8891872B2 (en) 2011-12-16 2014-11-18 General Electric Company System and method for identifying physical markings on objects
US9558443B2 (en) 2013-08-02 2017-01-31 International Business Machines Corporation Dual deterministic and stochastic neurosynaptic core circuit
EP3089080A1 (de) * 2015-04-27 2016-11-02 Universität Zürich Netzwerke und hierarchische routingstrukturen mit heterogenen speicherstrukturen für skalierbare ereignisgesteuerte computersysteme
US10169701B2 (en) * 2015-05-26 2019-01-01 International Business Machines Corporation Neuron peripheral circuits for neuromorphic synaptic memory array based on neuron models
TWI653584B (zh) * 2017-09-15 2019-03-11 中原大學 利用非揮發性記憶體完成類神經網路訓練的方法
WO2023041919A1 (en) * 2021-09-17 2023-03-23 The University Of Manchester Computer memory

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5113507A (en) * 1988-10-20 1992-05-12 Universities Space Research Association Method and apparatus for a sparse distributed memory system
US5829009A (en) 1993-01-07 1998-10-27 Texas Instruments Incorporated Method and device for storing and recalling information implementing a kanerva memory system
US5390139A (en) * 1993-05-28 1995-02-14 Texas Instruments Incorporated Devices, systems and methods for implementing a Kanerva memory
US5457408A (en) 1994-11-23 1995-10-10 At&T Corp. Method and apparatus for verifying whether a bitstream received by a field programmable gate array (FPGA) is intended for that FPGA
WO1997027632A1 (de) * 1996-01-25 1997-07-31 Siemens Aktiengesellschaft Halbleiterneuron mit variablen eingangsgewichten
US6226710B1 (en) * 1997-11-14 2001-05-01 Utmc Microelectronic Systems Inc. Content addressable memory (CAM) engine
FI107767B (fi) * 1998-05-26 2001-09-28 Nokia Mobile Phones Ltd Menetelmä ja järjestely konvoluutiodekoodauksen toteuttamiseksi
US6460112B1 (en) * 1999-02-23 2002-10-01 Netlogic Microsystems, Llc Method and apparatus for determining a longest prefix match in a content addressable memory device
US7043673B1 (en) * 2001-08-03 2006-05-09 Netlogic Microsystems, Inc. Content addressable memory with priority-biased error detection sequencing
US6597595B1 (en) * 2001-08-03 2003-07-22 Netlogic Microsystems, Inc. Content addressable memory with error detection signaling

Also Published As

Publication number Publication date
CA2479944C (en) 2013-04-23
AU2002330642B2 (en) 2008-12-04
US20050281116A1 (en) 2005-12-22
EP1488425A2 (de) 2004-12-22
GB0207372D0 (en) 2002-05-08
ATE332564T1 (de) 2006-07-15
DE60213007D1 (de) 2006-08-17
ES2268084T3 (es) 2007-03-16
JP4209335B2 (ja) 2009-01-14
US7512572B2 (en) 2009-03-31
EP1488425B1 (de) 2006-07-05
CA2479944A1 (en) 2003-10-09
WO2003083669A3 (en) 2003-12-31
AU2002330642A1 (en) 2003-10-13
JP2005521940A (ja) 2005-07-21
WO2003083669A2 (en) 2003-10-09

Similar Documents

Publication Publication Date Title
DE60213007T2 (de) Unscharf adressierbarer digitaler speicher
DE69423228T2 (de) Unüberwachtes klassifizierungsverfahren mit neuronalem netzwerk mit back propagation
DE60035171T2 (de) Verfahren und Schaltungen zum schnellen Auffinden des minimalen / maximalen Wertes in einer Menge von Zahlen
DE69217047T2 (de) Verbesserungen in neuronalnetzen
Brown Two decades of interaction between the MacArthur-Wilson model and the complexities of mammalian distributions
DE69430744T2 (de) Verbesserte Neuronalhalbleiterchipsarchitekturen und Neuronalnetzwerke darin
DE102019116305A1 (de) Pipelining zur verbesserung der inferenzgenauigkeit neuronaler netze
DE69218941T2 (de) Neuronale netzwerk architektur
DE112011101370T5 (de) Neuronales Netz mit kanonischen gepulsten Neuronen für einen raumzeitlichen Assoziativspeicher
DE2524734A1 (de) Informationsverarbeitungssystem mit mindestens einer informationsverarbeitenden baugruppe
DE112019003326T5 (de) Speichererweiterte neuronale netzwerkarchitekturen eines codierers-decodierers
O'Kane et al. Short-and long-range connections in autoassociative memory
DE69223447T2 (de) Lernverfahren für neuronales Netzwerk und Klassifizieranlage zum Anwenden dieses Verfahrens
DE112017004156T5 (de) Speicherzellenstruktur
DE2133638C3 (de) Verfahren zum Betrieb eines lernfähigen Systems aus in Kaskade geschalteten, zur nicht linearen Datenverarbeitung geeigneten lernfähigen Datenverarbeitungseinheiten
DE60125536T2 (de) Anordnung zur generierung von elementensequenzen
DE102022100200A1 (de) Compute-In-Memory-Speicherarray, CIM-Speicherarray
DE69130238T2 (de) Datenverarbeitungsgerät und Verfahren um in einem Wörterbuch enthaltene Datenwörter auszuwählen
EP0925541B1 (de) Verfahren und vorrichtung zur rechnergestützten generierung mindestens eines künstlichen trainingsdatenvektors für ein neuronales netz
DE102019126788A1 (de) Beschleunigter zugriff auf aus in speichervorrichtungen gespeicherten daten erzeugte rechenergebnisse
DE69517249T2 (de) Anordnung zur segmentierung eines diskreten datensatzes
AU2021105154A4 (en) Adaptive Hierarchical Sampling for image Classification
DE112020005613T5 (de) Neuromorphe Einheit mit Kreuzschienen-Array-Struktur
DE69802372T2 (de) Klassifizierungssystem und -verfahren mit N-Tuple- oder RAM-basiertem neuronalem Netzwerk
DE112021000637T5 (de) Kontinuierlicher monotoner zähler für speichervorrichtungen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition