KR101936364B1 - 플래시 메모리를 이용한 메모리 관리 시스템 및 메모리 관리 방법 - Google Patents
플래시 메모리를 이용한 메모리 관리 시스템 및 메모리 관리 방법 Download PDFInfo
- Publication number
- KR101936364B1 KR101936364B1 KR1020170101150A KR20170101150A KR101936364B1 KR 101936364 B1 KR101936364 B1 KR 101936364B1 KR 1020170101150 A KR1020170101150 A KR 1020170101150A KR 20170101150 A KR20170101150 A KR 20170101150A KR 101936364 B1 KR101936364 B1 KR 101936364B1
- Authority
- KR
- South Korea
- Prior art keywords
- partition
- page
- logical
- physical page
- processor
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
플래시 메모리를 사용하는 전자 장치의 메모리 관리 시스템에 관한 것으로서, 메모리 관리 시스템은 플래시 메모리 접근을 위해 물리주소와 논리주소 간의 변환을 수행하는 프로그램을 일시적으로 저장하는 메모리; 및 상기 프로그램을 실행하는 프로세서를 포함하되, 상기 프로세서는, 타겟 논리페이지에 대한 접근 요청에 응답하여, 타겟 논리페이지에 대응하는 파티션을 결정하고, 맵핑 테이블 중에서 상기 파티션에 대응하는 테이블 정보를 독출하여 타겟 논리페이지에 대응하는 물리페이지의 주소를 산출하며, 플래시 메모리의 해당 물리페이지로 접근한다. 이때, 맵핑 테이블 접근 요청의 순서와 접근 요청된 논리페이지의 인덱스가 증가하는 순서에 따라 복수의 논리페이지를 하나의 파티션 단위로 관리하고, 각 파티션에 포함된 각 논리페이지와 상기 각 논리페이지에 대응하는 물리페이지의 오프셋(offset) 정보를 나타내는 비트맵(bitmap)을 포함한다.
Description
본 발명은 플래시 메모리를 이용한 메모리 관리 시스템 및 그 방법에 관한 것으로서, 보다 구체적으로, 순서 규칙을 갖는 논리 페이지들을 묶음 단위로 관리하는 맵핑 페이지를 이용하여 메모리를 관리하는 방법 및 그 메모리 관리 시스템에 관한 것이다.
최근 SSD(solid state drive)는 저지연성(low latency), 고대역폭(high bandwidth), 에너지 효율성 등의 장점으로 인해 휴대용 단말기나 노트북 시장을 선점하였다. SSD 시장은 지난 5년간 연평균 45.1%로 성장하였다. 특히, SSD에 주로 사용되는 낸드플래시(NAND Flash)는 기존의 하드디스크와 다른 특성을 가지고 있다. 첫째로, 낸드플래시는 덮어쓰기가 불가능하다. 따라서 유효하지 않은(invalid) 페이지에 데이터를 쓰기 위해서는 삭제 동작을 수행하여야 한다. 둘째로, 낸드플래시의 삭제 동작이 수행되는 단위 메모리 영역은 쓰기/읽기 동작이 수행되는 단위 메모리 영역과 상이하다. 낸드 플래시는 블록 단위로 삭제 동작을 수행하지만, 페이지 단위로 읽기/쓰기 동작을 수행한다.
한편, 호스트(host)에서 입력되는 입출력 명령은 낸드플래시(NAND Flash) 에서 수행 가능한 형태로 변환되어야 한다. 따라서, 플래시 변환 계층(Flash Translation Layer)은 논리주소와 물리주소를 맵핑 하는 맵핑 테이블을 관리하며, 메모리 공간이 부족해지면 프리 블록을 획득하는 가비지 컬렉션(Garbage Collection)등의 삭제 동작을 수행한다. 이러한 플래시 변환 계층의 알고리즘은 낸드플래시의 성능에 영향을 미치게 된다. 종래의 페이지 맵핑 기법은 맵핑 테이블을 페이지 단위로 유지하는 기술로서, 맵핑 테이블에 논리페이지별 물리페이지의 주소를 저장함으로써, 논리페이지에 해당하는 물리페이지를 바로 찾을 수 있도록한다. 따라서, 논리페이지별 맵핑 정보를 유지해야한다는 점에서, 논리페이지가 증가할수록 램의 사용량이 증가한다는 단점이 있다.
DFTL(Demand-based Flash Translation Layer) 기법은 앞서 설명한 페이지 맵핑 기법과 동일하게 페이지 단위로 맵핑 테이블을 관리한다. 그러나 DFTL 기법은 맵핑 테이블을 모두 램에 로딩(loading)하는 대신에 캐싱(caching)한다. 이로 인해, 주소 변환 시에 페이지 맵핑 기법과 동일한 결과를 발생시키면서, 램 사용량을 감소시킬 수 있다. 그러나 DFTL 기법은 랜덤 읽기/쓰기 동작을 수행하는 경우의 캐시 미스(cache miss)에 의해 오버헤드가 발생한다는 단점이 있다.
이와 관련하여, 대한민국 공개특허공보 제 2014-0116617 호(발명의 명칭: 플래시 메모리 기반의 페이지 주소 사상 방법 및 시스템)는 순차적으로 할당된 논리 주소와 물리 주소가 함께 순차적인 경우, 순차적인 논리 주소와 데이터 정보의 크기를 이용하여 맵핑 테이블의 크기를 감소시킴으로써, 읽기 연산의 횟수를 감소시키는 방법을 개시한다. 특히, 상기 특허는 순차적으로 증가하는 논리 주소와 물리 주소가 로딩되는 시스템 부팅 시의 성능을 향상시키는 효율을 갖는다.
본 발명은 전술한 종래 기술의 문제점을 해결하기 위한 것으로서, 본 발명의 일부 실시예는 복수의 논리페이지를 하나의 테이블 정보로 관리하는 맵핑 테이블을 제안함으로써 RAM 의 사용량을 감소시키는 한편, 복수의 논리페이지들이 순서 규칙을 갖도록 함으로써 맵핑 테이블의 분할/합병에 따른 오버헤드(overhead)를 감소시키는데에 그 목적이 있다. 다만, 본 실시예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제로 한정되지 않으며, 또 다른 기술적 과제들이 존재할 수 있다.
상술한 기술적 과제를 달성하기 위한 기술적 해결방법으로서, 본 발명의 제1 측면에 따른 메모리 관리 시스템은 플래시 메모리 접근을 위해 물리주소와 논리주소 간의 변환을 수행하는 프로그램을 일시적으로 저장하는 메모리; 및 상기 프로그램을 실행하는 프로세서를 포함하되, 상기 프로세서는, 타겟 논리페이지에 대한 접근 요청에 응답하여, 타겟 논리페이지에 대응하는 파티션을 결정하고, 맵핑 테이블 중에서 상기 파티션에 대응하는 테이블 정보를 독출하여 타겟 논리페이지에 대응하는 물리페이지의 주소를 산출하며, 플래시 메모리의 해당 물리페이지로 접근한다. 이때, 맵핑 테이블은 접근 요청의 순서와 접근 요청된 논리페이지의 인덱스가 증가하는 순서에 따라 복수의 논리페이지를 하나의 파티션 단위로 관리하고, 각 파티션에 포함된 각 논리페이지와 상기 각 논리페이지에 대응하는 물리페이지의 오프셋(offset) 정보를 나타내는 비트맵(bitmap)을 포함한다.
또한, 본 발명의 제 2 측면에 따른 메모리 관리 시스템의 동작 방법은, 논리페이지에 대한 접근 요청에 응답하여, 상기 타겟 논리페이지에 대응하는 제1 파티션을 결정하는 단계; 맵핑 테이블 중에서 제1 파티션에 대응하는 테이블 정보를 독출하여 타겟 논리페이지에 대응하는 물리페이지의 주소를 산출하는 단계; 및 플래시 메모리의 물리페이지로 접근하는 단계를 포함한다. 이때, 맵핑 테이블은, 접근 요청의 순서와 접근 요청된 논리페이지의 인덱스가 증가하는 순서에 따라 복수의 논리페이지를 하나의 파티션 단위로 관리하고, 각 파티션에 포함된 각 논리페이지와 각 논리페이지에 대응하는 물리페이지의 오프셋(offset) 정보를 나타내는 비트맵(bitmap)을 포함한다.
또한, 본 발명의 제 3 측면은, 상기 제 2 측면을 구현하기 위한 프로그램이 기록된 컴퓨터로 판독 가능한 기록 매체를 제공한다.
전술한 본 발명의 과제 해결 수단에 의하면, 인덱스가 증가하는 복수의 논리페이지들을 파티션 단위로 관리함으로써, 맵핑 테이블의 크기를 감소시킬 수 있다. 또한, 파티션에 포함된 논리페이지들과 각 논리페이지에 할당되는 물리페이지의 오프셋을 하나의 비트맵으로 나타냄으로써 논리주소와 물리주소간의 변환을 효율적으로 수행할 수 있다.
또한, 논리페이지들을 클러스터 단위로 구분하여 관리함으로써, 파티션 병합을 수행할 빅팀(victim) 파티션들을 효율적으로 선택할 수 있도록 하여 파티션 병합 효율을 증가시킬 수 있다.
도 1은 본 발명의 일 실시예에 따른 메모리 관리 시스템의 구성을 도시한 블록도이다.
도 2는 본 발명의 일 실시예에 따른 맵핑 테이블(mapping table)을 도시한 일례이다.
도 3은 본 발명의 일 실시예에 따라 도 1의 프로세서가 읽기 동작을 수행하는 방법을 설명하기 위한 순서도이다.
도 4는 본 발명의 일 실시예에 따른 맵핑 테이블의 일례를 도시한 도면이다.
도 5는 본 발명의 일 실시예에 따라 도 1의 프로세서가 쓰기 동작을 수행하는 방법을 설명하기 위한 순서도이다.
도 6은 본 발명의 일 실시예에 따른 맵핑 테이블과 그에 따른 스트림 테이블의 일례를 도시한 도면이다.
도 7은 본 발명의 일 실시예에 따른 파티션 병합 과정을 설명하기 위한 순서도이다.
도 8은 본 발명의 일 실시예에 따라 클러스터에 대응되는 파티션들의 일례를 도시한 도면이다.
도 9는 본 발명의 일 실시예에 따른 메모리 관리 시스템을 적용한 결과를 페이지 단위 메모리 관리 시스템과 비교한 표이다.
도 2는 본 발명의 일 실시예에 따른 맵핑 테이블(mapping table)을 도시한 일례이다.
도 3은 본 발명의 일 실시예에 따라 도 1의 프로세서가 읽기 동작을 수행하는 방법을 설명하기 위한 순서도이다.
도 4는 본 발명의 일 실시예에 따른 맵핑 테이블의 일례를 도시한 도면이다.
도 5는 본 발명의 일 실시예에 따라 도 1의 프로세서가 쓰기 동작을 수행하는 방법을 설명하기 위한 순서도이다.
도 6은 본 발명의 일 실시예에 따른 맵핑 테이블과 그에 따른 스트림 테이블의 일례를 도시한 도면이다.
도 7은 본 발명의 일 실시예에 따른 파티션 병합 과정을 설명하기 위한 순서도이다.
도 8은 본 발명의 일 실시예에 따라 클러스터에 대응되는 파티션들의 일례를 도시한 도면이다.
도 9는 본 발명의 일 실시예에 따른 메모리 관리 시스템을 적용한 결과를 페이지 단위 메모리 관리 시스템과 비교한 표이다.
아래에서는 첨부한 도면을 참조하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
이하, 첨부된 도면을 참조하여 본 발명의 일부 실시예에 따른 전자 장치의 메모리 관리 시스템에 대해서 설명하도록 한다.
도 1은 본 발명의 일 실시예에 따른 메모리 관리 시스템(10)의 구성을 도시한 블록도이다.
메모리 관리 시스템(10)은 전원이 공급되지 않아도 저장된 정보를 계속 유지하는 플래시 메모리(11), 저장된 정보를 유지하기 위하여 전력이 필요한 랜덤 엑세스 메모리(12) 및 프로세서(13)를 포함한다.
플래시 메모리(11)는 전기적으로 데이터를 지우고 다시 기록할 수 있는 비휘발성 기억 장치로서, 데이터를 읽고/쓸수 있도록 구성된다. 단, 플래시 메모리(11)는 데이터의 덮어쓰기(overwrite)를 허용하지 않으며, 기 설정된 사이즈로 데이터를 삭제(카비지 컬렉션(garbage collection))한 후에 재사용할 수 있다. 한편, 플래시 메모리(11)는 노어(NOR)플래시 메모리 또는 낸드(NAND)플래시 메모리를 포함한다. 낸드플래시 메모리는 페이지(page) 단위로 데이터를 읽기/쓰기를 할 수 있으며, 블록(block) 단위로 데이터를 삭제할 수 있다. 한편, 노어플래시 메모리는 바이트 단위로 데이터를 읽기/쓰기 할수 있으며, 블록 단위로 데이터를 삭제할 수 있다.
랜덤 엑세스 메모리(Random Access Memory: RAM)(12)는 프로세서(13)가 프로그램을 수행하기 위한 데이터를 일시적으로 로딩(loading)하는 데에 사용된다. 즉, 프로세서(13)는 플래시 메모리(11)에 저장된 데이터를 랜덤 엑세스 메모리(12)로 로딩하여 다양한 프로그램을 실행하거나, 실행된 데이터를 플래시 메모리(11)로 언로드할 수 있다. 한편, 랜덤 엑세스 메모리(12)의 저장 공간은 플래시 메모리(11)보다 작으므로, 프로세서(13)는 플래시 메모리(11)의 데이터를 선택적으로 페이징(paging)하여 로드한다. 이를 위해, 프로세서(13)는 플래시 메모리(11)의 데이터를 반복적으로 읽기, 쓰기 또는 삭제하기 위해 플래시 메모리(11)에 접근해야 한다.
한편, 프로세서(13)는 랜덤 엑세스 메모리(12)의 한정적 자원을 효율적으로 이용하기 위해, 논리주소(logical address, 또는 가상주소)를 사용한다. 따라서, 프로세서(13)는 플래시 메모리(11)의 데이터를 로딩하기 위해, 플래시 메모리(11)의 물리주소를 논리주소로 변환하거나 물리주소를 논리주소로 변환하여야 한다. 이를 위해, 프로세서(13)는 물리주소를 논리주소로(또는 그 역) 변환하기 위한 맵핑 테이블(mapping table)을 이용한다. 즉, 프로세서(13)는 플래시 메모리(11)에 대한 접근 요청(즉, 데이터 읽기, 쓰기 또는 삭제)에 응답하여, 맵핑 테이블을 이용하여 플래시 메모리(11)에 접근(즉, 데이터를 읽기, 쓰기 또는 삭제)할 수 있다. 이하에서는, 도 2 를 참조하여 본 발명의 일 실시예에 따른 맵핑 테이블을 설명하며, 도 3 내지 도 9를 참조하여 프로세서(13)가 플래시 메모리(11)에 접근하는 읽기, 쓰기 등의 동작을 설명한다.
한편, 이하에서는 플래시 메모리(11)가 낸드플래시 메모리인 것으로 가정하여 설명한다. 즉, 프로세서(13)는 페이지 단위로 물리주소를 논리주소로 변환(또는 논리주소를 물리주소로 변환)한다. 따라서, 이하의 설명에서 논리페이지를 물리페이지로 변환한다는 것은, 논리페이지의 시작 논리주소를 물리페이지의 시작 물리주소로 변환하는 것을 의미할 수 있다. 그러나, 개시되는 실시예들이 노어플래시 메모리에도 적용될 수 있다는 것은 본 기술분야의 통상의 기술자가 용이하게 이해할 수 있을 것이다.
도 2는 본 발명의 일 실시예에 따른 맵핑 테이블(mapping table)을 도시한 일례이다.
도 2를 참조하면, 프로세서(13)는 전자 장치의 전원이 온(on) 됨에 따라, 랜덤 엑세스 메모리(12)에 맵핑 테이블(200)을 할당한다. 맵핑 테이블(200)은 접근 요청의 순서와 상기 접근 요청된 논리페이지의 인덱스(index)가 증가하는 순서에 따라 복수의 논리페이지를 하나의 파티션(partition) 단위로 관리한다. 예컨대, 맵핑 테이블(200)은 논리페이지 [#1, #4, #5, #3] 에 대한 쓰기 요청에 순차적으로 응답하여, 인덱스 순서가 증가하는 논리페이지 [#1, #4, #5]을 하나의 파티션으로 관리하며, 순서가 감소한 논리페이지 [#3]을 다른 파티션으로 관리한다.
또한, 맵핑 테이블(200)은 각 파티션에 포함된 각 논리페이지와 각 논리페이지에 대응하는 물리페이지의 오프셋(offset) 정보를 나타내는 비트맵(210)을 포함한다. 또한, 맵핑 테이블(200)은 각 파티션에 대응하는 클러스터의 식별자(예컨대, 인덱스)(cluster #)(240)와, 각 파티션의 시작 블록(Block #)(230) 및 시작 물리페이지(start physicalpage #: Start PPN)(220)를 더 포함한다. 여기서, 클러스터(240)는 논리페이지를 구분하는 단위로서, 일정 개수의 논리페이지를 하나의 클러스터로 구분한다.
구체적으로, 비트맵(210)의 '1' 비트의 위치는 논리페이지의 오프셋 정보를 나타내며, 비트맵(210)의 '1' 비트의 개수는 물리페이지의 오프셋 정보를 나타낸다. 예를 들어, 파티션에 맵핑된 논리페이지가 [#1, #3, #5]이라면, 비트맵은 '010101'로 표현될 수 있다. 즉, 파티션이 나타내는 논리페이지들은 "(파티션의 클러스터)*(클러스터 별 논리페이지 수)+(비트맵의 위치)"로 산출된다. 또한, 비트맵에서 각 논리페이지를 나타내는 비트의 이전에 위치하는 '1'비트의 개수는 각 논리페이지에 해당하는 물리페이지의 오프셋을 나타낸다. 즉, 논리페이지 #3을 나타내는 비트의 이전에 위치하는 '1'비트의 개수는 1이므로, 논리페이지 #3에 대응하는 물리페이지는 "(파티션의 시작 블록)*(블록 별 물리페이지 개수)+(시작 물리페이지)+1"로 산출된다. 또한, 논리페이지 #5를 나타내는 비트의 이전에 위치하는 '1' 비트의 개수는 2이므로, 논리페이지 #5 에 대응하는 물리페이지는 "(파티션의 시작 블록)*(블록 별 물리페이지 수)+(시작 물리페이지)+2"로 산출된다.
이와 같이, 본 발명의 일 실시예에 따른 맵핑 테이블은 비트맵 정보를 이용하여 효율적으로 논리페이지와 물리페이지를 변환할 수 있다. 한편, 맵핑 테이블(200)은 전술한 정보 이외에, 파티션의 유효한 페이지 수(VALID CNT)를 더 포함할 수 있다. 또한, 맵핑 테이블(200)은 유효성 정보를 더 포함할 수 있다. 이때, 유효성 정보는 파티션에 포함되는 논리페이지의 유효성을 나타내며, 해당 파티션의 페이지들이 쓰여지지 않음, 유효함, 유효하지 않음을 나타낼 수 있다. 또한, 맵핑 테이블(200)은 시작 논리페이지의 인덱스를 더 포함할 수도 있으나, 이에 제한되는 것은 아니다.
한편, 본 발명의 일 실시예에 따른 맵핑 테이블은 비트맵을 클러스터와 얼라인(align)할 수 있다. 즉, 프로세서(13)는 비트맵의 크기를 클러스터에 포함된 논리페이지의 개수로 제한하고, 비트맵의 첫 비트가 나타내는 논리페이지와 클러스터의 첫 논리페이지를 일치시킴으로써, 추후의 파티션 병합 및 블록 삭제 시의 오버헤드(overhead)를 감소시킬 수 있다.
도 3은 본 발명의 일 실시예에 따라 프로세서(13)가 읽기 동작을 수행하는 방법을 설명하기 위한 순서도이다.
도 3을 참조하면, 프로세서(13)는 읽기 요청된 타겟 논리페이지가 포함된 클러스터를 기초로 타겟 논리페이지에 대응하는 파티션을 추출한다(S310). 예를 들어, 프로세서(13)는 맵핑 테이블의 클러스터 필드(도 2의 240)를 탐색하여, 타겟 논리페이지가 포함된 클러스터를 갖는 파티션을 추출한다. 한편, 프로세서(13)는 파티션 인덱스가 큰 순으로 추출한다. 이는, 프로세서(13)가 인덱스를 점차적으로 증가하여 파티션을 할당하므로, 인덱스가 클수록 유효한 데이터를 갖고 있을 확률이 높기 때문일 수 있다.
이후, 프로세서(13)는 추출된 파티션의 비트맵과 타겟 논리페이지의 오프셋을 이용하여, 타겟 논리페이지에 기 맵핑된 물리페이지가 존재하는지 여부를 판단한다(S320). 즉, 프로세서(13)는 추출된 파이션의 비트맵에서 "(논리페이지)%(클러스터 별 논리페이지 수)"에 위치하는 비트가 '1'인지 여부를 기초로 타겟 논리페이지에 기 맵핑된 물리페이지가 존재하는지 판단한다. 이와 함께, 프로세서(13)는 맵핑 테이블의 유효 페이지 수 필드(도 2의 VALID PAGE #) 또는 유효성 필드를 참조하여 추출된 파티션이 유효한 페이지를 포함하고 있는지 여부를 판단할 수 있다.
타겟 논리페이지에 기 맵핑된 물리페이지가 존재하면, 프로세서(13)는 추출된 파티션의 비트맵 필드, 시작 블록 필드 및 시작 물리페이지 필드를 이용하여 물리페이지의 주소를 산출한다(S330). 즉, 프로세서(13)는 비트맵에서 타겟 논리페이지의 오프셋에 대응하여 독출된 비트의 앞 비트를 독출하여 물리페이지의 오프셋을 산출하고, 파티션의 시작 물리페이지와 산출된 물리페이지의 오프셋의 합을 기초로 파티션의 시작 블록에 접근한다.
도 4를 참조하여 설명하면, 프로세서(13)는 논리페이지 #4에 대한 읽기 요청에 응답하여, 논리페이지 #4가 속하는 클러스터 #1에 대응하는 파티션을 탐색한다. 이때, 프로세서(13)는 인덱스가 높은 순으로 탐색하여 파티션 #2를 추출한다. 파티션 #2의 비트맵 '1001'에서 논리페이지 #4의 오프셋(즉, 0)에 해당하는 비트(즉, 첫 번째 비트)가 '1'이므로, 프로세서(13)는 논리페이지 #4에 기 맵핑된 물리페이지가 존재하는 것으로 판단한다. 이어서, 프로세서(13)는 논리페이지 #4에 대응하는 물리페이지의 오프셋(즉, 0)과 시작 물리페이지(즉, #2)의 합(즉, #2)을 기초로, 시작 블록(즉, 블록 #0)의 두 번째 물리페이지에 저장된 데이터를 독출할 수 있다.
한편, 전술한 단계 S320에서 타겟 논리페이지에 기 맵핑된 물리페이지 존재하지 않는다면, 프로세서(13)는 다른 파티션을 탐색한다. 이때, 프로세서(13)는 인덱스가 큰 파티션부터 탐색하므로, 탐색된 파티션의 인덱스는 전술한 단계 S310에서 탐색된 파티션의 인덱스보다 낮을 수 있다.
도 4를 참조하여 설명하면, 프로세서(13)는 논리페이지 #5 에 대한 읽기 요청에 응답하여, 논리페이지 #5가 속하는 클러스터 #1에 대응하는 파티션 #2을 추출한다. 그러나, 파티션 #2의 비트맵 '1001'에는 논리페이지 #5의 오프셋(즉, 1)에 해당하는 비트(즉, 두 번째 비트)가 '0'이므로, 프로세서(13)는 논리페이지 #2에 기 맵핑된 물리페이지가 존재하지 않는 것으로 판단한다. 이후, 프로세서(13)는 클러스터 #1에 대응하는 파티션 #1을 탐색한다. 파티션 #1의 비트맵 '0100'에는 논리페이지 #5의 오프셋(즉, 1)에 해당하는 비트가 '1'이므로, 프로세서(13)는 논리페이지 #5에 기 맵핑된 물리페이지가 존재하는 것으로 판단한다.
다시 도 3을 참조하면, 프로세서(13)는 타겟 논리페이지에 맵핑된 물리페이지를 이용하여 플래시 메모리(11)에 접근하여, 해당 물리페이지에 저장된 데이터를 독출할 수 있다(S340).
도 5는 본 발명의 일 실시예에 따라 프로세서(13)가 쓰기 동작을 수행하는 방법을 설명하기 위한 순서도이다. 전술한 바와 같이, 플래시 메모리(11)는 덮어쓰기를 허용하지 않으므로, 프로세서(13)는 논리페이지에 기 맵핑된 물리페이지가 존재하는 경우, 새로운 물리페이지를 할당해야 한다. 이하에서, 상세히 설명한다.
먼저, 프로세서(13)는 쓰기 요청된 논리페이지가 포함된 클러스터를 기초로 타겟 논리페이지 대응하는 파티션을 추출한다(S510). 이어서, 프로세서(13)는 추출된 파티션의 비트맵과 타겟 논리페이지의 오프셋을 이용하여, 타겟 논리페이지에 기 맵핑된 물리페이지가 존재하는지 여부를 판단한다(S520). 만약, 단계 S520 에서 타겟 논리페이지에 대응하는 파티션이 추출되지 않는다면, 프로세서(13)는 다음의 S530을 수행하지 않고, S540을 바로 수행한다.
단계 S520에서 타겟 논리페이지에 기 맵핑된 물리페이지가 존재하면, 프로세서(13)는 추출된 파티션의 비트맵과 타겟 논리페이지의 오프셋을 이용하여, 타겟 논리페이지에 기 맵핑된 물리페이지의 주소를 산출한다(S530). 한편, 전술한 단계 S510 내지 S530에서의 프로세서(13)의 동작 방법은 각각 도 3의 단계 S310 내지 S330 과 동일 또는 유사하므로, 자세한 설명은 생략한다.
이후, 프로세서(13)는 타겟 논리페이지의 데이터를 저장하기 위해 할당 상태의 파티션을 탐색한다(S540). 이때, 프로세서(13)는 스트림 테이블(stream table)을 기초로 파티션을 탐색한다. 여기서, 스트림 테이블(stream table)은 비할당 상태의 페이지를 포함하는 할당 상태의 파티션들에 대한 정보로서, 해당 파티션들의 식별자(예컨대, 인덱스), 파티션에 마지막으로 기입된 논리페이지 및 마지막으로 할당된 물리페이지에 대한 정보를 포함할 수 있다. 프로세서(13)는 스트림 테이블에 기초하여, 마지막으로 기입된 논리페이지의 인덱스가 타겟 논리페이지의 인덱스보다 작은 파티션을 탐색한다.
도 6은 본 발명의 일 실시예에 따른 맵핑 테이블과 그에 따른 스트림 테이블의 일례를 도시한 도면이다. 도 6을 참조하여 프로세서(13)가 논리페이지 #3에 대해 쓰기 동작을 수행하는 일례를 설명한다. 먼저, 맵핑 테이블(601)의 파티션 #1이 논리페이지 #3에 대한 정보를 포함하므로, 논리페이지 #3은 기 맵핑된 물리페이지(즉, 물리페이지 #6)를 갖는다. 따라서, 프로세서(13)는 스트림 테이블(602)의 마지막으로 기입된 논리페이지(610) 중에서 #3보다 작은 논리페이지를 갖는 파티션을 탐색한다. 이 경우에도, 프로세서(13)는 스트림 테이블(602)의 인덱스가 큰 것부터 먼저 탐색할 수 있다. 따라서, 프로세서(13)는 파티션 #3을 새로운 파티션으로 결정할 수 있다.
다시 도 5를 참조하면, 프로세서(13)는 탐색된 새로운 파티션에 마지막으로 할당된 물리페이지의 다음 페이지에 타겟 논리페이지의 데이터를 저장할 수 있다(S550). 다시 도 6을 참조하여 예를 들면, 프로세서(13)는 스트림 테이블(602)의 각 파티션에 마지막으로 할당된 물리페이지(즉, 물리페이지 #9)의 연속하는 물리페이지(즉, 물리페이지 #10)에, 타겟 논리페이지의 데이터를 저장할 수 있다. 이후, 프로세서(13)는 타겟 논리페이지와 이에 할당된 물리페이지에 대응되도록 맵핑 테이블 및 스트림 테이블을 갱신할 수 있다(S560). 다시 도 6을 참조하여 예를 들면, 논리페이지 #3에 기 맵핑되어 있었던 파티션 #1의 유효 페이지 수(VALID)를 (2-1)로 조정하며, 논리페이지 #3이 새롭게 맵핑되는 파티션 #3의 비트맵을 '0111'로 조정하고, 파티션 #3의 유효 페이지 수(VALID)르 ㄹ3으로 조정한다.
그러나, 전술한 단계 S530에서 새로운 파티션이 탐색되지 않으면, 프로세서(13)는 새로운 파티션을 할당한다(S570). 한편, 파티션의 최대 사용가능 개수는 제한될 수 있다. 이에 따라, 기 할당된 파티션의 개수가 최대 사용가능한 파티션의 개수이면, 프로세서(13)는 파티션 병합을 수행한다(S580). 이에 대해서는, 도 7을 참조하여 상세히 설명한다.
한편, 파티션은 탐색 또는 할당되었으나, 플래시 메모리(11)의 저장 공간이 부족한 경우(예컨대, 마지막 페이지까지 할당된 경우), 프로세서(13)는 삭제 동작(즉, 가비지 콜렉션)을 수행한다(S590). 이 경우, 프로세서(13)는 삭제할 빅팀(victim) 블록 내의 유효 페이지들의 순서를 정렬하여 복사 작업을 수행할 수 있다. 한편, 프로세서(13)는 유효 페이지의 수가 가장 적은 블록을 빅팀 블록으로 결정할 수 있으나, 이에 제한되는 것은 아니다.
도 7은 본 발명의 일 실시예에 따른 파티션 병합 과정을 설명하기 위한 순서도이다. 파티션의 최대사용 개수가 제한되어 있는 경우, 프로세서(13)는 파티션을 병합할 수 있다.
이를 위해, 프로세서(13)는 파티션 병합에 이용될 빅팀(victim) 파티션들을 결정한다 (S710). 예를 들어, 프로세서(13)는 클러스터 단위로 각 클러스터에 대응되는 파티션들을 그룹핑(grouping)하고, 그룹핑된 파티션들의 유효 페이지 수를 비교하여 빅팀 파티션 그룹을 선택할 수 있다. 이때, 빅팀 파티션 그룹에 포함된 파티션의 수가 "(클러스터에 포함된 논리페이지 수/파티션의 비트맵 크기 + 2)" 이상이면, 적어도 하나 이상의 비할당 상태의 파티션을 획득할 수 있다. 따라서, 프로세서(13)는 파티션 그룹에 포함된 파티션의 수가 "(클러스터에 포함된 논리페이지 수/파티션의 비트맵 크기 + 2)" 이상인 경우에만 유효 페이지 수를 비교할 수 있다.
한편, 클러스터에 파티션이 대응된다는 것은, 파티션의 시작 논리페이지의 인덱스가 해당 클러스터에 속하는 것을 의미할 수 있다. 도 8에 도시된 바와 같이, 파티션 #0의 시작 논리페이지가 논리페이지 #0이고, 파티션 #1의 시작 논리페이지가 논리페이지 #3이며, 파티션 #2의 시작 논리페이지가 논리페이지 #2이면, 파티션 [#0, #1, #2]는 클러스터 #0에 대응된다.
이후, 프로세서(13)는 빅팀 파티션들의 유효 페이지들을 순서대로 정렬하여 복사한다(S720). 즉, 프로세서(13)는 가장 낮은 인덱스의 논리페이지부터 순서대로 읽기 동작을 수행하고, 가장 낮은 인덱스의 빅팀 파티션을 이용하여 할당된 물리페이지로 쓰기 동작을 수행할 수 있다. 다시 도 8을 참조하여 설명하면, 프로세서(13)는 전술한 과정을 통해 파티션 [#0, #1, #2]을 하나 또는 두 개의 파티션으로 병합함으로써, 하나 또는 두 개의 비할당 상태의 파티션을 획득할 수 있다.
한편, 프로세서(13)는 파티션 병합 동작이 유효 물리페이지의 복사 동작(즉, 읽기 및 쓰기 동작)을 포함하므로, 플래시 메모리(11)에 대한 삭제 동작을 함께 수행할 수 있다. 따라서, 프로세서(13)는 삭제 동작 시에서와 동일한 방법으로 빅팀 파티션들을 결정할 수 있다. 그러나, 이에 제한되는 것은 아니며, 프로세서(13)는 밀집도가 높은 파티션들을 빅팀 파티션들로 결정할 수 있다.
이와 같이, 본 발명의 일 실시예에 따른 메모리 관리 시스템(10)은 복수의 페이지 단위로 맵핑 테이블을 관리함으로써, 종래의 페이지 단위 메모리 관리 시스템에 비해 약 8 배의 메모리 저장 공간 사용 효율을 발생시킬 수 있다. 도 9는 본 발명의 일 실시예에 따른 메모리 관리 시스템(10)을 적용한 결과를 페이지 단위 메모리 관리 시스템과 비교한 표이다. 도 9의 표에서 "# of PARTITION(배)"은 순서가 증가하게 쓰기 동작을 수행하는 경우를 가정하였을 때의 플래시 메모리(11)의 저장 공간을 커버하는 파티션 개수의 몇 배인지를 의미한다. 예를 들어, 64 GB의 저장 공간에서 파티션의 사이즈가 512KB 인 경우, 128K의 파티션이 있어야 전체 저장 공간을 파티션 병합 없이 사용할 수 있다. 이 경우, "# of PARTITION(배)"이 2 라면, 파티션이 256KB 로 할당됨을 나타낸다.
이상에서 설명한 본 발명의 일 실시예에 따른 메모리 관리 시스템을 갖는 전자 장치 및 메모리 관리 방법은, 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터에 의해 실행 가능한 명령어를 포함하는 기록매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터 판독 가능매체는 컴퓨터 저장 매체를 포함할 수 있다. 컴퓨터 저장매체는 컴퓨터 판독 가능 명령어, 데이터구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다.
본 발명의 시스템 및 방법은 특정 실시예와 관련하여 설명되었지만, 그것들의 구성 요소 또는 동작의 일부 또는 전부는 범용 하드웨어 아키텍처를 갖는 컴퓨터 시스템을 사용하여 구현될 수 있다.
전술한 본 발명의 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
10: 메모리 관리 시스템
11: 플래시 메모리
12: 랜덤 엑세스 메모리
13: 프로세서
200, 601: 맵핑 테이블
602: 스트림 테이블
11: 플래시 메모리
12: 랜덤 엑세스 메모리
13: 프로세서
200, 601: 맵핑 테이블
602: 스트림 테이블
Claims (15)
- 플래시 메모리를 사용하는 전자 장치에 있어서,
상기 플래시 메모리 접근을 위해 물리주소와 논리주소 간의 변환을 수행하는 프로그램을 일시적으로 저장하는 메모리; 및
상기 프로그램을 실행하는 프로세서를 포함하되,
상기 프로세서는, 상기 프로그램이 실행됨에 따라,
제1 논리페이지에 대한 접근 요청에 응답하여, 상기 제1 논리페이지에 대응하는 제1 파티션을 결정하고, 맵핑 테이블 중에서 상기 제1 파티션에 대응하는 테이블 정보를 독출하여 상기 제1 논리페이지에 대응하는 제1 물리페이지의 주소를 산출하며, 상기 플래시 메모리의 상기 제1 물리페이지로 접근하되,
상기 맵핑 테이블은,
접근 요청의 순서와 상기 접근 요청된 논리페이지의 인덱스가 증가하는 순서에 따라 복수의 논리페이지를 하나의 파티션 단위로 관리하고, 각 파티션에 포함된 각 논리페이지와 상기 각 논리페이지에 대응하는 물리페이지의 오프셋(offset) 정보를 나타내는 비트맵(bitmap)을 포함하는 것인 전자 장치. - 제 1 항에 있어서,
상기 맵핑 테이블은
상기 각 파티션에 대응하는 클러스터(cluster) 정보와 상기 각 파티션에 대응하는 시작 블록 정보 및 시작 물리페이지 정보를 포함하는 것인 전자 장치. - 제 2 항에 있어서,
상기 비트맵에 포함된 '1'비트의 위치는 상기 각 논리페이지의 오프셋 정보를 나타내며, 상기 비트맵에 포함된 '1'비트의 개수는 각 물리페이지의 오프셋 정보를 나타내는 것인 전자 장치. - 제 3 항에 있어서,
상기 프로세서는
상기 제1 논리페이지가 포함된 클러스터(cluster)를 기초로 상기 제1 파티션을 추출하고, 상기 제1 파티션의 비트맵과 상기 제1 논리페이지의 오프셋을 이용하여, 상기 제1 논리페이지에 기 맵핑된 물리페이지가 존재하는지 여부를 판단하는 것인 전자 장치. - 제 3 항에 있어서,
상기 접근 요청이 읽기 요청인 경우,
상기 프로세서는
상기 제1 논리페이지에 기 맵핑된 물리페이지가 존재하는 경우, 상기 제1 파티션의 비트맵, 상기 시작 블록 및 시작 물리페이지를 이용하여 상기 제1 물리페이지의 주소를 산출하고, 상기 제1 논리페이지에 기 맵핑된 물리페이지가 존재하지 않는 경우, 상기 클러스터에 대응되는 제2 파티션을 추출하되,
상기 제2 파티션의 인덱스는 상기 제1 파티션의 인덱스보다 작은 것인 전자 장치. - 제 5 항에 있어서,
상기 프로세서는
상기 제1 파티션의 비트맵에서, 상기 제1 논리페이지의 오프셋에 대응하여 독출된 비트의 앞 비트들을 독출하여 상기 제1 물리페이지의 오프셋을 산출하고, 상기 제1 파티션의 시작 물리페이지와 상기 오프셋의 합을 기초로 상기 제1 파티션의 시작 블록에 접근하는 것인 전자 장치. - 제 3 항에 있어서,
상기 접근 요청이 쓰기 동작인 경우,
상기 프로세서는
상기 제1 논리페이지에 기 맵핑된 물리페이지가 존재하는 경우, 상기 제1 파티션의 비트맵, 상기 시작 블록 및 시작 물리페이지를 이용하여 상기 제1 물리페이지의 주소를 산출하고, 할당 상태의 제3 파티션을 탐색하되,
상기 제3 파티션은 마지막에 기입된 제2 논리페이지의 인덱스가 상기 제1 논리페이지의 인덱스보다 작은 것인 전자 장치. - 제 7 항에 있어서,
상기 프로세서는
스트림 테이블을 기초로 상기 할당 상태의 제3 파티션을 탐색하되,
상기 스트림 테이블은
비할당 상태의 페이지를 포함하는 할당 상태의 파티션들 각각에 대해, 각 파티션의 식별자, 상기 각 파티션에 마지막으로 기입된 논리페이지 및 마지막으로 할당된 물리페이지에 대한 정보를 포함하는 것인 전자 장치. - 제 8 항에 있어서,
상기 프로세서는
상기 스트림 테이블을 기초로 상기 제3 파티션이 탐색되지 않으며, 기 할당된 파티션의 개수가 최대 사용가능한 파티션의 개수이면, 기 할당된 파티션들을 병합하는 것인 전자 장치. - 제 9 항에 있어서,
상기 프로세서는
각 클러스터에 속하는 시작 논리페이지를 갖는 파티션들을 그룹핑하고, 그룹핑된 파티션들의 유효 페이지 수를 기초로 빅팀 파티션 그룹을 결정하되,
상기 빅팀 파티션 그룹에 포함된 파티션의 수는 (클러스터에 포함된 페이지 수/파티션의 비트맵 크기 +2) 이상인 것인 전자 장치. - 플래시 메모리를 이용하는 전자 장치의 메모리 관리 방법에 있어서,
타겟 논리페이지에 대한 접근 요청에 응답하여, 상기 타겟 논리페이지에 대응하는 제1 파티션을 결정하는 단계;
맵핑 테이블 중에서 상기 제1 파티션에 대응하는 테이블 정보를 독출하여 상기 타겟 논리페이지에 대응하는 물리페이지의 주소를 산출하는 단계; 및
상기 플래시 메모리의 상기 물리페이지로 접근하는 단계를 포함하되,
상기 맵핑 테이블은,
접근 요청의 순서와 상기 접근 요청된 논리페이지의 인덱스가 증가하는 순서에 따라 복수의 논리페이지를 하나의 파티션 단위로 관리하고, 각 파티션에 포함된 각 논리페이지와 상기 각 논리페이지에 대응하는 물리페이지의 오프셋(offset) 정보를 나타내는 비트맵(bitmap)을 포함하는 것인 메모리 관리 방법. - 제 11 항에 있어서,
상기 맵핑 테이블은
상기 각 파티션에 대응하는 클러스터(cluster) 정보와 상기 각 파티션에 대응하는 시작 블록 정보 및 시작 물리페이지 정보를 포함하는 것인 메모리 관리 방법. - 제 12 항에 있어서,
상기 비트맵에 포함된 '1'비트의 위치는 상기 각 논리페이지의 오프셋 정보를 나타내며, 상기 비트맵에 포함된 '1'비트의 개수는 각 물리페이지의 오프셋 정보를 나타내는 것인 메모리 관리 방법. - 제 13 항에 있어서,
상기 제1 파티션을 결정하는 단계는
상기 타겟 논리페이지가 포함된 클러스터(cluster)를 기초로 상기 제1 파티션을 추출하는 단계; 및
상기 제1 파티션의 비트맵과 상기 타겟 논리페이지의 오프셋을 이용하여, 상기 타겟 논리페이지에 기 맵핑된 물리페이지가 존재하는지 여부를 판단하는 단계를 포함하며,
상기 타겟 논리페이지에 대응하는 물리페이지의 주소를 산출하는 단계는
상기 제1 파티션의 비트맵, 상기 시작 블록 및 시작 물리페이지를 이용하여 상기 물리페이지의 주소를 산출하는 것인 메모리 관리 방법. - 제 11 항 내지 제 14 항 중 어느 한 항의 방법을 구현하기 위한 프로그램이 기록된 컴퓨터로 판독 가능한 기록 매체.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170101150A KR101936364B1 (ko) | 2017-08-09 | 2017-08-09 | 플래시 메모리를 이용한 메모리 관리 시스템 및 메모리 관리 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170101150A KR101936364B1 (ko) | 2017-08-09 | 2017-08-09 | 플래시 메모리를 이용한 메모리 관리 시스템 및 메모리 관리 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR101936364B1 true KR101936364B1 (ko) | 2019-01-08 |
Family
ID=65021074
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170101150A KR101936364B1 (ko) | 2017-08-09 | 2017-08-09 | 플래시 메모리를 이용한 메모리 관리 시스템 및 메모리 관리 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101936364B1 (ko) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210027625A (ko) * | 2019-08-29 | 2021-03-11 | 동국대학교 산학협력단 | 데이터 저장장치의 주소 맵핑 테이블 운용 방법 |
CN113626347A (zh) * | 2021-07-29 | 2021-11-09 | 武汉新芯集成电路制造有限公司 | 存储装置及其工作方法 |
US11561712B2 (en) | 2020-10-20 | 2023-01-24 | SK Hynix Inc. | Storage device and method of operating the same |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101626218B1 (ko) | 2014-11-21 | 2016-06-13 | 한양대학교 산학협력단 | 블록 기반의 페이지 매핑 방법 |
-
2017
- 2017-08-09 KR KR1020170101150A patent/KR101936364B1/ko active IP Right Grant
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101626218B1 (ko) | 2014-11-21 | 2016-06-13 | 한양대학교 산학협력단 | 블록 기반의 페이지 매핑 방법 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210027625A (ko) * | 2019-08-29 | 2021-03-11 | 동국대학교 산학협력단 | 데이터 저장장치의 주소 맵핑 테이블 운용 방법 |
KR102316271B1 (ko) | 2019-08-29 | 2021-10-22 | 동국대학교 산학협력단 | 데이터 저장장치의 주소 맵핑 테이블 운용 방법 |
US11561712B2 (en) | 2020-10-20 | 2023-01-24 | SK Hynix Inc. | Storage device and method of operating the same |
CN113626347A (zh) * | 2021-07-29 | 2021-11-09 | 武汉新芯集成电路制造有限公司 | 存储装置及其工作方法 |
CN113626347B (zh) * | 2021-07-29 | 2023-12-15 | 武汉新芯集成电路制造有限公司 | 存储装置及其工作方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9471500B2 (en) | Bucketized multi-index low-memory data structures | |
US10176113B2 (en) | Scalable indexing | |
JP6205650B2 (ja) | 不均等アクセス・メモリにレコードを配置するために不均等ハッシュ機能を利用する方法および装置 | |
KR101289931B1 (ko) | 다양한 블록 크기를 지원하는 주소 사상을 사용하여 플래시 메모리 내에 데이터를 저장하는 방법 및 장치 | |
US10445022B1 (en) | Optimization of log-structured merge (LSM) tree-based databases using object solid state drive (SSD) devices | |
US20140304453A1 (en) | Effective Caching for Demand-based Flash Translation Layers in Large-Scale Flash Memory Storage Systems | |
JP2019020788A (ja) | メモリシステムおよび制御方法 | |
US10936203B2 (en) | Memory storage device and system employing nonvolatile read/write buffers | |
US20150324281A1 (en) | System and method of implementing an object storage device on a computer main memory system | |
US20200225882A1 (en) | System and method for compaction-less key-value store for improving storage capacity, write amplification, and i/o performance | |
KR101936364B1 (ko) | 플래시 메모리를 이용한 메모리 관리 시스템 및 메모리 관리 방법 | |
KR101017067B1 (ko) | 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션기법 | |
US11630779B2 (en) | Hybrid storage device with three-level memory mapping | |
CN110968269A (zh) | 基于scm与ssd的键值存储***及读写请求处理方法 | |
JP2018181202A (ja) | ストレージ制御装置、ストレージ制御方法及びストレージ制御プログラム | |
CN113253926A (zh) | 提升新型存储器的查询和存储性能的存储内索引构建方法 | |
US20140359228A1 (en) | Cache allocation in a computerized system | |
CN110968520B (zh) | 基于统一缓存架构的多流存储设备 | |
KR20120039166A (ko) | 데이터 페이지들에 대해 무효화 기회를 부여하는 방법 및 이를 위한 낸드 플래시 메모리 시스템 | |
KR101847859B1 (ko) | 파일 트림을 이용한 플래시 메모리 기반 저장장치 및 그 파일 트림 방법 | |
KR100999111B1 (ko) | 플래시 변환 계층 구조를 갖는 장치와 이를 이용한 선 반입 방법 및 플래시 변환 구조를 기반으로 한 비동기 쓰기 방법 | |
KR101270777B1 (ko) | 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록시스템 및 방법 | |
CN117891415B (zh) | 一种存储装置的p2l数据管理方法及装置 | |
Kumar et al. | A survey on flash translation layer for NAND flash memory | |
Park et al. | Offline deduplication for solid state disk using a lightweight hash algorithm |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |