BR112016019305B1 - Controlador de arranjo, disco de estado sólido, e método para controlar disco de estado sólido para gravar dados - Google Patents

Controlador de arranjo, disco de estado sólido, e método para controlar disco de estado sólido para gravar dados Download PDF

Info

Publication number
BR112016019305B1
BR112016019305B1 BR112016019305-9A BR112016019305A BR112016019305B1 BR 112016019305 B1 BR112016019305 B1 BR 112016019305B1 BR 112016019305 A BR112016019305 A BR 112016019305A BR 112016019305 B1 BR112016019305 B1 BR 112016019305B1
Authority
BR
Brazil
Prior art keywords
logical block
data
state disk
solid state
block
Prior art date
Application number
BR112016019305-9A
Other languages
English (en)
Other versions
BR112016019305A2 (pt
Inventor
Peijun Jiang
Qiang Xue
Keji HUANG
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
Publication of BR112016019305A2 publication Critical patent/BR112016019305A2/pt
Publication of BR112016019305B1 publication Critical patent/BR112016019305B1/pt

Links

Images

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/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
    • 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
    • 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/0253Garbage collection, i.e. reclamation of unreferenced memory
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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/7201Logical to physical mapping or translation of blocks or pages
    • 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/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • 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/7204Capacity control, e.g. partitioning, end-of-life degradation
    • 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
    • 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/7208Multiple device management, e.g. distributing data over multiple flash devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

CONTROLADOR DE ARRANJO, DISCO DE ESTADO SÓLIDO, E MÉTODO PARA CONTROLAR DISCO DE ESTADO SÓLIDO PARA GRAVAR DADOS. Modalidades da presente invenção fornecem um controlador de arranjo, incluindo uma interface de comunicações e um processador. A interface de comunicações é configurada para se comunicar com um disco de estado sólido. O processador é configurado para receber informações sobre um bloco lógico enviadas pelo disco de estado sólido, onde as informações sobre o bloco lógico incluem um tamanho do bloco lógico e informações de indicação do bloco lógico, e o bloco lógico inclui um ou mais blocos. O processador é configurado adicionalmente para enviar múltiplas solicitações de gravar dados para o disco de estado sólido, onde cada solicitação de gravar dados porta dados-alvo, cada solicitação de gravar dados é usada para instruir o disco de estado sólido a gravar os dados-alvo dentro do bloco lógico indicado pelas informações de indicação do bloco lógico, e uma soma de comprimentos dos dados-alvo portados nas múltiplas solicitações de gravar dados é igual ao tamanho do bloco lógico. O bloco lógico pode ser preenchido após o disco de estado sólido gravar cada pedaço de dados-alvo para o bloco lógico, o que pode reduzir a amplificação de gravação quando o disco de estado sólido realiza uma operação de coleta de lixo.

Description

CAMPO DA TÉCNICA
[0001] Modalidades da presente invenção se relacionam ao campo de tecnologias de armazenamento e, em particular, a um controlador de arranjo, um disco de estado sólido, e um método para controlar um disco de estado sólido para gravar dados.
ANTECEDENTES
[0002] Um aparelho de Memória Flash (memória flash) é uma memória não volátil. Um meio de armazenamento do aparelho de memória flash é um chip de memória Flash que é caracterizado pelo fato de que nenhum dos dados desaparece após o desligamento. Portanto, o aparelho de memória flash é amplamente usado como uma memória externa ou interna. O aparelho de memória flash que usa o chip de memória Flash como o meio de armazenamento pode ser um disco de estado sólido (Nome completo: Dispositivo de Estado Sólido, SSD abreviadamente), o qual é também conhecido como um acionador de estado sólido (Nome completo: Acionador de Estado Sólido, SSD abreviadamente), ou pode ser outra memória.
[0003] Um SSD em geral inclui múltiplos chips de memória flash, onde cada chip de memória flash inclui alguns blocos (bloco). Em geral, quando se está armazenando dados recebidos a partir do lado de fora, o SSD pode simultaneamente gravar os dados para múltiplos blocos para aperfeiçoar a eficiência de processamento de dados. Quando está realizando processamento de coleta de lixo, o SSD precisa adquirir dados válidos a partir de múltiplos blocos e mover os dados válidos para um bloco livre, o que causa amplificação de gravação.
SUMÁRIO
[0004] As modalidades da presente invenção propõem um controlador de arranjo, um disco de estado sólido, e um método para controlar um disco de estado sólido para gravar dados, o qual pode gravar um segmento de dados cujo tamanho é igual a um número inteiro múltiplo de um tamanho padrão de um bloco em um ou mais blocos, de modo a preencher o um ou mais blocos, desse modo reduzindo a amplificação de gravação quando o disco de estado sólido realiza coleta de lixo.
[0005] Um primeiro aspecto das modalidades fornece um controlador de arranjo, onde o controlador de arranjo é localizado em um sistema de armazenamento, o sistema de armazenamento inclui adicionalmente um disco de estado sólido, e o controlador de arranjo inclui uma interface de comunicações e um processador, onde a interface de comunicações é configurada para se comunicar com o disco de estado sólido; e o processador é configurado para receber informações sobre um bloco lógico enviadas pelo disco de estado sólido, onde as informações sobre o bloco lógico incluem um tamanho do bloco lógico e informações de indicação do bloco lógico, e o processador envia múltiplas solicitações de gravar dados para o disco de estado sólido, onde cada solicitação de gravar dados porta dadosalvo, cada solicitação de gravar dados é usada para instruir o disco de estado sólido a gravar os dados-alvo dentro do bloco lógico indicado pelas informações de indicação do bloco lógico, e uma soma de comprimentos dos dados-alvo portados nas múltiplas solicitações de gravar dados é igual ao tamanho do bloco lógico. Após receber as múltiplas solicitações de gravar dados, o disco de estado sólido grava, de acordo com as informações de indicação em cada solicitação de gravar dados, os dados-alvo portados na solicitação de gravar dados dentro do bloco lógico indicado pelas informações de indicação. Deve ser notado que uma vez que o bloco lógico inclui um ou mais blocos, gravar os dados-alvo dentro do bloco lógico é efetivamente gravar os dados-alvo dentro do um ou mais blocos incluídos no bloco lógico.
[0006] Nessa maneira de implantação, uma vez que a soma dos comprimentos dos dados-alvo portados nas múltiplas solicitações de gravar dados que são enviadas pelo processador para o disco de estado sólido é igual ao tamanho do bloco lógico, e cada solicitação de gravar dados é usada para instruir o disco de estado sólido a gravar os dados-alvo dentro do bloco lógico indicado pelas informações de indicação do bloco lógico, o disco de estado sólido pode gravar, de acordo com as informações de indicação, todos os dados-alvo portados nas múltiplas solicitações de gravar dados dentro do mesmo bloco lógico, e preencher o bloco lógico. Uma vez que nessa modalidade um bloco lógico inclui um ou mais blocos, isto significa que os dados-alvo são gravados dentro do um ou mais blocos, e esses blocos são preenchidos. Pode ser entendido por uma pessoa habilitada na técnica que durante a coleta de lixo, o disco de estado sólido realiza coleta em blocos. Uma vez que os dados-alvo são todos gravados dentro do um ou mais blocos e o um ou mais blocos não incluem outros dados, se os dados-alvo são todos liberados pelo controlador de arranjo subsequentemente, isto é, marcados como dados inválidos, o SSD pode apagar diretamente dados de todos os blocos no bloco lógico sem mover dados válidos, desse modo reduzindo a amplificação de gravação durante a coleta de lixo.
[0007] Com referência ao primeiro aspecto, em uma primeira maneira de implantação do primeiro aspecto, os blocos incluídos no bloco lógico são localizados em diferentes canais. Em geral, dentro do disco de estado sólido, leituras e gravações simultâneas podem ser implantadas entre canais. Portanto, quando os blocos incluídos no bloco lógico são localizados em diferentes canais, os dados-alvo podem ser simultaneamente gravados dentro do bloco lógico, o que aperfeiçoa a eficiência de gravar dados.
[0008] Com referência ao primeiro aspecto, em uma segunda maneira de implantação do primeiro aspecto, os blocos incluídos no bloco lógico pertencem a um mesmo canal. Em alguns casos, leituras e gravações simultâneas podem também ser implantadas entre múltiplos blocos em um canal. Portanto, quando os blocos incluídos no bloco lógico pertencem a um mesmo canal, os dados-alvo podem ser simultaneamente gravados dentro do bloco lógico, o que pode também aperfeiçoar a eficiência de gravar dados.
[0009] Com referência a qualquer uma das supracitadas maneiras de implantação do primeiro aspecto, em uma terceira maneira de implantação do primeiro aspecto, o bloco lógico é um bloco lógico em um estado a ser gravado, onde o bloco lógico no estado a ser gravado faz referência a um bloco lógico que foi alocado pelo disco de estado sólido para armazenar dados. Nessa modalidade, um bloco lógico tem quatro estados: livre, a ser gravado, cheio e ruim. O disco de estado sólido reporta o bloco lógico no estado a ser gravado para o controlador de arranjo, onde dados podem ser gravados diretamente dentro do bloco lógico no estado a ser gravado. Portanto, quando recebe as solicitações de gravar dados enviadas pelo controlador de arranjo, o disco de estado sólido pode gravar diretamente os dados-alvo dentro do bloco lógico no estado a ser gravado de acordo com as informações de indicação portadas nas solicitações de gravar dados.
[0010] Com referência a qualquer uma das supracitadas maneiras de implantação do primeiro aspecto, em uma quarta maneira de implantação do primeiro aspecto, para as informações de indicação do bloco lógico, em uma maneira de implantação específica, as informações de indicação são um identificador que é alocado pelo disco de estado sólido para o bloco lógico. Quando as informações de indicação são o identificador do bloco lógico, cada solicitação de gravar dados que é enviada pelo controlador de arranjo para o disco de estado sólido porta o identificador. Após receber a solicitação de gravar dados, o disco de estado sólido pode gravar, de acordo com o identificador, os dados-alvo em cada solicitação de gravar dados dentro do bloco lógico que corresponde ao identificador, de modo a preencher o bloco lógico que corresponde ao identificador.
[0011] Com referência a qualquer uma das supracitadas maneiras de implantação do primeiro aspecto, essa modalidade fornece adicionalmente uma maneira de implantação alternativa à quarta maneira de implantação do primeiro aspecto, isto é, uma quinta maneira de implantação do primeiro aspecto, e nessa maneira de implantação, as informações de indicação do bloco lógico incluem uma faixa de endereço lógico que é alocada pelo disco de estado sólido para o bloco lógico. Quando as informações de indicação são a faixa de endereço lógico, cada solicitação de gravar dados que é enviada pelo controlador de arranjo para o disco de estado sólido porta uma subfaixa da faixa de endereço lógico. Após receber a solicitação de gravar dados, o disco de estado sólido pode determinar, de acordo com a subfaixa, o bloco lógico que corresponde aos dados-alvo em cada solicitação de gravar dados, e gravar os dados-alvo dentro do bloco lógico, de modo a preencher o bloco lógico.
[0012] Com referência a qualquer uma das supracitadas maneiras de implantação do primeiro aspecto, em uma sexta maneira de implantação do primeiro aspecto, o controlador de arranjo inclui adicionalmente um cache, e o processador é configurado adicionalmente para gravar múltiplos pedaços de dados-alvo a partir do cache. Uma vez que o controlador de arranjo inclui o cache, após receber dados externos, o controlador de arranjo pode armazenar temporariamente os dados no cache em vez de enviar diretamente os dados para o disco de estado sólido para armazenamento, e enviar dados para o disco de estado sólido quando um tamanho de dados no cache atinge uma marca d’água em particular (por exemplo, o tamanho do bloco lógico).
[0013] Com referência à sexta maneira de implantação do primeiro aspecto, em uma sétima maneira de implantação do primeiro aspecto, o sistema de armazenamento inclui adicionalmente um hospedeiro, e o controlador de arranjo é localizado entre o hospedeiro e o disco de estado sólido. Nessa maneira de implantação, o controlador de arranjo pode receber dados a partir do hospedeiro, e gravar os dados dentro do cache.
[0014] Um segundo aspecto das modalidades fornece um disco de estado sólido, onde o disco de estado sólido inclui um chip de memória flash e um controlador de disco de estado sólido, onde o chip de memória flash inclui múltiplos canais, e cada canal inclui múltiplos blocos; o controlador de disco de estado sólido é configurado para enviar informações sobre um bloco lógico para um controlador de arranjo, onde as informações sobre o bloco lógico incluem um tamanho do bloco lógico e informações de indicação do bloco lógico; e, além disso, o controlador de disco de estado sólido é configurado adicionalmente para receber múltiplas solicitações de gravar dados enviadas pelo controlador de arranjo, onde cada solicitação de gravar dados porta dados-alvo, e cada solicitação de gravar dados é usada para instruir o disco de estado sólido a gravar os dados-alvo dentro do bloco lógico indicado pelas informações de indicação do bloco lógico. Além disso, uma soma de comprimentos dos dados-alvo portados nas múltiplas solicitações de gravar dados é igual ao tamanho do bloco lógico; e o controlador de disco de estado sólido então grava os dados-alvo portados em cada solicitação de gravar dados dentro do bloco lógico indicado pelas informações de indicação. Deve ser notado que uma vez que o bloco lógico inclui um ou mais blocos, gravar os dados-alvo dentro do bloco lógico é efetivamente gravar os dados-alvo dentro do um ou mais blocos incluídos no bloco lógico.
[0015] Nessa maneira de implantação, o disco de estado sólido reporta as informações sobre o bloco lógico para o controlador de arranjo. As informações sobre o bloco lógico incluem o tamanho do bloco lógico e as informações de indicação do bloco lógico. Portanto, o controlador de arranjo pode enviar as solicitações de gravar dados para o disco de estado sólido de acordo com as informações sobre o bloco lógico. Especificamente, a soma dos comprimentos dos dados-alvo portados nas múltiplas solicitações de gravar dados que são enviadas pelo controlador de arranjo para o disco de estado sólido é igual ao tamanho do bloco lógico, e cada solicitação de gravar dados é usada para instruir o disco de estado sólido a gravar os dados-alvo dentro do bloco lógico indicado pelas informações de indicação do bloco lógico. Portanto, o disco de estado sólido pode gravar, de acordo com as informações de indicação, todos os dados-alvo portados nas múltiplas solicitações de gravar dados dentro do mesmo bloco lógico, e preencher o bloco lógico. Uma vez que nessa modalidade um bloco lógico inclui um ou mais blocos, isto significa que os dados-alvo são gravados dentro do um ou mais blocos, e esses blocos são preenchidos. Pode ser entendido por uma pessoa habilitada na técnica que durante a coleta de lixo, o disco de estado sólido realiza coleta em blocos. Uma vez que os dados-alvo são todos gravados dentro do um ou mais blocos e o um ou mais blocos não incluem outros dados, se os dados-alvo são todos liberados pelo controlador de arranjo subsequentemente, isto é, marcados como dados inválidos, o SSD pode apagar diretamente dados de todos os blocos no bloco lógico sem mover dados válidos, desse modo reduzindo a amplificação de gravação durante coleta de lixo.
[0016] Com referência ao segundo aspecto, em uma primeira maneira de implantação do segundo aspecto, os blocos incluídos no bloco lógico são localizados em diferentes canais. Em geral, dentro do disco de estado sólido, leituras e gravações simultâneas podem ser implantadas entre canais. Portanto, quando os blocos incluídos no bloco lógico são localizados em diferentes canais, os dados-alvo podem ser simultaneamente gravados dentro do bloco lógico, o que aperfeiçoa a eficiência de gravar dados.
[0017] Com referência ao segundo aspecto, em uma segunda maneira de implantação do segundo aspecto, os blocos incluídos no bloco lógico pertencem a um mesmo canal. Em alguns casos, leituras e gravações simultâneas podem também ser implantadas entre múltiplos blocos em um canal. Portanto, quando os blocos incluídos no bloco lógico pertencem a um mesmo canal, os dados-alvo podem ser simultaneamente gravados dentro do bloco lógico, o que pode também aperfeiçoar a eficiência de gravar dados.
[0018] Com referência a qualquer uma das supracitadas maneiras de implantação do segundo aspecto, em uma terceira maneira de implantação do segundo aspecto, o bloco lógico é um bloco lógico em um estado a ser gravado, onde o bloco lógico no estado a ser gravado faz referência a um bloco lógico que foi alocado pelo disco de estado sólido para armazenar dados. Nessa modalidade, um bloco lógico tem quatro estados: livre, a ser gravado, cheio e ruim. O disco de estado sólido reporta o bloco lógico no estado a ser gravado para o controlador de arranjo, onde dados podem ser gravados diretamente dentro do bloco lógico no estado a ser gravado. Portanto, quando recebe as solicitações de gravar dados enviadas pelo controlador de arranjo, o disco de estado sólido pode gravar diretamente os dados-alvo dentro do bloco lógico no estado a ser gravado de acordo com as informações de indicação portadas nas solicitações de gravar dados.
[0019] Com referência a qualquer uma das supracitadas maneiras de implantação do segundo aspecto, em uma quarta maneira de implantação do segundo aspecto, para as informações de indicação do bloco lógico, em uma maneira de implantação específica, as informações de indicação são um identificador que é alocado pelo disco de estado sólido para o bloco lógico. Quando as informações de indicação são o identificador do bloco lógico, cada solicitação de gravar dados recebida pelo disco de estado sólido porta o identificador. Após receber a solicitação de gravar dados, o disco de estado sólido pode gravar, de acordo com o identificador, os dados-alvo em cada solicitação de gravar dados dentro do bloco lógico que corresponde ao identificador, de modo a preencher o bloco lógico que corresponde ao identificador.
[0020] Com referência a qualquer uma das supracitadas maneiras de implantação do segundo aspecto, essa modalidade fornece adicionalmente uma maneira de implantação alternativa à quarta maneira de implantação do segundo aspecto, isto é, uma quinta maneira de implantação do segundo aspecto, e nessa maneira de implantação, as informações de indicação do bloco lógico incluem uma faixa de endereço lógico que é alocada pelo disco de estado sólido para o bloco lógico. Quando as informações de indicação são a faixa de endereço lógico, cada solicitação de gravar dados recebida pelo disco de estado sólido porta uma subfaixa da faixa de endereço lógico. Após receber a solicitação de gravar dados, o disco de estado sólido pode determinar, de acordo com a subfaixa, o bloco lógico que corresponde aos dados-alvo em cada solicitação de gravar dados, e gravar os dados-alvo dentro do bloco lógico, de modo a preencher o bloco lógico.
[0021] Com referência à terceira à quinta maneiras de implantação do segundo aspecto, em uma sexta maneira de implantação do segundo aspecto, o controlador de disco de estado sólido é configurado adicionalmente para recuperar as informações de indicação alocadas para o bloco lógico. Uma vez que as informações de indicação são alocadas apenas para o bloco lógico no estado a ser gravado, quando o bloco lógico é preenchido, as informações de indicação do bloco lógico podem ser recuperadas para outro bloco lógico no estado a ser gravado para uso.
[0022] Com referência a qualquer uma das supracitadas maneiras de implantação do segundo aspecto, em uma sétima maneira de implantação do segundo aspecto, o controlador de disco de estado sólido é especificamente configurado para enviar um comando SCSI GRAVAR para o controlador de arranjo, onde o comando inclui um campo NÚMERO DE GRUPO, e o campo é usado para portar as informações de indicação do bloco lógico. Nessa maneira de implantação, um comando particular é fornecido para reportar as informações de indicação do bloco lógico. Um comando SCSI convencional não inclui o campo NÚMERO DE GRUPO. Nessa modalidade, o campo NÚMERO DE GRUPO é especialmente adicionado ao comando SCSI GRAVAR para reportar as informações de indicação do bloco lógico.
[0023] Um terceiro aspecto das modalidades da presente invenção fornece um método para controlar um disco de estado sólido para gravar dados, onde o método é aplicado ao controlador de arranjo fornecido no primeiro aspecto.
[0024] Um quarto aspecto das modalidades da presente invenção fornece um método para controlar um disco de estado sólido para gravar dados, onde o método é aplicado ao controlador de arranjo fornecido no segundo aspecto.
[0025] Um quinto aspecto das modalidades da presente invenção fornece um aparelho para controlar um disco de estado sólido para gravar dados, onde o aparelho é localizado no controlador de arranjo fornecido no primeiro aspecto.
[0026] Um sexto aspecto das modalidades da presente invenção fornece um aparelho para controlar um disco de estado sólido para gravar dados, onde o aparelho é localizado no controlador de arranjo fornecido no segundo aspecto.
[0027] De acordo com os métodos para controlar um disco de estado sólido para gravar dados e os aparelhos para controlar um disco de estado sólido para gravar dados fornecidos no terceiro aspecto ao sexto aspecto, um segmento de dados cujo tamanho é igual a um número inteiro múltiplo de um tamanho padrão de um bloco pode ser gravado dentro de um ou mais blocos, de modo a preencher o um ou mais blocos, desse modo reduzindo a amplificação de gravação quando o disco de estado sólido realiza coleta de lixo.
[0028] As modalidades da presente invenção fornecem um produto de programa de computador, incluindo um meio de armazenamento legível por computador que armazena código de programa, onde uma instrução incluída no código de programa pode ser executada pelo controlador de arranjo no primeiro aspecto, e é usada para realizar pelo menos um método no terceiro aspecto.
[0029] As modalidades da presente invenção fornecem um produto de programa de computador, incluindo um meio de armazenamento legível por computador que armazena código de programa, onde uma instrução incluída no código de programa pode ser executada pelo controlador de arranjo no segundo aspecto, e é usada para realizar pelo menos um método no quarto aspecto.
[0030] O supracitado produto de programa de computador fornecido nas modalidades da presente invenção pode gravar um segmento de dados cujo tamanho é igual a um número inteiro múltiplo de um tamanho padrão de um bloco dentro de um ou mais blocos, de modo a preencher o um ou mais blocos, desse modo reduzindo a amplificação de gravação quando um disco de estado sólido realiza coleta de lixo.
BREVE DESCRIÇÃO DOS DESENHOS
[0031] Para descrever as soluções técnicas nas modalidades da presente invenção mais claramente, a seguir se apresenta resumidamente os desenhos anexos exigidos para descrever as modalidades ou na técnica anterior. Evidentemente, os desenhos anexos na descrição a seguir mostram meramente algumas modalidades da presente invenção, e uma pessoa de habilidade comum na técnica pode ainda derivar outros desenhos a partir desses desenhos anexos sem esforços criativos.
[0032] A Figura 1 é um diagrama de um cenário de aplicação de acordo com uma modalidade da presente invenção;
[0033] A Figura 2 é um diagrama esquemático de um chip de memória flash de acordo com uma modalidade da presente invenção;
[0034] A Figura 3 é um diagrama esquemático de um bloco de acordo com uma modalidade da presente invenção;
[0035] A Figura 4 é um diagrama esquemático de armazenamento de dados por um disco de estado sólido na técnica anterior de acordo com uma modalidade da presente invenção;
[0036] A Figura 5 é um diagrama esquemático de um bloco lógico de acordo com uma modalidade da presente invenção;
[0037] A Figura 6 é um diagrama estrutural esquemático de um controlador de arranjo de acordo com uma modalidade da presente invenção;
[0038] A Figura 7 é um fluxograma esquemático de um método para controlar um disco de estado sólido para gravar dados de acordo com uma modalidade da presente invenção;
[0039] A Figura 8 é um diagrama esquemático de armazenamento de dados por um disco de estado sólido de acordo com uma modalidade da presente invenção;
[0040] A Figura 9 é um fluxograma esquemático de outro método para controlar um disco de estado sólido para gravar dados de acordo com uma modalidade da presente invenção;
[0041] A Figura 10 é um fluxograma esquemático de um outro método ainda para controlar um disco de estado sólido para gravar dados de acordo com uma modalidade da presente invenção;
[0042] A Figura 11 é um diagrama estrutural esquemático de um aparelho para controlar um disco de estado sólido para gravar dados de acordo com uma modalidade da presente invenção; e
[0043] A Figura 12 é um diagrama estrutural esquemático de outro aparelho para controlar um disco de estado sólido para gravar dados de acordo com uma modalidade da presente invenção.
DESCRIÇÃO DE MODALIDADES
[0044] As modalidades da presente invenção propõem um controlador de arranjo, um disco de estado sólido, e um método para controlar um disco de estado sólido para gravar dados, o qual pode gravar um segmento de dados cujo tamanho é igual a um número inteiro múltiplo de um tamanho padrão de um bloco dentro de um ou mais blocos, de modo a preencher o um ou mais blocos, desse modo reduzindo amplificação de gravação quando o disco de estado sólido realiza coleta de lixo.
[0045] A Figura 1 é um diagrama de composição de um sistema de armazenamento de acordo com uma modalidade da presente invenção. O sistema de armazenamento mostrado na Figura 1 inclui um hospedeiro 33, um controlador de arranjo 11, e um disco de estado sólido 22. O hospedeiro 33 pode ser um dispositivo terminal tal como um servidor ou um computador de mesa.
[0046] O controlador de arranjo 11 é localizado entre o hospedeiro 33 e o disco de estado sólido 22, e pode ser um dispositivo de computação, por exemplo, um servidor ou um computador de mesa. Um sistema de operação e outro programa de aplicação são instalados no controlador de arranjo 11. O controlador de arranjo 11 pode receber uma solicitação de entrada/saída (I/O) a partir do hospedeiro 33, armazenar dados portados na solicitação de I/O, e gravar dados armazenados no controlador de arranjo 11 dentro do disco de estado sólido 22 quando uma condição particular é atendida.
[0047] O disco de estado sólido (Dispositivo de Estado Sólido, SSD) 22 é uma memória usando um chip de memória Flash como um meio de armazenamento, o qual é também referido como um acionador de estado sólido (Acionador de Estado Sólido, SSD), ou pode incluir outra memória. Nessa modalidade, o disco de estado sólido 22 é descrito usando-se o SSD como um exemplo.
[0048] A Figura 1 é apenas exemplificativa para descrição, e não constitui nenhuma limitação para uma maneira de rede específica. Por exemplo, uma rede de árvore em cascata ou uma rede em anel pode ser usada, contanto que o controlador de arranjo 11 e o disco de estado sólido 22 possam se comunicar um com o outro.
[0049] O disco de estado sólido 22 inclui um controlador de SSD 220 e um meio de armazenamento 221. O controlador de SSD 220 é configurado para realizar uma operação tal como uma solicitação de gravar dados ou uma solicitação de ler dados enviada pelo controlador de arranjo 11.
[0050] O meio de armazenamento 221 em geral inclui alguns chips de memória flash (Flash). Cada chip de memória flash inclui múltiplos canais, e cada canal inclui alguns blocos (bloco) (conforme mostrado na Figura 2). Em geral, o chip de memória flash pode ser divido em alguns blocos de acordo com um tamanho fixo. Portanto, um bloco tem um tamanho padrão. O tamanho padrão do bloco faz referência a um tamanho de dados que pode ser armazenado em um bloco que está ocioso e que não inclui nenhuma página ruim (página ruim). Em geral, o tamanho padrão do bloco pode ser a enésima potência de 2 (M), onde N é um número inteiro positivo. Uma operação de apagar realizada pelo SSD é realizada em blocos. Por exemplo, quando o SSD precisa realizar coleta de lixo, o SSD pode primeiro mover dados válidos a partir de um bloco para outro novo bloco, e então apagar todos os dados (incluindo os dados válidos e dados inválidos) armazenados no bloco original. Nessa modalidade da presente invenção, dados válidos em um bloco faz referência a dados que são armazenados no bloco e que não foram modificados, e essa parte de dados é possivelmente para ser lida; dados inválidos em um bloco faz referência a dados que são armazenados no bloco e que foram modificados, e essa parte de dados é impossível de ser lida. Pode ser do conhecimento de uma pessoa habilitada na técnica que devido a um recurso de apagar de um chip de memória flash, dados armazenados em um bloco não são diretamente modificados como são os dados em um acionador rígido mecânico comum. Quando os dados em um bloco precisam ser modificados, o controlador de SSD 220 encontra um novo bloco e grava dados modificados dentro do novo bloco, e os dados no bloco original se tornam dados inválidos. Os dados inválidos são apagados quando o SSD realiza coleta de lixo.
[0051] Além disso, conforme mostrado na Figura 3, cada bloco inclui algumas páginas (página). O SSD grava dados em páginas quando executa uma solicitação de gravar dados. Por exemplo, o controlador de arranjo 11 envia uma solicitação de gravar dados para o controlador de SSD 220, onde a solicitação de gravar dados porta endereços de bloco lógico (Endereço de bloco lógico, LBA) e dados, e os LBAs são endereços que são visíveis e accessíveis para o controlador de arranjo 11. Após receber a solicitação de gravar dados, o SSD grava os dados em páginas de um ou mais blocos de acordo com uma política definida. Os endereços das páginas nas quais os dados são gravados são endereços nos quais os dados são efetivamente armazenados, e também são referidos como endereços físicos. O SSD inclui uma camada de tradução flash (Camada de Tradução Flash, FTL), configurada para estabelecer e armazenar uma correspondência entre os LBAs e os endereços físicos. Quando o controlador de arranjo 11 subsequentemente envia uma solicitação de ler dados para o controlador de SSD 220, para solicitar a leitura dos dados, onde a solicitação de ler dados porta os LBAs, o controlador de SSD 220 pode ler os dados de acordo com os LBAs e a correspondência entre os LBAs e os endereços físicos, e enviar os dados para o controlador de arranjo 11.
[0052] Quando o controlador de arranjo 11 lê um segmento de dados a partir de um cache, e envia o segmento de dados para o SSD, em geral, o segmento de dados é um segmento de dados com endereços lógicos contíguos. Entretanto, quando recebe a solicitação de gravar dados, o controlador de SSD 220 grava, de acordo com a política definida pelo controlador de SSD 220, os dados nas páginas (isto é, os endereços físicos) do um ou mais blocos. Pode ser entendido por uma pessoa habilitada na técnica que, efetivamente, esses endereços físicos não são necessariamente contíguos. Isto é, da perspectiva do controlador de arranjo 11, o segmento de dados com os endereços lógicos contíguos é efetivamente gravado em um espaço físico do SSD em uma maneira dispersa. A seguir se descreve como gravar dados por um SSD na técnica anterior com referência à Figura 4.
[0053] A Figura 4 é um diagrama esquemático de como gravar dados por um SSD na técnica anterior. Em geral, uma vez que o disco de estado sólido 22 pode simultaneamente gravar dados dentro de canais, após o controlador de arranjo 11 enviar dados para o disco de estado sólido 22, o controlador de SSD 220 em geral seleciona um bloco a partir de cada canal, e simultaneamente grava os dados dentro dos múltiplos blocos. Pode ser entendido que o disco de estado sólido 22 pode também simultaneamente gravar os dados dentro de múltiplos blocos em um canal. Conforme mostrado na Figura 4, após os dados serem gravados dentro dos múltiplos blocos, cada bloco fornece uma parte de espaço para armazenar uma parte dos dados. Na Figura 5, uma parte em branco de um bloco representa espaço livre do bloco, e uma parte cinza representa espaço usado do bloco após uma parte dos dados ser gravada dentro do bloco. Portanto, da perspectiva do controlador de arranjo 11, um segmento de dados com endereços lógicos contíguos é armazenado em múltiplos blocos em uma maneira dispersa, e dados que pertencem a diferentes segmentos de endereço lógico são gravados dentro de diferentes blocos. Pode ser do conhecimento de uma pessoa habilitada na técnica que uma operação de coleta de lixo é regularmente realizada no SSD, e o apagamento é realizado em blocos durante uma operação de coleta de lixo. Como o segmento de dados com os endereços lógicos contíguos é armazenado nos múltiplos blocos em uma maneira dispersa, e os dados que pertencem aos diferentes segmentos de endereço lógico são gravados dentro dos diferentes blocos, durante a coleta de lixo, dados válidos precisam ser movidos a partir de múltiplos blocos para um bloco livre, o que aumenta a amplificação de gravação causada pela coleta de lixo. A amplificação de gravação significa que há mais dados gravados dentro de um chip de memória flash que dados que são gravados por um hospedeiro em um SSD.
[0054] Nessa modalidade, conforme mostrado na Figura 5, um bloco pode ser tirado de cada canal, para formar um bloco lógico (bloco lógico). Isto é, o bloco lógico nessa modalidade inclui múltiplos blocos, e os blocos são localizados em diferentes canais. Pode ser entendido que um bloco pode também ser tirado de cada uma de uma parte dos canais, para formar um bloco lógico. De maneira similar, os múltiplos blocos incluídos no bloco lógico são separadamente localizados em diferentes canais. Um tamanho do bloco lógico é um número inteiro múltiplo de um tamanho padrão de um bloco, e depende de uma quantidade de blocos incluídos no bloco lógico. Nessa modalidade, o tamanho do bloco lógico pode ser armazenado no controlador de arranjo 11antecipadamente. Após receber uma solicitação de gravar dados enviada pelo hospedeiro 33, o controlador de arranjo 11 pode armazenar temporariamente a solicitação de gravar dados no cache do controlador de arranjo 11, e enviar dados para o SSD para armazenamento quando os dados no cache atingem o tamanho do bloco lógico.
[0055] Nessa modalidade, blocos lógicos são classificados em quatro tipos de acordo com estados dos blocos lógicos: bloco lógico livre (livre), bloco lógico a ser gravado (ou de gravação), bloco lógico cheio (cheio), e bloco lógico ruim (ruim). Um bloco lógico em um estado livre faz referência a um bloco lógico no qual dados foram apagados; um bloco lógico em um estado a ser gravado faz referência a um bloco lógico que foi alocado para gravação de dados; um bloco lógico em um estado cheio faz referência a um bloco lógico cujo espaço foi preenchido, e o bloco lógico no estado cheio pode se tornar um bloco lógico em um estado livre após o apagamento; um bloco lógico em um estado ruim faz referência a um bloco danificado lógico que não pode ser usado. Um bloco lógico para armazenamento de dados mencionado nessa modalidade é efetivamente um bloco lógico em um estado a ser gravado. Portanto, a menos que enunciado o contrário na descrição a seguir, um bloco lógico faz referência ao bloco lógico no estado a ser gravado.
[0056] Para identificar aqueles blocos lógicos no estado a ser gravado, em uma maneira opcional de implantação, o SSD aloca um identificador para cada bloco lógico. O identificador pode ser um dígito, uma letra, ou outro símbolo para identificar unicamente o bloco lógico, ou pode ser qualquer combinação de um dígito, uma letra, ou outro símbolo. Por exemplo, um identificador de um bloco lógico é 0, um identificador de outro bloco lógico é 1, um identificador de ainda outro bloco lógico é 2, e assim por diante.
[0057] Em outra maneira opcional de implantação, o SSD aloca uma faixa de endereço lógico para cada bloco lógico. Por exemplo, uma faixa de endereço lógico que corresponde a um bloco lógico é de 0 MB a 1.023 MB, uma faixa de endereço lógico que corresponde a outro bloco lógico é de 1.024 MB a 2.047 MB, uma faixa de endereço lógico que corresponde a ainda outro bloco lógico é de 2.048 MB a 3.071 MB, e assim por diante.
[0058] O controlador de SSD 220 precisa reportar o identificador do bloco lógico ou a faixa de endereço lógico do bloco lógico para o controlador de arranjo 11, de modo que quando envia dados para o SSD para armazenamento, o controlador de arranjo 11 pode adicionar o identificador do bloco lógico a uma solicitação de gravar dados e enviar a solicitação de gravar dados para o SSD, para instruir o SSD a gravar os dados dentro do bloco lógico que corresponde ao identificador. Alternativamente, um endereço lógico inicial e um comprimento em uma solicitação de gravar dados são designados de acordo com a faixa de endereço lógico do bloco lógico. Se existem múltiplos blocos lógicos no estado a ser gravado, o controlador de arranjo 11 recebe identificadores dos múltiplos blocos lógicos ou faixas de endereço lógico dos múltiplos blocos lógicos, então seleciona qualquer um dos múltiplos blocos lógicos, e envia uma solicitação de gravar dados para o SSD de acordo com um identificador ou uma faixa de endereço lógico do bloco lógico.
[0059] A seguir se descreve uma estrutura de hardware do controlador de arranjo 11. A Figura 6 é um diagrama estrutural esquemático do controlador de arranjo 11 de acordo com uma modalidade da presente invenção. Conforme mostrado na Figura 6, o controlador de arranjo 11 inclui principalmente um processador (processador) 118, um cache (cache) 120, uma memória (memória) 122, um barramento de comunicações (barramento, abreviadamente) 126, e uma interface de comunicações (Interface de Comunicação) 128. O processador 118, o cache 120, a memória 122, e a interface de comunicações 128 comunicam-se um com o outro usando o barramento de comunicações 126.
[0060] A interface de comunicações 128 é configurada para se comunicar com o hospedeiro 33 ou com o disco de estado sólido 22.
[0061] O processador 118 pode ser uma unidade de processamento central CPU ou um circuito integrado de aplicação específica ASIC (Circuito Integrado de Aplicação Específica), ou é configurado como um ou mais circuitos integrados que implantam essa modalidade da presente invenção. Nessa modalidade da presente invenção, o processador 118 pode ser configurado para receber uma solicitação de gravar dados ou uma solicitação de ler dados a partir do hospedeiro 33, processar a solicitação de gravar dados ou a solicitação de ler dados, enviar a solicitação de gravar dados ou a solicitação de ler dados para o disco de estado sólido 22, e realizar outra operação.
[0062] A memória 122 é configurada para armazenar um programa 124. A memória 122 pode incluir a memória RAM de alta velocidade, e pode incluir adicionalmente uma memória não volátil (memória não volátil), tal como pelo menos uma memória de disco magnético. Pode ser entendido que a memória 122 pode ser qualquer meio não transitório legível por computador (não transitório) que pode armazenar código de programa, tal como uma memória de acesso aleatório (Memória de Acesso Aleatório, RAM), um disco magnético, um disco rígido, um disco óptico, um disco de estado sólido (Disco de Estado Sólido, SSD), ou uma memória não volátil.
[0063] O programa 124 pode incluir código de programa, onde o código de programa inclui uma instrução de operação de computador.
[0064] O cache 120 (Cache) é configurado para armazenar temporariamente dados recebidos a partir do hospedeiro 33 ou dados lidos a partir do disco de estado sólido 22. O cache 120 pode ser qualquer meio não transitório (não transitório) legível por máquina que pode armazenar dados, tal como uma RAM, uma ROM, uma memória flash (memória Flash), ou um disco de estado sólido (Disco de Estado Sólido, SSD), não havendo uma limitação no presente documento. Por exemplo, quando recebe uma solicitação de gravar dados enviada pelo hospedeiro 33, o controlador de arranjo 11 pode armazenar a solicitação de gravar dados no cache 120, e o processador 118 processa a solicitação de gravar dados. Opcionalmente, quando recebe múltiplas solicitações de gravar dados enviadas pelo hospedeiro 33, o controlador de arranjo 11 pode armazenar temporariamente as múltiplas solicitações de gravar dados no cache 120, e quando um tamanho no cache 120 atinge uma marca d’água (por exemplo, um tamanho de dados armazenados no cache 120 atinge um tamanho de um bloco lógico), ler dados cujo tamanho é igual ao tamanho do bloco lógico a partir do cache 120, e enviar os dados para o disco de estado sólido 22 para armazenamento persistente.
[0065] Além disso, a memória 122 e o cache 120 podem ser integrados ou dispostos separadamente, não havendo uma limitação nessa modalidade da presente invenção.
[0066] A seguir se descreve um processo de um método para gravar dados dentro de um disco de estado sólido de acordo com uma modalidade da presente invenção. O método para gravar dados dentro de um disco de estado sólido nessa modalidade da presente invenção pode ser aplicado ao sistema de armazenamento mostrado na Figura 1 e ao controlador de arranjo 11 mostrado na Figura 6. Conforme mostrado na Figura 7, o método inclui as seguintes etapas:
[0067] Etapa S301: Um controlador de SSD 220 envia informações de indicação de um bloco lógico para um controlador de arranjo 11.
[0068] Especificamente, o controlador de SSD 220 envia as informações de indicação do bloco lógico para um processador 118 do controlador de arranjo 11. As informações de indicação do bloco lógico podem ser um identificador que é alocado por um disco de estado sólido 22 para o bloco lógico, ou podem ser uma faixa de endereço lógico que é alocada por um disco de estado sólido 22 para o bloco lógico, ou outras informações para indicar um bloco lógico em particular.
[0069] Etapa S302: O controlador de SSD 220 envia um tamanho do bloco lógico para o controlador de arranjo 11.
[0070] Especificamente, o controlador de SSD 220 envia o tamanho do bloco lógico para o processador 118 do controlador de arranjo 11, e o processador 118 recebe o tamanho do bloco lógico. Deve ser notado que a etapa S302 e a etapa S301 não são necessariamente realizadas em uma ordem em particular. Isto é, nessa modalidade, contanto que o controlador de SSD 220 envie o tamanho do bloco lógico para o controlador de arranjo 11, um período de tempo ou etapa em que o tamanho do bloco lógico é enviado para o controlador de arranjo 11 não é limitado. Além disso, as informações podem ser enviadas separadamente, ou podem ser enviadas juntamente com outras informações, por exemplo, o identificador do bloco lógico.
[0071] Etapa S303: O controlador de arranjo 11 envia múltiplos pedaços de dados-alvo para o controlador de SSD 220, onde uma soma de comprimentos dos múltiplos pedaços de dados-alvo é igual ao tamanho do bloco lógico.
[0072] Especificamente, o processador 118 do controlador de arranjo 11 adiciona os múltiplos pedaços de dados-alvo a múltiplas solicitações de gravar dados, e envia as múltiplas solicitações de gravar dados para o controlador de SSD 220.
[0073] Quando as informações de indicação são o identificador do bloco lógico, cada solicitação de gravar dados precisa adicionalmente portar o identificador do bloco lógico. Quando as informações de indicação são a faixa de endereço lógico do bloco lógico, cada solicitação de gravar dados precisa adicionalmente portar uma subfaixa da faixa de endereço lógico. Esses dois casos são descritos em detalhe em maneiras de implantação mostradas na Figura 9 e na Figura 10.
[0074] Etapa S304: O controlador de SSD 220 grava os múltiplos pedaços de dados-alvo dentro do bloco lógico.
[0075] Especificamente, após receber as múltiplas solicitações de gravar dados na etapa S303, o controlador de SSD 220 pode determinar, de acordo com informações de indicação em cada solicitação de gravar dados, o bloco lógico indicado pelas informações de indicação, e então gravar os dadosalvo em cada solicitação de gravar dados dentro do bloco lógico.
[0076] Na técnica anterior, a solicitação de gravar dados que é enviada pelo controlador de arranjo 11 para o disco de estado sólido 22 não inclui as informações de indicação do bloco lógico. Portanto, após receber a solicitação de gravar dados, o controlador de SSD 220 na técnica anterior em geral seleciona múltiplos blocos e simultaneamente grava dados dentro dos múltiplos blocos, o que leva os dados a serem armazenados nos blocos em uma maneira dispersa. Entretanto, nessa modalidade, o processador 118 adiciona o identificador do bloco lógico para as múltiplas solicitações de gravar dados e envia as múltiplas solicitações de gravar dados para o disco de estado sólido 22, para instruir o disco de estado sólido 22 a gravar todos os dados-alvo nessas solicitações de gravar dados dentro do bloco lógico indicado pelas informações de indicação. Deve ser notado que uma vez que o bloco lógico inclui um ou mais blocos, gravar os dados-alvo dentro do bloco lógico é efetivamente gravar os dados-alvo dentro do um ou mais blocos incluídos no bloco lógico.
[0077] Portanto, na etapa S304, após receber as múltiplas solicitações de gravar dados, o controlador de SSD 220 pode gravar os dadosalvo portados em cada solicitação de gravar dados dentro do bloco lógico indicado pelas informações de indicação. Além disso, uma vez que a soma dos comprimentos dos dados-alvo é igual ao tamanho do bloco lógico, o bloco lógico só é preenchido após o controlador de SSD 220 gravar os dados-alvo portados nas solicitações de gravar dados dentro do bloco lógico (conforme mostrado na Figura 8).
[0078] De acordo com a maneira de implantação mostrada na Figura 7, os múltiplos pedaços de dados-alvo são armazenados em um bloco lógico, isto é, um ou mais blocos. Uma vez que esses pedaços de dados-alvo são todos gravados dentro do um ou mais blocos, e o um ou mais blocos não incluem outros dados, se esses pedaços de dados-alvo são todos liberados pelo controlador de arranjo subsequentemente, isto é, marcados como dados inválidos, uma operação de apagar pode ser realizada diretamente nos blocos sem mover dados válidos, o que reduz um problema de amplificação de gravação durante coleta de lixo.
[0079] Especificamente, quando o controlador de arranjo 11 precisa realizar uma operação de coleta de lixo no disco de estado sólido, o controlador de arranjo 11 pode em geral enviar um comando de leitura para o disco de estado sólido 22, para solicitar a leitura de dados válidos em um bloco lógico do disco de estado sólido 22. Após o disco de estado sólido 22 enviar os dados válidos para o controlador de arranjo 11, o controlador de arranjo 11 envia um comando de gravação para o disco de estado sólido 22, para solicitar a gravação dos dados válidos dentro de um novo bloco lógico. Então, o controlador de arranjo 11 envia um comando de corte para o disco de estado sólido 22, para indicar que o bloco original lógico se torna inválido. Quando está realizando uma operação de coleta de lixo dentro do disco de estado sólido, o disco de estado sólido constata que o bloco lógico é inválido e pode considerar que todos os dados armazenados no bloco lógico são dados inválidos, desse modo realizando diretamente apagamento de dados dos blocos incluídos no bloco lógico sem adquirir os dados válidos ou mover os dados válidos novamente. Desse modo, um problema de amplificação de gravação quando o disco de estado sólido realiza coleta de lixo é reduzido.
[0080] A seguir se descreve um processo de um método para gravar dados dentro de um disco de estado sólido de acordo com uma modalidade da presente invenção. O método para gravar dados dentro de um aparelho de memória flash nessa modalidade da presente invenção pode ser aplicado ao sistema de armazenamento mostrado na Figura 1 e ao controlador de arranjo 11 mostrado na Figura 6. Conforme mostrado na Figura 8, o método inclui as seguintes etapas:
[0081] Etapa S101: Um controlador de SSD 220 determina um bloco lógico em um estado a ser gravado a partir de múltiplos blocos lógicos incluídos em um SSD.
[0082] Conforme descrito acima, blocos lógicos estão em geral em quatro estados: livre, a ser gravado, cheio e ruim. Nessa modalidade, blocos lógicos no estado a ser gravado são selecionados a partir desses blocos lógicos, e são colocados em uma fila de bloco lógico. Quando dados precisam ser gravados, qualquer bloco lógico pode ser diretamente adquirido a partir da fila de bloco lógico para gravação de dados. A fila de bloco lógico é uma estrutura de dados para gerenciar blocos lógicos no estado a ser gravado. Pode ser entendido que nessa modalidade, além da fila, outra estrutura de dados, por exemplo, uma lista enlaçada, pode também ser usada para gerenciar os blocos lógicos. A fila de bloco lógico pode ser armazenada em um cache do controlador de SSD 220 ou em um chip de memória flash.
[0083] Podem existir um ou mais blocos lógicos determinados no estado a ser gravado.
[0084] Etapa S102: O controlador de SSD 220 aloca um identificador para o bloco lógico no estado a ser gravado.
[0085] O identificador pode ser um número, por exemplo, 0, 1, 2, ..., ou pode ser outro símbolo para identificar unicamente o bloco lógico no estado a ser gravado, ou pode ser qualquer combinação de um dígito, uma letra, ou outro símbolo.
[0086] Etapa S103: O controlador de SSD 220 envia o identificador que é alocado para o bloco lógico na etapa S102 para um controlador de arranjo 11.
[0087] Nessa modalidade, o controlador de SSD 220 pode enviar o identificador para o controlador de arranjo 11 usando um comando SCSI GRAVAR, onde o comando SCSI GRAVAR inclui um campo NÚMERO DE GRUPO, e o campo pode ser usado para portar o identificador.
[0088] Etapa S104: O controlador de SSD 220 envia um tamanho do bloco lógico para o controlador de arranjo 11.
[0089] Essa etapa é similar à etapa S302 na Figura 7, e detalhes não são descritos novamente no presente documento.
[0090] Etapa S105: O controlador de arranjo 11 recebe múltiplos pedaços de dados enviados por um hospedeiro 33.
[0091] Os múltiplos pedaços de dados podem ser enviados pelo hospedeiro 33 para o controlador de arranjo 11 usando-se múltiplos comandos de gravação. Especificamente, um processador 118 do controlador de arranjo 11 recebe os múltiplos pedaços de dados enviados pelo hospedeiro 33, onde cada comando de gravação porta pelo menos um pedaço de dados e uma faixa dos dados de endereço lógico de hospedeiro. Um endereço lógico de hospedeiro faz referência a um endereço de espaço de armazenamento que é apresentado pelo controlador de arranjo 11 para o hospedeiro 33. Faixas de dados de endereço lógico de hospedeiro podem não ser contíguas. Por exemplo, uma faixa de endereço lógico de hospedeiro de um pedaço de dados é 0x40.000 a 0x40.020, uma faixa de endereço lógico de hospedeiro de outro pedaço de dados é 0x10.010. a 0x10.020, e as faixas de endereço lógico de hospedeiro desses dois pedaços de dados não são contíguas. Deve ser notado que na aplicação efetiva, o comando de gravação pode portar um endereço lógico de hospedeiro inicial e um comprimento, e a faixa de endereço lógico de hospedeiro é obtida de acordo com o endereço lógico de hospedeiro inicial e o comprimento.
[0092] Etapa S106: O controlador de arranjo 11 grava os múltiplos pedaços de dados recebidos dentro de um cache 120.
[0093] Especificamente, o processador 118 do controlador de arranjo 11 grava os múltiplos pedaços de dados recebidos dentro do cache 120.
[0094] Em geral, após receber os dados enviados pelo hospedeiro 33, o controlador de arranjo 11 grava temporariamente os dados dentro do cache 120 em vez de gravar diretamente os dados dentro de um disco de estado sólido 22. Quando o espaço de armazenamento do cache 120 atinge uma marca d’água em particular, o processador 118 lê uma parte dos ou todos os dados a partir do cache 120, e envia os dados para o SSD 22 para armazenamento persistente.
[0095] Deve ser notado que as etapas S105 e S106 e as etapas S101 a S104 não são necessariamente realizadas em uma ordem em particular. Isto é, um processo de receber e armazenar temporariamente, pelo controlador de arranjo 11, dados-alvo enviados pelo hospedeiro 33 e um processo de receber informações sobre o bloco lógico enviado pelo SSD 22 não conflitam, e não são necessariamente executados em uma ordem em particular, e podem ser executados simultaneamente.
[0096] Etapa S107: O controlador de arranjo 11 lê múltiplos pedaços de dados-alvo a partir do cache 120.
[0097] Especificamente, o processador 118 do controlador de arranjo 11 lê os múltiplos pedaços de dados-alvo a partir do cache 120.
[0098] Uma soma de comprimentos dos múltiplos pedaços de dados-alvo é igual ao tamanho do bloco lógico. Nessa modalidade, para ser distinguido dos dados que são recebidos pelo controlador de arranjo 11 a partir do hospedeiro 33, dados lidos a partir do cache 120 são referidos como dadosalvo. A soma dos comprimentos desses pedaços de dados-alvo é igual ao tamanho do bloco lógico. Quando o processador 118 gera múltiplas solicitações de gravar dados e envia as múltiplas solicitações de gravar dados para o disco de estado sólido 22, pode ser considerado que cada solicitação de gravar dados porta um pedaço de dados-alvo. Pode ser entendido que quando um tamanho dos dados que são recebidos pelo controlador de arranjo 11 a partir do hospedeiro 33 e que são armazenados no cache 120 excede o tamanho do bloco lógico, o processador 118 precisa ler apenas múltiplos pedaços de dados-alvo cujo tamanho é igual ao tamanho do bloco lógico a partir do cache 120. Além disso, quando um tamanho dos dados que são recebidos pelo processador 118 a partir do hospedeiro 33 e que são armazenados no cache 120 não atinge o tamanho do bloco lógico, o processador 118 pode não ler dados a partir do cache 120, e realizar processamento até que os dados no cache 120 atinjam o tamanho do bloco lógico.
[0099] Etapa S108: O controlador de arranjo 11 envia múltiplas solicitações de gravar dados para um disco de estado sólido 22, onde cada solicitação de gravar dados porta dados-alvo, uma soma de comprimentos dos dados-alvo portados nas múltiplas solicitações de gravar dados precisa ser igual ao tamanho do bloco lógico, e cada solicitação de gravar dados porta o identificador do bloco lógico.
[0100] Especificamente, o processador 118 do controlador de arranjo 11 envia as múltiplas solicitações de gravar dados para o disco de estado sólido 22.
[0101] Pode ser entendido que se o disco de estado sólido 22 envia identificadores de múltiplos blocos lógicos para o controlador de arranjo 11, o controlador de arranjo 11 pode selecionar qualquer identificador a partir dos identificadores, e adicionar o identificador para as múltiplas solicitações de gravar dados.
[0102] Além disso, nessa modalidade, a solicitação de gravar dados que é enviada pelo controlador de arranjo 11 para o disco de estado sólido 22 pode também incluir um endereço lógico inicial e um comprimento (ou uma faixa de endereço lógico) de cada pedaço de dados-alvo. O endereço lógico no presente documento é diferente do endereço lógico de hospedeiro na etapa S105. O endereço lógico no presente documento é um endereço de espaço de armazenamento que é apresentado pelo disco de estado sólido 22 para o controlador de arranjo 11, enquanto que o endereço lógico de hospedeiro na etapa S105 é o endereço lógico do espaço de armazenamento que é apresentado pelo controlador de arranjo 11 para o hospedeiro 33. Além disso, deve ser notado que quando o controlador de arranjo 11 designa a faixa de endereço lógico, faixas de endereço lógico de todos os dados-alvo são contíguos. O controlador de arranjo 11 envia o endereço lógico inicial e o comprimento de cada pedaço de dados-alvo para o disco de estado sólido 22. Após gravar os dados-alvo dentro dos blocos incluídos no bloco lógico, o controlador de SSD 220 pode armazenar, em uma FTL, uma correspondência entre os endereços lógicos iniciais e os endereços físicos dentro dos quais os dados-alvo são efetivamente gravados. Se o controlador de arranjo 11 precisa ler os dados-alvo subsequentemente, o controlador de arranjo 11 pode adicionar o endereço lógico inicial e o comprimento dos dados-alvo para uma solicitação de ler dados, e enviar a solicitação de ler dados para o disco de estado sólido 22. O controlador de SSD 220 pode adquirir um endereço físico dos dados-alvo de acordo com o endereço lógico, o comprimento, e correspondência armazenada na FTL, de modo a ler os dados-alvo e enviar os dados-alvo para o controlador de arranjo 11.
[0103] Etapa S110: O controlador de SSD 220 recupera o identificador do bloco lógico.
[0104] Por ter sido o bloco lógico preenchido com dados, e estar no estado cheio (cheio), o controlador de SSD 220 pode recuperar o identificador, deletar o bloco lógico a partir da fila de bloco lógico, e alocar o identificador para outro bloco lógico no estado a ser gravado.
[0105] A seguir se descreve um processo de outro método para gravar dados dentro de um disco de estado sólido de acordo com uma modalidade da presente invenção. O método para gravar dados dentro de um aparelho de memória flash nessa modalidade da presente invenção pode ser aplicado ao sistema de armazenamento mostrado na Figura 1 e ao controlador de arranjo 11 mostrado na Figura 6. Conforme mostrado na Figura 10, o método inclui as seguintes etapas:
[0106] Etapa S201: Um controlador de arranjo 11 recebe múltiplos pedaços de dados enviados por um hospedeiro 33. Essa etapa é similar à etapa S105 mostrada na Figura 8, referência pode ser feita à descrição da etapa S105, e detalhes não são descritos novamente no presente documento.
[0107] Etapa S202: O controlador de arranjo 11 grava os múltiplos pedaços de dados recebidos dentro de um cache 120. Essa etapa é similar à etapa S106 mostrada na Figura 8, referência pode ser feita à descrição da etapa S106, e detalhes não são descritos novamente no presente documento.
[0108] Etapa S203: O controlador de arranjo 11 recebe uma faixa de endereço lógico de um bloco lógico enviado por um controlador de SSD 220.
[0109] Especificamente, um processador 118 do controlador de arranjo 11 recebe a faixa de endereço lógico do bloco lógico. Nessa modalidade, cada bloco lógico corresponde a uma faixa de endereço lógico. Por exemplo, uma faixa de endereço lógico que corresponde a um bloco lógico é 0 MB a 1.023 MB, uma faixa de endereço lógico que corresponde a outro bloco lógico é 1.024 MB a 2.047 MB, e uma faixa de endereço lógico que corresponde a ainda outro bloco lógico é 2.048 MB a 3.071 MB.
[0110] Esses blocos lógicos são todos blocos lógicos no estado a ser gravado, e o controlador de SSD 220 precisa reportar as faixas de endereço lógico desses blocos lógicos para o controlador de arranjo 11.
[0111] Etapa S204: O controlador de arranjo 11 recebe um tamanho do bloco lógico enviado pelo controlador de SSD 220. Essa etapa é similar à etapa S104 mostrada na Figura 8, referência pode ser feita à descrição da etapa S104, e detalhes não são descritos novamente no presente documento.
[0112] De maneira similar, as etapas S201 a S203 e a etapa S204 não são necessariamente realizadas em uma ordem em particular.
[0113] Etapa S205: O controlador de arranjo 11 lê dados-alvo a partir do cache 120. Essa etapa é similar à etapa S107 mostrada na Figura 8, referência pode ser feita à descrição da etapa S107, e detalhes não são descritos novamente no presente documento.
[0114] Etapa S206: O controlador de arranjo 11 envia múltiplas solicitações de gravar dados para um disco de estado sólido 22.
[0115] Especificamente, o processador 118 do controlador de arranjo 11 envia as múltiplas solicitações de gravar dados para o disco de estado sólido 22, onde cada solicitação de gravar dados pode portar dadosalvo, uma soma de comprimentos dos dados-alvo portados nas múltiplas solicitações de gravar dados precisa ser igual ao tamanho do bloco lógico, e cada solicitação de gravar dados porta um endereço lógico inicial e um comprimento dos dados-alvo. O endereço lógico inicial dos dados-alvo e um endereço lógico final dos dados-alvo pertencem ambos a uma faixa de endereço lógico de um mesmo bloco lógico, e o endereço lógico final é obtido de acordo com o endereço lógico inicial e o comprimento. Portanto, pode ser considerado que a faixa de endereço lógico dos dados-alvo portados em cada solicitação de gravar dados é uma subfaixa da faixa de endereço lógico do bloco lógico. Quando recebe faixas de endereço lógico de múltiplos blocos lógicos, o controlador de arranjo 11 pode selecionar qualquer uma dentre as faixas de endereço lógico para determinar o endereço lógico inicial e o comprimento dos dados-alvo.
[0116] Etapa S207: após receber as múltiplas solicitações de gravar dados, o controlador de SSD 220 determina um bloco lógico que corresponde a dados-alvo portados em cada solicitação de gravar dados.
[0117] Nessa modalidade, uma vez que cada bloco lógico corresponde a uma faixa de endereço lógico, o controlador de SSD 220 pode determinar, de acordo com o endereço lógico inicial e o comprimento que são portados em cada solicitação de gravar dados e a faixa de endereço lógico que corresponde a cada bloco lógico, o bloco lógico que corresponde a cada pedaço de dados-alvo. Por exemplo, para dados-alvo portados em uma das solicitações de gravar dados, se um endereço lógico inicial é 1.010 MB e um comprimento é 10 KB, um bloco lógico que corresponde aos dados-alvo é um bloco lógico cuja faixa de endereço lógico é 0 MB a 1.023 MB.
[0118] Etapa S208: O controlador de SSD 220 grava os dadosalvo portados em cada solicitação de gravar dados dentro do bloco lógico correspondente.
[0119] De acordo com a maneira de implantação mostrada na Figura 10, o controlador de arranjo 11 pode também gravar um segmento de dados com endereços lógicos contíguos dentro de um ou mais blocos.
[0120] Com referência às maneiras de implantação mostradas na Figura 9 e na Figura 10, em outra maneira de implantação da presente invenção, o disco de estado sólido 22 pode dividir o espaço de armazenamento de um chip de memória flash 222 em pelo menos duas partes, onde cada parte inclui alguns blocos lógicos. Para uma das partes, o disco de estado sólido 22 aloca um identificador para cada bloco lógico incluído na parte; para a outra parte, o disco de estado sólido 22 aloca uma faixa de endereço lógico para cada bloco lógico incluído na parte. O identificador de cada bloco lógico na primeira parte e a faixa de endereço lógico de cada bloco lógico na segunda parte são reportados para o controlador de arranjo 11. Após ler múltiplos pedaços de dados-alvo cujos comprimentos são igual a um tamanho de um bloco lógico a partir do cache 120, o controlador de arranjo 11 adiciona os múltiplos pedaços de dados-alvo a múltiplas solicitações de gravar dados, e envia as múltiplas solicitações de gravar dados para o disco de estado sólido 22, onde cada solicitação de gravar dados das múltiplas solicitações de gravar dados pode incluir um identificador do bloco lógico, ou pode incluir um endereço lógico inicial e um comprimento (o que pode ser considerado como uma subfaixa de uma faixa de endereço lógico). Isto é, nessa maneira de implantação, o controlador de arranjo 11 pode enviar as múltiplas solicitações de gravar dados para o disco de estado sólido 22 na maneira de implantação mostrada na Figura 9, ou pode enviar as múltiplas solicitações de gravar dados para o disco de estado sólido 22 na maneira de implantação mostrada na Figura 10. Para o disco de estado sólido 22, quando uma solicitação de gravar dados recebida pelo disco de estado sólido 22 porta um identificador de um bloco lógico, o disco de estado sólido 22 determina o bloco lógico de acordo com o identificador e grava dados dentro do bloco lógico; quando uma solicitação de gravar dados recebida pelo disco de estado sólido 22 porta uma subfaixa de uma faixa de endereço lógico, o disco de estado sólido 22 pode determinar um bloco lógico de acordo com a subfaixa e a faixa de endereço lógico que corresponde a cada bloco lógico e gravar dados dentro do bloco lógico.
[0121] Opcionalmente, na supracitada maneira de implantação, o espaço de armazenamento do chip de memória flash 222 pode incluir adicionalmente outra parte. Na parte, o disco de estado sólido 22 pode determinar um bloco dentro do qual dados enviados pelo controlador de arranjo 11 são gravados. Isto é, uma solicitação de gravar dados que é enviada pelo controlador de arranjo 11 para o disco de estado sólido 22 pode não portar um identificador de um bloco lógico ou uma faixa de endereço lógico de um bloco lógico. Nesse caso, o disco de estado sólido 22 seleciona um ou mais blocos para gravação de dados, em vez de gravar os dados dentro de um bloco lógico designado pelo controlador de arranjo 11.
[0122] Pode ser entendido que dois quaisquer dos supracitados três tipos de divisão de espaço de armazenamento e maneiras de implantação podem ser combinados, o que é mais flexível comparado à execução apenas da maneira de implantação mostrada na Figura 9 ou na Figura 10, e pode atender múltiplas exigências.
[0123] Conforme mostrado na Figura 11, uma modalidade da presente invenção fornece adicionalmente um aparelho 700 para controlar um disco de estado sólido para gravar dados, onde o disco de estado sólido é localizado em um sistema de armazenamento, o sistema de armazenamento inclui adicionalmente um controlador de arranjo, e o aparelho é localizado no controlador de arranjo. Especificamente, o aparelho inclui um módulo de recebimento 701 e um módulo de processamento 702, onde o módulo de recebimento 701 é configurado para receber informações sobre um bloco lógico enviadas pelo disco de estado sólido, onde as informações sobre o bloco lógico incluem um tamanho do bloco lógico e informações de indicação do bloco lógico; e o módulo de processamento 702 é configurado para enviar múltiplas solicitações de gravar dados para o disco de estado sólido, onde cada solicitação de gravar dados porta dados-alvo, cada solicitação de gravar dados é usada para instruir o disco de estado sólido a gravar os dados-alvo dentro do bloco lógico indicado pelas informações de indicação do bloco lógico, e uma soma de comprimentos dos dados-alvo portados nas múltiplas solicitações de gravar dados é igual ao tamanho do bloco lógico.
[0124] Opcionalmente, o disco de estado sólido inclui um chip de memória flash, onde o chip de memória flash inclui múltiplos canais, cada canal inclui múltiplos blocos, o bloco lógico inclui um ou mais blocos, e os blocos incluídos no bloco lógico são localizados em diferentes canais.
[0125] Opcionalmente, o bloco lógico é um bloco lógico em um estado a ser gravado, onde o bloco lógico no estado a ser gravado faz referência a um bloco lógico que foi alocado pelo disco de estado sólido para armazenar dados.
[0126] Opcionalmente, as informações de indicação do bloco lógico incluem um identificador que é alocado pelo disco de estado sólido para o bloco lógico, e cada solicitação de gravar dados inclui o identificador do bloco lógico.
[0127] Opcionalmente, as informações de indicação do bloco lógico incluem uma faixa de endereço lógico que é alocada pelo disco de estado sólido para o bloco lógico, e cada solicitação de gravar dados inclui uma subfaixa da faixa de endereço lógico.
[0128] Conforme mostrado na Figura 12, uma modalidade fornece adicionalmente outro aparelho 800 para controlar um disco de estado sólido para gravar dados, onde o disco de estado sólido inclui um chip de memória flash e um controlador de disco de estado sólido, o chip de memória flash inclui múltiplos canais, cada canal inclui múltiplos blocos, e o aparelho é localizado no controlador de disco de estado sólido. O aparelho especificamente inclui um módulo transceptor 801 e um módulo de gravação 802, ondeo módulo transceptor 801 é configurado para: enviar informações sobre um bloco lógico para um controlador de arranjo, onde as informações sobre o bloco lógico incluem um tamanho do bloco lógico e informações de indicação do bloco lógico; e receber múltiplas solicitações de gravar dados enviadas pelo controlador de arranjo, onde cada solicitação de gravar dados porta dados-alvo, cada solicitação de gravar dados é usada para instruir o disco de estado sólido a gravar os dados-alvo dentro do bloco lógico indicado pelas informações de indicação do bloco lógico, e uma soma de comprimentos dos dados-alvo portados nas múltiplas solicitações de gravar dados é igual ao tamanho do bloco lógico; e o módulo de gravação 802 é configurado para gravar os dados-alvo portados em cada solicitação de gravar dados dentro do bloco lógico indicado pelas informações de indicação.
[0129] Opcionalmente, o bloco lógico inclui um ou mais blocos, e os blocos incluídos no bloco lógico são localizados em diferentes canais.
[0130] Opcionalmente, o aparelho 800 inclui adicionalmente um módulo de alocação 803, configurado para: determinar que o bloco lógico é um bloco lógico em um estado a ser gravado, onde o bloco lógico no estado a ser gravado faz referência a um bloco lógico que foi alocado para armazenar dados; e alocar as informações de indicação para o bloco lógico no estado a ser gravado.
[0131] Opcionalmente, as informações de indicação do bloco lógico incluem um identificador do bloco lógico, cada solicitação de gravar dados inclui o identificador do bloco lógico, e o módulo de gravação é especificamente configurado para gravar, de acordo com o identificador do bloco lógico, os dados-alvo em cada solicitação de gravar dados dentro do bloco lógico que corresponde ao identificador.
[0132] Opcionalmente, as informações de indicação do bloco lógico incluem uma faixa de endereço lógico do bloco lógico, cada solicitação de gravar dados inclui uma subfaixa da faixa de endereço lógico, e o módulo de gravação é especificamente configurado para determinar, de acordo com a subfaixa da faixa de endereço lógico em cada solicitação de gravar dados e a faixa de endereço lógico do bloco lógico, o bloco lógico que corresponde aos dados-alvo em cada solicitação de gravar dados, e gravar os dados-alvo em cada solicitação de gravar dados dentro do bloco lógico correspondente.
[0133] Opcionalmente, o módulo de alocação 803 é configurado adicionalmente para recuperar as informações de indicação alocadas para o bloco lógico.

Claims (10)

1. Controlador de arranjo (11), CARACTERIZADO pelo fato de que o controlador de arranjo (11) está localizado em um sistema de armazenamento, o sistema de armazenamento compreende o controlador de arranjo (11) e um disco de estado sólido (22), o disco de estado sólido (22) compreende um chip de memória flash (222), e o chip de memória flash (222) compreende múltiplos blocos, em que o controlador de arranjo (11) compreende uma interface de comunicações (128) e um processador (118); a interface de comunicações (128) é configurada para se comunicar com o disco de estado sólido (22); e o processador (118) é configurado para: receber informações sobre um bloco lógico enviadas pelo disco de estado sólido, em que as informações sobre o bloco lógico compreendem um tamanho do bloco lógico e informações de indicação do bloco lógico, e o bloco lógico compreende um ou mais blocos, em que os blocos compreendidos no bloco lógico estão localizados em diferentes canais; e enviar (S303) múltiplas solicitações de gravar dados para o disco de estado sólido, em que cada solicitação de gravar dados inclui dados-alvo, em que dados-alvo são lidos a partir de um cache do controlador de arranjo, cada solicitação de gravar dados é usada para instruir o disco de estado sólido a gravar os dados-alvo dentro do bloco lógico indicado pelas informações de indicação do bloco lógico, e uma soma de comprimentos dos dados-alvo incluídos nas múltiplas solicitações de gravar dados é igual ao tamanho do bloco lógico, em que as informações de indicação do bloco lógico compreendem um identificador que é alocado pelo disco de estado sólido ao bloco lógico, e cada solicitação de gravar dados compreende o identificador do bloco lógico.
2. Controlador de arranjo, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que o bloco lógico está em um estado a ser gravado, e em que o bloco lógico no estado a ser gravado indica que o bloco lógico foi alocado pelo disco de estado sólido (22) para armazenar dados.
3. Método para controlar um disco de estado sólido para gravar dados, CARACTERIZADO pelo fato de que o método é aplicado a um sistema de armazenamento, o sistema de armazenamento compreende um controlador de arranjo (11) e o disco de estado sólido (22), o disco de estado sólido (22) compreende um chip de memória flash (222) e um controlador de disco de estado sólido (220), e o chip de memória flash compreende múltiplos blocos; e o método é realizado pelo controlador de disco de estado sólido e compreende: enviar informações sobre um bloco lógico para o controlador de arranjo, em que as informações sobre o bloco lógico compreendem um tamanho do bloco lógico e informações de indicação do bloco lógico, e o bloco lógico compreende um ou mais blocos, em que os blocos compreendidos no bloco lógico estão localizados em diferentes canais; receber múltiplas solicitações de gravar dados enviadas pelo controlador de arranjo, em que cada solicitação de gravar dados inclui dadosalvo, em que dados-alvo são lidos a partir de um cache do controlador de arranjo, cada solicitação de gravar dados é usada para instruir o disco de estado sólido a gravar os dados-alvo dentro do bloco lógico indicado pelas informações de indicação do bloco lógico, e uma soma de comprimentos dos dados-alvo incluídos nas múltiplas solicitações de gravar dados é igual ao tamanho do bloco lógico, em que as informações de indicação do bloco lógico compreendem um identificador do bloco lógico, e cada solicitação de gravar dados compreende o identificador do bloco lógico; e gravar (S304) os dados-alvo incluídos em cada solicitação de gravar dados dentro do bloco lógico indicado pelas informações de indicação, compreendendo: gravar os dados-alvo em cada solicitação de gravar dados dentro do bloco lógico correspondente ao identificador, de acordo com o identificador do bloco lógico.
4. Método, de acordo com a reivindicação 3, CARACTERIZADO pelo fato de que o método compreende adicionalmente: determinar (S101) que o bloco lógico está em um estado a ser gravado, em que o bloco lógico no estado a ser gravado indica que o bloco lógico foi alocado para armazenar dados; e alocar as informações de indicação ao bloco lógico no estado a ser gravado.
5. Método, de acordo com a reivindicação 3, CARACTERIZADO pelo fato de que após a gravação dos dados-alvo dentro do bloco lógico indicado pelas informações de indicação, o método compreende adicionalmente recuperar as informações de indicação alocadas ao bloco lógico.
6. Aparelho para controlar um disco de estado sólido para gravar dados, CARACTERIZADO pelo fato de que o disco de estado sólido está localizado em um sistema de armazenamento, o disco de estado sólido compreende um chip de memória flash, o chip de memória flash compreende múltiplos blocos, o sistema de armazenamento compreende adicionalmente um controlador de arranjo, e o aparelho está localizado no controlador de arranjo e compreende: um módulo de recebimento (701), configurado para receber informações sobre um bloco lógico enviadas pelo disco de estado sólido, em que as informações sobre o bloco lógico compreendem um tamanho do bloco lógico e informações de indicação do bloco lógico, e o bloco lógico compreende um ou mais blocos, em que os blocos compreendidos no bloco lógico estão localizados em diferentes canais; e um módulo de processamento (702), configurado para enviar múltiplas solicitações de gravar dados para o disco de estado sólido, em que cada solicitação de gravar dados inclui dados-alvo, em que dados-alvo são lidos a partir de um cache do controlador de arranjo, cada solicitação de gravar dados é usada para instruir o disco de estado sólido a gravar os dados-alvo dentro do bloco lógico indicado pelas informações de indicação do bloco lógico, e uma soma de comprimentos dos dados-alvo incluídos nas múltiplas solicitações de gravar dados é igual ao tamanho do bloco lógico, em que as informações de indicação do bloco lógico compreendem um identificador que é alocado pelo disco de estado sólido ao bloco lógico, e cada solicitação de gravar dados compreende o identificador do bloco lógico.
7. Aparelho, de acordo com a reivindicação 6, CARACTERIZADO pelo fato de que o bloco lógico está em um estado a ser gravado, e em que o bloco lógico no estado a ser gravado indica que o bloco lógico foi alocado pelo disco de estado sólido para armazenar dados.
8. Aparelho para controlar um disco de estado sólido para gravar dados, CARACTERIZADO pelo fato de que o disco de estado sólido (22) compreende um chip de memória flash (222) e um controlador de disco de estado sólido (220), o chip de memória flash (222) compreende múltiplos blocos, e o aparelho está localizado no controlador de disco de estado sólido (220) e compreende: um módulo transceptor (801), configurado para: enviar informações sobre um bloco lógico para um controlador de arranjo, em que as informações sobre o bloco lógico compreendem um tamanho do bloco lógico e informações de indicação do bloco lógico, e o bloco lógico compreende um ou mais blocos, em que os blocos compreendidos no bloco lógico estão localizados em diferentes canais; e receber múltiplas solicitações de gravar dados enviadas pelo controlador de arranjo, em que cada solicitação de gravar dados inclui dadosalvo, em que dados-alvo são lidos a partir de um cache do controlador de arranjo, cada solicitação de gravar dados é usada para instruir o disco de estado sólido a gravar os dados-alvo dentro do bloco lógico indicado pelas informações de indicação do bloco lógico, e uma soma de comprimentos dos dados-alvo incluídos nas múltiplas solicitações de gravar dados é igual ao tamanho do bloco lógico, em que as informações de indicação do bloco lógico compreendem um identificador que é alocado pelo disco de estado sólido ao bloco lógico, e cada solicitação de gravar dados compreende o identificador do bloco lógico; e um módulo de gravação (802), configurado para gravar os dados-alvo incluídos em cada solicitação de gravar dados dentro do bloco lógico indicado pelas informações de indicação.
9. Aparelho, de acordo com a reivindicação 8, CARACTERIZADO pelo fato de que o aparelho compreende adicionalmente um módulo de alocação, configurado para: determinar que o bloco lógico está em um estado a ser gravado, em que o bloco lógico no estado a ser gravado indica que o bloco lógico foi alocado para armazenar dados; e alocar as informações de indicação ao bloco lógico no estado a ser gravado.
10. Aparelho, de acordo com a reivindicação 8, CARACTERIZADO pelo fato de que o módulo de alocação é configurado adicionalmente para recuperar as informações de indicação alocadas ao bloco lógico após a gravação dos dados-alvo dentro do bloco lógico indicado pelas informações de indicação.
BR112016019305-9A 2015-12-03 2015-12-03 Controlador de arranjo, disco de estado sólido, e método para controlar disco de estado sólido para gravar dados BR112016019305B1 (pt)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2015/096357 WO2017092015A1 (zh) 2015-12-03 2015-12-03 一种阵列控制器、固态硬盘和控制固态硬盘写数据的方法

Publications (2)

Publication Number Publication Date
BR112016019305A2 BR112016019305A2 (pt) 2017-10-03
BR112016019305B1 true BR112016019305B1 (pt) 2022-08-16

Family

ID=58794303

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112016019305-9A BR112016019305B1 (pt) 2015-12-03 2015-12-03 Controlador de arranjo, disco de estado sólido, e método para controlar disco de estado sólido para gravar dados

Country Status (13)

Country Link
US (1) US10761731B2 (pt)
EP (1) EP3220275B1 (pt)
JP (1) JP6319607B2 (pt)
KR (1) KR102013430B1 (pt)
CN (1) CN107209719B (pt)
AU (1) AU2015381014B2 (pt)
BR (1) BR112016019305B1 (pt)
CA (1) CA2938242C (pt)
MX (1) MX361249B (pt)
RU (1) RU2661280C2 (pt)
SG (1) SG11201606555QA (pt)
WO (1) WO2017092015A1 (pt)
ZA (1) ZA201605526B (pt)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2978845C (en) 2016-11-11 2021-08-31 Huawei Technologies Co., Ltd. Storage system and system garbage collection method
CN109491587B (zh) * 2017-09-11 2021-03-23 华为技术有限公司 数据访问的方法及装置
WO2019080015A1 (zh) * 2017-10-25 2019-05-02 华为技术有限公司 一种数据读写方法、装置和存储服务器
CN109189337B (zh) * 2018-08-21 2021-12-17 浪潮电子信息产业股份有限公司 一种选择数据块的方法、装置、设备及可读存储介质
KR20200078046A (ko) 2018-12-21 2020-07-01 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
CN109976673B (zh) * 2019-03-29 2023-04-25 新华三技术有限公司 一种数据写入方法和装置
CN110309078B (zh) * 2019-07-02 2021-07-02 北京计算机技术及应用研究所 一种全闪存储阵列的主机与固态盘协同垃圾回收方法
CN112306896B (zh) * 2019-07-31 2022-12-27 华为技术有限公司 一种垃圾回收方法及装置
JP2021033847A (ja) 2019-08-28 2021-03-01 キオクシア株式会社 メモリシステムおよび制御方法
US11099785B2 (en) * 2019-12-23 2021-08-24 Micron Technology, Inc. Linking access commands for a memory sub-system
RU2759503C1 (ru) * 2021-04-19 2021-11-15 Акционерное Общество "Крафтвэй Корпорэйшн Плс" Способ сборки мусора в твердотельном накопителе информации
WO2022240318A1 (ru) * 2021-05-13 2022-11-17 Общество с ограниченной ответственностью "РЭЙДИКС" Способ управления системой хранения данных и система хранения данных
CN113568582B (zh) * 2021-07-30 2023-05-26 重庆紫光华山智安科技有限公司 数据管理方法、装置和存储设备
US20230128077A1 (en) * 2021-10-22 2023-04-27 EMC IP Holding Company, LLC System and Method for Aggregation of Write Commits To Control Written Block Size
CN114415963B (zh) * 2021-12-03 2023-09-19 武汉深之度科技有限公司 一种硬盘数据清理方法、装置及计算设备

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8108590B2 (en) * 2000-01-06 2012-01-31 Super Talent Electronics, Inc. Multi-operation write aggregator using a page buffer and a scratch flash block in each of multiple channels of a large array of flash memory to reduce block wear
RU2280273C2 (ru) * 2003-07-16 2006-07-20 Открытое акционерное общество "Научно-производственное объединение "Прибор" Способ структурирования и записи цифровой информации и устройство для его осуществления
JP4287433B2 (ja) * 2003-11-18 2009-07-01 パナソニック株式会社 ファイル記録装置
US7433993B2 (en) * 2003-12-30 2008-10-07 San Disk Corportion Adaptive metablocks
US7562202B2 (en) * 2004-07-30 2009-07-14 United Parcel Service Of America, Inc. Systems, methods, computer readable medium and apparatus for memory management using NVRAM
JPWO2009001514A1 (ja) * 2007-06-22 2010-08-26 パナソニック株式会社 メモリコントローラ、不揮発性記憶装置、ファイルシステム、不揮発性記憶システム、データ書き込み方法及びデータ書き込みプログラム
JP4675985B2 (ja) * 2008-03-01 2011-04-27 株式会社東芝 メモリシステム
JP4758518B2 (ja) * 2009-06-18 2011-08-31 パナソニック株式会社 不揮発性記憶装置、アクセス装置、不揮発性記憶システム及びメモリコントローラ
US9135190B1 (en) * 2009-09-04 2015-09-15 Bitmicro Networks, Inc. Multi-profile memory controller for computing devices
US9753847B2 (en) * 2009-10-27 2017-09-05 Western Digital Technologies, Inc. Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping
TWI428917B (zh) * 2009-11-25 2014-03-01 Silicon Motion Inc 快閃記憶裝置、資料儲存系統、以及資料儲存系統之運作方法
US8285946B2 (en) * 2009-12-15 2012-10-09 International Business Machines Corporation Reducing access contention in flash-based memory systems
US8316176B1 (en) * 2010-02-17 2012-11-20 Western Digital Technologies, Inc. Non-volatile semiconductor memory segregating sequential data during garbage collection to reduce write amplification
US8850114B2 (en) * 2010-09-07 2014-09-30 Daniel L Rosenband Storage array controller for flash-based storage devices
US20150121003A1 (en) * 2010-09-07 2015-04-30 Daniel L. Rosenband Storage controllers
JP5388976B2 (ja) * 2010-09-22 2014-01-15 株式会社東芝 半導体記憶制御装置
US8484408B2 (en) * 2010-12-29 2013-07-09 International Business Machines Corporation Storage system cache with flash memory in a raid configuration that commits writes as full stripes
US8832371B2 (en) * 2011-04-04 2014-09-09 Hitachi, Ltd. Storage system with multiple flash memory packages and data control method therefor
US8635407B2 (en) * 2011-09-30 2014-01-21 International Business Machines Corporation Direct memory address for solid-state drives
KR20130076429A (ko) * 2011-12-28 2013-07-08 삼성전자주식회사 메모리 장치의 저장 영역 관리 방법 및 이를 이용한 저장 장치
KR20130127274A (ko) * 2012-05-14 2013-11-22 삼성전자주식회사 메모리 오퍼레이션 타이밍 제어 방법 및 이를 이용한 메모리 시스템
KR20140040998A (ko) * 2012-09-27 2014-04-04 삼성전자주식회사 로그기반 데이터 저장 시스템의 관리방법
US20150212752A1 (en) * 2013-04-08 2015-07-30 Avalanche Technology, Inc. Storage system redundant array of solid state disk array
US9672167B2 (en) * 2013-07-22 2017-06-06 Futurewei Technologies, Inc. Resource management for peripheral component interconnect-express domains
CN103488583B (zh) * 2013-09-09 2016-08-10 华中科技大学 一种高性能高可靠的固态盘实现方法
CN103744614B (zh) * 2013-12-17 2017-07-07 记忆科技(深圳)有限公司 固态硬盘访问的方法及其固态硬盘
CN105094685B (zh) * 2014-04-29 2018-02-06 国际商业机器公司 进行存储控制的方法和设备
EP3260985B1 (en) 2014-06-27 2019-02-27 Huawei Technologies Co., Ltd. Controller, flash memory apparatus, and method for writing data into flash memory apparatus
CN104484283B (zh) * 2014-11-27 2018-03-27 记忆科技(深圳)有限公司 一种降低固态硬盘写放大的方法
US9870153B2 (en) * 2014-12-29 2018-01-16 Sandisk Technologies Llc Non-volatile memory systems utilizing storage address tables

Also Published As

Publication number Publication date
KR20170083963A (ko) 2017-07-19
WO2017092015A1 (zh) 2017-06-08
US10761731B2 (en) 2020-09-01
JP2018502343A (ja) 2018-01-25
RU2016138160A (ru) 2018-04-02
MX2016012054A (es) 2017-06-19
ZA201605526B (en) 2019-04-24
RU2016138160A3 (pt) 2018-04-02
JP6319607B2 (ja) 2018-05-09
CN107209719B (zh) 2018-10-09
CA2938242C (en) 2017-10-31
RU2661280C2 (ru) 2018-07-13
MX361249B (es) 2018-11-30
US20180165014A1 (en) 2018-06-14
EP3220275B1 (en) 2020-11-04
EP3220275A1 (en) 2017-09-20
CA2938242A1 (en) 2017-06-03
KR102013430B1 (ko) 2019-08-22
BR112016019305A2 (pt) 2017-10-03
AU2015381014A1 (en) 2017-06-22
CN107209719A (zh) 2017-09-26
SG11201606555QA (en) 2017-07-28
EP3220275A4 (en) 2018-02-28
AU2015381014B2 (en) 2018-02-22

Similar Documents

Publication Publication Date Title
BR112016019305B1 (pt) Controlador de arranjo, disco de estado sólido, e método para controlar disco de estado sólido para gravar dados
TWI533152B (zh) 資料儲存裝置及方法
TW201917579A (zh) 記憶體系統及控制方法
US20200192600A1 (en) Memory system and method for controlling nonvolatile
EP3346387B1 (en) Storage system and system garbage collection method
KR20100011698A (ko) 데이터 머지를 수행하는 반도체 스토리지 시스템 및 그제어 방법
US11029873B2 (en) Storage device with expandable logical address space and operating method thereof
WO2017054636A1 (zh) 虚拟快照处理方法及装置
US11429519B2 (en) System and method for facilitating reduction of latency and mitigation of write amplification in a multi-tenancy storage drive
CN110119245B (zh) 用于操作nand闪存物理空间以扩展存储器容量的方法和系统
CN108536619B (zh) 快速恢复ftl表的方法与装置
TW201624288A (zh) 快取記憶體裝置及非暫態電腦可讀取記錄媒體
TW201624491A (zh) 資訊處理裝置及非暫態電腦可讀取記錄媒體
KR102053406B1 (ko) 데이터 저장 장치 및 그 동작 방법
US11422931B2 (en) Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization
JP7167295B2 (ja) メモリシステムおよび制御方法
CN116339978A (zh) 资源分配方法、装置、设备及存储介质
JP2022179798A (ja) メモリシステムおよび制御方法

Legal Events

Date Code Title Description
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B350 Update of information on the portal [chapter 15.35 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 03/12/2015, OBSERVADAS AS CONDICOES LEGAIS