ES2840423T3 - Tecnología de acceso a la memoria y sistema informático - Google Patents
Tecnología de acceso a la memoria y sistema informático Download PDFInfo
- Publication number
- ES2840423T3 ES2840423T3 ES17914958T ES17914958T ES2840423T3 ES 2840423 T3 ES2840423 T3 ES 2840423T3 ES 17914958 T ES17914958 T ES 17914958T ES 17914958 T ES17914958 T ES 17914958T ES 2840423 T3 ES2840423 T3 ES 2840423T3
- Authority
- ES
- Spain
- Prior art keywords
- data
- block
- length
- sub
- memory controller
- 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
- 238000005516 engineering process Methods 0.000 title description 5
- 230000004044 response Effects 0.000 claims abstract description 15
- 238000000034 method Methods 0.000 claims description 56
- 230000005540 biological transmission Effects 0.000 claims description 39
- 238000010586 diagram Methods 0.000 description 16
- 238000004891 communication Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 6
- 238000004590 computer program Methods 0.000 description 4
- 230000000630 rising effect Effects 0.000 description 4
- 230000011664 signaling Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 3
- 239000002699 waste material Substances 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012937 correction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Systems (AREA)
- Memory System (AREA)
- Saccharide Compounds (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
Un sistema informático (100), que comprende un controlador de memoria (106), un controlador de medios (110) y una memoria no volátil, NVM (112), conectados al controlador de medios (110), en el que el controlador de memoria (106) está conectado al controlador de medios (110) y se comunica con el controlador de medios (110) cumpliendo con un protocolo de acceso al bus compatible con protocolo de doble t 5 asa de datos, DDR,la NVM (112) está configurada para almacenar datos; el controlador de memoria (106) está configurado para enviar un primer comando de lectura al controlador de medios, en el que el primer comando de lectura transporta un primer ID, una primera dirección y una primera longitud, el primer ID es un identificador del primer comando de lectura, y la primera longitud se utiliza para indicar un tamaño de los primeros datos que se leerán por el primer comando de lectura; el controlador de medios (110) está configurado para leer los primeros datos desde la NVM basándose en la primera dirección; el controlador de memoria (106) está configurado para enviar al menos dos comandos de envío al controlador de medios, en el que los al menos dos comandos de envío se utilizan para obtener al menos dos partes de datos de una tercera longitud, y la tercera longitud es menor que la primera longitud; el controlador de medios (110) está configurado para, en respuesta a los al menos dos comandos de envío, devolver al menos dos subbloques de datos de la tercera longitud y los metadatos de los al menos dos subbloques de datos al controlador de memoria, en el que los metadatos comprenden el primer ID y un identificador de ubicación, y el identificador de ubicación se utiliza para indicar un desplazamiento de un subbloque de datos correspondiente en los primeros datos; y el controlador de memoria (106) está configurado para obtener los primeros datos basándose en los al menos dos subbloques de datos y los identificadores de ubicación en los metadatos de los al menos dos subbloques de datos.
Description
DESCRIPCIÓN
Tecnología de acceso a la memoria y sistema informático
Campo técnico
Esta aplicación se refiere al campo de las tecnologías informáticas y, en particular, a una tecnología de acceso a la memoria y un sistema informático.
Antecedentes
Un módulo de memoria dual en línea no volátil (non-volatile dual in-line memory module, NVDIMM) es una memoria de acceso aleatorio (randomaccessmemory, RAM) de un ordenador. El NVDIMM puede incluir una pluralidad de chips de memoria no volátil (non-volatilememory, NVM). El NVDIMM aún puede almacenar datos completos de la memoria cuando un sistema está completamente apagado. Se puede entender que el chip de NVM en el NVDIMM puede ser específicamente una memoria de acceso aleatorio (non-volatilerandomaccessmemory, NVRAM). La NVM en el NVDIMM puede incluir una memoria de cambio de fase (phasechangememory, PCM), una memoria resistiva de acceso aleatorio (resistiverandomaccessmemory, RRAM), una memoria magnética de acceso aleatorio (magneticrandomaccessmemory, MRAM), una MRAM de par de transferencia de giro (spin-transfer torque MRAM, STT-MRAM), o similares. El NVDIMM se comunica con un controlador de memoria mediante el protocolo NVDIMM-P. El protocolo NVDIMM-P es un protocolo de acceso al bus compatible con el protocolo de doble tasa de datos (double data rate, DDR).
Un experto en la técnica puede saber que, un procesador normalmente tiene un requisito de lectura para leer datos con diferente longitud. Por lo tanto, el procesador puede enviar peticiones de acceso para leer datos con diferente longitud al controlador de memoria. Por ejemplo, el procesador puede enviar, basándose en un requisito, una petición de acceso para leer datos de 64B (Byte) o una petición de acceso para leer datos de 128B al controlador de memoria. En la técnica anterior, el controlador de memoria normalmente envía un comando de lectura para leer datos de longitud fija en el NVDIMM. Por ejemplo, en un caso, el controlador de memoria puede enviar un comando de lectura para leer datos de 64B en el NVDIMM. En este caso, cuando el controlador de memoria recibe una petición de acceso que es enviada por el procesador y se utiliza para leer datos de 128B, el controlador de memoria necesita dividir la petición de acceso en dos comandos de lectura de datos de 64B, y leer, desde el NVDIMM usando el dos comandos de lectura, los datos de 128B requeridos por el procesador. Un forma de procesamiento de este tipo desperdicia el ancho de banda de un bus de comandos y afecta al rendimiento del sistema. En otro caso, el controlador de memoria envía solo un comando de lectura para leer datos de 128B en el NVDIMM. En este caso, cuando el controlador de memoria recibe una petición de acceso que envía el procesador y se utiliza para leer datos de 64B, el controlador de memoria necesita cambiar la petición de acceso para datos de 64B a un comando de lectura para datos de 128B y envía el comando de lectura para datos de 128B en el NVDIMM. Al parecer, esta forma desperdicia el ancho de banda de un bus de datos.
El documento EP2801912 A1 se refiere a un aparato de acceso a la memoria basado en mensajes y a un procedimiento de acceso a la misma.
Compendio
La tecnología de acceso a la memoria y el sistema informático proporcionados en esta aplicación pueden admitir comandos de lectura para obtener datos con diferente longitud sin desperdiciar el ancho de banda del bus, para mejorar el rendimiento del sistema. La presente invención es como se define en las reivindicaciones independientes adjuntas. Otras implementaciones se divulgan a partir de las reivindicaciones dependientes adjuntas, la descripción y las figuras. Según un primer aspecto, esta aplicación proporciona un sistema informático. El sistema informático incluye un controlador de memoria, un controlador de medios y una memoria no volátil NVM conectada al controlador de medios. La NVM está configurada para almacenar datos. El controlador de memoria está conectado al controlador de medios. Después de que el controlador de memoria envía un primer comando de lectura al controlador de medios, el controlador de medios puede leer los primeros datos desde la NVM basándose en una primera dirección en el primer comando de lectura. El primer comando de lectura transporta un primer ID, la primera dirección y una primera longitud, el primer ID es un identificador del primer comando de lectura y la primera longitud se utiliza para indicar un tamaño de los primeros datos que se leerán por el primer comando de lectura. El controlador de memoria envía al menos dos comandos de envío al controlador de medios, donde los al menos dos comandos de envío se utilizan para obtener al menos dos partes de datos de una tercera longitud, y la tercera longitud es menor que la primera longitud. El controlador de medios, en respuesta a los al menos dos comandos de envío, devuelve al menos dos subbloques de datos de la tercera longitud y los metadatos de los al menos dos subbloques de datos al controlador de memoria. Los metadatos incluyen el primer ID y un identificador de ubicación, y el identificador de ubicación se utiliza para indicar un desplazamiento de un subbloque de datos correspondiente en los primeros datos. El controlador de memoria combina los al menos dos subbloques de datos en los primeros datos basándose en identificadores de ubicación en los metadatos de los al menos dos subbloques de datos.
Al recibir una petición de acceso para obtener datos relativamente grandes, el sistema informático proporcionado en estaaplicación puede admitir una petición de acceso del sistema sin añadir un comando de lectura, para reducir el desperdicio de ancho de banda del bus y mejorar el rendimiento del sistema.
En una aplicación real, el identificador de ubicación es al menos un bit. El controlador de memoria se comunica con el controlador de medios cumpliendo con el protocolo NVDIMM-P.
En referencia al primer aspecto, en una primera implementación posible, el controlador de memoria está configurado además para enviar un segundo comando de lectura al controlador de medios, donde el segundo comando de lectura transporta un segundo ID, una segunda dirección y una segunda longitud, y la segunda longitud se utiliza para indicar el tamaño de los segundos datos que se leerán por el segundo comando de lectura. El controlador de medios está configurado además para obtener los segundos datos desde la NVM basándose en la segunda dirección. El controlador de memoria está configurado además para enviar un segundo comando de envío al controlador de medios, donde el segundo comando de envío se utiliza para obtener un bloque de datos de la tercera longitud, y la segunda longitud es igual a la tercera longitud. El controlador de medios está configurado además para que, en respuesta al segundo comando de envío, devuelva los segundos datos y los metadatos de los segundos datos al controlador de memoria, donde los metadatos de los segundos datos transportan el segundo ID.
El sistema informático proporcionado en esta aplicación puede admitir un requisito de lectura para leer datos con diferente longitud sin aumentar la cantidad de comandos de lectura y sin desperdiciar el ancho de banda del bus, mejorando así el rendimiento del sistema.
En referencia al primer aspecto o la primera implementación posible del primer aspecto, en una segunda implementación posible, el controlador de medios está configurado además para:dividir los primeros datos leídos desde la NVM en los al menos dos subbloques de datos para almacenarlos temporalmente, y registrar los metadatos de los al menos dos subbloques de datos.
En referencia a la primera o la segunda implementación posible del primer aspecto, en una tercera implementación posible, los metadatos de cada subbloque de datos incluyen además un identificador de transmisión, y el identificador de transmisión se utiliza para indicar si es el subbloque de datos es un último subbloque de datos a transmitir de los primeros datos. El sistema informático incluye además un búfer, y el búfer está configurado para almacenar temporalmente al menos dos subbloques de datos de los primeros datos leídos desde la NVM y los segundos datos. El controlador de medios está configurado además para:cuando los segundos datos están ubicados después de un primer subbloque de datos de los primeros datos en el búfer y ubicados antes de un segundo subbloque de datos de los primeros datos en el búfer, enviar los segundos datos al controlador de memoria antes del primer subbloque de datos. Un identificador de transmisión del primer subbloque de datos indica que el primer subbloque de datos no es el último subbloque de datos a transmitir de los primeros datos, y un identificador de transmisión del segundo subbloque de datos indica que el segundo subbloque de datos es el último subbloque de datos a transmitir de los primeros datos.
Según el sistema informático proporcionado en esta aplicación, puesto que los metadatos de un subbloque de datos devuelto por el controlador de medios al controlador de memoria transporta un identificador de transmisión, en un proceso de devolución de datos al controlador de memoria mediante el controlador de medios, se puede ajustar una secuencia de envío para enviar el subbloque de datos al controlador de memoria basándose en el identificador de transmisión. Esto no solo puede procesar comandos de lectura para leer datos con diferente longitud, sino que también puede reducir el retardo de espera en la recepción de datos mediante el controlador de memoria, mejorando así aún más la eficacia de procesamiento del sistema informático.
En referencia a uno cualquiera del primer aspecto o de la primera a la tercera implementaciones posibles del primer aspecto, en una cuarta implementación posible, el sistema informático incluye además un procesador. El procesador está configurado para enviar una primera petición de acceso al controlador de memoria. La primera petición de acceso incluye el primer ID, la primera dirección y la primera longitud. El controlador de memoria está configurado además para enviar el primer comando de lectura al controlador de medios basándose en la primera petición de acceso. En el sistema informático según la posible implementación, incluso si se recibe una petición de acceso que es enviada por el procesador y utilizada para leer datos relativamente grandes, la petición de acceso enviada por el procesador no se cambia a un comando de lectura para una pluralidad de partes de datos pequeños. Por lo tanto, en comparación con la técnica anterior, se puede reducir una cantidad de comandos de lectura y se puede ahorrar ancho de banda de bus, mejorando así el rendimiento del sistema informático.
Según un segundo aspecto, esta aplicación proporciona un almacenamiento. La memoria incluye una memoria no volátil NVM y un controlador de medios conectado a la NVM. La NVM está configurada para almacenar datos. El controlador de medios está configurado para: recibir un primer comando de lectura enviado por un controlador de memoria en un sistema informático y leer un primer dato desde la NVM basándose en una primera dirección en el primer comando de lectura. El primer comando de lectura transporta un primer ID, la primera dirección y una primera longitud, el primer ID es un identificador del primer comando de lectura y la primera longitud se utiliza para indicar un tamaño de los primeros datos que se leerán por el primer comando de lectura. Después de recibir al menos dos comandos de envío enviados por el controlador de memoria, el controlador de medios, en respuesta a los al menos
dos comandos de envío, devuelve al menos dos subbloques de datos de una tercera longitud y los metadatos de los al menos dos subbloques de datos al controlador de memoria. Los al menos dos comandos de envío se utilizan para obtener datos de la tercera longitud, y la tercera longitud es menor que la primera longitud. Los metadatos de cada subbloque de datos incluyen el primer ID y un identificador de ubicación. El identificador de ubicación se utiliza para indicar un desplazamiento de un subbloque de datos correspondiente en los primeros datos, de modo que los al menos dos subbloques de datos se pueden combinar en los primeros datos basándose en identificadores de ubicación en los al menos dos subbloques de datos.
En referencia al segundo aspecto, en una primera implementación posible, el controlador de medios está configurado además para:recibir un segundo comando de lectura enviado por el controlador de memoria, y obtener segundos datos desde la NVM basándose en una segunda dirección en el segundo comando de lectura. El segundo comando de lectura transporta un segundo ID, la segunda dirección y una segunda longitud, y la segunda longitud se utiliza para indicar un tamaño de los segundos datos que se leerán por el segundo comando de lectura. Después de recibir un segundo comando de envío enviado por el controlador de memoria, el controlador de medios, en respuesta al segundo comando de envío, devuelve los segundos datos y los metadatos de los segundos datos al controlador de memoria. El segundo comando de envío se utiliza para obtener un bloque de datos de la tercera longitud, donde la segunda longitud es igual a la tercera longitud, y los metadatos de los segundos datos transportan el segundo ID.
En referencia al segundo aspecto o la primera implementación posible del segundo aspecto, la memoria incluye además un búfer, y el búfer está configurado para almacenar temporalmente los al menos dos subbloques de datos de los primeros datos que son leídos por el controlador de medios desde la NVM. El controlador de medios está configurado además para registrar los metadatos de los al menos dos subbloques de datos.
En referencia a la primera o la segunda implementación posible del segundo aspecto, en una tercera implementación posible, los metadatos de cada subbloque de datos incluyen además un identificador de transmisión, y el identificador de transmisión se utiliza para indicar si el subbloque de datos es un último subbloque de datos a transmitir de los primeros datos. El búfer se configura además para almacenar temporalmente los segundos datos. El controlador de medios está configurado además para: cuando los segundos datos están ubicados después de un primer subbloque de datos de los primeros datos en el búfer y ubicados antes de un segundo subbloque de datos de los primeros datos en el búfer, enviar los segundos datos al controlador de memoria antes del primer subbloque de datos. Un identificador de transmisión del primer subbloque de datos indica que el primer subbloque de datos no es el último subbloque de datos a transmitir de los primeros datos, y un identificador de transmisión del segundo subbloque de datos indica que el segundo subbloque de datos es el último subbloque de datos a transmitir de los primeros datos.
Según un tercer aspecto, esta aplicación proporciona un procedimiento de acceso a la memoria, y el procedimiento se aplica al sistema informático proporcionado en el primer aspecto o cualquier posible implementación del primer aspecto, para implementar funciones del sistema informático proporcionado en el primer aspecto o cualquier posible implementación del primer aspecto.
Según un cuarto aspecto, esta aplicación proporciona otro procedimiento de acceso a la memoria. El procedimiento se realiza mediante el controlador de medios en el sistema informático proporcionado en el primer aspecto o cualquier posibleimplementación del primer aspecto, para implementar funciones del controlador de medios en el sistema informático proporcionado en el primer aspecto o cualquier posible implementación del primer aspecto.
Según un quinto aspecto, esta aplicación proporciona otro procedimiento de acceso a la memoria. El procedimiento se realiza mediante el controlador de memoria en el sistema informático proporcionado en el primer aspecto o cualquier posible implementación del primer aspecto, para implementar funciones del controlador de memoria en el sistema informático proporcionado en el primer aspecto o cualquier posible implementación del primer aspecto.
Según un sexto aspecto, esta aplicación proporciona un controlador de memoria. El controlador de memoria incluye una interfaz de comunicaciones y un circuito de control conectado a la interfaz de comunicaciones. La interfaz de comunicaciones está configurada para enviar un primer comando de lectura a un controlador de medios en un sistema informático, donde el primer comando de lectura transporta un primer ID, una primera dirección y una primera longitud, el primer ID es un identificador del primer comando de lectura, y la primera longitud se utiliza para indicar un tamaño de los primeros datos que se leerán por el primer comando de lectura. La interfaz de comunicaciones está configurada además para: enviar al menos dos comandos de envío al controlador de medios y recibir al menos dos subbloques de datos de una tercera longitud y los metadatos de los al menos dos subbloques de datos. Los al menos dos subbloques de datos y los metadatos son enviados por el controlador de medios en respuesta a los al menos dos comandos de envío. Los al menos dos comandos de envío se utilizan para obtener al menos dos partes de datos de la tercera longitud, y la tercera longitud es menor que la primera longitud. El controlador de medios obtiene los al menos dos subbloques de datos a partir de una memoria NVM no volátil en el sistema informático basándose en la primera dirección. Los metadatos de cada subbloque de datos incluyen el primer ID y un identificador de ubicación, y el identificador de ubicación se utiliza para indicar una ubicación de un subbloque de datos correspondiente en los primeros datos. El circuito de control está configurado para combinar los
al menos dos subbloques de datos en los primeros datos basándose en identificadores de ubicación en los metadatos de los al menos dos subbloques de datos.
En referencia al sexto aspecto, en una primera posible implementación del sexto aspecto, la interfaz de comunicaciones está configurada además para enviar un segundo comando de lectura al controlador de medios. El segundo comando de lectura transporta un segundo ID, una segunda dirección y una segunda longitud, y la segunda longitud se utiliza para indicar un tamaño de los segundos datos que se leerán por el segundo comando de lectura. A continuación, la interfaz de comunicaciones envía un segundo comando de envío al controlador de medios y recibe los segundos datos y los metadatos de los segundos datos que son devueltos por el controlador de medios basándose en el segundo comando de envío. El segundo comando de envío se utiliza para obtener un bloque de datos de la tercera longitud, y la segunda longitud es igual a la tercera longitud. El controlador de medios obtiene los segundos datos desde la NVM basándose en la segunda dirección, y los metadatos de los segundos datos transportan el segundo ID.
Según un séptimo aspecto, esta aplicación proporciona además un producto de programa de ordenador, que incluye código de programa, y una instrucción incluida en el código de programa es ejecutada por un ordenador, para implementar el procedimiento según el tercer aspecto, el cuarto aspecto o el quinto aspecto.
Según un octavo aspecto, esta aplicación proporciona además un medio de almacenamiento legible por ordenador. El medio de almacenamiento legible por ordenador está configurado para almacenar código de programa, y un ordenador ejecuta una instrucción incluida en el código de programa para implementar el procedimiento según el tercer aspecto, el cuarto aspecto o el quinto aspecto.
Breve descripción de los dibujos
Para describir más claramente las soluciones técnicas de las realizaciones de la presente invención, los párrafos siguientes describen brevemente los dibujos adjuntos necesarios para describir las realizaciones. Al parecer, los dibujos adjuntos de la siguiente descripción muestran meramente algunas realizaciones de la presente invención. La FIG. 1 es un diagrama arquitectónico esquemático de un sistema informático según una realización de la presente invención;
la FIG. 2 es un diagrama de señalización de un procedimiento de acceso a la memoria según una realización de la presente invención;
la FIG. 3 es un diagrama esquemático de una estructura de datos de un comando de lectura según una realización de la presente invención;
la FIG. 4 es un diagrama estructural esquemático de datos devueltos por un controlador de medios a un controlador de memoria según una realización de la presente invención;
la FIG. 5 es un diagrama esquemático de una estructura de datos de los metadatos en datos devueltos por un controlador de medios a un controlador de memoria según una realización de la presente invención;
la FIG. 6 es un diagrama de señalización de otro procedimiento de acceso a la memoria según una realización de la presente invención;
la FIG. 7 es un diagrama de flujo de un procedimiento de planificación según una realización de la presente invención;
la FIG. 8 es un diagrama esquemático de un procedimiento de planificación según una realización de la presente invención;
la FIG. 9 es un diagrama esquemático de otro procedimiento de planificación según una realización de la presente invención.
Descripción de las realizaciones
Para que un experto en la materia entienda mejor las soluciones técnicas en la presente invención, a continuación se describen claramente las soluciones técnicas de las realizaciones de la presente invención en referencia a los dibujos adjuntos de las realizaciones de la presente invención. Al parecer, las realizaciones descritas son meramente algunas pero no todas las realizaciones de la presente invención.
La FIG. 1 es un diagrama arquitectónico esquemático de un sistema informático según una realización de la presente invención. Como se muestra en la FIG. 1, un sistema informático 100 puede incluir al menos un procesador 102, un controlador de memoria 106 y un módulo de memoria dual en línea no volátil (non-volatile dual in-line memory module, NVDIMM) 108. Normalmente, el controlador de memoria 106 puede estar integrado en el procesador 102. Cabe destacar que, en el sistema informático proporcionado en esta realización de la presente invención, además de los dispositivos que se muestran en la FIG. 1, el sistema informático 100 puede incluir una
interfaz de comunicaciones y otro dispositivo, como un disco, que se utiliza como almacenamiento externo. Esto no está limitado en la presente memoria.
El procesador (processor) 102 es un núcleo operativo y una unidad de control (control unit) del sistema informático 100. El procesador 102 puede incluir una pluralidad de núcleos (core) 104 de procesador. El procesador 102 puede ser un circuito integrado a hiperescala. Un sistema operativo y otro programa de software están instalados en el procesador 102, de modo que el procesador 102 puede acceder al NVDIMM 108, a un búfer y a un disco. Puede entenderse que, en esta realización de la presente invención, un núcleo 104 en el procesador 102 puede ser, por ejemplo, una unidad central de procesamiento (central processingunit, CPU), o puede ser otro circuito integrado específico de la aplicación (application-specificintegratedcircuit, ASIC).
El controlador de memoria (memorycontroller) 106 es un controlador de circuito de bus que está en el sistema informático 100 y que controla el NVDIMM 108 y está configurado para gestionar y planificar la transmisión de datos desde el NVDIMM 108 al núcleo 104. Los datos se pueden intercambiar entre el NVDIMM 108 y el núcleo 104 a través del controlador de memoria 106. El controlador de memoria 106 puede ser un chip separado y está conectado al núcleo 104 a través de un bus del sistema. Una persona experta en la técnica puede saber que el controlador de memoria 106 puede estar integrado de forma alternativa en el procesador 102 (como se muestra en la FIG. 1), o integrado en un puente norte. Una ubicación específica del controlador de memoria 106 no está limitada en esta realización de la presente invención. En una aplicación real, el controlador de memoria 106 puede incluir una interfaz 1062 de comunicaciones y un circuito 1064 de control, y el controlador de memoria 106 puede comunicarse con el procesador 102 y el NVDIMM 108 a través de la interfaz 1062 de comunicaciones. El controlador de memoria 106 puede controlar la lógica necesaria utilizando el circuito 1064 de control, para escribir datos en el NVDIMM 108 o leer datos del NVDIMM 108.
El NVDIMM 108 es una memoria de acceso aleatorio RAM del sistema informático 100 y se puede utilizar como memoria o almacenamiento en el sistema informático 100. El NVDIMM 108 puede incluir un controlador de medios 110, al menos una memoria no volátil NVM 112 y un búfer 114. El controlador de medios 110 puede incluir un circuito lógico que tiene capacidad de control. La nVm 112 está configurado para almacenar diverso software que se ejecuta actualmente en un sistema operativo, datos de entrada y salida, información que se intercambia con un almacenamiento externo y similares. La NVM 112 puede existir en forma de chip. Como se ha mencionado anteriormente, la NVM 112 puede incluir una memoria no volátil que se puede utilizar como memoria, como una memoria de cambio de fase (phasechangememory, PCM), una memoria resistiva de acceso aleatorio (resistiverandomaccessmemory, RRAM), una memoria magnética de acceso aleatorio (magneticrandomaccessmemory, MRAM) o una MRAM de par de transferencia de giro (spin-transfer torque MRAM, STT-MRAM).
El controlador de memoria 106 está conectado al NVDIMM 108 a través de un bus 105. El controlador de memoria 106 se comunica con el NVDIMM 108 cumpliendo con el protocolo NVDIMM-P. El protocolo NVDIMM-P es un protocolo de acceso al bus compatible con el protocolo de doble tasa de datos (double data rate, DDR). El controlador de medios 110 puede acceder, basándose en un comando de acceso del controlador de memoria 106, a datos almacenados en la NVM 112. Puede entenderse que el comando de acceso enviado por el controlador de memoria 106 puede ser un comando de lectura o un comando de escritura. El controlador de medios 110 puede leer datos desde la NVM 112 basándose en el comando de lectura enviado por el controlador de memoria 106. De forma alternativa, el controlador de medios 110 puede escribir datos en la NVM 112 basándose en el comando de escritura enviado por el controlador de memoria 106.
El bus 105 en esta realización de la presente invención puede incluir un bus de datos, un bus de comandos/direcciones y un bus de retroalimentación de datos de lectura listos (ready). El bus de datos está configurado para transmitir datos y metadatos. El bus de comandos/direcciones está configurado para transmitir un comando de acceso, tal como un comando de lectura o un comando de escritura. El bus de retroalimentación de datos de lectura preparados está configurado para enviar una señal de listo que se utiliza para notificar al controlador de memoria 106 que los datos a leer están listos en un NVDIMM. En una aplicación real, cuando el controlador de memoria 106 lee datos del NVDIMM 108 a través del bus 105, el controlador de memoria 106 envía primero el comando de lectura basándose en el bus de comandos/direcciones. Después de que el controlador de medios 110 en el NVDIMM 108 obtiene los datos a leer desde la NVM 112 basándose en una dirección de destino en el comando de lectura, el NVDIMM 108 envía, al controlador de memoria 106 a través del bus de retroalimentación de datos de lectura preparados (ready), una señal de listo que se utiliza para notificar que los datos están listos en el NVDIMM. Después de recibir la señal de listo enviada por el NVDIMM 108, el controlador de memoria 106 envía, en el NVDIMM 108 a través del bus de comandos/direcciones, un comando de envío que se utiliza para obtener datos. Después de un retardo fijo en el envío del comando de envío por el controlador de memoria 106, el controlador de medios 110 devuelve los datos preparados en un búfer del NVDIMM 108 al controlador de memoria 106 a través del bus de datos. Puesto que el protocolo NVDIMM-P admite la ejecución desordenada de un comando de lectura de NVM, en una aplicación real, al enviar el comando de envío, el controlador de memoria 106 no puede determinar un comando de lectura específico al cual se han devuelto los datos mediante el controlador de medios 110 en respuesta.
El búfer 114 está configurado para almacenar temporalmente datos leídos por el controlador de medios 110 desde la NVM 112. El búfer 114 puede incluir una cola de búfer. Normalmente, la cola del búfer almacena los datos en una secuencia de primero en entrar, primero en salir. El controlador de medios 110 puede planificar datos en el búfer 114 basándose en una secuencia de datos en el búfer 114. Por ejemplo, el controlador de medios 110 puede enviar datos almacenados en el búfer al controlador de memoria 106 o escribir los datos en la NVM 112 basándose en una secuencia de datos en la cola del búfer. En esta realización de la presente invención, el controlador de medios 110 puede no planificar datos en una secuencia de primero en entrar, primero en salir, sino que planifica los datos en la cola del búfer basándose en una prioridad de los datos o una necesidad de la aplicación. Puede entenderse que, en una aplicación real, el NVDIMM 108 puede incluir además un búfer de escritura (no se muestra en la FIG. 1) que está configurado para almacenar temporalmente datos que se escribirán en la NVM 112.
Una persona experta en la técnica puede saber que, puesto que el protocolo de bus NVDIMM-P es compatible con el protocolo de bus DDR estándar, se puede reutilizar un bus de datos en el protocolo de bus NVDIMM-P. De esta manera, tanto un comando de escritura enviado por el controlador de memoria como el comando de envío que se utiliza para obtener datos reutilizan un mismo bus de datos. Por lo tanto, para impedir un conflicto de comandos en un bus, al enviar un comando de envío al controlador de medios, el controlador de memoria necesita determinar un tiempo de transmisión de los datos devueltos basándose en el comando de envío, para determinar un tiempo de envío de un siguiente comando de modo que cada comando de acceso se pueda planificar con precisión. Sin embargo, el protocolo NVDIMM-P admite la ejecución desordenada de un comando de lectura de NVM. Por lo tanto, en un proceso de procesamiento de comandos de lectura para acceder a datos con diferente longitud, al enviar un comando de envío, el controlador de memoria no puede saber un comando de lectura específico al que pertenecen los datos devueltos por el controlador de medios 110 y, por lo tanto, no puede saber una longitud de los datos recibidos por el controlador de memoria. Además, al enviar un comando de envío, el controlador de memoria no puede determinar un tiempo de transmisión de los datos devueltos. Basándose en las razones anteriores, como se ha mencionado anteriormente, en la técnica anterior, el controlador de memoria 106 normalmente envía un comando de lectura de longitud fija al NVDIMM 108. Por ejemplo, el controlador de memoria 106 envía, al NVDIMM 108, un comando de lectura que se utiliza para leer datos de 64B o un comando de lectura que se utiliza para leer datos de 128B. Un procesador tiene el requisito de leer datos con diferente longitud. Por lo tanto, una manera en la que el controlador de memoria 106 envía un comando de lectura de longitud fija al NVDIMM 108 puede provocar un aumento en la cantidad de comandos de lectura o un desperdicio de ancho de banda del bus 105, afectando a la mejora del rendimiento del sistema. Asimismo, la nivelación del desgaste normalmente debe realizarse dentro de un NVDIMM basándose en un comando de acceso recibido. Una mayor cantidad de comandos puede incrementar el trabajo de nivelación del desgaste y, por consiguiente, un procedimiento de acceso a la memoria en la técnica anterior no es favorable a mejorar el rendimiento del sistema. Por lo tanto, para ahorrar ancho de banda y mejorar el rendimiento del sistema, es necesario proporcionar un sistema informático que pueda admitir la lectura de datos con una longitud diferente a la del NVDIMM 108 mediante el controlador de memoria 106.
A continuación se describe, en detalle en referencia a la FIG. 1, cómo el sistema informático 100 lee datos con diferente longitud del NVDIMM 108 basándose en diferentes requisitos. En otras palabras, el sistema informático 100 proporcionado en las realizaciones de la presente invención puede admitir un comando de lectura de múltiples longitudes (multi-length). Para distinguir el comando de lectura en las realizaciones del comando de lectura en la técnica anterior, en esta realización de la presente invención, el comando de lectura enviado por el controlador de memoria 106 al controlador de medios 110 se denomina comando XREAD. La FIG. 2 es un diagrama de señalización de un procedimiento de lectura de datos según una realización de la presente invención. Como se muestra en la FIG. 2, el procedimiento puede incluir las siguientes etapas.
Etapa 202: un procesador 102 envía una primera petición de acceso a un controlador de memoria 106. La primera petición de acceso transporta una primera dirección lógica y una primera longitud, la primera longitud se utiliza para indicar un tamaño de los primeros datos que se leerán por el procesador 102, y la primera dirección lógica se utiliza para indicar una dirección de los primeros datos a leer.
Etapa 204: el controlador de memoria 106 envía un primer comando de lectura a un controlador de medios 110 basándose en la primera petición de acceso, donde el primer comando de lectura transporta un primer ID, una primera dirección y la primera longitud, y la primera longitud se utiliza para indicar el tamaño de los primeros datos que se leerán por el primer comando de lectura. La primera dirección se utiliza para indicar una dirección física de los primeros datos en una NVM 112.
En esta realización de la presente invención, se puede mostrar un formato del primer comando de lectura en la FIG.
3. La FIG. 3 es un diagrama esquemático de una estructura de datos de un comando XREAD según una realización de la presente invención. Un comando XREAD se transmite en dos períodos. Una señal de selección de chip (chip select, CS) en un primer período es baja (L), un segundo período va detrás del primer período y una señal de selección de chip en el segundo período es alta (H). Cada período incluye además un flanco ascendente de una señal de reloj y un flanco descendente de la señal de reloj. Como se muestra en la FIG. 3, según el protocolo NVDIMM-P, se puede utilizar tanto un flanco ascendente como un flanco descendente de una señal de reloj de bus de comandos/direcciones para transmitir información de datos. Por ejemplo, como se muestra en la FIG. 3, para la información transmitida en el flanco ascendente de la señal de reloj, consulte la parte "CLK t ascendente de la señal de comando/direcciones" en la FIG. 3. Para la información transmitida en el flanco descendente de la señal de reloj,
consulte la parte "CLK t descendente de la señal de comando/direcciones" en la FIG. 3. Específicamente, el comando x ReAD proporcionado en esta realización de la presente invención puede incluir los campos siguientes. Un bit "CS" es un campo de señal de selección de chip y se utiliza para indicar si se selecciona (selected) un NVDIMM. Se utiliza un campo Longitud [2:0] para indicar la longitud de los datos que se leerán por el comando XREAD. Los campos ADDR [11:5] y ADDR [4:1] se utilizan para indicar una dirección de los datos que se leerán por el comando XReAd . Los campos RID [9:7] y RID [6:0] se utilizan para indicar un ID del comando x ReAD. Un campo "RFU" es un campo reservado sin utilizar Un experto en la técnica puede saber que, cada campo en el comando XREAD que se muestra en la FIG. 3 puede transmitirse a través del bus de comandos/direcciones del bus 105 que se muestra en la FIG. 1. El bus 105 cumple con el protocolo NVDIMM-P.
En esta realización de la presente invención, el primer comando de lectura puede incluir el primer ID del primer comando de lectura, y el primer ID es un identificador del primer comando de lectura. Por ejemplo, el primer ID puede usar los campos RID [9:7] y RID [6:0] de la FIG. 3 para la identificación. Asimismo, el primer comando de lectura puede incluir además una dirección de datos a leer. Para facilitar la descripción en esta realización de la presente invención, la dirección de los datos a leer transportada en el primer comando de lectura se denomina primera dirección. Por ejemplo, la primera dirección puede utilizar los campos ADDR [11:5] y ADDR [4:1] de la FIG. 3 para la identificación. Cabe destacar que la primera dirección es una dirección física de los primeros datos en la NVM 112.
Para que el sistema informático proporcionado en esta realización de la presente invención admita un comando de lectura de longitud múltiple (multi-length) de un procesador, en el primer comando de lectura enviado por el controlador de memoria 106 al controlador de medios 110, se pueden necesitar algunos campos más para indicar una longitud de los primeros datos que se leerán por el primer comando de lectura. Por ejemplo, el campo "Longitud [2:0]" de la FIG. 3 se puede utilizar para indicar la longitud de los primeros datos. De esta manera, el campo "Longitud [2:0]" se puede utilizar para indicar una cantidad de bloques de datos de 64B (bytes) incluidos en los datos que se leerán por el controlador de memoria 106. Por ejemplo, como se muestra en la FIG. 3, el campo "Longitud [2:0]" puede tener tres bits, y el campo "Longitud [2:0]" puede indicarse utilizando 000 a 111. En consecuencia, el campo "Longitud [2:0]" se puede utilizar para indicar que una longitud de los datos que se leerán por el controlador de memoria puede ser de 64B a 512B. En otras palabras, basándose en un formato de datos del comando XREAD que se muestra en la FIG. 3, el sistema informático 100 puede admitir una operación de lectura de lectura de datos 512B una vez.
Cabe destacar que, el campo "Longitud [2:0]" de la FIG. 3 es meramente un ejemplo y no pretende limitar la longitud de los datos a leer. En una aplicación real, se pueden utilizar campos más reservados para representar la longitud de los datos a leer. Por ejemplo, en una aplicación real, el campo "RFU" que se muestra en la FIG. 3 se puede utilizar además para indicar la longitud de los datos a leer. En este caso, un campo que se utiliza para indicar la longitud de los datos a leer puede incluir cuatro bits y el campo puede indicar valores desde 0000 a 1111. Los datos que puede leer el sistema informático 100 pueden ser 64B x 16 = 1024B. Asimismo, en esta realización de la presente invención, se utiliza una granularidad de 64B como ejemplo para un tamaño de datos a leer indicado mediante el campo "Longitud [2:0]". De esta manera, el tamaño de los datos a leer es un múltiplo de 64B. En una aplicación real, una granularidad de 32B, 128B u otro tamaño se puede utilizar de forma alternativa para el tamaño de los datos a leer indicado mediante el campo "Longitud [2:0]", y no se impone ninguna limitación en esta realización de la presente invención.
Etapa 206: el controlador de medios 110 lee los primeros datos desde la NVM 112 basándose en la primera dirección. Específicamente, el controlador de medios 110 lee los primeros datos desde la NVM 112 basándose en la primera dirección y la primera longitud. Después de leer los primeros datos, el controlador de medios 110 puede almacenar temporalmente los primeros datos en un búfer (buffer). En esta realización de la presente invención, después de leer los primeros datos, el controlador de medios 110 puede almacenar los primeros datos de forma bloqueada usando una granularidad de 64B como unidad. Por ejemplo, si la primera longitud es 128B, los primeros datos pueden dividirse en dos bloques de datos de 64B y los dos bloques de datos pueden almacenarse por separado en un búfer 114 del NVDIMm 108. En un proceso de almacenamiento de cada bloque de datos, en cada bloque de datos se puede marcar un ID de un comando de lectura al que pertenece el bloque de datos y una ubicación del bloque de datos en los datos que se leerán por el comando de lectura. Por ejemplo, si la primera longitud de los primeros datos es 128B, el controlador de medios 110 puede dividir los primeros datos en un primer subbloque de datos y un segundo subbloque de datos para el almacenamiento y registrar, en la información de metadatos del primer subbloque de datos, un primer ID y una ubicación del primer subbloque de datos en los primeros datos. La ubicación del primer subbloque de datos en los primeros datos significa un desplazamiento del primer subbloque de datos en los primeros datos. Por ejemplo, si el primer subbloque de datos son los 64B más significativos en los primeros datos, y el segundo subbloque de datos son los 64B menos significativos en los primeros datos, la información de ubicación del primer subbloque de datos puede registrarse como 1 en los metadatos del primer subbloque de datos, y la información de ubicación del segundo subbloque de datos puede registrarse como 0 en los metadatos del segundo subbloque de datos.
Puede entenderse que "0" y "1" son meramente un ejemplo de un identificador de ubicación en los metadatos de un bloque de datos. Puede entenderse que un bit de indicación de ubicación en los metadatos del bloque de datos puede no ser meramente un bit, y se puede utilizar un campo de una pluralidad de bits para indicar una ubicación de
un bloque de datos en los datos a leer. Por ejemplo, si se utiliza un campo de tres bits para indicar una ubicación de un bloque de datos, se puede utilizar 000 a 111 para indicar respectivamente ocho ubicaciones diferentes de bloques de datos en los datos a leer.
Etapa 208: el controlador de medios 110 envía una señal de listo al controlador de memoria 106. La señal de listo se utiliza para notificar al controlador de memoria 106 que los datos a leer están almacenados en el búfer del NVDIMM 108. Una persona experta en la técnica puede saber que, puesto que un retardo de acceso de una NVM no es fijo, el NVDIMM no puede devolver, en forma de una memoria dinámica de acceso aleatorio DRAM, datos que se leerán por un comando de lectura en el controlador de memoria dentro de un tiempo fijo después de recibir el comando de lectura. Por lo tanto, una señal de listo utilizada para una retroalimentación de datos en un proceso de lectura de datos se define en el protocolo NVDIMM-P. Esta también es una diferencia entre el protocolo NVDIMM-P y el protocolo de bus DDR. La señal de listo se utiliza para notificar al controlador de memoria que el NVDIMM ha preparado los datos que se leerán por el controlador de memoria. Después de recibir la señal de listo, el controlador de memoria puede obtener los datos preparados del búfer (buffer) del NVDIMM usando un comando de envío.
Etapa 210: el controlador de memoria 106 envía un comando de envío al controlador de medios 110. El comando de envío se utiliza para leer un bloque de datos de una tercera longitud almacenada temporalmente en el búfer del NVDIMM. Cabe destacar que, cuando los datos se almacenan en el búfer del NVDIMM, el controlador de medios envía la señal de listo al controlador de memoria 106. Puesto que el protocolo NVDIMM-P admite la ejecución desordenada de un comando de lectura de NVM, en este caso, el controlador de memoria 106 no puede saber un comando de lectura específico para el cual el NVDIMM prepara datos. Como se ha mencionado anteriormente, en el caso de procesar un comando de lectura utilizado para leer datos de múltiples longitudes, cuando se envía el comando de envío al controlador de medios 110, el controlador de memoria 106 no sabe el tamaño de los datos a obtener el controlador de memoria 106. y, por lo tanto, no puede determinar un tiempo de transmisión de los datos a devolver. En esta realización de la presente invención, para evitar el desorden de los comandos en un bus, incluso si la petición de acceso enviada por el procesador puede leer datos con diferente longitud, el controlador de memoria 106 envía el comando de envío de forma que obtenga datos de longitud fija (por ejemplo, la tercera longitud). De esta manera, incluso si diferentes peticiones de acceso tienen diferentes tamaños de datos a leer, puesto que la longitud de los datos obtenidos una vez es fija, se puede determinar un tiempo de transmisión de los datos devueltos por el controlador de medios 110. Por lo tanto, el controlador de memoria 106 puede enviar el comando de envío al controlador de medios 110 basándose en un tiempo de transmisión de datos fijo, para obtener los datos a leer del NVDIMM. Puede entenderse que la tercera longitud se puede establecer según una aplicación real. En una aplicación real, para ahorrar ancho de banda, la tercera longitud puede ser 64B.
Etapa 212: el controlador de medios 110 devuelve un bloque de datos de la tercera longitud y los metadatos correspondientes al controlador de memoria 106 basándose en el comando de envío. Una persona experta en la técnica puede saber que, cuando recibe un comando de envío, el controlador de medios 110 devuelve un bloque de datos de un tamaño igual al de la tercera longitud y los metadatos correspondientes. Los metadatos de datos son información que se utiliza para describir los datos. En una aplicación real, cuando se devuelven los datos al controlador de memoria 106 basándose en el comando de envío, el controlador de medios 110 normalmente devuelve el bloque de datos y los metadatos correspondientes juntos. Para facilitar la descripción, en esta realización de la presente invención, el bloque de datos de la tercera longitud y los metadatos correspondientes que son devueltos por el controlador de medios 110 pueden de forma alternativa denominarse colectivamente datos devueltos. Un formato de los datos devueltos por el controlador de medios 110 puede mostrarse en la FIG. 4. Como se muestra en la FIG. 4, los datos devueltos pueden incluir la siguiente información: datos 402, un ECC 404, un ID 406 y una ubicación 408. Los datos de campo 402 son un bloque de datos de la tercera longitud. Por ejemplo, los datos de campo 402 pueden ser un bloque de datos de 64B. Puede entenderse que la tercera longitud se puede establecer según una necesidad real. Por ejemplo, la tercera longitud se puede establecer en 64B o 128B, siempre y cuando la tercera longitud sea una longitud fija. El campo ECC 404 se utiliza para indicar información de corrección de errores del bloque de datos. En una aplicación real, el campo ECC 404 puede ocupar 12B. Asimismo, en una aplicación real, los datos devueltos pueden no incluir el campo ECC 404. El campo ID 406 se utiliza para indicar un comando de lectura al que pertenece el bloque de datos. Por ejemplo, usando el primer comando de lectura anterior como ejemplo, si los primeros datos que se leerán por el primer comando de lectura se dividen en un primer subbloque de datos y un segundo subbloque de datos, en metadatos de bloques de datos devueltos por el controlador de medios 110 basándose en los dos comandos de envío enviados por el controlador de memoria 106, un ID del primer subbloque de datos y un ID del segundo subbloque de datos pueden ser cada uno un ID del primer comando de lectura. La ubicación 408 se utiliza para indicar una ubicación de un subbloque de datos devueltos en los datos que se leerán por el comando de lectura indicado mediante el ID 406. Por ejemplo, cuando el controlador de medios 110 devuelve el primer subbloque de datos, la ubicación 408 puede ser "1", para indicar que el primer subbloque de datos devuelto son los 64B más significativos en los datos que se leerán por el primer comando de lectura.
En una aplicación real, el campo ECC 404, el campo ID 406 y la ubicación del campo 408 pueden incluirse en los metadatos del subbloque de datos devueltos. La FIG. 5 es un diagrama esquemático de una estructura de datos de metadatos de un bloque de datos devuelto basándose en un comando de envío según una realización de la presente invención. Como se muestra en la figura, M0 y M1 se utilizan para indicar señales transmitidas en dos cables de señal para transmitir metadatos. Un campo "RID" se utiliza para indicar un comando de lectura al que
pertenece el bloque de datos. En otras palabras, después de recibir un bloque de datos devuelto por el controlador de medios 110, el controlador de memoria 106 puede identificar, basándose en el campo "RID", un comando de lectura específico que lee el bloque de datos devuelto. Un campo "SB" se utiliza para indicar un desplazamiento del bloque de datos devuelto en los datos que se leerán por el comando de lectura indicado mediante el campo "RID".
En la estructura de datos que se muestra en la FIG. 5, que el RID ocupa 10 bits (bit) y el campo SB ocupa tres bits se utiliza como ejemplo para la descripción. La información de RID en los metadatos corresponde a los campos RID [9:7] y RID [6:0] en el comando XREAD que se muestra en la FIG. 3, y se utiliza para indicar un comando de lectura al que pertenece un subbloque de datos. Los tres bits ocupados por el campo SB corresponden a los tres bits de la "Longitud [2:0]" en el comando XREAD que se muestra en la FIG. 3. De esta manera, si Longitud [2:0] = 7 en el comando XREAD, indica que una longitud de datos que se tienen que leer es de ocho bloques de datos de 64B. En el bloque de datos devueltos, si SB [2:0] = 0, indica que el subbloque de datos devueltos es un primer subbloque de datos en los datos a leer. Si SB [2:0] = 7, indica que el subbloque de datos devueltos es un octavo subbloque de datos en los datos a leer. Puede entenderse que, en una aplicación real, una cantidad de bits ocupados por el ID de campo 406 y la ubicación de campo 408 pueden establecerse según una necesidad real. No se impone ninguna limitación en esta realización de la presente invención.
Una persona experta en la técnica puede saber que, cuando hay datos en el búfer 114 que se utiliza para almacenar temporalmente datos de lectura a devolver y eso está en el NVDIMM 108, el controlador de medios 110 envía una señal de listo al controlador de memoria 106. Después de recibir la señal de listo enviada por el controlador de medios 110, el controlador de memoria 106 envía un comando de envío al controlador de medios 110. Después de recibir el comando de envío, el controlador de medios 110 devuelve un bloque de datos de la tercera longitud para el comando de envío al controlador de memoria 106. Por lo tanto, se puede entender que, cuando los datos que se leerán por un comando de lectura son relativamente grandes, por ejemplo, mayores que la tercera longitud especificada, las etapas 208 a 212 deben realizarse al menos dos veces para leer completamente, desde un NVDIMM, los datos que se leerán por el comando de lectura. En esta realización de la presente invención, se utiliza como ejemplo que los primeros datos tienen una longitud mayor que la tercera longitud. El controlador de memoria necesita enviar al menos dos comandos de envío para obtener los primeros datos del NVDIMM. Por ejemplo, el controlador de memoria 106 envía al menos dos comandos de envío, y el controlador de medios responde por separado a los al menos dos comandos de envío, para enviar por separado al menos dos subbloques de datos de los primeros datos al controlador de memoria 106.
Etapa 214: el controlador de memoria 106 obtiene los primeros datos basándose en los al menos dos subbloques de datos recibidos. Específicamente, después de recibir los datos devueltos por el controlador de medios 110 basándose en el comando de envío, el controlador de memoria 106 puede determinar, basándose en los metadatos de un subbloque de datos devueltos, un comando de lectura al que pertenece el subbloque de datos. El hecho de que los primeros datos que se leerán por el primer comando de lectura tienen una longitud mayor que la tercera longitud se utiliza como ejemplo en esta realización de la presente invención. Después de recibir al menos dos subbloques de datos que incluyen el primer ID, el controlador de memoria 106 puede obtener por separado una ubicación de cada subbloque de datos en los primeros datos basándose en un campo SB en los metadatos de los al menos dos bloques de datos, de modo que el controlador de memoria 106 puede obtener, basándose en un desplazamiento de cada subbloque de datos en los primeros datos, los primeros datos según los al menos dos subbloques de datos que incluyen el primer ID. Etapa 216: el controlador de memoria 106 devuelve los primeros datos al procesador 102.
En la realización que se muestra en la FIG. 2, se describe cómo se realiza el acceso a la memoria en el sistema informático 100 utilizando un ejemplo de lectura de datos relativamente grandes. Puesto que el sistema informático puede admitir comandos de lectura para diferentes requisitos, a continuación se describe, utilizando otro caso como ejemplo, un proceso de lectura de datos pequeños mediante el sistema informático 100. La FIG. 6 es un diagrama de señalización de otro procedimiento de acceso a la memoria según una realización de la presente invención. Como se muestra en la FIG. 6, el procedimiento puede incluir las siguientes etapas.
Etapa 602: un procesador envía una segunda petición de acceso a un controlador de memoria 106. La segunda petición de acceso incluye una segunda longitud de segundos datos para leer, donde la segunda longitud es menor o igual que la tercera longitud. En esta realización de la presente invención, el hecho de que los segundos datos sean de 64B se utiliza como ejemplo para la descripción.
Etapa 604: el controlador de memoria 106 envía un segundo comando de lectura al controlador de medios 110. El segundo comando de lectura incluye un segundo ID, una segunda dirección y la segunda longitud. Un formato de datos del segundo comando de lectura también se puede mostrar en la FIG. 3. La segunda longitud se utiliza para indicar el tamaño de los segundos datos que se leerán por el segundo comando de lectura. Etapa 606: El controlador de medios 110 lee los segundos datos de una nVm 112. De forma similar a la etapa 206, el controlador de medios 110 puede leer los segundos datos desde la NVM 112 basándose en la segunda dirección y la segunda longitud, y almacenar temporalmente los segundos datos leídos en un búfer de un NVDIMM. En un proceso de almacenamiento de los segundos datos, es necesario almacenar tanto los segundos datos como los metadatos de los segundos datos. Los metadatos de los segundos datos pueden incluir un ID del segundo comando de lectura y
una ubicación de los segundos datos. Puesto que los segundos datos son relativamente pequeños, el controlador de medios 110 no necesita almacenar temporalmente los segundos datos de forma bloqueada.
Etapa 608: el controlador de medios 110 envía una señal de listo al controlador de memoria 106. Etapa 610: El controlador de memoria 106 envía un comando de envío al controlador de medios 110. Etapa 612: El controlador de medios 110 devuelve los segundos datos y los metadatos de los segundos datos al controlador de memoria 106. Un formato de los datos devueltos por el controlador de medios 110 puede mostrarse en la FIG. 4. Los metadatos de los segundos datos se pueden mostrar en la FIG. 5. Puesto que el tamaño de los segundos datos es de 64B, después de que el controlador de memoria obtiene los segundos datos devueltos por el controlador de medios 110, en la etapa 614, el controlador de memoria 106 puede devolver directamente los segundos datos al procesador 102.
Cabe destacar que, en esta realización de la presente invención, puesto que la longitud de los segundos datos es igual a la longitud de los datos que son leídos con el comando de envío, al devolver los segundos datos, el controlador de medios 110 puede establecer un identificador de ubicación en los metadatos del segundo dato en 000 para indicar que los segundos datos solo tienen un bloque de datos. En otro caso, al recibir los segundos datos devueltos por el controlador de medios 110, el controlador de memoria 106 puede aprender, basándose en el segundo ID en los metadatos de los segundos datos, que los datos pertenecen a los datos que se leerán por el segundo comando de lectura, y además aprenderá que la longitud del segundo comando de lectura es igual a la tercera longitud. De esta manera, el controlador de memoria 106 puede saber que los segundos datos tienen solo un bloque de datos, de modo que el controlador de memoria 106 puede considerar el identificador de ubicación en los metadatos de los segundos datos como un identificador sin sentido.
La realización que se muestra en la FIG. 6 es similar a la realización que se muestra en la FIG. 2. Por lo tanto, para obtener detalles sobre las etapas relacionadas en la realización que se muestran en la FIG. 6, consulte la descripción de una etapa correspondiente en la FIG. 2. A diferencia de la realización que se muestra en la FIG. 2, puesto que los segundos datos que se leerán por la segunda petición de acceso son relativamente pequeños, el controlador de memoria 106 puede obtener los segundos datos usando un comando de envío. Por lo tanto, después de que el controlador de memoria 106 determina, basándose en los metadatos de los segundos datos devueltos por el controlador de medios 110, que los segundos datos que se leerán por el segundo comando de lectura se devuelven completamente, el controlador de memoria puede devolver directamente los segundos datos al procesador 102.
En una aplicación real, el sistema informático 100 proporcionado en esta realización de la presente invención puede procesar simultáneamente una pluralidad de diferentes comandos de lectura para acceder a diferentes chips de NVM 112. Por ejemplo, el sistema informático 100 puede procesar simultáneamente un primer comando de lectura y un segundo comando de lectura. La FIG. 2 y la FIG. 6 son meramente diagramas esquemáticos de un procedimiento de ejecución en el que el sistema informático 100 procesa comandos de lectura para leer datos con diferente longitud. Asimismo, el sistema informático 100 proporcionado en esta realización de la presente invención puede admitir además la ejecución desordenada de un comando de lectura. De esta manera, las etapas de la FIG. 2 y las etapas de la FIG. 6 se pueden realizar transversalmente. Por ejemplo, antes de la etapa 208, el controlador de memoria puede realizar la etapa 604. Cuando se devuelven datos al controlador de memoria 106, el controlador de medios puede primero devolver una parte de los primeros datos leídos por el primer comando de lectura que se muestra en la FIG. 2, o puede devolver primero los segundos datos leídos por el segundo comando de lectura que se muestra en la FIG. 6. Por lo tanto, en esta realización de la presente invención, una secuencia de ejecución de etapas de los procedimientos de acceso a la memoria que se muestran en la FIG. 2 y la FIG. 6 no está limitada.
En el sistema informático proporcionado en la realización anterior, cuando el procesador 102 envía peticiones de acceso que se utilizan para leer datos con diferente longitud, el controlador de memoria 106 puede enviar, al NVDIMM 108 basándose en las peticiones de acceso recibidas, comandos de lectura que se utilizan para leer datos con diferente longitud. Cuando se envía el primer comando de lectura que se utiliza para leer datos relativamente grandes (por ejemplo, primeros datos), el controlador de memoria 106 puede enviar, al controlador de medios en el NVDIMM 108, al menos dos comandos de envío que se utilizan para leer datos de longitud fija (por ejemplo, la tercera longitud). La tercera longitud es menor que la primera longitud de los primeros datos. El controlador de medios 110 puede devolver al menos dos subbloques de datos de la tercera longitud y metadatos al controlador de memoria 106 basándose en los al menos dos comandos de envío recibidos. Los metadatos correspondientes a cada subbloque de datos incluyen un identificador de ubicación del subbloque de datos en los primeros datos. Por lo tanto, el controlador de memoria 106 puede combinar los al menos dos subbloques de datos en los primeros datos basándose en los identificadores de ubicación devueltos en los metadatos de los al menos dos subbloques de datos. El procedimiento proporcionado en esta realización de la presente invención puede admitir un requisito de lectura para leer datos con diferente longitud sin aumentar la cantidad de comandos de lectura y sin desperdiciar el ancho de banda del bus.
En una aplicación real, puesto que el sistema informático 100 puede procesar simultáneamente una pluralidad de diferentes comandos de lectura, de esta manera, los datos que se leerán por una pluralidad de comandos de lectura pueden almacenarse temporalmente en el búfer 114 del NVDIMM 108. En una aplicación real, cuando los datos se almacenan en el búfer 114, el controlador de medios 110 envía una señal de listo al controlador de memoria 106 para indicarle al controlador de memoria 106 que obtenga datos. Para reducir un retardo de espera en la obtención
de datos por el controlador de memoria, en esta realización de la presente invención, se puede optimizar aún más una secuencia de planificación de bloques de datos en el búfer. A continuación se describe, en detalle en referencia a la FIG. 5 y la FIG. 7, cómo el sistema informático 100 proporcionado en las realizaciones de la presente invención reduce el retardo de espera en la obtención de datos mediante el controlador de memoria.
En esta realización de la presente invención, para reducir el retardo de espera en la obtención de datos mediante el controlador de memoria, se puede añadir además un identificador de transmisión (LB) a los metadatos que se muestran en la FIG. 5. El identificador de transmisión LB ocupa solo un bit en los metadatos que se muestran en la FIG. 5. Específicamente, se puede seleccionar un bit entre los bits sin utilizar (por ejemplo, los bits indicados mediante la RFU en la FIG. 5) en la estructura de metadatos que se muestra en la FIG. 5 como identificador de transmisión. El identificador de transmisión se utiliza para indicar si el subbloque de datos es el último bloque de datos a transmitir en los datos que se leerán por un comando de lectura indicado mediante un RID. Por ejemplo, cuando los primeros datos se dividen en al menos dos subbloques de datos para su almacenamiento, cualquiera de los al menos dos subbloques de datos se puede utilizar como último subbloque de datos a transmitir de los primeros datos. De esta manera, un bit LB en los metadatos del último subbloque determinado de datos a transmitir puede marcarse como "1", y un bit LB en los metadatos de otro subbloque de datos en los primeros datos puede marcarse como "0". Se puede entender que "1" es meramente un ejemplo que se utiliza para indicar que el subbloque de datos es un identificador del último subbloque de datos a transmitir, y "0" también es meramente un ejemplo que se utiliza para indicar que el subbloque de datos no es un identificador del último subbloque de datos a transmitir. De forma alternativa, se puede utilizar otro identificador en una aplicación real, y no se impone ninguna limitación en la presente memoria.
En las realizaciones de la presente invención, para reducir un retardo de espera en la recepción de datos de un comando de lectura mediante el controlador de memoria 106, en la etapa 212 que se muestra en la FIG. 2 y la etapa 612 que se muestra en la FIG. 6, el controlador de medios 110 puede optimizar además una secuencia para devolver subbloques de datos, almacenados en el búfer 114, de comandos de lectura. A continuación se describe, en detalle en referencia a la FIG. 7 a la FIG. 9, cómo el controlador de medios 110 en las realizaciones de la presente invención devuelve un bloque de datos al controlador de memoria 106. La FIG. 7 es un diagrama de flujo de un procedimiento de planificación según una realización de la presente invención. La FIG. 8 es un diagrama esquemático de un procedimiento de planificación según una realización de la presente invención. la FIG. 9 es un diagrama esquemático de otro procedimiento de planificación según una realización de la presente invención; Para una mayor claridad de descripción, que al menos dos subbloques de datos de los primeros datos y los segundos datos sean almacenados temporalmente en un búfer 114 en la realización que se muestra en la FIG. 7, se utiliza como ejemplo para la descripción. Como se muestra en la FIG. 7, cuando se devuelve un bloque de datos a un controlador de memoria 106, un controlador de medios 110 puede realizar las siguientes etapas.
Etapa 702: El controlador de medios 110 determina que los segundos datos están ubicados después de un primer subbloque de datos de los primeros datos en el búfer 114 y ubicados antes de un segundo subbloque de datos de los primeros datos en el búfer 114. Un identificador de transmisión del primer subbloque de datos indica que el primer subbloque de datos no es un último subbloque de datos a transmitir de los primeros datos, y un identificador de transmisión del segundo subbloque de datos indica que el segundo subbloque de datos es un último subbloque de datos a transmitir de los primeros datos.
Para una mayor claridad de la descripción, se utiliza un ejemplo para la descripción en referencia a la FIG. 8. Como se muestra en la FIG. 8, se utilizan como ejemplo un primer comando de lectura A y un segundo comando de lectura B. Los datos que se leerán por el primer comando de lectura A incluyen un subbloque de datos A0, un subbloque de datos A1 y un subbloque de datos A2 (LB), y los datos que se leerán por el segundo comando de lectura B incluyen un subbloque de datos B0 (LB). A2 (LB) se utiliza para indicar que A2 es el último subbloque de datos a transmitir de los datos que es leído con el primer comando de lectura A, y B0 (LB) se utiliza para indicar que B0 es un último subbloque de datos a transmitir de los datos que es leído con el segundo comando de lectura B. En 802 se muestra una secuencia de almacenamiento en el búfer de los subbloques de datos en el búfer 114. El subbloque de datos B0 (LB) está ubicado después del subbloque de datos A0 y el subbloque de datos A1 y está ubicado antes del subbloque de datos A2 (LB).
Etapa 704: El controlador de medios 110, en respuesta a un comando de envío enviado por el controlador de memoria 106, envía los segundos datos al controlador de memoria 106 antes del primer subbloque de datos. Específicamente, como se muestra mediante una secuencia de planificación 804 en la FIG. 8, el controlador de medios 110 puede responder primero a un comando de envío enviado por el controlador de memoria 106, para enviar los segundos datos B0 (LB) al controlador de memoria 106, y luego responder a al menos otros dos comandos de envío enviados por el controlador de memoria 106, para devolver el primer subbloque de datos A0, el segundo subbloque de datos A1 y el tercer subbloque de datos A2 (LB) al controlador de memoria 106.
Se supone que un retardo de transmisión en la transmisión de un subbloque de datos es de cuatro períodos. Si el controlador de medios 110 envía los subbloques de datos al controlador de memoria 106 basándose en la secuencia de almacenamiento en el búfer mostrada en 802 en la FIG. 8, un retardo de espera en la recepción de todos los subbloques de datos del primer comando de lectura A mediante el controlador de memoria 106 es de 16 períodos, y un retardo de espera en la recepción de todos los subbloques de datos del segundo comando de lectura B mediante
el controlador de memoria 106 es de 12 períodos. Para reducir un retardo de espera del controlador de memoria 106, después de que se ajusta una secuencia de envío de los subbloques de datos en el búfer 114 según el procedimiento que se muestra en esta realización de la presente invención, por ejemplo, basándose en la secuencia de planificación mostrada en 804, el controlador de medios 110 puede enviar los datos B0 (LB) del segundo comando de lectura B al controlador de memoria 106 antes de los subbloques de datos A0 y A1 del primer comando de lectura A. En este caso, el retardo de espera para recibir todos los subbloques de datos del primer comando de lectura A mediante el controlador de memoria 106 no ha cambiado, y todavía es de 16 períodos. Sin embargo, el retardo de espera en la recepción de todos los subbloques de datos del segundo comando de lectura B mediante el controlador de memoria 106 es de cuatro períodos, reduciendo así el retardo en la recepción del subbloque de datos del segundo comando de lectura B mediante el controlador de memoria 106, y mejorando la eficacia de procesamiento al procesar el segundo comando de lectura B mediante el controlador de memoria 106.
Los datos que se leerán por un segundo comando de lectura incluyen solo un subbloque de datos B0 (LB) que se utiliza como ejemplo para la descripción en la FIG. 8. En una aplicación real, si los datos que se leerán por el segundo comando de lectura incluyen una pluralidad de subbloques de datos, siempre y cuando cada subbloque de los datos que se leerán por el segundo comando de lectura esté ubicado después de un subbloque de datos en los datos que se leerán por un primer comando de lectura en un búfer y esté ubicado antes de un último subbloque de datos a transmitir de los datos que se leerán por el primer comando de lectura en el búfer, el controlador de medios 110 puede enviar el subbloque de datos que se leerá por el segundo comando de lectura en el controlador de memoria 106 antes del subbloque de datos que se leerá por el primer comando de lectura. Como se muestra en 902 en la FIG. 9, los datos que se leerán por un segundo comando de lectura B incluyen B0 y B1 (LB). B0 y B1 (LB) están ubicados después de un subbloque de datos A0 que se leerá por un primer comando de lectura A en un búfer 114, y B0 y B1 (LB) están ubicados antes de un último subbloque A2 de datos a transmitir (LB) de los datos que se leerán por el primer comando de lectura A en el búfer 114. Un controlador de medios 110 puede enviar subbloques de datos al controlador de memoria 106 basándose en una secuencia de planificación que se muestra en 904. Específicamente, los datos B0 y B1 (LB) que se leerán por el segundo comando de lectura pueden enviarse al controlador de memoria antes del subbloque de datos A0 que se leerán por el primer comando de lectura A. Que un retardo de transmisión en la transmisión de un subbloque de datos sea de cuatro períodos todavía se utiliza como ejemplo. Después de que se ajusta una secuencia de envío, un retardo en la recepción, mediante el controlador de memoria 106, los datos que son leídos con el segundo comando de lectura B se reduce de 16 períodos a ocho retardos, y un retardo en la recepción, por parte del controlador de memoria 106, de datos que son leídos con el primer comando de lectura A sigue siendo de 20 retardos. Por lo tanto, la eficacia de procesamiento del controlador de memoria se optimiza hasta cierto punto.
Asimismo, en consideración a la equidad, para evitar un aumento en un retardo en la recepción de datos de un comando de lectura mediante el controlador de memoria 106, en esta realización de la presente invención, el controlador de medios 110 no puede enviar, al controlador de memoria antes del subbloque de datos del primer comando de lectura, un subbloque de datos que se leerá por otro comando de lectura que está ubicado después del último subbloque de datos a transmitir de los datos del primer comando de lectura en el búfer. Por ejemplo, como se muestra en la FIG. 8 y la FIG. 9, un subbloque de datos C0 (LB) de un tercer comando de lectura C está ubicado después del subbloque de datos A2 (LB) del primer comando de lectura A en el búfer 114, y el controlador de medios 110 no puede enviar el C0 (LB) al controlador de memoria 106 antes de los subbloques de datos A0, A1 y A2 (LB) del primer comando de lectura. Si el controlador de medios 110 envía el C0 (LB) al controlador de memoria 106 antes de los subbloques de datos A0, A1 y A2 (LB) del primer comando de lectura, aumenta un retardo en la recepción de un bloque de datos del primer comando de lectura A mediante el controlador de memoria 106. Por ejemplo, en el ejemplo que se muestra en la FIG. 8, suponiendo que se envía un subbloque de datos del primer comando de lectura A después de que se envía el subbloque de datos del tercer comando de lectura C, un retardo en la recepción de los datos del primer comando de lectura A mediante el controlador de memoria 106 aumenta de 16 períodos a 20 periodos.
Cabe destacar que, en esta realización de la presente invención, cuando el controlador de medios 110 ajusta una secuencia de envío de bloques de datos, un último bloque de datos a transmitir en los datos que se leerán por un comando de lectura no se puede enviar antes de otro bloque de datos del comando. Por ejemplo, el controlador de medios 110 no puede enviar el subbloquede datos A2 (LB) del primer comando de lectura al controlador de memoria 106 antes del subbloque de datos A0 o A1.
Se puede aprender de la descripción anterior que, basándose en los procedimientos de la FIG. 2 y la FIG. 6 en las realizaciones de la presente invención, en un proceso de devolución de datos de lectura al controlador de memoria 106 mediante el controlador de medios 110, se ajusta una secuencia de retorno de datos que es leída por comandos de lectura, de modo que se pueden procesar comandos de lectura para leer datos con diferentes longitudes, y además se puede reducir un retardo en la recepción de datos mediante el controlador de memoria 106, mejorando así la eficacia de procesamiento del controlador de memoria 106.
Una persona con experiencia ordinaria en la técnica puede saber que, en referencia a los ejemplos descritos en las realizaciones divulgadas en esta memoria descriptiva, las etapas de procedimiento pueden implementarse mediante hardware electrónico o una combinación de hardware electrónico y software informático. El hecho de que las funciones sean realizadas por hardware o software depende de las aplicaciones particulares y las condiciones de
restricción de diseño de las soluciones técnicas. Un experto en la materia puede usar diferentes procedimientos para implementar las funciones descritas en cada aplicación particular, pero no debe considerarse que la implementación va más allá del alcance de esta aplicación.
Todas o algunas de las realizaciones anteriores pueden implementarse mediante software, hardware, firmware o cualquier combinación de los mismos. Cuando se utiliza software para implementar las realizaciones, las realizaciones pueden implementarse total o parcialmente en forma de un producto de programa de ordenador. El producto de programa de ordenador incluye una o más instrucciones de ordenador. Cuando las instrucciones del programa de ordenador se cargan y se ejecutan en el ordenador, los procedimientos o funciones según las realizaciones de la presente invención se generan total o parcialmente. El ordenador puede ser un ordenador de propósito general, un ordenador dedicado, una red de ordenadores u otro aparato programable. Las instrucciones de ordenador pueden almacenarse en un medio de almacenamiento legible por ordenador o pueden transmitirse desde un medio de almacenamiento legible por ordenador a otro medio de almacenamiento legible por ordenador. Por ejemplo, las instrucciones de ordenador pueden transmitirse desde un sitio web, ordenador, servidor o centro de datos a otro sitio web, ordenador, servidor o centro de datos en un cable (por ejemplo, un cable coaxial y una fibra óptica) o forma inalámbrica (para ejemplo, infrarrojos, radio y microondas). El medio de almacenamiento legible por ordenador puede ser cualquier medio utilizable accesible por un ordenador, o un dispositivo de almacenamiento de datos, como un servidor o un centro de datos, que integra uno o más medios utilizables. El medio utilizable puede ser un medio magnético (por ejemplo, un disquete, un disco duro o una cinta magnética), un medio óptico (por ejemplo, un disco óptico) o un medio legible por máquina no transitorio (non-transitory) como un medio semiconductor (por ejemplo, una unidad de estado sólido (solid-state drive, SSD)) que puede almacenar código de programa.
Cabe destacar que las realizaciones proporcionadas en esta aplicación son meramente ejemplos. Una persona experta en la técnica puede saber claramente que, por conveniencia y concisión de la descripción, en las realizaciones anteriores, las realizaciones enfatizan diferentes aspectos, y para una parte no descrita en detalle en una realización, se refieren a la descripción pertinente de otra realización. Los rasgos característicos descritos en las realizaciones de la presente invención, las reivindicaciones y los dibujos adjuntos pueden existir de forma independiente o existir en una combinación. Los rasgos característicos descritos en forma de hardware en las realizaciones de la presente invención pueden ejecutarse mediante software y viceversa, lo cual no está limitado en la presente memoria.
Claims (15)
1. Un sistema informático (100), que comprende un controlador de memoria (106), un controlador de medios (110) y una memoria no volátil, NVM (112), conectados al controlador de medios (110), en el que el controlador de memoria (106) está conectado al controlador de medios (110) y se comunica con el controlador de medios (110) cumpliendo con un protocolo de acceso al bus compatible con protocolo de doble tasa de datos, DDR,la NVM (112) está configurada para almacenar datos;
el controlador de memoria (106) está configurado para enviar un primer comando de lectura al controlador de medios, en el que el primer comando de lectura transporta un primer ID, una primera dirección y una primera longitud, el primer ID es un identificador del primer comando de lectura, y la primera longitud se utiliza para indicar un tamaño de los primeros datos que se leerán por el primer comando de lectura;
el controlador de medios (110) está configurado para leer los primeros datos desde la NVM basándose en la primera dirección;
el controlador de memoria (106) está configurado para enviar al menos dos comandos de envío al controlador de medios, en el que los al menos dos comandos de envío se utilizan para obtener al menos dos partes de datos de una tercera longitud, y la tercera longitud es menor que la primera longitud;
el controlador de medios (110) está configurado para, en respuesta a los al menos dos comandos de envío, devolver al menos dos subbloques de datos de la tercera longitud y los metadatos de los al menos dos subbloques de datos al controlador de memoria, en el que los metadatos comprenden el primer ID y un identificador de ubicación, y el identificador de ubicación se utiliza para indicar un desplazamiento de un subbloque de datos correspondiente en los primeros datos; y
el controlador de memoria (106) está configurado para obtener los primeros datos basándose en los al menos dos subbloques de datos y los identificadores de ubicación en los metadatos de los al menos dos subbloques de datos.
2. El sistema informático (100) según la reivindicación 1, en el que
el controlador de memoria (106) está configurado además para enviar un segundo comando de lectura al controlador de medios, en el que el segundo comando de lectura transporta un segundo ID, una segunda dirección y una segunda longitud, y la segunda longitud se utiliza para indicar un tamaño de los segundos datos que se leerán por el segundo comando de lectura;
el controlador de medios (110) está configurado además para obtener los segundos datos desde la NVM (112) basándose en la segunda dirección;
el controlador de memoria (106) está configurado además para enviar un segundo comando de envío al controlador de medios, en el que el segundo comando de envío se utiliza para obtener un bloque de datos de la tercera longitud, y la segunda longitud es igual a la tercera longitud; y
el controlador de medios (110) está configurado además para, en respuesta al segundo comando de envío, devolver los segundos datos y los metadatos de los segundos datos al controlador de memoria, en el que los metadatos de los segundos datos transportan el segundo ID.
3. El sistema informático (100) según la reivindicación 1 o 2, en el que el controlador de medios (110) está configurado además para:
dividir los primeros datos leídos desde la NVM en al menos dos subbloques de datos para almacenarlos temporalmente y registrar los metadatos de los al menos dos subbloques de datos.
4. El sistema informático (100) según la reivindicación 2 o 3, en el que los metadatos de cada subbloque de datos comprenden además un identificador de transmisión, y el identificador de transmisión se utiliza para indicar si el subbloque de datos es un último subbloque de datos a transmitir de los primeros datos;
el sistema informático (100) comprende además:
un búfer (114), configurado para almacenar temporalmente los al menos dos subbloques de datos de los primeros datos leídos desde la NVM y los segundos datos; y
el controlador de medios (110) está configurado además para: cuando los segundos datos están ubicados después de un primer subbloque de datos de los primeros datos en el búfer y ubicados antes de un segundo subbloque de datos de los primeros datos en el búfer, enviar los segundos datos al controlador de memoria antes del primer subbloque de datos, en el que un identificador de transmisión del primer subbloque de datos indica que el primer subbloque de datos no es el último subbloque de datos a transmitir de los primeros datos, y un identificador de transmisión del segundo subbloque de datos indica que el segundo subbloque de datos es el último subbloque de datos a transmitir de los primeros datos.
5. Un almacenamiento (108), que comprende:
una memoria no volátil (112), NVM, configurada para almacenar datos; y
un controlador de medios (110) conectado al NVM (112) y un controlador de memoria (106) en un sistema informático (100), en el que el controlador de medios (110) se comunica con el controlador de memoria (106) cumpliendo con un protocolo de acceso al bus compatible con un protocolo de doble tasa de datos, DDR, y está configurado para:
recibir un primer comando de lectura enviado por un controlador de memoria en un sistema informático, en el que el primer comando de lectura transporta un primer ID, una primera dirección y una primera longitud, el primer ID es un identificador del primer comando de lectura, y la primera longitud se utiliza para indicar un tamaño de los primeros datos que se leerán por el primer comando de lectura;
leer los primeros datos desde la NVM basándose en la primera dirección;
recibir al menos dos comandos de envío enviados por el controlador de memoria, en el que los al menos dos comandos de envío se utilizan para obtener datos de una tercera longitud, y la tercera longitud es menor que la primera longitud; y
en respuesta a los al menos dos comandos de envío enviados por el controlador de memoria, devolver al menos dos subbloques de datos de la tercera longitud y los metadatos de los al menos dos subbloques de datos al controlador de memoria, en el que los metadatos de cada subbloque de datos comprenden el primer ID y un identificador de ubicación, y el identificador de ubicación se utiliza para indicar un desplazamiento de un subbloque de datos correspondiente en los primeros datos.
6. El almacenamiento según la reivindicación 5, en el que el controlador de medios (110) está configurado además para:
recibir un segundo comando de lectura enviado por el controlador de memoria, en el que el segundo comando de lectura transporta un segundo ID, una segunda dirección y una segunda longitud, y la segunda longitud se utiliza para indicar un tamaño de los segundos datos que se leerán por el segundo comando de lectura;
obtener los segundos datos desde la NVM basándose en la segunda dirección;
recibir un segundo comando de envío enviado por el controlador de memoria, en el que el segundo comando de envío se utiliza para obtener un bloque de datos de la tercera longitud, y la segunda longitud es igual a la tercera longitud; y
en respuesta al segundo comando de envío, devolver los segundos datos y los metadatos de los segundos datos al controlador de memoria, en el que los metadatos de los segundos datos transportan el segundo ID.
7. El almacenamiento según la reivindicación 5 o 6, en el que el almacenamiento (108) además comprende: un búfer (114), configurado para almacenar temporalmente los al menos dos subbloques de datos de los primeros datos que el controlador de medios lee desde la NVM (112); y
el controlador de medios (110) está configurado además para registrar los metadatos de los al menos dos subbloques de datos.
8. El almacenamiento según la reivindicación 6 o 7, en el que los metadatos de cada subbloque de datos comprenden además un identificador de transmisión, y el identificador de transmisión se utiliza para indicar si el subbloque de datos es un último subbloque de datos a transmitir de los primeros datos;
el búfer (114) está configurado además para almacenar temporalmente los segundos datos; y
el controlador de medios (110) está configurado además para: cuando los segundos datos están ubicados después de un primer subbloque de datos de los primeros datos en el búfer y ubicados antes de un segundo subbloque de datos de los primeros datos en el búfer, enviar los segundos datos al controlador de memoria antes del primer subbloque de datos, en el que un identificador de transmisión del primer subbloque de datos indica que el primer subbloque de datos no es el último subbloque de datos a transmitir de los primeros datos, y un identificador de transmisión del segundo subbloque de datos indica que el segundo subbloque de datos es el último subbloque de datos a transmitir de los primeros datos.
9. Un procedimiento de acceso a la memoria, en el que el procedimiento se aplica a un sistema informático (100) que comprende un controlador de memoria (106), un controlador de medios (110) y una memoria no volátil (112), NVM, conectados al controlador de medios (110), en el que el controlador de memoria (106) está conectado al controlador de medios (110) y se comunica con el controlador de medios (110) cumpliendo con un protocolo de acceso al bus compatible con un protocolo de doble tasa de datos, DDR, y el procedimiento comprende:
enviar (204), mediante el controlador de memoria (106), un primer comando de lectura al controlador de medios, en el que el primer comando de lectura transporta un primer ID, una primera dirección y una primera longitud, el primer ID es un identificador del primer comando de lectura, y la primera longitud se utiliza para indicar un tamaño de los primeros datos que se leerán por el primer comando de lectura;
leer (206), mediante el controlador de medios, los primeros datos desde la NVM basándose en la primera dirección; enviar (210), mediante el controlador de memoria, al menos dos comandos de envío al controlador de medios, en el que los al menos dos comandos de envío se utilizan para obtener al menos dos partes de datos de una tercera longitud, y la tercera longitud es menor que la primera longitud;
en respuesta a los al menos dos comandos de envío, devolver (212), mediante el controlador de medios, al menos dos subbloques de datos de la tercera longitud y los metadatos de los al menos dos subbloques de datos al controlador de memoria, en el que los metadatos de cada subbloque de datos comprenden el primer ID y un identificador de ubicación, y el identificador de ubicación se utiliza para indicar una ubicación de un subbloque de datos correspondiente en los primeros datos; y
combinar (214), mediante el controlador de memoria, los al menos dos subbloques de datos en los primeros datos basándose en identificadores de ubicación en los metadatos de los al menos dos subbloques de datos.
10. El procedimiento de acceso a la memoria según la reivindicación 9, que además comprende:
enviar (604), mediante el controlador de memoria, un segundo comando de lectura al controlador de medios, en el que el segundo comando de lectura transporta un segundo ID, una segunda dirección y una segunda longitud, y la segunda longitud se utiliza para indicar un tamaño de los segundos datos que se leerán por el segundo comando de lectura;
obtener (606), mediante el controlador de medios, los segundos datos desde la NVM basándose en la segunda dirección;
enviar (610), mediante el controlador de memoria, un segundo comando de envío al controlador de medios, en el que el segundo comando de envío se utiliza para obtener un bloque de datos de la tercera longitud, y la segunda longitud es igual a la tercera longitud; y
recibir (612), mediante el controlador de memoria, los segundos datos y los metadatos de los segundos datos que son devueltos por el controlador de medios basándose en el segundo comando de envío, en el que los metadatos de los segundos datos transportan el segundo ID.
11. El procedimiento de acceso a la memoria según la reivindicación 9 o 10, que además comprende:
dividir, mediante el controlador de medios, los primeros datos leídos desde la NVM en al menos dos subbloques de datos para almacenarlos temporalmente, y registrar los metadatos de los al menos dos subbloques de datos.
12. El procedimiento de acceso a la memoria según la reivindicación 10 u 11, en el que el sistema informático comprende además un búfer, los metadatos de cada subbloque de datos comprenden además un identificador de transmisión, y el identificador de transmisión se utiliza para indicar si el subbloque de datos es un último subbloque de datos a transmitir de los primeros datos; y
el procedimiento comprende además:
cuando los segundos datos están ubicados después de un primer subbloque de datos de los primeros datos en el búfer y ubicados antes de un segundo subbloque de datos de los primeros datos en el búfer, enviar (704), mediante el controlador de medios, los segundos datos al controlador de memoria antes del primer subbloque de datos, en el que un identificador de transmisión del primer subbloque de datos indica que el primer subbloque de datos no es el último subbloque de datos a transmitir de los primeros datos, y un identificador de transmisión del segundo subbloque de datos indica que el segundo subbloque de datos es el último subbloque de datos a transmitir de los primeros datos.
13. Un procedimiento de acceso a la memoria, en el que el procedimiento se aplica a un sistema informático que comprende un controlador de memoria, un controlador de medios y una memoria no volátil, NVM, conectados al controlador de medios, en el que el controlador de medios se comunica con el controlador de memoria cumpliendo con un protocolo de acceso al bus compatible con un protocolo de doble tasa de datos, DDR, y el procedimiento comprende:
recibir (204), mediante el controlador de medios, un primer comando de lectura enviado por el controlador de memoria, en el que el primer comando de lectura transporta un primer ID, una primera dirección y una primera longitud, el primer ID es un identificador del primer comando de lectura, y la primera longitud se utiliza para indicar un tamaño de los primeros datos que se leerán por el primer comando de lectura;
leer (206), mediante el controlador de medios, los primeros datos desde la NVM basándose en la primera dirección; recibir (210), mediante el controlador de medios, al menos dos comandos de envío enviados por el controlador de memoria, en el que los al menos dos comandos de envío se utilizan para obtener datos de una tercera longitud, y la tercera longitud es menor que la primera longitud; y
en respuesta a los al menos dos comandos de envío, devolver (212), mediante el controlador de medios, al menos dos subbloques de datos de la tercera longitud y los metadatos de los al menos dos subbloques de datos al controlador de memoria, en el que los metadatos de cada subbloque de datos comprenden el primer ID y un identificador de ubicación, y el identificador de ubicación se utiliza para indicar un desplazamiento de un subbloque de datos correspondiente en los primeros datos.
14. El procedimiento según la reivindicación 13, que además comprende:
recibir (604), mediante el controlador de medios, un segundo comando de lectura enviado por el controlador de memoria, en el que el segundo comando de lectura transporta un segundo ID, una segunda dirección y una segunda longitud, y la segunda longitud se utiliza para indicar un tamaño de los segundos datos que se leerán por el segundo comando de lectura;
obtener (606), mediante el controlador de medios, los segundos datos desde la NVM basándose en la segunda dirección;
recibir (610), mediante el controlador de medios, un segundo comando de envío enviado por el controlador de memoria, en el que el segundo comando de envío se utiliza para obtener un bloque de datos de la tercera longitud, y la segunda longitud es igual a la tercera longitud; y
en respuesta al segundo comando de envío, devolver (612), mediante el controlador de medios, los segundos datos y los metadatos de los segundos datos al controlador de memoria, en el que los metadatos de los segundos datos transportan el segundo ID.
15. El procedimiento según la reivindicación 14, en el que el sistema informático comprende además un búfer, los metadatos de cada subbloque de datos comprenden además un identificador de transmisión, y el identificador de transmisión se utiliza para indicar si el subbloque de datos es un último subbloque de datos a transmitir de los primeros datos; y
el procedimiento comprende además:
cuando los segundos datos están ubicados después de un primer subbloque de datos de los primeros datos en el búfer y ubicados antes de un segundo subbloque de datos de los primeros datos en el búfer, enviar (704), mediante el controlador de medios, los segundos datos al controlador de memoria antes del primer subbloque de datos, en el que un identificador de transmisión del primer subbloque de datos indica que el primer subbloque de datos no es el último subbloque de datos a transmitir de los primeros datos, y un identificador de transmisión del segundo subbloque de datos indica que el segundo subbloque de datos es el último subbloque de datos a transmitir de los primeros datos.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2017/089774 WO2018232736A1 (zh) | 2017-06-23 | 2017-06-23 | 内存访问技术及计算机系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2840423T3 true ES2840423T3 (es) | 2021-07-06 |
Family
ID=64735409
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES17914958T Active ES2840423T3 (es) | 2017-06-23 | 2017-06-23 | Tecnología de acceso a la memoria y sistema informático |
Country Status (8)
Country | Link |
---|---|
US (3) | US10732876B2 (es) |
EP (3) | EP4152166A3 (es) |
JP (2) | JP6900518B2 (es) |
KR (3) | KR102443106B1 (es) |
CN (1) | CN109478168B (es) |
BR (1) | BR112019026942B1 (es) |
ES (1) | ES2840423T3 (es) |
WO (1) | WO2018232736A1 (es) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10877669B1 (en) * | 2011-06-30 | 2020-12-29 | Amazon Technologies, Inc. | System and method for providing a committed throughput level in a data store |
US10831650B2 (en) * | 2018-03-07 | 2020-11-10 | Exten Technologies, Inc. | Systems and methods for accessing non-volatile memory and write acceleration cache |
WO2019200142A1 (en) * | 2018-04-12 | 2019-10-17 | Micron Technology, Inc. | Replay protected memory block command queue |
US11099778B2 (en) * | 2018-08-08 | 2021-08-24 | Micron Technology, Inc. | Controller command scheduling in a memory system to increase command bus utilization |
US11074007B2 (en) | 2018-08-08 | 2021-07-27 | Micron Technology, Inc. | Optimize information requests to a memory system |
US10969994B2 (en) * | 2018-08-08 | 2021-04-06 | Micron Technology, Inc. | Throttle response signals from a memory system |
US11409436B2 (en) * | 2018-08-08 | 2022-08-09 | Micron Technology, Inc. | Buffer management in memory systems for read and write requests |
US10782916B2 (en) | 2018-08-08 | 2020-09-22 | Micron Technology, Inc. | Proactive return of write credits in a memory system |
US11210093B2 (en) * | 2019-04-08 | 2021-12-28 | Micron Technology, Inc. | Large data read techniques |
US11256423B2 (en) * | 2019-10-14 | 2022-02-22 | Western Digital Technologies, Inc. | Efficiently identifying command readiness based on system state and data spread in multi queue depth environment |
CN110781120B (zh) * | 2019-10-23 | 2023-02-28 | 山东华芯半导体有限公司 | 一种axi总线主机设备跨4kb传输的实现方法 |
CN112825024A (zh) * | 2019-11-20 | 2021-05-21 | 北京忆芯科技有限公司 | 命令融合、拆分方法与NVMe控制器 |
US11599485B2 (en) | 2020-11-25 | 2023-03-07 | Micron Technology, Inc. | Status check using signaling |
CN119200963A (zh) * | 2022-04-28 | 2024-12-27 | 华为技术有限公司 | 存储装置及数据处理方法 |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07302176A (ja) * | 1994-05-09 | 1995-11-14 | Toshiba Corp | 半導体ディスク装置 |
US7480781B2 (en) * | 2004-12-30 | 2009-01-20 | Intel Corporation | Apparatus and method to merge and align data from distributed memory controllers |
WO2010093356A1 (en) | 2009-02-11 | 2010-08-19 | Stec, Inc. | A flash backed dram module |
US8438453B2 (en) * | 2009-05-06 | 2013-05-07 | Apple Inc. | Low latency read operation for managed non-volatile memory |
US20110041039A1 (en) * | 2009-08-11 | 2011-02-17 | Eliyahou Harari | Controller and Method for Interfacing Between a Host Controller in a Host and a Flash Memory Device |
TWI454906B (zh) * | 2009-09-24 | 2014-10-01 | Phison Electronics Corp | 資料讀取方法、快閃記憶體控制器與儲存系統 |
CN101876944B (zh) * | 2009-11-26 | 2012-02-15 | 威盛电子股份有限公司 | 动态随机存取存储器控制器和控制方法 |
JP5611889B2 (ja) * | 2011-05-17 | 2014-10-22 | 株式会社東芝 | データ転送装置、データ送信システムおよびデータ送信方法 |
US9294564B2 (en) * | 2011-06-30 | 2016-03-22 | Amazon Technologies, Inc. | Shadowing storage gateway |
US8793343B1 (en) * | 2011-08-18 | 2014-07-29 | Amazon Technologies, Inc. | Redundant storage gateways |
CN102609378B (zh) * | 2012-01-18 | 2016-03-30 | 中国科学院计算技术研究所 | 一种消息式内存访问装置及其访问方法 |
CN103034603B (zh) | 2012-12-07 | 2014-06-18 | 天津瑞发科半导体技术有限公司 | 多通道闪存卡控制装置及其控制方法 |
CN104216837A (zh) * | 2013-05-31 | 2014-12-17 | 华为技术有限公司 | 一种内存系统、内存访问请求的处理方法和计算机系统 |
CN104375946B (zh) * | 2013-08-16 | 2018-04-20 | 华为技术有限公司 | 一种数据处理的方法及装置 |
JP6217241B2 (ja) | 2013-08-28 | 2017-10-25 | コニカミノルタ株式会社 | 胸部診断支援システム |
US9021154B2 (en) * | 2013-09-27 | 2015-04-28 | Intel Corporation | Read training a memory controller |
JP6287571B2 (ja) * | 2014-05-20 | 2018-03-07 | 富士通株式会社 | 演算処理装置、情報処理装置、及び、演算処理装置の制御方法 |
US9823864B2 (en) * | 2014-06-02 | 2017-11-21 | Micron Technology, Inc. | Systems and methods for throttling packet transmission in a scalable memory system protocol |
KR102249416B1 (ko) * | 2014-06-11 | 2021-05-07 | 삼성전자주식회사 | 메모리 시스템 및 메모리 시스템의 구동 방법 |
WO2016071954A1 (ja) | 2014-11-04 | 2016-05-12 | 株式会社日立製作所 | 半導体メモリデバイス、及び、半導体メモリデバイスを有するストレージ装置 |
US9711194B2 (en) * | 2015-01-28 | 2017-07-18 | Xilinx, Inc. | Circuits for and methods of controlling the operation of a hybrid memory system |
US9778864B2 (en) * | 2015-03-10 | 2017-10-03 | SK Hynix Inc. | Data storage device using non-sequential segment access and operating method thereof |
JP6515602B2 (ja) | 2015-03-12 | 2019-05-22 | 日本電気株式会社 | データ処理装置及びデータ処理方法 |
JP6541998B2 (ja) | 2015-03-24 | 2019-07-10 | 東芝メモリ株式会社 | メモリデバイス、半導体装置および情報処理装置 |
US10353747B2 (en) * | 2015-07-13 | 2019-07-16 | Futurewei Technologies, Inc. | Shared memory controller and method of using same |
US10254990B2 (en) | 2015-12-07 | 2019-04-09 | Netapp, Inc. | Direct access to de-duplicated data units in memory-based file systems |
US9460791B1 (en) * | 2015-12-08 | 2016-10-04 | Inphi Corporation | Data clock synchronization in hybrid memory modules |
US10152237B2 (en) * | 2016-05-05 | 2018-12-11 | Micron Technology, Inc. | Non-deterministic memory protocol |
KR102554416B1 (ko) * | 2016-08-16 | 2023-07-11 | 삼성전자주식회사 | 메모리 장치의 내부 상태 출력 장치 및 이를 적용하는 메모리 시스템 |
US20180059933A1 (en) * | 2016-08-26 | 2018-03-01 | Sandisk Technologies Llc | Electrically-Buffered NV-DIMM and Method for Use Therewith |
CN106843772A (zh) * | 2017-02-14 | 2017-06-13 | 郑州云海信息技术有限公司 | 一种基于一致性总线扩展非易失内存的系统及方法 |
US10542089B2 (en) * | 2017-03-10 | 2020-01-21 | Toshiba Memory Corporation | Large scale implementation of a plurality of open channel solid state drives |
-
2017
- 2017-06-23 KR KR1020217039534A patent/KR102443106B1/ko active Active
- 2017-06-23 CN CN201780043116.5A patent/CN109478168B/zh active Active
- 2017-06-23 WO PCT/CN2017/089774 patent/WO2018232736A1/zh unknown
- 2017-06-23 BR BR112019026942-8A patent/BR112019026942B1/pt active IP Right Grant
- 2017-06-23 EP EP22188013.1A patent/EP4152166A3/en active Pending
- 2017-06-23 EP EP17914958.8A patent/EP3480702B1/en active Active
- 2017-06-23 ES ES17914958T patent/ES2840423T3/es active Active
- 2017-06-23 EP EP20195180.3A patent/EP3822798B1/en active Active
- 2017-06-23 KR KR1020207001375A patent/KR102336232B1/ko active Active
- 2017-06-23 KR KR1020227031161A patent/KR102532173B1/ko active Active
- 2017-06-23 JP JP2019570989A patent/JP6900518B2/ja active Active
-
2019
- 2019-02-25 US US16/284,609 patent/US10732876B2/en active Active
-
2020
- 2020-07-13 US US16/927,066 patent/US11231864B2/en active Active
-
2021
- 2021-06-15 JP JP2021099325A patent/JP7162102B2/ja active Active
-
2022
- 2022-01-06 US US17/569,911 patent/US11681452B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
BR112019026942B1 (pt) | 2024-02-15 |
US11231864B2 (en) | 2022-01-25 |
EP4152166A2 (en) | 2023-03-22 |
KR102336232B1 (ko) | 2021-12-07 |
EP4152166A3 (en) | 2023-04-26 |
KR20210150611A (ko) | 2021-12-10 |
US20190196716A1 (en) | 2019-06-27 |
KR102532173B1 (ko) | 2023-05-16 |
EP3822798A2 (en) | 2021-05-19 |
JP7162102B2 (ja) | 2022-10-27 |
EP3480702B1 (en) | 2020-09-30 |
KR102443106B1 (ko) | 2022-09-14 |
CN109478168B (zh) | 2020-12-04 |
KR20200019706A (ko) | 2020-02-24 |
JP2020524859A (ja) | 2020-08-20 |
EP3822798A3 (en) | 2021-06-09 |
EP3480702A1 (en) | 2019-05-08 |
BR112019026942A2 (pt) | 2020-07-07 |
WO2018232736A1 (zh) | 2018-12-27 |
JP6900518B2 (ja) | 2021-07-07 |
US11681452B2 (en) | 2023-06-20 |
JP2021152933A (ja) | 2021-09-30 |
US10732876B2 (en) | 2020-08-04 |
US20220206686A1 (en) | 2022-06-30 |
EP3480702A4 (en) | 2019-09-04 |
CN109478168A (zh) | 2019-03-15 |
US20200393965A1 (en) | 2020-12-17 |
KR20220129100A (ko) | 2022-09-22 |
EP3822798B1 (en) | 2022-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2840423T3 (es) | Tecnología de acceso a la memoria y sistema informático | |
ES2971138T3 (es) | Escrituras persistentes para memoria no volátil | |
US9141538B2 (en) | Apparatus and method for generating descriptors to transfer data to and from non-volatile semiconductor memory of a storage drive | |
US20190278485A1 (en) | Adaptive transaction layer packet for latency balancing | |
US10740000B2 (en) | Adaptive transaction layer packet for latency balancing | |
WO2020000482A1 (zh) | 一种基于NVMe的数据读取方法、装置及系统 | |
US9116820B2 (en) | Dynamic central cache memory | |
US11720513B2 (en) | Semiconductor device and method for controlling plural chips | |
JP2005275538A (ja) | ダイレクトメモリアクセス制御装置および方法 | |
US20140229688A1 (en) | Storage control device, storage system, and storage control method | |
US10459847B1 (en) | Non-volatile memory device application programming interface | |
US10185684B2 (en) | System interconnect and operating method of system interconnect | |
US11537537B2 (en) | Semiconductor device and method | |
US20150074298A1 (en) | Command processing device and data storage device | |
US12026109B2 (en) | Operating method of transaction accelerator, operating method of computing device including transaction accelerator, and computing device including transaction accelerator | |
JP2023027970A (ja) | メモリシステム | |
JP2008234723A (ja) | メモリシステム | |
JP2006302128A (ja) | 情報処理装置 |