KR20120003282A - 쓰기 패턴에 따라 데이터 블록의 쓰기 모드를 선택하는 메모리 시스템 및 그것의 데이터 쓰기 방법 - Google Patents

쓰기 패턴에 따라 데이터 블록의 쓰기 모드를 선택하는 메모리 시스템 및 그것의 데이터 쓰기 방법 Download PDF

Info

Publication number
KR20120003282A
KR20120003282A KR1020100064048A KR20100064048A KR20120003282A KR 20120003282 A KR20120003282 A KR 20120003282A KR 1020100064048 A KR1020100064048 A KR 1020100064048A KR 20100064048 A KR20100064048 A KR 20100064048A KR 20120003282 A KR20120003282 A KR 20120003282A
Authority
KR
South Korea
Prior art keywords
data
block
page
write
log
Prior art date
Application number
KR1020100064048A
Other languages
English (en)
Other versions
KR101662827B1 (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 KR1020100064048A priority Critical patent/KR101662827B1/ko
Priority to US13/172,897 priority patent/US8677058B2/en
Publication of KR20120003282A publication Critical patent/KR20120003282A/ko
Application granted granted Critical
Publication of KR101662827B1 publication Critical patent/KR101662827B1/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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Abstract

본 발명의 불휘발성 메모리 장치의 쓰기 방법은, 데이터 블록을 갱신하기 위한 로그 블록에 쓰기 데이터를 버퍼링하는 단계, 상기 쓰기 데이터의 쓰기 패턴이 순차 쓰기 패턴인지 또는 랜덤 쓰기 패턴인지를 검출하는 단계, 그리고 상기 데이터 블록과 상기 로그 블록의 병합 데이터를 기입하기 위한 새로운 데이터 블록을 선택하는 단계를 포함하되, 상기 새로운 데이터 블록은 상기 검출된 쓰기 패턴에 따라 싱글 레벨 셀 블록(SLC Block) 또는 멀티 레벨 셀 블록(MLC Block)이 선택된다.

Description

쓰기 패턴에 따라 데이터 블록의 쓰기 모드를 선택하는 메모리 시스템 및 그것의 데이터 쓰기 방법{MEMORY SYSTEM SELECTING WRITE MODE OF DATA BLOCK AND DATA WRITE METHOD THEREOF}
본 발명은 반도체 메모리 장치에 관한 것으로, 더욱 상세하게는 로그 블록의 쓰기 패턴에 따라 데이터 블록의 쓰기 모드를 선택하는 메모리 시스템 및 그것의 데이터 쓰기 방법에 관한 것이다.
반도체 메모리 장치(Semiconductor Memory Device)는 크게 휘발성 메모리 장치(Volatile Memory Device)와 불휘발성 메모리 장치(Non-volatile Memory Device)로 구분된다. 휘발성 메모리 장치는 읽고 쓰는 속도가 빠르지만 외부 전원 공급이 끊기면 저장된 내용이 사라져 버리는 단점이 있다. 반면에 불휘발성 메모리 장치는 외부 전원 공급이 중단되더라도 그 내용을 보존한다. 그러므로 불휘발성 메모리 장치는 전원이 공급되었는지의 여부에 관계없이 보존되어야 할 내용을 기억시키는 데 쓰인다. 특히, 불휘발성 메모리 중에서 플래시 메모리(Flash memory)는 기존의 EEPROM에 비해 집적도가 높아, 대용량 보조 기억 장치로의 응용에 매우 유리하다.
최근 들어 메모리 장치에 대한 고집적 요구가 증가함에 따라, 하나의 메모리 셀에 멀티-비트(Multi-bits)를 저장하는 메모리 장치들이 보편화되고 있다. 하나의 메모리 셀에 멀티-비트의 데이터가 저장되는 메모리 셀을 "MLC(Multi-Level Cell)"라 한다. 그리고 하나의 메모리 셀에 1-비트의 데이터가 저장되는 메모리 셀을 "SLC(Single-Level Cell)"라 부른다.
플래시 메모리는 소거와 쓰기 동작의 단위가 일치하지 않기 때문에, 플래시 변환 계층(FTL: Flash Translation Layer)이라는 소프트웨어가 이러한 단점을 극복하기 위하여 사용된다. 플래시 변환 계층(FTL)의 주요 기능 중에 주소 맵핑(Address Mapping) 기능이 있다. 플래시 변환 계층(FTL)은 호스트로부터 논리 주소(LA: Logical Address)를 입력받고, 이를 물리 주소(PA: Physical Address)로 변환한다. 여기에서, 물리 주소(PA)는 실제 플래시 메모리에서 사용할 주소이다.
주소 맵핑 방식 중에 혼합 맵핑(또는, 로그 맵핑) 방식이 있다. 혼합 맵핑 방식에 따르면, 쓰기 동작 시 데이터 블록(Data Block)에 저장될 페이지 데이터는 먼저 로그 블록(Log Block)에 갱신된다. 로그 블록의 모든 페이지가 사용되었거나 사용 가능한 로그 블록이 없을 경우, 로그 블록 및 이에 대응하는 데이터 블록에 저장된 데이터는 병합 동작(Merge Operation)을 통해 새로운 데이터 블록에 복사된다.
메모리 시스템의 쓰기 성능은 로그 블록에 데이터를 버퍼링하는 속도와, 로그 블록에 버퍼링된 데이터를 새로운 데이터 블록에 병합하는 속도에 따라서 결정된다. 특히, 메모리 시스템에서 가비지 컬렉션과 같은 메모리 관리 동작의 성능을 높이기 위해서는 병합 동작의 효율화가 동반되어야 할 것이다.
본 발명의 목적은 불휘발성 메모리 장치를 포함하는 메모리 시스템에서 데이터의 쓰기 성능을 높일 수 있는 쓰기 방법을 제공하는 데 있다. 본 발명의 다른 목적은 로그 블록을 사용하여 병합하는 구조의 메모리 시스템에서 병합 동작의 성능을 높이기 위한 데이터 쓰기 방법을 제공하는 데 있다.
본 발명의 실시 예에 따른 불휘발성 메모리 장치의 쓰기 방법은, 데이터 블록을 갱신하기 위한 로그 블록에 쓰기 데이터를 버퍼링하는 단계, 상기 쓰기 데이터의 쓰기 패턴이 순차 쓰기 패턴인지 또는 랜덤 쓰기 패턴인지를 검출하는 단계, 그리고 상기 데이터 블록과 상기 로그 블록의 병합 데이터를 기입하기 위한 새로운 데이터 블록을 선택하는 단계를 포함하되, 상기 새로운 데이터 블록은 상기 검출된 쓰기 패턴에 따라 싱글 레벨 셀 블록(SLC Block) 또는 멀티 레벨 셀 블록(MLC Block)이 선택된다.
본 발명의 실시 예에 따른 메모리 시스템은, 싱글 레벨 셀(SLC) 모드 또는 멀티 레벨 셀(MLC) 모드의 쓰기 모드로 선택된 메모리 블록에 데이터를 프로그램하는 불휘발성 메모리 장치, 그리고 선택된 데이터 블록을 갱신하기 위한 로그 블록을 사용하는 주소 사상법에 따라 상기 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러를 포함하되, 상기 메모리 컨트롤러는, 상기 로그 블록에 갱신되는 데이터의 쓰기 패턴에 따라 상기 로그 블록과 상기 데이터 블록의 병합 데이터의 쓰기 모드를 결정한다.
본 발명에 따르면, 병합 동작의 효율을 높여 고속의 데이터 쓰기 동작이 가능한 메모리 시스템을 제공할 수 있다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 보여주는 블록도이다.
도 2는 도 1의 메모리 시스템을 구동하기 위한 소프트웨어의 계층 구조를 보여주는 도면이다.
도 3은 도 1의 불휘발성 메모리 장치(130)를 보여주는 블록도이다.
도 4는 불휘발성 메모리 셀의 문턱 전압 상태를 보여주는 도면이다.
도 5는 본 발명의 실시 예에 따른 병합 동작을 보여주는 블록도이다.
도 6은 본 발명의 병합(Merge) 방법의 일 실시 예를 보여주는 도면이다.
도 7은 본 발명의 병합(Merge) 방법의 다른 실시 예를 보여주는 도면이다.
도 8은 순차 쓰기 패턴으로 버퍼링되는 데이터 병합(Merge) 방법의 일 실시 예를 보여주는 도면이다.
도 9는 순차 쓰기 패턴으로 버퍼링되는 데이터 병합(Merge) 방법의 다른 실시 예를 보여주는 도면이다.
도 10은 순차 쓰기 패턴으로 버퍼링되는 데이터 병합(Merge) 방법의 또 다른 실시 예를 보여주는 도면이다.
도 11은 순차 쓰기 패턴으로 버퍼링되는 데이터 병합(Merge) 방법의 또 다른 실시 예를 보여주는 도면이다.
도 12는 본 발명의 실시 예에 따른 쓰기 방법을 보여주는 순서도이다.
도 13은 로그 블록에 버퍼링되는 데이터의 쓰기 패턴을 판정하기 위한 방법을 구체적으로 보여주는 순서도이다.
도 14는 본 발명의 실시 예에 따른 솔리드 스테이트 디스크(SSD) 시스템을 보여주는 블록도이다.
도 15는 본 발명에 따른 메모리 시스템을 보여주는 블록도이다.
도 16은 본 발명의 실시 예에 따른 컴퓨팅 시스템을 보여주는 블록도이다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
이하에서는, 본 발명의 특징 및 기능을 설명하기 위한 불휘발성 저장 매체로서 플래시 메모리 장치를 한 예로서 사용할 것이다. 하지만, 이 기술 분야에 정통한 사람은 여기에 기재된 내용에 따라 본 발명의 다른 이점들 및 성능을 쉽게 이해할 수 있을 것이다. 또한, 저장 매체로서 또 다른 불휘발성 메모리 장치들로 구성될 수 있다. 예를 들면, 저장 매체로서 PRAM, MRAM, ReRAM, FRAM, NOR 플래시 메모리 등이 사용될 수 있으며, 이종의 메모리 장치들이 혼용되는 메모리 시스템에도 적용될 수 있다.
본 발명은 다른 실시 예들을 통해 구현되거나 적용될 수 있을 것이다. 게다가, 상세한 설명은 본 발명의 범위, 기술적 사상 그리고 다른 목적으로부터 상당히 벗어나지 않고 관점 및 응용에 따라 수정되거나 변경될 수 있다. 이하, 본 발명에 따른 실시 예를 첨부된 도면을 참조하여 상세히 설명한다.
도 1은 본 발명의 실시 예에 따른 사용자 장치를 보여주는 블록도이다. 도 1을 참조하면, 본 발명에 따른 사용자 장치(100)는 호스트(110)와 메모리 시스템을 포함한다. 메모리 시스템은 메모리 컨트롤러(120) 및 불휘발성 메모리 장치(130)로 구성된다.
호스트(110)는 쓰기 요청이 발생하면, 쓰기 데이터(Data)와 논리 어드레스(Logical Address: LA)를 메모리 시스템으로 전달한다.
메모리 컨트롤러(120)는 호스트(110)와 불휘발성 메모리 장치(130)를 인터페이싱한다. 메모리 컨트롤러(120)는 호스트(110)의 쓰기 명령에 응답하여 호스트(110)로부터 제공되는 데이터를 불휘발성 메모리 장치(130)에 기입하기 위하여 불휘발성 메모리 장치(130)를 제어한다. 또한, 메모리 컨트롤러(120)는 호스트(110)로부터의 읽기 명령에 응답하여 불휘발성 메모리 장치(130)의 독출 동작을 제어한다.
특히, 메모리 컨트롤러(120)는 호스트(110)로부터 제공되는 쓰기 데이터를 로그 블록(Log Block)에 저장한다. 그리고 로그 블록(Log Block)에 저장된 데이터는 병합을 통하여 새로운 데이터 블록에 기입된다. 메모리 컨트롤러(120)는 쓰기 데이터를 저장하는 로그 블록으로 멀티 레벨 셀(MLC) 블록을 할당한다. 메모리 컨트롤러(120)는 로그 블록에 저장된 쓰기 데이터를 병합하기 위한 새로운 데이터 블록으로 싱글 레벨 셀 블록(SLC Block) 또는 멀티 레벨 셀 블록(MLC Block)을 선택적으로 할당한다. 메모리 컨트롤러(120)는 로그 블록에 저장되는 데이터의 쓰기 패턴(Write pattern)에 따라 병합을 위한 새로운 데이터 블록을 선택한다.
좀더 구체적으로 살펴보면, 메모리 컨트롤러(120)는 플래시 변환 계층(Flash Translation Layer: 이하, FTL)이라는 소프트웨어를 포함할 수 있다. 플래시 변환 계층(FTL)은 호스트(110)의 파일 시스템(File System)과 불휘발성 메모리 장치(130) 사이에서 불휘발성 메모리 장치(130)의 삭제 연산을 감추기 위한 인터페이싱을 제공한다. 플래시 변환 계층(FTL)에 의하여 쓰기 전 소거(Erase-before-Write) 및 소거 단위와 쓰기 단위의 불일치라는 불휘발성 메모리 장치(130)의 단점이 보완될 수 있다. 또한, 플래시 변환 계층(FTL)은 불휘발성 메모리 장치(130)의 기입 동작시, 파일 시스템이 생성한 논리 주소(LA)를 불휘발성 메모리 장치(130)의 물리 주소(PA)로 맵핑(Mapping)시킨다.
불휘발성 메모리 장치(130)는 전원이 차단되더라도 저장된 데이터를 유지할 수 있는 불휘발성 메모리 소자를 포함한다. 불휘발성 메모리 장치(130)는 메모리 컨트롤러(120)의 제어에 따라 데이터를 싱글 레벨 셀 모드(SLC mode) 또는 멀티 레벨 셀 모드(MLC mode)로 기입한다.
이상의 설명에 따르면, 본 발명의 메모리 시스템에서는 로그 블록에 기입되는 데이터의 쓰기 패턴에 따라 싱글 레벨 셀 블록(MLC Block) 또는 멀티 레벨 셀 블록(MLC Block)이 새로운 데이터 블록으로 할당된다. 따라서, 병합 동작의 성능에 메모리 시스템이 크게 영향을 받는 경우에는, 고속의 데이터 쓰기가 가능하다. 특히, 최근 활발히 진행되는 반도체 디스크 장치(Solid State Disk: 이하, SSD)와 같은 메모리 시스템에서 본 발명의 기술적 특징이 채용될 수 있다. 이 경우, 메모리 컨트롤러(120)는 USB, MMC, PCI-E, SATA, PATA, SCSI, ESDI, 그리고 IDE 등과 같은 다양한 인터페이스 프로토콜들 중 하나를 통해 외부(예를 들면, 호스트)와 통신하도록 구성될 것이다.
도 2는 도 1의 메모리 시스템을 구동하기 위한 소프트웨어의 계층 구조를 보여주는 도면이다. 도 2를 참조하면, 플래시 변환 계층(230)은 애플리케이션 소프트웨어(210)와 파일 시스템(220) 계층으로부터 전달받은 논리 주소(예를 들면, 섹터 주소와 섹터 수)를 파라미터로 하여 불휘발성 메모리 장치(240)로의 쓰기 및 읽기 동작을 위한 주소 변환 동작을 수행한다. 플래시 변환 계층(230)은 논리 주소(LA)에 대응하는 플래시 메모리의 물리 주소(PA)를 맵핑하는 주소 맵핑 테이블(Address Mapping Table)을 구성할 수 있다.
여기서, 플래시 변환 계층(230)이 구동되는 위치는 메모리 컨트롤러(120, 도 1 참조)의 내부일 수 있다. 또는, 플래시 변환 계층(230)은 그 기능들이 둘 이상의 장치에 파티션(Partition)되어 구동되도록 설정될 수 있을 것이다.
도 3은 도 1의 불휘발성 메모리 장치(130)를 보여주는 블록도이다. 도 3을 참조하면, 불휘발성 메모리 장치(130)는 셀 어레이(131), 어드레스 디코더(132), 페이지 버퍼(133), 그리고 제어 로직(134)을 포함한다.
셀 어레이(131)는 복수의 메모리 블록(Memory Block)을 포함할 수 있다. 도 3에서는 설명의 편의를 위하여 하나의 메모리 블록을 포함하는 셀 어레이(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)에 연결된다.
어드레스 디코더(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)를 제어함으로 선택된 페이지에 프로그램 데이터가 제공되도록 할 수 있다. 특히, 제어 로직(134)은 외부로부터의 쓰기 모드 신호(W_mode)에 응답하여, 쓰기 데이터를 선택된 블록에 SLC 모드 또는 MLC 모드로 기입할 수 있다.
도 4는 불휘발성 메모리 셀의 문턱 전압 상태를 예시적으로 보여주는 도면이다. 도 4를 참조하면, 2-비트 멀티 레벨 셀(MLC)은 2-비트의 데이터를 하나의 메모리 셀에 저장할 수 있다.
하나의 메모리 셀에 LSB(Least Significant Bit) 페이지를 기입하면, 메모리 셀의 문턱 전압은 소거 상태(E0) 또는 프로그램 상태(P0) 중 어느 하나의 상태를 갖는다. 그리고 메모리 셀에 MSB(Most Significant Bit) 페이지를 프로그램하면, 메모리 셀의 문턱 전압은 소거 상태(E0)와 복수의 프로그램 상태들(P1, P2, P3) 중 어느 하나의 상태를 가지게 될 것이다.
하지만, 선택된 메모리 셀들에 MSB(Most Significant Bit) 페이지를 프로그램하는데 소요되는 시간은 LSB(Least Significant Bit) 페이지를 프로그램하기 위해 소요되는 시간에 비하여 상대적으로 길다. 선택된 메모리 블록을 MLC 모드로 액세스하는 경우에는 MSB 페이지의 쓰기 동작 및 읽기 동작이 수반된다. 선택된 블록에 대한 MSB 페이지의 쓰기 동작이나 읽기 동작은 더 많은 프로그램 상태들(P1, P2, P3)을 식별하기 위한 절차가 필요하다.
이상의 도 4에서는 2-비트 멀티 레벨 셀의 문턱 전압 산포가 도시되었으나, 본 발명의 멀티 레벨 셀은 이에 국한되지 않는다. 본 발명의 이점은 3-비트 이상의 멀티 레벨 셀을 포함하는 불휘발성 메모리 장치에서도 적용될 수 있음은 잘 이해될 것이다.
도 5는 본 발명의 실시 예에 따른 병합 동작을 보여주는 블록도이다. 도 5를 참조하면, 메모리 컨트롤러(120, 도 1 참조)는 쓰기 동작시 불휘발성 메모리 장치(도 1 참조, 130)의 메모리 블록들을 데이터 영역(310), 로그 영역(320) 및 프리 영역(330)으로 구분하여 관리한다.
데이터 영역(310)은 이미 데이터가 기입된 데이터 블록들이 포함된다. 예를 들면, 데이터 영역(310)에는 물리 블록 번호(PBN: Physical Block Number) 100, 101, 103, 104, 900에 대응하는 MLC 블록들(MLC DBs)을 포함될 수 있다. 또한, 데이터 영역(310)에는 물리 블록 번호(PBN) 501, 502, 503, 504, 505, 506에 대응하는 SLC 블록들(SLC DBs)이 포함될 수 있다. SLC 블록들(501, 502, 503, 504, 505, 506)은 쓰기 동작시에 SLC 모드로 데이터가 기입된 메모리 블록들이다. MLC 블록들(100, 101, 103, 104, 900)은 쓰기 동작시 MLC 모드로 데이터가 기입된 메모리 블록들이다.
로그 영역(320)에는 외부에서 선택된 데이터 블록을 갱신(Update)하기 위한 로그 블록(Log Block)들이 포함된다. 예를 들면, 로그 영역(320)에는 700 및 702의 물리 블록 번호(PBN)를 갖는 로그 블록들이 포함될 수 있다. 로그 블록(700)은 데이터 블록(100)을 갱신하기 위하여 할당된다. 그리고 로그 블록(702)은 데이터 블록(102)을 갱신하기 위하여 할당되어 있다.
프리 영역(330)에는 병합 동작이나 가비지 컬렉션에 의해서 소거된 메모리 블록 또는 무효한 데이터를 가진 메모리 블록(프리 블록)들이 할당된다. 프리 영역(330)은 105, 106, …, 125의 물리 블록 번호(PBN)를 갖는 프리 블록들로 구성된다. 데이터의 쓰기 동작시에 새로운 로그 블록이 필요하면, 프리 영역(330)에 위치하는 프리 블록들 중 어느 하나를 선택하여 로그 블록으로 지정할 수 있다.
다시 도면을 참조하면, 하나의 데이터 블록에는 적어도 하나의 로그 블록이 할당될 수 있다. 즉, 호스트(110, 도 1 참조)에서 선택한 하나의 논리 블록에 대해서, 메모리 시스템 내부적으로는 두 개의 물리 블록이 할당될 수 있다. 예를 들면, 호스트(110)의 논리 어드레스(LA)에 의해서 지정되는 어느 하나의 논리 블록에 대해 메모리 컨트롤러(120)는 데이터 블록(100)과 로그 블록(700))을 할당한다. 이러한 의미에서, 도 5에 도시된 혼합 맵핑 방법은 '1:2 맵핑'이라고도 한다. '1:2 맵핑'에 의하면, 로그 블록(700)은 데이터 블록(100)에 해당하는 페이지 데이터만을 업데이트할 수 있다.
호스트(110)로부터 쓰기 요청(Write request)이 전달되면, 메모리 컨트롤러(120)는 호스트(110)로부터 지정된 해당 데이터 블록에 할당된 로그 블록이 있는지를 검사한다. 해당 데이터 블록에 할당된 로그 블록이 있으면, 할당된 로그 블록이 사용된다. 그러나 해당 데이터 블록에 할당된 로그 블록이 없으면, 메모리 컨트롤러(120)는 프리 영역(330)의 프리 블록들 중 어느 하나를 새로운 로그 블록으로 할당한다.
만일, 로그 블록(700)에 갱신되는 데이터와 데이터 블록(100)의 유효 데이터가 하나의 데이터 블록에 해당하는 크기를 가지면, 로그 블록(700)과 데이터 블록(100)은 병합(Merge)된다. 로그 블록(700)과 데이터 블록(100)에 존재하는 유효한 페이지 데이터는 프리 영역(330)에 존재하는 어느 하나의 블록에 순차적(In-place-order)으로 복사된다. 병합된 데이터가 복사된 프리 블록은 호스트(110)에서 제공된 논리 어드레스(LA)에 대응하는 새로운 데이터 블록으로 지정된다. 그리고 로그 블록(700)과 데이터 블록(100)은 소거되어 프리 영역(330)에 할당될 수 있다.
본 발명에서는 데이터 영역(310)에 포함되는 메모리 블록들은 SLC 블록 또는 MLC 블록일 수 있다. 반면, 로그 블록(예를 들면, 700, 702)으로 할당되는 메모리 블록들은 모두 MLC 블록이다. 이러한 조건에서 로그 블록에 순차 쓰기 패턴(Sequential Write Pattern)으로 데이터가 저장되면, 병합된 데이터는 MLC 블록에 기록된다. 반면, 로그 블록에 랜덤 쓰기 패턴(Random Write Pattern)으로 데이터가 저장되면, 병합된 데이터는 SLC 블록에 기록된다.
예를 들면, 로그 블록(700)에 순차 쓰기 패턴으로 데이터가 저장되면, 로그 블록(700)과 데이터 블록(100)에 존재하는 유효한 데이터는 병합된다. 그리고, 병합된 데이터는 프리 영역(330)에 위치하는 프리 블록들 중 어느 하나(900, 미도시됨)에 MLC 모드로 기입된다. 병합된 데이터가 기록된 프리 블록(900)은 새로운 데이터 블록(900)으로 지정된다.
반면, 로그 블록(700)에 랜덤 쓰기 방식으로 데이터가 저장되는 경우, 병합된 데이터는 프리 영역(330)에 존재하는 프리 블록들 중 적어도 둘 이상의 블록에 SLC 모드로 기입된다. 병합된 데이터가 기록된 프리 블록들은 데이터 블록들(501, 502)로 지정된다. 하나의 메모리 블록이 SLC 모드로 기입되면, 2-비트 MLC 모드로 기입될 때보다 그 용량은 반으로 줄어든다. 따라서, 병합된 데이터가 SLC 모드로 기입되는 경우에는, MLC 모드 때보다 적어도 2배수 이상의 프리 블록이 필요하다.
결론적으로 본 발명의 쓰기 방법에 따르면, 로그 블록에 갱신되는 데이터의 쓰기 패턴에 따라서, 병합된 데이터가 저장되는 블록으로 SLC 블록 또는 MLC 블록으로 선택된다. 본 발명의 쓰기 방법에 따라 불휘발성 메모리 장치의 병합 동작의 효율을 높일 수 있다. 즉, 본 발명에 따른 쓰기 방법에 따르면, 병합 동작시 발생하는 페이지 복사의 회수를 줄이거나, 더불어 병합 동작시 발생하는 프로그램 속도를 높일 수 있을 것으로 기대된다.
이상에서는, 로그 블록에 갱신되는 데이터의 쓰기 패턴에 따라서 병합된 데이터를 저장하기 위한 블록으로 SLC 블록 또는 MLC 블록을 선택하는 쓰기 동작이 메모리 컨트롤러(120)에 의해서 수행되는 예로 설명되었다. 하지만, 메모리 컨트롤러(120) 쓰기 동작에 수반되는 병합 동작은 플래시 변환 계층(230, 도 2 참조)에서 수행될 수 있다.
도 6은 본 발명의 병합(Merge) 방법의 일 실시 예를 보여주는 도면이다. 도 6을 참조하면, 데이터 블록(DB 100)에 할당된 로그 블록(LB 700)에는 랜덤 쓰기 패턴으로 데이터가 저장된다. 이때, 로그 블록(LB 700)과 데이터 블록(DB 100)의 데이터는 병합되고, 병합된 데이터는 SLC 블록들(DB 501, DB 502)로 구성되는 데이터 블록 세트(DB set)에 순차적으로 기입된다. 좀더 자세히 설명하면 다음과 같다.
호스트(100, 도 1 참조)로부터 쓰기 요청이 발생하면, 쓰기 요청에 해당하는 데이터 블록(DB 100)에는 로그 블록(LB 700)이 할당된다. 그리고, 쓰기 요청에 의해서 입력되는 페이지 데이터(Page 0, Page 3, Page 6, Page 7, Page 5)가 로그 블록(LB 700)에 저장됨으로써 데이터 블록(DB 100)은 갱신된다. 즉, 데이터 블록(DB 100)에 이미 존재하던 페이지 데이터(Page 0, Page 3, Page 6, Page 7, Page 5)는 무효화(Invalidate)된다.
로그 블록(LB 700)과 데이터 블록(DB 100)에 남아있는 유효한 페이지들(Valid pages)은 병합 동작에 의해 새로운 데이터 블록 세트(DB 501, DB 502)로 복사된다. 로그 블록(700)에 데이터가 랜덤 쓰기 패턴(Random write pattern)으로 기입되었으므로, 병합된 데이터를 저장할 새로운 데이터 블록으로는 SLC 블록이 선택된다. MLC 블록인 로그 블록(700)의 갱신 데이터가 병합되어 저장되기 위해서는 MLC 블록의 용량과 적어도 동일한 크기의 데이터 블록이 할당되어야 한다. 예를 들면, 하나의 MLC 블록의 저장 용량이 8개 페이지라면, 로그 블록에 갱신된 데이터가 병합되면, 최대 8개 페이지의 용량이 될 수 있다. 따라서, 병합된 데이터가 저장될 새로운 데이터 블록은 적어도 8개 페이지 크기의 용량을 구비해야 한다. 하지만, SLC 블록에는 4개의 페이지만 저장될 수 있다. 따라서, 병합된 데이터가 저장될 새로운 데이터 블록은 적어도 2개의 SLC 블록들(DB 501, DB 502)이 포함되는 데이터 블록 세트로 구성되어야 할 것이다.
로그 블록(LB 700)에 저장된 데이터들은 랜덤하게 기입되었기 때문에, 랜덤한 순서의 페이지를 병합 동작시에 정렬된 순서로 프로그램하기 위해서는 페이지 복사 회수가 증가할 수 있다. 따라서, 병합 동작의 속도를 높이기 위해서는 프로그램 속도가 상대적으로 높은 SLC 블록을 병합된 데이터를 저장하기 위한 새로운 데이터 블록으로 할당한다. 즉, 데이터 블록(DB 501)에는 페이지들(Page 0~Page 3)이 순차적으로 프로그램된다. 그리고 데이터 블록(DB 502)에는 페이지들(Page 4~Page 7)이 순차적으로 프로그램된다.
하나의 메모리 블록에 페이지(Page 0)부터 순차적으로 기입되는 것을 순차 위치 방식(In-place order)이라고 한다. 반면에, 하나의 블록에 페이지들이 임의로 기입되는 것을 임의 위치 방식(Out-of-place order 또는 Random-place order)라고 한다. 로그 블록(LB 700)에 저장되는 페이지 데이터가 데이터 블록(100)에 저장된 순서에 관계없이 임의 위치 방식으로 저장되는 경우에는 병합 동작에 소요되는 시간이 상대적으로 길어진다. 본 발명의 실시 예에 따르면, 로그 블록이 랜덤 쓰기 패턴으로 쓰여지는 경우, 상대적으로 프로그램 속도가 빠른 SLC 블록이 병합된 데이터를 저장할 새로운 데이터 블록으로 할당된다. 따라서, 랜덤 쓰기 패턴으로 로그 블록이 기록되는 경우에 발생하는 병합 속도의 저하를 방지할 수 있다.
도 7은 본 발명의 병합(Merge) 방법의 다른 실시 예를 보여주는 도면이다. 도 7을 참조하면, SLC 블록들로 구성되는 데이터 블록 세트(DB 601, DB 602)에 할당된 로그 블록(LB 700)에는 랜덤 쓰기 패턴으로 데이터가 기입된다. 이때, 로그 블록(LB 700)과 데이터 블록 세트(DB 601, DB 602)의 데이터는 병합되고, 병합된 데이터는 SLC 블록들로 구성되는 새로운 데이터 블록 세트(DB 501, DB 502)에 순차적으로 기입된다. 좀더 자세히 설명하면 다음과 같다.
호스트(100, 도 1 참조)로부터 쓰기 요청이 발생하면, 쓰기 요청된 어드레스에 대응하는 데이터 블록 세트(DB 601, DB 602)에 대한 로그 블록(LB 700)이 할당된다. 데이터 블록 세트(DB 601, DB 602)는 이전의 병합 동작시, 랜덤 쓰기 패턴으로 버퍼링된 데이터가 병합되어 저장된 데이터 블록일 것이다.
쓰기 요청에 의해서 입력되는 페이지 데이터(Page 4, Page 5, Page 6, Page 0, Page 3, Page 7)이 로그 블록(LB 700)에 저장된다. 로그 블록(LB 700)에 갱신되는 페이지 데이터의 쓰기 순서는 데이터 블록 세트(DB 601, DB 602)에 저장된 데이터의 순서와는 무관하다. 로그 블록(LB 700)은 랜덤 쓰기 패턴에 따라 데이터가 쓰여졌다. 그리고 데이터 블록 세트(DB 601, DB 602)에 이미 존재하던 페이지 데이터들(Page 4, Page 5, Page 6, Page 0, Page 3, Page 7)은 무효화(Invalidate)된다.
로그 블록(LB 700)과 데이터 블록 세트(DB 601, DB 602)에 남아있는 유효한 페이지들(Valid pages)은 병합 동작에 의해 새로운 데이터 블록 세트(DB 501, DB 502)으로 복사된다. 로그 블록(700)에 데이터들이 랜덤 쓰기 패턴(Random write pattern)으로 기입되었으므로, 병합된 데이터가 저장될 새로운 데이터 블록으로는 SLC 블록이 선택된다. 병합된 데이터가 저장되기 위해서는 MLC 블록의 용량과 동일한 크기의 데이터 블록이 할당되어야 한다. 따라서, 데이터 블록 세트(DB Set)는 적어도 2개의 SLC 블록들(DB 501, DB 502)이 포함되어야 할 것이다.
로그 블록(LB 700)에 저장된 데이터들은 데이터 블록 세트(DB 601, DB 602)의 배열과는 관계없이 랜덤하게 기입되었다. 따라서, 랜덤한 순서의 페이지를 병합 동작시에 정렬하기 위해서는 페이지 복사 회수의 증가가 뒤따른다. 따라서, 병합의 속도를 높이기 위해서는 프로그램 속도가 상대적으로 높은 SLC 블록을 새로운 데이터 블록으로 할당한다. 데이터 블록(DB 501)에는 페이지들(Page 0~Page 3)이 순차적으로 프로그램된다. 그리고 데이터 블록(DB 502)에는 페이지들(Page 4~Page 7)이 순차적으로 프로그램된다. 로그 블록(LB 700)에 저장되는 데이터가 랜덤 쓰기 패턴(또는, 임의 위치 방식)으로 저장되는 경우에는 병합 동작에 소요되는 시간을 보상해야 한다. 병합 동작의 시간을 줄이기 위하여 상대적으로 고속의 프로그램 특성을 가지는 SLC 블록들로 구성되는 데이터 블록 세트(DB 501, DB 502)에 병합된 데이터가 순차적으로 기입될 것이다.
이상의 도 6 및 도 7에서는, 로그 블록에 랜덤 쓰기 패턴으로 기입되는 데이터의 병합 방법들이 설명되었다. 본 발명의 데이터 쓰기 방법에 따르면, 로그 블록은 MLC 블록으로 할당된다. 반면, 랜덤 쓰기 패턴으로 데이터가 기입된 로그 블록의 병합 데이터는 SLC 블록들로 구성되는 데이터 블록 세트(DB set)에 순차적으로 기입된다. 병합 데이터가 SLC 블록에 프로그램됨으로써, 랜덤 쓰기 패턴에 따른 메모리 시스템의 쓰기 성능 저하가 보상될 수 있다.
도 8은 순차 쓰기 패턴(Sequential write pattern)으로 버퍼링되는 데이터의 병합(Merge) 방법의 일 실시 예를 보여주는 도면이다. 도 8을 참조하면, MLC 블록으로 구성되는 데이터 블록(DB 100)에 할당된 로그 블록(LB 700)에는 순차 쓰기 패턴으로 데이터가 저장된다. 이때, 로그 블록(LB 700)을 새로운 데이터 블록(DB 700)으로 지정하는 교환 병합(Swap merge)이 이루어진다. 좀더 자세히 설명하면 다음과 같다.
쓰기 요청이 발생하면, 쓰기 요청된 논리 어드레스(LA)에 대응하는 데이터 블록(DB 100)에 로그 블록(LB 700)이 할당된다. 그리고, 쓰기 요청되는 페이지 데이터(Page 0, Page 1, Page 2, Page 3, Page 4, Page 5, Page 6, Page 7)는 로그 블록(LB 700)에 순차 쓰기 패턴(Sequential write pattern)에 따라 저장된다. 그리고 데이터 블록(DB 100)에 이미 존재하던 페이지 데이터들(Page 0, Page 1, Page 2, Page 3, Page 4, Page 5, Page 6, Page 7)은 무효화(Invalidate)된다.
이 경우, 로그 블록(LB 700)에 순차 쓰기 방식으로 저장된 데이터는 추가적인 페이지 복사 없이도 병합될 수 있다. 이것은 로그 블록(LB 700)에 버퍼링된 데이터가 이미 순차 위치 방식(In-place-order)에 해당하는 페이지 배열을 가지고 있기 때문이다. 따라서, 로그 블록(LB 700)은 외부에서 지정된 논리 어드레스(LA)에 대응하는 새로운 데이터 블록으로 등록될 것이다. 이러한 병합 동작을 교환 병합(Swap Merge)이라고 한다.
교환 병합에 따르면, 데이터가 순차적으로 기입된 로그 블록의 주소 맵핑 정보만을 조작하여 병합 동작이 수행될 수 있다. 따라서, 순차 쓰기 패턴으로 데이터가 버퍼링된 로그 블록(LB 700)에는 교환 병합을 적용하여, 페이지 복사 회수를 줄일 수 있을 것이다.
도 9는 순차 쓰기 패턴으로 버퍼링되는 데이터 병합(Merge) 방법의 다른 실시 예를 보여주는 도면이다. 도 9를 참조하면, MLC 블록으로 구성되는 데이터 블록(DB 100)에 할당된 로그 블록(LB 700)에는 전체 페이지들 중 기준 페이지 이상의 데이터가 순차 쓰기 패턴으로 기입된다. 이러한 조건에서도, 병합된 데이터가 저장될 새로운 데이터 블록으로 MLC 블록이 선택될 수 있다. 좀더 자세히 설명하면 다음과 같다.
호스트(110, 도 1 참조)로부터 쓰기 요청이 발생하면, 쓰기 요청된 논리 어드레스(LA)에 대응하는 데이터 블록(DB 100)에 로그 블록(LB 700)이 할당된다. 그리고, 쓰기 요청되는 페이지 데이터(Page 0, Page 1, Page 2, Page 3, Page 4, Page 5, Page 6)가 순차 쓰기 패턴(Sequential write pattern)에 따라 로그 블록(LB 700)에 저장된다. 그리고 데이터 블록(DB 100)에 이미 존재하던 페이지 데이터(Page 0, Page 1, Page 2, Page 3, Page 4, Page 5, Page 6)는 무효화(Invalidate) 된다. 그러나, 페이지 데이터(Page 7)는 데이터 블록(DB 100)에 존재하던 것이 여전히 유효하다.
이 경우, 로그 블록(LB 700)에 쓰기 요청되는 데이터의 어드레스는 페이지 데이터(Page 6)까지만 순차 쓰기 패턴(Sequential write pattern)으로 입력될 것이다. 로그 블록(LB 700)에 순차 쓰기 패턴으로 버퍼링된 데이터들(Page 0~Page 6)과 데이터 블록(DB 100)에 유효한 데이터(Page 7)는 병합된다. 그리고 병합된 데이터는 새로운 데이터 블록(DB 900)에 순차적으로 기록될 것이다.
이 경우, 로그 블록(LB 700)에 기준 용량 이상의 데이터가 순차 쓰기 패턴으로 기입되면, 병합된 데이터가 저장될 새로운 데이터 블록으로 MLC 블록이 할당할 수 있음을 보여준다. 이런 경우에는 병합 동작의 성능을 높이기 위하여, 데이터 블록(DB 100)의 유효한 데이터(Page 7)만이 로그 블록(LB 700)에 복사될 수 있다. 그리고 로그 블록(LB 700)이 새로운 데이터 블록으로 지정될 수도 있을 것이다.
도 10은 순차 쓰기 패턴으로 버퍼링되는 데이터의 병합(Merge) 방법의 또 다른 실시 예를 보여주는 도면이다. 도 10을 참조하면, SLC 블록으로 구성되는 데이터 블록 세트(DB 601, 602)에 할당된 로그 블록(LB 700)에는 순차 쓰기 패턴으로 데이터가 프로그램된다. 이때, 로그 블록(LB 700)은 교환 병합(Swap merge)에 의해서 새로운 데이터 블록으로 지정될 수 있다.
쓰기 요청이 발생하면, 쓰기 요청된 어드레스에 대응하는 SLC 블록에 대응하는 데이터 블록 세트(DB 601, 602)에 MLC 블록으로 구성된 로그 블록(LB 700)이 할당된다. 그리고, 쓰기 요청되는 데이터(Page 0, Page 1, Page 2, Page 3, Page 4, Page 5, Page 6, Page 7)가 로그 블록(LB 700)에 순차 쓰기 패턴(Sequential write pattern)에 따라 저장된다. 데이터 블록 세트(DB 601, 602)에 이미 존재하던 페이지 데이터(Page 0, Page 1, Page 2, Page 3, Page 4, Page 5, Page 6, Page 7)는 무효화(Invalidate)된다.
이 경우, 로그 블록(LB 700)에 순차 쓰기 패턴으로 저장된 데이터는 추가적인 페이지 복사 없이 병합될 수 있다. 이것은 로그 블록(LB 700)에 저장된 데이터가 이미 순차 위치 방식(In-place-order)에 해당하는 페이지 배열을 가지고 있기 때문이다. 따라서, 로그 블록(LB 700)은 외부에서 지정된 논리 어드레스(LA)에 대응하는 새로운 데이터 블록으로 등록됨으로써 교환 병합(Swap Merge)될 수 있다.
도 11은 순차 쓰기 패턴으로 버퍼링되는 데이터의 병합(Merge) 방법의 또 다른 실시 예를 보여주는 도면이다. 도 10을 참조하면, SLC 블록으로 구성되는 데이터 블록 세트(DB 601, 602)에 MLC 블록으로 구성되는 로그 블록(LB 700)이 할당된다. 로그 블록(LB 700)에는 순차 쓰기 패턴으로 데이터가 저장된다.
호스트(110, 도 1 참조)로부터 쓰기 요청이 발생하면, 쓰기 요청된 어드레스에 대응하는 데이터 블록 (DB 100)에 로그 블록(LB 700)이 할당된다. 그리고, 쓰기 요청되는 페이지 데이터(Page 0, Page 1, Page 2, Page 3, Page 4, Page 5, Page 6)가 로그 블록(LB 700)에 순차 쓰기 패턴으로 저장된다. 데이터 블록 세트(DB 601, 602)에 이미 존재하던 페이지 데이터(Page 0, Page 1, Page 2, Page 3, Page 4, Page 5, Page 6)은 무효화(Invalidate)된다. 그러나, 페이지 데이터(Page 7)는 데이터 블록(DB 602)에 존재하던 것이 여전히 유효하다.
이 경우, 로그 블록(LB 700)에 쓰기 요청되는 데이터의 페이지 데이터(Page 6)까지만 순차 쓰기 패턴으로 입력될 것이다. 로그 블록(LB 700)에 순차 쓰기 패턴으로 저장된 데이터(Page 0~Page 6)와 데이터 블록(DB 100)에 유효한 데이터(Page 7)는 병합되고, 병합된 데이터는 새로운 데이터 블록(DB 900)에 순차적으로 기록될 것이다.
이상의 도 11의 설명에 따르면, 로그 블록의 일부에만 순차 쓰기 패턴에 따라 데이터가 버퍼링 되더라도, 병합된 데이터는 MLC 블록으로 구성된 데이터 블록에 복사될 수 있음을 보여준다.
도 12는 본 발명의 실시 예에 따른 데이터 쓰기 방법을 보여주는 순서도이다. 도 12를 참조하면, 로그 블록(Log Block)에 버퍼링되는 데이터의 쓰기 패턴에 따라 병합된 데이터를 저장할 데이터 블록의 종류가 선택된다. 호스트(110, 도 1 참조)로부터 쓰기 요청 및 데이터 및 어드레스가 제공되면, 메모리 컨트롤러(120, 도 1 참조)는 불휘발성 메모리 장치(130)에 대한 쓰기 동작을 시작한다.
단계 S110에서, 메모리 컨트롤러(120, 도 1 참조) 또는 플래시 변환 계층(230, 도 2 참조)은 로그 블록에 저장되는 데이터의 쓰기 패턴을 검출한다. 메모리 컨트롤러(120)는 데이터가 로그 블록에서 연속되는 페이지 어드레스로 프로그램되는지, 비연속적인 페이지 어드레스에 따라 프로그램되는지 검출한다. 연속 또는 비연속의 판단은 로그 블록에 대응하는 데이터 블록의 페이지 어드레스의 순서에 의거한다.
단계 S120에서, 메모리 컨트롤러(120)는 로그 블록에 버퍼링되는 데이터가 순차 쓰기 패턴(Sequential write pattern)인지 또는 랜덤 쓰기 패턴(Random write pattern)인지 결정한다. 랜덤 쓰기 패턴으로 판정되면 절차는 단계 S130으로 이동한다. 순차 쓰기 패턴으로 판정되면, 절차는 단계 S140으로 이동한다.
단계 S130에서, 메모리 컨트롤러(120) 또는 플래시 변환 계층(230)은 로그 블록과 데이터 블록의 유효한 데이터를 병합하여 저장하기 위한 새로운 데이터 블록으로 SLC 블록을 선택한다. 여기서, 데이터 용량 조건을 만족하기 위하여 2개 이상의 SLC 블록을 세트로 구성한 데이터 블록 세트가 구성될 수 있다.
단계 S140에서, 메모리 컨트롤러(120) 또는 플래시 변환 계층(230)은 로그 블록과 데이터 블록의 유효한 데이터를 병합하여 저장하기 위한 새로운 데이터 블록으로 MLC 블록을 선택한다.
단계 S150에서, 메모리 컨트롤러(120) 또는 플래시 변환 계층(230)은 로그 블록과 데이터 블록의 유효한 데이터를 병합한다. 스트리밍 데이터(Streaming data)와 같이 연속적으로 입력되는 데이터는 로그 블록에 순차 쓰기 패턴으로 기입될 것이다. 이 경우, 순차 쓰기 패턴으로 페이지 데이터가 저장된 로그 블록은 교환 병합(Swap merge)에 의해 페이지 복사 없이 새로운 데이터 블록으로 지정될 수 있다. 반면, 랜덤 쓰기 패턴으로 데이터가 버퍼링된 로그 블록에 대해서는 고속의 병합 동작을 위하여 SLC 블록이 병합된 데이터를 프로그램하기 위한 데이터 블록으로 선택될 것이다.
도 13은 로그 블록에 버퍼링되는 데이터의 쓰기 패턴을 판정하기 위한 방법을 구체적으로 보여주는 순서도이다. 도 13을 참조하면, 도 12의 단계 S110에서 검출된 페이지 어드레스의 순서에 따라 랜덤 쓰기 패턴 또는 순차 쓰기 패턴이 결정된다.
단계 S121에서, 메모리 컨트롤러(120, 도 1) 또는 플래시 변환 계층(230, 도 2)은 로그 블록에 버퍼링되는 데이터의 페이지 어드레스들이 순차 위치 방식(In-place-order)인지 검출한다. 메모리 컨트롤러(120) 또는 플래시 변환 계층(230)은 로그 블록에 저장되는 데이터가 하나의 물리 블록에 순차 쓰기 패턴으로 저장되는지 판단한다. 만일, 로그 블록에 저장되는 데이터의 순서가 대응하는 데이터 블록의 순서와는 무관하게 랜덤하게 저장된다면, 순차 위치 방식(In-place-order) 또는 순차 쓰기 패턴으로 저장된다고 볼 수 없다.
단계 S122에서, 메모리 컨트롤러(120) 또는 플래시 변환 계층(230)은 로그 블록의 페이지 어드레스가 순차 위치 방식(In-place-order)인지 아닌지 결정한다. 메모리 컨트롤러(120) 또는 플래시 변환 계층(230)은 로그 블록의 페이지 어드레스가 순차 위치 방식(In-place-order)가 아닌 것으로 판단하는 경우, 로그 블록의 쓰기 패턴을 랜덤 쓰기 패턴(S123)으로 결정한다. 반면, 메모리 컨트롤러(120) 또는 플래시 변환 계층(230)은 로그 블록의 페이지 어드레스가 순차 위치 방식(In-place-order)이라고 판단하는 경우, 로그 블록의 쓰기 패턴을 순차 쓰기 패턴(S124)으로 결정한다.
도 14는 본 발명의 실시 예에 따른 솔리드 스테이트 디스크(SSD) 시스템을 보여주는 블록도이다. 도 14를 참조하면, SSD 시스템(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)의 쓰기 요청에 따라 로그 블록에 버퍼링되는 데이터의 쓰기 패턴을 참조하여 병합될 데이터가 저장될 새로운 데이터 블록을 선택한다. 예를 들면, 로그 블록에 순차 쓰기 패턴으로 데이터가 버퍼링되면, SSD 컨트롤러(1210)는 버퍼링된 데이터를 복사할 새로운 데이터 블록으로 MLC 블록을 할당한다. 반면, 로그 블록에 랜덤 쓰기 패턴으로 데이터가 버퍼링되면, SSD 컨트롤러(1210)는 버퍼링된 데이터를 복사할 새로운 데이터 블록으로 SLC 블록들을 할당한다. SLC 블록들은 적어도 2개 이상의 세트 단위로 데이터 블록을 구성하게 될 것이다.
버퍼 메모리(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)이 포함될 수도 있다.
도 15는 본 발명에 따른 메모리 시스템(2000)을 간략히 보여주는 블록도이다. 도 15를 참조하면, 본 발명에 따른 메모리 시스템(2000)은 불휘발성 메모리 장치(2200)와 메모리 컨트롤러(2100)를 포함한다.
메모리 컨트롤러(2100)는 불휘발성 메모리 장치(2200)를 제어하도록 구성될 것이다. 불휘발성 메모리 장치(2200)와 메모리 컨트롤러(2100)의 결합에 의해 메모리 카드로 제공될 수 있을 것이다. SRAM(2110)은 프로세싱 유닛(2120)의 동작 메모리로 사용된다. 호스트 인터페이스(2130)는 메모리 시스템(2000)과 접속되는 호스트의 데이터 교환 프로토콜을 구비한다. 에러 정정 블록(2140)은 불휘발성 메모리 장치(2200)로부터 독출된 데이터에 포함되는 에러를 검출 및 정정한다. 메모리 인터페이스(2150)는 본 발명의 불휘발성 메모리 장치(2200)와 인터페이싱 한다. 프로세싱 유닛(2120)은 메모리 컨트롤러(2100)의 데이터 교환을 위한 제반 제어 동작을 수행한다. 비록 도면에는 도시되지 않았지만, 본 발명에 따른 메모리 시스템(2000)은 호스트(Host)와의 인터페이싱을 위한 코드 데이터를 저장하는 ROM(미도시됨) 등이 더 제공될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다.
또한, 메모리 컨트롤러(2100)는 호스트의 쓰기 요청에 따라 로그 블록에 버퍼링되는 데이터의 쓰기 패턴을 참조하여 병합될 데이터가 저장될 새로운 데이터 블록을 선택한다. 예를 들면, 로그 블록에 순차 쓰기 패턴으로 데이터가 버퍼링되면, 메모리 컨트롤러(2100)는 버퍼링된 데이터를 복사할 새로운 데이터 블록으로 MLC 블록을 할당한다. 반면, 로그 블록에 랜덤 쓰기 패턴으로 데이터가 버퍼링되면, 메모리 컨트롤러(2100)는 버퍼링된 데이터를 복사할 새로운 데이터 블록으로 SLC 블록들을 할당한다. SLC 블록들은 적어도 2개 이상의 세트 단위로 데이터 블록을 구성하게 될 것이다.
불휘발성 메모리 장치(2200)는 복수의 플래시 메모리 칩들로 구성되는 멀티-칩 패키지로 제공될 수도 있다. 이상의 본 발명의 메모리 시스템(2000)은 에러의 발생 확률이 낮은 고신뢰성의 저장 매체로 제공될 수 있다. 이 경우, 메모리 컨트롤러(2100)는 USB, MMC, PCI-E, SAS, SATA, PATA, SCSI, ESDI, 그리고 IDE 등과 같은 다양한 인터페이스 프로토콜들 중 하나를 통해 외부(예를 들면, 호스트)와 통신하도록 구성될 것이다.
도 16에는 플래시 메모리 장치(3120)를 포함한 컴퓨팅 시스템(3000)이 개략적으로 도시되어 있다. 본 발명에 따른 컴퓨팅 시스템(3000)은 시스템 버스(3600)에 전기적으로 연결된 마이크로프로세서(3200), 램(3300), 사용자 인터페이스(3400), 베이스밴드 칩셋(Baseband chipset)과 같은 모뎀(3500) 및 메모리 시스템(3100)을 포함한다. 메모리 시스템(3100)은 도 14의 SSD 또는 도 15에 도시된 것과 실질적으로 동일하게 구성될 것이다. 본 발명에 따른 컴퓨팅 시스템(3000)이 모바일 장치인 경우, 컴퓨팅 시스템(3000)의 동작 전압을 공급하기 위한 배터리(미도시됨)가 추가적으로 제공될 것이다. 비록 도면에는 도시되지 않았지만, 본 발명에 따른 컴퓨팅 시스템(3000)에는 응용 칩세트(Application chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램, 등이 더 제공될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다. 메모리 시스템(3100)은, 예를 들면, 데이터를 저장하는 데 불휘발성 메모리를 사용하는 SSD(Solid State Drive/Disk)를 구성할 수 있다. 또는, 메모리 시스템(3100)은, 퓨전 플래시 메모리(예를 들면, 원낸드 플래시 메모리)로 제공될 수 있다.
메모리 컨트롤러(3110)는 마이크로프로세서(3200)의 쓰기 요청에 따라 로그 블록에 버퍼링되는 데이터의 쓰기 패턴을 참조하여 병합될 데이터가 저장될 새로운 데이터 블록을 선택한다. 예를 들면, 로그 블록에 순차 쓰기 패턴으로 데이터가 버퍼링되면, 메모리 컨트롤러(3110)는 버퍼링된 데이터를 복사할 새로운 데이터 블록으로 MLC 블록을 할당한다. 반면, 로그 블록에 랜덤 쓰기 패턴으로 데이터가 버퍼링되면, 메모리 컨트롤러(3110)는 버퍼링된 데이터를 복사할 새로운 데이터 블록으로 SLC 블록들을 할당한다. SLC 블록들은 적어도 2개 이상의 세트 단위로 데이터 블록을 구성하게 될 것이다.
본 발명에 따른 불휘발성 메모리 장치 그리고/또는 메모리 컨트롤러는 다양한 형태들의 패키지를 이용하여 실장될 수 있다. 예를 들면, 본 발명에 따른 플래시 메모리 장치 그리고/또는 메모리 컨트롤러는 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), 등과 같은 패키지들을 이용하여 실장될 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시 예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
110 : 호스트 120 : 메모리 컨트롤러
130 : 불휘발성 메모리 장치 131 : 셀 어레이
132 : 행 디코더 133 : 페이지 버퍼
134 : 제어 로직 210 : 응용 프로그램
220 : 파일 시스템 230 : 플래시 변환 계층(FTL)
240 : 불휘발성 메모리 장치 1100 : 호스트
1200 : SSD 1210 : SSD 컨트롤러
1220 : 버퍼 메모리 1230 : 불휘발성 메모리 장치
2100 : 메모리 컨트롤러 2110 : 에스램
2120 : 프로세싱 유닛 2130 : 호스트 인터페이스
2140 : 에러 정정 블록 2140 : 메모리 인터페이스
2200 : 불휘발성 메모리 장치 3000 : 컴퓨팅 시스템
3100 : 메모리 시스템 3110 : 메모리 컨트롤러
3120 : 플래시 메모리 장치 3200 : 중앙처리장치
3300 : 램 3400 : 유저 인터페이스
3500 : 모뎀 3600 : 시스템 버스

Claims (10)

  1. 불휘발성 메모리 장치의 쓰기 방법에 있어서:
    데이터 블록을 갱신하기 위한 로그 블록에 쓰기 데이터를 저장하는 단계;
    상기 쓰기 데이터의 쓰기 패턴이 순차 쓰기 패턴인지 또는 랜덤 쓰기 패턴인지를 검출하는 단계; 그리고
    상기 데이터 블록과 상기 로그 블록의 병합 데이터를 저장하기 위한 새로운 데이터 블록을 선택하는 단계를 포함하되,
    상기 새로운 데이터 블록은 상기 검출된 쓰기 패턴에 따라 싱글 레벨 셀 블록(SLC Block) 또는 멀티 레벨 셀 블록(MLC Block)이 선택되는 쓰기 방법.
  2. 제 1 항에 있어서,
    상기 검출하는 단계에서, 상기 쓰기 패턴은 상기 쓰기 데이터의 페이지 어드레스를 참조하여 결정되는 쓰기 방법.
  3. 제 2 항에 있어서,
    상기 쓰기 패턴은 상기 페이지 어드레스가 연속되는 경우에는 순차 쓰기 패턴으로, 상기 페이지 어드레스가 비연속적인 경우에는 랜덤 쓰기 패턴으로 결정되는 쓰기 방법.
  4. 제 1 항에 있어서,
    상기 로그 블록에는 멀티 레벨 셀 블록이 할당되는 쓰기 방법.
  5. 제 1 항에 있어서,
    상기 선택하는 단계에서, 상기 쓰기 패턴이 랜덤 쓰기 패턴인 경우에는 상기 새로운 데이터 블록으로 싱글 레벨 셀 블록이 선택되는 쓰기 방법.
  6. 제 1 항에 있어서,
    상기 선택하는 단계에서, 상기 쓰기 패턴이 순차 쓰기 패턴인 경우에는 상기 새로운 데이터 블록은 멀티 레벨 셀 블록(MLC Block)으로 할당되는 쓰기 방법.
  7. 제 6 항에 있어서,
    상기 로그 블록은 상기 쓰기 데이터를 구성하는 페이지 데이터의 복사 없이 상기 새로운 데이터 블록으로 지정(교환 병합)되는 쓰기 방법.
  8. 싱글 레벨 셀(SLC) 모드 또는 멀티 레벨 셀(MLC) 모드의 쓰기 모드로 선택된 메모리 블록에 데이터를 프로그램하는 불휘발성 메모리 장치; 그리고
    선택된 데이터 블록을 갱신하기 위한 로그 블록을 사용하는 주소 사상법에 따라 상기 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러를 포함하되,
    상기 메모리 컨트롤러는, 상기 로그 블록에 갱신되는 데이터의 쓰기 패턴에 따라 상기 로그 블록과 상기 데이터 블록의 병합 데이터의 쓰기 모드를 결정하는 메모리 시스템.
  9. 제 8 항에 있어서,
    상기 메모리 컨트롤러는 상기 멀티 레벨 셀 모드로 상기 갱신되는 데이터를 상기 로그 블록에 저장하는 메모리 시스템.
  10. 제 8 항에 있어서,
    상기 쓰기 패턴이 랜덤 쓰기 패턴인 경우, 상기 메모리 컨트롤러는 새로운 데이터 블록에 상기 병합 데이터를 싱글 레벨 셀 모드(SLC mode)로 프로그램하는 메모리 시스템.
KR1020100064048A 2010-07-02 2010-07-02 쓰기 패턴에 따라 데이터 블록의 쓰기 모드를 선택하는 메모리 시스템 및 그것의 데이터 쓰기 방법 KR101662827B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020100064048A KR101662827B1 (ko) 2010-07-02 2010-07-02 쓰기 패턴에 따라 데이터 블록의 쓰기 모드를 선택하는 메모리 시스템 및 그것의 데이터 쓰기 방법
US13/172,897 US8677058B2 (en) 2010-07-02 2011-06-30 Memory system selecting write mode of data block and data write method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100064048A KR101662827B1 (ko) 2010-07-02 2010-07-02 쓰기 패턴에 따라 데이터 블록의 쓰기 모드를 선택하는 메모리 시스템 및 그것의 데이터 쓰기 방법

Publications (2)

Publication Number Publication Date
KR20120003282A true KR20120003282A (ko) 2012-01-10
KR101662827B1 KR101662827B1 (ko) 2016-10-06

Family

ID=45400611

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100064048A KR101662827B1 (ko) 2010-07-02 2010-07-02 쓰기 패턴에 따라 데이터 블록의 쓰기 모드를 선택하는 메모리 시스템 및 그것의 데이터 쓰기 방법

Country Status (2)

Country Link
US (1) US8677058B2 (ko)
KR (1) KR101662827B1 (ko)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130135618A (ko) * 2012-06-01 2013-12-11 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 쓰기 방법
KR20140020445A (ko) * 2012-08-08 2014-02-19 삼성전자주식회사 3차원 불휘발성 메모리 장치를 포함하는 메모리 시스템 및 그것의 프로그램 방법
KR101381597B1 (ko) * 2013-01-31 2014-04-07 한국과학기술원 다중채널 ssd의 패턴기반 관리 시스템 및 그 방법
US9239782B2 (en) 2012-05-17 2016-01-19 Samsung Electronics Co., Ltd. Nonvolatile memory device and program method thereof
US10528469B2 (en) 2017-01-12 2020-01-07 SK Hynix Inc. Memory system for writing data based on types of command and data and operating method of the same
KR20200098971A (ko) * 2019-02-13 2020-08-21 울산과학기술원 싱글-레벨 기반의 데이터 저장 장치 및 방법

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100771521B1 (ko) * 2006-10-30 2007-10-30 삼성전자주식회사 멀티 레벨 셀을 포함하는 플래시 메모리 장치 및 그것의데이터 쓰기 방법
US8355280B2 (en) 2010-03-09 2013-01-15 Samsung Electronics Co., Ltd. Data storage system having multi-bit memory device and operating method thereof
KR101785007B1 (ko) 2011-06-14 2017-11-07 삼성전자주식회사 멀티-비트 메모리 장치를 포함한 데이터 저장 시스템 및 그것의 온-칩 버퍼 프로그램 방법
TWI605458B (zh) * 2012-04-25 2017-11-11 Sony Corp Non-volatile memory devices, non-volatile memory control devices, and non-volatile memory control methods
US8923045B2 (en) * 2012-05-31 2014-12-30 Seagate Technology Llc Multi-level cell (MLC) update with protected mode capability
JP2013254403A (ja) * 2012-06-08 2013-12-19 Sony Corp 情報処理装置および方法、並びに、プログラム
TWI489274B (zh) * 2012-09-11 2015-06-21 Etron Technology Inc 能夠提升記憶體效能的方法和相關的記憶體系統
EP2915045B1 (en) * 2012-11-02 2019-01-02 Hewlett-Packard Enterprise Development LP Selective error correcting code and memory access granularity switching
KR20140078893A (ko) * 2012-12-18 2014-06-26 에스케이하이닉스 주식회사 데이터 저장 장치의 동작 방법
CN104217762B (zh) * 2013-05-31 2017-11-24 慧荣科技股份有限公司 数据储存装置及其错误校正方法以及数据读取方法
US9043537B1 (en) 2013-11-21 2015-05-26 Sandisk Technologies Inc. Update block programming order
US9244631B2 (en) 2013-12-06 2016-01-26 Sandisk Technologies Inc. Lower page only host burst writes
US9645896B2 (en) 2013-12-26 2017-05-09 Silicon Motion, Inc. Data storage device and flash memory control method
KR102295223B1 (ko) * 2015-01-13 2021-09-01 삼성전자주식회사 속도 모드 관리자를 포함하는 저장 장치 및 사용자 장치
KR102275710B1 (ko) 2015-02-02 2021-07-09 삼성전자주식회사 오버-라이트가 가능한 메모리 장치, 메모리 시스템 및 메모리 시스템의 동작방법
US9916238B2 (en) * 2015-08-25 2018-03-13 Sandisk Technologies Llc Memory system and method for performing garbage collection on blocks based on their obsolescence patterns
TWI566253B (zh) * 2015-09-02 2017-01-11 慧榮科技股份有限公司 用來管理一記憶裝置之方法以及記憶裝置與控制器
KR102333220B1 (ko) 2015-09-24 2021-12-01 삼성전자주식회사 불휘발성 메모리 시스템의 동작 방법
WO2017088185A1 (zh) * 2015-11-27 2017-06-01 华为技术有限公司 一种存储设备存储数据的方法及存储设备
US9952779B2 (en) 2016-03-01 2018-04-24 Apple Inc. Parallel scheduling of write commands to multiple memory devices
US10269421B2 (en) 2016-11-30 2019-04-23 Sandisk Technologies Llc Latch caching of sequential data
JP2018160056A (ja) * 2017-03-22 2018-10-11 東芝メモリ株式会社 メモリコントローラ、メモリシステムおよび制御方法
US10380018B2 (en) 2017-04-04 2019-08-13 Micron Technology, Inc. Garbage collection
JP7030463B2 (ja) 2017-09-22 2022-03-07 キオクシア株式会社 メモリシステム
US10877691B2 (en) * 2017-12-29 2020-12-29 Intel Corporation Stream classification based on logical regions
CN110018897B (zh) 2018-01-09 2023-05-26 阿里巴巴集团控股有限公司 数据处理方法、装置及计算设备
KR20190086921A (ko) * 2018-01-15 2019-07-24 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
TWI700635B (zh) * 2018-04-26 2020-08-01 群聯電子股份有限公司 資料寫入方法、記憶體控制電路單元以及記憶體儲存裝置
CN110442299B (zh) * 2018-05-03 2022-12-13 群联电子股份有限公司 数据写入方法、存储器控制电路单元以及存储器储存装置
KR102591123B1 (ko) * 2018-07-16 2023-10-19 에스케이하이닉스 주식회사 반도체장치
US11354058B2 (en) 2018-09-06 2022-06-07 Pure Storage, Inc. Local relocation of data stored at a storage device of a storage system
KR20200043676A (ko) 2018-10-18 2020-04-28 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
KR20200142219A (ko) 2019-06-12 2020-12-22 삼성전자주식회사 전자 장치 및 그의 저장 공간 이용 방법
JP7302497B2 (ja) * 2020-02-07 2023-07-04 Tdk株式会社 メモリコントローラ及びフラッシュメモリシステム
CN111309267B (zh) * 2020-02-26 2023-10-03 Oppo广东移动通信有限公司 存储空间的分配方法、装置、存储设备及存储介质
TWI733360B (zh) * 2020-03-09 2021-07-11 慧榮科技股份有限公司 資料儲存裝置與資料處理方法
US11287989B2 (en) 2020-03-24 2022-03-29 Western Digital Technologies, Inc. Dynamic allocation of sub blocks
JP7490469B2 (ja) * 2020-06-25 2024-05-27 キオクシア株式会社 ストレージデバイス、ストレージシステム及び制御方法
CN114327240A (zh) * 2020-09-29 2022-04-12 慧荣科技股份有限公司 计算机可读存储介质、闪存存储器的数据存储方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100771521B1 (ko) * 2006-10-30 2007-10-30 삼성전자주식회사 멀티 레벨 셀을 포함하는 플래시 메모리 장치 및 그것의데이터 쓰기 방법
KR20090131086A (ko) * 2008-06-17 2009-12-28 삼성전자주식회사 비대칭 맵핑 동작을 수행하는 메모리 시스템 및 그것의어드레스 맵핑 방법

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8027194B2 (en) * 1988-06-13 2011-09-27 Samsung Electronics Co., Ltd. Memory system and method of accessing a semiconductor memory device
US7366013B2 (en) 2005-12-09 2008-04-29 Micron Technology, Inc. Single level cell programming in a multiple level cell non-volatile memory device
KR101300821B1 (ko) * 2007-07-04 2013-08-26 삼성전자주식회사 비휘발성 메모리의 데이터 손실을 방지하기 위한 장치 및방법
US7545673B2 (en) 2007-09-25 2009-06-09 Sandisk Il Ltd. Using MLC flash as SLC by writing dummy data

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100771521B1 (ko) * 2006-10-30 2007-10-30 삼성전자주식회사 멀티 레벨 셀을 포함하는 플래시 메모리 장치 및 그것의데이터 쓰기 방법
KR20090131086A (ko) * 2008-06-17 2009-12-28 삼성전자주식회사 비대칭 맵핑 동작을 수행하는 메모리 시스템 및 그것의어드레스 맵핑 방법

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9239782B2 (en) 2012-05-17 2016-01-19 Samsung Electronics Co., Ltd. Nonvolatile memory device and program method thereof
KR20130135618A (ko) * 2012-06-01 2013-12-11 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 쓰기 방법
KR20140020445A (ko) * 2012-08-08 2014-02-19 삼성전자주식회사 3차원 불휘발성 메모리 장치를 포함하는 메모리 시스템 및 그것의 프로그램 방법
KR101381597B1 (ko) * 2013-01-31 2014-04-07 한국과학기술원 다중채널 ssd의 패턴기반 관리 시스템 및 그 방법
US10528469B2 (en) 2017-01-12 2020-01-07 SK Hynix Inc. Memory system for writing data based on types of command and data and operating method of the same
KR20200098971A (ko) * 2019-02-13 2020-08-21 울산과학기술원 싱글-레벨 기반의 데이터 저장 장치 및 방법

Also Published As

Publication number Publication date
US8677058B2 (en) 2014-03-18
KR101662827B1 (ko) 2016-10-06
US20120005415A1 (en) 2012-01-05

Similar Documents

Publication Publication Date Title
KR101662827B1 (ko) 쓰기 패턴에 따라 데이터 블록의 쓰기 모드를 선택하는 메모리 시스템 및 그것의 데이터 쓰기 방법
US11768610B2 (en) Storage system having a host that manages physical data locations of a storage device
US10649677B2 (en) Cooperative physical defragmentation by a file system and a storage device
US20210081315A1 (en) Reconstruction of address mapping in a host of a storage system
US8626996B2 (en) Solid state memory (SSM), computer system including an SSM, and method of operating an SSM
US10229049B2 (en) Storage system that performs host-initiated garbage collection
US8996959B2 (en) Adaptive copy-back method and storage device using same
US10409715B2 (en) Memory controller, nonvolatile memory system, and operating method thereof
US10747680B2 (en) Storage device, storage system comprising the same, and operating methods of the storage device
US11361840B2 (en) Storage system having a host that manages physical data locations of storage device
KR101734200B1 (ko) 적응적 머지를 수행하는 메모리 시스템 및 그것의 데이터 쓰기 방법
US20130080689A1 (en) Data storage device and related data management method
KR102295208B1 (ko) 프로그램 영역을 동적으로 할당하는 저장 장치 및 그것의 프로그램 방법
US20150347291A1 (en) Flash memory based storage system and operating method
US20200218451A1 (en) Storage device having dual access procedures
KR20120128978A (ko) 데이터 저장 장치 및 그것의 데이터 관리 방법
US11366599B2 (en) Storage device and operating method thereof
KR101430637B1 (ko) 불휘발성 메모리 장치 및 그것의 데이터 관리 방법
KR102660399B1 (ko) 메모리 시스템 및 그것의 동작방법
KR20100133707A (ko) 비휘발성 메모리 장치 및 그것의 최상위 비트 프로그램 상태 판별 방법
KR20220114078A (ko) 캐시의 데이터 블록의 기록 모드 변경을 기반으로 한 미디어 관리 동작 수행

Legal Events

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