KR102441992B1 - Method and apparatus for managing disaggregated memory - Google Patents

Method and apparatus for managing disaggregated memory Download PDF

Info

Publication number
KR102441992B1
KR102441992B1 KR1020180110719A KR20180110719A KR102441992B1 KR 102441992 B1 KR102441992 B1 KR 102441992B1 KR 1020180110719 A KR1020180110719 A KR 1020180110719A KR 20180110719 A KR20180110719 A KR 20180110719A KR 102441992 B1 KR102441992 B1 KR 102441992B1
Authority
KR
South Korea
Prior art keywords
memory
block
virtual machine
size
memory block
Prior art date
Application number
KR1020180110719A
Other languages
Korean (ko)
Other versions
KR20190053086A (en
Inventor
고광원
김강호
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to US16/185,833 priority Critical patent/US10789090B2/en
Publication of KR20190053086A publication Critical patent/KR20190053086A/en
Application granted granted Critical
Publication of KR102441992B1 publication Critical patent/KR102441992B1/en

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

Abstract

본 명세서는 가상화 시스템에서 분리 메모리를 관리하는 방법을 제공할 수 있다. 이때, 분리 메모리를 관리하는 방법은 가상 머신 노드에서 가상 머신의 동작에 기초하여 메모리 접근을 디텍트하는 단계, 메모리 접근 패턴을 고려하여 메모리 블록을 통해 메모리 오퍼레이션을 수행하는 단계를 포함할 수 있다. 이때, 메모리 접근 패턴은 가상 머신의 동작 수행 시간에 기초하여 다르게 설정되고, 메모리 블록은 메모리 접근 패턴에 기초하여 동적으로 크기가 변화할 수 있다.The present specification may provide a method for managing separate memory in a virtualization system. In this case, the method of managing the separated memory may include detecting memory access based on the operation of the virtual machine in the virtual machine node, and performing a memory operation through the memory block in consideration of the memory access pattern. In this case, the memory access pattern may be set differently based on the operation execution time of the virtual machine, and the size of the memory block may be dynamically changed based on the memory access pattern.

Description

분리 메모리 관리 방법 및 장치 {Method and apparatus for managing disaggregated memory}Method and apparatus for managing disaggregated memory}

본 발명은, 분리 메모리를 제공하는 가상화 시스템에서 메모리를 동적으로 분석하여 효과적으로 운영하기 위한, 공간적 지역성을 이용한 분리 메모리 관리 방법 및 장치에 관한 것이다.The present invention relates to a method and apparatus for managing a separate memory using spatial locality, for dynamically analyzing and effectively operating a memory in a virtualization system that provides a separate memory.

분리 메모리를 제공하는 가상화 시스템은 가상머신이 수행함에 있어서 요구되는 메모리의 부분집합을 해당 가상머신을 운영하는 물리머신이 아닌 I/O(Input/Output)로 연결되어 있는 다른 시스템에 위치시키는 시스템과 또한 블록어드레싱을 지원하는 비휘발성 메모리들을 이용하는 가상화 시스템을 의미한다. 이는 최근 인메모리 컴퓨팅 환경이 대중화되면서 높아진 메모리 용량을 기존의 대중화된 시스템을 이용하여 제공할 수 있는 기회를 제공한다. 이와 같은 시스템을 운영함에 있어서 갖게 되는 성능저하요소의 극복은 해당 시스템의 대중화를 위해 필수적이다.A virtualization system that provides separate memory is a system that places a subset of memory required for a virtual machine to perform in another system connected by I/O (Input/Output) rather than the physical machine that operates the virtual machine. It also refers to a virtualization system using non-volatile memories supporting block addressing. This provides an opportunity to provide an increased memory capacity using an existing popularized system as the in-memory computing environment has recently become popular. Overcoming the performance degradation factors in operating such a system is essential for popularization of the system.

이와 같은 메모리 분리 시스템에서 성능을 높이는 대표적인 방법은 미리 사용할 메모리 페이지를 리모트 메모리 노드로부터 가져오는 것이다. 하지만 이와 같은 응용프로그램들을 대상 메모리 시스템에서 운영할 때, 해당 메모리 접근 패턴을 고려하지 않고 리모트 메모리 페이징 시스템에서 요구되는 메모리를 페이지 단위로 전송을 이용하여 사용되고 있다. 또한 단순히 모든 메모리의 접근에 대해서 남용되어 요청될 경우 로컬머신의 메모리와 해당 머신들을 연결하는 연결망의 오용으로 성능저하를 갖게 된다. 이를 위해서 마이크로아키텍처에서 널리 사용되는 응용프로그램의 메모리 접근 패턴에 기반한 프리페칭이 요구된다. 하지만 응용프로그램들이 갖는 메모리 접근 패턴은 응용, 시기, 위치, 그리고 로컬메모리 용량에 따라 달라지기 때문에 정적시간의 프로파일링은 시스템의 최적화에 있어 한계를 지닌다.A representative method for improving performance in such a memory separation system is to retrieve memory pages to be used in advance from a remote memory node. However, when such application programs are operated in the target memory system, the memory required by the remote memory paging system is transferred by page unit without considering the corresponding memory access pattern. In addition, if the request is simply abused for all memory accesses, performance will be degraded due to misuse of the memory of the local machine and the network connecting the machines. For this, prefetching is required based on the memory access pattern of applications widely used in microarchitecture. However, since the memory access patterns of applications vary depending on the application, timing, location, and local memory capacity, static time profiling has limitations in system optimization.

본 발명은 분리 메모리를 지원하는 가상화 시스템에서 메모리 접근 패턴을 동적으로 판단하여 리모트 메모리 접근의 수를 줄임으로 시스템의 성능 향상을 목적으로 한다.An object of the present invention is to improve system performance by reducing the number of remote memory accesses by dynamically determining a memory access pattern in a virtualization system supporting separate memory.

본 발명은 상술한 바를 통해 발생하는 메모리 접근을 줄임으로써 성능 저하를 줄이는 방법을 제공하는데 목적이 있다.An object of the present invention is to provide a method for reducing performance degradation by reducing memory accesses that occur through the above description.

본 발명은 상술한 바를 통해 노드 간의 연결에 있어서 사용하는 메모리 대역폭을 오용하지 않도록 하여 실제 메모리 접근에서 발생하는 지연시간을 줄이는 방법을 제공하는데 목적이 있다.An object of the present invention is to provide a method of reducing delay time occurring in actual memory access by preventing misuse of a memory bandwidth used in a connection between nodes through the above description.

본 발명은 상술한 바를 위해 가상머신의 메모리 접근에 대한 동적 프로파일링을 제공하는데 목적이 있다.An object of the present invention is to provide dynamic profiling of a memory access of a virtual machine for the above purpose.

본 발명에서 이루고자 하는 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급하지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.The technical problems to be achieved in the present invention are not limited to the technical problems mentioned above, and other technical problems not mentioned will be clearly understood by those of ordinary skill in the art to which the present invention belongs from the description below. will be able

본 발명의 일 실시예에 따라, 가상화 시스템에서 분리 메모리를 관리하는 방법을 제공할 수 있다. 이때, 분리 메모리를 관리하는 방법은 가상 머신 노드에서 가상 머신의 동작에 기초하여 메모리 접근을 디텍트하는 단계, 메모리 접근 패턴을 고려하여 메모리 블록을 통해 메모리 오퍼레이션을 수행하는 단계를 포함할 수 있다. 이때, 메모리 접근 패턴은 가상 머신의 동작 수행 시간에 기초하여 다르게 설정되고, 메모리 블록은 메모리 접근 패턴에 기초하여 동적으로 크기가 변화할 수 있다.According to an embodiment of the present invention, a method for managing a separate memory in a virtualization system may be provided. In this case, the method of managing the separated memory may include detecting memory access based on the operation of the virtual machine in the virtual machine node, and performing a memory operation through the memory block in consideration of the memory access pattern. In this case, the memory access pattern may be set differently based on the operation execution time of the virtual machine, and the size of the memory block may be dynamically changed based on the memory access pattern.

이때, 메모리 오퍼레이션은 적재 오퍼레이션, 저장 오퍼레이션 및 가상 머신 물리 주소의 매핑 오퍼레이션 및 상기 가상 머신 물리 주소의 언매핑 오퍼레이션 중 적어도 어느 하나를 포함할 수 있다.In this case, the memory operation may include at least one of a load operation, a store operation, a mapping operation of a virtual machine physical address, and an unmapping operation of the virtual machine physical address.

또한, 본 발명의 일 실시예에 따라, 가상화 시스템에서 분리 메모리를 관리하는 장치에 있어서, 메모리 및 메모리를 제어하는 프로세서를 포함할 수 있다. 이때, 프로세서는 가상 머신 노드에서 가상 머신의 동작에 기초하여 메모리 접근을 디텍트하고, 메모리 접근 패턴을 고려하여 메모리 블록을 통해 메모리 오퍼레이션을 수행할 수 있다. 이때, 메모리 접근 패턴은 가상 머신의 동작 수행 시간에 기초하여 다르게 설정되고, 메모리 블록은 메모리 접근 패턴에 기초하여 동적으로 크기가 변화할 수 있다.Also, according to an embodiment of the present invention, an apparatus for managing a separate memory in a virtualization system may include a memory and a processor for controlling the memory. In this case, the processor may detect a memory access based on the operation of the virtual machine in the virtual machine node, and perform a memory operation through the memory block in consideration of the memory access pattern. In this case, the memory access pattern may be set differently based on the operation execution time of the virtual machine, and the size of the memory block may be dynamically changed based on the memory access pattern.

이때, 메모리는 로컬 메모리 및 리모트 메모리를 포함할 수 있다.In this case, the memory may include a local memory and a remote memory.

또한, 프로세서가 수행하는 메모리 오퍼레이션은 적재 오퍼레이션, 저장 오퍼레이션 및 가상 머신 물리 주소의 매핑 오퍼레이션 및 상기 가상 머신 물리 주소의 언매핑 오퍼레이션 중 적어도 어느 하나를 포함할 수 있다.In addition, the memory operation performed by the processor may include at least one of a load operation, a store operation, a mapping operation of a virtual machine physical address, and an unmapping operation of the virtual machine physical address.

또한, 본 발명의 일 실시예에 따라, 분리 메모리를 관리하는 가상화 시스템은 가상 머신의 동작을 제어하는 가상 머신 노드 및 메모리 동작을 제어하는 메모리 노드를 포함할 수 있다. 이때, 가상 머신 노드의 분리 메모리 관리자는 가상 머신의 동작에 기초하여 메모리 접근을 디텍트하고, 메모리 접근 패턴을 고려하여 메모리 블록을 통해 메모리 오퍼레이션을 수행하되, 메모리 접근 패턴은 가상 머신의 동작 수행 시간에 기초하여 다르게 설정되고, 메모리 블록은 메모리 접근 패턴에 기초하여 동적으로 크기가 변화할 수 있다.In addition, according to an embodiment of the present invention, the virtualization system for managing the separate memory may include a virtual machine node for controlling the operation of the virtual machine and a memory node for controlling the memory operation. In this case, the separated memory manager of the virtual machine node detects memory access based on the operation of the virtual machine, and performs a memory operation through the memory block in consideration of the memory access pattern, but the memory access pattern is the operation execution time of the virtual machine is set differently based on , and the size of the memory block may be dynamically changed based on a memory access pattern.

또한, 분리 메모리 관리자가 수행하는 메모리 오퍼레이션은 적재 오퍼레이션, 저장 오퍼레이션 및 가상 머신 물리 주소의 매핑 오퍼레이션 및 상기 가상 머신 물리 주소의 언매핑 오퍼레이션 중 적어도 어느 하나를 포함할 수 있다.In addition, the memory operation performed by the separate memory manager may include at least one of a load operation, a store operation, a mapping operation of a virtual machine physical address, and an unmapping operation of the virtual machine physical address.

다음의 사항은 분리 메모리를 관리하는 방법, 장치 및 시스템에 공통으로 적용될 수 있다.The following points may be commonly applied to methods, devices, and systems for managing separate memories.

본 발명의 일 실시예에 따라, 메모리 오퍼레이션 중 적재 오퍼레이션은 리모트 메모리에서 로컬 메모리로 적어도 어느 하나 이상의 메모리 페이지를 가져오는 오퍼레이션일 수 있다. 이때, 메모리 블록은 복수 개의 메모리 페이지로 구성될 수 있다.According to an embodiment of the present invention, a load operation among memory operations may be an operation of bringing at least one or more memory pages from a remote memory to a local memory. In this case, the memory block may be composed of a plurality of memory pages.

이때, 본 발명의 일 실시예에 따라, 로컬 메모리로 가져오는 메모리 페이지 수는 스트레치 오퍼레이션에 기초하여 결정될 수 있다.In this case, according to an embodiment of the present invention, the number of memory pages brought into the local memory may be determined based on a stretch operation.

또한, 본 발명의 일 실시예에 따라, 적재 오퍼레이션에 기초하여 접근이 발생한 제 1 메모리 블록과 인접한 제 2 메모리 블록의 블록 크기 및 블록 상태가 동일한 경우, 스트레치 오퍼레이션에 기초하여 제 1 메모리 블록과 제 2 메모리 블록을 하나의 블록으로 합치고, 로컬 메모리로 가져올 수 있다.Also, according to an embodiment of the present invention, when the block size and block state of a second memory block adjacent to a first memory block in which an access occurs based on a load operation is the same, the first memory block and the second memory block based on a stretch operation 2 memory blocks can be combined into one block and brought into local memory.

또한, 본 발명의 일 실시예에 따라, 메모리 오퍼레이션 중 저장 오퍼레이션은 로컬 메모리에서 리모트 메모리로 적어도 어느 하나 이상의 메모리 페이지를 저장하는 오퍼레이션일 수 있다. 이때, 메모리 블록은 복수 개의 메모리 페이지로 구성될 수 있다.Also, according to an embodiment of the present invention, the storage operation among the memory operations may be an operation of storing at least one or more memory pages from the local memory to the remote memory. In this case, the memory block may be composed of a plurality of memory pages.

또한, 본 발명의 일 실시예에 따라, 리모트 메모리로 저장하는 메모리 페이지 수는 리듀스 오퍼레이션에 기초하여 결정될 수 있다.Also, according to an embodiment of the present invention, the number of memory pages to be stored in the remote memory may be determined based on a reduce operation.

또한, 본 발명의 일 실시예에 따라, 저장 오퍼레이션에 기초하여 메모리 블록에 저장이 발생하는 경우, 메모리 블록의 연속성 점수를 판단하고, 판단된 연속성 점수를 임계값과 비교하여 메모리 블록의 크기를 유지할지 여부를 결정할 수 있다.Further, according to an embodiment of the present invention, when a storage occurs in a memory block based on a storage operation, the continuity score of the memory block is determined, and the size of the memory block is maintained by comparing the determined continuity score with a threshold value. You can decide whether to

이때, 본 발명의 일 실시예에 따라, 연속성 점수가 임계값 이상인 경우, 메모리 블록의 크기를 유지하고, 연속성 점수가 임계값 미만인 경우, 메모리 블록을 리듀스 오퍼레이션에 기초하여 최소 단위 블록으로 분리하여 리모트 메모리에 저장할 수 있다.At this time, according to an embodiment of the present invention, when the continuity score is greater than or equal to the threshold, the size of the memory block is maintained, and when the continuity score is less than the threshold, the memory block is divided into minimum unit blocks based on a reduce operation. It can be stored in remote memory.

이때, 본 발명의 일 실시예에 따라, 최소 단위 블록은 하나의 메모리 페이지로 구성될 수 있다.In this case, according to an embodiment of the present invention, the minimum unit block may be composed of one memory page.

또한, 본 발명의 일 실시예에 따라, 메모리 블록의 상태 및 메모리 블록의 위치는 디스크립터에 기초하여 관리될 수 있다.Also, according to an embodiment of the present invention, the state of the memory block and the location of the memory block may be managed based on the descriptor.

이때, 본 발명의 일 실시예에 따라, 디스크립터는 메모리 블록이 로컬 메모리 또는 리모트 메모리에 존재하는지 여부, 메모리 블록이 주소 공간에 사상되어 있는지 여부 및 메모리 블록의 크기에 대한 정보 중 적어도 어느 하나 이상을 포함할 수 있다.At this time, according to an embodiment of the present invention, the descriptor stores at least any one or more of information on whether the memory block exists in the local memory or the remote memory, whether the memory block is mapped in the address space, and the size of the memory block. may include

또한, 본 발명의 일 실시예에 따라, 메모리 블록은 메모리 페이지의 2^n배 크기를 가지면서 동적으로 변화할 수 있다. 이때, n은 상수일 수 있다.Also, according to an embodiment of the present invention, a memory block may be dynamically changed while having a size 2^n times that of a memory page. In this case, n may be a constant.

이때, 본 발명의 일 실시예에 따라, 메모리 블록의 시작 주소는 메모리 블록의 크기에 기초하여 다르게 설정될 수 있다.In this case, according to an embodiment of the present invention, the start address of the memory block may be set differently based on the size of the memory block.

본 발명에 따르면, 분리 메모리를 지원하는 가상화 시스템에서 메모리 접근 패턴을 동적으로 판단하여 리모트 메모리 접근의 수를 줄임으로 시스템의 성능을 향상시킬 수 있다.According to the present invention, by dynamically determining a memory access pattern in a virtualization system supporting a separate memory, the number of remote memory accesses can be reduced, thereby improving system performance.

본 발명에 따르면, 상술한 바를 통해 발생하는 메모리 접근을 줄임으로써 성능 저하를 줄이는 방법을 제공할 수 있다.According to the present invention, it is possible to provide a method for reducing performance degradation by reducing memory accesses that occur through the above description.

본 발명에 따르면, 상술한 바를 통해 노드 간의 연결에 있어서 사용하는 메모리 대역폭을 오용하지 않도록 하여 실제 메모리 접근에서 발생하는 지연시간을 줄이는 방법을 제공할 수 있다.According to the present invention, as described above, it is possible to provide a method of reducing the delay time occurring in actual memory access by preventing misuse of the memory bandwidth used in the connection between nodes.

본 발명에 따르면, 상술한 바를 위해 가상머신의 메모리 접근에 대한 동적 프로파일링을 제공할 수 있다.According to the present invention, it is possible to provide dynamic profiling of the memory access of the virtual machine for the above purpose.

본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.The effects obtainable in the present invention are not limited to the above-mentioned effects, and other effects not mentioned may be clearly understood by those of ordinary skill in the art from the following description. will be.

도 1은 분리 메모리 관리자 구조를 나타낸 도면이다.
도 2는 본 발명의 실시예에 따른, 탄력적 가상 메모리 블록을 구성하는 방법을 나타낸 도면이다.
도 3은 본 발명의 실시예에 따른, 스트레치 오퍼레이션의 수도 코드를 나타낸 도면이다.
도 4는 본 발명의 실시예에 따른, 리듀스 오퍼레이션의 수도 코드를 나타낸 도면이다.
도 5는 본 발명의 실시예에 따른, 두 가상 머신 프로세서 간 동시 메모리 접근 방법을 나타낸 도면이다.
도 6은 본 발명의 실시예에 따른, 스트레치 오퍼레이션 메모리 접근 처리의 동시성 문제를 해결하는 방법을 나타낸 도면이다.
도 7은 본 발명의 실시예에 따른, 블록의 동적 변화를 고려한 락킹 프로토콜을 나타낸 도면이다.
도 8은 본 발명의 일 실시예에 따른, 분리 메모리 관리 방법을 나타낸 도면이다.
도 9는 본 발명의 일 실시예에 따른, 분리 메모리 관리를 수행하는 장치를 나타낸 도면이다.
1 is a diagram illustrating a structure of a separate memory manager.
2 is a diagram illustrating a method of configuring an elastic virtual memory block according to an embodiment of the present invention.
3 is a diagram illustrating a pseudo code of a stretch operation according to an embodiment of the present invention.
4 is a diagram illustrating a capital code of a reduce operation according to an embodiment of the present invention.
5 is a diagram illustrating a simultaneous memory access method between two virtual machine processors according to an embodiment of the present invention.
6 is a diagram illustrating a method for solving a concurrency problem in a stretch operation memory access processing according to an embodiment of the present invention.
7 is a diagram illustrating a locking protocol in consideration of dynamic change of blocks according to an embodiment of the present invention.
8 is a diagram illustrating a separate memory management method according to an embodiment of the present invention.
9 is a diagram illustrating an apparatus for performing separate memory management according to an embodiment of the present invention.

이하에서는 첨부한 도면을 참고로 하여 본 발명의 실시 예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나, 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다.Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings so that those of ordinary skill in the art to which the present invention pertains can easily implement them. However, the present invention may be embodied in various different forms and is not limited to the embodiments described herein.

본 발명의 실시 예를 설명함에 있어서 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그에 대한 상세한 설명은 생략한다. 그리고, 도면에서 본 발명에 대한 설명과 관계없는 부분은 생략하였으며, 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.In describing an embodiment of the present invention, if it is determined that a detailed description of a well-known configuration or function may obscure the gist of the present invention, a detailed description thereof will be omitted. And, in the drawings, parts not related to the description of the present invention are omitted, and similar reference numerals are attached to similar parts.

본 발명에 있어서, 어떤 구성요소가 다른 구성요소와 "연결", "결합" 또는 "접속"되어 있다고 할 때, 이는 직접적인 연결관계뿐만 아니라, 그 중간에 또 다른 구성요소가 존재하는 간접적인 연결관계도 포함할 수 있다. 또한 어떤 구성요소가 다른 구성요소를 "포함한다" 또는 "가진다"고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 배제하는 것이 아니라 또 다른 구성요소를 더 포함할 수 있는 것을 의미한다.In the present invention, when it is said that a certain element is "connected", "coupled" or "connected" with another element, it is not only a direct connection relationship, but also an indirect connection relationship in which another element exists in the middle. may also include. Also, when it is said that a component includes "includes" or "has" another component, it means that another component may be further included without excluding other components unless otherwise stated. .

본 발명에 있어서, 제1, 제2 등의 용어는 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용되며, 특별히 언급되지 않는 한 구성요소들간의 순서 또는 중요도 등을 한정하지 않는다. 따라서, 본 발명의 범위 내에서 일 실시 예에서의 제1 구성요소는 다른 실시 예에서 제2 구성요소라고 칭할 수도 있고, 마찬가지로 일 실시 예에서의 제2 구성요소를 다른 실시 예에서 제1 구성요소라고 칭할 수도 있다.In the present invention, terms such as first, second, etc. are used only for the purpose of distinguishing one component from other components, and unless otherwise specified, the order or importance of the components is not limited. Therefore, within the scope of the present invention, a first component in one embodiment may be referred to as a second component in another embodiment, and similarly, a second component in one embodiment is referred to as a first component in another embodiment. can also be called

본 발명에 있어서, 서로 구별되는 구성요소들은 각각의 특징을 명확하게 설명하기 위함이며, 구성요소들이 반드시 분리되는 것을 의미하지는 않는다. 즉, 복수의 구성요소가 통합되어 하나의 하드웨어 또는 소프트웨어 단위로 이루어질 수도 있고, 하나의 구성요소가 분산되어 복수의 하드웨어 또는 소프트웨어 단위로 이루어질 수도 있다. 따라서, 별도로 언급하지 않더라도 이와 같이 통합된 또는 분산된 실시 예도 본 발명의 범위에 포함된다.In the present invention, the components that are distinguished from each other are for clearly explaining each characteristic, and do not necessarily mean that the components are separated. That is, a plurality of components may be integrated to form one hardware or software unit, or one component may be distributed to form a plurality of hardware or software units. Accordingly, even if not specifically mentioned, such integrated or dispersed embodiments are also included in the scope of the present invention.

본 발명에 있어서, 다양한 실시 예에서 설명하는 구성요소들이 반드시 필수적인 구성요소들은 의미하는 것은 아니며, 일부는 선택적인 구성요소일 수 있다. 따라서, 일 실시 예에서 설명하는 구성요소들의 부분집합으로 구성되는 실시예도 본 발명의 범위에 포함된다. 또한, 다양한 실시 예에서 설명하는 구성요소들에 추가적으로 다른 구성요소를 포함하는 실시 예도 본 발명의 범위에 포함된다.In the present invention, components described in various embodiments do not necessarily mean essential components, and some may be optional components. Accordingly, an embodiment composed of a subset of components described in one embodiment is also included in the scope of the present invention. In addition, embodiments including other components in addition to the components described in various embodiments are also included in the scope of the present invention.

도 1은 분리 메모리 관리자 구조를 나타낸 도면이다. 1 is a diagram illustrating a structure of a separate memory manager.

도 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)가 사용하는 메모리를 확인하여 이를 로컬 메모리에 적재하고, 사용하지 않는 메모리는 리모트 메모리에 저장할 수 있다. Referring to FIG. 1 , a virtualization system having a separate memory may be provided. More specifically, a separate memory manager 118 may exist in a virtualization system. In this case, the detached memory manager 118 may process remote memory access that occurs in the virtual machine node 110 . For example, when the virtual machine node 110 attempts to access the remote memory, the detached memory manager 118 may load the remote memory into the local memory. Additionally, the detached memory manager 118 may store local memory as remote memory. For example, the detached memory manager 118 may store the first memory page 121 from the local memory to the remote memory based on the operation of the virtual machine node 110 . In this case, the first memory page 121 may be any memory page in the local memory, and is not limited to the above-described embodiment. That is, the detached memory manager 118 may store the local memory as a remote memory. Also, the detached memory manager 118 may load the second memory page 122 in the remote memory into the local memory based on the operation of the virtual machine node 110 . In this case, the second memory page 121 may be any memory page existing in the remote memory, and is not limited to the above-described embodiment. In this case, the separated memory manager 118 may map the loaded local memory to the address space used by the virtual machine node 110 , and through this, the virtual machine node 110 may use the loaded local memory. That is, the kernel or application program running on the virtual machine can access the corresponding memory. On the other hand, the separate memory manager 118 may store the memory not accessed by the virtual machine node 110 in the remote memory. That is, the memory used by the virtual machine node 110 may be checked, loaded into the local memory, and unused memory may be stored in the remote memory.

이때, 도 1을 참조하면, 커널 레벨에서의 가상 머신 노드(110)에는 가상 머신 커널 프로그램(115) 및 호스트 커널 프로그램(1160)이 존재할 수 있다. 반면, 커널 레벨에서의 메모리 노드(120)에는 메모리 노드 커널 프로그램(119)이 존재할 수 있다. 이때, 상술한 분리 메모리 관리자(118)는 호스트 커널 프로그램(116)으로 가상 머신 커널 프로그램(115)에 기초하여 리모트 메모리 접근 처리를 제어할 수 있다. 즉, 사용자 레벨에서 가상 머신 프로그램(111)에 기초하여 가상 머신 모니터(117)에 의해 가상 머신 모니터링이 수행되고, 이에 기초하여 분리 메모리 관리자(118)는 리모트 메모리 접근 처리를 수행할 수 있다.In this case, referring to FIG. 1 , the virtual machine kernel program 115 and the host kernel program 1160 may exist in the virtual machine node 110 at the kernel level. On the other hand, a memory node kernel program 119 may exist in the memory node 120 at the kernel level. In this case, the above-described separate memory manager 118 may control remote memory access processing based on the virtual machine kernel program 115 as the host kernel program 116 . That is, virtual machine monitoring is performed by the virtual machine monitor 117 based on the virtual machine program 111 at the user level, and the detached memory manager 118 may perform remote memory access processing based on this.

이때, 일 예로, 분리 메모리를 갖는 가상화 시스템에서 수반되는 리모트 메모리 접근으로 인한 성능저하가 발생할 수 있다. 보다 상세하게는, 원격 메모리 접근을 제공함에 있어서 기존의 운영체제들이 제공하는 스왑 시스템은 단순히 요구된 페이지에 대한 스왑을 통해 해당 리모트 메모리에 대한 접근 서비스를 제공할 수 있었다. 또한, 이는 IO(Input/Output) 버스에 연결된 저장 장치, IO버스에 연결된 리모트 메모리, 그리고 NVDIMM-F와 같은 NAND소자를 이용하는 메모리에서 제공하는 블록-어드레싱이 프로세서에서 요구하는 비트-어드레싱을 제공할 수 없기 때문에 문제가 발생할 수 있다.In this case, as an example, performance degradation may occur due to remote memory access involved in a virtualization system having a separate memory. More specifically, in providing remote memory access, the swap system provided by the existing operating systems could provide an access service to the corresponding remote memory simply by swapping the requested page. In addition, this means that the block-addressing provided by the storage device connected to the IO (Input/Output) bus, the remote memory connected to the IO bus, and the memory using NAND devices such as NVDIMM-F provides the bit-addressing required by the processor. Problems can arise because you cannot.

또한, 일 예로, 상술한 바와 같이, 메모리 분리 시스템에서 성능을 높이는 대표적인 방법은 미리 사용할 메모리 페이지를 리모트 메모리 노드로부터 가져 오는 것일 수 있다. 다만, 응용 프로그램들을 대상 메모리 시스템에서 운영할 때 메모리 접근 패턴을 고려하지 않고, 리모트 메모리 페이징 시스템에서 요구되는 메모리를 페이지 단위로 전송하는 경우 메모리 페이지에 대한 낭비가 발생할 수 있다. 또한, 단순히 모든 메모리의 접근에 대해서 남용되어 요청될 경우 로컬머신의 메모리와 해당 머신들을 연결하는 연결망의 오용으로 성능저하를 갖게 된다.Also, as an example, as described above, a representative method for improving performance in a memory separation system may be to bring a memory page to be used in advance from a remote memory node. However, when memory access patterns are not taken into consideration when application programs are operated in the target memory system, and memory required by the remote memory paging system is transferred in page units, waste of memory pages may occur. In addition, if the request is simply abused for all memory accesses, the performance deteriorates due to misuse of the memory of the local machine and the network connecting the machines.

이를 위해 분리 메모리를 지원하는 가상화 시스템에서 메모리 접근 패턴을 동적으로 판단하여 리모트 메모리 접근의 수를 줄임으로 시스템의 성능을 향상 시킬 수 있다. 이를 통해, 불필요한 메모리 접근을 줄이고, 성능 저하를 방지하여 노드간의 연결에 있어서 사용하는 메모리 대역폭이 오용되지 않도록 할 수 있다. 대역폭을 오용하지 않음으로 실제 접근으로 인한 메모리의 접근에서 발생하는 지연시간을 줄일 수 있다.To this end, it is possible to improve the system performance by dynamically determining the memory access pattern in a virtualization system supporting separate memory and reducing the number of remote memory accesses. Through this, it is possible to reduce unnecessary memory access and prevent performance degradation so that the memory bandwidth used in the connection between nodes is not misused. By not misusing bandwidth, it is possible to reduce the delay time caused by the memory access due to the actual access.

상술한 바를 위해서는 가상머신의 메모리 접근에 대한 프로파일링이 필요할 수 있으며, 프로 파일링은 정적 프로 파일링 및 동적 프로파일링으로 나눌 수 있다. 이때, 정적 프로파일링은 가상머신의 동작 중에 프로파일링을 하지 않기 때문에 동적인 프로파일링 비용을 줄일 수 있으나 동적으로 결정되는 메모리의 위치와 이에 따른 시간적으로 달라지는 메모리 접근 패턴을 파악하는데 한계를 갖는다.For the above, profiling of the memory access of the virtual machine may be required, and the profiling can be divided into static profiling and dynamic profiling. In this case, since static profiling does not perform profiling during operation of the virtual machine, the cost of dynamic profiling can be reduced, but there is a limitation in identifying the dynamically determined memory location and temporally changing memory access patterns.

상술한 상황을 고려하여, 가상 머신에서 수행되는 분리 메모리 관리자(118)는 가상머신의 수행시간에 관리하는 메모리의 공간적 지역성을 지속적으로 파악할 수 있다. 이를 통해, 분리 메모리 관리자는 메모리 오퍼레이션인 적재, 저장, 가상머신물리주소(Guest Physical Address, GPA)로의 매핑 및 언매핑 등을 수행할 수 있다. 이때, 분리 메모리는 상술한 동작을 수행함에 있어서 공간적 지역성을 갖는 연속된 메모리 페이지들의 집합을 단위로 동작을 수행할 수 있다.In consideration of the above situation, the separated memory manager 118 performed in the virtual machine can continuously grasp the spatial locality of the managed memory at the execution time of the virtual machine. Through this, the separate memory manager can perform memory operations such as loading, storing, mapping to a virtual machine physical address (GPA), and unmapping. In this case, the separate memory may perform the operation in units of a set of consecutive memory pages having spatial locality in performing the above-described operation.

일 예로, 도 2는 탄력적 가상 메모리 블록을 나타낸 도면이다. 도 2를 참조하면, 연속된 메모리 페이지들의 집합을 하나의 탄력적 가상메모리 블록으로 정의할 수 있다. 이때, 하나의 블록은 항상 로컬 메모리 또는 동일한 리모트 메모리에 존재하며 동일한 상태를 갖을 수 있다. 또한 해당 메모리의 크기는 동적으로 변경되며 그 크기는 마이크로아키텍쳐에서 정의하는 페이지의 2^n(n은 상수) 배의 크기를 갖을 수 있다. As an example, FIG. 2 is a diagram illustrating a flexible virtual memory block. Referring to FIG. 2 , a set of contiguous memory pages may be defined as one flexible virtual memory block. In this case, one block always exists in the local memory or the same remote memory and may have the same state. In addition, the size of the corresponding memory is dynamically changed, and the size may be 2^n (n is a constant) times the size of the page defined in the microarchitecture.

일 예로, 인텔64 컴퓨터 구조를 고려하면 4KB, 8KB, 16KB, 32KB, 64KB 등으로 증가하는 크기를 갖을 수 있다. 또한, 블록의 시작 주소는 해당 블록의 크기에 정렬된 주소를 갖을 수 있다. 즉, 4KB블록, 8KB블록, 16KB블록, 32KB블록 및 64KB 블록은 각각 11개, 12개, 13개, 14개, 15개의 LSB (Least Significant Bit)들이 0을 갖는 해당 블록의 시작주소를 갖을 수 있으며, 이를 통해 각각 구별될 수 있다. 상술한 바와 같이, 블록의 동적 크기 변경을 위해서 메모리 관리 오퍼레이션시 제공되는 정보를 기반으로 임의의 블록에 대해 크기를 늘리는 스트레치 (STRETCH) 오퍼레이션, 크기를 줄이는 리듀스 (REDUCE) 오퍼레이션이 수행될 수 있다.For example, considering the Intel 64 computer structure, the size may increase to 4 KB, 8 KB, 16 KB, 32 KB, 64 KB, or the like. Also, the start address of the block may have an address aligned with the size of the corresponding block. That is, the 4KB block, 8KB block, 16KB block, 32KB block, and 64KB block can have the start address of the corresponding block in which 11, 12, 13, 14, and 15 LSBs (Least Significant Bits) have 0, respectively. and can be distinguished from each other through this. As described above, in order to change the dynamic size of a block, a STRETCH operation to increase the size and a REDUCE operation to decrease the size of an arbitrary block may be performed based on information provided during a memory management operation. .

일 예로, 도 3은 스트레치 오퍼레이션에 대한 수도(PSEUDO) 코드를 나타낸 도면이다.As an example, FIG. 3 is a diagram illustrating a PSEUDO code for a stretch operation.

도 3을 참조하면, 스트레치 오퍼레이션은 임의의 리모트 메모리에 대한 접근을 처리할 때 리모트 메모리로부터 가져올 페이지의 수를 결정할 수 있다. 또한, 해당 오퍼레이션은 임의의 리모트 메모리에 대한 접근이 발생할 경우 수행될 수 있다. 즉, 리모트 메모리에서 로컬 메모리로 적재할 때 수행될 수 있다. 이때, 접근이 발생한 리모트 블록에 인접한 블록을 고려할 수 있다. 인접한 블록으로 정렬된 블록이 대상 블록과 같은 크기를 가지고, 동일한 상태를 가지는 경우, 두 블록에 대한 공간적 지역성이 있는 것으로 판단하여 두 블록을 하나의 블록으로 합칠 수 있다. 그 후, 분리 메모리 관리자에 의해 합쳐전 블록이 로컬 메모리에 적재될 수 있다. 이와 같이, 늘어난 블록은 새로운 메모리 접근을 갖고 있기 때문에 로컬 메모리 관리 시스템에서의 수명이 늘어날 수 있다. 즉, 인접한 블록의 크기 및 상태가 같은 경우라면 스트레치 오퍼레이션에 기초하여 블록을 하나로 합치고 로컬 메모리로 적재할 수 있다. 일 예로, 인접한 블록의 크기 및 상태가 같은 경우라면 시퀀셜 메모리 접근으로서 메모리의 크기를 키우고, 인접한 블록이 서로 무관한 경우라면 랜덤적 접근이 수행되도록 할 수 있다. Referring to FIG. 3 , the stretch operation may determine the number of pages to be fetched from the remote memory when processing access to an arbitrary remote memory. In addition, the corresponding operation may be performed when an arbitrary remote memory access occurs. That is, it can be performed when loading from remote memory to local memory. In this case, a block adjacent to the remote block in which the access has occurred may be considered. When blocks arranged as adjacent blocks have the same size as the target block and have the same state, it is determined that there is spatial locality with respect to the two blocks, and the two blocks may be combined into one block. Thereafter, the merged block can be loaded into the local memory by the separate memory manager. As such, the extended block may have a longer lifetime in the local memory management system as it has new memory accesses. That is, if the size and state of adjacent blocks are the same, blocks can be merged into one based on a stretch operation and loaded into the local memory. For example, if the size and state of adjacent blocks are the same, the size of the memory may be increased as a sequential memory access, and if the adjacent blocks are unrelated to each other, random access may be performed.

도 4는 리듀스 오퍼레이션에 대한 수도 코드를 나타낸 도면이다. 도 4를 참조하면, 리듀스 오퍼레이션은 도 3과 반대로 로컬 메모리에 존재는 블록을 대상으로 리모트 메모리로 저장될 때 수행되는 오퍼레이션일 수 있다. 일 예로, 임의의 블록에 대해서 임의의 블록에 대해서 연속성 점수를 각각의 페이지들은 1/(블록크기)의 점수를 갖는 것으로 할 수 있다. 이때, 각각의 점수를 총합하여 평가하고, 해당 블록의 연속성 점수가 임계값 이상인지 여부를 판단할 수 있다. 이때, 임계값은 기준이 되는 값으로 변경 설정될 수 있으며, 상술한 실시예로 한정되지 않는다. 4 is a diagram illustrating pseudo codes for a reduce operation. Referring to FIG. 4 , in contrast to FIG. 3 , the reduce operation may be an operation performed when a block existing in the local memory is stored as a target in the remote memory. As an example, each page may have a score of 1/(block size) as a continuity score for an arbitrary block with respect to an arbitrary block. In this case, each score may be summed up and evaluated, and it may be determined whether the continuity score of the corresponding block is equal to or greater than a threshold value. In this case, the threshold value may be changed and set to a reference value, and is not limited to the above-described embodiment.

임계점 이상일 경우에는 그대로 블록의 크기를 유지하나 만약 임계점 미만으로 낮아진 경우 해당 블록을 4KB 페이지 하나를 블록으로 하는 다수의 블록으로 완전히 나눌 수 있다. 즉, 도 2에서처럼 하나의 페이지로서 최소 단위인 4KB 블록으로 나눌 수 있다. 이와 같은 블록 크기 관리를 통해서 시퀀셜 메모리 접근에 대해서 지속적으로 블록의 크기를 증가시키고 또한 랜덤 메모리 접근에 대해서 공격적으로 블록 크기를 줄임으로써 시퀀셜 메모리 접근의 성능을 높이고 랜덤 메모리 접근에 대한 성능저하는 방지할 수 있다. If it exceeds the threshold, the size of the block is maintained as it is, but if it is lower than the threshold, the block can be completely divided into multiple blocks with one 4KB page as a block. That is, as shown in FIG. 2 , one page may be divided into 4 KB blocks, which are the minimum unit. Through such block size management, by continuously increasing the block size for sequential memory access and reducing the block size aggressively for random memory access, it is possible to increase the performance of sequential memory access and prevent performance degradation for random memory access. can

상술한 바를 위해 가상머신의 메모리에 대한 디스크립터를 이용하여 각각의 메모리 블록의 상태 및 해당 메모리 데이터의 위치 등을 관리할 수 있다. 일 예로, 디스크립터에 기초하여 임의의 가상머신물리주소 (GPA) 0x10000에서 시작하는 4KB 블록의 데이터가 로컬 메모리에 존재하는지 또는 리모트 메모리에 존재하는지를 나타낼 수 있다. 또한, 디스크립터를 통해 메모리가 주소공간에 사상되어 있는지 아닌지 등을 나타낼 수 있다. 또한, 디스크립터를 통해 공간적 지역성을 위한 블록 크기에 대한 정보를 확인할 수 있다. 또한, 디스크립터는 해당 페이지가 리모트 메모리에 존재할 때 이에 대한 접근을 처리함에 있어서 동시성 문제가 발생하지 않도록 하기 위한 동기화 메커니즘을 위한 락 변수 등을 가지고 있다. For the above, the state of each memory block and the location of the corresponding memory data may be managed by using the descriptor for the memory of the virtual machine. As an example, based on the descriptor, it may indicate whether data of a 4KB block starting at an arbitrary virtual machine physical address (GPA) 0x10000 exists in the local memory or the remote memory. In addition, it is possible to indicate whether or not the memory is mapped in the address space through the descriptor. Also, information about the block size for spatial locality can be checked through the descriptor. In addition, the descriptor has a lock variable for a synchronization mechanism to prevent a concurrency problem from occurring in handling access to the corresponding page when it exists in the remote memory.

일 예로, 도 5를 참조하면, 서로 다른 두 개의 쓰레드(vCPU0(510), vCPU1(520))에서 하나의 블록을 처리하기 위해서는 두 쓰레드(vCPU0(510), vCPU1(520)) 간의 동기화가 요구될 수 있다. 일 예로, vCPU0(510)가 먼저 메모리 블록 C에 대한 접근을 처리하기 시작했다면 vCPU1은 해당 작업을 처리할 필요가 없다. 이에 앞선 접근 처리를 기다리거나 접근 처리의 수행하여 어떠한 하나의 오퍼레이션의 수행만을 시스템에 반영해야 할 수 있다.As an example, referring to FIG. 5 , in order to process one block in two different threads (vCPU0 510 and vCPU1 520 ), synchronization between the two threads (vCPU0 510 and vCPU1 520 ) is required. can be For example, if vCPU0 510 starts processing access to memory block C first, vCPU1 does not need to process the corresponding operation. It may be necessary to wait for the access processing prior to this or perform the access processing to reflect only the execution of any one operation to the system.

이때, 일 예로, 동적으로 크기가 변하는 블록은 동기화를 위한 락 변수로서 해당 블록을 구성하는 메모리 페이지 디스크립터의 맨 앞에 존재하는 해드 (Head) 디스크립터에 존재하는 락 변수를 이용할 수 있다. 즉, 동시에 두 가상머신 프로세서에서 동일한 메모리에 접근하여 해당 메모리에 대한 처리를 수행할 경우, 블록에 속하는 디스크립터 중 해드 디스크립터에 존재하는 락을 이용하여 동기화를 수행할 수 있다. In this case, for example, a dynamically changing block may use a lock variable existing in a head descriptor existing at the front of a memory page descriptor constituting the block as a lock variable for synchronization. That is, when both virtual machine processors simultaneously access the same memory and process the corresponding memory, synchronization can be performed using a lock existing in the head descriptor among descriptors belonging to the block.

이때, 일 예로서, 도 6은 스트레치 오퍼레이션과 메모리 접근 처리의 동시성이 발생하는 경우를 나타낸 도면이다.At this time, as an example, FIG. 6 is a diagram illustrating a case in which the stretch operation and the memory access process are concurrently generated.

도 6을 참조하면, 서로 다른 두 개의 vCPU쓰레드(610, 620)에 대해서 vCPU0(610)가 접근하는 4KB 메모리 블록 D에 대한 접근 처리를 수행함과 동시에 vCPU1(620)에서 4KB 메모리 블록 C에 대해서 접근을 하며 메모리 블록 C와 메모리 블록 D를 대상으로 스트레치 오퍼레이션을 수행할 수 있다. 이때, vCPU0의 쓰레드(610)는 상술한 바에 기초하여 메모리 블록 D의 해드 디스크립터에 존재하는 락 변수를 이용할 수 있다. 반면, vCPU1의 쓰레드(620)는 메모리 블록 C의 해드 디스크립터의 락 변수를 이용할 수 있다. 즉, 스트레치 오퍼레이션과 메모리 접근이 동시에 일어나는바 어떤 동작이 수행되는지 여부에 대한 문제가 발생할 수 있다.Referring to FIG. 6 , for two different vCPU threads 610 and 620, the vCPU0 610 accesses the 4 KB memory block D, and at the same time, the vCPU1 620 accesses the 4 KB memory block C. to perform a stretch operation on memory block C and memory block D. In this case, the thread 610 of the vCPU0 may use a lock variable existing in the head descriptor of the memory block D based on the above description. On the other hand, the thread 620 of vCPU1 may use the lock variable of the head descriptor of the memory block C. That is, since the stretch operation and the memory access occur at the same time, a problem may arise as to which operation is performed.

이때, 일 예로, 상술한 도 3의 스트레치 오퍼레이션의 수도코드에 기초하면 스트레치의 대상이 되는 두 블록의 락을 소유할 수 있다. 즉, vCPU1의 쓰레드(620)는 블록 C의 해드 디스크립터의 락 변수 및 블록 D의 해드 디스크립터의 락 변수를 소유할 수 있다. In this case, as an example, based on the pseudo code of the stretch operation of FIG. 3 described above, it is possible to possess locks of two blocks to be stretched. That is, the thread 620 of vCPU1 may own the lock variable of the head descriptor of block C and the lock variable of the head descriptor of block D.

이때, 만약 vCPU0(610)가 스트레치 후에 블록 D에 대한 락을 소유하게 될 경우, 블록 D는 블록 C에 종속된 블록으로써 더 이상 메모리 접근 처리의 대상이 되지 않을 수 있다. 따라서, 상술한 바에 기초한 동기화 문제를 해결하기 위해서는 모든 블록의 크기가 아토믹 (atomic) 갱신이 가능해야 한다. At this time, if vCPU0 610 possesses a lock on block D after stretching, block D may not be subject to memory access processing anymore as a block dependent on block C. Therefore, in order to solve the synchronization problem based on the above description, the sizes of all blocks should be atomic updateable.

이를 위해서, 도 7과 같이 락킹(Locking) 프로토콜이 사용될 수 있다. 일 예로, 스트레치 오퍼레이션과 리듀스 오퍼레이션은 해당 오퍼레이션의 인풋 블록들과 아웃풋 블록들의 대상에 대해서 해당 블록들의 락을 소유한 상태에서 블록 크기를 나타내는 변수를 갱신할 수 있다. 즉, 블록 크기를 나타내는 변수를 갱신하여 크기가 일치하지 않는 경우에는 락을 해제하고, 접근을 허용하도록 함으로써 해당 블록들에 대한 접근 처리시 동시성 문제를 해결할 수 있다.For this, a locking protocol may be used as shown in FIG. 7 . As an example, the stretch operation and the reduce operation may update a variable indicating the block size in a state in which locks of the corresponding blocks are possessed with respect to the target of the input blocks and output blocks of the corresponding operation. That is, by updating the variable indicating the block size and releasing the lock when the size does not match, and allowing the access, the concurrency problem can be solved when processing access to the corresponding blocks.

상술한 바를 통해, 정적 프로파일링에서 동적으로 결정되는 메모리의 위치와 이에 따른 시간적으로 달라지는 메모리 접근 패턴을 파악하는데 한계를 극복할 수 있으며, 상술한 실시예로 한정되지 않는다.Through the above description, it is possible to overcome the limitation in recognizing the location of the memory dynamically determined in the static profiling and the memory access pattern that is changed in time according to the location, and the present invention is not limited to the above-described embodiment.

도 8은 분리 메모리 관리 방법을 나타낸 도면이다. 8 is a diagram illustrating a separate memory management method.

도 8을 참조하면 가상 머신 노드에서 가상 머신의 동작에 기초하여 메모리 접근을 디텍트할 수 있다.(S810) 이때, 도 1 내지 도 7에서 상술한 바와 같이, 분리 메모리 관리자는 가상 머신의 동작에 기초하여 메모리 접근 처리를 수행할 수 있다. 이때, 일 예로, 도 1의 가상 머신 노드, 메모리 노드 등은 논리적 구성일 수 있다. 또한, 분리 메모리 관리자도 논리적 구성일 수 있으며, 분리 메모리를 관리하는 주체를 나타내는 엔티티일 수 있다. 일 예로, 상술한 동작을 수행하는 주체는 프로세서일 수 있다. 즉, 장치 내에는 메모리 및 프로세서가 존재할 수 있으며, 프로세서는 메모리와 유기적으로 결합하여 도 1에 개시된 엔티티들에 기초하여 분리 메모리 관리 동작을 수행할 수 있다. 다만, 상술한 바 및 하기에서는 설명의 편의를 위해 각각의 노드 및 분리 메모리 관리자로 서술한다.Referring to FIG. 8 , the virtual machine node may detect memory access based on the operation of the virtual machine ( S810 ). At this time, as described above with reference to FIGS. 1 to 7 , the separate memory manager controls the operation of the virtual machine. Based on the memory access processing can be performed. In this case, as an example, the virtual machine node and the memory node of FIG. 1 may have a logical configuration. In addition, the separate memory manager may also be a logical configuration, and may be an entity representing a subject that manages the separate memory. For example, the subject performing the above-described operation may be a processor. That is, a memory and a processor may exist in the device, and the processor may organically combine with the memory to perform a separate memory management operation based on the entities illustrated in FIG. 1 . However, as described above and below, each node and separate memory manager will be described for convenience of description.

다음으로, 분리 메모리 관리자는 메모리 접근 패턴을 고려하여 메모리 블록을 통해 메모리 오퍼레이션을 수행할 수 있다.(S820) 이때, 도 1 내지 도 7에서 상술한 바와 같이, 메모리 접근 패턴은 가상 머신의 동작에 대한 수행 시간에 기초하여 다르게 설정될 수 있다. 또한, 메모리 접근 패턴은 다른 구성에 의해서도 다르게 설정될 수 있으며, 상술한 실시예로 한정되지 않는다. 분리 메모리 관리자는 상술한 메모리 패턴에 기초하여 메모리 블록을 통해 메모리 오퍼레이션을 수행할 수 있다. 이때, 메모리 블록은 연속하는 복수 개의 메모리 페이지들의 집합에 대한 단위일 수 있다. 또한, 메모리 블록의 크기는 가변적일 수 있으며, 이는 상술한 바와 같다. 또한, 메모리 오퍼레이션은 상술한 바와 같이 적재 오퍼레이션, 저장 오퍼레이션, 가상 머신 물리 주소로의 매칭 오퍼레이션 및 가상 머신 물리 주소로의 언매칭 오퍼레이션 중 적어도 하나 이상을 포함할 수 있다. 즉, 가상 머신 노드의 가상 머신 동작에 기초하여 리모트 메모리에서 메모리 블록을 로컬 메모리로 가져오는 적재 오퍼레이션이 수행될 수 있다. 또한, 가상 머신 노드의 가상 머신 동작에 기초하여 로컬 메모리에서 리모트 메모리로 메모리 블록을 저장하는 저장 오퍼레이션이 수행될 수 있다. 한편, 가상 머신 물리 주소에 기초하여 메모리를 매핑하거나 언매핑하는 오퍼레이션이 수행될 수 있으며, 상술한 실시예로 한정되지 않는다.Next, the separate memory manager may perform a memory operation through the memory block in consideration of the memory access pattern ( S820 ). At this time, as described above with reference to FIGS. 1 to 7 , the memory access pattern depends on the operation of the virtual machine. It may be set differently based on the execution time. In addition, the memory access pattern may be set differently according to other configurations, and is not limited to the above-described embodiment. The separate memory manager may perform a memory operation through the memory block based on the above-described memory pattern. In this case, the memory block may be a unit for a set of a plurality of consecutive memory pages. Also, the size of the memory block may be variable, as described above. Also, as described above, the memory operation may include at least one of a load operation, a store operation, a matching operation to a virtual machine physical address, and an unmatching operation to a virtual machine physical address. That is, a load operation for bringing a memory block from the remote memory to the local memory may be performed based on the virtual machine operation of the virtual machine node. Also, a storage operation of storing a memory block from a local memory to a remote memory may be performed based on the virtual machine operation of the virtual machine node. Meanwhile, an operation of mapping or unmapping a memory may be performed based on the virtual machine physical address, and the embodiment is not limited thereto.

이때, 일 예로, 수행되는 오퍼레이션에 기초하여 서로 다른 추가적인 오퍼레이션이 수행될 수 있다.(S830) 이때, 도 1 내지 도 7에서 상술한 바와 같이, 적재 오퍼레이션이 수행되는 경우에는 접근한 메모리 블록과 인접한 메모리 블록의 크기 및 상태가 동일하면 스트레치 오퍼레이션에 기초하여 블록의 크기를 합칠 수 있고, 합쳐진 메모리 블록을 로컬 메모리로 가져올 수 있으며, 이는 상술한 바와 같다.(S840) In this case, as an example, different additional operations may be performed based on the performed operation. (S830) At this time, as described above with reference to FIGS. 1 to 7 , when the load operation is performed, the memory block adjacent to the accessed memory block is performed. If the size and state of the memory blocks are the same, the sizes of the blocks may be combined based on the stretch operation, and the combined memory blocks may be brought into the local memory, as described above (S840).

한편, 저장 오퍼레이션에서는 저장하고자 하는 블록 내의 페이지들의 연속성 점수에 기초하여 블록에 대한 연속성 점수를 판단할 수 있다. 이때, 연속성 점수를 임계값과 비교할 수 있으며, 임계값 미만이면 블록을 최소 단위로 나누어 리모트 메모리에 저장할 수 있으며, 이는 상술한 바와 같다. Meanwhile, in the storage operation, the continuity score for the block may be determined based on the continuity score of pages in the block to be stored. In this case, the continuity score may be compared with a threshold value, and if it is less than the threshold value, the block may be divided into minimum units and stored in the remote memory, as described above.

도 9는 분리 메모리를 관리하는 장치에 대한 구성을 나타낸 도면이다. 도 9를 참조하면, 분리 메모리를 관리하는 장치(900)는 메모리(910) 및 프로세서(920)로 구성될 수 있다. 이때, 일 예로, 프로세서(920)는 상술한 도 1의 각각의 프로그램, 각각의 노드 및 관리자 등에 대응되는 하드웨어적 구성일 수 있다. 즉, 도 1은 논리적 엔티티로서 상술한 프로세서(920)에 기초하여 동작할 수 있다. 다만, 구체적인 동작을 구별하기 위해 도 1과 같이 기재될 수 있으며, 상술한 실시예로 한정되지 않는다. 한편, 메모리(910)는 도 1처럼 로컬 메모리 및 리모트 메모리로 구성될 수 있다. 즉, 메모리(910)는 분리 메모리 형태일 수 있으며, 분리 메모리 동작에 기초하여 상술한 바와 같이 동작할 수 있다. 또한, 일 예로, 메모리(910)는 하드웨어적 구성으로 상술한 논리적 엔티티에 의해 수행되는 동작에 기초하는 구성일 수 있다. 즉, 본 발명은 메모리(910) 및 프로세서(920)에 기초하여 분리 메모리를 구현하는 방법일 수 있으며, 상술한 실시예로 한정되지 않는다.9 is a diagram illustrating a configuration of an apparatus for managing a separate memory. Referring to FIG. 9 , an apparatus 900 for managing separate memories may include a memory 910 and a processor 920 . In this case, as an example, the processor 920 may be a hardware configuration corresponding to each program, each node, and manager of FIG. 1 described above. That is, FIG. 1 may operate based on the processor 920 described above as a logical entity. However, it may be described as in FIG. 1 in order to distinguish specific operations, and is not limited to the above-described embodiment. Meanwhile, the memory 910 may include a local memory and a remote memory as shown in FIG. 1 . That is, the memory 910 may be in the form of a separate memory, and may operate as described above based on the separate memory operation. Also, as an example, the memory 910 may have a hardware configuration based on an operation performed by the above-described logical entity. That is, the present invention may be a method of implementing a separate memory based on the memory 910 and the processor 920 , and is not limited to the above-described embodiment.

본 명세서에 개시된 실시예들과 관련하여 설명된 방법 또는 알고리즘의 단계는 프로세서에 의해 실행되는 하드웨어, 소프트웨어 모듈, 또는 그 2 개의 결합으로 직접 구현될 수 있다. 소프트웨어 모듈은 RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터, 하드 디스크, 착탈형 디스크, CD-ROM과 같은 저장 매체(즉, 메모리 및/또는 스토리지)에 상주할 수도 있다. 예시적인 저장 매체는 프로세서에 커플링되며, 그 프로세서는 저장 매체로부터 정보를 판독할 수 있고 저장 매체에 정보를 기입할 수 있다. 다른 방법으로, 저장 매체는 프로세서와 일체형일 수도 있다. 프로세서 및 저장 매체는 주문형 집적회로 (ASIC) 내에 상주할 수도 있다. ASIC는 사용자 단말기 내에 상주할 수도 있다. 다른 방법으로, 프로세서 및 저장 매체는 사용자 단말기 내에 개별 컴포넌트로서 상주할 수도 있다.The steps of a method or algorithm described in connection with the embodiments disclosed herein may be directly implemented in hardware, a software module executed by a processor, or a combination of the two. A software module may reside in a storage medium (ie, memory and/or storage) such as RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, hard disk, a removable disk, a CD-ROM. An exemplary storage medium is coupled to the processor, the processor can read information from, and write information to, the storage medium. Alternatively, the storage medium may be integral with the processor. The processor and storage medium may reside within an application specific integrated circuit (ASIC). The ASIC may reside within the user terminal. Alternatively, the processor and storage medium may reside as separate components within the user terminal.

본 발명의 예시적인 방법들은 설명의 명확성을 위해서 동작의 시리즈로 표현되어 있지만, 이는 단계가 수행되는 순서를 제한하기 위한 것은 아니며, 필요한 경우에는 각각의 단계가 동시에 또는 상이한 순서로 수행될 수도 있다. 본 발명에 따른 방법을 구현하기 위해서, 예시하는 단계에 추가적으로 다른 단계를 포함하거나, 일부의 단계를 제외하고 나머지 단계를 포함하거나, 또는 일부의 단계를 제외하고 추가적인 다른 단계를 포함할 수도 있다.Exemplary methods of the present invention are expressed as a series of actions for clarity of description, but this is not intended to limit the order in which the steps are performed, and each step may be performed simultaneously or in a different order if necessary. In order to implement the method according to the present invention, other steps may be included in addition to the illustrated steps, other steps may be included after excluding some steps, or additional other steps may be included except for some steps.

본 발명의 다양한 실시 예는 모든 가능한 조합을 나열한 것이 아니고 본 발명의 대표적인 양상을 설명하기 위한 것이며, 다양한 실시 예에서 설명하는 사항들은 독립적으로 적용되거나 또는 둘 이상의 조합으로 적용될 수도 있다.Various embodiments of the present invention do not list all possible combinations, but are intended to describe representative aspects of the present invention, and the details described in various embodiments may be applied independently or in combination of two or more.

또한, 본 발명의 다양한 실시 예는 하드웨어, 펌웨어(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), 컨트롤러, 마이크로 컨트롤러, 마이크로 프로세서 등에 의해 구현될 수 있다.In addition, various embodiments of the present invention may be implemented by hardware, firmware, software, or a combination thereof. For implementation by hardware, one or more Application Specific Integrated Circuits (ASICs), Digital Signal Processors (DSPs), Digital Signal Processing Devices (DSPDs), Programmable Logic Devices (PLDs), Field Programmable Gate Arrays (FPGAs), general purpose It may be implemented by a processor (general processor), a controller, a microcontroller, a microprocessor, and the like.

본 발명의 범위는 다양한 실시 예의 방법에 따른 동작이 장치 또는 컴퓨터 상에서 실행되도록 하는 소프트웨어 또는 머신-실행가능한 명령들(예를 들어, 운영체제, 애플리케이션, 펌웨어(firmware), 프로그램 등), 및 이러한 소프트웨어 또는 명령 등이 저장되어 장치 또는 컴퓨터 상에서 실행 가능한 비-일시적 컴퓨터-판독가능 매체(non-transitory computer-readable medium)를 포함한다.The scope of the present invention includes software or machine-executable instructions (eg, operating system, application, firmware, program, etc.) that cause operation according to the method of various embodiments to be executed on a device or computer, and such software or and non-transitory computer-readable media in which instructions and the like are stored and executed on a device or computer.

900 : 분리 메모리 관리 장치
910 : 메모리
920 : 프로세서
900: detachable memory management unit
910: memory
920: processor

Claims (19)

가상화 시스템에서 분리 메모리를 관리하는 방법에 있어서,
가상 머신 노드에서 가상 머신의 메모리 접근을 디텍트하는 단계;
메모리 접근 패턴을 고려하여 메모리 블록을 통해 메모리 오퍼레이션을 수행하는 단계;를 포함하되,
상기 메모리 블록은 상기 메모리 접근 패턴에 기초하여 동적으로 크기가 변화하고,
상기 메모리 오퍼레이션이 적재 오퍼레이션에 상응하면 상기 메모리 블록의 크기가 증가하고,
상기 적재 오퍼레이션은 리모트 메모리에서 로컬 메모리로 적어도 어느 하나 이상의 메모리 페이지를 가져오는 것인, 분리 메모리 관리 방법.
A method for managing separate memory in a virtualization system, comprising:
detecting memory access of the virtual machine in the virtual machine node;
Including; performing a memory operation through a memory block in consideration of the memory access pattern;
the memory block dynamically changes in size based on the memory access pattern;
When the memory operation corresponds to a load operation, the size of the memory block increases;
wherein the load operation fetches at least any one or more memory pages from remote memory to local memory.
제 1 항에 있어서,
상기 메모리 오퍼레이션은 상기 적재 오퍼레이션, 저장 오퍼레이션 및 가상 머신 물리 주소의 매핑 오퍼레이션 및 상기 가상 머신 물리 주소의 언매핑 오퍼레이션 중 적어도 어느 하나를 포함하는, 분리 메모리 관리 방법.
The method of claim 1,
and the memory operation includes at least one of the load operation, the store operation, a mapping operation of a virtual machine physical address, and an unmapping operation of the virtual machine physical address.
제 2항에 있어서,
상기 메모리 오퍼레이션 중 상기 적재 오퍼레이션은 리모트 메모리에서 로컬 메모리로 적어도 어느 하나 이상의 메모리 페이지를 가져오는 오퍼레이션이되,
상기 메모리 블록은 복수 개의 상기 메모리 페이지로 구성되는, 분리 메모리 관리 방법.
3. The method of claim 2,
Among the memory operations, the load operation is an operation of fetching at least one or more memory pages from a remote memory to a local memory,
wherein the memory block is composed of a plurality of the memory pages.
제 3 항에 있어서,
상기 로컬 메모리로 가져오는 메모리 페이지 수는 스트레치 오퍼레이션에 기초하여 결정되는, 분리 메모리 관리 방법.
4. The method of claim 3,
and the number of memory pages brought into the local memory is determined based on a stretch operation.
제 4 항에 있어서,
상기 적재 오퍼레이션에 기초하여 접근이 발생한 제 1 메모리 블록과 인접한 제 2 메모리 블록의 블록 크기 및 블록 상태가 동일한 경우, 상기 스트레치 오퍼레이션에 기초하여 상기 제 1 메모리 블록과 상기 제 2 메모리 블록을 하나의 블록으로 합치고, 상기 로컬 메모리로 가져오는, 분리 메모리 관리 방법.
5. The method of claim 4,
When the block size and block state of a second memory block adjacent to a first memory block accessed based on the load operation are the same, the first memory block and the second memory block are combined into one block based on the stretch operation A separate memory management method of merging into and bringing into the local memory.
제 2항에 있어서,
상기 메모리 오퍼레이션 중 상기 저장 오퍼레이션은 로컬 메모리에서 리모트 메모리로 적어도 어느 하나 이상의 메모리 페이지를 저장하는 오퍼레이션이되,
상기 메모리 블록은 복수 개의 상기 메모리 페이지로 구성되는, 분리 메모리 관리 방법.
3. The method of claim 2,
Among the memory operations, the store operation is an operation for storing at least one memory page from a local memory to a remote memory,
wherein the memory block is composed of a plurality of the memory pages.
제 6 항에 있어서,
상기 리모트 메모리로 저장하는 메모리 페이지 수는 리듀스 오퍼레이션에 기초하여 결정되는, 분리 메모리 관리 방법.
7. The method of claim 6,
The number of memory pages to be stored in the remote memory is determined based on a reduce operation.
제 7 항에 있어서,
상기 저장 오퍼레이션에 기초하여 상기 메모리 블록에 저장이 발생하는 경우, 상기 메모리 블록의 연속성 점수를 판단하고,
상기 판단된 연속성 점수를 임계값과 비교하여 상기 메모리 블록의 크기를 유지할지 여부를 결정하는, 분리 메모리 관리 방법.
8. The method of claim 7,
When the storage occurs in the memory block based on the storage operation, determining a continuity score of the memory block;
and comparing the determined continuity score with a threshold to determine whether to maintain the size of the memory block.
제 8항에 있어서,
상기 연속성 점수가 상기 임계값 이상인 경우, 상기 메모리 블록의 크기를 유지하고,
상기 연속성 점수가 상기 임계값 미만인 경우, 상기 메모리 블록을 상기 리듀스 오퍼레이션에 기초하여 최소 단위 블록으로 분리하여 상기 리모트 메모리에 저장하는, 분리 메모리 관리 방법.
9. The method of claim 8,
If the continuity score is greater than or equal to the threshold, maintaining the size of the memory block;
When the continuity score is less than the threshold, the memory block is separated into a minimum unit block based on the reduce operation and stored in the remote memory.
제 9 항에 있어서,
상기 최소 단위 블록은 하나의 메모리 페이지로 구성되는, 분리 메모리 관리 방법.
10. The method of claim 9,
wherein the minimum unit block is configured of one memory page.
제 1 항에 있어서,
상기 메모리 블록의 상태 및 메모리 블록의 위치는 디스크립터에 기초하여 관리되는, 분리 메모리 관리 방법.
The method of claim 1,
The state of the memory block and the location of the memory block are managed based on a descriptor.
제 11 항에 있어서,
상기 디스크립터는
상기 메모리 블록이 로컬 메모리 또는 리모트 메모리에 존재하는지 여부, 상기 메모리 블록이 주소 공간에 사상되어 있는지 여부 및 상기 메모리 블록의 크기에 대한 정보 중 적어도 어느 하나 이상을 포함하는, 분리 메모리 관리 방법.
12. The method of claim 11,
The descriptor is
Whether the memory block exists in a local memory or a remote memory, whether the memory block is mapped in an address space, and at least any one or more of information on the size of the memory block, separate memory management method.
제 1 항에 있어서,
상기 메모리 블록은 메모리 페이지의
Figure 112022501873114-pat00001
배 크기를 가지면서 동적으로 변화하되, n은 상수인, 분리 메모리 관리 방법.
The method of claim 1,
The memory block is a memory page
Figure 112022501873114-pat00001
A method of managing detached memory that changes dynamically with double size, where n is a constant.
제 13 항에 있어서,
상기 메모리 블록의 시작 주소는 상기 메모리 블록의 크기에 기초하여 다르게 설정되는, 분리 메모리 관리 방법.
14. The method of claim 13,
The start address of the memory block is differently set based on the size of the memory block.
가상화 시스템에서 분리 메모리를 관리하는 장치에 있어서,
메모리; 및
상기 메모리를 제어하는 프로세서를 포함하되,
상기 프로세서는,
가상 머신 노드에서 가상 머신의 메모리 접근을 디텍트하고,
메모리 접근 패턴을 고려하여 메모리 블록을 통해 메모리 오퍼레이션을 수행하되,
상기 메모리 블록은 상기 메모리 접근 패턴에 기초하여 동적으로 크기가 변화하고,
상기 메모리 오퍼레이션이 적재 오퍼레이션에 상응하면 상기 메모리 블록의 크기가 증가하고,
상기 적재 오퍼레이션은 리모트 메모리에서 로컬 메모리로 적어도 어느 하나 이상의 메모리 페이지를 가져오는 것인, 분리 메모리를 관리하는 장치.
A device for managing separate memory in a virtualization system, comprising:
Memory; and
A processor for controlling the memory,
The processor is
Detect the memory access of the virtual machine in the virtual machine node,
Perform a memory operation through a memory block in consideration of the memory access pattern,
the memory block dynamically changes in size based on the memory access pattern;
When the memory operation corresponds to a load operation, the size of the memory block increases;
wherein the load operation fetches at least any one or more memory pages from remote memory to local memory.
제 15 항에 있어서,
상기 메모리는 로컬 메모리 및 리모트 메모리를 포함하는, 분리 메모리를 관리하는 장치.
16. The method of claim 15,
wherein the memory includes a local memory and a remote memory.
제 15 항에 있어서,
상기 프로세서가 수행하는 상기 메모리 오퍼레이션은 상기 적재 오퍼레이션, 저장 오퍼레이션 및 가상 머신 물리 주소의 매핑 오퍼레이션 및 상기 가상 머신 물리 주소의 언매핑 오퍼레이션 중 적어도 어느 하나를 포함하는, 분리 메모리를 관리하는 장치.
16. The method of claim 15,
The memory operation performed by the processor includes at least one of a load operation, a store operation, a mapping operation of a virtual machine physical address, and an unmapping operation of the virtual machine physical address.
분리 메모리를 관리하는 가상화 시스템에서,
가상 머신의 동작을 제어하는 가상 머신 노드; 및
메모리 동작을 제어하는 메모리 노드;를 포함하되,
상기 가상 머신 노드의 분리 메모리 관리자는 상기 가상 머신의 메모리 접근을 디텍트하고,
메모리 접근 패턴을 고려하여 메모리 블록을 통해 메모리 오퍼레이션을 수행하되,
상기 메모리 블록은 상기 메모리 접근 패턴에 기초하여 동적으로 크기가 변화하고,
상기 메모리 오퍼레이션이 적재 오퍼레이션에 상응하면 상기 메모리 블록의 크기가 증가하고,
상기 적재 오퍼레이션은 리모트 메모리에서 로컬 메모리로 적어도 어느 하나 이상의 메모리 페이지를 가져오는 것인, 분리 메모리를 관리하는 가상화 시스템.
In a virtualization system that manages separate memory,
a virtual machine node that controls the operation of the virtual machine; and
A memory node that controls the memory operation; including,
The separate memory manager of the virtual machine node detects the memory access of the virtual machine,
Perform a memory operation through a memory block in consideration of the memory access pattern,
the memory block dynamically changes in size based on the memory access pattern;
When the memory operation corresponds to a load operation, the size of the memory block increases;
The load operation is to bring at least one or more memory pages from the remote memory to the local memory, virtualization system for managing detached memory.
제 18항에 있어서,
상기 분리 메모리 관리자가 수행하는 상기 메모리 오퍼레이션은 상기 적재 오퍼레이션, 저장 오퍼레이션 및 가상 머신 물리 주소의 매핑 오퍼레이션 및 상기 가상 머신 물리 주소의 언매핑 오퍼레이션 중 적어도 어느 하나를 포함하는, 분리 메모리를 관리하는 가상화 시스템.
19. The method of claim 18,
The memory operation performed by the separate memory manager includes at least one of the load operation, the store operation, a mapping operation of a virtual machine physical address, and an unmapping operation of the virtual machine physical address. Virtualization system for managing separate memory .
KR1020180110719A 2017-11-09 2018-09-17 Method and apparatus for managing disaggregated memory KR102441992B1 (en)

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 KR20190053086A (en) 2019-05-17
KR102441992B1 true KR102441992B1 (en) 2022-09-08

Family

ID=66678432

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180110719A KR102441992B1 (en) 2017-11-09 2018-09-17 Method and apparatus for managing disaggregated memory

Country Status (1)

Country Link
KR (1) KR102441992B1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102392121B1 (en) 2020-06-15 2022-04-29 한국전자통신연구원 Method and apparatus for managing memory in memory disaggregation system

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101329068B1 (en) * 2005-08-03 2013-11-14 샌디스크 테크놀로지스, 인코포레이티드 Nonvolatile memory with block management
KR101587579B1 (en) * 2014-02-19 2016-01-22 한국과학기술원 Memory balancing method for virtual system
KR102517129B1 (en) * 2015-11-19 2023-04-04 에스케이하이닉스 주식회사 Memory system and operation method for the same

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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

Also Published As

Publication number Publication date
KR20190053086A (en) 2019-05-17

Similar Documents

Publication Publication Date Title
US10789090B2 (en) Method and apparatus for managing disaggregated memory
US8250332B2 (en) Partitioned replacement for cache memory
US9547594B2 (en) Instructions to mark beginning and end of non transactional code region requiring write back to persistent storage
US8793528B2 (en) Dynamic hypervisor relocation
US9063786B2 (en) Preferential CPU utilization for tasks
JP2015232879A (en) Dynamic cache allocation policy adaptation in data processing unit
JP2012522290A (en) Method for Way Assignment and Way Lock in Cache
CN109313604B (en) Computing system, apparatus, and method for dynamic configuration of compressed virtual memory
US20140149668A1 (en) Prefetching according to attributes of access requests
JP2008502069A (en) Memory cache controller and method for performing coherency operations therefor
TWI710905B (en) Data storage device and method for loading logical-to-physical mapping table
US9804965B2 (en) Virtual machine host server apparatus and method for operating the same
US20150089102A1 (en) Solid state drives that cache boot data
US20150149751A1 (en) Cpu-based measured boot
US20190324912A1 (en) Cache memory shared by software having different time-sensitivity constraints
KR20050056221A (en) System and method for preferred memory affinity
KR20140147017A (en) System and method for recovering from an unexpected shutdown in a write-back caching environment
US10558468B2 (en) Memory channel storage device initialization
US10635614B2 (en) Cooperative overlay
KR102441992B1 (en) Method and apparatus for managing disaggregated memory
US8521988B2 (en) Control system and control method of virtual memory
US9645825B2 (en) Instruction cache with access locking
US10051087B2 (en) Dynamic cache-efficient event suppression for network function virtualization
US11157319B2 (en) Processor with processor memory pairs for improved process switching and methods thereof
US20090182938A1 (en) Content addressable memory augmented memory

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