KR20010086143A - 셋톱 박스 환경에서 신뢰성있는 그래픽 메모리 동작을제공하는 방법 및 장치 - Google Patents

셋톱 박스 환경에서 신뢰성있는 그래픽 메모리 동작을제공하는 방법 및 장치 Download PDF

Info

Publication number
KR20010086143A
KR20010086143A KR1020017007987A KR20017007987A KR20010086143A KR 20010086143 A KR20010086143 A KR 20010086143A KR 1020017007987 A KR1020017007987 A KR 1020017007987A KR 20017007987 A KR20017007987 A KR 20017007987A KR 20010086143 A KR20010086143 A KR 20010086143A
Authority
KR
South Korea
Prior art keywords
video memory
graphics
memory
video
data structure
Prior art date
Application number
KR1020017007987A
Other languages
English (en)
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 파워티브이, 인코포레이티드
Publication of KR20010086143A publication Critical patent/KR20010086143A/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/20Adaptations for transmission via a GHz frequency band, e.g. via satellite
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/41Structure of client; Structure of client peripherals
    • H04N21/426Internal components of the client ; Characteristics thereof
    • H04N21/42692Internal components of the client ; Characteristics thereof for reading from or writing on a volatile storage medium, e.g. Random Access Memory [RAM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/41Structure of client; Structure of client peripherals
    • H04N21/426Internal components of the client ; Characteristics thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/443OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
    • H04N21/4435Memory management
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/44Receiver circuitry for the reception of television signals according to analogue transmission standards
    • H04N5/445Receiver circuitry for the reception of television signals according to analogue transmission standards for displaying additional information

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • Astronomy & Astrophysics (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)

Abstract

셋톱 박스 환경내에서 소정의 그래픽 관련 동작을 수행하기 위하여 그래픽 프로세스에 의해 사용되는 소정 양의 비디오 메모리를 그래픽 컴퓨터 구현 프로세스에 제공하기 위한 비디오 메모리 처리 시스템 및 방법. 그래픽 프로세스에 대하여 할당상태를 갖는 제1 비디오 메모리부가 제공된다. 비디오 메모리 처리 데이터 구조는 제1 비디오 메모리부의 할당상태를 나타낸다. 비디오 메모리 처리 데이터 구조에 접속된 비디오 메모리 관리기는 비디오 메모리 처리 데이터 구조에 기초하여 제1 비디오 메모리부를 재할당한다. 재할당된 제1 비디오 메모리부는 소정의 그래픽 관련 동작을 수행하기 위하여 그래픽 프로세스에 의해 사용된다.

Description

셋톱 박스 환경에서 신뢰성있는 그래픽 메모리 동작을 제공하는 방법 및 장치{METHOD AND APPARATUS FOR PROVIDING RELIABLE GRAPHIC MEMORY OPERATIONS IN A SET-TOP BOX ENVIRONMENT}
그래픽 애플리케이션은 그 그래픽 루틴을 원활하게 수행하기 위하여 일정량의 그래픽/비디오 메모리를 필요로 한다. 그러나, 비디오 메모리는 셋톱 박스 텔레비전 환경 내에서 크게 부족하다. 예를 들면, 셋톱 박스는 대략 2 메가바이트의 비디오 메모리를 가질 수도 있다. 몇몇 상황에서의 MPEG(Moving Pictures Experts Group) 요소가 1812 킬로바이트를 소모하여, 그래픽 애플리케이션을 위해 단지 236 킬로바이트만이 남는다. 임의의 고해상도 그래픽 애플리케이션은 화소당 16비트에 대해 600 킬로바이트 또는 화소당 8비트에 대해 300 킬로바이트를 사용한다. 이에 따라, 그래픽 애플리케이션이 그 동작을 원활하게 수행하기 위한 메모리가 이내 부족하게 되는 단점이 발생한다.
본 발명은 일반적으로 컴퓨터 비디오 메모리 관리에 관한 것으로, 특히 셋톱 박스 텔레비전 환경에서의 컴퓨터 비디오 메모리 관리에 관한 것이다.
본 발명의 추가의 이점 및 특징은, 동일 소자에 동일 부재번호가 붙여진 첨부도면과 관련하여 이하의 상세한 설명 및 첨부된 특허청구범위로부터 명백해질 것이다.
도 1은 셋톱 박스 시스템의 투시도.
도 2는 도 1의 셋톱 박스 내에서 동작하는 다양한 전형적인 프로그램을 도시한 블록도.
도 3은 핸들을 통해 비디오 메모리를 할당하기 위한 본 발명의 구성요소를 도시한 블록도.
도 4는 비디오 메모리 처리 데이터 구조에 대한 바람직한 실시예를 도시한 데이터 구조도.
도 5a-5d는 도 4의 데이터 구조도의 전형적인 데이터 구조 구현을 도시한 도면.
도 6은 핸들을 통해 비디오 메모리를 할당하기 위한 프로세스 단계를 도시한 흐름도.
도 7은 시스템 및 비디오 메모리부를 도시한 메모리 구성도.
도 8은 관리된 비디오 메모리부 및 관리되지 않은 비디오 메모리부를 도시한 메모리 구성도.
도 9는 메모리 블록 및 청크(chunk)를 도시한 메모리 구성도.
도 10은 한 블록의 메모리로부터의 서브힙(sub-heap)의 생성을 도시한 메모리 구성도.
본 발명은 상기 단점 및 기타 단점을 극복하기 위한 것이다. 본 발명에 따르면, 비디오 메모리 처리 시스템은 셋톱 박스 환경내에서 소정의 그래픽 관련 동작을 수행할 수 있도록 그래픽 프로세스에 의해 사용되는 소정 양의 비디오 메모리를 그래픽 컴퓨터 구현 프로세스에 제공한다. 그래픽 프로세스에 대해서 할당상태를 갖는 제1 비디오 메모리부가 제공된다. 비디오 메모리 처리 데이터 구조는 제1 비디오 메모리부의 할당상태를 나타낸다. 비디오 메모리 처리 데이터 구조에 접속된 비디오 메모리 관리기는 비디오 메모리 처리 데이터 구조에 기초하여 제1 비디오 메모리부를 재할당한다. 재할당된 제1 비디오 메모리부는 소정의 그래픽 관련 동작을 수행하기 위해 그래픽 프로세스에 의해 사용된다.
본 발명의 신규한 핸들기반 시스템(handle-based system)의 장점은 로크가능(lockable)하고, 이동가능하며, 소거가능하고, 또한 우선 순위를 갖는 비디오 메모리부의 핸들을 포함한다. 이들 특성은 예를 들면 최근에 가장 적게 사용된 상기 핸들과 연관된 메모리뿐만 아니라 언로크(unlock)되고, 소거가능하며, 낮은 우선 순위의 핸들의 메모리를 재할당하는 것을 허용하는 가비지(garbage) 수집구성을 구현하는 데 유용하다.
도 1은 케이블(28)을 통해 텔레비전(24)에 접속된 전형적인 셋톱 박스(20)를 도시한다. 케이블(32)은 브로드캐스트 아날로그, 브로드캐스트 디지털, 및 대화형 디지털 전송을 셋톱 박스(20)에 제공한다. 셋톱 박스(20)는 진보된 대화형 텔레비전 환경을 제공하기 위하여 애플리케이션 및 운영 체제소프트웨어를 포함한다. 운영 체제는 예컨대 애플리케이션 소프트웨어와 셋톱 박스(20)에 의해 사용되는 다양한 장치와의 사이의 인터페이스를 제공하기 위하여 셋톱 박스(20)에 의해 사용된다.
도 2는 셋톱 박스의 소프트웨어 구성을 도시한다. 셋톱 박스의 멀티태스킹 운영 체제는 셋톱 박스를 통해 전달되는 매체 중심, 실시간 애플리케이션의 고성능 요구를 처리한다. 운영 체제는 멀티미디어 콘텐트를 개발하고 브로드캐스트 및 클라이언트/서버 네트워크를 통해 소비자에게 멀티미디어 콘텐트를 전달하기 위하여 개방된 스케일러블 플랫폼(scalable platform)을 제공한다. 운영 체제를 위한 소프트웨어 아키텍처는 대화형 네트워크 설정에서 멀티미디어 처리를 최적화하고 리던던시를 최소화하도록 설계된 상호접속된 모듈의 계층을 포함한다. 이 아키텍처의 계층은 하드웨어 추상화계층(40), 코어계층(42), 애플리케이션 지원계층(44), 및 애플리케이션계층(46)을 포함한다.
멀티미디어 클라이언트와 연관된 각 하드웨어 장치는 하드웨어 추상화계층(40)에 상주하는 소프트웨어 장치 모듈로 추상화된다. 이들 장치 모듈 각각은 하드웨어 장치와 운영 체제의 잔여 부분과의 사이의 매체 전달 및 조작을 담당한다. 각 장치 모듈에 의해 지원된 애플리케이션 프로그램 인터페이스(API)는 이식가능한 운영 체제장치로부터 각 장치의 하드웨어 의존성을 분리시키고, 이에 의해 상이한 하드웨어 구현의 특유한 성질이 차단된다.
코어계층(42)에 상주하는 커널(48) 및 메모리 관리기(50)는 애플리케이션을 지원하는 데 필요한 기본 기능을 제공한다. 선점형, 멀티스레드, 멀티태스킹 커널은 셋톱 메모리 영역 및 처리 속도를 모두 최적화하도록 설계된다. 운영 체제는 사용자 장치에 상주하므로, 매우 작은 영역 (예컨대 1 메가바이트)을 갖는 ROM 기반의 시스템에 존재하도록 설계되었다. 또한, 커널은 복합 매체 유형의 고속전송, 조작, 및 디스플레이를 가능하게 하는 32 비트 RISC (Reduced Instruction Set Computer) 프로세서를 이용하도록 생성되었다.
메모리 관리기(50)는 한정된 메모리 자원으로부터 최선의 성능을 달성하도록 효율적인 할당방식을 제공한다. 메모리 관리기(50)는 효율적인 메모리 할당방식을 제공하여, 한정된 셋톱 메모리 자원으로부터 최적의 성능을 달성하게 한다. 메모리 관리기(50)는 재할당가능, 소거가능 메모리의 공유를 가능하게 함으로써 애플리케이션이 메모리가 부족하게 되는 것을 방지한다. 메모리 관리기(50)는 애플리케이션 지원계층(44) 내에 포함된 선 그리기 그래픽 애플리케이션과 같은 그래픽 애플리케이션에 의해 사용되는 비디오 메모리의 할당 및 소거를 관리하기 위해 제공된다. 본 발명에 있어서, 그래픽과 비디오라는 용어는 상호교환가능하게 사용된다.
코어계층(42)은 통합 이벤트 시스템(52) 및 표준집합의 ANSI C 유틸리티 기능을 제공한다. 코어계층(42)의 상부에 애플리케이션 지원계층(44)이 탑재된다. 이 지원모듈군은 고급 처리기능과 애플리케이션 서비스를 제공한다. 애플리케이션관리, 세션관리, 및 튜너관리가 이들 서비스의 몇가지 예이다. 최상의 애플리케이션 레벨(46)에서, 상주 애플리케이션이라 불리는 적어도 하나의 애플리케이션은 통상적으로 셋톱 박스 상에서항상 실행하고 있다. 애플리케이션 레벨(46)은 또한 애플리케이션을 저작하고 상주 애플리케이션과 셋톱 박스상에 상주하는 다른 백그라운드 애플리케이션과의 사이의 자원 (예컨대 튜너)을 관리하기 위해 필요한 능력을 제공한다.
도 3은 그래픽 동작을 수행하기 위하여 힙(102)으로부터 일정량의 비디오 메모리를 필요로 하는 그래픽 애플리케이션(100)을 도시한다. 그래픽 애플리케이션(100)은 2 힙 시스템, 즉 중앙 처리 장치(103)에 의한 사용을 위한 제1 힙(101), 및 그래픽 애플리케이션(100)과 그래픽 프로세서(105)에 의한 사용을 위한 제2 힙(102)의 환경에서 동작한다. 본 발명의 바람직한 실시예는 두개의 프레임 버퍼를 갖는 시스템 내에서 사용된다. 하나의 프레임 버퍼는 실제로 보이는 것이고 다른 프레임 버퍼는 그래픽 동작이 제안되는 곳이다 (예컨대 텍스트와 라인을 그리는 동작으로서, 사용자가 이 동작을 보지 않게 하는 것이 바람직하다). 또한, 바람직한 실시예는 CPU(103)에 접속되지 않고 그래픽 프로세서(105)에 접속되는 그래픽 메모리(102)를 포함한다.
그래픽 애플리케이션(100)은 비디오 메모리 할당기(104)를 호출함으로써 메모리를 할당한다. 그래픽 애플리케이션(100)은 필요한 메모리의 크기뿐만 아니라 메모리를 할당할 힙을 지정한다. 비디오 메모리 할당기(104)는 핸들을 새로 할당된 메모리로 복귀시킨다. 비디오 메모리 할당기(104)는 또한 이 메모리를 0으로 초기화한다. 핸들은 또한 블록(105)에 의해 도시된 바와 같이 애플리케이션 스레드 사이에서 공유가능하고 애플리케이션 사이에서 공유가능하다. 핸들은 메모리부가 재정렬되고 크기변경되게 한다.
비디오 메모리 할당기(104)는, 지정된 핸들과 연관된 메모리가 할당된 힙, 지정된 핸들과 연관된 메모리의 크기, 및 지정된 핸들이 유효한지의 여부에 대한 정보를 그래픽 애플리케이션에 제공한다.
비디오 메모리 할당은 또한 힙 무결성(integrity) 검증을 제공한다. 자유 메모리는 패턴으로 채워지는 것이 바람직하다. 힙의 무결성을 검증할 때 수행하는 메모리 관리 태스크 중 하나로서, 메모리 관리기는 자유 메모리에서의 패턴이 변경되지 않았음을 점검한다. 오버헤드가 힙 자체로부터 할당되는 힙과는 달리, 핸들과 연관된 오버헤드는 비디오 메모리 할당기(104)에 의해 지정된 메모리에 추가하여 할당된다.
비디오 메모리 할당기(104)는 핸들을 비디오 메모리의 부분들과 연관시키기 위하여 신규한 비디오 메모리 처리 데이터 구조(106)를 사용한다. 비디오 메모리 처리 데이터 구조(106)는 필요한 메모리의 양을 그래픽 애플리케이션(100)에 제공하기 위하여 비디오 관리기(50)가 메모리 부분("데이터 청크"라고도 함)을 재정렬할 수 있는 메커니즘을 제공한다.
바람직한 실시예에서, 비디오 메모리 압축기(108)는 일정량의 비디오 메모리에 대한 요구를 충족시키기 위하여 핸들을 통해 비디오 메모리 부분을 재할당 (시프트/압축)한다. 예를 들면, 비디오 메모리 압축기(108)는 제1 비디오 메모리부(114)가 제2 비디오 메모리(116)에 대해서 재할당되도록 제1 메모리부(114)를 그 핸들을 통해 시프트할 수 있다. 이러한 재할당은 그래픽 애플리케이션(100)의 메모리 요구를 충족시키기 위하여 충분한 비디오 메모리를 구성할수도 있다. 압축은 시간이 걸리므로, 힙은 디폴트에 의해 그 자신을 자동적으로 압축하지 않는 것이 바람직하다. 대안의 실시예에서, 비디오 메모리 압축기(108)는 제1 메모리부(114)를 그 핸들을 통해 시프트하여, 제1 비디오 메모리부(114)가 제2 비디오 메모리(116)와 연속적이도록 재할당될 수 있다.
애플리케이션은 비디오 메모리 압축기(108)를 호출함으로써 하나의 힙 비디오 메모리부에서 다른 힙 비디오 메모리부로 데이터를 이동시킨다. 메모리 핸들 자체는 이동하지 않고, 핸들과 연관된 데이터만 이동한다. 또한, 애플리케이션은 지정된 핸들과 연관된 메모리부의 크기를 변경할 수 있다.
압축후 충분한 양의 메모리가 아직도 비디오 메모리 충족 상태 결정기(video memory sufficiency determinator)(109)에 의해 결정된만큼 사용불가능하면, 본 발명은 비디오 메모리 소거기(110) 및 비디오 메모리 처리 데이터 구조(106)를 사용하여 낮은 우선 순위를 갖는 핸들부터 시작하여 핸들을 소거한다. 핸들과 연관된 메모리는 이 핸들이 로크(lock)되면 바람직한 실시예에서 소거될 수 없다.
소거가능 핸들을 사용하기 전에, 그것이 여전히 존재함을 확인하는 것이 바람직하다. 애플리케이션은 이와 같이 나타냄으로써 소거가능한 핸들을 비디오 메모리 소거기(110)에 설정한 후에 이에 따라서 비디오 메모리 처리 데이터 구조(106)를 업데이트한다.
핸들의 소거 우선 순위는 모든 할당된 메모리에 대한 핸들의 메모리의 중요성을 정의한다. 바람직한 실시예에서는, 핸들의 디폴트 소거 우선 순위를 4로 설정한 상태에서, 우선 순위는 0부터 15까지의 범위이다. 핸들의 소거 우선 순위가낮을수록, 핸들과 연관된 메모리는 더 잘 소거될 것이다.
본 발명의 바람직한 실시예는 핸들의 디폴트 우선 순위가 그래픽 애플리케이션에 의해 수정되게 한다. 또한, 애플리케이션은 이 핸들을 소거될 메모리로 전달하고 응답으로 비디오 메모리 소거기(110)로부터 기능의 성부(成否)를 나타내는 불(boolean)을 획득함으로써 메모리를 명확히 소거할 수 있다.
핸들 로크(handle lock) 메커니즘(112)은 핸들의 로크 및 언로크를 관리하고 실행중인 로크 카운트를 유지하기 위해 제공된다. 그래픽 애플리케이션이 메모리를 사용하는 동안에 메모리가 이동되거나, 소거되거나, 또는 액세스되지 않음을 보장하기 위해, 핸들 로크 메커니즘(112)은 메모리와 연관된 핸들을 로크하는 능력을 애플리케이션에 제공한다. 그래픽 애플리케이션은 로크될 핸들을 핸들 로크 메커니즘(112)으로 전달함으로써 핸들을 로크한다. 바람직하게는, 그래픽 애플리케이션은 동작 완료시에 핸들을 언로크한다.
내포된(nested) 로크는 하나 이상의 애플리케이션 또는 애플리케이션 스레드가 핸들 로크 메커니즘(112)을 동일한 핸들로 사용할 때 발생한다. 핸들 로크 메커니즘(112)은 이 상황에 대한 로크 카운트를 유지하는데, 이 값은 핸들 로크 메커니즘(112)으로부터 그래픽 애플리케이션에 의해 검색될 수 있다. 핸들 로크 카운트는 지정된 핸들상에서 이루어진 기능 호출의 로크 횟수를 나타낸다. 이 핸들을 언로크하는 핸들 로크 메커니즘(112)에 대한 각각의 기능 호출에 대해, 로크 카운트가 1씩 감분된다.
비디오 메모리 할당기(104)는 핸들을 삭제하기 위해 제공되기도 한다. 핸들의 삭제는 핸들을 소거하는 것과는 다르다. 핸들을 소거하는 것은 핸들이 관계하는 데이터만을 삭제하는 반면, 핸들을 삭제하는 것은 핸들 자체뿐만 아니라 핸들이 관계하는 데이터도 삭제한다. 또한, 소거된 핸들과 달리, 핸들이 일단 삭제되면, 핸들은 더 이상 사용될 수 없다. 삭제된 핸들을 참조하는 애플리케이션은 메모리 관리기(50)가 예외를 만들지 않게 할 것이다. 바람직하게는, 애플리케이션은 핸들이 더 이상 필요하지 않을 때 모든 크기, 심지어 0 (영)의 핸들도 삭제한다.
도 4는 힙 비디오 메모리에 대한 할당을 계속 추적하기 위해 사용된 신규한 비디오 메모리 처리 데이터 구조(106)에 대한 바람직한 실시예를 도시한다. 비디오 메모리 처리 데이터 구조(106)는 식별데이터 필드(150)를 포함한다. 바람직하게는, 식별데이터 필드(150)는 길이가 16비트이고 2개의 ASCII 문자로 포맷되어, 핸들 청크는 "HC", 데이터 청크는 "DC", 또는 포인터 청크는 "PC" 와 같이, 어떤 종류의 데이터 청크가 존재하는지 힙이 한 눈에 검사되고 결정될 수 있다.
로크 카운트 필드(152)는 핸들이 몇번 로크되었는지에 대한 카운트를 저장한다. 이 카운트가 0 이면, 핸들은 언로크되고 데이터 청크부는 다른 할당을 수용하도록 이동될 수 있다. 로크 카운트는 정수인 것이 바람직한데, 이것은 핸들을 로크하는 컴퓨터 구현 프로세스가 이 프로세스가 종료될 때 핸들을 언로크하는 한 핸들이 여러번 로크되게 한다.
소거 우선 순위 필드(154)에 대해, 메모리 관리기가 할당 동안 메모리가 부족하면, 소거 우선 순위 필드(154)에 저장된 우선 순위의 순서에 의해 소거가능한 핸들을 소거한다. 이 접근법은, 핸들내의 데이터가 재생성하기 쉽지만 메모리 (낮은 우선 순위)가 많으면 갖기 편리하거나, 또는 재생성하기 어렵지만 사용자가 MPEG 디지털 비디오 채널을 조정하는 상황에서처럼 메모리에 대한 긴급한 필요가 존재하면 소거가능하거나 어느 하나를 메모리 관리기가 선택하게 한다.
소거가능 필드(156)는 핸들이 소거가능한지를 나타낸다 (즉, 핸들이 로크되지 않으면 핸들은 소거가능하다). 공유가능 필드(158)는 핸들이 컴퓨터 프로세스들 사이에서 공유가능한지를 나타낸다.
온 소거가능 리스트 필드(on purgeable list field)(160)에 대해, 소거가능한 것으로 표시된 핸들이 최초로 언로크될 때 (즉, 로크 카운트가 1에서 0으로 진행), 핸들은 소거가능 리스트 상에 놓이고, 할당이 실패할 때, 메모리 관리기는 어떤 데이터 청크가 소거를 위한 후보인지를 신속히 결정할 수 있다. 핸들이 이미 언로크되고 "언로크"가 다시 호출되면, 이 플래그는 메모리 관리기가 핸들이 이미 그 위에 있는지를 알아보기 위하여 소거가능 리스트를 체크할 필요가 없게 한다. 로크된 핸들을 로크하는 것에 대해, 이 플래그는 메모리 관리기가 리스트를 서치하고 다시 리스트로부터 핸들을 제거하려 하는 것을 방지한다.
힙 필드(164)는 핸들의 데이터 청크를 포함하는 힙에 대한 기준이다. 크기 필드(166)는 데이터 청크의 바이트에서의 크기이다. 이 필드는 다음 데이터 청크가 어디서 시작하는지를 결정하고 힙 압축을 위해 메모리부를 시프트할 때 메모리에서의 개방 스폿이 이 데이터 청크를 이동시키기에 충분히 큰지를 결정하기 위해 사용된다.
데이터 청크 필드에 대한 포인터(168)는 핸들이 계속 추적하는 실제데이터에대한 포인터이다. 소거가능 리스트에 대한 포인터(170)는 핸들의 리스트이고, 이는 소거가능한 것으로 표시되고 언로크된다. cbfunc 필드(170)는 콜백기능 포인터를 핸들에 제공한다. 사용자 데이터 필드(172)는 핸들의 임의 사용자 데이터에 제공된다.
도 5a-5d는 도 4의 비디오 메모리 처리 데이터 구조(106)의 바람직한 구현의 일례를 도시한다.
도 6은 비디오 메모리 처리에 연관된 프로세스 단계를 도시한다. 시작표시블록(230)은 프로세스 블록(234)이 실행됨을 나타낸다. 프로세스 블록(234)은 그래픽 애플리케이션이 일정량의 그래픽 메모리를 필요로하고 메모리 관리기로부터 메모리를 요구한다는 것을 나타낸다.
메모리 관리기는 메모리 처리 데이터 구조를 통해 할당된 메모리와 자유 메모리를 모두 계속 추적하므로, 프로세스 블록(235)에서의 메모리 관리기는 메모리 처리 데이터 구조를 사용하여 사용가능한 비디오 메모리 (바람직하게는, 연속적인 비디오 메모리이지만, 여기에 한정되는 것은 아님)를 할당하려고 시도한다. 바람직한 실시예에서, 메모리 관리기는 두가지 메모리 할당 알고리즘, 즉 최초 적합(first fit) 및 최선 적합(best fit)을 사용한다. 디폴트로, 메모리 관리기는 최초 적합 알고리즘을 사용한다.
프로세스 블록(236)에 의해 표시된 최초 적합 메모리 할당방식에 대해, 메모리 관리기는 자유 메모리의 그 리스트를 트래버스(traverse)하고 할당 요구를 만족하는 첫번째 메모리를 선택한다. 프로세스 블록(237)으로 표시된 최선 적합 메모리 할당방식은 할당 요구의 크기에 가장 가까운 메모리를 발견하기 위해 자유 메모리의 전체 리스트를 트래버스하는 시스템을 포함한다. 힙이 일단 존재하면, 애플리케이션은 메모리 관리기가 그 힙을 관리할 때 사용하기 위하여 이들 메모리 할당 알고리즘 중의 어느 것이 더 나은가를 선택할 수 있다. 이 바람직한 접근법은 애플리케이션의 메모리 사용, 셋톱의 유형, 셋톱 메모리의 크기, 및 셋톱의 중앙 처리 장치(CPU)의 속도에 따라 상이한 알고리즘의 사용을 위해 제공된다.
결정 블록(238)은, 핸들을 통한 그래픽 메모리부의 "시프트"없이 또는 요구되는 소거없이 그래픽 애플리케이션 요구를 처리하기에 충분한 비디오 메모리가 존재하는지를 문의한다. 충분한 메모리가 이미 존재하면, 처리는 종료 블록(270)에서 종료한다. 그러나, 충분한 비디오 메모리가 없으면, 처리는 프로세스 블록(242)으로 진행한다.
프로세스 블록(242)에서, 메모리 관리기는 신규한 메모리 처리 데이터 구조에 저장된 핸들을 사용하여 비디오 메모리를 재할당한다. 그후 결정 블록(246)에서의 메모리 관리기는 그래픽 애플리케이션 비디오 메모리 요구를 처리하기에 충분한 비디오 메모리가 존재하는지를 문의한다. 충분한 양이 존재하면, 처리는 종료 블록(270)에서 종료한다. 충분한 비디오 메모리가 존재하지 않으면, 처리는 프로세스 블록(250)으로 진행한다.
프로세스 블록(250)에서, 메모리 관리기는 소거가능한 것으로 표시된 것과 최저의 소거 우선 순위로부터 시작하여 핸들을 소거한다. 충분한 비디오 메모리가 결정 블록(254)에 의해 결정된대로 사용가능하면, 처리는 종료 블록(270)에서 종료한다. 그러나, 소거 프로세스 후에도 충분한 메모리가 사용가능하지 않으면, 프로세스 블록(258)은 포그라운드 온 스크린 디스플레이(foreground on-screen display)를 디스에이블 상태로 하고, 프로세스 블록(262)은 프레임 버퍼를 언로크한다. 프로세스 블록(266)은 애플리케이션이 현재 연관된 임의의 비디오 메모리를 비우라는 요구와 함께 모든 애플리케이션에 대해 이벤트를 전송한다. 충분한 비디오 메모리양이 그래픽 애플리케이션에 제공되었다는 결과와 함께 처리는 종료 블록(270)에서 종료한다.
도 7-10은 본 발명의 바람직한 실시예에서 사용된 힙 메모리를 설명한다. 도 7을 참조하면, 메모리 관리기는 두개의 주요 힙, 즉 시스템 메모리 힙(300) 및 비디오 메모리 힙(304)으로 구성된 통합된 메모리 시스템을 가능하게 한다. 비디오 메모리 힙(304)으로부터 메모리를 할당하는 것은 어떤 데이터가 저장되던지간에 비디오 카드에 액세스가능하고 따라서 화면상에 표시될 수 있음을 보장한다. 애플리케이션이 어느 힙으로부터 메모리를 할당하기를 원하는지를 지정할 기회가 애플리케이션에 주어진다. 애플리케이션이 우선 순위를 지정하지 않으면, 운영 체제는 애플리케이션을 위해 결정한다.
도 8을 참조하면, 힙은 관리된 메모리(310) 및 관리되지 않은 메모리(314)를 모두 포함한다. 관리된 메모리(310)는 할당된 메모리이다. 이와 대조적으로, 관리되지 않은 메모리(314)는 할당되지 않은 메모리이다. 힙의 브레이크(318)는 관리되지 않은 메모리(314)로부터 관리된 메모리(310)를 분리한다.
도 9를 참조하면, 관리된 메모리(310)는 블록(예컨대, 블록(320))으로 분할되고, 블록은 청크(예컨대, 청크(324))로 분할된다. 하나 이상의 연속적인 청크의 메모리로 구성된 각 블록은 애플리케이션에 의해 소유된다. 예를 들면, 최초 애플리케이션은 블록(320)을 소유한다.
애플리케이션이 포인터 또는 핸들을 할당하는 최초에, 시스템은 요구된 포인터 또는 핸들을 할당하는 애플리케이션 및 이 애플리케이션을 위해 향후 할당을 하는 애플리케이션을 위해 메모리 블록을 보유한다. 애플리케이션이 매우 작은 양 (보통 32 바이트 이하)의 메모리를 할당하면, 이 할당은 작고 정해진 크기의 블록으로부터 이루어진다. 그렇지 않으면, 블록 및 청크는 전형적으로 미리 정해진 크기가 아니다.
바람직한 실시예에서, 메모리 관리기는 메모리 관리 유닛(MMU)을 지원하는데, 이것은 애플리케이션의 논리적으로 연속적인 메모리 어드레스를 실제의 물리적인 메모리 어드레스로 매핑한다. 힙이 구성되는 방식은, 그 블록이 그 배치내에 상주함을 보장함으로써 메모리 관리기가 MMU 배치 요건을 충족할 수 있게 하는데, 이것은 메모리 소유권의 하드웨어 실행을 제공한다.
메모리 관리기는 임의의 힙을 소유하지 않는 것이 바람직하다. 그보다는, 운영 체제는 크기뿐만 아니라 힙의 개시를 표시하는 메모리 어드레스를 지정함으로써 초기화 시각에서 시스템 및 비디오 메모리 힙을 생성한다. 이 기능은 포인터를 새롭게 생성된 힙으로 복귀시킨다.
전형적으로, 애플리케이션은 본 발명의 분야내에서 서브힙이라 불리는 그 자신의 힙을 생성하지 않는다. 전형적으로, 애플리케이션은 포인터 및 핸들을 할당하여, 시스템에 의해 생성된 힙 중 어느 하나를 참조한다.
서브힙은 애플리케이션들 사이에서 메모리에 대한 경쟁뿐만 아니라 분열을 감소시킨다. 메모리 관리기는 서브힙(및 서브힙 내의 서브힙)에 대한 지원을 제공하는데, 이것은 시스템 힙으로부터 할당되고, 이들을 생성하는 애플리케이션에 의해 소유되며, 메모리 관리기에 의해 유지된다. 예를 들면, 도 10에 도시된 바와 같이, 메모리 관리기는 블록(336)으로부터 오버헤드(328) 및 서브힙(332)을 생성한다.
애플리케이션은 먼저 서브힙이 메모리 관리기를 호출함으로써 생성되도록 시스템 힙으로부터 메모리를 할당한다. 메모리 관리기는 새로운 서브힙으로 참조를 복귀시킨다.
서브힙을 삭제하기 위하여, 애플리케이션은 메모리 관리기를 호출하여 힙을 삭제한 후에 이 삭제된 힙에 대한 포인터 또는 핸들을 삭제시킨다. 그후 메모리 관리기는 서브힙에 의해 사전에 점유된 메모리의 부분을 할당된 비디오 힙 또는 시스템으로 복귀시킨다. 바람직하게는, 애플리케이션은 시스템 및 비디오 힙을 삭제해서는 안된다.
힙 (또는 서브힙)을 유지하는 데 필요한 오버헤드는 힙 자체로부터 할당된다. 이 바람직한 접근법은 할당가능한 힙 공간의 양이 힙에서 이 힙을 유지하는 데 필요한 오버헤드를 뺀 크기와 동일함을 나타낸다. 메모리 관리기는 지정된 크기의 힙을 유지하기 위해 필요한 오버헤드의 양을 결정한다.
메모리 관리기는 시스템에 의해 생성되었든지 또는 애플리케이션에 의해 생성되었든지간에 모두는 아니지만 대부분의 힙을 관리할 책임이 있다. 힙 관리는 존재하는 메모리 범위 및 가지고 있을지도 모르는 임의의 특별한 속성을 계속 추적하는 작업을 포함한다.
상술한 실시예는 예시의 목적으로 설명된 것이며 본 발명을 한정하고자 함이 아니다. 첨부된 특허청구범위에서 정의된 본 발명의 사상 및 범위에서 벗어남없이 본 명세서에서 설명된 실시예에 대한 다양한 변경과 수정이 이루어질 수 있음은 당업자에게 이해될 것이다.

Claims (28)

  1. 셋톱 박스 환경내에서 소정의 그래픽 관련 동작을 수행하기 위하여 그래픽 컴퓨터 구현 프로세스에 상기 그래픽 프로세스에 의해 사용되는 소정 양의 비디오 메모리를 제공하기 위한 비디오 메모리 처리 시스템에 있어서,
    상기 그래픽 프로세스에 대하여 할당상태를 갖는 제1 비디오 메모리부;
    상기 제1 비디오 메모리부의 할당상태를 나타내는 비디오 메모리 처리 데이터 구조;
    상기 비디오 메모리 처리 데이터 구조에 접속되어 상기 비디오 메모리 처리 데이터 구조에 기초하여 상기 제1 비디오 메모리부를 재할당하기 위한 비디오 메모리 관리기를 포함하며,
    상기 재할당된 제1 비디오 메모리부는 상기 소정의 그래픽 관련 동작을 수행하기 위하여 상기 그래픽 프로세스에 의해 사용되는 비디오 메모리 처리 시스템.
  2. 제1항에 있어서,
    상기 비디오 메모리 처리 데이터 구조는 상기 제1 메모리부와 연관된 핸들(handle)을 포함하고, 상기 핸들은 상기 제1 비디오 메모리부를 재할당하기 위한 상기 비디오 메모리 관리기에 의해 사용되는 비디오 메모리 처리 시스템.
  3. 제1항에 있어서,
    제1 그래픽 컴퓨터 구현 프로세스는 소정의 그래픽 관련 동작을 수행하기 위해 소정 양의 비디오 메모리를 필요로하고,
    제2 그래픽 컴퓨터 구현 프로세스는 소정의 그래픽 관련 동작을 수행하기 위해 소정 양의 비디오 메모리를 필요로하며,
    상기 비디오 메모리 처리 데이터 구조는 상기 제1 비디오 메모리 할당과 연관된 제1 소거 우선 순위를 포함하고,
    상기 비디오 메모리 관리기는 상기 제1 소거 우선 순위에 기초하여 상기 제1 비디오 메모리 할당을 소거하며,
    상기 제1 비디오 메모리는 상기 제2 프로세스에 재할당되는 비디오 메모리 처리 시스템.
  4. 제3항에 있어서,
    상기 메모리 관리기는 상기 제1 메모리부를 재할당하기 전에 비디오 메모리를 상기 그래픽 프로세스에 할당하기 위하여 메모리 할당 적합 수단(memory allocation fit means)을 사용하는 비디오 메모리 처리 시스템.
  5. 제1항에 있어서,
    상기 메모리 관리기는 상기 제1 메모리부를 재할당하기 전에 비디오 메모리를 상기 그래픽 프로세스에 할당하기 위하여 메모리 할당 적합 수단을 사용하는 비디오 메모리 처리 시스템.
  6. 제5항에 있어서,
    상기 소정의 메모리 할당 수단은 최초 적합 수단(first fit means), 최선 적합 수단(best fit means), 및 그 조합으로 구성된 그룹으로부터 선택되는 비디오 메모리 처리 시스템.
  7. 제5항에 있어서,
    상기 그래픽 관련 동작을 수행하기 위하여 충분한 비디오 메모리가 상기 그래픽 프로세스에 사용가능한지를 결정하기 위한 비디오 메모리 충족 상태 결정기를 더 포함하고,
    상기 메모리 관리기가 상기 비디오 메모리 충족 상태 결정기에 접속되어 상기 메모리 관리기가 상기 메모리 할당 적합 수단을 사용한 후에 상기 비디오 메모리 충족 상태 결정기가 불충분한 비디오 메모리가 존재하는 것으로 결정하면 상기 제1 비디오 메모리부를 재할당하는 비디오 메모리 처리 시스템.
  8. 제7항에 있어서,
    상기 셋톱 박스는 포그라운드 온 스크린 디스플레이(foreground on-screen display)를 포함하고, 상기 메모리 관리기가 상기 제1 비디오 메모리부를 재할당한 후에 상기 비디오 메모리 충족 상태 결정기가 불충분한 비디오 메모리가 존재한다고 결정하면 상기 포그라운드 온 스크린 디스플레이는 디스에이블 상태로 되는 비디오 메모리 처리 시스템.
  9. 제7항에 있어서,
    상기 셋톱 박스는 프레임 버퍼를 포함하고, 상기 메모리 관리기가 상기 제1 비디오 메모리부를 재할당한 후에 상기 비디오 메모리 충족 상태 결정기가 불충분한 비디오 메모리가 존재한다고 결정하면 상기 프레임 버퍼는 언로크되는 비디오 메모리 처리 시스템.
  10. 제7항에 있어서,
    상기 메모리 관리기는 상기 셋톱 박스 내에서 동작하는 애플리케이션에 상기 애플리케이션에 할당된 비디오 메모리를 비우도록 상기 애플리케이션에 대해 요구하는 이벤트를 전송하고, 상기 메모리 관리기가 상기 제1 비디오 메모리부를 재할당한 후에 상기 비디오 메모리 충족 상태 결정기가 불충분한 비디오 메모리가 존재한다고 결정할 때 상기 메모리 관리기는 상기 요구를 제공하는 비디오 메모리 처리 시스템.
  11. 제1항에 있어서,
    상기 비디오 메모리 처리 데이터 구조는 상기 그래픽 프로세스가 상기 소정의 그래픽 관련 동작을 수행하는 때를 나타내기 위하여 로크필드를 포함하는 비디오 메모리 처리 시스템.
  12. 제1항에 있어서,
    제1 및 제2 그래픽 컴퓨터 구현 프로세스는 각각 제1 및 제2 소정의 그래픽 관련 동작을 수행하며, 상기 제1 및 제2 프로세스는 그 각각의 그래픽 관련 동작을 수행하기 위하여 제3 비디오 메모리부를 사용하고,
    상기 비디오 메모리 처리 데이터 구조는 상기 제1 및 제2 그래픽 프로세스가 상기 각각의 제1 및 제2 그래픽 관련 동작을 수행하는 때를 나타내기 위하여 로크 카운트를 포함하는 비디오 메모리 처리 시스템.
  13. 제12항에 있어서,
    상기 비디오 메모리 관리기는 상기 제1 그래픽 프로세스가 그 각각의 그래픽 관련 동작을 수행할 때 상기 로크 카운트를 증분하고, 상기 비디오 메모리 관리기는 상기 제2 그래픽 프로세스가 그 각각의 그래픽 관련 동작을 수행할 때 상기 로크 카운트를 증분하는 비디오 메모리 처리 시스템.
  14. 제13항에 있어서,
    상기 비디오 메모리 관리기는 상기 제1 그래픽 프로세스가 그 각각의 그래픽 관련 동작을 완료할 때 상기 로크 카운트를 감분시키고, 상기 비디오 메모리 관리기는 상기 제2 그래픽 프로세스가 그 각각의 그래픽 관련 동작을 완료할 때 상기 로크 카운트를 감분시키는 비디오 메모리 처리 시스템.
  15. 중앙 처리 장치 및 그래픽 프로세서를 구비한 셋톱 박스 환경내에서 소정의 그래픽 관련 동작을 수행하기 위하여 그래픽 컴퓨터 구현 프로세스에 상기 그래픽 컴퓨터 구현 프로세스에 의해 사용되는 소정 양의 비디오 메모리를 제공하기 위한 비디오 메모리 처리 방법에 있어서,
    상기 중앙 처리 장치(CPU)에 의한 사용을 위해 제1 힙을 제공하는 단계;
    상기 그래픽 프로세서에 의한 사용을 위해 제2 힙을 제공하는 단계;
    상기 그래픽 프로세스에 대해 할당상태를 갖는 상기 제2 힙 내에 제1 비디오 메모리부를 제공하는 단계;
    상기 제1 비디오 메모리부의 할당상태를 나타내기 위하여 비디오 메모리 처리 데이터 구조를 제공하는 단계; 및
    상기 비디오 메모리 처리 데이터 구조에 접속되어 상기 비디오 메모리 처리 데이터 구조에 기초하여 상기 제1 비디오 메모리부를 재할당하기 위한 비디오 메모리 관리기를 제공하는 단계를 포함하고,
    상기 재할당된 제1 비디오 메모리부는 상기 소정의 그래픽 관련 동작을 수행하기 위하여 상기 그래픽 프로세스에 의해 사용되는 방법.
  16. 제15항에 있어서,
    상기 비디오 메모리 처리 데이터 구조 내에 핸들을 제공하는 단계;
    상기 핸들을 상기 제1 비디오 메모리부와 연관시키는 단계; 및
    상기 제1 메모리부가 상기 제1 비디오 메모리부에 의해 사용가능하도록 상기 핸들을 통해 상기 제1 비디오 메모리부를 재할당하는 단계를 더 포함하는 방법.
  17. 제15항에 있어서,
    제1 그래픽 컴퓨터 구현 프로세스는 소정의 그래픽 관련 동작을 수행하기 위하여 소정 양의 비디오 메모리를 필요로 하고,
    제1 비디오 메모리 할당을 생성하도록 상기 비디오 메모리 처리 데이터 구조를 통해 제2 그래픽 컴퓨터 구현 프로세스를 제2 비디오 메모리부에 할당하는 단계;
    상기 비디오 메모리 처리 데이터 구조 내에 제1 소거 우선 순위를 제공하는 단계;
    상기 제1 소거 우선 순위를 상기 제1 비디오 메모리 할당과 연관시키는 단계;
    상기 제1 소거 우선 순위에 기초하여 상기 제1 비디오 메모리 할당을 소거하는 단계; 및
    상기 제1 비디오 메모리부를 상기 제2 프로세스에 재할당하는 단계를 더 포함하는 방법.
  18. 제17항에 있어서,
    제2 비디오 메모리 할당을 생성하도록 상기 비디오 메모리 처리 데이터 구조를 통해 제3 그래픽 컴퓨터 구현 프로세스를 제4 메모리부에 할당하는 단계;
    상기 비디오 메모리 처리 데이터 구조 내에 제2 소거 우선 순위를 제공하는 단계;
    상기 제2 소거 우선 순위를 상기 제2 비디오 메모리 할당과 연관시키는 단계;
    상기 제2 소거 우선 순위보다 낮은 우선 순위인 상기 제1 소거 우선 순위에 기초하여 상기 제1 비디오 메모리 할당을 소거하는 단계; 및
    상기 제1 비디오 메모리를 상기 제2 프로세스에 재할당하는 단계를 더 포함하며,
    상기 제1 및 제2 소거 우선 순위는 우선 순위의 단계를 나타내는 레벨을 갖는 방법.
  19. 제15항에 있어서,
    상기 제1 메모리부를 재할당하기 전에 메모리 할당 적합 메커니즘을 통해 비디오 메모리를 상기 그래픽 프로세스에 할당하는 정도를 더 포함하는 방법.
  20. 제19항에 있어서,
    상기 소정의 메모리 할당 메커니즘은 최초 적합 수단, 최선 적합 수단, 및 그 조합으로 구성된 그룹으로부터 선택되는 방법.
  21. 제19항에 있어서,
    상기 그래픽 관련 동작을 수행하기 위하여 충분한 비디오 메모리가 상기 그래픽 프로세스에 사용가능한지를 결정하는 단계; 및
    상기 메모리 관리기가 상기 메모리 할당 적합 수단을 사용한 후에 상기 비디오 메모리 충족 상태 결정기가 불충분한 비디오 메모리가 존재한다고 결정하면 상기 제1 비디오 메모리부를 재할당하는 단계를 더 포함하는 방법.
  22. 제19항에 있어서,
    상기 셋톱 박스는 포그라운드 온 스크린 디스플레이를 포함하고,
    상기 제1 비디오 메모리부를 재할당한 후에 불충분한 비디오 메모리가 존재하면 상기 포그라운드 온 스크린 디스플레이를 디스에이블시키는 단계를 더 포함하는 방법.
  23. 제21항에 있어서,
    상기 셋톱 박스는 프레임 버퍼를 포함하고,
    상기 제1 비디오 메모리부를 재할당한 후에 불충분한 비디오 메모리가 존재하면 상기 프레임 버퍼를 언로크하는 단계를 더 포함하는 방법.
  24. 제21항에 있어서,
    상기 셋톱 박스 내에서 동작하는 애플리케이션에 상기 애플리케이션에 할당된 비디오 메모리를 비우도록 상기 애플리케이션에 대해 요구하는 이벤트를 전송하는 단계를 더 포함하며, 상기 이벤트는 상기 제1 비디오 메모리부를 재할당한 후에 불충분한 비디오 메모리가 존재하면 전송되는 방법.
  25. 제15항에 있어서,
    상기 그래픽 프로세스가 상기 소정의 그래픽 관련 동작을 수행하는 때를 나타내기 위하여 상기 비디오 메모리 처리 데이터 구조 내에 로크필드를 제공하는 단계를 더 포함하는 방법.
  26. 제15항에 있어서,
    제3 비디오 메모리부를 사용하여 제1 및 제2의 소정의 그래픽 관련 동작을 수행하는 단계; 및
    상기 제1 및 제2 그래픽 동작이 수행되는 때 및 상기 제1 및 제2 그래픽 동작이 완료된 때를 나타내기 위하여 상기 비디오 메모리 처리 데이터 구조 내에 로크필드를 제공하는 단계를 더 포함하는 방법.
  27. 제26항에 있어서,
    상기 제1 그래픽동작이 수행되는 때에 상기 로크 카운트를 증분하는 단계; 및
    상기 제2 그래픽동작이 수행되는 때에 상기 로크 카운트를 증분하는 단계를더 포함하는 방법.
  28. 제27항에 있어서,
    상기 제1 그래픽 동작이 완료한 때에 상기 로크 카운트를 감분하는 단계; 및
    상기 제2 그래픽 관련 동작이 완료한 때에 상기 로크 카운트를 감분하는 단계를 더 포함하는 방법.
KR1020017007987A 1998-12-23 1999-12-17 셋톱 박스 환경에서 신뢰성있는 그래픽 메모리 동작을제공하는 방법 및 장치 KR20010086143A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/220,305 US6300962B1 (en) 1998-12-23 1998-12-23 Method and apparatus for providing reliable graphic memory operations in a set-top box environment
US09/220,305 1998-12-23
PCT/US1999/030245 WO2000040004A1 (en) 1998-12-23 1999-12-17 Method and apparatus for providing reliable graphic memory operations in a set-top box environment

Publications (1)

Publication Number Publication Date
KR20010086143A true KR20010086143A (ko) 2001-09-07

Family

ID=22823012

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020017007987A KR20010086143A (ko) 1998-12-23 1999-12-17 셋톱 박스 환경에서 신뢰성있는 그래픽 메모리 동작을제공하는 방법 및 장치

Country Status (4)

Country Link
US (1) US6300962B1 (ko)
EP (1) EP1142308A1 (ko)
KR (1) KR20010086143A (ko)
WO (1) WO2000040004A1 (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7106338B1 (en) * 2000-03-16 2006-09-12 Eagle New Media Investments, Llc Method and system for optimal usage of memory for storing scheduling and guiding data in 3D-enabled EPG
US6892246B2 (en) * 2001-06-13 2005-05-10 Alan N. Cooper Computer system and method for storing video data
GB0116497D0 (en) * 2001-07-06 2001-08-29 Koninkl Philips Electronics Nv Receiver apparatus and method
GB2385952B (en) * 2001-10-24 2006-05-31 Imagine Broadband Ltd Data processing system and method
US20030121054A1 (en) * 2001-12-26 2003-06-26 Digeo, Inc. Display for a client terminal for an interactive video casting system
US20030142129A1 (en) * 2002-01-31 2003-07-31 Kleven Michael L. Content processing and distribution systems and processes
US20050125357A1 (en) * 2003-12-09 2005-06-09 Saadat Abbas S. Secure integrated media center
US7822938B2 (en) * 2004-10-20 2010-10-26 Microsoft Corporation System and method for performing garbage collection based on unmanaged memory allocations
US8434116B2 (en) 2004-12-01 2013-04-30 At&T Intellectual Property I, L.P. Device, system, and method for managing television tuners
US20060174309A1 (en) * 2005-01-28 2006-08-03 Sbc Knowledge Ventures, L.P. System and method of managing set top box memory
US8713524B2 (en) * 2005-04-06 2014-04-29 Microsoft Corporation Memory management configuration
US7707232B2 (en) * 2005-05-13 2010-04-27 Microsoft Corporation Implementation for collecting unmanaged memory
US7412466B1 (en) * 2005-05-31 2008-08-12 Sun Microsystems, Inc. Offset-based forward address calculation in a sliding-compaction garbage collector
US7908627B2 (en) 2005-06-22 2011-03-15 At&T Intellectual Property I, L.P. System and method to provide a unified video signal for diverse receiving platforms
US8701095B2 (en) * 2005-07-25 2014-04-15 Microsoft Corporation Add/remove memory pressure per object
JP2007257114A (ja) * 2006-03-22 2007-10-04 Toshiba Corp 再生装置および再生装置のバッファ管理方法
US20090217335A1 (en) * 2008-02-27 2009-08-27 Richard Sai Kit Wong Apparatus and methods for network access
US8301672B2 (en) * 2008-09-22 2012-10-30 Advanced Micro Devices, Inc. GPU assisted garbage collection
US8473900B2 (en) * 2009-07-01 2013-06-25 Advanced Micro Devices, Inc. Combining classes referenced by immutable classes into a single synthetic class
US8327109B2 (en) * 2010-03-02 2012-12-04 Advanced Micro Devices, Inc. GPU support for garbage collection
US8527544B1 (en) 2011-08-11 2013-09-03 Pure Storage Inc. Garbage collection in a storage system
US8825721B2 (en) * 2011-10-03 2014-09-02 Oracle International Corporation Time-based object aging for generational garbage collectors

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5905522A (en) * 1995-08-31 1999-05-18 Microsoft Corporation Resource allocation method for interactive televideo system
DE69631364T2 (de) 1995-10-30 2004-11-04 Stmicroelectronics S.A. MPEG-Dekoder mit gemeinsamer Benutzung eines Speichers
GB2311882B (en) * 1996-04-04 2000-08-09 Videologic Ltd A data processing management system
US6148389A (en) * 1997-03-24 2000-11-14 Texas Instruments Incorporated PC circuits, systems and methods
US6105119A (en) * 1997-04-04 2000-08-15 Texas Instruments Incorporated Data transfer circuitry, DSP wrapper circuitry and improved processor devices, methods and systems
UA55489C2 (uk) 1997-10-07 2003-04-15 Каналь+ Сосьєте Анонім Пристрій для багатопотокової обробки даних (варіанти)
US6081665A (en) * 1997-12-19 2000-06-27 Newmonics Inc. Method for efficient soft real-time execution of portable byte code computer programs

Also Published As

Publication number Publication date
WO2000040004A1 (en) 2000-07-06
EP1142308A1 (en) 2001-10-10
US6300962B1 (en) 2001-10-09

Similar Documents

Publication Publication Date Title
KR20010086143A (ko) 셋톱 박스 환경에서 신뢰성있는 그래픽 메모리 동작을제공하는 방법 및 장치
KR100289628B1 (ko) 멀티태스킹 기능의 정보처리시스템을 위한 자원관리방법및 그 장치
US8521790B2 (en) Increasing efficiency of data storage in a file system
US6757794B2 (en) Buffering data in a hierarchical data storage environment
US8156304B2 (en) Dynamic data storage repartitioning
US5757386A (en) Method and apparatus for virtualizing off-screen memory of a graphics engine
JP3427917B2 (ja) 動的オフスクリーン・ディスプレイ用メモリ管理システムおよび方法
US7528838B2 (en) Video memory management
EP1023661B1 (en) Application programming interface enabling application programs to control allocation of physical memory in a virtual memory system
US6804766B1 (en) Method for managing pages of a designated memory object according to selected memory management policies
US7716448B2 (en) Page oriented memory management
US20080162863A1 (en) Bucket based memory allocation
US20120151170A1 (en) System and method of squeezing memory slabs empty
US6219772B1 (en) Method for efficient memory allocation of small data blocks
US6928456B2 (en) Method of tracking objects for application modifications
US20100287351A1 (en) File access management system
US7711921B2 (en) Page oriented memory management
CN107870922B (zh) 一种用于数据去重的方法、设备和系统
US20010042184A1 (en) Converting non-contiguous memory into contiguous memory for a graphics processor
US20120331223A1 (en) Parallel block allocation for declustered logical disks
US6353862B1 (en) Video device manager for managing motion video output devices and supporting contexts and buffer adoption
WO1995016957A1 (en) Object-oriented memory allocation framework
US6912639B2 (en) Memory management method and apparatus for use in an open geographic information system
CN114549727A (zh) 纹理管理方法、装置、设备及存储介质
WO2004014072A1 (en) Device and method for delayed reading of digital video data

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid