KR101549569B1 - 가비지 컬렉션 수행 방법 및 그 방법을 이용한 플래시 메모리 장치 - Google Patents
가비지 컬렉션 수행 방법 및 그 방법을 이용한 플래시 메모리 장치 Download PDFInfo
- Publication number
- KR101549569B1 KR101549569B1 KR1020140017316A KR20140017316A KR101549569B1 KR 101549569 B1 KR101549569 B1 KR 101549569B1 KR 1020140017316 A KR1020140017316 A KR 1020140017316A KR 20140017316 A KR20140017316 A KR 20140017316A KR 101549569 B1 KR101549569 B1 KR 101549569B1
- Authority
- KR
- South Korea
- Prior art keywords
- garbage collection
- flash memory
- task
- host
- flash
- 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
- 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/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System (AREA)
Abstract
발명의 실시예에 따른 플래시 변환 계층을 포함하는 플래시 메모리 장치와 연동하는 호스트의 가비지 컬랙션 수행 방법으로서, 상기 플래시 메모리 장치의 플래시 변환 계층으로부터 가비지 컬렉션 요청을 수신하는 수신 단계; 상기 가비지 컬렉션 요청 수신 시 수행하고 있는 태스크가 플래시 메모리 비관련 태스크인 경우 가비지 컬렉션 요청에 대한 허가 정보를 상기 플래시 메모리 장치의 플래시 변환 계층에 전달하는 허가 단계; 상기 가비지 컬렉션 요청 수신 시 수행하고 있는 태스크가 플래시 메모리 관련 태스크인 경우 태스크 대기 행렬에 플래시 메모리 비관련 태스크가 존재한다면 현재 수행하고 있는 태스크를 블록하고 상기 플래시 메모리 비관련 태스크를 수행하는 태스크 스위칭을 실시한 후 가비지 컬렉션 요청에 대한 허가 정보를 상기 플래시 메모리 장치의 플래시 변환 계층에 전달하는 태스크 스위칭 허가 단계; 및 상기 가비지 컬렉션 요청 수신에 따라 현재 수행하고 있는 태스크가 플래시 메모리 관련 태스크이면서 태스크 대기 행렬에 플래시 메모리 비관련 태스크가 존재하지 않을 경우 상기 가비지 컬렉션 요청을 허가하지 않는 불허 단계를 포함한다.
Description
본 발명은 플래시 메모리에서의 가비지 컬렉션에 관한 것으로, 더 상세하게는 가비지 컬렉션에 따른 성능 저하를 감소시킬 수 있는 가비지 컬렉션 수행 방법 및 그 방법을 이용한 플래시 메모리 장치에 관한 것이다.
플래시 메모리는 일종의 EEPROM(Electrically Erasable and Programmable ROM)으로 크게 바이트 I/O(input/output)를 지원하는 NOR형과 페이지 I/O만을 지원하는 NAND형이 있다. NOR형 플래시 메모리는 읽기 속도가 빠른데 반하여 쓰기 속도가 느려 주로 코드용 메모리로 사용하며, NAND형 플래시 메모리는 쓰기 속도가 상대적으로 빠르고 단위 공간당 단가가 낮아 주로 대용량 데이터 저장장치로 사용된다.
플래시 메모리는 디스크 장치와는 달리 다시쓰기(rewrite)를 하기 위해 지우기(erase) 연산이 선행되어야 하며, 플래시 지우기 연산의 단위는 쓰기 단위보다 훨씬 큰 블록 단위로 수행되고 수행 시간이 오래 걸린다. 또한 플래시 메모리의 수명 및 신뢰성 보장 등이 지원되어야 한다. 이러한 특성은 플래시 메모리를 보조기억장치로 사용하는 경우에 일반 하드디스크용 파일시스템을 그대로 활용하는 것을 저해한다. 이를 해결하기 위한 방안으로, 디스크 파일시스템과 플래시 메모리 사이의 미들웨어인 플래시 변환 계층(Flash Translation Layer, 이하 'FTL'이라 함)이 제안되었다. FTL은 플래시 메모리를 기존의 하드디스크 장치와 마찬가지로 자유롭게 읽고 쓰는 것이 가능하도록 하기 위한 인터페이스 계층이다.
그러나 FTL에 의해 가비지 컬렉션을 수행하는 동안 플래시 메모리에 새로운 읽기/쓰기(read/write) 요청이 있어도 가비지 컬렉션의 수행이 종료된 후에 처리되므로 읽기/쓰기 요청의 대기 시간(latency time)을 증가시키기 때문에 시스템 성능이 전반적으로 낮아진다는 문제점이 존재한다.
본 발명은 상기의 문제점을 해결하기 위해 이루어진 것으로, 호스트(Host)와 FTL이 상호작용하여 동작함으로써 FTL의 가비지 컬렉션(garbage collection)으로 인한 메모리 요청의 대기 시간을 감소시킴으로써 시스템 성능을 향상시키는 것을 목적으로 한다.
발명의 실시예에 따른 FTL을 포함하는 플래시 메모리 장치와 연동하는 호스트의 가비지 컬랙션 수행 방법으로서, 상기 플래시 메모리 장치의 FTL로부터 가비지 컬렉션 수행 허가 요청을 수신하는 요청 수신 단계; 상기 가비지 컬렉션 허가 요청 수신 시 수행하고 있는 태스크가 플래시 메모리 비관련 태스크인 경우 가비지 컬렉션 허가 요청에 대한 허가 정보를 상기 플래시 메모리 장치의 FTL에 전달하는 허가 단계; 상기 가비지 컬렉션 허가 요청 수신 시 수행하고 있는 태스크가 플래시 메모리 관련 태스크인 경우 태스크 대기 행렬에 플래시 메모리 비관련 태스크가 존재한다면 현재 수행하고 있는 태스크를 블록하고 상기 플래시 메모리 비관련 태스크를 수행하는 태스크 스위칭을 실시한 후 가비지 컬렉션 허가 요청에 대한 허가 정보를 상기 플래시 메모리 장치의 FTL에 전달하는 태스크 스위칭 허가 단계; 및 상기 가비지 컬렉션 허가 요청 수신에 따라 현재 수행하고 있는 태스크가 플래시 메모리 관련 태스크이면서 태스크 대기 행렬에 플래시 메모리 비관련 태스크가 존재하지 않을 경우 상기 가비지 컬렉션 요청을 허가하지 않는 불허 단계;를 포함한다..
본 발명에 따른 가비지 컬렉션 수행 방법은 호스트(Host)와 FTL이 상호작용하여 가비지 컬렉션으로 인한 메모리 요청의 대기 시간을 감소시킴으로써 전반적인 시스템 성능을 향상시킬 수 있다.
도 1은 본 발명에 따른 컴퓨터 시스템의 소프트웨어의 계층을 간략히 보여주는 블록도이다.
도 2는 본 발명에 따른 호스트와 FTL의 상호작용 인터페이스를 나타내는 도면이다.
도 3은 본 발명에 따른 호스트에서의 가비지 컬렉션 관련 신호 처리의 흐름도이다.
도 4는 본 발명에 따른 FTL에서의 가비지 컬렉션 관련 신호 처리의 흐름도이다.
도 5는 본 발명에 따른 호스트에서의 가비지 컬렉션 관련 신호 처리의 흐름도이다.
도 2는 본 발명에 따른 호스트와 FTL의 상호작용 인터페이스를 나타내는 도면이다.
도 3은 본 발명에 따른 호스트에서의 가비지 컬렉션 관련 신호 처리의 흐름도이다.
도 4는 본 발명에 따른 FTL에서의 가비지 컬렉션 관련 신호 처리의 흐름도이다.
도 5는 본 발명에 따른 호스트에서의 가비지 컬렉션 관련 신호 처리의 흐름도이다.
본 발명에서 사용되는 기술적 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아님을 유의해야 한다. 또한, 본 발명에서 사용되는 기술적 용어는 본 발명에서 특별히 다른 의미로 정의되지 않는 한, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 의미로 해석되어야 하며, 과도하게 포괄적인 의미로 해석되거나, 과도하게 축소된 의미로 해석되지 않아야 한다. 또한, 본 발명에서 사용되는 기술적인 용어가 본 발명의 사상을 정확하게 표현하지 못하는 잘못된 기술적 용어일 때에는, 당업자가 올바르게 이해할 수 있는 기술적 용어로 대체되어 이해되어야 할 것이다. 또한, 본 발명에서 사용되는 일반적인 용어는 사전에 정의되어 있는 바에 따라, 또는 전후 문맥상에 따라 해석되어야 하며, 과도하게 축소된 의미로 해석되지 않아야 한다.
또한, 본 발명에서 사용되는 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한 복수의 표현을 포함한다. 본 발명에서, "구성된다" 또는 "포함한다" 등의 용어는 발명에 기재된 여러 구성 요소들, 또는 여러 단계를 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다.
또한, 본 발명에서 사용되는 제1, 제2 등과 같이 서수를 포함하는 용어는 구성 요소들을 설명하는데 사용될 수 있지만, 구성 요소들은 용어들에 의해 한정되어서는 안 된다. 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성 요소는 제2 구성 요소로 명명될 수 있고, 유사하게 제2 구성 요소도 제1 구성 요소로 명명될 수 있다.
이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시 예를 상세히 설명하되, 도면 부호에 관계없이 동일하거나 유사한 구성 요소는 동일한 참조 번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다.
또한, 본 발명을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 첨부된 도면은 본 발명의 사상을 쉽게 이해할 수 있도록 하기 위한 것일 뿐, 첨부된 도면에 의해 본 발명의 사상이 제한되는 것으로 해석되어서는 아니 됨을 유의해야 한다.
도 1은 본 발명에 따른 컴퓨터 시스템의 소프트웨어의 계층을 간략히 보여주는 블록도이다. 컴퓨터 시스템의 소프트웨어는 어플리케이션(105) 및 파일 시스템(110)을 포함하는 호스트(100), 어드레스 맵핑 모듈(121), 소모 레벨링(wear leveling) 모듈(122) 및 가비지 컬렉션 모듈(123)을 포함하는 FTL(120), MTD(Memory Technology Device) 레이어(130), 페이지 단위로 구성된 블록을 포함하는 플래시 메모리(140)로 구성될 수 있다.
버퍼 캐시는 일반적으로 DRAM 혹은 SDRAM으로 구성되어 있으며, 호스트로부터 요청된 읽기 및 쓰기 데이터를 임시로 보관하는 역할을 한다. FTL(120)은 버퍼 캐시를 통하여 요청된 읽기 및 쓰기 데이터를 처리하며, 필요할 경우 블록 삭제 연산도 수행한다. 일반적으로 모바일 기기의 경우에는 버퍼 캐시와 FTL(120)이 하나의 시스템 내에 존재하며, 플래시 메모리 기반의 Solid State Disk(이하 SSD)의 경우에도 저장장치 내에 버퍼 캐시와 FTL(120)이 함께 존재하도록 설계되어 있다. 플래시 메모리 장치는 SSD를 예로 들어 설명하였으나 이에 대해 한정하지는 않으며 호스트(100)는 SSD에 억세스하는 운영체제를 포함한다.
도 1을 참조하면, 운영체제 계층(OS)인 호스트(100)는 컴퓨터 시스템의 부팅시에 램에 마운트(Mount) 되어 중앙처리장치에 의해서 기능들이 수행된다.
호스트(100)는 다시 최상위의 어플리케이션(105)과 그에 포함되는 파일 시스템(110)으로 나뉜다. 파일 시스템(110)은 자료를 계층적으로 저장, 탐색, 접근, 조작하기 위한 추상적 자료구조의 집합으로 정의된다.
FTL(120)은 파일 시스템(110)으로부터의 플래시 메모리 관련 태스크인 읽기/쓰기 연산 요청에 응답하여 플래시 메모리(140)에 적합한 형태로 어드레스를 변환한다. FTL(120)은 파일 시스템(110)으로부터의 플래시 메모리 관련 태스크에 응답하여 플래시 메모리(140)로의 액세스를 가능하게 한다.
구체적으로 FTL(120)은, 플래시 메모리(140)의 기입 동작시, 파일 시스템(110)이 생성한 논리주소(Logical address)를 삭제 연산이 수행된 플래시 메모리(140)의 물리 주소(Physical address)로 맵핑(Mapping)시켜 주는 역할을 수행한다. FTL(120)은 빠른 어드레스 맵핑이 이루어질 수 있도록 어드레스 맵핑 테이블(Address Mapping Table)을 사용한다. 일반적으로, 어드레스 맵핑 테이블은 고속의 SRAM 상에서 구성된다.
FTL(120)을 구성하는 알고리즘 또는 모듈들은 파일 시스템(110)과 플래시 메모리(140) 사이에서 인터페이싱을 위한 제반 소프트웨어 모듈들을 구동한다.
FTL(120)은 파일 시스템(110)으로부터 제공되는 논리 어드레스(Logical address)를 플래시 메모리의 물리 어드레스(Physical address)로 전환하기 위한 어드레스 맵핑 모듈(121), 소거 평준화 동작을 수행하는 소모 레벨링(wear leveling) 모듈(122) 및 플래시 메모리의 각 블록들에 흩어져 있는 유효 데이터들을 모아서 하나의 블록에 채우는 가비지 컬렉션(Garbage Collection) 동작을 수행하는 가비지 컬렉션 모듈(123)을 포함할 수 있다.
이밖에 FTL(120)은 모듈 단위의 기능 블록들을 포함할 수 있으며, 파일 시스템(110)으로부터의 플래시 메모리 관련 태스크에 대응하는 효율적인 액세스 동작을 지원한다. 좀더 자세히 설명하면 다음과 같다.
어드레스 맵핑 모듈(121)은 어플리케이션(105)과 파일 시스템(110) 계층으로부터 전달받은 논리 주소(예를 들면, 섹터 주소와 섹터 수)를 파라미터로 하여 플래시 메모리(140)로의 쓰기 및 읽기 동작을 위한 주소 변환 동작을 수행한다. 이러한 주소 변환을 효율적으로 수행하기 위해, 어드레스 맵핑 모듈(121)은 논리 주소(Logical address)에 대응하는 플래시 메모리(140)의 물리 주소(Physical address)를 맵핑하는 어드레스 맵핑 테이블(Address mapping table)을 구성한다.
또한, 소모 레벨링 모듈(122)에서는, 플래시 메모리(140)의 열화 작용을 균등화시키기 위한 블록 맵핑 기능을 수행한다. 이러한 동작을 위한 블록들의 서열화 작업을 소모 레벨링이라 한다. 소모 레벨링은 각 블록에 대해서 소거 횟수(Erase Count)에 대한 정보를 저장하고, 횟수가 적은 수의 블록을 우선적으로 호스트로부터의 논리적 블록 어드레스에 할당하는 방식으로 이루어진다. 소모 레벨링 동작을 위해서는 소거 카운트(Erase count)가 지속적으로 업데이트되어야 한다.
가비지 컬렉션 모듈(123)에서는 가비지 컬렉션 동작을 지원하기 위해 가비지 체크 동작 및 가비지 컬렉션 동작들이 이루어질 수 있다. 호스트(100)가 기존에 기입된 적이 있는 논리 블록 번호에 대해 기입 요청을 하는 경우, FTL(120)은 호스트로부터 제공된 데이터를 다른 위치에 쓰고, 기존 데이터를 무효화하는 기법을 사용한다. 이와 같은 FTL(120)의 알고리즘 적인 특성으로 인해 블록 전체가 무효화된 데이터로 채워지는 블록이 생길 수 있는데, 이러한 블록을 가비지 블록(Garbage block)이라 한다. 가비지 블록은 먼저 소거 연산을 통해 기입이 가능한 상태로 설정된 후, 재사용된다. FTL(120)에서 이루어지는 이러한 연산 과정을 가비지 컬렉션(Garbage Collection:GC) 또는 리클레임(Reclaim)이라 부른다. 이러한 연산이 얼마나 빠르게 수행되느냐에 따라 플래시 메모리의 성능이 좌우된다. 특히, 시스템의 사용 기간이 길어짐에 따라 저장된 데이터의 양이 많아지고 사용 가능한 가용 블록(Reserved block)의 개수가 줄어들수록, 가비지 컬렉션의 성능은 더욱 중요시된다. FTL(120)은 동작 모듈로써 상술한 기능 모듈들 이외에도 특정 동작을 수행하기 위한 소프트웨어 모듈들을 포함한다.
FTL(120)은 일반적으로 파일 시스템의 플래시 메모리 관련 태스크에 응답하여 상술한 어드레스 맵핑, 소모 레벨링, 그리고 가비지 컬렉션을 실시간으로 수행하게 된다. 이러한 알고리즘에 따른 동작들을 수행하기 위해서는 플래시 컨트롤러에 구비되는 프로세서 및 램의 자원(Resource)이 사용된다.
이하에서는 본 발명에 따른 가비지 컬렉션 관련 신호 처리의 흐름을 설명한다.
도 2는 본 발명에 따른 호스트와 FTL의 상호작용 인터페이스를 나타내는 도면이다. 도 2를 참고하면, FTL(120)로부터 호스트(100)에 가비지 컬렉션의 허가를 요청한다. 호스트(100)가 FTL(120)로부터 가비지 컬렉션의 허가를 요청받으면 허가의 여부를 결정하는 판단 이후에, FTL(120)에 가비지 컬렉션을 허가하고, FTL(120)는 이에 따라 가비지 컬렉션을 실행하면서 그 상태를 호스트(100)에 제공한다.
이와 같이 가비지 컬렉션에 관해 호스트(100)와 FTL(120)이 상호작용함으로써 효과적인 가비지 컬렉션의 수행이 가능할 수 있다.
도 3은 본 발명에 따른 호스트에서의 가비지 컬렉션 관련 신호 처리의 흐름도이다. 호스트(100)는 FTL(120)로부터 가비지 컬렉션의 요청을 수신한다(S100). 다음으로, 호스트(100)는 플래시 메모리 비관련 태스크인 non-SSD 태스크가 실행 중인지를 확인한다(S110). 플래시 메모리 비관련 태스크가 실행 중인 경우, FTL(120)에 가비지 컬렉션을 허가하고(S150), 플래시 메모리 비관련 태스크가 실행 중이지 않은 경우, 태스크 대기 행렬에 플래시 메모리 비관련 태스크가 존재하는지를 확인한다(S120). 또한 호스트(100)가 어떠한 태스크도 실행하고 있지 않은 경우에도 FTL(120)에 가비지 컬렉션을 허가한다.
태스크 대기 행렬에 플래시 메모리 비관련 태스크가 존재하는지를 확인하여 태스크 대기 행렬에 플래시 메모리 비관련 태스크가 존재하는 경우 실행 중인 태스크를 블록(block)하고 이를 태스크 대기 행렬에 삽입하고(S130), 실행을 위해 태스크 대기 행렬로부터 플래시 메모리 비관련 태스크를 수행하도록 태스크 스위칭한다(S140). 다음으로, FTL(120)에 가비지 컬렉션을 허가하여(S150), 가비지 컬렉션을 실행한다.
또한 FTL(120)로부터 호스트(100)에 가비지 컬렉션 수행 허가를 요청하였을 때, 현재 수행중인 태스크가 SSD 태스크이며 태스크 대기 행렬에 플래시 메모리 비관련 태스크가 없으면 플래시 메모리 관련 태스크가 많기 때문에 FTL(120)에 가비지 컬렉션을 허가하지 않는다.
상기와 같이 FTL(120)로부터 가비지 컬렉션의 요청에 따라 호스트(100)가 태스크 대기 행렬에 플래시 메모리 비관련 태스크가 존재하는지를 확인하고 그 결과에 따라 가비지 컬렉션의 실행 여부가 결정되므로 효과적인 가비지 컬렉션의 수행이 가능하다.
도 4는 본 발명에 따른 FTL에서의 가비지 컬렉션 관련 신호 처리의 흐름도이다. FTL(120)은 호스트(100)로부터 수신한 읽기/쓰기의 요청을 수행한다(S200). 다음으로 FTL(120)은 가비지 컬렉션이 필요한지를 판단한다(S210). 판단 기준의 일예로 SSD에 빈 블록(free block)의 개수가 미리 설정된 제1 임계값 이하이면 가비지 컬렉션이 필요한 것으로 판단할 수 있다. SSD에 빈 블록의 개수가 미리 설정된 제1 임계값 이상이면 가비지 컬렉션이 필요하지 않은 것으로 판단하고 플래시 메모리 관련 태스크에 따라 계속 동작한다.
다음으로 FTL(120)은 가비지 컬렉션이 즉시 필요하여 호스트(100)의 허가에 관계없이 가비지 컬렉션을 실시할지 여부를 판단한다(S220). 판단 기준의 일예로 SSD에 빈 블록의 개수가 미리 설정된 제2 임계값 이하이면 호스트(100)로부터의 허가없이 가비지 컬렉션이 즉시 필요한 것으로 판단할 수 있다. 즉, 플래시 메모리 장치의 FTL(120)은 가비지 컬렉션 요청에 따른 허가가 없더라도 기 설정된 정책에 따라 가비지 컬렉션을 실시하며 그 상태를 호스트(100)에 제공한다.
가비지 컬렉션이 즉시 필요한 것으로 판단되면 가비지 컬렉션 플래그를 설정하여 가비지 컬렉션을 수행한다는 상태를 호스트(100)에 전송하고, 가비지 컬렉션을 실행한 후, 가비지 컬렉션 플래그를 해제하여 가비지 컬렉션이 종료되었음을 호스트(100)에 전송한다(S250). 반면 SSD에 빈 블록의 개수가 미리 설정된 제2 임계값 이상이고 제1 임계값 이하이면 호스트(100)를 무시하고 가비지 컬렉션을 실시할 정도로 가비지 컬렉션이 즉시 필요하지는 않은 것으로 판단하여 호스트에 가비지 컬렉션의 승인을 요청한다(S230).
다음으로 호스트(100)로부터의 가비지 컬렉션 승인이 있는지를 확인하여(S240), 호스트(100)로부터 가비지 컬렉션의 승인이 있으면 가비지 컬렉션 플래그를 설정하여 가비지 컬렉션을 수행한다는 상태를 호스트(100)에 전송하고, 가비지 컬렉션을 실행한 후, 가비지 컬렉션 플래그를 해제하여 가비지 컬렉션이 종료되었음을 호스트(100)에 전송한다(S250). 반면 호스트(100)로부터 가비지 컬렉션의 승인이 없으면 FTL(120)은 가비지 컬렉션이 즉시 필요하여 호스트(100)를 무시하고 가비지 컬렉션을 실시할 정도가 될 때까지 호스트(100)로부터 수신한 읽기/쓰기 요청을 실행한다.
이와 같이 FTL(120)은 기 설정된 정책에 따라 가비지 컬렉션 필요 시점을 판단하여 가비지 컬렉션 허가 요청을 호스트(100)에 전달하거나 이를 수행하여 효과적인 가비지 컬렉션의 수행이 가능하다.
도 5는 본 발명에 따른 호스트에서의 가비지 컬렉션 관련 신호 처리의 흐름도이다. 호스트(100)는 SSD 태스크, 즉 플래시 메모리 관련 태스크에 의해 플래시 메모리에 읽기/쓰기 요청이 발생했는지를 확인한다(S300). 읽기/쓰기 요청이 확인되면 FTL(120)에서 가비지 컬렉션이 실행중인지를 확인한다(S310). FTL(120)에서 가비지 컬렉션이 실행되고 있지 않으면 FTL(120)에 SSD 서비스, 즉 플래시 메모리에 읽기/쓰기를 요청하고(S360), FTL(120)에서 가비지 컬렉션이 실행되고 있으면 읽기/쓰기 요청이 발생한 플래시 메모리 관련 태스크가 태스크 대기 행렬에 있는 다른 태스크보다 우선순위가 높은지를 확인한다(S320).
우선순위가 높은 것으로 확인되면 FTL(120)에 읽기/쓰기를 요청한다(S360). 이에 따라 FTL(120)에서 가비지 컬렉션이 종료된 후, 우선적으로 처리할 수 있게 된다. 반면, 우선순위가 높지 않은 것으로 확인되면 태스크 대기 행렬에 플래시 메모리 비관련 태스크가 존재하는지를 확인한다(S330). 태스크 대기 행렬에 플래시 메모리 비관련 태스크가 존재하지 않으면 FTL(120)에 읽기/쓰기를 요청하고(S360), 태스크 대기 행렬에 플래시 메모리 비관련 태스크가 존재하면 SSD 서비스를 요청하는 태스크를 블록하고 태스크 대기 행렬에 SSD 태스크를 삽입한다(S340). 다음으로 태스크 대기 행렬로부터 플래시 메모리 비관련 태스크를 할당한다(S350).
이와 같이 플래시 메모리 관련 태스크가 있고 FTL(120)에서 가비지 컬렉션이 실행되는 경우에, 호스트(100)에서는 FTL(120)에서 가비지 컬렉션이 종료되는 것을 마냥 기다리지 않고 태스크의 우선순위를 판단하고, 다른 태스크를 먼저 수행함으로써 시스템의 원활한 동작이 가능한 효과가 있다.
전술한 내용은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
100 호스트
105 어플리케이션
110 파일 시스템
120 FTL
121 어드레스 맵핑 모듈
122 소모 레벨링(wear leveling) 모듈
123 가비지 컬렉션 모듈
130 MTD(Memory Technology Device) 레이어
140 플래시 메모리
105 어플리케이션
110 파일 시스템
120 FTL
121 어드레스 맵핑 모듈
122 소모 레벨링(wear leveling) 모듈
123 가비지 컬렉션 모듈
130 MTD(Memory Technology Device) 레이어
140 플래시 메모리
Claims (13)
- 태스크 스케줄링을 위한 가비지 컬렉션 수행방법에 있어서,
플래시 변환 계층을 포함하는 플래시 메모리 장치와 연동하는 호스트의 가비지 컬렉션 수행 방법으로서,
상기 플래시 메모리 장치의 플래시 변환 계층으로부터 가비지 컬렉션 수행 허가 요청을 수신하는 요청 수신 단계; 및
수행 또는 수행 예정 태스크의 종류에 따라 상기 플래시 메모리의 플래시 변환 계층으로 상기 가비지 컬렉션의 수행을 허가 또는 불허하는 단계;를 포함하는 가비지 컬렉션 수행방법. - 태스크 스케줄링을 위해서, 플래시 변환 계층을 포함하는 플래시 메모리 장치와 연동하는 호스트의 가비지 컬랙션 수행 방법으로서,
상기 플래시 메모리 장치의 플래시 변환 계층으로부터 가비지 컬렉션 요청을 수신하는 수신 단계;
상기 가비지 컬렉션 요청 수신 시 수행하고 있는 태스크가 플래시 메모리 비관련 태스크일 때, 가비지 컬렉션 요청에 대한 허가 정보를 상기 플래시 메모리 장치의 플래시 변환 계층에 전달하는 허가 단계;
상기 가비지 컬렉션 요청 수신 시 수행하고 있는 태스크가 플래시 메모리 관련 태스크이고 태스크 대기 행렬에 플래시 메모리 비관련 태스크가 존재할 때, 현재 수행하고 있는 태스크를 블록하고 상기 현재 수행하고 있는 태스크를 상기 태스크 대기 행렬에 삽입하고, 상기 플래시 메모리 비관련 태스크를 수행하는 태스크 스위칭을 실시한 후 가비지 컬렉션 요청에 대한 허가 정보를 상기 플래시 메모리 장치의 플래시 변환 계층에 전달하는 태스크 스위칭 허가 단계; 및
상기 가비지 컬렉션 요청 수신에 따라 현재 수행하고 있는 태스크가 플래시 메모리 관련 태스크이면서 상기 태스크 대기 행렬에 플래시 메모리 비관련 태스크가 존재하지 않을 때, 상기 가비지 컬렉션 요청을 허가하지 않는 불허 단계;를 포함하는 것을 특징으로 하는 가비지 컬렉션 수행 방법. - 태스크 스케줄링을 위해서, 플래시 변환 계층을 포함하는 플래시 메모리 장치에서 가비지 컬렉션을 수행하는 방법에 있어서,
호스트로부터의 플래시 메모리 관련 태스크를 수신하는 단계;
가비지 컬렉션이 필요한지를 판단하는 단계;
상기 판단 결과, 상기 가비지 컬렉션이 필요할 때, 상기 가비지 컬렉션이 즉시 필요하여 상기 호스트의 허가에 관계없이 상기 가비지 컬렉션을 실시할지 여부를 확인하는 단계; 및
상기 확인 결과, 상기 가비지 컬렉션이 즉시 필요할 때, 가비지 컬렉션 플래그를 설정하여 가비지 컬렉션을 수행한다는 상태를 상기 호스트에 전송하고, 상기 호스트 허가없이 가비지 컬렉션을 수행하고 그 상태를 상기 호스트에서 확인할 수 있도록 설정하는 단계;를 포함하는 것을 특징으로 하는 가비지 컬렉션 수행 방법. - 제 3 항에 있어서,
상기 판단 결과 또는 상기 확인 결과, 상기 가비지 컬렉션이 필요없거나 상기 가비지 컬렉션이 즉시 필요하지 않을 때, 상기 호스트에 상기 가비지 컬렉션의 허가를 요청하는 단계; 및
상기 호스트로부터 상기 가비지 컬렉션 허가 수신시 상기 가비지 컬렉션을 수행하여 그 상태를 상기 호스트에서 확인할 수 있도록 설정하는 단계;를 더 포함하는 것을 특징으로 하는 가비지 컬렉션 수행 방법. - 제 3 항에 있어서,
상기 플래시 메모리 장치의 플래시 변환 계층은,
기설정된 정책에 따라 가비지 컬렉션 필요 시점을 판단하여 상기 가비지 컬렉션 요청을 상기 호스트에 전달하는 것을 특징으로 하는 가비지 컬렉션 수행 방법. - 제 3 항에 있어서,
상기 플래시 메모리 장치의 플래시 변환 계층은,
상기 가비지 컬렉션 요청에 따른 허가가 없더라도 기설정된 정책에 따라 가비지 컬렉션을 실시하며 그 상태를 상기 호스트에 제공하는 것을 특징으로 하는 가비지 컬렉션 수행 방법. - 태스크 스케줄링을 위해서, 플래시 변환 계층을 포함하는 플래시 메모리 장치와 연동하는 호스트의 가비지 컬랙션 수행 방법으로서,
플래시 메모리 관련 태스크가 확인되고 가비지 컬렉션이 실행 중일 때, 상기 플래시 메모리 관련 태스크가 태스크 대기 행렬에 있는 다른 태스크보다 우선순위가 높은지를 확인하는 단계;
상기 확인 결과, 상기 플래시 메모리 관련 태스크가 태스크 대기 행렬에 있는 다른 태스크보다 우선순위가 낮거나 같을 때, 상기 태스크 대기 행렬에 플래시 메모리 비관련 태스크가 존재하는지 여부를 판단하는 단계;
상기 판단 결과, 상기 태스크 대기 행렬에 플래시 메모리 비관련 태스크가 존재할 때, 상기 플래시 메모리 관련 태스크를 블록하고 상기 플래시 메모리 관련 태스크를 상기 태스크 대기 행렬에 삽입하는 단계; 및
상기 태스크 대기 행렬로부터 플래시 메모리 비관련 태스크를 할당하여 상기 플래시 변환 계층에 가비지 컬렉션을 허가하는 단계;를 포함하는 것을 특징으로 하는 가비지 컬렉션 수행 방법. - 제 7 항에 있어서,
상기 확인 결과, 상기 플래시 메모리 관련 태스크가 태스크 대기 행렬에 있는 다른 태스크보다 우선순위가 높을 때, 상기 플래시 변환 계층에 상기 플래시 메모리 관련 태스크를 요청하는 단계를 더 포함하는 것을 특징으로 하는 가비지 컬렉션 수행 방법. - 삭제
- 삭제
- 삭제
- 삭제
- 태스크 스케줄링을 위해서, 호스트 및 플래시 변환 계층을 포함하는 플래시 메모리 장치에 있어서,
상기 호스트가 상기 플래시 변환 계층으로부터 가비지 컬렉션의 허가를 요청을 받을 때 태스크 대기 행렬에 플래시 메모리 비관련 태스크가 존재하는지를 판단하고, 상기 태스크 대기 행렬에 상기 플래시 메모리 비관련 태스크가 존재할 때 상기 태스크 대기 행렬로부터 상기 플래시 메모리 비관련 태스크를 할당하여 상기 플래시 변환 계층에 가비지 컬렉션을 허가하는 플래시 메모리 장치.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140017316A KR101549569B1 (ko) | 2014-02-14 | 2014-02-14 | 가비지 컬렉션 수행 방법 및 그 방법을 이용한 플래시 메모리 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140017316A KR101549569B1 (ko) | 2014-02-14 | 2014-02-14 | 가비지 컬렉션 수행 방법 및 그 방법을 이용한 플래시 메모리 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150096177A KR20150096177A (ko) | 2015-08-24 |
KR101549569B1 true KR101549569B1 (ko) | 2015-09-03 |
Family
ID=54058744
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140017316A KR101549569B1 (ko) | 2014-02-14 | 2014-02-14 | 가비지 컬렉션 수행 방법 및 그 방법을 이용한 플래시 메모리 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101549569B1 (ko) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102467032B1 (ko) * | 2015-10-08 | 2022-11-14 | 삼성전자주식회사 | 메모리 스케줄링 방법 및 메모리 시스템의 동작방법 |
KR102076248B1 (ko) * | 2018-08-08 | 2020-02-11 | 아주대학교산학협력단 | 선택 지연 가비지 컬렉션 방법 및 이를 이용한 메모리 시스템 |
KR20210158043A (ko) | 2020-06-23 | 2021-12-30 | 삼성전자주식회사 | 스트림 분류 번호에 따른 데이터 분류 스토리지 장치 및 그 동작 방법 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100823171B1 (ko) | 2007-02-01 | 2008-04-18 | 삼성전자주식회사 | 파티션된 플래시 변환 계층을 갖는 컴퓨터 시스템 및플래시 변환 계층의 파티션 방법 |
JP2011209963A (ja) * | 2010-03-29 | 2011-10-20 | Mitsubishi Electric Corp | メモリ制御装置及びメモリ制御方法 |
-
2014
- 2014-02-14 KR KR1020140017316A patent/KR101549569B1/ko active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100823171B1 (ko) | 2007-02-01 | 2008-04-18 | 삼성전자주식회사 | 파티션된 플래시 변환 계층을 갖는 컴퓨터 시스템 및플래시 변환 계층의 파티션 방법 |
JP2011209963A (ja) * | 2010-03-29 | 2011-10-20 | Mitsubishi Electric Corp | メモリ制御装置及びメモリ制御方法 |
Also Published As
Publication number | Publication date |
---|---|
KR20150096177A (ko) | 2015-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11237769B2 (en) | Memory system and method of controlling nonvolatile memory | |
US10360156B2 (en) | Data storage device using host memory and method of operating same | |
US10871920B2 (en) | Storage device and computer system | |
CN107885456B (zh) | 减少io命令访问nvm的冲突 | |
KR102549545B1 (ko) | 스토리지 장치 및 스토리지 장치의 동작 방법 | |
US20130212319A1 (en) | Memory system and method of controlling memory system | |
TWI601060B (zh) | 資料傳輸方法、記憶體儲存裝置及記憶體控制電路單元 | |
US8984219B2 (en) | Data storage device and method of writing data in the same | |
JP2018049522A (ja) | メモリシステム及び制御方法 | |
JP7279889B2 (ja) | メモリブロックリクレーム方法およびメモリブロックリクレーム装置 | |
CN106469126B (zh) | 处理io请求的方法及其存储控制器 | |
US20210240667A1 (en) | User device including storage device and trim management method thereof | |
US11392309B2 (en) | Memory system for performing migration operation and operating method thereof | |
US10817186B2 (en) | Memory system | |
JP2021033849A (ja) | メモリシステムおよび制御方法 | |
US20140372673A1 (en) | Information processing apparatus, control circuit, and control method | |
CN110134328A (zh) | 存储控制装置、存储控制方法和计算机可读记录介质 | |
CN110908595B (zh) | 存储装置及信息处理系统 | |
KR101549569B1 (ko) | 가비지 컬렉션 수행 방법 및 그 방법을 이용한 플래시 메모리 장치 | |
CN118092807A (zh) | 缓存空间调配方法及存储器存储装置 | |
WO2020051839A1 (en) | Class-based dynamic memory slot allocation | |
CN106874223B (zh) | 数据传输方法、存储器存储装置及存储器控制电路单元 | |
CN109213425B (zh) | 利用分布式缓存在固态存储设备中处理原子命令 | |
CN107885667B (zh) | 降低读命令处理延迟的方法与装置 | |
TWI486966B (zh) | 快閃記憶體儲存裝置、其控制器與寫入管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20180723 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20190808 Year of fee payment: 5 |