KR20220052423A - 스토리지 장치, 스토리지 장치의 동작 방법, 및 스토리지 장치를 포함하는 스토리지 시스템 - Google Patents

스토리지 장치, 스토리지 장치의 동작 방법, 및 스토리지 장치를 포함하는 스토리지 시스템 Download PDF

Info

Publication number
KR20220052423A
KR20220052423A KR1020200136170A KR20200136170A KR20220052423A KR 20220052423 A KR20220052423 A KR 20220052423A KR 1020200136170 A KR1020200136170 A KR 1020200136170A KR 20200136170 A KR20200136170 A KR 20200136170A KR 20220052423 A KR20220052423 A KR 20220052423A
Authority
KR
South Korea
Prior art keywords
logical
address information
storage device
logical address
host
Prior art date
Application number
KR1020200136170A
Other languages
English (en)
Other versions
KR102546740B1 (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 성균관대학교산학협력단
Priority to KR1020200136170A priority Critical patent/KR102546740B1/ko
Priority to US17/154,319 priority patent/US11507318B2/en
Publication of KR20220052423A publication Critical patent/KR20220052423A/ko
Application granted granted Critical
Publication of KR102546740B1 publication Critical patent/KR102546740B1/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/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/061Improving I/O performance
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • 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/7202Allocation control and policies
    • 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

Abstract

스토리지 장치가 개시된다. 스토리지 장치는 복수의 메모리 블록들울 포함하는 불휘발성 메모리 장치, 버퍼 메모리, 및 스토리지 컨트롤러를 포함할 수 있다. 스토리지 컨트롤러는 호스트로부터 제 1 할당 요청 및 제 1 논리 어드레스 정보를 수신하고, 상기 제 1 논리 어드레스 정보의 논리 어드레스들을 상기 제 1 할당 요청에 응답하여 상기 복수의 메모리 블록들의 제 1 물리 그룹으로 할당하고, 상기 제 1 논리 어드레스 정보와 연관된 제 1 쓰기 요청 및 제 1 쓰기 데이터를 수신하고, 상기 제 1 쓰기 데이터를 상기 버퍼 메모리에 저장하고, 그리고 상기 버퍼 메모리에 저장된 상기 제 1 쓰기 데이터를 상기 제 1 쓰기 요청에 응답하여 상기 제 1 물리 그룹의 메모리 블록들로 기입할 수 있다. 상기 제 1 할당 요청은 상기 제 1 쓰기 요청에 선행할 수 있다.

Description

스토리지 장치, 스토리지 장치의 동작 방법, 및 스토리지 장치를 포함하는 스토리지 시스템{STORAGE DEVICE, OPERATING METHOD THEREOF, AND STORAGE SYSTEM COMPRISING THEREOF}
본 발명은 스토리지 장치, 그의 동작 방법, 및 그를 포함하는 스토리지 시스템에 관한 것으로, 좀 더 구체적으로는 불휘발성 메모리 장치를 포함하는 스토리지 장치, 그의 동작 방법 및 그를 포함하는 스토리지 시스템에 관한 것이다.
불휘발성 메모리 장치를 포함하는 스토리지 장치는 호스트로부터 쓰기 요청이 수신된 이후에, 쓰기 요청에 대응하는 논리 어드레스로 물리 어드레스를 할당한다. 예를 들어, 호스트 상에서 실행되는 응용 프로그램으로부터 데이터에 대한 쓰기가 요청되면, 호스트는 스토리지 장치로 데이터, 데이터에 대응하는 논리 어드레스, 및 쓰기 요청을 전송한다. 스토리지 장치는 호스트로부터 수신된 논리 어드레스로 물리 어드레스를 할당하고, 그리고 불휘발성 메모리 장치의 할당된 물리 어드레스에 대응하는 저장 공간에 수신된 데이터를 기입한다.
불휘발성 메모리 장치는 페이지 단위로 쓰기 및 읽기 동작을 수행하지만, 블록 단위로 소거 동작을 수행할 수 있다. 불휘발성 메모리 장치는 한 번 저장된 데이터를 덮어쓰기 할 수 없고, 대신에 데이터가 저장된 블록을 소거한 후 새로운 데이터를 소거된 자유 블록에 기입할 수 있다. 이에 따라, 동일한 생명 주기를 갖는 데이터가 복수의 메모리 블록들로 산재되어 저장되는 경우, 스토리지 장치의 쓰기 증폭 특성이 악화될 수 있다.
본 발명의 목적은 호스트로부터 쓰기 요청이 수신되는 것보다 선행하여 물리 공간을 논리 공간으로 할당하는 스토리지 장치, 스토리지 장치의 동작 방법, 및 스토리지 장치를 포함하는 스토리지 시스템을 제공하는 데 있다.
본 발명의 일 실시 예에 따른 스토리지 장치는: 복수의 메모리 블록들을 포함하는 불휘발성 메모리 장치, 버퍼 메모리; 및 호스트로부터 제 1 할당 요청 및 제 1 논리 어드레스 정보를 수신하고, 상기 제 1 논리 어드레스 정보의 논리 어드레스들을 상기 제 1 할당 요청에 응답하여 상기 복수의 메모리 블록들의 제 1 물리 그룹으로 할당하고, 상기 제 1 논리 어드레스 정보와 연관된 제 1 쓰기 요청 및 제 1 쓰기 데이터를 수신하고, 상기 제 1 쓰기 데이터를 상기 버퍼 메모리에 저장하고, 그리고 상기 버퍼 메모리에 저장된 상기 제 1 쓰기 데이터를 상기 제 1 쓰기 요청에 응답하여 상기 제 1 물리 그룹의 메모리 블록들로 기입하는 스토리지 컨트롤러를 포함할 수 있다. 상기 제 1 할당 요청은 상기 제 1 쓰기 요청에 선행할 수 있다.
본 발명의 일 실시 예에 따른 복수의 메모리 블록들을 포함하는 불휘발성 메모리 장치 및 스토리지 컨트롤러를 포함하는 스토리지 장치의 동작 방법은: 제 1 할당 요청 및 제 1 논리 공간과 연관된 제 1 논리 어드레스 정보를 호스트로부터 수신하는 단계; 제 1 물리 그룹 ID를 상기 제 1 논리 어드레스 정보의 논리 어드레스들로 할당하는 단계; 제 1 쓰기 데이터의 상기 제 1 논리 어드레스 정보와 연관된 제 1 쓰기 요청을 상기 호스트로부터 수신하는 단계; 상기 스토리지 장치의 버퍼 메모리로 저장하는 단계; 및 상기 제 1 쓰기 요청에 응답하여, 상기 버퍼 메모리에 저장된 상기 제 1 쓰기 데이터를 상기 복수의 메모리 블록들 중 상기 제 1 물리 그룹 ID 연관된 제 1 메모리 블록으로 기입하는 단계를 포함할 수 있다. 상기 제 1 할당 요청은 상기 제 1 쓰기 요청에 선행할 수 있다.
본 발명의 일 실시 예에 따른 호스트 및 스토리지 장치를 포함하는 스토리지 시스템의 동작 방법은: 상기 호스트에 의해, 제 1 논리 공간을 제 1 데이터에 할당하기 위한 제 1 명령을 호출하는 단계; 상기 호스트에 의해, 물리 공간을 상기 제 1 논리 공간으로 할당하기 위한 제 2 명령을 상기 제 1 명령에 응답하여 상기 스토리지 장치로 호출하는 단계; 상기 스토리지 장치에 의해, 상기 제 2 명령에 응답하여 제 1 물리 그룹 ID를 상기 제 1 논리 공간과 연관된 제 1 논리 어드레스 정보의 논리 어드레스들로 할당하는 단계; 상기 호스트에 의해, 상기 제 1 논리 어드레스 정보와 연관된 제 1 쓰기 데이터를 저장할 것을 상기 스토리지 장치로 요청하는 단계; 및 상기 스토리지 장치에 의해, 상기 제 1 쓰기 데이터를 상기 스토리지 장치의 버퍼 메모리로 저장하고, 그리고 상기 버퍼 메모리에 저장된 상기 제 1 쓰기 데이터를 상기 스토리지 장치의 불휘발성 메모리 장치의 복수의 메모리 블록들 중 제 1 메모리 블록으로 기입하는 단계를 포함할 수 있다.
본 발명의 일 실시 예에 따르면, 스토리지 장치는 호스트로부터 쓰기 요청이 수신되기 이전에, 논리 공간의 어드레스 범위 및 그에 대한 물리 공간 할당 요청을 수신할 수 있다. 물리 공간 할당 요청에 응답하여, 스토리지 장치는 수신된 논리 공간의 어드레스 범위에 대해 물리 공간 그룹 ID를 할당할 수 있다. 이에 따라, 쓰기 성능이 개선된 스토리지 장치가 제공될 수 있다.
도 1은 본 발명의 일 실시 예에 따른 시스템의 예시적인 블록도이다.
도 2는 도 1의 스토리지 컨트롤러의 예시적인 블록도이다.
도 3a는 본 발명의 일 실시 예에 따른 도 1의 시스템의 소프트웨어 계층의 예시적인 블록도이다.
도 3b는 본 발명의 다른 실시 예에 따른 도 1의 시스템의 소프트웨어 계층의 예시적인 블록도이다.
도 4는 도 1의 스토리지 장치의 예시적인 블록도이다.
도 5는 도 1의 스토리지 시스템의 동작들의 예시적인 순서도이다.
도 6은 본 발명의 일 실시 예에 따라 스토리지 장치에 의해 수행되는 물리 공간 할당 동작 및 쓰기 동작의 절차를 예시적으로 도시한다.
도 7은 본 발명의 다른 실시 예에 따라 스토리지 장치에 의해 수행되는 쓰기 동작의 절차를 예시적으로 도시한다.
도 8은 본 발명의 일 실시 예에 따라 스토리지 장치에 의해 수행되는 읽기 동작의 절차를 예시적으로 도시한다.
도 9는 본 발명의 다른 실시 예에 따른 도 1의 스토리지 장치의 예시적인 블록도이다.
도 10은 본 발명의 일 실시 예에 따라 물리 공간을 주어진 논리 공간에 대해 할당하기 위한 예시적인 순서도이다.
도 11은 본 발명의 일 실시 예에 따라 쓰기 동작을 수행하기 위한 예시적인 순서도이다.
도 12는 본 발명의 일 실시 예에 따라 가비지 컬렉션을 수행하기 위한 예시적인 순서도이다.
도 13은 본 발명의 일 실시 예에 따라 도 1의 불휘발성 메모리 장치에 저장된 데이터의 예시적인 블록도이다.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
이하에서, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시 예를 보다 상세하게 설명하고자 한다. 본 발명을 설명함에 있어 전체적인 이해를 용이하게 하기 위하여 도면상의 유사한 구성요소에 대해서는 유사한 참조부호가 사용되고, 그리고 유사한 구성요소에 대해서 중복된 설명은 생략된다.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
이하에서, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시 예를 보다 상세하게 설명하고자 한다. 본 발명을 설명함에 있어 전체적인 이해를 용이하게 하기 위하여 도면상의 유사한 구성요소에 대해서는 유사한 참조부호가 사용되고, 그리고 유사한 구성요소에 대해서 중복된 설명은 생략된다.
도 1은 본 발명의 일 실시 예에 따른 스토리지 시스템의 예시적인 블록도이다. 도 1을 참조하면, 스토리지 시스템(10)은 스토리지 장치(100) 및 호스트(200)를 포함할 수 있다. 스토리지 장치(100)는 호스트(200)에 의해 제어될 수 있다.
호스트(200)는 스토리지 장치(100)의 동작을 제어할 수 있다. 일 실시 예에 있어서, 스토리지 장치(100)는 하나 이상의 솔리드 스테이트 드라이브(Solid State Drive; SSD)를 포함할 수 있다. 이 경우, 스토리지 장치(100)는 복수의 플래시 메모리 칩들을 포함할 수 있다. 예를 들어, 스토리지 장치(100)는 NAND 플래시 메모리 칩들, 또는 NOR 플래시 메모리 칩들을 포함할 수 있다.
스토리지 장치(100)는 스토리지 컨트롤러(110), 불휘발성 메모리 장치(120), 및 버퍼 메모리(130)를 포함할 수 있다. 스토리지 컨트롤러(110)는 호스트(200)와 통신할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 호스트(200)로부터 동작들을 수행하기 위한 커맨드, 어드레스, 및 데이터를 수신할 수 있다. 호스트로부터 수신된 어드레스는 논리 어드레스(logical address)일 수 있다. 스토리지 컨트롤러(110)는 물리 공간을 수신된 논리 어드레스로 할당할 수 있다.
일 실시 예에 있어서, 스토리지 컨트롤러(110)는 호스트(200)로부터 데이터에 대한 쓰기 요청을 수신하기 전에, 수신된 논리 어드레스로 물리 공간을 미리 할당할 수 있다. 스토리지 컨트롤러(110)는 물리 공간을 미리 할당함으로써 인스턴스들(예를 들어, 도 4의 인스턴스들(FAI1~FAIm, NFAI))을 생성하고, 그리고 각각의 인스턴스들의 인덱스를 호스트(200)로 반환할 수 있다. 스토리지 컨트롤러(110)의 물리 공간을 미리 할당하는 동작은 구체적으로 후술된다.
스토리지 컨트롤러(110)는 수신된 데이터를 수신된 커맨드 및 어드레스에 기초하여 불휘발성 메모리 장치(120)로 저장할 수 있다. 스토리지 컨트롤러(110)는 불휘발성 메모리 장치(120)에 저장된 데이터를 수신된 커맨드 및 어드레스에 기초하여 읽고, 그리고 버퍼 메모리(130)에 저장할 수 있다. 스토리지 컨트롤러(110)는 버퍼 메모리(130)에 저장된 데이터를 호스트(200)로 전송할 수 있다. 스토리지 컨트롤러(110)에 의해 제어되는 스토리지 장치(100)의 구체적인 동작들은 후술된다.
불휘발성 메모리 장치(120)는 스토리지 컨트롤러(110)의 제어 하에 읽기 동작 또는 쓰기 동작 등과 같은 동작들을 수행할 수 있다. 불휘발성 메모리 장치(120)는 복수의 메모리 블록들(BLK1~BLKn; n은 양의 정수)을 포함할 수 있다. 각각의 메모리 블록들은 복수의 페이지들로 구성될 수 있다. 각각의 페이지들은 복수의 메모리 셀들로 구성될 수 있다. 불휘발성 메모리 장치(120)는 페이지 단위로 읽기 동작 및 쓰기 동작을 수행할 수 있다. 불휘발성 메모리 장치(120)는 메모리 블록 단위로 소거(Erase) 동작을 수행할 수 있다.
버퍼 메모리(130)는 호스트로부터 수신된, 불휘발성 메모리 장치(120)로 저장될 쓰기 데이터 또는 불휘발성 메모리 장치(120)로부터 읽힌 읽기 데이터를 일시적으로 저장할 수 있다. 버퍼 메모리(130)에 일시적으로 저장된 쓰기 데이터는 불휘발성 메모리 장치(120)에 기입될 수 있다. 버퍼 메모리(130)에 일시적으로 저장된 읽기 데이터는 스토리지 컨트롤러(110)를 통해 호스트(200)로 전송될 수 있다.
호스트(200)는 호스트 프로세서(210), 호스트 메모리(220), 인터페이스 회로(230), 및 버스(240)를 포함할 수 있다. 호스트 프로세서(210)는 호스트 메모리(220)로 로드된 다양한 소프트웨어를 실행하기 위한 연산을 수행할 수 있다. 예를 들어, 호스트 프로세서(210)는 운영 체제(Operating System; OS) 및 응용 프로그램들(Application Program)을 구동할 수 있다. 호스트 프로세서(210)는 호스트(200)의 중앙 처리 장치(Central Processing Unit; CPU)로서의 기능을 수행할 수 있다.
호스트 메모리(220)는 호스트 프로세서(210)에 의해 처리되거나 처리될 데이터 및 프로그램 코드들을 저장할 수 있다. 호스트 메모리(220)는 호스트 프로세서(210)의 주 기억 장치로서의 기능을 수행할 수 있다. 다른 예를 들어, 스토리지 장치(100)에 저장된 사용자 데이터 및 파일 시스템 등과 같은 메타 데이터가 호스트 메모리(220)로 로드될 수 있다. 일 실시 예에 있어서, 호스트 메모리(220)는 DRAM(Dynamic Random Access Memory) 또는 SRAM(Static Random Access Memory)을 포함할 수 있다. 호스트 메모리(220)는 버퍼 메모리 또는 캐시 메모리로서 지칭될 수도 있다. 도시된 바와 달리, 호스트 메모리(220)의 개수는 하나 이상일 수 있다.
인터페이스 회로(230)는 스토리지 장치(100)의 스토리지 컨트롤러(110)와 통신할 수 있다. 예를 들어, 인터페이스 회로(230)는 호스트 프로세서(210)에 의해 발행되는 요청들에 대응하는 다양한 커맨드, 어드레스, 및 데이터 등의 포맷을 변환하고, 그리고 변환된 커맨드, 어드레스, 및 데이터를 스토리지 컨트롤러(110)로 전송할 수 있다. 인터페이스 회로(230)는 스토리지 컨트롤러(110)로부터 수신되는 데이터의 포맷을 변환하고, 그리고 버스(240)를 통해 호스트 프로세서(210)로 변환된 데이터를 전송할 수 있다. 일 실시 예에 있어서, 인터페이스 회로(230)는 PCIe(Peripheral Component Interconnect express), NVMe(Non-Volatile Memory express), SATA(Serial Advanced Technology Attachment), SCSI(Small Computer System Interface), SAS(Serial Attached SCSI), USB(Universal Serial Bus) 등과 같은 다양한 프로토콜들 중 어느 하나를 사용할 수 있다.
버스(240)는 호스트(200)의 구성 요소들 사이에 통신 경로를 제공할 수 있다. 호스트 프로세서(210), 호스트 메모리(220), 및 인터페이스 회로(230)는 버스(240)를 통해 서로 데이터를 교환할 수 있다. 버스(240)는 호스트(200)에서 사용되는 다양한 유형의 통신 포맷을 지원하도록 구성될 수 있다.
도 2는 도 1의 스토리지 컨트롤러의 예시적인 블록도이다. 도 1 및 도 2를 참조하면, 스토리지 컨트롤러(110)는 프로세서(111), RAM(112), 호스트 인터페이스 회로(113), 불휘발성 메모리 장치 관리기(114), 및 버퍼 관리기(115)를 포함할 수 있다.
프로세서(111)는 스토리지 컨트롤러(110)의 중앙 처리 장치로서의 역할을 수행할 수 있다. 프로세서(111)는 스토리지 컨트롤러(110)를 구동하기 위한 펌웨어 또는 소프트웨어를 실행할 수 있다. 예를 들어, 프로세서(111)는 RAM(112)에 로드된 펌웨어를 실행할 수 있다. 프로세서(111)는 불휘발성 메모리 장치(120)를 관리하기 위한 플래시 변환 계층(Flash Translation Layer; FTL)을 RAM(112)을 이용하여 실행할 수 있다.
RAM(112)은 프로세서(111)의 제어 하에 동작할 수 있다. 프로세서(111)에 의해 실행되는, 스토리지 컨트롤러(110)를 제어하기 위한 소프트웨어 또는 펌웨어가 RAM(112)으로 로드될 수 있다. RAM(112)은 DRAM 또는 SRAM을 포함할 수 있다. 예를 들어, 플래시 변환 계층(FTL)이 RAM(112)으로 로드될 수 있다. 도시된 바와 달리, RAM(112)의 개수는 하나 이상일 수 있다.
플래시 변환 계층(FTL)은 다양한 기능들의 수행을 위한 모듈들을 포함할 수 있다. 예를 들어, 플래시 변환 계층(FTL)은 호스트(200)로부터 수신된 논리 어드레스를 불휘발성 메모리 장치(120)의 저장 위치를 나타내는 물리 어드레스로 변환하는 어드레스 변환 모듈 및 인스턴스 생성 모듈을 포함할 수 있다. 플래시 변환 계층(FTL)은 불휘발성 메모리 장치(120)에 대한 다양한 백그라운드 기능을 수행하기 위한 모듈들을 포함할 수 있다. 예를 들어, 플래시 변환 계층(FTL)은 가비지 컬렉션(Garbage Collection), 또는 TRIM을 수행하기 위한 모듈들을 더 포함할 수 있다. 플래시 변환 계층(FTL)에 의해 수행되는 동작들은 구체적으로 후술된다.
호스트 인터페이스 회로(113)는 호스트(200)와의 통신을 수행할 수 있다. 예를 들어, 호스트 인터페이스 회로(113)는 스토리지 컨트롤러(110) 및 호스트(200)의 인터페이스 회로(230) 사이의 물리적 연결을 제공할 수 있다. 호스트 인터페이스 회로(113)는 인터페이스 회로(230)의 프로토콜(또는 호스트(200)의 버스 포맷)에 대응하여, 스토리지 장치(100) 및 호스트(200) 사이에서 교환되는 데이터 또는 커맨드의 포맷을 변환할 수 있다.
불휘발성 메모리 장치 관리기(114)는 프로세서(111)의 제어 하에 불휘발성 메모리 장치(120)와 데이터를 교환할 수 있다. 예를 들어, 불휘발성 메모리 장치 관리기(114)는 버퍼 메모리(130)로부터 전송되는 데이터를 대응하는 메모리 채널(예를 들어, 도 9의 채널들(CH1~CHz) 중 대응하는 채널)을 거쳐 불휘발성 메모리 장치(120)로 기입할 수 있다.
버퍼 관리기(115)는 프로세서(111)의 제어 하에 버퍼 메모리(130)의 메모리 영역을 관리할 수 있다. 예를 들어, 버퍼 관리기(115)는 호스트(200)로부터 수신된 쓰기 데이터를 버퍼 메모리(130)에 일시적으로 저장할 수 있다. 버퍼 관리기(115)는 불휘발성 메모리 장치(120)로부터 읽힌 읽기 데이터를 버퍼 메모리(130)에 일시적으로 저장할 수 있다. 버퍼 관리기(115)는 플래시 변환 계층(FTL)에 의해 생성된 어드레스 맵핑 테이블들을 버퍼 메모리(130)로 로드할 수 있다. 버퍼 관리기(115)는 버퍼 메모리(130)에 일시적으로 저장된 쓰기 데이터 또는 읽기 데이터를 버퍼 메모리(130)로부터 읽을 수 있다.
도 3a는 본 발명의 일 실시 예에 따른 도 1의 스토리지 시스템의 소프트웨어 계층의 예시적인 블록도이다. 도 1, 도 2, 및 도 3a를 참조하면, 스토리지 시스템(10)의 호스트(300a)의 소프트웨어 계층은 응용 프로그램들(311a~314a) 및 OS(320a)를 포함할 수 있다. 설명의 편의를 위해, 스토리지 장치(100)의 플래시 변환 계층(FTL) 및 불휘발성 메모리 장치(120)를 제외한 나머지 구성 요소들의 도시는 생략되었다.
응용 프로그램들(311a~314a)은 스토리지 시스템(10) 또는 호스트(300a) 상에서 구동되는 다양한 응용 프로그램들일 수 있다. 호스트(300a) 상에서 구동되는 응용 프로그램들의 개수는 도시된 실시 예에 제한되지 아니한다.
OS(320a)는 각각의 응용 프로그램들(311a~314a)에 의해 사용되는 파일 또는 데이터를 조직화할 수 있다. 예를 들어, OS(320a)는 응용 프로그램311a/312a/313a/314a)의 요청에 응답하여, 파일 시스템(321a)을 구동할 수 있다. OS(320a)는 스토리지 장치(100)에 저장될 데이터 또는 스토리지 장치(100)에 저장된 데이터에 대하여 논리 어드레스를 파일 시스템(321a)에 기초하여 할당할 수 있다. OS(320a)는 할당된 논리 어드레스를 관리할 수 있다. 일 실시 예에 있어서, OS(320a)는 응용 프로그램(311a/312a/313a/314a)이 요청하는 것보다 큰 저장 공간을 요청된 데이터로 할당할 수 있다.
일 실시 예에 있어서, 파일 시스템(321a)의 형식은 스토리지 시스템(10) 또는 호스트(300a)의 운영 체제에 따라 결정될 수 있다. 예를 들어, 파일 시스템(321a)은 FAT(File Allocation Table), FAT32, NTFS(New Technology File System), HFS(Hierarchical Flash Storage), JFFS(Journaling Flash File System), JFFS2, XFS, UFS(Unix File System), APFS(Apple File System), ReFS(Resilient File System), ext2, ext3, ext4, 또는 F2FS(Flash-Friendly File System) 등을 포함할 수 있다.
OS(320a)는 응용 프로그램(311a/312a/313a/314a) 논리 주소 할당을 위한 시스템 콜에 응답하여, 물리 공간을 할당하기 위한 'FlashAlloc' 명령을 스토리지 장치(100)의 플래시 변환 계층(FTL)으로 호출할 수 있다. FlashAlloc 명령에 대응하는 플래시 변환 계층(FTL)의 구체적인 동작은 후술된다.
플래시 변환 계층(FTL)은 호스트(300a) 및 불휘발성 메모리 장치(120) 사이에서 다양한 유지 관리 동작을 수행할 수 있다. 플래시 변환 계층(FTL), 버퍼 메모리(130), 및 불휘발성 메모리 장치(120)의 동작은 도 4를 참조하여 구체적으로 후술된다.
도 3b는 본 발명의 다른 실시 예에 따른 도 1의 스토리지 시스템의 소프트웨어 계층의 예시적인 블록도이다. 도 1, 도 2, 도 3a, 및 도 3b를 참조하여, 도 3a 및 도 3b의 차이점이 설명될 것이다.
도 3b에 도시된 실시 예에서, 응용 프로그램들(311b~314b) 및 데이터베이스 관리 시스템(Database Management System; DBMS; 320b)이 호스트(300b)의 소프트웨어 계층 상에서 구동될 수 있다. 호스트(300b)의 소프트웨어 계층 상에서 구동될 수 있는 응용 프로그램들(311b~314b)의 개수는 도시된 실시 예에 한정되지 아니한다.
데이터베이스 관리 시스템(320b)은 각각의 응용 프로그램들(311b~314b)에 의해 사용되는 데이터를 조직화할 수 있다. 예를 들어, 응용 프로그램311b/312b/313b/314b)의 요청에 응답하여, 데이터베이스 관리 시스템(320b)은 스토리지 장치(100)의 불휘발성 메모리 장치(120) 내에 구축된 데이터베이스에 저장될 데이터 또는 데이터베이스에 저장된 데이터에 대하여 논리 어드레스를 할당할 수 있다. 데이터베이스 관리 시스템(320b)은 할당된 논리 어드레스를 관리할 수 있다.
일 실시 예에 있어서, 데이터베이스 관리 시스템(320b)의 형식은 스토리지 시스템(10) 또는 호스트(300b)의 운영 체제에 따라 결정될 수 있다. 예를 들어, 데이터베이스 관리 시스템(320b)은 ORACLE, MySQL, MSSQL, MariaDB, RocksDB 등을 포함할 수 있다. 데이터베이스 관리 시스템(320b)은 관계형 데이터베이스 관리 시스템(Relational DBMS; RDBMS), NoSQL 데이터베이스 관리 시스템, 인-메모리 데이터베이스 관리 시스템(In-Memory DBMS; IMDBMS), 또는 기둥형 데이터베이스 관리 시스템(Column DBMS; CDBMS) 등으로 구현될 수 있다.
데이터베이스 관리 시스템(320b)은 응용 프로그램(311b/312b/313b/314b)의 논리 주소 할당을 위한 시스템 콜에 응답하여, 'FlashAlloc' 명령을 스토리지 장치(100)의 플래시 변환 계층(FTL)으로 호출할 수 있다.
도 4는 도 1의 스토리지 장치의 예시적인 블록도이다. 도 1, 도 2, 도 3a, 도 3b, 및 도 4를 참조하면, 스토리지 장치(100)의 플래시 변환 계층(FTL)은 인스턴스들(FAI1~FAIm, NFAI; m은 양의 정수)을 생성할 수 있다. 예를 들어, 플래시 변환 계층(FTL)은 OS(320a) 또는 데이터베이스 관리 시스템(320b)의 물리 공간 할당을 위한 요청에 응답하여, 수신된 논리 어드레스를 하나 이상의 물리 공간 그룹들 중 어느 한 그룹으로 할당하기 위한 인스턴스들(FAI1~FAIm, NFAI)을 생성할 수 있다.
각각의 인스턴스들(FAI1~FAIm, NFAI)은 각각이 대응하는 논리 공간의 범위, 대응하는 논리 공간의 범위에 대응하는 물리 어드레스, 및 대응하는 물리 어드레스에 대해 다음 데이터가 기입될 위치를 나타내는 포인터에 대한 메타데이터를 포함할 수 있다. 일 실시 예에 있어서, 각각의 인스턴스들(FAI1~FAIm, NFAI)의 메타데이터에 포함된 물리 어드레스는 불휘발성 메모리 장치(120)의 물리 블록 어드레스(번호) 또는 물리 페이지 어드레스(번호)와 연관될 수 있다.
일 실시 예에 있어서, 물리 공간 그룹 ID를 할당하는 것과 연관된 복수의 인스턴스들(FAI1~FAIm; 즉, 도시된 실시 예에서, 'FlashAlloc Instance'로 표기된 인스턴스들)이 활성화될 수 있다. 예를 들어, 인스턴스(FAI1) 및 인스턴스(FAI2)는 동시에 플래시 변환 계층(FTL)에 메타데이터로서 포함될 수 있다.
각각의 인스턴스들(FAI1~FAIm, NFAI)에 포함된 논리 공간의 범위 및 대응하는 물리 어드레스는 서로 겹치지 않을 수 있다(또는, 각각의 인스턴스들(FAI1~FAIm, NFAI)에 포함된 논리 공간의 범위 및 대응하는 물리 어드레스는 서로 겹치지 않아야 할 필요성이 있을 수 있다). 예를 들어, 인스턴스(FAI1)와 연관된 논리 공간의 범위는 나머지 인스턴스들(FAI2~FAIm, NFAI) 각각이 연관된 논리 공간의 범위와 겹치지 않을 수 있다. 다른 예를 들어, 인스턴스(FAI1)와 연관된 물리 어드레스는 나머지 인스턴스들(FAI2~FAIm, NFAI) 각각이 연관된 물리 어드레스와 상이할 수 있다.
플래시 변환 계층(FTL)은 생성된 인스턴스들(FAI1~FAIm, NFAI)에 기초하여, 호스트(200)로부터 수신된 논리 어드레스 및 할당된 물리 어드레스 사이의 변환 동작을 수행할 수 있다. 플래시 변환 계층(FTL)은 버퍼 메모리(130)로 로드된 어드레스 맵핑 테이블들을 업데이트함으로써, 논리 어드레스 및 물리 어드레스 사이의 변환 동작을 관리할 수 있다. 플래시 변환 계층(FTL)에 의해 관리되는 어드레스 맵핑 테이블들은 L2F(Logical Address to FlashAlloc Group ID) 테이블(410), F2P(FlashAlloc Group ID to Physical Address) 테이블(420), 및 L2P(Logical Address to Physical Address) 테이블(430)을 포함할 수 있다. L2F 테이블(410), F2P 테이블(420), 및 L2P 테이블(430)은 배열, 링크드 리스트, 트리 등 다양한 자료 구조들 중 어느 하나로서 각각 구현될 수 있다.
L2F 테이블(410)은 논리 어드레스 정보의 논리 어드레스들 및 물리 공간 그룹 ID 사이의 맵핑을 나타내기 위한 테이블일 수 있다. 예를 들어, 플래시 변환 계층(FTL)은 물리 공간의 그룹들 중 어느 한 그룹을 호스트(200)로부터 수신된 논리 어드레스 정보의 논리 어드레스들에 대응하여 할당할 수 있다. 각각의 물리 공간의 그룹들은 연속된 복수의 물리 어드레스들에 대응할 수 있다. 플래시 변환 계층(FTL)은 할당된 그룹에 대응하는 그룹 ID(또는 인덱스)를 L2F 테이블(410)에 반영할 수 있다. 일 실시 예에 있어서, L2F 테이블(410)에 기입되는 논리 어드레스는 OS(320a) 또는 데이터베이스 관리 시스템(320b)에 의해 결정될 수 있다. 예를 들어, 논리 어드레스는 논리 페이지 번호(Logical Page Number; LPN; 또는 논리 페이지 어드레스) 또는 논리 블록 번호(Logcal Block Number; 또는 논리 블록 어드레스)로서 L2F 테이블(410)에 기입될 수 있다.
F2P 테이블(420)은 물리 공간 그룹 ID 및 물리 어드레스 사이의 맵핑을 나타내기 위한 테이블일 수 있다. 예를 들어, 플래시 변환 계층(FTL)은 각각의 물리 공간 그룹들에 대해 물리 어드레스를 할당할 수 있다. 플래시 변환 계층(FTL)은 할당된 물리 어드레스를 F2P 테이블(420)에 반영할 수 있다. 일 실시 예에 있어서, F2P 테이블(420)은 물리 공간 그룹 ID를 불휘발성 메모리 장치(120)의 메모리 블록의 물리 페이지 번호(Physical Page Number; PPN; 또는 물리 페이지 어드레스) 또는 메모리 블록의 번호(즉, 물리 블록 번호(Physical Block Number; PBN; 또는 물리 블록 어드레스))로 맵핑하기 위한 테이블일 수 있다.
L2P 테이블(430)은 호스트(200)로부터 수신된 논리 어드레스 및 수신된 논리 어드레스에 대응하는 데이터가 불휘발성 메모리 장치(120)에 저장된 위치를 나타내는 물리 어드레스 사이의 맵핑을 나타내기 위한 테이블일 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 L2F 테이블(610) 및 F2P 테이블(420)에 기초하여, 호스트(200)로부터 수신된 쓰기 데이터를 불휘발성 메모리 장치(120)에 기입할 수 있다. 플래시 변환 계층(FTL)은 쓰기 데이터가 불휘발성 메모리 장치(120)에 저장된 위치에 대응하는 물리 어드레스를 L2P 테이블(430)로 반영할 수 있다. 일 실시 예에 있어서, L2P 테이블(430)은 논리 어드레스를 불휘발성 메모리 장치(120)의 메모리 블록의 물리 페이지 번호 또는 물리 블록 번호로 맵핑하기 위한 테이블일 수 있다.
스토리지 컨트롤러(110)는 호스트(200)로부터 수신되는 쓰기 데이터를 L2F 테이블(410), F2P 테이블(420), 및 L2P 테이블(430)에 기초하여 불휘발성 메모리 장치(120)에 기입할 수 있다. 스토리지 컨트롤러(110)는 읽기 동작을 L2P 테이블(430)에 기초하여 불휘발성 메모리 장치(120)에 저장된 읽기 데이터에 대해 수행할 수 있다. 스토리지 컨트롤러(110)의 구체적인 쓰기 동작 및 읽기 동작은 구체적으로 후술된다.
도 5는 도 1의 스토리지 시스템의 동작들의 예시적인 순서도이다. 도 1, 도 2, 도 3a, 도 3b, 도 4, 및 도 5를 참조하면, 스토리지 시스템(10)의 호스트(200)는 S501, S502, 및 S506 단계를 수행할 수 있다. 스토리지 장치(100)는 S503, S504, S505, 및 S507 단계를 수행할 수 있다.
S501 단계에서, 호스트(200)는 논리 공간을 데이터로 할당할 수 있다. 예를 들어, 호스트(300a/300b) 상에서 구동되는 응용 프로그램(311a/311b)은 응용 프로그램(311a/311b)에 의해 사용되거나 또는 사용될 파일에 대해 저장할 공간을 할당할 것을 호스트(300a) 상에서 구동되는 OS(320a) 또는 데이터베이스 관리 시스템(320b)로 요청할 수 있다. OS(320a) 또는 데이터베이스 관리 시스템(320b)은 파일 시스템(321a) 또는 데이터베이스 관리 시스템(320b)에 의해 지원되는, 논리 어드레스를 할당하기 위한 시스템 콜(예를 들어, fallocate() 등)을 호출할 수 있다. 호출된 시스템 콜에 응답하여, OS(320a) 또는 데이터베이스 관리 시스템(320b)은 데이터로 논리 어드레스를 할당할 수 있다.
S502 단계에서, 호스트(200)는 물리 공간을 논리 공간에 대해 할당할 것을 스토리지 장치(100)로 요청할 수 있다. 예를 들어, 호스트(200)는 스토리지 장치(100)로 할당된 데이터의 논리 공간의 범위 및 물리 공간을 할당할 것을 요청하는 명령어를 포함하는 커맨드를 스토리지 장치(100)로 전송할 수 있다. 일 실시 예에 있어서, 호스트(200)는 할당된 논리 어드레스의 시작 위치를 나타내는 값 및 논리 공간의 길이를 포함하는 논리 어드레스 정보를 스토리지 장치(100)로 제공할 수 있다. 예를 들어, 호스트(300a/300b)는 OS(320a) 또는 데이터베이스 관리 시스템(320b)에 의해 할당되는 논리 어드레스의 단위의 논리 공간의 길이를 스토리지 장치(100)로 제공할 수 있다. 다른 예를 들어, 호스트(200)는 복수의 논리 어드레스의 시작값 및 논리 공간의 길이의 쌍들을 동시에 스토리지 장치(100)로 제공할 수 있다.
S503 단계에서, 호스트(200)로부터의 요청에 응답하여, 스토리지 장치(100)는 물리 공간을 논리 공간으로 할당할 수 있다. 예를 들어, 호스트(200)로부터 전달된 논리 어드레스 정보의 논리 어드레스들에 대해 연속적인 물리 어드레스를 할당하기 위해, 스토리지 장치(100)는 호스트(200)로부터 전달된 논리 어드레스 정보의 논리 어드레스들에 대해 물리 공간 그룹 ID를 할당할 수 있다. 스토리지 장치(100)는 논리 어드레스 정보의 논리 어드레스들에 대해 물리 공간 그룹 ID를 할당한 이후, L2F 테이블(예를 들어, 도 4의 L2F 테이블(410))을 업데이트할 수 있다.
일 실시 예에 있어서, 스토리지 장치(100)는 F2P 테이블(예를 들어, 도 4의 F2P 테이블(420))을 L2F 테이블에 기초하여 업데이트할 수 있다. 예를 들어, 스토리지 장치(100)는 특정한 메모리 블록(또는 물리 블록 번호)을 할당된 물리 공간 그룹 ID로 할당할 수 있다. 스토리지 장치(100)는 F2B 테이블을 할당된 물리 공간 그룹 ID 및 할당된 특정한 메모리 블록에 기초하여 업데이트할 수 있다. 스토리지 장치(100)가 특정한 메모리 블록을 물리 공간 그룹 ID로 할당하는 시점은 도 10을 참조하여 구체적으로 후술된다.
S504 단계에서, 호스트(200)로부터의 요청에 응답하여, 스토리지 장치(100)는 인스턴스를 할당된 물리 공간에 기초하여 생성할 수 있다. 예를 들어, 스토리지 장치(100)의 플래시 변환 계층(FTL)은 도 4의 인스턴스들(FAI1~FAIm, NFAI) 등과 같은 인스턴스를 호스트(200)로부터 제공된 논리 어드레스 정보 및 대응하는 물리 공간에 기초하여 생성할 수 있다. 스토리지 장치(100)의 플래시 변환 계층(FTL)에 의해 생성되는 인스턴스는 도 6, 도 7, 및 도 9를 참조하여 구체적으로 후술된다.
S505 단계에서, 스토리지 장치(100)는 생성된 인스턴스의 인덱스를 호스트(200)로 반환할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 S504 단계에서 생성된 인스턴스의 인덱스를 OS(320a) 또는 데이터베이스 관리 시스템(320b)으로 전송할 수 있다.
S506 단계에서, 호스트(200)는 스토리지 장치(100)로 데이터를 기입할 것을 요청할 수 있다. 예를 들어, 호스트(200)는 쓰기 동작을 지시하는 커맨드, S502 단계에서 스토리지 장치(100)로 전송된 논리 공간과 연관된 논리 어드레스 정보, 및 불휘발성 메모리 장치(120)에 기입되기 위한 쓰기 데이터를 스토리지 장치(100)로 전송할 수 있다. 호스트(200)로부터 수신된 쓰기 데이터는 스토리지 장치(100)의 버퍼 메모리(130)에 일시적으로 저장될 수 있다.
S507 단계에서, 스토리지 장치(100)는 데이터를 인스턴스에 기초하여 불휘발성 메모리 장치(120)에 기입할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 버퍼 메모리(120)에 저장된 쓰기 데이터를 호스트(200)로부터 전송된 논리 어드레스 정보에 대응하는 인스턴스를 검색하고, 검색된 인스턴스에 기초하여, 쓰기 데이터를 S504 단계에서 미리 할당된 불휘발성 메모리 장치(120)의 물리 공간에 기입할 수 있다. 스토리지 장치(100)의 쓰기 동작은 도 6을 참조하여 구체적으로 후술된다.
도 6은 본 발명의 일 실시 예에 따른 물리 공간 할당 동작 및 쓰기 동작의 절차를 예시적으로 도시한다. 도 1, 도 2, 도 3a, 도 3b, 도 4, 도 5, 및 도 6을 참조하여, 물리 어드레스가 논리 어드레스로 호스트(200)에 의해 쓰기 동작과 관련된 커맨드가 발행되는 것에 선행하여 스토리지 장치(100)에 의해 할당되고, 그 이후, 호스트(200)에 의해 쓰기 동작과 관련된 커맨드가 발행되는 것에 응답하여 쓰기 동작이 스토리지 장치(100)에 의해 수행되는 것이 설명될 것이다.
도 6에 도시된 실시 예에서, 논리 공간은 페이지(page) 단위로 할당되었고, 물리 공간 그룹 ID는 블록(block) 단위로 할당되었고, 그리고 물리 공간은 페이지(page) 단위로 할당되었다. 다시 말해서, 논리 어드레스 및 물리 어드레스의 변환은 페이지 단위로 수행되었다. 그러나 이는 예시적인 것으로, 본 발명은 이에 제한되지 아니한다.
도시된 실시 예에서, OS(320a) 또는 데이터베이스 관리 시스템(320b)은 '0'번째 논리 페이지로부터 최대 'K'번째 논리 페이지까지의 논리 페이지들을 사용할 수 있다. 도시된 실시 예에서, OS(320a) 또는 데이터베이스 관리 시스템(320b)은 '0' 번째 논리 객체부터 최대 'P'번째 논리 객체까지의 논리 객체(또는 논리 블록)들을 응용 프로그램들(311a~314a/311b~314b)로 할당할 수 있다. K 및 P는 0 이상의 정수일 수 있다.
S601 단계에서, 호스트(200)의 물리 공간 할당 요청에 응답하여, 물리 공간을 미리 할당하기 위한 명령이 스토리지 장치(100)로 호출될 수 있다. 예를 들어, 호스트(200)로부터 수신된 논리 공간의 범위와 연관된 논리 어드레스 정보에 대하여, 불휘발성 메모리 장치(120)의 물리 공간을 미리 할당하기 위한 'FlashAlloc' 명령이 호출될 수 있다. 그러한 명령의 명칭은 설명의 편의를 위한 것으로, 본 발명의 범위는 'FlashAlloc'이라는 명칭에 한정되지 아니한다.
일 실시 예에 있어서, 'FlashAlloc' 명령은 OS(320a) 또는 데이터베이스 관리 시스템(320b)에 의해 할당된 논리 공간과 연관된 값을 인자로 하여 스토리지 장치(100)로 호출될 수 있다. 예를 들어, 도시된 실시 예에서, 'FlashAlloc' 명령은 정수 '0'의 논리 어드레스 시작 값 및 정수 '256'의 논리 어드레스 길이를 인자로 하여 호출될 수 있다. 다시 말해서, 호스트(200)로부터 스토리지 장치(100)로 전달된 논리 공간의 범위는 '0' 번째 논리 페이지부터, '0' 번째 논리 페이지로부터 '256' 번째 논리 페이지인 '255' 번째 논리 페이지까지일 수 있다. 이에 따라, 스토리지 장치(100)는 '0' 번째 논리 페이지부터 '255' 번째 논리 페이지까지의 논리 페이지들이 동일한 논리 객체에 속함을 인지할 수 있다.
스토리지 장치(100)는 호스트(200)로부터 전송된 'FlashAlloc' 명령에 응답하여, L2F 테이블(610)을 업데이트할 수 있다. 예를 들어, 스토리지 장치(100)는 호스트(200)로부터 전송된 논리 어드레스 정보의 논리 어드레스들로 물리 공간 그룹 ID를 할당하고, 그리고 논리 어드레스들 및 할당된 물리 공간 그룹 ID를 맵핑할 수 있다. 스토리지 장치(100)는 물리 공간 그룹 ID를 다양한 방식으로 할당할 수 있다. 예를 들어, 물리 공간 그룹 ID '1'이 이미 할당되었다면, 스토리지 장치(100)는 호출된 'FiashAlloc' 명령에 연관된 논리 공간에 대해 물리 공간 그룹 ID '2'를 할당할 수 있다. 즉, 스토리지 장치(100)는 물리 공간 그룹 ID를 순차적으로 할당할 수 있다. 다른 예를 들어, 스토리지 장치(100)는 물리 공간 그룹 ID를 무작위로 할당할 수 있다.
도시된 실시 예에서, 'FlashAlloc(0, 256)' 명령에 응답하여, 스토리지 장치(100)는 '0' 번째 논리 페이지부터 '255' 번째 논리 페이지까지의 논리 페이지들에 대해 물리 공간 그룹 ID '2'를 할당할 수 있다. 스토리지 장치(100)는 '0' 번째 논리 페이지부터 '255' 번째 논리 페이지까지의 논리 페이지들에 대해 물리 공간 그룹 ID '2'가 맵핑되도록 L2F 테이블(610)을 업데이트할 수 있다. 이에 따라, 단일한 물리 공간 그룹 ID가 동일한 논리 객체에 속하는 논리 페이지들로 할당될 수 있다.
S602 단계에서, 호스트(200)는 스토리지 장치(100)로 쓰기 동작을 요청하는 커맨드를 발행할 수 있다. 이에 따라, 쓰기 명령(도시된 실시 예에서, 'Write' 명령)이 스토리지 장치(100)로 호출될 수 있다. 일 실시 예에 있어서, 쓰기 명령은 쓰기 데이터의 논리 어드레스의 시작 값, 쓰기 데이터의 길이, 및 쓰기 데이터를 인자로 하여 호출될 수 있다.
도시된 실시 예에서, 쓰기 명령은 정수 '0', 정수 '1', 및 제 1 데이터(DATA1)를 인자로 하여 호출될 수 있다. 이에 따라, 스토리지 장치(100)는, '0'번째 논리 페이지부터, '0'번째 논리 페이지로부터 '1'번째 논리 페이지인 '0'번째 논리 페이지까지 쓰여진 쓰기 데이터인 제 1 데이터(DATA1)를 불휘발성 메모리 장치(120)로 기입할 것이 호스트(200)로부터 요청되었음을 인지할 수 있다.
S603 단계에서, 스토리지 장치(100)는 쓰기 데이터를 기입하기 위한 물리 공간을 S602 단계에서 호스트(200)로부터 수신된 커맨드 및 어드레스에 기초하여 결정할 수 있다. 예를 들어, S602 단계에서 호출된 쓰기 명령에 응답하여, 스토리지 장치(100)는 L2F 테이블(610) 및 F2P 테이블(620)을 참조할 수 있다. 스토리지 장치(100)는 S602 단계에서 호스트(200)로부터 제공된 논리 어드레스 정보의 논리 어드레스들에 대응하는 물리 페이지 블록 번호를 L2F 테이블(610) 및 F2P 테이블(620)에 기초하여 결정할 수 있다.
도시된 실시 예에서, 'Write(0, 1, DATA1)' 명령에 응답하여, 스토리지 장치(100)의 스토리지 컨트롤러(110)는 '0' 번째 논리 페이지의 물리 공간 그룹 ID인 '2'를 L2F 테이블(610)로부터 얻을 수 있다. 스토리지 컨트롤러(110)는 물리 공간 그룹 ID '2'에 대응하는 물리 블록 번호 '3'을 F2P 테이블(620)로부터 얻을 수 있다.
S604 단계에서, 스토리지 장치(100)는 플래시 변환 계층(FTL) 상에 활성화된 인스턴스들(FAI1~FAI, NFAI) 중 S602 단계에서 호스트(200)로부터 제공된 논리 어드레스 정보의 논리 어드레스들에 대응하는 인스턴스를 검색할 수 있다. 예를 들어, 도시된 실시 예에서, 스토리지 장치(100)의 스토리지 컨트롤러(110)는 호스트(200)로부터 제공된 논리 페이지인 '0'번째 논리 페이지에 대응하는 활성화된 인스턴스를 검색할 수 있다. 결과적으로, 스토리지 장치(100)는 '0'번째 논리 페이지를 포함하는 논리 공간 범위에 대한 메타데이터를 포함하는 인스턴스(FAIq)를 찾을 수 있다.
도시된 바와 달리, 인스턴스(FAIq)는 기존에 활성화된 인스턴스가 아닐 수도 있다. 그러한 경우, 스토리지 컨트롤러(110)의 플래시 변환 계층(FTL)은 S602 단계에서 호스트(200)로부터 제공된 논리 어드레스 정보의 논리 어드레스들에 대응하는 인스턴스(FAIq)를 생성할 수 있다.
일 실시 예에 있어서, 스토리지 컨트롤러(110)는 '0'번째 논리 페이지에 대응하는 복수의 활성화된 인스턴스들을 찾을 수도 있다. 그러한 경우, 스토리지 컨트롤러(110)는 에러 메시지를 호스트(200)로 반환할 수 있다.
S605 단계에서, 스토리지 장치(100)는 쓰기 데이터를 S604 단계에서 검색된(또는 생성된) 인스턴스에 기초하여 불휘발성 메모리 장치(120)로 기입할 수 있다. 예를 들어, 스토리지 장치(100)의 스토리지 컨트롤러(110)는 호스트(200)로부터 수신된 제 1 데이터(DATA1)를 인스턴스(FAIq)에 포함된 메타데이터를 참조하여 불휘발성 메모리 장치(120)로 기입할 수 있다.
도시된 실시 예에서, 인스턴스(FAIq)는 '3'번째 메모리 블록에 대하여 다음 쓰기 위치는 '0' 번째 페이지임을 나타내는 'Next_Write_Ptr' 포인터를 포함하는 메타데이터를 포함할 수 있다. 따라서, 스토리지 컨트롤러(110)는 제 1 데이터(DATA1)를 불휘발성 메모리 장치(120)의 '3'번째 메모리 블록인 메모리 블록(BLK3)의 '0'번째 페이지부터 기입할 수 있다.
S606 단계에서, 스토리지 장치(100)는 S604 단계에서 검색된 인스턴스를 업데이트할 수 있다. 예를 들어, 스토리지 장치(100)의 스토리지 컨트롤러(110)는 S604 단계에서 검색된 인스턴스의 메타데이터에 포함된 포인터를 업데이트할 수 있다. 도시된 실시 예에서, 만약 S605 단계에서 스토리지 컨트롤러(110)가 제 1 데이터(DATA1)를 메모리 블록(BLK3)의 '0'번째 페이지에 기입했다면, 스토리지 컨트롤러(110)는 인스턴스(FAIq)의 메타데이터의 'Next_Write_Ptr' 포인터를 '0'에서 '1'로 업데이트할 수 있다.
일 실시 예에 있어서, 스토리지 컨트롤러(110)는 S602 단계에서 수신된 논리 어드레스 정보의 논리 어드레스들에 대응하는 데이터가 올바른 메모리 블록에 저장되어 있는지 판단할 수 있다. 스토리지 컨트롤러(110)는 올바르지 않은 메모리 블록에 저장된 데이터를 무효화(invalidation)할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는, L2F 테이블(610), F2P 테이블(620), 및 L2P 테이블(630)을 참조하여, L2F 테이블(610) 및 F2P 테이블(620)에 일치하지 않는 메모리 블록에 저장된 데이터를 무효화할 수 있다.
예를 들어, S602 단계에서 호스트(200)로부터 수신된 쓰기 명령 'Write(0, 1, DATA1)'에 응답하여, 스토리지 컨트롤러(110)는 '0'번째 논리 페이지에 대응하는 데이터가 메모리 블록(BLK3)이 아닌 다른 메모리 블록에 저장되어 있는지를 L2P 테이블(630)에 기초하여 판단할 수 있다. 만약, '0'번째 논리 페이지에 대응하는 데이터가 '3'번째 메모리 블록(BLK3)이 아닌 '5'번째 메모리 블록(BLK5)에 저장되어 있다면, 스토리지 컨트롤러(110)는 '5'번째 메모리 블록에 저장된 데이터가 올바르지 못한 메모리 블록에 저장되어 있다고 판단할 수 있다. 그러므로, 스토리지 컨트롤러(110)는 '5'번째 메모리 블록(BLK5)의 페이지들 중 '0'번째 논리 페이지에 대응하는 페이지(들)을 무효화할 수 있다.
S607 단계에서, 스토리지 장치(100)는 L2P 테이블(630)을 업데이트할 수 있다. 예를 들어, 스토리지 장치(100)의 스토리지 컨트롤러(110)는 S605 단계의 수행 결과를 L2P 테이블(630)로 반영할 수 있다. 도시된 실시 예에서, 스토리지 컨트롤러(110)는 '0'번째 논리 페이지가 '3'번?? 메모리 블록(BLK3)의 '0'번째 페이지에 대응하는 것을 L2P 테이블(630)로 반영할 수 있다.
도시된 실시 예에서, 하나의 물리 공간 그룹 ID에 대하여 하나의 메모리 블록이 할당되었다. 그러나, 하나의 물리 공간 그룹 ID에 대하여 복수의 메모리 블록들이 할당될 수도 있다. 예를 들어, 하나의 물리 공간 그룹 ID가 대응하는 논리 공간의 크기 및 하나의 메모리 블록의 크기에 기초하여, 스토리지 컨트롤러(110)는 적절한 개수의 메모리 블록들을 물리 공간 그룹 ID로 할당할 수 있다
예를 들어, 각각의 메모리 블록들(BLK1~BLKn)의 크기는 8MB일 수 있다. 만약 임의의 논리 공간에 대응하는 논리 객체가 64MB의 저장 공간을 필요로 한다면, 스토리지 컨트롤러(110)는 8개의 메모리 블록들을 그 논리 공간에 대응하는 물리 공간 그룹 ID로 할당할 수 있다.
일 실시 예에 있어서, 임의의 논리 공간이 메모리 블록의 크기보다 작은 저장 공간을 필요로 하는 경우, 복수의 물리 공간 그룹 ID들은 하나의 메모리 블록으로 동시에 할당될 수 있다. 다시 말해서, 하나의 메모리 블록을 공유하는 복수의 논리 공간들이 존재할 수 있다. 이 경우, 동일한 메모리 블록과 연관된 복수의 인스턴스들이 동시에 활성화될 수 있다.
도 7은 본 발명의 다른 실시 예에 따른 쓰기 동작의 절차를 예시적으로 도시한다. 도 1, 도 2, 도 6, 및 도 7을 참조하여, 도 6에 대조적으로, 호스트(200)에 의해 쓰기 동작과 관련된 커맨드가 발행되는 것에 선행하여 논리 어드레스에 대응하는 물리 어드레스가 스토리지 장치(100)에 의해 할당됨이 없이, 호스트(200)에 의해 쓰기 동작과 관련된 커맨드가 발행되는 것에 응답하여 쓰기 동작이 스토리지 장치(100)에 의해 수행되는 것이 설명될 것이다.
S701 단계에서, 호스트(200)는 물리 공간을 미리 할당하는 명령과 무관한 논리 공간과 연관된 쓰기 동작을 요청하는 커맨드를 발행할 수 있다. 이에 따라, 쓰기 명령이 스토리지 장치(100)로 호출할 수 있다.
도시된 실시 예에서, 쓰기 명령(즉, 'Write')은 정수 256', 정수 '1', 및 제 2 데이터(DATA2)를 인자로 하여 호출될 수 있다. 이에 따라, 스토리지 장치(100)는, '256'번째 논리 페이지로부터 '1'번째 논리 페이지인 '256'번째 논리 페이지에 쓰인 쓰기 데이터인 제 2 데이터(DATA2)를 불휘발성 메모리 장치(120)로 기입할 것이 호스트(200)로부터 요청되었음을 인지할 수 있다.
스토리지 장치(100)는 L2F 테이블(710)을 참조할 수 있다. 스토리지 장치(100)는 호스트(200)로부터 수신된 논리 어드레스에 대응하는 물리 공간이 미리 할당되었는지 여부를 L2F 테이블(710)에 기초하여 판단할 수 있다.
도시된 실시 예에서, 'Write(256, 1, DATA2)' 명령에 응답하여, 스토리지 장치(100)의 스토리지 컨트롤러(110)는 '256' 번째 논리 페이지로 할당된 물리 공간 그룹 ID가 없다는 것을 L2F 테이블(610)로부터 인지할 수 있다. 이에 따라, 스토리지 컨트롤러(110)는 '256' 번째 논리 페이지로 미리 할당된 물리 공간이 존재하지 않는다는 것을 인지할 수 있다.
S702 단계에서, 스토리지 장치(100)는 플래시 변환 계층(FTL) 상에 활성화된 인스턴스들(FAI1~FAIm, NFAI) 중 호스트(200)로부터 제공된 논리 어드레스에 대응하는 인스턴스를 검색하고, 그리고 검색된 인스턴스로 물리 공간을 할당할 수 있다. 예를 들어, 도시된 실시 예에서, 스토리지 장치(100)의 스토리지 컨트롤러(110)는 호스트(200)로부터 제공된 논리 페이지인 '256'번째 논리 페이지에 대응하는 활성화된 인스턴스를 검색할 수 있다. 그 결과, 스토리지 컨트롤러(110)는 '256'번째 논리 페이지를 포함하는 논리 공간 범위에 대한 메타데이터를 포함하는 인스턴스(NFAI)를 찾을 수 있다. 인스턴스(NFAI)는 물리 공간을 미리 할당하기 위한 명령(즉, 'FlashAlloc' 명령)과 연관되지 않을 수 있다. 예를 들어, 인스턴스(NFAI)는 활성화된 인스턴스들(FAI1~FAIm) 각각이 대응하는 논리 어드레스들에 대응하지 않을 수 있다.
인스턴스(NFAI)가 물리 블록 번호에 대한 메타데이터를 포함하고 있지 않다면, 스토리지 컨트롤러(110)는 인스턴스(NFAI)로 메모리 블록을 할당할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 F2P 테이블(예를 들어, 도 6의 F2P 테이블(620))을 참조하여, 물리 공간 그룹 ID들로 할당된 메모리 블록들이 아닌 메모리 블록(예를 들어, 메모리 블록(BLK4))을 인스턴스(NFAI)로 할당할 수 있다.
도시된 바와 달리, 인스턴스(NFAI)는 기존에 활성화된 인스턴스가 아닐 수도 있다. 그러한 경우, 스토리지 컨트롤러(110)의 플래시 변환 계층(FTL)은 호스트(200)로부터 제공된 논리 어드레스 정보에 대응하는 인스턴스(NFAI)를 생성할 수 있다.
S703 단계에서, 스토리지 장치(100)는 쓰기 데이터를 S702 단계에서 검색된(또는 생성된) 인스턴스에 기초하여 불휘발성 메모리 장치(120)로 기입할 수 있다. 예를 들어, 스토리지 장치(100)의 스토리지 컨트롤러(110)는 호스트(200)로부터 수신된 제 2 데이터(DATA2)를 인스턴스(NFAI)에 포함된 메타데이터를 참조하여 불휘발성 메모리 장치(120)로 기입할 수 있다.
도시된 실시 예에서, 인스턴스(NFAI)는 '4'번째 메모리 블록에 대하여 다음 쓰기 위치는 '3' 번째 페이지임을 나타내는 'Next_Write_Ptr' 포인터를 포함하는 메타데이터를 포함할 수 있다. 따라서, 스토리지 컨트롤러(110)는 제 2 데이터(DATA2)를 불휘발성 메모리 장치(120)의 '4'번째 메모리 블록인 메모리 블록(BLK4)의 '3'번째 페이지부터 기입할 수 있다.
S704 단계에서, 스토리지 장치(100)는 S702 단계에서 검색된 인스턴스를 업데이트할 수 있다. 예를 들어, 스토리지 장치(100)의 스토리지 컨트롤러(110)는 S702 단계에서 검색된 인스턴스의 메타데이터에 포함된 포인터를 업데이트할 수 있다. 도시된 실시 예에서, 만약 S703 단계에서 스토리지 컨트롤러(110)가 제 2 데이터(DATA2)를 메모리 블록(BLK4)의 '3'번째 페이지부터 '6'번째 페이지까지 기입했다면, 스토리지 컨트롤러(110)는 인스턴스(NFAI)의 메타데이터의 'Next_Write_Ptr' 포인터를 '3'에서 '7'로 업데이트할 수 있다.
S705 단계에서, 스토리지 장치(100)는 L2P 테이블(730)을 업데이트할 수 있다. 예를 들어, 스토리지 장치(100)의 스토리지 컨트롤러(110)는 S703 단계의 수행 결과를 L2P 테이블(730)로 반영할 수 있다. 도시된 실시 예에서, 스토리지 컨트롤러(110)는 '256'번째 논리 페이지가 '4'번?? 메모리 블록(BLK4)의 '3'번째 페이지에 대응하는 것을 L2P 테이블(630)로 반영할 수 있다.
도 8은 본 발명의 일 실시 예에 따른 읽기 동작의 절차를 예시적으로 도시한다. 도 1, 도 2, 및 도 8을 참조하여, 스토리지 장치(100)의 읽기 동작이 설명될 것이다.
S801 단계에서, 스토리지 장치(100)는 호스트(200)로부터 발행된 읽기 동작과 관련된 커맨드 및 어드레스를 수신할 수 있다. 이에 따라, 읽기 명령(도시된 실시 예에서, 'Read')이 스토리지 장치(100로 호출될 수 있다. 읽기 명령은 읽고자 하는 논리 공간의 어드레스의 시작값 및 읽고자 하는 논리 공간의 길이를 인자로서 호출될 수 있다.
S802 단계에서, 스토리지 장치(100)는 불휘발성 메모리 장치(120)에 저장된 데이터를 S801 단계에서 호출된 읽기 명령에 응답하여 액세스할 수 있다. 예를 들어, 스토리지 장치(100)의 스토리지 컨트롤러(110)는 호스트(200)가 읽고자 하는 불휘발성 메모리 장치(120)의 데이터를 L2P 테이블(830)에 기초하여 액세스할 수 있다.
도시된 실시 예에서, 'Read(255, 2)' 명령 및 L2P 테이블(830)에 기초하여, 스토리지 컨트롤러(110)는 '255'번째 논리 페이지가 '3'번째 메모리 블록인 메모리 블록(BLK3)의 '127'번째 페이지에 대응함을 인지할 수 있다. 이에 따라, S801 단계에서 호출된 읽기 명령 'Read(255, 2)'에 응답하여, 스토리지 컨트롤러(110)는 메모리 블록(BLK3)의 '127'번째 페이지에 저장된 제 3 데이터(DATA3)의 적어도 일부를 액세스할 수 있다.
S803 단계에서, 스토리지 장치(100)의 스토리지 컨트롤러(110)는 S801 단계에서 호출된 읽기 명령에 대응하는 데이터를 읽을 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 제 3 데이터(DATA3)의 적어도 일부를 읽을 수 있다. 스토리지 컨트롤러(110)는 제 3 데이터(DATA3)를 읽기 데이터로서 버퍼 메모리(130)에 일시적으로 저장할 수 있다.
S804 단계에서, 스토리지 장치(100)의 스토리지 컨트롤러(110)는 S803 단계에서 읽은 읽기 데이터를 호스트(200)로 전송할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 버퍼 메모리(130)에 일시적으로 저장된 읽기 데이터를 호스트(200)로 전송할 수 있다.
도 9는 본 발명의 다른 실시 예에 따른 도 1의 스토리지 장치의 예시적인 블록도이다. 도 1, 도 2, 도 4, 및 도 9를 참조하면, 도 9의 스토리지 장치(100a)는 복수의 불휘발성 메모리 장치 관리기들(115_1~115_z)을 포함하는 스토리지 컨트롤러(110a) 및 복수의 불휘발성 메모리 장치들(120_1~120_z)을 포함할 수 있다. 불휘발성 메모리 장치 관리기들(115_1~115_z)은 채널들(CH1~CHz)을 통해 불휘발성 메모리 장치들(120_1~120_z)과 각각 통신할 수 있다.
일 실시 예에 있어서, 스토리지 장치(100)의 스토리지 컨트롤러(110)는 물리 공간을 미리 할당하는 명령(예를 들어, 도 6의 'FlashAlloc' 명령)에 연관된 인스턴스들(FAI1~FAIm)로 메모리 블록들을 채널-균등하게(channel-evenly) 할당할 수 있다. 다시 말해서, 임의의 인스턴스에 대해, 스토리지 컨트롤러(110)는 메모리 블록들을, 인스턴스가 다양한 채널들에 최대한 균등하게 연관될 수 있도록 인스턴스로 할당할 수 있다. 이에 따라, 인스턴스와 연관된 쓰기 연산 및 읽기 연산의 대역폭(Bandwidth)이 낮아질 수 있다.
도시된 실시 예에서, 스토리지 컨트롤러(110)가 인스턴스(FAIs; s는 m 이하의 양의 정수)로 'z' 개의 메모리 블록들을 할당하려고 한다고 가정해보자. 채널(CH1)에 대응하는 불휘발성 메모리 장치(120_1)의 메모리 블록들(BLK_11~BLK_1z)만을 인스턴스(FAIs)로 할당하는 대신에, 스토리지 컨트롤러(110)는 채널들(CH1~CHz)에 각각 대응하는 메모리 블록들(BLK_11~BLK_z1)을 인스턴스(FAIs)로 할당할 수 있다. 이에 따라, 인스턴스(FAIs)는 'z'개의 채널들(CH1~CHz)과 골고루 연관될 수 있다.
다른 예를 들어, 스토리지 컨트롤러(110)가 인스턴스(FAIu; u는 m 이하의 양의 정수)로 2개의 메모리 블록들을 할당하려고 한다고 가정해보자. 채널(CH2)에 대응하는 불휘발성 메모리 장치(120_2)의 메모리 블록들(BLK_22, BLK_23)을 인스턴스(FAIu)로 할당하는 대신에, 스토리지 컨트롤러(110)는 채널(CH1)과 연결된 메모리 블록(BLK_12) 및 채널(CH2)과 연결된 메모리 블록(BLK_22)을 인스턴스(FAIu)로 할당할 수 있다. 이에 따라, 인스턴스(FAIu)는 2개의 채널들(CH1, CH2)과 연관될 수 있다.
메모리 블록들을 임의의 인스턴스로 할당할 때, 스토리지 장치(100)는 채널들(CH1~CHz) 각각의 자유 블록 풀(free block pool; 미도시)을 참조할 수 있다. 자유 블록 풀은 대응하는 채널의 자유 블록을 나타낼 수 있다. 임의의 채널에 대해 하나 이상의 자유 블록이 남아있으면, 스토리지 장치(100)의 스토리지 컨트롤러(110)는 남은 자유 블록들 중 하나의 자유 블록을 인스턴스로 할당할 수 있다. 그러나, 채널에 대해 남아있는 자유 블록이 없으면, 스토리지 컨트롤러(110)는 채널에 대해 가비지 컬렉션(Garbage Collection)을 수행할 수 있다. 스토리지 컨트롤러(110)는 가비지 컬렉션을 수행한 결과 생성된 자유 블록을 인스턴스로 할당할 수 있다. 가비지 컬렉션과 관련된 동작들은 도 12를 참조하여 구체적으로 후술된다.
도 10은 본 발명의 일 실시 예에 따라 물리 공간을 주어진 논리 공간에 대해 할당하기 위한 예시적인 순서도이다. 도 1, 도 2, 도 4 및 도 10을 참조하면, 스토리지 장치(100)는 S1001 내지 S1005 단계들을 수행할 수 있다.
S1001 단계에서, 스토리지 장치(100)는 물리 공간을 대응하는 논리 공간에 대해 할당하라는 요청을 수신할 수 있다. 예를 들어, 스토리지 장치(100)는 논리 공간에 대한 논리 어드레스 정보 및 논리 공간에 물리 공간을 할당하라는 요청을 호스트(200)로부터 수신할 수 있다.
S1002 단계에서, 스토리지 장치(100)는 물리 공간의 할당이 동기식 할당인지 또는 비동기식 할당인지를 판단할 수 있다. 예를 들어, 스토리지 장치(100)는 S1002 단계를 호스트(200)로부터 수신되는 커맨드에 기초하여 수행할 수 있다. 다른 예를 들어, 스토리지 장치(100)는 자유 블록 풀에 자유 블록들이 충분히 남아 있지 않는다고 판단되면, 물리 공간의 할당이 비동기식이라고 판단할 수 있다. 물리 공간의 할당이 동기식 할당이라고 판단되면, 스토리지 장치(100)는 즉시 S1004 단계를 수행할 수 있다.
S1002 단계에서 물리 공간의 할당이 비동기식이라고 판단되면, 스토리지 장치(100)는 S1003 단계를 수행할 수 있다. S1003 단계에서, 물리 공간을 할당하기에 앞서 확인 응답(acknowledgement)을 호스트(200)로 반환할 수 있다. 이후, 스토리지 장치(100)는 S1004 단계를 소정의 시간이 경과한 후에 수행할 수 있다. 예를 들어, 스토리지 장치(100)는 S1004 단계를 S1001 단계가 수행된 이후로부터 최초로 쓰기 명령을 호스트(200)로부터 수신한 시점에 수행할 수 있다. 다른 예를 들어, 스토리지 장치(100)는 S1004 단계를 S1001 단계가 수행된 시점으로부터 호스트(200)로부터 수신되는 커맨드에 의해 결정되는 기준 시간이 경과한 시점에 수행할 수 있다.
S1004 단계에서, 스토리지 장치(100)는 물리 공간 그룹 ID를 논리 공간으로 할당할 수 있다. S1005 단계에서, 스토리지 장치(100)는 L2F 테이블(410)을 S1004 단계의 수행 결과에 기초하여 업데이트할 수 있다.
도 11은 본 발명의 일 실시 예에 따라 쓰기 동작을 수행하기 위한 예시적인 순서도이다. 도 1, 도 2, 도 4, 및 도 11을 참조하면, 스토리지 장치(100)는 S1101 내지 S1113 단계들을 수행할 수 있다.
S1101 단계에서, 스토리지 장치(100)는 데이터를 스토리지 장치(100)로 기입할 것에 대한 요청을 호스트(200)로부터 수신할 수 있다. 예를 들어, 스토리지 장치(100)는 스토리지 장치(100)의 쓰기 명령, 불휘발성 메모리 장치(120)로 기입하기 위한 쓰기 데이터, 및 쓰기 데이터에 대응하는 논리 공간의 어드레스를 호스트(200)로부터 수신할 수 있다.
S1102 단계에서, 스토리지 장치(100)는 S1101 단계에서 주어진 논리 어드레스에 대응하고, 물리 주소를 미리 할당하기 위한 명령에 연관되고, 그리고 플래시 변환 계층(FTL) 상에 활성화된 인스턴스를 검색할 수 있다.
S1103 단계에서, 스토리지 장치(100)는 대응하는 인스턴스를 찾았는지 판단할 수 있다. S1102 단계의 수행 결과 적합한 인스턴스를 찾지 못했다면, 스토리지 장치(100)는 S1111 단계를 수행할 수 있다. 적합한 인스턴스를 찾았다면, 스토리지 장치(100)는 S1104 단계를 수행할 수 있다.
S1104 단계에서, 스토리지 장치(100)는 S1102 단계의 수행 결과 하나의(single) 인스턴스를 찾았는지 판단할 수 있다. 둘 이상의 인스턴스들이 S1102 단계의 수행 결과 찾아졌다면, 스토리지 장치(100)는 S1105 단계를 수행할 수 있다. 하나의 인스턴스만이 S1102 단계의 수행 결과 찾아졌다면, 스토리지 장치(100)는 S1106 단계를 수행할 수 있다.
S1105 단계에서, 스토리지 장치(100)는 에러 메시지를 호스트(200)로 반환할 수 있다. 예를 들어, 스토리지 장치(100)는 물리 공간을 미리 할당하기 위한 명령이 잘못되었음을 알리는 메시지를 호스트(200)로 반환할 수 있다.
S1106 단계에서, 스토리지 장치(100)는 물리 어드레스가 할당되었는지 판단할 수 있다. 예를 들어, 스토리지 장치(100)는 S1102 단계의 수행 결과 검색된 인스턴스로 할당된 물리 어드레스(예를 들어, 메모리 블록의 번호)가 존재하는지 여부를 검색된 인스턴스에 포함된 메타데이터 및 F2P 테이블(420)에 기초하여 판단할 수 있다. 미리 할당된 물리 어드레스가 있다고 판단되면, 스토리지 장치(100)는 S1107 단계를 수행할 수 있다. 미리 할당된 물리 어드레스가 없다고 판단되면, 스토리지 장치는 S1110 단계를 수행할 수 있다.
S1107 단계에서, 스토리지 장치(100)는 쓰기 데이터를 할당된 물리 어드레스에 대응하는 불휘발성 메모리 장치(120)의 저장 공간에 S1102 단계에서 검색된 인스턴스에 기초하여 기입할 수 있다. S1108 단계에서, 스토리지 장치(100)는 S1102 단계에서 검색된 인스턴스 내 메타데이터에 포함된 다음 쓰기 데이터 기입 위치를 나타내는 포인터를 업데이트할 수 있다. S1109 단계에서, 스토리지 장치(100)는 L2P 테이블(430)을 S1107 단계의 수행 결과에 기초하여 업데이트할 수 있다.
S1110 단계에서, 스토리지 장치(100)는 물리 어드레스를 S1101 단계에서 주어진 논리 어드레스에 대해 S1102 단계에서 검색된 인스턴스에 기반하여 할당할 수 있다. 스토리지 장치(100)는 S1110 단계를 수행한 이후, S1107 단계를 수행할 수 있다.
S1111 단계에서, 스토리지 장치(100)는 물리 어드레스를 S1101 단계에서 주어진 논리 어드레스에 대해 물리 공간을 미리 할당하는 명령과 무관한 인스턴스(예를 들어, 인스턴스(NFAI))에 기반하여 할당할 수 있다. S1112 단계에서, 스토리지 장치(100)는 쓰기 데이터를 불휘발성 메모리 장치(120)의 S1111 단계에서 할당된 물리 어드레스에 대응하는 저장 공간에 기입할 수 있다. S1113 단계에서, 스토리지 장치(100)는 S1111 단계의 인스턴스의 메타데이터에 포함된 다음 쓰기 데이터 기입 위치를 나타내는 포인터를 업데이트할 수 있다. 이후, 스토리지 장치(100)는 S1109 단계를 수행할 수 있다.
도 12는 본 발명의 일 실시 예에 따라 가비지 컬렉션을 수행하기 위한 예시적인 순서도이다. 도 1, 도 2, 도 4, 및 도 12를 참조하면, 스토리지 장치(100)는 S1201 내지 S1207 단계들을 수행할 수 있다.
S1201 단계에서, 스토리지 장치(100)는 가비지 컬렉션의 수행이 물리 공간을 미리 할당하기 위한 명령과 연관되었는지 판단할 수 있다. 예를 들어, 스토리지 장치(100)는 물리 공간을 미리 할당하기 위한 명령에 응답하여 검색된 인스턴스(예를 들어, 도 4의 인스턴스들(FAI1~FAIm) 중 어느 한 인스턴스)로 메모리 블록을 할당하기 위해 가비지 컬렉션을 수행할 수 있다. 이 경우, 스토리지 장치(100)는 S1202 내지 S1204 단계들을 수행할 수 있다.
다른 예를 들어, 스토리지 장치(100)는 물리 공간을 미리 할당하기 위한 명령이 호출됨이 없이 호스트(200)로부터 쓰기 요청을 수신할 수 있다. 예를 들어, 호스트(200)로부터 수신된 쓰기 요청이 연관된 논리 어드레스(들)로 미리 할당된 물리 그룹 ID가 존재하지 않을 수 있다. 스토리지 장치(100)는 그러한 쓰기 요청을 수신한 것에 응답하여 메모리 블록을 할당하기 위해 가비지 컬렉션을 수행할 수 있다. 이 경우, 스토리지 장치(100)는 S1205 내지 S1207 단계들을 수행할 수 있다.
S1202 단계에서, 스토리지 장치(100)는 불휘발성 메모리 장치(120)의 메모리 블록들(BLK1~BLKn) 중 둘 이상의 메모리 블록들을 소거 동작을 수행하기 위해 선택할 수 있다. 예를 들어, 스토리지 장치(100)는 무효화된 페이지를 상대적으로 많이 포함하는 메모리 블록들을 선택할 수 있다. S1203 단계에서, 스토리지 장치(100)는 S1202 단계에서 선택된 블록들의 유효한 데이터를 불휘발성 메모리 장치(120)의 자유 블록들 중 어느 하나로 복사할 수 있다. S1204 단계에서, 스토리지 장치(100)는 S1202 단계에서 선택된 메모리 블록들에 대해 소거 동작을 수행하고, 그리고 소거된 메모리 블록들을 자유 블록들로서 반환할 수 있다.
물리 공간을 미리 할당하기 위한 명령이 호출됨이 없이 쓰기 요청을 수신한 경우, S1205 단계에서, 스토리지 장치(100)는 불휘발성 메모리 장치(120)의 메모리 블록들(BLK1~BLKn) 중 어느 하나를 희생 블록으로서 선택할 수 있다. 예를 들어, 스토리지 장치(100)는 메모리 블록들(BLK1~BLKn) 중 유효 페이지를 가장 적게 포함하는 메모리 블록을 희생 블록으로서 선택할 수 있다. S1206 단계에서, 스토리지 장치(100)는 희생 블록의 유효 데이터를 불휘발성 메모리 장치(120)의 자유 블록들 중 어느 하나로 복사할 수 있다. S1207 단계에서, 스토리지 장치(100)는 희생 블록에 대해 소거 동작을 수행하고, 그리고 소거된 희생 블록을 자유 블록으로서 반환할 수 있다.
도 13은 본 발명의 일 실시 예에 따라 도 1의 불휘발성 메모리 장치에 저장된 데이터의 예시적인 블록도이다. 도 1, 도 2, 및 도 13을 참조하면, 호스트 상에 실행되는 임의의 응용 프로그램(예를 들어, 도 3의 응용 프로그램(311a))은 파일 A, 파일 B, 및 파일 C에 대한 저장 공간을 운영 체제로 요청할 수 있다. OS(예를 들어, 도 3의 OS(320a)(또는, 도 3b의 데이터베이스 관리 시스템(320b))는 응용 프로그램의 요청에 응답하여, 파일 시스템(예를 들어, 도 3의 파일 시스템(321a))으로 논리 공간을 할당하기 위한 시스템 콜을 호출할 수 있다.
호출된 시스템 콜에 응답하여, OS는 파일 A, 파일 B, 및 파일 C로 논리 공간을 할당할 수 있다. OS는 동일한 파일로 바람직하게는 연속적인 논리 페이지들을 할당할 수 있으나, 반드시 그러하지는 않을 수 있다. 도시된 실시 예에서, OS는 부분적으로 연속적인 논리 페이지들(L1, L2, L14, L15)을 파일 A로 할당할 수 있고, 부분적으로 연속적인 논리 페이지들(L3, L4, L8, L9, L19~L22)을 파일 B로 할당할 수 있고, 그리고 연속적인 논리 페이지들(L10~L13)을 파일 C로 할당할 수 있다.
파일 시스템을 포함하는 소프트웨어 계층을 포함하는 호스트는 스토리지 장치로 연결될 수 있다. 이 경우, 호스트는 스토리지 장치로 물리 공간을 미리 할당하기 위한 명령을 지원하는 인터페이스 또는 그러한 명령을 지원하지 않는 인터페이스 중 어느 한 인터페이스로 연결될 수 있다.
불휘발성 메모리 장치(120a)는 물리 공간을 미리 할당하기 위한 명령을 지원하지 않는 인터페이스로 연결된 스토리지 장치에 포함될 수 있다. 따라서, 불휘발성 메모리 장치(120a)를 포함하는 스토리지 장치는 응용 프로그램의 쓰기 연산에 대한 요청을 호스트로부터 수신한 이후에, 물리 공간을 해당 요청과 연관된 데이터로 할당할 수 있다. 다시 말해서, 물리 공간을 미리 할당하기 위한 명령을 지원하지 않는 인터페이스로 연결된 스토리지 장치는 물리 공간을 호스트로부터 쓰기 연산에 대한 요청을 수신하는 것에 응답하여, 즉 온-디맨드(on-demand) 방식으로 할당할 수 있다.
일 실시 예에 있어서, 응용 프로그램은 파일 A의 전부를 동시에 스토리지 장치에 기입하는 것을 원하지 않을 수도 있다. 예를 들어, 응용 프로그램은 파일 A로 연관된 논리 페이지들(L1, L2, L14, L15) 중 논리 페이지들(L1, L2)에 속한 데이터만을 스토리지 장치로 기입할 것을 OS으로 요청할 수 있다. 이에 따라, 논리 페이지들(L1, L2)에 속한 데이터로 물리 공간이 할당되는 시점은 논리 페이지들(L14, L15)에 속한 데이터로 물리 공간이 할당되는 시점과 상이할 수 있다. 결과적으로, 파일 A의 데이터는 불휘발성 메모리 장치(120a)의 다수의 메모리 블록들(예를 들어, 메모리 블록들(BLK1a, BLK2a, BLK4a))로 분산되어 기입될 수 있다. 유사한 방식으로, 파일 B 및 파일 C 또한 불휘발성 메모리 장치(120a)의 다수의 메모리 블록들로 산재되어 저장될 수 있다.
또 다른 실시 예에 있어서, 파일 A 및 파일 B는 서로 다른 응용 프로그램들과 연관될 수 있다. 예를 들어, 파일 A는 도 3a의 응용 프로그램(311a)를 위한 것이고, 그리고 파일 B는 도 3a의 응용 프로그램(312a)을 위한 것일 수 있다. 이때, 응용 프로그램(311a)의 파일 A에 대한 쓰기 요청 및 응용 프로그램(312a)의 파일 B에 대한 쓰기 요청이 동시에 발행될 수 있다. 이에 따라, 서로 다른 파일과 연관된 논리 페이지들이 불휘발성 메모리 장치(120a)의 동일한 메모리 블록(예를 들어, 메모리 블록(BLK3a))에 저장될 수 있다.
도시된 실시 예에서, 불휘발성 메모리 장치(120a)의 하나의 메모리 블록으로 다양한 파일들에 속하는 데이터가 저장될 수 있다. 예를 들어, 파일 A에 속하는 데이터의 일부, 파일 B에 속하는 데이터의 일부, 및 파일 C에 속하는 데이터의 일부가 메모리 블록(BLK1a)으로 함께 저장될 수 있다. 서로 다른 파일에 속하는 데이터의 생명 주기는 서로 상이할 수 있다. 즉, 서로 다른 파일에 속하는 데이터는 서로 다른 시점에 무효화될 수 있다.
불휘발성 메모리 장치(120a)와 대조적으로, 불휘발성 메모리 장치(120b)는 물리 공간을 미리 할당하기 위한 명령(예를 들어, 'FlashAlloc' 명령)을 지원하는 인터페이스로 연결된 스토리지 장치에 포함될 수 있다. 따라서, 불휘발성 메모리 장치(120b)를 포함하는 스토리지 장치는 응용 프로그램의 쓰기 연산에 대한 요청을 호스트로부터 수신하기에 앞서, 물리 공간을 해당 요청과 연관된 데이터로 미리 할당할 수 있다.
논리 공간을 할당하기 위한 시스템 콜이 운영 체제에 의해 호출되는 것에 응답하여, OS는 물리 공간을 미리 할당하기 위한 명령을 불휘발성 메모리 장치(120b)를 포함하는 스토리지 장치로 호출할 수 있다. 호출된 물리 공간을 미리 할당하기 위한 명령에 응답하여, 불휘발성 메모리 장치(120b)를 포함하는 스토리지 장치는 동일한 논리 객체(즉, 파일)에 속한 데이터로 동일한 물리 공간 그룹 ID를 할당할 수 있다. 스토리지 장치는 각각의 물리 공간 그룹 ID들로 고유한(unique) 메모리 블록들을 할당할 수 있다. 결과적으로, 서로 다른 논리 객체에 속한 데이터는 서로 다른 메모리 블록들로 저장될 수 있다.
도시된 실시 예에서, 파일 A에 속한 데이터는 불휘발성 메모리 장치(120b)의 메모리 블록(BLK1b)에 저장될 수 있다. 파일 B에 속한 데이터는 불휘발성 메모리 장치(120b)의 메모리 블록들(BLK2b, BLK4b)에 저장될 수 있다. 파일 C에 속한 데이터는 불휘발성 메모리 장치(120b)의 메모리 블록(BLK3b)에 저장될 수 있다. 메모리 블록(BLK1b)은 파일 A에 속하는 데이터만을 저장하므로, 메모리 블록(BLK1b)에 저장된 데이터는 모두 동일한 시점에 무효화될 가능성이 높다.
불휘발성 메모리 장치(120a, 120b)의 메모리 블록들(BLK1a~BLK4a, BLK2b~BLK4b)로 이미 저장된 데이터들은 덮어 쓰이지 못할 수 있다. 또한, 메모리 블록들(BLK1a~BLK4a, BLK2b~BLK4b)은 블록 단위로만 소거될 수 있을 수 있다. 그러므로, 하나의 메모리 블록이 다수의 무효화된 페이지를 포함하는 경우, 스토리지 장치의 쓰기 증폭 특성이 열화될 수 있다. 따라서, 불휘발성 메모리 장치(120a)를 포함하는 스토리지 장치의 쓰기 증폭 특성에 비해, 불휘발성 메모리 장치(120b)를 포함하는 스토리지 장치의 쓰기 증폭 특성이 개선될 수 있다. 스토리지 장치의 쓰기 증폭 특성이 개선됨에 따라, 호스트 상에서 실행되는 응용 프로그램들의 데이터 처리 속도 또한 개선될 수 있다.
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
10: 스토리지 시스템
100: 스토리지 장치
200: 호스트

Claims (20)

  1. 복수의 메모리 블록들을 포함하는 불휘발성 메모리 장치;
    버퍼 메모리; 및
    호스트로부터 제 1 할당 요청 및 제 1 논리 어드레스 정보를 수신하고, 상기 제 1 논리 어드레스 정보의 논리 어드레스들을 상기 제 1 할당 요청에 응답하여 상기 복수의 메모리 블록들의 제 1 물리 그룹으로 할당하고, 상기 제 1 논리 어드레스 정보와 연관된 제 1 쓰기 요청 및 제 1 쓰기 데이터를 수신하고, 상기 제 1 쓰기 데이터를 상기 버퍼 메모리에 저장하고, 그리고 상기 버퍼 메모리에 저장된 상기 제 1 쓰기 데이터를 상기 제 1 쓰기 요청에 응답하여 상기 제 1 물리 그룹의 메모리 블록들로 기입하는 스토리지 컨트롤러를 포함하되,
    상기 제 1 할당 요청은 상기 제 1 쓰기 요청에 선행하는 스토리지 장치.
  2. 제 1 항에 있어서,
    상기 제 1 논리 어드레스 정보의 상기 논리 어드레스들 및 상기 제 1 물리 그룹을 맵핑하기 위한 제 1 맵핑 테이블을 더 포함하는 스토리지 장치.
  3. 제 2 항에 있어서,
    상기 제 1 물리 그룹 및 상기 복수의 메모리 블록들 중 상기 제 1 물리 그룹에 속한 메모리 블록들을 맵핑하기 위한 제 2 맵핑 테이블; 및
    상기 제 1 논리 어드레스 정보의 제 1 논리 어드레스 및 제 1 물리 어드레스를 맵핑하기 위한 제 3 맵핑 테이블을 더 포함하는 스토리지 장치.
  4. 제 2 항에 있어서,
    상기 스토리지 컨트롤러는 제 2 쓰기 요청, 제 2 논리 어드레스 정보, 및 제 2 쓰기 데이터를 수신하고, 제 2 물리 어드레스를 상기 제 2 논리 어드레스 정보의 제 2 논리 어드레스로 상기 제 1 내지 제 3 맵핑 테이블에 기초하여 할당하고, 그리고 상기 제 2 물리 어드레스로 상기 제 2 쓰기 데이터를 기입하되,
    상기 제 2 물리 어드레스는 상기 제 1 물리 그룹과 무관한 스토리지 장치.
  5. 제 2 항에 있어서,
    상기 스토리지 컨트롤러는 제 2 할당 요청 및 제 2 논리 어드레스 정보를 상기 호스트로부터 수신하고, 그리고 상기 복수의 메모리 블록들 중 상기 제 2 논리 어드레스 정보와 연관된 메모리 블록들의 그룹이 존재하는지를 상기 제 1 맵핑 테이블에 기초하여 판단하는 스토리지 장치.
  6. 제 5 항에 있어서,
    상기 제 2 논리 어드레스 정보와 연관된 메모리 블록들의 그룹이 존재하지 않으면, 상기 스토리지 컨트롤러는 제 2 물리 그룹을 상기 제 2 논리 어드레스 정보의 논리 어드레스들로 할당하되,
    상기 제 2 물리 그룹은 상기 제 1 물리 그룹과 무관한 스토리지 장치.
  7. 제 5 항에 있어서,
    상기 제 2 논리 어드레스 정보가 상기 제 1 물리 그룹과 연관되었다고 판단되면, 상기 스토리지 컨트롤러는 상기 제 1 물리 그룹과 연관된 제 2 물리 어드레스들을 상기 제 2 논리 어드레스 정보의 논리 어드레스들로 할당하는 스토리지 장치.
  8. 제 1 항에 있어서,
    상기 불휘발성 메모리 장치는 SSD(Solid State Drive)를 포함하는 스토리지 장치.
  9. 복수의 메모리 블록들을 포함하는 불휘발성 메모리 장치 및 스토리지 컨트롤러를 포함하는 스토리지 장치의 동작 방법에 있어서:
    제 1 할당 요청 및 제 1 논리 공간과 연관된 제 1 논리 어드레스 정보를 호스트로부터 수신하는 단계;
    제 1 물리 그룹 ID를 상기 제 1 논리 어드레스 정보의 논리 어드레스들로 할당하는 단계;
    제 1 쓰기 데이터의 상기 제 1 논리 어드레스 정보와 연관된 제 1 쓰기 요청을 상기 호스트로부터 수신하는 단계;
    상기 스토리지 장치의 버퍼 메모리로 저장하는 단계; 및
    상기 제 1 쓰기 요청에 응답하여, 상기 버퍼 메모리에 저장된 상기 제 1 쓰기 데이터를 상기 복수의 메모리 블록들 중 상기 제 1 물리 그룹 ID와 연관된 제 1 메모리 블록으로 기입하는 단계를 포함하되,
    상기 제 1 할당 요청은 상기 제 1 쓰기 요청에 선행하는 스토리지 장치의 동작 방법.
  10. 제 9 항에 있어서,
    상기 제 1 물리 그룹 ID를 상기 제 1 논리 어드레스 정보의 논리 어드레스들로 할당하는 단계는 상기 제 1 논리 어드레스 정보와 연관된 물리 그룹 ID가 존재하는지 여부를 제 1 맵핑 테이블에 기초하여 판단하는 단계; 및
    상기 제 1 맵핑 테이블을 업데이트하는 단계를 포함하는 스토리지 장치의 동작 방법.
  11. 제 9 항에 있어서,
    상기 제 1 쓰기 데이터를 상기 제 1 메모리 블록으로 기입하는 단계는:
    상기 제 1 논리 어드레스 정보에 대응하는 제 1 인스턴스를, 상기 제 1 물리 그룹 ID를 상기 제 1 논리 어드레스 정보의 논리 어드레스들로 맵핑하기 위한 제 1 맵핑 테이블 및 상기 제 1 물리 그룹 ID를 상기 제 1 메모리 블록으로 맵핑하기 위한 제 2 맵핑 테이블에 기초하여 검색하는 단계;
    상기 제 1 메모리 블록의, 상기 제 1 인스턴스에 대응하는 제 1 물리 어드레스가 가리키는 위치에 상기 제 1 쓰기 데이터를 기입하는 단계; 및
    상기 제 1 인스턴스를 업데이트하는 단계를 포함하되,
    상기 제 1 인스턴스는 상기 제 1 논리 어드레스 정보, 상기 제 1 메모리 블록, 및 제 1 포인터에 대한 제 1 메타데이터를 포함하는 스토리지 장치의 동작 방법.
  12. 제 11 항에 있어서,
    상기 제 1 물리 어드레스는 상기 제 1 메모리 블록 및 상기 제 1 포인터와 연관되고, 그리고
    상기 제 1 인스턴스를 업데이트하는 단계는 상기 제 1 포인터를 업데이트하는 단계를 포함하는 스토리지 장치의 동작 방법.
  13. 제 9 항에 있어서,
    제 2 쓰기 데이터의 제 2 논리 어드레스 정보와 연관된 제 2 쓰기 요청을 상기 호스트로부터 수신하는 단계;
    상기 제 2 쓰기 요청에 응답하여, 상기 제 2 논리 어드레스 정보에 대응하는 인스턴스를 검색하는 단계; 및
    상기 제 2 논리 어드레스 정보에 대응하는 단일한 인스턴스인 제 1 인스턴스가 검색되면, 상기 제 2 쓰기 데이터를 상기 검색된 제 1 인스턴스에 기초하여 상기 불휘발성 메모리 장치로 기입하는 단계;
    상기 제 2 논리 어드레스 정보에 대응하는 복수의 인스턴스들이 검색되면, 에러 메시지를 상기 호스트로 반환하는 단계; 및
    상기 제 2 논리 어드레스 정보에 대응하는 인스턴스가 검색되지 않으면:
    제 2 메모리 블록을 상기 제 2 논리 어드레스 정보의 논리 어드레스들로 할당하는 단계;
    상기 제 2 논리 어드레스 정보의 상기 논리 어드레스들 및 상기 제 2 메모리 블록에 기초하는 제 2 인스턴스를 생성하는 단계; 및
    상기 제 2 쓰기 데이터를 상기 제 2 인스턴스에 기초하여 기입하는 단계를 포함하는 스토리지 장치의 동작 방법.
  14. 제 9 항에 있어서,
    상기 스토리지 컨트롤러는 상기 복수의 메모리 블록들 중 상기 제 1 메모리 블록을 상기 제 1 물리 그룹 ID로 상기 제 1 할당 요청이 수신되는 시점에 할당하는 스토리지 장치의 동작 방법.
  15. 제 9 항에 있어서,
    상기 스토리지 컨트롤러는 상기 복수의 메모리 블록들 중 상기 제 1 메모리 블록을 상기 제 1 물리 그룹 ID로 상기 제 1 쓰기 요청이 수신되는 제 1 시점 또는 상기 제 1 할당 요청이 수신되는 시점부터 제 1 기준 시간이 경과된 제 2 시점 중 어느 한 시점에 할당하는 스토리지 장치의 동작 방법.
  16. 호스트 및 스토리지 장치를 포함하는 스토리지 시스템의 동작 방법에 있어서:
    상기 호스트에 의해, 제 1 논리 공간을 제 1 데이터에 할당하기 위한 제 1 명령을 호출하는 단계;
    상기 호스트에 의해, 물리 공간을 상기 제 1 논리 공간으로 할당하기 위한 제 2 명령을 상기 제 1 명령에 응답하여 상기 스토리지 장치로 호출하는 단계;
    상기 스토리지 장치에 의해, 상기 제 2 명령에 응답하여 제 1 물리 그룹 ID를 상기 제 1 논리 공간과 연관된 제 1 논리 어드레스 정보의 논리 어드레스들로 할당하는 단계;
    상기 호스트에 의해, 상기 제 1 논리 어드레스 정보와 연관된 제 1 쓰기 데이터를 저장할 것을 상기 스토리지 장치로 요청하는 단계; 및
    상기 스토리지 장치에 의해, 상기 제 1 쓰기 데이터를 상기 스토리지 장치의 버퍼 메모리로 저장하고, 그리고 상기 버퍼 메모리에 저장된 상기 제 1 쓰기 데이터를 상기 스토리지 장치의 불휘발성 메모리 장치의 복수의 메모리 블록들 중 제 1 메모리 블록으로 기입하는 단계를 포함하는 스토리지 시스템의 동작 방법.
  17. 제 16 항에 있어서,
    상기 제 1 물리 그룹 ID를 상기 제 1 논리 공간과 연관된 상기 제 1 논리 어드레스 정보의 상기 논리 어드레스들로 할당하는 단계는;
    상기 제 1 물리 그룹 ID를 상기 제 1 논리 공간과 연관된 상기 제 1 논리 어드레스 정보의 상기 논리 어드레스들로 맵핑하기 위한 제 1 맵핑 테이블을 업데이트 하는 단계;
    상기 복수의 메모리 블록들 중 상기 제 1 메모리 블록 및 제 2 메모리 블록을 상기 제 1 물리 그룹 ID로 할당하는 단계; 및
    상기 제 1 논리 어드레스 정보, 상기 제 1 메모리 블록, 및 상기 제 2 메모리 블록과 연관된 제 1 인스턴스를 생성하는 단계를 포함하고, 그리고
    상기 제 1 쓰기 데이터를 기입하는 단계는 상기 제 1 인스턴스에 기초하여 수행되는 스토리지 시스템의 동작 방법.
  18. 제 17 항에 있어서,
    상기 제 1 메모리 블록 및 상기 제 2 메모리 블록을 상기 제 1 물리 그룹 ID로 할당하는 단계는 상기 복수의 메모리 블록들에 대해 가비지 컬렉션(Garbage Collection)을 수행하는 단계를 포함하는 스토리지 시스템의 동작 방법.
  19. 제 16 항에 있어서,
    상기 제 1 쓰기 데이터를 상기 제 1 메모리 블록으로 기입하는 단계는:
    상기 제 1 논리 어드레스 정보에 대응하는 인스턴스를 검색하는 단계;
    상기 제 1 논리 어드레스 정보에 대응하는 단일한 제 1 인스턴스가 검색된 것에 응답하여, 상기 제 1 쓰기 데이터를 상기 제 1 인스턴스에 기초하여 상기 제 1 메모리 블록으로 기입하는 단계;
    상기 제 1 논리 어드레스 정보에 대응하는 복수의 인스턴스들이 검색된 것에 응답하여, 상기 호스트로 에러 메시지를 반환하는 단계; 및
    상기 제 1 논리 어드레스 정보에 대응하는 인스턴스가 검색되지 않으면:
    상기 제 1 논리 어드레스 정보 및 상기 제 1 메모리 블록에 연관된 제 2 인스턴스를 생성하는 단계; 및
    상기 제 1 쓰기 데이터를 상기 제 2 인스턴스에 기초하여 상기 제 1 메모리 블록으로 기입하는 단계를 포함하는 스토리지 시스템의 동작 방법.
  20. 제 16 항에 있어서,
    상기 호스트에 의해, 제 2 논리 공간을 제 2 데이터에 할당하기 위한 제 3 명령을 호출하는 단계;
    상기 호스트에 의해, 물리 공간을 상기 제 2 논리 공간으로 할당하기 위한 제 4 명령을 상기 제 3 명령에 응답하여 상기 스토리지 장치로 호출하는 단계;
    상기 스토리지 장치에 의해, 상기 제 4 명령에 응답하여 제 2 물리 그룹 ID를 상기 제 2 논리 공간과 연관된 제 2 논리 어드레스 정보의 논리 어드레스들로 할당하는 단계를 더 포함하되,
    상기 제 1 논리 공간 및 상기 제 2 논리 공간은 서로 겹치지 않고, 그리고 상기 복수의 메모리 블록들 중 상기 제 1 물리 그룹 ID와 연관된 메모리 블록들은 상기 제 2 물리 그룹 ID와 연관된 메모리 블록들과 상이한 스토리지 시스템의 동작 방법.
KR1020200136170A 2020-10-20 2020-10-20 스토리지 장치, 스토리지 장치의 동작 방법, 및 스토리지 장치를 포함하는 스토리지 시스템 KR102546740B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020200136170A KR102546740B1 (ko) 2020-10-20 2020-10-20 스토리지 장치, 스토리지 장치의 동작 방법, 및 스토리지 장치를 포함하는 스토리지 시스템
US17/154,319 US11507318B2 (en) 2020-10-20 2021-01-21 Storage device, for allocating physical space for logical address before receiving write request, operating method thereof, and storage system including the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200136170A KR102546740B1 (ko) 2020-10-20 2020-10-20 스토리지 장치, 스토리지 장치의 동작 방법, 및 스토리지 장치를 포함하는 스토리지 시스템

Publications (2)

Publication Number Publication Date
KR20220052423A true KR20220052423A (ko) 2022-04-28
KR102546740B1 KR102546740B1 (ko) 2023-06-26

Family

ID=81186447

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200136170A KR102546740B1 (ko) 2020-10-20 2020-10-20 스토리지 장치, 스토리지 장치의 동작 방법, 및 스토리지 장치를 포함하는 스토리지 시스템

Country Status (2)

Country Link
US (1) US11507318B2 (ko)
KR (1) KR102546740B1 (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005106673A1 (ja) * 2004-04-28 2005-11-10 Matsushita Electric Industrial Co., Ltd. 不揮発性記憶装置及びデータ書込み方法
US20170153843A1 (en) * 2015-11-27 2017-06-01 Western Digital Technologies, Inc. Monitoring and managing elastic data storage devices
US20170262365A1 (en) * 2016-03-08 2017-09-14 Kabushiki Kaisha Toshiba Storage system and information processing system for controlling nonvolatile memory
US20200066360A1 (en) * 2018-08-21 2020-02-27 Micron Technology, Inc. Reduced proximity disturb management via media provisioning and write tracking

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140112303A (ko) 2013-03-13 2014-09-23 삼성전자주식회사 불휘발성 메모리 장치, 전자 장치 그리고 그것을 포함하는 컴퓨팅 시스템
CN110895445B (zh) 2018-09-12 2021-09-14 华为技术有限公司 数据处理方法和系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005106673A1 (ja) * 2004-04-28 2005-11-10 Matsushita Electric Industrial Co., Ltd. 不揮発性記憶装置及びデータ書込み方法
US20170153843A1 (en) * 2015-11-27 2017-06-01 Western Digital Technologies, Inc. Monitoring and managing elastic data storage devices
US20170262365A1 (en) * 2016-03-08 2017-09-14 Kabushiki Kaisha Toshiba Storage system and information processing system for controlling nonvolatile memory
US20200066360A1 (en) * 2018-08-21 2020-02-27 Micron Technology, Inc. Reduced proximity disturb management via media provisioning and write tracking

Also Published As

Publication number Publication date
KR102546740B1 (ko) 2023-06-26
US20220121396A1 (en) 2022-04-21
US11507318B2 (en) 2022-11-22

Similar Documents

Publication Publication Date Title
CN110678836B (zh) 用于键值存储的持久性存储器
KR102252419B1 (ko) 플래시 메모리 장치를 위한 주소변환 시스템 및 그 방법
CN114860163B (zh) 一种存储系统、内存管理方法和管理节点
US20060218347A1 (en) Memory card
US8694563B1 (en) Space recovery for thin-provisioned storage volumes
US10929286B2 (en) Arbitrated management of a shared non-volatile memory resource
US20240045853A1 (en) Blockchain data storage method, system, device, and readable storage medium
US11875055B2 (en) Storage device that receives inode address information to reduce external communication overhead
US20190243758A1 (en) Storage control device and storage control method
KR20160106240A (ko) 반도체 장치 및 그 동작 방법
JP2018032220A (ja) 記憶装置及びその制御方法
US11269771B2 (en) Storage device for improving journal replay, operating method thereof, and electronic device including the storage device
US11366609B2 (en) Technique for encoding deferred reference count increments and decrements
CN115934002B (zh) 固态硬盘的访问方法、固态硬盘、存储系统及云服务器
CN115904255B (zh) 一种数据请求方法、装置、设备及存储介质
CN115168317B (zh) 一种lsm树存储引擎构建方法和系统
KR102546740B1 (ko) 스토리지 장치, 스토리지 장치의 동작 방법, 및 스토리지 장치를 포함하는 스토리지 시스템
EP4336336A1 (en) Data compression method and apparatus
CN111625477B (zh) 访问擦除块的读请求的处理方法与装置
CN114625318A (zh) 应用于固态硬盘的数据写入方法、装置、设备
JP6895551B2 (ja) 情報処理システム
US20210286518A1 (en) Managing operation of a data storage system with reservation of metadata space
KR20230103000A (ko) 메모리 시스템, 메모리 시스템의 입출력 관리 방법 및 이를 수행하기 위한 컴퓨팅 장치
KR20220159270A (ko) 스토리지 장치 및 그 동작 방법
JP2023040677A (ja) ストレージシステム

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant