KR102013430B1 - 어레이 컨트롤러, 솔리드 스테이트 디스크, 및 데이터를 기록하기 위해 솔리드 스테이트 디스크를 제어하는 방법 - Google Patents

어레이 컨트롤러, 솔리드 스테이트 디스크, 및 데이터를 기록하기 위해 솔리드 스테이트 디스크를 제어하는 방법 Download PDF

Info

Publication number
KR102013430B1
KR102013430B1 KR1020167023669A KR20167023669A KR102013430B1 KR 102013430 B1 KR102013430 B1 KR 102013430B1 KR 1020167023669 A KR1020167023669 A KR 1020167023669A KR 20167023669 A KR20167023669 A KR 20167023669A KR 102013430 B1 KR102013430 B1 KR 102013430B1
Authority
KR
South Korea
Prior art keywords
logical block
data
solid state
state disk
array controller
Prior art date
Application number
KR1020167023669A
Other languages
English (en)
Other versions
KR20170083963A (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 KR20170083963A publication Critical patent/KR20170083963A/ko
Application granted granted Critical
Publication of KR102013430B1 publication Critical patent/KR102013430B1/ko

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

본 발명의 실시예는 통신 인터페이스와 프로세서를 포함하는 어레이 컨트롤러를 제공한다. 상기 통신 인터페이스는 솔리드 스테이트 디스크와 통신하도록 구성된다. 상기 프로세서는 솔리드 스테이트 디스크에 의해 전송되는 논리 블록에 관한 정보를 수신하도록 구성되며, 상기 논리 블록에 관한 정보는 상기 논리 블록의 크기 및 상기 논리 블록의 지시 정보를 포함하고, 상기 논리 블록은 하나 이상의 블록을 포함한다. 상기 프로세서는 추가로 상기 솔리드 스테이트 디스크에 복수의 데이터 기록 요청(write data request)을 전송하도록 구성되며, 각각의 데이터 기록 요청은 타깃 데이터를 싣고 있고, 각각의 데이터 기록 요청은 상기 솔리드 스테이트 디스크에, 상기 논리 블록의 지시 정보에 의해 지시되는 논리 블록에 상기 타깃 데이터를 기록하도록 명령하는 데 사용되고, 상기 복수의 데이터 기록 요청에 포함된 상기 타깃 데이터의 길이의 합은 상기 논리 블록의 크기와 같다. 상기 솔리드 스테이트 디스크가 상기 논리 블록에 각각의 타깃 데이터를 기록한 후에 상기 논리 블록은 채워질 수 있으며, 이로써 솔리드 스테이트 디스크가 가비지 컬렉션 작업(garbage collection operation)을 수행할 때 기록 증폭(write amplification)을 감소시킬 수 있다.

Description

어레이 컨트롤러, 솔리드 스테이트 디스크, 및 데이터를 기록하기 위해 솔리드 스테이트 디스크를 제어하는 방법 {ARRAY CONTROLLER, SOLID STATE DISK, AND METHOD FOR CONTROLLING SOLID STATE DISK TO WRITE DATA}
본 발명의 실시예는 저장 기술에 관한 것으로, 특히, 어레이 컨트롤러, 솔리드 스테이트 디스크, 및 데이터를 기록하기 위해 솔리드 스테이트 디스크를 제어하는 방법에 관한 것이다.
플래시 메모리(Flash Memory) 장치는 비휘발성 메모리이다. 플래시 메모리 장치의 저장 매체는 전원이 꺼진 후에도 데이터나 소실되지 않는 특징이 있는 플래시 메모리 칩(Flash memory chip)이다. 따라서, 플래시 메모리 장치는 외부 또는 내부 메모리로 널리 사용된다. 저장 매체로 플래시 메모리 칩을 사용하는 플래시 메모리 장치는, 솔리드 스테이트 드라이브(완전한 명칭: Solid State Drive, 약칭하여 SSD)라고도 알려져 있는, 솔리드 스테이트 디스크(완전한 명칭: Solid State Device, 약칭하여 SSD), 또는 다른 메모리일 수 있다.
SSD는 일반적으로 다수의 플래시 메모리 칩을 포함하고, 각각의 플래시 메모리는 여러 블록(block)을 포함한다. 일반적으로, 외부로부터 수신된 데이터를 저장하는 경우, SSD는 데이터 처리 효율을 향상시키기 위해 복수의 블록에 데이터를 동시에 기록할 수 있다. 가비지 컬렉션(garbage collection) 처리를 수행하는 경우, SSD는 복수의 블록으로부터 유효 데이터를 획득하여 그 유효 데이터를 빈 블록(free block)으로 이동시켜야 하는데, 이것이 기록 증폭(write amplification)을 야기한다.
본 발명의 실시예는, 크기가 블록의 표준 크기의 정수배와 같은 데이터의 세그먼트(segment)를 하나 이상의 블록에 기록하여, 하나 이상의 블록을 채울 수 있는, 어레이 컨트롤러, 솔리드 스테이트 디스크, 및 데이터를 기록하기 위해 솔리드 스테이트 디스크를 제어하는 방법을 제안하여, 솔리드 스테이트 디스크가 가비지 컬렉션을 수행하는 경우에 기록 증폭을 감소시킨다.
본 발명의 제1 측면은 어레이 컨트롤러를 제공하며, 상기 어레이 컨트롤러는 스토리지 시스템 내에 위치하고, 상기 스토리지 시스템은 솔리드 스테이트 디스크를 더 포함하고, 상기 어레이 컨트롤러는 통신 인터페이스 및 프로세서를 포함하고; 상기 통신 인터페이스는 상기 솔리드 스테이트 디스크와 통신하도록 구성되고; 상기 프로세서는, 상기 솔리드 스테이트 디스크에 의해 전송되는 논리 블록에 관한 정보를 수신하도록 구성되고, 상기 논리 블록에 관한 정보는 상기 논리 블록의 크기 및 상기 논리 블록의 지시 정보를 포함하고, 상기 논리 블록은 하나 이상의 블록을 포함하며, 상기 프로세서는 상기 솔리드 스테이트 디스크에 복수의 데이터 기록 요청(write data request)을 전송하고, 각각의 데이터 기록 요청은 타깃 데이터를 싣고 있고(carry), 각각의 데이터 기록 요청은 상기 솔리드 스테이트 디스크에, 상기 논리 블록의 지시 정보에 의해 지시되는 논리 블록에 타깃 데이터를 기록하도록 명령하는 데 사용되고, 상기 복수의 데이터 기록 요청에 실려 있는 상기 타깃 데이터의 길이의 합은 상기 논리 블록의 크기와 동일하다. 솔리드 스테이트 디스크는, 복수의 데이터 기록 요청을 수신한 후, 각각의 데이터 기록 요청 내의 지시 정보에 따라, 데이터 기록 요청 내에 실려 있는 타깃 데이터를 지시 정보에 의해 지시되는 논리 블록에 기록한다. 유의해야 할 것은, 논리 블록은 하나 이상의 블록을 포함하기 때문에, 타깃 데이터를 논리 블록에 기록하는 것은 실제로 논리 블록에 포함되어 있는 하나 이상의 블록에 타깃 데이터를 기록하는 것이라는 것이다.
이 구현 방식에서는, 프로세서에서 솔리드 스테이트 디스크에 전송되는 복수의 데이터 기록 요청에 실려 있는 타깃 데이터의 길이의 합이 논리 블록의 크기와 동일하고, 각각의 데이터 기록 요청이 솔리드 스테이트 디스크에, 논리 블록의 지시 정보에 의해 지시되는 논리 블록에 타깃 데이터를 기록하도록 명령하는 데 사용되기 때문에, 솔리드 스테이트 디스크는, 지시 정보에 따라, 복수의 데이터 기록 요청에 실려 있는 모든 타깃 데이터를 동일한 논리 블록에 기록하여, 그 논리 블록을 채운다. 본 실시예에서는, 하나의 논리 블록이 하나 이상의 블록을 포함하기 때문에, 이것은 타깃 데이터가 하나 이상의 블록에 기록되어, 이들 블록이 채워진다는 것을 의미한다. 당업자는, 가비지 컬렉션을 하는 동안에, 솔리드 스테이트 디스크가 블록들 내에서 컬렉션을 수행한다는 것을 이해할 수 있을 것이다. 타깃 데이터가 모두 하나 이상의 블록에 기록되고 그 하나 이상의 블록은 다른 데이터를 포함하지 않기 때문에, 타깃 데이터가 나중에 어레이 컨트롤러에 의해 모두 해제되면, 즉, 무효 데이터(invalid data)로 표시되면, SSD는 유효 데이터를 이동시키지 않고 논리 블록 내의 모든 블록으로부터 데이터를 바로 지울 수 있으므로, 가비지 컬렉션 동안의 기록 증폭을 감소시킨다.
제1 측면을 참조하여, 제1 측면의 제1 구현 방식에서, 상기 논리 블록에 포함된 블록들은 상이한 채널에 위치한다. 일반적으로, 솔리드 스테이트 디스크 내에서, 동시 판독 및 기록이 채널 간에 구현될 수 있다. 따라서, 논리 블록에 포함된 블록들이 상이한 채널에 위치하는 경우, 타깃 데이터를 그 논리 블록에 동시에 기록할 수 있으며, 이로써 데이터 기록 효율을 향상시킨다.
제1 측면을 참조하여, 제1 측면의 제2 구현 방식에서, 상기 논리 블록에 포함된 블록들은 동일한 채널에 속한다. 어떤 경우에는, 동시 판독 및 기록이 하나의 채널 내의 복수의 블록 간에 구현될 수도 있다. 따라서, 논리 블록에 포함된 블록들이 동일한 채널에 속하는 경우, 타깃 데이터를 그 논리 블록에 동시에 기록할 수 있으며, 이로써 또한 데이터 기록 효율을 향상시킨다.
제1 측면의 전술한 구현 방식 중 하나를 참조하여, 제1 측면의 제3 구현 방식에서, 상기 논리 블록은 기록될 상태(to-be-written state)에 있는 논리 블록이고, 상기 기록될 상태에 있는 논리 블록은, 데이터를 저장하기 위해 상기 솔리드 스테이트 디스크에 의해 할당된 논리 블록을 가리킨다.
본 실시예에서, 논리 블록은 네 가지를 상태를 가진다: 빈 상태(free), 기록될 상태, 가득찬 상태(full), 및 불량 상태(bad). 솔리드 스테이트 디스크는 어레이 컨트롤러에 기록될 상태에 있는 논리 블록을 보고하며, 데이터는 기록될 상태에 있는 논리 블록에 바로 기록될 수 있다. 따라서, 솔리드 스테이트 디스크는, 어레이 컨트롤러에 의해 전송되는 데이터 기록 요청을 수신한 경우, 데이터 기록 요청에 실려 있는 지에 따라 기록될 상태에 있는 논리 블록에 타깃 데이터를 바로 기록할 수 있다.
제1 측면의 전술한 구현 방식 중 어느 하나를 참조하여, 제1 측면의 제4 구현 방식에서, 논리 블록의 지시 정보의 지시 정보에 대해, 구체적인 구현 방식에서, 상기 지시 정보는 상기 솔리드 스테이트 디스크에 의해 상기 논리 블록에 할당되는 식별자이다. 상기 지시 정보가 논리 블록의 식별자인 경우, 어레이 컨트롤러에 의해 솔리드 스테이트 디스크에 전송되는 각각의 데이터 기록 요청은 상기 식별자를 싣고 있다. 솔리드 스테이트 디스크는, 데이터 기록 요청을 수신한 후, 식별자에 따라, 각각의 데이터 기록 요청 내의 타깃 데이터를 식별자에 대응하는 논리 블록에 기록하여, 그 식별자에 대응하는 논리 블록을 채운다.
제1 측면의 전술한 구현 방식 중 어느 하나를 참조하여, 본 실시예는 제1 측면의 제4 구현 방식에 대안적인 구현 방식, 즉 제1 측면의 제5 구현 방식을 더 제공하며, 이 구현 방식에서, 상기 논리 블록의 지시 정보는 상기 솔리드 스테이트 디스크에 의해 상기 논리 블록에 할당되는 논리 주소 범위를 포함한다. 상기 지시 정보가 논리 주소 범위일 때, 어레이 컨트롤러에 의해 솔리드 스테이트 디스크에 전송되는 각각의 데이터 기록 요청은 상기 논리 주소 범위의 하위범위(sub-range)를 싣고 있다. 솔리드 스테이트 디스크는, 데이터 기록 요청을 수신한 후, 하위범위에 따라, 각각의 데이터 기록 요청 내의 타깃 데이터에 대응하는 논리 블록을 결정하고, 타깃 데이터를 논리 블록에 기록하여, 그 논리 블록을 채운다.
제1 측면의 전술한 구현 방식 중 어느 하나를 참조하여, 제1 측면의 제6 구현 방식에서, 상기 어레이 컨트롤러는 캐시를 더 포함하고, 상기 프로세서는 추가로, 상기 캐시로부터 복수의 타깃 데이터를 판독하도록 구성된다. 어레이 컨트롤러가 캐시를 포함하기 때문에, 어레이 컨트롤러는, 외부 데이터를 수신한 후, 그 데이터를 저장을 위해 솔리드 스테이트 디스크에 바로 전송하는 대신에 그 데이터를 캐시에 일시적으로 저장할 수 있으며, 캐시 내의 데이터의 크기가 특정한 워터 마크(water mark)(예를 들어, 논리 블록의 크기)에 도달한 경우에 솔리드 스테이트 디스크에 그 데이터를 전송한다.
제1 측면의 제6 구현 방식을 참조하여, 제1 측면의 제7 구현 방식에서, 상기 스토리지 시스템은 호스트를 더 포함하고, 상기 어레이 컨트롤러는 상기 호스트와 상기 솔리드 스테이트 디스크 사이에 위치한다. 이 구현 방식에서는, 어레이 컨트롤러는 호스트로부터 데이터를 수신하고, 그 데이터를 캐시에 기록할 수 있다.
실시예의 제2 측면은 솔리드 스테이트 디스크를 제공하며, 상기 솔리드 스테이트 디스크는 플래시 메모리 칩 및 솔리드 스테이트 디스크 컨트롤러를 포함하고, 상기 플래시 메모리 칩은 복수의 채널을 포함하고, 각각의 채널은 복수의 블록을 포함하고; 상기 솔리드 스테이트 디스크 컨트롤러는, 어레이 컨트롤러에 논리 블록에 관한 정보를 전송하도록 구성되고, 상기 논리 블록에 관한 정보는 상기 논리 블록의 크기 및 상기 논리 블록의 지시 정보를 포함하고, 상기 논리 블록은 하나 이상의 블록을 포함하며; 또한 상기 솔리드 스테이트 디스크 컨트롤러는 추가로, 상기 어레이 컨트롤러에 의해 전송되는 복수의 데이터 기록 요청을 수신하도록 구성되고, 각각의 데이터 기록 요청은 타깃 데이터를 싣고 있고, 각각의 데이터 기록 요청은 상기 솔리드 스테이트 디스크에, 상기 논리 블록의 지시 정보에 의해 지시되는 논리 블록에 상기 타깃 데이터를 기록하도록 명령하는 데 사용된다. 또, 상기 복수의 데이터 기록 요청에 실려 있는 상기 타깃 데이터의 길이의 합은 상기 논리 블록의 크기와 동일하고; 상기 솔리드 스테이트 디스크 컨트롤러는 나중에 상기 지시 정보에 의해 지시되는 상기 논리 블록에, 각각의 데이터 기록 요청에 실려 있는 타깃 데이터를 기록한다. 유의해야 할 것은, 논리 블록이 하나 이상의 블록을 포함하기 때문에, 논리 블록에 타깃 데이터를 기록하는 것은, 실제로는 논리 블록에 포함되어 있는 하나 이상의 블록에 타깃 데이터를 기록하는 것이라는 것이다.
이 구현 방식에서는, 솔리드 스테이트 디스크는 논리 블록에 관한 정보를 어레이 컨트롤러에 보고한다. 논리 블록에 관한 정보는 논리 블록의 크기 및 논리 블록의 지시 정보를 포함한다. 따라서, 어레이 컨트롤러는 논리 블록에 관한 정보에 따라 솔리드 스테이트 디스크에 데이터 기록 요청을 전송할 수 있다. 구체적으로, 어레이 컨트롤러에서 솔리드 스테이트 디스크에 전송되는 복수의 데이터 기록 요청에 실려 있는 타깃 데이터의 길이의 합이 논리 블록의 크기와 동일하고, 각각의 데이터 기록 요청이 솔리드 스테이트 디스크에, 논리 블록의 지시 정보에 의해 지시되는 논리 블록에 타깃 데이터를 기록하도록 명령하는 데 사용된다. 따라서 솔리드 스테이트 디스크는, 지시 정보에 따라, 복수의 데이터 기록 요청에 실려 있는 모든 타깃 데이터를 동일한 논리 블록에 기록하여, 그 논리 블록을 채울 수 있다. 본 실시예에서는, 하나의 논리 블록이 하나 이상의 블록을 포함하기 때문에, 이것은 타깃 데이터가 하나 이상의 블록에 기록되어, 이들 블록이 채워진다는 것을 의미한다. 당업자는, 가비지 컬렉션을 하는 동안에, 솔리드 스테이트 디스크가 블록들 내에서 컬렉션을 수행한다는 것을 이해할 수 있을 것이다. 타깃 데이터가 모두 하나 이상의 블록에 기록되고 그 하나 이상의 블록은 다른 데이터를 포함하지 않기 때문에, 타깃 데이터가 나중에 어레이 컨트롤러에 의해 모두 해제되면, 즉, 무효 데이터로 표시되면, SSD는 유효 데이터를 이동시키지 않고 논리 블록 내의 모든 블록으로부터 데이터를 바로 지울 수 있으므로, 가비지 컬렉션 동안의 기록 증폭을 감소시킨다.
제2 측면을 참조하여, 제2 측면의 제1 구현 방식에서, 상기 논리 블록에 포함된 블록들은 상이한 채널에 위치한다. 일반적으로, 솔리드 스테이트 디스크 내에서, 동시 판독 및 기록이 채널 간에 구현될 수 있다. 따라서, 논리 블록에 포함된 블록들이 상이한 채널에 위치하는 경우, 타깃 데이터를 그 논리 블록에 동시에 기록할 수 있으며, 이로써 데이터 기록 효율을 향상시킨다.
제2 측면을 참조하여, 제2 측면의 제2 구현 방식에서, 상기 논리 블록에 포함된 블록들은 동일한 채널에 속한다. 어떤 경우에는, 동시 판독 및 기록이 하나의 채널 내의 복수의 블록 간에 구현될 수도 있다. 따라서, 논리 블록에 포함된 블록들이 동일한 채널에 속하는 경우, 타깃 데이터를 그 논리 블록에 동시에 기록할 수 있으며, 이로써 또한 데이터 기록 효율을 향상시킨다.
제2 측면의 전술한 구현 방식 중 하나를 참조하여, 제2 측면의 제3 구현 방식에서, 상기 논리 블록은 기록될 상태(to-be-written state)에 있는 논리 블록이고, 상기 기록될 상태에 있는 논리 블록은, 데이터를 저장하기 위해 상기 솔리드 스테이트 디스크에 의해 할당된 논리 블록을 가리킨다. 본 실시예에서, 논리 블록은 네 가지를 상태를 가진다: 빈 상태(free), 기록될 상태, 가득찬 상태(full), 및 불량 상태(bad). 솔리드 스테이트 디스크는 어레이 컨트롤러에 기록될 상태에 있는 논리 블록을 보고하며, 데이터는 기록될 상태에 있는 논리 블록에 바로 기록될 수 있다. 따라서, 솔리드 스테이트 디스크는, 어레이 컨트롤러에 의해 전송되는 데이터 기록 요청을 수신한 경우, 데이터 기록 요청에 실려 있는 지에 따라 기록될 상태에 있는 논리 블록에 타깃 데이터를 바로 기록할 수 있다.
제2 측면의 전술한 구현 방식 중 어느 하나를 참조하여, 제2 측면의 제4 구현 방식에서, 논리 블록의 지시 정보의 지시 정보에 대해, 구체적인 구현 방식에서, 상기 지시 정보는 상기 솔리드 스테이트 디스크에 의해 상기 논리 블록에 할당되는 식별자이다. 상기 지시 정보가 논리 블록의 식별자인 경우, 솔리드 스테이트 디스크에 의해 수신되는 각각의 데이터 기록 요청은 상기 식별자를 싣고 있다. 솔리드 스테이트 디스크는, 데이터 기록 요청을 수신한 후, 식별자에 따라, 각각의 데이터 기록 요청 내의 타깃 데이터를 식별자에 대응하는 논리 블록에 기록하여, 그 식별자에 대응하는 논리 블록을 채운다.
제2 측면의 전술한 구현 방식 중 어느 하나를 참조하여, 본 실시예는 제2 측면의 제4 구현 방식에 대안적인 구현 방식, 즉 제2 측면의 제5 구현 방식을 더 제공하며, 이 구현 방식에서, 상기 논리 블록의 지시 정보는 상기 솔리드 스테이트 디스크에 의해 상기 논리 블록에 할당되는 논리 주소 범위를 포함한다. 상기 지시 정보가 논리 주소 범위일 때, 솔리드 스테이트 디스크에 의해 수신되는 각각의 데이터 기록 요청은 상기 논리 주소 범위의 하위범위를 싣고 있다. 솔리드 스테이트 디스크는, 데이터 기록 요청을 수신한 후, 하위범위에 따라, 각각의 데이터 기록 요청 내의 타깃 데이터에 대응하는 논리 블록을 결정하고, 타깃 데이터를 논리 블록에 기록하여, 그 논리 블록을 채운다.
제2 측면의 제3 내지 제5 구현 방식을 참조하여, 제2 측면의 제6 구현 방식에서, 상기 솔리드 스테이트 디스크 컨트롤러는 추가로, 상기 논리 블록에 할당된 지시 정보를 재이용(reclaim)하도록 구성된다. 지시 정보는 기록될 상태에 있는 논리 블록에만 할당되기 때문에, 그 논리 블록이 채워진 경우, 논리 블록의 지시 정보는 사용을 위해 다른 기록될 상태에 있는 논리 블록에 재이용될 수 있다.
제2 측면의 전술한 구현 방식 중 어느 하나를 참조하여, 제2 측면의 제7 구현 방식에서, 송기 솔리드 스테이트 디스크 컨트롤러는 구체적으로, 상기 어레이 컨트롤러에 SCSI WRITE 커맨드를 전송하도록 구성되고, 상기 커맨드는 GROUP NUMBER 필드를 포함하고, 상기 필드는 논리 블록의 지시 정보를 싣기 위해 사용된다. 이 구현 방식에서는, 논리 블록의 지시 정보를 보고하기 위해 전용 커맨드(private command)가 제공된다. 종래의 SCSI 커맨드는 GROUP NUMBER 필드를 포함하지 않는다. 본 실시예에서, GROUP NUMBER 필드는 구체적으로 논리 블록의 지시 정보를 보고하기 위해 SCSI WRITE 커맨드에 부가된다.
본 발명의 실시예의 제3 측면은 데이터를 기록하기 위해 솔리드 스테이트 디스크를 제어하는 방법을 제공하며, 상기 방법은 제1 측면에서 제공된 어레이 컨트롤러에 적용된다.
본 발명의 실시예의 제4 측면은 데이터를 기록하기 위해 솔리드 스테이트 디스크를 제어하는 방법을 제공하며, 상기 방법은 제2 측면에서 제공된 어레이 컨트롤러에 적용된다.
본 발명의 실시예의 제5 측면은 데이터를 기록하기 위해 솔리드 스테이트 디스크를 제어하는 장치를 제공하며, 상기 장치는 제1 측면에서 제공된 어레이 컨트롤러 내에 위치한다.
본 발명의 실시예의 제6 측면은 데이터를 기록하기 위해 솔리드 스테이트 디스크를 제어하는 장치를 제공하며, 상기 장치는 제2 측면에서 제공된 어레이 컨트롤러 내에 위치한다.
제3 측면 내지 제6 측면에서 제공된 데이터를 기록하기 위해 솔리드 스테이트 디스크를 제어하는 방법 및 데이터를 기록하기 위해 솔리드 스테이트 디스크를 제어하는 장치에 따르면, 크기가 블록의 표준 크기의 정수배와 같은 데이터의 세그먼트를 하나 이상의 블록에 기록하여, 하나 이상의 블록을 채울 수 있으며, 이에 따라 솔리드 스테이트 디스크가 가비지 컬렉션을 수행하는 경우에 기록 증폭을 감소시킨다.
본 발명의 실시예는 프로그램 코드를 저장하는. 컴퓨터로 판독할 수 있는 저장 매체를 포함한 컴퓨터 프로그램 제품을 제공하며, 상기 프로그램 코드에 포함된 명령어는 제1 측면에서의 어레이 컨트롤러에 의해 실행되어, 제3 측면에서의 하나 이상의 방법을 수행하는 데사용된다.
본 발명의 실시예는 프로그램 코드를 저장하는. 컴퓨터로 판독할 수 있는 저장 매체를 포함한 컴퓨터 프로그램 제품을 제공하며, 상기 프로그램 코드에 포함된 명령어는 제2 측면에서의 어레이 컨트롤러에 의해 실행되어, 제4 측면에서의 하나 이상의 방법을 수행하는 데 사용된다.
본 발명의 실시예에서 제공된 전술한 컴퓨터 프로그램 제품은 크기가 블록의 표준 크기의 정수배와 같은 데이터의 세그먼트를 하나 이상의 블록에 기록하여, 하나 이상의 블록을 채울 수 있으므로, 솔리드 스테이트 디스크가 가비지 컬렉션을 수행하는 경우에 기록 증폭을 감소시킨다.
본 발명의 실시예에서의 기술적 방안을 더욱 명확하게 설명하기 위해, 이하에 실시예 또는 종래기술의 설명에 필요한 첨부도면을 간단하게 소개한다. 명백히, 이하의 설명에서의 첨부도면은 본 발명의 실시예를 보여줄 뿐이며, 해당 기술분야의 통상의 지식을 가진자(이하, 당업자라고 함)는 창의적인 노력 없이 이들 첨부도면으로부터 다른 도면을 도출할 수 있을 것이다.
도 1은 본 발명의 실시예에 따른 애플리케이션 시나리오의 도면이다.
도 2는 본 발명의 실시예에 따른 플래시 메모리 칩의 개략도이다.
도 3은 본 발명의 실시예에 따른 블록의 개략도이다.
도 4는 본 발명의 실시예에 따른 종래기술에서의 솔리드 스테이트 디스크로 데이터를 저장하는 개략도이다.
도 5는 본 발명의 실시예에 따른 논리 블록의 개략도이다.
도 6은 본 발명의 실시예에 따른 어레이 컨트롤러의 개략 구성도이다.
도 7은 본 발명의 실시예에 따른 데이터를 기록하기 위해 솔리드 스테이트 디스크를 제어하는 방법의 개략 흐름도이다.
도 8은 본 발명의 실시예에 따른 솔리드 스테이트 디스크에 의해 데이터를 저장하는 개략도이다.
도 9는 본 발명의 실시예에 따른 데이터를 기록하기 위해 솔리드 스테이트 디스크를 제어하는 다른 방법의 개략 흐름도이다.
도 10은 본 발명의 실시예에 따른 데이터를 기록하기 위해 솔리드 스테이트 디스크를 제어하는 또 다른 방법의 개략 흐름도이다.
도 11은 본 발명의 실시예에 따른 데이터를 기록하기 위해 솔리드 스테이트 디스크를 제어하는 장치의 개략 구성도이다.
도 12는 본 발명의 실시예에 따른 데이터를 기록하기 위해 솔리드 스테이트 디스크를 제어하는 다른 장치의 개략 구성도이다.
본 발명의 실시예는, 크기가 블록의 표준 크기의 정수배와 같은 데이터의 세그먼트(segment)를 하나 이상의 블록에 기록하여, 하나 이상의 블록을 채울 수 있는, 어레이 컨트롤러, 솔리드 스테이트 디스크, 및 데이터를 기록하기 위해 솔리드 스테이트 디스크를 제어하는 방법을 제안하여, 솔리드 스테이트 디스크가 가비지 컬렉션을 수행하는 경우에 기록 증폭을 감소시킨다.
도 1은 본 발명의 실시예에 따른 스토리지 시스템의 구성도이다. 도 1에 도시된 스토리지 시스템은 호스트(33), 어레이 컨트롤러(11), 및 솔리드 스테이트 디스크(22)를 포함한다. 호스트(33)는 서버 또는 데스크톱 컴퓨터 등의 단말 기기일 수 있다.
어레이 컨트롤러(11)는 호스트(33)와 솔리드 스테이트 디스크(22) 사이에 위치하고, 예를 들어, 서버 또는 데스크톱 컴퓨터 등의 컴퓨팅 기기일 수 있다. 어레이 컨트롤러(11)에는 운영체제 및 다른 애플리케이션 프로그램이 설치된다. 어레이 컨트롤러(11)는 호스트(33)로부터 입력/출력(input/output, I/0) 요청을 수신하고, I/O 요청에 실려 있는 데이터를 저장하고, 구체적인 조건이 충족되는 경우에 어레이 컨트롤러(11)에 저장되어 있는 데이터를 솔리드 스테이트 디스크(22)에 기록할 수 있다.
솔리드 스테이트 드라이브(Solid State Drive, SSD)라고도 하는, 솔리드 스테이트 디스크(Solid State Device, SSD)(22)는 플래시 메모리 칩을 저장 매체로 사용하는 메모리이거나, 또는 다른 메모리를 포함할 수 있다. 본 실시예에서, 솔리드 스테이트 디스크(22)는 예로서 SSD를 사용하여 솔리드 스테이트 디스크(22)를 설명한다.
도 1은 설명을 위한 예시일 뿐이며, 구체적인 네트워킹 방식에 대한 제한사항을 구성하지 않는다. 예를 들어, 어레이 컨트롤러(11)와 솔리드 스테이트 디스크(22)가 서로 통신할 수 있으면, 캐스캐딩 트리 네트워크(cascading tree network) 또는 링 네트워크(ring network)가 사용될 수 있다.
솔리드 스테이트 디스크(22)는 SSD 컨트롤러(220)와 저장 매체(221)를 포함한다. SSD 컨트롤러(220)는 어레이 컨트롤러(11)에 의해 전송되는 데이터 기록 요청 또는 데이터 판독 요청 등의 작업을 수행하도록 구성된다.
저장 매체(221)는 일반적으로 몇몇 플래시 메모리(Flash) 칩을 포함한다. 각각의 플래시 메모리 칩은 복수의 채널을 포함하고, 각각의 채널은 몇몇 블록(block)을 포함한다(도 2에 참조). 일반적으로, 플래시 메모리 칩은 고정된 크기에 따라 몇 개의 블록으로 분할될 수 있다. 따라서, 블록은 표준 크기를 갖는다. 블록의 크기는 유휴 상태(idle)이고 불량 페이지(bad page)를 포함하지 않는 블록에 저장될 수 있는 데이터의 크기를 의미한다. 일반적으로 블록의 크기는 2(M)의 N승일 수 있으며, 여기서 N은 양의 정수이다. SSD에 의해 수행되는 소거 작업(erase operation)은 블록 단위로 수행된다. 예를 들어, SSD는 가비지 컬렉션을 수행해야 하는 경우, SSD는 먼저 유효 데이터를 하나의 블록에서 다른 새로운 블록으로 이동시킨 다음, 원래의 블록에 저장된(유효 데이터와 무효 데이터를 포함하는) 모든 데이터를 소거한다. 본 발명의 본 실시예에서, 블록 내의 유효 데이터는 블록 내에 저장되어 있는, 수정된 적이 없는 데이터를 가리키며, 데이터의 이 부분은 판독될 가능성이 있으며; 블록 내의 무효 데이터는 블록 내에 저장되어 있는, 수정된 적이 있는 데이터를 가리키며, 데이터의 이 부분은 판독될 가능성이 없다. 플래시 메모리 칩의 소거 특성으로 인해, 블록에 저장된 데이터는 일반적인 기계적인 하드 드라이브에서의 데이터로 직접 수정될 수 없다는 것은 당업자에게 공지되어 있을 수 있다. 블록 내의 데이터가 수정되어야 하는 경우, SSD 컨트롤러(220)는 새로운 블록을 찾아, 수정된 데이터를 그 새로운 블록에 기록하며, 원래의 블록의 데이터는 무효 데이터가 된다. 이 무효 데이터는 SSD가 가비지 컬렉션를 수행할 때 소거된다.
또, 도 3에 도시된 바와 같이, 각각의 블록은 몇몇 페이지(page)를 포함한다. SSD는 데이터 기록 요청을 수행할 때 데이터를 페이지 단위로 기록한다. 예를 들어, 어레이 컨트롤러(11)는 SSD 컨트롤러(220)에 데이터 기록 요청을 전송하며, 데이터 기록 요청은 논리 블록 주소(logical block Address, LBA)를 싣고 있으며, LBA는 어레이 컨트롤러(11)에 대해 가시적이고 액세스 가능한 주소이다. SSD 컨트롤러(220)는, 데이터 기록 요청을 수신한 후, 설정된 정책(set policy)에 따라 하나 이상의 블록의 페이지에 데이터를 기록한다. 데이터가 기록되는 페이지의 주소는 데이터가 실제로 저장되느 곳의 주소이며, 물리 주소라고도 한다. SSD는 LBA와 물리 주소 사이의 대응관계를 확립 및 저장하도록 구성된 플래시 트랜잭션 계층(Flash Translation Layer, FTL)을 포함한다. 어레이 컨트롤러(11)가 나중에 SSD 컨트롤러(220)에 데이터 판독 요청을 전송하여 데이터의 판독을 요청하는 경우, 데이터 판독 요청은 LBA를 싣고 있으며, SSD 컨트롤러(220)는 LBA 및 LAB와 물리 주소 사이의 대응관계에 따라 데이터를 판독하여, 그 데이터를 어레이 컨트롤러(11)에 전송할 수 있다.
어레이 컨트롤러(11)가 캐시로부터 데이터의 세그먼트를 판독하고, SSD에 그 데이터의 세그먼트를 전송하는 경우, 일반적으로, 그 데이터의 세그먼트는 연속하는 논리 주소를 갖는 데이터의 세그먼트이다. 그러나, SSD 컨트롤러(220)는, 기록 데이터 요청을 수신한 경우, SSD 컨트롤러(220)에 의해 설정된 정책에 따라, 데이터를 하나 이상의 블록의 페이지(즉, 물리 주소)에 기록한다. 당업자는, 실제로 이들 물리 주소가 반드시 연속하는 것은 아님을 이해할 수 있을 것이다. 즉, 어레이 컨트롤러(11)의 관점에서, 연속적인 논리 어드레스를 가진 데이터 세그먼트가 분산 방식으로 SSD의 물리 공간에 실제로 기록된다. 이하에, 도 4를 참조하여 종래의 SSD에서 데이터를 기록하는 방법을 설명한다.
도 4는 종래기술에서 SSD가 데이터를 기록하는 방법을 나타낸 개략도이다. 일반적으로 솔리드 스테이트 디스크(22)는 채널에 데이터를 동시에 기록할 수 있기 때문에, 어레이 컨트롤러(11)가 솔리드 스테이트 디스크(22)에 데이터를 송신한 후에 SSD 컨트롤러(220)는 일반적으로 각각의 채널에서 하나의 블록을 선택하고, 복수의 블록에 그 데이터를 동시에 기록한다. 솔리드 스테이트 디스크(22)는 하나의 채널 내의 복수의 블록에 데이터를 동시에 기록할 수도 있다는 것을 이해할 수 있을 것이다. 도 4에 도시된 바와 같이, 복수의 블록에 데이터가 기록된 후, 각각의 블록은 데이터의 일부를 저장하기 위해 공간의 일부를 제공한다. 도 4에서, 블록의 흰색 부분은 블록의 빈 공간을 나타내고, 회색 부분은 데이터의 일부가 블록에 기록된 후의 블록의 사용된 공간을 나타낸다. 따라서, 어레이 컨트롤러(11)의 관점에서, 연속적인 논리 주소를 갖는 데이터의 세그먼트는 분산 방식으로 복수의 블록에 저장되고, 상이한 논리 주소 세그먼트에 속하는 데이터는 상이한 블록에 기록된다. 가비지 컬렉션 작업은 SSD에서 규칙적으로 수행되고, 소거는 가비지 컬렉션 작업 동안에 블록 단위로 수행된다는 것이 당업자에게 공지되어 있을 수 있다. 연속적인 논리 주소를 갖는 데이터의 세그먼트가 분산 방식으로 복수의 블록에 저장되고, 상이한 논리 주소에 속하는 데이터가 상이한 블록에 기록되기 때문에, 가비지 컬렉션 동안에, 유효 데이터는 다수의 블록으로부터 빈 블록으로 이동되어야 하고, 이는 가비지 컬렉션에 의해 야기되는 기록 증폭을 증가시킨다. 기록 증폭은 플래시 메모리 칩에 기록되는 데이터가 호스트에 의해 SSD에 의해 기록되는 데이터보다 많은 것을 의미한다.
본 실시예에서, 도 5에 도시된 바와 같이, 논리 블록(logical block)을 형성하기 위해, 각각의 채널로부터 하나의 블록을 빼낼 수 있다. 즉, 본 실시예에서의 논리 블록은 복수의 블록을 포함하고, 복수의 블록은 상이한 채널에 위치한다. 논리 블록을 형성하기 위해, 채널들 중 일부 각각으로부터 하나의 블록이 빼낼 수도 있다는 것을 이해할 수 있을 것이다. 마찬가지로, 논리 블록에 포함되어 있는 복수의 블록은 각각 상이한 채널에 위치한다. 논리 블록의 크기는 블록의 표준 크기의 정수배이고, 논리 블록에 포함되어 있는 블록의 수량에 따라 달라진다. 본 실시예에서, 논리 블록의 크기는 어레이 컨트롤러(11)에 미리 저장될 수 있다. 어레이 컨트롤러(11)는, 호스트(33)에 의해 전송되는 데이터 기록 요청을 수신한 후, 그 데이터 기록 요청을 어레이 컨트롤러(11)의 캐시에 일시적으로 저장할 수 있으며, 캐시 내의 데이터가 논리 블록의 크기에 도달한 때 저장을 위해 SSD에 전송할 수 있다.
본 실시예에서, 논리 블록은 논리 블록의 상태에 따라 네 가지 유형으로 분류된다. 빈 상태의 논리 블록, 기록될 상태의 논리 블록, 가득찬 상태의 논리 블록), 및 불량 상태의 논리 블록. 빈 상태에 있는 논리 블록은 데이터가 소거된 논리 블록을 가리고; 기록될 상태에 있는 논리 블록은 데이터를 기록하기 위해 할당된 논리 블록을 가리키고; 가득찬 상태에 있는 논리 블록은 공간이 이미 채워진 논리 블록을 가리키고, 가득찬 상태에 있는 논리 블록은 소거 후에 빈 상태의 논리 블록이 될 수 있으며; 불량 상태에 있는 논리 블록은 사용할 수 없는, 손상된 논리 블록을 가리킨다. 본 실시예에서 언급한 데이터를 저장하기 위한 논리 블록은 실제로 기록될 상태에 있는 논리 블록이다. 따라서, 이하의 설명에서는 달리 언급하지 않는 한, 논리 블록은 기록될 상태에 있는 논리 블록을 가리킨다.
기록될 상태에 있는 논리 블록을 식별하기 위해, 선택적인 구현 방식에서, SSD는 각각의 논리 블록에 식별자를 할당한다. 식별자는 숫자(digit), 문자, 또는 논리 블록을 유일한 것으로 식별할 수 있게 하는 다른 심볼일 수 있거나, 또는 숫자, 문자, 또는 다른 심볼의 임의의 조합일 수 있다. 예를 들어, 어느 논리 블록의 식별자는 0이고, 다른 논리 블록의 식별자는 1이고, 또 다른 논리 블록의 식별자는 2이고, 등등이다.
다른 선택적인 구현 방식에서, SSD는 각각의 논리 블록에 논리 주소 범위를 할당한다. 예를 들어, 어느 논리 블록에 대응하는 논리 주소 범위는 0 MB∼1023 MB이고, 다른 논리 블록에 대응하는 논리 주소 범위는 1024 MB∼2047 MB이고, 또 다른 논리 블록에 대응하는 논리 주소 범위는 2048 MB∼3071 MB이고, 등등이다.
저장을 위해 데이터를 SSD에 전송하는 경우에, SSD에, 식별자에 대응하는 논리 블록에 데이터를 기록하도록 명령하기 위해, 어레이 컨트롤러(11)가 데이터 기록 요청에 논리 블록의 식별자를 부가하고 그 데이터 기록 요청을 SSD에 전송할 수 있도록, SSD 컨트롤러(220)는 논리 블록의 식별자 또는 논리 블록의 논리 주소 범위를 어레이 컨트롤러(11)에 보고해야 한다. 또는, 논리 블록의 논리 주소 범위에 따라 데이터 기록 요청 내에 시작 논리 주소와 길이가 지정된다. 기록될 상태에 있는 논리 블록이 복수 개 있으면, 어레이 컨트롤러(11)는 복수의 논리 블록의 식별 또는 복수의 논리 블록의 논리 주소 범위를 수신한 다음, 복수의 논리 블록 중 어느 하나를 선택하고, 식별자 또는 논리 블록의 논리 주소 범위에 따라 SSD에 데이터 기록 요청을 전송한다.
이하에, 어레이 컨트롤러(11)의 하드웨어 구성을 설명한다. 도 6은 본 발명의 실시예에 따른에 따른 어레이 컨트롤러(11)의 개략 구성도이다. 도 6에 도시된 바와 같이, 어레이 컨트롤러(11)는 주로 프로세서(118), 캐시(120), 메모리(122), 통신 버스(약칭하여, 버스)(126), 및 통신 인터페이스(Communications Interface)(128)를 포함한다. 프로세서(119), 캐시(120), 메모리(122), 및 통신 인터페이스(128)는 통신 버스(126)를 사용하여 상호 통신할 수 있다.
통신 인터페이스(128)는 호스트(33) 또는 솔리드 스테이트 디스크(22)와 통신하도록 구성된다.
프로세서(118)는 중앙 처리 유닛(central processing unit, CPU) 또는 주문용 반도체(Application Specific Integrated Circuit, ASIC)일 수 있으며, 본 발명의 본 실시예를 구현하는 하나 이상의 집적회로로 구성된다. 본 발명의 본 실시예에서, 프로세서(118)는 호스트(33)로부터의 데이터 기록 요청 또는 데이터 판독 요청을 수신하고, 데이터 기록 요청 또는 데이터 판독 요청을 처리하고, 데이터 기록 요청 또는 데이터 판독 요청을 솔리드 스테이트 디스크(22)에 전송하며, 다른 작업을 수행하도록 구성된다.
메모리(122)는 프로그램(124)을 저장하도록 구성된다. 메모리(122)는 고속 RAM 메모리를 포함할 수 있으며, 하나 이상의 자기 디스크 메모리 등의, 비휘발성 메모리(non-volatile memory)를 더 포함할 수 있다. 메모리(122)는, 랜덤 액세스 메모리(Random-Access Memory, RAM), 자기 디스크, 하드 디스크, 광 디스크, 솔리드 스테이트 디스크(Solid State Disk, SSD), 또는 비휘발성 메모리 등의, 컴퓨터로 판독할 수 있는 임의의 비일시적인(non-transitory) 매체일 수 있다.
캐시(120)는 호스트(33)부터 수신된 데이터 또는 솔리드 스테이트 디스크(22)로부터 판독한 데이터를 일시적으로 저장하도록 구성된다. 캐시(120)는, RAM, ROM, 플래시 메모리, 또는 솔리드 스테이트 디스크(Solid State Disk, SSD) 등의, 데이터를 저장할 수 있는, 기계로 판독할 수 있는, 임의의 비일시적인 매체일 수 있으며, 본 명세서에서는 이를 한정하지 않다. 예를 들어, 어레이 컨트롤러(11)는, 호스트(33)에 의해 전송되는 데이터 기록 요청을 수신한 경우, 캐시(120)에 데이터 기록 요청을 저장할 수 있으며, 프로세서(118)는 그 데이터 기록 요청을 처리한다. 선택적으로, 으로, 어레이 컨트롤러(11)는, 호스트(33)에 의해 전송되는 복수의 데이터 기록 요청을 수신한 경우, 그 복수의 데이터 기록 요청을 캐시(120)에 일시적으로 저장할 수 있으며, 캐시(120)의 크기가 워터 마크에 도달(예를 들어, 캐시(120)에 저장된 데이터의 크기가 논리 블록의 크기에 도달)한 경우, 크기가 논리 블록의 크기와 동일한 데이터를 캐시(120)로부터 판독하고, 영구 저장을 위해 그 데이터를 솔리드 스테이트 디스크(22)에 전송한다.
또, 메모리(122)와 캐시(120)는 통합되거나 분리 배치될 수 있으며, 본 발명의 본 실시예에서는 이를 한정하지 않는다.
이하에, 본 발명의 실시예에 따라 솔리드 스테이트 디스크에 데이터를 기록하는 방법의 프로세스를 설명한다. 본 발명의 본 실시예에서 솔리드 스테이트 디스크에 데이터를 기록하는 방법은 도 1에 도시된 스토리지 시스템 및 도 6에 도시된 어레이 컨트롤러(11)에 적용될 수 있다. 도 7에 도시된 바와 같이, 상기 방법은 다음 단계를 포함한다:
단계 S301: SSD 컨트롤러(220)가 논리 블록의 지시 정보를 어레이 컨트롤러(11)에 전송한다.
구체적으로, SSD 컨트롤러(220)는 논리 블록의 지시 정보를 어레이 컨트롤러(11)의 프로세서(118)에 전송한다. 논리 블록의 지시 정보는 솔리드 스테이트 디스크(22)에 의해 논리 블록에 할당되는 식별자일 수 있거나, 솔리드 스테이트 디스크(22)에 의해 논리 블록에 할당되는 논리 주소 범위, 또는 특정한 논리 블록을 지시하는 다른 정보일 수 있다.
단계 S302: SSD 컨트롤러(220)가 논리 블록의 크기를 어레이 컨트롤러(11)에 전송한다.
구체적으로, SSD 컨트롤러(220)는 논리 블록의 크기를 어레이 컨트롤러(11)의 프로세서(118)에 전송하고, 프로세서(118)가 논리 블록의 크기를 수신한다. 유의해야 할 것은, 단계 S302 및 단계 S301은 반드시 특정한 순서로 수행되어야 하는 것이 아니라는 것이다. 즉, 본 실시예에서, SSD 컨트롤러(220)가 논리 블록의 크기를 어레이 컨트롤러(11)에 전송하기만 하면, 논리 블록의 크기가 어레이 컨트롤러(11)에 전송되는 기간 또는 단계는 한정되지 않는다. 또한, 정보는 개별적으로 전송될 수 있거나, 다른 정보, 예를들어, 논리 블록의 식별자와 함께 전송될 수 있다.
단계 S303: 어레이 컨트롤러(11)가 SSD 컨트롤러(220)에 복수의 타깃 데이터를 전송하며, 복수의 타깃 데이터의 길이의 합은 논리 블록의 크기와 동일하다.
구체적으로, 어레이 컨트롤러(11)의 프로세서(118)는 복수의 데이터 기록 요청에 복수의 타깃 데이터를 부가하여, 그 복수의 데이터 기록 요청을 SSD 컨트롤러(220)에 전송한다.
지시 정보가 논리 블록의 식별자인 경우, 각각의 데이터 기록 요청은 추가로 논리 블록의 식별자를 싣고 있어야 한다. 지시 정보가 논리 블록의 논리 주소 범위인 경우, 각각의 데이터 기록 요청은 추가로 논리 주소 범위의 하위범위를 싣고 있어야 한다. 이 두 경우는 도 9 및 도 10에 도시된 구현 방식에서 상세하게 기재되어 있다.
단계 S304: SSD 컨트롤러(220)가 논리 블록에 복수의 타깃 데이터를 기록한다.
구체적으로, SSD 컨트롤러(220)는, 단계 S303에서 복수의 데이터 기록 요청을 수신한 후, 각각의 데이터 기록 요청 내의 지시 정보에 따라, 지시 정보에 의해 지시된 논리 블록을 결정한 다음, 그 논리 블록에 각각의 데이터 기록 요청 내의 타깃 데이터를 기록할 수 있다.
종래기술에서는, 어레이 컨트롤러(11)에 의해 솔리드 스테이트 디스크(22)에 전송된 데이터 기록 요청은 논리 블록의 지시 정보를 포함하지 않는다. 따라서, 종래기술에서 SSD 컨트롤러(220)는, 데이터 기록 요청을 수신한 후, 일반적으로 복수의 블록을 선택하고 그 복수의 블록에 데이터를 동시에 기록하는데, 이것은 데이터가 분산 방식으로 여러 블록에 저장되게 한다. 그러나, 본 실시예에서는, 솔리드 스테이트 디스크(22)에 데이터 기록 요청 내의 모든 타깃 데이터를 지시 정보에 의해 지시되는 논리 블록에 기록하도록 명령하기 위해, 프로세서(118)가 족수의 데이터 기록 요청에 논리 블록의 식별자를 부가하고, 그 복수의 데이터 기록 요청을 솔리드 스테이트 디스크(22)에 전송한다. 유의해야 할 것은, 논리 블록은 하나 이상의 블록을 포함하기 때문에, 논리 블록에 타깃 데이터를 기록하는 것은, 실제로는 논리 블록에 포함되어 있는 하나 이상의 블록에 타깃 데이터를 기록하는 것이라는 것이다.
따라서, 단계 S304에서, SSD 컨트롤러(220)는, 복수의 데이터 기록 요청을 수신한 후, 각각의 데이터 기록 요청에 실려 있는 타깃 데이터를 지시 정보에 의해 지시되는 논리 블록에 기록할 수 있다. 또한, 타깃 데이터의 길이의 합이 논리 블록의 크기와 동일하기 때문에, SSD 컨트롤러(220)가 논리 블록에 데이터 기록 요청 내의 타깃 데이터를 기록한 후에 논리 블록은 그냥 채워진다(도 8에 도시된 바와 같음).
도 7에 도시된 구현 방식에 따르면, 복수의 타깃 데이터가 하나의 논리 블록, 즉, 하나 이상의 블록에 저장되어 있다. 이들 타깃 데이터가 모두 하나 이상의 블록에 기록되고, 그 하나 이상의 블록은 다른 데이터를 포함하지 않기 때문에, 이들 타깃 데이터가 나중에 어레이 컨트롤러에 의해 모두 해제되면, 즉, 무효 데이터로 표시되면, 유효 데이터의 이동 없이 그 블록에 대해 소거 작업을 바로 수행할 수 있으므로, 가비지 컬렉션 동안의 기록 증폭의 문제를 감소시킨다.
구체적으로, 어레이 컨트롤러(11)가 솔리드 스테이트 디스크에 대해 가비지 컬렉션 작업을 수행해야 하는 경우, 어레이 컨트롤러(11)는 일반적으로 솔리드 스테이트 디스크(22)에 판독 커맨드를 전송하여, 솔리드 스테이트 디스크(22)의 논리 블록 내의 유효 데이터를 판독할 것을 요청할 수 있다. 솔리드 스테이트 디스크(22)가 유효 데이터를 어레이 컨트롤러(11)에 전송한 후, 어레이 컨트롤러(11)가 솔리드 스테이트 디스크에 기록 커맨드를 전송하여, 그 유효 데이터를 새로운 논리 블록에 기록할 것을 요청한다. 그 후, 어레이 컨트롤러(11)는 솔리드 스테이트 디스크(22)에 트림 커맨드(trim command)를 전송하여, 원래의 논리 블록이 무효화된다는 것을 지시한다. 솔리드 스테이트 디스크 내에서 가비지 컬렉션을 수행하는 경우, 솔리드 스테이트 디스크는 논리 블록이 무효인 것을 발견하고 그 논리 블록에 저장된 모든 데이터가 무효 데이터인 것으로 간주할 수 있으므로, 유효 데이터를 획득하거나 유효 데이터를 다시 이동시지 않고 논리 블록에 포함되어 있는 블록들로부터 데이터의 소거를 바로 수행한다. 이렇게 하여, 솔리드 스테이트 디스크가 가비지 컬렉션을 수행하는 경우의 기록 증폭의 문제를 감소시킨다.
이하에, 본 발명의 실시예에 따른 솔리드 스테이트 디스크에 데이터를 기록하는 방법의 프로세스를 설명한다. 본 발명의 본 실시예에서의 플래시 메모리 장치에 데이터를 기록하는 방법은 도 1에 도시된 스토리지 시스템 및 도 6에 도시된 어레이 컨트롤러(11)에 적용될 수 있다. 도 9에 도시된 바와 같이, 상기 방법은 다음 단계를 포함한다.
단계 S101: SSD 컨트롤러(220)가 SSD에 포함된 복수의 논리 블록으로부터 기록될 상태에 있는 논리 블록을 결정한다.
전술한 바와 같이, 논리 블록은 일반적으로 네 가지를 상태가 있다: 빈 상태, 기록될 상태, 가득찬 상태, 및 불량 상태. 본 발명의 실시예에서, 기록될 상태에 있는 논리 블록은 이들 논리 블록에서 선택되고, 논리 블록 큐에 놓인다. 데이터가 기록되어야 하는 경우, 임의의 논리 블록이 데이터 기록을 위해 논리 블록 큐로부터 바로 획득될 수 있다. 논리 블록 큐는 기록될 상태에 있는 논리 블록을 관리하기 위한 데이터 구조체(data structure)이다. 본 실시예에서, 큐에 더하여, 다른 데이터 구조체, 예를 들어, 링크드 리스트(linked list)가 논리 블록을 관리하는 데 사용될 수도 있다는 것을 이해할 수 있을 것이다. 논리 블록 큐는 SSD 컨트롤러(220)의 캐시 또는 플래시 메모리 칩에 저장될 수 있다.
기록될 상태에 있는 논리 블록으로 결정된 것이 하나 이상 있을 수 있다.
단계 S102: SSD 컨트롤러(220)는 기록될 상태에 있는 논리 블록에 식별자를 할당한다.
식별자는 숫자, 예를 들어, 0, 1, 2, ...일 수 있거나, 기록될 상태에 있는 논리 블록을 고유하게 식별할 수 있게 하는 다른 심볼일 수 있거나, 또는 숫자, 문자, 또는 다른 심볼의 임의의 조합일 수 있다.
단계 S103: SSD 컨트롤러(220)가 어레이 컨트롤러(11)에 논리 블록에 할당된 식별자를 전송한다.
본 실시예에서, SSD 컨트롤러(220)는 어레이 컨트롤러(11)에 SCSI WRITE 커맨드를 사용하여 식별자를 전송할 수 있으며, SCSI WRITE 커맨드는 GROUP NUMBER 필드와, 식별자를 싣는 데 사용될 수 있는 필드를 포함한다.
단계 S104: SSD 컨트롤러(220)가 어레이 컨트롤러(11)에 논리 블록의 크기를 전송한다.
이 단계는 도 7에서의 단계 S302와 유사하며, 여기서 자세한 것은 다시 설명하지 않는다.
단계 S105: 어레이 컨트롤러(11)가 호스트 논리 주소 범위에 의해 전송되는 복수의 데이터를 수신한다.
복수의 데이터가 호스트(33)에 의해 어레이 컨트롤러(11)에 복수의 기록 커맨드를 사용하여 전송될 수 있다. 구체적으로, 어레이 컨트롤러(11)의 프로세서(118)는 호스트(33)에 의해 전송된 복수의 데이터를 수신하며, 각각의 기록 커맨드는 하나 이상의 데이터 및 그 데이터의 호스트 논리 주소 범위를 싣고 있다. 호스트 논리 주소는 어레이 컨트롤러(11)에 의해 호스트(33)에 지시되는 저장 공간의 주소를 가리킨다. 데이터의 호스트 논리 주소 범위는 연속적이지 않을 수 있다. 예를 들어, 어느 데이터의 호스트 논리 주소 범위는 0x40000∼0x40020이고, 다른 데이터의 호스트 논리 주소 범위는 0x10010∼0x10020이고, 이 두 데이터의 호스트 논리 주소 범위는 연속적이지 않을 수 있다. 유의해야 할 것은, 실제 애플리케이션에서, 기록 커맨드는 시작 호스트 논리 주소 및 길이를 실을 수 있고 호스트 논리 주소 범위는 시작 호스트 논리 주소 및 길이에 따라 취득된다.
S106: 어레이 컨트롤러(11)가 수신된 복수의 데이터를 캐시(120)에 기록한다.
구체적으로, 어레이 컨트롤러(11)의 프로세서(118)가 수신된 복수의 데이터를 캐시(120)에 기록한다.
일반적으로, 어레이 컨트롤러(11)는, 호스트(33)에 의해 전송되는 데이터를 수신한 후, 그 데이터를 솔리드 스테이트 디스크(22)에 바로 기록하는 대신에 캐시(120)에 그 데이터를 일시적으로 기록한다. 캐시(120)의 저장 공간이 특정한 워터 마크에 도달한 경우, 프로세서(118)는 캐시(120)로부터 데이터의 일부 또는 전부를 판독하여, 영구 저장을 위해 SSD(22)에 전송한다.
유의해야 할 것은, 단계 S105와 S106과 단계 S101∼S104는 반드시 특정한 순서로 수행되어야 하는 것은 아니라는 것이다. 즉, 호스트(33)에 의해 전송되는 타깃 데이터를, 어레이 컨트롤러(11)에 의해 수신 및 일시 저장하는 프로세스와, SSD(22)에 의해 전송되는 논리 블록에 관한 정보를 수신하는 프로세스는 충돌하지 않으며, 반드시 특정한 순서로 실행될 필요가 없고, 동시에 실행될 수도 있다.
단계 S107: 어레이 컨트롤러(11)가 캐시(120)로부터 복수의 타깃 데이터를 판독한다.
구체적으로, 어레이 컨트롤러(11)의 프로세서(118)가 캐시(120)로부터 복수의 타깃 데이터를 판독한다.
복수의 타깃 데이터의 길이의 합은 논리 블록의 크기와 동일하다. 본 실시에에서는, 호스트(33)로부터 어레이 컨트롤러(11)에 의해 수신되는 데이터를 구분하기 위해, 캐시(120)로부터 판독되는 데이터는 타깃 데이터라고 한다. 이들 타깃 데이터의 길이는 논리 블록의 크기와 동일하다. 프로세서(118)가 복수의 데이터 기록 요청을 생성하고 그 복수의 데이터 기록 요청을 솔리드 스테이트 디스크(22)에 전송하는 경우, 각각의 데이터 기록 요청이 하나의 타깃 데이터를 싣고 있다고 생각할 수 있다. 어레이 컨트롤러(11)에 의해 호스트(33)로부터 수신되어, 캐시(120)에 저장된 데이터의 크기가 논리 블록의 크기를 초과하는 경우, 프로세서(118)는 크기가 논리 블록의 크기와 동일한 복수의 타깃 데이터만을 캐시(120)로부터 판독하여야 한다. 또한, 어레이 컨트롤러(11)에 의해 호스트(33)로부터 수신되어, 캐시(120)에 저장된 데이터의 크기가 논리 블록의 크기에 도달하지 않은 경우, 프로세서(118)는 캐시(120)로부터 데이터를 판독하지 않고, 캐시(120) 내의 데이터가 논리 블록의 크기에 도달할 때까지 처리를 수행할 수 잇다.
단계 S108: 어레이 컨트롤러(11)가 솔리드 스테이트 디스크(22)에 복수의 데이터 기록 요청을 전송하며, 각각의 데이터 기록 요청은 타깃 데이터를 싣고 있고, 복수의 데이터 기록 요청에 실려 있는 타깃 데이터의 길이의 합은 논리 블록의 크기와 동일해야 하고, 각각의 데이터 기록 요청은 논리 블록의 식별자를 싣고 있다.
구체적으로, 어레이 컨트롤러(11)의 프로세서(118)는 솔리드 스테이트 디스크(22)에 복수의 데이터 기록 요청을 전송한다. 이해할 수 있는 것은, 솔리드 스테이트 디스크(22)가 어레이 컨트롤러(11)에, 복수의 논리 블록의 식별자를 전송하면, 어레이 컨트롤러(11)는 식별자 중에서 임의의 식별자를 선택하고, 그 식별자를 복수의 데이터 기록 요청에 부가할 수 있다.
또, 본 실시예에서, 어레이 컨트롤러(11)에서 솔리드 스테이트 디스크(22)에 전송되는 데이터 기록 요청은 각각의 타깃 데이터의 시작 논리 주소와 길이(또는 논리 주소 범위)를 포함할 수 있다. 여기서의 논리 주소는 단계 S105에서의 호스트 논리 주소와 다르다. 여기서의 논리 주소는 솔리드 스테이트 디스크(22)에 의해 어레이 컨트롤러(11)에 제공되는 저장 공간의 주소인 반면, 단계 S105에서의 호스트 논리 주소는 어레이 컨트롤러(11)에 의해 호스트(33)에 제공되는 논리주소이다. 또 유의해야 할 것은, 어레이 컨트롤러(11)가 논리 주소 범위를 지정하는 경우, 모든 타깃 데이터의 논리 주소 범위는 연속적이다. 어레이 컨트롤러(11)는 각각의 타깃 데이터의 시작 논리 주소와 길이를 솔리드 스테이트 디스크(22)에 전송한다. SSD 컨트롤러(220)는, 타깃 데이터를 논리 블록에 포함되어 있는 블록에 기록한 후, FTL에, 시작 논리 주소와 타깃 데이터가 실제로 기록되는 물리 주소 사이의 대응관계를 저장한다. 어레이 컨트롤러(11)가 나중에 타깃 데이터를 판독해야 하면, 어레이 컨트롤러(11)는 타깃 데이터의 시작 논리 주소와 길이를 데이터 판독 요청에 부가하고, 그 데이터 판독 요청을 솔리드 스테이트 디스크(22)에 전송할 수 있다. SSD 컨트롤러(220)는 타깃 데이터를 판독하고 그 타깃 데이터를 어레이 컨트롤러(11)에 전송하기 위해, 논리 주소, 길이, 및 FTL에 저장된 대응관계에 따라 타깃 데이터의 물리 주소를 획득할 수 있다.
단계 S110: SSD 컨트롤러(220)가 논리 블록의 식별자를 재이용한다.
논리 블록이 데이터로 채워져 있고, 찬(full) 상태이기 때문에, SSD 컨트롤러(220)는 식별자를 재이용하고, 논리 블록 큐에서 논리 블록을 삭제하고, 기록될 상태에 있는 다른 논리 블록에 그 식별자를 할당할 수 있다.
이하에, 본 발명의 실시예에 따른 솔리드 스테이트 디스크에 데이터를 기록하는 다른 방법의 프로세스를 설명한다. 본 발명의 본 실시예에서의 플래시 메모리 장치에 데이터를 기록하는 방법은 도 1에 도시된 스토리지 시스템 및 도 6에 도시된 어레이 컨트롤러(11)에 적용될 수 있다. 도 10에 도시된 바와 같이, 상기 방법은 다음 단계를 포함한다.
단계 S201: 어레이 컨트롤러(11)가 호스트(33)에 의해 전송되는 복수의 데이터를 수신한다. 이 단계는 도 9에 도시된 단계 S105과 유사하고, 단계 S105의 설명을 참조할 수 있으므로, 자세한 것은 여기서 다시 설명하지 않는다.
단계 S202: 어레이 컨트롤러(11)가 수신된 복수의 데이터를 캐시(120)에 기록한다. 이 단계는 도 9에 도시된 단계 S106과 유사하고, 단계 S106의 설명을 참조할 수 있으므로, 자세한 것은 여기서 다시 설명하지 않는다.
단계 S203: 어레이 컨트롤러(11)가 SSD 컨트롤러(220)에 의해 전송되는 논리 블록의 논리 주소 범위를 수신한다.
구체적으로, 어레이 컨트롤러(11)의 프로세서(118)가 논리 블록의 논리 주소 범위를 수신한다. 본 실시예에서, 각각의 논리 블록은 하나의 논리 주소 범위에 대응한다. 예를 들어, 어느 논리 블록에 대응하는 논리 주소 범위는 0 MB∼1023 MB이고, 다른 논리 블록에 대응하는 논리 주소 범위는 1024 MB∼2047 MB이고, 또 다른 논리 블록에 대응하는 논리 주소 범위는 2048 MB∼3071 MB이다.
이들 논리 블록은 모두 기록될 상태에 있는 논리 블록이고, SSD 컨트롤러(220)는 이들 논리 블록의 논리 주소 범위를 어레이 컨트롤러(11)에 보고해야 한다.
단계 S204: 어레이 컨트롤러(11)가 SSD 컨트롤러(220)에 의해 전송되는 논리 블록의 크기를 수신한다. 이 단계는 도 9에 도시된 단계 S104와 유사하여, 단계 S104의 설명을 참조할 수 있으므로, 자세한 것은 여기서 다시 설명하지 않는다.
마찬가지로, 단계 S201∼S203 및 S204는 반드시 특정한 순서로 수행될 필요는 없다.
단계 S205: 어레이 컨트롤러(11)가 캐시(120)로 타깃 데이터를 판독한다. 이 단계는 도 9에 도시된 단계 S107와 유사하여, 단계 S107의 설명을 참조할 수 있으므로, 자세한 것은 여기서 다시 설명하지 않는다.
단계 S206: 어레이 컨트롤러(11)가 솔리드 스테이트 디스크(22)에 복수의 데이터 기록 요청을 전송한다.
구체적으로, 어레이 컨트롤러(11)의 프로세서(118)가 복수의 데이터 기록 요청을 솔리드 스테이트 디스크(22)에 전송하며, 각각의 데이터 기록 요청은 타깃 데이터를 실을 수 있고, 복수의 데이터 기록 요청에 실려 있는 타깃 데이터의 길이의 합은 논리 블록의 크기와 동일해야 하고, 각각의 데이터 기록 요청은 타깃 데이터의 시작 논리 주소와 길이를 싣고 있다. 타깃 데이터의 시작 논리 주소 및 타깃 데이터의 끝 논리 주소는 모두 동일한 논리 블록의 논리 주소 범위에 속하고, 끝 논리 주소는 시작 논리 주소와 길이에 따라 취득된다. 각각의 데이터 기록 요청에 실려 있는 타깃 데이터의 논리 주소 범위는 논리 블록의 논리 주소 범위의 하위범위인 것으로 간주될 수 있다. 어레이 컨트롤러(11)는, 복수의 논리 블록의 논리 주소 범위를 수신한 경우, 타깃 데이터의 시작 논리 주소와 길이를 결정하기 위해, 그 논리 주소 범위에서 어느 하나를 선택할 수 있다.
단계 S207: SSD 컨트롤러(220)는, 복수의 데이터 기록 요청를 수신한 경우, 각각의 데이터 기록 요청에 실려 있는 타깃 데이터에 대응하는 논리 블록을 결정한다.
본 실시예에서, 각각의 논리 블록은 하나의 논리 주소 범위에 대응하기 때눈에, SSD 컨트롤러(220)는, 각각의 데이터 기록 요청에 실려 있는 시작 논리 주소와 길이, 및 각각의 논리 블록에 대응하는 논리 주소 범위에 따라, 각각의 타깃 데이터에 대응하는 논리 블록을 결정할 수 있다. 예를 들어, 하나의 데이터 기록 요청에 실려 있는 타깃 데이터에 대해, 시작 논리 주소가 1010 MB이고 길이가 10 KB이면, 타깃 데이터에 대응하는 논리 블록은 논리 주소 범위가 0 MB∼1023 MB인 논리 블록이다.
단계 S208: SSD 컨트롤러(220)가 대응하는 논리 블록에, 각각의 데이터 기록 요청에 실려 있는 타깃 데이터를 기록한다.
도 10에 도시된 구현 방식에 따르면, 어레이 컨트롤러(11)는 eh한 연속적인 논리 주소를 갖는 데이터의 세그먼트를 하나 이상의 블록에 기록할 수 있다.
도 9 및 도 10에 도시된 구현 방식을 참조하여, 본 발명의 다른 구현 방식에서, 솔리드 스테이트 디스크(22)는 플래시 메모리 칩(222)의 저장 공간을 둘 이상의 부분으로 분할 수 있으며, 각각의 부분은 몇몇 논리 블록을 포함한다. 이 부분 중 하나에 대해, 솔리드 스테이트 디스크(22)는 그 부분에 포함된 각각의 논리 블록에 식별자를 할당하고, 다른 부분에 대해, 솔리드 스테이트 디스크(22)는 그 부분에 포함된 각각의 논리 블록에 논리 주소 범위를 할당한다. 제1 부분 내의 각각의 논리 블록의 식별자 및 제2 부분 내의 각각의 논리 블록의 논리 주소 범위는 어레이 컨트롤러(11)에 보고된다. 어레이 컨트롤러(11)는, 캐시(120)로부터, 크기가 논리 블록의 크기와 동일한 복수의 타깃 데이터를 판독한 후, 그 복수DMK 타깃 데이터를 복수의 데이터 기록 요청에 부가하고, 그 복수의 데이터 기록 요청을 솔리드 스테이트 디스크(22)에 전송하며, 복수으ㅏ 데이터 기록 요청의 각각의 데이터 기록 요청은 논리 블록의 식별자를 포함할 수 있거나, 시작 논리 주소와 길이(논리 주소 범위의 하위범위로 간주될 수 있음)를 포함할 수 있다. 즉, 본 구현 방식에서, 어레이 컨트롤러(11)는 복수의 데이터 기록 요청을 솔리드 스테이트 디스크(22)에 도 9에 도시된 구현 방식으로 전송할 수 있거나, 또는 복수의 데이터 기록 요청을 솔리드 스테이트 디스크(22)에 도 10에 도시된 구현 방식으로 전송할 수 있다. 솔리드 스테이트 디스크(22)에 대해, 솔리드 스테이트 디스크(22)에 의해 수신되는 데이터 기록 요청이 논리 블록의 식별자를 싣고 있는 경우, 솔리드 스테이트 디스크(22)는 그 식별자에 따라 논리 블록을 결정하고 그 논리 블록에 데이터를 기록하며; 솔리드 스테이트 디스크(22)에 의해 수신되는 데이터 기록 요청이 논리 주소 범위의 하위 범위를 싣고 있는 경우, 솔리드 스테이트 디스크(22)는 각각의 논리 블록에 대응하는 논리 주소 범위 및 하위 범위에 따라 논리 블록을 결정하고 그 논리 블록에 데이터를 기록한다.
선택적으로, 전술한 구현 방식에, 플래시 메모리 칩(222)의 저장 공간은 다른 부분을 더 포함할 수 있다. 그 부분에, 솔리드 스테이트 디스크(22)는 어레이 컨트롤러(11)에 의해 전송된 데이터가 기록되는 블록을 결정할 수 있다. 즉, 어레이 컨트롤러(11)에 의해 솔리드 스테이트 디스크(22)에 전송된 데이터 기록 요청은 논리 블록의 식별자 또는 논리 블록의 논리 주소 범위를 싣고 있지 않을 수 도 있다. 이 경우에, 솔리드 스테이트 디스크(22)는 어레이 컨트롤러(11)에 의해 지정되는 논리 블록에 데이터를 기록하는 대신에, 데이터 기록을 위해 하나 이사이의 블록을 선택할 수 있다.
전술한 세 가지 유형의 저장 공간 분할과 구현 방식들 중 어느 두 개가 결합될 수 있으며, 이는 도 9 또는 도 10에 도시된 구현 방식만의 실행에 비해 더 유연하고, 다수의 요건을 충족시킬 수 있음을 이해할 수 있을 것이다.
도 11에 도시된 바와 같이, 본 발명의 실시예는 데이터를 기록하기 위해 솔리드 스테이트 디스크를 제어하는 장치(700)를 더 제공하며, 솔리드 스테이트 디스크는 스토리지 시스템 내에 위치하고, 스토리지 시스템은 어레이 컨트롤러를 더 포함하고, 상기 장치는 어레이 컨트롤러를 내에 위치한다. 구체적으로, 상기 장치는 수신 모듈(701) 및 처리 모듈(702)을 포함하고,
수신 모듈(701)은 솔리드 스테이트 디스크에 의해 전송되는 논리 블록에 관한 정보를 수신하도록 구성되고, 논리 블록에 관한 정보는 논리 블록의 크기 및 논리 블록의 지시 정보를 포함하고;
처리 모듈(702)은, 솔리드 스테이트 디스크에 복수의 데이터 기록 요청을 전송하도록 구성되고, 각각의 데이터 기록 요청은 타깃 데이터를 싣고 있고, 각각의 데이터 기록 요청은 솔리드 스테이트 디스크에, 논리 블록의 지시 정보에 의해 지시되는 논리 블록에 타깃 데이터를 기록하도록 명령하는 데 사용되며, 복수의 데이터 기록 요청에 실려 있는 타깃 데이터의 길의 합은 논리 블록의 크기와 동일하다.
선택적으로, 솔리드 스테이트 디스크는 플래시 메모리 칩을 포함하며, 플래시 메모리 칩은 복수의 채널을 포함하고, 각각의 채널은 복수의 블록을 포함하며, 논리 블록은 하나 이상의 블록을 포함하고, 논리 블록에 포함된 블록은 상이한 채널에 위치한다.
선택적으로, 논리 블록은 기록될 상태에 있는 논리 블록이고, 기록될 상태에 있는 논리 블록은, 데이터를 저장하기 위해 솔리드 스테이트 디스크에 의해 할당된 논리 블록을 가리킨다.
선택적으로, 논리 블록의 지시 정보는 솔리드 스테이트 디스크에 의해 논리 블록에 할당되는 식별자를 포함하고, 각각의 데이터 기록 요청은 논리 블록의 식별자를 포함한다.
선택적으로, 논리 블록의 지시 정보는 솔리드 스테이트 디스크에 의해 논리 블록에 할당되는 논리 주소 범위를 포함하고, 각각의 데이터 기록 요청은 논리 주소 범위의 하위범위를 포함한다.
도 12에 도시된 바와 같이, 본 발명의 실시예는 데이터를 기록하기 위해 솔리드 스테이트 디스크를 제어하는 장치(800)를 더 제공하며, 솔리드 스테이트 디스크는 플래시 메모리 칩 및 솔리드 스테이트 디스크 컨트롤러를 포함하고, 플래시 메모리 칩은 복수의 채널을 포함하고, 각각의 채널은 복수의 블록을 포함하며, 상기 장치는, 솔리드 스테이트 디스크 컨트롤러 내에 위치한다. 상기 장치는 구체적으로 송수신기 모듈(801) 및 기록 모듈(802)를 포함하며,
송수신기 모듈(801)은, 어레이 컨트롤러에 논리 블록에 관한 정보를 전송하고 -, 논리 블록에 관한 정보는 논리 블록의 크기 및 논리 블록의 지시 정보를 포함함 -; 어레이 컨트롤러에 의해 전송되는 복수의 데이터 기록 요청을 수신하도록 구성되고 - 각각의 데이터 기록 요청은 타깃 데이터를 싣고 있고, 각각의 데이터 기록 요청은 솔리드 스테이트 디스크에, 논리 블록의 지시 정보에 의해 지시되는 논리 블록에 타깃 데이터를 기록하도록 명령하는 데 사용되고, 복수의 데이터 기록 요청에 실려 있는 타깃 데이터의 길이의 합은 논리 블록의 크기와 동일함 -;
기록 모듈(802)은 지시 정보에 의해 지시되는 논리 블록에 각각의 데이터 기록 요청에 실려 있는 타깃 데이터를 기록하도록 구성된다.
선택적으로, 논리 블록은 하나 이상의 블록을 포함하고, 논리 블록에 포함된 블록들은 상이한 채널에 위치한다.
선택적으로, 장치(800)는, 논리 블록이 기록될 상태에 있는 논리 블록인 것으로 결정하고 - 기록될 상태에 있는 논리 블록은 데이터를 저장하기 위해 할당된 논리 블록을 가리킴 -; 기록될 상태에 있는 논리 블록에 지시 정보를 할당하도록 구성된 할당 모듈(803)을 더 포함한다.
선택적으로, 논리 블록의 지시 정보는 논리 블록의 식별자를 포함하고, 각각의 데이터 기록 요청은 논리 블록의 식별자를 포함하며; 기록 모듈(802)은 구체적으로, 논리 블록의 식별자에 따라, 식별자에 대응하는 논리 블록에 각각의 데이터 기록 요청 내의 타깃 데이터를 기록하도록 구성된다.
선택적으로, 논리 블록의 지시 정보는 논리 블록의 논리 주소 범위를 포함하고, 각각의 데이터 기록 요청은 논리 주소 범위의 하위범위를 포함하며; 기록 모듈(802)은 구체적으로, 각각의 데이터 기록 요청 내의 논리 주소 범위의 하위범위 및 논리 블록의 논리 주소 범위에 따라, 각각의 데이터 기록 요청 내의 타깃 데이터에 대응하는 논리 블록을 결정하고, 대응하는 논리 블록에 각각의 데이터 기록 요청 내의 타깃 데이터를 기록하도록 구성된다.
선택적으로, 할당 모듈(803)은 추가로, 논리 블록에 할당된 지시 정보를 재이용하도록 구성된다.

Claims (33)

  1. 어레이 컨트롤러로서,
    상기 어레이 컨트롤러는 스토리지 시스템 내에 위치하고, 상기 스토리지 시스템은 상기 어레이 컨트롤러 및 솔리드 스테이트 디스크를 포함하고, 상기 솔리드 스테이트 디스크는 플래시 메모리 칩을 포함하고, 상기 플래시 메모리 칩은 복수의 블록을 포함하며,
    상기 어레이 컨트롤러는 통신 인터페이스 및 프로세서를 포함하고;
    상기 통신 인터페이스는 상기 솔리드 스테이트 디스크와 통신하도록 구성되고;
    상기 프로세서는,
    상기 솔리드 스테이트 디스크에 의해 전송되는 논리 블록에 관한 정보를 수신하고 - 상기 논리 블록에 관한 정보는 상기 논리 블록의 크기 및 상기 논리 블록의 지시 정보를 포함하고, 상기 논리 블록은 하나 이상의 블록을 포함하며, 상기 논리 블록에 포함된 블록들은 상이한 채널에 위치함 -;
    상기 솔리드 스테이트 디스크에 복수의 데이터 기록 요청(write data request)을 전송하도록 구성되는 - 각각의 데이터 기록 요청은 타깃 데이터를 포함하고, 타깃 데이터는 상기 어레이 컨트롤러의 캐시로부터 판독되며, 각각의 데이터 기록 요청은 상기 솔리드 스테이트 디스크에, 상기 논리 블록의 지시 정보에 의해 지시되는 논리 블록에 타깃 데이터를 기록하도록 명령하는 데 사용되고, 상기 복수의 데이터 기록 요청에 포함된 상기 타깃 데이터의 길이의 합은 상기 논리 블록의 크기와 동일하며, 상기 논리 블록의 지시 정보는 상기 솔리드 스테이트 디스크에 의해 상기 논리 블록에 할당되는 식별자를 포함하고, 각각의 데이터 기록 요청은 상기 논리 블록의 식별자를 포함함 -,
    어레이 컨트롤러.
  2. 제1항에 있어서,
    상기 논리 블록은 기록될 상태(to-be-written state)에 있고, 상기 기록될 상태에 있는 논리 블록은, 데이터를 저장하기 위해 상기 논리 블록이 상기 솔리드 스테이트 디스크에 의해 할당되었다는 것을 지시하는, 어레이 컨트롤러.
  3. 데이터를 기록하기 위해 솔리드 스테이트 디스크를 제어하는 방법으로서,
    상기 방법은 스토리지 시스템에 적용되고, 상기 스토리지 시스템은 어레이 컨트롤러 및 솔리드 스테이트 디스크를 포함하고, 상기 솔리드 스테이트 디스크는 플래시 메모리 칩 및 솔리드 스테이트 디스크 컨트롤러를 포함하고, 상기 플래시 메모리 칩은 복수의 블록을 포함하고;
    상기 방법은, 상기 솔리드 스테이트 디스크 컨트롤러에 의해 수행되고,
    어레이 컨트롤러에 논리 블록에 관한 정보를 전송하는 단계 - 상기 논리 블록에 관한 정보는 상기 논리 블록의 크기 및 상기 논리 블록의 지시 정보를 포함하고, 상기 논리 블록은 하나 이상의 블록을 포함하며, 상기 논리 블록에 포함된 블록들은 상이한 채널에 위치함 -;
    상기 어레이 컨트롤러에 의해 전송되는 복수의 데이터 기록 요청을 수신하는 단계 - 각각의 데이터 기록 요청은 타깃 데이터를 포함하고, 타깃 데이터는 상기 어레이 컨트롤러의 캐시로부터 판독되며, 각각의 데이터 기록 요청은 상기 솔리드 스테이트 디스크에, 상기 논리 블록의 지시 정보에 의해 지시되는 논리 블록에 상기 타깃 데이터를 기록하도록 명령하는 데 사용되고, 상기 복수의 데이터 기록 요청에 포함된 상기 타깃 데이터의 길이의 합은 상기 논리 블록의 크기와 동일하며, 상기 논리 블록의 지시 정보는 상기 논리 블록의 식별자를 포함하고, 각각의 데이터 기록 요청은 상기 논리 블록의 식별자를 포함함 -; 및
    상기 지시 정보에 의해 지시되는 상기 논리 블록에 각각의 데이터 기록 요청에 포함된 타깃 데이터를 기록하는 단계 - 이 단계는 상기 논리 블록의 식별자에 따라, 각각의 데이터 기록 요청 내의 타깃 데이터를 상기 식별자에 대응하는 논리 블록에 기록하는 단계를 포함함 -
    를 포함하는 방법.
  4. 제3항에 있어서,
    상기 어레이 컨트롤러에 논리 블록에 관한 정보를 전송하는 단계 이전에,
    상기 논리 블록이 기록될 상태에 있는 것으로 결정하는 단계 - 상기 기록될 상태에 있는 논리 블록은, 데이터를 저장하기 위해 상기 논리 블록이 할당되었다는 것을 지시함 -; 및
    상기 기록될 상태에 있는 논리 블록에 상기 지시 정보를 할당하는 단계를 더 포함하는 방법.
  5. 제3항에 있어서,
    상기 지시 정보에 의해 지시되는 논리 블록에 상기 타깃 데이터를 기록하는 단계 후에, 상기 논리 블록에 할당된 지시 정보를 재이용하는 단계를 더 포함하는 방법.
  6. 데이터를 기록하기 위해 솔리드 스테이트 디스크를 제어하는 장치로서,
    상기 솔리드 스테이트 디스크는 스토리지 시스템 내에 위치하고, 상기 솔리드 스테이트 디스크는 플래시 메모리 칩을 포함하고, 상기 플래시 메모리 칩은 복수의 블록을 포함하고, 상기 스토리지 시스템은 어레이 컨트롤러를 더 포함하고;
    상기 장치는, 상기 어레이 컨트롤러를 내에 위치하고,
    상기 솔리드 스테이트 디스크에 의해 전송되는 논리 블록에 관한 정보를 수신하도록 구성된 수신 모듈 - 상기 논리 블록에 관한 정보는 상기 논리 블록의 크기 및 상기 논리 블록의 지시 정보를 포함하고, 상기 논리 블록은 하나 이상의 블록을 포함하며, 상기 논리 블록에 포함된 블록들은 상이한 채널에 위치함 -; 및
    상기 솔리드 스테이트 디스크에 복수의 데이터 기록 요청을 전송하도록 구성된 처리 모듈 - 각각의 데이터 기록 요청은 타깃 데이터를 포함하고, 타깃 데이터는 상기 어레이 컨트롤러의 캐시로부터 판독되며, 각각의 데이터 기록 요청은 상기 솔리드 스테이트 디스크에, 상기 논리 블록의 지시 정보에 의해 지시되는 논리 블록에 상기 타깃 데이터를 기록하도록 명령하는 데 사용되고, 상기 복수의 데이터 기록 요청에 포함된 타깃 데이터의 길의 합은 상기 논리 블록의 크기와 동일하며, 상기 논리 블록의 지시 정보는 상기 솔리드 스테이트 디스크에 의해 상기 논리 블록에 할당되는 식별자를 포함하고, 각각의 데이터 기록 요청은 상기 논리 블록의 식별자를 포함함 -
    을 포함하는 장치.
  7. 제6항에 있어서,
    상기 논리 블록은 기록될 상태에 있고, 상기 기록될 상태에 있는 논리 블록은, 데이터를 저장하기 위해 상기 논리 블록이 상기 솔리드 스테이트 디스크에 의해 할당되었다는 것을 지시하는, 장치.
  8. 데이터를 기록하기 위해 솔리드 스테이트 디스크를 제어하는 장치로서,
    상기 솔리드 스테이트 디스크는 플래시 메모리 칩 및 솔리드 스테이트 디스크 컨트롤러를 포함하고, 상기 플래시 메모리 칩은 복수의 블록을 포함하며;
    상기 장치는, 상기 솔리드 스테이트 디스크 컨트롤러 내에 위치하고,
    어레이 컨트롤러에 논리 블록에 관한 정보를 전송하고 - 상기 논리 블록에 관한 정보는 상기 논리 블록의 크기 및 상기 논리 블록의 지시 정보를 포함하고, 상기 논리 블록은 하나 이상의 블록을 포함하며, 상기 논리 블록에 포함된 블록들은 상이한 채널에 위치함 -; 상기 어레이 컨트롤러에 의해 전송되는 복수의 데이터 기록 요청을 수신하도록 구성된 송수신기 모듈 - 각각의 데이터 기록 요청은 타깃 데이터를 포함하고, 타깃 데이터는 상기 어레이 컨트롤러의 캐시로부터 판독되며, 각각의 데이터 기록 요청은 상기 솔리드 스테이트 디스크에, 상기 논리 블록의 지시 정보에 의해 지시되는 논리 블록에 상기 타깃 데이터를 기록하도록 명령하는 데 사용되고, 상기 복수의 데이터 기록 요청에 포함된 상기 타깃 데이터의 길이의 합은 상기 논리 블록의 크기와 동일하며, 상기 논리 블록의 지시 정보는 상기 솔리드 스테이트 디스크에 의해 상기 논리 블록에 할당되는 식별자를 포함하고, 각각의 데이터 기록 요청은 상기 논리 블록의 식별자를 포함함 -; 및
    상기 지시 정보에 의해 지시되는 상기 논리 블록에 각각의 데이터 기록 요청에 포함된 타깃 데이터를 기록하도록 구성된 기록 모듈
    을 포함하는 장치.
  9. 제8항에 있어서,
    상기 논리 블록이 기록될 상태에 있는 것으로 결정하고 - 상기 기록될 상태에 있는 논리 블록은, 데이터를 저장하기 위해 상기 논리 블록이 할당되었다는 것을 지시함 -; 상기 기록될 상태에 있는 논리 블록에 상기 지시 정보를 할당하도록 구성된 할당 모듈을 더 포함하는 장치.
  10. 제9항에 있어서,
    상기 할당 모듈은 추가로, 상기 지시 정보에 의해 지시되는 논리 블록에 상기 타깃 데이터를 기록한 후에, 상기 논리 블록에 할당된 지시 정보를 재이용하도록 구성되는, 장치.
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
KR1020167023669A 2015-12-03 2015-12-03 어레이 컨트롤러, 솔리드 스테이트 디스크, 및 데이터를 기록하기 위해 솔리드 스테이트 디스크를 제어하는 방법 KR102013430B1 (ko)

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
KR20170083963A KR20170083963A (ko) 2017-07-19
KR102013430B1 true KR102013430B1 (ko) 2019-08-22

Family

ID=58794303

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167023669A KR102013430B1 (ko) 2015-12-03 2015-12-03 어레이 컨트롤러, 솔리드 스테이트 디스크, 및 데이터를 기록하기 위해 솔리드 스테이트 디스크를 제어하는 방법

Country Status (13)

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

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SG11201707296QA (en) 2016-11-11 2018-06-28 Huawei Tech 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 武汉深之度科技有限公司 一种硬盘数据清理方法、装置及计算设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080250195A1 (en) 2000-01-06 2008-10-09 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
WO2011073902A1 (en) * 2009-12-15 2011-06-23 International Business Machines Corporation Reducing access contention in flash-based memory systems
US20120072680A1 (en) * 2010-09-22 2012-03-22 Kabushiki Kaisha Toshiba Semiconductor memory controlling device
US20150212752A1 (en) * 2013-04-08 2015-07-30 Avalanche Technology, Inc. Storage system redundant array of solid state disk array

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2280273C2 (ru) * 2003-07-16 2006-07-20 Открытое акционерное общество "Научно-производственное объединение "Прибор" Способ структурирования и записи цифровой информации и устройство для его осуществления
WO2005050453A1 (ja) * 2003-11-18 2005-06-02 Matsushita Electric Industrial Co., Ltd. ファイル記録装置
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 株式会社東芝 メモリシステム
WO2010146767A1 (ja) * 2009-06-18 2010-12-23 パナソニック株式会社 不揮発性記憶装置、アクセス装置、不揮発性記憶システム及びメモリコントローラ
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 快閃記憶裝置、資料儲存系統、以及資料儲存系統之運作方法
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
US20150121003A1 (en) * 2010-09-07 2015-04-30 Daniel L. Rosenband Storage controllers
US8850114B2 (en) * 2010-09-07 2014-09-30 Daniel L Rosenband Storage array controller for flash-based storage devices
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
WO2012137242A1 (en) * 2011-04-04 2012-10-11 Hitachi, Ltd. Storage system 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 삼성전자주식회사 로그기반 데이터 저장 시스템의 관리방법
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 国际商业机器公司 进行存储控制的方法和设备
CN105830166B (zh) 2014-06-27 2018-02-23 华为技术有限公司 一种控制器、闪存装置和将数据写入闪存装置的方法
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080250195A1 (en) 2000-01-06 2008-10-09 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
WO2011073902A1 (en) * 2009-12-15 2011-06-23 International Business Machines Corporation Reducing access contention in flash-based memory systems
US20120072680A1 (en) * 2010-09-22 2012-03-22 Kabushiki Kaisha Toshiba Semiconductor memory controlling device
US20150212752A1 (en) * 2013-04-08 2015-07-30 Avalanche Technology, Inc. Storage system redundant array of solid state disk array

Also Published As

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

Similar Documents

Publication Publication Date Title
KR102013430B1 (ko) 어레이 컨트롤러, 솔리드 스테이트 디스크, 및 데이터를 기록하기 위해 솔리드 스테이트 디스크를 제어하는 방법
CN109542333B (zh) 存储器系统及控制非易失性存储器的控制方法
US10198215B2 (en) System and method for multi-stream data write
TWI674502B (zh) 記憶體系統及控制方法
US10871920B2 (en) Storage device and computer system
KR101465789B1 (ko) 페이지 복사 횟수를 줄일 수 있는 메모리 카드 시스템의쓰기 및 병합 방법
CN108475230B (zh) 一种存储系统和系统垃圾回收方法
US20080120456A1 (en) Method for flash memory data management
JP6130971B2 (ja) データをフラッシュメモリ装置に書き込む方法、フラッシュメモリ装置及び記憶システム
CN105917303B (zh) 一种控制器、识别数据块稳定性的方法和存储系统
CN112394874A (zh) 一种键值kv的存储方法、装置及存储设备
CN106326132B (zh) 存储系统、存储管理装置、存储器、混合存储装置及存储管理方法
KR101376268B1 (ko) 단말기의 메모리 할당 장치 및 방법
TW201624491A (zh) 資訊處理裝置及非暫態電腦可讀取記錄媒體
TW201624288A (zh) 快取記憶體裝置及非暫態電腦可讀取記錄媒體
CN110580228A (zh) 去分配命令处理方法及其存储设备
US20210191851A1 (en) System and method for facilitating reduction of latency and mitigation of write amplification in a multi-tenancy storage drive
CN117762322A (zh) 一种数据存储方法、存储装置及设备

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right