KR20120103095A - 메모리 시스템 및 그의 메모리 맵핑 방법 - Google Patents

메모리 시스템 및 그의 메모리 맵핑 방법 Download PDF

Info

Publication number
KR20120103095A
KR20120103095A KR1020110021133A KR20110021133A KR20120103095A KR 20120103095 A KR20120103095 A KR 20120103095A KR 1020110021133 A KR1020110021133 A KR 1020110021133A KR 20110021133 A KR20110021133 A KR 20110021133A KR 20120103095 A KR20120103095 A KR 20120103095A
Authority
KR
South Korea
Prior art keywords
entry
logical
physical
mapping
sequential
Prior art date
Application number
KR1020110021133A
Other languages
English (en)
Other versions
KR101226600B1 (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 KR1020110021133A priority Critical patent/KR101226600B1/ko
Publication of KR20120103095A publication Critical patent/KR20120103095A/ko
Application granted granted Critical
Publication of KR101226600B1 publication Critical patent/KR101226600B1/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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks

Landscapes

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

Abstract

메모리 시스템 및 그의 메모리 맵핑 방법이 개시된다.
메모리 시스템은 비휘발성 메모리와, 메모리 맵핑을 자료구조를 제공하되 시퀀셜 데이터를 저장하는 물리 페이지 블록과 대응되는 논리 페이지 블록의 연속된 논리 주소들에 대하여 동일한 대표 값을 설정하고, 설정된 대표 값을 이용하여 논리 주소들과 물리 주소들 간에 페이지 블록 단위로 맵핑을 수행하는 메모리 제어부를 포함한다. 시퀀셜 데이터에 대한 논리 주소가 요청되면 메모리 제어부는 논리 주소가 속한 논리 페이지 블록의 대표 값을 획득하기 위하여 대표 논리 주소의 키 값을 계산하고 맵핑 테이블로부터 키 값에 대응하는 엔트리를 검색한 후, 검색된 엔트리에 포함된 물리 페이지 블록의 시작 주소를 획득하고 논리 페이지 블록 내에서 해당 논리 주소가 위치하는 순서에 의거하여 페이지 오프셋을 계산하며 물리 페이지 블록의 시작 주소에 계산된 페이지 오프셋을 반영하여 논리 주소에 상응하는 물리 주소를 리턴하게 된다.
이러한 구성에 따르면, 논리적 섹터를 물리적 메모리에 맵핑하기 위한 효율적인 자료구조를 제공하여 맵핑에 소모되는 메모리 양을 줄이고, 데이터 검색 속도를 현저히 높일 수 있다.

Description

메모리 시스템 및 그의 메모리 맵핑 방법{Memory System And Memory Mapping Method thereof}
본 발명은 메모리 시스템 및 그의 메모리 맵핑 방법에 관한 것으로, 더욱 상세하게는 플래쉬 메모리 등의 비휘발성 메모리 사용 시에 효율적으로 적용할 수 있는 메모리 시스템 및 그의 메모리 맵핑 방법에 관한 것이다.
비휘발성 메모리, 특히 대용량 데이터가 저장되는 저장 매체인 플래쉬 메모리는 성능과 안정성, 저전력 등의 강점을 앞세워 핸드헬드 컴퓨터, 이동전화, 스마트폰, 디지털 카메라, 휴대용 미디어 플레이어, 메모리 카드 등의 모바일 환경에서 널리 사용되고 있다.
전술한 플래쉬 메모리는 다른 메모리 소자와 비교할 때 비교적 낮은 단가로 빠른 읽기 속도를 제공할 수 있으며, 호스트와의 인터페이싱을 위하여 메모리 제어부와 연동한다. 메모리 제어부는 빠른 주소 맵핑(Mapping)을 위해 호스트(예컨대 일반 하드디스크)의 파일 시스템(File System)과 플래쉬 메모리 사이에 플래쉬 변환 계층(FTL: Flash Translation Layer)을 사용한다.
일반적 하드디스크와 달리 플래쉬 메모리는 물리적 공간에 대한 덮어쓰기(Overwrite)가 되지 않는 약점이 있으므로, 이를 극복하기 위하여 플래쉬 변환 계층을 통해 논리적 섹터를 물리적 메모리에 맵핑하기 위한 자료구조를 제공하는 것이다.
플래쉬 변환 계층의 자료구조로는 해쉬 테이블이 가장 일반적이다. 그러나 맵핑해야할 주소들이 많아지면 메모리 소모량이 증가하고 충돌로 인하여 검색 속도가 떨어진다. 특히 모바일 환경에서 활용도가 높은 플래쉬 메모리의 특성 상 플래쉬 변환 계층을 구현하기 위한 RAM 등의 메모리 사이즈는 이를 탑재한 단말의 크기, 비용, 속도에 직접적으로 영향을 미치게 된다.
본 발명은 상술한 바와 동일한 종래 기술의 문제점을 해결하기 위하여 제안된 것으로, 그 목적은 논리적 섹터를 물리적 메모리에 맵핑하기 위한 자료구조를 제공하기 위하여 소모되는 메모리 양을 줄이고, 데이터 검색 속도를 높일 수 있도록 하는 효율적인 메모리 시스템 및 그의 메모리 맵핑 방법을 제공하는 것이다.
본 발명이 이루고자 하는 기술적 과제는 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
본 발명에 따른 메모리 시스템은 비휘발성 메모리; 및 논리 주소를 상기 비휘발성 메모리 상의 물리 주소에 맵핑하기 위한 자료구조를 제공하되, 연속된 물리 주소들의 물리 페이지 블록에 순차적으로 저장되어 있는 시퀀셜 데이터의 경우 상기 물리 페이지 블록과 대응하는 논리 페이지 블록의 연속된 논리 주소들에 대하여 대표 값을 설정하고, 상기 대표 값을 이용하여 상기 논리 페이지 블록 내 논리 주소들과 상기 물리 페이지 블록 내 물리 주소들 간의 맵핑을 수행하는 메모리 제어부를 포함한다.
본 발명의 일 측면에 따른 메모리 맵핑 방법은 논리 주소를 비휘발성 메모리 상의 물리 주소에 맵핑하기 위한 메모리 맵핑 방법에 있어서, 연속된 물리 주소들의 물리 페이지 블록에 순차적으로 저장되어 있는 시퀀셜 데이터의 경우 상기 물리 페이지 블록과 대응하는 논리 페이지 블록의 연속된 논리 주소들에 대하여 대표 값을 설정하는 단계; 및 상기 대표 값 및 상기 논리 페이지 블록에 대응하는 물리 페이지 블록의 시작 주소를 포함하는 시퀀셜 엔트리를 생성하여 맵핑 테이블 상에 저장하는 단계를 포함한다. 상기 시퀀셜 엔트리는 하나의 대표 값을 이용해 상기 논리 페이지 블록 내 논리 주소들 모두를 상기 물리 페이지 블록 내 물리 주소들에 맵핑하기 위한 것이다.
본 발명의 다른 측면에 따른 메모리 맵핑 방법은 논리 주소가 요청되면 상기 논리 주소가 속한 논리 페이지 블록의 대표 값을 획득하기 위하여 상기 논리 주소의 키 값을 계산하는 단계; 제1 맵핑 테이블로부터 상기 키 값에 대응하는 엔트리를 검색하는 단계; 상기 검색된 엔트리에 포함된 물리 페이지 블록의 시작 주소를 획득하는 단계; 상기 논리 페이지 블록 내에서 상기 논리 주소가 위치하는 순서에 의거하여 페이지 오프셋을 계산하는 단계; 및 상기 물리 페이지 블록의 시작 주소에 상기 페이지 오프셋을 반영하여 상기 논리 주소에 상응하는 물리 주소를 리턴하는 단계를 포함한다.
본 발명의 메모리 시스템 및 그의 메모리 맵핑 방법에 따르면, 논리적 섹터를 물리적 메모리에 맵핑하기 위한 효율적인 자료구조를 제공하여 맵핑에 소모되는 메모리 양을 줄이고, 데이터 검색 속도를 현저히 높일 수 있다.
도 1은 본 발명의 일 실시예에 따른 메모리 시스템의 개략적 구성도.
도 2는 본 발명의 일 실시예에 따른 맵핑 테이블의 엔트리 구조.
도 3은 본 발명의 일 실시예에 따른 시퀀셜 데이터의 메모리 맵핑 구조를 예시한 도면.
도 4a 및 도 4b는 맵핑 테이블 상에 포함되어 도 3의 시퀀셜 데이터에 대한 맵핑 정보를 저장하는 엔트리를 예시한 도면.
도 5는 본 발명의 일 실시예에 따른 랜덤 데이터의 메모리 맵핑 구조를 예시한 도면.
도 6은 맵핑 테이블 상에 포함되어 도 5의 랜덤 데이터에 대한 맵핑 정보를 저장하는 랜덤 엔트리를 예시한 도면.
도 7은 본 발명의 일 실시예에 따른 메모리 맵핑 방법의 흐름도.
도 8a 내지 도 8c는 본 발명의 다른 실시예에 따른 메모리 맵핑 방법의 흐름도.
이하에서는 첨부한 도면들을 참조하여 본 발명의 바람직한 실시예에 따른 메모리 시스템 및 그의 메모리 맵핑 방법에 대해서 상세하게 설명한다.
도 1은 본 발명의 일 실시예에 따른 메모리 시스템의 개략적 구성도이다.
일 실시예에 따른 메모리 시스템은 플래쉬 메모리 등의 비휘발성 메모리(110)와, 비휘발성 메모리(110)를 제어하기 위한 메모리 제어부(120)를 포함한다.
메모리 제어부(120)는 초고속 SRAM 등을 이용해 구현할 수 있으며, 논리 주소를 비휘발성 메모리(110) 상의 물리 주소에 맵핑하기 위한 자료구조를 맵핑 테이블(mapping table)의 형태로 제공한다. 특히 메모리 제어부(120)는 논리적 공간 상의 논리 주소들을 일정 단위(복수 페이지들을 묶은 페이지 블록 단위)로 그룹화하여 복수의 페이지들을 포함하는 논리 페이지 블록을 설정하고, 그 대표 값을 구하여 해당 페이지들의 맵핑 정보를 제1 맵핑 테이블(T121) 상에 하나의 엔트리(entry)로 저장한다.
물리적 공간 상에 연속적으로 저장되는 시퀀셜 데이터(sequential data)의 경우 해당 시퀀셜 데이터를 순차적으로 저장하는 연속된 물리 주소들과 대응하는 연속된 논리 주소들에 대하여 하나의 대표 값을 설정하고, 설정된 대표 값을 이용하여 논리 주소들과 물리 주소들 간의 맵핑을 수행하게 된다.
즉 시퀀셜 데이터를 순차적으로 저장하는 연속된 물리 주소들의 페이지들을 물리 페이지 블록으로, 그와 맵핑되는 연속된 논리 주소들의 페이지들을 논리 페이지 블록으로 정의할 때, 메모리 제어부(120)는 물리 페이지 블록과 대응하는 논리 페이지 블록 내 논리 주소들에 대하여 모두 동일한 대표 값을 설정하고 이를 이용하여 개별 페이지 단위가 아니라 여러 페이지들이 포함되는 페이지 블록 단위로 맵핑을 수행한다.
여기서 시퀀셜 데이터는 연속된 논리 주소들의 논리 페이지 블록과 대응하는 연속된 물리 주소들의 물리 페이지 블록에 순차적으로 저장되는 데이터로 정의할 수 있다.
메모리 제어부(120)는 시퀀셜 데이터를 페이지 블록 단위로 맵핑하기 위한 제1 맵핑 테이블(T121)을 제공한다. 제1 맵핑 테이블(T121) 내 시퀀셜 엔트리는 대표 값이 되는 논리 페이지 블록의 키 값(key), 논리 페이지 블록에 대응하는 물리 페이지 블록의 시작 주소(start_physical_address) 등의 맵핑 정보를 포함한다. 읽기(read) 등의 동작이 수행됨에 따라 시퀀셜 데이터에 대한 논리 주소가 요청되면 메모리 제어부(120)는 해당 논리 주소의 키 값(key)을 계산하여 제1 맵핑 테이블(T121)로부터 키 값(key)에 대응하는 시퀀셜 엔트리(sequential entry)를 검색하고, 논리 주소 및 검색된 시퀀셜 엔트리에 의거하여 해당 논리 주소와 맵핑되는 물리 주소를 리턴(return)한다.
또한 메모리 제어부(120)는 랜덤 데이터의 메모리 맵핑을 위한 제2 맵핑 테이블(T122)을 제공한다. 이는 물리적 공간 상에서 연속되지 않는 랜덤 데이터를 페이지 단위로 개별적으로 맵핑하기 위한 자료구조로서, 제2 맵핑 테이블(T122) 내 각 엔트리는 논리 주소, 해당 논리 주소에 대응하는 물리 주소 등의 맵핑 정보를 포함한다.
덮어쓰기(overwrite) 등의 동작에 의해 시퀀셜 데이터가 랜덤 데이터가 되는 경우 메모리 제어부(120)는 시퀀셜 데이터의 맵핑 정보를 저장하는 제1 맵핑 테이블(T121) 상의 시퀀셜 엔트리를 랜덤 엔트리로 변환하고, 해당 엔트리의 논리 주소들에 대응하는 물리 주소들의 맵핑 정보를 페이지 단위로 구성하여 제2 맵핑 테이블(T122)에 저장한다.
또한 가비지 컬렉션(garbage collection) 등의 동작을 통해 시퀀셜 데이터가 늘어나 연속된 논리 주소들이 연속된 물리 주소들에 놓여지게 되는 경우에는 메모리 제어부(120)가 해당 논리 주소들을 일정 단위(페이지 블록 단위)로 그룹화하여 랜덤 엔트리를 시퀀셜 엔트리로 변환한다.
랜덤 엔트리를 시퀀셜 엔트리로 변환하는 경우 메모리 제어부(120)는 해당 랜덤 엔트리의 속성(예컨대 변환 빈도)에 의거하여 시퀀셜 엔트리로의 변환 여부를 결정할 수 있다. 예컨대 특정 논리 주소들에 대한 엔트리가 시퀀셜 엔트리에서 랜덤 엔트리로, 또는 랜덤 엔트리에서 시퀀셜 엔트리로 너무 자주 변경되면 맵핑 테이블의 사용 효율이 저하되므로 변환 빈도 등을 속성으로 저장하여 일정 횟수 이상 엔트리 변경이 발생하면 시퀀셜 데이터가 되는 경우에도 그에 상응하는 엔트리를 시퀀셜 엔트리로 변경하지 않고 랜덤 엔트리로 유지한다.
도 2는 본 발명의 일 실시예에 따른 맵핑 테이블의 엔트리 구조이다.
제1 맵핑 테이블(T121)의 각 엔트리는 페이지 블록 단위로 그룹화된 논리 주소들의 대표 값이 되는 논리 페이지 블록의 키 값(key)(F110), 그에 대응하는 물리 페이지 블록의 시작 주소(start_physical_page)(F120), 물리 페이지 그룹의 길이(page_num)(F130), 다음 엔트리의 주소(next_pointer)(F140) 등의 필드를 포함한다.
하나의 논리 페이지 블록에 속하는 모든 논리 주소들에 대하여 동일한 대표 값(예컨대 논리 페이지 그룹의 시작 주소를 3비트 우측 쉬프트 연산한 키 값)이 설정되며, 동일한 대표 값에 포함되는 논리 주소들의 그룹은 하나의 논리 페이지 블록으로 정의된다.
도 3은 본 발명의 일 실시예에 따른 시퀀셜 데이터의 메모리 맵핑 구조를 예시한 도면으로서, 논리적 공간의 페이지들이 비휘발성 메모리(110) 내의 물리적 공간에서 일정한 순서로 나열된 물리 주소들에 위치해 있는 경우를 예시하고 있다.
시퀀셜 데이터는 물리적 공간 상에서 연속된 물리 주소들의 물리 페이지 블록(PPB)에 순차적으로 저장되며, 연속된 논리 주소들의 논리 페이지 블록(S_LPB)이 해당 물리 페이지 블록(PPB)의 물리 주소들에 각각 맵핑된다. 도 3의 경우를 예로 들면 연속적인 논리적 공간 상의 논리 주소 16, 17, 18, 19, 20, 21, 22, 23에 위치한 페이지들이 물리적 공간 상에서 물리 주소 45 내지 52에 존재하게 된다.
논리 주소들의 대표 값을 설정하는 방법은 여러 가지가 있을 수 있다. 도 3은 논리적 공간 상의 연속적인 8개의 페이지들을 하나의 논리 페이지 블록으로 나누는 경우를 예시한 것이다. 도 3의 경우 논리 주소 0인 페이지에서 7인 페이지까지가 하나의 논리 페이지 블록을 구성하고, 논리 주소 1인 페이지에서 15인 페이지까지가 또 하나의 논리 페이지 블록을 구성한다. 하나의 논리 페이지 블록은 동일한 대표 값을 가진다. 즉 하나의 논리 페이지 블록에 속하는 논리 주소들은 모두 제1 맵핑 테이블(T121) 내 하나의 시퀀셜 엔트리에 대응하게 되며, 모두 동일한 대표 값을 가지게 된다.
8개의 연속된 페이지들을 논리 페이지 블록으로 정의하는 예에서는 논리 주소에 지정된 연산, 예컨대 3비트 우측 쉬프트(3 bit right shift) 연산을 수행하여 대표 값으로 사용할 키 값(key)을 얻는다. 이러한 경우 도 3의 논리 주소 16 내지 23의 페이지들은 동일하게 키 값 2를 가지게 된다.
도 4a 및 도 4b는 맵핑 테이블 상에 포함되어 도 3의 시퀀셜 데이터에 대한 맵핑 정보를 저장하는 엔트리를 예시한 도면이다.
도 4a는 기존 기술로서 각각의 논리 주소에 대한 물리 주소의 위치를 페이지 단위로 개별적으로 저장하는 맵핑 테이블을 예시한 것이고, 도 4b는 본 발명의 일 실시예를 통해 구현된 맵핑 테이블을 예시한 것이다.
예를 들어 특정 시퀀셜 데이터에 대하여, 연속적인 논리적 공간 상의 논리 주소 16, 17, 18, 19, 20, 21, 22, 23에 위치한 페이지들이 물리적 공간 상에서 물리 주소 45 내지 52에 존재하게 된다고 가정할 때, 기존에는 도 4a와 같이 8개의 페이지 각각에 대해 8개의 엔트리를 맵핑 테이블(T21)에 저장하게 된다. 이러한 경우 맵핑 테이블의 구조가 복잡해지고 맵핑 테이블을 저장하기 위한 메모리 양이 많아지며 검색 속도가 느려지게 된다.
동일한 시퀀셜 데이터에 대하여, 일 실시예는 도 4b에 도시된 것처럼 논리 페이지 블록(S_LPB)의 대표 논리 주소 16에 대한 키 값 2(F110), 물리 페이지 블록(PPB)의 시작 주소 45(F120), 그리고 물리 페이지 블록(PPB)의 길이 8(F130)을 가지고 하나의 시퀀셜 엔트리(s_entry)를 만든다.
이와 같이 일 실시예는 비휘발성 메모리(110)의 메모리 맵핑 기술 중 페이지 맵핑을 구현하기 위한 효율적인 맵핑 테이블을 제시한다. 개별적인 논리 주소에 대한 맵핑 정보를 맵핑 테이블에 저장하는 것이 아니라 연속적인 논리 주소의 페이지들이 물리적으로 연속적으로 위치해 있을 때 대표적인 논리 주소에 대한 정보만 맵핑 테이블에 저장해 놓음으로써 맵핑 테이블 유지를 위한 메모리 양을 줄이고 검색 속도를 높일 수 있다.
시퀀셜 데이터는 물리적으로 연속된 위치에 저장되고 논리 페이지 그룹의 논리 주소들과 물리 페이지 그룹의 물리 주소들은 순차적으로 대응하므로, 논리 주소들의 대표 값을 이용해 여러 페이지들을 그룹화한 페이지 블록 단위로 메모리 맵핑을 수행함으로써 맵핑 테이블의 구조를 단순화하여 메모리 소모량을 최소화하는 것이다.
도 5는 본 발명의 일 실시예에 따른 랜덤 데이터의 메모리 맵핑 구조를 예시한 도면이고, 도 6은 맵핑 테이블 상에 포함되어 도 5의 랜덤 데이터에 대한 맵핑 정보를 저장하는 랜덤 엔트리를 예시한 도면이다.
하나의 논리 페이지 블록(R_LPB)에 속하는 페이지들이 물리적으로 연속되어 저장되지 못할 경우에는 해당 논리 페이지 블록(R_LPB)에 속하는 개별적인 페이지에 대한 맵핑 정보를 유지하여야 한다. 이러한 경우 해당 데이터는 물리적 공간에서 불연속적으로 저장되므로 랜덤 데이터라 정의할 수 있다.
일 실시예는 랜덤 데이터에 대해 크기 8의 배열을 이용해 페이지들 각각에 대한 물리 주소를 저장한다.
도 5는 랜덤 데이터를 예시한 것이다. 도 3의 상태에서 논리 주소 16의 페이지에 대한 덮어쓰기(overwrite)가 수행된다면 덮어쓰기가 지원되지 않는 비휘발성 메모리(110)의 특성 상, 논리 주소 16의 페이지는 물리 주소 53에 저장된다. 도 6은 도 5의 랜덤 데이터에 대한 맵핑 정보를 맵핑 테이블에 저장하는 구조를 예시한 것이다. 도 6에서 랜덤 데이터의 페이지 단위 맵핑 정보는 제2 맵핑 테이블(T122)의 엔트리(p_entry)에 저장되고, 해당 데이터에 대응하는 맵핑 정보를 저장하던 제1 맵핑 테이블(T121) 상의 엔트리는 시퀀셜 엔트리에서 랜덤 엔트리(r_entry)로 변환되어 제2 맵핑 테이블(T122)의 엔트리(p_entry)에 접근하기 위한 정보를 제공하게 된다.
크기 8의 배열을 이용한 제2 맵핑 테이블(T122)의 엔트리(p_entry)는 예시된 것처럼 1차원 배열을 이용해 구현할 수도 있고, 해쉬 테이블이나 레드-블랙(Red-black) 트리 등을 이용해 구현할 수도 있다.
도 6에서 제1 맵핑 테이블(T121) 상의 랜덤 엔트리(r_entry)에서 물리 페이지 그룹의 길이(page_num)(F130)를 저장하는 필드는 0의 값을 가지게 된다. 해당 필드가 0이라는 것은 해당 엔트리가 시퀀셜 엔트리가 아닌 랜덤 엔트리이며, 그 랜덤 엔트리와 대응하는 논리 페이지 블록의 페이지들이 물리적 공간에 불연속적으로 저장되어 있으므로 해당 페이지들의 맵핑 정보를 얻기 위해 제2 맵핑 테이블(T122)을 참조해야 함을 의미한다.
도 7은 본 발명의 일 실시예에 따른 메모리 맵핑 방법의 흐름도로서, 읽기(read) 동작 시 제1 맵핑 테이블(T121)의 엔트리를 이용한 메모리 맵핑을 예시하고 있다. 제1 맵핑 테이블(T121)의 각 엔트리는 도 2의 구조를 채용하여 논리 페이지 그룹의 키 값(key)(F110), 해당 논리 페이지 그룹에 대응하는 물리 페이지 그룹의 시작 주소(start_physical_address)(F120) 및 해당 물리 페이지 그룹의 길이(page_num)(F130)를 포함한다.
읽기(read) 동작 등에 의해 시퀀셜 데이터의 논리 주소(logical_page)가 요청되면 메모리 제어부(120)는 메모리 맵핑을 수행하여 입력된 논리 주소로부터 물리 주소(physical_page)를 찾는다.
이를 위하여 메모리 제어부(120)는 먼저 요청된 논리 주소의 키 값(key)을 계산하여 물리 페이지 블록에 대응하는 논리 페이지 블록의 연속된 논리 주소들에 대하여 모두 동일하게 설정된 대표 값을 획득한다. 예컨대 키 값(key)은 'key = logical_page >> m_bit_shift'의 연산에 의해 계산된다. m_bit_shift의 값을 3이라고 가정하면 논리 주소(logical_page)를 3비트 만큼 우측 쉬프트시켜 해당 논리 주소의 키 값(key)을 얻을 수 있다(S110).
이후 메모리 제어부(120)는 제1 맵핑 테이블(T121)로부터 S110에서 계산된 키 값(key)에 대응하는 시퀀셜 엔트리를 검색하여 해당 엔트리에 포함된 물리 페이지 블록의 시작 주소(start_physical_address)를 획득하고, 논리 페이지 블록 내 해당 논리 주소가 위치하는 순서에 의거하여 페이지 오프셋(page_offset)을 계산한다.
이를 위하여 메모리 제어부(120)는 제1 맵핑 테이블(T121)을 탐색(S120)하여 해당 키 값(key)을 가지는 엔트리(entry)를 찾는다(S130). 메모리 제어부(120)는 엔트리(entry)가 없으면 'NOT_FOUND'를 리턴하고(S180), 엔트리(entry)가 있으면 S140으로 진행하여 후속 절차를 진행한다.
예컨대 물리 페이지 그룹의 시작 주소(start_physical_address)로부터 얻어지는 페이지 오프셋(page_offset)은 양(+)의 값으로서 'page_offset = + (logical_page - (key << m_bit_shift))'에 의해 얻어질 수 있다(S150). S110에서의 키 값(key) 계산 시 3비트 우측 쉬프트가 이루어진 경우 S150의 페이지 오프셋 계산 단계에서 키 값(key)을 3비트 만큼 좌측 쉬프트 시키게 된다.
이후 메모리 제어부(120)는 해당 엔트리에 포함된 물리 페이지 블록의 시작 주소(start_physical_address)에 S150에서 계산된 페이지 오프셋(page_offset)을 반영하여 요청된 논리 주소(logical_address)에 상응하는 물리 주소(physical_address)를 리턴하게 된다(S190). 만약 페이지 오프셋(page_offset)이 해당 엔트리 내 물리 페이지 블록의 길이(page_num)를 벗어난 무효한 값이면(S170) 'NOT_FOUND'를 리턴한다(S180). 예컨대 'IF (page_offset >= page_num) return NOT_FOUND, ELSE return (physical_page = start_physical_page + page_offset)'의 동작이 수행될 수 있다(S170 내지 S190).
한편 랜덤 데이터의 논리 주소가 요청되는 경우, 제1 맵핑 테이블(T121)에서 요청된 논리 주소를 찾았을 때 해당 논리 주소에 대응하는 엔트리가 도 6과 같이 물리 페이지 그룹의 길이(page_num)(F130)를 저장하는 필드가 0의 값을 가지는 랜덤 엔트리이면 그 랜덤 엔트리와 대응하는 논리 페이지 블록이 물리적 공간에 불연속적으로 저장되어 있는 것이다. 이는 랜덤 데이터의 맵핑 정보를 얻기 위해 제2 맵핑 테이블(T122)을 참조해야 함을 의미한다. 논리 주소(logical_page)로부터 물리 주소(physical_page)를 찾는 절차에서 S140 단계는 이를 고려하기 위한 것이다.
S140에서 'page_num==0'라면 'start_physical_page'가 가리키는 제2 맵핑 테이블(T122)의 해당 엔트리로 가서 물리 주소를 얻는다(S160). S140에서 'page_num != 0'라면 현재 엔트리를 시퀀셜 엔트리로 판단하여 S150의 후속 절차를 진행하게 된다.
가비지 컬렉션을 수행하면 제1 맵핑 테이블(T121) 상의 랜덤 엔트리가 시퀀셜 엔트리로 변환되는 경우가 발생할 수 있다. 이후 시퀀셜 데이터에 대한 일부 페이지의 쓰기가 수행되면 해당 데이터의 맵핑 정보를 저장하는 시퀀셜 엔트리는 다시 랜덤 엔트리로 전환된다. 시퀀셜 엔트리에서 랜덤 엔트리로의 전환 혹은 그 반대 방향으로의 전환은 CPU 및 메모리 연산을 요구하므로 전체 시스템의 성능 저하를 초래할 수 있다. 이를 막기 위해 일 실시예는 랜덤 데이터의 각 페이지에 대한 맵핑 정보를 개별적으로 저장하는 제2 맵핑 테이블(T122)을 구성하고, 제1 맵핑 테이블(T121)의 특정 필드를 통해 해당 논리 주소들의 데이터가 랜덤 데이터로 확인되는 경우 제2 맵핑 테이블(T122)을 참조하여 페이지 단위의 메모리 맵핑을 수행하게 된다.
또한 잦은 엔트리 변환으로 인한 전체 시스템의 성능 저하를 막기 위해, 시퀀셜 엔트리와 랜덤 엔트리 간 전환되는 빈도를 계산하여 그 전환의 빈도가 일정 임계 값(Threshhold)을 넘어가면 해당 엔트리를 랜덤 엔트리로 계속적으로 유지한다.
도 8a 내지 도 8c는 본 발명의 다른 실시예에 따른 메모리 맵핑 방법의 흐름도로서, 쓰기(write) 동작 시 논리 주소를 비휘발성 메모리(110) 상의 물리 주소에 맵핑하기 위한 메모리 맵핑 방법을 예시하고 있다.
메모리 제어부(120)에 탑재되어 호스트와의 메모리 맵핑을 제어하는 파일 변환 계층은 호스트로부터 쓰기 요청이 들어오면 비휘발성 메모리(110)에 요청된 데이터를 기록한 이전이나 이후 시점에서 맵핑 테이블(T121, T122)에 대한 업데이트를 진행한다. 도 8a 및 도 8b를 참조하면 시퀀셜 데이터에 대한 맵핑 테이블 업데이트와 랜덤 데이터에 대한 맵핑 테이블 업데이트 방식을 알 수 있다.
파일 변환 계층이 맵핑 테이블 업데이트를 진행할 때, 해당 업데이트가 시퀀셜 데이터에 해당할 경우는 도 8a의 과정을 수행하고 랜덤 데이터일 경우는 도 8b의 과정을 수행한다.
이때 해당 업데이트 과정이 여러 개의 시퀀셜 데이터들에 대한 것일 경우 페이지 블록 단위로 도 8a의 과정을 반복해서 수행한다. 또한 여러 개의 랜덤 데이터들일 경우 각 페이지에 대해 도 8b의 과정을 반복해서 수행한다.
예를 들어, 논리 주소 16개의 페이지들, 즉 16 페이지에서 31 페이지까지가 물리적으로 연속해서 저장된 경우, 2개의 시퀀셜 데이터들이 발생하므로, 도 8a의 과정이 두 번 수행된다.
가비지 컬렉션은 메모리 제어부(120)의 파일 변환 계층 혹은 스토리지 관리 소프트웨어가 일정한 기준에 의해 호출되는데, 이는 호스트의 쓰기/읽기 시점일 수도 있고, 시스템의 유휴(idle) 상태일 수도 있다. 가비지 컬렉션의 수행은 맵핑 테이블(T121, T122)의 업데이트를 동반하게 되는데 도 8c는 가비지 컬렉션을 수행하는 동안 하나의 시퀀셜 데이터에 대한 맵핑 테이블 업데이트를 수행할 때 수행해야 하는 절차이다.
도 8a는 시퀀셜 데이터의 생성 시 맵핑 테이블 내 엔트리의 관리 방식을 예시한 것이다.
시퀀셜 데이터에 대응하는 논리 페이지 블록의 키 값(key), 물리 페이지 블록의 시작 주소(start_physical_address)와 물리 페이지 블록의 길이(page_num)가 입력되면(S210), 메모리 제어부(120)는 제1 맵핑 테이블(T121)을 검색(S220)하여 해당 키 값(key)을 가지는 엔트리가 존재하는지 여부를 확인하고(S230), 해당 엔트리가 검색되면 S240으로 진행하여 검색된 엔트리의 일부 필드(예컨대 page_num)를 통해 해당 엔트리의 종류가 시퀀셜 엔트리인지 혹은 랜덤 엔트리인지 여부를 파악한다. S230에서 제1 맵핑 테이블(T121) 내에 주어진 키 값(key)에 대응하는 엔트리가 존재하지 않으면 메모리 제어부(120)가 제1 맵핑 테이블(T121) 상에 S210을 통해 입력된 필드들(key, start_physical_address, page_num)을 포함하는 시퀀셜 엔트리를 생성하여 시퀀셜 데이터의 맵핑 정보를 저장한다(S250).
S240에서 키 값(key)에 대응하는 엔트리가 시퀀셜 엔트리이면 메모리 제어부(120)가 해당 엔트리 내 필드들(key, start_physical_address, page_num)을 업데이트한다(S260). S240에서 키 값(key)에 대응하는 엔트리가 시퀀셜 엔트리가 아닌 랜덤 엔트리인 경우에는 메모리 제어부(120)가 제1 맵핑 테이블(T121) 상의 랜덤 엔트리를 시퀀셜 엔트리로 변경한 후 해당 랜덤 엔트리가 가르키던 제2 맵핑 테이블(T122) 상의 엔트리를 삭제하게 된다(S270).
도 8b는 랜덤 데이터의 생성 시 맵핑 테이블 내 엔트리의 관리 방식을 예시한 것이다.
랜덤 데이터에 대응하는 하나의 논리 주소와 하나의 물리 주소가 입력되면(S310) 메모리 제어부(120)는 'key = logical_page >> m_bit_shift'의 연산에 의해 키 값(key)을 얻는다(S320). 이후 메모리 제어부(120)는 해당 키 값(key)에 의거하여 제1 맵핑 테이블(T121)을 검색(S330)하여 제1 맵핑 테이블(T121) 상에 해당 키 값(key)을 가지는 엔트리가 존재하는지 여부를 확인한다(S340).
S340에서 제1 맵핑 테이블(T121) 상에 주어진 키 값(key)에 대응하는 엔트리가 검색되면 메모리 제어부(120)는 S350으로 진행하여 검색된 엔트리의 일부 필드(예컨대 page_num)를 통해 해당 엔트리의 종류가 시퀀셜 엔트리인지 혹은 랜덤 엔트리인지 여부를 파악한다. S340에서 제1 맵핑 테이블(T121) 내에 주어진 키 값(key)에 대응하는 엔트리가 존재하지 않으면 메모리 제어부(120)가 제1 맵핑 테이블(T121) 상에 해당 키 값(key)을 포함하는 랜덤 엔트리를 생성(S360)한 후 S390으로 진행하여 제2 맵핑 테이블(T122) 상에 S310을 통해 입력된 논리 주소 및 물리 주소(랜덤 데이터의 맵핑 정보)를 포함하는 엔트리를 생성한다.
S350에서 키 값(key)에 대응하는 엔트리가 시퀀셜 엔트리이면 메모리 제어부(120)가 해당 엔트리의 일부 필드(예컨대 page_num)의 값을 변경하여 해당 엔트리를 시퀀셜 엔트리에서 랜덤 엔트리로 변환한 후(S370), 제2 맵핑 테이블(T122) 상에 S310을 통해 입력된 논리 주소 및 물리 주소(랜덤 데이터의 맵핑 정보)를 포함하는 엔트리를 생성하여 저장한다(S390).
S350에서 키 값(key)에 대응하는 엔트리가 시퀀셜 엔트리가 아닌 랜덤 엔트리이면 메모리 제어부(120)는 S380으로 진행하여 해당 랜덤 엔트리가 가르키는 제2 맵핑 테이블(T122) 상의 엔트리를 찾아가서 해당 엔트리 내 물리 주소의 값을 S310에서 주어진 값으로 변경하게 된다.
도 8c는 가비지 컬렉션(garbage collection) 동작에 따른 엔트리의 관리 방식을 예시한 것이다.
가비지 컬렉션을 통해 시퀀셜 데이터가 늘어남에 따라 시퀀셜 데이터에 대응하는 논리 페이지 블록의 키 값(key), 물리 페이지 블록의 시작 주소(start_physical_address)와 물리 페이지 블록의 길이(page_num)가 입력되면(S410), 메모리 제어부(120)는 제1 맵핑 테이블(T121) 상에서 주어진 키 값(key)에 대응하는 엔트리를 검색한다(S420).
검색된 엔트리가 시퀀셜 엔트리인 경우(S430) 메모리 제어부(120)는 S450으로 진행하여 해당 엔트리 내 필드들(start_physical_address, page_num)을 업데이트한다.
검색된 엔트리가 시퀀셜 엔트리가 아닌 랜덤 엔트리인 경우(S430) 메모리 제어부(120)는 해당 랜덤 엔트리의 속성, 즉 시퀀셜 엔트리로의 변환 빈도를 계산한다(S440). 계산된 변환 빈도가 임계 값 이상이면(S460) 메모리 제어부(120)가 제1 맵핑 테이블(T121) 상의 랜덤 엔트리를 시퀀셜 엔트리로 변경하고, 해당 랜덤 엔트리가 가르키던 제2 맵핑 테이블(T122) 상의 엔트리를 삭제한다(S470).
S440의 계산 결과 변환 빈도가 임계 값보다 작은 경우에는 메모리 제어부(120)가 해당 엔트리를 랜덤 엔트리로 유지하고, 제2 맵핑 테이블(T122) 내 해당 엔트리의 각 논리 주소에 대한 물리 주소를 업데이트한다(S480).
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다.
따라서, 이상에서 기술한 실시예들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이므로, 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 하며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.
110: 비휘발성 메모리
120: 메모리 제어부
T121: 제1 맵핑 테이블
T122: 제2 맵핑 테이블

Claims (14)

  1. 비휘발성 메모리; 및
    논리 주소를 상기 비휘발성 메모리 상의 물리 주소에 맵핑하기 위한 자료구조를 제공하되, 연속된 물리 주소들의 물리 페이지 블록에 순차적으로 저장되어 있는 시퀀셜 데이터의 경우 상기 물리 페이지 블록과 대응하는 논리 페이지 블록의 연속된 논리 주소들에 대하여 대표 값을 설정하고, 상기 대표 값을 이용하여 상기 논리 페이지 블록 내 논리 주소들과 상기 물리 페이지 블록 내 물리 주소들 간의 맵핑을 수행하는 메모리 제어부를 포함하는 메모리 시스템.
  2. 제1항에 있어서, 상기 메모리 제어부는,
    시퀀셜 데이터의 맵핑을 위한 자료구조로서 페이지 블록 단위의 맵핑을 위한 제1 맵핑 테이블을 저장하되, 상기 제1 맵핑 테이블 내 각 시퀀셜 엔트리는 대표 값이 되는 논리 페이지 블록의 키 값과, 상기 논리 페이지 블록에 대응하는 물리 페이지 블록의 시작 주소를 포함하는 메모리 시스템.
  3. 제2항에 있어서, 상기 메모리 제어부는,
    논리 주소가 요청되면 상기 논리 주소의 키 값을 계산하여 상기 제1 맵핑 테이블로부터 상기 키 값에 대응하는 시퀀셜 엔트리를 검색하고, 상기 검색된 시퀀셜 엔트리에 의거하여 상기 논리 주소와 맵핑되는 물리 주소를 리턴하는 것을 특징으로 하는 메모리 시스템.
  4. 제1항에 있어서, 상기 메모리 제어부는,
    랜덤 데이터의 맵핑을 위한 자료구조로서 페이지 단위의 개별적인 맵핑을 위한 제2 맵핑 테이블을 저장하되, 상기 제2 맵핑 테이블 내 각 엔트리는 논리 주소 및 상기 논리 주소에 대응하는 물리 주소를 포함하는 메모리 시스템.
  5. 제1항에 있어서, 상기 메모리 제어부는,
    시퀀셜 데이터가 랜덤 데이터가 되면 상기 시퀀셜 데이터의 맵핑 정보를 저장하는 시퀀셜 엔트리를 랜덤 엔트리로 변환하는 것을 특징으로 하는 메모리 시스템.
  6. 제5항에 있어서, 상기 메모리 제어부는,
    시퀀셜 데이터가 늘어나 연속된 논리 주소들이 연속된 물리 주소들에 놓여지게 되면 논리 주소들을 일정 단위로 그룹화하여 랜덤 엔트리를 시퀀셜 엔트리로 변환하는 것을 특징으로 하는 메모리 시스템.
  7. 제6항에 있어서, 상기 메모리 제어부는,
    랜덤 엔트리를 시퀀셜 엔트리로 변환하는 경우 상기 랜덤 엔트리의 속성에 의거하여 변환 여부를 결정하는 것을 특징으로 하는 메모리 시스템.
  8. 논리 주소를 비휘발성 메모리 상의 물리 주소에 맵핑하기 위한 메모리 맵핑 방법에 있어서,
    연속된 물리 주소들의 물리 페이지 블록에 순차적으로 저장되어 있는 시퀀셜 데이터의 경우 상기 물리 페이지 블록과 대응하는 논리 페이지 블록의 연속된 논리 주소들에 대하여 대표 값을 설정하는 단계; 및
    상기 대표 값 및 상기 논리 페이지 블록에 대응하는 물리 페이지 블록의 시작 주소를 포함하는 시퀀셜 엔트리를 생성하여 맵핑 테이블 상에 저장하는 단계를 포함하되,
    상기 시퀀셜 엔트리는 하나의 대표 값을 이용해 상기 논리 페이지 블록 내 논리 주소들 모두를 상기 물리 페이지 블록 내 물리 주소들에 맵핑하기 위한 것임을 특징으로 하는 메모리 맵핑 방법.
  9. 제8항에 있어서,
    시퀀셜 데이터가 랜덤 데이터가 되면 상기 시퀀셜 데이터의 맵핑 정보를 저장하는 시퀀셜 엔트리를 랜덤 엔트리로 변환하는 단계를 더 포함하는 메모리 맵핑 방법.
  10. 제9항에 있어서,
    시퀀셜 데이터가 늘어나 연속된 논리 주소들이 연속된 물리 주소들에 놓여지게 되면 논리 주소들을 일정 단위로 그룹화하여 랜덤 엔트리를 시퀀셜 엔트리로 변환하는 단계를 더 포함하는 메모리 맵핑 방법.
  11. 제10항에 있어서,
    랜덤 엔트리를 시퀀셜 엔트리로 변환하는 경우 상기 랜덤 엔트리의 속성에 의거하여 변환 여부를 결정하는 것을 특징으로 하는 메모리 맵핑 방법.
  12. 논리 주소가 요청되면 상기 논리 주소가 속한 논리 페이지 블록의 대표 값을 획득하기 위하여 상기 논리 주소의 키 값을 계산하는 단계;
    제1 맵핑 테이블로부터 상기 키 값에 대응하는 엔트리를 검색하는 단계;
    상기 검색된 엔트리에 포함된 물리 페이지 블록의 시작 주소를 획득하는 단계;
    상기 논리 페이지 블록 내에서 상기 논리 주소가 위치하는 순서에 의거하여 페이지 오프셋을 계산하는 단계; 및
    상기 물리 페이지 블록의 시작 주소에 상기 페이지 오프셋을 반영하여 상기 논리 주소에 상응하는 물리 주소를 리턴하는 단계를 포함하는 메모리 맵핑 방법.
  13. 제12항에 있어서,
    상기 검색된 엔트리의 일부 필드에 의거하여 상기 검색된 엔트리가 시퀀셜 데이터의 맵핑 정보를 저장하고 있는 시퀀셜 엔트리인지 여부를 확인하는 단계를 더 포함하는 메모리 맵핑 방법.
  14. 제13항에 있어서,
    상기 검색된 엔트리가 시퀀셜 엔트리가 아닌 랜덤 엔트리이면 상기 검색된 엔트리를 통해 제2 맵핑 테이블에 접근하여 상기 제2 맵핑 테이블로부터 상기 논리 주소에 대응하는 물리 주소를 리턴하는 것을 특징으로 하는 메모리 맵핑 방법.
KR1020110021133A 2011-03-09 2011-03-09 메모리 시스템 및 그의 메모리 맵핑 방법 KR101226600B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020110021133A KR101226600B1 (ko) 2011-03-09 2011-03-09 메모리 시스템 및 그의 메모리 맵핑 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110021133A KR101226600B1 (ko) 2011-03-09 2011-03-09 메모리 시스템 및 그의 메모리 맵핑 방법

Publications (2)

Publication Number Publication Date
KR20120103095A true KR20120103095A (ko) 2012-09-19
KR101226600B1 KR101226600B1 (ko) 2013-01-28

Family

ID=47111262

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110021133A KR101226600B1 (ko) 2011-03-09 2011-03-09 메모리 시스템 및 그의 메모리 맵핑 방법

Country Status (1)

Country Link
KR (1) KR101226600B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103150258A (zh) * 2013-03-20 2013-06-12 中国科学院苏州纳米技术与纳米仿生研究所 一种固态存储系统的写入、读取及垃圾收集方法
KR20190094975A (ko) * 2018-02-06 2019-08-14 삼성전자주식회사 메모리 컨트롤러 및 상기 메모리 컨트롤러의 동작 방법
WO2021061973A1 (en) * 2019-09-27 2021-04-01 Micron Technology, Inc. Logical-to-physical translation techniques in limited ram systems

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102447471B1 (ko) 2015-06-24 2022-09-27 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 스토리지 장치
US10606760B2 (en) 2017-08-23 2020-03-31 Samsung Electronics Co., Ltd. Nonvolatile memory devices and methods of controlling the same
KR20200126491A (ko) 2019-04-30 2020-11-09 에스케이하이닉스 주식회사 컨트롤러 및 그 동작 방법

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4233213B2 (ja) * 2000-12-27 2009-03-04 Tdk株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
KR101305490B1 (ko) * 2005-10-01 2013-09-06 삼성전자주식회사 메모리 맵핑 방법 및 장치
KR100781517B1 (ko) 2006-02-16 2007-12-03 삼성전자주식회사 비휘발성 메모리의 맵핑 정보 관리 장치 및 방법
KR100781196B1 (ko) 2006-07-27 2007-12-03 트렉 2000 인터네셔널 엘티디. 메모리 어드레스 맵핑 테이블을 이용한 휴대용 데이터 저장장치

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103150258A (zh) * 2013-03-20 2013-06-12 中国科学院苏州纳米技术与纳米仿生研究所 一种固态存储系统的写入、读取及垃圾收集方法
KR20190094975A (ko) * 2018-02-06 2019-08-14 삼성전자주식회사 메모리 컨트롤러 및 상기 메모리 컨트롤러의 동작 방법
WO2021061973A1 (en) * 2019-09-27 2021-04-01 Micron Technology, Inc. Logical-to-physical translation techniques in limited ram systems
US11487653B2 (en) 2019-09-27 2022-11-01 Micron Technology, Inc. L2P translation techniques in limited RAM systems to increase random write performance using multiple L2P caches

Also Published As

Publication number Publication date
KR101226600B1 (ko) 2013-01-28

Similar Documents

Publication Publication Date Title
KR101226600B1 (ko) 메모리 시스템 및 그의 메모리 맵핑 방법
CN103186350B (zh) 混合存储系统及热点数据块的迁移方法
CN102364474B (zh) 用于机群文件系统的元数据存储系统和管理方法
EP3121703B1 (en) Data caching method, cache and computer system
US10061704B2 (en) Systems and methods for managing cache of a data storage device
KR101466585B1 (ko) 메모리 장치 및 메모리 장치의 관리 방법
KR20180131475A (ko) 비휘발성 메모리(nvm)에서 다중 네임스페이스 관리
CN107368436B (zh) 一种联合地址映射表的闪存冷热数据分离存储方法
JP2015512604A (ja) 暗号ハッシュ・データベース
CN109582598B (zh) 一种基于外部存储实现高效查找哈希表的预处理方法
CN104346357A (zh) 一种嵌入式终端的文件存取方法及系统
CN110532201B (zh) 一种元数据处理方法及装置
CN102467458B (zh) 建立数据区块的索引方法
CN103019887A (zh) 数据备份方法及装置
CN103838853A (zh) 一种基于不同存储介质的混合文件系统
CN103229164A (zh) 数据访问方法和装置
CN109918316B (zh) 一种减少ftl地址映射空间的方法及其系统
CN109388341A (zh) 一种基于Device Mapper的系统存储优化方法
CN103455284A (zh) 一种读写数据的方法及装置
CN103198021B (zh) 一种提高固态硬盘数据传输效率的方法
CN107423425B (zh) 一种对k/v格式的数据快速存储和查询方法
CN102354301B (zh) 缓存分区方法
CN103019963B (zh) 一种高速缓存的映射方法及存储设备
CN109558093B (zh) 一种针对图像处理型负载的混合内存页面迁移方法
CN103744864A (zh) 缓存数据读写的方法、系统及其固态硬盘

Legal Events

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

Payment date: 20160120

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170118

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180117

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20191224

Year of fee payment: 8