[go: up one dir, main page]

KR100857761B1 - 웨어 레벨링을 수행하는 메모리 시스템 및 그것의 쓰기방법 - Google Patents

웨어 레벨링을 수행하는 메모리 시스템 및 그것의 쓰기방법 Download PDF

Info

Publication number
KR100857761B1
KR100857761B1 KR1020070058417A KR20070058417A KR100857761B1 KR 100857761 B1 KR100857761 B1 KR 100857761B1 KR 1020070058417 A KR1020070058417 A KR 1020070058417A KR 20070058417 A KR20070058417 A KR 20070058417A KR 100857761 B1 KR100857761 B1 KR 100857761B1
Authority
KR
South Korea
Prior art keywords
block
memory
group
flash memory
count value
Prior art date
Application number
KR1020070058417A
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 KR1020070058417A priority Critical patent/KR100857761B1/ko
Priority to US11/771,531 priority patent/US7797481B2/en
Priority to TW97122204A priority patent/TWI474324B/zh
Application granted granted Critical
Publication of KR100857761B1 publication Critical patent/KR100857761B1/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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • 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
    • 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
    • G06F2212/1036Life time enhancement
    • 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

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

본 발명에 따른 플래시 메모리를 포함하는 메모리 시스템의 쓰기 방법은: 입력된 논리 어드레스에 대응하는 메모리 블럭 그룹을 선택하는 단계; 상기 선택된 메모리 블럭 그룹의 맵핑 정보를 상기 플래시 메모리로부터 읽고 상기 읽혀진 맵핑 정보에 따라 상기 논리 어드레스를 물리 어드레스로 변환하는 단계; 상기 물리 어드레스에 대응하는 로그 블럭에 데이터를 쓰는 단계; 머지 카운트 값이 웨어 레벨링 조건을 만족하는 지의 여부를 판별하는 단계; 및 상기 판별 결과에 따라 가장 작은 그룹 카운트 값을 갖는 메모리 블럭 그룹의 소거 카운트 정보를 읽고 상기 읽혀진 소거 카운트 정보에 따라 웨어 레벨링 동작을 수행하는 단계를 포함한다.
Figure R1020070058417
웨어 레벨링, 그룹

Description

웨어 레벨링을 수행하는 메모리 시스템 및 그것의 쓰기 방법{MEMORY SYSTEM PERFORMING WEAR LEVELLING AND WRITE METHOD THEREOF}
도 1는 일반적인 플래시 메모리를 이용하는 메모리 시스템에 대한 하드웨어 구조를 보여주는 블럭도이다.
도 2는 도 1에 도시된 메모리 시스템의 소프트웨어 구조를 보여주는 블럭도이다.
도 3은 맵핑 테이블 및 그룹 웨어 레벨링 알고리즘을 포함하고 플래시 변환 레이어를 보여주고 있다.
도 4은 도 3에 도시된 메모리 시스템의 맵핑 방법을 설명하기 위한 개념도이다.
도 5은 도 4에 도시된 데이터 블럭과 로그 블럭의 머지 방법을 예시적으로 보여주고 있다.
도 6은 본 발명에 따른 데이터 영역의 물리 블럭들을 보여주고 있다.
도 7은 본 발명에 따른 플래시 메모리의 메타 블럭에 대한 실시예를 보여주고 있다.
도 8는 논리 블럭들을 N개의 그룹으로 분할하는 방법을 개념적으로 보여주고 있다.
도 9은 본 발명에 따른 그룹 단위의 웨어 레벨링을 개념적으로 보여주기 위한 도면이다.
도 10에 도시된 그룹 단위의 웨어 레벨링 방법은 머지 카운트 정보를 기준으로 웨어 레벨링을 수행한다.
도 11는 본 발명에 따른 그룹 단위의 웨어 레벨링 방법에 대한 제 2 실시예이다.
도 12은 본 발명에 따른 웨어 레벨링을 수행할 때와 웨어 레벨링을 수행하지 않을 때의 소거 카운트를 비교한 도면이다.
도 13은 본 발명에 따른 메모리 시스템이 포함된 컴퓨팅 시스템을 개략적으로 도시하고 있다.
*도면의 주요부분에 대한 부호의 설명*
100,200,300: 메모리 시스템 110:중앙처리장치
120: 에스램 130: 롬
140: 플래시 메모리 210: 어플리케이션
220: 파일 시스템 230: 플래시 변환 레이어
240: 플래시 메모리 231: 맵핑 테이블
232: 그룹 웨어 레벨링 알고리즘 241: 데이터 영역
242: 로그 영역 243: 프리 영역
244: 메타 영역
310: 마이크로 프로세서 340: 제어기
본 발명은 플래시 메모리를 이용하는 메모리 시스템에 관한 것으로, 좀 더 구체적으로 웨어 레벨링을 수행하는 메모리 시스템 및 그것의 쓰기 방법에 관한 것이다.
최근 디지털 카메라, MP3 플레이어, 핸드폰, PDA 등과 같은 휴대용 전자 장치들이 많이 사용되고 있다. 이러한 휴대용 전자 장치에는 플래시 메모리가 주로 사용되고 있다. 이는 플래시 메모리가 저전력 및 고집적 등의 특성을 갖는 비휘발성 메모리 소자이기 때문이다.
그러난 플래시 메모리는 데이터 덮어 쓰기(over write)가 가능한 하드 디스크와 달리, 데이터 덮어 쓰기가 자유롭지 않는다. 플래시 메모리에 데이터를 덮어 쓰기 위해서는 데이터를 쓰기 전에 지워야 한다. 이를 쓰기 전 소거 동작(erase-before-write)이라 한다. 즉, 플래시 메모리는 데이터를 쓰기 전에, 초기 상태 혹은 소거 상태로 되돌려 놓아야 한다.
플래시 메모리의 소거 동작은 일반적으로 쓰기 동작에 비하여 매우 긴 시간이 소요된다. 또한, 플래시 메모리의 소거 단위는 쓰기 단위보다 훨씬 큰 블럭 단위로 수행되기 때문에, 소거되지 않아도 되는 부분까지 함께 지워지는 결과를 초래할 수 있다. 원치않게 지워진 부분은 다시 쓰기 동작을 통해 복원해야 한다.
이와 같이 플래시 메모리는 소거와 쓰기 동작의 단위가 일치하지 않기 때문 에, 쓰기 동작의 수행 성능은 읽기 동작에 비해 현저하게 떨어지며, 심지어 하드 디스크보다 그 성능이 떨어진다. 또한, 플래시 메모리는 동일한 블럭에 대해 10만번 정도의 소거 동작을 수행하면, 더 이상 사용할 수 없게 된다. 그래서 플래시 메모리는 특정 블럭에 대해 소거 동작이 반복되는 것을 피하기 위해 웨어 레벨링(wear leveling) 동작을 수행한다.
플래시 변환 레이어(FTL; Flash Translation Layer)는 플래시 메모리의 이러한 단점을 극복하고, 플래시 메모리를 효율적으로 관리하기 위한 소프트웨어이다. 플래시 변환 레이터(FTL)는 파일 시스템(File System)으로부터의 논리 어드레스(LA: Logical Address)를 입력받고, 이를 물리 어드레스(PA: Physical Address)로 변환한다. 여기서, 물리 어드레스(PA)는 실제 플래시 메모리에서 사용할 어드레스이다.
플래시 변환 레이어(FTL)는 위와 같은 어드레스 맵핑 동작을 관리하기 위한 어드레스 맵핑 테이블(Address Mapping Table)을 가지고 있다. 어드레스 맵핑 테이블은 주로 랜덤 억세스 메모리(RAM)에서 구동된다. 어드레스 맵핑 테이블은 논리 어드레스(LA) 및 이에 대응하는 물리 어드레스(PA)가 기록되어 있다. 어드레스 맵핑 테이블은 맵핑 단위에 따라 그 크기가 달라질 수 있으며, 맵핑 단위에 따라 다양한 맵핑 방법을 가진다.
웨어 레벨링은 논리 블럭들(도시되지 않음)이 맵핑되는 물리 블럭들(도시되지 않음)의 물리적인 어드레스를 변경시키는 것이다. 웨어 레벨링을 수행할 때, 외부로부터 소정의 데이터 파일에 대한 쓰기 명령이 입력되었을 때, 모든 데이터 블 럭들(Data Blocks)의 소거 카운트(Erase Count) 정보가 순차적으로 혹은 규정된 방식에 따라 스캔된다. 그리고 스캔 결과, 데이터 파일이 저장될 데이터 블럭이 사전에 규정된 가장 큰 소거 카운트에 도달할 경우, 상대적으로 소거 카운트가 적은 프리 블럭(Free Block:도시되지 않음)으로 데이터 파일을 저장할 수 있도록 데이터 블럭들의 물리적인 어드레스를 변경시킨다. 여기서 소거 카운트 정보는 플래시 메모리의 메타 영역(도시되지 않음)에 저장되어 있다.
종래의 웨어 레벨링 방법은 상술한 바와 같이 모든 데이터 블럭들에 대하여 소거 카운트 정보를 스캔해야 했다. 이러한 스캔 작업은 외부의 메모리(예를 들어 SRAM)에서 수행되고 있다. 그런데 대용량의 플래시 메모리를 채용하고 있는 메모리 시스템의 경우에 있어서, 종래의 웨어 레벨링 방법은 플래시 메모리의 용량에 증가함에 따라 스캔 작업에 요구되는 외부 메모리 용량도 증가하게 된다. 특히, 작은 크기를 지향하는 임베디드 메모리 시스템에 있어서, 이러한 외부 메모리의 용량의 증가는 문제점으로 대두되고 있다. 한편 종래의 웨어 레벨링 방법은 전체 데이터 블럭에 대하여 스캔함으로 스캔 작업을 수행하는 작업 시간이 많이 소요되고 있다.
본 발명은 상술한 문제점을 해결하기 위하여 제안된 것으로, 본 발명의 목적은 외부 메모리의 크기가 증가되지 않으며 보다 효율적으로 웨어 레벨링을 수행할 수 있는 메모리 시스템 및 그것의 쓰기 방법을 제공하는데 있다.
본 발명에 따른 플래시 메모리를 포함하는 메모리 시스템의 쓰기 방법은: 입 력된 논리 어드레스에 대응하는 메모리 블럭 그룹을 선택하는 단계; 상기 선택된 메모리 블럭 그룹의 맵핑 정보를 상기 플래시 메모리로부터 읽고 상기 읽혀진 맵핑 정보에 따라 상기 논리 어드레스를 물리 어드레스로 변환하는 단계; 상기 물리 어드레스에 대응하는 로그 블럭에 데이터를 쓰는 단계; 머지 카운트 값이 웨어 레벨링 조건을 만족하는 지의 여부를 판별하는 단계; 및 상기 판별 결과에 따라 가장 작은 그룹 카운트 값을 갖는 메모리 블럭 그룹의 소거 카운트 정보를 읽고 상기 읽혀진 소거 카운트 정보에 따라 웨어 레벨링 동작을 수행하는 단계를 포함한다.
실시예에 있어서, 상기 웨어 레벨링 동작 동안, 가장 작은 그룹 카운트 값을 갖는 메모리 블럭 그룹에 속하는 메모리 블럭들 중 가장 작은 소거 카운트 값을 갖는 메모리 블럭은 프리 블럭과 교환되도록 맵핑 정보가 변경된다.
실시예에 있어서, 상기 메모리 시스템은 쓰기 동작시 상기 선택된 메모리 블럭 그룹의 맵핑 정보 및 상기 가장 작은 그룹 카운트를 갖는 메모리 블럭 그룹의 소거 카운트 정보를 상기 플래시 메모리로부터 읽어와 임시로 저장하는 에스램을 포함한다.
실시예에 있어서, 상기 메모리 시스템은 상기 논리 어드레스로부터 논리 블럭 번호를 계산하고, 상기 계산된 논리 블럭 번호로부터 상기 메모리 블럭 그룹이 선택되도록 하는 그룹 선택 알고리즘이 수행되는 롬 혹은 램을 포함한다.
실시예에 있어서, 상기 롬은 상기 웨어 레벨링 동작을 수행하기 위한 웨어 레벨링 알고리즘을 포함한다.
실시예에 있어서, 상기 로그 블럭에 데이터를 쓰는 단계는, 상기 논리 어드 레스에 대응하는 로그 블럭이 존재하는 지 판별하는 단계를 포함하고, 상기 판별결과 로그 블럭이 존재하면 상기 로그 블럭에 상기 데이터가 쓰여진다.
실시예에 있어서, 상기 로그 블럭에 데이터를 쓰는 단계는, 상기 논리 어드레스에 대응하는 로그 블럭이 존재하지 않으면 이용가능한 프리 블럭이 존재하는 지 판별하는 단계를 더 포함하고, 상기 판별결과 이용가능한 프리 블럭이 존재하면 상기 이용가능한 프리 블럭에 상기 데이터가 쓰여진다.
실시예에 있어서, 상기 로그 블럭에 데이터를 쓰는 단계는, 이용가능한 프리 블럭이 존재하지 않으면 머지 동작을 수행하여 새로운 프리 블럭을 생성하는 단계를 더 포함하고, 상기 새로운 프리 블럭에 상기 데이터가 쓰여진다.
실시예에 있어서, 상기 메모리 시스템은 상기 머지 동작이 수행될 때마다 상기 머지 카운트 값을 증가시킨다.
실시예에 있어서, 상기 머지 카운트 값은 상기 플래시 메모리에 저장되며, 쓰기 동작시 상기 플래시 메모리로부터 읽어온다.
실시예에 있어서, 쓰기 동작시 상기 플래시 메모리로부터 메모리 블럭 그룹들 각각의 그룹 카운트 값들을 저장하고 있는 그룹 카운트 정보를 읽어오며, 상기 논리 어드레스에 따라 선택된 메모리 블럭 그룹의 그룹 카운트 값이 증가된다.
실시예에 있어서, 메모리 블럭 그룹들의 각각의 그룹 카운트 값들은 상기 플래시 메모리에 저장되며, 쓰기 동작시 상기 플래시 메모리로부터 읽어온다.
실시예에 있어서, 상기 플래시 메모리는 복수의 데이터 블럭들을 갖고, 상기 데이터 블럭들은 상기 논리 블럭 번호에 따라 N(2이상의 자연수)의 메모리 블럭 그 룹으로 상기 그룹 선택 알고리즘으로 분할된다.
실시예에 있어서, 상기 그룹 선택 알고리즘에 의해서 상기 논리 블럭 번호가 상기 N으로 나눠지고, 그 나머지 값에 따라 메모리 블럭 그룹이 선택된다.
본 발명에 따른 또 다른 플래시 메모리를 포함하는 메모리 시스템의 쓰기 방법은: 입력된 논리 어드레스에 대응하는 메모리 블럭 그룹을 선택하는 단계; 상기 선택된 메모리 블럭 그룹의 맵핑 정보를 상기 플래시 메모리로부터 읽고 상기 읽혀진 맵핑 정보에 따라 상기 논리 어드레스를 물리 어드레스로 변환하는 단계; 상기 물리 어드레스에 대응하는 로그 블럭이 존재하지 않을 때, 제 1 소거 카운트 값과 제 2 소거 카운트 값의 차가 웨어 레벨링 조건을 만족하는 지의 여부를 판별하는 단계; 상기 판별 결과에 따라 가장 작은 그룹 카운트 값을 갖는 메모리 블럭 그룹의 소거 카운트 정보를 상기 플래시 메모리로부터 읽고 상기 읽혀진 소거 카운트 정보에 따라 웨어 레벨링 동작을 수행하는 단계; 및 상기 웨어 레벨링 동작의 결과로서 생성된 프리 블럭에 상기 입력된 논리 어드레스의 데이터를 쓰는 단계를 포함하며, 상기 제 1 소거 카운트 값은 가장 작은 그룹 카운트 값을 갖는 메모리 블럭 그룹에 속하는 메모리 블럭들 중 가장 작은 소거 카운트 값이고, 상기 제 2 소거 카운트 값은 프리 블럭들 중 가장 작은 소거 카운트 값이다.
실시예에 있어서, 상기 메모리 시스템은 쓰기 동작시 상기 선택된 메모리 블럭 그룹의 맵핑 정보 및 상기 가장 작은 그룹 카운트를 갖는 메모리 블럭 그룹의 소거 카운트 정보를 상기 플래시 메모리로부터 읽어와 임시로 저장하는 에스램을 포함한다.
실시예에 있어서, 상기 메모리 시스템은 상기 논리 어드레스로부터 논리 블럭 번호를 계산하고, 상기 계산된 논리 블럭 번호로부터 상기 메모리 블럭 그룹이 선택되도록 하는 그룹 선택 알고리즘이 수행되는 롬 혹은 램을 포함한다.
실시예에 있어서, 상기 롬은 상기 웨어 레벨링 동작을 수행하기 위한 웨어 레벨링 알고리즘을 포함한다.
실시예에 있어서, 상기 물리 어드레스에 대응하는 로그 블럭이 존재하면 상기 로그 블럭에 상기 데이터가 쓰여진다.
실시예에 있어서, 상기 물리 어드레스에 대응하는 로그 블럭이 존재하지 않으면 이용가능한 프리 블럭이 존재하는 지 판별되고, 상기 판별결과 이용가능한 프리 블럭이 존재하면 상기 웨어 레벨링 조건이 만족하는 지 판별된다.
실시예에 있어서, 이용가능한 프리 블럭이 존재하지 않으면 머지 동작을 수행하여 새로운 프리 블럭이 생성되고, 상기 웨어 레벨링 조건이 만족되는 지 판별된다.
실시예에 있어서, 상기 메모리 시스템은 상기 논리 어드레스에 따라 선택된 메모리 블럭 그룹의 그룹 카운트 값을 증가시킨다.
실시예에 있어서, 메모리 블럭 그룹들의 각각의 그룹 카운트 값들은 상기 플래시 메모리에 저장되며, 쓰기 동작시 상기 플래시 메모리로부터 읽어온다.
실시예에 있어서, 상기 플래시 메모리는 복수의 데이터 블럭들을 갖고, 상기 그룹 선택 알고리즘은 상기 데이터 블럭들은 상기 논리 블럭 번호에 따라 N(2이상의 자연수)의 메모리 블럭 그룹으로 분할되도록 한다.
실시예에 있어서, 상기 그룹 선택 알고리즘은 상기 논리 블럭 번호를 상기 N으로 나누고, 그 나머지 값에 따라 메모리 블럭 그룹이 선택되도록 한다.
본 발명에 따른 메모리 시스템은: 낸드 플래시 메모리; 및 상기 낸드 플래시 메모리를 제어하는 메모리 제어기를 포함하되, 상기 메모리 제어기는, 입력된 논리 어드레스에 대응하는 메모리 블럭 그룹을 선택하는 단계; 상기 선택된 메모리 블럭 그룹의 맵핑 정보를 상기 플래시 메모리로부터 읽고 상기 읽혀진 맵핑 정보에 따라 상기 논리 어드레스를 물리 어드레스로 변환하는 단계; 상기 물리 어드레스에 대응하는 로그 블럭에 데이터를 쓰는 단계; 머지 카운트 값이 웨어 레벨링 조건을 만족하는 지의 여부를 판별하는 단계; 및 상기 판별 결과에 따라 가장 작은 그룹 카운트 값을 갖는 메모리 블럭 그룹의 소거 카운트 정보를 읽고 상기 읽혀진 소거 카운트 정보에 따라 웨어 레벨링 동작을 수행하는 단계를 포함하는 쓰기 방법으로 구동된다.
본 발명에 따른 또 다른 메모리 시스템은: 낸드 플래시 메모리; 및 상기 낸드 플래시 메모리를 제어하는 메모리 제어기를 포함하되, 상기 메모리 제어기는, 입력된 논리 어드레스에 대응하는 메모리 블럭 그룹을 선택하는 단계; 상기 선택된 메모리 블럭 그룹의 맵핑 정보를 상기 플래시 메모리로부터 읽고 상기 읽혀진 맵핑 정보에 따라 상기 논리 어드레스를 물리 어드레스로 변환하는 단계; 상기 물리 어드레스에 대응하는 로그 블럭이 존재하지 않을 때, 제 1 소거 카운트 값과 제 2 소거 카운트 값의 차가 웨어 레벨링 조건을 만족하는 지의 여부를 판별하는 단계; 상기 판별 결과에 따라 가장 작은 그룹 카운트 값을 갖는 메모리 블럭 그룹의 소거 카운트 정보를 상기 플래시 메모리로부터 읽고 상기 읽혀진 소거 카운트 정보에 따라 웨어 레벨링 동작을 수행하는 단계; 및 상기 웨어 레벨링 동작의 결과로서 생성된 프리 블럭에 상기 입력된 논리 어드레스의 데이터를 쓰는 단계를 포함하며, 상기 제 1 소거 카운트 값은 가장 작은 그룹 카운트 값을 갖는 메모리 블럭 그룹에 속하는 메모리 블럭들 중 가장 작은 소거 카운트 값이고, 상기 제 2 소거 카운트 값은 프리 블럭들 중 가장 작은 소거 카운트 값인 쓰기 방법으로 구동된다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있도록 본 발명의 실시예를 첨부된 도면을 참조하여 설명한다.
본 발명에 따른 메모리 시스템은 쓰기 동작시 그룹 단위로 웨어 레벨링(wear leveling)을 수행한다. 본 발명의 메모리 시스템은 그룹 단위로 웨어 레벨링을 수행하기 때문에 수행 시간을 줄일 뿐 아니라, 메모리의 사용 용량도 줄일 수 있게 된다. 자세한 설명은 아래에서 하도록 하겠다.
도 1는 일반적인 플래시 메모리를 이용하는 메모리 시스템(100)에 대한 하드웨어 구조를 보여주는 블럭도이다. 도 1를 참조하면, 메모리 시스템(100)은 메모리 시스템(100)의 전반적인 동작을 제어하는 중앙처리장치(110), 동작 수행에 필요한 데이터를 임시로 저장하는 에스램(120), 플래시 메모리(140)의 읽기/쓰기/소거 동작을 제어하는 롬(130) 및 플래시 메모리(140)를 포함하고 있다. 플래시 메모리(140)의 메모리 영역은 입력된 어드레스에 따라 복수의 그룹으로 구분된다. 본 발명의 롬(130)은 그룹 단위로 웨어 레벨링을 수행하는 그룹 웨어 레벨링 알고리즘 을 포함하고 있다. 롬(130)은 노아 플래시 메모리일 수 있다. 여기서, 그룹 웨어 레벨링 알고리즘은 노아 플래시 메모리와 같은 롬(130)에 직접 수행되거나 혹은 에스램(120)에서 수행될 수 있다.
플래시 메모리(140)는 당업자에게 잘 알려진 바와 같이, 스트링 구조(string structure)를 갖는 복수의 메모리 셀들로 구성된다. 메모리 셀들의 집합은 보통 셀 어레이(cell array)라고 한다. 플래시 메모리의 셀 어레이는 복수의 메모리 블럭들(memory blocks)으로 구성된다. 각각의 메모리 블럭은 복수의 페이지들(pages)로 구성된다. 각각의 페이지는 하나의 워드 라인을 공유하는 복수의 메모리 셀들로 구성된다.
플래시 메모리(140)는 읽기 및 쓰기 동작 단위와 소거 동작 단위가 다르다. 즉, 플래시 메모리(140)는 메모리 블럭 단위로 소거 동작을 수행하고, 페이지 단위로 읽기 및 쓰기 동작을 수행한다. 또한, 플래시 메모리(140)는 다른 반도체 메모리와 달리 겹쳐 쓰기(over write)를 지원하지 않는다. 따라서 플래시 메모리(140)는 쓰기 동작 전에 소거 동작을 수행한다.
플래시 메모리(140)는 이와 같은 특성으로 인해, 플래시 메모리(140)를 하드 디스크처럼 사용하기 위해서, 읽기/쓰기/소거 동작에 대한 별도의 관리가 필요하다. 플래시 변환 레이어(Flash Traslation Layer:FTL)는 이러한 목적으로 개발된 시스템 소프트웨어이다. 플래시 변환 레이어(FTL)는 논리 어드레스(Logical Address:LA)를 물리 어드레스(Physical Address:PA)로 변환하는 맵핑 알고리즘 및 그룹 단위로 웨어 레벨링을 수행하기 위한 그룹 웨어 레벨링 알고리즘을 포함하고 있다.
본 발명의 메모리 시스템(100)은 그룹 단위로 웨어 레벨링을 수행한다. 그룹단위로 웨어 레벨링을 수행하기 위하여, 쓰기 동작시 입력된 논리 어드레스(LA)에 대응하는 논리 블럭 번호(Logical Block Number)에 따라 메모리 블럭 그룹이 선택된다. 만일, 웨어 레벨링 조건이 만족되면, 가장 작은 그룹 카운트 값을 갖는 메모리 블럭 그룹에 대하여 웨어 레벨링이 수행된다. 논리 어드레스(LA)에 따라 메모리 블럭 그룹이 선택될 때마다, 선택된 메모리 블럭 그룹의 그룹 카운트 값은 증가된다. 또한, 웨어 레벨링 조건에 대한 상세한 설명은 도 10 및 도 11에서 하도록 하겠다.
따라서, 본 발명의 메모리 시스템(100)은 메모리 블럭 그룹 단위로 웨어 레벨링을 수행하기 때문에 웨어 레벨링 수행 시간이 줄어들뿐 아니라, 웨어 레벨링을 수행하기 위한 에스램(120)의 용량도 줄일 수 있게 된다. 이러한 효과는 본 발명의 메모리 시스템(100)을 임베디드 메모리 시스템에 적용할 수 있게 한다.
도 2는 도 1에 도시된 메모리 시스템의 소프트웨어 구조(200)를 보여주는 블럭도이다. 도 2을 참조하면, 메모리 시스템은 애플리케이션(210), 파일 시스템(220), 플래시 변환 레이어(230) 및 플래시 메모리(240) 순으로 소프트웨어 계층 구조(200)를 갖는다.
플래시 변환 레이어(230)는 애플리케이션(210) 혹은 파일 시스템(220)으로부터 논리 어드레스(LA)를 입력받는다. 플래시 변환 레이어(230)은 논리 어드레스(LA)를 입력받아 물리 어드레스(PA)로 변환한다. 변환된 물리 어드레스(PA)는 플 래시 메모리(240)로 제공된다. 플래시 변환 레이어(230)는 어드레스 변환을 위해 어드레스 맵핑 테이블(Address Mapping Table) 정보을 갖는다. 어드레스 맵핑 테이블 정보는 메모리 블럭 그룹 단위로 플래시 메모리(240)에 저장된다. 한편, 쓰기 동작시 선택된 메모리 블럭 그룹의 어드레스 맵핑 테이블 정보는 도 1에 도시된 에스램(120)에 로딩된다.
플래시 변환 레이어(230)의 어드레스 맵핑 방법에는 맵핑 단위에 따라 여러가지가 있다. 대표적인 어드레스 맵핑 방법에는 페이지 맵핑 방법(page mapping method), 블럭 맵핑 방법(block mapping method) 및 혼합 맵핑 방법(hybrid mapping method)이 있다.
페이지 맵핑 방법은 페이지 단위로 어드레스 맵핑 동작을 수행한다. 페이지 맵핑 방법에 따르면, 페이지 단위로 어드레스 변환 동작이 수행되므로, 후에 페이지 정렬을 위한 머지 동작을 수행하지 않아도 되는 장점이 있다. 반면에, 페이지 맵핑 방법은 큰 사이즈의 어드레스 맵핑 테이블을 필요로 한다. 즉, 페이지 맵핑 방법을 사용하기 위해서는 용량이 큰 랜덤 억세스 메모리(120)이 필요한다. 이와같이 페이지 맴핑 방법은 머지 동작을 수행하지 않아도 되는 장점을 갖는 반면에, 페이지 맵핑 테이블을 위해 용량이 큰 메모리를 필요로 하는 단점을 가진다.
블럭 맵핑 방법은 메모리 블럭 단위로 어드레스 맴핑 동작을 수행한다. 블럭 맵핑 방법은 페이지 맵핑 방법에 비해 메모리 사이즈를 줄일 수 있는 장점을 가진다. 반면에, 블럭 맵핑 방법은 페이지 정렬을 위해 많은 수의 머지 연산을 수행해야 하는 단점이 있다.
혼합 맵핑 방법은 페이지 맵핑 방법과 블럭 맵핑 방법을 모두 사용함으로, 맵핑 테이블의 크기를 줄임과 동시에, 머지 연산의 회수를 줄이기 위한 방법이다.
아래에서는 설명의 편의를 위하여, 플래시 변환 레이어(230)는 블럭 맵핑 방법을 이용하고 있다고 가정하고 설명하도록 하겠다. 본 발명의 플래시 변환 레이어(230)에는 복수의 논리 블럭 번호들을 N(N은 2이상의 자연수)개의 그룹으로 분할하는 그룹 선택 알고리즘 및 그룹 단위 웨어 레벨링을 하는 그룹 웨어 레벨링 알고리즘이 포함되어 있다. 여기서 논리 블럭 번호들은 플래시 메모리의 물리 블럭들과 각각 대응된다.
도 3는 도 2에 도시된 메모리 시스템(200)의 그룹 단위의 웨어 레벨링을 보여주기 위한 블럭도이다. 도 3을 참조하면, 메모리 시스템(200)은 파일 시스템(220), 플래시 변환 레이어(230) 및 플래시 메모리(240)을 포함한다. 플래시 변환 레이어(230)는 논리 어드레스(LA)를 입력받고, 맵핑 테이블(Mapping Table)을 사용하여 물리 어드레스(PA)로 변환한다. 여기서 맵핑 테이블은 플래시 메모리(240)의 메타 영역(244)에 메모리 블럭 그룹별로 저장되어 있으며, 쓰기 동작시 도 1에 도시된 에스램(120)에 로딩된다.
한편, 플래시 변환 레이어(230)는 쓰기 동작시 그룹 단위로 웨어 레벨링을 수행한다. 즉, 웨어 레벨링 조건이 만족하면, 플래시 변환 레이어(230)는 가장 작은 그룹 카운트 값을 갖는 메모리 블럭 그룹에서 가장 작은 소거 카운트 값을 갖는 데이터 블럭을 가장 큰 소거 카운트 값을 갖는 프리 블럭과 교환한다. 여기서 소거 카운트 값은 메모리 블럭들 중에서 소거 동작이 수행될 때마다 증가된다. 플래시 메모리(240)에는 메모리 블럭 그룹 별로 각각의 메모리 블럭의 소거 카운트 값들이 저장되고 있다. 아래에서는 메모리 블럭 그룹의 소거 카운트 값들을 소거 카운트 정보라고 하겠다. 좀더 자세하게, 소거 카운트 정보는 각각의 메모리 블럭 그룹 단위로 플래시 메모리(240)의 메타 영역(244)에 저장되어 있다. 프리 블럭들 및 로그 블럭들에 대한 소거 카운트 값들도 별도로 플래시 메모리(240)의 메타 영역(244)에 저장되어 있다. 한편, 쓰기 동작시 웨어 레벨링을 수행하기 위하여, 프리 블럭들에 대한 소거 카운트 값들은 도 1에 도시된 에스램(120)에 로딩된다.
도 3을 다시 참조하면, 플래시 변환 레이어(230)는 맵핑 테이블(231) 및 그룹 웨어 레벨링 알고리즘(232)을 포함하고 있다. 맵핑 테이블(231)은 논리 블럭 번호(LBN)를 물리 블럭 번호(PBN)으로 변환하기 위한 것이다. 여기서 논리 블럭 번호(LBN)은 논리 어드레스(LA)에 대응되고, 물리 블럭 번호(PBN)은 물리 어드레스(PA)에 대응된다. 한편, 그룹 웨어 레벨링 알고리즘(232)은 쓰기 동작시 입력된 논리 어드레스(LA)에 따라 메모리 블럭 그룹을 선택하고, 웨어 레벨링 조건이 만족할 때 가장 큰 소거 카운트 값(ECmax)을 갖는 프리 블럭(Free Block)과 선택된 그룹내의 가장 작은 소거 카운트 값(ECmin)을 갖는 데이터 블럭(Data Block)이 교환(swap)되도록 선택된 메모리 블럭 그룹의 맵핑 테이블(231) 및 프리 블럭의 맵핑 테이블(도시되지 않음)을 변경한다. 여기서 프리 블럭의 맵핑 테이블은 프리 블럭에 해당하는 플래시 메모리의 물리 블럭에 대한 대응관계에 대한 정보를 포함하고 있다. 한편, 변경된 선택된 메모리 블럭 그룹의 맵핑 테이블(231) 및 프리 블럭의 맵핑 테이블은 플래시 메모리(240)의 메타 영역(244)에 저장된다.
쓰기 동작시 플래시 메모리(240)의 메타 영역(244)으로부터 각 메모리 블럭 그룹들의 그룹 카운트(Group Count;GC) 값들에 대한 그룹 카운트 정보, 프리 블럭들의 소거 카운트 값들에 대한 소거 카운트 정보, 논리 어드레스(LA)에 응답하여 선택된 메모리 블럭 그룹의 맵핑 테이블 정보 및 소거 카운트 정보가 도 1에 도시된 에스램(120)에 로딩된다. 플래시 변환 레이어(230)는 로딩된 이러한 정보들을 바탕으로 웨어 레벨링을 수행한다.
도 3을 다시 참조하면, 플래시 메모리(240)의 메모리 블럭들은 데이터 영역(241), 로그 영역(242), 프리 영역(243) 및 메타 영역(244)을 포함하고 있다. 데이터 영역(241)은 복수의 데이터 블럭을 포함하고 있으며, 사용자 데이터를 저장한다. 로그 영역(242)은 하나 또는 그 이상의 로그 블럭을 포함하고 있다. 쓰기 동작시, 로그 블럭은 특정 데이터 블럭에 할당된다. 특정 데이터 블럭에 데이터를 쓰고자 하는 경우, 데이터는 특정 데이터 블럭에 직접 쓰여지는 것이 아니라, 할당된 로그 블럭에 먼저 쓰여 진다. 그 다음에 머지(merge) 동작을 통해, 로그 블럭의 유효한 페이지와 데이터 블럭의 유효한 페이지는 새로운 데이터 블럭으로 복사된다.
프리 영역(243)은 복수의 프리 블럭을 포함하고 있다. 프리 블럭은 로그 블럭이 부족할 때, 로그 블럭으로 변환된다. 한편, 머지 동작 후에 소거된 데이터 블럭 및 로그 블럭은 프리 블럭으로 변환된다. 머지 동작에 따른 맵핑 테이블 정보의 변경은 메타 영역(244)에 저장된다. 한편, 머지 카운트 정보를 이용하여 웨어 레벨링을 수행할 경우에, 메모리 시스템(200)에서는 머지 동작을 수행할 때마다 머지 카운트를 수행하고, 머지 카운트 정보를 메타 영역(244)에 저장시킨다.
도 4은 도 3에 도시된 메모리 시스템(200)의 맵핑 방법을 설명하기 위한 개념도이다. 도 4을 참조하면, 플래시 메모리(240)는 데이터 블럭들로 구성된 데이터 영역(241), 로그 블럭들로 구성된 로그 영역(242) 및 프리 블럭들로 구성된 프리 영역(243)을 포함한다.
데이터 영역(241)은 1,2,3,4,...601,602,603,604의 물리 블럭 번호들(PBN)을 갖는 데이터 블럭들(PBN1,PBN2,PBN3,PBN4,...,PBN601,PBN602,PBN603,PBN604)을 포함한다. 로그 영역(242)은 701,702,703의 물리 블럭 번호들(PBN)을 갖는 로그 블럭(PBN701,PBB702,PBN703)들을 포함한다. 프리 영역(243)은 801,802,803,804의 물리 블럭 번호들(PBN)을 갖는 프리 블럭들(PBN801,PBN802,PBN803,PBN804)을 포함한다. 로그 블럭(PBN701)은 데이터 블럭(PBN1)에 할당되어 있고, 로그 블럭(PBN702)는 데이터 블럭(PBN3)에 할당되어 있고, 로그 블럭(PNB703)은 데이터 블럭(PBN5)에 할당되어 있다.
도 4을 다시 참조하면, 쓰기 동작시 하나의 데이터 블럭에는 하나의 로그 블럭이 할당된다. 즉, 외부적으로 하나의 논리 블럭에 대하여 대하여, 내부적으로 두 개의 물리 블럭들(예를 들어, 데이터 블럭(PBN1)과 로그 블럭(PBN701))이 사용된다.
파일 시스템(220)이 데이터 쓰기 요청(write request)을 하면, 플래시 변환 레이어(230)는 해당 데이터 블럭에 할당된 로그 블럭이 있는지를 판별한다. 해당 데이터 블럭에 할당된 로그 블럭이 있으면, 쓰기 동작을 수행하기 위하여 할당된 로그 블럭이 사용된다. 그러나 해당 데이터 블럭에 할당된 로그 블럭이 없으면, 해 당 데이터 블럭은 프리 블럭으로부터 새로운 로그 블럭을 할당받는다. 새롭게 할당된 로그 블럭에는 쓰기 동작 전에 소거 동작이 수행되며, 소거 동작 이후 쓰기 동작이 수행된다.
도 5은 도 4에 도시된 데이터 블럭과 로그 블럭의 머지 방법을 예시적으로 보여주고 있다. 도 5을 참조하면, 로그 블럭(PBN701)은 데이터 블럭(PBN1)에 할당되어 있다. 데이터 블럭(PBN1) 및 로그 블럭(PBN701)은 각각 4개의 물리 페이지들을 포함하고 있다. 여기서 도 5에 도시된 물리 페이지 번호(PPN)는 각각의 메모리 블럭의 페이지 순서를 의미한다.
로그 블럭이 부족하여, 로그 블럭(PBN701)을 프리 블럭으로 만들어야 하는 상황이 발생하면, 플래시 변환 레이어(230)는 머지 동작을 수행한다. 즉, 로그 블럭(PBN701)의 제 2 물리 페이지(PPN2)에 저장된 0번 논리 페이지(LPN0)와 데이터 블럭(PBN1)의 제 2 내지 제 4 물리 페이지들(PPN2,PPN3,PPN4)에 저장된 1번, 2번, 3번 논리 페이지들(LPN1,LPN2,LPN3)는 새로운 데이터 블럭(PBN2)으로 복사된다.
자세하게 보면, 먼저 로그 블럭(PBN701)의 0번 논리 페이지(LPN0)가 새로운 데이터 블럭(PBN2)의 제 1 물리 페이지(PPN1)에 복사된다. 다음에, 데이터 블럭 301의 1번, 2번, 3번 논리 페이지들(LPN1,LPN2,LPN3)이 새로운 데이터 블럭(PBN2)의 제 2 내지 제 4 물리 페이지들(PPN2,PPN3,PPN4)에 복사된다. 그 후, 데이터 블럭(PBN1) 및 로그 블럭(PBN701)에 소거 동작이 수행 된다.
도 5의 도시된 머지 방법에 따르면, 로그 블럭(PBN701)과 데이터 블럭(PBN1)의 유효한 페이지(valid page)는 머지 동작에 의해 새로운 데이터 블럭(PBN2)으로 복사된다.
도 6은 본 발명에 따른 데이터 영역(241)의 물리 블럭들(PBN0~PBNm)을 보여주고 있다. 도 6를 참조하면, 물리 블럭들(PBN0~PBNm)은 N개의 그룹으로 분할되어 있다. 여기서 물리 블럭들이 N개의 그룹으로 분할되었다는 것은 물리적 분할이 아니라 가상적 분할을 의미한다. 각각의 그룹들은 4개의 블럭들을 포함하고 있다. 여기서는 설명의 편의를 위하여 각 그룹이 4개의 블럭들을 포함하고 있다고 가정했다.
종래의 플래시 변환 레이어는 웨어 레벨링 조건을 만족할 때 플래시 메모리(240)의 모든 메모리 블럭들에 대한 소거 카운트 정보를 스캔해야 했다. 그러나, 본 발명의 플래시 변환 레이어(230)는 웨어 레벨링 조건을 만족할 때 그룹 카운트 값이 가장 낮은 메모리 블럭 그룹에 대한 소거 카운트 정보만을 스캔한다. 따라서, 본 발명은 웨어 레벨링에 요구되는 에스램(120)의 작업 공간이 종래의 웨벨링의 작업 공간보다 1/N로 줄어들게 된다. 따라서, 본 발명의 메모리 시스템(100)은 임베디드 시스템에 사용되는 작은 사이즈의 에스램(120)을 채용할 수 있게 된다.
한편, 메모리 블럭 그룹에 대한 각각의 소거 카운트 정보는 플래시 메모리(240)의 메타 블럭(244)에 그룹별로 저장되어 있다. 쓰기 동작시, 도 1에 도시된 에스램(120)에는 그룹 카운트 정보 및 선택된 메모리 블럭 그룹의 소거 카운트 정보가 로딩되어야 한다.
도 7은 본 발명에 따른 플래시 메모리의 메타 블럭에 대한 실시예를 보여주고 있다. 도 7을 참조하면, 메타 블럭은 N개의 페이지를 구비하며, 각각의 페이지 는 4개의 섹터들로 구분되어 있다. 각각의 페이지는 그룹별로 맵핑 테이블 정보를 포함하는 섹터(1) 및 소거 카운트 정보를 포함하는 섹터(2)를 포함하고 있다. 도 7에 도시되지 않았지만, 메타 블럭의 다른 페이지에는 각각의 메모리 블럭 그룹의 그룹 카운트 값들과 프리 블럭들의 소거 카운트 값들이 저장되어 있다.
메모리 시스템(100)에서는 쓰기 동작시 입력된 논리 어드레스(LA)에 따라 그룹이 선택되고, 선택된 메모리 블럭 그룹의 소거 카운트 정보가 도 1에 도시된 에스램(120)으로 로딩된다. 한편, 그룹 카운트 정보 및 프리 블럭의 소거 카운트 정보도 에스램(120)에 로딩된다.
도 8는 논리 블럭들을 N개의 그룹으로 분할하는 방법을 개념적으로 보여주고 있다. 도 8a는 논리 블럭들을 보여주고 있으며, 도 8b는 논리 블럭들에 따라 맵핑되는 물리 블럭들을 보여주고 있다. 아래서는 설명의 편의를 위하여 N이 4라고 하고 설명하도록 하겠다. 도 8을 참조하면, 논리 블럭들(LBN0,LBN1,...)은 4개의 메모리 블럭 그룹들(Group0~Group4)로 분할되고 있는데, 4의 나머지 값에 따라 논리 블럭의 메모리 블럭 그룹이 결정된다. 즉, 나머지가 0인 논리 블럭들(LBN0,LBN4,....,LBN4k)은 제 1 그룹(Group0)이고, 나머지가 1인 논리 블럭들(LBN1,LBN5,...,LBN4k+1)은 제 2 그룹(Group1)이고, 나머지가 2인 논리 블럭들(LBN2,LBN6,...,LBN4k+2)은 제 3 그룹(Group2)이며, 그리고 나머지가 3인 논리 블럭들(LBN3,LBN7,...,LBN4k+3)은 제 4 그룹(Group3)이다. 도 8에 도시된 테이블 형태의 논리 블럭들은 도 6에 도시된 수평적으로 나열된 물리 블럭들과 동일하며, 다만, 그룹 분할 방법의 이해를 돕기 위하여 테이블 형태로 나타냈을 뿐이다. 여기 서 도 8a의 논리 블럭 번호들(LBN0~LBNm)은 각각의 메모리 블럭 그룹의 맵핑 테이블 정보에 따라 도 6의 물리 블럭 번호들(PBN0~PBNm)에 각각 대응된다.
상술된 바와 같이, 본 발명의 논리 블럭들은 N의 나머지 값에 따라 메모리 블럭 그룹이 결정된다. 그러나 반드시 그럴 필요는 없다. 본 발명에서는 다양한 방법으로 논리 그룹들이 N개의 그룹으로 분할될 수 있다.
도 9은 본 발명에 따른 그룹 단위의 웨어 레벨링을 개념적으로 보여주기 위한 도면이다. 도 9을 참조하면, 그룹 단위의 웨어 레벨링은 다음과 같다. 쓰기 동작시 웨어 레벨링 조건이 만족할 경우, 플래시 변환 레이어(230)는 프리 블럭들(PBN801,PBN802,PBN803) 중에서 가장 큰 소거 카운트 값을(ECmax=32) 갖는 프리 블럭(PBN803)를 가장 작은 그룹 카운트 값(GCmim=100)을 갖는 제 4 그룹(Group3)에서 가장 작은 소거 카운트 값(ECmin=5)을 갖는 데이터 블럭(PBN15)과 교환한다.
본 발명에 따른 웨어 레벨링은 데이터 블럭들을 N개의 메모리 블럭 그룹으로 분할되어, 웨어 레벨링 조건이 만족할 경우 선택된 메모리 블럭 그룹만 웨어 레벨링을 수행하게 된다. 본 발명은 그룹 단위로 웨어 레벨링을 수행하기 때문에 그만큼 웨어 레벨링 수행되는 에스램(120)에 작업 공간이 줄어들고, 작업 시간도 줄어든다.
웨어 레벨링 조건에 따른 메모리 시스템의 쓰기 방법은 다양하게 구현될 수 있을 것이다. 도 10은 본 발명에 따른 웨어 레벨링을 포함하는 메모리 시스템의 쓰기 방법에 대한 제 1 실시예이다. 도 10에 개시된 웨어 레벨링은 머지 카운트 값을 웨어 레벨링 조건으로 사용할 경우를 보여주고 있다. 즉, 메모리 시스템의 쓰기 방 법은 머지 카운트 값이 일정 회수 이상일 때 웨어 레벨링을 수행한다. 한편, 도 10을 다시 참조하면, 메모리 시스템은 논리 어드레스에 대응하는 해당 블럭에 데이터를 쓴 뒤에 웨어 레벨링을 수행한다. 도 1 내지 도 10을 참조하면, 쓰기 방법은 다음과 같다.
S101 단계에서는, 외부의 호스트(도시되지 않음)로부터 플래시 메모리(240)에 쓰기 요청(Write Request)을 한다. 쓰기 요청과 동시에, 파일 시스템(220)으로부터 논리 어드레스(Logical Address:LA)가 플래시 변환 레이어(230)으로 전달된다.
S102 단계에서는, 플래시 변환 레이어(230)는 입력된 논리 어드레스(LA)로부터 논리 블럭 번호(Logical Block Number:LBN)를 계산한다.
S103 단계에서는, 계산된 논리 블럭 번호(LBN)에 따라, 메모리 블럭 그룹의 그룹 번호(Group Number:GN)가 결정된다. 그룹 번호(GN)를 결정한다는 것은 메모리 블럭 그룹을 선택한다는 말이다. 그룹 번호(GN)에 대한 결정은 도 7에서 개시된 바와 같다.
S104 단계에서는, S103에서 결정된 그룹 번호(GN)에 대응되는 메모리 블럭 그룹의 그룹 정보가 도 1 도시된 에스램(120)에 로딩되어 있는지가 판별된다. 여기서 메모리 블럭 그룹의 그룹 정보는 구체적으로 선택된 메모리 블럭 그룹의 맵핑 테이블 정보이다.
S105 단계에서는, S104 단계의 판별결과 해당 그룹 정보가 에스램(120)에 로딩되어 있지 않으면, 선택된 그룹 정보는 플래시 메모리(140)로부터 읽어와 에스 램(120)에 로딩된다. 한편, 쓰기 동작시 플래시 메모리(140)에 저장된 각각의 메모리 블럭 그룹들의 그룹 카운트 정보, 머지 카운트 정보 및 프리 블럭들의 소거 카운트 정보가 에스램(120)에 로딩된다. 여기서 그룹 카운트는 해당 그룹이 억세스된 회수를 말하며, 머지 카운트는 메모리 시스템에서 머지 동작이 수행된 회수를 말한다.
S106 단계에서는, 선택된 메모리 블럭 그룹의 그룹 정보가 에스램(120)에 로딩되어 있다면, 플래시 변환 레이어(230)는 그룹 정보의 맵핑 테이블 정보를 근거로 해당 논리 블럭 번호(LBN)으로부터 물리 어드레스(Physical Address:PA)를 결정한다.
S107 단계에서는, 계산된 논리 블럭 번호(LBN)에 대응하는 플래시 메모리(240)의 로그 블럭(Log Block)이 존재하는지가 판별된다. 여기서 로그 블럭은 쓰기 동작이 실제적으로 수행될 블럭이다.
S108 단계에서는, S107 단계의 판별결과 로그 블럭이 존재하면, 해당 로그 블럭에 데이터가 쓰여진다. 즉, 해당 물리 어드레스(PA)에 대응하는 로그 블럭의 해당 페이지에 데이터가 쓰여진다. 그 뒤, S113 단계가 진행된다.
S109 단계에서는, S107 단계의 판별결과 로그 블럭이 존재하지 않으면, 플래시 메모리(240)에서 이용가능한 프리 블럭(Free Block)이 존재하는지가 판별된다.
S110 단계에서는, S109 단계의 판별결과 이용가능한 프리 블럭이 존재하지 않으면, 머지 동작을 수행하여 이용가능한 새로운 프리 블럭이 생성된다. 이용 가능한 프리 블럭의 생성 방법은 도 5에서 설명하였다. 머지 동작이 수행되었기 때문 에, 머지 카운트 값은 증가된다. 새롭게 증가된 머지 카운트 값은 플래시 메모리(240)의 메타 영역에 저장될 것이다.
S111 단계에서는, S110단계의 머지 동작 수행으로 새롭게 생성된 프리 블럭에 데이터가 쓰여진다. 즉, 해당 물리 어드레스(PA)에 대응하는 프리 블럭의 해당 페이지에 데이터가 쓰여진다. 그 뒤, S113 단계가 수행된다.
S112 단계에서는, 이용가능한 프리 블럭에 데이터가 쓰여진다. 즉, 해당 물리 어드레스(PA)에 대응하는 프리 블럭의 해당 페이지에 데이터가 쓰여진다. 그 뒤, S113 단계가 수행된다.
S113 단계에서는, 해당 프리 블럭의 머지 카운트(MC)가 미리 결정된 수를 넘는지 판별한다. 판별 결과 머지 카운트(MC)가 미리 결정된 수를 넘지 않으면, 쓰기 동작은 완료된다. 판별결과 머지 카운트(MC)가 미리 결정된 수를 넘으면, S114 단계가 진행된다.
S114 단계에서는, 선택된 메모리 블럭 그룹의 그룹 카운트 값이 계산된다. 즉, 에스램(120)에 로딩된 그룹 카운트 정보로부터 선택된 메모리 블럭 그룹의 그룹 카운트 값만 증가시킨다.
S115 단계에서는, 그룹 카운트 정보로부터 가장 작은 그룹 카운트 값(GCmin)을 갖는 메모리 블럭 그룹이 선택되고, 선택된 메모리 블럭 그룹에서 가장 작은 소거 카운트 값(ECmin)을 갖는 데이터 블럭(Data Block)이 선택된다. 가장 작은 소거 카운트 값(ECmin)을 갖는 데이터 블럭을 선택하기 위하여 스캔 작업이 수행된다.
예를 들어, 도 9을 참조할 때, 가장 작은 그룹 카운트 값(GCmin=100)을 갖는 그룹은 제 4 그룹(Group3)이다. 따라서 웨어 레벨링 조건을 만족하면, 제 4 그룹(Group3)에 해당하는 소거 카운트 정보가 플래시 메모리로부터 읽어와 도1에 도시된 에스램(120)에 로딩된다. 에스램(120)에 로딩된 제 4 그룹(Group3)의 소거 카운트 정보를 스캔하여 가장 작은 소거 카운트 값을(ECmin=5) 갖는 데이터 블럭이 선택된다. 여기서 선택된 데이터 블럭은 물리 블럭(PBN15)이다.
메모리 시스템은 그룹 카운트 정보로부터 가장 작은 그룹 카운트 값(GCmin)을 갖는 메모리 블럭 그룹을 선택하고, 선택된 그룹에 대한 소거 카운트 정보를 스캔하여 가장 낮은 소거 카운트 값(ECmin)을 갖는 데이터 블럭을 찾아내게 된다. 만약, 논리 어드레스(LA)에 의해 선택된 메모리 블럭 그룹과 가장 작은 그룹 카운트 값(GCmin)을 갖는 그룹이 동일하지 않을 때, 메모리 시스템은 가장 작은 그룹 카운트 값(GCmin)을 갖는 그룹에 대한 소거 카운트 정보를 에스램(120)에 로딩시킨 후 스캔 작업을 수행한다.
S116 단계에서는, S115 단계에서 선택된 가장 작은 소거 카운트 값(ECmin)을 갖는 데이터 블럭과 가장 큰 소거 카운트 값(ECmax)을 갖는 프리 블럭은 교환된다. 예를 들어, 도 9을 참조하면, 가장 큰 소거 카운트 값(ECmax=33)을 갖는 프리 블럭은 물리 블럭(PBN803)이다. 이 후, 쓰기 동작은 완료된다. 쓰기 동작이 완료된 후, 메모리 시스템은 새롭게 바뀐 그룹 카운트 정보, 프리 블럭의 소거 카운트 정보, 머지 카운트 및 각각의 그룹 정보를 플래시 메모리(240)의 메타 영역(244)에 저장한다. 한편, 쓰기 동작이 수행된 블럭의 경우, 해당 블럭의 소거 카운트 값은 증가된다.
도 10에 도시된 그룹 단위의 웨어 레벨링 방법은 머지 카운트 정보를 기준으로 웨어 레벨링을 수행한다. 즉, 머지 카운트가 일정 회수가 될 때마다 웨어 레벨링이 수행된다. 그런데 이러한 방법은 웨어 레벨링을 수행하지 않는 시점에서 소거 카운트가 높은 블럭이 계속하여 사용되어 특정 블럭의 소거 카운트가 다른 블럭의 카운트보다 높아지는 현상이 발생할 수도 있다. 도 11은 이러한 문제를 해결하기 위하여 프리 블럭을 할당하는 시점에서 웨어 레벨링을 수행하고 있다. 도 11는 본 발명에 따른 그룹 단위의 웨어 레벨링 방법에 대한 제 2 실시예이다.
S201 단계에서는, 외부의 호스트(도시되지 않음)로부터 플래시 메모리(240)에 쓰기 요청(Write Request)을 한다. 쓰기 요청과 동시에, 파일 시스템(220)으로부터 논리 어드레스(Logical Address: LA)가 플래시 변환 레이어(230)으로 전달된다.
S202 단계에서는, 플래시 변환 레이어(230)는 논리 어드레스(LA)로부터 논리 블럭 번호(Logical Block Number:LBN)를 계산한다.
S203 단계에서는, 계산된 논리 블럭 번호(LBN)에 따라, 그룹 번호(Group Number:GN)가 결정된다. 여기서 그룹 번호의 결정은 곧 메모리 블럭 그룹의 선택을 의미한다. 그룹 번호에 대한 결정은 도 7에 개시된 바와 같다.
S204 단계에서는, S203에서 결정된 그룹 번호(GN)에 대응되는 그룹 정보가 도 1 도시된 에스램(120)에 로딩되어 있는지를 판별한다. 여기서 그룹 정보는 구체적으로 선택된 메모리 블럭 그룹의 맵핑 테이블 정보를 말한다.
S205 단계에서는, S204 단계의 판별결과 해당 그룹 정보가 에스램(120)에 로 딩되어 있지 않으면, 플래시 메모리(140)로부터 해당 그룹 정보를 읽어와 에스램(120)에 로딩시킨다. 한편, 플래시 메모리(140)에 저장된 각각의 메모리 블럭 그룹의 그룹 카운트 정보 및 프리 블럭들의 소거 카운트 정보를 에스램(120)에 로딩시킨다. 여기서 그룹 카운트(GC)는 해당 그룹이 억세스된 회수를 말한다.
S206 단계에서는, 해당 그룹 정보가 에스램(120)에 로딩되어 있다면, 플래시 변환 레이어(230)는 해당 그룹 정보의 맵핑 테이블 정보를 근거로 해당 논리 블럭 번호(LBN)으로부터 물리 어드레스(PA)를 결정한다.
S207 단계에서는, 해당 논리 블럭 번호(LBN)에 대응하는 로그 블럭(Log Block)이 존재하는지가 판별된다.
S208 단계에서는, S207 단계의 판별결과 로그 블럭이 존재하면, 해당 로그 블럭에 데이터가 쓰여진다. 즉, 물리 어드레스(PA)에 대응하는 로그 블럭의 해당 페이지에 데이터가 쓰여진다. 그 뒤, S211b 단계가 진행된다.
S209 단계에서는, S207 단계의 판별결과 로그 블럭이 존재하지 않으면, 이용가능한 프리 블럭(Free Block)이 존재하는지가 판별된다.
S210 단계에서는, S209 단계의 판별결과 이용가능한 프리 블럭이 존재하지 않으면, 머지 동작을 수행하여 이용가능한 새로운 프리 블럭이 생성된다. 그 후, S211a 단계가 진행된다.
S211a 단계에서는, 선택된 메모리 블럭 그룹의 그룹 카운트(GC)가 계산된다. 즉, 에스램(120)에 로딩된 그룹 카운트 정보로부터 선택된 메모리 블럭 그룹의 그룹 카운트 값이 증가된다. 그 후, S212 단계가 진행된다.
S211b 단계에서는, 선택된 메모리 블럭 그룹의 그룹 카운트(GC)가 계산된다. 즉, 에스램(120)에 로딩된 그룹 카운트 정보로부터 선택된 메모리 블럭 그룹의 그룹 카운트 값이 증가된다. 그 후, 쓰기 동작이 완료된다.
S212 단계에서는, 그룹 카운트 정보로부터 가장 작은 그룹 카운트 값(GCmin)을 갖는 메모리 블럭 그룹이 선택되고, 선택된 그룹에서 가장 작은 소거 카운트 값(ECmin)을 갖는 데이터 블럭(Data Block)이 선택된다. 가장 작은 소거 카운트 값(ECmin)를 갖는 데이터 블럭을 선택하기 위하여, 메모리 시스템은 선택된 메모리 블럭 그룹에 대한 소거 카운트 정보를 스캔한다. 예를 들어, 도 9을 참조하면, 가장 작은 그룹 카운트 값(GCmin=100)을 갖는 메모리 블럭 그룹이 제 4 그룹(Group3)이며, 메모리 시스템은 에스램(120)에 로딩된 제 4 그룹(Group3)의 소거 카운트 정보를 스캔하여 가장 작은 소거 카운트 값(ECmin=5)을 갖는 데이터 블럭(PBN15)을 선택하게 된다.
S213 단계에서는, 프리 블럭들 중에서 가장 작은 소거 카운트 값과 선택된 데이터 블럭의 가장 작은 소거 카운트 값의 차이가 미리 결정된 수를 넘는지를 판별한다. 판별 결과 넘지 않으면, S215 단계가 진행된다. 판별결과 미리 결정된 수를 넘으면, S214 단계가 진행된다.
S214 단계에서는, S213 단계에서 선택된 가장 낮은 소거 카운트 값(ECmin)을 갖는 데이터 블럭과 프리 블럭 중에서 가장 높은 소거 카운트 값(ECmax)을 갖는 프리 블럭과 교환한다. 예를 들어, 도 9을 참조하면, 웨어 레벨링 조건이 만족할 때, 데이터 블럭(PBN15)와 프리 블럭(PBN803)은 서로 교환된다.
S215 단계에서는, S210 단계에서 생성된 프리 블럭 혹은 S214 단계에서 교환된 프리 블럭에 데이터를 씁니다. 즉, 물리 어드레스(PA)에 대응하는 프리 블럭(PBN803)의 해당 페이지에 데이터가 쓰여진다. 이때 해당 프리 블럭에 대한 소거 카운트는 증가된다. 이후 쓰기 동작이 완료된다. 쓰기 동작이 완료된 후, 새로운 그룹 카운트 정보, 프리 블럭들의 소거 카운트 정보 및 그룹 정보들이 플래시 메모리의 메타 영역에 저장된다.
도 12은 본 발명에 따른 웨어 레벨링을 수행할 때와 웨어 레벨링을 수행하지 않을 때의 소거 카운트를 비교한 도면이다. 도 12을 참조하면, 본 발명의 웨어 레벨링을 수행할 때 데이터 블럭의 소거 카운트는 그렇지 않을 때보다 고른 분포를 보이고 있다.
본 발명에 따른 웨어 레벨링을 수행하는 메모리 시스템은 그룹 단위로 웨어 레벨링을 수행하기 때문에, 웨어 레벨링을 수행하기 위한 에스램의 용량이 적어지고, 또한 웨어 레벨링 작업 속도도 향상된다. 이러한 효과는 임베디드 메모리 시스템에 적용을 용이하게 한다.
플래시 메모리는 전력이 차단되어도 저장된 데이터를 유지할 수 있는 불 휘발성 메모리 장치이다. 셀룰러 폰, PDA 디지털 카메라, 포터블 게임 콘솔, 그리고 MP3P와 같은 모바일 장치들의 사용 증가에 따라, 플래시 메모리는 데이터 스토리지 뿐만 아니라 코드 스토리지로서 보다 널리 사용된다. 플래시 메모리는, 또한, HDTV, DVD, 라우터, 그리고 GPS와 같은 홈 어플리케이션에 사용될 수 있다. 본 발명에 따른 메모리 시스템이 포함된 컴퓨팅 시스템이 도 13에 개략적으로 도시되어 있다.
도 13을 참조하면, 본 발명에 따른 컴퓨팅 시스템(300)은 버스(301)에 전기적으로 연결된 마이크로프로세서(310), 사용자 인터페이스(320), 베이스밴드 칩셋(baseband chipset)과 같은 모뎀(330), 메모리 제어기(340) 및 플래시 메모리(350)를 포함한다. 메모리 제어기(340)과 플래시 메모리(350)는 도 1에 도시된 것과 실질적으로 동일하게 구성될 것이다. 플래시 메모리(350)에는 마이크로프로세서(310)에 의해서 처리된/처리될 N-비트 데이터(N은 1 또는 그 보다 큰 정수)가 메모리 제어기(340)를 통해 저장될 것이다. 본 발명에 따른 컴퓨팅 시스템이 모바일 장치인 경우, 컴퓨팅 시스템의 동작 전압을 공급하기 위한 배터리(360)가 추가적으로 제공될 것이다. 비록 도면에는 도시되지 않았지만, 본 발명에 따른 컴퓨팅 시스템에는 응용 칩셋(application chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램, 등이 더 제공될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명한다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시예에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지로 변형할 수 있다. 그러므로 본 발명의 범위는 상술한 실시예에 국한되어 정해져서는 안되며 후술하는 특허청구범위 뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
상술한 바와 같이 본 발명에 따른 메모리 시스템 및 그것의 쓰기 방법은 그 룹 단위로 웨어 레벨링을 수행함으로 에스램의 용량이 줄어들며, 또한 웨어 레벨링 작업 시간도 줄어든다.

Claims (27)

  1. 플래시 메모리를 포함하는 메모리 시스템의 쓰기 방법에 있어서:
    입력된 논리 어드레스에 대응하는 메모리 블럭 그룹을 선택하는 단계;
    상기 선택된 메모리 블럭 그룹의 맵핑 정보를 상기 플래시 메모리로부터 읽고 상기 읽혀진 맵핑 정보에 따라 상기 논리 어드레스를 물리 어드레스로 변환하는 단계;
    상기 물리 어드레스에 대응하는 로그 블럭에 데이터를 쓰는 단계;
    머지 카운트 값이 웨어 레벨링 조건을 만족하는 지의 여부를 판별하는 단계; 및
    상기 판별 결과에 따라 가장 작은 그룹 카운트 값을 갖는 메모리 블럭 그룹의 소거 카운트 정보를 읽고 상기 읽혀진 소거 카운트 정보에 따라 웨어 레벨링 동작을 수행하는 단계를 포함하되,
    상기 로그 블럭에 데이터를 쓰는 단계는, 상기 논리 어드레스에 대응하는 로그 블럭이 존재하는 지 판별하는 단계를 포함하고, 상기 판별결과 로그 블럭이 존재하면 상기 로그 블럭에 상기 데이터가 쓰여지는 메모리 시스템의 쓰기 방법.
  2. 제 1 항에 있어서,
    상기 웨어 레벨링 동작 동안, 가장 작은 그룹 카운트 값을 갖는 메모리 블럭 그룹에 속하는 메모리 블럭들 중 가장 작은 소거 카운트 값을 갖는 메모리 블럭은 프리 블럭과 교환되도록 맵핑 정보가 변경되는 메모리 시스템의 쓰기 방법.
  3. 제 1 항에 있어서,
    상기 메모리 시스템은 쓰기 동작시 상기 선택된 메모리 블럭 그룹의 맵핑 정보 및 상기 가장 작은 그룹 카운트를 갖는 메모리 블럭 그룹의 소거 카운트 정보를 상기 플래시 메모리로부터 읽어와 임시로 저장하는 에스램을 포함하는 메모리 시스템의 쓰기 방법.
  4. 제 1 항에 있어서,
    상기 메모리 시스템은 상기 논리 어드레스로부터 논리 블럭 번호를 계산하고, 상기 계산된 논리 블럭 번호로부터 상기 메모리 블럭 그룹이 선택되도록 하는 그룹 선택 알고리즘을 저장하는 롬을 포함하는 메모리 시스템의 쓰기 방법.
  5. 제 4 항에 있어서,
    상기 롬은 상기 웨어 레벨링 동작을 수행하기 위한 웨어 레벨링 알고리즘을 포함하는 메모리 시스템의 쓰기 방법.
  6. 삭제
  7. 제 1 항에 있어서,
    상기 로그 블럭에 데이터를 쓰는 단계는,
    상기 논리 어드레스에 대응하는 로그 블럭이 존재하지 않으면 이용가능한 프리 블럭이 존재하는 지 판별하는 단계를 더 포함하고, 상기 판별결과 이용가능한 프리 블럭이 존재하면 상기 이용가능한 프리 블럭에 상기 데이터가 쓰여지는 메모리 시스템의 쓰기 방법.
  8. 제 7 항에 있어서,
    상기 로그 블럭에 데이터를 쓰는 단계는,
    이용가능한 프리 블럭이 존재하지 않으면, 머지 동작을 수행하여 새로운 프리 블럭을 생성하는 단계를 더 포함하고, 상기 새로운 프리 블럭에 상기 데이터가 쓰여지는 메모리 시스템의 쓰기 방법.
  9. 제 8 항에 있어서,
    상기 메모리 시스템은 상기 머지 동작이 수행될 때마다 상기 머지 카운트 값을 증가시키는 메모리 시스템의 쓰기 방법.
  10. 제 9 항에 있어서,
    상기 머지 카운트 값은 상기 플래시 메모리에 저장되며, 쓰기 동작시 상기 플래시 메모리로부터 읽어오는 메모리 시스템의 쓰기 방법.
  11. 제 1 항에 있어서,
    쓰기 동작시 상기 플래시 메모리로부터 메모리 블럭 그룹들 각각의 그룹 카운트 값들을 저장하고 있는 그룹 카운트 정보를 읽어오며, 상기 논리 어드레스에 따라 선택된 메모리 블럭 그룹의 그룹 카운트 값이 증가되는 메모리 시스템의 쓰기 방법.
  12. 제 11 항에 있어서,
    메모리 블럭 그룹들의 각각의 그룹 카운트 값들은 상기 플래시 메모리에 저장되며, 쓰기 동작시 상기 플래시 메모리로부터 읽어오는 메모리 시스템의 쓰기 방법.
  13. 제 4 항에 있어서,
    상기 플래시 메모리는 복수의 데이터 블럭들을 갖고,
    상기 데이터 블럭들은 상기 논리 블럭 번호에 따라 N(2이상의 자연수)의 메모리 블럭 그룹으로 상기 그룹 선택 알고리즘에 의해서 분할되는 메모리 시스템의 쓰기 방법.
  14. 제 13 항에 있어서,
    상기 그룹 선택 알고리즘에 의해서 상기 논리 블럭 번호가 상기 N으로 나눠 지고, 그 나머지 값에 따라 메모리 블럭 그룹이 선택되는 메모리 시스템의 쓰기 방법.
  15. 플래시 메모리를 포함하는 메모리 시스템의 쓰기 방법에 있어서:
    입력된 논리 어드레스에 대응하는 메모리 블럭 그룹을 선택하는 단계;
    상기 선택된 메모리 블럭 그룹의 맵핑 정보를 상기 플래시 메모리로부터 읽고 상기 읽혀진 맵핑 정보에 따라 상기 논리 어드레스를 물리 어드레스로 변환하는 단계;
    상기 물리 어드레스에 대응하는 로그 블럭이 존재하지 않을 때, 제 1 소거 카운트 값과 제 2 소거 카운트 값의 차가 웨어 레벨링 조건을 만족하는 지의 여부를 판별하는 단계;
    상기 판별 결과에 따라 가장 작은 그룹 카운트 값을 갖는 메모리 블럭 그룹의 소거 카운트 정보를 상기 플래시 메모리로부터 읽고 상기 읽혀진 소거 카운트 정보에 따라 웨어 레벨링 동작을 수행하는 단계; 및
    상기 웨어 레벨링 동작의 결과로서 생성된 프리 블럭에 상기 입력된 논리 어드레스의 데이터를 쓰는 단계를 포함하며,
    상기 제 1 소거 카운트 값은 가장 작은 그룹 카운트 값을 갖는 메모리 블럭 그룹에 속하는 메모리 블럭들 중 가장 작은 소거 카운트 값이고, 상기 제 2 소거 카운트 값은 프리 블럭들 중 가장 작은 소거 카운트 값인 메모리 시스템의 쓰기 방법.
  16. 제 15 항에 있어서,
    상기 메모리 시스템은 쓰기 동작시 상기 선택된 메모리 블럭 그룹의 맵핑 정보 및 상기 가장 작은 그룹 카운트를 갖는 메모리 블럭 그룹의 소거 카운트 정보를 상기 플래시 메모리로부터 읽어와 임시로 저장하는 에스램을 포함하는 메모리 시스템의 쓰기 방법.
  17. 제 15 항에 있어서,
    상기 메모리 시스템은 상기 논리 어드레스로부터 논리 블럭 번호를 계산하고, 상기 계산된 논리 블럭 번호로부터 상기 메모리 블럭 그룹이 선택되도록 하는 그룹 선택 알고리즘을 저장하는 롬을 포함하는 메모리 시스템의 쓰기 방법.
  18. 제 17 항에 있어서,
    상기 롬은 상기 웨어 레벨링 동작을 수행하기 위한 웨어 레벨링 알고리즘을 포함하는 메모리 시스템의 쓰기 방법.
  19. 제 15 항에 있어서,
    상기 물리 어드레스에 대응하는 로그 블럭이 존재하면 상기 로그 블럭에 상기 데이터가 쓰여지는 메모리 시스템의 쓰기 방법.
  20. 제 15 항에 있어서,
    상기 물리 어드레스에 대응하는 로그 블럭이 존재하지 않으면 이용가능한 프리 블럭이 존재하는 지 판별되고, 상기 판별결과 이용가능한 프리 블럭이 존재하면 상기 웨어 레벨링 조건이 만족하는지 판별되는 메모리 시스템의 쓰기 방법.
  21. 제 20 항에 있어서,
    이용가능한 프리 블럭이 존재하지 않으면 머지 동작이 수행되어 새로운 프리 블럭이 생성되고, 상기 웨어 레벨링 조건이 만족하는 지 판별되는 메모리 시스템의 쓰기 방법.
  22. 제 15 항에 있어서,
    상기 메모리 시스템은 상기 논리 어드레스에 따라 선택된 메모리 블럭 그룹의 그룹 카운트 값을 증가시키는 메모리 시스템의 쓰기 방법.
  23. 제 22 항에 있어서,
    메모리 블럭 그룹들의 각각의 그룹 카운트 값들은 상기 플래시 메모리에 저장되며, 쓰기 동작시 상기 플래시 메모리로부터 읽어오는 메모리 시스템의 쓰기 방법.
  24. 제 17 항에 있어서,
    상기 플래시 메모리는 복수의 데이터 블럭들을 갖고,
    상기 데이터 블럭들은 상기 논리 블럭 번호에 따라 N(2이상의 자연수)의 메모리 블럭 그룹으로 상기 그룹 선택 알고리즘에 의해서 분할되는 메모리 시스템의 쓰기 방법.
  25. 제 24 항에 있어서,
    상기 그룹 선택 알고리즘에 의해서 상기 논리 블럭 번호가 상기 N으로 나눠지고, 그 나머지 값에 따라 메모리 블럭 그룹이 선택되는 메모리 시스템의 쓰기 방법.
  26. 낸드 플래시 메모리; 및
    상기 낸드 플래시 메모리를 제어하는 메모리 제어기를 포함하되,
    상기 메모리 제어기는 청구항 1에 기재된 쓰기 방법으로 구동되는 메모리 시스템.
  27. 낸드 플래시 메모리; 및
    상기 낸드 플래시 메모리를 제어하는 메모리 제어기를 포함하되,
    상기 메모리 제어기는 청구항 15에 기재된 쓰기 방법으로 구동되는 메모리 시스템.
KR1020070058417A 2007-06-14 2007-06-14 웨어 레벨링을 수행하는 메모리 시스템 및 그것의 쓰기방법 KR100857761B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020070058417A KR100857761B1 (ko) 2007-06-14 2007-06-14 웨어 레벨링을 수행하는 메모리 시스템 및 그것의 쓰기방법
US11/771,531 US7797481B2 (en) 2007-06-14 2007-06-29 Method and apparatus for flash memory wear-leveling using logical groups
TW97122204A TWI474324B (zh) 2007-06-14 2008-06-13 平均讀寫記憶元件的方法及記憶體系統

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070058417A KR100857761B1 (ko) 2007-06-14 2007-06-14 웨어 레벨링을 수행하는 메모리 시스템 및 그것의 쓰기방법

Publications (1)

Publication Number Publication Date
KR100857761B1 true KR100857761B1 (ko) 2008-09-10

Family

ID=40022860

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070058417A KR100857761B1 (ko) 2007-06-14 2007-06-14 웨어 레벨링을 수행하는 메모리 시스템 및 그것의 쓰기방법

Country Status (3)

Country Link
US (1) US7797481B2 (ko)
KR (1) KR100857761B1 (ko)
TW (1) TWI474324B (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100974215B1 (ko) 2008-10-02 2010-08-06 주식회사 하이닉스반도체 반도체 스토리지 시스템 및 그 제어 방법
KR101097438B1 (ko) 2009-10-29 2011-12-23 주식회사 하이닉스반도체 웨어 레벨링을 유동적으로 제어하는 반도체 스토리지 시스템 및 그 제어 방법
KR101180406B1 (ko) 2011-01-28 2012-09-10 에스케이하이닉스 주식회사 비휘발성 메모리 시스템 및 블럭 관리 방법
KR20120121739A (ko) * 2011-04-27 2012-11-06 삼성전자주식회사 저장 매체에 라이트 된 데이터 머지 방법, 저장 매체에 대한 라이트 동작 제어 방법, 이를 적용한 저장 장치, 컴퓨터 시스템 및 저장 매체
KR20190106271A (ko) * 2018-03-08 2019-09-18 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법

Families Citing this family (115)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100504814C (zh) * 2007-01-17 2009-06-24 忆正存储技术(深圳)有限公司 闪存的区块管理方法
TWI366828B (en) * 2007-09-27 2012-06-21 Phison Electronics Corp Wear leveling method and controller using the same
TWI373772B (en) * 2007-10-04 2012-10-01 Phison Electronics Corp Wear leveling method and controller using the same
TWI358068B (en) * 2007-10-19 2012-02-11 Phison Electronics Corp Writing method for non-volatile memory and control
US7948802B2 (en) * 2007-12-04 2011-05-24 Micron Technology, Inc. Sensing memory cells
KR101454817B1 (ko) * 2008-01-11 2014-10-30 삼성전자주식회사 반도체 메모리 장치 및 그것의 마모도 관리 방법
US8352671B2 (en) 2008-02-05 2013-01-08 Spansion Llc Partial allocate paging mechanism using a controller and a buffer
US8275945B2 (en) 2008-02-05 2012-09-25 Spansion Llc Mitigation of flash memory latency and bandwidth limitations via a write activity log and buffer
US8332572B2 (en) * 2008-02-05 2012-12-11 Spansion Llc Wear leveling mechanism using a DRAM buffer
JP5010505B2 (ja) * 2008-03-01 2012-08-29 株式会社東芝 メモリシステム
US20090254729A1 (en) * 2008-04-07 2009-10-08 Skymedi Corporation Method of wear leveling for a non-volatile memory
US8275928B2 (en) * 2008-05-15 2012-09-25 Silicon Motion, Inc. Memory module and method for performing wear-leveling of memory module using remapping, link, and spare area tables
US8843691B2 (en) * 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
US8140739B2 (en) * 2008-08-08 2012-03-20 Imation Corp. Flash memory based storage devices utilizing magnetoresistive random access memory (MRAM) to store files having logical block addresses stored in a write frequency file buffer table
JP2010055247A (ja) * 2008-08-27 2010-03-11 Hitachi Ltd ストレージシステム及び構成管理方法
US8386697B2 (en) * 2008-09-09 2013-02-26 Phison Electronics Corp. Memory managing method for non-volatile memory and controller using the same
US8447913B2 (en) * 2008-09-16 2013-05-21 International Business Machines Corporation Method to monitor read/write status of flash memory devices
TWI364661B (en) * 2008-09-25 2012-05-21 Silicon Motion Inc Access methods for a flash memory and memory devices
US8001318B1 (en) * 2008-10-28 2011-08-16 Netapp, Inc. Wear leveling for low-wear areas of low-latency random read memory
US8327040B2 (en) 2009-01-26 2012-12-04 Micron Technology, Inc. Host controller
KR20100091544A (ko) * 2009-02-10 2010-08-19 삼성전자주식회사 메모리 시스템 및 그 마모도 관리 방법
TWI409819B (zh) * 2009-03-03 2013-09-21 Silicon Motion Inc 平均地使用一快閃記憶體的複數個區塊之方法以及相關之記憶裝置及其控制器
KR101038991B1 (ko) * 2009-03-10 2011-06-03 주식회사 하이닉스반도체 메모리 영역의 균등한 사용을 위한 반도체 스토리지 시스템및 그 제어 방법
KR101586047B1 (ko) * 2009-03-25 2016-01-18 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 프로그램 방법
US8176295B2 (en) 2009-04-20 2012-05-08 Imation Corp. Logical-to-physical address translation for a removable data storage device
US8065469B2 (en) * 2009-04-20 2011-11-22 Imation Corp. Static wear leveling
US8051241B2 (en) 2009-05-07 2011-11-01 Seagate Technology Llc Wear leveling technique for storage devices
US20100318719A1 (en) * 2009-06-12 2010-12-16 Micron Technology, Inc. Methods, memory controllers and devices for wear leveling a memory
TWI405208B (zh) * 2009-08-06 2013-08-11 Novatek Microelectronics Corp 快閃記憶體及其存取方法
US8463983B2 (en) * 2009-09-15 2013-06-11 International Business Machines Corporation Container marker scheme for reducing write amplification in solid state devices
US8341372B2 (en) * 2010-04-29 2012-12-25 Freescale Semiconductor, Inc. Emulated electrically erasable (EEE) memory and method of operation
TWI457941B (zh) * 2010-06-25 2014-10-21 Macronix Int Co Ltd 區塊為基礎快閃記憶體之位元組存取的方法與裝置
KR101131560B1 (ko) * 2010-07-15 2012-04-04 주식회사 하이닉스반도체 웨어 레벨링을 수행하는 비휘발성 메모리 장치 및 그의 제어 방법
US8612804B1 (en) * 2010-09-30 2013-12-17 Western Digital Technologies, Inc. System and method for improving wear-leveling performance in solid-state memory
US20120203993A1 (en) * 2011-02-08 2012-08-09 SMART Storage Systems, Inc. Memory system with tiered queuing and method of operation thereof
US8909851B2 (en) 2011-02-08 2014-12-09 SMART Storage Systems, Inc. Storage control system with change logging mechanism and method of operation thereof
US8935466B2 (en) 2011-03-28 2015-01-13 SMART Storage Systems, Inc. Data storage system with non-volatile memory and method of operation thereof
US8862902B2 (en) * 2011-04-29 2014-10-14 Seagate Technology Llc Cascaded data encryption dependent on attributes of physical memory
US9396106B2 (en) * 2011-05-12 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
KR20120136197A (ko) * 2011-06-08 2012-12-18 삼성전자주식회사 비휘발성 메모리에 대한 웨어 레벨링 방법
US8898373B1 (en) 2011-06-29 2014-11-25 Western Digital Technologies, Inc. System and method for improving wear-leveling performance in solid-state memory
US20130019057A1 (en) * 2011-07-15 2013-01-17 Violin Memory, Inc. Flash disk array and controller
US8868869B2 (en) 2011-08-08 2014-10-21 International Business Machines Corporation Enhanced copy-on-write operation for solid state drives
US9098399B2 (en) 2011-08-31 2015-08-04 SMART Storage Systems, Inc. Electronic system with storage management mechanism and method of operation thereof
US9063844B2 (en) 2011-09-02 2015-06-23 SMART Storage Systems, Inc. Non-volatile memory management system with time measure mechanism and method of operation thereof
US9021319B2 (en) 2011-09-02 2015-04-28 SMART Storage Systems, Inc. Non-volatile memory management system with load leveling and method of operation thereof
US9021231B2 (en) 2011-09-02 2015-04-28 SMART Storage Systems, Inc. Storage control system with write amplification control mechanism and method of operation thereof
US9417803B2 (en) * 2011-09-20 2016-08-16 Apple Inc. Adaptive mapping of logical addresses to memory devices in solid state drives
US20140189284A1 (en) * 2011-12-23 2014-07-03 Nevin Hyuseinova Sub-block based wear leveling
WO2013095644A1 (en) 2011-12-23 2013-06-27 Intel Corporation Page miss handler including wear leveling logic
US9176862B2 (en) 2011-12-29 2015-11-03 Sandisk Technologies Inc. SLC-MLC wear balancing
US9239781B2 (en) * 2012-02-07 2016-01-19 SMART Storage Systems, Inc. Storage control system with erase block mechanism and method of operation thereof
US9298252B2 (en) 2012-04-17 2016-03-29 SMART Storage Systems, Inc. Storage control system with power down mechanism and method of operation thereof
CN103377143B (zh) * 2012-04-27 2016-12-21 群联电子股份有限公司 存储器管理方法、存储器控制器与存储器存储装置
US9116792B2 (en) * 2012-05-18 2015-08-25 Silicon Motion, Inc. Data storage device and method for flash block management
US8949689B2 (en) 2012-06-11 2015-02-03 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US9754648B2 (en) 2012-10-26 2017-09-05 Micron Technology, Inc. Apparatuses and methods for memory operations having variable latencies
US9671962B2 (en) 2012-11-30 2017-06-06 Sandisk Technologies Llc Storage control system with data management mechanism of parity and method of operation thereof
US9123445B2 (en) 2013-01-22 2015-09-01 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US9395924B2 (en) * 2013-01-22 2016-07-19 Seagate Technology Llc Management of and region selection for writes to non-volatile memory
US9292451B2 (en) 2013-02-19 2016-03-22 Qualcomm Incorporated Methods and apparatus for intra-set wear-leveling for memories with limited write endurance
US9329928B2 (en) 2013-02-20 2016-05-03 Sandisk Enterprise IP LLC. Bandwidth optimization in a non-volatile memory system
US9214965B2 (en) 2013-02-20 2015-12-15 Sandisk Enterprise Ip Llc Method and system for improving data integrity in non-volatile storage
US9348743B2 (en) 2013-02-21 2016-05-24 Qualcomm Incorporated Inter-set wear-leveling for caches with limited write endurance
US9183137B2 (en) 2013-02-27 2015-11-10 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US9470720B2 (en) 2013-03-08 2016-10-18 Sandisk Technologies Llc Test system with localized heating and method of manufacture thereof
US9117533B2 (en) 2013-03-13 2015-08-25 Sandisk Technologies Inc. Tracking erase operations to regions of non-volatile memory
US9043780B2 (en) 2013-03-27 2015-05-26 SMART Storage Systems, Inc. Electronic system with system modification control mechanism and method of operation thereof
US9170941B2 (en) 2013-04-05 2015-10-27 Sandisk Enterprises IP LLC Data hardening in a storage system
US10049037B2 (en) 2013-04-05 2018-08-14 Sandisk Enterprise Ip Llc Data management in a storage system
US9543025B2 (en) 2013-04-11 2017-01-10 Sandisk Technologies Llc Storage control system with power-off time estimation mechanism and method of operation thereof
US10546648B2 (en) 2013-04-12 2020-01-28 Sandisk Technologies Llc Storage control system with data management mechanism and method of operation thereof
GB2514354A (en) * 2013-05-20 2014-11-26 Ibm Managing storage devices having a lifetime of a finite number of operations
US9313874B2 (en) 2013-06-19 2016-04-12 SMART Storage Systems, Inc. Electronic system with heat extraction and method of manufacture thereof
US9898056B2 (en) 2013-06-19 2018-02-20 Sandisk Technologies Llc Electronic assembly with thermal channel and method of manufacture thereof
US9244519B1 (en) 2013-06-25 2016-01-26 Smart Storage Systems. Inc. Storage system with data transfer rate adjustment for power throttling
US9367353B1 (en) 2013-06-25 2016-06-14 Sandisk Technologies Inc. Storage control system with power throttling mechanism and method of operation thereof
US9146850B2 (en) 2013-08-01 2015-09-29 SMART Storage Systems, Inc. Data storage system with dynamic read threshold mechanism and method of operation thereof
US9361222B2 (en) 2013-08-07 2016-06-07 SMART Storage Systems, Inc. Electronic system with storage drive life estimation mechanism and method of operation thereof
US9431113B2 (en) 2013-08-07 2016-08-30 Sandisk Technologies Llc Data storage system with dynamic erase block grouping mechanism and method of operation thereof
US9448946B2 (en) 2013-08-07 2016-09-20 Sandisk Technologies Llc Data storage system with stale data mechanism and method of operation thereof
JP6213040B2 (ja) * 2013-08-19 2017-10-18 富士通株式会社 半導体記憶装置および半導体記憶装置の制御方法
US9336129B2 (en) 2013-10-02 2016-05-10 Sandisk Technologies Inc. System and method for bank logical data remapping
US9152555B2 (en) 2013-11-15 2015-10-06 Sandisk Enterprise IP LLC. Data management with modular erase in a data storage system
TWI548991B (zh) * 2014-02-14 2016-09-11 群聯電子股份有限公司 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置
JP5858081B2 (ja) * 2014-03-27 2016-02-10 Tdk株式会社 メモリコントローラ、メモリシステム及びメモリ制御方法
US10365835B2 (en) * 2014-05-28 2019-07-30 Micron Technology, Inc. Apparatuses and methods for performing write count threshold wear leveling operations
US9626289B2 (en) * 2014-08-28 2017-04-18 Sandisk Technologies Llc Metalblock relinking to physical blocks of semiconductor memory in adaptive wear leveling based on health
US9830087B2 (en) * 2014-11-13 2017-11-28 Micron Technology, Inc. Memory wear leveling
US10055267B2 (en) * 2015-03-04 2018-08-21 Sandisk Technologies Llc Block management scheme to handle cluster failures in non-volatile memory
KR102258126B1 (ko) 2015-03-19 2021-05-28 삼성전자주식회사 메모리 컨트롤러의 작동 방법, 이를 포함하는 데이터 저장 장치, 및 이를 포함하는 데이터 처리 시스템
KR20170075359A (ko) * 2015-12-23 2017-07-03 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 콘트롤러의 동작 방법
US10031845B2 (en) * 2016-04-01 2018-07-24 Intel Corporation Method and apparatus for processing sequential writes to a block group of physical blocks in a memory device
US10019198B2 (en) 2016-04-01 2018-07-10 Intel Corporation Method and apparatus for processing sequential writes to portions of an addressable unit
US9842059B2 (en) * 2016-04-14 2017-12-12 Western Digital Technologies, Inc. Wear leveling in storage devices
CN107301015B (zh) * 2016-04-15 2022-05-13 恩智浦美国有限公司 用于减少存储器设备上的压力的系统和方法
US10579471B2 (en) * 2017-03-02 2020-03-03 Toshiba Memory Corporation Storage device and error correction method for storage device
KR20180123385A (ko) * 2017-05-08 2018-11-16 에스케이하이닉스 주식회사 메모리 시스템 및 이를 이용한 웨어-레벨링 방법
TWI658471B (zh) * 2017-05-16 2019-05-01 華邦電子股份有限公司 快閃記憶體儲存裝置及其操作方法
KR102340287B1 (ko) * 2017-09-20 2021-12-20 삼성전자주식회사 멀티캐스트 통신 프로토콜에 따라 호스트와 통신하는 저장 장치 및 호스트의 통신 방법
JP7020989B2 (ja) 2018-04-23 2022-02-16 株式会社メガチップス 不揮発性記憶装置、メモリ制御装置、及びメモリ制御方法
US10884889B2 (en) 2018-06-22 2021-01-05 Seagate Technology Llc Allocating part of a raid stripe to repair a second raid stripe
US11537307B2 (en) * 2018-08-23 2022-12-27 Micron Technology, Inc. Hybrid wear leveling for in-place data replacement media
US10761739B2 (en) 2018-08-23 2020-09-01 Micron Technology, Inc. Multi-level wear leveling for non-volatile memory
KR102721255B1 (ko) 2019-04-05 2024-10-24 삼성전자주식회사 데이터를 스왑하기 위한 메모리 장치 및 메모리 장치의 동작 방법
KR20210039872A (ko) 2019-10-02 2021-04-12 삼성전자주식회사 프리 블록의 할당을 관리하는 호스트 시스템, 이를 포함하는 데이터 처리 시스템 및 호스트 시스템의 동작방법
US11442631B2 (en) * 2019-12-26 2022-09-13 Micron Technology, Inc. Memory operations with consideration for wear leveling
CN111625187B (zh) * 2020-05-15 2023-09-29 合肥康芯威存储技术有限公司 一种存储器及其控制方法与存储系统
US11328778B2 (en) * 2020-07-09 2022-05-10 Stmicroelectronics S.R.L. Methods and devices for wear leveling
TWI775143B (zh) 2020-09-09 2022-08-21 群聯電子股份有限公司 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元
KR20230048747A (ko) * 2021-10-05 2023-04-12 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
CN114077523A (zh) * 2021-11-12 2022-02-22 山东云海国创云计算装备产业创新中心有限公司 一种硬盘寿命分析方法、系统、存储介质及设备
CN114281242B (zh) * 2021-11-15 2024-05-10 北京智芯微电子科技有限公司 存储器负载均衡的方法、装置和设备
JP2024039302A (ja) * 2022-09-09 2024-03-22 キオクシア株式会社 メモリシステムおよびブロック管理方法
KR20250029014A (ko) * 2023-08-18 2025-03-04 양쯔 메모리 테크놀로지스 씨오., 엘티디. 메모리 시스템 및 그것을 동작시키는 방법, 및 컴퓨터 판독 가능 저장 매체

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990074703A (ko) * 1998-03-13 1999-10-05 김영환 플래쉬 메모리의 웨어 레벨링 시스템 및 웨어 레벨링 방법
KR19990075161A (ko) * 1998-03-18 1999-10-15 김영환 플래시 메모리 어레이 액세스 방법 및 장치

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0618535B1 (en) * 1989-04-13 1999-08-25 SanDisk Corporation EEPROM card with defective cell substitution and cache memory
US6230233B1 (en) 1991-09-13 2001-05-08 Sandisk Corporation Wear leveling techniques for flash EEPROM systems
KR100577380B1 (ko) 1999-09-29 2006-05-09 삼성전자주식회사 플래시 메모리와 그 제어 방법
KR100644602B1 (ko) 2000-10-11 2006-11-10 삼성전자주식회사 플래시메모리를 위한 재사상 제어방법 및 그에 따른플래시 메모리의 구조
KR100389867B1 (ko) 2001-06-04 2003-07-04 삼성전자주식회사 플래시 메모리 관리방법
US6973531B1 (en) * 2002-10-28 2005-12-06 Sandisk Corporation Tracking the most frequently erased blocks in non-volatile memory systems
US7035967B2 (en) * 2002-10-28 2006-04-25 Sandisk Corporation Maintaining an average erase count in a non-volatile storage system
US6985992B1 (en) 2002-10-28 2006-01-10 Sandisk Corporation Wear-leveling in non-volatile storage systems
JP4518951B2 (ja) * 2002-10-28 2010-08-04 サンディスク コーポレイション 不揮発性記憶システムにおける自動損耗均等化
US8041878B2 (en) * 2003-03-19 2011-10-18 Samsung Electronics Co., Ltd. Flash file system
US7032087B1 (en) * 2003-10-28 2006-04-18 Sandisk Corporation Erase count differential table within a non-volatile memory system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990074703A (ko) * 1998-03-13 1999-10-05 김영환 플래쉬 메모리의 웨어 레벨링 시스템 및 웨어 레벨링 방법
KR19990075161A (ko) * 1998-03-18 1999-10-15 김영환 플래시 메모리 어레이 액세스 방법 및 장치

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100974215B1 (ko) 2008-10-02 2010-08-06 주식회사 하이닉스반도체 반도체 스토리지 시스템 및 그 제어 방법
KR101097438B1 (ko) 2009-10-29 2011-12-23 주식회사 하이닉스반도체 웨어 레벨링을 유동적으로 제어하는 반도체 스토리지 시스템 및 그 제어 방법
US8335887B2 (en) 2009-10-29 2012-12-18 Hynix Semiconductor Inc. Solid state storage systems and methods for flexibly controlling wear leveling
KR101180406B1 (ko) 2011-01-28 2012-09-10 에스케이하이닉스 주식회사 비휘발성 메모리 시스템 및 블럭 관리 방법
US8996786B2 (en) 2011-01-28 2015-03-31 SK Hynix Inc. Nonvolatile memory system and block management method
KR20120121739A (ko) * 2011-04-27 2012-11-06 삼성전자주식회사 저장 매체에 라이트 된 데이터 머지 방법, 저장 매체에 대한 라이트 동작 제어 방법, 이를 적용한 저장 장치, 컴퓨터 시스템 및 저장 매체
KR101954995B1 (ko) * 2011-04-27 2019-05-31 시게이트 테크놀로지 엘엘씨 저장 매체에 라이트 된 데이터 머지 방법, 저장 매체에 대한 라이트 동작 제어 방법, 이를 적용한 저장 장치, 컴퓨터 시스템 및 저장 매체
KR20190106271A (ko) * 2018-03-08 2019-09-18 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법

Also Published As

Publication number Publication date
TWI474324B (zh) 2015-02-21
US7797481B2 (en) 2010-09-14
TW200903500A (en) 2009-01-16
US20080313505A1 (en) 2008-12-18

Similar Documents

Publication Publication Date Title
KR100857761B1 (ko) 웨어 레벨링을 수행하는 메모리 시스템 및 그것의 쓰기방법
US10545863B2 (en) Memory system and method for controlling nonvolatile memory
US8631192B2 (en) Memory system and block merge method
US11436136B2 (en) Memory system including non-volatile buffer and control method thereof
KR100885181B1 (ko) 그룹 맵핑 동작을 수행하는 메모리 시스템 및 그것의어드레스 맵핑 방법
KR100526190B1 (ko) 플래시 메모리의 재사상 방법
US8417872B2 (en) Write and merge methods in memory card systems for reducing the number of page copies
US7890550B2 (en) Flash memory system and garbage collection method thereof
US7788441B2 (en) Method for initializing and operating flash memory file system and computer-readable medium storing related program
JP5674999B2 (ja) Slc/mlc混成メモリのブロック管理構成
US20120254574A1 (en) Multi-layer memory system
US20100082917A1 (en) Solid state storage system and method of controlling solid state storage system using a multi-plane method and an interleaving method
US9892034B2 (en) Semiconductor device and operating method thereof
KR20090131146A (ko) 불휘발성 메모리 시스템 및 그것의 데이터 관리 방법
US11269534B2 (en) Data storage device and non-volatile memory control method
KR101119866B1 (ko) 파티션별로 플랙시블한 크기의 로그블록을 포함하는 플래시 메모리 및 이를 이용한 메모리 시스템
KR20110070656A (ko) 플래시 메모리의 데이터 처리 방법 및 장치
JP4434171B2 (ja) メモリコントローラ及びフラッシュメモリシステム
TWI808011B (zh) 資料處理方法及對應之資料儲存裝置
US20240103732A1 (en) Data processing method for improving continuity of data corresponding to continuous logical addresses as well as avoiding excessively consuming service life of memory blocks and the associated data storage device
US12067286B2 (en) Data processing method for efficiently processing data stored in the memory device by splitting data flow and the associated data storage device
JP6260395B2 (ja) メモリコントローラ、メモリシステム及びメモリ制御方法
CN111949560B (zh) 一种数据写入方法、装置及存储设备
US12175086B2 (en) Data processing method for efficiently processing data stored in the memory device by splitting data flow and the associated data storage device
US20240069775A1 (en) Compaction of a Logical-to-Physical Table for Zoned Namespace Nonvolatile Memory

Legal Events

Date Code Title Description
A201 Request for examination
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20070614

PA0201 Request for examination
E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20080229

Patent event code: PE09021S01D

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20080828

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20080903

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20080904

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
PR1001 Payment of annual fee

Payment date: 20110830

Start annual number: 4

End annual number: 4

FPAY Annual fee payment

Payment date: 20120831

Year of fee payment: 5

PR1001 Payment of annual fee

Payment date: 20120831

Start annual number: 5

End annual number: 5

FPAY Annual fee payment

Payment date: 20130902

Year of fee payment: 6

PR1001 Payment of annual fee

Payment date: 20130902

Start annual number: 6

End annual number: 6

FPAY Annual fee payment

Payment date: 20140901

Year of fee payment: 7

PR1001 Payment of annual fee

Payment date: 20140901

Start annual number: 7

End annual number: 7

FPAY Annual fee payment

Payment date: 20150831

Year of fee payment: 8

PR1001 Payment of annual fee

Payment date: 20150831

Start annual number: 8

End annual number: 8

FPAY Annual fee payment

Payment date: 20180831

Year of fee payment: 11

PR1001 Payment of annual fee

Payment date: 20180831

Start annual number: 11

End annual number: 11

FPAY Annual fee payment

Payment date: 20190830

Year of fee payment: 12

PR1001 Payment of annual fee

Payment date: 20190830

Start annual number: 12

End annual number: 12

PR1001 Payment of annual fee

Payment date: 20200831

Start annual number: 13

End annual number: 13

PR1001 Payment of annual fee

Payment date: 20210825

Start annual number: 14

End annual number: 14

PR1001 Payment of annual fee

Payment date: 20220824

Start annual number: 15

End annual number: 15

PR1001 Payment of annual fee

Payment date: 20240823

Start annual number: 17

End annual number: 17