KR20160106999A - Memory Management Apparatus and Method for Supporting Partial Release of Memory Allocation - Google Patents
Memory Management Apparatus and Method for Supporting Partial Release of Memory Allocation Download PDFInfo
- Publication number
- KR20160106999A KR20160106999A KR1020150029836A KR20150029836A KR20160106999A KR 20160106999 A KR20160106999 A KR 20160106999A KR 1020150029836 A KR1020150029836 A KR 1020150029836A KR 20150029836 A KR20150029836 A KR 20150029836A KR 20160106999 A KR20160106999 A KR 20160106999A
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- release
- packet
- pointer
- data
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9005—Buffering arrangements using dynamic buffer space allocation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9021—Plurality of buffers per packet
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9042—Separate storage for different parts of the packet, e.g. header and payload
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
Description
본 발명은 메모리 관리 장치 및 방법에 관한 것으로서, 특히, 통신 시스템 등에서 메모리를 일정 패킷 크기로 할당하고 해제하는 방식에서, 해제 시 메모리를 부분적으로 해제하기 위한 메모리 관리 장치 및 방법에 관한 것이다. The present invention relates to a memory management apparatus and method, and more particularly, to a memory management apparatus and method for partially releasing a memory in a method of allocating and releasing a memory to a certain packet size in a communication system or the like.
통신 시스템에서는 통신 프로토콜을 지원하기 위해 여러 계층으로 프로토콜이 나뉘어져 있다. 예를 들어, 이동통신 시스템에서는 망에서 받은 IP 데이터를 PDCP(Packet Data Convergence Protocol)를 처리한 후 전송을 하기 위해 RLC (Radio Link Control), MAC(Media Access Control) 계층을 거쳐 모뎀 계층으로 전달하는 프로토콜을 수행하게 된다. 이러한 프로토콜들은 각각의 메모리를 사용하여 이루어진다.In communication systems, protocols are divided into several layers to support communication protocols. For example, in a mobile communication system, IP data received from a network is transmitted to a modem layer through a Radio Link Control (RLC) layer and a MAC (Media Access Control) layer in order to process PDCP (Packet Data Convergence Protocol) Protocol. These protocols are made using each memory.
IP 데이터는 계층을 이동할 때마다 해당 계층에서 데이터를 분할 및 조립하기 위한 메모리 관리 방식으로 이루어진다. 데이터 분할 시 물리적으로 분할된 데이터를 다른 메모리에 복사하여 조립하는 방식으로 수행할 수 있으나, 이러한 복사 방식은 고속화되는 통신 시스템에서 매우 큰 프로세싱 오버헤드를 주며 시스템의 성능을 현격히 저하시키는 요인이 된다. 성능 향상을 위해 이러한 분할 데이터를 메모리에 복사하지 않고 분할 정보만을 이용하여 계층간 전달하게 하는 무복사(zero copy) 시스템을 지향하고 있다.IP data consists of a memory management method for dividing and assembling data in the layer each time the layer is moved. In the data partitioning, physically divided data can be copied and assembled into another memory. However, such a copying method gives a very large processing overhead in a high-speed communication system and significantly degrades the performance of the system. In order to improve the performance, we are aiming at a zero copy system that transfers such partitioned data between layers using only partition information without copying them to memory.
그러나, 무복사 시스템에서는 메모리 관리에 문제점이 있다. 예를 들어, 위와 같은 예에서 PDCP에서 IP 데이터를 저장하기 위해 메모리 관리자에서 할당받은 메모리는 각 프로토콜 계층을 지나면서 분할될 수 있다. 즉, 최상위 계층(예, PDCP)에서 할당받은 주 메모리는 계층 이동 시 분할되어 RLC 계층 등에서는 여러 개의 데이터 메모리로 분할되어 관리된다. 이러한 경우 일반적으로 메모리 관리자는, PDCP에서 할당받은 메모리를 해제하기 위해서 할당받은 주 메모리의 주소, 즉, 포인터(pointer)를 해제 시에 요구하게 된다. 그러나, 계층을 거치면서 분할된 부 메모리 포인터와 크기만을 관리하게 되므로 이러한 프로토콜에서는 최상위 계층에서 할당받은 주 메모리 포인터에 대한 정보를 관리하기 어려울 뿐만 아니라, 각 계층에서 분할된 데이터들이 해제되는 시점과 해제하는 주체가 다를 수 있으므로 분할된 메모리 전체에 대하여 해제관련 정보를 전체적으로 관리하기 것이 매우 어렵다는 단점이 있다.However, there is a problem in the memory management in the non-copying system. For example, in the above example, the memory allocated by the memory manager to store IP data in the PDCP can be divided across each protocol layer. That is, the main memory allocated in the highest layer (eg, PDCP) is divided when the layer is moved, and is divided into a plurality of data memories and managed in the RLC layer. In this case, the memory manager generally requests the address of the allocated main memory, that is, a pointer, in order to release the memory allocated by the PDCP. However, since only the sub-memory pointers and sizes are managed through the hierarchical layer, it is difficult to manage the information about the main memory pointers allocated in the highest layer in such a protocol. In addition, It is very difficult to manage the release related information as a whole with respect to the entire divided memory.
따라서, 본 발명은 상술한 문제점을 해결하기 위하여 안출된 것으로, 본 발명의 목적은, 통신 시스템 등에서 프로토콜 계층간 데이터 전달을 위해 사용되는 메모리를 각각의 계층에서 일정 패킷 크기로 분할 할당하고 해제하는 방식에서, 프로토콜 계층을 거치면서 분할된 메모리를 부분적으로 해제할 수 있는 메모리 관리 장치 및 방법을 제공하는 데 있다. SUMMARY OF THE INVENTION It is therefore an object of the present invention to provide a method and apparatus for allocating and releasing a memory used for transferring data between protocol layers in a communication system, A memory management apparatus and method capable of partly releasing a divided memory through a protocol layer.
먼저, 본 발명의 특징을 요약하면, 상기의 목적을 달성하기 위한 본 발명의 일면에 따른 메모리 할당의 부분 해제를 지원하는 메모리 관리 장치는, 패킷 인덱스로 구분되는 헤더와 데이터 영역에 데이터 패킷의 헤더 정보와 데이터를 각각 저장하는 패킷 저장 메모리; 상기 패킷 저장 메모리 할당이 부분 해제된 해당 포인터와 상기 패킷 인덱스를 관리하기 위한 해제 관리 메모리; 및 상기 패킷 저장 메모리의 할당에 있어서 상기 데이터 패킷의 크기와 태그 정보를 상기 헤더 정보로서 저장하여 관리하고 상기 데이터 패킷의 데이터를 상기 데이터 영역에 저장하여 관리하며, 상기 할당의 해제 요청에 따른 해당 해제 대상 포인터와 해제 대상 크기를 이용하여, 상기 해제 대상 포인터 앞이 상기 태그 정보인지 여부와 상기 해제 대상 크기가 상기 데이터 패킷의 크기와 일치 여부를 판단해 부분 해제인지 여부를 결정하는 메모리 관리자를 포함하고, 상기 메모리 관리자는, 상기 부분 해제에 있어서, 상기 해제 대상 포인터가 상기 해제 관리 메모리에 존재 여부에 따라 중복 해제 여부를 검사하여, 상기 중복 해제에 해당하지 않으면, 상기 해제 대상 포인터와 함께 그에 대응된 상기 패킷 인덱스를 상기 해제 관리 메모리에 관리한다. According to an aspect of the present invention, there is provided a memory management apparatus for supporting partial release of a memory allocation according to an aspect of the present invention includes a header divided by a packet index, A packet storage memory for storing information and data, respectively; A release management memory for managing a corresponding pointer to which the packet storage memory allocation is partially released and the packet index; And managing and storing the size and the tag information of the data packet as the header information in the allocation of the packet storage memory and storing and managing data of the data packet in the data area, And a memory manager for determining whether or not the release target pointer is the tag information and whether the release target size is consistent with the size of the data packet using the target pointer and the release target size, , The memory manager may check whether or not the release object pointer is released in accordance with the presence or absence of the release object pointer in the release management memory in the partial release and if the release object pointer does not correspond to the release of the release object pointer, And manages the packet index in the release management memory.
상기 메모리 관리자는, 상기 해제 대상 포인터(p)에 대하여 하기의 수학식을 이용하여 상기 패킷 인덱스(i)를 계산하며,The memory manager calculates the packet index i using the following equation for the release object pointer p,
i = FLOOR( ( p - BASE_ADDRESS ) / ( MM1_S + DATA_S) )i = FLOOR ((p - BASE_ADDRESS) / (MM1_S + DATA_S))
여기서, FLOOR(k)는 k보다 크지 않은 최대 정수값, BASE_ADDRESS는 상기 패킷 저장 메모리의 기준 주소, MM1_S는 상기 헤더의 크기, DATA_S는 상기 데이터 영역의 크기이다. Here, FLOOR (k) is a maximum integer value not larger than k, BASE_ADDRESS is a reference address of the packet storage memory, MM1_S is a size of the header, and DATA_S is a size of the data area.
상기 메모리 관리자는, 상기 중복 해제에 해당하지 않으면, 상기 헤더 정보의 상기 데이터 패킷의 크기에서 상기 해제 대상 크기를 뺀값으로 상기 데이터 패킷의 크기를 갱신하며, 갱신된 상기 데이터 패킷의 크기가 0이 아니라면, 상기 해제 대상 포인터와 함께 그에 대응된 상기 패킷 인덱스를 상기 해제 관리 메모리에 저장하여 관리한다. The memory manager updates the size of the data packet to a value obtained by subtracting the release object size from the size of the data packet of the header information if the size of the data packet is not 0 , And stores the packet index corresponding to the release object pointer in the release management memory to manage the packet index.
상기 해제 관리 메모리는, 상기 부분 해제된 해당 포인터와 상기 패킷 인덱스를 관리하기 위한 포인터 저장 메모리와 보조 메모리를 포함하며, 상기 메모리 관리자는, 상기 포인터 저장 메모리의 상기 패킷 인덱스에 대응된 저장소에 상기 해제 대상 포인터를 저장하며, 상기 포인터 저장 메모리의 상기 패킷 인덱스에 대응된 스택 포인터 각각이 소정의 최대값에 이르면 상기 해제 대상 포인터와 그에 대응된 상기 패킷 인덱스를 상기 보조 메모리의 스택 포인터로 구분된 저장소에 저장하여 관리한다. Wherein the release management memory includes a pointer storage memory for managing the partially released corresponding pointer and the packet index, and an auxiliary memory, and the memory manager further stores, in the storage corresponding to the packet index of the pointer storage memory, When the stack pointer corresponding to the packet index in the pointer storage memory reaches a predetermined maximum value, the releasing target pointer and the packet index corresponding to the releasing target pointer are stored in a storage separated by a stack pointer of the auxiliary memory And stores it.
이에 따라 상기 포인터 저장 메모리의 저장소 크기가 소정의 크기로 제한되지만 상기 패킷 인덱스를 이용한 빠른 검색을 지원하고, 상기 보조 메모리는 상기 패킷 인덱스의 구분없이 사용되어 메모리가 절약되도록 지원한다.Accordingly, although the storage size of the pointer storage memory is limited to a predetermined size, fast searching using the packet index is supported, and the auxiliary memory can be used without any distinction of the packet index to save memory.
그리고, 본 발명의 다른 일면에 따른 메모리 관리 장치에서 메모리 할당의 부분 해제를 지원하는 메모리 관리 방법은, 패킷 저장 메모리의 할당에 있어서, 헤더에 상기 데이터 패킷의 크기와 태그 정보를 헤더 정보로서 저장하여 관리하고, 데이터 영역에 상기 데이터 패킷의 데이터를 저장하여 관리하는 단계; 상기 할당의 해제 요청에 따른 해당 해제 대상 포인터와 해제 대상 크기를 이용하여, 상기 해제 대상 포인터 앞이 상기 태그 정보인지 여부와 상기 해제 대상 크기가 상기 데이터 패킷의 크기와 일치 여부를 판단해 부분 해제인지 여부를 결정하는 단계; 및 상기 메모리 관리자는, 상기 부분 해제에 있어서, 상기 해제 대상 포인터가 상기 해제 관리 메모리에 존재 여부에 따라 중복 해제 여부를 검사하여, 상기 중복 해제에 해당하지 않으면, 상기 해제 대상 포인터와 함께 그에 대응된 상기 패킷 인덱스를 상기 해제 관리 메모리에 관리하는 단계를 포함한다.A memory management method for supporting a partial release of a memory allocation in a memory management apparatus according to another aspect of the present invention includes the steps of storing the size of the data packet and the tag information as header information in a header in allocation of a packet storage memory Managing and storing data of the data packet in a data area; It is determined whether or not the release target pointer is the tag information and whether the release target size is consistent with the size of the data packet using the corresponding release object pointer and release object size in response to the release request of the allocation, ; And the memory manager, in the partial release, checks whether or not the release object pointer is released in accordance with the presence or absence of the release object pointer in the release management memory, and if the release object pointer does not correspond to the release of the release object pointer, And managing the packet index in the release management memory.
본 발명에 따른 메모리 관리 장치 및 방법에 따르면, 통신 시스템 등에서 프로토콜 계층간 데이터 전달을 위해 사용되는 메모리를 각각의 계층에서 할당하고 해제 시에, 메모리 할당 방식에 있어서 일정크기의 패킷 메모리를 사용하는 경우 패킷 메모리를 부분적으로 해제 가능하도록 함으로써, 통신 계층간 이동하는 데이터가 분할되더라도 메모리 무복사 시스템을 원활히 구성하여 시스템의 성능을 높일 수 있다.According to the memory management apparatus and method of the present invention, when a memory used for transferring data between protocol layers in a communication system or the like is allocated in each layer and a packet memory of a certain size is used in the memory allocation method By making the packet memory partly releasable, the performance of the system can be improved by smoothly configuring the non-memory copying system even if the data moving between the communication layers is divided.
도 1은 본 발명의 일 실시예에 따른 메모리 할당의 부분 해제를 지원하는 메모리 관리 장치를 설명하기 위한 도면이다.
도 2는 본 발명의 메모리 할당의 부분 해제에 대한 일례를 설명하기 위한 도면이다.
도 3은 본 발명의 일 실시예에 따른 메모리 할당의 부분 해제를 지원하는 메모리 관리 장치의 동작을 설명하기 위한 흐름도이다.FIG. 1 is a diagram for explaining a memory management apparatus supporting partial release of memory allocation according to an embodiment of the present invention. Referring to FIG.
2 is a diagram for explaining an example of partial release of the memory allocation of the present invention.
3 is a flowchart illustrating an operation of a memory management apparatus that supports partial release of memory allocation according to an embodiment of the present invention.
이하에서는 첨부된 도면들을 참조하여 본 발명에 대해서 자세히 설명한다. 이때, 각각의 도면에서 동일한 구성 요소는 가능한 동일한 부호로 나타낸다. 또한, 이미 공지된 기능 및/또는 구성에 대한 상세한 설명은 생략한다. 이하에 개시된 내용은, 다양한 실시 예에 따른 동작을 이해하는데 필요한 부분을 중점적으로 설명하며, 그 설명의 요지를 흐릴 수 있는 요소들에 대한 설명은 생략한다. 또한 도면의 일부 구성요소는 과장되거나 생략되거나 또는 개략적으로 도시될 수 있다. 각 구성요소의 크기는 실제 크기를 전적으로 반영하는 것이 아니며, 따라서 각각의 도면에 그려진 구성요소들의 상대적인 크기나 간격에 의해 여기에 기재되는 내용들이 제한되는 것은 아니다.Hereinafter, the present invention will be described in detail with reference to the accompanying drawings. In the drawings, the same components are denoted by the same reference symbols as possible. In addition, detailed descriptions of known functions and / or configurations are omitted. The following description will focus on the parts necessary for understanding the operation according to various embodiments, and a description of elements that may obscure the gist of the description will be omitted. Also, some of the elements of the drawings may be exaggerated, omitted, or schematically illustrated. The size of each component does not entirely reflect the actual size, and therefore the contents described herein are not limited by the relative sizes or spacings of the components drawn in the respective drawings.
도 1은 본 발명의 일 실시예에 따른 메모리 할당의 부분 해제를 지원하는 메모리 관리 장치(100)를 설명하기 위한 도면이다.1 is a diagram for explaining a
도 1을 참조하면, 본 발명의 일 실시예에 따른 메모리 관리 장치(100)는, 패킷 저장 메모리(110), 포인터 저장 메모리(121)와 보조 메모리(122)를 포함하는 해제 관리 메모리(120), 및 메모리 관리자(130)를 포함한다.1, a
메모리 관리자(130)는 메모리 관리 장치(100)에서의 IP(Internet Protocol) 데이터 패킷의 저장을 위한 메모리 할당과 해제 등에 관련된 전반적인 제어와 관리를 담당한다. The memory manager 130 is responsible for overall control and management relating to memory allocation and release for storage of IP (Internet Protocol) data packets in the
메모리 관리자(130)는 패킷 저장 메모리(110)의 저장소를 할당하여, 이동통신 시스템, 인터넷 시스템 등 통신 시스템 등에서 PDCP(Packet Data Convergence Protocol), RLC (Radio Link Control), MAC(Media Access Control), 모뎀(물리 계층) 등 다수의 신호 처리 계층 각각에서 처리되는 IP 데이터 패킷을 저장할 수 있다.The memory manager 130 allocates a storage of the
패킷 저장 메모리(110)는 기준 주소(base address)로부터 소정의 크기(바이트)의 저장소로 이루어지며, 소정의 개수 PN(자연수) 개의 분할된 저장소로 관리되어 각각의 분할된 저장소에 데이터 패킷이 저장될 수 있다. 각각의 분할된 저장소는, 해당 패킷의 데이터 크기, 소정의 태그(TAG) 정보 등 헤더 정보를 저장하는 헤더 MM1[i] 및 해당 패킷의 데이터를 저장하는 데이터 영역을 포함하고, 인덱스 i(i=0~PN-1)로 데이터 패킷의 저장 위치를 구분할 수 있고 인덱스 i 값은 해당 패킷의 ID(식별자)에 해당한다. 각각의 분할된 저장소의 헤더 MM1[i]와 데이터 영역은 각각 MM1_S(자연수) 및 DATA_S(자연수)의 크기(바이트)를 가지는 것으로 가정한다.The
해제 관리 메모리(120)의 포인터 저장 메모리(121)와 보조 메모리(122)는 메모리 해제를 관리하기 위한 저장소이다. 보조 메모리(122)는 포인터 저장 메모리(121)의 저장소 부족 시에 사용을 위한 보조 저장소로서, 모든 패킷들 각각에 대한 정보를 포인터 구분자 MM3.p 및 패킷 인덱스 구분자 MM3.i로 구분하여 저장한다. 보조 메모리(122)에는 모든 패킷에 대한 정보를 저장할 수 있지만, 포인터 저장 메모리(121)에 비교하여 검색이 느릴 수 있다. 다만, 보조 메모리(122)는 모든 패킷들이 공용으로 사용할 수 있어 메모리를 절약할 수 있는 장점이 있다.The
메모리 관리자(130)는 각 계층에서의 소정의 프로세서로부터 메모리 할당 요청을 받으면, 패킷 저장 메모리(110)의 PN개의 패킷 저장소 중에 사용 가능한 위치를 선정하고 해당 패킷의 데이터 영역의 시작 주소인 포인터를 리턴한다. 또한, 메모리 관리자(130)는 할당 해제 시에는, 기 할당했던 포인터를 전달받아 해당 패킷을 해제한다. 이러한 방식은 일반적인 통신 시스템에서 사용하는 방식으로서, 본 발명에서는 메모리 관리자(130)에서의 메모리 할당과 해제에 관한 다양한 구체적인 방식이 적용될 수 있다. When receiving a memory allocation request from a predetermined processor in each layer, the memory manager 130 selects a usable location in the PN packet storage of the
도 2는 본 발명의 메모리 할당의 부분 해제에 대한 일례를 설명하기 위한 도면이다.2 is a diagram for explaining an example of partial release of the memory allocation of the present invention.
먼저, 종래의 메모리 관리자를 통한 메모리 할당의 해제에 있어서는, 부분 해제가 불가능하고 할당 받은 해당 메모리의 전체에 대하여만 해제가 가능하다. 예를 들어, 도 2와 같이 메모리 할당 위치가 주 메모리포인터 p'이고 할당 크기가 소정의 사이즈 size (size1 + size2 + size3)인 경우에, 해제 시에는 p' 주 메모리 포인터가 요구되며, p'에 대해 size 전체를 해제하는 방식으로 동작한다. 그러나, 이러한 종래 방식에서는, 어느 계층에서 p', size로 메모리를 할당 받았지만 다른 계층에서 이를 p1, p2, p3로 나누어 사용하다가 p1, p2, p3를 부분적으로 해제하고자 할 경우에는, 기존 메모리 관리자는 p'을 이용하여 size 전체에 대한 해제 요청만을 할 수 있으므로, 해당 계층에서 p1, p2, p3의 부분적 해제 관련하여서는 각 프로세서(사용자)가 별도로 관리하여야 하므로 메모리 사용이 매우 복잡하고 어려운 실정이다.First, in releasing the memory allocation through the conventional memory manager, partial release is not possible, and only the entire allocated memory can be released. For example, when the memory allocation position is the main memory pointer p 'and the allocated size is the predetermined size size (size1 + size2 + size3) as shown in FIG. 2, p' The entire size is released to the user. However, in this conventional method, when a memory is allocated to p 'and size at a certain layer but it is divided into p1, p2 and p3 at another layer and p1, p2 and p3 are partially released, p ', it is necessary to separately manage p1, p2 and p3 in the corresponding layer. Therefore, memory usage is very complicated and difficult.
따라서, 본 발명에서는 각 계층에서 메모리를 사용하는 프로세서(사용자)와 메모리 관리자(130) 사이에 도 1과 같이 메모리의 부분적 해제 관리를 위해 패킷 저장 메모리(110) 이외에 중복 해제를 방지하기 위한 해제 관리 메모리(120)를 두어 프로세서(사용자)가 부분적으로 메모리를 해제 가능하도록 하였다. 메모리 할당의 부분 해제를 지원하는 본 발명의 메모리 관리 장치(100)에서는 패킷 저장 메모리(110)에 할당한 데이터에 대해 분할되어 해제하는 경우에 분할 해제 정보를 관리하여, 분할 해제 요구에 대하여 메모리 관리자(130)가 적절한 해제를 처리하고 관리한다. 본 발명의 메모리 관리 장치(100)의 구성 요소들의 동작은 소프트웨어, 하드웨어, 또는 이들의 결합으로 구현하는 것이 가능하다. Accordingly, in the present invention, as shown in FIG. 1, between the processor (user) using the memory in each layer and the memory manager 130, a release management The
도 1에서, 본 발명의 메모리 관리 장치(100)의 메모리 관리자(130)는, 패킷 저장 메모리(110)의 저장소를 할당할 때, 해당 계층에서 요구된 메모리 크기 또는 그 이상의 패킷 메모리를 데이터 영역으로 할당한다. 예를 들어, 도 1에서 MM1[i]에 해당하는 패킷을 할당하는 경우, 데이터 영역의 시작 주소(포인터)인 'MM1[i] 주소값 + MM1_S'를 포인터 p로 할당한다. 또한, 도 2와 같이, 메모리 관리자(130)는, 해당 계층에서 요구한 메모리 크기를 헤더 MM1[i]의 MM1[i].size 부분에 저장하며, 헤더 MM1[i]의 MM1[i].TAG에 기 정의된 소정의 값(태그정보)을 저장한다. 1, the memory manager 130 of the
해제 관리 메모리(120)의 포인터 저장 메모리(121)와 보조 메모리(122)는 메모리 해제를 관리하기 위한 정보를 저장하되, 중복 해제를 방지하기 위한 저장소로서 사용된다. 포인터 저장 메모리(121)에는 각각의 정보를 구분자 MM2[i].p와 같이 패킷 인덱스 i 값만으로 접근 가능하도록, 각 패킷 인덱스 i에 대응시켜 연관 정보(포인터 p)를 저장소에 저장하므로, 빠르게 검색이 가능하지만 저장 가능한 개수가 MM2_MAX로 제한된다. 보조 메모리(122)는 포인터 저장 메모리(121)의 저장소 부족 시에 사용을 위한 보조 저장소로서, 모든 패킷들 각각에 대한 정보를 포인터 구분자 MM3.p 및 패킷 인덱스 구분자 MM3.i로 구분하여 저장한다. 보조 메모리(122)에는 모든 패킷에 대한 정보를 저장할 수 있지만, 포인터 저장 메모리(121)에 비교하여 검색이 느릴 수 있다. 다만, 보조 메모리(122)는 패킷 인덱스 구분없이 모든 패킷들이 공용으로 사용할 수 있어 메모리를 절약할 수 있는 장점이 있다.The
좀 더 구체적으로, 메모리 관리자(130)는 포인터 저장 메모리(121)에 패킷 저장 메모리(110)의 부분 해제 대상 포인터들(p)을 저장하며, 중복해제를 검사하기 위해 이를 사용한다. 패킷 저장 메모리(110)의 패킷 인덱스 i를 할당 할 때, 포인터 저장 메모리(121)의 스택 포인터 MM2[i].sp(패킷 인덱스 i 마다의 스택 포인터)는 초기값 0으로 초기화되어 있고, MM2[i].sp를 1씩 증가하면서 부분 해제 대상 포인터들(p)을 MM2[i].p[MM2[i].sp]에 저장한다. More specifically, the memory manager 130 stores the partial release target pointers p of the
포인터 저장 메모리(121)에서 p 포인터를 검색하기 위하여, 메모리 관리자(130)는 주소 MM2[i].p[0] ~ MM2[i].p[MM2[i].sp -1]까지 p 값과 일치하는지를 검사한다. In order to retrieve the p pointer in the
스택 포인터 MM2[i].sp가 소정의 최대값 MM2_MAX(자연수)가 되면 더 이상 MM2에는 저장할 수 없으므로, 메모리 관리자(130)는 나머지 부분 해제 대상 포인터들(p)을 보조 메모리(122)에 저장한다. 통신 시스템에서 하나의 패킷이 분할되는 개수는 어느 정도 예측 가능하므로 가능하면 MM2_MAX 개수 내에서 동작하도록 MM2_MAX 값을 설정할 수 있다. 그러나 최악의 경우를 대비해서 MM2_MAX 개수가 부족한 경우에만 보조 메모리(122)에 포인터 구분자 MM3.p 및 패킷 인덱스 구분자 MM3.i로 구분하여 부분 해제 대상 포인터들(p)을 저장한다. When the stack pointer MM2 [i]. Sp reaches a predetermined maximum value MM2_MAX (natural number), the memory manager 130 can not store the pointer to the MM2 any longer. Therefore, the memory manager 130 stores the remaining partial release target pointers p in the
즉, 포인터 저장 메모리(121)와 마찬가지로, 보조 메모리(122)에는 부분 해제 대상 포인터들(p)이 저장되며 중복해제를 검사하기 위해 사용된다. 보조 메모리(122)는 포인터 저장 메모리(121)와 그 기능이 유사하지만, 특정 패킷이 아닌 모든 패킷에 대해 저장 가능한 메모리이다. 보조 메모리(122)는 포인터(p) 저장 개수를 지정하는 스택 포인터 MM3.sp, 각 포인터(p)가 저장되는 MM3.p[n], 그 포인터가 몇 번째 패킷에 속하는지를 지정하기 위한 MM3.i[n] 등의 구분자에 의해 정보가 저장되고 읽어진다. MM3.sp는 시스템 초기화 시에 0으로 설정 된다. That is, like the
메모리 관리자(130)는 스택 포인터 MM3.sp를 1씩 증가하면서, MM3.p[MM3.sp] 위치에 포인터(p)를 저장하고, MM3.i[MM3.sp]에 패킷 인덱스 i를 저장한다.The memory manager 130 stores the pointer p in the MM3.p [MM3.sp] position and stores the packet index i in the MM3.i [MM3.sp] while incrementing the stack pointer MM3.sp by one .
보조 메모리(122)에서 포인터(p)를 삭제하는 과정에 있어서는, 메모리 관리자(130)는 i번째 패킷에 해당 하는 포인터(p)를 삭제하는 경우에, MM3.i[n]의 값을 n = 0 ~ MM3.sp-1까지 검색하여 패킷 인덱스 i 값을 가지는 위치를 검색한다. 예를 들어, MM3.i[x] 값이 패킷 인덱스 i와 같으면, MM3.sp-1에 위치하는 MM3.i[MM3.sp-1]와 MM3.p[MM3.sp-1] 값을 MM3.i[x]와 MM3.p[x]에 저장하고 MM3.sp를 1 감소시킨다.In the process of deleting the pointer p in the
보조 메모리(122)에서 p 포인터를 검색하기 위하여, 메모리 관리자(130)는 주소 MM3.p[0] ~ MM3.p[MM2[i].sp -1]까지 p 값과 일치하는지를 검사한다. In order to retrieve the p pointer in the
이하 도 3의 흐름도를 참조하여 본 발명의 일 실시예에 따른 메모리 관리 장치(100)의 동작을 좀 더 자세히 설명한다. Hereinafter, the operation of the
먼저, 이동통신 시스템, 인터넷 시스템 등 통신 시스템 등에서 PDCP, RLC , AC, 모뎀(물리 계층) 등 다수의 신호 처리 계층 각각에서 IP 데이터 패킷을 패킷 저장 메모리(110)에 저장하고, 필요에 따라 해제 대상 포인터(p)과 해제 대상 크기(size)를 지정하여 메모리 할당의 해제를 요청할 수 있다(S110). 해제 대상 크기(size)는 해제 대상 포인터(p)로부터 시작하여 후속하는 해제될 마지막 주소까지의 바이트 단위 등의 크기이다. First, an IP data packet is stored in the
이에 따라 메모리 관리자(130)는 해제 대상 포인터(p)가 주 메모리 포인터(도 2에서 p'=p1에 해당)인지 검사하기 위하여, 패킷 저장 메모리(110)의 해제 대상 포인터(p) 앞의 값이 소정의 값 MM1[i].TAG과 일치하는지 여부를 확인하여 서로 일치하는 경우(S120), 그 해제 대상 크기(size) 또한 패킷 저장 메모리(110)의 MM1[i].size와 일치하는지 여부를 확인하여 서로 일치하면(S121), 해당 해제 요청을 허가하고 종료 한다(S181). 이는 할당 받은 메모리를 분할없이 해당 데이터 영역 모두에 대해 그대로 해제하는 경우에 해당한다. 메모리 관리자(130)는 할당 후 해제된 해당 주 메모리포인터 p'=p1를 다른 메모리 할당 요청에 메모리를 할당하기 위하여 관리할 수 있다. Accordingly, in order to check whether the release object pointer p is the main memory pointer (corresponding to p '= p1 in FIG. 2), the memory manager 130 stores the value before the release object pointer p in the packet storage memory 110 (I)] .size of the
위에서 해제 대상 포인터(p)가 주 메모리 포인터(도 2에서 p1에 해당)가 아니거나, 해제 대상 포인터(p)가 주 메모리 포인터이지만 해제 대상 크기(size)가 MM1[i].size와 일치하지 않으면(즉, 부분 해제인 경우), 메모리 관리자(130)는 해제 대상 포인터(p)가 몇 번째 패킷에 속하는지를 계산하여 [수학식1]과 같이 계산되는 값에서 소수점 이하는 버리고 정수값을 취하여 그 패킷 인텍스값 i를 계산한다(S130). FLOOR(k)는 k보다 크지 않은 최대 정수값이다. 이와 같이 계산되는 i가 도 1에서 패킷 인텍스값 i가 된다. If the release target pointer p is not the main memory pointer (corresponding to p1 in FIG. 2) or the release target pointer p is the main memory pointer but the release target size does not match MM1 [i] .size , The memory manager 130 calculates how many packets belonging to the unlocking target pointer p belongs to, and discards the fractional part of the value calculated as shown in [Equation 1] and takes an integer value The packet index value i is calculated (S130). FLOOR (k) is the maximum integer value not greater than k. I calculated in this way becomes the packet index value i in Fig.
[수학식1][Equation 1]
i = FLOOR( ( p - BASE_ADDRESS ) / ( MM1_S + DATA_S) )i = FLOOR ((p - BASE_ADDRESS) / (MM1_S + DATA_S))
패킷 인텍스값 i를 계산 후, 메모리 관리자(130)는 해제 대상 포인터(p)에 대해 중복 해제를 체크한다(S140). 즉, 메모리 관리자(130)는 부분 해제하고자 하는 해제 대상 포인터(p)가 포인터 저장 메모리(121)의 MM2[i].p와 보조 메모리(122)의 MM3.p에 존재하는지 여부를 검색하여, MM2[i].p 또는 MM3.p에 해제 대상 포인터(p)가 있는 경우는 메모리의 동일 부분 해제를 중복적으로 요청한 경우이므로 종료한다.After calculating the packet index value i, the memory manager 130 checks whether or not the release target pointer p has been released (S140). That is, the memory manager 130 searches whether the release target pointer p to be partially released exists in MM2 [i] .p of the
위에서 MM2[i].p 또는 MM3.p에 해제 대상 포인터(p)가 존재하지 않는 경우에(S140), 메모리 관리자(130)는 패킷 저장 메모리(110)의 이전 MM1[i].size 정보를 'MM1[i].size - 해제 대상 크기(size)'로 업데이트한다(S150). MM1[i].size는 메모리 할당 시 할당 받은 메모리 사이즈에 해당하며, 부분해제 될 때 마다 부분 해제 크기만큼 감소되어 업데이트된다. If the release target pointer p does not exist in MM2 [i] .p or MM3.p in step S140, the memory manager 130 deletes the previous MM1 [i] .size information of the packet storage memory 110 'MM1 [i] .size - release target size (size)' (S150). MM1 [i] .size corresponds to the memory size allocated in the memory allocation, and is updated by decrementing the partial release size each time the partial release is made.
이때 업데이트된 MM1[i].size 값이 0이 아니면, 패킷 저장 메모리(110)의 해당 패킷 인덱스 i에 대하여 아직도 해제하지 않은 부분 데이터 영역이 존재하므로, 해제 대상 포인터(p)를 포인터 저장 메모리(121)의 MM2[i] 또는 보조 메모리(122)의 MM3.p에 저장 관리한다(S161). 즉, MM2[i].sp가 최대값 MM2_MAX가 아닌 경우에는 해제 대상 포인터(p)를 MM2[i]에 저장하고, MM2[i].sp가 MM2_MAX인 경우는 MM3.p와 MM3.i에 각각 해제 대상 포인터(p)와 패킷 인덱스 i를 저장한다. 이때 위에서 기술한 바와 같이 해당 스택 포인터가 1씩 증가된다.If the updated MM1 [i] .size value is not 0, there exists a partial data area that has not yet been released with respect to the corresponding packet index i of the
위에서 MM1[i].size 값이 0이면(S160), 패킷 인덱스 i 부분의 데이터 영역이 모두 해제된 상태이므로 해당 패킷 전체를 해제할 수 있다. 해당 패킷의 해제를 위하여 MM2[i].sp를 0으로 초기화하고 MM3.p를 검색하여 i 패킷에 속하는 포인터들을 삭제한다(S170).If the value of MM1 [i] .size is 0 (S160), the entire data area of the packet index i portion is released, so the entire packet can be released. In order to release the packet, MM2 [i] .sp is initialized to 0 and MM3.p is searched to delete pointers belonging to the i packet (S170).
이때 메모리 관리자(130)에서 할당한 메모리를 해제하기 위하여, 메모리 관리자(130)는 할당했던 주 메모리포인터 p'를 [수학식2]와 같이 계산하여 다른 메모리 할당 요청에 메모리를 할당하기 위하여 관리할 수 있다(S180). 주 메모리포인터 p'를 계산 후 메모리 관리자(130)는 해당 해제 요청을 허가하고 종료 한다(S181).At this time, in order to release the memory allocated by the memory manager 130, the memory manager 130 calculates the main memory pointer p 'as shown in Equation (2) (S180). After calculating the main memory pointer p ', the memory manager 130 permits the corresponding release request and terminates (S181).
[수학식2] &Quot; (2) "
p' = BASE_ADDRESS + i * ( MM1_S + DATA_S) + MM1_Sp '= BASE_ADDRESS + i * (MM1_S + DATA_S) + MM1_S
예를 들어, 도 2의 예에서, 패킷을 처리하는 각 계층에서 메모리 관리자(130)로부터 size1 + size2 + size3 크기의 메모리를 할당 받은 후, size1, size2, size3로 이루어진 3개의 분할 데이터로 처리될 수 있다. 이때 p1 및 p2 두 개의 데이터에 대해 부분 해제를 하는 경우, S150에서 MM1[i].size = size3 값으로 업데이트될 수 있고, 이후 p3 부분을 해제하게 되면 S160에서 MM1[i].size는 0 값을 가지므로, 해당 패킷에 대해 메모리 관리자(130)에 의해 해제가 처리되고 관리된다.For example, in the example of FIG. 2, a memory of
상술한 바와 같이, 본 발명에 따른 메모리 관리 장치(100)에서는, 통신 시스템 등에서 프로토콜 계층간 데이터 전달을 위해 사용되는 메모리를 각각의 계층에서 할당하고 해제 시에, 하나의 할당받은 메모리를 일정 크기로 분할하여 사용하는 경우 부분적으로 해제 가능하도록 함으로써, 통신 계층간 이동하는 데이터가 분할되더라도 메모리 무복사 시스템을 원활히 구성하여 시스템의 성능을 높일 수 있다.As described above, in the
이상과 같이 본 발명에서는 구체적인 구성 요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.As described above, the present invention has been described with reference to particular embodiments, such as specific elements, and specific embodiments and drawings. However, it should be understood that the present invention is not limited to the above- Those skilled in the art will appreciate that various modifications, additions and substitutions are possible, without departing from the essential characteristics of the invention. Therefore, the spirit of the present invention should not be construed as being limited to the embodiments described, and all technical ideas which are equivalent to or equivalent to the claims of the present invention are included in the scope of the present invention .
패킷 저장 메모리(110)
해제 관리 메모리(120)
포인터 저장 메모리(121)
보조 메모리(122)
메모리 관리자(130)
The
The
The memory manager (130)
Claims (1)
패킷 인덱스로 구분되는 헤더와 데이터 영역에 데이터 패킷의 헤더 정보와 데이터를 각각 저장하는 패킷 저장 메모리; 상기 패킷 저장 메모리 할당이 부분 해제된 해당 포인터와 상기 패킷 인덱스를 관리하기 위한 해제 관리 메모리; 및
상기 패킷 저장 메모리의 할당에 있어서 상기 데이터 패킷의 크기와 태그 정보를 상기 헤더 정보로서 저장하여 관리하고 상기 데이터 패킷의 데이터를 상기 데이터 영역에 저장하여 관리하며, 상기 할당의 해제 요청에 따른 해당 해제 대상 포인터와 해제 대상 크기를 이용하여, 상기 해제 대상 포인터 앞이 상기 태그 정보인지 여부와 상기 해제 대상 크기가 상기 데이터 패킷의 크기와 일치 여부를 판단해 부분 해제인지 여부를 결정하는 메모리 관리자를 포함하고,
상기 메모리 관리자는, 상기 부분 해제에 있어서, 상기 해제 대상 포인터가 상기 해제 관리 메모리에 존재 여부에 따라 중복 해제 여부를 검사하여, 상기 중복 해제에 해당하지 않으면, 상기 해제 대상 포인터와 함께 그에 대응된 상기 패킷 인덱스를 상기 해제 관리 메모리에 관리하는 것을 특징으로 하는 메모리 관리 장치.A memory management device for supporting partial release of memory allocation,
A packet storage memory for storing header information and data of a data packet in a header and a data area separated by a packet index, respectively; A release management memory for managing a corresponding pointer to which the packet storage memory allocation is partially released and the packet index; And
And managing the size and the tag information of the data packet as the header information and managing the data packet by storing and managing the data of the data packet in the data area in the allocation of the packet storage memory, And a memory manager for determining whether or not the release object pointer is in the tag information and whether the release object size is equal to the size of the data packet by using the pointer and the release object size,
The memory manager may check whether or not the release object pointer is released in accordance with the presence or absence of the release object pointer in the release management memory in the partial release and if the release object pointer does not correspond to the release of the release object pointer, And manages the packet index in the release management memory.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150029836A KR102012261B1 (en) | 2015-03-03 | 2015-03-03 | Memory Management Apparatus and Method for Supporting Partial Release of Memory Allocation |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150029836A KR102012261B1 (en) | 2015-03-03 | 2015-03-03 | Memory Management Apparatus and Method for Supporting Partial Release of Memory Allocation |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160106999A true KR20160106999A (en) | 2016-09-13 |
KR102012261B1 KR102012261B1 (en) | 2019-10-21 |
Family
ID=56946524
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020150029836A KR102012261B1 (en) | 2015-03-03 | 2015-03-03 | Memory Management Apparatus and Method for Supporting Partial Release of Memory Allocation |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102012261B1 (en) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20020025722A (en) * | 2000-09-29 | 2002-04-04 | 잘링크 세미콘덕터 브이.엔. 아이엔씨. | Buffer management for support of quality-of-service guarantees and data flow control in data switching |
KR20070017556A (en) * | 2004-05-14 | 2007-02-12 | 인터디지탈 테크날러지 코포레이션 | Method and apparatus for efficiently allocating and deallocating interleaved data stored in a memory stack |
KR20090006157A (en) * | 2006-03-31 | 2009-01-14 | 퀄컴 인코포레이티드 | Memory management for high speed media access control |
KR20130003855A (en) * | 2011-07-01 | 2013-01-09 | 성균관대학교산학협력단 | Device and method for providing memory reclamation |
-
2015
- 2015-03-03 KR KR1020150029836A patent/KR102012261B1/en active IP Right Grant
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20020025722A (en) * | 2000-09-29 | 2002-04-04 | 잘링크 세미콘덕터 브이.엔. 아이엔씨. | Buffer management for support of quality-of-service guarantees and data flow control in data switching |
KR20070017556A (en) * | 2004-05-14 | 2007-02-12 | 인터디지탈 테크날러지 코포레이션 | Method and apparatus for efficiently allocating and deallocating interleaved data stored in a memory stack |
KR20090006157A (en) * | 2006-03-31 | 2009-01-14 | 퀄컴 인코포레이티드 | Memory management for high speed media access control |
KR20130003855A (en) * | 2011-07-01 | 2013-01-09 | 성균관대학교산학협력단 | Device and method for providing memory reclamation |
Also Published As
Publication number | Publication date |
---|---|
KR102012261B1 (en) | 2019-10-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11354230B2 (en) | Allocation of distributed data structures | |
US8751763B1 (en) | Low-overhead deduplication within a block-based data storage | |
EP3035197B1 (en) | File migration method and apparatus and storage device | |
JP4265245B2 (en) | Computer system | |
CN112578997B (en) | Data migration method, system and related equipment | |
US10037161B2 (en) | Tiered storage system, storage controller, and method for deduplication and storage tiering | |
KR20170068564A (en) | Data processing method, apparatus and system | |
US20190347167A1 (en) | Primary Node-Standby Node Data Transmission Method, Control Node, and Database System | |
US20070174333A1 (en) | Method and system for balanced striping of objects | |
EP3062229A1 (en) | Data migration method, device and processor | |
US11416145B2 (en) | Efficient space management for high performance writable snapshots | |
WO2021047425A1 (en) | Virtualization method and system for persistent memory | |
JP6268116B2 (en) | Data processing apparatus, data processing method, and computer program | |
EP4087212A1 (en) | Method and apparatus for cloning file system | |
WO2015089728A1 (en) | Repeated data processing method, device, storage controller and storage node | |
TW201248418A (en) | Distributed caching and cache analysis | |
US10387043B2 (en) | Writing target file including determination of whether to apply duplication elimination | |
CN113939796A (en) | Extending file systems and extension volumes using a ReFS | |
US9667735B2 (en) | Content centric networking | |
KR20190093642A (en) | Systems and Methods for Continuously Available Network File System (NFS) State Data | |
CN114365109A (en) | RDMA-enabled key-value store | |
CN111930315A (en) | Data access method, data access device and storage medium | |
CN113032414B (en) | Data management method, device, system, computing equipment and storage medium | |
KR20160106999A (en) | Memory Management Apparatus and Method for Supporting Partial Release of Memory Allocation | |
US11875152B2 (en) | Methods and systems for optimizing file system usage |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |