KR20200000353A - 데이터 처리 시스템 - Google Patents

데이터 처리 시스템 Download PDF

Info

Publication number
KR20200000353A
KR20200000353A KR1020190072565A KR20190072565A KR20200000353A KR 20200000353 A KR20200000353 A KR 20200000353A KR 1020190072565 A KR1020190072565 A KR 1020190072565A KR 20190072565 A KR20190072565 A KR 20190072565A KR 20200000353 A KR20200000353 A KR 20200000353A
Authority
KR
South Korea
Prior art keywords
data
memory
encoded
video
processing unit
Prior art date
Application number
KR1020190072565A
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 KR20200000353A publication Critical patent/KR20200000353A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/0007Image acquisition
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/363Graphics controllers
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2340/00Aspects of display data processing
    • G09G2340/02Handling of images in compressed format, e.g. JPEG, MPEG
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2350/00Solving problems of bandwidth in display systems
    • 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
    • G09G2360/125Frame memory handling using unified memory architecture [UMA]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Human Computer Interaction (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • Acoustics & Sound (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

비디오 데이터 처리 시스템은, 상기 비디오 데이터 처리 시스템의 컨슈머 처리 유닛들에서 사용하기 위한 비디오 데이터의 프레임들의 시퀀스를 생성하는 비디오 처리 유닛을 구비한다. 또한, 이 시스템은, 상기 비디오 처리 유닛에서 생성한 비디오 데이터의 프레임들의 시퀀스를 저장하는 메모리(30)를 구비한다. 상기 비디오 처리 유닛은, 데이터의 인코딩된 블록들로서 프레임들을 인코딩하고, 상기 메모리에서 제1 장소(32)에 제1 프레임의 특별한 인코딩된 블록과, 상기 제1 장소의 표시(34)를 저장한다. 상기 비디오 처리 유닛은, 제2 프레임의 대응한 인코딩된 블록을 제2 장소(33)에 저장하고, 상기 표시(34)를 상기 제2 장소로 갱신한다.

Description

데이터 처리 시스템{DATA PROCESSING SYSTEMS}
본 발명은, 데이터 처리 시스템에 관한 것으로, 특히 (예를 들면, 비디오) 데이터 처리 시스템에서 인코딩된 블록들의 생성 및 소비에 관한 것이다.
데이터 처리 시스템에서, "프로듀서" 처리유닛은, 상기 데이터 처리 시스템의 하나 이상의 그 밖의 "소비"처리 유닛들에 의해 사용되는(예를 들면, 처리되는) 데이터의 스트림을 생성(발생)하여도 된다. 이것의 일례는, 비디오 인코딩 또는 디코딩일 때다. 예를 들면, 비디오 인코딩 시스템에 있어서, 비디오 인코더는, 비디오 카메라에 의해 촬영되거나 그래픽 프로세서에 의해 생성되어 있도록 표시되는 비디오 프레임들의 시퀀스를 표현하는 비트 스트림을 인코딩("생성")하여도 된다. 그 후, 상기 인코딩된 비트 스트림은, 예를 들면, 상기 비디오 프레임들의 시퀀스의 표시 목적상, 디스플레이 프로세서에 의해 "소비"되어도 된다.
이러한 구성들에서, 상기 프로듀서 처리 유닛은, 상기 데이터 스트림을 사용하기 위한 컨슈머(consumer) 처리 유닛들(에도 액세스 가능한)과 공유되는 적절한 메모리에서 생성중인 상기 데이터 스트림을 저장하는 것이 일반적이고, 이때의 컨슈머 처리 유닛들은 상기 메모리로부터 상기 데이터 스트림을 판독하여 사용한다.
상기 공유된 메모리에 및 이 메모리로부터 데이터를 기록 및 판독할 때 초래된 대기시간은, 컨슈머 처리 유닛이, 데이터 출력이 생성되어 상기 공유된 메모리에 기록중일 때 프로듀서 처리 유닛에서 생성한 데이터 출력(예를 들면, 상기 데이터 스트림의 일부로서)을 판독 및 처리하게 함으로써 최소화될 수도 있다. 그래픽 또는 비디오 처리에 있어서, 이러한 구성은 "프론트 버퍼" 렌더링으로서 공지된다. 이것은, 예를 들면, 상기 컨슈머 처리 유닛이 그 데이터 출력을 사용하기 시작 가능하기 전에, 프레임 등의 데이터 출력이, 상기 프로듀서 처리 유닛에 의해 처음 완전히 라이트 아웃되는 구성들과 대조된다. 그렇지만, 이러한 구성들에서, 상기 컨슈머 처리 유닛이 아직 메모리에 완전히 기록되어 있지 않은 데이터 출력(의 일부)에 대해 데이터를 판독하려고 노력하는 상황이, 일어날 수 있다. 그 후, 상기 컨슈머 처리 유닛은, 새로운 버전과 오래된 버전 양쪽의 상기 데이터 출력을 (예를 들면, 그 새로운 데이터 출력이 기존의 데이터 출력 위에 기록중일 때의 경우에) 판독하여, 일부의 방식으로 조합하려고 시도하여도 된다.
오래된 버전과 새로운 버전의 데이터 출력의 혼합체(mix)를 소비하는 것은, 상기 데이터 처리 시스템에 대한 다수의 문제점의 원인이 될 수도 있다. 예를 들면, 이러한 데이터의 혼합체가 상기 컨슈머 처리 유닛에 의해 (예를 들면, 표시를 위해) 출력될 때, 원하지 않는 아티팩트들이 작성되어도 된다. 그래픽 및 비디오 처리 시스템들에서는, 이러한 현상이 "티어링(tearing)"으로서 알려진다.
이 문제점들은, 상기 데이터 출력이 블록방식 인코딩(예를 들면, 압축) 형태로 발생중일 때 더 악화될 수도 있어, 상기 컨슈머 처리 유닛은, 상기 데이터 출력의 전체 블록에 대한 데이터 전부를 가지면 상기 데이터 출력(의 블록)의 요소들을 처리할 수만 있다. 그 경우에, 컨슈머 처리 유닛이 부분적으로만 기록된 블록을 판독하려고 시도하면, 이것은, 상기 데이터 출력의 사용에 있어서 보다 중요한 아티팩트들이나 에러들(예를 들면, 손상)의 원인이 될 수 있다. 또한, 그것은, 상기 컨슈머 처리 유닛으로 하여금 데드락(deadlock)의 원인이 되기도 한다.
이에 따라, 출원인이 믿는 것은, 상기 데이터 출력들이 공유 메모리를 거쳐 처리 및 소비중일 때, 데이터 처리 시스템에서 생성 처리 유닛과 소비 처리 유닛과의 사이에서 공유중인 데이터 출력들의 개선된 처리에 대한 여지가 남아 있다는 것이다.
제1 국면에서 볼 때, 본 발명은, 비디오 처리 시스템의 비디오 처리 유닛이 상기 비디오 처리 시스템의 하나 이상의 컨슈머 처리 유닛들에서 사용하기 위한 비디오 데이터의 프레임들의 시퀀스를 생성할 수 있는 비디오 처리 시스템의 동작방법을 제공하고, 이 방법은:
상기 비디오 처리 유닛에 의해, 비디오 데이터의 프레임들-각 프레임이 데이터의 하나 이상의 인코딩된 블록들로서 인코딩된다-의 시퀀스를 인코딩하고, 상기 비디오 처리 유닛이 메모리의 구역에 상기 프레임에 대한 데이터의 그 밖의 인코딩된 블록들을 저장중인 동안에 처리하기 위해 컨슈머 처리 유닛에서 데이터의 인코딩된 블록들을 판독할 상기 메모리의 구역에, 차례로 프레임마다 상기 데이터의 인코딩된 블록들을 저장하는 단계를 포함하고;
상기 방법은:
상기 비디오 처리 유닛에 의해:
상기 프레임들의 시퀀스에서 제1 프레임의 데이터의 특별한 인코딩된 블록을, 상기 메모리의 구역에서의 제1 장소에 저장하는 단계; 및
상기 데이터의 특별한 인코딩된 블록에 대해서, 상기 데이터의 특별한 블록을 판독할 때 컨슈머 처리 유닛에서 사용하기 위한 상기 제1 장소의 표시를, 저장하는 단계; 및
상기 비디오 처리 유닛에 의해, 상기 제1 프레임에서 상기 데이터의 특별한 인코딩된 블록에 대응하는 프레임들의 상기 시퀀스에서의 제2 프레임의 데이터의 인코딩된 블록을 저장할 때, 상기 메모리의 구역에서 상기 제1 장소와 다른 제2 장소에, 상기 제2 프레임의 그 데이터의 인코딩된 블록을 저장하는 단계; 및
상기 메모리의 상기 구역에서 상기 인코딩된 블록의 상기 장소의 상기 표시를 상기 제2 장소로 갱신하는 단계를 더욱 포함한다.
제2 국면에서 볼 때, 본 발명은 비디오 데이터 처리 시스템을 제공하고, 이 비디오 데이터 처리 시스템은:
상기 비디오 데이터 처리 시스템의 하나 이상의 컨슈머 처리 유닛들에서 사용하기 위한 비디오 데이터의 프레임들의 시퀀스를 생성할 수 있는 비디오 처리 유닛; 및
상기 비디오 처리 유닛에서 생성한 비디오 데이터의 프레임들의 시퀀스를 저장하는 메모리를 구비하고;
상기 비디오 처리 유닛은:
비디오 데이터의 프레임들-각 프레임이 데이터의 하나 이상의 인코딩된 블록들로서 인코딩된다-의 시퀀스를 인코딩하고; 및
상기 비디오 처리 유닛이 메모리의 구역에 상기 프레임에 대한 데이터의 그 밖의 인코딩된 블록들을 저장중인 동안에 처리하기 위해 컨슈머 처리 유닛에서 데이터의 인코딩된 블록들을 판독할 상기 메모리의 구역에, 차례로 프레임마다 데이터의 상기 인코딩된 블록들을 저장할 수 있는,
처리회로를 구비하고;
상기 처리회로는: 한층 더,
상기 프레임들의 시퀀스에서 제1 프레임의 데이터의 특별한 인코딩된 블록을, 상기 메모리의 상기 구역에서의 제1 장소에 저장하고; 및
데이터의 상기 특별한 인코딩된 블록에 대해서, 데이터의 상기 특별한 블록을 판독할 때 컨슈머 처리 유닛에서 사용하기 위한 상기 제1 장소의 표시를 저장할 수 있고;
상기 처리회로는, 한층 더, 상기 제1 프레임에서 상기 데이터의 특별한 인코딩된 블록에 대응하는 프레임들의 상기 시퀀스에서의 제2 프레임의 데이터의 인코딩된 블록을 저장할 때, 상기 메모리의 구역에서 상기 제1 장소와 다른 제2 장소에, 상기 제2 프레임의 그 데이터의 인코딩된 블록을 저장하고; 및
상기 메모리의 상기 구역에서 상기 인코딩된 블록의 상기 장소의 상기 표시를 상기 제2 장소로 갱신할 수 있다.
본 발명은, 비디오 데이터 처리 시스템의 비디오 처리 유닛을 사용하여 비디오(화상) 데이터의 인코딩과 저장에 관한 것이다. 상기 비디오 데이터는 프레임들의 시퀀스로서 발생되고, 이때의 각 비디오 프레임은 데이터의 하나 이상의(바람직하게는 복수의) 블록들(예를 들면, 상기 프레임의 화소들의 블록들)로 분할된다. 각 블록은, 개별적으로 인코딩된다(그 후, 예를 들면 개별적으로 디코딩된다). 비디오 데이터의 프레임들의 상기 시퀀스는 (예를 들면, 상기 비디오 데이터 처리 시스템의) 하나 이상의 컨슈머 처리 유닛들에서 사용하기 위한 상기 비디오 처리 유닛에 의해 생성된다.
프레임들의 상기 시퀀스에 대한 데이터의 상기 인코딩된 블록들은, 상기 비디오 처리 시스템의 메모리의 구역에 상기 비디오 처리 유닛에 의해 저장된다. 상기 메모리의 구역은, 동시에, 상기 비디오 데이터 처리 시스템에 의해, 프레임에 대한 데이터의 인코딩된 블록들을 저장(기록)하고, 상기 컨슈머 처리 유닛(들)에 의해, 상기 메모리의 상기 구역에 저장되어 있는 데이터의 상기 프레임(그 밖의) 인코딩된 블록들에 대해 판독하는데, 사용된다.
따라서, 상기 메모리의 구역은, 상기 비디오 처리 유닛과 하나 이상의 컨슈머 처리 유닛들과 사이에서 공유되고 또한 상기 비디오 처리 유닛과 하나 이상의 컨슈머 처리 유닛들의 양쪽을 동시에 액세스 가능한 "프론트 버퍼"(를 포함하는 것이 바람직하다)의 방식으로 사용된다. 이에 따라, 컨슈머 처리 유닛은, 상기 비디오 처리 유닛이 전체 동일한 프레임을 동일한 상기 메모리의 구역에 기록하는 것을 완료하기 전에 상기 메모리의 구역으로부터 프레임의 데이터의 인코딩된 블록들을 판독할 수 있음에 따라서, 상기 컨슈머 처리 유닛은 동일한(또는 이후의) 프레임의 그 밖의 블록들이 동일한 메모리의 구역에 기록중인 동안에 프레임의 데이터의 인코딩된 블록들을 판독할 수 있다.
이러한 "프론트 버퍼" 렌더링은, 예를 들면, 비디오 데이터의 프레임들의 시퀀스에서의 데이터의 인코딩된 블록들을, 동일한 메모리의 구역으로부터 컨슈머 처리 유닛에 의해 상기 시퀀스에서의 데이터의 이미 저장된 인코딩된 블록들의 연속적인 판독도 허용하면서 상기 비디오 처리 유닛에 의해 메모리의 구역에 연속적인 기록을 가능하게 한다. 이것은, 예를 들면, 화상 데이터의 프레임 전체가 먼저 "백(back)" 버퍼에 커밋되어야 한 후 소비를 위해 이용 가능한 "프론트" 버퍼에 촉진될 수 있는 시스템과 대조하여, 비디오 데이터의 상기 프레임들을 생성 및 소비하는 대기시간을 감소시키는데 도움이 된다. (이러한 프론트 버퍼 및 백 버퍼는, 데이터를 저장 및 이로부터 판독하기 위한 프로듀서와 컨슈머에 의해 각각 동시에 액세스 가능하지 않다.)
본 발명의 상기 방법 및 시스템에 의해, 상기 메모리의 구역은 이렇게 사용될 수 있고, 이때의 데이터의 인코딩된 블록들은, 프레임들의 상기 시퀀스에서 다른(제1) 프레임으로부터 데이터의 이전에 저장된 인코딩된 블록에 해당하는 (제2) 프레임에서 데이터의 인코딩된 블록 때문에, 그 블록의 상기 이전의 버전을 메모리에 겹쳐쓰는 대신에, (제1 장소에 저장되는) 데이터의 상기 이전에 저장된 블록과 다른(제2) 장소에 저장된다. 따라서, 프레임들의 상기 시퀀스에서 데이터의 연속적(대응한) 블록들은 동일한 메모리의 구역이지만 상이한 장소들에 저장된다.
이에 따라, 데이터의 상기 새롭게 인코딩된 블록들은, 컨슈머 처리 유닛에서 사용하기 위한 상기 메모리의 상기 구역에서의 데이터의 유효 인코딩된 블록들을 유지하면서, 예를 들면, 데이터의 새로운 인코딩된 블록들이 (예를 들면 메모리에 완전히 기록되고) 사용되게 이용 가능할 때까지, 데이터의 상기 이전에 인코딩되고 저장된 블록들이 사용(판독)중이고, 상기 메모리의 구역에 동시에 저장(기록)될 수 있다.
또한, 상기 메모리의 구역에서 특별한 인코딩된 블록의 상기 (제1) 장소의 표시는, 상기 비디오 처리 유닛에 의해 저장된다. 본 표시는, 이 프레임에 대한 상기 메모리의 구역에서 대응한 블록의 새로운 상이한 장소를 상기 제2(및 예를 들면, 이후의) 프레임(들)을 위해 제공하도록 갱신된다.
시퀀스에서 연속 프레임들에서 데이터의 인코딩된 블록들을 상기 메모리의 구역에서의 상이한 장소들에 저장하는 것과 상기 메모리의 구역에서 상기 인코딩된 블록의 최신의(예를 들면, 완전히 저장된) 버전의 상기 장소를 제공하는 것은, 데이터의 인코딩된 블록을 사용하려고 시도하는 컨슈머 처리 유닛이, 사용되게 이용 가능하고, 적어도 바람직한 실시예들에서, 항상 그것들 상기 인코딩된 블록의 "풀(full)"(예를 들면, "유효") 버전을 이용 가능하게 할 (상기 표시를 사용하여) 상기 메모리의 구역에서 상기 인코딩된 블록의 상기 버전을 위치시킬 수 있는, 즉 상기 컨슈머 처리 유닛은 단순히 상기 장소 표시의 최신 버전을 사용하여 상기 메모리의 구역에서 저장되어 있는 상기 인코딩된 블록의 최신 버전을 위치시키는, 효과가 있다. 이것은, 상기 컨슈머 처리 유닛이 상기 메모리의 구역에 아직 완전히 저장되어 있지 않는 데이터의 인코딩된 블록을 판독하려고 시도하지 않음으로써 컨슈머 처리 유닛은, (비록 사용되는 상기 블록의 디코딩 가능한 버전이 상기 블록의 새로운 버전이 아직 상기 공유된 메모리의 구역에 기록되어 있지 않으면 이전의 프레임으로부터 나온 것일 수일지라도) 그 블록을 성공적으로 디코딩할 수 있도록, 보장하는데 도움이 된다.
특별한 블록의 최신의 유효 버전의 상기 장소의 표시의 사용 때문에, 데이터의 유효 인코딩된 블록들만이 상기 하나 이상의 컨슈머 처리 유닛들에 사용하기 위해 판독되도록 보장하는 것은, 메모리 장소로부터의 데이터의 부분적으로 갱신된 블록과 이것이 생성하는 원하지 않는 아티팩트들을 사용하려고 할 때 이전에 접한 상기 문제점들을 해결하는데 도움이 된다. 이것을 데이터의 인코딩된 블록들을 생성하고 소비하는 시스템에 구현하는 것은, 메모리 장소로부터의 데이터의 부분적으로 갱신된 블록을 사용하려고 할 때 상기 하나 이상의 컨슈머 처리 유닛들의 데이터 손상과 잠재적 데드락킹의 문제점들을 해결하는데도 도움이 된다.
상기 비디오 처리 유닛이 인코딩하는 비디오 데이터의 프레임들의 시퀀스는, 임의의 적절하고 원하는 방식으로, 예를 들면 상기 비디오 처리 유닛에 의해 발생되어도 된다. 일 실시예에서, 상기 비디오 데이터의 프레임들의 상기 시퀀스는, 비디오 카메라에 의해 촬영된다. 일 실시예에서, 상기 비디오 데이터의 프레임들의 상기 시퀀스는, 그래픽 처리 유닛에 의해 발생된다(예를 들면, 실시간으로 렌더링된다).
바람직하게는, 발생되어 있는 상기 비디오 데이터의 프레임들의 상기 시퀀스는, 상기 하나 이상의 인코딩된 블록들로서 상기 비디오 데이터의 상기 프레임들을 인코딩할 때 상기 비디오 처리 유닛에서 사용하기 위해서, (예를 들면, 상기 비디오 카메라나 그래픽 처리 유닛에 의해, 예를 들면, 메모리에) 저장된다.
상기 비디오 데이터의 프레임들의 상기 시퀀스는, 임의의 적절하고 원하는 비디오 프레임들의 시퀀스이어도 된다. 소스 비디오 프레임들의 상기 시퀀스에서 적어도 2개의 프레임이 있지만, 바람직하게는 소스 비디오 프레임들의 상기 시퀀스에서 2보다 많은 프레임들이 있다.
상기 비디오 처리 유닛에 의해 상기 프레임들의 시퀀스에서 인코딩되는 상기 제1 및 제2 프레임들은, 임의의 적절하고 원하는 상기 프레임들의 시퀀스에서 비디오 데이터의 프레임들이어도 된다. 바람직하게는, 상기 제1 및 제2 프레임들은 상기 비디오 처리 유닛에 의해 연속적으로 인코딩된다, 즉 상기 제2 프레임은 상기 제1 프레임 후 다음에 인코딩된 프레임이다. 따라서, 상기 인코딩되어 저장된 제1 및 제2 프레임들은, 상기 발생된 프레임들의 시퀀스에서 및/또는 소비되는(예를 들면, 표시되는) 프레임들의 상기 시퀀스에서, 인접한 프레임들이어도 된다. 그렇지만, 이것은, 항상 사실이 아닐 수도 있다, 예를 들면, 상기 프레임들의 시퀀스를 인코딩하는데 사용되는 상기 인코딩 포맷에 의존할 수도 있다.
인코딩되는 프레임들의 상기 시퀀스는, 바람직하게는, 상기 메모리의 구역에 저장되는 데이터의 상기 하나 이상의 인코딩된 블록들(예를 들면, 데이터의 인코딩된 비트스트림으로서)을 제공하는 본 발명의 방식으로 인코딩되는 비디오 데이터의 프레임들의 상기 시퀀스를 표현하는 입력 프레임 데이터의 스트림의 형태로 제공된다. 그 후, 상기 데이터의 인코딩된 블록들은, 예를 들면, 및 바람직하게는, 표시 목적상 출력 비디오 프레임들의 시퀀스를 제공하기 위해(예를 들면, 상기 메모리의 구역으로부터 상기 인코드 블록들을 판독하는 컨슈머 처리 유닛에 의해) 송신 및 디코딩되어도 되고, 바람직하게는 송신 및 디코딩된다.
따라서, 바람직하게는, 상기 방법은, 인코딩되는 비디오 데이터의 프레임들의 시퀀스를 수신하는 단계와, 상기 메모리의 구역에 저장되는 데이터의 상기 하나 이상의 인코딩된 블록들을 생성하기 위해 본 발명의 방식으로 상기 프레임들을 인코딩하는 단계를 포함한다(그리고, 상기 비디오 처리 유닛은, 인코딩되는 비디오 데이터의 프레임들의 시퀀스를 수신하고, 상기 메모리의 구역에 저장되는 데이터의 상기 하나 이상의 인코딩된 블록들을 생성하기 위해 본 발명의 방식으로 상기 프레임들을 인코딩할 수 있다).
상기 비디오 프레임들은 블록 방식으로 인코딩된다, 예를 들면, 인코딩되는 비디오 데이터의 각 프레임은 상기 비디오 프레임의 각각의 구역들(영역들)을 표현하는 화소들(샘플링 위치들)의 각각의 블록들로 분할되고, 그 후, 이 블록들은 (예를 들면, 상기 인코딩된 비디오 데이터 비트스트림내에서) 데이터의 인코딩된 블록들로서 각각 개별적으로 인코딩되어, 각각의 개별적인 블록들은 상기 메모리에 저장된 상기 인코딩된 비디오 데이터로부터 상기 하나 이상의 컨슈머 처리 유닛들에 의해 사용(예를 들면, 특정되어 디코딩)될 수 있다.
따라서, 바람직하게는, 상기 방법은, 상기 비디오 프레임을 인코딩 목적들을 위한 블록들로 분할하기 위해 비디오 데이터의 프레임을 처리하는 단계를 포함한다(그리고, 상기 비디오 처리 유닛은 상기 비디오 프레임을 인코딩 목적들을 위한 블록들로 분할하기 위해 비디오 데이터의 프레임을 처리할 수 있다).
그 비디오 데이터의 프레임들은, 임의의 적절하고 원하는 인코딩(압축) 기술을 사용하여, 예를 들면 출원인의 특허 US 8,542,939 B2, US 9,014,496 B2, US 8,990,518 B2 및 US 9,116,790 B2에 기재된 프레임 버퍼 압축기술들을 사용하여 하나 이상의 블록들로서 인코딩(압축)되어도 된다.
상기 비디오 프레임들이 상기 인코딩 프로세스를 위해 세부분할되는 데이터의 블록들은, 상기 비디오 프레임들의 임의의 적절하고 원하는 블록들이어도 된다. 그들의 형상은 직사각형, 예를 들면 정사각형인 것이 바람직하다. 이 직사각형 블록들은 임의의 적절하고 원하는 사이즈를 취하여도 된다. 바람직하게는, 상기 직사각형 블록들의 각각의 사이즈는, 4ㅧ4화소이상 64ㅧ64화소 이하를 포함하고, 바람직하게는 그 직사각형 블록들의 각 엣지의 사이즈는 2n 화소이고, 이때의 n은 정수이다(예를 들면, 2이상 6이하).
일 실시예에서, 비디오 데이터의 상기 프레임들은, 예를 들면 그래픽 처리 유닛에 의해, 데이터의 개별 블록들로서 발생(예를 들면, 렌더링)된다. 이러한 "타일 기반" 렌더링에서, 바람직하게는, 상기 발생된 데이터의 블록들은, 예를 들면 프레임의 상기 영역에 대해 모자이크식으로 만들어지고, 상기 비디오 처리 유닛에 의해 (상기 발생된 데이터의 블록들에 해당하는 것이 바람직한) 상기 인코딩된 데이터의 블록들을 생성하는데 사용(즉, 인코딩)되는, "타일들"을 구비한다.
비디오 데이터의 상기 제1 프레임에서 데이터의 특별한 인코딩된 블록은, 임의의 적절하고 원하는 방식으로, 비디오 데이터의 상기 제2 프레임에서 데이터의 대응한 인코딩된 블록에 대응하여도 된다. 바람직하게는, 그 대응한 블록은, 상기 제1 프레임에서 상기 특별한 블록으로서 비디오 데이터의 상기 제2 프레임에서 동일한 위치(예를 들면, 타일)를 차지한다(데이터 요소들의 동일한 세트를 갖는다). 그 프레임들이 데이터의 복수의 블록들로서 (예를 들면, 각각) 인코딩될 때, 바람직하게는 상기 제2 프레임에서 데이터의 상기 인코딩된 블록들의 각각은 상기 제1 프레임에서 데이터의 각각의 인코딩된 블록에 대응한다. 바람직하게는, 프레임들의 상기 시퀀스에서 각 프레임은, 블록들(예를 들면, 타일들)의 동일한 세트로서 인코딩된다.
상기 비디오 처리 유닛에 의해 프레임들의 상기 시퀀스에 대한 데이터의 상기 인코딩된 블록들을 저장하는데 사용되는(그리고, 데이터의 상기 인코딩된 블록들을 판독할 때 상기 하나 이상의 컨슈머 처리 유닛들에 의해 사용되는) 상기 메모리의 구역은, 상기 비디오 처리 유닛과 상기 하나 이상의 컨슈머 처리 유닛들 양쪽에 동시에 액세스 가능한(예를 들면 상기 비디오 처리 유닛과 상기 하나 이상의 컨슈머 처리 유닛들과의 사이에서 공유된) 메모리의 임의의 적절하고 원하는 구역이어도 된다. 따라서, 상기 데이터의 인코딩된 블록들이 저장되는 상기 메모리는, 상기 비디오 처리 시스템의 또는 상기 비디오 처리 시스템을 위한 임의의 원하는 적절한 메모리, 이를테면, 및 바람직하게는, (예를 들면, 당해 상기 처리 유닛들을 위한 별도의 메모리 시스템이 있는) 당해 상기 처리 유닛들을 위한 메인 메모리, 및/또는 상기 비디오 처리 시스템의 호스트 프로세서(CPU)와 같은 그 밖의 요소들과 공유되는 상기 비디오 처리 시스템의 메인 메모리이어도 된다.
상기 메모리는 당해 상기 처리 유닛들에 대해 외장형(예를 들면, 오프칩)이어도 된다. 바람직한 실시예에서, 상기 메모리는 외장형 DRAM이다. 물론, 그 밖의 구성도 가능할 것이다.
상기 메모리의 구역은, 임의의 적절하고 원하는 방식으로 배치될 수 있다. 바람직하게는, 상기 메모리의 구역은, 상기 비디오 처리 유닛과 상기 하나 이상의 컨슈머 처리 유닛들 양쪽에 동시에 액세스 가능한(예를 들면 상기 비디오 처리 유닛과 상기 하나 이상의 컨슈머 처리 유닛들과의 사이에서 공유된) (프레임) 버퍼를 구비한다.
상기 메모리의 구역은, 데이터의 인코딩된 블록들을 저장하는 상기 비디오 처리 유닛과 상기 데이터의 인코딩된 블록들을 판독하는 상기 하나 이상의 컨슈머 처리 유닛들과에 의해, 동시에 사용되는 구역이다. 따라서, 바람직하게는, 상기 메모리의 구역은 (예를 들면, 단일의) 프론트 버퍼를 구비한다.
바람직하게는, 상기 메모리의 동일한 구역은 프레임에 대해 상기 비디오 처리 유닛에 의해 저장되는 데이터의 상기 하나 이상의 인코딩된 블록들 전부에 사용되고, 바람직하게는 이렇게 하여 인코딩되어 저장되는 프레임들의 상기 시퀀스에서의 상기 프레임들 전부에 사용된다. 마찬가지로, 바람직하게는, 상기 메모리의 동일한 구역은, 프레임에 대해 상기 하나 이상의 컨슈머 처리 유닛들에서 사용하는 데이터의 상기 하나 이상의 인코딩된 블록들 전부를 위해, 바람직하게는, 상기 하나 이상의 컨슈머 처리 유닛들에서 사용하는 프레임들의 상기 시퀀스에서의 상기 프레임들 전부를 위해, 상기 하나 이상의 컨슈머 처리 유닛들에 의해 실질적으로 사용된다.
이 메모리의 구역내에서, 비디오 데이터의 제1 프레임에서 데이터의 인코딩된 블록은 제1 장소에 저장되고 나서, 비디오 데이터의 제2 프레임에서 데이터의 대응한(즉, 갱신된 버전) 블록은 동일한 메모리의 구역에서 상기 제1 장소와 다른 제2 장소에 저장된다. 상기 메모리의 구역에서 상이한(제2) 장소가 데이터의 상기 인코딩된 블록의 보다 새로운 버전(즉, 상기 제2 프레임으로부터의 상기 인코딩된 블록)을 저장하는데 사용되기 때문에, 상기 제1 장소에 저장된 데이터의 특별한 인코딩된 블록(즉, 상기 제1 프레임으로부터의 상기 인코딩된 블록)은, 데이터의 대응한(제2) 인코딩된 블록이 상기 제2 장소에 저장될 때 겹쳐써지지 않아야 하고, 바람직하게는 겹쳐써지지 않는다.
상기 메모리의 구역에서 상기 제1 및 제2 장소들은, 상기 제1 프레임으로부터의 데이터의 인코딩된 블록이 상기 제2 프레임으로부터 데이터의 상기 대응한 인코딩된 블록에 의해 겹쳐써지지 않게 하도록, 임의의 적절하고 원하는 방식으로 배치되어도 된다. 바람직하게는, 상기 메모리의 구역은, (제1) 프레임의 상기 인코딩된 블록들 전부(즉, 프레임마다 출력된 데이터 전체)를, 다른(예를 들면, 이후의(제2)) 프레임의 하나 이상의 추가의 인코딩된 블록들을 저장하는 일부의 추가의 "과용량"과 함께 저장하는 용량을 갖는다.
이에 따라 상기 메모리의 구역은 전부의 임의의 시간에 프레임의 상기 인코딩된 블록들 전부(의 완전하고 디코딩 가능한 버전)를 저장 가능하게 할 수 있어, 그들은, 예를 들면, 데이터의 상기 대응한 블록들의 새로운 버전들이 상기 메모리의 구역에서 상이한 장소들에 저장중인 동안, 상기 제2 프레임으로부터 데이터의 인코딩된 블록을 저장하기 위한 이용 가능한 "제2" 장소를 제공하기 위해 상기 메모리의 구역에 "과용량"이 있도록 보장하는 동안, 상기 제1 프레임으로부터 데이터의 상기 대응한 인코딩된 블록을 겹쳐쓰지 않는 동안, 컨슈머 처리 유닛에서 사용하기 위해 이용 가능하다.
이것이 의미하는 것은, 상기 대응한 블록들의 새로운 버전들이 메모리에 기록중인 동안, 예를 들면, 상기 데이터의 인코딩된 블록들의 상기 완전한 새로운 버전들이 상기 하나 이상의 컨슈머 처리 유닛들에 이용 가능할 때까지, 상기 제1 프레임으로부터의 데이터의 하나 이상의 인코딩된 블록들이, (상기 하나 이상의 컨슈머 처리 유닛들에서 사용하기 위해) 유지되어도 된다는 것이다. 그 후, 오래된 버전들은, 예를 들면, 이후의 프레임의 상기 대응한 인코딩된 블록들에 의해 겹쳐써져도 된다.
상기 메모리의 구역의 상기 과용량의 사이즈는, 상기 비디오 처리 유닛이 데이터의 얼마나 많은(예를 들면, 최대수) 블록들(즉, "인 플라이트(in flight))을 임의의 시간에 처리(예를 들면, 인코딩 및 저장)할 수 있는지에 좌우될 수도 있다. 상기 메모리의 구역에서 과용량의 (예를 들면, 제한된) 양을 제공하는 것은, 제공 및 관리될 필요가 있는 상기 메모리의 구역의 상기 사이즈를 최소화하는데 도움이 될 수도 있다. 그렇지만, 이것은, 예를 들면, 이전에 인코딩된 블록을 저장하는 장소가 언제 겹쳐써지는 것을 가능하게 할지를 판정함으로써, 추적되는 데이터의 새롭게 인코딩된 블록들을 저장하는데 이용 가능한 상기 메모리의 구역에서의 상기 장소들을 필요로 할 수도 있다.
이 때문에, 바람직한 일 실시예에서, 상기 메모리의 구역은, (예를 들면, 적어도) 상기 제1 프레임의 상기 인코딩된 블록들 전부와 상기 제2 프레임의 상기 인코딩된 블록들 전부(즉, 2개의 프레임을 위한 전체 데이터 출력)를 저장하는 용량을 갖는다. 이는, 새로운 블록이 완전히 저장될 때까지 컨슈머 처리 유닛에서 사용하기 위한 이전의 프레임으로부터의 데이터의 상기 대응한 인코딩된 블록을 유지하면서, 항상, 데이터의 새롭게 인코딩된 블록을 저장하기 위한 이용 가능한 장소가 있도록 보장하는데 도움이 된다.
상기 메모리의 구역은, 2개의(상기 제1 및 제2) 프레임의 상기 인코딩된 블록들의 전부를 저장하기 위해 임의의 적절한 원하는 방식으로 배치되어도 된다. 바람직한 실시예에서, 상기 메모리의 구역은, 바람직하게는 동일한(프론트) 버퍼의 2개의 별도의 파트들인, 메모리의 2개의(예를 들면, 제1 및 제2) 별도의 서브구역들을 포함한다.
따라서, 바람직하게는, 상기 방법은, 상기 메모리의 구역의 제1 서브구역에 상기 제1 프레임으로부터의 데이터의 특별한 인코딩된 블록을 저장하는 단계와, 상기 메모리의 구역의 상기 제2 서브구역에 상기 제2 프레임으로부터의 데이터의 상기 대응한 인코딩된 블록을 저장하는 단계를 포함한다(그리고, 상기 비디오 처리 유닛은, 상기 메모리의 구역의 제1 서브구역에 상기 제1 프레임으로부터의 데이터의 특별한 인코딩된 블록을 저장하고, 상기 메모리의 구역의 상기 제2 서브구역에 상기 제2 프레임으로부터의 데이터의 상기 대응한 인코딩된 블록을 저장할 수 있다)(예를 들면, 상기 비디오 처리 유닛은, 상기 서브구역들 중 하나에 대한 하나의 프레임의 블록들을 저장하는 것과 상기 서브구역들 중 다른 나머지에 대한 이후의 프레임의 블록들을 저장하는 것과의 사이에서 교대로 한다.). 상기 제1 장소는 메모리의 상기 제1 서브구역에서의 장소이고, 상기 제2 장소는 메모리의 상기 제2 서브구역에서의 장소이다(즉, 처리되는 상기 제1 및 제2 프레임들의 각각은, 이 프레임들의 인코딩된 블록들을 저장하기 위한 각각의 서브구역을 상기 비디오 처리 유닛에 대해 이용 가능하다).
상기 제1 프레임의 데이터의 인코딩된 블록(바람직하게는 인코딩된 블록들 전부)가 이 서브구역들 중 하나에, 상기 제2 프레임의 대응한 블록(바람직하게는 인코딩된 블록들 전부)는 다른 나머지 서브구역에 저장되면서, 이렇게 메모리의 별도의(예를 들면, 묘사된(delineated)) 서브구역들을 제공하는 것은, 상이한(상기 제2) 장소가 데이터의 보다 새로운 인코딩된 블록을 저장하게 구성되도록 보장하는데 도움이 된다. 또한, 그것은, 상기 제1 장소에서의 상기 인코딩된 블록이 상기 제2 장소에 상기 인코딩된 블록을 저장할 때 겹치지 않도록 (예를 들면, 메모리의 동일한 단일의 구역에서 필요할 수도 있는 것처럼) 상기 제1 장소와 상이한 제2 장소를 (분명히) 특정해야 하는 것을 피하는데도 도움이 된다.
대신에, 및 이것이 행해진 바람직한 실시예에서, 상기 비디오 처리 유닛은, 상기 제1 및 제2(및, 바람직하게는, 이후의) 프레임들에 대한 데이터의 대응한 인코딩된 블록들을 저장할 때 메모리의 상기 2개의 서브구역들 사이에서 단순히 교대로 할("주고받을") 수 있어, 각각의 교대의 프레임들에 대한 메모리의 상기 교대의 서브구역들에 상기 데이터의 인코딩된 블록들을 저장할 수 있다.
상기 인코딩된 데이터 블록들이 저장되는 상기 메모리의 구역이 메모리의 2개의 별도의 서브구역들을 포함할 때, 이 서브구역들 모두는 (동일한 메모리의 구역의 파트이기 때문에) 상기 하나 이상의 컨슈머 처리 유닛들에 의해 (예를 들면, 임의의 시간에) 판독되는데 계속 이용 가능한 한편, 데이터의 다른 인코딩된 블록들은 상기 메모리의 구역(의 어느 하나 또는 각 서브구역 등)에 저장중이다. 따라서, 바람직하게는, 상기 2개의 별도의 서브구역들은 (예를 들면, 계속하여) 상기 하나 이상의 컨슈머 처리 유닛들에 의해 판독될 수 있는 한편, 데이터의 상기 인코딩된 블록들은 거기에 저장중이어서, 그들은 상기 비디오 처리 유닛과 컨슈머 처리 유닛 양쪽에 의해 동시에 액세스 가능하다. 이것은, 데이터를 단지 백 버퍼에 기록하고 프론트 버퍼로부터 판독하는 상기 프론트 버퍼와 백 버퍼를 갖는 메모리 시스템과 대조적이다.
마찬가지로, 상기 하나 이상의 컨슈머 처리 유닛들은, 비디오 데이터의 프레임을 상기 메모리의 구역으로부터 판독할 때 (예를 들면, 임의의 주어진 시간에) 메모리의 2개의 별도의 서브구역들을 (예를 들면, 각각) 판독할 수 있다. 후술하듯이, 상기 하나 이상의 컨슈머 처리 유닛들은, 단지, 데이터의 상기 인코딩된 블록들이 어디에 저장되는지의 표시를 사용하고 (상기 서브구역들의 어느 한쪽이어도 되는) 상기 메모리의 구역의 해당 장소에 액세스한다.
상기 메모리의 2개의 별도의 서브구역들은, 임의의 적절한 원하는 방식으로, 예를 들면 프레임들의 상기 시퀀스가 데이터의 블록들로서 어떻게 인코딩되는지에 따라 배치되어도 된다. 일 실시예에서, 상기 데이터의 블록들은, 출원인의 특허 US 8,542,939 B2, US 9,014,496 B2, US 8,990,518 B2 및 US 9,116,790 B2에 기재된 프레임 버퍼 압축 기술들을 사용하여 인코딩된다. 이 기술들을 사용하여, 데이터의 프레임은, "바디(body)" 버퍼에 저장되는 ("페이로드") 데이터의 하나 이상의 블록들로서 인코딩된다. "헤더" 버퍼는, 상기 데이터의 인코딩된 블록들이 저장되는 상기 바디 버퍼에서의 상기 장소들을 나타내는(예를 들면, 가리키는) "헤더" 데이터를 저장하는데 사용된다.
따라서, 바람직하게는, 메모리의 상기 2개의 별도의 서브구역들의 각각은, 바디 버퍼를 포함한다. 따라서, 바람직하게는, 상기 메모리의 구역은, 예를 들면, 상기 동일한 프론트 버퍼의 파트로서 2개의 별도의 바디 버퍼들을 포함한다.
바람직하게는, 특별한 프레임의 데이터의 상기 블록들 전부는, 동일한 서브구역에 저장된다, 예를 들면, 상기 제1 프레임의 상기 인코딩된 블록들은 상기 제1 서브구역에, 상기 제2 프레임의 상기 인코딩된 블록은 상기 제2 서브구역에 저장된다. 따라서, 바람직하게는, 상기 서브구역들의 각각은, (예를 들면, 적어도) 프레임의 상기 인코딩된 블록들의 전부(예를 들면, 프레임을 위한 전체 데이터 출력)를 저장하는 용량을 갖는다. 따라서, 비디오 데이터의 프레임이 데이터의 복수의 인코딩된 블록들로서 인코딩되고 상기 메모리의 구역이 메모리의 2개의 별도의 서브구역들을 포함할 때, 바람직하게는, 상기 방법은, 비디오 데이터의 상기 제1 프레임의 데이터의 복수의 인코딩된 블록들의 전부를 메모리의 상기 제1 서브구역에 저장하는 단계와, 비디오 데이터의 상기 제2 프레임의 데이터의 복수의 인코딩된 블록들의 전부를 메모리의 상기 제2 서브구역에 저장하는 단계를 포함한다(그리고, 상기 비디오 처리 유닛은, 비디오 데이터의 상기 제1 프레임의 데이터의 복수의 인코딩된 블록들의 전부를 메모리의 상기 제1 서브구역에 저장하고, 비디오 데이터의 상기 제2 프레임의 데이터의 복수의 인코딩된 블록들의 전부를 메모리의 상기 제2 서브구역에 저장할 수 있다.).
이 경우에, 상기 비디오 처리 유닛에 의해 인코딩된 데이터의 프레임에 대해서, 상기 프레임에 대한 상기 인코딩된 블록들 전부가 메모리의 상기 서브구역들 중 하나에 기록될 것이다. 상기 시퀀스에서 다음 프레임에 대해서는, 상기 인코딩된 블록들의 전부는 다른 나머지 서브구역들에 기록될 것이고, 그 후, 다음 프레임에 대해서는, 상기 인코딩된 블록들 전부는 상기 제1 서브구역에 기록되는 등 한다, 즉 상기 비디오 처리 유닛은 상기 인코딩된 프레임들을 저장할 때 상기 2개의 서브구역들 사이에서 "주고받는다".
동일한 서브구역에 프레임에 대한 상기 인코딩된 블록들 전부(그 후, 다른 나머지 서브구역에 이후의 프레임에 대한 상기 인코딩된 블록들 전부)를 저장하는 것은 (예를 들면, 메모리에 상기 인코딩된 블록들을 어디에 저장할지를 블록단위로 결정하는 시스템과 비교하여) 관리하는데 보다 단순한 시스템이다. 이것은, 상기 비디오 처리 유닛이 단지 상기 제1 프레임에 대한 상기 인코딩된 블록들을 상기 서브구역들 중 어느쪽에 저장할지를 알(또는 전해지기 또는 선택할) 필요할 뿐이기 때문이다. 프레임들의 상기 시퀀스에서의 이후의 프레임들에 대해서, 상기 비디오 처리 유닛은, 그 후 단지, 프레임 단위로 상기 2개의 서브구역들 사이에서 교대로 할 수 있을 뿐이어서, 상기 제2 프레임의 대응한 인코딩된 블록이 (상기 제1 서브구역에 저장되는) 상기 제1 프레임의 특별한 인코딩된 블록에 대한 상이한 장소(즉, 상기 제2 서브구역)에 저장되도록 보장한다.
데이터의 임의의 특별한 인코딩된 블록(또는 특별한 프레임에 대한 데이터의 블록들)을 저장할 메모리의 서브구역은, 임의의 적절하고 원하는 방식으로 결정되어 설정되어도 된다. 일 실시예에서, 프레임에 사용할 상기 서브구역은 상기 비디오 처리 유닛용 드라이버에 의해 설정된다. 따라서, 바람직하게는, 상기 드라이버는, 예를 들면, 상기 프레임에 대한 인코딩된 블록(들)(의 전부 등)을 어느 서브구역에 저장할지를 (상기 비디오 처리 유닛에 대해) 나타내기 위해 프레임에 대한 상태 정보를 설정하도록 구성된다.
데이터의 상기 특별한 인코딩된 블록을 상기 메모리의 구역의 상기 제1 장소에 저장하는 것뿐만 아니라, 상기 비디오 처리 유닛은, 이 제1 장소의 표시를 저장한다. 상기 제2 장소의 표시는, 그것의 저장된 장소에 관해 주어진 인코딩된 블록에 대한 상기 표시를 갱신하는 동일한 방식으로 저장되어, 예를 들면 및 바람직하게는, 단지 데이터의 주어진 인코딩된 블록에 대응한 하나의 유효 장소 표시만이 있다. 이것은, 상기 하나 이상의 컨슈머 처리 유닛들이 데이터의 인코딩된 블록을 위치시키(고 나서 사용하)는 것을 가능하게 한다.
데이터의 인코딩된 블록의 상기 장소의 상기 (예를 들면, 갱신된) 표시는, 상기 시스템의 임의의 적절하고 원하는 파트에 저장되어도 된다. 바람직하게는, 데이터의 인코딩된 블록의 상기 장소의 상기 표시는, 데이터의 상기 인코딩된 블록들로서 상기 동일한 메모리의 구역에 저장된다. 데이터의 인코딩된 블록의 상기 장소의 상기 표시는, 상기 메모리의 구역의 임의의 적절하고 원하는 파트에 저장되어도 된다. 바람직하게는, 상기 메모리의 구역은, 데이터의 인코딩된 블록의 상기 장소의 상기 표시(및 바람직하게는 데이터의 인코딩된 블록들이 저장되는 장소들에 대한 상기와 같은 표시들 전부)를 저장하는 메모리의 (예를 들면, 다른) 서브구역을 포함한다. 바람직하게는, 상기 서브구역은 헤더 버퍼를 구비한다. 따라서, 특히 바람직한 실시예에서, 상기 메모리의 구역은, 데이터의 상기 인코딩된 블록들을 저장하는 2개의 별도의 서브구역들(예를 들면, "바디" 버퍼들)과, 데이터의 상기 인코딩된 블록들의 상기 장소들의 상기 표시들을 저장하는 별도의 서브구역(예를 들면, "헤더" 버퍼)을 포함한다.
데이터의 인코딩된 블록의 상기 장소의 상기 표시는, 임의의 적절하고 원하는 포맷으로 저장되어도 된다. 바람직하게는, 데이터의 인코딩된 블록의 상기 장소의 상기 표시는, 헤더 데이터를 포함한다. 바람직하게는, 데이터의 인코딩된 블록의 상기 장소는, 데이터의 상기 인코딩된 블록이 저장되는 상기 장소에 대한 포인터를 포함한다. 상기 메모리의 구역이 메모리의 2개의 별도의 서브구역들을 포함하는 상기 실시예들에 있어서, 바람직하게는, 데이터의 인코딩된 블록의 상기 장소의 상기 표시는, 비디오 데이터의 상기 인코딩된 블록이 저장되는 메모리의 상기 서브구역에 대한 포인터를 포함한다.
따라서, 바람직한 실시예에서, 상기 비디오 처리 유닛은, 각각이 예를 들면, 출원인의 특허 US 8,542,939 B2, US 9,014,496 B2, US 8,990,518 B2 및 US 9,116,790 B2에 기재된 프레임 버퍼 압축기술들을 사용하여, 상기 바디 버퍼(들)에서의 상기 각각의 인코딩된 블록들을 가리키는, 비디오 데이터의 상기 인코딩된 블록을 (예를 들면, 2개의) "바디" 버퍼(들)에 저장하고, 헤더들의 세트를 "헤더" 버퍼에 저장할 수 있다.
(예를 들면, 포인터의 형태로) 데이터의 상기 인코딩된 블록의 상기 장소와 아울러, 상기 헤더 데이터는, 임의의 적절하고 원하는 정보도 포함할 수도 있다. 일 실시예에서, 데이터의 인코딩된 블록에 대한 상기 헤더 데이터는, (예를 들면, 상기 압축 데이터의 바이트 사이즈로서 저장된) 상기 인코딩된 블록의 사이즈에 관한 정보, 상기 블록에서의 상기 데이터가 어떻게 압축되어 있는지에 관한 정보, (예를 들면, 압축 블록이 데이터의 상기 인코딩된 블록의 일부만을 디코딩하는 가능할 수도 있는 비디오 인코딩 포맷들에 대해) 상기 압축 블록의 세부분할의 (예를 들면, 상기 바이트 사이즈로서 저장된) 상기 사이즈에 관한 정보 중, 하나 이상(바람직하게는, 전부)을 포함한다.
상기 제1 및 제2 장소들의 상기 표시는, 상기 비디오 처리 유닛에 의해 임의의 적절하고 원하는 방식으로 저장(갱신)되어도 된다. 바람직한 실시예에서, 표시는, 비디오 데이터의 상기 각각의 인코딩된 블록이 상기 하나 이상의 컨슈머 처리 유닛들에 의해 적어도 사용 가능하도록 완전히 저장되어 있으면 (예를 들면, 단지) 저장(갱신)된다.
이것은, 데이터의 상기 인코딩된 블록이 (예를 들면, 상기 메인 메모리에서) 상기 메모리의 구역에 완전히 저장되어 있을 때이다. 그렇지만, 상기 인코딩된 블록이 (컨슈머 처리 유닛에 의해 액세스될 수 있는) 공유 캐시에 (예를 들면, 처음으로) 저장될 때, 상기 표시는, 상기 인코딩된 블록이 상기 캐시에 완전히 저장되어 있을 때 저장(갱신)되어도 된다. 이러한 캐시가 캐시 계층을 포함할 때, 상기 표시는, 상기 인코딩된 블록이 상기 캐시에서 특별한 레벨, 즉 상기 인코딩된 블록이 상기 컨슈머 처리 유닛에 의해 액세스될 수 있는 레벨에 도달할 때, 저장(갱신)되어도 된다. 따라서, 일부 실시예들에서, 인코딩된 블록에 대한 상기 표시는, 상기 인코딩된 블록이 (예를 들면, 상기 메모리의 구역에서) 그것의 최종 장소에 도달하기 전에 저장(갱신)되어도 된다. 예를 들면, 일부 실시예들에서, 상기 장소 표시는 먼저 (예를 들면, 온칩 메모리에) 임시로 저장되는 한편, 데이터의 상기 인코딩된 블록은 저장중이다. 그 후, 상기 장소 표시는, 예를 들면 저장되어 있는 데이터의 상기 인코딩된 블록의 확인응답이 (아래에 설명된 것처럼) 수신되어 있을 때, 데이터의 상기 인코딩된 블록이 완전히 저장되어 있으면, 컨슈머 처리 유닛에 의해 판독될 수도 있도록 (예를 들면, 상기 메모리의 구역에) 저장(갱신)되어도 된다.
이것은, 상기 하나 이상의 컨슈머 처리 유닛들이 비디오 데이터의 "유효"(완전히 저장된) 인코딩된 블록들을 인지하게 되도록 하는데 도움이 되어서, 상기 하나 이상의 컨슈머 처리 유닛들이, 상기 메모리의 구역에 아직 완전히 저장되어 있지 않는 비디오 데이터의 임의의 인코딩된 블록들을 사용하려고 시도하는 것을 방지하는데 도움이 된다. 인코딩된 블록에 대한 상기 표시가 저장(갱신)되어 있으면, 상기 하나 이상의 컨슈머 처리 유닛들은, 어떠한 문제점도 일으키지 않고 유효하고 사용될 준비가 된 것을 아는, 상기 표시에 의해 나타낸 장소를 갖는 상기 인코딩된 블록을 사용할 수 있다. 또한, 이렇게 비디오 데이터의 상기 인코딩된 블록들의 상기 장소들의 상기 표시들을 저장(갱신)하는 것은, 비디오 처리 유닛과 상기 하나 이상의 컨슈머 처리 유닛과의 사이에서 요구된 동기화를 감소시킨다.
바람직한 실시예에서, 상기 방법은, 상기 하나 이상의 컨슈머 처리 유닛들에서 사용하는데 적어도 이용 가능하도록 데이터의 인코딩된 블록이 (예를 들면, 완전히) 저장되어 있는 (예를 들면, 상기 비디오 처리 유닛에 대한) 확인응답을 하는 단계를 포함한다(그리고, 상기 메모리 시스템은, 상기 하나 이상의 컨슈머 처리 유닛들에서 사용하는데 적어도 이용 가능하도록 데이터의 인코딩된 블록이 (예를 들면, 완전히) 저장되어 있는 (예를 들면, 상기 비디오 처리 유닛에 대한) 확인응답을 할 수 있다.). 따라서, 일부 실시예들에서, 상기 확인응답은, 위에 개요를 서술한 것처럼, 데이터의 상기 인코딩된 블록이 완전히 저장되어 있을 때, 예를 들면 공유 캐시가 사용될 때, 제공되어도 된다.
이러한 기록 확인을 제공하는 것에 의해, 상기 비디오 처리 유닛은, (예를 들면, 단지) 데이터의 상기 인코딩된 블록이 (예를 들면, 완전히) 저장되어 있을 때 데이터의 상기 인코딩된 블록의 상기 장소의 상기 표시를 저장할 수 있다. 따라서, 바람직하게는, 상기 방법은, 상기 메모리 시스템이 데이터의 상기 인코딩된 블록이 예를 들면, 상기 메모리의 구역에, (예를 들면, 완전히) 저장되어 있도록 확인응답 하였으면(그리고, 바람직하게는 상기 메모리 시스템이 확인응답하는 것에 응답하여), 데이터의 인코딩된 블록의 상기(제1 또는 제2) 장소의 표시를 저장(예를 들면, 갱신)하는 단계를 포함한다(그리고, 상기 비디오 처리 유닛은, 상기 메모리 시스템이 데이터의 상기 인코딩된 블록이 예를 들면, 상기 메모리의 구역에, (예를 들면, 완전히) 저장되어 있도록 확인응답 하였으면(그리고, 바람직하게는 상기 메모리 시스템이 확인응답하는 것에 응답하여), 데이터의 인코딩된 블록의 상기(제1 또는 제2) 장소의 표시를 저장(예를 들면, 갱신)할 수 있다.).
이 실시예들에서, 상기 표시가, 데이터의 상기 대응한 인코딩된 블록이 저장되어 있는 상기 제2 장소에 대해 갱신되어 있어, 상기 메모리의 구역이 지금 데이터의 풀("유효") 인코딩된 블록을 저장중이면, 그 후, 상기 제1 장소에 저장된 데이터의 상기 특별한 인코딩된 블록은 겹쳐써져도 된다. 이것은, 상기 메모리의 구역이, 데이터의 상기 인코딩된 블록의 장소의 상기 장소를 거쳐 상기 하나 이상의 컨슈머 처리 유닛들에 이용 가능한, 상기 데이터의 상기 인코딩된 블록의 지금 완전히 저장된 새로운 버전을 가져, 데이터의 상기 인코딩된 블록의 오래된 버전이 더 이상 상기 하나 이상의 컨슈머 처리 유닛들에 액세스 가능하지 않을 수도 있기 때문이다(즉, 상기 표시가 상기 제2 장소로 갱신되어 있기 때문이다).
일부 실시예들에서, 데이터의 인코딩된 블록(의 이후의 버전 등)에 의해 겹쳐쓰기 위한 데이터의 상기 인코딩된 블록의 오래된 버전을 저장중인 상기 메모리의 구역에서 장소의 사용은, 상기 장소를 겹쳐쓰는 것이 안전하다는 것을 확인하기 위해서, 상기 비디오 처리 유닛과 상기 하나 이상의 컨슈머 처리 유닛들간의 (묵시적 또는 명시적) 동기화를 요구할 수도 있다. 이것은, 예를 들면, 오래된 장소 표시가, 예를 들면 데이터의 상기 인코딩된 블록의 오래된 버전을 위치시키는데 사용하기 위해서, 컨슈머 처리 유닛에 의해 캐시되어 있을 때, 필요할 수도 있다.
상기 표시가, (예를 들면, 상기 표시의 오래된(제1) 버전을 무효로 하는(그리고, 새로운(제2) 버전을 유효로 하는) 새로운(제2) 표시를 상이한 메모리 장소에 제공함으로써 데이터의 상기 새롭게 저장된 인코딩된 블록의 새로운(제2) 장소로 갱신되어도 되지만, 바람직한 실시예에서, (상기 제2 장소의) 상기 표시는, 상기 메모리의 구역에서의 동일한 장소에서의 상기 제2 장소의 상기 표시를 상기 제1 장소의 상기 표시로서 저장함으로써(예를 들면, 겹쳐씀으로써) 갱신된다. 이에 따라, 컨슈머 처리 유닛은, 데이터의 인코딩된 블록을 사용하고 싶을 때, 상기 표시를 사용하여 그것의 장소를 간단히 검색할 수 있어, 판독될 수 있는 상기 인코딩된 블록의 가장 최근의(예를 들면, 완전히 기록된) 버전을 대상으로 삼을 것이다. 상기 인코딩된 블록의 보다 새로운 버전이 이용 가능할 때, 상기 표시는, 컨슈머 처리 유닛이 상기 인코딩된 블록의 상기 보다 새로운 버전에 액세스할 수 있도록 다시 갱신된다.
비디오 데이터의 프레임이 데이터의 복수의 블록들로서 인코딩될 때, 데이터의 각각의 인코딩된 블록들의 상기 장소들의 상기 표시들은, 특별한 장소들에 저장되고(예를 들면, 상기 비디오 프로세서와 상기 하나 이상의 컨슈머 처리 유닛들에 알려지고) 데이터의 상기 각각의 인코딩된 블록들이 상기 메모리의 구역에 저장되어 있을 때마다 갱신되어(예를 들면, 겹쳐써져), 데이터의 상기 각각의 인코딩된 블록들의 새로운 버전의 상기 장소를 (상기 하나 이상의 컨슈머 처리 유닛들에) 보여줄 것이다.
상기 하나 이상의 컨슈머 처리 유닛들은, 임의의 적절하고 원하는 방식으로 상기 메모리의 구역에 저장된 데이터의 상기 하나 이상의 인코딩된 블록들을 사용하여도 된다. 기본 레벨에 있어서, 상기 하나 이상의 컨슈머 처리 유닛들은, 상기 메모리의 구역에 저장된 비디오 데이터의 프레임의 데이터의 상기 하나 이상의 인코딩된 블록들을 판독할 수 있어, 상기 블록(들)의 상기 장소(들)의 상기 표시(들)를 사용한 데이터의 이 블록(들)을 상기 메모리의 구역에 위치시킨다. 따라서, 상기 하나 이상의 컨슈머 처리 유닛들은, 상기 블록(들)의 상기 장소(들)의 상기 표시(들)가 상기 메모리의 구역에 저장되어 있으면 비디오 데이터의 프레임에 대한 상기 하나 이상의 인코딩된 블록들을 사용하는 것이 가능하다.
바람직한 실시예에서, 상기 방법은, (컨슈머 처리 유닛이 데이터의 특별한 인코딩된 블록을 사용하고 싶을 때) 상기 컨슈머 처리 유닛이:
데이터의 상기 인코딩된 블록의 상기 장소의 상기 표시를 판독하는 단계;
데이터의 상기 인코딩된 블록에 대한 상기 장소 표시에 의해 나타낸 상기 메모리의 구역에서의 상기 장소로부터 데이터의 상기 인코딩된 블록을 판독하는 단계; 및
데이터의 상기 인코딩된 블록을 소비(예를 들면, 표시 및/또는 이와는 달리 처리)하는 단계를 포함한다.
이에 대응하게, 바람직하게는, 상기 비디오 데이터 처리 시스템은, (컨슈머 처리 유닛이 데이터의 특별한 인코딩된 블록을 사용하고 싶을 때):
데이터의 상기 인코딩된 블록의 상기 장소의 상기 표시를 판독하고;
데이터의 상기 인코딩된 블록에 대한 상기 장소 표시에 의해 나타낸 상기 메모리의 구역에서의 상기 장소로부터 데이터의 상기 인코딩된 블록을 판독하며; 및
데이터의 상기 인코딩된 블록을 소비(예를 들면, 표시 및/또는 이와는 달리 처리)할 수 있는,
처리 회로를 (예를 들면, 각각) 구비하는, 하나 이상의 컨슈머 처리 유닛들을 구비한다.
바람직하게는, 상기 컨슈머 처리 유닛은, 프레임들의 상기 시퀀스에서 프레임에 대해 사용하고 싶은 상기 인코딩된 블록의 각각에 대해 이(및 임의의 다른 선택적 또는 바람직한) 단계들을 (예를 들면, 적절하게) 수행한다.
바람직하게는, 상기 방법은, 비디오 데이터의 프레임의 데이터의 상기 하나 이상의 인코딩된 블록들을 디코딩하는 단계를 포함한다(그리고, 상기 하나 이상의 컨슈머 처리 유닛들은, 비디오 데이터의 프레임의 데이터의 상기 하나 이상의 인코딩된 블록들을 디코딩할 수 있다.).
상기 데이터의 인코딩된 블록들이 저장되는 상기 메모리의 구역이, 상기 비디오 처리 유닛이 상기 메모리의 구역에 데이터의 그 밖의 데이터의 인코딩된 블록들을 저장중인 동안에 데이터의 인코딩된 블록들을 상기 메모리의 구역으로부터 컨슈머 처리 유닛이 판독할 수 있도록 구성되는 것 때문에, 바람직하게는, 상기 방법은:
상기 비디오 처리 유닛이 프레임에 대한 데이터의 하나 이상의 그 밖의 인코딩된 블록들을 상기 동일한 메모리의 구역에 저장(기록)중인 동안에 상기 프레임에 대한 데이터의 하나 이상의 인코딩된 블록들을 상기 메모리의 구역으로부터 컨슈머 처리 유닛이 판독하는 단계를 포함한다(그리고, 상기 비디오 처리 유닛의 상기 처리회로와 컨슈머 처리 유닛은:
상기 비디오 처리 유닛이 프레임에 대한 데이터의 하나 이상의 그 밖의 인코딩된 블록들을 상기 동일한 메모리의 구역에 저장(기록)중인 동안에 상기 프레임에 대한 데이터의 하나 이상의 인코딩된 블록들을 상기 메모리의 구역으로부터 판독할 수 있다.).
상기 비디오 처리 유닛에 의해 저장되는 데이터의 다른 나머지 인코딩된 블록(들)은, 상기 컨슈머 처리 유닛에 의해 판독되는 데이터의 상기 특별한 블록에 대한 (이후의 프레임에서의) 데이터의 대응한 블록이어도 되거나, 동일한 또는 상기 이후의 프레임에서의 데이터의 다른 블록이어도 된다. 따라서, 컨슈머 처리 유닛은, 데이터의 인코딩된 블록을, 비디오 데이터의 상기 프레임이 상기 메모리의 구역에 완전히 저장되어 있기 전에, 예를 들면, 동일한 프레임의 데이터의 그 밖의 인코딩된 블록(들)이 상기 동일한 메모리의 구역에 저장되는 중인 동안에, 상기 메모리의 구역으로부터 판독하여도 된다.
바람직하게는, 상기 하나 이상의 컨슈머 처리 유닛들은, (예를 들면, 각각,) 상기 비디오 처리 유닛이 데이터의 인코딩된 블록들을 상기 메모리의 구역에 저장중인 동안에 상기 메모리의 구역(의 전체 등)에 액세스(상기 메모리의 구역으로부터 데이터의 인코딩된 블록들을 판독)할 수 있다.
마찬가지로, 상기 메모리의 구역이 2개의 별도의 서브구역들(예를 들면, 바디 버퍼들)을 포함할 때, 컨슈머 처리 유닛은, 데이터의 인코딩된 블록을, 상기 비디오 처리 유닛이 상기 동일한 서브구역에 데이터의 그 밖의 인코딩된 블록들을 저장중인 동안에 상기 서브구역들 중 하나로부터 판독하여도 되거나(예를 들면, 저장되는 상기 그 밖의 인코딩된 블록(들)과 같은 프레임에서의 블록을 판독할 때), 컨슈머 처리 유닛은, 데이터의 인코딩된 블록을, 상기 비디오 처리 유닛이 다른 나머지 서브구역에 데이터의 그 밖의 인코딩된 블록들을 저장중인 동안에 상기 서브구역들 중 하나로부터 판독하여도 된다(예를 들면, 저장된 다른 나머지 블록(들)으로부터 상기 이전의 프레임에서의 블록을 판독할 때).
상기 메모리의 구역이 데이터의 상기 인코딩된 블록들이 저장되는 2개의 서브구역들을 포함할 때, 바람직하게는, 상기 하나 이상의 컨슈머 처리 유닛들은, (예를 들면, 각각,) 임의의 주어진 시간에 상기 메모리의 상기 2개의 서브구역들 중 어느 한쪽에 액세스할 수 있다.
상기 하나 이상의 컨슈머 처리 유닛들은, 처리 유닛들, 예를 들면, 상기 메모리의 구역에 인코딩되고 저장된 후 데이터의 상기 인코딩된 블록들을 사용하는 임의의 처리 유닛들의 임의의 적절하고 원하는 형태를 구비하여도 된다. 일 실시예에서, 상기 컨슈머 처리 유닛들은, 비디오 데이터의 상기 인코딩된 블록들을 한층 더 처리할 수 있다, 예를 들면 시각적 현상(들)을 상기 비디오 데이터 적용할 수 있다. 이 때문에, 상기 하나 이상의 컨슈머 처리 유닛들은, 하나 이상의 그래픽 처리 유닛들을 구비하여도 된다.
그렇지만, 바람직한 실시예에서, 상기 하나 이상의 컨슈머 처리 유닛들은 하나 이상의 표시 처리 유닛들을 구비하고, 이때 상기 표시 처리 유닛들은, 비디오 데이터의 상기 인코딩된 블록들을 표시, 예를 들면 비디오 데이터의 프레임들의 상기 시퀀스를 표시(의 목적상 비디오 데이터의 상기 인코딩된 블록들을 사용하는 등)할 수 있다.
주어진 프레임에 대한 데이터의 상기 인코딩된 블록들이 다양한 상이한 플레이스들(places)에, 예를 들면, 상기 메모리의 구역의 2개의 서브구역들(예를 들면, 바디 버퍼들) 중 어느 한쪽에, 저장되어도 되지만, 상기 하나 이상의 컨슈머 처리 유닛들은, 단지, 상기 개요를 서술한 것처럼, 데이터의 인코딩된 블록의 상기 장소의 상기 표시를 사용하여, 그 블록을 위치시킨다. 따라서, 데이터의 인코딩된 블록을 사용하고 싶어하는 컨슈머 처리 유닛은, 상기 메모리의 구역이 어떻게 구성되는지, 또는 데이터의 상기 하나 이상의 인코딩된 블록들이 상기 메모리의 구역에 어디에 저장되는지를(예를 들면, 상기 데이터에 액세스하기에 앞서) 알 필요가 없다.
일부 실시예들에서, 상기 하나 이상의 컨슈머 처리 유닛들은, (예를 들면, 각각,) (예를 들면, 변환 색인 버퍼) 데이터를 메모리로부터 사전페치할 수 있어도 된다. 상기 데이터의 인코딩된 블록들을 저장하는 상기 메모리의 구역이 과용량을 가질 때, 바람직하게는, 상기 하나 이상의 컨슈머 처리 유닛들은, (예를 들면, 각각,) 컨슈머 처리 유닛이 필요한 정보 전부를 사전페치하도록 (예를 들면, 상기 메모리의 구역이 2개의 별도의 서브구역들을 포함할 때) 상기 메모리의 구역의 구성에 관해 알려진다. 따라서, 바람직하게는, 상기 하나 이상의 컨슈머 처리 유닛들은, (예를 들면, 각각,) 메모리의 상기 2개의 별도의 서브구역들 양쪽에 대한 (예를 들면, 변환 색인 버퍼) 데이터를 사전페치할 수 있다.
바람직하게는, 상기 하나 이상의 컨슈머 처리 유닛들은, (예를 들면, 각각,) 메모리의 상기 2개의 서브구역들에 저장된 데이터의 인코딩된 블록들에 액세스하는(그리고 데이터를 사전페치하는) 메모리의 상기 2개의 서브구역들을 사용하도록 (예를 들면, 소프트웨어 스위치, 예를 들면, 상태 정보에서의 플래그에 의해) 설정된다. 또는, 하드웨어 블록은, 메모리의 상기 2개의 서브구역들에 저장된 데이터의 인코딩된 블록들에 액세스하는(그리고 데이터를 사전페치하는) 메모리의 상기 2개의 서브구역들을 사용하게 상기 하나 이상의 컨슈머 처리 유닛들 설정하도록 구성되어도 된다. 따라서, 이 실시예들에서, 바람직하게는, 상기 하나 이상의 컨슈머 처리 유닛들은, 데이터의 상기 인코딩된 블록들이 저장되어도 되는 메모리의 2개의 서브구역들이 있다는 것을 인지한다.
데이터의 상기 인코딩된 블록들을 사용중인 컨슈머 처리 유닛은 1개만이 있을 수도 있지만, 바람직한 실시예에서는, 데이터의 상기(동일한) 인코딩된 블록들을 사용한 컨슈머 처리 유닛이 1개보다 많이(복수가) 있을 수 있고, 바람직하게는, 있다. 복수의 컨슈머 처리 유닛들이 데이터의 상기 동일한 인코딩된 블록들을 판독 및 사용중일 경우, 각 컨슈머 처리 유닛은, 바람직하게는, 본 발명의 방식으로 (다른 나머지 컨슈머 처리 유닛들과는 상관없이) 동작한다.
바람직한 실시예들에서, 예를 들면, 비디오 데이터의 상기 프레임들이 (예를 들면, 각각,) 데이터의 복수의 블록들로서 인코딩될 때, 본 발명은, 상기 프레임에서의 데이터의 상기 블록들의 각각에 대해 수행된다, 즉 (연관 표시를 갖는) 한쪽의 장소에서 제1 프레임의 각 블록을 인코딩 및 저장하고 나서 상이한 장소에서 제2 프레임의 대응한 블록을 인코딩 및 저장하고, 이에 따라 상기 저장된 인코딩된 블록들의 상기 장소의 상기 표시를 갱신한다.
마찬가지로, 바람직하게는, 본 발명은, 프레임들의 시퀀스에서 비디오 데이터의 복수의 프레임들에 대해 수행된다, 즉 이전의 프레임으로부터 대응한 블록(들)에 대한 상이한 장소에서의 비디오 데이터의 하나의 프레임으로부터 (예를 들면, 복수의) 블록(들)을 인코딩 및 저장하여, 프레임들의 상기 시퀀스에서의 (상기 이전의 프레임에 대한) 연속적 프레임마다 반복하고, 상기 저장된 인코딩된 블록들의 상기 장소들의 상기 표시들을 갱신한다.
상기 국면들 및 실시예들이 주로 비디오 처리 시스템을 참조하여 설명하고 있었지만, 본 발명은 "생성(producing)" 처리 유닛이 하나 이상의 "소비" 처리 유닛들에서 사용하기 위한 데이터의 인코딩된 블록들을 발생 및 저장하도록 임의의 적절하고 원하는 데이터 처리 시스템에 구현되어도 된다는 것을 알 것이다. 따라서, 비디오 처리 시스템들뿐만 아니라, 본 발명은, 그 밖의 데이터 처리 시스템들, 이를테면 화상 처리 시스템들, 및 그래픽 처리 시스템들에도 사용되어도 된다.
따라서, 다른 국면에서 볼 때, 본 발명은, 데이터 처리 시스템의 프로듀서 처리 유닛이 상기 데이터 처리 시스템의 하나 이상의 컨슈머 처리 유닛들에서 사용하기 위한 데이터 출력들의 시퀀스를 생성할 수 있는 상기 데이터 처리 시스템의 동작방법을 제공하고, 이 방법은:
상기 프로듀서 처리 유닛에 의해, 데이터 출력들-각 데이터 출력은 데이터의 하나 이상의 인코딩된 블록들로서 인코딩된다-의 시퀀스에서 제1 데이터 출력을 인코딩하고, 상기 프로듀서 처리 유닛이 메모리의 구역에 상기 데이터 출력에 대한 데이터의 그 밖의 인코딩된 블록들을 저장중인 동안에 처리하기 위해 컨슈머 처리 유닛에서 데이터의 인코딩된 블록들을 판독할 상기 메모리의 구역에, 차례로 데이터 출력마다 데이터의 상기 인코딩된 블록들을 저장하는 단계를 포함하고;
상기 방법은:
상기 프로듀서 처리 유닛에 의해:
데이터 출력들의 상기 시퀀스에서 제1 데이터 출력의 특별한 인코딩된 블록 데이터를, 상기 메모리의 구역에서의 제1 장소에 저장하는 단계; 및
데이터의 상기 특별한 인코딩된 블록에 대해서, 데이터의 상기 특별한 블록을 판독할 때 컨슈머 처리 유닛에서 사용하기 위한 상기 제1 장소의 표시를, 저장하는 단계; 및
상기 프로듀서 처리 유닛에 의해, 상기 제1 데이터 출력에서 데이터의 상기 특별한 인코딩된 블록에 대응하는 데이터 출력들의 상기 시퀀스에서의 제2 데이터 출력의 데이터의 인코딩된 블록을 저장할 때, 상기 메모리의 구역에서 상기 제1 장소와 다른 제2 장소에, 상기 제2 데이터 출력의 데이터의 그 인코딩된 블록을 저장하는 단계; 및
상기 메모리의 상기 구역에서 상기 인코딩된 블록의 상기 장소의 상기 표시를 상기 제2 장소로 갱신하는 단계를 더욱 포함한다.
다른 국면에서 볼 때, 본 발명의 데이터 처리 시스템은:
데이터 처리 시스템의 하나 이상의 컨슈머 처리 유닛들에서 사용하기 위한 데이터 출력들의 시퀀스를 생성할 수 있는 프로듀서 처리 유닛; 및
상기 프로듀서 처리 유닛에 의해 생성된 데이터 출력들의 시퀀스를 저장하는 메모리를 구비하고;
상기 프로듀서 처리 유닛은:
데이터 출력들-각 데이터 출력은 데이터의 하나 이상의 인코딩된 블록들로서 인코딩된다-의 시퀀스를 인코딩하고; 및
상기 프로듀서 처리 유닛이 메모리의 구역에 상기 데이터 출력에 대한 데이터의 그 밖의 인코딩된 블록들을 저장중인 동안에 처리하기 위해 컨슈머 처리 유닛에서 데이터의 인코딩된 블록들을 판독할 상기 메모리의 구역에, 차례로 데이터 출력마다 데이터의 상기 인코딩된 블록들을 저장할 수 있는, 처리회로를 구비하고;
상기 처리회로는: 한층 더,
제1 데이터 출력의 데이터의 특별한 인코딩된 블록을, 상기 메모리의 상기 구역에서의 제1 장소에 저장하고; 및
데이터의 상기 특별한 인코딩된 블록에 대해서, 데이터의 상기 특별한 블록을 판독할 때 컨슈머 처리 유닛에서 사용하기 위한 상기 제1 장소의 표시를, 저장할 수 있고;
상기 처리회로는, 한층 더, 상기 제1 데이터 출력에서 데이터의 상기 특별한 인코딩된 블록에 대응하는 데이터 출력들의 상기 시퀀스에서의 제2 데이터 출력의 데이터의 인코딩된 블록을 저장할 때, 상기 메모리의 구역에서 상기 제1 장소와 다른 제2 장소에, 상기 제2 데이터 출력의 데이터의 그 인코딩된 블록을 저장하고; 및
상기 메모리의 상기 구역에서 상기 인코딩된 블록의 상기 장소의 상기 표시를 상기 제2 장소로 갱신할 수 있다.
당업자라면 알 듯이, 본 발명의 상기 국면들은, 적절하게, 여기서 설명된 본 발명의 상기 바람직하고 선택적인 특징들 중 어느 하나 이상 또는 전부를 포함할 수 있고, 바람직하게는 포함한다. 특히, 비디오 데이터의 프레임들을 참조하여 설명한 상기 특징들은, 바람직하게는, 데이터의 인스턴스들에 동등하게 적용하고; 상기 비디오 처리 유닛을 참조하여 설명한 상기 특징들은 바람직하게는 상기 프로듀서 처리 유닛에 동등하게 적용하고; 또, 상기 하나 이상의 컨슈머 처리 유닛들을 참조하여 설명한 상기 특징들은 바람직하게는 상기 하나 이상의 컨슈머 처리 유닛들에 동등하게 적용한다. 예를 들면, 예를 들면, 바람직하게는, 상기 시퀀스에서 (예를 들면, 각) 데이터 출력은, 데이터의 어레이, 예를 들면 비디오 데이터의 프레임을 포함한다.
본 발명의 상기 처리 유닛들의 어느 하나 이상 또는 전부는, 처리 유닛 회로로서, 예를 들면, 하나 이상의 고정된 기능 유닛들(하드웨어)(처리회로)의 형태로, 및/또는, 원하는 동작을 수행하기 위해 프로그래밍될 수 있는 프로그램 가능 처리회로의 형태로, 구체화되어도 된다. 마찬가지로, 상기 처리유닛들의 어느 하나 이상 또는 전부와 본 발명의 처리 유닛 회로는 다른 나머지 처리 유닛들의 어느 하나 이상이나 처리 유닛 회로에 대한 별도의 회로소자로서 제공되어도 되고, 및/또는, 상기 처리 유닛들의 어느 하나 이상 또는 전부와 처리 유닛 회로는, 적어도 공유 처리회로로 부분적으로 형성되어도 된다.
상기 처리 유닛들은, 적절한 전체 프로세서의 일부, 이를테면 비디오 프로세서(비디오 처리 유닛) 또는 그래픽 프로세서(그래픽 처리 유닛)이어도 된다.
임의의 국면 또는 실시예에서 여기서 설명된 상기 처리 유닛들 및/또는 데이터 처리 시스템은, 시스템 온 칩(SoC)을 포함하여도 되거나, 시스템 온 칩이어도 되거나, 시스템 온 칩의 일부를 형성하여도 된다.
상기 특별한 처리 유닛들뿐만 아니라, 본 발명의 상기 데이터 처리 시스템 또는 비디오 처리 시스템은, 이와는 달리, 데이터(예를 들면, 비디오) 처리 시스템이 구비하여도 되는, 임의의 적절하고 원하는 요소들, 및 유닛들 등도 구비할 수 있다. 따라서, 바람직한 실시예에서, 상기 데이터 처리 시스템은, 호스트(예를 들면, 중앙) 프로세서를 더 구비한다. 그 호스트 프로세서는, 예를 들면, 상기 시스템 데이터 처리 시스템의 상기 처리 유닛들에 의한 데이터(예를 들면, 비디오) 처리를 요구하는 애플리케이션들을 실행하여도 된다.
상기 호스트 프로세서는, 적절한 코맨드들과 데이터를 상기 처리 유닛들에 보내고 제어하여 그 데이터 처리 동작들을 행하고 상기 호스트 프로세서상에서 실행하는 애플리케이션들에서 요구한 데이터 스트림이나 스트림들을 생성 및/또는 사용하여도 된다. 이를 용이하게 하기 위해서, 상기 호스트 프로세서는, 상기 처리 유닛들용 드라이버나 드라이버들을 실행하여도 되고, 및/또는 상기 처리 유닛(들)의 프로그램 가능 실행 유닛(들)에 의해 실행되는 프로그램들을 컴파일하는 하나의 컴파일러 또는 컴파일러들을 실행하여도 된다.
실시예들에 있어서, 상기 처리 유닛(들) 또는 시스템은, 여기서 설명된 데이터를 저장하고, 및/또는 여기서 설명된 프로세스들을 행하기 위한 소프트웨어를 저장하는, 하나 이상의 메모리들 및/또는 메모리 디바이스들을 구비하여도 되고, 및/또는 그 하나 이상의 메모리들 및/또는 메모리 디바이스들과 통신하여도 된다. 상기 처리 유닛(들) 또는 시스템은, 상기 데이터 스트림에 의거한 화상들을 표시하기 위한 디스플레이를 구비하여도 되고, 및/또는 이 디스플레이와 통신하여도 된다. 상기 처리 유닛(들) 또는 시스템은, 데이터 요소들의 어레이들을 생성하는 비디오 카메라를 구비하여도 되고, 및/또는 이 비디오 카메라와 통신하여도 된다.
본 발명은, 임의의 적절한 시스템, 이를테면 적절하게 구성된 컴퓨터나 마이크로프로세서 기반 시스템에 구현될 수 있다. 바람직한 실시예에서, 본 발명은, 컴퓨터 및/또는 마이크로프로세서 기반 시스템에 구현된다.
본 발명의 각종 기능들은, 임의의 원하는 적절한 방식으로 실행될 수 있다. 예를 들면, 본 발명의 상기 단계들 및 기능들은, 원하는 대로, 하드웨어나 소프트웨어로 구현될 수 있다. 따라서, 예를 들면, 달리 나타내지 않으면, 본 발명의 각종 회로, 기능적 요소들, 스테이지들, 유닛들, 및 "수단"은, 적절하게 전용 하드웨어 요소들(처리회로) 및/또는 원하는 방식으로 작동하도록 프로그래밍될 수 있는 프로그램 가능한 하드웨어 요소들(처리회로)와 같은 각종 단계들이나 기능들 등을 행할 수 있는, 적절한 프로세서나 프로세서들, 콘트롤러나 콘트롤러들, 기능 유닛들, 회로, 처리 로직, 마이크로프로세서 구성들 등을 포함할 수도 있다.
본 발명의 각종 단계들이나 기능들 등이, 주어진 프로세서상에서 병렬로 복제 및/또는 실행될 수도 있다. 마찬가지로, 각종 처리 유닛들은, 필요한 경우 처리회로 등을 공유할 수도 있다.
상술한 특정한 단계들이나 기능들 등을 실행하는데 필요한 임의의 하드웨어에 따라, 상기 시스템은, 다른 경우라면, 상기 데이터(예를 들면, 비디오) 처리 시스템들이 구비하는 통상의 기능 유닛들 등의 어느 하나 이상 또는 전부를 포함할 수 있다.
특히 바람직한 실시예에서, 본 발명의 각종 기능들은, 당해 상기 데이터 스트림(들)을 발생하고 출력하는 단일의 데이터(예를 들면, 비디오) 처리 플랫폼상에서 실시된다.
또한, 본 발명의 상술한 실시예들 모두가, 적절하게, 여기서 설명한 특징들 중 어느 하나 이상 또는 모두를 포함할 수 있고, 일 실시예에서는 포함한다는 것을 알 것이다.
본 발명에 따른 방법들은, 소프트웨어, 예를 들면 컴퓨터 프로그램들을 적어도 일부 사용하여 구현되어도 된다. 따라서, 본 발명의 다른 실시예들은, 데이터(예를 들면, 비디오) 프로세서상에 인스톨될 때 여기서 설명된 방법들을 실행하도록 구체적으로 구성된 컴퓨터 소프트웨어와, 데이터(예를 들면, 비디오) 프로세서상에 작동할 때 여기서 설명된 방법들을 행하기 위한 컴퓨터 소프트웨어 코드 부분들을 포함한 컴퓨터 프로그램 요소와, 상기 프로그램이 데이터(예를 들면, 비디오) 프로세서상에 작동할 때 여기서 설명된 방법이나 방법들의 단계 모두를 행하도록 구성된 코드를 포함한 컴퓨터 프로그램을 포함한다. 상기 데이터(예를 들면, 비디오) 프로세서는, 마이크로프로세서 시스템, 프로그램 가능한 FPGA(Field Programmable Gate Array) 등이어도 된다.
또한, 본 발명은, 데이터(예를 들면, 비디오) 프로세서를 갖는 데이터(예를 들면, 비디오) 처리장치나 시스템을 작동시키는데 사용될 때 상기 데이터(예를 들면, 비디오) 프로세서와 함께 상기 장치나 시스템이 본 발명의 방법들의 단계들을 실행하게 하는 상기 소프트웨어를 구비한 컴퓨터 소프트웨어 캐리어까지 확장된다. 이러한 컴퓨터 소프트웨어 캐리어는, ROM칩, CD ROM, RAM, 플래시 메모리나, 디스크 등의 물리적 기억매체일 수 있거나, 유선상의 전자신호, 광신호 또는 위성 등에 관한 무선신호 등의 신호일 수 있다.
본 발명의 방법들의 모든 단계들은, 컴퓨터 소프트웨어로 실행될 필요가 없고 이에 따라서 다른 실시예들에서 컴퓨터 소프트웨어와, 여기 기재된 방법들의 단계들의 적어도 하나를 실행하기 위한 컴퓨터 소프트웨어 캐리어 상에 인스톨된 상기 소프트웨어를 포함하지 않는다는 것도 또한 알 것이다.
이에 따라, 본 발명은, 컴퓨터 시스템에 사용하기 위한 컴퓨터 프로그램 제품으로서 적절히 구체화되어도 된다. 이러한 구현은, 유형의, 비일시적 매체, 이를테면 컴퓨터 판독 가능한 매체, 예를 들면, 디스켓, CD-ROM, ROM, RAM, 플래시 메모리, 또는 하드디스크에 고정된 일련의 컴퓨터 판독 가능한 명령들을 포함할 수도 있다. 또한, 본 발명은, 광학적이거나 아날로그적 통신회선을 포함하지만 이에 한정되지 않거나, 또는, 마이크로웨이브, 적외선 또는 그 밖의 투과 기술을 포함하지만 이에 한정되지 않는 무선 기술을 무형으로 사용하는 유형의 매체 상에서, 모뎀이나 그 밖의 인터페이스 디바이스를 거쳐 컴퓨터 시스템에 전송가능한, 일련의 컴퓨터 판독 가능한 명령을 포함할 수 있었다. 상기 일련의 컴퓨터 판독 가능한 명령은, 여기서 이전에 설명된 기능성의 모두 또는 일부를 구체화한다.
당업자는, 여러 가지의 컴퓨터 아키텍처나 운영체계에 사용하기 위한 다수의 프로그래밍 언어로 상기 컴퓨터 판독 가능한 명령을 기록할 수 있다는 것을 알 것이다. 또한, 이러한 명령은, 반도체, 마그네틱, 또는 광학적 기술을 포함하지만 이에 한정되지 않는 현재 또는 미래의 어떠한 메모리 기술을 사용하여서도 저장될 수도 있거나, 광학적, 적외선 또는 마이크로웨이브를 포함하지만 이에 한정되지 않는 현재 또는 미래의 어떠한 통신기술을 사용하여서도 전송되어도 된다. 이러한 컴퓨터 프로그램 제품은, 인쇄된 문서나 전자 문서가 첨부되는 착탈 가능한 매체, 예를 들면, 컴퓨터 시스템, 예를 들면, 시스템 ROM이나 고정형 디스크 상에 사전 적재된 쉬링크 랩 소프트웨어로서 배포되거나, 네트워크, 예를 들면, 인터넷이나 월드 와이드 웹상에서 서버나 전자 게시판으로부터 배포되어도 된다고 생각된다.
이하, 본 발명의 각종 실시예들을, 아래의 첨부도면을 일례로만 또한 이 첨부도면을 참조하여 설명한다:
도 1은 본 발명의 실시예의 개략적인 개요를 도시한 것이고;
도 2는 본 발명의 실시예에 따라 동작할 수 있는 데이터 처리 시스템을 개략적으로 도시한 것이고;
도 3은 본 발명의 실시예들에서 사용될 수 있는 메모리 시스템을 개략적으로 도시한 것이고;
도 4는 본 발명의 실시예에서 비디오 처리 유닛의 동작을 도시하는 흐름도이고;
도 5는 본 발명의 실시예를 사용하여 인코딩되는 비디오 데이터의 2개의 프레임들을 개략적으로 도시한 것이고;
도 6은 본 발명의 실시예에서 표시 처리 유닛의 동작을 도시하는 흐름도이다.
(적절한 경우) 상기 도면들에서 동일한 특징에 대해 동일한 참조번호를 사용한다.
상기 도면들은, 본 발명의 실시예들에 관련하는 비디오 처리장치 및 시스템의 요소들을 도시한 것이다. 당업자라면 알 듯이, 상기 도면들에 도시되지 않은 상기 비디오 처리장치 및 시스템의 그 밖의 요소들도 있다. 또한, 여기서 주목해야 하는 것은, 비록 상기 도면에서 별도의 요소들로서 개략적으로 도시될지라도, 상기 도면들은 개략적일 뿐이고, 예를 들면, 실제로 그 도시된 요소들은 중요한 하드웨어 회로들을 공유하여도 된다는 것이다.
이하, 본 발명의 실시예들은, 인코딩된 비디오 화상 데이터를 발생하여 표시하는 본 문맥에서 설명될 것이다.
도 1은 데이터의 흐름을 도시하는 본 발명의 실시예들의 기본적인 동작을 도시한 것이다.
도 1에 도시된 것처럼, 그래픽 프로세서(1)는, 압축 화소(화상) 데이터를 발생한다. 비디오 화상 데이터의 프레임들을 형성하는데 사용되는 상기 압축 화소 데이터는, 인코딩(압축)되고 상기 그래픽 프로세서(1)에 의해 상기 압축 화소 데이터의 블록들로 메모리 시스템(2)에 기록된다. 상기 메모리 시스템(2)은, 상기 그래픽 프로세서(1)와 디스플레이 프로세서(3)와의 사이에 공유되고, 이 상기 그래픽 프로세서(1)와 디스플레이 프로세서(3)에 의해 액세스될 수 있다.
상기 디스플레이 프로세서(2)로부터 화소 데이터의 상기 인코딩된 블록들을 판독할 수 있어, 상기 인코딩된 화소 데이터는, 비디오 화상 데이터의 프레임들을 표시 목적상 사용되어도 된다.
상기 메모리 시스템(2)은, 보다 상세히 후술하듯이, 압축 화소 데이터의 블록이 상기 그래픽 프로세서(1)에 의해 상기 메모리 시스템(2)에 기록되어 있다면 기록 확인응답을 제공하도록 구성된다.
도 2는, 도 1에 도시된 구성과 같은 본 실시예들이 사용되어 구현될 수 있는 데이터 처리 시스템(10)을 개략적으로 도시한 것이다.
도 2에 도시된 것처럼, 상기 데이터 처리 시스템(10)은, 시스템 온 칩(SoC)(11)의 형태로 데이터 처리장치를 구비한다. 또한, 상기 시스템(10)은, 오프칩(메인) 메모리(12), 디스플레이 디바이스(13) 및 비디오 카메라(14)를 구비한다.
상기 SoC(10)는, 중앙처리유닛(CPU)(15), 그래픽 처리 유닛(GPU)(16), 비디오 프로세서(17), 디스플레이 제어기(18), 인터커넥트(19) 및 메모리 제어기(20)를 구비한다.
도 2의 상기 시스템(10)에 도시된 상기 GPU(16) 또는 상기 비디오 프로세서(17)는, 예를 들면, 도 1에 도시된 상기 그래픽 프로세서(1)와 동등한 방식으로 사용되어도 된다. 상기 디스플레이 제어기(18)는, 예를 들면, 도 1에 도시된 상기 디스플레이 프로세서(3)와 동일하여도 된다. 상기 메인 메모리(12)와 상기 메모리 제어기(20)는, 예를 들면, 도 1에 도시된 상기 메모리 시스템(2)과 동일하여도 된다.
도 2에 도시된 것처럼, 상기 CPU(15), GPU(16), 비디오 프로세서(17) 및 디스플레이 제어기(18)는, 상기 인터커넥트(18)를 거쳐 서로 통신하고, 상기 인터커넥트(19)와 메모리 제어기(20)를 거쳐 상기 메모리(12)와 통신한다. 또한, 디스플레이 제어기(18)는, 상기 디스플레이 디바이스(13)와 통신한다. 또한, 비디오 카메라(14)는 상기 인터커넥트(19)를 거쳐 상기 SoC(11)와 통신한다.
상기 비디오 프로세서(17)는, (예를 들면, 상기 GPU(16)에 의해 발생되거나 상기 비디오 카메라(14)에 의해 촬영된) 화상 데이터에 있어서 메모리(12)로부터 및/또는 비디오 카메라(14)로부터 판독하고, 그 화상 데이터를 블록 방식으로 인코딩하고 나서, 예를 들면 메모리(12)에 저장 또는 다른 디바이스에 스트리밍하기 위한, 상기 인코딩된 화상 데이터를 출력하여도 된다. 상기 인코딩된 화상 데이터는, 나중에, 예를 들면 상기 비디오 프로세서(17)에 의해 검색 및 디코딩되거나, 다른 디바이스에 의해 수신 및 디코딩될 수 있다. 상기 디코딩된 화상 데이터는, 예를 들면 상기 디스플레이 제어기(18)에 의해 상기 디스플레이 디바이스(13)에, 또는 다른 디바이스에 의해, 표시를 위해 출력될 수 있다.
본 실시예들에서는, 상기 비디오 프로세서(17)가, 비디오 화상 데이터의 프레임들 및/또는 주어진 비디오 프레임의 파트들을 처리하여 화상(화소) 데이터의 인코딩된 블록들을 생성한다고 한다. 그 후, 상기 인코딩된 블록들은, 상기 오프칩 메모리(12)내의 프레임 버퍼에 압축형태로 저장되어, 상기 디스플레이 제어기(18)에 의해 디코딩되고 상기 디스플레이 디바이스(13)상에 표시되어도 된다.
도 3은 본 발명의 실시예들에서 사용하기 위해, 메모리(30)의 레이아웃을 개략적으로 도시한 것이다. 예를 들면, 도 1 및 2에 도시된 것과 같은 데이터 처리 시스템에 구현되어도 되는(그리고, 따라서 도 1에 도시된 상기 메모리 시스템(2)이나 도 2에 도시된 상기 오프칩 메모리(12)와 동일하여도 되는) 상기 메모리(30)는, 압축 화소(화상) 데이터의 저장을 위한 프론트 버퍼를 구비한다. 이 압축 화소 데이터는, 예를 들면, 도 1에 도시된 상기 그래픽 프로세서(1)에 의해 생성되거나 도 2에 도시된 상기 비디오 프로세서(17)에 의해 인코딩되어도 된다. 그 후, 상기 저장된 데이터는, 예를 들면, 도 1에 도시된 상기 디스플레이 프로세서(3)나 도 2에 도시된 상기 디스플레이 제어기(18))에 의해 소비되어도 된다.
도 3에 도시된 상기 메모리(30)의 상기 프론트 버퍼는, 헤더 버퍼(31)와 2개의 바디 버퍼들(32, 33)을 구비한다. 상기 바디 버퍼들(32, 33)은, (예를 들면, 도 1에 도시된 상기 그래픽 프로세서(1)에 의해 또는, 도 2에 도시된 상기 비디오 프로세서(17)에 의해 인코딩된) 생성된 상기 압축 화소("페이로드") 데이터를 저장하는데 사용된다. 상기 헤더 버퍼(31)를 사용하여, 상기 바디 버퍼들(32, 33)에서 상기 압축 화소 데이터를 가리키는 포인터들(34)을 저장한다.
상기 헤더 버퍼(31)에서의 상기 포인터들(34)은, 예를 들면 도 1에 도시된 상기 디스플레이 프로세서(3) 또는 도 2에 도시된 상기 디스플레이 제어기(18)에 의해 사용되어, 표시되는 상기 압축 화소 데이터가 상기 바디 버퍼들(32, 33) 중 하나에 어디에 있는지를 특정하는데 사용된다. 따라서, 동작상, 상기 디스플레이 프로세서(3) 또는 상기 디스플레이 제어기(18)는, 상기 헤더 버퍼(31)에서의 포인터(34)를 판독하고, 그 포인터(34)를 상기 바디 버퍼들(32, 33) 중 한쪽에서의 장소에 추종하고, 상기 바디 버퍼들(32, 33)의 상기 장소에서의 상기 압축 화소 데이터를 판독한다.
이제, 도 1, 2 및 3에 도시된 상기 시스템의 동작은, 도 4 및 6에 도시된 흐름도들과 도 5에 도시된 비디오 데이터의 2개의 프레임들의 레이아웃을 참조하여 설명될 것이다. 먼저, 화상 데이터의 상기 프레임들을 생성(렌더링, 압축, 라이트 아웃)하는 상기 프로세스를 설명하겠다.
도 4는 본 발명의 실시예에 따라, 압축 화소 데이터를 생성하고 메모리에 기록하는 단계들을 상세히 설명하는 흐름도를 도시한 것이다.
비디오 화상 데이터의 프레임들의 시퀀스가 생성될 때, (도 1에 도시된) 상기 그래픽 프로세서(1)나 (도 2에 도시된) 상기 GPU(16)는 상기 화소 데이터의 렌더링을 시작한다(단계 101, 도 4). 상기 화소 데이터의 프로듀서(예를 들면, 상기 GPU(16)에 의해 렌더링된 상기 화소 데이터를 인코딩할 (도 1에 도시된) 상기 그래픽 프로세서(1) 또는 (도 2에 도시된) 상기 비디오 프로세서(17))는, 압축 화소 데이터를 (도 3에 도시된) 상기 바디 버퍼 "0"(32)에 기록하도록 초기에 (드라이버에 의해) 설정된다(단계 102, 도 4).
이하, 프레임에 대한 상기 압축 화소 데이터를 생성 및 라이트 아웃하는 프로세스를 도 5를 참조하여 설명한다. 도 5는 본 발명의 실시예를 사용하여 인코딩되는 프레임들의 시퀀스에서 비디오 데이터(40, 50)의 2개의 프레임들을 개략적으로 도시한 것이다.
본 실시예에서, 각 프레임(40, 50)은, "타일들"(프레임이 분할되는 보다 작은 서브구역들)로 렌더링, 압축 및 라이트 아웃된다. 도 5에 도시된 것처럼, 프레임들의 상기 시퀀스에서 제1 프레임(40)은 4개의 타일들(41, 42, 43, 44)로 분할되고, 상기 제2 프레임(50)은 대응한 4개의 타일들(51, 52, 53, 54)로 분할된다.(비디오 데이터의 프레임은 일반적으로 4개보다 큰 타일들을 포함할 것이지만; 명백함을 기하기 위해 단지 4개의 타일들만이 도 5에 도시된 상기 프레임들의 각각에 도시되어 있다.) 각 타일은, 샘플링 위치들(화소들)의 블록(어레이)을 포함하고, 임의의 적절하고 원하는 사이즈이어도 되지만, 전형적으로 16ㅧ16 샘플링 위치들의 블록이다. 프레임(40, 50)의 상기 다수의 타일들(41, 42, 43, 44, 51, 52, 53, 54)이, 예를 들면, 적절히, 상기 GPU(16) 및/또는 비디오 프로세서(17)의 다수의 처리 코어들상에서 병렬로 처리되어도 된다는 것을 알 것이다.
프레임에서 주어진 타일(예를 들면, 도 5에 도시된 제1 프레임(40)에서의 타일 "A"(41))에 대해, 상기 생성 프로세스는, (도 1에 도시된) 상기 그래픽 프로세서(1)나 (도 2에 도시된) 상기 GPU(16)에 의해 상기 타일의 렌더링을 시작하고(단계 103, 도 4) 그 렌더링된 타일을 내부 메모리에 기록한다(단계 104, 도 4). 그 후, (도 1에 도시된) 상기 그래픽 프로세서(1)나 (도 2에 도시된) 상기 비디오 프로세서(17))는 상기 타일을 압축한다(단계 105, 도 4). 상기 타일에 대한 상기 렌더링된 화소 데이터는, 임의의 적절한 원하는 압축 또는 인코딩 기술에 따라 압축되어도 된다. 이러한 하나의 프레임 버퍼 압축기술은, 출원인의 특허 US 8,542,939 B2, US 9,014,496 B2, US 8,990,518 B2 및 US 9,116,790 B2에 기재되어 있다.
그 후, 상기 타일에 대한 상기 압축 화소("페이로드") 데이터는, 상기 메모리(30)(예를 들면, 도 1에 도시된 상기 메모리 시스템(2) 또는 도 2에 도시된 상기 오프칩 메모리(12))에 (도 3에 도시된) 상기 바디 버퍼 "0"(32)에 기록된다(단계 106, 도 4). 상기 타일에 대한 상기 압축 화소("페이로드") 데이터 전부가 상기 바디 버퍼 "0"(32)에 기록되어 있을 때, 상기 메모리 시스템(2)은, (도 2에 도시된 것처럼) 확인응답을 상기 압축 화소 데이터의 상기 프로듀서에 보낸다.
상기 압축 화소 데이터의 상기 프로듀서는, 상기 메모리 시스템(2)으로부터 상기 확인응답을 대기하고(단계 107, 도 4), 그 후 대응한 (도 2에 도시된) 헤더 데이터를 상기 헤더 버퍼(31)에 기록한다(단계 108, 도 4). 압축 화소 데이터의 상기 타일에 대한 상기 헤더 데이터는, 예를 들면, 상기 타일의 사이즈에 관한 정보, 상기 화소 데이터가 어떻게 압축되는지에 관한 정보, 상기 압축 화소 데이터의 장소를 포함한다. 도 3에 도시된 것처럼, 상기 타일에 대한 상기 바디 버퍼 "0"(32)에서의 상기 압축 화소 데이터의 상기 장소는, 포인터(34)를 사용하여 상기 헤더 버퍼(31)로부터 상기 바디 버퍼 "0"(32)에 제공된다.
위의 프로세스는, 프레임에서 타일마다 수행된다. 상이한 타일들은,예를 들면, 멀티코어 프로세서를 사용하여, 서로에 대해 병렬로 렌더링되고, 압축되고, 라이트 아웃되어도 된다. 프레임에서 상기 타일들의 전부가 상기 바디 버퍼 "0"(32)에 대해 렌더링되고, 압축되고, 라이트 아웃되어 있으면(단계 109, 도 4), 동일한 프로세스는 프레임들의 상기 시퀀스에서 다음 프레임에 대해 수행된다.
그렇지만, 먼저, 상기 프로세스가 다음 프레임에 대해 수행되기 전에, 상기 화소 데이터의 프로듀서(예를 들면, (도 1에 도시된) 상기 그래픽 프로세서(1) 또는 (도 2에 도시된) 상기 비디오 프로세서(17))는, 새로운 프레임에 대한 상기 압축 화소 데이터를 다른 나머지 바디 버퍼, (도 3에 도시된) 바디 버퍼 "1"(33)에의 기록을 전환하도록 (상기 드라이버에 의해) 설정된다(단계 111, 도 4).
상기 새로운 프레임에 대한 상기 압축 화소 데이터를 다른 나머지 바디 버퍼 "1"(33)에 기록하는 것은, 상기 헤더 버퍼(31)로부터 상기 바디 버퍼 "0"(32)에서 본 프레임에 대한 압축 화소 데이터의 상기 타일들에 대한 포인터들(34)을 갖는 이 타일들이 겹쳐써지는 것을 피한다. 이에 따라, 본 프레임에 대한 상기 타일들이, 그 프레임에 대한 데이터의 완전한 블록들로서 (예를 들면, (도 1에 도시된) 상기 디스플레이 프로세서(3)나 (도 2에 도시된) 상기 디스플레이 제어기(18)에 의해, 상기 헤더 포인터들(34)을 추종함으로써) 판독될 수 있으므로, 데이터가 손상된 임의의 "티어링" 아티팩트들 또는 문제점들을 피할 수 있다. (새로운 프레임에 대한 상기 압축 화소 데이터가 다른 나머지 바디 버퍼, 바디 버퍼 "1"(33)에 기록되어 있고, 상기 헤더 버퍼(31)에서의 상기 헤더 데이터가 갱신되어 있으면, 상기 바디 버퍼 "0"(32)에서의 상기 압축 화소 데이터는 더 이상 이 데이터를 가리키는 헤더 포인터들(34)을 갖지 않아서 이후의 프레임에 대해 안전하게 겹쳐써질 수 있다는 것을 알 것이다.)
따라서, 압축 화소 데이터의 타일들을 상기 바디 버퍼 "1"(33)에 대해 또한 헤더 데이터를 상기 헤더 버퍼(31)에 대해, 렌더링하고, 압축하고, 라이트 아웃하는 상기 프로세스는, 제1 프레임과 동일한 방식으로 상기 다음 프레임에 대해 수행된다. 예를 들면, 도 5에 도시된 제2 프레임(50)에 대해, 상기 제1 프레임(40)에서 타일 A(41)에 대응한 타일 A'(51)에 대한 비디오 데이터는, 인코딩되어 상기 바디 버퍼 "1"(33)에 저장되고, 그것의 헤더 데이터는 상기 헤더 버퍼(31)에 인코딩되어 저장된다.
상기 새로운 프레임에 대한 상기 헤더 데이터가 상기 헤더 버퍼(31)에 기록될 때, 상기 새로운 프레임에서의 인코딩된 타일들에 대한 상기 헤더는 그 대응한 타일에 대한 대응한 헤더 데이터를 상기 이전의 프레임에 겹쳐쓴다(예를 들면, 도 5에 도시된 제2 프레임(50)에서의 타일A'(51)에 대한 상기 인코딩된 데이터를 가리키는 상기 헤더는, 상기 제1 프레임(40)에서 타일A(41)에 대한 상기 인코딩된 데이터를 가리킨 상기 헤더를 겹쳐쓴다). 따라서(도 6을 참조하여 후술하는 것처럼), 상기 새로운 프레임에 대한 상기 압축 화소 데이터가 판독될 때, 상기 새로운 헤더 데이터는 상기 헤더 버퍼(31)로부터 판독되고, 상기 포인터들(34)은 상기 바디 버퍼 "1"(33)에서 상기 압축 화소 데이터에 대해 추종된다.
압축 화소 데이터의 타일들의 프레임들을 생성하는 이 프로세스는, 상기 압축 화소 데이터가 기록되는 상기 바디 버퍼를 전환하는 프레임마다, 동일한 방식으로 반복된다(단계 111, 도 4). 렌더링되는 프레임들의 시퀀스에서 상기 프레임들 전부가 생성되어 라이트 아웃되어 있는지를 각 프레임이 생성된 후 체크한다(단계 110, 도 4). 프레임들의 상기 시퀀스가 완료되어 있을 때, 상기 프로세스는 종료된다(단계 112, 도 4).
이제, 화상 데이터의 상기 생성된 프레임들을 소비(판독, 압축해제, 및 표시)하는 프로세스에 대해서 설명하겠다. 단일의 프론트 버퍼에 화상 데이터의 상기 프레임들이 기록된 상태에서(비록 2개의 별도의 바디 버퍼들(32, 33)로 분할될지라도), 화상 데이터의 상기 프레임들은, 후술하듯이, 그 프레임들이 생성되는 것처럼 동시에 소비될 수 있다.
도 6은 본 발명의 실시예에 따라 상기 생성된 화소 데이터를 소비하는 단계들을 상세히 설명하는 흐름도를 도시한 것이다.
요약하면, 상기 렌더링된 타일들이 상기 메모리에 인코딩되어 저장되는 것처럼, 그들은 상기 디스플레이 프로세서(3)나 상기 디스플레이 제어기(18)에 의해 디코딩 및 재조합되어 상기 출력 프레임을, 예를 들면 표시를 위해 제공한다.
비디오 화상 데이터의 프레임들의 시퀀스가, 도 4를 참조하여 설명된 것처럼, 비디오 화상 데이터의 상기 시퀀스가 생성중임(단계 201, 도 6)과 동시에, 표시될 때, 상기 화소 데이터의 상기 컨슈머(예를 들면, 상기 압축 화소 데이터를 디코딩할 (도 1에 도시된) 상기 디스플레이 프로세서(3)나 (도 2에 도시된) 상기 디스플레이 제어기(18))는, 즉 상기 헤더 버퍼(31)에서의 상기 헤더 데이터를 사용하여, 도 3에 도시된 것처럼, 적절한 바디 버퍼(32, 33)에서의 상기 압축 화소 데이터의 상기 장소를 결정함으로써, 상기 메모리(30)에서의 상기 프론트 버퍼로부터 상기 압축 화소 데이터를 판독하도록 (소프트웨어 스위치에 의해) 설정된다(단계 202, 도 6).
상기 화소 데이터가 타일들로 렌더링되고, 압축되며, 저장되는 동일한 방식으로, 상기 압축 화소 데이터는, 표시되는 프레임들의 상기 시퀀스에서 각 프레임을 표시하기 위해서 타일들로 판독, 압축해제 및 표시된다. 따라서, 후술하듯이, 압축 화소 데이터의 타일들을 판독, 압축해제 및 표시하는 프로세스는, 비디오 화상 데이터의 프레임에서 상기 타일들 전부에 대해, 동일한 프로세스이고, 반복된다.
프레임에서 주어진 타일에 대해, 상기 소비 프로세스는 (도 1에 도시된) 상기 디스플레이 프로세서(3)나 (도 2에 도시된) 상기 디스플레이 제어기(18)에 의해 시작되어(단계 203, 도 6), (도 3에 도시된) 상기 헤더 버퍼(31)에서의 상기 헤더 데이터를 판독한다(단계 204, 도 6). 상기 디스플레이 프로세서(3)나 상기 디스플레이 제어기(18)는, 상기 타일에 대한 상기 헤더 데이터에서의 정보, 예를 들면 (전형적으로, 상기 압축 데이터의 바이트 사이즈로서 저장된) 상기 타일의 사이즈, 상기 화소 데이터의 압축방법 및 상기 압축 화소 데이터의 장소를 결정하기 위해 판독되어 있는 상기 헤더 데이터를 분석한다(단계 205, 도 6).
상기 디스플레이 프로세서(1)나 상기 디스플레이 제어기(18)가 상기 헤더 데이터로부터 결정되어 있는 상기 타일에 대한 상기 압축 화소 데이터의 장소를 사용하여, 상기 디스플레이 프로세서(1)나 상기 디스플레이 제어기(18)는, 상기 적절한 바디 버퍼(32, 33)로부터 상기 타일에 대한 상기 압축 화소 "페이로드" 데이터를 판독한다(단계 206, 도 6).
상기 페이로드 데이터 전부가 상기 적절한 바디 버퍼(32, 33)에 저장된 후 상기 헤더 데이터를 상기 헤더 버퍼(31)에 기록하는 방식 때문에, 상기 디스플레이 프로세서(3)나 상기 디스플레이 제어기(18)는 유효하고 완벽한 화소 데이터의 인코딩된 블록들만을 판독할 수 있다는 것을 알 것이다. 최악의 경우에, 상기 디스플레이 프로세서(3)나 상기 디스플레이 제어기(18)는, 예를 들면, 상기 블록의 새로운 버전이 다른 나머지 바디 버퍼(32, 33)에 기록중인 동안에 데이터의 상기 인코딩된 블록의 오래된 버전을 판독하지만, 적어도 이 블록은 유효하다. 상기 비디오 프로세서(17)는, 상기 디스플레이 프로세서(3)나 상기 디스플레이 제어기(18)가 상기 메모리(12)로부터 이전의 프레임의 데이터의 대응한 블록들을 판독중인 동안에 데이터의 인코딩된 블록들을 상기 메모리(12)에 기록할 수 있고, 이때 이것은 문제점들을 야기시키지 않는데, 그 이유는 데이터의 상기 새로운 인코딩된 블록들이 데이터의 상기 이전에 저장되고 대응한 블록들을 겹쳐쓰지 않고 있는 중이기 때문이다. 대신에, 그들은 다른 나머지 바디 버퍼(32, 33)에 기록중이다.
상기 타일에 대한 상기 압축 화소 데이터가 상기 적절한 바디 버퍼(32, 33)로부터 판독되어 있으면, 상기 디스플레이 프로세서(1)나 상기 디스플레이 제어기(18)는, 상기 헤더 데이터에서의 상기 정보(예를 들면, 상기 타일의 사이즈와 상기 화소 데이터의 압축방법)를 사용하여, 상기 타일에 대한 상기 화소 데이터를 압축해제한다(단계 207, 도 6).
그 후, 상기 타일에 대한 상기 압축해제 화소 데이터는, 표시되도록 상기 디스플레이 프로세서(1)나 상기 디스플레이 제어기(18)에 의해, 예를 들면 도 2에 도시된 상기 디스플레이 디바이스 상에 보내진다(단계 208, 도 6).
상기 프로세스는 프레임에서 타일마다 수행된다. 상이한 타일들은, 예를 들면 멀티코어 디스플레이 프로세서를 사용하여, 서로에 병렬로 판독, 압축해제 및 표시되어도 된다. 프레임에서의 상기 타일들 전부가 판독, 압축해제 및 표시되어 있다면(단계 209, 도 6), 프레임들의 상기 시퀀스에서 다음 프레임에 대해 동일한 프로세스가 수행된다. 마찬가지로, 이 프로세스는, 상기 시퀀스에서의 프레임들 전부가 표시될 때까지, 프레임들의 상기 시퀀스에서 프레임마다 반복된다(단계 210, 도 6).
본 발명의 상기 실시예들에 대한 다수의 변형, 변경 및 대안들은, 원하는 경우 가능할 것이다.
본 실시예들은, "생성" 처리 유닛이 하나 이상의 "소비" 처리 유닛들에서 사용하기 위한 데이터의 인코딩된 블록들을 발생 및 저장하는 임의의 원하고 적절한 데이터 처리 시스템에서 사용될 수 있다. 따라서, 비디오 처리 시스템들뿐만 아니라, 본 실시예들은, 그 밖의 데이터 처리 시스템들, 이를테면, 화상처리 시스템들, 및 그래픽 처리 시스템들에도 사용될 수 있다.
이상으로부터 알 수 있듯이, 본 발명은, 적어도 본 발명의 바람직한 실시예들에서, 상기 인코딩된 블록들이 저장되고 그 밖의 인코딩된 블록들이 메모리의 동일한 구역으로부터 판독되어도 되는 "프론트 버퍼" 구성을 사용할 때, 데이터의 인코딩된 블록들로서 비디오 데이터의 프레임들의 시퀀스를 인코딩 및 저장하기 위한 개선된 메카니즘을 제공한다. 이것은, 적어도 본 발명의 바람직한 실시예들에서, 상기 메모리의 상이한 장소들에 데이터의 (예를 들면, 연속적) 프레임들로부터 데이터의 인코딩된 블록들을 저장하는 비디오 처리 유닛에 의해 이루어지고, 이때 각 인코딩된 블록의 상기 장소의 표시도 이후의 프레임들에서 데이터의 블록들이 상기 메모리의 구역에 저장될 때 저장되어 갱신된다. 상기 컨슈머 처리 유닛(들)은, 상기 인코딩된 블록들의 상기 장소들의 표시들을 사용하여 이후의 사용, 예를 들면 표시를 위해 데이터의 상기 인코딩된 블록들에 액세스한다.

Claims (24)

  1. 비디오 처리 시스템의 비디오 처리 유닛이 상기 비디오 처리 시스템의 하나 이상의 컨슈머 처리 유닛들에서 사용하기 위한 비디오 데이터의 프레임들의 시퀀스를 생성할 수 있는 비디오 처리 시스템의 동작방법으로서, 이 방법은:
    상기 비디오 처리 유닛에 의해, 비디오 데이터의 프레임들-각 프레임이 데이터의 하나 이상의 인코딩된 블록들로서 인코딩된다-의 시퀀스를 인코딩하고, 상기 비디오 처리 유닛이 메모리의 구역에 상기 프레임에 대한 데이터의 그 밖의 인코딩된 블록들을 저장중인 동안에 처리하기 위해 컨슈머 처리 유닛에서 데이터의 인코딩된 블록들을 판독할 상기 메모리의 구역에, 차례로 프레임마다 상기 데이터의 인코딩된 블록들을 저장하는 단계를 포함하고;
    상기 방법은:
    상기 비디오 처리 유닛에 의해:
    상기 프레임들의 시퀀스에서 제1 프레임의 데이터의 특별한 인코딩된 블록을, 상기 메모리의 구역에서의 제1 장소에 저장하는 단계; 및
    상기 데이터의 특별한 인코딩된 블록에 대해서, 상기 데이터의 특별한 블록을 판독할 때 컨슈머 처리 유닛에서 사용하기 위한 상기 제1 장소의 표시를, 저장하는 단계; 및
    상기 비디오 처리 유닛에 의해, 상기 제1 프레임에서 상기 데이터의 특별한 인코딩된 블록에 대응하는 프레임들의 상기 시퀀스에서의 제2 프레임의 데이터의 인코딩된 블록을 저장할 때, 상기 메모리의 구역에서 상기 제1 장소와 다른 제2 장소에, 상기 제2 프레임의 그 데이터의 인코딩된 블록을 저장하는 단계; 및
    상기 메모리의 상기 구역에서 상기 인코딩된 블록의 상기 장소의 상기 표시를 상기 제2 장소로 갱신하는 단계를 더 포함하는, 비디오 처리 시스템의 동작방법.
  2. 제 1 항에 있어서,
    비디오 데이터의 상기 제2 프레임의 데이터의 대응한 인코딩된 블록을 상기 제2 장소에 저장할 때, 상기 제1 장소에 저장된 비디오 데이터의 상기 제1 프레임의 데이터의 상기 특별한 인코딩된 블록을 겹쳐쓰지 않는 단계를 더 포함하는, 비디오 처리 시스템의 동작방법.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 메모리의 구역은 메모리의 별도의 제1 및 제2 서브구역들을 포함하고, 상기 방법은, 상기 메모리의 제1 서브구역에 상기 제1 프레임의 데이터의 상기 특별한 인코딩된 블록을 저장하는 단계와, 메모리의 상기 제2 서브구역에 상기 제2 프레임의 데이터의 대응한 인코딩된 블록을 저장하는 단계를 포함하는, 비디오 처리 시스템의 동작방법.
  4. 제 3 항에 있어서,
    상기 방법은, 비디오 데이터의 상기 제1 프레임의 데이터의 복수의 인코딩된 블록들의 전부를 메모리의 상기 제1 서브구역에 저장하는 단계와, 비디오 데이터의 상기 제2 프레임의 데이터의 복수의 인코딩된 블록들의 전부를 메모리의 상기 제2 서브구역에 저장하는 단계를 포함하는, 비디오 처리 시스템의 동작방법.
  5. 제 1 항 또는 제 2 항에 있어서,
    상기 메모리의 구역은 데이터의 상기 인코딩된 블록들의 상기 장소의 상기 표시를 저장하는 헤더 버퍼를 포함하는, 비디오 처리 시스템의 동작방법.
  6. 제 1 항 또는 제 2 항에 있어서,
    데이터의 인코딩된 블록의 상기 장소의 상기 표시는, 데이터의 상기 인코딩된 블록이 저장되는 상기 장소에 대한 포인터를 포함하는, 비디오 처리 시스템의 동작방법.
  7. 제 1 항 또는 제 2 항에 있어서,
    상기 방법은, 상기 메모리에 의해, 컨슈머 처리 유닛에서 사용하는데 적어도 이용 가능하도록 데이터의 인코딩된 블록이 저장되어 있는 상기 비디오 처리 유닛에 대한 확인응답을 하는 단계를 포함하는, 비디오 처리 시스템의 동작방법.
  8. 제 7 항에 있어서,
    상기 방법은, 데이터의 상기 인코딩된 블록이 저장되어 있다는 것을 상기 메모리가 확인응답하였으면, 데이터의 인코딩된 블록의 상기 장소의 표시를 저장하는 단계를 포함하는, 비디오 처리 시스템의 동작방법.
  9. 제 1 항 또는 제 2 항에 있어서,
    상기 방법은, 컨슈머 처리 유닛에 의해,
    데이터의 상기 인코딩된 블록의 상기 장소의 상기 표시를 판독하는 단계;
    데이터의 상기 인코딩된 블록에 대한 상기 장소 표시에 의해 나타낸 상기 메모리의 구역에서의 상기 장소로부터 데이터의 상기 인코딩된 블록을 판독하는 단계; 및
    데이터의 상기 인코딩된 블록을 소비하는 단계를 포함하는, 비디오 처리 시스템의 동작방법.
  10. 제 1 항 또는 제 2 항에 있어서,
    상기 방법은, 상기 비디오 처리 유닛이 데이터의 하나 이상의 그 밖의 인코딩된 블록들을 상기 동일한 메모리의 구역에 저장중인 동안에 데이터의 하나 이상의 인코딩된 블록들을 상기 메모리의 구역으로부터 컨슈머 처리 유닛이 판독하는 단계를 더 포함하는, 비디오 처리 시스템의 동작방법.
  11. 비디오 데이터 처리 시스템으로서,
    상기 비디오 데이터 처리 시스템의 하나 이상의 컨슈머 처리 유닛들에서 사용하기 위한 비디오 데이터의 프레임들의 시퀀스를 생성할 수 있는 비디오 처리 유닛; 및
    상기 비디오 처리 유닛에서 생성한 비디오 데이터의 프레임들의 시퀀스를 저장하는 메모리를 구비하고;
    상기 비디오 처리 유닛은:
    비디오 데이터의 프레임들-각 프레임이 데이터의 하나 이상의 인코딩된 블록들로서 인코딩된다-의 시퀀스를 인코딩하고; 및
    상기 비디오 처리 유닛이 메모리의 구역에 상기 프레임에 대한 데이터의 그 밖의 인코딩된 블록들을 저장중인 동안에 처리하기 위해 컨슈머 처리 유닛에서 데이터의 인코딩된 블록들을 판독할 상기 메모리의 구역에, 차례로 프레임마다 데이터의 상기 인코딩된 블록들을 저장할 수 있는,
    처리회로를 구비하고;
    상기 처리회로는: 한층 더,
    상기 프레임들의 시퀀스에서 제1 프레임의 데이터의 특별한 인코딩된 블록을, 상기 메모리의 상기 구역에서의 제1 장소에 저장하고; 및
    데이터의 상기 특별한 인코딩된 블록에 대해서, 데이터의 상기 특별한 블록을 판독할 때 컨슈머 처리 유닛에서 사용하기 위한 상기 제1 장소의 표시를 저장할 수 있고;
    상기 처리회로는, 한층 더, 상기 제1 프레임에서 상기 데이터의 특별한 인코딩된 블록에 대응하는 프레임들의 상기 시퀀스에서의 제2 프레임의 데이터의 인코딩된 블록을 저장할 때, 상기 메모리의 구역에서 상기 제1 장소와 다른 제2 장소에, 상기 제2 프레임의 그 데이터의 인코딩된 블록을 저장하고; 및
    상기 메모리의 상기 구역에서 상기 인코딩된 블록의 상기 장소의 상기 표시를 상기 제2 장소로 갱신할 수 있는, 비디오 데이터 처리 시스템.
  12. 제 11 항에 있어서,
    상기 처리회로는, 비디오 데이터의 상기 제2 프레임의 데이터의 대응한 인코딩된 블록을 상기 제2 장소에 저장할 때, 상기 제1 장소에 저장된 비디오 데이터의 상기 제1 프레임의 데이터의 상기 특별한 인코딩된 블록을 겹쳐쓰지 않을 수 있는, 비디오 데이터 처리 시스템.
  13. 제 11 항 또는 제 12 항에 있어서,
    상기 메모리의 구역은 메모리의 별도의 제1 및 제2 서브구역들을 포함하고, 상기 처리회로는, 상기 메모리의 제1 서브구역에 상기 제1 프레임의 데이터의 상기 특별한 인코딩된 블록을 저장하고, 메모리의 상기 제2 서브구역에 상기 제2 프레임의 데이터의 대응한 인코딩된 블록을 저장할 수 있는, 비디오 데이터 처리 시스템.
  14. 제 13 항에 있어서,
    상기 처리회로는, 비디오 데이터의 상기 제1 프레임의 데이터의 복수의 인코딩된 블록들의 전부를 메모리의 상기 제1 서브구역에 저장하고, 비디오 데이터의 상기 제2 프레임의 데이터의 복수의 인코딩된 블록들의 전부를 메모리의 상기 제2 서브구역에 저장할 수 있는, 비디오 데이터 처리 시스템.
  15. 제 11 항 또는 제 12 항에 있어서,
    상기 메모리의 구역은 데이터의 상기 인코딩된 블록들의 상기 장소의 상기 표시를 저장하는 헤더 버퍼를 포함하는, 비디오 데이터 처리 시스템.
  16. 제 11 항 또는 제 12 항에 있어서,
    데이터의 인코딩된 블록의 상기 장소의 상기 표시는, 데이터의 상기 인코딩된 블록이 저장되는 상기 장소에 대한 포인터를 포함하는, 비디오 데이터 처리 시스템.
  17. 제 11 항 또는 제 12 항에 있어서,
    상기 메모리는, 컨슈머 처리 유닛에서 사용하는데 적어도 이용 가능하도록 데이터의 인코딩된 블록이 저장되어 있는 상기 비디오 처리 유닛에 대한 확인응답을 할 수 있는, 비디오 데이터 처리 시스템.
  18. 제 17 항에 있어서,
    상기 처리회로는, 데이터의 상기 인코딩된 블록이 저장되어 있다는 것을 상기 메모리가 확인응답하였으면, 데이터의 인코딩된 블록의 상기 장소의 표시를 저장할 수 있는, 비디오 데이터 처리 시스템.
  19. 제 11 항 또는 제 12 항에 있어서,
    상기 비디오 데이터 처리 시스템은,
    데이터의 상기 인코딩된 블록의 상기 장소의 상기 표시를 판독하고;
    데이터의 상기 인코딩된 블록에 대한 상기 장소 표시에 의해 나타낸 상기 메모리의 구역에서의 상기 장소로부터 데이터의 상기 인코딩된 블록을 판독하고; 및
    데이터의 상기 인코딩된 블록을 소비할 수 있는,
    처리회로를 구비하는, 하나 이상의 컨슈머 처리 유닛들을 포함하는, 비디오 데이터 처리 시스템.
  20. 제 11 항 또는 제 12 항에 있어서,
    상기 비디오 데이터 처리 시스템은,
    상기 비디오 처리 유닛이 데이터의 하나 이상의 그 밖의 인코딩된 블록들을 상기 동일한 메모리의 구역에 저장중인 동안에 데이터의 하나 이상의 인코딩된 블록들을 상기 메모리의 구역으로부터 판독할 수 있는,
    처리회로를 구비하는, 하나 이상의 컨슈머 처리 유닛들을 포함하는, 비디오 데이터 처리 시스템.
  21. 데이터 처리 시스템의 프로듀서 처리 유닛이 상기 데이터 처리 시스템의 하나 이상의 컨슈머 처리 유닛들에서 사용하기 위한 데이터 출력들의 시퀀스를 생성할 수 있는 상기 데이터 처리 시스템의 동작방법으로서, 이 방법은:
    상기 프로듀서 처리 유닛에 의해, 데이터 출력들-각 데이터 출력은 데이터의 하나 이상의 인코딩된 블록들로서 인코딩된다-의 시퀀스에서 제1 데이터 출력을 인코딩하고, 상기 프로듀서 처리 유닛이 메모리의 구역에 상기 데이터 출력에 대한 데이터의 그 밖의 인코딩된 블록들을 저장중인 동안에 처리하기 위해 컨슈머 처리 유닛에서 데이터의 인코딩된 블록들을 판독할 상기 메모리의 구역에, 차례로 데이터 출력마다 데이터의 상기 인코딩된 블록들을 저장하는 단계를 포함하고;
    상기 방법은:
    상기 프로듀서 처리 유닛에 의해:
    데이터 출력들의 상기 시퀀스에서 제1 데이터 출력의 특별한 인코딩된 블록 데이터를, 상기 메모리의 구역에서의 제1 장소에 저장하는 단계; 및
    데이터의 상기 특별한 인코딩된 블록에 대해서, 데이터의 상기 특별한 블록을 판독할 때 컨슈머 처리 유닛에서 사용하기 위한 상기 제1 장소의 표시를, 저장하는 단계; 및
    상기 프로듀서 처리 유닛에 의해, 상기 제1 데이터 출력에서 데이터의 상기 특별한 인코딩된 블록에 대응하는 데이터 출력들의 상기 시퀀스에서의 제2 데이터 출력의 데이터의 인코딩된 블록을 저장할 때, 상기 메모리의 구역에서 상기 제1 장소와 다른 제2 장소에, 상기 제2 데이터 출력의 데이터의 그 인코딩된 블록을 저장하는 단계; 및
    상기 메모리의 상기 구역에서 상기 인코딩된 블록의 상기 장소의 상기 표시를 상기 제2 장소로 갱신하는 단계를 더 포함하는, 데이터 처리 시스템의 동작방법.
  22. 데이터 처리 시스템으로서,
    상기 데이터 처리 시스템의 하나 이상의 컨슈머 처리 유닛들에서 사용하기 위한 데이터 출력들의 시퀀스를 생성할 수 있는 프로듀서 처리 유닛; 및
    상기 프로듀서 처리 유닛에 의해 생성된 데이터 출력들의 시퀀스를 저장하는 메모리를 구비하고;
    상기 프로듀서 처리 유닛은:
    데이터 출력들-각 데이터 출력은 데이터의 하나 이상의 인코딩된 블록들로서 인코딩된다-의 시퀀스를 인코딩하고; 및
    상기 프로듀서 처리 유닛이 메모리의 구역에 상기 데이터 출력에 대한 데이터의 그 밖의 인코딩된 블록들을 저장중인 동안에 처리하기 위해 컨슈머 처리 유닛에서 데이터의 인코딩된 블록들을 판독할 상기 메모리의 구역에, 차례로 데이터 출력마다 데이터의 상기 인코딩된 블록들을 저장할 수 있는,
    처리회로를 구비하고;
    상기 처리회로는: 한층 더,
    제1 데이터 출력의 데이터의 특별한 인코딩된 블록을, 상기 메모리의 상기 구역에서의 제1 장소에 저장하고; 및
    데이터의 상기 특별한 인코딩된 블록에 대해서, 데이터의 상기 특별한 블록을 판독할 때 컨슈머 처리 유닛에서 사용하기 위한 상기 제1 장소의 표시를 저장할 수 있고;
    상기 처리회로는, 한층 더, 상기 제1 데이터 출력에서 데이터의 상기 특별한 인코딩된 블록에 대응하는 데이터 출력들의 상기 시퀀스에서의 제2 데이터 출력의 데이터의 인코딩된 블록을 저장할 때, 상기 메모리의 구역에서 상기 제1 장소와 다른 제2 장소에, 상기 제2 데이터 출력의 데이터의 그 인코딩된 블록을 저장하고; 및
    상기 메모리의 상기 구역에서 상기 인코딩된 블록의 상기 장소의 상기 표시를 상기 제2 장소로 갱신할 수 있는, 데이터 처리 시스템.
  23. 비디오 처리 시스템상에서 실행할 때 청구항 1 또는 2에 기재된 방법을 실행하는 컴퓨터 소프트웨어 코드를 저장하는 컴퓨터 판독 가능한 저장매체.
  24. 데이터 처리 시스템상에서 실행할 때 청구항 21에 기재된 방법을 실행하는 컴퓨터 소프트웨어 코드를 저장하는 컴퓨터 판독 가능한 저장매체.
KR1020190072565A 2018-06-22 2019-06-19 데이터 처리 시스템 KR20200000353A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1810266.5 2018-06-22
GB1810266.5A GB2575030B (en) 2018-06-22 2018-06-22 Data processing systems

Publications (1)

Publication Number Publication Date
KR20200000353A true KR20200000353A (ko) 2020-01-02

Family

ID=63042501

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190072565A KR20200000353A (ko) 2018-06-22 2019-06-19 데이터 처리 시스템

Country Status (3)

Country Link
US (1) US11308570B2 (ko)
KR (1) KR20200000353A (ko)
GB (1) GB2575030B (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11563830B2 (en) * 2018-12-19 2023-01-24 Nokia Technologies Oy Method and system for processing network packets
US11605366B2 (en) * 2020-09-10 2023-03-14 Microchip Technology Incorporated LCC (low cost controllerless) graphics processing
GB2614072B (en) * 2021-12-21 2024-08-28 Advanced Risc Mach Ltd Data processing systems
US12067959B1 (en) * 2023-02-22 2024-08-20 Meta Platforms Technologies, Llc Partial rendering and tearing avoidance

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06222747A (ja) * 1992-10-08 1994-08-12 Fujitsu Isotec Ltd フォント圧縮装置及びフォント復元装置
JP2006080723A (ja) * 2004-09-08 2006-03-23 Sony Corp 記録装置および記録方法、再生装置および再生方法、並びにプログラム
KR20130087119A (ko) * 2012-01-27 2013-08-06 삼성전자주식회사 디스플레이 드라이브 집적회로
US9672584B2 (en) * 2012-09-06 2017-06-06 Imagination Technologies Limited Systems and methods of partial frame buffer updating
KR102049258B1 (ko) * 2013-03-15 2019-11-28 삼성전자주식회사 레퍼런스 셀을 포함하는 불휘발성 메모리 장치 및 그것의 데이터 관리 방법 및
US9342859B2 (en) * 2013-10-22 2016-05-17 American Megatrends, Inc. GPU based parallel image processing at thin client
US9564172B2 (en) * 2014-07-14 2017-02-07 NFL Enterprises LLC Video replay systems and methods
US9990690B2 (en) * 2015-09-21 2018-06-05 Qualcomm Incorporated Efficient display processing with pre-fetching
US9639935B1 (en) * 2016-05-25 2017-05-02 Gopro, Inc. Apparatus and methods for camera alignment model calibration

Also Published As

Publication number Publication date
GB2575030B (en) 2020-10-21
US11308570B2 (en) 2022-04-19
US20190392546A1 (en) 2019-12-26
GB201810266D0 (en) 2018-08-08
GB2575030A (en) 2020-01-01
CN110636309A (zh) 2019-12-31

Similar Documents

Publication Publication Date Title
US11308570B2 (en) Video data processing system for storing frames of video data
US6407741B1 (en) Method and apparatus for controlling compressed Z information in a video graphics system that supports anti-aliasing
US8988443B2 (en) Methods of and apparatus for controlling the reading of arrays of data from memory
US6492991B1 (en) Method and apparatus for controlling compressed Z information in a video graphics system
JP5835879B2 (ja) メモリからのデータの配列の読み込みを制御する方法および装置
US11023152B2 (en) Methods and apparatus for storing data in memory in data processing systems
US11175854B2 (en) Data processing systems
JP2010535393A (ja) グラフィックス・システムにおける可変長の圧縮と関連付けのための方式
US10896536B2 (en) Providing output surface data to a display in data processing systems
US10824357B2 (en) Updating data stored in a memory
US11789867B2 (en) Cache arrangement for data processing systems
GB2552136A (en) Accessing encoded blocks of data in memory
US20240078186A1 (en) Cache systems
US20230195631A1 (en) Cache systems
CN110636309B (zh) 数据处理系统
US11954038B2 (en) Efficient evict for cache block memory
US11205243B2 (en) Data processing systems
US11586554B2 (en) Cache arrangements for data processing systems
US20230196624A1 (en) Data processing systems
GB2614069A (en) Cache systems
GB2614071A (en) Cache systems
GB2614073A (en) Cache systems