KR102480944B1 - 하이브리드 메모리 제어 장치 및 방법 - Google Patents

하이브리드 메모리 제어 장치 및 방법 Download PDF

Info

Publication number
KR102480944B1
KR102480944B1 KR1020200123133A KR20200123133A KR102480944B1 KR 102480944 B1 KR102480944 B1 KR 102480944B1 KR 1020200123133 A KR1020200123133 A KR 1020200123133A KR 20200123133 A KR20200123133 A KR 20200123133A KR 102480944 B1 KR102480944 B1 KR 102480944B1
Authority
KR
South Korea
Prior art keywords
memory
memory block
target program
hybrid
access pattern
Prior art date
Application number
KR1020200123133A
Other languages
English (en)
Other versions
KR20220040204A (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 KR1020200123133A priority Critical patent/KR102480944B1/ko
Publication of KR20220040204A publication Critical patent/KR20220040204A/ko
Application granted granted Critical
Publication of KR102480944B1 publication Critical patent/KR102480944B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1694Configuration of memory controller to different memory types
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0064Latency reduction in handling transfers
    • 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)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System (AREA)

Abstract

메인 메모리로 동작할 수 있는 적어도 2개의 메모리를 포함하는 컴퓨터 시스템의 메모리 제어를 위한 하이브리드 메모리 제어 장치 및 방법이 개시된다. 하이브리드 메모리 제어 장치는 타겟 프로그램을 프로파일링하여, 상기 타겟 프로그램 내에서 할당하는 메모리 블록에 대해 상기 타겟 프로그램 내 함수의 접근 정보를 추출하는 프로파일러와, 상기 메모리 블록에 대한 함수의 접근 정보에 기초하여 상기 메모리 블록에 대한 접근 패턴을 분석하고, 상기 분석 결과에 기초하여 생성한 상기 메모리 블록에 대한 접근 패턴 정보를 상기 타겟 프로그램에 삽입하여 상기 타겟 프로그램을 수정하는 수정부와, 수정된 상기 타겟 프로그램을 실행하되, 상기 타겟 프로그램 내 상기 접근 패턴 정보에 기초하여, 상기 메모리 블록을 제1 메모리 및 제2 메모리 중 어느 하나에 할당하는 메모리 할당기를 포함할 수 있다.

Description

하이브리드 메모리 제어 장치 및 방법{APPARATUS AND METHOD FOR CONTROLLING HYBRID MEMORY}
본 발명은 컴퓨터 시스템에서의 타겟 프로그램 실행시, 컴퓨터 시스템 내 복수의 메모리를 효과적으로 제어하는 기술에 관한 것이다.
컴퓨터 시스템은 다양한 프로그램을 실행하여 해당 서비스를 제공할 수 있다. 서비스 향상을 위해 더 많은 메모리를 필요로 하는 프로그램이 증가하고 있다. 특히, 머신러닝을 사용하는 시스템이나 인-메모리 데이터베이스의 시스템인 경우, 사용할 수 있는 메모리의 용량이 시스템 설계나 성능에 직접적인 영향을 미치기도 한다.
그러나, 컴퓨터 시스템의 메인 메모리로 주로 사용되는 DRAM(Dynamic Random Access Memory)은 집적도, 전력 소모, 비용 등의 문제로 확장성(Scalability)이 좋지 않으며 휘발성이기에 용도도 한정적이다. DRAM은 지난 수십 년간 꾸준히 연구되어 발전해왔지만, 이와 마찬가지로 새로운 메모리 소자(PCM(Phase-Change Memory), STT-RAM(Spin-Transfer Torque RAM), Memristor 등)에 대한 연구도 수십 년 전부터 진행되어 왔다. 예컨대, 새로운 비휘발성 메모리 기술인 3D Xpoint는 DRAM보다 크게 느리지 않은 접근 속도를 보이면서도 DRAM보다 더 큰 용량을 가지며 DRAM처럼 바이트 단위로 접근 가능한 성질을 가지고 있다. 이러한 3D Xpoint가 적용된 메모리로서 예컨대 '인텔 옵테인 영구 메모리(Intel Optane DC Persistent Memory, Intel DCPMM)'가 존재한다. '인텔 옵테인 영구 메모리'는 DRAM과 같은 DIMM(dual in-line memory module) 규격의 메모리(Optane DIMM)이다. 이러한 Optane DIMM은 DRAM과 같이 DIMM 슬롯에 장착되어 메인 메모리의 역할을 수행할 수 있으며, 비휘발성 메모리이므로 저장장치로서의 역할도 수행할 수 있다.
그러나, 컴퓨터 시스템에서 Optane DIMM이 DRAM과 같이 메인 메모리의 역할을 수행할 경우, Optane DIMM은 DRAM보다 레이턴시(latency)가 큼에 따라 메모리 접근 속도 측면에서 성능 하락을 야기할 수 있다.
메인 메모리를 구비한 컴퓨터 시스템에 관한 선행기술(공개특허 10-2014-0056657)에는 불휘발성 메모리의 메인 메모리를 복수의 영역으로 분할하여 상이한 종류의 데이터가 저장되도록 관리하는 구성을 개시하고 있으나, 복수의 메인 메모리를 제어하는 구성 및 이에 대한 필요성을 개시하고 있지 않다.
따라서, 컴퓨터 시스템 내 복수의 메모리를 효과적으로 제어할 수 있는 기술이 필요하다.
선행기술: 한국 공개특허공보 제10-2014-0056657호(2014.05.12 공개)
본 발명의 일실시예는, 타겟 프로그램에서의 메모리 블록에 대한 접근 정보에 기초하여 메모리 블록에 대한 접근 패턴 정보를 생성하고, 접근 패턴 정보를 포함하도록 타겟 프로그램을 수정함으로써, 수정된 타겟 프로그램 실행시 접근 패턴 정보에 기초하여 메모리 블록을 컴퓨터 시스템 내에서 메인 메모리로 동작하는 복수의 메모리 중 어느 하나로 할당함에 따라, 컴퓨터 시스템 내 복수의 메모리를 효과적으로 제어하는 것을 목적으로 한다.
본 발명의 일실시예는, 타겟 프로그램 내 접근 패턴 정보에 기초하여 자주 접근하는 메모리 블록을, 제2 메모리(예컨대, Optane DIMM)보다 상대적으로 레이턴시가 작음에 따라 고속의 데이터 처리를 가능하게 하는 제1 메모리(예컨대, DRAM)에 우선적으로 할당함으로써, 메인 메모리의 용량을 확장시키면서도 데이터의 처리 속도 저하를 방지하는 것을 목적으로 한다.
또한, 본 발명의 일실시예는, 타겟 프로그램을 실행하는 중에도 메모리 블록별 접근 패턴을 모니터링한 결과에 기초하여 제1 메모리 및 제2 메모리 간의 메모리 블록에 대한 이동을 제어함으로써, 타겟 프로그램 내 함수가 자주 접근하는 메모리 블록만을 DRAM에 유지할 수 있게 함으로써, DRAM의 힛 레이트(hit rate)를 증가시켜 데이터의 처리 속도를 향상시키는 것을 목적으로 한다.
본 발명은 타겟 프로그램 내에서 할당하는 메모리 블록에 대한 접근 패턴 정보에 기초하여 타겟 프로그램을 미리 수정하여, 타겟 프로그램 실행시 접근 패턴 정보를 통해, 컴퓨터 시스템 내 복수의 메모리 중 어느 하나에 메모리 블록을 할당하여 복수의 메모리를 효과적으로 활용하는 하이브리드 메모리 제어 장치 및 방법일 수 있다.
본 발명의 일실시예는, 메인 메모리로 동작할 수 있는 적어도 2개의 메모리를 포함하는 컴퓨터 시스템의 메모리 제어를 위한 하이브리드 메모리 제어 장치로서, 타겟 프로그램을 프로파일링하여, 타겟 프로그램 내에서 할당하는 메모리 블록에 대해 타겟 프로그램 내 함수의 접근 정보를 추출하는 프로파일러와, 메모리 블록에 대한 함수의 접근 정보에 기초하여 메모리 블록에 대한 접근 패턴을 분석하고, 분석 결과에 기초하여 생성한 메모리 블록에 대한 접근 패턴 정보를 타겟 프로그램에 삽입하여 타겟 프로그램을 수정하는 수정부와, 수정된 타겟 프로그램을 실행하되, 타겟 프로그램 내 접근 패턴 정보에 기초하여, 메모리 블록을 제1 메모리 및 제2 메모리 중 어느 하나에 할당하는 메모리 할당기를 포함하는, 하이브리드 메모리 제어 장치일 수 있다.
또한, 본 발명의 일실시예는, 메인 메모리로 동작할 수 있는 적어도 2개의 메모리를 포함하는 컴퓨터 시스템의 메모리 제어를 위한 하이브리드 메모리 제어 방법으로서, 타겟 프로그램을 프로파일링하여, 상기 타겟 프로그램 내에서 할당하는 메모리 블록에 대해 상기 타겟 프로그램 내 함수의 접근 정보를 추출하는 단계와, 상기 메모리 블록에 대한 함수의 접근 정보에 기초하여 상기 메모리 블록에 대한 접근 패턴을 분석하고, 상기 분석 결과에 기초하여 생성한 상기 메모리 블록에 대한 접근 패턴 정보를 상기 타겟 프로그램에 삽입하여 상기 타겟 프로그램을 수정하는 단계와, 수정된 상기 타겟 프로그램을 실행하되, 상기 타겟 프로그램 내 상기 접근 패턴 정보에 기초하여, 상기 메모리 블록을 제1 메모리 및 제2 메모리 중 어느 하나에 할당하는 단계를 포함하는, 하이브리드 메모리 제어 방법일 수 있다.
전술한 것 외의 다른 측면, 특징, 이점이 이하의 도면, 특허청구범위 및 발명의 상세한 설명으로부터 명확해질 것이다.
본 발명의 실시예들에 의하면, 타겟 프로그램에서의 메모리 블록에 대한 접근 정보에 기초하여 메모리 블록에 대한 접근 패턴 정보를 생성하고, 접근 패턴 정보를 포함하도록 타겟 프로그램을 수정함으로써, 수정된 타겟 프로그램 실행시 접근 패턴 정보에 기초하여 메모리 블록을 컴퓨터 시스템 내에서 메인 메모리로 동작하는 복수의 메모리 중 어느 하나로 할당함에 따라, 컴퓨터 시스템 내 복수의 메모리를 효과적으로 제어할 수 있다.
본 발명의 실시예들에 의하면, 타겟 프로그램 내 접근 패턴 정보에 기초하여 자주 접근하는 메모리 블록을, 제2 메모리(예컨대, Optane DIMM)보다 상대적으로 레이턴시가 작음에 따라 고속의 데이터 처리를 가능하게 하는 제1 메모리(예컨대, DRAM)에 우선적으로 할당함으로써, 메인 메모리의 용량을 확장시키면서도 데이터의 처리 속도 저하를 방지할 수 있다.
또한, 본 발명의 실시예들에 의하면, 타겟 프로그램을 실행하는 중에도 메모리 블록별 접근 패턴을 모니터링한 결과에 기초하여 제1 메모리 및 제2 메모리 간의 메모리 블록에 대한 이동을 제어함으로써, 타겟 프로그램 내 함수가 자주 접근하는 메모리 블록만을 DRAM에 유지할 수 있게 함으로써, DRAM의 힛 레이트를 증가시켜 데이터의 처리 속도를 향상시킬 수 있다.
도 1은 본 발명의 일실시예에 따른 하이브리드 메모리 제어 장치가 적용되는 컴퓨팅 시스템의 구성 일례를 개략적으로 도시한 도면이다.
도 2는 본 발명의 일실시예에 따른 하이브리드 메모리 제어 장치의 구성을 개략적으로 도시한 도면이다.
도 3은 본 발명의 일실시예에 따른 하이브리드 메모리 제어 장치에서 제어하는 메모리를 설명하기 위한 도면이다.
도 4는 본 발명의 일실시예에 따른 하이브리드 메모리 제어 장치의 메모리 제어 일례를 설명하기 위한 도면이다.
도 5는 본 발명의 일실시예에 따른 하이브리드 메모리 제어 장치에서의 프로파일링 과정을 도시한 도면이다.
도 6은 본 발명의 일실시예에 따른 하이브리드 메모리 제어 장치에서의 프로파일링 결과 추출한 정보의 일례를 도시한 도면이다.
도 7은 본 발명의 일실시예에 따른 하이브리드 메모리 제어 장치에서의 타겟 프로그램 수정 일례를 설명하기 위한 도면이다.
도 8은 본 발명의 일실시예에 따른 하이브리드 메모리 제어 장치에서의 메모리 제어 효과를 설명하기 위한 도면이다.
도 9는 본 발명의 일실시예에 따른 하이브리드 메모리 제어 방법을 도시한 흐름도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 설명되는 실시 예들을 참조하면 명확해질 것이다. 그러나 본 발명은 아래에서 제시되는 실시 예들로 한정되는 것이 아니라, 서로 다른 다양한 형태로 구현될 수 있고, 본 발명의 사상 및 기술 범위에 포함되는 모든 변환, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 아래에 제시되는 실시 예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이다. 본 발명을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
본 출원에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다. 제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다.
이하, 본 발명에 따른 실시 예들을 첨부된 도면을 참조하여 상세히 설명하기로 하며, 첨부 도면을 참조하여 설명함에 있어, 동일하거나 대응하는 구성 요소는 동일한 도면번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다.
도 1은 본 발명의 일실시예에 따른 하이브리드 메모리 제어 장치가 적용되는 컴퓨팅 시스템의 구성 일례를 개략적으로 도시한 도면이다.
도 1을 참조하면, 본 발명의 일실시예에 따른 하이브리드 메모리 제어 장치가 적용되는 컴퓨터 시스템(100)은 버스(110)를 통해 서로 통신하는 하이브리드 메모리(120), 스토리지(130), 사용자 인터페이스 입력부(140), 사용자 인터페이스 출력부(150), 네트워크 인터페이스(160) 및 프로세서(170)를 포함할 수 있다.
하이브리드 메모리(120)는 다양한 형태의 휘발성 저장 매체일 수 있다. 하이브리드 메모리(120)는 복수 개의 메모리를 포함할 수 있으며, 예컨대, 제1 메모리(121) 및 제2 메모리(122)를 포함할 수 있다. 여기서, 제1 메모리(121)는 예컨대, DRAM(Dynamic Random Access Memory)일 수 있다. 또한, 제2 메모리(122)는 Optane DIMM(Dual In-line Memory Module)일 수 있다.
스토리지(130)는 비휘발성의 저장 매체일 수 있으며, 예컨대, 하드 디스크일 수 있다.
사용자 인터페이스 입력부(140)는 예컨대, 키보드, 마우스 등일 수 있으며, 입력되는 명령을 프로세서(170)에 전달할 수 있다.
사용자 인터페이스 출력부(150)는 디스플레이, 스피커 등일 수 있으며, 프로세서(170)의 처리 과정 또는 결과(예컨대, 사용자 인터페이스 입력부를 통해 입력된 명령을 처리한 결과)를 출력할 수 있다.
네트워크 인터페이스(160)는 네트워크와의 연결을 위한 통신부일 수 있다.
프로세서(170)는 예컨대, 중앙처리장치(Central Processing Unit: CPU)일 수 있으며, 하이브리드 메모리(120) 또는 스토리지(130)에 저장된 데이터를 처리하는 장치일 수 있다.
또한, 프로세서(170)는 사용자 인터페이스 입력부(140), 사용자 인터페이스 출력부(150) 및 네트워크 인터페이스(160)를 제어할 수 있으며, 각 구성에서의 모든 데이터를 처리할 수 있다.
이러한 프로세서(170)는 본 발명의 하이브리드 메모리 제어 장치(171)를 포함할 수 있으며, 하이브리드 메모리 제어 장치(171)를 통해, 데이터 처리시 사용되는 하이브리드 메모리(120)에서의 메모리 블록 할당을 관리함으로써, 하이브리드 메모리(120) 내 제1, 2 메모리(121, 122)를 효과적으로 활용할 수 있다.
구체적으로, 프로세서(170)는 하이브리드 메모리 제어 장치(171)를 통해, 타겟 프로그램 내에서 할당하는 메모리 블록에 대한 접근 패턴 정보에 기초하여 타겟 프로그램을 미리 수정함으로써, 타겟 프로그램 실행시 접근 패턴 정보를 통해, 복수의 메모리 중 어느 하나에 메모리 블록을 효율적으로 할당할 수 있다. 예컨대, 하이브리드 메모리 제어 장치(171)는 타겟 프로그램으로부터 접근 패턴 정보로서, 예컨대, '핫(hot)', '콜드(cold)', '시퀀스(sequential)', '랜덤(random)' 등을 추출하고, 추출된 접근 패턴 정보와 연관된 메모리 블록을 설정된 기준에 기초하여 하이브리드 메모리(120) 내 제1 메모리(121) 또는 제2 메모리(122)에 할당할 수 있다. 여기서, 접근 패턴 정보는 접근 패턴 정보와 연관된 메모리 블록이 하이브리드 메모리(120) 내에서 어느 메모리에 할당되야 하는지를 표시해주는 플래그(flag) 정보일 수 있다.
도 2는 본 발명의 일실시예에 따른 하이브리드 메모리 제어 장치의 구성을 개략적으로 도시한 도면이다. 여기서, 하이브리드 메모리 제어 장치는 메인 메모리로 동작할 수 있는 적어도 2개의 메모리를 포함하는 컴퓨터 시스템의 메모리 제어를 위한 장치일 수 있다. 여기서, 2개의 메모리는 예컨대, DRAM(Dynamic Random Access Memory)인 제1 메모리 및 Optane DIMM(Dual In-line Memory Module)인 제2 메모리를 포함할 수 있다. 제1 메모리의 레이턴시(latency)는 제2 메모리의 레이턴시 보다 작을 수 있다.
또한, 제2 메모리는 컴퓨터 시스템의 운영체제가 제2 메모리를 제 1 메모리와는 별개의 디바이스로 인식하고, 리딩(reading) 및 라이팅(writing)을 지원하는 앱 디렉트 모드(App direct mode)로 설정될 수 있다.
실시예에서, 제1, 2 메모리는 하이브리드 메모리 제어 장치의 외부에 위치할 수 있으나, 이에 한정되지 않고 하이브리드 메모리 제어 장치(200)의 내부에 위치할 수 있다.
도 2를 참조하면, 본 발명의 일실시예에 따른 하이브리드 메모리 제어 장치(200)는 프로파일러(210), 수정부(220) 및 메모리 할당기(230)를 포함할 수 있다.
프로파일러(210)는 타겟 프로그램을 프로파일링하여, 타겟 프로그램 내에서 할당하는 메모리 블록에 대해 타겟 프로그램 내 함수의 접근 정보를 추출할 수 있다. 여기서, 메모리 블록은 함수의 한번 사용으로 인해 할당되는 단위를 의미할 수 있다.
구체적으로, 프로파일러(210)는 타겟 프로그램을 미리 실행하여, 메모리 블록이 할당될 때 메모리 블록에 부여되는 아이디(ID), 로드(load) 및 스토어(store) 명령(instruction)에 대한 정보를 확인하고, 확인된 아이디 및 정보(로드/스토어 명령에 대한 정보)에 기초하여 메모리 블록에 대한 함수의 접근 정보를 추출할 수 있다.
수정부(220)는 메모리 블록에 대한 함수의 접근 정보에 기초하여 메모리 블록에 대한 접근 패턴을 분석하고, 분석 결과에 기초하여 메모리 블록에 대한 접근 패턴 정보를 생성한 후, 메모리 블록에 대한 접근 패턴 정보를 타겟 프로그램에 삽입하여 타겟 프로그램을 수정할 수 있다.
예컨대, 수정부(220)는 메모리 블록에 대한 접근 패턴을 분석한 결과, 기설정된 간격 미만으로, 설정된 횟수 이상 함수가 메모리 블록에 접근하는 것으로 확인됨에 기초하여 접근 패턴 정보로서, '핫(hot)'을 해당 메모리 블록에 대해 타겟 프로그램에 삽입할 수 있다. 이때, 수정부(220)는 메모리 블록에 저장된 데이터를 자주 이용하는 '핫' 데이터로 판단하여, '핫'의 접근 패턴 정보를 타겟 프로그램에 삽입할 수 있다.
수정부(220)는 설정된 간격 이상으로 함수가 접근하거나, 또는 설정된 횟수 미만으로 함수가 메모리 블록에 접근하는 것으로 확인됨에 기초하여 접근 패턴 정보로서, '콜드(cold)'를 해당 메모리 블록에 대해 타겟 프로그램에 삽입할 수 있다. 이때, 수정부(220)는 메모리 블록에 저장된 데이터를 자주 이용하지 않는 '콜드' 데이터로 판단하여, '콜드'의 접근 패턴 정보를 타겟 프로그램에 삽입할 수 있다.
또한, 수정부(220)는 메모리 블록과 인접한 다른 메모리 블록을 함수가 순차적으로 접근하는 것으로 확인됨에 기초하여 접근 패턴 정보로서, '시퀀스(sequential)'를 해당 메모리 블록에 대해 타겟 프로그램에 삽입할 수 있다. 여기서, 메모리 블록에 대한 함수의 접근 패턴이 '시퀀스'라는 의미는 예를 들어, 타겟 프로그램의 함수가 메모리 블록들 중 제1 메모리 블록에 접근한 후, 제2 메모리 블록에 접근하고, 그 후 제3 메모리 블록에 순서대로 접근하는 패턴이 발견되는 경우를 의미할 수 있다. 이러한 예의 경우 제2 메모리 블록은 제1 및 제3 메모리 블록과 함께 '시퀀스' 패턴을 가진다고 판단될 수 있다. 추가적으로, 제2 메모리 블록에 대해서는 '시퀀스' 패턴을 가진다는 정보 외에 이전 접근 메모리 블록은 제1 메모리 블록이고, 이후 접근 메모리 블록은 제3 메모리 블록이라는 정보가 타겟 프로그램에 삽입될 수 있다. 시퀀스 패턴의 마지막에 해당하는 메모리 블록(예를 들어, 제3 메모리 블록)에 대해서는 이후 접근 메모리 블록이 없음, 또는 시퀀스가 종료됨이라는 정보가 부가적으로 추가 삽입될 수 있다.
수정부(220)는 상기 확인된 접근 패턴 외에는 접근 패턴 정보로서, '랜덤(random)'을 해당 메모리 블록에 대해 타겟 프로그램에 삽입할 수 있다.
또한, 수정부(220)는 메모리 블록을 관리하는 함수를 메모리 할당기(230)의 라이브러리에 포함된 타입(예컨대, C++ 클래스 타입)의 함수로 수정함으로써, 이후 타겟 프로그램 실행시 메모리 주소 접근에 사용하는 연산자(예컨대, =, [], +, -, * 등)를 이용하여 메모리 접근 과정을 추적할 수 있게 하여, 메모리 블록의 이동을 관리하는 환경을 마련할 수 있다.
메모리 할당기(230)는 수정부(220)에 의해 수정된 타겟 프로그램을 실행하되, 타겟 프로그램 내 접근 패턴 정보에 기초하여, 메모리 블록을 제1 메모리 및 제2 메모리 중 어느 하나에 할당할 수 있다. 이때, 메모리 할당기(230)는 타겟 프로그램 내 접근 패턴 정보로부터 접근 패턴 정보를 추출하고, 추출된 접근 패턴 정보와 연관된 메모리 블록을 제1 메모리 및 제2 메모리 중 어느 하나에 할당할 수 있다.
여기서, 타겟 프로그램은 메모리 할당기(230)에 의해 실행될 수 있으나, 이에 한정되지 않고 메모리 할당기(230)와 연결된 프로세서에 의해 실행될 수 있다.
메모리 블록 할당시, 메모리 할당기(230)는 타겟 프로그램 내 접근 패턴 정보가 '핫'인 것에 기초하여 메모리 블록을 제1 메모리에 할당하고, 타겟 프로그램 내 접근 패턴 정보가 '콜드'인 것에 기초하여 메모리 블록을 제2 메모리에 할당할 수 있다. 또한, 메모리 할당기(230)는 타겟 프로그램 내 접근 패턴 정보가 '시퀀스'인 것에 기초하여 메모리 블록을 제2 메모리에 할당하되, 메모리 블록과 인접한 다른 메모리 블록이 함수에 의해 접근되면, 메모리 블록을 제2 메모리에서 제1 메모리로 이동시킬 수 있다. '시퀀스' 패턴에 대해 상술된 예의 경우라면, 제1 메모리 블록이 함수에 의해 접근되면 제2 메모리 블록과 제3 메모리 블록이 제1 메모리로 이동될 수 있다.
실시예에서, 메모리 할당기(230)는 타겟 프로그램 내 접근 패턴 정보가 '시퀀스'일 때, 제1 메모리의 잔여 공간이 기설정된 공간 이상으로 확인되면, 메모리 블록 및 메모리 블록과 인접한 다른 메모리 블록을 제1 메모리에 할당할 수 있다.
메모리 할당기(230)는 미리 설정된 기준에 따라, 타겟 프로그램 내 접근 패턴 정보에 기초하여 메모리 블록을 제1 메모리 또는 제2 메모리에 할당함으로써, 복수의 메모리를 효과적으로 활용할 수 있다. 즉, 메모리 할당기(230)는 상대적으로 자주 접근하는 메모리 블록(자주 이용하는 데이터를 저장하는 메모리 블록)을 레이턴시가 작아 메모리 접근 속도가 제2 메모리 보다 빠른 제1 메모리에 할당하거나, 또는 제2 메모리에 기할당된 메모리 블록에 접근하기 전에 해당 메모리 블록을 제2 메모리에서 제1 메모리로 이동시켜, 메인 메모리의 용량을 확장시키면서도 데이터의 처리 속도 저하를 방지할 수 있다.
또한, 메모리 할당기(230)는 타겟 프로그램을 실행할 때, 타겟 프로그램 내 접근 패턴 정보에 기초하여 복수의 메모리 내 메모리 블록에 대한 첫 할당을 관리할 뿐 아니라, 타겟 프로그램의 실행 중 실시간으로 메모리 블록의 이동을 관리함으로써, 복수의 메모리를 효과적으로 활용할 수 있다.
구체적으로, 메모리 할당기(230)는 타겟 프로그램의 실행 중 실시간으로 로드 및 스토어 명령을 추적하고, 추적 결과에 기초하여 메모리 블록의 이동을 관리할 수 있다. 이때, 메모리 할당기(230)는 기설정된 연산자(예컨대, =, [], +, -, * 등)를 이용하여, 기설정된 타입으로 변경된 메모리 블록으로의 접근을 추적하고, 추적 결과에 기초하여 제1 메모리에 할당된 메모리 블록을 제2 메모리로 이동시키거나, 또는 제2 메모리에 할당된 메모리 블록을 제1 메모리로 이동시킬 수 있다. 여기서, 메모리 할당기(230)는 추적된 메모리 블록으로의 접근 정보를 이용하여, 메모리 블록의 첫 할당 과정의 일부(예컨대, 메모리 블록에 대한 접근 패턴 분석, 분석 결과에 기초한 접근 패턴 정보 생성, 접근 패턴 정보에 기초한 메모리 블록의 할당)를 다시 수행하여, 복수의 메모리 블록을 효과적으로 사용할 수 있다.
도 3은 본 발명의 일실시예에 따른 하이브리드 메모리 제어 장치에서 제어하는 메모리를 설명하기 위한 도면이다.
도 3을 참조하면, 하이브리드 메모리 제어 장치가 제어하는 메모리는 예컨대, DRAM(310) 및 Optane DIMM(320)를 포함할 수 있다.
DRAM(310) 및 Optane DIMM(320)를 다른 메모리 예컨대, SSD(Solid State Drive), HDD(Hard Disk Drive) 등과 함께, 용량 및 데이터의 처리 속도 측면에서 도식화하면, DRAM(310)가 최상단에 위치하고, HDD가 최하단에 위치할 수 있다. HDD의 상단에는 SSD가 위치할 수 있고, SSD의 상단과 DRAM(310)의 하단 사이에 Optane DIMM(320)가 위치할 수 있다.
이때, 상단에 위치할수록 메모리의 용량은 적으나, 데이터의 처리 속도가 높을 수 있다. 예컨대, DRAM(310)은 Optane DIMM(320)보다 용량이 작을 수 있으나, Optane DIMM(320)보다 레이턴시가 작음에 따라 Optane DIMM(320)보다 메모리 접근 속도가 빨라, 메모리 내 데이터의 처리 속도가 DIMM(320)보다 높을 수 있다. 또한, Optane DIMM(320)은 SSD보다 용량이 작을 수 있으나, SSD보다 레이턴시가 작음에 따라 SSD보다 메모리 접근 속도가 빨라, 메모리 내 데이터의 처리 속도가 SSD보다 높을 수 있다.
Optane DIMM(320)은 '앱 디렉트 모드(App direct mode)'와 '메모리 모드(Memory mode)'의 두 가지 모드로 동작할 수 있다. 앱 디렉트 모드는 컴퓨터 시스템의 운영체제가 Optane DIMM(320)을 원하는 대로 읽기 및 쓰기가 가능하도록 직접적인 접근을 지원하는 모드이고, 메모리 모드는 Optane DIMM(320)을 메인 메모리 용량을 확장하기 위해 사용하는 모드이다.
앱 디렉트 모드에서는 컴퓨터 시스템의 운영체제가 Optane DIMM(320)을 별개의 새로운 디바이스로 인식하게 됨에 따라, Optane DIMM(320)은 컴퓨터 시스템의 사용자 의도에 따라 여러 용도로 사용될 수 있다. 예컨대, Optane DIMM(320)은 파일 시스템을 마운트하여 SSD와 같은 저장장치로 활용되거나, 또는 다른 저장장치의 캐시로도 활용할 수 있다.
반면, 메모리 모드에서는 컴퓨터 시스템의 운영체제가 Optane DIMM(320)을 별개의 디바이스로 인식하지 못함에 따라, Optane DIMM(320)은 CPU의 메모리 컨트롤러에 의해서만 관리될 수 있다. 이때에는 Optane DIMM(320)만이 컴퓨터 시스템의 메인 메모리로 동작하게 되고, 기존에 있던 DRAM은 새로운 LLC(Last-level cache)로서 동작될 수 있다. 따라서, Optane DIMM(320)을 메모리 모드로 사용하는 것은 큰 메인 메모리 용량을 요구하는 환경에서 효과적일 수 있다.
도 4는 본 발명의 일실시예에 따른 하이브리드 메모리 제어 장치의 메모리 제어 일례를 설명하기 위한 도면이다.
도 4를 참조하면, 하이브리드 메모리 제어 장치(400)는 DRAM(440)을 Optane DIMM(450)의 캐시로 사용할 수 있다. 이때, 하이브리드 메모리 제어 장치는 캐시로 사용되는 DRAM(440)의 공간을 효율적으로 활용하기 위해서, 자주 접근되는 메모리 블록(예컨대, 핫 데이터가 저장된 메모리 블록)을 DRAM(440)에 할당하고, 자주 접근되지 않는 메모리 블록(예컨대, 콜드 데이터가 저장된 메모리 블록)을 Optane DIMM(450)에 할당할 수 있다.
하이브리드 메모리 제어 장치(400)는 타겟 프로그램에서의 메모리 블록별 접근 패턴을 확인하기 위해, 타겟 프로그램을 실행하기 전에, 타겟 프로그램을 프로파일링할 수 있다.
하이브리드 메모리 제어 장치(400)는 타겟 프로그램을 실행하기 전에 미리 프로파일링하고, 프로파일링을 통해 도출된 결과에 기초하여 타겟 프로그램에 메모리 블록별 접근 패턴에 대한 힌트(hint)(즉, 패턴 정보)를 생성하여 삽입한 후, 타겟 프로그램을 실행할 때 타겟 프로그램 내 힌트에 기초하여, 타겟 프로그램과 연관된 메모리 블록을 DRAM(440) 또는 Optane DIMM(450)에 할당할 수 있다.
구체적으로, 하이브리드 메모리 제어 장치(400)는 프로파일러(Profiler)(410)를 통해, 타겟 프로그램에 대한 프로파일링을 수행할 수 있다(①). 즉, 하이브리드 메모리 제어 장치(400) 내 프로파일러(Profiler)(410)는 타겟 프로그램을 미리 실행하여, 타겟 프로그램에서 할당한 각 메모리 블록마다 어떤 함수들이 접근했는지에 대한 자세한 정보를 추출함으로써, 어떤 메모리 주소가 핫 데이터로 사용되는지 추적할 수 있다.
하이브리드 메모리 제어 장치(400)는 도 5에 도시된 바와 같이, 런 타임 인터포지션닝(Run-time interpositioning)을 통해 메모리 할당(malloc)이 이루어질 때마다 각 메모리 블록에 대한 ID(Identification)를 부여하고, 메모리 블록에 부여된 ID와 함께, 메모리 블록의 주소 정보(malloc address)를 별도로 메모리에 저장할 수 있다. 또한, 하이브리드 메모리 제어 장치(400)는 바이너리 다이나믹 인스트루멘테이션 툴(Binary dynamic instrumentation tool)인 핀('Pin')을 이용하여 타겟 프로그램이 실행되면서 생성되는 로드(load)/스토어(store) 명령(instruction)에 대한 정보(예컨대, instruction pointer, address, size, data 등)를 추출하고, 추출된 정보를 트레이스 파일 형태로 메모리에 저장할 수 있다. 하이브리드 메모리 제어 장치(400)는 메모리 블록에 부여된 ID, 메모리 블록의 주소 정보, 로드/스토어 명령에 대한 정보를 조합하여, 어떤 주소에서 각 메모리 블록(malloc 단위)으로 로드/스토어 명령을 통해 접근했는지에 대한 정보를 추출해낼 수 있으며, 오브젝트 덤프(objdump) 등을 이용해서 획득한 함수 주소와 로드/스토어 명령의 명령 포인터(instruction pointer)를 조합하여, 어떤 함수에서 각 메모리 블록에 접근했는지에 대한 정보까지 추출할 수 있다.
하이브리드 메모리 제어 장치(400)는 프로파일링 결과, 도 6에 도시된 바와 같이, 메모리 블록 별 접근한 함수들에 대한 인스트럭션 정보를 추출할 수 있다.
이후, 하이브리드 메모리 제어 장치(400)는 수정부(420)를 통해, 타겟 프로그램을 프로파일링한 결과(예컨대, 메모리 블록별로 접근한 함수들에 대한 인스트럭션 정보)에 기초하여 메모리 블록별 접근 패턴을 분석할 수 있다(②).
하이브리드 메모리 제어 장치(400)는 예컨대, 메모리 블록 4번에 함수 B가 순차적으로 총 세 번의 루프를 돌며 읽었다면, 도 6의 표의 해당 칸에는 해당 메모리 블록에 해당하는 주소에 따라 순서대로 세 바퀴의 로드 명령(load instruction)이 생성된 것을 확인할 수 있다. 로드/스토어 명령(load/store instruction)에 대한 정보에는 각 명령 별로 실행된 순서에 대한 인덱스(index)가 포함되어 있으므로, 하이브리드 메모리 제어 장치(400)는 메모리 블록을 순차적으로 읽는 사이에 랜덤이나 역순 등 다른 패턴이 포함되어있다고 하더라도 메모리 블록의 접근 순서를 인지할 수 있다. 또한, 하이브리드 메모리 제어 장치(400)는 명령 인덱스(instruction index) 간의 차이에 기초하여 각 패턴 간 명령 거리(instruction distance)를 계산할 수 있고, 타겟 프로그램의 총 명령 개수에 비해 얼마나 멀리 있는지를 기준으로 각 패턴의 빈도를 추산할 수 있다.
이후, 하이브리드 메모리 제어 장치(400)는 수정부(420)를 통해, 메모리 블록별 접근 패턴에 대한 분석 결과에 기초하여 타겟 프로그램의 코드를 수정하고, 런타임 추적을 위해 타겟 프로그램의 코드를 수정할 수 있다(③).
메모리 블록별 접근 패턴에 대한 분석 결과에 기초한 타겟 프로그램의 코드 수정시, 하이브리드 메모리 제어 장치(400)는 타겟 프로그램에 메모리 블록별 접근 패턴에 대한 힌트를 삽입함으로써, 타겟 프로그램의 코드를 수정할 수 있다. 구체적으로, 하이브리드 메모리 제어 장치(400)는 타겟 프로그램의 코드의 malloc 마다 해당 메모리 블록이 어떤 패턴(Sequential, Random, Loop, Hot, Cold 등)으로 접근되는지에 대한 힌트를 삽입할 수 있다. 상기 힌트는 타겟 프로그램이 실행될 때 메모리 블록 할당이 이루어지는 과정에서, 어떤 메모리 디바이스에서 어떻게 관리되야 하는지에 대한 정보로서, 타겟 프로그램이 실행되기 전에 타겟 프로그램의 코드에 미리 삽입될 수 있다.
또한, 런타임 추적을 위한 타겟 프로그램의 코드 변경시, 하이브리드 메모리 제어 장치(400)는 수정부(420)를 통해, 메모리 블록(배열, 포인터 등)을 동일 배열의 멤버변수로 가지는 C++ 클래스 타입으로 수정함으로써, 타겟 프로그램 실행시 메모리 주소 접근에 사용하는 연산자(예컨대, =, [], +, -, * 등)를 오버로딩하여 메모리 접근 과정을 추적할 수 있게 한다. 이로 인해, 하이브리드 메모리 제어 장치(400)는 메모리 할당기(430)를 통해, 타겟 프로그램을 실행하는 중에 실시간으로 로드(load)/스토어(store) 명령을 추적하여 각 메모리(DRAM, Optane DIMM)에 담긴 데이터를 유동적으로 이동시키며 관리할 수 있다. 즉, 하이브리드 메모리 제어 장치(400) 내 메모리 할당기(430)는 연산자를 이용하여 각 메모리 블록에 접근되는 메모리 연산을 모두 추적하여 각 메모리 블록마다 런타임에 어떤 순서로 접근되는지 등에 대한 정보를 획득할 수 있다.
하이브리드 메모리 제어 장치(400)는 기존 프로그램의 코드에 적용할 때 기존 코드에서 배열에 해당하는 자료형과 메모리 관리 함수를 하이브리드 메모리 할당기의 라이브러리에 포함된 C++ 클래스 자료형과 함수로 수정하여 다시 컴파일해야 하는 종래의 기술과 달리, 라이브러리에 포함된 간단한 코드 수정 프로그램을 통해 프로그램의 동작 수정 없이 자료형만을 변경함에 따라 사용자의 직접 수정 없이, 각 메모리 블록으로의 접근을 추적하고, 추적 결과에 기초하여 메모리에 저장된 데이터(또는, 데이터가 저장된 메모리 블록)의 이동을 관리할 수 있다.
타겟 프로그램의 코드 변경 및 라이브러리에 정의된 클래스의 예시는 도 7에 도시된 바와 같다. 이때, Optane DIMM을 관리하기 위한 메모리는 PMDK(Persistent Memory Development Kit)의 libvmem 라이브러리가 사용될 수 있다.
이후, 하이브리드 메모리 제어 장치(400)는 코드가 수정된 타겟 프로그램을 실제로 실행할 수 있다(④). 이때, 하이브리드 메모리 제어 장치(400)는 프로파일링 결과를 기반으로 메모리 블록을 DRAM(440) 또는 Optane DIMM(450)에 할당할 수 있다. 하이브리드 메모리 제어 장치(400)는 타겟 프로그램으로부터, 메모리 블록 별로 어떤 함수가 어떤 패턴으로 접근했는지에 대한 정보로부터 생성된 힌트를 추출하고, 힌트에 기초하여 메모리 블록을 DRAM(440) 또는 Optane DIMM(450)에 할당함으로써, 상대적으로 함수가 자주 접근하는 메모리 블록을 DRAM에 할당할 수 있게 한다.
또한, 하이브리드 메모리 제어 장치(400)는 메모리 블록 할당 이후에 타겟 프로그램을 실행하는 과정에서, 메모리 블록별 접근 패턴이 변경되는 경우, 변경 결과에 기초하여 DRAM(440)에 할당된 메모리 블록(또는, 데이터)을 Optane DIMM(450)에 이동시키거나, Optane DIMM(450)에 할당된 메모리 블록(또는, 데이터)을 DRAM(440)에 이동시킬 수 있다. 이때, 하이브리드 메모리 제어 장치(400)는 클래스와 연산자 오버로딩을 통해 주소별 접근을 추적하여 DRAM(440)의 용량이 기설정된 공간 미만으로 확인되면, DRAM(440)에 핫 데이터를 저장한 메모리 블록만 유지되도록 관리할 수 있다.
구체적으로, 하이브리드 메모리 제어 장치(400)는 프로파일링 결과, 지속적으로 접근되는 메모리 블록의 경우, 해당 메모리 블록에 저장되는 데이터를 1)핫 데이터로 판단할 수 있다. 이때, 하이브리드 메모리 제어 장치는 첫 할당 시부터 핫 데이터가 저장된 메모리 블록을 DRAM(440)에 할당하고, 해제되기 전까지 계속 DRAM(440)에 상기 메모리 블록을 유지시킬 수 있다.
실시예에서, 하이브리드 메모리 제어 장치(400)는 DRAM(440)에 핫 데이터가 저장된 메모리 블록만 존재할 때, Optane DIMM(450)에서 DRAM(440)으로 메모리 블록이 이동될 필요가 있을 경우에는 가장 먼저 접근된 핫 데이터를 저장하는 메모리 블록을 Optane DIMM(450)으로 이동시킬 수 있다.
또한, 하이브리드 메모리 제어 장치(400)는 프로파일링 결과, 거의 접근되지 않거나 빈도가 현저히 낮은 경우, 해당 메모리 블록에 저장되는 데이터를 2)콜드 데이터로 판단할 수 있다. 이때, 하이브리드 메모리 제어 장치(400)는 첫 할당 시부터 콜드 데이터가 저장된 메모리 블록을 Optane DIMM(450)에 할당하고, 프로파일링 결과와 다르게 동작하지 않는 이상은 Optane DIMM(450)에서 상기 메모리 블록을 유지시킬 수 있다. 반면, 하이브리드 메모리 제어 장치(400)는 프로파일링 결과와 다르게, 콜드 데이터가 저장된 메모리 블록에 연속적으로 접근함에 따라, 상기 메모리 블록에 저장된 콜드 데이터를 핫 데이터로 판단하여, 상기 메모리 블록을 DRAM(440)으로 이동할 수 있다.
또한, 하이브리드 메모리 제어 장치(400)는 프로파일링 결과, 핫 데이터나 콜드 데이터처럼 전체 프로그램 실행기간 동안 일정한 빈도로 접근되지 않는 경우는 별개의 패턴으로 인식하여 관리할 수 있다. 하이브리드 메모리 제어 장치(400)는 3)순차적 접근의 경우, 첫 할당 시에는 Optane DIMM(450)에 할당하고, 순차적 접근이 시작되기 전에 해당 메모리 블록을 DRAM(440)으로 이동하여 순차적 접근 동안에는 DRAM(440)에만 접근하도록 한다. 종래의 메모리 제어시 메모리 모드에서 모든 캐시 라인(cache-line) 접근마다 사용하고자 하는 데이터가 저장된 메모리 블록을 DRAM(440)에서 획득할 수 없음(DRAM cache Miss 발생)에 따라 Optane DIMM(450)에 접근해야 하는 반면, 하이브리드 메모리 제어 장치(400)는 접근이 시작되기 전에 프리페칭과 같이 전체 메모리 블록을 DRAM(440)으로 이동시키므로, Optane DIMM(450)에 접근하는 횟수를 크게 줄일 수 있다.
또한, 하이브리드 메모리 제어 장치(400)는 프로파일링 결과, 4)무작위로(랜덤) 접근되는 경우에는 그 빈도와 메모리 블록 크기에 따라 다르게 동작할 수 있다. 이때, 하이브리드 메모리 제어 장치(400)는 무작위라 하더라도 접근 빈도가 높다면 DRAM(440)의 공간이 기설정된 공간 이상일 경우, 해당 메모리 블록을 DRAM(440)으로 이동시킬 수 있다.
하이브리드 메모리 제어 장치(400)는 런타임에서 순차적 접근처럼 접근할 때만 핫 데이터로 판단되는 메모리 블록을 첫 할당 시에 Optane DIMM(450)에 할당할 수 있으나, DRAM(440)의 공간이 기설정된 공간 이상일 경우에는 DRAM(440)에 할당할 수 있다. 하이브리드 메모리 제어 장치(400)는 각 패턴 별로 DRAM(440) 우선 할당제에 포함시키지 않을 수 있으며, 포함된 패턴들은 첫 할당 시에 DRAM(440)에 우선적으로 할당할 수 있다. 그러나, 하이브리드 메모리 제어 장치(400)는 DRAM(440)의 잔여 용량이 기설정된 기준치 미만으로 작아지면 DRAM(440) 우선 할당제가 무효화되며, DRAM(440)에 있는 핫 데이터가 아닌 메모리 블록을 다시 Optane DIMM(450)으로 이동시킬 수 있다.
결과적으로, 하이브리드 메모리 제어 장치(400)는 DRAM(440)을 Optane DIMM(450)의 캐시로 사용하는 환경에서, 타겟 프로그램 내 메모리 블록에 대한 함수의 접근 정보로부터 미리 생성된, 메모리 블록에 대한 접근 패턴 정보를 이용하여 타겟 프로그램을 수정함으로써, 코어 CPU(Core Central Processing Unit)(또는, 하이브리드 메모리 제어 장치)에 의한 타겟 프로그램 실행시, 타겟 프로그램 내 접근 패턴 정보에 기초하여 DRAM(440) 또는 Optane DIMM(450)로의 메모리 블록에 대한 할당을 제어할 수 있다.
도 8은 본 발명의 일실시예에 따른 하이브리드 메모리 제어 장치에서의 메모리 제어 효과를 설명하기 위한 도면이다.
도 8을 참조하면, 하이브리드 메모리 제어 장치(800)는 타겟 프로그램 내에서 할당하는 메모리 블록에 대한 접근 패턴 정보에 기초하여 타겟 프로그램을 미리 수정하여, 타겟 프로그램 실행시 접근 패턴 정보를 통해, 컴퓨터 시스템 내 복수의 메모리 중 어느 하나에 메모리 블록을 할당할 수 있다.
이에 따라, 하이브리드 메모리 제어 장치(800)는 코어 CPU(또는, 하이브리드 메모리 제어 장치)에서 접근하고자 하는 메모리 블록을 DRAM(810)에서 획득할 수 없어 Optane DIMM(820)에 접근하여 메모리 블록을 획득(DRAM cache Miss, 830)하는 경우를 최대한 회피하고, 코어 CPU에서 접근하고자 하는 메모리 블록을 DRAM(810)에서 획득(DRAM cache Hit, 840)하는 확률(즉, DRAM 캐시(cache)의 힛 레이트(hit rate)) 및 메모리의 공간 활용(space utilization)을 증가시켜, 2개의 메모리를 효과적으로 사용할 수 있게 한다.
즉, 하이브리드 메모리 제어 장치(800)는 기존의 메모리 컨트롤러처럼 DRAM(810)를 단순한 직접 사상 캐시(direct mapped cache)로 관리하지 않고, 자주 접근되는 메모리 블록(자주 이용되는 핫 데이터가 저장된 메모리 블록)만 DRAM(810)에 할당함으로써 Optane DIMM(820)까지 도달해야 하는 경우를 감소시킬 수 있다.
또한, 하이브리드 메모리 제어 장치는 타겟 프로그램을 실행하는 중에, 메모리 블록별 접근 패턴을 모니터링한 결과에 기초하여 함수가 자주 접근하는 메모리 블록만을 DRAM(810)에 유지할 수 있게 함으로써, DRAM(810) 캐시의 힛 레이트 및 메모리의 공간 활용을 보다 증가시킬 수 있다.
도 9는 본 발명의 일실시예에 따른 하이브리드 메모리 제어 방법을 도시한 흐름도이다. 여기서, 하이브리드 메모리 제어 방법을 구현하는 하이브리드 메모리 제어 장치는 메인 메모리로 동작할 수 있는 적어도 2개의 메모리를 포함하는 컴퓨터 시스템의 메모리 제어를 위한 것이다. 여기서, 2개의 메모리는 예컨대, DRAM인 제1 메모리 및 Optane DIMM인 제2 메모리를 포함할 수 있다. 제1 메모리의 레이턴시는 제2 메모리의 레이턴시 보다 작을 수 있다.
또한, 하이브리드 메모리 제어 장치는 제2 메모리를 컴퓨터 시스템의 운영체제가 제2 메모리를 제1 메모리와는 별개의 디바이스로 인식하고, 리딩 및 라이팅을 지원하는 앱 디렉트 모드로 설정할 수 있다.
도 9를 참조하면, 단계 S910에서, 하이브리드 메모리 제어 장치는 타겟 프로그램을 프로파일링하여, 타겟 프로그램 내에서 할당하는 메모리 블록에 대해 타겟 프로그램 내 함수의 접근 정보를 추출할 수 있다. 여기서, 메모리 블록은 함수의 한번 사용으로 인해 할당되는 단위를 의미할 수 있다.
이때, 하이브리드 메모리 제어 장치는 타겟 프로그램을 미리 실행하여, 메모리 블록이 할당될 때 메모리 블록에 부여되는 아이디, 로드 및 스토어 명령에 대한 정보를 확인하고, 아이디 및 정보에 기초하여 메모리 블록에 대한 함수의 접근 정보를 추출할 수 있다.
단계 S920에서, 하이브리드 메모리 제어 장치는 메모리 블록에 대한 함수의 접근 정보에 기초하여 메모리 블록에 대한 접근 패턴을 분석할 수 있다.
단계 S930에서, 하이브리드 메모리 제어 장치는 메모리 블록에 대한 접근 패턴을 분석한 결과에 기초하여 메모리 블록에 대한 접근 패턴 정보를 생성하고, 메모리 블록에 대한 접근 패턴 정보를 타겟 프로그램에 삽입하여 타겟 프로그램을 수정할 수 있다.
구체적으로, 하이브리드 메모리 제어 장치는 메모리 블록에 대한 접근 패턴을 분석한 결과, 기설정된 간격 미만으로, 설정된 횟수 이상 함수가 메모리 블록에 접근하는 것으로 확인됨에 기초하여 접근 패턴 정보로서, '핫'을 해당 메모리 블록에 대해 타겟 프로그램에 삽입할 수 있다. 하이브리드 메모리 제어 장치는 설정된 간격 이상으로 함수가 접근하거나, 또는 설정된 횟수 미만으로 함수가 메모리 블록에 접근하는 것으로 확인됨에 기초하여 접근 패턴 정보로서, '콜드'를 해당 메모리 블록에 대해 타겟 프로그램에 삽입할 수 있다.
또한, 하이브리드 메모리 제어 장치는 메모리 블록과 인접한 다른 메모리 블록을 함수가 순차적으로 접근하는 것으로 확인됨에 기초하여 접근 패턴 정보로서, '시퀀스'를 해당 메모리 블록에 대해 타겟 프로그램에 삽입할 수 있다. 하이브리드 메모리 제어 장치는 상기 확인된 접근 패턴 외에는 접근 패턴 정보로서, '랜덤'을 타겟 프로그램에 삽입할 수 있다.
또한, 하이브리드 메모리 제어 장치는 메모리 블록을 관리하는 함수를 기저장된 라이브러리(메모리 할당기의 라이브러리)에 포함된 타입의 함수로 수정함으로써, 이후 타겟 프로그램 실행시 메모리 주소 접근에 사용하는 연산자(예컨대, =, [], +, -, * 등)를 이용하여 메모리 접근 과정을 추적할 수 있게 한다. 여기서, 메모리 블록을 관리하는 함수란, 타겟 프로그램에서 연산이나 특정 태스크를 수행하기 위한 함수가 아닌, 메모리 블록을 특정 주소에 할당하고, 해제하고, 이동시키는 기능을 수행하는 함수를 지칭할 수 있다.
단계 S940에서, 하이브리드 메모리 제어 장치는 수정된 타겟 프로그램을 실행하되, 타겟 프로그램 내 접근 패턴 정보에 기초하여, 메모리 블록을 제1 메모리 및 제2 메모리 중 어느 하나에 할당할 수 있다.
이때, 하이브리드 메모리 제어 장치는 타겟 프로그램 내 접근 패턴 정보가 '핫'인 것에 기초하여 상기 메모리 블록을 제1 메모리에 할당할 수 있다. 하이브리드 메모리 제어 장치는 타겟 프로그램 내 접근 패턴 정보가 '콜드'인 것에 기초하여 메모리 블록을 제2 메모리에 할당할 수 있다.
또한, 하이브리드 메모리 제어 장치는 타겟 프로그램 내 접근 패턴 정보가 '시퀀스'인 것에 기초하여 메모리 블록을 제2 메모리에 할당하되, 메모리 블록과 인접한 다른 메모리 블록이 함수에 의해 접근되면, 메모리 블록을 제2 메모리에서 제1 메모리로 이동시킬 수 있다. 이때, 하이브리드 메모리 제어 장치는 타겟 프로그램 내 접근 패턴 정보가 '시퀀스'일 때, 제1 메모리의 잔여 공간이 기설정된 공간 이상으로 확인되면, 메모리 블록 및 메모리 블록과 인접한 다른 메모리 블록을 제1 메모리에 할당할 수 있다.
즉, 하이브리드 메모리 제어 장치는 미리 설정된 기준에 따라, 상대적으로 자주 접근하는 메모리 블록(자주 이용하는 데이터를 저장하는 메모리 블록)을 레이턴시가 작아 메모리 접근 속도가 제2 메모리 보다 빠른 제1 메모리에 할당하거나, 또는 제2 메모리에 기할당된 메모리 블록에 접근하기 전에 해당 메모리 블록을 제2 메모리에서 제1 메모리로 이동시켜, 메인 메모리의 용량을 확장시키면서도 데이터의 처리 속도 저하를 방지할 수 있다.
또한, 하이브리드 메모리 제어 장치는 타겟 프로그램을 실행할 때, 타겟 프로그램 내 접근 패턴 정보에 기초하여 복수의 메모리 내 메모리 블록에 대한 첫 할당을 관리할 뿐 아니라, 타겟 프로그램의 실행 중 실시간으로 메모리 블록의 이동을 관리함으로써, 복수의 메모리를 효과적으로 활용할 수 있다.
메모리 블록의 이동 관리를 위해, 하이브리드 메모리 제어 장치는 타겟 프로그램의 실행 중 실시간으로 로드 및 스토어 명령을 추적하고, 추적 결과에 기초하여 메모리 블록의 이동을 관리할 수 있다. 구체적으로, 하이브리드 메모리 제어 장치는 기설정된 연산자(예컨대, =, [], +, -, * 등)를 이용하여, 기설정된 타입으로 수정된 메모리 블록으로의 접근을 추적하고, 추적 결과에 기초하여 제1 메모리에 할당된 메모리 블록을 제2 메모리로 이동시키거나, 또는 제2 메모리에 할당된 메모리 블록을 제1 메모리로 이동시킬 수 있다.
본 발명의 명세서(특히 특허청구범위에서)에서 "상기"의 용어 및 이와 유사한 지시 용어의 사용은 단수 및 복수 모두에 해당하는 것일 수 있다. 또한, 본 발명에서 범위(range)를 기재한 경우 상기 범위에 속하는 개별적인 값을 적용한 발명을 포함하는 것으로서(이에 반하는 기재가 없다면), 발명의 상세한 설명에 상기 범위를 구성하는 각 개별적인 값을 기재한 것과 같다.
본 발명에 따른 방법을 구성하는 단계들에 대하여 명백하게 순서를 기재하거나 반하는 기재가 없다면, 상기 단계들은 적당한 순서로 행해질 수 있다. 반드시 상기 단계들의 기재 순서에 따라 본 발명이 한정되는 것은 아니다. 본 발명에서 모든 예들 또는 예시적인 용어(예들 들어, 등등)의 사용은 단순히 본 발명을 상세히 설명하기 위한 것으로서 특허청구범위에 의해 한정되지 않는 이상 상기 예들 또는 예시적인 용어로 인해 본 발명의 범위가 한정되는 것은 아니다. 또한, 당업자는 다양한 수정, 조합 및 변경이 부가된 특허청구범위 또는 그 균등물의 범주 내에서 설계 조건 및 팩터에 따라 구성될 수 있음을 알 수 있다.
따라서, 본 발명의 사상은 상기 설명된 실시 예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 또는 이로부터 등가적으로 변경된 모든 범위는 본 발명의 사상의 범주에 속한다고 할 것이다.
200: 하이브리드 메모리 제어 장치
210: 프로파일러
220: 수정부
230: 메모리 할당기

Claims (16)

  1. 메인 메모리로 동작할 수 있는 적어도 2개의 메모리를 포함하는 컴퓨터 시스템의 메모리 제어를 위한 하이브리드 메모리 제어 장치로서,
    타겟 프로그램을 프로파일링하여, 상기 타겟 프로그램 내에서 할당하는 메모리 블록에 대해 상기 타겟 프로그램 내 함수의 접근 정보를 추출하는 프로파일러;
    상기 메모리 블록에 대한 함수의 접근 정보에 기초하여 상기 메모리 블록에 대한 접근 패턴을 분석하고, 상기 분석 결과에 기초하여 생성한 상기 메모리 블록에 대한 접근 패턴 정보를 상기 타겟 프로그램에 삽입하여 상기 타겟 프로그램을 수정하는 수정부; 및
    수정된 상기 타겟 프로그램을 실행하되, 상기 타겟 프로그램 내 상기 접근 패턴 정보에 기초하여, 상기 메모리 블록을 제1 메모리 및 제2 메모리 중 어느 하나에 할당하는 메모리 할당기를 포함하는,
    하이브리드 메모리 제어 장치.
  2. 제1항에 있어서,
    상기 수정부는,
    상기 메모리 블록에 대한 접근 패턴을 분석한 결과, 기설정된 간격 미만으로, 설정된 횟수 이상 함수가 상기 메모리 블록에 접근하는 것으로 확인됨에 기초하여 상기 접근 패턴 정보로서, '핫(hot)'을 삽입하고,
    설정된 간격 이상으로 함수가 접근하거나, 또는 설정된 횟수 미만으로 함수가 상기 메모리 블록에 접근하는 것으로 확인됨에 기초하여 상기 접근 패턴 정보로서, '콜드(cold)'를 삽입하며,
    상기 메모리 블록과 인접한 다른 메모리 블록을 함수가 순차적으로 접근하는 것으로 확인됨에 기초하여 상기 접근 패턴 정보로서, '시퀀스(sequential)'를 삽입하는,
    하이브리드 메모리 제어 장치.
  3. 제1항에 있어서,
    상기 메모리 할당기는,
    상기 타겟 프로그램 내 상기 접근 패턴 정보가 '핫'인 것에 기초하여 상기 메모리 블록을 상기 제1 메모리에 할당하고,
    상기 타겟 프로그램 내 상기 접근 패턴 정보가 '콜드'인 것에 기초하여 상기 메모리 블록을 상기 제2 메모리에 할당하며,
    상기 타겟 프로그램 내 상기 접근 패턴 정보가 '시퀀스'인 것에 기초하여 상기 메모리 블록을 상기 제2 메모리에 할당하되, 상기 메모리 블록과 인접한 다른 메모리 블록이 함수에 의해 접근되면, 상기 메모리 블록을 상기 제2 메모리에서 상기 제1 메모리로 이동시키는,
    하이브리드 메모리 제어 장치.
  4. 제3항에 있어서,
    상기 메모리 할당기는,
    상기 타겟 프로그램 내 상기 접근 패턴 정보가 '시퀀스'일 때,
    상기 제1 메모리의 잔여 공간이 기설정된 공간 이상으로 확인되면, 상기 메모리 블록 및 상기 메모리 블록과 인접한 다른 메모리 블록을 상기 제1 메모리에 할당하는,
    하이브리드 메모리 제어 장치.
  5. 제1항에 있어서,
    상기 프로파일러는,
    상기 타겟 프로그램을 미리 실행하여, 메모리 블록이 할당될 때 메모리 블록에 부여되는 아이디(ID)와, 로드(load) 및 스토어(store) 명령(instruction)에 대한 정보를 확인하고, 확인된 상기 아이디 및 상기 정보에 기초하여 상기 메모리 블록에 대한 함수의 접근 정보를 추출하는,
    하이브리드 메모리 제어 장치.
  6. 제1항에 있어서,
    상기 수정부는,
    상기 메모리 블록을 관리하는 함수를 상기 메모리 할당기의 라이브러리에 포함된 타입의 함수로 수정하는,
    하이브리드 메모리 제어 장치.
  7. 제1항에 있어서,
    상기 메모리 할당기는,
    상기 타겟 프로그램의 실행 중 실시간으로 로드 및 스토어 명령을 추적하고, 상기 추적 결과에 기초하여 상기 메모리 블록의 이동을 관리하는,
    하이브리드 메모리 제어 장치.
  8. 제1항에 있어서,
    상기 제1 메모리의 레이턴시(Latency)는 상기 제2 메모리의 레이턴시 보다 작은 것을 특징으로 하는,
    하이브리드 메모리 제어 장치.
  9. 메인 메모리로 동작할 수 있는 적어도 2개의 메모리를 포함하는 컴퓨터 시스템의 메모리 제어를 위한 하이브리드 메모리 제어 방법으로서,
    타겟 프로그램을 프로파일링하여, 상기 타겟 프로그램 내에서 할당하는 메모리 블록에 대해 상기 타겟 프로그램 내 함수의 접근 정보를 추출하는 단계;
    상기 메모리 블록에 대한 함수의 접근 정보에 기초하여 상기 메모리 블록에 대한 접근 패턴을 분석하고, 상기 분석 결과에 기초하여 생성한 상기 메모리 블록에 대한 접근 패턴 정보를 상기 타겟 프로그램에 삽입하여 상기 타겟 프로그램을 수정하는 단계; 및
    수정된 상기 타겟 프로그램을 실행하되, 상기 타겟 프로그램 내 상기 접근 패턴 정보에 기초하여, 상기 메모리 블록을 제1 메모리 및 제2 메모리 중 어느 하나에 할당하는 단계를 포함하는,
    하이브리드 메모리 제어 방법.
  10. 제9항에 있어서,
    상기 타겟 프로그램을 수정하는 단계는,
    상기 메모리 블록에 대한 접근 패턴을 분석한 결과, 기설정된 간격 미만으로, 설정된 횟수 이상 함수가 상기 메모리 블록에 접근하는 것으로 확인됨에 기초하여 상기 접근 패턴 정보로서, '핫'을 삽입하는 단계;
    설정된 간격 이상으로 함수가 접근하거나, 또는 설정된 횟수 미만으로 함수가 상기 메모리 블록에 접근하는 것으로 확인됨에 기초하여 상기 접근 패턴 정보로서, '콜드'를 삽입하는 단계; 또는
    상기 메모리 블록과 인접한 다른 메모리 블록을 함수가 순차적으로 접근하는 것으로 확인됨에 기초하여 상기 접근 패턴 정보로서, '시퀀스'를 삽입하는 단계를 포함하는,
    하이브리드 메모리 제어 방법.
  11. 제9항에 있어서,
    상기 할당하는 단계는,
    상기 타겟 프로그램 내 상기 접근 패턴 정보가 '핫'인 것에 기초하여 상기 메모리 블록을 상기 제1 메모리에 할당하는 단계;
    상기 타겟 프로그램 내 상기 접근 패턴 정보가 '콜드'인 것에 기초하여 상기 메모리 블록을 상기 제2 메모리에 할당하는 단계; 또는
    상기 타겟 프로그램 내 상기 접근 패턴 정보가 '시퀀스'인 것에 기초하여 상기 메모리 블록을 상기 제2 메모리에 할당하되, 상기 메모리 블록과 인접한 다른 메모리 블록이 함수에 의해 접근되면, 상기 메모리 블록을 상기 제2 메모리에서 상기 제1 메모리로 이동시키는 단계를 포함하는,
    하이브리드 메모리 제어 방법.
  12. 제11항에 있어서,
    상기 할당하는 단계는,
    상기 타겟 프로그램 내 상기 접근 패턴 정보가 '시퀀스'일 때,
    상기 제1 메모리의 잔여 공간이 기설정된 공간 이상으로 확인되면, 상기 메모리 블록 및 상기 메모리 블록과 인접한 다른 메모리 블록을 상기 제1 메모리에 할당하는 단계를 더 포함하는,
    하이브리드 메모리 제어 방법.
  13. 제9항에 있어서,
    상기 타겟 프로그램 내 함수의 접근 정보를 추출하는 단계는,
    상기 타겟 프로그램을 미리 실행하여, 메모리 블록이 할당될 때 메모리 블록에 부여되는 아이디와, 로드 및 스토어 명령에 대한 정보를 확인하는 단계; 및
    확인된 상기 아이디 및 상기 정보에 기초하여 상기 메모리 블록에 대한 함수의 접근 정보를 추출하는 단계를 포함하는,
    하이브리드 메모리 제어 방법.
  14. 제9항에 있어서,
    상기 수정하는 단계는,
    상기 메모리 블록을 관리하는 함수를 기저장된 라이브러리에 포함된 타입의 함수로 수정하는 단계를 포함하는,
    하이브리드 메모리 제어 방법.
  15. 제9항에 있어서,
    상기 할당하는 단계는,
    상기 타겟 프로그램의 실행 중 실시간으로 로드 및 스토어 명령을 추적하고, 상기 추적 결과에 기초하여 상기 메모리 블록의 이동을 관리하는 단계를 포함하는,
    하이브리드 메모리 제어 방법.
  16. 제9항에 있어서,
    상기 제1 메모리의 레이턴시는 상기 제2 메모리의 레이턴시 보다 작은 것을 특징으로 하는,
    하이브리드 메모리 제어 방법.
KR1020200123133A 2020-09-23 2020-09-23 하이브리드 메모리 제어 장치 및 방법 KR102480944B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200123133A KR102480944B1 (ko) 2020-09-23 2020-09-23 하이브리드 메모리 제어 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200123133A KR102480944B1 (ko) 2020-09-23 2020-09-23 하이브리드 메모리 제어 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20220040204A KR20220040204A (ko) 2022-03-30
KR102480944B1 true KR102480944B1 (ko) 2022-12-22

Family

ID=80948287

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200123133A KR102480944B1 (ko) 2020-09-23 2020-09-23 하이브리드 메모리 제어 장치 및 방법

Country Status (1)

Country Link
KR (1) KR102480944B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116521608A (zh) * 2023-03-21 2023-08-01 超聚变数字技术有限公司 数据迁移方法及计算设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001282546A (ja) 2000-03-30 2001-10-12 Matsushita Electric Ind Co Ltd プログラム変換装置、プログラム変換方法及びプログラム記録媒体
JP2008210011A (ja) 2007-02-23 2008-09-11 Fujitsu Ltd プロファイリング装置およびプロファイリングプログラム
US20190294356A1 (en) 2018-03-21 2019-09-26 Micron Technology, Inc. Hybrid memory system

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101356033B1 (ko) * 2011-12-16 2014-01-29 한국과학기술원 하이브리드 주메모리 시스템 및 이를 위한 태스크 스케줄링 방법
KR20140056657A (ko) 2012-10-30 2014-05-12 삼성전자주식회사 메인 메모리를 구비한 컴퓨터 시스템 및 그것의 제어 방법
US20190243787A1 (en) * 2018-02-05 2019-08-08 Micron Technology, Inc. Memory Systems having Controllers Embedded in Packages of Integrated Circuit Memory

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001282546A (ja) 2000-03-30 2001-10-12 Matsushita Electric Ind Co Ltd プログラム変換装置、プログラム変換方法及びプログラム記録媒体
JP2008210011A (ja) 2007-02-23 2008-09-11 Fujitsu Ltd プロファイリング装置およびプロファイリングプログラム
US20190294356A1 (en) 2018-03-21 2019-09-26 Micron Technology, Inc. Hybrid memory system

Also Published As

Publication number Publication date
KR20220040204A (ko) 2022-03-30

Similar Documents

Publication Publication Date Title
KR101175906B1 (ko) 메모리 맵핑 방법과 컴퓨팅 장치 및 이의 제조물품
CN107908571B (zh) 一种数据写入方法、闪存装置及存储设备
KR20220041937A (ko) 메모리 유형에 대한 페이지 테이블 후크
US11194737B2 (en) Storage device, controller and method for operating the controller for pattern determination
CN103853665B (zh) 存储空间分配方法及设备
US20130007370A1 (en) Method and apparatus for minimizing working memory contentions in computing systems
Hassan et al. Software-managed energy-efficient hybrid DRAM/NVM main memory
KR102681181B1 (ko) 메모리 시스템 및 그것의 동작방법
US20230088790A1 (en) Using a common pool of blocks for user data and a system data structure
KR102202107B1 (ko) 사용자 개별 서비스 환경을 위한 스토리지 장치 제어 방법 및 스토리지 컨트롤러
KR102480944B1 (ko) 하이브리드 메모리 제어 장치 및 방법
Yong et al. Design and implementation of virtual stream management for NAND flash-based storage
TWI529730B (zh) 資料儲存裝置與快閃記憶體控制方法
CN108664217B (zh) 一种降低固态盘存储系统写性能抖动的缓存方法及系统
US20100023677A1 (en) Solid state storage system that evenly allocates data writing/erasing operations among blocks and method of controlling the same
Feng et al. Multiple subpage writing FTL in MLC by exploiting dual mode operations
CN108170380B (zh) 一种固态硬盘提升顺序读性能的方法及固态硬盘
CN113867641B (zh) 主机内存缓冲管理方法、装置、以及固态硬盘
KR102482191B1 (ko) 하이브리드 메모리 장치 및 이의 관리 방법
KR20230031123A (ko) 메모리 모듈, 메모리 모듈을 포함하는 메모리 시스템 및 그 동작 방법
CN114138176A (zh) Nor Flash的擦除、升级方法及装置、计算机设备和存储介质
Jang et al. Achieving low write latency through new stealth program operation supporting early write completion in NAND flash memory
Hardock et al. Noftl for real: Databases on real native flash storage
KR101335177B1 (ko) 비휘발성 메모리 저장장치에서 워크로드와 데이터 재사용 시간을 고려한 선택적 트림 방법
US12019539B2 (en) Adaptive configuration of memory devices using host profiling

Legal Events

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