KR101373613B1 - 환형 구조의 비휘발성 메모리 캐쉬를 포함하는 하이브리드 스토리지 장치 - Google Patents

환형 구조의 비휘발성 메모리 캐쉬를 포함하는 하이브리드 스토리지 장치 Download PDF

Info

Publication number
KR101373613B1
KR101373613B1 KR1020120007544A KR20120007544A KR101373613B1 KR 101373613 B1 KR101373613 B1 KR 101373613B1 KR 1020120007544 A KR1020120007544 A KR 1020120007544A KR 20120007544 A KR20120007544 A KR 20120007544A KR 101373613 B1 KR101373613 B1 KR 101373613B1
Authority
KR
South Korea
Prior art keywords
area
block
cache
data
read
Prior art date
Application number
KR1020120007544A
Other languages
English (en)
Other versions
KR20130086691A (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 KR1020120007544A priority Critical patent/KR101373613B1/ko
Priority to US13/623,414 priority patent/US20130198453A1/en
Publication of KR20130086691A publication Critical patent/KR20130086691A/ko
Application granted granted Critical
Publication of KR101373613B1 publication Critical patent/KR101373613B1/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/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; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/313In storage device
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

스토리지 장치가 제공된다. 본 스토리지 장치는, 저장 영역이 환형 구조로 구성되고 읽기 캐쉬 영역과 쓰기 캐쉬 영역이 구분되어 있어 전력 소모가 적고 속도가 빠른 스토리지 장치를 제공할 수 있게 된다.

Description

환형 구조의 비휘발성 메모리 캐쉬를 포함하는 하이브리드 스토리지 장치{Hybrid storage device including non-volatile memory cache having ring structure}
본 발명은 스토리지 장치에 관한 것으로, 더욱 상세하게는 환형 구조의 비휘발성 메모리 캐쉬를 포함하는 하이브리드 스토리지 장치에 관한 것이다.
최근 환경 문제로 인한 그린 IT에 대한 관심이 높아지면서, 전력 소비량이 높은 스토리지 시스템의 효율적인 에너지 관리에 대한 다양한 연구가 진행되고 있다. 인터넷의 발달로 웹서버, 전자 상거래 등 네트워크 서비스가 크게 활성화 됨으로써 많은 양의 데이터를 저장하기 위해 고성능 대용량 디스크가 사용되고, 데이터 백업 역시 테이프를 대체하여 디스크를 사용하고 있는 추세이다. 디스크는 I/O 동작을 수행하는 활성화모드(Active Mode), IO 요청을 대기하는 아이들 모드(Idle Mode), 그리고 일정기간 IO 요청이 없을 경우 디스크 회전을 멈추는 대기모드(Standby Mode)로 구분할 수 있다. 아이들 모드일 때 소비되는 전력은 활성 모드일때 소비되는 전력과 20%만 절약된다. 결국, 디스크는 대기 모드로 진입하지 않으면 IO 동작을 수행하지 않는 상태에서도 많은 양의 전력을 소비하게 된다.
디스크의 소비 전력을 크게 줄이기 위한 방법으로, 플래시 메모리를 디스크로 대체하여 사용하는 방법이 사용되고 있다. 플래시 메모리는 디스크보다 짧은 지연시간과 전력 소비량을 가진다. 하지만 플래시 메모리는 단위 용량당 가격이 디스크에 비해 월등히 비싸기 때문에 대용량 디스크로 운용되는 스토리지 시스템에는 부적합하다. 대신 플래시 메모리를 캐시로 활용하여 빈번하게 재사용되는 데이터를 캐시에 올려 디스크를 대기상태로 머물게 함으로써 에너지를 절약하고 성능을 향상시킬 수 있다. 이는 DRAM 캐시를 확장하여 사용하는것 보다 지연시간은 나쁠 수 있으나, DRAM에 비해 저렴하고 랜덤 액세스 read 성능이 좋아 디스크 캐시로써 좋은 대안이 된다.
이와 같이, 디스크의 성능 향상과 에너지 절약을 윙해 플래시 메모리 캐시를 사용하는 방법은 일찍이 연구되었다. 하지만, 이 연구는 기본적인 시스템 구조와 알고리즘만을 제안하고 플래시 메모리 특성에 따른 데이터 할당, wear-leveling 등에 대한 고려가 없다.
이와 같이, 플래시 메모리를 캐시로 사용함에 있어, 플래시 메모리의 특성을 고려한 플래시 메모리 관리방법을 제공하기 위한 방안의 모색이 요청된다.
본 발명은 상기와 같은 문제점을 해결하기 위하여 안출된 것으로서, 본 발명의 목적은, 저장 영역이 환형 구조로 구성되고 읽기 캐쉬 영역과 쓰기 캐쉬 영역이 구분되어 있는 스토리지 장치를 제공함에 있다.
상기 목적을 달성하기 위한 본 발명의 일 실시예에 따른, 스토리지 장치는, 비휘발성 메모리로 구성되어 데이터를 임시로 저장하는 캐쉬 기능을 수행하는 비휘발성 메모리 캐쉬; 및 상기 비휘발성 메모리 캐쉬로부터 데이터를 액세스하는 CPU;를 포함하고, 상기 비휘발성 메모리 캐쉬는, 저장 영역이 환형 구조로 구성된다.
또한, 상기 비휘발성 메모리 캐쉬는, 읽기 캐쉬 영역과 쓰기 캐쉬 영역이 구분되어 있을 수도 있다.
그리고, 상기 읽기 캐쉬 영역은 상기 쓰기 캐쉬 영역보다 더 많은 저장 영역이 할당될 수도 있다.
또한, 상기 비휘발성 메모리 캐쉬는, 쓰기 액세스 작업을 위해 사용되는 쓰기 캐쉬 영역; 읽기 액세스 작업을 위해 사용되는 읽기 캐쉬 영역; 아웃 플레이스 업데이트 및 가비지 컬렉션(garbage collection)을 위해 예약된 영역인 제1 예약 영역 및 제2 예약 영역;을 포함할 수도 있다.
그리고, 상기 제1 예약 영역은 상기 쓰기 캐쉬 영역과 같거나 상기 쓰기 캐쉬 영역의 1~2배 내의 크기로 할당되고, 상기 제2 예약 영역은 상기 쓰기 캐쉬 영역과 같거나 상기 쓰기 캐쉬 영역의 1~2배 내의 크기로 할당될 수도 있다.
또한, 상기 비휘발성 메모리 캐쉬는, SSD(Solid State Drive), 플래시 메모리 중 어느 하나일 수도 있다.
본 발명의 다양한 실시예에 따르면, 저장 영역이 환형 구조로 구성되고 읽기 캐쉬 영역과 쓰기 캐쉬 영역이 구분되어 있는 스토리지 장치를 제공할 수 있게 되어 전력 소모가 적고 속도가 빠른 스토리지 장치를 제공할 수 있게 된다.
도 1은 본 발명의 일 실시예에 따른, 비휘발성 메모리 캐쉬(Cache)를 이용하는 스토리지 장치의 구조를 도시한 도면,
도 2는 본 발명의 일 실시예에 따른, 환형 구조의 비휘발성 메모리 캐쉬(200)의 구조를 도시한 도면,
도 3a는 본 발명의 일 실시예에 따른 하나의 블록의 구조를 도시한 도면,
도 3b는 본 발명의 일 실시예에 따른, 복수개의 페이지를 포함하는 블록을 도시한 도면,
도 4a는 본 발명의 일 실시예에 따른, 데이터가 처리되기 전의 환형 구조의 비휘발성 메모리 캐쉬의 상태를 도시한 도면,
도 4b는 본 발명의 일 실시예에 따른, 읽기 및 쓰기에 대한 데이터 처리가 수행된 경우를 도시한 도면,
도 4c는 본 발명의 일 실시예에 따른, 제2 블록의 데이터가 아웃 플레이스 업데이트되는 경우를 도시한 도면,
도 5a는 본 발명의 일 실시예에 따른, 읽기 캐쉬 영역의 빈 블록이 1개 남은 상태에서 3개의 블록에 해당되는 새로운 데이터에 대한 액세스가 발생한 경우를 도시한 도면,
도 5b는 본 발명의 일 실시예에 따른, 3개의 블록이 빈 블록으로 선정된 상태를 도시한 도면,
도 6a는 본 발명의 일 실시예에 따른, 읽기 캐쉬 영역의 빈 블록이 1개 남은 상태에서 3개의 블록에 해당되는 새로운 데이터에 대한 액세스가 발생한 경우를 도시한 도면,
도 6b는 본 발명의 일 실시예에 따른, 액세스 리스트를 이용하여 3개의 블록이 빈 블록으로 선정된 상태를 도시한 도면,
도 7a는 본 발명의 일 실시예에 따른, 쓰기 캐쉬 영역이 모두 사용된 경우를 도시한 도면,
도 7b는 본 발명의 일 실시예에 따른, 가비지 콜랙션 과정에서 1개의 블록만큼 시계방향으로 쓰기 캐쉬 영역이 이동된 상태를 도시한 도면이다.
이하에서는 도면을 참조하여 본 발명을 보다 상세하게 설명한다.
도 1은 본 발명의 일 실시예에 따른, 비휘발성 메모리 캐쉬(Cache)를 이용하는 스토리지 장치(100)의 구조를 도시한 도면이다. 도 1에 도시된 바와 같이, 스토리지 장치(100)는 스토리지 컨트롤러(110) 및 디스크 어레이(120)를 포함한다.
도 1에 도시된 바와 같이, 스토리지 컨트롤러(110)는 CPU(112), 메모리(114), 및 비휘발성 메모리 캐쉬(116)를 포함한다. CPU(112)는 스토리지 장치(100)의 전반적인 동작을 제어한다. 메모리(114)는 CPU가 처리하는 데이터를 임시로 저장하는 공간으로 RAM 및 캐쉬메모리 등이 포함된다.
비휘발성 메모리 캐쉬(116)는 SSD 등의 비휘발성 메모리를 이용한 대용량 캐쉬에 해당된다. 비휘발성 메모리 캐쉬(116)에 사용되는 비휘발성 메모리는 플래쉬 메모리가 이용된 SSD가 될 수 있으며, 이외에도 다양한 종류의 비휘발성 메모리를 이용하는 SSD(Solid State Drive) 가 이용될 수 있다. 예를 들어, 비휘발성 메모리 캐쉬(116)는 SSD, 플래시 메모리 등 비휘발성 메모리 캐쉬라면 어떤 것이라도 적용될 수 있음은 물론이다.
디스크 어레이(120)는 복수개의 디스크가 포함되어 대용량 저장 공간을 구현하게 된다.
CPU(112)는 데이터 접근이 요청되면 먼저 메모리(114)에 데이터가 존재하는지 검색한다. 그리고, CPU(112)는 메모리(114)에 데이터가 있으면 해당 데이터에 액세스하게 된다. 반면, CPU(112)는 메모리(114)에 데이터가 없으면 해당 데이터가 비휘발성 메모리 캐쉬(116)에 있는지 여부를 검색한다. 그리고, CPU(112)는 비휘발성 메모리 캐쉬(116)에 데이터가 있으면 해당 데이터에 액세스하게 된다. 반면, CPU(112)는 비휘발성 메모리 캐쉬(116)에 데이터가 없으면 디스크 어레이(120)에서 해당 데이터를 액세스하게 된다.
이와 같이, CPU(1120)는 메모리(114) -> 비휘발성 메모리 캐쉬(116) -> 디스크 어레이(120)의 순으로 데이터 액세스를 시도하게 된다. 이에 따라, 스토리지 장치(100)는 비휘발성 메모리 캐쉬(116)를 이용함으로써 디스크 IO 퍼포먼스를 향상시킬 수 있고 디스크어레이(120)의 전력 소모를 줄일 수 있게 된다.
한편, 도 1의 스토리지 장치(100)는 비휘발성 메모리 캐쉬(116)를 포함하는 전자 장치이면 어느 것이라도 적용될 수 있음은 물론이다. 예를 들어, 스토리지 장치(100)는 비휘발성 메모리 캐쉬(116)를 포함하는 컴퓨터 장치, 디스크 어레이 장치, 서버 장치, 노트북 컴퓨터, 휴대폰 등이 될 수 있음은 물론이다.
이하에서는, 비휘발성 메모리 캐쉬(116)의 구조 및 동작에 관하여 상세히 설명한다. 이하에서 설명되는 비휘발성 메모리 캐쉬(116)의 구조 및 동작은 이하에서 설명되는 알고리즘에 따라 CPU(112)에 의해 수행될 수도 있다.
도 2는 본 발명의 일 실시예에 따른, 환형 구조의 비휘발성 메모리 캐쉬(200)의 구조를 도시한 도면이다. 여기에서, 비휘발성 메모리 캐쉬(200)는 도 1의 비휘발성 메모리 캐쉬(160)에 해당되는 것으로, SSD 캐쉬, 플래시 메모리 캐쉬 등이 될 수 있다.
도 2에 도시된 바와 같이, 비휘발성 메모리 캐쉬(200)는 저장 영역의 블록들이 환형 구조로 구성된다. 실제로, 비휘발성 메모리 캐쉬(200)는 가장 마지막 데이터 블록이 가장 처음 블록과 연결됨으로써 환형 구조를 가지게 될 수 있게 된다.
도 2에 도시된 바와 같이, 비휘발성 메모리 캐쉬(200)는 쓰기 캐쉬 영역(210), 읽기 캐쉬 영역(220), 제1 예약 영역(230), 및 제2 예약 영역(240)을 포함한다.
쓰기 캐쉬 영역(210)은 쓰기 액세스 작업을 진행하기 위해 사용되는 영역이고, 읽기 캐쉬 영역(220)은 읽기 액세스 작업을 진행하기 위해 사용되는 영역이다. 이와 같이, 비휘발성 메모리 캐쉬(200)는 읽기 영역과 쓰기 영역이 구분되어져 있음으로써, 캐쉬의 미스율을 감소시킬 수 있게 된다.
또한, 도 2에 도시된 바와 같이, 읽기 캐쉬 영역(220)은 쓰기 캐쉬영역(210)보다 더 많은 저장 영역이 할당된 것을 확인할 수 있다. 읽기 캐쉬 영역(220)은 히트율이 높고 아웃 플레이스 업데이트(out place update)에 민감하지 않으며 읽기 액세스가 쓰기 액세스보다 많기 때문에, 읽기 캐쉬 영역(220)을 많이 할당함으로써 IO 효율을 극대화할 수 있게 된다.
구체적으로, 읽기 캐쉬 영역(220), 쓰기 캐쉬 영역(210), 제1 예약 영역(230), 및 제2 예약 영역(240)이 각각 전체 캐쉬 공간의 70%, 10%, 10%, 10%를 차지할 수 있다.
또한, 제1 예약 영역(230) 및 제2 예약 영역(240)은 아웃 플레이스 업데이트 및 가비지 컬렉션(garbage collection)을 위해 예약된 영역이다.
아웃 클레이스 업데이트(out-place update)는 비휘발성 메모리인 플래시 메모리의 전기적 특성에 기인하여 데이터를 업데이트 하는 방식에 해당된다. 플래시 메모리의 전기적 특성으로 한번 쓰인 페이지에 데이터를 덮어쓰기(in-place update)를 할 수 없다. 따라서 플래시 메모리에서 데이터를 수정할 때는 비어있는 영역을 할당하여 새로운 데이터를 기록하고 이전 데이터 페이지는 스패어 영역에 무효화 표시를 하게 되는데, 이러한 방법을 아웃플레이스 업데이트(out-place update)라고 한다. 이 때, 아웃플레이스 업데이트를 위해 새로운 데이터를 기록하는 영역이 제1 예약 영역(230) 및 제2 예약 영역(240)이 된다.
또한, 쓰기 캐쉬 영역(210) 내의 대부분의 페이지가 쓰여져서 비어있는 영역이 부족해지면 가비지 컬렉션이 필요해진다. 가비지 컬렉션(garbage collection)은 쓰기 캐쉬 영역(210) 내의 블록에 퍼져있는 무효화된 페이지가 포함된 블록을 삭제하여 빈 블록 영역을 확보하는 것이다. 이와 같은 가비지 컬렉션에 제1 예약 영역(230) 및 제2 예약 영역(240)이 사용된다. 이를 위해, 제1 예약 영역(230) 및 제2 예약 영역(240)은 각각 쓰기 캐쉬 영역(210)과 같거나 1~2배 내의 크기로 할당된다.
도 2에 도시된 바와 같이, 환형 구조의 비휘발성 메모리 캐쉬(200)는 블록 단위로 구분되어 있는 것을 확인할 수 있다. 이하에서는, 도 3a 및 도 3b를 참고하여 블럭 단위의 구조를 상세하게 설명한다.
도 3a는 본 발명의 일 실시예에 따른 하나의 블록(300)의 구조를 도시한 도면이다. 도 3a에 도시된 바와 같이, 하나의 블록(300)은 데이터 영역(310)과 스패어(spare) 영역을 포함한다. 데이터 영역(310)은 실질적인 데이터가 페이지 단위로 기록되는 영역이다. 그리고, 스패어 영역(320)은 해당 블록 단위 및 블록 내의 페이지 단위로 관련된 메타 데이터가 기록된다. 구체적으로, 스패어 영역(320)에는 데이터 영역(310)에 데이터가 기록되어 있는지 여부, 접근이 있었는지 여부 및 데이터 영역(310)에 기록된 데이터가 유효한지 여부가 기록될 수 있다. 예를 들어, 읽기 캐쉬 영역(220)의 한 블록의 스패어 영역(320)은 값이 없을 경우 빈 블록을 나타내고, 값이 "0"인 경우 데이터 영역(310)에 데이터가 기록되어 있으나 접근이 없었던 것을 나타내며, 값이 "1"인 경우, 데이터 영역(310)에 데이터가 기록되어 있으며 접근이 있었던 것을 나타낸다.
한편, 하나의 블록(300)은 복수개의 페이지를 포함한다. 도 3b는 본 발명의 일 실시예에 따른, 복수개의 페이지를 포함하는 블록(300)을 도시한 도면이다. 도 3b에 도시된 바와 같이, 하나의 블록(300)은 복수개의 페이지를 포함하는 것을 확인할 수 있다. 하나의 페이지는 페이지 데이터 영역(311) 및 페이지 스패어 영역(321)을 포함한다. 페이지 데이터 영역(311)은 실제로 데이터의 읽기 및 쓰기의 단위 영역이 된다. 그리고, 페이지 스패어 영역(321)은 해당 페이지의 상태를 나타내는 정보가 기록된다.
예를 들어, 쓰기 캐쉬 영역(210)의 한 페이지의 페이지 스패어 영역(321)은 값이 없을 경우 빈 페이지을 나타내고, 값이 "I"인 경우 페이지 데이터 영역(311)에 데이터가 기록되어 있으나 무효화(Invalid)된 것을 나타내며, 값이 "V"인 경우, 페이지 데이터 영역(311)에 데이터가 기록되어 있으며 유효한 데이터(Valid)임을 나타낸다.
또한, 쓰기 캐쉬 영역(210)의 한 블록의 스패어 영역(320)은 값이 없을 경우 모든 페이지가 비어있는 빈 블록을 나타내고, 값이 "I"인 경우 해당 블록에 포함된 복수의 페이지 중 하나라도 무효화된 페이지가 있는 경우를 나타내며, 값이 "V"인 경우, 해당 블록에 포함된 복수의 페이지가 모두 유효한 경우를 나타낸다.
이하에서는, 환형 구조의 비휘발성 메모리 캐쉬(200)에 데이터를 읽고 쓰기 위한 데이터 처리 방법에 대해 설명한다. 환형 구조의 비휘발성 메모리 캐쉬(200)는 쓰기 캐쉬 영역(210)에는 페이지 단위로 액세스가 실행되고, 읽기 캐쉬 영역(220)에는 블록 단위로 액세스가 실행된다.
첫번째로, 환형 구조의 비휘발성 메모리 캐쉬(200)에서 데이터를 읽는 방법에 대해 설명한다.
읽기 액세스가 요청된 경우, 스토리지 장치(100)는 요청된 읽기 액세스에 대응되는 데이터인 제1 데이터가 비휘발성 메모리 캐쉬(200)의 읽기 캐쉬 영역(220)에 존재하는지 여부를 블록단위로 검색한다.
제1 데이터가 읽기 캐쉬 영역(220)에 존재하는 경우, 스토리지 장치(100)는 제1 데이터에 대응되는 블록인 제1 블록으로부터 해당 데이터를 읽는다. 그리고, 스토리지 장치(100)는 제1 블록의 스패어 영역에 액세스가 있었음을 표시한다. 예를 들어, 스토리지 장치(100)는 제1 블록의 스패어 영역에 액세스 여부를 표시하는 비트를 '0'에서 '1'로 변경하게 된다. 그 후에, 스토리지 장치(100)는 제1 블록 다음에 위치된 빈 블록에 읽기할당 포인터(R_alloc_ptr)를 대응시킨다. 여기에서, 읽기할당 포인터는 읽기 캐쉬 영역(220)에서 빈 블록을 찾기 위해 사용되는 포인터이다.
반면, 제1 데이터가 읽기 캐쉬 영역(220)에 존재하지 않는 경우, 스토리지 장치(100)는 디스크 어레이(120)로부터 제1 데이터를 읽는다. 그리고, 스토리지 장치(100)는 읽기할당 포인터(R_alloc_ptr)가 대응된 빈 블록인 제2 블록에 제1 데이터를 기록한다. 또한, 스토리지 장치(100)는 제2 블록의 스패어 영역에 데이터가 기록되었으나 액세스는 없었음을 표시한다. 예를 들어, 스토리지 장치(100)는 제1 블록의 스패어 영역에 액세스 여부를 표시하는 비트를 '0'으로 표시하게 된다. 그 후에, 스토리지 장치(100)는 제2 블록 다음에 위치된 빈 블록에 읽기할당 포인터(R_alloc_ptr)를 대응시킨다.
이와 같은 과정을 통해, 스토리지 장치(100)는 환형 구조의 비휘발성 메모리 캐쉬(200)에서 데이터를 읽게 된다.
두번째로, 환형 구조의 비휘발성 메모리 캐쉬(200)에서 데이터를 쓰는 방법에 대해 설명한다.
쓰기 액세스가 요청된 경우, 스토리지 장치(100)는 요청된 쓰기 액세스에 대응되는 데이터인 제2 데이터가 비휘발성 메모리 캐쉬(200)의 쓰기 캐쉬 영역(210)에 존재하는지 여부를 페이지 단위로 검색한다.
제2 데이터가 쓰기 캐쉬 영역(210)에 존재하는 경우, 스토리지 장치(100)는 제2 데이터에 대응되는 페이지인 제1 페이지의 스패어 영역에 기록된 데이터가 무효화 되었음을 표시한다. 예를 들어, 스토리지 장치(100)는 제1 페이지의 스패어 영역의 상태를 표시하는 비트를 'V'에서 'I'로(Valid에서 Invalid로) 변경하게 된다. 또한, 스토리지 장치(100)는 제1 페이지가 포함된 블록인 제3 블록의 스패어 영역에 무효화된 페이지가 있음을 표시한다. 예를 들어, 스토리지 장치(100)는 제3 블록의 스패어 영역의 상태를 표시하는 비트를 'V'(또는 '0')에서 'I'(또는 '1')로(Valid에서 Invalid로) 변경하게 된다. 그 후에, 스토리지 장치(100)는 제1 예약 영역(230)에 제2 데이터를 기록하게 된다. 그리고, 스토리지 장치(100)는 제1 페이지 다음에 위치된 빈 페이지에 쓰기할당 포인터(W_alloc_ptr)를 대응시킨다. 여기에서, 쓰기할당 포인터는 쓰기 캐쉬 영역(210)에서 빈 페이지를 찾기 위해 사용되는 포인터이다. 이와 같은 과정은 변경된 데이터의 업데이트 방법에 해당되며, 이를 아웃 플레이스 업데이트라고 한다.
반면, 제2 데이터가 쓰기 캐쉬 영역(210)에 존재하지 않는 경우, 스토리지 장치(100)는 쓰기 할당 포인터(W_alloc_ptr)가 대응된 빈 페이지인 제2 페이지에 제2 데이터를 기록한다. 그리고, 스토리지 장치(100)는 제2 페이지의 스패어 영역에 기록된 데이터가 유효함을 표시한다. 예를 들어, 스토리지 장치(100)는 제2 페이지의 스패어 영역의 상태를 표시하는 비트를 'V'(또는 '0')로(Valid로) 표시하게 된다. 그리고, 스토리지 장치(100)는 제2 페이지가 포함된 블록에 빈 페이지가 있으면, 다음 빈 페이지로 쓰기할당 포인터(W_alloc_ptr)를 이동시킨다. 반면, 스토리지 장치(100)는 제2 페이지가 포함된 블록에 빈 페이지가 없으면, 다음 블록으로 쓰기할당 포인터(W_alloc_ptr)를 이동시킨다.
이와 같은 과정을 통해, 스토리지 장치(100)는 환형 구조의 비휘발성 메모리 캐쉬(200)에 데이터를 쓰거나 업데이트(아웃 플레이스 업데이트) 하게 된다.
이하에서는, 도 4a 내지 도 4c를 참고하여, 환형 구조의 비휘발성 메모리 캐쉬(200)에 데이터를 읽고 쓰기 위한 데이터 처리 방법에 대해 예를 들어 설명한다.
도 4a는 본 발명의 일 실시예에 따른, 데이터가 처리되기 전의 환형 구조의 비휘발성 메모리 캐쉬(200)의 상태를 도시한 도면이다.
도 4a에 도시된 바와 같이, 읽기 캐쉬 영역(220)에는 빈 블록과 데이터가 기록된 블록이 포함되어 있고, 데이터가 기록된 블록들은 스패어 영역에 데이터에 대한 액세스가 없었음을 나타내는 '0'과 데이터에 대한 액세스가 있었음을 나타내는 '1'이 표시된 것을 확인할 수 있다. 또한, 읽기할당 포인터(R_alloc_ptr)는 빈 블록인 제1 블록(410)에 대응되어 있는 것을 확인할 수 있다.
또한, 도 4a에 도시된 바와 같이, 쓰기 캐쉬 영역(210)에는 빈 블록과 데이터가 기록된 블록이 포함되어 있다. 그리고, 포함된 페이지들 중 적어도 하나의 페이지에 데이터가 기록되어 있고 기록된 페이지가 모두 유효한 페이지인 경우, 해당 블록은 스패어 영역에 데이터에 유효함을 나타내는 'V'가 표시되어 있다. 또한, 쓰기할당 포인터(W_alloc_ptr)는 빈 블록인 제2 블록(420)에 대응되어 있는 것을 확인할 수 있다.
도 4b는 본 발명의 일 실시예에 따른, 읽기 및 쓰기에 대한 데이터 처리가 수행된 경우를 도시한 도면이다. 도 4b에서, ①은 읽기 캐쉬 영역(220)의 제3 블록(430)에 기록된 데이터에 읽기 액세스를 수행하는 것을 나타내고, ②는 읽기 캐쉬 영역(220)에 기록되어 있지 않은 데이터를 제1 블록(410)에 기록하여 읽기 액세스를 수행하는 것을 나타내며, ③은 제2 블록(420)에 데이터를 기록하여 쓰기 액세스를 수행하는 것을 나타낸다.
도 4a와 도 4b를 비교해보면 알 수 있듯이, 제3 블록(430)은 ①의 과정을 수행하면서 스패어 영역의 값이 '0'에서 '1'로 변경된 것을 확인할 수 있다.
그리고, 제1 블록(410)은 ②의 과정을 수행하면서 데이터 영역에 데이터가 기록되고 스패어 영역에 '0'이 표시된 것을 확인할 수 있다. 이 과정에서, 읽기할당 포인터(R_alloc_ptr)는 제1 블록(410)에서 다음 빈 블록인 제4 블록(440)으로 위치가 변경된 것을 확인할 수 있다.
또한, 제2 블록(420)은 ③의 과정을 수행하면서 데이터 영역에 데이터가 기록되고 스패어 영역에 'V'가 표시된 것을 확인할 수 있다. 또한, ③의 과정에서 제2 블록(420)은 모든 페이지가 기록되었기 때문에, 쓰기할당 포인터(W_alloc_ptr)는 제2 블록(420)에서 다음 빈 블록인 제5 블록(450)으로 위치가 변경된 것을 확인할 수 있다.
한편, 도 4c는 본 발명의 일 실시예에 따른, 제2 블록(420)의 데이터가 아웃 플레이스 업데이트되는 경우를 도시한 도면이다.
도 4c에서 ①은 쓰기 캐쉬 영역(210)의 제2 블록(420)에 기록된 데이터에 대해 아웃 플레이스 업데이트를 수행하는 것을 나타내고 있다. 도 4c에 도시된 바와 같이, 제2 블록(420)에 기록된 데이터 중 일부 또는 전부에 해당되는 페이지의 데이터가 업데이트되는 경우, 업데이트된 데이터는 제1 예약 영역(230)의 제6 블록(460)에 업데이트된 페이지 단위로 기록된다. 그리고, 제2 블록(420)의 업데이트 대상이된 페이지는 해당되는 페이지의 스패어 영역에 데이터가 무효임을 나타내도록 'I'를 표시하고, 제2 블록(420)의 스패어 영역에도 데이터가 무효인 페이지가 있음을 나타내도록 'I'를 표시하게 된다.
이와 같은 과정을 통해, 스토리지 장치(100)는 데이터에 대한 읽기 및 쓰기 액세스를 수행하게 된다.
이하에서는, 환형 구조의 비휘발성 메모리 캐쉬(200)에 기록된 데이터를 교체 및 가비지 콜렉션(garbage collection)하기 위한 데이터 처리방법에 관하여 설명한다. 여기에서, 교체 작업은 읽기 캐쉬 영역(220)에 빈블록이 부족한 경우에 수행되는 작업이고, 가비지 콜렉션은 쓰기 캐쉬 영역(210)에 빈블록이 부족한 경우에 수행되는 작업이다.
첫번째로, 환형 구조의 비휘발성 메모리 캐쉬(200)에 기록된 데이터를 교체하는 데이터 처리방법에 관하여 설명한다.
스토리지 장치(100)는 환형 구조의 비휘발성 메모리 캐쉬(200)의 읽기 캐쉬 영역(220)에 빈 블록이 1개 남은 상태에서 적어도 한 개(이하, K개로 칭함 : K는 1 이상의 자연수)의 블록에 해당되는 새로운 데이터에 대한 읽기 액세스가 요청된 경우, 읽기 캐쉬 영역(220)의 블록 중 K개의 블록을 선정하여 새로운 데이터를 기록하는 교체 작업을 수행한다.
구체적으로, 스토리지 장치(100)는 읽기 캐쉬 영역(220)에 빈 블록이 1개 남은 상태에서 K개의 블록에 해당되는 새로운 데이터에 대한 읽기 액세스가 요청된 경우, 읽기 캐쉬 영역(220) 내에서 K개의 교체 대상 블록을 K개 선정한다. 교체 대상 블록을 선정하는 방법은 2가지가 있으며, 이와 관련하여 이하에서 설명한다.
첫번째 방법으로, 스토리지 장치(100)는 읽기교체 포인터(R_rep_ptr) 및 블록의 스패어 영역의 비트값을 이용하여 교체대상 블록을 선정하는 방법을 적용할 수 있다. 구체적으로, 스토리지 장치(100)는 1개 남은 빈 블록으로부터 읽기교체 포인터(R_rep_ptr)를 특정 방향으로 순차적으로 이동시키면서 블록의 스패어 영역의 값을 확인한다. 만약, 읽기교체 포인터가 대응된 블록의 스패어 영역이 액세스가 있었음을 나타내는 값(예를 들어, '1')이면, 스토리지 장치(100)는 해당 블록의 스패어 영역의 값을 액세스가 없었음을 나타내는 값(예를 들어, '0')으로 변경한다. 반면, 읽기교체 포인터가 대응된 블록의 스패어 영역이 액세스가 없었음을 나타내는 값(예를 들어, '0')이면, 스토리지 장치(100)는 해당 블록을 삭제하여 빈 블록으로 변경한다. 스토리지 장치(100)는 이와 같은 과정을 K개의 빈 블록이 확보될 때까지 반복하게 된다.
두번째 방법으로, 스토리지 장치(100)는 액세스 리스트를 이용하여 교체 대상 블록을 선정하는 방법을 적용할 수도 있다. 여기에서, 액세스 리스트는 LRU(Least Recently Used) 알고리즘에 따른 것으로 블록의 대략적인 액세스 빈도를 나타낸다. 여기에서, 액세스 리스트는 읽기 캐쉬 영역(220)의 모든 블록에 대응되는 항목들이 순차적으로 배열되어 있다. 또한, 액세스 리스트는 앞부분을 헤드(Head)라고 칭하고 뒷부분을 테일(Tail)이라 칭하며, 헤드에 가까울수록 최근에 접근된 이력이 있는 블록을 나타내고, 테일에 가까울수록 마지막 접근 시점이 오래된 블록을 나타낸다.
구체적으로, 스토리지 장치(100)는 액세스 리스트의 테일에 해당되는 블록부터 헤드 방향으로 순차적으로 블록의 스패어 영역의 값을 확인한다. 만약, 해당되는 블록의 스패어 영역이 액세스가 있었음을 나타내는 값(예를 들어, '1')이면, 스토리지 장치(100)는 해당 블록의 스패어 영역의 값을 액세스가 없었음을 나타내는 값(예를 들어, '0')으로 변경한다. 반면, 읽기교체 포인터가 대응된 블록의 스패어 영역이 액세스가 없었음을 나타내는 값(예를 들어, '0')이면, 스토리지 장치(100)는 해당 블록을 삭제하여 빈 블록으로 변경한다. 스토리지 장치(100)는 이와 같은 과정을 K개의 빈 블록이 확보될 때까지 반복하게 된다.
이와 같이, 스토리지 장치(100)는 두가지 방법으로 교체 대상 블록을 선정할 수 있다.
그 후에, 스토리지 장치(100)는 기존에 존재하던 1개의 빈 블록 및 새로 확보된 빈 블록들에 K개의 블록에 해당되는 데이터를 기록하고, 데이터가 기록된 블록의 스패어 영역에 액세스가 없었음을 나타내는 값(예를 들어, '0')을 표시하게 된다. 그리고, 스토리지 장치(100)는 남은 1개의 빈 블록에 읽기할당 포인터(R_alloc_ptr)를 대응시키게 된다.
이 때, 두번째 방법에 의해 교체 대상 블록이 선정된 경우, 스토리지 장치(100)는 액세스 리스트에서 데이터가 기록된 블록들에 대응되는 항목들을 헤드 쪽으로 이동시키게 된다.
이와 같은 과정을 통해, 스토리지 장치(100)는 환형 구조의 비휘발성 메모리 캐쉬(200)에 기록된 데이터를 교체하는 데이터 처리방법을 수행하게 된다.
도 5a 내지 도 6b를 참고하여, 상술된 환형 구조의 비휘발성 메모리 캐쉬(200)에 기록된 데이터를 교체하는 데이터 처리방법에 대해 예를 들어 설명한다.
도 5a 및 도 5b는 첫번째 방법에 의해 교체 대상 블록이 선정되는 과정을 도시하고 있다. 도 5a는 본 발명의 일 실시예에 따른, 읽기 캐쉬 영역의 빈 블록이 1개 남은 상태에서 3개의 블록에 해당되는 새로운 데이터에 대한 액세스가 발생한 경우를 도시한 도면이다. 그리고, 도 5b는 본 발명의 일 실시예에 따른, 3개의 블록이 빈 블록으로 선정된 상태를 도시한 도면이다.
도 5a에 도시된 바와 같이, 읽기 캐쉬 영역에 1개의 빈 블록(510)이 남은 상태에서, ①의 읽기 액세스 (3개의 블록에 해당되는 새로운 데이터에 대한 액세스)이 발생된 경우, 스토리지 장치(100)는 먼저 읽기 교체 포인터(R_rep_ptr)를 시계방향으로 순차적으로 이동시키면서 해당 블록의 스패어 영역의 값을 확인한다. 그리고, 스토리지장치(100)는 해당 블록의 스패어 영역의 값이 '1'인 경우 '0'으로 변경하고, '0'인 경우 블록을 삭제하여 빈 블록으로 만든다.
따라서, 도 5b에 도시된 바와 같이, 스토리지 장치(100)는 제2 블록(520), 제3 블록(530), 및 제5 블록(550)을 빈 블록으로 만들고, 제4 블록(540)은 스패어 영역의 값을 '1'에서 '0'으로 변경한 것을 확인할 수 있다.
그 후에, 스토리지 장치(100)는 액세스 대상이 되는 데이터를 디스크 어레이(120)로부터 읽은 후에, 제1 블록(510), 제2 블록(520), 및 제3 블록(530)에 액세스 대상이 되는 데이터를 기록하게 된다. 그리고, 스토리지 장치(100)는 읽기 할당 포인터(R_alloc_ptr) 및 읽기 교체 포인터(R_rep_ptr)를 빈 블록인 제5 블록(550)에 대응시키게 된다.
한편, 도 6a 및 도 6b는 두번째 방법에 의해 교체 대상 블록이 선정되는 과정을 도시하고 있다. 도 6a는 본 발명의 일 실시예에 따른, 읽기 캐쉬 영역의 빈 블록이 1개 남은 상태에서 3개의 블록에 해당되는 새로운 데이터에 대한 액세스가 발생한 경우를 도시한 도면이다. 그리고, 도 6b는 본 발명의 일 실시예에 따른, 액세스 리스트를 이용하여 3개의 블록이 빈 블록으로 선정된 상태를 도시한 도면이다.
도 6a에 도시된 바와 같이, 읽기 캐쉬 영역에 1개의 빈 블록(610)이 남은 상태에서, ①의 읽기 액세스 (3개의 블록에 해당되는 새로운 데이터에 대한 액세스)이 발생된 경우, 스토리지 장치(100)는 액세스 리스트(600)의 테일에 가까운 항목의 블록부터 헤드 방향으로 순차적으로 이동시키면서 해당 블록의 스패어 영역의 값을 확인한다. 그리고, 스토리지 장치(100)는 해당 블록의 스패어 영역의 값이 '1'인 경우 '0'으로 변경하고, '0'인 경우 블록을 삭제하여 빈 블록으로 만든다.
따라서, 도 6b에 도시된 바와 같이, 스토리지 장치(100)는 제2 블록(520), 제3 블록(530), 및 제5 블록(550)을 빈 블록으로 만들고, 제4 블록(540)은 스패어 영역의 값을 '1'에서 '0'으로 변경한 것을 확인할 수 있다.
그 후에, 스토리지 장치(100)는 액세스 대상이 되는 데이터를 디스크 어레이(120)로부터 읽은 후에, 제1 블록(510), 제2 블록(520), 및 제3 블록(530)에 액세스 대상이 되는 데이터를 기록하게 된다. 그리고, 스토리지 장치(100)는 액세스 리스트(600)에서 제1 블록(510), 제2 블록(520), 및 제3 블록(530)에 대응되는 항목을 헤드로 이동시킨다. 또한, 스토리지 장치(100)는 읽기 할당 포인터(R_alloc_ptr) 및 읽기 교체 포인터(R_rep_ptr)를 빈 블록인 제5 블록(550)에 대응시키게 된다.
지금까지, 도 5a 내지 도 6b를 참고하여, 환형 구조의 비휘발성 메모리 캐쉬(200)에 기록된 데이터를 교체하는 데이터 처리방법에 대해 예를 들어 설명하였다.
두번째로, 환형 구조의 비휘발성 메모리 캐쉬(200)에 기록된 데이터를 가비지 콜렉션하는 데이터 처리방법에 관하여 설명한다.
스토리지 장치(100)는 환형 구조의 비휘발성 메모리 캐쉬(200)의 쓰기 캐쉬 영역(210)의 모든 페이지가 사용된 경우, 쓰기 캐쉬 영역(210)에 기록된 유효한 데이터를 모두 디스크 어레이(120)에 기록하고 쓰기 캐쉬 영역(210)을 모두 삭제한 후에 일정 블록 수만큼 이동시키는 가비지 콜렉션 작업을 수행한다.
먼저, 스토리지 장치(100)는 쓰기 캐쉬 영역(210)의 모든 페이지가 사용된 경우, 쓰기 캐쉬 영역(210)의 블록들 중 무효 블록들 내의 유효 페이지들을 모두 제1 예약 영역(230)의 블록 내에 기록한다. 여기에서, 무효 블록은 (스페어 영역에 데이터가 무효인 페이지가 포함되어 있음을 나타내는 표시(예를 들어, "I")가 있는 블록을 나타내고, 유효 페이지는 페이지의 스패어 영역에 데이터가 유효임이 표시(예를 들어, "V")된 페이지를 나타낸다.
구체적으로, 스토리지 장치(100)는 쓰기 캐쉬 영역(210) 내에서 첫번째 무효 블록에 쓰기교체 포인터(W_rep_ptr)를 위치시킨다. 스토리지 장치(100)는 무효 블록 내에서 유효 페이지를 검색한다. 그리고, 스토리지 장치(100)는 무효 내의 유효 페이지를 제1 예약 영역(230)에 기록한다. 그 후에, 스토리지 장치(100)는 다음 무효 블록에 쓰기교체 포인터(W_rep_ptr)를 위치시킨 후, 상술한 과정을 반복하게되며, 쓰기 캐쉬 영역의 마지막 무효 블록까지 이와 같은 과정을 반복하게 된다. 이를 통해, 스토리지 장치(100)는 쓰기 캐쉬 영역(210)의 모든 페이지가 사용된 경우, 쓰기 캐쉬 영역(210)의 블록들 중 무효 블록들 내의 유효 페이지들을 모두 제1 예약 영역(230)의 블록 내에 기록하게 된다.
그 다음, 스토리지 장치(100)는 쓰기 캐쉬 영역(210) 내의 모든 무효 블록을 삭제하게 된다. 그리고, 스토리지 장치(100)는 쓰기 캐쉬 영역(210) 내의 유효 블록의 데이터 및 제1 예약 영역(230)의 블록에 기록된 데이터를 모두 디스크 어레이(120)에 복사한다. 그리고, 스토리지 장치(100)는 쓰기 캐쉬 영역(210) 내의 유효 블록 및 제1 예약 영역(230)의 데이터가 기록된 적어도 하나의 블록도 삭제하게 된다.
그 후에, 스토리지 장치(100)는 제1 예약 영역(230)의 데이터가 기록된 적어도 하나의 블록만큼 쓰기 캐쉬 영역(210)을 이동시킨다. 구체적으로, 제1 예약 영역(230)의 데이터가 기록된 적어도 하나의 블록이 L개인 것으로 가정하여 설명한다(L은 1 이상의 자연수). 스토리지 장치(100)는 제1 예약 영역(230)에 인접한 L개의 읽기 캐쉬 영역(230)의 블록을 제2 예약 영역(240)으로 복사시키고, 복사된 L개의 읽기 캐쉬 영역(230)의 블록을 삭제하여 빈 블록으로 만든다. 이 때, 제1 예약 영역(230)에 인접한 L개의 읽기 캐쉬 영역(230)의 블록은 제2 예약 영역(240) 중 읽기 캐쉬 영역(230)에 인접한 블록부터 순차적으로 복사된다. 그 다음, 스토리지 장치(100)는 제1 예약 영역(230) 방향으로 L개의 블록 만큼 쓰기 캐쉬 영역(210)을 이동시킨다. 이와 같은 과정을 통해, 스토리지 장치(100)는 제1 예약 영역(230)의 데이터가 기록된 적어도 하나의 블록만큼 쓰기 캐쉬 영역(210)을 이동시키게 된다.
이와 같은 과정을 통해, 스토리지 장치(100)는 환형 구조의 비휘발성 메모리 캐쉬(200)의 쓰기 캐쉬 영역(210)의 모든 페이지가 사용된 경우, 쓰기 캐쉬 영역(210)에 기록된 유효한 데이터를 모두 디스크 어레이(120)에 기록하고 쓰기 캐쉬 영역(210)을 모두 삭제한 후에 일정 블록 수만큼 이동시키는 가비지 콜렉션 작업을 수행할 수 있게 된다.
비휘발성 메모리 중 플래시 메모리는 블록삭제횟수가 약 십~백만번 정도로 제한되어 있기 때문에 특정 블록에 삭제 연산이 집중되어 마모(wear-out)됨으로써 사용할 수 없게 될 우려가 있으나, 이와 같이 쓰기 캐쉬 영역(210)을 주기적으로 이동시킴으로써, 이와 같이 마모(wear-out)의 가능성을 최소화 할 수 있게 된다.
이하에서는, 도 7a 및 도 7b를 참고하여, 상술된 환형 구조의 비휘발성 메모리 캐쉬(200)에 기록된 데이터를 가비지 콜렉션하는 데이터 처리방법에 대해 예를 들어 설명한다.
도 7a는 본 발명의 일 실시예에 따른, 쓰기 캐쉬 영역이 모두 사용된 경우를 도시한 도면이다. 그리고, 도 7b는 본 발명의 일 실시예에 따른, 가비지 콜랙션 과정에서 1개의 블록만큼 시계방향으로 쓰기 캐쉬 영역이 이동된 상태를 도시한 도면이다.
도 7a에 도시된 바와 같이, 제1 블록(710)에 데이터가 기록되어 쓰기 캐쉬 영역이 모두 사용된 경우, 스토리지 장치(100)는 가비지 콜렉션을 시작하게 된다. 이 때, 도 7a에 도시된 바와 같이, 제1 예약 영역(230)의 제2 블록(720)은 아웃 플레이스 업데이트를 통해 일부 페이지에 데이터가 기록된 상태이다.
이 상태에서, 스토리지 장치(100)는 도 7b에 도시된 바와 같이, 쓰기 캐쉬 영역(210) 내의 모든 무효 블록(760,770,780)에 포함된 유효 페이지를 제1 예약 영역(230)내의 블록에 기록한 후에, 모든 무효 블록(760,770,780)을 삭제한다. 도 7b의 경우, 모든 무효 블록에 포함된 유효 페이지가 제2 블록(720) 내에 모두 기록된 상태이다. 그 후에, 스토리지 장치(100)는 제1 블록(710) 및 제2 블록(720)에 기록된 데이터를 디스크 어레이(120)로 복사한 후에, 제1 블록(710) 및 제2 블록(720)을 삭제하게 된다.
그 다음, 스토리지 장치(100)는 제2 블록(720)을 쓰기 캐쉬 영역(210)으로 편입시키기 위해, 쓰기 캐쉬 영역(210)을 시계 방향으로 1개 블록 만큼 이동시킨다. 이를 위해, 스토리지 장치(100)는 제3 블록(730)을 제2 예약 영역(240) 제4 블록(740)으로 이동시킨 후에, 제3 블록(730)을 제1 예약영역(230)에 편입시킨다. 그리고, 스토리지 장치(100)는 제4 블록(740)을 읽기 캐쉬 영역(220)으로 편입시키게 된다. 그리고, 스토리지 장치(100)는 제6 블록(760)을 제2 예약영역(240)에 편입시킴으로써, 제2 예약영역(240)을 제5 블록(750)부터 제6 블록(760)사이가 되도록 한블록 이동시킨다.
이와 같은 과정을 통해, 스토리지 장치(100)는 가비지 콜렉션을 마치게 되고, 쓰기 캐쉬 영역(210)은 시계방향으로 한 블록만큼 이동하게 된다.
지금까지, 도 7a 및 도 7b를 참고하여, 상술된 환형 구조의 비휘발성 메모리 캐쉬(200)에 기록된 데이터를 가비지 콜렉션하는 데이터 처리방법에 대해 예를 들어 설명하였다.
한편, 본 실시예에 따른 환형 구조의 비휘발성 메모리 캐쉬 및 상술된 데이터 처리방법을 구현하는 컴퓨터 프로그램을 수록한 컴퓨터로 읽을 수 있는 기록매체에도 본 발명의 기술적 사상이 적용될 수 있음은 물론이다. 또한, 본 발명의 다양한 실시예에 따른 기술적 사상은 컴퓨터로 읽을 수 있는 기록매체에 기록된 컴퓨터로 읽을 수 있는 코드 형태로 구현될 수도 있다. 컴퓨터로 읽을 수 있는 기록매체는 컴퓨터에 의해 읽을 수 있고 데이터를 저장할 수 있는 어떤 데이터 저장 장치이더라도 가능하다. 예를 들어, 컴퓨터로 읽을 수 있는 기록매체는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광디스크, 하드 디스크 드라이브, 등이 될 수 있음은 물론이다. 또한, 컴퓨터로 읽을 수 있는 기록매체에 저장된 컴퓨터로 읽을 수 있는 코드 또는 프로그램은 컴퓨터간에 연결된 네트워크를 통해 전송될 수도 있다.
또한, 이상에서는 본 발명의 바람직한 실시예에 대하여 도시하고 설명하였지만, 본 발명은 상술한 특정의 실시예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 발명의 기술적 사상이나 전망으로부터 개별적으로 이해되어져서는 안될 것이다.
100 : 스토리지 장치 110 : 스토리지 컨트롤러
112 : CPU 114 : 메모리
116, 200 : 비휘발성 메모리 캐쉬 210 : 쓰기 캐쉬 영역
220 : 읽기 캐쉬 영역 230 : 제1 예약 영역
240 : 제2 예약 영역

Claims (6)

  1. 비휘발성 메모리로 구현되어 데이터를 임시로 저장하는 캐쉬 기능을 수행하는 비휘발성 메모리 캐쉬; 및
    상기 비휘발성 메모리 캐쉬로부터 데이터를 액세스하는 CPU;를 포함하고,
    상기 비휘발성 메모리 캐쉬는,
    저장 영역이 환형 구조로 구성되고,
    상기 비휘발성 메모리 캐쉬는,
    쓰기 액세스 작업을 위해 사용되는 쓰기 캐쉬 영역;
    읽기 액세스 작업을 위해 사용되는 읽기 캐쉬 영역;
    아웃 플레이스 업데이트 및 가비지 컬렉션(garbage collection)을 위해 예약된 영역인 제1 예약 영역 및 제2 예약 영역;을 포함하고,
    상기 제1 예약 영역은 상기 쓰기 캐쉬 영역과 상기 읽기 캐쉬 영역 사이에 위치하며,
    상기 제2 예약 영역은 상기 쓰기 캐쉬 영역과 상기 읽기 캐쉬 영역 사이에 위치하고,
    상기 CPU는,
    읽기 액세스가 요청된 경우, 요청된 읽기 액세스에 대응되는 데이터인 제1 데이터가 상기 비휘발성 메모리 캐쉬의 읽기 캐쉬 영역에 존재하는지 여부를 블록단위로 검색하고, 제1 데이터가 읽기 캐쉬 영역에 존재하는 경우, 제1 데이터에 대응되는 블록인 제1 블록으로부터 해당 데이터를 읽으며, 상기 제1 블록의 스패어 영역에 액세스가 있었음을 표시하고, 상기 제1 블록 다음에 위치된 빈 블록에 읽기할당 포인터를 대응시키며,
    쓰기 액세스가 요청된 경우, 상기 비휘발성 메모리 캐쉬의 쓰기 캐쉬 영역에서 페이지 단위로 쓰기 액세스를 실행하는 것을 특징으로 하는 스토리지 장치.
  2. 제 1항에 있어서,
    상기 비휘발성 메모리 캐쉬는,
    읽기 캐쉬 영역과 쓰기 캐쉬 영역이 구분되어 있는 것을 특징으로 하는 스토리지 장치.
  3. 제 2항에 있어서,
    상기 읽기 캐쉬 영역은 상기 쓰기 캐쉬 영역보다 더 많은 저장 영역이 할당된 것을 특징으로 하는 스토리지 장치.
  4. 삭제
  5. 제 1항에 있어서,
    상기 제1 예약 영역은 상기 쓰기 캐쉬 영역과 같거나 상기 쓰기 캐쉬 영역의 2배 이내의 크기로 할당되고,
    상기 제2 예약 영역은 상기 쓰기 캐쉬 영역과 같거나 상기 쓰기 캐쉬 영역의 2배 이내의 크기로 할당되는 것을 특징으로하는 스토리지 장치.
  6. 제 1항에 있어서,
    상기 비휘발성 메모리 캐쉬는,
    SSD(Solid State Drive), 플래시 메모리 중 어느 하나인 것을 특징으로 하는 스토리지 장치.
KR1020120007544A 2012-01-26 2012-01-26 환형 구조의 비휘발성 메모리 캐쉬를 포함하는 하이브리드 스토리지 장치 KR101373613B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020120007544A KR101373613B1 (ko) 2012-01-26 2012-01-26 환형 구조의 비휘발성 메모리 캐쉬를 포함하는 하이브리드 스토리지 장치
US13/623,414 US20130198453A1 (en) 2012-01-26 2012-09-20 Hybrid storage device inclucing non-volatile memory cache having ring structure

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120007544A KR101373613B1 (ko) 2012-01-26 2012-01-26 환형 구조의 비휘발성 메모리 캐쉬를 포함하는 하이브리드 스토리지 장치

Publications (2)

Publication Number Publication Date
KR20130086691A KR20130086691A (ko) 2013-08-05
KR101373613B1 true KR101373613B1 (ko) 2014-03-13

Family

ID=49213795

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120007544A KR101373613B1 (ko) 2012-01-26 2012-01-26 환형 구조의 비휘발성 메모리 캐쉬를 포함하는 하이브리드 스토리지 장치

Country Status (1)

Country Link
KR (1) KR101373613B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102405386B1 (ko) 2019-12-18 2022-06-08 (주)에스디생명공학 바다제비집 복합추출물을 유효성분으로 포함하는 면역증진용 조성물

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100755702B1 (ko) * 2005-12-27 2007-09-05 삼성전자주식회사 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 그 동작방법
JP2009104687A (ja) * 2007-10-22 2009-05-14 Fujitsu Ltd 記憶装置及び制御回路

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100755702B1 (ko) * 2005-12-27 2007-09-05 삼성전자주식회사 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 그 동작방법
JP2009104687A (ja) * 2007-10-22 2009-05-14 Fujitsu Ltd 記憶装置及び制御回路

Also Published As

Publication number Publication date
KR20130086691A (ko) 2013-08-05

Similar Documents

Publication Publication Date Title
US11216185B2 (en) Memory system and method of controlling memory system
EP3204859B1 (en) Methods and systems for cache lines de-duplication
US10915475B2 (en) Methods and apparatus for variable size logical page management based on hot and cold data
US9378131B2 (en) Non-volatile storage addressing using multiple tables
KR101257691B1 (ko) 메모리 컨트롤러 및 이의 데이터 관리방법
US10740251B2 (en) Hybrid drive translation layer
US9003099B2 (en) Disc device provided with primary and secondary caches
US20100325352A1 (en) Hierarchically structured mass storage device and method
KR101297442B1 (ko) 공간 지역성을 고려한 요구 기반 플래시 메모리 변환 계층을 포함하는 낸드 플래시 메모리 시스템
US20130198453A1 (en) Hybrid storage device inclucing non-volatile memory cache having ring structure
JP2009211233A (ja) メモリシステム
JP2012141946A (ja) 半導体記憶装置
US10635581B2 (en) Hybrid drive garbage collection
KR20100115090A (ko) 버퍼를 고려한 가비지 컬렉션 기법
KR20130022604A (ko) 접근 빈도에 따라 데이터를 할당하는 저장장치 및 저장방법
CN111580754B (zh) 一种写友好的闪存固态盘缓存管理方法
US20140258591A1 (en) Data storage and retrieval in a hybrid drive
US20140047161A1 (en) System Employing MRAM and Physically Addressed Solid State Disk
KR101353967B1 (ko) 환형 구조의 비휘발성 메모리 캐쉬에 데이터를 읽고 쓰기 위한 데이터 처리 방법
US20130282977A1 (en) Cache control device, cache control method, and program thereof
KR100745163B1 (ko) 동적 매핑 테이블을 이용한 플래시 메모리 관리방법
WO2019136969A1 (zh) 一种实体位置映到逻辑映像位置的高效能方法
KR101373613B1 (ko) 환형 구조의 비휘발성 메모리 캐쉬를 포함하는 하이브리드 스토리지 장치
KR20120034976A (ko) 낸드 플래시 메모리에서 데이터의 주소를 사상시키는 장치 및 방법
KR101020781B1 (ko) 플래시 메모리를 기반으로 한 데이터베이스 시스템에 대한 로그 관리 방법

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
X701 Decision to grant (after re-examination)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20161229

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20171207

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190304

Year of fee payment: 6