ES2268084T3 - Memoria digital direccionable de manera inexacta. - Google Patents
Memoria digital direccionable de manera inexacta. Download PDFInfo
- Publication number
- ES2268084T3 ES2268084T3 ES02767715T ES02767715T ES2268084T3 ES 2268084 T3 ES2268084 T3 ES 2268084T3 ES 02767715 T ES02767715 T ES 02767715T ES 02767715 T ES02767715 T ES 02767715T ES 2268084 T3 ES2268084 T3 ES 2268084T3
- Authority
- ES
- Spain
- Prior art keywords
- address
- data
- memory
- bits
- 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
Links
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/06—Address 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)
- Techniques For Improving Reliability Of Storages (AREA)
- Static Random-Access Memory (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
- Communication Control (AREA)
- Holo Graphy (AREA)
- Magnetically Actuated Valves (AREA)
Abstract
Una configuración de memoria para su empleo en un sistema informático, constando la memoria de una pluralidad de decodificadores de dirección (2), a cada uno de los cuales se le asigna un identificador que tiene un número predefinido de bits, teniendo cada bit estados seleccionables primero y segundo, y una memoria de datos (3) que tiene una pluralidad de líneas de palabra de longitud predefinida, siendo susceptible de activación cada uno de los referidos decodificadores de dirección (2) para seleccionar una de entre una pluralidad de líneas, y constando los decodificadores de dirección (2) de medios para recibir una dirección de entrada que tiene un número predefinido de bits y de medios para comparar el identificador de un decodificador de dirección (2) con la dirección de entrada, caracterizada porque la memoria consta además de medios para activar un decodificador de dirección (2) si al menos un número mínimo predefinido de bits puestos en el primer estado seleccionable en la direcciónde entrada se corresponde con bits puestos en el primer estado seleccionable en el identificador del decodificador.
Description
Memoria digital direccionable de manera
inexacta.
La presente invención versa acerca de una
memoria digital.
El empleo cada vez más generalizado de sistemas
informatizados y de dispositivos electrónicos digitales ha dado
como resultado que se propongan varias estructuras diferentes de
memorias. La amplia gama de aplicaciones que precisan de memoria
digital significa que hacen falta memorias dotadas de propiedades
diferentes.
Por ejemplo, las memorias para el empleo en un
ordenador convencional para programas almacenados requieren niveles
elevados de integridad de datos, dado que un solo bit
incorrecto hace que el ordenador funcione indebidamente. Una
memoria convencional de ordenador requiere que se conozca con
exactitud una dirección de lectura para la recuperación de la
información almacenada en una dirección concreta. Esto es así porque
una memoria convencional almacena una cadena de N dígitos binarios
(denominada palabra en lo sucesivo) en una ubicación
específica dentro de la memoria. Solamente se almacena una palabra
en una ubicación concreta en un momento dado.
En algunas aplicaciones que implican el
almacenamiento de grandes cantidades de datos es aceptable cierto
grado de error en los datos recuperados de la memoria, y pueden ser
pasados por alto por el sistema. Además, en algunos casos puede
resultar necesario permitir la recuperación de datos empleando una
dirección inexacta de lectura. La presente invención tiene que ver
con una memoria adecuada para tales aplicaciones.
Una estructura de memoria conocida ha sido
desarrollada por Kanerva y aparece descrita en Kanerva P., Sparse
Distributed Memory [Memoria dispersa distribuida], MIT Press,
1988, y también en Kanerva P., "Self-propagating
Search: A Unified Theory of Memory" [Búsqueda de autopropagación:
Teoría unificada de la memoria], Informe Nº
CSLI-84-7, Stanford University,
1984. Aquí hay conectados muchos decodificadores de dirección a una
memoria de datos que consta de varias líneas de palabra. Cada
decodificador de dirección va conectado a una línea de palabra
diferente dentro de la memoria de datos. Cada decodificador está
identificado por una dirección en forma de un número binario
grande.
Cuando se escriben datos a memoria, se presenta
al conjunto de decodificadores una dirección de entrada, y se
activan los decodificadores que tienen un identificador dentro de
una distancia de Hamming predeterminada respecto de la dirección de
entrada. Las líneas de palabra conectadas a los decodificadores
activados son seleccionadas a continuación para recibir datos de
escritura. Cuando han de recuperarse datos de la memoria, a los
decodificadores se les presenta una dirección, y se activan
nuevamente varias líneas de palabra. La suma de cada bit de
cada línea de palabra activada, y la aplicación del umbral apropiado
permite que se recuperen los datos escritos a la memoria. Escribir
datos y recuperarlos de esta manera permite que se minimicen los
efectos de los errores de dirección y de datos.
La estructura de memoria propuesta por Kanerva
tiene varios inconvenientes. Uno de estos inconvenientes es que los
cálculos de la distancia de Hamming requieren hardware
diseñado específicamente si han de efectuarse de manera
eficiente.
En la patente WO 90/04830 (Universities Space
Research Association) se describe una estructura de memoria
alternativa que procura superar este inconveniente. Este sistema
adopta la arquitectura básica propuesta por Kanerva, pero determina
qué decodificadores de dirección deben activarse en respuesta a una
dirección concreta de entrada empleando un criterio diferente. En
este sistema, se asignan valores específicos de "0" y "1"
a un subconjunto de q bits de cada dirección de
decodificador. Cuando se presenta al sistema una dirección de
entrada, se comparan los valores de los q bits de la
dirección que se presenta con los de cada decodificador de
dirección. Si la dirección que se presenta tiene los mismos valores
en esos q bits que un decodificador de dirección concreto,
se activa ese decodificador. El preámbulo de la reivindicación 1
está basado en este documento.
Es un objeto de la presente invención
proporcionar una estructura de memoria alternativa a las descritas
más arriba.
De acuerdo con un primer aspecto de la presente
invención, se plantea una configuración de memoria para su empleo
en un sistema informático, constando la memoria de una pluralidad de
decodificadores de dirección, a cada uno de los cuales se le asigna
un identificador dotado de un número predefinido de bits,
teniendo cada bit estados seleccionables primero y segundo,
y una memoria de datos dotada de una pluralidad de líneas de
palabra de una longitud predefinida, siendo cada uno de dichos
decodificadores de dirección susceptible de ser activado para
seleccionar una de entre la pluralidad de líneas de palabra, y
constando los decodificadores de dirección de medios para recibir
una dirección de entrada que tenga un número predefinido de
bits y de medios para comparar el identificador de un
decodificador de dirección con la dirección de entrada, donde la
memoria conste además de medios para activar un decodificador de
dirección si al menos un número mínimo predefinido de bits
puestos en el primer estado seleccionable en la dirección de entrada
se corresponden con bits puestos en el primer estado
seleccionable en el identificador del decodificador.
Los beneficios y ventajas proporcionadas por la
presente invención surgen en parte de la activación de los
decodificadores de dirección basándose en los bits puestos en
el primer estado seleccionable en una dirección de entrada,
mientras que se ignoran los bits puestos en el segundo estado
seleccionable. En cambio, los sistemas descritos más arriba
correspondientes al estado previo de la especialidad activan los
decodificadores de dirección comparando los bits puestos en
los estados seleccionables primero y segundo.
Preferiblemente, el medio para comparar el
identificador de un decodificador de dirección con la dirección de
entrada considera la correspondencia posicional entre bits
puestos en el primer estado seleccionable en la dirección de
entrada y bits puestos en el primer estado seleccionable en
los identificadores de los decodificadores.
Cada identificador de los decodificadores de
dirección puede tener un número igual de bits puestos en el
primer estado seleccionable. El medio para recibir una dirección de
entrada puede estar configurado para recibir direcciones que
contengan un número predefinido de bits puestos en el primer
estado seleccionable. Adecuadamente, el número predefinido de
bits puestos en el primer estado seleccionable en una
dirección de entrada es igual al número de bits puestos en
el primer estado seleccionable en cada uno de los identificadores de
decodificadores de dirección.
Preferiblemente, la memoria de datos comprende
una pluralidad de memorias de bit único, de tal modo que cada
bit de cada línea de palabra esté almacenado en una memoria
de un solo bit. La memoria de datos puede consistir en una
línea de entrada de datos que contenga un número igual de
bits que cada una de la pluralidad de líneas de palabra. La
configuración de memoria puede además constar de un medio para
escribir datos para copiar datos de la línea de entrada de datos a
líneas de palabra activadas por los decodificadores de dirección. La
línea de entrada de datos puede estar configurada para recibir
datos de entrada que contengan un número predefinido de bits
puestos en el primer estado seleccionable.
La configuración de memoria puede además constar
de un medio para sumar los valores almacenados en cada bit
de las líneas de palabra activadas por un decodificador de dirección
para generar un valor de nivel de activación para cada bit.
La configuración de memoria puede además constar de un medio para
generar una palabra de salida que contenga un número predefinido de
bits puestos en el primer estado seleccionable. Los
bits puestos en el primer estado seleccionable en la salida
pueden ser un número predefinido de bits que tengan el nivel
de activación más elevado.
La memoria puede ser implementada utilizando una
pluralidad de neuronas artificiales conectadas entre sí para formar
una red neuronal. La pluralidad de decodificadores de dirección
puede ser representada por una pluralidad de neuronas
decodificadoras de dirección, y la memoria de datos puede ser
representada por una pluralidad de neuronas de datos.
La invención proporciona también una
configuración de memoria de red neuronal para su empleo en un
sistema informático, como se indica en la reivindicación 15. La
memoria consta de una pluralidad de neuronas de decodificación de
dirección, cada una de las cuales está conectada a un número
predefinido de neuronas de entrada, y de una memoria de datos
dotada de una pluralidad de neuronas de datos, siendo susceptible de
activación cada una de dichas neuronas de decodificación de
dirección para seleccionar alguna de entre la pluralidad de las
neuronas de datos, y constando las neuronas de decodificación de
dirección de un medio para recibir una señal que represente un
disparo de una neurona de entrada a la que esté conectado, donde una
neurona de decodificación de dirección conste de medios para
activar neuronas de datos si se reciben señales de disparo de al
menos un número mínimo predefinido de neuronas de entrada a las que
esté conectada la neurona de decodificación de dirección.
En la práctica, cada neurona de decodificación
de dirección puede conectarse con cada neurona de entrada,
asignándose a cada una de estas conexiones un peso de "1" o
"0". En tal implementación, un peso de "0" tiene el mismo
efecto que el que no exista conexión entre una neurona concreta de
entrada y una neurona de decodificación de dirección. De esto modo,
únicamente las señales de disparo procedentes de neuronas de entrada
conectadas a una neurona de decodificación de dirección, de modo
que la conexión tenga un peso de "1", representarán una
conexión, tal como se describe en el párrafo anterior.
De acuerdo con un segundo aspecto de la presente
invención, se plantea un método para hacer funcionar una memoria
para su empleo en un sistema informatizado, constando la memoria de
una pluralidad de decodificadores de dirección, a cada uno de los
cuales se le asigna un identificador dotado de un número predefinido
de bits, teniendo cada bit estados seleccionables
primero y segundo, y una memoria de datos dotada de una pluralidad
de líneas de palabra de una longitud predefinida, siendo susceptible
de activación cada uno de dichos decodificadores de dirección para
seleccionar una de entre la pluralidad de líneas de palabra, donde
se facilite una dirección de entrada dotada de un número
predefinido de bits al decodificador de dirección, donde el
identificador de un decodificador de dirección se compara con la
dirección de entrada y los decodificadores de dirección se activan
si al menos un número mínimo predefinido de bits puestos en
el primer estado seleccionable en la dirección de entrada se
corresponden con bits puestos en el primer estado
seleccionable en el identificador del decodificador.
Los datos de entrada pueden ser representados en
una entrada de datos de la memoria de datos, y los datos pueden
escribirse a líneas de palabra activadas por los decodificadores de
dirección activados. Preferiblemente, el número mínimo predefinido
de bits se pone de tal modo que se activen menos de 100
decodificadores de dirección por cualquier dirección válida de
entrada. Más preferiblemente, el número mínimo predefinido de
bits se pone de tal modo que se activen menos de 50
decodificadores de dirección por cualquier dirección válida de
entrada. Lo más preferible es que el número mínimo predefinido de
bits se ponga de tal modo que se activen no más de 20 y no
menos de 11 decodificadores de dirección por cualquier dirección
válida de entrada.
La invención plantea además un medio portador
que lleva un medio de código legible para ordenadores para hacer
que un ordenador ejecute un procedimiento en conformidad con el
método expuesto más arriba, y un programa de ordenador para
realizar el método expuesto más arriba.
A continuación se describirá un ejemplo de
realización de la presente invención, a título de ejemplo, haciendo
referencia a los dibujos adjuntos, en los que:
la Figura 1 es una ilustración esquemática de
una configuración de memoria conocida en el estado previo dentro de
la especialidad;
la Figura 2 es una ilustración esquemática de
una configuración de memoria en conformidad con la presente
invención;
la Figura 3 es un trazado tridimensional que
muestra la capacidad de almacenamiento de una configuración concreta
de la memoria ilustrada en la figura 2;
la Figura 4 es un trazado de contorno del
trazado tridimensional de la figura 3;
la Figura 5 es el trazado de contorno de la
Figura 4 corregido para que tenga en cuenta decodificadores de
dirección activados independientemente;
la Figura 6 es una ilustración esquemática de
una red neuronal artificial que puede emplearse para implementar
una memoria en conformidad con la presente invención;
la Figura 7 es una ilustración esquemática de
una primera configuración para conexiones entre neuronas de entrada
y neuronas de decodificación de dirección en una red neuronal
artificial dotada de una forma general similar a la de la figura 6;
y
la Figura 8 es una ilustración esquemática de
una configuración para conexiones entre neuronas de entrada y
neuronas de decodificación de dirección alternativa a la mostrada en
la Figura 7.
La Figura 1 ilustra la configuración de
direcciones descrita por Kanerva y esbozada más arriba. Se facilita
una pluralidad de líneas de direcciones 1 en las que puede
transmitirse una dirección. La dirección es un número binario, y
cada línea de direcciones 1 transmite un bit de la dirección,
de modo que hagan falta n líneas para representar una
dirección de n bits. Las líneas de dirección constituyen la
entrada a un sistema de decodificadores de dirección 2, y cada
decodificador de dirección 2 tiene un identificador en la forma de
un número binario de n bits. Los decodificadores de dirección
2 están conectados a una memoria de datos 3, que consta de un
número de líneas de palabra para almacenar datos. Cada línea de
palabra tiene una capacidad de almacenamiento de M bits.
Cada bit de cada línea de palabra se almacena en el contador
4. Los datos que han de escribirse a la memoria de datos se
transmiten en una línea de entrada 5. Los datos leídos de la memoria
pasan por líneas de datos 8 a bloques sumadores 6 y son objeto de
salida desde los bloques sumadores 6 por líneas de salida de datos
7.
Típicamente, el número de líneas de dirección 1
es de la magnitud de mil, de modo que a los decodificadores de
dirección 2 se les presente un número binario de mil bits.
Dado que con un número binario de mil bits puede
representarse un número muy grande de direcciones (aproximadamente
10^{301}), no resulta práctico tener una línea aparte de palabra
para almacenar datos para cada dirección posible. En consecuencia,
se implementa un gran muestreo aleatorio de direcciones dentro del
espacio de direcciones posible. Típicamente se implementa un millón
de direcciones, y cada una de estas se asigna a un decodificador de
dirección 2. Por esta razón se describe como "dispersa" la
memoria propuesta por Kanerva, pues el millón (10^{6}) de
direcciones de decodificación está distribuido de forma dispersa
dentro del espacio disponible para direcciones (10^{301}
direcciones).
Cuando se usa, una dirección se transmite por
las líneas de dirección 1 y es recibida por los decodificadores de
dirección 2. Se efectúa una comparación entre la dirección
transmitida y la dirección de cada decodificador de dirección. Esta
comparación se realiza empleando un cálculo de distancia de Hamming,
que computa cuántos bits de las direcciones transmitidas son
diferentes a las direcciones asociadas con cada decodificador de
dirección 2. El cálculo de la distancia de Hamming se presenta en la
ecuación (1):
(1)H(x,y) =
\sum\limits^{N}_{i=1} \left\bracevert x_{i} - y_{i}
\right\bracevert
donde:
x es un vector binario dotado de N
elementos;
y es un vector binario dotado de N elementos;
y
H es la distancia de Hamming entre x e y, siendo
el número de posiciones de bits en los que x_{i} \neq
y_{i}.
Se activan los decodificadores dentro de una
distancia predefinida de Hamming r de la dirección
transmitida x. Es posible imaginar esta región de activación
para cada dirección como una esfera centrada en x y dotada
de un radio r. Por ejemplo, Kanerva ha mostrado que si cada
dirección tiene 1000 bits, y la distancia predefinida de
Hamming r es 451, entonces la región esférica de activación
contiene aproximadamente \frac{1}{1000} direcciones asociadas con
los decodificadores de dirección. Cuando se usa, un procesador
computa una distancia de Hamming entre cada dirección de
decodificación y una dirección de entrada presentada. Si esta
distancia es menor que r para un decodificador de dirección
concreto, entonces el decodificador se activa.
A continuación se describirán detalles de un
proceso para escribir datos a memoria en el sistema propuesto por
Kanerva. Cuando se activa un decodificador de dirección dado 2, los
datos presentados en la entrada de datos 5 de la memoria se
escriben a la línea de palabra que está conectada al decodificador
de direcciones activado. Puesto que la activación de un
decodificador de dirección se inicia siempre que se da una dirección
que esté dentro de la distancia predefinida de Hamming de ese
decodificador de dirección, los datos se escriben a un número de
líneas diferentes de palabra. De modo similar, hay varias
direcciones diferentes que activan el mismo decodificador de
dirección. Esto quiere decir que los datos se escribirán a una línea
de palabra concreta para varias direcciones diferentes de entrada
para escritura.
Cada línea de palabra consta de M contadores,
cada uno de los cuales almacena un único bit de datos. Los
contadores de una línea dada de palabra permiten el acúmulo lineal
de varias palabras de M bits almacenadas en esa línea de
palabra. Si se presenta un "1" en un bit concreto de una
línea de palabra, se incrementa el correspondiente contador 4. Si
se presenta un "0" en un bit concreto, disminuye el
contador 4 asociado con ese bit.
Debería notarse que los contadores tiene una
capacidad finita, y una vez se haya alcanzado esta capacidad
mediante escrituras sucesivas de datos, los intentos adicionales de
escritura no surtirán efecto alguno. Por ejemplo, si el contador ha
alcanzado su valor máximo mediante escrituras sucesivas de unos,
escribir otro "1" a ese contador no puede tener efecto alguno.
De modo similar, si el contador ha alcanzado su valor mínimo
escribiendo sucesivamente ceros, escribir otro "0" a ese
contador no puede tener efecto alguno. Normalmente es suficiente
que se empleen contadores de 8 bits, cada uno dotado de un
intervalo de \pm127. En la práctica, puede resultar suficiente
implementar contadores de 2 o de 4 bits. Sin embargo, debería
notarse que los contadores ascendentes y descendentes de cualquier
longitud de bits suponen una recarga considerable en la
memoria propuesta por Kanerva.
Los decodificadores de dirección 2 están
configurados de tal modo que para un millón de decodificadores de
dirección 2, una dirección al azar esté dentro de la distancia
predefinida de Hamming de aproximadamente 1000 de los
decodificadores. Por lo tanto, para una dirección aleatoria de
entrada, se escribirán datos de entrada a 1000 líneas de palabra
dentro de la memoria de datos 3, incrementándose o decrementándose
los contadores apropiados 4 de cada línea de palabra tal como se ha
descrito más arriba.
A continuación se describirán detalles de un
proceso para recuperar datos de la memoria en el sistema propuesto
por Kanerva.
Se recuperan datos de la memoria facilitando una
dirección de entrada en las líneas de dirección 1. Si esta
dirección de entrada es idéntica a la empleada para escribir los
datos que han de recuperarse, se activarán los mismos
decodificadores de dirección, y se recuperarán los datos de las
debidas líneas de palabra.
Si se presenta una dirección cercana a la
dirección usada para escribir, se activarán para leer los datos
muchos de los decodificadores de dirección 2 activados para escribir
los datos. Sin embargo, debería notarse que no se activarán algunos
decodificadores activados para escribir, y que entonces se activarán
otros que no estaban activados con anterioridad. Esto lleva a que
haya presente ruido en los datos recuperados. Suponiendo que haya
un número suficiente de decodificadores en común entre los
procedimientos de lectura y de escritura, siguen saliendo los datos
correctos de los sumadores 6, y los efectos del ruido se mitigan.
Esto constituye una característica ventajosa de la memoria descrita
por Kanerva.
Los valores mantenidos en los contadores 4 de
cada línea de palabra conectada a un decodificador de dirección
activado son objeto de salida por las líneas de datos 8 durante un
ciclo de lectura. Los valores que salen por cada línea de datos 8
son sumados por un sumador 6. Los sumadores cuya salida excede un
umbral predefinido generan una salida de "1" por las líneas de
salida de datos 7, y los que no exceden el umbral generan una
salida de "0".
Kanerva ha determinado que la estructura y la
función de la memoria significa que de los mil bits de una
dirección de entrada, solo hace falta que sean correctos
seiscientos bits en una dirección de lectura para permitir
una recuperación satisfactoria de esa misma dirección de entrada.
Por ejemplo, si un bit está puesto a "1" en mil de las
líneas de palabra durante la escritura de los datos, se esperaría
que el sumador 6 conectado a los contadores que mantienen valores
para ese bit sacaría 1000. Sin embargo, si solamente se
recupera, mediante una dirección de recuperación, una mayoría de
las mil líneas de palabra a las que se escribieron datos, el
sumador en general sacará un valor que se interprete correctamente.
Así, la memoria propuesta por Kanerva tiene propiedades útiles de
corrección de errores y permite que se mitiguen los efectos del
ruido descritos con anterioridad.
Un código N de M es un código en el que N
bits de un número binario de M bits estén puestos a
"1". Por lo tanto, cualquier código N de M consta de N
bits puestos a "1", y de M-N bits
puestos a "0". Cada valor representado por el código difiere
en el orden en el que aparecen los unos y los ceros. Los códigos N
de M se cronometran solos, por cuanto cuando se han recibido los N
unos se sabe que el código está completo (o sea, se ha recibido),
pero si se han recibido menos de N unos, se sabe que el código está
incompleto.
La configuración de memoria de la presente
invención toma las propiedades dispersas distribuidas de la memoria
de la figura 1, correspondiente al estado previo de la especialidad,
e introduce varias aplicaciones de los códigos N de M para dotar a
la memoria de un número de mejoras que se exponen de manera más
detallada más abajo. Una configuración de memoria que constituye un
ejemplo de realización de la presente invención se ilustra a alto
nivel en la figura 2. Puede verse que la configuración general es
similar a la de la figura 1, y se emplean numerales homólogos de
referencia cuando resulta apropiado. Únicamente se analizarán aquí
con más detalle las diferencias entre la memoria de la figura 1 y
la facilitada por la invención.
En general, la memoria consta de W
decodificadores de dirección 2, w de los cuales están
activados para una lectura o escritura concretos. Cada uno de los
W decodificadores de dirección consta de una dirección de
A bits, y cada una de estas direcciones consta de a
bits que tienen un valor de "1". Por lo tanto, la dirección
de cada decodificador de dirección es un código "a de A".
Cuando se introduce una dirección a los decodificadores de
dirección 2, tiene i bits puestos al valor de "1" y
A-i bits puestos al valor "0". Por lo
tanto, cualquier dirección de entrada es un código "i de
A". En algunos ejemplos de realización ocurre que todas las
direcciones de entrada tienen un número de bits con valor
"1" igual al de las direcciones de los decodificadores (i =
a). Sin embargo, hay normalmente un beneficio marginal en
permitir que i sea independiente de a.
Cuando los decodificadores de dirección 2
reciben una dirección de entrada, se efectúa una comparación entre
el código a de A de cada decodificador y el código i de A de
la dirección de entrada. Cada decodificador de dirección tiene un
umbral T asociado. El umbral T determina el número de
unos que deben coincidir entre la dirección de entrada y la
dirección del decodificador.
A continuación se presentarán ejemplos
simplificados del procedimiento de activación de los
decodificadores. En estos ejemplos, se da por sentado que hay tres
decodificadores de dirección (A, B y C), dotado cada uno de un
código 3 de 8. Las direcciones de estos decodificadores son como
siguen:
- A:
- 01001001
- B:
- 10001010
- C:
- 01101000
En la descripción que sigue, cada una de las
direcciones va indiciada de izquierda a derecha, empezando en un
índice 0.
En un primer escenario, el umbral para cada
decodificador es tal que al menos dos bits de una dirección
de entrada deben coincidir con al menos dos bits de la
dirección de decodificación. Por lo tanto, cuando se les
presente:
Dirección1:
\hskip1cm01001000
\hskip1cm(un código 2 de 8)
puede verse que los decodificadores
A y C se activan, ya que los bits 1 y 4 de la dirección de
entrada son unos y los bits 1 y 4 de las direcciones de los
decodificadores A y C también son unos. Por lo tanto, se supera el
umbral de dos bits coincidentes. El decodificador B no se
activa, pues únicamente es coincidente uno de los unos (el
bit 4) entre la Dirección 1 y el decodificador
B.
De modo similar, cuando se les presente una
dirección
Dirección2:
\hskip1cm01000011
\hskip1cm(un código 3 de 8)
y suponiendo que el umbral T
permanezca inalterado, puede verse que la Dirección2 tiene unos en
los bits 1 y 7 y que el decodificador A tiene unos en las
mismas posiciones, lo que significa que se activará el decodificador
A. Los decodificadores B y C no se activan, puesto que únicamente
coincide un bit puesto a "1" de cada decodificador con
un "1" en la
Dirección2.
El procedimiento de activación descrito más
arriba activa w decodificadores de un total de W. Por
lo tanto, el modelo de activación es un código w de
W. Esto es similar al proceso descrito más arriba con
referencia a la figura 1, aunque es importante notar que el umbral
T es preferible que esté puesto para garantizar que se
dispare un número óptimo o casi óptimo de decodificadores de
dirección durante un ciclo dado de lectura o escritura. Se ha
descubierto que este número óptimo típicamente es mucho menor que el
número activado en la memoria propuesta por Kanerva. El inventor se
ha dado cuenta de que los datos pueden ser leídos o escritos a la
memoria con suficiente precisión empleando un número menor de
activaciones de decodificador, y que activar mil decodificadores,
como en el sistema de Kanerva,
resulta innecesario. Más abajo se presenta un análisis más detallado de esta característica del sistema de memoria.
resulta innecesario. Más abajo se presenta un análisis más detallado de esta característica del sistema de memoria.
A su vez, los w decodificadores activados
seleccionan w líneas de palabra de las que han de leerse
datos o a las que han de escribirse. Por eso, la comunicación entre
los decodificadores de dirección 2 y las líneas de palabra de la
memoria de datos 3 es un código w de W (o sea,
w decodificadores activados de entre W decodificadores
en total). Debería apreciarse que normalmente no resulta práctico
garantizar que w sea constante, dado el procedimiento de
activación que implica decodificadores de dirección activados
independientemente, tal como se ha descrito más arriba. La
comunicación de este código w de W de los
decodificadores de dirección 2 a la memoria de datos 3 se denota
con la flecha 9 en la figura 2.
Los w decodificadores activados
seleccionan w líneas de palabra. Se presentan datos de
escritura para escribir datos a la memoria de datos 3, y se leen
datos de lectura de la memoria de datos 3. La lectura o la escritura
es efectuada en cada una de las w líneas activadas de
palabra. Se considera que los datos de entrada 5 representan un
código "d de D", donde cada línea de palabra consta de D
bits, d de los cuales están puestos a unos. Puesto
que cada entrada es un código "d de D", cada operación de
escritura de datos escribirá datos que contengan d unos.
Cada bit de cada línea de palabra es
almacenado en una memoria convencional binaria de bit único.
Todos los bits de todas las líneas de palabra están puestos
inicialmente a "0". Cuando deba escribirse un "1" a un
bit, el valor de "0" es sustituido por un "1". Una
vez que un bit se pone a "1", nunca vuelve a ponerse a
"0", ni siquiera si un ciclo subsiguiente de escritura intenta
escribir "0" en ese bit. O sea, una vez que una
operación de escritura de datos ha puesto un valor, cualquier
intento adicional en este valor es, simplemente, ruido, y, por lo
tanto, puede ser descartado. Este procedimiento de almacenamiento
está basado en la naturaleza unipolar de códigos N de M, y las
razones de su fiabilidad se dan más abajo.
Cuando han de leerse datos de la memoria de
datos 3, se presenta una dirección a los decodificadores de
dirección 2, lo que da como resultado que se activen w
decodificadores de dirección. A su vez, estos w
decodificadores de dirección activan w líneas de palabra en
la memoria de datos 3. Cada palabra contiene D bits, y
se suma el contenido de cada bit de cada línea activada de
palabra, de modo que dé D salidas. En lo sucesivo
denominaremos estas sumas niveles de activación. Se sabe que todos
los datos de escritura constituyen un código "d de D", por lo
que también será cierto que los datos leídos de memoria constituyan
un código "d de D".
Si un solo ciclo de escritura escribe un valor
en una dirección concreta, y esta misma dirección es presentada por
una operación de lectura de datos (sin un ciclo intermedio adicional
de escritura), puede esperarse que el nivel de activación de cada
bit puesto a "1" en los datos de escritura sea w,
mientras que el nivel de activación de cada bit puesto a
"0" en los datos de escritura será cero. Por lo tanto, puede
verse con facilidad qué bits deberían ponerse a "1" en
los datos de salida.
Sin embargo, si dos ciclos de escritura escriben
datos a direcciones de entrada de escritura diferentes, puede
ocurrir que algunos de los decodificadores de dirección activados
durante el primer ciclo de escritura se activen también durante el
segundo ciclo de escritura. O sea, algunas de las líneas de palabra
dentro de la memoria de datos 3 contendrán algunos bits
puestos a "1" como resultado del primer ciclo de escritura, y
algunos bits puestos a "1" como resultado del segundo
ciclo de escritura.
Cuando se presenta una dirección igual a la de
la primera dirección de escritura a los decodificadores de
dirección, el procedimiento de lectura de datos activa w
líneas de palabra, y calcula los niveles de activación, tal como se
ha descrito más arriba. Dada la acción del ciclo de escritura
intermedio, estos niveles de activación contendrán algunos valores
derivados de la segunda escritura, o sea, algunos bits que
fueron puestos a "0" en el primer ciclo de escritura tendrán
ahora un nivel de activación distinto de cero, aunque estos niveles
de activación deberían ser menos que el de los bits puestos a
"1" durante el primer ciclo de escritura. O sea, tendrán
niveles de activación distintos de cero más de d
bits.
Como se sabe que los datos de salida deberían
ser un código "d de D", se aplica un algoritmo modificado de
tipo "el ganador se queda con todo" (winner takes all,
WTA) para determinar los d bits dotados del nivel de
activación más elevado. Lo más probable es que estos d bits
sean los que fueron puestos a "1" durante la escritura de
datos a esa dirección, y, por lo tanto, son puestos a "1" en
los datos de salida.
Un algoritmo WTA normalmente determina un único
ganador de entre una colección de datos. En este caso, el algoritmo
modificado, denominado en lo sucesivo algoritmo k-WTA,
determina d valores que tienen el nivel de activación más
elevado, y los bits que tienen estos valores son puestos a
"1" en la salida. O sea, estos d bits son los
"ganadores" en el algoritmo. Puede implementarse un algoritmo
k-WTA ordenando los D valores empleando cualquier
algoritmo adecuado de ordenación, y seleccionando los d
valores más altos de entre esos valores orde-
nados.
nados.
Es importante notar que la aplicación de la
codificación de N de M a la memoria de datos permite que se emplee
este tipo de proceso de lectura, ya que se sabe cuántos unos
deberían aparecer en los datos de salida. En el sistema propuesto
por Kanerva, donde los datos escritos a la memoria son binarios, no
hay manera de saber cuántos unos deberían aparecer en los datos de
salida, y, en consecuencia, Kanerva utiliza contadores como
elementos de almacenamiento para acumular datos escritos a cada
bit, sumándose el contenido de los contadores, y aplicándose
un umbral para generar una salida.
Se notó con anterioridad que una memoria de un
solo bit nunca se incrementa más allá del "1". Esto se
debe a que el valor en un bit concreto sólo puede ser en un
momento dado "1" o "0". Por lo tanto, aumentar más allá
del "1" debe significar que se almacena algo de ruido en ese
bit, lo que resulta indeseable. Este ruido es generado por
dos direcciones de escritura que activen una línea de palabra común.
En el caso presente, el algoritmo k-WTA puede identificar
correctamente qué bits deberían ponerse a "1" sin la
necesidad de contadores que puedan incrementarse más allá del
"1". La implementación de Kanerva de contadores ascendentes y
descendentes, y de un umbral cero ya no es necesaria para
determinar si un bit concreto de salida debería ponerse a
"0" o "1". Por ello, la presente invención proporciona
una memoria en la que los datos se almacenan en memorias
convencionales de un solo bit y no en contadores. Esto da
como resultado un ahorro importante en el coste de implementación.
Además, desarrollos recientes han dado como resultado que estén
disponibles a bajo precio y eficientemente grandes cantidades de
memoria adecuada (RAM).
Una medida común de la eficacia de una memoria
es su capacidad de almacenamiento en función del número de
bits de información que pueden almacenarse con utilidad para
cada bit de la memoria. Usando esta medida, un sistema que
sea un ejemplo de realización de la presente invención confiere
ventajas considerables con respecto al propuesto por Kanerva. La
razón principal de esta mayor capacidad de almacenamiento surge de
escribir datos a un número menor de líneas de palabra. El inventor
ha descubierto que, típicamente, mientras que Kanerva escribía
datos a unas 1000 líneas de palabra, pueden escribirse datos a un
número mucho menor de líneas de palabra a la vez que se conservan
las ventajas de la memoria de Kanerva, y obteniendo mayor eficiencia
de almacenamiento. Por ejemplo, para las características de memoria
descritas más abajo, se prefiere que se escriban datos a menos de
100 líneas de palabra, se prefiere más que se escriban datos a menos
de 50 líneas de palabra, pero lo más ventajoso a nivel operativo es
que se escriban datos a entre 11 y 20 líneas de palabra. A
continuación se presentará un análisis de la capacidad de
almacenaje, junto con las ecuaciones para determinar el número
óptimo de líneas de palabra, w, a las que deberían escribirse
datos.
La memoria de datos 3 es una forma de memoria de
matriz de correlación. Las matrices de correlación se han
estudiando extensamente en, por ejemplo, Kohonen, T. "Correlation
Matrix Memories" [Memorias de matriz de correlación], IEEE
Transactions Computers [Actas IEEE sobre ordenadores]
C-21(4), abril de 1972, páginas
353-359, y Turner, M. y Austin, J. "Matching
Performance of Binary Correlation Matrix Memories" [Rendimiento
de adaptación de las memorias binarias de matriz de correlación],
Neural Networks [Redes neuronales] 10(9), 1997, páginas
1637-1648. Se presenta aquí un bosquejo de este
análisis como base para la derivación de w.
Se da por sentado que las entradas de
direcciones y de datos están distribuidas de manera uniforme por sus
espacios respectivos. La memoria de datos 3 contiene inicialmente
ceros en cada bit. Se emplea la medida de ocupación
h, donde h representa la probabilidad de que un
bit arbitrario de la memoria de datos se ponga a "1" en
algún punto del proceso de escritura. Después de Z
operaciones de escritura, la ocupación esperada viene dada por la
ecuación
(2):
(2):
\vskip1.000000\baselineskip
(2)h = 1 -
\left[ 1 - \left(\frac{w}{W} \cdot
\frac{d}{D}\right)\right]^{Z}
El término \left(\frac{w}{W} \cdot
\frac{d}{D}\right) de la ecuación (2) da la probabilidad de
poner a "1" un bit concreto dentro de la memoria de
datos en una sola operación de escritura. Restar este término de 1
da un valor para la probabilidad de no poner ese bit a
"1" en una operación concreta. Esta resta se eleva luego a la
potencia de Z para que represente el efecto de Z
operaciones de escritura. Así el término \left[ 1 -
\left(\frac{w}{W} \cdot \frac{d}{D}\right)\right]^{Z} proporciona
una probabilidad de no poner un bit arbitrario a "1"
después de Z operaciones de escritura. Por lo tanto, para
derivar h, la probabilidad de poner un bit arbitrario
a "1" después de Z operaciones, este término se resta de
1, lo que da la ecuación (2).
Puede verse de la ecuación (2) que h es
inicialmente 0, puesto que Z es 0, y la parte derecha de la
ecuación se simplifica a 1 - 1. h se incrementa de forma
monótona hacia 1 según se van almacenando más datos en la
memoria.
La ecuación (2) puede volver a escribirse usando
logaritmos, de modo que da:
\vskip1.000000\baselineskip
(3)ln(1
- h) = Zln \left[1 - \left(\frac{w}{W} \cdot
\frac{d}{D}\right)\right]
El término \left(\frac{w}{W} \cdot
\frac{d}{D}\right) es pequeño, dado que típicamente d
es mucho menor que D, y que w es típicamente mucho
menor que W. Por lo tanto, el logaritmo natural de la parte
derecha de la ecuación puede aproximarse al primer término de la
serie de Taylor. Esto da una expresión para el número de elementos
de datos almacenados, como se presenta en la ecuación (4).
(4)Z =
-ln(1 - h) \cdot \frac{W}{w} \cdot
\frac{D}{d}
La información total almacenada en la memoria
después de Z operaciones de escritura puede identificarse
considerando el número de símbolos que pueden representarse
mediante un código "d de D". Este contenido de información
viene dado en la ecuación (5).
(5)I(Z)
= Z \cdot log_{2} [C^{d}_{D}] \
bits
Podemos computar la eficiencia de almacenamiento
comparando la capacidad de información dada en la ecuación (5) con
el número de ubicaciones binarias de almacenamiento en la memoria de
datos para dar la expresión de la ecuación (6).
(6)\eta(Z) =
\frac{I(Z)}{D \cdot W} = \frac{Z}{D \cdot W} \cdot log_{2}
[C^{d}_{D}]
donde \eta(Z) es la
eficiencia de almacenamiento de la
memoria.
Para un valor grande de D, el término
combinatorio de la ecuación (6) puede aproximarse con:
(7)log_{2}[C^{d}_{D}] = - D \cdot
\left[\frac{d}{D} \cdot log_{2} \frac{d}{D} + \left(1 -
\frac{d}{D}\right) \cdot log_{2} \left(1 -
\frac{d}{D}\right)\right]
Para una memoria dispersa donde d es
mucho menor que D, reemplazar las ecuaciones (7) y (4) en la
ecuación (6) da, tras simplificar:
(8)\eta(Z) = -ln(1
- h) \cdot \frac{1}{w} \cdot \left[log_{2}\frac{D}{d} +
1\right]
donde \eta(Z) es la
eficiencia de almacenamiento de la
memoria.
Esto muestra que la memoria más eficiente, para
una ocupación h dada, y bajo cero condiciones de error es
aquella en la que los datos se escriben como código uno de D
(conocida también como código de "uno caliente"), y en la que
el menor número de decodificadores de dirección se dispare para una
dirección de entrada dada. O sea, d = 1 y w = 1. Sin
embargo, poner d y w de acuerdo con estos criterios
afectará adversamente a la robustez de la memoria bajo una
capacidad elevada o errores de entrada, como se describe más
abajo.
Para considerar la robustez de la memoria de
datos, se considera la recuperación de una sola palabra de datos
siguiendo la escritura de Z palabras de datos, donde la
dirección de recuperación se presenta sin error. Los w
decodificadores de dirección activados por la dirección de lectura
serán los mismos w decodificadores de dirección activados
durante el proceso de escritura de datos. Si el dato escrito a un
bit concreto fue un "1", entonces cada una de las
w líneas de palabra debería almacenar un "1" en ese
bit para dar un nivel de activación en conformidad con la
ecuación (9).
(9)E(X_{1}) =
w
donde E(X) es el nivel de
activación.
Sin embargo, si el valor del dato escrito a un
bit concreto fue un "0", el nivel de activación esperado
será:
(10)E(X_{0}) = w \cdot
h
donde h se define igual que
antes.
Puesto que h es inferior a 1, se puede
esperar que la memoria recupere los datos escritos, puesto que los
bits puestos a "1" tendrán un nivel de activación más
elevado que los puestos a "0", como puede verse en las
ecuaciones (9) y (10). Sin embargo, el nivel de activación para un
bit puesto a "0" está sujeto a una variación
estadística, y con alguna probabilidad (pequeña), todos los pesos
habrán sido puestos a "1" por otras escrituras de datos. En
este caso, el nivel de activación de una salida que debería ser
"0" será la misma que la de una salida que debería ser
"1". Esto da una posibilidad de una condición de error de
"falso 1". En ausencia de errores de escritura, puede verse
que no hay posibilidad alguna de errores de "falso 0".
Un error de "falso 1" sucede únicamente si
cada bit que contribuye a una salida de "0" está puesto
incorrectamente a "1". Así, la probabilidad de que un
bit "0" se lea incorrectamente viene dada por la
ecuación (11).
(11)p(x_{0} < w) = [1 -
h^{w}]
O sea, h^{w} da un valor para la
probabilidad de que los w bits contribuyan a que el nivel de
activación se haya puesto incorrectamente a "1". Por eso,
restar este valor de 1 da la probabilidad de que se lea
correctamente un valor "0", que es la probabilidad de que
w bits no se hayan puesto incorrectamente a
"1".
Una palabra de datos es leída correctamente si
cada uno de sus D - d bits puestos a 0 se lee correctamente.
La probabilidad de leer correctamente una palabra viene dada en la
ecuación (12):
(12)p(palabra \ de \ datos
\ correcta) = [1 -
h^{w}]^{D-d}
O sea, la expresión de la ecuación (11) elevada
a la potencia de D - d, dado que han de recuperarse un total de D -
d bits.
Si se han escrito Z palabras de datos a
la memoria, la probabilidad de que cada palabra de datos pueda
leerse correctamente viene dada por la ecuación (13):
(13)P_{c} = [1
- h^{w}]^{Z \cdot (D -
d)}
Según va aumentando h, la probabilidad de
recuperación sin error disminuye hacia cero.
Reescribir la ecuación (13) usando logaritmos
da:
(14)ln(P_{c}) = Z
\cdot(D - d) \cdot ln(1 -
h^{w})
Puesto que h^{w} es muy pequeño, donde
w es considerablemente mayor que 1, el primer término de la
serie de Taylor da una aproximación cercana para el logaritmo de la
parte derecha de la ecuación (14), de modo que da:
(15)ln(P_{c}) = - Z
\cdot(D - d) \cdot
h^{w}
Para configurar de manera óptima la memoria de
datos, se considera que el número de decodificadores de dirección
W y la longitud de palabra D son fijos.
También se considera que la codificación de
datos ("d de D") es fija. Para maximizar la probabilidad de
recuperación correcta de datos, puede verse en la ecuación (13) que
h^{w} o que, equivalentemente, (w ln h)
deberían minimizarse. Por lo tanto, buscamos una solución
donde:
(16)\frac{d}{dw}(w \ ln \ h) = ln
\ h + \frac{w}{h} \cdot \frac{dh}{dw} =
0
\vskip1.000000\baselineskip
Recordando la ecuación (4):
(4)Z =
-ln(1 - h) \cdot \frac{W}{w} \cdot
\frac{D}{d}
\vskip1.000000\baselineskip
que puede reescribirse
como:
(17)w \cdot
\frac{Z \cdot d}{W \cdot D} = - ln(1 -
h)
\vskip1.000000\baselineskip
Diferenciando la ecuación (17) con respecto a
w y sustituyendo un valor de Z obtenido de la ecuación (17)
da:
\vskip1.000000\baselineskip
(18)\frac{dh}{dw} = - \frac{(1 -
h) \cdot ln(1 -
h)}{w}
Sustituyendo el valor de \frac{dh}{dw} de la
ecuación (18) en la ecuación (16) da la siguiente fórmula para
h:
\vskip1.000000\baselineskip
(19)ln \ h +
\frac{w}{h} \cdot \left[ - \frac{(1 - h) \cdot ln(1 - h)}{w}
\right]=
0
Simplificando, da:
(20)ln \ h +
\frac{1}{h} \cdot [-(1 -h) \cdot ln(1 -h)] =
0
\vskip1.000000\baselineskip
Multiplicando ambos lados de la ecuación (20)
por h:
\vskip1.000000\baselineskip
(21)h \ ln \ h
-(1 - h) \cdot ln(1 - h) =
0
\vskip1.000000\baselineskip
La ecuación (21) tiene la solución h =
0,5.
Se ha mostrado previamente que el máximo de
contenido de información de una memoria de matriz de correlación se
da cuando h = 0,5 (véase Nadal, J. P., y Toulouse, G.,
"Information Storage in Sparsely Coded Memory Nets"
[Almacenamiento de información en redes de memoria codificada de
forma dispersa], Network 1 (1990), páginas 61 a 74). La
optimización de h presentada más arriba no estaba interesada
en cuánta información puede almacenar la memoria, sino en cuánta
puede registrarse fiablemente. El contenido máximo recuperable
coincide, por lo tanto, con el contenido máximo.
Sustituyendo un valor de Z de la ecuación
(4) en la ecuación (15) da:
\vskip1.000000\baselineskip
(22)h^{-w}
\cdot w = \frac{ln(1 - h)}{ln(P_{c})} \cdot W \cdot
\frac{D}{d} \cdot(D -
d)
Usando el valor óptimo de h deducido más
arriba, o sea, h = 0,5, y dado que W, d y D son
conocidos, y usando una probabilidad aceptable de recuperación sin
error P_{c}, puede computarse un valor de w.
Sin embargo, en algunas circunstancias, una
recuperación totalmente libre de errores (como se ha dado por
sentada hasta el momento) resulta un requerimiento demasiado
restrictivo, dada la naturaleza de la memoria. Una definición
alternativa para la capacidad de información de la memoria es
establecer el número máximo de elementos de datos que pueden
recuperarse sin error, permitiendo que algunos otros elementos
puedan recuperarse con errores.
Recordando la ecuación (12):
(12)p(palabra \ de \ datos
\ correcta) = [1 -
h^{w}]^{D-d}
es posible derivar una expresión
para el número de elementos de datos que pueden ser recuperados con
exactitud, mientras que otros se recuperarán con errores
E_{c}. Esta expresión es dada en la ecuación
(23):
\vskip1.000000\baselineskip
(23)E_{c} = Z
\cdot[1 - h^{w}]^{D -
d}
donde Z es el número de
palabras contenidas en la
memoria.
Para un valor dado de Z, w varía para
maximizar E_{c}, y su valor máximo se da cuando h =
0,5.
Si se escriben datos a memoria hasta que cada
nueva entrada cause uno o más errores adicionales de lectura, se ha
alcanzado la capacidad máxima útil de la memoria. El punto se
alcanza cuando:
(24)\frac{dE_{c}}{dZ} =
0
Reescribiendo la ecuación (23) como:
(25)ln \ E_{c}
= (D - d)ln \ Z \cdot[1 -
h^{w}]
Diferenciando la ecuación (25) da:
(26)\frac{1}{E_{c}} \cdot
\frac{dE_{c}}{dZ} = \frac{1}{Z} - \frac{(D - d)}{(1 - h^{w})} \cdot
ln \ h \cdot h^{w} \cdot \frac{dw}{dZ} =
0
Reescribiendo la ecuación (4):
(27)wZ =
-ln(1 - h) \cdot
\frac{WD}{d}
Puede verse en la ecuación (27) que para una
h constante, wZ es constante, dado que W, D y
d son fijos. Por lo tanto:
(28)\frac{dw}{dZ} = -
\frac{w}{Z}
Sustituyendo la ecuación (28) en la ecuación
(26) da:
(29)\frac{(h^{-w} - 1)}{w} = -(D
- d) \cdot ln \
h
La ecuación (29) da un valor alternativo para el
w óptimo, cuando el objetivo es recuperar correctamente
tantas palabras como resulte posible, permitiendo la recuperación
de algunas palabras con errores. El valor de w que puede
obtenerse de la ecuación (29) es menor que el obtenido de la
ecuación (22). Esto refleja el hecho de que activar un número mayor
de decodificadores de dirección (o sea, aumentando w), da
como resultado una memoria que tiene menos errores pero menor
capacidad. A la inversa, un valor menor de w da como
resultado una memoria que produce más errores pero que tiene una
capacidad mayor, ya que cada operación de escritura de datos pone
valores en menos líneas de palabra de la memoria de datos. En ambos
casos, el máximo de información
\hbox{extraíble se produce
cuando h = 0,5.}
El inventor, habiendo deducido las expresiones
presentadas más arriba, ha determinado que una memoria que sea un
ejemplo de realización de la presente invención puede ser muy
mejorada si w se pone de modo que esté entre los valores
determinados por las ecuaciones (22) y (29).
A continuación se describirá el análisis
descrito con anterioridad haciendo referencia a las figuras 3 y 4.
La figura 3 muestra un trazado tridimensional de la ecuación (23).
Un eje etiquetado como Z representa el número de elementos
escritos a la memoria; un eje etiquetado como eje w
representa el número de decodificadores de dirección activados por
una operación de lectura o escritura; y un eje etiquetado como
E_{c} representa la cantidad dada por la ecuación (23). La
figura 4 es un trazado de contorno del trazado de la figura 3, donde
los ejes w y Z representan las mismas cantidades que
los ejes respectivos de la figura 3. El sistema ejemplar ilustrado
en las gráficas es uno en el que hay 4096 decodificadores de
dirección (o sea, W = 4096), y los datos se almacenan usando
un código 11 de 256 (o sea, d = 11 y D = 256). Otras
configuraciones muestran resultados similares.
Refiriéndonos primero a la figura 3, puede verse
que el número de palabras E_{c} que pueden recuperarse
correctamente aumenta según se van escribiendo más datos a memoria
(o sea, según aumenta Z), pero desciende bruscamente cuando
Z se hace demasiado grande (una formación 10 en forma de
acantilado). O sea, tras un número de escrituras de datos, la
memoria se satura y el número de palabras que puede recuperarse
correctamente baja señaladamente.
A continuación se presentará un análisis
adicional haciendo referencia a la figura 4. Las líneas continuas
de contorno muestran que el número esperado de palabras correctas
(E_{c}) varía con el número de entradas almacenadas
(Z) y con el número de decodificadores de dirección activados
(w). El valor pico de E_{c} es 5332, con una tasa
de error de aproximadamente el 11%. Esta capacidad pico es mayor que
el número de líneas de palabra (W = 4096). La línea central
de contorno 11 se dibuja por E_{c} = 5000, y se dibujan
contornos subsiguientes en incrementos de 500. La cara sur del
trazado es casi plana y E_{c} está muy cerca de Z,
salvo en la cara oeste del trazado, donde w es pequeño. El
rendimiento desciende rápidamente si w es demasiado pequeño,
o bien si Z es demasiado grande, como se ve por las
pendientes acusadas de las caras oeste y norte del trazado,
respectivamente.
Sobrepuesto en los contornos continuos descritos
más arriba, hay otros dos juegos de datos. Un primer juego de datos
contiene tres hipérbolas 12 dibujadas en líneas hechas con trazos
largos. Cada hipérbola representa los valores de w y
Z que generan un valor dado para h. La primera de
estas hipérbolas A representa puntos en los que h = 0,2; una
segunda hipérbola B representa h = 0,5; y una tercera
hipérbola C representa h = 0,8. Puede verse que la línea que
denota ocupación óptima (h = 0,5) pasa por el pico del
trazado.
Tres curvas adicionales 13 muestran que los
valores de w y Z afectan al valor de P_{c}.
Las tres curvas, leyendo de izquierda a derecha representan valores
de P_{c} de 0,1, 0,5 y 0,9, respectivamente. Puede verse
en la figura 4 que el pico de cada una de las curvas 13 está en la
línea h = 0,5. Debería notarse que las tres curvas 13 están
cerca una de otra, indicando que la capacidad es relativamente
insensible a la probabilidad P_{c}.
Dada la presentación precedente, puede verse que
el valor óptimo de w para la máxima recuperación correcta
de datos, recuperándose otros datos con error, se da en el pico del
trazado. O sea, w = 11. El valor óptimo para la recuperación
sin error se lee desde el punto en el que la hipérbola central B
cruza la curva central de las curvas 13. (Ese es el punto en el que
la línea h= 0,5 cruza la línea P_{c} = 0,5.) En este
caso, w = 20, que está por encima del doble del valor para
la recuperación con errores. Para determinar el valor de w
para la recuperación sin errores es necesario ubicar el máximo de la
curva P_{c}. Sin embargo, como esta curva es muy plana,
detectar el máximo es muy difícil. Como se sabe que este máximo se
da en un punto en el que h= 0,5, es posible tomar el punto
de intersección de la línea P_{c} = 0,5 y h = 0,5
para determinar el valor de w para el máximo de la
recuperación de datos libre de error. Por lo tanto, de acuerdo con
los desarrollos hechos por la invención, cualquier memoria dotada
de los parámetros expuestos más arriba funciona óptimamente con un
valor de w entre 11 y 20.
La exposición anterior ha propuesto una forma
novedosa para determinar un valor óptimo de w, y se han
presentado las ventajas de tal determinación. Sin embargo, debería
notarse que, dado que cada decodificador de dirección se dispara
independientemente, es difícil garantizar que estén activadas
exactamente w direcciones por parte de cada dirección de
entrada, o sea, habrá cierta variación en w. El análisis
presentado más arriba se modifica ahora a la luz de esta
observación.
Se ha explicado que se aplica un umbral T
a un decodificador de dirección para determinar el número de
bits que necesitan corresponderse entre una dirección de
entrada y un identificador de decodificación si ha de activarse un
decodificador. Los decodificadores de dirección activados son
aquellos que tienen al menos T bits de su entrada
correspondiéndose con la dirección de entrada.
La probabilidad de que un primer código N_{1}
de M tenga T unos en común con un segundo código N_{2} de
M es dada por la ecuación (30):
\vskip1.000000\baselineskip
(30)p(t) =
\frac{C^{T}_{N_{1}} \cdot C^{N_{2} - T}_{M -
N_{1}}}{C^{N^{2}}_{M}}
\vskip1.000000\baselineskip
Puesto que están activados los decodificadores
de dirección que tienen en común T bits con la dirección de
entrada, el valor medio de w, denotado por \hat{w}, puede
deducirse usando la ecuación (31):
\vskip1.000000\baselineskip
(31)\hat{w} =
\frac{W}{C^{0}_{A}} \cdot \sum\limits^{n}_{k=T} C^{k}_{i} \cdot
C^{a-k}_{A-i}
\vskip1.000000\baselineskip
Si la memoria está funcionando con entrada libre
de errores, siempre estarán activados los mismos decodificadores de
dirección por parte de una dirección de entrada dada. Sin embargo,
habrá cierta variación estadística en el número de decodificadores
que son activados por diferentes direcciones de entrada. Para una
dirección de entrada dada, la probabilidad de que cualquier
decodificador de dirección se active es dada por:
\vskip1.000000\baselineskip
(32)pa =
\frac{\hat{w}}{W}
Los W decodificadores de dirección dan una
distribución binómica para w, con una media en conformidad
con la ecuación (31), y una varianza en conformidad con la ecuación
(33):
(33)\sigma^{2}_{a} = W \cdot pa
\cdot(1 -
pa)
La probabilidad de que w tome un valor
particular w' es:
(34)P_{w'} =
(1 - pa)^{W - w'} \cdot pa^{w'} \cdot
C^{w'}_{W}
La ecuación (13) de más arriba da una expresión
de la probabilidad de que todos los valores de datos almacenados
puedan recuperarse sin error. Dada la ecuación (34), la ecuación
(13) puede modificarse, de modo que dé:
(35)P_{c} =
\prod_{w'} [1 - h^{w'}]^{Z \cdot P_{w'}
\cdot(D-d)}
Es decir, la ecuación (13) es modificada para
tomar en cuenta la varianza en el valor de w.
De modo similar, la ecuación (23), que da un
valor para el número esperado de elementos de datos recuperables
correctamente (ignorando los recuperados con errores), se convierte
en:
(36)E_{c} =
\sum\limits_{w'} P_{w'} \cdot Z \cdot[1 -
h^{w'}]^{(D-d)}
Dados estos cambios a los valores de
E_{c} y P_{c} para tener en cuenta la distribución
binómica de w, se modifica el trazado de contorno de la
figura 4 al mostrado en la figura 5. Las líneas de contorno,
hipérbolas y curvas denotan la misma información que las de la
figura 4. El eje vertical (Z) de la figura 5 representa la
misma cantidad que el eje homólogo de la figura 4. El horizontal
w se ajusta para que refleje el valor medio de
w.
En este caso, el valor pico de E_{c} es
más bajo en E_{c} = 4445, donde Z = 5440 y w
= 15. Este valor pico ya no ocurre en h = 0,5, sino que
ahora se da en h = 0,575. El rendimiento libre de errores es
considerablemente peor con valores más bajos de w, pero la
forma general del trazado no se ve afectada. Sin embargo, puede
verse que, dada la distribución binómica de w, el valor de
T debe ajustarse para que dé a w una media más elevada
que las propuestas anteriormente. El valor requerido de T
puede determinarse reordenando la ecuación (31) y utilizando
valores adecuados para a, A, i y w para determinar
T.
El sistema de la presente invención puede
implementarse empleando tecnología de redes neuronales artificiales,
y a continuación se describe tal implementación. La figura 6
muestra la estructura básica de una red neuronal artificial
adecuada. La red neuronal consta de una capa de neuronas de entrada
14 conectadas a una capa de neuronas de decodificación de dirección
15. La memoria de datos consta de D neuronas 16. Cada neurona
de datos 16 va conectada a cada neurona de decodificación de
dirección 15. Cada neurona de datos 16 tiene una entrada
(input, IP) de escritura de datos y una salida
(output, OP) de lectura de datos.
El sistema resulta particularmente adecuado para
una implementación basada en neuronas de integración y disparo de
picos transitorios con pérdida, aunque también son aplicables otros
modelos neuronales. Una neurona de integración y disparo tiene
n entradas, y toma una suma ponderada de estas entradas. Esta
suma se denomina nivel de activación de la neurona. Una neurona se
dispara solamente si el nivel de activación excede un umbral
predeterminado. La implementación descrita más abajo se basa en
neuronas de picos transitorios, que dan salida a un solo pulso - o
sea, una neurona o bien se dispara y genera un pulso, o no se
dispara y no genera un pulso. Así, la salida de una neurona puede
considerarse que es una salida digital 0/1. La propiedad de las
neuronas de tener pérdida significa que una entrada es mantenida
por una neurona durante un periodo de tiempo predefinido. Después
de este tiempo, el nivel de activación desciende hacia cero. Así, si
las entradas se disparan en oleadas solamente se tendrán en cuenta
las entradas de una oleada dada en cualquier cálculo del nivel de
activación, ya que otras entradas habrán vuelto a cero por causa de
la pérdida. Esta propiedad de la presencia de pérdidas es
importante, ya que garantiza que una neurona no se dispare
incorrectamente debido a los efectos de las entradas previas. La
propiedad de tener pérdida garantiza que las neuronas dentro del
sistema se asienten en estados inactivos entre "oleadas" de
actividad.
Se introduce una dirección con la forma de un
código i de A en las neuronas de decodificación de dirección
15 desde las neuronas de entrada 14. Esta entrada es una serie de
i picos transitorios en i de las A neuronas de
entrada al sistema que llegan aproximadamente a la vez. Estas
neuronas de picos transitorios contribuyen al nivel de activación
de algunas de las neuronas de decodificación de dirección, como se
describe más abajo.
El decodificador de dirección consta de W
neuronas de decodificación de dirección 15. Las conexiones entre
las neuronas de entrada 14 y las neuronas asociadas con los
decodificadores de dirección son fijas. De modo similar, el umbral
en el que se disparan las neuronas de decodificación de dirección
también es fijo. Por ejemplo, en la ilustración simplificada de la
figura 6, puede ser que deba dispararse al menos una de las dos
neuronas de entrada 14 conectadas a una neurona de decodificación
concreta de dirección 15 si esa neurona de decodificación de
dirección ha de dispararse. Es decir, cada neurona de decodificación
de dirección tiene un umbral de 1.
Puede formarse una matriz que represente las
conexiones entre las neuronas de entrada 14 y las neuronas de
decodificación de dirección 15, y esta matriz de conexiones es
completa - es decir, cada neurona de entrada se conecta con cada
neurona de decodificación de dirección. Cada neurona de
decodificación de dirección tiene A pesos: a pesos
están puestos a "1" en la matriz de conexiones y A -
a pesos están puestos a "0". En la figura 7 se muestra
parte de una matriz de conexiones. Aquí se muestran conexiones para
una neurona de decodificación de dirección. Cada una de cinco
líneas de entrada 17 está conectada con una senda línea de entrada
18 de una única neurona de decodificación de dirección (no
mostrada). Se asigna a cada una de las conexiones entre una línea
de entrada 17 y una línea de entrada de decodificación de dirección
18 o bien un peso de "1" o bien un peso de "0".
Leyendo las líneas de entrada 17 de izquierda a
derecha y las entradas de las neuronas de decodificación de
dirección de arriba abajo puede verse que se asigna a la conexión
entre la primera línea de entrada y la primera entrada de las
neuronas de decodificación de dirección un "0", mientras que a
la conexión entre la segunda línea de entrada y la segunda entrada
de las neuronas se le asigna un "1".
Hay cinco líneas de entrada 17, y cinco entradas
de decodificación de dirección 18. A las conexiones entre tres de
estas líneas se les asigna un peso de "1". Así, a cada neurona
de decodificación de dirección se le asigna en realidad un código 3
de 5 como identificador. Para cada una de las conexiones dotadas de
un peso de "1", una neurona de entrada que se dispare por la
línea de entrada asociada contribuye al nivel de activación de la
neurona de decodificación de dirección. A la inversa, para una
conexión dotada de un peso de "0", una neurona de entrada que
se dispare por la línea de entrada asociada no contribuye al nivel
de activación de la neurona de decodificación de dirección.
La estructura mostrada en la figura 7 es
repetida de tal modo que cada línea de entrada 17 esté conectada a
W entradas de neuronas de decodificación de dirección. A la
vista de la figura 7, únicamente se muestran las entradas de la
neurona de decodificación de una sola dirección, de modo que cada
línea de entrada 17 esté conectada solamente a una única entrada
18.
Dado que un peso de "1" significa que una
neurona de entrada que se dispare afectará a una entrada de neurona
de decodificación de dirección 18 (o sea, esa línea de entrada
representa un "1" en el identificador del decodificador de
dirección), y que un "0" es efectivamente la representación de
ausencia de conexión (o sea, una neurona que se dispare por esta
línea de entrada no tendrá efecto alguno en la neurona de
decodificación de dirección), cada neurona de decodificación de
dirección sólo precisa estar conectada a las i neuronas de
entrada que tengan unos. Esto se representa en la figura 8, donde
solamente las tres líneas de entrada 17 que tienen pesos de
"1" están conectadas con las entradas 18 de una neurona de
decodificación de dirección 15.
De este modo, las conexiones entre las neuronas
de entrada y las de decodificación de dirección pueden verse bien
como una matriz de conexiones completa que conste de valores
"0" y "1" (figura 7), o bien como una tabla de
encaminamiento que contiene conexiones específicas (figura 8). Estas
dos vistas son equivalentes. Debería notarse que, como en la vista
de la figura 7, en la figura 8 únicamente se muestran las conexiones
para una sola neurona de decodificación de dirección 15, y harán
falta conexiones similares para cada una de las W neuronas
de decodificación de dirección.
En general, las conexiones (o "unos") para
cada neurona de decodificación de dirección se seleccionan de forma
aleatoria.
Cuando llegan los picos transitorios (que
representan una dirección de entrada), se disparan un número de
neuronas de decodificación de dirección. Las neuronas que se
disparan serán aquellas que hayan recibido valores de "1" en
un número suficiente de líneas de entrada con peso de "1", de
modo que se eleve el nivel de activación de la neurona de
decodificación de dirección por encima del umbral T. Este
disparo de las neuronas de decodificación de dirección 15 es un
código w de W, como se ha descrito más arriba.
La memoria de datos 3 consta de D
neuronas 16, cada una de las cuales tiene W neuronas de
decodificación de dirección 15 como entrada. Cada una de las
D neuronas de memoria de datos tiene una única entrada IP de
datos de escritura. Las conexiones entre las W neuronas de
decodificación de dirección y las D neuronas de memoria de
datos tienen inicialmente pesos de "0". Las conexiones desde
las entradas de datos de escritura (no mostradas) tienen valores
que son inicialmente irrelevantes. Sin embargo, cuando se dispara
una neurona de datos de escritura, debe forzarse a una senda
neurona de memoria de datos para que entre en un modo hebbiano de
aprendizaje que persiste durante la oleada incidente asociada de
neuronas de decodificación de dirección que se disparan. Es decir,
cuando han de escribirse datos, cada una de las neuronas de la
memoria de datos debe ser activada para que pueda almacenar los
datos presentados por las neuronas de datos de escritura.
A continuación se describe el procedimiento para
escribir datos a la memoria de datos. En primer lugar, se disparan
d de las D neuronas de datos de escritura (no
mostradas), y las correspondientes d neuronas de memoria de
datos 16 son puestas en un modo hebbiano de aprendizaje. Las
neuronas de decodificación de dirección 15 se disparan, como se ha
descrito más arriba, lo que da por resultado que se comunique un
código w de W a las neuronas de memoria de datos
16. Las w neuronas que reciben picos transitorios
procedentes de las neuronas de decodificación de dirección, y que
han sido puestas en un modo hebbiano de aprendizaje por las neuronas
de entrada de datos de escritura, tienen pesos puestos a
"1".
Una vez que ha pasado la oleada de picos
transitorios incidentes de neuronas de decodificación de dirección,
la propiedad de todas las neuronas de tener pérdidas hace que los
niveles de activación vuelvan a "0". En este punto, las
neuronas de la memoria de datos dejan de estar en un modo hebbiano
de aprendizaje. Después de una demora adecuada, la memoria está en
un estado apropiado para que se inicie un ciclo adicional de lectura
o escritura. Por lo tanto, puede verse que la propiedad de las
neuronas de tener pérdidas garantiza que la activación de un ciclo
de escritura previo no afecte la operación del ciclo de escritura
actual.
Cuando han de leerse datos de la memoria de
datos, las neuronas de datos de escritura están inactivas. Una
operación de lectura es iniciada mediante el disparo de w de
W neuronas de decodificación de dirección, como se ha
descrito con anterioridad. Las w neuronas disparadas de
decodificación de dirección hacen que se eleven los niveles de
activación en algunas neuronas de memoria de datos, dando por
sentado que al menos algunas neuronas han sido modificadas por un
ciclo previo de escritura.
Una lógica generalizada de salida del estilo de
"el ganador se queda con todo" (k-WTA) selecciona
d neuronas de memoria de datos con el nivel de activación
más alto y éstas emiten picos transitorios por sus salidas
respectivas OP para formar una representación de la salida de datos.
Como se ha descrito con anterioridad, se requiere una demora
adecuada antes de que se inicie un ciclo adicional de lectura o
escritura. Pueden emplearse varios métodos conocidos para
implementar el algoritmo k-WTA. En uno de tales métodos, las
neuronas de salida se disparan en orden decreciente de nivel de
activación, disparándose en primer lugar la neurona con el nivel de
activación más elevado. Así, después de que hayan disparado d
neuronas, se sabe que las d neuronas con los niveles de
activación más elevados han contribuido a la salida. Puede inhibirse
el disparo adicional mediante una neurona contadora que haya
observado los d ciclos de disparo y que emita una señal
inhibidora para evitar disparos adiciona-
les.
les.
La aplicación de codificación N de M a la lógica
de decodificación de dirección, como se ha descrito más arriba,
supone un número de beneficios. En concreto, dado que dichos códigos
están interesados únicamente en la posición de los bits a
"1" dentro de un valor de datos, resultan particularmente
adecuados para aplicaciones de redes neuronales, donde un "1"
queda representado por una neurona que se dispara. En un sistema
binario resulta comparativamente difícil representar y detectar una
neurona que no se dispara, haciendo difícil de llevar a cabo una
implementación neuronal de un sistema binario. Por eso, la
aplicación de codificación N de M proporciona un sistema efectivo
controlado por eventos, en el que los eventos (una neurona se
dispara) tienen efectos y los eventos inexistentes (una neurona no
se dispara) no tienen efecto.
La selección concreta de los valores M y N para
un código M de N dependerá de la aplicación, hasta cierto punto.
Por ejemplo, en aplicaciones bioinformáticas, donde han de
representarse datos de ADN, suele escogerse un código 1 de 4. Se
hace esta elección porque el ADN consta de un número de bases,
seleccionándose cada base de entre un conjunto de cuatro bases
posibles, comúnmente denominadas G, A, T y C. Así, cada base está
representada por un "1" en una de las cuatro entradas
proporcionadas por el código. O sea, por ejemplo:
- G = 0001
- A = 0010
- T = 0100
- C = 1000
Es decir, un código 1 de 4 permite que se
representen cuatro valores diferentes (un número binario de dos
bits). Por lo tanto, una secuencia de ADN es representada
como una serie de códigos 1 de 4, un código para cada base de la
secuencia de ADN. Usando esta secuencia, una secuencia de ADN de
cuatro bases estará representada por un código 4 de 16. Debería
notarse que éste es un código restringido 4 de 16, con una
restricción tal que uno de los bits "1" debe darse
dentro de los primeros cuatro bits del código, el segundo en
los siguientes cuatro bits y así sucesiva-
mente.
mente.
Un código binario general puede transformarse en
un código N de M, usando, por ejemplo, codificación de carril dual.
Aquí, cada bit del código binario es asignado a dos
"carriles". Se transmite un pulso al primer carril de un
bit si ese bit está puesto a "1", mientras que un
pulso se transmite al segundo carril de ese bit si el
bit está puesto a "0". Relacionando esta implementación
de carril dual con la red neuronal ilustrada en la figura 6, cada
neurona de entrada 14 acepta la entrada procedente de dos neuronas
de entrada de carril dual. Es decir, hay diez neuronas de entrada
de carril dual en el sistema. Cuando se recibe la entrada, ésta
estará en la forma de un código 5 de 10, con una restricción tal
como que un "1" deba ocurrir en una del primer par de
neuronas, una en el segundo y así sucesivamente. Acto seguido, se
disparan las neuronas de entrada que reciben entradas procedentes
de las neuronas del carril de "1", como se ha descrito
anteriormente.
Debería notarse que añadir tecnología de carril
dual de esta manera proporciona un sistema en el que las entradas
de carril dual funcionan usando, como se ha descrito, un código
restringido N de M, mientras que las neuronas de entrada funcionan
en binario, sin certidumbre alguna en cuanto a cuántas neuronas se
dispararán. Esto facilita una conversión efectiva entre un sistema
N de M y un sistema binario.
Les resultará evidente a las personas versadas
en la especialidad que la configuración de memoria de la presente
invención puede ser implementada en términos de los decodificadores
tradicionales de dirección, y de las líneas tradicionales de
palabra de almacenamiento de datos o como un sistema neuronal, tal
como se ha descrito más arriba. También resultará evidente que el
sistema puede ser implementado bien fabricando componentes
necesarios de hardware, o bien configurando componentes
reconfigurables, tales como los sistemas de puertas programables
por campos (Field Programmable Gate Arrays, FPGAs).
Alternativamente, el sistema puede realizarse escribiendo un
programa de ordenador adecuado que corra en un sistema informático
convencional. Tal sistema usará el hardware del ordenador
convencional de tal manera que simule una memoria que sea un ejemplo
de realización de la invención. El programa informático puede
escribirse en cualquiera del gran número de lenguajes de
programación informática ampliamente utilizados, aunque se prefiera
en particular una implementación orientada a objetos.
Claims (22)
1. Una configuración de memoria para su empleo
en un sistema informático, constando la memoria de una pluralidad
de decodificadores de dirección (2), a cada uno de los cuales se le
asigna un identificador que tiene un número predefinido de
bits, teniendo cada bit estados seleccionables primero
y segundo, y una memoria de datos (3) que tiene una pluralidad de
líneas de palabra de longitud predefinida, siendo susceptible de
activación cada uno de los referidos decodificadores de dirección
(2) para seleccionar una de entre una pluralidad de líneas, y
constando los decodificadores de dirección (2) de medios para
recibir una dirección de entrada que tiene un número predefinido de
bits y de medios para comparar el identificador de un
decodificador de dirección (2) con la dirección de entrada,
caracterizada porque la memoria consta además de medios para
activar un decodificador de dirección (2) si al menos un número
mínimo predefinido de bits puestos en el primer estado
seleccionable en la dirección de entrada se corresponde con
bits puestos en el primer estado seleccionable en el
identificador del decodificador.
2. Una configuración de memoria, en conformidad
con la reivindicación 1, en la que el medio para comparar el
identificador de un decodificador de dirección (2) con la dirección
de entrada considera la correspondencia posicional entre
bits puestos en el primer estado seleccionable en la
dirección de entrada y bits puestos en el primer estado
seleccionable en los identificadores del decodificador (2).
3. Una configuración de memoria, en conformidad
con la reivindicación 1, o con la 2, en la que cada identificador
del decodificador de dirección (2) tiene un número igual de
bits puestos en el primer estado seleccionable.
4. Una configuración de memoria, en conformidad
con cualquier reivindicación precedente, en la que el medio para
recibir una dirección de entrada está configurado para recibir
direcciones que contienen un número predefinido de bits
puestos en el primer estado seleccionable.
5. Una configuración de memoria, en conformidad
con las reivindicaciones 3 y 4, en la que un número predefinido de
bits puestos en el primer estado seleccionable en una
dirección de entrada es igual al número de bits puestos en
el primer estado seleccionable en cada uno de los identificadores de
decodificadores de dirección (2).
6. Una configuración de memoria, en conformidad
con cualquier reivindicación precedente, en la que la memoria de
datos (3) consta de una pluralidad de memorias de bit único,
de modo que cada bit de cada línea de palabra está
almacenado en una memoria de bit único.
7. Una configuración de memoria, en conformidad
con cualquier reivindicación precedente, en la que la memoria de
datos (3) consta de una línea de entrada de datos (5) que contiene
un número de bits igual al de cada una de la pluralidad de
las líneas de palabra.
8. Una configuración de memoria, en conformidad
con la reivindicación 7, que consta además de medios para escribir
datos para copiar datos de la línea de entrada de datos (5) a líneas
de palabra activadas por los decodificadores de dirección (2).
9. Una configuración de memoria, en conformidad
con la reivindicación 7, o con la 8, en la que la línea de entrada
(5) está configurada para recibir datos de entrada que contienen un
número predefinido de bits puestos en el primer estado
seleccionable.
10. Una configuración de memoria, en conformidad
con cualquier reivindicación precedente, que consta además de
medios para sumar valores almacenados en cada bit de las
líneas de palabra activadas por un decodificador de dirección (2)
para generar un valor de nivel de activación para cada
bit.
11. Una configuración de memoria, en conformidad
con las reivindicaciones 9 y 10, que consta además de medios para
generar una palabra de salida que contiene un número predefinido de
bits puestos en el primer estado seleccionable.
12. Una configuración de memoria, en conformidad
con la reivindicación 11, en la que los bits puestos en el
primer estado seleccionable en la salida son el número predefinido
de bits dotados del nivel de activación más elevado.
13. Una configuración de memoria, en conformidad
con cualesquiera de las reivindicaciones 1 a la 12, en la que la
memoria se implemente usando una pluralidad de neuronas artificiales
(16) conectadas entre sí para formar una red neuronal.
14. Una configuración de memoria, en conformidad
con la reivindicación 13, en la que la pluralidad de
decodificadores de dirección (2) está representada por una
pluralidad de neuronas de decodificación de dirección (15), y la
memoria de datos (3) está representada por una pluralidad de
neuronas de datos.
15. Una configuración de memoria de red neuronal
para su empleo en un sistema informático, constando la memoria de
una pluralidad de neuronas de decodificación de dirección (15), cada
una de las cuales está conectada a un número predefinido de
neuronas de entrada (14), y de una memoria de datos dotada de una
pluralidad de neuronas de datos, siendo susceptible de activación
cada una de dichas neuronas de decodificación de dirección (15)
para seleccionar algunas de la pluralidad de las neuronas de datos,
y constando las neuronas de decodificación de dirección (15) de un
medio para recibir una señal que representa un disparo de una
neurona de entrada (14) a la que va conectado, en la que una
neurona de decodificación (15) consta de medios para activar
neuronas de datos si se reciben señales de disparo desde al menos
un número mínimo predefinido de neuronas de entrada (14) a las que
va conectada la neurona de decodificación de dirección (15).
16. Un método para hacer funcionar una memoria
para su empleo en un sistema informático, constando la memoria de
una pluralidad de decodificadores de dirección (2), a cada uno de
los cuales se le asigna un identificador que tiene un número
predefinido de bits, teniendo cada bit estados
seleccionables primero y segundo, y una memoria de datos (3) que
tiene una pluralidad de líneas de palabra de longitud predefinida,
siendo susceptible de activación cada uno de dichos decodificadores
de dirección (2) para seleccionar una de entre la pluralidad de
líneas de palabra, donde una dirección de entrada que tiene un
número predefinido de bits es introducida al decodificador
de dirección (2), el identificador de un decodificador de dirección
(2) es comparado con la dirección de entrada y los decodificadores
de dirección (2) se activan si al menos un número mínimo
predefinido de bits puestos en el primer estado seleccionable
en la dirección de entrada se corresponden con los bits
puestos en el primer estado seleccionable en el identificador del
decodificador.
17. Un método, en conformidad con la
reivindicación 16, en el que los datos de entrada se presentan en
una entrada de datos de la memoria de datos y los datos se escriben
a líneas de palabra activadas por los decodificadores de dirección
activados (2).
18. Un método, en conformidad con la
reivindicación 16, o con la 17, en el que el número mínimo
predefinido de bits está puesto de tal modo que se activen
menos de 100 decodificadores de dirección (2) por cualquier
dirección válida de entrada.
19. Un método, en conformidad con la
reivindicación 18, en el que el número mínimo predefinido de
bits está puesto de tal modo que se activen menos de 50
decodificadores de dirección (2) por cualquier dirección válida de
entrada.
20. Un método, en conformidad con la
reivindicación 19, en el que el número mínimo predefinido de
bits está puesto de tal modo que se activen menos de 20 y
más de 11 decodificadores de dirección (2) por cualquier dirección
válida de entrada.
21. Un medio portador que lleva un medio de
código legible para ordenadores para hacer que un ordenador ejecute
un procedimiento en conformidad con el método de cualesquiera de las
reivindicaciones 16 a la 20.
22. Un programa informático para efectuar el
método de cualesquiera de las reivindicaciones 16 a la 20.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| GB0207372 | 2002-03-28 | ||
| GBGB0207372.4A GB0207372D0 (en) | 2002-03-28 | 2002-03-28 | Digital memory |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2268084T3 true ES2268084T3 (es) | 2007-03-16 |
Family
ID=9933933
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES02767715T Expired - Lifetime ES2268084T3 (es) | 2002-03-28 | 2002-10-14 | Memoria digital direccionable de manera inexacta. |
Country Status (10)
| Country | Link |
|---|---|
| US (1) | US7512572B2 (es) |
| EP (1) | EP1488425B1 (es) |
| JP (1) | JP4209335B2 (es) |
| AT (1) | ATE332564T1 (es) |
| AU (1) | AU2002330642B2 (es) |
| CA (1) | CA2479944C (es) |
| DE (1) | DE60213007T2 (es) |
| ES (1) | ES2268084T3 (es) |
| GB (1) | GB0207372D0 (es) |
| WO (1) | WO2003083669A2 (es) |
Families Citing this family (13)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| GB0524126D0 (en) * | 2005-11-26 | 2006-01-04 | Cogniscience Ltd | Data transmission method |
| WO2008021554A2 (en) * | 2006-08-18 | 2008-02-21 | Board Of Supervisors Of Louisiana State University And Agricultural And Mechanical College | A 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 |
| US8891872B2 (en) | 2011-12-16 | 2014-11-18 | General Electric Company | System and method for identifying physical markings on objects |
| US9235499B2 (en) | 2011-12-16 | 2016-01-12 | General Electric Company | System and method for identifying a character-of-interest |
| US9558443B2 (en) | 2013-08-02 | 2017-01-31 | International Business Machines Corporation | Dual deterministic and stochastic neurosynaptic core circuit |
| EP3089080A1 (en) * | 2015-04-27 | 2016-11-02 | Universität Zürich | Networks and hierarchical routing fabrics with heterogeneous memory structures for scalable event-driven computing systems |
| 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)
| 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 |
| KR19990077091A (ko) * | 1996-01-25 | 1999-10-25 | 피터 토마스 | 가변 입력 가중치를 가지는 반도체 뉴런 |
| 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 |
-
2002
- 2002-03-28 GB GBGB0207372.4A patent/GB0207372D0/en not_active Ceased
- 2002-10-14 JP JP2003581025A patent/JP4209335B2/ja not_active Expired - Fee Related
- 2002-10-14 AT AT02767715T patent/ATE332564T1/de not_active IP Right Cessation
- 2002-10-14 AU AU2002330642A patent/AU2002330642B2/en not_active Ceased
- 2002-10-14 ES ES02767715T patent/ES2268084T3/es not_active Expired - Lifetime
- 2002-10-14 DE DE60213007T patent/DE60213007T2/de not_active Expired - Lifetime
- 2002-10-14 US US10/509,086 patent/US7512572B2/en not_active Expired - Fee Related
- 2002-10-14 CA CA2479944A patent/CA2479944C/en not_active Expired - Fee Related
- 2002-10-14 EP EP02767715A patent/EP1488425B1/en not_active Expired - Lifetime
- 2002-10-14 WO PCT/GB2002/004650 patent/WO2003083669A2/en not_active Ceased
Also Published As
| Publication number | Publication date |
|---|---|
| DE60213007T2 (de) | 2007-02-08 |
| AU2002330642B2 (en) | 2008-12-04 |
| EP1488425A2 (en) | 2004-12-22 |
| JP2005521940A (ja) | 2005-07-21 |
| WO2003083669A3 (en) | 2003-12-31 |
| WO2003083669A2 (en) | 2003-10-09 |
| US7512572B2 (en) | 2009-03-31 |
| CA2479944A1 (en) | 2003-10-09 |
| JP4209335B2 (ja) | 2009-01-14 |
| ATE332564T1 (de) | 2006-07-15 |
| GB0207372D0 (en) | 2002-05-08 |
| US20050281116A1 (en) | 2005-12-22 |
| EP1488425B1 (en) | 2006-07-05 |
| AU2002330642A1 (en) | 2003-10-13 |
| DE60213007D1 (de) | 2006-08-17 |
| CA2479944C (en) | 2013-04-23 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US12131779B2 (en) | Global responder signal circuitry for memory arrays | |
| Furber et al. | Sparse distributed memory using N-of-M codes | |
| US11055608B2 (en) | Convolutional neural network | |
| CN111417963A (zh) | 改进的尖峰神经网络 | |
| AU2002330642B2 (en) | Inexact addressable digital memory | |
| CN101573694A (zh) | 用于小数据结构的ecc保护的方法、系统和装置 | |
| Jaeckel | An alternative design for a sparse distributed memory | |
| MY130268A (en) | Three-dimensional memory array and method for storing data bits and ecc bits therein | |
| US11164084B1 (en) | Cluster-connected neural network | |
| US12244324B2 (en) | Iterative error correction in memory systems | |
| US12118228B2 (en) | Data protection method for memories and memory device thereof | |
| CN111008699A (zh) | 一种基于自动驾驶的神经网络数据存储方法及系统 | |
| KR102753983B1 (ko) | 시공간 입력 신호들이 나타내는 사건을 부호화하기 위한 전자 장치 및 그것의 동작 방법 | |
| CN108021467A (zh) | 一种存储器容错保护方法、装置、设备及存储介质 | |
| Snaider et al. | Integer Sparse Distributed Memory. | |
| Snaider et al. | Extended sparse distributed memory | |
| KR102922442B1 (ko) | 인공 신경망을 이용한 근사 기반 디지털 컴퓨팅-인-메모리 설계 시스템 및 그 동작 방법 | |
| Lee et al. | A paired-page reading scheme for NAND flash memory | |
| Bose | A scalable sparse distributed neural memory model | |
| US12148496B2 (en) | Readout from memory cells subjected to perturbations in threshold voltage distributions | |
| CN120569778A (zh) | 存储器装置、存储器系统以及采用存储器装置进行数据计算的方法 | |
| Rosen et al. | Transcendental functions in backward error propagation | |
| CN120752617A (zh) | 包含显式量化克努特索引的平衡错误校正码 | |
| CN120833838A (zh) | 一种存储系统及存储系统的操作方法 | |
| CN116860510A (zh) | 存储器装置及访问其数据的方法和存储器系统 |