ES2804604T3 - Técnicas de ahorro de energía para sistemas de memoria - Google Patents

Técnicas de ahorro de energía para sistemas de memoria Download PDF

Info

Publication number
ES2804604T3
ES2804604T3 ES17711926T ES17711926T ES2804604T3 ES 2804604 T3 ES2804604 T3 ES 2804604T3 ES 17711926 T ES17711926 T ES 17711926T ES 17711926 T ES17711926 T ES 17711926T ES 2804604 T3 ES2804604 T3 ES 2804604T3
Authority
ES
Spain
Prior art keywords
data
memory
lanes
command
central processor
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
Application number
ES17711926T
Other languages
English (en)
Inventor
Jungwon Suh
Dexter Chun
Michael Lo
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of ES2804604T3 publication Critical patent/ES2804604T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3215Monitoring of peripheral devices
    • G06F1/3225Monitoring of peripheral devices of memory devices
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3278Power saving in modem or I/O interface
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0625Power saving in storage systems
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2207/00Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
    • G11C2207/10Aspects relating to interfaces of memory device to external buses
    • G11C2207/102Compression or decompression of data before storage
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)
  • Bus Control (AREA)
  • Power Sources (AREA)

Abstract

Un procesador central (402), que comprende: una interfaz de capa física, PHY, configurada para acoplarse a una pluralidad de carriles de datos de un bus de memoria; un registro de lectura (434); y un controlador de memoria acoplado a la interfaz PHY, el controlador de memoria que comprende un circuito lógico de comprobación de patrón de datos (430), donde el controlador de memoria está configurado para: usar el circuito lógico de comprobación de patrón de datos para determinar si existen patrones de datos repetibles en datos que se escribirán en un elemento de memoria a través del bus de memoria; y consolidar los datos en menos carriles y enviar los datos solamente a través de determinados carriles de la pluralidad de carriles de datos del bus de memoria usando un comando de escritura modificado por un comando de selección de dirección de columna, CAS; recibir datos a través de la interfaz PHY desde el elemento de memoria; y hacer que los datos dentro del registro de lectura se dupliquen según la información recibida del elemento de memoria

Description

DESCRIPCIÓN
Técnicas de ahorro de energía para sistemas de memoria
ANTECEDENTES
I. Campo de la divulgación
[0001] La tecnología de la divulgación se refiere, en general, a sistemas de memoria en dispositivos informáticos y, en particular, a técnicas de ahorro de energía para sistemas de memoria.
II. Antecedentes
[0002] Los dispositivos informáticos se han vuelto comunes en la sociedad actual. En particular, los dispositivos informáticos móviles han proliferado en muchos aspectos de la vida cotidiana. Dichos dispositivos informáticos móviles funcionan con baterías que se recargan periódicamente. Si bien los avances en la tecnología de las baterías han aumentado el tiempo que puede pasar antes de que una batería deba recargarse, dichos avances se han visto contrarrestados por la creciente funcionalidad de los dispositivos informáticos móviles. Es decir, la funcionalidad adicional aumenta el uso de la batería, lo que a su vez requiere una carga más frecuente. En consecuencia, sigue siendo apremiante disminuir el consumo de energía en todo el dispositivo informático móvil.
[0003] Debe apreciarse que prácticamente todos los dispositivos informáticos requieren elementos de memoria de algún tipo para funcionar. Si bien el consumo de energía de la memoria se ha reducido mediante el escalado de voltaje a través de sucesivas iteraciones de normas de memoria de doble velocidad de datos de baja potencia (LPDDR) (por ejemplo, LPDDR1 se fijó a 1,8 voltios; LPDDR2 y LPDDR3 se fijaron a 1,2 voltios; y LPDDR4 se fijó a 1,1 voltios), el escalado de voltaje parece haber alcanzado una meseta dada las limitaciones tecnológicas actuales. En particular, las limitaciones de refresco y otros problemas de rendimiento del circuito requieren los 1,1 voltios de LPDDR4. La próxima generación de memoria de baja potencia (es decir, LPDDR5) se está debatiendo actualmente, y LPDDR5 contempla reducir el voltaje a 1,05 voltios, pero esta reducción ofrece solo ahorros de energía marginales.
[0004] El documento US2015186282 divulga la lectura de una línea de caché en un dispositivo de origen para su envío a un dispositivo de destino. Se identifica un patrón de bits en bits de la línea de caché. Se genera una metaseñal para representar el patrón de bits identificado. La metaseñal se transmite al dispositivo de destino en lugar de una porción de la línea de caché.
[0005] Si bien el ahorro de energía puede ser de particular interés en los dispositivos informáticos móviles, los dispositivos no móviles también pueden beneficiarse de un menor consumo de energía para reducir la generación de calor residual. Por lo tanto, los dispositivos informáticos de diversos tipos pueden beneficiarse de sistemas de memoria que han reducido el consumo de energía.
BREVE EXPLICACIÓN DE LA DIVULGACIÓN
[0006] Los aspectos divulgados en la descripción detallada incluyen técnicas de ahorro de energía en sistemas de memoria. En particular, aspectos ejemplares de la presente divulgación contemplan aprovechar los patrones que pueden existir en los elementos de memoria y eliminar las transferencias de datos duplicados. Específicamente, si los datos son repetitivos, en lugar de enviar los mismos datos repetidamente, los datos pueden enviarse solo una vez con instrucciones que hacen réplicas de los datos en un extremo receptor para restaurar los datos a su estado repetido original. Al reducir la cantidad de datos que se transfieren entre un ordenador central y un elemento de memoria, se reduce el consumo de energía.
[0007] A este respecto, en un aspecto, se divulga un procesador central. El procesador central incluye una interfaz de capa física (PHY) configurada para acoplarse a una pluralidad de carriles de datos de un bus de memoria. El procesador central también incluye un controlador de memoria acoplado a la interfaz PHY. El controlador de memoria incluye un circuito lógico de comprobación de patrón de datos. El controlador de memoria está configurado para usar el circuito lógico de comprobación de patrón de datos para determinar si existen patrones de datos repetibles en los datos que se escribirán en un elemento de memoria a través del bus de memoria. El controlador de memoria también está configurado para consolidar los datos en menos carriles y enviar los datos a través de solo algunas de la pluralidad de carriles de datos del bus de memoria.
[0008] En otro aspecto, se divulga un sistema de memoria. El sistema de memoria incluye un bloque de entrada/salida (ES) configurado para ser acoplado a un bus de memoria. El sistema de memoria también incluye un banco de memoria que incluye elementos de memoria. El banco de memoria está acoplado comunicativamente al bloque ES. El sistema de memoria también incluye un registro de escritura que funciona para recibir datos del bus de memoria a través del bloque ES y duplicar los datos varias veces de acuerdo con un comando de un procesador central.
[0009] En otro aspecto, se divulga un procesador central. El procesador central incluye una interfaz PHY configurada para acoplarse a una pluralidad de carriles de datos de un bus de memoria. El procesador central también incluye un registro de lectura. El procesador central también incluye un controlador de memoria acoplado a la interfaz PHY. El controlador de memoria está configurado para recibir datos a través de la interfaz PHY desde un sistema de memoria. El controlador de memoria también está configurado para hacer que los datos dentro del registro de lectura se dupliquen según la información recibida del sistema de memoria.
[0010] En otro aspecto, se divulga un sistema de memoria. El sistema de memoria incluye un bloque ES configurado para ser acoplado a un bus de memoria. El sistema de memoria también incluye un banco de memoria que incluye elementos de memoria. El banco de memoria está acoplado comunicativamente al bloque ES. El banco de memoria está configurado para responder a un comando de lectura enviando datos consolidados a través del bus de memoria al procesador central.
[0011] En otro aspecto, se divulga un aparato. El aparato incluye un procesador central que incluye un controlador de memoria y una interfaz PHY. El aparato también incluye un sistema de memoria. El aparato también incluye un bus de memoria. El procesador central envía datos que van a escribirse en el sistema de memoria a través de la interfaz PHY y el bus de memoria. El controlador de memoria incluye un circuito lógico de comprobación de patrón de datos. El controlador de memoria funciona para usar el circuito lógico de comprobación de patrón de datos para determinar si existen patrones de datos repetibles en los datos que van a escribirse en el sistema de memoria a través del bus de memoria. El controlador de memoria también funciona para consolidar los datos para reducir los datos enviados a través del bus de memoria.
[0012] En otro aspecto, se divulga un aparato. El aparato incluye un procesador central que incluye un controlador de memoria y una interfaz PHY. El aparato también incluye un sistema de memoria. El aparato también incluye un bus de memoria. El procesador central recibe los datos leídos desde el sistema de memoria por medio de la interfaz PHY y el bus de memoria. El sistema de memoria funciona para determinar si existen patrones de datos repetibles en los datos que se leen del sistema de memoria y para consolidar los datos para reducir los datos enviados a través del bus de memoria en respuesta a un comando de lectura del procesador central. La invención se divulga en las reivindicaciones independientes 1 y 9. Aspectos adicionales de la invención se exponen en las reivindicaciones dependientes.
BREVE DESCRIPCIÓN DE LAS FIGURAS
[0013]
La Figura 1 es un diagrama de bloques simplificado de un dispositivo informático convencional ejemplar que tiene un procesador central y un sistema de memoria;
la Figura 2A es una imagen ejemplar de código almacenado en un elemento de memoria;
la Figura 2B es una imagen ejemplar de datos sin comprimir almacenados en un elemento de memoria;
la Figura 3A es un flujo de datos ejemplar a través de ocho carriles de datos entre un procesador central y un sistema de memoria sin el beneficio de la presente divulgación;
las Figuras 3B-3D son flujos de datos ejemplares entre un procesador central y un sistema de memoria de acuerdo con aspectos ejemplares de la presente descripción;
la Figura 4 es un diagrama de bloques simplificado de un dispositivo informático ejemplar que tiene un procesador central y un sistema de memoria de acuerdo con un aspecto ejemplar de la presente divulgación;
la Figura 5 es un diagrama de bloques simplificado de un dispositivo informático ejemplar que tiene un procesador central y un sistema de memoria de acuerdo con un segundo aspecto ejemplar de la presente divulgación;
la Figura 6 es un diagrama de bloques simplificado de un dispositivo informático ejemplar que tiene un procesador central y un sistema de memoria de acuerdo con un tercer aspecto ejemplar de la presente divulgación;
la Figura 7 es un diagrama de flujo que ilustra un proceso de escritura de acuerdo con un aspecto ejemplar de la presente divulgación;
la Figura 8 es un diagrama de flujo que ilustra un proceso de lectura de acuerdo con un aspecto ejemplar de la presente divulgación;
la Figura 9 ilustra un diagrama de bloques simplificado de un circuito de ruta de escritura en un sistema de memoria; la Figura 10 ilustra un diagrama de bloques simplificado de un circuito lógico de comprobación de patrón de datos en un controlador de memoria;
la Figura 11 ilustra los comandos de lectura y escritura con temporización relativa a un reloj en un bus;
la Figura 12 ilustra una tabla de verdad de comandos de lectura y escritura ejemplar;
la Figura 13 es un flujo de datos que muestra una forma alternativa de consolidar datos entre carriles de datos; y
la Figura 14 es un diagrama de bloques de un sistema ejemplar basado en procesador que puede incluir el procesador central y los sistemas de memoria de las Figuras 4-6.
DESCRIPCIÓN DETALLADA
[0014] A continuación, con referencia a las figuras de los dibujos, se describen varios aspectos ejemplares de la presente divulgación. El término "ejemplar" se usa en el presente documento para significar "que sirve de ejemplo, caso o ilustración". Cualquier aspecto descrito en el presente documento como "ejemplar" no ha de interpretarse necesariamente como preferente o ventajoso con respecto a otros aspectos.
[0015] Los aspectos divulgados en la descripción detallada incluyen técnicas de ahorro de energía en sistemas de memoria. En particular, aspectos ejemplares de la presente divulgación contemplan aprovechar los patrones que pueden existir en los elementos de memoria y eliminar las transferencias de datos duplicados. Específicamente, si los datos son repetitivos, en lugar de enviar los mismos datos repetidamente, los datos pueden enviarse solo una vez con instrucciones que hacen réplicas de los datos en un extremo receptor para restaurar los datos a su estado repetido original. Al reducir la cantidad de datos que se transfieren entre un ordenador central y un elemento de memoria, se reduce el consumo de energía.
[0016] Antes de abordar aspectos particulares de la presente divulgación, se analiza una visión general de un dispositivo informático convencional con un procesador central y un sistema de memoria junto con un análisis de datos duplicados y su impacto en el consumo de energía, en relación con las Figuras 1-3A. El análisis de aspectos ejemplares de la presente divulgación comienza posteriormente con referencia a la Figura 3B.
[0017] A este respecto, la Figura 1 es un diagrama de bloques simplificado de un dispositivo informático convencional 10 que tiene un procesador central 12 y un sistema de memoria 14. El procesador central 12 puede ser un sistema en un chip (SoC) o una combinación de circuitos integrados (IC) para lograr la misma funcionalidad. En particular, el procesador central 12 puede incluir un procesador de señales digitales (DSP) 16, una unidad de procesamiento gráfico (GPU) y un motor multimedia 18, una unidad de procesamiento central (CPU) de múltiples núcleos 20 y un controlador de memoria 22. El DSP 16, la GPU y el motor multimedia 18, la CPU de múltiples núcleos 20 y el controlador de memoria 22 pueden comunicarse entre sí a través de un bus de sistema 24. El controlador de memoria 22 puede funcionar con una capa física (PHY) de interfaz de memoria 26 para acoplarse a un bus de memoria 28. El bus de memoria 28 también se acopla al sistema de memoria 14. En un aspecto ejemplar, el bus de memoria 28 incluye ocho primeros carriles de datos (a veces denominados DQ0-DQ7), un carril de reloj (referenciado en los dibujos como CLK), de comando y de dirección (a veces los carriles de comando y de dirección se denominan CA), y ocho segundos carriles de datos (a veces denominados DQ8-DQ15). Cabe señalar que el carril de reloj, de comando y de dirección pueden ser tres carriles separados, dos carriles (por ejemplo, el reloj en uno y los comandos y direcciones en el otro), o un solo carril según se necesite o se desee. Como se usa en el presente documento, un carril es un conductor físico (por ejemplo, un trazado de cable). Típicamente, cada carril tiene su propia patilla asociada a la interfaz de memoria PHY 26 en el procesador central 12, y una patilla respectiva para el sistema de memoria 14.
[0018] Aún con referencia a la Figura 1, el sistema de memoria 14 puede incluir uno o más bloques de entrada/salida (ES) de carril de datos, tales como los bloques ES de carril de datos 30(1)-30(2) y un bloque de comando/dirección/reloj 32 (referenciado en dibujos como CA y CLK). Además, el sistema de memoria 14 puede incluir un descodificador y un circuito cerrojo de datos 34 para cada banco de memoria de los bancos de memoria 36(1)-36(N) (se muestran cuatro). Si bien se usa el término "bloque", debe apreciarse que un bloque en este contexto es un circuito lógico u otro elemento de hardware, como es bien sabido.
[0019] Como también se sabe, el procesador central 12 lee del sistema de memoria 14 y escribe en el sistema de memoria 14. En muchos casos, la actividad de lectura/escritura se refiere a datos, pero en algunos casos la actividad de lectura/escritura se refiere a código. En cualquier caso, el contenido almacenado en los bancos de memoria 36(1)-36(N) están con frecuencia duplicados. Si bien el código solo ocupa, en general, en torno al diez por ciento de los bancos de memoria 36(1 )-36(N), el código está con frecuencia duplicado. Un fragmento de código 200 ejemplar se ilustra en la Figura 2A. Como resulta evidente, el fragmento de código 200 incluye contenido repetido, que, en este ejemplo, es "00" (véase, de manera genérica, las áreas 202 y 204 del fragmento de código 200). Del mismo modo, los datos pueden consumir la porción restante de los bancos de memoria 36(1)-36(N), pero los datos también están frecuentemente duplicados. Un bloque de datos 210 ejemplar se ilustra en la Figura 2B.
Como es fácilmente evidente, el bloque de datos 210 incluye "00" repetido (véase, por ejemplo, el área 212) y "FF" repetido (véase, por ejemplo, el área 214). Si bien los datos y el código son conceptualmente diferentes, como se usa en el presente documento, "datos" se referirá al contenido que reside en, se está escribiendo en y se está leyendo de los bancos de memoria 36(1)-36(N). Del mismo modo, se debe apreciar que si bien el contenido repetido ejemplar es "00" o "FF", los datos concretos pueden incluir otro contenido repetido y/o cambiar la frecuencia de la repetición.
[0020] En sistemas convencionales, tal como el dispositivo informático 10 de la Figura 1, cuando se ejecuta un comando de lectura o escritura, los datos del comando de lectura o escritura se distribuyen a través de los carriles de datos (es decir, DO-D15) y se envían a una entidad receptora (es decir, al procesador central 12 si es un comando de lectura o al sistema de memoria 14 si es un comando de escritura). Esta disposición se ilustra en la Figura 3A, en la que se ilustra una ráfaga de datos 300. La ráfaga de datos 300 corresponde al contenido de la Figura 2A, y cada una de las ranuras (DO-D127) en los ocho primeros carriles de datos DQ0-DQ7 se rellena con los datos correspondientes (solo ilustrados hasta D39). Como es evidente, en muchos casos, muchos de los datos dentro de las ranuras DO-D127 están duplicados. Debe apreciarse que el consumo de energía a través del bus de memoria 28 depende la velocidad de datos y la cantidad de datos. Por lo tanto, enviar datos duplicados a través del bus de memoria 28 consume energía.
[0021] Los aspectos ejemplares de la presente divulgación aprovechan la duplicación de datos en comandos de lectura y escritura y consolidan los datos duplicados en un solo carril de datos antes de enviar solamente una copia de los datos duplicados a través del bus de memoria 28 en lugar de enviar múltiples copias a través de múltiples carriles de datos. Al reducir la cantidad de datos enviados a través del bus de memoria 28, los aspectos ejemplares de la presente divulgación proporcionan ahorros de energía incluso sin poder realizar un escalado de voltaje adicional. Si bien este ahorro de energía puede traducirse en una mayor duración de la batería para los dispositivos informáticos móviles, también puede generar menos calor residual en dispositivos no móviles, y cualquier dispositivo informático puede beneficiarse de la presente divulgación.
[0022] A este respecto, la Figura 3B ilustra un primer aspecto en el que los datos del bloque de datos 310 son los mismos en ocho agrupaciones de ranuras. Por ejemplo, los datos que irían a las ranuras D0-D7 (véase 312 de manera genérica) son todos "00;" los datos que irían a las ranuras D16-D23 (véase 314 de manera genérica) son todos "01"; y los datos que irían a las ranuras D24-D31 (véase de manera genérica 316) son todos "FF". Sin embargo, en lugar de enviar los mismos datos ocho veces (una vez a través de cada carril de datos DQ0-DQ7), los datos se envían solo en el carril de datos DQ0 y los carriles de datos DQ1-DQ7 se desactivan. Es decir, en lugar de enviar, por ejemplo, "00" en los carriles de datos DQ0-DQ7 en las ranuras D8-D15, solo el carril de datos DQ0 envía la ranura D8 con una instrucción de que los datos para los carriles de datos DQ1-DQ7 son los mismos que los de la ranura D8. En el extremo receptor, un receptor recibe las ranuras desde el carril de datos DQ0 y duplica los datos del mismo para reconstruir los datos duplicados.
[0023] Se debe apreciar que no todas las colecciones de datos tendrán ocho ranuras con los mismos datos en las mismas. En consecuencia, la Figura 3C ilustra una situación en la que el bloque de datos 320 tiene cuatro ranuras que son iguales. Por ejemplo, los datos dentro de la agrupación 322 correspondientes a las ranuras D0-D3 son los mismos, y los datos dentro de la agrupación 324 correspondientes a las ranuras D4-D7 son los mismos, pero no los mismos que los datos de la agrupación 322. Por lo tanto, los datos se envían en los carriles de datos DQ0 y DQ4 y los carriles de datos duplicados DQ1-DQ3 y DQ5-DQ7 se desactivan. Si bien tener dos carriles activos consume más energía que tener un carril activo, tener los dos carriles activos consume menos energía que tener ocho carriles activos.
[0024] Del mismo modo, la Figura 3D ilustra una situación en la que el bloque de datos 330 tiene dos ranuras que son iguales. Por ejemplo, los datos de la agrupación 332 correspondientes a las ranuras DO-D1 son los mismos; los datos de la agrupación 334 correspondientes a las ranuras D2-D3 son los mismos; los datos de la agrupación 336 correspondientes a las ranuras D4-D5 son los mismos; y los datos de la agrupación 338 correspondientes a las ranuras D6-D7 son los mismos. Por lo tanto, los datos se envían en los carriles de datos DQ0, DQ2, DQ4 y DQ6 y los carriles de datos DQ1, DQ3, DQ5 y DQ7 se desactivan. Nuevamente, si bien tener cuatro carriles activos consume más energía que tener uno o dos carriles activos, tener los cuatro carriles activos consume menos energía que tener ocho carriles activos. Se puede usar la comprobación de patrón por separado para los datos que se envían a través de los carriles de datos DQ8-DQ15.
[0025] Para comunicar que se están usando las técnicas de datos duplicados de la presente divulgación, se pueden usar comandos de lectura y escritura modificados. Por ejemplo, si solo se usa un carril de datos con siete duplicados, los comandos pueden ser RD_X1 y WR_X1. Si se utilizan dos carriles de datos con tres duplicados para cada carril de datos, entonces los comandos pueden ser RD_X2 y WR_X2. Asimismo, si se utilizan cuatro carriles de datos con un duplicado por carril, los comandos pueden ser RD_X4 y WR_X4. Se debe apreciar que esta nomenclatura es arbitraria y se usa con fines ilustrativos. En la práctica, los comandos de lectura y escritura pueden modificarse mediante un comando de selección de dirección de columna (CAS). Los datos del comando CAS pueden codificar cómo se modifica un comando de lectura o escritura (por ejemplo, modificar un comando de lectura a RD_X1, RD_X2 o RD_X4). El comando CAS relativo al comando de lectura o escritura se explora con mayor detalle posteriormente con referencia a la Figura 11. Si bien el uso del comando CAS es una forma de señalar los comandos de lectura y escritura modificados, se pueden usar otras técnicas sin apartarse del alcance de la presente divulgación.
[0026] Para efectuar la consolidación de carriles de datos duplicados, se deben hacer determinadas modificaciones en el dispositivo informático 10 de la Figura 1 que permitan la detección de datos duplicados y la copia de los datos duplicados en las ranuras que hubieran sido rellenadas por carriles de datos inactivos. Las Figuras 4-6 ilustran formas alternativas ejemplares en las que se pueden implementar estas modificaciones. A este respecto, la Figura 4 ilustra un dispositivo informático 400 ejemplar que tiene un procesador central 402 y un sistema de memoria 404. El procesador central 402 puede ser un SoC robusto o una combinación de circuitos integrados para lograr la misma funcionalidad. En particular, el procesador central 402 puede incluir un DSP 406, una GPU y un motor multimedia 408, una CPU de múltiples núcleos 410 y un controlador de memoria 412. El DSP 406, la GPU y el motor multimedia 408, la CPU de múltiples núcleos 410 y el controlador de memoria 412 pueden comunicarse entre sí a través de un bus de sistema 414. El controlador de memoria 412 puede funcionar con una interfaz de memoria PHY 416 para acoplarse a un bus de memoria 418 que también se acopla al sistema de memoria 404. En un aspecto ejemplar, el bus de memoria 418 incluye ocho primeros carriles de datos (a veces denominados DQ0-DQ7), un carril de reloj (denominado en ocasiones CLK), de comando y de dirección (denominado en ocasiones CA), y ocho segundos carriles de datos (a veces denominados DQ8-DQ15). Cabe señalar que el carril de reloj, de comando y de dirección pueden ser tres carriles separados, dos carriles (el reloj en uno y los comandos y direcciones en el otro), o un solo carril según se necesite o se desee. Además, puede haber carriles de canal de retorno (no ilustrados específicamente). Como se indica anteriormente, cada carril está típicamente asociado a su propia patilla física y es un conductor físico.
[0027] Aún con referencia a la Figura 4, el sistema de memoria 404 puede incluir uno o más bloques ES de carril de datos, tales como los bloques ES de carril de datos 420(1)-420(2) y un bloque de comando/dirección/reloj 422. Además, el sistema de memoria 404 puede incluir un decodificador y un cerrojo de datos 424 para cada banco de memoria de los bancos de memoria 426(1)-426(N) (se muestran cuatro).
[0028] Aún con referencia a la Figura 4, el controlador de memoria 412 puede incluir un circuito lógico de comprobación de patrón de datos 430 y una tabla de consulta de direcciones de memoria 432. Asimismo, la interfaz de memoria PHY 416 puede incluir uno o más registros de copia de datos de lectura 434. Un registro de los uno o más registros de copia de datos de lectura 434 puede estar asociado a cada grupo de carriles de datos (DQ0-DQ7 o DQ8-DQ15). El sistema de memoria 404 incluye registros de copia de datos de escritura 436(1 )-436(2) asociados a los bloques ES de carril de datos respectivos 420(1)-420(2). Se proporciona una salida desde el bloque de comando/dirección/reloj 422 a cada uno de los registros de copia de datos de escritura 436(1)-436(2). En base a un comando recibido (por ejemplo, WR_X1, WR_X2 o WR_X4), el comando se pasa a los registros de copia de datos de escritura 436(1)-436(2) y hace que dupliquen los datos antes de pasar el conjunto de datos completo a cada descodificador y al circuito cerrojo de datos 424 para escribir en los bancos de memoria 426(1)-426(N).
[0029] Cuando los datos se escriben en el sistema de memoria 404, el circuito lógico de comprobación de patrón de datos 430 comprueba si los datos se repiten en un patrón particular y, de ser así, puede hacer que los datos se compacten en menos carriles con un comando de escritura apropiado (por ejemplo, WR_X1, WR_X2 o WR_X4) en lugar de enviar los datos duplicados a través de los ocho carriles de datos. Simultáneamente, una indicación de los datos duplicados se almacena en la tabla de consulta de direcciones de memoria 432. En el sistema de memoria 404, los registros de copia de datos de escritura 436(1)-436(2) toman los datos recibidos y duplican los datos recibidos para recrear las ocho ranuras originales de datos de modo que los datos recreados consuman el número apropiado de ranuras de memoria en base a los comandos recibidos desde el bloque de comando/dirección/reloj 422. Los datos expandidos se escriben en los bancos de memoria 426(1 )-426(N).
[0030] Cuando se genera un comando de lectura, el procesador central 402 puede hacer referencia a la tabla de consulta de direcciones de memoria 432 para ver si hay datos duplicados. Si hay datos duplicados, se envía un comando de lectura apropiado (por ejemplo, RD_X1, RD_X2 o RD_X4) al sistema de memoria 404. A continuación, el sistema de memoria 404 envía solo los datos compactados a través de los carriles activos en el bus de memoria 418. A continuación, el uno o más registros de copia de datos de lectura 434 toman los datos compactados y duplican los datos compactados un número apropiado de veces para recrear los datos originales.
[0031] Como una observación, sin necesidad de usar los aspectos de la presente divulgación, el controlador de memoria 22 de la Figura 1 puede generar 2*n bits de datos. Cada grupo de carriles de datos (DQ0-DQ7 y DQ8-DQ15) recibe n bits de datos y distribuye los n bits de datos a través de los carriles de datos secuencialmente hasta que se completa una longitud de pulsación (BL). Por lo tanto, 8DQ*BL=n. Cada uno de los bloques ES de carril de datos 30(1)-30(2) envía los n bits de datos al descodificador y al circuito cerrojo de datos 34 para su almacenamiento en los bancos de memoria 36(1)-36(N). Por el contrario, en el dispositivo informático 400 de la Figura 4, los mismos 2*n datos se pueden transferir a la interfaz de memoria PHY 416, pero solo se envían n/8, n/4 o n/2 bits de datos a través de una determinada agrupación de carriles de datos (dependiendo de si WR_X1, WR_X2 o WR_X4 se usa como comando de escritura). Los registros de copia de datos de escritura 436(1 )-436(2) expanden los datos consolidados a n bits de datos en función de un comando (copia_datos_k, donde k es el inverso de la consolidación (es decir, k es ocho (8) para WR_X1, k es cuatro (4) para WR_X2 y k es dos (2) para WR_X4)) del bloque de comando/dirección/reloj 422 antes de pasar los n bits al descodificador y al circuito cerrojo de datos 424. Cabe señalar que si la consolidación de datos no se produce en el dispositivo informático 400 (por ejemplo, porque los datos no son repetitivos), entonces el dispositivo informático 400 puede seguir funcionando de una manera similar a la del dispositivo informático 10 mediante el envío de 2*n datos a través de ocho carriles llenos.
[0032] En lugar de colocar los registros de copia de datos de escritura 436(1)-436(2) junto con los bloques ES de carril de datos 420(1 )-420(2), se puede colocar un registro de copia de datos de escritura en cada descodificador y circuito cerrojo de datos del sistema de memoria del dispositivo informático. Este aspecto ejemplar se ilustra en la Figura 5. Específicamente, se ilustra un dispositivo informático 500 ejemplar que tiene un procesador central 502 idéntico al procesador central 402 de la Figura 4. Asimismo, el procesador central 502 está acoplado al bus de memoria 418. En lugar del sistema de memoria 404, el dispositivo informático 500 incluye un sistema de memoria 504.
[0033] Aún con referencia a la Figura 5, el sistema de memoria 504 puede incluir uno o más bloques ES de carril de datos, tales como los bloques ES de carril de datos 520(1)-520(2) y un bloque de comando/dirección/reloj 522. Además, el sistema de memoria 504 puede incluir un descodificador y un circuito cerrojo de datos 524 para cada banco de memoria de los bancos de memoria 526(1)-526(N) (se muestran cuatro).
[0034] El bloque de comando/dirección/reloj 522 proporciona un comando a un registro de copia de datos de escritura 528. Cabe señalar que este aspecto puede proporcionar un mayor ahorro de energía ya que se transportan menos datos (n/k bits de datos) entre los bloques ES de carril de datos 520(1)-520(2) y cada descodificador y circuito cerrojo de datos 524. Dado que se transmiten menos datos a través de estos buses internos, se consume menos energía. Por lo tanto, en contraste con el sistema de memoria 404 de la Figura 4, el sistema de memoria 504 solo transmite n/k bits de datos a los bancos de memoria 526(1)-526(N) y cada registro interno de copia de datos de escritura 528 recibe el comando copia_datos_k y expande los datos hasta los 2*n bits de datos originales.
[0035] Debe apreciarse que la tabla de consulta de direcciones de memoria 432 es una pieza de hardware relativamente cara y tiene un espacio de direcciones limitado considerando la implementación real de silicio. En consecuencia, como otro aspecto ejemplar, un dispositivo informático 600 ejemplar, ilustrado en la Figura 6, elimina la tabla de consulta de direcciones de memoria y coloca un circuito lógico de comprobación de patrón de datos de lectura en cada descodificador y circuito cerrojo de datos junto con un registro de copia de datos de escritura en el sistema de memoria. A este respecto, la Figura 6 ilustra el dispositivo informático 600, que tiene un procesador central 602 y un sistema de memoria 604. El procesador central 602 puede ser un SoC robusto o una combinación de circuitos integrados para lograr la misma funcionalidad. En particular, el procesador central 602 puede incluir un DSP 606, una GPU y un motor multimedia 608, una CPU de múltiples núcleos 610 y un controlador de memoria 612. El DSP 606, la GPU y el motor multimedia 608, la CPU de múltiples núcleos 610 y el controlador de memoria 612 pueden comunicarse entre sí a través de un bus de sistema 614. El controlador de memoria 612 puede funcionar con una interfaz de memoria PHY 616 para acoplarse a un bus de memoria 618 que también se acopla al sistema de memoria 604. En un aspecto ejemplar, el bus de memoria 618 incluye ocho primeros carriles de datos (a veces denominados DQ0-DQ7), un carril de reloj (denominado en ocasiones CLK), de comando y de dirección (denominado en ocasiones CA), y ocho segundos carriles de datos (a veces denominados DQ8-DQ15). Cabe señalar que el carril de reloj, de comando y de dirección pueden ser tres carriles separados, dos carriles (el reloj en uno y los comandos y direcciones en el otro), o un solo carril según se necesite o se desee. Además, puede haber uno o varios carriles de canal de retorno 634. Como se indica anteriormente, cada carril está típicamente asociado a su propia patilla física y es un conductor físico.
[0036] Aún con referencia a la Figura 6, el sistema de memoria 604 puede incluir uno o más bloques ES de carril de datos, tales como los bloques ES de carril de datos 620(1)-620(2) y un bloque de comando/dirección/reloj 622. Además, el sistema de memoria 604 puede incluir un descodificador y un circuito cerrojo de datos 624 para cada banco de memoria de los bancos de memoria 626(1)-626(N) (se muestran cuatro).
[0037] Cuando los datos se escriben en el sistema de memoria 604, un circuito lógico de comprobación de patrón de datos 630 del controlador de memoria 612 comprueba si los datos se repiten en un patrón particular y, de ser así, puede hacer que los datos se compacten en menos carriles con un comando de escritura apropiado (por ejemplo, WR_X1, W r_X2 o WR_X4) en lugar de enviar los datos duplicados a través de los ocho carriles de datos. El registro de copia de datos de escritura 628 recibe el comando copia_datos_k y expande los datos hasta los 2*n bits de datos originales.
[0038] En este aspecto ejemplar, el procesador central 602 no almacena los patrones en una tabla de consulta de direcciones de memoria porque no hay una tabla de consulta de direcciones de memoria. Sin embargo, los comandos de escritura (WR_X1, WR_X2, WR_X4) se emiten como se analizó anteriormente. Los comandos de lectura siempre comienzan como comandos de lectura normales sin ninguna solicitud para compactar o consolidar datos duplicados. Sin embargo, el sistema de memoria 604, al recibir un comando de lectura, usa un circuito lógico de comprobación de patrón de datos de lectura 632 para ver si hay instancias de datos duplicados que pueden consolidarse como se describió anteriormente. Si las hay, el circuito lógico de comprobación de patrón de datos de lectura 632 notifica el bloque de comando/dirección/reloj 622, que indica que la respuesta al comando de lectura estará en forma de datos consolidados a través de un carril de canal de retorno 634 en el bus de memoria 618. Por lo tanto, el sistema de memoria 604 incluye una salida de canal de retorno (no etiquetada) que permite enviar información acerca de los datos consolidados al procesador central 602. A continuación, el procesador central 602 y, específicamente, el uno o más registros de copia de datos de lectura 636, duplica los datos recibidos para recrear los datos originales.
[0039] En el contexto del hardware descrito anteriormente con referencia a las Figuras 4-6, las Figuras 7 y 8 proporcionan diagramas de flujo de procesos ejemplares que implementan aspectos ejemplares de la presente divulgación. A este respecto, la Figura 7 es un diagrama de flujo de un proceso de operación de escritura 700 de acuerdo con un aspecto ejemplar de la presente divulgación. El proceso de operación de escritura 700 comienza con el controlador de memoria 412 o 612 generando 2*n bits de datos de escritura que se escriben en el sistema de memoria 404, 504 o 604 (bloque 702). El circuito lógico de comprobación de patrón de datos 430 o 630 comprueba la repetibilidad del patrón de datos (bloque 704). Si la respuesta al bloque 704 es no (no hay repetibilidad del patrón de datos), entonces el controlador de memoria 412 o 612 emite un comando de escritura normal (bloque 706).
[0040] Aún con referencia a la Figura 7, si la respuesta al bloque 704 es sí (hay repetibilidad del patrón de datos), entonces el circuito lógico de comprobación de patrón de datos 430 o 630 determina qué comando de escritura es apropiado dados los patrones detectados (por ejemplo, WR_X1, WR_X2, o WR_X4) (bloque 708). Si la tabla de consulta de direcciones de memoria 432 está presente, el controlador de memoria 412 actualiza la tabla de consulta de direcciones de memoria 432 (bloque 710). A continuación, el procesador central 402, 502 o 602 luego envía n/k bits de los datos de escritura y el comando de escritura apropiado (WR_X1, WR_X2 o WR_X4, en cuyo caso k es ocho (8), cuatro (4) o dos (2), respectivamente) a través del bus de memoria 418 o 618 (bloque 712). Por lo tanto, los aspectos ejemplares de la presente divulgación permiten que los datos se envíen solo a través de determinados carriles de los carriles de datos del bus de memoria 418 o 618. Debe apreciarse que, como se usa en el presente documento, "determinados" incluye el uso de un solo carril de datos. Cabe destacar que si se usa un comando de escritura normal, k es igual a uno (1) (es decir, se envían n bits de los datos de escritura). El sistema de memoria 404, 504 o 604 recibe los n/k bits de los datos de escritura y el comando de escritura (bloque 714). El bloque de comando/dirección/reloj 422, 522 o 62 determina si el comando de escritura es un comando de escritura normal (bloque 716). Si la respuesta al bloque 716 es no, entonces los registros de copia de datos de escritura 436(1)-436(2), 528 o 628 duplican los datos de escritura hasta que se restablezcan los datos originales (bloque 718). Sin embargo, si se determina un comando de escritura normal en el bloque 716 (o después de la duplicación del bloque 718), el sistema de memoria 404, 504 o 604 ejecuta la operación de escritura en los bancos de memoria 426(1)-426(N), 526(1 )-526(N) o 626(1)-626(N).
[0041] De forma similar, la Figura 8 ilustra un diagrama de flujo de un proceso de operación de lectura 800. El proceso de operación de lectura 800 comienza con el controlador de memoria 412 (o 612) determinando que se necesitan datos del sistema de memoria 404 o 504. El controlador de memoria 412 compara una dirección de lectura de memoria con la tabla de consulta de direcciones de memoria 432 (bloque 802) para ver si hay una correspondencia de dirección de memoria (bloque 804). Si no hay una correspondencia en el bloque 804, entonces se envía un comando de lectura normal (bloque 806). Cabe señalar que en el dispositivo informático 600, donde no hay una tabla de consulta de direcciones de memoria 432, se envía un comando de lectura normal en el bloque 806. Sin embargo, si hay una correspondencia de dirección de memoria en el bloque 804 (es decir, hay una entrada en la tabla de consulta de direcciones de memoria 432 correspondiente a la dirección de lectura de memoria), entonces, en base a la entrada en la tabla de consulta de direcciones de memoria 432, el controlador de memoria 412 determina un comando de lectura apropiado (es decir, RD_X1, RD_X2 o RD_X4) (bloque 808). A continuación, el procesador central 402 envía el comando de lectura apropiado a través del bus de memoria 418 (bloque 810). El sistema de memoria 404, 504 o 604 recibe el comando de lectura desde el procesador central 402, 502 o 602 (bloque 812).
[0042] Aún con referencia a la Figura 8, una vez que se recibe el comando de lectura, el bloque de comando/dirección/reloj 422, 522 o 622 determina si el comando de lectura es un comando de lectura normal (bloque 814). Si la respuesta al bloque 814 es no, no es un comando de lectura normal (es decir, RD_X1, RD_X2 o RD_X4), entonces el descodificador y el circuito cerrojo de datos 424 o 524 recuperan n/k bits de los bancos de memoria 426(1)-426(N) o 526(1)-526(N) (bloque 816). Cabe señalar que en lo que respecta al dispositivo informático 600, incluso si la respuesta al bloque 814 es sí, entonces el circuito lógico de comprobación de patrón de datos de lectura 632 comprueba los patrones (bloque 818) y determina qué cantidad de consolidación es posible. El sistema de memoria 604 envía un comando de canal de retorno (bloque 820) a través del carril de canal de retorno 634 que indica que se está enviando un conjunto de datos de lectura consolidado al procesador central 602. De lo contrario, si el comando de lectura es un comando de lectura normal, entonces el descodificador y el circuito cerrojo de datos 424, 524 o 624 ejecutan una operación de lectura normal de n bits (bloque 822). Después del bloque 816, 820 u 822, el sistema de memoria 404, 504 o 604 envía n/k bits de datos de lectura al procesador central 402, 502 o 602 a través del bus de memoria 418 o 618 (bloque 824). A continuación, los n/k bits de los datos de lectura se duplican según sea necesario por el uno o más registros de copia de datos de lectura 434 o 636 en la interfaz de memoria PHY 416 o 616 (bloque 826) y se usan según sea necesario.
[0043] La Figura 9 ilustra una ruta de datos de escritura 900 ejemplar dentro del sistema de memoria 404 de la Figura 4, el sistema de memoria 504 de la Figura 5, o el sistema de memoria 604 de la Figura 6. Sin embargo, con fines ilustrativos, se supone que la ruta de datos de escritura 900 está en el sistema de memoria 404. Por lo tanto, los carriles de datos DQ0-DQ7 y los carriles CA llegan a través del bus de memoria 418. Aunque no se ilustra, los carriles de datos DQ8-DQ15 también pueden estar presentes en el bus de memoria 418. Los carriles CA pasan al bloque de comando/dirección/reloj 422, mientras que los carriles de datos DQ0-DQ7 están acoplados al bloque ES de carril de datos 420(1). Las instrucciones y comandos en los carriles CA se pasan a un descodificador de comandos 902, que determina si un procesador central 402 ha emitido un comando de escritura normal o WR_X1, WR_X2 o WR_X4. En base al comando recibido, el descodificador de comandos 902 da instrucciones a un circuito de bloques de control de copia de datos 904. El circuito de bloques de control de copia de datos 904 controla circuitos lógicos de activación periódica 906(1)-906(M) asociados a los registros 908(1)-908(M) del registro de copia de datos de escritura 436(1). Simultáneamente, una memoria intermedia de tipo primero en entrar, primero en salir (FIFO) de datos de escritura 910 proporciona los n bits de datos como entrada de datos al registro de copia de datos de escritura 436(1).
[0044] Como se ilustra en la Figura 9, los n bits de datos irían normalmente a los M registros de los registros 908(1)-908(M). Cuando el circuito de bloques de control de copia de datos 904 valida no_copia_datos, entonces hace que haya un bit de datos en uno de los registros 908(1)-908(M). Sin embargo, si el circuito de bloques de control de copia de datos 904 valida una de las líneas copia_datos_8, copia_datos_4 o copia_datos_2, entonces los circuitos lógicos de activación periódica 906(1)-906(M) funcionan para hacer que los datos se copien en un número respectivo de registros 908(1)-908(M). Se debe apreciar que se pueden usar otras estructuras para la ruta de datos de escritura 900 sin apartarse del alcance de la presente divulgación.
[0045] La Figura 10 ilustra un diagrama de bloques ejemplar de un circuito lógico de comprobación de patrón de datos 1000, correspondiente al circuito lógico de comprobación de patrón de datos 430 o 630 de las Figuras 4 o 6. El circuito lógico de comprobación de patrón de datos 1000 incluye un bus de datos 1002 que transporta, por ejemplo, 64 bits de datos en el mismo. Estos 64 bits de datos se proporcionan a comprobadores de octetos 1004(1 )-1004(8). Como se ilustra, se proporcionan ocho bits, correspondientes a un bit para cada uno de los carriles de datos DQ0-DQ7, a cada uno de los comprobadores de octetos 1004(1)-1004(8). Los comprobadores de octetos 1004(1)-1004(8) proporcionan, por ejemplo, un código de dos bits que indica una coincidencia de cero bits, dos bits, cuatro bits u ocho bits, correspondientes a una escritura normal, W r_X4, WR_X2, o WR_X1, respectivamente. Estos códigos de dos bits se proporcionan a un comprobador de paquetes 1006. El comprobador de paquetes 1006 compara todas las salidas para todo el paquete para determinar un valor mínimo de datos que propagar. Si no se obtiene una coincidencia mínima, entonces se devuelve un resultado false, lo que significa que no hay consolidación de datos. Si se devuelve un resultado positivo, entonces se almacenará una dirección de inicio de transacción en la tabla de consulta de direcciones de memoria 432 de la Figura 4, si está presente. Una lógica de control 1008 realiza un seguimiento del inicio y finalización de la transacción. El comprobador de paquetes 1006 proporciona una señal de correspondencia y una copia_datos (1:0) a la interfaz de memoria PHY 416 o 616. Estas señales irán a un bloque de codificación de comando y dirección (no mostrado) en la interfaz de memoria PHY 416 o 616. El bus de dirección (35:0) también se envía al bloque de codificación de comando y dirección. El bloque de codificación de comando y dirección usa las señales para construir un comando apropiado con una dirección apropiada para su envío a través del bus de memoria 418 o 618 al sistema de memoria 404, 504 o 604. El bus de datos 63:0 son los datos que se envían a la interfaz de memoria PHY 416 o 616 y se consolidan (o no) según corresponda antes de su envío al sistema de memoria 404, 504 o 604.
[0046] La Figura 11 ilustra cronogramas de bus de dirección y comando de lectura y escritura. Como puede apreciarse fácilmente, un comando de escritura normal 1102 y un comando de lectura normal 1104 ocupan dos pulsos de reloj. Los comandos modificados de la presente divulgación modifican los comandos de lectura y escritura con un comando CAS. El obtener un comando CAS de dos bits y el comando de lectura o escritura de dos bits ocupa cuatro pulsos en total. Así, como se ilustra, un comando de escritura modificado 1106 se presenta como WR, W r , CAS, CAS, y un comando de lectura modificado 1108 se presenta como RD, RD, CAS, CAS. Sin embargo, la reducción neta en los datos enviados a través del bus de memoria 418 reduce la potencia aunque los comandos usen un número ligeramente mayor de bits. Debe apreciarse que el comando de escritura modificado 1106 y el comando de lectura modificado 1108 son ilustrativos, y que podrían usarse comandos alternativos. Del mismo modo, el comando CAS se puede situar delante de los comandos de lectura o escritura sin apartarse del alcance de la presente divulgación. Obsérvese, además, que en lugar de usar un comando de lectura modificado, el procesador central 602 puede enviar un comando de lectura normal y el sistema de memoria 604 usa el carril de canal de retorno 634 para indicar al procesador central 602 que se están enviando datos consolidados al procesador central 602. Si bien se ilustra que el carril de canal de retorno 634 se extiende desde el bloque de comando/dirección/reloj 622, debe apreciarse que podrían usarse otros canales de retorno. Por ejemplo, el canal de retorno podría ser un carril DQ adicional de un bloque ES de carril de datos (por ejemplo, el bloque ES de carril de datos 620(1) o 620(2)).
[0047] la Figura 12 es una tabla de verdad de comandos de lectura y escritura ejemplar. El bus de comando consiste en selección de chip (CS) y 6 carriles de un bus de dirección y comando (CA0-CA5). El protocolo de comando normal de lectura y escritura (código de comando, dirección de banco (BA), dirección de columna (C4-C9)) se transfiere a través de dos pulsos de reloj. En caso de lectura y escritura reducidas de carril ES, los comandos de lectura y escritura pueden ser modificados por un comando CAS para notificar el tipo de comando de carril ES reducido (WR_X1 o W r_X2 o WR_X4 para un comando de escritura, RD_X1 o RD_x 2 o RD_X4 para un comando de lectura) como los comandos modificados 1106 y 1108 ilustrados en la Figura 11. El comando CAS incluye un código de comando y una ES reducida por octeto DQ (LB-D0, LB-D1 para el octeto DQ inferior (DQ0-DQ7), UB-D0, UB-D1 para el octeto DQ superior (DQ8-DQ15)). Por ejemplo, cuando (LB-D0, LB-D1)=00 y (UB-D0, UB-D1)=10 para los comandos de escritura y CAS, los sistemas de memoria interpretan una escritura normal para el octeto DQ inferior y una escritura reducida de carril ES (WR_X1 por ejemplo) para el octeto DQ superior. Se pueden construir otras tablas de verdad para llevar a cabo aspectos ejemplares de la presente divulgación.
[0048] Cabe señalar además que, en lugar de (o además de) indicar una diferencia entre diferentes comandos de escritura, el comando CAS se puede usar para indicar durante cuánto tiempo se produce la consolidación de datos de un comando de escritura más grande. Por ejemplo, la consolidación de datos se puede producir en las ocho primeras o segundas pulsaciones de una BL de dieciséis o en las ocho primeras, segundas, terceras o cuartas pulsaciones de una BL de treinta y dos.
[0049] Del mismo modo, se debe apreciar que el uso del carril de canal de retorno 634 puede permitir la eliminación del comando de lectura modificado 1108. En un aspecto ejemplar, el carril de canal de retorno 634 puede ser un carril de máscara de datos (DM). Un carril DM puede estar asociado a los bloques ES de carril de datos 620(1) y 620(2). Normalmente, si la pulsación DM es "H", el octeto DQ correspondiente no se escribe en la disposición de memoria sino que, tradicionalmente, el carril DM solo se usa durante comandos de escritura. Por lo tanto, el carril DM está abierto para su uso durante respuestas a comandos de lectura. En tal caso, cuando se valida un carril DM particular, eso indica que se está produciendo la consolidación de datos en respuesta al comando de lectura.
[0050] Cabe señalar que si bien el análisis anterior ha contemplado la consolidación de datos basándose en la repetición vertical en los datos que se transfieren, la presente divulgación no está limitada a esto. A este respecto, la Figura 13 ilustra una situación en la que cada octavo bit está repetido. La consolidación de datos puede producirse también en tal caso, donde el primer bit repetido se correlaciona con D0, D8, D16, D24, etc., el segundo bit repetido se correlaciona con D1, D9, D17, D25, etc. y así sucesivamente. Sin embargo, los bits repetidos solo se envían en el carril de datos DQ0, lo que da como resultado ahorros de energía, como se describe anteriormente.
[0051] Las técnicas de ahorro de energía para sistemas de memoria acuerdo con los aspectos divulgados en el presente documento pueden proporcionarse o integrarse 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, lentillas, 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.
[0052] A este respecto, la Figura 14 ilustra un ejemplo de un sistema basado en procesador 1400 que puede emplear los procesadores centrales 402, 502, 602 y los sistemas de memoria 404, 504 y 604 ilustrados en las Figuras 4-6. En este ejemplo, el sistema basado en procesador 1400 incluye una o más CPU 1402, donde cada una incluye uno o más procesadores 1404, que pueden ser el procesador central 402, 502 o 602. La(s) CPU 1402 puede(n) tener una memoria caché 1406 acoplada al o a los procesadores 1404 para un rápido acceso a los datos almacenados temporalmente. La(s) CPU 1402 está(n) acoplada(s) a un bus de sistema 1408 y puede(n) interacoplar dispositivos incluidos en el sistema basado en procesador 1400. El bus de sistema 1408 puede ser el bus de sistema 414 o 614. Como es bien sabido, la(s) CPU 1402 se comunica(n) con estos otros dispositivos intercambiando información de dirección, control y datos a través del bus de sistema 1408. Por ejemplo, la(s) CPU 1402 puede(n) comunicar solicitudes de transacción de bus a un controlador de memoria 1410, que puede ser el controlador de memoria 412 o 612. Aunque no se ilustra en la Figura 14, se pueden proporcionar múltiples buses de sistema 1408.
[0053] Otros dispositivos pueden conectarse al bus de sistema 1408. Como se ilustra en la Figura 14, estos dispositivos pueden incluir un sistema de memoria 1412, que puede ser el sistema de memoria 404, 504 o 604, uno o más dispositivos de entrada 1414, uno o más dispositivos de salida 1416, uno o más dispositivos de interfaz de red 1418 y uno o más controladores de visualización 1420, como ejemplos. El/los dispositivo(s) de entrada 1414 puede(n) incluir cualquier tipo de dispositivo de entrada, incluyendo, pero sin limitarse a, teclas de entrada, conmutadores, procesadores de voz, etc. El/los dispositivo(s) de salida 1416 puede(n) incluir cualquier tipo de dispositivo de salida, incluyendo, pero sin limitarse a, audio, vídeo, otros indicadores visuales, etc. El/los dispositivo(s) de interfaz de red 1418 puede(n) ser cualquier dispositivo configurado para permitir el intercambio de datos hacia y desde una red 1422. La red 1422 puede ser cualquier tipo de red, incluyendo, pero sin limitarse a, una red alámbrica 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 1418 puede(n) configurarse para admitir cualquier tipo de protocolo de comunicaciones deseado.
[0054] La(s) CPU 1402 también puede(n) configurarse para acceder al/a los controladores de visualización 1420 a través del bus de sistema 1408 para controlar la información enviada a uno o más dispositivos de visualización 1424. El/los controlador(es) de visualización 1420 envía(n) información al/a los dispositivo(s) de visualización 1424 que se va a mostrar por medio de uno o más procesadores de vídeo 1426, que procesa(n) la información que se va a mostrar en un formato adecuado para el/los dispositivo(s) de visualización 1424. El/los dispositivo(s) de visualización 1424 puede(n) incluir cualquier tipo de dispositivo de visualización, incluyendo, pero sin limitarse a, una pantalla de tubo de rayos catódicos (CRT), una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodos emisores de luz (LED), etc.
[0055] Los expertos en la técnica apreciarán, además, que los diversos bloques lógicos, módulos, circuitos y algoritmos ilustrativos descritos en relación con los aspectos divulgados en el presente documento pueden implementarse como hardware electrónico, instrucciones almacenadas en memoria o en otro medio legible por ordenador y ejecutadas por un procesador u otro dispositivo de procesamiento, o combinaciones de ambas cosas. Los dispositivos descritos en el presente documento pueden emplearse en cualquier circuito, componente de hardware, IC o chip de IC, 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 ilustrativos, en lo que respecta a 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 distintas formas para cada aplicación particular, pero no se debe interpretar que dichas decisiones de implementación suponen apartarse del alcance de la presente divulgación.
[0056] Los diversos bloques lógicos, módulos y circuitos ilustrativos descritos en relación con los aspectos divulgados en el presente documento pueden implementarse o realizarse con un procesador, un DSP, un circuito integrado específico de la aplicación (ASIC), una matriz de puertas programables in situ (FPGA) u otro dispositivo de lógica 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 estado convencional. 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).
[0057] Los aspectos divulgados en el presente documento pueden realizarse 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 programable eléctricamente 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 ejemplar está acoplado al procesador de modo que el procesador puede leer información de, y escribir información en, el medio de almacenamiento. De forma 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.
[0058] Cabe señalar además que las etapas operativas descritas en cualquiera de los aspectos ejemplares 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 varias etapas diferentes. Adicionalmente, pueden combinarse una o más etapas operativas analizadas en los aspectos ejemplares. Se entenderá que las etapas operativas ilustradas en los diagramas de flujo pueden someterse 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 entre una variedad de distintas tecnologías y técnicas. Por ejemplo, los datos, instrucciones, comandos, información, señales, bits, símbolos y segmentos que pueden haberse mencionado a lo largo de la descripción anterior pueden representarse mediante voltajes, corrientes, ondas electromagnéticas, campos o partículas magnéticos, campos o partículas ópticos o cualquier combinación de los mismos.
[0059] 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 variantes 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 ha de conceder el alcance más amplio consecuente con los principios y las características novedosas divulgados en el presente documento.

Claims (14)

REIVINDICACIONES
1. Un procesador central (402), que comprende:
una interfaz de capa física, PHY, configurada para acoplarse a una pluralidad de carriles de datos de un bus de memoria;
un registro de lectura (434); y
un controlador de memoria acoplado a la interfaz PHY, el controlador de memoria que comprende un circuito lógico de comprobación de patrón de datos (430), donde el controlador de memoria está configurado para: usar el circuito lógico de comprobación de patrón de datos para determinar si existen patrones de datos repetibles en datos que se escribirán en un elemento de memoria a través del bus de memoria; y consolidar los datos en menos carriles y enviar los datos solamente a través de determinados carriles de la pluralidad de carriles de datos del bus de memoria usando un comando de escritura modificado por un comando de selección de dirección de columna, CAS;
recibir datos a través de la interfaz PHY desde el elemento de memoria; y
hacer que los datos dentro del registro de lectura se dupliquen según la información recibida del elemento de memoria.
2. El procesador central de la reivindicación 1, en el que el controlador de memoria comprende además una tabla de consulta y el controlador de memoria escribe en la tabla de consulta información de dirección para datos escritos en el elemento de memoria.
3. El procesador central de la reivindicación 2, en el que el controlador de memoria está configurado para usar la tabla de consulta para determinar si datos que se leen desde el elemento de memoria tienen patrones de datos repetibles de modo que se puede usar un comando de lectura consolidada.
4. El procesador central de la reivindicación 1, en el que el controlador de memoria está configurado para consolidar datos duplicados de ocho carriles en un carril de datos.
5. El procesador central de la reivindicación 1, en el que el controlador de memoria está configurado para consolidar datos duplicados de ocho carriles en dos o cuatro carriles de datos.
6. El procesador central de la reivindicación 1, en el que la interfaz PHY comprende un carril de canal de retorno.
7. El procesador central de la reivindicación 6, en el que el controlador de memoria está configurado para recibir una indicación de que datos desde el controlador de memoria serán datos consolidados.
8. El procesador central de la reivindicación 1 integrado en un circuito integrado, IC.
9. Un sistema de memoria, que comprende:
un bloque de entrada/salida, 10, (520) configurado para acoplarse a un bus de memoria;
un banco de memoria (526) que comprende elementos de memoria, donde el banco de memoria está acoplado comunicativamente al bloque ES; y caracterizado por que el sistema de memoria comprende además:
un registro de escritura (528) que funciona para recibir datos desde el bus de memoria a través del bloque ES y duplicar los datos un número de veces de acuerdo con un comando de escritura modificado por un comando de selección de dirección de columna, CAS, de un procesador central, donde el comando CAS indica al sistema de memoria cómo duplicar los datos.
10. El sistema de memoria de la reivindicación 9, en el que el banco de memoria está configurado para almacenar los datos duplicados del registro de escritura en los elementos de memoria.
11. El sistema de memoria de la reivindicación 9, que comprende además un circuito lógico de comprobación de patrón de datos asociado al banco de memoria.
12. El sistema de memoria de la reivindicación 11, en el que el circuito lógico de comprobación de patrón de datos está configurado para determinar si existen patrones de datos repetibles en datos leídos de los elementos de memoria y para consolidar los datos en menos carriles y enviar los datos solamente a través de determinados carriles de una pluralidad de carriles de datos del bus de memoria.
13. El sistema de memoria de la reivindicación 9, que comprende además una salida de carril de canal de retorno.
14. El sistema de memoria de la reivindicación 13, en el que el sistema de memoria está configurado para enviar una indicación de datos duplicados al procesador central a través de un carril de canal de retorno a través de la salida de carril de canal de retorno.
ES17711926T 2016-03-03 2017-03-03 Técnicas de ahorro de energía para sistemas de memoria Active ES2804604T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201662302891P 2016-03-03 2016-03-03
US15/448,327 US10222853B2 (en) 2016-03-03 2017-03-02 Power saving techniques for memory systems by consolidating data in data lanes of a memory bus
PCT/US2017/020582 WO2017152005A1 (en) 2016-03-03 2017-03-03 Power saving techniques for memory systems

Publications (1)

Publication Number Publication Date
ES2804604T3 true ES2804604T3 (es) 2021-02-08

Family

ID=59722700

Family Applications (1)

Application Number Title Priority Date Filing Date
ES17711926T Active ES2804604T3 (es) 2016-03-03 2017-03-03 Técnicas de ahorro de energía para sistemas de memoria

Country Status (9)

Country Link
US (2) US10222853B2 (es)
EP (1) EP3423947B1 (es)
JP (2) JP6999565B2 (es)
KR (1) KR102420909B1 (es)
CN (1) CN108701099B (es)
CA (1) CA3013090A1 (es)
ES (1) ES2804604T3 (es)
HU (1) HUE049615T2 (es)
WO (1) WO2017152005A1 (es)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10222853B2 (en) * 2016-03-03 2019-03-05 Qualcomm Incorporated Power saving techniques for memory systems by consolidating data in data lanes of a memory bus
US10394724B2 (en) * 2016-08-22 2019-08-27 Qualcomm Incorporated Low power data transfer for memory subsystem using data pattern checker to determine when to suppress transfers based on specific patterns
KR20190035392A (ko) * 2017-09-26 2019-04-03 삼성전자주식회사 데이터 다중 기록을 수행하는 메모리 장치, 메모리 장치의 동작방법 및 메모리 컨트롤러의 동작방법
KR102731057B1 (ko) * 2018-09-21 2024-11-15 삼성전자주식회사 메모리 장치와 통신하는 데이터 처리 장치 및 방법
KR20200071396A (ko) * 2018-12-11 2020-06-19 에스케이하이닉스 주식회사 반도체장치 및 반도체시스템
KR102698036B1 (ko) * 2019-04-10 2024-08-22 에스케이하이닉스 주식회사 반도체장치
US11722152B1 (en) 2020-11-25 2023-08-08 Astera Labs, Inc. Capacity-expanding memory control component
US12061793B1 (en) * 2020-11-25 2024-08-13 Astera Labs, Inc. Capacity-expanding memory control component
WO2022211267A1 (ko) 2021-03-30 2022-10-06 삼성전자 주식회사 데이터 처리 시스템 및 데이터 처리 장치의 동작 방법
US11785424B1 (en) 2021-06-28 2023-10-10 Wm Intellectual Property Holdings, L.L.C. System and method for asset tracking for waste and recycling containers
CN116264083B (zh) * 2021-12-14 2025-08-15 长鑫存储技术有限公司 存储系统以及存储系统的数据读取方法
CN116264085B (zh) * 2021-12-14 2025-08-15 长鑫存储技术有限公司 存储系统以及存储系统的数据写入方法
US20230197123A1 (en) * 2021-12-20 2023-06-22 Advanced Micro Devices, Inc. Method and apparatus for performing a simulated write operation
US11899598B2 (en) * 2022-05-31 2024-02-13 Western Digital Technologies, Inc. Data storage device and method for lane selection based on thermal conditions
KR20240009813A (ko) 2022-07-14 2024-01-23 삼성전자주식회사 단일 직렬 쓰기 인터페이싱 방식을 지원하는 스토리지 모듈 및 그것의 동작 방법
US12356292B1 (en) 2023-07-21 2025-07-08 Wm Intellectual Property Holdings, L.L.C. Apparatus and method for asset tracking for metal waste and recycling containers
US12541301B2 (en) * 2023-10-08 2026-02-03 SanDisk Technologies, Inc. Shortened commands to reduce data transmission
US12596612B1 (en) 2023-10-30 2026-04-07 Astera Labs, Inc. Virtual metadata storage with decode-alias mitigation
US12277350B1 (en) 2023-10-30 2025-04-15 Astera Labs, Inc. Virtual metadata storage

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7190284B1 (en) * 1994-11-16 2007-03-13 Dye Thomas A Selective lossless, lossy, or no compression of data based on address range, data type, and/or requesting agent
JPH1011360A (ja) * 1996-06-24 1998-01-16 Toshiba Corp キャッシュメモリ
JP2921505B2 (ja) * 1996-08-09 1999-07-19 日本電気株式会社 半導体記憶装置
US6009026A (en) * 1997-07-28 1999-12-28 International Business Machines Corporation Compressed input/output test mode
US6145069A (en) * 1999-01-29 2000-11-07 Interactive Silicon, Inc. Parallel decompression and compression system and method for improving storage density and access speed for non-volatile memory and embedded memory devices
US6785793B2 (en) 2001-09-27 2004-08-31 Intel Corporation Method and apparatus for memory access scheduling to reduce memory access latency
US7383399B2 (en) * 2004-06-30 2008-06-03 Intel Corporation Method and apparatus for memory compression
US7631207B1 (en) * 2006-04-21 2009-12-08 Sun Microsystems, Inc. Reducing power consumption for processing of common values in microprocessor registers and execution units
GB2457667B (en) 2008-02-19 2012-01-11 Advanced Risc Mach Ltd Data transfer between devices within an integrated circuit
US8694703B2 (en) * 2010-06-09 2014-04-08 Brocade Communications Systems, Inc. Hardware-accelerated lossless data compression
MX2013002773A (es) 2010-09-16 2013-04-05 Apple Inc Controlador de memoria con multiples puertos con puertos asociados con las clases de trafico.
KR101854251B1 (ko) 2010-11-30 2018-05-03 삼성전자주식회사 멀티 채널 반도체 메모리 장치 및 그를 구비하는 반도체 장치
US9189394B2 (en) * 2012-08-08 2015-11-17 Wisconsin Alumni Research Foundation Memory-link compression for graphic processor unit
JP2014053058A (ja) * 2012-09-06 2014-03-20 Toshiba Corp 半導体記憶装置
CN105283856A (zh) 2013-06-28 2016-01-27 惠普发展公司,有限责任合伙企业 能够在多个数据宽度下通信的存储器组件
US9430434B2 (en) 2013-09-20 2016-08-30 Qualcomm Incorporated System and method for conserving memory power using dynamic memory I/O resizing
US9568542B2 (en) * 2013-09-25 2017-02-14 Cavium, Inc. Memory interface with integrated tester
US20150121111A1 (en) * 2013-10-24 2015-04-30 Qualcomm Incorporated System and method for providing multi-user power saving codebook optmization
US9864536B2 (en) * 2013-10-24 2018-01-09 Qualcomm Incorporated System and method for conserving power consumption in a memory system
US9563251B2 (en) 2013-12-28 2017-02-07 Intel Corporation Representing a cache line bit pattern via meta signaling
KR102017808B1 (ko) 2013-12-31 2019-09-03 에스케이하이닉스 주식회사 데이터 처리 장치 및 데이터 처리 방법
CN103714026B (zh) * 2014-01-14 2016-09-28 中国人民解放军国防科学技术大学 一种支持原址数据交换的存储器访问方法及装置
WO2016186564A1 (en) * 2015-05-21 2016-11-24 Zeropoint Technologies Ab Methods, devices and systems for semantic-value data compression and decompression
US20170115900A1 (en) * 2015-10-23 2017-04-27 International Business Machines Corporation Dummy page insertion for flexible page retirement in flash memory storing multiple bits per memory cell
US10222853B2 (en) 2016-03-03 2019-03-05 Qualcomm Incorporated Power saving techniques for memory systems by consolidating data in data lanes of a memory bus
US10394724B2 (en) * 2016-08-22 2019-08-27 Qualcomm Incorporated Low power data transfer for memory subsystem using data pattern checker to determine when to suppress transfers based on specific patterns

Also Published As

Publication number Publication date
JP6999565B2 (ja) 2022-01-18
JP2019507436A (ja) 2019-03-14
CN108701099A (zh) 2018-10-23
CA3013090A1 (en) 2017-09-08
CN108701099B (zh) 2022-05-03
HUE049615T2 (hu) 2020-09-28
BR112018067531A2 (pt) 2019-01-02
EP3423947B1 (en) 2020-04-22
EP3423947A1 (en) 2019-01-09
US10222853B2 (en) 2019-03-05
US20170255394A1 (en) 2017-09-07
KR102420909B1 (ko) 2022-07-13
KR20180119584A (ko) 2018-11-02
WO2017152005A1 (en) 2017-09-08
US20190179399A1 (en) 2019-06-13
JP7417576B2 (ja) 2024-01-18
JP2022040150A (ja) 2022-03-10
US10852809B2 (en) 2020-12-01

Similar Documents

Publication Publication Date Title
JP7417576B2 (ja) メモリシステムのための省電力化技法
CN108351820B (zh) 在跨存储器链路传送纠正数据时保护ecc位置
US9558805B2 (en) Memory modules and memory systems
US10061645B2 (en) Memory array and link error correction in a low power memory sub-system
US8706958B2 (en) Data mask encoding in data bit inversion scheme
KR20130119545A (ko) 메모리 장치, 메모리 컨트롤러, 메모리 시스템 및 이의 동작 방법
CN109584944B (zh) 支持多输入移位寄存器功能的输入输出电路及存储器件
CN107209703A (zh) 支持在专用于存储错误校正码(ecc)的ecc存储单元中的数据指示符的存储的双列直插式存储器模块(dimm)
US20190042413A1 (en) Method and apparatus to provide predictable read latency for a storage device
US10236917B2 (en) Providing memory bandwidth compression in chipkill-correct memory architectures
CN114840137B (zh) 用于在动态随机存取存储器上执行写入训练的技术
KR102078562B1 (ko) 리프레쉬 어드레스 생성기 및 이를 포함하는 휘발성 메모리 장치
CN109964213B (zh) 在基于处理器的系统中提供经扩展动态随机存取存储器突发长度
US20140177347A1 (en) Inter-row data transfer in memory devices
CN109256172B (zh) 包括检测时钟样式生成器的存储器设备
US10156887B2 (en) Cache memory clock generation circuits for reducing power consumption and read errors in cache memory
KR20170116918A (ko) 다중-입력 쉬프트 레지스터 기능을 지원하는 입출력 회로 및 이를 포함하는 메모리 장치
BR112018067531B1 (pt) Processador hospedeiro e sistema de memória
KR101348061B1 (ko) 고정된 레지스터 어드레스 공간에서 제어 및 상태 신호 밀도를 증가시키기 위한 기술
KR20160113152A (ko) 동적 랜덤 액세스 메모리 (dram) 인터페이스들을 위한 직렬 데이터 송신