KR102535825B1 - 시스템 온 칩 및 시스템 온 칩의 동작 방법 - Google Patents

시스템 온 칩 및 시스템 온 칩의 동작 방법 Download PDF

Info

Publication number
KR102535825B1
KR102535825B1 KR1020150078662A KR20150078662A KR102535825B1 KR 102535825 B1 KR102535825 B1 KR 102535825B1 KR 1020150078662 A KR1020150078662 A KR 1020150078662A KR 20150078662 A KR20150078662 A KR 20150078662A KR 102535825 B1 KR102535825 B1 KR 102535825B1
Authority
KR
South Korea
Prior art keywords
data
compression
chip
area
block
Prior art date
Application number
KR1020150078662A
Other languages
English (en)
Other versions
KR20160142653A (ko
Inventor
김상희
오정민
전민제
하진석
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020150078662A priority Critical patent/KR102535825B1/ko
Priority to US15/134,726 priority patent/US10249269B2/en
Publication of KR20160142653A publication Critical patent/KR20160142653A/ko
Application granted granted Critical
Publication of KR102535825B1 publication Critical patent/KR102535825B1/ko

Links

Images

Classifications

    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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/39Control of the bit-mapped memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3215Monitoring of peripheral devices
    • G06F1/3225Monitoring of peripheral devices of memory devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • 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/08Power processing, i.e. workload management for processors involved in display operations, such as CPUs or GPUs
    • 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/001Arbitration of resources in a display system, e.g. control of access to frame buffer by video controller and/or main processor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Multimedia (AREA)

Abstract

시스템 온 칩(system on chip) 및 시스템 온 칩의 동작 방법이 개시된다. 일 실시예에 따른 시스템 온 칩의 동작 방법은, 프로세서(processor)의 제어에 의해 수행되는 시스템 온 칩의 동작 방법으로, 상기 시스템 온 칩의 버퍼 메모리(buffer memory)의 할당에 대한 요청을 분석하여 제1 특성을 설정하는 단계; 상기 버퍼 메모리의 할당에 대한 요청에 응답하여, 상기 버퍼 메모리의 제1 영역을 할당하는 단계; 및 상기 제1 특성에 근거하여, 상기 제1 영역으로 제공되는 데이터(data)에 대한 압축 여부를 달리하는 단계를 포함한다.

Description

시스템 온 칩 및 시스템 온 칩의 동작 방법 {System On Chip and Operating Method of System On Chip}
본 개시는 시스템 온 칩 및 시스템 온 칩의 동작 방법에 관한 것으로, 전력 소모를 줄이면서도 최적화된 동작을 수행할 수 있는 시스템 온 칩 및 시스템 온 칩의 동작 방법에 관한 것이다.
시스템 온 칩(system on chip)에서 처리되는 동작에 대한 시나리오(scenario)의 복잡도 및 이미지(image)의 해상도(resolution)가 증가됨에 따라 시스템 온 칩에서의 메모리 대역폭(memory bandwidth) 및 전력 소모가 증가한다.
전력 소모를 줄이면서도 최적화된 동작을 수행할 수 있는 시스템 온 칩 및 시스템 온 칩의 동작 방법이 제공된다.
일 실시예에 따른 시스템 온 칩(system on chip)의 동작 방법은, 프로세서(processor)의 제어에 의해 수행되는 시스템 온 칩의 동작 방법으로, 상기 시스템 온 칩의 버퍼 메모리(buffer memory)의 할당에 대한 요청을 분석하여 제1 특성을 설정하는 단계; 상기 버퍼 메모리의 할당에 대한 요청에 응답하여, 상기 버퍼 메모리의 제1 영역을 할당하는 단계; 및 상기 제1 특성에 근거하여, 상기 제1 영역으로 제공되는 데이터(data)에 대한 압축 여부를 달리하는 단계를 포함한다.
일 실시예에 따른 시스템 온 칩(system on chip)의 동작 방법은, 어플리케이션(application)의 실행을 위해, 할당된 버퍼 메모리(buffer memory)의 제1 영역으로 데이터(data)를 제공하는 제1 IP 블록(Intellectual Property block) 및 상기 제1 영역에 저장된 데이터를 사용하는 제2 IP 블록을 포함하는 시스템 온 칩(system on chip)의 동작 방법으로, 상기 제1 IP 블록이, 압축 가능 여부를 나타내는 제1 플래그(flag)를 체크(check)하는 단계; 상기 제1 플래그의 활성화 여부에 따라, 상기 제1 IP 블록이 압축 여부를 달리하는 상기 데이터를 상기 제1 영역으로 전송하는 단계; 상기 제1 영역으로 전송된 데이터의 압축 여부에 따라 제2 플래그의 활성화를 달리하는 단계; 상기 제2 플래그 활성화 여부에 따라, 상기 제2 IP 블록이 상기 제1 영역으로부터 독출된 데이터의 압축 해제의 수행 여부를 달리하는 단계; 및 상기 제2 IP 블록의 동작 환경 및 동작 결과 중 적어도 하나에 근거하여, 상기 제1 플래그의 활성화를 달리하는 단계를 포함한다.
일 실시예에 따른 시스템 온 칩 및 시스템 온 칩의 동작 방법은, 시스템 온 칩의 프레임 버퍼(frame buffer)에 제공되는 데이터의 특성 또는 프레임 버퍼의 데이터를 사용하는 IP 블록(Intellectual Property block)의 압축 해제 능력 등에 근거하여, 데이터의 압축 여부를 달리 설정함으로써, 제한된 리소스(resource) 하에, 메모리 대역폭(memory bandwidth)을 줄이거나 전력 소모를 감소시킬 수 있다.
일 실시예에 따른 시스템 온 칩 및 시스템 온 칩의 동작 방법은, 데이터 처리에 소요되는 메모리 대역폭을 줄임으로써, 시스템 온 칩 또는 시스템 온 칩을 포함하는 전자 장치의 동작 시나리오의 유연성을 증가시킴으로써, 동작 특성을 향상시킬 수 있다.
일 실시예에 따른 시스템 온 칩 및 시스템 온 칩의 동작 방법은, 데이터의 처리에 따라 프레임 버퍼로 데이터를 제공하는 프로듀서(producer)와 프레임 버퍼로의 데이터를 사용하는 컨슈머(consumer) 사이의 핸드쉐이킹(handshaking)을 통해, 데이터의 압축 여부를 달리하여 하드웨어 리소스(hardware resource)를 자유롭게 운용함으로써, 최적의 솔루션(solution)을 제공할 수 있다.
도 1은 일 실시예에 따른 시스템 온 칩의 동작 방법을 나타내는 도면이다. 도 2는 일 실시예에 따른 시스템 온 칩을 나타내는 도면이다.
도 3은 일 실시예에 따른 제1 특성을 설정하는 방법을 나타내는 도면이다.
도 4는 다른 실시예에 따른 시스템 온 칩을 나타내는 도면이다.
도 5는 다른 실시예에 따른 시스템 온 칩의 동작 방법을 나타내는 도면이다.
도 6은 일 실시예에 따른 IP 블록들의 압축 능력 및 압축 해제 능력을 나타내는 도면이다.
도 7은 일 실시예에 따른 버퍼 할당부의 예를 나타내는 도면이다.
도 8은 일 실시예에 따른 제1 영역의 할당을 설명하기 위한 도면이다.
도 9 내지 도 11은 각각, 다른 실시예에 따른 제1 특성의 설정 방법을 나타내는 도면이다.
도 12는 다른 실시예에 따른 시스템 온 칩의 동작 방법을 나타내는 도면이다.
도 13 및 도 14는 각각, 일 실시예에 따른 프로듀서와 컨슈머 사이의 핸드쉐이킹을 수행하기 위한 프로듀서와 컨슈머의 동작 방법을 나타내는 도면이다.
도 15는 다른 실시예에 따른 시스템 온 칩의 동작 방법을 나타내는 도면이다.
도 16은 다른 실시예에 따른 시스템 온 칩을 나타내는 도면이다.
도 17은 본 발명의 일 실시예에 따른 모바일 장치를 나타내는 도면이다.
도 18는 본 발명의 일 실시예에 따른 컴퓨팅 시스템(computing system)을 나타내는 도면이다.
이하, 첨부한 도면을 참조하여 실시예를 설명한다.
도 1은 일 실시예에 따른 시스템 온 칩의 동작 방법을 나타내는 도면이다. 도 1을 참조하면, 일 실시예에 따른 시스템 온 칩(system on chip)의 동작 방법(100)은 버퍼 메모리(buffer memory)의 할당에 대한 요청을 분석하여 제1 특성을 설정하는 단계(S120), 버퍼 메모리의 할당에 대한 요청에 응답하여, 버퍼 메모리의 제1 영역을 할당하는 단계(S140) 및 제1 특성에 근거하여, 제1 영역으로 제공되는 데이터(data)에 대한 압축 여부를 달리하는 단계(S160)을 포함한다.
도 1의 동작 방법(100)은 도 2의 시스템 온 칩에서 수행될 수 있다. 도 2는 일 실시예에 따른 시스템 온 칩을 나타내는 도면이다. 도 2를 참조하면, 일 실시예에 따른 시스템 온 칩(200)은 버퍼 메모리(220), 프로듀서(producer, 240), 컨슈머(consumer, 260) 및 버퍼 할당부(280)를 포함할 수 있다.
버퍼 메모리(220)는 시스템 온 칩(200)에 의해 실행되는 어플리케이션(application)에 사용되는 데이터가 로딩(loading) 된다. 어플리케이션에 사용되는 데이터는 시스템 온 칩(200)을 포함하는 전자 장치(미도시)의 디스플레이 화면에 디스플레이(display) 되는 이미지 데이터(image data)일 수 있다. 이 경우, 버퍼 메모리(220)는 프레임 버퍼(frame buffer)로 구현될 수 있다.
어플리케이션의 실행을 위해, 프로듀서(240)는 버퍼 메모리(220)에 데이터를 공급하고, 컨슈머(260)는 버퍼 메모리(220)로부터 데이터를 제공받는다. 다르게 말하면, 프로듀서(240)는 버퍼 메모리(220)에 데이터를 기입하고, 컨슈머(260)는 버퍼 메모리(220)로부터 데이터를 독출할 수 있다. 프로듀서(240) 및 컨슈머(260)는 각각, 시스템 온 칩(200)에 포함되는 IP 블록(Intellectual Property block)들 중 하나일 수 있다. 시스템 온 칩(200)에 포함되는 IP 블록들은 프로듀서(240)로만 동작하거나 컨슈머(260)로만 동작할 수 있다. 또는 시스템 온 칩(200)에 포함되는 IP 블록들은 프로듀서(240) 및 컨슈머(260) 모두로 동작할 수 있다.
버퍼 할당부(280)는 프로듀서(240) 및 컨슈머(260)가 어플리케이션의 실행에 사용되는 데이터를 버퍼 메모리(220)로 기입 및 독출할 수 있도록, 버퍼 메모리(220)의 일부 영역을 할당한다. 예를 들어, 버퍼 할당부(280)는 제1 어플리케이션(예를 들어, 음악 재생 어플리케이션)의 실행 시에 디스플레이 되는 이미지 데이터가 버퍼 메모리(220)로 기입 및 독출할 수 있도록, 버퍼 메모리(220)의 제1 영역(220_1)을 할당할 수 있다. 이하에서는 설명의 편의를 위해, 별도의 언급이 없는 한, 버퍼 메모리(220)의 할당에 대한 요청(REQ)으로 할당되는 버퍼 메모리의 영역을 제1 영역(220_1)으로 지칭한다.
버퍼 할당부(280)는 버퍼 메모리(220)의 할당에 대한 요청(REQ)에 근거하여, 제1 영역(220_1)을 할당할 수 있다. 도 2는 버퍼 메모리(220)의 할당에 대한 요청(REQ)이 버퍼 할당부(280)의 외부에서 인가되는 것으로 도시하였으나, 이에 한정되는 것은 아니다. 후술되는 바와 같이, 버퍼 메모리(220)의 할당에 대한 요청(REQ)은 버퍼 메모리(220)의 할당에 대한 요청(REQ)은 어플리케이션으로부터 제공되는 신호(정보)에 기반하여 생성될 수 있다. 예를 들어, 버퍼 메모리(220)의 할당에 대한 요청(REQ)은 소프트웨어 플랫폼(software platform)인 안드로이드(Android)의 함수 gralloc()으로 구현될 수 있다.
예를 들어, 버퍼 메모리(220)의 할당에 대한 요청(REQ)에는 어플리케이션의 실행을 위해 제1 영역(220_1)으로 제공되는 데이터에 대한 정보를 포함할 수 있다. 예를 들어, 버퍼 메모리(220)의 할당에 대한 요청(REQ)에는 제1 어플리케이션의 실행에 따라 디스플레이 되는 이미지 데이터의 크기 또는 포맷(format)에 대한 정보를 포함할 수 있다. 이미지 데이터의 크기에 대한 정보는 이미지 데이터의 폭 및 높이에 대한 정보를 포함할 수 있고, 이미지 데이터의 포맷에 대한 정보는 이미지 데이터의 각각의 화소를 표현하기 위해 필요한 바이트(byte)에 대한 정보를 포함할 수 있다. 예를 들어, 포맷이 RGBAx8888인 경우 이미지 데이터의 각각의 화소를 표현하기 위해 4 바이트가 요구되고, 포맷이 RGBx565인 경우 이미지 데이터의 각각의 화소를 표현하기 위해 2 바이트가 요구된다.
버퍼 메모리(220)의 할당에 대한 요청(REQ)은 그 밖에 다양한 정보를 포함할 수 있다. 이에 대한 자세한 사항은 후술된다. 버퍼 할당부(280)는 요청(REQ)에서 정의된 데이터의 크기 및 포맷에 대응되는 크기를 갖도록 제1 영역(220_1)을 설정할 수 있다.
이와 같이 할당된 제1 영역(220_1)으로 프로듀서(240)는 데이터를 제공하고, 제1 영역(220_1)에 제공된 데이터는 컨슈머(260)에 의해 사용된다. 일 실시예에 따른 시스템 온 칩(200) 및 이의 동작 방법(100)은 버퍼 메모리(220)의 할당에 대한 요청(REQ)에 근거하여 제1 특성을 설정하고(S120), 요청(REQ)에 대응되는 제1 영역(220_1)을 설정하여(S140) 프로듀서(240)로부터 제1 영역(220_1)으로 전송되는 데이터의 압축 여부를 달리함으로써(S160), 제한된 하드웨어 리소스(hardware resource)로도, 데이터의 전송에 따른 메모리 대역폭(memory bandwidth)을 줄일 수 있다. 이에 대하여 설명한다.
도 3은 일 실시예에 따른 제1 특성을 설정하는 방법을 나타내는 도면이다. 도 2 및 도 3을 참조하면, 제1 특성을 설정하는 방법(S120a)은 버퍼 메모리(220)의 할당에 대한 요청(REQ)을 분석하는 단계(S322), 요청(REQ)의 분석 결과에 근거하여 프로듀서(240)와 컨슈머(260)를 설정하는 단계(S324) 및 설정된 프로듀서(240)의 압축 능력 및 컨슈머(260)의 압축 해제 능력을 확인하는 단계(S326)를 포함할 수 있다. 압축 능력은 데이터에 대한 압축 수행 가부 및 압축률 등을 나타낼 수 있다. 압축 해제 능력은 압축된 데이터에 대한 압축 해제 가부 및 압축 해제 비율(decompression rate) 등을 나타낼 수 있다. 압축율 및 압축 해제 비율은 압축 알고리즘 및 압축 해제 알고리즘에 의해 설정될 수 있다. 제1 특성은 압축 특성, 예를 들어 압축 가부 또는 압축 적부 등을 나타낼 수 있다.
버퍼 메모리(220)의 할당에 대한 요청(REQ)에는 어플리케이션의 실행을 위해 제1 영역(220_1)으로 데이터를 제공하는 프로듀서(240)와 제1 영역(220_1)으로 데이터를 제공하고 컨슈머(260)에 대한 정보를 포함할 수 있다. 이에 대한 정보는 SW Usage Flag로 나타내어 질 수 있다.
도 4는 다른 실시예에 따른 시스템 온 칩을 나타내는 도면이다. 도 3 및 도 4를 참조하면, 시스템 온 칩(400)에서, 버퍼 메모리(220)의 할당에 대한 요청(REQ)은 다수의 어플리케이션에 대해 각각 생성될 수 있다. 도 4의 예에서, 버퍼 메모리(220)의 할당에 대한 다수의 요청(REQ) 각각에 의해 버퍼 메모리(220)의 제1 영역(220_1) 내지 제X 영역(220_X)이 할당될 수 있다. 예를 들어, 버퍼 메모리(220)의 제1 영역(220_1) 내지 제X 영역(220_X) 중 적어도 두 영역에 대한 압축 특성(제1 특성)이 서로 달리 설정되어 할당될 수 있다. 예를 들어, 도 4의 제1 영역(220_1)은 압축이 수행되지 아니하는 영역으로 설정될 수 있다. 반면, 제2 영역(220_2)은 압축이 수행되는 영역으로 설정될 수 있다.
버퍼 메모리(220)의 각 영역에 대한 압축 수행 여부에 대한 설정은 전술된 바와 같이, 요청(REQ)에 의해 설정되는 프로듀서(240)와 컨슈머(260)에 대한 압축 능력 및 압축 해제 능력에 근거할 수 있다. 도 4는 다수의 요청(REQ) 각각에 대한 프로듀서(240)가 GPU(Graphic Processing Unit, 240_1)로 설정되는 예를 도시한다. 다만, 이에 한정되는 것은 아니고, 시스템 온 칩(400)은 다른 IP 블록이 프로듀서(240)로 설정될 수 있다. 도 4는 컨슈머(260)가 서로 다른 요청(REQ)에 대해 다르게 설정될 수 있음을 예시하고 있다. 예를 들어, 제1 영역(220_1)에 대응되는 컨슈머(260)로 CPU(Central Processing Unit, 260_1)가 설정되고, 제2 영역(220_2)에 대응되는 컨슈머(260)로 디스플레이 제어기(display controller, 260_2)가 설정될 수 있다. 그 밖에 컨슈머(260)는 임의의 IP 블록(260_i)으로 설정될 수 있다.
버퍼 할당부(280)는 설정된 프로듀서(240) 및 컨슈머(260)에 대한 압축 능력 및 압축 해제 능력을 파악할 수 있다(S326). 예를 들어, 프로듀서(240)는 압축 모듈을 포함하고 있어, 데이터의 압축을 수행할 수 있다. 그런데, CPU(260_1)는 압축 해제 모듈을 포함하지 아니하므로, 압축된 데이터를 직접 사용할 수가 없을 수 있다. 이 경우, GPU(240_1)가 압축한 데이터를 제1 영역(220_1)에 제공하더라도 CPU(260_1)는 압축 해제 모듈을 포함하지 아니하는 CPU(260_1)가 압축된 데이터를 사용하기 위해서는, 소프트웨어(software)로 구현된 압축해제 동작을 수행해야 한다. 이러한 압축해제 동작을 위해, CPU(260_1)는 버퍼(220)를 계속 액세스(access)해야 하므로, 비록 GPU(240_1)가 데이터를 압축함으로써 제1 영역(220_1)으로 데이터를 전송하기 위한 메모리 대역폭은 줄었더라도, CPU(260_1)에서 압축해제를 위해 버퍼(220)를 추가적으로 액세스해야 하므로 메모리 대역폭이 추가로 늘어날 수 있다. 나아가 소프트웨어로 구현된 압축해제 동작에 소요되는 시간으로 인하여 지연이 야기될 수 있다. 이러한 경우, GPU(240_1)는 압축되지 아니한 데이터를 제1 영역(220_1)으로 전송할 수 있다. 반면, 디스플레이 제어기(260_2)는 적어도 하나 이상의 압축 해제 모듈을 포함하고 있어 압축된 데이터를 직접 압축 해제하여 사용할 수 있다. 따라서, GPU(240_1), 제2 영역(220_2) 및 디스플레이 제어기(260_2) 사이에서 압축된 데이터가 송수신됨으로써 메모리 대역폭을 줄일 수 있다.
버퍼 할당부(280)는 설정된 프로듀서(240) 및 컨슈머(260)에 대한 압축 능력 및 압축 해제 능력에 근거하여, 프로듀서(240)로 제1 특성에 대응되는 제어 신호(XCON)를 전송한다. 예를 들어, 버퍼 할당부(280)는 제1 특성이 데이터의 압축이 효율적임을 나타내는 경우 제1 값의 제어 신호(XCON)를 생성하고, 효율적이지 아니함을 나타내는 경우 제2 값의 제어 신호(XCON)를 생성할 수 있다. 프로듀서(240)는 제어 신호(XCON)에 응답하여, 데이터의 압축 여부를 달리하여 제1 영역(220_1)으로 전송한다.
예를 들어, 프로듀서(240) 및 컨슈머(260)가 각각, GPU(240_1) 및 CPU(260_1)로 설정된 경우, 버퍼 할당부(280)는 제2 값의 제어 신호(XCON)를 GPU(240_1)로 전송하고, 제어 신호(XCON)에 응답하여 GPU(240_1)는 압축되지 아니한 데이터(DTA_n)를 제1 영역(220_1)으로 전송할 수 있다. CPU(260_1)는 압축되지 않은 상태로 제1 영역(220_1)에 저장된 데이터(DTA_n')를 사용하여 동작을 수행할 수 있다. 예를 들어, 프로듀서(240) 및 컨슈머(260)가 각각, GPU(240_1) 및 디스플레이 제어기(260_2)로 설정된 경우, 버퍼 할당부(280)는 제1 값의 제어 신호(XCON)를 GPU(240_1)로 전송하고, 제어 신호(XCON)에 응답하여 GPU(240_1)는 압축된 데이터(DTA_c)를 제1 영역(220_1)으로 전송할 수 있다. 디스플레이 제어기(260_2)는 압축되어 제1 영역(220_1)에 저장된 데이터(DTA_n')를 수신하여 압축 해제한 후 사용함으로써, 동작을 수행할 수 있다. 컨슈머(260)가 데이터의 압축 여부를 확인하는 방법에 대하여는 후술된다.
도 5는 다른 실시예에 따른 시스템 온 칩의 동작 방법을 나타내는 도면이다. 도 5의 시스템 온 칩의 동작 방법(500)은 도 2의 시스템 온 칩(200) 또는 도 4의 시스템 온 칩(400) 등에서 수행될 수 있다. 다만, 설명의 편의를 위해 도 2의 시스템 온 칩(200)에서 수행되는 예에 한하여 설명한다. 도 2 및 도 5를 참조하면, 시스템 온 칩(200)의 동작 방법(500)은, IP 블록들의 압축 능력 및 압축 해제 능력에 대한 정보를 저장하는 단계(S510), 버퍼 메모리(220)의 할당에 대한 요청(REQ)을 수신하는 단계(S520), 요청(REQ)이 지시하는 프로듀서(240)와 컨슈머(260)를 특정하는 단계(S530), 특정된 프로듀서(240)의 압축 능력 및 컨슈머(260)의 압축 해제 능력을 확인하는 단계(S540), 프로듀서(240)의 압축 능력 및 컨슈머(260)의 압축 해제 능력에 근거하여 압축하는 것이 적절하다고 판단되면(S550의 YES) 제1 특성을 제1 값으로 설정하는 단계(S560), 및 프로듀서(240)의 압축 능력 및 컨슈머(260)의 압축 해제 능력에 근거하여 압축이 적절하지 않다고 판단되면(S550의 NO) 제1 특성을 제2 값으로 설정하는 단계(S570)를 포함할 수 있다.
도 5에서 제1 특성의 제1 값 또는 제2 값으로 설정하는 것은(S560, S570)은, 도 4에서 설명된 제1 특성에 대응되는 제어 신호(XCON)를 제1 값 또는 제2 값으로 생성하는 것과 동일한 동작일 수 있다. 도 5의 방법(500)에서, 요청(REQ)에 따라 프로듀서(240)와 컨슈머(260)를 특정하고(S530), 특정된 프로듀서(240)의 압축 능력 및 컨슈머(260)의 압축 해제 능력을 확인하여(S540) 및 제1 특성을 달리 설정(S550, S560, S570)은 전술된 도 4와 같으므로, 이에 대한 더 자세한 설명은 생략한다. 도 5의 방법에 의하면, 요청(REQ)을 수신(S520)하기 이전에, 시스템 온 칩(200)의 각 IP 블록들의 압축 능력 및 압축 해제 능력을 저장할 수 있다(S510). 시스템 온 칩(200)의 각 IP 블록들의 압축 능력 및 압축 해제 능력은 서로 상이할 수 있다.
도 6은 일 실시예에 따른 IP 블록들의 압축 능력 및 압축 해제 능력을 나타내는 도면이다. 도 6에서는 IP 블록들 중 제1 영역(220_1)과 관계된 IP 블록을 프로듀서(240)와 컨슈머(260)로 나타낸다. 도 6의 (a)와 같이, 프로듀서(240)는 제1 압축 모듈(C1)을 포함하고, 컨슈머(260)는 제1 압축 해제 모듈(D1)을 포함할 수 있다. 제1 압축 모듈(C1) 및 제1 압축 해제 모듈(D1)은 각각, 하드웨어(hardware)로 구현될 수 있다. 제1 압축 모듈(C1) 및 제1 압축 해제 모듈(D1)은 복수로 구비될 수 있다. 이는 후술되는 제2 압축 해제 모듈(D2)도 마찬가지이다.
제1 압축 모듈(C1)에서 수행되는 압축 알고리즘 및 제1 압축 해제 모듈(D1)에서 수행되는 압축 해제 알고리즘은 동일할 수 있다. 임의의 압축 알고리즘 및 임의의 압축 해제 알고리즘이 동일하다 함은 임의의 압축 알고리즘으로 압축된 데이터가 임의의 압축 해제 알고리즘을 통해 압축 해제될 수 있음을 나타낸다. 도 6의 (a)의 경우, 프로듀서(240)는 압축된 데이터(DTA_c)를 제1 영역(220_1)에 전송하고, 컨슈머(260)는 압축되어 제1 영역(220_1)에 저장된 데이터(DTA_c')를 수신하여 압축 해제할 수 있다. 따라서, 메모리 대역폭이 감소할 수 있다.
반면, 도 6의 (b) 및 (c)의 경우, 프로듀서(240)는 압축되지 아니한 데이터(DTA_n)를 제1 영역(220_1)에 전송하고, 컨슈머(260)는 압축되지 않은 상태로 제1 영역(220_1)에 저장된 데이터(DTA_n')를 수신하여 사용할 수 있다. 도 6의 (b)의 경우, 프로듀서(240)는 제1 압축 모듈(C1)을 포함하는 반면, 컨슈머(260)는 압축 해제 모듈을 포함하지 않는다. 도 6의 (c)의 경우, 도 6의 (b)의 경우, 컨슈머(260)는 제2 압축 해제 모듈(D2)을 포함하기는 하나, 제2 압축 해제 모듈(D2)은 프로듀서(240)에 포함된 제1 압축 모듈(C1)과 다른 알고리즘으로 동작한다. 다시 말해, 제1 압축 모듈(C1)에 의해 압축된 데이터가 제2 압축 해제 모듈(D2)에 의해 압축 해제되지 못한다. 양자의 경우 모두, 컨슈머(260)는 프로듀서(240)에 의해 압축된 데이터를 사용할 수 없다.
이와 같이 다양한 IP 블록들의 압축 능력 또는 압축 해제 능력에 대한 정보가 시스템 온 칩(200) 또는 시스템 온 칩(200)이 포함되는 전자 장치에 저장될 수 있다. 버퍼 할당부(280)는 저장된 정보를 이용하여 제1 영역(220_1)에 대한 압축 특성 또는 제1 영역(220_1)에 제공되는 데이터에 대한 압축 여부를 설정할 수 있다.
도 7은 일 실시예에 따른 버퍼 할당부의 예를 나타내는 도면이다. 도 7을 참조하면, 버퍼 할당부(280)는 압축 결정부(282)를 포함할 수 있다. 압축 결정부(282)는 요청(REQ)을 분석하여 제1 특성을 설정하고 제1 특성에 대응되는 제어 신호(XCON)를 생성하여 프로듀서(240)로 전송할 수 있다.
버퍼 할당부(280)는 압축 정보 저장부(284)를 더 포함할 수 있다. 압축 정보 저장부(284)는 제1 영역(220_1)에 제공되는 데이터의 압축 여부에 대한 정보를 저장할 수 있다. 압축 정보 저장부(284)는 제어 신호(XCON)에 근거하여 제1 영역(220_1)에 제공되는 데이터의 압축 여부를 판단할 수 있다. 또는, 압축 정보 저장부(284)는 데이터를 압축하여 제1 영역(220_1)에 전송하는 프로듀서(240)로부터 제1 신호(SIG1)를 수신하여 데이터의 압축 여부를 판단할 수 있다. 압축 정보 저장부(284)는 제1 영역(220_1)에 제공되는 데이터의 압축 여부를 플래그(flag)로 저장할 수 있다. 예를 들어, 제1 영역(220_1)에 제공되는 데이터가 압축되는 경우 플래그 비트(flag bit)를 1로 활성화 하고, 제1 영역(220_1)에 제공되는 데이터가 압축되지 아니한 경우 플래그 비트를 0으로 비활성화 할 수 있다. 압축 정보 저장부(284)에 저장된 데이터의 압축 여부를 나타내는 정보, 즉 압축 플래그(CFLG)는 컨슈머(260)에 의해 사용될 수 있다. 컨슈머(260)는 제1 영역(220_1)으로부터 데이터를 독출하는 때에, 압축 플래그(CFLG)에 근거하여 데이터의 압축 여부를 판단할 수 있다.
버퍼 할당부(280)는 압축 능력 테이블(286)을 더 포함할 수 있다. 압축 능력 테이블(286)은 전술된 IP 블록들의 압축 능력 또는 압축 해제 능력에 대한 정보를 저장할 수 있다. 압축 능력 테이블(286)은 IP 블록들을 인덱스(index)로 하고 각 IP 블록들에 대한 압축 능력 또는 압축 해제 능력에 대한 정보를 컨텐츠(contents)로 하는 테이블(table)의 형태로 구현될 수 있다. 압축 능력 테이블(286)은 버퍼 할당부(280)가 아닌 시스템 온 칩(200)이 포함되는 전자 장치의 비휘발성 메모리에 저장되고, 시스템 온 칩(200)이 활성화 되는 때에 시스템 온 칩(200)의 시스템 메모리에 로딩되어 사용될 수 있다.
버퍼 할당부(280)는 외부로부터 요청(REQ)을 수신하는 대신, 내부의 할당 함수 생성부(288)를 포함하여 내부에서 요청(REQ)을 생성할 수 있다. 할당 함수 생성부(288)는 어플리케이션으로부터 버퍼 메모리(220)에 대한 할당에 대한 제2 신호(SIG2)를 수신하여, 이를 요청(REQ)으로 생성할 수 있다. 제2 신호(SIG2)는 사용하고자 하는 데이터의 크기 및 포맷에 대한 정보를 포함할 수 있다. 할당 함수 생성부(288)는 함수 gralloc()을 요청(REQ)으로 생성할 수 있다. 함수 gralloc()은 벤더 제공 라이브러리(vendor-supplied library)로 그래픽 버퍼(graphic buffer), 즉 프래임 버퍼를 할당에 관여한다. 이를 위해 함수 gralloc()은 데이터의 크기, 포맷, SW usage flag 등에 대한 정보를 포함한다. 함수 gralloc()에 의해 제1 영역(220_1)이 할당될 수 있다.
도 8은 일 실시예에 따른 제1 영역의 할당을 설명하기 위한 도면이다. 도 2 및 도 8을 참조하면, 제1 영역(220_1)은 요청(REQ)에 의해 나타내어지는 데이터의 크기에 대응되어 할당된다. 예를 들어, 제1 영역(220_1)은 도 8의 (a)와 같이, 데이터가 실리는 페이로드(payload)와 압축 특성 등의 정보를 포함하는 헤더(header)를 포함하는 크기로 할당될 수 있다. 또는, 제1 영역(220_1)은 도 8의 (b)와 같이, 데이터가 실리는 페이로드의 크기로만 할당되고, 헤더를 저장하기 위해 버퍼 메모리(220)의 별도의 영역이 할당될 수 있다. 예를 들어, 제1 영역(220_1)에 연속되는 제2 영역(220_2)가 헤더의 저장을 위해 할당될 수 있다.
이상에서는 프로듀서(240)와 컨슈머(260)에 근거하여 압축 특성(제1 특성)이 설정되는 예를 설명하였다. 그러나, 이에 한정되는 것은 아니다. 압축 특성은 요청(REQ)에서 정의된 데이터 정보에 근거하여 설정될 수 있다. 이에 대하여 설명한다.
도 9 내지 도 11은 각각, 다른 실시예에 따른 제1 특성의 설정 방법을 나타내는 도면이다. 먼저 도 2 및 도 9를 참조하면, 제1 특성의 설정 방법(120b)은 버퍼 메모리(220)의 할당에 대한 요청(REQ)을 분석하는 단계(S921), 버퍼 메모리(220)의 할당에 대한 요청(REQ)에서 정의된 데이터 정보를 확인하는 단계(S922), 데이터 정보가 RGB 포맷을 나타내는 경우(S923의 YES) 제1 특성을 제1 값으로 설정하는 단계(S924), 및 데이터 정보가 RGB 포맷을 나타내지 아니하는 경우(S923의 NO) 제1 특성을 제2 값으로 설정하는 단계(S925)를 포함할 수 있다.
전술한 바와 같이, 요청(REQ)에는 데이터의 포맷에 대한 정보를 포함할 수 있고, 이로부터 데이터의 포맷이 RGB(Red Green Blue) 포맷인지 YUV 포맷인지를 확인할 수 있다. YUV의 Y는 휘도 신호를, U 및 V는 PAL(Phase Alternation by Line system) 방식에서 사용되는 2개의 부반송파(subcarrier)의 중심축을 뜻한다. RGB 포맷의 경우, YUV 포맷에 비해 압축 효율이 높다. 압축 효율이 높은 데이터만을 압축함으로써, 압축 및 압축 해제에 소요되는 자원의 사용에도 불구하고, 메모리 대역폭 감소의 효과 이익을 달성할 수 있다. 데이터의 포맷에 따라 제1 특성의 값을 달리 설정하는 동작(S930, S940, S950)은 전술된 바와 같을 수 있다.
다음으로 도 2 및 도 10을 참조하면, 제1 특성의 설정 방법(120c)은 버퍼 메모리(220)의 할당에 대한 요청(REQ)을 분석하는 단계(S1021), 버퍼 메모리(220)의 할당에 대한 요청(REQ)에서 정의된 데이터 정보를 확인하는 단계(S1022), 데이터 정보에 포함된 데이터의 크기가 임의의 값(A) 이상인 경우(S1023의 YES) 제1 특성을 제1 값으로 설정하는 단계(S1024), 및 데이터 정보에 포함된 데이터의 크기가 임의의 값(A)보다 작은 경우(S1023의 NO) 제1 특성을 제2 값으로 설정하는 단계(S1025)를 포함할 수 있다.
도 10의 방법(120c)은 도 9의 방법(120b)과 마찬가지로 요청(REQ)에서 정의된 데이터 정보를 이용한다. 다만, 도 10의 방법(120c)은 데이터의 크기에 따라 제1 특성을 달리 설정한다. 예를 들어, 디스플레이 되는 데이터의 크기가 임의의 값보다 작은 경우, 압축에 의한 메모리 대역폭의 감소에 의한 이익보다 추가적인 성능 오버헤드(overhead)에 의한 손실이 클 수 있다.
다음으로 도 2 및 도 11을 참조하면, 제1 특성의 설정 방법(120d)은 버퍼 메모리(220)의 할당에 대한 요청(REQ)을 분석하는 단계(S1121), 버퍼 메모리(220)의 할당에 대한 요청(REQ)에서 정의된 데이터 정보를 확인하는 단계(S1122), 데이터 정보가 데이터 변형에 대한 정보를 포함하는 경우(S1123의 YES) 제1 특성을 제1 값으로 설정하는 단계(S1124), 및 데이터 정보가 데이터 변형에 대한 정보를 포함하지 아니하는 경우(S1123의 NO) 제1 특성을 제2 값으로 설정하는 단계(S1125)를 포함할 수 있다. 데이터 변형은 원본 데이터에 대한 확대(scaling), 회전(rotating) 또는 자르기(cropping) 등을 나타낼 수 있다.
도 11의 방법(120d)은 도 9의 방법(120b)과 마찬가지로 요청(REQ)에서 정의된 데이터 정보를 이용한다. 다만, 도 11의 방법(120d)은 데이터 변형 여부에 따라 제1 특성을 달리 설정한다. 예를 들어, 요청(REQ)에는 scaling, rotating 또는 cropping 등과 같이, 데이터의 변형의 수행에 대한 정보를 포함할 수 있다. 이렇게 변형이 예정된 데이터를 압축한 경우, 압축 해제 시에 요구되는 퀄리티(quality)가 보장되지 아니할 수 있다. 도 11의 방법(120d)에 의하면 데이터의 압축에 의해 메모리 대역폭의 감소를 추구하면서도 데이터의 퀄리티를 보장할 수 있다.
이렇듯, 일 실시예에 따른 시스템 온 칩 및 이의 동작 방법은 버퍼 메모리(220)에 제공되는 데이터의 특성 또는 버퍼 메모리(220)의 데이터를 사용하는 IP 블록의 압축 해제 능력 등에 근거하여, 데이터의 압축 여부를 달리 설정함으로써, 시스템 온 칩(200)에서 처리되는 동작에 대한 시나리오(scenario)의 복잡도 및 이미지(image)의 해상도(resolution)가 증가되더라도, 기준 시간 당 버퍼 메모리(220)로 입력 또는 출력되는 데이터의 양(메모리 대역폭)의 증가를 방지할 수 있다. 이에 따라, 일 실시예에 따른 시스템 온 칩 및 이의 동작 방법에 의하면, 시스템 온 칩(200)에서의 전력 소모의 증가 및 버퍼 메모리(220)의 사용에 소요되는 시간이 길어짐에 따른 동작 시나리오에 대한 제한을 방지할 수 있다.
이상에서는 하나의 조건에 따라 압축 여부를 달리함을 설명하였으나, 이에 한정되는 것은 아니다. 일 실시예에 따른 시스템 온 칩 및 이의 동작 방법은 적어도 둘 이상의 조건에 따라 압축 여부를 달리 설정 또는 수행할 수 있다. 예를 들어, 전술된 프로듀서(240) 및 컨슈머(260)의 압축 능력 또는 압축 해제 능력도 충족되고, 도 9 내지 도 11의 데이터 정보 중 적어도 하나 이상의 조건도 충족되는 경우에 한하여 데이터의 압축을 수행할 수도 있다. 예를 들어, 컨슈머(260)가 도 4의 디지털 컨트롤러(260_2)이고, 데이터의 포맷이 RGB 포맷이고, 데이터의 크기가 A 이상인 경우에 한하여 데이터의 압축을 수행할 수도 있다.
또한, 이상에서는 버퍼 메모리(220)의 할당에 대한 요청(REQ)에 근거하여 압축 여부를 달리함을 설명하였으나, 이에 한정되는 것은 아니다. 예를 들어, 시스템 온 칩(또는 시스템 온 칩의 IP 블록)의 동작 환경 또는 동작 결과에 따라 버퍼 메모리(220)에 할당되는 제1 영역(220_1) 또는 버퍼 메모리(220)로 전송되는 데이터의 압축 여부가 달리 설정될 수도 있다. 이에 대하여 설명한다.
도 12는 다른 실시예에 따른 시스템 온 칩의 동작 방법을 나타내는 도면이다. 도 12의 동작 방법(1200)은 도 2의 시스템 온 칩(200) 또는 도 4의 시스템 온 칩(400) 등에서 수행될 수 있다. 다만, 설명의 편의를 위해 도 2의 시스템 온 칩(200)에서 수행되는 예에 한하여 설명한다. 도 2 및 도 12를 참조하면, 시스템 온 칩(200)의 동작 방법(1200)은, 도 1의 동작 방법(100)과 마찬가지로 버퍼 메모리(220)의 할당에 대한 요청(REQ)에 근거하여 제1 특성을 설정하고 압축 여부를 달리한다(S120, S140, S160). 그리고, 제1 모드인 경우(S1210의 YES) 결정된 바에 따라 압축된 데이터 또는 압축되지 아니한 데이터를 제1 영역(220_1)으로 전송한다(S1230).
다만, 도 12의 동작 방법(1200)은 제1 모드가 아닌 경우(S1210의 NO), 버퍼 메모리(220)의 할당에 대한 요청(REQ)이 아닌, 시스템 온 칩(200) 또는 시스템 온 칩(200)의 IP 블록의 동작 환경 또는 동작 결과에 근거하여 압축 여부를 달리할 수 있다. 이를 위해 도 12의 동작 방법(1200)은 제1 모드가 아닌 경우(S1210의 NO), 제1 영역(220_1)에 제공된 데이터를 사용하는 IP 블록의 동작 환경 및 동작 결과 중 적어도 하나에 근거하여 제2 특성을 설정하는 단계(S1250) 및 제2 특성에 근거하여 제1 영역으로 제공되는 데이터에 대한 압축 여부를 달리하는 단계(S1270)을 포함할 수 있다. 제2 특성 또한 제1 특성과 마찬가지로 압축 가부 또는 압축 적부 등을 나타낼 수 있다. 다만, 제2 특성은 제1 특성과 다른 값으로 설정될 수 있다.
제1 모드는 예를 들어, 프로듀서(240) 또는 컨슈머(260)에 의해 설정될 수 있다. 또는 제1 모드는 시스템 온 칩(200) 또는 시스템 온 칩(200)이 포함되는 전자 장치의 레지스터 세트 등에 저장된 설정 정보에 대응되어 설정될 수 있다. 제1 모드는 시스템 온 칩(200)의 사용 가능한 자원이나 시나리오 확보를 위한 메모리 대역폭 감소의 요구 정도 등에 따라, 설정될 수 있다. 예를 들어, 요청(REQ)에 근거하여 압축을 수행하지 않는 것으로 결정되더라도(S160), 압축 또는 압축 해제를 수행할 리소스가 부족한 경우에 대한 처리 등을 고려하여 압축 여부를 결정하고자 하는 경우, 제1 모드가 비활성화 될 수 있다(S1210의 NO). 이에 대한 예를 설명한다.
시스템 온 칩(200)을 포함하는 전자 장치의 디스플레이 화면에 디스플레이 해야 하는 서페이스(surface)가 4개인데 이를 처리해야 하는 디스플레이 제어기(260_2)에 압축 해제 모듈이 3개만 포함되는 경우, 압축 결정부(282)는 요청(REQ)을 분석하여 압축이 부적절한 것으로 결정할 수 있다. 그럼에도 불구하고, 제1 모드가 비활성화 된 경우라면, 압축을 수행하도록 결정할 수 있다(S1250, S1270). 예를 들어, 디스플레이 제어기(260_2)는 3개의 압축 해제 모듈 중 2개의 압축 해제 모듈이 각각, 4개의 서페이스 중 크기가 상대적으로 큰 2개의 서페이스에 대한 압축 해제를 수행하고, 나머지 압축 해제 모듈이 상대적으로 크기가 작은 2개의 서페이스를 같이 압축 해제할 수 있다. 예를 들어, 전자 장치에 바탕 화면에 아이콘과 시간이 표시된 화면이 디스플레이 된다면, 바탕 화면, 아이콘 및 시간이 각각 하나의 서페이스로 지칭될 수 있다.
또는, 요청에 근거하여 요청(REQ)에 의해 압축을 수행할 것으로 결정되더라도(S160), 압축에 따른 메모리 대역폭의 감소에 비해 추가적인 오버헤드 발생이 문제되는 경우, 제1 모드가 비활성화 될 수 있다(S1210의 NO). 예를 들어, 요청(REQ)에 근거하여 압축을 수행할 것으로 결정된 데이터의 각 픽셀의 값에 대한 변화가 크다면, 즉 데이터가 복잡한 이미지에 나타내는 경우, 압축률이 낮을 수 있다. 이 경우, 디스플레이 제어기(260_2)는 압축을 수행하지 않도록 결정할 수 있다(S1250, S1270).
상기와 같은 동작을 수행하기 위해, 프로듀서(240)와 컨슈머(260) 사이의 핸드쉐이킹(handshaking)을 통한 압축 여부에 대한 정보 교환이 요구된다. 이에 대하여 설명한다.
도 13 및 도 14는 각각, 일 실시예에 따른 프로듀서와 컨슈머 사이의 핸드쉐이킹을 수행하기 위한 프로듀서와 컨슈머의 동작 방법을 나타내는 도면이다. 먼저 도 2 및 도 13을 참조하면, 프로듀서(240)의 동작 방법(1300)은 버퍼 메모리(220)의 제1 영역(220_1)으로의 기입을 위한 액세스(access)를 요청하는 단계(S1310), 제1 플래그를 체크(check)하는 단계(S1320), 제1 플래그가 활성화 되었으면(S1330의 YES) 압축된 데이터(DTA_c)를 제1 영역(220_1)으로 전송하고(S1340), 제1 영역에 대한 제2 플래그를 활성화하는 단계(S1350), 제1 플래그가 활성화 되지 않았다면(S1330의 NO) 압축되지 아니한 데이터(DTA_n)를 제1 영역에 전송하고(S1360), 제1 영역에 대한 제2 플래그를 비활성화하는 단계(S1370)를 포함할 수 있다.
제1 플래그는 압축 가능 여부를 나타낼 수 있다. 제1 플래그는 컨슈머(260)만이 활성화 또는 비활성화할 수 있다. 제1 플래그는 도 7의 압축 정보 저장부(284)와 같이 저장되거나 별도의 공간에 저장될 수 있다. 제1 플래그는 컨슈머(260)에 의해 동작 환경 또는 동작 결과 등에 근거하여 설정될 수 있다. 동작 환경은 컨슈머(260)에 포함되는 압축해제 리소스(resource), 즉 압축해제 모듈의 존부, 성능 또는 개수 등을 나타낼 수 있다. 동작 결과는 압축율 등을 나타낼 수 있다. 전술된 예에서, 디스플레이 제어기(260_2)가 3개의 압축 해제 모듈로 4개의 서페이스를 압축 해제할 수 있는 경우, 제1 플래그가 활성화 될 수 있다.
제2 플래그는 압축 여부를 나타낸다. 제2 플래그는 프로듀서(240)만이 활성화 또는 비활성화할 수 있다. 제2 플래그는 도 7의 압축 플래그(CFLG)일 수 있다. 제1 플래그가 활성화 상태이면(S1330의 YES) 압축된 데이터(DTA_c)가 제1 영역(220_1)에 저장되므로 제2 플래그를 활성화(S1350)하여 압축되었음을 나타낸다. 제1 플래그가 비활성화 상태이면(S1330의 NO) 압축이 불가능 또는 부적절한 상태를 나타내므로, 압축이 수행되지 아니한다(S1360). 압축이 수행되지 아니하였으므로, 제2 플래그를 비활성화하여(S1370) 압축되지 않았음을 나타낸다.
다음으로 도 2 및 도 14를 참조하면, 컨슈머(260)의 동작 방법(1400)은 버퍼 메모리(220)의 제1 영역(220_1)으로의 독출을 위한 액세스(access)를 요청하는 단계(S1410), 제2 플래그를 체크하는 단계(S1420), 제2 플래그가 활성화 되었으면(S1430의 YES) 압축된 상태로 제1 영역(220_1)에 저장된 데이터(DTA_c')를 독출하여 압축 해제하고(S1440), 제2 플래그가 활성화 되지 않았다면(S1430의 NO) 압축되지 아니한 상태로 제1 영역(220_1)에 저장된 데이터(DTA_n')를 독출하는 단계(S1450)를 포함할 수 있다. 즉, 컨슈머(260)는 제2 플래그를 확인하여 데이터의 압축 여부를 확인할 수 있다.
컨슈머(260)의 동작 방법(1400)은 압축된 데이터를 독출하여 압축해제한 경우(S1440), 컨슈머(260)가 추가적으로 압축된 데이터를 처리할 수 있는 상태인지를 확인한다. 즉, 추가적인 압축해제가 가능한지를 판단한다(S1460). 컨슈머(260)가 압축된 데이터를 처리할 수 있는지 여부는 전술된 바와 같이, 컨슈머(260)의 동작 환경 또는 동작 결과 등에 근거하여 설정될 수 있다. 컨슈머(260)는 추가적인 압축해제가 가능한 경우(S1460의 YES) 제1 영역에 대한 제1 플래그를 활성화한다(S1470). 전술한 바와 같이, 제1 플래그가 활성화되면, 프로듀서(240)는 추가적인 압축을 수행할 수 있다. 반면, 컨슈머(260)는 제1 영역에 대한 제2 플래그를 비활성화하는 단계(S1480)를 포함할 수 있다.
이렇듯, 일 실시예에 따른 시스템 온 칩 및 시스템 온 칩의 동작 방법은, 데이터의 처리에 따라 프레임 버퍼로 데이터를 제공하는 프로듀서(240)와 프레임 버퍼로의 데이터를 사용하는 컨슈머(260) 사이의 핸드쉐이킹을 통해, 데이터의 압축 여부를 달리하여 하드웨어 리소스(hardware resource)를 자유롭게 운용함으로써, 최적의 솔루션(solution)을 제공할 수 있다.
도 15는 다른 실시예에 따른 시스템 온 칩의 동작 방법을 나타내는 도면이다. 도 15의 동작 방법(1500)은 도 2의 시스템 온 칩(200) 또는 도 4의 시스템 온 칩(400) 등에서 수행될 수 있다. 다만, 설명의 편의를 위해 도 2의 시스템 온 칩(200)에서 수행되는 예에 한하여 설명한다. 도 15에서는 도 2의 프로듀서(240) 및 컨슈머(260)를 각각, 제1 IP 블록(240) 및 제2 IP 블록(260)으로 지칭된다.
도 2 및 도 15를 참조하면, 시스템 온 칩(200)의 동작 방법(1500)은 버퍼 메모리(220)의 제1 영역(220_1)에 데이터를 기입하고자 하는 제1 IP 블록(240)이 제1 플래그를 체크하는 단계(S1510), 제1 플래그의 활성화 여부에 따라 제1 IP 블록(240)이 압축 여부를 달리하는 데이터를 제1 영역(220_1)으로 전송하는 단계(S1520), 제1 영역(220_1)에 기입된 데이터의 압축 여부에 따라 제2 플래그의 활성화를 결정하는 단계(S1530), 제2 플래그 활성화 여부에 따라 제2 IP 블록(260)이 제1 영역(220_1)으로부터 독출된 데이터의 압축 해제 수행 여부 결정하는 단계(S1540) 및 제2 IP 블록(260)의 동작 환경 및 동작 결과 중 적어도 하나에 근거하여 제1 플래그의 활성화를 결정하는 단계(S1550)를 포함할 수 있다.
전술한 바와 같이, 제1 IP 블록(240)은 압축 수행이 가능함을 나타내는 제1 플래그가 활성화되는 경우에 한해 압축된 데이터(DTA_c)를 제1 영역(220_1)에 저장하고, 압축된 데이터(DTA_c)가 저장됨을 나타내도록 제2 플래그를 활성화 한다. 제2 IP 블록(260)은 제1 영역(220_1)으로부터 데이터를 독출하는 때에, 제2 플래그가 활성화된 경우에는 압축된 데이터(DTA_c')를 압축 해제하여 사용한다. 그리고, 제2 IP 블록(260)은 추가적인 압축해제가 가능한 경우에 한해 제1 플래그를 활성화한다(S1550).
도 16은 다른 실시예에 따른 시스템 온 칩을 나타내는 도면이다. 도 16을 참조하면, 시스템 온 칩(160)은 CPU(1610), 프레임 버퍼(1620), GPU(1630), 시스템 메모리(1640), IP 블록들(1650) 및 이들을 연결하는 버스(1660)을 포함할 수 있다. CPU(1610)는 시스템 온 칩(1600)의 동작을 제어하여 어플리케이션을 실행한다. 예를 들어, CPU(1610)는 어플리케이션의 실행을 위해 이미지 데이터가 디스플레이 되도록 제어할 수 있다. 이를 위해 CPU(1610)는 이미지 데이터를 저장하고 있는 프레임 버퍼(1620)로부터 데이터를 독출할 수 있다. GPU(1630)는 프레임 버퍼(1620)에 이미지 데이터를 제공할 수 있다. CPU(1610), 프레임 버퍼(1620) 및 GPU(1630)는 각각, 도 4의 CPU(260_1), 버퍼 메모리(220) 및 GPU(240_1)일 수 있다.
시스템 메모리(1640)는 어플리케이션의 실행에 필요한 제어 정보가 로드 될 수 있다. 예를 들어, 시스템 메모리(1640)에 전술된 압축 능력 테이블이 로드될 수 있다. IP 블록들(1650)은 어플리케이션의 실행을 위한 구체적인 동작을 수행할 수 있다. 예를 들어, IP 블록들(1650)은 비디오 코덱을 수행하거나, 3D 그래픽을 처리할 수 있다. CPU(1610) 및 GPU(1630)도 IP 블록으로 지칭될 수 있다. 도 16의 시스템 온 칩(1600)은 전술된 바와 같이 최적화된 압축 동작을 수행함으로써 메모리 대역폭을 감소시키고 메모리 액세스를 위한 버스(1660)의 점유율을 낮춰 시스템 온 칩(1600)의 동작 시나리오의 유연성을 증대시켜 동작 특성을 향상시킬 수 있다.
도 17은 본 발명의 일 실시예에 따른 모바일 장치를 나타내는 도면이다. 도 17을 참조하면, 모바일 장치(1700)는 시스템 온 칩으로 구현되는 어플리케이션 프로세서(1710), 커뮤니케이션 프로세서(1720), 카메라(1730), 디스플레이(1740), 커뮤니케이션 RF(communication Radio Frequency, 1850) 및 메모리들(1760, 1870)을 포함할 수 있다. 모바일 장치(1700)에서 어플리케이션 프로세서(1710)에 의해 어플리케이션(application)이 실행될 수 있다. 예를 들어, 카메라(1730)를 통해 영상이 촬영되면, 어플리케이션 프로세서(1710)는 촬영된 영상을 제2 메모리(1770)에 저장하고, 디스플레이(1740)에 디스플레이 할 수 있다. 어플리케이션 프로세서(1710)는 전술된 도 2의 시스템 온 칩(200) 등일 수 있다. 촬영된 영상은 커뮤니케이션 프로세서(1720)의 제어에 따라 커뮤니케이션 RF(1750)을 통해 외부로 전송될 수 있다. 이때, 커뮤니케이션 프로세서(1720)는 영상을 전송하기 위해 임시적으로 영상을 제1 메모리(1760)에 저장할 수 있다. 커뮤니케이션 프로세서(1720)는 그 밖에, 통화, 데이터 송수신을 위한 통신을 제어할 수 있다.
도 18는 본 발명의 일 실시예에 따른 컴퓨팅 시스템(computing system)을 나타내는 도면이다. 도 18을 참조하면, 모바일 기기(mobile device), 데스크탑 컴퓨터(desktop computer) 또는 서버(server)와 같은 컴퓨팅 시스템(1800)에서 시스템 온 칩(1810), 메모리 장치(1820), 입출력 장치(1830) 및 디스플레이 장치(1840)을 더 포함할 수 있으며, 이들 구성요소들은 각각 버스(1850)에 전기적으로 연결될 수 있다. 도 18의 시스템 온 칩(1810)은 전술된 도 2의 시스템 온 칩(200) 등일 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 설정한 용어들이었으나, 이는 단지 실시예들을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 각 실시예에 의한 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
200: 시스템 온 칩
220: 버퍼 메모리
220_1: 제1 영역
240: 프로듀서
260: 컨슈머
280: 버퍼 할당부

Claims (10)

  1. 프로세서의 제어에 의해 수행되는 시스템 온 칩(system on chip)의 동작 방법에 있어서,
    상기 시스템 온 칩의 버퍼 메모리의 할당에 대한 요청을 분석하여, 압축 가부를 나타내는 제1 특성을 설정하는 단계;
    상기 버퍼 메모리의 할당에 대한 요청에 응답하여, 상기 버퍼 메모리의 제1 영역을 할당하는 단계; 및
    상기 압축 가부를 나타내는 제1 특성에 근거하여, 상기 제1 영역으로 제공되는 데이터에 대한 압축 여부를 달리하는 단계를 포함하고,
    상기 제1 특성을 설정하는 단계는,
    상기 제1 영역에 상기 데이터를 제공하는 IP 블록(Intellectual Property block)의 압축 능력 및 상기 제1 영역에 제공된 데이터를 사용하는 IP 블록의 압축 해제 능력 중 적어도 하나에 따라, 상기 제1 특성을 설정하는 단계를 포함하는 시스템 온 칩의 동작 방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 제1 특성을 설정하는 단계는,
    상기 요청에서 지시된, 상기 제1 영역에 제공된 데이터를 사용하는 IP 블록이, CPU인지를 확인하는 단계를 포함하는 시스템 온 칩의 동작 방법.
  4. 제1항에 있어서,
    상기 시스템 온 칩에 포함되는 IP 블록의 압축 능력 또는 압축 해제 능력에 대한 정보를 저장하는 단계를 더 포함하는 시스템 온 칩의 동작 방법.
  5. 제1항에 있어서,
    상기 제1 특성을 설정하는 단계는,
    상기 요청에 포함된 정보 중 상기 제1 영역으로 제공되는 데이터에 대한 정보에 따라, 상기 제1 특성을 설정하는 단계를 포함하는 시스템 온 칩의 동작 방법.
  6. 제1항에 있어서,
    상기 버퍼 메모리의 제1 영역을 할당하는 단계는,
    상기 제1 영역에 상기 제1 특성을 저장하는 영역을 포함하여 할당하는 시스템 온 칩의 동작 방법.
  7. 제1항에 있어서,
    상기 제1 영역에 제공되는 데이터에 대한 압축 여부에 나타내는 압축 정보를 저장하는 단계; 및
    상기 압축 정보에 근거하여, 상기 제1 영역에 제공된 데이터를 사용하는 IP 블록에서의 압축 해제의 수행 여부를 달리하는 단계를 더 포함하는 시스템 온 칩의 동작 방법.
  8. 프로세서의 제어에 의해 수행되는 시스템 온 칩(system on chip)의 동작 방법에 있어서,
    상기 시스템 온 칩의 버퍼 메모리의 할당에 대한 요청에 응답하여, 상기 버퍼 메모리의 제1 영역을 할당하는 단계;
    상기 제1 영역에 데이터를 제공하는 IP 블록(Intellectual Property block)의 압축 능력 및 상기 제1 영역에 제공된 데이터를 사용하는 IP 블록의 압축 해제 능력 중 적어도 하나에 근거하여, 압축 가부를 나타내는 제2 특성을 설정하는 단계; 및
    상기 압축 가부를 나타내는 제2 특성에 근거하여, 상기 제1 영역으로 제공되는 데이터에 대한 압축 여부를 달리하는 단계를 포함하는 시스템 온 칩의 동작 방법.
  9. 제1항에 있어서,
    상기 프로세서는 GPU이고,
    상기 버퍼 메모리는 프레임 버퍼이고,
    상기 버퍼 메모리에 로드 되는 데이터는 이미지 데이터인 시스템 온 칩의 동작 방법.
  10. 어플리케이션(application)의 실행을 위해, 할당된 버퍼 메모리(buffer memory)의 제1 영역으로 데이터(data)를 제공하는 제1 IP 블록(Intellectual Block) 및 상기 제1 영역에 저장된 데이터를 사용하는 제2 IP 블록을 포함하는 시스템 온 칩(system on chip)의 동작 방법에 있어서,
    상기 제1 IP 블록이, 압축 가능 여부를 나타내는 제1 플래그(flag)를 체크(check)하는 단계;
    상기 제1 플래그의 활성화 여부에 따라, 상기 제1 IP 블록이 압축 여부를 달리하는 상기 데이터를 상기 제1 영역으로 전송하는 단계;
    상기 제1 영역으로 전송된 데이터의 압축 여부에 따라 제2 플래그의 활성화를 달리하는 단계;
    상기 제2 플래그 활성화 여부에 따라, 상기 제2 IP 블록이 상기 제1 영역으로부터 독출된 데이터의 압축 해제의 수행 여부를 달리하는 단계; 및
    상기 제2 IP 블록의 압축 처리 동작 환경 및 동작 결과 중 적어도 하나에 근거해 추가 압축 해제 가능여부를 판단하여, 상기 제1 플래그의 활성화를 달리하는 단계를 포함하는 시스템 온 칩의 동작 방법.
KR1020150078662A 2015-06-03 2015-06-03 시스템 온 칩 및 시스템 온 칩의 동작 방법 KR102535825B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150078662A KR102535825B1 (ko) 2015-06-03 2015-06-03 시스템 온 칩 및 시스템 온 칩의 동작 방법
US15/134,726 US10249269B2 (en) 2015-06-03 2016-04-21 System on chip devices and operating methods thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150078662A KR102535825B1 (ko) 2015-06-03 2015-06-03 시스템 온 칩 및 시스템 온 칩의 동작 방법

Publications (2)

Publication Number Publication Date
KR20160142653A KR20160142653A (ko) 2016-12-13
KR102535825B1 true KR102535825B1 (ko) 2023-05-23

Family

ID=57451933

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150078662A KR102535825B1 (ko) 2015-06-03 2015-06-03 시스템 온 칩 및 시스템 온 칩의 동작 방법

Country Status (2)

Country Link
US (1) US10249269B2 (ko)
KR (1) KR102535825B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170017394A1 (en) * 2015-07-15 2017-01-19 Futurewei Technologies, Inc. SYSTEM AND METHOD FOR DATA WAREHOUSE AND FINE GRANULARITY SCHEDULING FOR SYSTEM ON CHIP (SoC)
WO2018119713A1 (zh) * 2016-12-27 2018-07-05 深圳前海达闼云端智能科技有限公司 用于多操作系统的显示方法、装置和电子设备
KR102434840B1 (ko) * 2017-08-28 2022-08-22 에스케이하이닉스 주식회사 데이터 저장 장치

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5512921A (en) 1994-06-22 1996-04-30 Microsoft Corporation Visual display system having low energy data storage subsystem with date compression capabilities, and method for operating same
JP3711573B2 (ja) 1994-09-30 2005-11-02 ソニー株式会社 画像符号化装置及び画像符号化方法
US6208689B1 (en) 1996-03-04 2001-03-27 Mitsubishi Denki Kabushiki Kaisha Method and apparatus for digital image decoding
JP4026098B2 (ja) 1998-09-24 2007-12-26 沖電気工業株式会社 表示コントローラ
JP2001186356A (ja) 1999-12-27 2001-07-06 Canon Inc 画像圧縮装置及び画像圧縮方法及びコンピュータ読み取り可能な記憶媒体
US7245304B2 (en) 2001-11-16 2007-07-17 Lockheed Martin Corporation System and method for managing compressed graphic image data
US7548657B2 (en) 2005-06-25 2009-06-16 General Electric Company Adaptive video compression of graphical user interfaces using application metadata
US9406149B2 (en) * 2009-10-07 2016-08-02 Nvidia Corporation Selecting and representing multiple compression methods
US8510518B2 (en) * 2010-06-22 2013-08-13 Advanced Micro Devices, Inc. Bandwidth adaptive memory compression
US8730328B2 (en) 2011-10-06 2014-05-20 Qualcomm Incorporated Frame buffer format detection
KR101862341B1 (ko) * 2012-01-09 2018-05-30 삼성전자주식회사 데이터 압축 기능을 갖는 데이터 저장 장치
JP5895671B2 (ja) 2012-03-30 2016-03-30 富士通株式会社 情報処理装置、画像送信方法及び画像送信プログラム
US9460527B2 (en) 2013-02-04 2016-10-04 Qualcomm Incorporated Pattern mode for frame buffer compression
US9177393B2 (en) 2013-02-04 2015-11-03 Qualcomm Incorporated Mixed mode for frame buffer compression
US9466090B2 (en) * 2013-06-20 2016-10-11 Intel Corporation Subset based compression and decompression of graphics data
KR102114388B1 (ko) * 2013-10-18 2020-06-05 삼성전자주식회사 전자 장치의 메모리 압축 방법 및 장치
US9606769B2 (en) * 2014-04-05 2017-03-28 Qualcomm Incorporated System and method for adaptive compression mode selection for buffers in a portable computing device
US9940733B2 (en) * 2014-06-26 2018-04-10 Intel Corporation Virtual memory supported compression control surfaces

Also Published As

Publication number Publication date
US20160358590A1 (en) 2016-12-08
US10249269B2 (en) 2019-04-02
KR20160142653A (ko) 2016-12-13

Similar Documents

Publication Publication Date Title
JP7191240B2 (ja) ビデオストリーム復号方法、装置、端末機器およびプログラム
CN110377257B (zh) 图层合成方法、装置、电子设备及存储介质
US10120705B2 (en) Method for implementing GPU virtualization and related apparatus, and system
KR101232428B1 (ko) 디스플레이 데이터 관리 장치, 방법, 제조물 및 시스템
CN105700821B (zh) 半导体装置及其压缩/解压缩方法
US20160104457A1 (en) Buffer Optimization
KR102535825B1 (ko) 시스템 온 칩 및 시스템 온 칩의 동작 방법
US9836248B2 (en) In-memory data compression complementary to host data compression
WO2022161227A1 (zh) 图像处理方法、装置、图像处理芯片和电子设备
US9013473B2 (en) Graphic processing unit and method for decompressing data
JP5903597B2 (ja) 画像圧縮装置、画像伸長装置および画像処理装置
CN111741246A (zh) 一种视频存储方法、装置、soc系统、介质
US20160142723A1 (en) Frame division into subframes
CN115278301A (zh) 视频处理方法、系统及设备
JP4804161B2 (ja) 画像処理装置、画像処理システム及び画像処理装置の制御方法
US12003743B2 (en) Video stream decoding method and apparatus, terminal device, and storage medium
KR102531613B1 (ko) 메모리 시스템에서 읽기 포트들을 줄이고 압축 해제를 가속하는 방법
CN112073726B (zh) 压缩方法及装置、计算机可读存储介质及电子设备
CN103813072A (zh) 信号处理电路、成像装置及程序
CN115794413B (zh) 一种内存处理方法及相关装置
JP7481167B2 (ja) 圧縮データの解凍システム及びメモリシステム並びにデータ解凍方法
CN115802057A (zh) 数据处理方法、可读介质和电子设备
CA3202614A1 (en) System and method for decimation of image data for multiviewer display
CN115865908A (zh) 远程桌面系统启动控制方法及相关设备
TWM628892U (zh) 雲桌面顯示系統

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant