KR20160121819A - 이종 메모리 기반 데이터 관리 장치 - Google Patents

이종 메모리 기반 데이터 관리 장치 Download PDF

Info

Publication number
KR20160121819A
KR20160121819A KR1020150051498A KR20150051498A KR20160121819A KR 20160121819 A KR20160121819 A KR 20160121819A KR 1020150051498 A KR1020150051498 A KR 1020150051498A KR 20150051498 A KR20150051498 A KR 20150051498A KR 20160121819 A KR20160121819 A KR 20160121819A
Authority
KR
South Korea
Prior art keywords
data
page
dram
flash
pages
Prior art date
Application number
KR1020150051498A
Other languages
English (en)
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 KR1020150051498A priority Critical patent/KR20160121819A/ko
Publication of KR20160121819A publication Critical patent/KR20160121819A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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

Abstract

DRAM 기반 인메모리 데이터 관리 방법이 가지는 메모리 공간의 확장성의 한계를 극복하고 빠른 데이터 관리 서비스를 제공하기 위한 운영 비용을 절감하기 위한 이종 메모리 기반 데이터 관리 장치를 제시한다. 제시된 장치는 다수의 데이터 페이지를 포함하는 디램과 다수의 데이터 페이지 및 하나의 갱신 로그 페이지를 포함하는 페이지 그룹을 다수개 내장한 플래시를 포함하는 이종 메모리에 새로운 데이터를 저장하고 이종 메모리에 기저장된 데이터에 대한 갱신 요청 처리를 담당하는 데이터 갱신부, 이종 메모리에 저장된 데이터에 대한 검색 요청에 대한 처리를 담당하는 데이터 검색부, 플래시 상의 적어도 하나의 페이지 그룹에 대해 갱신 로그 공간이 모두 사용된 경우에 플래시내의 데이터 페이지와 갱신 로그 페이지에 대한 병합 연산을 처리하는 데이터 병합부, 및 디램 및 플래시의 데이터 페이지에 대한 접근 유형과 접근 빈도에 기반하여 이종 메모리 상에서 데이터 페이지의 배치를 디램과 플래시 간의 이동을 통해 수행하는 데이터 배치부를 포함한다.

Description

이종 메모리 기반 데이터 관리 장치{Apparatus for data management based on hybrid memory}
본 발명은 이종 메모리 기반 데이터 관리 장치 및 방법에 관한 것으로, 보다 상세하게는 서로 다른 특성을 가지는 이종 메모리를 활용하여 인메모리(in-memory) 상에서 데이터를 효과적으로 관리하는 장치 및 방법에 관한 것이다.
DRAM(Dynamic Random Access Memory)의 가격 하락으로 인해, 예전에는 연산을 위한 영역으로만 여겨졌던 메모리 영역이 연산뿐만 아니라 데이터 저장을 위한 공간으로 사용되고 있다.
이와 같이 메인 메모리에 데이터를 저장하고 데이터 관리 관련 기능을 제공하는 시스템을 인메모리 데이터 관리 시스템이라고 한다.
그러나, 휘발성 메모리인 DRAM은 전원 공급이 중단되면 기록된 데이터가 모두 사라지는 특성이 있기 때문에, DRAM을 활용하여 인메모리 데이터 관리를 위해서는 시스템이 아무런 일도 하지 않는 유휴(idle) 상태일지라도 DRAM에 저장된 데이터를 유지하기 위해 에너지를 공급해야 한다.
이러한 이유로 대용량의 빅데이터를 DRAM을 활용하여 관리하는 것은 에너지 효율 측면에서 어려움이 있다. 뿐만 아니라, 하나의 시스템에서 DRAM으로 구성할 수 있는 메모리 공간의 크기의 제약이 DRAM을 활용한 빅데이터 관리의 또 다른 어려움이다.
한편, 전원 공급이 차단되면 저장된 정보가 모두 사라지는 것이 아니라 계속 남아 있는 비휘발성의 특성을 가지며, 에너지 사용이 적은 PCM(Phase Change Memory), FeRAM(Ferroelectric Random Access Memory), MRAM(Magnetic Random Access Memory), FLASH 메모리 등이 등장하여 차세대 메모리로 주목을 받고 있다.
이러한 비휘발성의 특성을 갖는 메모리들을 통칭하여 NVRAM(Non-Volatile Random Access Memory)이라 한다.
NVRAM은 빅데이터를 저장하고 관리하는데 있어 에너지 소모 및 비용 측면에서 효율적이다.
현재 이들 NVRAM 중 FLASH 메모리의 경우에는 시장에 진입하여 널리 사용되고 있다.
FLASH 메모리는 DRAM에 비해 집적도(density)가 높아서 대용량화가 가능하며 에너지 효율이 좋다는 장점이 있다. 하지만, 읽기/쓰기 지연 시간이 DRAM에 비해 상대적으로 클 뿐만 아니라 DRAM과 달리 읽기 연산의 지연 시간과 쓰기 연산의 지연 시간 간의 차이가 크다. 또한, 제자리 갱신(in-place update)을 위해서는 갱신할 데이터가 위치한 블록 전체를 지우고(block erase) 다시 써야 한다는 점과 메모리를 구성하는 소자에 닳는 특성이 있어서 쓰기 횟수에 제한이 있다는 단점이 있다
근래에 휘발성 메모리인 DRAM과 비휘발성 메모리인 FLASH 메모리를 함께 사용하여 각각이 가지는 한계를 극복하는 이종 메모리 기반 데이터 관리 시스템이 등장했다.
하지만, 종래의 이종 메모리 기반 데이터 관리 시스템은 자주 접근되는 데이터를 DRAM에 캐싱하는 즉, DRAM을 단순히 FLASH 메모리의 캐시로 이용하는 형태이다.
본 발명과 관련되는 선행기술로는, 대한민국 공개특허 제2012-0035070호(에스에스디를 확장 버퍼로 이용한 버퍼 캐쉬 관리 방법 및 에스에스디를 확장 버퍼로 사용한 장치)가 있다.
본 발명은 상기한 종래의 문제점을 해결하기 위해 제안된 것으로, DRAM 기반 인메모리 데이터 관리 방법이 가지는 메모리 공간의 확장성의 한계를 극복하고 빠른 데이터 관리 서비스를 제공하기 위한 운영 비용을 절감할 목적으로 DRAM과 FLASH 메모리를 함께 활용하여 인메모리 데이터 관리를 효율적으로 제공할 수 있는 이종 메모리 기반 데이터 관리 장치 및 방법을 제공함에 그 목적이 있다.
상기와 같은 목적을 달성하기 위하여 본 발명의 바람직한 실시양태에 따른 이종 메모리 기반 데이터 관리 장치는, 다수의 데이터 페이지를 포함하는 디램과 다수의 데이터 페이지 및 하나의 갱신 로그 페이지를 포함하는 페이지 그룹을 다수개 내장한 플래시를 포함하는 이종 메모리에 새로운 데이터를 저장하고, 상기 이종 메모리에 기저장된 데이터에 대한 갱신 요청 처리를 담당하는 데이터 갱신부; 상기 이종 메모리에 저장된 데이터에 대한 검색 요청에 대한 처리를 담당하는 데이터 검색부; 상기 플래시 상의 적어도 하나의 페이지 그룹에 대해 갱신 로그 공간이 모두 사용된 경우에 상기 플래시내의 데이터 페이지와 상기 갱신 로그 페이지에 대한 병합 연산을 처리하는 데이터 병합부; 및 상기 디램 및 플래시의 데이터 페이지에 대한 접근 유형과 접근 빈도에 기반하여 상기 이종 메모리 상에서 상기 데이터 페이지의 배치를 상기 디램과 상기 플래시 간의 이동을 통해 수행하는 데이터 배치부;를 포함한다.
상기 플래시 상의 하나의 페이지 그룹에 속한 다수의 데이터 페이지는 상기 하나의 갱신 로그 페이지를 공유할 수 있다.
상기 데이터 갱신부는 상기 디램과 상기 플래시에 있는 데이터에 직접 접근하여 갱신을 행할 수 있다.
상기 데이터 갱신부는, 입력받은 갱신 요청이 기존 데이터 페이지에 대한 갱신 요청이 아니면 상기 디램에 새로운 데이터 페이지를 할당하여 데이터를 기록할 수 있다.
상기 데이터 갱신부는, 입력받은 갱신 요청이 기존 데이터 페이지에 대한 갱신 요청이면 갱신할 데이터 페이지가 상기 디램과 플래시중 어디에 있는지를 체크하고, 상기 갱신할 데이터 페이지가 상기 플래시에 있으면 데이터 갱신 요청에 대한 갱신 로그를 생성하고, 상기 플래시의 해당 데이터 페이지가 속한 페이지 그룹의 갱신 로그 페이지를 찾아서 상기 갱신 로그 페이지에 상기 갱신 로그를 기록할 수 있다.
상기 데이터 갱신부는, 상기 갱신 로그의 기록 이후에, 상기 갱신 로그 페이지에 다음번의 갱신 연산에 대한 로그를 기록할 여분의 공간이 있는지를 체크하고, 여분의 공간이 없으면 병합 대상 목록에 상기 갱신 로그 페이지가 속한 페이지 그룹을 추가할 수 있다.
상기 데이터 갱신부는, 상기 갱신할 페이지가 상기 디램에 있으면 해당 데이터 페이지에 충분한 공간이 있는지를 체크하고, 충분한 공간이 있으면 해당 데이터 페이지에 접근하여 데이터 갱신을 행할 수 있다.
상기 데이터 갱신부는 상기 디램에 충분한 공간이 없으면 상기 디램에 새로운 페이지를 할당하여 데이터를 기록할 수 있다.
상기 데이터 검색부는 사용자의 검색 요청에 대한 처리 결과에 포함된 데이터가 상기 플래시의 다수의 데이터 페이지중의 어느 하나에 위치한 경우에 해당 데이터 페이지 상의 데이터에 갱신 로그 페이지의 로그를 반영하여 사용자에게 전달할 수 있다.
상기 데이터 병합부는 병합 대상 목록에 있는 갱신 로그가 꽉 찬 페이지 그룹에 대해 향후 발생할 갱신 요청에 대한 처리가 가능하도록 하기 위해, 해당 페이지 그룹에 속한 데이터 페이지의 데이터에 갱신 로그를 반영하는 데이터 병합 연산을 수행할 수 있다.
상기 데이터 병합부는 상기 디램의 공간에서 상기 데이터 병합 연산을 수행할 수 있다.
상기 데이터 배치부는 접근 빈도 또는 갱신 빈도가 높은 데이터 페이지를 상기 디램에 위치하도록 배치하고, 상기 디램의 데이터 페이지에 비해 접근 빈도가 낮은 데이터 페이지는 상기 플래시에 위치하도록 배치할 수 있다.
상기 데이터 배치부는 상기 디램에 항상 일정 수 이상의 빈 데이터 페이지가 유지되게 할 수 있다.
상기 데이터 배치부는 상기 디램에 있는 콜드(COLD)한 페이지보다 상기 플래시에 있는 핫(HOT)한 페이지의 접근 빈도가 높은 경우 또는 가용한 디램 영역의 빈 페이지 수가 미리 정한 기준보다 적은 경우에 데이터 배치를 다시 할 수 있다.
상기 데이터 배치부는 상기 디램에서 상기 플래시로 이동할 데이터 페이지들을 미리 정한 수로 그룹핑하여 그룹 단위로 상기 플래시로 이동시킬 수 있다.
상기 데이터 배치부는 상기 이동을 위해 그룹핑시 모니터링 정보에 기반하여 함께 접근될 가능성이 있는 페이지들이 동일한 그룹에 포함되도록 할 수 있다.
상기 데이터 배치부는 하나의 그룹에 속하는 데이터 페이지의 수는 미리 정한 그룹별 최대 데이터 페이지 수를 넘지 않게 할 수 있다.
한편, 본 발명의 바람직한 실시양태에 따른 이종 메모리 기반 데이터 관리 방법은, 데이터 갱신부가, 다수의 데이터 페이지를 포함하는 디램과 다수의 데이터 페이지 및 하나의 갱신 로그 페이지를 포함하는 페이지 그룹을 다수개 내장한 플래시를 포함하는 이종 메모리에 새로운 데이터를 저장하고, 상기 이종 메모리에 기저장된 데이터에 대한 갱신 요청의 처리를 행하는 단계; 데이터 검색부가, 상기 이종 메모리에 저장된 데이터에 대한 검색 요청에 대한 처리를 행하는 단계; 데이터 병합부가, 상기 플래시 상의 적어도 하나의 페이지 그룹에 대해 갱신 로그 공간이 모두 사용된 경우에 상기 플래시내의 데이터 페이지와 상기 갱신 로그 페이지에 대한 병합 연산을 처리하는 단계; 및 데이터 배치부가, 상기 디램 및 플래시의 데이터 페이지에 대한 접근 유형과 접근 빈도에 기반하여 상기 이종 메모리 상에서 상기 데이터 페이지의 배치를 상기 디램과 상기 플래시 간의 이동을 통해 수행하는 단계;를 포함한다.
이러한 구성의 본 발명에 따르면, 빅데이터에 대한 데이터 관리 요청을 지원하는데 있어서, 이종 메모리를 혼합 활용하여 메모리 공간을 확장함으로써 DRAM 기반 인메모리 데이터 관리 장치가 가지는 메모리 공간의 한계를 극복할 수 있다. 그리고, 비휘발성 메모리를 활용함으로써 빅데이터에 대한 데이터 관리 서비스 제공을 위한 운영 비용을 절감할 수 있다.
또한, DRAM-FLASH로 구성된 이종 메모리를 활용한 데이터 관리에서 대부분의 갱신 연산을 DRAM 상에서 일어나게 하고, FLASH 상의 데이터에 대한 갱신은 제자리 갱신(in-place update)이 아닌 갱신 로그 페이지에 갱신 로그만을 기록하는 형태로 지원하여 FLASH의 쓰기 지연을 최소화함으로써, 갱신 연산의 응답 시간을 향상시킬 수 있다.
도 1은 본 발명의 실시예가 적용된 전체적인 시스템 구성도이다.
도 2는 도 1에 도시된 이종 메모리의 상세 구성도이다.
도 3은 도 1에 도시된 데이터 관리 장치의 내부 구성도이다.
도 4는 도 3에 도시된 데이터 갱신부의 동작을 설명하기 위한 흐름도이다.
도 5는 도 3에 도시된 데이터 검색부의 동작을 설명하기 위한 흐름도이다.
도 6은 도 3에 도시된 데이터 병합부의 동작을 설명하기 위한 흐름도이다.
도 7 및 도 8은 도 3에 도시된 데이터 배치부의 동작을 설명하기 위한 흐름도이다.
도 9는 본 발명의 실시예가 구현된 컴퓨터 시스템을 나타낸 도면이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시 예들을 도면에 예시하고 상세하게 설명하고자 한다.
그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가진 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 본 발명을 설명함에 있어 전체적인 이해를 용이하게 하기 위하여 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 실시예가 적용된 전체적인 시스템 구성도이다.
본 발명의 실시예가 적용된 전체적인 시스템은 이종 메모리(10) 및 데이터 관리 장치(40)를 포함한다.
이종 메모리(10)는 디램(DRAM; 20)과 플래시(FLASH; 30)를 포함한다.
데이터 관리 장치(40)는 이종 메모리(10) 상에서 데이터의 활용 패턴(즉, 데이터에 대한 응용의 접근 패턴)에 따라 데이터를 적절한 메모리(즉, DRAM(20) 또는 FLASH(30))상에 위치하도록 배치한다.
그리고, 데이터 관리 장치(40)는 이종 메모리(10)를 활용하여 데이터에 대한 갱신, 검색 등의 요청을 빠르게 지원함으로써 대용량 데이터에 대한 효과적인 관리를 수행한다.
데이터 관리 장치(40)는 데이터를 일정한 크기(예컨대, 4KB 또는 8KB)의 페이지 단위로 나누어서 관리할 수 있다.
도 2는 도 1에 도시된 이종 메모리(10)의 상세 구성도이다.
이종 메모리(10) 상의 DRAM(20)에는 다수의 데이터 페이지(20a)만이 존재한다.
한편, 이종 메모리(10) 상의 FLASH(30)에는 다수의 페이지 그룹(31, 32, 33, 34, 35)이 존재한다. 여기서, 각각의 페이지 그룹은 일정 개수(예컨대, 15개 정도)의 데이터 페이지(31a) 및 하나의 갱신 로그 페이지(31b)를 포함한다.
데이터 페이지(20a, 31a)는 데이터가 저장되는 공간을 의미한다. 갱신 로그 페이지(31b)는 데이터 페이지의 데이터에 행해지는 갱신 연산에 대한 로그를 저장하는 공간을 의미한다.
본 발명에 따르면, FLASH(30) 상의 하나의 페이지 그룹에 속한 일련의 데이터 페이지(31a)는 해당 페이지 그룹내의 하나의 갱신 로그 페이지(31b)를 공유한다.
본 발명의 실시예에서, 데이터 관리 장치(40)는 FLASH(30) 상에 데이터 페이지들을 위치시킬 때 함께 접근될 가능성이 높은 페이지들을 같은 페이지 그룹에 속하도록 그룹핑한다. 이는 관계형 데이터베이스 관리시스템에서 동일한 테이블에 속한 데이터를 저장하는 페이지들이 함께 접근될 가능성이 높은 페이지로 간주되는 것과 같은 방식이라고 이해하면 된다.
본 발명의 실시예에서, 데이터 관리 장치(40)는 DRAM(20)을 FLASH(30) 상의 데이터에 대한 빠른 접근을 위한 캐시로 사용하는 것이 아니라, DRAM(20)과 FLASH(30) 모두를 데이터 저장을 위한 용도로 사용한다.
즉, 데이터 관리 장치(40)는 데이터 관리 연산 요청에 대한 빠른 처리를 위해, 접근 빈도가 높은 데이터는 DRAM(20)에 배치하고, 그렇지 않은 데이터를 FLASH(30)에 배치하여 데이터 관리 연산을 지원할 수 있다. 따라서, 데이터 관리 장치(40)는 DRAM(20) 뿐만 아니라 FLASH(30)에 있는 데이터에 직접 접근하여 갱신, 검색 등의 데이터 관리 연산을 처리할 수 있다.
도 3은 도 1에 도시된 데이터 관리 장치(40)의 내부 구성도이다.
데이터 관리 장치(40)는 데이터 갱신부(42), 데이터 검색부(44), 데이터 병합부(46), 및 데이터 배치부(48)를 포함할 수 있다.
데이터 갱신부(42)는 이종 메모리(10)에 새로운 데이터를 저장할 뿐만 아니라 이종 메모리(10; 20, 30)에 기저장된 데이터에 대한 삭제 및 수정을 포함하는 갱신 요청 처리를 담당한다.
데이터 검색부(44)는 이종 메모리(10)에 저장된 데이터에 대한 검색 요청에 대한 처리를 담당한다.
데이터 병합부(46)는 FLASH(30) 상의 하나의 페이지 그룹에 대해 갱신 로그 공간이 모두 사용된 경우에 데이터 페이지와 갱신 로그 페이지에 대한 병합 연산을 처리한다.
데이터 배치부(1400)는 데이터 페이지(20a, 31a)에 대한 접근 유형과 접근 빈도에 기반하여 이종 메모리(10) 상에서 데이터 페이지의 배치를 DRAM(20)과 FLASH(30) 간의 이동을 통해 수행한다.
도 4는 도 3에 도시된 데이터 갱신부(42)의 동작을 설명하기 위한 흐름도이다.
데이터 갱신부(42)에서는 DRAM(20)에 위치한 데이터에 대해서만 갱신을 하는 것이 아니라, DRAM(20)과 FLASH(30)에 있는 데이터에 직접 접근하여 갱신을 한다.
즉, 데이터에 대한 갱신 요청이 들어오면, 데이터 갱신부(42)에서는 기존 데이터 페이지에 대한 갱신 요청인지를 체크한다(S10).
기존 데이터 페이지에 대한 갱신 요청이 아니면, DRAM(20)에 새로운 데이터 페이지(PN)를 할당하여 데이터를 기록하고(S12), 종료한다.
반대로, 기존 데이터 페이지에 대한 갱신 요청인 경우에, 갱신할 데이터 페이지가 DRAM(20)에 있는지를 체크한다(S14).
단계 S14에서의 체크결과, 갱신할 데이터 페이지가 DRAM(20)에 있지 않고 FLASH(30)에 있으면, 데이터 갱신 요청에 대한 갱신 로그(LU)를 생성한다(S16).
갱신 로그(LU)를 생성한 후, FLASH(30)의 해당 데이터 페이지(PF)가 속한 페이지 그룹의 갱신 로그 페이지(PL)를 찾는다(S18). 그리고 나서, 갱신 로그 페이지(PL)에 데이터 갱신 요청에 대한 갱신 로그(UL)를 기록한다(S20).
이와 같이 갱신 로그(UL)를 기록한 후에는, FLASH(30)의 갱신 로그 페이지(PL)에 다음번 갱신 연산에 대한 로그를 기록할 여분의 공간이 있는지를 체크한다(S22).
단계 S22에서의 체크결과, 충분한 공간이 있으면 종료한다. 그런데, 충분한 공간이 없으면, 병합 대상 목록 M에 갱신 로그 페이지(PL)가 속한 페이지 그룹을 추가하고(S24), 종료한다. 여기서, 병합 대상 목록 M에 있는 페이지 그룹들은 나중에 데이터 병합부(46)에 의해 데이터 페이지와 갱신 로그 페이지에 대한 병합이 진행된다.
한편, 단계 S14의 판단 결과, 갱신할 데이터 페이지가 DRAM(20) 영역에 있으면, 해당 데이터 페이지(PD)에 충분한 공간이 있는지를 체크한다(S26).
판단 결과, 충분한 공간이 있으면 해당 데이터 페이지(PD)에 접근하여 데이터 갱신을 하고(S28), 종료한다. 만약, 충분한 공간이 없으면 상술한 단계 S12로 복귀하여 DRAM(20) 영역에 새로운 페이지(PN)를 할당하여 데이터를 기록하고 종료한다.
상술한 바와 같이, 데이터 갱신부(42)는 모든 갱신 연산을 DRAM(20)에서 하게 하는 것이 아니라 FLASH(30)에 위치한 데이터에 대한 갱신은 FLASH(30)의 갱신 로그 페이지에 로그 형태로 기록하게 한다. 이는 데이터 배치부(48)에서 데이터 페이지에 대한 접근 유형과 접근 빈도를 모니터링하여 접근 빈도가 높거나 갱신 연산이 잦은 데이터는 DRAM(20)에 위치하도록 할 것이기 때문이다. 그리고, FLASH(30)에 위치하는 데이터에 대한 갱신 연산은 많지 않을 것이기 때문에 FLASH(30) 상의 갱신 로그 기록을 통한 갱신이 성능에 큰 영향을 미치지 않을 것이다.
한편, 데이터 갱신부(42)에서 데이터 갱신을 위해 DRAM 공간의 새로운 데이터 페이지 요청시, DRAM(20)에는 데이터 배치부(48)에 의해 새로운 데이터 페이지를 할당할 수 있을 만큼의 일정 수 이상의 빈 페이지 공간이 항상 남겨져 있을 것이다.
도 5는 도 3에 도시된 데이터 검색부(44)의 동작을 설명하기 위한 흐름도이다.
데이터 검색부(44)는 사용자의 검색 요청에 대한 처리 결과에 포함된 데이터가 FLASH(30)에 위치한 경우에 데이터 페이지 상의 데이터에 갱신 로그 페이지의 로그를 반영하여 데이터를 최신의 상태로 만들어서 사용자에게 전달한다.
데이터에 대한 검색 요청이 들어오면, 데이터 검색부(44)는 검색할 데이터가 있는 데이터 페이지(P)에 접근하여 데이터(D)를 읽는다(S40).
이어, 데이터 페이지(P)가 위치한 메모리를 체크한다(S42). 예를 들어, 데이터 페이지(P)가 FLASH(30)에 있는 데이터 페이지인지를 체크한다.
체크 결과, FLASH(30)에 있는 데이터 페이지이면 최신 데이터로 만들기 위해 해당 데이터 페이지(P)가 속하는 페이지 그룹의 갱신 로그 페이지(PL)에 접근한다(S44).
그리고 나서, 갱신 로그 페이지(PL)로부터 해당 데이터 페이지(P)에 대한 갱신 로그를 읽어서 검색 결과에 반영하여 데이터(D)를 최신 상태로 만든다(S46). 그 후, 데이터(D)를 반환하고(S48), 종료한다.
한편, 상기 단계 S42에서, 데이터 페이지(P)가 FLASH(30)에 있지 않고 DRAM(20)에 있는 페이지이면 읽은 데이터(D)가 최신 데이터이므로 읽은 데이터(D)를 바로 반환하고(S48), 종료한다.
도 6은 도 3에 도시된 데이터 병합부(46)의 동작을 설명하기 위한 흐름도이다.
데이터 병합부(46)는 병합 대상 목록 M에 있는 갱신 로그가 꽉 찬 페이지 그룹에 대해 향후 발생할 갱신 요청에 대한 처리가 가능하도록 하기 위해, 해당 페이지 그룹에 속한 데이터 페이지의 데이터에 갱신 로그를 반영하는 데이터 병합 연산을 통해 데이터 페이지들을 최신의 상태로 만든다.
여기서, 데이터 병합 연산은 FLASH(30) 공간에서 실행하는 것이 아니라 DRAM(20) 공간에서 실행하는 것이 보다 바람직할 것이다. 이는 병합 연산을 빠르게 하기 위함뿐만 아니라 향후 예상되는 해당 페이지 그룹에 속하는 데이터 페이지들에 대한 데이터 관리 연산 요청의 빠른 지원을 하기 위함이다.
즉, 데이터 병합부(46)는 DRAM 공간에 데이터 병합을 위해 병합할 페이지 그룹의 데이터 페이지들을 복사할 빈 데이터 페이지들을 할당받는다(S50).
이어, 병합할 페이지 그룹에 속한 데이터 페이지들의 내용(데이터)을 DRAM(20)의 새로 할당받은 데이터 페이지들에 복사한다(S52).
이후, 병합할 페이지 그룹에 속한 갱신 로그 페이지에서 갱신 로그를 읽어서 DRAM(20) 상의 데이터 페이지의 데이터들이 최신의 데이터가 되도록 반영한다(S54).
그리고 나서, FLASH(30)의 해당 페이지 그룹에 속한 데이터 페이지들이 유효하지 않음을 표시하고(S56), 데이터 병합을 종료한다.
데이터 병합부(46)는 향후 예상되는 다른 갱신 요청을 포함하는 데이터 관리 연산의 빠른 지원을 위해 병합 후 병합 결과 페이지들을 FLASH(30)로 이동시키지 않고 DRAM(20)에 그냥 둔다. 이들 페이지들은 추후 접근 빈도가 낮아지면 데이터 배치부(48)에 의해 다시 FLASH(30) 영역으로 이동 배치될 것이다.
본 발명에 따르면 데이터 병합부(46)에서 병합을 위해 DRAM(20) 공간의 새로운 데이터 페이지 요청시, DRAM(20) 공간에는 데이터 배치부(48)에 의해 새로운 데이터 페이지를 할당할 수 있을 만큼의 일정 수 이상의 빈 페이지 공간이 항상 남겨져 있을 것이다.
도 7 및 도 8은 도 3에 도시된 데이터 배치부(48)의 동작을 설명하기 위한 흐름도이다.
데이터 배치부(48)에서는 자주 접근되거나 갱신 빈도가 높은 데이터 페이지는 DRAM(20)에 배치하고, 접근 빈도가 낮은 데이터 페이지는 FLASH(30)에 위치하도록 배치한다. 또한, 데이터 배치부(48)에서는 갱신 연산의 효과적인 지원을 위해 DRAM(20)에 항상 일정 수(예컨대, DRAM 영역 전체 데이터 페이지 수의 5% 정도) 이상의 빈 데이터 페이지가 유지되게 한다.
일단, 데이터 배치부(48)에서는 DRAM-FLASH로 구성된 이종 메모리(10)에 효과적인 데이터 배치를 통해 데이터 관리 요청 처리에 대한 최상의 성능을 내기 위해, 데이터 페이지에 대한 접근 패턴과 빈도, 가용한 DRAM 영역의 빈 페이지 수 등을 모니터링한다(S60).
이어, DRAM(20)의 데이터 페이지들을 갱신 접근에 가중치를 둔 접근 빈도에 기반하여 낮은 순으로 정렬하고, FLASH(30)의 데이터 페이지들도 갱신 접근에 가중치를 둔 접근 빈도에 기반하여 높은 순으로 정렬한다(S62). 여기서, 접근 빈도가 높은 페이지를 핫(HOT) 페이지라고 하고, 접근 빈도가 낮은 페이지를 콜드(COLD) 페이지라고 한다.
DRAM(20)에 있는 콜드(COLD)한 페이지보다 FLASH(30)에 있는 핫(HOT)한 페이지의 접근 빈도가 높은 경우이거나 가용한 DRAM(20) 영역의 빈 페이지 수가 미리 정한 기준보다 적은 경우에 데이터 배치를 다시 해야 한다.
따라서, 모니터링 결과, 데이터 배치를 다시 할 상황이 아니면(S64에서 "No") 상술한 단계 S60으로 복귀하여 다시 계속 모니터링을 한다.
반대로, 모니터링 결과 데이터 배치를 다시 해야 하는 상황이면, 다음의 단계 S66, S68, S70, S72를 통해 데이터 배치 조정을 한다.
단계 S66에서, DRAM(20)의 빈 페이지 수가 미리 정한 최소 빈 페이지 수 이상이 되도록 DRAM(20)에서 FLASH(30)로 이동할 콜드(COLD) 페이지들 및 FLASH(30)에서 DRAM(20)으로 이동할 핫(HOT) 페이지들을 선정한다. 그리고, 단계 S68에서, FLASH(30)로 이동할 선정된 DRAM(20)의 콜드(COLD) 페이지들을 그룹핑한다. 여기서, 그룹핑시 모니터링 정보에 기반하여 함께 접근될 가능성이 있는 페이지들이 동일한 그룹에 포함되도록 고려한다. 또한, 하나의 그룹에 속하는 데이터 페이지의 수는 미리 정한 그룹 별 최대 데이터 페이지 수를 넘지 않게 한다. 이후, 단계 S70에서, 각각의 그룹에 대해 다음의 세부 단계 S70-1, S70-2, S70-3을 통해 DRAM(20)에서 FLASH(30)로 이동시킨다. 단계 S70-1에서, FLASH(30)에 그룹의 데이터를 저장할 데이터 페이지들과 해당 그룹의 갱신 로그 페이지를 할당한다. 그리고, 단계 S70-2에서, 이동되는 그룹에 속한 DRAM(20)의 데이터 페이지들을 할당받은 FLASH(30)의 데이터 페이지에 복사한다. 그리고 나서, 단계 S70-3에서, 이동되는 그룹에 속한 데이터 페이지들을 DRAM(20)에서 제거한다.
이와 같이 제거된 DRAM(20) 상의 데이터 페이지들은 빈 페이지가 되어 새로운 데이터 페이지 요청시 할당된다.
한편, 상기 단계 S68, S70을 통해 DRAM(20)의 콜드(COLD)한 페이지들을 FLASH(30)로 이동시켜서 DRAM(20) 상의 공간을 확보한 후에, 선정된 FLASH(30)의 핫(HOT)한 페이지들 각각에 대해 다음의 세부 단계 S72-1, S72-2, S72-3, S72-4를 통해 FLASH(30)에서 DRAM(20)으로 이동시킨다(S72). 단계 S72-1에서, DRAM(20)에 데이터 페이지(PD)를 하나 할당받은 후 이동을 위해 선정된 데이터 페이지(PF)를 복사한다. 그리고, 단계 S72-2에서, 해당 데이터 페이지(PF)가 속하는 그룹의 갱신 로그 페이지(PL)에 접근한다. 이후, 단계 S72-3에서, 갱신 로그 페이지(PL)로부터 관련 로그를 읽어서 반영하여 데이터 페이지(PD)를 최신 상태로 만든다. 그리고, 단계 S72-4에서, FLASH(30)의 해당 데이터 페이지(PF)가 유효하지 않음을 표시한다.
한편, 상술한 본 발명의 실시예는 컴퓨터 시스템에서 구현될 수 있다. 도 9에 도시된 바와 같이, 컴퓨터 시스템(120)은 버스(122)를 통하여 서로 통신하는 하나 이상의 프로세서(121), 메모리(123), 사용자 인터페이스 입력 장치(126), 사용자 인터페이스 출력 장치(127) 및 스토리지(128)를 포함할 수 있다. 또한, 컴퓨터 시스템(120)은 네트워크(130)에 연결되는 하나 이상의 네트워크 인터페이스(129)를 더 포함할 수 있다. 프로세서(121)는 중앙 처리 장치 또는 메모리(123) 또는 스토리지(128)에 저장된 프로세싱 인스트럭션들을 실행하는 반도체 장치일 수 있다. 메모리(123) 및 스토리지(128)는 다양한 형태의 휘발성 또는 비휘발성 저장 매체일 수 있다. 예를 들어, 메모리(123)는 ROM(124)이나 RAM(125) 등을 포함할 수 있다.
그리고, 컴퓨터 시스템(120)은 무선 통신 칩(와이파이 칩)(131)을 추가로 포함할 수 있다.
따라서, 본 발명의 실시예는 컴퓨터로 구현된 방법이나 컴퓨터에서 실행가능한 명령어들이 기록된 비일시적인 컴퓨터에서 읽을 수 있는 매체로 구현될 수 있다. 컴퓨터에서 읽을 수 있는 명령어들이 프로세서에 의해서 수행될 때, 컴퓨터에서 읽을 수 있는 명령어들은 본 발명의 적어도 하나의 실시예에 따른 방법을 수행할 수 있다.
이상에서와 같이 도면과 명세서에서 최적의 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로, 본 기술 분야의 통상의 지식을 가진자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
10 : 이종 메모리 20 : DRAM
30 : FLASH 40 : 데이터 관리 장치
42 : 데이터 갱신부 44 : 데이터 검색부
46 : 데이터 병합부 48 : 데이터 배치부

Claims (1)

  1. 다수의 데이터 페이지를 포함하는 디램과 다수의 데이터 페이지 및 하나의 갱신 로그 페이지를 포함하는 페이지 그룹을 다수개 내장한 플래시를 포함하는 이종 메모리에 새로운 데이터를 저장하고, 상기 이종 메모리에 기저장된 데이터에 대한 갱신 요청 처리를 담당하는 데이터 갱신부;
    상기 이종 메모리에 저장된 데이터에 대한 검색 요청에 대한 처리를 담당하는 데이터 검색부;
    상기 플래시 상의 적어도 하나의 페이지 그룹에 대해 갱신 로그 공간이 모두 사용된 경우에 상기 플래시내의 데이터 페이지와 상기 갱신 로그 페이지에 대한 병합 연산을 처리하는 데이터 병합부; 및
    상기 디램 및 플래시의 데이터 페이지에 대한 접근 유형과 접근 빈도에 기반하여 상기 이종 메모리 상에서 상기 데이터 페이지의 배치를 상기 디램과 상기 플래시 간의 이동을 통해 수행하는 데이터 배치부;를 포함하는 것을 특징으로 하는 이종 메모리 기반 데이터 관리 장치.
KR1020150051498A 2015-04-13 2015-04-13 이종 메모리 기반 데이터 관리 장치 KR20160121819A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150051498A KR20160121819A (ko) 2015-04-13 2015-04-13 이종 메모리 기반 데이터 관리 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150051498A KR20160121819A (ko) 2015-04-13 2015-04-13 이종 메모리 기반 데이터 관리 장치

Publications (1)

Publication Number Publication Date
KR20160121819A true KR20160121819A (ko) 2016-10-21

Family

ID=57257254

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150051498A KR20160121819A (ko) 2015-04-13 2015-04-13 이종 메모리 기반 데이터 관리 장치

Country Status (1)

Country Link
KR (1) KR20160121819A (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190141371A (ko) 2018-06-14 2019-12-24 연세대학교 산학협력단 비휘발성 메모리를 이용한 인메모리 데이터베이스의 데이터 처리 방법 및 인메모리 데이터베이스
KR20200060970A (ko) * 2018-11-23 2020-06-02 연세대학교 산학협력단 스냅샷을 이용한 인메모리 데이터베이스의 데이터 처리 방법 및 인메모리 데이터베이스
KR20210052981A (ko) 2019-11-01 2021-05-11 연세대학교 산학협력단 비휘발성 메모리를 이용한 로그 구조 병합 트리 기반의 데이터 베이스의 데이터 처리 방법
KR20230171300A (ko) 2022-06-13 2023-12-20 연세대학교 산학협력단 심층 유전 알고리즘을 사용한 데이터베이스 튜닝 방법

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190141371A (ko) 2018-06-14 2019-12-24 연세대학교 산학협력단 비휘발성 메모리를 이용한 인메모리 데이터베이스의 데이터 처리 방법 및 인메모리 데이터베이스
US10824563B2 (en) 2018-06-14 2020-11-03 Industry-Academic Cooperation Foundation, Yonsei University Method for processing data in in-memory database using non-volatile memory and in-memory database
KR20200060970A (ko) * 2018-11-23 2020-06-02 연세대학교 산학협력단 스냅샷을 이용한 인메모리 데이터베이스의 데이터 처리 방법 및 인메모리 데이터베이스
KR20210052981A (ko) 2019-11-01 2021-05-11 연세대학교 산학협력단 비휘발성 메모리를 이용한 로그 구조 병합 트리 기반의 데이터 베이스의 데이터 처리 방법
KR20230171300A (ko) 2022-06-13 2023-12-20 연세대학교 산학협력단 심층 유전 알고리즘을 사용한 데이터베이스 튜닝 방법

Similar Documents

Publication Publication Date Title
US10241919B2 (en) Data caching method and computer system
US8966204B2 (en) Data migration between memory locations
US10126964B2 (en) Hardware based map acceleration using forward and reverse cache tables
EP2735978B1 (en) Storage system and management method used for metadata of cluster file system
US9348527B2 (en) Storing data in persistent hybrid memory
US9436597B1 (en) Using non-volatile memory resources to enable a virtual buffer pool for a database application
KR101297442B1 (ko) 공간 지역성을 고려한 요구 기반 플래시 메모리 변환 계층을 포함하는 낸드 플래시 메모리 시스템
US20160098355A1 (en) Optimistic data read
US20130198453A1 (en) Hybrid storage device inclucing non-volatile memory cache having ring structure
US20130290636A1 (en) Managing memory
CN110888600B (zh) 一种面向nand闪存的缓冲区管理方法
CN110188108A (zh) 数据存储方法、装置、系统、计算机设备及存储介质
CN110795363B (zh) 一种存储介质的热页预测方法和页面调度方法
CN110532200B (zh) 一种基于混合内存架构的内存系统
KR20160121819A (ko) 이종 메모리 기반 데이터 관리 장치
WO2014142337A1 (ja) ストレージ装置と方法及びプログラム
CN106055679A (zh) 一种多层次缓存感知型索引方法
CN106909323B (zh) 适用于dram/pram混合主存架构的页缓存方法及混合主存架构系统
KR102321346B1 (ko) 대용량 ssd 장치를 위한 데이터 저널링 방법
CN106294189B (zh) 内存碎片整理方法及装置
CN108664217A (zh) 一种降低固态盘存储系统写性能抖动的缓存方法及系统
CN105988720A (zh) 数据存储装置和方法
CN113311994A (zh) 一种基于高并发的数据缓存方法
KR101546707B1 (ko) 하이브리드 메인 메모리 기반의 메모리 접근 관리방법
KR101353967B1 (ko) 환형 구조의 비휘발성 메모리 캐쉬에 데이터를 읽고 쓰기 위한 데이터 처리 방법