ES2847228T3 - Decodificación separada de direcciones de lectura y escritura en un sistema de memoria para admitir operaciones simultáneas de lectura y escritura de memoria - Google Patents
Decodificación separada de direcciones de lectura y escritura en un sistema de memoria para admitir operaciones simultáneas de lectura y escritura de memoria Download PDFInfo
- Publication number
- ES2847228T3 ES2847228T3 ES17768324T ES17768324T ES2847228T3 ES 2847228 T3 ES2847228 T3 ES 2847228T3 ES 17768324 T ES17768324 T ES 17768324T ES 17768324 T ES17768324 T ES 17768324T ES 2847228 T3 ES2847228 T3 ES 2847228T3
- Authority
- ES
- Spain
- Prior art keywords
- memory
- read
- write
- row
- bit cell
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/41—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger
- G11C11/413—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction
- G11C11/417—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction for memory cells of the field-effect type
- G11C11/419—Read-write [R-W] circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/41—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger
- G11C11/413—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction
- G11C11/417—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction for memory cells of the field-effect type
- G11C11/418—Address circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1015—Read-write modes for single port memories, i.e. having either a random port or a serial port
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/08—Word line control circuits, e.g. drivers, boosters, pull-up circuits, pull-down circuits, precharging circuits, for word lines
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/10—Decoders
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2207/00—Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
- G11C2207/22—Control and timing of internal memory operations
- G11C2207/2209—Concurrent read and write
Landscapes
- Engineering & Computer Science (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (AREA)
- Static Random-Access Memory (AREA)
- Medicines That Contain Protein Lipid Enzymes And Other Medicines (AREA)
Abstract
Un circuito de selección de células de bits de memoria (502) para un sistema de memoria que comprende células de bits de memoria de un solo puerto y configurado para decodificar por separado las direcciones de lectura y escritura de memoria en selecciones de fila y columna de lectura y escritura, respectivamente, el circuito de selección de células de bits de memoria configurado para: en respuesta a una operación de escritura en memoria: recibir una selección de fila de escritura (432) que indica una fila de células de bits de memoria (R(0)- R(N)) entre una pluralidad de filas de células de bits de memoria en una matriz de memoria correspondiente a una dirección de escritura en memoria para la operación de escritura en memoria; recibir una selección de columna de escritura (434) que indica una columna de células de bits de memoria (C(0)-C(M)) entre una pluralidad de columnas de células de bits de memoria en la matriz de memoria correspondiente a la dirección de escritura en memoria para la operación de escritura en memoria; seleccionar la columna de células de bits de memoria de las células de bits de memoria en la matriz de memoria direccionada por la selección de columna de escritura (434); y generar una selección de fila de lectura/escritura (526) que indica la operación de escritura en memoria; y seleccionar la fila de células de bits de memoria de células de bits de memoria en la matriz de memoria direccionada por la selección de fila de escritura (432) en respuesta a la selección de fila de lectura/escritura que indica la operación de escritura en memoria; y en respuesta a una operación de lectura de memoria: recibir una selección de fila de lectura (426) que indica una fila de células de bits de memoria (R(0)- R(N)) entre la pluralidad de filas de células de bits de memoria en la matriz de memoria correspondiente a una dirección de lectura de memoria para la operación de lectura de memoria; recibir una selección de columna de lectura (428) que indica una columna de células de bits de memoria (C(0)-C(M)) entre la pluralidad de columnas de células de bits de memoria en la matriz de memoria correspondiente a la dirección de lectura de memoria para la operación de lectura de memoria; seleccionar la columna de células de bits de memoria de células de bits de memoria en la matriz de memoria direccionada por la selección de columna de lectura (428); el circuito de selección de células de bits de memoria (502) caracterizado por que está configurado, además, para: generar una selección de fila de lectura/escritura (526) que indica la operación de lectura de memoria en respuesta a la operación de escritura en memoria que no está presente para la operación de lectura de memoria; y seleccionar la fila de células de bits de memoria de las células de bits de memoria en la matriz de memoria direccionada por la selección de fila de lectura (426) en respuesta a la selección de fila de lectura/escritura que indica la operación de lectura de memoria.
Description
DESCRIPCIÓN
Decodificación separada de direcciones de lectura y escritura en un sistema de memoria para admitir operaciones simultáneas de lectura y escritura de memoria
SOLICITUDES PRIORITARIAS
[0001] La presente solicitud reivindica prioridad sobre la solicitud de patente provisional de los EE. UU. n.° de serie 62/403.740 presentada el 4 de octubre de 2016 y titulada "SEPARATE READ AND WRITE ADDRESS DECODING IN A MEMORY SYSTEM TO SUPPORT SIMULTANEOUS MEMORY READ AND WRITE OPERATIONS [DECODIFICACIÓN SEPARADA DE DIRECCIONES DE LECTURA Y ESCRITURA EN UN SISTEMA DE MEMORIA PARA ADMITIR OPERACIONES SIMULTÁNEAS DE LECTURA Y ESCRITURA DE MEMORIA]".
[0002] La presente solicitud también reivindica prioridad sobre la solicitud de patente de los EE. UU. n.° de serie 15/429.842 presentada el 10 de febrero de 2017 y titulada "SEPARATE READ AND WRITE ADDRESS DECODING IN A MEMORY SYSTEM TO SUPPORT SIMULTANEOUS MEMORY READ AND WRITE OPERATIONS".
ANTECEDENTES
I. Campo de la divulgación
[0003] La tecnología de la divulgación se refiere en general a sistemas de memoria para sistemas basados en procesadores y, más particularmente, a sistemas de memoria, tales como sistemas de memoria de acceso aleatorio estática (SRAM) que emplean células de bits SRAM, capaces de realizar operaciones simultáneas de lectura y escritura de memoria.
II. Antecedentes
[0004] Los sistemas informáticos basados en el procesador incluyen una memoria para el almacenamiento de datos. Existen diferentes tipos de memoria, cada una con determinadas características únicas. Por ejemplo, la memoria estática de acceso aleatorio (SRAM) es un tipo de memoria que se puede emplear en sistemas informáticos basados en procesador. La SRAM puede almacenar datos sin la necesidad de actualizar periódicamente la memoria, a diferencia de la memoria dinámica de acceso aleatorio (DRAM), por ejemplo. Una SRAM contiene una pluralidad de células de bits de SRAM (también denominadas «células de bits») organizadas en filas y columnas de memoria en una matriz de SRAM. Para cualquier fila dada en una matriz de SRAM, cada columna de la matriz de SRAM incluye una célula de bits de SRAM en la que se almacena un único valor o bit de datos. Las operaciones de lectura y escritura de memoria se realizan en una célula de bits de SRAM particular usando líneas de palabras de lectura y escritura que corresponden a la fila de células de bits de SRAM que incluye la célula de bits de SRAM particular.
[0005] La Figura 1 es un diagrama esquemático de un sistema de SRAM 100 a modo de ejemplo que emplea células de bits de SRAM 102(0)(0)-102(M)(N) ("células de bits 102(0)(0)-102(M)(N)") para almacenar datos en una matriz de datos 104. La matriz de datos 104 está organizada teniendo 'N+1' columnas de células de bits y 'M+1' filas de células de bits de células de bits 102 que soportan una palabra de datos de "N+1" bits de ancho. Se proporciona un controlador de línea de bits 106(0)-106(N) para cada columna de células de bits 0-N para accionar una línea de bits seleccionada (BL) 108T(0)-108T(N) y una línea de bits complementaria (BLB) 108C(O)-108C(N) para operaciones de lectura y escritura de memoria. Se proporciona un controlador de línea de palabras 110(0)-110(M) para cada fila de células de bits 0-M en la matriz de datos 104 para controlar el acceso a las células de bits direccionadas 102()(0)-102()(N) en una determinada fila de células de bits 0-M basándose en un índice(0) -índice(M) decodificado a partir de una dirección de memoria que indica la fila de células de bits 0-M a seleccionar. Una señal de reloj CLK 112 controla la temporización de afirmación de una línea de palabras activada 114(0)-114(M) para acceder a una fila de células de bits 102()(0)-102()(N) en la fila de células de bits seleccionada 0-M. En una operación de lectura de memoria, los bits de datos 0-N y sus bits de datos complementarios se leen de la fila seleccionada de células de bits 102()(0)-102()(N) de sus líneas de bits (BL) 108T(0)-108T(N) y líneas de bits complementarias 108C(O)-108C(N). Los amplificadores de detección 116(0)-116(N) detectan los voltajes diferenciales en las líneas de bits (BL) 108T(0)-108T(N) y sus respectivas líneas de bits complementarias 108C(O)-108C(N) para proporcionar líneas de salida de datos 118(0)-118(N) para la operación de lectura de memoria. En una operación de escritura en memoria, los bits de datos 0-N que se escribirán se proporcionan a los respectivos controladores de línea de bits 106(0)-106(N) para accionar los bits de datos recibidos 0-N y sus bits de datos complementarios en las líneas de bits (BL) 108T(0)-108T(N) y líneas de bits complementarias (BLB) 108C(O)-108C(N), respectivamente. El controlador de línea de palabras 114(0)-114(M) para la fila de células de bits seleccionada 0-M se activa para seleccionar las células de bits de memoria 102()(0)-102()(N) a escribir. Los bits de datos 0-N afirmados en las líneas de bits (BL) 108T(0)-108T(N) y las líneas de bits complementarias (BLB) 108C(O)-108C(N), respectivamente, se escriben en las células de bits de memoria seleccionadas 102()(0)-102()(N).
[0006] La Figura 2 es un diagrama de circuito de una célula 102 de bits de SRAM proporcionada en el sistema 100 de SRAM en la Figura 1. La célula 102 de bits de SRAM es una célula de bits de memoria de complemento estática estándar de seis (6) transistores (T) (6T). La célula 102 de bits de SRAM comprende dos (2) inversores de acoplamiento cruzado 200(0), 200(1) alimentados por voltaje Vdd. Los inversores de acoplamiento cruzado 200(0), 200(1) se refuerzan entre sí para retener datos en forma de voltaje en un nodo de almacenamiento verdadero respectivo (T) 202T y un nodo de almacenamiento complementario (C) 202C. Cada inversor 200(0), 200(1) se compone de un respectivo transistor de efecto de campo de tipo P pull-up (PFET) 204(0), 204(1) acoplado en serie a un respectivo FET de tipo N pull-down (NFET) 206(0), 206(1). Los transistores de acceso NFET 208(0), 208(1) están acoplados a los respectivos inversores 200(0), 200(1) para proporcionar un puerto de lectura/escritura respectivo 210T y un puerto de lectura/escritura complementario 210C a la célula 102 de bits de SRAM. En una operación de lectura de memoria, una línea de bits (BL) 108T y una línea de bits complementaria (BLB) 108C están precargadas al voltaje Vdd. Entonces, la línea de palabras (WL) 114 acoplada a las puertas G de los transistores de acceso NFET 208(0), 208(1) se afirma para hacer que los transistores de acceso NFET 208(0), 208(1) pasen voltajes que representan los datos y los datos complementarios almacenados en el respectivo nodo de almacenamiento verdadero 202T y el nodo de almacenamiento complementario 202C a la línea de bits (BL) 108T y a la línea de bits complementaria (BLB) 108C para ser evaluados como un voltaje diferencial. En una operación de escritura en memoria, los datos y los datos complementarios que se van a escribir en la célula 102 de bits de SRAM se proporcionan en la línea de bits (BL) 108T y la línea de bits complementaria (BLB) 108C. Luego, se afirma que la línea de palabras (WL) 114 hace que los transistores de acceso NFET 208(0), 208(1) pasen los datos representados como voltajes desde la línea de bits (BL) 108T y la línea de bits complementaria (BLB) 108C en el nodo de almacenamiento verdadero 202T y el nodo de almacenamiento complementario 202C, respectivamente, para ser almacenados.
[0007] Algunas arquitecturas de ordenador permiten que las operaciones de lectura y escritura de la memoria se envíen simultáneamente a una matriz de SRAM para aumentar el rendimiento de la memoria. Sin embargo, la célula 102 de bits de memoria SRAM 6T en la Figura 2 solo tiene un puerto 210T de lectura/escritura que puede usarse para operaciones de lectura o escritura de memoria en un momento dado. Por tanto, se puede proporcionar una memoria de mayor rendimiento que permita operaciones simultáneas de lectura y escritura de memoria. Esta memoria de mayor rendimiento se puede usar como memoria caché en un sistema basado en procesador, por ejemplo. La Figura 3 ilustra una versión adaptada de la célula 102 de bits de SRAM en la Figura 2 en forma de una célula 300 de bits de SRAM de ocho (8) transistores (T) (8T) que incluye un puerto de lectura 302 separado del puerto de lectura/escritura 210T para admitir operaciones simultáneas de lectura y escritura de memoria. Por lo tanto, la célula 300 de bits de SRAM puede denominarse célula 300 de bits de SRAM de una (1) lectura, una (1) escritura (1R1W). Los transistores de acceso NFET 208(0), 208(1) son transistores de escritura para escribir datos desde una línea de bits de escritura (WBL) 304T y una línea de bits de escritura complementaria (WBLB) 304C a los nodos de almacenamiento verdadero y complementario 202T, 202C en respuesta a una línea de palabras de escritura (WWL) 306. La célula 300 de bits de SRAM también incluye transistores de acceso NFET de lectura 308(0), 308(1) para admitir una operación de lectura de memoria. En una operación de lectura de memoria, se afirma una línea de palabras de lectura (RWL) 310, y el transistor de acceso NFET de lectura 308(0) se activa en respuesta. El transistor de acceso NFET de lectura 308(1) también se activa si los datos almacenados en el nodo de almacenamiento verdadero 202T es un valor T lógico. Una línea de bits de lectura (RBL) 312 es accionada por el transistor de acceso NFET de lectura 308(0) con los datos de lectura almacenados en el nodo de almacenamiento verdadero 202T. Se puede proporcionar un circuito de detección de colisiones para evitar colisiones de lectura-escritura cuando las operaciones de lectura y escritura de la memoria se emiten simultáneamente a la misma célula 300 de bits de SRAM donde la operación de escritura en memoria puede comenzar a escribir datos en la célula 300 de bits de SRAM antes de que se complete la operación de lectura de memoria.
[0008] Si bien las células de bits SRAM de múltiples puertos, como la célula 300 de bits de SRAM de 1R1W en la Figura 3, se pueden emplear en sistemas de SRAM para admitir operaciones simultáneas de lectura y escritura de memoria, tales células de bits de SRAM son costosas en términos de potencia, rendimiento y área (PPA). Los dos (2) transistores adicionales proporcionados en una célula de bits de SRAM 8T frente a una célula de bits de SRAM 6T como en la Figura 2 consumen área y energía adicionales. El rendimiento también se ve afectado por el retardo adicional de resistencia-capacitancia (RC) resultante del encaminamiento global adicional necesario para encaminar células de bits de memoria más grandes. Por lo tanto, si se desea usar una célula de bits de SRAM en una memoria caché, por ejemplo, usando una célula de bits de SRAM de múltiples puertos como la célula 300 de bits de SRAM de 1R1W en la Figura 3, la célula de bits de SRAM tendrá un PPA reducido con respecto a una célula de bits de SRAM 6T de un solo puerto, que es más eficiente en su PPA. Sin embargo, una célula de bits de SRAM 6T no puede admitir operaciones simultáneas de lectura y escritura de memoria.
[0009] La patente de los Estados Unidos número US 5.796.659 se refiere a un dispositivo de memoria semiconductor. La publicación de la solicitud de patente de los Estados Unidos número 2006/126420 se refiere a una memoria de semiconductor.
BREVE EXPLICACIÓN DE LA DIVULGACIÓN
[0010] La invención se refiere a un circuito de selección de células de bits de memoria como se define en la reivindicación 1 y a un procedimiento para realizar una operación de lectura y escritura de memoria en una matriz de memoria en un sistema de memoria como se define en la reivindicación 9. Los modos de realización adicionales se definen en las reivindicaciones dependientes.
[0011] Los aspectos de la presente divulgación implican la decodificación separada de direcciones de lectura y escritura en un sistema de memoria para admitir operaciones simultáneas de lectura y escritura de memoria. Al separar la decodificación de direcciones de lectura y escritura, un sistema de memoria puede evitar conflictos de circuitos incluso si emplea células de bits de memoria de un solo puerto que solo incluyen un puerto para realizar operaciones de lectura y escritura de la memoria. Puede ser deseable emplear células de bits de memoria de un solo puerto en el sistema de memoria como un ejemplo no limitativo para minimizar la potencia, el rendimiento y el área (PPA) del sistema de memoria.
[0012] A este respecto, en aspectos a modo de ejemplo divulgados en el presente documento, un sistema de memoria incluye una matriz de memoria que comprende una pluralidad de células de bits de memoria organizadas en filas y columnas de células de bits de memoria. Las células de bits de memoria pueden ser células de bits de memoria de acceso aleatorio estática (SRAM) como ejemplo no limitativo. La dirección de lectura y escritura de las respectivas operaciones de lectura y escritura de memoria solicitadas desde el sistema de memoria se decodifican por separado y son accionadas en la matriz de memoria para que las operaciones simultáneas de lectura y escritura de memoria no se vean afectadas entre sí. En este sentido, para una operación de lectura de memoria, el sistema de memoria está configurado para decodificar la dirección de lectura en una selección de fila de lectura y una selección de columna de lectura para seleccionar la columna de células de bits de memoria en la fila de células de bits de memoria de la dirección de lectura para la operación de lectura de memoria. Para una operación de escritura en memoria, el sistema de memoria está configurado para decodificar la dirección de escritura en una selección de fila de escritura y una selección de columna de escritura para seleccionar la columna de células de bits de memoria en la fila de células de bits de memoria de la dirección de escritura para la operación de escritura en memoria. Por tanto, se puede acceder a cada dirección de memoria para la operación de lectura y escritura de memoria de acuerdo con sus respectivas selecciones de fila y columna de lectura y escritura decodificadas por separado. Sin embargo, no se pueden seleccionar múltiples filas de células de bits de memoria en la matriz de memoria en respuesta a una operación de escritura en memoria, porque los datos de escritura se escribirán en múltiples filas de células de bits de memoria (es decir, más de una ubicación de dirección de memoria) de una manera no deseada. Por tanto, en los ejemplos divulgados en el presente documento, el sistema de memoria está configurado para priorizar la selección de fila de escritura para la operación de escritura en memoria sobre la selección de fila de lectura para seleccionar la fila de células de bits de memoria a la que se accede. Si la selección de fila de lectura y escritura está en la misma fila de células de bits de memoria, serán válidos tanto los datos de lectura para la operación de lectura de memoria como los datos de escritura para la operación de escritura en memoria en una operación simultánea de lectura y escritura de memoria. Sin embargo, si las selecciones de fila de lectura y escritura no están en la misma fila de células de bits de memoria, solo se puede confiar en que la operación de escritura en memoria es exitosa ya que el sistema de memoria prioriza la selección de fila de escritura sobre la selección de fila de lectura para evitar un conflicto de circuito al seleccionar varias filas de células de bits de memoria en la matriz de memoria. La operación de escritura en memoria es exitosa independientemente de si hay una operación de lectura y escritura de memoria simultáneas en la misma columna de células de bits de memoria o en diferentes columnas.
[0013] En otros aspectos a modo de ejemplo divulgados en el presente documento, aunque una operación simultánea de lectura y escritura de memoria proporcionará que una operación de escritura en memoria siempre sea exitosa, no obstante, puede ser deseable minimizar también la ocurrencia de operaciones simultáneas de lectura y escritura de memoria para aumentar el éxito de la operación de lectura de memoria. En este sentido, la matriz de memoria en el sistema de memoria se puede segregar en varias submatrices de memoria, cada una de las cuales tiene un tamaño de almacenamiento menor que el tamaño de almacenamiento total del sistema de memoria. Se admiten las operaciones simultáneas de lectura y escritura de memoria cuando dichas operaciones de lectura y escritura de memoria se realizan en direcciones de memoria en diferentes submatrices de memoria sin necesidad de priorizar una selección de fila de escritura sobre una selección de fila de lectura para una operación de escritura en memoria. Por ejemplo, la organización de submatrices de memoria puede basarse en el conocimiento estadístico de la localización de las direcciones a las que se accede en las operaciones de lectura y escritura de la memoria. Por ejemplo, una memoria caché puede exhibir una fuerte localización de referencia para las operaciones de lectura y escritura de la memoria. Sin embargo, si las operaciones simultáneas de lectura y escritura de la memoria son para una dirección en la misma submatriz de memoria, las submatrices de memoria se pueden configurar para separar la decodificación de direcciones de lectura y escritura como se analizó anteriormente para admitir operaciones simultáneas de lectura y escritura de memoria. Esto puede permitir que las submatrices de memoria tengan un tamaño mayor que en los sistemas de memoria que no separan la decodificación de direcciones de lectura y escritura para minimizar la complejidad en el encaminamiento y PPA del sistema de memoria.
[0014] A este respecto, en un aspecto a modo de ejemplo, se proporciona un circuito de selección de células de bits de memoria para un sistema de memoria. El circuito de selección de células de bits de memoria está
configurado para, en respuesta a una operación de escritura en memoria, recibir una selección de fila de escritura que indica una fila de células de bits de memoria entre una pluralidad de filas de células de bits de memoria en una matriz de memoria correspondiente a una dirección de escritura en memoria para la operación de escritura en memoria. El circuito de selección de células de bits de memoria también está configurado para, en respuesta a la operación de escritura en memoria, recibir una selección de columna de escritura que indica una columna de células de bits de memoria entre una pluralidad de columnas de células de bits de memoria en la matriz de memoria correspondiente a la dirección de escritura en memoria para la operación de escritura en memoria. El circuito de selección de células de bits de memoria también está configurado para, en respuesta a la operación de escritura en memoria, seleccionar la columna de células de bits de memoria de las células de bits de memoria en la matriz de memoria direccionada por la selección de columna de escritura. El circuito de selección de células de bits de memoria también está configurado para, en respuesta a la operación de escritura en memoria, generar una selección de fila de lectura/escritura que indica la operación de escritura en memoria. El circuito de selección de células de bits de memoria también está configurado para, en respuesta a la operación de escritura en memoria, seleccionar la fila de células de bits de memoria de células de bits de memoria en la matriz de memoria direccionada por la selección de fila de escritura en respuesta a la selección de fila de lectura/escritura que indica la operación de escritura en memoria. El circuito de selección de células de bits de memoria también está configurado para, en respuesta a una operación de lectura de memoria, recibir una selección de fila de lectura que indica una fila de células de bits de memoria entre la pluralidad de filas de células de bits de memoria en la matriz de memoria correspondiente a una dirección de lectura de memoria para la operación de lectura de memoria. El circuito de selección de células de bits de memoria también está configurado para, en respuesta a la operación de lectura de memoria, recibir una selección de columna de lectura que indica una columna de células de bits de memoria entre la pluralidad de columnas de células de bits de memoria en la matriz de memoria correspondiente a la dirección de lectura de memoria para la operación de lectura de memoria. El circuito de selección de células de bits de memoria también está configurado para, en respuesta a la operación de lectura de memoria, seleccionar la columna de células de bits de memoria de las células de bits de memoria en la matriz de memoria direccionada por la selección de columna de lectura. El circuito de selección de células de bits de memoria también está configurado para, en respuesta a la operación de lectura de memoria, generar una selección de fila de lectura/escritura que indica la operación de lectura de memoria en respuesta a que la operación de escritura en memoria no está presente para la operación de lectura de memoria. El circuito de selección de células de bits de memoria también está configurado para, en respuesta a la operación de lectura de memoria, seleccionar la fila de células de bits de memoria de las células de bits de memoria en la matriz de memoria direccionada por la selección de fila de lectura en respuesta a la selección de fila de lectura/escritura que indica la operación de lectura de memoria.
[0015] En otro aspecto a modo de ejemplo, se proporciona un circuito de selección de células de bits de memoria para un sistema de memoria. El circuito de selección de células de bits de memoria comprende unos medios para recibir una selección de fila de escritura que indica una fila de células de bits de memoria entre una pluralidad de filas de células de bits de memoria en una matriz de memoria correspondiente a una dirección de escritura en memoria para una operación de escritura en memoria. El circuito de selección de células de bits de memoria también comprende unos medios para recibir una selección de columna de escritura que indica una columna de células de bits de memoria entre una pluralidad de columnas de células de bits de memoria en la matriz de memoria correspondiente a la dirección de escritura en memoria para la operación de escritura en memoria. El circuito de selección de células de bits de memoria también comprende unos medios para seleccionar la columna de células de bits de memoria de células de bits de memoria en la matriz de memoria direccionada por los medios para recibir la selección de columna de escritura. El circuito de selección de células de bits de memoria también comprende unos medios para generar una selección de fila de lectura/escritura que indica la operación de escritura en memoria. El circuito de selección de células de bits de memoria también comprende unos medios para recibir una selección de fila de lectura que indica una fila de células de bits de memoria entre la pluralidad de filas de células de bits de memoria en la matriz de memoria correspondiente a una dirección de lectura de memoria para una operación de lectura de memoria. El circuito de selección de células de bits de memoria también comprende unos medios para recibir una selección de columna de lectura que indica una columna de células de bits de memoria entre la pluralidad de columnas de células de bits de memoria en la matriz de memoria correspondiente a la dirección de lectura de memoria para la operación de lectura de memoria. El circuito de selección de células de bits de memoria también comprende unos medios para seleccionar la columna de células de bits de memoria de células de bits de memoria en la matriz de memoria direccionada por los medios para recibir la selección de columna de lectura. El circuito de selección de células de bits de memoria también comprende unos medios para generar una selección de fila de lectura/escritura que indica la operación de lectura de memoria en respuesta a que la operación de escritura en memoria no está presente para la operación de lectura de memoria. El circuito de selección de células de bits de memoria también comprende unos medios para seleccionar la fila de células de bits de memoria de las células de bits de memoria en la matriz de memoria direccionada por la selección de fila de escritura en respuesta a los medios para generar la selección de fila de lectura/escritura que indica la operación de escritura en memoria. El circuito de selección de células de bits de memoria también comprende unos medios para seleccionar la fila de células de bits de memoria de las células de bits de memoria en la matriz de memoria direccionada por la selección de fila de lectura en respuesta a los medios para generar la selección de fila de lectura/escritura que indica la operación de lectura de memoria.
[0016] En otro aspecto a modo de ejemplo, se proporciona un procedimiento para realizar una operación de lectura y escritura de memoria en una matriz de memoria en un sistema de memoria. El procedimiento comprende recibir una selección de fila de escritura que indica una fila de células de bits de memoria entre una pluralidad de filas de células de bits de memoria en una matriz de memoria correspondiente a una dirección de escritura en memoria para una operación de escritura en memoria. El procedimiento también comprende recibir una selección de columna de escritura que indica una columna de células de bits de memoria entre una pluralidad de columnas de células de bits de memoria en la matriz de memoria correspondiente a la dirección de escritura en memoria para la operación de escritura en memoria. El procedimiento también comprende recibir una selección de fila de lectura que indica una fila de células de bits de memoria entre la pluralidad de filas de células de bits de memoria en la matriz de memoria correspondiente a una dirección de lectura de memoria para una operación de lectura de memoria. El procedimiento también comprende recibir una selección de columna de lectura que indica una columna de células de bits de memoria entre la pluralidad de columnas de células de bits de memoria en la matriz de memoria correspondiente a la dirección de lectura de memoria para la operación de lectura de memoria. El procedimiento también comprende seleccionar la columna de células de bits de memoria de células de bits de memoria en la matriz de memoria direccionada por la selección de columna de escritura. El procedimiento también comprende seleccionar la columna de células de bits de memoria de células de bits de memoria en la matriz de memoria direccionada por la selección de fila de lectura. El procedimiento también comprende generar una selección de fila de lectura/escritura que indica la operación de escritura en memoria en respuesta a que la operación de escritura en memoria que está presente. El procedimiento también comprende seleccionar la fila de células de bits de memoria de las células de bits de memoria en la matriz de memoria direccionada por la selección de fila de escritura en respuesta a la selección de fila de lectura/escritura que indica la operación de escritura en memoria.
[0017] En otro aspecto a modo de ejemplo, se proporciona un sistema de memoria. El sistema de memoria comprende una matriz de memoria que comprende una pluralidad de células de bits de memoria organizadas en una pluralidad de filas de células de bits de memoria y una pluralidad de columnas de células de bits de memoria. El sistema de memoria también comprende un circuito decodificador de lectura/escritura. El circuito decodificador de lectura/escritura está configurado para decodificar una dirección de lectura de memoria en una operación de lectura de memoria en una selección de fila de lectura que indica una fila de células de bits de memoria entre la pluralidad de filas de células de bits de memoria en la matriz de memoria correspondiente a la dirección de lectura de memoria, y una selección de columna de lectura que indica una columna de células de bits de memoria entre la pluralidad de columnas de células de bits de memoria en la matriz de memoria correspondiente a la dirección de lectura de memoria. El circuito decodificador de lectura/escritura está configurado para decodificar una dirección de escritura en memoria una operación de escritura en memoria en una selección de fila de escritura que indica una fila de células de bits de memoria entre la pluralidad de filas de células de bits de memoria en la matriz de memoria correspondiente a la dirección de escritura en memoria, y un selección de columna de escritura que indica una columna de células de bits de memoria entre la pluralidad de columnas de células de bits de memoria en la matriz de memoria correspondiente a la dirección de escritura en memoria. El sistema de memoria también comprende al menos un circuito de selección de células de bits de memoria. Cada circuito de selección de células de bits de memoria está configurado para, en respuesta a la operación de escritura en memoria, seleccionar una columna de células de bits de memoria entre la pluralidad de columnas de células de bits de memoria en la matriz de memoria direccionada por la selección de columna de escritura. Cada circuito de selección de células de bits de memoria también está configurado para, en respuesta a la operación de escritura en memoria, generar una selección de fila de lectura/escritura que indica la operación de escritura en memoria. Cada circuito de selección de células de bits de memoria está configurado, además, para, en respuesta a la operación de escritura en memoria, seleccionar una fila de células de bits de memoria entre la pluralidad de filas de células de bits de memoria en la matriz de memoria direccionada por la selección de fila de escritura en respuesta a la selección de fila de lectura/escritura que indica la operación de escritura en memoria. Cada circuito de selección de células de bits de memoria está configurado para, en respuesta a la operación de lectura de memoria, seleccionar una columna de células de bits de memoria entre la pluralidad de columnas de células de bits de memoria en la matriz de memoria direccionada por la selección de columna de lectura. Cada circuito de selección de células de bits de memoria también está configurado para, en respuesta a la operación de lectura de memoria, generar una selección de fila de lectura/escritura que indica la operación de lectura de memoria en respuesta a que la operación de escritura en memoria no está presente para la operación de lectura de memoria. Cada circuito de selección de células de bits de memoria también está configurado para, en respuesta a la operación de lectura de memoria, seleccionar una fila de células de bits de memoria de células de bits de memoria en la matriz de memoria direccionada por la selección de fila de lectura en respuesta a la selección de fila de lectura/escritura que indica la operación de lectura de memoria.
BREVE DESCRIPCIÓN DE LAS FIGURAS
[0018]
La Figura 1 es un diagrama esquemático de un sistema de memoria basado en procesador a modo de ejemplo que emplea un sistema de memoria de acceso aleatorio estática (SRAM) que comprende una matriz de datos de células de bits de memoria estática organizadas en filas y columnas de células de bits para almacenar datos;
la Figura 2 es un diagrama de circuito de una célula de bits de SRAM de seis (6) transistores (T) (6T) de un solo puerto que se puede emplear en la matriz de datos en el sistema de SRAM de la Figura 1;
la Figura 3 es un diagrama de circuito de una célula de bits de SRAM de ocho (8) transistores (T) (8T) de puertos múltiples que se puede emplear en la matriz de datos en el sistema de SRAM de la Figura 1;
la Figura 4 es un diagrama de circuito de un sistema de memoria a modo de ejemplo que se puede proporcionar en un sistema basado en procesador, en el que el sistema de memoria incluye una o más submatrices de memoria y un circuito decodificador global configurado para decodificar por separado las direcciones de lectura y escritura en selecciones de fila y columna de lectura y escritura, y en el que cada submatriz de memoria está configurada para priorizar una selección de fila de escritura sobre una selección de fila de lectura para admitir operaciones simultáneas de lectura y escritura de memoria en la submatriz de memoria;
la Figura 5 es un diagrama de circuito a modo de ejemplo de una submatriz de memoria que se puede proporcionar en el sistema de memoria de la Figura 4, en el que la submatriz de memoria incluye un circuito de generación de reloj de lectura/escritura para generar un reloj de lectura y escritura separados para las respectivas operaciones de lectura y escritura de memoria, y circuitos de selección de fila configurados para seleccionar entre una selección de fila de lectura y una selección de fila de escritura para activar una fila de células de bits de memoria asociada;
la Figura 6 es una tabla que ilustra las condiciones de dirección en la submatriz de memoria de la Figura 5 para una operación simultánea de lectura y escritura de memoria;
la Figura 7 es un diagrama de flujo que ilustra un proceso a modo de ejemplo de realizar una operación simultánea de lectura y escritura de memoria en la submatriz de memoria de la Figura 5;
la Figura 8 es un diagrama de circuito de un circuito de control de temporización de reloj que se puede incluir en el circuito de generación de reloj de lectura/escritura en la submatriz de memoria en la Figura 5 para mantener activa una señal de reloj de escritura durante una operación simultánea de lectura y escritura siempre que una señal de reloj de lectura está activa para la operación de lectura para admitir operaciones simultáneas de lectura y escritura de memoria en la submatriz de memoria;
la Figura 9 es un diagrama de temporización que ilustra una temporización a modo de ejemplo de señales generadas por el circuito de control de temporización de reloj de la Figura 8 en respuesta a una señal de reloj de lectura y una señal de reloj de escritura; y
la Figura 10 es un diagrama de bloques de un sistema basado en procesador a modo de ejemplo que puede incluir un sistema de memoria configurado para decodificar por separado las direcciones de lectura y escritura en filas y columnas de lectura y escritura, y priorizar una selección de fila de escritura sobre una selección de fila de lectura para admitir operaciones simultáneas de lectura y escritura de memoria, incluidos, entre otros, los sistemas de memoria de las Figuras 4 y 5.
DESCRIPCIÓN DETALLADA
[0019] Con referencia ahora a las figuras de los dibujos, se describen varios aspectos a modo de ejemplo de la presente divulgación. El término "a modo de ejemplo" se usa en el presente documento para querer decir "que sirve como ejemplo, caso o ilustración". Cualquier aspecto descrito en el presente documento como "a modo de ejemplo" no se ha de interpretar necesariamente como preferente o ventajoso con respecto a otros aspectos.
[0020] Los aspectos de la presente divulgación implican la decodificación separada de direcciones de lectura y escritura en un sistema de memoria para admitir operaciones simultáneas de lectura y escritura de memoria. Al separar la decodificación de direcciones de lectura y escritura, un sistema de memoria puede evitar conflictos de circuitos incluso si emplea células de bits de memoria de un solo puerto que solo incluyen un puerto para realizar operaciones de lectura y escritura de la memoria. Puede ser deseable emplear células de bits de memoria de un solo puerto en el sistema de memoria como un ejemplo no limitativo para minimizar la potencia, el rendimiento y el área (PPA) del sistema de memoria.
[0021] A este respecto, en aspectos a modo de ejemplo divulgados en el presente documento, un sistema de memoria incluye una matriz de memoria que comprende una pluralidad de células de bits de memoria organizadas en filas y columnas de células de bits de memoria. Las células de bits de memoria pueden ser células de bits de memoria de acceso aleatorio estática (SRAM) como ejemplo no limitativo. La dirección de lectura y escritura de las respectivas operaciones de lectura y escritura de memoria solicitadas desde el sistema de memoria se decodifican por separado y son accionadas en la matriz de memoria para que las operaciones simultáneas de lectura y escritura de memoria no se vean afectadas entre sí. En este sentido, para una operación de lectura de memoria, el sistema de memoria está configurado para decodificar la dirección de lectura en una selección de fila de lectura y una
selección de columna de lectura para seleccionar la columna de células de bits de memoria en la fila de células de bits de memoria de la dirección de lectura para la operación de lectura de memoria. Para una operación de escritura en memoria, el sistema de memoria está configurado para decodificar la dirección de escritura en una selección de fila de escritura y una selección de columna de escritura para seleccionar la columna de células de bits de memoria en la fila de células de bits de memoria de la dirección de escritura para la operación de escritura en memoria. Por tanto, se puede acceder a cada dirección de memoria para la operación de lectura y escritura de memoria de acuerdo con sus respectivas selecciones de fila y columna de lectura y escritura decodificadas por separado. Sin embargo, no se pueden seleccionar múltiples filas de células de bits de memoria en la matriz de memoria en respuesta a una operación de escritura en memoria, porque los datos de escritura se escribirán en múltiples filas de células de bits de memoria (es decir, más de una ubicación de dirección de memoria) de una manera no deseada. Por tanto, en los ejemplos divulgados en el presente documento, el sistema de memoria está configurado para priorizar la selección de fila de escritura para la operación de escritura en memoria sobre la selección de fila de lectura para seleccionar la fila de células de bits de memoria a la que se accede. Si la selección de fila de lectura y escritura está en la misma fila de células de bits de memoria, serán válidos tanto los datos de lectura para la operación de lectura de memoria como los datos de escritura para la operación de escritura en memoria en una operación simultánea de lectura y escritura de memoria. Sin embargo, si las selecciones de fila de lectura y escritura no están en la misma fila de células de bits de memoria, solo se puede confiar en que la operación de escritura en memoria es exitosa ya que el sistema de memoria prioriza la selección de fila de escritura sobre la selección de fila de lectura para evitar un conflicto de circuito al seleccionar varias filas de células de bits de memoria en la matriz de memoria. La operación de escritura en memoria es exitosa independientemente de si hay una operación de lectura y escritura de memoria simultáneas en la misma columna de células de bits de memoria o en diferentes columnas.
[0022] La Figura 4 es un diagrama de un sistema de memoria 400 a modo de ejemplo que puede proporcionarse en un sistema basado en procesador para admitir operaciones de lectura y escritura de memoria para almacenar datos. El sistema de memoria 400 se puede proporcionar en un circuito integrado (CI) 402. Además, el sistema de memoria 400 puede proporcionarse como parte de un sistema en un chip (SoC) 404 con un procesador y otros componentes basados en procesador. El sistema de memoria 400 está configurado para realizar operaciones de lectura y escritura de memoria en células de bits de memoria en una matriz de memoria 406 en respuesta a solicitudes de lectura y escritura de memoria de un procesador u otro dispositivo maestro. Por ejemplo, el sistema de memoria 400 puede ser una memoria caché accesible por un procesador en un sistema basado en procesador para almacenar y recuperar datos almacenados en caché. La matriz de memoria 406 puede incluir una o más submatrices de memoria 408(1 )-408(S), cada una de las cuales contiene células de bits de memoria 410 que son accesibles para operaciones de lectura y escritura de memoria. Cada submatriz de memoria 408(1 )-408(S) es un subconjunto direccionable de forma única del espacio direccionable en la matriz de memoria 406 en este ejemplo. Las células de bits de memoria 410 se muestran para la submatriz de memoria 408(1) como ejemplo. Como se muestra allí, las células de bits de memoria 410 están organizadas en filas de células de bits de memoria R(0)-R(N) y columnas de células de bits de memoria C(O)-C(M). Las submatrices de memoria 408(1)-408(S) pueden configurarse para proporcionar su propio circuito de acceso dedicado de manera que las operaciones de memoria realizadas en una submatriz de memoria 408(1)-408(S) sean independientes de las operaciones de memoria realizadas en otra submatriz de memoria 408(1 )-408(S). Por ejemplo, si el sistema de memoria 400 se proporciona en un sistema basado en procesador que admite operaciones simultáneas de lectura y escritura de memoria, las operaciones de lectura y escritura de memoria que son direccionadas a diferentes submatrices de memoria 408(1 )-408(S) pueden ser realizadas simultáneamente en sus respectivas submatrices de memoria 408(1)-408(S) sin interferir entre sí.
[0023] Continuando con la referencia a la Figura 4, el sistema de memoria 400 en este ejemplo incluye un circuito de control global 412. El circuito de control global 412 está configurado para recibir solicitudes de operación de memoria. A este respecto, el circuito de control global 412 está configurado para recibir una señal de lectura R para indicar una solicitud de lectura de memoria al sistema de memoria 400 para realizar una operación de lectura de memoria. El circuito de control global 412 está configurado para recibir una dirección de lectura de memoria (rd_mem_addr) 414 en respuesta a la operación de lectura de memoria para indicar la dirección de memoria de las células de bits de memoria 410 en la matriz de memoria 406 a leer. Los datos de lectura (rd_data) 416 de X+1 bits (X:0) en la dirección de lectura de memoria (rd_mem_addr) 414 en la matriz de memoria 406 se proporcionan a un circuito de entrada/salida (E/S) de datos de lectura/escritura (RD/WR) global 418, que luego se pueden proporcionar al dispositivo solicitante en el sistema basado en procesador. Por ejemplo, X+1 bits pueden ser el acceso de tamaño de palabra en la matriz de memoria 406. El circuito de control global 412 también está configurado para recibir una señal de escritura W para indicar una solicitud de escritura en memoria al sistema de memoria 400 para realizar una operación de escritura en memoria. El circuito de control global 412 está configurado para recibir una dirección de escritura en memoria (wr_mem_addr) 420 en respuesta a la operación de lectura de memoria para indicar la dirección de memoria de las células de bits de memoria en la matriz de memoria 406 a escribir. Los datos de escritura (wr_data) 422 de X+1 bits (X:0) que se escribirán en las células de bits de memoria 410 en la dirección de escritura en memoria (wr_mem_addr) 420 en la matriz de memoria 406 se proporcionan al circuito de E/S de datos RD/WR global 416.
[0024] El tamaño de las submatrices de memoria 408(1)-408(S) puede seleccionarse para proporcionar la
ocurrencia estadística deseada de operaciones simultáneas de lectura y escritura de memoria direccionadas a diferentes submatrices de memoria 408(1)-408(S). Cuanto menor sea el tamaño de las submatrices de memoria 408(1)-408(S) en el espacio total de memoria direccionable, mayor será la probabilidad de que las operaciones simultáneas de lectura y escritura de memoria se direccionen a diferentes submatrices de memoria 408(1 )-408(S). Sin embargo, como se analiza con más detalle a continuación, el sistema de memoria 400 en la Figura 4 está configurado para decodificar por separado la dirección de lectura de memoria (rd_mem_addr) 414 y la dirección de escritura en memoria (wr_mem_addr) 420 para las respectivas operaciones de lectura y escritura de memoria para permitir que las operaciones de lectura y escritura de memoria en la misma submatriz de memoria 408(1)-408(S) sean realizadas simultáneamente. Por lo tanto, como ejemplo, esto puede permitir que el número de submatrices de memoria separadas 408(1)-408(S) se reduzca, incluso hasta una (1) submatriz de memoria 408, mientras se admiten operaciones simultáneas de lectura y escritura de memoria. Además, como se analizará con más detalle a continuación, decodificar por separado la dirección de lectura de memoria (rd_mem_addr) 414 y la dirección de escritura en memoria (wr_mem_addr) 420 para las respectivas operaciones de lectura y escritura de memoria puede permitir el uso de células de bits de memoria de un solo puerto 410, que pueden tener un área reducida sobre las células de bits de memoria de múltiples puertos 410 que pueden requerir más área para más transistores y, por lo tanto, implicar un encaminamiento más complejo, siendo por lo tanto más ineficientes en términos de PPA.
[0025] En este sentido, siguiendo con la referencia a la Figura 4, para acceder a la célula de bits de memoria 410 en la matriz de memoria 406 en la dirección de lectura de memoria (rd_mem_addr) 414 en la matriz de memoria 406 en respuesta a una operación de lectura de memoria, el circuito de control global 412 proporciona la dirección de lectura de memoria (rd_mem_addr) 414 a un circuito decodificador de lectura/escritura 424. El circuito decodificador de lectura/escritura 424 es global para todas las submatrices de memoria 408(1)-408(S) en este ejemplo. El circuito decodificador de lectura/escritura 424 está configurado para decodificar por separado la dirección de lectura de memoria (rd_mem_addr) 414 en una selección de fila de lectura (rd_row_sel) 426 que indica una fila de células de bits de memoria R entre una pluralidad de filas de células de bits de memoria R(0)-R(N) en la matriz de memoria 406 correspondientes a la dirección de lectura de memoria (rd_mem_addr) 414. El circuito decodificador de lectura/escritura 424 también está configurado para decodificar la dirección de lectura de memoria (rd_mem_addr) 414 en una selección de columna de lectura (rd_col_sel) 428 que indica una columna de células de bits de memoria C entre la pluralidad de columnas de células de bits de memoria C(O)-C(M) en la matriz de memoria correspondiente a la dirección de lectura de memoria (rd_mem_addr) 414. El circuito decodificador de lectura/escritura 424 también está configurado para generar una señal de reloj de lectura (rd_clk) 430 para ser proporcionada a la matriz de memoria 406 a los circuitos de reloj involucrados en el control de la lectura de datos de las células de bits de memoria seleccionadas 410 en la fila R y la columna C seleccionadas de acuerdo con la selección de fila de lectura (rd_row_sel) 426 y la selección de columna de lectura (rd_col_sel) 428.
[0026] De manera similar, para una operación de escritura en memoria, el circuito de control global 412 proporciona la dirección de escritura en memoria (wr_mem_addr) 420 al circuito decodificador de lectura/escritura 424. El circuito decodificador de lectura/escritura 424 está configurado para decodificar por separado la dirección de escritura en memoria (wr_mem_addr) 420 en una selección de fila de escritura (wr_row_sel) 432 que indica una fila de células de bits de memoria R entre una pluralidad de filas de células de bits de memoria R(0)-R(N) en la matriz de memoria 406 correspondiente a la dirección de escritura en memoria (wr_mem_addr) 420. El circuito decodificador de lectura/escritura 424 también está configurado para decodificar la dirección de escritura en memoria (wr_mem_addr) 420 en una selección de columna de escritura (wr_col_sel) 434 que indica una columna de células de bits de memoria C entre la pluralidad de columnas de células de bits de memoria C(O)-C(M) en la matriz de memoria 406 correspondiente a la dirección de escritura en memoria (wr_mem_addr) 420. El circuito decodificador de lectura/escritura 424 también está configurado para generar una señal de reloj de escritura (wr_clk) 436 que se proporcionará a la matriz de memoria 406 a los circuitos de reloj involucrados en el control de la escritura de datos en las células de bits de memoria seleccionadas 410 en la fila R y la columna C seleccionadas de acuerdo con la selección de fila de escritura (wr_row_sel) 432 y la selección de columna de escritura (wr_col_sel) 434.
[0027] Mediante el circuito decodificador de lectura/escritura 424 en el sistema de memoria 400 en la Figura 4 decodificando por separado la dirección de lectura de memoria (rd_mem_addr) 414 y la dirección de escritura en memoria (wr_mem_addr) 420 para las respectivas operaciones de lectura y escritura de memoria, la matriz de memoria 406 está configurada para manejar operaciones simultáneas de lectura y escritura de memoria direccionadas a la misma submatriz de memoria 408(1)-408(S). La selección de fila de lectura (rd_row_sel) 426 y la selección de columna de lectura (rd_col_sel) 428 se generan por separado e independientemente de la selección de fila de escritura (wr_row_sel) 432 y la selección de columna de escritura (wr_col_sel) 434. En este sentido, un circuito de selección de células de bits de memoria 436(1)-436(S) en una submatriz de memoria direccionada 408(1 )-408(S) usa la selección de fila de lectura (rd_row_sel) 426 y la selección de columna de lectura (rd_col_sel) 428 para seleccionar una fila de células de bits de memoria R y una columna de células de bits de memoria C de las células de bits de memoria 410 en la submatriz de memoria direccionada 408(1 )-408(S) para una operación de lectura de memoria. El circuito de selección de células de bits de memoria 436(0)-436(S) en la submatriz de memoria direccionada 408(1)-408(S) también usa la selección de fila de escritura (wr_row_sel) 432 y la selección de columna de escritura (wr_col_sel) 434 para seleccionar independientemente una fila de células de bits de
memoria R y la columna de células de bits de memoria C de las células de bits de memoria 410 en la submatriz de memoria direccionada 408(1)-408(S) para una operación de escritura en memoria.
[0028] Aunque el circuito decodificador de lectura/escritura 424 en la Figura 4 está configurado para generar por separado la selección de fila de lectura (rd_row_sel) 426 y la selección de columna de lectura (rd_col_sel) 428 para una operación de lectura de memoria y la selección de fila de escritura (wr_row_sel) 432 y la selección de columna de escritura (wr_col_sel) 434 para una operación de escritura en memoria para permitir que una submatriz de memoria 408(1)-408(S) admita operaciones simultáneas de lectura y escritura de memoria, no se pueden seleccionar filas de células de bits de memoria R(0)-R(N) diferentes al mismo tiempo para una operación de escritura en memoria. De lo contrario, los datos de escritura (wr_data) 422 proporcionados para la operación de escritura en memoria sobrescribirán múltiples filas de células de bits de memoria seleccionadas R(0)-R(N) de una manera no intencionada. Por lo tanto, para evitar este conflicto de circuito en la matriz de memoria 406 para una operación simultánea de lectura y escritura de memoria, los circuitos de selección de células de bits de memoria 436(1)-436(S) en las submatrices de memoria 408(1)-408(S) en la Figura 4 están configurados para priorizar la selección de fila de escritura (wr_row_sel) 432 sobre la selección de fila de lectura (rd_row_sel) 426 para activar la fila R de células de bits de memoria 410 en la matriz de memoria 406. Por tanto, en una operación simultánea de lectura y escritura en memoria, los datos de escritura (wr_data) 422 se escriben en las células de bits de memoria 410 para la fila de células de bits de memoria seleccionada R de acuerdo con la dirección de escritura (wr_mem_addr) 420 como prioridad. Por lo tanto, si la selección de fila de lectura (rd_row_sel) 426 y la selección de fila de escritura (wr_row_sel) 432 están en la misma fila de células de bits de memoria R, los datos de escritura (wr_data) 422 para la operación de escritura en memoria y los datos de lectura (rd_data) 416 para la operación de escritura en memoria serán válidos. Sin embargo, si la selección de fila de lectura (rd_row_sel) 426 y la selección de fila de escritura (wr_row_sel) 432 no están en la misma fila de células de bits de memoria R, solo se puede confiar en que la operación de escritura en memoria será exitosa ya que los circuitos de selección de células de bits de memoria 436(1 )-436(S) priorizan la selección de fila de escritura (wr_row_sel) 432 sobre la selección de fila de lectura (rd_row_sel) 426 para una operación simultánea de lectura y escritura de memoria en la misma submatriz de memoria 408(1)-408(S). De esta manera, la operación de escritura en memoria es exitosa independientemente de si hay una operación simultánea de lectura y escritura de memoria en las mismas columnas de células de bits de memoria C(O)-C(M) o en diferentes columnas.
[0029] Para proporcionar más detalles a modo de ejemplo de un circuito de selección de células de bits de memoria que se puede proporcionar en una submatriz de memoria para recibir direcciones de lectura y escritura decodificadas por separado de operaciones de lectura y escritura de memoria, y priorizar una selección de fila de escritura sobre una selección de fila de lectura para admitir operaciones simultáneas de lectura y escritura de memoria, se proporciona la Figura 5. La Figura 5 es un diagrama de circuito a modo de ejemplo de una submatriz de memoria 500 que se puede proporcionar en el sistema de memoria 400 en la Figura 4. La submatriz de memoria 500 incluye un circuito de selección de células de bits de memoria 502. La submatriz de memoria 500 puede incluirse como cualquiera de las submatrices de memoria 408(1 )-408(S) en el sistema de memoria 400 en la Figura 4. El circuito de selección de células de bits de memoria 502 puede proporcionarse como cualquiera de los circuitos de selección de células de bits de memoria 436(1)-436(S) en las submatrices de memoria 408(1)-408(S) en la Figura 4.
[0030] Con referencia a la Figura 5, el circuito de selección de células de bits de memoria 502 está configurado para recibir la selección de fila de lectura (rd_row_sel) 426, la selección de columna de lectura (rd_col_sel) 428 y el reloj de lectura (rd_clk) 430 en respuesta a una operación de lectura de memoria direccionada a una dirección de lectura de memoria en la submatriz de memoria 500. El circuito de selección de células de bits de memoria 502 también está configurado para recibir la selección de fila de escritura (wr_row_sel) 432, la selección de columna de escritura (wr_col_sel) 434 y el reloj de escritura (wr_clk) 436 en respuesta a una operación de escritura en memoria direccionada a una dirección de escritura en memoria en la submatriz de memoria 500. Si una operación de lectura y escritura de memoria es para direcciones de lectura y escritura de memoria ambas en la submatriz de memoria 500, el circuito de selección de células de bits de memoria 502 recibe por separado la selección de fila de lectura (rd_row_sel) 426, la selección de columna de lectura (rd_col_sel) 428 y el reloj de lectura (rd_clk) 430, y la selección de fila de escritura (wr_row_sel) 432, la selección de columna de escritura (wr_col_sel) 434 y el reloj de escritura (wr_clk) 436 tanto para las operaciones de lectura como de escritura en memoria.
[0031] Continuando con la referencia a la Figura 5, el circuito de selección de células de bits de memoria 502 incluye un circuito de generación de reloj de lectura/escritura (RD/WR) 503 en este ejemplo. En respuesta a una operación de escritura en memoria, el circuito de generación de reloj de RD/WR 503 está configurado para generar una selección de columna de escritura (wr_col_sel <0> - wr_col_sel<M>) 504(0)-504(M) correspondiente a la columna de células de bits de memoria C(O)-C(M) correspondiente a la selección de columna de escritura (wr_col_sel) 434 proporcionada por el circuito decodificador de lectura/escritura 424 en la Figura 4. También en respuesta a una operación de escritura en memoria, el circuito de generación de reloj RD/WR 503 también está configurado para generar una señal de reloj de escritura de columna (col_wr_clk) 506. La selección de columna de escritura generada (wr_col_sel <0> - wr_col_sel<M>) 504(0)-504(M) activa un circuito controlador de columna de escritura 508(0)-508(M) correspondiente en la columna de células de bits de memoria seleccionada C(O)-C(M) para accionar los datos de escritura correspondientes (wr_data) 422 a las líneas de bits BL(0)(0)-BL(0)(X)-BL(M)(0)BL(M)(X) y a las líneas de bits complementarias BLB(0)(0)-BLB(0)(X) - BLB(M)(0)-BLB(M)(X) que se escribirán en las células de bits de memoria 410(0)()(0)-410(M)()(X) correspondientes a la columna de células de bits de memoria seleccionada C(O)-C(M). Las células de bits de memoria 410(0)()(0)-410(M)()(X) pueden ser células de bits de SRAM, por ejemplo, que solo incluyen un puerto de acceso para realizar operaciones de lectura y escritura de memoria. Por ejemplo, las células de bits de memoria 410(0)()(0)-410(M)()(X) pueden ser cada una células de bits de memoria de SRAM 6T como o similares a la célula 102 de bits de SRAM en la Figura 2. La señal de reloj de escritura de columna (col_wr_clk) 506 es usada por la columna de células de bits de memoria seleccionada C(O)-C(M) para accionar la temporización de operación del circuito controlador de columna de escritura 508(0)-508(M).
[0032] Continuando con la referencia a la Figura 5, en respuesta a una operación de lectura de memoria, el circuito de generación de reloj de lectura/escritura está configurado para generar una señal de precarga de línea de bits (bl_prech) 510 para hacer que los circuitos de precarga de línea de bits 512(0)-512(M) para precargar las líneas de bits BL(0)(0)-BL(0)(X) - BL(M)(0)-BL(M)(X) y las líneas de bits complementarias BLB(0)(0)-BLB(0)(X) -BLB(M)(0)-BLB(M)(X). Después de la precarga, el circuito de generación de reloj de RD/WR 503 está configurado para generar una selección de columna de lectura (rd_col_sel <0> - rd_col_sel<M>) 514(0)-514(M) correspondiente a la columna de células de bits de memoria C(O)-C(M) correspondiente a la selección de columna de lectura (rd_col_sel) 428 proporcionada por el circuito decodificador de lectura/escritura 424 en la Figura 4. También en respuesta a una operación de lectura de memoria, el circuito de generación de reloj de RD/WR 503 también está configurado para generar una señal de reloj de lectura de columna (col_rd_clk) 516. La selección de columna de lectura generada (rd_col_sel <0> - rd_col_sel<M>) 514(0)-514(M) activa un circuito de selección de columna de lectura 518(0)-518(M) correspondiente en la columna de células de bits de memoria C(O)-C(M) seleccionada. El circuito de selección de columna de lectura 518(0)-518(M) está configurado para seleccionar las líneas de bits BL(0)(0)-BL(0)(X) - BL(M)(0)-BL(M)(X) y las líneas de bit de complementarias b Lb (0)(0)-BLB(0)(X) -BLB(M)(0)-BLB(M)(X) correspondientes a la columna de células de bits de memoria C(O)-C(M) seleccionada. La señal de reloj de lectura de columna (col_rd_clk) 516 es utilizada por la columna de células de bits de memoria C(O)-C(M) seleccionada para accionar la temporización de operación del circuito de selección de columna de lectura 518(0)-518(M). El circuito de selección de columna de lectura 518(0)-518(M) también puede incluir amplificadores de detección configurados para detectar los datos leídos (rd_data) 416 afirmados en las líneas de bits BL(0)(0)-BL(0)(X) - BL(M)(0)-BL(M)(X) y las líneas de bits complementarias BLB(0)(0)-BLB(0)(X) - BLB(M)(0)-BLB(M)(X) por las células de bits de memoria 410(0)()(0)-410(M)()(X) correspondientes a la columna de células de bits de memoria C(O)-C(M) seleccionada.
[0033] Continuando con la referencia a la Figura 5, el circuito de selección de células de bits de memoria 502 también está configurado para seleccionar una fila de células de bits de memoria R(0)-R(N) en respuesta a una operación de lectura y/o escritura de memoria. Se proporciona una línea de palabras (WL(0)-WL(N)) 520(0)-520(N) para cada fila de células de bits de memoria R(0)-R(N) para activar las células de bits de memoria 410(0)(0)()-410(0)(N)() en una fila de células de bits de memoria R(0)-R(N) correspondiente para una operación de lectura y/o escritura de memoria. La selección de la línea de palabras (WL(0)-WL(N)) 520(0)-520(N) se controla mediante la selección de fila de lectura (rd_row_sel <0>-rd_row_sel<N>) 426(0)-426(N) correspondiente generada por el circuito decodificador de lectura/escritura 424 en la Figura 4 como se analizó previamente cuando el sistema de memoria 400 se direcciona para una operación de lectura de memoria. La selección de la línea de palabras (WL(0)-WL(N)) 520(0)-520(N) se controla mediante la selección de fila de escritura (wr_row_sel <0>-wr_row_sel<N>) 432(0)-432(N) correspondiente generada por el circuito decodificador de lectura/escritura 424 en la Figura 4 como se analizó previamente cuando el sistema de memoria 400 se direcciona para una operación de escritura en memoria.
[0034] Debido a que solo se puede activar una línea de palabras 520(0)-520(N) a la vez en respuesta a una operación de lectura y/o escritura de memoria, y la submatriz de memoria 500 está configurada para admitir operaciones simultáneas de lectura y escritura de memoria, el circuito de selección de células de bits de memoria 502 incluye una pluralidad de circuitos de selección de fila 522(0)-522(N), cada uno correspondiente a una fila de células de bits de memoria R(0)-R(N). En este ejemplo, los circuitos de selección de fila 522(0)-522(N) son circuitos multiplexores 524(0)-524(N). Los circuitos de selección de fila 522(0)-522(N) están configurados cada uno para recibir una selección de fila de lectura (rd_row_sel<0><rd_row_sel<N>) 426(0)-426(N) y una selección de fila de escritura (wr_row_sel<0>-wr_row_sel<N>) 432(0)-432(N) respectivas de acuerdo con la dirección de memoria de lectura y/o escritura de la operación de lectura y/o escritura de memoria. Los circuitos de selección de fila 522(0)-522(N) también están configurados para recibir una selección de fila de lectura/escritura 526 correspondiente a si una operación de lectura o escritura de memoria está activa. En este ejemplo, la selección de fila de lectura/escritura 526 se compone de una señal de reloj de lectura de línea de palabras generada (WL_rd_clk) 528 para una operación de lectura de memoria y una señal de reloj de escritura de línea de palabras generada (WL_wr_clk) 530 para una operación de escritura en memoria. El circuito de generación de reloj de RD/WR 503 está configurado para generar la señal de reloj de lectura de línea de palabras (WL rd clk) 528 y la señal de reloj de escritura de línea de palabras (WL_wr_clk) 530 basándose en la señal de reloj de lectura (rd_clk) 430 y la señal de reloj de escritura (wr_clk) 436 recibidas.
[0035] Continuando con la referencia a la Figura 5, debido a que una operación simultánea de lectura y escritura en memoria puede resultar en la selección de diferentes filas de células de bits de memoria R(0)-R(N), el circuito
de selección de células de bits de memoria 502 está configurado para priorizar las operaciones de escritura en memoria sobre operaciones de lectura de memoria. Esto evita que se active más de una (1) fila de células de bits de memoria R(0)-R(N) al mismo tiempo en el caso de que las operaciones de lectura y escritura de la memoria se realicen en filas de células de bits de memoria diferentes R(0)-R(N). A este respecto, el circuito de generación de reloj de RD/WR 503 está configurado para generar la señal de reloj de escritura de línea de palabras (WL_wr_clk) 530 en respuesta a una operación de escritura en memoria. El circuito de generación de reloj de RD/WR 503 también está configurado para generar la señal de reloj de lectura de línea de palabras (WL_rd_clk) 528 en respuesta a una operación de lectura de memoria sólo si no está presente una operación de escritura en memoria. Si una operación de escritura en memoria está presente durante una operación de escritura en memoria, el circuito de generación de reloj de RD/WR 503 está configurado para suprimir la señal de reloj de lectura (rd clk) 430 de modo que no se genere la señal de reloj de lectura de línea de palabras (WL_rd_clk) 528. Los circuitos de selección de fila 522(0)-522(N) pasan la selección de fila de escritura (wr_row_sel<0> -wr_row_sel<N>) 432(0)-432(N) correspondiente en la línea de palabras (WL(0)-WL(N)) 520(0)-520(N) correspondiente en respuesta a la presencia de la señal de reloj de escritura de línea de palabras (WL_wr_clk) 530. Los circuitos de selección de fila 522(0)-522(N) pasan la selección de fila de lectura (rd_row_sel<0>-rd_row_sel<N>) 426(0)-426(N) correspondiente en la línea de palabras (WL(0)-WL(N)) 520(0)-520(N) correspondiente en respuesta a la presencia de la señal de reloj de lectura de línea de palabras (WL rd clk) 528 a menos que la señal de reloj de escritura de línea de palabras (WL wr clk) 530 esté activa indicando la presencia de una operación de escritura en memoria.
[0036] La Figura 6 es una tabla 600 que ilustra las condiciones de dirección 602 en la submatriz de memoria 500 en la Figura 5 para operaciones simultáneas de lectura y escritura de memoria. Como se muestra allí, cuando la selección de fila de lectura (rd_row_sel) 426 coincide con la selección de fila de escritura (wr_row_sel) 432 para operaciones simultáneas de lectura y escritura de memoria, la priorización dada a la selección de fila de escritura (wr_row_sel) 432 para seleccionar la fila de células de bits de memoria R(0)-R(N) asegura que la operación de escritura sea exitosa. Esto es independientemente de si la selección de columna de lectura (rd_col_sel) 428 coincide o no con la selección de columna de escritura (wr_col_sel) 434. En este escenario, si la selección de columna de lectura (rd_col_sel) 428 coincide con la selección de columna de escritura (wr_col_sel) 434, los datos de escritura (wr data) 422 escritos en la columna de células de bits de memoria C(O)-C(M) seleccionada por el circuito controlador de columna de escritura seleccionada 508(0)-508(M) en la Figura 5 de acuerdo con la selección de columna de escritura (wr_col_sel) 434 pasarán al circuito de selección de columna de lectura 518(0)-518(M) seleccionada por la selección de columna de lectura (rd_col_sel) 428 para la misma columna de células de bits de memoria C(O)-C(M). En este escenario, si la selección de columna de lectura (rd_col_sel) 428 no coincide con la selección de columna de escritura (wr_col_sel) 434, los datos de escritura (wr_data) 422 se escribirán en la columna de células de bits de memoria seleccionada C(O)-C(M) por el circuito controlador de columna de escritura seleccionada 508(0)-508() en la Figura 5 de acuerdo con la selección de columna de escritura (wr_col_sel) 434. Los datos de lectura (rd_data) 416 serán detectados por el circuito de selección de columna de lectura 518(0)-518(M) seleccionado por la selección de columna de lectura (rd_col_sel) 428 para la columna de células de bits de memoria diferente C(O)-C(M).
[0037] Continuando con la referencia a la Figura 6, cuando la selección de fila de lectura (rd row sel) 426 no coincide con la selección de fila de escritura (wr row sel) 432 para operaciones simultáneas de lectura y escritura de memoria, la prioridad dada a la selección de fila de escritura (wr_row_sel) 432 para seleccionar la fila de células de bits de memoria R(0)-R(N) aún asegura que la operación de escritura sea exitosa. Sin embargo, no se puede confiar en los datos de lectura (rd_data) 416 detectados por un circuito de selección de columna de lectura 518(0)-518(M) seleccionado por la selección de columna de lectura (rd_col_sel) 428 para la operación de lectura de memoria y, por lo tanto, se considera un fallo de lectura. Esto se debe a que la fila de células de bits de memoria R(0)-R(N) para la operación de lectura de memoria de acuerdo con la selección de columna de lectura (rd_col_sel) 428 no es seleccionada. Por lo tanto, cualquier dato de lectura (rd data) 416 que sea detectado por el circuito de selección de columna de lectura 518(0)-518(M) no sería de la fila de células de bits de memoria direccionada R(0)-R(N) para la operación de lectura de memoria de acuerdo con la selección de columna de lectura (rd_col_sel) 428.
[0038] La Figura 7 es un diagrama de flujo que ilustra un proceso 700 a modo de ejemplo de realizar una operación simultánea de lectura y escritura de memoria en la submatriz de memoria 500 en la Figura 5. A este respecto, el circuito de selección de células de bits de memoria 502 recibe una selección de fila de escritura (wr_row_sel) 432(0)-432(N) que indica una fila de células de bits de memoria R(0)-R(N) en la submatriz de memoria 500 correspondiente a una dirección de escritura en memoria (wr_mem_addr) 420 para una operación de escritura en memoria (bloque 702). El circuito de selección de células de bits de memoria 502 recibe una selección de columna de escritura (wr_col_sel) 434(0)-434(N) que indica una columna de células de bits de memoria C(O)-C(M) en la submatriz de memoria 500 correspondiente a la dirección de escritura en memoria (wr_mem_addr) 420 para la operación de escritura en memoria (bloque 704). El circuito de selección de células de bits de memoria 502 recibe una selección de fila de lectura (rd_row_sel) 426(0)-426(M) que indica una fila de células de bits de memoria R(0)-R(N) en la submatriz de memoria 500 correspondiente a una dirección de lectura de memoria (rd_mem_addr) 414 para una operación de lectura de memoria (bloque 706). El circuito de selección de células de bits de memoria 502 recibe una selección de columna de lectura (rd_col_sel) 428(0)-428(M) que indica una columna de células de bits de memoria C(O)-C(M) en la submatriz de memoria 500 correspondiente a la dirección de lectura de memoria (rd_mem_addr) 414 para la operación de lectura de memoria (bloque 708). El circuito de selección de células de
bits de memoria 502 selecciona una columna de células de bits de memoria C(O)-C(M) de células de bits de memoria 410(0)()()-410(M)()() en la submatriz de memoria 500 direccionada por una selección de columna de escritura (wr_col_sel) 434(0)-434(N) (bloque 710). El circuito de selección de células de bits de memoria 502 selecciona una columna de células de bits de memoria C(O)-C(M) de las células de bits de memoria (410(0)()()-410(M)()()) en la submatriz de memoria 500 direccionada por la selección columna de lectura (rd_col_sec) 428(0)-428(M) (bloque 712). El circuito de selección de células de bits de memoria 502 genera una selección de fila de lectura/escritura 526 que indica la operación de escritura en memoria en respuesta a que la operación de escritura en memoria está presente (bloque 714). El circuito de selección de células de bits de memoria 502 selecciona la fila de células de bits de memoria R(0)-R(N) de las células de bits de memoria 410()(0)()-410()(N)() en la submatriz de memoria 500 direccionada por la selección de fila de escritura (wr_row_sel) 432(0)-432(N) en respuesta a la selección de fila de lectura/escritura 526 que indica la operación de escritura en memoria (bloque 716 en la Figura 7).
[0039] Como se analizó anteriormente, el circuito de selección de células de bits de memoria 502 en la Figura 5, y en particular el circuito de generación de reloj de RD/WR 503, está configurado para suprimir o bloquear la señal de reloj de lectura (rd_clk) 430 en respuesta a una operación simultánea de lectura y escritura de memoria cuando una operación de escritura en memoria está presente o activa. Esto es para que la operación de escritura en memoria se pueda priorizar como se analizó anteriormente. Se puede determinar que la operación de escritura en memoria está presente basándose en la presencia de la señal de reloj de escritura (wr_clk) 436 como ejemplo. Se pueden proporcionar diferentes circuitos en el circuito de selección de células de bits de memoria 502 o en el circuito de generación de reloj de RD/WR 503 en la submatriz de memoria 500 en la Figura 5 para suprimir la señal de reloj de lectura (rd_clk) 430 cuando la señal de reloj de escritura (wr_clk) 430 no está presente.
[0040] Incluso con la señal de reloj de lectura (rd_clk) 430 suprimida, se puede necesitar mantener la misma temporización de reloj de operación de lectura para los circuitos en la submatriz de memoria 500 en la Figura 5 involucrada con una operación de lectura por la señal de reloj de lectura (rd_clk) 430. Esto se debe a que, como se analizó anteriormente, cuando la selección de fila de lectura (rd_row_sel) 426 coincide con la selección de fila de escritura (wr_row_sel) 432 para operaciones simultáneas de lectura y escritura de memoria, las operaciones de lectura y escritura pueden realizarse ambas. Sin embargo, la temporización de la operación de la submatriz de memoria 500 se basa en la selección de fila de lectura/escritura 526, que se genera para evitar que diferentes filas de células de bits de memoria R(0)-R(N) se activen al mismo tiempo.
[0041] En este sentido, la Figura 8 es un diagrama de circuito de un circuito de control de temporización de reloj 800 que puede incluirse en el circuito de selección de células de bits de memoria 502 o el circuito de generación de reloj de RD/WR 503 en la submatriz de memoria 500 en la Figura 5. Como se analiza a continuación, el circuito de control de temporización de reloj 800 mantiene activa la señal de reloj de escritura (wr_clk) 436 durante una operación simultánea de lectura y escritura siempre que la señal de reloj de lectura (rd_clk) 430 esté activa para la operación de lectura. Esto es para que la señal de reloj de escritura (wr_clk) 436 permanezca activa para incluir la temporización original de la señal de reloj de lectura (rd_clk) 430 para controlar las operaciones de lectura, porque la señal de reloj de lectura (rd_clk) 430 se suprime para priorizar las operaciones durante una operación simultánea de lectura y escritura. El circuito de control de temporización de reloj 800 está configurado para generar la selección de fila de lectura/escritura 526 para permanecer activa o para ser "estirada" en base a la presencia tanto de la señal de reloj de lectura (rd_clk) 430 como de la señal de reloj de escritura (wr_clk) 436 de modo que la temporización es suficiente para realizar tanto una operación de lectura como de escritura de memoria en el caso de una operación simultánea de lectura y escritura de memoria.
[0042] Como se muestra en la Figura 8, el circuito de control de temporización de reloj 800 incluye un primer circuito lógico basado en OR 802 en forma de una puerta OR 804 en este ejemplo. El primer circuito lógico basado en OR 802 está configurado para recibir la señal de reloj de escritura (wr_clk) 436 y una segunda señal de salida 806 (etiquetada como 'A'), y generar una primera señal de salida 808 basada en una operación lógica basada en OR de la señal de reloj de escritura (wr_clk) 436 y la segunda señal de salida 806. El circuito de control de temporización de reloj 800 también incluye un circuito lógico basado en AND 810 en forma de una puerta AND 812 en este ejemplo. El circuito lógico basado en AND 810 está configurado para recibir la señal de reloj de lectura (rd_clk) 430 y la primera señal de salida 808, y generar la segunda señal de salida 806 basada en una operación lógica basada en AND de la señal de reloj de lectura (rd_clk) 430 y la primera señal de salida 808. El circuito de control de temporización de reloj 800 también incluye un segundo circuito lógico basado en OR 814 en forma de una puerta OR 816 en este ejemplo. El segundo circuito lógico basado en OR 814 está configurado para recibir la señal de reloj de escritura (wr_clk) 436 y la segunda señal de salida 806, y generar la selección de fila de lectura/escritura 526 basada en una operación lógica basada en OR de la señal de reloj de escritura (wr_clk) 436 y la segunda señal de salida 806.
[0043] La Figura 9 es un diagrama de temporización 900 que ilustra una temporización a modo de ejemplo de señales generadas por el circuito de control de temporización de reloj 800 en la Figura 8 en respuesta a la señal de reloj de lectura (rd_clk) 430 y la señal de reloj de escritura (wr_clk) 436. En respuesta a un flanco ascendente 902 de la señal de reloj de escritura (wr_clk) 436, el circuito de control de temporización del reloj 800 está configurado para generar un flanco ascendente 904 de la selección de fila de lectura/escritura 526. Un flanco
ascendente 906 de la señal de reloj de lectura (rd_clk) 430 hace que el circuito lógico basado en AND 810 genere la segunda señal de salida (A) 806 en el circuito de control de temporización de reloj 800 en la Figura 8. La segunda señal de salida (A) 806 se usa para controlar un flanco descendente 908 de la selección de fila de lectura/escritura 526 para estirar la selección de fila de lectura/escritura 526 para que esté activa cuando la señal de reloj de lectura (rd_clk) 430 está activa. A este respecto, la selección de fila de lectura/escritura 526 permanece en un estado activo hasta un flanco descendente 910 de la segunda señal de salida (A) 806 causada por la inactividad de la señal de reloj de lectura (rd_clk) 430. Esto hace que el circuito lógico basado en OR 814 en el circuito de control de temporización de reloj 800 en la Figura 8 genere el flanco descendente 908 de la selección de fila de lectura/escritura 526.
[0044] Otros circuitos y ejemplos pueden proporcionan un circuito de selección de células de bits de memoria para un sistema de memoria que está configurado para recibir selecciones de fila y columna de lectura y escritura y priorizar una selección de fila de escritura sobre una selección de fila de lectura para admitir operaciones simultáneas de lectura y escritura de memoria, incluidos los de las Figuras 4, 5 y 8. Por ejemplo, tal circuito de selección de células de bits de memoria puede incluir unos medios para recibir una selección de fila de escritura que indique una fila de células de bits de memoria entre una pluralidad de filas de células de bits de memoria en una matriz de memoria correspondiente a una dirección de escritura en memoria para una operación de escritura en memoria. El circuito de selección de células de bits de memoria también puede incluir unos medios para recibir una selección de columna de escritura que indique una columna de células de bits de memoria entre una pluralidad de columnas de células de bits de memoria en la matriz de memoria correspondiente a la dirección de escritura en memoria para la operación de escritura en memoria. El circuito de selección de células de bits de memoria también puede incluir unos medios para seleccionar la columna de células de bits de memoria de células de bits de memoria en la matriz de memoria direccionada por los medios para recibir la selección de columna de escritura. El circuito de selección de células de bits de memoria también puede incluir unos medios para generar una selección de fila de lectura/escritura que indica la operación de escritura en memoria. El circuito de selección de células de bits de memoria también puede incluir unos medios para recibir una selección de fila de lectura que indique una fila de células de bits de memoria entre la pluralidad de filas de células de bits de memoria en la matriz de memoria correspondiente a una dirección de lectura de memoria para una operación de lectura de memoria. El circuito de selección de células de bits de memoria también puede incluir unos medios para recibir una selección de columna de lectura que indique una columna de células de bits de memoria entre la pluralidad de columnas de células de bits de memoria en la matriz de memoria correspondiente a la dirección de lectura de memoria para la operación de lectura de memoria. El circuito de selección de células de bits de memoria también puede incluir unos medios para seleccionar la columna de células de bits de memoria de células de bits de memoria en la matriz de memoria direccionada por los medios para recibir la selección de columna de lectura. El circuito de selección de células de bits de memoria también puede incluir unos medios para generar una selección de fila de lectura/escritura que indique que la operación de lectura de memoria en respuesta a la operación de escritura en memoria no está presente para la operación de lectura de memoria. El circuito de selección de células de bits de memoria también puede incluir unos medios para seleccionar la fila de células de bits de memoria de las células de bits de memoria en la matriz de memoria direccionada por la selección de columna de escritura en respuesta a que los medios para generar la selección de fila de lectura/escritura indican la operación de escritura en memoria. El circuito de selección de células de bits de memoria también puede incluir unos medios para seleccionar la fila de células de bits de memoria de las células de bits de memoria en la matriz de memoria direccionada por la selección de columna de lectura en respuesta a los medios para generar la selección de fila de lectura/escritura que indica la operación de lectura de memoria.
[0045] Tenga en cuenta que aunque los ejemplos de sistemas de memoria configurados para decodificar por separado direcciones de lectura y escritura en selecciones de fila y columna de lectura y escritura, y priorizar una selección de fila de escritura sobre una selección de fila de lectura para admitir operaciones simultáneas de lectura y escritura de memoria se muestran con las células de bits de SRAM anteriores, tales sistemas de memoria no se limitan a células de bits de SRAM. Dichos sistemas de memoria pueden incluir otros tipos de células de bits de memoria, incluidas, entre otras, células de bits de memoria de acceso aleatorio magnetorresistivo (MRAM) y células de bits de memoria de acceso aleatorio dinámica (DRAM).
[0046] Sistemas de memoria configurados para decodificar por separado direcciones de lectura y escritura en selecciones de fila y columna de lectura y escritura, y priorizar una selección de fila de escritura sobre una selección de fila de lectura para admitir operaciones simultáneas de lectura y escritura de memoria, incluidos, entre otros, el sistema de memoria 400 en las Figuras 4 y 5, se pueden proporcionar o integrar en cualquier dispositivo basado en procesador. Los ejemplos, sin limitación, incluyen un descodificador, una unidad de entretenimiento, un dispositivo de navegación, un dispositivo de comunicaciones, una unidad de datos de ubicación fija, una unidad de datos de ubicación móvil, un dispositivo de sistema de posicionamiento global (GPS), un teléfono móvil, un teléfono celular, un teléfono inteligente, un teléfono de protocolo de inicio de sesión (SIP), una tableta, un tabléfono, un servidor, un ordenador, un ordenador portátil, un dispositivo informático móvil, un dispositivo informático ponible (por ejemplo, un reloj inteligente, un dispositivo de seguimiento de la salud o de entrenamiento deportivo, lentes, etc.), un ordenador de escritorio, un asistente personal digital (PDA), un monitor, un monitor de ordenador, un televisor, un sintonizador, una radio, una radio por satélite, un reproductor de música, un reproductor de música digital, un reproductor de música portátil, un reproductor de vídeo digital, un reproductor de vídeo, un reproductor
de discos de vídeo digital (DVD), un reproductor de vídeo digital portátil, un automóvil, un componente de vehículo, sistemas aviónicos, un dron y un multicóptero.
[0047] En este sentido, la Figura 10 ilustra un ejemplo de un sistema 1000 basado en procesador que puede incluir circuitos que incluyen sistemas de memoria configurados para decodificar por separado direcciones de lectura y escritura en selecciones de fila y columna de lectura y escritura, y priorizar una selección de fila de escritura sobre una selección de fila de lectura para admitir operaciones simultáneas de lectura y escritura de memoria, incluido, entre otros, el sistema de memoria 400 en las Figuras 4 y 5. Por ejemplo, el sistema 1000 basado en procesador incluye uno o más sistemas de memoria 1002 configurados para decodificar por separado las direcciones de lectura y escritura en selecciones de fila y columna de lectura y escritura, y priorizar una selección de fila de escritura sobre una selección de fila de lectura para admitir operaciones simultáneas de lectura y escritura de memoria, que incluyen pero no se limitan al sistema de memoria 400 en las Figuras 4 y 5.
[0048] En este ejemplo, el sistema 1000 basado en procesador se proporciona en un CI 1004. El CI 1004 puede incluirse o proporcionarse como un SoC 1006. El sistema 1000 basado en procesador incluye una CPU o procesador 1008 que incluye uno o más núcleos de procesador 1010(1 )-1010(N). El procesador 1008 puede tener una memoria caché 1012 acoplada al(a los) núcleo(s) del procesador 1010(1)-1010(N) para un rápido acceso a los datos almacenados temporalmente. La memoria caché 1012 puede incluir el sistema de memoria 1002 configurado para decodificar por separado las direcciones de lectura y escritura en selecciones de fila y columna de lectura y escritura, y priorizar una selección de fila de escritura sobre una selección de fila de lectura para admitir operaciones simultáneas de lectura y escritura de memoria, incluyendo pero no limitado al sistema de memoria 400 en las Figuras 4 y 5. El procesador 1008 está acoplado a un bus 1014 del sistema y puede acoplar entre sí dispositivos maestros y esclavos incluidos en el sistema basado en procesador 1000. Como es bien sabido, el procesador 1008 se comunica con estos otros dispositivos intercambiando información de dirección, control y datos por el bus 1014 del sistema. Aunque no se ilustra en la Figura 10, se podrían proporcionar múltiples buses 1014 de sistema, en los que cada bus 1014 de sistema constituye una estructura diferente. Por ejemplo, el procesador 1008 pueden comunicar solicitudes de transacciones de bus al sistema de memoria 1002, como ejemplo de un dispositivo esclavo.
[0049] Otros dispositivos maestros y esclavos pueden conectarse al bus 1014 del sistema en el sistema 1000 basado en procesador. Como se ilustra en la Figura 10, estos dispositivos pueden incluir un sistema de memoria 1016. El sistema de memoria 1016 puede incluir un sistema de memoria 1002 configurado para decodificar por separado las direcciones de lectura y escritura en selecciones de fila y columna de lectura y escritura, y priorizar una selección de fila de escritura sobre una selección de fila de lectura para admitir operaciones simultáneas de lectura y escritura de memoria, incluyendo pero no limitado al sistema de memoria 400 en las Figuras 4 y 5. El sistema de memoria 1016 incluye una o más matrices de memoria 1018, cada una de las cuales comprende una pluralidad de células de bits de memoria 1020. Las células de bits de memoria 1020 pueden ser células de bits de SRAM, y pueden ser células de bits de SRAM 6T como ejemplo.
[0050] Continuando con la referencia a la Figura 10, los dispositivos esclavos en el sistema 1000 basado en procesador también pueden incluir uno o más dispositivos de entrada 1022. El dispositivo o dispositivos de entrada 1022 pueden incluir cualquier tipo de dispositivo de entrada, incluidos, entre otros, teclas de entrada, interruptores, procesadores de voz, etc. El dispositivo o dispositivos de entrada 1022 pueden incluir un sistema de memoria 1002 configurado para decodificar por separado direcciones de lectura y escritura en las selecciones de fila y columna de lectura y escritura, y priorizar una selección de fila de escritura sobre una selección de fila de lectura para admitir operaciones simultáneas de lectura y escritura de memoria, incluido, entre otros, el sistema de memoria 400 en las Figuras 4 y 5. Los dispositivos esclavos también pueden incluir uno o más dispositivos de salida 1024 y uno o más dispositivos de interfaz de red 1026, cada uno de los cuales puede incluir un sistema de memoria 1002 configurado para decodificar por separado direcciones de lectura y escritura en selecciones de fila y columna de lectura y escritura, y priorizar una selección de fila de escritura sobre una selección de fila de lectura para admitir operaciones simultáneas de lectura y escritura de memoria, incluidos, entre otros, los sistemas de memoria de las Figuras 4 y 5. El(los) dispositivo(s) de salida 1024 pueden incluir cualquier tipo de dispositivo de salida, incluidos, entre otros, audio, vídeo, otros indicadores visuales, etc. El(los) dispositivo(s) de interfaz de red 1026 pueden ser cualquier dispositivo configurado para permitir el intercambio de datos hacia y desde una red 1028. La red 1028 puede ser cualquier tipo de red, incluyendo, pero sin limitarse a, una red por cable o inalámbrica, una red privada o pública, una red de área local (LAN), una red de área local inalámbrica (WLAN), una red de área amplia (WAN), una red BLUETOOTH™ e Internet. El(los) dispositivo(s) de interfaz de red 1026 se pueden configurar para admitir cualquier tipo de protocolo de comunicaciones deseado.
[0051] Otros dispositivos esclavos que pueden incluirse en el sistema 1000 basado en procesador también pueden incluir uno o más controladores de pantalla 1030 como ejemplos. El(los) controlador(es) de pantalla 1030 incluyen un sistema de memoria 1002 configurado para decodificar por separado las direcciones de lectura y escritura en selecciones de fila y columna de lectura y escritura, y priorizar una selección de fila de escritura sobre una selección de fila de lectura para admitir operaciones simultáneas de lectura y escritura de memoria, incluyendo pero no limitado al sistema de memoria 400 en las Figuras 4 y 5. El procesador 1008 también se puede configurar para acceder al controlador o controladores de pantalla 1030 sobre el bus de sistema 1014 para controlar la
información enviada a una o más pantallas 1032. La(s) pantalla(s) 1032 puede(n) incluir cualquier tipo de pantalla, que incluye, pero sin limitarse a, un tubo de rayos catódicos (CRT), una pantalla de cristal líquido (LCD), una pantalla de plasma, etc. El(los) controlador(es) de pantalla 1030 envía(n) información a la(s) pantalla(s) 1032 que se va a representar por medio de uno o más procesadores de vídeo 1034, que procesan la información que se va a representar en un formato adecuado para la(s) pantalla(s) 1032. El(los) procesador(es) de vídeo 1034 pueden incluir un sistema de memoria 1002 configurado para decodificar por separado direcciones de lectura y escritura en selecciones de fila y columna de lectura y escritura, y priorizar una selección de fila de escritura sobre una selección de fila de lectura para admitir operaciones simultáneas de lectura y escritura de memoria. incluyendo, pero no limitado a, el sistema de memoria 400 en las Figuras 4 y 5.
[0052] Los expertos en la técnica apreciarán, además, que los diversos bloques lógicos ilustrativos, módulos, circuitos y algoritmos descritos en relación con los aspectos divulgados en el presente documento se pueden implementar como hardware electrónico, instrucciones almacenadas en la memoria o en otro medio legible por ordenador y ejecutarse por un procesador u otro dispositivo de procesamiento, o combinaciones de ambos. Los dispositivos maestros y los dispositivos esclavos descritos en el presente documento se pueden emplear en cualquier circuito, componente de hardware, circuito integrado (CI) o chip de CI, como ejemplos. La memoria divulgada en el presente documento puede ser una memoria de cualquier tipo y tamaño y se puede configurar para almacenar cualquier tipo de información deseada. Para ilustrar claramente esta intercambiabilidad, anteriormente se han descrito, en general, diversos componentes, bloques, módulos, circuitos y etapas ilustrativas, en términos de su funcionalidad. Cómo se implemente dicha funcionalidad depende de la aplicación particular, de las elecciones de diseño y/o de las limitaciones de diseño impuestas en el sistema global. Los expertos en la técnica pueden implementar la funcionalidad descrita de formas variadas para cada aplicación en particular, pero no se debe interpretar que dichas decisiones de implementación suponen apartarse del alcance de la presente divulgación.
[0053] Los diversos bloques lógicos, módulos y circuitos ilustrativos descritos en relación con los aspectos divulgados en el presente documento se pueden implementar o realizar con un procesador, un procesador de señales digitales (DSP), un circuito integrado específico de la aplicación (ASIC), una matriz de puertas programables in situ (FPGA) u otro dispositivo lógico programable, lógica de transistores o de puertas discretas, componentes discretos de hardware o cualquier combinación de los mismos diseñada para realizar las funciones descritas en el presente documento. Un procesador puede ser un microprocesador pero, como alternativa, el procesador puede ser cualquier procesador, controlador, microcontrolador o máquina de estados. Un procesador también se puede implementar como una combinación de dispositivos informáticos, por ejemplo, una combinación de un DSP y un microprocesador, una pluralidad de microprocesadores, uno o más microprocesadores junto con un núcleo de DSP o cualquier otra configuración de este tipo.
[0054] Los aspectos divulgados en el presente documento se pueden incorporar en hardware y en instrucciones que estén almacenadas en hardware, y pueden residir, por ejemplo, en memoria de acceso aleatorio (RAM), memoria flash, memoria de solo lectura (ROM), ROM eléctricamente programable (EPROM), ROM eléctricamente programable borrable (EEPROM), registros, un disco duro, un disco extraíble, un CD-ROM o cualquier otra forma de medio legible por ordenador conocida en la técnica. Un medio de almacenamiento a modo de ejemplo está acoplado al procesador de modo que el procesador pueda leer información de, y escribir información en, el medio de almacenamiento. Como alternativa, el medio de almacenamiento puede estar integrado en el procesador. El procesador y el medio de almacenamiento pueden residir en un ASIC. El ASIC puede residir en una estación remota. Como alternativa, el procesador y el medio de almacenamiento pueden residir como componentes discretos en una estación remota, una estación base o un servidor.
[0055] Cabe señalar, además, que las etapas operativas descritas en cualquiera de los aspectos a modo de ejemplo en el presente documento se describen para proporcionar ejemplos y análisis. Las operaciones descritas se pueden realizar en numerosas secuencias diferentes que no sean las secuencias ilustradas. Además, las operaciones descritas en una única etapa operativa se pueden realizar realmente en una serie de etapas diferentes. Adicionalmente, se pueden combinar una o más etapas operativas analizadas en los aspectos a modo de ejemplo. Se entenderá que las etapas operativas ilustradas en los diagramas de flujo se pueden someter a numerosas modificaciones diferentes, como resultará fácilmente evidente para un experto en la técnica. Los expertos en la técnica también entenderán que la información y las señales se pueden representar usando cualquiera de una variedad de tecnologías y técnicas diferentes. Por ejemplo, los datos, las instrucciones, los comandos, la información, las señales, los bits, los símbolos y los fragmentos de información que se puedan haber mencionado a lo largo de la descripción anterior se pueden representar mediante tensiones, corrientes, ondas electromagnéticas, campos o partículas magnéticos, campos o partículas ópticos o cualquier combinación de los mismos.
[0056] La descripción previa de la divulgación se proporciona para permitir que cualquier experto en la técnica realice o use la divulgación. Diversas modificaciones de la divulgación resultarán fácilmente evidentes a los expertos en la técnica, y los principios genéricos definidos en el presente documento se pueden aplicar a otras variaciones sin apartarse del alcance de la divulgación. Por tanto, la divulgación no pretende limitarse a los ejemplos y diseños descritos en el presente documento, sino que se le concede el alcance más amplio compatible con los principios y características novedosas divulgados en el presente documento como se define en las
reivindicaciones adjuntas.
Ċ
Claims (1)
- REIVINDICACIONESUn circuito de selección de células de bits de memoria (502) para un sistema de memoria que comprende células de bits de memoria de un solo puerto y configurado para decodificar por separado las direcciones de lectura y escritura de memoria en selecciones de fila y columna de lectura y escritura, respectivamente, el circuito de selección de células de bits de memoria configurado para:en respuesta a una operación de escritura en memoria:recibir una selección de fila de escritura (432) que indica una fila de células de bits de memoria (R(0)-R(N)) entre una pluralidad de filas de células de bits de memoria en una matriz de memoria correspondiente a una dirección de escritura en memoria para la operación de escritura en memoria;recibir una selección de columna de escritura (434) que indica una columna de células de bits de memoria (C(O)-C(M)) entre una pluralidad de columnas de células de bits de memoria en la matriz de memoria correspondiente a la dirección de escritura en memoria para la operación de escritura en memoria;seleccionar la columna de células de bits de memoria de las células de bits de memoria en la matriz de memoria direccionada por la selección de columna de escritura (434); ygenerar una selección de fila de lectura/escritura (526) que indica la operación de escritura en memoria; yseleccionar la fila de células de bits de memoria de células de bits de memoria en la matriz de memoria direccionada por la selección de fila de escritura (432) en respuesta a la selección de fila de lectura/escritura que indica la operación de escritura en memoria; yen respuesta a una operación de lectura de memoria:recibir una selección de fila de lectura (426) que indica una fila de células de bits de memoria (R(0)-R(N)) entre la pluralidad de filas de células de bits de memoria en la matriz de memoria correspondiente a una dirección de lectura de memoria para la operación de lectura de memoria;recibir una selección de columna de lectura (428) que indica una columna de células de bits de memoria (C(O)-C(M)) entre la pluralidad de columnas de células de bits de memoria en la matriz de memoria correspondiente a la dirección de lectura de memoria para la operación de lectura de memoria;seleccionar la columna de células de bits de memoria de células de bits de memoria en la matriz de memoria direccionada por la selección de columna de lectura (428);el circuito de selección de células de bits de memoria (502) caracterizado por que está configurado, además, para:generar una selección de fila de lectura/escritura (526) que indica la operación de lectura de memoria enrespuesta a la operación de escritura en memoria que no está presente para la operación de lectura de memoria; yseleccionar la fila de células de bits de memoria de las células de bits de memoria en la matriz de memoria direccionada por la selección de fila de lectura (426) en respuesta a la selección de fila de lectura/escritura que indica la operación de lectura de memoria.El circuito de selección de células de bits de memoria según la reivindicación 1 configurado para recibir simultáneamente la selección de fila de escritura y la selección de columna de escritura para la operación de escritura en memoria, y la selección de fila de lectura y la selección de columna de lectura para la operación de lectura de memoria.El circuito de selección de células de bits de memoria según la reivindicación 2 configurado para generar la selección de fila de lectura/escritura que indica la operación de escritura en memoria en respuesta a la recepción simultánea de la selección de fila de escritura y la selección de columna de escritura para la operación de escritura en memoria, y la selección de fila de lectura y la selección de columna de lectura para la operación de lectura de memoria.El circuito de selección de células de bits de memoria según la reivindicación 1, que comprende un circuito de generación de reloj de lectura/escritura (503) configurado, además, para:en respuesta a la operación de escritura en memoria:recibir una señal de reloj de escritura (436); yproporcionar la señal de reloj de escritura a la columna de células de bits de memoria seleccionada para la operación de escritura en memoria; yen respuesta a la operación de lectura de memoria:recibir una señal de reloj de lectura (430); yproporcionar la señal de reloj de lectura a la columna de células de bits de memoria seleccionada para la operación de lectura de memoria.El circuito de selección de células de bits de memoria según la reivindicación 4, en el que el circuito de generación de reloj de lectura/escritura está configurado, además, para:generar la selección de fila de lectura/escritura (526) basándose en la señal de reloj de escritura en respuesta a la operación de escritura en memoria; ygenerar la selección de fila de lectura/escritura (526) basada en la señal de reloj de lectura en respuesta a la operación de lectura de memoria.El circuito de selección de células de bits de memoria según la reivindicación 4, en el que el circuito de generación de reloj de lectura/escritura comprende un circuito de control de temporización de reloj (800) configurado para:en respuesta a recibir la señal de reloj de escritura (436), generar la selección de fila de lectura/escritura (526) en base a la señal de reloj de escritura (436) en respuesta a la operación de escritura en memoria; yen respuesta a recibir la señal de reloj de lectura (430):generar la selección de fila de lectura/escritura (526) basándose en la señal de reloj de escritura (436) en respuesta a la recepción de la señal de reloj de escritura; ygenerar la selección de fila de lectura/escritura (526) basada en la señal de reloj de lectura (430) en respuesta a no recibir la señal de reloj de escritura.El circuito de selección de células de bits de memoria según la reivindicación 1, que comprende una pluralidad de circuitos de selección de fila (522(0)-522(N)), cada uno correspondiente a una fila de células de bits de memoria entre la pluralidad de filas de células de bits de memoria en la matriz de memoria; cada circuito de selección de fila (522) entre la pluralidad de circuitos de selección de fila configurados para:recibir una selección de fila de lectura (426) correspondiente a la fila de células de bits de memoria para el circuito de selección de células de bits de memoria;recibir una selección de fila de escritura (432) correspondiente a la fila de células de bits de memoria para el circuito de selección de células de bits de memoria;recibir la selección de fila de lectura/escritura (526);seleccionar la selección de fila de escritura para ser afirmada en la fila de células de bits de memoria correspondiente en respuesta a la selección de fila de lectura/escritura que indica la operación de escritura en memoria; yseleccionar la selección de fila de lectura que se va a afirmar en la fila de células de bits de memoria correspondiente en respuesta a la selección de fila de lectura/escritura que indica la operación de lectura de memoria.El circuito de selección de células de bits de memoria según la reivindicación 7, en el que la pluralidad de circuitos de selección de fila comprende cada uno un circuito multiplexor (524) correspondiente a la fila de células de bits de memoria entre la pluralidad de filas de células de bits de memoria en la matriz de memoria, cada circuito multiplexor configurado para:pasar la selección de fila de escritura recibida (432) a la fila de células de bits de memoria correspondiente en respuesta a la selección de fila de lectura/escritura (526) que indica la operación de escritura en memoria; ypasar la selección de fila de lectura recibida (426) a la fila de células de bits de memoria correspondiente en respuesta a la selección de fila de lectura/escritura (526) que indica la operación de lectura de memoria.9. Un procedimiento (700) para realizar una operación de lectura y escritura de memoria en una matriz de memoria en un sistema de memoria que comprende células de bits de memoria de un solo puerto configurado para decodificar por separado las direcciones de lectura y escritura de la memoria en las selecciones de fila y columna de lectura y escritura, respectivamente, comprendiendo el procedimiento: recibir (702) una selección de fila de escritura que indica una fila de células de bits de memoria entre una pluralidad de filas de células de bits de memoria en una matriz de memoria correspondiente a una dirección de escritura en memoria para una operación de escritura en memoria;recibir (704) una selección de columna de escritura que indica una columna de células de bits de memoria entre una pluralidad de columnas de células de bits de memoria en la matriz de memoria correspondiente a la dirección de escritura en memoria para la operación de escritura en memoria; recibir (706) una selección de fila de lectura que indica una fila de células de bits de memoria entre la pluralidad de filas de células de bits de memoria en la matriz de memoria correspondiente a una dirección de lectura de memoria para una operación de lectura de memoria;recibir (708) una selección de columna de lectura que indica una columna de células de bits de memoria entre la pluralidad de columnas de células de bits de memoria en la matriz de memoria correspondiente a la dirección de lectura de memoria para la operación de lectura de memoria;seleccionar (710) la columna de células de bits de memoria de células de bits de memoria en la matriz de memoria direccionada por la selección de columna de escritura;seleccionar (712) la columna de células de bits de memoria de las células de bits de memoria en la matriz de memoria direccionada por la selección de columna de lectura;generar (714) una selección de fila de lectura/escritura que indica la operación de escritura en memoria en respuesta a la operación de escritura en memoria que está presente;seleccionar (716) la fila de células de bits de memoria de células de bits de memoria en la matriz de memoria direccionada por la selección de fila de escritura en respuesta a la selección de fila de lectura/escritura que indica la operación de escritura en memoria;el procedimiento caracterizado por que comprende, además:generar la selección de fila de lectura/escritura que indica la operación de lectura de memoria en respuesta a que la operación de escritura en memoria no está presente para la operación de lectura de memoria; yseleccionar la fila de células de bits de memoria de células de bits de memoria en la matriz de memoria direccionada por la selección de fila de lectura en respuesta a la selección de fila de lectura/escritura que indica la operación de lectura de memoria.10. El procedimiento según la reivindicación 9, que comprende recibir simultáneamente la selección de fila de escritura para la operación de escritura en memoria y recibir la selección de fila de lectura para la operación de lectura de memoria.11. El procedimiento según la reivindicación 9, que comprende recibir simultáneamente la selección de columna de escritura para la operación de escritura en memoria y recibir la selección de columna de lectura para la operación de lectura de memoria.12. El procedimiento según la reivindicación 9, que comprende, además:en respuesta a la operación de escritura en memoria:que comprende, además, recibir una señal de reloj de escritura; ygenerar la selección de fila de lectura/escritura que indica la operación de escritura en memoria comprende proporcionar la señal de reloj de escritura a la columna de células de bits de memoria seleccionada para la operación de escritura en memoria; yen respuesta a la operación de lectura de memoria:que comprende, además, recibir una señal de reloj de lectura; ygenerar la selección de fila de lectura/escritura que indica la operación de lectura de memoria comprende proporcionar la señal de reloj de lectura a la columna de células de bits de memoria seleccionada para la operación de lectura de memoria.13. El procedimiento según la reivindicación 12, que comprende recibir simultáneamente la señal de reloj de escritura para la operación de escritura en memoria y recibir la señal de reloj de lectura para la operación de lectura de memoria.14. El procedimiento según la reivindicación 12, que comprende, además:generar la selección de fila de lectura/escritura que comprende la señal de reloj de escritura en respuesta a la operación de escritura en memoria; ygenerar la selección de fila de lectura/escritura que comprende la señal de reloj de lectura en respuesta a la operación de lectura de memoria.15. Un sistema de memoria (400), que comprende:una matriz de memoria (406) que comprende una pluralidad de células de bits de memoria de un solo puerto organizadas en una pluralidad de filas de células de bits de memoria y una pluralidad de columnas de células de bits de memoria;un circuito decodificador de lectura/escritura (424) configurado para:decodificar una dirección de lectura de memoria (414) en una operación de lectura de memoria en:una selección de fila de lectura (426) que indica una fila de células de bits de memoria entre la pluralidad de filas de células de bits de memoria en la matriz de memoria correspondiente a la dirección de lectura de memoria; yuna selección de columna de lectura (428) que indica una columna de células de bits de memoria entre la pluralidad de columnas de células de bits de memoria en la matriz de memoria correspondiente a la dirección de lectura de memoria; ydecodificar una dirección de escritura en memoria (420) en una operación de escritura en memoria en:una selección de fila de escritura (432) que indica una fila de células de bits de memoria entre la pluralidad de filas de células de bits de memoria en la matriz de memoria correspondiente a la dirección de escritura en memoria; yuna selección de columna de escritura (434) que indica una columna de células de bits de memoria entre la pluralidad de columnas de células de bits de memoria en la matriz de memoria correspondiente a la dirección de escritura en memoria; yal menos un circuito de selección de células de bits de memoria (502) según la reivindicación 1, cada uno configurado para recibir la selección de fila de escritura, la selección de columna de escritura, la selección de fila de lectura y la selección de columna de lectura del circuito decodificador de lectura/escritura.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662403740P | 2016-10-04 | 2016-10-04 | |
US15/429,842 US9870818B1 (en) | 2016-10-04 | 2017-02-10 | Separate read and write address decoding in a memory system to support simultaneous memory read and write operations |
PCT/US2017/050040 WO2018067254A1 (en) | 2016-10-04 | 2017-09-05 | Separate read and write address decoding in a memory system to support simultaneous memory read and write operations |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2847228T3 true ES2847228T3 (es) | 2021-08-02 |
Family
ID=60935547
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES17768324T Active ES2847228T3 (es) | 2016-10-04 | 2017-09-05 | Decodificación separada de direcciones de lectura y escritura en un sistema de memoria para admitir operaciones simultáneas de lectura y escritura de memoria |
Country Status (9)
Country | Link |
---|---|
US (1) | US9870818B1 (es) |
EP (1) | EP3523804B1 (es) |
KR (1) | KR102093143B1 (es) |
CN (1) | CN109716436B (es) |
AU (1) | AU2017340249B2 (es) |
BR (1) | BR112019006695B1 (es) |
ES (1) | ES2847228T3 (es) |
SG (1) | SG11201901324QA (es) |
WO (1) | WO2018067254A1 (es) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10171080B2 (en) * | 2016-09-20 | 2019-01-01 | Qualcomm Incorporated | Voltage level shifter (VLS) circuits employing a pre-conditioning circuit for pre-conditioning an input signal to be voltage level shifted in response to a pre-charge phase |
US10768856B1 (en) * | 2018-03-12 | 2020-09-08 | Amazon Technologies, Inc. | Memory access for multiple circuit components |
CN112447218A (zh) | 2019-08-29 | 2021-03-05 | 台湾积体电路制造股份有限公司 | 存储器电路和方法 |
DE102019128331A1 (de) | 2019-08-29 | 2021-03-04 | Taiwan Semiconductor Manufacturing Co., Ltd. | Gemeinsam genutzter decodiererschaltkreis und verfahren |
US11776591B2 (en) | 2019-09-26 | 2023-10-03 | Arm Limited | Concurrent access techniques utilizing wordlines with the same row address in single port memory |
US11386937B2 (en) * | 2019-10-12 | 2022-07-12 | Arm Limited | System device and method for providing single port memory access in bitcell array by tracking dummy wordline |
CN111445934B (zh) * | 2020-03-26 | 2023-08-15 | 上海华力集成电路制造有限公司 | 一种用于内存计算的电路结构 |
CN113012738B (zh) * | 2021-03-31 | 2022-06-21 | 北京大学深圳研究生院 | 一种存储单元、存储器阵列和全数字静态随机存储器 |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1011969A (ja) | 1996-06-21 | 1998-01-16 | Toshiba Microelectron Corp | 半導体記憶装置 |
US6545935B1 (en) | 2000-08-29 | 2003-04-08 | Ibm Corporation | Dual-port DRAM architecture system |
US6809401B2 (en) * | 2000-10-27 | 2004-10-26 | Matsushita Electric Industrial Co., Ltd. | Memory, writing apparatus, reading apparatus, writing method, and reading method |
JP2004348788A (ja) * | 2003-05-20 | 2004-12-09 | Sharp Corp | 半導体記憶装置及び携帯電子機器 |
JP2006134379A (ja) | 2004-11-02 | 2006-05-25 | Matsushita Electric Ind Co Ltd | 半導体記憶装置 |
EP1811370A2 (en) | 2005-12-30 | 2007-07-25 | STMicroelectronics Pvt. Ltd. | A first-in first-out (FIFO) memory architecture providing multiport functionality |
KR100782495B1 (ko) * | 2006-10-20 | 2007-12-05 | 삼성전자주식회사 | 반도체 메모리 장치 및 이 장치의 데이터 라이트 및 리드방법 |
US7623404B2 (en) | 2006-11-20 | 2009-11-24 | Freescale Semiconductor, Inc. | Memory device having concurrent write and read cycles and method thereof |
JP5754761B2 (ja) | 2008-07-22 | 2015-07-29 | ラピスセミコンダクタ株式会社 | 不揮発性半導体メモリおよび不揮発性半導体メモリのデータ書込み方法 |
JP2012069602A (ja) * | 2010-09-21 | 2012-04-05 | Toshiba Corp | 抵抗変化素子 |
KR101722023B1 (ko) * | 2010-09-30 | 2017-03-31 | 삼성전자 주식회사 | 비휘발성 메모리 장치의 프로그램 방법 |
KR20120065805A (ko) * | 2010-12-13 | 2012-06-21 | 삼성전자주식회사 | 비휘발성 메모리 장치 |
JP5481428B2 (ja) * | 2011-05-26 | 2014-04-23 | 株式会社東芝 | 半導体記憶装置およびメモリシステム |
US9064550B2 (en) | 2011-10-24 | 2015-06-23 | Taiwan Semiconductor Manufacturing Company, Ltd. | Method and apparatus for word line suppression |
KR20130116705A (ko) * | 2012-04-16 | 2013-10-24 | 삼성전자주식회사 | 자기 랜덤 액세스 메모리 장치 및 어드레싱 방법 |
US9443566B2 (en) * | 2012-10-24 | 2016-09-13 | Stmicroelectronics S.R.L. | Identification of a condition of a sector of memory cells in a non-volatile memory |
US8913451B2 (en) * | 2012-11-08 | 2014-12-16 | SK Hynix Inc. | Memory device and test method thereof |
US8867288B2 (en) * | 2012-11-08 | 2014-10-21 | SK Hynix Inc. | Memory device and test method thereof |
US9275710B2 (en) * | 2013-08-30 | 2016-03-01 | Taiwan Semiconductor Manufacturing Co., Ltd. | Three dimensional cross-access dual-port bit cell design |
US20160315636A1 (en) * | 2013-09-26 | 2016-10-27 | Sony Corporation | Data processing device and data processing method |
US9001571B1 (en) * | 2014-01-20 | 2015-04-07 | National Tsing Hua University | 6T static random access memory cell, array and memory thereof |
KR102132247B1 (ko) * | 2014-04-03 | 2020-07-13 | 에스케이하이닉스 주식회사 | 원-타임 프로그램 메모리 |
CN105097017A (zh) * | 2014-05-20 | 2015-11-25 | 中芯国际集成电路制造(上海)有限公司 | 一种sram存储单元、sram存储器及其控制方法 |
US9396795B1 (en) * | 2014-12-30 | 2016-07-19 | The Regents Of The University Of Michigan | Storage device supporting logical operations, methods and storage medium |
US10049006B2 (en) * | 2015-12-08 | 2018-08-14 | Nvidia Corporation | Controller-based memory scrub for DRAMs with internal error-correcting code (ECC) bits contemporaneously during auto refresh or by using masked write commands |
-
2017
- 2017-02-10 US US15/429,842 patent/US9870818B1/en active Active
- 2017-09-05 KR KR1020197009516A patent/KR102093143B1/ko active IP Right Grant
- 2017-09-05 AU AU2017340249A patent/AU2017340249B2/en active Active
- 2017-09-05 EP EP17768324.0A patent/EP3523804B1/en active Active
- 2017-09-05 CN CN201780057336.3A patent/CN109716436B/zh active Active
- 2017-09-05 WO PCT/US2017/050040 patent/WO2018067254A1/en active Search and Examination
- 2017-09-05 ES ES17768324T patent/ES2847228T3/es active Active
- 2017-09-05 SG SG11201901324QA patent/SG11201901324QA/en unknown
- 2017-09-05 BR BR112019006695-0A patent/BR112019006695B1/pt active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
EP3523804B1 (en) | 2020-11-18 |
SG11201901324QA (en) | 2019-04-29 |
CN109716436B (zh) | 2019-12-24 |
KR102093143B1 (ko) | 2020-03-25 |
AU2017340249B2 (en) | 2019-09-26 |
BR112019006695A2 (pt) | 2019-06-25 |
EP3523804A1 (en) | 2019-08-14 |
CN109716436A (zh) | 2019-05-03 |
AU2017340249A1 (en) | 2019-03-14 |
BR112019006695B1 (pt) | 2024-02-20 |
US9870818B1 (en) | 2018-01-16 |
KR20190040078A (ko) | 2019-04-16 |
WO2018067254A1 (en) | 2018-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2847228T3 (es) | Decodificación separada de direcciones de lectura y escritura en un sistema de memoria para admitir operaciones simultáneas de lectura y escritura de memoria | |
EP2761621B1 (en) | Method and apparatus of reducing leakage power in multiple port sram memory cell | |
US10325648B2 (en) | Write driver scheme for bit-writable memories | |
JP6022741B2 (ja) | スタティックランダムアクセスメモリ(sram)リセット動作中にsramビットセルをバイアスする電圧または電流のための回路ならびに関連するシステムおよび方法 | |
US8811109B2 (en) | Memory pre-decoder circuits employing pulse latch(es) for reducing memory access times, and related systems and methods | |
EP3516772A1 (en) | Voltage level shifter (vls) circuits employing a pre-conditioning circuit for pre-conditioning an input signal to be voltage level shifted in response to a pre-charge phase | |
US10140044B2 (en) | Efficient memory bank design | |
US20160267959A1 (en) | Write driver circuits for resistive random access memory (ram) arrays | |
ES2575095T3 (es) | Memoria configurada para proporcionar acceso simultáneo de lectura / escritura a múltiples bancos | |
US9224439B2 (en) | Memory with word line access control | |
EP1287531B1 (en) | Transparent continuous refresh ram cell architecture | |
ES2733375T3 (es) | Circuitos de líneas de bits globales de Memoria Estática de Acceso Aleatorio (SRAM) para reducir los fallos de energía durante los accesos de lectura de memoria, y procedimientos y sistemas relacionados | |
JP2001243777A (ja) | スタティックランダムアクセスメモリ(sram)の密度を向上させるための分散型復号化システムおよび方法 | |
US20080062792A1 (en) | Memory device and method for precharging a memory device | |
ES2885223T3 (es) | Esquema robusto de conductor de escritura para compiladores de memoria estática de acceso aleatorio | |
US20150036419A1 (en) | Semiconductor apparatus and data reading method | |
US9666269B2 (en) | Collision detection systems for detecting read-write collisions in memory systems after word line activation, and related systems and methods | |
US9030887B2 (en) | Semiconductor memory device and information processing apparatus | |
ES2822380T3 (es) | Memoria con diseño de múltiples líneas de palabras | |
US20230352068A1 (en) | Memory device including multi-bit cell and operating method thereof | |
US10176856B2 (en) | Semiconductor memory apparatus |