KR102521746B1 - 메모리 장치의 주소 맵핑을 관리하는 반도체 장치 및 이를 포함하는 데이터 저장 장치 - Google Patents

메모리 장치의 주소 맵핑을 관리하는 반도체 장치 및 이를 포함하는 데이터 저장 장치 Download PDF

Info

Publication number
KR102521746B1
KR102521746B1 KR1020170173788A KR20170173788A KR102521746B1 KR 102521746 B1 KR102521746 B1 KR 102521746B1 KR 1020170173788 A KR1020170173788 A KR 1020170173788A KR 20170173788 A KR20170173788 A KR 20170173788A KR 102521746 B1 KR102521746 B1 KR 102521746B1
Authority
KR
South Korea
Prior art keywords
cache
mapping
information
block
blocks
Prior art date
Application number
KR1020170173788A
Other languages
English (en)
Other versions
KR20190072752A (ko
Inventor
우영재
민상렬
Original Assignee
에스케이하이닉스 주식회사
서울대학교산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이하이닉스 주식회사, 서울대학교산학협력단 filed Critical 에스케이하이닉스 주식회사
Priority to KR1020170173788A priority Critical patent/KR102521746B1/ko
Priority to US16/129,399 priority patent/US10747684B2/en
Publication of KR20190072752A publication Critical patent/KR20190072752A/ko
Priority to US16/924,946 priority patent/US11321243B2/en
Application granted granted Critical
Publication of KR102521746B1 publication Critical patent/KR102521746B1/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
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • 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/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • 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
    • 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/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

Abstract

본 기술에 의한 반도체 장치는 메모리 장치에 저장된 맵핑 데이터를 캐싱하는 맵핑 캐시; 및 맵핑 캐시의 정보를 관리하는 캐시 제어기를 포함하되, 맵핑 캐시는 다수의 캐시 블록을 포함하는 제 1 캐시를 포함하고, 다수의 캐시 블록은 각각 그 내부에 저장된 맵핑 정보와 연관성을 가지는 다른 맵핑 정보를 저장하는 다른 캐시 블록에 대한 링크를 포함한다.

Description

메모리 장치의 주소 맵핑을 관리하는 반도체 장치 및 이를 포함하는 데이터 저장 장치{SEMICONDUCTOR DEVICE MANAGING ADDRESS MAPPING OF A SEMICONDUCTOR MEMORY DEVICE AND DATA STORAGE DEVICE INCLUDING THE SAME}
본 발명은 데이터 저장 장치에서 주소 맵핑을 관리하는 반도체 장치와 이를 포함하는 데이터 저장 장치에 관한 것이다.
낸드 플래시 메모리 장치와 같은 메모리 장치를 포함하는 데이터 저장 장치에서는 메모리 장치에 대한 주소 맵핑을 관리하는 동작이 필요하다.
이러한 반도체 장치는 읽기, 쓰기, 소거 등의 요청을 처리할 때 주소 맵핑 정보를 참조하거나 이를 갱신하는 등의 관리 동작을 수행한다.
이때 주소 맵핑 정보는 데이터 저장 장치의 용량이 증가함에 따라 증가하는 경향이 있다.
종래에는 주소 맵핑 정보를 별도의 메모리 장치에 저장하였는데 주소 맵핑 정보의 증가에 따라 이를 별도의 메모리 장치에 저장하는 것이 곤란해지고 있으며, 맵핑 데이터 크기가 증가함으로 인하여 이를 관리하는 프로세스가 전체 성능을 저하시킬 가능성도 커지고 있다.
이에 따라 데이터 저장 장치를 위하여 필요한 주소 맵핑 정보를 보다 효율적으로 관리하기 위한 기술이 요구되고 있다.
KR 10-1497860 B1 KR 10-2014-0062676 A
본 기술은 메모리 장치의 맵핑을 효율적으로 관리하는 반도체 장치와 이를 포함하는 데이터 저장 장치를 제공한다.
본 발명의 일 실시예에 의한 반도체 장치는 메모리 장치에 저장된 맵핑 데이터를 캐싱하는 맵핑 캐시; 및 맵핑 캐시의 정보를 관리하는 캐시 제어기를 포함하되, 맵핑 캐시는 다수의 캐시 블록을 포함하는 제 1 캐시를 포함하고, 다수의 캐시 블록은 각각 그 내부에 저장된 맵핑 정보와 연관성을 가지는 다른 맵핑 정보를 저장하는 다른 캐시 블록에 대한 링크를 포함한다.
본 발명의 일 실시예에 의한 반도체 장치는 메모리 장치의 맵핑 영역에 저장된 맵핑 데이터를 캐싱하는 맵핑 캐시; 및 맵핑 캐시의 정보를 관리하는 캐시 제어기를 포함하되, 맵핑 캐시는 각각 논리 주소에 따라 접근되는 다수의 캐시 블록을 포함하는 제 1 캐시; 각각 논리 주소에 따라 결정되는 가상 주소에 따라 접근되는 캐시 엔트리를 포함하는 제 2 캐시; 가상 주소와 연관된 캐시 블록에 대한 링크 정보를 저장하는 제 1 테이블; 및 가상 주소와 맵핑 영역의 물리 주소의 맵핑 관계를 저장하는 제 2 테이블을 포함하고, 하나의 캐시 블록에 저장되는 맵핑 정보의 개수는 하나의 캐시 엔트리에 저장되는 맵핑 정보의 개수보다 적고, 제 1 캐시의 다수의 캐시 블록은 그 내부에 저장된 맵핑 정보와 연관성을 가지는 다른 맵핑 정보를 저장하는 다른 캐시 블록에 대한 링크를 포함하고, 캐시 블록 사이의 연관성은 캐시 블록에 대응하는 논리 주소로부터 결정되는 가상 주소가 공통되는지에 따라 결정된다.
본 발명의 일 실시예에 의한 데이터 저장 장치는 일반 데이터를 저장하는 데이터 영역과 맵핑 데이터를 저장하는 맵핑 영역을 포함하는 메모리 장치; 호스트로부터 제공된 읽기/쓰기 요청을 관리하는 호스트 요청 관리부; 맵핑 데이터의 일부를 캐싱하고 호스트 요청 관리부의 요청에 따라 맵핑 정보를 관리하는 맵핑 관리부; 및 호스트 요청 관리부 및 맵핑 관리부의 요청에 따라 메모리 장치의 동작을 제어하는 메모리 제어기를 포함한다.
본 기술에 의한 데이터 저장 장치는 맵핑 정보를 데이터를 저장하는 메모리 장치의 일부 영역에 저장함으로써 맵핑 정보를 저장하기 위한 별도의 메모리 장치를 필요로 하지 않는다.
본 기술에 의한 반도체 장치는 맵핑 정보를 캐싱하고 이를 효율적으로 관리함으로써 맵핑 정보를 조회하고 수정하는 프로세스로 인하여 메모리 장치에 대한 읽기, 쓰기 성능이 저하되는 것을 방지한다.
도 1은 본 발명의 일 실시예에 의한 데이터 저장 장치의 블록도.
도 2는 도 1의 플래시 메모리 장치의 블록도.
도 3은 도 1의 맵핑 관리부의 블록도.
도 4는 제 1 캐시의 캐시 블록의 구조도.
도 5는 제 2 캐시의 캐시 라인의 구조도.
도 6 내지 도 8은 도 1의 맵핑 관리부의 동작을 나타내는 순서도.
이하에서는 첨부한 도면을 참조하여 본 발명의 실시예를 개시한다.
도 1은 본 발명의 일 실시예에 의한 데이터 저장 장치의 블록도이다.
본 발명의 일 실시예에 의한 데이터 저장 장치는 제어부(10), 호스트 인터페이스(20), 메모리 제어기(30), 메모리 장치(200)를 포함한다.
호스트 인터페이스(20)는 호스트로부터 제공된 읽기/쓰기 등의 요청을 제어부(10)에 전달하고 제어부(10)에서 제공된 처리 결과를 호스트에 전달한다.
본 실시예에서 메모리 장치(200)는 플래시 메모리 장치로 구현된다.
메모리 제어기(30)는 제어부(10)의 제어에 따라 메모리 제어 명령을 메모리 장치(200)에 전달하고, 메모리 장치(200)에서 명령을 수행하고 처리한 결과를 제어부(10)에 전달한다.
메모리 장치(200)가 플래시 메모리 장치인 경우 제어부(10)는 FTL(Flash Translation Layer)에 대응한다.
제어부(10)는 호스트로부터 제공된 명령을 처리하는 부분으로서 하드웨어, 소프트웨어 또는 그 조합으로 구현될 수 있다.
제어부(10)는 읽기/쓰기 등과 같이 호스트로부터 제공되는 요청을 관리하는 호스트 요청 관리부(11), 논리 주소와 물리 주소 사이의 맵핑 정보를 관리하는 맵핑 관리부(100), 가비지 콜렉션 동작을 관리하는 가비지 콜렉션 관리부(12)를 포함한다.
제어부(10)는 호스트 요청 관리부(11), 맵핑 관리부(100), 가비지 콜렉션 관리부(12)에서 제공되는 쓰기 요청을 플래시 프로그램 명령으로 변환하는 블록 제어기(13)를 더 포함한다.
블록 제어기(13)는 플래시 프로그램 명령을 메모리 제어기(30)에 제공하고 메모리 제어기(30)는 프로그램 명령에 따라 메모리 장치(200)를 물리적으로 제어한다.
호스트 요청 관리부(11)는 호스트로부터 제공된 읽기/쓰기 요청을 관리한다.
예를 들어 호스트 요청 관리부(11)는 읽기 요청에 대해서 맵핑 관리부(100)에 논리 주소에 대응하는 물리 주소를 조회하고, 이에 따라 맵핑 관리부(100)는 대응하는 물리 주소를 제공한다.
이후 호스트 요청 관리부(11)는 읽기 요청을 메모리 제어기(30)에 제공한다.
예를 들어 호스트 요청 관리부(11)는 첫 데이터를 쓰는 쓰기 요청에 대해서 호스트 요청 관리부(11)는 블록 제어기(13)에 플래시 프로그램 요청을 제공한다.
블록 제어기(13)는 물리 주소를 할당하여 메모리 제어기(30)에 플래시 프로그램 요청을 전달한다.
이후 플래시 프로그램 동작이 완료되면 메모리 제어기(30)는 블록 제어기(13)에 응답을 전달하고, 블록 제어기(13)는 호스트 요청 관리부(11)에 응답을 전달한다.
호스트 요청 관리부(11)는 맵핑 관리부(100)에 논리 주소에 대응하는 물리 주소를 갱신하도록 한다.
가비지 콜렉션 관리부(12)는 가비지 콜렉션 동작을 관리한다.
예를 들어 가비지 콜렉션 동작은 메모리 장치의 프리 블록의 개수가 임계점 이하로 줄어드는 경우에 수행될 수 있다.
맵핑 관리부(100)는 논리 주소와 물리 주소의 맵핑 관계를 관리한다.
본 발명의 일 실시예에서 맵핑 관리부(100)는 그 내부에 맵핑 캐시를 포함한다.
이에 따라 맵핑 관리부(100)는 읽기/쓰기/가비지 콜렉션 요청을 처리하면서 맵핑 캐시 및 메모리 장치 내부의 맵핑 데이터 영역을 조회하고 그 내부의 정보를 갱신한다.
호스트 요청 관리부(11), 가비지 콜렉션 관리부(12), 맵핑 관리부(100)에서 제공되는 읽기 요청은 메모리 제어기(30)에 직접 입력된다.
이에 비하여 블록 제어기(13)는 호스트 요청 관리부(11), 가비지 콜렉션 관리부(12), 맵핑 관리부(100)에서 제공되는 프로그램 요청을 플래시 프로그램 요청으로 변환하고 플래시 블록을 관리한다.
블록 제어기(13)는 쓰기 성능을 향상시키기 위하여 프로그램 요청을 수집하고 프로그램 요청을 메모리 제어기(30)에 제공한다.
블록 제어기(13)는 다수의 프로그램 요청을 메모리 제어기(30)에 동시에 제공할 수 있다.
블록 제어기(13)는 유효 페이지의 개수 등과 같이 플래시 블록에 대한 정보를 관리하고, 유효 페이지가 없는 블록을 선택하여 소거하고, 가비지 콜렉션 동작 시 희생 블록을 선택한다. 희생 블록을 선택하는 경우 유효 페이지가 가장 적은 수의 블록을 선택할 수 있다.
가비지 콜렉션 관리부(12)는 가비지 콜렉션 동작을 수행하여 블록 제어기(13)에서 충분한 수의 프리 블록을 관리하도록 한다.
블록 제어기(13)에서 희생 블록을 제공하는 경우 가비지 콜렉션 관리부(12)는 맵핑 관리부(100)를 참조하여 희생 블록에서 유효 페이지를 찾는다.
가비지 콜렉션 관리부(12)는 이들에 대한 맵핑 갱신 요청을 맵핑 관리부(100)에 제공하고 이에 대한 프로그램 요청을 블록 제어기(13)에 제공한다.
도 2는 도 1의 메모리 장치(200)의 블록도이다.
본 발명의 데이터 저장 장치는 맵핑 정보를 별도의 메모리 장치에 저장하지 않고 메모리 장치(200) 내부에 함께 저장한다.
이를 위하여 메모리 장치(200)는 데이터 영역(210)과 맵핑 영역(220)을 포함한다.
데이터 영역(210)은 다수의 데이터 페이지를 포함하는 다수의 데이터 블록(211)을 포함하고 호스트의 읽기/쓰기 요청에 의해 처리되는 일반적인 데이터를 저장한다.
맵핑 영역(220)은 다수의 맵핑 페이지를 포함하는 다수의 맵핑 블록(221)을 포함하며 각각의 맵핑 페이지는 다수의 맵핑 정보를 저장한다.
맵핑 관리부(100)는 전체 맵핑 정보를 맵핑 영역(220)에 저장하되 내부의 메모리 용량에 따라 일부 맵핑 정보를 맵핑 캐시에 저장한다.
캐시 미스가 발생하는 경우 맵핑 관리부(100)는 메모리 제어기(30)에 읽기 요청을 제공하여 필요한 맵핑 정보를 읽고 이를 맵핑 캐시에 저장한다.
도 3은 도 1의 맵핑 관리부(100)의 블록도이다.
맵핑 관리부(100)는 맵핑 캐시(110)와 캐시 제어기(120)를 포함한다.
캐시 제어기(120)는 맵핑 캐시(110)에 정보를 추가하거나 갱신하는 등의 전반적인 동작을 제어한다.
메모리 장치(200)가 페이지 단위로 액세스되는 경우 논리 주소는 논리 페이지 번호, 물리 주소는 물리 페이지 번호로 대체될 수 있다.
이에 따라 이하에서는 주소 대신 페이지 번호를 사용할 수 있고, 페이지 번호 대신에 주소를 사용할 수도 있다.
전술한 바와 같이 본 실시예에서 메모리 장치(200)는 데이터 영역(210)과 맵핑 영역(220)을 모두 포함한다.
이에 따라 맵핑 관리부(100)는 데이터 주소 정보와 맵핑 주소 정보를 함께 관리한다.
이를 위하여 맵핑 관리부(100)는 데이터 논리 페이지 번호(DLPN), 데이터 물리 페이지 번호(DPPN), 맵핑 물리 페이지 번호(TPPN) 등의 정보를 함께 관리한다.
데이터 논리 페이지 번호(DLPN)는 호스트에서 요청되는 주소에 대응하고 데이터 물리 페이지 번호(DPPN)는 대응하는 데이터 영역(210)의 물리 주소에 대응한다.
데이터 논리 페이지 번호(DLPN)와 데이터 물리 페이지 번호(DPPN)의 쌍은 하나의 맵핑 엔트리를 구성한다.
맵핑 물리 페이지 번호(TPPN)는 맵핑 영역(220)에서 맵핑 엔트리가 저장되는 페이지의 물리 주소를 나타낸다.
본 실시예에서는 하나의 맵핑 물리 페이지에 4 개의 맵핑 엔트리가 저장되는 것으로 가정한다.
맵핑 관리부(100)는 내부적으로 맵핑 물리 페이지 번호(TPPN)를 관리하기 위하여 이와 연관된 맵핑 가상 페이지 번호(TVPN)을 사용할 수 있다.
이하에서는 호스트 요청 관리부(11)에서 맵핑 정보를 조회하는 요청을 맵핑 관리부(100)에 제공한 경우를 예로 들어 맵핑 관리부(100)의 구성 및 동작을 설명한다.
본 실시예에서 맵핑 엔트리를 캐싱하기 위하여 1 단계 캐싱 기법을 사용할 수도 있고 다단계 캐싱 기법을 사용할 수도 있다.
본 실시예에서는 2 단계 캐싱 기법을 사용하며 이에 따라 맵핑 캐시(110)는 제 1 캐시(111)와 제 2 캐시(112)를 포함한다.
제 1 캐시(111)는 다수의 캐시 블록을 포함하며 각 캐시 블록은 맵핑 데이터와 이에 대응하는 메타 데이터를 포함한다.
캐시 블록의 맵핑 데이터는 2 개의 연속된 데이터 물리 페이지 번호(DPPN)를 저장한다.
메타 데이터는 더티 여부를 나타내는 플래그, 사용 여부를 나타내는 플래그 등을 포함한다.
제 1 캐시(111)의 캐시 블록의 데이터 구조는 이하에서 도 4를 참조하여 구체적으로 설명한다.
본 실시예에서 제 1 캐시(111)는 셋 연관(set associative) 방식의 구조를 가진다.
이에 따라 호스트에서 요청된 데이터 논리 주소(DLPN)로부터 셋 번호를 자동으로 추출할 수 있으며 이에 대응하는 웨이들을 조사하여 데이터 논리 주소(DLPN)대응하는 정보가 제 1 캐시(111)에 존재하는지 판단할 수 있다.
제 1 캐시(111)에서 미스가 발생하면 제 2 캐시(112)를 참조한다.
제 1 캐시(111)에서 미스가 발생하면 셋 내에 빈 웨이에 캐시 블록을 새로 할당한다.
만일 셋 내에 빈 웨이가 존재하지 않으면 더티 상태가 아닌 웨이를 하나 선택하여 해당 캐시 블록을 새로운 캐시 블록으로 할당한다.
셋 내에 빈 웨이가 존재하지 않으면서 모두 더티 상태인 경우 빈 웨이 중 하나의 데이터를 제 2 캐시(112)로 추방하는 동작을 수행해야 한다.
제 1 캐시(111)에서 미스가 발생하여 새로 할당한 캐시 블록에 미스 발생을 야기한 갱신 요청에 대한 정보(예를 들어 갱신 요청 ID)를 포함하는 제 1 구조체(1111)를 저장한다.
이때 제 1 구조체(1111)는 캐시 블록의 맵핑 데이터가 저장되는 영역에 저장된다.
캐시 미스가 발생하여 제 1 구조체(1111)가 저장되어 있는지 여부를 표시하기 위하여 캐시 블록의 메타 데이터는 플래그 비트를 더 저장할 수 있다.
본 실시예에서는 제 1 구조체(1111)의 정보를 미스가 발생한 캐시 블록 내에 저장하므로 이를 저장하기 위한 별도의 메모리 장치를 필요로 하지 않는다.
제 2 캐시(112)에서 각각의 캐시 엔트리는 맵핑 가상 페이지 번호(TVPN)와 연관되어 저장된다.
제 2 캐시(112)의 캐시 엔트리는 맵핑 데이터와 이에 대응하는 메타 데이터를 저장한다.
본 실시예에서 제 2 캐시(112)의 맵핑 데이터는 연속된 4 개의 맵핑 엔트리(데이터 논리 페이지 번호(DLPN)와 데이터 물리 페이지 번호(DPPN)의 쌍)를 포함한다.
이는 메모리 장치(200)의 맵핑 영역(220)에서 하나의 맵핑 페이지에 저장된 맵핑 엔트리의 개수와 일치한다.
맵핑 가상 페이지 번호(TVPN)는 미리 정해진 규칙에 따라 데이터 논리 페이지 번호(DLPN)로부터 도출될 수 있다.
예를 들어 데이터 논리 페이지 번호(DLPN)가 11인 경우 맵핑 가상 페이지 번호는 2(= Abs(11/4))가 된다.
이에 따라 제 2 캐시(112)에서 대응하는 맵핑 가상 페이지 번호(TVPN)가 존재하는지 판단할 수 있다.
제 2 캐시(112)에서도 미스가 발생하는 경우에는 제 2 캐시(112)에 새로운 캐시 엔트리를 할당한다.
즉, 새로운 캐시 엔트리는 자동으로 지정되는 맵핑 가상 페이지 번호(TVPN)와 연관되어 저장되며, 메모리 장치(200)의 맵핑 영역(220)에서 읽어온 맵핑 데이터가 저장된다.
새로운 캐시 엔트리는 데이터 영역에 미스 발생을 야기한 요청에 대한 정보를 포함하는 제 2 구조체(1121)를 저장할 수 있다.
이때 제 2 구조체(1121)에 저장되는 요청에 대한 정보는 대응하는 제 1 구조체(1121)가 저장된 위치에 관한 정보, 인덱스 정보 등을 저장할 수 있다.
이에 따라 제 2 구조체(1121)의 정보를 참조하여 대응하는 제 1 구조체(1111)의 정보를 용이하게 확인하고 이를 통해 미스 발생을 야기한 요청에 대한 정보를 확인할 수 있다.
본 실시예에서는 제 2 구조체(1121)의 정보를 캐시 엔트리에 저장하므로 이를 저장하기 위한 별도의 메모리 장치를 필요로 하지 않는다.
메모리 장치(200)의 맵핑 영역(220)에서 데이터를 읽기 위해서는 제 2 테이블(114)을 참조한다.
제 2 테이블(114)은 맵핑 가상 페이지 번호(TVPN)와 맵핑 물리 페이지 번호(TPPN) 사이의 관계를 저장하는 맵핑 테이블이다.
데이터 저장 장치의 전원이 차단되는 경우 제 2 테이블(114)의 정보는 메모리 장치의 맵핑 영역(220)에 마련된 별도의 구역에 저장되거나 별도의 비휘발성 메모리 장치에 저장되어야 한다.
전원이 인가되어 데이터 저장 장치가 초기화되는 경우 제 2 테이블(114)은 전술한 바와 같이 별도의 구역이나 별도의 메모리 장치에 저장된 맵핑 정보를 참조하여 모든 맵핑 가상 페이지 번호(TVPN)와 맵핑 물리 페이지 번호(TPPN)를 저장한다.
이에 따라 제 2 테이블(114)을 참조함으로써 맵핑 가상 페이지 번호(TVPN)에 대응하는 맵핑 물리 페이지 번호(TPPN)를 확인할 수 있다.
이후 맵핑 관리부(100)는 메모리 제어기(30)에 확인된 맵핑 물리 페이지 번호(TPPN)에 대한 읽기 요청을 생성한다.
메모리 장치(200)의 맵핑 영역(220)으로부터 읽은 맵핑 데이터는 제 2 캐시(112)에서 맵핑 가상 페이지 번호(TVPN)에 대응하는 캐시 엔트리의 맵핑 데이터 영역에 저장된다.
제 2 캐시(112)는 제 2 구조체(1121)의 정보를 참조하여 읽어온 데이터 물리 페이지 번호(DPPN)에서 제 1 캐시(111)가 요청한 정보에 대응하는 부분을 제 1 캐시(111)의 대응하는 캐시 블록에 저장한다.
제 1 캐시(111)는 제 1 구조체(1111) 정보를 참조하여 정보를 요청한 요청을 식별하고 이에 대한 응답으로 데이터 물리 페이지 번호(DPPN)를 출력한다.
제 1 캐시(111)의 정보가 갱신되는 경우 제 1 테이블(113)의 정보를 함께 갱신할 수 있다.
제 1 테이블(113)은 맵핑 가상 페이지 번호(TVPN)의 상태에 관한 정보를 관리한다.
이를 위하여 제 1 테이블(113)은 유효 필드(Valid), 맵핑 가상 페이지 번호 필드(TVPN), 연관된 캐시 블록의 개수를 나타내는 필드(Count), 갱신 여부를 나타내는 필드(Updated), 링크 필드(Next)를 포함한다.
제 1 테이블(113)의 링크 필드(Next)는 맵핑 가상 페이지 번호(TVPN)에 포함되는 제 1 캐시(111)의 캐시 블록에 대한 링크를 포함한다.
이때 링크는 제 1 캐시(111)에서 맵핑 가상 페이지 번호(TVPN)를 공유하는 캐시 블록들 중에서 어느 한 캐시 블록을 지시하는 링크이다.
제 1 캐시(111)의 캐시 블록은 맵핑 가상 페이지 번호(TVPN)를 공유하는 다음 캐시 블록에 대한 링크를 추가로 저장한다.
이에 따라 제 1 캐시(111)에서 어느 한 캐시 블록이 선택되는 경우 제 1 캐시(111)와 제 1 테이블(113)의 링크 정보들을 참조함으로써 맵핑 가상 페이지 번호(TVPN)를 공유하는 전체 캐시 블록들을 신속하게 찾을 수 있다.
예를 들어 제 1 캐시(111)에 캐시 블록에 새로운 맵핑 정보를 저장하는 경우 이에 대응하는 유효한 맵핑 가상 페이지 번호(TVPN)가 제 1 테이블(113)에 존재하는지 판단한다.
제 1 테이블(113)에 대응하는 엔트리가 존재하지 않으면 제 1 테이블(113)에 새로운 엔트리를 추가하고 새로운 엔트리의 링크 필드에 새로운 맵핑 정보가 저장된 제 1 캐시(111)의 캐시 블록의 주소(예를 들어, 셋 번호와 웨이 번호)를 저장한다.
제 1 테이블(113)에 대응하는 엔트리가 존재하면 제 1 테이블(113)의 대응하는 엔트리의 링크 필드와 제 1 캐시(111)의 캐시 블록에 포함된 링크 필드를 참조하여 마지막에 연결된 캐시 블록을 찾고, 마지막 캐시 블록의 링크 필드에 새로운 맵핑 정보가 저장된 제 1 캐시(111)의 캐시 블록의 주소, 예를 들어 셋 번호와 웨이 번호,를 저장한다.
읽기 또는 쓰기 요청을 처리하면서 제 1 캐시(111) 또는 제 2 캐시(112)에서 캐시 미스가 발생하는 경우 제 1 캐시(111) 및 제 2 캐시(112)에 새로운 정보를 저장할 여유 공간이 없는 경우가 있다.
이 경우 희생 캐시 블록이나 희생 캐시 엔트리를 선택하여 이를 추방하고 이를 새로운 정보로 교체하는 동작이 필요할 수 있다.
이를 위하여 더티 상태가 아닌 캐시 블록이나 캐시 엔트리 중에서 가장 오래 전에 사용된(LRU: Least Recently Used) 것을 선택할 수 있다.
더티 상태의 캐시 블록이나 캐시 엔트리를 선택하는 경우 캐시를 갱신하는데 걸리는 시간으로 인하여 읽기 또는 쓰기 요청의 처리 시간이 증가하여 성능이 저하되는 문제가 있기 때문이다.
이를 방지하기 위하여 제 1 캐시(111) 및 제 2 캐시(112)에서 더티 상태가 아닌 캐시 블록의 개수를 일정한 임계점 이상으로 유지하는 플러시 동작을 수행할 수 있다.
플러시 동작은 시스템의 성능 저하를 방지하기 위하여 아이들 상태에서 진행될 수 있으나 반드시 이에 한정되는 것은 아니다.
플러시 동작은 제 1 캐시(111)의 캐시 블록을 플러시하는 제 1 플러시 동작과 제 2 캐시(112)의 캐시 엔트리를 플러시하는 제 2 플러시 동작으로 구별될 수 있다.
제 1 플러시 동작은 제 1 캐시(111)에서 희생 캐시 블록으로 선택된 캐시 블록과 맵핑 가상 페이지 번호(TVPN)를 공유하는 캐시 블록들을 제 2 캐시(112)에 저장하는 동작이다.
이때 제 1 테이블(113)에서 플러시된 맵핑 가상 페이지 번호(TVPN)에 대한 정보는 무효화된다.
제 2 플러시 동작은 제 2 캐시(112)에서 희생 캐시 엔트리로 선택된 것을 메모리 장치(200)의 맵핑 영역(220)에 프로그램하는 동작이다.
이때 맵핑 물리 페이지 번호(TPPN)가 새로 할당되므로 제 2 테이블(114)에서 맵핑 가상 페이지 번호(TVPN)와 맵핑 물리 페이지 번호(TPPN)의 정보는 갱신된다.
도 4는 제 1 캐시(111)의 캐시 블록의 데이터 구조이다.
각각의 캐시 블록은 맵핑 데이터 영역과 메타 데이터 영역을 포함한다.
전술한 바와 같이 본 실시예에서 맵핑 데이터 영역은 두 개의 맵핑 엔트리를 포함한다.
메타 데이터 영역에는 유효 필드(V), 캐시 미스 상태 여부를 나타내는 필드(T), 더티 여부를 나타내는 필드(D), 최근 사용된 지 여부를 나타내는 필드(R), 태그 필드(Tag), 링크 필드(Next)를 포함한다.
링크 필드(Next)는 동일한 맵핑 가상 페이지 번호를 공유하면서 현재 캐시 블록의 다음에 위치하는 캐시 블록을 지시한다.
제 1 구조체 필드는 유효 필드(V), 요청의 ID를 나타내는 필드(ID)를 포함한다.
제 1 구조체 필드는 요청 종류를 나타내는 필드(O), 요청의 시작 논리 주소를 나타내는 필드(S), 요청된 데이터의 길이를 나타내는 필드(N) 등을 더 포함할 수 있다.
제 1 구조체 필드는 캐시 미스 상태를 나타내는 필드(T)가 셋 상태인 경우 맵핑 데이터 영역에 저장된다.
이에 따라 제 1 구조체 필드를 저장하기 위하여 별도의 메모리 장치를 필요로 하지 않는다.
캐시 미스 상태를 나타내는 필드(T)가 리셋 상태인 경우 맵핑 데이터 영역에는 맵핑 엔트리가 저장된다.
도 5는 제 2 캐시(112)의 캐시 엔트리의 데이터 구조이다.
각각의 캐시 엔트리는 맵핑 데이터 영역과 메타 데이터 영역을 포함한다.
전술한 바와 같이 본 실시예에서 맵핑 데이터 영역은 네 개의 맵핑 엔트리를 포함한다.
메타 데이터 영역에는 유효 필드(V), 캐시 미스 상태 여부를 나타내는 필드(T), 더티 여부를 나타내는 필드(D), 최근 사용된 지 여부를 나타내는 필드(R), 태그 필드(Tag)를 포함한다.
제 2 구조체 필드는 유효 필드(V), 제 2 캐시를 조회한 제 1 캐시(111)의 캐시 블록의 셋 번호 필드(S), 웨이 번호 필드(W)를 포함한다.
제 2 구조체 필드는 요청 종류를 나타내는 필드(O), 인덱스 필드(I)를 더 포함할 수 있다.
요청의 종류는 제 1 캐시(111)로부터의 데이터 요청을 표시한다.
인덱스 필드는 제 2 캐시(112)의 캐시 엔트리 중에서 제 1 캐시(111)의 캐시 블록에 저장할 부분을 나타내는 것으로서 제 1 캐시(111)가 제공한다.
인덱스 정보는 데이터 논리 페이지 번호(DLPN)를 이용하여 자동으로 계산될 수 있다.
본 실시예에서 캐시 엔트리는 연속된 4 개의 맵핑 엔트리를 저장하고 캐시 블록은 연속된 2 개의 맵핑 엔트리를 저장한다.
이 경우 인덱스 필드는 0 또는 1을 가진다.
도 5를 참조하면 인덱스 0은 맵핑 엔트리 #0, #1에 대응하고 인덱스 1은 맵핑 엔트리 #2, #3에 대응한다.
제 2 구조체 필드는 캐시 미스 상태를 나타내는 필드(T)가 셋 상태인 경우 맵핑 데이터 영역에 저장된다.
이에 따라 제 2 구조체 필드를 저장하기 위하여 별도의 메모리 장치를 필요로 하지 않는다.
캐시 미스 상태를 나타내는 필드(T)가 리셋 상태인 경우 맵핑 데이터 영역에는 맵핑 엔트리가 저장된다.
도 6은 맵핑 관리부(100)에서 조회 요청을 수행하는 방법을 나타낸 순서도이다.
먼저 맵핑 관리부(100)에서 조회 요청을 수신한다(S110).
조회 요청은 호스트 요청 관리부(11) 또는 가비지 콜렉션 관리부(12)에서 제공될 수 있다.
맵핑 관리부(100)는 맵핑 정보가 캐싱되어 있는지 판단한다(S120).
이는 전술한 바와 같이 맵핑 캐시(110)를 참조하여 요청된 데이터 논리 페이지 번호(DLPN)에 대응하는 데이터 물리 페이지 번호(DPPN)가 존재하는지 판단하는 단계이다.
캐싱되어 있다면 캐싱된 맵핑 정보를 이용하여 조회 요청에 대하여 응답한다(S130).
캐싱되어 있지 않다면 맵핑 정보가 저장된 메모리 주소로 메모리 읽기 요청을 전달한다(S140).
맵핑 정보가 저장된 메모리 주소는 전술한 바와 같이 제 2 테이블(114)을 참조하여 확인할 수 있다.
이후 맵핑 정보가 저장될 캐시 블록에 맵핑 정보를 조회한 요청에 대한 정보를 저장한다(S150).
이는 전술한 바와 같이 요청에 대한 정보를 포함하는 제 1 구조체(1111)를 제 1 캐시(111)의 캐시 블록에 저장하거나 제 2 구조체(1121)를 제 2 캐시(112)의 캐시 엔트리에 저장하는 것에 대응한다.
이후 대응하는 맵핑 정보를 입수하는 경우 제 1 구조체 또는 제 2 구조체를 참조하여 조회 요청에 대한 응답을 신속하게 제공할 수 있다(S160).
도 7은 제 1 캐시(111)에서의 플러시 동작을 나타내는 순서도이다.
먼저 더티 상태가 아닌 캐시 블록의 개수가 임계점 미만인지 판단한다(S210).
임계점 이상인 경우 그대로 종료한다.
임계점 미만인 경우 제 1 캐시(111)의 캐시 블록 중에서 추방할 희생 캐시 블록을 선택한다(S220).
희생 캐시 블록을 선택하기 위하여 캐시 블록의 메타 데이터를 참조하여 더티 상태의 캐시 블록 중 가장 오래 전에 사용된 캐시 블록을 선택할 수 있다.
희생 캐시 블록이 선택되면 제 1 테이블(113)을 참조하여 맵핑 가상 페이지 번호(TVPN)를 공유하는 캐시 블록 중 가장 먼저 위치하는 캐시 블록을 찾을 수 있다. 이후 제 1 캐시(111)의 캐시 블록의 링크 정보를 참조하여 희생 캐시 블록과 맵핑 가상 페이지 번호(TVPN)를 공유하는 연관된 캐시 블록을 순차적으로 찾을 수 있다(S230).
이후 희생 캐시 블록과 연관된 캐시 블록들을 제 2 캐시(112)로 플러시한다(S240).
이때 제 2 캐시(112)에서 대응하는 캐시 엔트리의 메타 데이터는 더티 상태로 갱신될 수 있다.
이후 제 1 테이블(113)에서 플러시된 맵핑 가상 페이지 번호(TVPN)에 대응하는 정보를 무효화한다(S250).
도 8은 제 2 캐시(112)에서의 플러시 동작을 나타내는 순서도이다.
먼저 더티 상태가 아닌 캐시 엔트리의 개수가 임계점 미만인지 판단한다(S310).
임계점 이상인 경우 그대로 종료한다.
임계점 미만인 경우 제 2 캐시(112)의 캐시 엔트리 중에서 추방할 희생 캐시 엔트리를 선택한다(S320).
희생 캐시 엔트리를 선택하기 위하여 캐시 엔트리의 메타 데이터를 참조하여 더티 상태의 캐시 엔트리 중 가장 오래 전에 사용된 캐시 엔트리를 선택할 수 있다.
희생 캐시 엔트리가 선택되면 새로운 맵핑 물리 페이지 번호를 할당하고 제 2 테이블을 갱신한다(S330).
이후 맵핑 정보 쓰기 요청을 블록 제어기(13)로 전달한다(S340). 이때 블록 제어기(13)는 기존의 맵핑 물리 페이지 번호를 무효화할 수 있다.
이상의 개시는 본 발명의 실시예를 개시하는 것으로서 이상의 개시에 의하여 본 발명의 권리범위가 제한적으로 해석되어서는 안된다.
본 발명의 권리범위는 청구범위에 문언적으로 기재된 범위와 그 균등범위로 정해진다.
10: 제어부
11: 호스트 요청 관리부
12: 가비지 콜렉션 관리부
13: 블록 제어기
20: 호스트 인터페이스
30: 메모리 제어기
100: 맵핑 관리부
110: 맵핑 캐시
111: 제 1 캐시
1111: 제 1 구조체
112: 제 2 캐시
1121: 제 2 구조체
113: 제 1 테이블
114: 제 2 테이블
120: 캐시 제어기
200: 메모리 장치
210: 데이터 영역
211: 데이터 블록
220: 맵핑 영역
221: 맵핑 블록

Claims (25)

  1. 메모리 장치에 저장된 맵핑 데이터를 캐싱하는 맵핑 캐시; 및
    상기 맵핑 캐시의 정보를 관리하는 캐시 제어기
    를 포함하되,
    상기 맵핑 캐시는 다수의 캐시 블록을 포함하는 제 1 캐시를 포함하고,
    상기 다수의 캐시 블록은 각각 그 내부에 저장된 맵핑 정보와 연관성을 가지는 다른 맵핑 정보를 저장하는 다른 캐시 블록에 대한 링크를 포함하는 반도체 장치.
  2. 청구항 1에 있어서, 상기 맵핑 캐시는 제 1 테이블을 더 포함하되,
    상기 제 1 테이블은 상기 연관성을 나타내는 정보를 저장하는 다수의 엔트리를 포함하고,
    상기 다수의 엔트리는 각각 상기 제 1 캐시의 캐시 블록 중에서 상기 연관성을 가진 캐시 블록을 지시하는 링크를 포함하는 반도체 장치.
  3. 청구항 1에 있어서, 상기 캐시 제어기는 상기 제 1 캐시에서 캐시 미스가 발생하는 경우 캐시 미스가 발생한 캐시 블록에 캐시 미스를 야기한 요청에 대한 정보를 포함하는 제 1 구조체를 저장하는 반도체 장치.
  4. 청구항 3에 있어서, 상기 캐시 제어기는 상기 제 1 캐시에서 캐시 미스가 발생한 경우 상기 메모리 장치에 맵핑 데이터에 대한 읽기 요청을 제공하고, 상기 읽기 요청에 대응하는 맵핑 데이터를 수신한 경우 상기 제 1 구조체를 참조하여 상기 캐시 미스를 야기한 요청에 대하여 응답을 제공하는 반도체 장치.
  5. 청구항 1에 있어서, 상기 제 1 캐시에 포함된 캐시 블록은 더티 여부를 나타내는 정보를 더 저장하고,
    상기 캐시 제어기는 상기 제 1 캐시에서 더티 상태가 아닌 캐시 블록의 개수가 임계점 이하인 경우 상기 제 1 캐시에서 더티 상태가 아닌 희생 캐시 블록을 선택하고, 상기 희생 캐시 블록 및 상기 희생 캐시 블록과 연관성을 가진 다른 캐시 블록을 상기 제 1 캐시에서 추방하는 반도체 장치.
  6. 청구항 1에 있어서, 상기 연관성은 맵핑 정보가 저장되는 맵핑 영역의 물리 주소에 따라 결정되는 반도체 장치.
  7. 메모리 장치의 맵핑 영역에 저장된 맵핑 데이터를 캐싱하는 맵핑 캐시; 및
    상기 맵핑 캐시의 정보를 관리하는 캐시 제어기
    를 포함하되,
    상기 맵핑 캐시는
    각각 논리 주소에 따라 접근되는 다수의 캐시 블록을 포함하는 제 1 캐시;
    각각 논리 주소에 따라 결정되는 가상 주소에 따라 접근되는 캐시 엔트리를 포함하는 제 2 캐시;
    상기 가상 주소와 연관된 캐시 블록에 대한 링크 정보를 저장하는 제 1 테이블; 및
    상기 가상 주소와 상기 맵핑 영역의 물리 주소의 맵핑 관계를 저장하는 제 2 테이블
    을 포함하고,
    하나의 캐시 블록에 저장되는 맵핑 정보의 개수는 하나의 캐시 엔트리에 저장되는 맵핑 정보의 개수보다 적고,
    상기 제 1 캐시의 다수의 캐시 블록은 각각 그 내부에 저장된 맵핑 정보와 연관성을 가지는 다른 맵핑 정보를 저장하는 다른 캐시 블록에 대한 링크를 포함하고,
    캐시 블록 사이의 연관성은 캐시 블록에 대응하는 논리 주소로부터 결정되는 가상 주소가 공통되는지에 따라 결정되는 반도체 장치.
  8. 청구항 7에 있어서, 상기 제 1 캐시에서 캐시 미스가 발생하는 경우에 캐시 미스를 야기한 요청에 대한 정보를 포함하는 제 1 구조체를 상기 제 1 캐시의 캐시 블록에 저장하는 반도체 장치.
  9. 청구항 8에 있어서, 상기 캐시 제어기는 상기 제 1 캐시에서 캐시 미스가 발생하는 경우 상기 캐시 블록에 대응하는 가상 주소에 따라 상기 제 2 캐시를 조회하는 반도체 장치.
  10. 청구항 9에 있어서, 상기 캐시 제어기는 상기 제 2 캐시에서 캐시 미스가 발생하는 경우 캐시 미스를 야기한 제 1 캐시의 캐시 블록의 정보를 포함하는 제 2 구조체를 캐시 미스가 발생한 상기 제 2 캐시의 캐시 엔트리에 저장하는 반도체 장치.
  11. 청구항 10에 있어서, 상기 캐시 제어기는 상기 제 2 캐시에서 캐시 미스가 발생하는 경우 상기 제 2 테이블을 참조하여 상기 맵핑 영역에 맵핑 데이터에 대한 읽기 요청을 출력하는 반도체 장치.
  12. 청구항 11에 있어서, 상기 캐시 제어기는 상기 읽기 요청에 대하여 출력된 맵핑 데이터로 상기 제 2 캐시의 캐시 엔트리와 상기 제 1 캐시의 캐시 블록의 정보를 갱신하고, 상기 제 2 구조체와 상기 제 1 구조체를 참조하여 상기 제 1 캐시에서 캐시 미스를 야기한 요청에 대하여 맵핑 정보를 제공하는 반도체 장치.
  13. 청구항 12에 있어서, 상기 캐시 제어기는 상기 제 1 캐시의 캐시 블록의 정보에 대응하는 상기 제 1 테이블의 엔트리의 링크 정보 또는 상기 제 1 캐시의 캐시 블록의 링크 정보를 갱신하는 반도체 장치.
  14. 청구항 7에 있어서, 상기 캐시 제어기는 상기 제 1 캐시에서 더티 상태가 아닌 캐시 블록의 개수가 임계점 미만인 경우 상기 제 1 캐시의 캐시 블록 중에서 희생 캐시 블록을 선택하고, 상기 제 1 테이블의 링크 정보와 상기 제 1 캐시의 링크 정보를 참조하여 상기 희생 캐시 블록과 연관성이 있는 캐시 블록을 선택하고, 상기 희생 캐시 블록과 상기 연관성이 있는 캐시 블록을 상기 제 2 캐시에 추방하는 반도체 장치.
  15. 청구항 7에 있어서, 상기 캐시 제어기는 상기 제 2 캐시에서 더티 상태가 아닌 캐시 엔트리의 개수가 임계점 미만인 경우 상기 제 2 캐시의 캐시 엔트리 중에서 희생 캐시 엔트리를 선택하고, 상기 희생 캐시 엔트리를 상기 메모리 장치로 추방하는 반도체 장치.
  16. 일반 데이터를 저장하는 데이터 영역과 맵핑 데이터를 저장하는 맵핑 영역을 포함하는 메모리 장치;
    호스트로부터 제공된 읽기/쓰기 요청을 관리하는 호스트 요청 관리부;
    상기 맵핑 데이터의 일부를 캐싱하고 상기 호스트 요청 관리부의 요청에 따라 맵핑 정보를 관리하는 맵핑 관리부; 및
    상기 호스트 요청 관리부 및 상기 맵핑 관리부의 요청에 따라 상기 메모리 장치의 동작을 제어하는 메모리 제어기
    를 포함하되,
    상기 맵핑 관리부는
    상기 메모리 장치에 저장된 맵핑 데이터를 캐싱하는 맵핑 캐시; 및
    상기 맵핑 캐시의 정보를 관리하는 캐시 제어기를 포함하고,
    상기 맵핑 캐시는 다수의 캐시 블록을 포함하는 제 1 캐시를 포함하고,
    상기 다수의 캐시 블록은 각각 그 내부에 저장된 맵핑 정보와 연관성을 가지는 다른 맵핑 정보를 저장하는 다른 캐시 블록에 대한 링크를 포함하는 데이터 저장 장치.
  17. 삭제
  18. 청구항 16에 있어서, 상기 맵핑 캐시는 제 1 테이블을 더 포함하되,
    상기 제 1 테이블은 상기 연관성을 나타내는 정보를 저장하는 다수의 엔트리를 포함하고,
    상기 다수의 엔트리는 각각 상기 제 1 캐시의 캐시 블록 중에서 상기 연관성을 가진 캐시 블록을 지시하는 링크를 포함하는 데이터 저장 장치.
  19. 청구항 16에 있어서, 상기 캐시 제어기는 상기 제 1 캐시에서 캐시 미스가 발생하는 경우 캐시 미스가 발생한 캐시 블록에 캐시 미스를 야기한 요청에 대한 정보를 포함하는 제 1 구조체를 저장하는 데이터 저장 장치.
  20. 청구항 16에 있어서,
    상기 메모리 장치의 맵핑 영역에 저장된 맵핑 데이터를 캐싱하는 맵핑 캐시; 및
    상기 맵핑 캐시의 정보를 관리하는 캐시 제어기
    를 포함하되,
    상기 맵핑 캐시는
    각각 논리 주소에 따라 접근되는 다수의 캐시 블록을 포함하는 제 1 캐시;
    각각 논리 주소에 따라 결정되는 가상 주소에 따라 접근되는 캐시 엔트리를 포함하는 제 2 캐시;
    상기 가상 주소와 연관된 캐시 블록에 대한 링크 정보를 저장하는 제 1 테이블; 및
    상기 가상 주소와 상기 맵핑 영역의 물리 주소의 맵핑 관계를 저장하는 제 2 테이블
    을 포함하고,
    하나의 캐시 블록에 저장되는 맵핑 정보의 개수는 하나의 캐시 엔트리에 저장되는 맵핑 정보의 개수보다 적고,
    상기 제 1 캐시의 다수의 캐시 블록은 각각 그 내부에 저장된 맵핑 정보와 연관성을 가지는 다른 맵핑 정보를 저장하는 다른 캐시 블록에 대한 링크를 포함하고,
    캐시 블록 사이의 연관성은 캐시 블록에 대응하는 논리 주소로부터 결정되는 가상 주소가 공통되는지에 따라 결정되는 데이터 저장 장치.
  21. 청구항 20에 있어서, 상기 제 1 캐시에서 캐시 미스가 발생하는 경우에 캐시 미스를 야기한 요청에 대한 정보를 포함하는 제 1 구조체를 상기 제 1 캐시의 캐시 블록에 저장하는 데이터 저장 장치.
  22. 청구항 21에 있어서, 상기 캐시 제어기는 상기 제 1 캐시에서 캐시 미스가 발생하는 경우 상기 캐시 블록에 대응하는 가상 주소에 따라 상기 제 2 캐시를 조회하는 데이터 저장 장치.
  23. 청구항 22에 있어서, 상기 캐시 제어기는 상기 제 2 캐시에서 캐시 미스가 발생하는 경우 캐시 미스를 야기한 제 1 캐시의 캐시 블록의 정보를 포함하는 제 2 구조체를 캐시 미스가 발생한 상기 제 2 캐시의 캐시 엔트리에 저장하는 데이터 저장 장치.
  24. 청구항 23에 있어서, 상기 캐시 제어기는 상기 제 2 캐시에서 캐시 미스가 발생하는 경우 상기 제 2 테이블을 참조하여 상기 맵핑 영역에 맵핑 데이터에 대한 읽기 요청을 출력하는 데이터 저장 장치.
  25. 청구항 24에 있어서, 상기 캐시 제어기는 상기 읽기 요청에 대하여 출력된 맵핑 데이터로 상기 제 2 캐시의 캐시 엔트리와 상기 제 1 캐시의 캐시 블록의 정보를 갱신하고, 상기 제 2 구조체와 상기 제 1 구조체를 참조하여 상기 제 1 캐시에서 캐시 미스를 야기한 요청에 대하여 맵핑 정보를 제공하는 데이터 저장 장치.
KR1020170173788A 2017-12-18 2017-12-18 메모리 장치의 주소 맵핑을 관리하는 반도체 장치 및 이를 포함하는 데이터 저장 장치 KR102521746B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020170173788A KR102521746B1 (ko) 2017-12-18 2017-12-18 메모리 장치의 주소 맵핑을 관리하는 반도체 장치 및 이를 포함하는 데이터 저장 장치
US16/129,399 US10747684B2 (en) 2017-12-18 2018-09-12 Semiconductor device managing address mapping of a semiconductor memory device and data storage device including the semiconductor device
US16/924,946 US11321243B2 (en) 2017-12-18 2020-07-09 Data storage device including a semiconductor device managing address mapping of a semiconductor memory device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170173788A KR102521746B1 (ko) 2017-12-18 2017-12-18 메모리 장치의 주소 맵핑을 관리하는 반도체 장치 및 이를 포함하는 데이터 저장 장치

Publications (2)

Publication Number Publication Date
KR20190072752A KR20190072752A (ko) 2019-06-26
KR102521746B1 true KR102521746B1 (ko) 2023-04-13

Family

ID=66814445

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170173788A KR102521746B1 (ko) 2017-12-18 2017-12-18 메모리 장치의 주소 맵핑을 관리하는 반도체 장치 및 이를 포함하는 데이터 저장 장치

Country Status (2)

Country Link
US (2) US10747684B2 (ko)
KR (1) KR102521746B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120239864A1 (en) 2010-09-02 2012-09-20 International Business Machines Corporation Caching scheme synergy for extent migration between tiers of a storage system
US20140304453A1 (en) 2013-04-08 2014-10-09 The Hong Kong Polytechnic University Effective Caching for Demand-based Flash Translation Layers in Large-Scale Flash Memory Storage Systems
US20160299710A1 (en) * 2015-04-10 2016-10-13 Macronix International Co., Ltd Memory device and operating method of same

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5404485A (en) 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
US8806144B2 (en) * 2009-05-12 2014-08-12 Stec, Inc. Flash storage device with read cache
US8417914B2 (en) 2011-01-06 2013-04-09 Micron Technology, Inc. Memory address translation
KR101992934B1 (ko) 2012-11-14 2019-06-26 삼성전자주식회사 메모리 시스템 및 이의 동작 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120239864A1 (en) 2010-09-02 2012-09-20 International Business Machines Corporation Caching scheme synergy for extent migration between tiers of a storage system
US20140304453A1 (en) 2013-04-08 2014-10-09 The Hong Kong Polytechnic University Effective Caching for Demand-based Flash Translation Layers in Large-Scale Flash Memory Storage Systems
US20160299710A1 (en) * 2015-04-10 2016-10-13 Macronix International Co., Ltd Memory device and operating method of same

Also Published As

Publication number Publication date
US10747684B2 (en) 2020-08-18
US20190188150A1 (en) 2019-06-20
US20200341910A1 (en) 2020-10-29
US11321243B2 (en) 2022-05-03
KR20190072752A (ko) 2019-06-26

Similar Documents

Publication Publication Date Title
US10642743B2 (en) Apparatus and method of handling caching of persistent data
JP6967986B2 (ja) メモリシステム
US7284096B2 (en) Systems and methods for data caching
GB2547306B (en) Profiling cache replacement
US9104327B2 (en) Fast translation indicator to reduce secondary address table checks in a memory device
US20210157746A1 (en) Key-value storage device and system including the same
US20150149742A1 (en) Memory unit and method
US10635581B2 (en) Hybrid drive garbage collection
US20100217937A1 (en) Data processing apparatus and method
KR102453192B1 (ko) 다른 캐시에서의 엔트리들의 가용성을 기반으로 한 캐시 엔트리 교체
US10157148B2 (en) Semiconductor device configured to control a wear leveling operation and operating method thereof
KR100987996B1 (ko) 메모리 액세스 제어 장치 및 메모리 액세스 제어 방법
CN109074313B (zh) 缓存和方法
US20150052310A1 (en) Cache device and control method thereof
KR102521746B1 (ko) 메모리 장치의 주소 맵핑을 관리하는 반도체 장치 및 이를 포함하는 데이터 저장 장치
KR101976320B1 (ko) 라스트 레벨 캐시 메모리 및 이의 데이터 관리 방법
US20060224834A1 (en) Write-back cache methods and apparatus
US7143239B2 (en) Cache structure and methodology
CN107423232B (zh) Ftl快速访问方法与装置
TWI805878B (zh) 儲存系統的快取系統及其資料快取方法
US10853267B2 (en) Adaptive method for selecting a cache line replacement algorithm in a direct-mapped cache
KR20230068743A (ko) 이종 메모리를 포함하는 컴퓨터 시스템 및 그것의 데이터 관리 방법
GR20170200172U (el) Μια διαταξη και μια μεθοδος διαχειρισης της αποθηκευσης σε κρυφη μνημη επιμονων δεδομενων

Legal Events

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