KR20150139718A - 불휘발성 메모리를 제어하는 컨트롤러 및 그것을 포함하는 반도체 장치 - Google Patents

불휘발성 메모리를 제어하는 컨트롤러 및 그것을 포함하는 반도체 장치 Download PDF

Info

Publication number
KR20150139718A
KR20150139718A KR1020140067860A KR20140067860A KR20150139718A KR 20150139718 A KR20150139718 A KR 20150139718A KR 1020140067860 A KR1020140067860 A KR 1020140067860A KR 20140067860 A KR20140067860 A KR 20140067860A KR 20150139718 A KR20150139718 A KR 20150139718A
Authority
KR
South Korea
Prior art keywords
address
memory
sector
chunk
block
Prior art date
Application number
KR1020140067860A
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 KR1020140067860A priority Critical patent/KR20150139718A/ko
Priority to US14/535,049 priority patent/US9465747B2/en
Priority to CN201410705032.1A priority patent/CN105279102B/zh
Publication of KR20150139718A publication Critical patent/KR20150139718A/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile 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/25Using a specific main memory architecture
    • G06F2212/253Centralized memory
    • G06F2212/2532Centralized memory comprising a plurality of modules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • 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

Abstract

본 발명의 실시 예에 따른 컨트롤러는 제 1 어드레스 테이블을 저장하는 제 1 메모리 영역, 제 2 어드레스 테이블을 저장하는 제 2 메모리 영역, 제 1 및 제 2 어드레스 테이블들을 참조하여 호스트로부터의 섹터 어드레스를 불휘발성 메모리에 해당하는 물리 어드레스로 변환하도록 구성되는 어드레스 변환 블록, 그리고 어드레스 변환 블록과 제 2 메모리 영역을 공유하는 적어도 하나의 기능 블록을 포함한다. 이때 어드레스 변환 블록은 제 1 메모리 영역을 독점한다.

Description

불휘발성 메모리를 제어하는 컨트롤러 및 그것을 포함하는 반도체 장치{CONTROLLER FOR CONTROLLING NONVOLATILE MEMORY AND SEMICONDUCTOR DEVICE INCLUDING THE SAME}
본 발명은 전자 장치에 관한 것으로, 좀 더 구체적으로는 불휘발성 메모리를 제어하는 컨트롤러 및 그것을 포함하는 반도체 장치에 관한 것이다.
반도체 메모리 장치(semiconductor memory device)는 실리콘(Si, silicon), 게르마늄(Ge, Germanium), 비화 갈륨(GaAs, gallium arsenide), 인화인듐(InP, indium phospide) 등과 같은 반도체를 이용하여 구현되는 기억장치이다. 반도체 메모리 장치는 크게 휘발성 메모리 장치(Volatile memory device)와 불휘발성 메모리(Nonvolatile memory device)로 구분된다.
휘발성 메모리 장치는 전원 공급이 차단되면 저장하고 있던 데이터가 소멸되는 메모리 장치이다. 휘발성 메모리 장치에는 SRAM (Static RAM), DRAM (Dynamic RAM), SDRAM (Synchronous DRAM) 등이 있다. 불휘발성 메모리 장치는 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 메모리 장치이다. 불휘발성 메모리 장치에는 ROM (Read Only Memory), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM), 플래시 메모리, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등이 있다. 플래시 메모리는 크게 노어 타입과 낸드 타입으로 구분된다.
본 발명의 실시 예는 내부 램의 크기를 감소시키면서도 향상된 동작 속도를 갖는 컨트롤러를 제공한다.
본 발명의 실시 예에 따른 컨트롤러는 제 1 어드레스 테이블을 저장하는 제 1 메모리 영역; 제 2 어드레스 테이블을 저장하는 제 2 메모리 영역; 상기 제 1 및 제 2 메모리 영역에 액세스하며, 상기 제 1 및 제 2 어드레스 테이블들을 참조하여 호스트로부터의 섹터(sector) 어드레스를 물리 어드레스로 변환하도록 구성되는 어드레스 변환 블록; 및 상기 어드레스 변환 블록과 상기 제 2 메모리 영역을 공유하는 적어도 하나의 기능 블록을 포함한다. 상기 어드레스 변환 블록은 상기 제 1 메모리 영역을 독점한다.
실시 예로서, 상기 어드레스 변환 블록은 스몰 청크 단위로 어드레스 맵들을 상기 불휘발성 메모리로부터 상기 제 1 메모리 영역에 로드하여 상기 제 1 어드레스 테이블을 생성하되, 상기 스몰 청크는 a개의 섹터 어드레스들을 포함할 수 있다. 상기 어드레스 변환 블록은 라지 청크 단위로 어드레스 맵들을 상기 불휘발성 메모리로부터 상기 제 2 메모리 영역에 로드하여 상기 제 2 어드레스 테이블을 생성하되, 상기 라지 청크는 상기 a개보다 큰 b개의 섹터 어드레스들을 포함할 수 있다.
실시 예로서, 상기 어드레스 변환 블록은 상기 호스트로부터의 섹터 어드레스가 포함되는 스몰 청크를 판별하고, 상기 판별된 스몰 청크를 상기 제 1 어드레스 테이블 내에서 서치할 수 있다.
실시 예로서, 상기 어드레스 변환 블록은, 상기 판별된 스몰 청크가 상기 제 1 어드레스 테이블 내에 존재할 때, 상기 서치된 스몰 청크의 어드레스 맵을 참조하여 상기 호스트로부터의 섹터 어드레스를 상기 물리 어드레스로 변환할 수 있다. 그리고, 상기 어드레스 변환 블록은, 상기 판별된 스몰 청크가 상기 제 1 어드레스 테이블 내에 존재하지 않을 때, 상기 호스트로부터의 섹터 어드레스가 포함되는 라지 청크를 판별하고, 상기 판별된 라지 청크를 상기 제 2 어드레스 테이블 내에서 서치할 수 있다.
실시 예로서, 상기 어드레스 변환 블록은 상기 서치된 라지 청크의 어드레스 맵을 참조하여 상기 호스트로부터의 섹터 어드레스를 상기 물리 어드레스로 변환할 수 있다.
실시 예로서, 상기 어드레스 변환 블록은 상기 호스트로부터의 섹터 어드레스가 핫 데이터에 해당할 때, 상기 호스트로부터의 섹터 어드레스가 포함되는 스몰 청크를 판별하고 상기 판별된 스몰 청크의 어드레스 맵을 상기 불휘발성 메모리로부터 읽어 상기 제 1 어드레스 테이블에 업데이트할 수 있다.
실시 예로서, 상기 어드레스 변환 블록은 상기 업데이트된 스몰 청크의 어드레스 맵을 참조하여 상기 물리 어드레스를 결정할 수 있다.
실시 예로서, 상기 어드레스 변환 블록은 상기 호스트로부터의 섹터 어드레스가 콜드 데이터일 때, 상기 호스트로부터의 섹터 어드레스가 포함되는 라지 청크를 판별하고 상기 판별된 라지 청크의 어드레스 맵을 상기 불휘발성 메모리로부터 읽어 상기 제 2 어드레스 테이블에 업데이트할 수 있다.
실시 예로서, 상기 어드레스 변환 블록은 상기 업데이트된 라지 청크의 어드레스 맵을 참조하여 상기 물리 어드레스를 결정할 수 있다.
실시 예로서, 상기 어드레스 변환 블록은, 가비지 컬렉션 시에 상기 불휘발성 메모리 중 희생 블록에 대응하는 섹터 어드레스들을 읽고, 상기 읽어진 섹터 어드레스들을 포함하는 라지 청크들을 판별하고, 판별된 라지 청크들의 어드레스 맵들을 상기 제 2 메모리 영역에 로드할 수 있다.
실시 예로서, 상기 어드레스 변환 블록은 상기 로드된 어드레스 맵들을 참조하여 상기 희생 블록의 페이지들 각각이 유효한지 여부를 판별할 수 있다.
실시 예로서, 상기 컨트롤러는 상기 희생 블록 중 유효한 페이지들의 데이터를 읽고, 상기 읽어진 데이터를 상기 불휘발성 메모리 중 타겟 블록의 페이지들에 쓰는 가비지 컬렉션 블록을 더 포함할 수 있다.
실시 예로서, 상기 제 1 어드레스 테이블은 스몰 청크 단위로 구분된 어드레스 맵들을 포함하되, 상기 스몰 청크는 a개의 섹터 어드레스들을 포함할 수 있다. 그리고 상기 제 2 어드레스 테이블은 라지 청크 단위로 구분된 어드레스 맵들을 포함하되, 상기 라지 청크는 상기 a개보다 큰 b개의 섹터 어드레스들을 포함할 수 있다.
실시 예로서, 상기 스몰 청크의 어드레스 맵들 각각은 상기 a개의 섹터 어드레스들에 매핑되는 물리 어드레스들을 포함할 것이다.
실시 예로서, 상기 라지 청크의 어드레스 맵들 각각은 상기 b개의 섹터 어드레스들에 매핑되는 물리 어드레스들을 포함할 것이다.
본 발명의 다른 일면은 불휘발성 메모리 및 컨트롤러를 포함하는 반도체 장치에 관한 것이다. 본 발명의 실시 예에 따른 반도체 장치는 불휘발성 메모리; 및
상기 불휘발성 메모리를 제어하는 컨트롤러를 포함하되, 상기 컨트롤러는 제 1 어드레스 테이블을 저장하는 제 1 메모리 영역; 제 2 어드레스 테이블을 저장하는 제 2 메모리 영역; 상기 제 1 및 제 2 메모리 영역에 액세스하며, 상기 제 1 및 제 2 어드레스 테이블들을 참조하여 호스트로부터의 섹터(sector) 어드레스를 상기 불휘발성 메모리에 해당하는 물리 어드레스로 변환하도록 구성되는 어드레스 변환 블록; 및 상기 어드레스 변환 블록과 상기 제 2 메모리 영역을 공유하는 적어도 하나의 기능 블록을 포함하되, 상기 어드레스 변환 블록은 상기 제 1 메모리 영역을 독점한다.
실시 예로서, 상기 불휘발성 메모리는 어드레스 정보가 저장되는 메모리 셀 어레이를 포함하되, 상기 어드레스 변환 블록은 상기 어드레스 정보를 선택적으로 로드하여 상기 제 1 및 제 2 어드레스 테이블들을 생성할 수 있다.
실시 예로서, 상기 어드레스 변환 블록은 상기 어드레스 정보로부터 스몰 청크 단위로 어드레스 맵들을 상기 제 1 메모리 영역에 로드하여 상기 제 1 어드레스 테이블을 생성하되, 상기 스몰 청크는 a개의 섹터 어드레스들을 포함할 수 있다. 그리고 상기 어드레스 변환 블록은 상기 어드레스 정보로부터 라지 청크 단위로 어드레스 맵들을 상기 제 2 메모리 영역에 로드하여 상기 제 2 어드레스 테이블을 생성하되, 상기 라지 청크는 상기 a개보다 큰 b개의 섹터 어드레스들을 포함할 수 있다.
본 발명의 실시 예에 따르면 컨트롤러 내 램의 크기가 감소하면서도 컨트롤러의 동작 속도가 향상된다.
도 1은 본 발명의 실시 예에 따른 반도체 장치를 보여주는 블록도이다.
도 2는 불휘발성 메모리에 포함된 메모리 셀 어레이를 보여주는 도면이다.
도 3은 호스트로부터 제공될 수 있는 섹터 어드레스들을 보여주는 개념도이다.
도 4는 도 1의 반도체 장치를 구현하기 위한 일 실시 예를 보여주는 블록도이다.
도 5는 도 1의 반도체 장치를 구현하기 위한 다른 실시 예를 보여주는 블록도이다.
도 6은 본 발명의 실시 예에 따른 제 1 및 제 2 메모리 영역들을 사용하는 방법을 설명하기 위한 개념도이다.
도 7은 어드레스 변환 블록의 동작 방법을 보여주는 순서도이다.
도 8은 도 7에 실시 예에 따라 구성된 제 1 및 제 2 어드레스 테이블들을 보여주는 개념도이다.
도 9는 스몰 청크 및 라지 청크를 설명하기 위한 개념도이다.
도 10은 도 8의 제 1 및 제 2 어드레스 테이블들의 일 예를 보여주는 개념도이다.
도 11은 어드레스 변환 블록의 동작 방법의 응용 예를 보여주는 순서도이다.
도 12는 어드레스 변환 블록의 동작 방법의 다른 응용 예를 보여주는 순서도이다.
도 13은 가비지 컬렉션 시 희생 블록들을 보여주는 도면이다.
도 14는 도 1의 컨트롤러의 변형 실시 예를 보여주는 블록도이다.
도 15는 도 1의 반도체 장치의 응용 예를 보여주는 블록도이다.
이하, 본 발명에 따른 바람직한 실시 예를 첨부한 도면을 참조하여 상세히 설명한다. 하기의 설명에서는 본 발명에 따른 동작을 이해하는데 필요한 부분만이 설명되며 그 이외 부분의 설명은 본 발명의 요지를 모호하지 않도록 하기 위해 생략될 것이라는 것을 유의하여야 한다. 또한 본 발명은 여기에서 설명되는 실시 예에 한정되지 않고 다른 형태로 구체화될 수도 있다. 단지, 여기에서 설명되는 실시 예은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여 제공되는 것이다.
도 1은 본 발명의 실시 예에 따른 반도체 장치(1000)를 보여주는 블록도이다. 도 2는 불휘발성 메모리(100)에 포함된 메모리 셀 어레이(110)를 보여주는 도면이다.
도 1을 참조하면, 반도체 장치(1000)는 불휘발성 메모리(100) 및 컨트롤러(200)를 포함한다.
불휘발성 메모리(100)는 컨트롤러(200)의 제어에 응답하여 동작한다. 불휘발성 메모리(100)는 하나의 채널(CH)을 통해 컨트롤러(200)와 연결된다.
불휘발성 메모리(100)는 메모리 셀 어레이(110) 및 메모리 셀 어레이(110)를 구동하기 위한 주변 회로(120)를 포함한다. 도 2를 참조하면, 메모리 셀 어레이(110)는 복수의 메모리 블록들(BLK1~BLKz)을 포함한다. 복수의 메모리 블록들 각각은 복수의 페이지들(page1~pageN)을 포함한다.
다시 도 1을 참조하면, 주변 회로(120)는 메모리 셀 어레이(110)에 연결된다. 주변 회로(120)는 컨트롤러(200)의 제어에 응답하여 동작한다. 주변 회로(120)는 컨트롤러(200)의 제어에 응답하여, 메모리 셀 어레이(110)에 데이터를 프로그램하고 메모리 셀 어레이(110)로부터 데이터를 읽고 메모리 셀 어레이(110)의 데이터를 소거하도록 구성된다.
실시 예로서, 불휘발성 메모리(100)의 읽기 동작 및 프로그램 동작은 페이지(page, 도 2 참조) 단위로 수행될 수 있다. 불휘발성 메모리(100)의 소거 동작은 메모리 블록(BLK, 도 2 참조) 단위로 수행될 수 있다.
프로그램 동작 시에, 주변 회로(120)는 컨트롤러(200)로부터 쓰기 데이터 및 물리 어드레스(Physical Block Address)를 수신할 것이다. 물리 어드레스에 의해 메모리 블록(BLK)과 페이지(page)가 특정될 것이다. 주변 회로(120)는 물리 어드레스가 가리키는 페이지(page)에 쓰기 데이터를 프로그램할 것이다.
읽기 동작 시에, 컨트롤러(200)로부터 주변 회로(120)에 전송되는 물리 어드레스는 메모리 블록(BLK)과 페이지(page)를 특정할 것이다. 주변 회로(120)는 물리 어드레스에 대응하는 페이지(page)로부터 데이터를 읽고, 읽어진 데이터를 컨트롤러(200)에 출력할 것이다.
소거 동작 시에, 컨트롤러(200)로부터 주변 회로(120)에 전송되는 물리 어드레스는 하나의 메모리 블록(BLK)을 특정할 것이다. 주변 회로(120)는 물리 어드레스에 대응하는 메모리 블록(BLK)의 데이터를 소거할 것이다.
실시 예로서, 불휘발성 메모리(100)는 플래시 메모리(Flash Memory)일 수 있다.
메모리 셀 어레이(110)에는 어드레스 정보가 저장될 수 있다. 어드레스 정보는 호스트(Host)로부터 수신되는 섹터 어드레스(SCT, Sector Address)와 불휘발성 메모리(100)에 제공되기 위한 물리 어드레스 사이의 매핑 정보이다. 이러한 어드레스 정보는 호스트(Host)로부터 수신되었던 섹터 어드레스(SCT), 그리고 불휘발성 메모리(100)와 관련된 물리 어드레스 사이의 매핑 정보를 포함한다. 이러한 어드레스 정보는 어드레스 변환 블록(220)에 의해 생성되고, 메모리 셀 어레이(110)에 저장될 수 있다.
실시 예로서, 이러한 어드레스 정보는 메모리 셀 어레이(110)의 메모리 블록들(BLK1~BLKz) 중 적어도 하나의 메모리 블록(예를 들면, BLK1)에 저장될 수 있다. 이러한 어드레스 정보는 컨트롤러(200) 내 램(210, Random Access Memory, RAM)에 로드되고, 어드레스 변환 블록(220)에 의해 사용될 수 있다.
컨트롤러(200)는 호스트(Host) 및 불휘발성 메모리(100) 사이에 연결된다. 컨트롤러(200)는 호스트(Host)와 불휘발성 메모리(100)를 인터페이싱한다.
컨트롤러(200)는 호스트(Host)로부터의 요청에 응답하여 불휘발성 메모리(100)를 액세스하도록 구성된다. 예를 들면, 컨트롤러(200)는 불휘발성 메모리(100)의 읽기, 쓰기, 소거, 그리고 배경(background) 동작을 제어하도록 구성된다. 컨트롤러(1200)는 불휘발성 메모리(100) 및 호스트(Host) 사이에서 인터페이스를 제공하도록 구성된다. 컨트롤러(1200)는 반도체 메모리 장치(100)를 제어하기 위한 펌웨어(firmware)를 구동하도록 구성된다.
컨트롤러(200)는 램(210), 어드레스 변환 블록(220), 제 1 내지 제 n 기능 블록들(231~23n), 호스트 인터페이스(240) 및 메모리 인터페이스(250)를 포함한다.
램(210)은 버스(260)에 연결된다. 어드레스 변환 블록(220), 제 1 내지 제 n 기능 블록들(231~23n)은 다양한 목적들을 위해 램(210)의 저장 공간을 사용할 수 있다. 예를 들면, 램(210)은 어드레스 변환 블록(220), 제 1 내지 제 n 기능 블록들(231~23n)의 워킹 메모리로서 이용될 수 있다. 예를 들면, 램(210)은 호스트(Host) 및 불휘발성 메모리(100) 사이의 버퍼 메모리로서 이용될 수 있다.
실시 예로서, 램(210)은 SRAM (Static RAM), DRAM (Dynamic RAM) 및 SDRAM (Synchronous DRAM) 등으로 구성될 수 있다.
본 발명의 실시 예에 따르면, 램(210)은 제 1 메모리 영역(211) 및 제 2 메모리 영역(212)을 포함한다. 여기서, 제 1 메모리 영역(211)은 어드레스 변환 블록(220)에 의해 독점된다. 제 2 메모리 영역(212)은 어드레스 변환 블록(220)과 제 1 내지 제 n 기능 블록들(231~23n)에 의해 공유된다.
어드레스 변환 블록(220)은 호스트(Host)로부터의 섹터 어드레스(SCT)를 불휘발성 메모리(100)에 제공하기 위한 물리 어드레스로 변환하도록 구성된다. 어드레스 변환 블록(220)은 버스(260)를 통해 램(210)에 연결된다.
어드레스 변환 블록(220)은 제 1 및 제 2 메모리 영역들(211, 212)을 사용할 수 있다. 어드레스 변환 블록(220)은 불휘발성 메모리(100)로부터 어드레스 정보를 읽어 제 1 메모리 영역(211)에 제 1 어드레스 테이블을 저장한다. 어드레스 변환 블록(220)은 불휘발성 메모리(100)로부터 어드레스 정보를 읽어 제 2 메모리 영역(212)에 제 2 어드레스 테이블을 저장한다. 이후, 어드레스 변환 블록(220)은 제 1 및 제 2 어드레스 테이블들을 참조하여 섹터 어드레스(SCT)를 물리 어드레스로 변환한다.
실시 예로서, 어드레스 변환 블록(220)은 플래시 변환 레이어(Flash Translation Layer; FTL)로서 동작할 수 있다.
제 1 내지 제 n 기능 블록들(231~23n)은 버스(260)에 연결된다. 각 기능 블록은 특정 기능을 수행하도록 구성된다. 각 기능 블록은 해당 기능을 수행하기 위해 제 2 메모리 영역(212)을 이용한다. 각 기능 블록은 버스(260)를 통해 램(210)의 제 2 메모리 영역(212)에 액세스한다. 예를 들면, 각 기능 블록은 다이렉트 메모리 액세스(Direct Memory Access; DMA)를 포함하고, 다이렉트 메모리 액세스를 이용해 제 2 메모리 영역(212)에 데이터를 쓰고, 읽을 수 있다.
예를 들면, 제 1 내지 제 n 기능 블록들(231~23n) 중 어느 하나는 호스트 인터페이스(240)를 제어하기 위한 프로토콜 제어 블록으로서 동작할 수 있다. 프로토콜 제어 블록은 호스트(Host)로부터 수신되는 요청(request)을 처리하고, 호스트(Host)로 출력되는 응답(response)을 호스트(Host)에 대응하는 프로토콜로 변환 및 출력하도록 호스트 인터페이스(240)를 제어할 수 있다.
예를 들면, 제 1 내지 제 n 기능 블록들(231~23n) 중 어느 하나는 다이렉트 메모리 액세스 블록으로서 동작할 수 있다. 다이렉트 메모리 액세스 블록은 제 2 메모리 영역(212)에 데이터를 쓰고, 제 2 메모리 영역(212)으로부터 데이터를 읽도록 구성된다. 예를 들면, 호스트(Host)로부터 쓰기 요청이 수신될 때, 다이렉트 메모리 액세스 블록은 쓰기 요청 중 쓰기 데이터를 제 2 메모리 영역(212)에 임시 저장할 수 있다. 쓰기 요청 중 섹터 어드레스(SCT)는 어드레스 변환 블록(220)으로 제공된다. 제 2 메모리 영역(212)에 임시 저장된 쓰기 데이터는 메모리 인터페이스(250)를 통해 불휘발성 메모리(100)로 출력될 것이다. 예를 들면, 다이렉트 메모리 액세스 블록은 호스트(Host)로부터의 읽기 요청에 따라 불휘발성 메모리(100)로부터 읽혀진 읽기 데이터를 제 2 메모리 영역(212)에 임시 저장할 수 있다. 이후, 임시 저장된 읽기 데이터는 호스트 인터페이스(240)를 통해 호스트(Host)로 출력될 것이다.
예를 들면, 제 1 내지 제 n 기능 블록들(231~23n)은 중 하나는 가비지 컬렉션 동작을 수행하기 위한 기능 블록일 수 있다. 가비지 컬렉션을 수행하기 위한 기능 블록은 메모리 셀 어레이(110)의 메모리 블록들(BLK1~BLKz, 도 2 참조) 중 희생 블록들의 데이터를 읽고, 읽어진 데이터를 제 2 메모리 영역(212)에 임시 저장할 수 있다. 이후, 가비지 컬렉션을 수행하기 위한 기능 블록은 임시 저장된 데이터를 메모리 블록들(BLK1~BLKz) 중 대상 블록에 쓸 것이다. 그리고 가비지 컬렉션을 수행하기 위한 기능 블록은 희생 블록들의 데이터를 소거할 것이다.
예를 들면, 제 1 내지 제 n 기능 블록들(231~23n)은 중 하나는 에러 정정 블록으로서 동작할 수 있다. 에러 정정 블록은 에러 정정 코드(ECC, Error Correcting Code)를 이용하여 불휘발성 메모리(100)로부터 읽혀진 데이터의 에러를 검출하고, 정정하도록 구성된다. 에러의 정정을 위해 요구되는 저장 공간으로서, 제 2 메모리 영역(212)이 사용될 것이다.
예를 들면, 제 1 내지 제 n 기능 블록들(231~23n) 중 어느 하나는 어드레스 변환 블록(220) 및 제 1 내지 제 n 기능 블록들(231~23n)의 제반 동작을 제어하기 위한 동작을 수행할 수 있다.
이 밖에도, 제 1 내지 제 n 기능 블록들(231~23n)은 제 2 메모리 영역(211)을 이용하여 다양한 기능들을 수행할 수 있음이 이해될 것이다.
호스트 인터페이스(240)는 호스트(Host)에 연결된다. 호스트 인터페이스(240)는 호스트(Host) 및 컨트롤러(200) 사이의 데이터 교환을 수행하기 위한 프로토콜을 포함한다. 실시 예로서, 컨트롤러(200)는 USB (Universal Serial Bus) 프로토콜, MMC (multimedia card) 프로토콜, PCI (peripheral component interconnection) 프로토콜, PCI-E (PCI-express) 프로토콜, ATA (Advanced Technology Attachment) 프로토콜, Serial-ATA 프로토콜, Parallel-ATA 프로토콜, SCSI (small computer small interface) 프로토콜, ESDI (enhanced small disk interface) 프로토콜, 그리고 IDE (Integrated Drive Electronics) 프로토콜, 사유(private) 프로토콜 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나를 통해 호스트(Host)와 통신하도록 구성된다.
메모리 인터페이스(250)는 불휘발성 메모리(100)와 인터페이싱한다. 메모리 인터페이스(250)는 어드레스 변환 블록(220) 및 제 1 내지 제 n 기능 블록들(231~23n)의 제어에 응답하여 불휘발성 메모리(100)에 데이터를 출력하고, 불휘발성 메모리(100)에서 읽어진 데이터를 수신한다.
예를 들면, 메모리 인터페이스는 낸드 인터페이스 또는 노어 인터페이스를 포함한다.
이렇듯, 제 2 메모리 영역(212)은 제 1 내지 제 n 기능 블록들(231~23n)에 의해 액세스될 수 있다. 또한, 위에서 설명된 바와 같이, 제 2 메모리 영역(212)에는 어드레스 변환 블록(220)에 의해 제 2 어드레스 테이블이 저장될 수 있다.
제 2 메모리 영역(212)에 제 2 어드레스 테이블이 저장된 상태에서 제 1 내지 제 n 기능 블록들(231~23n) 중 어느 하나가 제 2 메모리 영역(211)의 제 2 어드레스 테이블이 저장된 공간에 덮어쓰기(overwrite)하는 경우, 제 2 어드레스 테이블 전부 또는 일부는 훼손될 수 있다. 반면 제 1 메모리 영역(211)은 어드레스 변환 블록(220)에 의해 독점된다. 따라서 제 1 어드레스 테이블은, 예를 들면 의도치 않는 파워 오프(sudden power off)가 발생되는 경우를 제외하면, 유지될 수 있다.
램(210) 전체가 제 1 내지 제 n 기능 블록들(231~23n) 및 어드레스 변환 블록(220)에 의해 공유되고, 공유 영역에 어드레스 테이블이 저장된다고 가정한다. 제 1 내지 제 n 기능 블록들(231~23n)이 공유 영역을 사용할 때, 어드레스 테이블 전부 또는 일부는 삭제될 것이다. 즉, 어드레스 테이블 중 중요한 어드레스 정보가 삭제될 수 있다. 이후 삭제된 어드레스 정보에 해당하는 섹터 어드레스가 호스트(Host)로부터 수신되면, 어드레스 변환 블록(220)은 삭제된 어드레스 정보를 불휘발성 메모리(100)로부터 다시 램(210)에 로드할 것이다. 이러한 경우 컨트롤러(200)는 호스트(Host)의 요청을 빠르게 처리할 수 없다.
어드레스 변환 블록(220)의 구동을 위해 로드되어야 하는 어드레스 테이블이 제 1 메모리 영역(211)에 저장된다고 가정한다. 어드레스 테이블을 저장하기 위해, 제 1 메모리 영역(211)이 가지는 저장 공간의 크기는 증가할 것이다. 이러한 경우, 램(210) 전체에 요구되는 저장 공간이 결과적으로 증가하며, 컨트롤러(200)의 제조 단가는 상승하게 된다.
본 발명의 실시 예에 따르면, 램(210)은 어드레스 변환 블록(220)에 의해 독점되는 제 1 메모리 영역(211), 그리고 어드레스 변환 블록(220)과 제 1 내지 제 n 기능 블록들(231~23n)에 의해 공유되는 제 2 메모리 영역(212)으로 구분된다. 그리고, 어드레스 변환 블록(220)은 이원화된 어드레스 테이블들을 각각 제 1 메모리 영역(211) 및 제 2 메모리 영역(212)에 저장한다. 제 1 메모리 영역(211)에는 상대적으로 중요도가 높은 어드레스 테이블이 저장되고, 제 2 메모리 영역(212)에는 상대적으로 중요도가 낮은 어드레스 테이블이 저장될 수 있다. 이에 따라, 컨트롤러(200)의 동작 속도는 향상되며, 서 램(210)에 요구되는 저장 공간의 크기는 감소할 수 있다.
도 3은 호스트(Host)로부터 제공될 수 있는 섹터 어드레스들(SCT_1~SCT_p)을 보여주는 개념도이다.
도 3을 참조하면, 호스트(Host)로부터 제 1 내지 제 p 섹터 어드레스들(SCT_1~SCT_p)이 수신될 수 있다.
예를 들면, 호스트(Host)는 시작 섹터 어드레스(예를 들면, SCT_1)와 섹터 어드레스들의 개수(예를 들면, 4)를 컨트롤러(200)에 전송한다. 이에 따라, 호스트(Host)로부터 전송된 섹터 어드레스들(예를 들면, SCT_1~SCT_4)이 특정될 수 있다. 이러한 방식에 따라, 호스트(Host)는 제 1 내지 제 p 섹터 어드레스들(SCT_1~SCT_p)을 컨트롤러(200)에 전송할 수 있다.
실시 예로서, 호스트(Host)로부터 컨트롤러(200)에 쓰기가 요청될 때, 쓰기 요청은 섹터 어드레스(SCT) 및 쓰기 데이터를 포함할 수 있다. 호스트(Host)로부터 컨트롤러(200)에 읽기가 요청될 때, 읽기 요청은 섹터 어드레스(SCT)를 포함할 수 있다. 호스트(Host)로부터 컨트롤러(200)에 소거가 요청될 때, 소거 요청은 섹터 어드레스(SCT)를 포함할 수 있다.
도 4는 도 1의 반도체 장치(1000)를 구현하기 위한 일 실시 예(3000)를 보여주는 블록도이다.
도 4를 참조하면, 반도체 장치(3000)는 불휘발성 메모리(100) 및 컨트롤러(300)를 포함한다.
컨트롤러(300)는 램(210), 호스트 인터페이스(240), 메모리 인터페이스(250), 프로세싱 유닛(330) 및 서브 메모리(340)를 포함한다.
램(210), 호스트 인터페이스(240) 및 메모리 인터페이스(250)는 도 1을 참조하여 설명된 램(210), 호스트 인터페이스(240) 및 메모리 인터페이스(250)와 마찬가지로 구성된다. 이하, 중복되는 설명은 생략된다.
프로세싱 유닛(330)은 버스(260)와 연결된다. 서브 메모리(340)에는 제 1 내지 제 n 기능 블록들(231~23n) 및 어드레스 변환 블록(220)에 각각 대응하는 프로그램 코드들이 저장된다. 프로세싱 유닛(330)은 서브 메모리(340)에 저장된 프로그램 코드들을 실행하여, 도 1의 제 1 내지 제 n 기능 블록들(231~23n) 및 어드레스 변환 블록(220)의 기능들을 수행할 수 있다.
실시 예로서, 서브 메모리(340)는 프로세싱 유닛(330)의 외부에 위치하여, 프로세싱 유닛(330)에 프로그램 코드들을 제공할 수 있다. 다른 실시 예로서, 서브 메모리(340)는 프로세싱 유닛(330)의 내부에 제공될 수 있다.
실시 예로서, 서브 메모리(340)는 SRAM (Static RAM), DRAM (Dynamic RAM), SDRAM (Synchronous DRAM), ROM (Read Only Memory), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM) 등으로 구성될 수 있다.
도 5는 도 1의 반도체 장치(1000)를 구현하기 위한 다른 실시 예(4000)를 보여주는 블록도이다.
도 5를 참조하면, 반도체 장치(4000)는 불휘발성 메모리(100) 및 컨트롤러(400)를 포함한다.
컨트롤러(400)는 램(210), 호스트 인터페이스(240), 메모리 인터페이스(250), 제 1 및 제 2 프로세싱 유닛들(431, 432), 그리고 제 1 및 제 2 서브 메모리들(441, 442)을 포함한다.
램(210), 호스트 인터페이스(240) 및 메모리 인터페이스(250)는 도 1을 참조하여 설명된 램(210), 호스트 인터페이스(240) 및 메모리 인터페이스(250)와 마찬가지로 구성된다. 이하, 중복되는 설명은 생략된다.
컨트롤러(400)는 2 이상의 프로세싱 유닛들(431, 432)을 포함할 수 있다. 제 1 및 제 2 프로세싱 유닛들(431, 432)은 각각 제 1 및 제 2 서브 메모리들(441, 442)에 연결된다. 제 1 및 제 2 프로세싱 유닛들(431, 432)은 제 1 내지 제 n 기능 블록들(231~23n) 및 어드레스 변환 블록(220)의 기능들을 분담한다. 각 프로세싱 유닛은 해당 서브 메모리에 저장된 프로그램 코드를 실행하여, 제 1 내지 제 n 기능 블록들(231~23n) 및 어드레스 변환 블록(220)의 기능들 중 적어도 하나를 수행할 수 있다.
컨트롤러(400)가 2 이상의 프로세싱 유닛들(431, 432)을 포함하는 경우에, 반도체 장치(4000)의 동작 속도는 향상된다.
이 밖에도, 다양한 방법으로 제 1 내지 제 n 기능 블록들(231~23n) 및 어드레스 변환 블록(220)이 구현될 수 있다. 실시 예로서, 제 1 내지 제 n 기능 블록들(231~23n) 및 어드레스 변환 블록(220) 각각은 하드웨어, 프로그램 코드, 또는 하드웨어 및 프로그램 코드의 조합으로서 구현될 수 있다.
예를 들면, 프로그램 명령은 컴파일러에 의해 만들어지는 기계어 코드뿐만 아니라, 인터프리터 등을 사용하여 만들어지는 고급 언어 코드를 포함한다.
이하, 설명의 편의를 위해 도 1의 실시 예를 중심으로 본 발명의 실시 예가 설명된다.
도 6은 본 발명의 실시 예에 따른 제 1 및 제 2 메모리 영역들(211, 212)을 사용하는 방법을 설명하기 위한 개념도이다.
도 1 및 도 6을 참조하면, 어드레스 변환 블록(220)은 제 1 및 제 2 메모리 영역들(211, 212)에 액세스한다. 어드레스 변환 블록(220)은 불휘발성 메모리(100)로부터 어드레스 정보를 읽고, 읽어진 어드레스 정보를 제 1 어드레스 테이블(ATBL1)로서 제 1 메모리 영역(211)에 저장한다(A). 어드레스 변환 블록(220)은 불휘발성 메모리(110)로부터 읽어진 어드레스 정보를 제 2 어드레스 테이블(ATBL2)로서 제 2 메모리 영역(212)에 저장한다(B). 즉 어드레스 변환 블록(220)은 제 1 및 제 2 메모리 영역들(211, 212)을 어드레스 정보를 저장하는 데에 사용할 수 있다.
제 1 내지 제 n 기능 블록들(231~23n)은 제 1 메모리 영역(211)에 액세스할 수 없다(C). 제 1 내지 제 n 기능 블록들(231~23n)은 제 2 메모리 영역(212)에 액세스한다(D). 제 1 내지 제 n 기능 블록들(231~23n)이 제 2 메모리 영역(212)에 액세스하는 경우, 제 2 어드레스 테이블(ATBL2) 중 전부 또는 일부는 삭제될 수 있다.
반면 제 1 내지 제 n 기능 블록들(231~23n)은 제 1 메모리 영역(211)에 액세스할 수 없으므로, 제 1 어드레스 테이블(ATBL1)은 보존된다.
실시 예로서, 어드레스 테이블들(ATBL1, ATBL2) 각각에서, 연속되는 섹터 어드레스들의 어드레스 정보를 그룹핑하여 관리될 수 있다. 이에 따라, 원하는 섹터 어드레스의 어드레스 정보가 어드레스 테이블들(ATBL1, ATBL2) 내에서 효율적으로 검색될 수 있다.
본 발명의 실시 예에 따르면, 어드레스 테이블들(ATBL1, ATBL2)은 서로 다른 개수의 섹터 어드레스들의 어드레스 정보를 그룹핑하여 관리될 수 있다. 이에 대해, 이하에서 좀 더 상세히 설명된다.
도 7은 어드레스 변환 블록(220)의 동작 방법을 보여주는 순서도이다.
도 1 및 도 7을 참조하면, 어드레스 정보의 로드가 요청된다(S100).
예를 들면, 어드레스 변환 블록(220)은 호스트(Host)로부터의 섹터 어드레스에 해당하는 어드레스 정보가 제 1 및 제 2 어드레스 테이블들(ATBL1, ATBL2, 도 6 참조)에 존재하지 않을 때 불휘발성 메모리(100)로부터 해당 어드레스 정보를 로드할 것이다.
예를 들면, 어드레스 변환 블록(220)은 파워 업 이후 반도체 장치(1000)가 초기화될 때, 불휘발성 메모리(100)로부터 어드레스 정보를 로드할 것이다. 예를 들면, 어드레스 변환 블록(220)은 반도체 장치(1000)가 슬립 모드로부터 액티브 모드로 진입할 때 불휘발성 메모리(100)로부터 어드레스 정보를 로드할 것이다. 예를 들면, 어드레스 변환 블록(220)은 소정의 주기마다 불휘발성 메모리(100)로부터 어드레스 정보를 로드할 것이다.
이 밖에도, 다양한 상황들에서 어드레스 정보의 로드가 요청될 수 있음이 이해될 것이다.
제 1 메모리 영역(211)에 어드레스 정보가 로드되는 경우(S110), 어드레스 변환 블록(220)은 스몰 청크의 단위로 어드레스 맵을 로드한다. 여기에서, 스몰 청크는 a개의 섹터 어드레스들의 그룹을 의미한다(a는 0보다 큰 정수). 스몰 청크의 어드레스 맵은 a개의 섹터 어드레스들과 해당 물리 어드레스들 사이의 어드레스 정보이다.
제 2 메모리 영역(212)에 어드레스 정보가 로드되는 경우(S130), 어드레스 변환 블록(220)은 라지 청크의 단위로 어드레스 맵을 로드한다. 여기에서, 라지 청크는 b개의 섹터 어드레스들의 그룹을 의미한다(b는 0보다 큰 정수). 이때, b는 a보다 크다. 라지 청크의 어드레스 맵은 a보다 큰 b개의 섹터 어드레스들과 해당 물리 어드레스들 사이의 어드레스 정보이다.
도 8은 도 7에 실시 예에 따라 구성된 제 1 및 제 2 어드레스 테이블들(ATBL1, ATBL2)을 보여주는 개념도이다.
도 8을 참조하면, 제 1 어드레스 테이블(ATBL1)은 스몰 청크들의 어드레스 맵들을 포함한다. 각 스몰 청크의 어드레스 맵(SADM)은 a개의 연속된 섹터 어드레스들에 각각 매핑되는 물리 어드레스들을 포함한다.
제 2 어드레스 테이블(ATBL2)는 라지 청크들의 어드레스 맵들을 포함한다. 각 라지 청크의 어드레스 맵(LADM)은 a보다 큰 b개의 연속된 섹터 어드레스들에 각각 매핑되는 물리 어드레스를 포함한다.
어드레스 맵(SADM)의 청크 사이즈(즉 스몰 청크의 사이즈)는 어드레스 맵(LADM)의 청크 사이즈(즉 라지 청크의 사이즈)보다 작다.
도 9는 스몰 청크 및 라지 청크를 설명하기 위한 개념도이다.
도 9를 참조하면, 호스트(Host, 도 1 참조)로부터 수신 가능한 섹터 어드레스들(SCT_1~SCT_p)은 a개의 연속된 섹터 어드레스들의 단위로 구분될 수 있다. 이에 따라, 섹터 어드레스들(SCT_1~SCT_p)은 제 1 내지 제 X 스몰 청크들(schn1~schnX)로 구분된다.
각 스몰 청크는 a개의 연속된 섹터 어드레스들을 포함한다. 제 1 스몰 청크(schn1)는 제 1 내지 제 a 섹터 어드레스들(SCT_1~SCT_a)을 포함한다. 제 2 스몰 청크(schn2)는 제 a+1 내지 제 2a 섹터 어드레스들(SCT_a+1~SCT_2a)을 포함한다. 제 3 스몰 청크(schn3)는 제 2a+1 내지 제 3a 섹터 어드레스들(SCT_2a+1~SCT_3a)을 포함한다. 제 4 스몰 청크(schn4)는 제 3a+1 내지 제 4a 섹터 어드레스들(SCT_3a+1~SCT_4a)을 포함한다. 제 X 스몰 청크(schnX)는 제 (p-1)a+1 내지 제 p 섹터 어드레스들(SCT_(p-1)a+1~SCT_p)을 포함한다.
이와 다르게, 섹터 어드레스들(SCT_1~SCT_p)은 a보다 큰 b개의 연속된 섹터 어드레스들의 단위로 구분될 수 있다.
각 라지 청크는 b개의 연속된 섹터 어드레스들을 포함한다. 이때 b는 a보다 크다. 제 1 라지 청크(lchn1)는 제 1 내지 제 b 섹터 어드레스들(SCT_1~SCT_b)을 포함한다. 제 2 라지 청크(lchn2)는 제 b+1 내지 제 2b 섹터 어드레스들(SCT_b+1~SCT2b)을 포함한다. 제 Y 라지 청크(lchnY)는 제 (p-1)b+1 내지 제 p 섹터 어드레스들(SCT_(p-1)b+1~SCT_p)을 포함한다.
도 10은 도 8의 제 1 및 제 2 어드레스 테이블들(ATBL1, ATBL2)의 일 예를 보여주는 개념도이다. 도 10에서, 설명의 편의를 위해 각 어드레스 테이블에 포함된 어드레스 맵이 해당 청크 넘버로 표시된다.
도 10을 참조하면, 제 1 어드레스 테이블(ATBL1)은 제 2, 제 5, 제 1, 제 10, 제 16, 제 6, 제 9 및 제 15 스몰 청크들(schn2, schn5, schn1, schn10, schn16, schn6, schn9, schn15)의 어드레스 맵들을 포함한다.
각 스몰 청크의 어드레스 맵(SADM)은 a개의 섹터 어드레스들에 각각 대응하는 물리 어드레스들을 포함한다. 예를 들면, 도 10에 도시된 바와 같이, 제 1 스몰 청크(schn1)의 어드레스 맵은 제 1 내지 제 a 섹터 어드레스들(SCT_1~SCT_a)에 각각 대응하는 물리 어드레스들(PA_1~PA_a)을 포함한다. 실시 예로서, 각 스몰 청크의 어드레스 맵은 섹터 어드레스 넘버를 기준으로 물리 어드레스들이 기재되는 방식의 비트 맵으로서 구현될 수 있다.
실시 예로서, 제 1 어드레스 테이블(ATBL1)은 LRU(Least Recently Used) 방식으로 관리될 수 있다. LRU(Least Recently Used) 방식에 따라, 제 1 어드레스 테이블(ATBL1)에 새로운 스몰 청크의 어드레스 맵이 업데이트될 수 있다. LRU 방식에 따라, 스몰 청크들(schn2, schn5, schn1, schn10, schn16, schn6, schn9, schn15)의 어드레스 맵들은 제 1 어드레스 테이블(ATBL1)로부터 제외될 수 있다.
제 2 어드레스 테이블(ATBL2)은 제 4, 제 2, 제 6 및 제 9 라지 청크들(lchn4, lchn2, lchn6, lchn9)의 어드레스 맵들을 포함한다.
각 라지 청크의 어드레스 맵(LADM)은 b개의 섹터 어드레스들에 각각 대응하는 물리 어드레스들을 포함한다. 예를 들면, 도 10에 도시된 바와 같이, 제 2 라지 청크(lchn2)의 어드레스 맵은 제 b+1 내지 제 2b 섹터 어드레스들(SCT_b+1~SCT2b)에 각각 대응하는 물리 어드레스들(PA_b+1~PA_2b)을 포함한다. 실시 예로서, 각 라지 청크의 어드레스 맵은 섹터 어드레스 넘버를 기준으로 물리 어드레스가 기재되는 비트 맵의 형태로 구성될 수 있다.
실시 예로서, 제 2 어드레스 테이블(ATBL2)은 LRU 방식으로 관리될 수 있다.
다시 도 1 및 도 8을 참조하면, 어드레스 변환 블록(220)은, 호스트(Host)로부터 섹터 어드레스(SCT)가 수신되면, 제 1 및 제 2 어드레스 테이블들(ATBL1, ATBL2) 내에 섹터 어드레스(SCT)에 해당하는 어드레스 정보가 존재하는지 여부를 판별한다.
어드레스 변환 블록(220)은 제 1 어드레스 테이블(ATBL1)을 서치하고, 그 다음 제 2 어드레스 테이블(ATBL2)을 서치할 수 있다. 제 1 어드레스 테이블(ATBL1)을 서치하기 위해, 어드레스 변환 블록(220)은 섹터 어드레스(SCT)가 포함되는 스몰 청크를 판별한다. 예를 들면, 제 64 섹터 어드레스가 수신된 경우, 64에서 스몰 청크가 포함하는 섹터 어드레스들의 개수를 나눔으로써 제 64 섹터 어드레스를 포함하는 스몰 청크가 판별된다. 그리고 어드레스 변환 블록(220)은 제 1 어드레스 테이블(ATBL1) 내에서 판별된 스몰 청크를 서치한다. 판별된 스몰 청크가 제 1 어드레스 테이블(ATBL1) 내에 존재할 때, 어드레스 변환 블록(220)은 서치된 스몰 청크의 어드레스 맵을 참조하여 섹터 어드레스(SCT)에 대응하는 물리 어드레스를 결정한다. 예를 들면, 어드레스 변환 블록(220)은 서치된 스몰 청크의 어드레스 맵 내에서 제 64 섹터 어드레스를 서치하고, 서치된 제 64 섹터 어드레스에 대응하는 물리 어드레스를 결정할 것이다.
제 1 어드레스 테이블(ATBL1) 내에 섹터 어드레스(SCT)가 포함된 스몰 청크의 어드레스 정보가 존재하지 않는 경우, 어드레스 변환 블록(220)은 섹터 어드레스(SCT)가 포함된 라지 청크를 판별한다. 제 2 어드레스 테이블(ATBL2) 중 섹터 어드레스(SCT)에 대응하는 라지 청크를 판별한다. 예를 들면, 제 64 섹터 어드레스가 수신된 경우, 64에서 라지 청크가 포함하는 섹터 어드레스들의 개수를 나눔으로써 제 64 섹터 어드레스를 포함하는 라지 청크가 판별된다.
이후 어드레스 변환 블록(220)은 제 2 어드레스 테이블(ATBL2) 내에서 판별된 라지 청크를 서치한다.
제 1 및 제 2 어드레스 테이블들(ATBL1, ATBL2) 내에 섹터 어드레스(SCT)를 포함하는 어드레스 정보가 존재하지 않는다고 가정한다. 어드레스 변환 블록(220)은 섹터 어드레스(SCT)의 어드레스 정보를 제 1 메모리 영역(211) 또는 제 2 메모리 영역(212)으로 로드할 것이다.
섹터 어드레스(SCT)의 어드레스 정보는 제 1 메모리 영역(211)으로 로드될 수 있다. 어드레스 변환 블록(220)은 섹터 어드레스(SCT)를 포함하는 스몰 청크를 판별하고, 판별된 스몰 청크의 어드레스 맵(SADM)을 불휘발성 메모리(100)로부터 읽고, 읽어진 스몰 청크의 어드레스 맵(SADM)을 제 1 어드레스 테이블(ATBL1)에 업데이트할 것이다. 그리고 어드레스 변환 블록(220)은 업데이트된 스몰 청크의 어드레스 맵(SADM)을 참조하여 섹터 어드레스(SCT)를 물리 어드레스로 변환할 것이다.
섹터 어드레스(SCT)의 어드레스 정보는 제 2 메모리 영역(212)으로 로드될 수 있다. 어드레스 변환 블록(220)은 섹터 어드레스(SCT)를 포함하는 라지 청크를 판별하고, 판별된 라지 청크의 어드레스 맵(LADM)을 제 2 어드레스 테이블(ATBL2)에 업데이트할 것이다. 그리고 어드레스 변환 블록(220)은 업데이트된 라지 청크의 어드레스 맵(LADM)을 참조하여 섹터 어드레스(SCT)를 물리 어드레스로 변환할 것이다.
청크 단위로 어드레스 테이블이 관리됨에 따라, 원하는 섹터 어드레스의 어드레스 정보가 어드레스 테이블 내에서 효율적으로 검색될 수 있다. 원하는 섹터 어드레스가 포함된 청크가 판별되면, 판별된 청크를 어드레스 테이블 내에서 서치하고, 서치된 청크 내에서 섹터 어드레스를 서치함으로써 어드레스 정보가 획득될 수 있다.
하지만, 청크 사이즈가 증가할수록, 어드레스 테이블 중 호스트(Host)로부터 수신되지 않은 섹터 어드레스에 대한 어드레스 정보가 차지하는 비율은 높아진다. 반면, 청크 사이즈가 감소할수록, 어드레스 테이블 중 호스트(Host)로부터 수신된 섹터 어드레스의 어드레스 정보가 차지하는 비율이 높아진다. 즉, 청크 사이즈가 감소할수록 어드레스 정보의 무결성은 높아진다.
본 발명의 실시 예에 따르면, 어드레스 변환 블록(220)이 독점하는 메모리 영역(211)에 스몰 청크 단위로 어드레스 맵(SADM)을 저장함으로써, 해당 메모리 영역(211)의 어드레스 정보의 무결성이 높아진다. 무결성이 높아진다는 것은 메모리 영역(211)에 호스트(Host)로부터 수신되는 섹터 어드레스(SCT)가 존재할 확률이 높아진다는 것을 의미할 수 있다. 무결성이 높은 어드레스 정보를 어드레스 변환 블록(220)이 독점하는 메모리 영역(211)에서 유지함으로써, 컨트롤러(200)의 동작 성능이 향상될 수 있다.
청크 사이즈가 감소할수록, 어드레스 테이블 내에 청크들의 개수가 증가한다. 이에 따라 해당 어드레스 테이블을 관리하기 위한 비용은 증가한다. 예를 들면, 호스트(Host)로부터의 섹터 어드레스(SCT)를 포함하는 청크를 어드레스 테이블 내에서 서치하는 데에 소요되는 시간, 램(210) 내에서 청크들 각각이 저장된 위치에 대한 정보, LRU 방식으로 청크들 각각을 관리하기 위한 정보는 증가할 수 있다.
본 발명의 실시 예에 따르면, 어드레스 변환 블록(220)과 기능 블록들(231~23n)이 공유하는 메모리 영역(212)에는 라지 청크 단위로 어드레스 맵(LADM)을 저장한다. 따라서, 삭제될 가능성이 높은 제 2 메모리 영역(212)의 어드레스 정보는 그것의 관리 비용을 감소시키도록 구성된다.
도 11은 어드레스 변환 블록(220)의 동작 방법의 응용 예를 보여주는 순서도이다.
도 1 및 도 11을 참조하면, S210단계에서, 호스트(Host)로부터 섹터 어드레스(SCT)가 수신된다. S220단계에서, 어드레스 변환 블록(220)은 섹터 어드레스(SCT)가 제 1 메모리 영역(211)에 존재하는지 여부를 판별한다. 어드레스 변환 블록(220)은 제 1 어드레스 테이블(ATBL1)의 스몰 청크들 중 섹터 어드레스(SCT)를 포함하는 스몰 청크가 존재하는지 여부를 판별할 것이다. 만약 그렇다면, S260단계가 수행된다. 만약 그렇지 않다면, S230단계가 수행된다.
S230단계에서, 어드레스 변환 블록(220)은 섹터 어드레스(SCT)가 제 2 메모리 영역(212)에 존재하는지 여부를 판별한다. 어드레스 변환 블록(220)은 제 2 어드레스 테이블(ATBL2)의 라지 청크들 중 섹터 어드레스(SCT)를 포함하는 라지 청크가 존재하는지 여부를 판별한다. 만약 그렇다면, S280단계가 수행된다. 만약 그렇지 않다면, S240단계가 수행된다.
이후, 어드레스 변환 블록(220)은 섹터 어드레스(SCT)의 타입을 판별한다. 도 11의 S240단계와 같이, 어드레스 변환 블록(220)은 섹터 어드레스(SCT)가 핫 데이터에 해당하는지 여부를 판별할 수 있다. 핫 데이터는 호스트(Host)로부터 빈번하게 수신되는 섹터 어드레스를 의미할 수 있다. 콜드 데이터는 핫 데이터가 아닌 섹터 어드레스를 의미할 수 있다.
섹터 어드레스(SCT)의 타입을 판별하는 것은 다양한 방법들을 통해 수행될 수 있음이 이해될 것이다. 예를 들면, 특정한 크기를 갖는 큐(queue)가 제공되고, 호스트(Host)로부터 섹터 어드레스(SCT)가 수신될 때마다 큐에 섹터 어드레스(SCT)가 입력될 것이다. 큐에 저장되어 있는 섹터 어드레스는 핫 데이터로서 판별될 수 있다. 큐에 저장되지 않은 섹터 어드레스는 콜드 데이터로서 판별될 수 있다. 이 밖에도, 다양한 방법들을 통해 섹터 어드레스(SCT)의 타입이 판별될 수 있다. 섹터 어드레스(SCT)가 핫 데이터일 때 S250단계가 수행된다. 섹터 어드레스(SCT)가 콜드 데이터일 때 S270단계가 수행된다.
S250단계에서, 어드레스 변환 블록(220)은 섹터 어드레스(SCT)가 포함되는 스몰 청크의 어드레스 맵을 불휘발성 메모리(100)로부터 제 1 메모리 영역(211)에 로드한다. 어드레스 변환 블록(220)은 섹터 어드레스(SCT)가 포함되는 스몰 청크를 판별하고, 판별된 스몰 청크의 어드레스 맵을 불휘발성 메모리(100)로부터 읽고, 읽어진 어드레스 맵을 제 1 메모리 영역(211)에 저장할 것이다.
S260단계에서, 어드레스 변환 블록(220)은 제 1 어드레스 테이블(ATBL1)을 참조하여 섹터 어드레스(SCT)에 대응하는 물리 어드레스를 제공한다.
S270단계에서, 어드레스 변환 블록(220)은 섹터 어드레스(SCT)가 포함되는 라지 청크의 어드레스 맵을 불휘발성 메모리(100)로부터 제 2 메모리 영역(212)에 로드한다.
S280단계에서, 어드레스 변환 블록(220)은 제 2 어드레스 테이블(ATBL2)을 참조하여 섹터 어드레스(SCT)에 대응하는 물리 어드레스를 제공한다.
본 발명의 실시 예에 따르면, 핫 데이터에 해당하는 어드레스 정보는 어드레스 변환 블록(220)에 의해 독점되는 메모리 영역(211)에 저장한다. 콜드 데이터에 해당하는 어드레스 정보는 어드레스 변환 블록(220) 및 다른 기능 블록들(231~23n)에 의해 공유되는 메모리 영역(212)에 저장한다. 이에 따라, 핫 데이터에 해당하는 어드레스 정보를 보존하면서도, 램(210)의 저장 공간을 효율적으로 사용할 수 있다.
도 12는 어드레스 변환 블록(220)의 동작 방법의 다른 응용 예를 보여주는 순서도이다. 도 13은 가비지 컬렉션 시 희생 블록들(BLK1, BLK2)을 보여주는 도면이다.
본 발명의 실시 예에 따르면, 가비지 컬렉션 시에 요구되는 어드레스 정보는 제 2 메모리 영역(212)에 로드될 수 있다.
도 13을 참조하여 도 12를 설명하면, S310단계에서, 어드레스 변환 블록(220)은 희생 블록들(BLK1, BLK2)에 대응하는 섹터 어드레스들을 읽는다.
실시 예로서, 메모리 셀 어레이(110, 도 1 참조)의 각 메모리 블록은 적어도 하나의 메타 페이지를 포함하고, 메타 페이지에는 해당 메모리 블록에 포함된 페이지들에 대응하는 섹터 어드레스들이 저장될 수 있다. 이러한 경우, 어드레스 변환 블록(220)은 희생 블록들(BLK1, BLK2) 각각에 포함된 메타 페이지들(Mpage1, Mpage2)을 읽을 수 있다.
다른 실시 예로서, 메모리 셀 어레이(110)의 미리 정해진 메모리 블록에 각 메모리 블록의 페이지들에 대응하는 섹터 어드레스들이 저장될 수 있다. 이러한 경우, 어드레스 변환 블록(220)은 미리 정해진 메모리 블록을 읽을 수 있다.
S320단계에서, 어드레스 변환 블록(220)은 읽어진 섹터 어드레스들에 대응하는 라지 청크들의 어드레스 맵들을 제 2 메모리 영역(212)에 로드한다. 어드레스 변환 블록(220)은 섹터 어드레스들 각각에 대응하는 라지 청크를 판별하고, 판별된 라지 청크의 어드레스 맵을 제 2 메모리 영역(212)에 로드할 것이다.
S330단계에서, 어드레스 변환 블록(220)은 로드된 어드레스 맵들을 참조하여 희생 블록들(BLK1, BLK2)의 페이지들에 유효한 데이터가 저장되었는지 여부를 판별한다. 예를 들면, 어드레스 변환 블록(220)은 어드레스 맵들을 참조하여 각 섹터 어드레스에 매핑되는 물리 어드레스를 판별하고, 판별된 물리 어드레스가 희생 블록의 페이지를 가리키는지 여부를 판별한다. 만약 그렇다면, 그것은 해당 페이지가 유효한 데이터를 저장하는 페이지(유효 페이지, valid page)임을 의미한다. 만약 그렇지 않다면, 그것은 해당 페이지가 무효한 데이터를 저장하는 페이지(무효 페이지, invalid page)임을 의미한다.
무효 페이지가 발생하는 일정 시간이 경과하였다면, 해당 메모리 블록에 아직 존재하는 유효 페이지는 빈번하게 액세스되지 않을 가능성이 높다. 본 발명의 실시 예에 따르면, 희생 블록과 관련된 어드레스 정보는 제 2 메모리 영역(212)에 로드할 수 있다. 이에 따라 제 1 메모리 영역(211)의 어드레스 정보의 무결성이 유지된 채로 가비지 컬렉션이 수행될 수 있다.
도 14는 도 1의 컨트롤러(200)의 변형 실시 예(400)를 보여주는 블록도이다.
도 14를 참조하면, 컨트롤러(400)는 어드레스 변환 블록(220), 제 1 내지 제 n 기능 블록들(231~23n), 호스트 인터페이스(240), 메모리 인터페이스(250), 제 1 및 제 2 메모리 영역들(411, 412)을 포함한다.
어드레스 변환 블록(220), 제 1 내지 제 n 기능 블록들(231~23n), 호스트 인터페이스(240) 및 메모리 인터페이스(250)는 도 1을 참조한 설명과 마찬가지로 설명된다. 이하, 중복되는 설명은 생략된다.
제 1 및 제 2 메모리 영역들(411, 412)은 서로 다른 램들에 포함될 수 있다. 즉, 본 발명의 실시 예에 따른 메모리 영역들은 제 1 및 제 2 메모리 영역들(411, 412)과 같이 서로 다른 램들에 포함될 수 있고, 도 1의 제 1 및 제 2 메모리 영역들(211, 212)와 같이 동일한 램에 포함될 수도 있다.
도 15는 도 1의 반도체 장치(1000)의 응용 예(5000)를 보여주는 블록도이다.
도 15를 참조하면, 반도체 장치(5000)는 불휘발성 메모리(5100) 및 컨트롤러(200)를 포함한다.
불휘발성 메모리(5100)는 복수의 불휘발성 메모리 칩들을 포함한다. 각 불휘발성 메모리 칩은 도 1을 참조하여 설명된 불휘발성 메모리(100)와 마찬가지로 구성되고, 동작할 것이다.
복수의 불휘발성 메모리 칩들은 복수의 그룹들로 분할된다. 복수의 그룹들은 각각 제 1 내지 제 k 채널들(CH1~CHk)을 통해 컨트롤러(200)와 통신한다.
각 그룹은 하나의 공통 채널을 통해 컨트롤러(200)와 통신하도록 구성된다. 컨트롤러(200)는 도 1을 참조하여 설명된 컨트롤러(200)와 마찬가지로 구성되고, 복수의 채널들(CH1~CHk)을 통해 불휘발성 메모리(5100)의 복수의 불휘발성 메모리 칩들을 제어하도록 구성된다.
도 15에서, 하나의 채널에 복수의 불휘발성 메모리 칩들이 연결되는 것으로 설명되었다. 그러나, 하나의 채널에 하나의 불휘발성 메모리 칩이 연결되도록 반도체 장치(5000)이 변형될 수 있음이 이해될 것이다.
컨트롤러(200) 및 불휘발성 메모리(5100)는 하나의 반도체 장치로 집적될 수 있다. 예시적인 실시 예로서, 컨트롤러(200) 및 불휘발성 메모리(5100)는 하나의 반도체 장치로 집적되어, 메모리 카드를 구성할 수 있다. 예를 들면, 컨트롤러(200) 및 불휘발성 메모리(5100)는 하나의 반도체 장치로 집적되어 PC 카드(PCMCIA, personal computer memory card international association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억장치(UFS) 등과 같은 메모리 카드를 구성할 것이다.
컨트롤러(200) 및 불휘발성 메모리(5100)는 하나의 반도체 장치로 집적되어 반도체 드라이브(SSD, Solid State Drive)를 구성할 수 있다. 반도체 드라이브(SSD)는 반도체 메모리에 데이터를 저장하도록 구성되는 저장 장치를 포함한다. 메모리 시스템(5000)이 반도체 드라이브(SSD)로 이용되는 경우, 메모리 시스템(5000)에 연결된 호스트(Host)의 동작 속도는 획기적으로 개선된다.
실시 예로서, 메모리 시스템(5000)은 컴퓨터, UMPC (Ultra Mobile PC), 워크스테이션, 넷북(net-book), PDA (Personal Digital Assistants), 포터블(portable) 컴퓨터, 웹 타블렛(web tablet), 무선 전화기(wireless phone), 모바일 폰(mobile phone), 스마트폰(smart phone), e-북(e-book), PMP(portable multimedia player), 휴대용 게임기, 네비게이션(navigation) 장치, 블랙박스(black box), 디지털 카메라(digital camera), 3차원 수상기(3-dimensional television), 디지털 음성 녹음기(digital audio recorder), 디지털 음성 재생기(digital audio player), 디지털 영상 녹화기(digital picture recorder), 디지털 영상 재생기(digital picture player), 디지털 동영상 녹화기(digital video recorder), 디지털 동영상 재생기(digital video player), 정보를 무선 환경에서 송수신할 수 있는 장치, 홈 네트워크를 구성하는 다양한 전자 장치들 중 하나, 컴퓨터 네트워크를 구성하는 다양한 전자 장치들 중 하나, 텔레매틱스 네트워크를 구성하는 다양한 전자 장치들 중 하나, RFID 장치, 또는 컴퓨팅 시스템을 구성하는 다양한 구성 요소들 중 하나 등과 같은 전자 장치의 다양한 구성 요소들 중 하나로 제공된다.
실시 예로서, 불휘발성 메모리(5100) 또는 메모리 시스템(5000)은 다양한 형태들의 패키지로 실장될 수 있다. 예를 들면, 불휘발성 메모리(5100) 또는 메모리 시스템(5000)은 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 integrated circuit (SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline Package(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP) 등과 같은 방식으로 패키지화되어 실장될 수 있다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위와 기술적 사상에서 벗어나지 않는 한도 내에서 다양한 변경이 가능하다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100: 불휘발성 메모리
200: 컨트롤러
210: 램
220: 어드레스 변환 블록
230: 제 1 내지 제 n 기능 블록들
240: 호스트 인터페이스
250: 메모리 인터페이스
260: 버스
ATBL1, ATBL2: 제 1 및 제 2 어드레스 테이블들
schn1~schnX: 스몰 청크들
lchn1~lchnY: 라지 청크들

Claims (18)

  1. 불휘발성 메모리를 제어하는 컨트롤러에 있어서:
    제 1 어드레스 테이블을 저장하는 제 1 메모리 영역;
    제 2 어드레스 테이블을 저장하는 제 2 메모리 영역;
    상기 제 1 및 제 2 메모리 영역에 액세스하며, 상기 제 1 및 제 2 어드레스 테이블들을 참조하여 호스트로부터의 섹터 어드레스를 상기 불휘발성 메모리에 해당하는 물리 어드레스로 변환하도록 구성되는 어드레스 변환 블록; 및
    상기 어드레스 변환 블록과 상기 제 2 메모리 영역을 공유하는 적어도 하나의 기능 블록을 포함하되,
    상기 어드레스 변환 블록은 상기 제 1 메모리 영역을 독점하는 컨트롤러.
  2. 제 1 항에 있어서,
    상기 어드레스 변환 블록은 스몰 청크 단위로 어드레스 맵들을 상기 불휘발성 메모리로부터 상기 제 1 메모리 영역에 로드하여 상기 제 1 어드레스 테이블을 생성하되, 상기 스몰 청크는 a개의 섹터 어드레스들을 포함하고,
    상기 어드레스 변환 블록은 라지 청크 단위로 어드레스 맵들을 상기 불휘발성 메모리로부터 상기 제 2 메모리 영역에 로드하여 상기 제 2 어드레스 테이블을 생성하되, 상기 라지 청크는 상기 a개보다 큰 b개의 섹터 어드레스들을 포함하는 컨트롤러.
  3. 제 2 항에 있어서,
    상기 어드레스 변환 블록은 상기 호스트로부터의 섹터 어드레스가 포함되는 스몰 청크를 판별하고, 상기 판별된 스몰 청크를 상기 제 1 어드레스 테이블 내에서 서치하는 컨트롤러.
  4. 제 3 항에 있어서,
    상기 어드레스 변환 블록은,
    상기 판별된 스몰 청크가 상기 제 1 어드레스 테이블 내에 존재할 때, 상기 서치된 스몰 청크의 어드레스 맵을 참조하여 상기 호스트로부터의 섹터 어드레스를 상기 물리 어드레스로 변환하고,
    상기 판별된 스몰 청크가 상기 제 1 어드레스 테이블 내에 존재하지 않을 때, 상기 호스트로부터의 섹터 어드레스가 포함되는 라지 청크를 판별하고, 상기 판별된 라지 청크를 상기 제 2 어드레스 테이블 내에서 서치하는 컨트롤러.
  5. 제 4 항에 있어서,
    상기 어드레스 변환 블록은
    상기 서치된 라지 청크의 어드레스 맵을 참조하여 상기 호스트로부터의 섹터 어드레스를 상기 물리 어드레스로 변환하는 컨트롤러.
  6. 제 2 항에 있어서,
    상기 어드레스 변환 블록은 상기 호스트로부터의 섹터 어드레스가 핫 데이터에 해당할 때, 상기 호스트로부터의 섹터 어드레스가 포함되는 스몰 청크를 판별하고 상기 판별된 스몰 청크의 어드레스 맵을 상기 불휘발성 메모리로부터 읽어 상기 제 1 어드레스 테이블에 업데이트하는 컨트롤러.
  7. 제 6 항에 있어서,
    상기 어드레스 변환 블록은 상기 업데이트된 스몰 청크의 어드레스 맵을 참조하여 상기 물리 어드레스를 결정하는 컨트롤러.
  8. 제 2 항에 있어서,
    상기 어드레스 변환 블록은 상기 호스트로부터의 섹터 어드레스가 콜드 데이터일 때, 상기 호스트로부터의 섹터 어드레스가 포함되는 라지 청크를 판별하고 상기 판별된 라지 청크의 어드레스 맵을 상기 불휘발성 메모리로부터 읽어 상기 제 2 어드레스 테이블에 업데이트하는 컨트롤러.
  9. 제 8 항에 있어서,
    상기 어드레스 변환 블록은 상기 업데이트된 라지 청크의 어드레스 맵을 참조하여 상기 물리 어드레스를 결정하는 컨트롤러.
  10. 제 2 항에 있어서,
    상기 어드레스 변환 블록은, 가비지 컬렉션 시에 상기 불휘발성 메모리 중 희생 블록에 대응하는 섹터 어드레스들을 읽고, 상기 읽어진 섹터 어드레스들을 포함하는 라지 청크들을 판별하고, 판별된 라지 청크들의 어드레스 맵들을 상기 제 2 메모리 영역에 로드하는 컨트롤러.
  11. 제 10 항에 있어서,
    상기 어드레스 변환 블록은 상기 로드된 어드레스 맵들을 참조하여 상기 희생 블록의 페이지들 각각이 유효한지 여부를 판별하는 컨트롤러.
  12. 제 11 항에 있어서,
    상기 희생 블록 중 유효한 페이지들의 데이터를 읽고, 상기 읽어진 데이터를 상기 불휘발성 메모리 중 타겟 블록의 페이지들에 쓰는 가비지 컬렉션 블록을 더 포함하는 컨트롤러.
  13. 제 1 항에 있어서,
    상기 제 1 어드레스 테이블은 스몰 청크 단위로 구분된 어드레스 맵들을 포함하되, 상기 스몰 청크는 a개의 섹터 어드레스들을 포함하고,
    상기 제 2 어드레스 테이블은 라지 청크 단위로 구분된 어드레스 맵들을 포함하되, 상기 라지 청크는 상기 a개보다 큰 b개의 섹터 어드레스들을 포함하는 컨트롤러.
  14. 제 13 항에 있어서,
    상기 스몰 청크의 어드레스 맵들 각각은 상기 a개의 섹터 어드레스들에 매핑되는 물리 어드레스들을 포함하는 컨트롤러.
  15. 제 13 항에 있어서,
    상기 라지 청크의 어드레스 맵들 각각은 상기 b개의 섹터 어드레스들에 매핑되는 물리 어드레스들을 포함하는 컨트롤러.
  16. 불휘발성 메모리; 및
    상기 불휘발성 메모리를 제어하는 컨트롤러를 포함하되,
    상기 컨트롤러는,
    제 1 어드레스 테이블을 저장하는 제 1 메모리 영역;
    제 2 어드레스 테이블을 저장하는 제 2 메모리 영역;
    상기 제 1 및 제 2 메모리 영역에 액세스하며, 상기 제 1 및 제 2 어드레스 테이블들을 참조하여 호스트로부터의 섹터(sector) 어드레스를 상기 불휘발성 메모리에 해당하는 물리 어드레스로 변환하도록 구성되는 어드레스 변환 블록; 및
    상기 어드레스 변환 블록과 상기 제 2 메모리 영역을 공유하는 적어도 하나의 기능 블록을 포함하되,
    상기 어드레스 변환 블록은 상기 제 1 메모리 영역을 독점하는 반도체 장치.
  17. 제 16 항에 있어서,
    상기 불휘발성 메모리는 어드레스 정보가 저장되는 메모리 셀 어레이를 포함하되,
    상기 어드레스 변환 블록은 상기 어드레스 정보를 선택적으로 로드하여 상기 제 1 및 제 2 어드레스 테이블들을 생성하는 반도체 장치.
  18. 제 17 항에 있어서,
    상기 어드레스 변환 블록은 상기 어드레스 정보로부터 스몰 청크 단위로 어드레스 맵들을 상기 제 1 메모리 영역에 로드하여 상기 제 1 어드레스 테이블을 생성하되, 상기 스몰 청크는 a개의 섹터 어드레스들을 포함하고,
    상기 어드레스 변환 블록은 상기 어드레스 정보로부터 라지 청크 단위로 어드레스 맵들을 상기 제 2 메모리 영역에 로드하여 상기 제 2 어드레스 테이블을 생성하되, 상기 라지 청크는 상기 a개보다 큰 b개의 섹터 어드레스들을 포함하는 반도체 장치.
KR1020140067860A 2014-06-03 2014-06-03 불휘발성 메모리를 제어하는 컨트롤러 및 그것을 포함하는 반도체 장치 KR20150139718A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020140067860A KR20150139718A (ko) 2014-06-03 2014-06-03 불휘발성 메모리를 제어하는 컨트롤러 및 그것을 포함하는 반도체 장치
US14/535,049 US9465747B2 (en) 2014-06-03 2014-11-06 Controller for controlling non-volatile memory and semiconductor device including the same
CN201410705032.1A CN105279102B (zh) 2014-06-03 2014-11-26 用于控制非易失性存储器的控制器和包括其的半导体器件

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140067860A KR20150139718A (ko) 2014-06-03 2014-06-03 불휘발성 메모리를 제어하는 컨트롤러 및 그것을 포함하는 반도체 장치

Publications (1)

Publication Number Publication Date
KR20150139718A true KR20150139718A (ko) 2015-12-14

Family

ID=54701908

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140067860A KR20150139718A (ko) 2014-06-03 2014-06-03 불휘발성 메모리를 제어하는 컨트롤러 및 그것을 포함하는 반도체 장치

Country Status (3)

Country Link
US (1) US9465747B2 (ko)
KR (1) KR20150139718A (ko)
CN (1) CN105279102B (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3553665A4 (en) * 2016-12-28 2020-01-29 Huawei Technologies Co., Ltd. METHOD, DEVICE AND SYSTEM FOR ACCESSING A NON-VOLATILE MEMORY

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003085524A2 (en) 2002-04-04 2003-10-16 Infineon Technologies Ag Improved architecture with shared memory
US20090193184A1 (en) * 2003-12-02 2009-07-30 Super Talent Electronics Inc. Hybrid 2-Level Mapping Tables for Hybrid Block- and Page-Mode Flash-Memory System
CN100511183C (zh) * 2004-06-30 2009-07-08 深圳市朗科科技股份有限公司 减少存储介质中的数据冗余的方法
US7797479B2 (en) * 2005-06-30 2010-09-14 Intel Corporation Technique to write to a non-volatile memory
KR100806343B1 (ko) * 2006-10-19 2008-02-27 삼성전자주식회사 플래시 메모리를 포함한 메모리 시스템 및 그것의 맵핑테이블 관리 방법
US7930515B2 (en) * 2008-07-29 2011-04-19 International Business Machines Corporation Virtual memory management
US8364931B2 (en) * 2009-06-29 2013-01-29 Mediatek Inc. Memory system and mapping methods using a random write page mapping table
US8516219B2 (en) 2009-07-24 2013-08-20 Apple Inc. Index cache tree
KR101811297B1 (ko) * 2011-03-15 2017-12-27 삼성전자주식회사 불휘발성 메모리를 제어하는 메모리 컨트롤러
KR20120128978A (ko) * 2011-05-18 2012-11-28 삼성전자주식회사 데이터 저장 장치 및 그것의 데이터 관리 방법
US9256545B2 (en) * 2012-05-15 2016-02-09 Mellanox Technologies Ltd. Shared memory access using independent memory maps
US9575884B2 (en) * 2013-05-13 2017-02-21 Qualcomm Incorporated System and method for high performance and low cost flash translation layer
US9383927B2 (en) * 2014-05-28 2016-07-05 SandDisk Technologies LLC Method and system for creating a mapping table cache from an interleaved subset of contiguous mapping data for a storage device

Also Published As

Publication number Publication date
US9465747B2 (en) 2016-10-11
CN105279102B (zh) 2019-05-28
CN105279102A (zh) 2016-01-27
US20150347312A1 (en) 2015-12-03

Similar Documents

Publication Publication Date Title
KR102291803B1 (ko) 불휘발성 메모리 시스템의 동작 방법, 및 그것을 포함하는 사용자 시스템의 동작 방법
US10474585B2 (en) Nonvolatile memory system and a method of operating the nonvolatile memory system
US10606761B2 (en) Method for accessing flash memory module and associated flash memory controller and electronic device
US11030094B2 (en) Apparatus and method for performing garbage collection by predicting required time
KR20200064499A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
KR20160068108A (ko) 반도체 메모리 장치를 포함하는 메모리 시스템 및 그것의 관리 방법
US9727250B2 (en) Nonvolatile memory system and operation method of a memory controller that manages page serial numbers according to program elapsed times of pages
US9690698B2 (en) Controller including map table, memory system including semiconductor memory device, and method of operating the same
US10860231B2 (en) Memory system for adjusting map segment based on pattern and operating method thereof
KR20160078611A (ko) 불휘발성 메모리 시스템 및 그것의 동작 방법
KR20100082185A (ko) 플래시 메모리, 캐시 메모리, 그리고 제어기를 포함하는 사용자 장치
KR20120105294A (ko) 불휘발성 메모리를 제어하는 메모리 컨트롤러
KR20180087925A (ko) 논리 어드레스와 물리 어드레스 사이에서 해싱 기반 변환을 수행하는 스토리지 장치
CN105917303B (zh) 一种控制器、识别数据块稳定性的方法和存储系统
US11687262B2 (en) Memory system and method of operating the same
KR20200019421A (ko) 메모리 시스템 내 대용량 데이터 저장이 가능한 블록에서의 유효 데이터 체크 방법 및 장치
US20160378375A1 (en) Memory system and method of operating the same
KR20200016074A (ko) 데이터 처리 시스템 및 그의 동작 방법
KR102653373B1 (ko) 컨트롤러 및 컨트롤러의 동작방법
US8656084B2 (en) User device including flash memory storing index and index accessing method thereof
US20210200469A1 (en) Memory controller having data compressor and method of operating the same
KR20200014175A (ko) 소요시간을 예측하여 가비지 컬렉션을 수행하는 방법 및 장치
KR20150139718A (ko) 불휘발성 메모리를 제어하는 컨트롤러 및 그것을 포함하는 반도체 장치
US11775211B2 (en) Memory controller and method of operating the same
US20200183608A1 (en) Memory system and operation method thereof

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