[go: up one dir, main page]

KR102834455B1 - Memory management method - Google Patents

Memory management method

Info

Publication number
KR102834455B1
KR102834455B1 KR1020220139452A KR20220139452A KR102834455B1 KR 102834455 B1 KR102834455 B1 KR 102834455B1 KR 1020220139452 A KR1020220139452 A KR 1020220139452A KR 20220139452 A KR20220139452 A KR 20220139452A KR 102834455 B1 KR102834455 B1 KR 102834455B1
Authority
KR
South Korea
Prior art keywords
image
node
requested
atlas
rendering
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
KR1020220139452A
Other languages
Korean (ko)
Other versions
KR20240058574A (en
Inventor
최대룡
윤희철
Original Assignee
(주)Yh데이타베이스
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by (주)Yh데이타베이스 filed Critical (주)Yh데이타베이스
Priority to KR1020220139452A priority Critical patent/KR102834455B1/en
Publication of KR20240058574A publication Critical patent/KR20240058574A/en
Application granted granted Critical
Publication of KR102834455B1 publication Critical patent/KR102834455B1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)

Abstract

메모리 관리 방법이 개시된다. 이 방법은 실행 프로그램으로부터 렌더링을 위해 요청된 이미지가 텍스쳐 아틀라스에 할당되어 있는지 여부를 텍스쳐 아틀라스에 대한 uv 노드 리스트를 통해 확인하는 아틀라스 확인 단계, 및 할당되어 있을 경우 요청 이미지에 해당하는 uv 노드를 uv 노드 리스트에서 읽어들여 실행 프로그램으로 응답하는 보유 이미지 응답 단계를 포함한다. 그리고 uv 노드는 이미지에 고유하게 부여된 이미지 키(key)와 텍스쳐 아틀라스의 메모리 어드레스 및 텍스쳐 아틀라스 내 이미지의 할당 위치정보인 uv 좌표를 포함한다.A memory management method is disclosed. The method includes an atlas checking step of checking whether an image requested for rendering from an execution program is allocated to a texture atlas through a uv node list for a texture atlas, and a retained image response step of reading a uv node corresponding to the requested image from the uv node list and responding to the execution program if allocated. In addition, the uv node includes an image key uniquely assigned to the image, a memory address of the texture atlas, and uv coordinates which are allocation location information of the image within the texture atlas.

Description

이미지 렌더링을 위한 메모리 관리 방법{Memory management method}{Memory management method} for image rendering

본 발명은 3차원 컴퓨터 그래픽 기술에 관한 것으로, 특히 가비지 컬렉션을 사용하는 3차원 컴퓨터 그래픽 기술에 관한 것이다.The present invention relates to three-dimensional computer graphics technology, and more particularly, to three-dimensional computer graphics technology using garbage collection.

가비지 컬렉션(Garbage Collection, GC)을 사용하는 환경의 3차원 컴퓨터 그래픽에서 여러 장의 동적 이미지를 렌더링하는 경우에는 쓰레기 메모리를 다량 생산하여 렌더링 퍼포먼스를 떨어트린다. 더욱이 실시간 렌더링이 중요한 게임이나 메타버스 등의 3차원 그래픽에서 동시다발적으로 복수의 동적 이미지를 렌더링할 경우에는 빈번한 pricking으로 인해, 다시 말해 초당 프레임 수 저하로 인한 끊김 발생으로 인해 사용 편의성을 저하시키는 문제를 야기한다.In an environment that uses Garbage Collection (GC), when rendering multiple dynamic images in 3D computer graphics, a large amount of garbage memory is generated, which reduces rendering performance. Furthermore, in 3D graphics such as games or metaverses where real-time rendering is important, when rendering multiple dynamic images simultaneously, frequent pricking occurs, or in other words, the number of frames per second decreases, which causes problems that reduce usability.

국내등록특허공보 제10-1703984호 (2017년 2월 9일 공고)Domestic Patent Publication No. 10-1703984 (announced on February 9, 2017)

본 발명은 다수의 동적 이미지를 렌더링하는 경우에도 렌더링 퍼포먼스의 저하를 방지할 수 있게 하는 기술적 방안을 제공함을 목적으로 한다.The present invention aims to provide a technical solution that can prevent a decline in rendering performance even when rendering a large number of dynamic images.

일 양상에 따른 메모리 관리 방법은 실행 프로그램으로부터 렌더링을 위해 요청된 이미지가 텍스쳐 아틀라스에 할당되어 있는지 여부를 텍스쳐 아틀라스에 대한 uv 노드 리스트를 통해 확인하는 아틀라스 확인 단계, 및 할당되어 있을 경우 요청 이미지에 해당하는 uv 노드를 uv 노드 리스트에서 읽어들여 실행 프로그램으로 응답하는 보유 이미지 응답 단계를 포함할 수 있다. 그리고 uv 노드는 이미지에 고유하게 부여된 이미지 키(key)와 텍스쳐 아틀라스의 메모리 어드레스 및 텍스쳐 아틀라스 내 이미지의 할당 위치정보인 uv 좌표를 포함할 수 있다.A memory management method according to an aspect of the present invention may include an atlas checking step of checking whether an image requested for rendering from an execution program is allocated to a texture atlas through a uv node list for a texture atlas, and a retained image response step of reading a uv node corresponding to the requested image from the uv node list and responding to the execution program if so allocated. In addition, the uv node may include an image key uniquely assigned to the image, a memory address of the texture atlas, and uv coordinates which are allocation location information of the image within the texture atlas.

메모리 관리 방법은 요청 이미지가 텍스쳐 아틀라스에 미할당되어 있을 경우 저장소로부터 요청 이미지를 획득하고 텍스쳐 아틀라스에 신규 할당하며, 신규 할당된 이미지에 해당하는 uv 노드를 uv 노드 리스트에서 읽어들여 실행 프로그램으로 응답하는 미보유 이미지 응답 단계를 더 포함할 수 있다.The memory management method may further include a step of responding to an unallocated image, which obtains the requested image from storage if the requested image is unallocated in the texture atlas, newly allocates the requested image to the texture atlas, and reads a uv node corresponding to the newly allocated image from the uv node list and responds to the executable program.

미보유 이미지 응답 단계는 이미지 요청을 큐(queue)에 입력하는 단계, 큐에 적재된 이미지 요청을 처리하여 로컬 저장소 또는 원격 저장소로부터 요청 이미지를 획득하는 단계, 획득된 요청 이미지를 읽기 버퍼에 기록하는 단계, 및 버퍼에 기록된 요청 이미지를 텍스쳐 아틀라스에 신규 할당하는 단계를 포함할 수 있다.The non-owned image response step may include a step of inputting an image request into a queue, a step of processing the image request loaded into the queue to obtain the requested image from local storage or remote storage, a step of writing the obtained requested image into a read buffer, and a step of newly assigning the requested image written into the buffer to a texture atlas.

본 발명은 제안된 메모리 관리 방식을 통해 가비지 컬렉션(GC)을 사용하는 환경의 3차원 컴퓨터 그래픽에서 다수의 동적 이미지를 렌더링하는 경우에도 렌더링 퍼포먼스 저하를 방지할 수 있는 효과를 창출한다. 구체적으로, 본 발명은 버퍼를 이용해 다량의 이미지를 비동기적으로 로드하고 텍스쳐 아틀라스에 빠르게 패킹하여 GC 활동을 줄일 수 있게 하며, 텍스쳐 아틀라스를 기반으로 요청 이미지에 대한 응답이 빠르게 이루어질 수 있게 함으로써 이미지 렌더링에 필요한 CPU 연산을 줄여 사용성을 개선할 수 있게 한다.The present invention creates an effect of preventing a degradation of rendering performance even when rendering a large number of dynamic images in a 3D computer graphic environment using garbage collection (GC) through a proposed memory management method. Specifically, the present invention reduces GC activity by asynchronously loading a large number of images using a buffer and quickly packing them into a texture atlas, and improves usability by reducing CPU operations required for image rendering by quickly enabling a response to a requested image based on a texture atlas.

도 1은 일 실시예에 따른 이미지 렌더링을 위한 메모리 관리 방법 흐름도이다.
도 2는 일 실시예에 따른 S300의 구체 흐름도이다.
도 3은 일 실시예에 따른 S340의 구체 흐름도이다.
도 4는 일 실시예에 따른 메모리 관리 시스템 개요도이다.
도 5는 일 실시예에 따른 컴퓨팅 디바이스 블록도이다.
Figure 1 is a flowchart of a memory management method for image rendering according to one embodiment.
Figure 2 is a specific flow diagram of S300 according to one embodiment.
Figure 3 is a specific flow diagram of S340 according to one embodiment.
Figure 4 is a schematic diagram of a memory management system according to one embodiment.
FIG. 5 is a block diagram of a computing device according to one embodiment.

전술한, 그리고 추가적인 본 발명의 양상들은 첨부된 도면을 참조하여 설명되는 바람직한 실시예들을 통하여 더욱 명백해질 것이다. 이하에서는 본 발명을 이러한 실시예를 통해 통상의 기술자가 용이하게 이해하고 재현할 수 있도록 상세히 설명하기로 한다.The above-described and additional aspects of the present invention will become more apparent through the preferred embodiments described with reference to the attached drawings. Hereinafter, the present invention will be described in detail through these embodiments so that those skilled in the art can easily understand and reproduce the present invention.

먼저, 본 명세서에서 사용되는 용어들은 다음과 같이 정의될 수 있다.First, the terms used in this specification can be defined as follows.

■ 텍스쳐 : 3D 컴퓨터 그래픽에서 3차원 물체 표면에 입힐 2차원의 이미지■ Texture: A two-dimensional image applied to the surface of a three-dimensional object in 3D computer graphics.

■ 아틀라스 : 여러 텍스쳐를 묶은 2차원의 이미지를 의미하며 본 명세서에서의 정확한 구분은 텍스쳐 아틀라스임■ Atlas: This refers to a two-dimensional image that combines multiple textures. The exact distinction in this specification is texture atlas.

■ 스레드 : 컴퓨터 프로그램의 실행 흐름의 최소 단위를 의미하며 하나의 프로세스는 1개 이상의 스레드를 가질 수 있음■ Thread: refers to the smallest unit of execution flow of a computer program, and one process can have one or more threads.

■ 저장소 : 컴퓨터에서 HDD, SDD와 같은 저장 장치를 의미함■ Storage: refers to storage devices such as HDD and SDD on a computer.

■ 원격 : 파일서버, 웹서버, CDN 등 이미지를 다운로드할 수 있는 인터넷 환경을 의미함■ Remote: Refers to an Internet environment where images can be downloaded, such as a file server, web server, or CDN.

■ 바이너리 : 0과 1로만 이루어진 2진법을 의미하며 컴퓨터에서 취급하는 데이터 형태임■ Binary: This refers to the binary system consisting of only 0 and 1, and is the data format handled by computers.

■ 비트맵 : 컴퓨터분야에서 이미지를 저장하는 메모리 저장 방식 중 하나이며 픽셀의 2차원 배열에 각 픽셀의 색수를 저장하는 방식■ Bitmap: One of the memory storage methods for saving images in the computer field, a method of storing the color number of each pixel in a two-dimensional array of pixels.

■ 리스트 자료구조 : 노드가 한줄로 연결하여 데이터를 저장하는 자료 구조■ List data structure: A data structure that stores data by connecting nodes in a single line.

■ 노드 : 데이터 포인터를 의미하며 본 명세서에서는 아틀라스에 할당된 이미지의 위치정보를 의미함■ Node: refers to a data pointer and in this specification refers to the location information of an image assigned to the atlas.

■ uv : 컴퓨터 그래픽에 이용되는 좌표계 중 하나로 3차원 물체 표면에 2차원의 이미지를 입히기 위한 2차원의 좌표를 의미함■ uv: One of the coordinate systems used in computer graphics, it refers to two-dimensional coordinates for applying a two-dimensional image to the surface of a three-dimensional object.

도 1 내지 도 3은 가비지 컬렉션을 사용하는 환경의 3차원 컴퓨터 그래픽에서 다수의 동적 이미지를 렌더링하기 위한 메모리 관리 방법에 대한 흐름도로서, 도 1은 일 실시예에 따른 이미지 렌더링을 위한 메모리 관리 방법에 대한 기본 흐름도이고, 도 2는 일 실시예에 따른 도 1의 S300에 대한 구체 흐름도이며, 도 3은 도 3은 일 실시예에 따른 도 2의 S340에 대한 구체 흐름도이다. 설명에 앞서, 도 1 내지 도 3은 컴퓨팅 디바이스에 의해 수행되는 것으로, 구체적으로 컴퓨팅 디바이스에 속하는 하드웨어 자원인 하나 이상의 프로세서(프로세싱 유닛)에 의해 수행될 수 있으며, 프로세서에 의해 실행되어 렌더링 대상의 이미지 요청을 처리하는 프로그램(이하에서는 ‘아틀라스 관리자’라 한다)에 의해 수행될 수 있다. 이하에서는 도 1 내지 도 3의 수행 주체를 아틀라스 관리자라 한다.FIGS. 1 to 3 are flowcharts for a memory management method for rendering a plurality of dynamic images in three-dimensional computer graphics in an environment using garbage collection, wherein FIG. 1 is a basic flowchart for a memory management method for image rendering according to one embodiment, FIG. 2 is a specific flowchart for S300 of FIG. 1 according to one embodiment, and FIG. 3 is a specific flowchart for S340 of FIG. 2 according to one embodiment. Before explanation, FIGS. 1 to 3 are performed by a computing device, and specifically, can be performed by one or more processors (processing units) which are hardware resources belonging to the computing device, and can be performed by a program (hereinafter referred to as an ‘atlas manager’) that is executed by the processor and processes an image request of a rendering target. Hereinafter, the performing entity of FIGS. 1 to 3 is referred to as an atlas manager.

도 1에 대해 설명한다. 아틀라스 관리자는 실행 프로그램으로부터 렌더링 대상이 되는 이미지를 요청받는다. 여기서 실행 프로그램은 게임 프로그램이나 메타버스 프로그램 등 이미지 렌더링을 처리하는 프로그램을 말하며, 요청할 이미지에 고유하게 부여된 이미지 키(key)를 아틀라스 관리자에게 제공하면서 해당 이미지를 요청한다. 아틀라스 관리자는 실행 프로그램으로부터 요청된 이미지가 텍스쳐 아틀라스에 존재하는지 확인한다(S100). 아틀라스 확인 단계(S100)에서 아틀라스 관리자는 이미지 키를 가지고 텍스쳐 아틀라스에 대한 uv 노드 리스트를 조회하여 텍스쳐 아틀라스에 해당 이미지가 존재하는지 여부를 확인할 수 있다. 여기서, uv 노드 리스트는 텍스쳐 아틀라스에 존재하는 텍스쳐(이미지)들에 대한 정보인 uv 노드들로 이루어진 리스트로서, uv 노드 포맷은 {image key, uv} 또는 {image key, TA address, uv}일 수 있으며, TA 어드레스는 해당 이미지를 보유하고 있는 텍스쳐 아틀라스의 메모리 주소를 의미한다.Here, the description is made with reference to Fig. 1. The atlas manager receives a request for an image to be rendered from an executable program. Here, the executable program refers to a program that processes image rendering, such as a game program or a metaverse program, and requests the image by providing the atlas manager with an image key uniquely assigned to the image to be requested. The atlas manager verifies whether the image requested from the executable program exists in the texture atlas (S100). In the atlas verification step (S100), the atlas manager can check whether the image exists in the texture atlas by querying the uv node list for the texture atlas with the image key. Here, the uv node list is a list composed of uv nodes, which are information on textures (images) existing in the texture atlas, and the uv node format can be {image key, uv} or {image key, TA address, uv}, and the TA address means the memory address of the texture atlas that holds the image.

S100에서의 확인 결과 텍스쳐 아틀라스에 요청 이미지가 존재하면, 아틀라스 관리자는 요청 이미지에 해당하는 uv 노드를 uv 노드 리스트에서 읽어들여 실행 프로그램으로 응답한다(S200). 그러나 요청 이미지가 텍스쳐 아틀라스에 존재하지 않는 것으로 확인되면, 아틀라스 관리자는 요청 이미지를 획득하고 텍스쳐 아틀라스에 신규 할당하며(S300), 이에 따라 갱신된 uv 노드 리스트에서 그 신규 할당된 이미지에 해당하는 uv 노드를 읽어들여 실행 프로그램으로 응답한다(S400). 전자(S200)를 보유 이미지 응답 단계라 하며, 후자(S300, S400)을 미보유 이미지 응답 단계라 한다.If the requested image exists in the texture atlas as a result of the verification at S100, the atlas manager reads the uv node corresponding to the requested image from the uv node list and responds to the execution program (S200). However, if the requested image is confirmed not to exist in the texture atlas, the atlas manager obtains the requested image and newly assigns it to the texture atlas (S300), and reads the uv node corresponding to the newly assigned image from the updated uv node list and responds to the execution program (S400). The former (S200) is called the possessed image response step, and the latter (S300, S400) is called the non-possessed image response step.

도 2에 대해 설명한다. S100에서의 확인 결과 텍스쳐 아틀라스에 요청 이미지가 존재하지 않으면, 아틀라스 관리자는 이미지 요청(image key)을 큐(queue)에 입력한다(S310). 아틀라스 관리자는 큐에 적재된 이미지 요청을 처리해 로컬 저장소 또는 원격 저장소로부터 요청 이미지를 획득한다(S320). 이때, 큐에 복수의 이미지 키가 적재되어 있을 경우에는 스레드(thread) 개수에 한하여 복수의 이미지 요청을 동시에 처리할 수 있다. 즉, N개의 스레드 개수만큼 N개의 이미지 요청을 동시에 처리할 수 있는 것이다. 그리고 일 실시예에 있어서, 아틀라스 관리자는 S320에서 image key를 가지고 먼저 로컬 저장소에 요청 이미지가 존재하는지 확인하여 존재할 경우에는 로컬 저장소로부터 요청 이미지를 읽어들여 획득하며, 로컬 저장소에 요청 이미지가 존재하지 않을 경우에는 원격 저장소로부터 요청 이미지를 다운로드하여 획득한다. 그리고 다운로드한 이미지를 로컬 저장소에 저장한다.Hereinafter, a description will be given of Fig. 2. If the result of the verification in S100 shows that the requested image does not exist in the texture atlas, the atlas manager inputs an image request (image key) into the queue (S310). The atlas manager processes the image request loaded into the queue to obtain the requested image from a local storage or a remote storage (S320). At this time, if multiple image keys are loaded into the queue, multiple image requests can be processed simultaneously only by the number of threads. In other words, N image requests can be processed simultaneously as many as N threads. In one embodiment, the atlas manager first checks whether the requested image exists in the local storage with the image key in S320, and if so, reads and obtains the requested image from the local storage, and if the requested image does not exist in the local storage, downloads and obtains the requested image from the remote storage. Then, the downloaded image is stored in the local storage.

아틀라스 관리자는 S320에서 획득된 이미지를 버퍼에 기록한다(S330). 이때, 획득된 이미지가 압축 이미지일 경우에는 그 이미지를 비트맵으로 해독한 후에 버퍼에 임시 기록할 수 있다. 획득된 이미지의 바이너리는 일반적으로 JPG, PNG 등 압축된 것이므로 이를 비트맵으로 해독하여 버퍼에 작성하는 것이다. 다음으로, 아틀라스 관리자는 버퍼에 임시 기록된 이미지를 텍스쳐 아틀라스에 신규 할당한다(S340).The atlas manager writes the image acquired from S320 to the buffer (S330). At this time, if the acquired image is a compressed image, the image can be decoded into a bitmap and then temporarily recorded in the buffer. Since the binary of the acquired image is generally compressed, such as JPG or PNG, it is decoded into a bitmap and written to the buffer. Next, the atlas manager newly assigns the image temporarily recorded in the buffer to the texture atlas (S340).

도 3에 대해 설명한다. 아틀라스 관리자는 버퍼에 기록된 이미지를 텍스쳐 아틀라스에 신규 할당하기 위해서 uv 노드 리스트의 첫 번째 uv 노드가 지시하는 uv 좌표를 확인하며(S340), 그 확인된 uv 좌표에 이미지를 신규 할당한다(S342). 그리고 첫 번째 uv 노드를 uv 노드 리스트의 맨 끝으로 이동시켜 리스트를 정렬한다(S343). 한편, 도 1의 보유 이미지 응답 단계(S200)에서도 아틀라스 관리자는 이미지 요청에 따라 응답한 uv 노드를 uv 노드 리스트의 맨 끝으로 이동시켜 리스트를 갱신 관리할 수 있다. 이상에서와 같이 요청 이미지의 uv 노드를 uv 노드 리스트에서 맨 끝으로 이동시키는 이유는 사용빈도가 높은 uv 노드는 텍스쳐 아틀라스에 지속적으로 유지되도록 하고 사용빈도가 낮은 uv 노드는 이미지가 갱신되도록 하기 위함이며, 이를 통해 최소한의 연산으로 텍스쳐 아틀라스가 관리될 수 있게 된다.Hereinafter, the atlas manager will be described with reference to FIG. 3. In order to newly allocate an image recorded in a buffer to a texture atlas, the atlas manager checks the uv coordinates indicated by the first uv node of the uv node list (S340) and newly allocates an image to the confirmed uv coordinates (S342). Then, the first uv node is moved to the end of the uv node list to sort the list (S343). Meanwhile, in the held image response step (S200) of FIG. 1, the atlas manager can also update and manage the list by moving the uv node that responded to the image request to the end of the uv node list. As described above, the reason for moving the uv node of the requested image to the end of the uv node list is to ensure that uv nodes with high usage frequency are continuously maintained in the texture atlas and that images of uv nodes with low usage frequency are updated, thereby enabling the texture atlas to be managed with minimal operations.

도 4는 일 실시예에 따른 메모리 관리 시스템 개요도이다. 도 4에서 메인 시스템(100)은 렌더링 대상이 되는 이미지를 요청하는 실행 프로그램을 의미하며, 아틀라스 관리자(200)에서 런타임 아틀라스(230)는 상술한 텍스쳐 아틀라스를 의미한다. 메인 시스템(100)은 image key를 아틀라스 관리자(200)에 제공하면서 해당 이미지를 요청한다(1). 아틀라스 관리자(200)는 요청된 이미지가 uv 노드 리스트에 존재하는 경우 해당 uv 노드를 uv 노드 리스트의 끝으로 정렬하며, 요청에 대한 uv 노드를 메인 시스템(100)으로 응답한다(1-1). uv 노드 포맷은 {image key, TA address, uv}이다. 아틀라스 관리자(200)는 요청 내역이 아틀라스(230)에 존재하지 않는 경우 요청을 큐(210)에 쌓아준다(1-2).FIG. 4 is a schematic diagram of a memory management system according to one embodiment. In FIG. 4, the main system (100) means an execution program that requests an image to be rendered, and the runtime atlas (230) in the atlas manager (200) means the texture atlas described above. The main system (100) requests the corresponding image by providing an image key to the atlas manager (200) (1). If the requested image exists in the uv node list, the atlas manager (200) aligns the corresponding uv node to the end of the uv node list, and responds the uv node for the request to the main system (100) (1-1). The uv node format is {image key, TA address, uv}. If the request details do not exist in the atlas (230), the atlas manager (200) places the request in a queue (210) (1-2).

비동기 다운로더(220)는 제한된 스레드 개수에 따라 N개의 이미지 요청을 동시에 처리한다(2). 비동기 다운로더(220)는 로컬 저장소(300)에 요청한 이미지가 존재하는지 확인한다. 구체적으로, 비동기 다운로더(220)는 로컬(Local)에 요청 이미지가 존재하는 경우 로컬(Local)에서 해당 이미지를 읽어들이고(3-1), 로컬(Local)에 요청 이미지가 존재하지 않는 경우 원격(Remote)에서 다운로드하며(3-2), 원격(Remote)에서 다운로드한 이미지를 로컬(Local)에 저장한다(3-2-1).The asynchronous downloader (220) processes N image requests simultaneously according to the limited number of threads (2). The asynchronous downloader (220) checks whether the requested image exists in the local storage (300). Specifically, if the requested image exists in the local storage (3-1), the asynchronous downloader (220) reads the image from the local storage (3-1), and if the requested image does not exist in the local storage (3-2), downloads it from the remote storage (3-2), and stores the image downloaded from the remote storage (3-2-1) in the local storage (3-2).

아틀라스 관리자(200)는 획득된 이미지를 읽기버퍼에 작성하는데, 압축 이미지일 경우에는 비트맵으로 해독하여 읽기버퍼에 작성한다(4). 아틀라스 관리자(200)는 읽기버퍼에 임시 기록된 이미지를 uv 노드 리스트의 첫 번째 uv 노드가 지시하는 uv 좌표에 할당하며, 그 첫 번째 uv 노드를 uv 노드 리스트의 끝으로 정렬한다(5). 다음으로, 아틀라스 관리자(200)는 이미지 요청에 대한 uv 노드를 메인 시스템(100)으로 응답한다.The atlas manager (200) writes the acquired image to the read buffer. If it is a compressed image, it is decoded into a bitmap and written to the read buffer (4). The atlas manager (200) assigns the image temporarily recorded in the read buffer to the uv coordinates indicated by the first uv node of the uv node list, and aligns the first uv node to the end of the uv node list (5). Next, the atlas manager (200) responds to the uv node for the image request to the main system (100).

도 5는 일 실시예에 따른 컴퓨팅 디바이스 블록도이다. 도 5는 컴퓨팅 디바이스 구성 예시도이다. 상술한 메모리 관리 방법은 컴퓨팅 디바이스에 의해 수행될 수 있으며, 구체적으로 컴퓨팅 디바이스에 속하는 하나 이상의 프로세서에 의해 수행될 수 있다. 도 5에 도시된 바와 같이, 컴퓨팅 디바이스(500)는 프로세서(510), 메모리(520), 저장 장치(530), 입출력 인터페이스(540), 및 통신 인터페이스(550)를 포함할 수 있다. 프로세서(510)는 CPU(central processing unit), GPU(graphical processing unit), 또는 이와 유사한 하나 이상의 프로세싱 코어를 구비한 마이크로 프로세서를 포함할 수 있다. 메모리(520)에는 데이터 등이 저장될 수 있다. 메모리(520)는 하나 이상의 휘발성 및 비휘발성 메모리를 포함할 수 있다. 저장 장치(530)는 데이터 및 명령어 등을 저장하기 위한 저장매체로서, 비일시적(non-transitory) 스토리지를 포함할 수 있다. 저장 장치(530)는 하드 디스크 드라이브, 플래시 메모리, 광디스크, 자기-광학 디스크, 범용 직렬 버스(USB) 드라이브 등 중에서 적어도 일부를 포함할 수 있다.FIG. 5 is a block diagram of a computing device according to one embodiment. FIG. 5 is an example diagram of a computing device configuration. The above-described memory management method may be performed by a computing device, and specifically, may be performed by one or more processors belonging to the computing device. As illustrated in FIG. 5, the computing device (500) may include a processor (510), a memory (520), a storage device (530), an input/output interface (540), and a communication interface (550). The processor (510) may include a microprocessor having one or more processing cores such as a central processing unit (CPU), a graphical processing unit (GPU), or the like. Data, etc. may be stored in the memory (520). The memory (520) may include one or more volatile and nonvolatile memories. The storage device (530) is a storage medium for storing data, commands, etc., and may include non-transitory storage. The storage device (530) may include at least some of a hard disk drive, flash memory, an optical disk, a magneto-optical disk, a universal serial bus (USB) drive, and the like.

입출력 인터페이스(540)는 사용자가 입력을 제공하고 출력을 수신하며, 다른 컴퓨팅 디바이스들과 데이터를 주고받을 수 있게 하는 하나 이상의 입력 및/또는 출력 디바이스를 포함할 수 있다. 입출력 인터페이스(540)는 마우스, 키패드 또는 키보드, 카메라, 광학식 스캐너, 네트워크 인터페이스, 모뎀, 기타 알려진 I/O 장치일 수 있으며, 이들의 조합을 포함할 수 있다. 입출력 인터페이스(540)는 그래픽 엔진, 디스플레이, 하나 이상의 출력 드라이버(예를 들어, 디스플레이 드라이버), 하나 이상의 오디오 스피커 및 하나 이상의 오디오 드라이버 중에서 적어도 일부를 포함할 수 있다. 통신 인터페이스(550)는 컴퓨팅 장치(500)와 하나 이상의 다른 컴퓨팅 장치와의 네트워크 통신(예를 들어, 패킷 기반 통신)을 위한 하나 이상의 인터페이스를 제공할 수 있다. 예를 들어, 통신 인터페이스(550)는 이더넷이나 다른 유선 기반 네트워크로 통신하기 위한 네트워크 인터페이스 제어기(NIC)나 네트워크 어댑터 또는 와이파이와 같이 무선 네트워크로 통신하기 위한 Wireless NIC나 무선 어댑터를 포함할 수 있다.The input/output interface (540) may include one or more input and/or output devices that allow a user to provide input and receive output, and to exchange data with other computing devices. The input/output interface (540) may be a mouse, a keypad or keyboard, a camera, an optical scanner, a network interface, a modem, or any other known I/O device, or may include combinations thereof. The input/output interface (540) may include at least some of a graphics engine, a display, one or more output drivers (e.g., a display driver), one or more audio speakers, and one or more audio drivers. The communications interface (550) may provide one or more interfaces for network communications (e.g., packet-based communications) between the computing device (500) and one or more other computing devices. For example, the communications interface (550) may include a network interface controller (NIC) or network adapter for communicating over an Ethernet or other wired network, or a Wireless NIC or wireless adapter for communicating over a wireless network, such as Wi-Fi.

버스(Bus)는 컴퓨팅 디바이스의 구성들을 서로 연결하는 하드웨어, 소프트웨어 또는 이들 모두를 포함할 수 있다. 예를 들어, 버스는 AGP(Accelerated Graphics Port)나 다른 그래픽 버스, EISA(Enhanced Industry Standard Architecture) 버스, FSB(front-side bus), HT(hypertransport) 인터커넥트, ISA(Industry Standard Architecture) 버스, INFINIBAND 인터커넥트, LPC(low-pin-count) 버스, 메모리 버스, MAC(Micro Channel Architecture) 버스, PCI(Peripheral Component Interconnect) 버스, PCIe(PCI-Express) 버스, SATA(serial technology attachment) 버스, VL(VESA Local, VESA: Video Electronics Standard Association Local) 버스, 다른 적절한 버스 또는 그 조합을 포함할 수 있다. 이상의 도 5의 구성들은 예시적인 것으로, 컴퓨팅 디바이스는 도 6의 구성들의 적어도 일부만을 포함할 수 있으며, 그 외에 도시되어 있지 않은 다른 구성들도 포함될 수 있음은 물론이다.A bus may include hardware, software, or both that interconnect components of a computing device. For example, the bus may include an Accelerated Graphics Port (AGP) or other graphics bus, an Enhanced Industry Standard Architecture (EISA) bus, a front-side bus (FSB), a hypertransport (HT) interconnect, an Industry Standard Architecture (ISA) bus, an INFINIBAND interconnect, a low-pin-count (LPC) bus, a memory bus, a Micro Channel Architecture (MAC) bus, a Peripheral Component Interconnect (PCI) bus, a PCI-Express (PCIe) bus, a serial technology attachment (SATA) bus, a VESA Local (VL, VESA: Video Electronics Standard Association Local) bus, another suitable bus, or a combination thereof. The configurations of FIG. 5 are exemplary, and the computing device may include at least some of the configurations of FIG. 6, and may also include other configurations not shown.

한편, 상술한 메모리 관리 방법은 컴퓨터 프로그램으로 작성이 가능하다. 이 같은 프로그램을 구성하는 코드들 및/또는 코드 세그먼트들은 당해 분야의 컴퓨터 프로그래머에 의하여 용이하게 추론될 수 있다. 또한, 이 같은 프로그램은 컴퓨팅 디바이스가 읽을 수 있는 기록매체에 저장되고, 컴퓨팅 디바이스에 의하여 읽혀지고 실행됨으로써 상술한 메모리 관리 방법이 구현될 수 있다. 이 같은 기록매체는 자기 기록매체, 광 기록매체 등일 수 있다.Meanwhile, the above-described memory management method can be written as a computer program. The codes and/or code segments that constitute such a program can be easily inferred by a computer programmer in the relevant field. In addition, such a program can be stored in a recording medium that can be read by a computing device, and read and executed by the computing device, thereby implementing the above-described memory management method. Such a recording medium can be a magnetic recording medium, an optical recording medium, etc.

이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.The present invention has been described with reference to preferred embodiments thereof. Those skilled in the art will appreciate that the present invention may be implemented in modified forms without departing from the essential characteristics of the present invention. Therefore, the disclosed embodiments should be considered in an illustrative rather than a restrictive sense. The scope of the present invention is set forth in the claims, not in the foregoing description, and all differences within the scope equivalent thereto should be construed as being included in the present invention.

Claims (10)

컴퓨팅 디바이스의 하나 이상의 프로세서에 의해 수행되는 이미지 렌더링을 위한 메모리 관리 방법에 있어서,
이미지 렌더링을 처리하는 실행 프로그램으로부터 렌더링을 위해 요청된 이미지가 텍스쳐 아틀라스에 할당되어 있는지 여부를 텍스쳐 아틀라스에 대한 uv 노드 리스트를 통해 확인하는 아틀라스 확인 단계;
할당되어 있을 경우 요청 이미지에 해당하는 이미지 키(key)와 텍스쳐 아틀라스의 메모리 어드레스 및 텍스쳐 아틀라스 내 이미지의 할당 위치정보인 uv 좌표가 포함된 uv 노드를 uv 노드 리스트에서 읽어들여 실행 프로그램으로 응답하며, 응답 후에 해당 uv 노드를 uv 노드 리스트의 끝으로 이동시켜 정렬하는 보유 이미지 응답 단계; 및
미할당되어 있을 경우 이미지 요청을 큐(queue)에 입력하고, 큐에 적재된 이미지 요청에 따라 로컬 저장소 또는 원격 저장소로부터 요청 이미지를 획득하여 읽기 버퍼에 기록하되 큐에 적재된 이미지 요청이 복수일 경우에는 스레드 개수에 따라 제한된 복수의 이미지 요청을 동시에 처리하여 읽기 버퍼에 기록하고, 읽기 버퍼에 기록된 요청 이미지를 텍스쳐 아틀라스에 신규 할당하되 uv 노드 리스트의 첫 번째 uv 노드에 따른 uv 좌표에 신규 할당하고 첫 번째 uv 노드를 uv 노드 리스트의 끝으로 이동시켜 정렬하며, 신규 할당된 요청 이미지에 해당하는 uv 노드를 uv 노드 리스트에서 읽어들여 실행 프로그램으로 응답하는 미보유 이미지 응답 단계;
를 포함하는 이미지 렌더링을 위한 메모리 관리 방법.
A memory management method for image rendering performed by one or more processors of a computing device,
An atlas verification step that checks whether an image requested for rendering from an executable program that handles image rendering is allocated to a texture atlas through the uv node list for the texture atlas;
A step of responding to an executable program by reading a uv node containing an image key corresponding to the requested image, a memory address of a texture atlas, and uv coordinates, which are allocation location information of the image within the texture atlas, from the uv node list, if allocated, and then moving the uv node to the end of the uv node list and sorting it after the response; and
An unallocated image response step of inputting an image request into a queue if unallocated, obtaining a requested image from a local storage or a remote storage according to the image request loaded into the queue and writing it to a read buffer, but if there are multiple image requests loaded into the queue, simultaneously processing multiple image requests limited by the number of threads and writing them to the read buffer, newly allocating the requested image written to the read buffer to a texture atlas, but newly allocating it to the uv coordinates according to the first uv node of the uv node list, moving the first uv node to the end of the uv node list and aligning it, and reading the uv node corresponding to the newly allocated requested image from the uv node list and responding to the executable program;
A memory management method for image rendering that includes .
제 1 항에 있어서,
미보유 이미지 응답 단계는 로컬 저장소에 요청 이미지가 존재하는 경우에는 로컬 저장소로부터 요청 이미지를 읽어들여 획득하고, 로컬 저장소에 요청 이미지가 존재하지 않는 경우에는 원격 저장소로부터 요청 이미지를 다운로드하여 획득하며, 다운로드로 획득된 이미지를 로컬 저장소에 저장하는 이미지 렌더링을 위한 메모리 관리 방법.
In paragraph 1,
The non-owned image response step is a memory management method for image rendering that reads and acquires the requested image from local storage if the requested image exists in local storage, downloads and acquires the requested image from remote storage if the requested image does not exist in local storage, and stores the image acquired by downloading in local storage.
제 1 항에 있어서,
미보유 이미지 응답 단계는 획득된 요청 이미지가 압축 이미지일 경우에는 비트맵으로 해독하여 읽기 버퍼에 기록하는 이미지 렌더링을 위한 메모리 관리 방법.
In paragraph 1,
The non-retained image response step is a memory management method for image rendering that decodes the acquired requested image into a bitmap and writes it to the read buffer if it is a compressed image.
제 1 항 내지 제 3 항 중 어느 한 항에 따른 방법을 컴퓨터에 실행시키기 위하여 컴퓨터 판독 가능 기록매체에 저장된 프로그램.A program stored in a computer-readable recording medium for causing a computer to execute a method according to any one of claims 1 to 3. 제 1 항 내지 제 3 항 중 어느 한 항에 따른 방법을 실행하기 위한 프로그램 명령어가 저장된 컴퓨터로 읽을 수 있는 기록매체.A computer-readable recording medium storing program instructions for executing a method according to any one of claims 1 to 3. 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete
KR1020220139452A 2022-10-26 2022-10-26 Memory management method Active KR102834455B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020220139452A KR102834455B1 (en) 2022-10-26 2022-10-26 Memory management method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220139452A KR102834455B1 (en) 2022-10-26 2022-10-26 Memory management method

Publications (2)

Publication Number Publication Date
KR20240058574A KR20240058574A (en) 2024-05-07
KR102834455B1 true KR102834455B1 (en) 2025-07-15

Family

ID=91078394

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220139452A Active KR102834455B1 (en) 2022-10-26 2022-10-26 Memory management method

Country Status (1)

Country Link
KR (1) KR102834455B1 (en)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016147046A (en) 2015-02-12 2016-08-18 東芝メディカルシステムズ株式会社 Medical image processing device, medical image processing method, medical image processing system, and medical image processing program
US20220139036A1 (en) 2020-11-05 2022-05-05 Fyusion, Inc. Deferred neural rendering for view extrapolation

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9582848B2 (en) * 2012-12-28 2017-02-28 Apple Inc. Sprite Graphics rendering system
KR101703984B1 (en) 2014-07-18 2017-02-09 주식회사 큐램 Method and system for processing memory
GB2566468B (en) * 2017-09-13 2020-09-09 Advanced Risc Mach Ltd Graphics processing
KR102310190B1 (en) * 2019-06-27 2021-10-12 한국전자기술연구원 Rendering system and rendering method thereof
KR20210111527A (en) * 2020-03-03 2021-09-13 에스케이하이닉스 주식회사 Apparatus and method for performing garbage collection in a memory system
US20220122311A1 (en) * 2020-10-21 2022-04-21 Samsung Electronics Co., Ltd. 3d texturing via a rendering loss

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016147046A (en) 2015-02-12 2016-08-18 東芝メディカルシステムズ株式会社 Medical image processing device, medical image processing method, medical image processing system, and medical image processing program
US20220139036A1 (en) 2020-11-05 2022-05-05 Fyusion, Inc. Deferred neural rendering for view extrapolation

Also Published As

Publication number Publication date
KR20240058574A (en) 2024-05-07

Similar Documents

Publication Publication Date Title
US10949944B2 (en) System and method for unified application programming interface and model
US10877757B2 (en) Binding constants at runtime for improved resource utilization
US20160162171A1 (en) Method, apparatus and storage medium for processing html5 canvas application
WO2017107414A1 (en) File operation method and device
US9165337B2 (en) Command instruction management
CN112764668B (en) Method, electronic device and computer program product for expanding GPU memory
US11521293B2 (en) Memory management in graphics and compute application programming interfaces
US10789170B2 (en) Storage management method, electronic device and computer readable medium
US10043234B2 (en) System and method for frame buffer decompression and/or compression
KR102114245B1 (en) Graphics state manage apparatus and method
US20240220115A1 (en) Apparatus and methods for direct co-processor access to prestored file system data in a non-volatile memory system
CN117194055B (en) GPU video memory application and release method, device and storage medium
CN118312464A (en) Data management method and data management system
JP6974510B2 (en) Methods, devices, devices and media for processing data
WO2014192144A1 (en) Control device and control method
CN115599268A (en) Screen capture method, computing device and storage medium
CN113495687B (en) Techniques for efficiently organizing and accessing compressible data
KR102834455B1 (en) Memory management method
WO2023173516A1 (en) Data exchange method and apparatus, and storage medium and electronic device
CN115845368B (en) Resource management method, electronic device, and computer-readable storage medium
US11263047B2 (en) Metadata management for multi-core resource manager
US6917364B2 (en) Method and apparatus for managing texture memory in a data processing system
CN114492319A (en) Method, device and medium for batch generation of UUIDs based on GPU
US12169876B2 (en) Optimizing partial writes to compressed blocks
CN120495064A (en) Video memory management method and device, graphic processing unit, storage medium and terminal equipment

Legal Events

Date Code Title Description
PA0109 Patent application

St.27 status event code: A-0-1-A10-A12-nap-PA0109

PA0201 Request for examination

St.27 status event code: A-1-2-D10-D11-exm-PA0201

D13-X000 Search requested

St.27 status event code: A-1-2-D10-D13-srh-X000

PG1501 Laying open of application

St.27 status event code: A-1-1-Q10-Q12-nap-PG1501

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

St.27 status event code: A-1-2-D10-D21-exm-PE0902

R18-X000 Changes to party contact information recorded

St.27 status event code: A-3-3-R10-R18-oth-X000

E13-X000 Pre-grant limitation requested

St.27 status event code: A-2-3-E10-E13-lim-X000

P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

St.27 status event code: A-1-2-D10-D22-exm-PE0701

PR0701 Registration of establishment

St.27 status event code: A-2-4-F10-F11-exm-PR0701

PR1002 Payment of registration fee

St.27 status event code: A-2-2-U10-U11-oth-PR1002

Fee payment year number: 1

PG1601 Publication of registration

St.27 status event code: A-4-4-Q10-Q13-nap-PG1601