KR20100079654A - 실시간 시스템을 위한 로그 블록 연관성 분산 방법 및 이를수행하는 플래시 메모리 장치 - Google Patents

실시간 시스템을 위한 로그 블록 연관성 분산 방법 및 이를수행하는 플래시 메모리 장치 Download PDF

Info

Publication number
KR20100079654A
KR20100079654A KR1020080138191A KR20080138191A KR20100079654A KR 20100079654 A KR20100079654 A KR 20100079654A KR 1020080138191 A KR1020080138191 A KR 1020080138191A KR 20080138191 A KR20080138191 A KR 20080138191A KR 20100079654 A KR20100079654 A KR 20100079654A
Authority
KR
South Korea
Prior art keywords
block
log
log block
data
blocks
Prior art date
Application number
KR1020080138191A
Other languages
English (en)
Other versions
KR101028929B1 (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 KR1020080138191A priority Critical patent/KR101028929B1/ko
Priority to US12/356,306 priority patent/US8261010B2/en
Publication of KR20100079654A publication Critical patent/KR20100079654A/ko
Application granted granted Critical
Publication of KR101028929B1 publication Critical patent/KR101028929B1/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/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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into 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/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/7202Allocation control and policies
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

로그 버퍼 기반 플래시 변환 계층(FTL)에서 수행되는 로그 블록(log block) 연관성 분산 방법은 로그 블록에 대해 페이지 p의 기록(write) 요청이 발생한 경우 상기 데이터 블록들과 상기 로그 블록-여기서, 상기 복수의 로그 블록들 중 각각의 로그 블록의 데이터 블록에 대한 연관성은 소정값 K 이하로 미리 설정되고, 상기 K는 자연수임-들간의 매핑 관계를 가지는 로그 블록 매핑 테이블을 확인하여 상기 기록 요청이 발생한 해당 데이터 블록과 연관된 로그 블록이 존재하는지 확인하는 단계와, 상기 판단 결과 상기 기록 요청이 발생한 해당 데이터 블록과 연관된 로그 블록이 존재하면 상기 연관된 로그 블록이 랜덤 로그 블록인지 순차 로그 블록인지 확인하는 단계와, 상기 연관된 로그 블록이 랜덤 로그 블록인 경우 상기 랜덤 로그 블록의 마지막 빈 페이지(free page)에 상기 기록 요청이 발생한 데이터를 기록하는 단계를 포함한다. 로그 블록의 연관성을 분산시키고 로그 블록의 연관성 K 값을 미리 소정값 이하로 설정하여 제한함으로써 단일 병합 연산 시 소요되는 시간의 최대값을 예측할 수 있으며, 특히 최악의 경우(worst case) 병합 비용의 최대값을 예측할 수 있으므로 실시간 시스템에 적용시 안정적인 성능을 제공할 수 있다.
플래시 메모리, 로그 블록, 연관성, 플래시 변환 계층, 매핑, 병합

Description

실시간 시스템을 위한 로그 블록 연관성 분산 방법 및 이를 수행하는 플래시 메모리 장치{Methods of Distributing Log Block Associativity in Real-time System And Flash Memory Device Performing the Same}
본 발명은 플래시 메모리에 관한 것으로서, 구체적으로는 플래시 메모리의 로그 블록 연관성 분산 방법 및 이를 수행하는 플래시 메모리 장치에 관한 것이다.
플래시 메모리는 비휘발성 메모리로서 크게 기존의 랜덤 메모리의 특성을 많이 가지고 있는 노어형 플래시(NOR Flash)와 하드디스크등과 같은 스토리지 매체의 특성과 유사한 낸드형 플래시(NAND Flash)로 분류된다.
낸드 플래시 메모리의 내부 구조는 도 1에 도시된 바와 같이 복수의 블록(Block)으로 구성되며, 각 블록은 복수의 페이지로 이루어져 있다. 예를 들어, 하나의 블록은 64 또는 128개의 페이지로 구성될 수 있다.
낸드 플래시 메모리는 읽기(Read) 및 쓰기(Write) 연산은 페이지(page) 단위로 수행하며 지우기(Erase) 연산은 블록(Block) 단위로 수행한다. 예를 들어 읽기연산은 약 25us, 쓰기 연산은 약 250us, 지우기 연산은 2,000us 정도로 각 연산의 속도가 비대칭적이며 지우기 연산의 속도가 가장 느리다.
하드 디스크 드라이브는 데이터 갱신(update) 발생 시 기존 데이터의 물리적으로 동일한 영역에 덮어쓸 수 있다(in-place update). 그러나, 낸드 플래시 메모리는 해당 영역이 삭제(erase)된 상태에서만 기록이 가능하다. 즉, 낸드 플래시 메모리는 해당 블록이 삭제되어야만 그 위치에 새로운 정보를 기록할 수 있다는 특징을 가지고 있다. 이러한 특징으로 인해 이전에 데이터가 기록된 위치에 바로 덮어쓸 수 없고 새로운 위치에 기록을 한 후(out-place update) 위치 정보를 갱신(update)해야 한다.
또한, 플래시 메모리는 소정의 기록/지우기 횟수가 통상 소정 횟수-예를 들어 100,000번-이하로 제한되어 있으므로 동일 블록을 해당 횟수를 초과하여 사용하면 그 블록은 더 이상 정상적인 사용(새로운 쓰기 행위)이 불가능하다. 따라서, 정보의 갱신(update)이 일어날 경우 해당 블록을 지우고 해당 블록에 다시 쓰기를 하는 것이 아니라 해당 블록은 다음 작업을 위해 지우되 정보의 기록은 새로운 블록에 하는 닳기 균등화(wear leveling) 방식을 일반적으로 사용하고 있다.
따라서 낸드 플래시 메모리 내부에서는 사용자의 데이터 입출력을 수행하기 위해 읽기 쓰기 연산뿐만 아니라 지우기 연산을 주기적으로 수행해야 하며, 전술한 바와 같이 낸드 플래시 메모리 연산 중 지우기 연산은 속도가 가장 느리기 때문에 하드 디스크와 비교하여 낸드 플래시 메모리의 가장 큰 단점이 된다.
전술한 낸드 플래시 메모리만의 특성에 따라 호스트 시스템의 파일 시스템(File System)과 낸드 플래시 메모리 사이에 플래시 변환 계층(Flash Translation Layer; 이하 'FTL')이라는 시스템 소프트웨어를 사용한다. FTL은 호스 트 시스템의 파일 시스템에게 낸드 플래시 메모리가 가지고 있는 고유의 특성들을 감추며, 하드 디스크와 동일한 입/출력 연산을 수행할 수 있도록 파일 시스템으로부터 전달되는 논리적인 주소를 낸드 플래시 메모리의 물리적인 주소와 매핑(mapping)하는 것이다.
파일 시스템의 논리적인 주소와 낸드 플래시 메모리 내부의 물리적인 주소를 매핑 하는 종래의 방법에는 페이지 매핑, 블록 매핑 그리고 하이브리드 매핑의 3가지 방법이 있다.
페이지 매핑 기법은 낸드 플래시 메모리의 데이터를 페이지 단위로 매핑 하는 것이며, SSD(Solid State Drive)와 같은 대용량 낸드 플래시 메모리의 저장 공간이 증가할수록 매핑 정보를 담고 있는 맵핑 테이블의 크기가 증가한다는 단점이 있다.
블록 매핑 기법은 낸드 플래시 메모리의 데이터를 블록 단위로 매핑하며 블록 번호와 블록 내부의 오프셋(offset)을 가지고 해당 영역에 접근한다. 블록 매핑 기법은 매핑 테이블의 크기가 페이지 매핑에 비해 크게 줄어든다는 장점이 있지만 데이터 갱신(update)에 대한 오버헤드(overhead)가 커진다는 단점이 있다. 이는 데이터 매핑을 블록 단위로 수행하기 때문에 일부 페이지(page)-예를 들어 도 2a의 p2(201)-에 대한 갱신(update) 요청이 발생하면 새롭게 갱신된 페이지를 새로운 블록에 기록하고 나머지 페이지(도 2a의 p0, p1, P3)를 기존 블록에서 새로운 블록에 복사해야 하기 때문이다(도 2a 참조).
이러한 오버헤드를 개선하고자 하이브리드 매핑 방법이 제안되었다. 하이브 리드 매핑 기법에서는 낸드 플래시 메모리의 모든 물리적인 블록들을 데이터 블록(data block)과 로그 블록(log block)으로 구분한다. 데이터 블록의 데이터 입/출력은 블록 매핑 기법을 사용하며 로그 블록의 데이터 입/출력은 페이지 매핑 기법을 사용한다.
기존의 FTL 하이브리드 매핑 기법에는 BAST(Block Associative Sector Translation), FAST(Fully Associative Sector Translation) 및 SAST(Set Associative Sector Translation) 기법이 있다.
BAST라 불리는 하이브리드 매핑 기법은 1:1 로그 블록 맵핑 기법으로서, 처음 데이터 기록(write) 요청이 발생하여 FTL로 전송되면 블록 매핑 방법으로 데이터 블록에 기록한다. 도 2b에 도시된 바와 같이, 데이터 블록에 기록된 데이터의 갱신(update)이 발생하면 로그 블록에서 데이터의 갱신을 수행하는데, 데이터 블록에 기록된 이전 데이터-도 2b의 페이지 p2(203)-를 무효화(invalidate)한 후 로그 블록을 할당받아 갱신될 데이터를 첫 페이지부터 차례로 기록한다.
BAST 기법에서는 일부 페이지가 자주 갱신된다고 해도 블록 매핑 방법과는 달리 해당 로그 블록의 페이지를 모두 사용할 때까지 나머지 페이지에 대한 복사를 수행하지 않아도 된다. 만약 모든 로그 블록이 할당된 상태에서 새로운 데이터 블록에 대한 갱신이 발생하면 기존의 로그 블록 중 하나를 병합(merge) 하여 새로운 로그 블록을 할당한다. 병합 연산은 완전 병합(full merge), 부분 병합(partial merge) 및 스위치 병합(switch merge)으로 구분되며, 로그 블록에 기록되어 있는 데이터의 순서에 따라 적절한 병합 연산을 선택한다.
도 3a 및 도 3b는 종래의 BAST 기법에서의 데이터 갱신 과정을 설명하는 개념도이다. 총 6개의 데이터 블록(B0 ~ B5)과 최대 할당 가능한 로그 블록(L0 ~ L3)이 4개라고 가정한다.
도 3a를 참조하면, p1, p5, p9, p13에 대한 갱신이 발생한 경우 해당 데이터 블록의 갱신을 위한 로그 블록이 지정된다. 이후 p17에 대한 갱신이 발생한다면 도 3b에 도시된 바와 같이, 기존 로그 블록 중 하나를 병합하고 새로운 로그 블록을 할당 한다. BAST에서는 데이터 블록에 할당된 로그 블록의 순서대로 병합 연산을 수행한다. 만약 p1, p5, p9, p13, p17, p20, p21, p2, p6의 순서대로 데이터 갱신이 발생하였다면 도 3b와 같이 갱신 요청을 수행한다.
쓰기 요청 패턴이 랜덤한 경우, 상기와 같은 BAST의 1:1 맵핑 기법은 빈번한 로그 블록 병합을 피할 수 없기 때문에 성능 열화가 발생한다. 이것을 로그 블록 쓰레싱 문제(log block thrashing problem)라고 한다. 예를 들어, 쓰기 패턴이 p0, p4, p8, p12, p16, p20, p1, p5이라고 가정하면, p16으로의 쓰기부터 시작하여 매 쓰기시마다, BAST에서는 4개의 로그 블록들 중의 하나를 대체해야하고 그 결과 비싼 병합 동작을 수행해야한다. 더우기, 도 3b에 도시된바와 같이, 본 예에서의 매 희생 로그 블록(victim log block)은 대체될 경우 단지 하나의 페이지만을 유지하며, 나머지 세개의 페이지들은 빈 채로 남게 된다. 그래서, BAST에서의 로그 블록들은 로그 블록(버퍼)로부터 대체될 경우 매우 낮은 공간 활용율을 가져온다.
상기와 같은 1:1 맵핑 기법의 문제점을 해결하기 위하여, N:1 로그 블록 맵핑 기법으로서 FAST 기법이 도입된다. 도 4는 종래의 FAST 기법에서의 데이터 갱신 과정을 설명하는 개념도이다.
FAST는 BAST 기법의 블록 쓰레싱(Block Thrashing)을 해결하기 위한 기법이며, 이를 위해 데이터 블록과 로그 블록간의 연관을 N:1로 수행한다(N:데이터 블록 전체 개수, 1: 로그 블록 개수). 또한 전체 로그 블록을 랜덤 로그 블록(RLB: Random Log Block)과 순차 로그 블록(SLB: Sequential Log Block)으로 구분하며, 순차 로그 블록은 1개만 유지하고 오프셋 0을 갖는 페이지의 갱신이 발생하면 순차 로그 블록에 기록한다.
FAST 기법에서는 하나의 로그 블록에 전체 데이터 블록에서 갱신된 페이지가 기록될 수 있다. 따라서 하나의 데이터 블록에 할당된 임의의 로그 블록에서만 데이터 갱신을 수행하는 것이 아니라 첫 번째 로그 블록부터 갱신된 페이지를 기록한다. 도 4에 도시된 바와 같이, BAST의 경우처럼 p1, p5, p9, p13, p17, p20, p21, p2, p6의 순서대로 데이터 갱신 요청이 발생한 경우를 가정하면, BAST 기법과는 달리 데이터 블록과 로그 블록 사이의 1:1 연관이 이루어지지 않고 첫 번째 로그 블록부터 데이터를 기록한다. 또한 p20은 데이터 블록 B5에서 오프셋 0을 갖는 페이지이기 때문에 순차 로그 블록(SLB)에 기록하게 되며 이후에 갱신된 p21은 데이터 블록 B5에서 오프셋 1인 페이지로써 순차 로그 블록의 순차성을 유지하는 데이터이기 때문에 순차 로그 블록(SLB)에 기록한다.
FAST 기법에서는 순차 로그 블록을 1개만 유지하기 때문에 오프셋 0을 갖는 페이지 갱신 요청이 발생할 때마다 순차 로그 블록을 부분 병합해야 한다. 또한 순차 로그 블록의 순차성을 유지할 수 없는 페이지 쓰기 요청이 발생하면 순차 로그 블록에 기록한 후 완전 병합 연산을 수행한다. 따라서 순차 로그 블록의 블록 쓰레싱이 발생할 수 있으며, 순차 로그 블록의 이용률(utilization)이 낮은 상태에서 부분 병합 및 완전 병합을 수행할 가능성이 있다.
이후 모든 로그 블록에 데이터가 가득 차게 되면 첫 번째 랜덤 로그 블록부터 연관된 데이터 블록들과 병합 연산을 수행한다.
각 로그 블록과 연관된 데이터 블록의 수를 로그 블록의 연관성(Associativity)이라 정의하며 도 4의 랜덤 로그 블록 RLB0, RLB1은 각각 연관성 4, 3의 값을 갖는다.
전술한 바와 같이 FAST에서는 연관성의 최대값이 로그 블록의 페이지 개수만큼 커질 수 있다. 로그 블록 연관성 크기에 따라 병합 연산 값이 달라지며 1회 병합 연산 시 발생하는 병합 비용(merge cost)은 아래 수학식 1과 같다. 따라서 FAST에서는 단일 병합 연산 시 얼마만큼의 시간이 소요되는지 예측할 수 없는 문제가 있다.
병합 비용 = A(LB) x N x Ccopy + (A(LB)+1) x Cerase
여기서, A(LB)은 로그 블록의 연관성, N은 하나의 블록당 페이지 개수(pages_per_block), Ccopy은 페이지 복사(page copy)의 연산 비용, Cerase는 블록 소거(block erase)의 연산 비용이다.
FAST는 높은 블록 연관성으로 인하여 최악의 경우(worst case)의 블록 병합 시간과 최선의 경우의 블록 병합 시간간의 차이값이 매우 크다. 따라서, 어느 쪽도 정해진 시간내 작업 종료를 보장해야하는 실시간 시스템에 적용하기에는 부족한 면이 있다.
기존의 또 다른 FTL 하이브리드 매핑 기법으로 N:K 로그 블록 맵핑을 사용하는 SAST 기법이 있다. SAST는 데이터 블록과 로그 블록을 그룹으로 구성하여 각 그룹 간 매핑을 수행한다. 데이터 블록에 참가 가능한 최대 블록 개수를 N으로, 로그 블록 그룹에 참가 가능한 최대 블록 개수를 K로 정의한다.
도 5는 종래의 SAST 기법에서의 데이터 갱신 과정을 설명하는 개념도이다. 도 5에서는 데이터 블록 그룹의 최대 블록 개수 N을 3으로, 로그 블록 그룹의 최대 블록 개수 K를 2로 제한한 경우를 예로 들었다.
도 5에 도시된 바와 같이, 이 후 블록 그룹 내부에서 발생하는 데이터 갱신은 해당 로그 블록 그룹에서 수행된다. 따라서 로그 블록의 최대 연관성은 데이터 블록 그룹을 구성하는 최대 블록 개수 N에 따라 제한된다.
SAST의 문제점은 임의의 데이터 블록 그룹 내부의 데이터가 다른 블록에 비해 자주 갱신되는 경우 다른 블록 그룹에 할당된 로그 블록이 낮은 이용률을 가진 채 병합되어야 한다는 것이다. 결국 BAST와 동일한 문제인 블록 쓰레싱(로그 블록 쓰레싱)이 발생할 수 있다. 또한 순차 로그 블록을 따로 구분하지 않기 때문에 부분 병합 및 스위치 병합 횟수가 감소할 수 있는 문제가 있다.
따라서, N:K 로그 블록 맵핑은 1:1 로그 블록 맵핑과 N:1 로그 블록 맵핑의 절충안이라는 한계가 있음으로 상기 블록 쓰레싱 문제와 상기 높은 블록 연관성 문제를 완전히 해결할 수 없다.
병합 비용(merge cost)은 큰 시간이 소요되며, 연관성(Associativity)에 따라서 병합 비용의 최소값 및 최대값의 차이가 크다. 특히 실시간 시스템(realtime system)에서 프로세싱의 데드라인(dead line)이 언제인지를 예측하는 것이 중요하다.
본 발명은 위와 같은 문제점을 해결하기 위해 제안된 것으로, 본 발명의 제1 목적은 실시간 시스템에 적용시 제한된 시간내에 입출력 동작을 수행할 수 있는 유동적이지 않은 안정적인 입출력 성능을 제공하기 위한 로그 버퍼 기반 플래시 변환 계층(Flash translation layer)에서 수행되는 로그 블록 연관성 분산 방법을 제공하는 것이다.
본 발명의 제2 목적은 상기 방법을 수행하는 실시간 시스템을 위한 플래시 메모리 장치를 제공하는 것이다.
상기한 본 발명의 제1 목적을 달성하기 위한 본 발명의 일측면에 따른 서로 다른 논리 블록 번호(logical block number)로 식별되는 복수의 데이터 블록들과 서로 다른 논리 로그 블록 번호(logical log block number)로 식별되는 복수의 로그 블록들로 이루어진 물리 블록들(physical blocks)을 포함하는 플래시 메모리의 로그 버퍼 기반 플래시 변환 계층(Flash translation layer)에서 수행되는 로그 블록(log block) 연관성 분산 방법은, 로그 블록에 대해 페이지 p의 기록(write) 요 청이 발생한 경우 상기 데이터 블록들과 상기 로그 블록-여기서, 상기 복수의 로그 블록들 중 각각의 로그 블록의 데이터 블록에 대한 연관성은 소정값 K 이하로 미리 설정되고, 상기 K는 자연수임-들간의 매핑 관계를 가지는 로그 블록 매핑 테이블을 확인하여 상기 기록 요청이 발생한 해당 데이터 블록과 연관된 로그 블록이 존재하는지 확인하는 단계; 상기 판단 결과 상기 기록 요청이 발생한 해당 데이터 블록과 연관된 로그 블록이 존재하면 상기 연관된 로그 블록이 랜덤 로그 블록인지 순차 로그 블록인지 확인하는 단계; 및 상기 연관된 로그 블록이 랜덤 로그 블록인 경우 상기 랜덤 로그 블록의 마지막 빈 페이지(free page)에 상기 기록 요청이 발생한 데이터를 기록하는 단계를 포함한다. 상기 판단 결과 상기 기록 요청이 발생한 해당 데이터 블록과 연관된 로그 블록이 존재하지 않으면 상기 로그 블록의 데이터 블록에 대한 연관성을 증가시키도록 상기 기록 요청이 발생한 데이터를 기록하는 단계를 더 포함할 수 있다. 상기 로그 블록의 데이터 블록에 대한 연관성을 증가시키도록 상기 기록 요청이 발생한 데이터를 기록하는 단계는 상기 로그 블록의 연관성을 최소한으로 유지시키도록 동일한 논리 블록 번호를 가지는 데이터 블록내의 데이터는 동일한 로그 블록에 기록하고 서로 다른 논리 블록 번호를 가지는 데이터 블록내의 데이터는 서로 다른 로그 블록에 기록함으로써 상기 로그 블록 연관성을 분산시킬 수 있다. 상기 로그 블록의 데이터 블록에 대한 연관성을 증가시키도록 상기 기록 요청이 발생한 데이터를 기록하는 단계는 스위치 병합(switch merge) 가능한 로그 블록이 존재하면 스위치 병합을 수행한 후 새로운 로그 블록에 상기 기록 요청이 발생한 데이터를 기록하는 단계와, 상기 스위치 병합이 가능한 로그 블 록이 존재하지 않고 빈 로그 블록이 존재하면 상기 새로 할당 가능한 빈 로그 블록에 상기 기록 요청이 발생한 데이터를 기록하는 단계를 포함할 수 있다. 상기 로그 블록의 데이터 블록에 대한 연관성을 증가시키도록 상기 기록 요청이 발생한 데이터를 기록하는 단계는 상기 스위치 병합이 불가능하며 모든 로그 블록이 적어도 하나의 데이터 블록에 연관된 경우 현재 할당된 로그 블록의 연관성이 상기 소정값 K에 도달하였거나 또는 상기 기록 요청이 발생한 데이터의 오프셋이 0인지 여부를 판단하는 단계; 및 상기 판단결과 상기 현재 할당된 로그 블록의 연관성이 상기 소정값 K에 도달하지 않았고 또한 상기 기록 요청이 발생한 데이터의 오프셋이 0이 아닌 경우에는 최소한의 연관성을 갖는 로그 블록 중 가장 많은 빈 페이지를 가지고 있는 로그 블록을 선택하여 상기 기록 요청이 발생된 데이터를 기록하는 단계를 더 포함할 수 있다. 상기 로그 버퍼 기반 플래시 변환 계층에서 수행되는 로그 블록 연관성 분산 방법은 상기 연관된 로그 블록이 순차 로그 블록이라면 상기 연관된 순차 로그 블록의 순차성을 유지할 수 있는지 확인하는 단계; 및 상기 연관된 로그 블록의 순차성을 유지할 수 있는 경우 상기 연관된 순차 로그 블록의 마지막 빈 페이지에 상기 기록 요청이 발생한 데이터를 기록하는 단계를 더 포함할 수 있다. 상기 로그 버퍼 기반 플래시 변환 계층에서 수행되는 로그 블록 연관성 분산 방법은 상기 연관된 로그 블록의 순차성을 유지할 수 없는 경우에는 상기 연관된 순차 로그 블록에 현재 기록되어 있는 마지막 페이지의 제1 오프셋의 크기가 상기 기록 요청이 발생한 데이터의 제2 오프셋의 크기 보다 크거나 같은 경우 상기 연관된 순차 로그 블록의 빈 페이지 개수를 확인하는 단계; 및 상기 빈 페이지의 개수 가 소정값보다 크다면 상기 연관된 순차 로그 블록에 상기 기록 요청이 발생한 데이터를 기록 후 상기 연관된 순차 로그 블록을 랜덤 로그 블록으로 변환하는 단계를 더 포함할 수 있다. 상기 연관된 로그 블록의 순차성을 유지할 수 없는 경우에는 상기 제1 오프셋의 크기가 상기 제2 오프셋의 크기 보다 작은 경우 상기 제1 및 제2 오프셋의 간격이 소정 간격보다 크지 않다면 중간 오프셋 사이의 데이터를 상기 연관된 순차 로그 블록에 복사한 후 상기 기록 요청이 발생한 데이터를 상기 연관된 순차 로그 블록에 기록하여 상기 순차 로그 블록을 유지하는 단계를 더 포함할 수 있다. 유지 가능한 최대 순차 로그 블록의 개수는 가변적이며, 상기 유지 가능한 최대 순차 로그 블록의 최대 개수는 1이상이 될 수 있다.
또한, 본 발명의 제2 목적을 달성하기 위한 본 발명의 일측면에 따른 플래시 메모리 장치는 복수의 페이지로 구성된 블록을 복수개 구비하는 플래시 메모리; 및 주소 변환 맵핑 테이블을 이용하여 파일 시스템으로부터 전달되는 논리적인 주소를 상기 플래시 메모리의 물리적인 주소와 매핑시키는 플래시 변환 계층(Flash translation layer)을 포함하되, 상기 플래시 변환 계층은 서로 다른 논리 블록 번호(logical block number)로 복수의 데이터 블록들을 식별하고, 서로 다른 논리 로그 블록 번호(logical log block number)로 복수의 로그 블록들을 식별하며, 상기 플래시 변환 계층은 로그 블록에 대해 페이지 p의 기록(write) 요청이 발생한 경우 상기 데이터 블록들과 상기 로그 블록-여기서, 상기 복수의 로그 블록들 중 각각의 로그 블록의 데이터 블록에 대한 연관성은 소정값 K 이하로 미리 설정되고, 상기 K는 자연수임-들간의 매핑 관계를 가지는 로그 블록 매핑 테이블을 확인하여 상기 기록 요청이 발생한 해당 데이터 블록과 연관된 로그 블록이 존재하는지 확인하는 단계; 상기 플래시 변환 계층은 상기 판단 결과 상기 기록 요청이 발생한 해당 데이터 블록과 연관된 로그 블록이 존재하면 상기 연관된 로그 블록이 랜덤 로그 블록인지 순차 로그 블록인지 확인하는 단계; 및 상기 플래시 변환 계층은 상기 연관된 로그 블록이 랜덤 로그 블록인 경우 상기 랜덤 로그 블록의 마지막 빈 페이지(free page)에 상기 기록 요청이 발생한 데이터를 기록하는 단계를 수행한다. 상기 플래시 변환 계층은 상기 판단 결과 상기 기록 요청이 발생한 해당 데이터 블록과 연관된 로그 블록이 존재하지 않으면 상기 로그 블록의 데이터 블록에 대한 연관성을 증가시키도록 상기 기록 요청이 발생한 데이터를 기록하는 단계를 더 수행할 수 있다. 상기 로그 블록의 데이터 블록에 대한 연관성을 증가시키도록 상기 기록 요청이 발생한 데이터를 기록하는 단계는 상기 로그 블록의 연관성을 최소한으로 유지시키도록 동일한 논리 블록 번호를 가지는 데이터 블록내의 데이터는 동일한 로그 블록에 기록하고 서로 다른 논리 블록 번호를 가지는 데이터 블록내의 데이터는 서로 다른 로그 블록에 기록함으로써 상기 로그 블록 연관성을 분산시킬 수 있다. 상기 플래시 변환 계층은 상기 연관된 로그 블록이 순차 로그 블록이라면 상기 연관된 순차 로그 블록의 순차성을 유지할 수 있는지 확인하는 단계; 및 상기 연관된 로그 블록의 순차성을 유지할 수 있는 경우 상기 연관된 순차 로그 블록의 마지막 빈 페이지에 상기 기록 요청이 발생한 데이터를 기록하는 단계를 더 수행할 수 있다. 상기 플래시 변환 계층은 상기 연관된 로그 블록의 순차성을 유지할 수 없는 경우에는 상기 연관된 순차 로그 블록에 현재 기록되어 있는 마지막 페 이지의 제1 오프셋의 크기가 상기 기록 요청이 발생한 데이터의 제2 오프셋의 크기 보다 크거나 같은 경우 상기 연관된 순차 로그 블록의 빈 페이지 개수를 확인하는 단계; 및 상기 빈 페이지의 개수가 소정값보다 크다면 상기 연관된 순차 로그 블록에 상기 기록 요청이 발생한 데이터를 기록 후 상기 연관된 순차 로그 블록을 랜덤 로그 블록으로 변환하는 단계를 더 수행할 수 있다. 상기 플래시 변환 계층은 상기 연관된 로그 블록의 순차성을 유지할 수 없는 경우에는 상기 제1 오프셋의 크기가 상기 제2 오프셋의 크기 보다 작은 경우 상기 제1 및 제2 오프셋의 간격이 소정 간격보다 크지 않다면 중간 오프셋 사이의 데이터를 상기 연관된 순차 로그 블록에 복사한 후 상기 기록 요청이 발생한 데이터를 상기 연관된 순차 로그 블록에 기록하여 상기 순차 로그 블록을 유지하는 단계를 더 수행할 수 있다. 유지 가능한 최대 순차 로그 블록의 개수는 가변적이며, 상기 유지 가능한 최대 순차 로그 블록의 최대 개수는 1이상이 될 수 있다.
이상에서 설명한 바와 같이 본 발명의 일실시예에 따른 로그 버퍼 기반 플래시 변환 계층에서 수행되는 로그 블록 연관성 분산 방법은 로그 블록의 연관성을 분산시키고 로그 블록의 연관성 K 값을 미리 소정값 이하로 설정하여 제한한다.
따라서, 단일 병합 연산 시 소요되는 시간의 최대값을 예측할 수 있으며, 최악의 경우(worst case) 병합 비용의 최대값을 예측할 수 있다. 특히, 읽기, 쓰기 및 지우기 연산 중 지우기 연산 비용이 가장 큰 데, 상기 지우기 연산 비용을 제한함으로써 정해진 시간내 작업 종료를 보장해야하는 실시간 시스템에 적용할 경우 플래시 메모리 사용시 발생하는 최대 지연 시간을 제한하여 유동적이지 않은 안정적인 성능을 제공하여 플래시 메모리 사용의 효율을 극대화 할 수 있다.
또한, 병합 연산 시 소요되는 전체 병합 연산 비용을 줄일 수 있다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.
이하, 본 발명의 바람직한 실시예를 첨부한 도면들을 참조하여 상세히 설명하기로 한다. 본 발명을 설명함에 있어 전체적인 이해를 용이하게 하기 위하여 도면 번호에 상관없이 동일한 수단에 대해서는 동일한 참조 번호를 사용하기로 한다.
도 6은 본 발명의 일실시예에 따른 플래시 메모리 장치를 나타낸 개념도이다.
도 6을 참조하면, 본 발명의 일실시예에 따른 플래시 메모리 장치는 플래쉬 변환 계층(Flash Translation Layer; 이하 FTL)(620) 및 플래시 메모리(640)를 포함한다.
FTL(620)는 호스트 시스템의 파일 시스템(File System, 610)과 플래시 메모리(640) 사이에 존재한다.
플래시 메모리(640)는 복수의 블록(Block)으로 구성되며, 각 블록은 복수의 페이지로 이루어져 있다.
FTL(620)는 상위의 파일 시스템(610)에게 플래시 메모리(640)가 가지고 있는 고유의 특성들을 감추며, 호스트 시스템에서는 FAT와 같은 파일 시스템(610)을 사용하여 플래시 메모리(640)를 효율적으로 제어하여 하드 디스크와 동일한 입/출력 연산을 수행할 수 있도록 한다. FTL(620)의 역할 중 한 가지는 주소 변환 맵핑 테이블을 이용하여 파일 시스템(610)으로부터 전달되는 논리적인 주소를 낸드 플래시 메모리의 물리적인 주소와 매핑(mapping)하는 것이다. FTL은 그 기능의 일부가 하드웨어로 구현될 수도 있다.
FTL(610)은 해당 블록을 지우고 새로운 블록을 할당 받을때 파일 시스템(610)에서 바라볼때 논리적인 주소가 변경되지 않게 하고 해당 물리적인 블록만 변경되도록 한다. FTL(610)에서는 가비지 콜렉션(Garbage collection), 닳기 균등화(Wear leveling), 배경 지우기(Background Erase), 배드 블록 관리(Bad Block Management)등의 기능을 수행한다.
FTL(610)은 본 발명의 일실시예에 따른 로그 블록(log block) 연관성 분산 방법을 수행한다. 상기 본 발명의 일실시예에 따른 로그 블록(log block) 연관성 분산 방법의 구체적인 동작은 도 8 내지 도 14d를 참조하여 후술한다.
하이브리드 레벨(hybid-level) 매핑 기법에서는 최근에 널리 사용되고 있으며, 모든 물리 블록들은 로그 블록들과 데이터 블록들로 구분되며, 상기 로그 블록들은 로그 버퍼(log buffer)로 불린다.
상기 하이브리드 레벨(hybid-level) 매핑 기법을 사용하는 플래쉬 변환 계층(FTL)을 이하에서는 로그 버퍼 기반(log buffer-based)의 플래쉬 변환 계층(FTL)이라고 한다.
본 발명의 일실시예에 따른 로그 버퍼 기반 FTL에서의 로그 블록 연관성 분산 방법은 KAST(K-Associative Sector Translation)로 불린다.
KAST 기법에서는 전체 로그 블록을 랜덤 로그 블록(RLB: Random Log Block)과 순차 로그 블록(SLB: Sequential Log Block)으로 구분한다. KAST 기법에서는 데이터 블록과 로그 블록은 그룹화되지 않는다는 점에서 기존 SAST 기법과 차이가 있다.
KAST 기법에서는 데이터 블록의 오프셋 0을 갖는 페이지의 갱신이 발생하면 순차 로그 블록에 기록한다. 순차 로그 블록은 최소 2개 이상 유지할 수 있다.
본 발명의 일실시예에 따른 로그 버퍼 기반 FTL에서의 로그 블록 연관성 분산 방법은 로그 블록의 연관성을 분산시키고 로그 블록의 연관성 K 값을 미리 소정값 이하로 설정하여 제한함으로써 단일 병합 연산 시 소요되는 시간의 최대값을 예측가능케 하며 병합 연산 시 소요되는 전체 병합 연산 비용을 최소화 할 수 있다.
본 발명의 일실시예에 따른 로그 버퍼 기반 FTL에서의 로그 블록 연관성 분산 방법에서 행하는 세부 동작은 다음과 같이 3가지로 구성된다.
첫번째, 본 발명의 일실시예에 따른 로그 버퍼 기반 FTL에서의 로그 블록 연관성 분산 방법에서는 데이터 블록들과 로그 블록들을 그룹화하지 않고 입/출력 시간을 감소시키기 위해 전체 로그 블록에 연관성(Associativity)을 분산 시킨다. 기 존의 SAST 매핑 기법에서는 데이터 블록들과 로그 블록들을 그룹화함으로써 블록 쓰레싱 문제를 피할 수 없었지만, 본 발명의 일실시예에 따른 로그 버퍼 기반 FTL에서의 로그 블록 연관성 분산 방법에서는 단지 각각의 로그 블록의 연관성의 최대값만을 미리 설정함으로써 제한한다. 또한, 본 발명의 일실시예에 따른 로그 버퍼 기반 FTL에서의 로그 블록 연관성 분산 방법에서는 로그 블록들의 연관성을 최소화하기 위하여 B0, B1, B2, B3등과 같은 서로 다른 논리 블록 번호(Logical Block Number; LBN)를 가지는 데이터 블록들에 대한 쓰기 요청은 서로 다른 논리 로그 블록 번호(Logical Log Block Number; LLBN)을 가지는 로그 블록들로 분산된다.
두번째, 단일 병합 연산의 연산 비용의 최대값을 예측하기 위해 각 로그 블록의 연관성을 제한한다. 즉, 각 로그 블록은 최대로 K 개의 데이터 블록들로 연관되도록 제한되며, 상기 K 값은 미리 설정된다. 그러므로 로그 블록의 연관성은 K 이하로 보장되며, K값을 조절함으로써 최악의 경우의 로그 블록의 블록 병합 시간(block merge time)이 제어될 수 있다.
세번째, 1개의 순차 로그 블록만을 유지하는 FAST와는 달리 순차 로그 블록을 가변적으로 유지하되 순차 로그 블록의 개수는 최대값이 있으며, 순차적인 쓰기 요청이 없다는 조건하에서 순차 로그 블록(SLB)은 랜덤 로그 블록(RLB)으로 변경하여 사용 가능하다. 상기 순차 로그 블록의 개수는 0개, 1개, 2개등으로 가변될 수 있으며, 순차 로그 블록 개수의 최대값은 로그 블록의 개수이다.
도 7은 본 발명의 일실시예에 따른 로그 버퍼 기반 FTL에서의 로그 블록 연관성 분산 방법에서의 로그 블록의 상태 천이도를 나타낸다. 도 7에서 F는 자유 블 록(Free block), S는 순차 로그 블록(Sequential log block), Ri은 블록 연관성 i를 가지는 랜덤 로그 블록(Random log block)을 나타낸다.
도 7을 참조하면, 처음에는 모든 로그 블록들은 데이터가 전연 없는 자유 블록이다(상태 701). 상기 자유 블록은 순차 로그 블록(상태 703) 또는 랜덤 로그 블록(상태 705)로 천이한다.
본 발명의 일실시예에 따른 로그 버퍼 기반 FTL에서의 로그 블록 연관성 분산 방법이 d(p)∈A(L)(여기서, d(p)는 페이지 p의 대응되는 데이터 블록이고, A(L)은 로그 블록 L과 연관된 데이터 블록들의 세트임)인 조건에서 페이지 p를 Ri 상태의 랜덤 로그 블록 L에 쓰기를 한 경우, 상기 로그 블록 L은 자신의 상태 Ri를 유지한다.
만약 본 발명의 일실시예에 따른 로그 버퍼 기반 FTL에서의 로그 블록 연관성 분산 방법이 순차 로그 블록의 순차성을 깨지 않고 순차 로그 블록에 페이지를 부가(append)하면, 상기 순차 로그 블록은 자신의 상태를 S로 유지한다.
만약 페이지p가 d(p)
Figure 112008090999301-PAT00001
A(L)인 조건에서 상태 Ri를 가진 랜덤 로그 블록 L로 쓰여진다면, Ri는 Ri+1 상태로 변환된다. 상태 Ri+1를 가지는 랜덤 로그 블록 L은 만약 랜덤 로그 블록 L의 한 페이지가 다른 로그 블록에서의 동일한 페이지를 씀으로서 무효화되면 상태 Ri로 변경될 수 있다.
순차로그블록의 작은 부분만이 유효한 데이터로 점유되어 있는 경우에만 순차로그블록은 상태 R1 또는 R2를 가지는 랜덤로그블록으로 변경될 수 있다. 부분 병합 또는 스위치 병합에 의해 상기 순차 로그 블록이 F 상태로 변경되는동안, 상기 랜덤로그블록은 완전 병합(full merge) 동작에 의해 F 상태로 변경된다. 상태 Ri를 가지는 랜덤로그블록의 완전 병합 비용(full merge cost)은 아래의 수학식 2와 같다.
완전 병합 비용 = N x i x Ccopy + (i+1) x Cerase
여기서, N은 하나의 블록당 페이지 개수(pages_per_block), i는 로그 블록의 연관성, Ccopy은 페이지 복사(page copy)의 연산 비용, Cerase는 블록 삭제(block erase)의 연산 비용이다. 상기 로그 블록의 연관성(Associativity)은 각 로그 블록과 연관된 데이터 블록의 수로 정의된다.
이하 구체적으로 본 발명의 일실시예에 따른 로그 버퍼 기반 FTL에서의 로그 블록 연관성 분산 방법에 대해 설명한다.
도 8은 본 발명의 일실시예에 따른 로그 버퍼 기반 FTL에서의 로그 블록 연관성 분산 방법에서 로그 블록에 데이터를 기록하는 과정을 설명하기 위한 순서도이다.
데이터 블록에 기록된 페이지 p의 갱신(update) 요청이 발생하면, 상기 페이지 p를 갱신하기 위하여 로그 블록에 페이지 p의 기록(write) 요청이 발생한다.
로그 블록에 페이지 p의 기록(write) 요청이 발생한 경우, 먼저 단계 801에서 로그 블록 매핑 테이블을 확인하여 데이터 갱신 요청이 발생한 해당 데이터 블록과 연관된 로그 블록이 존재하는지 확인(즉, 해당 데이터 블록에 이미 할당된 로 그 블록이 존재하는지 확인)한다. 최초에는 로그 블록 매핑 테이블에는 로그 블록이 할당되어 있지 않으며 데이터 블록에 기록된 데이터 갱신 동작 과정에서 로그 블록 매핑 테이블에 각 데이터블록의 논리 블록 번호(LBN)과 연관된 로그 블록의 논리 로그 블록 번호(LLBN)이 저장된다.
이미 할당된 로그 블록이 존재한다면 단계 803에서 해당 로그 블록이 랜덤 로그 블록(Random-write Log Block; RLB)인지 순차 로그 블록(Sequential-write Log Block; SLB)인지 확인한다.
할당된 로그 블록이 랜덤 로그 블록이라면 단계 805에서 랜덤 로그 블록의 마지막 빈 페이지(free page)에 데이터를 기록한다.
할당된 로그 블록이 순차 로그 블록이라면 단계 807에서 현재 순차 로그 블록의 순차성을 유지할 수 있는지 확인한다.
단계 807의 판단 결과 현재 로그 블록의 순차성을 유지할 수 있다면 단계 809에서 순차 로그 블록의 마지막 빈 페이지에 데이터를 기록한다.
단계 807의 판단 결과 현재 로그 블록의 순차성을 유지할 수 없다면 단계 811에서 순차성을 유지할 수 없는 데이터를 순차 로그 블록에 기록을 시도한다. 상기 순차성을 유지할 수 없는 데이터를 순차 로그 블록에 기록하는 구체적인 과정은 도 9를 참조하여 후술한다.
단계 801의 판단 결과 이전에 상기 로그 블록 매핑 테이블에 할당된 로그 블록이 없다면 단계 813에서 로그 블록의 연관성을 증가시키는 데이터 기록을 시도한다. 여기서, 로그 블록에의 기록 요청이 발생한 경우 기록 요청이 발생한 현재 데 이터의 LBN과 연관된 LLBN을 갖는 로그 블록이 존재한다면, 해당 로그 블록에 기록을 하여도 연관성은 증가하지 않는다. 그러나, 기록 요청이 발생한 현재 데이터의 LBN과 연관된 LLBN을 갖는 로그 블록이 없는 경우(이전에 상기 로그 블록 매핑 테이블에 할당된 로그 블록이 없는 경우) 다른 로그 블록에 기록하며, 빈 로그 블록에 기록하면 연관성이 0에서 1이 되는 것이고, 만약 연관성 3을 가진 로그 블록에 기록한다면 연관성 4가 되어 로그 블록의 연관성은 +1 만큼 증가한다. 상기 로그 블록의 연관성을 증가시키는 데이터 기록 과정에 대해서는 도 10을 참조하여 구체적으로 설명한다.
도 9는 도 8의 단계 811에서의 순차성을 유지할 수 없는 데이터를 할당된 순차 로그 블록에 기록하는 과정을 구체적으로 나타낸 순서도이다.
먼저, 단계 901에서, 상기 할당된 순차 로그 블록에 현재 기록되어 있는 마지막 페이지의 오프셋(offsetlast)을 확인한다.
단계 903에서, 단계 901의 순차 로그 블록에 현재 기록되어 있는 마지막 페이지의 오프셋(offsetlast)의 크기와 현재 갱신 요청이 발생한 데이터의 오프셋(offsetlsn)의 크기를 비교한다.
단계 905에서, 만약 상기 마지막 페이지의 오프셋(offsetlast)이 현재 갱신 요청이 발생한 데이터의 오프셋(offsetlsn) 보다 크거나 같다면(offsetlast ≥ offsetlsn) 상기 할당된 순차 로그 블록의 빈 페이지(free page) 개수를 확인한다.
단계 907에서, 상기 빈 페이지의 개수가 소정값보다 크다면 상기 할당된 순차 로그 블록에 상기 갱신 요청이 발생한 데이터를 기록 후 상기 할당된 순차 로그 블록을 랜덤 로그 블록으로 변환한다. 상기 소정값은 여러개의 값들 중의 하나로 실험적으로 결정될 수 있으며, 예를 들어 8이 될 수 있다.
단계 909에서, 빈 페이지의 개수가 상기 소정값보다 적다면 상기 할당된 순차 로그 블록을 부분 병합후 새로운 로그 블록을 할당하여 첫번째 오프셋에 상기 갱신 요청이 발생한 데이터를 기록한다.
단계 911에서, 상기 마지막 오프셋이 더 작다면(offsetlast < offsetlsn) 두 오프셋 간격(gap = offsetlsn - offsetlast)을 비교한다.
단계 913에서, 두 오프셋 간격이 소정 간격보다 크다면 로그 블록의 병합 연산을 수행하면서 상기 갱신 요청이 발생한 데이터를 기록한다. 상기 소정 간격은 4보다 큰 값, 예를 들어 5가 될 수 있다.
단계 915에서, 두 오프셋 간격이 상기 소정 간격보다 크지 않다면 중간 오프셋 사이의 데이터를 순차 로그 블록에 복사(padding)한 후 현재 갱신 요청이 발생한 데이터를 순차 로그 블록에 기록하여 순차 로그 블록을 유지한다.
도 10은 도 8의 단계 813의 로그 블록의 연관성을 증가시키도록 데이터를 기록하는 과정을 설명하기 위한 순서도이다.
도 10을 참조하면, 단계 1001에서, 스위치 병합(switch merge) 가능한 로그 블록이 있는지 확인한다.
단계 1003에서 스위치 병합 가능한 로그 블록이 존재하면 스위치 병합을 수행한 후, 단계 1005에서 새로운 로그 블록에 현재 갱신 요청이 발생한 데이터를 기록한다.
단계 1007에서 스위치 병합이 불가능 하다면 빈(free) 로그 블록이 존재하는지 여부를 확인한다.
단계 1007 판단결과 새로 할당 가능한 빈 로그 블록이 있다면 단계 1005로 분기하여 새로운 빈 로그 블록에 데이터를 기록한다.
단계 1009(스위치 병합이 불가능 하며 모든 로그 블록이 적어도 하나의 데이터 블록에 연관된 경우)에서, 현재 할당된 로그 블록의 연관성의 최대값 K에 도달하였거나 또는 현재 갱신 요청이 발생한 데이터의 오프셋이 0인지 여부를 판단한다.
상기 단계 1009의 판단결과, 현재 할당된 로그 블록의 연관성의 최대값 K에 도달하였거나 또는 현재 갱신 요청이 발생한 데이터의 오프셋이 0인 경우에는 단계 1011에서 로그 블록을 선택하여 병합 연산을 수행한다. 여기서, 상기 로그 블록의 선택은 부분 병합이 가능한 로그 블록을 우선적으로 선택하고, 그 다음 완전 병합이 가능한 로그 블록을 차 순위로 선택할 수 있다.
단계 1013에서, 상기 단계 1009의 판단 결과, 그렇지 않다면(상기 현재 할당된 로그 블록의 연관성이 상기 소정값 K에 도달하지 않았고 또한 상기 기록 요청이 발생한 데이터의 오프셋이 0이 아닌 경우) 기존 로그 블록 중 하나를 선택하여 마지막 페이지에 상기 기록 요청이 발생한 데이터를 기록한다. 여기서, 기존 로그 블 록 중 연관성이 최소인 로그 블록을 선택할 수 있다. 만약 연관성이 최소인 로그 블록이 두개 이상 존재한다면 이 중 빈 페이지가 더 많은 로그 블록을 선택할 수 있다.
도 11a는 본 발명의 일실시예에 따른 순차 로그 블록을 랜덤 로그 블록으로 변경하는 경우를 설명하기 위한 개념도이다.
예를 들어, 현재 할당된 순차 로그 블록에 페이지 p0, p1, p3가 저장되어 있고, 현재 페이지 p5가 갱신 요청된 경우를 가정한다.
도 9의 단계 901의 순차 로그 블록에 현재 기록되어 있는 마지막 페이지의 오프셋(offsetlast)과 현재 갱신 요청이 발생한 데이터의 오프셋(offsetlsn)의 간격(gap = offsetlsn - offsetlast)이 상기 소정 간격보다 작은 경우에는 도 11a의 (b)와 같이 상기 간격을 채운후(padding) 상기 현재 갱신 요청이 발생한 데이터로 순차 로그 블록을 채운다.
상기 간격이 상기 소정 간격보다 큰 경우 현재 로그 블록의 빈 페이지(free page) 개수가 상기 소정값보다 적다면 도 11a의 (c)와 같이 부분 병합을 수행하면서 순차 로그 블록에 테이터를 기록한다.
상기 간격이 상기 소정 간격보다 큰 경우 현재 로그 블록의 빈 페이지(free page) 개수가 소정값보다 크다면 도 11a의 (d)와 같이 순차 로그 블록에 데이터 기록 후 순차 로그 블록을 랜덤 로그 블록으로 변환한다. 상기와 같이 상기 간격이 상기 소정 간격보다 크면서 현재 로그 블록의 빈 페이지들이 많은 경우에는, 순차 적인 기록 요청이 상기 순차 로그 블록에 요구될 가능성이 매우 낮을 것임을 예측할 수 있다. 또한, 상기 간격이 상기 소정 간격보다 크면서 현재 로그 블록의 빈 페이지들이 많은 경우에는 부분 병합을 하는 것보다는 현재 진행중인(on-going) 기록 요청에 대해 상기 순차 로그 블록을 랜덤 로그 블록으로 변환하여 사용하는 것이 더 바람직하다.
도 11a에 도시된 바와 같이, 본 발명의 일실시예에 따른 로그 버퍼 기반 FTL에서의 로그 블록 연관성 분산 방법은 가능한한 순차 로그 블록을 활용한다. 빈 로그 블록이 없고 데이터 블록의 로직 블록 번호(Logic Block Number)에 상응하는 로그 블록이 할당되지 않은 경우에만 본 발명의 일실시예에 따른 로그 버퍼 기반 FTL에서의 로그 블록 연관성 분산 방법은 로그 블록의 블록 연관성을 증가시킨다. 특별한 경우에 순차 로그 블록은 단지 한개의 데이터 블록에만 연관될 수 있다. 로그 블록이 할당된 경우에는 순차 로그 블록인지 또는 랜덤 로그 블록인지가 결정된다.
도 11b는 본 발명의 일실시예에 따른 로그 블록의 연관성을 증가시키지 않도록 데이터를 기록하는 과정을 나타낸다.
도 11b를 참조하면, 도 11b의 (a)와 같이 할당된 랜덤 로그 블록에 페이지 p0 기록 요청이 들어오면 첫번째 선택 가능한 방법은 순차 로그 블록을 이용하지 않고 도 11b의 (b)와 같이 상기 페이지 p0를 랜덤 로그 블록의 마지막 빈 페이지(free page)에 데이터를 부가(append)하여 기록하는 것이다.
도 11b의 (a)와 같이 할당된 랜덤 로그 블록에 페이지 p0 기록 요청이 들어올 경우 두번째 선택 가능한 방법은 도 11b의 (c)와 같이 순차 로그 블록을 할당하 여 페이지 po를 부가하여 기록하거나, 순차 로그 블록의 순차성을 유지하기 위하여 갱신 요청이 되지 않은 페이지들을 데이터 블록으로부터 순차 로그 블록으로 복사하여 채우는(padding) 것이다.
도 11c는 완전 병합을 설명하기 위한 개념도이고, 도 11d는 부분 병합을 설명하기 위한 개념도이고, 도 11e는 스위치 병합을 설명하기 위한 개념도이다. 랜덤 로그 블록은 완전 병합만이 가능하며, 순차 로그 블록은 완전 병합, 부분 병합 및 스위치 병합이 가능하다.
도 11c를 참조하면, 무효화된 데이터(페이지 p2, p3)가 있는 경우 데이터 블록 B0의 유효한 데이터(p0, p1)을 빈(free) 블록에 복사하고, 로그 블록 L0의 유효한 데이터(p2, p3)을 빈(free) 블록에 복사하고, 데이터 블록 B0 및 로그 블록 L0를 소거하여 완전 병합(full merge)을 수행한다. 상기 완전 병합의 경우 두번의 소거 동작, 4번의 복사 동작이 발생된다.
도 11d를 참조하면, 무효화된 데이터(페이지 p0, p1)이 있는 경우 데이터 블록 B0의 유효한 데이터(p2, p3)을 로그 블록 L0에 복사하고, 데이터 블록 B0는 소거하고, 로그 블록 L0는 데이터 블록 B0로 변환하여 부분 병합(partial merge)을 수행한다. 상기 부분 병합의 경우 1번의 소거 동작, 2번의 복사 동작이 발생된다.
도 11e를 참조하면, 로그 블록에 빈 페이지가 없는 경우 스위치 병합이 수행된다. 데이터 블록 B0의 페이지 p0, p1, p2, p3는 무효화된 데이터이고, 데이터 블록 B0는 소거하고, 로그 블록 L0는 데이터 블록 B0로 변환하여 스위치 병합(switch merge)을 수행한다. 스위치 병합의 경우 소거(erase) 동작만 발생하며 복사(copy) 동작이 발생하지 않으므로 복사로 인한 오버헤드가 존재하지 않는다.
도 11f 내지 도 11i는 본 발명의 일실시예에 따른 로그 블록의 연관성을 증가시키는 데이터 기록 과정을 예시적으로 보여주는 개념도이다. 데이터 블록 6개와 로그 블록 4개가 있으며, 데이터 블록에는 모든 데이터가 기록되어 있고 로그 블록은 비어있다고 가정한다.
도 11f에 도시된 바와 같이, 처음에 데이터 블록 B0(LBN 0)의 페이지 p1, p2, p3의 갱신 요청이 발생하면, 로그 블록 매핑 테이블을 확인해서 LBN 0과 연관되어 있는 로그 블록이 있는지 확인한다. 연관된 로그 블록이 존재하지 않으면 로그 블록의 연관성을 증가시키는 데이터 기록을 시도한다.
스위치 병합 가능한 로그 블록이 없기 때문에 빈 로그 블록이 존재하는지 확인한다. 빈 로그 블록은 존재하므로 첫 번째 로그 블록 L0을 선택하여 페이지 p1을 기록하고 로그 블록 매핑 테이블에 LBN과 LLBN의 연관을 기록한다. 이 후 페이지 p2, p3의 갱신 요청이 발생하면 로그 블록 매핑 테이블을 확인하여 LBN 0과 연관된 로그 블록 L0에 p2, p3를 기록한다.
이후에 페이지 p5, p6, p7(LBN 1) 기록 요청이 발생하면 상기 과정과 동일하게 로그 블록 L1을 선택하여 데이터를 기록하고 로그 블록 매핑 테이블을 갱신한다.
즉, 서로 다른 논리 블록 번호(LBN)를 가지는 데이터 블록내 데이터는 서로 다른 로그 블록에 기록된다.
도 12a 내지 도 12c는 첫번째 시나리오에 대해서 본 발명의 일실시예에 따른 로그 버퍼 기반 FTL에서의 로그 블록 연관성 분산 방법의 데이터 갱신 과정을 설명하기 위한 개념도이다.
본 발명의 일실시예에 따른 로그 버퍼 기반 FTL에서의 로그 블록 연관성 분산 방법에서는 갱신 요청된 데이터를 로그 블록에 순환적으로 데이터를 기록하여 로그 블록의 연관성을 분산시킨다.
도 12a 내지 도 12c의 시나리오의 경우, 페이지 갱신 요청이 p1, p5, p9, p13, p17, p20, p21, p2, p6의 순서대로 발생한 경우를 가정한다.
우선 페이지 p1, p5, p9, p13의 갱신 요청이 발생한 경우 본 발명의 일실시예에 따른 로그 버퍼 기반 FTL에서의 로그 블록 연관성 분산 방법(KAST)는 기존 FAST 로그 블록 매핑 기법과는 다르게 현재 기록 가능한 모든 로그 블록에 연관성 1씩 증가하도록 데이터를 기록한다. 따라서 모든 로그 블록의 연관성이 1이 되어 로그 블록 연관성이 분산된다(도 12a 참조). 로그 블록에 데이터가 기록되면 로그 블록 매핑 테이블에 해당 데이터 블록과 로그 블록 간 연관 정보를 유지한다.
이 후 페이지 p17의 갱신 요청이 발생하면 기존의 로그 블록 L0에 데이터를 추가하고 해당 로그 블록 L0의 연관성을 증가시킨다. 이 때 첫번째 로그 블록부터 최소한의 연관성을 갖는 로그 블록 중 빈 페이지가 가장 많은 로그 블록을 선택하여 데이터를 기록하며, 가장 최근에 갱신된 로그 블록은 도 12b와 같이 L0이 된다.
페이지 p20 갱신 요청 발생 시 p20은 오프셋 0을 갖는 데이터이기 때문에 순차 로그 블록에 데이터를 기록한다. 현재 로그 블록 4가 모두 할당되어 랜덤 로그 블록으로 사용되고 있는 상태이기 때문에 이 중 하나를 선택하여 병합 연산 후 순 차 로그 블록을 할당한다. 병합 연산 대상이 되는 로그 블록은 최소한의 연관성을 갖는 로그 블록 중 가장 이전에 갱신된(Least Recently Updated; LRU) 로그 블록이 될 수 있다. 따라서 도 12c와 같이 로그 블록 L1을 선택하여 병합 연산한 후 p20과 p21을 기록한다.
페이지 p2의 갱신 요청 시 본 발명의 일실시예에 따른 로그 버퍼 기반 FTL에서의 로그 블록 연관성 분산 방법(KAST)은 로그 블록의 연관성을 최소한으로 유지하도록 기록(write)을 수행하기 때문에 도 12c와 같이 로그 블록 L0에 기록하여 로그 블록의 연관성을 증가시키지 않는다.
여기서, 페이지 p1 및 p17이 기록된 로그 블록 L0은 로그 블록 연관성 2이고, 페이지 p1 및 p17이 기록된 로그 블록 L0에 페이지 p2를 추가로 기록할 경우 로그 블록 연관성은 그대로 2가 되어 로그 블록의 연관성은 증가되지 않음을 알 수 있다.
마지막으로 p6에 대한 갱신 요청이 발생하면 랜덤 로그 블록 중 최소한의 연관성을 갖는 로그 블록에 기록하며, 따라서 도 12c와 같이 로그 블록 L2에 기록하고 연관성을 1 증가 시킨다. 최종적인 로그 블록별 연관성은 다음이 표 1과 같이 된다.
로그 블록 L0 L1 L2 L3
로그 블록 구분 랜덤 로그 블록 순차 로그 블록 랜덤 로그 블록 랜덤 로그 블록
연관성 2 1 2 1
도 13a 내지 도 13c는 두번째 시나리오에 대해서 본 발명의 일실시예에 따른 로그 블록에의 데이터 기록 과정을 설명하기 위한 개념도이다.
도 13a 내지 도 13c의 시나리오의 경우, 데이터 블록은 총 6개(B0 내지 B5)이며 로그 블록은 총 4개(L0 내지 L3)이고, 하나의 블록은 총 8개의 페이지를 가지며, 현재 데이터 블록에 모든 데이터가 기록되어 있으며 모든 기록 요청은 데이터의 갱신 요청이라고 가정하고, 현재 상황에서 로그 블록이 가질 수 있는 최대 연관성(K)과 유지 가능한 최대 순차 로그 블록의 개수를 각각 2라고 가정한다. 페이지 기록 요청은 페이지 p1, p9, p17, p25, p32, p33, p34, p40, p41, p2, p10, p3의 순서대로 발생한다고 가정한다.
먼저 페이지 p1, p9, p17, p25의 데이터 기록 요청이 발생하면 현재까지 할당된 로그 블록이 로그 블록 매핑 테이블에 존재하지 않기 때문에 도 13a에 도시된 바와 같이 4개의 로그 블록들에 순서대로 데이터를 기록하고 로그 블록 매핑 테이블에 데이터 블록과 로그 블록과의 연관 정보를 기록한다. 이 때 모든 로그 블록은 랜덤 로그 블록이 되며 연관성은 1을 갖게 된다.
그 다음 페이지 p32의 기록 요청이 발생하면 데이터 블록 B4에서의 오프셋이 0이기 때문에 순차 로그 블록을 할당한다. 하지만 현재 모든 로그 블록이 할당되었기 때문에 기존 로그 블록 중 하나를 병합한다. 본 발명의 일실시예에 따른 로그 버퍼 기반 FTL에서의 로그 블록 연관성 분산 방법(KAST)에서는 최소한의 연관성을 갖는 로그 블록 중 가장 이전에 갱신된(LRU) 로그 블록 L0를 선택하여 병합의 대상으로 한다. 따라서 도 13b에 도시된 바와 같이 로그 블록 L0을 병합 한 후 페이지 p32를 로그 블록 L0에 기록하여 순차 로그 블록으로 사용한다.
이후 페이지 p33, p34는 p32와 순차적인 데이터이기 때문에 순차성을 유지하기 위하여 도 13b에 도시된 바와 같이 순차 로그 블록 L0에 기록된다.
페이지 p40의 갱신 요청이 발생하면 p40은 데이터 블록 B5에서 오프셋 0이기 때문에 순차 로그 블록에 기록된다. 순차 로그 블록을 최대 2개까지 유지할 수 있기 때문에 로그 블록 L1을 병합한 후 도 13b에 도시된 바와 같이 p40을 로그 블록 L1에 기록하여 순차 로그 블록으로 사용한다. 따라서 현재까지 총 2개의 순차 로그 블록(L0, L1)이 사용된다.
페이지 p41은 p40 이후의 순차적인 데이터이기 때문에 도 13b에 도시된 바와 같이 순차 로그 블록 L1에 연속적으로 기록된다.
이 후 페이지 p3의 갱신 요청이 발생하였을 경우 최초 가정에서 로그 블록의 연관성을 2로 제한하였기 때문에 로그 블록 L2를 완전 병합(full merge)한 후 도 13c에 도시된 바와 같이 L2의 첫 번째 오프셋에 p3를 기록한다.
도 14a 내지 도 14c는 두번째 시나리오에서 본 발명의 일실시예에 따른 순차 로그 블록에 데이터 기록 과정을 설명하기 위한 개념도이다.
도 13c의 상황에서 로그 블록 L0 및 L1이 순차 로그 블록으로 사용되고 있다. 이 중 로그 블록 L0이 도 14a의 왼쪽과 같이 기록된 상태라고 가정한다.
이 때 페이지 p32의 기록 요청이 발생하면 현재 가장 마지막에 기록되어 있는 페이지의 오프셋(offsetlast)과 현재 갱신 요청이 발생된 페이지의 오프셋(offsetcur)을 비교한다. 오프셋 offsetlast이 offsetcur보다 크고 로그 블록 L0에 빈 페이지의 개수(5개)가 소정 개수보다 많기 때문에 도 14a에 도시된 바와 같이 로그 블록 L0의 마지막 오프셋에 p32를 기록한 후 순차 로그 블록을 랜덤 로그 블록으로 변환하여 사용한다.
하지만 도 14b에 도시된 바와 같이 로그 블록 L0에 빈 페이지가 적을 경우 부분 병합을 수행한 후 부분 병합된 로그 블록 L0의 첫 번째 페이지에 p32를 기록하여 순차 로그 블록으로 사용한다.
이 후, 도 14c에 도시된 바와 같이 오프셋 offsetlast보다 offsetcur가 큰 데이터 p37의 기록 요청이 발생하면, offsetlast과 offsetcur의 차이값을 구한다. 만약 상기 차이값이 소정 간격보다 작다면 도 14c에 도시된 바와 같이 중간의 데이터(p35, p36)을 데이터 블록에서 순차 로그 블록에 복사하여 순차 로그 블록으로 유지한다.
한편, 오프셋 offsetlast보다 offsetcur가 큰 데이터 p39의 기록 요청이 발생하면, offsetlast과 offsetcur의 차이값을 구하고, 상기 차이값이 소정 간격보다 크다면, 도 14d에 도시된 바와 같이, 로그 블록을 부분 병합하여 데이터 블록으로 사용한다.
본 발명의 일실시예에 따른 로그 버퍼 기반 FTL에서의 로그 블록 연관성 분산 방법(KAST)의 성능을 평가하기 위하여 시뮬레이션을 수행하였다. 상기 시뮬레이션은 평가를 위해 두가지 종류의 I/O 작업 부하(workload)를 사용하였다. 상기 두가지 종류 중 하나는 다수의 작은 랜덤 액세스 파일들을 발생시키는 웹브라우저를 실행하면서 추출된 스토리지 I/O 결과(trace)이다. 다른 하나는 마이크로소프트 윈도우 XP 기반 데스크탑 PC에서의 문서 편집기, 음악 재생기, 웹브라우저 및 게임들과 같은 다수의 응용프로그램들을 실행시키면서 수집된 I/O 결과이다. 상기와 같은 결과는 순차적 액세스 및 랜덤 액세스를 모두 가지고 있다. 여기서는 하나의 블록이 64개의 페이지로 구성되는 SLC(Single Level Cell) NAND 플래시 메모리 모델을 사용하였고, 페이지 읽기, 페이지 프로그램 및 블록 지우기를 위한 연산 시간은 각각 약 25us, 약 200us, 2,ms 였다.
도 15a 및 도 15b는 여러개의 FTL에서의 하이브리드 매핑 기법을 적용할 경우 발생되는 로그 블록 병합의 개수를 보여주는 그래프이다. 모든 실험들에서 로그 블록의 개수는 32이다. SAST 및 KAST(본 발명의 일실시예에 따른 로그 버퍼 기반 FTL에서의 로그 블록 연관성 분산 방법)의 경우는 K(로그 블록의 블록 연관성의 최대값)를 가변시키면서 실험하였다. SAST에 대해서는 로그 블록 세트(set)의 크기는 K로 일정하게 설정되었다. FAST는 가장 적은 개수의 블록 병합이 발생하였고, BAST의 경우에는 로그 블록 쓰레싱 문제로 인하여 가장 현저하게 많은 개수의 블록 병합이 발생하였음을 알 수 있다. K=1인 경우에는 SAST 및 KAST의 로그 블록 병합의 개수는 비슷하다. 그러나, K가 증가함에 따라서 SAST 및 KAST의 로그 블록 병합의 개수는 감소한다. K≥8인 경우에는 KAST의 로그 블록 병합 개수는 FAST의 로그 블록 병합 개수보다 작으며, 대부분의 K값에 대해서는 SAST의 로그 블록 병합 개수는 FAST의 로그 블록 병합 개수보다 큼을 알 수 있다. 이는 SAST 기법은 로그 블록 쓰레싱 문제를 피할 수 없기 때문이다.
도 16a 및 도 16b는 로그 블록이 병합될 경우 로그 블록의 블록 연관성을 보여주는 그래프이다. 로그 블록의 최대 연관성값에 따라서, 최악의 경우의 블록 병합 비용(worst-case block merge cost)이 결정된다. 상기 결과로부터, SAST 및 KAST는 상기 로그 블록 최대 연관성 값이 K 보다 작다는 것을 보증할 수 있다. FAST 기법에서의 로그 블록 최대 연관성은 현저히 크며, 따라서 FAST는 긴 블록킹 시간(blocking time)을 유발할 수 있다. 그러나, SAST 및 KAST에서는, 상기 K 값을 설정함으로써 상기 블록킹 시간을 제어할 수 있다. KAST는 로그 블록의 병합의 개수 측면에서 BAST 및 SAST에 비하여 우월한 성능을 가져오며, 로그 블록 병합(로그 블록 블록 연관성)당 비용에 있어서 FAST보다 우월한 성능을 가져온다.
도 17은 각각의 로그 블록 병합으로 인한 블록킹 시간들을 보여주는 그래프이다. 상기 I/O 결과(trace)는 인터넷 엑스플로어(Internet explorer)의 I/O 결과이고, K값은 KAST 및 SAST 기법에 대해 16이다. FAST 기법은 최악의 경우(worst case) 548ms의 블록킹 시간을 나타냈고, KAST 기법의 경우 단지 232ms의 블록킹 시간만을 요구하였다. SAST 기법에서의 로그 블록은 데이터로 채워지기 전에 병합이 되므로 SAST 기법의 블록킹 시간은 일반적으로 KAST 기법의 블록킹 시간보다더 작다. 따라서, SAST 기법은 현저히 많은 개수의 로그 블록 병합을 유발시킨다.
도 18a 및 도 18b는 여러개의 FTL의 하이브리드 매핑 기법을 적용할 경우 총 I/O 실행 시간을 보여주는 그래프이다. SAST와 KAST의 실행 시간은 K값이 증가할 수록 로그 블록 병합의 개수가 감소하므로 감소한다. 그러나, 로그 블록 쓰레싱 문제를 피할 수 없는 SAST 기법은 랜덤 액세스 패턴을 가지는 인터넷 엑스플로어에 대해 FAST보다더 더 나븐 결과를 나타낸다. 그러나, KAST 기법은 K
Figure 112008090999301-PAT00002
8인 경우 SAST 및 FAST를 모두 능가하는 성능을 나타낸다.
상기한 본 발명의 바람직한 실시예는 예시의 목적을 위해 개시된 것이고, 본 발명에 대해 통상의 지식을 가진 당업자라면 본 발명의 사상과 범위 안에서 다양한 수정, 변경, 부가가 가능할 것이며, 이러한 수정, 변경 및 부가는 하기의 특허청구범위에 속하는 것으로 보아야 할 것이다.
도 1은 일반적인 플래시 메모리의 구조를 나타낸 개념도이다.
도 2a는 종래의 블록 매핑 기법을 설명하기 위한 개념도이다.
도 2b는 종래의 하이브리드 매핑 기법 중의 하나인 BAST 매핑 기법을 설명하기 위한 개념도이다.
도 3a 및 도 3b는 종래의 BAST 기법에서의 데이터 갱신 과정을 설명하는 개념도이다.
도 4는 종래의 FAST 기법에서의 데이터 갱신 과정을 설명하는 개념도이다.
도 5는 종래의 SAST 기법에서의 데이터 갱신 과정을 설명하는 개념도이다.
도 6은 본 발명의 일실시예에 따른 플래시 메모리 장치를 나타낸 개념도이다.
도 7은 본 발명의 일실시예에 따른 로그 버퍼 기반 FTL에서의 로그 블록 연관성 분산 방법에서의 로그 블록의 상태 천이도를 나타낸다.
도 8은 본 발명의 일실시예에 따른 로그 버퍼 기반 FTL에서의 로그 블록 연관성 분산 방법에서 로그 블록에 데이터를 기록하는 과정을 설명하기 위한 순서도이다.
도 9는 도 8의 단계 811에서의 순차성을 유지할 수 없는 데이터를 할당된 순차 로그 블록에 기록하는 과정을 구체적으로 나타낸 순서도이다.
도 10은 도 8의 단계 813의 로그 블록의 연관성을 증가시키도록 데이터를 기록하는 과정을 설명하기 위한 순서도이다.
도 11a는 본 발명의 일실시예에 따른 순차 로그 블록을 랜덤 로그 블록으로 변경하는 경우를 설명하기 위한 개념도이다.
도 11b는 본 발명의 일실시예에 따른 로그 블록의 연관성을 증가시키지 않도록 데이터를 기록하는 과정을 나타낸다.
도 11c는 완전 병합을 설명하기 위한 개념도이다.
도 11d는 부분 병합을 설명하기 위한 개념도이다.
도 11e는 스위치 병합을 설명하기 위한 개념도이다.
도 11f 내지 도 11i는 본 발명의 일실시예에 따른 로그 블록의 연관성을 증가시키는 데이터 기록 과정을 예시적으로 보여주는 개념도이다.
도 12a 내지 도 12c는 첫번째 시나리오에 대해서 본 발명의 일실시예에 따른 로그 버퍼 기반 FTL에서의 로그 블록 연관성 분산 방법의 데이터 갱신 과정을 설명하기 위한 개념도이다.
도 13a 내지 도 13c는 두번째 시나리오에 대해서 본 발명의 일실시예에 따른 로그 블록에의 데이터 기록 과정을 설명하기 위한 개념도이다.
도 14a 내지 도 14c는 두번째 시나리오에서 본 발명의 일실시예에 따른 순차 로그 블록에 데이터 기록 과정을 설명하기 위한 개념도이다.
도 15a 및 도 15b는 여러개의 FTL에서의 하이브리드 매핑 기법을 적용할 경우 발생되는 로그 블록 병합의 개수를 보여주는 그래프이다.
도 16a 및 도 16b는 로그 블록이 병합될 경우 로그 블록의 블록 연관성을 보여주는 그래프이다.
도 17은 각각의 로그 블록 병합으로 인한 블록킹 시간들을 보여주는 그래프이다.
도 18a 및 도 18b는 여러개의 FTL의 하이브리드 매핑 기법을 적용할 경우 총 I/O 실행 시간을 보여주는 그래프이다.

Claims (16)

  1. 서로 다른 논리 블록 번호(logical block number)로 식별되는 복수의 데이터 블록들과 서로 다른 논리 로그 블록 번호(logical log block number)로 식별되는 복수의 로그 블록들로 이루어진 물리 블록들(physical blocks)을 포함하는 플래시 메모리의 로그 버퍼 기반 플래시 변환 계층(Flash translation layer)에서 수행되는 로그 블록(log block) 연관성 분산 방법에 있어서,
    로그 블록에 대해 페이지 p의 기록(write) 요청이 발생한 경우 상기 데이터 블록들과 상기 로그 블록-여기서, 상기 복수의 로그 블록들 중 각각의 로그 블록의 데이터 블록에 대한 연관성은 소정값 K 이하로 미리 설정되고, 상기 K는 자연수임-들간의 매핑 관계를 가지는 로그 블록 매핑 테이블을 확인하여 상기 기록 요청이 발생한 해당 데이터 블록과 연관된 로그 블록이 존재하는지 확인하는 단계;
    상기 판단 결과 상기 기록 요청이 발생한 해당 데이터 블록과 연관된 로그 블록이 존재하면 상기 연관된 로그 블록이 랜덤 로그 블록인지 순차 로그 블록인지 확인하는 단계; 및
    상기 연관된 로그 블록이 랜덤 로그 블록인 경우 상기 랜덤 로그 블록의 마지막 빈 페이지(free page)에 상기 기록 요청이 발생한 데이터를 기록하는 단계
    를 포함하는 것을 특징으로 하는 로그 버퍼 기반 플래시 변환 계층에서 수행되는 로그 블록 연관성 분산 방법.
  2. 제1항에 있어서, 상기 판단 결과 상기 기록 요청이 발생한 해당 데이터 블록과 연관된 로그 블록이 존재하지 않으면 상기 로그 블록의 데이터 블록에 대한 연관성을 증가시키도록 상기 기록 요청이 발생한 데이터를 기록하는 단계를 더 포함하는 것을 특징으로 하는 로그 버퍼 기반 플래시 변환 계층에서 수행되는 로그 블록 연관성 분산 방법.
  3. 제2항에 있어서, 상기 로그 블록의 데이터 블록에 대한 연관성을 증가시키도록 상기 기록 요청이 발생한 데이터를 기록하는 단계는 상기 로그 블록의 연관성을 최소한으로 유지시키도록 동일한 논리 블록 번호를 가지는 데이터 블록내의 데이터는 동일한 로그 블록에 기록하고 서로 다른 논리 블록 번호를 가지는 데이터 블록내의 데이터는 서로 다른 로그 블록에 기록함으로써 상기 로그 블록 연관성을 분산시키는 것을 특징으로 하는 로그 버퍼 기반 플래시 변환 계층에서 수행되는 로그 블록 연관성 분산 방법.
  4. 제2항에 있어서, 상기 로그 블록의 데이터 블록에 대한 연관성을 증가시키도록 상기 기록 요청이 발생한 데이터를 기록하는 단계는
    스위치 병합(switch merge) 가능한 로그 블록이 존재하면 스위치 병합을 수행한 후 새로운 로그 블록에 상기 기록 요청이 발생한 데이터를 기록하는 단계; 및
    상기 스위치 병합이 가능한 로그 블록이 존재하지 않고 빈 로그 블록이 존재하면 상기 새로 할당 가능한 빈 로그 블록에 상기 기록 요청이 발생한 데이터를 기록하는 단계를 포함하는 것을 특징으로 하는 로그 버퍼 기반 플래시 변환 계층에서 수행되는 로그 블록 연관성 분산 방법.
  5. 제4항에 있어서, 상기 로그 블록의 데이터 블록에 대한 연관성을 증가시키도록 상기 기록 요청이 발생한 데이터를 기록하는 단계는
    상기 스위치 병합이 불가능하며 모든 로그 블록이 적어도 하나의 데이터 블록에 연관된 경우 현재 할당된 로그 블록의 연관성이 상기 소정값 K에 도달하였거나 또는 상기 기록 요청이 발생한 데이터의 오프셋이 0인지 여부를 판단하는 단계; 및
    상기 판단결과 상기 현재 할당된 로그 블록의 연관성이 상기 소정값 K에 도달하지 않았고 또한 상기 기록 요청이 발생한 데이터의 오프셋이 0이 아닌 경우에는 최소한의 연관성을 갖는 로그 블록 중 가장 많은 빈 페이지를 갖는 로그 블록을 선택하여 상기 기록 요청이 발생된 데이터를 기록하는 단계를 더 포함하는 것을 특징으로 하는 로그 버퍼 기반 플래시 변환 계층에서 수행되는 로그 블록 연관성 분산 방법.
  6. 제1항에 있어서, 상기 연관된 로그 블록이 순차 로그 블록이라면 상기 연관된 순차 로그 블록의 순차성을 유지할 수 있는지 확인하는 단계; 및
    상기 연관된 로그 블록의 순차성을 유지할 수 있는 경우 상기 연관된 순차 로그 블록의 마지막 빈 페이지에 상기 기록 요청이 발생한 데이터를 기록하는 단계 를 더 포함하는 것을 특징으로 하는 로그 버퍼 기반 플래시 변환 계층에서 수행되는 로그 블록 연관성 분산 방법.
  7. 제6항에 있어서, 상기 연관된 로그 블록의 순차성을 유지할 수 없는 경우에는 상기 연관된 순차 로그 블록에 현재 기록되어 있는 마지막 페이지의 제1 오프셋의 크기가 상기 기록 요청이 발생한 데이터의 제2 오프셋의 크기 보다 크거나 같은 경우 상기 연관된 순차 로그 블록의 빈 페이지 개수를 확인하는 단계; 및
    상기 빈 페이지의 개수가 소정값보다 크다면 상기 연관된 순차 로그 블록에 상기 기록 요청이 발생한 데이터를 기록 후 상기 연관된 순차 로그 블록을 랜덤 로그 블록으로 변환하는 단계를 더 포함하는 것을 특징으로 하는 로그 버퍼 기반 플래시 변환 계층에서 수행되는 로그 블록 연관성 분산 방법.
  8. 제7항에 있어서, 상기 연관된 로그 블록의 순차성을 유지할 수 없는 경우에는 상기 제1 오프셋의 크기가 상기 제2 오프셋의 크기 보다 작은 경우 상기 제1 및 제2 오프셋의 간격이 소정 간격보다 크지 않다면 중간 오프셋 사이의 데이터를 상기 연관된 순차 로그 블록에 복사한 후 상기 기록 요청이 발생한 데이터를 상기 연관된 순차 로그 블록에 기록하여 상기 순차 로그 블록을 유지하는 단계를 더 포함하는 것을 특징으로 하는 로그 버퍼 기반 플래시 변환 계층에서 수행되는 로그 블록 연관성 분산 방법.
  9. 제6항에 있어서, 유지 가능한 최대 순차 로그 블록의 개수는 가변적이며, 상기 유지 가능한 최대 순차 로그 블록의 최대 개수는 1이상인 것을 특징으로 하는 로그 버퍼 기반 플래시 변환 계층에서 수행되는 로그 블록 연관성 분산 방법.
  10. 복수의 페이지로 구성된 블록을 복수개 구비하는 플래시 메모리; 및
    주소 변환 맵핑 테이블을 이용하여 파일 시스템으로부터 전달되는 논리적인 주소를 상기 플래시 메모리의 물리적인 주소와 매핑시키는 플래시 변환 계층(Flash translation layer)을 포함하되,
    상기 플래시 변환 계층은 서로 다른 논리 블록 번호(logical block number)로 복수의 데이터 블록들을 식별하고, 서로 다른 논리 로그 블록 번호(logical log block number)로 복수의 로그 블록들을 식별하며,
    상기 플래시 변환 계층은
    로그 블록에 대해 페이지 p의 기록(write) 요청이 발생한 경우 상기 데이터 블록들과 상기 로그 블록-여기서, 상기 복수의 로그 블록들 중 각각의 로그 블록의 데이터 블록에 대한 연관성은 소정값 K 이하로 미리 설정되고, 상기 K는 자연수임-들간의 매핑 관계를 가지는 로그 블록 매핑 테이블을 확인하여 상기 기록 요청이 발생한 해당 데이터 블록과 연관된 로그 블록이 존재하는지 확인하는 단계;
    상기 플래시 변환 계층은 상기 판단 결과 상기 기록 요청이 발생한 해당 데이터 블록과 연관된 로그 블록이 존재하면 상기 연관된 로그 블록이 랜덤 로그 블록인지 순차 로그 블록인지 확인하는 단계; 및
    상기 플래시 변환 계층은 상기 연관된 로그 블록이 랜덤 로그 블록인 경우 상기 랜덤 로그 블록의 마지막 빈 페이지(free page)에 상기 기록 요청이 발생한 데이터를 기록하는 단계를 수행하는 것을 특징으로 하는 플래시 메모리 장치.
  11. 제10항에 있어서, 상기 플래시 변환 계층은 상기 판단 결과 상기 기록 요청이 발생한 해당 데이터 블록과 연관된 로그 블록이 존재하지 않으면 상기 로그 블록의 데이터 블록에 대한 연관성을 증가시키도록 상기 기록 요청이 발생한 데이터를 기록하는 단계를 더 수행하는 것을 특징으로 하는 플래시 메모리 장치.
  12. 제11항에 있어서, 상기 로그 블록의 데이터 블록에 대한 연관성을 증가시키도록 상기 기록 요청이 발생한 데이터를 기록하는 단계는 상기 로그 블록의 연관성을 최소한으로 유지시키도록 동일한 논리 블록 번호를 가지는 데이터 블록내의 데이터는 동일한 로그 블록에 기록하고 서로 다른 논리 블록 번호를 가지는 데이터 블록내의 데이터는 서로 다른 로그 블록에 기록함으로써 상기 로그 블록 연관성을 분산시키는 것을 특징으로 하는 플래시 메모리 장치.
  13. 제10항에 있어서, 상기 플래시 변환 계층은
    상기 연관된 로그 블록이 순차 로그 블록이라면 상기 연관된 순차 로그 블록의 순차성을 유지할 수 있는지 확인하는 단계; 및
    상기 연관된 로그 블록의 순차성을 유지할 수 있는 경우 상기 연관된 순차 로그 블록의 마지막 빈 페이지에 상기 기록 요청이 발생한 데이터를 기록하는 단계를 더 수행하는 것을 특징으로 하는 플래시 메모리 장치.
  14. 제13항에 있어서, 상기 플래시 변환 계층은
    상기 연관된 로그 블록의 순차성을 유지할 수 없는 경우에는 상기 연관된 순차 로그 블록에 현재 기록되어 있는 마지막 페이지의 제1 오프셋의 크기가 상기 기록 요청이 발생한 데이터의 제2 오프셋의 크기 보다 크거나 같은 경우 상기 연관된 순차 로그 블록의 빈 페이지 개수를 확인하는 단계; 및
    상기 빈 페이지의 개수가 소정값보다 크다면 상기 연관된 순차 로그 블록에 상기 기록 요청이 발생한 데이터를 기록 후 상기 연관된 순차 로그 블록을 랜덤 로그 블록으로 변환하는 단계를 더 수행하는 것을 특징으로 하는 플래시 메모리 장치.
  15. 제14항에 있어서, 상기 플래시 변환 계층은
    상기 연관된 로그 블록의 순차성을 유지할 수 없는 경우에는 상기 제1 오프셋의 크기가 상기 제2 오프셋의 크기 보다 작은 경우 상기 제1 및 제2 오프셋의 간격이 소정 간격보다 크지 않다면 중간 오프셋 사이의 데이터를 상기 연관된 순차 로그 블록에 복사한 후 상기 기록 요청이 발생한 데이터를 상기 연관된 순차 로그 블록에 기록하여 상기 순차 로그 블록을 유지하는 단계를 더 수행하는 것을 특징으로 하는 플래시 메모리 장치.
  16. 제13항에 있어서, 유지 가능한 최대 순차 로그 블록의 개수는 가변적이며, 상기 유지 가능한 최대 순차 로그 블록의 최대 개수는 1이상인 것을 특징으로 하는 플래시 메모리 장치.
KR1020080138191A 2008-12-31 2008-12-31 실시간 시스템을 위한 로그 블록 연관성 분산 방법 및 이를수행하는 플래시 메모리 장치 KR101028929B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020080138191A KR101028929B1 (ko) 2008-12-31 2008-12-31 실시간 시스템을 위한 로그 블록 연관성 분산 방법 및 이를수행하는 플래시 메모리 장치
US12/356,306 US8261010B2 (en) 2008-12-31 2009-01-20 Methods for distributing log block associativity for real-time system and flash memory devices performing the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080138191A KR101028929B1 (ko) 2008-12-31 2008-12-31 실시간 시스템을 위한 로그 블록 연관성 분산 방법 및 이를수행하는 플래시 메모리 장치

Publications (2)

Publication Number Publication Date
KR20100079654A true KR20100079654A (ko) 2010-07-08
KR101028929B1 KR101028929B1 (ko) 2011-04-12

Family

ID=42286278

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080138191A KR101028929B1 (ko) 2008-12-31 2008-12-31 실시간 시스템을 위한 로그 블록 연관성 분산 방법 및 이를수행하는 플래시 메모리 장치

Country Status (2)

Country Link
US (1) US8261010B2 (ko)
KR (1) KR101028929B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101155542B1 (ko) * 2010-10-11 2012-06-18 성균관대학교산학협력단 Ssd 장치의 매핑 테이블 관리 방법
KR101153688B1 (ko) * 2010-10-15 2012-06-18 성균관대학교산학협력단 데이터 페이지들에 대해 무효화 기회를 부여하는 방법 및 이를 위한 낸드 플래시 메모리 시스템
KR20170097543A (ko) * 2016-02-18 2017-08-28 삼성전자주식회사 스트림 감지기를 포함하는 메모리 장치 및 그것의 동작 방법

Families Citing this family (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2262303B1 (en) * 2008-03-31 2018-06-13 NEC Corporation Concealment processing device, concealment processing method, and concealment processing program
US8838850B2 (en) * 2008-11-17 2014-09-16 Violin Memory, Inc. Cluster control protocol
US8442059B1 (en) 2008-09-30 2013-05-14 Gridiron Systems, Inc. Storage proxy with virtual ports configuration
US8417895B1 (en) 2008-09-30 2013-04-09 Violin Memory Inc. System for maintaining coherency during offline changes to storage media
US8788758B1 (en) 2008-11-04 2014-07-22 Violin Memory Inc Least profitability used caching scheme
US8775741B1 (en) 2009-01-13 2014-07-08 Violin Memory Inc. Using temporal access patterns for determining prefetch suitability
US8443150B1 (en) 2008-11-04 2013-05-14 Violin Memory Inc. Efficient reloading of data into cache resource
US8285961B2 (en) * 2008-11-13 2012-10-09 Grid Iron Systems, Inc. Dynamic performance virtualization for disk access
KR101581859B1 (ko) * 2009-02-27 2016-01-21 삼성전자주식회사 메모리 시스템 및 그것의 플래시 변환 계층의 데이터 관리 방법
KR101574540B1 (ko) * 2009-04-15 2015-12-07 삼성전자주식회사 데이터 저장 장치 및 이를 포함하는 데이터 저장 시스템
US8667366B1 (en) 2009-04-17 2014-03-04 Violin Memory, Inc. Efficient use of physical address space for data overflow and validation
US8417871B1 (en) 2009-04-17 2013-04-09 Violin Memory Inc. System for increasing storage media performance
US8713252B1 (en) 2009-05-06 2014-04-29 Violin Memory, Inc. Transactional consistency scheme
US8402198B1 (en) 2009-06-03 2013-03-19 Violin Memory, Inc. Mapping engine for a storage device
US9069676B2 (en) 2009-06-03 2015-06-30 Violin Memory, Inc. Mapping engine for a storage device
US8364931B2 (en) * 2009-06-29 2013-01-29 Mediatek Inc. Memory system and mapping methods using a random write page mapping table
KR20110018157A (ko) * 2009-08-17 2011-02-23 삼성전자주식회사 플래시 메모리 장치의 액세스 방법
US8402246B1 (en) 2009-08-28 2013-03-19 Violin Memory, Inc. Alignment adjustment in a tiered storage system
TWI414940B (zh) * 2009-12-30 2013-11-11 Phison Electronics Corp 區塊管理與資料寫入方法、快閃記憶體儲存系統與控制器
TWI440044B (zh) * 2010-03-01 2014-06-01 Phison Electronics Corp 記憶體管理與寫入方法、記憶體控制器與記憶體儲存系統
US8832384B1 (en) 2010-07-29 2014-09-09 Violin Memory, Inc. Reassembling abstracted memory accesses for prefetching
US8959288B1 (en) 2010-07-29 2015-02-17 Violin Memory, Inc. Identifying invalid cache data
US8850160B2 (en) * 2010-08-23 2014-09-30 Apple Inc. Adaptive write behavior for a system having non-volatile memory
KR101734200B1 (ko) * 2010-12-03 2017-05-11 삼성전자주식회사 적응적 머지를 수행하는 메모리 시스템 및 그것의 데이터 쓰기 방법
TWI463495B (zh) * 2010-12-10 2014-12-01 Phison Electronics Corp 資料寫入方法、記憶體控制器與儲存裝置
CN102543183B (zh) * 2010-12-21 2015-05-20 群联电子股份有限公司 数据写入方法、存储器控制器与储存装置
TWI494948B (zh) * 2011-01-31 2015-08-01 Phison Electronics Corp 用於非揮發性記憶體的資料寫入方法、控制器與儲存裝置
US8972689B1 (en) 2011-02-02 2015-03-03 Violin Memory, Inc. Apparatus, method and system for using real-time performance feedback for modeling and improving access to solid state media
WO2012109679A2 (en) * 2011-02-11 2012-08-16 Fusion-Io, Inc. Apparatus, system, and method for application direct virtual memory management
US8635416B1 (en) 2011-03-02 2014-01-21 Violin Memory Inc. Apparatus, method and system for using shadow drives for alternative drive commands
US9563681B1 (en) 2012-08-08 2017-02-07 Amazon Technologies, Inc. Archival data flow management
US9251097B1 (en) 2011-03-22 2016-02-02 Amazon Technologies, Inc. Redundant key management
US9213709B2 (en) 2012-08-08 2015-12-15 Amazon Technologies, Inc. Archival data identification
US9767098B2 (en) 2012-08-08 2017-09-19 Amazon Technologies, Inc. Archival data storage system
CN102163175B (zh) * 2011-04-26 2013-02-27 西安交通大学 一种基于局部性分析的混合地址映射方法
CN102779551B (zh) * 2011-05-10 2015-01-07 群联电子股份有限公司 数据写入方法、存储器控制器与存储器储存装置
US9396106B2 (en) * 2011-05-12 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
KR20120136197A (ko) * 2011-06-08 2012-12-18 삼성전자주식회사 비휘발성 메모리에 대한 웨어 레벨링 방법
TWI443512B (zh) * 2011-07-13 2014-07-01 Phison Electronics Corp 區塊管理方法、記憶體控制器與記憶體儲存裝置
US9645758B2 (en) * 2011-07-22 2017-05-09 Sandisk Technologies Llc Apparatus, system, and method for indexing data of an append-only, log-based structure
TWI457755B (zh) * 2011-08-22 2014-10-21 Phison Electronics Corp 資料寫入方法、記憶體控制器與儲存裝置
CN102968385B (zh) * 2011-08-31 2016-01-20 群联电子股份有限公司 数据写入方法、存储器控制器与储存装置
KR101374065B1 (ko) * 2012-05-23 2014-03-13 아주대학교산학협력단 칩 레벨 평행 플래시 메모리를 위한 정보 분별 방법 및 장치
US10120579B1 (en) * 2012-08-08 2018-11-06 Amazon Technologies, Inc. Data storage management for sequentially written media
US9092441B1 (en) 2012-08-08 2015-07-28 Amazon Technologies, Inc. Archival data organization and management
US9250811B1 (en) 2012-08-08 2016-02-02 Amazon Technologies, Inc. Data write caching for sequentially written media
US8959067B1 (en) 2012-08-08 2015-02-17 Amazon Technologies, Inc. Data storage inventory indexing
US9830111B1 (en) 2012-08-08 2017-11-28 Amazon Technologies, Inc. Data storage space management
US9354683B2 (en) 2012-08-08 2016-05-31 Amazon Technologies, Inc. Data storage power management
US9904788B2 (en) 2012-08-08 2018-02-27 Amazon Technologies, Inc. Redundant key management
US9225675B2 (en) 2012-08-08 2015-12-29 Amazon Technologies, Inc. Data storage application programming interface
US9652487B1 (en) 2012-08-08 2017-05-16 Amazon Technologies, Inc. Programmable checksum calculations on data storage devices
US9779035B1 (en) 2012-08-08 2017-10-03 Amazon Technologies, Inc. Log-based data storage on sequentially written media
US8805793B2 (en) 2012-08-08 2014-08-12 Amazon Technologies, Inc. Data storage integrity validation
KR102050732B1 (ko) * 2012-09-28 2019-12-02 삼성전자 주식회사 컴퓨팅 시스템 및 컴퓨팅 시스템의 데이터 관리 방법
US20140122774A1 (en) * 2012-10-31 2014-05-01 Hong Kong Applied Science and Technology Research Institute Company Limited Method for Managing Data of Solid State Storage with Data Attributes
KR20140078893A (ko) * 2012-12-18 2014-06-26 에스케이하이닉스 주식회사 데이터 저장 장치의 동작 방법
US10558581B1 (en) 2013-02-19 2020-02-11 Amazon Technologies, Inc. Systems and techniques for data recovery in a keymapless data storage system
US9519575B2 (en) * 2013-04-25 2016-12-13 Sandisk Technologies Llc Conditional iteration for a non-volatile device
US10763752B1 (en) 2019-06-25 2020-09-01 Chengdu Monolithic Power Systems Co., Ltd. Zero-voltage-switching flyback converter
CN105745627B (zh) 2013-08-14 2019-03-15 西部数据技术公司 用于非易失性存储器存储设备的地址转换
US9612773B2 (en) * 2013-11-21 2017-04-04 Samsung Electronics Co., Ltd. User device having a host flash translation layer (FTL), a method for transferring an erase count thereof, a method for transferring reprogram information thereof, and a method for transferring a page offset of an open block thereof
TWI533308B (zh) * 2014-03-21 2016-05-11 群聯電子股份有限公司 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元
KR102275710B1 (ko) 2015-02-02 2021-07-09 삼성전자주식회사 오버-라이트가 가능한 메모리 장치, 메모리 시스템 및 메모리 시스템의 동작방법
US9792066B2 (en) * 2015-02-23 2017-10-17 International Business Machines Corporation Handling failure of a command to add a record to a log
KR20160112135A (ko) 2015-03-18 2016-09-28 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US11386060B1 (en) 2015-09-23 2022-07-12 Amazon Technologies, Inc. Techniques for verifiably processing data in distributed computing systems
KR102517129B1 (ko) 2015-11-19 2023-04-04 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작방법
RU2636107C1 (ru) * 2016-10-28 2017-11-20 Общество с ограниченной ответственностью "Лаборатория информационно-измерительной и преобразовательной техники" Способ записи данных на накопитель цифровой информации на базе flash-памяти типа nand
CN107423229B (zh) * 2017-03-16 2020-09-01 杭州电子科技大学 一种面向页级ftl的缓冲区改进方法
CN109800180B (zh) 2017-11-17 2023-06-27 爱思开海力士有限公司 用于地址映射的方法和存储器系统
CN109800178B (zh) 2017-11-17 2023-05-16 爱思开海力士有限公司 垃圾收集方法以及用于混合地址映射的存储器系统
US12086450B1 (en) 2018-09-26 2024-09-10 Amazon Technologies, Inc. Synchronous get copy for asynchronous storage
US10877900B1 (en) 2019-06-26 2020-12-29 Western Digital Technologies, Inc. Enabling faster and regulated device initialization times
CN111143313B (zh) * 2019-12-25 2023-07-25 成都三零嘉微电子有限公司 一种提高混合映射算法的日志块读写性能的方法
US11527300B2 (en) 2020-08-26 2022-12-13 Western Digital Technologies, Inc. Level dependent error correction code protection in multi-level non-volatile memory
US11436083B2 (en) 2020-09-04 2022-09-06 Western Digital Technologies, Inc. Data address management in non-volatile memory

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1153235A (ja) * 1997-08-08 1999-02-26 Toshiba Corp ディスク記憶装置のデータ更新方法、ならびにディスク記憶制御システム
US6185663B1 (en) * 1998-06-15 2001-02-06 Compaq Computer Corporation Computer method and apparatus for file system block allocation with multiple redo
KR100389867B1 (ko) * 2001-06-04 2003-07-04 삼성전자주식회사 플래시 메모리 관리방법
US7139864B2 (en) * 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
EP1712985A1 (en) * 2005-04-15 2006-10-18 Deutsche Thomson-Brandt Gmbh Method and system for storing logical data blocks into flash-blocks in multiple non-volatile memories which are connected to at least one common data I/O bus
KR100806343B1 (ko) * 2006-10-19 2008-02-27 삼성전자주식회사 플래시 메모리를 포함한 메모리 시스템 및 그것의 맵핑테이블 관리 방법
KR100771521B1 (ko) * 2006-10-30 2007-10-30 삼성전자주식회사 멀티 레벨 셀을 포함하는 플래시 메모리 장치 및 그것의데이터 쓰기 방법
KR100885181B1 (ko) * 2007-02-06 2009-02-23 삼성전자주식회사 그룹 맵핑 동작을 수행하는 메모리 시스템 및 그것의어드레스 맵핑 방법
US8095723B2 (en) * 2007-02-16 2012-01-10 Electronics And Telecommunications Research Institute Log-based flash translation layer and operating method thereof

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101155542B1 (ko) * 2010-10-11 2012-06-18 성균관대학교산학협력단 Ssd 장치의 매핑 테이블 관리 방법
KR101153688B1 (ko) * 2010-10-15 2012-06-18 성균관대학교산학협력단 데이터 페이지들에 대해 무효화 기회를 부여하는 방법 및 이를 위한 낸드 플래시 메모리 시스템
KR20170097543A (ko) * 2016-02-18 2017-08-28 삼성전자주식회사 스트림 감지기를 포함하는 메모리 장치 및 그것의 동작 방법

Also Published As

Publication number Publication date
US20100169544A1 (en) 2010-07-01
US8261010B2 (en) 2012-09-04
KR101028929B1 (ko) 2011-04-12

Similar Documents

Publication Publication Date Title
KR101028929B1 (ko) 실시간 시스템을 위한 로그 블록 연관성 분산 방법 및 이를수행하는 플래시 메모리 장치
CN110678836B (zh) 用于键值存储的持久性存储器
Cho et al. KAST: K-associative sector translation for NAND flash memory in real-time systems
US9946642B2 (en) Distributed multimode storage management
KR101533744B1 (ko) 플래시 메모리 시스템 및 그것의 플래시 변환 계층 설계 방법
EP2939120B1 (en) Priority-based garbage collection for data storage systems
US20150212752A1 (en) Storage system redundant array of solid state disk array
KR20100021868A (ko) 플래시 메모리 장치를 위한 버퍼 캐쉬 관리 방법
US20060218347A1 (en) Memory card
KR20070060070A (ko) 최적화된 순차적인 클러스터 관리용 에프에이티 분석
KR20070099234A (ko) 외부 메모리의 부하를 줄일 수 있는 웨어 레벨링 기법에의한 플래시 파일 시스템의 동작 방법
KR20070096429A (ko) 빠른 마운팅을 지원하는 낸드 플래시 메모리에 적용되는파일시스템
KR101017067B1 (ko) 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션기법
US8209513B2 (en) Data processing system with application-controlled allocation of file storage space
KR20100115090A (ko) 버퍼를 고려한 가비지 컬렉션 기법
Xu et al. CAST: A page-level FTL with compact address mapping and parallel data blocks
Chang et al. FastRead: Improving read performance for multilevel-cell flash memory
Huang et al. Exploiting page correlations for write buffering in page-mapping multichannel SSDs
CN116364148A (zh) 一种面向分布式全闪存储系统的磨损均衡方法及系统
Chen et al. A unified framework for designing high performance in-memory and hybrid memory file systems
Lee et al. An efficient buffer management scheme for implementing a B-tree on NAND flash memory
Ryu SAT: switchable address translation for flash memory storages
Du et al. SSW: A strictly sequential writing method for open-channel SSD
Park et al. Buffer flush and address mapping scheme for flash memory solid-state disk
Chen et al. Refinery swap: An efficient swap mechanism for hybrid DRAM–NVM systems

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20140321

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee