KR20170122088A - Method and apparatus for processing memory object on non-volatile memory - Google Patents
Method and apparatus for processing memory object on non-volatile memory Download PDFInfo
- Publication number
- KR20170122088A KR20170122088A KR1020160155961A KR20160155961A KR20170122088A KR 20170122088 A KR20170122088 A KR 20170122088A KR 1020160155961 A KR1020160155961 A KR 1020160155961A KR 20160155961 A KR20160155961 A KR 20160155961A KR 20170122088 A KR20170122088 A KR 20170122088A
- Authority
- KR
- South Korea
- Prior art keywords
- page
- memory
- memory object
- allocated
- stored
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
Description
아래의 설명은 비휘발성 메모리 상의 메모리 객체 처리 방법 및 메모리 객체 처리 장치에 관한 것으로, 보다 구체적으로는 비휘발성 메모리 상에 할당된 하나 이상의 구조체를 포함하는 페이지와 하나 이상의 메모리 객체를 포함하는 페이지를 이용함으로써 비휘발성 메모리 상에서 메모리 객체를 처리할 수 있는 방법 및 장치에 관한 것이다.The following description relates to a memory object processing method and a memory object processing apparatus on a nonvolatile memory, and more particularly, to a memory object processing method and a memory object processing apparatus using a page including one or more structures allocated on a nonvolatile memory and a page including one or more memory objects To a method and apparatus capable of processing a memory object on a non-volatile memory.
컴퓨팅 시스템은 빈번히 할당되거나 또는 해제되는 메모리 객체를 페이지 단위로 미리 할당하여 사용한다. 이러한 컴퓨팅 시스템은 메모리 객체를 캐싱하기 위해 슬랩 메모리 할당기를 사용하고 있다.The computing system preallocates and uses memory objects that are frequently allocated or released in units of pages. These computing systems use slap memory allocators to cache memory objects.
다만, 슬랩 메모리 할당기는 캐싱할 메모리 객체 및 메모리 객체를 관리하기 위한 메타데이터의 구조체가 휘발성 메모리에 위치한다. 기존의 메모리 객체 캐싱 기법에서는 비휘발성 메모리에 메모리 객체를 캐싱하고자 할 경우 슬랩 메모리 할당기를 이용할 수 없었다. However, in the slap memory allocator, a memory object to be cached and a structure of metadata for managing the memory object are located in the volatile memory. In the conventional memory object caching technique, the slap memory allocator can not be used when the memory object is cached in the nonvolatile memory.
빈번한 메모리 객체에 대한 할당 또는 해제가 발생하고, 시스템이 재부팅된 이후에도 데이터가 유지해야 하는 메모리 객체가 휘발성 메모리에 캐싱되는 경우, 메모리 객체에 대한 영속성이 보장될 수 없다. 따라서, 메모리 객체의 영속성을 보장하면서도 손쉽게 메모리 객체에 대한 캐싱을 수행할 수 있는 방법이 요구되고 있다.If allocation or freeing of a frequent memory object occurs and the memory object that the data should hold even after the system is rebooted is cached in the volatile memory, persistence to the memory object can not be guaranteed. Accordingly, there is a demand for a method that can easily perform caching of a memory object while guaranteeing the durability of the memory object.
본 발명은 하나 이상의 구조체를 포함하는 페이지와 하나 이상의 메모리 객체를 포함하는 페이지를 이용하여 비휘발성 메모리에 메모리 객체를 캐싱함으로써, 비휘발성 메모리 상에서 메모리 객체의 캐싱을 위한 슬랩 할당기를 이용하지 않으면서도 메모리 객체를 비휘발성 메모리에 영속적으로 저장할 수 있다.The present invention provides a method and system for caching a memory object in a non-volatile memory by using a page containing one or more structures and a page containing one or more memory objects to cache memory objects in non-volatile memory, The object can be persistently stored in non-volatile memory.
본 발명은 기존의 슬랩 캐시를 이용한 할당 방식대신 비트맵을 이용하여 메모리 객체를 처리하는 방식을 통해, 효과적으로 비휘발성 메모리에 데이터 객체를 캐싱할 수 있다.The present invention can efficiently cache data objects in a nonvolatile memory by processing a memory object using a bitmap instead of an existing slab cache allocation scheme.
본 발명은 비휘발성 메모리 영역에서 빈번히 메모리 객체에 대한 할당 또는 해제가 발생하고, 시스템이 재시작되어도 메모리 객체를 유지하는 메모리 객체 관리가 필요한 소프트웨어 및 이러한 할당기가 필요한 운영체제에서 슬랩 및 파일을 사용하지 않고, 메모리 객체 캐싱 기법을 구현할 수 있다.The present invention relates to an apparatus and a method for allocating or releasing a memory object frequently in a nonvolatile memory area, software that requires memory object management to maintain a memory object even when the system is restarted, A memory object caching technique can be implemented.
본 발명은 데이터 객체를 관리하는 구조체를 비휘발성 메모리에 적합한 형태로 영속화함으로써, 시스템이 재시작되더라도 영속적으로 저장된 데이터 객체에 대한 접근이 가능할 수 있다.The present invention enables persistent storage of persistent data objects even if the system is restarted by persisting the structure for managing data objects in a form suitable for non-volatile memory.
일실시예에 따른 메모리 객체 처리 방법은 메모리 객체에 대한 할당 요청에 기초하여 비휘발성 메모리에 저장된 메모리 캐시 리스트를 확인하는 단계; 상기 메모리 캐시 리스트와 연결되고 제1 페이지에 포함된 제1 구조체를 확인하는 단계; 및 상기 제1 구조체에 기초하여 상기 제1 페이지에 포함된 제2 구조체를 확인함으로써 상기 제2 구조체에 대응하는 제2 페이지에 상기 메모리 객체의 할당이 가능한지 여부를 판단하는 단계를 포함하고, 상기 제1 페이지 및 제2 페이지는 상기 비휘발성 메모리에 저장될 수 있다.A method of processing a memory object according to an exemplary embodiment includes: checking a memory cache list stored in a non-volatile memory based on an allocation request for a memory object; Identifying a first structure associated with the memory cache list and included in a first page; And determining whether allocation of the memory object to a second page corresponding to the second structure is possible by checking a second structure included in the first page based on the first structure, The first page and the second page may be stored in the nonvolatile memory.
일실시예에 따른 메모리 객체 처리 방법에서 상기 제1 구조체는, 상기 제1 페이지에 상기 제2 구조체에 대한 데이터를 포함하고, 상기 제2 구조체는, 상기 제1 페이지와 구분되고 하나 이상의 메모리 객체를 포함하는 상기 페이지에 대한 데이터를 포함할 수 있다.In a method of processing a memory object according to an embodiment, the first structure includes data for the second structure on the first page, and the second structure includes data on one or more memory objects And may include data for the included page.
일실시예에 따른 메모리 객체 처리 방법은 상기 제2 페이지에 상기 메모리 객체의 할당이 가능한 경우, 상기 메모리 객체가 할당될 제2 페이지의 여유 공간을 나타내는 상기 제2 구조체의 비트맵을 업데이트하고 상기 여유 공간에 대한 주소를 반환하는 단계를 더 포함할 수 있다.The memory object processing method according to an embodiment updates a bitmap of the second structure indicating a free space of a second page to which the memory object is to be allocated when the memory object can be allocated to the second page, And returning an address for the space.
일실시예에 따른 메모리 객체 처리 방법은 상기 메모리 객체를 상기 제2 페이지의 여유 공간에 영속적으로 저장하는 단계를 더 포함할 수 있다.The memory object processing method according to an embodiment may further include storing the memory object in the free space of the second page.
일실시예에 따른 메모리 객체 처리 방법은 상기 제2 페이지에 상기 메모리 객체의 할당이 가능하지 않는 경우, 하나 이상의 메모리 객체를 저장할 수 있는 제3 페이지를 상기 비휘발성 메모리에 할당하는 단계; 및 상기 메모리 객체가 할당될 제3 페이지의 여유 공간에 대한 주소를 반환하는 단계를 더 포함할 수 있다.The method may further include allocating a third page to the non-volatile memory, the third page being capable of storing one or more memory objects if the second page is not allocatable to the memory object; And returning an address of the free space of the third page to which the memory object is to be allocated.
일실시예에 따른 메모리 객체 처리 방법은 상기 제3 페이지를 관리하는 제3 구조체를 상기 제1 페이지에 할당하고, 상기 제3 구조체가 할당된 공간에 기초하여 상기 제1 구조체의 비트맵을 업데이트하는 단계를 더 포함할 수 있다.The method of processing a memory object according to an embodiment may include allocating a third structure for managing the third page to the first page and updating the bitmap of the first structure based on the space allocated for the third structure Step < / RTI >
일실시예에 따른 메모리 객체 처리 방법은 상기 제3 페이지를 관리하는 제3 구조체를 상기 제1 페이지에 할당할 수 없는 경우, 하나 이상의 구조체를 저장할 수 있는 제4 페이지를 상기 비휘발성 메모리에 할당하는 단계; 및 상기 제3 구조체를 상기 제4 페이지에 할당하고, 상기 제3 구조체가 할당된 공간에 기초하여 상기 제4 페이지에 첫 번째로 포함된 제4 구조체의 비트맵을 업데이트하는 단계를 더 포함할 수 있다.The memory object processing method according to an embodiment allocates, to the non-volatile memory, a fourth page capable of storing one or more structures when a third structure for managing the third page can not be allocated to the first page step; And assigning the third structure to the fourth page and updating the bitmap of the fourth structure included first in the fourth page based on the space allocated by the third structure have.
일실시예에 따른 메모리 객체 처리 방법에서 상기 제1 페이지에 첫 번째로 포함된 제1 구조체와 상기 제4 페이지에 첫 번째로 포함된 제4 구조체는, 상기 메모리 캐시 리스트를 통해 서로 연결될 수 있다.In the method of processing a memory object according to an exemplary embodiment, the first structure included first in the first page and the fourth structure included first in the fourth page may be connected to each other through the memory cache list.
일실시예에 따른 메모리 객체 처리 방법에서 상기 메모리 캐시 리스트는, 상기 비휘발성 메모리의 슈퍼블록에 저장될 수 있다.In a method of processing a memory object according to an embodiment, the memory cache list may be stored in a super block of the non-volatile memory.
일실시예에 따른 메모리 객체 처리 방법에서 상기 제1 구조체는, 상기 제1 페이지에 저장된 제2 구조체의 타입, 상기 비휘발성 메모리에서 제1 페이지의 주소 및 상기 제1 페이지에 저장된 제2 구조체에 대한 비트맵 중 적어도 하나를 포함할 수 있다.In a method of processing a memory object according to an embodiment, the first structure may include a type of a second structure stored in the first page, an address of the first page in the non-volatile memory, and a second structure stored in the first page, And a bitmap.
일실시예에 따른 메모리 객체 처리 방법에서 상기 제2 구조체는, 상기 제2 페이지에 저장된 데이터 객체의 타입, 상기 비휘발성 메모리에서 제2 페이지의 주소 및 상기 제2 페이지에 저장된 메모리 객체에 대한 비트맵 중 적어도 하나를 포함할 수 있다.In a method of processing a memory object according to an embodiment, the second structure includes a type of a data object stored in the second page, an address of a second page in the nonvolatile memory, and a bitmap Or the like.
일실시예에 따른 메모리 객체 처리 장치는 메모리 객체를 처리하는 프로세서를 포함하고, 상기 프로세서는, 상기 메모리 객체에 대한 할당 요청에 기초하여 비휘발성 메모리에 저장된 메모리 캐시 리스트를 확인하고, 상기 메모리 캐시 리스트와 연결되고 제1 페이지에 포함된 제1 구조체를 확인하며, 상기 제1 구조체에 기초하여 상기 제1 페이지에 포함된 제2 구조체를 확인함으로써 상기 제2 구조체에 대응하는 제2 페이지에 상기 메모리 객체의 할당이 가능한지 여부를 판단하고, 상기 제1 페이지 및 제2 페이지는 상기 비휘발성 메모리에 저장될 수 있다.According to one embodiment, a memory object processing apparatus includes a processor for processing a memory object, the processor for identifying a memory cache list stored in a non-volatile memory based on an allocation request for the memory object, Identifying a first structure included in the first page linked to the first page and identifying a second structure included in the first page based on the first structure, , And the first page and the second page may be stored in the nonvolatile memory.
일실시예에 따른 메모리 객체 처리 장치에서 상기 제1 구조체는, 상기 제1 페이지에 상기 제2 구조체에 대한 데이터를 포함하고, 상기 제2 구조체는, 상기 제1 페이지와 구분되고 하나 이상의 메모리 객체를 포함하는 상기 페이지에 대한 데이터를 포함할 수 있다.In the apparatus for processing a memory object according to an embodiment, the first structure includes data for the second structure on the first page, and the second structure is divided from the first page and includes one or more memory objects And may include data for the included page.
일실시예에 따른 메모리 객체 처리 장치에서 상기 프로세서는, 상기 제2 페이지에 상기 메모리 객체의 할당이 가능한 경우, 상기 메모리 객체가 할당될 제2 페이지의 여유 공간을 나타내는 상기 제2 구조체의 비트맵을 업데이트하고 상기 여유 공간에 대한 주소를 반환할 수 있다.In a memory object processing apparatus according to an embodiment, when the memory object is allocatable to the second page, the processor allocates a bitmap of the second structure indicating a free space of a second page to which the memory object is allocated And can return an address for the free space.
일실시예에 따른 메모리 객체 처리 장치에서 상기 프로세서는, 상기 메모리 객체를 상기 제2 페이지의 여유 공간에 영속적으로 저장할 수 있다.In a memory object processing apparatus according to an embodiment, the processor may permanently store the memory object in the free space of the second page.
일실시예에 따른 메모리 객체 처리 장치에서 상기 프로세서는, 상기 제2 페이지에 상기 메모리 객체의 할당이 가능하지 않는 경우, 하나 이상의 메모리 객체를 저장할 수 있는 제3 페이지를 상기 비휘발성 메모리에 할당하고, 상기 메모리 객체가 할당될 제3 페이지의 여유 공간에 대한 주소를 반환할 수 있다.In a memory object processing apparatus according to an embodiment, the processor allocates to the non-volatile memory a third page capable of storing one or more memory objects when allocation of the memory object to the second page is not possible, The address of the free space of the third page to which the memory object is to be allocated.
일실시예에 따르면, 하나 이상의 구조체를 포함하는 페이지와 하나 이상의 메모리 객체를 포함하는 페이지를 이용하여 비휘발성 메모리에 메모리 객체를 캐싱함으로써, 비휘발성 메모리 상에서 메모리 객체의 캐싱을 위한 슬랩 할당기를 이용하지 않으면서도 메모리 객체를 비휘발성 메모리에 영속적으로 저장할 수 있다.According to one embodiment, by using a page containing one or more structures and a page containing one or more memory objects to cache memory objects in non-volatile memory, a slab allocator for caching of memory objects on non- Memory objects can be stored persistently in non-volatile memory.
일실시예에 따르면, 비휘발성 메모리 영역에서 빈번히 메모리 객체에 대한 할당 또는 해제가 발생하고, 시스템이 재시작되어도 메모리 객체를 유지하는 메모리 객체 관리가 필요한 소프트웨어 및 이러한 할당기가 필요한 운영체제에서 슬랩 및 파일을 사용하지 않고, 메모리 객체 캐싱 기법을 구현할 수 있다.According to one embodiment, software that frequently needs to be allocated or released for a memory object in a non-volatile memory area, memory object management that maintains memory objects even when the system is restarted, and software that requires such allocators to use slabs and files It is possible to implement a memory object caching technique.
일실시예에 따르면, 데이터 객체를 관리하는 구조체를 비휘발성 메모리에 적합한 형태로 영속화함으로써, 시스템이 재시작되더라도 영속적으로 저장된 데이터 객체에 대한 접근이 가능할 수 있다.According to one embodiment, persistence of a structure for managing a data object in a form suitable for non-volatile memory allows access to persistently stored data objects even when the system is restarted.
일실시예에 따르면, 기존의 슬랩 캐시를 이용한 할당 방식대신 비트맵을 이용하여 메모리 객체를 처리하는 방식을 통해, 효과적으로 비휘발성 메모리에 데이터 객체를 캐싱할 수 있다.According to an exemplary embodiment, a data object can be effectively cached in a non-volatile memory through a method of processing a memory object using a bitmap instead of an allocation method using an existing slab cache.
도 1은 일실시예에 따라 비휘발성 메모리의 구조를 설명하기 위한 도면이다.
도 2는 일실시예에 따른 메모리 캐시 리스트를 설명하기 위한 도면이다.
도 3은 일실시예에 따라 메모리 객체를 포함하는 페이지를 관리하는 제2 구조체를 설명하기 위한 도면이다.
도 4는 일실시예에 따라 새로운 페이지에 메모리 객체를 할당하는 과정을 설명하기 위한 도면이다.
도 5는 다른 일실시예에 따라 새로운 페이지에 메모리 객체를 할당하는 과정을 설명하기 위한 도면이다.
도 6은 일실시예에 따른 메모리 객체 처리 방법을 나타낸 도면이다.1 is a diagram for explaining a structure of a nonvolatile memory according to an embodiment.
FIG. 2 is a view for explaining a memory cache list according to an embodiment.
3 is a diagram for describing a second structure for managing a page including a memory object according to an embodiment.
4 is a diagram illustrating a process of allocating a memory object to a new page according to an embodiment of the present invention.
5 is a diagram illustrating a process of allocating a memory object to a new page according to another embodiment of the present invention.
FIG. 6 illustrates a method of processing a memory object according to an exemplary embodiment. Referring to FIG.
실시예들에 대한 특정한 구조적 또는 기능적 설명들은 단지 예시를 위한 목적으로 개시된 것으로서, 다양한 형태로 변경되어 실시될 수 있다. 따라서, 실시예들은 특정한 개시형태로 한정되는 것이 아니며, 본 명세서의 범위는 기술적 사상에 포함되는 변경, 균등물, 또는 대체물을 포함한다.Specific structural or functional descriptions of embodiments are set forth for illustration purposes only and may be embodied with various changes and modifications. Accordingly, the embodiments are not intended to be limited to the particular forms disclosed, and the scope of the disclosure includes changes, equivalents, or alternatives included in the technical idea.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 해석되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.The terms first or second, etc. may be used to describe various elements, but such terms should be interpreted solely for the purpose of distinguishing one element from another. For example, the first component may be referred to as a second component, and similarly, the second component may also be referred to as a first component.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.It is to be understood that when an element is referred to as being "connected" to another element, it may be directly connected or connected to the other element, although other elements may be present in between.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The singular expressions include plural expressions unless the context clearly dictates otherwise. In this specification, the terms "comprises ", or" having ", and the like, are used to specify one or more of the described features, numbers, steps, operations, elements, But do not preclude the presence or addition of steps, operations, elements, parts, or combinations thereof.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.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. Terms such as those defined in commonly used dictionaries are to be interpreted as having a meaning consistent with the meaning of the context in the relevant art and, unless explicitly defined herein, are to be interpreted as ideal or overly formal Do not.
하기에서 설명될 실시예들은 메모리 객체를 처리하는데 사용될 수 있다. 메모리 객체를 처리하는 동작에는 메모리 객체를 할당(allocate)하는 동작, 메모리 객체를 해제(free)하는 동작, 메모리 객체를 캐싱(caching)하는 동작 중 적어도 하나가 포함될 수 있다. 실시예들은 퍼스널 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 스마트 폰, 웨어러블 장치, 스마트 가전 기기, 지능형 자동차 등 다양한 형태의 제품으로 구현될 수 있다. 예를 들어, 실시예들은 퍼스널 컴퓨터, 랩톱 컴퓨터, 스마트 폰 등에서 메모리 객체를 처리하는데 적용될 수 있다. 이하, 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.The embodiments described below can be used to process memory objects. The operations to process a memory object may include at least one of allocating a memory object, freeing a memory object, and caching a memory object. Embodiments may be implemented in a variety of products, such as personal computers, laptop computers, tablet computers, smart phones, wearable devices, smart home appliances, and intelligent automobiles. For example, embodiments may be applied to processing memory objects in personal computers, laptop computers, smart phones, and the like. Hereinafter, embodiments will be described in detail with reference to the accompanying drawings. Like reference symbols in the drawings denote like elements.
도 1은 일실시예에 따라 비휘발성 메모리의 구조를 설명하기 위한 도면이다.1 is a diagram for explaining a structure of a nonvolatile memory according to an embodiment.
데이터를 저장할 수 있는 메모리의 종류로는 휘발성 메모리와 비휘발성 메모리가 존재한다. 휘발성 메모리는 저장된 데이터를 유지하기 위해서는 지속적인 전력 공급이 요구되는 메모리를 의미한다. 반면, 비휘발성 메모리는 지속적인 전력 공급이 요구되지 않는 메모리로서, 전력 공급이 중단되더라도 저장된 데이터를 유지할 수 있다. 즉, 비휘발성 메모리는 시스템이 종료되거나 재시작되더라도 저장된 데이터를 그대로 유지할 수 있으나, 휘발성 메모리의 경우 시스템이 종료되거나 재시작되면 저장된 데이터가 손실된다.There are volatile memory and nonvolatile memory as types of memory that can store data. Volatile memory is a memory that requires continuous power supply to maintain stored data. On the other hand, non-volatile memory is a memory that does not require continuous power supply, and can retain stored data even if the power supply is interrupted. That is, the nonvolatile memory can maintain the stored data even if the system is shut down or restarted, but in the case of volatile memory, the stored data is lost when the system is shut down or restarted.
메모리 객체는 사용자 응용 프로그램에 의해 생성된 데이터를 포함할 수 있다. 일반적으로 이러한 메모리 객체는 빈번히 할당되거나 또는 해제될 수 있다. 따라서, 이러한 메모리 객체가 휘발성 메모리가 아닌 비휘발성 메모리에 할당될 경우, 시스템이 종료되거나 재시작되더라도 할당된 메모리 객체가 손실되는 상황이 발생하지 않으며, 전력 공급이 중단되더라도 할당된 메모리 객체를 유지할 수 있다.The memory object may contain data generated by a user application program. In general, these memory objects may be allocated or freed frequently. Therefore, when such a memory object is allocated to a non-volatile memory other than a volatile memory, there is no possibility that the allocated memory object is lost even if the system is shut down or restarted, and the allocated memory object can be maintained even if the power supply is interrupted .
메모리 객체를 비휘발성 메모리에 할당하는 과정에 대해서는 도 1을 참조하여 설명한다.A process of allocating a memory object to a nonvolatile memory will be described with reference to FIG.
도 1을 참조하면, 하나 이상의 페이지(120, 130, 150)를 포함하는 비휘발성 메모리(100)가 도시된다.Referring to FIG. 1, a
비휘발성 메모리(100)는 앞서 설명한 바와 같이 전력 공급이 중간에 중단되더라도 저장된 데이터를 유지할 수 있는 메모리로서, 메모리 객체 리스트(110), 복수의 페이지들(120, 130, 150)을 포함할 수 있다. 예시적으로 도시된 도 1에서는, 휘발성 메모리가 직접적으로 도시되지 않았으나, 비휘발성 메모리(100)와 함께 이용될 수도 있고 또는, 비휘발성 메모리(100)만을 이용하여 메모리 객체를 처리할 수도 있다.The
먼저 메모리 객체에 대한 할당 요청이 발생하면, 비휘발성 메모리(100)에 포함된 메모리 객체 리스트(110)가 참조될 수 있다. First, when an allocation request for a memory object occurs, the
메모리 객체 리스트(110)는 비휘발성 메모리(100)에 저장되고 하나 이상의 구조체를 포함하는 페이지로 연결될 수 있다. 메모리 객체 리스트(110)는 비휘발성 메모리(100)의 슈퍼블록(superblock)에 포함될 수 있다. 슈퍼블록은 커널 영역에 존재하는 영속 객체 관리를 위한 루트 자료구조로서, 영속 객체를 관리하고 있는 모든 자료구조에 접근이 가능하다. 일실시예에 따른 슈퍼블록은 비휘발성 메모리(100)의 첫 번째 페이지에 고정 할당될 수 있다. The
메모리 객체 리스트(110)를 통해서, 하나 이상의 구조체를 포함하는 페이지로 연결될 수 있다.Through the
비휘발성 메모리(100)에는 하나 이상의 구조체를 포함하는 페이지(예컨대, 도 1의 제1 페이지(120), 제4 페이지(150) 등)와 하나 이상의 데이터 객체를 포함하는 페이지(예컨대, 도 1의 제2 페이지(130) 등)가 포함될 수 있다.
예시적으로 도시된 도 1을 참조하면, 하나 이상의 구조체를 포함하는 페이지로 제1 페이지(120) 및 제4 페이지(150)가 도시되어 있다. 이하에서는 설명의 편의를 위해 제1 페이지(120)를 중심으로 설명한다. 다만, 제1 페이지(120)에 대한 설명은 제4 페이지(150)에도 제한 없이 동일하게 적용될 수 있다.Referring to FIG. 1, which is illustratively shown, a
제1 페이지(120)에 포함된 구조체는 메타데이터로서, 예를 들어, 다른 구조체에 대한 데이터 또는 하나 이상의 메모리 객체를 포함하는 페이지에 대한 데이터를 포함할 수 있다. 다시 말해, 구조체에는 다른 구조체를 관리하는 구조체와 하나 이상의 메모리 객체를 포함하는 페이지를 관리하는 구조체가 존재한다.The structure contained in the
이와 같은 구조체에 기초하여, 제1 페이지(120)에서는 제1 구조체와 나머지 구조체(예컨대, 제2 구조체, 제3 구조체 등)로 구분될 수 있다.Based on such a structure, the
여기서, 제1 구조체는 제1 페이지(120)에 첫 번째로 포함된 구조체로서, 제1 페이지(120)에 포함된 나머지 구조체에 대한 데이터를 포함할 수 있다. 제1 구조체는 제1 페이지(120)에 구조체를 할당하거나 또는 해제할 때 이용될 수 있다. 예를 들어, 제1 구조체는 제1 페이지(120)가 저장된 나머지 구조체의 타입, 비휘발성 메모리(100)에서 제1 페이지(120)의 주소 및 제1 페이지(120)에 저장된 나머지 구조체에 대한 비트맵 중 적어도 하나를 포함할 수 있다.Here, the first structure may be the first structure included in the
나머지 구조체는 제1 구조체를 제외한 제1 페이지(120)에 저장된 구조체로서, 하나 이상의 메모리 객체를 포함하는 페이지에 대한 데이터를 포함할 수 있다. 나머지 구조체 각각은 하나 이상의 메모리 객체를 포함하는 페이지에 고유하게 대응할 수 있고, 대응하는 페이지에 대한 데이터를 포함할 수 있다. 예를 들어, 나머지 구체 각각은 대응하는 페이지에 포함된 데이터 객체의 타입, 대응하는 페이지의 주소, 대응하는 페이지에 저장된 메모리 객체에 대한 비트맵 중 적어도 하나를 포함할 수 있다. 다시 말해, 하나 이상의 메모리 객체를 포함하는 하나의 페이지는 하나의 구조체에 의해 관리될 수 있다.The remaining structures are structures stored in the
예를 들어, 제1 페이지(120)에 포함된 제2 구조체는 하나 이상의 메모리 객체가 포함된 제2 페이지(130)에 대응되며, 제2 페이지(130)에 대한 데이터를 포함할 수 있다. 또한, 제3 구조체는 하나 이상의 메모리 객체가 포함된 다른 페이지에 대응되며, 해당 페이지에 대한 데이터를 포함할 수 있다.For example, the second structure included in the
제2 페이지(130)는 하나 이상의 데이터 객체를 포함하는 페이지로서, 예를 들어, 동일한 타입의 메모리 객체가 하나 이상 포함될 수 있다. 제2 페이지(130)에 포함된 데이터 객체는 요청에 의해 할당되거나 해제될 수 있다.
제4 페이지(150)는 하나 이상의 구조체를 포함하는 페이지를 나타낸다. 마찬가지로, 제4 페이지(150)에 첫 번째로 포함된 제4 구조체는 제4 페이지(150)에 포함된 나머지 구조체에 대한 데이터를 포함할 수 있다. 즉, 제4 구조체는 제4 페이지(150)에 포함된 나머지 구조체를 관리할 수 있다. 나머지 구조체는 하나 이상의 데이터 객체를 포함하는 페이지에 고유하게 대응되며, 대응하는 페이지에 대한 데이터를 포함할 수 있다.
여기서, 제1 구조체와 제4 구조체 각각은 해당 페이지에 포함된 나머지 구조체에 대한 데이터를 포함하는 구조체로서, 서로 연결될 수 있다. 예를 들어, 제1 구조체와 제4 구조체는 메모리 캐시 리스트(110)를 통해 서로 연결될 수 있다. 나머지 구조체에 대한 데이터를 포함하는 구조체들이 서로 연결됨으로써, 메모리 객체 리스트(110)는 비휘발성 메모리(100)에 저장된 나머지 구조체에 대한 데이터를 포함하는 구조체들에 모두 접근할 수 있으며, 이를 통해 하나 이상의 데이터 객체를 포함하는 페이지에 대한 데이터를 포함하는 나머지 구조체로도 접근이 가능하며, 나아가, 페이지에 포함된 데이터 객체까지 접근이 가능할 수 있다.Here, each of the first structure and the fourth structure is a structure including data on the remaining structures included in the page, and may be connected to each other. For example, the first structure and the fourth structure may be connected to each other through the
일실시예에 따라 비휘발성 메모리(100)에 할당된 하나 이상의 구조체를 포함하는 페이지와 하나 이상의 객체 데이터를 포함하는 페이지는 시스템이 재시작되더라도 다른 용도로 사용되지 못하도록 해당 페이지에 대한 재할당이 금지될 수 있다. 그래서, 메모리 객체를 영속적으로 저장하는 페이지 또는 구조체를 영속적으로 저장하는 페이지는 해당 페이지가 해제될 때까지 해당 페이지에 저장된 메모리 객체 또는 구조체를 유지할 수 있다.According to one embodiment, a page containing one or more structures assigned to the
예를 들어, 시스템(예컨대, 운영체제)가 시작되면, 비휘발성 메모리(100)의 첫 번째 페이지에 저장된 슈퍼블록이 확인될 수 있다. 슈퍼블록의 매직넘버를 통해, 객체 관리 자료구조가 존재하는지 여부가 확인될 수 있다. 객체 관리 자료구조가 존재하는 경우, 자료구조를 초기화하는 과정이 수행되지 않는다. 그리고, 자료구조가 저장되어 있는 페이지들을 확인함으로써, 해당 페이지가 재할당되지 않도록 프리 페이지 리스트에서 제거될 수 있다. 앞서 설명한 일련의 동작들은 HEAPO(Heap-based persistent object store)에 의해 수행될 수 있다.For example, when a system (e.g., operating system) is started, the super block stored in the first page of
보다 구체적으로, 상술된 구조를 가지는 비휘발성 메모리(100)에 데이터 객체가 할당되는 과정은 다음과 같이 수행될 수 있다.More specifically, the process of allocating a data object to the
일실시예에 따라 데이터 객체에 대한 할당 요청이 발생하면, 비휘발성 메모리(100)에 포함된 메모리 객체 리스트(110)가 확인될 수 있다. 그리고, 메모리 객체 리스트(110)를 통해, 하나 이상의 구조체가 포함된 제1 페이지(120)의 제1 구조체가 확인될 수 있다. 그리고, 제1 구조체를 통해 제1 페이지(120)에 포함된 나머지 구조체 각각에 대응하는 하나 이상의 데이터 객체를 포함하는 페이지에 데이터 객체의 할당이 가능한지 여부를 판단할 수 있다.When an allocation request for a data object occurs according to an embodiment, the
예를 들어, 제1 페이지(120)에 포함된 제2 구조체를 참조하여, 제2 구조체에 대응하는 제2 페이지(130)에 데이터 객체의 할당이 가능한지 여부를 판단할 수 있다. 만약 제2 페이지(130)에 데이터 객체의 할당이 가능하지 않다면, 제3 구조체를 참조하여, 제3 구조체에 대응하는 페이지에 데이터 객체의 할당이 가능한지 여부를 추가적으로 판단할 수 있다.For example, referring to the second structure included in the
반대로, 제2 페이지(130)에 데이터 객체의 할당이 가능하다면, 메모리 객체가 할당될 제2 페이지(130)의 여유 공간을 나타내는 제2 구조체의 비트맵이 업데이트되고, 제2 페이지(130)의 여유 공간에 대한 주소가 반환될 수 있다.Conversely, if it is possible to allocate a data object to the
그리고, 메모리 객체는 반환된 주소에 기초하여 제2 페이지(130)의 여유 공간에 영속적으로 저장될 수 있다.The memory object may then be permanently stored in the free space of the
도 2는 일실시예에 따른 메모리 캐시 리스트를 설명하기 위한 도면이다.FIG. 2 is a view for explaining a memory cache list according to an embodiment.
도 2를 참조하면, 메모리 캐시 리스트의 예시가 도시된다.Referring to FIG. 2, an example of a memory cache list is shown.
메모리 캐시 리스트는 하나 이상의 구조체를 포함하는 페이지의 첫 번째 구조체와 연결되는 헤더를 포함할 수 있다. 메모리 캐시 리스트의 헤더는 슈퍼블록에 포함되고, 여기서 헤더는 제1 페이지(120)의 제1 구조체와 연결될 수 있다. 헤더는 배열([0], [1], [2], ..., [n-1])로 구성되며, 각 배열의 원소는 서로 다른 종류의 메모리 객체 리스트의 헤더에 해당될 수 있다.The memory cache list may include a header associated with the first structure of a page containing one or more structures. The header of the memory cache list is included in the super block, where the header may be concatenated with the first structure of the
메모리 캐시 리스트는 헤더를 통해 배열의 원소를 하나씩 순회함으로써, 구조체가 저장되어 있는 모든 페이지에 접근이 가능할 수 있다. 배열의 원소를 순회하면서 비트맵을 확인하여 대응하는 페이지 내에 메모리 객체를 할당할 수 있는 여유 공간이 존재하는 배열의 원소를 찾을 수 있다.The memory cache list can access all the pages where the structure is stored by traversing the elements of the array one by one through the header. You can find the elements of the array where there is free space available to allocate memory objects within the corresponding page by checking the bitmap while traversing the elements of the array.
도 3은 일실시예에 따라 메모리 객체를 포함하는 페이지를 관리하는 제2 구조체를 설명하기 위한 도면이다.3 is a diagram for describing a second structure for managing a page including a memory object according to an embodiment.
도 3을 참조하면, 제2 구조체의 예시가 도시된다.Referring to Figure 3, an example of a second structure is shown.
제2 구조체는 도 1에 예시적으로 도시된 제1 페이지(120)에 포함된 구조체로서, 하나 이상의 메모리 객체를 포함하는 제2 페이지(130)에 대한 데이터를 포함할 수 있다. 예를 들어, 제2 구조체에는 제2 페이지(130)에 포함된 데이터 객체의 타입, 대응하는 제2 페이지(130)의 주소, 제2 페이지(130)에 저장된 메모리 객체에 대한 비트맵 중 적어도 하나를 포함할 수 있다.The second structure is a structure included in the
특히, 제2 구조체에 포함된 비트맵은 제2 페이지(130)에 포함된 공간에 메모리 객체가 저장되어 있는지 여부를 나타낼 수 있다. 예를 들어, 비트맵에서 '1'은 대응하는 공간에 메모리 객체가 할당되어 있는 것을 나타내고, '0'은 대응하는 공간에 메모리 객체가 할당되어 있지 않은 것을 나타낸다. 따라서, 제2 구조체의 비트맵을 확인함으로써, 제2 구조체가 관리하는 제2 페이지(130)에 새로운 데이터 객체를 할당할 수 있는지 여부를 손쉽게 파악할 수 있다. 다시 말해, 하나 이상의 데이터 객체를 포함하는 페이지에 대한 메모리 객체의 할당 및 해제는 해당 페이지를 관리하는 구조체의 비트맵을 통해 수행될 수 있다.In particular, the bitmap included in the second structure may indicate whether or not the memory object is stored in the space included in the
도 4는 일실시예에 따라 새로운 페이지에 메모리 객체를 할당하는 과정을 설명하기 위한 도면이다.4 is a diagram illustrating a process of allocating a memory object to a new page according to an embodiment of the present invention.
도 4를 참조하면, 기존의 페이지에 메모리 객체를 할당할 여유 공간이 없는 경우에 새로운 페이지에 메모리 객체를 할당하는 과정의 예시가 도시된다.Referring to FIG. 4, there is shown an example of a process of allocating a memory object to a new page when there is no space available for allocating a memory object to an existing page.
일실시예에 따라 데이터 객체에 대한 할당 요청이 발생하면, 비휘발성 메모리(100)에 포함된 메모리 객체 리스트(110)가 확인될 수 있다. 메모리 객체 리스트(110)에 포함된 헤더를 탐색함으로써, 하나 이상의 구조체들이 포함된 페이지의 첫 번째 구조체로 연결될 수 있다. 예를 들어, 메모리 객체 리스트(110)로부터 연결되고, 제1 페이지(120)에 포함된 제1 구조체가 확인될 수 있다. 제1 구조체를 통해 제1 페이지(120)에 포함된 나머지 구조체(예컨대, 제2 구조체, 제3 구조체 등)에 대응하는 페이지에 데이터 객체에 대한 할당이 가능한지 여부가 판단될 수 있다.When an allocation request for a data object occurs according to an embodiment, the
만약 데이터 객체에 대한 할당이 가능하지 않은 경우, 하나 이상의 메모리 객체를 저장할 수 있는 제3 페이지(140)가 비휘발성 메모리(100)에 할당될 수 있다. 그리고, 제3 페이지(140)의 여유 공간에 대한 주소가 반환되고, 그에 따라 메모리 객체가 제3 페이지(140)에 영속적으로 저장될 수 있다.If allocation for a data object is not possible, a
새로 할당된 제3 페이지(140)에 대한 데이터를 포함하는 제3 구조체가 제1 페이지(120)에 할당될 수 있다. 제3 구조체가 제1 페이지(120)에 새로 할당됨에 따라, 제3 구조체에 대한 데이터가 제1 페이지(120)의 제1 구조체에 추가될 수 있다. 다시 말해, 제3 구조체가 할당된 공간에 기초하여 제1 구조체의 비트맵이 업데이트될 수 있다.A third structure including data for the newly allocated
도 5는 다른 일실시예에 따라 새로운 페이지에 메모리 객체를 할당하는 과정을 설명하기 위한 도면이다.5 is a diagram illustrating a process of allocating a memory object to a new page according to another embodiment of the present invention.
도 5를 참조하면, 기존의 페이지에 메모리 객체를 할당할 여유 공간이 없는 경우에 새로운 페이지에 메모리 객체를 할당하는 과정의 다른 예시가 도시된다.Referring to FIG. 5, another example of a process of allocating a memory object to a new page when there is no free space to allocate a memory object to an existing page is shown.
도 4의 경우와 마찬가지로, 일실시예에 따라 데이터 객체에 대한 할당 요청에 기초하여 제3 페이지(140)가 비휘발성 메모리(100)에 할당될 수 있다. 그리고, 제3 페이지(140)의 여유 공간에 대한 주소가 반환되고, 그에 따라 메모리 객체가 제3 페이지(140)에 영속적으로 저장될 수 있다.As in the case of FIG. 4, a
다만, 제1 페이지(120)에 새로 할당된 제3 페이지(140)에 대한 데이터를 포함하는 제3 구조체를 할당할 여유 공간이 없는 경우, 하나 이상의 구조체를 포함하는 제4 페이지(150)가 비휘발성 메모리(100)에 할당될 수 있다. 그리고, 제4 페이지(150)에 포함될 다른 구조체에 대한 데이터를 포함하는 제4 구조체가 제4 페이지(150)에 할당될 수 있다. 다시 말해, 제4 페이지(150)에 포함될 다른 구조체를 관리하는 제4 구조체가 제4 페이지(150)에 할당될 수 있다. 여기서, 제4 페이지(150)에 첫 번째로 포함된 제4 구조체는 제1 페이지(120)에 첫 번째로 포함된 제1 구조체와 서로 연결될 수 있다. 그래서, 메모리 객체 리스트는 새로 할당된 제4 페이지(150)의 제4 구조체로도 연결될 수 있다.However, if there is no space available for allocating the third structure including the data for the
그리고, 제3 페이지(140)에 대한 데이터를 포함하는 제3 구조체가 제4 페이지(150)에 할당되고, 제3 구조체의 할당에 기초하여 제4 구조체가 업데이트될 수 있다. 제3 구조체가 할당된 공간에 기초하여 제4 구조체의 비트맵이 업데이트될 수 있다.Then, a third structure including data for the
도 6은 일실시예에 따른 메모리 객체 처리 방법을 나타낸 도면이다.FIG. 6 illustrates a method of processing a memory object according to an exemplary embodiment. Referring to FIG.
도 6을 참조하면, 일실시예에 따른 메모리 객체 처리 장치의 프로세서에 의해 수행되는 메모리 객체 처리 방법이 도시된다.Referring to FIG. 6, a method of processing a memory object performed by a processor of a memory object processing apparatus according to an embodiment is shown.
단계(610)에서, 메모리 객체 처리 장치는 메모리 객체에 대한 할당 요청에 기초하여 비휘발성 메모리에 저장된 메모리 캐시 리스트를 확인한다. 메모리 캐시 리스트는 비휘발성 메모리의 슈퍼블록에 저장될 수 있다.In
단계(620)에서, 메모리 객체 처리 장치는 메모리 캐시 리스트와 연결되고 제1 페이지에 포함된 제1 구조체를 확인한다.At
단계(630)에서, 메모리 객체 처리 장치는 제1 구조체에 기초하여 제1 페이지에 포함된 제2 구조체를 확인함으로써 제2 구조체에 대응하는 제2 페이지에 메모리 객체의 할당이 가능한지 여부를 판단한다.In
제1 구조체는 제1 페이지에 제2 구조체에 대한 데이터를 포함하고, 제2 구조체는 제1 페이지와 구분되고 하나 이상의 메모리 객체를 포함하는 페이지에 대한 데이터를 포함할 수 있다. 제1 구조체는 제1 페이지에 저장된 제2 구조체의 타입, 비휘발성 메모리에서 제1 페이지의 주소 및 제1 페이지에 저장된 제2 구조체에 대한 비트맵 중 적어도 하나를 포함할 수 있다. 제2 구조체는 제2 페이지에 저장된 데이터 객체의 타입, 비휘발성 메모리에서 제2 페이지의 주소 및 제2 페이지에 저장된 메모리 객체에 대한 비트맵 중 적어도 하나를 포함할 수 있다.The first structure may include data for a second structure on a first page and the second structure may include data for a page that is distinct from the first page and includes one or more memory objects. The first structure may include at least one of a type of the second structure stored in the first page, an address of the first page in the nonvolatile memory, and a bitmap for the second structure stored in the first page. The second structure may include at least one of a type of the data object stored in the second page, an address of the second page in the non-volatile memory, and a bit map for the memory object stored in the second page.
제2 페이지에 메모리 객체의 할당이 가능한 경우, 단계(640)에서 메모리 객체 처리 장치는 메모리 객체를 제2 페이지의 여유 공간에 영속적으로 저장할 수 있다. 메모리 객체 처리 장치는 제2 페이지에 메모리 객체의 할당이 가능한 경우, 메모리 객체가 할당될 제2 페이지의 여유 공간을 나타내는 제2 구조체의 비트맵을 업데이트하고 여유 공간에 대한 주소를 반환할 수 있다.If it is possible to allocate a memory object to the second page, then in
제2 페이지에 메모리 객체의 할당이 가능하지 않는 경우, 단계(650)에서 메모리 객체 처리 장치는 하나 이상의 메모리 객체를 저장할 수 있는 제3 페이지를 비휘발성 메모리에 할당할 수 있다. 그리고, 메모리 객체 처리 장치는 메모리 객체가 할당될 제3 페이지의 여유 공간에 대한 주소를 반환할 수 있다. 그리고, 메모리 객체 처리 장치는 3 페이지를 관리하는 제3 구조체를 제1 페이지에 할당하고, 제3 구조체가 할당된 공간에 기초하여 제1 구조체의 비트맵을 업데이트할 수 있다.If it is not possible to allocate a memory object to the second page, then in
만약 제3 페이지를 관리하는 제3 구조체를 제1 페이지에 할당할 수 없는 경우, 메모리 객체 처리 장치는 하나 이상의 구조체를 저장할 수 있는 제4 페이지를 비휘발성 메모리에 할당할 수 있다. 그리고, 메모리 객체 처리 장치는 제3 구조체를 제4 페이지에 할당하고, 제3 구조체가 할당된 공간에 기초하여 제4 페이지에 첫 번째로 포함된 제4 구조체의 비트맵을 업데이트할 수 있다.If the third structure managing the third page can not be allocated to the first page, the memory object processing apparatus can allocate to the nonvolatile memory a fourth page capable of storing one or more structures. Then, the memory object processing apparatus can allocate the third structure to the fourth page, and update the bitmap of the fourth structure included in the fourth page based on the allocated space of the third structure.
제1 페이지에 첫 번째로 포함된 제1 구조체와 제4 페이지에 첫 번째로 포함된 제4 구조체는 메모리 캐시 리스트를 통해 서로 연결될 수 있다.The first structure included first on the first page and the fourth structure included first on the fourth page may be connected to each other through the memory cache list.
도 6에 도시된 각 단계들에는 도 1 내지 도 5를 통하여 전술한 사항들이 그대로 적용되므로, 보다 상세한 설명은 생략한다.The steps described above with reference to FIGs. 1 through 5 are applied to each step shown in FIG. 6 as it is, and a detailed description will be omitted.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.The embodiments described above may be implemented in hardware components, software components, and / or a combination of hardware components and software components. For example, the devices, methods, and components described in the embodiments may be implemented within a computer system, such as, for example, a processor, a controller, an arithmetic logic unit (ALU), a digital signal processor, such as an array, a programmable logic unit (PLU), a microprocessor, or any other device capable of executing and responding to instructions. The processing device may execute an operating system (OS) and one or more software applications running on the operating system. The processing device may also access, store, manipulate, process, and generate data in response to execution of the software. For ease of understanding, the processing apparatus may be described as being used singly, but those skilled in the art will recognize that the processing apparatus may have a plurality of processing elements and / As shown in FIG. For example, the processing unit may comprise a plurality of processors or one processor and one controller. Other processing configurations are also possible, such as a parallel processor.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.The software may include a computer program, code, instructions, or a combination of one or more of the foregoing, and may be configured to configure the processing device to operate as desired or to process it collectively or collectively Device can be commanded. The software and / or data may be in the form of any type of machine, component, physical device, virtual equipment, computer storage media, or device , Or may be permanently or temporarily embodied in a transmitted signal wave. The software may be distributed over a networked computer system and stored or executed in a distributed manner. The software and data may be stored on one or more computer readable recording media.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.The method according to an embodiment may be implemented in the form of a program command that can be executed through various computer means and recorded in a computer-readable medium. The computer-readable medium may include program instructions, data files, data structures, and the like, alone or in combination. The program instructions to be recorded on the medium may be those specially designed and configured for the embodiments or may be available to those skilled in the art of computer software. Examples of computer-readable media include magnetic media such as hard disks, floppy disks and magnetic tape; optical media such as CD-ROMs and DVDs; magnetic media such as floppy disks; Magneto-optical media, and hardware devices specifically configured to store and execute program instructions such as ROM, RAM, flash memory, and the like. Examples of program instructions include machine language code such as those produced by a compiler, as well as high-level language code that can be executed by a computer using an interpreter or the like. The hardware devices described above may be configured to operate as one or more software modules to perform the operations of the embodiments, and vice versa.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.Although the embodiments have been described with reference to the drawings, various technical modifications and variations may be applied to those skilled in the art. For example, it is to be understood that the techniques described may be performed in a different order than the described methods, and / or that components of the described systems, structures, devices, circuits, Lt; / RTI > or equivalents, even if it is replaced or replaced.
100: 비휘발성 메모리
110: 메모리 객체 리스트
120: 제1 페이지
130: 제2 페이지
150: 제3 페이지100: Nonvolatile memory
110: Memory object list
120: 1st page
130:
150: Page 3
Claims (16)
상기 메모리 캐시 리스트와 연결되고 제1 페이지에 포함된 제1 구조체를 확인하는 단계; 및
상기 제1 구조체에 기초하여 상기 제1 페이지에 포함된 제2 구조체를 확인함으로써 상기 제2 구조체에 대응하는 제2 페이지에 상기 메모리 객체의 할당이 가능한지 여부를 판단하는 단계
를 포함하고,
상기 제1 페이지 및 제2 페이지는 상기 비휘발성 메모리에 저장되는, 메모리 객체 처리 방법.Identifying a memory cache list stored in a non-volatile memory based on an allocation request for the memory object;
Identifying a first structure associated with the memory cache list and included in a first page; And
Determining whether allocation of the memory object to a second page corresponding to the second structure is possible by identifying a second structure included in the first page based on the first structure
Lt; / RTI >
Wherein the first page and the second page are stored in the non-volatile memory.
상기 제1 구조체는, 상기 제1 페이지에 상기 제2 구조체에 대한 데이터를 포함하고,
상기 제2 구조체는,
상기 제1 페이지와 구분되고 하나 이상의 메모리 객체를 포함하는 상기 페이지에 대한 데이터를 포함하는, 메모리 객체 처리 방법.The method according to claim 1,
Wherein the first structure includes data for the second structure on the first page,
The second structure may include:
And data for the page separated from the first page and comprising one or more memory objects.
상기 제2 페이지에 상기 메모리 객체의 할당이 가능한 경우, 상기 메모리 객체가 할당될 제2 페이지의 여유 공간을 나타내는 상기 제2 구조체의 비트맵을 업데이트하고 상기 여유 공간에 대한 주소를 반환하는 단계
를 더 포함하는, 메모리 객체 처리 방법.The method according to claim 1,
Updating a bitmap of the second structure indicating a free space of a second page to which the memory object is to be allocated and returning an address for the free space when the memory object can be allocated to the second page
Further comprising the steps of:
상기 메모리 객체를 상기 제2 페이지의 여유 공간에 영속적으로 저장하는 단계
를 더 포함하는, 메모리 객체 처리 방법.The method of claim 3,
Permanently storing the memory object in the free space of the second page
Further comprising the steps of:
상기 제2 페이지에 상기 메모리 객체의 할당이 가능하지 않는 경우, 하나 이상의 메모리 객체를 저장할 수 있는 제3 페이지를 상기 비휘발성 메모리에 할당하는 단계; 및
상기 메모리 객체가 할당될 제3 페이지의 여유 공간에 대한 주소를 반환하는 단계
를 더 포함하는, 메모리 객체 처리 방법.The method according to claim 1,
Assigning to the non-volatile memory a third page capable of storing one or more memory objects if the second page is not allocatable to the memory object; And
Returning an address for a free space of a third page to which the memory object is to be allocated
Further comprising the steps of:
상기 제3 페이지를 관리하는 제3 구조체를 상기 제1 페이지에 할당하고, 상기 제3 구조체가 할당된 공간에 기초하여 상기 제1 구조체의 비트맵을 업데이트하는 단계
를 더 포함하는, 메모리 객체 처리 방법.6. The method of claim 5,
Allocating a third structure for managing the third page to the first page and updating a bitmap of the first structure based on the space allocated for the third structure
Further comprising the steps of:
상기 제3 페이지를 관리하는 제3 구조체를 상기 제1 페이지에 할당할 수 없는 경우, 하나 이상의 구조체를 저장할 수 있는 제4 페이지를 상기 비휘발성 메모리에 할당하는 단계; 및
상기 제3 구조체를 상기 제4 페이지에 할당하고, 상기 제3 구조체가 할당된 공간에 기초하여 상기 제4 페이지에 첫 번째로 포함된 제4 구조체의 비트맵을 업데이트하는 단계
를 더 포함하는, 메모리 객체 처리 방법.6. The method of claim 5,
Allocating to the non-volatile memory a fourth page capable of storing one or more structures when the third structure managing the third page can not be allocated to the first page; And
Assigning the third structure to the fourth page, and updating the bitmap of the fourth structure included first in the fourth page based on the space allocated by the third structure
Further comprising the steps of:
상기 제1 페이지에 첫 번째로 포함된 제1 구조체와 상기 제4 페이지에 첫 번째로 포함된 제4 구조체는, 상기 메모리 캐시 리스트를 통해 서로 연결되는, 메모리 객체 처리 방법.8. The method of claim 7,
Wherein a first structure included first in the first page and a fourth structure included first in the fourth page are connected to each other through the memory cache list.
상기 메모리 캐시 리스트는, 상기 비휘발성 메모리의 슈퍼블록에 저장되는, 메모리 객체 처리 방법.The method according to claim 1,
Wherein the memory cache list is stored in a super block of the non-volatile memory.
상기 제1 구조체는,
상기 제1 페이지에 저장된 제2 구조체의 타입, 상기 비휘발성 메모리에서 제1 페이지의 주소 및 상기 제1 페이지에 저장된 제2 구조체에 대한 비트맵 중 적어도 하나를 포함하는, 메모리 객체 처리 방법.The method according to claim 1,
The first structure may include:
The type of the second structure stored in the first page, the address of the first page in the non-volatile memory, and the bitmap for the second structure stored in the first page.
상기 제2 구조체는,
상기 제2 페이지에 저장된 데이터 객체의 타입, 상기 비휘발성 메모리에서 제2 페이지의 주소 및 상기 제2 페이지에 저장된 메모리 객체에 대한 비트맵 중 적어도 하나를 포함하는, 메모리 객체 처리 방법.The method according to claim 1,
The second structure may include:
A type of data object stored in the second page, an address of a second page in the non-volatile memory, and a bit map for a memory object stored in the second page.
를 포함하고,
상기 프로세서는,
상기 메모리 객체에 대한 할당 요청에 기초하여 비휘발성 메모리에 저장된 메모리 캐시 리스트를 확인하고, 상기 메모리 캐시 리스트와 연결되고 제1 페이지에 포함된 제1 구조체를 확인하며, 상기 제1 구조체에 기초하여 상기 제1 페이지에 포함된 제2 구조체를 확인함으로써 상기 제2 구조체에 대응하는 제2 페이지에 상기 메모리 객체의 할당이 가능한지 여부를 판단하고,
상기 제1 페이지 및 제2 페이지는 상기 비휘발성 메모리에 저장되는, 메모리 객체 처리 장치.Processor for processing memory objects
Lt; / RTI >
The processor comprising:
Identifying a memory cache list stored in a non-volatile memory based on an allocation request for the memory object, identifying a first structure associated with the memory cache list and included in a first page, Determining whether allocation of the memory object is possible to a second page corresponding to the second structure by checking the second structure included in the first page,
Wherein the first page and the second page are stored in the non-volatile memory.
상기 제1 구조체는, 상기 제1 페이지에 상기 제2 구조체에 대한 데이터를 포함하고,
상기 제2 구조체는,
상기 제1 페이지와 구분되고 하나 이상의 메모리 객체를 포함하는 상기 페이지에 대한 데이터를 포함하는, 메모리 객체 처리 장치.13. The method of claim 12,
Wherein the first structure includes data for the second structure on the first page,
The second structure may include:
And data for the page separated from the first page and comprising one or more memory objects.
상기 프로세서는,
상기 제2 페이지에 상기 메모리 객체의 할당이 가능한 경우, 상기 메모리 객체가 할당될 제2 페이지의 여유 공간을 나타내는 상기 제2 구조체의 비트맵을 업데이트하고 상기 여유 공간에 대한 주소를 반환하는, 메모리 객체 처리 장치.13. The method of claim 12,
The processor comprising:
Updating a bitmap of the second structure indicating a free space of a second page to which the memory object is to be allocated and returning an address for the free space when the memory object can be allocated to the second page, Processing device.
상기 프로세서는,
상기 메모리 객체를 상기 제2 페이지의 여유 공간에 영속적으로 저장하는, 메모리 객체 처리 장치.15. The method of claim 14,
The processor comprising:
And permanently stores the memory object in the free space of the second page.
상기 프로세서는,
상기 제2 페이지에 상기 메모리 객체의 할당이 가능하지 않는 경우, 하나 이상의 메모리 객체를 저장할 수 있는 제3 페이지를 상기 비휘발성 메모리에 할당하고,
상기 메모리 객체가 할당될 제3 페이지의 여유 공간에 대한 주소를 반환하는, 메모리 객체 처리 장치.
13. The method of claim 12,
The processor comprising:
Allocating to the non-volatile memory a third page capable of storing one or more memory objects if the allocation of the memory object to the second page is not possible,
And returns an address for free space of a third page to which the memory object is to be allocated.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20160051117 | 2016-04-26 | ||
KR1020160051117 | 2016-04-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20170122088A true KR20170122088A (en) | 2017-11-03 |
KR101891264B1 KR101891264B1 (en) | 2018-09-28 |
Family
ID=60383991
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020160155961A KR101891264B1 (en) | 2016-04-26 | 2016-11-22 | Method and apparatus for processing memory object on non-volatile memory |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101891264B1 (en) |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101113755B1 (en) | 2011-01-28 | 2012-02-27 | 엘아이지넥스원 주식회사 | Memory management method using free memory management structure |
-
2016
- 2016-11-22 KR KR1020160155961A patent/KR101891264B1/en active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
KR101891264B1 (en) | 2018-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11620060B2 (en) | Unified hardware and software two-level memory | |
US9390028B2 (en) | Coordination between memory-saving mechanisms in computers that run virtual machines | |
US20230196502A1 (en) | Dynamic kernel memory space allocation | |
KR101786871B1 (en) | Apparatus for processing remote page fault and method thereof | |
US8037279B2 (en) | Method and system for cross-domain data sharing | |
JP2020046963A (en) | Memory system and control method | |
US10705951B2 (en) | Shared fabric attached memory allocator | |
KR102275563B1 (en) | Host-managed non-volatile memory | |
CN103577345A (en) | Methods and structure for improved flexibility in shared storage caching by multiple systems | |
US8799611B2 (en) | Managing allocation of memory pages | |
US9336065B2 (en) | Semiconductor device and memory protection method | |
TW201935223A (en) | Memory system and method for controlling nonvolatile memory | |
US20160179580A1 (en) | Resource management based on a process identifier | |
CN105138481A (en) | Stored data processing method and apparatus and system | |
US9104583B2 (en) | On demand allocation of cache buffer slots | |
US8423712B2 (en) | Methods and systems for releasing and re-allocating storage segments in a storage volume | |
US8274521B2 (en) | System available cache color map | |
US10152258B1 (en) | Big block allocation of persistent main memory | |
KR101891264B1 (en) | Method and apparatus for processing memory object on non-volatile memory | |
JP7217341B2 (en) | How processors and registers are inherited | |
US10168911B1 (en) | Defragmentation of persistent main memory | |
KR101834082B1 (en) | Apparatus and method of managing multi solid state disk system | |
KR20090131142A (en) | Apparatus and method for memory management | |
KR20190026269A (en) | Method of managing memory based on new memory, and apparatuses performing the same | |
KR101887663B1 (en) | Method and apparatus for processing data using dummy page |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application | ||
AMND | Amendment | ||
X701 | Decision to grant (after re-examination) |