KR20190053086A - 분리 메모리 관리 방법 및 장치 - Google Patents

분리 메모리 관리 방법 및 장치 Download PDF

Info

Publication number
KR20190053086A
KR20190053086A KR1020180110719A KR20180110719A KR20190053086A KR 20190053086 A KR20190053086 A KR 20190053086A KR 1020180110719 A KR1020180110719 A KR 1020180110719A KR 20180110719 A KR20180110719 A KR 20180110719A KR 20190053086 A KR20190053086 A KR 20190053086A
Authority
KR
South Korea
Prior art keywords
memory
block
virtual machine
memory block
size
Prior art date
Application number
KR1020180110719A
Other languages
English (en)
Other versions
KR102441992B1 (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 US16/185,833 priority Critical patent/US10789090B2/en
Publication of KR20190053086A publication Critical patent/KR20190053086A/ko
Application granted granted Critical
Publication of KR102441992B1 publication Critical patent/KR102441992B1/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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

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 Of A Hierarchy Structure (AREA)
  • Apparatus For Radiation Diagnosis (AREA)

Abstract

본 명세서는 가상화 시스템에서 분리 메모리를 관리하는 방법을 제공할 수 있다. 이때, 분리 메모리를 관리하는 방법은 가상 머신 노드에서 가상 머신의 동작에 기초하여 메모리 접근을 디텍트하는 단계, 메모리 접근 패턴을 고려하여 메모리 블록을 통해 메모리 오퍼레이션을 수행하는 단계를 포함할 수 있다. 이때, 메모리 접근 패턴은 가싱 머신의 동작 수행 시간에 기초하여 다르게 설정되고, 메모리 블록은 메모리 접근 패턴에 기초하여 동적으로 크기가 변화할 수 있다.

Description

분리 메모리 관리 방법 및 장치 {Method and apparatus for managing disaggregated memory}
본 발명은, 분리 메모리를 제공하는 가상화 시스템에서 메모리를 동적으로 분석하여 효과적으로 운영하기 위한, 공간적 지역성을 이용한 분리 메모리 관리 방법 및 장치에 관한 것이다.
분리 메모리를 제공하는 가상화 시스템은 가상머신이 수행함에 있어서 요구되는 메모리의 부분집합을 해당 가상머신을 운영하는 물리머신이 아닌 I/O(Input/Output)로 연결되어 있는 다른 시스템에 위치시키는 시스템과 또한 블록어드레싱을 지원하는 비휘발성 메모리들을 이용하는 가상화 시스템을 의미한다. 이는 최근 인메모리 컴퓨팅 환경이 대중화되면서 높아진 메모리 용량을 기존의 대중화된 시스템을 이용하여 제공할 수 있는 기회를 제공한다. 이와 같은 시스템을 운영함에 있어서 갖게 되는 성능저하요소의 극복은 해당 시스템의 대중화를 위해 필수적이다.
이와 같은 메모리 분리 시스템에서 성능을 높이는 대표적인 방법은 미리 사용할 메모리 페이지를 리모트 메모리 노드로부터 가져오는 것이다. 하지만 이와 같은 응용프로그램들을 대상 메모리 시스템에서 운영할 때, 해당 메모리 접근 패턴을 고려하지 않고 리모트 메모리 페이징 시스템에서 요구되는 메모리를 페이지 단위로 전송을 이용하여 사용되고 있다. 또한 단순히 모든 메모리의 접근에 대해서 남용되어 요청될 경우 로컬머신의 메모리와 해당 머신들을 연결하는 연결망의 오용으로 성능저하를 갖게 된다. 이를 위해서 마이크로아키텍처에서 널리 사용되는 응용프로그램의 메모리 접근 패턴에 기반한 프리페칭이 요구된다. 하지만 응용프로그램들이 갖는 메모리 접근 패턴은 응용, 시기, 위치, 그리고 로컬메모리 용량에 따라 달라지기 때문에 정적시간의 프로파일링은 시스템의 최적화에 있어 한계를 지닌다.
본 발명은 분리 메모리를 지원하는 가상화 시스템에서 메모리 접근 패턴을 동적으로 판단하여 리모트 메모리 접근의 수를 줄임으로 시스템의 성능 향상을 목적으로 한다.
본 발명은 상술한 바를 통해 발생하는 메모리 접근을 줄임으로써 성능 저하를 줄이는 방법을 제공하는데 목적이 있다.
본 발명은 상술한 바를 통해 노드 간의 연결에 있어서 사용하는 메모리 대역폭을 오용하지 않도록 하여 실제 메모리 접근에서 발생하는 지연시간을 줄이는 방법을 제공하는데 목적이 있다.
본 발명은 상술한 바를 위해 가상머신의 메모리 접근에 대한 동적 프로파일링을 제공하는데 목적이 있다.
본 발명에서 이루고자 하는 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급하지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
본 발명의 일 실시예에 따라, 가상화 시스템에서 분리 메모리를 관리하는 방법을 제공할 수 있다. 이때, 분리 메모리를 관리하는 방법은 가상 머신 노드에서 가상 머신의 동작에 기초하여 메모리 접근을 디텍트하는 단계, 메모리 접근 패턴을 고려하여 메모리 블록을 통해 메모리 오퍼레이션을 수행하는 단계를 포함할 수 있다. 이때, 메모리 접근 패턴은 가싱 머신의 동작 수행 시간에 기초하여 다르게 설정되고, 메모리 블록은 메모리 접근 패턴에 기초하여 동적으로 크기가 변화할 수 있다.
이때, 메모리 오퍼레이션은 적재 오퍼레이션, 저장 오퍼레이션 및 가상 머신 물리 주소의 매핑 오퍼레이션 및 상기 가상 머신 물리 주소의 언매핑 오퍼레이션 중 적어도 어느 하나를 포함할 수 있다.
또한, 본 발명의 일 실시예에 따라, 가상화 시스템에서 분리 메모리를 관리하는 장치에 있어서, 메모리 및 메모리를 제어하는 프로세서를 포함할 수 있다. 이때, 프로세서는 가상 머신 노드에서 가상 머신의 동작에 기초하여 메모리 접근을 디텍트하고, 메모리 접근 패턴을 고려하여 메모리 블록을 통해 메모리 오퍼레이션을 수행할 수 있다. 이때, 메모리 접근 패턴은 가싱 머신의 동작 수행 시간에 기초하여 다르게 설정되고, 메모리 블록은 메모리 접근 패턴에 기초하여 동적으로 크기가 변화할 수 있다.
이때, 메모리는 로컬 메모리 및 리모트 메모리를 포함할 수 있다.
또한, 프로세서가 수행하는 메모리 오퍼레이션은 적재 오퍼레이션, 저장 오퍼레이션 및 가상 머신 물리 주소의 매핑 오퍼레이션 및 상기 가상 머신 물리 주소의 언매핑 오퍼레이션 중 적어도 어느 하나를 포함할 수 있다.
또한, 본 발명의 일 실시예에 따라, 분리 메모리를 관리하는 가상화 시스템은 가상 머신의 동작을 제어하는 가상 머신 노드 및 메모리 동작을 제어하는 메모리 노드를 포함할 수 있다. 이때, 가상 머신 노드의 분리 메모리 관리자는 가상 머신의 동작에 기초하여 메모리 접근을 디텍트하고, 메모리 접근 패턴을 고려하여 메모리 블록을 통해 메모리 오퍼레이션을 수행하되, 메모리 접근 패턴은 가싱 머신의 동작 수행 시간에 기초하여 다르게 설정되고, 메모리 블록은 메모리 접근 패턴에 기초하여 동적으로 크기가 변화할 수 있다.
또한, 분리 메모리 관리자가 수행하는 메모리 오퍼레이션은 적재 오퍼레이션, 저장 오퍼레이션 및 가상 머신 물리 주소의 매핑 오퍼레이션 및 상기 가상 머신 물리 주소의 언매핑 오퍼레이션 중 적어도 어느 하나를 포함할 수 있다.
다음의 사항은 분리 메모리를 관리하는 방법, 장치 및 시스템에 공통으로 적용될 수 있다.
본 발명의 일 실시예에 따라, 메모리 오퍼레이션 중 적재 오퍼레이션은 리모트 메모리에서 로컬 메모리로 적어도 어느 하나 이상의 메모리 페이지를 가져오는 오퍼레이션일 수 있다. 이때, 메모리 블록은 복수 개의 메모리 페이지로 구성될 수 있다.
이때, 본 발명의 일 실시예에 따라, 로컬 메모리로 가져오는 메모리 페이지 수는 스트레치 오퍼레이션에 기초하여 결정될 수 있다.
또한, 본 발명의 일 실시예에 따라, 적재 오퍼레이션에 기초하여 접근이 발생한 제 1 메모리 블록과 인접한 제 2 메모리 블록의 블록 크기 및 블록 상태가 동일한 경우, 스트레치 오퍼레이션에 기초하여 제 1 메모리 블록과 제 2 메모리 블록을 하나의 블록으로 합치고, 로컬 메모리로 가져올 수 있다.
또한, 본 발명의 일 실시예에 따라, 메모리 오퍼레이션 중 저장 오퍼레이션은 로컬 메모리에서 리모트 메모리로 적어도 어느 하나 이상의 메모리 페이지를 저장하는 오퍼레이션일 수 있다. 이때, 메모리 블록은 복수 개의 메모리 페이지로 구성될 수 있다.
또한, 본 발명의 일 실시예에 따라, 리모트 메모리로 저장하는 메모리 페이지 수는 리듀스 오퍼레이션에 기초하여 결정될 수 있다.
또한, 본 발명의 일 실시예에 따라, 저장 오퍼레이션에 기초하여 메모리 블록에 저장이 발생하는 경우, 메모리 블록의 연속성 점수를 판단하고, 판단된 연속성 점수를 임계값과 비교하여 메모리 블록의 크기를 유지할지 여부를 결정할 수 있다.
이때, 본 발명의 일 실시예에 따라, 연속성 점수가 임계값 이상인 경우, 메모리 블록의 크기를 유지하고, 연속성 점수가 임계값 미만인 경우, 메모리 블록을 리듀스 오퍼레이션에 기초하여 최소 단위 블록으로 분리하여 리모트 메모리에 저장할 수 있다.
이때, 본 발명의 일 실시예에 따라, 최소 단위 블록은 하나의 메모리 페이지로 구성될 수 있다.
또한, 본 발명의 일 실시예에 따라, 메모리 블록의 상태 및 메모리 블록의 위치는 디스크립터에 기초하여 관리될 수 있다.
이때, 본 발명의 일 실시예에 따라, 디스크립터는 메모리 블록이 로컬 메모리 또는 리모트 메모리에 존재하는지 여부, 메모리 블록이 주소 공간에 사상되어 있는지 여부 및 메모리 블록의 크기에 대한 정보 중 적어도 어느 하나 이상을 포함할 수 있다.
또한, 본 발명의 일 실시예에 따라, 메모리 블록은 메모리 페이지의 2^n배 크기를 가지면서 동적으로 변화할 수 있다. 이때, n은 상수일 수 있다.
이때, 본 발명의 일 실시예에 따라, 메모리 블록의 시작 주소는 메모리 블록의 크기에 기초하여 다르게 설정될 수 있다.
본 발명에 따르면, 분리 메모리를 지원하는 가상화 시스템에서 메모리 접근 패턴을 동적으로 판단하여 리모트 메모리 접근의 수를 줄임으로 시스템의 성능을 향상시킬 수 있다.
본 발명에 따르면, 상술한 바를 통해 발생하는 메모리 접근을 줄임으로써 성능 저하를 줄이는 방법을 제공할 수 있다.
본 발명에 따르면, 상술한 바를 통해 노드 간의 연결에 있어서 사용하는 메모리 대역폭을 오용하지 않도록 하여 실제 메모리 접근에서 발생하는 지연시간을 줄이는 방법을 제공할 수 있다.
본 발명에 따르면, 상술한 바를 위해 가상머신의 메모리 접근에 대한 동적 프로파일링을 제공할 수 있다.
본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 분리 메모리 관리자 구조를 나타낸 도면이다.
도 2는 본 발명의 실시예에 따른, 탄력적 가상 메모리 블록을 구성하는 방법을 나타낸 도면이다.
도 3은 본 발명의 실시예에 따른, 스트레치 오퍼레이션의 수도 코드를 나타낸 도면이다.
도 4는 본 발명의 실시예에 따른, 리듀스 오퍼레이션의 수도 코드를 나타낸 도면이다.
도 5는 본 발명의 실시예에 따른, 두 가상 머신 프로세서 간 동시 메모리 접근 방법을 나타낸 도면이다.
도 6은 본 발명의 실시예에 따른, 스트레치 오퍼레이션 메모리 접근 처리의 동시성 문제를 해결하는 방법을 나타낸 도면이다.
도 7은 본 발명의 실시예에 따른, 블록의 동적 변화를 고려한 락킹 프로토콜을 나타낸 도면이다.
도 8은 본 발명의 일 실시예에 따른, 분리 메모리 관리 방법을 나타낸 도면이다.
도 9는 본 발명의 일 실시예에 따른, 분리 메모리 관리를 수행하는 장치를 나타낸 도면이다.
이하에서는 첨부한 도면을 참고로 하여 본 발명의 실시 예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나, 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다.
본 발명의 실시 예를 설명함에 있어서 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그에 대한 상세한 설명은 생략한다. 그리고, 도면에서 본 발명에 대한 설명과 관계없는 부분은 생략하였으며, 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
본 발명에 있어서, 어떤 구성요소가 다른 구성요소와 "연결", "결합" 또는 "접속"되어 있다고 할 때, 이는 직접적인 연결관계뿐만 아니라, 그 중간에 또 다른 구성요소가 존재하는 간접적인 연결관계도 포함할 수 있다. 또한 어떤 구성요소가 다른 구성요소를 "포함한다" 또는 "가진다"고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 배제하는 것이 아니라 또 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
본 발명에 있어서, 제1, 제2 등의 용어는 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용되며, 특별히 언급되지 않는 한 구성요소들간의 순서 또는 중요도 등을 한정하지 않는다. 따라서, 본 발명의 범위 내에서 일 실시 예에서의 제1 구성요소는 다른 실시 예에서 제2 구성요소라고 칭할 수도 있고, 마찬가지로 일 실시 예에서의 제2 구성요소를 다른 실시 예에서 제1 구성요소라고 칭할 수도 있다.
본 발명에 있어서, 서로 구별되는 구성요소들은 각각의 특징을 명확하게 설명하기 위함이며, 구성요소들이 반드시 분리되는 것을 의미하지는 않는다. 즉, 복수의 구성요소가 통합되어 하나의 하드웨어 또는 소프트웨어 단위로 이루어질 수도 있고, 하나의 구성요소가 분산되어 복수의 하드웨어 또는 소프트웨어 단위로 이루어질 수도 있다. 따라서, 별도로 언급하지 않더라도 이와 같이 통합된 또는 분산된 실시 예도 본 발명의 범위에 포함된다.
본 발명에 있어서, 다양한 실시 예에서 설명하는 구성요소들이 반드시 필수적인 구성요소들은 의미하는 것은 아니며, 일부는 선택적인 구성요소일 수 있다. 따라서, 일 실시 예에서 설명하는 구성요소들의 부분집합으로 구성되는 실시예도 본 발명의 범위에 포함된다. 또한, 다양한 실시 예에서 설명하는 구성요소들에 추가적으로 다른 구성요소를 포함하는 실시 예도 본 발명의 범위에 포함된다.
도 1은 분리 메모리 관리자 구조를 나타낸 도면이다.
도 1을 참조하면, 분리 메모리를 갖는 가상화 시스템을 제공할 수 있다. 보다 상세하게는, 가상화 시스템에서는 분리 메모리 관리자(118)가 존재할 수 있다. 이때, 분리 메모리 관리자(118)는 가상 머신 노드(110)에서 발생하는 리모트 메모리 접근을 처리할 수 있다. 일 예로, 가상 머신 노드(110)가 리모트 메모리에 접근하고자 하는 경우, 분리 메모리 관리자(118)는 리모트 메모리를 로컬 메모리로 적재할 수 있다. 또한, 분리 메모리 관리자(118)는 로컬 메모리를 리모트 메모리로 저장할 수 있다. 일 예로, 분리 메모리 관리자(118)는 가상 머신 노드(110)의 동작에 기초하여 제 1 메모리 페이지(121)를 로컬 메모리에서 리모트 메모리로 저장할 수 있다. 이때, 제 1 메모리 페이지(121)는 로컬 메모리에 있는 임의의 메모리 페이지일 수 있으며, 상술한 실시예로 한정되지 않는다. 즉, 분리 메모리 관리자(118)는 로컬 메모리를 리모트 메모리로 저장할 수 있다. 또한, 분리 메모리 관리자(118)는 가상 머신 노드(110)의 동작에 기초하여 리모트 메모리에 있는 제 2 메모리 페이지(122)를 로컬 메모리로 적재할 수 있다. 이때, 제 2 메모리 페이지(121)는 리모트 메모리에 존재하는 임의의 메모리 페이지일 수 있으며, 상술한 실시예로 한정되지 않는다. 이때, 분리 메모리 관리자(118)는 적재되는 로컬 메모리를 가상 머신 노드(110)가 사용하는 주소 공간에 사상할 수 있으며, 이를 통해 가상 머신 노드(110)는 적재된 로컬 메모리를 사용할 수 있다. 즉, 가상 머신 상에서 동작하는 커널 또는 응용 프로그램이 해당 메모리에 접근하도록 할 수 있다. 반면, 분리 메모리 관리자(118)는 가상 머신 노드(110)가 접근하지 않는 메모리에 대해서는 리모트 메모리에 저장할 수 있다. 즉, 가상 머신 노드(110)가 사용하는 메모리를 확인하여 이를 로컬 메모리에 적재하고, 사용하지 않는 메모리는 리모트 메모리에 저장할 수 있다.
이때, 도 1을 참조하면, 커널 레벨에서의 가상 머신 노드(110)에는 가상 머신 커널 프로그램(115) 및 호스트 커널 프로그램(1160)이 존재할 수 있다. 반면, 커널 레벨에서의 메모리 노드(120)에는 메모리 노드 커널 프로그램(119)이 존재할 수 있다. 이때, 상술한 분리 메모리 관리자(118)는 호스트 커널 프로그램(116)으로 가상 머신 커널 프로그램(115)에 기초하여 리모트 메모리 접근 처리를 제어할 수 있다. 즉, 사용자 레벨에서 가상 머신 프로그램(111)에 기초하여 가상 머신 모니터(117)에 의해 가상 머신 모니터링이 수행되고, 이에 기초하여 분리 메모리 관리자(118)는 리모트 메모리 접근 처리를 수행할 수 있다.
이때, 일 예로, 분리 메모리를 갖는 가상화 시스템에서 수반되는 리모트 메모리 접근으로 인한 성능저하가 발생할 수 있다. 보다 상세하게는, 원격 메모리 접근을 제공함에 있어서 기존의 운영체제들이 제공하는 스왑 시스템은 단순히 요구된 페이지에 대한 스왑을 통해 해당 리모트 메모리에 대한 접근 서비스를 제공할 수 있었다. 또한, 이는 IO(Input/Output) 버스에 연결된 저장 장치, IO버스에 연결된 리모트 메모리, 그리고 NVDIMM-F와 같은 NAND소자를 이용하는 메모리에서 제공하는 블록-어드레싱이 프로세서에서 요구하는 비트-어드레싱을 제공할 수 없기 때문에 문제가 발생할 수 있다.
또한, 일 예로, 상술한 바와 같이, 메모리 분리 시스템에서 성능을 높이는 대표적인 방법은 미리 사용할 메모리 페이지를 리모트 메모리 노드로부터 가져 오는 것일 수 있다. 다만, 응용 프로그램들을 대상 메모리 시스템에서 운영할 때 메모리 접근 패턴을 고려하지 않고, 리모트 메모리 페이징 시스템에서 요구되는 메모리를 페이지 단위로 전송하는 경우 메모리 페이지에 대한 낭비가 발생할 수 있다. 또한, 단순히 모든 메모리의 접근에 대해서 남용되어 요청될 경우 로컬머신의 메모리와 해당 머신들을 연결하는 연결망의 오용으로 성능저하를 갖게 된다.
이를 위해 분리 메모리를 지원하는 가상화 시스템에서 메모리 접근 패턴을 동적으로 판단하여 리모트 메모리 접근의 수를 줄임으로 시스템의 성능을 향상 시킬 수 있다. 이를 통해, 불필요한 메모리 접근을 줄이고, 성능 저하를 방지하여 노드간의 연결에 있어서 사용하는 메모리 대역폭이 오용되지 않도록 할 수 있다. 대역폭을 오용하지 않음으로 실제 접근으로 인한 메모리의 접근에서 발생하는 지연시간을 줄일 수 있다.
상술한 바를 위해서는 가상머신의 메모리 접근에 대한 프로파일링이 필요할 수 있으며, 프로 파일링은 정적 프로 파일링 및 동적 프로파일링으로 나눌 수 있다. 이때, 정적 프로파일링은 가상머신의 동작 중에 프로파일링을 하지 않기 때문에 동적인 프로파일링 비용을 줄일 수 있으나 동적으로 결정되는 메모리의 위치와 이에 따른 시간적으로 달라지는 메모리 접근 패턴을 파악하는데 한계를 갖는다.
상술한 상황을 고려하여, 가상 머신에서 수행되는 분리 메모리 관리자(118)는 가상머신의 수행시간에 관리하는 메모리의 공간적 지역성을 지속적으로 파악할 수 있다. 이를 통해, 분리 메모리 관리자는 메모리 오퍼레이션인 적재, 저장, 가상머신물리주소(Guest Physical Address, GPA)로의 매핑 및 언매핑 등을 수행할 수 있다. 이때, 분리 메모리는 상술한 동작을 수행함에 있어서 공간적 지역성을 갖는 연속된 메모리 페이지들의 집합을 단위로 동작을 수행할 수 있다.
일 예로, 도 2는 탄력적 가상 메모리 블록을 나타낸 도면이다. 도 2를 참조하면, 연속된 메모리 페이지들의 집합을 하나의 탄력적 가상메모리 블록으로 정의할 수 있다. 이때, 하나의 블록은 항상 로컬 메모리 또는 동일한 리모트 메모리에 존재하며 동일한 상태를 갖을 수 있다. 또한 해당 메모리의 크기는 동적으로 변경되며 그 크기는 마이크로아키텍쳐에서 정의하는 페이지의 2^n(n은 상수) 배의 크기를 갖을 수 있다.
일 예로, 인텔64 컴퓨터 구조를 고려하면 4KB, 8KB, 16KB, 32KB, 64KB 등으로 증가하는 크기를 갖을 수 있다. 또한, 블록의 시작 주소는 해당 블록의 크기에 정렬된 주소를 갖을 수 있다. 즉, 4KB블록, 8KB블록, 16KB블록, 32KB블록 및 64KB 블록은 각각 11개, 12개, 13개, 14개, 15개의 LSB (Least Significant Bit)들이 0을 갖는 해당 블록의 시작주소를 갖을 수 있으며, 이를 통해 각각 구별될 수 있다. 상술한 바와 같이, 블록의 동적 크기 변경을 위해서 메모리 관리 오퍼레이션시 제공되는 정보를 기반으로 임의의 블록에 대해 크기를 늘리는 스트레치 (STRETCH) 오퍼레이션, 크기를 줄이는 리듀스 (REDUCE) 오퍼레이션이 수행될 수 있다.
일 예로, 도 3은 스트레치 오퍼레이션에 대한 수도(PSEUDO) 코드를 나타낸 도면이다.
도 3을 참조하면, 스트레치 오퍼레이션은 임의의 리모트 메모리에 대한 접근을 처리할 때 리모트 메모리로부터 가져올 페이지의 수를 결정할 수 있다. 또한, 해당 오퍼레이션은 임의의 리모트 메모리에 대한 접근이 발생할 경우 수행될 수 있다. 즉, 리모트 메모리에서 로컬 메모리로 적재할 때 수행될 수 있다. 이때, 접근이 발생한 리모트 블록에 인접한 블록을 고려할 수 있다. 인접한 블록으로 정렬된 블록이 대상 블록과 같은 크기를 가지고, 동일한 상태를 가지는 경우, 두 블록에 대한 공간적 지역성이 있는 것으로 판단하여 두 블록을 하나의 블록으로 합칠 수 있다. 그 후, 분리 메모리 관리자에 의해 합쳐전 블록이 로컬 메모리에 적재될 수 있다. 이와 같이, 늘어난 블록은 새로운 메모리 접근을 갖고 있기 때문에 로컬 메모리 관리 시스템에서의 수명이 늘어날 수 있다. 즉, 인접한 블록의 크기 및 상태가 같은 경우라면 스트레치 오퍼레이션에 기초하여 블록을 하나로 합치고 로컬 메모리로 적재할 수 있다. 일 예로, 인접한 블록의 크기 및 상태가 같은 경우라면 시퀀셜 메모리 접근으로서 메모리의 크기를 키우고, 인접한 블록이 서로 무관한 경우라면 랜덤적 접근이 수행되도록 할 수 있다.
도 4는 리듀스 오퍼레이션에 대한 수도 코드를 나타낸 도면이다. 도 4를 참조하면, 리듀스 오퍼레이션은 도 3과 반대로 로컬 메모리에 존재는 블록을 대상으로 리모트 메모리로 저장될 때 수행되는 오퍼레이션일 수 있다. 일 예로, 임의의 블록에 대해서 임의의 블록에 대해서 연속성 점수를 각각의 페이지들은 1/(블록크기)의 점수를 갖는 것으로 할 수 있다. 이때, 각각의 점수를 총합하여 평가하고, 해당 블록의 연속성 점수가 임계값 이상인지 여부를 판단할 수 있다. 이때, 임계값은 기준이 되는 값으로 변경 설정될 수 있으며, 상술한 실시예로 한정되지 않는다.
임계점 이상일 경우에는 그대로 블록의 크기를 유지하나 만약 임계점 미만으로 낮아진 경우 해당 블록을 4KB 페이지 하나를 블록으로 하는 다수의 블록으로 완전히 나눌 수 있다. 즉, 도 2에서처럼 하나의 페이지로서 최소 단위인 4KB 블록으로 나눌 수 있다. 이와 같은 블록 크기 관리를 통해서 시퀀셜 메모리 접근에 대해서 지속적으로 블록의 크기를 증가시키고 또한 랜덤 메모리 접근에 대해서 공격적으로 블록 크기를 줄임으로써 시퀀셜 메모리 접근의 성능을 높이고 랜덤 메모리 접근에 대한 성능저하는 방지할 수 있다.
상술한 바를 위해 가상머신의 메모리에 대한 디스크립터를 이용하여 각각의 메모리 블록의 상태 및 해당 메모리 데이터의 위치 등을 관리할 수 있다. 일 예로, 디스크립터에 기초하여 임의의 가상머신물리주소 (GPA) 0x10000에서 시작하는 4KB 블록의 데이터가 로컬 메모리에 존재하는지 또는 리모트 메모리에 존재하는지를 나타낼 수 있다. 또한, 디스크립터를 통해 메모리가 주소공간에 사상되어 있는지 아닌지 등을 나타낼 수 있다. 또한, 디스크립터를 통해 공간적 지역성을 위한 블록 크기에 대한 정보를 확인할 수 있다. 또한, 디스크립터는 해당 페이지가 리모트 메모리에 존재할 때 이에 대한 접근을 처리함에 있어서 동시성 문제가 발생하지 않도록 하기 위한 동기화 메커니즘을 위한 락 변수 등을 가지고 있다.
일 예로, 도 5를 참조하면, 서로 다른 두 개의 쓰레드(vCPU0(510), vCPU1(520))에서 하나의 블록을 처리하기 위해서는 두 쓰레드(vCPU0(510), vCPU1(520)) 간의 동기화가 요구될 수 있다. 일 예로, vCPU0(510)가 먼저 메모리 블록 C에 대한 접근을 처리하기 시작했다면 vCPU1은 해당 작업을 처리할 필요가 없다. 이에 앞선 접근 처리를 기다리거나 접근 처리의 수행하여 어떠한 하나의 오퍼레이션의 수행만을 시스템에 반영해야 할 수 있다.
이때, 일 예로, 동적으로 크기가 변하는 블록은 동기화를 위한 락 변수로서 해당 블록을 구성하는 메모리 페이지 디스크립터의 맨 앞에 존재하는 해드 (Head) 디스크립터에 존재하는 락 변수를 이용할 수 있다. 즉, 동시에 두 가상머신 프로세서에서 동일한 메모리에 접근하여 해당 메모리에 대한 처리를 수행할 경우, 블록에 속하는 디스크립터 중 해드 디스크립터에 존재하는 락을 이용하여 동기화를 수행할 수 있다.
이때, 일 예로서, 도 6은 스트레치 오퍼레이션과 메모리 접근 처리의 동시성이 발생하는 경우를 나타낸 도면이다.
도 6을 참조하면, 서로 다른 두 개의 vCPU쓰레드(610, 620)에 대해서 vCPU0(610)가 접근하는 4KB 메모리 블록 D에 대한 접근 처리를 수행함과 동시에 vCPU1(620)에서 4KB 메모리 블록 C에 대해서 접근을 하며 메모리 블록 C와 메모리 블록 D를 대상으로 스트레치 오퍼레이션을 수행할 수 있다. 이때, vCPU0의 쓰레드(610)는 상술한 바에 기초하여 메모리 블록 D의 해드 디스크립터에 존재하는 락 변수를 이용할 수 있다. 반면, vCPU1의 쓰레드(620)는 메모리 블록 C의 해드 디스크립터의 락 변수를 이용할 수 있다. 즉, 스트레치 오퍼레이션과 메모리 접근이 동시에 일어나는바 어떤 동작이 수행되는지 여부에 대한 문제가 발생할 수 있다.
이때, 일 예로, 상술한 도 3의 스트레치 오퍼레이션의 수도코드에 기초하면 스트레치의 대상이 되는 두 블록의 락을 소유할 수 있다. 즉, vCPU1의 쓰레드(620)는 블록 C의 해드 디스크립터의 락 변수 및 블록 D의 해드 디스크립터의 락 변수를 소유할 수 있다.
이때, 만약 vCPU0(610)가 스트레치 후에 블록 D에 대한 락을 소유하게 될 경우, 블록 D는 블록 C에 종속된 블록으로써 더 이상 메모리 접근 처리의 대상이 되지 않을 수 있다. 따라서, 상술한 바에 기초한 동기화 문제를 해결하기 위해서는 모든 블록의 크기가 아토믹 (atomic) 갱신이 가능해야 한다.
이를 위해서, 도 7과 같이 락킹(Locking) 프로토콜이 사용될 수 있다. 일 예로, 스트레치 오퍼레이션과 리듀스 오퍼레이션은 해당 오퍼레이션의 인풋 블록들과 아웃풋 블록들의 대상에 대해서 해당 블록들의 락을 소유한 상태에서 블록 크기를 나타내는 변수를 갱신할 수 있다. 즉, 블록 크기를 나타내는 변수를 갱신하여 크기가 일치하지 않는 경우에는 락을 해제하고, 접근을 허용하도록 함으로써 해당 블록들에 대한 접근 처리시 동시성 문제를 해결할 수 있다.
상술한 바를 통해, 정적 프로파일링에서 동적으로 결정되는 메모리의 위치와 이에 따른 시간적으로 달라지는 메모리 접근 패턴을 파악하는데 한계를 극복할 수 있으며, 상술한 실시예로 한정되지 않는다.
도 8은 분리 메모리 관리 방법을 나타낸 도면이다.
도 8을 참조하면 가상 머신 노드에서 가상 머신의 동작에 기초하여 메모리 접근을 디텍트할 수 있다.(S810) 이때, 도 1 내지 도 7에서 상술한 바와 같이, 분리 메모리 관리자는 가상 머신의 동작에 기초하여 메모리 접근 처리를 수행할 수 있다. 이때, 일 예로, 도 1의 가상 머신 노드, 메모리 노드 등은 논리적 구성일 수 있다. 또한, 분리 메모리 관리자도 논리적 구성일 수 있으며, 분리 메모리를 관리하는 주체를 나타내는 엔티티일 수 있다. 일 예로, 상술한 동작을 수행하는 주체는 프로세서일 수 있다. 즉, 장치 내에는 메모리 및 프로세서가 존재할 수 있으며, 프로세서는 메모리와 유기적으로 결합하여 도 1에 개시된 엔티티들에 기초하여 분리 메모리 관리 동작을 수행할 수 있다. 다만, 상술한 바 및 하기에서는 설명의 편의를 위해 각각의 노드 및 분리 메모리 관리자로 서술한다.
다음으로, 분리 메모리 관리자는 메모리 접근 패턴을 고려하여 메모리 블록을 통해 메모리 오퍼레이션을 수행할 수 있다.(S820) 이때, 도 1 내지 도 7에서 상술한 바와 같이, 메모리 접근 패턴은 가상 머신의 동작에 대한 수행 시간에 기초하여 다르게 설정될 수 있다. 또한, 메모리 접근 패턴은 다른 구성에 의해서도 다르게 설정될 수 있으며, 상술한 실시예로 한정되지 않는다. 분리 메모리 관리자는 상술한 메모리 패턴에 기초하여 메모리 블록을 통해 메모리 오퍼레이션을 수행할 수 있다. 이때, 메모리 블록은 연속하는 복수 개의 메모리 페이지들의 집합에 대한 단위일 수 있다. 또한, 메모리 블록의 크기는 가변적일 수 있으며, 이는 상술한 바와 같다. 또한, 메모리 오퍼레이션은 상술한 바와 같이 적재 오퍼레이션, 저장 오퍼레이션, 가상 머신 물리 주소로의 매칭 오퍼레이션 및 가상 머신 물리 주소로의 언매칭 오퍼레이션 중 적어도 하나 이상을 포함할 수 있다. 즉, 가상 머신 노드의 가상 머신 동작에 기초하여 리모트 메모리에서 메모리 블록을 로컬 메모리로 가져오는 적재 오퍼레이션이 수행될 수 있다. 또한, 가상 머신 노드의 가상 머신 동작에 기초하여 로컬 메모리에서 리모트 메모리로 메모리 블록을 저장하는 저장 오퍼레이션이 수행될 수 있다. 한편, 가상 머신 물리 주소에 기초하여 메모리를 매핑하거나 언매핑하는 오퍼레이션이 수행될 수 있으며, 상술한 실시예로 한정되지 않는다.
이때, 일 예로, 수행되는 오퍼레이션에 기초하여 서로 다른 추가적인 오퍼레이션이 수행될 수 있다.(S830) 이때, 도 1 내지 도 7에서 상술한 바와 같이, 적재 오퍼레이션이 수행되는 경우에는 접근한 메모리 블록과 인접한 메모리 블록의 크기 및 상태가 동일하면 스트레치 오퍼레이션에 기초하여 블록의 크기를 합칠 수 있고, 합쳐진 메모리 블록을 로컬 메모리로 가져올 수 있으며, 이는 상술한 바와 같다.(S840)
한편, 저장 오퍼레이션에서는 저장하고자 하는 블록 내의 페이지들의 연속성 점수에 기초하여 블록에 대한 연속성 점수를 판단할 수 있다. 이때, 연속성 점수를 임계값과 비교할 수 있으며, 임계값 미만이면 블록을 최소 단위로 나누어 리모트 메모리에 저장할 수 있으며, 이는 상술한 바와 같다.
도 9는 분리 메모리를 관리하는 장치에 대한 구성을 나타낸 도면이다. 도 9를 참조하면, 분리 메모리를 관리하는 장치(900)는 메모리(910) 및 프로세서(920)로 구성될 수 있다. 이때, 일 예로, 프로세서(920)는 상술한 도 1의 각각의 프로그램, 각각의 노드 및 관리자 등에 대응되는 하드웨어적 구성일 수 있다. 즉, 도 1은 논리적 엔티티로서 상술한 프로세서(920)에 기초하여 동작할 수 있다. 다만, 구체적인 동작을 구별하기 위해 도 1과 같이 기재될 수 있으며, 상술한 실시예로 한정되지 않는다. 한편, 메모리(910)는 도 1처럼 로컬 메모리 및 리모트 메모리로 구성될 수 있다. 즉, 메모리(910)는 분리 메모리 형태일 수 있으며, 분리 메모리 동작에 기초하여 상술한 바와 같이 동작할 수 있다. 또한, 일 예로, 메모리(910)는 하드웨어적 구성으로 상술한 논리적 엔티티에 의해 수행되는 동작에 기초하는 구성일 수 있다. 즉, 본 발명은 메모리(910) 및 프로세서(920)에 기초하여 분리 메모리를 구현하는 방법일 수 있으며, 상술한 실시예로 한정되지 않는다.
본 명세서에 개시된 실시예들과 관련하여 설명된 방법 또는 알고리즘의 단계는 프로세서에 의해 실행되는 하드웨어, 소프트웨어 모듈, 또는 그 2 개의 결합으로 직접 구현될 수 있다. 소프트웨어 모듈은 RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터, 하드 디스크, 착탈형 디스크, CD-ROM과 같은 저장 매체(즉, 메모리 및/또는 스토리지)에 상주할 수도 있다. 예시적인 저장 매체는 프로세서에 커플링되며, 그 프로세서는 저장 매체로부터 정보를 판독할 수 있고 저장 매체에 정보를 기입할 수 있다. 다른 방법으로, 저장 매체는 프로세서와 일체형일 수도 있다. 프로세서 및 저장 매체는 주문형 집적회로 (ASIC) 내에 상주할 수도 있다. ASIC는 사용자 단말기 내에 상주할 수도 있다. 다른 방법으로, 프로세서 및 저장 매체는 사용자 단말기 내에 개별 컴포넌트로서 상주할 수도 있다.
본 발명의 예시적인 방법들은 설명의 명확성을 위해서 동작의 시리즈로 표현되어 있지만, 이는 단계가 수행되는 순서를 제한하기 위한 것은 아니며, 필요한 경우에는 각각의 단계가 동시에 또는 상이한 순서로 수행될 수도 있다. 본 발명에 따른 방법을 구현하기 위해서, 예시하는 단계에 추가적으로 다른 단계를 포함하거나, 일부의 단계를 제외하고 나머지 단계를 포함하거나, 또는 일부의 단계를 제외하고 추가적인 다른 단계를 포함할 수도 있다.
본 발명의 다양한 실시 예는 모든 가능한 조합을 나열한 것이 아니고 본 발명의 대표적인 양상을 설명하기 위한 것이며, 다양한 실시 예에서 설명하는 사항들은 독립적으로 적용되거나 또는 둘 이상의 조합으로 적용될 수도 있다.
또한, 본 발명의 다양한 실시 예는 하드웨어, 펌웨어(firmware), 소프트웨어, 또는 그들의 결합 등에 의해 구현될 수 있다. 하드웨어에 의한 구현의 경우, 하나 또는 그 이상의 ASICs(Application Specific Integrated Circuits), DSPs(Digital Signal Processors), DSPDs(Digital Signal Processing Devices), PLDs(Programmable Logic Devices), FPGAs(Field Programmable Gate Arrays), 범용 프로세서(general processor), 컨트롤러, 마이크로 컨트롤러, 마이크로 프로세서 등에 의해 구현될 수 있다.
본 발명의 범위는 다양한 실시 예의 방법에 따른 동작이 장치 또는 컴퓨터 상에서 실행되도록 하는 소프트웨어 또는 머신-실행가능한 명령들(예를 들어, 운영체제, 애플리케이션, 펌웨어(firmware), 프로그램 등), 및 이러한 소프트웨어 또는 명령 등이 저장되어 장치 또는 컴퓨터 상에서 실행 가능한 비-일시적 컴퓨터-판독가능 매체(non-transitory computer-readable medium)를 포함한다.
900 : 분리 메모리 관리 장치
910 : 메모리
920 : 프로세서

Claims (19)

  1. 가상화 시스템에서 분리 메모리를 관리하는 방법에 있어서,
    가상 머신 노드에서 가상 머신의 동작에 기초하여 메모리 접근을 디텍트하는 단계;
    상기 메모리 접근 패턴을 고려하여 메모리 블록을 통해 메모리 오퍼레이션을 수행하는 단계;를 포함하되,
    상기 메모리 접근 패턴은 상기 가싱 머신의 상기 동작 수행 시간에 기초하여 다르게 설정되고,
    상기 메모리 블록은 상기 메모리 접근 패턴에 기초하여 동적으로 크기가 변화하는, 분리 메모리 관리 방법.
  2. 제 1 항에 있어서,
    상기 메모리 오퍼레이션은 적재 오퍼레이션, 저장 오퍼레이션 및 가상 머신 물리 주소의 매핑 오퍼레이션 및 상기 가상 머신 물리 주소의 언매핑 오퍼레이션 중 적어도 어느 하나를 포함하는, 분리 메모리 관리 방법.
  3. 제 2항에 있어서,
    상기 메모리 오퍼레이션 중 상기 적재 오퍼레이션은 리모트 메모리에서 로컬 메모리로 적어도 어느 하나 이상의 메모리 페이지를 가져오는 오퍼레이션이되,
    상기 메모리 블록은 복수 개의 상기 메모리 페이지로 구성되는, 분리 메모리 관리 방법.
  4. 제 3 항에 있어서,
    상기 로컬 메모리로 가져오는 메모리 페이지 수는 스트레치 오퍼레이션에 기초하여 결정되는, 분리 메모리 관리 방법.
  5. 제 4 항에 있어서,
    상기 적재 오퍼레이션에 기초하여 접근이 발생한 제 1 메모리 블록과 인접한 제 2 메모리 블록의 블록 크기 및 블록 상태가 동일한 경우, 상기 스트레치 오퍼레이션에 기초하여 상기 제 1 메모리 블록과 상기 제 1 메모리 블록을 하나의 블록으로 합치고, 상기 로컬 메모리로 가져오는, 분리 메모리 관리 방법.
  6. 제 2항에 있어서,
    상기 메모리 오퍼레이션 중 상기 저장 오퍼레이션은 로컬 메모리에서 리모트 메모리로 적어도 어느 하나 이상의 메모리 페이지를 저장하는 오퍼레이션이되,
    상기 메모리 블록은 복수 개의 상기 메모리 페이지로 구성되는, 분리 메모리 관리 방법.
  7. 제 6 항에 있어서,
    상기 리모트 메모리로 저장하는 메모리 페이지 수는 리듀스 오퍼레이션에 기초하여 결정되는, 분리 메모리 관리 방법.
  8. 제 7 항에 있어서,
    상기 저장 오퍼레이션에 기초하여 상기 메모리 블록에 저장이 발생하는 경우, 상기 메모리 블록의 연속성 점수를 판단하고,
    상기 판단된 연속성 점수를 임계값과 비교하여 상기 메모리 블록의 크기를 유지할지 여부를 결정하는, 분리 메모리 관리 방법.
  9. 제 8항에 있어서,
    상기 연속성 점수가 상기 임계값 이상인 경우, 상기 메모리 블록의 크기를 유지하고,
    상기 연속성 점수가 상기 임계값 미만인 경우, 상기 메모리 블록을 상기 리듀스 오퍼레이션에 기초하여 최소 단위 블록으로 분리하여 상기 리모트 메모리에 저장하는, 분리 메모리 관리 방법.
  10. 제 9 항에 있어서,
    상기 최소 단위 블록은 하나의 메모리 페이지로 구성되는, 분리 메모리 관리 방법.
  11. 제 1 항에 있어서,
    상기 메모리 블록의 상태 및 메모리 블록의 위치는 디스크립터에 기초하여 관리되는, 분리 메모리 관리 방법.
  12. 제 11 항에 있어서,
    상기 디스크립터는
    상기 메모리 블록이 로컬 메모리 또는 리모트 메모리에 존재하는지 여부, 상기 메모리 블록이 주소 공간에 사상되어 있는지 여부 및 상기 메모리 블록의 크기에 대한 정보 중 적어도 어느 하나 이상을 포함하는, 분리 메모리 관리 방법.
  13. 제 1 항에 있어서,
    상기 메모리 블록은 메모리 페이지의
    Figure pat00001
    배 크기를 가지면서 동적으로 변화하되, n은 상수인, 메모리 관리 방법.
  14. 제 13 항에 있어서,
    상기 메모리 블록의 시작 주소는 상기 메모리 블록의 크기에 기초하여 다르게 설정되는, 메모리 관리 방법.
  15. 가상화 시스템에서 분리 메모리를 관리하는 장치에 있어서,
    메모리; 및
    상기 메모리를 제어하는 프로세서를 포함하되,
    상기 프로세서는,
    가상 머신 노드에서 가상 머신의 동작에 기초하여 메모리 접근을 디텍트하고,
    상기 메모리 접근 패턴을 고려하여 메모리 블록을 통해 메모리 오퍼레이션을 수행하되,
    상기 메모리 접근 패턴은 상기 가싱 머신의 상기 동작 수행 시간에 기초하여 다르게 설정되고,
    상기 메모리 블록은 상기 메모리 접근 패턴에 기초하여 동적으로 크기가 변화하는, 분리 메모리를 관리하는 장치.
  16. 제 15 항에 있어서,
    상기 메모리는 로컬 메모리 및 리모트 메모리를 포함하는, 분리 메모리를 관리하는 장치.
  17. 제 15 항에 있어서,
    상기 프로세서가 수행하는 상기 메모리 오퍼레이션은 적재 오퍼레이션, 저장 오퍼레이션 및 가상 머신 물리 주소의 매핑 오퍼레이션 및 상기 가상 머신 물리 주소의 언매핑 오퍼레이션 중 적어도 어느 하나를 포함하는, 분리 메모리를 관리하는 장치.
  18. 분리 메모리를 관리하는 가상화 시스템에서,
    가상 머신의 동작을 제어하는 가상 머신 노드; 및
    메모리 동작을 제어하는 메모리 노드;를 포함하되,
    상기 가상 머신 노드의 분리 메모리 관리자는 상기 가상 머신의 동작에 기초하여 메모리 접근을 디텍트하고,
    상기 메모리 접근 패턴을 고려하여 메모리 블록을 통해 메모리 오퍼레이션을 수행하되,
    상기 메모리 접근 패턴은 상기 가싱 머신의 상기 동작 수행 시간에 기초하여 다르게 설정되고,
    상기 메모리 블록은 상기 메모리 접근 패턴에 기초하여 동적으로 크기가 변화하는, 분리 메모리를 관리하는 가상화 시스템.
  19. 제 18항에 있어서,
    상기 분리 메모리 관리자가 수행하는 상기 메모리 오퍼레이션은 적재 오퍼레이션, 저장 오퍼레이션 및 가상 머신 물리 주소의 매핑 오퍼레이션 및 상기 가상 머신 물리 주소의 언매핑 오퍼레이션 중 적어도 어느 하나를 포함하는, 분리 메모리를 관리하는 가상화 시스템.
KR1020180110719A 2017-11-09 2018-09-17 분리 메모리 관리 방법 및 장치 KR102441992B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US16/185,833 US10789090B2 (en) 2017-11-09 2018-11-09 Method and apparatus for managing disaggregated memory

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020170148511 2017-11-09
KR20170148511 2017-11-09

Publications (2)

Publication Number Publication Date
KR20190053086A true KR20190053086A (ko) 2019-05-17
KR102441992B1 KR102441992B1 (ko) 2022-09-08

Family

ID=66678432

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180110719A KR102441992B1 (ko) 2017-11-09 2018-09-17 분리 메모리 관리 방법 및 장치

Country Status (1)

Country Link
KR (1) KR102441992B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210155059A (ko) * 2020-06-15 2021-12-22 한국전자통신연구원 메모리 분리 시스템에서 메모리 관리 방법 및 장치

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12007915B1 (en) 2023-08-10 2024-06-11 Morgan Stanley Services Group Inc. Field programmable gate array-based low latency disaggregated system orchestrator

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080033464A (ko) * 2005-08-03 2008-04-16 쌘디스크 코포레이션 블록 관리를 가지는 비휘발성 메모리
US20110167239A1 (en) * 2010-01-05 2011-07-07 Deric Horn Methods and apparatuses for usage based allocation block size tuning
KR20150097981A (ko) * 2014-02-19 2015-08-27 한국과학기술원 가상화 시스템에서 메모리 조정방법
US20150378892A1 (en) * 2013-09-26 2015-12-31 Hitachi, Ltd. Computer system and memory allocation adjustment method for computer system
KR20170058676A (ko) * 2015-11-19 2017-05-29 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080033464A (ko) * 2005-08-03 2008-04-16 쌘디스크 코포레이션 블록 관리를 가지는 비휘발성 메모리
US20110167239A1 (en) * 2010-01-05 2011-07-07 Deric Horn Methods and apparatuses for usage based allocation block size tuning
US20150378892A1 (en) * 2013-09-26 2015-12-31 Hitachi, Ltd. Computer system and memory allocation adjustment method for computer system
KR20150097981A (ko) * 2014-02-19 2015-08-27 한국과학기술원 가상화 시스템에서 메모리 조정방법
KR20170058676A (ko) * 2015-11-19 2017-05-29 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작방법

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210155059A (ko) * 2020-06-15 2021-12-22 한국전자통신연구원 메모리 분리 시스템에서 메모리 관리 방법 및 장치
US11586549B2 (en) 2020-06-15 2023-02-21 Electronics And Telecommunications Research Institute Method and apparatus for managing memory in memory disaggregation system
US11947463B2 (en) 2020-06-15 2024-04-02 Electronics And Telecommunications Research Institute Method and apparatus for managing memory in memory disaggregation system

Also Published As

Publication number Publication date
KR102441992B1 (ko) 2022-09-08

Similar Documents

Publication Publication Date Title
US10789090B2 (en) Method and apparatus for managing disaggregated memory
KR102383900B1 (ko) 타겟 메모리 어드레스에 대응한 메모리 속성 유닛의 영역을 식별하는 영역식별 연산
JP6696987B2 (ja) 仮想アドレスを使用してアクセスされるキャッシュ
US9495294B2 (en) Enhancing data processing performance by cache management of fingerprint index
US9639476B2 (en) Merged TLB structure for multiple sequential address translations
US8793528B2 (en) Dynamic hypervisor relocation
US9189360B2 (en) Processor that records tracing data in non contiguous system memory slices
US9063786B2 (en) Preferential CPU utilization for tasks
JP2018504694A5 (ko)
US20080086598A1 (en) System and method for establishing cache priority for critical data structures of an application
US20150113228A1 (en) Processor, cache memory of the processor and control method of the processor
JP2008502069A (ja) メモリ・キャッシュ制御装置及びそのためのコヒーレンシ動作を実行する方法
US9875191B2 (en) Electronic device having scratchpad memory and management method for scratchpad memory
US20150149751A1 (en) Cpu-based measured boot
KR20140147017A (ko) 라이트 백 캐싱 환경에서 예상하지 못한 셧다운으로부터 복구하기 위한 시스템 및 방법
KR102441992B1 (ko) 분리 메모리 관리 방법 및 장치
US8751724B2 (en) Dynamic memory reconfiguration to delay performance overhead
WO2014003707A2 (en) Hardware-based accelerator for managing copy-on-write
US10083135B2 (en) Cooperative overlay
US9645825B2 (en) Instruction cache with access locking
US9542318B2 (en) Temporary cache memory eviction
US10579519B2 (en) Interleaved access of memory
CN106547619B (zh) 多用户存储管理方法和系统
US8521951B2 (en) Content addressable memory augmented memory
US11157319B2 (en) Processor with processor memory pairs for improved process switching and methods thereof

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant