KR102114245B1 - 그래픽스 상태 관리 장치 및 방법 - Google Patents

그래픽스 상태 관리 장치 및 방법 Download PDF

Info

Publication number
KR102114245B1
KR102114245B1 KR1020140043100A KR20140043100A KR102114245B1 KR 102114245 B1 KR102114245 B1 KR 102114245B1 KR 1020140043100 A KR1020140043100 A KR 1020140043100A KR 20140043100 A KR20140043100 A KR 20140043100A KR 102114245 B1 KR102114245 B1 KR 102114245B1
Authority
KR
South Korea
Prior art keywords
state
page
graphics
version
status
Prior art date
Application number
KR1020140043100A
Other languages
English (en)
Other versions
KR20150117522A (ko
Inventor
진승훈
류수정
조연곤
Original Assignee
삼성전자 주식회사
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 삼성전자 주식회사 filed Critical 삼성전자 주식회사
Priority to KR1020140043100A priority Critical patent/KR102114245B1/ko
Priority to US14/682,285 priority patent/US9734620B2/en
Publication of KR20150117522A publication Critical patent/KR20150117522A/ko
Application granted granted Critical
Publication of KR102114245B1 publication Critical patent/KR102114245B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures

Abstract

그래픽스 상태 관리 장치 및 방법이 개시된다. 일 예에 따라, 그래픽스 상태 관리 장치는 메모리 공간 상에서 복수의 그래픽스 상태 버전들 각각에 대해 미리 결정된 크기의 페이지에 기초하여 메모리 공간을 할당하거나 해제함으로써, 상기 그래픽스 상태 버전들 사이의 변화를 관리하는, 상태 버전 관리자를 포함하며, 상기 상태 버전 관리자는: 상기 그래픽스 상태 버전들 각각에 대해, 대응하는 페이지들 각각의 참조 여부를 나타내는 이진 값들의 열을 이용하여 페이지를 할당하거나 해제하도록 구성될 수 있다.

Description

그래픽스 상태 관리 장치 및 방법{GRAPHICS STATE MANAGE APPARATUS AND METHOD}
그래픽스 상태 관리 기술에 관련된다. 보다 상세하게는 그래픽스 상태에 대응하는 메모리 공간 페이지들의 참조 상태를 이용하여 메모리 공간의 할당 및 해제를 수행하는 그래픽스 상태 관리 기술에 관련된다.
다이렉트엑스(DirectX) 또는 오픈지엘(OpenGL, Open Graphics Library)과 같은 현대 그래픽스 라이브러리는, 그래픽스 상태들에 따라 동작하는 하나의 커다란 상태 기계이다. 예컨대 그리기 명령과 같은 동작을 수행하기 위한 하나의 그래픽스 프로세스를 위해, 연속되는 다수의 그래픽스 상태들이 동시에 유지될 필요가 있다. 연속되는 그래픽스 상태들은 하나의 그래픽스 상태가 조금씩 변화하면서 생성되는 다수의 그래픽스 상태 버전들이다. 통상적으로 연속적인 그래픽스 상태 버전들 사이의 데이터 변화는 크지 않기 때문에, 새로운 그래픽스 상태 버전을 생성할 때, 이전 버전의 데이터를 복사할 수 있고 또한 중복된 데이터 부분을 참조하는 포인터를 이용할 수 있다.
연속되는 다수의 그래픽스 상태들이 유지되는 하나의 그래픽스 프로세스 동안에, 특정 그래픽스 상태 버전이 생성 및/또는 종료될 수 있다. 그래픽스 상태 버전이 생성될 때, 메모리 공간이 페이지 단위로 할당되거나 또는 페이지 할당 없이 다른 버전의 페이지가 참조된다. 그래픽스 상태 버전이 종료되는 때에, 해당 버전에 대해 할당되어 있었던 페이지는 해제되어야 한다. 하지만, 예컨대 다른 버전에서 그 페이지를 참조하고 있는 경우, 그 페이지는 해제될 수 없다. 그러므로 메모리 공간의 할당 및 해제를 위해 각 페이지의 참조 상태가 관리되어야 한다. 그래픽스 상태들 사이의 변화 처리에 필요한 메모리 공간의 할당 및 해제 동작은, 그래픽스 상태들에 대응하는 메모리 공간 내의 페이지들의 참조 상태와 관련된 연산 및 메모리 공간의 면에서, 그래픽스 프로세스를 수행하는 전체적인 시스템 성능에 큰 영향을 끼칠 수 있다. 따라서 그래픽스 상태들의 변화에 필요한 연산을 최소함으로써 전체적인 시스템 성능을 향상시킬 수 있다. 그래픽스 상태들의 변화에 필요한 연산을 최소화하기 위해, 그래픽스 상태에 대응하는 메모리 공간의 페이지들의 참조 상태를 조회, 증가, 또는 감소시키는 연산이 효율적으로 수행되도록 하는 기술이 요구된다.
그래픽스 상태를 구성하는 각 페이지의 참조 여부를 나타내는 이진 값들의 열을 이용하여 메모리 공간의 할당 및 해제를 수행하는 그래픽스 상태 관리 장치 및 방법을 제안한다.
일 양상에 따라 제공되는 그래픽스 상태 관리 장치는, 메모리 공간 상에서 복수의 그래픽스 상태 버전들 각각에 대해 미리 결정된 크기의 페이지에 기초하여 메모리 공간을 할당하거나 해제함으로써, 상기 그래픽스 상태 버전들 사이의 변화를 관리하는, 상태 버전 관리자를 포함하며, 상기 상태 버전 관리자는: 상기 그래픽스 상태 버전들 각각에 대해, 대응하는 페이지들 각각의 참조 여부를 나타내는 이진 값들의 열을 이용하여 페이지를 할당하거나 해제하도록 구성될 수 있다.
일 실시예에 있어서, 상기 이진 값들의 열은: 각각 상기 페이지의 참조 여부를 이진 값 중 어느 하나에 의해 나타낼 수 있는 복수 개의 참조 상태 비트(RSB, Reference State Bit)를 포함하는 비트 열일 수 있다.
다른 실시예에 있어서, 상기 비트 열이 가지는 RSB들의 총수와 상기 각각의 그래픽스 상태 버전이 가지는 페이지들의 총수는 서로 동일하며, 하나의 RSB가 하나의 페이지의 참조 여부를 나타낼 수 있다.
또 다른 실시예에 있어서, 상기 비트 열이 가지는 RSB들의 총수와 상기 각각의 그래픽스 상태 버전이 가지는 페이지들의 총수는 서로 동일하지 않으며, 하나의 RSB가 둘 이상의 페이지를 포함하는 페이지 그룹의 참조 여부를 집합적으로 나타낼 수 있다.
또 다른 실시예에 있어서, 상기 비트 열은: 상기 상태 버전 관리자에 의해 관리되는 상태 테이블 내의 상기 그래픽스 상태 버전 각각에 대응하는 엔트리의 일부로서 관리될 수 있다.
또 다른 실시예에 있어서, 상기 상태 버전 관리자는: 새로운 그래픽스 상태 버전을 생성하는 명령이 호출되면, 상기 상태 테이블 내에 상기 새로운 그래픽스 상태 버전을 위한 엔트리를 할당하고; 및 상기 메모리 풀 내에서 상기 새로운 그래픽스 상태 버전에 대응하는 페이지들을 할당할 수 있다.
또 다른 실시예에 있어서, 상기 상태 버전 관리자는: 임의의 그래픽스 상태 버전을 변경하는 명령이 호출되면, 상기 상태 테이블에서, 변경될 현재 그래픽스 상태 버전의 페이지의 RSB에 대응하는 상위 그래픽스 상태 버전의 페이지의 RSB의 값을 식별하고; 식별된 RSB의 값에 기초하여, 상기 현재 그래픽스 상태 버전에 대해 새로운 페이지를 할당하여 변경을 수행할 지 또는 기존 페이지에서 변경을 수행할 지를 결정할 수 있다.
또 다른 실시예에 있어서, 상기 상태 버전 관리자는: 임의의 그래픽스 상태 버전을 해제하는 명령이 호출되면, 상기 상태 테이블에서, 해제될 현재 그래픽스 상태 버전의 페이지의 RSB의 값을 식별하고; 식별된 RSB의 값에 기초하여, 대응하는 차상위 그래픽스 상태 버전의 페이지의 RSB의 값을 참조하지 않은 상태로 변경할 지 또는 그대로 둘 지를 결정하고; 식별된 RSB의 값이 참조하지 않은 상태를 나타낼 때만 해당 페이지를 해제하고; 모든 페이지가 해제된 때에만 상기 현재 그래픽스 상태 버전의 엔트리를 상기 상태 테이블에서 제거할 수 있다.
그리고, 다른 양상에 따라 그래픽스 상태 관리 방법은, 메모리 공간 상에서 복수의 그래픽스 상태 버전들 각각에 대해 미리 결정된 크기의 페이지에 기초하여 메모리 공간을 할당하거나 해제함으로써, 상기 그래픽스 상태 버전들 사이의 변화를 관리하는, 상태 버전 관리 프로세스를 포함하며; 상기 상태 버전 관리 프로세스는: 상기 그래픽스 상태 버전들 각각에 대해, 대응하는 페이지들 각각의 참조 여부를 나타내는 이진 값들의 열을 이용하여 페이지를 할당하거나 해제하도록 구성될 수 있다.
상술한 양상들과 실시예들 및 그 이외의 다른 양상들과 실시예들에 관한 더 상세한 설명이 아래에서 제공될 것이다.
그래픽스 상태를 구성하는 각 페이지의 참조 여부를 나타내는 이진 값들의 열을 이용하여 메모리 공간의 할당 및 해제를 수행하도록 함으로써, 상태 관리에 필요한 연산과 메모리 공간을 감소시킬 수 있도록 한 그래픽스 상태 관리 장치 및 방법을 구현할 수 있는 효과가 있다.
도 1은 종래의 그래픽스 상태 관리 장치를 보여주는 블록도.
도 2는 그래픽스 상태 관리 장치의 일 실시예를 보여주는 블록도.
도 3은 그래픽스 상태 테이블의 일 실시예를 보여주는 개략도.
도 4는 실시예에 따라 그래픽스 상태들의 페이지들이 메모리 풀의 공간에 할당된 상태를 보여주는 예시적인 개략도.
도 5는 실시예에 따라 그래픽스 상태 생성 과정을 예시하는 개략적인 흐름도.
도 6은 실시예에 따라 그래픽스 상태 변경 과정을 예시하는 개략적인 흐름도.
도 7은 실시예에 따라 그래픽스 상태 종료 과정을 예시하는 개략적인 흐름도.
도 8 내지 도 20은 실시예들에 따라 그래픽스 상태들의 생성, 변경, 종료 과정에서, 상태 테이블 내의 대응 엔트리의 비트 열의 생성, 변경, 제거를 설명하기 위한 예시적인 개략도들.
다양한 그래픽 관련 애플리케이션들, 컴퓨터 지원 설계(CAD, computer-aided design), 가상현실, 정보시각화, 비행 시뮬레이션, 컴퓨터 게임 등의 분야에서 그래픽스 프로세스에 이용되는, OpenGL, DirectX와 같은, 그래픽스 라이브러리는 일종의 상태 기계로서 동작한다. 하나의 그래픽스 프로세스는 하나 이상의 그래픽스 컨텍스트를 가질 수 있다. 이를 위하여 그래픽스 프로세스를 수행하는 시스템은 하나 이상의 그래픽스 상태를 동시에 유지할 수 있어야 한다. 이 때, 동시에 유지되는 연속되는 그래픽스 상태들 사이의 변화를 처리하기 위해 필요한 연산들은 전체 그래픽스 처리에 있어 부담으로 작용할 수 있다. 연속된 그래픽스 상태들 사이의 변화 처리는 전체적인 시스템 성능에 큰 영향을 끼치게 되므로, 그래픽스 상태 변화에 필요한 연산을 최소화하는 것이 필요하다. 연속된 그래픽스 상태들의 관리는 상태 버전 관리(State Version Management, State Versioning)라고도 지칭된다.
통상적으로, 하나의 그래픽스 프로세스를 위해 동시에 유지되는 다수의 그래픽스 상태들은, 최초에 생성된 하나의 그래픽스 상태가 조금씩 연속적으로 변화된 결과 만들어진 다수의 그래픽스 상태 버전들이라고 생각될 수 있다. 일반적으로, 하나의 그래픽스 상태 버전은 수 ~ 수십 킬로바이트 크기를 가지는 구조체이다. 잘 작성된 유저 프로그램에서, 동시에 유지되는 연속된 그래픽스 상태 버전들은 데이터의 많은 부분이 변화되지 않고 중복된다. 그러므로 서로 다른 그래픽스 상태 버전들 사이에서 서로 중복되는 데이터에 대해 포인터를 사용하여 참조하는 것이 가능하다. 또한 하나의 그래픽스 상태 내의 서로 다른 부분들도 중복된 데이터를 가지는 것이 가능하므로, 하나의 그래픽스 상태 내에서 중복된 부분들도 포인터를 이용하여 참조될 수 있다. 하나의 그래픽스 상태는 복수의 항목(item)으로 이루어지고, 각각의 항목은 예컨대 32 bits 또는 64 bits와 같은 일정 분량의 크기를 가지는 데이터 값을 가질 수 있다. 또한 각각의 항목은 데이터 값이 아닌 포인터만을 가질 수 있다. 이 경우, 포인터는 동일한 데이터 값을 가진 다른 항목 자체를 참조하거나, 또는 그 항목을 포함하고 있는 관련 컴포넌트를 참조할 수 있다.
그래픽스 프로세스에 있어서, 그래픽스 상태 버전이 생성되고 해제됨에 따라 메모리 공간을 신속하게 할당하고 해제할 필요가 있다. 이를 위해 통상적으로 메모리 공간을 페이지라고 지칭되는 일정 크기의 블록으로 미리 분할한 다음, 필요 시에 이러한 페이지를 할당하여 처리한다. 그런데, 그래픽스 상태의 각 항목은 64 bits를 넘지 않는 정도의 작은 크기를 가지기 때문에, 메모리 공간을 이렇게 작은 크기로 분할하여 관리하는 것은 시스템에 큰 부담이 된다. 그러므로, 통상적으로 수십 ~ 수백 바이트 크기의 페이지 하나 내에 여러 개의 그래픽스 상태 항목들을 포함시켜 관리한다. 이에 따라 하나의 그래픽스 상태에 복수의 페이지들이 포함될 수 있으며, 하나의 페이지에 대해 복수의 그래픽스 상태 항목들이 포함될 수 있다.
도 1은 종래의 그래픽스 상태 관리 장치를 예시하는 블록도이다.
도 1을 참조하면, 그래픽스 상태 관리 장치(100)는, 참조 카운터와 상태 비교를 통해 상태 관리를 수행하는 시스템으로서, 명령 처리기(103), 그래픽스 처리기/파이프라인(105), 상태 버전 관리자(110), 상태 테이블(112), 페이지 복제기(114), 페이지 로케이터(116), 상태 비교기(118), 메모리 풀(120)을 포함한다. 메모리 풀(120)은 메모리 페이지 관리자(122), 참조카운터(124) 및 복수의 페이지블록(126)을 포함한다. 각각의 페이지블록(126)은 페이지(1261)와 카운터(1263)를 포함한다.
명령 처리기(103)는, 예컨대 그래픽 처리 장치(GPU, Graphics Processing Unit)의 프로세서일 수 있으며, 그래픽 애플리케이션이나 드라이버와 같은 호스트 프로세스로부터 명령을 수신한다. 호스트 프로세스는 예를 들어 그림 그리기 명령(Draw Call) 또는 상태 변경 명령 등의 명령을 명령 처리기(103)로 보낼 수 있다. 호스트 프로세스에서부터 명령을 수신하면, 명령 처리기(103)는 수신된 명령을 해석하여 상태 버전 관리자(110)로 전달한다. 상태 버전 관리자(110)는 명령 처리기(103)를 통해 해석된 명령에 따라 그래픽스 상태 버전들을 관리한다. 그래픽스 처리기/파이프라인(105)은, 그래픽스 명령에 따른 그래픽스 연산을 수행할 수 있다.
상태 버전 관리자(110)는, 예컨대 GPU의 메모리일 수 있는, 메모리 풀(120)에 저장되어 있는 그래픽스 상태 버전들을 관리한다. 메모리 풀(120)의 메모리 공간은 일정 크기의 페이지블록(126)들로 분할된다. 각각의 페이지블록(126)은 그래픽스 상태 버전의 항목들을 포함하는 페이지(1261) 및 해당 페이지(1261)가 참조된 횟수를 나타내는 카운터(1263)로 구성될 수 있다. 그리고, 상태 버전 관리자(110)로부터의 요청에 따라 메모리 페이지 관리자(122)는 페이지블록의 할당 및 해제를 관리하며, 참조카운터(124)는 카운터(1263)의 증가 및/또는 감소를 관리한다. 페이지 로케이터(116)는 특정 그래픽스 상태 버전의 특정 항목에 대응하는 특정 페이지를 메모리 풀(120)에 할당되어 있는 페이지들 중에서 찾아낼 수 있다. 상태 비교기(118)는 그래픽스 상태들을 서로 비교함으로써 특정 그래픽스 상태 버전의 특정 항목에 대응하는 특정 페이지가 메모리 풀(120) 내의 메모리 공간에 할당되어 있는지 아닌지를 결정할 수 있다. 상태 버전 관리자(110)는 상태 테이블(112)에 상태 버전 식별자(ID) 및 이에 대응하는 메모리 공간의 주소를 연관시켜 저장할 수 있다. 페이지 복제기(114)는, 메모리 페이지가 새로 할당되는 경우, 상태 버전 관리자(110)의 제어를 받아, 이전 상태 버전의 대응하는 페이지의 값을 새로 할당된 페이지로 복제한다.
통상적으로, 현재 그래픽스 상태 버전의 어떤 항목을 변경하는 명령이 호출되면, 상태 버전 관리자(110)는 페이지 로케이터(116)와 상태 비교기(118)를 통해 해당 항목에 대응하는 페이지가 메모리 공간 상에 할당되어 있는지 여부를 체크한다. 만약 페이지가 메모리 공간 상에 할당되어 있는 경우라면, 상태 버전 관리자(110)는 새로운 페이지 할당 없이, 기존에 할당되어 있는 페이지 내에서 해당 항목을 변경한다. 반면에, 페이지가 메모리 공간 상에 할당되어 있지 않은 경우라면, 상태 버전 관리자(110)는 새로운 페이지를 메모리 공간 상에 할당하도록 메모리 페이지 관리자(122)를 제어한다. 그런 다음, 상태 버전 관리자(110)는 할당된 페이지 내에 현재 그래픽스 상태 버전의 페이지들을 복사하도록 페이지 복제기(114)를 제어한다. 그리고 상태 버전 관리자(110)는 복제된 페이지들 내에서 해당 항목을 변경한다. 참조카운터(124)는 새로운 그래픽스 상태 버전이 생성될 때마다 참조되는 할당된 페이지들의 참조 카운터를 증가시키며, 어떤 그래픽스 상태 버전이 종료되어 해제될 때마다 참조가 해제되는 해당 페이지들의 참조 카운터를 감소시킨다. 가비지 수집기(garbage collector)는 일정 간격으로 참조 카운트가 0인 페이지를 해제하여 메모리 풀로 반납하는 일을 수행한다.
상술한 종래의 그래픽스 상태 관리 장치(100)는, 메모리 풀(120) 내에서 그래픽스 상태를 위한 페이지들 이외에, 각각에 페이지들의 참조 상태를 유지하기 위한 참조 카운터를 각 페이지와 연관하여 더 포함한다. 또한 종래의 시스템(100)은 그래픽스 상태 변경 처리시, 대응하는 페이지의 할당 상태를 체크하기 위해 각 페이지와 연관되어 있는 참조 카운터를 조회하여 참조 카운터의 값이 얼마인지 식별하여야 한다. 그리고 그래픽스 상태 버전의 생성/종료 마다 참조 카운터를 증가/감소시키기 위한 연산 처리를 수행하여야 한다. 이와 같이, 종래의 시스템(100)은 페이지의 참조 상태를 나타내는 참조 카운터를 각 그래픽스 상태의 페이지마다 별도로 관리하기 때문에, 그래픽스 상태 관리에 필요한 연산 및 메모리 공간 등의 부담이 증가할 수 있다. 그러므로, 메모리 공간을 절약할 수 있으면서 연산 부담을 감소시킬 수 있는 기술이 요구된다.
이러한 요구에 부응하기 위하여, 실시예들에 따른 그래픽스 상태 관리 장치 및 방법은, 그래픽스 상태에 대응하는 페이지들의 참조 여부를 나타내는 이진 값들의 열을 이용하는 그래픽스 상태 관리 기술을 제공한다.
실시예에서, 페이지들의 참조 여부는 '참조되는 상태' 및 '참조되지 않은 상태'의 두 경우만이 포함된다. 이것은 도 1의 종래 시스템(100)의 참조카운터가 증가하여 양의 정수를 가지거나 최소값이 0까지 감소될 수 있는 것과 대비된다. 즉 종래 기술의 참조카운터는 한 번 참조되는 경우, 두 번 참조되는 경우, 세 번 참조되는 경우 등을 구별하는 참조 횟수를 나타내는 것인 반면에, 실시예는 참조되는 횟수가 아니라 참조 여부만을 나타낸다. 그래픽스 상태 관리에 있어서, 페이지의 참조 상태는 페이지의 할당 및 해제를 위해 이용한다. 따라서 페이지가 몇 번 참조되었는지는 알 필요가 없으며, 페이지가 (1번 이상) 참조되어 있는지 아니면 (전혀) 참조되어 있지 않는지의 둘 중 어느 하나에 따라 페이지를 할당하거나 해제할 수 있다.
실시예에 따라, 이진 값들의 열은, 각각 0 또는 1을 나타낼 수 있는 요소(즉, 비트)를 복수 개 포함하는 하나의 비트 열로 표현될 수 있다. 이 경우 0을 나타내는 비트는 참조되지 않은 상태의 페이지와 대응하고, 1을 나타내는 비트는 참조된 상태의 페이지와 대응할 수 있다. 반대로 0을 나타내는 비트는 참조된 상태의 페이지와 대응하고, 1을 나타내는 비트는 참조되지 않은 상태의 페이지에 대응하는 예도 가능하다. 이러한 비트 열은 일종의 비트 벡터(bit-vector)라고 할 수 있다. 본 개시 내용에서, 비트 열을 구성하는 각각의 비트는 참조 상태 비트(RSB, Reference State Bit)라고도 지칭된다.
하나의 비트 열은 하나의 그래픽스 상태 버전에 대응된다. 그래픽스 상태 버전이 생성되면, 대응하는 비트 열이 생성될 수 있다. 그래픽스 상태 버전이 종료하면, 대응하는 비트 열이 삭제될 수 있다.
하나의 비트 열에 포함되는 RSB의 수는 미리 결정된다. 각각의 RSB는 비트 열의 최 좌측에서부터 최 우측까지 순차적으로 위치될 수 있다. 한편, 하나의 그래픽스 상태 버전에 대응하는 페이지 수는 미리 결정되며, 각각의 페이지는 최상위 페이지부터 최하위 페이지까지 순차적으로 순위가 매겨질 수 있다. 하나의 비트 열이 가지는 RSB의 총수와 하나의 그래픽스 상태 버전이 가지는 페이지의 총수 사이에는 다양한 대응 관계가 가능하다.
일 실시예에서 하나의 비트 열이 가지는 RSB의 총수와 하나의 그래픽스 상태 버전이 가지는 페이지의 총수는 서로 동일하다. 이 경우, 하나의 RSB가 하나의 페이지의 참조 여부를 나타낼 수 있다. 더 나아가, 비트 열 내에서의 특정 RSB의 위치는 그래픽스 상태 버전 내의 특정 순위를 가진 페이지에 대응할 수 있다.
다른 실시예에서 하나의 비트 열이 가지는 RSB의 총수와 하나의 그래픽스 상태 버전이 가지는 페이지의 총수는 서로 동일하지 않을 수 있다. 예컨대, 하나의 RSB가 둘 이상의 페이지들로 이루어진 하나의 페이지 그룹에 대응할 수 있다. 이 경우, RSB의 값이 0이라면, 대응하는 페이지 그룹 내의 페이지들은 모두 참조되지 않은 상태일 수 있다. 다른 한편 RSB의 값이 1이라면, 대응하는 페이지 그룹 내의 페이지들 중 적어도 하나의 페이지는 참조되어 있는 상태일 수 있다. 이 때, 각각의 페이지 그룹은 최상위 페이지 그룹부터 최하위 페이지 그룹까지 순차적으로 순위가 매겨질 수 있다. 이에 따라 비트 열 내에서의 특정 RSB의 위치는 그래픽스 상태 버전 내의 특정 순위를 가진 페이지 그룹에 대응할 수 있다. 일 예에서, 하나의 그래픽스 상태 버전에 대응하는 페이지 그룹들은 각각 동일한 수의 페이지들을 포함할 수 있다. 다른 예에서, 하나의 그래픽스 상태 버전에 대응하는 페이지 그룹들은 각각 서로 다른 수의 페이지들을 포함할 수 있다.
실시예에 따라, 비트 열은 상태 테이블의 엔트리 내에서 생성되어 저장되며, 변경되거나 삭제될 수 있다. 상태 테이블 내의 엔트리는 각각 그래픽스 상태 버전에 대응하는 값들을 포함한다. 각각의 엔트리는, 특정 그래픽스 상태 버전의 식별자, 특정 그래픽스 상태 버전의 최상위 페이지가 위치하는 메모리 공간 내의 절대적인 또는 상대적인 주소, 및 그래픽스 상태 버전에 대응하는 페이지들의 참조 여부를 나타내는 비트 열을 포함할 수 있다. 변형된 실시예에 따라, 상태 테이블 내에 포함되는 비트 열은 압축된 상태일 수 있다.
실시예에 따른 그래픽스 상태 관리 기법에서, 새로운 그래픽스 상태가 생성되는 프로세스는, 먼저 상태 테이블 내에서 새로운 상태를 위한 엔트리가 할당된 후, 메모리 풀 내에서 새로운 상태를 위한 페이지들이 할당되고, 할당된 메모리 페이지 상에 상위 상태의 페이지들의 항목들이 복제되는 방식으로 이루어질 수 있다.
실시예에 따라, 현재 그래픽스 상태 버전의 어떤 항목을 변경하는 명령이 호출되면, 변경될 항목이 속하는 페이지를 탐색한다. 변경될 항목을 포함한 페이지를 발견하면, 발견된 페이지에 대응하는 RSB에 대해 상위 그래픽스 상태 버전의 페이지에 대응하는 RSB의 값이 0인지 1인지가 식별될 수 있다. RSB의 값이 0이라면, 상위 버전의 페이지가 참조되어 있지 않다는 의미이며, 다시 말해서, 현재 버전의 페이지가 메모리 공간에 할당되어 있다는 의미이다. 그러므로, 기존에 할당되어 있는 페이지 내에서 변경될 항목의 값을 수정할 수 있다. 반면에, RSB의 값이 1이라면, 상위 버전의 페이지가 참조되어 있다는 의미이며, 다시 말해서, 현재 버전의 페이지가 메모리 공간에 할당되어 있지 않다는 의미이다. 그러므로, 새로운 페이지를 할당하고 상위 버전의 대응 페이지를 복제한 후, 복제된 페이지 내에서 변경될 항목의 값을 수정할 수 있다.
실시예에서는 새로운 그래픽스 상태 버전이 생성될 때마다 상태 테이블 내에서 새로운 비트 열을 가지는 엔트리가 생성된다. 비트 열의 각각의 RSB의 값들의 생성, 변경, 삭제는 도 8 내지 도 20을 참조하여 아래에서 더 상세히 설명될 것이다.
그래픽스 상태 버전이 종료되는 경우, 종료될 그래픽스 상태 버전에 대응하는 페이지들이 해제되어야 한다. 이를 위해, 현재 그래픽스 상태 버전의 비트 열 내의 RSB의 값이 0인지 1인지가 식별될 수 있다. 만약 현재 버전의 특정 페이지의 RSB의 값이 0이라면, 현재 버전의 특정 페이지가 참조되어 있지 않다는 의미이다. 따라서 이 페이지를 해제하게 될 것이므로, 현재 버전의 바로 위 버전 즉 차상위 버전의 대응 페이지의 RSB를 0으로 설정한다. 만약 현재 버전의 특정 페이지의 RSB의 값이 1이라면, 현재 버전의 특정 페이지 또는 차상위 버전의 대응 페이지가 하위 버전의 대응 페이지에 의해 참조되어 있다는 의미이다. 이러한 참조 상태를 승계하여야 하므로, 차상위 버전의 대응 페이지의 RSB는 변경 없이 그대로 유지한다. 이후 현재 버전의 RSB가 0인 페이지는 메모리 풀에 반납하고, 현재 버전의 RSB가 1인 페이지는 그대로 둔다. 만약, 현재 버전의 RSB가 모두 0이어서 모든 페이지가 반납되었으면, 상태 테이블 내에서 현재 버전의 엔트리를 제거함으로써, 현재 그래픽스 상태 버전의 종료가 마무리될 수 있다.
위에서 간단하게 기술되고 아래에서 도면을 참조하여 더 상세하게 기술될 실시예들에 따른 그래픽스 상태 관리 기법에 의해, 그래픽스 상태 버전에 대응하는 페이지의 참조 상태를 나타내는 비트 열을 이용하여, 각 페이지의 할당 및 해제 등과 같은 상태 버전 관리가 이루어진다. 이에 따르면, 상태 버전 관리에 필요한 연산 및 메모리 공간이 크게 줄어들 수 있다.
실시예에 따라, 상태 버전 관리에 필요한 연산과정에는, 각각의 그래픽스 상태 변화마다 참조 카운터를 판독하여 상태 비교를 수행하는 등의 복잡한 조작이 불필요하다. 상태 버전 관리를 위해, 비트 열 내의 RSB의 값을 식별하여 0과 1 사이에서 변경하는 단순 조작만이 필요하다. 이와 같이 실시예에 따라 단순한 비트 연산 만이 필요하므로, 컴퓨팅 자원의 부담이 적고 그래픽스 프로세스 시스템 성능 향상을 도모할 수 있다.
메모리 공간에 있어서, 예를 들어, 도 1의 그래픽스 상태 관리 장치(100)에서, 각 페이지에 대응하는 참조 카운터 부분(1263)이 16비트를 사용하고, 하나의 상태 버전이 256개의 페이지를 사용하며, 동시에 유지되는 그래픽스 상태 버전들의 최대값은 2048개인 경우를 고려하자. 그래픽스 상태가 변화할 때 약 20%의 페이지들이 변경된다고 가정하면, 종래의 시스템(100)에서 각 페이지의 참조 횟수를 유지하기 위하여, 할당 페이지의 수에 대응하여 카운터 공간이 필요하다. 즉, 필요한 메모리 공간 A = 16 * 256 * 2048 * 0.2 (bits). 이에 반하여, 페이지 수와 동일한 수의 RSB를 가지는 비트 열을 이용하는 실시예에 따른 그래픽스 상태 관리 기법에 의하면, 각 상태 버전의 페이지 수에 대응하는 비트가 상태 버전의 수만큼 필요하다. 즉, 필요한 메모리 공간 B = 256 * 2048 (bits). 이 예에서, 종래의 상태 관리를 위해 필요한 메모리 공간 A보다 실시예에 따른 상태 관리를 위해 필요한 메모리 공간 B이 약 3.2배 적은 공간을 필요로 한다는 것을 알 수 있다. 이 예는 단지 예시 목적으로 제공되며 실시예들을 제한하려고 의도하는 것이 아니다.
아래에서 그래픽스 상태 관리 장치 및 방법이 첨부된 도면들을 참조하여 예시로서 기술된다.
이하 도 2 내지 도 4를 참조하여 그래픽스 상태 관리 장치의 실시예가 기술된다. 기술된 그래픽스 상태 관리 장치는, 예컨대 GPU의 일부로서 구현될 수 있으나, 이것은 단지 예시에 불과하다. 해당 기술분야의 통상의 지식을 가진 자는, 청구항들의 범위 내에서 다양한 조합의 다른 시스템들이 가능하다는 것을 쉽게 이해할 것이다. 그래픽스 상태 관리 장치의 컴포넌트들은, 각각의 기능을 구현하는 회로들을 포함하는 하드웨어에 의해 구현될 수 있다. 또한 그래픽스 상태 관리 장치의 컴포넌트들은, 컴퓨팅 장치의 프로세서에 의해 수행되면 특정 태스크를 실행할 수 있도록 하는 컴퓨터-실행가능 소프트웨어, 펌웨어 및 하드웨어의 조합에 의해 구현될 수도 있다.
도 2는 그래픽스 상태 관리 장치의 일 실시예를 보여주는 블록도.
도 2를 참조하면, 실시예에 따른 그래픽스 상태 관리 장치(200)은, 상태 테이블 내에서 관리되는 참조 상태 비트(Reference State Bit, RSB)를 이용하여 상태 관리를 수행하는 시스템이다. 이 시스템(200)은 명령 처리기(203), 그래픽스 처리기/파이프라인(205), 상태 버전 관리자(210), 상태 테이블(212), 페이지 복제기(214), 페이지 로케이터(216), 메모리 풀(220) 등의 컴포넌트들을 포함할 수 있다. 메모리 풀(220)은 메모리 페이지 관리자(222)에 의해 관리되는 복수의 페이지(226)를 포함한다.
명령 처리기(203)는, 그래픽 애플리케이션이나 드라이버와 같은 호스트 프로세스로부터 그래픽스 명령을 수신할 수 있다. 호스트 프로세스에서부터 그래픽스 명령을 수신하면, 명령 처리기(203)는 수신된 그래픽스 명령을 해석하여 상태 버전 관리자(210)로 전달한다. 상태 버전 관리자(210)는 수신된 그래픽스 명령에 따라 상태 테이블(212) 내의 RSB를 이용하여 메모리 풀(220) 내에서 그래픽스 상태 버전들을 관리한다. 그래픽스 처리기/파이프라인(205)은, 그래픽스 명령에 따른 그래픽스 연산을 수행할 수 있다.
상태 버전 관리자(210)는 메모리 풀(220)에서 페이지 단위로 저장되는 그래픽스 상태 버전들을 관리한다. 메모리 풀(220)의 메모리 공간은 일정 크기의 페이지(226)들로 분할된다. 각각의 페이지(126)는 그래픽스 상태 버전의 하나 이상의 항목들을 포함할 수 있다. 메모리 페이지 관리자(222)는 페이지의 할당 및 해제를 관리한다. 페이지 로케이터(216)는 특정 항목이 그래픽스 상태 버전의 몇 번째 페이지에 위치하고 있는지를 찾아낼 수 있다. 페이지 복제기(214)는, 메모리 풀에서 할당된 새로운 페이지에 기존 페이지를 복사해준다.
상태 테이블(212)에는 상태 버전 식별자(ID), 이에 대응하는 메모리 공간의 주소, 및 대응하는 상태 버전의 페이지들의 참조 여부를 나타내는 비트 열을 포함하는 엔트리들이 저장된다. 상태 테이블(212)은 도 3을 참조하여 아래에서 더 설명된다. 상태 테이블(212)과 연관되어 메모리 풀 내에 할당되는 페이지들은 도 4를 참조하여 아래에서 더 설명된다.
상술한 바와 같은 그래픽스 상태 관리 장치(200)에 따르면, 그래픽스 상태 버전에 대응하는 페이지들의 참조 유무가 이진 값들로 표현되는 비트 열에 의해 표현된다. 이에 따라, 메모리 공간 내에서 페이지들을 할당하거나 해제할 때 간단한 비트 연산 방식으로 처리할 수 있어, 메모리 공간이 절약될 수 있고 연산 과정이 단순해질 수 있다.
도 3은 그래픽스 상태 테이블의 일 실시예를 보여주는 개략도이다.
도 3을 참조하면, 도 2의 상태 테이블(212)에 대응하는 상태 테이블(300)이 예시된다. 상태 테이블(300)는 다수의 엔트리(310, 320, 330)을 포함한다. 비록 도시된 예에서 엔트리는 3개만 보여지고 있으나, 도시된 예는 설명을 간단하게 하기 위해 단순화된 예를 드는 것에 불과하다. 실시예에 따라 상태 테이블(300)이 유지할 수 있는 엔트리들의 총수는 시스템이 동시에 유지할 수 있는 그래픽스 상태 버전들의 총수와 동일할 수 있다.
각각의 엔트리(310, 320, 330)는 상태ID(301), 최상위 페이지 주소(303), 및 비트 열(305)를 포함할 수 있다. 상태ID(301)는 각각의 그래픽스 상태 버전을 식별하기 ID 정보이다. 최상위 페이지 주소(303)는 각각의 그래픽스 상태 버전의 페이지들 중에서 최상위 페이지에 접근하기 위한 메모리 공간 내의 주소를 포함할 수 있다. 최상위 페이지 주소(303)는 메모리 공간 내의 절대 위치를 나타낼 수도 있고, 상대적인 위치를 나타낼 수 있다. 예를 들어, 최고 레벨의 그래픽스 상태 버전의 최상위 페이지의 주소 값을 기저주소(Base Address)로 하고 이로부터 얼마나 떨어져 있는지를 나타내는 오프셋(Offset)을 더하는 형태로 계산할 경우, 최상위 페이지 주소(303)는 오프셋 값 만을 포함할 수 있다. 그리고 비트 열(305)은 각각의 그래픽스 상태 버전의 페이지들의 참조 상태를 둘 중 어느 하나로 나타내는 참조 상태 비트(RSB) 들로 구성된다.
비트 열(305)의 길이는 RSB의 총수와 같고, 하나의 그래픽스 상태 버전을 구성하는 페이지들의 총수와 같다. 도시된 실시예에서, RSB 값은 0 또는 1 중 어느 하나를 가지며, 0은 참조되어 있지 않음을 나타내고, 1은 참조되어 있음을 나타낸다. 만약 RSB값이 0이면, 해당하는 그래픽스 상태 버전의 페이지를 참조하는 다른 그래픽스 상태 버전의 페이지가 없다는 의미이다. 만약 RSB 값이 1이면, 해당하는 그래픽스 상태 버전의 페이지를 다른 그래픽스 상태 버전의 페이지가 현재 참조하고 있다는 것을 의미한다.
도시된 예에서, 비트 열은 페이지들의 총수와 같은 수의 RSB를 구비하므로, 만약 하나의 그래픽스 상태 버전의 크기가 8 킬로바이트(KB)이고, 하나의 페이지가 128바이트의 크기라면, 각각의 페이지의 참조 여부를 나타내기 위해 필요한 RSB는 총 64개(= 8,000 바이트 / 128 바이트)가 필요할 것이다. 비트 열의 하나의 RSB가 여러 개의 페이지들의 참조 여부를 집합적으로 나타내는 실시예의 경우, 비트 열은 더 짧을 수도 있다. 비트 열이 짧아지면, 비트 열을 포함하는 상태 테이블(300)의 전체 크기가 작아질 수 있어 메모리 공간의 절약 효과가 상승될 수 있다.
더 나아가, 변형된 실시예에 따라, 비트 열의 대부분의 RSB들은 실제로 0일 경우보다는 1일 경우가 많기 때문에, 압축 효율이 좋을 수 있다. 비트 열을 압축하여 상태 테이블에 저장하는 경우에, 각 페이지의 참조 상태를 나타내기 위한 비트 열의 길이는 더욱 짧아질 수 있다. 이 경우, 그래픽스 상태 변화를 위해 비트 열의 RSB 값을 식별하기 위해서 압축된 비트 열을 압축해제하는 과정이 더 포함될 수 있다.
도 4는 그래픽스 상태들의 페이지들이 메모리 풀의 공간에 할당된 상태를 보여주는 개략도이다.
도 4를 참조하면, 도 2의 메모리 풀(220)에 대응하는 메모리 풀(400)의 페이지 구성이 예시된다. 도시된 예에서, 메모리 풀(400)의 메모리 공간의 특정 주소(450, 460, 470)에 최상위 페이지가 할당되어 있는 k 버전, k+1 버전, k+2 버전의 3개의 그래픽스 상태 버전들의 페이지들을 볼 수 있다.
k 버전의 n개의 페이지들은 모두 할당되어 있으며, 이는 도 4에서 페이지0(405), 페이지1(407), 페이지2(419), 페이지3 내지 페이지n-1(411, 413, 415)로서 표시되어 있다. k 버전의 페이지들의 참조 여부는 도 3의 엔트리(310)의 n개의 RSB에 의해 0 또는 1로 표시되어 있다. 비트 열(305) 중 0번째 RSB, 1번째 RSB, 5번째 RSB의 값들은 0이고, 그 외 나머지 RSB들은 모두 1의 값을 가지고 있다. 0번째 RSB, 1번째 RSB, 5번째 RSB는 각각 페이지0, 페이지1, 페이지5의 참조 여부를 나타내며, 따라서, k 버전의 페이지0, 페이지1, 페이지5는 다른 버전의 페이지0, 페이지1, 페이지5에 의하여 참조되지 않는다는 것을 알 수 있다.
k+1 버전의 n개의 페이지들은, 도면에서, 모두가 할당되어 있지 않다. 도면에는 오직 페이지0(423), 페이지1(425), 페이지5(401) 만이 할당되어 있다. k+1 버전의 페이지들의 참조 여부는 도 3의 엔트리(320)의 n개의 RSB에 의해 0 또는 1로 표시되어 있다. 0번째 RSB, 1번째 RSB, 4번째 RSB, 7번째 RSB, 8번째 RSB의 값들은 0이고, 그 외 나머지 RSB들은 모두 1의 값을 가지고 있다. 0번째 RSB, 1번째 RSB, 4번째 RSB, 7번째 RSB, 8번째 RSB는 마찬가지로 각각 페이지0, 페이지1, 페이지4, 페이지7, 페이지8의 참조 여부를 나타내며, 따라서, k+1 버전의 페이지0, 페이지1, 페이지4, 페이지7, 페이지8는 다른 버전의 페이지0, 페이지1, 페이지4, 페이지7, 페이지8에 의하여 참조되지 않는다는 것을 알 수 있다.
한편 k+2 버전에 대해서는, n개 페이지들 중 오직 페이지0(433), 페이지1(435), 페이지7(439), 페이지8(441) 만이 할당되어 있다. k+2 버전의 페이지들의 참조 여부는 도 3의 엔트리(330)의 n개의 RSB에 의해 0 또는 1로 표시되어 있다. k+2 버전은 최하위 버전이므로 모든 RSB들이 0의 값을 가진다. 따라서, k+2 버전의 페이지0~페이지n-1은 모두 다른 버전의 페이지0~페이지n-1에 의하여 참조되지 않는다는 것을 알 수 있다.
그래픽스 상태 버전을 메모리 공간 상에 저장하는 각 페이지는 메모리 풀에게서 할당 받기 때문에, 도 4에 도시된 바와 같이, 연속된 공간 상에 할당 받지 않아도 무관하다. 도시되 예에서, 연속된 페이지들 사이에 빈 페이지(409, 417, 427, 437)가 삽입되어 있는 예를 보여준다. 빈 페이지는 아직 어떠한 그래픽스 상태 버전을 위해 이용되고 있지 않는 페이지이다. 각 그래픽스 상태 버전을 구성하는 페이지들이 물리적인 메모리 공간 상에 연속적으로 배치되어 있지 않음도 볼 수 있다.
상술한 바와 같이. 실시예에 따른 그래픽스 상태 관리 장치는, 그래픽스 상태 버전을 구성하는 페이지들의 참조 여부를 비트 열에 의해 표현할 수 있다. 이에 따르면, 단순한 비트 연산에 기초하여 그래픽스 상태 버전을 관리할 수 있다. 그러므로, 실시예는 시스템 성능에 대한 부담 없이 그래픽스 상태 버전 관리를 효율적으로 수행할 수 있게 한다.
이하 도 5 내지 도 20을 참조하여, 그래픽스 상태 관리 방법의 실시예가 기술된다. 여기서 기술되는 그래픽스 상태 관리 방법은 단지 예시에 불과하다. 해당 기술분야의 통상의 지식을 가진 자는, 청구항들의 범위 내에서 다양한 조합의 다른 방법들이 가능하다는 것을 쉽게 이해할 것이다. 그래픽스 상태 관리 방법의 전부 또는 일부는, 컴퓨팅 장치의 프로세서에 의해 수행되면 특정 태스크를 실행할 수 있도록 하는 컴퓨터-실행가능 인스트럭션, 모듈, 소프트웨어, 데이터, 알고리즘, 프로시저, 플러그 인 등으로 코딩될 수 있다. 컴퓨터-실행가능 인스트럭션 등은 소프트웨어 개발자에 의해 예를 들어 베이직, 포트란, C, C++ 등과 같은 프로그래밍 언어에 의해 코딩된 후, 기계언어로 컴파일될 수 있다.
도 5는 실시예에 따라 그래픽스 상태 생성 과정을 예시하는 개략적인 흐름도이다.
도 5를 참조하면, 그래픽스 상태 생성 과정(500)은, 예컨대 CPU와 같은 호스트에서 실행되고 있는 애플리케이션 프로그램 또는 드라이버 등에 의해 예컨대 GPU와 같은 그래픽스 장치의 명령 처리기에게 그래픽스 명령이 송신되면서 시작될 수 있다. 그래픽스 명령에는 그림 그리기 명령 (Draw Call)이나 그래픽스 상태 변경 명령 등이 포함될 수 있다.
단계(501)에서, 명령 처리기에 의해 수신되는 그래픽스 명령이 새로운 상태를 생성하는 명령으로서 해석되는 경우는, 시스템의 동작 이후 최초의 그래픽스 상태 변경 명령, 또는 그림 그리기 명령 이후 처음 수신된 그래픽스 상태 변경 명령이 수신되는 경우이다. 이 명령에 따라 새로운 그래픽스 상태를 생성하기 위해, 상태 버전 관리자는, 상태 테이블 내에 생성될 그래픽스 상태를 위하여 한 엔트리를 할당한다(503). 그런 다음에, 상태 버전 관리자는 생성될 그래픽스 상태를 위한 페이지들을 메모리 풀 내에서 할당하도록 메모리 페이지 관리자에게 요청하고, 메모리 페이지 관리자는 요청된 페이지들을 할당한다(505). 생성될 그래픽스 상태를 위해 페이지들을 할당할 때, 이 그래픽스 상태를 구성하는 모든 페이지들을 한꺼번에 할당하지 않고, 최상위 페이지만 할당할 수 있다. 그런 다음, 상태 버전 관리자는 페이지 복제기로 하여금 할당된 페이지(들)로 상위 그래픽스 상태의 페이지를 복제하도록 제어할 수 있다(507).
여기서 상위 그래픽스 상태는, 동시에 유지되는 다수의 그래픽스 상태들 중에서, 현재 새로 생성되고 있는 그래픽스 상태보다 이전 버전의 그래픽스 상태들 중 바로 직전의 버전일 수 있다. 만약, 현재 새로 생성되고 있는 그래픽스 상태가 최초 버전인 경우라면, 페이지 복제 단계(507)는 새로운 데이터 값의 생성 과정에 의해 대체될 수 있으며, 이 새로운 데이터 값의 생성 과정은 본 개시 내용의 범위를 벗어난다. 따라서 도 5의 그래픽스 상태 생성 과정(500)은 이전 버전의 그래픽스 상태(들)이 존재하고 있는 경우에, 새로운 버전의 그래픽스 상태가 생성되는 과정에 관한 것이다.
또 다른 시나리오에서, 그림 그리기 명령의 경우, 다음 그림을 그리는 명령을 위해 그래픽스 상태 변화가 따라오는 것은 자명하기 때문에, 매 그림 그리기 명령 이후마다 새로운 그래픽스 상태 버전의 생성 과정(500)이 수행될 수 있다.
도 6은 실시예에 따라 그래픽스 상태 변경 과정을 예시하는 개략적인 흐름도이다.
도 6을 참조하면, 그래픽스 상태 변경 과정(600)은 호스트에서 실행되는 애플리케이션이나 드라이버에서 그래픽스 처리 장치의 명령 처리기에 그래픽스 상태 변경 명령이 송신됨으로써 시작된다. 그래픽스 변경 과정(600)은 새로운 그래픽스 상태 버전이 생성되는 것이 아니라, 이미 존재하고 있는 그래픽스 상태 버전 중 하나 이상의 항목이 갱신되는 상태 갱신 과정이다.
먼저, 상태 버전 관리자에 의해 명령 처리기로부터 상태 변경 명령이 수신될 수 있다(601). 명령 처리기는 상태 변경 명령과 함께 명령 수행을 위한 관련된 인자들을 상태 버전 관리자에게 전송할 수 있다. 상태 버전 관리자는 페이지 로케이터를 통해 변경될 항목이 속하는 페이지를 탐색할 수 있다(603). 일단 그래픽스 상태들의 구조가 정해지면, 페이지 로케이터는 미리 저장되어 있는 데이터에 기초하여, 특정 항목에 대한 페이지 식별정보(예컨대, 페이지 번호)를 검출할 수 있다.
페이지가 발견되면, 상태 버전 관리자는 도 3 및 도 4를 참조하여 설명한 바와 같은 상태 테이블 내에서 발견된 현재 상태 페이지 및 현재 상태 페이지에 연관되어 있는 다른 상태 페이지의 참조 여부를 나타내는 RSB들을 판독할 수 있다. RSB들 중에서, 현재 상태 페이지에 대한 상위 상태 페이지의 RSB가 0인지 1인지가 체크될 수 있다(605). 여기서 상위 상태 페이지란, 현재 상태 페이지가 속한 그래픽스 상태 버전보다 상위 버전의 그래픽스 상태 버전의 페이지들 중에서, 현재 상태 페이지의 순서와 대응하는 순서에 위치한 페이지를 의미한다. 예컨대, 만약 현재 상태 페이지가 도 3의 k+2 버전의 그래픽스 상태에 속하는 페이지들 중에서 3번째 RSB에 대응하는 페이지라면, 상위 상태 페이지는 k+1 버전의 그래픽스 상태에 속하는 페이지들 중에서 3번째 RSB에 대응하는 페이지를 의미한다. 현재 상태 페이지에 대한 하위 상태 페이지도 유사하게 한정될 수 있다. 상위 상태 페이지들 중 현재 상태 페이지의 바로 직전 버전에 대응하는 상위 상태 페이지를 차상위 상태 페이지라고 지칭할 수 있다.
체크 단계(605)에서, 만약 상위 상태 페이지의 RSB가 1이라면(605의 예), 현재 상태 페이지 또는 현재 상태 페이지에 대한 하위 상태 페이지들이 상위 상태 페이지를 참조하고 있다는 의미이다. 다시 말해서, 현재 상태 페이지는 상위 상태 페이지를 단지 참조만 하고 있고 메모리 풀 내에서 실제로 페이지가 할당되어 있지 않다. 이와 같이, 현재 버전의 그래픽스 상태에 대해 변경될 항목을 가진 페이지가 실제로 메모리 풀에는 존재하지 않으므로, 상태 변경 명령을 수행할 페이지를 생성할 필요가 있다.
따라서, 단계(607)에서, 메모리 풀을 통해 새로운 페이지를 할당 받고, 페이지 복제기를 이용하여 참조하고 있는 상위 상태 페이지를 복제한다(607). 그런 다음 단계(609)에서, 단계(607)에 의해 생성된 페이지 내에서 해당 항목의 값을 수정함으로써, 단계(601)에서 수신된 상태 변경 명령이 수행될 수 있다.
한편, 체크 단계(605)에서, 만약 상위 상태 페이지의 RSB가 0이라면(605의 아니오), 상위 상태 페이지는 참조되고 있지 않다는 의미이다. 다시 말해서, 현재 상태 페이지가 이미 메모리 풀 내에 생성되어 있다는 의미이다. 그러므로, 새로운 페이지를 할당할 필요 없이, 이미 존재하는 페이지 내에서 해당 항목의 값을 수정(611)함으로써, 단계(601)에서 수신된 상태 변경 명령이 수행될 수 있다.
도 7은 실시예에 따라 그래픽스 상태 종료 과정을 예시하는 개략적인 흐름도이다.
도 7을 참조하면, 그래픽스 상태 종료 과정(700)은, 예컨대 특정 그래픽스 상태 버전을 사용하는 그림 그리기 명령이 완료되어 이 특정 그래픽스 상태 버전이 더 이상 사용되지 않는 경우에 수행된다. 이 경우, 이 특정 그래픽스 상태 버전을 메모리 공간 상에 저장하기 위해 사용했던 모든 페이지들을 메모리 풀로 반납하는 해제 프로세스가 수행되어야 한다. 하지만, 만약 특정 그래픽스 상태 버전에 속하는 모든 페이지들을 무조건 해제한다면, 다른 버전의 그래픽스 상태에 의해 참조하고 있는 페이지까지 모두 해제하게 되고, 이에 따라 다른 버전의 그래픽스 상태에서 해제된 페이지를 참조하고자 할 때 문제가 발생한다. 그러므로, 그래픽스 상태를 해제할 때, 각 페이지의 참조 상태가 고려되어야 한다.
먼저, 상태 버전 관리자에 의해 명령 처리기로부터 특정 그래픽스 상태 버전이 종료되었으므로 이 특정 그래픽스 상태 버전을 종료하라는 상태 해제 명령이 수신될 수 있다(701). 그러면, 상태 버전 관리자는 도 3 및 도 4를 참조하여 설명한 바와 같은 상태 테이블 내에서 해제될 현재 그래픽스 상태 버전의 페이지(즉, 현재 상태 페이지)들의 참조 여부를 나타내는 RSB들을 판독할 수 있다(703).
만약, 현재 상태 페이지의 RSB가 0이라면(703의 예), 현재 상태 페이지의 하위 상태 페이지는 현재 상태 페이지 또는 현재 상태 페이지의 차상위 상태 페이지를 참조하지 않는다는 의미이다. 다시 말해서, 현재 상태 페이지는 아무 문제없이 해제될 수 있다. 그러므로, 상태 버전 테이블은 현재 상태 페이지를 해제한 것으로 간주하고 현재 상태 페이지의 차상위 상태 페이지의 RSB를 0으로 설정한다(705).
한편, 만약 현재 상태 페이지의 RSB가 1이라면(703의 아니오), 현재 상태 페이지의 하위 상태 페이지는 현재 상태 페이지 또는 현재 상태 페이지의 차상위 상태 페이지를 참조하고 있다는 의미이다. 따라서 현재 상태 페이지의 해제 이후에도 이러한 참조 상태를 승계해주어야 하기 때문에 차상위 상태 페이지의 RSB를 변경하지 않고 그대로 둔다(707).
상태 테이블 내에서 차상위 상태 페이지들의 RSB들을 수정하는 단계(705, 707)가 모두 완료되면, 현재 RSB가 0인 현재 상태 페이지를 메모리 풀에서 할당 해제하고 반납한다(709). 하지만, 현재 RSB가 1인 현재 상태 페이지는 해제하지 않고 그대로 둔다. 만약, 현재 그래픽스 상태 버전의 모든 페이지들이 해제되었다면(711의 예), 현재 그래픽스 상태 버전의 엔트리를 상태 테이블 내에서 제거함으로써, 단계(701)에서 수신된 상태 해제 명령을 완료한다. 하지만, 만약 현재 그래픽스 상태 버전의 모든 페이지들이 해제되지 않고 남아 있는 페이지가 존재한다면(711의 아니오), 모든 페이지가 해제될 때까지 대기한다.
도 8 내지 도 20은 실시예들에 따라 그래픽스 상태들의 생성, 변경, 종료 과정에서, 상태 테이블 내의 대응 엔트리의 비트 열의 생성, 변경, 제거를 설명하기 위한 예시적인 개략도들이다.
도 8을 참조하면, 처음에 하나의 그래픽스 상태만이 생성되어 있는 경우의 상태 테이블을 도시한다. 상태 테이블(800)은 상태ID(801) 및 16개의 RSB로 구성된 비트열(803)을 포함한다. 상태 테이블(800)은 하나의 그래픽스 상태 버전 "상태0"를 위한 엔트리(810)를 포함한다. "상태0"가 생성되어 있으나, 현재 "상태0"의 16개 페이지들 중 어느 것도 다른 페이지에 의해 참조되어 있지 않으므로 RSB0~RSB15는 모두 0이다.
도 9를 참조하면, 도 8의 경우로부터 새로운 그래픽스 상태 버전인 "상태1"을 위한 엔트리(820)가 추가된 경우의 상태 테이블을 도시한다. "상태1"의 페이지들은 "상태0"의 페이지들을 복제하여 생성된 것이기 때문에, "상태0"의 모든 RSB는 1이다.
도 10을 참조하면, 도 9의 경우로부터 상태1의 페이지0을 변경하라는 내용을 담고 있는 상황을 설명하기 위한 상태테이블을 보여준다. 이 상황에서, 상태 버전 관리자는 상태1의 상위 상태인 상태0의 RSB를 체크한다. 현재 상태인 상태1에 대한 상위 상태인 상태0에서, 변경될 현재 상태 페이지인 상태1의 페이지0에 대응하는 상위 상태 페이지는 상태0의 페이지0이다. 상태0의 페이지0에 해당하는 RSB0은 1 이므로, 현재 상태 페이지인 상태1의 페이지0는 상위 상태 페이지인 상태0의 페이지0를 참조하고 있다는 것을 의미한다. 상태가 변경되어야 하므로 새로운 페이지를 할당 받아 상태1의 페이지0가 새로운 페이지를 포인팅할 수 있도록 변경해준다.
그 결과 상태 테이블(800)은 도 11과 같이 변경될 수 있다. 즉, 도 10에서의 상태 변경 결과, 도 11에 도시된 바와 같이, 상태0의 페이지0는 더 이상 상태1의 페이지0에 의해 참조되지 않으므로 상태0의 페이지0에 대응하는 RSB0은 0으로 설정된다.
도 12를 참조하면, 도 11의 경우로부터 상태1의 페이지0을 변경하라는 내용을 담고 있는 상황을 설명하기 위한 상태테이블을 보여준다. 이 상황에서, 상태 버전 관리자는 상태1의 상위 상태인 상태0의 RSB를 체크한다. 현재 상태인 상태1에 대한 상위 상태인 상태0에서, 변경될 현재 상태 페이지인 상태1의 페이지0에 대응하는 상위 상태 페이지는 상태0의 페이지0이다. 상태0의 페이지0에 해당하는 RSB0은 0 이므로, 현재 상태 페이지인 상태1의 페이지0는 상위 상태 페이지인 상태0의 페이지0를 참조하고 있지 않다는 것을 의미한다. 이미 페이지가 할당되어 있기 때문에 페이지 할당 없이 상태 항목만 변경한다.
도 13을 참조하면, 도 10 내지 도 12에서 설명된 것과 동일한 명령이 상태1의 페이지8에 대해 요청되고, 도 10 내지 도 12에서 설명된 것과 동일한 과정이 반복된 결과가 도시된다.
도 14를 참조하면, 도 13으로부터, 그림 그리기 명령 (Draw Call)이 호출되고, 이후 새로운 그래픽스 상태 버전인 "상태2"가 생성되어 대응하는 엔트리(830)가 새로 할당된다. 상태2는 상태1의 페이지들을 복제하여 생성되기 때문에 상태1의 모든 RSB는 1로 설정된다.
도 15를 참조하면, 도 14로부터, 상태2의 페이지0에 대하여, 도 10에서 설명된 것과 같은 상태 변경 명령이 발생한 상황을 보여준다. 여기서도, 도 10에와 유사하게, 상태2의 페이지0의 상위 상태 페이지인 상태1의 페이지0에 해당하는 RSB0가 1이므로, 새로운 페이지를 할당 받고 복제, 상태1의 RSB0를 0으로 설정한다. 그 결과가 도 16에 도시된다.
도 17을 참조하면, 도 16으로부터, 상태2의 페이지2에 대하여, 도 10과 유사한 상태 변경 명령이 발생하고, 이에 따른 결과가 도시된다. 도 16에서 볼 수 있는 바와 같이, 상태2의 페이지2의 상위 상태 페이지인 상태1의 페이지2에 해당하는 RSB2가 1이므로, 새로운 페이지를 할당 받고 복제하며, 상태1의 RSB2는 더 이상 참조되지 않으므로 0으로 설정한다. 그러나 상태0의 RSB2는 여전히 상태1의 페이지2에 의해 참조되므로 1의 값을 유지한다.
도 18을 참조하면, 도 17으로부터, 상태2를 참조하는 명령이 모두 종료되었고, 상태2를 해제 할 수 있게 된 상황이 도시된다. 상태2에서 RSB가 0인 모든 페이지는 더 이상 참조되지 않기 때문에 메모리 풀로 반환이 가능하다. 상태2는 더 이상 상위 상태 (즉, 상태1) 를 참조하지 않기 때문에 상태2에서 RSB가 0이었던 모든 페이지에 대해 상위 상태인 상태1의 RSB를 모두 0으로 설정한다(만약 상태2의 RSB가 1인 경우, 차상위에 대한 참조가 될 수 있으므로 상태2의 대응하는 RSB 값을 바꾸지 않는다).
도 19은, 도 18로부터, 상태2의 모든 페이지가 메모리 풀로 반환된 이후, 상태2에 대한 엔트리(830)이 삭제된 상태 테이블을 보여준다.
도 20은, 도 19로부터, 상태0의 종료 명령을 받아 상태0의 모든 페이지를 반환 한 후 상태0의 엔트리를 상태 테이블에서 삭제한 결과를 보여준다. 상태 테이블(800)의 첫 엔트리(810)는 최초에 상태0가 할당 받았으나, 상태0가 삭제되었으므로, 상태1이 첫 엔트리(810)의 소유자가 된다. 상태1의 모든 페이지는 더 이상 참조되지 않으므로 언제든지 메모리 풀로의 반환이 가능하다는 것을 알 수 있다.
상술한 바와 같이. 실시예에 따른 그래픽스 상태 관리 방법은, 그래픽스 상태 버전을 구성하는 페이지들의 참조 여부를 표현한 비트 열을 이용한 단순한 비트 연산에 기초하여 그래픽스 상태 버전을 관리할 수 있다.
200: 그래픽스 상태 관리 장치
203: 명령 처리기
205: 그래픽스 처리기 / 파이프라인
210: 상태 버전 관리자
212: 상태 테이블
214: 페이지 복제기
216: 페이지 로케이터
220: 메모리 풀
222: 메모리 페이지 관리자
226: 페이지

Claims (16)

  1. 메모리 공간 상에서 복수의 그래픽스 상태 버전들 각각에 대해 미리 결정된 크기의 페이지에 기초하여 메모리 공간을 할당하거나 해제함으로써, 상기 그래픽스 상태 버전들 사이의 변화를 관리하는, 상태 버전 관리자를 포함하며,
    상기 상태 버전 관리자는:
    상기 그래픽스 상태 버전들 각각에 대해, 대응하는 페이지들 각각의 참조 여부를 나타내는 이진 값들의 열을 이용하여 페이지를 할당하거나 해제하도록 구성되고,
    상기 이진 값들의 열은:
    각각 상기 페이지의 참조 여부를 이진 값 중 어느 하나에 의해 나타낼 수 있는 복수 개의 참조 상태 비트(RSB, Reference State Bit)를 포함하는 비트 열이고,
    상기 비트 열은:
    상기 상태 버전 관리자에 의해 관리되는 상태 테이블 내의 상기 그래픽스 상태 버전 각각에 대응하는 엔트리의 일부로서 관리되고,
    상기 상태 버전 관리자는
    임의의 그래픽스 상태 버전을 변경하는 명령이 호출되면, 상기 상태 테이블에서, 변경될 현재 그래픽스 상태 버전의 페이지의 RSB에 대응하는 상위 그래픽스 상태 버전의 페이지의 RSB의 값을 식별하고; 식별된 RSB의 값에 기초하여, 상기 현재 그래픽스 상태 버전에 대해 새로운 페이지를 할당하여 변경을 수행할 지 또는 기존 페이지에서 변경을 수행할 지를 결정하는,
    그래픽스 상태 관리 장치.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 비트 열이 가지는 RSB들의 총수와 상기 각각의 그래픽스 상태 버전이 가지는 페이지들의 총수는 서로 동일하며, 하나의 RSB가 하나의 페이지의 참조 여부를 나타내는,
    그래픽스 상태 관리 장치.
  4. 메모리 공간 상에서 복수의 그래픽스 상태 버전들 각각에 대해 미리 결정된 크기의 페이지에 기초하여 메모리 공간을 할당하거나 해제함으로써, 상기 그래픽스 상태 버전들 사이의 변화를 관리하는, 상태 버전 관리자를 포함하며,
    상기 상태 버전 관리자는:
    상기 그래픽스 상태 버전들 각각에 대해, 대응하는 페이지들 각각의 참조 여부를 나타내는 이진 값들의 열을 이용하여 페이지를 할당하거나 해제하도록 구성되고,
    상기 이진 값들의 열은:
    각각 상기 페이지의 참조 여부를 이진 값 중 어느 하나에 의해 나타낼 수 있는 복수 개의 참조 상태 비트(RSB, Reference State Bit)를 포함하는 비트 열이고,
    상기 비트 열이 가지는 RSB들의 총수와 상기 각각의 그래픽스 상태 버전이 가지는 페이지들의 총수는 서로 동일하지 않으며, 하나의 RSB가 둘 이상의 페이지를 포함하는 페이지 그룹의 참조 여부를 집합적으로 나타내는,
    그래픽스 상태 관리 장치.
  5. 삭제
  6. 메모리 공간 상에서 복수의 그래픽스 상태 버전들 각각에 대해 미리 결정된 크기의 페이지에 기초하여 메모리 공간을 할당하거나 해제함으로써, 상기 그래픽스 상태 버전들 사이의 변화를 관리하는, 상태 버전 관리자를 포함하며,
    상기 상태 버전 관리자는:
    상기 그래픽스 상태 버전들 각각에 대해, 대응하는 페이지들 각각의 참조 여부를 나타내는 이진 값들의 열을 이용하여 페이지를 할당하거나 해제하도록 구성되고,
    상기 이진 값들의 열은:
    각각 상기 페이지의 참조 여부를 이진 값 중 어느 하나에 의해 나타낼 수 있는 복수 개의 참조 상태 비트(RSB, Reference State Bit)를 포함하는 비트 열이고,
    상기 비트 열은:
    상기 상태 버전 관리자에 의해 관리되는 상태 테이블 내의 상기 그래픽스 상태 버전 각각에 대응하는 엔트리의 일부로서 관리되고,
    상기 상태 버전 관리자는:
    새로운 그래픽스 상태 버전을 생성하는 명령이 호출되면, 상기 상태 테이블 내에 상기 새로운 그래픽스 상태 버전을 위한 엔트리를 할당하고; 및 메모리 풀 내에서 상기 새로운 그래픽스 상태 버전에 대응하는 페이지들을 할당하는,
    그래픽스 상태 관리 장치.
  7. 삭제
  8. 삭제
  9. 메모리 공간 상에서 복수의 그래픽스 상태 버전들 각각에 대해 미리 결정된 크기의 페이지에 기초하여 메모리 공간을 할당하거나 해제함으로써, 상기 그래픽스 상태 버전들 사이의 변화를 관리하는, 상태 버전 관리 프로세스를 포함하며;
    상기 상태 버전 관리 프로세스는:
    상기 그래픽스 상태 버전들 각각에 대해, 대응하는 페이지들 각각의 참조 여부를 나타내는 이진 값들의 열을 이용하여 페이지를 할당하거나 해제하도록 구성되고
    상기 이진 값들의 열은:
    각각 상기 페이지의 참조 여부를 이진 값 중 어느 하나에 의해 나타낼 수 있는 복수 개의 참조 상태 비트(RSB, Reference State Bit)를 포함하는 비트 열이고,
    상기 비트 열은
    상태 버전 관리자에 의해 관리되는 상태 테이블 내의 상기 그래픽스 상태 버전 각각에 대응하는 엔트리의 일부로서 관리되고,
    임의의 그래픽스 상태 버전을 해제하는 명령이 호출되면, 상기 상태 테이블에서, 해제될 현재 그래픽스 상태 버전의 페이지의 RSB의 값을 식별하고, 식별된 RSB의 값에 기초하여, 대응하는 차상위 그래픽스 상태 버전의 페이지의 RSB의 값을 참조하지 않은 상태로 변경할 지 또는 그대로 둘 지를 결정하고, 식별된 RSB의 값이 참조하지 않은 상태를 나타낼 때만 해당 페이지를 해제하고, 모든 페이지가 해제된 때에만 상기 현재 그래픽스 상태 버전의 엔트리를 상기 상태 테이블에서 제거하는 것을 포함하는
    그래픽스 상태 관리 방법.

  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
KR1020140043100A 2014-04-10 2014-04-10 그래픽스 상태 관리 장치 및 방법 KR102114245B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140043100A KR102114245B1 (ko) 2014-04-10 2014-04-10 그래픽스 상태 관리 장치 및 방법
US14/682,285 US9734620B2 (en) 2014-04-10 2015-04-09 Apparatus and method for graphics state management

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140043100A KR102114245B1 (ko) 2014-04-10 2014-04-10 그래픽스 상태 관리 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20150117522A KR20150117522A (ko) 2015-10-20
KR102114245B1 true KR102114245B1 (ko) 2020-06-05

Family

ID=54265482

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140043100A KR102114245B1 (ko) 2014-04-10 2014-04-10 그래픽스 상태 관리 장치 및 방법

Country Status (2)

Country Link
US (1) US9734620B2 (ko)
KR (1) KR102114245B1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102482874B1 (ko) 2015-09-11 2022-12-29 삼성전자 주식회사 렌더링 장치 및 방법
KR102644276B1 (ko) 2016-10-10 2024-03-06 삼성전자주식회사 그래픽 처리 장치 및 방법
US10515432B2 (en) 2016-10-28 2019-12-24 Samsung Electronics Co., Ltd. Methods and apparatuses for managing graphics data using two-stage lookup tables in cache
CN106649684B (zh) * 2016-12-16 2019-12-03 国电南瑞科技股份有限公司 一种电力系统图形多版本动态存储与发布方法
US10587454B2 (en) * 2018-01-30 2020-03-10 Hewlett Packard Enterprise Development Lp Object counts persistence for object stores

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060161911A1 (en) * 2005-01-18 2006-07-20 Barrs John W Method and apparatus for managing versioning data in a network data processing system
US20080208850A1 (en) * 2007-02-24 2008-08-28 Boyce Kevin Gerard Fast identification of complex strings in a data stream
US20130332684A1 (en) 2012-06-12 2013-12-12 International Business Machines Corporation Data versioning in solid state memory

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7673304B2 (en) 2003-02-18 2010-03-02 Microsoft Corporation Multithreaded kernel for graphics processing unit
US7593971B1 (en) 2005-12-07 2009-09-22 Nvidia Corporation Configurable state table for managing multiple versions of state information
US7404059B1 (en) 2005-12-07 2008-07-22 Nvidia Corporation Parallel copying scheme for creating multiple versions of state information
US7404056B1 (en) 2005-12-07 2008-07-22 Nvidia Corporation Virtual copying scheme for creating multiple versions of state information
US7681077B1 (en) 2006-11-03 2010-03-16 Nvidia Corporation Graphics system with reduced shadowed state memory requirements
US8089485B2 (en) 2007-07-17 2012-01-03 Prometech Software, Inc. Method for constructing data structure used for proximate particle search, program for the same, and storage medium for storing program
US9354944B2 (en) 2009-07-27 2016-05-31 Advanced Micro Devices, Inc. Mapping processing logic having data-parallel threads across processors
US8868848B2 (en) 2009-12-21 2014-10-21 Intel Corporation Sharing virtual memory-based multi-version data between the heterogenous processors of a computer platform
KR101634118B1 (ko) * 2010-03-22 2016-06-29 삼성전자주식회사 메모리 관리 장치 및 방법
US8970608B2 (en) 2010-04-05 2015-03-03 Nvidia Corporation State objects for specifying dynamic state
KR101956197B1 (ko) * 2012-07-18 2019-03-08 삼성전자 주식회사 그래픽 처리 유닛을 이용한 데이터 처리 방법 및 장치

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060161911A1 (en) * 2005-01-18 2006-07-20 Barrs John W Method and apparatus for managing versioning data in a network data processing system
US20080208850A1 (en) * 2007-02-24 2008-08-28 Boyce Kevin Gerard Fast identification of complex strings in a data stream
US20130332684A1 (en) 2012-06-12 2013-12-12 International Business Machines Corporation Data versioning in solid state memory

Also Published As

Publication number Publication date
US9734620B2 (en) 2017-08-15
KR20150117522A (ko) 2015-10-20
US20150294436A1 (en) 2015-10-15

Similar Documents

Publication Publication Date Title
CN108009008B (zh) 数据处理方法和系统、电子设备
US9430388B2 (en) Scheduler, multi-core processor system, and scheduling method
KR102114245B1 (ko) 그래픽스 상태 관리 장치 및 방법
US10877757B2 (en) Binding constants at runtime for improved resource utilization
CN107066498B (zh) 键值kv存储方法和装置
US9009273B2 (en) Address server
US10073648B2 (en) Repartitioning data in a distributed computing system
WO2014190315A1 (en) Graphics processing using dynamic resources
US11347698B2 (en) Garbage collection for hash-based data structures
CN110609807B (zh) 用于删除快照数据的方法、设备和计算机可读存储介质
JP6974510B2 (ja) データを処理するための方法、装置、デバイス及び媒体
CN112650577A (zh) 内存管理方法和装置
CN113407343A (zh) 一种基于资源分配的业务处理方法、装置及设备
EP0043391A1 (en) Virtual memory terminal
CN115756838A (zh) 内存释放、内存恢复方法、装置、计算机设备及存储介质
CN109923527B (zh) 可变类型建立器
CN114661557A (zh) 记录内存冷热状态的方法和装置
JP5776813B2 (ja) マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法および制御プログラム
CN106547603B (zh) 减少golang语言系统垃圾回收时间的方法和装置
JP2014170430A (ja) メモリ管理方法、データ要素回収方法とデータ要素回収プログラム、情報処理装置およびその制御方法と制御プログラム
US11113000B2 (en) Techniques for efficiently accessing values spanning slabs of memory
US20230273728A1 (en) Storage control apparatus and method
CN107562642B (zh) 检查点淘汰方法和装置
CN116955212A (zh) 内存碎片的整理方法、装置、设备及存储介质
CN115357427A (zh) 跨进程的数据拷贝方法及装置、存储介质

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