KR20220097102A - 메모리 컨트롤러를 포함하는 저장 장치 및 메모리 컨트롤러의 동작 방법 - Google Patents
메모리 컨트롤러를 포함하는 저장 장치 및 메모리 컨트롤러의 동작 방법 Download PDFInfo
- Publication number
- KR20220097102A KR20220097102A KR1020210034867A KR20210034867A KR20220097102A KR 20220097102 A KR20220097102 A KR 20220097102A KR 1020210034867 A KR1020210034867 A KR 1020210034867A KR 20210034867 A KR20210034867 A KR 20210034867A KR 20220097102 A KR20220097102 A KR 20220097102A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- journal
- memory
- stored
- storage device
- Prior art date
Links
- 238000011017 operating method Methods 0.000 title abstract description 6
- 238000013507 mapping Methods 0.000 claims description 54
- 230000004044 response Effects 0.000 claims description 27
- 238000000034 method Methods 0.000 claims description 13
- 230000000977 initiatory effect Effects 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 21
- 101000648827 Homo sapiens TPR and ankyrin repeat-containing protein 1 Proteins 0.000 description 20
- 102100028173 TPR and ankyrin repeat-containing protein 1 Human genes 0.000 description 20
- 229920001485 poly(butyl acrylate) polymer Polymers 0.000 description 11
- 101100520663 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) ADD66 gene Proteins 0.000 description 9
- 238000012937 correction Methods 0.000 description 7
- 101150101057 PBA1 gene Proteins 0.000 description 6
- 238000011084 recovery Methods 0.000 description 6
- 230000000052 comparative effect Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 101100481702 Arabidopsis thaliana TMK1 gene Proteins 0.000 description 2
- 238000011010 flushing procedure Methods 0.000 description 2
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
- G06F11/1451—Management of the data involved in backup or backup restore by selection of backup contents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1435—Saving, restoring, recovering or retrying at system level using file system or storage system metadata
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1471—Saving, restoring, recovering or retrying involving logging of persistent data for recovery
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Library & Information Science (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
메모리 컨트롤러를 포함하는 저장 장치 및 메모리 컨트롤러의 동작 방법이 개시된다. 본 개시의 기술적 사상에 따른 저장 장치는, 트랜잭션으로 그룹화되지 않는 쓰기 데이터가 저장된 쓰기 버퍼와, 저널 로그가 저장된 저널 버퍼를 포함하는 비휘발성 메모리 장치, 제1 메타 데이터를 임시 저장하는 휘발성 메모리 장치, 및 저널 버퍼에 저장된 저널 로그 중 체크포인트의 개시 이후에 저장된 저널 로그를 기초로 제1 메타 데이터를 제2 메타 데이터로 업데이트하는 메모리 컨트롤러를 포함한다.
Description
본 개시의 기술적 사상은 전자 장치에 관한 것이며, 더욱 상세하게는, 메모리 컨트롤러를 포함하는 저장 장치 및 메모리 컨트롤러의 동작 방법에 관한 것이다.
스마트 폰, 태블릿 및 컴퓨터와 같은 전자 장치는 다양한 사용자 경험을 제공하기 위해, 다양한 데이터들을 저장할 수 있다. 다양한 데이터의 운용을 위해서, 전자 장치는 호스트의 제어에 따라 데이터를 저장하는 저장 장치를 포함할 수 있다. 저장 장치는 데이터를 저장하는 메모리 장치와 메모리 장치를 제어하는 메모리 컨트롤러를 포함할 수 있다. 메모리 장치는 휘발성 메모리 장치(volatile memory)와 비휘발성 메모리 장치(von volatile memory)로 구분될 수 있다.
전자 장치의 동작 중에 예상하지 못한 전원 꺼짐 문제, 커널 패닉(kernel panic), 어플리케이션 크래쉬(application crash), 시스템 크래쉬(system crash) 등이 발생하는 경우, 저장 장치의 일부 데이터가 손상되는 문제가 발생할 수 있다. 전자 장치는 이러한 상황에 대비하여 저널링(journaling)을 구현할 수 있다. 저널링은 저장 장치에 변경 사항을 반영하기 이전에 메모리 안에 변경 사항을 로깅하여 변경 사항을 추적하기 위한 기술이다.
본 개시의 기술적 사상은 트랜잭션(transaction)으로 그룹화되지 않는 쓰기 데이터에 대한 쓰기 동작에 있어서 체크포인트가 개시된 이후에 저장되는 최신 저널 로그를 기초로 메타 데이터를 업데이트함으로써 쓰기 성능을 증대시키기 위한 저장 장치 및 메모리 컨트롤러의 동작 방법을 제공한다.
또한, 본 개시의 기술적 사상은 저널링에 의한 성능 감소를 최소화하고 저장 장치에서 불필요하게 낭비되는 전력을 감소시키기 위한 저장 장치 및 메모리 컨트롤러의 동작 방법을 제공한다.
또한, 본 개시의 기술적 사상은 서든 파워 오프(sudden power off), 커널 패닉 등 예상치 못한 이벤트(event)가 발생한 경우에도 메타 데이터와 저널 로그 간의 일관성(consistency)을 보장하기 위한 저장 장치 및 메모리 컨트롤러의 동작 방법을 제공한다.
일 측면에서, 본 개시의 기술적 사상에 따른 저장 장치는, 트랜잭션(transaction)으로 그룹화되지 않는 쓰기 데이터가 저장된 쓰기 버퍼와, 쓰기 데이터의 메타 데이터에 대한 업데이트 정보를 나타내는 저널 로그가 저장된 저널 버퍼를 포함하는 비휘발성 메모리 장치, 제1 메타 데이터를 임시 저장하는 휘발성 메모리 장치, 및 저널 버퍼에서 제1 저널 로그 그룹을 릴리즈하는 체크포인트(checkpoint)를 개시하고, 저널 버퍼에서 제1 저널 로그 그룹을 제외한 저널 로그를 포함하는 제2 저널 로그 그룹을 기초로 제1 메타 데이터를 제2 메타 데이터로 업데이트하고, 제2 메타 데이터를 저장하도록 휘발성 메모리 장치를 제어하는 메모리 컨트롤러를 포함하고, 제1 메타 데이터는, 체크포인트 이벤트(checkpoint event)에 응답하여 저널 버퍼에서 릴리즈(release)될 저널 로그를 포함하는 제1 저널 로그 그룹을 기초로 업데이트된 데이터이다.
다른 측면에서, 본 개시의 기술적 사상에 따른 저장 장치는, 트랜잭션(transaction)으로 그룹화되지 않는 쓰기 데이터가 저장된 제1 메모리 영역과, 쓰기 데이터의 메타 데이터에 대한 업데이트 정보를 나타내는 저널 로그가 저장된 제2 메모리 영역 및 메타 데이터가 저장된 제3 메모리 영역을 포함하는 비휘발성 저장 장치, 제1 메타 데이터를 임시 저장하는 휘발성 메모리 장치, 및 제2 메모리 영역에서 제1 저널 로그 그룹을 삭제하는 체크포인트(checkpoint)를 개시하고, 제2 메모리 영역에서 제1 저널 로그 그룹을 제외한 저널 로그를 포함하는 제2 저널 로그 그룹을 기초로 제1 메타 데이터를 제2 메타 데이터로 업데이트하고, 제2 메타 데이터를 저장하도록 휘발성 메모리 장치를 제어하는 메모리 컨트롤러를 포함하고, 제1 메타 데이터는, 체크포인트 이벤트(checkpoint event)에 응답하여 제2 메모리 영역에서 삭제될 저널 로그를 포함하는 제1 저널 로그 그룹을 기초로 업데이트된 데이터이다.
또 다른 측면에서, 본 개시의 기술적 사상에 따른 메모리 컨트롤러의 동작 방법은, 외부로부터 공급되는 전원에 응답하여, 비휘발성 저장 장치에 저장된 제1 메타 데이터와 저널 버퍼에 저장된 저널 로그를 수신하는 단계, 저널 로그를 기초로 논리어드레스와 물리 어드레스 간의 맵핑 정보를 나타내는 맵 데이터와 비휘발성 저장 장치에서 할당된 메모리 영역에 대한 정보를 나타내는 할당 데이터를 포함하는 제2 메타 데이터를 생성하는 단계, 및 제2 메타 데이터를 저장할 것을 명령하는 쓰기 커맨드와, 비휘발성 저장 장치에 포함된 복수의 메모리 블록들 중 메타 데이터가 저장되는 메모리 블록의 물리 어드레스, 및 제2 메타 데이터를 비휘발성 저장 장치에 제공하는 단계를 포함하고, 제1 메타 데이터는, 전원이 공급되기 전에 저널 버퍼에서 릴리즈(release)된 저널 로그를 포함하는 제1 저널 로그 그룹을 기초로 업데이트된 데이터이다.
본 개시의 기술적 사상에 따르면, 트랜잭션으로 그룹화되지 않는 쓰기 데이터에 대한 쓰기 성능이 증대될 수 있다.
또한, 저널링에 의한 성능 감소를 최소화하고 저장 장치에서 불필요하게 낭비되는 전력을 감소시키는 효과가 있다.
또한, 서든 파워 오프, 커널 패닉 등 예상치 못한 이벤트가 발생한 경우에도 메타 데이터와 저널 로그 간의 일관성이 보장될 수 있다.
도 1은 본 발명의 일 실시예에 따른 스토리지 시스템을 설명하기 위한 도면이다.
도 2는 스트라이프 및 세그먼트를 설명하기 위한 도면이다.
도 3은 저널 로그 영역 및 메타 데이터 영역을 설명하기 위한 도면이다.
도 4는 본 발명의 일 실시예에 따른 메타 데이터를 설명하기 위한 도면이다.
도 5는 본 발명의 일 실시예에 따른 쓰기 동작, 저널링 동작, 맵 업데이트 동작을 설명하기 위한 도면이다.
도 6은 비교예에 따른 체크포인트를 설명하기 위한 도면이다.
도 7은 본 발명의 일 실시예에 따른 체크포인트를 설명하기 위한 도면이다.
도 8은 크러쉬가 발생됨에 따른 저장 장치의 상태를 설명하기 위한 도면이다.
도 9는 본 발명의 일 실시예에 따른 복구 동작을 설명하기 위한 도면이다.
도 10은 저널 로그를 기초로 맵 업데이트, 할당 데이터 및 무효 카운트 데이터를 복구하는 동작을 설명하기 위한 도면이다.
도 11은 본 발명의 다른 실시예에 따른 스토리지 시스템을 설명하기 위한 도면이다.
도 12는 본 발명의 다른 실시예에 따른 메타 데이터를 설명하기 위한 도면이다.
도 13은 본 발명의 다른 실시예에 따른 쓰기 동작, 저널링 동작, 맵 업데이트 동작을 설명하기 위한 도면이다.
도 14는 쓰기 버퍼에 저장된 쓰기 데이터를 플러쉬하는 동작을 설명하기 위한 도면이다.
도 15는 메모리 컨트롤러의 제1 동작 방법을 설명하기 위한 흐름도이다.
도 16은 메모리 컨트롤러의 제2 동작 방법을 설명하기 위한 흐름도이다.
도 2는 스트라이프 및 세그먼트를 설명하기 위한 도면이다.
도 3은 저널 로그 영역 및 메타 데이터 영역을 설명하기 위한 도면이다.
도 4는 본 발명의 일 실시예에 따른 메타 데이터를 설명하기 위한 도면이다.
도 5는 본 발명의 일 실시예에 따른 쓰기 동작, 저널링 동작, 맵 업데이트 동작을 설명하기 위한 도면이다.
도 6은 비교예에 따른 체크포인트를 설명하기 위한 도면이다.
도 7은 본 발명의 일 실시예에 따른 체크포인트를 설명하기 위한 도면이다.
도 8은 크러쉬가 발생됨에 따른 저장 장치의 상태를 설명하기 위한 도면이다.
도 9는 본 발명의 일 실시예에 따른 복구 동작을 설명하기 위한 도면이다.
도 10은 저널 로그를 기초로 맵 업데이트, 할당 데이터 및 무효 카운트 데이터를 복구하는 동작을 설명하기 위한 도면이다.
도 11은 본 발명의 다른 실시예에 따른 스토리지 시스템을 설명하기 위한 도면이다.
도 12는 본 발명의 다른 실시예에 따른 메타 데이터를 설명하기 위한 도면이다.
도 13은 본 발명의 다른 실시예에 따른 쓰기 동작, 저널링 동작, 맵 업데이트 동작을 설명하기 위한 도면이다.
도 14는 쓰기 버퍼에 저장된 쓰기 데이터를 플러쉬하는 동작을 설명하기 위한 도면이다.
도 15는 메모리 컨트롤러의 제1 동작 방법을 설명하기 위한 흐름도이다.
도 16은 메모리 컨트롤러의 제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)로부터 제공된 요청과 무관하게 자체적으로 커맨드, 어드레스, 및 데이터를 생성할 수 있다. 예를 들면, 메모리 컨트롤러(100)는 배경 동작을 수행하기 위한 커맨드, 어드레스, 및 데이터를 생성할 수 있다. 메모리 컨트롤러(100)는 자체적으로 생성한 커맨드, 어드레스, 및 데이터를 비휘발성 저장 장치(200)에 전송할 수 있다.
배경 동작에는, 예를 들면, 데이터 복구(rebuild), 가비지 컬렉션(garbage collection) 등이 있을 수 있다. 예를 들면, 가비지 컬렉션은 메모리 블록들 중 유효 데이터를 프리 블록(free block)에 복사하고, 무효 데이터를 소거하는 동작일 수 있다.
일 실시예에서, 메모리 컨트롤러(100)는 논리적으로 하나의 비휘발성 저장 장치(200)로 운용되는 복수의 비휘발성 저장 장치(200)들을 제어할 수 있다.
일 실시예에서, 메모리 컨트롤러(100)는, 트랜잭션(transaction)으로 그룹화되지 않는 쓰기 데이터에 응답하여 데이터 버퍼(310)를 휘발성 메모리 장치(300)에 할당할 수 있다.
트랜잭션은 데이터베이스의 상태를 변경하기 위해 수행되는 동작의 단위일 수 있다. 데이터베이스의 데이터와 관련된 동작은, 예를 들어, OPEN, SELECT, INSERT, DELETE, UPDATE, CLOSE와 같은 질의어(Structured Query Language, SQL)에 기반하여, 데이터베이스에 접근하는 동작을 의미할 수 있다. 트랜잭션에 포함되고 데이터베이스의 데이터와 관련된 동작은, 데이터의 읽기 동작, 데이터의 추가 동작, 데이터의 수정 동작, 데이터의 삭제 동작 및 데이터의 변경 동작(수정 동작)을 포함할 수 있다.
쓰기 데이터가 트랜잭션으로 그룹화된다는 것은 같은 용도로 사용되는 쓰기 데이터가 하나의 트랜잭션으로 그룹화된다는 것을 의미할 수 있다. 예를 들면, 데이터베이스의 수정을 위한 데이터가 어느 하나의 트랜잭션으로 그룹화될 수 있다. 하나의 트랜잭션으로 그룹화된 쓰기 데이터가 호스트(2000)에서 저장 장치(1000)에 전송되는 경우, 유효한(valid) 커밋(commit) 상태 또는 어보트(abort) 상태만이 존재할 수 있다. 하나의 트랜잭션으로 그룹화된 쓰기 데이터는 유효한 커밋 상태인 경우에만 의미가 있다.
쓰기 데이터가 트랜잭션으로 그룹화되지 않는다는 것은 쓰기 데이터가 개별적으로 전송 및 저장되는 것을 의미할 수 있다.
일 실시예에서, 메모리 컨트롤러(100)는, 트랜잭션으로 그룹화되지 않는 쓰기 데이터가 비휘발성 저장 장치(200)에 제공되면, 쓰기 데이터에 대한 메타 데이터를 업데이트할 수 있다. 메모리 컨트롤러(100)는 업데이트된 메타 데이터를 저장하도록 휘발성 메모리 장치(300)를 제어할 수 있다. 메타 데이터는 비휘발성 저장 장치(200)에 저장되어 있을 수 있다. 부팅 시, 메모리 컨트롤러(100)는 비휘발성 저장 장치(200)에 저장된 메타 데이터를 휘발성 메모리 장치(300)에 로드할 수 있다. 휘발성 메모리 장치(300)에 임시 저장된 메타 데이터가 메모리 컨트롤러(100)에 의해 업데이트될 수 있다. 업데이트된 메타 데이터는 비휘발성 저장 장치(200)에 저장될 수 있다. 실시예에서 메타 데이터는 대표 메타 데이터와 연관 메타 데이터로 구분될 수 있다. 이는 도 6 및 도 14에 도시된 바와 같다.
일 실시예에서, 메모리 컨트롤러(100)는 메타 데이터에 대한 업데이트 정보를 저널링(journaling)할 수 있다. 메모리 컨트롤러(100)는 메타 데이터의 변경점인 저널 로그를 저장하도록 비휘발성 저장 장치(200)를 제어할 수 있다.
메모리 컨트롤러(100)는 저널링 관리부(101), 업데이트 관리부(102), 및 동작 제어부(103)를 포함할 수 있다.
저널링 관리부(101)는 쓰기 데이터가 비휘발성 저장 장치(200)에 저장됨에 응답하여 저널 로그를 생성할 수 있다. 저널 로그는 쓰기 데이터의 메타 데이터에 대한 업데이트 정보를 나타내는 데이터일 수 있다.
저널링 관리부(101)는, 저널 로그가 비휘발성 저장 장치(200)에서 할당된 메모리 영역에 미리 설정된 체크포인트 사이즈만큼 저장되면, 저널링 관리부(101)는 체크포인트를 개시(triggering)할 수 있다. 체크포인트는 비휘발성 저장 장치(200)에서 저널 로그가 저장되는 메모리 영역을 확보하고, 업데이트된 메타 데이터를 비휘발성 저장 장치(200)에 저장하기 위한 동작일 수 있다.
체크포인트가 개시된 경우에 후속 쓰기 데이터가 저장 장치(1000)에 제공될 수 있다. 이 경우, 저널링 관리부(101)는, 후속 쓰기 데이터가 비휘발성 저장 장치(200)에 저장됨에 응답하여 후속 저널 로그를 생성할 수 있다.
업데이트 관리부(102)는 휘발성 메모리 장치(300)에 임시 저장된 메타 데이터를 획득하고, 저널 로그를 기초로 메타 데이터를 업데이트할 수 있다.
업데이트 관리부(102)는, 체크포인트가 진행되는 동안, 후속 저널 로그를 기초로 메타 데이터를 추가적으로 업데이트할 수 있다.
업데이트 관리부(102)는, 부팅 시, 비휘발성 저장 장치(200)에 유효한 저널 로그가 저장되어 있는지 여부에 따라 메타 데이터를 업데이트할 수 있다.
동작 제어부(103)는 노멀 동작(normal operation)을 수행할 것을 명령하는 제1 동작 커맨드, 어드레스를 생성하고 비휘발성 저장 장치(200)에 제공할 수 있다. 여기서, 노멀 동작은, 전술한 바와 같이 쓰기 동작, 리드 동작 또는 소거 동작일 수 있고, 제1 동작 커맨드는 프로그램 커맨드, 리드 커맨드 또는 트림 커맨드일 수 있다.
동작 제어부(103)는 배경 동작을 수행할 것을 명령하는 제2 동작 커맨드 및 어드레스를 생성하고 제2 동작 커맨드 및 어드레스를 비휘발성 저장 장치(200)에 제공할 수 있다. 배경 동작은, 예를 들면, 가비지 컬렉션일 수 있다.
동작 제어부(103)는 제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)는 어드레스에 의해 선택된 메모리 셀에 대해 커맨드가 지시하는 동작을 수행할 수 있다.
비휘발성 저장 장치는, 예를 들어 플래시 메모리(flash memory) 기반 저장 장치일 수 있다. 플래시 메모리에는, 예를 들어 낸드 플래시 메모리(NAND flash memory), 수직형 낸드 플래시 메모리(Vertical NAND), 노어 플래시 메모리(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)로부터 제공된 쓰기 요청에 응답하여, 호스트(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 메모리 영역에 대응될 수 있다.
스트라이프(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~JE8)로 구성될 수 있다.
복수의 저널 엔트리들(JE1~JE8)은 체크포인트 동작을 수행하기 위한 단위인 체크포인트 사이즈(CPS)로 구분될 수 있다. 예를 들면, 체크포인트 사이즈(CPS)가 4개의 저널 엔트리들로 구성되는 경우, 하나의 체크포인트 사이즈(CPS)는 제1 내지 제4 저널 엔트리들(JE1~JE4) 또는 제5 내지 제8 저널 엔트리들(JE5~JE8)로 구성될 수 있다. 체크포인트 사이즈(CPS)를 만족하는 저널 로그는 저널 로그 그룹으로 정의될 수 있다.
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)은 해당 세그먼트가 할당됨을 가리킬 수 있으나, 이에 한정되는 것은 아니다.
제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을 참조하여 전술한 바와 같이 대표 메타 데이터에 해당될 수 있다. 연관 메타 데이터는 제1 할당 데이터(SEGMENT VALID BITMAP), 제2 할당 데이터(STRIPE VALID BITMAP) 및 무효 카운트 데이터(INVALID COUNT ARRAY)를 포함할 수 있다.
도 5는 본 발명의 일 실시예에 따른 쓰기 동작, 저널링 동작, 맵 업데이트 동작을 설명하기 위한 도면이다.
도 5에 도시된 실시예를 설명함에 있어서, 호스트(2000)로부터 제공되는 쓰기 데이터(DATA1, DATA2, DATA3, DATA4, DATA5, DATA6)는 트랜잭션으로 그룹화되지 않는 쓰기 데이터인 것으로 가정한다. 또한, 0번 물리 어드레스(PBA0) 내지 6번 물리 어드레스(PBA6)를 갖는 메모리 블록들은 전술한 제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)에 제공할 수 있다. 메모리 컨트롤러(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) 간의 맵핑 정보를 나타낼 수 있다.
0번 논리 어드레스(LBA0)에 대응되는 쓰기 데이터(DATA2)가 데이터 버퍼(310)에 임시 저장될 수 있다. 0번 논리 어드레스(LBA0)는 물리 어드레스로 변환될 수 있다. 비휘발성 저장 장치(200)에서 덮어쓰기가 불가능하므로, 0번 논리 어드레스(LBA0)에서 변환된 물리 어드레스는 1번 물리 어드레스(PBA1)일 수 있다. 1번 물리 어드레스(PBA1)를 갖는 메모리 블록에 데이터가 저장되어 있지 않은 경우, 메모리 컨트롤러(100)는 오프셋 정보(OFFSET)의 값을 0에서 1로 변경함으로써 1번 물리 어드레스(PBA1)를 갖는 메모리 블록을 할당할 수 있다. 비휘발성 저장 장치(200)는 0번 물리 어드레스(PBA0)를 갖는 메모리 블록에 저장된 쓰기 데이터(DATA1)를 무효 처리(invalid)하고, 쓰기 데이터(DATA2)를 1번 물리 어드레스(PBA1)를 갖는 메모리 블록에 저장할 수 있다. 메모리 컨트롤러(100)는, 0번 스트라이프(STRP0)가 포함된 0번 세그먼트(SEG0)의 무효 카운트를 C1에서 C1+1로 변경할 수 있다. C1은 자연수일 수 있다. 메모리 컨트롤러(100)는 메타 데이터 버퍼(320)에 임시 저장된 메타 데이터를 업데이트할 수 있다. 메모리 컨트롤러(100)에 의해 수정된 메타 데이터는 0번 논리 어드레스(LBA0)와 1번 물리 어드레스(PBA1) 간의 맵핑 정보가 반영된 맵 데이터(BLOCK MAP) 및 0번 세그먼트(SEG0)의 무효 카운트가 C1에서 C1+1로 변경된 무효 카운트 데이터(INVALID COUNT ARRAY)를 포함할 수 있다. 저널 로그(JLOG2)는 제2 저널 엔트리(JE2)에 저장되고, 0번 논리 어드레스(LBA0)와 1번 물리 어드레스(PBA1) 간의 맵핑 정보를 나타낼 수 있다.
1번 논리 어드레스(LBA1)에 대응되는 쓰기 데이터(DATA3)가 데이터 버퍼(310)에 임시 저장될 수 있다. 1번 논리 어드레스(LBA1)는 2번 물리 어드레스(PBA2)로 변환될 수 있다. 2번 물리 어드레스(PBA2)를 갖는 메모리 블록에 데이터가 저장되어 있지 않으므로, 메모리 컨트롤러(100)는 2번 물리 어드레스(PBA2)를 갖는 메모리 블록을 할당할 수 있다. 쓰기 데이터(DATA3)는 2번 물리 어드레스(PBA2)를 갖는 메모리 블록에 저장될 수 있다. 수정된 메타 데이터는, 1번 논리 어드레스(LBA1)와 2번 물리 어드레스(PBA2) 간의 맵핑 정보가 반영된 맵 데이터(BLOCK MAP)를 포함할 수 있다. 저널 로그(JLOG3)는 제3 저널 엔트리(JE3)에 저장되고, 1번 논리 어드레스(LBA1)와 2번 물리 어드레스(PBA2) 간의 맵핑 정보를 나타낼 수 있다.
0번 논리 어드레스(LBA0)에 대응되는 쓰기 데이터(DATA4)가 데이터 버퍼(310)에 임시 저장될 수 있다. 0번 논리 어드레스(LBA0)가 3번 물리 어드레스(PBA3)로 변환되고, 3번 물리 어드레스(PBA3)를 갖는 메모리 블록이 할당될 수 있다. 쓰기 데이터(DATA2)는 무효 처리되고, 쓰기 데이터(DATA4)는 3번 물리 어드레스(PBA3)를 갖는 메모리 블록에 저장될 수 있다. 0번 스트라이프(STRP0)가 포함된 0번 세그먼트(SEG0)의 무효 카운트가 C1+1에서 C1+2로 변경될 수 있다. 수정된 메타 데이터는 맵 데이터(BLOCK MAP) 및 무효 카운트 데이터(INVALID COUNT ARRAY)를 포함할 수 있다. 저널 로그(JLOG4)는 제4 저널 엔트리(JE4)에 저장되고, 0번 논리 어드레스(LBA0)와 3번 물리 어드레스(PBA3) 간의 맵핑 정보를 나타낼 수 있다.
제1 내지 제4 저널 로그(JLOG1~JLOG4)가 제1 내지 제4 저널 엔트리들(JE1~JE4)에 저장된 경우, 체크포인트 이벤트가 발생할 수 있다. 체크 포인트 이벤트는 전술한 체크포인트 사이즈(CPS)가 만족되어 체크포인트가 개시되는 것(checkpoint trigger)을 의미할 수 있다. 제1 내지 제4 저널 로그(JLOG1~JLOG4)는 제1 저널 로그 그룹에 포함될 수 있다. 제1 저널 로그 그룹을 기초로 업데이트된 제1 메타 데이터는 0번 논리 어드레스(LBA0)와 3번 물리 어드레스(PBA3) 간의 맵핑 정보, 1번 논리 어드레스(LBA1)와 2번 물리 어드레스(PBA2) 간의 맵핑 정보를 포함하는 맵 데이터(BLOCK MAP), 0번 세그먼트(SEG0)의 할당 정보(VALID)가 참(TRUE)으로 표시된 제1 할당 데이터(SEGMENT VALID BITMAP), 0번 스트라이프(STRP0)의 할당 정보(VALID)가 참(TRUE)으로 표시된 제2 할당 데이터(STRIPE VALID BITMAP) 및 0번 세그먼트(SEG0)의 무효 카운트가 변경된 무효 카운트 데이터(INVALID COUNT ARRAY)를 포함할 수 있다.
체크포인트가 개시된 이후, 0번 논리 어드레스(LBA0)에 대응되는 쓰기 데이터(DATA5)가 데이터 버퍼(310)에 임시 저장되고, 0번 논리 어드레스(LBA0)가 4번 물리 어드레스(PBA4)로 변환되며, 4번 물리 어드레스(PBA4)를 갖는 메모리 블록이 할당될 수 있다. 쓰기 데이터(DATA2)는 무효 처리되며, 0번 스트라이프(STRP0)가 포함된 0번 세그먼트(SEG0)의 무효 카운트는 C1+2에서 C1+3으로 변경될 수 있다. 쓰기 데이터(DATA5)가 4번 물리 어드레스(PBA4)를 갖는 메모리 블록에 저장될 수 있다. 수정된 메타 데이터는 맵 데이터(BLOCK MAP) 및 무효 카운트 데이터(INVALID COUNT ARRAY)를 포함할 수 있다. 저널 로그(JLOG5)는 제5 저널 엔트리(JE5)에 저장되고, 0번 논리 어드레스(LBA0)와 4번 물리 어드레스(PBA4) 간의 맵핑 정보를 나타낼 수 있다.
1번 논리 어드레스(LBA1)는 5번 물리 어드레스(PBA5)로 변환되며, 5번 물리 어드레스(PBA5)를 갖는 메모리 블록이 할당될 수 있다. 쓰기 데이터(DATA3)는 무효 처리되며, 0번 스트라이프(STRP0)가 포함된 0번 세그먼트(SEG0)의 무효 카운트는 C1+3에서 C1+4으로 변경될 수 있다. 쓰기 데이터(DATA6)가 5번 물리 어드레스(PBA5)를 갖는 메모리 블록에 저장됨에 따라, 메타 데이터는 업데이트될 수 있다. 저널 로그(JLOG6)는 제6 저널 엔트리(JE6)에 저장되고, 1번 논리 어드레스(LBA1)와 5번 물리 어드레스(PBA5) 간의 맵핑 정보를 나타낼 수 있다.
제2 저널 로그 그룹은 제2 메모리 영역(201)에 저장된 저널 로그(JLOG1~JLOG6) 중 제1 저널 로그 그룹을 제외한 나머지 저널 로그를 포함할 수 있다. 예를 들면, 제5 저널 로그(JLOG5) 및 제6 저널 로그(JLOG6)가 제2 저널 로그 그룹에 포함될 수 있다. 제2 저널 로그 그룹을 기초로 업데이트된 제2 메타 데이터는 0번 논리 어드레스(LBA0)와 4번 물리 어드레스(PBA4) 간의 맵핑 정보, 1번 논리 어드레스(LBA1)와 5번 물리 어드레스(PBA5) 간의 맵핑 정보를 포함하는 맵 데이터(BLOCK MAP), 0번 세그먼트(SEG0)의 할당 정보(VALID)가 참(TRUE)으로 표시된 제1 할당 데이터(SEGMENT VALID BITMAP), 0번 스트라이프(STRP0)의 할당 정보(VALID)가 참(TRUE)으로 표시된 제2 할당 데이터(STRIPE VALID BITMAP) 및 0번 세그먼트(SEG0)의 무효 카운트가 C4인 무효 카운트 데이터(INVALID COUNT ARRAY)를 포함할 수 있다. C4는 C1보다 큰 자연수이며, 예를 들어 C1+3일 수 있다.
메모리 컨트롤러(100)는 각 쓰기 데이터에 대응되는 패리티(미도시)를 각 쓰기 데이터와 함께 저장하도록 비휘발성 저장 장치(200)를 제어할 수 있다.
전술한 바에 의하면, 대표 메타 데이터에 해당되는 맵 데이터의 업데이트 정보를 저널링함으로써, 저널링에 의한 성능 감소가 최소화되고 저장 장치에서 불필요하게 낭비되는 전력이 감소될 수 있다.
도 6은 비교예에 따른 체크포인트를 설명하기 위한 도면이다.
도 6을 참조하면, 비교예에 따른 쓰기 데이터는 트랜잭션으로 그룹화되는 쓰기 데이터이다. 제1 저널 로그 그룹에 포함되는 제1 내지 제4 저널 로그(JLOG1~JLOG4)가 제1 내지 제4 저널 엔트리들(JE1~JE4)에 저장되면, 체크포인트가 개시(CHECKPOINT TRIGGER)된다. 체크포인트가 개시된 경우, 비교예에 따른 메타 데이터는, 데이터의 일관성을 보장하기 위해 제1 저널 로그 그룹만을 기초로 업데이트된다. 예를 들면, 제1 메타 데이터에 포함된 맵 데이터(BLOCK MAP)는 0번 논리 어드레스(LBA0)와 3번 물리 어드레스(PBA3) 간의 맵핑 정보, 1번 논리 어드레스(LBA1)와 2번 물리 어드레스(PBA2) 간의 맵핑 정보를 포함한다. 체크포인트가 개시된 이후에 제5 저널 로그(JLOG5) 및 제6 저널 로그(JLOG6)가 제2 메모리 영역(201')에 저장된다.
체크포인트가 개시되면, 메타 데이터 버퍼(320')에 저장된 메타 데이터는 비교예에 따른 비휘발성 메모리 장치에 플러쉬(FLUSH)된다. 그리고, 제2 메모리 영역(201')에 저장된 제1 내지 제4 저널 로그(JLOG1~JLOG4)는 삭제(RELEASE)된다.
도 7은 본 발명의 일 실시예에 따른 체크포인트를 설명하기 위한 도면이다.
도 7을 참조하면, 제2 메모리 영역(201)의 저장 공간은 복수의 저널 엔트리들(JE1~JE8)에 대응될 수 있다. 제1 저널 로그 그룹에 포함되는 제1 내지 제4 저널 로그(JLOG1~JLOG4)가 제1 내지 제4 저널 엔트리들(JE1~JE4)에 저장되면, 체크포인트가 개시(CHECKPOINT TRIGGER)될 수 있다. 체크포인트가 개시된 이후에 제5 저널 로그(JLOG5) 및 제6 저널 로그(JLOG6)가 제2 메모리 영역(201)에 저장된 경우, 메모리 컨트롤러(100)는 제5 저널 로그(JLOG5) 및 제6 저널 로그(JLOG6)를 기초로 메타 데이터를 업데이트할 수 있다. 그 결과, 메타 데이터 버퍼(320)에 임시 저장된 메타 데이터는 전술한 제2 메타 데이터일 수 있다.
일 실시예에서, 체크포인트가 개시되면, 메모리 컨트롤러(100)는 플러쉬 커맨드를 휘발성 메모리 장치(300)에 제공할 수 있다. 플러쉬 커맨드는 제2 메타 데이터를 비휘발성 저장 장치(200)에 플러쉬할 것을 명령하는 커맨드일 수 있다. 업데이트된 맵 데이터(BLOCK MAP), 업데이트된 제1 할당 데이터(SEGMENT VALID BITMAP), 업데이트된 제2 할당 데이터(STRIPE VALID BITMAP) 및 업데이트된 무효 카운트 데이터(INVALID COUNT ARRAY)는 비휘발성 저장 장치(200)에 제공될 수 있다. 제3 메모리 영역(202)에서, 메타 데이터(MEATA DATA)는 무효 처리되고, 업데이트된 메타 데이터(UPDATAED META DATA)가 저장될 수 있다.
일 실시예에서, 업데이트된 메타 데이터(UPDATAED META DATA)가 제3 메모리 영역(202)에 저장되면, 메모리 컨트롤러(100)는 저널 로그를 릴리즈할 것을 명령하는 제2 저널링 커맨드를 비휘발성 저장 장치(200)에 제공할 수 있다. 비휘발성 저장 장치(200)는 제2 저널링 커맨드에 응답하여 저널 로그(JLOG1~JLOG4)를 삭제할 수 있다.
도 8은 크러쉬가 발생됨에 따른 저장 장치의 상태를 설명하기 위한 도면이다.
도 8을 참조하면, 쓰기 데이터(DATA1~DATA6)가 제1 메모리 영역에 저장됨에 따라, 메타 데이터(META DATA)가 업데이트될 수 있다. 저널 로그(JLOG1~JLOG6)는 저널 엔트리들(JE1~JE6)에 순차적으로 저장될 수 있다. 체크포인트 사이즈(CPS)를 만족하는 저널 로그(JLOG1~JLOG4)는 삭제될 수 있다.
쓰기 동작 또는 체크포인트 동작 중에 크래쉬(CRASH)가 발생할 수 있다. 크래쉬(CRASH)는 외부로부터 저장 장치(1000)에 공급되는 전원이 예상하지 못하게 차단되는 서든 파워 오프(sudden power off), 운영 체제가 치명적인 내부 오류를 감지하여 안전하게 복구가 불가능할 때 발생하는 커널 패닉 등의 이벤트를 의미할 수 있다. 크래쉬(CRASH)가 발생하면, 휘발성 메모리 장치(300)에 임시 저장된 데이터가 삭제되거나 손상되지만, 비휘발성 저장 장치(200)에 저장된 데이터(DATA1~DATA6)는 소거되지 않을 수 있다.
크래쉬(CRASH)가 발생한 경우, 업데이트된 메타 데이터가 비휘발성 저장 장치(200)에 저장되지 않을 수 있다. 이 경우, 비휘발성 저장 장치(200)가 수행하는 동작의 성능이 감소될 수 있다.
이러한 문제점을 해결하기 위해서, 크래쉬(CRASH)가 발생한 이후에 업데이트된 메타 데이터를 복구하는 복구 동작이 수행될 필요가 있다.
도 9는 본 발명의 일 실시예에 따른 복구 동작을 설명하기 위한 도면이다.
도 9를 참조하면, 크래쉬(CRASH)가 발생한 이후 외부로부터 전원이 공급되면, 메모리 컨트롤러(100)는 제2 메모리 영역(201)에 저장된 저널 로그(JLOG5, JLOG6)와 제3 메모리 영역(202)에 저장된 올드 메타 데이터(OLD META DATA)를 리드하도록 비휘발성 저장 장치(200)를 제어할 수 있다. 올드 메타 데이터(OLD META DATA)는 전원이 저장 장치(1000)에 공급되기 전에 비휘발성 저장 장치(200)에 저장된 메타 데이터일 수 있다. 일 실시예에서, 제2 메모리 영역(201)에 저장된 저널 로그(JLOG5, JLOG6)는 저널 엔트리의 엔트리 번호가 낮은 순서부터 순차적으로 리드될 수 있다.
저널 로그(JLOG5, JLOG6)는 순차적으로 메타 데이터 버퍼(320)에 로드(load)될 수 있다. 올드 메타 데이터(OLD META DATA)도 메타 데이터 버퍼(320)에 로드될 수 있다. 메모리 컨트롤러(100)는 저널 로그(JLOG5, JLOG6)를 기초로 올드 메타 데이터(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)를 제어할 수 있다. 제3 메모리 영역(202)에서, 올드 메타 데이터(OLD META DATA)는 무효 처리되고, 복구된 메타 데이터(RESTORED META DATA)가 저장되고,
이하에서는 저널 로그를 기초로 메타 데이터를 복구하는 동작을 구체적으로 설명한다.
도 10은 저널 로그를 기초로 맵 업데이트, 할당 데이터 및 무효 카운트 데이터를 복구하는 동작을 설명하기 위한 도면이다.
도 10에 도시된 실시예를 설명함에 있어서, 제1 저널 엔트리(JE1)부터 제4 저널 엔트리(JE4)는 전원이 공급되기 전에 수행된 체크포인트에 따라 비어 있는 것으로 가정한다. 또한, 논리-물리 테이블의 0번 논리 어드레스(LBA0)는 복구 동작 전에 3번 물리 어드레스(PBA3)에 맵핑되고 1번 논리 어드레스(LBA1)는 복구 동작 전에 2번 물리 어드레스(PBA2)에 맵핑된 것으로 가정한다.
제5 저널 엔트리(JE5)에 저장된 저널 로그(JLOG5)가 0번 논리 어드레스(LBA0)와 4번 물리 어드레스(PBA4) 간의 맵핑 정보를 나타낼 수 있다. 메모리 컨트롤러(100)는 저널 로그(JLOG5)를 이용하여 0번 논리 어드레스(LBA0)와 4번 물리 어드레스(PBA4) 간의 제1 맵핑 정보가 반영된 맵 데이터(BLOCK MAP)를 생성할 수 있다. 논리-물리 테이블에서 0번 논리 어드레스(LBA0)에 맵핑된 3번 물리 어드레스(PBA3)는 4번 물리 어드레스(PBA4)로 변경될 수 있다.
제6 저널 엔트리(JE6)에 저장된 저널 로그(JLOG6)가 1번 논리 어드레스(LBA1)와 5번 물리 어드레스(PBA5) 간의 맵핑 정보를 나타낼 수 있다. 메모리 컨트롤러(100)는 저널 로그(JLOG6)를 이용하여 1번 논리 어드레스(LBA1)와 5번 물리 어드레스(PBA5) 간의 맵핑 정보가 추가 반영된 맵 데이터(BLOCK MAP)를 생성할 수 있다.
도 10에 도시된 실시예에 따른 복구 동작은, 제1 저널 엔트리(JE1)부터 제4 저널 엔트리(JE4)가 전원이 공급되기 전에 수행된 체크포인트에 의해 비어진 것을 가정하고, 수행된 것이다. 하지만, 이에 한정되는 것은 아니며, 저널 로그(JLOG1~JLOG4)가 제1 저널 엔트리(JE1)부터 제4 저널 엔트리(JE4)에 저장되어 있더라도 메타 데이터가 복구될 수 있다. 이 경우, 동일한 논리 어드레스에 대한 맵핑 동작이 2회 이상 수행되므로, 메모리 컨트롤러(100)는 먼저 저장된 제1 저널 로그를 기초로 제1 맵 데이터를 생성하고, 제1 저널 로그 다음에 저장된 제2 저널 로그를 기초로 제1 맵 데이터를 제2 맵 데이터로 변경할 수 있다. 또한, 메모리 컨트롤러(100)는 제2 맵 데이터가 생성됨에 응답하여 메모리 블록의 무효 카운트를 증가시킴으로써 무효 카운트 데이터를 업데이트할 수 있다.
전술한 바에 의하면, 예상치 못한 이벤트가 발생한 경우에도 메타 데이터와 저널 로그 간의 일관성이 보장되고 저장 장치의 신뢰성이 개선될 수 있다.
또한 전술한 바에 의하면, 크러쉬 발생 이후에 맵 데이터에 대한 저널 로그만으로 맵 데이터뿐만 아니라, 데이터와 관련성 있는 메타 데이터를 복구함으로써 불필요하게 낭비되는 전력이 감소될 수 있다.
도 11은 본 발명의 다른 실시예에 따른 스토리지 시스템을 설명하기 위한 도면이다.
도 11을 참조하면, 본 발명의 다른 실시예에 따른 스토리지 시스템은 저장 장치(1000')와 호스트(2000)를 포함할 수 있다.
저장 장치(1000')는 메모리 컨트롤러(100), 비휘발성 메모리 장치(200a), 비휘발성 저장 장치(200b), 및 휘발성 메모리 장치(300)를 포함할 수 있다.
메모리 컨트롤러(100) 및 휘발성 메모리 장치(300)는 도 1을 참조하여 전술한 동작을 모두 수행할 수 있다.
다른 실시예에서, 메모리 컨트롤러(100)는 쓰기 데이터가 비휘발성 메모리 장치(200a)에 저장됨에 응답하여 저널 로그를 생성하고, 저널 로그를 저장하도록 비휘발성 메모리 장치(200a)를 제어하며, 저널 로그를 기초로 메타 데이터 버퍼(320)에 임시 저장된 메타 데이터를 업데이트할 수 있다.
다른 실시예에서, 비휘발성 메모리 장치(200a)에 저장된 저널 로그의 크기가 체크포인트 사이즈(CPS)를 만족하는 경우, 체크포인트 이벤트가 발생할 수 있다. 체크포인트 이벤트가 발생할 때까지 업데이트된 메타 데이터는 전술한 제1 메타 데이터일 수 있다. 한편, 체크포인트가 개시된 이후에 메모리 컨트롤러(100)는 후속 쓰기 데이터가 비휘발성 메모리 장치(200a)에 저장됨에 응답하여 후속 저널 로그를 생성할 수 있다. 메모리 컨트롤러(100)는 후속 저널 로그를 기초로 제1 메타 데이터를 제2 메타 데이터로 업데이트하며, 제2 메타 데이터를 저장하도록 휘발성 메모리 장치(300)를 제어할 수 있다.
비휘발성 메모리 장치(200a)는 쓰기 버퍼(201a) 및 저널 버퍼(202a)를 포함할 수 있다. 예를 들면, 비휘발성 메모리 장치(200a)는 비휘발성 RAM(non-volatile random access memory; NVRAM)으로 구현될 수 있다.
쓰기 버퍼(201a)는, 도 1에 도시된 비휘발성 저장 장치(200)의 제1 메모리 영역과 동일하게, 트랜잭션으로 그룹화되지 않는 쓰기 데이터를 저장할 수 있다. 다만, 쓰기 버퍼(201a)는 물리적인 메모리 영역이고, 비휘발성 저장 장치(200)의 제1 메모리 영역은 논리적으로 구현된 영역일 수 있다. 쓰기 버퍼(201a)는 복수의 스트라이프들을 포함할 수 있다.
다른 실시예에서, 동작 제어부(103)는 트랜잭션으로 그룹화되지 않는 쓰기 데이터를 쓰기 버퍼(201a)에 저장하도록 비휘발성 메모리 장치(200a)를 제어할 수 있다.
저널 버퍼(202a)는, 도 1에 도시된 비휘발성 저장 장치(200)의 제2 메모리 영역(201)과 동일하게, 저널 로그를 저장할 수 있다. 다만, 저널 버퍼(202a)는 물리적인 메모리 영역이고, 비휘발성 저장 장치(200)의 제2 메모리 영역(201)은 논리적으로 구현된 영역일 수 있다. 저널 버퍼(202a)는 복수의 저널 엔트리들로 구성될 수 있다.
다른 실시예에서, 동작 제어부(103)는 저널 로그를 저널 버퍼(202a)에 저장하도록 비휘발성 메모리 장치(200a)를 제어할 수 있다.
비휘발성 저장 장치(200b)는, 도 1에 도시된 비휘발성 저장 장치(200)와 동일하게, 쓰기 데이터 및 메타 데이터를 저장할 수 있다.
다른 실시예에서, 비휘발성 저장 장치(200b)는, 하나의 저장 장치로 논리적으로 운용될 수 있으며, 제1 메모리 블록 그룹과 제2 메모리 블록 그룹을 포함할 수 있다. 제1 메모리 블록 그룹은 쓰기 데이터가 저장되는 메모리 블록의 집합일 수 있다. 제2 메모리 블록 그룹은 메타 데이터가 저장되는 메모리 블록의 집합일 수 있다. 비휘발성 저장 장치(200b)는 복수의 세그먼트들을 포함할 수 있으며, 각 세그먼트는 복수의 스트라이프들을 포함할 수 있다.
다른 실시예에서, 동작 제어부(103)는 쓰기 버퍼(201a)에 저장된 쓰기 데이터를 비휘발성 저장 장치(200b)에 플러쉬하도록 비휘발성 메모리 장치(200a) 및 비휘발성 저장 장치(200b)를 제어할 수 있다.
다른 실시예에서, 동작 제어부(103)는, 체크포인트 사이즈(CPS)의 저널 로그가 저널 버퍼(202a)에 저장됨에 응답하여, 메타 데이터 버퍼(320)에 임시 저장된 메타 데이터를 비휘발성 저장 장치(200b)에 플러쉬하도록 휘발성 메모리 장치(300)를 제어할 수 있다.
도 12는 본 발명의 다른 실시예에 따른 메타 데이터를 설명하기 위한 도면이다.
도 12를 참조하면, 본 발명의 다른 실시예에 따른 메타 데이터는 제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 메모리 블록 그룹에서 메모리 블록이 무효로 처리된 횟수를 나타내는 데이터일 수 있다.
도 13은 본 발명의 다른 실시예에 따른 쓰기 동작, 저널링 동작, 맵 업데이트 동작을 설명하기 위한 도면이다.
도 13에 도시된 실시예를 설명함에 있어서, 쓰기 버퍼(201a)는 0번 어드레스(VSA0) 내지 4번 어드레스(VSA4)를 갖는 메모리 블록들을 포함하고, 저널 버퍼(202a)는 8개의 저널 엔트리들(JE1~JE8)로 구성되는 것으로 가정한다. 쓰기 버퍼(201a)의 0번 스트라이프(WBSTRP0)를 갖고, 0번 어드레스(VSA0) 내지 n번 어드레스(VSAn)를 갖는 메모리 블록들은 0번 스트라이프(WBSTRP0)에 포함되는 것으로 가정한다.
도 13을 참조하면, 트랜잭션으로 그룹화되지 않는 쓰기 데이터(DATA1~DATA6)가 순차적으로 저장 장치(1000)에 전송될 수 있다. 메모리 컨트롤러(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) 간의 맵핑 정보를 나타낼 수 있다.
0번 논리 어드레스(LBA0)는 1번 어드레스(VSA1)에 맵핑되고, 0번 논리 어드레스(LBA0)에 대응되는 쓰기 데이터(DATA2)는 1번 어드레스(VSA1)를 갖는 메모리 블록에 저장될 수 있다. 오프셋 정보(OFFSET)의 값은 0에서 1로 변경될 수 있다. 쓰기 데이터(DATA1)는 무효 처리될 수 있다. 맵 데이터(BLOCK MAP)에는 0번 논리 어드레스(LBA0)와 1번 어드레스(VSA1) 간의 맵핑 정보가 반영되고, 무효 카운트 데이터(INVALID COUNT ARRAY)에는 0번 스트라이프(WBSTRP0)의 무효 카운트가 변경될 수 있다. 메모리 컨트롤러(100)에 의해 생성된 저널 로그(JLOG2)는 제2 저널 엔트리(JE2)에 저장되고, 0번 논리 어드레스(LBA0)와 1번 어드레스(VSA1) 간의 맵핑 정보를 나타낼 수 있다.
1번 논리 어드레스(LBA1)는 2번 어드레스(VSA2)에 맵핑되고, 1번 논리 어드레스(LBA1)에 대응되는 쓰기 데이터(DATA3)는 2번 어드레스(VSA2)를 갖는 메모리 블록에 저장될 수 있다. 오프셋 정보(OFFSET)의 값은 1에서 2로 변경될 수 있다. 맵 데이터(BLOCK MAP)에는 1번 논리 어드레스(LBA1)와 2번 어드레스(VSA2) 간의 맵핑 정보가 반영될 수 있다. 저널 로그(JLOG3)는 제3 저널 엔트리(JE3)에 저장되고, 1번 논리 어드레스(LBA1)와 2번 어드레스(VSA2) 간의 맵핑 정보를 나타낼 수 있다.
0번 논리 어드레스(LBA0)는 3번 어드레스(VSA3)에 맵핑되고, 0번 논리 어드레스(LBA0)에 대응되는 쓰기 데이터(DATA4)는 3번 어드레스(VSA3)를 갖는 메모리 블록에 저장될 수 있다. 오프셋 정보(OFFSET)는 2에서 3로 변경될 수 있다. 쓰기 데이터(DATA2)는 무효 처리될 수 있다. 맵 데이터(BLOCK MAP)에는 0번 논리 어드레스(LBA0)와 3번 어드레스(VSA3) 간의 맵핑 정보가 반영되고, 무효 카운트 데이터(INVALID COUNT ARRAY)에는 0번 스트라이프(WBSTRP0)의 무효 카운트가 변경될 수 있다. 제4 저널 엔트리(JE4)에 저장되는 저널 로그(JLOG4)는 0번 논리 어드레스(LBA0)와 3번 어드레스(VSA3) 간의 맵핑 정보를 나타낼 수 있다.
체크포인트 사이즈(CPS)의 저널 로그(JLOG1~JLOG4)가 저널 버퍼(202a)에 저장되면, 체크포인트 이벤트가 발생할 수 있다. 체크포인트 이벤트가 발생한 이후, 0번 논리 어드레스(LBA0)는 4번 어드레스(VSA4)에 맵핑되고, 0번 논리 어드레스(LBA0)에 대응되는 쓰기 데이터(DATA5)는 4번 어드레스(VSA4)를 갖는 메모리 블록에 저장될 수 있다. 오프셋 정보(OFFSET)는 3에서 4로 변경될 수 있다. 쓰기 데이터(DATA4)는 무효 처리될 수 있다. 맵 데이터(BLOCK MAP)에는 0번 논리 어드레스(LBA0)와 4번 어드레스(VSA4) 간의 맵핑 정보가 반영될 수 있다. 무효 카운트 데이터(INVALID COUNT ARRAY)에서는 0번 스트라이프(WBSTRP0)의 무효 카운트가 변경될 수 있다. 제5 저널 엔트리(JE5)에 저장되는 저널 로그(JLOG5)는 0번 논리 어드레스(LBA0)와 4번 어드레스(VSA4) 간의 맵핑 정보를 나타낼 수 있다.
1번 논리 어드레스(LBA1)는 5번 어드레스(VSA5)에 맵핑되고, 1번 논리 어드레스(LBA1)에 대응되는 쓰기 데이터(DATA6)는 5번 어드레스(VSA5)를 갖는 메모리 블록에 저장될 수 있다. 오프셋 정보(OFFSET)는 4에서 5로 변경될 수 있다. 쓰기 데이터(DATA3)는 무효 처리될 수 있다. 맵 데이터(BLOCK MAP)에는 1번 논리 어드레스(LBA1)와 5번 어드레스(VSA5) 간의 맵핑 정보가 반영될 수 있다. 무효 카운트 데이터(INVALID COUNT ARRAY)에는 0번 스트라이프(WBSTRP0)의 무효 카운트가 변경 될 수 있다. 제6 저널 엔트리(JE6)에 저장되는 저널 로그(JLOG6)는 1번 논리 어드레스(LBA1)와 5번 어드레스(VSA5) 간의 맵핑 정보를 나타낼 수 있다.
체크포인트가 개시되면, 메모리 컨트롤러(100)는 업데이트된 메타 데이터를 비휘발성 저장 장치(200b)에 플러쉬할 것을 명령하는 플러쉬 커맨드를 휘발성 메모리 장치(300)에 제공할 수 있다.
메타 데이터가 비휘발성 저장 장치(200b)에 저장된 이후, 메모리 컨트롤러(100)는 저널 버퍼(202a)에 저장된 저널 로그(JLOG1~JLOG4)를 릴리즈하도록 비휘발성 메모리 장치(200a)를 제어할 수 있다.
전술한 바에 의하면, 대표 메타 데이터에 해당되는 맵 데이터의 업데이트 정보를 저널링함으로써, 저널링에 의한 성능 감소가 최소화되고 저장 장치에서 불필요하게 낭비되는 전력이 감소될 수 있다.
도 14는 쓰기 버퍼에 저장된 쓰기 데이터를 플러쉬하는 동작을 설명하기 위한 도면이다.
도 14에 도시된 실시예를 설명함에 있어서, 비휘발성 저장 장치(200b)는 8개의 비휘발성 저장 장치들(200b_1~200b_8)이 논리적으로 하나의 비휘발성 메모리 장치로 운용되는 것이고, 8개의 비휘발성 저장 장치들(200b_1~200b_8) 각각은 메모리 칩으로 구현되는 것으로 가정한다.
도 14를 참조하면, 쓰기 버퍼(201a)의 크기에 해당되는 쓰기 데이터(DATA)가 쓰기 버퍼(201a)에 저장되면, 메모리 컨트롤러(100)는 쓰기 버퍼(201a)에 저장된 쓰기 데이터(DATA)를 제1 메모리 블록 그룹에 저장하도록 비휘발성 메모리 장치(200a)를 제어할 수 있다. 여기서, 제1 메모리 블록 그룹은, 예를 들면, 7개의 비휘발성 저장 장치들(200b_1~200b_7) 각각에 포함되고 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 메모리 블록 그룹은, 예를 들면, 8번 비휘발성 메모리 장치(200b_8)에 포함되고 0번 스트라이프(STRP0)에 포함되는 메모리 블록(BLKO)을 포함할 수 있다.
도 13 및 도 14를 참조하면, 쓰기 버퍼(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 메모리 블록 그룹에 저장될 수 있다.
도 14에 도시된 다른 실시예에 의하면, 우선적으로 쓰기 데이터가 패리티 없이 쓰기 버퍼(201a)에 저장되고 쓰기 버퍼(201a)의 메모리 크기만큼 저장된 쓰기 데이터에 대한 패리티가 나중에 한번에 생성될 수 있다. 따라서, 다른 실시예에 따른 쓰기 동작의 성능이 일 실시예에 따른 쓰기 동작의 성능보다 높을 수 있다.
도 11에 도시된 저장 장치(1000')는 도 1에 도시된 저장 장치(1000)보다 물리적 구성인 비휘발성 메모리 장치(200a)를 더 포함한다는 점에서, 도 1에 도시된 저장 장치(1000)의 집적도가 도 11에 도시된 저장 장치(1000')의 집적도보다 더 높을 수 있다.
도 15는 메모리 컨트롤러의 제1 동작 방법을 설명하기 위한 흐름도이다.
도 15를 참조하면, 메모리 컨트롤러(100)는 호스트(2000)로부터 쓰기 요청, 논리 어드레스 및 쓰기 데이터를 수신한다(S110). 여기서, 쓰기 데이터는 트랜잭션으로 그룹화되지 않는 쓰기 데이터일 수 있다. 이에 대한 설명은 도 5 또는 도 13을 참조하여 전술한 바와 같다.
메모리 컨트롤러(100)는 쓰기 커맨드, 물리 어드레스 및 쓰기 데이터를 비휘발성 저장 장치(200)에 제공한다(S120). 이에 대한 설명은 도 5 또는 도 13을 참조하여 전술한 바와 같다.
메모리 컨트롤러(100)는 쓰기 데이터가 비휘발성 저장 장치(200)에 저장됨에 응답하여 저널 버퍼에 맵 데이터를 저널링할 수 있다(S130). 여기서, 저널 버퍼는 도 3을 참조하여 전술한 바와 같이 논리적으로 운용되는 제2 메모리 영역(201) 또는 도 11을 참조하여 전술한 바와 같이 물리적인 저널 버퍼(202a)일 수 있다. 맵 데이터를 저널링하는 것은 저널 버퍼에 저널 로그가 저장되는 것을 의미할 수 있다. 저널 로그는, 예를 들어, 논리 어드레스와 물리 어드레스 간의 맵핑 정보에 대한 업데이트 정보를 나타내는 데이터일 수 있다.
메모리 컨트롤러(100)는 체크포인트 단위의 크기를 갖는 저널 로그가 저널 버퍼에 저장되어 있는지 여부를 모니터링한다(S140). 여기서, 체크포인트 단위의 크기는 도 3을 참조하여 전술한 체크포인트 사이즈(CPS)일 수 있다.
저널 로그가 저장될 저장 공간이 저널 버퍼에 존재하면(S140, 예), 메모리 컨트롤러(100)는 체크포인트를 트리거한다(S150). 체크포인트가 트리거된다는 것은 체크포인트가 개시된다는 의미이며, 이에 대한 설명은 도 5을 참조하여 전술한 바와 같다.
체크포인트 단위의 크기를 갖는 저널 로그가 저널 버퍼에 저장되어 있지 않은 경우(S140, 아니오) 또는 단계 S140 이후, 메모리 컨트롤러(100)는 휘발성 메모리 장치(300)에 임시 저장된 메타 데이터를 업데이트한다(S160). 이에 대한 설명은 도 5 또는 도 13을 참조하여 전술한 바와 같다. 도시되지 않았지만, 단계 S150 이후에, 체크포인트 단위의 크기를 갖는 저널 로그는 삭제될 수 있다.
메모리 컨트롤러(100)는 쓰기 요청에 대한 응답을 호스트(2000)에 제공한다(S170).
도 16은 메모리 컨트롤러의 제2 동작 방법을 설명하기 위한 흐름도이다.
도 16을 참조하면, 메모리 컨트롤러(100)는 외부로부터 공급되는 전원에 응답하여 부팅 동작을 수행한다(S210).
메모리 컨트롤러(100)는 비휘발성 저장 장치(200)에 저장된 메타 데이터를 휘발성 메모리 장치(300)에 로드한다(S220). 이에 대한 설명은 도 10을 참조하여 전술한 바와 같다. 여기서, 비휘발성 저장 장치(200)에 저장된 메타 데이터는 전원이 공급되기 전에 제1 저널 로그 그룹을 기초로 업데이트된 데이터일 수 있다. 제1 저널 로그 그룹은, 예를 들면, 전원이 공급되기 전에 체크포인트에 따라 릴리즈된 제1 내지 제4 저널 로그(JLOG1~JLOG4)를 포함할 수 있다.
메모리 컨트롤러(100)는 저널 버퍼에 저장된 저널 로그를 휘발성 메모리 장치(300)에 로드한다(S230). 이에 대한 설명은 도 9를 참조하여 전술한 바와 같다.
메모리 컨트롤러(100)는 유효한 저널 로그가 저널 버퍼에 저장되어 있는지 확인한다(S240). 이에 대한 설명은 도 9를 참조하여 전술한 바와 같다.
유효한 저널 로그가 저널 버퍼에 저장되어 있으면(S240, 예), 메모리 컨트롤러(100)는 저널 로그를 기초로 휘발성 메모리 장치(300)에 로드된 메타 데이터를 업데이트한다(S250). 예를 들면, 비휘발성 저장 장치(200)에 포함된 복수의 메모리 블록들은 스트라이프 단위로 그룹화되고, 쓰기 데이터가 저장되는 메모리 블록의 물리 어드레스는 스트라이프 정보 및 오프셋 정보로 구성되며, 오프셋 정보가 첫 번째 메모리 블록의 번호를 가리키는 정보인 경우, 메모리 컨트롤러(100)는 스트라이프가 할당됨을 나타내는 제2 할당 데이터(STRIPE VALID BITMAP)를 생성할 수 있다. 다른 예를 들면, 복수의 스트라이프들은 미리 설정된 세그먼트 단위로 그룹화되고 스트라이프 정보는 각 세그먼트에 포함된 첫 번째 스트라이프의 번호를 가리키는 정보인 경우, 메모리 컨트롤러(100)는 스트라이프 정보에 대응되는 스트라이프를 포함하는 세그먼트가 할당됨을 나타내는 제1 할당 데이터(SEGMENT VALID BITMAP)를 생성할 수 있다.
실시예에서, 저널 버퍼에 제1 저널 로그와, 제1 저널 로그보다 나중에 저장된 제2 저널 로그가 저장될 수 있다. 제1 저널 로그는 제1 논리 어드레스와 제1 물리 어드레스 간의 제1 맵핑 정보를 나타내고 제2 저널 로그는 제1 논리 어드레스와 제2 물리 어드레스 간의 제2 맵핑 정보를 나타내는 경우, 메모리 컨트롤러(100)는 제1 저널 로그를 기초로 제1 맵핑 정보를 나타내는 제1 맵 데이터를 생성하고, 제1 맵 데이터가 생성된 이후에, 제2 저널 로그를 기초로 제1 맵 데이터를 제2 맵핑 정보를 나타내는 제2 맵 데이터로 변경한다. 그리고, 메모리 컨트롤러(100)는 제2 맵 데이터가 생성됨에 응답하여, 제1 물리 어드레스를 갖는 메모리 블록에 대한 무효 카운트가 증가된 무효 카운트 데이터를 생성할 수 있다. 이에 대한 설명은 도 12를 참조하여 전술한 바와 같다.
메모리 컨트롤러(100)는 업데이트된 메타 데이터를 비휘발성 저장 장치(200)에 저장한다(S260). 예를 들면, 메모리 컨트롤러(100)는 업데이트된 메타 데이터를 저장할 것을 명령하는 쓰기 커맨드, 업데이트된 메타 데이터가 저장될 메모리 블록의 물리 어드레스, 및 업데이트된 메타 데이터를 비휘발성 저장 장치(200)에 제공할 수 있다. 이에 대한 설명은 도 11을 참조하여 전술한 바와 같다.
유효한 저널 로그가 저널 버퍼에 저장되어 있지 않은 경우(S240, 아니오) 또는 단계 S260 이후, 부팅 완료 응답을 호스트(2000)에 제공한다(S270).
전술한 바에 의하면, 서든 파워 오프, 커널 패닉 등 예상치 못한 이벤트가 발생한 경우에도 메타 데이터와 저널 로그 간의 일관성이 보장되고 저장 장치의 신뢰성이 개선될 수 있다.
Claims (10)
- 트랜잭션(transaction)으로 그룹화되지 않는 쓰기 데이터가 저장된 쓰기 버퍼와, 상기 쓰기 데이터의 메타 데이터에 대한 업데이트 정보를 나타내는 저널 로그가 저장된 저널 버퍼를 포함하는 비휘발성 메모리 장치;
제1 메타 데이터를 임시 저장하는 휘발성 메모리 장치, 상기 제1 메타 데이터는, 체크포인트 이벤트(checkpoint event)에 응답하여 상기 저널 버퍼에서 릴리즈(release)될 저널 로그를 포함하는 제1 저널 로그 그룹을 기초로 업데이트된 데이터임; 및
상기 저널 버퍼에서 상기 제1 저널 로그 그룹을 릴리즈하는 체크포인트(checkpoint)를 개시하고, 상기 저널 버퍼에서 상기 제1 저널 로그 그룹을 제외한 저널 로그를 포함하는 제2 저널 로그 그룹을 기초로 상기 제1 메타 데이터를 제2 메타 데이터로 업데이트하고, 상기 제2 메타 데이터를 저장하도록 상기 휘발성 메모리 장치를 제어하는 메모리 컨트롤러를 포함하는, 저장 장치. - 제1 항에 있어서,
상기 저널 로그는,
호스트로부터 제공되는 논리 어드레스와 상기 쓰기 버퍼의 어드레스 간의 맵핑 정보에 대한 업데이트 정보를 나타내는 데이터이고,
상기 제1 메타 데이터는,
상기 맵핑 정보를 나타내는 맵 데이터, 상기 쓰기 버퍼에서 할당된 저장 공간에 대한 정보를 나타내는 할당 데이터를 포함하는, 저장 장치. - 제1 항에 있어서,
상기 쓰기 데이터가 저장되는 제1 메모리 블록 그룹과, 상기 메타 데이터가 저장되는 제2 메모리 블록 그룹을 포함하는 비휘발성 저장 장치를 더 포함하고,
상기 메모리 컨트롤러는,
상기 휘발성 메모리 장치에 임시 저장된 상기 제2 메타 데이터를 상기 비휘발성 저장 장치에 플러쉬할 것을 명령하는 플러쉬 커맨드를 상기 휘발성 메모리 장치에 제공하는, 저장 장치. - 제3 항에 있어서,
상기 메모리 컨트롤러는,
상기 제2 메타 데이터가 상기 비휘발성 저장 장치에 저장된 이후, 상기 제1 저널 로그 그룹을 삭제할 것을 명령하는 저널링 커맨드를 상기 비휘발성 메모리 장치에 제공하는, 저장 장치. - 외부로부터 공급되는 전원에 응답하여, 비휘발성 저장 장치에 저장된 제1 메타 데이터와 저널 버퍼에 저장된 저널 로그를 수신하는 단계, 상기 제1 메타 데이터는, 상기 전원이 공급되기 전에 상기 저널 버퍼에서 릴리즈(release)된 저널 로그를 포함하는 제1 저널 로그 그룹을 기초로 업데이트된 데이터임;
상기 저널 로그를 기초로 논리어드레스와 물리 어드레스 간의 맵핑 정보를 나타내는 맵 데이터와 상기 비휘발성 저장 장치에서 할당된 메모리 영역에 대한 정보를 나타내는 할당 데이터를 포함하는 제2 메타 데이터를 생성하는 단계; 및
상기 제2 메타 데이터를 저장할 것을 명령하는 쓰기 커맨드와, 상기 비휘발성 저장 장치에 포함된 복수의 메모리 블록들 중 메타 데이터가 저장되는 메모리 블록의 물리 어드레스, 및 상기 제2 메타 데이터를 상기 비휘발성 저장 장치에 제공하는 단계를 포함하는, 메모리 컨트롤러의 동작 방법. - 제5 항에 있어서,
상기 저널 로그는,
호스트로부터 제공되는 논리 어드레스와 상기 비휘발성 저장 장치에 포함된 복수의 메모리 블록들 중 쓰기 데이터가 저장되는 메모리 블록의 물리 어드레스 간의 맵핑 정보에 대한 업데이트 정보를 나타내는 데이터이고,
상기 메모리 영역은,
상기 비휘발성 저장 장치에 포함된 복수의 메모리 블록들이 하나의 메모리 블록으로 운용되는 논리적 그룹인 스트라이프를 둘 이상 포함하고,
상기 쓰기 데이터가 저장된 메모리 블록의 물리 어드레스는,
상기 스트라이프의 번호를 가리키는 스트라이프 정보, 상기 스트라이프에 포함된 메모리 블록들 중 상기 쓰기 데이터가 마지막으로 저장된 메모리 블록의 번호를 가리키는 오프셋 정보로 구성되는, 메모리 컨트롤러의 동작 방법. - 제6 항에 있어서,
상기 오프셋 정보는,
첫 번째 메모리 블록의 번호를 가리키는 정보이고,
상기 제2 메타 데이터를 생성하는 단계는,
상기 스트라이프가 할당됨을 나타내는 데이터를 상기 할당 데이터로 생성하는, 메모리 컨트롤러의 동작 방법. - 제7 항에 있어서,
상기 메모리 영역은,
복수의 스트라이프들이 논리적으로 그룹화된 세그먼트를 둘 이상 포함하고,
상기 스트라이프 정보는,
각 세그먼트에 포함된 첫 번째 스트라이프의 번호를 가리키는 정보이고,
상기 제2 메타 데이터를 생성하는 단계는,
상기 스트라이프 정보에 대응되는 스트라이프를 포함하는 세그먼트가 할당됨을 나타내는 데이터를 상기 할당 데이터로 생성하는, 메모리 컨트롤러의 동작 방법. - 제6 항에 있어서,
상기 저널 로그는,
제1 논리 어드레스와 제1 물리 어드레스 간의 제1 맵핑 정보를 나타내는 제1 저널 로그와, 상기 제1 논리 어드레스와 제2 물리 어드레스 간의 제2 맵핑 정보를 나타내고 상기 제1 저널 로그보다 나중에 저장되는 제2 저널 로그를 포함하고,
상기 제2 메타 데이터를 생성하는 단계는,
상기 제1 저널 로그를 기초로 상기 제1 맵핑 정보를 나타내는 제1 맵 데이터를 생성하는 단계; 및
상기 제1 맵 데이터가 생성된 이후에, 상기 제2 저널 로그를 기초로 상기 제1 맵 데이터를 상기 제2 맵핑 정보를 나타내는 제2 맵 데이터로 변경하는 단계를 포함하는, 메모리 컨트롤러의 동작 방법. - 제9 항에 있어서,
상기 제2 메타 데이터는,
세그먼트 단위로 메모리 블록을 무효로 처리한 횟수인 무효 카운트를 나타내는 무효 카운트 데이터를 더 포함하고,
상기 제2 메타 데이터를 생성하는 단계는,
상기 제2 맵 데이터가 생성됨에 응답하여, 제1 물리 어드레스를 갖는 메모리 블록에 대한 무효 카운트가 증가된 무효 카운트 데이터를 생성하는 단계를 더 포함하는, 메모리 컨트롤러의 동작 방법.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/479,704 US11620084B2 (en) | 2020-12-30 | 2021-09-20 | Storage device including memory controller and operating method of memory controller |
EP21207487.6A EP4024220B1 (en) | 2020-12-30 | 2021-11-10 | Storage device including memory controller and operating method of memory controller |
CN202111368405.7A CN114691402A (zh) | 2020-12-30 | 2021-11-18 | 包括存储器控制器的存储设备和存储器控制器的操作方法 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20200188209 | 2020-12-30 | ||
KR1020200188209 | 2020-12-30 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220097102A true KR20220097102A (ko) | 2022-07-07 |
Family
ID=82398164
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210034867A KR20220097102A (ko) | 2020-12-30 | 2021-03-17 | 메모리 컨트롤러를 포함하는 저장 장치 및 메모리 컨트롤러의 동작 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20220097102A (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230040696A1 (en) * | 2021-08-03 | 2023-02-09 | Kioxia Corporation | In-memory journal |
-
2021
- 2021-03-17 KR KR1020210034867A patent/KR20220097102A/ko active Search and Examination
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230040696A1 (en) * | 2021-08-03 | 2023-02-09 | Kioxia Corporation | In-memory journal |
US11650759B2 (en) * | 2021-08-03 | 2023-05-16 | Kioxia Corporation | Method and apparatus of managing a non-volatile memory using an in-memory journal |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11947400B2 (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 | |
CN103488578B (zh) | 虚拟存储设备(vmd)应用/驱动器 | |
EP4024220B1 (en) | Storage device including memory controller and operating method of memory controller | |
JP5198245B2 (ja) | メモリシステム | |
US10884630B2 (en) | Storage system | |
KR101186788B1 (ko) | 메모리 시스템 및 메모리 시스템의 제어 방법 | |
JP5571691B2 (ja) | 記憶装置におけるマッピングアドレステーブルの維持 | |
US10503606B2 (en) | Data backup method, data recovery method and storage controller | |
EP2793132B1 (en) | Method and system for recovery of metadata in a flash memory system | |
EP4024219B1 (en) | Storage device including memory controller and operating method of the memory controller | |
CN112035294B (zh) | 安全日志文件系统及其实现方法和介质 | |
JP7475989B2 (ja) | メモリシステムおよび制御方法 | |
KR20220097102A (ko) | 메모리 컨트롤러를 포함하는 저장 장치 및 메모리 컨트롤러의 동작 방법 | |
KR20220097101A (ko) | 메모리 컨트롤러를 포함하는 저장 장치 및 메모리 컨트롤러의 동작 방법 | |
WO2010145967A1 (en) | Memory device for managing the recovery of a non volatile memory | |
US10732875B2 (en) | Data processing method for solid state drive | |
JP2024127539A (ja) | メモリシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination |