KR102031490B1 - 프리페치 장치 및 방법 - Google Patents

프리페치 장치 및 방법 Download PDF

Info

Publication number
KR102031490B1
KR102031490B1 KR1020180048218A KR20180048218A KR102031490B1 KR 102031490 B1 KR102031490 B1 KR 102031490B1 KR 1020180048218 A KR1020180048218 A KR 1020180048218A KR 20180048218 A KR20180048218 A KR 20180048218A KR 102031490 B1 KR102031490 B1 KR 102031490B1
Authority
KR
South Korea
Prior art keywords
data
prefetch
data information
information
memory
Prior art date
Application number
KR1020180048218A
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 KR1020180048218A priority Critical patent/KR102031490B1/ko
Application granted granted Critical
Publication of KR102031490B1 publication Critical patent/KR102031490B1/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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명의 실시예에 따른 프리페치 버퍼를 포함하는 프리페치 장치 및 방법은 데이터 요청이 인가되면, 요청 테이블에 요청 시간과 데이터 정보를 저장하고, 요청 테이블에 저장된 데이터 정보에 대해 전처리하여 데이터를 저장하는 스토리지 모듈에 저장된 데이터 중 이후 사용 가능성이 높은 데이터가 집중된 핫 영역을 판별하고, 핫 영역에 포함된 데이터들을 회귀 분석하여, 이후 요청될 가능성이 있는 데이터에 대한 데이터 정보를 프리페치 데이터 정보로서 획득하는 프리페치 엔진 및 프리페치 데이터 정보에 따라 스토리지 모듈에 저장된 프리페치 데이터를 인가받아 저장하는 프리페치 버퍼를 포함한다.

Description

프리페치 장치 및 방법{APPARATUS AND METHOD FOR PREFETCHING}
본 발명은 프리페치 장치 및 방법에 관한 것으로, 특히 전처리를 통해 프리페치 정확도를 향상시킬 수 있는 프리페치 장치 및 방법에 관한 것이다.
최근 대용량 데이터의 실시간 처리에 대한 요구가 증가되고 있으며, 기존에 비해 다양한 데이터 생성 소스가 존재함에 따라 데이터량이 더 많아지고 복잡해지는 경향이 있다. 특히 대용량 서버에서는 복잡한 워크로드의 실행과 빅데이터의 처리로 인해 메모리 액세스의 지역성(locality)이 낮아졌으며, 불규칙한 액세스 패턴들로 인해 데이터 예측하기 힘들어졌다.
이에 복잡한 빅 데이터를 실시간으로 분석 할 수 있도록 디스크 대신 메모리가 데이터를 보유하는 인-메모리 데이터베이스 시스템(in-memory database system)등이 제안되었으며, 이와 더불어 캐시 메모리(Cache Memory)의 용량 증가, 멀티 스레딩(multithreading) 및 프리페치(prefetch) 등과 같이 메모리 액세스 대기 시간과 전력 소비를 낮추기 위한 다양한 기법이 제안되었다.
그러나 빅 데이터를 실시간으로 분석할 수 있도록 하기 위해서는 더욱 대기 시간을 줄이고 전력 소비를 줄일 필요성이 있다.
한국 공개 특허 제10-2014-0094934호 (2014.07.31 공개)
본 발명의 목적은 전처리를 통해 효율적인 프리페치를 수행할 수 있는 프리페치 장치 및 방법을 제공하는데 있다.
본 발명의 다른 목적은 실행 시간을 줄일 수 있는 프리페치 장치 및 방법을 제공하는데 있다.
본 발명의 또 다른 목적은 소비 전력을 줄일 수 있는 프리페치 장치 및 방법을 제공하는데 있다.
상기 목적을 달성하기 위한 본 발명의 일 예에 따른 프리페치 장치는 데이터 요청이 인가되면, 요청 테이블에 요청 시간과 데이터 정보를 저장하고, 상기 요청 테이블에 저장된 데이터 정보에 대해 전처리하여 데이터를 저장하는 스토리지 모듈에 저장된 데이터 중 이후 사용 가능성이 높은 데이터가 집중된 핫 영역을 판별하고, 상기 핫 영역에 포함된 데이터들을 회귀 분석하여, 이후 요청될 가능성이 있는 데이터에 대한 데이터 정보를 프리페치 데이터 정보로서 획득하는 프리페치 엔진; 및 상기 프리페치 데이터 정보에 따라 상기 스토리지 모듈에 저장된 프리페치 데이터를 인가받아 저장하는 프리페치 버퍼; 를 포함한다.
상기 프리페치 엔진은 상기 요청 테이블에 저장된 데이터 정보를 복수개의 데이터 그룹으로 분할하고, 상기 복수개의 데이터 그룹 중 하나의 데이터 그룹을 선택하여 필터링하는 상기 전처리를 수행할 수 있다.
상기 프리페치 엔진은 상기 요청 테이블에 저장된 데이터 정보 중 기설정된 방식으로 복수개의 대표값을 획득하고, 상기 복수개의 대표값을 제외한 나머지 데이터 정보을 가장 인접한 대표값과 함께 그룹화하여 상기 복수개의 데이터 그룹으로 분할하며, 상기 복수개의 데이터 그룹 중 상기 데이터 정보가 가장 많이 포함된 데이터 그룹을 선택할 수 있다.
상기 프리페치 엔진은 상기 데이터 정보에 대응하는 필터링 범위를 설정하고, 선택된 데이터 그룹에 포함된 데이터 정보 각각에 대해 상기 필터링 범위로 필터링하여, 필터링된 범위 이내에 가장 많은 데이터 정보가 포함된 범위를 핫 영역으로 설정할 수 있다.
상기 프리페치 엔진은 상기 핫 영역에 포함된 데이터 정보를 오름차순 및 내림차순 정렬하고, 오름차순 및 내림차순 정렬된 데이터 정보를 2차원 좌표에 매칭하여 포지티브 1차 함수 및 네거티브 1차 함수를 각각 획득하며, 상기 포지티브 1차 함수로부터 포지티브 데이터에 대한 정보를 획득하고, 상기 네거티브 1차 함수로부터 네거티브 데이터에 대한 정보를 각각 획득할 수 있다.
상기 목적을 달성하기 위한 본 발명의 다른 예에 따른 프리페치 방법은 데이터 요청이 인가되면, 요청 시간과 데이터 정보를 요청 테이블에 저장하는 단계; 상기 요청 테이블에 저장된 데이터 정보를 전처리하여 데이터를 저장하는 스토리지 모듈에 저장된 데이터 중 이후 사용 가능성이 높은 데이터가 집중된 핫 영역을 판별하는 단계; 상기 핫 영역에 포함된 데이터 정보를 회귀 분석하여, 이후 요청될 가능성이 있는 데이터에 대한 데이터 정보인 프리페치 데이터 정보를 획득하는 단계; 및 상기 프리페치 데이터 정보에 따라 상기 스토리지 모듈에 저장된 데이터를 프리페치 데이터로서 버퍼링하는 단계; 를 포함한다.
따라서, 본 발명의 프리페치 장치 및 방법은 전처리를 통해 포지티브 및 네거티브 프리페치 데이터를 프리페치 버퍼에 저장함으로써, 효율적인 프리페치를 제공할 수 있고, 대기 시간을 줄일 수 있으며, 전력 소비를 저감할 수 있다. 또한 프리페치 장치가 하이브리드 메모리로 구성되는 메인 메모리의 데이터를 프리페치 하는 경우, 메인 메모리의 대기 시간 및 전력 소비를 더욱 크게 줄일 수 있으며, 반복적인 쓰기 횟수를 줄여 수명을 증가 시킬 수 있다.
도1 은 본 발명의 일 실시예에 따른 메모리 시스템의 개략적 구조를 나타낸다.
도2 는 본 발명의 일 실시예에 따른 프리페치 방법을 개략적으로 나타낸 도면이다.
도3 은 도2 의 회귀 분석 단계를 상세하게 나타낸 도면이다.
도4 는 도2 의 데이터 검색 및 요청 테이블 업데이트 단계를 상세하게 나타낸 도면이다.
도5 내지 도7 은 본 발명의 일 실시예에 따른 프리페치 방법의 성능을 시뮬레이션한 결과를 나타낸다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시예를 예시하는 첨부 도면 및 첨부 도면에 기재된 내용을 참조하여야만 한다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 설명함으로써, 본 발명을 상세히 설명한다. 그러나, 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며, 설명하는 실시예에 한정되는 것이 아니다. 그리고, 본 발명을 명확하게 설명하기 위하여 설명과 관계없는 부분은 생략되며, 도면의 동일한 참조부호는 동일한 부재임을 나타낸다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라, 다른 구성요소를 더 포함할 수 있는 것을 의미한다. 또한, 명세서에 기재된 "...부", "...기", "모듈", "블록" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.
도1 은 본 발명의 일 실시예에 따른 메모리 시스템의 개략적 구조를 나타낸다.
도1 을 참조하면, 메인 메모리(MM)는 메모리 버스(Memory Bus)를 통해 캐시 메모리(Cache Memory)(CM)와 연계하여 동작한다.
메인 메모리(MM)는 캐시 메모리(CM)의 요청(request)에 따라 데이터를 탐색하고, 탐색된 데이터를 전송한다. 이에 캐시 메모리(CM)는 전송된 데이터를 페치(Fetch)한다. 그리고 캐시 메모리(CM)에서 축출(Evict)되는 데이터 중 내용이 수정된 데이터와 같이 다시 저장될 필요가 있는 데이터를 인가받아 저장한다.
본 실시예에서 프리페치 장치(PF)는 프리페치 엔진(PFE)과 프리페치 버퍼(PFB)를 포함한다. 그리고 설명의 편의를 위해 프리페치 장치(PF)는 메인 메모리(MM)에 포함되는 것을 가정하여 설명한다. 그러나 이는 예시로서 프리페치 장치(PF)를 구성하는 프리페치 엔진(PFE)과 프리페치 버퍼(PFB)는 메인 메모리(MM)뿐만 아니라 캐시 메모리(CM)에 포함될 수 있다. 또한 캐시 메모리(CM)가 멀티 레벨로 구현되는 경우, 프리페치 장치(PF)는 캐시 메모리(CM)의 멀티 레벨(예를 들면, L1, L2 및 L3 또는 라스트 레벨 캐시메모리(LLC)) 중 적어도 하나의 레벨의 캐시 메모리에 포함되도록 구성될 수 있다.
또한 프리페치 장치(PF)는 별도로 구성될 수 있으며, 프리페치 버퍼(PFB)만이 메인 메모리(MM) 또는 캐시 메모리(CM)에 포함되도록 구성될 수도 있다. 이 경우 프리페치 엔진(PFE)은 별도의 프로세서로 구성될 수도 있으며, 메모리 시스템이 포함된 전체 시스템에 포함된 프로세서가 프리페치 엔긴(PFE)의 기능을 수행할 수도 있다.
따라서, 도1 에서 메인 메모리(MM)는 프리페치 엔진(PFE)과 프리페치 버퍼(PFB) 및 스토리지 모듈(SM)을 포함할 수 있다.
프리페치 엔진(PFE)은 캐시 메모리(CM)에서 이전 요청된 데이터에 대한 데이터 정보가 요청된 순서에 따라 저장되는 요청 테이블(request table: RT)를 생성하고, 요청 테이블(RT)에 저장된 데이터 정보를 기반으로 이후 요청될 가능성이 높은 데이터에 대한 정보를 추론한다. 즉 프리페치될 데이터에 대한 정보를 획득한다.
특히 본 실시예에서 프리페치 엔진(PFE)은 기지정된 전처리 과정(preprocessing)을 수행하여 스토리지 모듈(SM)에 저장된 데이터 중 이후 사용 가능성이 높은 데이터가 집중된 핫 영역(Hot area)을 판별한다. 그리고 판별된 핫 영역에 포함된 데이터들에 대해 회귀 분석(Regression analysis)을 수행함으로써, 프리페치될 데이터를 추론한다.
프리페치 엔진(PFE)의 동작을 상세하게 설명하면, 프리페치 엔진(PFE)은 데이터 정보를 요청된 순서에 따라 순차적으로 저장하여 요청 테이블(RT)을 생성한다. 이때 프리페치 엔진(PFE)은 최근 요청된 기설정된 개수(예를 들면 100개)의 데이터 정보를 데이터가 요청된 시간과 함께 저장하도록 구성될 수 있다. 여기서 데이터 정보는 요청된 데이터기 저장된 메모리 주소일 수 있다.
그리고 프리페치 엔진(PFE)은 전처리 과정에서 우선 요청 테이블(RT)에 저장된 데이터 정보를 다수의 그룹으로 구분하고, 다수의 그룹 중 하나를 선택하는 분할(Partitioning) 작업을 수행하며, 이후, 선택된 그룹에서 데이터 정보들을 다시 필터링하여, 사용 가능성이 높은 데이터 정보들이 밀집된 영역을 분석한다. 즉 핫 영역(Hot area)을 판별한다.
분할 작업에서 프리페치 엔진(PFE)은 요청 테이블(RT)에 저장된 데이터 정보 중에서 기설정된 방법으로 복수개의 대표값을 획득한다. 대표값을 선택하는 방법 및 대표값의 개수는 다양하게 설정될 수 있으나, 여기서는 일예로 프리페치 엔진(PFE)이 요청 테이블(RT)에 저장된 데이터 정보인 메모리 주소들의 최대값과 최소값 및 최대값과 최소값의 평균값을 대표값으로 획득하는 것으로 가정한다.
그리고 프리페치 엔진(PFE)은 요청 테이블(RT)에 저장된 메모리 주소 중 대표값을 제외한 나머지 데이터 정보 각각을 가장 인접한 대표값이 포함된 데이터 그룹에 포함시킨다. 즉 3개의 대표값이 설정되어 있으므로, 요청 테이블(RT)에 저장된 모든 데이터 정보는 3개의 데이터 그룹으로 구분될 수 있다.
이후 프리페치 엔진(PFE)은 구분된 복수개의 데이터 그룹 중 가장 많은 데이터 정보가 포함된 데이터 그룹을 선택한다.
한편 프리페치 엔진(PFE)은 필터링을 수행하기 위한 필터링 범위를 설정한다. 여기서 필터링 범위는 선택된 데이터 그룹에 포함된 데이터 정보 중에서 다른 데이터 정보와 공간 지역성(spatial locality)이 낮아 사용 가능성이 낮은 데이터 정보를 판별하여 제외하기 위해 설정되는 값으로, 프리페치 성능 향상에 장애가 되는 노이즈 데이터를 제거하기 위한 값이다. 여기서 필터링 범위는 스토리지 메모리(SM)의 용량에 따라 다양하게 설정될 수 있으며, 일예로 메모리 주소 100범위으로 설정될 수 있다.
그리고 프리페치 엔진(PFE)은 선택된 그룹에 포함된 데이터 정보들 각각을 기준으로 필터링 작업을 수행하여, 필터링 범위 이내에 해당하는 다른 데이터 정보의 개수를 판별한다. 즉 선택된 그룹 내의 메모리 주소 각각으로부터 100 이내의 주소 거리를 갖는 다른 데이터 정보의 개수를 판별할 수 있다.
프리페치 엔진(PFE)은 각각의 데이터 정보를 필터링하여, 획득된 데이터 정보의 개수 중 가장 많은 데이터 정보를 포함하는 데이터 정보의 필터링 범위를 핫 영역으로 설정하고, 여기에 포함된 데이터 정보를 핫 데이터 정보로 획득한다. 즉 핫 영역은 요청 테이블(RT)에 저장된 메모리 주소들 중 필터 범위로 설정된 주소 범위 이내에서 가장 많은 메모리 주소가 포함된 고밀도 영역을 나타낸다.
이렇게 획득된 핫 데이터 정보는 회귀 분석을 위한 입력 데이터로 이용된다.
상기에서는 일예로 필터링 범위가 데이터 정보인 메모리 주소인 것으로 설명하였으나, 필터링 범위는 다른 값으로 설정될 수도 있다. 예를 들면, 필터링 범위는 요청 테이블(RT)에 저장된 요청 시간에 대한 시간 범위(일예로 10s)로 설정될 수도 있다.
프리페치 엔진(PFE)이 전처리 과정을 통해 이후 수행할 회귀 분석을 위한 입력 데이터를 줄임에 따라 불필요한 노이즈 데이터를 제거할 수 있을 뿐만 아니라, 회귀 분석을 위한 연산량을 줄여 오버헤드를 저감시킬 수 있다.
회귀 분석은 통계에서 사용되는 분석 기법 중 하나로서, 데이터 변화의 경향성을 추론하기 위해 이용되는 분석 기법으로, 현재는 지도 기계 학습(supervised machine learning)의 기법으로 널리 이용되고 있다.
프리페치 엔진(PFE)은 회귀 분석을 수행하기 위해, 먼저 핫 데이터 정보를 오름차순 정렬한다. 그리고 오름차순 정렬된 핫 데이터 정보 각각을 2차원 좌표를 갖는 그래프에 맵핑한다. 여기서 x축은 정렬 순차를 나타내고, y축은 데이터 정보인 메모리 주소일 수 있다.
프리페치 엔진(PFE)은 2차원 그래프에 맵핑된 핫 데이터 정보로부터 1차 함수를 획득한다. 여기서 핫 데이터 정보가 오름차순 정렬된 상태이므로, 1차 함수는 양의 기울기 값을 갖는다. 본 실시예에서는 양의 기울기 값을 갖는 1차 함수를 포지티브 1차 함수라 한다. 그리고 핫 데이터 정보의 개수가 n(여기서 n은 자연수)개인 경우, 프리페치 엔진(PFE)은 포지티브 1차 함수로부터 n+1인 경우의 메모리 주소를 획득한다. 즉 프리페치 엔진(PFE)은 획득된 포지티브 1차 함수의 x값에 n+1의 값을 대입하고, 이때의 y 값을 계산함으로써, 다음 이용될 가능성이 높은 데이터에 대한 메모리 주소를 획득한다.
한편, 본 실시예에서 프리페치 엔진(PFE)은 데이터 정보의 경향성이 포지티브뿐만 아니라 네거티브로 나타날 수도 있다는 점을 고려하여 핫 데이터 정보를 다시 내림차순 정렬한다. 그리고 내림차순 정렬된 핫 데이터 정보 각각을 2차원 좌표를 갖는 그래프에 맵핑하여, 음의 기울기 값을 갖는 네거티브 1차 함수를 획득한다. 네거티브 1차 함수가 획득되면, 프리페치 엔진(PFE)은 네거티브 1차 함수로부터 n+1인 경우의 메모리 주소를 획득한다.
여기서 획득된 n+1의 메모리 주소는 각각 포지티브 프리페치 데이터와 네거티브 프리페티 데이터에 대한 메모리 주소이다.
따라서 프리페치 엔진(PFE)은 전처리를 통해 획득된 핫 데이터 정보에 대해 회귀 분석을 수행함으로써, 빅 데이터와 같이 불규칙한 액세스 패턴이 자주 발생되는 경우에도 이후 사용될 가능성이 높은 데이터를 용이하게 추출할 수 있도록 한다.
상기에서는 프리페치 엔진(PFE)이 포지티브 프리페치 데이터에 대한 메모리 주소를 획득한 이후, 네거티브 프리페티 데이터에 대한 메모리 주소를 획득하는 것으로 설명하였으나, 프리페치 엔진(PFE)은 포지티브 프리페치 데이터에 대한 메모리 주소와 네거티브 프리페티 데이터에 대한 메모리 주소를 동시에 획득하도록 구성될 수 있다. 즉 회귀 분석을 병렬로 수행할 수 있다.
프리페치 버퍼(PFB)는 프리페치 엔진(PFE)에서 획득된 메모리 주소에 따라 스토리지 모듈(SM)로부터 포지티브 프리페치 데이터와 네거티브 프리페티 데이터를 읽어와서 저장한다. 즉 프리페치한다. 이후 캐시 메모리(CM)로부터 데이터가 요청되면, 프리페치된 데이터 중 요청된 데이터가 포함되어 있는지 판별하고, 요청된 데이터가 포함되어 있으면, 프리페치된 데이터를 캐시 메모리(CM)로 전송한다.
프리페치 엔진(PFE)은 데이터가 요청되면 요청 테이블(RT)를 업데이트 하고, 프리페치 데이터에 대한 메모리 주소를 다시 획득할 수 있다. 이에 프리페치 버퍼(PFB)는 프리페치 데이터가 이미 저장된 데이터가 아니면, 스토리지 모듈(SM)로부터 획득하여 저장할 수 있다. 그리고 저장된 프리페치 데이터의 데이터 량이 저장 가능한 용량을 초과하면, 선입 선출법(FIFO)에 따라 먼저 저장된 프리페치 데이터를 페기할 수 있다.
프리페치 버퍼(PFB)가 포지티브 프리페치 데이터뿐만 아니라, 네거티브 프리페티 데이터를 모두 저장함에 따라, 데이터 요청에 대한 히트율을 크게 높일 수 있다. 즉 프리페치 성능을 대폭 향상 시킬 수 있으며, 대기시간을 크게 저감할 수 있으며, 소비 전력을 줄일 수 있다.
스토리지 모듈(SM)은 데이터를 저장하는 적어도 하나의 메모리 모듈을 포함할 수 있다. 스토리지 모듈(SM)은 단일 종류의 메모리 모듈로 구성될 수도 있으며, 서로 다른 종류의 메모리 모듈로 구성될 수도 있다.
프리페치 장치(PF)가 메인 메모리(MM)에 포함되고, 단일 종류의 메모리 모듈로 구성되는 경우, 메모리 모듈은 일예로 DRAM(dynamic random access memory) 모듈(DRM) 또는 상변화 메모리(Phase-Change Memory) 모듈(PCM) 등이 이용될 수 있다. 그리고 스토리지 모듈(SM)이 서로 다른 종류의 메모리 모듈로 구성되는 경우, 메인 메모리(MM)를 하이브리드 메인 메모리(hybrid main memory)라고 하며, 일예로 DRAM 모듈(DRM)과 NAND 플래시 메모리(NAND Flash Memory) 모듈 및 상변화 메모리 모듈(PCM) 등의 메모리 모듈이 이용될 수 있다.
그리고 DRAM 모듈(DRM)이 NAND 플래시 메모리 모듈 또는 상변화 메모리 모듈(PCM)과 함께 이용되는 하이브리드 메인 메모리에서 DRAM 모듈(DRM)은 독립적인 메모리 모듈로 이용될 수도 있으나, 경우에 따라서는 NAND 플래시 메모리 모듈 또는 상변화 메모리 모듈(PCM)과 캐시 메모리(CM) 사이의 속도 차이를 완화하기 위한 버퍼 메모리로 이용될 수도 있다.
또한 스토리지 모듈(SM)에 DRAM 모듈(DRM)이 포함된 경우, 프리페치 버퍼(PFB)는 DRAM 모듈(DRM)의 용량의 일부를 할당받아 구현될 수 있다. 즉 프리페치 버퍼(PFB)는 DRAM 모듈(DRM) 내에 포함될 수 있다.
상기에서는 프리페치 장치(PF)가 메인 메모리(MM)에 포함되는 것을 가정하여 스토리지 모듈이 DRAM 모듈(DRM)이나 NAND 플래시 메모리 모듈 또는 상변화 메모리 모듈(PCM) 등으로 구현되는 것으로 설명하였다. 그러나 프리페치 장치(PF)가 캐시 메모리(CM)에 포함되어 구현되는 경우, 스토리지 모듈(SM)은 캐시 메모리에서 데이터를 저장하는 저장 모듈로서, 일예로 고속 동작이 가능한 SRAM(static random access memory) 등으로 구현될 수 있다.
도2 는 본 발명의 일 실시예에 따른 프리페치 방법을 개략적으로 나타낸 도면이다.
도1 을 참조하여, 도2 의 프리페치 방법을 설명하면, 우선 데이터 액세스 요청이 인가되는지 판별한다(S10). 데이터 액세스 요청이 인가되면, 프리페치 버퍼(PFB) 및 스토리지 모듈(SM)에 요청된 데이터가 저장되었는지 검색하여 캐시 메모리로 전송한다. 이와 함께 프리페치 엔진(PFE)은 데이터가 요청된 시간 및 요청된 데이터의 메모리 주소를 데이터 정보로서 요청 테이블(RT)에 저장하여 요청 테이블(RT)을 업데이트 한다(S20).
그리고 프리페치 엔진(PFE)은 2단계의 전처리 과정을 수행한다. 프리페치 엔진(PFE)은 전처리 과정의 1단계로 분할 작업을 수행한다. 프리페치 엔진(PFE)은 분할 작업에서 요청 테이블(RT)에 저장된 데이터 정보를 기설정된 개수의 복수개의 데이터 그룹으로 구분한다(S30). 프리페치 엔진(PFE)은 기설정된 방법으로 복수개의 대표값을 설정하고, 설정된 대표값을 기준으로 나머지 데이터 정보를 그룹화하여 복수개의 데이터 그룹을 구성할 수 있다. 그리고 프리페치 엔진(PFE)는 복수개의 데이터 그룹 중 가장 많은 데이터 정보가 포함된 데이터 그룹을 선택한다(S40).
데이터 그룹이 선택되면, 프리페치 엔진(PFE)은 전처리 과정의 2단계로 필터링 작업을 수행한다. 프리페치 엔진(PFE)은 필터링 작업을 위해 우선 필터링 범위를 설정한다(S50). 그리고 선택된 데이터 그룹에 포함된 데이터 정보 각각을 설정된 필터링 범위로 필터링하여, 선택된 데이터 그룹 내에서 필터링 범위 이내에 가장 많은 데이터 값이 포함된 영역을 핫 영역으로 선택하고, 핫 영역에 포함된 데이터 정보를 핫 데이터 정보로 획득한다(S60).
핫 데이터 정보가 획득되면, 프리페치 엔진(PFE)은 핫 데이터 정보를 입력 데이터로 이용하여 회귀 분석을 수행한다(S70). 프리페치 엔진(PFE)은 회귀 분석을 통해, 요청되는 데이터의 경향성을 판별하여, 불규칙한 액세스 패턴에 대해서도 정확도 높은 프리페치 데이터에 대한 데이터 정보를 획득할 수 있도록 한다. 특히 본 실시예에서는 프리페치 엔진(PFE)이 포지티브 프리페치 데이터뿐만 아니라 네거티브 프리페치 데이터를 판별할 수 있도록 하여, 이후 요청될 데이터에 대한 히트율을 크게 높일 수 있도록 한다.
프리페치 엔진(PFE)이 프리페치 데이터에 대한 데이터 정보를 획득하면, 프리페치 버퍼(FPB)는 획득된 데이터 정보에 따라 스토리지 모듈에 저장된 데이터를 읽어 프리페치 데이터로 저장한다(S80).
도3 은 도2 의 회귀 분석 단계를 상세하게 나타낸 도면이다.
도3 의 회귀 분석 단계는 우선, 프리페치 엔진(PFE)은 핫 데이터 정보를 오름차순 정렬한다(S71). 이와 함께 프리페치 엔진(PFE)은 핫 데이터 정보를 내림차순 정렬한다(S72). 그리고 오름차순 정렬 및 내림차순 전렬된 핫 데이터 정보를 각각 2차원 좌표에 맵핑한다(S73). 여기서 2차원 좌표의 x축은 정렬 순서이며, y축은 데이터 정보일 수 있다.
그리고 프리페치 엔진(PFE)은 오름차순 정렬되어 2차원 좌표에 맵핑된 핫 데이터 정보로부터 포지티브 1차 함수를 추론한다(S74). 또한 내림차순 정렬되어 2차원 좌표에 맵핑된 핫 데이터 정보로부터 네거티브 1차 함수를 추론한다(S75).
포지티브 1차 함수 및 네거티브 1차 함수가 각각 추론되면, 프리페치 엔진(PFE)은 포지티브 1차 함수를 이용하여 포지티브 프리페치 데이터에 대한 데이터 정보를 획득한다(S76). 또한 네거티브 1차 함수를 이용하여 네거티브 프리페치 데이터에 대한 데이터 정보를 획득한다(S77).
도4 는 도2 의 데이터 검색 및 요청 테이블 업데이트 단계를 상세하게 나타낸 도면이다.
데이터 요청이 인가되면, 프리페치 버퍼(PFB)에 요청된 데이터가 저장되어 있는지 우선 탐색한다(S21). 그리고 프리페치 버퍼(PFB)에 요청된 데이터가 저장되어 히트되는지 판별한다(S22). 만일 프리페치 버퍼(PFB)에 요청된 데이터가 저장되어 있으면, 프리페치 버퍼(PFB)에 저장된 데이터를 전송한다(S23). 그러나 요청된 데이터가 프리페치 버퍼(PFB)에 저장되어 있지 않으면, 즉 미스가 발생하면, 스토리지 모듈에서 해당 데이터를 탐색하여 전송한다(S24).
그리고 프리페치 엔진(PFE)은 데이터가 요청된 시간과 요청된 데이터에 대한 데이터 정보를 요청 테이블(RT)에 저장하여 요청 테이블(RT)을 업데이트 한다(S25).
이때 프리페치 엔진(PFE)은 요청 테이블(RT)에 저장된 데이터 정보의 개수가 설정된 최대 개수를 초과하면, 가장 먼저 저장된 데이터 정보를 폐기하고, 요청 테이블(RT)을 업데이트 할 수 있다.
도5 내지 도7 은 본 발명의 일 실시예에 따른 프리페치 방법의 성능을 시뮬레이션한 결과를 나타낸다.
도5 내지 도7 은 캐시 메모리(CM)가 L1 내지 L3(LLC)의 멀티 레벨을 갖고 메인 메모리(MM)는 DRAM 모듈(DRM)과 상변화 메모리 모듈(PCM)을 갖는 하이브리드 메인 메모리인 시스템을 시뮬레이션 환경으로 하여 수행된 결과를 나타낸다. 그리고 프리페치 장치(PF)는 도1 에서와 같이 메인 메모리(MM)에 포함되어 구성된 경우에 대해 시뮬레이션을 수행하였다.
여기서 L1 캐시는 명령어 캐시와 데이터 캐시로 구분되어 각각 32KB의 크기를 갖고, L2 및 L3 캐시는 명령어와 데이터의 구분이 없는 통합 캐시로서 각각 512KB 및 8MB의 크기를 갖는다. 그리고 메인 메모리에서 프리페치 버퍼(PFB)와 DRAM 모듈(DRM) 및 상변화 메모리 모듈(PCM)은 각각 128MB, 128MB 및 1GB의 크기를 갖는다.
시뮬레이션은 핀-기반 트레이스 생성기(pin-based trace generator)를 이용하였으며, 대규모 그래프 분석(Large Scale Graph Analysis) 응용 프로그램을 위한 워크로드(Workload)가 표1 과 같이 이용되었다.
Figure 112018041354752-pat00001
그리고 LDBC(Linked Data Benchmark Council)가 데이터를 생성하는 벤치 마크 프로그램으로 이용되었다.
시뮬레이션은 본 실시예에 따라 전처리 및 회귀 분석을 수행하는 메인 메모리의 프리페치 방법의 성능을 기존의 다른 모델과 비교하여 나타낸다.
여기서 비교된 모델은 메인 메모리(MM)이 DRAM 모듈만으로 구현되는 경우에 적용되는 Coven과 하이브리드 메인 메모리에 프리페치를 적용하는 GHB(Global History Buffer), SMS (Spatial Memory Streaming) 및 AMPM (Access Map Pattern Matching) 모델이다.
더불어 시뮬레이션은 전처리를 수행한 경우와 수행하지 않은 경우를 비교하여 전처리로 인한 성능 향상을 함께 확인할 수 있도록 하였다.
도5 는 실행 시간의 관점에서 시뮬레이션 결과를 나타내며, 본 실시예에 따른 전처리 및 회귀 분석을 수행한 프리페치 방법은 Coven에 비해 67 %, GHB에 비해 14 %, SMS에 비해 14 %, AMPM에 비해 13 % 및 전처리를 수행하지 않은 방법(Nopre)에 비해 11 %의 전반적인 성능 향상을 나타냄을 알 수 있다.
도6 은 전력 소비량에 대한 시뮬레이션 결과를 나타내며, 본 실시예에 따른 전처리 및 회귀 분석을 수행한 프리페치 방법은 Coven에 비해 56 %, GHB에 비해 10 %, SMS에 비해 10 %, AMPM에 비해 9 % 및 전처리를 수행하지 않은 방법(Nopre)에 비해 8 %의 성능 향상을 나타내는 것으로 확인되었다.
도7 은 메인 메모리(MM)에 상변화 메모리 모듈(PCM)이 적용된 경우, 상변화 메모리 모듈(PCM)의 수명을 비교하여 나타낸 결과로서, 상변화 메모리 모듈(PCM)의 수명은 수학식 1에 따라 계산되었다.
Figure 112018041354752-pat00002
여기서 Wmax는 상변화 메모리 모듈(PCM)의 최대 기록 내구성이고, S 및 B는 각각 PCM 용량 및 쓰기 트래픽이다.
도7 에서 확인되는 바와 같이, 본 실시예에 따른 전처리 및 회귀 분석을 수행한 프리페치 방법은 GHB 및 SMS에 비해 12 %, AMPM 및 전처리를 수행하지 않은 방법(Nopre)에 비해 17 % 상변화 메모리 모듈(PCM)의 수명이 길어지는 것으로 확인되었다.
결과적으로 본 실시예에 따른 전처리 및 회귀 분석을 수행한 프리페치 방법은 대기시간을 줄여 실행 시간을 줄일 수 있으며, 전력 소비를 저감할 수 있다. 또한 하이브리드 메인 메모리의 경우 제품의 수명을 향상 시킬 수 있다.
본 발명에 따른 방법은 컴퓨터에서 실행 시키기 위한 매체에 저장된 컴퓨터 프로그램으로 구현될 수 있다. 여기서 컴퓨터 판독가능 매체는 컴퓨터에 의해 액세스 될 수 있는 임의의 가용 매체일 수 있고, 또한 컴퓨터 저장 매체를 모두 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함하며, ROM(판독 전용 메모리), RAM(랜덤 액세스 메모리), CD(컴팩트 디스크)-ROM, DVD(디지털 비디오 디스크)-ROM, 자기 테이프, 플로피 디스크, 광데이터 저장장치 등을 포함할 수 있다.
본 발명은 도면에 도시된 실시예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다.
따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 청구범위의 기술적 사상에 의해 정해져야 할 것이다.
LLC: 라스트 레벨 캐시 메모리
MM: 메인 메모리
PFB: 프리페치 버퍼
PFE: 프리페치 엔진
DRM: DRAM 모듈
PCM: 상변화 메모리 모듈

Claims (14)

  1. 데이터 요청이 인가되면, 요청 테이블에 요청 시간과 데이터 정보를 저장하고, 상기 요청 테이블에 저장된 데이터 정보에 대해 전처리하여 데이터를 저장하는 스토리지 모듈에 저장된 데이터 중 이후 사용 가능성이 높은 데이터가 집중된 핫 영역을 판별하고, 상기 핫 영역에 포함된 데이터들을 회귀 분석하여, 이후 요청될 가능성이 있는 데이터에 대한 데이터 정보를 프리페치 데이터 정보로서 획득하는 프리페치 엔진; 및
    상기 프리페치 데이터 정보에 따라 상기 스토리지 모듈에 저장된 프리페치 데이터를 인가받아 저장하는 프리페치 버퍼; 를 포함하되,
    상기 프리페치 엔진은
    상기 핫 영역에 포함된 데이터 정보를 오름차순 및 내림차순 정렬하고, 오름차순 및 내림차순 정렬된 데이터 정보를 2차원 좌표에 매칭하여 포지티브 1차 함수 및 네거티브 1차 함수를 각각 획득하며, 상기 포지티브 1차 함수로부터 포지티브 데이터에 대한 정보를 획득하고, 상기 네거티브 1차 함수로부터 네거티브 데이터에 대한 정보를 각각 획득하는 것을 특징으로 하는 프리페치 장치.
  2. 제1 항에 있어서, 상기 프리페치 엔진은
    상기 요청 테이블에 저장된 데이터 정보를 복수개의 데이터 그룹으로 분할하고, 상기 복수개의 데이터 그룹 중 하나의 데이터 그룹을 선택하여 필터링하는 상기 전처리를 수행하는 것을 특징으로 하는 프리페치 장치.
  3. 제2 항에 있어서, 상기 프리페치 엔진은
    상기 요청 테이블에 저장된 데이터 정보 중 기설정된 방식으로 복수개의 대표값을 획득하고, 상기 복수개의 대표값을 제외한 나머지 데이터 정보을 가장 인접한 대표값과 함께 그룹화하여 상기 복수개의 데이터 그룹으로 분할하며, 상기 복수개의 데이터 그룹 중 상기 데이터 정보가 가장 많이 포함된 데이터 그룹을 선택하는 것을 특징으로 하는 프리페치 장치.
  4. 제3 항에 있어서, 상기 프리페치 엔진은
    상기 데이터 정보에 대응하는 필터링 범위를 설정하고, 선택된 데이터 그룹에 포함된 데이터 정보 각각에 대해 상기 필터링 범위로 필터링하여, 필터링된 범위 이내에 가장 많은 데이터 정보가 포함된 범위를 핫 영역으로 설정하는 것을 특징으로 하는 프리페치 장치.
  5. 삭제
  6. 제1 항에 있어서, 상기 데이터 정보는
    데이터의 메모리 주소인 것을 특징으로 하는 프리페치 장치.
  7. 제1 항에 있어서, 상기 스토리지 모듈은
    캐시 메모리 또는 메인 메모리 중 적어도 하나에 포함되는 것을 특징으로 하는 프리페치 장치.
  8. 제7 항에 있어서, 상기 메인 메모리는
    서로 다른 두 종류 이상의 메모리 모듈을 상기 스토리지 모듈로 포함되는 하이브리드 메인 메모리인 것을 특징으로 하는 프리페치 장치.
  9. 제8 항에 있어서, 상기 메인 메모리는
    상기 스토리지 모듈로 DRAM 모듈, NAND 플래시 메모리 및 상변화 메모리 중 둘 이상을 포함하는 것을 특징으로 하는 프리페치 장치.
  10. 제7 항에 있어서, 상기 프리페치 장치는
    상기 데이터 요청이 인가되면, 상기 프리페치 버퍼에서 요청된 데이터를 탐색하고, 상기 프리페치 버퍼에 요청된 데이터가 존재하지 않으면, 상기 스토리지 모듈을 탐색하는 것을 특징으로 하는 프리페치 장치.
  11. 데이터 요청이 인가되면, 요청 시간과 데이터 정보를 요청 테이블에 저장하는 단계;
    상기 요청 테이블에 저장된 데이터 정보를 전처리하여 데이터를 저장하는 스토리지 모듈에 저장된 데이터 중 이후 사용 가능성이 높은 데이터가 집중된 핫 영역을 판별하는 단계;
    상기 핫 영역에 포함된 데이터 정보를 회귀 분석하여, 이후 요청될 가능성이 있는 데이터에 대한 데이터 정보인 프리페치 데이터 정보를 획득하는 단계; 및
    상기 프리페치 데이터 정보에 따라 상기 스토리지 모듈에 저장된 데이터를 프리페치 데이터로서 버퍼링하는 단계; 를 포함하되,
    상기 회귀 분석하는 단계는
    상기 핫 영역에 포함된 데이터 정보를 오름차순 및 내림차순 정렬하는 단계;
    오름차순 및 내림차순 정렬된 데이터 정보를 2차원 좌표에 매칭하여 포지티브 1차 함수 및 네거티브 1차 함수를 각각 획득하는 단계; 및
    상기 포지티브 1차 함수로부터 포지티브 데이터에 대한 정보를 획득하고, 상기 네거티브 1차 함수로부터 네거티브 데이터에 대한 정보를 각각 획득하는 단계; 를 포함하는 것을 특징으로 하는 프리페치 방법.
  12. 제11 항에 있어서, 상기 핫 영역을 판별하는 단계는
    상기 요청 테이블에 저장된 데이터 정보 중 기설정된 방식으로 복수개의 대표값을 획득하고, 상기 복수개의 대표값을 제외한 나머지 데이터 정보을 가장 인접한 대표값과 함께 그룹화하여 상기 복수개의 데이터 그룹으로 분할하며, 상기 복수개의 데이터 그룹 중 상기 데이터 정보가 가장 많이 포함된 데이터 그룹을 선택하는 단계; 및
    상기 데이터 정보에 대응하는 필터링 범위를 설정하고, 선택된 데이터 그룹에 포함된 데이터 정보 각각에 대해 상기 필터링 범위로 필터링하여, 필터링된 범위 이내에 가장 많은 데이터 정보가 포함된 범위를 핫 영역으로 설정하는 단계; 를 포함하는 것을 특징으로 하는 프리페치 방법.
  13. 제12 항에 있어서, 상기 복수개의 대표값은
    상기 요청 테이블에 저장된 데이터 정보 중 최대값과 최소값 및 상기 최대값과 최소값의 평균값인 것을 특징으로 하는 프리페치 방법.
  14. 삭제
KR1020180048218A 2018-04-26 2018-04-26 프리페치 장치 및 방법 KR102031490B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180048218A KR102031490B1 (ko) 2018-04-26 2018-04-26 프리페치 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180048218A KR102031490B1 (ko) 2018-04-26 2018-04-26 프리페치 장치 및 방법

Publications (1)

Publication Number Publication Date
KR102031490B1 true KR102031490B1 (ko) 2019-10-11

Family

ID=68210169

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180048218A KR102031490B1 (ko) 2018-04-26 2018-04-26 프리페치 장치 및 방법

Country Status (1)

Country Link
KR (1) KR102031490B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11232171A (ja) * 1997-10-29 1999-08-27 Hitachi Ltd 情報処理システム
KR20140094934A (ko) 2013-01-23 2014-07-31 삼성전자주식회사 하이브리드 메모리 시스템의 버퍼 효율성을 위한 페이지 병합 방법
KR20150133524A (ko) * 2014-05-20 2015-11-30 삼성전자주식회사 스토리지 컨트롤러 및 상기 스토리지 컨트롤러의 동작 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11232171A (ja) * 1997-10-29 1999-08-27 Hitachi Ltd 情報処理システム
KR20140094934A (ko) 2013-01-23 2014-07-31 삼성전자주식회사 하이브리드 메모리 시스템의 버퍼 효율성을 위한 페이지 병합 방법
KR20150133524A (ko) * 2014-05-20 2015-11-30 삼성전자주식회사 스토리지 컨트롤러 및 상기 스토리지 컨트롤러의 동작 방법

Similar Documents

Publication Publication Date Title
CN108009008B (zh) 数据处理方法和系统、电子设备
Eisenman et al. Bandana: Using non-volatile memory for storing deep learning models
Joseph et al. Prefetching using markov predictors
Saemundsson et al. Dynamic performance profiling of cloud caches
US9336141B2 (en) Hash-based spatial sampling for efficient cache utility curve estimation and cache allocation
US10235044B2 (en) System and methods for storage data deduplication
US11055224B2 (en) Data processing apparatus and prefetch method
CN110287010B (zh) 一种面向Spark时间窗口数据分析的缓存数据预取方法
JP6313993B2 (ja) ホストのサービス品質インジケータに重みを割り当てるための装置および方法ならびに記憶媒体
Li et al. TaP: Table-based Prefetching for Storage Caches.
CN107430551B (zh) 数据缓存方法、存储控制装置、及存储设备
Laga et al. Lynx: A learning linux prefetching mechanism for ssd performance model
CN108932150B (zh) 基于ssd和磁盘混合存储的缓存方法、装置及介质
JP6402647B2 (ja) データ配置プログラム、データ配置装置およびデータ配置方法
KR102161192B1 (ko) 코어 트레이스로부터 데이터 마이닝을 하기 위한 방법 및 장치
Zhou et al. A correlation-aware page-level FTL to exploit semantic links in workloads
US9851925B2 (en) Data allocation control apparatus and data allocation control method
KR102031490B1 (ko) 프리페치 장치 및 방법
Liu et al. FLAP: Flash-aware prefetching for improving SSD-based disk cache
KR20180072345A (ko) 페이지의 프리페칭 방법 및 장치
Wu et al. A data management method for databases using hybrid storage systems
Etsion et al. Exploiting core working sets to filter the L1 cache with random sampling
Lee et al. Page replacement for write references in NAND flash based virtual memory systems
KR101976320B1 (ko) 라스트 레벨 캐시 메모리 및 이의 데이터 관리 방법
US8621156B1 (en) Labeled cache system

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant