ES2691484T3 - Controlador, dispositivo de memoria flash, método para identificar la estabilidad de bloques de datos y método para almacenar datos en un dispositivo de memoria flash - Google Patents

Controlador, dispositivo de memoria flash, método para identificar la estabilidad de bloques de datos y método para almacenar datos en un dispositivo de memoria flash Download PDF

Info

Publication number
ES2691484T3
ES2691484T3 ES14902279.0T ES14902279T ES2691484T3 ES 2691484 T3 ES2691484 T3 ES 2691484T3 ES 14902279 T ES14902279 T ES 14902279T ES 2691484 T3 ES2691484 T3 ES 2691484T3
Authority
ES
Spain
Prior art keywords
data block
data
flash memory
reference counter
memory device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES14902279.0T
Other languages
English (en)
Inventor
Liming Wu
Bin Huang
Wan ZHAO
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Application granted granted Critical
Publication of ES2691484T3 publication Critical patent/ES2691484T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Un controlador (11) para ser incluido en un sistema de almacenamiento con una función de deduplicación de datos, donde el sistema de almacenamiento comprende un dispositivo (22) de memoria flash, y el dispositivo (22) de memoria flash almacena un primer bloque de datos; el controlador (11) comprende un procesador (118), una caché (memoria intermedia de acceso rápido) (120) y una interfaz (128) de comunicaciones; en donde la interfaz (128) de comunicaciones está configurada para comunicarse con el dispositivo (22) de memoria flash; la caché (120) almacena información sobre el primer bloque de datos, en donde la información sobre el primer bloque de datos comprende un contador de referencia del primer bloque de datos, o una duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash, o un contador de referencia del primer bloque de datos y una duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash, en donde el contador de referencia del primer bloque de datos es igual al número de veces que el controlador referencia una dirección física del primer bloque de datos, y en donde la información sobre el primer bloque de datos comprende, además, información de huella digital del primer bloque de datos, en donde la información de huella digital del primer bloque de datos se obtiene realizando un cálculo sobre el primer bloque de datos de acuerdo con una función hash (de aleatorización) predeterminada; y el procesador (118) está configurado para: recibir el primer bloque de datos; calcular la información de huella digital del primer bloque de datos de acuerdo con la función hash y el primer bloque de datos; determinar que el dispositivo de memoria flash no contiene un bloque de datos cuya información de huella digital sea igual que la información de huella digital del primer bloque de datos; enviar al dispositivo de memoria flash el primer bloque de datos, en donde el contador de referencia del primer bloque de datos es igual a un valor inicial; escribir el contador de referencia del primer bloque de datos en la caché; el procesador (118) está configurado, además, para leer la información sobre el primer bloque de datos desde la caché (120); determinar un nivel de estabilidad del primer bloque de datos en función del contador de referencia del primer bloque de datos, y una relación de mapeo entre un contador de referencia y un nivel de estabilidad de un bloque de datos; en donde el nivel de estabilidad se utiliza para indicar la estabilidad del bloque de datos; y enviar una dirección lógica del primer bloque de datos y el nivel de estabilidad del primer bloque de datos al dispositivo de memoria flash a través de la interfaz de comunicaciones.

Description

DESCRIPCIÓN
Controlador, dispositivo de memoria flash, método para identificar la estabilidad de bloques de datos y método para almacenar datos en un dispositivo de memoria flash
Campo técnico
5 La presente invención está relacionada con el campo de las tecnologías de almacenamiento y, en particular, con un controlador, un dispositivo de memoria flash, un método para identificar la estabilidad de bloques de datos y un método para almacenar datos en un dispositivo de memoria flash.
Antecedentes
Un dispositivo de memoria flash (flash memory) es una memoria no volátil cuyo medio de almacenamiento es una 10 flash NAND, y tiene como característica que los datos no desaparecen después de apagarse. Por lo tanto, el dispositivo de memoria flash es ampliamente utilizado como memoria externa o como memoria interna. Un dispositivo de memoria flash que utiliza la flash NAND como medio de almacenamiento puede ser un disco de estado sólido (nombre completo: solid state disk, SSD para abreviar), lo cual también se denomina unidad de estado sólido (nombre completo: solid state drive, SSD para abreviar), o puede ser otra memoria.
15 Un SSD incluye, generalmente, múltiples chips de memoria flash, donde cada chip de memoria flash incluye una pluralidad de bloques (block). La flash NAND dispone de la característica de poderse ser borrar. Por lo tanto, a diferencia de los datos en un disco duro mecánico normal, los datos almacenados en un bloque no se modifican directamente. Cuando es necesario modificar los datos, es necesario encontrar un bloque desocupado para almacenar los datos modificados. A continuación, los datos modificados se escriben en el bloque desocupado, y 20 la dirección lógica de los datos originales se mapean en los datos modificados. Los datos originales almacenados en el bloque original pasan a ser no válidos. Para un SSD, los datos válidos se refieren a los datos que se almacenan en un bloque y están mapeados a una dirección lógica. Los datos válidos se leerán. Los datos no válidos se refieren a datos que están almacenados en un bloque y no están mapeados a una dirección lógica. Los datos no válidos no se leerán.
25 A medida que aumentan los datos almacenados en un SSD, existen menos bloques desocupados disponibles. Por lo tanto, es necesario realizar una recolección de basura sobre el SSD para generar bloques desocupados. La recolección de basura se refiere a que los datos válidos en un bloque se mueven a un bloque desocupado, y el bloque original se borra, de modo que el bloque borrado se puede escribir con datos como bloque desocupado. En general, cuando se ejecuta la recolección de basura sobre el SSD, se puede encontrar un bloque que 30 almacene una gran cantidad de datos no válidos. Como el bloque que almacena una gran cantidad de datos no válidos almacena una pequeña cantidad de datos válidos, los datos que es necesario mover a un bloque desocupado son pocos. Como la vida del SSD está relacionada con la cantidad de borrados de una flash NAND, una menor cantidad de datos a mover durante la recolección de basura indica una menor amplificación de escrituras del SSD. Sin embargo, como las posibilidades de que se modifiquen los datos de diferentes bloques es 35 prácticamente igual, no existe una diferencia evidente en las cantidades de datos no válidos incluidos en los bloques.
El documento US2014/0013032 está relacionado con un método y un dispositivo para controlar la escritura de datos en una unidad de almacenamiento basándose en una memoria flash NAND.
El documento US2011/023144 divulga la agrupación de una pluralidad de unidades a borrar basándose en una 40 frecuencia de escritura reciente de los datos que se van a escribir en las unidades a borrar.
El documento US2011/264843 divulga la categorización de datos basándose en una característica de los datos.
Resumen
La invención se define mediante las reivindicaciones.
Un primer aspecto de la presente invención es un controlador, donde el controlador se encuentra en un sistema 45 de almacenamiento con una función de deduplicación de datos, el sistema de almacenamiento incluye un dispositivo de memoria flash, y el dispositivo de memoria flash almacena un primer bloque de datos; el controlador incluye un procesador, una caché (memoria intermedia de acceso rápido), y una interfaz de comunicaciones; donde: la interfaz de comunicaciones está configurada para comunicarse con el dispositivo de memoria flash; la caché almacena información sobre el primer bloque de datos, donde la información sobre el 50 primer bloque de datos incluye un contador de referencia del primer bloque de datos, o una duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash, o un contador de referencia del primer bloque de datos y una duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash, donde el contador de referencia del primer bloque de datos es
5
10
15
20
25
30
35
40
45
50
55
igual al número de veces que el controlador recibe el primer bloque de datos; y el procesador está configurado para leer la información sobre el primer bloque de datos desde la caché; determinar un nivel de estabilidad del primer bloque de datos de acuerdo con (1) el contador de referencia del primer bloque de datos, y una relación de mapeo entre un contador de referencia y un nivel de estabilidad de un bloque de datos; o (2) la duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash, y una relación de mapeo entre la duración del periodo de tiempo en el que un bloque de datos se almacena en un dispositivo de memoria flash y un nivel de estabilidad; o (3) el contador de referencia del primer bloque de datos, la duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash, y una relación de mapeo entre un contador de referencia de un bloque de datos, una duración del periodo de tiempo en el que el bloque de datos se almacena en el dispositivo de memoria flash, y un nivel de estabilidad, donde el nivel de estabilidad se utiliza para indicar la estabilidad de un bloque de datos; y enviar una dirección lógica del primer bloque de datos y el nivel de estabilidad del primer bloque de datos al dispositivo de memoria flash a través de la interfaz de comunicaciones.
En una primera forma de implementación del primer aspecto, la relación de mapeo entre un contador de referencia y un nivel de estabilidad de un bloque de datos incluye: una relación de mapeo entre un intervalo del contador de referencia y un nivel de estabilidad; y el procesador está configurado específicamente para determinar un primer intervalo del contador de referencia en función del contador de referencia del primer bloque de datos, donde el contador de referencia del primer bloque de datos se encuentra dentro del primer intervalo del contador de referencia; y determinar el nivel de estabilidad del primer bloque de datos en función del primer intervalo del contador de referencia y la relación de mapeo entre un intervalo del contador de referencia y un nivel de estabilidad.
En una segunda forma de implementación del primer aspecto, la relación de mapeo entre la duración del periodo de tiempo en el que el bloque de datos se almacena en el dispositivo de memoria flash y un nivel de estabilidad incluye: una relación de mapeo entre un intervalo de tiempo y un nivel de estabilidad; y el procesador está configurado específicamente para determinar un primer intervalo de tiempo en función de la duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash, donde la duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash se encuentra dentro del primer intervalo de tiempo; y determinar el nivel de estabilidad del primer bloque de datos en función del primer intervalo de tiempo y la relación de mapeo entre un intervalo de tiempo y un nivel de estabilidad.
En una tercera forma de implementación del primer aspecto, la relación de mapeo entre un contador de referencia de un bloque de datos, una duración del periodo de tiempo en el que el bloque de datos se almacena en el dispositivo de memoria flash y un nivel de estabilidad incluye: una relación de mapeo entre un intervalo del contador de referencia, un intervalo de tiempo, y un nivel de estabilidad; y el procesador está configurado específicamente para determinar un primer intervalo del contador de referencia en función del contador de referencia del primer bloque de datos, donde el contador de referencia del primer bloque de datos se encuentra dentro del primer intervalo del contador de referencia; determinar un primer intervalo de tiempo de acuerdo con la duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash, donde la duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash se encuentra dentro del primer intervalo de tiempo; y determinar el nivel de estabilidad del primer bloque de datos en función del primer intervalo de tiempo y la relación de mapeo entre un intervalo del contador de referencia, un intervalo de tiempo y un nivel de estabilidad.
Un segundo aspecto de la presente invención es un dispositivo de memoria flash que incluye un controlador principal y un chip de memoria flash, donde el chip de memoria flash incluye un bloque, y el controlador principal incluye un procesador, donde el procesador está configurado para obtener un nivel de estabilidad correspondiente a una dirección lógica objetivo, donde el nivel de estabilidad se utiliza para indicar la estabilidad de un bloque de datos; y mover un bloque de datos de la dirección lógica objetivo a un bloque correspondiente al nivel de estabilidad.
En una primera forma de implementación del segundo aspecto, el procesador está configurado, además, para buscar en el chip de memoria flash un bloque que almacene la mayor cantidad de datos no válidos, donde el bloque que almacena la mayor cantidad de datos no válidos incluye el bloque de datos correspondiente a la dirección lógica objetivo.
En una segunda forma de implementación del segundo aspecto, el procesador está configurado, además, para buscar en el chip de memoria flash el bloque que se mantiene sin borrar durante la mayor cantidad de tiempo, donde el bloque que se mantiene sin borrar durante la mayor cantidad de tiempo incluye el bloque de datos correspondiente a la dirección lógica objetivo.
En una tercera forma de implementación del segundo aspecto, el controlador principal incluye, además, una caché; y el procesador está configurado específicamente para obtener el nivel de estabilidad correspondiente a la
5
10
15
20
25
30
35
40
45
50
55
60
dirección lógica objetivo cuando el número de direcciones lógicas almacenadas en la caché alcanza un umbral predeterminado, donde el nivel de estabilidad correspondiente a las direcciones lógicas es el mismo que el nivel de estabilidad correspondiente a la dirección lógica objetivo.
Un tercer aspecto de la presente invención es un método para que un controlador identifique la estabilidad de un bloque de datos, donde el controlador se encuentra en un sistema de almacenamiento con una función de deduplicación de datos, el sistema de almacenamiento incluye un dispositivo de memoria flash, y el dispositivo de memoria flash almacena un primer bloque de datos; el controlador incluye un procesador, una caché y una interfaz de comunicaciones; donde: la interfaz de comunicaciones está configurada para comunicarse con el dispositivo de memoria flash; la caché almacena información sobre el primer bloque de datos, donde la información sobre el primer bloque de datos incluye un contador de referencia del primer bloque de datos, o una duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash, o un contador de referencia del primer bloque de datos y una duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash, donde el contador de referencia del primer bloque de datos es igual al número de veces que el controlador recibe el primer bloque de datos; el método es ejecutado por el procesador, y el método incluye: leer la información del primer bloque de datos desde la caché; determinar un nivel de estabilidad del primer bloque de datos de acuerdo con (1) el contador de referencia del primer bloque de datos, y una relación de mapeo entre un contador de referencia y un nivel de estabilidad de un bloque de datos; o (2) la duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash, y una relación de mapeo entre la duración del periodo de tiempo en el que un bloque de datos se almacena en un dispositivo de memoria flash y un nivel de estabilidad; o (3) el contador de referencia del primer bloque de datos, la duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash, y una relación de mapeo entre un contador de referencia de un bloque de datos, una duración del periodo de tiempo en el que el bloque de datos se almacena en el dispositivo de memoria flash, y un nivel de estabilidad, donde el nivel de estabilidad se utiliza para indicar la estabilidad del bloque de datos; y enviar una dirección lógica del primer bloque de datos y el nivel de estabilidad del primer bloque de datos al dispositivo de memoria flash a través de la interfaz de comunicaciones.
En una primera forma de implementación del tercer aspecto, la relación de mapeo entre un contador de referencia y un nivel de estabilidad de un bloque de datos incluye: una relación de mapeo entre un intervalo del contador de referencia y un nivel de estabilidad; y la determinación de un nivel de estabilidad del primer bloque de datos en función de (1) el contador de referencia del primer bloque de datos y una relación de mapeo entre un contador de referencia y un nivel de estabilidad de un bloque de datos incluye: determinar un primer intervalo del contador de referencia en función del contador de referencia del primer bloque de datos, donde el contador de referencia del primer bloque de datos se encuentra dentro del primer intervalo del contador de referencia; y determinar el nivel de estabilidad del primer bloque de datos en función del primer intervalo del contador de referencia y la relación de mapeo entre un intervalo del contador de referencia y un nivel de estabilidad.
En una segunda forma de implementación del tercer aspecto, la relación de mapeo entre la duración del periodo de tiempo en el que un bloque de datos se almacena en el dispositivo de memoria flash y un nivel de estabilidad incluye: una relación de mapeo entre un intervalo de tiempo y un nivel de estabilidad; y la determinación del nivel de estabilidad del primer bloque de datos en función de (2) la duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash, y una relación de mapeo entre la duración del periodo de tiempo en el que el bloque de datos se almacena en el dispositivo de memoria flash y un nivel de estabilidad incluye: determinar un primer intervalo de tiempo en función de la duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash, donde la duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash se encuentra dentro del primer intervalo de tiempo; y determinar el nivel de estabilidad del primer bloque de datos en función del primer intervalo de tiempo y la relación de mapeo entre un intervalo de tiempo y un nivel de estabilidad.
En una tercera forma de implementación del tercer aspecto, la relación de mapeo entre un contador de referencia de un bloque de datos, una duración del periodo de tiempo en el que el bloque de datos se almacena en el dispositivo de memoria flash y un nivel de estabilidad incluye: una relación de mapeo entre un intervalo del contador de referencia, un intervalo de tiempo, y un nivel de estabilidad; y la determinación de un nivel de estabilidad del primer bloque de datos de acuerdo con (3) el contador de referencia del primer bloque de datos, la duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash y una relación de mapeo entre un contador de referencia de un bloque de datos, la duración del periodo de tiempo en el que el bloque de datos se almacena en el dispositivo de memoria flash y un nivel de estabilidad incluye: determinar un primer intervalo del contador de referencia en función del contador de referencia del primer bloque de datos, donde el contador de referencia del primer bloque de datos se encuentra dentro del primer intervalo del contador de referencia; determinar un primer intervalo de tiempo de acuerdo con la duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash, donde la duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash se encuentra dentro del primer intervalo de tiempo; y determinar el nivel de estabilidad del primer bloque de
5
10
15
20
25
30
35
40
45
50
55
datos en función del primer intervalo del contador de referencia, el primer intervalo de tiempo y la relación de mapeo entre un intervalo del contador de referencia, un intervalo de tiempo y un nivel de estabilidad.
Un cuarto aspecto de la presente invención es un método para almacenar datos en un dispositivo de memoria flash, donde el dispositivo de memoria flash incluye un controlador principal y un chip de memoria flash, el chip de memoria flash incluye un bloque y el controlador principal incluye un procesador; el método es ejecutado por el procesador, y el método incluye: obtener un nivel de estabilidad correspondiente a una dirección lógica objetivo, donde el nivel de estabilidad se utiliza para indicar la estabilidad de un bloque de datos; y mover un bloque de datos de la dirección lógica objetivo en un bloque correspondiente al nivel de estabilidad de acuerdo con el nivel de estabilidad correspondiente a la dirección lógica objetivo.
En una primera forma de implementación del cuarto aspecto, el método incluye, además: buscar en el chip de memoria flash un bloque que almacene la mayor cantidad de datos no válidos, donde el bloque que almacena la mayor cantidad de datos no válidos incluye el bloque de datos correspondiente a la dirección lógica objetivo.
En una segunda forma de implementación del cuarto aspecto, el método incluye, además: buscar en el chip de memoria flash un bloque que se mantiene sin borrar durante la mayor cantidad de tiempo, donde el bloque que se mantiene sin borrar durante la mayor cantidad de tiempo incluye el bloque de datos correspondiente a la dirección lógica objetivo.
En una tercera forma de implementación del cuarto aspecto, el controlador principal incluye, además, una caché; y la obtención de un nivel de estabilidad correspondiente a una dirección lógica objetivo incluye: obtener el nivel de estabilidad correspondiente a la dirección lógica objetivo cuando el número de direcciones lógicas almacenadas en la caché alcanza un umbral predeterminado, donde el nivel de estabilidad correspondiente a las direcciones lógicas es el mismo que el nivel de estabilidad correspondiente a la dirección lógica objetivo.
Un quinto aspecto de la presente invención es un dispositivo para identificar la estabilidad de un bloque de datos, donde el dispositivo se encuentra en un controlador, el controlador se encuentra en un sistema de almacenamiento con una función de deduplicación de datos, el sistema de almacenamiento incluye un dispositivo de memoria flash, y el dispositivo de memoria flash almacena un primer bloque de datos; y el dispositivo incluye: un módulo de almacenamiento, configurado para almacenar información sobre el primer bloque de datos, donde la información sobre el primer bloque de datos incluye un contador de referencia del primer bloque de datos, o una duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash, o un contador de referencia del primer bloque de datos y una duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash, donde el contador de referencia del primer bloque de datos es igual al número de veces que el controlador recibe el primer bloque de datos; un módulo de lectura, configurado para leer, desde el módulo de almacenamiento, la información sobre el primer bloque de datos; un módulo de determinación, configurado para determinar un nivel de estabilidad del primer bloque de datos de acuerdo con (1) el contador de referencia del primer bloque de datos y una relación de mapeo entre un contador de referencia y un nivel de estabilidad de un bloque de datos; o (2) la duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash, y una relación de mapeo entre la duración del periodo de tiempo en el que un bloque de datos se almacena en un dispositivo de memoria flash y un nivel de estabilidad; o (3) el contador de referencia del primer bloque de datos, la duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash, y una relación de mapeo entre un contador de referencia de un bloque de datos, una duración del periodo de tiempo en el que el bloque de datos se almacena en un dispositivo de memoria flash y un nivel de estabilidad; y un módulo de envío, configurado para enviar al dispositivo de memoria flash una dirección lógica del primer bloque de datos y el nivel de estabilidad del primer bloque de datos.
En una primera forma de implementación del quinto aspecto, la relación de mapeo entre un contador de referencia y un nivel de estabilidad de un bloque de datos incluye: una relación de mapeo entre un intervalo del contador de referencia y un nivel de estabilidad; y el módulo de determinación está configurado específicamente para determinar un primer intervalo del contador de referencia en función del contador de referencia del primer bloque de datos, donde el contador de referencia del primer bloque de datos se encuentra dentro del primer intervalo del contador de referencia; y determinar el nivel de estabilidad del primer bloque de datos de acuerdo con el primer intervalo del contador de referencia y la relación de mapeo entre un intervalo del contador de referencia y un nivel de estabilidad.
En una segunda forma de implementación del quinto aspecto, la relación de mapeo entre la duración del periodo de tiempo en el que un bloque de datos se almacena en un dispositivo de memoria flash y un nivel de estabilidad incluye: una relación de mapeo entre un intervalo de tiempo y un nivel de estabilidad; y el módulo de determinación está configurado específicamente para determinar un primer intervalo de tiempo de acuerdo con la duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash, donde la duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash se encuentra dentro del primer intervalo de tiempo; y determinar el nivel de estabilidad del
5
10
15
20
25
30
35
40
45
50
55
primer bloque de datos de acuerdo con el primer intervalo de tiempo y la relación de mapeo entre un intervalo de tiempo y un nivel de estabilidad.
En una tercera forma de implementación del quinto aspecto, la relación de mapeo entre un contador de referencia de un bloque de datos, una duración del periodo de tiempo en el que el bloque de datos se almacena en un dispositivo de memoria flash y un nivel de estabilidad incluye: una relación de mapeo entre un intervalo del contador de referencia, un intervalo de tiempo y un nivel de estabilidad; y el módulo de determinación está configurado específicamente para determinar un primer intervalo del contador de referencia en función del contador de referencia del primer bloque de datos, donde el contador de referencia del primer bloque de datos se encuentra dentro del primer intervalo del contador de referencia; determinar un primer intervalo de tiempo de acuerdo con la duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash, donde la duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash se encuentra dentro del primer intervalo de tiempo; y determinar el nivel de estabilidad del primer bloque de datos de acuerdo con el primer intervalo del contador de referencia, el primer intervalo de tiempo y la relación de mapeo entre un intervalo del contador de referencia, un intervalo de tiempo y un nivel de estabilidad.
Un sexto aspecto de la presente invención es un dispositivo ara almacenar datos en un dispositivo de memoria flash, donde el dispositivo se encuentra en un controlador principal del dispositivo de memoria flash, y el dispositivo de memoria flash almacena un bloque; y el dispositivo incluye: un módulo de obtención, configurado para obtener un nivel de estabilidad correspondiente a una dirección lógica objetivo, donde el nivel de estabilidad se utiliza para indicar la estabilidad de un bloque de datos; y un módulo de migración, configurado para mover un bloque de datos de la dirección lógica objetivo a un bloque correspondiente al nivel de estabilidad de acuerdo con el nivel de estabilidad correspondiente a la dirección lógica objetivo.
En una primera forma de implementación del sexto aspecto, el módulo de obtención está configurado, además, para buscar en un chip de memoria flash un bloque que almacene una mayor cantidad de datos no válidos, donde el bloque que almacena la mayor cantidad de datos no válidos incluye el bloque de datos correspondiente a la dirección lógica objetivo.
En una segunda forma de implementación del sexto aspecto, el módulo de obtención está configurado, además, para buscar en un chip de memoria flash un bloque que se mantiene sin borrar durante la mayor cantidad de tiempo, donde el bloque que se mantiene sin borrar durante la mayor cantidad de tiempo incluye el bloque de datos correspondiente a la dirección lógica objetivo.
En una tercera forma de implementación del sexto aspecto, el dispositivo incluye, además, un módulo de almacenamiento, donde el módulo de almacenamiento almacena una dirección lógica, y el nivel de estabilidad correspondiente a la dirección lógica es el mismo que el nivel de estabilidad correspondiente a la dirección lógica objetivo; y el módulo de obtención está configurado específicamente para obtener el nivel de estabilidad correspondiente a la dirección lógica objetivo cuando el número de direcciones lógicas almacenadas en una caché alcanza un umbral predeterminado.
Un séptimo aspecto de la presente invención es un producto de programa de ordenador, que incluye un medio de almacenamiento legible por un ordenador que almacena código de programa, donde unas instrucciones incluidas en el código de programa se utilizan para ejecutar el método de acuerdo con uno cualquiera del tercer aspecto a la tercera forma de implementación del tercer aspecto.
Un octavo aspecto de la presente invención es un producto de programa de ordenador, que incluye un medio de almacenamiento legible por un ordenador que almacena código de programa, donde unas instrucciones incluidas en el código de programa se utilizan para ejecutar el método de acuerdo con uno cualquiera del cuarto aspecto a la tercera forma de implementación del cuarto aspecto.
El controlador proporcionado por la presente invención puede determinar un nivel de estabilidad de un primer bloque de datos de acuerdo con (1) un contador de referencia del primer bloque de datos, y una relación de mapeo entre un contador de referencia y un nivel de estabilidad de un bloque de datos; o (2) una duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash, y una relación de mapeo entre la duración del periodo de tiempo en el que un bloque de datos se almacena en un dispositivo de memoria flash y un nivel de estabilidad; o (3) un contador de referencia del primer bloque de datos, la duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash, y una relación de mapeo entre un contador de referencia de un bloque de datos, una duración del periodo de tiempo en el que el bloque de datos se almacena en el dispositivo de memoria flash, y un nivel de estabilidad, donde el nivel de estabilidad puede reflejar la estabilidad del bloque de datos; y enviar el nivel de estabilidad y una dirección lógica del bloque de datos al dispositivo de memoria flash, de modo que el dispositivo 22 de memoria flash almacena conjuntamente los bloques de datos con el mismo nivel de estabilidad.
5
10
15
20
25
30
35
40
45
50
El dispositivo de memoria flash proporcionado por la presente invención puede almacenar en un bloque los bloques de datos con el mismo nivel de estabilidad. Para un bloque que almacena un bloque de datos con un nivel de estabilidad alto, la probabilidad de que el bloque de datos almacenado en el bloque se convierta en no válido es baja. En general, el bloque no incluye datos no válidos o incluye únicamente una pequeña cantidad de datos no válidos; dicho bloque es un bloque con una alta utilización, y dicho bloque no se incluye cuando se lleva a cabo la recolección de basura sobre el dispositivo de memoria flash. Para un bloque que almacena un bloque de datos con un nivel de estabilidad bajo, la probabilidad de que el bloque de datos almacenado en le bloque se convierta en no válido es alta. Suponiendo que la mayor parte de los datos o una gran mayoría de los datos en un bloque se convierten todos en no válidos, en correspondencia, la cantidad de datos válidos incluidos en este bloque es pequeña, y la cantidad de datos que es necesario mover cuando se lleva a cabo la recolección de basura es pequeña, lo cual reduce la amplificación de escritura. Se debería observar que un efecto de lo anterior se ve principalmente reflejado en que se reducen los datos válidos a mover en recolecciones de basura posteriores. Se puede observar que, tanto el bloque que almacena un bloque de datos con un nivel de estabilidad alto como un bloque que almacena un bloque de datos con un nivel de estabilidad bajo pueden reducir la amplificación de escritura del dispositivo de memoria flash, prolongando por lo tanto de algún modo el tiempo de vida del dispositivo de memoria flash.
Breve descripción de los dibujos
Con el fin de describir con más claridad las soluciones técnicas de la presente invención, a continuación se introducen brevemente los dibujos adjuntos que describen los modos de realización preferidos de la invención o la técnica anterior. Evidentemente, los dibujos adjuntos en la siguiente descripción muestran únicamente algunos modos de realización de la presente invención.
La FIG. 1 es un diagrama esquemático de la estructura de un sistema de almacenamiento de acuerdo con un modo de realización de la presente invención;
la FIG. 2 es un diagrama esquemático de la estructura de un controlador de acuerdo con un modo de realización de la presente invención;
la FIG. 3A es un diagrama esquemático de la estructura de un medio de almacenamiento de un dispositivo de memoria flash de acuerdo con un modo de realización de la presente invención;
la FIG. 3B es un diagrama esquemático de la estructura de un controlador principal de un dispositivo de memoria flash de acuerdo con un modo de realización de la presente invención;
la FIG. 4 es un diagrama de flujo esquemático de un método para identificar la estabilidad de un bloque de datos de acuerdo con un modo de realización de la presente invención;
la FIG. 5 es un diagrama de flujo esquemático de un método para almacenar datos en un dispositivo de memoria flash de acuerdo con un modo de realización de la presente invención;
la FIG. 6A y 6B son un diagrama de flujo esquemático de otro método para almacenar datos en un dispositivo de memoria flash de acuerdo con un modo de realización de la presente invención;
la FIG. 7 es un diagrama esquemático de la estructura de un dispositivo para identificar la estabilidad de un bloque de datos de acuerdo con un modo de realización de la presente invención; y
la FIG. 8 es un diagrama esquemático de la estructura de un dispositivo para almacenar datos en un dispositivo de memoria flash de acuerdo con un modo de realización de la presente invención.
Descripción de los modos de realización
La presente invención proporciona un controlador, un dispositivo de memoria flash, un método para identificar la estabilidad de un bloque de datos y un método para almacenar datos en un dispositivo de memoria flash, que puede almacenar conjuntamente datos con un mismo nivel de estabilidad, de modo que la cantidad de datos válidos incluida en un bloque que es seleccionado cuando el dispositivo de memoria flash realiza una operación de recolección de basura posterior es lo más pequeña posible, reduciendo de este modo la amplificación de escritura del dispositivo de memoria flash.
Antes de describir los modos de realización de la presente invención, a continuación se describen en primer lugar los términos utilizados.
Un objeto de datos se refiere a un objeto que incluye datos reales, el cual puede ser un bloque de datos, o un archivo o datos en otra forma.
5
10
15
20
25
30
35
40
45
50
Un bloque de datos se refiere a una unidad de datos formada mediante división de un objeto de datos. Para facilitar la gestión, un objeto de datos se puede dividir en una pluralidad de bloques de datos. Los tamaños de todos los bloques de datos son los mismos.
Los metadatos de un bloque de datos se refieren a la información utilizada para describir el bloque de datos como, por ejemplo, una dirección lógica del bloque de datos, una dirección física del bloque de datos, una relación de mapeo entre la dirección lógica y la dirección física, y un instante de escritura del bloque de datos.
Los datos estables se refieren a datos con una baja probabilidad de ser modificados.
Una dirección lógica de bloque, también denominada dirección lógica (nombre completo: logical block address, LBA para abreviar), se refiere a una dirección de almacenamiento de un bloque de datos. La dirección no es una dirección física en la que se almacena el bloque de datos en un SSD, sino una dirección a la que se puede acceder desde el exterior.
Una dirección física de bloque, también denominada dirección física (nombre completo: physical block address, PBA para abreviar), se refiere a una dirección real en la que está almacenado el bloque de datos en un SSD.
Un contador de referencia (reference count o reference counting) de un bloque de datos se aplica a un sistema de almacenamiento con una función de deduplicación de datos, y se utiliza para indicar la cantidad de duplicaciones del bloque de datos en el sistema de almacenamiento. Para el sistema de almacenamiento con una función de deduplicación de datos, no es necesario almacenar múltiples veces un mismo bloque de datos en el sistema de almacenamiento. Por lo tanto, la cantidad de deduplicaciones del bloque de datos en el sistema de almacenamiento es igual a la cantidad de veces que el controlador recibe el bloque de datos y, en realidad, únicamente se almacena una copia. Además, el contador de referencia de un bloque de datos también puede indicar la cantidad de veces que es referenciada una dirección física del bloque de datos.
Los datos válidos en un SSD se refieren a un bloque de datos almacenado en un bloque del SSD que se mapea a una dirección lógica. Esto es, una dirección física de los datos válidos tiene una dirección lógica correspondiente.
Los datos no válidos en un SSD se refieren a un bloque de datos almacenado en un bloque del SSD y no están mapeados a una dirección lógica, esto es, una dirección física de los datos no válidos no tiene una dirección lógica correspondiente.
La FIG. 1 es un diagrama esquemático de la estructura de un sistema de almacenamiento de acuerdo con un modo de realización de la presente invención. El sistema de almacenamiento mostrado en la FIG. 1 incluye al menos un controlador 11 y múltiples dispositivos 22 de memoria flash. Un dispositivo 22 de memoria flash es un dispositivo de almacenamiento que utiliza una flash NAND como medio de almacenamiento. El dispositivo 22 de memoria flash puede incluir un disco de estado sólido (nombre completo: solid state disk, SSD para abreviar), que también se denomina unidad de estado sólido (nombre completo: solid state drive, SSD para abreviar), o puede incluir otra memoria. En este modo de realización, para describir el dispositivo 22 de memoria flash se utiliza como ejemplo un SSD.
La FIG. 1 es únicamente una descripción de ejemplo, y la forma específica de conexión en red no se encuentra limitada. Por ejemplo, se puede utilizar tanto una red en árbol como una red en anillo, siempre que el controlador 11 se pueda comunicar con los dispositivos 22 de memoria flash.
El controlador 11 puede ser cualquier dispositivo de ordenador como, por ejemplo, un servidor y un ordenador de sobremesa. El controlador 11 puede recibir un objeto de datos enviado por un servidor (no se muestra en la FIG. 1), y enviar a los dispositivos 22 de memoria flash una petición de escritura de datos. Los dispositivos 22 de memoria flash escriben los objetos de datos incluidos en la petición de escritura de datos en los chips de memoria flash de los dispositivos 22 de memoria flash.
Haciendo referencia a la FIG. 2, la FIG. 2 es un diagrama esquemático de la estructura de un controlador 11 de acuerdo con un modo de realización de la presente invención. Tal como se muestra en la FIG. 2, el controlador 11 incluye principalmente un procesador (processor) 118, una caché (cache) 120, una memoria (memory) 122, un bus de comunicaciones (bus para abreviar) 126, y una interfaz 128 de comunicaciones (communications interface). El procesador 118, la caché 120, la memoria 122 y la interfaz 128 de comunicaciones se comunican entre sí utilizando el bus de comunicaciones 126.
El procesador 118 puede ser una unidad central de procesamiento CPU, o un circuito integrado de aplicación específica ASIC (application-specific integrated circuit), o uno o más circuitos integrados configurados para implementar este modo de realización de la presente invención. En este modo de realización de la presente invención, el procesador 118 está configurado para recibir un objeto de datos desde un servidor, procesar el objeto de datos y, a continuación, enviar el objeto de datos procesado a un dispositivo 22 de memoria flash.
5
10
15
20
25
30
35
40
45
50
55
La interfaz 128 de comunicaciones está configurada para comunicarse con el servidor o el dispositivo 22 de memoria flash.
La memoria 122 está configurada para almacenar un programa 124. La memoria 122 puede ser, por ejemplo, una memoria RAM de alta velocidad, una memoria no volátil (non-volatile memory), o un almacenamiento de disco magnético. Se puede entender que la memoria 122 puede ser cualquier medio de almacenamiento de máquina no transitorio (non-transitory) que pueda almacenar código de programa como, por ejemplo, una memoria de acceso aleatorio (nombre completo: random-access memory, RAM para abreviar), un disco magnético, un disco duro, un disco óptico, un disco de estado sólido (nombre completo: solid state disk, SSD para abreviar), o una memoria no volátil.
La caché 120 (cache) está configurada para almacenar temporalmente el objeto de datos recibido desde el servidor o un objeto de datos leído del dispositivo 22 de memoria flash. Además, como la velocidad de lectura/escritura de datos de la caché es alta, para facilitar la lectura, también se puede almacenar en la caché alguna información utilizada frecuentemente como, por ejemplo, información sobre una dirección lógica y el instante de escritura de un bloque de datos. La caché 120 puede ser cualquier medio legible por una máquina no transitorio (non-transitory) que puede almacenar datos como, por ejemplo, una RAM, una memoria de tipo almacenamiento (nombre completo: storage-class memory, SCM para abreviar), una memoria no volátil (nombre completo: non-volatile memory, NVM para abreviar), una memoria flash (flash memory), o un disco de estado sólido (nombre completo: solid state disk, SSD para abreviar), lo cual no está limitado en la presente solicitud.
La caché 120 y la memoria 122 pueden estar integradas o pueden disponerse por separado, lo cual no está limitado por este modo de realización de la presente invención.
El programa 124 puede incluir código de programa, donde el código de programa incluye instrucciones de operación de un ordenador. Para un sistema de almacenamiento con una función de deduplicación de datos, el código de programa puede incluir un módulo de deduplicación de datos y un módulo de determinación de estabilidad. El módulo de deduplicación de datos está configurado para deduplicar datos antes de enviar al dispositivo 22 de memoria flash el objeto de datos recibido desde el servidor.
A continuación se describe brevemente la función de deduplicación de datos:
Después de que el controlador 11 haya recibido el objeto de datos enviado por el servidor, el objeto de datos se puede dividir en una pluralidad de bloques de datos de un mismo tamaño. Para facilitar la descripción, se utiliza un tamaño de 4KB para cada bloque de datos como ejemplo para la descripción. Se puede entender que el tamaño del bloque de datos no está limitado a 4KB. Para cada bloque de datos, el procesador 118 determina por separado si otro bloque de datos idéntico al bloque de datos está almacenado en cada uno de los dispositivos 22 de memoria flash. Si el otro bloque de datos idéntico al bloque de datos no está almacenado en cada uno de los dispositivos 22 de memoria flash, el procesador 118 escribe el bloque de datos en el dispositivo 22 de memoria flash y establece un contador de referencia del bloque de datos con un valor inicial (por ejemplo, un valor igual a 1). Si el otro bloque de datos idéntico al bloque de datos ya se encuentra almacenado en un dispositivo 22 de memoria flash, el procesador 118 aumenta en 1 el contador de referencia del bloque de datos. El bloque de datos almacenado no necesita escribirse de nuevo en el dispositivo 22 de memoria flash. Por lo tanto, un contador de referencia refleja de alguna forma la estabilidad de un bloque de datos. Un bloque de datos con un contador de referencia mayor tiene una mayor probabilidad de ser utilizado a largo plazo, ya que un contador de referencia mayor indica una menor probabilidad de ser borrado. En consecuencia, el bloque de datos tiene un nivel de estabilidad mayor.
Una práctica general para determinar si existe otro bloque de datos idéntico almacenado en cada uno de los dispositivos 22 de memoria flash es: almacenar previamente una información de huella digital de cada bloque de datos almacenado en el dispositivo 22 de memoria flash, donde la información de huella digital de cada bloque de datos se obtiene realizando un cálculo sobre cada bloque de datos de acuerdo con una función hash (aleatorización) predeterminada; a continuación, realizar un cálculo sobre un bloque de datos a almacenar de acuerdo con la función hash, con el fin de obtener la información de huella digital del bloque de datos a almacenar; y contrastar la información de huella digital con la información de huella digital de la información de huella digital almacenada previamente de cada bloque de datos. Si existe una misma información de huella digital, el dispositivo 22 de memoria flash ha almacenado un bloque de datos idéntico. Si no existe una misma información de huella digital, el bloque de datos a almacenar no se encuentra almacenado. La información de huella digital de cada bloque de datos puede estar almacenada en la caché 120, o puede estar almacenada en el dispositivo 22 de memoria flash. Además, también se pueden utilizar otra formas para determinar si existe un bloque de datos idéntico almacenado en cada uno de los dispositivos 22 de memoria flash, las cuales no se enumeran en la presente solicitud.
Además, para un bloque de datos que se escribe en el dispositivo 22 de memoria flash por primera vez, el controlador 11 puede almacenar una relación de mapeo entre la información de huella digital del bloque de datos
y una LBA del bloque de datos. Cuando el controlador 11 necesita enviar la LBA del bloque de datos al dispositivo 22 de memoria flash, la LBA se puede encontrar en función de la información de huella digital del bloque de datos y la relación de mapeo. Específicamente, al controlador 11 se le puede enviar la LBA del bloque de datos después de que el dispositivo 22 de memoria flash haya almacenado el bloque de datos, o el 5 controlador 11 puede asignar una LBA al bloque de datos. Como el dispositivo 22 de memoria flash almacena una relación de mapeo entre una LBA y una PBA, el dispositivo 22 de memoria flash puede escribir el bloque de datos en el espacio de almacenamiento correspondiente a la PBA en función de la LBA asignada.
Sin embargo, el contador de referencia puede ser un factor de referencia que determine la estabilidad del bloque de datos, y el otro factor de referencia que puede afectar la estabilidad del bloque de datos es la duración del 10 periodo de tiempo en el que el bloque de datos se almacena en el dispositivo 22 de memoria flash. La duración del periodo de tiempo en el que el bloque de datos se almacena en el dispositivo 22 de memoria flash puede ser igual a una diferencia obtenida por un instante de tiempo actual del sistema menos un instante de tiempo de escritura del bloque de datos en el dispositivo de memoria flash. El instante de tiempo de escritura del bloque de datos en el dispositivo de memoria flash se puede almacenar como parte de los metadatos del bloque de datos 15 en la caché 120 o el dispositivo 22 de memoria flash. Se puede entender que si la duración del periodo de tiempo en el que el bloque de datos se almacena en el dispositivo 22 de memoria flash es mayor, el bloque de datos es más estable; si la duración del periodo de tiempo en el que el bloque de datos se almacena en el dispositivo 22 de memoria flash es menor, el bloque de datos es más inestable. Se puede entender que el intervalo de tiempo también puede ser un valor que refleje una duración del periodo de tiempo en el que el bloque de datos se 20 almacena en el dispositivo 22 de memoria flash, y no ser estrictamente igual a la diferencia obtenida por el tiempo actual del sistema menos el instante de tiempo en el que el bloque de datos se escribe en el dispositivo de memoria flash.
Una función principal del módulo de determinación de la estabilidad es determinar la estabilidad del bloque de datos basándose en el contador de referencia, o basándose en la duración del periodo de tiempo en el que el 25 bloque de datos se almacena en el dispositivo 22 de memoria flash, o basándose en el contador de referencia y la duración del periodo de tiempo en el que el bloque de datos se almacena en el dispositivo 22 de memoria flash. Por lo tanto, se obtiene un nivel de estabilidad del bloque de datos. El nivel de estabilidad es un valor que refleja la estabilidad del bloque de datos. Un valor mayor indica una mayor estabilidad, y un valor menor indica una menor estabilidad. Alternativamente, el nivel de estabilidad también se puede definir del siguiente modo: un 30 valor menor indica una mayor estabilidad, y un valor mayor indica una menor estabilidad.
Después de que el módulo de determinación de la estabilidad haya obtenido el nivel de estabilidad del bloque de datos, el controlador 11 puede enviar al dispositivo 22 de memoria flash la LBA y el nivel de estabilidad del bloque de datos, de modo que el dispositivo 22 de memoria flash almacene conjuntamente los bloques de datos con un mismo nivel en uno o más bloques.
35 A continuación se describe una estructura y una función del dispositivo 22 de memoria flash.
Haciendo referencia a la FIG. 3A, la FIG. 3A es un diagrama esquemático de la estructura de un dispositivo 22 de memoria flash de acuerdo con un modo de realización de la presente invención. En este modo de realización, se utiliza como ejemplo un SSD para describir el dispositivo 22 de memoria flash.
Tal como se muestra en la FIG. 3A, el dispositivo 22 de memoria flash incluye un controlador principal 220 y un 40 medio de almacenamiento 221. El controlador principal 220 está configurado para recibir una petición de E/S u otro elemento de información enviado por un controlador 11 al dispositivo 22 de memoria flash. Por ejemplo, la información puede ser una dirección lógica y un nivel de estabilidad de un bloque de datos, y el controlador principal 220 está configurado, además, para ejecutar la petición de E/S recibida, por ejemplo, escribir en un medio de almacenamiento 221 un bloque de datos incluido en la petición de E/S, o leer un bloque de datos desde 45 un medio de almacenamiento 221 y devolver el bloque de datos al controlador 11. El controlador principal 220 en la presente solicitud es el controlador principal del SSD.
El medio de almacenamiento 221 incluye, en general, una pluralidad de chips flash (flash). Cada chip de memoria flash incluye una pluralidad de bloques (block). Cada bloque incluye una pluralidad de páginas (page). El controlador principal 220 escribe, en unidades de página, un bloque de datos en un bloque.
50 Una flash NAND tiene una característica de borrado. Por lo tanto, a diferencia de los datos en un disco duro mecánico común, los datos almacenados en un bloque no se modifican directamente. Cuando los datos de un bloque necesitan ser modificados, es necesario encontrar un bloque desocupado, y los datos modificados se escriben en el bloque desocupado. A continuación, los datos en el bloque original se convierten en no válidos. A medida que aumentan los datos almacenados en el SSD, existen menos bloques desocupados disponibles. Por 55 lo tanto, es necesario realizar una recolección de basura en el SSD para generar un bloque desocupado disponible. En este modo de realización, cuando se realiza la recolección de basura, los bloques que almacenan una gran cantidad de datos no válidos se seleccionan, en general, en secuencia para su recolección. Una
5
10
15
20
25
30
35
40
45
50
55
condición de activación de la recolección de basura es que la cantidad de bloques desocupados incluidos en el chip de memoria flash sea menor que un primer umbral. El primer umbral puede ser un entero mayor que 10 y menor que 100.
Además, es necesario realizar una inspección periódica en el dispositivo 22 de memoria flash. La inspección se refiere a una operación para mover periódicamente los datos almacenados en el chip de memoria flash para prevenir una pérdida de datos debido a que un bloque se mantenga sin borrar durante mucho tiempo. Para la flash NAND, se puede retener una capacidad para mantener datos únicamente durante un periodo de tiempo; por lo tanto, los datos almacenados en la flash NAND se tienen que mover periódicamente a otro bloque. En este modo de realización, cuando se realiza una inspección, en general se seleccionan en secuencia los bloques que se mantienen sin borrar durante la mayor cantidad de tiempo, los datos válidos en el bloque se mueven a un bloque desocupado y, a continuación, se elimina el bloque original, donde la condición de activación de la inspección puede ser que se inicia un periodo actual de inspección.
El tiempo de vida de un SSD está relacionado con el número de veces de borrado de una flash NAND. Por lo tanto, la reducción tanto como sea posible de las veces que se mueven los datos dentro del SSD es beneficiosa para reducir la amplificación de escritura, aumentando de este modo el tiempo de vida del SSD. En este modo de realización, el movimiento de datos dentro del SSD se refiere principalmente a mover datos válidos de un bloque cuando se realiza la recolección de basura o una inspección. Se puede entender que, para un bloque en el que se va a realizar la recolección de basura, una menor cantidad de datos válidos incluidos en el bloque indica una menor cantidad de datos a mover. Por lo tanto, la presente invención almacena principalmente bloques de datos con un mismo nivel de estabilidad juntos en el SSD de acuerdo con un nivel de estabilidad de cada bloque de datos, de modo que los datos válidos que se vayan a mover durante una operación de recolección de basura subsiguiente son tan pocos como sea posible.
La FIG. 3B es un diagrama esquemático de la estructura de un controlador principal 220 de un dispositivo 22 de memoria flash descrito en un modo de realización de la presente invención.
El controlador 220 del SSD incluye, principalmente, un procesador (processor) 218, una caché (cache) 230, un bus de comunicaciones (bus para abreviar) 226, y una interfaz 228 de comunicaciones (communications Interface). El procesador 218, la caché 230, y la interfaz 228 de comunicaciones se comunican entre sí utilizando el bus de comunicaciones 226.
El procesador 218 puede ser una unidad central de procesamiento, CPU, o un circuito integrado de aplicación específica ASIC (application-specific integrated circuit), o uno o más circuitos integrados configurados para implementar este modo de realización de la presente invención. En este modo de realización de la presente invención, el procesador 218 se puede configurar para recibir, desde un controlador 11, una petición de E/S, o información como, por ejemplo, una dirección lógica de un bloque de datos y un nivel de estabilidad del bloque de datos. Además, el procesador 218 también está configurado para ejecutar la petición de E/S.
La interfaz 228 de comunicaciones está configurada para comunicarse con el controlador 11 y un medio de almacenamiento 221.
La caché 230 (cache) está configurada para almacenar temporalmente la información recibida desde el controlador 11 como, por ejemplo, la dirección lógica del bloque de datos y el nivel de estabilidad del bloque de datos. La caché 230 puede ser cualquier medio legible por una máquina no transitorio (non-transitory) o transitorio (transitory) que puede almacenar datos como, por ejemplo, una RAM, una SCM, y una NVM, lo cual no está limitado en la presente solicitud. Además, en algunos escenarios de aplicación, la caché 230 también se puede disponer fuera del controlador principal 220.
En este modo de realización, en la caché 230 se puede almacenar una tabla de mapeo y se utiliza para almacenar una relación de mapeo entre una LBA de un bloque de datos y un nivel de estabilidad del bloque de datos que se ha recibido del controlador 11. En general, la caché 230 almacena, además, una tabla de mapeo que registra una relación de mapeo entre una LBA y una PBA. En este modo de realización de la presente invención, en la tabla de mapeo se puede añadir una relación de mapeo entre una LBA y un nivel de estabilidad.
Alternativamente, en la caché 230 se pueden almacenar múltiples tablas, donde cada tabla se corresponde con un nivel de estabilidad, y la tabla puede almacenar direcciones lógicas de múltiples bloques de datos correspondientes al nivel de estabilidad.
Alternativamente, la caché 230 puede no almacenar una tabla de mapeo. En su lugar, en la caché 230 se almacenan conjuntamente las direcciones lógicas de bloques de datos con el mismo nivel de estabilidad en una parte del espacio de caché. Por ejemplo, el controlador 11 puede enviar por adelantado, información de división del área de caché al dispositivo 22 de memoria flash, donde la información de división del área de caché incluye diferentes niveles de estabilidad (por ejemplo, 10 niveles de estabilidad desde 1 hasta 10). Después de haber recibido la información de división del área de caché, el dispositivo 22 de memoria flash divide la caché 230 en 10
5
10
15
20
25
30
35
40
45
áreas de caché de acuerdo con los 10 niveles de estabilidad, donde cada área de caché se corresponde con un nivel de estabilidad y se utiliza en especial para almacenar una dirección lógica de un bloque de datos correspondiente al nivel de estabilidad. Alternativamente, el controlador 11 puede no enviar con antelación al dispositivo 22 de memoria flash información de división del área de caché, sino que envía directamente al dispositivo 22 de memoria flash una dirección lógica de un bloque de datos y un nivel de estabilidad del bloque de datos. El dispositivo 22 de memoria flash delimita un segmento del área de caché de la caché 230 en función del nivel de estabilidad del bloque de datos, y mapea el área de caché al nivel de estabilidad (lo que significa almacenar una relación de mapeo entre el área de caché y el nivel de estabilidad). A continuación, el área de caché se puede utilizar especialmente para almacenar la dirección lógica del bloque de datos correspondiente al nivel de estabilidad. Ambas formas anteriores se pueden utilizar para almacenar conjuntamente las direcciones lógicas de los bloques de datos con el mismo nivel de estabilidad en una parte del espacio de caché de la caché 230.
A continuación se describe un método para identificar la estabilidad de un bloque de datos de acuerdo con un modo de realización de la presente invención, donde el método describe, desde la perspectiva de un controlador 11, un proceso para obtener un nivel de estabilidad de un bloque de datos de acuerdo con un contador de referencia del bloque de datos, una duración de tiempo, o un contador de referencia y una duración de tiempo, y enviar el nivel de estabilidad a un dispositivo 22 de memoria flash. Haciendo referencia a la FIG. 4, la FIG. 4 es un diagrama de flujo esquemático del método para identificar la estabilidad de un bloque de datos, donde el método se puede aplicar al sistema de almacenamiento que se muestra en la FIG. 1 y el controlador 11 que se muestra en la FIG. 2, y es ejecutado por el procesador 118 en el controlador 11. El método incluye:
Paso S201: Leer información sobre un primer bloque de datos desde una caché 120, donde la información sobre el primer bloque de datos incluye un contador de referencia del primer bloque de datos, o una duración del periodo de tiempo en el que el primer bloque de datos se almacena en un dispositivo de memoria flash, o un contador de referencia del primer bloque de datos y la duración del periodo de tiempo en el que el primer bloque de datos se almacena en un dispositivo de memoria flash, donde el contador de referencia del primer bloque de datos es igual al número de veces que el controlador recibe el primer bloque de datos.
Se debería observar que en este modo de realización, el primer bloque de datos es uno de múltiples bloques de datos almacenados en el dispositivo 22 de memoria flash, y el primer bloque de datos se utiliza en la presente solicitud como un ejemplo para la descripción. Además, el primer bloque de datos en este modo de realización se refiere a un bloque de datos que incluye datos válidos. Un contador de referencia de un bloque de datos que incluye datos no válidos es 0. El controlador 11 borra de la caché 120 la información sobre el bloque de datos cuyo contador de referencia es 0.
Además, se puede establecer una condición de activación del paso S201 para que: los tamaños de todos los bloques de datos recibidos por el controlador 11 exceden un umbral de volumen predeterminado, o se cumple un intervalo de tiempo predeterminado, o se cumple una de las dos condiciones de activación anteriores. El umbral de volumen predeterminado puede ser igual a un volumen disponible permitido por el sistema de almacenamiento que se muestra en la FIG. 1 a un usuario, o un múltiplo entero del volumen disponible.
Paso S202: Determinar el nivel de estabilidad del primer bloque de datos de acuerdo con la información sobre el primer bloque de datos.
El controlador 11 puede establecer previamente el número de niveles de estabilidad.
Opcionalmente, una forma de implementación es: como cada bloque de datos almacenado en el dispositivo 22 de memoria flash tiene un contador de referencia, estos contadores de referencia se pueden dividir en múltiples intervalos de contador de referencia, donde cada intervalo del contador de referencia se corresponde con un nivel de estabilidad. Por ejemplo, suponiendo que se establecen previamente 10 niveles de estabilidad, en la Tabla 1 se puede ver una relación de mapeo entre un intervalo del contador de referencia y un nivel de estabilidad.
Tabla 1
Contador de referencia
Nivel de estabilidad
+¥ > Contador de referencia > 35
1
35 > Contador de referencia > 30
2
30 > Contador de referencia > 25
3
25 > Contador de referencia > 20
4
20 > Contador de referencia > 15
5
5
10
15
20
25
30
Contador de referencia
Nivel de estabilidad
20 > Contador de referencia > 15
6
15 > Contador de referencia > 10
7
10 > Contador de referencia > 5
8
5 > Contador de referencia > 2
9
Contador de referencia = 1
10
A continuación, en correspondencia, la determinación de un nivel de estabilidad del primer bloque de datos de acuerdo con la información sobre el primer bloque de datos puede consistir específicamente en: determinar un primer intervalo del contador de referencia en función del contador de referencia del primer bloque de datos, donde el contador de referencia del primer bloque de datos se encuentra dentro del primer intervalo del contador de referencia; y determinar el nivel de estabilidad del primer bloque de datos de acuerdo con el primer intervalo del contador de referencia y la relación de mapeo que se muestra en la Tabla 1. Por ejemplo, si el contador de referencia del primer bloque de datos es 3, el nivel de estabilidad correspondiente al primer bloque de datos es 9.
Opcionalmente, otra forma de implementación es: dividir en múltiples intervalos de tiempo la duración del periodo de tiempo el que múltiples bloques de datos se almacenan en un dispositivo de memoria flash, donde cada intervalo de tiempo se corresponde a un nivel de estabilidad. Por ejemplo, suponiendo que se establecen previamente 10 niveles de estabilidad, en la Tabla 2 se muestra una relación de mapeo entre un intervalo de tiempo y un nivel de estabilidad.
Tabla 2
Duración del periodo de tiempo en el que un bloque de datos se almacena en un dispositivo de memoria flash (Unidad: día)
Nivel de estabilidad
+M > Duración de tiempo > 35
1
35 > Duración de tiempo > 30
2
30 > Duración de tiempo > 25
3
25 > Duración de tiempo > 20
4
20 > Duración de tiempo > 15
5
20 > Duración de tiempo > 15
6
15 > Duración de tiempo > 10
7
10 > Duración de tiempo > 5
8
5 > Duración de tiempo > 2
9
Duración de tiempo = 1
10
A continuación, en correspondencia, la determinación de un nivel de estabilidad del primer bloque de datos de acuerdo con la información sobre el primer bloque de datos puede ser específicamente: determinar un primer intervalo de tiempo de acuerdo con la duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash, donde la duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash se encuentra dentro del primer intervalo de tiempo; y determinar el nivel de estabilidad del primer bloque de datos de acuerdo con el primer intervalo de tiempo y la relación de mapeo que se muestra en la Tabla 2. Por ejemplo, si la duración del periodo de tiempo en el que el primer bloque de datos se almacena en la memoria flash es 12, el nivel de estabilidad correspondiente al primer bloque de datos es 7.
Opcionalmente, otra forma de implementación adicional consiste en: dividir las múltiples duraciones de tiempo en al menos dos intervalos de tiempo, y dividir los múltiples contadores de referencia en al menos dos intervalos de contador de referencia, donde existe una relación de mapeo entre un intervalo de tiempo, un intervalo del contador de referencia y un nivel de estabilidad.
Por ejemplo, si una duración de tiempo es mayor que un umbral T se puede utilizar como un estándar de determinación dividir la duración de tiempo en al menos dos intervalos de tiempo, donde un intervalo de tiempo
es (0, T), y el otro intervalo de tiempo es [T, +M). Un nivel de estabilidad de un bloque de datos cuya duración de tiempo se encuentra dentro del intervalo [T, +M) es mayor que un nivel de estabilidad de un bloque de datos cuya duración de tiempo se encuentra dentro del intervalo (0, T). En cada intervalo de tiempo, un contador de referencia se divide, además, en múltiples intervalos de contador de referencia, y los niveles de estabilidad de 5 bloques de datos con un mismo intervalo del contador de referencia son iguales. Para bloques de datos que pertenecen a diferentes intervalos de contador de referencia, un nivel de estabilidad de un bloque de datos cuyo contador de referencia es más grande, es mayor que un nivel de estabilidad de un bloque de datos cuyo contador de referencia es menor. Suponiendo que previamente se establecen 10 niveles de estabilidad, en la Tabla 3 se muestra una posible relación de mapeo entre un intervalo de tiempo, un intervalo del contador de referencia y un 10 nivel de estabilidad.
Tabla 3
Duración del periodo de tiempo en el que un bloque de datos se almacena en un dispositivo de memoria flash
Contador de referencia Nivel de estabilidad
> T
+M > Contador de referencia > 20 1
> T
20 > Contador de referencia > 10 2
> T
10 > Contador de referencia > 5 3
> T
5 > Contador de referencia > 2 4
> T
Contador de referencia = 1 5
< T
+M > Contador de referencia > 20 6
< T
20 > Contador de referencia > 10 7
<T
10 > Contador de referencia > 5 8
< T
5 > Contador de referencia > 2 9
< T
Contador de referencia = 1 10
Alternativamente, múltiples contadores de referencia se pueden agrupar en dos intervalos de contador de referencia, donde un intervalo del contador de referencia es (0, 10), y el otro intervalo del contador de referencia 15 es [10, +M). Un nivel de estabilidad de un bloque de datos cuyo contador de referencia está dentro del intervalo [10, +M) es mayor que un nivel de estabilidad de un bloque de datos cuyo contador de referencia está dentro del intervalo (0, 10). En cada intervalo del contador de referencia, múltiples duraciones de tiempo se dividen, además, en múltiples intervalos de tiempo, y los niveles de estabilidad de bloques de datos dentro de un mismo intervalo de tiempo son iguales. Para bloques de datos dentro de diferentes intervalos de tiempo, un nivel de 20 estabilidad de un bloque de datos cuya duración de tiempo es más grande, es mayor que un nivel de estabilidad de un bloque de datos cuya duración de tiempo es más pequeña. Suponiendo que previamente se establecen 10 niveles de estabilidad, en la Tabla 4 se muestra una posible relación de mapeo entre un intervalo de tiempo, un intervalo del contador de referencia y un nivel de estabilidad.
Tabla 4
Contador de referencia
Duración del periodo de tiempo en el que un bloque de datos se almacena en un dispositivo de memoria flash (Unidad: día) Nivel de estabilidad
> 10
+M > Duración de tiempo > 20 1
> 10
20 > Duración de tiempo > 10 2
> 10
10 > Duración de tiempo > 5 3
> 10
5 > Duración de tiempo > 2 4
> 10
Duración de tiempo = 1 5
< 10
+M > Duración de tiempo > 20 6
< 10
20 > Duración de tiempo > 10 7
< 10
10 > Duración de tiempo > 5 8
5
10
15
20
25
30
35
40
45
50
Contador de referencia
Duración del periodo de tiempo en el que un bloque de datos se almacena en un dispositivo de memoria flash (Unidad: día) Nivel de estabilidad
< 10
5 > Duración de tiempo > 2 9
< 10
Duración de tiempo = 1 10
En correspondencia, la determinación de un nivel de estabilidad del primer bloque de datos de acuerdo con la información sobre el primer bloque de datos puede consistir específicamente en: determinar un primer intervalo del contador de referencia en función del contador de referencia del primer bloque de datos, donde el contador de referencia del primer bloque de datos se encuentra dentro del primer intervalo del contador de referencia; determinar un primer intervalo de tiempo de acuerdo con la duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash, donde la duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash se encuentra dentro del primer intervalo de tiempo; y determinar el nivel de estabilidad del primer bloque de datos de acuerdo con el primer intervalo de tiempo y la relación de mapeo entre un intervalo del contador de referencia, una duración de tiempo y un nivel de estabilidad. Se puede entender que, independientemente de si se utiliza la relación de mapeo que se muestra en la Tabla 3 o la relación de mapeo que se muestra en la Tabla 4, siempre y cuando se determine la duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash y el contador de referencia, también se puede determinar el nivel de estabilidad del primer bloque de datos.
Opcionalmente, en las dos formas de implementación anteriores, después de que el controlador 11 haya procesado cada bloque de datos almacenado en la caché 120, la tarea actual se completa y, cuando cada uno de los bloques de datos se almacena en un dispositivo de memoria flash, se puede sustraer un valor fijo a una duración del periodo de tiempo, de modo que cuando se inicia una nueva tarea, la duración de tiempo puede aumentar progresivamente desde un número cardinal pequeño.
Paso S203: Enviar al dispositivo 22 de memoria flash una dirección lógica del primer bloque de datos y el nivel de estabilidad del primer bloque de datos.
Específicamente, el controlador 11 puede enviar al dispositivo 22 de memoria flash de forma independiente la dirección lógica y el nivel de estabilidad del primer bloque de datos, o puede enviar al dispositivo 22 de memoria flash la dirección lógica y el nivel de estabilidad del primer bloque de datos junto con una dirección lógica y un nivel de estabilidad de otro bloque de datos. Por ejemplo, la dirección lógica y el nivel de estabilidad se pueden incluir en un comando definido por el usuario y, a continuación, el comando se envía al dispositivo 22 de memoria flash.
En este modo de realización, un controlador 11 puede determinar un nivel de estabilidad de un primer bloque de datos de acuerdo con (1) un contador de referencia del primer bloque de datos y una relación de mapeo entre un contador de referencia y un nivel de estabilidad de un bloque de datos; o (2) una duración del periodo de tiempo en el que el primer bloque de datos se almacena en un dispositivo de memoria flash y una relación de mapeo entre la duración del periodo de tiempo en el que un bloque de datos se almacena en un dispositivo de memoria flash y un nivel de estabilidad; o (3) un contador de referencia del primer bloque de datos, una duración del periodo de tiempo en el que el primer bloque de datos se almacena en un dispositivo de memoria flash y una relación de mapeo entre un contador de referencia de un bloque de datos, una duración del periodo de tiempo en el que el bloque de datos se almacena en un dispositivo de memoria flash y un nivel de estabilidad, donde el nivel de estabilidad puede reflejar la estabilidad del bloque de datos; y enviar el nivel de estabilidad y la dirección lógica del bloque de datos al dispositivo 22 de memoria flash, de modo que el dispositivo 22 de memoria flash almacena juntos bloques de datos con el mismo nivel de estabilidad.
A continuación, se describe un método para almacenar datos en un dispositivo de memoria flash de acuerdo con un modo de realización de la presente invención, donde el método describe, desde la perspectiva de un dispositivo 22 de memoria flash, un proceso para almacenar conjuntamente bloques de datos con un mismo nivel de estabilidad. Haciendo referencia a la FIG. 5, la FIG. 5 es un diagrama de flujo esquemático del método para almacenar datos en un dispositivo de memoria flash, donde el método se puede aplicar al sistema de almacenamiento que se muestra en la FIG. 1 y el dispositivo 22 de memoria flash que se muestra en la FIG. 3A y la FIG. 3B, y es ejecutado por el procesador 218 en el dispositivo 22 de memoria flash. El método incluye:
Paso S301: Obtener un nivel de estabilidad correspondiente a una dirección lógica objetivo, donde el nivel de estabilidad se utiliza para indicar la estabilidad de un bloque de datos.
Específicamente, antes del paso S301, el dispositivo 22 de memoria flash recibe múltiples direcciones lógicas enviadas por un controlador 11 y los niveles de estabilidad correspondientes a las direcciones lógicas, y puede almacenar en una caché 230 las múltiples direcciones lógicas y los niveles de estabilidad correspondientes a las direcciones lógicas. La dirección lógica objetivo es una de las múltiples direcciones lógicas almacenadas en la
15
5
10
15
20
25
30
35
40
45
50
55
caché 230. Cuando se activa una tarea de movimiento de datos, se puede obtener de la caché 230 el nivel de estabilidad correspondiente a la dirección lógica objetivo.
Paso S302: Mover un bloque de datos de la dirección lógica objetivo a un bloque correspondiente al nivel de estabilidad de acuerdo con el nivel de estabilidad correspondiente a la dirección lógica objetivo.
En este modo de realización, se puede establecer una relación de mapeo entre un bloque en un chip de memoria flash y un nivel de estabilidad, con el fin de mover a un mismo bloque bloques de datos con un mismo nivel de estabilidad. De acuerdo con esta relación de mapeo, el bloque de datos correspondiente a la dirección lógica objetivo se puede leer desde un bloque original y se puede escribir en un bloque correspondiente al nivel de estabilidad correspondiente al bloque de datos objetivo. La relación de mapeo entre un bloque en el chip de memoria flash y un nivel de estabilidad puede estar preestablecida, o puede ser una relación de mapeo registrada entre el nivel de estabilidad y el bloque después de haber escrito por primera vez en un bloque el bloque de datos o múltiples bloques de datos con el mismo nivel de estabilidad.
El que el bloque de datos correspondiente a la dirección lógica objetivo se lea desde el bloque original puede consistir específicamente en: en general, la caché 230 o el chip de memoria flash del dispositivo 22 de memoria flash almacenan una tabla de mapeo, donde la tabla de mapeo se utiliza para almacenar una relación de mapeo entre una dirección lógica y una dirección física de cada bloque de datos, de modo que en función de las direcciones lógicas recibidas en el paso S301 y la tabla de mapeo, el bloque de datos se puede leer desde el espacio de almacenamiento en el que se encuentra la dirección física correspondiente.
Los bloques de datos con el mismo nivel de estabilidad se pueden almacenar en un bloque de la forma proporcionada en este modo de realización. Para un bloque que almacena un bloque de datos con un nivel de estabilidad alto, la probabilidad de que el bloque de datos almacenado en el bloque se convierta en no válido es baja. En general, el bloque no incluye datos no válidos o incluye únicamente una pequeña cantidad de datos no válidos. Por lo tanto, el bloque tiene una utilización alta y no se incluye cuando se realiza la recolección de basura sobre el dispositivo 22 de memoria flash. Para un bloque que almacena un bloque de datos con un nivel de estabilidad bajo, la probabilidad de que el bloque de datos almacenado en el bloque se convierta en no válido es alta. En el caso de que la mayoría de los datos o una gran mayoría en un bloque se convierta en no válido, cuando se realiza la recolección de basura la cantidad de datos válidos que es necesario mover en este bloque es pequeña. Esto reducirá la amplificación de escritura. Se debería observar que un efecto de este modo de realización se ve reflejado principalmente en que se reducen los datos válidos a mover en la subsiguiente recolección de basura. Se puede observar que, tanto un bloque que almacena un bloque de datos con un nivel de estabilidad alto como un bloque que almacena un bloque de datos con un nivel de estabilidad bajo pueden reducir la amplificación de escritura del dispositivo 22 de memoria flash, prolongando por lo tanto de algún modo el tiempo de vida del dispositivo 22 de memoria flash.
Además, una forma de implementación de ejemplo es: el paso S301 y el paso S302 anteriores se combinan con una operación de recolección de basura. Cuando el dispositivo 22 de memoria flash tiene que realizar una recolección de basura, la recolección de basura se realiza de la forma descrita en el paso S301 y el paso S302. Específicamente, cuando la cantidad de bloques desocupados incluidos en el chip de memoria flash es menor que un primer umbral, los bloques que almacenan la cantidad más grande de datos no válidos se encuentran en secuencia en el chip de memoria flash. A continuación, a partir de dichos bloques se obtiene una dirección lógica de un bloque de datos a mover. Además, se obtiene un nivel de estabilidad correspondiente a la dirección lógica buscando la relación de mapeo entre la dirección lógica y el nivel de estabilidad (con referencia a la forma de implementación en la FIG. 5, la dirección lógica es la dirección lógica objetivo). A continuación, el bloque de datos a mover correspondiente a la dirección lógica se escribe en el bloque correspondiente.
Otra forma de implementación de ejemplo es: el paso S301 y el paso S302 anteriores se combinan con una operación de inspección. Cuando el dispositivo 22 de memoria flash necesita realizar una inspección, la inspección se realiza en la forma descrita en el paso S301 y el paso S302. Específicamente, cuando comienza un periodo de inspección predeterminado, en el chip de memoria flash se encuentran los bloques en secuencia que llevan más tiempo sin borrar. A continuación, se obtiene la dirección lógica de un bloque de datos a mover de estos bloques. Además, se obtiene un nivel de estabilidad correspondiente a la dirección lógica buscando la relación de mapeo entre la dirección lógica y el nivel de estabilidad (con referencia a la forma de implementación de la FIG. 5, la dirección lógica es la dirección lógica objetivo). A continuación, en un bloque correspondiente se escribe el bloque de datos a mover correspondiente a la dirección lógica.
Una persona experimentada en la técnica puede entender que independientemente de si se realiza una recolección de basura o una inspección, únicamente es necesario mover los datos válidos, mientras que no es necesario mover los datos no válidos porque los datos no válidos no se pueden volver a leer. Además, todos los datos no válidos se pueden borrar en unidades de bloque después de haber movido completamente los datos válidos. En este modo de realización, como las direcciones lógicas que envía el controlador 11 y que recibe el dispositivo 22 de memoria flash son todas direcciones lógicas de bloques de datos que incluyen datos válidos
5
10
15
20
25
30
35
40
45
50
55
(véanse las descripciones en el paso S201 en el modo de realización que se muestra en la FIG. 4), es necesario mover todos los bloques de datos correspondientes a las direcciones lógicas que envía el controlador 11 y que recibe el dispositivo 22 de memoria flash.
De acuerdo con las dos formas de implementación de ejemplo proporcionadas más arriba, los bloques de datos con un mismo nivel de estabilidad se pueden almacenar conjuntamente cuando un dispositivo 22 de memoria flash realiza una recolección de basura o una inspección. Como un dispositivo de memoria flash necesita, en general, realizar movimiento de datos cuando se realiza una recolección de basura o una inspección, no existe ninguna operación de movimiento de datos extra en este modo de realización, lo cual puede reducir aún más la amplificación de la escritura.
A continuación se describe otro método para almacenar datos en un dispositivo de memoria flash de acuerdo con un modo de realización de la presente invención. Haciendo referencia a la FIG. 6A y la FIG. 6B, la FIG. 6A y la FIG. 6B son un diagrama de flujo esquemático del método para almacenar datos en un dispositivo de memoria flash, donde el método se puede aplicar al sistema de almacenamiento que se muestra en la FIG. 1.
En este modo de realización, los pasos S101 a S104 describen un proceso durante el que el controlador 11 almacena en un dispositivo 22 de memoria flash un bloque de datos recibido. Los pasos S101 a S104 se pueden aplicar al controlador 11 que se muestra en la FIG. 2 y son ejecutados por el procesador 118 en el controlador 11.
En el paso S101, el controlador 11 recibe una petición de escritura de datos enviada por un servidor, donde la petición de escritura de datos incluye un objeto de datos e información de dirección del objeto de datos, la información de dirección puede incluir un ID de un número de unidad lógica (nombre completo: logical unit number, LUN para abreviar), y una dirección de inicio y un desplazamiento del LUN; o un ID de un archivo, y una dirección de inicio y un desplazamiento del archivo, etc.; o cuando el sistema de almacenamiento incluye múltiples sistemas de archivos, la información de dirección puede incluir un ID del sistema de archivos, un ID de un archivo, una dirección de inicio y un desplazamiento del archivo, etc.
El objeto de datos son datos en bloque o un archivo a escribir en el dispositivo 22 de memoria flash.
En el paso S102, el controlador 11 divide el objeto de datos en múltiples bloques de datos del mismo tamaño.
En el paso S103, el controlador 11 determina un bloque de datos objetivo de los múltiples bloques de datos, y determina si el bloque de datos objetivo ha sido almacenado en el dispositivo 22 de memoria flash.
Específicamente, antes de enviar los múltiples bloques de datos al dispositivo 22 de memoria flash para su almacenamiento, el controlador 11 tiene que determinar secuencialmente si cada bloque de datos se ha almacenado en el dispositivo de memoria flash, y si cada bloque de datos se ha almacenado en el dispositivo de memoria flash, no es necesario almacenar de nuevo el bloque de datos. Para la forma de determinarlo, véanse las descripciones anteriores de la función del módulo de deduplicación de datos, y los detalles no se vuelven a describir en la presente solicitud.
En el paso S104, si el dispositivo 22 de memoria flash no tiene almacenado un bloque de datos que sea igual que el bloque de datos objetivo, el controlador 11 le envía el bloque de datos objetivo al dispositivo 22 de memoria flash para su almacenamiento. El contador de referencia del bloque de datos objetivo recibe un valor inicial. Además, el controlador 11 escribe en una caché 120 el contador de referencia del bloque de datos objetivo y una dirección lógica correspondiente al bloque de datos objetivo almacenado en el dispositivo 22 de memoria flash. Si el dispositivo 22 de memoria flash ya contiene un bloque de datos igual que el bloque de datos objetivo, se aumenta el contador de referencia del bloque de datos igual que el bloque de datos objetivo. Específicamente, la dirección lógica correspondiente al bloque de datos objetivo que se escribe en el dispositivo 22 de memoria flash puede ser una dirección lógica asignada por el controlador 11 al bloque de datos objetivo. Después de asignar la dirección lógica, el controlador 11 le envía la dirección lógica al dispositivo 22 de memoria flash. El dispositivo 22 de memoria flash obtiene una dirección física correspondiente a la dirección lógica, de acuerdo con una relación de mapeo entre una dirección lógica y una dirección física y escribe el bloque de datos objetivo en el espacio de almacenamiento correspondiente a la dirección física. En otras circunstancias, el controlador 11 no puede asignar con antelación la dirección lógica, sino que el dispositivo 22 de memoria flash le devuelve al controlador 11 una dirección lógica después de almacenar el bloque de datos.
De la forma descrita en los pasos S101 a S104, el controlador 11 puede dividir el objeto de datos recibido en una pluralidad de bloques de datos y almacenar los bloques de datos en el dispositivo 22 de memoria flash. Se puede entender que el controlador 11 tiene una función de deduplicación de datos. Por lo tanto, los bloques de datos almacenados en el dispositivo 22 de memoria flash son diferentes. La información sobre estos múltiples bloques de datos diferentes se puede almacenar en la caché 120.
Los pasos S105 a S107 describen un proceso mediante el cual el controlador 11 identifica un nivel de estabilidad de cada bloque de datos almacenado en el dispositivo 22 de memoria flash y envía el nivel de estabilidad al
5
10
15
20
25
30
35
40
45
50
dispositivo 22 de memoria flash. Los pasos S105 a S107 se pueden aplicar al controlador 11 que se muestra en la FIG. 2 y son ejecutados por el procesador 118 en el controlador 11. Se debería observar que no existe ninguna secuencia entre el proceso de identificación del nivel de estabilidad y el proceso de almacenamiento del bloque de datos recibido en el dispositivo 22 de memoria flash en los pasos S101 a S104.
En el paso S105, cuando se activa una tarea, el controlador 11 lee de la caché 120 información sobre el bloque de datos objetivo.
En la presente solicitud, la tarea se refiere a una tarea en la que el controlador 11 identifica el nivel de estabilidad de cada bloque de datos en el dispositivo 22 de memoria flash.
Específicamente, el controlador 11 puede examinar la información de los múltiples bloques de datos y leer secuencialmente información sobre cada bloque de datos. Para facilitar la descripción, en los siguientes pasos se sigue utilizando como ejemplo la forma de procesamiento de un bloque de datos objetivo. Se puede entender que una forma de procesamiento de otros bloques de datos es parecida a la del bloque de datos objetivo.
La información sobre el bloque de datos objetivo incluye un contador de referencia del bloque de datos objetivo, o una duración del periodo de tiempo en el que el bloque de datos objetivo se almacena en el dispositivo de memoria flash, o un contador de referencia del bloque de datos objetivo y una duración del periodo de tiempo en el que el bloque de datos objetivo se almacena en el dispositivo de memoria flash.
En el paso S106, el controlador 11 determina un nivel de estabilidad del bloque de datos objetivo de acuerdo con la información sobre el bloque de datos objetivo.
El paso S106 es parecido al paso S202 en el modo de realización que se muestra en la FIG. 5. Para los detalles, véase las descripciones en el paso S202.
En el paso S107, el controlador 11 le envía al dispositivo 22 de memoria flash la dirección lógica del bloque de datos objetivo y el nivel de estabilidad del bloque de datos objetivo.
En la forma descrita en los pasos S105 a S107, el controlador 11 puede enviar al dispositivo 22 de memoria flash direcciones lógicas y niveles de estabilidad de los múltiples bloques de datos.
Los pasos S108 a S110 describen un proceso mediante el cual el dispositivo 22 de memoria flash almacena conjuntamente bloques de datos con un mismo nivel de estabilidad después de haber recibido los niveles de estabilidad de los bloques de datos enviados por el controlador 11. Los pasos S108 a S110 se pueden aplicar al dispositivo de memoria flash (por ejemplo un SSD) mostrado en las FIG. 3A y 3B y son ejecutados por el procesador 218 en el dispositivo 22 de memoria flash.
En el paso S108, el dispositivo 22 de memoria flash almacena la dirección lógica de los múltiples bloques de datos y los niveles de estabilidad correspondientes a las direcciones lógicas.
Opcionalmente, una forma de almacenamiento es que en la caché 230 en el dispositivo 22 de memoria flash se cree una tabla de mapeo y se utilice para almacenar una relación de mapeo entre una dirección lógica de un bloque de datos y un nivel de estabilidad del bloque de datos recibidos desde el controlador 11.
Opcionalmente, otra forma de almacenamiento es que en una caché 230 se almacenen múltiples tablas, donde cada tabla se corresponde con un nivel de estabilidad. Las direcciones lógicas de los múltiples bloques de datos se almacenan en tablas correspondientes a los bloques de datos.
Opcionalmente, otra forma de almacenamiento adicional es que una caché 230 se divida con antelación en una pluralidad de áreas de caché, donde cada área de caché se corresponde con un nivel de estabilidad. Las direcciones lógicas de los múltiples bloques de datos se almacenan en las áreas de caché correspondientes a los bloques de datos.
En el paso S109, el dispositivo 22 de memoria flash determina si el número de direcciones lógicas correspondientes a un mismo nivel de estabilidad alcanza un umbral predeterminado y, si el número de direcciones lógicas correspondientes al mismo nivel de estabilidad alcanza el umbral predeterminado, lee los bloques de datos de acuerdo con las direcciones lógicas correspondientes al mismo nivel de estabilidad.
Las direcciones lógicas correspondientes al mismo nivel de estabilidad pueden incluir la dirección lógica del bloque de datos objetivo en los pasos S105 a S107.
Se debería observar que la forma de implementación que se muestra en las FIG. 6A y 6B no se puede combinar con una operación de recolección de basura o una operación de inspección, esto es, en esta forma de implementación, una condición de activación de movimiento de datos es diferente de la forma de implementación que se muestra en la FIG. 5, y la condición de activación de esta forma de implementación es que el número de
5
10
15
20
25
30
35
40
45
50
direcciones lógicas que se corresponden con el mismo nivel de estabilidad y se almacenan en la caché alcance el umbral predeterminado.
Pueden existir las siguientes tres formas de implementación para determinar si el número de direcciones lógicas correspondientes al mismo nivel de estabilidad alcanza el umbral predeterminado:
Una primera forma de implementación consiste en: determinar, de acuerdo con la tabla de mapeo almacenada en la caché 230, si el número de direcciones lógicas con el mismo nivel de estabilidad alcanza el umbral predeterminado.
Una segunda forma de implementación consiste en: determinar si el número de direcciones lógicas almacenadas en una tabla en la caché 230 alcanza el umbral predeterminado.
Una tercera forma de implementación consiste en: determinar si el número de direcciones lógicas almacenadas en un área de caché de la caché 230 alcanza el umbral predeterminado.
El umbral predeterminado se puede establecer como la relación entre la capacidad de un bloque y el tamaño de un bloque de datos. De acuerdo con esta forma de implementación, cuando el número de direcciones lógicas alcanza el umbral, los bloques de datos correspondientes a las múltiples direcciones lógicas rellenan exactamente un bloque desocupado.
En el paso S110, el dispositivo 22 de memoria flash busca un bloque desocupado y mueve el bloque de datos leído al bloque desocupado.
De modo análogo, los bloques de datos con el mismo nivel de estabilidad se pueden almacenar secuencialmente en uno o múltiples bloques desocupados en la forma descrita en los pasos S109 y S110.
Además, el umbral predeterminado también se puede fijar con un valor mayor que 2 pero menor que la relación entre la capacidad de un bloque y el tamaño de un bloque de datos. En este caso, en el paso S110, se puede encontrar un bloque que no esté lleno, para almacenar los bloques de datos con el mismo nivel de estabilidad en el bloque que no está lleno.
En el modo de realización que se muestra en las FIG. 6A y 6B, un dispositivo 22 de memoria flash almacena conjuntamente bloques de datos con un mismo nivel de estabilidad en uno o múltiples bloques desocupados, de modo que en una operación de recolección de basura posterior se reducen los datos válidos a mover, reduciendo de este modo la amplificación de la escritura y prolongando de algún modo el tiempo de vida del dispositivo 22 de memoria flash.
Un modo de realización de la presente invención proporciona, además, un dispositivo 40 para identificar un nivel de estabilidad de un bloque de datos, donde el dispositivo 40 se encuentra en un controlador 11, el controlador se encuentra en el sistema de almacenamiento que se muestra en la FIG. 1, el sistema de almacenamiento incluye un dispositivo 22 de memoria flash, y el dispositivo 22 de memoria flash almacena un primer bloque de datos. Tal como se muestra en la FIG. 7, el dispositivo 40 incluye:
un módulo 401 de almacenamiento, configurado para almacenar información sobre el primer bloque de datos, donde la información sobre el primer bloque de datos incluye un contador de referencia del primer bloque de datos, o una duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash, o un contador de referencia del primer bloque de datos y una duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash, donde el contador de referencia del primer bloque de datos es igual a el número de veces que el controlador recibe el primer bloque de datos;
un módulo 402 de lectura, configurado para leer, desde el módulo de almacenamiento, la información sobre el primer bloque de datos;
un módulo 403 de determinación, configurado para determinar un nivel de estabilidad del primer bloque de datos de acuerdo con (1) el contador de referencia del primer bloque de datos, y una relación de mapeo entre un contador de referencia y un nivel de estabilidad de un bloque de datos; o (2) la duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash, y una relación de mapeo entre la duración del periodo de tiempo en el que el bloque de datos se almacena en el dispositivo de memoria flash y un nivel de estabilidad; o (3) el contador de referencia del primer bloque de datos, la duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash, y una relación de mapeo entre un contador de referencia de un bloque de datos, una duración del periodo de tiempo en el que el bloque de datos se almacena en el dispositivo de memoria flash y un nivel de estabilidad; y
un módulo 404 de envío, configurado para enviar al dispositivo 22 de memoria flash una dirección lógica del primer bloque de datos y el nivel de estabilidad del primer bloque de datos.
5
10
15
20
25
30
35
40
45
50
55
En este modo de realización, un dispositivo 40 para identificar el nivel de estabilidad de un bloque de datos puede determinar un nivel de estabilidad de un primer bloque de datos de acuerdo con (1) un contador de referencia del primer bloque de datos, y una relación de mapeo entre un contador de referencia y un nivel de estabilidad de un bloque de datos; o (2) una duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash, y una relación de mapeo entre la duración del periodo de tiempo en el que el bloque de datos se almacena en el dispositivo de memoria flash y un nivel de estabilidad; o (3) un contador de referencia del primer bloque de datos, una duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash y una relación de mapeo entre un contador de referencia de un bloque de datos, una duración del periodo de tiempo en el que el bloque de datos se almacena en el dispositivo de memoria flash y un nivel de estabilidad, donde el nivel de estabilidad puede reflejar la estabilidad del bloque de datos; y enviar al dispositivo 22 de memoria flash el nivel de estabilidad y una dirección lógica del bloque de datos, de modo que el dispositivo 22 de memoria flash almacena conjuntamente bloques de datos con un mismo nivel de estabilidad.
Opcionalmente, en la forma de implementación que se muestra en la FIG. 7, la relación de mapeo entre un contador de referencia y un nivel de estabilidad de un bloque de datos incluye: una relación de mapeo entre un intervalo del contador de referencia y un nivel de estabilidad.
A continuación, el módulo 403 de determinación está configurado específicamente para determinar un primer intervalo del contador de referencia en función del contador de referencia del primer bloque de datos, donde el contador de referencia del primer bloque de datos se encuentra dentro del primer intervalo del contador de referencia; y determinar el nivel de estabilidad del primer bloque de datos de acuerdo con el primer intervalo del contador de referencia y la relación de mapeo entre un intervalo del contador de referencia y un nivel de estabilidad.
Opcionalmente, en la forma de implementación que se muestra en la FIG. 7, la relación de mapeo entre la duración del periodo de tiempo en el que el bloque de datos se almacena en el dispositivo de memoria flash y un nivel de estabilidad incluye: una relación de mapeo entre un intervalo de tiempo y un nivel de estabilidad.
A continuación, el módulo 403 de determinación está configurado específicamente para determinar un primer intervalo de tiempo de acuerdo con la duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash, donde la duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash se encuentra dentro del primer intervalo de tiempo; y determinar el nivel de estabilidad del primer bloque de datos de acuerdo con el primer intervalo de tiempo y la relación de mapeo entre un intervalo de tiempo y un nivel de estabilidad.
Opcionalmente, en la forma de implementación que se muestra en la FIG. 7, la relación de mapeo entre un contador de referencia de un bloque de datos, una duración del periodo de tiempo en el que el bloque de datos se almacena en el dispositivo de memoria flash y un nivel de estabilidad incluye: una relación de mapeo entre un intervalo del contador de referencia, un intervalo de tiempo y un nivel de estabilidad.
A continuación, el módulo 403 de determinación está configurado específicamente para determinar un primer intervalo del contador de referencia en función del contador de referencia del primer bloque de datos, donde el contador de referencia del primer bloque de datos se encuentra dentro del primer intervalo del contador de referencia; determinar un primer intervalo de tiempo de acuerdo con la duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash, donde la duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash se encuentra dentro del primer intervalo de tiempo; y determinar el nivel de estabilidad del primer bloque de datos de acuerdo con el primer intervalo del contador de referencia, el primer intervalo de tiempo y la relación de mapeo entre un intervalo del contador de referencia, un intervalo de tiempo y un nivel de estabilidad.
Además, para una forma de implementación específica de cada módulo del dispositivo 40, véase el modo de realización del método que se muestra en la FIG. 5 o la FIG. 7, y no se vuelven a describir los detalles en la presente solicitud.
Un modo de realización de la presente invención proporciona, además, un dispositivo 50 para almacenar datos en un dispositivo de memoria flash, donde el dispositivo 50 está localizado en un controlador principal del dispositivo 22 de memoria flash, el dispositivo 22 de memoria flash almacena un bloque, y el dispositivo 50 incluye:
un módulo 501 de obtención, configurado para obtener un nivel de estabilidad correspondiente a una dirección lógica objetivo, donde el nivel de estabilidad se utiliza para indicar la estabilidad de un bloque de datos; y
un módulo 502 de migración, configurado para mover un bloque de datos de la dirección lógica objetivo a un bloque correspondiente al nivel de estabilidad de acuerdo con el nivel de estabilidad correspondiente a la dirección lógica objetivo.
El dispositivo 50 proporcionado en este modo de realización se puede utilizar para almacenar en un bloque bloques de datos con un mismo nivel de estabilidad.
Opcionalmente, el módulo 501 de obtención está configurado, además, para buscar en un chip de memoria flash un bloque que almacene la mayor cantidad de datos no válidos, donde el bloque que almacena la mayor cantidad 5 de datos no válidos incluye el bloque de datos correspondiente a la dirección lógica objetivo.
Opcionalmente, el módulo 501 de obtención está configurado, además, para buscar en un chip de memoria flash un bloque que se mantiene sin borrar el mayor tiempo, donde el bloque que se mantiene sin borrar el mayor tiempo incluye el bloque de datos correspondiente a la dirección lógica objetivo.
Opcionalmente, el dispositivo 50 incluye, además, un módulo 503 de almacenamiento, donde el módulo 503 de 10 almacenamiento almacena una dirección lógica, donde el nivel de estabilidad correspondiente a la dirección lógica es el mismo que el nivel de estabilidad correspondiente a la dirección lógica objetivo.
El módulo 501 de obtención está configurado específicamente para obtener el nivel de estabilidad correspondiente a la dirección lógica objetivo cuando el número de direcciones lógicas almacenadas en una caché alcanza un umbral predeterminado.
15 El umbral predeterminado es igual al de la capacidad del bloque dividido por el tamaño del bloque de datos.
Además, para una forma de implementación específica de cada módulo del dispositivo 50, véase el modo de realización del método que se muestra en la FIG. 6A y la FIG. 6B o la FIG. 7, y los detalles no se vuelven a describir en la presente solicitud.
Un modo de realización de la presente invención proporciona, además, un producto de programa de ordenador 20 para procesar datos, que incluye un medio de almacenamiento legible por un ordenador que almacena código de programa, donde se utilizan unas instrucciones incluidas en el código de programa para ejecutar el procedimiento del método en uno cualquiera de los modos de realización del método anteriores.
Una persona con un conocimiento normal en la técnica puede entender que el medio de almacenamiento anterior incluye varios tipos de medios legibles por una máquina no transitorios (non-transitory) que puede almacenar 25 código de programa como, por ejemplo, un disco flash USB, un disco duro extraíble, un disco magnético, un disco óptico, una memoria de acceso aleatorio (RAM, random-access memory), un disco de estado sólido (solid state disk, SSD), o una memoria no volátil (non-volatile memory).

Claims (6)

  1. 5
    10
    15
    20
    25
    30
    35
    40
    45
    REIVINDICACIONES
    1. Un controlador (11) para ser incluido en un sistema de almacenamiento con una función de deduplicación de datos, donde el sistema de almacenamiento comprende un dispositivo (22) de memoria flash, y el dispositivo (22) de memoria flash almacena un primer bloque de datos; el controlador (11) comprende un procesador (118), una caché (memoria intermedia de acceso rápido) (120) y una interfaz (128) de comunicaciones; en donde
    la interfaz (128) de comunicaciones está configurada para comunicarse con el dispositivo (22) de memoria
    flash;
    la caché (120) almacena información sobre el primer bloque de datos, en donde la información sobre el primer bloque de datos comprende un contador de referencia del primer bloque de datos, o una duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash, o un contador de referencia del primer bloque de datos y una duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash, en donde el contador de referencia del primer bloque de datos es igual al número de veces que el controlador referencia una dirección física del primer bloque de datos, y en donde la información sobre el primer bloque de datos comprende, además, información de huella digital del primer bloque de datos, en donde la información de huella digital del primer bloque de datos se obtiene realizando un cálculo sobre el primer bloque de datos de acuerdo con una función hash (de aleatorización) predeterminada; y
    el procesador (118) está configurado para:
    recibir el primer bloque de datos;
    calcular la información de huella digital del primer bloque de datos de acuerdo con la función hash y el primer bloque de datos;
    determinar que el dispositivo de memoria flash no contiene un bloque de datos cuya información de huella digital sea igual que la información de huella digital del primer bloque de datos;
    enviar al dispositivo de memoria flash el primer bloque de datos, en donde el contador de referencia del primer bloque de datos es igual a un valor inicial;
    escribir el contador de referencia del primer bloque de datos en la caché;
    el procesador (118) está configurado, además, para leer la información sobre el primer bloque de datos desde la caché (120);
    determinar un nivel de estabilidad del primer bloque de datos en función del contador de referencia del primer bloque de datos, y una relación de mapeo entre un contador de referencia y un nivel de estabilidad de un bloque de datos; en donde el nivel de estabilidad se utiliza para indicar la estabilidad del bloque de datos; y
    enviar una dirección lógica del primer bloque de datos y el nivel de estabilidad del primer bloque de datos al dispositivo de memoria flash a través de la interfaz de comunicaciones.
  2. 2. El controlador de acuerdo con la reivindicación 1, en donde la relación de mapeo entre un contador de referencia y un nivel de estabilidad de un bloque de datos comprende: una relación de mapeo entre un intervalo del contador de referencia y un nivel de estabilidad; y
    el procesador (118) está configurado específicamente para determinar un primer intervalo del contador de referencia en función del contador de referencia del primer bloque de datos, en donde el contador de referencia del primer bloque de datos se encuentra dentro del primer intervalo del contador de referencia; y
    determinar el nivel de estabilidad del primer bloque de datos de acuerdo con el primer intervalo del contador de referencia y la relación de mapeo entre un intervalo del contador de referencia y un nivel de estabilidad.
  3. 3. El controlador de acuerdo con la reivindicación 1, en donde:
    el procesador (118) está configurado, además, para recibir un segundo bloque de datos;
    calcular la información de huella digital del segundo bloque de datos de acuerdo con la función hash y el segundo bloque de datos;
    determinar si la información de huella digital del primer bloque de datos es la misma que la información de huella digital del segundo bloque de datos; y
    5
    10
    15
    20
    25
    30
    35
    40
    45
    incrementar el valor inicial, en donde el contador de referencia del primer bloque de datos es igual al valor inicial incrementado.
  4. 4. Un método para que un controlador identifique la estabilidad de un bloque de datos, en donde el controlador está incluido en un sistema de almacenamiento con una función de deduplicación de datos, el sistema de almacenamiento comprende un dispositivo de memoria flash, y el dispositivo de memoria flash almacena un primer bloque de datos; el controlador comprende un procesador, una caché y una interfaz de comunicaciones; en donde: la interfaz de comunicaciones está configurada para comunicarse con el dispositivo de memoria flash; la caché almacena información sobre el primer bloque de datos, en donde la información sobre el primer bloque de datos comprende un contador de referencia del primer bloque de datos, o una duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash, o un contador de referencia del primer bloque de datos y una duración del periodo de tiempo en el que el primer bloque de datos se almacena en el dispositivo de memoria flash, en donde el contador de referencia del primer bloque de datos es igual al número de veces que el controlador referencia una dirección física del primer bloque de datos, y en donde la información sobre el primer bloque de datos comprende, además, información de huella digital del primer bloque de datos, en donde la información de huella digital del primer bloque de datos se obtiene realizando un cálculo sobre el primer bloque de datos de acuerdo con una función hash predeterminada; el método es ejecutado por el procesador y el método comprende:
    recibir el primer bloque de datos;
    calcular la información de huella digital del primer bloque de datos de acuerdo con la función hash y el primer bloque de datos;
    determinar que el dispositivo de memoria flash no contiene un bloque de datos cuya información de huella digital sea igual que la información de huella digital del primer bloque de datos;
    enviar el primer bloque de datos al dispositivo de memoria flash, en donde el contador de referencia del primer bloque de datos es igual a un valor inicial;
    escribir el contador de referencia del primer bloque de datos en la caché;
    leer (S201) la información sobre el primer bloque de datos desde la caché;
    determinar (S202) un nivel de estabilidad del primer bloque de datos en función del contador de referencia del primer bloque de datos, y una relación de mapeo entre un contador de referencia y un nivel de estabilidad de un bloque de datos; en donde el nivel de estabilidad se utiliza para indicar la estabilidad del bloque de datos; y
    enviar (S203) una dirección lógica del primer bloque de datos y el nivel de estabilidad del primer bloque de datos al dispositivo de memoria flash a través de la interfaz de comunicaciones.
  5. 5. El método de acuerdo con la reivindicación 4, en donde la relación de mapeo entre un contador de referencia y un nivel de estabilidad de un bloque de datos comprende: una relación de mapeo entre un intervalo del contador de referencia y un nivel de estabilidad; y
    la determinación de un nivel de estabilidad del primer bloque de datos en función del contador de referencia del primer bloque de datos y una relación de mapeo entre un contador de referencia y un nivel de estabilidad de un bloque de datos comprende:
    determinar un primer intervalo del contador de referencia en función del contador de referencia del primer bloque de datos, en donde el contador de referencia del primer bloque de datos se encuentra dentro del primer intervalo del contador de referencia;
    determinar el nivel de estabilidad del primer bloque de datos de acuerdo con el primer intervalo del contador de referencia y la relación de mapeo entre un intervalo del contador de referencia y un nivel de estabilidad.
  6. 6. El método de acuerdo con la reivindicación 4, en donde el método comprende, además:
    recibir un segundo bloque de datos;
    calcular información de huella digital del segundo bloque de datos de acuerdo con la función hash y el segundo bloque de datos;
    determinar que la información de huella digital del primer bloque de datos es la misma que la información de huella digital del segundo bloque de datos; e
    incrementar el valor inicial, en donde el contador de referencia del primer bloque de datos es igual al valor inicial incrementado.
ES14902279.0T 2014-12-05 2014-12-05 Controlador, dispositivo de memoria flash, método para identificar la estabilidad de bloques de datos y método para almacenar datos en un dispositivo de memoria flash Active ES2691484T3 (es)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2014/093139 WO2016086411A1 (zh) 2014-12-05 2014-12-05 一种控制器、闪存装置、识别数据块稳定性的方法以及在闪存装置中存储数据的方法

Publications (1)

Publication Number Publication Date
ES2691484T3 true ES2691484T3 (es) 2018-11-27

Family

ID=56090853

Family Applications (1)

Application Number Title Priority Date Filing Date
ES14902279.0T Active ES2691484T3 (es) 2014-12-05 2014-12-05 Controlador, dispositivo de memoria flash, método para identificar la estabilidad de bloques de datos y método para almacenar datos en un dispositivo de memoria flash

Country Status (8)

Country Link
US (2) US9772790B2 (es)
EP (1) EP3059679B1 (es)
JP (1) JP6147933B2 (es)
KR (1) KR101784893B1 (es)
CN (1) CN105980992B (es)
DK (1) DK3059679T3 (es)
ES (1) ES2691484T3 (es)
WO (1) WO2016086411A1 (es)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9917894B2 (en) * 2014-08-06 2018-03-13 Quest Software Inc. Accelerating transfer protocols
US11644992B2 (en) 2016-11-23 2023-05-09 Samsung Electronics Co., Ltd. Storage system performing data deduplication, method of operating storage system, and method of operating data processing system
KR102306672B1 (ko) * 2016-11-23 2021-09-29 삼성전자주식회사 데이터 중복 제거를 수행하는 스토리지 시스템, 스토리지 시스템 및 데이터 처리 시스템의 동작방법
CN107193758A (zh) * 2017-05-19 2017-09-22 记忆科技(深圳)有限公司 一种固态硬盘的映射表管理方法及固态硬盘
US10416899B2 (en) * 2018-02-13 2019-09-17 Tesla, Inc. Systems and methods for low latency hardware memory management
US11256628B2 (en) * 2019-08-02 2022-02-22 EMC IP Holding Company LLC Volatile read cache in a content addressable storage system
KR102234886B1 (ko) * 2019-11-07 2021-04-02 숭실대학교산학협력단 플래시 메모리에서 장치 지문을 추출하는 방법 및 장치
KR20220049397A (ko) * 2020-10-14 2022-04-21 삼성전자주식회사 메모리 장치, 이를 포함하는 스토리지 장치 및 스토리지 장치의 동작 방법
US12014772B2 (en) 2021-11-17 2024-06-18 Samsung Electronics Co., Ltd. Storage controller and storage device including the same
KR102545465B1 (ko) * 2021-11-17 2023-06-21 삼성전자주식회사 스토리지 컨트롤러 및 이를 포함하는 스토리지 장치

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007013372A1 (ja) * 2005-07-29 2007-02-01 Matsushita Electric Industrial Co., Ltd. メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム及び不揮発性メモリのアドレス管理方法
JP4439569B2 (ja) * 2008-04-24 2010-03-24 株式会社東芝 メモリシステム
US8447915B2 (en) * 2009-07-23 2013-05-21 Hitachi, Ltd. Flash memory device for allocating physical blocks to logical blocks based on an erase count
US8452932B2 (en) * 2010-01-06 2013-05-28 Storsimple, Inc. System and method for efficiently creating off-site data volume back-ups
US8438361B2 (en) * 2010-03-10 2013-05-07 Seagate Technology Llc Logical block storage in a storage device
JP2011203916A (ja) * 2010-03-25 2011-10-13 Toshiba Corp メモリコントローラ、および半導体記憶装置
US9183134B2 (en) * 2010-04-22 2015-11-10 Seagate Technology Llc Data segregation in a storage device
JP2012014400A (ja) * 2010-06-30 2012-01-19 Toshiba Corp 半導体メモリ装置および半導体メモリシステム
US20120023144A1 (en) * 2010-07-21 2012-01-26 Seagate Technology Llc Managing Wear in Flash Memory
US20120159098A1 (en) * 2010-12-17 2012-06-21 Microsoft Corporation Garbage collection and hotspots relief for a data deduplication chunk store
EP2681691A4 (en) 2011-03-03 2015-06-03 Cypher Llc SYSTEM FOR AUTONOMOUS DETECTION AND SEPARATION OF COMMON ELEMENTS IN DATA, AND METHODS AND DEVICES RELATED THERETO
US8782370B2 (en) 2011-05-15 2014-07-15 Apple Inc. Selective data storage in LSB and MSB pages
US9141528B2 (en) * 2011-05-17 2015-09-22 Sandisk Technologies Inc. Tracking and handling of super-hot data in non-volatile memory systems
US9176864B2 (en) * 2011-05-17 2015-11-03 SanDisk Technologies, Inc. Non-volatile memory and method having block management with hot/cold data sorting
US20120317337A1 (en) * 2011-06-09 2012-12-13 Microsoft Corporation Managing data placement on flash-based storage by use
US9021203B2 (en) 2012-05-07 2015-04-28 International Business Machines Corporation Enhancing tiering storage performance
KR101929584B1 (ko) * 2012-06-29 2018-12-17 에스케이하이닉스 주식회사 데이터 저장 장치 및 그 동작 방법
KR20140006299A (ko) * 2012-07-03 2014-01-16 삼성전자주식회사 낸드 플래시 메모리 기반의 저장부에 데이터 기록을 제어하는 방법 및 장치
CN102981969A (zh) * 2012-11-21 2013-03-20 记忆科技(深圳)有限公司 重复数据删除的方法及其固态硬盘
CN103019887B (zh) * 2012-12-12 2016-01-06 华为技术有限公司 数据备份方法及装置
US9395924B2 (en) * 2013-01-22 2016-07-19 Seagate Technology Llc Management of and region selection for writes to non-volatile memory
CN103455435A (zh) * 2013-08-29 2013-12-18 华为技术有限公司 数据写入方法及装置
CN103455436B (zh) * 2013-09-23 2016-09-14 北京经纬恒润科技有限公司 一种ram检测方法及系统
US9390116B1 (en) * 2013-09-26 2016-07-12 Emc Corporation Insertion and eviction schemes for deduplicated cache system of a storage system
CN103577336B (zh) * 2013-10-23 2017-03-08 华为技术有限公司 一种存储数据处理方法及装置
US9529546B2 (en) * 2014-01-08 2016-12-27 Netapp, Inc. Global in-line extent-based deduplication

Also Published As

Publication number Publication date
DK3059679T3 (en) 2018-12-17
CN105980992B (zh) 2018-02-13
US20160216915A1 (en) 2016-07-28
JP2017501489A (ja) 2017-01-12
KR101784893B1 (ko) 2017-10-12
EP3059679A1 (en) 2016-08-24
KR20160084370A (ko) 2016-07-13
EP3059679B1 (en) 2018-08-22
JP6147933B2 (ja) 2017-06-14
EP3059679A4 (en) 2017-03-01
WO2016086411A1 (zh) 2016-06-09
US9772790B2 (en) 2017-09-26
US20170364300A1 (en) 2017-12-21
CN105980992A (zh) 2016-09-28

Similar Documents

Publication Publication Date Title
ES2691484T3 (es) Controlador, dispositivo de memoria flash, método para identificar la estabilidad de bloques de datos y método para almacenar datos en un dispositivo de memoria flash
CN106874211B (zh) 存储器系统及非易失性存储器的控制方法
CN106874217B (zh) 存储器系统及控制方法
US9229876B2 (en) Method and system for dynamic compression of address tables in a memory
US9652154B2 (en) Storage module and host device for storage module defragmentation
CN105917303B (zh) 一种控制器、识别数据块稳定性的方法和存储系统
US20180089074A1 (en) Techniques to Manage Key-Value Storage at a Memory or Storage Device
CN106484761B (zh) 用于改进储存日志的方法和系统
US20150186259A1 (en) Method and apparatus for storing data in non-volatile memory
KR101933766B1 (ko) 플래시 메모리 플러싱을 개선하는 방법 및 시스템
US20140372675A1 (en) Information processing apparatus, control circuit, and control method
US9122586B2 (en) Physical-to-logical address map to speed up a recycle operation in a solid state drive
BR112016019305B1 (pt) Controlador de arranjo, disco de estado sólido, e método para controlar disco de estado sólido para gravar dados
CN108027764B (zh) 可转换的叶的存储器映射
KR20160103945A (ko) Ssd 상의 기록-시-복사를 위한 시스템 및 방법
US20150269082A1 (en) Cache system using solid state drive
US10776262B2 (en) Memory system and operating method thereof
CN110096452B (zh) 非易失随机访问存储器及其提供方法
CN112181274A (zh) 提升存储设备性能稳定性的大块的组织方法及其存储设备
TW201624490A (zh) 記憶體裝置及非暫態電腦可讀取記錄媒體
CN106201326B (zh) 信息处理装置
US11269534B2 (en) Data storage device and non-volatile memory control method