[go: up one dir, main page]

KR20200121533A - Memory management unit based on characteristics of heterogeneous memories and operating method thereof - Google Patents

Memory management unit based on characteristics of heterogeneous memories and operating method thereof Download PDF

Info

Publication number
KR20200121533A
KR20200121533A KR1020190044194A KR20190044194A KR20200121533A KR 20200121533 A KR20200121533 A KR 20200121533A KR 1020190044194 A KR1020190044194 A KR 1020190044194A KR 20190044194 A KR20190044194 A KR 20190044194A KR 20200121533 A KR20200121533 A KR 20200121533A
Authority
KR
South Korea
Prior art keywords
memory
application program
memory management
present
allocation
Prior art date
Legal status (The legal status 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 status listed.)
Withdrawn
Application number
KR1020190044194A
Other languages
Korean (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 KR1020190044194A priority Critical patent/KR20200121533A/en
Publication of KR20200121533A publication Critical patent/KR20200121533A/en
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory

Landscapes

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

Abstract

According to the present invention, an operation method of a memory management device that manages at least two different types of memories can comprise the following steps of: receiving a memory allocation request from an application program in a memory allocation/release module; analyzing the characteristics of the application program by using additional information related to the characteristics of the application program in the memory allocation/release module; determining a priority for each memory existing in a system according to the analyzed characteristics; and allocating a memory corresponding to the memory allocation request by using the determined priority. According to the present invention, an inefficient memory operation that may occur when driving an existing software in a computing system equipped with a heterogeneous memory with various characteristics can be prevented.

Description

이종 메모리의 특성에 기반한 메모리 관리 장치 및 그것의 동작 방법{MEMORY MANAGEMENT UNIT BASED ON CHARACTERISTICS OF HETEROGENEOUS MEMORIES AND OPERATING METHOD THEREOF}A memory management device based on the characteristics of heterogeneous memories and its operation method {MEMORY MANAGEMENT UNIT BASED ON CHARACTERISTICS OF HETEROGENEOUS MEMORIES AND OPERATING METHOD THEREOF}

본 발명은 이종 메모리의 특성에 기반한 메모리 관리 장치 및 그것의 동작 방법에 관한 것이다.The present invention relates to a memory management device based on the characteristics of heterogeneous memories and a method of operating the same.

메모리 기술의 발전에 힘입어 기존 DRAM(Dynamic Random Access Memory) 기반의 메인 메모리뿐만 아니라 다양한 종류의 메모리 기술이 이미 상용화되었거나 상용화를 앞두고 있다. 대표적으로 상변화 메모리(Phase Change Memory, PRAM), 스핀주입자반전 자기저항메모리(Spin Transfer Torque-Magnetoresistive RAM, STT-MRAM) 등이 있으며, 인텔의 3D Xpoint 제품군은 상변화 메모리 기술을 기반으로 하고 있다. 이와 같은 차세대 메모리 기술의 공통적인 특징은 비휘발성(Non-volatility)을 들 수 있으며, 이는 전원이 꺼졌을 때 데이터가 소멸되는 DRAM과는 달리 데이터가 그대로 보존되는 특성을 말한다. 하지만, 다양한 메모리 기술들은 공통점도 있지만 기술별로 상이한 특성들을 가지고 있다. 무엇보다도 가장 중요한 성능, 특히 접근 지연 시간(Access Latency)는 메모리 기술별 기술별로도 다르며 동일 기술을 사용하더라도 제품화 단계에서의 설계 이슈에 따라서도 현격히 달라지기도 한다. 뿐만 아니라 집적도, 읽기/쓰기 작업에 따른 에너지 소모량, 데이터의 보존 가능 시간(Retention Time) 등 또한 메모리 기술별, 엔지니어링 이슈별로 다양하게 나타나는 특성이기도 하다. 따라서, 향후 컴퓨팅 시스템은 이러한 메모리별 특성을 최대한 활용하기 위해 다양한 종류의 메모리를 탑재하게 될 것으로 전망된다.With the advancement of memory technology, not only main memory based on existing DRAM (Dynamic Random Access Memory) but also various types of memory technologies have already been commercialized or are about to be commercialized. Representatively, there are Phase Change Memory (PRAM) and Spin Transfer Torque-Magnetoresistive RAM (STT-MRAM), and Intel's 3D Xpoint family is based on phase change memory technology. have. A common characteristic of such next-generation memory technology is non-volatility, which refers to a characteristic in which data is preserved as it is, unlike DRAM, in which data is destroyed when the power is turned off. However, although various memory technologies have similarities, each technology has different characteristics. Above all, the most important performance, especially access latency, differs by technology for each memory technology, and even if the same technology is used, it may be significantly different depending on design issues at the commercialization stage. In addition, the degree of integration, energy consumption according to read/write operations, and retention time of data are also various characteristics by memory technology and engineering issue. Therefore, it is expected that in the future computing systems will be equipped with various types of memories in order to make the most of these memory-specific characteristics.

등록특허: 10-1618634, 등록일: 2016년 4월 29일, 제목: 비휘발성 메모리와, 이의 페이지 동작할당장치 및 페이지 매핑장치와, 이의 페이지 동적할당 방법 및 페이지 매핑방법.Registered Patent: 10-1618634, Registration Date: April 29, 2016, Title: Nonvolatile memory, its page operation allocation device and page mapping device, its page dynamic allocation method and page mapping method. 공개특허: 10-2016-0008885, 공개일: 2016년 1월 25일, 제목: 전자 장치 및 전자 장치의 메모리 관리 방법.Publication: 10-2016-0008885, Publication date: January 25, 2016, Title: Electronic device and memory management method of an electronic device. 공개특허: 10-2017-0070920, 공개일: 2017년 6월 23일, 제목: 비휘발성 메모리 모듈, 그것을 포함하는 컴퓨팅 시스템, 및 그것의 동작 방법.Publication: 10-2017-0070920, Publication date: June 23, 2017, Title: Nonvolatile memory module, computing system including the same, and operation method thereof.

본 발명의 목적은 시스템에서 운용되는 다양한 종류의 메모리의 특성에 따라 정적 혹은 동적으로 분석된 사용자 응용 프로그램의 속성에 기반하여 효율적으로 작동 가능한 메모리를 선택하여 할당하고, 실행되는 상황에 따라 적응적으로 운용 및 관리가 가능하게 함으로써 성능, 메모리 용량, 에너지 사용량 등 효과적인 최적화가 가능하도록, 메모리 관리 장치 및 그것의 동작 방법을 제공하는 데 있다.An object of the present invention is to select and allocate an efficiently operable memory based on the properties of a user application program analyzed statically or dynamically according to the characteristics of various types of memories operated in the system, and adaptively according to the execution situation. It is to provide a memory management device and a method of operation thereof so that effective optimization such as performance, memory capacity, and energy usage is possible by enabling operation and management.

본 발명의 실시 예에 따른 적어도 2개의 서로 다른 종류의 메모리를 관리하는 메모리 관리 장치의 동작 방법은, 메모리 할당/해제 모듈에서 응용프로그램으로부터 메모리 할당 요청을 수신하는 단계; 상기 메모리 할당/해제 모듈에서 상기 응용프로그램의 특성과 관련된 부가 정보를 이용하여 상기 응용프로그램의 특성을 분석하는 단계; 상기 분석된 특성에 따라 시스템에 존재하는 메모리별 우선순위를 결정하는 단계; 및 상기 결정된 우선순위를 이용하여 상기 메모리 할당 요청에 대응하는 메모리를 할당하는 단계를 포함할 수 있다.An operating method of a memory management device for managing at least two different types of memories according to an embodiment of the present invention includes: receiving a memory allocation request from an application program in a memory allocation/release module; Analyzing the characteristics of the application program by using the additional information related to the characteristics of the application program in the memory allocation/release module; Determining a priority for each memory existing in the system according to the analyzed characteristics; And allocating a memory corresponding to the memory allocation request by using the determined priority.

본 발명의 실시 예에 따른 메모리 관리 장치 및 그것의 동작 방법은, 다양한 특성을 가진 이종 메모리가 탑재된 컴퓨팅 시스템에서 기존 소프트웨어 구동시 발생할 수 있는 비효율적인 메모리 운용을 방지할 수 있다.The memory management apparatus and its operating method according to an embodiment of the present invention can prevent inefficient memory operation that may occur when running existing software in a computing system equipped with heterogeneous memories having various characteristics.

또한, 본 발명의 실시 예에 따른 메모리 관리 장치 및 그것의 동작 방법은, 사용자 혹은 컴파일러로부터 추출된 프로그램 특성 정보에 기반하여 최적의 메모리를 판별하여 할당할 수 있다.In addition, the memory management apparatus and its operating method according to an embodiment of the present invention may determine and allocate an optimal memory based on program characteristic information extracted from a user or a compiler.

또한, 본 발명의 실시 예에 따른 메모리 관리 장치 및 그것의 동작 방법은, 초기 할당시 고려된 프로그램 특성 정보와 실제 구동시 동적으로 발생되는 프로그램 특성이 달라질 경우 이를 동적으로 판별하여 새로운 특성에 맞는 메모리로의 이주를 지원하며, 물리 주소가 변경되더라도 사용자 수준 가상 주소의 변동 없이 그대로 사용할 수 있다.In addition, the memory management device and its operation method according to an embodiment of the present invention dynamically determine if the program characteristic information considered during initial allocation and the program characteristic dynamically generated during actual operation differ, and thus a memory suitable for the new characteristic It supports migration to and from user-level virtual addresses, even if physical addresses are changed.

이하에 첨부되는 도면들은 본 실시 예에 관한 이해를 돕기 위한 것으로, 상세한 설명과 함께 실시 예들을 제공한다. 다만, 본 실시예의 기술적 특징이 특정 도면에 한정되는 것은 아니며, 각 도면에서 개시하는 특징들은 서로 조합되어 새로운 실시 예로 구성될 수 있다.
도 1은 일반적인 컴퓨팅 시스템을 예시적으로 보여주는 도면이다.
도 2는 본 발명의 실시 예에 따른 메모리 관리 장치(100)를 보여주는 도면이다.
도 3은 본 발명의 실시 예에 따른 메모리 할당/해제 모듈(110)의 메모리 할당 방법을 예시적으로 보여주는 흐름도이다.
도 4는 본 발명의 실시 예에 따른 메모리 할당/해제 모듈(110)에서 사용자 응용 프로그램의 특성을 분석할 때 필요한 부가 정보를 저장 및 전달하는 방법을 설명하는 도면이다.
도 5는 본 발명의 실시 예에 따른 메모리 관리 모듈(120)의 메모리 이주 방법을 예시적으로 보여주는 흐름도이다.
도 6은 본 발명의 실시 예에 따른 메모리 이주 필요시 메모리 할당/해제 모듈(110)에서 수행하는 메모리 재할당 방법을 예시적으로 보여주는 흐름도이다.
도 7은 본 발명의 실시 예에 따른 메모리 할당/해제 모듈(1110), 메모리 관리 모듈(1120), 운영체제(1000) 및 하드웨어(2000) 간의 상호작용을 예시적으로 보여주는 도면이다.
The accompanying drawings are provided to aid understanding of the present embodiment, and provide the embodiments together with a detailed description. However, the technical features of the present embodiment are not limited to a specific drawing, and features disclosed in each drawing may be combined with each other to constitute a new embodiment.
1 is a diagram illustrating a general computing system as an example.
2 is a diagram illustrating a memory management apparatus 100 according to an embodiment of the present invention.
3 is a flowchart illustrating a memory allocation method of the memory allocation/release module 110 according to an embodiment of the present invention.
FIG. 4 is a diagram for explaining a method of storing and transmitting additional information necessary when analyzing characteristics of a user application program in the memory allocation/release module 110 according to an embodiment of the present invention.
5 is a flowchart illustrating a memory migration method of the memory management module 120 according to an embodiment of the present invention.
6 is a flowchart illustrating a memory reallocation method performed by the memory allocation/release module 110 when memory migration is required according to an embodiment of the present invention.
7 is a diagram illustrating an example interaction between a memory allocation/release module 1110, a memory management module 1120, an operating system 1000, and the hardware 2000 according to an embodiment of the present invention.

아래에서는 도면들을 이용하여 본 발명의 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있을 정도로 본 발명의 내용을 명확하고 상세하게 기재할 것이다.In the following, the contents of the present invention will be described clearly and in detail to the extent that a person of ordinary skill in the technical field of the present invention can easily implement it using the drawings.

본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시 예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 제 1, 제 2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다.Since the present invention can apply various changes and have various forms, specific embodiments will be illustrated in the drawings and described in detail in the text. However, this is not intended to limit the present invention to a specific form of disclosure, it is to be understood as including all changes, equivalents, or substitutes included in the spirit and scope of the present invention. Terms such as first and second may be used to describe various elements, but the elements should not be limited by the terms.

상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제 1 구성요소는 제 2 구성요소로 명명될 수 있고, 유사하게 제 2 구성요소도 제 1 구성요소로 명명될 수 있다. 어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 혹은 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.The terms may be used for the purpose of distinguishing one component from another component. For example, without departing from the scope of the present invention, a first component may be referred to as a second component, and similarly, a second component may be referred to as a first component. When a component is referred to as being "connected" or "connected" to another component, it is understood that it is directly connected to or may be connected to the other component, but other components may exist in the middle. Should be. On the other hand, when a component is referred to as being "directly connected" or "directly connected" to another component, it should be understood that there is no other component in the middle.

구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 혹은 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다. 본 출원에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다.Other expressions describing the relationship between components, such as "between" and "just between" or "adjacent to" and "directly adjacent to" should be interpreted as well. The terms used in the present application are used only to describe specific embodiments, and are not intended to limit the present invention. Singular expressions include plural expressions unless the context clearly indicates otherwise.

본 출원에서, "포함하다" 혹은 "가지다" 등의 용어는 실시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 혹은 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 혹은 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 혹은 이들을 조합한 것들의 존재 혹은 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다. 다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미이다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미인 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.In the present application, terms such as "comprise" or "have" are intended to designate the existence of implemented features, numbers, steps, actions, components, parts, or combinations thereof, and one or more other features or numbers It is to be understood that the possibility of addition or presence of, steps, actions, components, parts, or combinations thereof is not preliminarily excluded. Unless otherwise defined, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art to which the present invention belongs. Terms as defined in a commonly used dictionary should be interpreted as having a meaning consistent with the meaning of the context of the related technology, and should not be interpreted as an ideal or excessively formal meaning unless explicitly defined in this application. .

일반적으로 다양한 종류의 메모리가 탑재된 시스템에서 사용자 응용 프로그램을 구동할 때 응용 프로그램의 특성에 맞는 메모리를 선택하여 할당 및 관리해야 한다. 본 발명의 실시 예에 따른 메모리 관리 장치 및 그것의 동작 방법은, 시스템에서 운용되는 다양한 종류의 메모리(휘발성 혹은 비휘발성)의 특성에 따라 정적 혹은 동적으로 분석된 사용자 응용 프로그램의 속성에 기반하여 효율적으로 작동 가능한 메모리를 선택하여 할당하고, 실행되는 상황에 따라 적응적으로 운용 및 관리함으로써 성능, 메모리 용량, 에너지 사용량 등 효과적인 최적화를 기대할 수 있다.In general, when running a user application program in a system equipped with various types of memory, it is necessary to select, allocate, and manage a memory suitable for the characteristics of the application program. The memory management device and its operation method according to an embodiment of the present invention are efficient based on properties of user application programs that are statically or dynamically analyzed according to the characteristics of various types of memories (volatile or nonvolatile) operated in the system. By selecting and allocating memory that can be operated as a memory and adaptively operating and managing it according to the execution situation, effective optimization such as performance, memory capacity, and energy usage can be expected.

도 1은 일반적인 컴퓨팅 시스템을 예시적으로 보여주는 도면이다. 도 1을 참조하면, 일반적인 컴퓨팅 시스템의 계층별 구조를 보여준다. 하나 혹은 그 이상의 프로세서가 다양한 종류의 메모리와 연결되어 있다. 다양한 종류의 메모리는 각각 시스템의 물리 주소 영역에 매핑 되어 있다. 모든 프로세서는 이 물리 주소를 통해 각각의 메모리에 접근 가능하다. 운영체제 소프트웨어에 포함된 메모리 관리 장치가 다양한 종류의 메모리들을 관리한다. 사용자 응용 프로그램은 실행에 필요한 메모리를 운영체제의 메모리 관리 장치에게 요청하면, 메모리 관리 장치는 관리 대상 메모리 중 일부를 요청 받은 크기만큼 할당하여 요청한 응용 프로그램에게 전달한다.1 is a diagram illustrating a general computing system as an example. Referring to FIG. 1, a structure for each layer of a general computing system is shown. One or more processors are connected to various types of memory. Various types of memory are each mapped to the system's physical address area. All processors can access their respective memory through this physical address. A memory management device included in the operating system software manages various types of memories. When the user application program requests memory required for execution from the memory management device of the operating system, the memory management device allocates a portion of the memory to be managed by the requested size and delivers it to the requested application program.

이 때 운영체제의 메모리 관리 장치가 시스템에 장착된 다양한 메모리 별 특성을 인지하지 못할 경우, 요청한 응용 프로그램의 속성에 최적화된 다른 메모리가 존재함에도 불구하고 응용 프로그램에 맞지 않는 메모리가 할당될 수 있다. 이 경우 응용 프로그램은 자신의 특성과 맞지 않는 메모리를 할당 받아 사용하게 됨으로써, 수행 시간, 에너지 소모량 등 비효율적인 운영을 초래할 수 있다. 따라서, 다양한 메모리의 특성을 정확히 인지하여 효율적인 할당 및 운용이 가능한 메모리 관리 소프트웨어 기술, 그리고 응용 프로그램의 특성정보를 추출하여 메모리 관리 소프트웨어에 전달할 수 있는 기술이 필요하다. In this case, if the memory management device of the operating system does not recognize the characteristics of various memories installed in the system, a memory that is not suitable for the application program may be allocated even though another memory optimized for the properties of the requested application program exists. In this case, the application program is allocated and used memory that does not match its characteristics, which may lead to inefficient operation such as execution time and energy consumption. Therefore, there is a need for a memory management software technology capable of efficiently allocating and operating by accurately recognizing the characteristics of various memories, and a technology capable of extracting characteristic information of an application program and delivering it to the memory management software.

도 2는 본 발명의 실시 예에 따른 메모리 관리 장치(100)를 보여주는 도면이다. 도 2를 참조하면, 메모리 관리 장치(100)는 메모리 할당/해제 모듈(110) 및 메모리 관리 모듈(120)를 포함할 수 있다.2 is a diagram illustrating a memory management apparatus 100 according to an embodiment of the present invention. Referring to FIG. 2, the memory management apparatus 100 may include a memory allocation/release module 110 and a memory management module 120.

메모리 할당/해제 모듈(100)은 다양한 메모리별 특성과 메모리를 요청한 응용 프로그램의 특성을 고려하여 최적의 메모리를 선택하고, 메모리를 할당 및 해제하는 기능을 수행할 수 있다.The memory allocation/release module 100 may perform a function of selecting an optimal memory, allocating and releasing memory in consideration of various characteristics of memory and characteristics of an application program that requested the memory.

메모리 관리 모듈(120)은 할당된 메모리를 시스템의 동적 상황에 기반하여 필요시 다른 메모리로의 이주(Migration)를 수행할 수 있다.The memory management module 120 may perform migration of the allocated memory to another memory when necessary based on a dynamic situation of the system.

한편, 메모리 관리 장치(100)는 기존 운영체제에서 기본적으로 제공하는 페이징 기반 가상 메모리 관리 기능을 더 포함할 수 있다. Meanwhile, the memory management apparatus 100 may further include a paging-based virtual memory management function that is basically provided by an existing operating system.

도 3은 본 발명의 실시 예에 따른 메모리 할당/해제 모듈(110)의 메모리 할당 방법을 예시적으로 보여주는 흐름도이다. 도 3을 참조하면, 메모리 할당/해제 모듈(110)의 메모리 할당 동작은 다음과 같이 진행될 수 있다.3 is a flowchart illustrating a memory allocation method of the memory allocation/release module 110 according to an embodiment of the present invention. Referring to FIG. 3, the memory allocation operation of the memory allocation/release module 110 may be performed as follows.

사용자 응용프로그램에서 메모리 할당 요청이 발생하면, 메모리 할당/해제 모듈(110)은 사용자 응용 프로그램의 특성을 분석할 수 있다(S110). 이 때, 응용 프로그램으로부터 특성과 관련된 부가 정보가 필요하다. 이후에 메모리 할당/해제 모듈(110)은 사용자 응용프로그램의 특성에 근거로 하여 최적화된 정도에 따라 현재 시스템에 존재하는 메모리 별 우선순위를 결정할 수 있다(S120). When a memory allocation request occurs in the user application program, the memory allocation/release module 110 may analyze the characteristics of the user application program (S110). At this time, additional information related to characteristics is required from the application program. Thereafter, the memory allocation/release module 110 may determine a priority for each memory existing in the current system according to an optimized degree based on the characteristics of the user application program (S120).

메모리 할당/해제 모듈(110)은 가장 높은 우선순위(Prio1)의 메모리부터(S130) 요청 받은 크기만큼 할당 가능한지 여부를 판별할 수 있다(S140). 만일, 메모리 할당이 가능하면, 메모리 할당/해제 모듈(110)은 메모리를 할당하여 사용자에게 전달한 후 종료할 수 있다(S150). 반면에, 메모리 할당이 가능하지 않으면, 우선순위가 가장 낮은 우선순위(PrioN)인지가 판별될 수 있다(S160). 만일, 가장 낮은 우선순위(PrioN)의 메모리에서도 할당이 실패할 경우 메모리 할당 실패로 작업을 종료될 수 있다. 반면에, 우선순위가 가장 낮은 우선순위(PrioN)가 아니라면, 우선순위를 감소시킨 후에 S140 단계가 진입될 수 있다.The memory allocation/release module 110 may determine whether the memory of the highest priority (Prio1) can be allocated as much as the requested size (S130) (S140). If memory allocation is possible, the memory allocation/release module 110 may allocate and transfer the memory to the user and then terminate the memory allocation (S150). On the other hand, if memory allocation is not possible, it may be determined whether the priority is the lowest priority (PrioN) (S160). If allocation fails even in memory of the lowest priority (PrioN), the task may be terminated due to memory allocation failure. On the other hand, if the priority is not the lowest priority (PrioN), step S140 may be entered after reducing the priority.

한편, 메모리 해제 알고리즘은 먼저 해제 요청된 메모리 주소가 유효한 영역인지 검사한 후, 주소에 대응하는하는 메모리 영역을 해제한 후 종료할 수 있다.Meanwhile, the memory release algorithm may first check whether a memory address requested for release is a valid region, and then terminate after releasing a memory region corresponding to the address.

실시 예에 따라서는, 단계들 및/혹은 동작들의 일부 혹은 전부는 하나 이상의 비-일시적 컴퓨터-판독가능 매체에 저장된 명령, 프로그램, 상호작용 데이터 구조(interactive data structure), 클라이언트 및/혹은 서버를 구동하는 하나 이상의 프로세서들을 사용하여 적어도 일부가 구현되거나 혹은 수행될 수 있다. 하나 이상의 비-일시적 컴퓨터-판독가능 매체는 예시적으로 소프트웨어, 펌웨어, 하드웨어, 및/혹은 그것들의 어떠한 조합일 수 있다. 또한, 본 명세서에서 논의된 "모듈"의 기능은 소프트웨어, 펌웨어, 하드웨어, 및/혹은 그것들의 어떠한 조합으로 구현될 수 있다.Depending on the embodiment, some or all of the steps and/or actions drive instructions, programs, interactive data structures, clients and/or servers stored in one or more non-transitory computer-readable media. At least some of them may be implemented or performed using one or more processors. The one or more non-transitory computer-readable media may be illustratively software, firmware, hardware, and/or any combination thereof. Also, the functions of the "module" discussed in this specification may be implemented in software, firmware, hardware, and/or any combination thereof.

본 발명의 실시 예들의 하나 이상의 동작들/단계들/모듈들을 구현/수행하기 위한 하나 이상의 비-일시적 컴퓨터-판독가능 매체 및/혹은 수단들은 ASICs(application-specific integrated circuits), 표준 집적 회로들, 마이크로 컨트롤러를 포함하는, 적절한 명령들을 수행하는 컨트롤러, 및/혹은 임베디드 컨트롤러, FPGAs(field-programmable gate arrays), CPLDs(complex programmable logic devices), 및 그와 같은 것들을 포함할 수 있지만, 여기에 한정되지는 않는다. One or more non-transitory computer-readable media and/or means for implementing/performing one or more operations/steps/modules of the embodiments of the present invention include application-specific integrated circuits (ASICs), standard integrated circuits, Controllers that perform appropriate instructions, including microcontrollers, and/or embedded controllers, field-programmable gate arrays (FPGAs), complex programmable logic devices (CPLDs), and the like, but are not limited thereto. Does not.

도 4는 본 발명의 실시 예에 따른 메모리 할당/해제 모듈(110)에서 사용자 응용 프로그램의 특성을 분석할 때 필요한 부가 정보를 저장 및 전달하는 방법을 설명하는 도면이다. 도 4를 참조하면, 응용 프로그램 특성 부가 정보는 프로그램 바이너리 이미지 생성시 컴파일러가 소스 코드의 정적 분석을 통해 자동적으로 특성을 파악할 수 있다. FIG. 4 is a diagram for explaining a method of storing and transmitting additional information necessary when analyzing characteristics of a user application program in the memory allocation/release module 110 according to an embodiment of the present invention. Referring to FIG. 4, when the application program characteristic additional information is generated, the compiler can automatically determine the characteristic through static analysis of the source code.

실시 예에 있어서, 사용자가 프로그램의 특성을 이미 파악하고 있다면, 직접 컴파일러에게 힌트(Hint)를 주고, 이에 따라 특성 부가 정보가 생성될 수 있다. 이렇게 생성된 부가 정보는 프로그램 바이너리 이미지의 정해진 영역에 저장될 수 있다.In an embodiment, if the user already knows the characteristics of the program, a hint is directly given to the compiler, and additional characteristic information may be generated accordingly. The additional information generated in this way may be stored in a predetermined area of the program binary image.

실시 예에 있어서, 메모리 관리 장치(100)의 메모리 할당/관리 모듈(110)은 메모리 할당 요청 발생시 대응하는 프로그램의 바이너리 이미지에 저장된 부가 정보를 읽고, 읽혀진 부가 정보를 응용프로그램의 특성 분석시 활용할 수 있다. 다른 실시 예에 있어서, 메모리 할당/관리 모듈(110)은 바이너리 이미지에 저장된 정보를 사용하지 않고, 사용자 프로그램의 메모리 요청시 호출 인자의 형태로 직접 전달할 수 있다.In an embodiment, the memory allocation/management module 110 of the memory management device 100 may read additional information stored in a binary image of a corresponding program when a memory allocation request occurs, and utilize the read additional information when analyzing characteristics of an application program. have. In another embodiment, the memory allocation/management module 110 may not use information stored in a binary image, but may directly transfer the information in the form of a call factor when a user program requests a memory.

도 5는 본 발명의 실시 예에 따른 메모리 관리 모듈(120)의 메모리 이주 방법을 예시적으로 보여주는 흐름도이다. 도 5를 참조하면, 메모리 관리 모듈(120)의 메모리 이주 동작은 다음과 같이 진행될 수 있다.5 is a flowchart illustrating a memory migration method of the memory management module 120 according to an embodiment of the present invention. Referring to FIG. 5, the memory migration operation of the memory management module 120 may proceed as follows.

일반적으로 메모리 이주가 필요한 이유는 프로그램 실행 전에 분석된 정보를 기반으로 메모리를 할당할 경우 동적 실행 상황에 따라 현재 상황에 더 적합한 메모리가 변경될 수 있기 때문이다.In general, memory migration is necessary because if memory is allocated based on information analyzed before program execution, memory more suitable for the current situation may be changed according to the dynamic execution situation.

메모리 관리 모듈(120)은 먼저 프로그램별 동적 실행 특성을 분석하는데, 여기에는 운영체제(예: 리눅스의 perf_events) 혹은 프로세서 (예: 인텔 Performance Counter) 등 하드웨어에서 제공하는 성능 관련 카운터 등의 정보를 활용할 수 있다(S210).The memory management module 120 first analyzes the dynamic execution characteristics of each program, and can utilize information such as performance-related counters provided by hardware such as an operating system (eg, perf_events in Linux) or a processor (eg, Intel Performance Counter). There is (S210).

메모리 관리 모듈(120)은 새로운 동적 실행 특성이 현재 할당된 메모리 특성에 맞지 않는 지를 판별할 수 있다(S220).The memory management module 120 may determine whether the new dynamic execution characteristic does not match the currently allocated memory characteristic (S220).

만일, 동적 실행 특성과 할당된 메모리 특성이 맞으면, 그대로 메모리 이주 동작이 종료될 수 있다. 반면에, 동적 실행 특성과 할당된 메모리 특성이 맞지 않을 경우, 메모리 관리 모듈(120)은 새로운 특성에 근거로 하여 메모리별 우선순위를 재결정할 수 있다(S230). 여기서 New_Prio는 새로운 특성에 맞는 가장 높은 우선순위이며, Old_Prio는 기존 할당된 메모리의 우선순위이다. 이주 고려 대상에 포함되는 메모리는 두 우선순위 사이에 있는 메모리들로 한정될 수 있다.If the dynamic execution characteristics and the allocated memory characteristics match, the memory migration operation may be terminated as it is. On the other hand, if the dynamic execution characteristic and the allocated memory characteristic do not match, the memory management module 120 may re-determine the priority for each memory based on the new characteristic (S230). Here, New_Prio is the highest priority for new characteristics, and Old_Prio is the priority of the previously allocated memory. The memories included in the migration consideration target may be limited to memories between two priorities.

이후, 메모리 관리 모듈(120)은 메모리 할당/해제 모듈(110)에 새롭게 할당 가능한 메모리를 요청할 수 있다(S240).Thereafter, the memory management module 120 may request a newly allocable memory from the memory allocation/release module 110 (S240).

이후, 메모리 관리 모듈(120)는 메모리 이주가 가능한 지를 판별할 수 있다(S250). 만일, 메모리 이주가 가능하면, 메모리 관리 모듈(120)은 메모리 할당/해제 모듈(110)로부터 전달받은 물리 주소를 이용하여 페이지 테이블을 업데이트할 수 있다(S260). 여기서 페이지 테이블을 업데이트하는 이유는 새롭게 할당된 메모리의 물리 주소가 변경되더라도 사용자의 가상 주소는 그대로 사용 가능하도록 새롭게 매핑하는 작업이 필요하기 때문이다. 반면에, 메모리 이주가 불가능하면, 그대로 메모리 이주 동작이 종료될 수 있다.Thereafter, the memory management module 120 may determine whether memory migration is possible (S250). If memory migration is possible, the memory management module 120 may update the page table using the physical address received from the memory allocation/release module 110 (S260). The reason for updating the page table is that a new mapping operation is required so that the virtual address of the user can be used as it is even if the physical address of the newly allocated memory is changed. On the other hand, if memory migration is impossible, the memory migration operation may be terminated as it is.

도 6은 본 발명의 실시 예에 따른 메모리 이주 필요시 메모리 할당/해제 모듈(110)에서 수행하는 메모리 재할당 방법을 예시적으로 보여주는 흐름도이다. 도 6을 참조하면, 메모리 할당/해제 모듈(110)의 메모리 재할당 동작은 다음과 같이 진행될 수 있다.6 is a flowchart illustrating a memory reallocation method performed by the memory allocation/release module 110 when memory migration is required according to an embodiment of the present invention. Referring to FIG. 6, the memory reallocation operation of the memory allocation/release module 110 may be performed as follows.

메모리 관리 모듈(120)로부터 이주 요청이 들어오면, 메모리 할당/해제 모듈(110)은 우선순위를 최상위 우선순위(New_Prio)로 설정하고(S310), 할당 가능한 메모리가 존재하는 지를 판별할 수 있다(S320). 만일, 우선순위에 대응하는 할당 가능한 메모리가 존재할 때, 메모리 할당/해제 모듈(110)은 대응하는 메모리의 물리 주소를 메모리 관리 모듈(120)에 전달할 수 있고(S330), 이후에 메모리 이주 동작이 종료될 수 있다.When a migration request is received from the memory management module 120, the memory allocation/release module 110 may set the priority to the highest priority (New_Prio) (S310), and determine whether there is an allocable memory ( S320). If, when there is an allocable memory corresponding to the priority, the memory allocation/release module 110 may transfer the physical address of the corresponding memory to the memory management module 120 (S330), and then the memory migration operation is performed. It can be terminated.

반면에, 우선순위에 대응하는 할당 가능한 메모리가 존재하지 않을 때, 우선 순위가 최하위 우선순위(Old_Prio)인 지가 판별될 수 있다(S340). 만일, 우선순위가 Old_Prio이면, 메모리 할당/해제 모듈(110)은 메모리 관리 모듈(110)에 메모리 이주 불가를 통보한 후, 메모리 이주 동작을 종료시킬 수 있다. 반면에, 우선순위가 Old_Prio가 아니면, 우선 순위를 감소 시킨 후 S320 단계에 진입할 것이다(S350).On the other hand, when there is no allocatable memory corresponding to the priority, it may be determined whether the priority is the lowest priority (Old_Prio) (S340). If the priority is Old_Prio, the memory allocation/release module 110 may notify the memory management module 110 of the memory migration impossibility, and then terminate the memory migration operation. On the other hand, if the priority is not Old_Prio, the priority is decreased and then the step S320 is entered (S350).

도 7은 본 발명의 실시 예에 따른 메모리 할당/해제 모듈(1110), 메모리 관리 모듈(1120), 운영체제(1000) 및 하드웨어(2000) 간의 상호작용을 예시적으로 보여주는 도면이다.7 is a diagram illustrating an example interaction between a memory allocation/release module 1110, a memory management module 1120, an operating system 1000, and the hardware 2000 according to an embodiment of the present invention.

실시 예에 있어서, 메모리 관리 모듈(1120)은 메모리 이주 필요시 메모리 할당/해제 모듈(1110)에 요청할 수 있다.In an embodiment, the memory management module 1120 may request the memory allocation/release module 1110 when memory migration is required.

실시 예에 있어서, 메모리 할당/해제 모듈(1110)은 이주 가능한 메모리 할당시 대응하는 주소를 메모리 관리 모듈(1120)에 전달할 수 있다. In an embodiment, the memory allocation/release module 1110 may transmit a corresponding address to the memory management module 1120 when migrating memory is allocated.

또한, 실시 예에 있어서, 메모리 관리 모듈(1120)은 사용자 응용 프로그램의 동적 특성을 분석하기 위해 운영체제(1000)의 성능 모니터링 소프트웨어 모듈(1200) 혹은 하드웨어(2000)의 성능 모니터링 하드웨어 모듈(2200)로부터 필요한 정보를 전달 받을 수 있다. 예를 들어, 메모리 관리 모듈(1100)은 대응하는 프로그램의 메모리의 읽기/쓰기 회수 정보를 운영체제(1000) 혹은 하드웨어(2000)로부터 수집, 분석하여, 현재 메모리 접근 특성에 더 잘 부합하는 메모리로의 이주를 고려할 수 있다.In addition, in an embodiment, the memory management module 1120 from the performance monitoring software module 1200 of the operating system 1000 or the performance monitoring hardware module 2200 of the hardware 2000 to analyze the dynamic characteristics of the user application program. You can receive the necessary information. For example, the memory management module 1100 collects and analyzes the number of read/write times of the memory of the corresponding program from the operating system 1000 or the hardware 2000, and converts the memory to a memory better suited to the current memory access characteristics. You can consider moving.

본 발명의 실시 예에 따른 이종 메모리의 특성에 기반한 메모리 관리 장치 및 그것의 동작 방법은 다양한 특성을 가진 이종 메모리가 탑재된 컴퓨팅 시스템에서 기존 소프트웨어 구동시 발생할 수 있는 비효율적인 메모리 운용을 방지할 수 있다. The memory management device based on the characteristics of heterogeneous memories according to an embodiment of the present invention and its operation method can prevent inefficient memory operation that may occur when running existing software in a computing system equipped with heterogeneous memories having various characteristics. .

또한, 본 발명의 실시 예에 따른 이종 메모리의 특성에 기반한 메모리 관리 장치 및 그것의 동작 방법은 사용자 혹은 컴파일러로부터 추출된 프로그램 특성 정보에 기반하여 최적의 메모리를 판별하여 할당할 수 있다. In addition, the memory management device based on the characteristics of heterogeneous memories according to an exemplary embodiment of the present invention and a method of operating the same may determine and allocate an optimal memory based on program characteristic information extracted from a user or a compiler.

또한, 본 발명의 실시 예에 따른 이종 메모리의 특성에 기반한 메모리 관리 장치 및 그것의 동작 방법은 초기 할당시 고려된 프로그램 특성 정보와 실제 구동시 동적으로 발생되는 프로그램 특성이 달라질 경우 이를 동적으로 판별하여 새로운 특성에 맞는 메모리로의 이주를 지원하며, 물리 주소가 변경되더라도 사용자 수준 가상 주소의 변동 없이 그대로 사용 가능하다.In addition, the memory management device and its operation method based on the characteristics of heterogeneous memories according to an embodiment of the present invention dynamically determine when the program characteristic information considered during initial allocation and the program characteristic dynamically generated during actual operation are different. It supports migration to memory that meets new characteristics, and can be used as it is without changing user-level virtual addresses even if physical addresses are changed.

한편, 상술 된 본 발명의 내용은 발명을 실시하기 위한 구체적인 실시 예들에 불과하다. 본 발명은 구체적이고 실제로 이용할 수 있는 수단 자체뿐 아니라, 장차 기술로 활용할 수 있는 추상적이고 개념적인 아이디어인 기술적 사상을 포함할 것이다.On the other hand, the contents of the present invention described above are only specific examples for carrying out the invention. The present invention will include not only specific and practically usable means itself, but also technical ideas that are abstract and conceptual ideas that can be utilized as future technologies.

100, 1100: 메모리 관리 장치
110, 1110: 메모리 할당/해제 모듈
120, 1120: 메모리 관리 모듈
1000: 운용체제
2000: 하드웨어
1200: 성능 모니터링 스프트웨어 모듈
2200: 성능 모니터링 하드웨어 모듈
100, 1100: memory management device
110, 1110: memory allocation/release module
120, 1120: memory management module
1000: operating system
2000: hardware
1200: performance monitoring software module
2200: performance monitoring hardware module

Claims (1)

적어도 2개의 서로 다른 종류의 메모리를 관리하는 메모리 관리 장치의 동작 방법에 있어서,
메모리 할당/해제 모듈에서 응용프로그램으로부터 메모리 할당 요청을 수신하는 단계;
상기 메모리 할당/해제 모듈에서 상기 응용프로그램의 특성과 관련된 부가 정보를 이용하여 상기 응용프로그램의 특성을 분석하는 단계;
상기 분석된 특성에 따라 시스템에 존재하는 메모리별 우선순위를 결정하는 단계; 및
상기 결정된 우선순위를 이용하여 상기 메모리 할당 요청에 대응하는 메모리를 할당하는 단계를 포함하는 방법.
In the method of operating a memory management device for managing at least two different types of memories,
Receiving a memory allocation request from an application program in a memory allocation/release module;
Analyzing the characteristics of the application program using additional information related to the characteristics of the application program in the memory allocation/release module;
Determining a priority for each memory existing in the system according to the analyzed characteristics; And
Allocating a memory corresponding to the memory allocation request by using the determined priority.
KR1020190044194A 2019-04-16 2019-04-16 Memory management unit based on characteristics of heterogeneous memories and operating method thereof Withdrawn KR20200121533A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190044194A KR20200121533A (en) 2019-04-16 2019-04-16 Memory management unit based on characteristics of heterogeneous memories and operating method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190044194A KR20200121533A (en) 2019-04-16 2019-04-16 Memory management unit based on characteristics of heterogeneous memories and operating method thereof

Publications (1)

Publication Number Publication Date
KR20200121533A true KR20200121533A (en) 2020-10-26

Family

ID=73006070

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190044194A Withdrawn KR20200121533A (en) 2019-04-16 2019-04-16 Memory management unit based on characteristics of heterogeneous memories and operating method thereof

Country Status (1)

Country Link
KR (1) KR20200121533A (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160008885A (en) 2014-07-15 2016-01-25 삼성전자주식회사 Memory Managing Method and Electonic Device
KR101618634B1 (en) 2009-01-07 2016-05-09 삼성전자주식회사 Non-Volatile memory, page dynamic allocation apparatus and page mapping apparatus therefor, and page dynamic allocation method and page mapping method therefor
KR20170070920A (en) 2015-12-14 2017-06-23 삼성전자주식회사 Nonvolatile memory module, computing system having the same, and operating method thereof

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101618634B1 (en) 2009-01-07 2016-05-09 삼성전자주식회사 Non-Volatile memory, page dynamic allocation apparatus and page mapping apparatus therefor, and page dynamic allocation method and page mapping method therefor
KR20160008885A (en) 2014-07-15 2016-01-25 삼성전자주식회사 Memory Managing Method and Electonic Device
KR20170070920A (en) 2015-12-14 2017-06-23 삼성전자주식회사 Nonvolatile memory module, computing system having the same, and operating method thereof

Similar Documents

Publication Publication Date Title
US9330055B2 (en) Modular architecture for extreme-scale distributed processing applications
US8402248B2 (en) Explicitly regioned memory organization in a network element
US20160232640A1 (en) Resource management
KR102043276B1 (en) Apparatus and method for dynamic resource allocation based on interconnect fabric switching
US20200174926A1 (en) Apparatuses and methods for allocating memory in a data center
US11520700B2 (en) Techniques to support a holistic view of cache class of service for a processor cache
WO2018182473A1 (en) Performance manager and method performed thereby for managing the performance of a logical server of a data center
US20170212706A1 (en) Use efficiency of platform memory resources through firmware managed i/o translation table paging
TWI731487B (en) System-level cache
EP4064022A1 (en) Cooperative storage architecture
US9104583B2 (en) On demand allocation of cache buffer slots
CN108139983A (en) Method and apparatus for fixing memory pages in multi-level system memory
US9697047B2 (en) Cooperation of hoarding memory allocators in a multi-process system
US20180203733A1 (en) Computer and control method for computer
CN110447019B (en) Memory allocation manager and method for managing memory allocation performed thereby
EP2757475A2 (en) Method and system for dynamically changing page allocator
CN119690862A (en) Memory allocation method, device, electronic device and non-volatile storage medium
CN112162818B (en) Virtual memory allocation method and device, electronic equipment and storage medium
KR20200121533A (en) Memory management unit based on characteristics of heterogeneous memories and operating method thereof
CN116401043A (en) Execution method of computing task and related equipment
US11714753B2 (en) Methods and nodes for handling memory
US20250315379A1 (en) Memory sub-system aware prefetching in a disaggregated memory environment
US10412193B2 (en) Usage-aware standby service in a grid environment
KR20160098856A (en) Method for Task Allocation and Node Activation for Energy-Proportional MapReduce Clusters
KR20220078787A (en) Operating method of computing device and computer readable storage medium storing instructions

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20190416

PG1501 Laying open of application
PC1203 Withdrawal of no request for examination