KR102187213B1 - 힙 메모리 오브젝트의 배치 방법 및 이를 구현하는 이기종 메모리 시스템 - Google Patents

힙 메모리 오브젝트의 배치 방법 및 이를 구현하는 이기종 메모리 시스템 Download PDF

Info

Publication number
KR102187213B1
KR102187213B1 KR1020190043730A KR20190043730A KR102187213B1 KR 102187213 B1 KR102187213 B1 KR 102187213B1 KR 1020190043730 A KR1020190043730 A KR 1020190043730A KR 20190043730 A KR20190043730 A KR 20190043730A KR 102187213 B1 KR102187213 B1 KR 102187213B1
Authority
KR
South Korea
Prior art keywords
memory
heap
energy consumption
energy
heap memory
Prior art date
Application number
KR1020190043730A
Other languages
English (en)
Other versions
KR20200092237A (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 서강대학교 산학협력단
Publication of KR20200092237A publication Critical patent/KR20200092237A/ko
Application granted granted Critical
Publication of KR102187213B1 publication Critical patent/KR102187213B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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/5016Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)

Abstract

이기종 메모리 시스템으로서, 제1 메모리 및 상기 제1 메모리와 상이한 타입의 제2 메모리로 구성되는 메모리 디바이스, 응용 프로그램으로부터 프로파일링 요청을 수신하면, 상기 응용 프로그램이 상기 메모리 디바이스에 배치하는 힙 메모리 오브젝트(heap memory object)가 상기 제1 메모리 및 상기 제2 메모리에 접근하는 접근 정보를 각각 추출하는 메모리 프로파일링부, 상기 접근 정보를 이용하여 상기 힙 메모리 오브젝트가 상기 제1 메모리 및 상기 제2 메모리에 배치되었을 때 예측되는 에너지 소비량을 각각 결정하는 에너지 예측부, 그리고 상기 에너지 소비량에 따라 상기 힙 메모리 오브젝트를 상기 제1 메모리 또는 상기 제2 메모리 중 어느 하나에 배치할지 결정하는 배치 결정부를 포함한다.

Description

힙 메모리 오브젝트의 배치 방법 및 이를 구현하는 이기종 메모리 시스템{METHOD FOR ALLOCATING HEAP MEMORY OBJECTS AND HYBRID MEMORY SYSTEM IMPLEMENTING THE SAME}
본 발명은 힙 메모리 오브젝트의 배치에 관한 것이다.
데이터 센터의 에너지 위기가 도래하고 있다. 구글, 페이스북 등과 같이 대규모 인터넷 서버 프로세스 및 여러 연구 기관에서 대규모 고성능 응용 프로그램들을 작동시킴에 따라 데이터 센터의 에너지 사용량이 증가되고 있다. 최근 연구에 따르면 2016년 미국 내의 데이터 센터에서 소비하는 에너지는 미국 연간 전기 사용량의 약 3%를 차지하였고, 전년도 소비량들의 통계치에 따르면 데이터 센터의 에너지 소비량은 꾸준히 증가하고 있는 추세이다.
데이터 센터의 전력 및 에너지 소비는 20~48%에 해당하는 양이 메모리에서 이루어진다. 한편, 메모리에서 소비되는 에너지를 조절하고자 중앙 처리 장치에 쓰이는 방법들이 응용되고 있으며, 구체적으로 메모리 랭크(memory rank)의 전력을 차단하거나 메모리의 소비 전압 및 주파수를 조절하는 방법들이 주로 사용되고 있다.
그러나, 이러한 방법들은 응용 프로그램이 활발하게 작동할 경우 성능을 다소 저하시킬 수 있고, 전력을 차단할 수 있는 랭크의 수나 전압 및 주파수를 축소시키는데 한계점이 있는 등 제한할 수 있는 에너지에 한계가 있다. 또한, 이러한 방법들은 시스템 차원의 전력 조절만이 가능할 뿐 응용 프로그램 차원에서 서로 다른 요구 사항이 있는 경우에는 적용될 수 없는 문제가 있다.
이러한 메모리 에너지 소비량 문제에 비휘발성 메모리(Non-Volatile Memory) 기술이 유효할 수 있다. 최근 활발하게 개발되고 있는 비휘발성 메모리는 휘발성 메모리와 달리, 메모리 셀에 재충전을 수행하지 않으므로 휘발성 메모리에 비해 높은 에너지 효율을 가진다. 또한, 비휘발성 메모리는 플래시 메모리와 달리, 바이트 주소 지정 가능성을 지원하며 휘발성 메모리보다 더 높은 밀도를 가지는 등 여러 가지 장점이 있다.
그러나, 비휘발성 메모리는 휘발성 메모리에 비해 지연 시간이 길어 메인 메모리로 활용되기에는 무리가 있다. 이를 보완하기 위해, 휘발성 메모리와 비휘발성 메모리를 동시에 메인 메모리에 사용하는 하이브리드 메모리 시스템(Hybrid Main Memory System)을 구현하고, 응용 프로그램의 힙 메모리 오브젝트를 성능 및 에너지 소비량을 최적화시키도록 배치하는 방법에 대한 연구가 활발히 이루어지고 있다. 그러나, 기존의 하이브리드 메모리 시스템에서의 힙 메모리 오브젝트 배치 연구들이 공통적으로 내포하는 문제는 응용 프로그램의 수행 목적 및 작동 방법에 따라 제각기 다른 오브젝트의 메모리 접근 패턴과 비휘발성 메모리 자체의 특성을 고려하지 않아 에너지를 완벽하게 최적화하지 못한다는 문제점이 있다. 구체적으로, 서로 다른 패턴으로 접근되는 힙 메모리 오브젝트의 에너지 소비량은 오브젝트가 배치될 메모리 디바이스의 특성에 따라 달라질 수 있다. 예를 들면, 주로 데이터를 메모리에 쓰는 방식으로 접근되는 오브젝트는 쓰기 전력이 더 많이 소모되는 메모리 디바이스에서 더 많은 에너지를 소비한다. 기존의 하이브리드 메모리 시스템에서의 메모리 오브젝트 배치에 관한 연구들은 이러한 힙 메모리 오브젝트의 다양한 접근 패턴을 조사하지 않았고, 하이브리드 메모리 시스템를 구성하는 비휘발성 메모리의 특성을 고려하지 않아 오브젝트가 소비할 에너지 양을 정확하게 예측할 수 없다는 문제가 있었다.
또한, 데이터 센터나 개인용 서버 환경에서 응용 프로그램이 소비하는 에너지만큼 사용자에게 청구되는 전기 이용료나 랩탑 환경에서 응용 프로그램이 소비하는 만큼 줄어드는 배터리 잔량 등을 고려하여 특정 에너지 소비량 제한이 요구될 수 있다. 그러나, 기존의 연구들은 각 메모리 디바이스의 용량 제한만을 고려할 뿐, 사용자가 요구하는 에너지 소비량 제한에 맞춰 오브젝트를 배치하는 방법은 고려하지 않았다.
본 발명이 해결하고자 하는 과제는 응용 프로그램이 배치하는 힙 메모리 오브젝트가 메모리 디바이스에 배치되는 경우, 힙 메모리 오브젝트의 에너지 소비량을 예측하는 기술을 제공하는 것이다.
또한, 본 발명이 해결하고자 하는 과제는 예측된 힙 메모리 오브젝트의 에너지 소비량을 이용하여 힙 메모리 오브젝트를 배치하는 기술을 제공하는 것이다.
한 실시예에 따른 이기종 메모리 시스템으로서, 제1 메모리 및 상기 제1 메모리와 상이한 타입의 제2 메모리로 구성되는 메모리 디바이스, 그리고 응용 프로그램으로부터 프로파일링 요청을 수신하면, 상기 응용 프로그램이 상기 메모리 디바이스에 배치하는 힙 메모리 오브젝트(heap memory object)가 상기 제1 메모리 및 상기 제2 메모리에 접근하는 접근 정보를 각각 추출하는 메모리 프로파일링부, 상기 접근 정보를 이용하여 상기 힙 메모리 오브젝트가 상기 제1 메모리 및 상기 제2 메모리에 배치되었을 때 예측되는 에너지 소비량을 각각 결정하는 에너지 예측부, 그리고 상기 에너지 소비량에 따라 상기 힙 메모리 오브젝트를 상기 제1 메모리 또는 상기 제2 메모리 중 어느 하나에 배치할지 결정하는 배치 결정부를 포함한다.
상기 접근 정보는 상기 힙 메모리 오브젝트의 크기, 상기 힙 메모리 오브젝트의 메모리 접근 크기, 행 버퍼 내 오염된 캐시 블록의 수 또는 상기 힙 메모리 오브젝트의 수명 시간 중 적어도 하나를 포함할 수 있다. 상기 메모리 프로파일링부는 상기 힙 메모리 오브젝트에 대해 1차 프로파일링을 수행하여 상기 힙 메모리 오브젝트의 크기 또는 상기 힙 메모리 오브젝트의 수명 시간 중 적어도 하나를 추출하고, 상기 힙 메모리 오브젝트에 대해 2차 프로파일링을 수행하여 상기 힙 메모리 오브젝트의 메모리 접근 크기 또는 상기 행 버퍼 내 오염된 캐시 블록의 수 중 적어도 하나를 추출할 수 있다.
상기 에너지 예측부는 상기 힙 메모리 오브젝트로 인해 상기 제1 메모리 및 상기 제2 메모리 상에서 수행되는 명령어에 따라 소비되는 에너지 정보를 결정하고, 상기 접근 정보 및 상기 에너지 정보를 이용하여 상기 에너지 소비량을 각각 결정할 수 있다.
상기 제1 메모리가 휘발성 메모리(Volatile Memory)인 경우, 상기 제1 메모리에서 수행되는 명령어에 따라 소비되는 에너지 정보는 전처리 명령어에 의해 소비되는 에너지 소비량, 읽기 및 쓰기 명령어에 의해 소비되는 에너지 소비량 또는 리프레시 명령어에 의해 소비되는 에너지 소비량 중 적어도 하나를 포함할 수 있다.
상기 제2 메모리가 비휘발성 메모리(Non-Volatile Memory)인 경우, 상기 제2 메모리에서 수행되는 명령어에 따라 소비되는 에너지 정보는 전처리 명령어에 의해 소비되는 에너지 소비량, 버퍼 접근 명령어에 의해 소비되는 에너지 소비량 또는 후쓰기 명령어에 의해 소비되는 에너지 소비량 중 적어도 하나를 포함할 수 있다.
상기 배치 결정부는 상기 힙 메모리 오브젝트가 상기 제1 메모리에 배치되었을 때 예측되는 에너지 소비량이 상기 제2 메모리에 배치되었을 때 예측되는 에너지 소비량보다 작은 경우, 상기 힙 메모리 오브젝트를 상기 제1 메모리에 배치하는 것으로 결정하고, 상기 힙 메모리 오브젝트가 상기 제1 메모리에 배치되었을 때 예측되는 에너지 소비량이 상기 제2 메모리에 배치되었을 때 예측되는 에너지 소비량보다 큰 경우, 상기 힙 메모리 오브젝트를 상기 제2 메모리에 배치하는 것으로 결정할 수 있다.
다른 실시예에 따른 이기종 메모리 시스템이, 힙 메모리 오브젝트를 제1 메모리 및 상기 제1 메모리와 상이한 타입의 제2 메모리로 구성되는 메모리 디바이스에 배치하는 방법으로서, 응용 프로그램으로부터 프로파일링 요청을 수신하면, 상기 응용 프로그램의 힙 메모리 오브젝트가 상기 제1 메모리 및 상기 제2 메모리에 접근하는 접근 정보를 각각 추출하는 단계, 상기 접근 정보를 이용하여 상기 힙 메모리 오브젝트가 상기 제1 메모리 및 상기 제2 메모리에 배치되었을 때 예측되는 에너지 소비량을 각각 결정하는 단계, 그리고 상기 에너지 소비량에 따라 상기 힙 메모리 오브젝트를 상기 제1 메모리 또는 상기 제2 메모리 중 어느 하나에 배치할지 결정하는 단계를 포함한다.
상기 접근 정보는 상기 힙 메모리 오브젝트의 크기, 상기 힙 메모리 오브젝트의 메모리 접근 크기, 행 버퍼 내 오염된 캐시 블록의 수 또는 상기 힙 메모리 오브젝트의 수명 시간 중 적어도 하나를 포함할 수 있다. 상기 접근 정보를 각각 추출하는 단계는 상기 힙 메모리 오브젝트에 대해 1차 프로파일링을 수행하여 상기 힙 메모리 오브젝트의 크기 또는 상기 힙 메모리 오브젝트의 수명 시간 중 적어도 하나를 추출하는 단계, 그리고 상기 힙 메모리 오브젝트에 대해 2차 프로파일링을 수행하여 상기 힙 메모리 오브젝트의 메모리 접근 크기 또는 상기 행 버퍼 내 오염된 캐시 블록의 수 중 적어도 하나를 추출하는 단계를 포함할 수 있다.
상기 에너지 소비량을 각각 결정하는 단계는 상기 힙 메모리 오브젝트로 인해 상기 제1 메모리 및 상기 제2 메모리 상에서 수행되는 명령어에 따라 소비되는 에너지 정보를 결정하는 단계, 그리고 상기 접근 정보 및 상기 에너지 정보를 이용하여 상기 에너지 소비량을 각각 결정하는 단계를 포함할 수 있다.
상기 제1 메모리가 휘발성 메모리(Volatile Memory)인 경우, 상기 제1 메모리에서 수행되는 명령어에 따라 소비되는 에너지 정보는 전처리 명령어에 의해 소비되는 에너지 소비량, 읽기 및 쓰기 명령어에 의해 소비되는 에너지 소비량 또는 리프레시 명령어에 의해 소비되는 에너지 소비량 중 적어도 하나를 포함할 수 있다.
상기 제2 메모리가 비휘발성 메모리(Non-Volatile Memory)인 경우, 상기 제2 메모리에서 수행되는 명령어에 따라 소비되는 에너지 정보는 전처리 명령어에 의해 소비되는 에너지 소비량, 버퍼 접근 명령어에 의해 소비되는 에너지 소비량 또는 후쓰기 명령어에 의해 소비되는 에너지 소비량 중 적어도 하나를 포함할 수 있다.
상기 힙 메모리 오브젝트를 상기 제1 메모리 또는 상기 제2 메모리 중 어느 하나에 배치할지 결정하는 단계는 상기 힙 메모리 오브젝트가 상기 제1 메모리에 배치되었을 때 예측되는 에너지 소비량이 상기 제2 메모리에 배치되었을 때 예측되는 에너지 소비량보다 작은 경우, 상기 힙 메모리 오브젝트를 상기 제1 메모리에 배치하고, 상기 힙 메모리 오브젝트가 상기 제1 메모리에 배치되었을 때 예측되는 에너지 소비량이 상기 제2 메모리에 배치되었을 때 예측되는 에너지 소비량보다 큰 경우, 상기 힙 메모리 오브젝트를 상기 제2 메모리에 배치하는 것으로 결정할 수 있다.
본 발명에 따르면, 메모리 시스템의 성능 및 전력 효율을 고려하여 힙 메모리 오브젝트를 선택적으로 배치하기 위해, 실제 배치 전 에너지 소비량을 예측함으로써 메모리 시스템의 전체 성능을 만족하면서 소비되는 에너지를 감소시킬 수 있다.
또한, 본 발명에 따르면, 힙 메모리 오브젝트가 메모리 디바이스에 배치될 때 메모리의 용량 제한과 에너지 제한을 만족시키면서 지연 시간을 최소화할 수 있다.
도 1은 한 실시예에 따른 이기종 메모리 시스템을 설명하는 도면이다.
도 2는 한 실시예에 따른 이기종 메모리 시스템이 힙 메모리 오브젝트를 메모리 디바이스에 배치하는 방법을 설명하는 도면이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
도 1은 한 실시예에 따른 이기종 메모리 시스템을 설명하는 도면이다.
도 1을 참고하면, 이기종 메모리 시스템(100)은 메모리 디바이스(110), 메모리 프로파일링부(120), 힙 메모리 오브젝트 특성 데이터 베이스(130), 에너지 예측부(140), 배치 결정부(150) 및 런타임 할당부(160)를 포함한다.
메모리 디바이스(110)는 서로 다른 타입의 메모리들을 포함하고, 예를 들면, 제1 메모리(111)와 제2 메모리(112)로 구성된다. 여기서, 제1 메모리(111)는 휘발성 메모리(Volatile Memory)일 수 있고, 및 제2 메모리(112)는 비휘발성 메모리(Non-Volatile Memory)일 수 있다. 예를 들면, 휘발성 메모리는 DRAM(Dynamic Random Access Memory)일 수 있고, 비휘발성 메모리는 STT-RAM(Spin-Transfer Torque Random Access Memory) 또는 PCM(Phase-Change Memory) 중 어느 하나일 수 있다.
휘발성 메모리와 비휘발성 메모리는 상호보완적으로 동작할 수 있다. 구체적으로, 휘발성 메모리는 비휘발성 메모리보다 접근 속도는 높으나 전원이 차단되면 데이터가 손실되는 단점을 갖는다. 이와 반대로, 비휘발성 메모리는 휘발성 메모리보다 접근 속도는 낮지만 전원이 차단되어도 데이터가 손실되지 않고 전력 효율이 좋은 특성을 가진다. 이에 따라, 최근 데이터 센터 서버에서는 비휘발성 메모리를 휘발성 메모리의 확장 메모리(extension of memory) 또는 저장소 캐시(storage cache) 등으로 사용하는 빈도가 높아지고 있다.
메모리 프로파일링부(120)는 응용 프로그램(200)으로부터 프로파일링 요청을 수신하면, 응용 프로그램(200)이 메모리 디바이스(110)에 배치하는 힙 메모리 오브젝트(heap memory object)가 제1 메모리(111) 및 제2 메모리(112)에 접근하는 접근 정보를 각각 추출한다.
메모리 디바이스(110)의 종류도 에너지 소비량에 영향을 주지만, 응용 프로그램(200)이 사용하는 힙 메모리 오브젝트가 메모리 디바이스(110)에 접근하는 패턴 또한 에너지 소비량에 영향을 끼친다. 예를 들면, 메모리가 데이터를 기록하는데 있어 많은 에너지를 소모하는 메모리인 경우, 쓰기를 많이 하는 힙 메모리 오브젝트가 메모리에서 많은 에너지를 소비할 수 있다.
따라서, 힙 메모리 오브젝트의 에너지 소비량을 예측하기 위해서는, 메모리 디바이스(110) 자체의 특성뿐만 아니라 힙 메모리 오브젝트가 메모리 디바이스(110)에 접근하는 패턴 또한 고려해야 한다.
구체적으로, 접근 정보는 힙 메모리 오브젝트의 크기, 힙 메모리 오브젝트의 메모리 접근 크기, 행 버퍼 내 오염된 캐시 블록의 수 또는 힙 메모리 오브젝트의 수명 시간 중 적어도 하나를 포함한다. 이 경우, 메모리 프로파일링부(120)는 힙 메모리 오브젝트에 대해 1차 프로파일링을 수행하여 힙 메모리 오브젝트의 크기 또는 힙 메모리 오브젝트의 수명 시간 중 적어도 하나를 추출한다. 메모리 프로파일링부(120)는 힙 메모리 오브젝트에 대해 2차 프로파일링을 수행하여 힙 메모리 오브젝트의 메모리 접근 크기 또는 행 버퍼 내 오염된 캐시 블록의 수 중 적어도 하나를 추출한다.
즉, 메모리 프로파일링부(120)는 힙 메모리 오브젝트에 대해 두 번 수행 메모리 프로파일링 기법을 통해 응용 프로그램(200)이 힙 메모리 오브젝트를 통해 메모리에 접근하는 패턴을 추출한다.
이후, 메모리 프로파일링부(120)는 응용 프로그램(200)의 워크로드를 확장하면서 프로파일링을 반복하여 힙 메모리 오브젝트의 접근 패턴의 확장 비율 벡터(scaling rate vector)를 도출한다. 또한, 메모리 프로파일링부(120)는 접근 정보와 확장 비율 벡터를 힙 메모리 오브젝트 특성 데이터 베이스(object characteristics database)(130)에 저장한다. 확장 비율 벡터는 응용 프로그램(200)이 수행될 때 가변적으로 주어지는 워크로드의 크기에 따라 힙 메모리 오브젝트의 접근 패턴이 다른 점을 정적 배치에서도 고려할 수 있도록 한다.
에너지 예측부(140)는 접근 정보를 이용하여 힙 메모리 오브젝트가 제1 메모리(111) 및 제2 메모리(112)에 배치되었을 때 예측되는 에너지 소비량을 각각 결정한다.
구체적으로, 메모리 레벨 에너지 소비는 주로 응용 프로그램(200)에 의한 힙 메모리 오브젝트의 접근으로 발생하게 된다.
위에서 언급한 휘발성 메모리 및 비휘발성 메모리의 특성상 힙 메모리 오브젝트를 비휘발성 메모리에 할당할수록 에너지 소비는 감소한다. 즉, 메모리 크기가 충분하다는 가정하에 모든 힙 메모리 오브젝트를 비휘발성 메모리에만 할당한다면 메모리 레벨 에너지 소비는 최소화될 것이다. 그러나, 이 경우, 메모리 성능이 심하게 저하될 수 있다.
이와 반대로, 모든 힙 메모리 오브젝트를 휘발성 메모리에 할당한다면, 성능은 극대화될 수 있으나, 에너지 소비량이 극대화될 수 있다. 따라서, 요구 성능을 만족시키면서 에너지 소비량을 최소화하기 위해서는 힙 메모리 오브젝트가 서로 다른 메모리에 각각 배치되었을 때를 가정하여 에너지 소모량을 결정하고, 에너지 소모량에 따라 힙 메모리 오브젝트를 휘발성 메모리와 비휘발성 메모리에 선택적으로 배치하여야 한다.
따라서, 이기종 메모리 구조를 구성하는 메모리 간에 성능 및 전력 효율의 차이를 고려하여 힙 메모리 오브젝트를 선택적으로 배치하기 위해, 에너지 예측부(140)는 힙 메모리 오브젝트들이 이기종 메모리를 구성하는 메모리들에 각각 배치되는 경우 소비할 에너지 소비량을 예측한다.
구체적으로, 에너지 예측부(140)는 힙 메모리 오브젝트로 인해 제1 메모리(111) 및 제2 메모리(112) 상에서 수행되는 명령어에 따라 소비되는 에너지 정보를 결정하고, 접근 정보 및 에너지 정보를 이용하여 에너지 소비량을 각각 결정한다.
이 경우, 에너지 정보는 메모리의 종류에 따라 달리 결정될 수 있다.
만일 제1 메모리(111)가 휘발성 메모리인 경우, 제1 메모리(111)에서 수행되는 명령어에 따라 소비되는 에너지 정보는 전처리 명령어에 의해 소비되는 에너지 소비량, 읽기 및 쓰기 명령어에 의해 소비되는 에너지 소비량 또는 리프레시 명령어에 의해 소비되는 에너지 소비량 중 적어도 하나를 포함한다.
예를 들면, 제1 메모리(111)가 휘발성 메모리 중 DRAM인 경우, 메모리 읽기 및 쓰기 명령어가 동작하기 전에 접근하는 뱅크(bank)와 행(row)을 활성화시켜주는 ACT 명령어, 읽히거나 쓰인 데이터를 메모리 배열에 복구해주고 이후의 ACT 명령어를 준비하도록 비트 라인을 사전 충전시켜주는 PRE 명령어, 실제 메모리 읽기 및 쓰기를 각각 수행하는 읽기 및 쓰기 명령어, 그리고 전류 누출로 인한 데이터 손실을 방지하기 위해 주기적으로 전류를 공급하여 메모리 디바이스(110)에 대한 재충전을 수행하는 리프레시 명령어가 DRAM에서 에너지를 소비하는 명령어에 해당될 수 있다. 본 명세서에서는, ACT 명령어 및 PRE 명령어를 전처리 명령어로 정의하며, DRAM에서 각 명령어에 의해 바이트 당 메모리 배열에 접근할 때 소비되는 에너지는 표 1과 같이 나타낼 수 있다.
메모리 명령어 소비되는 에너지
전처리(ACT & PRE) 명령어/dEACT+PRE 3.07
읽기 및 쓰기(Read/Write) 명령어/dERW 1.19
리프레시(Refresh) 명령어/dEREF 0.35
한편, 표 1에 기재된 소비되는 에너지는 단지 예시이며, 제1 메모리(111)의 규격 및 종류에 따라 변동될 수 있다. 제1 메모리(111)가 휘발성 메모리인 경우, 에너지 예측부(140)는 접근 정보 및 에너지 정보를 이용하여, 응용 프로그램(200)의 힙 메모리 오브젝트가 제1 메모리(111)에 접근하는 경우 소모되는 에너지 소비량을 수학식 1과 같이 예측할 수 있다.
Figure 112019038418064-pat00001
수학식 1에서, DEi는 i번째 힙 메모리 오브젝트가 제1 메모리(111)에 배치되었을 때 예측되는 에너지 소비량이고, dEACT+PRE는 전처리 명령어에 의한 바이트 당 에너지 소비량이고, dERW는 읽기 및 쓰기 명령어에 의한 바이트 당 에너지 소비량이고, dEREF는 리프레시 명령어에 의한 바이트 당 에너지 소비량이고, AVi는 i번째 힙 메모리 오브젝트의 메모리 접근 크기이고, Si는 i번째 힙 메모리 오브젝트의 크기이고, Ti는 i번째 힙 메모리 오브젝트의 수명 시간을 의미한다.
즉, 에너지 예측부(140)는 각각의 힙 메모리 오브젝트에 대한 에너지 소비량을 예측하고, 이들을 모두 더하여 힙 메모리 오브젝트가 제1 메모리(111)에 배치되었을 때의 에너지 소비량을 예측할 수 있다.
만일 제2 메모리(112)가 비휘발성 메모리인 경우, 제2 메모리(112)에서 수행되는 명령어에 따라 소비되는 에너지 정보는 전처리 명령어에 의해 소비되는 에너지 소비량, 버퍼 접근 명령어에 의해 소비되는 에너지 소비량 또는 후쓰기 명령어에 의해 소비되는 에너지 소비량 중 적어도 하나를 포함한다.
예를 들면, 제2 메모리(112)가 비휘발성 메모리 중 STT-RAM인 경우, DRAM과 마찬가지로 뱅크 및 행을 활성화하고 다음 활성화를 준비하는 전처리 명령어, 행 버퍼에 접근하도록 하는 버퍼 접근 명령어, 행 버퍼 간 충돌이 발생했을 때 행 버퍼에서 메모리 배열에 후쓰기(write-back)하는 후쓰기 명령어가 STT-RAM에서 에너지를 소비하는 명령어에 해당될 수 있다. STT-RAM에서 각 명령어에 의해 바이트 당 메모리 배열 또는 행 버퍼에 접근할 때 소비되는 에너지는 표 2와 같이 나타날 수 있다. 구체적으로, 표 2에서, 전처리 명령어 및 후쓰기 명령어에 해당하는 소비되는 에너지는 바이트 당 메모리 배열에 접근할 때 소비되는 에너지이며, 버퍼 접근 명령어에 해당하는 소비되는 에너지는 바이트 당 행 버퍼에 접근할 때 소비되는 에너지를 의미한다.
메모리 명령어 소비되는 에너지
전처리(ACT & PRE) 명령어/nEACT+PRE 2.68
버퍼 접근(Buffer Access) 명령어/nERBA 1.00
후쓰기(Write-Back) 명령어/nEWB 2.83
한편, 표 2에 기재된 소비되는 에너지는 단지 예시이며, 제2 메모리(112)의 규격 및 종류에 따라 변동될 수 있다.제2 메모리(112)가 비휘발성 메모리인 경우, 에너지 예측부(140)는 접근 정보 및 에너지 정보를 이용하여, 응용 프로그램(200)에 의해 힙 메모리 오브젝트가 제2 메모리(112)에 접근하는 경우 소모되는 에너지 소비량을 수학식 2와 같이 예측할 수 있다.
Figure 112019038418064-pat00002
수학식 2에서, NEi는 i번째 힙 메모리 오브젝트가 제2 메모리(112)에 배치되었을 때 예측되는 에너지 소비량이고, nEACT+PRE는 전처리 명령어에 의한 바이트 당 에너지 소비량이고, nERBA는 버퍼 접근 명령어에 의한 바이트 당 에너지 소비량이고, nEWB는 후쓰기 명령어에 의한 바이트 당 에너지 소비량이고, AVi는 i번째 힙 메모리 오브젝트의 메모리 접근 크기이고, NDC는 행 버퍼 크기 안의 오염된 캐시 블록의 수이고, VCB는 캐시 블록의 크기를 의미한다.
제2 메모리(112)의 메모리 배열에 후쓰기되는 캐시 블록의 수를 카운트하기 위해, 에너지 예측부(140)는 제2 메모리(112)의 행 버퍼 크기와 동일한 크기의 버퍼를 설정할 수 있고, 설정된 버퍼에서 발생하는 오염된 캐시 블록 수를 카운트하여 NDC를 결정할 수 있다. 구체적으로, 프로파일링 대상인 힙 메모리 오브젝트들의 평균 크기가 제2 메모리(112)의 행 버퍼보다 큰 경우, 하나의 워크로드가 수행될 때 호출되는 행 버퍼는 대부분의 경우 하나의 오브젝트의 일부에 해당한다. 따라서, 행 버퍼 크기만큼의 가상 메모리 버퍼에서의 오염된 캐시 블록 수가 하나의 오브젝트가 야기하는 행 버퍼의 오염된 캐시 블록 수로 맵핑될 수 있으므로, 이를 통해 NDC를 결정할 수 있다. 또한, 캐시 블록의 크기는 제2 메모리(112)의 하드웨어 정보를 통해 결정될 수 있다.
즉, 에너지 예측부(140)는 각각의 힙 메모리 오브젝트에 대한 에너지 소비량을 예측하고, 이들을 모두 더하여 힙 메모리 오브젝트가 제2 메모리(112)에 배치되었을 때의 에너지 소비량을 예측할 수 있다.
배치 결정부(150)는 에너지 소비량에 따라 힙 메모리 오브젝트를 제1 메모리(111) 또는 제2 메모리(112) 중 어느 하나에 배치할지 결정한다.
구체적으로, 배치 결정부(150)는 제1 메모리(111)에서의 에너지 소비량과 제2 메모리(112)에서의 에너지 소비량을 사용하여 힙 메모리 오브젝트를 제1 메모리(111) 또는 제2 메모리(112) 중 어느 하나에 배치할지 결정한다. 이 경우, 배치 결정부(150)는 메모리 용량 제한과 에너지 소비량 제한을 만족시키면서 지연 시간을 최소화하도록 정수-선형 프로그래밍 알고리즘을 수행하여 배치를 결정할 수 있다.
정수-선형 프로그래밍의 i번째 변수(Xi)는 i번째 오브젝트가 할당되는 메모리로 설정할 수 있다. 변수의 범위에 해당하는 제약 조건 부등식은 수학식 3과 같다.
Figure 112019038418064-pat00003
수학식 3에서, Xi는 정수-선형 프로그래밍의 i번째 변수에 해당하며, i번째 힙 메모리 오브젝트가 할당되는 메모리를 의미한다. 메모리 디바이스(110)는 제1 메모리(111) 및 제1 메모리(111)와 상이한 타입의 제2 메모리(112)로 구성되므로, Xi는 i번째 오브젝트가 제1 메모리(111)에 할당되는 경우 "1"로 설정되고, 제2 메모리(112)에 할당되는 경우 "0"을 갖도록 설정될 수 있다.
배치 결정부(150)는 힙 메모리 오브젝트가 힙 메모리 오브젝트가 제1 메모리(111)에 배치되었을 때 예측되는 에너지 소비량과 제2 메모리(112)에 배치되었을 때 예측되는 에너지 소비량을 비교하여 힙 메모리 오브젝트를 배치할 메모리를 결정할 수 있다.
예를 들면, 배치 결정부(150)는 힙 메모리 오브젝트가 제1 메모리(111)에 배치되었을 때 예측되는 에너지 소비량이 제2 메모리(112)에 배치되었을 때 예측되는 에너지 소비량보다 작은 경우, 힙 메모리 오브젝트를 제1 메모리(111)에 배치할 것을 결정할 수 있다.
반대로, 힙 메모리 오브젝트가 제1 메모리(111)에 배치되었을 때 예측되는 에너지 소비량이 제2 메모리(112)에 배치되었을 때 예측되는 에너지 소비량보다 큰 경우, 배치 결정부(150)는 힙 메모리 오브젝트를 제2 메모리(112)에 배치할 것을 결정할 수 있다.
한편, 배치 결정부(150)는 제1 메모리(111) 및 제2 메모리(112)의 용량을 고려하여 힙 메모리 오브젝트를 제1 메모리(111) 또는 제2 메모리(112) 중 어느 하나에 배치할지 결정할 수 있다.
구체적으로, 제1 메모리(111)에 할당되는 힙 메모리 오브젝트들의 크기의 합은 제1 메모리(111)의 용량을 넘을 수 없으며, 제2 메모리(112)에 할당되는 힙 메모리 오브젝트들의 크기의 합은 제2 메모리(112)의 용량을 넘을 수 없다. 제1 메모리(111)의 크기를 CDRAM, 제2 메모리(112)의 크기를 CNVM이라 하면, 제1 메모리(111)의 용량 제한 조건 및 제2 메모리(112)의 용량 제한 조건은 각각 수학식 4와 같다.
Figure 112019038418064-pat00004
수학식 4에서, Xi는 정수-선형 프로그래밍의 i번째 변수이고, Si는 i번째 힙 메모리 오브젝트의 크기이다.
예측된 에너지 소비량에 따라 힙 메모리 오브젝트를 배치하는 경우에 수학식 4와 같은 용량 제한 조건을 만족하지 않는 경우, 배치 결정부(150)는 용량 제한 조건을 만족하는 범위 내에서 예측된 에너지 소비량에 따라 힙 메모리 오브젝트를 우선 배치하고, 용량을 초과하는 힙 메모리 오브젝트에 대해서는 용량을 초과하지 않는 메모리에 이후 배치하도록 결정할 수 있다.
한편, 배치 결정부(150)는 제1 메모리(111)의 에너지 제약 조건을 추가적으로 고려하여 힙 메모리 오브젝트를 제1 메모리(111) 또는 제2 메모리(112) 중 어느 하나에 배치할지 결정할 수 있다.
구체적으로, 에너지 제약 조건은 사용자의 재정, 배터리 잔량 등 외부 조건에 의해 정해질 수 있다. 외부에 의해 들어오는 에너지 제한 사항은 기존 에너지 소비량의 특정 비율로 주어진다. 즉, 모든 힙 메모리 오브젝트들을 제1 메모리(111) 또는 제2 메모리(112) 중 어느 하나에 모드 배치할 때 소비되는 에너지 소비량의 미리 설정된 비율을 넘지 않게 힙 메모리 오브젝트들을 배치해야 한다.
만일 미리 설정된 비율을 R이라 하면, 제1 메모리(111)에 배치되는 모든 힙 메모리 오브젝트들의 에너지 소비량과 제2 메모리(112)에 배치되는 모든 힙 메모리 오브젝트들의 에너지 소비량의 합은 모든 힙 메모리 오브젝트들을 제1 메모리(111)에 배치하였을 때의 에너지 소비량의 R배를 넘지 않아야 한다. 에너지 제한 조건을 나타내면 수학식 5와 같다.
Figure 112019038418064-pat00005
수학식 5에서, Xi는 정수-선형 프로그래밍의 i번째 변수이고, DEi는 i번째 힙 메모리 오브젝트가 제1 메모리(111)에 배치되었을 때 예측되는 에너지 소비량이고, NEi는 i번째 힙 메모리 오브젝트가 제2 메모리(112)에 배치되었을 때 예측되는 에너지 소비량이다.
예측된 에너지 소비량에 따라 힙 메모리 오브젝트를 배치하는 경우에 수학식 5와 같은 에너지 제한 조건을 만족하지 않는 경우, 배치 결정부(150)는 용량 제한 조건을 만족하는 범위 내에서 예측된 에너지 소비량에 따라 힙 메모리 오브젝트를 우선 배치하고, 에너지 소비량을 초과하는 힙 메모리 오브젝트에 대해서는 에너지 소비량을 초과하지 않는 메모리에 이후 배치하도록 결정할 수 있다.
런타임 할당부(160)는 응용 프로그램(200)의 런타임 중 힙 메모리 오브젝트를 제1 메모리(111) 또는 제2 메모리(112)에 배치한다.
구체적으로, 응용 프로그램(200)이 실제 수행을 시작하고 공유 래퍼 라이브러리(shared wrapper library)에서 초기화를 시작할 때, 런타임 할당부(160)는 배치 결정부(150)에서 결정한 방법에 따라 힙 메모리 오브젝트를 제1 메모리(111) 또는 제2 메모리(112)에 배치한다. 이 경우, 런타임 할당부(160)는 배치 결정부(150)에서 결정한 방법에 기초하여 힙 메모리 오브젝트 배치 테이블을 구성할 수 있다. 힙 메모리 오브젝트 배치 테이블에서, 오브젝트 간의 구분은 함수 호출 스택(call-stack)의 해시(hash) 값을 이용한다.
이후, 런타임 할당부(160)는 응용 프로그램(200)이 실행되면서, 힙 메모리 오브젝트의 메모리 할당 함수가 래퍼 라이브러리 함수로 후킹(hooking)되면, 래퍼 라이브러리에서 해당 힙 메모리 오브젝트의 할당 함수 호출 스택을 파악한 후 이를 해싱하여 배치 대상 힙 메모리 오브젝트인지 파악한다. 해당 힙 메모리 오브젝트가 배치 대상 힙 메모리 오브젝트이면, 힙 메모리 오브젝트 배치 테이블에서 해당 힙 메모리 오브젝트의 배치 결정을 참조한다.
만일 배치할 메모리가 휘발성 메모리인 제1 메모리(111)인 경우, 런타임 할당부(160)는 mallocc 등의 할당 함수를 사용할 수 있다.
만일 배치할 메모리가 비휘발성 메모리인 제2 메모리(112)인 경우, 런타임 할당부(160)는 비휘발성 메모리를 메모리 주소 공간에서 사용하는 함수를 사용할 수 있다.
도 2는 한 실시예에 따른 이기종 메모리 시스템이 힙 메모리 오브젝트를 메모리 디바이스에 배치하는 방법을 설명하는 도면이다.
도 2를 참고하면, 이기종 메모리 시스템(100)은 응용 프로그램(200)으로부터 프로파일링 요청을 수신한다(S100).
이기종 메모리 시스템(100)은 프로파일링 요청에 포함된 힙 메모리 오브젝트를 추출하고(S110), 힙 메모리 오브젝트가 상기 제1 메모리 및 상기 제2 메모리에 접근하는 접근 정보를 각각 추출한다(S120).
이 경우, 접근 정보는 힙 메모리 오브젝트의 크기, 힙 메모리 오브젝트의 메모리 접근 크기, 행 버퍼 내 오염된 캐시 블록의 수 또는 힙 메모리 오브젝트의 수명 시간 중 적어도 하나를 포함하고, 이기종 메모리 시스템(100)은 힙 메모리 오브젝트에 대해 1차 프로파일링을 수행하여 힙 메모리 오브젝트의 크기 또는 힙 메모리 오브젝트의 수명 시간 중 적어도 하나를 추출하고, 힙 메모리 오브젝트에 대해 2차 프로파일링을 수행하여 힙 메모리 오브젝트의 메모리 접근 크기 또는 행 버퍼 내 오염된 캐시 블록의 수 중 적어도 하나를 추출한다.
이기종 메모리 시스템(100)은 접근 정보를 이용하여 힙 메모리 오브젝트가 제1 메모리(111) 및 제2 메모리(112)에 배치되었을 때 예측되는 에너지 소비량을 각각 결정한다(S130).
구체적으로, 이기종 메모리 시스템(100)은 힙 메모리 오브젝트로 인해 제1 메모리(111) 및 제2 메모리(112) 상에서 수행되는 명령어에 따라 소비되는 에너지 정보를 결정하고, 접근 정보 및 에너지 정보를 이용하여 에너지 소비량을 각각 결정한다.
이 경우, 제1 메모리(111)가 휘발성 메모리(Volatile Memory)인 경우, 제1 메모리(111)에서 수행되는 명령어에 따라 소비되는 에너지 정보는 전처리 명령어에 의해 소비되는 에너지 소비량, 읽기 및 쓰기 명령어에 의해 소비되는 에너지 소비량 또는 리프레시 명령어에 의해 소비되는 에너지 소비량 중 적어도 하나를 포함한다.
이 경우, 제2 메모리(112)가 비휘발성 메모리(Non-Volatile Memory)인 경우, 제2 메모리(112)에서 수행되는 명령어에 따라 소비되는 에너지 정보는 전처리 명령어에 의해 소비되는 에너지 소비량, 버퍼 접근 명령어에 의해 소비되는 에너지 소비량 또는 후쓰기 명령어에 의해 소비되는 에너지 소비량 중 적어도 하나를 포함한다.
이기종 메모리 시스템(100)은 에너지 소비량에 따라 힙 메모리 오브젝트를 제1 메모리(111) 또는 제2 메모리(112) 중 어느 하나에 배치할지 결정한다(S140).
구체적으로, 이기종 메모리 시스템(100)은 힙 메모리 오브젝트가 제1 메모리(111)에 배치되었을 때 예측되는 에너지 소비량이 제2 메모리(112)에 배치되었을 때 예측되는 에너지 소비량보다 작은 경우, 힙 메모리 오브젝트를 제1 메모리(111)에 배치하고, 힙 메모리 오브젝트가 제1 메모리(111)에 배치되었을 때 예측되는 에너지 소비량이 제2 메모리(112)에 배치되었을 때 예측되는 에너지 소비량보다 큰 경우, 힙 메모리 오브젝트를 제2 메모리(112)에 배치하는 것으로 결정한다.
이기종 메모리 시스템(100)은 배치 결정에 따라 힙 메모리 오브젝트를 제1 메모리(111) 또는 제2 메모리(112) 중 어느 하나에 배치한다(S150).
본 발명에 따르면, 메모리 시스템의 성능 및 전력 효율을 고려하여 힙 메모리 오브젝트를 선택적으로 배치하기 위해, 실제 배치 전 에너지 소비량을 예측함으로써 메모리 시스템의 전체 성능을 만족하면서 소비되는 에너지를 감소시킬 수 있다.
또한, 본 발명에 따르면, 힙 메모리 오브젝트가 메모리 디바이스에 배치될 때 메모리의 용량 제한과 에너지 제한을 만족시키면서 지연 시간을 최소화할 수 있다.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.

Claims (12)

  1. 삭제
  2. 이기종 메모리 시스템으로서,
    제1 메모리 및 상기 제1 메모리와 상이한 타입의 제2 메모리로 구성되는 메모리 디바이스,
    응용 프로그램으로부터 프로파일링 요청을 수신하면, 상기 응용 프로그램이 상기 메모리 디바이스에 배치하는 힙 메모리 오브젝트(heap memory object)가 상기 제1 메모리 및 상기 제2 메모리에 접근하는 접근 정보를 각각 추출하는 메모리 프로파일링부,
    상기 접근 정보를 이용하여 상기 힙 메모리 오브젝트가 상기 제1 메모리 및 상기 제2 메모리에 배치되었을 때 예측되는 에너지 소비량을 각각 결정하는 에너지 예측부, 그리고
    상기 에너지 소비량에 따라 상기 힙 메모리 오브젝트를 상기 제1 메모리 또는 상기 제2 메모리 중 어느 하나에 배치할지 결정하는 배치 결정부를 포함하며,
    상기 접근 정보는 상기 힙 메모리 오브젝트의 크기, 상기 힙 메모리 오브젝트의 메모리 접근 크기, 행 버퍼 내 오염된 캐시 블록의 수 또는 상기 힙 메모리 오브젝트의 수명 시간 중 적어도 하나를 포함하고,
    상기 메모리 프로파일링부는
    상기 힙 메모리 오브젝트에 대해 1차 프로파일링을 수행하여 상기 힙 메모리 오브젝트의 크기 또는 상기 힙 메모리 오브젝트의 수명 시간 중 적어도 하나를 추출하고,
    상기 힙 메모리 오브젝트에 대해 2차 프로파일링을 수행하여 상기 힙 메모리 오브젝트의 메모리 접근 크기 또는 상기 행 버퍼 내 오염된 캐시 블록의 수 중 적어도 하나를 추출하는 이기종 메모리 시스템.
  3. 제2항에서,
    상기 에너지 예측부는
    상기 힙 메모리 오브젝트로 인해 상기 제1 메모리 및 상기 제2 메모리 상에서 수행되는 명령어에 따라 소비되는 에너지 정보를 결정하고, 상기 접근 정보 및 상기 에너지 정보를 이용하여 상기 에너지 소비량을 각각 결정하는 이기종 메모리 시스템.
  4. 제3항에서,
    상기 제1 메모리가 휘발성 메모리(Volatile Memory)인 경우,
    상기 제1 메모리에서 수행되는 명령어에 따라 소비되는 에너지 정보는 전처리 명령어에 의해 소비되는 에너지 소비량, 읽기 및 쓰기 명령어에 의해 소비되는 에너지 소비량 또는 리프레시 명령어에 의해 소비되는 에너지 소비량 중 적어도 하나를 포함하는 이기종 메모리 시스템.
  5. 제3항에서,
    상기 제2 메모리가 비휘발성 메모리(Non-Volatile Memory)인 경우,
    상기 제2 메모리에서 수행되는 명령어에 따라 소비되는 에너지 정보는 전처리 명령어에 의해 소비되는 에너지 소비량, 버퍼 접근 명령어에 의해 소비되는 에너지 소비량 또는 후쓰기 명령어에 의해 소비되는 에너지 소비량 중 적어도 하나를 포함하는 이기종 메모리 시스템.
  6. 이기종 메모리 시스템으로서,
    제1 메모리 및 상기 제1 메모리와 상이한 타입의 제2 메모리로 구성되는 메모리 디바이스,
    응용 프로그램으로부터 프로파일링 요청을 수신하면, 상기 응용 프로그램이 상기 메모리 디바이스에 배치하는 힙 메모리 오브젝트(heap memory object)가 상기 제1 메모리 및 상기 제2 메모리에 접근하는 접근 정보를 각각 추출하는 메모리 프로파일링부,
    상기 접근 정보를 이용하여 상기 힙 메모리 오브젝트가 상기 제1 메모리 및 상기 제2 메모리에 배치되었을 때 예측되는 에너지 소비량을 각각 결정하는 에너지 예측부, 그리고
    상기 에너지 소비량에 따라 상기 힙 메모리 오브젝트를 상기 제1 메모리 또는 상기 제2 메모리 중 어느 하나에 배치할지 결정하는 배치 결정부를 포함하며,
    상기 배치 결정부는
    상기 힙 메모리 오브젝트가 상기 제1 메모리에 배치되었을 때 예측되는 에너지 소비량이 상기 제2 메모리에 배치되었을 때 예측되는 에너지 소비량보다 작은 경우, 상기 힙 메모리 오브젝트를 상기 제1 메모리에 배치하는 것으로 결정하고,
    상기 힙 메모리 오브젝트가 상기 제1 메모리에 배치되었을 때 예측되는 에너지 소비량이 상기 제2 메모리에 배치되었을 때 예측되는 에너지 소비량보다 큰 경우, 상기 힙 메모리 오브젝트를 상기 제2 메모리에 배치하는 것으로 결정하는 이기종 메모리 시스템.
  7. 삭제
  8. 이기종 메모리 시스템이, 힙 메모리 오브젝트를 제1 메모리 및 상기 제1 메모리와 상이한 타입의 제2 메모리로 구성되는 메모리 디바이스에 배치하는 방법으로서,
    응용 프로그램으로부터 프로파일링 요청을 수신하면, 상기 응용 프로그램의 힙 메모리 오브젝트가 상기 제1 메모리 및 상기 제2 메모리에 접근하는 접근 정보를 각각 추출하는 단계,
    상기 접근 정보를 이용하여 상기 힙 메모리 오브젝트가 상기 제1 메모리 및 상기 제2 메모리에 배치되었을 때 예측되는 에너지 소비량을 각각 결정하는 단계, 그리고
    상기 에너지 소비량에 따라 상기 힙 메모리 오브젝트를 상기 제1 메모리 또는 상기 제2 메모리 중 어느 하나에 배치할지 결정하는 단계를 포함하며,
    상기 접근 정보는 상기 힙 메모리 오브젝트의 크기, 상기 힙 메모리 오브젝트의 메모리 접근 크기, 행 버퍼 내 오염된 캐시 블록의 수 또는 상기 힙 메모리 오브젝트의 수명 시간 중 적어도 하나를 포함하고,
    상기 접근 정보를 각각 추출하는 단계는
    상기 힙 메모리 오브젝트에 대해 1차 프로파일링을 수행하여 상기 힙 메모리 오브젝트의 크기 또는 상기 힙 메모리 오브젝트의 수명 시간 중 적어도 하나를 추출하는 단계, 그리고
    상기 힙 메모리 오브젝트에 대해 2차 프로파일링을 수행하여 상기 힙 메모리 오브젝트의 메모리 접근 크기 또는 상기 행 버퍼 내 오염된 캐시 블록의 수 중 적어도 하나를 추출하는 단계를 포함하는 힙 메모리 오브젝트 배치 방법.
  9. 제8항에서,
    상기 에너지 소비량을 각각 결정하는 단계는
    상기 힙 메모리 오브젝트로 인해 상기 제1 메모리 및 상기 제2 메모리 상에서 수행되는 명령어에 따라 소비되는 에너지 정보를 결정하는 단계, 그리고
    상기 접근 정보 및 상기 에너지 정보를 이용하여 상기 에너지 소비량을 각각 결정하는 단계
    를 포함하는 힙 메모리 오브젝트 배치 방법.
  10. 제9항에서,
    상기 제1 메모리가 휘발성 메모리(Volatile Memory)인 경우,
    상기 제1 메모리에서 수행되는 명령어에 따라 소비되는 에너지 정보는 전처리 명령어에 의해 소비되는 에너지 소비량, 읽기 및 쓰기 명령어에 의해 소비되는 에너지 소비량 또는 리프레시 명령어에 의해 소비되는 에너지 소비량 중 적어도 하나를 포함하는 힙 메모리 오브젝트 배치 방법.
  11. 제9항에서,
    상기 제2 메모리가 비휘발성 메모리(Non-Volatile Memory)인 경우,
    상기 제2 메모리에서 수행되는 명령어에 따라 소비되는 에너지 정보는 전처리 명령어에 의해 소비되는 에너지 소비량, 버퍼 접근 명령어에 의해 소비되는 에너지 소비량 또는 후쓰기 명령어에 의해 소비되는 에너지 소비량 중 적어도 하나를 포함하는 힙 메모리 오브젝트 배치 방법.
  12. 이기종 메모리 시스템이, 힙 메모리 오브젝트를 제1 메모리 및 상기 제1 메모리와 상이한 타입의 제2 메모리로 구성되는 메모리 디바이스에 배치하는 방법으로서,
    응용 프로그램으로부터 프로파일링 요청을 수신하면, 상기 응용 프로그램의 힙 메모리 오브젝트가 상기 제1 메모리 및 상기 제2 메모리에 접근하는 접근 정보를 각각 추출하는 단계,
    상기 접근 정보를 이용하여 상기 힙 메모리 오브젝트가 상기 제1 메모리 및 상기 제2 메모리에 배치되었을 때 예측되는 에너지 소비량을 각각 결정하는 단계, 그리고
    상기 에너지 소비량에 따라 상기 힙 메모리 오브젝트를 상기 제1 메모리 또는 상기 제2 메모리 중 어느 하나에 배치할지 결정하는 단계를 포함하며,
    상기 힙 메모리 오브젝트를 상기 제1 메모리 또는 상기 제2 메모리 중 어느 하나에 배치할지 결정하는 단계는
    상기 힙 메모리 오브젝트가 상기 제1 메모리에 배치되었을 때 예측되는 에너지 소비량이 상기 제2 메모리에 배치되었을 때 예측되는 에너지 소비량보다 작은 경우, 상기 힙 메모리 오브젝트를 상기 제1 메모리에 배치하고,
    상기 힙 메모리 오브젝트가 상기 제1 메모리에 배치되었을 때 예측되는 에너지 소비량이 상기 제2 메모리에 배치되었을 때 예측되는 에너지 소비량보다 큰 경우, 상기 힙 메모리 오브젝트를 상기 제2 메모리에 배치하는 것으로 결정하는 힙 메모리 오브젝트 배치 방법.
KR1020190043730A 2019-01-24 2019-04-15 힙 메모리 오브젝트의 배치 방법 및 이를 구현하는 이기종 메모리 시스템 KR102187213B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20190009377 2019-01-24
KR1020190009377 2019-01-24

Publications (2)

Publication Number Publication Date
KR20200092237A KR20200092237A (ko) 2020-08-03
KR102187213B1 true KR102187213B1 (ko) 2020-12-04

Family

ID=72042916

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190043730A KR102187213B1 (ko) 2019-01-24 2019-04-15 힙 메모리 오브젝트의 배치 방법 및 이를 구현하는 이기종 메모리 시스템

Country Status (1)

Country Link
KR (1) KR102187213B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003076562A (ja) 2001-09-06 2003-03-14 Nippon Telegr & Teleph Corp <Ntt> メモリ量的制御方法、装置、コンピュータプログラム及び記録媒体
KR101753020B1 (ko) * 2013-08-08 2017-07-03 퀄컴 인코포레이티드 선택적 전력 또는 성능 최적화를 이용한 메모리 채널 인터리빙을 위한 시스템 및 방법

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180063765A (ko) * 2016-12-02 2018-06-12 에스케이플래닛 주식회사 애플리케이션의 성능 측정 방법, 이를 위한 장치 및 이를 수행하는 컴퓨터 프로그램을 기록한 기록 매체

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003076562A (ja) 2001-09-06 2003-03-14 Nippon Telegr & Teleph Corp <Ntt> メモリ量的制御方法、装置、コンピュータプログラム及び記録媒体
KR101753020B1 (ko) * 2013-08-08 2017-07-03 퀄컴 인코포레이티드 선택적 전력 또는 성능 최적화를 이용한 메모리 채널 인터리빙을 위한 시스템 및 방법

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
김태욱 외 1명. ‘하이브리드 메모리 시스템에서의 오브젝트 배치를 통한 성능-에너지 조율’. 한국정보과학회 2018 한국소프트웨어종합학술대회 논문집, 2018.12., pp.1,320 - 1322.
김태욱. ‘하이브리드 메모리 시스템에서 에너지 소모 제약을 고려한 힙 메모리 오브젝트 배치 최적화 연구’. 서강대학교 석사 학위 논문, 2018.12.17., pp.1-67.

Also Published As

Publication number Publication date
KR20200092237A (ko) 2020-08-03

Similar Documents

Publication Publication Date Title
US9348527B2 (en) Storing data in persistent hybrid memory
US8010764B2 (en) Method and system for decreasing power consumption in memory arrays having usage-driven power management
JP5722728B2 (ja) 電力消費を制限するように不揮発性メモリの動作を動的に制御する方法及びシステム
US8918618B2 (en) Adaptive memory system for enhancing the performance of an external computing device
US6732241B2 (en) Technique for migrating data between storage devices for reduced power consumption
US20140032818A1 (en) Providing a hybrid memory
KR101297563B1 (ko) 스토리지 관리 방법 및 관리 시스템
US20080320203A1 (en) Memory Management in a Computing Device
JP2009205335A (ja) 2種のメモリデバイスをキャッシュに用いるストレージシステム及びそのストレージシステムを制御する方法
CN101346701A (zh) 降低正在被供电的存储体的数量
CN109471594B (zh) 一种mlc闪存读写方法
WO2016112713A1 (zh) 一种对内存中内存页的处理方法及装置
KR20100097456A (ko) 메모리 시스템 및 그것의 플래시 변화 계층의 주소 할당 방법
CN106406493B (zh) 能降低功耗的电子装置及降低电子装置功耗的方法
Pourshirazi et al. Refree: A refresh-free hybrid DRAM/PCM main memory system
CN108572799B (zh) 一种双向哈希链表的异构内存系统数据页迁移方法
US20220100406A1 (en) Hard disk control method and related device
KR102187213B1 (ko) 힙 메모리 오브젝트의 배치 방법 및 이를 구현하는 이기종 메모리 시스템
CN110908595B (zh) 存储装置及信息处理系统
KR102178931B1 (ko) 힙 메모리 오브젝트의 에너지 소모량 예측 방법 및 이를 구현하는 메모리 시스템
CN113867641B (zh) 主机内存缓冲管理方法、装置、以及固态硬盘
CN108572924B (zh) 一种3d mlc闪存设备的请求处理方法
Du et al. Adaptive energy-aware design of a multi-bank flash-memory storage system
JP2007317176A (ja) 端末装置
Kwon et al. FARS: A page replacement algorithm for NAND flash memory based embedded systems

Legal Events

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