KR101278591B1 - 플래시 메모리 시스템 및 그 동작 방법 - Google Patents

플래시 메모리 시스템 및 그 동작 방법 Download PDF

Info

Publication number
KR101278591B1
KR101278591B1 KR1020110051046A KR20110051046A KR101278591B1 KR 101278591 B1 KR101278591 B1 KR 101278591B1 KR 1020110051046 A KR1020110051046 A KR 1020110051046A KR 20110051046 A KR20110051046 A KR 20110051046A KR 101278591 B1 KR101278591 B1 KR 101278591B1
Authority
KR
South Korea
Prior art keywords
flash memory
sector information
flash
pages
garbage collection
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Fee Related
Application number
KR1020110051046A
Other languages
English (en)
Other versions
KR20120132738A (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 KR1020110051046A priority Critical patent/KR101278591B1/ko
Publication of KR20120132738A publication Critical patent/KR20120132738A/ko
Application granted granted Critical
Publication of KR101278591B1 publication Critical patent/KR101278591B1/ko
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements

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)

Abstract

개시된 기술은 플래시 메모리 시스템 및 그 동작 방법에 관한 것이다.
개시된 기술은 상위 계층이 버퍼캐시를 이용하여 플래시 메모리의 데이터를 수정하는 경우, 상기 데이터의 섹터정보를 추출하는 섹터정보 추출부; 상기 섹터정보 추출부로부터 추출된 상기 섹터정보를 플래시 변환 계층이 인식할 수 있도록 변환하는 섹터정보 변환 인터페이스; 및 상기 섹터정보 변환 인터페이스로부터 변환된 상기 섹터정보를 기초로 상기 플래시 메모리를 관리하는 플래시 변환 계층을 포함하는 플래시 메모리 시스템이다.

Description

플래시 메모리 시스템 및 그 동작 방법{SYSTEM AND OPERATING METHOD FOR FLASH MEMORY}
본 명세서에 개시된 기술은 플래시 메모리 시스템 및 그 동작 방법에 관한 것이다.
플래시 메모리는 전원이 공급되지 않아도 기록된 데이터가 소멸되지 않는 비휘발성 메모리 장치이다. 플래시 메모리는 셀과 비트 라인의 연결 상태에 따라 NAND형과 NOR 형으로 구분된다. NAND형 플래시 메모리는 쓰기 속도가 빠르고 단위 면적당 단가가 낮기 때문에, 주로 대용량 데이터 저장장치로 사용된다. NOR형 플래시 메모리는 읽기 속도가 빠른데 반하여 쓰기 속도가 느리기 때문에, 주로 코드용 메모리로 사용된다. 플래시 메모리는 다른 메모리 소자와 비교할 때, 비교적 낮은 단가로 빠른 읽기 속도를 제공할 수 있는 장점이 있다.
플래시 메모리는 쓰기와 삭제하는 데이터 단위가 다른 특징을 갖고 있다. 플래시 메모리에 데이터를 쓸 때는 페이지 단위로 데이터를 쓰지만, 삭제할 때는 페이지보다 큰 단위인 블록 단위로 삭제가 이루어 진다. 이러한 특징은 플래시 메모리를 주 메모리로 사용하는 것을 어렵게 할 뿐만 아니라, 플래시 메모리가 보조기억장치로 사용되는 경우에도 일반 하드디스크용 파일 시스템을 그대로 활용하는 것을 저해하는 요인이 된다. 따라서, 파일 시스템과 플래시 메모리 사이에 플래시 변환 계층(Flash Translation Layer)이 사용된다.
플래시 변환 계층은 주소사상 기능과 가비지 컬렉션(garbage collection) 기능으로 구성된다. 주소 사상 기능은 파일 시스템으로부터 덮어쓰기 요청을 받은 경우 해당 데이터를 원래 페이지로 덮어쓰는 대신, 다른 빈 페이지에 기록함으로써 부가적인 페이지 복사 및 삭제 연산을 감소시키는 역할을 한다. 플래시 메모리가 블록 단위로 액세스 되는 경우에, 플래시 메모리는 복수의 블록들로 분할된다. 분할된 블록에 순차적으로 할당된 번호를 물리 블록 번호라 하고, 사용자가 생각하는 분할된 블록의 가상 번호를 논리 블록 번호라 한다. 플래시 변환 계층의 맵핑 기법에 따르면 논리적으로 연속된 어드레스를 가지는 데이터가 물리적으로는 서로 상이한 위치에 기록되어 있을 수 있다. 상위 계층이 기존에 기입된 적이 있는 논리 블록 번호에 대해 기입 명령을 보내는 경우, 플래시 변환 계층은 상위 계층으로부터 제공된 데이터를 다른 위치에 쓰고, 기존 데이터를 무효화하는 기법을 사용한다. 이와 같은 플래시 변환 계층의 알고리즘적인 특성으로 인해 블록 전체가 무효화된 데이터로 채워지는 블록이 생길 수 있는데, 이러한 블록을 가비지 블록(garbage block)이라 한다. 가비지 블록은 먼저 소거 연산을 통해 기입이 가능한 상태로 변환된 후, 재사용된다. 플래시 변환 계층에서는 이러한 연산 과정을 가비지 컬렉션(garbage collection)이라 부른다. 이러한 연산이 얼마나 빠르게 수행되느냐에 따라 플래시 메모리 기반 저장장치의 성능이 좌우된다.
플래시 메모리의 가비지 컬렉션 비용 감소를 위한 기법으로 버퍼캐시 관리 기법이 있다. 버퍼캐시는 일반적으로 DRAM 혹은 SDRAM으로 구성되어 있으며, 상위 계층으로부터 요청된 읽기 및 쓰기 데이터를 임시적으로 보관하는 역할을 한다. 플래시 메모리 계층은 버퍼캐시를 통하여 요청된 읽기 및 쓰기 데이터를 처리하며, 필요할 경우 블록 삭제 연산도 수행한다.
개시된 기술이 이루고자 하는 기술적 과제는 플래시 메모리 시스템 및 그 동작 방법을 제공하는 데 있다.
상기의 기술적 과제를 해결하기 위해 개시된 기술은 상위 계층이 버퍼캐시를 이용하여 플래시 메모리의 데이터를 수정하는 경우, 상기 데이터의 섹터정보를 추출하는 섹터정보 추출부; 상기 섹터정보 추출부로부터 추출된 상기 섹터정보를 플래시 변환 계층이 인식할 수 있도록 변환하는 섹터정보 변환 인터페이스; 및 상기 섹터정보 변환 인터페이스로부터 변환된 상기 섹터정보를 기초로 상기 플래시 메모리를 관리하는 플래시 변환 계층을 포함하는 플래시 메모리 시스템을 제공한다.
상기의 기술적 과제를 해결하기 위해 개시된 기술은 플래시 메모리 시스템이 동작하는 방법에 있어서, 상위 계층이 버퍼캐시를 이용하여 플래시 메모리의 데이터를 수정하는 경우, 상기 데이터의 섹터정보를 추출하는 단계; 상기 추출된 섹터정보를 플래시 변환 계층이 인식할 수 있도록 변환하는 단계; 및 상기 변환된 섹터정보를 기초로 상기 플래시 메모리를 관리하는 단계를 포함하는 플래시 메모리 시스템의 동작 방법을 제공한다.
개시된 기술은 다음의 효과를 가질 수 있다. 다만, 특정 실시 예가 다음의 효과를 전부 포함해야 한다거나 다음의 효과만을 포함한다는 의미는 아니므로, 개시된 기술의 권리범위는 이에 의해 제한되는 것으로 이해되어서는 아니 될 것이다.
본 명세서에 의해 개시된 플래시 메모리 시스템 및 그 동작 방법은 데이터의 섹터정보를 기초로 플래시 메모리를 관리할 수 있는 장점이 있다. 본 명세서에 의해 개시된 플래시 메모리 시스템 및 그 동작 방법은 섹터정보를 상위 계층에서 버퍼캐시로 전달하는 명령으로부터 추출할 수 있는 장점이 있다. 본 명세서에 의해 개시된 플래시 메모리 시스템 및 그 동작 방법은 플래시 메모리의 블록 당 수정 요청이 발생한 페이지의 개수를 기초로 가비지 컬렉션을 수행할 수 있는 장점이 있다.
도 1은 개시된 기술의 일 실시예에 따른 플래시 메모리 시스템을 설명하기 위한 도면이다.
도 2는 섹터정보를 추출하는 것을 설명하기 위한 도면이다.
도 3은 개시된 기술의 일 실시예에 따라 가비지 컬렉션을 수행하는 것을 설명하기 위한 도면이다.
도 4는 개시된 기술의 일 실시예에 따른 플래시 메모리 시스템이 동작하는 방법을 설명하기 위한 순서도이다.
도 5는 개시된 기술의 섹터정보 변환 인터페이스를 가상 머신 환경에서 구현하는 것을 나타내는 도면이다.
도 6은 개시된 기술의 시뮬레이션 결과를 나타내는 도면이다.
도 7은 개시된 기술의 시뮬레이션 결과를 나타내는 도면이다.
이하, 첨부한 도면들을 참조하여, 본 출원의 실시 예들을 보다 상세하게 설명하고자 한다. 그러나 본 출원에 개시된 기술은 여기서 설명되는 실시 예들에 한정되지 않고 다른 형태로 구체화될 수도 있다. 단지, 여기서 소개되는 실시 예들은 개시된 내용이 철저하고 완전해질 수 있도록 그리고 당업자에게 본 출원의 사상이 충분히 전달될 수 있도록 하기 위해 제공되는 것이다.
한편, 본 출원에서 서술되는 용어의 의미는 다음과 같이 이해되어야 할 것이다. “제1 ” 또는 “제2 ” 등의 용어는 하나의 구성요소를 다른 구성요소로부터 구별하기 위한 것으로 이들 용어들에 의해 권리범위가 한정되어서는 아니 된다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
또, 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한 복수의 표현을 포함하는 것으로 이해되어야 하고, “포함하다” 또는 “가지다”등의 용어는 기술되는 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
또, 방법 또는 동작 방법을 수행함에 있어서, 상기 방법을 이루는 각 과정들은 문맥상 명백하게 특정 순서를 기재하지 않은 이상 명기된 순서와 다르게 일어날 수 있다. 즉, 각 과정들은 명기된 순서와 동일하게 일어날 수도 있고 실질적으로 동시에 수행될 수도 있으며 반대의 순서대로 수행될 수도 있다.
도 1은 개시된 기술의 일 실시예에 따른 플래시 메모리 시스템(100)을 설명하기 위한 도면이다. 도 1을 참조하면, 플래시 메모리 시스템(100)은 섹터정보 추출부(110), 섹터정보 변환 인터페이스(120) 및 플래시 메모리 기반 디스크(130)를 포함한다.
섹터정보 추출부(110)는 상위 계층(10)이 버퍼캐시(20)를 이용하여 플래시 메모리(132)의 데이터를 수정하는 경우, 데이터의 섹터정보를 추출한다. 섹터정보 추출부(110)는 상위 계층(10)에서 버퍼캐시(20)로 전달되는 명령으로부터 섹터정보를 추출할 수 있다. 섹터정보 추출부(110)는 소프트웨어 모듈, 소프트웨어 모듈이 실행되는 프로세서 또는 소프트웨어 모듈이 기록된 컴퓨터 판독매체 등으로 구체화 될 수 있다. 이때, 소프트웨어 모듈은 여러 가지 프로그래밍 언어로 작성될 수 있고, 실행 가능한 기계어 코드로 컴파일 될 수 있으며, 컴퓨터 코드 또는 명령어 집합 등을 포함하는 포괄적인 의미를 갖는다.
섹터정보 추출부(110)는 상위 계층(10)에서 버퍼캐시(20)로 데이터의 쓰기, 수정 등의 명령이 전달될 때, 상기 명령으로부터 섹터정보를 추출하도록 설계될 수 있다. 상위 계층(10)은 운영체제 또는 응용프로그램 등이 될 수 있다. 버퍼캐시(20)는 컴퓨터의 주기억 장치와 플래시 메모리(132) 사이에서 데이터를 주고받을 때 정보를 임시로 기억해 두고 사용할 수 있는 공간이다. 버퍼캐시(20)는 주기억 장치의 한 영역에 최근에 사용된 데이터의 내용을 기억하는 버퍼영역으로 할당된 것을 말하는데, 플래시 메모리 기반 디스크(130)내에 플래시 변환 계층(131)과 함께 존재하도록 설계될 수 있다.
섹터정보 변환 인터페이스(120)는 섹터정보 추출부(110)로부터 추출된 섹터정보를 플래시 변환 계층(131)이 인식할 수 있도록 변환한다. 섹터정보 추출부(110)로부터 추출된 섹터정보는 플래시 변환 계층(131)이 바로 인식할 수 없으므로, 섹터정보 변환 인터페이스(120)에서 섹터정보를 변환하여 플래시 변환 계층(131)으로 전달한다. 섹터정보 변환 인터페이스(120)는 디스크 프로토콜(SATA, SCSI 등)의 종류에 따라 구현되는 방법이 달라질 수 있다. 즉, 상위 계층(10)과 플래시 변환 계층(131) 상호간의 통신방식, 데이터형식, 전송속도 등은 다르기 때문에 통일된 통신방식이 필요하고, 섹터정보 변환 인터페이스(120)은 상위 계층(10)의 통신방식에 따른 섹터정보를 플래시 변환 계층(131)의 통신방식으로 변환하는 기능을 수행한다.
플래시 메모리 기반 디스크(130)는 플래시 변환 계층(131)과 플래시 메모리(132)를 포함한다. 플래시 변환 계층(131)은 섹터정보 변환 인터페이스(120)로부터 변환된 섹터정보를 기초로 플래시 메모리(132)를 관리한다. 플래시 변환 계층(131)은 플래시 메모리(132)에서 불필요한 쓰기 또는 삭제 과정 등을 제거하여 플래시 메모리(132)를 관리함으로써, 플래시 메모리 기반 디스크(130)의 성능을 향상시킬 수 있다. 또한, 플래시 변환 계층(131)은 변환된 섹터정보를 기초로 가비지 컬렉션을 수행할 수 있다. 플래시 변환 계층(131)은 변환된 섹터정보를 통해 상위 계층(10)에서 수정 요청이 발생하였으나, 플래시 메모리(132)에 수정된 데이터가 기록되기 전에 플래시 메모리(132)의 어느 블록의 어느 페이지가 수정될 것인지를 알 수 있다. 따라서, 플래시 변환 계층(131)은 수정 요청이 발생한 페이지 정보를 이용하여, 불필요한 쓰기 또는 삭제 과정 등을 제거할 수 있다. 구체적으로 플래시 변환 계층(131)은 변환된 섹터정보를 플래시 메모리(132)의 페이지 정보로 변환하고, 블록 당 수정 요청이 발생한 페이지 개수를 기초로 가비지 컬렉션을 수행할 수 있다. 이때, 플래시 변환 계층(131)은 플래시 메모리(132)의 블록들의 무효 페이지 개수 및 수정 요청이 발생한 페이지 개수를 기초로 빅팀(VICTIM) 블록을 선정하여 가비지 컬렉션을 수행할 수 있다. 일 예로서, 플래시 변환 계층(131)은 무효 페이지 개수에서 수정 요청이 발생한 페이지 개수를 뺀 값이 가장 큰 값을 갖는 블록을 빅팀 블록으로 선정하여 가비지 컬렉션을 수행할 수 있다. 빅팀 블록이란, 플래시 변환 계층(131)이 가비지 컬렉션을 수행할 때, 저장공간 확보를 위해 데이터를 삭제하는 블록을 의미한다.
도 2는 개시된 기술의 일 실시예에 따른 섹터정보를 추출하는 것을 설명하기 위한 도면이다. 도 2를 참조하면, 섹터정보 추출부(110)는 명령으로부터 섹터정보를 추출한다. 상위 계층(10)은 버퍼캐시(20)로 데이터의 수정 명령을 전달할 수 있다. 명령은 수정되는 데이터의 섹터정보 및 수정내용 등을 포함할 수 있다. 섹터정보 추출부(110)는 명령에 포함된 정보들 중에서 섹터정보를 추출한다. 섹터정보는 수정되는 데이터의 저장위치에 관한 정보이다. 일 실시예로서, 섹터정보는 섹터넘버 및 길이 정보를 포함할 수 있다. 섹터정보는 상기 섹터넘버부터 상기 길이만큼의 구역에 저장되어 있는 데이터가 상위 계층(10)에 의해 수정되었음을 나타낼 수 있다.
도 3은 개시된 기술의 일 실시예에 따른 플래시 변환 계층(131)이 가비지 컬렉션을 수행하는 것을 설명하기 위한 도면이다. 섹터정보는 블록1의 페이지4 및 페이지5에 데이터의 수정 요청이 발생하였음을 나타낸다. 플래시 변환 계층(131)은 섹터정보를 기초로 가비지 컬렉션을 수행한다. 일 실시예로서, 블록1(132A)은 무효 페이지를 3개, 수정요청 페이지를 2개 포함하고, 블록2(132B)는 무효 페이지를 2개, 수정요청 페이지를 0개 포함하고, 블록N(132N)은 무효 페이지를 1개, 수정요청 페이지를 0개 포함한다. 만약, 플래시 변환 계층(131)이 섹터정보 없이 가비지 컬렉션을 수행한다면, 무효 페이지 개수가 가장 큰 블록1(132A)를 빅팀 블록으로 선정할 수 있다. 무효 페이지 개수가 가장 큰 블록을 삭제하는 것이 가장 효율적이기 때문이다. 하지만, 블록1(132A)의 페이지4 및 페이지5는 수정 요청에 따라 수정될 페이지이기 때문에, 블록1(132A)을 빅팀 블록으로 선정하여, 가비지 컬렉션을 하면, 블록1(132A)의 페이지4 및 페이지5를 다른 블록으로 복사해야 한다. 블록1(132A)의 페이지4 및 페이지5가 다른 블록에 복사되고, 수정 요청에 따라 플래시 메모리(132)의 페이지를 수정하면, 다른 블록에 복사된 페이지4 및 페이지5는 무효 페이지가 되고, 수정 데이터를 또 다른 페이지에 쓰게 된다. 이러한 과정은 다른 블록에 무효 페이지를 증가시키게 된다. 플래시 메모리(132)는 불필요한 데이터로 인해 저장 공간이 부족하게 되며, 플래시 변환 계층(131)이 더 많은 가비지 컬렉션을 수행하게 만들 수 있다. 따라서, 섹터정보를 통해 블록1(132A)의 페이지4 및 페이지5가 수정될 것을 미리 반영하여 가비지 컬렉션을 수행함으로써, 메모리 연산을 줄일 수 있다. 일 예로서, 블록 당 무효 페이지의 개수에서 수정 요청 페이지의 개수를 뺀 값이 가장 큰 값을 갖는 블록을 빅팀블록으로 선정할 수 있다. 상술한 방법에 따르면, 블록1(132A)은 무효 페이지 개수 3개에서 수정요청 페이지 개수 2를 빼면 1의 값을 갖고, 블록2(132B)는 무효 페이지 개수 2에서 수정요청 페이지 개수 0을 빼면 2의 값을 갖고, 블록N(132N)는 무효 페이지 개수 1에서 수정요청 페이지 개수 0을 빼면 1의 값을 갖는다. 따라서, 플래시 변환 계층(131)은 블록2(132B)를 빅팀 블록으로 선정하여 가비지 컬렉션을 수행할 수 있고, 불필요한 쓰기 및 삭제 과정을 제거할 수 있다.
도 4는 개시된 기술의 일 실시예에 따른 플래시 메모리 시스템(100)이 동작하는 방법을 설명하기 위한 순서도이다. 도 4를 참조하면, 플래시 메모리 시스템(100)이 동작하는 방법에 있어서, S10블록에서 상위 계층이 버퍼캐시를 이용하여 플래시 메모리의 데이터를 수정하는 경우, 데이터의 섹터정보를 추출한다. S20블록에서 추출된 섹터정보를 플래시 변환 계층이 인식할 수 있도록 변환한다. S30블록에서 섹터정보를 기초로 플래시 메모리를 관리한다.
플래시 메모리 시스템(100)이 동작하는 방법에 있어서, 섹터정보를 기초로 플래시 메모리(132)를 관리하는 단계는 변환된 섹터정보를 기초로 플래시 메모리(132)에서 불필요한 쓰기 또는 삭제 과정을 제거하여 플래시 메모리(132)를 관리하는 단계를 포함한다. 또한, 플래시 변환 계층(131)이 변환된 섹터정보를 기초로 플래시 메모리(132)에서 가비지 컬렉션을 수행하는 단계를 포함할 수 있다. 보다 구체적으로 플래시 변환 계층(131)이 섹터정보를 플래시 메모리(132)의 페이지 정보로 변환하고, 블록 당 수정 요청이 발생한 페이지 개수를 기초로 가비지 컬렉션을 수행할 수 있으며, 플래시 변환 계층(131)이 블록 당 수정 요청이 발생한 페이지의 개수 정보를 저장하고, 플래시 메모리(132)의 블록들의 무효 페이지 개수 및 수정 요청이 발생한 페이지 개수를 기초로 빅팀 블록을 선정하여 가비지 컬렉션을 수행할 수 있다. 일 예로서, 플래시 변환 계층(131)은 플래시 메모리(132)의 블록들의 무효 페이지 개수에서 수정 요청이 발생한 페이지 개수를 뺀 값이 가장 큰 값을 갖는 블록을 빅팀 블록으로 선정하여 가비지 컬렉션을 수행할 수 있다.
도 5는 개시된 기술의 섹터정보 추출부(110)를 가상 머신 환경에 적용한 것을 나타내는 도면이며, 도 6은 개시된 기술의 시뮬레이션 결과를 나타내는 도면이며, 도 7은 개시된 기술의 시뮬레이션 결과를 나타내는 도면이다. 이하에서는 도 5 내지 도 7을 통하여 개시된 기술이 플래시 메모리(132)의 관리 효율을 증가시킴을 증명한다.
1. 실험 개요
Xen을 이용한 가상 머신 환경에 본 발명을 적용한다. Xen 가상 머신 환경에서 섹터정보 추출부(110)를 구현하고, 읽기/쓰기/수정 요청이 포함된 디스크 요청 트레이스를 수집한 뒤, 섹터정보 변환 인터페이스(120)를 지원하는 플래시 메모리 기반 디스크 시뮬레이터를 이용하여 성능을 측정한다.
2. 가상 머신 환경에서 섹터정보 추출부(110)를 구현
섹터정보 추출부(110)는 상위 계층(10)에 의한 플래시 메모리 기반 디스크(130)에 저장된 데이터의 수정을 일반적인 버퍼캐시 단계에서 미리 파악하고, 이에 관한 섹터정보를 플래시 메모리 기반 디스크(130)에 전달하는 소프트웨어 모듈, 소프트웨어 모듈이 실행되는 프로세서 또는 소프트웨어 모듈이 기록된 컴퓨터 판독매체 등으로 구체화 될 수 있다. 개시된 발명이 적용되는 시스템에 따라, 섹터정보 추출부(110)를 구현하는 형태는 달라질 수 있다. 기존의 시스템 구성 요소들을 수정하여 구현되거나, 새로운 모듈을 추가하여 구현 될 수 있다. 본 실험예에서는 가상 머신 환경에서 섹터정보 추출부(110)를 구현하였다.
도 5는 Xen 환경에서 구현된 섹터정보 추출부(110)를 도식화 한 것이다. 가상 머신 환경에서 DomainU(210) 의 응용프로그램(211)이 플래시 메모리 기반 디스크(130)에 저장된 데이터를 수정하면 그 수정 내용이 DomainU(210) 의 버퍼캐시에 반영된 후, 이를 디스크에 기록하는 쓰기 요청이 DomainU(210) 의 GuestOS 와 DomainO(220) 의 GuestOS 를 거쳐서 실제 디스크(300)에 전달된다. 응용프로그램(211)은 파일 위치 정보(212)를 GuestOS로 전달하고, DomainU(210) 에 있는 GuestOS 의 VFS 계층을 수정하면 버퍼캐시에 반영되는 데이터 수정 요청과 관련된 정보, 즉 가상 디스크의 위치 정보(213)를 얻을 수 있다. 가상 디스크의 위치 정보(213)를 DomainO(220) 의 GuestOS 에 전달하면 실제 디스크의 위치 정보(221)를 알 수 있다. 실제 디스크의 위치 정보(221)를 섹터정보 변환 인터페이스(120)를 통해 실제 디스크(300)에 전달한다.
3. 디스크 요청 트레이스 수집
총 6개의 가상 머신이 각각 특성이 다른 벤치마크(iozone, postmark, sysbench-OLTP)를 수행하고 디스크 요청 트레이스를 수집하였다. 트레이스는 (timestamp, sector number, length) 형태의 디스크 읽기/쓰기 요청과 섹터정보 추출부에 의해 만들어진 섹터 수정 요청을 포함한다.
4. 시뮬레이션
섹터정보 변환 인터페이스(120)를 지원하는 플래시 메모리 기반 디스크 시뮬레이터를 이용하여 시뮬레이션을 수행하였다. 일반적인 페이지 맵핑 구조의 플래시 변환 계층(131)을 사용하였다. 상술한 바와 같이, 무효 페이지의 개수에서 수정 요청이 발생한 페이지의 개수의 차이가 가장 큰 값을 갖는 블록을 빅팀 블록을 선정하는 가비지 컬렉션 알고리즘을 사용하였다. 플래시 메모리 기반 디스크 시뮬레이터는 128 GB 크기, 4-channel, 4-way 설정의 플래시 메모리 기반 디스크를 시뮬레이션 한다.
시뮬레이션 결과는 각 트레이스를 재연할 때 수행되는 플래시 메모리 연산의 개수이며, read/write/read-modify-write 및 가비지 컬렉션을 수행할 때 발생하는 valid copy/ erase 연산을 포함한다. 이들 중에서 가비지 컬렉션을 수행할 대 발생하는 valid copy/ erase 연산들이 플래시 변환 계층의 오버헤드로 분류되며 일반적으로 오버헤드가 적을수록 플래시 메모리 기반 디스크(132)의 성능이 높아진다.
도 6은 6개의 가상 머신 중 3개는 sysbench, 나머지 3개는 iozone을 수행한 경우 시뮬레이션 결과를 나타내는 표이다.
도 7은 6개의 가상 미신 중 3개는 postmark, 나머지 3개는 iozone을 수행한 경우 시뮬레이션 결과를 나타내는 표이다.
도 6 및 도 7을 참조하면, 섹터정보 변환 인터페이스(120)가 적용된 결과 플래시 변환 계층(131)에서 가비지 컬렉션을 수행할 때 발생하는 플래시 메모리 연산이 줄어들었음을 알 수 있다. 도 6을 참조하면, valid copy 및 erase 연산은 각각 59.59% 및 73.88% 감소하였음을 알 수 있다. 도 7을 참조하면 valid copy 및 erase 연산은 각각 70.53% 및 79.21% 감소하였음을 알 수 있다.
상술한 시뮬레이션 결과를 참조할 때, 개시된 발명의 일 실시예에 따른 플래시 메모리 시스템(100)은 플래시 변환 계층(131)의 valid copy 및 erase 연산을 감소시켜 플래시 메모리(132)의 관리 성능을 향상시킬 수 있다.

Claims (14)

  1. 플래시 메모리의 데이터가 버퍼캐시에 캐싱된 후 운영체제 또는 응용프로그램이 상기 버퍼캐시에 캐싱된 상기 데이터를 수정하는 명령을 전달한 경우 상기 명령에서 상기 데이터가 플래시 메모리에 저장될 위치정보인 섹터정보를 추출하는 섹터정보 추출부;
    상기 섹터정보 추출부로부터 추출된 상기 섹터정보를 플래시 변환 계층이 인식할 수 있도록 변환하는 섹터정보 변환 인터페이스; 및
    상기 섹터정보 변환 인터페이스로부터 변환된 상기 섹터정보를 기초로 상기 플래시 메모리에 대한 주소 사상 또는 가비지 컬렉션 중 하나 이상을 수행하는 플래시 변환 계층;
    을 포함하는 플래시 메모리 시스템.
  2. 제 1항에 있어서,
    상기 플래시 변환 계층은 상기 섹터정보 변환 인터페이스로부터 변환된 상기 섹터정보를 기초로 상기 플래시 메모리에서 불필요한 쓰기 또는 삭제 과정을 제거하여 상기 플래시 메모리를 관리하는 플래시 메모리 시스템.
  3. 제 1항에 있어서,
    상기 섹터정보 추출부는 상기 운영체제 또는 상기 응용프로그램에서 상기 버퍼캐시로 전달하는 명령으로부터 상기 섹터정보를 추출하는 플래시 메모리 시스템.
  4. 제 1항에 있어서,
    상기 플래시 변환 계층이 상기 변환된 섹터정보를 기초로 상기 플래시 메모리에서 가비지 컬렉션을 수행하는 플래시 메모리 시스템.
  5. 제 1항에 있어서,
    상기 플래시 변환 계층은 상기 변환된 섹터정보를 상기 플래시 메모리의 페이지 정보로 변환하고, 블록 당 수정 요청이 발생한 페이지 개수를 기초로 가비지 컬렉션을 수행하는 플래시 메모리 시스템.
  6. 제 5항에 있어서,
    상기 플래시 변환 계층이 블록 당 상기 수정 요청이 발생한 페이지의 개수 정보를 저장하고, 상기 플래시 메모리의 블록들의 무효 페이지 개수 및 상기 수정 요청이 발생한 페이지 개수를 기초로 빅팀 블록을 선정하여 가비지 컬렉션을 수행하는 플래시 메모리 시스템.
  7. 제 6항에 있어서,
    상기 플래시 변환 계층은 상기 플래시 메모리의 블록들의 상기 무효 페이지 개수에서 상기 수정 요청이 발생한 페이지 개수를 뺀 값이 가장 큰 값을 갖는 블록을 빅팀 블록으로 선정하여 가비지 컬렉션을 수행하는 플래시 메모리 시스템.
  8. 플래시 메모리 시스템이 동작하는 방법에 있어서,
    플래시 메모리의 데이터가 버퍼캐시에 캐싱된 후 운영체제 또는 응용프로그램이 상기 버퍼캐시에 캐싱된 상기 데이터를 수정하는 명령을 전달한 경우 상기 명령에서 상기 데이터가 플래시 메모리에 저장될 위치정보인 섹터정보를 추출하는 단계;
    상기 추출된 섹터정보를 플래시 변환 계층이 인식할 수 있도록 변환하는 단계; 및
    상기 변환된 섹터정보를 기초로 상기 플래시 메모리에 대한 주소 사상 또는 가비지 컬렉션 중 하나 이상을 수행하는 단계;
    를 포함하는 플래시 메모리 시스템의 동작 방법.
  9. 삭제
  10. 제 8항에 있어서,
    상기 섹터정보는 상기 운영체제 또는 상기 응용프로그램에서 상기 버퍼캐시로 전달되는 명령으로부터 추출되는 플래시 메모리 시스템의 동작 방법.
  11. 제 8항에 있어서,
    상기 플래시 변환 계층이 상기 변환된 섹터정보를 기초로 상기 플래시 메모리에서 가비지 컬렉션 수행하는 플래시 메모리 시스템의 동작 방법.
  12. 제 8항에 있어서,
    상기 플래시 변환 계층이 상기 섹터정보를 상기 플래시 메모리의 페이지 정보로 변환하고, 블록 당 수정 요청이 발생한 페이지 개수를 기초로 가비지 컬렉션을 수행하는 플래시 메모리 시스템의 동작 방법.
  13. 제 12항에 있어서,
    상기 플래시 변환 계층이 블록 당 상기 수정 요청이 발생한 페이지의 개수 정보를 저장하고, 상기 플래시 메모리의 블록들의 무효 페이지 개수 및 상기 수정 요청이 발생한 페이지 개수를 기초로 빅팀 블록을 선정하여 가비지 컬렉션 수행하는 플래시 메모리 시스템의 동작 방법.
  14. 제 13항에 있어서,
    상기 플래시 변환 계층은 상기 플래시 메모리의 블록들의 상기 무효 페이지 개수에서 상기 수정 요청이 발생한 페이지 개수를 뺀 값이 가장 큰 값을 갖는 블록을 빅팀 블록으로 선정하여 가비지 컬렉션을 수행하는 플래시 메모리 시스템의 동작 방법.
KR1020110051046A 2011-05-30 2011-05-30 플래시 메모리 시스템 및 그 동작 방법 Expired - Fee Related KR101278591B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020110051046A KR101278591B1 (ko) 2011-05-30 2011-05-30 플래시 메모리 시스템 및 그 동작 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110051046A KR101278591B1 (ko) 2011-05-30 2011-05-30 플래시 메모리 시스템 및 그 동작 방법

Publications (2)

Publication Number Publication Date
KR20120132738A KR20120132738A (ko) 2012-12-10
KR101278591B1 true KR101278591B1 (ko) 2013-06-25

Family

ID=47516204

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110051046A Expired - Fee Related KR101278591B1 (ko) 2011-05-30 2011-05-30 플래시 메모리 시스템 및 그 동작 방법

Country Status (1)

Country Link
KR (1) KR101278591B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10635582B2 (en) 2017-06-12 2020-04-28 SK Hynix Inc. Memory system for selecting source memory block in garbage collection and operating method of the same

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080042850A (ko) * 2005-08-03 2008-05-15 쌘디스크 코포레이션 강화된 호스트 인터페이스
KR20100042455A (ko) * 2008-10-16 2010-04-26 삼성전자주식회사 플래시 메모리 시스템 및 그것의 플래시 변환 계층 설계 방법
KR20100091782A (ko) * 2009-02-11 2010-08-19 (주)인디링스 고체 상태 디스크 시스템에서 버퍼 캐시의 프로그래밍 방법및 장치
KR20100115090A (ko) * 2009-04-17 2010-10-27 서울대학교산학협력단 버퍼를 고려한 가비지 컬렉션 기법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080042850A (ko) * 2005-08-03 2008-05-15 쌘디스크 코포레이션 강화된 호스트 인터페이스
KR20100042455A (ko) * 2008-10-16 2010-04-26 삼성전자주식회사 플래시 메모리 시스템 및 그것의 플래시 변환 계층 설계 방법
KR20100091782A (ko) * 2009-02-11 2010-08-19 (주)인디링스 고체 상태 디스크 시스템에서 버퍼 캐시의 프로그래밍 방법및 장치
KR20100115090A (ko) * 2009-04-17 2010-10-27 서울대학교산학협력단 버퍼를 고려한 가비지 컬렉션 기법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10635582B2 (en) 2017-06-12 2020-04-28 SK Hynix Inc. Memory system for selecting source memory block in garbage collection and operating method of the same

Also Published As

Publication number Publication date
KR20120132738A (ko) 2012-12-10

Similar Documents

Publication Publication Date Title
US8521949B2 (en) Data deleting method and apparatus
US9697116B2 (en) Storage system and writing method thereof
US8364931B2 (en) Memory system and mapping methods using a random write page mapping table
KR102725910B1 (ko) 사용자 데이터에 대해 선별 잠재 노출 맵핑을 수행하기 위한 장치, 방법, 및 다중 모드 저장 장치
US8583879B2 (en) Data storage device, storing medium access method and storing medium thereof
JP5983019B2 (ja) 制御装置、記憶装置、記憶制御方法
CN104484283B (zh) 一种降低固态硬盘写放大的方法
CN105718530B (zh) 文件存储系统及其文件存储控制方法
CN105930282B (zh) 一种用于nand flash的数据缓存方法
US20120254514A1 (en) Memory system, controller, and method for controlling memory system
JP2008198208A (ja) ホストデータ処理装置の動作方法、ホストデータ処理装置並びにデータ格納装置
WO2016082524A1 (zh) 一种进行数据存储的方法、装置及系统
US20110208898A1 (en) Storage device, computing system, and data management method
CN103294604A (zh) 闪存器件和使用闪存器件的电子设备
CN109671458A (zh) 管理闪存模块的方法及相关的闪存控制器
KR20100115090A (ko) 버퍼를 고려한 가비지 컬렉션 기법
US20120191897A1 (en) Non-volatile memory system and management method thereof
CN102521114B (zh) 一种虚拟化环境下的文件系统日志存储系统
KR101374065B1 (ko) 칩 레벨 평행 플래시 메모리를 위한 정보 분별 방법 및 장치
KR20140094278A (ko) 반도체 장치 및 이의 동작 방법
US20100318726A1 (en) Memory system and memory system managing method
CN110515550B (zh) 一种sata固态硬盘冷热数据分离的方法及其装置
KR101191650B1 (ko) 낸드 플래시 메모리에서 데이터의 주소를 사상시키는 장치 및 방법
KR100995546B1 (ko) 낸드 플래시 메모리와 비휘발성 램을 사용하는 하이브리드 저장 장치 기반의 데이터베이스 시스템 및 데이터베이스 시스템에서 데이터를 업데이트하는 방법
KR101278591B1 (ko) 플래시 메모리 시스템 및 그 동작 방법

Legal Events

Date Code Title Description
A201 Request for examination
PA0109 Patent application

St.27 status event code: A-0-1-A10-A12-nap-PA0109

PA0201 Request for examination

St.27 status event code: A-1-2-D10-D11-exm-PA0201

D13-X000 Search requested

St.27 status event code: A-1-2-D10-D13-srh-X000

D14-X000 Search report completed

St.27 status event code: A-1-2-D10-D14-srh-X000

PN2301 Change of applicant

St.27 status event code: A-3-3-R10-R11-asn-PN2301

St.27 status event code: A-3-3-R10-R13-asn-PN2301

PN2301 Change of applicant

St.27 status event code: A-3-3-R10-R11-asn-PN2301

St.27 status event code: A-3-3-R10-R13-asn-PN2301

R18-X000 Changes to party contact information recorded

St.27 status event code: A-3-3-R10-R18-oth-X000

PE0902 Notice of grounds for rejection

St.27 status event code: A-1-2-D10-D21-exm-PE0902

P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

P13-X000 Application amended

St.27 status event code: A-2-2-P10-P13-nap-X000

PG1501 Laying open of application

St.27 status event code: A-1-1-Q10-Q12-nap-PG1501

PE0902 Notice of grounds for rejection

St.27 status event code: A-1-2-D10-D21-exm-PE0902

E13-X000 Pre-grant limitation requested

St.27 status event code: A-2-3-E10-E13-lim-X000

P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

P13-X000 Application amended

St.27 status event code: A-2-2-P10-P13-nap-X000

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

St.27 status event code: A-1-2-D10-D22-exm-PE0701

GRNT Written decision to grant
PR0701 Registration of establishment

St.27 status event code: A-2-4-F10-F11-exm-PR0701

PR1002 Payment of registration fee

Fee payment year number: 1

St.27 status event code: A-2-2-U10-U11-oth-PR1002

PG1601 Publication of registration

St.27 status event code: A-4-4-Q10-Q13-nap-PG1601

FPAY Annual fee payment

Payment date: 20160328

Year of fee payment: 4

PR1001 Payment of annual fee

Fee payment year number: 4

St.27 status event code: A-4-4-U10-U11-oth-PR1001

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000

FPAY Annual fee payment

Payment date: 20170329

Year of fee payment: 5

PR1001 Payment of annual fee

Fee payment year number: 5

St.27 status event code: A-4-4-U10-U11-oth-PR1001

P22-X000 Classification modified

St.27 status event code: A-4-4-P10-P22-nap-X000

LAPS Lapse due to unpaid annual fee
PC1903 Unpaid annual fee

Not in force date: 20180620

Payment event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE

St.27 status event code: A-4-4-U10-U13-oth-PC1903

PC1903 Unpaid annual fee

Ip right cessation event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE

Not in force date: 20180620

St.27 status event code: N-4-6-H10-H13-oth-PC1903

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000

PN2301 Change of applicant

St.27 status event code: A-5-5-R10-R11-asn-PN2301

St.27 status event code: A-5-5-R10-R13-asn-PN2301

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000