KR20220097101A - 메모리 컨트롤러를 포함하는 저장 장치 및 메모리 컨트롤러의 동작 방법 - Google Patents

메모리 컨트롤러를 포함하는 저장 장치 및 메모리 컨트롤러의 동작 방법 Download PDF

Info

Publication number
KR20220097101A
KR20220097101A KR1020210034866A KR20210034866A KR20220097101A KR 20220097101 A KR20220097101 A KR 20220097101A KR 1020210034866 A KR1020210034866 A KR 1020210034866A KR 20210034866 A KR20210034866 A KR 20210034866A KR 20220097101 A KR20220097101 A KR 20220097101A
Authority
KR
South Korea
Prior art keywords
data
stored
memory
journal
storage device
Prior art date
Application number
KR1020210034866A
Other languages
English (en)
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 US17/470,720 priority Critical patent/US11983440B2/en
Priority to EP21206530.4A priority patent/EP4024219B1/en
Priority to CN202111414918.7A priority patent/CN114691420A/zh
Publication of KR20220097101A publication Critical patent/KR20220097101A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • 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
    • 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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1805Append-only file systems, e.g. using logs or journals to store data
    • G06F16/1815Journaling file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/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/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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • 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

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)
  • Quality & Reliability (AREA)
  • Library & Information Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

메모리 컨트롤러를 포함하는 저장 장치 및 메모리 컨트롤러의 동작 방법이 개시된다. 본 개시의 기술적 사상에 따른 저장 장치는, 호스트로부터 제공되는 쓰기 데이터가 저장된 쓰기 버퍼와, 저널 로그가 저장될 저널 버퍼를 포함하는 비휘발성 메모리 장치, 메타 데이터를 임시 저장하는 휘발성 메모리 장치 및 상기 쓰기 데이터가 상기 쓰기 버퍼에 저장됨에 응답하여 상기 저널 로그를 상기 저널 버퍼에 저장하도록 비휘발성 메모리 장치를 제어하고, 업데이트된 메타 데이터를 저장하도록 상기 휘발성 메모리 장치를 제어하는 메모리 컨트롤러를 포함한다.

Description

메모리 컨트롤러를 포함하는 저장 장치 및 메모리 컨트롤러의 동작 방법{STORAGE DEVICE INCLUDING MEMORY CONTOLLER AND OPERATING METHOD OF MEMORY CONTROLLER}
본 개시의 기술적 사상은 전자 장치에 관한 것이며, 더욱 상세하게는, 메모리 컨트롤러를 포함하는 저장 장치 및 메모리 컨트롤러의 동작 방법에 관한 것이다.
스마트 폰, 태블릿 및 컴퓨터와 같은 전자 장치는 다양한 사용자 경험을 제공하기 위해, 다양한 데이터들을 저장할 수 있다. 다양한 데이터의 운용을 위해서, 전자 장치는 호스트의 제어에 따라 데이터를 저장하는 저장 장치를 포함할 수 있다. 저장 장치는 데이터를 저장하는 메모리 장치와 메모리 장치를 제어하는 메모리 컨트롤러를 포함할 수 있다. 메모리 장치는 휘발성 메모리 장치(volatile memory)와 비휘발성 메모리 장치(von volatile memory)로 구분될 수 있다.
전자 장치의 동작 중에 예상하지 못한 전원 꺼짐 문제, 커널 패닉(kernel panic), 어플리케이션 크래쉬(application crash), 시스템 크래쉬(system crash) 등이 발생하는 경우, 저장 장치의 일부 데이터가 손상되는 문제가 발생할 수 있다. 전자 장치는 이러한 상황에 대비하여 저널링(journaling)을 구현할 수 있다. 저널링은 저장 장치에 변경 사항을 반영하기 이전에 메모리 안에 변경 사항을 로깅하여 변경 사항을 추적하기 위한 기술이다.
본 개시의 기술적 사상은 서든 파워 오프(sudden power off), 커널 패닉 등 예상치 못한 이벤트(event)가 발생한 경우에도 메타 데이터와 저널 로그 간의 일관성(consistency)을 보장하기 위한 저장 장치 및 메모리 컨트롤러의 동작 방법을 제공한다.
또한, 본 개시의 기술적 사상은 저널링에 의한 성능 감소를 최소화하고 저장 장치에서 불필요하게 낭비되는 전력을 감소시키기 위한 저장 장치 및 메모리 컨트롤러의 동작 방법을 제공한다.
본 개시의 기술적 사상에 따른 저장 장치는, 호스트로부터 제공되는 쓰기 데이터가 저장된 쓰기 버퍼와, 저널 로그가 저장될 저널 버퍼를 포함하는 비휘발성 메모리 장치, 메타 데이터를 임시 저장하는 휘발성 메모리 장치, 및 쓰기 데이터가 쓰기 버퍼에 저장됨에 응답하여 저널 로그를 저널 버퍼에 저장할 것을 명령하는 저널링 커맨드와 저널 버퍼에 대응되는 물리 어드레스 및 저널 로그를 비휘발성 메모리 장치에 제공하고, 휘발성 메모리 장치에 임시 저장된 메타 데이터를 업데이트하고, 업데이트된 메타 데이터를 저장하도록 휘발성 메모리 장치를 제어하는 메모리 컨트롤러를 포함하고, 저널 로그는, 호스트로부터 제공되는 논리 어드레스와 물리 어드레스 간의 맵핑 정보에 대한 업데이트 정보를 나타내는 데이터이다.
또한, 본 개시의 기술적 사상에 따른 저장 장치는, 호스트로부터 제공되는 쓰기 데이터가 저장된 제1 메모리 영역과 저널 로그가 저장될 제2 메모리 영역 및 쓰기 데이터에 대한 메타 데이터가 저장된 제3 메모리 영역을 포함하는 비휘발성 저장 장치, 메타 데이터를 임시 저장하는 휘발성 메모리 장치, 및 쓰기 데이터가 제1 메모리 영역에 저장됨에 응답하여 저널 로그를 저장할 것을 명령하는 제1 저널링 커맨드와 제2 메모리 영역에 대응되는 물리 어드레스 및 저널 로그를 비휘발성 저장 장치에 제공하고, 휘발성 메모리 장치에 임시 저장된 메타 데이터를 업데이트하고, 업데이트된 메타 데이터를 저장하도록 휘발성 메모리 장치를 제어하는 메모리 컨트롤러를 포함하고, 저널 로그는 호스트로부터 제공되는 논리 어드레스와 제1 메모리 영역의 물리 어드레스 간의 맵핑 정보에 대한 업데이트 정보를 나타내는 데이터이다.
또한, 본 개시의 기술적 사상에 따른 메모리 컨트롤러의 동작 방법은, 외부로부터 공급되는 전원에 응답하여, 비휘발성 저장 장치에 저장된 제1 메타 데이터와 저널 버퍼에 저장된 저널 로그를 수신하는 단계, 저널 로그를 기초로 맵핑 정보를 나타내는 맵 데이터와 비휘발성 저장 장치에서 할당된 메모리 영역에 대한 정보를 나타내는 할당 데이터를 포함하는 제2 메타 데이터를 생성하는 단계, 및 제2 메타 데이터를 저장할 것을 명령하는 쓰기 커맨드와, 복수의 메모리 블록들 중 메타 데이터가 저장되는 메모리 블록의 물리 어드레스, 및 제2 메타 데이터를 비휘발성 저장 장치에 제공하는 단계를 포함하고, 저널 로그는 호스트로부터 제공되는 논리 어드레스와 비휘발성 저장 장치에 포함된 복수의 메모리 블록들 중 쓰기 데이터가 저장되는 메모리 블록의 물리 어드레스 간의 맵핑 정보에 대한 업데이트 정보를 나타내는 데이터이다.
본 개시의 기술적 사상에 의하면, 최소한의 메타 데이터에 대한 업데이트 정보를 저널링함으로써, 저널링에 의한 성능 감소가 최소화되고 저장 장치에서 불필요하게 낭비되는 전력이 감소될 수 있다.
또한, 본 개시의 기술적 사상에 의하면, 서든 파워 오프, 커널 패닉 등 예상치 못한 이벤트가 발생한 경우에도 메타 데이터와 저널 로그 간의 일관성이 보장되고 저장 장치의 신뢰성이 개선될 수 있다.
도 1은 본 발명의 일 실시예에 따른 스토리지 시스템을 설명하기 위한 도면이다.
도 2는 스트라이프 및 세그먼트를 설명하기 위한 도면이다.
도 3은 저널 로그 영역 및 메타 데이터 영역을 설명하기 위한 도면이다.
도 4는 본 발명의 일 실시예에 따른 메타 데이터를 설명하기 위한 도면이다.
도 5는 본 발명의 일 실시예에 따른 쓰기 동작, 저널링 동작, 맵 업데이트 동작을 설명하기 위한 도면이다.
도 6은 본 발명의 일 실시예에 따른 체크포인트를 설명하기 위한 도면이다.
도 7은 크러쉬가 발생됨에 따른 저장 장치의 상태를 설명하기 위한 도면이다.
도 8은 본 발명의 일 실시예에 따른 복구 동작을 설명하기 위한 도면이다.
도 9는 저널 로그를 기초로 맵 업데이트, 할당 데이터 및 무효 카운트 데이터를 복구하는 동작을 설명하기 위한 도면이다.
도 10은 본 발명의 다른 실시예에 따른 스토리지 시스템을 설명하기 위한 도면이다.
도 11은 본 발명의 다른 실시예에 따른 메타 데이터를 설명하기 위한 도면이다.
도 12는 본 발명의 다른 실시예에 따른 쓰기 동작, 저널링 동작, 맵 업데이트 동작을 설명하기 위한 도면이다.
도 13은 쓰기 버퍼에 저장된 쓰기 데이터를 플러쉬하는 동작을 설명하기 위한 도면이다.
도 14는 메모리 컨트롤러의 제1 동작 방법을 설명하기 위한 흐름도이다.
도 15는 메모리 컨트롤러의 제2 동작 방법을 설명하기 위한 흐름도이다.
이하, 첨부한 도면을 참조하여 본 발명의 실시예에 대해 상세히 설명한다.
도 1은 본 발명의 일 실시예에 따른 스토리지 시스템을 설명하기 위한 도면이다.
도 1을 참조하면, 스토리지 시스템은 저장 장치(1000)와 호스트(2000)를 포함할 수 있다.
저장 장치(1000)는 호스트(2000)의 요청에 따라 데이터를 저장하는 장치일 수 있다. 저장 장치(1000)는 메모리 컨트롤러(100), 비휘발성 저장 장치(200), 및 휘발성 메모리 장치(300)를 포함할 수 있다.
메모리 컨트롤러(100)는 저장 장치(1000)의 전반적인 동작을 제어할 수 있다. 전원이 외부로부터 저장 장치(1000)에 인가되면, 메모리 컨트롤러(100)는 비휘발성 저장 장치(200)에 저장된 스토리지 오퍼레이팅 시스템(storage operating system)을 실행할 수 있다.
메모리 컨트롤러(100)는 프로세서(processor)로 구현될 수 있다. 프로세서로 구현되는 메모리 컨트롤러(100)는 비휘발성 저장 장치(200)로 제공되는 데이터의 에러 정정 인코딩을 수행하여, 패리티(parity) 비트가 부가된 데이터를 생성할 수 있다. 패리티 비트(미도시)는 비휘발성 저장 장치(200)에 저장될 수 있다. 에러 정정 회로(130)는 프로그램 동작에서 비휘발성 저장 장치(200)로 프로그램될 데이터의 에러 정정 코드 값을 계산할 수 있다. 메모리 컨트롤러(100)는 비휘발성 저장 장치(200)로부터 출력된 데이터에 대하여 에러 정정 디코딩을 수행할 수 있으며, 이때 패리티(parity)를 사용하여 에러를 정정할 수 있다. 메모리 컨트롤러(100)는 리드 동작에서 비휘발성 저장 장치(200)로부터 리드된 데이터를 에러 정정 코드 값에 근거로 하여 에러 정정 동작을 수행할 수 있다. 메모리 컨트롤러(100)는 페일된 데이터의 복원 동작에서 비휘발성 저장 장치(200)로부터 복원된 데이터의 에러 정정 동작을 수행할 수 있다.
메모리 컨트롤러(100)는 호스트(2000)의 쓰기 요청, 리드 요청, 및 소거 요청에 응답하여 프로그램 동작(또는 쓰기 동작), 리드 동작 및 소거 동작을 각각 수행하도록 비휘발성 저장 장치(200) 또는 휘발성 메모리 장치(300)를 제어할 수 있다.
프로그램 동작 시, 메모리 컨트롤러(100)는 프로그램 커맨드, 물리 어드레스, 및 쓰기 데이터를 비휘발성 저장 장치(200)에 제공할 수 있다.
일 실시예에서, 프로그램 동작 시, 메모리 컨트롤러(100)는 프로그램 커맨드, 물리 어드레스를 비휘발성 저장 장치(200)에 제공할 수 있다. 그리고, 메모리 컨트롤러(100)는 휘발성 메모리 장치(300)에 임시 저장된 데이터를 비휘발성 저장 장치(200)에 플러쉬(flush)하도록 플러쉬 커맨드(flush command) 및 어드레스를 휘발성 메모리 장치(300)에 제공할 수 있다. 휘발성 메모리 장치(300)에 임시 저장된 데이터가 비휘발성 저장 장치(200)에 제공되면, 휘발성 메모리 장치(300)에 임시 저장된 데이터는 릴리즈될 수 있다.
리드 동작 시, 메모리 컨트롤러(100)는 리드 커맨드 및 물리 어드레스를 비휘발성 저장 장치(200)에 제공할 수 있다.
소거 동작 시, 메모리 컨트롤러(100)는 트림 커맨드 및 물리 어드레스를 비휘발성 저장 장치(200)에 제공할 수 있다.
메모리 컨트롤러(100)는 호스트(2000)로부터 제공된 요청과 무관하게 자체적으로 생성한 커맨드, 어드레스, 및 데이터를 비휘발성 저장 장치(200)에 전송할 수 있다. 예를 들면, 메모리 컨트롤러(100)는 배경 동작을 수행하기 위한 커맨드, 어드레스, 및 데이터를 생성할 수 있다. 그리고, 메모리 컨트롤러(100)는 커맨드, 어드레스, 및 데이터를 비휘발성 저장 장치(200)로 제공할 수 있다.
배경 동작에는, 예를 들면, 데이터 복구(rebuild), 가비지 컬렉션(garbage collection) 등이 있을 수 있다. 예를 들면, 가비지 컬렉션은 메모리 블록들 중 유효 데이터를 프리 블록(free block)에 복사하고, 무효 데이터를 소거하는 동작일 수 있다.
일 실시예에서, 메모리 컨트롤러(100)는, 논리적으로 하나의 비휘발성 저장 장치(200)로 운용되는 복수의 비휘발성 저장 장치(200)들을 제어할 수 있다.
일 실시예에서, 메모리 컨트롤러(100)는, 쓰기 데이터가 비휘발성 저장 장치(200)에 제공되면, 쓰기 데이터에 대한 메타 데이터를 업데이트할 수 있다. 메모리 컨트롤러(100)는 업데이트된 메타 데이터를 저장하도록 휘발성 메모리 장치(300)를 제어할 수 있다. 메타 데이터는 비휘발성 저장 장치(200)에 저장되어 있을 수 있다. 부팅 시, 메모리 컨트롤러(100)는 비휘발성 저장 장치(200)에 저장된 메타 데이터를 휘발성 메모리 장치(300)에 로드할 수 있다. 휘발성 메모리 장치(300)에 임시 저장된 메타 데이터가 메모리 컨트롤러(100)에 의해 업데이트될 수 있다. 업데이트된 메타 데이터는 비휘발성 저장 장치(200)에 저장될 수 있다. 실시예에서 메타 데이터는 대표 메타 데이터와 연관 메타 데이터로 구분될 수 있다. 이는 도 6 및 도 13에 도시된 바와 같다.
일 실시예에서, 메모리 컨트롤러(100)는 메타 데이터에 대한 업데이트 정보를 저널링(journaling)할 수 있다. 메모리 컨트롤러(100)는 메타 데이터의 변경점인 저널 로그를 저장하도록 비휘발성 저장 장치(200)를 제어할 수 있다.
메모리 컨트롤러(100)는 저널링 관리부(101), 업데이트 관리부(102), 및 동작 제어부(103)를 포함할 수 있다.
저널링 관리부(101)는 쓰기 데이터가 비휘발성 저장 장치(200)에 저장됨에 응답하여 저널 로그를 생성할 수 있다. 저널 로그는 논리 어드레스와 물리 어드레스 간의 맵핑 정보에 대한 업데이트 정보를 나타내는 데이터일 수 있다.
저널링 관리부(101)는, 저널 로그가 비휘발성 저장 장치(200)에서 할당된 메모리 영역에 모두 저장되면, 저널링 관리부(101)는 체크포인트를 개시(triggering)할 수 있다. 체크포인트는 비휘발성 저장 장치(200)에서 저널 로그가 저장되는 메모리 영역을 확보하고, 업데이트된 메타 데이터를 비휘발성 저장 장치(200)에 저장하기 위한 동작일 수 있다.
업데이트 관리부(102)는 휘발성 메모리 장치(300)에 임시 저장된 메타 데이터를 획득하고, 저널 로그를 기초로 메타 데이터를 업데이트할 수 있다.
업데이트 관리부(102)는, 부팅 시, 비휘발성 저장 장치(200)에 유효한 저널 로그가 저장되어 있는지 여부에 따라 메타 데이터를 업데이트할 수 있다.
동작 제어부(103)는 노멀 동작(normal operation)을 수행할 것을 명령하는 제1 동작 커맨드, 어드레스를 생성하고 제1 동작 커맨드 및 어드레스를 비휘발성 저장 장치(200)에 제공할 수 있다. 여기서, 노멀 동작은, 전술한 쓰기 동작, 리드 동작 또는 소거 동작일 수 있고, 제1 동작 커맨드는 프로그램 커맨드, 리드 커맨드 또는 트림 커맨드일 수 있다.
동작 제어부(103)는 배경 동작을 수행할 것을 명령하는 제2 동작 커맨드 및 어드레스를 생성하고, 제2 동작 커맨드 및 어드레스를 비휘발성 저장 장치(200)에 제공할 수 있다. 배경 동작은, 예를 들면, 가비지 컬렉션일 수 있다.
동작 제어부(103)는 휘발성 메모리 장치(300)를 제어하기 위한 제3 동작 커맨드, 어드레스를 생성하고, 제3 동작 커맨드 및 어드레스를 비휘발성 저장 장치(200)에 제공할 수 있다. 여기서, 제3 동작 커맨드는 라이트 커맨드, 리드 커맨드일 수 있다. 일 실시예에서, 동작 제어부(103)는, 업데이트된 메타 데이터를 저장하기 위해, 업데이트된 메타 데이터, 라이트 커맨드 및 어드레스를 휘발성 메모리 장치(300)에 제공할 수 있다. 다른 실시예에서, 동작 제어부(103)는, 메타 데이터를 획득하기 위해, 리드 커맨드 및 어드레스를 휘발성 메모리 장치(300)에 제공할 수 있다.
동작 제어부(103)는 저널 로그를 저장할 것을 명령하는 제1 저널링 커맨드 및 비휘발성 저장 장치(200)에서 저널 로그가 저장될 메모리 영역의 물리 어드레스를 생성할 수 있다. 동작 제어부(103)는 저널링 관리부(101)로부터 수신된 저널 로그, 제1 저널링 커맨드 및 물리 어드레스를 비휘발성 저장 장치(200)에 제공할 수 있다.
동작 제어부(103)는 저널 로그를 삭제할 것을 명령하는 제2 저널링 커맨드 및 비휘발성 저장 장치(200)에서 저널 로그가 저장된 메모리 영역의 물리 어드레스를 생성할 수 있다. 동작 제어부(103)는 제2 저널링 커맨드 및 물리 어드레스를 비휘발성 저장 장치(200)에 제공할 수 있다.
비휘발성 저장 장치(200)는 메모리 컨트롤러(100)의 제어에 응답하여 동작할 수 있다. 구체적으로, 비휘발성 저장 장치(200)는 메모리 컨트롤러(100)로부터 커맨드 및 어드레스를 수신하고, 메모리 셀들(미도시) 중 어드레스에 의해 선택된 메모리 셀을 액세스할 수 있다. 비휘발성 저장 장치(200)는 어드레스에 의해 선택된 메모리 셀에 대해 커맨드가 지시하는 동작을 수행할 수 있다.
커맨드는, 예를 들어 프로그램 커맨드, 리드 커맨드, 또는 트림 커맨드일 수 있고, 커맨드가 지시하는 동작은 예를 들어, 프로그램 동작(또는 쓰기 동작), 리드 동작, 또는 소거 동작일 수 있다.
프로그램 동작은, 비휘발성 저장 장치(200)가 메모리 컨트롤러(100)의 제어에 응답하여 호스트(2000)로부터 제공된 데이터를 저장하는 동작일 수 있다. 리드 동작은 비휘발성 저장 장치(200)가 메모리 컨트롤러(100)의 제어에 응답하여 비휘발성 저장 장치(200)에 저장된 리드 데이터를 읽는 동작일 수 있다. 소거 동작은 비휘발성 저장 장치(200)가 메모리 컨트롤러(100)의 제어에 응답하여 메모리 장치에 저장된 데이터를 소거하는 동작일 수 있다.
비휘발성 저장 장치는, 예를 들어, 플래시 메모리(flash memory) 기반 저장 장치일 수 있다. 플래시 메모리에는, 예를 들어 낸드 플래시 메모리(NAND flash memory), 노어 플래시 메모리(NOR flash memory) 등이 포함될 수 있다. 플래시 메모리 기반 저장 장치에는, 예를 들어 SSD (Solid State Drive) 등이 포함될 수 있다.
복수의 비휘발성 저장 장치(200)들은 논리적으로 하나의 메모리 장치로 동작하는 RAID(redundant array of independent disks 또는 redundant array of inexpensive disks) 방식으로 동작할 수 있다.
휘발성 메모리 장치(300)는 전원으로부터 전력을 공급받는 동안에만 호스트(2000)로부터 제공된 데이터 또는 비휘발성 저장 장치(200)로부터 제공된 데이터를 임시 저장할 수 있다. 휘발성 메모리 장치(300)는 버퍼 메모리로서 메모리 컨트롤러(100)에 포함되거나 메모리 컨트롤러(100) 외부에 배치될 수 있다. 예를 들면, 휘발성 메모리 장치에는 DRAM, SRAM 등이 포함될 수 있다.
휘발성 메모리 장치(300)는 메모리 컨트롤러(100)의 플러쉬 커맨드에 응답하여 임시 저장된 데이터를 비휘발성 저장 장치(200)에 플러쉬할 수 있다.
휘발성 메모리 장치(300)는 데이터 버퍼(310)와 메타 데이터 버퍼(320)를 포함할 수 있다.
데이터 버퍼(310)는 호스트(2000)로부터 제공되는 쓰기 데이터를 임시 저장할 수 있다. 또는 데이터 버퍼(310)는 비휘발성 저장 장치(200)로부터 제공되는 리드 데이터를 임시 저장할 수 있다.
메타 데이터 버퍼(320)는 메타 데이터를 임시 저장할 수 있다. 일 실시예에서, 메타 데이터 버퍼(320)는, 부팅 시, 비휘발성 저장 장치(200)로부터 제공되는 메타 데이터를 임시 저장할 수 있다.
호스트(2000)는 인터페이스(미도시)를 통하여 저장 장치(1000)와 통신할 수 있다.
일 실시예에서, 호스트(2000)는 저장 장치(1000)에 데이터를 저장할 것을 요청하는 쓰기 요청을 저장 장치(1000)에 제공할 수 있다. 또한, 호스트(2000)는 쓰기 요청, 데이터, 및 데이터를 식별하기 위한 논리 어드레스를 저장 장치(1000)에 제공할 수 있다. 저장 장치(1000)는 호스트(2000)로부터 제공된 쓰기 요청에 응답하여, 호스트(2000)가 제공한 데이터 및 메타 데이터를 포함하는 쓰기 데이터를 비휘발성 저장 장치(200)에 저장하고, 저장이 완료되었다는 응답을 호스트(2000)에 제공할 수 있다.
도 2는 스트라이프 및 세그먼트를 설명하기 위한 도면이다.
도 1 및 도 2를 참조하면, 복수의 비휘발성 저장 장치들(200_1~200_n) 각각은 개별 인터페이스를 통해 메모리 컨트롤러(100)와 통신할 수 있다.
복수의 비휘발성 저장 장치들(200_1~200_n) 각각은, 복수의 메모리 블록들(BLK0~BLKm)을 포함할 수 있다. 메모리 블록은 유저 블록 또는 시스템 블록일 수 있다. 유저 블록은 호스트로부터 제공되는 데이터 또는 호스트에 제공될 데이터를 저장하는 메모리 블록일 수 있다. 시스템 블록은 메타 데이터 또는 저널 로그를 저장하는 메모리 블록일 수 있다.
복수의 비휘발성 저장 장치들(200_1~200_n)은 하나의 메모리 장치로 논리적으로 동작할 수 있다. 하나의 메모리 장치로 논리적으로 동작하는 복수의 비휘발성 저장 장치들(200_1~200_n)은 호스트로부터 제공되는 데이터가 저장되는 제1 메모리 영역으로 운용되는 비휘발성 저장 장치와 메타 데이터 및 저널 로그가 저장되는 메모리 영역들로 운용되는 비휘발성 저장 장치로 구분될 수 있다. 예를 들면, 제1 메모리 영역은 1번 비휘발성 저장 장치(200_1) 내지 n-1번 비휘발성 저장 장치에 포함된 복수의 메모리 블록들(BLK0~BLKm)에 대응될 수 있다. 예를 들면, n번 비휘발성 저장 장치(200_n)는 메타 데이터 및 저널 로그가 저장되는 메모리 영역들로 동작할 수 있다. 이 경우, n번 비휘발성 저장 장치(200_n)에 포함된 복수의 메모리 블록들(BLK0~BLKm) 중 일부 메모리 블록들은 저널 로그가 저장되는 제2 메모리 영역에 대응되고, 나머지 메모리 블록들은 메타 데이터가 저장되는 제3 메모리 영역에 대응될 수 있다.
스트라이프(stripe; STRP)는 복수의 비휘발성 저장 장치들(200_1~200_n)에서 선택된 메모리 블록의 집합일 수 있다. 즉, 하나의 스트라이프는 각 비휘발성 저장 장치에 포함된 적어도 하나의 메모리 블록이 하나의 메모리 블록으로 운용되는 논리적 그룹일 수 있다. 예를 들면, 0번 스트라이프(STRP0)는 1번 비휘발성 저장 장치(200_1)에 포함되는 0번 메모리 블록(BLK0) 내지 n번 비휘발성 저장 장치(200_n)에 포함되는 0번 메모리 블록(BLK0)들로 구성될 수 있다. 예를 들면, 1번 스트라이프(STRP1)는 1번 비휘발성 저장 장치(200_1)에 포함되는 1번 메모리 블록(BLK1) 내지 n번 비휘발성 저장 장치(200_n)에 포함되는 1번 메모리 블록(BLK1)들로 구성될 수 있다. 마찬가지로, m번 스트라이프(STRPm)는 복수의 비휘발성 저장 장치들(200_1~200_n) 각각에 포함된 m번 메모리 블록(BLKm)들로 구성될 수 있다. 하나의 스트라이프에 포함된 메모리 블록들은 물리적으로 서로 다른 메모리 블록이지만, 논리적으로 하나의 메모리 블록처럼 동작할 수 있다. 즉, 하나의 스트라이프에 포함된 메모리 블록들에는 데이터가 서로 동시에 기입될 수 있다.
하나의 세그먼트(SEG)는 연속된 스트라이프들의 집합일 수 있다. 하나의 세그먼트(SEG)에 포함되는 스트라이프들의 개수는 저장 장치(1000)가 출하되기 전에 미리 설정될 수 있다. 예를 들면, 하나의 세그먼트(SEG)는 0번 스트라이프(STRP0) 내지 m번 스트라이프(STRPm)로 논리적으로 구성될 수 있다.
도 3은 저널 로그 영역 및 메타 데이터 영역을 설명하기 위한 도면이다.
도 3에 도시된 실시예를 설명함에 있어서, n번 비휘발성 저장 장치(200_n)가 메타 데이터 및 저널 로그가 저장되는 메모리 영역들로 운용되는 것을 가정한다.
도 2 및 도 3을 참조하면, n번 비휘발성 저장 장치(200_n)의 제2 메모리 영역(201)은 저널 로그가 저장되는 메모리 영역일 수 있다. 제2 메모리 영역(201)은 n번 비휘발성 저장 장치(200_n)에 포함된 복수의 메모리 블록들(BLK0~BLKm) 중 일부 메모리 블록들에 대응될 수 있다. 제2 메모리 영역(201)은 복수의 저널 엔트리들(JE1~JE4)로 구성될 수 있다.
n번 비휘발성 저장 장치(200_n)의 제3 메모리 영역(202)은 메타 데이터(META DATA)가 저장되는 메모리 영역일 수 있다. 제3 메모리 영역(202)은 n번 비휘발성 저장 장치(200_n)에 포함된 복수의 메모리 블록들(BLK0~BLKm) 중 제2 메모리 영역(201)을 제외한 나머지 메모리 블록들에 대응될 수 있다.
도 4는 본 발명의 일 실시예에 따른 메타 데이터를 설명하기 위한 도면이다.
도 4를 참조하면, 메타 데이터(META DATA)는 맵 데이터(BLOCK MAP), 제1 할당 데이터(SEGMENT VALID BITMAP), 제2 할당 데이터(STRIPE VALID BITMAP) 및 무효 카운트 데이터(INVALID COUNT ARRAY)를 포함할 수 있다.
맵 데이터(BLOCK MAP)는 논리 어드레스(LBA)와 물리 어드레스(PBA) 간의 맵핑 정보를 나타내는 데이터일 수 있다. 맵 데이터(BLOCK MAP)는 논리-물리 테이블로 구현될 수 있다. 물리 어드레스(PBA)는 비휘발성 저장 장치(200)에 포함된 복수의 메모리 블록들(BLK0~BLKm) 중 선택된 메모리 블록의 어드레스일 수 있다. 물리 어드레스(PBA)는 스트라이프 정보(LSID)와 오프셋 정보(OFFSET)로 구성될 수 있다. 스트라이프 정보(LSID)는 스트라이프의 번호를 가리키는 정보일 수 있다. 예를 들면, 스트라이프 정보(LSID)에 의한 값이 0이면, 이는 0번 스트라이프(STRP0)를 가리킬 수 있다. 오프셋 정보(OFFSET)는 스트라이프에 포함된 메모리 블록들 중 쓰기 데이터가 마지막으로 저장된 메모리 블록의 번호를 가리키는 정보일 수 있다. 예를 들면, 스트라이프 정보(LSID)에 의한 값이 0이고 오프셋 정보(OFFSET)에 의한 값이 0이면, 물리 어드레스(PBA)는 1번 비휘발성 저장 장치(200_1)에 포함된 0번 메모리 블록(BLK0)을 나타낼 수 있다.
제1 할당 데이터(SEGMENT VALID BITMAP)는 복수의 세그먼트들에 대한 할당 여부를 나타내는 데이터일 수 있다. 실시예에서, 제1 할당 데이터(SEGMENT VALID BITMAP)는 각 세그먼트마다(SEGMENT ID) 참(TRUE) 또는 거짓(FLASE)으로 표시된 비트맵으로 구현될 수 있다. 이 경우, 참(TRUE)은 해당 세그먼트가 할당됨을 가리킬 수 있다. 예를 들면, 참(TRUE)으로 표시된 0번 세그먼트(SEG0)가 할당된 상태이고, 거짓(FLASE)으로 표시된 1번 세그먼트(SEG1) 및 2번 세그먼트(SEG2)는 할당되지 않은 상태일 수 있다. 하지만, 이에 한정되는 것은 아니다.
제2 할당 데이터(STRIPE VALID BITMAP)는 할당된 세그먼트에 포함된 복수의 스트라이프들에 대한 할당 여부를 나타내는 데이터일 수 있다. 실시예에서, 제2 할당 데이터(STRIPE VALID BITMAP)는 각 스트라이프마다(STRIPE ID) 참(TRUE) 또는 거짓(FLASE)으로 표시된 비트맵으로 구현될 수 있다. 이 경우, 참(TRUE)은 해당 세그먼트가 할당됨을 가리킬 수 있으나, 이에 한정되는 것은 아니다.
무효 카운트 데이터(INVALID COUNT ARRAY)는 무효 카운트를 나타내는 데이터일 수 있다. 무효 카운트는 비휘발성 저장 장치(200)에 저장된 데이터가 무효로 처리된 횟수일 수 있다.
맵 데이터(BLOCK MAP)가 변경됨에 따라 제1 할당 데이터(SEGMENT VALID BITMAP), 제2 할당 데이터(STRIPE VALID BITMAP) 및 무효 카운트 데이터(INVALID COUNT ARRAY)가 변경될 수 있다. 이 경우, 맵 데이터(BLOCK MAP)는 제1 할당 데이터(SEGMENT VALID BITMAP), 제2 할당 데이터(STRIPE VALID BITMAP) 및 무효 카운트 데이터(INVALID COUNT ARRAY)와 밀접하게 관련되어 있다. 즉, 맵 데이터(BLOCK MAP)는 대표 메타 데이터일 수 있다. 그리고, 연관 메타 데이터는 제1 할당 데이터(SEGMENT VALID BITMAP), 제2 할당 데이터(STRIPE VALID BITMAP) 및 무효 카운트 데이터(INVALID COUNT ARRAY)를 포함할 수 있다.
도 5는 본 발명의 일 실시예에 따른 쓰기 동작, 저널링 동작, 맵 업데이트 동작을 설명하기 위한 도면이다.
도 5에 도시된 실시예를 설명함에 있어서, 0번 물리 어드레스(PBA0) 내지 n번 물리 어드레스(PBAn)를 갖는 메모리 블록들은 전술한 제1 메모리 영역의 0번 스트라이프(STRP0)에 포함되는 것으로 가정한다.
도 1 및 도 5를 참조하면, 메모리 컨트롤러(100)는 0번 논리 어드레스(LBA0)에 대응되는 쓰기 데이터(DATA1)를 데이터 버퍼(310)에 임시 저장할 수 있다. 메모리 컨트롤러(100)는 0번 논리 어드레스(LBA0)를 0번 물리 어드레스(PBA0)로 변환할 수 있다. 0번 물리 어드레스(PBA0)를 갖는 메모리 블록에 데이터가 저장되어 있지 않으므로, 메모리 컨트롤러(100)는 0번 스트라이프(STRP0)의 할당 정보(VALID)를 참(TRUE)으로 표시하고 0의 값을 지시하는 오프셋 정보(OFFSET)를 생성함으로써 메모리 블록을 할당할 수 있다. 이때, 스트라이프의 번호가 각 세그먼트에서의 첫 번째 스트라이프(예를 들면, 0번 세그먼트(SEG0)에 포함된 0번 스트라이프(STRP0))인 경우, 메모리 컨트롤러(100)는 해당 세그먼트의 할당 정보(VALID)를 참(TRUE)으로 표시할 수 있다. 메모리 컨트롤러(100)는 쓰기 데이터(DATA1), 0번 물리 어드레스(PBA0) 및 쓰기 커맨드를 비휘발성 저장 장치(200)에 제공할 수 있다. 쓰기 데이터(DATA1)는 0번 물리 어드레스(PBA0)를 갖는 메모리 블록에 저장될 수 있다. 메모리 컨트롤러(100)는 수정된(modified) 메타 데이터, 어드레스, 라이트 커맨드를 휘발성 메모리 장치(300)에 제공함으로써 메타 데이터 버퍼(320)에 임시 저장된 메타 데이터를 업데이트할 수 있다. 이 경우, 수정된 메타 데이터는, 0번 논리 어드레스(LBA0)와 0번 물리 어드레스(PBA0) 간의 맵핑 정보가 반영된 맵 데이터(BLOCK MAP), 변경된 0번 세그먼트 (SEG0)의 할당 정보(VALID)가 반영된 제1 할당 데이터(SEGMENT VALID BITMAP) 및 변경된 0번 스트라이프(STRP0)의 할당 정보(VALID)가 반영된 제2 할당 데이터(STRIPE VALID BITMAP)를 포함할 수 있다. 메모리 컨트롤러(100)는 쓰기 데이터(DATA1)가 제1 메모리 영역에 저장됨에 응답하여 저널 로그(JLOG1)를 생성할 수 있다. 메모리 컨트롤러(100)는 저널 로그(JLOG1), 저널 로그(JLOG1)가 저장될 제2 메모리 영역(201)의 물리 어드레스 및 제1 저널링 커맨드를 비휘발성 저장 장치(200)에 제공할 수 있다. 저널 로그(JLOG1)는 제2 메모리 영역(201)의 제1 저널 엔트리(JE1)에 저장되고, 0번 논리 어드레스(LBA0)와 0번 물리 어드레스(PBA0) 간의 맵핑 정보를 나타낼 수 있다.
1번 논리 어드레스(LBA1)에 대응되는 쓰기 데이터(DATA2)가 데이터 버퍼(310)에 임시 저장될 수 있다. 1번 논리 어드레스(LBA1)는 1번 물리 어드레스(PBA1)로 변환될 수 있다. 메모리 컨트롤러(100)는 오프셋 정보(OFFSET)의 값을 0에서 1로 변경함으로써 1번 물리 어드레스(PBA1)를 갖는 메모리 블록을 할당할 수 있다. 쓰기 데이터(DATA2)는 1번 물리 어드레스(PBA1)를 갖는 메모리 블록에 저장될 수 있다. 메모리 컨트롤러(100)는 메타 데이터를 업데이트할 수 있다. 이 경우, 맵 데이터(BLOCK MAP)에는 1번 논리 어드레스(LBA1)와 1번 물리 어드레스(PBA1) 간의 맵핑 정보가 반영될 수 있다. 메모리 컨트롤러(100)에 의해 생성된 저널 로그(JLOG2)는 제2 저널 엔트리(JE2)에 저장되고, 1번 논리 어드레스(LBA1)와 1번 물리 어드레스(PBA1) 간의 맵핑 정보를 나타낼 수 있다.
0번 논리 어드레스(LBA0)에 대응되는 쓰기 데이터(DATA3)가 데이터 버퍼(310)에 임시 저장되고 0번 논리 어드레스(LBA0)가 물리 어드레스로 변환될 수 있다. 비휘발성 저장 장치(200)에서 덮어쓰기가 불가능하므로, 0번 논리 어드레스(LBA0)에서 변환된 물리 어드레스는 2번 물리 어드레스(PBA2)일 수 있다. 2번 물리 어드레스(PBA2)를 갖는 메모리 블록이 할당될 수 있다. 비휘발성 저장 장치(200)는 0번 물리 어드레스(PBA0)를 갖는 메모리 블록에 저장된 쓰기 데이터(DATA1)를 무효 처리(invalid)하고, 쓰기 데이터(DATA3)를 2번 물리 어드레스(PBA2)를 갖는 메모리 블록에 저장할 수 있다. 메모리 컨트롤러(100)는 0번 스트라이프(STRP0)가 포함된 0번 세그먼트(SEG0)의 무효 카운트를 C1에서 C4로 변경할 수 있다. C4는 C1보다 큰 자연수일 수 있다. 맵 데이터(BLOCK MAP)에는 0번 논리 어드레스(LBA0)와 2번 물리 어드레스(PBA2) 간의 맵핑 정보가 반영되고, 무효 카운트 데이터(INVALID COUNT ARRAY)에는 0번 세그먼트(SEG0)의 무효 카운트가 C4로 변경된 정보가 반영될 수 있다. 제3 저널 엔트리(JE3)에 저장된 저널 로그(JLOG3)는 0번 논리 어드레스(LBA0)와 2번 물리 어드레스(PBA2) 간의 맵핑 정보를 나타낼 수 있다.
2번 논리 어드레스(LBA2)에 대응되는 쓰기 데이터(DATA4)는 데이터 버퍼(310)에 임시 저장되고, 2번 논리 어드레스(LBA2)를 3번 물리 어드레스(PBA3)로 변환되며, 3번 물리 어드레스(PBA3)를 갖는 메모리 블록이 할당될 수 있다. 쓰기 데이터(DATA4)가 3번 물리 어드레스(PBA3)를 갖는 메모리 블록에 저장될 수 있다. 맵 데이터(BLOCK MAP)에는 2번 논리 어드레스(LBA2)와 3번 물리 어드레스(PBA3) 간의 맵핑 정보가 반영될 수 있다. 저널 로그(JLOG4)는 2번 논리 어드레스(LBA2)와 3번 물리 어드레스(PBA3) 간의 맵핑 정보를 나타낼 수 있다.
메모리 컨트롤러(100)는 각 쓰기 데이터에 대응되는 패리티(미도시)를 각 쓰기 데이터와 함께 저장하도록 비휘발성 저장 장치(200)를 제어할 수 있다.
전술한 바에 의하면, 대표 메타 데이터에 해당되는 맵 데이터의 업데이트 정보를 저널링함으로써, 저널링에 의한 성능 감소가 최소화되고 저장 장치에서 불필요하게 낭비되는 전력이 감소될 수 있다.
저널 로그(JLOG1~JLOG4)가 복수의 저널 엔트리들(JE1~JE4)에 가득 차면, 복수의 저널 엔트리들(JE1~JE4)를 비우고 메타 데이터 버퍼(320)에 임시 저장된 메타 데이터를 비휘발성 저장 장치(200)에 영구적으로 저장할 필요가 있다. 저널 엔트리를 비우고 메타 데이터를 영구 저장하는 동작은 체크포인트로 정의될 수 있다.
도 6은 본 발명의 일 실시예에 따른 체크포인트를 설명하기 위한 도면이다.
도 6을 참조하면, 제2 메모리 영역(201)의 저장 공간은 복수의 저널 엔트리들(JE1~JE4)에 대응될 수 있다. 저널 로그(JLOG1~JLOG4)가 복수의 저널 엔트리들(JE1~JE4)에 가득 차면, 체크포인트가 개시(CHECKPOINT TRIGGER)될 수 있다.
일 실시예에서, 제2 메모리 영역(201)의 크기에 해당하는 저널 로그가 제2 메모리 영역(201)에 저장되면, 메모리 컨트롤러(100)는 플러쉬 커맨드를 휘발성 메모리 장치(300)에 제공할 수 있다. 플러쉬 커맨드는 업데이트된 메타 데이터를 비휘발성 저장 장치(200)에 플러쉬할 것을 명령하는 커맨드일 수 있다. 업데이트된 맵 데이터(BLOCK MAP), 업데이트된 제1 할당 데이터(SEGMENT VALID BITMAP), 업데이트된 제2 할당 데이터(STRIPE VALID BITMAP) 및 업데이트된 무효 카운트 데이터(INVALID COUNT ARRAY)는 비휘발성 저장 장치(200)에 제공될 수 있다. 비휘발성 저장 장치(200)는 제3 메모리 영역(202)에 기존에 저장되어 있던 메타 데이터(MEATA DATA)를 무효 처리하고(invalid), 업데이트된 메타 데이터(UPDATAED META DATA)를 제3 메모리 영역(202)에 저장할 수 있다.
일 실시예에서, 업데이트된 메타 데이터(UPDATAED META DATA)가 제3 메모리 영역(202)에 저장되면, 메모리 컨트롤러(100)는 저널 로그를 삭제할 것을 명령하는 제2 저널링 커맨드를 비휘발성 저장 장치(200)에 제공할 수 있다. 비휘발성 저장 장치(200)는 제2 저널링 커맨드에 응답하여 복수의 저널 엔트리들(JE1~JE4)에 저장된 저널 로그(JLOG1~JLOG4)를 삭제(RELEASE)할 수 있다.
도 7은 크러쉬가 발생됨에 따른 저장 장치의 상태를 설명하기 위한 도면이다.
도 7을 참조하면, 쓰기 데이터(DATA1~DATA3)는 제1 메모리 영역에 저장됨에 따라, 메타 데이터(META DATA)가 업데이트될 수 있다. 저널 로그(JLOG1~JLOG3)는 제1 내지 제3 저널 엔트리들(JE1~JE3)에 순차적으로 저장될 수 있다.
쓰기 동작(WRITE OPERATION)과 같은 동작 중에 크래쉬(CRASH)가 발생할 수 있다. 크래쉬(CRASH)는 외부로부터 저장 장치(1000)에 공급되는 전원이 예상하지 못하게 차단되는 서든 파워 오프(sudden power off), 운영 체제가 치명적인 내부 오류를 감지하여 안전하게 복구가 불가능할 때 발생하는 커널 패닉 등의 이벤트를 의미할 수 있다. 크래쉬(CRASH)가 발생하면, 메타 데이터 버퍼(320)에 임시 저장된 메타 데이터는 삭제되거나 손상되지만 비휘발성 저장 장치(200)에 저장된 데이터(DATA1, DATA2, DATA3)는 저장된 상태를 유지할 수 있다.
체크포인트가 아직 수행되지 않은 상태에서 크래쉬(CRASH)가 발생한 경우, 업데이트된 메타 데이터가 비휘발성 저장 장치(200)에 저장되지 못하게 되고, 비휘발성 저장 장치(200)의 성능이 감소될 수 있다.
이러한 문제점을 해결하기 위해서, 크래쉬(CRASH)가 발생한 이후에 업데이트된 메타 데이터를 복구하는 복구 동작이 수행될 필요가 있다.
도 8은 본 발명의 일 실시예에 따른 복구 동작을 설명하기 위한 도면이다.
도 8을 참조하면, 크래쉬(CRASH)가 발생한 이후, 외부로부터 전원이 공급되면, 메모리 컨트롤러(100)는 제2 메모리 영역(201)에 저장된 저널 로그(JLOG1, JLOG2, JLOG3)와 제3 메모리 영역(202)에 저장된 올드 메타 데이터(OLD META DATA)를 리드하도록 비휘발성 저장 장치(200)를 제어할 수 있다. 올드 메타 데이터(OLD META DATA)는 전원이 저장 장치(1000)에 공급되기 전에 비휘발성 저장 장치(200)에 저장된 메타 데이터일 수 있다. 일 실시예에서, 제2 메모리 영역(201)에 저장된 저널 로그(JLOG1, JLOG2, JLOG3)는 복수의 저널 엔트리들(JE1~JE4)의 엔트리 번호가 낮은 순서부터 순차적으로 리드될 수 있다.
저널 로그(JLOG1, JLOG2, JLOG3)는 순차적으로 메타 데이터 버퍼(320)에 로드(load)되고, 올드 메타 데이터(OLD META DATA)도 메타 데이터 버퍼(320)에 로드될 수 있다. 메모리 컨트롤러(100)는 저널 로그(JLOG1, JLOG2, JLOG3)를 기초로 올드 메타 데이터(OLD META DATA)를 업데이트함으로써 메타 데이터를 복구할 수 있다. 복구된 메타 데이터(RESTORED META DATA)는 예를 들면, 복구된 맵 데이터(BLOCK MAP), 복구된 제1 할당 데이터(SEGMENT VALID BITMAP), 복구된 제2 할당 데이터(STRIPE VALID BITMAP) 및 복구된 무효 카운트 데이터(INVALID COUNT ARRAY)를 포함할 수 있다.
메모리 컨트롤러(100)는 복구된 메타 데이터(RESTORED META DATA)를 비휘발성 저장 장치(200)에 플러쉬하도록 휘발성 메모리 장치(300)를 제어할 수 있다. 복구된 메타 데이터(RESTORED META DATA)는 제3 메모리 영역(202)에 저장되고, 올드 메타 데이터(OLD META DATA)는 무효로 처리될 수 있다.
이하에서는 저널 로그를 기초로 메타 데이터를 복구하는 동작을 구체적으로 설명한다.
도 9는 저널 로그를 기초로 맵 업데이트, 할당 데이터 및 무효 카운트 데이터를 복구하는 동작을 설명하기 위한 도면이다.
도 9를 참조하면, 제1 저널 엔트리(JE1)에 저장된 저널 로그(JLOG1)는 0번 논리 어드레스(LBA0)와 0번 물리 어드레스(PBA0) 간의 맵핑 정보를 나타낼 수 있다. 메모리 컨트롤러(100)는 저널 로그(JLOG1)를 이용하여 0번 논리 어드레스(LBA0)와 0번 물리 어드레스(PBA0) 간의 제1 맵핑 정보가 반영된 맵 데이터(BLOCK MAP)를 생성할 수 있다. 0번 물리 어드레스(PBA0)를 갖는 메모리 블록은 0번 스트라이프(STRP0)의 첫 번째 메모리 블록일 수 있다. 이 경우, 0번 스트라이프(STRP0)가 할당될 필요가 있으므로, 메모리 컨트롤러(100)는 0번 스트라이프(STRP0)의 할당 정보(VALID)를 참(TRUE)으로 표시함으로써 제2 할당 데이터(STRIPE VALID BITMAP)를 생성할 수 있다. 메모리 컨트롤러(100)는 값이 0인 오프셋 정보(OFFSET)를 생성할 수 있다. 0번 스트라이프(STRP0)는 0번 세그먼트(SEG0)의 첫 번째 스트라이프일 수 있다. 이 경우, 0번 세그먼트(SEG0)가 할당될 필요가 있으므로, 메모리 컨트롤러(100)는 0번 세그먼트(SEG0)의 할당 정보(VALID)를 참(TRUE)으로 표시함으로써 제1 할당 데이터(SEGMENT VALID BITMAP)를 생성할 수 있다.
제2 저널 엔트리(JE2)에 저장된 저널 로그(JLOG2)는 1번 논리 어드레스(LBA1)와 1번 물리 어드레스(PBA1) 간의 맵핑 정보를 나타낼 수 있다. 이 경우, 1번 논리 어드레스(LBA1)와 1번 물리 어드레스(PBA1) 간의 맵핑 정보가 추가 반영된 맵 데이터(BLOCK MAP)가 생성될 수 있다. 오프셋 정보(OFFSET)는 0에서 1로 변경될 수 있다. 1번 물리 어드레스(PBA1)를 갖는 메모리 블록은 0번 스트라이프(STRP0)의 두 번째 메모리 블록일 수 있다. 이 경우, 0번 스트라이프(STRP0) 및 0번 세그먼트(SEG0)는 이미 할당되어 있으므로, 제1 할당 데이터(SEGMENT VALID BITMAP) 및 제2 할당 데이터(STRIPE VALID BITMAP)는 유지될 수 있다.
제3 저널 엔트리(JE3)에 저장된 저널 로그(JLOG3)는 0번 논리 어드레스(LBA0)와 2번 물리 어드레스(PBA2) 간의 제2 맵핑 정보를 나타낼 수 있다. 제1 맵핑 정보에서 변경된 제2 맵핑 정보를 포함하는 맵 데이터(BLOCK MAP)가 생성될 수 있다. 맵 데이터(BLOCK MAP)에서 0번 논리 어드레스(LBA0)에 맵핑되는 0번 물리 어드레스(PBA0)는 2번 물리 어드레스(PBA2)로 변경될 수 있다. 이 경우, 메모리 컨트롤러(100)는 0번 세그먼트(SEG0)의 무효 카운트를 C1에서 C4로 변경할 수 있다.
전술한 바에 의하면, 예상치 못한 이벤트가 발생한 경우에도 메타 데이터와 저널 로그 간의 일관성이 보장되고 저장 장치의 신뢰성이 개선될 수 있다.
또한 전술한 바에 의하면, 크러쉬 발생 이후에 맵 데이터에 대한 저널 로그만으로 맵 데이터뿐만 아니라, 데이터와 관련성 있는 메타 데이터를 복구함으로써 불필요하게 낭비되는 전력이 감소될 수 있다.
도 10은 본 발명의 다른 실시예에 따른 스토리지 시스템을 설명하기 위한 도면이다.
도 10을 참조하면, 본 발명의 다른 실시예에 따른 스토리지 시스템은 저장 장치(1000')와 호스트(2000)를 포함할 수 있다.
저장 장치(1000')는 메모리 컨트롤러(100), 비휘발성 메모리 장치(200a), 비휘발성 저장 장치(200b), 및 휘발성 메모리 장치(300)를 포함할 수 있다.
메모리 컨트롤러(100) 및 휘발성 메모리 장치(300)는 도 1을 참조하여 전술한 동작을 모두 수행할 수 있다.
비휘발성 메모리 장치(200a)는 쓰기 버퍼(201a) 및 저널 버퍼(202a)를 포함할 수 있다. 예를 들면, 비휘발성 메모리 장치(200a)는 비휘발성 RAM(non-volatile random access memory; NVRAM)으로 구현될 수 있다.
쓰기 버퍼(201a)는, 비휘발성 저장 장치(200)의 제1 메모리 영역과 동일하게, 쓰기 데이터를 저장할 수 있다. 다만, 쓰기 버퍼(201a)는 물리적인 메모리 영역이고, 비휘발성 저장 장치(200)의 제1 메모리 영역은 논리적으로 구현된 영역일 수 있다. 쓰기 버퍼(201a)는 복수의 스트라이프들을 포함할 수 있다.
다른 실시예에서, 동작 제어부(103)는 호스트(2000)로부터 제공된 쓰기 데이터를 쓰기 버퍼(201a)에 저장하도록 비휘발성 메모리 장치(200a)를 제어할 수 있다.
저널 버퍼(202a)는, 도 1에 도시된 비휘발성 저장 장치(200)의 제2 메모리 영역(201)과 동일하게, 저널 로그를 저장할 수 있다. 다만, 저널 버퍼(202a)는 물리적인 메모리 영역이고, 비휘발성 저장 장치(200)의 제2 메모리 영역(201)은 논리적으로 구현된 영역일 수 있다. 저널 버퍼(202a)는 복수의 저널 엔트리들로 구성될 수 있다.
다른 실시예에서, 동작 제어부(103)는 저널링 관리부(101)로부터 제공된 저널 로그를 저널 버퍼(202a)에 저장하도록 비휘발성 메모리 장치(200a)를 제어할 수 있다.
비휘발성 저장 장치(200b)는 쓰기 데이터 및 메타 데이터를 저장할 수 있다.
다른 실시예에서, 비휘발성 저장 장치(200b)는 하나의 저장 장치로 논리적으로 운용될 수 있으며, 쓰기 데이터가 저장되는 제1 메모리 블록 그룹과 메타 데이터가 저장되는 제2 메모리 블록 그룹을 포함할 수 있다. 비휘발성 저장 장치(200b)는 복수의 세그먼트들을 포함할 수 있으며, 각 세그먼트는 복수의 스트라이프들을 포함할 수 있다.
다른 실시예에서, 동작 제어부(103)는 쓰기 버퍼(201a)에 저장된 쓰기 데이터를 비휘발성 저장 장치(200b)에 플러쉬하도록 비휘발성 메모리 장치(200a) 및 비휘발성 저장 장치(200b)를 제어할 수 있다.
다른 실시예에서, 동작 제어부(103)는, 저널 로그가 저널 버퍼(202a)에 모두 저장됨에 응답하여, 메타 데이터 버퍼(320)에 임시 저장된 메타 데이터를 비휘발성 저장 장치(200b)에 플러쉬하도록 휘발성 메모리 장치(300)를 제어할 수 있다.
도 11은 본 발명의 다른 실시예에 따른 메타 데이터를 설명하기 위한 도면이다.
도 11을 참조하면, 본 발명의 다른 실시예에 따른 메타 데이터는 제1 맵 데이터(BLOCK MAP), 제2 맵 데이터(NVM STRIPE MAP), 제1 할당 데이터(SEGMENT VALID BITMAP), 제2 할당 데이터(STRIPE VALID BITMAP), 제3 할당 데이터(WB STRIPE VALID BITMAP) 및 무효 카운트 데이터(INVALID COUNT ARRAY)를 포함할 수 있다.
제1 맵 데이터(BLOCK MAP)는 논리 어드레스(LBA)와 제1 어드레스(VSA) 간의 맵핑 정보를 나타내는 데이터일 수 있다. 제1 어드레스(VSA)는 쓰기 버퍼(201a)의 어드레스일 수 있다. 일 실시예에서, 제1 어드레스(VSA)는 가상의 어드레스로서 제1 스트라이프 정보(VSID)와 오프셋 정보(OFFSET)로 구성될 수 있다. 제1 스트라이프 정보(VSID)는 쓰기 버퍼(201a)에 포함된 복수의 스트라이프들 중 선택된 스트라이프의 번호를 가리키는 정보일 수 있다. 오프셋 정보(OFFSET)는 쓰기 데이터가 마지막으로 저장된 메모리 블록의 번호를 가리키는 정보일 수 있다.
제2 맵 데이터(NVM STRIPE MAP)는 제1 어드레스(VSA)와 제2 어드레스(PBA) 간의 맵핑 정보를 나타내는 데이터일 수 있다. 제2 어드레스(PBA)는 비휘발성 저장 장치(200b)에 포함된 복수의 메모리 블록들 중 선택된 메모리 블록의 물리 어드레스일 수 있다. 제2 어드레스(PBA)는 제2 스트라이프 정보(LSID)와 오프셋 정보(OFFSET)로 구성될 수 있다. 제2 스트라이프 정보(LSID)는 도 2 및 도 4를 참조하여 전술한 바와 동일하다. 제1 어드레스(VSA)의 오프셋 정보(OFFSET)와 제2 어드레스(PBA)의 오프셋 정보(OFFSET)는 서로 동일한 값일 수 있다.
제1 할당 데이터(SEGMENT VALID BITMAP)는 비휘발성 저장 장치(200b)에 포함된 복수의 세그먼트들에 대한 할당 여부를 나타내는 데이터일 수 있다. 제1 할당 데이터(SEGMENT VALID BITMAP)는 도 2 및 도 4를 참조하여 전술한 바와 동일하다.
제2 할당 데이터(STRIPE VALID BITMAP)는 비휘발성 저장 장치(200b)에 포함된 복수의 스트라이프들에 대한 할당 여부를 나타내는 데이터일 수 있다.
일 실시예에서, 비휘발성 저장 장치(200b)가 제1 메모리 블록 그룹을 포함하는 경우, 제1 할당 데이터(SEGMENT VALID BITMAP) 및 제2 할당 데이터(STRIPE VALID BITMAP)는 제1 메모리 블록 그룹에서 할당된 저장 공간에 대한 정보를 나타낼 수 있다.
제3 할당 데이터(WB STRIPE VALID BITMAP)는 쓰기 버퍼(201a)에서 할당된 저장 공간에 대한 정보를 나타내는 데이터일 수 있다. 실시예에서, 제3 할당 데이터(WB STRIPE VALID BITMAP)는 쓰기 버퍼(201a)에 포함된 복수의 스트라이프들에 대한 할당 여부를 나타내는 데이터일 수 있다.
무효 카운트 데이터(INVALID COUNT ARRAY)는 비휘발성 저장 장치(200b)에 저장된 데이터가 무효로 처리된 횟수를 나타내는 데이터일 수 있다. 실시예에서, 무효 카운트 데이터(INVALID COUNT ARRAY)는 비휘발성 저장 장치(200b)에 포함된 제1 메모리 블록 그룹에서 메모리 블록이 무효로 처리된 횟수를 나타내는 데이터일 수 있다.
도 12는 본 발명의 다른 실시예에 따른 쓰기 동작, 저널링 동작, 맵 업데이트 동작을 설명하기 위한 도면이다.
도 12에 도시된 실시예를 설명함에 있어서, 쓰기 버퍼(201a)는 0번 어드레스(VSA0) 내지 4번 어드레스(VSA4)를 갖는 메모리 블록들을 포함하고, 저널 버퍼(202a)는 제1 내지 제4 저널 엔트리들(JE1~JE4)로 구성되는 것으로 가정한다. 그리고, 0번 어드레스(VSA0) 내지 n번 어드레스(VSAn)를 갖는 메모리 블록들은 0번 스트라이프(WBSTRP0)에 포함되는 것으로 가정한다.
도 12를 참조하면, 0번 논리 어드레스(LBA0)에 대응되는 쓰기 데이터(DATA1)는 데이터 버퍼(310)에 임시 저장될 수 있다. 메모리 컨트롤러(100)는 0번 논리 어드레스(LBA0)를 0번 어드레스(VSA0)로 변환할 수 있다. 0번 어드레스(VSA0)는 쓰기 버퍼(201a)의 0번 스트라이프(WBSTRP0)에 포함된 첫 번째 메모리 블록일 수 있다. 메모리 컨트롤러(100)는 0번 스트라이프(WBSTRP0)의 할당 정보(VALID)를 참(TRUE)으로 표시하고 0의 값을 지시하는 오프셋 정보(OFFSET)를 생성함으로써 0번 어드레스(VSA0)를 갖는 메모리 블록을 할당할 수 있다. 쓰기 데이터(DATA1)는 0번 어드레스(VSA0)를 갖는 메모리 블록에 저장될 수 있다. 맵 데이터(BLOCK MAP)에는 0번 논리 어드레스(LBA0)와 0번 어드레스(VSA0) 간의 맵핑 정보가 반영되고, 제3 할당 데이터(WB STRIPE VALID BITMAP)에는 변경된 0번 스트라이프(WBSTRP0)의 할당 정보(VALID)가 반영될 수 있다. 메모리 컨트롤러(100)는, 쓰기 데이터(DATA1)가 쓰기 버퍼(201a)에 저장됨에 응답하여, 저널링 커맨드, 저널 버퍼(202a)에 대응되는 물리 어드레스 및 저널 로그(JLOG1)를 비휘발성 메모리 장치(200a)에 제공할 수 있다. 저널 로그(JLOG1)는 저널 버퍼(202a)의 제1 저널 엔트리(JE1)에 저장되고, 0번 논리 어드레스(LBA0)와 0번 어드레스(VSA0) 간의 맵핑 정보를 나타낼 수 있다.
1번 논리 어드레스(LBA1)는 1번 어드레스(VSA1)에 맵핑될 수 있다. 1번 논리 어드레스(LBA1)에 대응되는 쓰기 데이터(DATA2)는 1번 어드레스(VSA1)를 갖는 메모리 블록에 저장될 수 있다. 오프셋 정보(OFFSET)의 값은 0에서 1로 변경될 수 있다. 맵 데이터(BLOCK MAP)에는 1번 논리 어드레스(LBA1)와 1번 어드레스(VSA1) 간의 맵핑 정보가 반영될 수 있다. 저널 로그(JLOG2)는 제2 저널 엔트리(JE2)에 저장되고, 1번 논리 어드레스(LBA1)와 1번 어드레스(VSA1) 간의 맵핑 정보를 나타낼 수 있다.
0번 논리 어드레스(LBA0)는 2번 어드레스(VSA2)에 맵핑될 수 있다. 0번 논리 어드레스(LBA0)에 대응되는 쓰기 데이터(DATA3)는 2번 어드레스(VSA2)를 갖는 메모리 블록에 저장될 수 있다. 오프셋 정보(OFFSET)의 값은 1에서 2로 변경될 수 있다. 0번 어드레스(VSA0)를 갖는 메모리 블록에 저장된 쓰기 데이터(DATA1)는 무효 처리(invalid)될 수 있다. 맵 데이터(BLOCK MAP)에는 0번 논리 어드레스(LBA0)와 2번 어드레스(VSA2) 간의 맵핑 정보가 반영될 수 있다. 무효 카운트 데이터(INVALID COUNT ARRAY)에는 0번 스트라이프(WBSTRP0)의 무효 카운트가 변경될 수 있다. 제3 저널 엔트리(JE3)에 저장되는 저널 로그(JLOG3)는 0번 논리 어드레스(LBA0)와 2번 어드레스(VSA2) 간의 맵핑 정보를 나타낼 수 있다.
2번 논리 어드레스(LBA2)에 대응되는 쓰기 데이터(DATA4)는 3번 어드레스(VSA3)를 갖는 메모리 블록에 저장될 수 있다. 맵 데이터(BLOCK MAP)에는 2번 논리 어드레스(LBA2)와 3번 어드레스(VSA3) 간의 맵핑 정보가 반영될 수 있다. 제4 저널 엔트리(JE4)에 저장되는 저널 로그(JLOG4)는 2번 논리 어드레스(LBA2)와 3번 어드레스(VSA3) 간의 맵핑 정보를 나타낼 수 있다.
전술한 바에 의하면, 대표 메타 데이터에 해당되는 맵 데이터의 업데이트 정보를 저널링함으로써, 저널링에 의한 성능 감소가 최소화되고 저장 장치에서 불필요하게 낭비되는 전력이 감소될 수 있다.
도 6을 참조하여 전술한 바와 같이, 저널 버퍼(202a)의 크기에 해당하는 저널 로그(JLOG1~JLOG4)가 저널 버퍼(202a)에 저장되면, 체크포인트가 개시될 수 있다. 체크포인트가 개시되면, 메모리 컨트롤러(100)는 업데이트된 메타 데이터를 비휘발성 저장 장치(200b)에 플러쉬할 것을 명령하는 플러쉬 커맨드를 휘발성 메모리 장치(300)에 제공할 수 있다. 그리고, 메모리 컨트롤러(100)는 저널 버퍼(202a)에 저장된 저널 로그(JLOG1~JLOG4)를 릴리즈하도록 비휘발성 메모리 장치(200a)를 제어할 수 있다.
도 13은 쓰기 버퍼에 저장된 쓰기 데이터를 플러쉬하는 동작을 설명하기 위한 도면이다.
도 13에 도시된 실시예를 설명함에 있어서, 비휘발성 저장 장치(200b)는 6개의 비휘발성 저장 장치들(200b_1~200b_6)이 논리적으로 하나의 비휘발성 메모리 장치로 운용되는 것이고, 6개의 비휘발성 저장 장치들(200b_1~200b_6) 각각은 저장 장치로 구현되는 것으로 가정한다.
도 13을 참조하면, 쓰기 버퍼(201a)의 크기에 해당되는 쓰기 데이터(DATA)가 쓰기 버퍼(201a)에 저장되면, 메모리 컨트롤러(100)는 쓰기 버퍼(201a)에 저장된 쓰기 데이터(DATA)를 제1 메모리 블록 그룹에 저장하도록 비휘발성 메모리 장치(200a)를 제어할 수 있다. 여기서, 제1 메모리 블록 그룹은, 예를 들면, 5개의 비휘발성 저장 장치들(200b_1~200b_5) 각각에 포함되고 0번 스트라이프(STRP0)에 포함되는 메모리 블록(BLKO)들을 포함할 수 있다.
실시예에서, 쓰기 버퍼(201a)에 저장된 쓰기 데이터(DATA)가 제1 메모리 블록 그룹에 저장되는 경우, 메모리 컨트롤러(100)는 논리 어드레스(LBA)와 제1 메모리 블록 그룹의 제2 어드레스(PBA) 간의 맵핑 정보에 대한 업데이트 정보를 저널링할 수 있다. 논리 어드레스(LBA)와 제1 메모리 블록 그룹의 물리 어드레스(PBA) 간의 맵핑 정보를 나타내는 맵 데이터는 제1 맵 데이터(BLOCK MAP)과 제2 맵 데이터(NVM STRIPE MAP)일 수 있다. 예를 들면, 논리 어드레스(LBA)와 제1 어드레스(VSA) 간의 맵핑 정보에 대한 업데이트 정보가 저널링 된 후, 제1 어드레스(VSA)와 제1 메모리 블록 그룹의 제2 어드레스(PBA) 간의 맵핑 정보에 대한 업데이트 정보가 저널링될 수 있다.
실시예에서, 쓰기 버퍼(201a)에 저장된 쓰기 데이터(DATA)가 제1 메모리 블록 그룹에 저장되는 경우, 논리 어드레스(LBA)와 제1 어드레스(VSA) 간의 맵핑 정보에 대한 업데이트 정보가 저널링될 수 있다.
메모리 컨트롤러(100)는 쓰기 버퍼(201a)에 저장된 쓰기 데이터(DATA)에 대한 패리티(PARITY)를 생성하고, 패리티(PARITY)를 제2 메모리 블록 그룹에 저장하도록 비휘발성 메모리 장치(200a)를 제어할 수 있다. 여기서, 제2 메모리 블록 그룹은, 예를 들면, 6번 비휘발성 메모리 장치(200b_6)에 포함되고 0번 스트라이프(STRP0)에 포함되는 메모리 블록(BLKO)을 포함할 수 있다.
도 12 및 도 13을 참조하면, 쓰기 버퍼(201a)에 저장된 쓰기 데이터(DATA)가 제1 메모리 블록 그룹에 저장되는 경우, 제2 맵 데이터(NVM STRIPE MAP), 제1 할당 데이터(SEGMENT VALID BITMAP) 및 제2 할당 데이터(STRIPE VALID BITMAP)가 업데이트될 수 있다. 그리고, 체크포인트가 개시될 수 있으며, 제1 맵 데이터(BLOCK MAP), 제2 맵 데이터(NVM STRIPE MAP), 제1 할당 데이터(SEGMENT VALID BITMAP), 제2 할당 데이터(STRIPE VALID BITMAP), 제3 할당 데이터(WB STRIPE VALID BITMAP) 및 무효 카운트 데이터(INVALID COUNT ARRAY)가 비휘발성 저장 장치(200b)의 제2 메모리 블록 그룹에 저장될 수 있다.
도 5에 도시된 일 실시예에 의하면, 논리 어드레스에 대응되는 쓰기 데이터마다 생성되는 패리티가 매번 생성될 수 있다. 반면에, 도 13에 도시된 다른 실시예에 의하면, 우선적으로 쓰기 데이터가 패리티 없이 쓰기 버퍼(201a)에 저장되고 쓰기 버퍼(201a)의 메모리 크기만큼 저장된 쓰기 데이터에 대한 패리티가 한번에 생성될 수 있다. 따라서, 다른 실시예에 따른 쓰기 동작의 성능이 일 실시예에 따른 쓰기 동작의 성능보다 높을 수 있다.
도 10에 도시된 저장 장치(1000')는 도 1에 도시된 저장 장치(1000)보다 물리적 구성인 비휘발성 메모리 장치(200a)를 더 포함한다는 점에서, 도 1에 도시된 저장 장치(1000)의 집적도가 도 10에 도시된 저장 장치(1000')의 집적도 보다 더 높을 수 있다.
도 14는 메모리 컨트롤러의 제1 동작 방법을 설명하기 위한 흐름도이다.
도 14를 참조하면, 메모리 컨트롤러(100)는 호스트(2000)로부터 쓰기 요청, 논리 어드레스 및 쓰기 데이터를 수신한다(S110). 이에 대한 설명은 도 5 또는 도 12를 참조하여 전술한 바와 같다.
메모리 컨트롤러(100)는 쓰기 커맨드, 물리 어드레스 및 쓰기 데이터를 비휘발성 저장 장치(200)에 제공한다(S120). 이에 대한 설명은 도 5 또는 도 12를 참조하여 전술한 바와 같다.
메모리 컨트롤러(100)는 저널 버퍼에 저장 공간이 존재하는지 여부를 모니터링한다(S130). 여기서, 저널 버퍼는 도 3을 참조하여 전술한 제2 메모리 영역(201) 또는 도 10을 참조하여 전술한 물리적인 저널 버퍼(202a)일 수 있다.
저널 로그가 저장될 저장 공간이 저널 버퍼에 존재하지 않으면(S130, 아니오), 메모리 컨트롤러(100)는 체크포인트를 수행한다(S140). 이에 대한 설명은 도 6을 참조하여 전술한 바와 같다.
저널 로그가 저장될 저장 공간이 저널 버퍼에 존재하면(S130, 예), 메모리 컨트롤러(100)는 저널 버퍼에 맵 데이터를 저널링한다(S150). 이에 대한 설명은 도 5 또는 도 12를 참조하여 전술한 바와 같다.
메모리 컨트롤러(100)는 휘발성 메모리 장치(300)에 임시 저장된 메타 데이터를 업데이트한다(S160). 이에 대한 설명은 도 5 또는 도 12를 참조하여 전술한 바와 같다.
메모리 컨트롤러(100)는 쓰기 요청에 대한 응답을 호스트(2000)에 제공한다(S170).
도 15는 메모리 컨트롤러의 제2 동작 방법을 설명하기 위한 흐름도이다.
도 15를 참조하면, 메모리 컨트롤러(100)는 외부로부터 공급되는 전원에 응답하여 부팅 동작을 수행한다(S210).
메모리 컨트롤러(100)는 비휘발성 저장 장치(200)에 저장된 메타 데이터를 휘발성 메모리 장치(300)에 로드한다(S220). 이에 대한 설명은 도 8을 참조하여 전술한 바와 같다.
메모리 컨트롤러(100)는 저널 버퍼에 저장된 저널 로그를 휘발성 메모리 장치(300)에 로드한다(S230). 실시예에서, 메모리 컨트롤러(100)는 사용자의 요청에 응답하여 저널 로그를 휘발성 메모리 장치(300)에 로드한다. 이에 대한 설명은 도 8을 참조하여 전술한 바와 같다.
메모리 컨트롤러(100)는 유효한 저널 로그가 저널 버퍼에 저장되어 있는지 확인한다(S240). 이에 대한 설명은 도 8을 참조하여 전술한 바와 같다.
유효한 저널 로그가 저널 버퍼에 저장되어 있으면(S240, 예), 메모리 컨트롤러(100)는 저널 로그를 기초로 휘발성 메모리 장치(300)에 로드된 메타 데이터를 업데이트한다(S250).
실시예에서, 비휘발성 저장 장치(200)에 포함된 복수의 메모리 블록들은 스트라이프 단위로 그룹화되고, 쓰기 데이터가 저장되는 메모리 블록의 물리 어드레스는 스트라이프 정보 및 오프셋 정보로 구성되며, 오프셋 정보가 첫 번째 메모리 블록의 번호를 가리키는 정보인 경우, 메모리 컨트롤러(100)는 스트라이프가 할당됨을 나타내는 제2 할당 데이터(STRIPE VALID BITMAP)를 생성할 수 있다.
실시예에서, 복수의 스트라이프들은 미리 설정된 세그먼트 단위로 그룹화되고 스트라이프 정보는 각 세그먼트에 포함된 첫 번째 스트라이프의 번호를 가리키는 정보인 경우, 메모리 컨트롤러(100)는 스트라이프 정보에 대응되는 스트라이프를 포함하는 세그먼트가 할당됨을 나타내는 제1 할당 데이터(SEGMENT VALID BITMAP)를 생성할 수 있다.
실시예에서, 저널 로그는, 도 9를 참조하여 전술한 바와 같이, 제1 논리 어드레스와 제1 물리 어드레스 간의 제1 맵핑 정보를 나타내는 제1 저널 로그와, 제1 논리 어드레스와 제2 물리 어드레스 간의 제2 맵핑 정보를 나타내고 제1 저널 로그보다 나중에 저장되는 제2 저널 로그를 포함할 수 있다. 이 경우, 메모리 컨트롤러(100)는 제1 저널 로그를 기초로 제1 맵핑 정보를 나타내는 제1 맵 데이터를 먼저 생성한다. 그리고, 메모리 컨트롤러(100)는, 제1 맵 데이터가 생성된 이후에, 제2 저널 로그를 기초로 제1 맵 데이터를 제2 맵 데이터로 변경할 수 있다. 여기서, 제2 맵 데이터는 제2 맵핑 정보를 나타내는 데이터일 수 있다. 이때, 메타 데이터는 무효 카운트 데이터를 더 포함할 수 있으며, 메모리 컨트롤러(100)는, 제2 맵 데이터가 생성됨에 응답하여, 제1 물리 어드레스를 갖는 메모리 블록에 대한 무효 카운트가 증가된 무효 카운트 데이터를 생성할 수 있다.
메모리 컨트롤러(100)는 업데이트된 메타 데이터를 비휘발성 저장 장치(200)에 저장한다(S260). 이에 대한 설명은 도 8 및 도 9를 참조하여 전술한 바와 같다.
유효한 저널 로그가 저널 버퍼에 저장되어 있지 않으면(S240, 아니오), 부팅 완료 응답을 호스트(2000)에 제공한다(S270).
전술한 바에 의하면, 서든 파워 오프 등 예상치 못한 이벤트가 발생한 경우에도 메타 데이터와 저널 로그 간의 일관성이 보장되고 저장 장치의 신뢰성이 개선될 수 있다.

Claims (10)

  1. 호스트로부터 제공되는 쓰기 데이터가 저장된 쓰기 버퍼와, 저널 로그가 저장될 저널 버퍼를 포함하는 비휘발성 메모리 장치, 상기 저널 로그는, 상기 호스트로부터 제공되는 논리 어드레스와 물리 어드레스 간의 맵핑 정보에 대한 업데이트 정보를 나타내는 데이터임;
    메타 데이터를 임시 저장하는 휘발성 메모리 장치; 및
    상기 쓰기 데이터가 상기 쓰기 버퍼에 저장됨에 응답하여 상기 저널 로그를 상기 저널 버퍼에 저장할 것을 명령하는 저널링 커맨드와 상기 저널 버퍼에 대응되는 물리 어드레스 및 상기 저널 로그를 상기 비휘발성 메모리 장치에 제공하고, 상기 휘발성 메모리 장치에 임시 저장된 상기 메타 데이터를 업데이트하고, 업데이트된 메타 데이터를 저장하도록 상기 휘발성 메모리 장치를 제어하는 메모리 컨트롤러를 포함하는, 저장 장치.
  2. 제1 항에 있어서,
    상기 쓰기 데이터가 저장되는 제1 메모리 블록 그룹과 상기 메타 데이터가 저장되는 제2 메모리 블록 그룹을 포함하는 비휘발성 저장 장치를 더 포함하는, 저장 장치.
  3. 제2 항에 있어서,
    상기 메모리 컨트롤러는,
    상기 쓰기 버퍼의 크기에 해당되는 쓰기 데이터가 상기 쓰기 버퍼에 저장되면, 상기 쓰기 버퍼에 저장된 상기 쓰기 데이터를 상기 제1 메모리 블록 그룹에 저장하도록 상기 비휘발성 메모리 장치를 제어하는, 저장 장치.
  4. 제3 항에 있어서,
    상기 메모리 컨트롤러는,
    상기 쓰기 버퍼에 저장된 상기 쓰기 데이터에 대한 패리티를 생성하고, 상기 패리티를 제2 메모리 블록 그룹에 저장하도록 상기 비휘발성 메모리 장치를 제어하는, 저장 장치.
  5. 제3 항에 있어서,
    상기 메모리 컨트롤러는,
    상기 쓰기 버퍼에 저장된 상기 쓰기 데이터가 상기 제1 메모리 블록 그룹에 저장됨에 응답하여, 상기 논리 어드레스와 상기 제1 메모리 블록 그룹의 물리 어드레스 간의 맵핑 정보에 대한 업데이트 정보를 상기 저널 로그로서 상기 저널 버퍼에 저장하도록 상기 비휘발성 메모리 장치를 제어하는, 메모리 장치.
  6. 제3 항에 있어서,
    상기 메모리 컨트롤러는,
    상기 저널 버퍼의 크기에 해당하는 저널 로그가 상기 저널 버퍼에 저장되면, 상기 업데이트된 메타 데이터를 상기 비휘발성 저장 장치에 플러쉬할 것을 명령하는 플러쉬 커맨드를 상기 휘발성 메모리 장치에 제공하고,
    상기 저널 버퍼에 저장된 저널 로그를 릴리즈하도록 상기 제1 비휘발성 메모리 장치를 제어하는, 저장 장치.
  7. 외부로부터 공급되는 전원에 응답하여, 비휘발성 저장 장치에 저장된 제1 메타 데이터와 저널 버퍼에 저장된 저널 로그를 수신하는 단계, 상기 저널 로그는 호스트로부터 제공되는 논리 어드레스와 상기 비휘발성 저장 장치에 포함된 복수의 메모리 블록들 중 쓰기 데이터가 저장되는 메모리 블록의 물리 어드레스 간의 맵핑 정보에 대한 업데이트 정보를 나타내는 데이터임;
    상기 저널 로그를 기초로 상기 맵핑 정보를 나타내는 맵 데이터와 상기 비휘발성 저장 장치에서 할당된 메모리 영역에 대한 정보를 나타내는 할당 데이터를 포함하는 제2 메타 데이터를 생성하는 단계; 및
    상기 제2 메타 데이터를 저장할 것을 명령하는 쓰기 커맨드와, 상기 복수의 메모리 블록들 중 메타 데이터가 저장되는 메모리 블록의 물리 어드레스, 및 상기 제2 메타 데이터를 상기 비휘발성 저장 장치에 제공하는 단계를 포함하는, 메모리 컨트롤러의 동작 방법.
  8. 제7 항에 있어서,
    상기 메모리 영역은,
    상기 비휘발성 저장 장치에 포함된 복수의 메모리 블록들을 하나의 메모리 블록으로 운용되는 논리적 그룹인 스트라이프가 미리 설정된 개수로 그룹화된 세그먼트들을 포함하고,
    상기 쓰기 데이터가 저장되는 메모리 블록의 물리 어드레스는,
    상기 스트라이프의 번호를 가리키는 스트라이프 정보, 상기 스트라이프에 포함된 메모리 블록들 중 상기 호스트로부터 제공되는 쓰기 데이터가 마지막으로 저장된 메모리 블록의 번호를 가리키는 오프셋 정보로 구성되는, 메모리 컨트롤러의 동작 방법.
  9. 제8 항에 있어서,
    상기 오프셋 정보는,
    첫 번째 메모리 블록의 번호를 가리키는 정보이고,
    상기 제2 메타 데이터를 생성하는 단계는,
    상기 스트라이프가 할당됨을 나타내는 데이터를 상기 할당 데이터로 생성하는, 메모리 컨트롤러의 동작 방법.
  10. 제7 항에 있어서,
    상기 저널 로그는,
    제1 논리 어드레스와 제1 물리 어드레스 간의 제1 맵핑 정보를 나타내는 제1 저널 로그와, 상기 제1 논리 어드레스와 제2 물리 어드레스 간의 제2 맵핑 정보를 나타내고 상기 제1 저널 로그보다 나중에 저장되는 제2 저널 로그를 포함하고,
    상기 제2 메타 데이터를 생성하는 단계는,
    상기 제1 저널 로그를 기초로 상기 제1 맵핑 정보를 나타내는 제1 맵 데이터를 생성하는 단계; 및
    상기 제1 맵 데이터가 생성된 이후에, 상기 제2 저널 로그를 기초로 상기 제1 맵 데이터를 상기 제2 맵핑 정보를 나타내는 제2 맵 데이터로 변경하는 단계를 포함하는, 메모리 컨트롤러의 동작 방법.
KR1020210034866A 2020-12-30 2021-03-17 메모리 컨트롤러를 포함하는 저장 장치 및 메모리 컨트롤러의 동작 방법 KR20220097101A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US17/470,720 US11983440B2 (en) 2020-12-30 2021-09-09 Storage device including memory controller implementing journaling and operating method of the memory controller
EP21206530.4A EP4024219B1 (en) 2020-12-30 2021-11-04 Storage device including memory controller and operating method of the memory controller
CN202111414918.7A CN114691420A (zh) 2020-12-30 2021-11-25 包括存储器控制器的存储设备及存储器控制器的操作方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20200188208 2020-12-30
KR1020200188208 2020-12-30

Publications (1)

Publication Number Publication Date
KR20220097101A true KR20220097101A (ko) 2022-07-07

Family

ID=82398854

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210034866A KR20220097101A (ko) 2020-12-30 2021-03-17 메모리 컨트롤러를 포함하는 저장 장치 및 메모리 컨트롤러의 동작 방법

Country Status (1)

Country Link
KR (1) KR20220097101A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102608354B1 (ko) * 2023-06-05 2023-12-01 메티스엑스 주식회사 전자 장치 및 이를 포함하는 컴퓨팅 시스템

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102608354B1 (ko) * 2023-06-05 2023-12-01 메티스엑스 주식회사 전자 장치 및 이를 포함하는 컴퓨팅 시스템
US11995002B1 (en) 2023-06-05 2024-05-28 Metisx Co., Ltd. Electronic device and computing system including same

Similar Documents

Publication Publication Date Title
US11693463B2 (en) Memory system and controller
USRE45222E1 (en) Method of writing of writing to a flash memory including data blocks and log blocks, using a logical address having a block address portion and page identifying portion, a block address table and a page table
JP5571691B2 (ja) 記憶装置におけるマッピングアドレステーブルの維持
KR101965549B1 (ko) 고체 상태 드라이브에서 자유 공간 어카운트와 함께 재구축되는 2 스테이지 파워 온 맵을 위한 방법들, 디바이스들, 및 시스템들
US8489854B1 (en) Non-volatile semiconductor memory storing an inverse map for rebuilding a translation table
US9792067B2 (en) Trim command processing in a solid state drive
JP5376983B2 (ja) メモリシステム
JP4675984B2 (ja) メモリシステム
JP5198245B2 (ja) メモリシステム
KR102252419B1 (ko) 플래시 메모리 장치를 위한 주소변환 시스템 및 그 방법
US10061710B2 (en) Storage device
KR101552207B1 (ko) 예비 영역을 가지는 반도체 메모리 장치
US20190361611A1 (en) Storage system
JP2013061799A (ja) 記憶装置、記憶装置の制御方法およびコントローラ
CN112035294B (zh) 安全日志文件系统及其实现方法和介质
EP4024220B1 (en) Storage device including memory controller and operating method of memory controller
EP4024219B1 (en) Storage device including memory controller and operating method of the memory controller
KR20220097101A (ko) 메모리 컨트롤러를 포함하는 저장 장치 및 메모리 컨트롤러의 동작 방법
KR20220097102A (ko) 메모리 컨트롤러를 포함하는 저장 장치 및 메모리 컨트롤러의 동작 방법
EP2267725A1 (en) Memory device for managing the recovery of a non volatile memory
JP2024043063A (ja) メモリシステムおよび制御方法
JP2009211213A (ja) メモリシステム
JP2009211188A (ja) メモリシステム

Legal Events

Date Code Title Description
A201 Request for examination