KR102287402B1 - 버스 인터페이스 장치, 이를 포함하는 반도체 집적회로 장치 및 상기 장치의 동작 방법 - Google Patents

버스 인터페이스 장치, 이를 포함하는 반도체 집적회로 장치 및 상기 장치의 동작 방법 Download PDF

Info

Publication number
KR102287402B1
KR102287402B1 KR1020150040278A KR20150040278A KR102287402B1 KR 102287402 B1 KR102287402 B1 KR 102287402B1 KR 1020150040278 A KR1020150040278 A KR 1020150040278A KR 20150040278 A KR20150040278 A KR 20150040278A KR 102287402 B1 KR102287402 B1 KR 102287402B1
Authority
KR
South Korea
Prior art keywords
data
request
bus
memory
request signal
Prior art date
Application number
KR1020150040278A
Other languages
English (en)
Other versions
KR20160113916A (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 KR1020150040278A priority Critical patent/KR102287402B1/ko
Priority to US15/077,553 priority patent/US10133685B2/en
Publication of KR20160113916A publication Critical patent/KR20160113916A/ko
Application granted granted Critical
Publication of KR102287402B1 publication Critical patent/KR102287402B1/ko

Links

Images

Classifications

    • 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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4009Coupling between buses with data restructuring
    • 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/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/455Image or video data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Computer Hardware Design (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

버스 인터페이스 장치, 이를 포함하는 반도체 집적회로 장치 및 상기 장치의 동작 방법이 개시된다. 본 발명의 버스 인터페이스 장치는, 버스(bus)에 접속된 메모리 컨트롤러에 데이터를 요청하여 수신하기 위한 버스 인터페이스 장치로서, 제1 데이터를 요청하는 제1 데이터 요청 신호(DRQ)와 제2 데이터를 요청하는 제2 데이터 요청 신호(DRQ)를 각각 저장하는 요청 버퍼, 및 상기 제1 및 제2 데이터 요청 신호의 머지(merge) 여부를 판단하고, 판단 결과에 따라, 상기 메모리 컨트롤러로 제1 및 제2 데이터를 한번에 요청하기 위한 머지된 요청 신호를 상기 버스로 전송하는 요청 머지부를 포함한다.

Description

버스 인터페이스 장치, 이를 포함하는 반도체 집적회로 장치 및 상기 장치의 동작 방법{Bus Interface Device and Semiconductor Integrated Circuit including the same, and Method of operating the same}
본 발명의 개념에 따른 실시 예는 버스를 포함하는 버스 인터페이스 장치, 이를 포함하는 반도체 집적회로 장치에 관한 것으로, 특히, 버스와 효율적으로 인터페이스하기 위한 버스 인터페이스 장치, 이를 포함하는 반도체 집적회로 장치 및 상기 장치의 동작 방법에 관한 것이다.
디스플레이 장치(예컨대, LCD)의 해상도 증가 및 디스플레이 장치를 포함하는 전자 기기의 운용 시나리오가 복잡해짐에 따라, 디스플레이 장치 구동을 위한 데이터 전송량 또는 어플리케이션 프로세서(AP: application processor) 내의 데이터 전송량이 증가하는 추세이다. 이에 따라, 데이터 전송을 위한 대역폭(Bandwidth) 역시 증가한다.
본 발명이 이루고자 하는 기술적인 과제는 버스의 성능을 향상시킬 수 있는 버스 인터페이스 장치 및 이를 포함하는 반도체 집적회로 장치를 제공하는 것이다.
본 발명이 이루고자 하는 기술적인 과제는 버스의 성능을 향상시킬 수 있는 버스 인터페이스 장치의 동작 방법을 제공하는 것이다.
본 발명의 실시 예에 따르면, 버스(bus)에 연결된 메모리 컨트롤러에 데이터를 요청하여 수신하기 위한 버스 인터페이스 장치에 있어서, 제1 데이터를 요청하는 제1 데이터 요청 신호와 제2 데이터를 요청하는 제2 데이터 요청 신호를 각각 저장하는 요청 버퍼; 및 상기 제1 및 제2 데이터 요청 신호의 머지(merge) 여부를 판단하고, 판단 결과에 따라, 상기 메모리 컨트롤러로 제1 및 제2 데이터를 한번에 요청하기 위한 머지된 요청 신호를 상기 버스로 전송하는 요청 머지부를 포함하는 버스 인터페이스 장치가 제공된다.
실시예에 따라, 상기 제1 및 제2 데이터는 각각 그래픽 프로세싱 유닛(GPU)에 의해 압축된 데이터이고, 상기 버스 인터페이스 장치는 캐시; 및 상기 메모리 컨트롤러로부터 상기 제1 및 제2 데이터를 수신하여 상기 캐시에 저장하고, 상기 제1 및 제2 데이터의 압축을 해제하는 디코더 로직을 더 포함한다.
상기 요청 머지부는 상기 제1 및 제2 데이터가 연속적인 데이터인 경우 상기 제1 및 제2 데이터 요청 신호를 머지할 수 있다.
상기 요청 머지부는 상기 제1 데이터가 임계치보다 작은 경우, 상기 메모리 컨트롤러로 상기 제1 데이터를 요청하는 제1 메모리 요청 신호를 상기 버스로 즉시 전송하지 않고, 상기 제2 데이터 요청 신호를 기다릴 수 있다.
본 발명의 다른 실시 예에 따르면, 버스(bus); 상기 버스에 연결되고, 상기 메모리를 제어하는 메모리 컨트롤러; 및 상기 버스를 통하여 상기 메모리 컨트롤러에 데이터를 요청하는 버스 인터페이스 모듈을 포함하는 반도체 집적회로 장치가 제공된다.
상기 버스 인터페이스 모듈은 제1 데이터를 요청하는 제1 데이터 요청 신호와 제2 데이터를 요청하는 제2 데이터 요청 신호를 각각 저장하는 요청 버퍼; 및 상기 제1 및 제2 데이터 요청 신호의 머지(merge) 여부를 판단하고, 판단 결과에 따라, 상기 메모리 컨트롤러로 제1 및 제2 데이터를 한번에 요청하기 위한 머지된 요청 신호를 상기 버스로 전송하는 요청 머지부를 포함할 수 있다.
상기 제1 및 제2 데이터는 그래픽 프로세싱 유닛(GPU)에 의해 압축되어 상기 메모리에 저장된 데이터일 수 있다.
상기 요청 머지부는 상기 제1 및 제2 데이터가 연속적인 데이터인 경우 상기 제1 및 제2 데이터 요청 신호를 머지할 수 있다.
상기 요청 머지부(340)는 상기 제1 데이터가 임계치보다 작은 경우, 상기 메모리 컨트롤러로 상기 제1 데이터를 요청하는 제1 메모리 요청 신호를 상기 버스로 즉시 전송하지 않고, 상기 제2 데이터 요청 신호를 기다릴 수 있다.
상기 디코더 로직은 상기 제1 데이터 요청 신호(DRQ)와 상기 제2 데이터 요청 신호(DRQ)를 해석하고, 상기 제1 및 제2 데이터가 상기 캐시에 저장되어 있는지를 판단하며, 상기 캐시에 저장되어 있지 않으면, 상기 요청 머지부(340)에 요청할 수 있다.
본 발명의 또 다른 실시 예에 따르면, 버스를 통하여 메모리와 인터페이스하기 위한 버스 인터페이스 장치의 동작 방법이 제공된다.
상기 버스 인터페이스 장치의 동작 방법은 제1 데이터 요청 신호를 수신하는 단계; 상기 메모리로 상기 제1 데이터의 요청이 필요한지 판단하는 단계; 상기 메모리로 상기 제1 데이터의 요청이 필요하면, 요청 조건을 만족하는지 판단하는 단계; 상기 요청 조건을 만족하지 않으면, 제2 데이터 요청 신호를 기다리는 단계; 및 상기 요청 조건을 만족하면, 상기 메모리에 저장된 상기 제1 데이터를 요청하기 위한 제1 메모리 요청 신호를 상기 버스로 전송하는 단계를 포함한다.
상기 요청 조건을 만족하는지 판단하는 단계는 상기 제1 데이터의 크기가 임계치 이하인지를 판단하는 단계를 포함할 수 있다.
상기 방법은 상기 제2 데이터 요청 신호를 수신하는 단계; 상기 메모리로 상기 제2 데이터의 요청이 필요한지 판단하는 단계; 상기 메모리로 상기 제2 데이터의 요청이 필요하면, 상기 제1 데이터의 요청 및 상기 제2 데이터의 요청을 합치는(merge) 단계; 및 머지된 요청을 포함하는 제2 메모리 요청 신호를 상기 버스로 전송하는 단계를 더 포함할 수 있다.
상기 방법은 머지된 요청이 상기 요청 조건을 만족하는지 판단하는 단계; 및 상기 머지된 요청이 상기 요청 조건을 만족하지 않으면, 제3 데이터 요청 신호를 기다리는 단계를 더 포함할 수 있다.
본 발명의 실시 예에 따르면, 메모리로의 데이터 요청이 발생할 때마다, 버스로 메모리 요청 신호를 전송하는 것이 아니라, 둘 이상의 데이터 요청을 머지하여, 한번의 메모리 요청 신호(ARQ)로 전송함으로써 버스의 성능을 향상시킬 수 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 본 발명의 실시 예에 따른 집적회로 장치를 포함하는 전자 시스템의 블록도를 나타낸다.
도 2는 도 1에 도시된 SoC의 일 실시예를 나타내는 구성 블록도이다.
도 3은 도 1에 도시된 SoC의 다른 실시예를 나타내는 구성 블록도이다.
도 4는 본 발명의 일 실시예에 따른 SoC의 동작 방법을 나타내는 플로우차트이다.
도 5a는 GPU에 의해 압축된 데이터의 일 실시예를 나타내는 도면이다.
도 5b는 도 5a에 도시된 헤더 및 페이로드의 일 실시예를 나타내는 도면이다.
도 6은 본 발명의 일 실시예에 따른 버스 인터페이스 모듈의 구성 블록도이다.
도 7은 헤더 캐시 및 페이로드 캐시의 일 실시예를 설명하기 위한 도면이다.
도 8은 도 7에 도시된 어드레스 엔트리의 일 실시예를 나타내는 도면이다.
도 9는 본 발명의 일 실시예에 따른 버퍼 인터페이스 모듈의 동작 방법을 나타내는 플로우차트이다.
도10은 본 발명의 다른 실시예에 따른 버퍼 인터페이스 모듈의 동작 방법을 나타내는 플로우차트이다.
도 11은 본 발명의 다른 실시 예에 따른 전자 시스템의 구성 블록도이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1은 본 발명의 실시 예에 따른 반도체 집적회로 장치를 포함하는 전자 시스템의 블록도를 나타낸다. 반도체 집적회로 장치는 시스템 온 칩(SoC; System-on-chip)(10), 또는 어플리케이션 프로세서(AP)로 구현될 수 있다.
도 1을 참조하면, 전자 시스템(1)은 휴대용 전자 장치로 구현될 수 있다. 상기 휴대용 전자 장치는 랩탑 컴퓨터(laptop computer), 이동 전화기, 스마트 폰(smart phone), 태블릿(tablet) PC, PDA(personal digital assistant), EDA (enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camera), PMP(portable multimedia player), 모바일 인터넷 장치(mobile internet device(MID), 웨어러블 컴퓨터, 사물 인터넷 (internet of things(IoT)) 장치, 또는 만물 인터넷(internet of everything(IoE)) 장치로 구현될 수 있다.
전자 시스템(1)은 정지 영상 신호(또는 정지 영상) 또는 동영상 신호(또는 동영상)를 디스플레이 패널(25)에서 디스플레이할 수 있다.
디스플레이 장치(20)는 디스플레이 드라이버(21)와 디스플레이 패널(25)을 포함한다. 실시 예에 따라, SoC(10)와 디스플레이 드라이버(21)는 하나의 모듈(module), 하나의 시스템 온 칩(system on chip), 또는 하나의 패키지, 예컨대 멀티-칩 패키지(multi-chip package)로 구현될 수 있다. 다른 실시예에 따라, 디스플레이 드라이버(21)와 디스플레이 패널(25)는 하나의 모듈로 구현될 수 있다.
디스플레이 드라이버(21)는 SoC(10)에서 출력된 신호들에 따라 디스플레이 패널(25)의 동작을 제어한다. 예컨대, 디스플레이 드라이버(21)는 SoC(10)로부터 수신한 이미지 데이터를 선택된 인터페이스를 통하여 출력 영상 신호로서 디스플레이 패널(25)로 전송할 수 있다.
디스플레이 패널(25)은 디스플레이 드라이버(21)로부터 출력된 출력 영상 신호를 디스플레이 할 수 있다. 예컨대, 디스플레이 패널(25)은 LCD(liquid crystal display), LED(light emitting diode) 디스플레이, OLED(Organic LED) 디스플레이, 또는 AMOLED(active-matrix OLED) 디스플레이로 구현될 수 있다.
외부 메모리(30)는 SoC(10)에서 실행되는 프로그램 명령들(program instructions)을 저장한다. 또한, 외부 메모리(30)는 디스플레이 장치(20)에 스틸 이미지들(still images) 또는 무빙 이미지(moving image)를 디스플레이하기 위한 이미지 데이터를 저장할 수 있다. 상기 무빙 이미지는 짧은 시간에 나타나는(presented) 일련의 서로 다른 스틸 이미지들이다.
외부 메모리(30)는 휘발성 메모리 또는 불휘발성 메모리일 수 있다. 상기 휘발성 메모리는 DRAM(dynamic random access memory), SRAM(static random access memory), T-RAM(thyristor RAM), Z-RAM(zero capacitor RAM), 또는 TTRAM(Twin Transistor RAM)일 수 있다. 상기 불휘발성 메모리는 EEPROM(Electrically Erasable Programmable Read-Only Memory), 플래시(flash) 메모리, MRAM(Magnetic RAM), PRAM(Phase change RAM), 저항 메모리일 수 있다.
SoC(10)는 외부 메모리(30) 및/또는 디스플레이 장치(20)를 제어한다. 실시 예에 따라 SoC(10)는 집적 회로(integrated circuit(IC)), 프로세서(processor), 어플리케이션 프로세서(application processor), 멀티 미디어 프로세서(multimedia processor), 또는 집적된 멀티 미디어 프로세서(integrated multimedia processor)라고 호칭될 수 있다.
도 2는 도 1에 도시된 SoC의 일 실시예(10A)를 나타내는 구성 블록도이다. 도 1 및 도 2를 참조하면, SoC(10A)는 제1 및 제2 버스 인터페이스 모듈(101, 103), 제1 및 제2 기능 모듈(102, 104), 온칩 네트워크(180A), 메모리 컨트롤러(160A) 및 메모리(30A)를 포함할 수 있다.
제1 기능 모듈(102)은 메모리(30A)에 저장할 데이터를 생성하여, 제1 버스 인터페이스 모듈(101) 및 온칩 네트워크(180A)를 통하여 메모리(30A)에 저장할 수 있다. 제1 기능 모듈(102)은 후술하는 중앙처리장치(central processing unit(CPU), 도 3의 100), 이미지 처리 프로세서(ISP: image signal processor, 도 3의 130), 그래픽 프로세싱 유닛(graphics processing unit(GPU), 도 3의 150), 포스트 프로세서(도 3의 170) 등일 수 있으나, 이에 한정되는 것은 아니다.
제1 버스 인터페이스 모듈(101)은 제1 기능 모듈(102)로부터 출력되는 데이터를 압축하고, 압축 데이터를 메모리(30A)에 저장하기 위하여, 온칩 네트워크(180A)을 통하여 메모리 컨트롤러(160)로 전송할 수 있으며, 데이터 압축 모듈(data compressor)이라 칭해질 수 있다.
도 2의 실시예에서는, 제1 버스 인터페이스 모듈(101)은 제1 기능 모듈(102)과 온칩 네트워크(180A) 사이에 구현되나, 다른 실시예에서는, 제1 버스 인터페이스 모듈(101)은 제1 기능 모듈(102) 내에 구현될 수 있다.
제2 기능 모듈(104)은 메모리(30A)에 저장된 데이터를 입력받아 처리할 수 있다. 예를 들어, 제2 기능 모듈(104)은 제2 버스 인터페이스 모듈(103)를 통하여 온칩 네트워크(180A)로 메모리(30A)에 저장된 데이터를 요청하고, 온칩 네트워크(180A)를 통하여 요청한 데이터를 전송 받을 수 있다.
제2 기능 모듈(104)은 후술하는 이미지 처리 프로세서(도 3의 130), 디스플레이 컨트롤러(도 3의 140), 포스트 프로세서(도 3의 170), 등일 수 있으나, 이에 한정되는 것은 아니다.
제2 버스 인터페이스 모듈(103)은 제2 기능 모듈(104)이 요청하는 데이터를 메모리(30A)로부터 수신하기 위하여, 온칩 네트워크(180A)로 데이터 요청 신호를 보낼 수 있다. 또한, 제2 버스 인터페이스 모듈(103)은 데이터 요청 신호에 응답하여 메모리(30A)로부터 독출된 압축 데이터를 온칩 네트워크(180A)을 통해서 수신하고, 압축 데이터를 디코딩하여 압축을 해제할 수 있다.
제2 버스 인터페이스 모듈(103)은 디코딩된, 즉 압축 해제된 데이터를 제2 기능 모듈(104)로 제공할 수 있으며, 데이터 압축 해제 모듈(data decompressor)이라 칭해질 수 있다.
도 2의 실시예에서는, 제2 버스 인터페이스 모듈(103)은 제2 기능 모듈(104)과 온칩 네트워크(180A) 사이에 구현되나, 다른 실시예에서는, 제2 버스 인터페이스 모듈(103)은 제2 기능 모듈(104) 내에 구현될 수 있다.
메모리(30A)는 SoC(10A) 내부에 구비될 수도 있고, 외부에 구비될 수 있다.
도 3은 도 1에 도시된 SoC의 다른 실시예(10B)를 나타내는 구성 블록도이다. 도 1 및 도 3을 참조하면, SoC(10B)는 중앙처리장치(central processing unit(CPU); 100), ROM(read only memory; 110), RAM(random access memory; 120), 이미지 처리 프로세서(ISP: image signal processor)(130), 디스플레이 컨트롤러(140), 그래픽 프로세싱 유닛(graphics processing unit(GPU); 150), 메모리 컨트롤러(160), 포스트 프로세서(170), 및 시스템 버스(180B)를 포함할 수 있다. SoC(10B)는 도시된 구성 요소 이외에 다른 구성 요소들을 더 포함할 수 있다.
프로세서(processor)라고도 불릴 수 있는 CPU(100)는 외부 메모리(30)에 저장된 프로그램들 및/또는 데이터를 처리 또는 실행할 수 있다. 예컨대, CPU(100)는 클럭 신호 모듈(미도시)로부터 출력된 동작 클락 신호에 응답하여 상기 프로그램들 및/또는 상기 데이터를 처리 또는 실행할 수 있다.
CPU(100)는 멀티-코어 프로세서(multi-core processor)로 구현될 수 있다. 상기 멀티-코어 프로세서는 두 개 또는 그 이상의 독립적인 실질적인 프로세서들('코어들(cores)'이라고 불림)을 갖는 하나의 컴퓨팅 컴포넌트(computing component)이고, 상기 프로세서들 각각은 프로그램 명령들(program instructions)을 읽고 실행할 수 있다.
CPU(100)는 운영체제(OS; operating system)을 실행한다. 운영체제(OS)는 전자 시스템(1)의 자원(예를 들어, 메모리, 디스플레이 등)을 관리할 수 있다. 운영체제(OS)는 전자 시스템(1)에서 실행되는 어플리케이션들에 자원을 배분할 수 있다.
ROM(110), RAM(120), 및/또는 외부 메모리(30)에 저장된 프로그램들 및/또는 데이터는 필요에 따라 CPU(100)의 메모리(미도시)에 로드(load)될 수 있다.
ROM(110)은 영구적인 프로그램들 및/또는 데이터를 저장할 수 있다.
ROM(110)은 EPROM(erasable programmable read-only memory) 또는 EEPROM (electrically erasable programmable read-only memory)으로 구현될 수 있다.
RAM(120)은 프로그램들, 데이터, 또는 명령들(instructions)을 일시적으로 저장할 수 있다. 예컨대, 메모리(110 또는 30)에 저장된 프로그램들 및/또는 데이터는 CPU(100)의 제어에 따라 또는 ROM(110)에 저장된 부팅 코드(booting code)에 따라 RAM(120)에 일시적으로 저장될 수 있다. RAM(120)은 DRAM(dynamic RAM) 또는 SRAM(static RAM)으로 구현될 수 있다.
ISP(130)는 이미지 신호에 대한 각종 처리(processing)를 수행할 수 있다.
ISP(130)는 이미지 센서(미도시)로부터 입력된 이미지 데이터를 처리할 수 있다. 예컨대, ISP(130)는 이미지 센서로부터 입력된 이미지 데이터의 떨림 보정을 하고, 화이트 밸런스를 맞출 수 있다.
또한, ISP(130)는 명도·대비 등의 색 보정, 색조화, 양자화, 다른 색 공간으로의 색 변환 등을 수행할 수 있다. ISP(130)는 영상 처리한 이미지 데이터를 주기적으로 버스(180)를 통해 메모리(30)에 저장할 수 있다.
GPU(150)는 그래픽 처리와 관련된 프로그램 명령들을 읽고 수행할 수 있다. 예컨대, GPU(150)는 그래픽 관련 도형 처리 등을 고속으로 수행할 수 있다.
또한, GPU(150)는 메모리 컨트롤러(160)에 의해 외부 메모리(30)로부터 리드 (read)된 데이터를 디스플레이 디바이스(20)에 적합한 신호로 변환할 수 있다.
그래픽 처리를 위해, GPU(150) 외에도 그래픽 엔진(미도시) 또는 그래픽 액셀레이터(Accelerator) 등이 사용될 수 있다.
GPU(150)는 상술한 제1 버스 인터페이스 모듈(101)을 구비할 수 있다.
제1 버스 인터페이스 모듈(101)은 GPU(150)에 의해 생성되어 메모리(30)에 저장될 데이터를 압축하여 버스(180B)를 통하여 메모리 컨트롤러(160)로 전송할 수 있다.
포스트 프로세서(post processor, 170)는 이미지나 영상 신호를 출력 장치(예컨대, 디스플레이 장치(20))에 적합한 후처리(post processing)를 수행한다. 포스트 프로세서(170)는, 디스플레이 장치(20)로 출력하기에 적합하도록 이미지의 크기를 확대하거나 축소하거나 또는 이미지를 회전시키는 기능을 수행할 수도 있다.
포스트 프로세서(170)는 후처리한 이미지 데이터를 버스(180B)를 통해 메모리(30)에 저장하거나, 또는 온-더-플라이(on-the-fly) 방식으로 버스(180B)를 통해 직접 디스플레이 컨트롤러(140)로 출력할 수 있다.
메모리 컨트롤러(160)는 외부 메모리(30)와 인터페이스한다. 메모리 컨트롤러(160)는 외부 메모리(30)의 동작을 전반적으로 제어하며, 호스트와 외부 메모리(30) 사이의 데이터 교환을 제어한다. 예컨대, 메모리 컨트롤러(160)는 호스트의 요청에 따라 외부 메모리(30)에 데이터를 쓰거나 외부 메모리(30)로부터 데이터를 읽을 수 있다. 여기서, 호스트는 CPU(100), ISP(130), GPU(150), 또는 디스플레이 컨트롤러(140)와 같은 마스터(master) 장치일 수 있다.
실시예에 따라, 메모리 컨트롤러(160)는 디스플레이 컨트롤러(140)로부터의 이미지 데이터 요청에 따라, 외부 메모리(30)로부터 이미지 데이터를 독출하여 메모리 컨트롤러(160)로 제공할 수 있다.
디스플레이 컨트롤러(140)는 디스플레이 장치(20)의 동작을 제어한다.
디스플레이 컨트롤러(140)는 디스플레이 장치(20)를 통해 디스플레이할 이미지 데이터를 시스템 버스(180B)를 통하여 수신하고, 이를 디스플레이 장치(20)로 전송하기 위한 신호(예컨대, 인터페이스 규격에 따른 신호)로 변환하여, 상기 디스플레이 장치(20)로 전송한다.
실시예에 따라, 디스플레이 컨트롤러(140)는 메모리 컨트롤러(160)로 이미지 데이터를 요청하고, 요청한 이미지 데이터를 수신할 수 있다.
제2 버스 인터페이스 모듈(103)은 디스플레이 컨트롤러(140)의 데이터 요청에 따라, 시스템 버스(180B)를 통하여 메모리 컨트롤러(160)로 데이터를 요청하는 메모리 요청 신호를 전송한다. 실시예에 따라, 제2 버스 인터페이스 모듈(103)은 시스템 버스(180B)의 효율을 높이기 위하여, 디스플레이 컨트롤러(140)에서 발생되는 데이터 요청을 합쳐서(merge), 시스템 버스(180B)로 전송할 수 있다. 이에 대해서는 상세히 후술한다.
또한, 제2 버스 인터페이스 모듈(103)은 메모리(30)로부터 독출된 압축 데이터를 버스(180B)을 통해서 수신하고, 압축 데이터의 압축을 해제하여 디스플레이 컨트롤러(140)로 제공할 수 있다.
각 구성 요소(100, 110, 120, 130, 150, 160, 170, 및 200)는 시스템 버스(180B)를 통하여 서로 통신할 수 있다. 즉, 시스템 버스(180B)는 SoC(10B)의 각 구성요소를 연결하여 각 구성요소간 데이터 송수신의 통로 역할을 한다. 또한, 시스템 버스(180B)는 각 구성요소간 제어 신호의 전송 통로 역할을 할 수 있다.
실시예에 따라, 시스템 버스(180B)는 데이터를 전송하는 데이터 버스(미도시), 어드레스 신호를 전송하는 어드레스 버스(미도시) 및 제어 신호를 전송하는 제어 버스(미도시)를 포함할 수 있다.
실시예에 따라 시스템 버스(180B)는 소정의 구성요소들 간의 데이터 통신을 위한 소규모의 버스, 즉, 인터커넥터(interconnector)를 포함할 수 있다.
시스템 버스(180B)는 도 2에 도시된 온칩 네트워크(180A)에 해당되며, 도 4에 도시된 바와 같이, AMBA(Advanced Microcontroller Bus Architecture) AXI(Advanced eXtensible Interface) 버스로 구현될 수 있으나, 본 발명의 실시예가 이에 한정되는 것은 아니다.
도 4는 본 발명의 일 실시예에 따른 SoC의 동작 방법을 나타내는 플로우차트이다. 도 4의 동작 방법은 도 3의 SoC(10B)에 의해 수행될 수 있다.
도 3 및 도 4를 참조하면, GPU(150)는 데이터를 압축하고(S11), 압축된 데이터를 메모리 컨트롤러(160)를 통하여 메모리(30)로 전송한다(S12). 메모리(30)는 압축 데이터를 수신하여 저장한다(S13).
도 5a는 GPU(150)에 의해 압축된 데이터(210)의 일 실시예를 나타내는 도면이고, 도 5b는 도 5a에 도시된 헤더 및 페이로드의 일 실시예를 나타내는 도면이다.
도 5a 및 도 5b를 참조하면, 압축된 데이터(210)는 헤더(220) 및 페이로드(230) 단위로 저장될 수 있다. 예컨대, GPU(150)는 이미지 데이터를 특정 크기의 블록 단위로 압축하여 헤더(220) 및 페이로드(230)를 생성할 수 있다. 페이로드(230)는 압축된 데이터를 포함하고, 헤더(220)는 압축된 데이터를 지정하기 위한 어드레스 정보를 포함한다.
압축된 데이터(210)의 크기를 K(2이상의 정수) 바이트라고 하면, 헤더(220)의 크기는 L(1 이상의 정수) 바이트이고, 페이로드(230)의 크기는 'K-L'바이트일 수 있다. 헤더(220)의 크기(L) 및 페이로드(230)의 크기(K-L)는 고정된 값일 수 있다. 실시예에 따라, K는 1K바이트이고, L은 16바이트일 수 있으나, 이에 한정되는 것은 아니다.
도 5b의 실시예에 따르면, 헤더(220)는 총 16바이트(L=16)로 구성되며, 32비트의 바디 포인터(body_ptr), 각각이 6비트로 구성되는 제1 내지 제16 서브 블록 사이즈 정보(4x4_size[0]~ 4x4_size[15])를 포함할 수 있다. 그러나, 본 발명의 실시예가 이에 한정되는 것은 아니며, 헤더(220)의 사이즈, 각 필드의 사이즈 등이 변경될 수 있다.
바디 포인터(body_ptr)는 해당 페이로드(230)의 시작 어드레스를 나타낼 수 있다.
제1 내지 제16 서브 블록 사이즈 정보(4x4_size[0]~ 4x4_size[15])는 페이로드(230) 내에서 각 서브 블록을 지정하기 위한 정보를 포함할 수 있다.
실시예에 따라, 각 프레임 데이터는 복수의(예컨대, 8*8, 16*16 등) 블록 데이터로 나뉘어지고, 블록 데이터는 복수(예컨대, 4*4) 서브 블록 단위로 관리될 수 있다. 이 경우, 각 블록 데이터 내의 임의의 서브 블록 데이터를 지정하기 위한 서브 블록 사이즈 정보(4x4_size[0]~ 4x4_size[15])가 헤더(220)에 포함된다.
페이로드(230)의 크기(K-L)는 고정되어 있고, 데이터의 압축률은 프레임, 블록 또는 서브 블록에 따라 다를 수 있으므로, 압축된 데이터의 크기는 페이로드(230)의 크기보다 작거나 같다.
이에 따라, 도 5b에 도시된 바와 같이, 페이로드(230)의 일부(231)만 실제 압축된 데이터(혹은 유효 데이터)를 포함하고 있고, 나머지(232)는 비어 있거나(empty) 또는 유효하지 않은 데이터를 포함할 수 있다.
다시 도 4를 참조하면, 디스플레이 컨트롤러(140)는 디스플레이를 위해 필요한 제1 데이터를 요청하기 위하여, 버스 인터페이스 장치(103)로 제1 데이터 요청을 하고(S14), 이어서, 디스플레이를 위해 필요한 제2 데이터를 요청하기 위하여 버스 인터페이스 장치(103)로 제2 데이터 요청을 할 수 있다(S15).
버스 인터페이스 장치(103)는 디스플레이 컨트롤러(140)로부터 데이터 요청이 올 때마다 메모리(30)로 데이터를 요청하는 것이 아니다. 디스플레이 컨트롤러(140)로부터 둘 이상의 데이터 요청을 머지(merge)하여(S16), 메모리(30)로 한꺼번에 데이터 요청을 할 수 있다(S17). 이에 대해서는, 상세히 후술하기로 한다. 메모리(30)로부터 요청 데이터를 수신한다(S18), 메모리(30)에 저장된 데이터는 도 5a 및 도 5b를 참조하며 상술한 바와 같이, 압축된 데이터이다. 따라서, 버스 인터페이스 장치(103)는 수신한 데이터의 압축을 해제하여(S19), 압축 해제된 데이터를 디스플레이 컨트롤러(140)로 제공한다.
도 6은 본 발명의 일 실시예에 따른 버스 인터페이스 모듈의 구성 블록도이다. 이를 참조하면, 버스 인터페이스 모듈(103)은 요청 버퍼(310), 디코더 로직(320), 캐시(330), 요청 머지부(340), 및 응답 버퍼(350)를 포함할 수 있다.
요청 버퍼(310)는 디스플레이 컨트롤러(140)에서 출력되는 데이터 요청 신호(DRQ)를 저장한다. 일 실시예에서, 요청 버퍼(310)는 디스플레이 컨트롤러(140)로부터 출력된 순서대로 데이터 요청 신호(DRQ)를 저장하고, 저장된 순서대로 디코더 로직(320)으로 출력하는 선입선출(FIFO) 버퍼일 수 있으나, 이에 한정되는 것은 아니다. 데이터 요청 신호(DRQ)는 디스플레이 컨트롤러(140)가 디스플레이 장치(20)로 디스플레이하기 위해 필요한 프레임 데이터의 일부 또는 전부를 요청하기 위한 신호로서, 필요한 데이터에 대한 정보를 포함할 수 있다. 예컨대, 데이터 요청 신호(DRQ)는 디스플레이하기 위해 필요한 데이터의 시작 어드레스 정보(예컨대, 시작 픽셀을 지정하기 위한 정보) 및 끝 어드레스 정보(예컨대, 끝 픽셀을 지정하기 위한 정보)를 포함할 수 있으나, 이에 한정되는 것은 아니다.
디코더 로직(320)은 데이터 요청 신호(DRQ)를 해석하고, 메모리 컨트롤러(160)로 데이터 요청이 필요한지 판단한다.
이를 위하여, 디코더 로직(320)은 데이터 요청 신호(DRQ)에 상응하는 데이터(이하, '요청 데이터(requested data)'라 칭함)가 캐시(330)에 저장되어 있는지를 판단할 수 있다. 예컨대, 디코더 로직(320)은 요청 데이터가 캐시(330)에 저장되어 있는지 캐시(330)에 질의(CRQ)하여, 응답을 받을 수 있다.
캐시(330)는 메모리(30)로부터 전송받은 데이터를 일시적으로 저장하는 버퍼 메모리이다. 일 실시예에 따라, 캐시(330)는 어드레스 정보를 저장하는 헤더 캐시(header cache, 331) 및 데이터를 저장하는 페이로드 캐시(payload cache, 333)를 포함한다.
도 7은 헤더 캐시(331) 및 페이로드 캐시(333)의 일 실시예를 설명하기 위한 도면이다. 도 8은 도 7에 도시된 어드레스 엔트리(도면에 표기)의 일 실시예를 나타내는 도면이다.
도 7 및 도 8을 참조하면, 헤더 캐시(331)는 복수의 어드레스 엔트리들(A11, A14, A23)을 포함할 수 있다. 실시예에 따라, 헤더 캐시(331)는 메모리에 저장된 프레임 데이터의 어드레스 정보(예컨대, 도 5a의 헤더(220)의 정보)를 블록 데이터 단위로 저장할 수 있다.
도 5a 및 도 5b의 실시예에서 상술한 바와 같이, 실시예에 따라, 프레임 데이터는 m*m(m은 2이상의 정수) 픽셀 데이터 단위로 블록화되어, 메모리(30)에 저장될 수 있다. 이에 따라, 블록 데이터 단위로 어드레스 역시 관리될 수 있다.
예컨대, 제1 블록 데이터(T11)에 대한 어드레스 엔트리(A11), 제2 블록 데이터(T14)에 대한 어드레스 엔트리(A14), 및 제3 블록 데이터(T23)에 대한 어드레스 엔트리(A23) 등이 헤더 캐시(331)에 저장될 수 있다.
각 어드레스 엔트리(A11, A14, A23)는 해당 블록 데이터를 지정하는 어드레스, 즉, 블록 데이터 어드레스를 포함한다. 각 어드레스 엔트리는 둘 이상의 필드들을 포함할 수 있다.
도 8의 실시예에서는, 각 어드레스 엔트리는 총 16바이트로 구성되며, 32비트의 바디 포인터(body_ptr), 각각이 6비트로 구성되는 제1 내지 제16 서브 블록 사이즈 정보(4x4_size[0]~ 4x4_size[15])를 포함할 수 있다. 그러나, 본 발명의 실시예가 이에 한정되는 것은 아니며, 어드레스 엔트리의 사이즈, 각 필드의 사이즈 등이 변경될 수 있다.
바디 포인터(body_ptr)는 해당 블록 데이터의 시작 어드레스를 나타낼 수 있다.
제1 내지 제16 서브 블록 사이즈 정보(4x4_size[0]~ 4x4_size[15])는 해당 블록 데이터 내에서 각 서브 블록을 지정하기 위한 정보를 포함할 수 있다.
예컨대, 16*16 블록 데이터는 16개의 4*4 서브 블록 단위로 관리될 수 있다. 이 경우, 각 블록 데이터 내의 임의의 서브 블록 데이터를 지정하기 위한 서브 블록 사이즈 정보(4x4_size[0]~ 4x4_size[15])가 어드레스 엔트리에 포함된다.
실시예에 따라, 디코더 로직(320)은 먼저, 요청 데이터의 어드레스가 상기 헤더 캐시(331)에 저장되어 있는지를 판단할 수 있다. 만약, 요청 데이터의 어드레스가 헤더 캐시(331)에 저장되어 있다면(이를 '헤더 캐시 히트(header cache hit)'라 함), 헤더 캐시(331)의 헤더 데이터, 즉 어드레스 엔트리를 이용하여, 요청 데이터가 페이로드 캐시(333)에 저장되어 있는지 판단한다.
한편, 요청 데이터의 어드레스가 헤더 캐시(331)에 저장되어 있지 않다면(이를'헤더 캐시 미스(header cache miss)'라 함), 메모리 컨트롤러(160)로 요청할 수 있다.
각 어드레스 엔트리에 해당하는 데이터는 페이로드 캐시(333)에 있을 수도 있고, 없을 수도 있다. 어드레스 엔트리에 해당하는 데이터가 페이로드 캐시(333)에 있는 경우, 이를 페이로드 캐시 히트(payload cache hit)라 하고, 어드레스 엔트리에 해당하는 데이터가 페이로드 캐시(333)에 없는 경우, 페이로드 캐시 미스(payload cache miss)라 한다.
페이로드 캐시 히트인 경우, 디코더 로직(320)은 페이로드 캐시(333)에서 요청 데이터를 독출하고, 독출한 데이터(CRP)를 디코딩하여 압축을 해제한다.
디코더 로직(320)은 압축 해제된 데이터(DRP)를 응답 버퍼(350)에 저장한다.
응답 버퍼(350)는 디스플레이 컨트롤러(140)가 요청한 데이터, 즉, 데이터 요청 신호(DRQ)에 대한 응답 데이터(DRP)를 저장하는 버퍼(350)로서, 응답 데이터(DRP)는 응답 버퍼(350)를 통하여 디스플레이 컨트롤러(140)로 제공된다.
페이로드 캐시 미스인 경우, 메모리 컨트롤러(160)로 데이터를 요청해야 하므로, 디코더 로직(320)은 요청 머지부(340)로 데이터 요청 신호(MRQ)를 보낸다. 데이터 요청 신호(MRQ)는 요청 데이터의 어드레스 정보 및 데이터 크기 등을 포함할 수 있다.
요청 머지부(340)는 데이터 요청 신호(MRQ)가 요청 조건을 만족하는지 판단한다. 요청 조건의 만족 여부는 요청 데이터의 크기 및/또는 어드레스를 이용하여 판단될 수 있다.
일 실시예에 따라. 요청 머지부(340)는 요청 데이터의 크기가 미리 설정된 임계치 미만인지를 판단하여, 요청 조건의 만족 여부를 판단할 수 있다.
판단 결과, 요청 조건을 만족하면, 요청 머지부(340)는 메모리(30)에 저장되어 있는 데이터를 요청하기 위한 메모리 요청 신호(ARQ)를 버스(180B)로 전송한다. 상기 메모리 요청 신호(ARQ)는 버스(180B)를 통해 메모리 컨트롤러(160)로 전달된다.
메모리 요청 신호(ARQ)는 버스 인터페이스 모듈(103)이 메모리(30)에 저장되어 있는 데이터(예컨대, GPU(150에 의해 압축되어 저장된 압축 데이터)를 요청하기 위한 신호로서, 요청 데이터에 대한 정보를 포함할 수 있다. 실시예에 따라, 메모리 요청 신호(ARQ)는 요청 데이터의 어드레스 정보, 데이터 크기 등의 버스(108B)와 호환되는 정보 뿐만 아니라 제어 정보 및 데이터 요청에 관련된 추가 정보등을 포함할 수 있다. 데이터 크기 정보는 버스트 길이(burst length) 정보를 포함할 수 있다.
예컨대, 버스트 사이즈(하나의 버스트 데이터의 비트수)는 실시예에 따라 32비트, 64 비트 또는 128 비트 등으로 정해질 수 있다.
버스트 길이는 한 번의 메모리 요청 신호(ARQ)로 몇 개의 버스트 데이터를 요청할지를 지정하기 위한 정보로서, 1 이상의 자연수 값을 가질 수 있다. 예컨대, 버스트 사이즈가 128비트이고, 메모리 요청 신호(ARQ) 내의 버스트 길이가 '3'으로 설정된 경우, 버스 인터페이스 모듈(103)은 하나의 메모리 요청 신호(ARQ)로 3개의 버스트 데이터(128*3=384비트)를 메모리(30)로부터 독출할 수 있다. 메모리 컨트롤러(160)는 메모리 요청 신호(ARQ)에 응답하여 메모리(130)로부터 해당 데이터를 독출하여, 버스(180B)를 통하여 버스 인터페이스 모듈(101)로 전송한다.
메모리(130)로부터 독출된 데이터는 버스 인터페이스 모듈(103)의 캐시(330)에 저장된다.
요청 머지부(340)의 판단 결과, 요청 조건을 만족하지 않으면, 메모리 요청 신호(ARQ)를 버스(180B)로 즉시 전송하지 않고, 다음 데이터 요청 신호를 대기한다. 예컨대, 요청 머지부(340)는 첫 번째 데이터 요청 신호(편의상, 제1 데이터 요청 신호라 함)가 요청하는 데이터의 크기가 임계치 미만인 경우, 다음 데이터 요청 신호(설명의 편의상 제2 데이터 요청 신호)를 기다리고, 제1 데이터 요청 신호와 제2 데이터의 요청을 합쳐서(merge), 한 번의 메모리 요청 신호(ARQ)로 출력할 수 있다.
임계치는 미리 정해진 데이터 크기일 수 있다. 예컨대, 임계치는 특정 내부 버퍼의 사이즈일 수도 있고, 상기 메모리 컨트롤러(160)에 한번에 요청할 수 있는 최대 데이터 크기일 수 있다. 또한 버스에서 지원하는 최대 데이터 크기일 수 있다. 실시예에 따라, 임계치는 상술한 버스트 길이로 설정될 수 있다.
임계치 버스트 길이는 4, 8, 16 등으로 설정될 수 있다.실시예에 따라, 요청 머지부(340)는 요청 데이터의 크기가 임계치에 도달해야 비로소, 버스(180B)로 메모리 요청 신호를 전송할 수 있다.
예컨대, 임계치 버스트 길이가 '4'로 설정되면, 요청 머지부(340)는 메모리(30)로 요청하고자 하는 데이터의 버스트 길이가 '4'에 도달하면, 버스(180B)로 메모리 요청 신호(ARQ)를 전송할 수 있다. 따라서, 요청 머지부(340)는 메모리 컨트롤러(160)로의 데이터 요청이 필요할 때마다, 버스(180B)로 메모리 요청 신호(ARQ)를 전송하는 것이 아니라, 설정된 임계치 버스트 길이 이상이 되면, 메모리 요청 신호(ARQ)를 전송함으로써, 버스(180B)를 효율적으로 사용할 수 있다.
실시예에 따라, 요청 머지부(340)는 제1 요청 데이터의 어드레스와 제2 요청 데이터의 어드레스가 선형적으로 증가할 때만, 제1 데이터 요청 신호와 제2 데이터의 요청을 머지하고, 그렇지 않으면, 제1 데이터 요청 신호에 대한 메모리 요청 신호(ARQ)와 제2 데이터 요청 신호에 대한 메모리 요청 신호(ARQ)를 별개로 버스(180B)로 전송할 수 있다. 제1 요청 데이터의 어드레스와 제2 요청 데이터의 어드레스가 선형적으로 증가한다는 것은 제2 요청 데이터가 제1 요청 데이터에 연속적인 데이터라는 것을 의미할 수 있다.
실시예에 따라, 대기 횟수에 제한이 있을 수 있다. 예를 들어, 대기 횟수가 N(1이상의 정수) 번을 넘지 않도록 설정되면, 요청 머지부(340)는 N번 까지만 데이터 요청 신호를 대기할 수 있다.
상술한 바와 같이, 본 발명의 실시예에 따른 버스 인터페이스 모듈(103)은 데이터 요청이 발생할 때마다, 버스(180B)로 메모리 요청 신호(ARQ)를 전송하는 것이 아니라, 요청 조건의 만족 여부에 따라, 둘 이상의 데이터 요청을 머지하여, 한번의 메모리 요청 신호(ARQ)로 전송함으로써 버스 효율을 높일 수 있다. 즉, 작은 크기의 요청 데이터를 여러 번 메모리 컨트롤러(160)로 요청함으로써 발생할 수 있는 메모리 억세스의 비효율성 및 버스 전송의 비효율성을 개선할 수 있다.
메모리 컨트롤러(160)는 메모리 요청 신호(ARQ)에 응답하여 메모리(130)로부터 해당 데이터(ARP)를 독출하여, 버스(180B)를 통하여 버스 인터페이스 모듈(103)로 전송한다.
메모리(130)로부터 독출된 데이터(ARP)는 버스 인터페이스 모듈(103)의 페이로드 캐시(333)에 저장된다.
디코더 로직(320)은 페이로드 캐시(333)에서 저장된 데이터를 독출하고, 독출한 데이터(CRP)를 디코딩하여 압축을 해제한다.
디코더 로직(320)은 압축 해제된 데이터(DRP)를 응답 버퍼(350)에 저장한다.
도 9는 본 발명의 일 실시예에 따른 버퍼 인터페이스 모듈의 동작 방법을 나타내는 플로우차트이다. 도 9의 버퍼 인터페이스 모듈의 동작 방법은 도 6에 도시된 버퍼 인터페이스 모듈(103)에 의해 수행될 수 있다.
도 6 및 도 9를 참조하면, 버퍼 인터페이스 모듈(103)이 디스플레이 컨트롤러(140)로부터 제1 데이터 요청 신호(DRQ)를 수신하면(S110), 메모리 컨트롤러(160)로 제1 데이터의 요청이 필요한지 판단한다(S120).
메모리 컨트롤러(160)로 제1 데이터의 요청이 필요한지 판단하는 단계(S120)는 상술한 바와 같이, 제1 데이터가 캐시(330)에 저장되어 있는지를 확인함으로써 판단할 수 있다. 예컨대, 제1 데이터에 대한 어드레스 정보가 헤더 캐시(331)에 저장되어 있고, 제1 데이터가 페이로드 캐시(333)에 저장되어 있으면, 메모리 컨트롤러(160)로 제1 데이터의 요청이 필요하지 않은 것으로 판단될 수 있다.
메모리 컨트롤러(160)로 제1 데이터의 요청이 필요하면, 요청 조건을 만족하는지 판단한다(S130). 실시예에 따라, 요청 조건의 만족 여부는 제1 데이터의 크기를 임계치와 비교함으로써 이루어질 수 있다.
상술한 바와 같이, 임계치는 버스트 길이로 설정될 수 있다.
예컨대, 임계치 버스트 길이는 4, 8, 16 등으로 설정될 수 있다.
임계치 버스트 길이가 '4'로 설정된 경우를 가정하면, 요청 머지부(340)는 제1 데이터의 크기(예컨대, 제1 데이터의 버스트 길이)를 임계치 버스트 길이인 '4'와 비교하여, '4'이상인지를 판단하고, '4' 이상인 경우에는 요청 조건을 만족하는 것으로 판단하여, 버스(180B)로 메모리 요청 신호(ARQ)를 전송할 수 있다. 즉, 요청 조건을 만족하면, 메모리에 저장된 상기 제1 데이터를 요청하기 위한 제1 메모리 요청 신호(ARQ)를 버스(180B)로 전송한다(S140).
요청 조건을 만족하지 않으면, 다음 데이터 요청 신호인 제2 데이터 요청 신호를 기다린다. 예컨대, 제1 데이터의 버스트 길이가 '4' 미만인 경우, 다음 데이터 요청 신호인 제2 데이터 요청 신호를 기다린다. 제2 데이터 요청 신호를 수신하면(S110), 메모리 컨트롤러(160)로 제2 데이터의 요청이 필요한지 판단하고(S120), 제2 데이터의 요청이 필요하면(S120에서 Yes), 제1 데이터의 요청 및 제2 데이터의 요청을 머지하고, 머지된 요청이 요청 조건을 만족하는지를 다시 판단할 수 있다(S130).예컨대, 임계치 버스트 길이가 '4'로 설정된 경우, 요청 머지부(340)는 제1 데이터와 제2 데이터를 합한 크기(예컨대, 제1 데이터의 버스트 길이와 제2 데이터의 버스트 길이를 합한 값)를 임계치 버스트 길이인 '4'와 비교하여 '4' 이상인지를 판단하고, '4' 이상인 경우에는 요청 조건을 만족하는 것으로 판단하여, 버스(180B)로 제1 데이터와 제2 데이터를 한꺼번에 요청하는 메모리 요청 신호(ARQ)를 전송할 수 있다.
실시예에 따라, 제1 데이터와 제2 데이터가 연속적인 데이터일 경우에만 제1 데이터의 요청 및 제2 데이터의 요청이 머지될 수 있다. 예컨대, 제1 데이터의 어드레스와 제2 데이터의 어드레스가 연속적인 경우에만, 제1 데이터의 요청 및 제2 데이터의 요청을 머지할 수 있다.
머지된 요청이 요청 조건을 만족하지 않으면(S130에서 NO), 다음 데이터 요청 신호인 제3 데이터 요청 신호를 기다릴 수 있다.
실시예에 따라, 다음 데이터 요청 신호를 기다릴 수 있는 최대 횟수, 즉 최대 대기 횟수는 미리 정해질 수 있다.
머지된 요청을 포함하는 메모리 요청 신호(ARQ)를 버스(180B)로 전송하여(S140), 메모리 컨트롤러(160)로부터 요청한 데이터를 수신하여 캐시에 저장한다(S150, S160)
다음으로, 캐시에 저장된 데이터의 압축을 해제하여 메모리 컨트롤러로 압축 해제된 데이터를 제공한다(S170).
도 11은 본 발명의 다른 실시예에 따른 버퍼 인터페이스 모듈의 동작 방법을 나타내는 플로우차트이다. 도 11의 버퍼 인터페이스 모듈의 동작 방법은 도 6, 도 7 및 도 8에 도시된 버퍼 인터페이스 모듈(103)에 의해 수행될 수 있다.
도 6, 도 7, 도 8 및 도 11을 참조하면, 버퍼 인터페이스 모듈(103)이 메모리 컨트롤러(140)로부터 임의의 타일 데이터(Tile Data)를 요청하는 요청 신호(DRQ)를 수신할 수 있다(S202).
타일 데이터는 도 7에 도시된 블록 데이터 중 하나에 해당할 수 있다.
버퍼 인터페이스 모듈(103)은 헤더 캐시(331)에 요청된 타일 데이터에 해당하는 헤더 데이터를 요청하여(S204), 해당 헤더 데이터가 헤더 캐시에 저장되어 있는지, 즉 헤더 데이터 히트인지를 판단한다(S206). 헤더 데이터는 상술한 바와 같이, 타일 데이터에 해당하는 어드레스 정보를 포함할 수 있다.
헤더 데이터 히트이면(S206에서 YES), 헤더 캐시(331)로부터 헤더 데이터를 추출한다(S208).
헤더 캐시 히트가 아니면(S206에서 NO), 즉, 헤더 데이터 미스이면 메모리로 헤더 데이터를 요청하고(S210), 메모리로부터 요청한 헤더 데이터를 수신하여 헤더 캐시(331)에 저장한 후(S212), 헤더 캐시(331)로부터 헤더 데이터를 추출한다(S208).
헤더 데이터를 디코딩한 후(S214), 페이로드 캐시(333)에 페이로드 데이터를 요청하여(S216), 페이로드 캐시 히트인지를 판단한다(S218).
버퍼 인터페이스 모듈(103)은 헤더 데이터에 해당하는 페이로드 데이터가 페이로드 캐시(333)에 저장되어 있는지를 확인함으로써, 페이로드 캐시 히트인지를 판단할 수 있다(S218).
페이로드 캐시 히트이면(S218에서 YES), 페이로드 캐시(333)로부터 페이로드 데이터를 추출한다(S220).
페이로드 캐시 히트가 아니면(S218에서 NO), 즉, 페이로드 캐시 미스이면 메모리로 페이로드 데이터를 요청한다(S222). S222 단계에서, 버퍼 인터페이스 모듈(103)은 복수(2이상)의 페이로드 데이터를 한번에 요청하기 위하여 머지된 요청 신호를 버스(180B)로 전송할 수 있다.
버퍼 인터페이스 모듈(103)은 메모리로부터 요청한 페이로드 데이터를 수신하여 페이로드 캐시(333)에 저장한 후(S224), 페이로드 캐시(333)로부터 페이로드 데이터를 추출한다(S220).
버퍼 인터페이스 모듈(103)은 페이로드 데이터를 디코딩하여 디스플레이 컨트롤러로 제공할 수 있다(S226).
상술한 바와 같이, 본 발명의 실시예에 따른 버스 인터페이스 장치의 동작 방법은 메모리로의 데이터 요청이 발생할 때마다, 버스(180B)로 메모리 요청 신호(ARQ)를 전송하는 것이 아니라, 둘 이상의 데이터 요청을 머지하여, 한번의 메모리 요청 신호(ARQ)로 전송함으로써 버스 효율을 높일 수 있다.
도 11은 본 발명의 다른 실시 예에 따른 전자 시스템의 구성 블록도이다.
이를 참조하면, 전자 시스템(400)은 PC(personal computer) 또는 데이터 서버, 랩탑(laptop) 컴퓨터 또는 휴대용 장치로 구현될 수 있다. 휴대용 장치는 이동 전화기, 스마트 폰(smart phone), 태블릿 (tablet) PC, PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라 (digital still camera), 디지털 비디오 카메라 (digital video camera), PMP(portable multimedia player), PDN(personal navigation device 또는 portable navigation device), 휴대용 게임 콘솔(handheld game console), 또는 e-북(e-book)으로 구현될 수 있다.
전자 시스템(400)은 SoC(10), 파워 소스(410), 저장 장치(420), 메모리(430), 입출력 포트들(440), 확장 카드(450), 네트워크 장치(460), 및 디스플레이(470)를 포함한다. 실시 예에 따라. 전자 시스템(400)은 카메라 모듈(480)을 더 포함할 수 있다.
SoC(10)는 구성 요소들(elements; 410~480) 중에서 적어도 하나의 동작을 제어할 수 있다. SoC(10)는 도 1 및 도 2에 도시된 SoC(10)에 해당한다.
파워 소스(410)는 구성 요소들(405 및 420~480) 중에서 적어도 하나로 동작 전압을 공급할 수 있다.
저장 장치(420)는 하드디스크 드라이브(hard disk drive) 또는 SSD(solid state drive)로 구현될 수 있다.
메모리(430)는 휘발성 메모리 또는 불휘발성 메모리로 구현될 수 있다. 실시 예에 따라, 메모리(430)에 대한 데이터 액세스 동작, 예컨대, 리드 동작, 라이트 동작(또는 프로그램 동작), 또는 이레이즈 동작을 제어할 수 있는 메모리 컨트롤러는 SoC(10)에 집적 또는 내장될 수 있다. 다른 실시 예에 따라, 상기 메모리 컨트롤러는 SoC(10)와 메모리(430) 사이에 구현될 수 있다.
입출력 포트들(440)은 전자 시스템(400)으로 데이터를 전송하거나 또는 전자 시스템(400)으로부터 출력된 데이터를 외부 장치로 전송할 수 있는 포트들을 의미한다. 예컨대, 입출력 포트들(440)은 컴퓨터 마우스와 같은 포인팅 장치(pointing device)를 접속하기 위한 포트, 프린터를 접속하기 위한 포트, 또는 USB 드라이브를 접속하기 위한 포트일 수 있다.
확장 카드(450)는 SD(secure digital) 카드 또는 MMC(multimedia card)로 구현될 수 있다. 실시 예에 따라, 확장 카드(450)는 SIM(Subscriber Identification Module) 카드 또는 USIM(Universal Subscriber Identity Module) 카드일 수 있다.
네트워크 장치(460)는 전자 시스템(400)을 유선 네트워크 또는 무선 네트워크에 접속시킬 수 있는 장치를 의미한다.
디스플레이(470)는 저장 장치(420), 메모리(430), 입출력 포트들(440), 확장 카드(450), 또는 네트워크 장치(460)로부터 출력된 데이터를 디스플레이할 수 있다.
카메라 모듈(480)은 광학 이미지를 전기적인 이미지로 변환할 수 있는 모듈을 의미한다. 따라서, 카메라 모듈(480)로부터 출력된 전기적인 이미지는 저장 장치(420), 메모리(430), 또는 확장 카드(450)에 저장될 수 있다. 또한, 카메라 모듈 (480)로부터 출력된 전기적인 이미지는 디스플레이(420)를 통하여 디스플레이될 수 있다.
본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다.
컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장장치 등이 있다.
또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술분야의 프로그래머들에 의해 용이하게 추론될 수 있다.
상기 본 발명의 내용은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
1, 400: 전자 시스템
10, 10A, 10B: SoC
20: 디스플레이 장치
21: 디스플레이 드라이버
25: 디스플레이 패널
30, 30A: 외부 메모리
101, 103: 버스 인터페이스 모듈
102, 104: 기능 모듈
100: 중앙처리장치(central processing unit(CPU)
110: ROM(read only memory; 110)
120: RAM(random access memory)
130: 이미지 처리 프로세서(ISP: image signal processor)
140: 디스플레이 컨트롤러
150: 그래픽 프로세싱 유닛(graphics processing unit(GPU)
160, 160A: 메모리 컨트롤러
170: 포스트 프로세서
180A: 온칩 네트워크
180B: 시스템 버스
310: 요청 버퍼
320: 디코더 로직
330: 캐시(Cache)
340: 요청 머지부
350: 응답 버퍼

Claims (10)

  1. 버스(bus)에 연결된 메모리 컨트롤러에 데이터를 요청하여 수신하기 위한 버스 인터페이스 장치에 있어서,
    제1 데이터를 요청하는 제1 데이터 요청 신호와 제2 데이터를 요청하는 제2 데이터 요청 신호를 각각 저장하는 요청 버퍼; 및
    상기 제1 및 제2 데이터 요청 신호의 머지 여부를 판단하고, 판단 결과에 따라, 상기 메모리 컨트롤러로 제1 및 제2 데이터를 한번에 요청하기 위한 머지된 요청 신호를 상기 버스로 전송하는 요청 머지부를 포함하되,
    상기 요청 머지부는 상기 버스에서 지원하는 최대 데이터 크기와 상기 제1 데이터의 크기를 비교함으로써 상기 제1 및 제2 데이터 요청 신호의 머지 여부를 판단하고,
    상기 제1 데이터의 크기가 상기 버스에서 지원하는 최대 데이터 크기 미만인 경우 상기 요청 머지부는 상기 제1 및 제2 데이터 요청 신호를 머지하고,
    상기 제1 및 제2 데이터는, 상기 제1 및 제2 데이터 요청 신호의 머지 이전에, 압축되는 버스 인터페이스 장치.
  2. 제1항에 있어서,
    상기 버스 인터페이스 장치는
    캐시; 및
    상기 메모리 컨트롤러로부터 상기 제1 및 제2 데이터를 수신하여 상기 캐시에 저장하고, 상기 제1 및 제2 데이터의 압축을 해제하는 디코더 로직을 더 포함하는 버스 인터페이스 장치.
  3. 제2항에 있어서, 상기 요청 머지부는
    상기 제1 및 제2 데이터가 연속적인 데이터인 경우 상기 제1 및 제2 데이터 요청 신호를 머지하는 버스 인터페이스 장치.
  4. 제2항에 있어서, 상기 요청 머지부는
    상기 제1 데이터가 임계치보다 작은 경우, 상기 메모리 컨트롤러로 상기 제1 데이터를 요청하는 제1 메모리 요청 신호를 상기 버스로 즉시 전송하지 않고, 상기 제2 데이터 요청 신호를 기다리는 버스 인터페이스 장치.
  5. 제2항에 있어서, 상기 디코더 로직은
    상기 제1 데이터 요청 신호(DRQ)와 상기 제2 데이터 요청 신호(DRQ)를 해석하고, 상기 제1 및 제2 데이터가 상기 캐시에 저장되어 있는지를 판단하며, 상기 캐시에 저장되어 있지 않으면, 상기 요청 머지부에 요청하는 버스 인터페이스 장치.
  6. 제2항에 있어서, 상기 캐시는
    상기 제1 및 제2 데이터의 어드레스 정보를 저장하는 헤더 캐시(header cache); 및
    상기 제1 및 제2 데이터를 저장하는 페이로드 캐시(payload cache)를 포함하는 버스 인터페이스 장치.
  7. 버스(bus);
    상기 버스에 접속되고, 메모리를 제어하는 메모리 컨트롤러; 및
    상기 버스를 통하여 상기 메모리 컨트롤러에 데이터를 요청하는 버스 인터페이스 모듈을 포함하며,
    상기 버스 인터페이스 모듈은
    제1 데이터를 요청하는 제1 데이터 요청 신호와 제2 데이터를 요청하는 제2 데이터 요청 신호를 각각 저장하는 요청 버퍼; 및
    상기 제1 및 제2 데이터 요청 신호의 머지(merge) 여부를 판단하고, 판단 결과에 따라, 상기 메모리 컨트롤러로 제1 및 제2 데이터를 한번에 요청하기 위한 머지된 요청 신호를 상기 버스로 전송하는 요청 머지부를 포함하며,
    상기 제1 및 제2 데이터는 그래픽 프로세싱 유닛(GPU)에 의해 압축되어 상기 메모리에 저장된 데이터이고,
    상기 요청 머지부는, 상기 머지된 요청 신호의 데이터 버스트 길이가 미리 설정된 임계치 버스트 길이 이상인 경우에, 상기 머지된 요청 신호를 상기 버스로 전송하는 반도체 집적회로 장치.
  8. 제7항에 있어서,
    상기 버스 인터페이스 모듈은
    캐시; 및
    상기 메모리 컨트롤러로부터 상기 제1 및 제2 데이터를 수신하여 상기 캐시에 저장하고, 상기 제1 및 제2 데이터의 압축을 해제하는 디코더 로직을 더 포함하는 반도체 집적회로 장치.
  9. 제8항에 있어서, 상기 요청 머지부는
    상기 제1 및 제2 데이터가 연속적인 데이터인 경우 상기 제1 및 제2 데이터 요청 신호를 머지하는 반도체 집적회로 장치.
  10. 제8항에 있어서, 상기 요청 머지부는
    상기 제1 데이터가 임계치보다 작은 경우, 상기 메모리 컨트롤러로 상기 제1 데이터를 요청하는 제1 메모리 요청 신호를 상기 버스로 즉시 전송하지 않고, 상기 제2 데이터 요청 신호를 기다리는 반도체 집적회로 장치.
KR1020150040278A 2015-03-23 2015-03-23 버스 인터페이스 장치, 이를 포함하는 반도체 집적회로 장치 및 상기 장치의 동작 방법 KR102287402B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150040278A KR102287402B1 (ko) 2015-03-23 2015-03-23 버스 인터페이스 장치, 이를 포함하는 반도체 집적회로 장치 및 상기 장치의 동작 방법
US15/077,553 US10133685B2 (en) 2015-03-23 2016-03-22 Bus interface device that merges data request signals, semiconductor integrated circuit device including the same, and method of operating the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150040278A KR102287402B1 (ko) 2015-03-23 2015-03-23 버스 인터페이스 장치, 이를 포함하는 반도체 집적회로 장치 및 상기 장치의 동작 방법

Publications (2)

Publication Number Publication Date
KR20160113916A KR20160113916A (ko) 2016-10-04
KR102287402B1 true KR102287402B1 (ko) 2021-08-06

Family

ID=56975716

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150040278A KR102287402B1 (ko) 2015-03-23 2015-03-23 버스 인터페이스 장치, 이를 포함하는 반도체 집적회로 장치 및 상기 장치의 동작 방법

Country Status (2)

Country Link
US (1) US10133685B2 (ko)
KR (1) KR102287402B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111262798B (zh) * 2018-11-30 2023-03-14 深圳市中兴微电子技术有限公司 一种信息处理方法、设备及计算机存储介质
US11210757B2 (en) * 2019-12-13 2021-12-28 Advanced Micro Devices, Inc. GPU packet aggregation system

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5907330A (en) 1996-12-18 1999-05-25 Intel Corporation Reducing power consumption and bus bandwidth requirements in cellular phones and PDAS by using a compressed display cache
US6122715A (en) * 1998-03-31 2000-09-19 Intel Corporation Method and system for optimizing write combining performance in a shared buffer structure
US6434639B1 (en) * 1998-11-13 2002-08-13 Intel Corporation System for combining requests associated with one or more memory locations that are collectively associated with a single cache line to furnish a single memory operation
US6366984B1 (en) * 1999-05-11 2002-04-02 Intel Corporation Write combining buffer that supports snoop request
US6636221B1 (en) 2000-08-02 2003-10-21 Ati International, Srl Graphics processing system with enhanced bus bandwidth utilization and method therefore
US6996645B1 (en) * 2002-12-27 2006-02-07 Unisys Corporation Method and apparatus for spawning multiple requests from a single entry of a queue
TWI416334B (zh) * 2005-07-11 2013-11-21 Nvidia Corp 在匯流排上以封包形式傳送來自複數個客戶的資料傳送請求之方法、匯流排介面裝置及處理器
US20070080971A1 (en) 2005-10-06 2007-04-12 Sung Chih-Ta S Method and apparatus of image buffer compression for display device
JP2009100361A (ja) 2007-10-18 2009-05-07 Toshiba Corp 情報処理装置およびデータ転送制御方法
JP2009210844A (ja) 2008-03-05 2009-09-17 Toppoly Optoelectronics Corp 液晶表示装置
US9349156B2 (en) 2009-09-25 2016-05-24 Arm Limited Adaptive frame buffer compression
US8619866B2 (en) 2009-10-02 2013-12-31 Texas Instruments Incorporated Reducing memory bandwidth for processing digital image data
US20120120083A1 (en) 2010-11-12 2012-05-17 Novatek Microelectronics Corp. Display apparatus, and display controller and operating method thereof
JP2012205107A (ja) 2011-03-25 2012-10-22 Aiphone Co Ltd テレビドアホン装置
US8730328B2 (en) 2011-10-06 2014-05-20 Qualcomm Incorporated Frame buffer format detection
US9053138B2 (en) 2013-01-18 2015-06-09 International Business Machines Corporation Merging compressed data arrays
US9177393B2 (en) 2013-02-04 2015-11-03 Qualcomm Incorporated Mixed mode for frame buffer compression
US9460527B2 (en) 2013-02-04 2016-10-04 Qualcomm Incorporated Pattern mode for frame buffer compression

Also Published As

Publication number Publication date
US20160283416A1 (en) 2016-09-29
US10133685B2 (en) 2018-11-20
KR20160113916A (ko) 2016-10-04

Similar Documents

Publication Publication Date Title
JP5681782B2 (ja) オン・ダイ・システム・ファブリック・ブロックの制御
US20140218378A1 (en) System on chip for updating partial frame of image and method of operating the same
US10331359B2 (en) Memory subsystem with wrapped-to-continuous read
JP2014170360A (ja) 計算機及びメモリ管理方法
KR102327334B1 (ko) 디스플레이 컨트롤러 및 이를 포함하는 반도체 집적회로 장치
US9875199B2 (en) Data transfer control apparatus
US10255890B2 (en) Display controller for reducing display noise and system including the same
KR102287402B1 (ko) 버스 인터페이스 장치, 이를 포함하는 반도체 집적회로 장치 및 상기 장치의 동작 방법
CN111314699A (zh) 图像解码方法、装置、电子设备及存储介质
US10580107B2 (en) Automatic hardware ZLW insertion for IPU image streams
US9471584B2 (en) Demand paging method for mobile terminal, controller and mobile terminal
WO2019196634A1 (zh) 数据处理方法及装置
EP4149008A1 (en) Verifying compressed stream fused with copy or transform operations
KR100463205B1 (ko) 시퀀셜 버퍼를 내장하여 디에스피의 데이터 억세스 성능을향상시키는 컴퓨터 시스템 및 그 컴퓨터 시스템의 데이터억세스 방법
US20220414014A1 (en) Technology for early abort of compression acceleration
US10719440B2 (en) Semiconductor device and memory access method
EP4345632A1 (en) Application processor, system-on-a-chip and method of operation thereof
US11726949B2 (en) System and method for selectively reprocessing video streams based on system resources and stream status
CN117785726A (zh) 应用处理器、片上系统及其操作方法
KR20240045069A (ko) 애플리케이션 프로세서, 시스템 온 칩 및 이의 동작 방법
KR20210088304A (ko) 이미지 프로세서의 동작 방법, 이미지 처리 장치 및 이미지 처리 장치의 동작 방법
KR20140046815A (ko) 전력 관리 집적 회로 및 그 구동 방법
CN113961487A (zh) 加速存储器存取的电子装置及方法
CN115220649A (zh) 信息处理系统和存储系统
KR20120034889A (ko) 패킷 송수신 장치 및 방법

Legal Events

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