KR20120128978A - 데이터 저장 장치 및 그것의 데이터 관리 방법 - Google Patents

데이터 저장 장치 및 그것의 데이터 관리 방법 Download PDF

Info

Publication number
KR20120128978A
KR20120128978A KR1020110046957A KR20110046957A KR20120128978A KR 20120128978 A KR20120128978 A KR 20120128978A KR 1020110046957 A KR1020110046957 A KR 1020110046957A KR 20110046957 A KR20110046957 A KR 20110046957A KR 20120128978 A KR20120128978 A KR 20120128978A
Authority
KR
South Korea
Prior art keywords
page
data
memory
update
block
Prior art date
Application number
KR1020110046957A
Other languages
English (en)
Inventor
조한찬
황남오
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020110046957A priority Critical patent/KR20120128978A/ko
Priority to US13/443,313 priority patent/US20120297117A1/en
Publication of KR20120128978A publication Critical patent/KR20120128978A/ko

Links

Images

Classifications

    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • 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

Abstract

본 발명의 실시 예에 따른 불휘발성 메모리 장치를 포함하는 저장 장치의 데이터 관리 방법은, 업데이트 요청되는 페이지 데이터의 업데이트 횟수를 검출하는 단계; 및 상기 업데이트 횟수를 참조하여 상기 페이지 데이터를 제 1 메모리 블록 또는 제 2 메모리 블록에 할당하는 단계를 포함한다.

Description

데이터 저장 장치 및 그것의 데이터 관리 방법{DATA STORAGE DEVICE AND DATA MANAGEMENT METHOD THEREOF}
본 발명은 반도체 메모리 장치에 관한 것으로, 더욱 상세하게는 머지 동작의 효율을 높일 수 있는 저장 장치 및 그것의 데이터 관리 방법에 관한 것이다.
반도체 메모리 장치(Semiconductor Memory Device)는 크게 휘발성 메모리 장치(Volatile Memory Device)와 불휘발성 메모리 장치(Non-volatile Memory Device)로 구분된다. 휘발성 메모리 장치는 읽고 쓰는 속도가 빠르지만 외부 전원 공급이 끊기면 저장된 내용이 사라져 버리는 단점이 있다. 반면에 불휘발성 메모리 장치는 외부 전원 공급이 중단되더라도 그 내용을 보존한다. 그러므로 불휘발성 메모리 장치는 전원이 공급되었는지의 여부에 관계없이 보존되어야 할 내용을 기억시키는 데 쓰인다. 특히, 불휘발성 메모리 중에서 플래시 메모리(Flash memory)는 기존의 EEPROM에 비해 집적도가 높아, 대용량 보조 기억 장치로의 응용에 매우 유리하다.
플래시 메모리는 소거와 쓰기 동작의 단위가 일치하지 않는다. 그래서 플래시 변환 계층(FTL: Flash Translation Layer)이라는 소프트웨어가 이러한 단점을 극복하기 위하여 사용된다. 플래시 변환 계층(FTL)의 주요 기능 중에 주소 맵핑(Address Mapping) 기능이 있다. 플래시 변환 계층(FTL)은 호스트로부터 논리 주소(LA: Logical Address)를 입력받고, 이를 물리 주소(PA: Physical Address)로 변환한다. 여기에서, 물리 주소(PA)는 실제 플래시 메모리에서 사용할 주소이다.
대표적인 주소 맵핑 방법으로, 페이지 맵핑(Page Mapping), 블록 맵핑(Block Mapping), 그리고 혼합 맵핑(Hybrid Mapping) 등이 있다. 페이지 맵핑을 위해서는 페이지 맵핑 테이블이 사용된다. 페이지 맵핑 테이블은 페이지 단위로 맵핑 동작을 수행하기 위한 것이며, 논리 페이지 및 이에 대응하는 물리 페이지를 저장한다. 블록 맵핑을 위해서는 블록 맵핑 테이블이 사용된다. 블록 맵핑 테이블은 블록 단위로 맵핑 동작을 수행하기 위한 것이며, 메모리 블록 및 이에 대응하는 물리 블록을 저장한다. 혼합 맵핑 방법은 페이지 맵핑과 블록 맵핑을 혼용하는 주소 맵핑 방법이다.
본 발명의 목적은, 페이지 맵핑 방식의 저장 장치에서 가비지 컬렉션이나 머지 동작의 효율을 높일 수 있는 기술을 제공하는 데 있다. 그리고, 본 발명에 따른 페이지 관리에 따르면, 메모리 블록들의 소거 카운트의 편차를 감소시켜 효율적인 웨어 레벨링 관리가 가능하다.
본 발명의 실시 예에 따른 불휘발성 메모리 장치를 포함하는 저장 장치의 데이터 관리 방법은, 업데이트 요청되는 페이지 데이터의 업데이트 횟수를 검출하는 단계; 및 상기 업데이트 횟수를 참조하여 상기 페이지 데이터를 제 1 메모리 블록 또는 제 2 메모리 블록에 할당하는 단계를 포함한다.
본 발명의 실시 예에 따른 저장 장치는, 불휘발성 메모리 장치, 그리고 페이지 데이터의 업데이트 요청시, 상기 페이지 데이터를 상기 페이지 데이터의 업데이트 횟수를 참조하여 서로 다른 소거 카운트를 갖는 제 1 메모리 블록 또는 제 2 메모리 블록에 할당하는 메모리 컨트롤러를 포함한다.
본 발명에 따르면, 페이지 데이터의 업데이트 빈도에 따른 메모리 블록 맵핑이 이루어진다. 본 발명의 실시 예에 따르면, 소거 카운트가 상대적으로 낮은 메모리 블록에 업데이트 빈도가 높은 페이지 데이터가, 소거 카운트가 상대적으로 높은 메모리 블록에는 업데이트 빈도가 낮은 페이지 데이터가 할당된다. 따라서, 웨어 레벨링의 메모리 블록들 간의 소거 카운트 편차를 줄일 수 있다. 그리고 머지나 가비지 컬렉션의 효율을 높여 고속의 데이터 쓰기 동작이 가능하고, 긴 수명을 가지는 데이터 저장 장치 및 사용자 장치를 구현할 수 있다.
도 1은 본 발명의 실시 예에 따른 소프트웨어 계층을 보여주는 도면이다.
도 2는 본 발명의 실시 예에 따른 데이터 저장 장치를 보여주는 블록도이다.
도 3은 본 발명의 불휘발성 메모리 장치를 보여주는 블록도이다.
도 4는 본 발명의 실시 예에 따른 페이지 데이터의 필드 구성을 보여주는 도면이다.
도 5는 본 발명에 따른 페이지 관리 방법을 보여주는 블록도이다.
도 6은 본 발명에 따른 페이지 관리 방법을 보여주는 순서도이다.
도 7은 도 6의 블록 할당 방법을 좀더 구체적으로 보여주는 순서도이다.
도 8은 본 발명의 실시 예에 따른 솔리드 스테이트 디스크(SSD) 시스템을 보여주는 블록도이다.
도 9는 본 발명에 따른 메모리 시스템을 보여주는 블록도이다.
도 10은 본 발명에 따른 메모리 카드를 보여주는 블록도이다.
도 11은 본 발명의 실시 예에 따른 컴퓨팅 시스템을 보여주는 블록도이다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
이하에서는, 본 발명의 특징 및 기능을 설명하기 위한 불휘발성 저장 매체로서 플래시 메모리 장치를 한 예로서 사용할 것이다. 하지만, 이 기술 분야에 정통한 사람은 여기에 기재된 내용에 따라 본 발명의 다른 이점들 및 성능을 쉽게 이해할 수 있을 것이다. 또한, 저장 매체로서 또 다른 불휘발성 메모리 장치들로 구성될 수 있다. 예를 들면, 저장 매체로서 PRAM, MRAM, ReRAM, FRAM, NOR 플래시 메모리 등이 사용될 수 있으며, 이종의 메모리 장치들이 혼용되는 메모리 시스템에도 적용될 수 있다.
본 발명은 다른 실시 예들을 통해 구현되거나 적용될 수 있을 것이다. 게다가, 상세한 설명은 본 발명의 범위, 기술적 사상 그리고 다른 목적으로부터 상당히 벗어나지 않고 관점 및 응용에 따라 수정되거나 변경될 수 있다. 이하, 본 발명에 따른 실시 예를 첨부된 도면을 참조하여 상세히 설명한다.
도 1은 본 발명의 실시 예에 따른 사용자 장치의 소프트웨어의 계층 구조를 보여주는 도면이다. 도 1을 참조하면, 본 발명에 따른 사용자 장치의 소프트웨어는 애플리케이션(10), 파일 시스템(20), 플래시 변환 계층(30) 및 불휘발성 메모리(40)로 표현될 수 있다.
소프트웨어 계층 구조에서, 최상위의 애플리케이션(10)과 파일 시스템(20) 계층은 운영 체제(OS)로 분류될 수 있다. 파일 시스템(20)은 자료를 계층적으로 저장, 탐색, 접근, 그리고 조작하기 위한 추상적 자료 구조의 집합으로 정의된다.
플래시 변환 계층(30, FTL)은 파일 시스템(20)과 불휘발성 메모리 장치(40) 사이에서 불휘발성 메모리 장치(40)의 삭제 연산을 감추기 위한 인터페이싱을 제공한다. 플래시 변환 계층(30)에 의하여 쓰기 전 소거(Erase-before-Write) 및 소거 단위와 쓰기 단위의 불일치라는 불휘발성 메모리 장치(40)의 단점이 보완될 수 있다. 또한, 플래시 변환 계층(30)은 불휘발성 메모리 장치(40)의 기입 동작시, 파일 시스템이 생성한 논리 주소(LA)를 불휘발성 메모리 장치(40)의 물리 주소(PA)로 맵핑(Mapping) 시킨다.
플래시 변환 계층(30)은 페이지 맵핑 방식에 따라 파일 시스템(20)으로부터 제공되는 논리 주소(LA)를 논리 페이지 어드레스(LPN)로 맵핑한다. 그리고 논리 페이지 어드레스(LPN)는 다시 물리 페이지 어드레스(PPN)에 맵핑될 것이다. 특히, 본 발명의 실시 예에 따르면 플래시 변환 계층(30)은 페이지 데이터의 업데이트 횟수에 따라 서로 다른 메모리 블록에 할당한다. 따라서, 업데이트가 빈번한 페이지들은 동일한 메모리 블록에서 관리될 수 있다.
낸드 플래시 메모리와 같은 불휘발성 메모리 장치를 사용하는 저장 장치에서는 쓰기 성능이 중요하다. 예를 들면, 메타 데이터(Meta data)와 같이 빈번하게 업데이트되는 데이터의 쓰기 성능도 중요하다. 특히, 서버의 저장 장치로 사용되는 낸드 플래시 메모리를 제어하기 위해서는 다양한 상황에 대해서 유연하고, 효율적인 컴팩션(예를 들면, 가비지 컬렉션이나 머지 동작)이 요구된다. 따라서, 서버용 저장 장치에서 구동되는 플래시 변환 계층(FTL)에서는 페이지 맵핑 방식을 사용한다.
페이지 맵핑 방식을 사용하는 저장 장치에서의 효율적인 컴팩션(Compaction)과 웨어 레벨링(Wear leveling)을 위해서, 본 발명에서는 페이지 데이터의 업데이트 횟수를 고려한 블록 할당이 이루어진다. 즉, 플래시 변환 계층(30)은 업데이트 빈도가 높은 페이지 데이터들은 상대적으로 소거 카운트 값이 낮은 메모리 블록에 집중적으로 할당한다. 반면, 플래시 변환 계층(30)은 업데이트 빈도가 낮은 페이지 데이터들은 상대적으로 소거 카운트 값이 높은 메모리 블록에 집중적으로 할당한다. 업데이트 카운트 값이 높은 페이지 데이터는 그만큼 머지 동작에 의해서 다른 블록으로 복사될 가능성이 높다. 반면, 업데이트 빈도가 낮은 페이지 데이터는 그만큼 머지 동작시에 복사될 가능성이 낮다. 따라서, 본 발명의 실시 예에 따르면 효율적인 웨어 레벨링 동작이 가능하다.
도 2는 본 발명의 실시 예에 따른 사용자 장치를 보여주는 블록도이다. 도 2를 참조하면, 본 발명에 따른 사용자 장치(100)는 호스트(110)와 저장 장치(120)를 포함한다. 저장 장치(120)는 스토리지 컨트롤러(121)와 불휘발성 메모리 장치(122)를 포함한다.
호스트(110)는 쓰기 요청이 발생하면, 쓰기 데이터(Data)와 논리 어드레스(Logical Address: LA)를 저장 장치(120)로 전달한다. 개인용 컴퓨터나, 노트북과 같은 사용자 장치(100)에서 논리 어드레스(LA)는 섹터(Sector) 단위로 제공될 수 있다. 예를 들면, 쓰기 요청시, 호스트(110)는 데이터의 기입을 위한 시작 어드레스(LBA)와 섹터의 수(nSC)를 저장 장치(120)로 제공한다.
저장 장치(120)는 호스트(110)로부터의 쓰기 데이터를 저장한다. 이러한 동작을 위하여 스토리지 컨트롤러(121)는 호스트(110)와 불휘발성 메모리 장치(122)를 인터페이싱한다. 스토리지 컨트롤러(121)는 호스트(110)의 쓰기 명령에 응답하여 호스트(110)로부터 제공되는 데이터를 불휘발성 메모리 장치(122)에 기입하기 위하여 불휘발성 메모리 장치(122)를 제어한다. 또한, 스토리지 컨트롤러(121)는 호스트(110)로부터의 읽기 명령에 응답하여 불휘발성 메모리 장치(122)의 독출 동작을 제어한다.
스토리지 컨트롤러(121)는 플래시 변환 계층(Flash Translation Layer: 이하, FTL) 소프트웨어를 포함할 수 있다. 플래시 변환 계층(FTL)은 호스트(110)의 파일 시스템(File System)과 불휘발성 메모리 장치(122) 사이에서 불휘발성 메모리 장치(122)의 삭제 연산을 감추기 위한 인터페이싱을 제공한다. 플래시 변환 계층(FTL)에 의하여 쓰기 전 소거(Erase-before-Write) 및 소거 단위와 쓰기 단위의 불일치라는 불휘발성 메모리 장치(122)의 단점이 보완될 수 있다. 또한, 플래시 변환 계층(FTL)은 불휘발성 메모리 장치(122)의 기입 동작시, 파일 시스템이 생성한 논리 주소(LA)를 불휘발성 메모리 장치(122)의 물리 주소(PPN)로 맵핑(Mapping)시킨다.
본 발명의 스토리지 컨트롤러(121)에 의해서 구동되는 플래시 변환 계층(FTL)은 페이지 맵핑 방식에 따라 주소를 맵핑한다. 플래시 변환 계층(FTL)은 호스트(110)로부터 제공되는 논리 주소(예를 들면, 섹터 어드레스)를 불휘발성 메모리 장치(122)의 물리 주소인 페이지 어드레스(PPN)로 맵핑할 수 있다. 그리고, 플래시 변환 계층(FTL)은 페이지들 각각의 속성에 따라서 서로 다른 메모리 블록에 할당할 수 있다.
예를 들면, 플래시 변환 계층(FTL)은 업데이트 빈도가 높은 페이지 데이터를 핫 블록(Hot Block)에 할당할 수 있다. 플래시 변환 계층(FTL)은 업데이트 빈도가 낮은 페이지 데이터를 콜드 블록(Cold Block)에 할당할 수 있다. 일단, 핫 블록으로 할당된 페이지 데이터는 가비지 컬렉션이나, 머지 동작에 의해서 페이지 복사가 빈번하게 발생하게 될 것이다. 반면, 콜드 블록으로 할당된 페이지 데이터는 컴팩션에 의해서 복사되는 빈도가 낮을 것이다. 따라서, 소거 카운트(Erase count)가 높은 블록을 콜드 블록으로 지정하면, 능동적인 웨어 레벨링(Active wear-leveling)이 가능하다.
불휘발성 메모리 장치(122)는 스토리지 컨트롤러(121)의 제어에 따라, 소거 동작, 읽기 동작 또는 쓰기 동작을 수행한다. 불휘발성 메모리 장치(122)는 복수의 메모리 블록으로 구성된다. 각각의 메모리 블록은 복수의 페이지들(Pages)로 구성된다. 복수의 불휘발성 메모리가 적어도 2개의 채널을 통해서 연결되는 경우, 퍼포먼스의 향상을 위해서 불휘발성 메모리 장치(122)는 메모리 인터리빙 방식에 따라 제어될 수 있다.
하나의 채널에는 복수의 메모리 장치들이 연결되며, 이들 메모리 장치들은 각각 동일한 데이터 버스에 연결된다. 저장 매체로서 메모리 장치들이 낸드 플래시 메모리를 예로 들어 설명되었으나, 또 다른 불휘발성 메모리 장치들로 구성될 수 있다. 예를 들면, 저장 매체로서 PRAM, MRAM, ReRAM, FRAM, NOR 플래시 메모리 등이 사용될 수 있으며, 이종의 메모리 장치들이 혼용되는 메모리 시스템도 적용될 수 있다. 그리고 저장 매체로서 휘발성 메모리 장치(예를 들면, DRAM)가 포함될 수도 있다.
이상의 설명에 따르면, 본 발명의 저장 장치(120)는 업데이트 빈도에 따라 페이지 데이터를 서로 다른 메모리 블록에 할당할 수 있다. 따라서, 소거 카운트가 높은 메모리 블록에는 업데이트 빈도가 낮은 페이지 데이터를 할당하고, 소거 카운트가 낮은 메모리 블록에는 업데이트 빈도가 높은 페이지 데이터를 할당할 수 있다. 이러한 설정을 통하여, 불휘발성 메모리 장치(122) 내에 포함되는 메모리 블록들의 소거 카운트 편차를 줄일 수 있고, 웨어 레벨링의 효율을 높일 수 있다. 따라서, 저장 장치(100)의 수명을 높일 수 있을 것으로 기대된다.
특히, 최근 활발히 연구되는 솔리드 스테이트 드라이브(Solid State Drive: 이하, SSD)와 같은 저장 장치에서 본 발명의 기술적 특징이 채용될 수 있다. 이 경우, 스토리지 컨트롤러(121)는 USB, MMC, PCI-E, SATA, PATA, IDE, E-IDE, SCSI, ESDI, 그리고 SAS 등과 같은 다양한 인터페이스 프로토콜들 중 하나를 통해 호스트(110)와 통신하도록 구성될 것이다.
도 3은 도 1의 불휘발성 메모리 장치(122)를 보여주는 블록도이다. 도 3을 참조하면, 불휘발성 메모리 장치(122)는 셀 어레이(210), 어드레스 디코더(230), 페이지 버퍼(220), 그리고 제어 로직(240)을 포함한다.
셀 어레이(210)는 복수의 메모리 블록(Memory Block)을 포함할 수 있다. 도 3에서는 설명의 편의를 위하여 하나의 메모리 블록을 포함하는 셀 어레이(210)가 도시되어 있다. 메모리 블록들 각각은 복수의 페이지(Pages)로 구성될 수 있다. 그리고 각각의 페이지는 복수의 메모리 셀들로 구성될 수 있다. 불휘발성 메모리 장치(122)에서, 메모리 블록 단위로 소거 동작이 수행되고, 페이지 단위로 쓰기 또는 읽기 동작이 수행될 수 있다. 각각의 페이지들은 유저 데이터 영역과 스페어 데이터 영역이 포함된다. 스페어 데이터 영역에는 페이지에 대응하는 페이지 데이터의 업데이트 횟수(UP_CNT)가 기입된다.
셀 어레이(210)는 복수의 메모리 셀들을 포함할 수 있다. 메모리 셀들은 셀 스트링 구조(Cell String Structure)로 되어 있다. 하나의 셀 스트링은 스트링 선택 라인(SSL: String Selection Line)에 연결되는 스트링 선택 트랜지스터(SST), 복수의 워드 라인(WL0~WLn-1)에 연결되는 복수의 메모리 셀들, 그리고 접지 선택 라인(GSL: Ground Selection Line)에 연결되는 접지 선택 트랜지스터(GST)를 포함한다. 스트링 선택 트랜지스터(SST)는 비트 라인(BL)에 연결되고, 접지 선택 트랜지스터(GST)는 공통 소스 라인(CSL: Common Source Line)에 연결된다.
여기서, 셀 어레이(210)를 구성하는 메모리 셀들은 플로팅 게이트 또는 전하 트랩층과 같은 전하 저장층을 갖는 메모리 셀 또는 가변 저항 소자를 갖는 메모리 셀로 구현될 수 있다. 메모리 셀 어레이(210)는 단층 어레이 구조(single-layer array structure)(또는, 2차원 어레이 구조라고 불림) 또는 다층 어레이 구조(multi-layer array structure)(또는, 수직형 또는 스택형 3차원 어레이 구조라고 불림)를 갖도록 구현될수 있을 것이다.
어드레스 디코더(220)는 선택 라인(SSL, GSL) 또는 워드 라인(WL0~WLn-1)을 통해 셀 어레이(210)와 연결된다. 프로그램 또는 읽기 동작 시에, 어드레스 디코더(220)는 어드레스(Address)를 입력받고, 어느 하나의 워드 라인(예를 들면, WL1)을 선택한다. 한편, 어드레스 디코더(220)는 선택 워드 라인 또는 비선택 워드 라인으로 프로그램 또는 읽기 동작에 필요한 전압을 전달한다.
페이지 버퍼(230)는 기입 드라이버로서 또는 감지 증폭기로서 동작한다. 페이지 버퍼(230)는 선택된 메모리 셀들에 프로그램될 데이터나, 선택된 메모리 셀들로부터 읽은 데이터를 임시로 저장할 수 있다. 페이지 버퍼(230)는 비트 라인(BL0~BLm-1)을 통해 셀 어레이(210)와 연결된다. 페이지 버퍼(230)는 프로그램 동작 시에는 데이터(Data)를 입력받아 선택된 페이지의 메모리 셀들에 전달한다. 페이지 버퍼(230)는 읽기 동작 시에 선택된 페이지의 메모리 셀들로부터 데이터를 읽고, 외부로 데이터(Data)를 출력한다.
제어 로직(240)은 외부로부터의 명령어(CMD)나 제어에 따라 불휘발성 메모리 장치(122)의 프로그램, 읽기, 및 소거 등의 동작을 제어할 수 있다. 예를 들면, 프로그램 동작시 제어 로직(240)은 어드레스 디코더(220)를 선택 워드 라인으로 프로그램 전압이 제공되도록 제어할 수 있다. 제어 로직(240)은 페이지 버퍼(230)를 제어함으로 선택된 페이지에 프로그램 데이터가 제공되도록 할 수 있다.
각각의 행들에 저장되는 페이지 데이터의 업데이트 카운트(UP_CNT)는 제어 로직(240)의 제어에 따라 외부로 출력될 수 있다.
도 4는 본 발명의 실시 예에 따른 페이지 데이터의 구조를 예시적으로 보여주는 도면이다. 도 4를 참조하면, 하나의 페이지 데이터(Page_n)는 복수의 섹터들(SC_0~SC_7)과 더불어 업데이트 카운트(UP_CNT)를 포함한다.
불휘발성 메모리 장치(122)에는 복수의 메모리 공간들이 제공될 것이다. 특히, 플래시 메모리 장치는, 예를 들면, 하나의 페이지에 대응하는 단위로 데이터를 기입하거나 독출할 수 있다. 메모리 공간 즉, 페이지는 사용자에 의해서 정의된 크기를 갖는 섹터들(Sectors)로 구성된다. 섹터들의 크기는 다양하게 설정될 수 있다. 예를 들면, 하나의 섹터는 1 킬로 바이트(KByte)의 크기로 설정될 수 있다. 업데이트 카운트(UP_CNT)는 메타 데이터와 같은 제어 정보가 저장되는 스페어 영역(Spare area)에 저장될 수 있다.
본 발명의 실시 예에 따르면, 하나의 페이지에는 페이지의 업데이트 횟수를 나타내는 업데이트 카운트(UP_CNT) 필드를 포함한다. 호스트(110)에서 특정 섹터의 업데이트 요청이 들어오면, 스토리지 컨트롤러(121)는 업데이트 요청된 섹터가 포함되는 페이지 단위로 업데이트를 수행해야 한다. 따라서, 업데이트 이전의 페이지는 무효한 것으로 마킹되고, 업데이트된 섹터를 포함하는 페이지가 블록 내의 다른 페이지 위치에 프로그램될 것이다.
스토리지 컨트롤러(121)는 호스트(110)로부터의 액세스 요청이 발생하면, 선택된 페이지의 업데이트 카운트(UP_CNT)를 참조하여, 선택된 페이지에 대한 블록 할당을 수행할 수 있다. 예를 들면, 선택된 페이지의 업데이트 카운트(UP_CNT)가 기준치 이하의 값을 가지는 경우, 스토리지 컨트롤러(121)는 선택된 페이지를 업데이트 빈도가 낮은 페이지들의 그룹으로 분류할 수 있다. 이러한 페이지를 콜드 페이지(Cold page)라 칭하기로 한다. 콜드 페이지들은 소거 카운트(Erase count)가 높은 메모리 블록에 할당될 수 있다. 콜드 페이지로 분류된 페이지 데이터는 확률적으로 낮은 업데이트 빈도를 가진다. 따라서, 소거 카운트가 높은 메모리 블록에 콜드 페이지들이 할당되면, 메모리 블록은 머지나 가비지 컬렉션의 발생 확률은 낮아진다. 따라서, 메모리 블록의 소거 카운트(Erase count)의 증가 확률은 감소한다.
만일, 선택된 페이지의 업데이트 카운트(UP_CNT)가 기준치보다 높은 값을 가지는 경우, 스토리지 컨트롤러(121)는 선택된 페이지를 업데이트 빈도가 높은 페이지들의 그룹으로 분류할 수 있다. 이러한 페이지를 핫 페이지(Hot page)라 칭하기로 한다. 핫 페이지들은 소거 카운트(Erase count)가 낮은 메모리 블록에 할당될 수 있다. 핫 페이지로 분류된 페이지 데이터는 메타 데이터와 같이 높은 업데이트 빈도를 가진다. 따라서, 일단, 소거 카운트가 낮은 메모리 블록에 핫 페이지들이 기입되면, 이들 메모리 블록은 가비지 컬렉션이나 머지 동작에 노출될 가능성이 높다. 따라서, 핫 페이지가 할당된 메모리 블록에서는 반복적으로 페이지 복사와 소거 동작이 발생한다. 따라서, 이들 메모리 블록의 소거 카운트는 높아질 것이다.
이상에서는, 페이지 데이터의 업데이트 카운트(UP_CNT)에 따라 핫 페이지와 콜드 페이지로 구분되는 예를 들었으나 본 발명은 이에 국한되지 않는다. 업데이트 카운트(UP_CNT)에 따라, 페이지 속성을 3가지 이상의 다양한 레벨로 분류할 수 있을 것이다.
도 5는 본 발명의 실시 예에 따른 맵핑 방식의 효과를 보여주는 블록도이다. 도 5를 참조하면, 두 개의 메모리 블록들(BLK1, BLK2)에 기입된 페이지들(LPN1~LPN7, LPN8~LPN15)의 블록 할당 절차를 통해서 본 발명의 특징이 설명될 것이다.
제 1 블록(310)에 저장된 페이지들에 대한 액세스 요청이 발생하면, 스토리지 컨트롤러(121)는 스페어 영역이나, 또는 워킹 메모리 상의 테이블로 관리되는 업데이트 카운트(UP_CNT)를 검출한다. 그리고, 스토리지 컨트롤러(121)가 페이지들(LPN0, LPN3, LPN7, LPN9, LPN12, LPN13)을 콜드 페이지로 분류하고, 페이지들(LPN2, LPN6, LPN10, LPN14)을 핫 페이지로 분류하였다고 가정하자.
그리고 무효 페이지들(LPN1, LPN4, LPN5, LPN8, LPN11, LPN15)은 업데이트 동작에 의해서 무효한 것으로 처리되는 데이터이다. 따라서, 무효 페이지들(LPN1, LPN4, LPN5, LPN8, LPN11, LPN15)에 대한 페이지 복사는 발생하지 않을 것이다.
콜드 페이지들(LPN0, LPN3, LPN7, LPN9, LPN12, LPN13) 각각은 호스트(110)로부터 액세스 요청이 발생하는 시점에, 콜드 데이터 블록(330)으로 복사될 것이다. 콜드 페이지들(LPN0, LPN3, LPN7, LPN9, LPN12, LPN13)은 각각에 대한 액세스 요청이 발생한 시점에 콜드 데이터 블록(330)에 복사될 수 있다. 또는, 콜드 페이지들(LPN0, LPN3, LPN7, LPN9, LPN12, LPN13)은 메모리 블록(310, 320)의 머지 동작시에 콜드 데이터 블록(330)에 한꺼번에 복사될 수도 있다.
일단 콜드 데이터 블록(330)에 복사된 콜드 페이지들(LPN0, LPN3, LPN7, LPN9, LPN12, LPN13)은 이후에 업데이트될 확률이 낮다. 따라서, 시간이 경과하더라도 콜드 페이지들(LPN0, LPN3, LPN7, LPN9, LPN12, LPN13) 각각은 업데이트되지 않고, 동일한 콜드 페이지(330) 내에서 유지될 가능성이 높다. 반면, 핫 데이터 블록(340)에 복사된 핫 페이지들(LPN2, LPN6, LPN10, LPN14)은 머지 동작에 의해서 또 다른 핫 데이터 블록(350)에 지속적으로 복사될 수 있다.
상술한 방식으로 페이지 데이터가 관리된다면, 불휘발성 메모리 장치의 내부에 포함되는 메모리 블록들의 소거 카운트 수는 균일하게 유지될 수 있다.
도 6은 본 발명의 실시 예에 따른 주소 맵핑 방법을 보여주는 순서도이다. 도 6을 참조하면, 호스트(110)로부터 저장 장치(120)에 액세스 요청이 전달되면, 스토리지 컨트롤러(121)에 의한 페이지 맵핑이 시작된다.
단계 S110에서, 스토리지 컨트롤러(121, 도 2 참조) 또는 플래시 변환 계층(30, 도 1 참조)은 호스트(110)로부터의 쓰기 요청을 전달받는다. 쓰기 요청에는 쓰기 요청되는 데이터와 그에 대응하는 논리 어드레스가 포함될 것이다.
단계 S120에서, 스토리지 컨트롤러(121)는 쓰기 요청이 업데이트 요청인지 아니면 새로운 데이터의 쓰기 요청인지를 검출한다. 만일, 쓰기 요청이 업데이트 요청에 대응하는 경우, 절차는 타깃 페이지에 대한 업데이트 카운트(UP_CNT) 값을 읽어내기 위한 단계 S130으로 이동한다. 반면, 쓰기 요청이 업데이트 요청이 아닌 경우, 절차는 쓰기 데이터를 지정된 메모리 블록에 할당하기 위한 단계 S150으로 이동한다.
단계 S130에서, 스토리지 컨트롤러(121)는 업데이트 요청된 적어도 하나의 페이지에 대한 업데이트 카운트(UP_CNT) 값을 읽어낸다. 업데이트 카운트(UP_CNT)는 업데이트될 페이지가 저장된 셀 어레이(210, 도 3 참조)의 스페어 필드(Spare field)에 저장될 수 있다. 이 경우, 스토리지 컨트롤러(121)는 업데이트될 페이지를 독출하고, 독출된 업데이트될 페이지 데이터에 포함된 업데이트 카운트를 획득할 수 있다. 또는, 업데이트 카운트(UP_CNT)는 스토리지 컨트롤러(121)에 구비되는 워킹 메모리에 룩업 테이블(Look-up table)로 저장될 수 있다. 이 경우, 룩업 테이블을 스캐닝하여 업데이트 카운트(UP_CNT)를 획득할 수 있다.
단계 S140에서, 스토리지 컨트롤러(121)는 획득된 업데이트 카운트(UP_CNT)를 참조하여 페이지 데이터를 메모리 블록에 할당한다. 만일, 업데이트 카운트(UP_CNT)가 기준치보다 크면, 스토리지 컨트롤러(121)는 쓰기 요청된 페이지 데이터를 핫 데이터 블록에 할당한다. 반면, 업데이트 카운트(UP_CNT)가 기준치 이하이면, 스토리지 컨트롤러(121)는 쓰기 요청된 페이지 데이터를 콜드 데이터 블록에 할당한다. 업데이트 카운트(UP_CNT)를 참조한 페이지 데이터의 블록 할당이 완료되면, 절차는 할당된 메모리 블록에 쓰기 데이터를 페이지 단위로 프로그램하기 위한 단계 S160으로 이동한다.
단계 S150에서, 업데이트 요청이 아닌 경우에 스토리지 컨트롤러(121)는 쓰기 데이터를 페이지 맵핑 방식에 따라 선택된 메모리 블록에 할당할 것이다. 일반적으로 새로운 데이터의 입력이나, 대용량 데이터의 쓰기 요청이 이러한 경우에 해당할 수 있다. 이후, 절차는 단계 S160으로 이동하게 될 것이다.
단계 S160에서, 스토리지 컨트롤러(121)는 쓰기 요청된 데이터를 페이지 단위로 불휘발성 메모리 장치(122)에 기입할 것이다. 이때, 콜드 데이터 블록이나 핫 데이터 블록에 할당된 페이지 데이터는 증가된 업데이트 카운트(UP_CNT) 값과 함께 선택된 페이지 영역에 저장될 것이다. 반면, 처음 기입되는 데이터와 같은 업데이트 데이터가 아닌 경우에는 업데이트 카운트(UP_CNT) 필드에는 초기값이 기록될 것이다. 쓰기 요청된 데이터에 대한 불휘발성 메모리 장치(122)로의 프로그램이 완료되면 제반 절차는 종료된다.
도 7은 도 6의 단계 S140을 좀더 구체적으로 보여주는 순서도이다. 도 7을 참조하면, 업데이트 카운트(UP_CNT)를 참조하여 쓰기 요청된 데이터의 블록 할당이 수행된다.
단계 S141에서, 획득된 업데이트 카운트(UP_CNT)와 기준치(Reference)와의 비교가 수행된다. 여기서, 기준치(Reference)는 다양하게 설정될 수 있다. 예를 들면, 각각의 페이지들의 위치에 따라, 메모리 장치의 특성에 따라, 전체 소거 카운트의 평균값에 따라 고정적으로 또는 가변적으로 설정될 수 있을 것이다.
단계 S142에서, 선택된 페이지의 업데이트 카운트(UP_CNT)가 기준치(Reference)보다 크다면(Yes 방향), 절차는 쓰기 요청된 페이지를 핫 데이터 블록에 할당하기 위한 단계 S143으로 이동한다. 하지만, 쓰기 요청된 페이지의 업데이트 카운트(UP_CNT)가 기준치(Reference) 크지 않다면(No 방향), 절차는 쓰기 요청된 페이지를 콜드 데이터 블록(Cold Data Block)으로 할당하기 위한 단계 S144로 이동한다.
상술한 쓰기 요청되는 페이지 데이터에 대한 블록 할당 방식을 사용하면, 머지 동작 또는 가비지 컬렉션을 위한 페이지 복사의 횟수를 줄일 수 있다. 그리고, 본 발명에 따르면, 메모리 블록의 소거 카운트(Erase count)의 수가 높을수록 콜드 데이터 블록으로 할당될 가능성이 높다. 따라서, 소거 카운트가 낮은 메모리 블록이 핫 데이터 블록으로 할당됨에 따라 메모리 장치의 소거 카운트 값들 간의 편차를 줄일 수 있다. 이것은 메모리 장치의 높은 웨어 레벨링이 가능함을 의미하고, 결국에는 메모리 장치의 수명을 연장시킬 수 있음을 나타낸다.
도 8은 본 발명의 실시 예에 따른 솔리드 스테이트 디스크(이하, SSD)를 포함하는 사용자 장치를 보여주는 블록도이다. 도 8을 참조하면, 사용자 장치(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) 등이 포함될 수 있다.
SSD 컨트롤러(1210)는 호스트(1100)로부터 쓰기 요청되는 데이터를 기입할 때 업데이트 카운트(UP_CNT) 필드를 생성한다. 그리고 업데이트 카운트(UP_CNT) 필드를 불휘발성 메모리 장치(1230)의 스페어 필드나, 동작 메모리에 구성되는 룩업 테이블에 저장한다. 그리고 기입된 페이지 데이터에 대한 업데이트가 발생할 때마다 업데이트 카운트(UP_CNT)를 증가시킨다.
쓰기 요청이 발생하면, SSD 컨트롤러(1210)는 업데이트 카운트(UP_CNT)를 참조하여 쓰기 요청된 페이지를 핫 데이터 블록 또는 콜드 데이터 블록에 할당한다. 핫 데이터 블록에 할당된 페이지들은 빈번하게 업데이트되고, 머지될 것이다. 반면, 콜드 데이터 블록에 할당된 페이지 데이터들은 상대적으로 머지 동작을 위한 복사 가능성은 낮다. 따라서, 소거 카운트가 높은 메모리 블록을 콜드 데이터 블록으로 할당하고, 소거 카운트가 낮은 메모리 블록을 핫 데이터 블록에 할당할 수 있다. 이 경우, 메모리 블록들의 소거 카운트의 편차가 줄어들어, 메모리 장치의 웨어 레벨링 효율을 높일 수 있다.
버퍼 메모리(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 플래시 메모리 등이 사용될 수 있으며, 이종의 메모리 장치들이 혼용되는 메모리 시스템도 적용될 수 있다. 그리고 저장 매체로서 휘발성 메모리 장치(예를 들면, DRAM)이 포함될 수도 있다.
도 9는 본 발명에 따른 메모리 시스템(2000)을 간략히 보여주는 블록도이다. 도 9를 참조하면, 본 발명에 따른 메모리 시스템(2000)은 불휘발성 메모리 장치(2200)와 메모리 컨트롤러(2100)를 포함한다.
메모리 컨트롤러(2100)는 불휘발성 메모리 장치(2200)를 제어하도록 구성될 것이다. 불휘발성 메모리 장치(2200)와 메모리 컨트롤러(2100)의 결합에 의해 메모리 카드로 제공될 수 있을 것이다. SRAM(2110)은 프로세싱 유닛(2120)의 동작 메모리로 사용된다. 여기서, SRAM(2110)에는 각각의 페이지 데이터들에 대한 업데이트 횟수를 저장하기 위한 룩-업 테이블이 구성될 수 있다. 호스트 인터페이스(2130)는 메모리 시스템(2000)과 접속되는 호스트의 데이터 교환 프로토콜을 구비한다. 에러 정정 블록(2140)은 불휘발성 메모리 장치(2200)로부터 독출된 데이터에 포함되는 에러를 검출 및 정정한다. 메모리 인터페이스(2150)는 본 발명의 불휘발성 메모리 장치(2200)와 인터페이싱한다. 프로세싱 유닛(2120)은 메모리 컨트롤러(2100)의 데이터 교환을 위한 제반 제어 동작을 수행한다. 비록 도면에는 도시되지 않았지만, 본 발명에 따른 메모리 시스템(2000)은 호스트(Host)와의 인터페이싱을 위한 코드 데이터를 저장하는 ROM(미도시됨) 등이 더 제공될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다.
쓰기 요청이 발생하면, 메모리 컨트롤러(2100)는 업데이트 카운트(UP_CNT)를 참조하여 쓰기 요청된 페이지를 핫 데이터 블록 또는 콜드 데이터 블록에 할당한다. 핫 데이터 블록에 할당된 페이지들은 빈번하게 업데이트되고, 머지될 것이다. 반면, 콜드 데이터 블록에 할당된 페이지 데이터들은 상대적으로 머지 동작을 위한 복사 가능성은 낮다. 따라서, 소거 카운트가 높은 메모리 블록을 콜드 데이터 블록으로 할당하고, 소거 카운트가 낮은 메모리 블록을 핫 데이터 블록에 할당할 수 있다. 이 경우, 메모리 블록들의 소거 카운트의 편차가 줄어들어, 메모리 장치의 웨어 레벨링 효율을 높일 수 있다.
불휘발성 메모리 장치(2200)는 복수의 플래시 메모리 칩들로 구성되는 멀티-칩 패키지로 제공될 수도 있다. 이상의 본 발명의 메모리 시스템(2000)은 에러의 발생 확률이 낮은 고신뢰성의 저장 매체로 제공될 수 있다. 이 경우, 메모리 컨트롤러(2100)는 USB, MMC, PCI-E, SAS, SATA, PATA, SCSI, ESDI, 그리고 IDE 등과 같은 다양한 인터페이스 프로토콜들 중 하나를 통해 외부(예를 들면, 호스트)와 통신하도록 구성될 것이다.
도 10은 본 발명의 다른 실시 예에 따른 데이터 저장 장치(3000)를 예시적으로 보여주는 블록도이다. 도 10을 참조하면, 본 발명에 따른 데이터 저장 장치(3000)는 플래시 메모리(3100)와 플래시 컨트롤러(3200)를 포함할 수 있다. 플래시 컨트롤러(3200)는 데이터 저장 장치(3000) 외부로부터 수신된 제어 신호들에 기초하여 플래시 메모리(3100)를 제어할 수 있다.
호스트(Host)로부터 쓰기 요청이 발생하면, 플래시 컨트롤러(3200)는 업데이트 카운트(UP_CNT)를 참조하여 쓰기 요청된 페이지를 핫 데이터 블록 또는 콜드 데이터 블록에 할당한다. 핫 데이터 블록에 할당된 페이지들은 빈번하게 업데이트되고, 머지될 것이다. 반면, 콜드 데이터 블록에 할당된 페이지 데이터들은 상대적으로 머지 동작을 위한 복사 가능성은 낮다. 따라서, 소거 카운트가 높은 메모리 블록을 콜드 데이터 블록으로 할당하고, 소거 카운트가 낮은 메모리 블록을 핫 데이터 블록에 할당할 수 있다. 이 경우, 메모리 블록들의 소거 카운트의 편차가 줄어들어, 메모리 장치의 웨어 레벨링 효율을 높일 수 있다.
본 발명의 데이터 저장 장치(3000)는 메모리 카드 장치, SSD 장치, 멀티미디어 카드 장치, SD 장치, 메모리 스틱 장치, 하드 디스크 드라이브 장치, 하이브리드 드라이브 장치, 또는 범용 직렬 버스 플래시 장치를 구성할 수 있다. 예를 들면, 본 발명의 데이터 저장 장치(3000)는 디지털, 카메라, 개인 컴퓨터 등과 같은 사용자 장치를 사용하기 위한 산업 표준을 만족하는 카드를 구성할 수 있다.
도 11에는 플래시 메모리 장치(4120)를 포함한 컴퓨팅 시스템(4000)이 개략적으로 도시되어 있다. 본 발명에 따른 컴퓨팅 시스템(4000)은 시스템 버스(4600)에 전기적으로 연결된 마이크로프로세서(4200), 램(4300), 사용자 인터페이스(4400), 베이스밴드 칩셋(Baseband chipset)과 같은 모뎀(4500) 및 메모리 시스템(4100)을 포함한다. 메모리 시스템(4100)은 도 8의 SSD 또는 도 9에 도시된 메모리 시스템, 도 10에 도시된 메모리 카드와 실질적으로 동일하게 구성될 것이다.
본 발명에 따른 컴퓨팅 시스템(4000)이 모바일 장치인 경우, 컴퓨팅 시스템(4000)의 동작 전압을 공급하기 위한 배터리(미도시됨)가 추가적으로 제공될 것이다. 비록 도면에는 도시되지 않았지만, 본 발명에 따른 컴퓨팅 시스템(4000)에는 응용 칩세트(Application chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램, 등이 더 제공될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다. 메모리 시스템(4100)은, 예를 들면, 데이터를 저장하는 데 불휘발성 메모리를 사용하는 SSD(Solid State Drive/Disk)를 구성할 수 있다. 또는, 메모리 시스템(4100)은, 퓨전 플래시 메모리(예를 들면, 원낸드 플래시 메모리)로 제공될 수 있다.
마이크로프로세서(4200)로부터 쓰기 요청이 발생하면, 메모리 컨트롤러(4110)는 업데이트 카운트(UP_CNT)를 참조하여 쓰기 요청된 페이지를 핫 데이터 블록 또는 콜드 데이터 블록에 할당한다. 핫 데이터 블록에 할당된 페이지들은 빈번하게 업데이트되고, 머지될 것이다. 반면, 콜드 데이터 블록에 할당된 페이지 데이터들은 상대적으로 머지 동작을 위한 복사 가능성은 낮다. 따라서, 소거 카운트가 높은 메모리 블록을 콜드 데이터 블록으로 할당하고, 소거 카운트가 낮은 메모리 블록을 핫 데이터 블록에 할당할 수 있다. 이 경우, 메모리 블록들의 소거 카운트의 편차가 줄어들어, 메모리 장치의 웨어 레벨링 효율을 높일 수 있다.
본 발명에 따른 불휘발성 메모리 장치 그리고/또는 메모리 컨트롤러는 다양한 형태들의 패키지를 이용하여 실장될 수 있다. 예를 들면, 본 발명에 따른 플래시 메모리 장치 그리고/또는 메모리 컨트롤러는 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), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP), 등과 같은 패키지들을 이용하여 실장될 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시 예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
10 : 응용 프로그램 20 : 파일 시스템
30 : 플래시 변환 계층(FTL) 40 : 불휘발성 메모리 장치
110 : 호스트 120 : 저장 장치
121 : 스토리지 컨트롤러 122 : 불휘발성 메모리 장치
210 : 셀 어레이 220 : 행 디코더
230 : 페이지 버퍼 240 : 제어 로직
1100 : 호스트 1200 : SSD
1210 : SSD 컨트롤러 1220 : 버퍼 메모리
1230 : 불휘발성 메모리 2100 : 메모리 컨트롤러
2110 : 에스램 2120 : CPU
2130 : RAM 2140 : ECC 유닛
2150 : 메모리 인터페이스 2200 : 불휘발성 메모리 장치
3100: 플래시 메모리 3200: 플래시 컨트롤러
4100 : 메모리 시스템 4110 : 메모리 컨트롤러
4120 : 플래시 메모리 4200 : CPU
4300 : 램 4400 : 유저 인터페이스
4500 : 모뎀 4600 : 시스템 버스

Claims (10)

  1. 불휘발성 메모리 장치를 포함하는 저장 장치의 데이터 관리 방법에 있어서:
    업데이트 요청되는 페이지 데이터의 업데이트 횟수를 검출하는 단계; 그리고
    상기 업데이트 횟수를 참조하여 상기 페이지 데이터를 제 1 메모리 블록 또는 상기 제 1 메모리 블록과 다른 소거 카운트를 갖는 제 2 메모리 블록에 할당하는 단계를 포함하는 데이터 관리 방법.
  2. 제 1 항에 있어서,
    상기 할당하는 단계에서, 상기 업데이트 횟수가 기준치보다 큰 경우에는, 상기 페이지 데이터를 상기 제 2 메모리 블록보다 더 작은 소거 카운트 값을 가지는 상기 제 1 메모리 블록에 할당하는 데이터 관리 방법.
  3. 제 2 항에 있어서,
    상기 검출하는 단계에서, 상기 업데이트 횟수는 상기 불휘발성 메모리 장치의 스페어 필드로부터 독출되는 데이터 관리 방법.
  4. 제 2 항에 있어서,
    상기 검출하는 단계에서, 상기 업데이트 횟수는 상기 불휘발성 메모리 장치의 외부에 구성되는 룩업 테이블로부터 독출되는 데이터 관리 방법.
  5. 제 1 항에 있어서,
    상기 저장 장치의 컨트롤러가 쓰기 요청을 수신하는 단계; 그리고
    상기 쓰기 요청이 상기 업데이트 요청인지를 판단하는 단계를 더 포함하는 데이터 관리 방법.
  6. 제 5 항에 있어서,
    상기 쓰기 요청이 업데이트 요청이 아닌 경우, 상기 페이지 데이터를 페이지 주소 사상법에 의해서 선택되는 메모리 블록에 할당하는 단계를 더 포함하는 데이터 관리 방법.
  7. 제 5 항에 있어서,
    상기 쓰기 요청이 업데이트 요청인 경우, 상기 검출된 업데이트 횟수를 카운트-업하여 상기 페이지 데이터와 함께 상기 불휘발성 메모리 장치에 기입하는 단계를 더 포함하는 데이터 관리 방법.
  8. 불휘발성 메모리 장치; 그리고
    페이지 데이터의 업데이트 요청시, 상기 페이지 데이터를 상기 페이지 데이터의 업데이트 횟수를 참조하여 서로 다른 소거 카운트를 갖는 제 1 메모리 블록 또는 제 2 메모리 블록에 할당하는 메모리 컨트롤러를 포함하는 데이터 저장 장치.
  9. 제 8 항에 있어서,
    상기 메모리 컨트롤러는 상기 페이지 데이터의 업데이트 요청에 응답하여 외부로부터의 논리 어드레스를 상기 불휘발성 메모리 장치의 물리 어드레스로 변환하는 플래시 변환 계층을 포함하는 데이터 저장 장치.
  10. 제 9 항에 있어서,
    상기 플래시 변환 계층은 페이지 주소 사상법에 따라 상기 논리 어드레스를 상기 물리 어드레스로 변환하는 데이터 저장 장치.
KR1020110046957A 2011-05-18 2011-05-18 데이터 저장 장치 및 그것의 데이터 관리 방법 KR20120128978A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020110046957A KR20120128978A (ko) 2011-05-18 2011-05-18 데이터 저장 장치 및 그것의 데이터 관리 방법
US13/443,313 US20120297117A1 (en) 2011-05-18 2012-04-10 Data storage device and data management method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110046957A KR20120128978A (ko) 2011-05-18 2011-05-18 데이터 저장 장치 및 그것의 데이터 관리 방법

Publications (1)

Publication Number Publication Date
KR20120128978A true KR20120128978A (ko) 2012-11-28

Family

ID=47175825

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110046957A KR20120128978A (ko) 2011-05-18 2011-05-18 데이터 저장 장치 및 그것의 데이터 관리 방법

Country Status (2)

Country Link
US (1) US20120297117A1 (ko)
KR (1) KR20120128978A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10114561B2 (en) 2016-05-25 2018-10-30 SK Hynix Inc. Memory controllers, memory systems, and methods relating to wear-leveling

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130076429A (ko) * 2011-12-28 2013-07-08 삼성전자주식회사 메모리 장치의 저장 영역 관리 방법 및 이를 이용한 저장 장치
US9268681B2 (en) * 2012-08-30 2016-02-23 Apple Inc. Heterogeneous data paths for systems having tiered memories
US9013922B2 (en) * 2012-09-20 2015-04-21 Silicon Motion, Inc. Data storage device and flash memory control method thereof
US10073851B2 (en) * 2013-01-08 2018-09-11 Apple Inc. Fast new file creation cache
KR20150139718A (ko) * 2014-06-03 2015-12-14 에스케이하이닉스 주식회사 불휘발성 메모리를 제어하는 컨트롤러 및 그것을 포함하는 반도체 장치
CN106155579A (zh) * 2015-04-27 2016-11-23 广明光电股份有限公司 固态硬盘动态储存转换层数据的方法
US10942844B2 (en) 2016-06-10 2021-03-09 Apple Inc. Reserved memory in memory management system
CN109408416B (zh) * 2018-09-20 2021-01-26 新华三技术有限公司 一种地址映射表项页管理方法及装置
US11385798B1 (en) * 2020-12-28 2022-07-12 Lightbits Labs Ltd. Method and system for application aware, management of write operations on non-volatile storage
US20230017824A1 (en) * 2021-07-15 2023-01-19 Samsung Electronics Co., Ltd. Systems and methods for load balancing in a heterogeneous memory system
US11922034B2 (en) 2021-09-02 2024-03-05 Samsung Electronics Co., Ltd. Dual mode storage device
CN116107491A (zh) * 2021-11-10 2023-05-12 三星电子株式会社 存储器控制器、存储装置和存储装置的操作方法
US11782730B1 (en) * 2023-05-19 2023-10-10 Lowe's Companies, Inc. Operation-specific file system

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6230233B1 (en) * 1991-09-13 2001-05-08 Sandisk Corporation Wear leveling techniques for flash EEPROM systems
JP3328321B2 (ja) * 1992-06-22 2002-09-24 株式会社日立製作所 半導体記憶装置
US6944063B2 (en) * 2003-01-28 2005-09-13 Sandisk Corporation Non-volatile semiconductor memory with large erase blocks storing cycle counts
US7089349B2 (en) * 2003-10-28 2006-08-08 Sandisk Corporation Internal maintenance schedule request for non-volatile memory system
JP4863749B2 (ja) * 2006-03-29 2012-01-25 株式会社日立製作所 フラッシュメモリを用いた記憶装置、その消去回数平準化方法、及び消去回数平準化プログラム
US7409490B2 (en) * 2006-04-15 2008-08-05 Yi-Chun Liu Method of flash memory management
US20100017650A1 (en) * 2008-07-19 2010-01-21 Nanostar Corporation, U.S.A Non-volatile memory data storage system with reliability management
US20100174845A1 (en) * 2009-01-05 2010-07-08 Sergey Anatolievich Gorobets Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques
US8312204B2 (en) * 2009-01-23 2012-11-13 Seagate Technology Llc System and method for wear leveling in a data storage device
US8176295B2 (en) * 2009-04-20 2012-05-08 Imation Corp. Logical-to-physical address translation for a removable data storage device
US8688894B2 (en) * 2009-09-03 2014-04-01 Pioneer Chip Technology Ltd. Page based management of flash storage
US20110320910A1 (en) * 2010-06-29 2011-12-29 Yi-Chun Liu Storage management method and storage system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10114561B2 (en) 2016-05-25 2018-10-30 SK Hynix Inc. Memory controllers, memory systems, and methods relating to wear-leveling

Also Published As

Publication number Publication date
US20120297117A1 (en) 2012-11-22

Similar Documents

Publication Publication Date Title
US10936252B2 (en) Storage system capable of invalidating data stored in a storage device thereof
KR20120128978A (ko) 데이터 저장 장치 및 그것의 데이터 관리 방법
KR101662827B1 (ko) 쓰기 패턴에 따라 데이터 블록의 쓰기 모드를 선택하는 메모리 시스템 및 그것의 데이터 쓰기 방법
US9032138B2 (en) Storage device based on a flash memory and user device including the same
US10235079B2 (en) Cooperative physical defragmentation by a file system and a storage device
US8984219B2 (en) Data storage device and method of writing data in the same
KR20130032155A (ko) 데이터 저장 장치 및 그것의 데이터 관리 방법
JP6134205B2 (ja) 記憶装置のデータ書き込み方法
US8918580B2 (en) Storage device with buffer memory including non-volatile RAM and volatile RAM
US9190155B2 (en) Memory system
KR102295208B1 (ko) 프로그램 영역을 동적으로 할당하는 저장 장치 및 그것의 프로그램 방법
US8966209B2 (en) Efficient allocation policies for a system having non-volatile memory
KR101734200B1 (ko) 적응적 머지를 수행하는 메모리 시스템 및 그것의 데이터 쓰기 방법
KR20120052028A (ko) 데이터 저장 장치, 사용자 장치 및 그것의 주소 맵핑 방법
US10289340B2 (en) Coalescing metadata and data writes via write serialization with device-level address remapping
KR101430637B1 (ko) 불휘발성 메모리 장치 및 그것의 데이터 관리 방법
KR20200044461A (ko) 메모리 시스템 및 그것의 동작방법
KR20200068944A (ko) 메모리 시스템 및 그것의 동작방법
KR20200033459A (ko) 메모리 시스템 및 그것의 동작방법
US20230152968A1 (en) Storage devices including non-volatile memory devices
KR102660399B1 (ko) 메모리 시스템 및 그것의 동작방법
KR20230071005A (ko) 스토리지 장치
KR20200106682A (ko) 데이터 처리 시스템 및 그것의 동작방법
KR20200033460A (ko) 메모리 시스템 및 그것의 동작방법

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid