KR20220042887A - 메모리 할당 장치 및 방법 - Google Patents
메모리 할당 장치 및 방법 Download PDFInfo
- Publication number
- KR20220042887A KR20220042887A KR1020200126263A KR20200126263A KR20220042887A KR 20220042887 A KR20220042887 A KR 20220042887A KR 1020200126263 A KR1020200126263 A KR 1020200126263A KR 20200126263 A KR20200126263 A KR 20200126263A KR 20220042887 A KR20220042887 A KR 20220042887A
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- path
- fragment
- additional amount
- pieces
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 44
- 239000012634 fragment Substances 0.000 claims abstract description 142
- 238000010845 search algorithm Methods 0.000 claims description 34
- 238000010586 diagram Methods 0.000 description 6
- 239000004065 semiconductor Substances 0.000 description 2
- 230000006870 function Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01C—MEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
- G01C21/00—Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
- G01C21/26—Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
- G01C21/34—Route searching; Route guidance
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01C—MEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
- G01C21/00—Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
- G01C21/26—Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
- G01C21/34—Route searching; Route guidance
- G01C21/3446—Details of route searching algorithms, e.g. Dijkstra, A*, arc-flags, using precalculated routes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/16—Protection against loss of memory contents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24561—Intermediate data storage techniques for performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/24569—Query processing with adaptation to specific hardware, e.g. adapted for using GPUs or SSDs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/29—Geographical information databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Remote Sensing (AREA)
- Radar, Positioning & Navigation (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Automation & Control Theory (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
본 발명의 일 실시예에 따른 메모리 할당 장치는 경로를 탐색하는데 사용되는 메모리 조각이 생성되어 있는 적어도 하나 이상의 메모리 풀(memory pool)을 포함하는 저장부 및 생성되어 있는 메모리 조각을 이용하여 상기 경로의 탐색 가능 여부를 판단하고, 상기 경로의 탐색이 불가능한 경우, 상기 메모리 조각의 추가량을 결정하여 상기 저장부의 메모리를 선할당하는 제어부를 포함하여, 경로 탐색 시 메모리를 동적으로 할당하여, 경로 탐색 시간을 줄이고, 전체 시스템 메모리의 사용을 효율적으로 할 수 있다.
Description
본 발명은 메모리 할당 장치 및 방법에 관한 것이다.
경로 탐색 서버는 사용자로부터 입력된 출발지와 목적지를 수신하여 경로 데이터를 탐색하여 출발지로부터 목적지까지의 경로 데이터를 제공할 수 있다. 경로 탐색 서버는 경로 데이터를 제공하기 위하여 메모리가 필요한 시점에 기 설정된 단위로 메모리 객체를 할당하면서 경로 탐색 알고리즘을 실행한다.
일반적으로 경로 탐색 서버는 경로 탐색 알고리즘 실행 시 기 설정된 단위의 메모리 객체를 정적으로 할당하는데, 기 설정된 단위로 메모리가 할당됨에 따라 불필요한 메모리가 할당되어 메모리가 낭비되는 문제가 있을 수 있으며, 메모리가 부족한 데이터가 처리되는 속도가 느려져 경로 탐색 소요 시간이 길어지는 한계가 있다. 따라서, 경로 탐색 시 요구되는 메모리만 할당하는 기술이 요구되는 실정이다.
본 발명의 일 목적은 경로 탐색 시 메모리를 동적으로 할당하여 경로 탐색의 처리 시간을 줄일 수 있는 메모리 할당 장치 및 방법을 제공하는데 있다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재들로부터 당업자에게 명확하게 이해될 수 있을 것이다.
본 발명의 일 실시예에 따른 메모리 할당 장치는 경로를 탐색하는데 사용되는 메모리 조각이 미리 생성되어 있는 적어도 하나 이상의 메모리 풀(memory pool)을 포함하는 저장부 및 미리 생성되어 있는 메모리 조각을 이용하여 상기 경로의 탐색 가능 여부를 판단하고, 상기 경로의 탐색이 불가능한 경우, 상기 메모리 조각의 추가량을 결정하여 상기 저장부의 메모리를 선할당하는 제어부를 포함할 수 있다.
상기 제어부는 전체 가용 메모리를 상기 메모리 풀 개수로 나눈 값으로 메모리 조각 생성 가능 개수를 산출할 수 있다.
상기 제어부는 상기 메모리 조각 생성 가능 개수와, 1회에 추가 가능한 메모리 조각 개수를 비교하고, 비교 결과를 기반으로 상기 메모리 조각의 추가량을 결정할 수 있다.
상기 제어부는 상기 메모리 조각 생성 가능 개수가 상기 1회에 추가 가능한 메모리 조각 개수보다 크면, 상기 1회에 추가 가능한 메모리 조각 개수를 상기 메모리 조각의 추가량으로 결정할 수 있다.
상기 제어부는 상기 메모리 조각 생성 가능 개수가 상기 1회에 추가 가능한 메모리 조각 개수보다 작으면, 상기 메모리 조각 생성 가능 개수를 상기 메모리 조각의 추가량으로 결정할 수 있다.
상기 제어부는 결정된 추가량으로 생성된 상기 메모리 조각으로 상기 경로 탐색 알고리즘의 실행 가능 여부를 판단할 수 있다.
상기 제어부는 상기 결정된 추가량으로 경로 탐색 알고리즘의 실행이 가능하면, 상기 결정된 추가량으로 생성된 메모리 조각으로 상기 경로 탐색 알고리즘을 실행하여 최종 경로를 생성할 수 있다.
상기 제어부는 상기 최종 경로를 생성하면, 기 생성된 메모리 조각을 해제할 수 있다.
상기 제어부는 결정된 추가량으로 생성된 상기 메모리 조각으로 상기 경로의 탐색이 불가능하면, 경로 탐색 실패로 판단할 수 있다.
상기 메모리 조각은 복수개의 메모리 셀을 포함할 수 있다.
본 발명의 일 실시예에 따른 메모리 할당 방법은 경로를 탐색하는데 사용되는 메모리 조각을 적어도 하나 이상의 메모리 풀(memory pool)에 미리 생성하는 단계와, 미리 생성되어 있는 메모리 조각을 이용하여 상기 경로의 탐색 가능 여부를 판단하는 단계 및 미리 생성되어 있는 메모리 조각을 이용하여 상기 경로의 탐색이 불가능한 경우, 상기 메모리 조각의 추가량을 결정하여 메모리를 선할당하는 단계를 포함할 수 있다.
전체 가용 메모리를 상기 메모리 풀 개수로 나눈 값으로 메모리 조각 생성 가능 개수를 산출하는 단계를 더 포함할 수 있다.
상기 메모리 조각 생성 가능 개수와, 1회에 추가 가능한 메모리 조각 개수를 비교하고, 비교 결과를 기반으로 상기 메모리 조각의 추가량을 결정하는 단계를 더 포함할 수 있다.
상기 메모리 추가량을 결정하는 단계에서, 상기 메모리 조각 생성 가능 개수가 상기 1회에 추가 가능한 메모리 조각 개수보다 크면, 상기 1회에 추가 가능한 메모리 조각 개수를 상기 메모리 조각의 추가량으로 결정할 수 있다.
상기 메모리 추가량을 결정하는 단계에서, 상기 메모리 조각 생성 가능 개수가 상기 1회에 추가 가능한 메모리 조각 개수보다 작으면, 상기 메모리 조각 생성 가능 개수를 상기 메모리 조각의 추가량으로 결정할 수 있다.
결정된 추가량으로 생성된 상기 메모리 조각으로 상기 경로 탐색 알고리즘의 실행 가능 여부를 판단하는 단계를 더 포함할 수 있다.
상기 결정된 추가량으로 경로 탐색 알고리즘의 실행이 가능하면, 상기 결정된 추가량으로 생성된 메모리 조각으로 상기 경로 탐색 알고리즘을 실행하여 최종 경로를 생성하는 단계를 더 포함할 수 있다.
상기 최종 경로를 생성하는 단계 이후, 기 생성된 메모리 조각을 해제하는 단계를 더 포함할 수 있다.
결정된 추가량으로 생성된 상기 메모리 조각으로 상기 경로의 탐색이 불가능하면, 경로 탐색 실패로 판단하는 단계를 더 포함할 수 있다.
상기 메모리 조각은 복수개의 메모리 셀을 포함할 수 있다.
본 발명의 일 실시예에 따른 메모리 할당 장치 및 방법은 경로 탐색 시 메모리를 동적으로 할당하여, 경로 탐색 시간을 줄이고, 전체 시스템 메모리의 사용을 효율적으로 할 수 있다.
도 1은 본 발명의 일 실시예에 따른 메모리 할당 장치의 구성을 나타낸 도면이다.
도 2는 본 발명의 일 실시예에 따른 메모리 할당 장치의 동작을 개략적으로 나타낸 도면이다.
도 3은 본 발명의 일 실시예에 따른 메모리 할당 방법을 나타낸 순서도이다.
도 4는 본 발명의 일 실시예에 따른 방법을 실행하는 컴퓨팅 시스템의 구성을 도시한 도면이다.
도 2는 본 발명의 일 실시예에 따른 메모리 할당 장치의 동작을 개략적으로 나타낸 도면이다.
도 3은 본 발명의 일 실시예에 따른 메모리 할당 방법을 나타낸 순서도이다.
도 4는 본 발명의 일 실시예에 따른 방법을 실행하는 컴퓨팅 시스템의 구성을 도시한 도면이다.
이하, 본 발명의 일부 실시예들을 예시적인 도면을 통해 상세하게 설명한다. 각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 발명의 실시예를 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 실시예에 대한 이해를 방해한다고 판단되는 경우에는 그 상세한 설명은 생략한다.
본 발명의 실시예의 구성 요소를 설명하는 데 있어서, 제 1, 제 2, A, B, (a), (b) 등의 용어를 사용할 수 있다. 이러한 용어는 그 구성 요소를 다른 구성 요소와 구별하기 위한 것일 뿐, 그 용어에 의해 해당 구성 요소의 본질이나 차례 또는 순서 등이 한정되지 않는다. 또한, 다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가진 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
도 1은 본 발명의 일 실시예에 따른 메모리 할당 장치의 구성을 나타낸 도면이다.
도 1에 도시된 바와 같이, 본 발명의 일 실시예에 따른 메모리 할당 장치(100)는 저장부(110) 및 제어부(120)를 포함할 수 있다. 본 발명의 실시예에 따르면, 메모리 할당 장치는 사용자로부터 요청받은 경로를 탐색할 수 있는 서버에 포함될 수 있다.
저장부(110)는 본 발명의 일 실시예에 따른 메모리 할당 장치의 전반적인 동작을 실행하는 알고리즘을 저장할 수 있다. 실시예에 따르면, 저장부(110)는 사용자로부터 요청받은 경로(출발지로부터 목적지까지의 경로)를 탐색할 수 있는 알고리즘을 저장할 수 있다.
또한, 저장부(110)는 적어도 하나 이상의 경로를 탐색하는데 사용되는 메모리 조각이 생성되어 있는 메모리 풀(memory pool)을 포함할 수 있다. 메모리 풀은 적어도 하나 이상의 메모리 조각을 포함할 수 있으며, 메모리 조각은 복수개의 메모리 셀을 포함할 수 있다. 여기서, 메모리 셀은 고정된 크기를 갖는 메모리 최소 단위를 의미할 수 있으며, 경로 탐색 시 각 구간의 위치 및 속도에 대한 정보를 나타내는데 사용될 수 있다.
저장부(110)는 플래시 메모리(flash memory), 하드디스크(hard disc), 메모리 카드, 롬(ROM: Read-Only Memory), 램(RAM: Random Access Memory), EEPROM(Electrically Erasable Programmable Read-Only Memory), PROM(Programmable Read-Only Memory), 자기 메모리, 자기 디스크, 광 디스크 중 적어도 하나의 저장 매체를 포함할 수 있다.
제어부(120)는 각종 명령의 연산이나 실행을 수행 가능한 반도체 칩 등을 내장한 마이크로 프로세서(microprocessor) 등의 다양한 처리 장치에 의해 구현될 수 있으며, 본 발명의 일 실시예에 따른 메모리 할당 장치의 동작을 제어할 수 있다. 구체적으로는 생성되어 있는 메모리 조각을 이용하여 경로의 탐색 가능 여부를 판단하고, 경로의 탐색이 불가능한 경우, 메모리 조각의 추가량을 결정하여 저장부(110)의 메모리를 선할당할 수 있다. 보다 구체적인 제어부(120)의 설명은 도 2를 참조하여 설명한다.
도 2는 본 발명의 일 실시예에 따른 메모리 할당 장치의 동작을 개략적으로 나타낸 도면이다.
도 2에 도시된 바와 같이, 제어부(120)는 저장부(110)에 포함된 복수의 메모리 셀을 포함하는 메모리 조각(125)을 미리 생성할 수 있다. 메모리 조각(125)은 적어도 하나 이상의 메모리 풀(124)에 미리 생성될 수 있으며, 복수의 메모리 셀(126)을 포함할 수 있다. 제어부(120)는 사용자로부터 경로 탐색을 요청받으면, 메모리 풀(124)에 미리 생성된 메모리 조각(125)을 기반으로 경로 탐색 알고리즘을 실행할 수 있다.
본 발명의 실시예에 따르면, 제어부(120)는 경로 탐색 알고리즘 실행 시 이용할 메모리 조각(125)을 요청하는 소비자(121)와, 소비자(121)로부터 메모리 조각(125)을 요청받아, 메모리 풀(124)로부터 메모리 조각(125)을 인출하여 소비자(121)로 전달하는 메모리 매니저(123), 메모리 풀(124) 내에 적어도 하나 이상의 메모리 조각을 생성하는 생성자(122)를 포함할 수 있다. 이하에서는 제어부(120)의 동작을 상세히 설명하기 위하여, 소비자(121), 생성자(122), 메모리 매니저(123)의 동작으로 구분하여 설명한다.
소비자(121)는 경로 탐색 알고리즘 실행 시 이용할 메모리 조각을 메모리 매니저(123)에 요청할 수 있다. 메모리 매니저(123)는 소비자(121)로부터 메모리 조각의 이용을 요청받으면, 메모리 풀(124) 내에 미리 생성된 메모리 조각(125)을 이용하여 경로 탐색 알고리즘이 실행 가능한 지 여부를 판단할 수 있다. 메모리 매니저(123)는 메모리 풀(124) 내에 미리 생성된 메모리 조각(125)을 이용하여 경로 탐색 알고리즘의 실행이 가능한 것으로 판단하면, 메모리 풀(124) 내의 메모리 조각을 인출하여 소비자(121)로 전달할 수 있다. 소비자(121)는 메모리 매니저(123)로부터 전달받은 메모리 조각(125)을 기반으로 경로 탐색 알고리즘을 실행할 수 있다. 소비자(121)는 경로 탐색 알고리즘이 실행되면, 최종 경로를 생성하고, 사용자(차량 또는 단말기)로 경로를 안내할 수 있다.
한편, 메모리 매니저(123)는 메모리 풀(124) 내에 미리 생성된 메모리 조각(125)을 이용하여 경로 탐색 알고리즘이 실행 불가능한 것으로 판단하면, 생성자(122)에게 메모리 조각의 생성 추가를 요청할 수 있다(메모리 조각 인출 신호 전송). 생성자(122)는 메모리 풀(124) 내의 메모리 조각(125)이 소비자(121)의 개수 이상으로 유지되도록 메모리 조각을 생성할 수 있으며, 메모리 매니저(123)로부터 메모리 조각(125)의 생성 추가를 요청받으면, 메모리 조각의 추가량을 결정하고, 추가량 만큼 메모리를 할당하여 메모리 조각을 생성할 있다.
생성자(122)는 메모리 조각 추가량을 결정하기 위하여 먼저, 메모리 조각 생성 가능 개수를 산출할 수 있다. 실시예에 따르면, 생성자(122)는 저장부(110)의 전체 가용 메모리를 메모리 풀(124)의 개수로 나눈 값으로 메모리 조각 생성 가능 개수를 산출할 수 있다. 생성자(122)는 전체 가용 메모리로 생성 가능한 메모리 조각 개수와 1회에 추가 가능한 메모리 조각 개수(조각 개수, 제어부의 성능에 따라 1회 추가 가능한 메모리 조각 개수는 변경될 수 있음)를 비교하고, 비교 결과를 기반으로 메모리 조각의 추가량을 결정할 수 있다.
일 실시예에 따르면, 생성자(122)는 전체 가용 메모리로 생성 가능한 메모리 조각 개수가 1회에 추가 가능한 메모리 조각 개수보다 크면, 1회 추가 가능한 메모리 조각 개수를 메모리 조각의 추가량으로 결정할 수 있다. 또한, 생성자(122)는 전체 가용 메모리로 생성 가능한 메모리 조각 개수가 1회에 추가 가능한 메모리 조각 개수보다 작으면, 전체 가용 메모리로 생성 가능한 메모리 조각 개수를 메모리 조각의 추가량으로 결정할 수 있다. 따라서, 본 발명은 상술한 방식으로 메모리 조각의 추가량을 결정하고, 결정된 추가량 만큼 메모리를 할당하기 때문에, 일괄적으로 소정 크기의 메모리를 할당하는 방식에 비해 메모리 활용 효율이 향상된다.
생성자(122)는 결정된 추가량만큼 메모리를 할당하여 메모리 조각을 추가로 생성하면, 메모리 매니저(123)가 메모리 조각의 추가량으로 경로 탐색 알고리즘의 실행이 가능한지 여부를 판단할 수 있다. 메모리 매니저(123)는 메모리 추가량으로 경로 탐색 알고리즘의 실행이 가능한 것으로 판단하면, 소비자(121)가 메모리 조각을 요청하는 경우, 메모리 조각을 소비자(121)로 전달할 수 있다. 소비자(121)는 메모리 조각을 전달받아 경로 탐색 알고리즘을 실행할 수 있으며, 최종 경로를 생성하고 사용자에게 최종 경로를 안내할 수 있다. 실시예에 따르면, 소비자(121)는 메모리 조각에 포함된 복수의 메모리 셀을 이용하여 출발지로부터 목적지까지의 이동 가능한 경로를 탐색할 수 있으며, 출발지로부터 목적지까지 이어지는 경로들을 표현하는 메모리 셀 중 최저비용으로 이동가능한 경로를 포함하는 메모리 셀을 선택하여 최종 경로를 생성할 수 있다. 소비자(121)는 최종 경로가 사용자에게 안내된 후 생성한 메모리 조각을 해제할 수 있다.
그러나, 메모리 매니저(123)는 메모리 조각의 추가량으로 경로 탐색 알고리즘의 실행이 불가능한 것으로 판단하면(다른 소비자들이 탐색 처리를 위해 메모리 조각을 이미 사용한 경우), 소비자(121)가 메모리 조각을 요청하는 경우, 메모리 조각을 전달할 수 없다. 따라서, 소비자(121)는 메모리 조각을 전달받지 못하고 경로 탐색 알고리즘을 실행할 수 없으며, 경로 탐색을 실패한 것으로 판단할 수 있다. 소비자(121)는 경로 탐색이 실패하면 사용자에게 경로 탐색 실패를 안내할 수 있다. 아울러, 소비자(121)는 탐색 실패를 안내한 후, 재탐색을 유도하여 다른 소비자들의 탐색 처리가 종료되어 추가 메모리 조각이 생성이 가능해질 때까지의 시간을 확보할 수 있다. 도 3은 본 발명의 일 실시예에 따른 메모리 할당 방법을 나타낸 순서도이다.
도 3에 도시된 바와 같이, 메모리 저장 장치(100)의 제어부(120)는 저장부(110)에 포함된 복수의 메모리 셀을 포함하는 메모리 조각을 미리 생성할 수 있다(S110). 제어부(120)는 사용자 단말기(또는 차량)에 입력된 출발지와 목적지까지 경로 요청 정보를 수신할 수 있다(S120).
제어부(120)는 사용자로부터 경로 탐색을 요청받으면 메모리 풀(124)에 미리 생성된 메모리 조각을 기반으로 경로 탐색 알고리즘을 실행할 수 있다.
제어부(120)는 메모리 풀에 미리 생성된 메모리 조각을 이용하여 경로 탐색 알고리즘의 실행이 가능한지 여부를 판단할 수 있다(S130). S130에서 제어부(120)는 메모리 조각을 이용하여 경로 탐색 알고리즘의 실행이 가능한 것으로 판단하면(Y), 메모리 조각을 이용하여 경로 탐색 알고리즘을 실행할 수 있다(S170). 아울러, 제어부(120)는 메모리 조각 내 포함된 메모리 셀을 이용하여 최종 경로를 생성할 수 있다(S180). 제어부(120)는 최종 경로가 안내되면, 기 생성된 메모리 조각을 해제할 수 있다(S190).
한편, S130에서 제어부(120)는 메모리 풀에 미리 생성된 메모리 조각을 이용하여 경로 탐색 알고리즘의 실행이 불가능한 것으로 판단하면, 메모리 조각을 추가 생성할 수 있다(S140). S140에서 실시예에 따르면, 제어부(120)는 메모리 조각의 추가량을 결정하고, 결정된 추가량으로 메모리 조각을 생성할 수 있다.
S140에서 제어부(120)는 메모리 조각 생성 가능 개수를 산출할 수 있다. 제어부(120)는 저장부(110)의 전체 가용 메모리를 메모리 풀의 개수로 나눈 값으로 메모리 조각 생성 가능 개수를 산출할 수 있다. 아울러, 제어부(120)는 전체 가용 메모리로 생성 가능한 메모리 조각 개수와 1회에 추가 가능한 메모리 조각 개수를 비교하고, 비교 결과를 기반으로 추가량을 결정할 수 있다.
제어부(120)는 전체 가용 메모리로 생성 가능한 메모리 조각 개수가 1회에 추가 가능한 메모리 조각 개수보다 크면, 1회에 추가 가능한 메모리 조각 개수를 추가량을 결정할 수 있고, 전체 메모리로 생성 가능한 메모리 조각 개수가 1회에 추가 가능한 메모리 조각 개수보다 작으면, 전체 메모리로 생성 가능한 메모리 조각 개수를 추가량으로 결정할 수 있다. 제어부(120)는 결정된 추가량만큼 메모리를 할당할 수 있다.
제어부(120)는 결정된 추가량만큼 메모리를 할당하여 메모리 조각을 추가 생성하면, 메모리 조각 추가량으로 경로 탐색 알고리즘 실행이 가능한지 여부를 판단할 수 있다(S150). S150에서 제어부(120)는 메모리 조각 추가량으로 경로 탐색 알고리즘이 실행 가능한 것으로 판단하면(Y), S170을 실행할 수 있다.
한편, S150에서 제어부(120)는 메모리 조각 추가량으로 경로 탐색 알고리즘이 실행 불가능한 것으로 판단하면(N), 경로 탐색이 실패한 것으로 판단할 수 있으며(S160). 경로 탐색 실패를 안내할 수 있다(S200). 도시되지는 않았지만, S200에서 탐색 실패를 안내한 후, 제어부(120)는 재탐색을 유도하여 다른 소비자들의 탐색 처리가 종료되어 추가 메모리 조각이 생성이 가능해질 때까지의 시간을 확보할 수 있다.
도 4는 본 발명의 일 실시예에 따른 방법을 실행하는 컴퓨팅 시스템의 구성을 도시한 도면이다.
도 4를 참조하면, 컴퓨팅 시스템(1000)은 버스(1200)를 통해 연결되는 적어도 하나의 프로세서(1100), 메모리(1300), 사용자 인터페이스 입력 장치(1400), 사용자 인터페이스 출력 장치(1500), 스토리지(1600), 및 네트워크 인터페이스(1700)를 포함할 수 있다.
프로세서(1100)는 중앙 처리 장치(CPU) 또는 메모리(1300) 및/또는 스토리지(1600)에 저장된 명령어들에 대한 처리를 실행하는 반도체 장치일 수 있다. 메모리(1300) 및 스토리지(1600)는 다양한 종류의 휘발성 또는 불휘발성 저장 매체를 포함할 수 있다. 예를 들어, 메모리(1300)는 ROM(Read Only Memory, 1310) 및 RAM(Random Access Memory,1320)을 포함할 수 있다.
따라서, 본 명세서에 개시된 실시예들과 관련하여 설명된 방법 또는 알고리즘의 단계는 프로세서(1100)에 의해 실행되는 하드웨어, 소프트웨어 모듈, 또는 그 2 개의 결합으로 직접 구현될 수 있다. 소프트웨어 모듈은 RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터, 하드 디스크, 착탈형 디스크, CD-ROM과 같은 저장 매체(즉, 메모리(1300) 및/또는 스토리지(1600))에 상주할 수도 있다. 예시적인 저장 매체는 프로세서(1100)에 커플링되며, 그 프로세서(1100)는 저장 매체로부터 정보를 판독할 수 있고 저장 매체에 정보를 기입할 수 있다. 다른 방법으로, 저장 매체는 프로세서(1100)와 일체형일 수도 있다. 프로세서 및 저장 매체는 주문형 집적회로(ASIC) 내에 상주할 수도 있다. ASIC는 사용자 단말기 내에 상주할 수도 있다. 다른 방법으로, 프로세서 및 저장 매체는 사용자 단말기 내에 개별 컴포넌트로서 상주할 수도 있다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다.
따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
메모리 할당 장치
100
저장부 110
제어부 120
저장부 110
제어부 120
Claims (20)
- 경로를 탐색하는데 사용되는 메모리 조각이 미리 생성되어 있는 적어도 하나 이상의 메모리 풀(memory pool)을 포함하는 저장부; 및
미리 생성되어 있는 메모리 조각을 이용하여 상기 경로의 탐색 가능 여부를 판단하고, 상기 경로의 탐색이 불가능한 경우, 상기 메모리 조각의 추가량을 결정하여 상기 저장부의 메모리를 선할당하는 제어부를 포함하는 메모리 할당 장치. - 청구항 1에 있어서,
상기 제어부는
전체 가용 메모리를 상기 메모리 풀 개수로 나눈 값으로 메모리 조각 생성 가능 개수를 산출하는 메모리 할당 장치. - 청구항 2에 있어서,
상기 제어부는
상기 메모리 조각 생성 가능 개수와, 1회에 추가 가능한 메모리 조각 개수를 비교하고, 비교 결과를 기반으로 상기 메모리 조각의 추가량을 결정하는 메모리 할당 장치. - 청구항 3에 있어서,
상기 제어부는
상기 메모리 조각 생성 가능 개수가 상기 1회에 추가 가능한 메모리 조각 개수보다 크면, 상기 1회에 추가 가능한 메모리 조각 개수를 상기 메모리 조각의 추가량으로 결정하는 메모리 할당 장치. - 청구항 4에 있어서,
상기 제어부는
상기 메모리 조각 생성 가능 개수가 상기 1회에 추가 가능한 메모리 조각 개수보다 작으면, 상기 메모리 조각 생성 가능 개수를 상기 메모리 조각의 추가량으로 결정하는 메모리 할당 장치. - 청구항 5에 있어서,
상기 제어부는
결정된 추가량으로 생성된 상기 메모리 조각으로 상기 경로 탐색 알고리즘의 실행 가능 여부를 판단하는 메모리 할당 장치. - 청구항 6에 있어서,
상기 제어부는
상기 결정된 추가량으로 경로 탐색 알고리즘의 실행이 가능하면, 상기 결정된 추가량으로 생성된 메모리 조각으로 상기 경로 탐색 알고리즘을 실행하여 최종 경로를 생성하는 메모리 할당 장치. - 청구항 7에 있어서,
상기 제어부는
상기 최종 경로를 생성하면, 기 생성된 메모리 조각을 해제하는 메모리 할당 장치. - 청구항 5에 있어서,
상기 제어부는
결정된 추가량으로 생성된 상기 메모리 조각으로 상기 경로의 탐색이 불가능하면, 경로 탐색 실패로 판단하는 메모리 할당 장치. - 청구항 1에 있어서,
상기 메모리 조각은 복수개의 메모리 셀을 포함하는 메모리 할당 장치. - 경로를 탐색하는데 사용되는 메모리 조각을 적어도 하나 이상의 메모리 풀(memory pool)에 미리 생성하는 단계;
미리 생성되어 있는 메모리 조각을 이용하여 상기 경로의 탐색 가능 여부를 판단하는 단계; 및
상기 미리 생성되어 있는 메모리 조각을 이용하여 상기 경로의 탐색이 불가능한 경우, 상기 메모리 조각의 추가량을 결정하여 메모리를 선할당하는 단계를 포함하는 메모리 할당 방법. - 청구항 11에 있어서,
전체 가용 메모리를 상기 메모리 풀 개수로 나눈 값으로 메모리 조각 생성 가능 개수를 산출하는 단계를 더 포함하는 메모리 할당 방법. - 청구항 12에 있어서,
상기 메모리 조각 생성 가능 개수와, 1회에 추가 가능한 메모리 조각 개수를 비교하고, 비교 결과를 기반으로 상기 메모리 조각의 추가량을 결정하는 단계를 더 포함하는 메모리 할당 방법. - 청구항 13에 있어서,
상기 메모리 추가량을 결정하는 단계에서,
상기 메모리 조각 생성 가능 개수가 상기 1회에 추가 가능한 메모리 조각 개수보다 크면, 상기 1회에 추가 가능한 메모리 조각 개수를 상기 메모리 조각의 추가량으로 결정하는 메모리 할당 방법. - 청구항 14에 있어서,
상기 메모리 추가량을 결정하는 단계에서
상기 메모리 조각 생성 가능 개수가 상기 1회에 추가 가능한 메모리 조각 개수보다 작으면, 상기 메모리 조각 생성 가능 개수를 상기 메모리 조각의 추가량으로 결정하는 메모리 할당 방법. - 청구항 15에 있어서,
결정된 추가량으로 생성된 상기 메모리 조각으로 상기 경로 탐색 알고리즘의 실행 가능 여부를 판단하는 단계를 더 포함하는 메모리 할당 방법. - 청구항 16에 있어서,
상기 결정된 추가량으로 경로 탐색 알고리즘의 실행이 가능하면, 상기 결정된 추가량으로 생성된 메모리 조각으로 상기 경로 탐색 알고리즘을 실행하여 최종 경로를 생성하는 단계를 더 포함하는 메모리 할당 방법. - 청구항 17에 있어서,
상기 최종 경로를 생성하는 단계 이후,
기 생성된 메모리 조각을 해제하는 단계를 더 포함하는 메모리 할당 방법. - 청구항 15에 있어서,
결정된 추가량으로 생성된 상기 메모리 조각으로 상기 경로의 탐색이 불가능하면, 경로 탐색 실패로 판단하는 단계를 더 포함하는 메모리 할당 방법. - 청구항 11에 있어서,
상기 메모리 조각은 복수개의 메모리 셀을 포함하는 메모리 할당 방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200126263A KR20220042887A (ko) | 2020-09-28 | 2020-09-28 | 메모리 할당 장치 및 방법 |
US17/327,120 US11954339B2 (en) | 2020-09-28 | 2021-05-21 | Memory allocation device and method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200126263A KR20220042887A (ko) | 2020-09-28 | 2020-09-28 | 메모리 할당 장치 및 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220042887A true KR20220042887A (ko) | 2022-04-05 |
Family
ID=80822467
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200126263A KR20220042887A (ko) | 2020-09-28 | 2020-09-28 | 메모리 할당 장치 및 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11954339B2 (ko) |
KR (1) | KR20220042887A (ko) |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7296139B1 (en) * | 2004-01-30 | 2007-11-13 | Nvidia Corporation | In-memory table structure for virtual address translation system with translation units of variable range size |
US8972161B1 (en) * | 2005-11-17 | 2015-03-03 | Invent.Ly, Llc | Power management systems and devices |
US9683850B2 (en) * | 2009-02-03 | 2017-06-20 | Telenav, Inc. | Method for navigation using adaptive coverage |
US10108351B2 (en) * | 2016-06-23 | 2018-10-23 | Hewlett Packard Enterprise Development Lp | Reallocate memory pending queue based on stall |
US10713748B2 (en) * | 2018-09-05 | 2020-07-14 | Apple Inc. | Display pipeline memory bandwidth allocation systems and methods |
US11995472B2 (en) * | 2021-07-19 | 2024-05-28 | Texas Instruments Incorporated | Memory sharing for machine learning processing |
-
2020
- 2020-09-28 KR KR1020200126263A patent/KR20220042887A/ko unknown
-
2021
- 2021-05-21 US US17/327,120 patent/US11954339B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US11954339B2 (en) | 2024-04-09 |
US20220100400A1 (en) | 2022-03-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10339236B2 (en) | Techniques for improving computational throughput by using virtual machines | |
US10455003B2 (en) | Method, server, and system for sharing resource data | |
WO2021174930A1 (zh) | 一种业务处理系统、业务处理的方法、装置及设备 | |
WO2016090946A1 (zh) | 一种虚拟数据中心资源映射方法和设备 | |
US20180095800A1 (en) | Method and device for allocating core resources of a multi-core cpu | |
JP6172649B2 (ja) | 情報処理装置、プログラム、及び、情報処理方法 | |
US8984542B2 (en) | Method and system for binding objects in dynamic programming languages using caching techniques | |
EP2804099B1 (en) | Apparatus and method managing power based on data | |
US11288047B2 (en) | Heterogenous computer system optimization | |
US20220229701A1 (en) | Dynamic allocation of computing resources | |
US11245762B1 (en) | Data request servicing using smart network interface cards | |
CN110750336A (zh) | 一种OpenStack虚拟机内存热扩容方法 | |
US20170052979A1 (en) | Input/Output (IO) Request Processing Method and File Server | |
US20190278728A1 (en) | Self-moderating bus arbitration architecture | |
CN111338803B (zh) | 一种线程处理方法和装置 | |
EP4089545A1 (en) | Virtual mapping based off-chip non-volatile memory dynamic loading method and electronic apparatus | |
CN111694992B (zh) | 一种数据处理方法和装置 | |
CN111061485A (zh) | 任务处理方法、编译器、调度服务器和介质 | |
KR20220042887A (ko) | 메모리 할당 장치 및 방법 | |
CN112711462A (zh) | 一种云平台虚拟cpu热绑定方法、装置及计算机可读存储介质 | |
KR100776112B1 (ko) | 휴대단말기의 부팅 시간 단축방법 | |
KR20160139082A (ko) | 역경매 방식 자원할당 장치를 포함하는 하이브리드 클라우드 서버 및 그 자원 할당 방법 및 시스템 | |
CN111831451A (zh) | 云主机内存分配方法及云主机、设备及存储介质 | |
CN114116189A (zh) | 任务处理的方法、装置和计算设备 | |
CN115934354A (zh) | 在线存储方法和装置 |