KR20160015190A - 컨트롤러, 플래시 메모리 장치, 및 플래시 메모리 장치에 데이터를 기록하는 방법 - Google Patents

컨트롤러, 플래시 메모리 장치, 및 플래시 메모리 장치에 데이터를 기록하는 방법 Download PDF

Info

Publication number
KR20160015190A
KR20160015190A KR1020157017897A KR20157017897A KR20160015190A KR 20160015190 A KR20160015190 A KR 20160015190A KR 1020157017897 A KR1020157017897 A KR 1020157017897A KR 20157017897 A KR20157017897 A KR 20157017897A KR 20160015190 A KR20160015190 A KR 20160015190A
Authority
KR
South Korea
Prior art keywords
block
capacity
controller
data
flash memory
Prior art date
Application number
KR1020157017897A
Other languages
English (en)
Other versions
KR101677474B1 (ko
Inventor
천이 장
춘궁 린
밍창 웨이
Original Assignee
후아웨이 테크놀러지 컴퍼니 리미티드
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 후아웨이 테크놀러지 컴퍼니 리미티드 filed Critical 후아웨이 테크놀러지 컴퍼니 리미티드
Publication of KR20160015190A publication Critical patent/KR20160015190A/ko
Application granted granted Critical
Publication of KR101677474B1 publication Critical patent/KR101677474B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; 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/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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/88Masking faults in memories by using spares or by reconfiguring with partially good memories
    • G11C29/883Masking faults in memories by using spares or by reconfiguring with partially good memories using a single defective memory device with reduced capacity, e.g. half capacity
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • 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/7208Multiple device management, e.g. distributing data over multiple flash devices
    • 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/7209Validity control, e.g. using flags, time stamps or sequence numbers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)
  • Read Only Memory (AREA)

Abstract

본 발명의 실시예는 컨트롤러, 플래시 메모리 장치, 및 플래시 메모리 장치에 데이터를 기록하는 방법을 제공한다. 상기 컨트롤러는 저장 시스템에 적용되고, 상기 저장 시스템은 상기 컨트롤러 및 플래시 메모리 장치를 포함하고, 상기 플래시 메모리 장치는 플래시 칩을 포함하고, 상기 플래시 칩은 블록을 포함하고, 상기 블록은 복수의 페이지를 포함하고, 상기 복수의 페이지 중 적어도 하나는 손상된 페이지이고, 상기 컨트롤러는 통신 인터페이스 및 프로세서를 포함하고, 상기 통신 인터페이스는 상기 플래시 메모리 장치와 통신하도록 구성되어 있고, 상기 프로세서는, 상기 플래시 메모리 장치에 의해 전송된 상기 블록의 용량 정보를 수신하고, 상기 블록의 용량 정보에 따라 상기 블록의 유효 용량을 획득하고 - 상기 블록의 유효 용량은 상기 손상된 페이지의 용량을 포함하지 않음 - , 타겟 데이터를 판독하고 - 상기 타겟 데이터의 크기는 상기 블록의 블록의 유효 용량임 - , 상기 플래시 메모리 장치에 상기 타겟 데이터를 전송하도록 구성되어 있으므로, 블록 활용을 향상시키고 SSD의 저장 공간을 절약한다.

Description

컨트롤러, 플래시 메모리 장치, 및 플래시 메모리 장치에 데이터를 기록하는 방법{CONTROLLER, FLASH MEMORY APPARATUS, AND METHOD FOR WRITING DATA INTO FLASH MEMORY APPARATUS}
본 발명의 실시예는 저장 기술분야에 관한 것으로서, 구체적으로, 컨트롤러, 플래시 메모리 장치, 및 플래시 메모리 장치에 데이터를 기록하는 방법에 관한 것이다.
플래시 메모리 장치는, 저장 매체가 플래시 입도(Flash granule)이며 전력 공급 정지 후에도 데이터가 사라지지 않는 특성을 가지는, 비휘발성 메모리이다. 따라서, 플래시 메모리 장치는 외부 또는 내부 메모리로 널리 사용되고 있다. 저장 매체로 플래시 입도를 사용하는 플래시 메모리 장치는, 솔리드 스테이트 드라이브(Solid State Drive; SSD)로도 나타내지는, 솔리드 스테이트 디스크(Solid State Device; SSD) 또는 다른 메모리일 수 있다.
하나의 SSD는 일반적으로 복수의 플래시 칩을 포함하고, 각 플래시 칩은 여러 블록을 포함하고, 각 블록은 복수의 페이지를 추가로 포함한다. 일부의 경우에는, 손상이 된 페이지(손상된 페이지로 나타내기도 함)가 블록에 생성될 수 있다. SSD가 손상된 페이지를 포함하는 블록에 데이터를 기록할 때, 손상된 페이지를 포함하는 블록이 데이터를 저장하기에 충분하지 않으면, 일반적으로 새로운 블록을 찾아 데이터의 오버플로우를 저장한다. 따라서, SSD에서, 일부 데이터가 기록되어 있지만, 데이터로 꽉 차지는 않은 블록이 많아서, 블록의 공간 활용이 낮아지고, SSD의 저장 공간이 낭비되게 된다.
본 발명의 실시예는 컨트롤러, 플래시 메모리 장치, 및 플래시 메모리 장치에 데이터를 기록하는 방법을 제공하여, 블록의 공간 활용을 향상시키고, SSD의 저장 공간을 절약할 수 있다.
제1 측면에 따르면, 본 발명의 실시예는 컨트롤러를 제공하고, 상기 컨트롤러는 저장 시스템에 적용되고, 상기 저장 시스템은 상기 컨트롤러 및 플래시 메모리 장치를 포함하고, 상기 플래시 메모리 장치는 플래시 칩을 포함하고, 상기 플래시 칩은 블록을 포함하고, 상기 블록은 복수의 페이지를 포함하고, 상기 복수의 페이지 중 적어도 하나는 손상된 페이지이고, 상기 컨트롤러는 통신 인터페이스 및 프로세서를 포함하고, 상기 통신 인터페이스는 상기 플래시 메모리 장치와 통신하도록 구성되어 있고, 상기 프로세서는, 상기 플래시 메모리 장치에 의해 전송된 상기 블록의 용량 정보를 수신하고, 상기 블록의 용량 정보에 따라 상기 블록의 유효 용량을 획득하고, 타겟 데이터를 판독하고, 상기 플래시 메모리 장치에 상기 타겟 데이터를 전송하도록 구성되어 있고, 상기 블록의 유효 용량은 상기 손상된 페이지의 용량을 포함하지 않으며, 상기 타겟 데이터의 크기는 상기 블록의 블록의 유효 용량이다.
제1 측면의 제1 가능 구현 방법에서, 상기 블록의 용량 정보는 상기 손상된 페이지에 대한 정보를 포함하고, 상기 손상된 페이지에 대한 정보는 상기 손상된 페이지의 용량을 나타내는데 이용되고, 상기 프로세서는 구체적으로, 상기 블록의 사전 저장된 표준 용량과 상기 손상된 페이지의 용량에 따라 상기 블록의 블록의 유효 용량을 획득하도록 구성되어 있으며, 상기 블록의 블록의 유효 용량은 상기 블록의 표준 용량에서 상기 손상된 페이지의 용량을 뺀 것이다.
제1 측면의 제2 가능 구현 방법에서, 상기 블록의 용량 정보는 상기 블록의 블록의 유효 용량을 포함한다.
제1 측면의 제3 가능 구현 방법에서, 상기 블록의 용량 정보는 상기 블록의 용량 플래그를 포함하고, 상기 컨트롤러는, 메모리 및 상기 블록의 용량 플래그와 상기 블록의 블록의 유효 용량 사이의 대응관계를 추가로 포함하고, 상기 프로세서는 구체적으로, 상기 블록의 용량 플래그에 따른 상기 블록의 블록의 유효 용량과, 상기 블록의 용량 플래그와 상기 블록의 블록의 유효 용량 사이의 상기 대응관계를 획득하도록 구성되어 있다.
제1 측면을 참조하거나 또는 제1 측면의 제1 내지 제3 가능 구현 방법 중 어느 한 방법을 참고하면, 제4 가능 구현 방법에서, 상기 컨트롤러는 캐시를 추가로 포함하고, 상기 타겟 데이터는 상기 캐시에 저장된 기록될 데이터이고, 상기 프로세서는, 복수의 데이터 기록 요청을 수신하고, 상기 캐시에 상기 기록될 데이터를 기록하도록 추가로 구성되어 있고, 상기 복수의 데이터 기록 요청은 상기 기록될 데이터를 가지고 있고, 상기 프로세서는 상기 복수의 데이터 기록 요청이 가지고 있는 상기 기록될 데이터의 크기가 상기 블록의 블록의 유효 용량과 동일한지 판단하도록 추가로 구성되어 있다.
제1 측면을 참조하거나 또는 제1 측면의 제1 내지 제3 가능 구현 방법 중 어느 한 방법을 참고하면, 제5 가능 구현 방법에서, 상기 컨트롤러는 캐시를 추가로 포함하고, 상기 타겟 데이터는 상기 캐시에 저장된 기록될 데이터의 일부분이고, 상기 프로세서는, 복수의 데이터 기록 요청을 수신하고, 상기 캐시에 상기 기록될 데이터를 기록하도록 추가로 구성되어 있으며, 상기 복수의 데이터 기록 요청은 상기 기록될 데이터를 가지고 있고, 상기 프로세서는 상기 기록될 데이터의 크기가 상기 블록의 블록의 유효 용량보다 큰지 판단하도록 추가로 구성되어 있다.
제2 측면에 따르면, 본 발명의 실시예는 플래시 메모리 장치를 제공하고, 상기 플래시 메모리 장치는 메인(primary) 컨트롤러와 플래시 칩을 포함하고, 상기 플래시 칩은 블록을 포함하고, 상기 블록은 복수의 페이지를 포함하고, 상기 복수의 페이지 중 적어도 하나는 손상된 페이지이고, 상기 플래시 칩은 타겟 데이터를 저장하도록 구성되어 있고, 상기 주 컨트롤러는, 상기 블록의 용량 정보에 대한 통계를 수집하고, 상기 블록의 용량 정보를 컨트롤러에 전송하고, 상기 컨트롤러에 의해 전송된 상기 타겟 데이터를 수신하고, 상기 블록에 상기 타겟 데이터를 기록하도록 구성되어 있고, 상기 블록의 용량 정보는 상기 블록의 유효 용량을 획득하는데 이용되고, 상기 블록의 유효 용량은 상기 손상된 페이지의 용량을 포함하지 않으며, 상기 타겟 데이터의 크기는 상기 블록의 블록의 유효 용량이다.
제2 측면의 제1 가능 구현 방법에서, 상기 주 컨트롤러는 상기 컨트롤러에 의해 전송된 질의 커맨드(query command)를 수신하도록 추가로 구성되어 있으며, 상기 질의 커맨드는 상기 블록의 용량 정보를 질의하는데 이용된다.
제2 측면의 제2 가능 구현 방법에서, 상기 주 컨트롤러는 구체적으로 상기 블록의 용량 정보를 상기 컨트롤러에 주기적으로 전송하도록 구성되어 있다.
제2 측면의 제3 가능 구현 방법에서, 상기 블록의 용량 정보를 컨트롤러에 전송하기 전에, 상기 주 컨트롤러는, 상기 블록의 용량 정보가 이전의 통계 수집을 통해 획득된 상기 블록의 용량 정보와 상이한지 판단하도록 추가로 구성되어 있다.
제2 측면을 참고하거나 또는 제2 측면의 제1 내지 제3 가능 구현 방법 중 어느 한 방법을 참고하면, 제4 가능 구현 방법에서, 상기 블록의 용량 정보는 상기 손상된 페이지에 대한 정보를 포함하고, 상기 손상된 페이지에 대한 정보는 상기 손상된 페이지의 용량을 나타내는데 이용된다.
제2 측면을 참고하거나 또는 제2 측면의 제1 내지 제3 가능 구현 방법 중 어느 한 방법을 참고하면, 제5 가능 구현 방법에서, 상기 블록의 용량 정보는 상기 블록의 블록의 유효 용량을 포함한다.
제3 측면에 따르면, 본 발명의 일 실시예는 플래시 메모리 장치에 데이터를 저장하는 방법을 제공하며, 상기 방법은 저장 시스템에 적용되고, 상기 저장 시스템은 컨트롤러와 상기 플래시 메모리 장치를 포함하고, 상기 플래시 메모리 장치는 플래시 칩을 포함하고, 상기 플래시 칩은 블록을 포함하고, 상기 블록은 복수의 페이지를 포함하고, 상기 복수의 페이지 중 적어도 하나는 손상된 페이지이고, 상기 방법은, 상기 컨트롤러가 상기 플래시 메모리 장치에 의해 전송된 상기 블록의 용량 정보를 수신하는 단계; 상기 컨트롤러가 상기 블록의 용량 정보에 따라 상기 블록의 유효 용량을 획득하는 단계; 상기 컨트롤러가 타켓 데이터를 판독하는 단계; 및 상기 컨트롤러가 상기 타겟 데이터를 상기 플래시 메모리 장치에 전송하는 단계를 포함하고, 상기 블록의 유효 용량은 상기 손상된 페이지의 용량을 포함하지 않으며, 상기 타겟 데이터의 크기는 상기 블록의 블록의 유효 용량이다.
제3 측면의 제1 가능 구현 방법에서, 상기 블록의 용량 정보는 상기 손상된 페이지에 대한 정보를 포함하고, 상기 손상된 페이지에 대한 정보는 상기 손상된 페이지의 용량을 나타내는데 이용되고, 상기 컨트롤러가 상기 블록의 용량 정보에 따라 상기 블록의 유효 용량을 획득하는 상기 단계는, 상기 컨트롤러가, 상기 블록의 사전 저장된 표준 용량과 상기 손상된 페이지의 용량에 따라 상기 블록의 블록의 유효 용량을 획득하는 단계를 포함하고, 상기 블록의 블록의 유효 용량은 상기 블록의 표준 용량에서 상기 손상된 페이지의 용량을 뺀 것이다.
제3 측면의 제2 가능 구현 방법에서, 상기 블록의 용량 정보는 상기 블록의 블록의 유효 용량을 포함한다.
제3 측면의 제3 가능 구현 방법에서, 상기 블록의 용량 정보는 상기 블록의 용량 플래그를 포함하고, 상기 블록의 용량 플래그와 상기 블록의 블록의 유효 용량 사이의 대응관계는 상기 메모리에 저장되어 있고, 상기 컨트롤러가 상기 블록의 용량 정보에 따라 상기 블록의 유효 용량을 획득하는 상기 단계는, 상기 컨트롤러가, 상기 블록의 용량 플래그에 따라 상기 블록의 블록의 유효 용량 및 상기 블록의 용량 플래그와 상기 블록의 블록의 유효 용량 사이의 대응관계를 획득하는 단계를 포함한다.
제3 측면을 참고하거나 또는 제3 측면의 제1 내지 제3 가능 구현 방법 중 어느 한 방법을 참고하면, 제4 가능 구현 방법에서, 상기 컨트롤러는 프로세서와 캐시를 포함하고, 상기 타겟 데이터는 상기 캐시에 저장된 기록될 데이터이고, 상기 방법은, 상기 프로세서가, 상기 기록될 데이터를 가지고 있는, 복수의 데이터 기록 요청을 수신하고, 상기 캐시 내의 기록될 데이터를 기록하는 단계; 및 상기 프로세서가, 상기 복수의 데이터 기록 요청이 가지고 있는 기록될 데이터의 크기가 상기 블록의 블록의 유효 용량과 동일한지 판단하는 단계를 추가로 포함한다.
제3 측면을 참고하거나 또는 제3 측면의 제1 내지 제3 가능 구현 방법 중 어느 한 방법을 참고하면, 제5 가능 구현 방법에서, 상기 컨트롤러는 프로세서와 캐시를 포함하고, 상기 타겟 데이터는 상기 캐시에 저장된 기록될 데이터의 일부분이고, 상기 방법은, 상기 프로세서가, 상기 기록될 데이터를 가지고 있는, 복수의 데이터 기록 요청을 수신하고, 상기 캐시에 기록될 데이터를 기록하는 단계; 및 상기 프로세서가, 기록될 데이터의 크기가 상기 블록의 블록의 유효 용량보다 큰지 판단하는 단계를 추가로 포함한다.
제4 측면에 따르면, 본 발명의 일 실시예는 플래시 메모리 장치에 데이터를 기록하는 방법을 제공하며, 상기 플래시 메모리 장치는 주 컨트롤러와 플래시 칩을 포함하고, 상기 플래시 칩은 블록을 포함하고, 상기 블록은 복수의 페이지를 포함하고, 상기 복수의 페이지 중 적어도 하나는 손상된 페이지이고, 상기 방법은, 상기 주 컨트롤러가 상기 블록의 용량 정보에 대한 통계를 수집하는 단계; 상기 주 컨트롤러가 상기 블록의 용량 정보를 컨트롤러에 전송하는 단계; 상기 주 컨트롤러가 상기 컨트롤러에 의해 전송된 타겟 데이터를 수신하는 단계; 및 상기 주 컨트롤러가 상기 블록에 상기 타겟 데이터를 기록하는 단계를 포함하고, 상기 블록의 용량 정보는 상기 블록의 유효 용량을 획득하는데 이용되며, 상기 블록의 유효 용량은 상기 손상된 페이지의 용량을 포함하지 않고, 상기 타겟 데이터의 크기는 상기 블록의 블록의 유효 용량이다.
제4 측면의 제1 가능 구현 방법에서, 상기 방법은, 상기 주 컨트롤러가 상기 컨트롤러에 의해 전송된 질의 커맨드를 수신하는 단계를 추가로 포함하고, 상기 질의 커맨드는 상기 블록의 용량 정보를 질의하는데 이용된다.
제4 측면의 제2 가능 구현 방법에서, 상기 주 컨트롤러가 상기 블록의 용량 정보를 컨트롤러에 전송하는 상기 단계는, 상기 주 컨트롤러가 상기 블록의 용량 정보를 상기 컨트롤러에 주기적으로 전송하는 단계를 포함한다.
제4 측면의 제3 가능 구현 방법에서, 상기 주 컨트롤러가 상기 블록의 용량 정보를 컨트롤러에 전송하는 단계 전에, 상기 방법은, 상기 주 컨트롤러가, 상기 블록의 용량 정보가 이전 통계 수집을 통해 획득된 상기 블록의 용량 정보와 상이한지 판단하는 단계를 추가로 포함한다.
제4 측면을 참고하거나 또는 제4 측면의 제1 내지 제3 가능 구현 방법 중 어느 한 방법을 참고하면, 제4 가능 구현 방법에서, 상기 블록의 용량 정보는 상기 손상된 페이지에 대한 용량 정보를 포함하고, 상기 손상된 페이지에 대한 정보는 상기 손상된 페이지의 용량을 나타내는데 이용된다.
제4 측면을 참고하거나 또는 제4 측면의 제1 내지 제3 가능 구현 방법 중 어느 한 방법을 참고하면, 제5 가능 구현 방법에서, 상기 블록의 용량 정보는 상기 블록의 블록의 유효 용량을 포함한다.
본 발명의 실시예는 컨트롤러, 및 플래시 메모리 장치에 데이터를 기록하는 방법을 제공한다. 컨트롤러는 플래시 메모리 장치에 의해 전송된 블록의 용량 정보를 수신하고, 블록의 용량 정보에 따라 블록의 유효 용량을 획득하고 - 여기서 블록의 유효 용량은 손상된 페이지의 용량을 포함하지 않음 - , 타겟 데이터를 판독하고 - 여기서 타겟 데이터의 크기는 블록의 블록의 유효 용량임 - , 플래시 메모리 장치에 타겟 데이터를 전송한다. 본 발명의 실시예의 구현 방법에 따르면, 블록이 손상된 페이지를 가지면, 컨트롤러는, 크기가 블록의 블록의 유효 용량과 동일한, 타겟 데이터를 플래시 메모리 장치에 전송할 수 있으므로, 플래시 메모리 장치가 블록에 타겟 데이터를 기록할 수 있다. 따라서, 본 발명의 실시예에 따르면, 플래시 메모리 장치의 블록에 기록된 타겟 데이터가 데이터의 오버플로우 없이 최대의 한도로 블록을 채우는 것이 보장될 수 있으므로, 블록 활용을 향상시키고, SSD의 저장 공간을 절약한다.
추가로, 본 발명의 실시예는 플래시 메모리 장치, 및 플래시 메모리 장치에 데이터를 기록하는 방법을 제공한다. 플래시 메모리 장치는 블록의 용량 정보에 대한 통계를 수집하고 - 여기서 블록의 용량 정보는 블록의 유효 용량을 획득하는데 이용되며, 블록의 유효 용량은 손상된 페이지의 용량을 포함하지 않음 - , 블록의 용량 정보를 컨트롤러에 전송하고, 컨트롤러에 의해 전송된 타겟 데이터를 수신하고 - 여기서 타겟 데이터의 크기는 블록의 블록의 유효 용량임 - , 타겟 데이터를 블록에 기록한다. 플래시 메모리 장치는 블록의 용량 정보에 대한 통계를 수집할 수 있고, 블록의 용량 정보를 컨트롤러에 전송할 수 있으므로, 컨트롤러가, 크기가 블록의 블록의 유효 용량과 동일한, 타겟 데이터를 플래시 메모리 장치에 전송할 수 있고, 플래시 메모리 장치가 타겟 데이터를 블록에 기록할 수 있도록 한다. 따라서, 본 발명의 실시예에 따르면, 플래시 메모리 장치의 블록에 기록된 타겟 데이터가 데이터의 오버플로우 없이 최대의 한도로 블록을 채우는 것이 보장될 수 있으므로, 블록 활용을 향상시키고, SSD의 저장 공간을 절약한다.
본 발명의 실시예의 기술적 해결책을 보다 명확하게 설명하기 위해, 이하에서 실시예 또는 종래의 기술을 설명하는데 필요한 첨부된 도면을 간략히 소개한다. 명백하게, 이하의 설명의 첨부된 도면은 단지 본 발명의 일부 실시예를 도시한 것일 뿐이며, 통상의 기술자는 창조적 노력 없이 이러한 첨부된 도면으로부터 다른 도면을 도출할 수 있다.
도 1은, 본 발명의 일 실시예에 따른 저장 시스템의 개략적인 구조도이다.
도 2는, 본 발명의 일 실시예에 따른 컨트롤러의 개략적인 구조도이다.
도 3a는, 본 발명의 일 실시예에 따른 플래시 메모리 장치의 저장 매체의 개략적인 구조도이다.
도 3b는, 본 발명의 일 실시예에 따른 플래시 메모리 장치의 주 컨트롤러의 개략적인 구조도이다.
도 4는, 본 발명의 일 실시예에 따라 플래시 메모리 장치에 데이터를 기록하는 개략적인 흐름도이다.
도 5는, 본 발명의 일 실시예에 따라 플래시 메모리 장치에 데이터를 기록하는 다른 개략적인 흐름도이다.
도 6은, 본 발명의 일 실시예에 따라 플래시 메모리 장치에 데이터를 기록하는 또 다른 개략적인 흐름도이다.
본 발명의 실시예는, 블록의 공간 활용을 향상시키고 SSD의 저장 공간을 절약할 수 있는, 컨트롤러, 플래시 메모리 장치, 및 플래시 메모리 장치에 데이터를 기록하는 방법을 제공한다.
도 1은, 본 발명의 일 실시예에 따른 저장 시스템의 개략적인 구조도이다. 도 1에 도시된 저장 시스템은 컨트롤러(11)와 플래시 메모리 장치(22)를 포함한다. 플래시 메모리 장치(22)는, 저장 매체로 플래시 입도를 사용하고, 솔리드 스테이트 드라이브(SSD)로도 나타내지는, 솔리드 스테이트 디스크(Solid State Device; SSD)를 포함할 수 있고, 다른 메모리를 추가로 포함할 수 있는, 저장 장치이다. 이 실시예에서, 플래시 메모리 장치(22)는 예시로써 SSD를 사용하여 설명된다.
도 1은 예시적인 실례일 뿐이며, 특정 네트워킹 방법을 한정하지 않는다, 예를 들면, 케스케이드 트리 네트워킹(cascading tree networking)과 링 네트워킹(ring networking)은 컨트롤러(11)와 플래시 메모리 장치(22)가 서로 통신할 수 있는 한 사용될 수 있다.
컨트롤러(11)는 종래에 알려진 임의의 컴퓨팅 장치, 예를 들면 서버 또는 데스크탑 컴퓨터를 포함할 수 있다. 운영 체제와 다른 애플리케이션 프로그램은 컨트롤러에 설치된다. 컨트롤러(11)는 입력/출력(I/O) 요청을 플래시 메모리 장치(22)에 전송할 수 있다. 예를 들면, 데이터 기록 요청은 플래시 메모리에 전송되어, 플래시 메모리 장치(22)가 데이터 기록 요청이 가지고 있는 기록될 데이터를 플래시 메모리 장치(22)의 저장 매체에 기록할 수 있다.
도 2와 관련하여, 도 2는, 본 발명의 일 실시예에 따른 컨트롤러(11)의 개략적인 구조도이다. 도 2에 도시된 바와 같이, 컨트롤러(11)는 주로 프로세서(프로세서)(118), 버퍼(캐시)(120), 메모리(메모리)(122), 통신 버스(간단히 말하면 버스)(126), 및 통신 인터페이스(통신 인터페이스)(128)를 포함한다. 프로세서(118), 캐시(120), 메모리(122), 및 통신 인터페이스(128)는 통신 버스(126)를 이용하여 상호 통신을 수행한다.
통신 인터페이스(128)는 호스트(도시되지 않음) 또는 플래시 메모리 장치(22)와 통신하도록 구성되어 있다.
메모리(122)는 프로그램(124)를 저장하도록 구성되어 있고, 메모리(122)는 고속 RAM 메모리를 포함할 수 있거나, 또는 비휘발성 메모리, 예를 들면 적어도 하나의 디스크 메모리를 포함할 수 있다. 메모리(122)가, 랜덤 액세스 메모리(RAM), 마그네틱 디스크, 하드 디스크, 광 디스크, 솔리드 스테이트 디스크(SSD), 또는 비휘발성 메모리와 같은, 프로그램 코드를 저장할 수 있는 임의의 비일시적(non-transitory) 기계 판독 가능 매체일 수 있다는 것이 이해될 수 있다.
구체적으로, 프로그램(124)은 프로그램 코드를 포함할 수 있고, 이 프로그램 코드는 컴퓨터 동작 명령을 포함한다.
캐시(120)는 호스트로부터 수신된 데이터 또는 플래시 메모리 장치(22)로부터 판독된 데이터를 일시적으로 저장하도록 구성되어 있다. 캐시(120)는, 이에 한정되는 것은 아니지만, RAM, ROM, 플래시 메모리, 또는 SSD와 같은, 데이터를 저장할 수 있는 임의의 비일시적 기계 판독 가능 매체일 수 있다. 예를 들면, 호스트에 의해 전송된 데이터 기록 요청을 수신할 때, 컨트롤러(11)는 캐시(120)에 데이터 기록 요청을 저장할 수 있고, 그 후 프로세서(118)는 데이터 기록 요청을 처리한다. 선택적으로, 호스트에 의해 전송된 하나의 데이터 기록 요청을 수신하면, 컨트롤러(11)는 먼저 캐시(120)에 이 데이터 기록 요청을 저장할 수 있고, 그 후 캐시(120)로부터 이 하나의 데이터 기록 요청을 판독하고, 처리를 위해 이 하나의 데이터 기록 요청을 플래시 메모리 장치(22)에 전송한다. 선택적으로, 호스트에 의해 전송된 복수의 데이터 기록 요청을 수신하면, 컨트롤러(11)는 복수의 데이터 기록 요청을 캐시(120)에 일시적으로 저장할 수 있고, 캐시(120)에 저장된 복수의 데이터 기록 요청이 가지고 있는 기록될 데이터가 설정 임계치에 도달하면, 컨트롤러(11)는 처리를 위해 복수의 데이터 기록 요청이 가지고 있는 기록될 데이터를 플래시 메모리 장치(22)에 전송할 수 있다.
추가로, 메모리(122)와 캐시(120)는 함께 또는 별개로 배치될 수 있으며, 본 발명의 이 실시예에 한정되지 않는다.
프로세서(118)는 CPU, ASIC(Application Specific Integrated Circuit), 또는 본 발명의 이 실시예를 구현하도록 구성되어 있는 하나 이상의 집적회로일 수 있다. 본 발명의 이 실시예에서, 프로세서(118)는 호스트로부터 데이터 기록 요청 또는 데이터 판독 요청을 수신하고, 이 데이터 기록 요청 또는 데이터 판독 요청을 처리하고, 이 데이터 기록 요청 또는 데이터 판독 요청을 플래시 메모리 장치(22)에 전송하고, 다른 동작을 수행하도록 구성되어 있을 수 있다.
도 3a와 관련하여, 도 3a는, 본 발명의 일 실시예에 따른 플래시 메모리 장치(22)의 개략적인 구조도이다. 이 실시예에서, 플래시 메모리 장치(22)는 예시로써 SSD를 사용하여 설명된다.
도 3a에 도시된 바와 같이, 플래시 메모리 장치(22)는 주 컨트롤러(220)와 저장 매체(221)를 포함한다. 주 컨트롤러(220)는 컨트롤러(11)에 의해 전송된 데이터 기록 요청 또는 데이터 판독 요청과, 손상된 페이지에 대한 통계를 수집하는 것과 같은 동작을 실행하도록 구성되어 있다. 여기서 주 컨트롤러(220)는 SSD의 주 컨트롤러다.
저장 매체(221)는 일반적으로 여러 개의 플래시 칩을 포함한다. SSD에서, 채널은 여러 개의 플래시 칩을 서로 연결하는데 이용된다. 데이터 기록 요청의 동시 처리는 채널에 대해 구현될 수 있다. 도 3a에 도시된 4개의 채널은 예시로써 사용된다. 주 컨트롤러가 컨트롤러(11)에 의해 전송된 4개의 데이터 기록 요청을 수신하면, 4개의 채널 각각이 데이터 기록 요청을 실행할 수 있어서, 데이터 기록 요청을 처리하는 효율이 향상된다. 추가로, 본 발명의 이 실시예에 따르면, 데이터 기록 요청의 동시 처리는, 여기에 한정되는 것은 아니지만, 하나의 채널 상의 복수의 컨커런트(concurrent) 유닛에 대해 구현될 수도 있다.
각 플래시 칩은 여러 개의 블록을 포함하고, SSD에 의해 수행되는 소거 동작은 블록 단위로 실행된다. 예를 들면, SSD가 가비지 콜렉션(garbage collection)을 수행해야 하면, 블록 내의 유효 데이터는 먼저 다른 새로운 블록으로 이동될 수 있고, 그 후 기존의 블록에 저장된 (유효 데이터와 무효 데이터를 포함하는) 모든 데이터가 소거된다. 본 발명의 이 실시예에서, 블록 내의 유효 데이터는 이 블록에 저장된 데이터를 나타내고, 수정되지 않았으며, 이 데이터의 일부분이 판독될 수 있고; 블록 내의 무효 데이터는 이 블록에 저장된 데이터를 나타내고, 수정되었으며, 이 데이터의 일부분은 판독될 수 없다. 통상의 기술자는, 플래시 입도의 소거 특성으로 인해, 블록에 저장된 데이터는 일반적인 메커니즘 하드 드라이브처럼 곧바로 수정되지 않을 수 있다는 것을 알 수 있다. 블록 내의 데이터가 수정되어야 하면, 주 컨트롤러(220)가 새로운 블록을 찾고, 이 새로운 블록에 수정된 데이터를 기록하며, 기존의 블록 내의 데이터는 무효 데이터가 된다. SSD가 가비지 콜렉션을 수행하면, 무효 데이터는 소거된다.
도 3a로부터 각 블록은 여러 개의 페이지를 포함할 수 있다는 것을 알 수 있다. 어떤 경우에는, 블록 내의 페이지에 손상이 발생할 수 있고, 손상이 발생한 페이지는 본 발명의 이 실시예에서 손상된 페이지라고 나타낸다. 블록 내에 손상된 페이지가 있으면, 이 블록의 실제 용량은 손상된 페이지를 포함하지 않는 블록의 용량보다 적다. 본 발명의 이 실시예에서, 블록의 실제 용량은 유효 용량으로 나타낸다. 예를 들면, 블록의 표준 용량은 1 M이고, 각 페이지의 크기는 4 KB이다. 블로 내에 하나의 손상된 페이지가 있으면, 이 블록의 유효 용량은 1 M에 4 KB를 뺀 값이다. 본 발명의 이 실시예에서, 블록의 표준 용량은 손상된 페이지를 포함하지 않는 빈 블록의 용량을 나타내고, 빈 블록은, 모두 소거되고 유효 데이터 또는 무효 데이터 어느 것도 포함하지 않는 블록을 나타낸다. 블록의 유효 용량은 이 블록의 표준 용량에 손상된 페이지의 용량을 뺀 값과 동일하며, 손상된 페이지의 용량은 각 손상된 페이지의 크기와 손상된 페이지의 수를 곱한 값과 동일하다.
본 발명의 이 실시예에서, 블록의 표준 용량은 컨트롤러(11)에 사전 저장될 수 있고, 크기가 표준 용량과 동일한 타겟 데이터를 플래시 메모리 장치(22)에 전송하기 위해 컨트롤러(11)에 의해 사용될 수 있다. 각 블록의 표준 용량은 2의 N승이며, 여기서 N은 양의 정수이다. 블록의 표준 용량은 동일하거나 상이할 수 있다. 블록의 표준 용량이 상이하면, N의 값이 상이할 수 있다. 이 경우에는, 가장 큰 블록의 표준 용량이, 도 4 내지 도 6에 도시된 본 발명의 실시예의 임의의 구현 방법에 사용된 표준 용량으로 생각될 수 있다.
추가로, 본 발명의 이 실시예에서, SSD가 데이터 기록 요청을 실행할 때, 데이터는 페이지 단위를 이용하여 기록되기도 한다. 예를 들면, 컨트롤러(11)는 데이터 기록 요청을 주 컨트롤러(220)에 전송하고, 여기서 데이터 기록 요청은 LBA(Logical Block Address)의 세그먼트와 타겟 데이터를 가지고 있고, LBA는 컨트롤러(11)에 의해 액세스될 수 있는 주소이다. 데이터 기록 요청을 수신하면, 주 컨트롤러(220)는 사전 결정된 정책에 따라 타겟 데이터를 기록할 수 있고, 이 타겟 데이터가 기록된 곳으로의 복수의 페이지의 주소는 이 타겟 데이터를 실제로 저장하는 주소이며, 물리적 주소로 나타낼 수도 있다. SSD는 LBA의 세그먼트와 복수의 페이지의 주소 사이의 대응관계를 설정하고 저장할 수 있다. 컨트롤러(11)가 그 후에 데이터 판독 요청을 주 컨트롤러(220)에 전송하고, 타겟 데이터를 판독하도록 요청할 때, 이 데이터 판독 요청은 LBA를 운반한다. 이 경우에는, 주 컨트롤러(220)는 LBA에 따른 타겟 데이터와 LBA와 물리적 주소 사이의 대응관계를 판독 출력할 수 있고, 타겟 데이터를 컨트롤러(11)에 리턴한다.
이하에서는 주 컨트롤러(220)의 구조와 기능을 소개한다. 도 3b와 관련하여, 도 3b는, 본 발명의 일 실시예에 따른 플래시 메모리 장치(22)의 주 컨트롤러(220)의 개략적인 구조도이다.
주 컨트롤러(220)는 주로 프로세서(프로세서)(218), 캐시(캐시)(230), 통신 버스(간단히 말하면 버스)(226), 및 통신 인터페이스(통신 인터페이스)(228)를 포함한다. 프로세서(218), 캐시(230), 및 통신 인터페이스(228)는 통신 버스(226)를 이용하여 상호 통신을 수행한다.
통신 인터페이스(228)는 컨트롤러(11) 및 저장 매체(221)와 통신하도록 구성되어 있다.
캐시(230)는 컨트롤러(11)로부터 수신된 데이터와 저장 매체(221)로부터 판독된 데이터를 일시적으로 저장하도록 구성되어 있다. 캐시(230)는 이에 한정되는 것은 아니지만, RAM, ROM, 플래시 메모리, 또는 SSD와 같은, 데이터를 저장할 수 있는 임의의 비일시적 기계 판독 가능 매체일 수 있다. 예를 들면, 컨트롤러(11)에 의해 전송된 데이터 기록 요청이 수신되면, 데이터 기록 요청은 캐시(230)에 저장될 수 있고, 프로세서(218)에 의해 처리된다. 추가로, 일부 애플리케이션 시나리오에서, 캐시(230)는 주 컨트롤러(220) 외부에 배치될 수도 있다.
프로세서(218)는 CPU, ASIC, 또는 본 발명의 이 실시예를 구현하도록 구성되어 있는 하나 이상의 집적회로일 수 있다. 본 발명의 이 실시예에서, 프로세서(218)는 컨트롤러(11)로부터 데이터 기록 요청 또는 데이터 판독 요청을 수신하고, 이 데이터 기록 요청 또는 데이터 판독 요청을 처리하고, 이 데이터 기록 요청 또는 데이터 판독 요청을 저장 매체(221)에 전송하고, 다른 동작을 수행하도록 구성되어 있을 수 있다.
프로세서(218)는, 다양한 프로그램 명령을 저장하도록 구성되어 있는 캐시(도면에 도시되지 않음)를 추가로 포함할 수 있다. 예를 들면, 캐시는 FTL(Flash Translation Layer)을 포함할 수 있다. 프로세서(218)는, FTL을 이용하여 손상된 페이지에 대한 통계를 수집하는 것과 같은 동작을 수행할 수 있고, 손상된 페이지에 대한 통계를 수집한 결과를 FTL의 구성 정보에 저장한다. 선택적으로, 프로세서(218)는 다른 소프트웨어 모듈을 이용하여 유사한 기능을 달성할 수 있다. 따라서, FTL의 기능과 유사한 기능을 가지고, 손상된 페이지에 대한 통계를 수집하는 것과 같은 동작을 수행할 수 있으며, 손상된 페이지에 대한 통계를 수집한 결과를 소프트웨어 모듈의 구성 정보에 저장하는, 임의의 소프트웨어 모듈은 본 발명의 실시예의 보호 범위에 속한다.
이하에서는 본 발명의 일 실시예에 따라 데이터를 플래시 메모리 장치에 기록하는 방법 과정을 소개한다. 본 발명의 이 실시예에서 데이터를 플래시 메모리 장치에 기록하는 방법은 도 1에 도시된 저장 시스템, 도 2에 도시된 컨트롤러(11), 및 도 3a와 도 3b에 도시된 플래시 메모리 장치(예를 들면, SSD)에 적용될 수 있다. 플래시 메모리는 블록을 포함하고, 이 블록은 적어도 하나의 페이지가 손상된 페이지인 복수의 페이지를 포함한다. 도 4에 도시된 바와 같이, 이 방법은 다음의 단계를 포함한다:
단계 S101 : 플래시 메모리 장치(22)는 블록이 용량 정보에 대한 통계를 수집한다.
구체적으로, 주 컨트롤러(220)는 FTL을 이용하여 블록 내의 손상된 페이지에 대한 통계를 수집할 수 있고, 통계적 결과를 FTL의 구성 정보에 저장할 수 있다.
여기서, 블록의 용량 정보는 SSD 내의 하나의 블록의 용량 정보, 또는 SSD 내의 복수의 또는 모든 블록의 용량 정보를 나타낼 수 있다. 설명을 용이하게 하기 위해, 본 발명의 이 실시예에서의 설명에 대한 예시로 하나의 블록이 사용된다.
본 발명의 이 실시예 내의 블록의 용량 정보는 주 컨트롤러(220) 또는 컨트롤러(11)에 의해 블록의 유효 용량을 획득하는데 이용될 수 있다.
선택적으로, 블록의 용량 정보는 블록에 포함된 손상된 페이지의 수를 포함할 수 있다. 주 컨트롤러(220)가 통계 수집을 통해 블록에 포함된 손상된 페이지의 수를 획득되면, 블록의 블록의 유효 용량은 블록의 표준 용량에 손상된 페이지의 용량을 뺀 값과 동일하며, 여기서 손상된 페이지의 용량은 손상된 페이지의 수와 손상된 페이지의 크기를 곱한 값과 동일하다.
선택적으로, 블록의 용량 정보는 블록에 포함된 손상된 페이지의 용량을 포함할 수 있다.
선택적으로, 블록의 용량 정보는 블록의 블록의 유효 용량일 수 있다.
선택적으로, 블록의 용량 정보는 블록의 용량 플래그 또는, 블록의 블록의 유효 용량을 획득하는데 이용되는 다른 정보일 수 있다. 본 발명의 이 실시예는 블록의 용량 정보의 유형 또는 콘텐츠에 대한 어떠한 제한도 강제되지 않는다.
단계 S102 : 플래시 메모리 장치(22)는 블록의 용량 정보를 컨트롤러(11)에 전송한다.
구체적으로, 플래시 메모리 장치(22)의 주 컨트롤러(220)는 컨트롤러(11)의 통신 인터페이스(228)를 통해 블록의 용량 정보를 컨트롤러(11)의 프로세서(218)에 전송할 수 있다.
하나의 선택적 구현 방법은 컨트롤러(11)가 주기적으로 또는 실시간으로 질의 커맨드를 플래시 메모리 장치(22)에 전송할 수 있는 것이고, 여기서 질의 커맨드는 블록의 용량 정보를 질의하는데 이용된다. 질의 커맨드를 수신한 후, 플래시 메모리 장치(22)는 단계 S101을 실행하기 시작하고, 이 실행이 완료된 후 블록의 용량 정보를 컨트롤러(11)에 전송한다. 구체적으로, 컨트롤러(11)의 프로세서(118)는 질의 커맨드를 플래시 메모리 장치(22)에 전송할 수 있다.
다른 선택적 구현 방법은 주 컨트롤러(220)가 주기적으로 단계 S101을 실행하고, 이 실행이 완료된 후 매 시간 블록의 용량 정보를 컨트롤러(11)에 전송하는 것이다. 선택적으로, 주 컨트롤러(220)는 주기적으로 단계 S101을 실행하고, 주 컨트롤러(220)는 이전의 통계 결과와 현재의 통계 결과를 비교한다. 블록의 용량 정보가 변경된 것을 알게 되면, 주 컨트롤러(220)는 현재 통계 결과를 컨트롤러(11)에 전송한다. 본 발명의 이 실시예는 주기의 길이에 대한 어떠한 한정도 강제되지 않으며, 이 주기의 길이는 실제 애플리케이션에서의 사용자 요구에 따라 조정될 수 있다는 것을 유의해야 한다.
단계 S103 : 컨트롤러(11)는 블록의 용량 정보에 따라 블록의 블록의 유효 용량을 획득하고, 여기서 블록의 블록의 유효 용량은 손상된 페이지의 용량을 포함하지 않는다.
구체적으로, 컨트롤러(11)의 프로세서(118)는 블록의 용량 정보에 따라 블록의 블록의 유효 용량을 획득할 수 있다.
블록의 용량 정보가 블록에 포함된 손상된 페이지의 수를 포함할 때, 컨트롤러(11)는 블록 내의 손상된 페이지의 용량을 획득하기 위해, 손상된 페이지의 수에 손상된 페이지의 크기를 곱할 수 있고, 그 후 블록의 블록의 유효 용량을 획득하기 위해, 블록의 사전 저장된 표준 용량에서 손상된 페이지의 용량을 뺄 수 있다.
블록의 용량 정보가 블록에 포함된 손상된 페이지의 용량을 포함하면, 컨트롤러(11)는, 블록의 블록의 유효 용량을 획득하기 위해, 블록의 사전 저장된 표준 용량에서 손상된 페이지의 용량을 뺄 수 있다.
블록의 용량 정보가 블록의 블록의 유효 용량이면, 컨트롤러(11)는 블록의 블록의 유효 용량을 곧바로 획득할 수 있다.
블록의 용량 정보가 블록의 용량 플래그이면, 컨트롤러(11)는 용량 플래그와 유효 용량 사이의 대응관계와 용량 플래그에 따른 블록의 블록의 유효 용량을 획득할 수 있다. 본 발명의 이 실시예에서, 블록의 블록의 유효 용량을 획득하기 위해, 컨트롤러(11)는 컨트롤러(11)의 메모리(122) 내에 각 블록의 용량 플래그와 각 블록의 유효 용량 사이의 대응관계를 미리 저장할 수 있거나, 또는 메모리(122) 내에 각 블록의 용량 플래그와 다른 용량 정보 사이의 대응관계를 미리 저장할 수 있다.
단계 S104 : 컨트롤러(11)는 타겟 데이터를 판독하고, 여기서 타겟 데이터의 크기는 블록의 블록의 유효 용량이다.
구체적으로, 단계 S104는 컨트롤러(11)의 프로세서(118)에 의해 실행될 수 있다. 프로세서(118)는 캐시(120)로부터 타겟 데이터를 판독 출력하고, 여기서 타겟 데이터의 크기는 블록의 블록의 유효 용량과 동일하다. 타겟 데이터의 크기는 블록의 블록의 유효 용량과 반드시 동일할 필요는 없으며, 블록의 블록의 유효 용량보다 약간 적을 수 있다는 것을 유의해야 한다.
캐시(120)에 저장된 타겟 데이터는 호스트에 의해 전송된 데이터 기록 요청이 가지고 있는 기록될 데이터로부터 온 것일 수 있고, 하나의 데이터 기록 요청이 가지고 있는 기록될 데이터 또는 복수의 데이터 기록 요청이 가지고 있는 기록될 데이터일 수 있다.
단계 S105 : 컨트롤러(11)는 타겟 데이터를 플래시 메모리 장치(22)에 전송한다.
구체적으로, 프로세서(118)는, 통신 인터페이스(128)를 통해, 단계 S104에서 판독 출력한 기록될 데이터를 플래시 메모리 장치(22)에 전송한다. 하나의 선택적 구현 방법은, 프로세서(118)가 새로운 데이터 기록 요청을 생성하는 것이며, 여기서 새로운 데이터 기록 요청은 타겟 데이터를 포함하고; 다른 선택적 구현 방법은, 프로세서(118)가 복수의 새로운 데이터 기록 요청을 생산하는 것이며, 여기서 복수의 새로운 데이터 기록 요청 각각은 타겟 데이터의 일부분을 포함하고; 또 다른 선택적 구현 방법은, 프로세서(118)가 호스트로부터의 데이터 기록 요청을 플래시 메모리 장치(22)에 곧바로 포워딩하는 것이며, 여기서 호스트로부터의 데이터 기록 요청이 가지고 있는 데이터는 타겟 데이터이다.
단계 S106 : 플래시 메모리 장치(22)는 타겟 데이터를 블록에 기록한다.
타겟 데이터의 크기는 블록의 블록의 유효 용량이므로, 주 컨트롤러(220)가 손상된 페이지를 제외한 블록의 다른 페이지에 타겟 데이터를 기록한 후, 블록은 완전하게 가득 찬다.
본 발명의 이 실시예에서, 플래시 메모리 장치(22)는 블록의 용량 정보를 컨트롤러(11)에 전송하고, 여기서 블록의 용량 정보는 블록의 유효 용량을 획득하는데 이용되고, 컨트롤러(11)는, 블록의 용량 정보에 따라 블록의 블록의 유효 용량을 획득할 수 있고, 크기가 블록의 블록의 유효 용량과 동일한 타겟 데이터를 판독할 수 있고, 타겟 데이터를 플래시 메모리 장치(22)에 전송할 수 있고, 플래시 메모리 장치(22)는 타겟 데이터를 블록에 기록한다. 본 발명의 이 실시예의 구현 방법에 따르면, 블록이 손상된 페이지를 가지는 경우, 블록에 기록된 타겟 데이터가 데이터 오버플로우 없이 최대의 한도로 블록을 채우는 것이 보장될 수 있으므로, 블록 활용이 향상된다.
전술한 실시예에서, 또 다른 구현 방법은, 캐시(120)로부터 프로세서(118)에 의해 판독된 타겟 데이터의 크기가 여러 개의 블록의 유효 용량의 합일 수 있다는 것이다. 타겟 데이터의 크기가 4개의 블록의 유효 용량의 합일 수 있는 예시가 사용된다. 프로세서(118)는 4개의 데이터 기록 요청을 생성할 수 있으며, 데이터 기록 요청 각각이 가지고 있는 타겟 데이터는 4개의 블록 중 하나의 블록의 유효 용량과 동일하다. 그 후 프로세서(118)는 생성된 4개의 데이터 기록 요청을 주 컨트롤러(220)에 전송하고, 주 컨트롤러(220)는 생성된 4개의 데이터 기록 요청을 4개의 채널의 블록에 기록한다. 이 구현 방법에 따르면, 데이터 기록 요청은 플래시 메모리 장치(22)의 채널에 대해 동시에 실행될 수 있으므로, 데이터를 기록하는 효율이 향상된다. 추가로, 본 발명의 이 실시예에서, 복수의 데이터 기록 요청의 동시 처리는 하나의 채널 상의 복수의 컨커런트 유닛에 대해 구현될 수도 있다.
이하에서는 본 발명의 일 실시예에 따라 데이터를 플래시 메모리 장치에 기록하는 다른 방법 과정을 소개한다. 이 방법은 도 1에 도시된 저장 시스템, 도 2에 도시된 컨트롤러(11), 및 도 3a와 도 3b에 도시된 플래시 메모리 장치(예를 들면, SSD)에 적용될 수 있다. 플래시 메모리는 블록을 포함하고, 이 블록은 적어도 하나의 페이지가 손상된 페이지인 복수의 페이지를 포함한다. 도 5에 도시된 바와 같이, 이 방법은 다음의 단계를 포함한다:
단계 S201 : 단계 S201은 도 4에 도시된 실시예에서의 단계 S101과 동일하며, 단계 S101에서의 설명을 참조할 수 있다.
단계 S202 : 단계 S202는 도 4에 도시된 실시예에서의 단계 S102와 동일하며, 단계 S102에서의 설명을 참조할 수 있다.
단계 S203 : 프로세서(118)는 복수의 데이터 기록 요청을 수신한다.
프로세서(118)는 호스트 또는 다른 장치로부터 복수의 데이터 기록 요청을 수신할 수 있고, 데이터 기록 요청 각각은 플래시 메모리 장치(22)에 기록될 데이터(간단히 말해서 기록될 데이터)를 운반한다.
단계 S203과 단계 S201 또는 단계 S202 사이의 시퀀스는 존재하지 않고, 단계 S203은 단계 S201과 단계 S202 전, 단계 S201과 단계 S202 후, 또는 단계 S201과 단계 S202와 동시에 구현될 수 있다.
단계 S204 : 프로세서(118)는 수신된 복수의 데이터 기록 요청을 캐시(120)에 기록한다.
데이터 기록 요청 각각은 기록될 데이터를 운반하기 때문에 이 기록될 데이터는 또한 캐시(120)에 저장된다.
단계 S205 : 단계 S205는 도 4에 도시된 실시예에서의 단계 S103와 동일하며, 단계 S103에서의 설명을 참조할 수 있다.
단계 S206 : 프로세서(118)는 캐시(120)에 저장된 기록될 데이터의 크기가 블록의 블록의 유효 용량에 도달하는지 판단하고, 캐시(120)에 저장된 기록될 데이터의 크키가 블록의 블록의 유효 용량에 도달하면, 단계 S207를 실행하고, 캐시(120)에 저장된 기록될 데이터의 크키가 블록의 블록의 유효 용량에 도달하지 않으면, 단계 S203를 실행한다.
사전 설정된 조건을 만족하면, 프로세서(118)는 복수의 데이터 기록 요청에 운반되고, 캐시(120)에 저장된 기록될 데이터의 크기가 블록의 블록의 유효 용량에 도달하는지 판단할 수 있다. 여기서 사전 설정된 조건은, 이에 한정되는 것은 아니지만, 사전 설정된 시간 간격이 시작된(예를 들면, 타이머에 의한 트리거링) 순간, 또는 다른 트리거링 조건일 수 있다.
복수의 데이터 기록 요청에 운반되고, 캐시(120)에 저장된 기록될 데이터의 크키가 블록의 블록의 유효 용량에 도달하지 않으면, 프로세서(118)는 캐시(120) 내의 데이터 기록 요청을 처리하는 대신 한 주기 동안 일시적으로 대기할 수 있다. 이 주기 동안, 프로세서(118)는, 캐시(120)에 저장된 기록될 데이터의 크기가 블록의 블록의 유효 용량에 도달할 때까지 호스트로부터 데이터 기록 요청을 계속 수신할 수 있다.
단계 S207 : 프로세서(118)가 캐시(120)로부터 복수의 데이터 기록 요청에 운반된 타겟 데이터를 판독한다.
복수의 데이터 기록 요청에 운반되고 캐시(120)에 저장된 기록될 데이터의 크기가 블록의 블록의 유효 용량에 도달했다면, 프로세서(118)는 캐시(120)로부터 복수의 데이터 기록 요청이 가지고 있는 기록될 데이터를 판독할 수 있다. 복수의 데이터 기록 요청에 운반되고 캐시(120)에 저장된 기록될 데이터의 크기가 블록의 블록의 유효 용량에 도달했을 때, 이 순간에 복수의 데이터 기록 요청에 운반되고 캐시(120)에 저장된 기록될 데이터는 도 4에 도시된 실시예에서의 단계 S104 내지 단계 S106의 타겟 데이터이다.
단계 S208 : 단계 S208은 도 4에 도시된 실시예에서의 단계 S105와 동일하며, 단계 S105에서의 설명을 참조할 수 있다.
단계 S209 : 단계 S209는 도 4에 도시된 실시예에서의 단계 S106와 동일하며, 단계 S106에서의 설명을 참조할 수 있다.
본 발명의 이 실시예에서, 플래시 메모리 장치(22)는 블록의 용량 정보를 컨트롤러(11)에 전송하며, 여기서 블록의 용량 정보는 블록의 유효 용량을 획득하는데 이용되고, 컨트롤러(11)는 블록의 용량 정보에 따라 블록의 블록의 유효 용량을 획득할 수 있고, 크기가 블록의 블록의 유효 용량과 동일한 타겟 데이터를 판독할 수 있고, 타겟 데이터를 플래시 메모리 장치(22)에 전송할 수 있고, 플래시 메모리 장치(22)는 타겟 데이터를 블록에 기록한다. 본 발명의 이 실시예의 구현 방법에 따르면, 블록이 손상된 페이지를 가지는 경우에는, 블록에 기록된 타겟 데이터가 데이터 오버플로우 없이 최대의 한도로 블록을 채우는 것이 보장될 수 있으므로, 블록 활용이 향상된다.
이하에서는 본 발명의 일 실시예에 따라 데이터를 플래시 메모리 장치에 기록하는 또 다른 방법 과정을 소개한다. 이 방법은 도 1에 도시된 저장 시스템, 도 2에 도시된 컨트롤러(11), 및 도 3a와 도 3b에 도시된 플래시 메모리 장치(예를 들면, SSD)에 적용될 수 있다. 플래시 메모리는 블록을 포함하고, 이 블록은 적어도 하나의 페이지가 손상된 페이지인 복수의 페이지를 포함한다. 도 5에 도시된 바와 같이, 이 방법은 다음의 단계를 포함한다:
단계 S301 : 단계 S301는 도 4에 도시된 실시예에서의 단계 S101와 동일하며, 단계 S101에서의 설명을 참조할 수 있다.
단계 S302 : 단계 S302는 도 4에 도시된 실시예에서의 단계 S102와 동일하며, 단계 S102에서의 설명을 참조할 수 있다.
단계 S303 : 단계 S303은 도 4에 도시된 실시예에서의 단계 S103와 동일하며, 단계 S103에서의 설명을 참조할 수 있다.
단계 S304 : 단계 S304는 도 4에 도시된 실시예에서의 단계 S104와 동일하며, 단계 S104에서의 설명을 참조할 수 있다.
단계 S305 : 단계 S305는 도 4에 도시된 실시예에서의 단계 S105와 동일하며, 단계 S105에서의 설명을 참조할 수 있다.
단계 S306 : 프로세서(118)는 캐시(120)에 저장된 기록될 데이터의 크기가 블록의 블록의 유효 용량보다 큰지 판단한다.
사전 설정된 조건을 만족하면, 프로세서(118)는 복수의 데이터 기록 요청에 운반되고 캐시(120)에 저장된 기록될 데이터의 크기가 블록의 블록의 유효 용량보다 큰지 판단할 수 있다. 여기서 사전 설정된 조건은, 이에 한정되는 것은 아니지만, 사전 설정된 시간 간격이 시작된(예를 들면, 타이머에 의한 트리거링) 순간, 또는 다른 트리거링 조건일 수 있다.
단계 S307 : 프로세서(118)는 캐시(120)에서 기록될 데이터의 일부분을 판독하고, 여기서 기록될 데이터의 일부분의 크기는 블록의 블록의 유효 용량이다.
복수의 데이터 기록 요청이 가지고 있는 기록될 데이터의 크기가 블록의 블록의 유효 용량보다 크다면, 프로세서(118)는 캐시(120)에서 기록될 데이터의 일부분을 판독할 수 있고, 여기서 기록될 데이터의 일부분의 크기는 블록의 블록의 유효 용량이다. 이 경우에, 기록될 데이터의 일부분은 도 4에 도시된 실시예에서의 단계 S104 내지 단계 S106의 타겟 데이터이다.
단계 S308 : 단계 S308은 도 4에 도시된 실시예에서의 단계 S105와 동일하며, 단계 S105에서의 설명을 참조할 수 있다.
단계 S309 : 단계 S309는 도 4에 도시된 실시예에서의 단계 S106와 동일하며, 단계 S106에서의 설명을 참조할 수 있다.
본 발명의 이 실시예에서, 플래시 메모리 장치(22)는 블록의 용량 정보를 컨트롤러(11)에 전송하며, 여기서 블록의 용량 정보는 블록의 유효 용량을 획득하는데 이용되고, 컨트롤러(11)는 블록의 용량 정보에 따라 블록의 블록의 유효 용량을 획득할 수 있고, 크기가 블록의 블록의 유효 용량과 동일한 타겟 데이터를 판독할 수 있고, 타겟 데이터를 플래시 메모리 장치(22)에 전송할 수 있고, 플래시 메모리 장치(22)는 타겟 데이터를 블록에 기록한다. 본 발명의 이 실시예의 구현 방법에 따르면, 블록이 손상된 페이지를 가지는 경우에는, 블록에 기록된 타겟 데이터가 데이터 오버플로우 없이 최대의 한도로 블록을 채우는 것이 보장될 수 있으므로, 블록 활용이 향상된다.
나아가, 도 4 내지 도 6에 도시된 임의의 전술한 실시예 중 하나에서, 타겟 데이터가 기록된 블록 내의 복수의 페이지의 주소는 물리적 주소이다. 주 컨트롤러(220)가 타겟 데이터를 블록에 기록한 후, 주 컨트롤러(220)는, 그 뒤 타겟 데이터를 판독하기 위해 컨트롤러(11)에 의해 이용되는, 타겟 데이터의 LBA의 세그먼트와 물리적 주소 사이의 대응관계를 설정하고 저장할 수 있다.
도 4 내지 도 6에 도시된 임의의 전술한 실시예 중 하나로부터 타겟 데이터가 하나의 블록에 저장된다는 것을 알 수 있으므로, 이들의 물리적 주소는 연이은 물리적 공간의 세그먼트이다. 타겟 데이터가 그 후 다른 데이터로 변경되면, 블록에 저장된 타겟 데이터는 무효 데이터가 되고, 소거 동작이 유효 데이터를 이동하지 않고 블록에 곧바로 수행될 수 있으므로, 가비지 콜렉션에서의 효율이 향상된다.
추가로, 컨트롤러(11)가 타겟 데이터에 대응하는 LBA의 세그먼트에 디프래그먼트(defragment)를 수행해야 한다면, 디프래그먼트의 기술적 원칙에 따라, 컨트롤러(11)는 데이터 이동 명령을 주 컨트롤러(220)에 전송할 수 있고, 여기서 데이터 이동 명령은 LBA를 운반한다. 데이터 이동 명령을 수신한 후, 주 컨트롤러(220)는, LBA와 물리적 주소 사이의 대응관계에 따라, 블록 내의 페이지로부터 타겟 데이터를 획득할 수 있고, 디프래그먼트 동작을 완료하기 위해 타겟 데이터를 다른 블록에 이동시킬 수 있다. 디프래그먼트 동작이 완료된 후, 블록은 또한 이에 따라 깨끗이 소거되어, 새로운 데이터를 수신할 수 있고, 가비지 콜렉션은 블록에 다시 수행될 필요가 없다. 가비지 콜렉션에서의 효율은 도 4 내지 도 6에 도시된 임의의 실시예 중 하나와 디프래그먼트 동작을 결합하여 더 개설될 수 있다.
통상의 기술자는, 본 발명의 각 측면 또는 가능 구현 방법의 각 측면이 구체적으로 시스템, 방법, 또는 컴퓨터 프로그램 제품으로써 구현될 수 있다. 따라서, 본 발명의 각 측면 또는 가능 구현 방법의 각 측면은 하드웨어 유형만 가지는 실시예, 소프트웨어만(펌웨어, 내장 소프트웨어, 및 이와 유사한 것을 포함함) 가지는 실시예, 또는 소프트웨어와 하드웨어의 결합을 가지는 실시예를 이용할 수 있으며, 이들은 여기서 “회로”, “모듈”, 또는 “시스템”으로 균일하게 나타낸다. 추가로, 본 발명의 각 측면 또는 가능 구현 방법의 각 측면은 컴퓨터 프로그램 제품의 유형을 가질 수 있고, 여기서 컴퓨터 프로그램 제품은 컴퓨터 판독 가능 매체에 저장된 컴퓨터 판독 가능 프로그램 코드를 나타낸다.
컴퓨터 판독 가능 매체는 컴퓨터 판독 가능 신호 매체 또는 컴퓨터 판독 가능 저장 매체일 수 있다. 컴퓨터 판독 가능 저장 매체는, 이에 한정되는 것은 아니지만, RAM, ROM, EPROM(erasable programmable read only memory)(EPROM 또는 플래시 메모리), 광 섬유, 및 CD-ROM(compact disc read only memory)과 같은, 전기적, 자기적, 광, 전자기적, 적외선, 또는 반도체 시스템, 장치, 또는 기구, 또는 이들의 임의의 적절한 조합을 포함한다.
컴퓨터 내의 프로세서가 컴퓨터 판독 가능 매체에 저장된 컴퓨터 판독 가능 프로그램 코드를 판독하여, 프로세서가 흐름도 내의 각 단계 또는 단계의 조합에 명시된 동작과 기능을 실행할 수 있고; 장치는 블록도 내의 각 블록 또는 블록의 결합에 명시된 동작과 기능을 구현하도록 생성된다.
모든 컴퓨터 판독 가능 프로그램 코드는 사용자 컴퓨터 상에서 실행될 수 있거나, 또는 일부분은 단독형 소프트웨어 패키지로써의 사용자 컴퓨터 상에서 실행될 수 있거나, 또는 일부분은, 다른 일부분이 원격 컴퓨터 상에서 실행되는 동안, 사용자의 컴퓨터 상에서 실행될 수 있거나, 또는 모든 코드가 원격 컴퓨터 또는 서버 상에서 실행될 수 있다. 일부분 선택적 구현 방법에서, 흐름도 내의 각 단계 또는 블록도 내의 각 블록에 명시된 기능은 도시된 순서로 발생하지 않을 수 있다. 예를 들면, 관련된 기능에 의존하는, 도면 내의 2개의 연속적인 단계 또는 2개의 블록은 실제로 거의 동시에 실행될 수 있거나, 또는 이러한 블록이 때때로 반대의 순서로 실행될 수 있다.
통상의 기술자는 이 명세서에서 개시된 실시예에서 설명된 예시와 결합하면, 유닛과 알고리즘 단계가 전기적 하드웨어 또는 컴퓨터 소프트웨어와 전기적 하드웨어의 결합에 의해 실행될 수 있다는 것을 알고 있을 것이다. 기능이 하드웨어 또는 소프트웨어에 의해 실행되는지는 기술적 해결책의 설계 제한 조건과 특정 애플리케이션에 의존한다. 통상의 기술자는 각 특정 애플리케이션에 대해 설명된 기능을 구현하기 위해 상이한 방법을 사용할 수 있으나, 이 구현은 본 발명의 범위를 넘어서는 안 된다는 것을 고려해야 한다.
전술한 설명은 단지 본 발명의 구체적인 구현 방법이고, 본 발명의 보호 범위를 제한하려는 의도는 아니다. 본 발명에서 개시된 기술적 범위가 속하는 기술 분야의 통상의 기술자에 의해 용이하게 알아 낼 수 있는 임의의 변형 또는 대체는 본 발명의 보호 범위에 속한다. 따라서, 본 발명의 보호 범위는 청구범위의 보호 범위를 따른다.

Claims (24)

  1. 컨트롤러로서,
    상기 컨트롤러는 저장 시스템에 적용되고, 상기 저장 시스템은 상기 컨트롤러 및 플래시 메모리 장치를 포함하고, 상기 플래시 메모리 장치는 플래시 칩을 포함하고, 상기 플래시 칩은 블록을 포함하고, 상기 블록은 복수의 페이지를 포함하고, 상기 복수의 페이지 중 적어도 하나는 손상된 페이지이고,
    상기 컨트롤러는 통신 인터페이스 및 프로세서를 포함하고,
    상기 통신 인터페이스는 상기 플래시 메모리 장치와 통신하도록 구성되어 있고,
    상기 프로세서는,
    상기 플래시 메모리 장치에 의해 전송된 상기 블록의 용량 정보를 수신하고,
    상기 블록의 용량 정보에 따라 상기 블록의 유효 용량을 획득하고 - 상기 블록의 유효 용량은 상기 손상된 페이지의 용량을 포함하지 않음 -,
    타겟 데이터를 판독하고 - 상기 타겟 데이터의 크기는 상기 블록의 블록의 유효 용량임 -,
    상기 플래시 메모리 장치에 상기 타겟 데이터를 전송
    하도록 구성되어 있는,
    컨트롤러.
  2. 제1항에 있어서,
    상기 블록의 용량 정보는 상기 손상된 페이지에 대한 정보를 포함하고, 상기 손상된 페이지에 대한 정보는 상기 손상된 페이지의 용량을 나타내는데 이용되고, 상기 프로세서는 구체적으로, 상기 블록의 사전 저장된 표준 용량과 상기 손상된 페이지의 용량에 따라 상기 블록의 블록의 유효 용량을 획득하도록 구성되어 있으며, 상기 블록의 블록의 유효 용량은 상기 블록의 표준 용량에서 상기 손상된 페이지의 용량을 뺀 것인,
    컨트롤러.
  3. 제1항에 있어서,
    상기 블록의 용량 정보는 상기 블록의 블록의 유효 용량을 포함하는,
    컨트롤러.
  4. 제1항에 있어서,
    상기 블록의 용량 정보는 상기 블록의 용량 플래그를 포함하고, 상기 컨트롤러는, 메모리, 및 상기 메모리에 저장되어 있는 상기 블록의 블록의 유효 용량과 상기 블록의 용량 플래그 사이의 대응관계를 추가로 포함하고,
    상기 프로세서는 구체적으로, 상기 블록의 용량 플래그와 상기 블록의 블록의 유효 용량 사이의 대응관계와 상기 블록의 용량 플래그에 따른 상기 블록의 블록의 유효 용량을 획득하도록 구성되어 있는,
    컨트롤러.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 컨트롤러는 캐시를 추가로 포함하고, 상기 타겟 데이터는 상기 캐시에 저장된 기록될 데이터이고,
    상기 프로세서는, 복수의 데이터 기록 요청을 수신하고, 상기 캐시에 상기 기록될 데이터를 기록하도록 추가로 구성되어 있고 - 상기 복수의 데이터 기록 요청은 상기 기록될 데이터를 가지고 있음 -,
    상기 프로세서는 상기 복수의 데이터 기록 요청이 가지고 있는 상기 기록될 데이터의 크기가 상기 블록의 블록의 유효 용량과 동일한지 판단하도록 추가로 구성되어 있는,
    컨트롤러.
  6. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 컨트롤러는 캐시를 추가로 포함하고, 상기 타겟 데이터는 상기 캐시에 저장된 기록될 데이터의 일부분이고,
    상기 프로세서는, 복수의 데이터 기록 요청을 수신하고, 상기 캐시에 상기 기록될 데이터를 기록하도록 추가로 구성되어 있으며, 상기 복수의 데이터 기록 요청은 상기 기록될 데이터를 가지고 있고,
    상기 프로세서는 상기 기록될 데이터의 크기가 상기 블록의 블록의 유효 용량보다 큰지 판단하도록 추가로 구성되어 있는,
    컨트롤러.
  7. 플래시 메모리 장치로서,
    상기 플래시 메모리 장치는 주(primary) 컨트롤러와 플래시 칩을 포함하고, 상기 플래시 칩은 블록을 포함하고, 상기 블록은 복수의 페이지를 포함하고, 상기 복수의 페이지 중 적어도 하나는 손상된 페이지이고,
    상기 플래시 칩은 타겟 데이터를 저장하도록 구성되어 있고,
    상기 주 컨트롤러는,
    상기 블록의 용량 정보에 대한 통계를 수집하고 - 상기 블록의 용량 정보는 상기 블록의 유효 용량을 획득하는데 이용되고, 상기 블록의 유효 용량은 상기 손상된 페이지의 용량을 포함하지 않음 - ,
    상기 블록의 용량 정보를 컨트롤러에 전송하고,
    상기 컨트롤러에 의해 전송된 상기 타겟 데이터를 수신하고 - 상기 타겟 데이터의 크기는 상기 블록의 블록의 유효 용량임 - ,
    상기 블록에 상기 타겟 데이터를 기록
    하도록 구성되어 있는,
    플래시 메모리 장치.
  8. 제7항에 있어서,
    상기 주 컨트롤러는 상기 컨트롤러에 의해 전송된 질의 커맨드(query command)를 수신하도록 추가로 구성되어 있으며,
    상기 질의 커맨드는 상기 블록의 용량 정보를 질의하는데 이용되는,
    플래시 메모리 장치.
  9. 제7항에 있어서,
    상기 주 컨트롤러는 구체적으로 상기 블록의 용량 정보를 상기 컨트롤러에 주기적으로 전송하도록 구성되어 있는,
    플래시 메모리 장치.
  10. 제7항에 있어서,
    상기 블록의 용량 정보를 컨트롤러에 전송하기 전에, 상기 주 컨트롤러는, 상기 블록의 용량 정보가 이전의 통계 수집을 통해 획득된 상기 블록의 용량 정보와 상이한지 판단하도록 추가로 구성되어 있는,
    플래시 메모리 장치.
  11. 제7항 내지 제10항 중 어느 한 항에 있어서,
    상기 블록의 용량 정보는 상기 손상된 페이지에 대한 정보를 포함하고, 상기 손상된 페이지에 대한 정보는 상기 손상된 페이지의 용량을 나타내는데 이용되는,
    플래시 메모리 장치.
  12. 제7항 내지 제10항 중 어느 한 항에 있어서,
    상기 블록의 용량 정보는 상기 블록의 블록의 유효 용량을 포함하는,
    플래시 메모리 장치.
  13. 플래시 메모리 장치에 데이터를 기록하는 방법으로서,
    상기 방법은 저장 시스템에 적용되고, 상기 저장 시스템은 컨트롤러와 상기 플래시 메모리 장치를 포함하고, 상기 플래시 메모리 장치는 플래시 칩을 포함하고, 상기 플래시 칩은 블록을 포함하고, 상기 블록은 복수의 페이지를 포함하고, 상기 복수의 페이지 중 적어도 하나는 손상된 페이지이고,
    상기 방법은,
    상기 컨트롤러가 상기 플래시 메모리 장치에 의해 전송된 상기 블록의 용량 정보를 수신하는 단계;
    상기 컨트롤러가 상기 블록의 용량 정보에 따라 상기 블록의 유효 용량을 획득하는 단계 - 상기 블록의 유효 용량은 상기 손상된 페이지의 용량을 포함하지 않음 - ;
    상기 컨트롤러가 타켓 데이터를 판독하는 단계 - 상기 타겟 데이터의 크기는 상기 블록의 블록의 유효 용량임 - ; 및
    상기 컨트롤러가 상기 타겟 데이터를 상기 플래시 메모리 장치에 전송하는 단계
    를 포함하는,
    플래시 메모리 장치에 데이터를 기록하는 방법.
  14. 제13항에 있어서,
    상기 블록의 용량 정보는 상기 손상된 페이지에 대한 정보를 포함하고, 상기 손상된 페이지에 대한 정보는 상기 손상된 페이지의 용량을 나타내는데 이용되고,
    상기 컨트롤러가 상기 블록의 용량 정보에 따라 상기 블록의 유효 용량을 획득하는 상기 단계는,
    상기 컨트롤러가, 상기 블록의 사전 저장된 표준 용량과 상기 손상된 페이지의 용량에 따라 상기 블록의 블록의 유효 용량을 획득하는 단계
    를 포함하고,
    상기 블록의 블록의 유효 용량은 상기 블록의 표준 용량에서 상기 손상된 페이지의 용량을 뺀 것인,
    플래시 메모리 장치에 데이터를 기록하는 방법.
  15. 제13항에 있어서,
    상기 블록의 용량 정보는 상기 블록의 블록의 유효 용량을 포함하는,
    플래시 메모리 장치에 데이터를 기록하는 방법.
  16. 제13항에 있어서,
    상기 블록의 용량 정보는 상기 블록의 용량 플래그를 포함하고, 상기 블록의 용량 플래그와 상기 블록의 블록의 유효 용량 사이의 대응관계는 상기 메모리에 저장되어 있고,
    상기 컨트롤러가 상기 블록의 용량 정보에 따라 상기 블록의 유효 용량을 획득하는 상기 단계는,
    상기 컨트롤러가, 상기 블록의 용량 플래그와 상기 블록의 블록의 유효 용량 사이의 대응관계와 상기 블록의 용량 플래그에 따른 상기 블록의 블록의 유효 용량을 획득하는 단계
    를 포함하는,
    플래시 메모리 장치에 데이터를 기록하는 방법.
  17. 제13항 내지 제16항 중 어느 한 항에 있어서,
    상기 컨트롤러는 프로세서와 캐시를 포함하고, 상기 타겟 데이터는 상기 캐시에 저장된 기록될 데이터이고, 상기 방법은,
    상기 프로세서가, 상기 기록될 데이터를 가지고 있는, 복수의 데이터 기록 요청을 수신하고, 상기 캐시 내의 기록될 데이터를 기록하는 단계; 및
    상기 프로세서가, 상기 복수의 데이터 기록 요청이 가지고 있는 기록될 데이터의 크기가 상기 블록의 블록의 유효 용량과 동일한지 판단하는 단계
    를 추가로 포함하는,
    플래시 메모리 장치에 데이터를 기록하는 방법.
  18. 제13항 내지 제16항 중 어느 한 항에 있어서,
    상기 컨트롤러는 프로세서와 캐시를 포함하고, 상기 타겟 데이터는 상기 캐시에 저장된 기록될 데이터의 일부분이고, 상기 방법은,
    상기 프로세서가, 상기 기록될 데이터를 가지고 있는, 복수의 데이터 기록 요청을 수신하고, 상기 캐시에 기록될 데이터를 기록하는 단계; 및
    상기 프로세서가, 기록될 데이터의 크기가 상기 블록의 블록의 유효 용량보다 큰지 판단하는 단계
    를 추가로 포함하는,
    플래시 메모리 장치에 데이터를 기록하는 방법.
  19. 플래시 메모리 장치에 데이터를 기록하는 방법으로서,
    상기 플래시 메모리 장치는 주 컨트롤러와 플래시 칩을 포함하고, 상기 플래시 칩은 블록을 포함하고, 상기 블록은 복수의 페이지를 포함하고, 상기 복수의 페이지 중 적어도 하나는 손상된 페이지이고, 상기 방법은,
    상기 주 컨트롤러가 상기 블록의 용량 정보에 대한 통계를 수집하는 단계 - 상기 블록의 용량 정보는 상기 블록의 유효 용량을 획득하는데 이용되며, 상기 블록의 유효 용량은 상기 손상된 페이지의 용량을 포함하지 않음 - ;
    상기 주 컨트롤러가 상기 블록의 용량 정보를 컨트롤러에 전송하는 단계;
    상기 주 컨트롤러가 상기 컨트롤러에 의해 전송된 타겟 데이터를 수신하는 단계 - 상기 타겟 데이터의 크기는 상기 블록의 블록의 유효 용량임 - ; 및
    상기 주 컨트롤러가 상기 블록에 상기 타겟 데이터를 기록하는 단계
    를 포함하는,
    플래시 메모리 장치에 데이터를 기록하는 방법.
  20. 제19항에 있어서,
    상기 방법은, 상기 주 컨트롤러가 상기 컨트롤러에 의해 전송된 질의 커맨드를 수신하는 단계를 추가로 포함하고,
    상기 질의 커맨드는 상기 블록의 용량 정보를 질의하는데 이용되는,
    플래시 메모리 장치에 데이터를 기록하는 방법.
  21. 제19항에 있어서,
    상기 주 컨트롤러가 상기 블록의 용량 정보를 컨트롤러에 전송하는 상기 단계는,
    상기 주 컨트롤러가 상기 블록의 용량 정보를 상기 컨트롤러에 주기적으로 전송하는 단계
    를 포함하는,
    플래시 메모리 장치에 데이터를 기록하는 방법.
  22. 제19항에 있어서,
    상기 주 컨트롤러가 상기 블록의 용량 정보를 컨트롤러에 전송하는 단계 전에,
    상기 방법은, 상기 주 컨트롤러가, 상기 블록의 용량 정보가 이전 통계 수집을 통해 획득된 상기 블록의 용량 정보와 상이한지 판단하는 단계를 추가로 포함하는,
    플래시 메모리 장치에 데이터를 기록하는 방법.
  23. 제19항 내지 제22항 중 어느 한 항에 있어서,
    상기 블록의 용량 정보는 상기 손상된 페이지에 대한 용량 정보를 포함하고, 상기 손상된 페이지에 대한 정보는 상기 손상된 페이지의 용량을 나타내는데 이용되는,
    플래시 메모리 장치에 데이터를 기록하는 방법.
  24. 제19항 내지 제22항 중 어느 한 항에 있어서,
    상기 블록의 용량 정보는 상기 블록의 블록의 유효 용량을 포함하는,
    플래시 메모리 장치에 데이터를 기록하는 방법.
KR1020157017897A 2014-06-27 2014-06-27 컨트롤러, 플래시 메모리 장치, 및 플래시 메모리 장치에 데이터를 기록하는 방법 KR101677474B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2014/080984 WO2015196464A1 (zh) 2014-06-27 2014-06-27 一种控制器、闪存装置和将数据写入闪存装置的方法

Publications (2)

Publication Number Publication Date
KR20160015190A true KR20160015190A (ko) 2016-02-12
KR101677474B1 KR101677474B1 (ko) 2016-11-18

Family

ID=54930651

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157017897A KR101677474B1 (ko) 2014-06-27 2014-06-27 컨트롤러, 플래시 메모리 장치, 및 플래시 메모리 장치에 데이터를 기록하는 방법

Country Status (9)

Country Link
US (1) US20150378888A1 (ko)
EP (2) EP2988221B1 (ko)
JP (1) JP6018725B2 (ko)
KR (1) KR101677474B1 (ko)
CN (1) CN105830166B (ko)
CA (1) CA2894936C (ko)
ES (1) ES2642218T3 (ko)
NO (1) NO2988221T3 (ko)
WO (1) WO2015196464A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190049098A (ko) * 2017-11-01 2019-05-09 삼성전자주식회사 컴퓨팅 장치 및 비휘발성 듀얼 인라인 메모리 모듈

Families Citing this family (219)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11630585B1 (en) 2016-08-25 2023-04-18 Pure Storage, Inc. Processing evacuation events in a storage array that includes a plurality of storage devices
US11102298B1 (en) 2015-05-26 2021-08-24 Pure Storage, Inc. Locally providing cloud storage services for fleet management
US9716755B2 (en) 2015-05-26 2017-07-25 Pure Storage, Inc. Providing cloud storage array services by a local storage array in a data center
US9594678B1 (en) 2015-05-27 2017-03-14 Pure Storage, Inc. Preventing duplicate entries of identical data in a storage device
US11503031B1 (en) 2015-05-29 2022-11-15 Pure Storage, Inc. Storage array access control from cloud-based user authorization and authentication
US9444822B1 (en) 2015-05-29 2016-09-13 Pure Storage, Inc. Storage array access control from cloud-based user authorization and authentication
US10021170B2 (en) 2015-05-29 2018-07-10 Pure Storage, Inc. Managing a storage array using client-side services
US9300660B1 (en) 2015-05-29 2016-03-29 Pure Storage, Inc. Providing authorization and authentication in a cloud for a user of a storage array
US9588691B2 (en) 2015-06-10 2017-03-07 Pure Storage, Inc. Dynamically managing control information in a storage device
US9594512B1 (en) 2015-06-19 2017-03-14 Pure Storage, Inc. Attributing consumed storage capacity among entities storing data in a storage array
US9547441B1 (en) 2015-06-23 2017-01-17 Pure Storage, Inc. Exposing a geometry of a storage device
US10310740B2 (en) 2015-06-23 2019-06-04 Pure Storage, Inc. Aligning memory access operations to a geometry of a storage device
US10296236B2 (en) 2015-07-01 2019-05-21 Pure Storage, Inc. Offloading device management responsibilities from a storage device in an array of storage devices
US9892071B2 (en) 2015-08-03 2018-02-13 Pure Storage, Inc. Emulating a remote direct memory access (‘RDMA’) link between controllers in a storage array
US9851762B1 (en) 2015-08-06 2017-12-26 Pure Storage, Inc. Compliant printed circuit board (‘PCB’) within an enclosure
US10198194B2 (en) 2015-08-24 2019-02-05 Pure Storage, Inc. Placing data within a storage device of a flash array
US11625181B1 (en) 2015-08-24 2023-04-11 Pure Storage, Inc. Data tiering using snapshots
US11294588B1 (en) 2015-08-24 2022-04-05 Pure Storage, Inc. Placing data within a storage device
US10514978B1 (en) 2015-10-23 2019-12-24 Pure Storage, Inc. Automatic deployment of corrective measures for storage arrays
US11360844B1 (en) 2015-10-23 2022-06-14 Pure Storage, Inc. Recovery of a container storage provider
US9384082B1 (en) 2015-10-23 2016-07-05 Pure Storage, Inc. Proactively providing corrective measures for storage arrays
US10284232B2 (en) 2015-10-28 2019-05-07 Pure Storage, Inc. Dynamic error processing in a storage device
US10374868B2 (en) 2015-10-29 2019-08-06 Pure Storage, Inc. Distributed command processing in a flash storage system
US9740414B2 (en) 2015-10-29 2017-08-22 Pure Storage, Inc. Optimizing copy operations
US10353777B2 (en) 2015-10-30 2019-07-16 Pure Storage, Inc. Ensuring crash-safe forward progress of a system configuration update
US11762764B1 (en) 2015-12-02 2023-09-19 Pure Storage, Inc. Writing data in a storage system that includes a first type of storage device and a second type of storage device
US9760479B2 (en) 2015-12-02 2017-09-12 Pure Storage, Inc. Writing data in a storage system that includes a first type of storage device and a second type of storage device
KR102013430B1 (ko) 2015-12-03 2019-08-22 후아웨이 테크놀러지 컴퍼니 리미티드 어레이 컨트롤러, 솔리드 스테이트 디스크, 및 데이터를 기록하기 위해 솔리드 스테이트 디스크를 제어하는 방법
US10326836B2 (en) 2015-12-08 2019-06-18 Pure Storage, Inc. Partially replicating a snapshot between storage systems
US11616834B2 (en) 2015-12-08 2023-03-28 Pure Storage, Inc. Efficient replication of a dataset to the cloud
US10162835B2 (en) 2015-12-15 2018-12-25 Pure Storage, Inc. Proactive management of a plurality of storage arrays in a multi-array system
US11347697B1 (en) 2015-12-15 2022-05-31 Pure Storage, Inc. Proactively optimizing a storage system
US10346043B2 (en) 2015-12-28 2019-07-09 Pure Storage, Inc. Adaptive computing for data compression
US9886314B2 (en) 2016-01-28 2018-02-06 Pure Storage, Inc. Placing workloads in a multi-array system
US10572460B2 (en) 2016-02-11 2020-02-25 Pure Storage, Inc. Compressing data in dependence upon characteristics of a storage system
US9760297B2 (en) 2016-02-12 2017-09-12 Pure Storage, Inc. Managing input/output (‘I/O’) queues in a data storage system
US11995315B2 (en) 2016-03-16 2024-05-28 Pure Storage, Inc. Converting data formats in a storage system
US9959043B2 (en) 2016-03-16 2018-05-01 Pure Storage, Inc. Performing a non-disruptive upgrade of data in a storage system
US11112990B1 (en) 2016-04-27 2021-09-07 Pure Storage, Inc. Managing storage device evacuation
US11809727B1 (en) 2016-04-27 2023-11-07 Pure Storage, Inc. Predicting failures in a storage system that includes a plurality of storage devices
US9841921B2 (en) 2016-04-27 2017-12-12 Pure Storage, Inc. Migrating data in a storage array that includes a plurality of storage devices
US9811264B1 (en) 2016-04-28 2017-11-07 Pure Storage, Inc. Deploying client-specific applications in a storage system utilizing redundant system resources
US10303390B1 (en) 2016-05-02 2019-05-28 Pure Storage, Inc. Resolving fingerprint collisions in flash storage system
US10686906B2 (en) * 2016-05-02 2020-06-16 Netapp, Inc. Methods for managing multi-level flash storage and devices thereof
US11231858B2 (en) 2016-05-19 2022-01-25 Pure Storage, Inc. Dynamically configuring a storage system to facilitate independent scaling of resources
US9507532B1 (en) 2016-05-20 2016-11-29 Pure Storage, Inc. Migrating data in a storage array that includes a plurality of storage devices and a plurality of write buffer devices
US10691567B2 (en) 2016-06-03 2020-06-23 Pure Storage, Inc. Dynamically forming a failure domain in a storage system that includes a plurality of blades
US10452310B1 (en) 2016-07-13 2019-10-22 Pure Storage, Inc. Validating cabling for storage component admission to a storage array
US11706895B2 (en) 2016-07-19 2023-07-18 Pure Storage, Inc. Independent scaling of compute resources and storage resources in a storage system
US10459652B2 (en) 2016-07-27 2019-10-29 Pure Storage, Inc. Evacuating blades in a storage array that includes a plurality of blades
US10474363B1 (en) 2016-07-29 2019-11-12 Pure Storage, Inc. Space reporting in a storage system
US10671439B1 (en) 2016-09-07 2020-06-02 Pure Storage, Inc. Workload planning with quality-of-service (‘QOS’) integration
US11481261B1 (en) 2016-09-07 2022-10-25 Pure Storage, Inc. Preventing extended latency in a storage system
US10331588B2 (en) 2016-09-07 2019-06-25 Pure Storage, Inc. Ensuring the appropriate utilization of system resources using weighted workload based, time-independent scheduling
US11960348B2 (en) 2016-09-07 2024-04-16 Pure Storage, Inc. Cloud-based monitoring of hardware components in a fleet of storage systems
US10146585B2 (en) 2016-09-07 2018-12-04 Pure Storage, Inc. Ensuring the fair utilization of system resources using workload based, time-independent scheduling
US10235229B1 (en) 2016-09-07 2019-03-19 Pure Storage, Inc. Rehabilitating storage devices in a storage array that includes a plurality of storage devices
US11886922B2 (en) 2016-09-07 2024-01-30 Pure Storage, Inc. Scheduling input/output operations for a storage system
US10908966B1 (en) 2016-09-07 2021-02-02 Pure Storage, Inc. Adapting target service times in a storage system
US11531577B1 (en) 2016-09-07 2022-12-20 Pure Storage, Inc. Temporarily limiting access to a storage device
KR20180032728A (ko) 2016-09-22 2018-04-02 삼성전자주식회사 저장 장치, 저장 장치를 포함하는 사용자 장치, 및 사용자 장치의 동작 방법
US10452598B2 (en) * 2016-10-18 2019-10-22 Micron Technology, Inc. Apparatuses and methods for an operating system cache in a solid state device
US10007459B2 (en) 2016-10-20 2018-06-26 Pure Storage, Inc. Performance tuning in a storage system that includes one or more storage devices
US11379132B1 (en) 2016-10-20 2022-07-05 Pure Storage, Inc. Correlating medical sensor data
US10162566B2 (en) 2016-11-22 2018-12-25 Pure Storage, Inc. Accumulating application-level statistics in a storage system
US11620075B2 (en) 2016-11-22 2023-04-04 Pure Storage, Inc. Providing application aware storage
US10198205B1 (en) 2016-12-19 2019-02-05 Pure Storage, Inc. Dynamically adjusting a number of storage devices utilized to simultaneously service write operations
US11461273B1 (en) 2016-12-20 2022-10-04 Pure Storage, Inc. Modifying storage distribution in a storage system that includes one or more storage devices
US10489307B2 (en) 2017-01-05 2019-11-26 Pure Storage, Inc. Periodically re-encrypting user data stored on a storage device
US11307998B2 (en) 2017-01-09 2022-04-19 Pure Storage, Inc. Storage efficiency of encrypted host system data
US11340800B1 (en) 2017-01-19 2022-05-24 Pure Storage, Inc. Content masking in a storage system
US10503700B1 (en) 2017-01-19 2019-12-10 Pure Storage, Inc. On-demand content filtering of snapshots within a storage system
US11163624B2 (en) 2017-01-27 2021-11-02 Pure Storage, Inc. Dynamically adjusting an amount of log data generated for a storage system
US11169727B1 (en) 2017-03-10 2021-11-09 Pure Storage, Inc. Synchronous replication between storage systems with virtualized storage
US11675520B2 (en) 2017-03-10 2023-06-13 Pure Storage, Inc. Application replication among storage systems synchronously replicating a dataset
US11803453B1 (en) 2017-03-10 2023-10-31 Pure Storage, Inc. Using host connectivity states to avoid queuing I/O requests
US10521344B1 (en) 2017-03-10 2019-12-31 Pure Storage, Inc. Servicing input/output (‘I/O’) operations directed to a dataset that is synchronized across a plurality of storage systems
US11089105B1 (en) 2017-12-14 2021-08-10 Pure Storage, Inc. Synchronously replicating datasets in cloud-based storage systems
US11941279B2 (en) 2017-03-10 2024-03-26 Pure Storage, Inc. Data path virtualization
US12056383B2 (en) 2017-03-10 2024-08-06 Pure Storage, Inc. Edge management service
US10503427B2 (en) 2017-03-10 2019-12-10 Pure Storage, Inc. Synchronously replicating datasets and other managed objects to cloud-based storage systems
US11442825B2 (en) 2017-03-10 2022-09-13 Pure Storage, Inc. Establishing a synchronous replication relationship between two or more storage systems
US10454810B1 (en) 2017-03-10 2019-10-22 Pure Storage, Inc. Managing host definitions across a plurality of storage systems
US10459664B1 (en) 2017-04-10 2019-10-29 Pure Storage, Inc. Virtualized copy-by-reference
US9910618B1 (en) 2017-04-10 2018-03-06 Pure Storage, Inc. Migrating applications executing on a storage system
US11868629B1 (en) 2017-05-05 2024-01-09 Pure Storage, Inc. Storage system sizing service
US11442669B1 (en) 2018-03-15 2022-09-13 Pure Storage, Inc. Orchestrating a virtual storage system
US11609718B1 (en) 2017-06-12 2023-03-21 Pure Storage, Inc. Identifying valid data after a storage system recovery
US10853148B1 (en) 2017-06-12 2020-12-01 Pure Storage, Inc. Migrating workloads between a plurality of execution environments
US10976962B2 (en) 2018-03-15 2021-04-13 Pure Storage, Inc. Servicing I/O operations in a cloud-based storage system
US11593036B2 (en) 2017-06-12 2023-02-28 Pure Storage, Inc. Staging data within a unified storage element
US12061822B1 (en) 2017-06-12 2024-08-13 Pure Storage, Inc. Utilizing volume-level policies in a storage system
US10613791B2 (en) 2017-06-12 2020-04-07 Pure Storage, Inc. Portable snapshot replication between storage systems
US10417092B2 (en) 2017-09-07 2019-09-17 Pure Storage, Inc. Incremental RAID stripe update parity calculation
US11016824B1 (en) 2017-06-12 2021-05-25 Pure Storage, Inc. Event identification with out-of-order reporting in a cloud-based environment
US10552090B2 (en) 2017-09-07 2020-02-04 Pure Storage, Inc. Solid state drives with multiple types of addressable memory
US11422731B1 (en) 2017-06-12 2022-08-23 Pure Storage, Inc. Metadata-based replication of a dataset
US11592991B2 (en) 2017-09-07 2023-02-28 Pure Storage, Inc. Converting raid data between persistent storage types
US10884636B1 (en) 2017-06-12 2021-01-05 Pure Storage, Inc. Presenting workload performance in a storage system
EP3612922A1 (en) 2017-06-12 2020-02-26 Pure Storage, Inc. Accessible fast durable storage integrated into a bulk storage device
US11989429B1 (en) 2017-06-12 2024-05-21 Pure Storage, Inc. Recommending changes to a storage system
US11340939B1 (en) 2017-06-12 2022-05-24 Pure Storage, Inc. Application-aware analytics for storage systems
US11210133B1 (en) 2017-06-12 2021-12-28 Pure Storage, Inc. Workload mobility between disparate execution environments
US11561714B1 (en) 2017-07-05 2023-01-24 Pure Storage, Inc. Storage efficiency driven migration
US11477280B1 (en) 2017-07-26 2022-10-18 Pure Storage, Inc. Integrating cloud storage services
US10831935B2 (en) 2017-08-31 2020-11-10 Pure Storage, Inc. Encryption management with host-side data reduction
JP6785205B2 (ja) * 2017-09-21 2020-11-18 キオクシア株式会社 メモリシステムおよび制御方法
US11494692B1 (en) 2018-03-26 2022-11-08 Pure Storage, Inc. Hyperscale artificial intelligence and machine learning infrastructure
US10452444B1 (en) 2017-10-19 2019-10-22 Pure Storage, Inc. Storage system with compute resources and shared storage resources
US12067466B2 (en) 2017-10-19 2024-08-20 Pure Storage, Inc. Artificial intelligence and machine learning hyperscale infrastructure
US10360214B2 (en) 2017-10-19 2019-07-23 Pure Storage, Inc. Ensuring reproducibility in an artificial intelligence infrastructure
US11861423B1 (en) 2017-10-19 2024-01-02 Pure Storage, Inc. Accelerating artificial intelligence (‘AI’) workflows
US10671435B1 (en) 2017-10-19 2020-06-02 Pure Storage, Inc. Data transformation caching in an artificial intelligence infrastructure
US11455168B1 (en) 2017-10-19 2022-09-27 Pure Storage, Inc. Batch building for deep learning training workloads
JP6982468B2 (ja) * 2017-10-27 2021-12-17 キオクシア株式会社 メモリシステムおよび制御方法
US10671494B1 (en) 2017-11-01 2020-06-02 Pure Storage, Inc. Consistent selection of replicated datasets during storage system recovery
US10467107B1 (en) 2017-11-01 2019-11-05 Pure Storage, Inc. Maintaining metadata resiliency among storage device failures
US10509581B1 (en) 2017-11-01 2019-12-17 Pure Storage, Inc. Maintaining write consistency in a multi-threaded storage system
US10484174B1 (en) 2017-11-01 2019-11-19 Pure Storage, Inc. Protecting an encryption key for data stored in a storage system that includes a plurality of storage devices
US10817392B1 (en) 2017-11-01 2020-10-27 Pure Storage, Inc. Ensuring resiliency to storage device failures in a storage system that includes a plurality of storage devices
US10929226B1 (en) 2017-11-21 2021-02-23 Pure Storage, Inc. Providing for increased flexibility for large scale parity
US10936238B2 (en) 2017-11-28 2021-03-02 Pure Storage, Inc. Hybrid data tiering
US10990282B1 (en) 2017-11-28 2021-04-27 Pure Storage, Inc. Hybrid data tiering with cloud storage
US10795598B1 (en) 2017-12-07 2020-10-06 Pure Storage, Inc. Volume migration for storage systems synchronously replicating a dataset
US11036677B1 (en) 2017-12-14 2021-06-15 Pure Storage, Inc. Replicated data integrity
US10929031B2 (en) 2017-12-21 2021-02-23 Pure Storage, Inc. Maximizing data reduction in a partially encrypted volume
CN108052295B (zh) * 2017-12-28 2020-11-10 深圳市金泰克半导体有限公司 一种数据存储方法、固态硬盘、主机及储存系统
US10992533B1 (en) 2018-01-30 2021-04-27 Pure Storage, Inc. Policy based path management
US11861170B2 (en) 2018-03-05 2024-01-02 Pure Storage, Inc. Sizing resources for a replication target
US10942650B1 (en) 2018-03-05 2021-03-09 Pure Storage, Inc. Reporting capacity utilization in a storage system
US11972134B2 (en) 2018-03-05 2024-04-30 Pure Storage, Inc. Resource utilization using normalized input/output (‘I/O’) operations
US11150834B1 (en) 2018-03-05 2021-10-19 Pure Storage, Inc. Determining storage consumption in a storage system
US10521151B1 (en) 2018-03-05 2019-12-31 Pure Storage, Inc. Determining effective space utilization in a storage system
US10296258B1 (en) 2018-03-09 2019-05-21 Pure Storage, Inc. Offloading data storage to a decentralized storage network
US12066900B2 (en) 2018-03-15 2024-08-20 Pure Storage, Inc. Managing disaster recovery to cloud computing environment
US11288138B1 (en) 2018-03-15 2022-03-29 Pure Storage, Inc. Recovery from a system fault in a cloud-based storage system
US10917471B1 (en) 2018-03-15 2021-02-09 Pure Storage, Inc. Active membership in a cloud-based storage system
US11210009B1 (en) 2018-03-15 2021-12-28 Pure Storage, Inc. Staging data in a cloud-based storage system
US11048590B1 (en) 2018-03-15 2021-06-29 Pure Storage, Inc. Data consistency during recovery in a cloud-based storage system
US10924548B1 (en) 2018-03-15 2021-02-16 Pure Storage, Inc. Symmetric storage using a cloud-based storage system
US11095706B1 (en) 2018-03-21 2021-08-17 Pure Storage, Inc. Secure cloud-based storage system management
US11171950B1 (en) 2018-03-21 2021-11-09 Pure Storage, Inc. Secure cloud-based storage system management
US10838833B1 (en) 2018-03-26 2020-11-17 Pure Storage, Inc. Providing for high availability in a data analytics pipeline without replicas
US11392553B1 (en) 2018-04-24 2022-07-19 Pure Storage, Inc. Remote data management
US11436344B1 (en) 2018-04-24 2022-09-06 Pure Storage, Inc. Secure encryption in deduplication cluster
US11128578B2 (en) 2018-05-21 2021-09-21 Pure Storage, Inc. Switching between mediator services for a storage system
US11675503B1 (en) 2018-05-21 2023-06-13 Pure Storage, Inc. Role-based data access
US11954220B2 (en) 2018-05-21 2024-04-09 Pure Storage, Inc. Data protection for container storage
US11455409B2 (en) 2018-05-21 2022-09-27 Pure Storage, Inc. Storage layer data obfuscation
US10871922B2 (en) 2018-05-22 2020-12-22 Pure Storage, Inc. Integrated storage management between storage systems and container orchestrators
US11416298B1 (en) 2018-07-20 2022-08-16 Pure Storage, Inc. Providing application-specific storage by a storage system
US11403000B1 (en) 2018-07-20 2022-08-02 Pure Storage, Inc. Resiliency in a cloud-based storage system
US11146564B1 (en) 2018-07-24 2021-10-12 Pure Storage, Inc. Login authentication in a cloud storage platform
CN109086006B (zh) * 2018-07-24 2021-10-15 浪潮电子信息产业股份有限公司 一种数据读取的方法以及相关装置
US11860820B1 (en) 2018-09-11 2024-01-02 Pure Storage, Inc. Processing data through a storage system in a data pipeline
WO2020077489A1 (zh) * 2018-10-15 2020-04-23 华为技术有限公司 一种存储块处理的方法及相关设备
US12026381B2 (en) 2018-10-26 2024-07-02 Pure Storage, Inc. Preserving identities and policies across replication
US10671302B1 (en) 2018-10-26 2020-06-02 Pure Storage, Inc. Applying a rate limit across a plurality of storage systems
US11023179B2 (en) 2018-11-18 2021-06-01 Pure Storage, Inc. Cloud-based storage system storage management
US10963189B1 (en) 2018-11-18 2021-03-30 Pure Storage, Inc. Coalescing write operations in a cloud-based storage system
US12026060B1 (en) 2018-11-18 2024-07-02 Pure Storage, Inc. Reverting between codified states in a cloud-based storage system
US12026061B1 (en) 2018-11-18 2024-07-02 Pure Storage, Inc. Restoring a cloud-based storage system to a selected state
US11340837B1 (en) 2018-11-18 2022-05-24 Pure Storage, Inc. Storage system management via a remote console
US11526405B1 (en) 2018-11-18 2022-12-13 Pure Storage, Inc. Cloud-based disaster recovery
US11650749B1 (en) 2018-12-17 2023-05-16 Pure Storage, Inc. Controlling access to sensitive data in a shared dataset
US11003369B1 (en) 2019-01-14 2021-05-11 Pure Storage, Inc. Performing a tune-up procedure on a storage device during a boot process
US11042452B1 (en) 2019-03-20 2021-06-22 Pure Storage, Inc. Storage system data recovery using data recovery as a service
US11221778B1 (en) 2019-04-02 2022-01-11 Pure Storage, Inc. Preparing data for deduplication
US11068162B1 (en) 2019-04-09 2021-07-20 Pure Storage, Inc. Storage management in a cloud data store
US11392555B2 (en) 2019-05-15 2022-07-19 Pure Storage, Inc. Cloud-based file services
US11327676B1 (en) 2019-07-18 2022-05-10 Pure Storage, Inc. Predictive data streaming in a virtual storage system
US11126364B2 (en) 2019-07-18 2021-09-21 Pure Storage, Inc. Virtual storage system architecture
US11853266B2 (en) 2019-05-15 2023-12-26 Pure Storage, Inc. Providing a file system in a cloud environment
US12001355B1 (en) 2019-05-24 2024-06-04 Pure Storage, Inc. Chunked memory efficient storage data transfers
US11487715B1 (en) 2019-07-18 2022-11-01 Pure Storage, Inc. Resiliency in a cloud-based storage system
US11861221B1 (en) 2019-07-18 2024-01-02 Pure Storage, Inc. Providing scalable and reliable container-based storage services
US11797197B1 (en) 2019-07-18 2023-10-24 Pure Storage, Inc. Dynamic scaling of a virtual storage system
US11093139B1 (en) 2019-07-18 2021-08-17 Pure Storage, Inc. Durably storing data within a virtual storage system
US11526408B2 (en) 2019-07-18 2022-12-13 Pure Storage, Inc. Data recovery in a virtual storage system
US11086553B1 (en) 2019-08-28 2021-08-10 Pure Storage, Inc. Tiering duplicated objects in a cloud-based object store
US11693713B1 (en) 2019-09-04 2023-07-04 Pure Storage, Inc. Self-tuning clusters for resilient microservices
US11360689B1 (en) 2019-09-13 2022-06-14 Pure Storage, Inc. Cloning a tracking copy of replica data
US11797569B2 (en) 2019-09-13 2023-10-24 Pure Storage, Inc. Configurable data replication
US12045252B2 (en) 2019-09-13 2024-07-23 Pure Storage, Inc. Providing quality of service (QoS) for replicating datasets
US11573864B1 (en) 2019-09-16 2023-02-07 Pure Storage, Inc. Automating database management in a storage system
US11669386B1 (en) 2019-10-08 2023-06-06 Pure Storage, Inc. Managing an application's resource stack
US11930112B1 (en) 2019-12-06 2024-03-12 Pure Storage, Inc. Multi-path end-to-end encryption in a storage system
US11720497B1 (en) 2020-01-13 2023-08-08 Pure Storage, Inc. Inferred nonsequential prefetch based on data access patterns
US11709636B1 (en) 2020-01-13 2023-07-25 Pure Storage, Inc. Non-sequential readahead for deep learning training
US11733901B1 (en) 2020-01-13 2023-08-22 Pure Storage, Inc. Providing persistent storage to transient cloud computing services
US12014065B2 (en) 2020-02-11 2024-06-18 Pure Storage, Inc. Multi-cloud orchestration as-a-service
US11868622B2 (en) 2020-02-25 2024-01-09 Pure Storage, Inc. Application recovery across storage systems
US11637896B1 (en) 2020-02-25 2023-04-25 Pure Storage, Inc. Migrating applications to a cloud-computing environment
US12038881B2 (en) 2020-03-25 2024-07-16 Pure Storage, Inc. Replica transitions for file storage
US11321006B1 (en) 2020-03-25 2022-05-03 Pure Storage, Inc. Data loss prevention during transitions from a replication source
US11301152B1 (en) 2020-04-06 2022-04-12 Pure Storage, Inc. Intelligently moving data between storage systems
US11630598B1 (en) 2020-04-06 2023-04-18 Pure Storage, Inc. Scheduling data replication operations
US11494267B2 (en) 2020-04-14 2022-11-08 Pure Storage, Inc. Continuous value data redundancy
US11921670B1 (en) 2020-04-20 2024-03-05 Pure Storage, Inc. Multivariate data backup retention policies
US11431488B1 (en) 2020-06-08 2022-08-30 Pure Storage, Inc. Protecting local key generation using a remote key management service
US11349917B2 (en) 2020-07-23 2022-05-31 Pure Storage, Inc. Replication handling among distinct networks
US11442652B1 (en) 2020-07-23 2022-09-13 Pure Storage, Inc. Replication handling during storage system transportation
JP7013546B2 (ja) * 2020-10-23 2022-01-31 キオクシア株式会社 メモリシステム
JP7204020B2 (ja) * 2020-10-23 2023-01-13 キオクシア株式会社 制御方法
US11397545B1 (en) 2021-01-20 2022-07-26 Pure Storage, Inc. Emulating persistent reservations in a cloud-based storage system
US11853285B1 (en) 2021-01-22 2023-12-26 Pure Storage, Inc. Blockchain logging of volume-level events in a storage system
KR20220124318A (ko) * 2021-03-02 2022-09-14 삼성전자주식회사 쓰기 동작을 리디렉션하는 스토리지 컨트롤러 및 이의 동작 방법
US11822809B2 (en) 2021-05-12 2023-11-21 Pure Storage, Inc. Role enforcement for storage-as-a-service
US11816129B2 (en) 2021-06-22 2023-11-14 Pure Storage, Inc. Generating datasets using approximate baselines
US11914867B2 (en) 2021-10-29 2024-02-27 Pure Storage, Inc. Coordinated snapshots among storage systems implementing a promotion/demotion model
US11893263B2 (en) 2021-10-29 2024-02-06 Pure Storage, Inc. Coordinated checkpoints among storage systems implementing checkpoint-based replication
US11714723B2 (en) 2021-10-29 2023-08-01 Pure Storage, Inc. Coordinated snapshots for data stored across distinct storage environments
US11922052B2 (en) 2021-12-15 2024-03-05 Pure Storage, Inc. Managing links between storage objects
US11847071B2 (en) 2021-12-30 2023-12-19 Pure Storage, Inc. Enabling communication between a single-port device and multiple storage system controllers
US12001300B2 (en) 2022-01-04 2024-06-04 Pure Storage, Inc. Assessing protection for storage resources
JP2023021450A (ja) * 2022-01-13 2023-02-10 キオクシア株式会社 メモリシステム
US11860780B2 (en) 2022-01-28 2024-01-02 Pure Storage, Inc. Storage cache management
US11886295B2 (en) 2022-01-31 2024-01-30 Pure Storage, Inc. Intra-block error correction
CN117435120A (zh) * 2022-07-13 2024-01-23 北京超弦存储器研究院 一种ssd、ssd的主控芯片及ssd资源管理方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080177956A1 (en) * 2007-01-24 2008-07-24 Peddle Charles I Page-based failure management for flash memory
US20090259806A1 (en) * 2008-04-15 2009-10-15 Adtron, Inc. Flash management using bad page tracking and high defect flash memory
KR20110012062A (ko) * 2009-07-29 2011-02-09 주식회사 하이닉스반도체 페이지 복사 발생 빈도를 줄이는 반도체 스토리지 시스템 및 그 제어 방법
CN102623052A (zh) * 2011-01-30 2012-08-01 群联电子股份有限公司 用于非易失性存储器的数据写入方法与系统及控制器

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02226446A (ja) * 1989-02-28 1990-09-10 Toshiba Corp 携帯可能電子装置
JP3214592B2 (ja) * 1994-06-10 2001-10-02 株式会社富士通ゼネラル メモリ使用範囲自動検出方法およびメモリ使用範囲自動検出装置
JP2000122921A (ja) * 1998-10-14 2000-04-28 Oki Data Corp メモリサイズ自動判定方法及び判定装置
JP3242890B2 (ja) * 1998-12-16 2001-12-25 株式会社ハギワラシスコム 記憶装置
US7355892B2 (en) * 2006-06-30 2008-04-08 Sandisk Corporation Partial page fail bit detection in flash memory devices
US7554855B2 (en) * 2006-12-20 2009-06-30 Mosaid Technologies Incorporated Hybrid solid-state memory system having volatile and non-volatile memory
US8185778B2 (en) * 2008-04-15 2012-05-22 SMART Storage Systems, Inc. Flash management using separate metadata storage
US8028123B2 (en) * 2008-04-15 2011-09-27 SMART Modular Technologies (AZ) , Inc. Circular wear leveling
US8180954B2 (en) * 2008-04-15 2012-05-15 SMART Storage Systems, Inc. Flash management using logical page size
US8566505B2 (en) * 2008-04-15 2013-10-22 SMART Storage Systems, Inc. Flash management using sequential techniques
US20110035540A1 (en) * 2009-08-10 2011-02-10 Adtron, Inc. Flash blade system architecture and method
CN102004701B (zh) * 2009-08-28 2013-01-09 炬才微电子(深圳)有限公司 一种次级内存的分配方法和装置
TWI497293B (zh) * 2009-12-17 2015-08-21 Ibm 固態儲存裝置內之資料管理
CN101930345B (zh) * 2010-08-24 2012-05-02 苏州国芯科技有限公司 一种基于块访问的闪存读写方法
US20130262942A1 (en) * 2012-03-27 2013-10-03 Yung-Chiang Chu Flash memory lifetime evaluation method
KR102072449B1 (ko) * 2012-06-01 2020-02-04 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 리페어 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080177956A1 (en) * 2007-01-24 2008-07-24 Peddle Charles I Page-based failure management for flash memory
US20090259806A1 (en) * 2008-04-15 2009-10-15 Adtron, Inc. Flash management using bad page tracking and high defect flash memory
KR20110012062A (ko) * 2009-07-29 2011-02-09 주식회사 하이닉스반도체 페이지 복사 발생 빈도를 줄이는 반도체 스토리지 시스템 및 그 제어 방법
CN102623052A (zh) * 2011-01-30 2012-08-01 群联电子股份有限公司 用于非易失性存储器的数据写入方法与系统及控制器

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190049098A (ko) * 2017-11-01 2019-05-09 삼성전자주식회사 컴퓨팅 장치 및 비휘발성 듀얼 인라인 메모리 모듈

Also Published As

Publication number Publication date
NO2988221T3 (ko) 2018-01-06
KR101677474B1 (ko) 2016-11-18
CN105830166A (zh) 2016-08-03
EP3260985B1 (en) 2019-02-27
ES2642218T3 (es) 2017-11-15
EP2988221B1 (en) 2017-08-09
EP2988221A1 (en) 2016-02-24
CA2894936A1 (en) 2015-12-27
CA2894936C (en) 2018-02-27
EP2988221A4 (en) 2016-02-24
EP3260985A1 (en) 2017-12-27
US20150378888A1 (en) 2015-12-31
CN105830166B (zh) 2018-02-23
JP6018725B2 (ja) 2016-11-02
WO2015196464A1 (zh) 2015-12-30
JP2016524769A (ja) 2016-08-18

Similar Documents

Publication Publication Date Title
KR101677474B1 (ko) 컨트롤러, 플래시 메모리 장치, 및 플래시 메모리 장치에 데이터를 기록하는 방법
US10191688B2 (en) Memory system and information processing system
US10747666B2 (en) Memory system
US10564880B2 (en) Data deduplication method and apparatus
US20100174853A1 (en) User device including flash and random write cache and method writing data
RU2661280C2 (ru) Контроллер массива, твердотельный диск и способ для управления твердотельным диском для записи данных
KR101730151B1 (ko) 플래시 메모리 장치에 데이터를 기록하는 방법, 플래시 메모리 장치, 및 저장 시스템
KR101861545B1 (ko) 저장 장치의 데이터 관리 방법
US20200363977A1 (en) Data Migration Method, Host, and Solid State Disk
US10754785B2 (en) Checkpointing for DRAM-less SSD
US9317312B2 (en) Computer and memory management method
US9400603B2 (en) Implementing enhanced performance flash memory devices
CN105917303B (zh) 一种控制器、识别数据块稳定性的方法和存储系统
CN108475230B (zh) 一种存储系统和系统垃圾回收方法
WO2016086411A1 (zh) 一种控制器、闪存装置、识别数据块稳定性的方法以及在闪存装置中存储数据的方法
KR20170129701A (ko) 캐시 삽입을 위한 기준으로서 데이터의 압축률을 사용하는 것에 의한 스토리지 캐시 성능 향상
KR101626218B1 (ko) 블록 기반의 페이지 매핑 방법
KR101549569B1 (ko) 가비지 컬렉션 수행 방법 및 그 방법을 이용한 플래시 메모리 장치
KR20230078577A (ko) 동기식 쓰기 방법 및 장치, 스토리지 시스템 및 전자 장치
KR20190066918A (ko) 반도체 장치
US10923178B1 (en) Data storage with improved write performance for preferred user data

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20191016

Year of fee payment: 4