KR102295208B1 - 프로그램 영역을 동적으로 할당하는 저장 장치 및 그것의 프로그램 방법 - Google Patents

프로그램 영역을 동적으로 할당하는 저장 장치 및 그것의 프로그램 방법 Download PDF

Info

Publication number
KR102295208B1
KR102295208B1 KR1020140184466A KR20140184466A KR102295208B1 KR 102295208 B1 KR102295208 B1 KR 102295208B1 KR 1020140184466 A KR1020140184466 A KR 1020140184466A KR 20140184466 A KR20140184466 A KR 20140184466A KR 102295208 B1 KR102295208 B1 KR 102295208B1
Authority
KR
South Korea
Prior art keywords
area
memory
data
out ratio
memory area
Prior art date
Application number
KR1020140184466A
Other languages
English (en)
Other versions
KR20160075918A (ko
Inventor
공춘엄
김규형
박윤원
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020140184466A priority Critical patent/KR102295208B1/ko
Priority to US14/965,521 priority patent/US10037160B2/en
Publication of KR20160075918A publication Critical patent/KR20160075918A/ko
Application granted granted Critical
Publication of KR102295208B1 publication Critical patent/KR102295208B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0207Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
    • 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/0215Addressing or allocation; Relocation with look ahead addressing means
    • 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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]

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)
  • Mathematical Physics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명은 저장 장치에 관한 것으로, 제 1 메모리 영역과 제 2 메모리 영역으로 구분되는 메모리 블록들을 포함하는 불휘발성 메모리 장치 그리고 특정 속성의 데이터를 프로그램하는 경우, 상기 제 1 메모리 영역의 웨어 아웃 비(wear out ratio)와 상기 제 2 메모리 영역의 웨어 아웃 비에 따라 상기 특정 속성의 데이터를 프로그램할 메모리 영역을 결정하는 메모리 컨트롤러를 포함하되, 상기 웨어 아웃 비는 어느 한 메모리 영역의 허용 가능 최대 소거 횟수에 대한 그 메모리 영역의 메모리 블록들의 현재 최대 소거 횟수의 비이다.

Description

프로그램 영역을 동적으로 할당하는 저장 장치 및 그것의 프로그램 방법{STORAGE DEVICE DYNAMICALLY ALLOCATING PROGRAM AREA AND PROGRAM METHOD THEREROF}
본 발명은 반도체 저장 장치에 관한 것으로, 더욱 상세하게는 데이터가 프로그램될 영역을 동적으로 할당하는 저장 장치 및 그것의 프로그램 방법에 관한 것이다.
최근 디지털 카메라, MP3 플레이어, 휴대 전화, PDA 등과 같은 휴대용 전자 장치가 많이 사용되고 있다. 이러한 휴대용 전자 장치에는 플래시 메모리가 주로 사용되고 있다. 이는 플래시 메모리가 저전력 및 고집적 등의 특성을 갖는 불휘발성 소자이기 때문이다.
플래시 메모리는 소거와 쓰기 동작의 단위가 일치하지 않기 때문에, 플래시 변환 계층(FTL: Flash Translation Layer)이라는 소프트웨어가 이러한 단점을 극복하기 위하여 사용된다. 플래시 변환 계층(FTL)의 주요 기능 중에는 주소 맵핑(Address Mapping) 기능이 있다. 플래시 변환 계층(FTL)은 호스트로부터 논리 주소(LA: Logical Address)를 입력받고, 이를 물리 주소(PA: Physical Address)로 변환한다. 여기에서, 물리 주소(PA)는 실제 플래시 메모리에서 사용할 주소이다.
플래시 변환 계층(FTL)은 호스트로부터 전송받은 쓰기 데이터나 내부 데이터들을 메모리 블록에 저장한다. 플래시 변환 계층(FTL)이 메모리 블록에 이러한 데이터들을 저장할 때, 데이터의 신뢰성이 중요한 경우 예컨대, 메타 데이터의 경우 높은 신뢰성을 가지는 메모리 블록들에 저장한다. 그리고 메타 데이터를 제외한 나머지 데이터들은 신뢰성은 다소 낮지만 단위 셀당 더 많은 데이터들을 저장할 수 있는 메모리 블록들에 저장한다. 즉, 메모리 블록들을 서로 다른 관리 방식으로 구분하여 사용한다. 예시적으로 싱글 레벨 셀(Single Level Cell, SLC) 방식으로 관리되는 메모리 블록들과 멀티 레벨 셀(Multi Level Cell, MLC) 방식으로 관리되는 메모리 블록들이 있다.
이와 같이 메모리 블록들을 사용하는 경우, 서로 다른 관리 방식으로 인한 메모리 블록들 사이의 수명 차이가 발생하게 된다. 즉, SLC 방식으로 관리되는 메모리 블록들의 수명은 여유가 있음에도 불구하고, MLC 방식으로 관리되는 메모리 블록들의 수명이 다하여 전체 저장 장치의 수명이 다하게 된다. 즉, 저장 장치에서 요구되는 수명 조건을 만족하지 경우가 발생할 수 있다.
본 발명의 목적은 불휘발성 메모리 장치를 포함하는 저장 장치에서, 저장 장치의 수명을 개선할 수 있는 방법을 제공하는 데 있다.
본 발명에 따른 저장 장치는 제 1 메모리 영역과 제 2 메모리 영역으로 구분되는 메모리 블록들을 포함하는 불휘발성 메모리 장치 그리고 특정 속성의 데이터를 프로그램하는 경우, 상기 제 1 메모리 영역의 웨어 아웃 비(wear out ratio)와 상기 제 2 메모리 영역의 웨어 아웃 비에 따라 상기 특정 속성의 데이터를 프로그램할 메모리 영역을 결정하는 메모리 컨트롤러를 포함하되, 상기 웨어 아웃 비는 어느 한 메모리 영역의 허용 가능 최대 소거 횟수에 대한 그 메모리 영역의 메모리 블록들의 현재 최대 소거 횟수의 비이다.
본 발명에 따른 메타 영역과 유저 영역으로 구분되는 메모리 블록들을 포함하는 불휘발성 메모리 장치의 프로그램 방법은, 상기 메타 영역과 상기 유저 영역의 웨어 아웃 비(wear out ratio)를 계산하는 단계 및 상기 계산된 메타 영역과 유저 영역의 웨어 아웃 비에 따라 특정 속성의 데이터를 프로그램할 영역을 결정하는 단계를 포함하되, 상기 웨어 아웃 비는 어느 한 영역의 허용 가능 최대 소거 횟수에 대한 그 영역의 메모리 블록들의 현재 최대 소거 횟수의 비이다.
본 발명에 따른 저장 장치는 제 1 메모리 영역과 제 2 메모리 영역으로 구분되는 메모리 블록들을 포함하는 불휘발성 메모리 장치 그리고 상기 불휘발성 메모리 장치를 제어하기 위한 플래시 변환 계층(FTL)을 구동하는 메모리 컨트롤러를 포함하되, 상기 플래시 변환 계층은, 상기 메모리 블록들 각각의 소거 횟수를 카운트하는 소거 카운터, 상기 제 1 메모리 영역 및 상기 제 2 메모리 영역의 웨어 아웃 비를 계산하는 웨어 아웃 비 계산기, 그리고 상기 계산된 웨어 아웃 비에 따라 특정 속성의 데이터를 프로그램할 메모리 영역을 결정하는 프로그램 영역 결정기를 포함하되, 상기 웨어 아웃 비는 어느 한 메모리 영역의 허용 가능 최대 소거 횟수에 대한 그 메모리 영역의 메모리 블록들의 현재 최대 소거 횟수의 비이다.
본 발명의 실시 예에 따른 저장 장치에 따르면 특정 데이터를 복수의 메모리 영역에 교대로 프로그램함으로써, 복수의 메모리 영역의 수명이 거의 동시에 종료되며 따라서 저장 장치의 수명이 개선될 수 있다.
도 1은 본 발명의 실시 예에 따른 사용자 장치를 보여주는 블록도이다.
도 2는 도 1의 불휘발성 메모리 장치의 예를 간략히 보여주는 블록도이다.
도 3은 도 1의 저장 장치를 구동하기 위한 소프트웨어의 계층 구조를 보여주는 블록도이다.
도 4는 저장 장치의 소프트웨어 계층을 구체적으로 보여주는 블록도이다.
도 5는 도 4의 불휘발성 메모리 장치를 예시적으로 나타낸 것으로 본 발명의 웨어 아웃 비의 계산 방법을 설명하기 위한 도면이다.
도 6은 본 발명에 따른 프로그램 영역 할당 방법을 예시적으로 보여주는 도면이다.
도 7은 본 발명에 따른 프로그램 영역 할당 방법을 예시적으로 보여주는 흐름도이다.
도 8은 본 발명에 따른 프로그램 영역 할당 방법을 사용한 경우와 이를 사용하지 않은 경우의 프로그램 동작을 비교하기 위한 그래프이다.
도 9는 본 발명의 실시 예에 따른 솔리드 스테이트 디스크(이하, SSD)를 포함하는 사용자 장치를 보여주는 블록도이다.
도 10은 본 발명의 다른 실시 예에 따른 저장 장치를 예시적으로 보여주는 블록도이다.
도 11은 본 발명의 다른 실시 예에 따른 데이터 저장 장치를 예시적으로 보여주는 블록도이다.
도 12는 본 발명에 따른 저장 장치 및 그것을 포함하는 컴퓨팅 시스템의 개략적인 구성을 보여주는 도면이다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
이하에서는, 본 발명의 특징 및 기능을 설명하기 위한 불휘발성 저장 매체로서 플래시 메모리 장치를 한 예로서 사용할 것이다. 하지만, 이 기술 분야에 정통한 사람은 여기에 기재된 내용에 따라 본 발명의 다른 이점들 및 성능을 쉽게 이해할 수 있을 것이다. 또한, 저장 매체로서 또 다른 불휘발성 메모리 장치들로 구성될 수 있다. 예를 들면, 저장 매체로서 PRAM, MRAM, ReRAM, FRAM, NOR 플래시 메모리 등이 사용될 수 있으며, 이종의 메모리 장치들이 혼용되는 메모리 시스템에도 적용될 수 있다.
본 발명은 다른 실시 예들을 통해 구현되거나 적용될 수 있을 것이다. 게다가, 상세한 설명은 본 발명의 범위, 기술적 사상 그리고 다른 목적으로부터 상당히 벗어나지 않고 관점 및 응용에 따라 수정되거나 변경될 수 있다. 이하, 본 발명에 따른 실시 예를 첨부된 도면을 참조하여 상세히 설명한다.
도 1은 본 발명의 실시 예에 따른 사용자 장치를 보여주는 블록도이다. 도 1을 참조하면, 본 발명에 따른 사용자 장치(100)는 호스트(110)와 저장 장치를 포함한다. 저장 장치는 메모리 컨트롤러(120) 및 불휘발성 메모리 장치(130)로 구성된다.
쓰기 요청이 발생하면, 호스트(110)는 쓰기 데이터(Data)와 논리 어드레스(Logical Address: LA)를 저장 장치로 전달한다. 호스트(110)는, 예를 들면, 개인용/휴대용 컴퓨터, PDA, PMP, MP3 플레이어 등과 같은 휴대용 전자 장치들, HDTV, 그리고 그와 같은 것을 포함할 것이다.
메모리 컨트롤러(120)는 호스트(110)와 불휘발성 메모리 장치(130)를 인터페이싱한다. 메모리 컨트롤러(120)는 호스트(110)의 쓰기 명령에 응답하여 호스트(110)로부터 제공되는 데이터를 불휘발성 메모리 장치(130)에 기입한다. 또한, 메모리 컨트롤러(120)는 호스트(110)로부터의 읽기 명령에 응답하여 불휘발성 메모리 장치(130)의 독출 동작을 제어한다. 또한, 메모리 컨트롤러(120)는 불휘발성 메모리 장치(130)에 대한 웨어 레벨링(wear leveling), 가비지 컬렉션(garbage collection) 및 배드 블록 관리(bad block managing) 등과 같은 배경 동작(background operation)들을 수행한다.
메모리 컨트롤러(120)는 호스트(110)로부터 제공되는 쓰기 데이터를 불휘발성 메모리 장치(130)의 메모리 블록들에 저장한다. 쓰기 데이터는 쓰기 패턴(write pattern)에 따라 연속 데이터(sequential data)와 랜덤 데이터(random data)로 구분될 수 있다. 메모리 컨트롤러(120)는 호스트(110)로부터 제공된 쓰기 데이터뿐만 아니라 불휘발성 메모리 장치(130)의 관리 동작에서 발생된 쓰기 데이터들을 불휘발성 메모리 장치(130)의 메모리 블록에 저장한다. 여기에서 관리 동작에서 발생된 쓰기 데이터란 예컨대, 메타 데이터(meat data), LSB 백업 데이터(Least Significant Bit backup data) 및 가비지 컬렉션 데이터(garbage collection data) 등을 포함할 수 있다. 이하에서, 상술한 연속 데이터, 랜덤 데이터, 메타 데이터, LSB 백업 데이터 및 가비지 컬렉션 데이터 등을 컨트롤러 쓰기 데이터들로 지칭한다. 이러한 컨트롤러 쓰기 데이터들은 상술한 특정 속성의 데이터들의 집합이다.
메모리 컨트롤러(120)는 컨트롤러 쓰기 데이터들을 불휘발성 메모리 장치(130)의 메모리 블록들에 저장한다. 여기에서 불휘발성 메모리 장치(130)는 제 1 메모리 영역과 제 2 메모리 영역으로 구분될 수 있다. 각 메모리 영역들은 복수의 메모리 블록들로 구성된다. 제 1 메모리 영역과 제 2 메모리 영역은 서로 다른 방식으로 관리될 수 있다. 예시적으로, 제 1 메모리 영역은 싱글 레벨 셀(Single Level Cell, SLC) 방식으로, 제 2 메모리 영역은 멀티 레벨 셀(Multi Level Cell, MLC) 방식으로 관리될 수 있다. 또한, 컨트롤러 쓰기 데이터들 중 일부는 제 1 메모리 영역에 프로그램되고 나머지 일부는 제 2 메모리 영역에 프로그램될 수 있다. 예시적으로, 메타 데이터는 제 1 메모리 영역에 프로그램되고, 메타 데이터를 제외한 나머지 컨트롤러 쓰기 데이터들은 제 2 메모리 영역에 프로그램될 수 있다. 즉, 각 컨트롤러 쓰기 데이터별로 미리 설정된 메모리 영역들에 프로그램될 수 있다.
일반적으로, SLC 방식으로 관리되는 메모리 블록들은 MLC 방식으로 관리되는 메모리 블럭들에 비해 내구성(endurance)과 데이터 신뢰성이 높은 편이다. 따라서 자주 프로그램되고 데이터의 신뢰성이 중요한 메타 데이터를 제 1 메모리 영역에 프로그램하고, 나머지 컨트롤러 쓰기 데이터들을 제 2 메모리 영역에 프로그램할 수 있다. 이 경우, 제 1 메모리 영역과 제 2 메모리 영역의 내구성 차이로 인해 어느 한 메모리 영역의 수명이 먼저 끝나게 된다. 따라서 나머지 메모리 영역의 수명이 남아 있다고 하더라도 불휘발성 메모리 장치(130)의 수명이 끝나게 된다. 본 발명은 특정 속성의 데이터를 제 1 메모리 영역과 제 2 메모리 영역에 교대로 프로그램하여 제 1 메모리 영역과 제 2 메모리 영역의 수명이 거의 동시에 끝나도록 한다. 이를 위해, 본 발명은 각 메모리 영역의 마모 정도를 비율로 나타낸 웨어 아웃 비를 사용한다. 따라서 각 메모리 영역의 내구성 차이에 따른 마모 정도가 동일한 기준으로 비교될 수 있다.
메모리 컨트롤러(120)는 특정 속성의 데이터를 프로그램하기 전에 먼저 특정 속성의 데이터가 프로그램될 메모리 영역을 결정한다. 메모리 컨트롤러(120)는 컨트롤러 쓰기 데이터 중 메타 데이터를 불휘발성 메모리 장치(130)의 제 1 메모리 영역에 프로그램하고, 나머지 컨트롤러 쓰기 데이터들은 불휘발성 메모리 장치(130)의 제 2 메모리 영역에 프로그램할 수 있다. 메모리 컨트롤러(120)는 메모리 영역의 웨어 아웃 비에 따라 미리 설정된 특정 속성의 데이터를 프로그램할 메모리 영역을 결정한다. 웨어 아웃 비는 각 메모리 영역의 내구성(endurance)에 대한 해당 메모리 영역의 메모리 블록들의 소거 횟수(erase count)의 비(ratio)이다.
메모리 컨트롤러(120)는 플래시 변환 계층(Flash Translation Layer: 이하, FTL)이라는 소프트웨어를 포함할 수 있다. 플래시 변환 계층(FTL)은 호스트(110)의 파일 시스템(File System)과 불휘발성 메모리 장치(130) 사이에서 불휘발성 메모리 장치(130)의 삭제 연산을 감추기 위한 인터페이싱을 제공한다. 플래시 변환 계층(FTL)에 의하여 쓰기 전 소거(Erase-before-Write) 및 소거 단위와 쓰기 단위의 불일치라는 불휘발성 메모리 장치(130)의 단점이 보완될 수 있다. 또한, 플래시 변환 계층(FTL)은 불휘발성 메모리 장치(130)의 기입 동작시, 파일 시스템이 생성한 논리 주소(LA)를 불휘발성 메모리 장치(130)의 물리 주소(PA)로 맵핑(Mapping)시킨다.
불휘발성 메모리 장치(130)는 저장 장치의 저장 매체(Storage Medium)로서 제공된다. 예를 들면, 불휘발성 메모리 장치(130)는 대용량의 저장 능력을 가지는 낸드 플래시 메모리(NAND-type Flash memory)로 구성될 수 있다. 이 경우, 불휘발성 메모리 장치(130)는 서로 다른 방식으로 관리되는 메모리 영역들을 포함할 수 있다. 각 메모리 영역들은 복수의 메모리 블록들로 구성된다. 불휘발성 메모리 장치(130)는 PRAM, MRAM, ReRAM, FRAM 등의 차세대 불휘발성 메모리나 NOR 플래시 메모리로 구성될 수 있다. 또는, 불휘발성 메모리 장치(130) 중 일부 또는 전부가 휘발성인 DRAM이나 SRAM으로도 구성될 수 있음은 물론이다.
이상의 설명에 따르면, 본 발명의 저장 장치는 특정 속성의 데이터를 불휘발성 메모리 장치(130)에 프로그램 시 각 메모리 영역의 웨어 아웃 비를 고려하여 프로그램할 메모리 영역을 결정한다. 보다 구체적으로는 특정 속성의 데이터를 프로그램하는 경우, 메모리 컨트롤러(120)는 각 메모리 영역의 웨어 아웃 비를 계산하고, 계산된 웨어 아웃 비를 비교하여 그 결과에 따라 특정 속성의 데이터를 프로그램할 메모리 영역을 결정한다. 즉, 특정 속성의 데이터를 웨어 아웃 비에 따라 교대로 프로그램함으로써, 각 메모리 영역의 수명이 거의 동시에 끝날 수 있다. 또한, 특정 속성의 데이터를 지정된 프로그램 영역에만 프로그램하는 경우에 비해 불휘발성 메모리 장치(130)의 수명이 증가할 수 있다. 교대로 프로그램될 특정 속성의 데이터는 저장 장치의 사용 환경에 따라 미리 설정될 수 있다. 이 경우, 컨트롤러 쓰기 데이터들의 사용량과 사용 빈도 등을 고려하여 특정 속성의 데이터를 설정하는 경우 불휘발성 메모리 장치(130)의 수명을 더 증가시킬 수 있을 것이다.
도 2는 도 1의 불휘발성 메모리 장치(130)의 예를 간략히 보여주는 블록도이다. 도 2를 참조하면, 불휘발성 메모리 장치(130)는 셀 어레이(131), 행 디코더(132), 페이지 버퍼(133), 그리고 제어 로직(134)을 포함한다.
셀 어레이(131)는 복수의 메모리 블록(Memory block)을 포함할 수 있다. 도 2에서는 설명의 편의를 위하여 하나의 메모리 블록을 포함하는 셀 어레이(131)가 도시되어 있다. 메모리 블록들 각각은 복수의 페이지(Page)로 구성될 수 있다. 그리고 각각의 페이지는 복수의 메모리 셀들로 구성될 수 있다. 불휘발성 메모리 장치(130)에서, 메모리 블록 단위로 소거 동작이 수행되고, 페이지 단위로 쓰기 또는 읽기 동작이 수행될 수 있다.
셀 어레이(131)는 복수의 메모리 셀들을 포함할 수 있다. 메모리 셀들은 셀 스트링 구조(Cell String Structure)로 되어 있다. 하나의 셀 스트링은 스트링 선택 라인(SSL: String Selection Line)에 연결되는 스트링 선택 트랜지스터(SST), 복수의 워드 라인(WL0~WLn-1)에 연결되는 복수의 메모리 셀들, 그리고 접지 선택 라인(GSL: Ground Selection Line)에 연결되는 접지 선택 트랜지스터(GST)를 포함한다. 스트링 선택 트랜지스터(SST)는 비트 라인(BL)에 연결되고, 접지 선택 트랜지스터(GST)는 공통 소스 라인(CSL: Common Source Line)에 연결된다.
셀 어레이(131)는 기판 및 기판상에 수직으로 형성되는 복수의 셀 스트링들을 포함할 수 있다. 복수의 셀 스트링들 각각은 기판과 수직 방향으로 적층되는 복수의 셀 트랜지스터들을 포함할 수 있다. 다시 말해, 셀 어레이(131)는 3차원 구조(또는, 수직 구조)로 형성될 수 있다.
행 디코더(132)는 선택 라인(SSL, GSL) 또는 워드 라인(WL0~WLn-1)을 통해 셀 어레이(131)와 연결된다. 프로그램 또는 읽기 동작 시에, 행 디코더(132)는 어드레스(Address)를 입력받고, 어느 하나의 워드 라인(예를 들면, WL1)을 선택한다. 한편, 행 디코더(132)는 선택 워드 라인 또는 비선택 워드 라인으로 프로그램 또는 읽기 동작에 필요한 전압을 전달한다.
페이지 버퍼(133)는 기입 드라이버로서 또는 감지 증폭기로서 동작한다. 페이지 버퍼(133)는 선택된 메모리 셀들에 프로그램될 데이터나, 선택된 메모리 셀들로부터 읽은 데이터를 임시로 저장할 수 있다. 페이지 버퍼(133)는 비트 라인(BL0~BLm-1)을 통해 셀 어레이(131)와 연결된다. 페이지 버퍼(133)는 프로그램 동작 시에는 데이터(Data)를 입력받아 선택된 페이지의 메모리 셀들에 전달한다. 페이지 버퍼(133)는 읽기 동작 시에 선택된 페이지의 메모리 셀들로부터 데이터를 읽고, 외부로 데이터(Data)를 출력한다.
제어 로직(134)은 불휘발성 메모리 장치(130)의 프로그램, 읽기, 및 소거 등의 동작을 제어할 수 있다. 예를 들면, 프로그램 동작시 제어 로직(134)은 행 디코더(132)를 선택 워드 라인으로 프로그램 전압이 제공되도록 제어할 수 있다. 제어 로직(134)은 페이지 버퍼(133)를 제어함으로 선택된 페이지에 프로그램 데이터가 제공되도록 할 수 있다.
도 3은 도 1의 저장 장치를 구동하기 위한 소프트웨어의 계층 구조를 보여주는 블록도이다. 도 3을 참조하면, 플래시 변환 계층(230)은 애플리케이션 소프트웨어(210)와 파일 시스템(220)으로부터 전달받은 논리 주소(예를 들면, 섹터 주소와 섹터 수)를 물리 주소(PA)로 변환한다.
플래시 변환 계층(230)은 논리 주소(LA)에 대응하는 불휘발성 메모리 장치(240)의 물리 주소(PA)를 맵핑하기 위하여 주소 맵핑 테이블(Address Mapping Table)을 구성할 수 있다. 여기서, 플래시 변환 계층(230)이 구동되는 위치는 메모리 컨트롤러(120, 도 1 참조)의 내부일 수 있다. 또는, 플래시 변환 계층(230)의 기능들이 호스트(110)와 메모리 컨트롤러(120)에 분할 (Partition)되어 구동될 수도 있다.
플래시 변환 계층(230)의 어드레스 맵핑 방법에는 맵핑 단위에 따라 여러 가지가 있다. 대표적인 어드레스 맵핑 방법에는 페이지 맵핑 방법(Page mapping method), 블록 맵핑 방법(Block mapping method), 그리고 혼합 맵핑 방법(Hybrid mapping method)이 있다.
플래시 변환 계층(230)은 컨트롤러 쓰기 데이터들을 불휘발성 메모리 장치(240)의 메모리 블록들에 기입하는 프로그램 동작을 수행한다. 플래시 변환 계층(230)은 컨트롤러 쓰기 데이터들 중 특정 속성의 데이터를 프로그램할 메모리 영역을 메모리 영역의 웨어 아웃 비를 참조하여 결정한다. 웨어 아웃 비는 서로 다른 방식으로 관리되는 각 메모리 내구성(endurance)에 대한 메모리 블록들의 현재 최대 소거 횟수(erase count)에 대한 비율이다. 여기에서 내구성(endurance)은 각 메모리 영역의 허용 최대 소거 횟수일 수 있다. 웨어 아웃 비는 서로 다른 내구성을 가지는 각 메모리 영역의 웨어 아웃 정도를 동일한 기준으로 비교하기 위한 것이다. 즉, 각 메모리 영역의 웨어 아웃 정도를 동일한 기준으로 비교하여 특정 속성의 데이터를 프로그램할 영역을 결정함으로써, 각 메모리 영역의 수명이 거의 동일한 시점에서 끝날 수 있다.
도 4는 저장 장치의 소프트웨어 계층을 구체적으로 보여주는 블록도이다. 도 4를 참조하면, 저장 장치(300)는 파일 시스템(310), 플래시 변환 계층(320), 그리고 불휘발성 메모리 장치(330)를 포함한다. 플래시 변환 계층(320)은 파일 시스템(310)으로부터 쓰기 명령(CMD)과 쓰기 데이터(Data), 그리고 논리 어드레스(LA)를 입력받는다. 플래시 변환 계층(320)은 맵핑 테이블(322)을 사용하여 논리 어드레스(LA)를 물리 어드레스(PA)로 변환한다.
플래시 변환 계층(320)은 맵핑 테이블(322), 소거 카운터(324), 웨어 아웃 비 계산기(326), 프로그램 영역 결정기(328)와 같은 모듈을 포함할 수 있다. 맵핑 테이블(322)을 참조하여 플래시 변환 계층(320)은 논리 블록 번호(LBN)를 물리 블록 번호(PBN)로 변환한다.
소거 카운터(324)는 불휘발성 메모리 장치(330)의 각 메모리 영역들(332, 334)을 구성하는 메모리 블록들의 소거 횟수를 카운트한다.
웨어 아웃 비 계산기(326)는 제 1 메모리 영역(332) 및 제 2 메모리 영역(334)의 웨어 아웃 비를 하기의 식을 이용하여 계산한다.
[식]
웨어 아웃 비 = (메모리 영역의 메모리 블록들의 현재 최대 소거 횟수)/(메모리 영역의 허용 가능 최대 소거 횟수)
여기에서, 최대 소거 횟수(max erase count)는 웨어 아웃 비를 계산하는 시점에서의 메모리 영역의 메모리 블록들의 소거 횟수 중 가장 큰 소거 횟수이다. 또한, 메모리 영역의 허용 가능 최대 소거 횟수는 동작의 신뢰성을 보장할 수 있는 한도에서의 메모리 영역의 허용 가능 횟수를 의미한다. 메모리 영역의 허용 가능 최대 소거 횟수는 메모리 영역을 구성하는 메모리 셀의 타입에 따라 달라질 수 있다. 만약, 제 1 메모리 영역이 SLC 타입의 메모리 셀들로 구성되고, 제 2 메모리 영역이 MLC 방식의 메모리 셀들로 구성된다면, 허용 가능 최대 소거 횟수는 제 1 메모리 영역이 제 2 메모리 영역보다 클 것이다. 보다 구체적인 웨어 아웃 비의 계산 방법은 도 5를 참조하여 하기에서 설명될 것이다.
본 발명에 따른 웨어 아웃 비를 이용하는 경우, 서로 다른 허용 가능 최대 소거 횟수를 가지는 제 1 메모리 영역(332)과 제 2 메모리 영역(334)의 남은 수명(마모 정도(wear level))을 동일한 기준으로 비교할 수 있다. 만약 제 1 메모리 영역(332)의 웨어 아웃 비가 제 2 메모리 영역(334)의 웨어 아웃 비보다 더 크다면, 이는 제 1 메모리 영역(332)이 제 2 메모리 영역(334)보다 더 마모되었다는 의미이다. 따라서 본 발명에 따른 메모리 컨트롤러(120, 도 1 참조) 상대적으로 덜 마모된 제 2 메모리 영역에 특정 속성의 데이터를 프로그램할 수 있다.
프로그램 영역 결정기(328)는 웨어 아웃 비 계산기(326)에서 계산된 각 메모리 영역의 웨어 아웃 비를 비교하여 특정 속성의 데이터가 프로그램될 메모리 영역을 결정한다. 예시적으로, 프로그램 영역 결정기(328)는 제 1 메모리 영역(332)의 웨어 아웃 비가 제 2 메모리 영역(334)의 웨어 아웃 비보다 더 작은 경우 제 1 메모리 영역(332)을 특정 데이터가 프로그램될 메모리 영역으로 결정할 수 있다. 예시적으로, 프로그램 영역 결정기(328)는 제 1 메모리 영역(332)의 웨어 아웃 비가 제 2 메모리 영역(334)의 웨어 아웃 비보다 크거나 같은 경우 제 2 메모리 영역(334)을 특정 데이터가 프로그램될 메모리 영역으로 결정할 수 있다.
불휘발성 메모리 장치(330)는 제 1 메모리 영역(332) 및 제 2 메모리 영역(334)를 포함할 수 있다. 제 1 메모리 영역(332)과 제 2 메모리 영역(334)는 서로 다른 방식으로 관리될 수 있다. 예컨대, 제 1 메모리 영역(332)는 SLC 방식으로 관리될 수 있고, 제 2 메모리 영역(334)는 MLC 방식으로 관리될 수 있다. 또는 제 1 메모리 영역(332)은 SLC 방식, 제 2 메모리 영역(334)는 트리플 레벨 셀(Triple Level Cell, TLC) 방식으로 관리될 수 있다.
제 1 메모리 영역(332)에는 메타 데이터가 저장될 수 있다. 제 2 메모리 영역(334)에는 연속 데이터, 랜덤 데이터, LSB 백업 데이터, 가비지 컬렉션 데이터 등이 저장될 수 있다. 본 발명에 따른 불휘발성 메모리 장치(330)의 제 1 메모리 영역(332)과 제 2 메모리 영역(334)에는 연속 데이터, 랜덤 데이터, LSB 백업 데이터, 가비지 컬렉션 데이터 중 어느 한 데이터가 교대로 저장될 수 있다.
본 발명의 플래시 변환 계층(320)에서는 불휘발성 메모리 장치(330)를 요구되는 수명 시점까지 사용하기 위해 특정 속성의 데이터를 제 1 메모리 영역(332)과 제 2 메모리 영역(334)에 교대로 프로그램한다. 이를 위해 플래시 변환 계층(320)은 각 메모리 영역의 마모 정도를 비율로 나타낸 웨어 아웃 비를 사용한다. 플래시 변환 계층(320)은 각 메모리 영역의 웨어 아웃 비를 비교하여 이에 따라 특정 데이터가 프로그램될 메모리 영역을 결정한다.
이상에서는 본 발명의 플래시 변환 계층(320)에 포함되는 동작 모듈들이 간략히 설명되었다. 특히, 프로그램 영역 결정기(328)는 각 메모리 영역의 허용 가능 최대 소거 횟수와 메모리 블록들의 최대 소거 횟수를 이용하여 계산된 웨어 아웃 비에 따라 특정 속성의 데이터가 프로그램될 메모리 영역을 결정할 수 있다. 특정 속성의 데이터를 프로그램하는 경우, 플래시 변환 계층(320)은 웨어 아웃 비에 따라 특정 속성의 데이터를 프로그램할 메모리 영역을 결정한다. 결과적으로 웨어 아웃 비에 따라 특정 속성의 데이터는 제 1 메모리 영역(332)과 제 2 메모리 영역(334)에 교대로 프로그램될 것이다.
도 5는 도 4의 불휘발성 메모리 장치를 예시적으로 나타낸 것으로 본 발명의 웨어 아웃 비의 계산 방법을 설명하기 위한 도면이다. 도 5를 참조하면, 불휘발성 메모리 장치(330)는 제 1 메모리 영역(332)과 제 2 메모리 영역(334)을 포함한다. 제 1 메모리 영역(332)은 복수의 메모리 블록들(BLK0, BLK1, BLK2,…, BLKi)을 포함한다. 제 2 메모리 영역(334)는 복수의 메모리 블록들(BLK0, BLK1, BLK2,…, BLKn)을 포함한다. 제 1 메모리 영역(332)의 메모리 블록들(BLK0, BLK1, BLK2,…, BLKi)은 SLC 타입의 메모리 셀들로 구성되어 SLC 방식으로 관리된다. 제 2 메모리 영역(334)의 메모리 블록들(BLK0, BLK1, BLK2,…, BLKn)은 MLC 타입의 메모리 셀들로 구성되어 MLC 방식으로 관리된다.
플래시 변환 계층(320)의 소거 카운터(324)는 메모리 영역의 각 메모리 블록들의 소거 횟수(Erase Count, EC)를 카운트한다. 카운트한 결과, 제 1 메모리 영역(332)의 최대 소거 횟수는 메모리 블록(BLK2)의 소거 횟수인 2010회이다. 제 2 메모리 영역(332)의 최대 소거 횟수는 메모리 블록(BLK0)의 소거 횟수인 210회이다.
웨어 아웃 비 계산기(326)는 각 메모리 영역의 최대 소거 횟수와 각 메모리 영역의 허용 가능 최대 소거 횟수를 이용하여 각 메모리 영역에 대한 웨어 아웃 비를 계산한다. 여기에서 제 1 메모리 영역(332)은 SLC 방식으로 관리되고, 제 2 메모리 영역(334)은 MLC 방식으로 관리된다. 따라서, 제 1 메모리 영역(332)과 제 2 메모리 영역(334)의 허용 가능 최대 소거 횟수는 서로 다를 것이다. 예시적으로, 제 1 메모리 영역(332)의 허용 가능 최대 소거 횟수가 10000회라고 하고, 제 2 메모리 영역(332)의 허용 가능 최대 소거 횟수가 1000회라고 가정 하자. 이 경우, 제 1 메모리 영역(332)의 웨어 아웃 비는 2010/10000이고, 제 2 메모리 영역(334)의 웨어 아웃 비는 210/1000가 될 것이다.
프로그램 영역 결정기(328)는 제 1 메모리 영역(332)의 웨어 아웃 비와 제 2 메모리 영역(334)의 웨어 아웃 비의 크기를 비교한다. 그 결과, 웨어 아웃 비가 더 작은 메모리 영역을 특정 속성의 데이터를 프로그램할 메모리 영역으로 결정한다. 도 5의 경우, 제 2 메모리 영역(334)의 웨어 아웃 비가 제 1 메모리 영역(332)의 웨어 아웃 비보다 더 크다. 따라서, 프로그램 영역 결정기(328)는 제 1 메모리 영역(332)을 특정 속성의 데이터를 프로그램할 메모리 영역으로 결정할 것이다.
도 6은 본 발명에 따른 프로그램 영역 할당 방법을 예시적으로 보여주는 도면이다. 도 6을 참조하면, LSB 백업 데이터가 메모리 영역의 웨어 아웃 비에 따라 교대로 해당 메모리 영역에 프로그램되는 것을 확인할 수 있다.
불휘발성 메모리 장치(130, 도 1 참조)는 복수의 메모리 블록들로 구성된 메타 영역(meta area)과 유저 영역(user area)을 포함할 수 있다. 메타 영역은 높은 데이터 신뢰성을 가지는 SLC 방식의 메모리 블록들로 구성된다. 유저 영역은 SLC 방식에 비해 낮은 데이터 신뢰성을 가지지만 하나의 메모리 셀당 더 많은 데이터를 저장할 수 있는 MLC 방식의 메모리 블록들로 구성된다.
메타 영역에는 메타 데이터(meta data)가 프로그램된다. 메타 데이터는 데이터의 신뢰성이 중요하므로, 높은 신뢰성을 가지는 메타 영역에 프로그램된다. 유저 영역에는 메타 데이터를 제외한 컨트롤러 쓰기 데이터들이 프로그램된다. 즉, 연속 데이터(sequential data), 랜덤 데이터(random data), 가비지 컬렉션 데이터(GC data), LSB 백업 데이터가 프로그램된다.
본 발명에 따른 프로그램 영역 할당 방법은 유저 영역에 프로그램되는 컨트롤러 쓰기 데이터들 중 특정 속성의 데이터를 메타 영역과 유저 영역에 교대로 프로그램한다. 특정 속성의 데이터는 저장 장치의 사용 환경에 따라 다르게 설정될 수 있다. 도 6에서는 LSB 백업 데이터가 웨어 아웃 비에 따라 메타 영역과 유저 영역에 선택적으로 프로그램된다. 예를 들어, 메타 영역의 웨어 아웃 비가 유저 영역의 웨어 아웃 비보다 작다면, 메모리 컨트롤러(120, 도 1 참조)는 메타 영역에 LSB 백업 데이터를 프로그램할 것이다(동작 ①). 반면에, 메타 영역의 웨어 아웃 비가 유저 영역의 웨어 아웃 비보다 크거나 같다면, 메모리 컨트롤러(120)는 유저 영역에 LSB 백업 데이터를 프로그램할 것이다.
교대로 프로그램될 특정 속성의 데이터를 선택시 사용량이 많고 사용빈도가 큰 컨트롤러 쓰기 데이터를 선택한다면, 불휘발성 메모리 장치(130)의 수명이 더 향상될 것이다.
도 7은 본 발명에 따른 프로그램 영역 할당 방법을 예시적으로 보여주는 흐름도이다. 도 7을 참조하면, 각 메모리 영역의 웨어 아웃 비에 따라 특정 속성의 데이터를 프로그램할 메모리 영역을 결정하는 본 발명의 프로그램 영역 할당 방법이 도시된다.
S110 단계에서, 메모리 컨트롤러(120, 도 1 참조)는 프로그램할 데이터가 설정된 속성 데이터 즉, 특정 속성의 데이터인지를 확인한다. 여기에서, 웨어 아웃 비에 따라 교대로 각 메모리 영역에 프로그램될 특정 속성의 데이터는 저장 장치의 사용 환경에 따라 미리 설정된 데이터일 것이다. 특정 속성의 데이터는 플래시 변환 계층(320, 도 4)의 소프트웨어 업데이트에 의해 설정될 수 있다. 프로그램할 데이터가 설정된 특정 속성의 데이터인 경우, 메모리 컨트롤러(120)에서 구동되는 플래시 변환 계층(320)은 본 발명에 따른 프로그램 영역 할당 동작을 위한 제반 제어 동작을 개시할 것이다. 프로그램할 데이터가 특정 속성의 데이터가 아닌 경우, 프로그램 영역 할당 동작은 종료된다. 이 경우, 프로그램할 데이터는 미리 설정된 메모리 영역 예컨대, 제 2 메모리 영역 또는 유저 영역 등에 프로그램될 것이다.
S120 단계에서, 플래시 변환 계층(320)은 각 메모리 영역의 웨어 아웃 비를 계산한다. 플래시 변환 계층(320)은 각 메모리 영역을 구성하는 메모리 블록들의 현재 최대 소거 횟수와 해당 메모리 영역의 허용 가능 최대 소거 횟수를 이용하여 상술한 [식]에 따라 웨어 아웃 비를 계산한다. 계산된 웨어 아웃 비는 서로 다른 최대 허용 가능 소거 횟수를 가지는 각 메모리 영역의 남은 수명을 동일한 기준으로 비교할 수 있도록 한다. 예를 들어, SLC 방식으로 관리되는 제 1 메모리 영역의 경우, 허용 가능 최대 소거 횟수가 1000회라고 하고, MLC 방식으로 관리되는 제 2 메모리 영역의 경우, 허용 가능 최대 소거 횟수가 100회라고 하자. 이 경우, 제 1 메모리 영역의 수명이 10% 감소하기 위해서는, 제 1 메모리 영역에 속한 메모리 블록의 소거 횟수가 100회 증가하여야 한다. 하지만, 제 2 메모리 영역의 소거 횟수는 1회만 증가하면 된다. 따라서, 제 1 메모리 영역과 제 2 메모리 영역의 메모리 블록의 소거 횟수가 동일하게 증가하더라도 각 메모리 영역의 수명에 미치는 영향이 다르다. 본 발명에 따른 웨어 아웃 비는 이러한 차이를 보상하여 동일한 기준으로 남은 수명을 비교할 수 있도록 한다.
S130 단계에서, 플래시 변환 계층(320)은 계산된 각 메모리 영역의 웨어 아웃 비의 크기를 비교한다. 플래시 변환 계층(320)은 비교 결과에 따라 특정 속성의 데이터를 프로그램할 메모리 영역을 결정한다. 제 2 메모리 영역(334, 도 4 참조)에 대한 웨어 아웃 비가 제 1 메모리 영역(332, 도 4 참조)에 대한 웨어 아웃 비보다 크거나 같으면 단계 140으로 이동한다. 제 2 메모리 영역(332)에 대한 웨어 아웃 비가 제 1 메모리 영역(334)에 대한 웨어 아웃 비보다 작으면, 단계 150으로 이동한다.
단계 140에서, 플래시 변환 계층(320)은 특정 속성의 데이터를 프로그램할 영역으로 제 1 메모리 영역(332)을 결정한다. 웨어 아웃 비는 메모리 영역의 허용 가능 최대 소거 횟수에 대한 그 메모리 영역의 메모리 블록들의 최대 소거 횟수의 비이다. 따라서, 웨어 아웃 비가 크다는 것은 메모리 영역의 특정 메모리 블록의 소거 횟수가 허용 가능 최대 소거 횟수에 가깝다는 것을 의미한다. 즉, 특정 메모리 블록의 수명이 조금 남았다는 것과 동일한 의미이다. 따라서, 플래시 변환 계층(320)은 웨어 아웃 비가 작은 메모리 영역에 특정 속성의 데이터가 프로그램되도록 메모리 영역을 결정한다.
단계 150에서, 플래시 변환 계층(320)은 특정 속성의 데이터를 프로그램할 영역으로 제 2 메모리 영역(332)을 결정한다.
플래시 변환 계층(320)이 특정 속성의 데이터가 프로그램될 메모리 영역을 결정함으로써, 본 발명에 따른 프로그램 영역 할당 동작은 종료된다. 이 후, 메모리 컨트롤러(120, 도 1 참조)는 특정 속성의 데이터를 단계 140 또는 단계 150에서 결정된 메모리 영역의 메모리 블록들 중 어느 한 메모리 블록에 프로그램할 것이다.
본 발명에 따른 프로그램 영역 할당 동작에 있어서, 웨어 아웃 비를 참조하여 프로그램될 메모리 영역이 결정된다. 웨어 아웃 비를 고려함으로 인해 특정 속성의 데이터가 프로그램될 메모리 영역이 각 메모리 영역의 남은 수명을 고려하여 동적으로 결정될 수 있다. 따라서, 제 1 메모리 영역(332)와 제 2 메모리 영역(334)이 거의 동일한 시점에서 수명이 종료될 수 있고, 이는 결과적으로 저장 장치의 수명이 향상되는 결과를 가져온다.
도 8(a) 및 도 8(b)는 본 발명에 따른 프로그램 영역 할당 방법을 사용한 경우와 이를 사용하지 않은 경우의 프로그램 동작을 비교하기 위한 그래프이다. 도 8(a) 및 도 8(b)는 컨트롤러 쓰기 데이터 중 동일한 어느 한 데이터의 프로그램 동작을 나타낸다.
도 8(a)는 본 발명에 따른 프로그램 영역 할당 방법을 사용하지 않은 경우의 프로그램 동작을 보여주는 그래프이다. 이 경우, 특정 속성의 데이터는 미리 설정된 메모리 영역 예컨대 MLC 방식으로 관리되는 메모리 영역에만 프로그램된다. 일반적으로, SLC 방식에 비해 MLC 방식의 메모리 셀들의 수명이 짧다. 따라서, 특정 속성의 데이터가 지속적으로 MLC 방식의 메모리 셀들에만 프로그램된다면, MLC 방식으로 관리되는 메모리 영역은 비교적 빨리 한계 수명에 도달할 것이다. 이 경우, SLC 방식으로 관리되는 메모리 영역은 수명의 여유가 있는데 반해, MLC 방식으로 관리되는 메모리 영역의 수명이 끝남으로 인해 저장 장치 전체의 수명 또한 끝나게 된다.
도 8(b)는 본 발명에 따른 프로그램 영역 할당 방법을 사용한 경우의 프로그램 동작을 보여주는 그래프이다. 도 8(b)를 참조하면, 특정 속성의 데이터가 SLC 방식으로 관리되는 메모리 영역과 MLC 방식으로 관리되는 메모리 영역에 교대로 프로그램되는 것을 확인할 수 있다. 메모리 컨트롤러(120, 도 1)는 특정 속성의 데이터의 프로그램 동작시, 각 메모리 영역의 웨어 아웃 비를 계산한다. 그 후 계산된 웨어 아웃 비를 비교하여 특정 속성의 데이터를 프로그램할 메모리 영역을 결정한다. 즉, 웨어 아웃 비라는 계산된 값을 통해 각 메모리 영역의 남은 수명을 동일한 기준으로 비교할 수 있고, 그 비교 결과에 따라 특정 속성의 데이터를 프로그램할 메모리 영역을 결정한다. 즉, SLC 방식으로 관리되는 메모리 영역의 웨어 아웃 비가 MLC 방식으로 관리되는 메모리 영역의 웨어 아웃 비보다 큰 경우, 메모리 컨트롤러(120)는 특정 속성의 데이터를 MLC 방식으로 관리되는 메모리 영역에 프로그램할 수 있다. 각 메모리 영역의 웨어 아웃 비의 비교 결과에 따라 특정 속성의 데이터는 SLC 방식으로 관리되는 메모리 영역과 MLC 방식으로 관리되는 메모리 영역에 교대로 프로그램될 것이다.
도 9는 본 발명의 실시 예에 따른 솔리드 스테이트 디스크(이하, SSD)를 포함하는 사용자 장치를 보여주는 블록도이다. 도 9를 참조하면, 사용자 장치(1000)는 호스트(1100)와 SSD(1200)를 포함한다. SSD(1200)는 SSD 컨트롤러(1210), 버퍼 메모리(1220), 그리고 불휘발성 메모리 장치(1230)를 포함한다.
SSD 컨트롤러(1210)는 호스트(1100)와 SSD(1200)와의 물리적 연결을 제공한다. 즉, SSD 컨트롤러(1210)는 호스트(1100)의 버스 포맷(Bus format)에 대응하여 SSD(1200)와의 인터페이싱을 제공한다. 특히, SSD 컨트롤러(1210)는 호스트(1100)로부터 제공되는 명령어를 디코딩한다. 디코딩된 결과에 따라, SSD 컨트롤러(1210)는 불휘발성 메모리 장치(1230)를 액세스한다. 호스트(1100)의 버스 포맷(Bus format)으로 USB(Universal Serial Bus), SCSI(Small Computer System Interface), PCI express, ATA, PATA(Parallel ATA), SATA(Serial ATA), SAS(Serial Attached SCSI) 등이 포함될 수 있다.
버퍼 메모리(1220)에는 호스트(1100)로부터 제공되는 쓰기 데이터 또는 불휘발성 메모리 장치(1230)로부터 읽혀진 데이터가 일시 저장된다. 호스트(1100)의 읽기 요청시에 불휘발성 메모리 장치(1230)에 존재하는 데이터가 캐시되어 있는 경우에는, 버퍼 메모리(1220)는 캐시된 데이터를 직접 호스트(1100)로 제공하는 캐시 기능을 지원한다. 일반적으로, 호스트(1100)의 버스 포맷(예를 들면, SATA 또는 SAS)에 의한 데이터 전송 속도는 SSD(1200)의 메모리 채널의 전송 속도보다 월등히 빠르다. 즉, 호스트(1100)의 인터페이스 속도가 월등히 높은 경우, 대용량의 버퍼 메모리(1220)를 제공함으로써 속도 차이로 발생하는 퍼포먼스 저하를 최소화할 수 있다.
버퍼 메모리(1220)는 대용량의 보조 기억 장치로 사용되는 SSD(1200)에서 충분한 버퍼링을 제공하기 위해 동기식 DRAM(Synchronous DRAM)으로 제공될 수 있다. 하지만, 버퍼 메모리(1220)가 여기의 개시에 국한되지 않음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다.
불휘발성 메모리 장치(1230)는 SSD(1200)의 저장 매체로서 제공된다. 예를 들면, 불휘발성 메모리 장치(1230)는 대용량의 저장 능력을 가지는 낸드 플래시 메모리(NAND-type Flash memory)로 제공될 수 있다. 불휘발성 메모리 장치(1230)는 복수의 메모리 장치로 구성될 수 있다. 이 경우, 각각의 메모리 장치들은 채널 단위로 SSD 컨트롤러(1210)와 연결된다. 저장 매체로서 불휘발성 메모리 장치(1230)가 낸드 플래시 메모리를 예로 들어 설명되었으나, 또 다른 불휘발성 메모리 장치들로 구성될 수 있다. 예를 들면, 저장 매체로서 PRAM, MRAM, ReRAM, FRAM, NOR 플래시 메모리 등이 사용될 수 있으며, 이종의 메모리 장치들이 혼용되는 메모리 시스템도 적용될 수 있다. 불휘발성 메모리 장치(1230)는 서로 다른 방식으로 관리되는 제 1 메모리 영역 및 제 2 메모리 영역을 포함한다. 예시적으로 제 1 메모리 영역은 SLC 방식으로 관리될 수 있고, 제 2 메모리 영역은 MLC 방식으로 관리될 수 있다.
SSD 컨트롤러(1210)는 특정 속성의 데이터를 불휘발성 메모리 장치(1230)에 프로그램할 수 있다. 이때, SSD 컨트롤러(1210)는 특정 속성의 데이터가 프로그램될 영역을 상술한 웨어 아웃 비의 비교 결과에 따라 결정할 수 있다. 즉, SSD 컨트롤러(1210)는 제 1 메모리 영역 및 제 2 메모리 영역의 웨어 아웃 비를 계산하고 계산된 값을 비교하여 특정 속성의 데이터가 프로그램될 메모리 영역을 결정할 수 있다. 따라서 특정 속성의 데이터는 비교 결과에 따라 제 1 메모리 영역과 제 2 메모리 영역에 교대로 프로그램될 것이다. 본 발명에 따른 프로그램 영역 할당 방식을 사용하는 경우, 불휘발성 메모리 장치(1230)의 수명이 증가할 수 있다.
도 10은 본 발명의 다른 실시 예에 따른 저장 장치(2000)를 예시적으로 보여주는 블록도이다. 도 10을 참조하면, 본 발명에 따른 저장 장치(2000)는 메모리 컨트롤러(2100)와 불휘발성 메모리 장치(2200)를 포함할 수 있다.
불휘발성 메모리 장치(2200)는 도 1, 도 3 또는 도 4의 불휘발성 메모리 장치들(130, 240, 330) 중 어느 하나와 실질적으로 동일하게 구성될 수 있다. 따라서, 불휘발성 메모리 장치(2200)에 대한 구체적인 설명은 생략하기로 한다.
메모리 컨트롤러(2100)는 불휘발성 메모리 장치(2200)를 제어하도록 구성될 수 있다. SRAM(2110)은 CPU(2120)의 워킹 메모리로 사용될 수 있다. 호스트 인터페이스(2130)는 저장 장치(2000)와 접속되는 호스트의 데이터 교환 프로토콜을 구비할 수 있다. 메모리 컨트롤러(2100)에 구비된 에러 정정 회로(2140)는 불휘발성 메모리 장치(2200)로부터 읽어 온 읽기 데이터에 포함되어 있는 에러를 검출 및 정정할 수 있다. 메모리 인터페이스(2150)는 본 발명의 불휘발성 메모리 장치(2200)와 인터페이싱 할 수 있다. CPU(2120)는 메모리 컨트롤러(2100)의 데이터 교환을 위한 제반 제어 동작을 수행할 수 있다. 비록 도면에는 도시되지 않았지만, 본 발명에 따른 저장 장치(2000)는 호스트(Host)와의 인터페이싱을 위한 코드 데이터를 저장하는 ROM(미도시됨) 등이 더 제공될 수 있다.
메모리 컨트롤러(2100)는 USB, MMC, PCI-E, SAS, SATA, PATA, SCSI, ESDI, 그리고 IDE 등과 같은 다양한 인터페이스 프로토콜들 중 하나를 통해 외부(예를 들면, 호스트)와 통신하도록 구성될 것이다.
본 발명에 따른 저장 장치(2000)는, 컴퓨터, 휴대용 컴퓨터, UMPC (Ultra Mobile PC), 워크스테이션, 넷북(net-book), PDA, 포터블(portable) 컴퓨터, 웹 타블렛(web tablet), 무선 전화기(wireless phone), 모바일 폰(mobile phone), 스마트폰(smart phone), 디지털 카메라(digital camera), 디지털 음성 녹음기(digital audio recorder), 디지털 음성 재생기(digital audio player), 디지털 영상 녹화기(digital picture recorder), 디지털 영상 재생기(digital picture player), 디지털 동영상 녹화기(digital video recorder), 디지털 동영상 재생기(digital video player), 정보를 무선 환경에서 송수신할 수 있는 장치, 홈 네트워크를 구성하는 다양한 사용자 장치들 중 하나에 적용될 수 있다.
메모리 컨트롤러(2100)는 컨트롤러 쓰기 데이터들을 불휘발성 메모리 장치(2200)에 프로그램할 수 있다. 이때, 메모리 컨트롤러(2100)는 특정 속성의 데이터가 프로그램될 영역을 상술한 웨어 아웃 비의 비교 결과에 따라 결정할 수 있다. 즉, 메모리 컨트롤러(2100)는 제 1 메모리 영역 및 제 2 메모리 영역의 웨어 아웃 비를 계산하고 계산된 값을 비교하여 특정 속성의 데이터가 프로그램될 메모리 영역을 결정할 수 있다. 따라서 특정 속성의 데이터는 비교 결과에 따라 제 1 메모리 영역과 제 2 메모리 영역에 교대로 프로그램될 것이다. 본 발명에 따른 프로그램 영역 할당 방식을 사용하는 경우, 불휘발성 메모리 장치(2200)의 수명이 증가할 수 있다.
도 11은 본 발명의 다른 실시 예에 따른 데이터 저장 장치(3000)를 예시적으로 보여주는 블록도이다. 도 11을 참조하면, 본 발명에 따른 데이터 저장 장치(3000)는 플래시 메모리 칩들(3100)과 플래시 컨트롤러(3200)를 포함할 수 있다. 플래시 컨트롤러(3200)는 데이터 저장 장치(3000) 외부로부터 수신된 제어 신호들에 기초하여 플래시 메모리 칩들(3100)을 제어할 수 있다.
또한, 플래시 메모리 칩들(3100)의 구성은 도 1, 도 3 또는 도 4의 불휘발성 메모리 장치들(130, 240, 330) 중 하나와 실질적으로 동일하며, 멀티 칩으로 구성된다. 본 발명의 플래시 메모리 칩들(3100) 각각은 어레이들이 다층으로 적층된 스택 플래시 구조, 소스-드레인이 없는 플래시 구조, 핀-타입 플래시 구조, 및 3차원 플래시 구조 중 어느 하나로 구성될 수 있다.
본 발명의 데이터 저장 장치(3000)는 메모리 카드 장치, SSD 장치, 멀티미디어 카드 장치, SD 장치, 메모리 스틱 장치, 하드 디스크 드라이브 장치, 하이브리드 드라이브 장치, 또는 범용 직렬 버스 플래시 장치를 구성할 수 있다. 예를 들면, 본 발명의 데이터 저장 장치(3000)는 디지털, 카메라, 개인 컴퓨터 등과 같은 사용자 장치를 사용하기 위한 산업 표준을 만족하는 카드를 구성할 수 있다.
플래시 컨트롤러(3200)는 컨트롤러 쓰기 데이터들을 플래시 메모리 칩들(3100)에 프로그램할 수 있다. 이때, 플래시 컨트롤러(3200)는 특정 속성의 데이터가 프로그램될 영역을 상술한 웨어 아웃 비의 비교 결과에 따라 결정할 수 있다. 즉, 플래시 컨트롤러(3200)는 제 1 메모리 영역 및 제 2 메모리 영역의 웨어 아웃 비를 계산하고 계산된 값을 비교하여 특정 속성의 데이터가 프로그램될 메모리 영역을 결정할 수 있다. 따라서 특정 속성의 데이터는 비교 결과에 따라 제 1 메모리 영역과 제 2 메모리 영역에 교대로 프로그램될 것이다. 본 발명에 따른 프로그램 영역 할당 방식을 사용하는 경우, 플래시 메모리 칩들(3100)의 수명이 증가할 수 있다.
도 12는 본 발명에 따른 저장 장치(4100) 및 그것을 포함하는 컴퓨팅 시스템(4000)의 개략적인 구성을 보여주는 도면이다. 도 12를 참조하면, 본 발명에 따른 컴퓨팅 시스템(4000)은 버스(4600)에 전기적으로 연결된 저장 장치(4100), 마이크로프로세서(4200), 램(4300), 유저 인터페이스(4400), 베이스밴드 칩셋(Baseband chipset)과 같은 모뎀(4500)를 포함할 수 있다.
저장 장치(4100)의 구성은 도 1에 도시된 저장 장치와 실질적으로 동일하며, 불휘발성 메모리 장치(4120)는 플래시 메모리로 어레이들이 다층으로 적층된 스택 플래시 구조, 소스-드레인이 없는 플래시 구조, 핀-타입 플래시 구조, 및 3차원 플래시 구조 중 어느 하나로 구성될 수 있다.
본 발명에 따른 컴퓨팅 시스템이 모바일 장치인 경우, 컴퓨팅 시스템의 동작 전압을 공급하기 위한 배터리가 추가로 제공될 수 있다. 비록 도면에는 도시되지 않았지만, 본 발명에 따른 컴퓨팅 시스템에는 응용 칩셋(Application chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램, 등이 더 제공될 수 있다. 메모리 컨트롤러(4110)와 불휘발성 메모리 장치(4120)는, 예를 들면, 데이터를 저장하는 데 불휘발성 메모리를 사용하는 SSD(Solid State Drive/Disk)를 구성할 수 있다.
본 발명에 따른 불휘발성 메모리 장치 그리고/또는 메모리 컨트롤러는 다양한 형태들의 패키지를 이용하여 실장될 수 있다. 예를 들면, 본 발명에 따른 플래시 메모리 장치 그리고/또는 메모리 컨트롤러는 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP), 등과 같은 패키지들을 이용하여 실장 될 수 있다.
이상에서와 같이 도면과 명세서에서 실시 예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허 청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 진정한 기술적 보호 범위는 첨부된 특허 청구범위의 기술적 사상에 의해 정해져야 할 것이다.
110 : 호스트 120 : 메모리 컨트롤러
130 : 불휘발성 메모리 장치 131 : 셀 어레이
132 : 행 디코더 133 : 페이지 버퍼
134 : 제어 로직 210 : 응용 프로그램
220, 310 : 파일 시스템 230, 320 : 플래시 변환 계층(FTL)
240, 330 : 불휘발성 메모리 장치 322 : 맵핑 테이블
324 : 소거 횟수 카운터 326 : 웨어 아웃 비 계산기
328 : 프로그램 영역 결정기 333 : 제 1 메모리 영역
334 : 제 2 메모리 영역 1100 : 호스트
1200 : SSD 1210 : SSD 컨트롤러
1220 : 버퍼 메모리 1230 : 불휘발성 메모리 장치
2100 : 플래시 메모리 2200 : 메모리 컨트롤러
2210 : CPU 2220 : 호스트 인터페이스
2230 : SRAM 2240 : ECC
2260 : 메모리 인터페이스 3100 : 플래시 메모리 칩들
3200 : 플래시 인터페이스 4100 : 저장 장치
4200 : 마이크로프로세서 4300 : 램
4400 : 유저 인터페이스 4500 : 모뎀
4600 : 시스템 버스

Claims (10)

  1. 싱글 레벨 셀 영역 및 멀티 레벨 셀 영역을 포함하는 메모리 불록들을 포함하는 불휘발성 메모리 장치; 및
    메타 데이터를 생성하여, 상기 싱글 레벨 셀 영역에 상기 메타 데이터를 프로그램하는 메모리 컨트롤러를 포함하되,
    상기 메모리 컨트롤러는,
    상기 싱글 레벨 셀 영역의 웨어 아웃 비가 상기 멀티 레벨 셀 영역의 웨어 아웃 비보다 작은 경우, 특정 속성 데이터를 프로그램하는 위치로 상기 싱글 레벨 셀 영역을 결정하고, 상기 싱글 레벨 셀 영역의 상기 웨어 아웃 비가 상기 멀티 레벨 셀 영역의 상기 웨어 아웃 비보다 큰 경우, 상기 특정 속성 데이터를 프로그램하는 상기 위치로 상기 멀티 레벨 셀 영역을 결정하는 프로그램 영역 결정기를 포함하고,
    상기 싱글 레벨 셀 영역의 상기 웨어 아웃 비는 상기 싱글 레벨 셀 영역의 허용 가능한 최대 소거 횟수에 대한 상기 싱글 레벨 셀 영역의 메모리 블록들의 현재 최대 소거 횟수의 비이고,
    상기 멀티 레벨 셀 영역의 상기 웨어 아웃 비는 상기 멀티 레벨 셀 영역의 허용 가능한 최대 소거 횟수에 대한 상기 멀티 레벨 셀 영역의 메모리 블록들의 현재 최대 소거 횟수의 비이고,
    상기 특정 속성 데이터는 상기 프로그램 영역 결정기에 의하여 상기 싱글 레벨 셀 영역 및 상기 멀티 레벨 셀 영역 중 어느 하나가 결정됨에 따라, 상기 싱글 레벨 셀 영역 및 상기 멀티 레벨 셀 영역에 교대로 프로그램되고,
    상기 특정 속성 데이터는 연속 데이터(sequential data), 랜덤 데이터(random data), 가비지 컬렉션 데이터(garbage collection data), 및 엘에스비 백업 데이터(LSB backup data) 중 적어도 하나인 저장 장치.
  2. 메타 영역과 유저 영역을 포함하는 메모리 블록들을 포함하는 메모리 블록들을 포함하는 불휘발성 메모리 장치의 프로그램 방법에 있어서,
    메모리 컨트롤러로부터 생성되는 메타 데이터를 상기 메타 영역에 프로그램하는 단계;
    상기 메타 영역의 웨어 아웃 비 및 상기 유저 영역의 웨어 아웃 비를 계산하는 단계;
    상기 계산된 웨어 아웃 비들에 따라, 상기 메타 영역과 상기 유저 영역 중 호스트로부터 제공되는 특정 속성 데이터를 프로그램할 영역을 결정하는 단계;
    상기 메타 영역의 상기 웨어 아웃 비가 상기 유저 영역의 상기 웨어 아웃 비보다 작은 경우, 상기 메타 영역에 상기 특정 속성 데이터를 프로그램하는 단계; 및
    상기 메타 영역의 상기 웨어 아웃 비가 상기 유저 영역의 상기 웨어 아웃 비보다 큰 경우, 상기 유저 영역에 상기 특정 속성 데이터를 프로그램하는 단계를 포함하되,
    상기 메타 영역의 상기 웨어 아웃 비는 상기 메타 영역의 허용 가능한 최대 소거 횟수에 대한 상기 메타 영역의 메모리 블록들의 현재 최대 소거 횟수의 비이고,
    상기 유저 영역의 상기 웨어 아웃 비는 상기 유저 영역의 허용 가능한 최대 소거 횟수에 대한 상기 유저 영역의 메모리 블록들의 현재 최대 소거 횟수의 비인 방법.
  3. 제 2 항에 있어서,
    상기 특정 속성 데이터는 상기 메타 영역의 상기 웨어 아웃 비 및 상기 유저 영역의 상기 웨어 아웃 비에 따라 상기 메타 영역과 상기 유저 영역에 교대로 프로그램되는 방법.
  4. 제 2 항에 있어서,
    상기 메타 영역에 프로그램되는 상기 특정 속성 데이터는 상기 유저 영역에 프로그램되는 상기 특정 속성 데이터와 다른 방법.
  5. 제 4 항에 있어서,
    상기 메타 영역 또는 상기 유저 영역에 프로그램되는 데이터는 상기 메타 데이터, 연속 데이터(sequential data), 랜덤 데이터(random data), 가비지 컬렉션 데이터(garbage collection data), 및 엘에스비 백업 데이터(LSB backup data)를 포함하는 방법.
  6. 제 5 항에 있어서,
    상기 메타 데이터는 상기 메타 영역에 프로그램되고, 상기 연속 데이터, 상기 랜덤 데이터, 상기 가비지 컬렉션 데이터, 및 상기 엘에스비 백업 데이터는 상기 유저 영역에 프로그램되는 방법.
  7. 제 6 항에 있어서,
    상기 특정 속성 데이터는 상기 유저 영역에 프로그램되는 상기 연속 데이터, 상기 랜덤 데이터, 상기 가비지 컬렉션 데이터, 및 상기 엘에스비 백업 데이터 중 하나인 방법.
  8. 제1 메모리 영역 및 제2 메모리 영역을 포함하는 메모리 블록들을 포함하는 불휘발성 메모리 장치; 및
    수행되는 소거 동작들을 카운트하여, 상기 메모리 블록들의 소거 횟수들을 결정하고, 상기 소거 횟수들에 기초하여 상기 제1 메모리 영역의 웨어 아웃 비 및 상기 제2 메모리 영역의 웨어 아웃 비를 계산하고, 상기 계산된 웨어 아웃 비들에 기초하여 상기 제1 및 제2 메모리 영역들에 특정 속성 데이터를 교대로 프로그램하는 메모리 컨트롤러를 포함하되,
    상기 특정 속성 데이터는, 상기 제1 메모리 영역의 상기 웨어 아웃 비가 상기 제2 메모리 영역의 상기 웨어 아웃 비보다 작은 경우 상기 제1 메모리 영역에 프로그램되고, 상기 제1 메모리 영역의 상기 웨어 아웃 비가 상기 제2 메모리 영역의 상기 웨어 아웃 비보다 큰 경우 상기 제2 메모리 영역에 프로그램되는 저장 장치.
  9. 제 8 항에 있어서,
    상기 제1 메모리 영역의 상기 웨어 아웃 비는 상기 제1 메모리 영역의 허용 가능한 최대 소거 횟수에 대한 상기 제1 메모리 영역의 메모리 블록들의 현재 최대 소거 횟수의 비이고,
    상기 제2 메모리 영역의 상기 웨어 아웃 비는 상기 제2 메모리 영역의 허용 가능한 최대 소거 횟수에 대한 상기 제2 메모리 영역의 메모리 블록들의 현재 최대 소거 횟수의 비인 저장 장치.
  10. 제 8 항에 있어서,
    상기 메모리 컨트롤러는, 상기 제1 메모리 영역에 메타 데이터를 저장하고, 상기 제2 메모리 영역에 연속 데이터(sequential data), 랜덤 데이터(random data), 가비지 컬렉션 데이터(garbage collection data), 및 엘에스비 백업 데이터(LSB backup data)를 저장하는 저장 장치.
KR1020140184466A 2014-12-19 2014-12-19 프로그램 영역을 동적으로 할당하는 저장 장치 및 그것의 프로그램 방법 KR102295208B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140184466A KR102295208B1 (ko) 2014-12-19 2014-12-19 프로그램 영역을 동적으로 할당하는 저장 장치 및 그것의 프로그램 방법
US14/965,521 US10037160B2 (en) 2014-12-19 2015-12-10 Storage device dynamically allocating program area and program method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140184466A KR102295208B1 (ko) 2014-12-19 2014-12-19 프로그램 영역을 동적으로 할당하는 저장 장치 및 그것의 프로그램 방법

Publications (2)

Publication Number Publication Date
KR20160075918A KR20160075918A (ko) 2016-06-30
KR102295208B1 true KR102295208B1 (ko) 2021-09-01

Family

ID=56129418

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140184466A KR102295208B1 (ko) 2014-12-19 2014-12-19 프로그램 영역을 동적으로 할당하는 저장 장치 및 그것의 프로그램 방법

Country Status (2)

Country Link
US (1) US10037160B2 (ko)
KR (1) KR102295208B1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10303571B2 (en) * 2015-11-04 2019-05-28 Intel Corporation Data recovery in memory devices
US10809931B1 (en) * 2016-06-24 2020-10-20 EMC IP Holding Company LLC Techniques for use with physical media types having varying allowable write quotas
KR102340094B1 (ko) * 2017-03-31 2021-12-17 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작 방법
TWI649759B (zh) * 2017-09-28 2019-02-01 慧榮科技股份有限公司 資料儲存裝置與將資料寫入記憶體裝置之方法
KR102534648B1 (ko) 2018-03-08 2023-05-22 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
KR102530641B1 (ko) * 2018-03-21 2023-05-10 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
CN110874184B (zh) * 2018-09-03 2023-08-22 合肥沛睿微电子股份有限公司 快闪记忆体控制器及相关电子装置
CN110874186A (zh) * 2018-09-04 2020-03-10 合肥沛睿微电子股份有限公司 闪存控制器及相关的存取方法及电子装置
KR20200114482A (ko) 2019-03-28 2020-10-07 에스케이하이닉스 주식회사 컨트롤러, 이를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법
KR20200142219A (ko) 2019-06-12 2020-12-22 삼성전자주식회사 전자 장치 및 그의 저장 공간 이용 방법
KR20210025249A (ko) 2019-08-27 2021-03-09 삼성전자주식회사 메모리 시스템 및 그 동작 방법
US11069417B2 (en) 2019-08-27 2021-07-20 Samsung Electronics Co., Ltd. Memory system and method of operating the same
JP7467064B2 (ja) * 2019-10-17 2024-04-15 キオクシア株式会社 メモリシステムおよびガベッジコレクション制御方法
US11797230B2 (en) 2021-12-14 2023-10-24 Hewlett-Packard Development Company, L.P. Bios variables storage

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130173844A1 (en) 2011-12-29 2013-07-04 Jian Chen SLC-MLC Wear Balancing

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007037757A1 (en) 2005-09-29 2007-04-05 Trek 2000 International Ltd Portable data storage using slc and mlc flash memory
KR100833188B1 (ko) 2006-11-03 2008-05-28 삼성전자주식회사 데이터의 특성에 따라 싱글 레벨 셀 또는 멀티 레벨 셀에데이터를 저장하는 불휘발성 메모리 시스템
US7646636B2 (en) 2007-02-16 2010-01-12 Mosaid Technologies Incorporated Non-volatile memory with dynamic multi-mode operation
KR100889781B1 (ko) 2007-04-30 2009-03-20 삼성전자주식회사 멀티-비트 데이터를 저장하는 메모리 시스템, 그것의프로그램 방법, 그것을 포함한 컴퓨팅 시스템
KR101226685B1 (ko) 2007-11-08 2013-01-25 삼성전자주식회사 수직형 반도체 소자 및 그 제조 방법.
US8843691B2 (en) 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
KR101548175B1 (ko) 2008-11-05 2015-08-28 삼성전자주식회사 싱글 레벨 메모리 셀 블락과 멀티 레벨 메모리 셀 블락을 포함하는 불휘발성 메모리 장치의 마모 레벨링 방법
US8407400B2 (en) 2008-11-12 2013-03-26 Micron Technology, Inc. Dynamic SLC/MLC blocks allocations for non-volatile memory
CN102473140B (zh) 2009-07-17 2015-05-13 株式会社东芝 存储器管理装置
JP5330136B2 (ja) 2009-07-22 2013-10-30 株式会社東芝 半導体記憶装置
KR101081948B1 (ko) * 2009-12-22 2011-11-10 연세대학교 산학협력단 불휘발성 메모리 장치 및 그것의 데이터 저장 방법
KR101691092B1 (ko) 2010-08-26 2016-12-30 삼성전자주식회사 불휘발성 메모리 장치, 그것의 동작 방법, 그리고 그것을 포함하는 메모리 시스템
US8402243B2 (en) 2010-02-25 2013-03-19 Apple Inc. Dynamically allocating number of bits per cell for memory locations of a non-volatile memory
US8553466B2 (en) 2010-03-04 2013-10-08 Samsung Electronics Co., Ltd. Non-volatile memory device, erasing method thereof, and memory system including the same
US9536970B2 (en) 2010-03-26 2017-01-03 Samsung Electronics Co., Ltd. Three-dimensional semiconductor memory devices and methods of fabricating the same
US9021177B2 (en) 2010-04-29 2015-04-28 Densbits Technologies Ltd. System and method for allocating and using spare blocks in a flash memory
KR101682666B1 (ko) 2010-08-11 2016-12-07 삼성전자주식회사 비휘발성 메모리 장치, 그것의 채널 부스팅 방법, 그것의 프로그램 방법 및 그것을 포함하는 메모리 시스템
US8886990B2 (en) 2011-01-27 2014-11-11 Apple Inc. Block management schemes in hybrid SLC/MLC memory
KR101861170B1 (ko) 2011-08-17 2018-05-25 삼성전자주식회사 마이그레이션 관리자를 포함하는 메모리 시스템
KR20130050586A (ko) 2011-11-08 2013-05-16 주식회사 히타치엘지 데이터 스토리지 코리아 낸드 플래시 메모리의 셀 방식 변경 장치 및 방법
KR20130060791A (ko) * 2011-11-30 2013-06-10 삼성전자주식회사 마모도 제어 로직을 포함하는 메모리 시스템, 데이터 저장 장치, 메모리 카드, 그리고 솔리드 스테이트 드라이브
KR101989018B1 (ko) * 2012-06-25 2019-06-13 에스케이하이닉스 주식회사 데이터 저장 장치의 동작 방법
US9329948B2 (en) * 2012-09-15 2016-05-03 Seagate Technology Llc Measuring cell damage for wear leveling in a non-volatile memory
KR20140101626A (ko) * 2013-02-12 2014-08-20 삼성전자주식회사 솔리드 스테이트 드라이브의 데이터 처리 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130173844A1 (en) 2011-12-29 2013-07-04 Jian Chen SLC-MLC Wear Balancing

Also Published As

Publication number Publication date
US10037160B2 (en) 2018-07-31
KR20160075918A (ko) 2016-06-30
US20160179430A1 (en) 2016-06-23

Similar Documents

Publication Publication Date Title
KR102295208B1 (ko) 프로그램 영역을 동적으로 할당하는 저장 장치 및 그것의 프로그램 방법
US8621266B2 (en) Nonvolatile memory system and related method of performing erase refresh operation
US9190155B2 (en) Memory system
KR101662827B1 (ko) 쓰기 패턴에 따라 데이터 블록의 쓰기 모드를 선택하는 메모리 시스템 및 그것의 데이터 쓰기 방법
US9715444B2 (en) Storage device having nonvolatile memory device and write method
US9870836B2 (en) Memory system and method of controlling nonvolatile memory
KR101734200B1 (ko) 적응적 머지를 수행하는 메모리 시스템 및 그것의 데이터 쓰기 방법
US9891838B2 (en) Method of operating a memory system having a meta data manager
KR102245822B1 (ko) 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 프로그램 방법
KR102517681B1 (ko) 메모리 시스템 및 그것의 동작방법
JP2013114679A (ja) ウェアレベル制御ロジックを含むメモリシステム
KR20130081534A (ko) 저장 장치 및 불휘발성 메모리 장치, 그리고 그것의 동작 방법
US9257192B2 (en) Memory system performing multi-step erase operation based on stored metadata
US20120297117A1 (en) Data storage device and data management method thereof
KR101430637B1 (ko) 불휘발성 메모리 장치 및 그것의 데이터 관리 방법
KR102140512B1 (ko) 불휘발성 메모리 장치, 불휘발성 메모리 장치를 포함하는 불휘발성 메모리 시스템 및 불휘발성 메모리 시스템의 동작 방법
KR20130032155A (ko) 데이터 저장 장치 및 그것의 데이터 관리 방법
KR20130084846A (ko) 플래시 메모리를 기반으로 하는 저장 장치, 그것을 포함한 사용자 장치, 그리고 그것의 데이터 읽기 방법
US10642525B2 (en) Multiple-stage data lifetime management for storage devices
CN110928805B (zh) 存储器***及其操作方法
CN110955611B (zh) 存储器***及其操作方法
KR20200044461A (ko) 메모리 시스템 및 그것의 동작방법
KR102571629B1 (ko) 메모리 시스템 및 메모리 시스템의 동작방법
CN111949204A (zh) 存储器***、存储器控制器和存储器装置
CN110928485A (zh) 存储器***及其操作方法

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant