KR20080045833A - 플래쉬 메모리 관리 방법 및 이를 이용하는 플래쉬 메모리시스템 - Google Patents
플래쉬 메모리 관리 방법 및 이를 이용하는 플래쉬 메모리시스템 Download PDFInfo
- Publication number
- KR20080045833A KR20080045833A KR1020060114988A KR20060114988A KR20080045833A KR 20080045833 A KR20080045833 A KR 20080045833A KR 1020060114988 A KR1020060114988 A KR 1020060114988A KR 20060114988 A KR20060114988 A KR 20060114988A KR 20080045833 A KR20080045833 A KR 20080045833A
- Authority
- KR
- South Korea
- Prior art keywords
- block
- flash memory
- write command
- merge operation
- host
- 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/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
플래쉬 메모리 관리 방법 및 이를 이용하는 플래쉬 메모리 시스템이 개시된다. 플래쉬 메모리 관리 방법은 템포러리 블록을 사용하여 쓰기 명령을 수행하면서 로그 블록과 데이터 블록을 프리 블록에 점진적으로 머지시킨다. 따라서 머지시간이 긴 경우에 발생하는 타임 아웃을 방지할 수 있다.
Description
도 1은 도 1은 본 발명의 일 실시예에 따른 플래쉬 메모리 시스템의 구성을 나타내는 개략적인 블록도이다.
도 2a 내지 도 2c는 호스트에서 하나의 페이지에 대한 쓰기 명령이 있을 때 플래쉬 메모리가 머지 되는 과정을 나타낸다.
도 3a 내지 도 3c는 호스트로부터의 쓰기 명령이 복수의 페이지에 대한 쓰기 명령일 경우에 플래쉬 메모리가 머지되는 과정을 나타낸다.
도 4는 도 4는 호스트가 아이들 상태에 있을 때 백그라운드 오퍼레이션을 통한 머지를 나타내는 블록도이다.
도 5는 본 발명의 일 실시예에 따른 플래쉬 메모리의 관리 방법을 나타내는 흐름도이다.
본 발명은 플래쉬 메모리 장치에 관한 것으로, 더욱 상세하게는 플래쉬 변환 레이어를 이용하는 플래쉬 메모리 장치에 관한 것이다.
플래쉬 메모리는 저전력, 비휘발성, 물리적 안정성 등의 특징을 가지며, 반도체 공정이 발전함에 따라 용량이 점점 커지는 반면 가격은 점점 낮아지고 있다. 지금까지 대용량 저장장치로 널리 사용되던 디스크 저장매체는 비용면에서 가장 효과적인 대용량 저장장치이지만, 충격에 취약하고 모터와 암(arm) 등 움직이는 기계 파트가 있어 물리적 안정성이 낮고 그러한 기계 파트를 위한 정교한 컨트롤러가 필요하며 소형화에 한계가 있고, 데이터의 신뢰성이 비교적 떨어진다. 플래쉬 메모리는 움직이거나 마모되는 부분이 없어 물리적 충격에 강하고 컨트롤러가 간단하며 갈수록 소형화되고 있기 때문에 이러한 디스크 저장 매체를 대체할 유력한 매체가 되고 있다. 이를 위해 플래쉬 메모리에 최적화된 파일 관리 기법들도 개발되고 있지만, 종래의 시스템의 파일 관리 기법의 설계 변경없이 종래의 디스크 저장매체 대신 플래쉬 메모리가 사용될 수 있도록 플래쉬 메모리의 컨트롤러를 설계하는 것이 더 좋은 접근 방법일 것이다.
종래의 디스크 저장매체는 섹터(sector) 단위로 읽고 쓰이는데, 대부분의 플래쉬 메모리는 섹터 단위로 읽을 수 있고, 초기화된 빈 섹터라면 섹터 단위로 쓸 수도 있다. 그러나, 디스크 저장매체는 직접 덮어쓰기(overwrite)를 할 수 있는 반면, 플래쉬 메모리는 그 물리적인 구조적 제약 때문에 바로 덮어쓰는 동작이 어렵다. 플래쉬 메모리는 덮어쓰기 동작 시에 먼저 페이지 또는 블록 전체를 소거(erase)한 후에 새로운 데이터로 업데이트된 페이지 또는 블록 전체를 새로 프로그램해야 한다. 한편, 소거 동작은 읽기 동작이나 쓰기 동작에 비해 상대적으로 매우 긴 시간을 필요로 하는데, 각 동작마다 걸리는 시간이 큰 차이가 있는 것은 디 스크 저장매체를 대체하는 데에 큰 걸림돌이다. 이에 따라, 디스크 저장매체를 사용하듯이 플래쉬 메모리를 섹터 단위로 사용하기 위해, 호스트(플래쉬 메모리를 저장매체로 이용하는 시스템)와 플래쉬 메모리를 중계할 수 있는 플래쉬 변환 계층(flash translation layer, FTL)이 도입되었다.
FTL은 플래쉬 메모리에 대해 섹터 단위로 데이터를 입출력할 수 있도록 하고, 내부적으로는 동작마다 큰 시간차가 있지만 외부적으로 그러한 점들이 드러나지 않도록 관리한다. 플래쉬 메모리의 소거 동작은 한 블록당 10만회 정도의 제한적인 회수만 가능하기 때문에, 소거 동작 자체가 최소화되도록 관리되어야 할뿐 아니라, 어느 특정 블록에서 반복적으로 소거 동작이 일어나지 않도록 관리되여야 한다. 따라서, 어떤 블록의 일부 데이터를 업데이트해야 할 때에, 그 블록을 소거하고 재기록하는 것보다는 비어있는 다른 블록에 업데이트된 데이터를 기록하는 것이 동작 속도나 수명 관리 측면에서 훨씬 유리하다.
FTL는 매핑 기법(mapping method)을 이용하여, 호스트가 논리적으로 참조하는 블록, 페이지 또는 섹터의 어드레스를 실제로 플래쉬 메모리 내부에서 물리적으로 접근되는 블록, 페이지 또는 섹터의 어드레스에 매핑한다. FTL이 사용하는 매핑 기법에는 블록 매핑, 페이지 매핑, 섹터 매핑 및 로그 매핑 등이 있다. 이러한 FTL을 이용하는 플래쉬 메모리에서는 업데이트 전의 블록과 업데이트 후의 블록이 물리적으로는 서로 다르고 연속적이지 않을 수 있는 물리적 어드레스를 가지지만, 논리적으로는 같거나 연속적인 논리적 어드레스 공간을 가질 수 있다. 이런 상황에서 업데이트가 반복되면 일부만 서로 다른 유사한 블록들이 많이 생성될 수 있다. 플 래쉬 메모리는 이러한 저장 공간 활용의 비효율성 또는 물리적 어드레스의 비연속성이 어느 한계에 다다르면 물리적으로 상이한 위치에 비연속적으로 분산되어 있는 데이터를 어떤 동일한 어드레스 공간, 예를 들어 어떤 한 빈 블록에 정리하여 모으는 작업이 필요하며, 이러한 과정을 머지(merge) 동작이라 한다.
블록 매핑에서는 블록 전체가 업데이트되기 때문에 업데이트될 때마다 머지 동작이 이뤄진다. 페이지 매핑 또는 섹터 매핑에서는 어느 블록에 빈 페이지(또는 섹터)가 더 이상 남아있지 않을 때에 머지 동작이 이뤄진다.
로그 매핑 기법은 블록들을 데이터 블록과 로그 블록으로 구분한다. 각 구분된 블록들은 FTL에 의해 소정의 규칙에 따라 지정된다. 쓰기(프로그램) 동작은 데이터 블록 내에서 수행된다. 덮어쓰기 동작이 요구되면, FTL은 그 데이터 블록에 미리 연계해 놓은 로그 블록의 빈 공간에 덮어쓸 데이터를 순차적으로 프로그램하고, 기존의 데이터를 무효 데이터로 지정한다. 로그 블록에 빈 공간이 더 이상 없을 때에는 다른 빈 로그 블록에 대해 머지 동작이 수행되고, 머지시킨 로그 블록은 데이터 블록으로 지정된다. 종전의 로그 블록은 소거되고 FTL에 의해 로그 블록 또는 데이터 블록으로 지정될 수도 있다. 로그 매핑 기법의 세부 동작은 미리 설정된 FTL의 매핑 정책에 따라 조금씩 차이가 있을 수 있으나, 일반적으로 업데이트 빈도가 높을수록, 그리고 예측하지 못한 전원 차단 등에 대비하기 위해 기록 단위를 줄일수록 머지 동작은 자주 발생하게 된다.
머지 동작은 FTL이 필요에 따라 자체적으로 수행하며, 호스트는 플래쉬 메모리 내부에서 어떤 동작이 수행되고 있는지를 인식하지 않는다. 일반적으로 호스트 는 플래쉬 메모리와 같은 외부 대용량 저장장치에 어떤 명령을 출력하고 소정의 시간 내에 응답이 올 것이라 기대한다. 만약 상기 소정의 시간 내에 플래쉬 메모리로부터 소정의 응답이 없으면 호스트는 외부 저장 장치와의 연결을 초기화하는 등의 동작을 취하며, 이를 타임아웃이라 한다. 플래쉬 메모리에서 머지 동작이 수행되는 동안에도 호스트는 그러한 사정을 알지 못하고 플래쉬 메모리로부터 응답이 오기를 기다리게 되므로 전체적인 성능이 저하될 수 있다. 또한, 이러한 머지 동작 시에 호스트로부터 쓰기 명령이 있을 때, 머지 동작이 완료될 때까지 기다려야 하므로, 타임아웃이 발생하게 되어 시스템의 성능이 저하될 수도 있다.
상기 문제점을 해결하기 위한 본 발명의 목적은 타임 아웃을 방지할 수 있는 점진적 머지 방법을 사용하는 플래쉬 메모리의 관리 방법을 제공하는 데 있다.
본 발명의 다른 목적은 상기 점진적 관리 방법을 사용하는 플래쉬 메모리 시스템을 제공하는 데 있다.
상기 목적을 달성하기 위한 본 발명의 일 실시예에 따른 플래쉬 메모리의 관리 방법은 호스트로부터 쓰기 명령을 수신받는 단계, 상기 쓰기 명령을 수신받은 인터페이스 장치가 플래쉬 메모리의 로지컬 블록에 상기 쓰기 명령을 수행할 로그 블록의 할당 여부를 확인하는 단계 및 상기 할당된 로그 블록의 존재 여부에 따라 선택적으로 머지를 수행하는 단계를 포함한다.
실시예에서, 상기 로지컬 블록에 상기 쓰기 명령을 수행할 할당된 로그 블록 이 없으면 새로운 데이터 블록이 될 프리 블록을 할당받아 머지 동작을 일부만 수행하는 단계를 포함한다.
실시예에서, 상기 쓰기 명령이 하나의 페이지에 대한 쓰기 명령인 경우에, 상기 쓰기 명령은 임시로 할당된 템포러리 블록에 수행되는 단계를 포함할 수 있다. 상기 머지 동작이 완료되면 상기 템포러리 블록을 새로운 로그 블록으로 할당하는 단계를 포함할 수 있다.
실시예에서, 상기 쓰기 명령이 복수의 페이지에 대한 쓰기 명령인 경우에는 하나의 페이지에 대한 쓰기 명령을 수행하면서 상기 머지 작업을 일부만 수행하는 단계를 포함한다. 상기 복수개의 나머지 페이지에 대한 쓰기 명령을 일시적으로 중단하고 상기 머지 동작을 완료하는 단계를 포함할 수 있다. 상기 머지 동작이 완료된 후에 상기 복수개의 페이지에 대한 쓰기 명령이 완료되지 않았으면 상기 쓰기 명령을 완료하는 단계를 포함할 수 있다.
실시예에서, 상기 호스트가 아이들 상태일 때 상기 플래쉬 메모리에 백그라운드 커맨드를 호출할 수 있다. 상기 백그라운드 커맨드를 통하여 이전 쓰기 명령에 대한 머지 동작을 수행할 수 있다. 상기 아이들 상태가 종료되면, 상기 플래쉬 메모리의 상태를 체크하여 상기 백그라운드 커맨드에 의한 머지 동작의 종료 여부를 체크할 수 있다.
상기 목적을 달성하기 위한 본 발명의 일 실시예에 따른 플래쉬 메모리 시스템은 상기 아이들 상태가 종료되면, 상기 플래쉬 메모리의 상태를 체크하여 상기 백그라운드 커맨드에 의한 머지 동작의 종료 여부를 체크할 수 있다.
상기 목적을 달성하기 위한 본 발명의 일 실시예에 따른 플래쉬 메모리 시스템은 호스트, 플래쉬 메모리 및 상기 호스트로부터의 명령을 상기 플래쉬 메모리에 전달하는 인터페이스 장치를 포함한다. 상기 인터페이스 장치는 상기 호스트로부터 쓰기 명령을 수신하는 경우, 상기 플래쉬 메모리의 로지컬 블록에 상기 쓰기 명령을 수행할 로그 블록의 할당여부에 따라 선택적으로 머지를 수행한다.
실시예에서, 상기 인터페이스 장치는 상기 쓰기 명령이 상기 로그 블록의 하나의 페이지에 대한 쓰기 명령인 경우에 상기 로지컬 블록에 할당된 로그 블록이 없으면, 새로운 데이터 블록이 될 프리 블록을 할당 받아 머지 동작을 일부만 수행할 수 있다. 상기 인터페이스 장치는 상기 쓰기 명령을 임시로 할당받은 템포러리 블록에 수행할 수 있다. 상기 인터페이스 장치는 상기 머지 동작이 완료된 상기 프리 블록을 새로운 로그 블록으로 할당할 수 있다.
실시예에서, 상기 인터페이스 장치는 상기 호스트로부터의 쓰기 명령이 복수의 페이지에 대한 쓰기 명령인 경우, 상기 복수의 페이지 중 하나의 페이지에 대한 쓰기 명령을 상기 템포러리 블록에 수행하고, 상기 프리 블록에 대한 머지 작업을 일부만 수행할 수 있다. 상기 인터페이스 장치는 상기 복수개의 나머지 페이지에 대한 쓰기 명령을 일시적으로 중단하고, 상기 머지 동작을 완료할 수 있다. 상기 인터페이스 장치는 상기 머지 동작이 완료된 후에, 상기 복수개의 페이지에 대한 쓰기 동작을 완료할 수 있다.
실시예에서, 상기 호스트가 아이들 상태에 있을 때, 상기 호스트는 상기 플래쉬 메모리에 백그라운드 커맨드를 호출할 수 있다. 상기 인터페이스 장치는 상기 백그라운드 커맨드를 통하여 상기 플래쉬 메모리에 대한 이전의 쓰기 동작을 완료할 수 있다. 상기 인터페이스 장치는 상기 아이들 상태가 종료되면, 상기 플래쉬 메모리에 대한 상기 백그라운드 커맨드에 대한 머지 동작의 종료 여부를 체크할 수 있다.
본 발명의 실시예들에 따른 플래쉬 메모리의 관리 방법 및 플래쉬 메모리 시스템은 점진적으로 머지를 수행하여 타임 아웃을 방지할 수 있다.
본문에 개시되어 있는 본 발명의 실시예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
한편, 어떤 실시예가 달리 구현 가능한 경우에 특정 블록 내에 명기된 기능 또는 동작이 순서도에 명기된 순서와 다르게 일어날 수도 있다. 예를 들어, 연속하는 두 블록이 실제로는 실질적으로 동시에 수행될 수도 있고, 관련된 기능 또는 동작에 따라서는 상기 블록들이 거꾸로 수행될 수도 있다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 구성요소를 나타낸다.
도 1은 본 발명의 일 실시예에 따른 플래쉬 메모리 시스템의 구성을 나타내는 개략적인 블록도이다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 플래쉬 메모리 시스템은 호스트(100)와 인터페이스 장치(200)와 플래쉬 메모리(300)를 포함한다.
인터페이스 장치(200)는 호스트(100)로부터 플래쉬 메모리(300)에 대한 액세 스가 요청될 때마다 플래쉬 메모리(300)를 제어한다. 예를 들면, 인터페이스 장치(200)는 플래쉬 메모리(300)의 읽기/쓰기/소거 동작을 제어한다. 또한 인터페이스 장치(200)는 호스트(100)가 플래쉬 메모리(300)를 SRAM이나 HDD처럼 읽기/쓰기/소거 동작이 자유롭게 수행되는 매체로서 사용되도록 플래쉬 메모리(300)의 사상 정보를 관리한다. 이러한 사상정보는 인터페이스 장치(200)의 FTL(210)에서 이루어질 수 있다.
도 2a 내지 도 2c는 호스트(100)에서 하나의 페이지에 대한 쓰기 명령이 있을 때 플래쉬 메모리(300)가 머지 되는 과정을 나타낸다.
도 2a 내지 도 2c를 참조하면, 호스트(100)에서 인터페이스 장치(200)로 하나의 페이지에 대한 쓰기 명령이 전달되면, 인터페이스 장치(200)는 플래쉬 메모리(300)에 우선 쓰기 명령을 수행할 로그 블록이 할당되어 있는지를 확인한다. 확인 결과 로그 블록이 할당되어 있지 않으면, 인터페이스 장치(200)는 기존의 로그 블록(310)과 기존의 데이터 블록(320)을 머지시킨다. 즉 인터페이스 장치는(200) 아무것도 할당되어 있지 않은 프리 블록(330)에 로그 블록(310)과 이에 해당하는 데이터 블록(320) 맵핑하는 것이다. 여기서 로그 블록(310)과 데이터 블록(320)은 플래쉬 메모리(300)의 로지컬 블록(미도시)을 이루는 기본 구성 요소이다. 로그 블록(310)은 여러 개의 페이지들(312, 314, 316, 318)로 구성된다.
이러한 머지 동작은 한꺼번에 이루어지는 것이 아니라 점진적(incrementally)으로 이루어진다. 이 때, 인터페이스 장치(200)는 호스트(100)로부터 전달받은 쓰기 명령을 템포러리 블록(340)에서 수행한다(도 2b 참조). 이 템 포러리 블록(340)은 머지 작업 중에 발생하는 쓰기 명령을 처리하기 위한 임시 블록으로 로그 블록(310)과 같은 완벽한 맵핑을 가지지 않지만 머지 작업 종료 후에 새로운 로그 블록이 될 블록이다.
도 2c를 참조하면, 머지 동작이 완료되면 템포러리 블록(340)은 새로운 로그 블록으로 할당되고, 머지 동작이 완료된 프리 블록(330)은 새로운 데이터 블록이 된다. 또한 기존의 로그 블록(310)과 기존의 데이터 블록(320)은 각각 새로운 프리 블록이 된다.
즉, 머지 동작을 점진적으로 수행하면서 머지 동작이 완료될 때까지 기다리지 않고 템포러리 블록(340)을 이용하여 쓰기 동작을 수행하므로써 타임아웃이 발생하지 않게 되는 것이다.
도 3a 내지 도 3c는 호스트(100)로부터의 쓰기 명령이 복수의 페이지에 대한 쓰기 명령일 경우에 플래쉬 메모리(300)가 머지되는 과정을 나타낸다.
도 3a 내지 도 3c에서는 설명의 편의상 로그 블록과 데이터 블록은 도시하지 않았고 템포러리 블록(410)과 프리 블록(420)만을 도시하였다.
도 3a를 참조하면, 호스트(100)의 쓰기 명령이 복수의 페이지에 대한 쓰기 명령인 경우에 인터페이스 장치(200)는 템포러리 블록(410)에 복수개의 페이지 중 일부 페이지에 대한 쓰기 명령을 수행하면서, 기존의 로그 블록과 기존의 데이터 블록을 프리 블록(420)에 일부분만 머지한다. 다음에 쓰기 명령이 수행되지 않은 나머지 페이지에 대한 쓰기 동작을 일시적으로 중단하고 프리 블록에 기존의 로그 블록과 기존의 데이터 블록에 대한 머지 동작을 완료한다. 물론 이 때에 다른 페이 지에 대한 쓰기 동작이 수행될 수도 있다.
도 3b를 참조하면, 머지 동작이 완료된 후에 복수개의 페이지에 대한 쓰기 동작이 완료되지 않았으면, 나머지 페이지에 대한 쓰기 동작을 계속 진행한다.
도 3c를 참조하면, 머지 동작이 완료된 후에 템포러리 블록(410)을 새로운 로그 블록으로 할당되고, 머지 동작이 완료된 프리 블록(420)은 새로운 데이터 블록으로 할당된다.
도 4는 호스트(100)가 아이들 상태에 있을 때 백그라운드 오퍼레이션을 통한 머지를 나타내는 블록도이다.
즉 복수개의 페이지에 대한 쓰기 명령이 요청되는 경우에도 머지 동작을 점진적으로 실행하고 쓰기 동작을 페이지 단위로 수행함으로써 타임 아웃을 방지할 수 있다.
도 4를 참조하면, 호스트(100)가 쓰기 명령과 읽기 명령을 수행하고 아이들 상태에 있을 때, 호스트(100)는 인터페이스 장치(200)에 백그라운드 커맨드를 호출한다. 그러면 인터페이스 장치(200)는 백그라운드 커맨드를 통하여 쓰기 명령에 대해서 완료되지 않은 머지 동작을 완료하도록 플래쉬 메모리(300)를 컨트롤 한다. 호스트(300)의 아이들 상태가 종료되면, 인터페이스 장치(200)는 백그라운드 커맨드에 의한 머지 동작의 종료 여부를 체크한다.
도 4와 같은 백그라운드 오페레이션을 이용하면, MoviNAND와 같은 임베디드 환경에서 타임 아웃이 발생하지 않고 호스트와 플래쉬 메모리 간의 머지를 분할 수행할 수 있다.
도 5는 본 발명의 일 실시예에 따른 플래쉬 메모리의 관리 방법을 나타내는 흐름도이다.
도 5를 참조하면, 본 발명의 일 실싱예에 따른 플래쉬 메모리의 관리 방법은 호스트로부터 쓰기 명령을 수신한다(S510).
쓰기 명령을 수신받은 인터페이스 장치가 플래쉬 메모리의 로지컬 블록에 쓰기 명령을 수행할 로그 블록이 할당되어 있는지를 확인한다(S520).
확인 결과 로그 블록이 할당 되어 있으면, 할당된 로그 블록에 쓰기 명령을 수행한다(S530).
확인 결과 로그 블록이 할당되어 있지 않으면, 쓰기 명령이 하나의 페이지에 대한 쓰기 명령인지 복수개의 페이지에 대한 쓰기 명령인지를 파악한다(S540).
하나의 페이지에 대한 쓰기 명령이면, 기존의 로그 블록과 기존의 데이터 블록을 프리 블록에 일부만 병합한다(S542).
그 다음에 쓰기 명령을 템포레리 블록에 수행한다(S544).
그리고 나서 프리 블록에 대한 머지 동작을 완료한다(S546).
그리고 나서 템포러리 블록을 새로운 로그 블록으로 할당한다(S548).
단계(S540)에서 쓰기 명령이 복수의 페이지에 대한 쓰기 명령이면, 하나의 페이지에 대한 쓰기 명령을 수행하면서 머지 동작을 일부 수행한다(S552).
그 다음에 나머지 페이지에 대한 쓰기 작업을 일시 중단하고 머지 동작을 완료한다(S544). 물론 이 과정에서 나머지 페이지에 대한 머지 동작을 동시에 수행할 수도 있다.
그 다음에 나머지 페이지에 대한 쓰기 동작을 계속 진행한다(S546). 이 과정에서 쓰기 동작이 완료될 수도 있고 완료되지 않을 수도 있다.
그 다음에 템포러리 블록을 새로운 로그 블록으로 할당한다(S548).
상술한 바와 같이, 본 발명의 일 실시예에 따른 플래쉬 메모리의 관리 방법 및 플래쉬 메모리 시스템에 의하면 머지 동작을 하나의 로그 블록과 데이터 블록에 대한 머지 동작을 블록 단위로 실행하지 않고 점진적으로 실행하고 쓰기 동작을 템포러리 블록에 수행함으로써 타임 아웃이 발생하는 것을 방지할 수 있고, 시스템의 성능을 향상시킬 수 있다.
이상 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
Claims (20)
- 호스트로부터 쓰기 명령을 수신받는 단계;상기 쓰기 명령을 수신받은 인터페이스 장치가 플래쉬 메모리의 로지컬 블록에 상기 쓰기 명령을 수행할 로그 블록의 할당 여부를 확인하는 단계; 및상기 할당된 로그 블록의 존재 여부에 따라 선택적으로 머지를 수행하는 단계를 포함하는 것을 특징으로 하는 플래쉬 메모리의 관리 방법.
- 제 1 항에 있어서, 상기 로지컬 블록에 상기 쓰기 명령을 수행할 할당된 로그 블록이 없으면 새로운 데이터 블록이 될 프리 블록을 할당받아 머지 동작을 일부만 수행하는 단계를 포함하는 것을 특징으로 하는 플래쉬 메모리의 관리 방법.
- 제 2 항에 있어서, 상기 쓰기 명령이 하나의 페이지에 대한 쓰기 명령인 경우에, 상기 쓰기 명령은 임시로 할당된 템포러리 블록에 수행되는 단계를 포함하는 것을 특징으로 하는 플래쉬 메모리의 관리 방법.
- 제 3 항에 있어서, 상기 머지 동작이 완료되면 상기 템포러리 블록을 새로운 로그 블록으로 할당하는 단계를 포함하는 것을 특징으로 하는 플래쉬 메모리의 관리 방법.
- 제 2 항에 있어서, 상기 쓰기 명령이 복수의 페이지에 대한 쓰기 명령인 경우에는 하나의 페이지에 대한 쓰기 명령을 수행하면서 상기 머지 작업을 일부만 수행하는 단계를 포함하는 것을 특징으로 하는 플래쉬 메모리의 관리 방법.
- 제 5 항에 있어서, 상기 복수개의 나머지 페이지에 대한 쓰기 명령을 일시적으로 중단하고 상기 머지 동작을 완료하는 단계를 포함하는 것을 특징으로 하는 것을 특징으로 하는 플래쉬 메모리의 관리 방법.
- 제 6 항에 있어서, 상기 머지 동작이 완료된 후에 상기 복수개의 페이지에 대한 쓰기 명령이 완료되지 않았으면 상기 쓰기 명령을 완료하는 단계를 포함하는 것을 특징으로 하는 플래쉬 메모리의 관리 방법.
- 제 1 항에 있어서, 상기 호스트가 아이들 상태일 때,상기 플래쉬 메모리에 백그라운드 커맨드를 호출하는 것을 특징으로 하는 플래쉬 메모리의 관리 방법.
- 제 8 항에 있어서, 상기 백그라운드 커맨드를 통하여 이전 쓰기 명령에 대한 머지 동작을 수행하는 것을 특징으로 하는 플래쉬 메모리의 관리 방법.
- 제 9 항에 있어서, 상기 아이들 상태가 종료되면, 상기 플래쉬 메모리의 상 태를 체크하여 상기 백그라운드 커맨드에 의한 머지 동작의 종료 여부를 체크하는 것을 특징으로 하는 플래쉬 메모리의 관리 방법.
- 호스트;플래쉬 메모리;상기 호스트로부터의 명령을 상기 플래쉬 메모리에 전달하는 인터페이스 장치를 포함하며, 상기 인터페이스 장치는,상기 호스트로부터 쓰기 명령을 수신하는 경우, 상기 플래쉬 메모리의 로지컬 블록에 상기 쓰기 명령을 수행할 로그 블록의 할당여부에 따라 선택적으로 머지를 수행하는 것을 특징으로 하는 플래쉬 메모리 시스템.
- 제 11 항에 있어서, 상기 인터페이스 장치는 상기 쓰기 명령이 상기 로그 블록의 하나의 페이지에 대한 쓰기 명령인 경우에 상기 로지컬 블록에 할당된 로그 블록이 없으면, 새로운 데이터 블록이 될 프리 블록을 할당 받아 머지 동작을 일부만 수행하는 것을 특징으로 하는 플래쉬 메모리 시스템.
- 제 12 항에 있어서, 상기 인터페이스 장치는,상기 쓰기 명령을 임시로 할당받은 템포러리 블록에 수행하는 것을 특징으로 하는 플래쉬 메모리 시스템.
- 제 13 항에 있어서, 상기 인터페이스 장치는 상기 머지 동작이 완료된 상기 프리 블록을 새로운 로그 블록으로 할당하는 것을 특징으로 하는 플래쉬 메모리 시스템.
- 제 12 항에 있어서, 상기 인터페이스 장치는,상기 호스트로부터의 쓰기 명령이 복수의 페이지에 대한 쓰기 명령인 경우, 상기 복수의 페이지 중 하나의 페이지에 대한 쓰기 명령을 상기 템포러리 블록에 수행하고, 상기 프리 블록에 대한 머지 작업을 일부만 수행하는 것을 특징으로 플래쉬 메모리 시스템.
- 제 15 항에 있어서, 상기 인터페이스 장치는,상기 복수개의 나머지 페이지에 대한 쓰기 명령을 일시적으로 중단하고, 상기 머지 동작을 완료하는 것을 특징으로 하는 플래쉬 메모리 시스템.
- 제 16 항에 있어서, 상기 인터페이스 장치는,상기 머지 동작이 완료된 후에, 상기 복수개의 페이지에 대한 쓰기 동작을 완료하는 것을 특징으로 하는 플래쉬 메모리 시스템.
- 제 11 항에 있어서, 상기 호스트가 아이들 상태에 있을 때,상기 호스트는 상기 플래쉬 메모리에 백그라운드 커맨드를 호출하는 것을 특 징으로 하는 플래쉬 메모리 시스템.
- 제 18 항에 있어서, 상기 인터페이스 장치는,상기 백그라운드 커맨드를 통하여 상기 플래쉬 메모리에 대한 이전의 쓰기 동작을 완료하는 것을 특징으로 하는 플래쉬 메모리 시스템.
- 제 19 항에 있어서, 상기 인터페이스 장치는,상기 아이들 상태가 종료되면, 상기 플래쉬 메모리에 대한 상기 백그라운드 커맨드에 대한 머지 동작의 종료 여부를 체크하는 것을 특징으로 하는 플래쉬 메모리 시스템.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020060114988A KR20080045833A (ko) | 2006-11-21 | 2006-11-21 | 플래쉬 메모리 관리 방법 및 이를 이용하는 플래쉬 메모리시스템 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020060114988A KR20080045833A (ko) | 2006-11-21 | 2006-11-21 | 플래쉬 메모리 관리 방법 및 이를 이용하는 플래쉬 메모리시스템 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20080045833A true KR20080045833A (ko) | 2008-05-26 |
Family
ID=39663039
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020060114988A KR20080045833A (ko) | 2006-11-21 | 2006-11-21 | 플래쉬 메모리 관리 방법 및 이를 이용하는 플래쉬 메모리시스템 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20080045833A (ko) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100987251B1 (ko) * | 2008-10-10 | 2010-10-12 | 한양대학교 산학협력단 | 완전 연관 섹터 변환 기법을 사용하는 플래시 변환 계층에서 합병연산을 줄이기 위한 플래시 메모리 관리 방법및 장치 |
KR101020781B1 (ko) * | 2009-03-04 | 2011-03-09 | 한국과학기술원 | 플래시 메모리를 기반으로 한 데이터베이스 시스템에 대한 로그 관리 방법 |
KR101021364B1 (ko) * | 2008-10-10 | 2011-03-14 | 한양대학교 산학협력단 | 완전 연관 섹터 변환 기법을 사용하는 플래시 변환 계층에서 합병연산을 줄이기 위한 멀티 플래시 메모리 관리방법 및 장치 |
US8341374B2 (en) | 2009-07-08 | 2012-12-25 | Samsung Electronics Co., Ltd. | Solid state drive and related method of scheduling operations |
US8984207B2 (en) | 2010-12-03 | 2015-03-17 | Samsung Electronics Co., Ltd. | Memory system performing incremental merge operation and data write method |
US9715444B2 (en) | 2012-06-01 | 2017-07-25 | Samsung Electronics Co., Ltd. | Storage device having nonvolatile memory device and write method |
KR20210080907A (ko) * | 2019-12-23 | 2021-07-01 | 주식회사 디에이아이오 | 비휘발성 메모리 시스템 |
-
2006
- 2006-11-21 KR KR1020060114988A patent/KR20080045833A/ko not_active Application Discontinuation
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100987251B1 (ko) * | 2008-10-10 | 2010-10-12 | 한양대학교 산학협력단 | 완전 연관 섹터 변환 기법을 사용하는 플래시 변환 계층에서 합병연산을 줄이기 위한 플래시 메모리 관리 방법및 장치 |
KR101021364B1 (ko) * | 2008-10-10 | 2011-03-14 | 한양대학교 산학협력단 | 완전 연관 섹터 변환 기법을 사용하는 플래시 변환 계층에서 합병연산을 줄이기 위한 멀티 플래시 메모리 관리방법 및 장치 |
KR101020781B1 (ko) * | 2009-03-04 | 2011-03-09 | 한국과학기술원 | 플래시 메모리를 기반으로 한 데이터베이스 시스템에 대한 로그 관리 방법 |
US8341374B2 (en) | 2009-07-08 | 2012-12-25 | Samsung Electronics Co., Ltd. | Solid state drive and related method of scheduling operations |
US8984207B2 (en) | 2010-12-03 | 2015-03-17 | Samsung Electronics Co., Ltd. | Memory system performing incremental merge operation and data write method |
US9582208B2 (en) | 2010-12-03 | 2017-02-28 | Samsung Electronics Co., Ltd. | Memory system performing incremental merge operation and data write method |
US9715444B2 (en) | 2012-06-01 | 2017-07-25 | Samsung Electronics Co., Ltd. | Storage device having nonvolatile memory device and write method |
KR20210080907A (ko) * | 2019-12-23 | 2021-07-01 | 주식회사 디에이아이오 | 비휘발성 메모리 시스템 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100568115B1 (ko) | 점진적 머지 방법 및 그것을 이용한 메모리 시스템 | |
US8117374B2 (en) | Flash memory control devices that support multiple memory mapping schemes and methods of operating same | |
US8234466B2 (en) | Flash memory storage system applying SLC NAND flash memory and MLC NAND flash memory and data writing method thereof | |
CN113377283A (zh) | 具有分区命名空间的存储器系统及其操作方法 | |
JP5728672B2 (ja) | ハイブリッドメモリ管理 | |
JP4406339B2 (ja) | コントローラ、メモリカード及びその制御方法 | |
TWI385519B (zh) | 資料寫入方法及使用此方法的快閃儲存系統與其控制器 | |
US8650379B2 (en) | Data processing method for nonvolatile memory system | |
CN110890113A (zh) | 存储设备及其操作方法 | |
US20050172068A1 (en) | Memory card and semiconductor device | |
KR102585883B1 (ko) | 메모리 시스템의 동작 방법 및 메모리 시스템 | |
KR102233400B1 (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
TWI609323B (zh) | 資料儲存方法及其系統 | |
KR20080084082A (ko) | 메모리 카드 및 그것을 포함하는 메모리 시스템 그리고그것의 동작 방법 | |
KR20080045833A (ko) | 플래쉬 메모리 관리 방법 및 이를 이용하는 플래쉬 메모리시스템 | |
US8433847B2 (en) | Memory drive that can be operated like optical disk drive and method for virtualizing memory drive as optical disk drive | |
JP2012113343A (ja) | 記憶装置 | |
JP4829202B2 (ja) | 記憶装置及びメモリ制御方法 | |
CN112835514B (zh) | 存储器系统 | |
KR20080033649A (ko) | 머지 빈도를 줄일 수 있는 플래쉬 메모리 시스템 및 그관리 방법 | |
KR20070060301A (ko) | 불휘발성 메모리를 쓰기 캐시로 구비한 하드 디스크드라이버 | |
JP5594647B2 (ja) | ストレージ装置及びその制御方法 | |
CN102362263A (zh) | Ssd控制器与ssd控制器的操作方法 | |
JPH01235075A (ja) | ディスクメモリ制御装置 | |
CN104424124A (zh) | 内存装置、电子设备和用于控制内存装置的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITN | Withdrawal due to no request for examination |