KR20110066697A - 어드레스 맵핑 테이블 관리 방법 및 그것을 사용하는 메모리 장치 - Google Patents

어드레스 맵핑 테이블 관리 방법 및 그것을 사용하는 메모리 장치 Download PDF

Info

Publication number
KR20110066697A
KR20110066697A KR1020090123446A KR20090123446A KR20110066697A KR 20110066697 A KR20110066697 A KR 20110066697A KR 1020090123446 A KR1020090123446 A KR 1020090123446A KR 20090123446 A KR20090123446 A KR 20090123446A KR 20110066697 A KR20110066697 A KR 20110066697A
Authority
KR
South Korea
Prior art keywords
physical address
address
mapping table
mapped
translation
Prior art date
Application number
KR1020090123446A
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 KR1020090123446A priority Critical patent/KR20110066697A/ko
Priority to US12/946,893 priority patent/US20110145485A1/en
Publication of KR20110066697A publication Critical patent/KR20110066697A/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

Landscapes

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

Abstract

본 발명은 어드레스 맵핑 테이블 관리 방법에 관한 것이다. 본 발명에 따른 어드레스 맵핑 테이블 관리 방법에 있어서, 주소 변환 시에 참조되는 어드레스 맵핑 테이블은 어레이들로 구성된다. 상기 어레이들은 각각의 논리 주소에 할당되고, 상기 논리 주소를 맵핑하는 물리 주소가 저장된다. 상기 논리 주소에 맵핑되는 상기 물리 주소가 변경되는 경우, 상기 어드레스 맵핑 테이블에는 변경되기 전의 물리 주소와 변경될 물리 주소의 차이값이 저장된다. 상기 논리 주소를 상기 물리 주소로 맵핑 시에, 상기 맵핑되는 물리 주소는 상기 논리 주소와 상기 논리 주소에 할당된 상기 어레이들에 저장된 값을 모두 더하여 계산된다. 본 발명의 실시 예에 따른 어드레스 맵핑 테이블 관리 방법에 따르면, 어드레스 맵핑 테이블의 소거 횟수를 줄이도록 어드레스 맵핑 테이블을 구현함으로써 어드레스 맵핑 테이블이 저장된 메모리 장치의 수명을 연장시키고, 메모리 시스템의 성능을 향상시킬 수 있다.
불휘발성 메모리 장치, 웨어-레벨링, 어드레스 맵핑 테이블, 주소 변환

Description

어드레스 맵핑 테이블 관리 방법 및 그것을 사용하는 메모리 장치{METHOD FOR MANAGING ADDRESS MAPPING TABLE AND A MEMORY DEVICE USING THE METHOD}
본 발명은 메모리 장치에 관한 것으로, 더욱 상세하게는 메모리 장치의 어드레스 맵핑 테이블 관리 방법에 관한 것이다.
일반적으로 불휘발성 메모리 장치란, 전기적으로 데이터의 소거(Erase) 및 저장(Program)이 가능하고 전원이 차단되어도 데이터의 보존이 가능한 장치이다. 불휘발성 메모리 장치들은 다양한 형태의 메모리 셀 트랜지스터를 포함하며, 메모리 셀 트랜지스터의 구조에 따라 플래시 메모리 장치, 가변 저항 메모리 장치 등을 포함한다.
플래시 메모리 장치는 셀 어레이 구조에 따라 크게 노어(NOR) 플래시 메모리와 낸드(NAND) 플래시 메모리로 구분된다. 노어 플래시 메모리는 메모리 셀 트렌지스터들이 각각 독립적으로 비트 라인(bit line)과 워드 라인(word line)에 연결되는 구조를 갖는다. 따라서, 노어 플래시 메모리는 우수한 랜덤 액세스(random access) 시간 특성을 갖는다. 낸드 플래시 메모리는 복수의 메모리 셀 트렌지스터들이 직렬로 연결된다. 이러한 구조를 셀 스트링(string) 구조라고 하며, 셀 스트 링당 한 개의 비트 라인 컨택(contact)을 필요로 한다. 따라서, 낸드 플래시 메모리는 집적도면에서 우수한 특성을 갖는다.
플래시 메모리 사용자는 데이터를 관리하기 위하여 일반적으로 응용 프로그램(applicationi program), 파일 시스템(file system), 그리고 메모리 컨트롤러(memory controller) 등을 거쳐 플래시 메모리에 접근한다. 플래시 메모리는 데이터 오버라이트(data overwrite)를 수행할 수 없다. 따라서, 메모리 컨트롤러는 데이터를 쓰기(program) 위해서 소거(erase) 동작을 우선 실행한다. 플래시 메모리는 쓰기 또는 소거 동작이 행해질 수 있는 수명이 정해져 있다. 따라서, 메모리 컨트롤러는 플래시 메모리의 셀 영역이 균등하게 사용되도록 웨어-레벨링(wear-leveling) 기법을 사용한다.
파일 시스템이 플래시 메모리 장치에 접근하는 경우, 파일 시스템은 논리 주소(logical address)를 메모리 컨트롤러에 제공한다. 메모리 컨트롤러는 파일 시스템에서 제공된 논리 주소를 플래시 메모리의 물리 주소(physical address)로 변환(transfer)한다. 메모리 컨트롤러는 주소 변환을 위하여 주소 변환 데이터를 관리하며, 이러한 주소 변환 데이터를 어드레스 맵핑 테이블(address mapping table)이라 한다. 플래시 메모리 내부적으로 웨어-레벨링 기법을 적용하는 경우, 플래시 메모리에 요청되는 메모리 셀의 주소를 실제 동작하는 메모리 셀로 맵핑하기 위하여 플래시 메모리는 어드레스 맵핑 테이블을 관리할 수 있다.
본 발명의 목적은 어드레스 맵핑 테이블의 관리 방법 및 그것을 사용하는 메모리 장치를 제공하는 데 있다.
본 발명의 실시 예에 따른 불휘발성 메모리 장치의 어드레스 맵핑 테이블 관리 방법은, 물리 주소에 맵핑되는 변환 물리 주소의 변경 여부를 판단하는 단계; 상기 물리 주소에 맵핑되는 변환 물리 주소가 변경되는 경우에, 상기 물리 주소에 맵핑되어있는 변경 전의 변환 물리 주소를 기준으로 이동되어야 하는 주소의 이동 양을 상기 맵핑 테이블에 저장하는 단계; 및 상기 물리 주소에 변경된 변환 물리 주소를 맵핑하는 단계를 포함한다.
실시 예에 있어서, 물리 주소에 맵핑되는 변환 물리 주소의 변경 여부는 웨어-레벨링 동작에 따라 판별될 수 있다.
실시 예에 있어서, 상기 저장하는 단계는 상기 변경된 변환 물리 주소가 저장될 맵핑 테이블의 여유 공간을 확인하는 단계를 포함하되, 상기 맵핑 테이블에 상기 변경된 변환 물리 주소가 저장될 여유 공간이 있는 경우에 상기 이동 양이 상기 맵핑 테이블에 저장된다.
실시 예에 있어서, 상기 여유 공간이 없는 경우에, 상기 맵핑 테이블을 임시로 저장하는 단계; 상기 맵핑 테이블이 저장된 저장 영역을 소거하는 단계; 상기 맵핑 테이블을 갱신하는 단계; 및 상기 갱신된 맵핑 테이블을 상기 소거된 저장 영역에 저장하는 단계를 더 포함한다.
실시 예에 있어서, 상기 이동 양은 증가하는 값인 것을 특징으로 한다.
실시 예에 있어서, 상기 변환 물리 주소는 환형 큐 방식으로 관리되되, 상기 변경 전의 변환 물리 주소가 상기 변경된 변환 물리 주소보다 큰 경우, 상기 주소의 이동 양은 상기 변환 물리 주소의 마지막 주소와 상기 변경된 변환 물리 주소의 주소 차와 상기 변경된 변환 물리 주소와 상기 변환 물리 주소의 시작 주소의 차를 합한 값으로 결정된다.
실시 예에 있어서, 상기 맵핑 테이블은 어레이로 구성되는 것을 특징으로 한다.
실시 예에 있어서, 상기 이동 양은 상기 어레이에 순차적으로 저장된다.
실시 예에 있어서, 물리 주소에 최초로 맵핑된 변환 물리 주소와 상기 맵핑 테이블에 저장된 이동 양을 더한 결과 값에 따라 상기 물리 주소에 변경된 변환 물리 주소가 맵핑된다.
실시 예에 있어서, 상기 최초로 맵핑된 변환 물리 주소는 상기 물리 주소와 동일한 것을 특징으로 한다.
실시 예에 있어서, 상기 변환 물리 주소는 환형 큐 방식으로 관리되되,
상기 결과 값이 상기 변환 물리 주소의 마지막 주소보다 큰 경우, 상기 변환
물리 주소의 시작 주소부터 남은 이동 양 만큼 더 이동되어 맵핑된다.
본 발명의 다른 실시 예에 따른 메모리 장치는, 데이터를 저장하기 위한 제 1 메모리 셀 어레이; 웨어-레벨을 관리하기 위한 웨어-레벨링 제어부; 어드레스 맵핑 테이블을 저장하기 위한 제 2 메모리 셀 어레이; 및 상기 제 1 메모리 셀 어레이의 물리 주소에 맵핑되는 변환 물리 주소가 변경되는 경우, 상기 물리 주소에 맵 핑되어있는 변경 전의 변환 물리 주소를 기준으로 이동되어야 하는 주소의 이동 양을 상기 어드레스 맵핑 테이블에 저장하고, 상기 어드레스 맵핑 테이블을 참조하여 상기 물리 주소를 상기 변경된 변환 물리 주소로 맵핑하는 메모리 제어부를 포함한다.
실시 예에 있어서, 상기 웨어-레벨링 제어부는 상기 제 1 메모리 셀 어레이의 웨어-레벨을 관리한다.
실시 예에 있어서, 상기 물리 주소에 맵핑되는 변환 물리 주소는 상기 웨어-레벨링 제어부로부터 제공되는 웨어-레벨 정보에 따라 변경된다.
실시 예에 있어서, 상기 메모리 제어부의 제어에 따라 상기 물리 주소에 최초로 맵핑된 변환 물리 주소와 상기 맵핑 테이블에 저장된 상기 이동 양을 더하기 위한 가산기를 더 포함하되, 상기 가산기의 덧셈 결과에 따라 상기 물리 주소가 맵핑된다.
실시 예에 있어서, 상기 가산기는 가산 연산 중에 오버플로우가 발생되면 초기화되어 남은 가산 연산을 계속 실행한다.
실시 예에 있어서, 상기 제 1 및 제 2 메모리 셀 어레이들은 부유 게이트를 포함하는 메모리 셀 트랜지스터들로 구성되되, 상기 메모리 셀 트랜지스터들이 각각 독립적으로 비트 라인과 워드 라인에 연결된다.
실시 예에 있어서, 상기 메모리 제어부는 상기 제 2 메모리 셀 어레이를 감추어진 영역으로 관리하여 상기 메모리 제어기가 접근하지 못하도록 제어한다.
실시 예에 있어서, 상기 제 1 및 제 2 메모리 셀 어레이들에 저장된 데이터 를 읽어내고, 상기 제 1 및 제 2 메모리 셀 어레이들로 데이터를 저장하도록 구성된 적어도 하나의 데이터 입출력 회로를 더 포함한다.
실시 예에 있어서, 상기 제 1 메모리 셀 어레이에 저장된 데이터를 읽어내고, 상기 제 1 메모리 셀 어레이로 데이터를 저장하도록 구성된 제 1 데이터 입출력 회로와 상기 제 2 메모리 셀 어레이에 저장된 데이터를 읽어내고, 상기 제 2 메모리 셀 어레이로 데이터를 저장하도록 구성된 제 2 데이터 입출력 회로를 더 포함한다.
본 발명의 실시 예에 따르면, 어드레스 맵핑 테이블이 저장된 메모리 장치의 소거 횟수를 줄이도록 어드레스 맵핑 테이블을 관리함으로써, 어드레스 맵핑 테이블이 저장된 메모리 장치의 수명을 연장시키고 메모리 장치의 성능을 향상시킬 수 있다.
본 발명의 이점 및 특징, 그리고 그것을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 통해 설명될 것이다. 그러나 본 발명은 여기에서 설명되는 실시 예들에 한정되지 않고 다른 형태로 구체화될 수도 있다. 단지, 본 실시 예들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여 제공되는 것이다.
도면들에 있어서, 본 발명의 실시 예들은 도시된 특정 형태로 제한되는 것이 아니며 명확성을 기하기 위하여 과장된 것이다. 또한 도면들과 명세서 전체에 걸쳐서 동일한 참조 번호로 표시된 부분들은 동일한 구성요소를 나타낸다.
본 명세서에서 특정한 용어들이 사용되었으나. 이는 본 발명을 설명하기 위한 목적에서 사용된 것이며, 의미 한정이나 특허 청구 범위에 기재된 본 발명의 권리 범위를 제한하기 위하여 사용된 것은 아니다.
본 명세서에서 ‘및/또는’이란 표현은 전후에 나열된 구성요소들 중 적어도 하나를 포함하는 의미로 사용된다. 또한, ‘연결되는/결합되는’이란 표현은 다른 구성요소와 직접적으로 연결되거나 다른 구성요소를 통해 간접적으로 연결되는 것을 포함하는 의미로 사용된다.
본 명세서에서 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 또한, 명세서에서 사용되는 ‘포함한다’ 또는 ‘포함하는’으로 언급된 구성요소, 단계, 동작 및 소자는 하나 이상의 다른 구성요소, 단계, 동작 및 소자의 존재 또는 추가를 의미한다.
이하, 도면들을 참조하여 본 발명의 실시 예에 대해 상세히 설명하기로 한다.
도 1은 본 발명의 제 1 실시 예에 따른 어드레스 맵핑 테이블의 관리 방법을 보여주는 도면이다.
내부적으로 웨어-레벨링 기법을 적용하는 불휘발성 메모리 장치에 있어서, 메모리 컨트롤러로부터 불휘발성 메모리 장치에 제공된 주소를 물리 주소(physical address) 그리고 맵핑 테이블을 참조하여 맵핑된 주소를 변환된 물리 주 소(tranlated physical address)라고 정의한다. 내부적으로 웨어-레벨링(wear-leveling) 기법을 적용하는 불휘발성 메모리 장치는 제공된 물리 주소를 실제 동작되는 물리 주소로 맵핑하기 위하여 내부적으로 맵핑 테이블을 관리한다. 예를 들면, 메모리 컨트롤러는 불휘발성 메모리 장치에 접근하기 위하여 명령과 주소를 제공한다. 불휘발성 메모리 장치는 내부적으로 웨어-레벨링 기법을 수행하고 있기 때문에, 내부 맵핑 테이블을 참조하여 메모리 컨트롤러로부터 제공된 물리 주소를 실제 동작되는 메모리 셀의 주소로 맵핑(또는 변환)한다. 후술되는 본 발명의 실시 예에 있어서, 내부적으로 웨어-레벨링 기법이 수행되는 불휘발성 메모리 장치의 맵핑 테이블을 관리하는 방법이 예시되어 설명될 것이다.
도 1을 참조하면, 메모리 컨트롤러로(도시되지 않음)부터 제공된 물리 주소가 맵핑 테이블을 통해 실제 동작되는 물리 주소로 맵핑되는 과정이 도시되어 있다. 맵핑 테이블은 제공된 물리 주소 각각에 할당되는 어레이(array)로 구성된다. 예를 들면, 제공된 물리 주소 각각에 대하여 맵핑되는 물리 주소가 처음 변경되었을 때 변경되는 값을 저장하기 위한 제 1 어레이(1st array), 맵핑되는 물리 주소가 두 번째 변경되었을 때 변경되는 값을 저장하기 위한 제 2 어레이(2nd array), 그리고 맵핑되는 물리 주소가 세번 째 변경되었을 때 변경되는 값을 저장하기 위한 제 3 어레이(3rd array)로 구성될 수 있다. 맵핑 테이블이 어레이로 구성되면, 어레이의 크기만큼 변경되는 주소를 저장할 수 있기 때문에, 맵핑 테이블이 저장된 메모리 장치의 소거 횟수가 감소할 수 있다.
본 발명의 실시 예에 따르면, 변경되기 전의 물리 주소와 변경될 물리 주소 의 차이값이 맵핑 테이블에 저장된다. 즉, 변경되기 전의 물리 주소를 기준으로 주소가 얼마만큼 이동되어야 하는지를 나타내는 주소의 이동(shift) 양이 맵핑 테이블에 저장된다. 여기에서 이동 양은 증가하는 값이거나 감소하는 값이 될 수 있다. 본 발명의 실시 예에 있어서 이동 양은 증가하는 값이 될 것이다. 물리 주소와 변환된 물리 주소는 일대일로 맵핑되며, 초기에는 물리 주소와 변환된 물리 주소가 일치하도록 맵핑된다. 예를 들면, 물리 주소0(P0)은 변환된 물리 주소0(TP0)에 맵핑되고, 물리 주소1(P1)은 물리 주소1(TP1)에 맵핑되며, 나머지 물리 주소들(P2~7)과 변환된 물리 주소들(TP2~7)은 동일한 방법으로 맵핑된다.
도 1을 다시 참조하여 물리 주소0(P0)에 맵핑 되는 변환된 물리 주소가 변경(change)되는 예를 들면, 물리 주소0(P0)은 초기에 변환된 물리 주소0(TP0)에 맵핑된다. 물리 주소0(P0)에 맵핑 되는 물리 주소가 변환된 물리 주소1(TP1)로 변경되면, 변경되기 전의 변환된 물리 주소(TP0)를 기준으로 이동되어야 하는 주소의 이동 양이 물리 주소0(P0)에 할당된 제 1 어레이(1st array)에 저장된다. 물리 주소0(P0)에 맵핑되는 주소가 변환된 물리 주소0(TP0)에서 변환된 물리 주소1(TP1)으로 이동되므로, 물리 주소0(P0)에 할당된 제 1 어레이(1st array)에 저장되는 주소의 이동 양은 '1'이 된다. 따라서, 메모리 제어부(도시되지 않음)가 맵핑 테이블을 참조하여 물리 주소0(P0)에 변환된 물리 주소를 맵핑할 때, 초기 물리 주소 값 '0'에 이동 양 '1'을 더한 값 '1'이 물리 주소0(P0)에 맵핑되는 변환된 물리 주소가 된다.
물리 주소와 변환된 물리 주소는 일대일로 맵핑되기 때문에, 물리 주소0(P0) 에 맵핑되었던 변환된 물리 주소0(TP0)은 물리 주소1(P1)에 맵핑된다. 즉, 물리 주소1(P1)은 변환된 물리 주소0(TP0)에 맵핑된다. 변경되기 전의 변환된 물리 주소(TP1)를 기준으로 이동되어야 하는 이동양이 물리 주소1(P1)에 할당된 제 1 어레이(1st array)에 저장된다. 본 발명의 실시 예에 따르면, 물리 주소에 맵핑되는 변환된 물리 주소는 환형 큐(circular queue) 방식으로 관리된다. 또한, 이동 양은 감소하는 값이 아닌 증가하는 값이기 때문에, 이동 양은 '7'이 된다. 따라서, 메모리 제어부(도시되지 않음)가 맵핑 테이블을 참조하여 물리 주소1(P1)에 변환된 물리 주소를 맵핑할 때, 초기 물리 주소 값 '1'에 이동 양 '7'을 더한 값 '8'이 물리 주소1(P1)에 맵핑되는 변환된 물리 주소가 된다. 변환된 물리 주소는 환형 큐 방식으로 관리되므로, 물리 주소1(P1)에 맵핑되는 주소는 변환된 물리 주소0(TP0)이 된다. 이러한 맵핑 테이블 관리 방법은 후술되는 도 6a 내지 도 6b를 통하여 상세히 설명된다.
도 2는 본 발명의 실시 예에 따른 불휘발성 메모리 장치의 주소 변환 단계를 보여주는 도면이다.
도 2를 참조하면, 호스트(host), 메모리 제어기(memory controller), 그리고 메모리 제어부(memory control logic)를 거쳐 메모리 셀에 접근하기 위한 주소가 변환되는 단계가 도시되어 있다.
호스트의 파일 시스템이 불휘발성 메모리 장치에 접근할 때, 파일 시스템은 논리 주소(logical address)를 메모리 제어기에 제공한다. 메모리 제어기는 파일 시스템에서 제공된 논리 주소를 불휘발성 메모리 장치의 물리 주소(physical address)로 맵핑(또는 변환)한다. 메모리 제어기는 논리 주소를 물리 주소로 맵핑하기 위하여 논리-물리 어드레스 맵핑 테이블(logical to physical address mapping table)을 참조할 수 있다. 메모리 제어기는 불휘발성 메모리 장치에 물리 주소를 제공한다.
내부적으로 웨어-레벨링 기법을 적용하는 불휘발성 메모리 장치에 있어서, 불휘발성 메모리 장치는 제공된 물리 주소를 실제 동작되는 물리 주소로 맵핑한다. 즉, 메모리 제어부는 메모리 제어기에서 제공된 물리 주소를 변환된 물리 주소(translated physical address)로 변환한다. 메모리 제어부는 물리 주소를 변환된 물리 주소로 맵핑하기 위하여 물리-물리 어드레스 맵핑 테이블(physical to physical address mapping table)을 참조한다.
도 3은 본 발명의 실시 예에 따른 불휘발성 메모리 장치를 보여주는 블럭도이다. 본 발명의 실시 예에 따른 불휘발성 메모리 장치는 플래시 메모리로 구성될 것이다. 하지만, 불휘발성 메모리 장치가 플래시 메모리에 국한되지 않음은 잘 이해될 것이다. 예를 들면, 불휘발성 메모리 장치는 PRAM(Phase-change RAM), FRAM(Ferroelectric RAM), MRAM(Magnetic RAM) 등과 같은 불휘발성 메모리 장치들 중 하나로 구성될 수 있다.
도 3을 참조하면, 플래시 메모리(100)는 제 1 메모리 셀 어레이(1st memory cell array, 10), 데이터 입출력 회로(data input/output circuit, 20), 메모리 제어부(memory control logic, 30), 웨어-레벨링 제어부(wear-leveling control logic, 40), 제 2 메모리 셀 어레이(2nd memory cell array, 50), 그리고 가산 기(adder, 60)를 포함한다.
제 1 메모리 셀 어레이(10)는 데이터를 저장하기 위한 메모리 셀들로 구성된다. 각각의 메모리 셀은 싱글 비트 데이터(single bit data)를 저장할 수 있고, 멀티 비트 데이터(multi bit data)를 저장할 수도 있다. 제 1 메모리 셀 어레이(10)는 불휘발성 메모리 셀들로 구성된다. 예를 들면, 제 1 메모리 셀 어레이(10)는 부유 게이트 또는 전하 트랩 층 등과 같은 전하 저장 층을 포함하는 플래시 메모리 셀들로 구현될 수 있다. 데이터 입출력 회로(20)는 메모리 제어부(30)의 제어에 따라 제 1 메모리 셀 어레이(10)에 저장된 데이터를 읽어 내거나, 제 1 메모리 셀 어레이(10)로 데이터를 저장한다.
메모리 제어부(30)는 메모리 제어기(도시되지 않음)에서 제공되는 커맨드(command), 어드레스(address) 그리고 제어 신호(control signal)에 응답하여 플래시 메모리(100)의 읽기, 쓰기, 그리고 소거 동작을 제어한다. 본 발명의 실시 예에 따르면, 메모리 제어부(30)는 플래시 메모리(100) 내부적으로 웨어-레벨링 기법이 수행되도록 웨어-레벨링 제어부(40)를 제어한다. 메모리 제어부(30)는 웨어-레벨링 제어부(40)에서 제공되는 웨어-레벨 정보를 바탕으로 맵핑 테이블을 관리한다. 또한, 메모리 제어부(30)는 맵핑 테이블을 참조하여, 메모리 제어기로부터 제공되는 주소를 실제 동작되는 메모리 셀의 주소로 맵핑한다. 주소 맵핑 시에, 메모리 제어부(30)는 가산기(60)를 이용하여 맵핑되는 주소를 연산한다.
웨어-레벨링 제어부(40)는 메모리 제어부(30)의 제어에 따라 플래시 메모리(100)의 웨어-레벨링 동작을 수행한다. 웨어-레벨링 제어부(40)에 의해서 웨어- 레벨링 동작이 수행되면, 마모도가 높은 메모리 셀(또는, 섹터, 블럭 등)이 마모도가 낮은 메모리 셀(또는, 섹터, 블럭 등)로 교체되도록 메모리 제어부(30)에 웨어-레벨 정보(예를 들면, 맵핑 정보)를 제공한다. 제공된 맵핑 정보는 메모리 제어부(30)에 의해 맵핑 테이블로 구성된다. 맵핑 테이블은 제 2 메모리 셀 어레이(50)에 저장된다. 웨어-레벨링 제어부(40)는 메모리 제어부(30)와 하드웨어적으로 분리되어 구성된다. 즉, 웨어-레벨링 제어부(40)는 플래시 메모리(100)의 웨어-레벨링 동작을 처리하기 위한 독립적인 컨트롤러로 구성된다. 웨어-레벨링 제어부(40)는 메모리 제어부(30)에 포함될 수 있다.
제 2 메모리 셀 어레이(50)는 맵핑 테이블을 저장하기 위한 메모리 셀들로 구성된다. 각각의 메모리 셀은 싱글 비트 데이터(single bit data)를 저장할 수 있고, 멀티 비트 데이터(multi bit data)를 저장할 수도 있다. 본 발명의 실시 예에 따르면, 제 2 메모리 셀 어레이(50)는 제 1 메모리 셀 어레이(10)와 분리되어 구성될 것이다. 하지만, 제 2 메모리 셀 어레이(50)는 제 1 메모리 셀 어레이(10)의 일부 영역으로 구성될 수 있음은 잘 이해될 것이다. 제 2 메모리 셀 어레이(50)는 메모리 제어기로부터 제공되는 데이터를 저장하기 위한 영역이 아니기 때문에, 감춰진(hidden) 영역으로 관리된다. 데이터 입출력 회로(20)는 메모리 제어부(30)의 제어에 따라 제 2 메모리 셀 어레이(50)에 저장된 데이터를 읽어 내거나, 제 2 메모리 셀 어레이(50)로 데이터를 저장한다. 반면, 플래시 메모리(100)는 제 2 메모리 셀 어레이(50)에 저장된 데이터를 읽어 내거나, 제 2 메모리 셀 어레이(50)로 데이터를 저장하기 위한 또 다른 데이터 입출력 회로를 포함할 수 있다.
제 2 메모리 셀 어레이(50)는 전원이 차단된 후에도 맵핑 테이블을 저장하기 위하여, 불휘발성 메모리 셀들로 구성된다. 예를 들면, 제 2 메모리 셀 어레이(50)는 부유 게이트 또는 전하 트랩 층 등과 같은 전하 저장 층을 포함하는 플래시 메모리 셀들로 구현될 수 있다. 제 2 메모리 셀 어레이(50)가 플래시 메모리 셀들로 구성되는 경우, 제 2 메모리 셀 어레이(50)는 구조적인 특징으로 인해 웰(well)을 공유하는 단위(예를 들면, 블럭(block) 단위)로 소거 동작이 수행된다. 또한, 데이터가 저장된 메모리 셀에 다시 쓰기 동작이 수행되는 경우 소거 동작이 선행되어야 한다. 웨어-레벨링 동작이 수행되면 될 수록 맵핑 테이블은 자주 갱신되고, 이는 제 2 메모리 셀 어레이(50)에 포함된 메모리 셀들을 열화 시키게 된다. 따라서, 맵핑 테이블이 자주 갱신되지 않도록 관리 되어야 한다.
도 4a 내지 도 4b는 본 발명의 실시 예에 따른 제 2 메모리 셀의 열화 과정을 보여주는 도면이다.
도 4a 내지 도 4b를 참조하면, 제 2 메모리 어레이(50)에 포함된 메모리 셀은 전하 저장 층이 부유 게이트로 구성된다. 예를 들면, 활성 영역(active region) 상에 형성되는 터널 절연막(tunnel oxide), 데이터가 저장되는 플로팅 게이트(floating gate), 게이트 층간 절연막(inter-gate dielectric layer), 그리고 플로팅 게이트를 제어하는 컨트롤 게이트(control gate)가 차례로 적층될 수 있다.
쓰기 동작이 수행되면, 핫 일렉트론(hot electron) 또는 F-N 터널링(Fowler-Nordheim tunneling) 메커니즘에 의해 전자들이 플로팅 게이트에 저장된다. 소거 동작이 수행되면, F-N 터널링 메커니즘에 의해 전자들이 플로팅 게이트에서 빠져나 오게 된다. 쓰기 및 소거 동작이 수행될 때, 전자들은 터널 절연막을 통과하여 이동하게 된다. 쓰기 및 소거 동작이 자주 발생하게 되면, 메모리 셀의 터널 절연막이 급속히 열화된다. 예를 들면, 도 3b에 도시된 바와 같이 전자가 터널 절연막에 트랩(trap)될 수 있다. 터널 절연막이 열화되면, 제 2 메모리 어레이(50)에 포함된 메모리 셀의 특성이 저하된다. 이에 따라 제 2 메모리 어레이(50)에 저장된 맵핑 테이블의 손실이 발생할 수 있다. 본 발명의 실시 예에 따른 메모리 제어부(30)는 제 2 메모리 어레이(50)의 메모리 셀들이 열화되지 않도록 맵핑 테이블을 관리한다.
도 5는 본 발명의 제 1 실시 예에 따른 어드레스 맵핑 테이블의 관리 방법을 보여주는 도면이다.
도 3 및 도 5를 참조하면, 8개의 물리 주소들(P0~7), 각각의 물리 주소들에 맵핑되는 변환된 물리 주소들(TP0~7), 그리고 물리 주소들과 변환된 물리 주소들을 맵핑하는 맵핑 테이블이 도시되어 있다. 물리 주소와 변환된 물리 주소는 일대일로 맵핑되도록 설정된다. 초기에는 물리 주소와 변환된 물리 주소가 일치하도록 맵핑된다. 즉, 물리 주소0(P0)은 변환된 물리 주소0(TP0)에 맵핑되고, 물리 주소1(P1)은 변환된 물리 주소1(TP1)에 맵핑되며, 나머지 물리 주소들(P2~7)과 변환된 물리 주소들(TP2~7)은 동일한 방법으로 맵핑된다. 따라서, 맵핑 테이블에는 물리 주소와 일치하는 변환된 물리 주소가 저장된다.
설명의 간략화를 위하여, 물리 주소0(P0) 내지 물리 주소3(P3)에 맵핑되는 변환된 물리 주소들이 변경되는 예가 설명될 것이다. 물리 주소들(P0~3) 중 어느 하나라도 맵핑되는 변환된 물리 주소가 변경되면, 맵핑 테이블은 임시 저장 영역(예를 들면, 레지스터 또는 제 1 메모리 영역)에 저장될 것이다. 맵핑 테이블이 임시로 저장된 후, 맵핑 테이블이 저장된 제 2 메모리 셀 어레이(50)가 메모리 제어부(30)의 제어에 따라 삭제된다. 그리고 임시로 저장된 맵핑 테이블은 메모리 제어부(30)에 의해서 갱신(update)된다. 예를 들면, 맵핑 테이블의 물리 주소0(P0)에 할당된 영역은 변환된 물리 주소 ‘3’으로 갱신되고, 물리 주소1(P1)에 할당된 영역은 변환된 물리 주소 ‘0’으로 갱신되고, 물리 주소2(P2)에 할당된 영역은 변환된 물리 주소 ‘1’로 갱신되고, 물리 주소3(P3)에 할당된 영역은 변환된 물리 주소 ‘2’로 갱신된다. 갱신된 맵핑 테이블은 제 2 메모리 셀 어레이(50)에 다시 저장된다. 다시 말해서, 물리 주소들 중 어느 하나라도 맵핑되는 변환된 물리 주소가 변경되면, 맵핑 테이블이 저장된 제 2 메모리 셀 어레이(50)는 소거 동작과 쓰기 동작을 수반한다.
도 6a 내지 도 6b는 본 발명의 제 2 실시 예에 따른 맵핑 테이블의 관리 방법을 보여주는 도면이다.
도 6a를 참조하면, 설명의 간략화를 위하여 8개의 물리 주소들(P0~7)과 각각의 물리 주소에 맵핑되는 변환된 물리 주소들(TP0~7)이 예로써 설명될 것이다. 맵핑 테이블은 각각의 물리 주소에 할당되는 어레이로 구성된다. 예를 들면, 각각의 물리 주소에 대하여 맵핑되는 변환된 물리 주소가 처음 변경되었을 때 변경되는 값을 저장하기 위한 제 1 어레이(1st array), 맵핑되는 변환된 물리 주소가 두 번째 변경되었을 때 변경되는 값을 저장하기 위한 제 2 어레이(2nd array), 그리고 맵핑 되는 변환된 물리 주소가 세 번째 변경되었을 때 변경되는 값을 저장하기 위한 제 3 어레이(3rd array)로 구성될 수 있다.
본 발명의 실시 예에 따르면, 임의의 물리 주소에 맵핑되는 변환된 물리 주소가 경된 경우, 변경되기 전의 변환된 물리 주소를 기준으로 주소가 얼마만큼 이동되어야 하는지를 나타내는 주소의 이동(shift) 양이 맵핑 테이블에 저장된다. 물리 주소와 변환된 물리 주소는 일대일로 맵핑되며, 초기에는 물리 주소와 변환된 물리 주소가 일치하도록 맵핑된다. 또한, 물리 주소에 맵핑되는 변환된 물리 주소는 환형 큐(circular queue) 방식으로 관리된다.
물리 주소0(P0)에 맵핑되는 변환된 물리 주소가 변환된 물리 주소7(TP7)로 변경되면, 변경되기 전의 변환된 물리 주소(TP0)를 기준으로 이동되어야 하는 주소의 이동 양 ‘7’이 물리 주소0(P0)에 할당된 제 1 어레이(1st arrary)에 저장된다. 물리 주소와 변환된 물리 주소는 일대일로 맵핑되기 때문에, 물리 주소0(P0)에 맵핑되었던 변환된 물리 주소0(TP0)은 물리 주소7(P7)에 맵핑된다. 물리 주소에 맵핑되는 변환된 물리 주소는 환형 큐(circular queue) 방식으로 관리되고, 주소의 이동 양은 감소하는 값이 아닌 증가하는 값이다. 따라서, 변경되기 전의 변환된 물리 주소(TP7)을 기준으로 이동되어야 하는 주소의 이동 양‘1’이 물리 주소7(P7)에 할당된 제 1 어레이(1st array)에 저장된다.
물리 주소1(P1)에 맵핑되는 변환된 물리 주소가 변환된 물리 주소6(TP6)으로 변경되면, 변경되기 전의 변환된 물리 주소(TP1)를 기준으로 이동되어야 하는 주소의 이동 양‘5’가 물리 주소1(P1)에 할당된 제 1 어레이(1st array)에 저장된다. 이 경우, 물리 주소 각각에 할당된 어레이가 존재하기 때문에, 맵핑 테이블이 저장된 메모리 영역은 소거 동작이 발생되지 않는다. 물리 주소와 변환된 물리 주소는 일대일로 맵핑되기 때문에, 물리 주소1(P1)에 맵핑되었던 변환된 물리 주소1(TP1)은 물리 주소6(P6)에 맵핑된다. 따라서 변경되기 전의 변환된 물리 주소(TP6)을 기준으로 이동되어야 하는 주소의 이동 양‘3’이 물리 주소6(P6)에 할당된 제 1 어레이(1st array)에 저장된다.
물리 주소1(P1)에 맵핑되는 변환된 물리 주소가 또 다시 변경되어 변환된 물리 주소3(TP3)으로 변경되면, 변경되기 전의 변환된 물리 주소(TP6)을 기준으로 이동되어야 하는 이동 양‘5’가 물리 주소1(P1)에 할당된 제 2 어레이(2nd array)에 저장된다. 이 경우, 변환된 물리 주소가 두 번째 변경되었으므로 제 2 어레이(2nd array)에 저장됨은 잘 이해될 것이다. 물리 주소와 변환된 물리 주소는 일대일로 맵핑되기 때문에, 물리 주소1(P1)에 맵핑되었던 변환된 물리 주소6(TP6)은 물리 주소3(P3)에 맵핑된다. 따라서 변경되기 전의 변환된 물리 주소(TP3)을 기준으로 이동되어야 하는 주소의 이동 양‘3’이 물리 주소3(P3)에 할당된 제 1 어레이(1st array)에 저장된다.
도 6b를 참조하여, 메모리 제어부(도 2의 30 참조)가 물리 주소를 변환된 물리 주소로 맵핑하는 방법이 설명된다. 설명의 간략화를 위하여 물리 주소1(P1)을 맵핑하는 예가 설명될 것이다. 맵핑 동작 시에, 메모리 제어부(도 2의 30 참조)는 맵핑 테이블을 참조하고, 가산기(60)를 제어하여 맵핑 동작을 수행한다. 가산기(60)는 덧셈 연산 시에, 오버플로우(overflow)가 발생되면 초기화되어 남은 덧셈 연산이 다시 수행 되도록 구성된다. 또한, 맵핑 동작 시에, 메모리 제어부(도 2의 30 참조)는 하기의 수학식 1에 따라 물리 주소를 변환된 물리 주소에 맵핑한다.
변환된 물리 주소=물리 주소(또는, 물리 주소에 맵핑된 초기 변환된 물리 주소)+Σ주소의 이동 양
맵핑 하려고 하는 물리 주소1(P1)의 주소 값은 ‘1’이 된다. 따라서 가산기(60)는 1을 더하는 덧셈 동작이 수행되도록 제어된다. 물리 주소1(P1)에 할당된 제 1 어레이(1st array)에는 이동 양‘5’가 저장되어 있으므로, 가산기(60)는 5를 더하는 덧셈 동작이 수행되도록 제어된다. 물리 주소1(P1)에 할당된 제 2 어레이(2nd array)에는 이동 양‘5’가 저장되어 있다. 마찬가지로, 가산기(60)는 5를 더하는 덧셈 동작이 수행되도록 제어된다. 덧셈 연산 중에 오버플로우가 발생되었기 때문에, 가산기(60)는 초기화되어 남은 덧셈 연산을 수행한다. 가산기(60)의 결과 값은 ‘3’이 되고, 메모리 제어부(도 2의 30)는 물리 주소1(P1)에 변환된 물리 주소3(TP3)을 맵핑한다.
본 발명의 실시 예에 따르면, 물리 주소에 맵핑되는 변환된 물리 주소가 변경되는 경우, 해당 물리 주소에 할당된 맵핑 테이블의 어레이에 변환된 물리 주소의 주소 이동 양이 저장된다. 맵핑 동작 시에, 주소의 이동 양을 더하는 연산으로 해당 물리 주소에 변환된 물리 주소를 맵핑시킨다. 따라서, 메모리 제어부(도 2의 30)는 맵핑 테이블에 저장된 데이터 중에서 어느 데이터가 최종 맵핑 데이터인지 스캔(scan)할 필요가 없다. 또한, 물리 주소에 맵핑되는 변환된 물리 주소가 변경 되면 주소의 이동 양이 각각의 물리 주소에 할당된 맵핑 테이블 어레이에 순차적으로 저장된다. 따라서, 맵핑 테이블이 저장된 메모리 영역의 소거 동작이 감소된다.
도 7은 본 발명의 제 2 실시 예에 따른 어드레스 맵핑 테이블 관리 방법을 보여주는 순서도이다.
도 3 및 도 7을 참조하면, 메모리 제어부(30) 웨어-레벨링 제어부(40)에서 제공된 웨어-레벨 정보를 바탕으로 물리 주소에 맵핑 되는 변환된 물리 주소가 변경되었는 지의 여부를 판단한다(S110 단계). 물리 주소에 맵핑되는 변환된 물리 주소가 변경되는 경우, 메모리 제어부(30)는 맵핑 정보가 변경되는 물리 주소의 맵핑 테이블에 갱신된 맵핑 정보가 저장될 여유 공간이 있는지 판단한다(S120 단계). 갱신된 맵핑 정보가 저장될 여유 공간이 없다면, 메모리 제어부(30)는 맵핑 테이블을 임시 저장 영역(예를 들면, 불휘발성 메모리 장치의 레지스터, 랫치, 제 1 메모리 어레이(10) 등)에 복사하여 임시로 저장한다(S130 단계). 맵핑 테이블이 임시로 저장된 후, 메모리 제어부(30)는 맵핑 테이블이 저장되어 있는 제 2 메모리 어레이(60)를 소거한다(S140 단계). 메모리 제어부(30)는 맵핑 정보를 갱신하고, 갱신된 맵핑 정보를 소거된 제 2 메모리 어레이(60)에 저장한다(S150 단계).
갱신된 맵핑 정보가 저장될 여유 공간이 있는 경우, 메모리 제어부(30)는 맵핑 정보가 변경될 물리 주소 쌍들에 원래 맵핑되어 있던 변환된 물리 주소들을 서로 맞교환 한다(S160 단계). 메모리 제어부(30)는 변경되기 전의 변환된 물리 주소를 기준으로 주소가 얼마만큼 이동되어야 하는지를 나타내는 주소의 이동(shift) 양을 변경될 물리 주소 쌍들 각각의 맵핑 테이블에 저장한다(S170 단계).
도 8은 본 발명의 제 3 실시 예에 따른 불휘발성 메모리 시스템을 보여주는 블럭도이다.
불휘발성 메모리 장치를 저장 매체로 사용하는 메모리 시스템에 있어서, 호스트 시스템(host system)은 메모리 시스템의 데이터를 관리하기 위하여 일반적으로 파일 시스템(file system) 그리고 메모리 제어기(memory controller)를 거쳐 불휘발성 메모리 장치에 접근한다. 파일 시스템이 불휘발성 메모리 장치에 접근할 때, 파일 시스템은 논리 주소(logical address)를 메모리 제어기에 제공한다. 메모리 제어기는 파일 시스템에서 제공된 논리 주소를 불휘발성 메모리 장치의 물리 주소(physical address)로 맵핑(또는 변환)한다. 메모리 제어기는 논리 주소를 물리 주소로 맵핑하기 위하여 어드레스 맵핑 테이블(이하 '맵핑 테이블'이라 칭함)을 참조한다.
도 8을 참조하면, 불휘발성 메모리 시스템(200)은 시스템 버스(system bus, 110), 중앙 처리 장치(central processing unit: CPU, 120), 호스트 인터페이스(host interface, 130), 메모리 제어기(memory controller, 141), 불휘발성 메모리 장치(non-volatile memory devices, 143), 그리고 버퍼 메모리 장치(buffer memroy, 150)를 포함한다.
본 발명의 실시 예에 따른 불휘발성 메모리 장치(143)는 플래시 메모리로 구성될 것이다. 하지만, 불휘발성 메모리 장치(143)가 플래시 메모리에 국한되지 않음은 잘 이해될 것이다. 예를 들면, 불휘발성 메모리 장치는 PRAM(Phase-change RAM), FRAM(Ferroelectric RAM), MRAM(Magnetic RAM) 등과 같은 불휘발성 메모리 장치들 중 하나로 구성될 수 있다. 또한, 불휘발성 메모리 시스템(200)은 복수의 불휘발성 메모리 장치들을 포함할 수 있다.
시스템 버스(110)는 불휘발성 메모리 시스템(200)의 각 구성 요소들 간의 데이터 이동을 위한 통로이다. 호스트 인터페이스(130)는 호스트(host)와 중앙 처리 장치(120) 사이의 데이터 교환을 수행하기 위한 프로토콜(protocol)을 포함할 수 있다. 중앙 처리 장치(120)는 호스트 시스템으로부터 요청된 명령(예를 들면, 데이터의 읽기 또는 쓰기)을 실행하기 위하여 불휘발성 메모리 시스템(200)을 제어한다. 불휘발성 메모리 시스템(200)을 제어하기 위하여, 중앙 처리 장치(120)는 통상적으로 버퍼 메모리(150)에 펌웨어를 임시로 저장하고, 저장된 펌웨어를 실행하여 플래시 메모리(143)에 대한 일련의 읽기 또는 쓰기 명령을 한다. 메모리 제어기(141)는 중앙 처리 장치(120)의 읽기 또는 쓰기 요청에 따라 플래시 메모리(143)를 직접 제어한다.
중앙 처리 장치(120)는 맵핑 테이블을 플래시 메모리(143)에 저장한다. 중앙 처리 장치(120)는 저장된 맵핑 테이블을 버퍼 메모리(150)로 로드(load)하여, 맵핑 동작 시에 로드된 맵핑 테이블을 참조한다. 맵핑 테이블이 갱신되는 경우, 중앙 처리 장치(120)는 버퍼 메모리(150)에 임시로 저장된 맵핑 테이블을 갱신한다. 본 발명의 실시 예에 따르면, 맵핑 테이블 갱신 시에, 중앙 처리 장치(120)는 변경되기 전의 물리 주소를 기준으로 물리 주소가 얼마만큼 이동되어야 하는지를 나타내는 주소의 이동(shift) 양을 맵핑 테이블에 저장한다. 맵핑 동작 시에, 중앙 처리 장치(120)는 저장된 이동 양을 더하는 연산을 수행하여 해당 논리 주소에 물리 주소 를 맵핑시킨다. 전원이 차단되면, 중앙 처리 장치(120)는 버퍼 메모리에(150)에 임시로 저장된 맵핑 테이블을 플래시 메모리(143)로 저장한다.
도 9는 불휘발성 메모리 시스템의 소프트웨어 계층 구조를 보여주는 다이어그램이다.
도 9를 참조하면, 호스트 시스템은 어플리케이션(application, 171) 및 파일 시스템(file system, 172)을 포함하는 소프트웨어 계층을 가지고, 불휘발성 메모리 시스템(200)은 플래시 변환 계층(flash translation layer: FTL, 173)을 포함하는 소프트웨어 계층 및 플래시 메모리(174)를 포함하는 하드웨어 계층을 갖는다.
어플리케이션(171)으로부터 읽기 또는 쓰기 요청을 받은 파일 시스템(172)은 읽기 또는 쓰기 대상인 섹터 주소(sector address)와 해당 명령(command)을 플래시 변환 계층(173)으로 전달한다. 플래시 변환 계층(173)은 전달받은 명령(command)을 플래시 메모리(174)로 전달한다. 또한 플래시 변환 계층(173)은 전달 받은 섹터 주소(sector address)를 플래시 메모리(174)의 주소(memory address)로 변환하여 플래시 메모리(174)로 전달한다. 여기에서, 섹터 주소는 논리 주소(logical address)가 되고, 플래시 메모리(174)의 주소는 물리 주소(physical address)가 된다.
도 10a 및 도 10b는 플래시 변환 계층을 설명하기 위한 블럭도이다.
도 8 및 도 10a를 참조하면, 플래시 메모리(174)가 데이터 오버라이트(data overwrite)를 수행할 수 없기 때문에, 데이터가 저장된 플래시 메모리(174)에 다시 데이터를 쓰기 위해서는 소거 동작이 선행되어야 한다. 또한 플래시 메모리(174)는 쓰기 단위보다 소거 단위가 더 큰 특징을 가지고 있다. 이러한 특징 때문에 플래시 메모리를 제어하기 위하여 파일 시스템(172)과 플래시 메모리(174) 사이에 플래시 변환 계층(173)이 사용된다.
플래시 변환 계층(173)은 상위 계층인 파일 시스템(172)으로부터 임의의 섹터 주소에 대하여 읽기 요청(read sector) 또는 쓰기 요청(write sector)이 들어오면, 플래시 메모리(174)에 제공될 명령으로 변환하는 역할을 한다. 즉, 플래시 메모리(174)가 읽기, 쓰기 또는 소거 동작을 수행할 수 있도록 명령을 변환한다. 또한 플래시 변환 계층(173)은 플래시 메모리(174)의 배드 블럭(bad block)을 관리하고, 각 블럭의 마모도(wear-level)를 관리한다.
도 10b를 참조하면, 플래시 변환 계층(173)은 상위 계층으로부터 전달되는 논리 주소(logical address)를 플래시 메모리의 물리 주소(physical address)로 맵핑(mapping)시키는 역할을 한다. 즉, 플래시 변환 계층(173)은 가상 디스크 상의 논리 주소(logical address)인 섹터 번호(sector number)를 플래시 메모리 상의 물리 주소(physical address)인 블럭 번호(block number), 페이지 번호(page number) 또는 컬럼 번호(column number)로 변환한다. 플래시 변환 계층(173)은 이러한 주소 변환을 위하여 맵핑 테이블을 관리한다.
본 발명의 제 3 실시 예에 따른 불휘발성 메모리 시스템은 도 6a 내지 도 6b에서 상술된 어드레스 맵핑 테이블의 관리 방법을 사용한다. 중앙 처리 장치(도 8의 120 참조)는 맵핑 테이블을 각각의 논리 주소에 할당되는 어레이로 구성한다. 임의의 논리 주소에 맵핑되는 물리 주소가 변경된 경우, 변경되기 전의 물리 주소를 기준으로 물리 주소가 얼마만큼 이동되어야 하는지를 나타내는 주소의 이 동(shift) 양을 맵핑 테이블에 저장한다. 맵핑 동작 시에, 중앙 처리 장치는 맵핑 테이블을 참조하여, 맵핑 하고자하는 논리 주소(또는, 논리 주소에 맵핑된 초기 물리 주소)와 해당 논리 주소의 맵핑 테이블 어레이에 저장된 이동 양들을 더하여 맵핑되는 물리 주소를 계산한다.
도 1은 본 발명의 제 1 실시 예에 따른 어드레스 맵핑 테이블의 관리 방법을 보여주는 도면이다.
도 2는 본 발명의 실시 예에 따른 불휘발성 메모리 장치의 주소 변환 단계를 보여주는 도면이다.
도 3은 본 발명의 실시 예에 따른 불휘발성 메모리 장치를 보여주는 블럭도이다.
도 4a 내지 도 4b는 본 발명의 실시 예에 따른 제 2 메모리 셀의 열화 과정을 보여주는 도면이다.
도 5는 본 발명의 제 1 실시 예에 따른 어드레스 맵핑 테이블의 관리 방법을 보여주는 도면이다.
도 6a 내지 도 6b는 본 발명의 제 2 실시 예에 따른 맵핑 테이블의 관리 방법을 보여주는 도면이다.
도 7은 본 발명의 제 2 실시 예에 따른 어드레스 맵핑 테이블 관리 방법을 보여주는 순서도이다.
도 8은 본 발명의 제 3 실시 예에 따른 불휘발성 메모리 시스템을 보여주는 블럭도이다.
도 9는 불휘발성 메모리 시스템의 소프트웨어 계층 구조를 보여주는 다이어그램이다.
도 10a 및 도 10b는 플래시 변환 계층을 설명하기 위한 블럭도이다.

Claims (10)

  1. 불휘발성 메모리 장치의 어드레스 맵핑 테이블 관리 방법에 있어서:
    물리 주소에 맵핑되는 변환 물리 주소의 변경 여부를 판단하는 단계;
    상기 물리 주소에 맵핑되는 변환 물리 주소가 변경되는 경우에, 상기 물리 주소에 맵핑되어있는 변경 전의 변환 물리 주소를 기준으로 이동되어야 하는 주소의 이동 양을 상기 맵핑 테이블에 저장하는 단계; 및
    상기 물리 주소에 변경된 변환 물리 주소를 맵핑하는 단계를 포함하는 어드레스 맵핑 테이블 관리 방법.
  2. 제 1 항에 있어서,
    물리 주소에 맵핑되는 변환 물리 주소의 변경 여부는 웨어-레벨링 동작에 따라 판별되는 어드레스 맵핑 테이블 관리 방법.
  3. 제 1 항에 있어서,
    상기 변환 물리 주소는 환형 큐 방식으로 관리되되,
    상기 변경 전의 변환 물리 주소가 상기 변경된 변환 물리 주소보다 큰 경우, 상기 주소의 이동 양은 상기 변환 물리 주소의 마지막 주소와 상기 변경된 변환 물리 주소의 주소 차와 상기 변경된 변환 물리 주소와 상기 변환 물리 주소의 시작 주소의 차를 합한 값으로 결정되는 어드레스 맵핑 테이블 관리 방법.
  4. 제 1 항에 있어서,
    상기 맵핑 테이블은 어레이로 구성되는 것을 특징으로 하는 어드레스 맵핑 테이블 관리 방법.
  5. 제 1 항에 있어서,
    물리 주소에 최초로 맵핑된 변환 물리 주소와 상기 맵핑 테이블에 저장된 이동 양을 더한 결과 값에 따라 상기 물리 주소에 변경된 변환 물리 주소가 맵핑되는 어드레스 맵핑 테이블 관리 방법.
  6. 제 5 항에 있어서,
    상기 최초로 맵핑된 변환 물리 주소는 상기 물리 주소와 동일한 것을 특징으로 하는 어드레스 맵핑 테이블 관리 방법.
  7. 제 5 항에 있어서,
    상기 변환 물리 주소는 환형 큐 방식으로 관리되되,
    상기 결과 값이 상기 변환 물리 주소의 마지막 주소보다 큰 경우, 상기 변환 물리 주소의 시작 주소부터 남은 이동 양 만큼 더 이동되어 맵핑되는 어드레스 맵핑 테이블 관리 방법
  8. 데이터를 저장하기 위한 제 1 메모리 셀 어레이;
    웨어-레벨을 관리하기 위한 웨어-레벨링 제어부;
    어드레스 맵핑 테이블을 저장하기 위한 제 2 메모리 셀 어레이; 및
    상기 제 1 메모리 셀 어레이의 물리 주소에 맵핑되는 변환 물리 주소가 변경되는 경우, 상기 물리 주소에 맵핑되어있는 변경 전의 변환 물리 주소를 기준으로 이동되어야 하는 주소의 이동 양을 상기 어드레스 맵핑 테이블에 저장하고,
    상기 어드레스 맵핑 테이블을 참조하여 상기 물리 주소를 상기 변경된 변환 물리 주소로 맵핑하는 메모리 제어부를 포함하는 메모리 장치.
  9. 제 8 항에 있어서,
    상기 물리 주소에 맵핑되는 변환 물리 주소는 상기 웨어-레벨링 제어부로부터 제공되는 웨어-레벨 정보에 따라 변경되는 메모리 장치.
  10. 제 8 항에 있어서,
    상기 메모리 제어부의 제어에 따라 상기 물리 주소에 최초로 맵핑된 변환 물리 주소와 상기 맵핑 테이블에 저장된 상기 이동 양을 더하기 위한 가산기를 더 포함하되,
    상기 가산기의 덧셈 결과에 따라 상기 물리 주소가 맵핑되는 메모리 장치.
KR1020090123446A 2009-12-11 2009-12-11 어드레스 맵핑 테이블 관리 방법 및 그것을 사용하는 메모리 장치 KR20110066697A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020090123446A KR20110066697A (ko) 2009-12-11 2009-12-11 어드레스 맵핑 테이블 관리 방법 및 그것을 사용하는 메모리 장치
US12/946,893 US20110145485A1 (en) 2009-12-11 2010-11-16 Method for managing address mapping table and a memory device using the method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090123446A KR20110066697A (ko) 2009-12-11 2009-12-11 어드레스 맵핑 테이블 관리 방법 및 그것을 사용하는 메모리 장치

Publications (1)

Publication Number Publication Date
KR20110066697A true KR20110066697A (ko) 2011-06-17

Family

ID=44144175

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090123446A KR20110066697A (ko) 2009-12-11 2009-12-11 어드레스 맵핑 테이블 관리 방법 및 그것을 사용하는 메모리 장치

Country Status (2)

Country Link
US (1) US20110145485A1 (ko)
KR (1) KR20110066697A (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9342257B2 (en) 2012-10-30 2016-05-17 Samsung Electronics Co., Ltd. Computer system having main memory and control method thereof
US10101927B2 (en) 2015-11-06 2018-10-16 SK Hynix Inc. Data storage device and operating method thereof
US10977170B2 (en) 2018-03-27 2021-04-13 SK Hynix Inc. Memory controller for performing unmap operation and memory system having the same

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9324433B2 (en) * 2011-04-25 2016-04-26 Microsoft Technology Licensing, Llc Intelligent flash reprogramming
US20120311228A1 (en) * 2011-06-03 2012-12-06 Advanced Micro Devices, Inc. Method and apparatus for performing memory wear-leveling using passive variable resistive memory write counters
US20130097403A1 (en) 2011-10-18 2013-04-18 Rambus Inc. Address Mapping in Memory Systems
US11037625B2 (en) 2012-11-20 2021-06-15 Thstyme Bermuda Limited Solid state drive architectures
CA2891355C (en) * 2012-11-20 2022-04-05 Charles I. Peddle Solid state drive architectures
KR20150132151A (ko) * 2013-03-12 2015-11-25 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. 프로그램 가능한 어드레스 매핑 및 메모리 액세스 동작
WO2015051506A1 (en) * 2013-10-09 2015-04-16 Advanced Micro Devices, Inc. Enhancing lifetime of non-volatile cache by reducing intra-block write variation
KR20160070920A (ko) * 2014-12-10 2016-06-21 에스케이하이닉스 주식회사 맵 테이블을 갖는 컨트롤러 및 반도체 메모리 장치를 포함하는 메모리 시스템 및 그것의 동작 방법
US11055226B2 (en) * 2018-06-29 2021-07-06 Intel Corporation Mitigation of cache-latency based side-channel attacks
CN111078128B (zh) * 2018-10-22 2023-05-16 浙江宇视科技有限公司 数据管理方法、装置及固态硬盘
CN114063918B (zh) * 2021-11-12 2023-08-15 深圳宏芯宇电子股份有限公司 数据存取方法、存储器存储装置及存储器控制器
WO2024099538A1 (en) * 2022-11-08 2024-05-16 Huawei Cloud Computing Technologies Co., Ltd. Controller and method for copying data from processing unit to memory system

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0229759D0 (en) * 2002-12-20 2003-01-29 Becrypt Ltd Security device
KR100851546B1 (ko) * 2006-09-22 2008-08-11 삼성전자주식회사 비휘발성 기억 장치 및 그 동작 방법
US7725646B2 (en) * 2007-08-02 2010-05-25 Alcatel Lucent Method of using a flash memory for a circular buffer
KR101437123B1 (ko) * 2008-04-01 2014-09-02 삼성전자 주식회사 메모리 시스템 및 그것의 마모도 관리 방법

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9342257B2 (en) 2012-10-30 2016-05-17 Samsung Electronics Co., Ltd. Computer system having main memory and control method thereof
US10101927B2 (en) 2015-11-06 2018-10-16 SK Hynix Inc. Data storage device and operating method thereof
US10977170B2 (en) 2018-03-27 2021-04-13 SK Hynix Inc. Memory controller for performing unmap operation and memory system having the same

Also Published As

Publication number Publication date
US20110145485A1 (en) 2011-06-16

Similar Documents

Publication Publication Date Title
KR20110066697A (ko) 어드레스 맵핑 테이블 관리 방법 및 그것을 사용하는 메모리 장치
US11237765B2 (en) Data writing method and storage device
US9104549B2 (en) Data storage device and method for flash block management
TWI474324B (zh) 平均讀寫記憶元件的方法及記憶體系統
JP5031849B2 (ja) フラッシュメモリのブロック管理方法
US9870836B2 (en) Memory system and method of controlling nonvolatile memory
KR101418631B1 (ko) 고체상태 저장 장치 내 전환 레이어
CN110955384B (zh) 数据储存装置以及非挥发式存储器控制方法
KR101465789B1 (ko) 페이지 복사 횟수를 줄일 수 있는 메모리 카드 시스템의쓰기 및 병합 방법
US20100161885A1 (en) Semiconductor storage device and storage controlling method
KR20170035155A (ko) 메모리 콘트롤러, 불휘발성 메모리 시스템 및 그 동작방법
KR20160008365A (ko) 저장 매체, 메모리 시스템 및 메모리 시스템에서의 저장 영역 관리 방법
JP2008181380A (ja) メモリシステムおよびその制御方法
KR101554478B1 (ko) 플래시 메모리 캐싱 정책을 강화하는 방법과 장치
CN112130749B (zh) 数据储存装置以及非挥发式存储器控制方法
KR20140113176A (ko) 매핑 정보 업데이트 방법 및 이를 이용한 메모리 시스템
JP2012113343A (ja) 記憶装置
JP2018160189A (ja) メモリシステム
US8583858B2 (en) Nonvolatile memory controller and nonvolatile storage device
US11481136B1 (en) Very low sized zone support for storage devices
JP2007334413A (ja) 記憶装置
JP5494086B2 (ja) 不揮発性記憶装置および不揮発性メモリコントローラ
CN113590505A (zh) 地址映射方法、固态硬盘控制器及固态硬盘
KR101070511B1 (ko) Ssd 컨트롤러 및 ssd 컨트롤러의 동작 방법
CN113467713A (zh) 数据分离方法及固态硬盘

Legal Events

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