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 PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5016—Allocation 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
Description
본 발명은 이종 메모리의 특성에 기반한 메모리 관리 장치 및 그것의 동작 방법에 관한 것이다.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.
본 발명의 목적은 시스템에서 운용되는 다양한 종류의 메모리의 특성에 따라 정적 혹은 동적으로 분석된 사용자 응용 프로그램의 속성에 기반하여 효율적으로 작동 가능한 메모리를 선택하여 할당하고, 실행되는 상황에 따라 적응적으로 운용 및 관리가 가능하게 함으로써 성능, 메모리 용량, 에너지 사용량 등 효과적인 최적화가 가능하도록, 메모리 관리 장치 및 그것의 동작 방법을 제공하는 데 있다.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
3 is a flowchart illustrating a memory allocation method of the memory allocation/
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/
5 is a flowchart illustrating a memory migration method of the
6 is a flowchart illustrating a memory reallocation method performed by the memory allocation/
7 is a diagram illustrating an example interaction between a memory allocation/
아래에서는 도면들을 이용하여 본 발명의 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있을 정도로 본 발명의 내용을 명확하고 상세하게 기재할 것이다.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
메모리 할당/해제 모듈(100)은 다양한 메모리별 특성과 메모리를 요청한 응용 프로그램의 특성을 고려하여 최적의 메모리를 선택하고, 메모리를 할당 및 해제하는 기능을 수행할 수 있다.The memory allocation/
메모리 관리 모듈(120)은 할당된 메모리를 시스템의 동적 상황에 기반하여 필요시 다른 메모리로의 이주(Migration)를 수행할 수 있다.The
한편, 메모리 관리 장치(100)는 기존 운영체제에서 기본적으로 제공하는 페이징 기반 가상 메모리 관리 기능을 더 포함할 수 있다. Meanwhile, the
도 3은 본 발명의 실시 예에 따른 메모리 할당/해제 모듈(110)의 메모리 할당 방법을 예시적으로 보여주는 흐름도이다. 도 3을 참조하면, 메모리 할당/해제 모듈(110)의 메모리 할당 동작은 다음과 같이 진행될 수 있다.3 is a flowchart illustrating a memory allocation method of the memory allocation/
사용자 응용프로그램에서 메모리 할당 요청이 발생하면, 메모리 할당/해제 모듈(110)은 사용자 응용 프로그램의 특성을 분석할 수 있다(S110). 이 때, 응용 프로그램으로부터 특성과 관련된 부가 정보가 필요하다. 이후에 메모리 할당/해제 모듈(110)은 사용자 응용프로그램의 특성에 근거로 하여 최적화된 정도에 따라 현재 시스템에 존재하는 메모리 별 우선순위를 결정할 수 있다(S120). When a memory allocation request occurs in the user application program, the memory allocation/
메모리 할당/해제 모듈(110)은 가장 높은 우선순위(Prio1)의 메모리부터(S130) 요청 받은 크기만큼 할당 가능한지 여부를 판별할 수 있다(S140). 만일, 메모리 할당이 가능하면, 메모리 할당/해제 모듈(110)은 메모리를 할당하여 사용자에게 전달한 후 종료할 수 있다(S150). 반면에, 메모리 할당이 가능하지 않으면, 우선순위가 가장 낮은 우선순위(PrioN)인지가 판별될 수 있다(S160). 만일, 가장 낮은 우선순위(PrioN)의 메모리에서도 할당이 실패할 경우 메모리 할당 실패로 작업을 종료될 수 있다. 반면에, 우선순위가 가장 낮은 우선순위(PrioN)가 아니라면, 우선순위를 감소시킨 후에 S140 단계가 진입될 수 있다.The memory allocation/
한편, 메모리 해제 알고리즘은 먼저 해제 요청된 메모리 주소가 유효한 영역인지 검사한 후, 주소에 대응하는하는 메모리 영역을 해제한 후 종료할 수 있다.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/
실시 예에 있어서, 사용자가 프로그램의 특성을 이미 파악하고 있다면, 직접 컴파일러에게 힌트(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/
도 5는 본 발명의 실시 예에 따른 메모리 관리 모듈(120)의 메모리 이주 방법을 예시적으로 보여주는 흐름도이다. 도 5를 참조하면, 메모리 관리 모듈(120)의 메모리 이주 동작은 다음과 같이 진행될 수 있다.5 is a flowchart illustrating a memory migration method of the
일반적으로 메모리 이주가 필요한 이유는 프로그램 실행 전에 분석된 정보를 기반으로 메모리를 할당할 경우 동적 실행 상황에 따라 현재 상황에 더 적합한 메모리가 변경될 수 있기 때문이다.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
메모리 관리 모듈(120)은 새로운 동적 실행 특성이 현재 할당된 메모리 특성에 맞지 않는 지를 판별할 수 있다(S220).The
만일, 동적 실행 특성과 할당된 메모리 특성이 맞으면, 그대로 메모리 이주 동작이 종료될 수 있다. 반면에, 동적 실행 특성과 할당된 메모리 특성이 맞지 않을 경우, 메모리 관리 모듈(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
이후, 메모리 관리 모듈(120)은 메모리 할당/해제 모듈(110)에 새롭게 할당 가능한 메모리를 요청할 수 있다(S240).Thereafter, the
이후, 메모리 관리 모듈(120)는 메모리 이주가 가능한 지를 판별할 수 있다(S250). 만일, 메모리 이주가 가능하면, 메모리 관리 모듈(120)은 메모리 할당/해제 모듈(110)로부터 전달받은 물리 주소를 이용하여 페이지 테이블을 업데이트할 수 있다(S260). 여기서 페이지 테이블을 업데이트하는 이유는 새롭게 할당된 메모리의 물리 주소가 변경되더라도 사용자의 가상 주소는 그대로 사용 가능하도록 새롭게 매핑하는 작업이 필요하기 때문이다. 반면에, 메모리 이주가 불가능하면, 그대로 메모리 이주 동작이 종료될 수 있다.Thereafter, the
도 6은 본 발명의 실시 예에 따른 메모리 이주 필요시 메모리 할당/해제 모듈(110)에서 수행하는 메모리 재할당 방법을 예시적으로 보여주는 흐름도이다. 도 6을 참조하면, 메모리 할당/해제 모듈(110)의 메모리 재할당 동작은 다음과 같이 진행될 수 있다.6 is a flowchart illustrating a memory reallocation method performed by the memory allocation/
메모리 관리 모듈(120)로부터 이주 요청이 들어오면, 메모리 할당/해제 모듈(110)은 우선순위를 최상위 우선순위(New_Prio)로 설정하고(S310), 할당 가능한 메모리가 존재하는 지를 판별할 수 있다(S320). 만일, 우선순위에 대응하는 할당 가능한 메모리가 존재할 때, 메모리 할당/해제 모듈(110)은 대응하는 메모리의 물리 주소를 메모리 관리 모듈(120)에 전달할 수 있고(S330), 이후에 메모리 이주 동작이 종료될 수 있다.When a migration request is received from the
반면에, 우선순위에 대응하는 할당 가능한 메모리가 존재하지 않을 때, 우선 순위가 최하위 우선순위(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/
도 7은 본 발명의 실시 예에 따른 메모리 할당/해제 모듈(1110), 메모리 관리 모듈(1120), 운영체제(1000) 및 하드웨어(2000) 간의 상호작용을 예시적으로 보여주는 도면이다.7 is a diagram illustrating an example interaction between a memory allocation/
실시 예에 있어서, 메모리 관리 모듈(1120)은 메모리 이주 필요시 메모리 할당/해제 모듈(1110)에 요청할 수 있다.In an embodiment, the
실시 예에 있어서, 메모리 할당/해제 모듈(1110)은 이주 가능한 메모리 할당시 대응하는 주소를 메모리 관리 모듈(1120)에 전달할 수 있다. In an embodiment, the memory allocation/
또한, 실시 예에 있어서, 메모리 관리 모듈(1120)은 사용자 응용 프로그램의 동적 특성을 분석하기 위해 운영체제(1000)의 성능 모니터링 소프트웨어 모듈(1200) 혹은 하드웨어(2000)의 성능 모니터링 하드웨어 모듈(2200)로부터 필요한 정보를 전달 받을 수 있다. 예를 들어, 메모리 관리 모듈(1100)은 대응하는 프로그램의 메모리의 읽기/쓰기 회수 정보를 운영체제(1000) 혹은 하드웨어(2000)로부터 수집, 분석하여, 현재 메모리 접근 특성에 더 잘 부합하는 메모리로의 이주를 고려할 수 있다.In addition, in an embodiment, the
본 발명의 실시 예에 따른 이종 메모리의 특성에 기반한 메모리 관리 장치 및 그것의 동작 방법은 다양한 특성을 가진 이종 메모리가 탑재된 컴퓨팅 시스템에서 기존 소프트웨어 구동시 발생할 수 있는 비효율적인 메모리 운용을 방지할 수 있다. 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)
메모리 할당/해제 모듈에서 응용프로그램으로부터 메모리 할당 요청을 수신하는 단계;
상기 메모리 할당/해제 모듈에서 상기 응용프로그램의 특성과 관련된 부가 정보를 이용하여 상기 응용프로그램의 특성을 분석하는 단계;
상기 분석된 특성에 따라 시스템에 존재하는 메모리별 우선순위를 결정하는 단계; 및
상기 결정된 우선순위를 이용하여 상기 메모리 할당 요청에 대응하는 메모리를 할당하는 단계를 포함하는 방법.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.
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)
| 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 |
-
2019
- 2019-04-16 KR KR1020190044194A patent/KR20200121533A/en not_active Withdrawn
Patent Citations (3)
| 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 |