KR20060103275A - 프로그램 가능 비디오 처리 및 비디오 저장 아키텍처 - Google Patents

프로그램 가능 비디오 처리 및 비디오 저장 아키텍처 Download PDF

Info

Publication number
KR20060103275A
KR20060103275A KR20067012934A KR20067012934A KR20060103275A KR 20060103275 A KR20060103275 A KR 20060103275A KR 20067012934 A KR20067012934 A KR 20067012934A KR 20067012934 A KR20067012934 A KR 20067012934A KR 20060103275 A KR20060103275 A KR 20060103275A
Authority
KR
South Korea
Prior art keywords
video
processor
programmable processor
programmable
port
Prior art date
Application number
KR20067012934A
Other languages
English (en)
Other versions
KR100829647B1 (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 인텔 코오퍼레이션
Publication of KR20060103275A publication Critical patent/KR20060103275A/ko
Application granted granted Critical
Publication of KR100829647B1 publication Critical patent/KR100829647B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/91Television signal processing therefor
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/91Television signal processing therefor
    • H04N5/911Television signal processing therefor for the suppression of noise
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N9/00Details of colour television systems
    • H04N9/79Processing of colour television signals in connection with recording
    • H04N9/80Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback
    • H04N9/804Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback involving pulse code modulation of the colour picture signal components
    • H04N9/8042Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback involving pulse code modulation of the colour picture signal components involving data reduction

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Control Of Indicators Other Than Cathode Ray Tubes (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Transforming Electric Information Into Light Information (AREA)

Abstract

일 실시예에 따르면, 방법은 비디오 디스플레이 장치로 비디오를 수신하는 단계를 포함한다. 또한, 상기 방법은 상기 비디오 디스플레이 장치가 저장 모드에 있다고 결정한 후, 적어도 하나의 프로세서에 의해 상기 비디오를 메모리에 저장하는 단계를 포함한다. 또한, 상기 방법은 상기 비디오 디스플레이 장치가 이미지 처리 모드에 있다고 결정한 후, 상기 적어도 하나의 프로세서로 상기 비디오에 대한 강화된 이미지 처리를 수행하는 단계를 포함한다.
비디오 디스플레이 장치, 비디오 처리, 비디오 저장, 프로그램 가능 프로세서

Description

프로그램 가능 비디오 처리 및 비디오 저장 아키텍처 {PROGRAMMABLE VIDEO PROCESSING AND VIDEO STORAGE ARCHITECTURE}
본 특허 출원은 2003년 6월 19일자로 출원된 Louis A. Lippincott의 발명의 명칭이 "데이터 구동 아키텍처에서의 프로세서-프로세서 통신(Processor to Processor Communication in a Data Driven Architecture)"인 미국 특허 출원 제10/600,047호(인텔 문서 번호: P15961, 대리인 문서 번호: 884.898US1)에 관련되며, 이는 본 특허 출원의 출원인에게 양수되었다. 또한, 본 특허 출원은 2003년 6월 19일자로 출원된 Louis A. Lippincott의 발명의 명칭이 "데이터 구동 아키텍처에서의 통신 포트(Communication Ports in a Data Driven Architecture)"인 미국 특허 출원 제10/600,048호(인텔 문서 번호: P15962, 대리인 문서 번호: 884.899US1)에 관련되며, 이는 본 특허 출원의 출원인에게 양수되었다.
본 발명은 일반적으로 전자 데이터 처리에 관한 것으로, 특히 프로그램 가능 비디오 처리 및 비디오 저장 아키텍처에 관한 것이다.
비디오를 녹화하고 보는데 있어서 뷰어를 보조하는 다양한 전자 장치들이 개발되었다. 수요가 증가하고 있는 그러한 장치 중 하나는 사용자가 생방송을 멈춤(pause), 되감기(rewind) 등을 할 수 있도록 하는 디지털 비디오 녹화기이다.
본 발명의 실시예들은, 그러한 실시예들을 도시하는 첨부 도면과 이하의 상세한 설명을 참조함으로써 잘 이해될 수 있다. 도면에서 주어진 참조 번호의 가장 앞자리 수가 도면 번호와 관련되도록 번호가 매겨진다. 예를 들면, 시스템(100)은 도 1에 위치할 수 있다. 그러나, 서로 다른 도면에 있어서 동일한 요소들에 대한 참조 번호는 동일하다.
도 1은 본 발명의 일 실시예에 따른 프로그램 가능 비디오 처리 및 비디오 저장 아키텍처를 포함하는 시스템 구성의 단순화된 블록도.
도 2는 본 발명의 일 실시예에 따른 프로그램 가능 처리 유닛의 상세한 블록도.
도 3은 본 발명의 일 실시예에 따른 프로그램 가능 프로세서의 상세한 블록도.
도 4는 본 발명의 일 실시예에 따른 프로그램 가능 프로세서의 포트 링(port ring) 및 관련 포트를 도시한 도면.
도 5는 본 발명의 일 실시예에 따른 송신기 또는 수신기 포트 내의 FIFO 메모리와 메모리에 대한 관련 인터페이스 신호를 도시한 도면.
도 6은 본 발명의 일 실시예에 따른 수신기 포트와 관련 인터페이스 신호의 상세한 블록도.
도 7a 내지 7g는 본 발명의 일 실시예에 따른 상이한 송신기 포트들과 통신하는 수신기 포트의 상세한 블록도.
도 8은 본 발명의 일 실시예에 따른 송신기 포트와 관련 인터페이스 신호의 상세한 블록도.
도 9a 내지 9e는 본 발명의 일 실시예에 따른 상이한 인터페이스 신호를 사용하는 상이한 수신기 포트와 통신하는 송신기 포트의 상세한 블록도.
도 10은 본 발명의 일 실시예에 따른 송신부 프로그램 가능 프로세서로부터 수신부 프로그램 가능 프로세서로의 소정의 논리 연결(logical connection)에 관한 다양한 루트를 도시한 도면.
도 11은 본 발명의 일 실시예에 따른 프로그램 가능 처리 유닛 내의 논리 연결의 성립 및 초기화의 흐름도.
도 12는 본 발명의 일 실시예에 따른 프로그램 가능 처리 유닛에 의한 데이터 처리의 흐름도.
도 13a 및 13b는 본 발명의 일 실시예에 따른 프로그램 가능 프로세서 내의 상이한 포트들의 메모리들 사이의 통신의 흐름도.
도 14는 본 발명의 일 실시예에 따른 프로그램 가능 처리 유닛의 다중 모드 동작(multiple mode operation)의 흐름도.
프로그램 가능 비디오 처리 및 비디오 저장 아키텍처용 방법, 장치 및 시스템이 기술된다. 이하의 설명에서, 다수의 구체적인 세부 사항이 개시된다. 그러나, 본 발명의 실시예들은 이러한 구체적인 세부 사항 없이도 실시될 수 있음을 알 수 있다. 다른 예에서, 공지된 회로, 구조 및 기술들은 본 설명의 이해를 모호하게 하지 않기 위하여 상세히 제시되지는 않는다. 본 발명의 실시예들은 비디오의 처리 및 저장과 관련해서 기술되지만, 여기에 한정되지는 않는다. 예를 들어, 본 발명의 실시예들은 오디오, 비디오 및/또는 오디오의 일부인 메타데이터(예컨대, 클로즈 캡션 등) 등을 포함할 수 있다.
본 발명의 상세한 설명은 두 절로 나뉜다. 첫번째 절에서는, 하드웨어 및 운영 환경이 제시된다. 두번째 절에서는, 프로그램 가능 비디오 처리 및 비디오 저장 아키텍처의 프로그램 가능 처리 유닛의 동작이 제시된다. 또한, 첫번째 및 두번째 절은 더 나뉜다. 첫번째 절은 시스템 설명, 프로그램 가능 처리 유닛 설명, 프로그램 가능 프로세서 설명, 프로그램 가능 프로세서의 포트 링과 포트들 설명 및 프로그램 가능 프로세서 사이의 논리 연결 설명으로 나뉜다. 두번째 절은 프로그램 가능 프로세서 사이의 데이터 전송 동작 설명 및 프로그램 가능 처리 유닛의 다중 모드 동작 설명으로 나뉜다.
하드웨어 및 운영 환경
이 절에서는, 하드웨어 및 운영 환경이 제시된다.
<시스템 설명>
도 1은 본 발명의 일 실시예에 따른 프로그램 가능 비디오 처리 및 비디오 저장 아키텍처를 포함하는 시스템 구성의 단순화된 블록도이다. 도시된 바와 같이, 도 1은 비디오 튜너(102), 비디오 신호 프로세서(104), 프로그램 가능 처리 유닛(106), 메모리(108), 비디오 디스플레이 프로세서(110) 및 비디오 디스플레이(112)를 포함하는 시스템(100)을 도시하고 있다. 일 실시예에 따르면, 시스템(100)은 다양한 유형의 텔레비전, 컴퓨터 모니터 등과 같은 다양한 뷰어 내에 존재할 수 있는 컴포넌트들을 포함한다. 다른 실시예에 따르면, 컴포넌트들 중 일부는 셋톱 박스, 미디어 센터 등의 일부일 수 있다. 예를 들면, 비디오 튜너(102), 비디오 신호 프로세서(104), 프로그램 가능 처리 유닛(106) 및 메모리(108)는 셋톱 박스 내에 존재할 수 있고, 비디오 디스플레이 프로세서(110) 및 비디오 디스플레이(112)는 디스플레이 장치(예컨대, 텔레비전) 내에 존재할 수 있다. 일 실시예에 따르면, 메모리(108)는 다양한 유형의 랜덤 액세스 메모리(RAM)일 수 있다. 예를 들어, 메모리(108)는 동기식 동적 RAM(SDRAM), DRAM, 이중 데이터 속도(DDR) 동기식 동적 RAM(SDRAM) 등일 수 있다.
비디오 튜너(102)는 비디오 신호 프로세서(104)에 연결된다. 비디오 신호 프로세서(104)는 프로그램 가능 처리 유닛(106)에 연결된다. 프로그램 가능 처리 유닛(106)은 메모리(108)와 비디오 디스플레이 프로세서(110)에 연결된다. 비디오 디스플레이 프로세서(110)는 비디오 디스플레이(112)에 연결된다. 비디오 튜너(102)는 신호(114)를 수신하도록 연결된다. 일 실시예에 따르면, 신호(114)는 라디오 주파수(RF) 신호이다. 비디오 튜너(102)는 신호(114)를 수신하고, 비디오 디스플레이(112) 상에서 보기 위해 현재 선택된 채널에 기초하여 이 신호(114)를 아날로그 비디오 신호(116)로 변환한다.
비디오 신호 프로세서(104)는 아날로그 비디오 신호(116)를 수신하고 아날로그 비디오 신호(116)를 디지털 비디오 신호(118)로 변환한다. 일 실시예에 따르면, 비디오 신호 프로세서(104)는 디지털 비디오 신호(118)로 변환하기 전에 아날로그 비디오 신호(116)를 필터링한다. 예를 들어, 비디오 신호 프로세서(104)는 인접 채널로부터의 잡음을 제거하기 위하여 아날로그 비디오 신호(116)를 필터링할 수 있다. 일 실시예에 따르면, 비디오 신호 프로세서(104)는 오디오 신호로부터의 잡음을 제거하기 위하여 아날로그 비디오 신호(116)를 필터링한다. 디지털 비디오 신호(118)는 비디오 디스플레이(112) 상의 디스플레이를 위한 동기 신호(sync signal)를 포함할 수 있는 데이터의 스트림일 수 있다.
프로그램 가능 처리 유닛(106)은 디지털 비디오신호(118)를 수신한다. 이하에서 상세히 설명되는 바와 같이, 일 실시예에 따르면, 프로그램 가능 처리 유닛(106)은 시스템(100)의 현재 모드에 따라 다른 동작을 수행한다. 일 실시예에 따르면, 프로그램 가능 처리 유닛(106)은 1) 저장 모드 및 2) 이미지 처리 모드 중 하나에서 동작한다. 저장 모드에서, 시스템(100)의 사용자는 시스템(100)으로 수신된 비디오를 저장하거나 재생할 수 있다. 일 실시예에 따르면, 프로그램 가능 처리 유닛(106)은 메모리(108)에 비디오를 저장한다. 예시의 목적으로, 시스템(100)이 텔레비전의 일부라고 가정한다. 사용자는 신호(114)에 대해 수신된 비디오를 저장할 수 있다. 예를 들어, 사용자는 비디오 디스플레이(112)에서 디스플레이되는 비디오를 소정의 시간 간격 동안 잠시 멈출 수 있다. 또한, 저장 모드에서, 사용자는 비디오 디스플레이(112) 상에서 디스플레이되는 비디오를 재생할 수 있으며, 들어오는 비디오가 메모리(108)에 저장되도록 할 수 있다.
일 실시예에 따르면, 사용자가 프로그램 가능 처리 유닛(106)을 저장 모드에 두지 않으면, 프로그램 가능 처리 유닛(106)은 이미지 처리 모드에 있게 된다. 일 실시예에 따르면, 프로그램 가능 처리 유닛(106)은 메모리(108)가 디스플레이를 위한 저장된 비디오를 포함하지 않을 때까지 저장 모드로 유지된다. 이미지 처리 모드는 사용자가 메모리(108) 내에 저장된 비디오를 재생하려고 시도하지 않거나 시스템(100)으로 수신된 비디오를 메모리(108)에 저장하려고 시도하지 않는 경우 가능하게(enable)될 수 있다. 이하에서 설명되는 바와 같이, 그러한 일 실시예에 따르면, 프로그램 가능 처리 유닛(106)은 들어오는 비디오 신호에 대한 강화된 비디오 처리를 수행한다. 그러한 강화(enhancement)는 고스팅(ghosting), 잡음, 닷 크롤(dot-crawl) 등의 감소를 포함할 수 있다. 프로그램 가능 처리 유닛(106)은 들어오는 비디오의 다중 프레임을 저장하기 위하여 메모리(108)를 사용할 수 있다. 따라서, 프로그램 가능 처리 유닛(106)은 다수의 프레임에 걸쳐 이미지의 강화를 수행할 수 있다. 예를 들어, 프로그램 가능 처리 유닛(106)은 다수의 프레임에 걸친 시간적(temporal) 잡음 감소를 수행할 수 있다. 프로그램 가능 처리 유닛(106)과 그 동작은 이하에서 상세히 기술된다.
비디오 디스플레이 프로세서(110)는 프로그램 가능 처리 유닛(106)으로부터 비디오를 수신하고, 비디오 디스플레이(112) 상의 디스플레이를 위한 비디오에 관한 다수의 동작을 수행할 수 있다. 예를 들어, 비디오 디스플레이 프로세서(110)는 색조(tint) 설정, 콘트라스트 설정 등에 기초하여 비디오를 조정할 수 있다. 비디오 디스플레이(112)는 비디오 디스플레이 프로세서(110)로부터 신호를 수신하도록 연결된다. 비디오 디스플레이(112)는 다수의 다양한 유형의 디스플레이일 수 있으나, 일 실시예에 따르면, 비디오 디스플레이(112)는 브라운관(CRT), 플라스마 디스플레이, 액정 표시 장치(LCD) 등일 수 있다.
따라서, 본 발명의 실시예들은 동작 모드에 기초하여 대안적인 기능을 제공하기 위한 유연한 프로그램 가능 아키텍처를 포함한다. 그러한 기능은 디지털 비디오 녹화기의 동작들과 비디오의 강화된 이미지 처리를 가능하게 하는 동작들을 포함한다. 따라서, 본 발명의 실시예들을 구체화하는 디스플레이 장치들은 방송 컨텐츠의 개선된 이미지 품질 뿐만 아니라 소정의 채널에 대한 되감기, 멈춤, 빨리감기 및 재생 기능을 제공할 수 있다.
<프로그램 가능 처리 유닛 설명>
프로그램 가능 처리 유닛(106)의 일 실시예가 기술된다. 특히, 도 2는 본 발명의 일 실시예에 따른 프로그램 가능 처리 유닛의 상세한 블록도를 도시하고 있다. 도시된 바와 같이, 프로그램 가능 처리 유닛(106)은 프로그램 가능 프로세서(202A-202H)를 포함한다. 프로그램 가능 프로세서(202A-202H)는 각각 포트 링(port ring; 250A-250H)을 포함한다. 이하에서 기술되는 바와 같이, 포트 링(250A-250H)은 프로그램 가능 프로세서(202A-202H)가 인터페이스(제어 및 데이터) 신호를 전송하는 다수의 포트를 포함한다. 일 실시예에 따르면, 소정의 포트 링(250)은 8개의 I/O 포트를 포함하는데, 그러한 I/O 포트 각각은 데이터가 2개의 분리된 방향성 없는(undirectional) 데이터 버스를 통하여 동시에 송신 및 수신될 수 있도록 하는 쌍방향 연결(bi-directional connection)이다. 즉, I/O 포트는 송신기 포트 및 수신기 포트를 포함한다.
또한, 프로그램 가능 처리 유닛(106)은 직접 메모리 액세스(DMA) 유닛(204), DMA 유닛(210), 메모리 인터페이스(206), 입력/출력(I/O) 인터페이스(208) 및 호스트 프로세서(214)를 포함한다. 도 2는 8개의 프로그램 가능 프로세서(202)를 도시하고 있으나, 실시예들은 이에 한정되지 않으며, 더 많거나 적은 수의 요소가 프로그램 가능 처리 유닛(106)의 실시예로 구체화될 수 있다. 일 실시예에 따르면, 호스트 프로세서(214)는 일반적인 목적의 프로세서의 다른 유형일 수 있다. I/O 인터페이스(208)는 I/O 장치 또는 프로그램 가능 처리 유닛(106)의 주변 컴포넌트에 인터페이스를 제공한다. I/O 인터페이스(208)는 프로그램 가능 처리 유닛(106)의 서로 다른 컴포넌트로의 임의의 적절한 통신 링크에 제공하기 위한 임의의 적절한 인터페이스 컨트롤러를 포함할 수 있다. 일 실시예에 관한 I/O 인터페이스(208)는 다수의 인터페이스 중 하나에 대한 적절한 중재(arbitration) 및 버퍼링을 제공한다.
도시된 바와 같이, 프로그램 가능 프로세서(202A-202H) 사이의 상호 연결은 최단 이웃 점 연결 구성(point-to-point nearest neighbor configuration)을 제공하며, 소정의 프로그램 가능 프로세서(202)는 프로그램 가능 처리 유닛(106) 내의 4개의 다른 요소{예컨대, 다른 프로그램 가능 프로세서(202), DMA 유닛(204)}에 물리적으로 연결된다. 즉, 소정의 프로그램 가능 프로세서(204)는 프로그램 가능 처리 유닛(106) 내의 모든 다른 프로그램 가능 프로세서(204)에 물리적으로 연결되지는 않는다. 이하에서 기술되는 바와 같이, 데이터는 일련의 중간 프로그램 가능 프로세서(202)를 통하여 송신부 프로그램 가능 프로세서(202)로부터 수신부 프로그램 가능 프로세서(202)로 전송될 수 있다. 일 실시예에 따르면, 데이터가 포트 링(250)을 통하여 중간 프로그램 가능 프로세서(202)의 수신기 포트에서 수신되고 중간 프로그램 가능 프로세서(202)의 송신기 포트에서 출력되도록, 일련의 중간 프로그램 가능 프로세서(202)를 통해 전송된다. 따라서, 중간 프로그램 가능 프로세서(202) 내의 어떠한 프로세서 요소도, 송신부 프로그램 가능 프로세서(202)로부터 수신부 프로그램 가능 프로세서(202)로의 데이터의 전송의 일부로서, 데이터에 관한 처리 동작을 수행하지 않는다.
포트 링(250A)을 통해, 프로그램 가능 프로세서(202A)는 2개의 I/O 포트를 통해 I/O 인터페이스(208)에 연결되고, 1개의 다른 I/O 포트를 통해 프로그램 가능 프로세서(202D)의 포트 링(250D)에 연결된다. 포트 링(250A)을 통해, 프로그램 가능 프로세서(202A)는 2개의 다른 I/O 포트를 통해 DMA 유닛(204)에 연결된다. 또한, 포트 링(250A)을 통해, 프로그램 가능 프로세서(202A)는 2개의 또 다른 I/O 포트를 통해 프로그램 가능 프로세서(202B)의 포트 링(250B)에 연결된다. 또한, 포트 링(250A)을 통해, 프로그램 가능 프로세서(202A)는 2개의 다른 I/O 포트를 통해 프로그램 가능 프로세서(202E)의 포트 링(250E)에 연결된다.
포트 링(250B)을 통해, 프로그램 가능 프로세서(202B)는 2개의 다른 I/O 포트를 통해 DMA 유닛(204)에 연결된다. 또한, 포트 링(250B)을 통해, 프로그램 가능 프로세서(202B)는 2개의 다른 I/O 포트를 통해 프로그램 가능 프로세서(202C)의 포트 링(250C)에 연결된다. 포트 링(250B)을 통해, 프로그램 가능 프로세서(202B)는 2개의 또 다른 I/O 포트를 통해 프로그램 가능 프로세서(202F)의 포트 링(250F)에 연결된다.
포트 링(250C)을 통해, 프로그램 가능 프로세서(202C)는 2개의 다른 I/O 포트를 통해 DMA 유닛(204)에 연결된다. 또한, 포트 링(250C)을 통해, 프로그램 가능 프로세서(202C)는 2개의 다른 I/O 포트를 통해 프로그램 가능 프로세서(202D)의 포트 링(250D)에 연결된다. 포트 링(250C)을 통해, 프로그램 가능 프로세서(202C)는 2개의 또 다른 I/O 포트를 통해 프로그램 가능 프로세서(202G)의 포트 링(250G)에 연결된다.
포트 링(250D)을 통해, 프로그램 가능 프로세서(202D)는 2개의 다른 I/O 포트를 통해 DMA 유닛(204)에 연결된다. 또한, 포트 링(250D)을 통해, 프로그램 가능 프로세서(202D)는 2개의 I/O 포트를 통해 DMA 유닛(210)에 연결되고, 1개의 다른 I/O 포트를 통해 프로그램 가능 프로세서(202A)의 포트 링(250A)에 연결된다. 포트 링(250D)을 통해, 프로그램 가능 프로세서(202D)는 2개의 다른 I/O 포트를 통해 프로그램 가능 프로세서(202H)의 포트 링(250H)에 연결된다.
포트 링(250E)을 통해, 프로그램 가능 프로세서(202E)는 2개의 I/O 포트를 통해 I/O 인터페이스(208)에 연결되고, 1개의 다른 I/O 포트를 통해 프로그램 가능 프로세서(202H)의 포트 링(250H)에 연결된다. 또한, 포트 링(250E)을 통해, 프로그램 가능 프로세서(202E)는 2개의 또 다른 I/O 포트를 통해 프로그램 가능 프로세서(202F)의 포트 링(250F)에 연결된다. 또한, 포트 링(250E)을 통해, 프로그램 가능 프로세서(202E)는 2개의 다른 I/O 포트를 통해 프로그램 가능 프로세서(202A)의 포트 링(250A)에 연결된다.
포트 링(250F)을 통해, 프로그램 가능 프로세서(202F)는 2개의 다른 I/O 포트를 통해 프로그램 가능 프로세서(202G)의 포트 링(250G)에 연결된다. 포트 링(250F)을 통해, 프로그램 가능 프로세서(202F)는 2개의 또 다른 I/O 포트를 통해 프로그램 가능 프로세서(202B)의 포트 링(250B)에 연결된다.
포트 링(250G)을 통해, 프로그램 가능 프로세서(202G)는 2개의 다른 I/O 포트를 통해 프로그램 가능 프로세서(202H)의 포트 링(250H)에 연결된다. 포트 링(250G)을 통해, 프로그램 가능 프로세서(202G)는 2개의 또 다른 I/O 포트를 통해 프로그램 가능 프로세서(202C)의 포트 링(250C)에 연결된다.
또한, 포트 링(250H)을 통해, 프로그램 가능 프로세서(202H)는 2개의 I/O 포트를 통해 DMA 유닛(212)에 연결되고, 1개의 다른 I/O 포트를 통해 프로그램 가능 프로세서(202E)의 포트 링(250E)에 연결된다. 포트 링(250H)을 통해, 프로그램 가능 프로세서(202H)는 2개의 또 다른 I/O 포트를 통해 프로그램 가능 프로세서(202D)의 포트 링(250D)에 연결된다.
또한, I/O 인터페이스(208)는 다른 외부 장치에 외부적으로 연결될 수도 있다. 일 실시예에 따르면, I/O 인터페이스(208)는 비디오 신호 프로세서(104)로부터 디지털 비디오 신호(118)를 수신하도록 외부적으로 연결되고, 비디오 디스플레이 프로세서(110)로 디지털 비디오 신호(118)를 송신하도록 외부적으로 연결된다. 일 실시예에 따르면, I/O 인터페이스(208)는 다른 프로그램 가능 처리 유닛(106)에 외부적으로 연결될 수 있으며, 이에 의해 이미지 데이터를 함께 처리 및 통신할 수 있는 프로그램 가능 프로세서(202)의 수를 늘릴 수 있다. 일 실시예에 따르면, 다수의 다양한 프로그램 가능 처리 유닛(106) 상에서의 데이터 처리를 위하여, 다수의 프로그램 가능 처리 유닛(106)이 직렬 연결(daisy-chain)될 수 있다.
DMA 유닛(204)은 메모리 인터페이스(206)에 연결된다. 메모리 인터페이스(206)는 메모리(108)에 연결된다. 이하에서 상세히 기술되는 바와 같이, {프로그램 가능 프로세서(202) 중 하나의 처리 동작 결과의 출력과 같은} 데이터가 DMA 유닛(204)과 메모리 인터페이스(206)를 통해 메모리(108)에 저장되거나 메모리(108)로부터 판독될 수 있다.
호스트 프로세서(214)는 내부 전역 버스(internal global bus; 216)에 연결된다. 도 2에 도시되고 있지는 않으나, 내부 전역 버스(216)는 프로그램 가능 처리 유닛(106) 내의 서로 다른 요소들에 연결된다. 따라서, 호스트 프로세서(214)는 프로그램 가능 처리 유닛(106) 내의 서로 다른 요소 각각과 직접 통신하거나 요소 각각을 설정할 수 있다.
<프로그램 가능 프로세서 설명>
도 3은 본 발명의 일 실시예에 따른 프로그램 가능 프로세서의 상세한 블록도를 도시하고 있다. 특히, 도 3은 본 발명의 일 실시예에 따른 프로그램 가능 프로세서(202) 중 하나의 상세한 블록도를 도시하고 있다.
프로그램 가능 프로세서(202)는 입력 프로세서 요소(302), 출력 프로세서 요소(304), 다수의 프로세서 요소(306A-306C), 다수의 레지스터(308), 다수의 가속기 유닛(310A-310B), 메모리(314) 및 메모리 컨트롤러(316)를 포함한다. 입력 프로세서 요소(302), 출력 프로세서 요소(304), 프로세서 요소(306A-306C), 가속기 유닛(310A-310B) 및 메모리(314){메모리 컨트롤러(316)를 통함}는 레지스터(308)에 연결된다. 레지스터(308)는 프로세서 요소(302, 304, 306), 가속기 유닛(310A-310B) 및 메모리(314)가 데이터를 교환하도록 하고, 소정의 프로세서 요소(302, 304, 306)와 가속기 유닛(310A-310B)에 대하여 일반 목적의 레지스터로 사용될 수 있다. 또한, 프로세서 요소(302, 304, 306)와 가속기 유닛(310A-310B)은 다수의 지역 레지스터(local register){도시되지 않음}를 포함할 수 있다.
일 실시예에 따르면, 입력 프로세서 요소(302), 출력 프로세서 요소(304) 및 프로세서 요소(306A-306C)는 데이터 처리를 위한 산술 논리 장치(ALU)와 명령 메모리를 포함한다. 입력 프로세서 요소(302)와 출력 프로세서 요소(304)는 각각 프로그램 가능 프로세서(202)로 입력되는 데이터를 수신하고 프로그램 가능 프로세서(202)로부터 출력되는 데이터를 송신하기 위하여 포트 링(250)을 통해 프로그램 가능 프로세서(202)의 포트에 연결된다(이는 도 4 내지 9와 관련하여 이하에서 상세히 설명된다). 데이터의 입력과 출력 외에, 입력 프로세서 요소(302) 및/또는 출력 프로세서 요소(304)는 {프로세서 요소(306A-306C)에 의하여 제공되는 처리와 유사하게} 데이터를 처리할 수 있다. 서로 다른 프로세서 요소(306A-306C)는 일반 목적의 프로세서 요소이거나 특수 목적의 프로세서 요소일 수 있다. 예를 들어, 프로세서 요소(306A-306C)는 MAC(Multiply-Accumulate) 프로세서 요소일 수 있는데, 이는 MAC 기능용 명령 집합 뿐만 아니라 일반 목적의 처리에 적합한 명령 집합도 포함한다. 프로세서 요소(306A-306C)는 일반 목적의 프로세서 요소와 특수 목적의 프로세서 요소의 조합일 수 있다. 예를 들어, 프로세서 요소(306A)와 프로세서 요소(306C)는 MAC 프로세서 요소일 수 있고, 프로세서 요소(306B)는 일반 목적의 프로세서 요소일 수 있다. 도 3은 프로그램 가능 프로세서(202) 내에 5개의 프로세서 요소를 도시하고 있으나, 다른 실시예들에 따르면, 5개보다 적거나 많은 프로세서 요소가 프로그램 가능 프로세서(202)에 포함될 수 있다.
입력 프로세서 요소(302)는 입력 포트로 포트 인터페이스를 가지는 일반 목적의 프로세서 요소이다. 일 실시예에 따르면, 입력 프로세서 요소(302) 내의 명령은 입력 프로세서 요소(302) 내의 지역 레지스터와 레지스터(308)와 함께 추가적인 입력 연산 대상(operand)으로 포트를 가진다. 출력 프로세서 요소(304)는 출력 포트로 포트 인터페이스를 가지는 일반 목적의 프로세서 요소이다. 일 실시예에 따르면, 출력 프로세서 요소(304) 내의 명령은 출력 프로세서 요소(304) 내의 지역 레지스터와 레지스터(308)와 함께 추가적인 출력 연산 대상으로 포트를 가진다.
<프로그램 가능 프로세서의 포트 및 포트 링>
도 4는 본 발명의 일 실시예에 따른 프로그램 가능 프로세서의 포트 링 및 관련 포트를 도시하고 있다. 프로그램 가능 프로세서(202)는 포트 링(250)을 통해 포트(404A-404H)로의 및 포트(404A-404H)로부터의 입력 및 출력 데이터에 연결된다. 도시된 바와 같이, 일 실시예에 따르면, 포트(404A-404H)는 하나의 프로그램 가능 프로세서(202)에서 {다른 프로그램 가능 프로세서(202), DMA 유닛(204), I/O 인터페이스(208)와 같은} 다른 유닛으로 데이터가 흐르게 하는 쌍방향 데이터 연결이다.
소정의 포트(404A-404H)는 각각 포트(404)로 데이터를 수신하는 수신기 포트와 포트(404)로부터 데이터를 전송하는 송신기 포트를 포함한다. 특히, 포트(404A-404H)는 각각 수신기 포트(406A-406H)와 송신기 포트(408A-408H)를 포함한다. 수신기 포트의 일 실시예와 송신기 포트의 일 실시예는 각각 도 6 및 도 7과 관련하여 이하에서 설명된다. 일 실시예에 따르면, 프로그램 가능 프로세서(202)는 포트(404A-404H)를 통해 (도 2에 도시된 바와 같이) 인접한(가장 가까운 이웃) 프로그램 가능 프로세서(202)에 연결된다.
이제, FIFO 메모리를 포함하는 {포트(404) 중 하나 내의} 수신기 포트 및 송신기 포트의 일 실시예가 설명된다. 도 5는 본 발명의 일 실시예에 따른 송신기 또는 수신기 포트 내의 FIFO 메모리와 이 메모리와 연관된 인터페이스 신호를 도시하고 있다.
도시된 바와 같이, FIFO 메모리(500)는 init_in 신호(506)를 수신하고 init_out 신호(510)를 송신하는데, 이는 (이하에서 상세히 설명되는 바와 같이) 서로 다른 프로그램 가능 프로세서들(202)을 통해 데이터를 전송하는데 사용되는 논리 연결(logical connection)의 초기화 및 생성을 위한 제어 신호이다. FIFO 메모리(500)는 FIFO 메모리(500)의 엔트리(entry) 중 하나에 데이터를 입력하는 data_in 신호(502)를 수신한다.
또한, FIFO 메모리(500)는 다수의 승인/요청 신호를 도시하고 있다. 이하에서 더 설명되는 바와 같이, 일 실시예에 따르면, 포트(404)는 이러한 승인/요청 신호에 기초하여 데이터의 전송을 위한 핸드셰이크 프로토콜(handshake protocol)을 사용한다. 따라서, 이 승인/수신 프로토콜은 데이터 구동 아키텍처를 가능하게 하며, 이미지 처리 동작은 그러한 동작이 실행하는 데이터에 의하여 구동된다.
FIFO 메모리(500)는 request_in 신호(504)를 수신하는데, 이는 FIFO 메모리(500)의 엔트리에 데이터를 입력하는 다른 포트의 FIFO 메모리로부터의 제어 신호이다. FIFO 메모리(500)는 request_in 신호(504)에 대한 응답으로 다른 포트의 FIFO 메모리로 grant_in 신호(508)를 송신하는데, 이는 다른 포트의 FIFO 메모리가 FIFO 메모리(500)로 데이터를 전송할 수 있음을 의미한다.
FIFO 메모리(500)는 다른 포트의 FIFO 메모리로 request_out 신호(512)를 전송하여 FIFO 메모리(500)로부터 다른 포트의 FIFO 메모리로의 데이터 전송을 요청한다. FIFO 메모리(500)는 request_out 신호(512)에 대한 응답으로 다른 포트의 FIFO 메모리로부터 grant_out 신호(516)를 수신한다. 이 grant_out 신호(516)는 FIFO 메모리(500)에 다른 FIFO 메모리가 FIFO 메모리(500)로부터 데이터를 수신할 것이라는 것을 나타낸다. FIFO 메모리(500)는 request_out 신호(512)에 대한 응답으로 {grant_out 신호(516)를 통해} 데이터의 전송을 승인한 다른 FIFO 메모리로 데이터를 전송하는 data_out 신호(510)를 송신한다.
도 6은 본 발명의 일 실시예에 따른 수신기 포트와 관련 인터페이스 신호의 상세한 블록도를 도시하고 있다. 특히, 도 6은 {수신기 FIFO(604)를 포함하는} 수신기 포트(406)와 관련 인터페이스 신호의 일 실시예를 도시하고 있다. 수신기 포트(406)는 (도 4에 도시된) 포트(404) 중 하나 내에 존재하며, 프로그램 가능 프로세서(202)로 데이터를 수신한다.
수신기 FIFO(604)는 프로그램 가능 프로세서(202)의 포트 링(250) 외부의 송신기 포트(408)로 인터페이스 신호{grant_in 신호(508), data_in 신호(502), request_in 신호(504) 및 init_in 신호(506)}를 수신하고 송신기 포트(408)로부터 인터페이스 신호를 송신하도록 연결된다. 또한, 수신기 FIFO(604)는 프로그램 가능 프로세서(202) 내의 프로세서 요소 또는 프로그램 가능 프로세서(202)의 포트 링(250) 내부의 송신기 포트(408)로부터 인터페이스 신호{다수의 grant_out 신호(516A-516N), data_out 신호(510), request_out 신호(512) 및 init_out 신호(514)}를 수신 및 송신하도록 연결된다. 도시된 바와 같이, grant_out 신호(516A-516N)는 멀티플렉서(602)에서 수신된다. 수신기 포트(406)는 선택 신호(606)를 사용하여 멀티플렉서(602)가 수신기 FIFO(604)에 입력될 grant_out 신호(516A-516N) 중 하나를 선택하게 한다. 전술한 바와 같이, 호스트 프로세서(214)는 프로그램 가능 프로세서(1202)를 설정하며, 프로그램 가능 프로세서(202)의 하나의 프로세서 요소로부터의 출력은 논리 연결을 통해 다른 프로그램 가능 프로세서(202)의 다른 프로세서 요소에 의하여 처리될 입력일 수 있다. 따라서, 호스트 프로세서(214)는 수신기 포트(406)가 적절한 송신기 포트(408)/입력 프로세서 요소(302)로부터 grant_out 신호(516)를 선택하도록 선택 신호(606)를 유지하게 한다.
설명한 바와 같이, 제1 프로그램 가능 프로세서(202)에서의 제1 처리 동작으로부터의 출력은 제2 처리 동작이 수행되는 제2 프로그램 가능 프로세서(202)로 전송될 수 있다. 일 실시예에 따르면, 이 출력은 다수의 프로그램 가능 프로세서(202)의 다수의 포트(404)를 포함하는 논리 연결을 통해 전송된다. 일 실시예에 따르면, 데이터가 소정의 논리 연결에 있어서 전송되는 상이한 포트들(404)을 통해 초기화 신호가 전송된다. 전술한 바와 같이, 프로그램 가능 처리 유닛(106)의 아키텍처는 소정의 프로그램 가능 프로세서(202)가 모든 다른 프로그램 가능 프로세서(202)에 직접 연결되지 않도록 된 것이다. 오히려, 프로그램 가능 프로세서(202)는 인접(가장 가까운 이웃) 장치에 연결된다. 따라서, 데이터가 하나의 프로그램 가능 프로세서(202)로부터 다른 프로그램 가능 프로세서(202)로 전송되는 경우, 송신부 프로그램 가능 프로세서(202)로부터 수신부 프로그램 가능 프로세서(202)로 데이터가 이동하는 상이한 프로그램 가능 프로세서(202)의 상이한 포트를 통해 논리 연결이 성립된다.
다시 도 2로 돌아가서, 프로그램 가능 프로세서(202C) 내의 프로세서 요소로부터의 출력이 추가적인 처리를 위해 프로그램 가능 프로세서(202E) 내의 프로세서 요소로 전송된다고 가정한다. 다수의 논리 연결 중 하나가 프로그램 가능 프로세서(202C)로부터 프로그램 가능 프로세서(202E)로 성립될 수 있다. 일 예는 프로그램 가능 프로세서(202C)로부터 프로그램 가능 프로세서(202B)로, 프로그램 가능 프로세서(202A)로, 프로그램 가능 프로세서(202E)로의 논리 연결이다. 다른 예는 프로그램 가능 프로세서(202C)로부터 프로그램 가능 프로세서(202G)로, 프로그램 가능 프로세서(202F)로, 프로그램 가능 프로세서(202E)로의 논리 연결이다. 일 실시예에 따르면, 호스트 프로세서(214)는 동일한 통신 경로를 사용할 수 있는 다른 활성 논리 연결에 기초하여 논리 연결의 선택을 결정한다. 예를 들면, 다른 논리 연결이 프로그램 가능 프로세서(202B)와 프로그램 가능 프로세서(202A) 사이의 포트를 사용하는 경우, 호스트 프로세서(214)는 데이터 처리 동작의 대기 시간을 줄이기 위해 후자{프로그램 가능 프로세서(202C)로부터 프로그램 가능 프로세서(202G)로, 프로그램 가능 프로세서(202F)로, 프로그램 가능 프로세서(202E)로}의 논리 연결을 선택할 수 있다.
일 실시예에 따르면, 데이터가 시작되는 포트(404)가 초기화된다. 이 초기화 신호는 전체 논리 연결을 통해 전파되어 이 소정의 논리 연결에 대한 데이터 경로를 초기화할 것이다. 이 초기화 신호는 등록되고, 긴 논리 연결을 통해 전파 지연이 축적되는 것을 막기 위하여 초기화 신호가 데이터인 것처럼 다른 포트들(404)을 통과한다. 일 실시예에 따르면, 이 초기화는 논리 연결에서 사용되는 수신기 FIFO 및 송신기 FIFO의 플러싱(flushing)을 포함할 수 있다. 따라서, 이전의 논리 연결로부터의 이러한 FIFO 내에 임의의 데이터가 존재하는 경우, 이 초기화로 인해 데이터가 삭제된다. 일 실시예에 따르면, 논리 연결을 통한 조합 지연을 방지하기 위해 이러한 방식으로 이러한 서로 다른 인터페이스 신호들이 처리된다. 따라서, 서로 다른 프로그램 가능 프로세서(202) 사이의 전송은 논리 연결의 일부인 서로 다른 포트들(404)에 등록된 지점간(point-to-point) 연결을 통해 처리된다.
예시의 목적으로, 도 7a 내지 7g는 본 발명의 일 실시예에 따른 상이한 송신기 포트와 통신하는 수신기 포트의 상세한 블록도를 도시하고 있다. 특히, 도 7a 내지 7d는 포트 링(250B) 외부의 송신기 포트(408A)와 통신하는 수신기 포트(406)의 상세한 블록도를 도시하고 있다. 도 7e 내지 7g는 포트 링(250B) 내부의 송신기 포트(408B)와 통신하는 수신기 포트(406)의 상세한 블록도를 도시하고 있다.
도 7a 내지 7g는 프로그램 가능 프로세서(202A)와 프로그램 가능 프로세서(202B)를 도시하고 있다. 프로그램 가능 프로세서(202A)와 프로그램 가능 프로세서(202B)는 각각 포트 링(250A)과 포트 링(250B)을 포함한다. 또한, 프로그램 가능 프로세서(202A-202B)는 다수의 수신기 포트 및 송신기 포트를 포함한다. 특히 (도 4에 도시된) 소정의 포트(404)는 송신기 포트와 수신기 포트를 포함한다. 그러나, 명확성을 위해 도 7a 내지 7g는 소정의 포트(404)에 대하여 송신기 포트와 수신기 포트 중 하나를 도시하고 있다. 프로그램 가능 프로세서(202A)의 포트 링(250A)은 송신기 포트(408A)를 포함한다. 프로그램 가능 프로세서(202B)의 포트 링(250B)은 수신기 포트(406)와 송신기 포트(408B)를 포함한다.
도 7a는 송신기 포트(408A)가 {자신과 수신기 포트(406) 사이의} 논리 연결의 일부인 FIFO를 플러싱하기 위해 init_in 신호(506)를 수신기 포트(406)로 송신하는 것을 도시하고 있다. 또한, 도 7a는 수신기 포트(406)가 포트 링(250B)을 통한 송신기 포트(408B)로의 init_out 신호(514)로서 논리 연결을 통해 이 초기화를 전송하는 것을 도시하고 있다. 따라서, 논리 연결의 일부는 송신기 포트(408A), 수신기 포트(406) 및 송신기 포트(408B)를 포함한다. 이 논리 연결은 다수의 다른 프로그램 가능 프로세서(202)를 포함할 수 있다. 따라서, 이 초기화는 다른 프로그램 프로세서(202)로부터 포트 링(250A)의 내부 수신기 포트(406) 중 하나를 통해 송신기 포트(408A)에 의해 수신될 수 있다. 또한, 송신기 포트(408B)는 이 초기화를 다른 프로그램 가능 프로세서(202)로 전송할 수 있다. 논리 연결의 초기화가 완료되면, 이 논리 연결을 통해 데이터가 전송될 수 있다.
도 7b는 송신기 포트(408A)가 수신기 포트(406)로의 데이터 입력을 요청하기 위해 request_in 신호(504)를 사용하는 것을 도시하고 있다. 도 7c는 request_in 신호(504)에 대한 응답으로, 수신기 포트(406)의 수신기 FIFO(604)에 저장이 가능해진 후, 수신기 포트(406)로 데이터를 전송할 수 있는 송신기 포트(408A)를 지시하기 위해 수신기 포트(406)가 grant_in 신호(508)를 사용하는 것을 도시하고 있다. 도 7d는 request_in 신호(504)와 grant_in 신호(516)가 프로그램 가능 처리 유닛(106)을 제어하는 클록 신호의 활성 에지(active edge)에서 활성인 경우 수신기 포트(406)의 수신기 FIFO(604)에 저장하기 위한 데이터를 전송하기 위해 송신기 포트(408A)가 data_in 신호(502)를 사용하는 것을 도시하고 있다.
또한, 도 6에 도시된 바와 같이, 수신기 포트(406)는 동일한 포트 링(250)의 일부인 송신기 포트(408B)로부터 인터페이스 신호를 수신 및 송신한다. 도 7e 내지 7g는 그러한 통신을 도시하고 있다.
도 7e는 {포트 링(250B)의 내부 송신기 포트 중 하나인} 송신기 포트(408B)로의 데이터 입력을 요청하기 위해 수신기 포트(406)가 request_out 신호(512)를 사용하는 것을 도시하고 있다. 도 7f는 request_out 신호(512)에 대한 응답으로, 송신기 포트(408B)가 수신기 포트(406)로 grant_out 신호(516)를 송신하는 것을 도시하고 있다. 도 7g는 request_out 신호(512)와 grant_out 신호(516)가 프로그램 가능 처리 유닛(106)을 제어하는 클럭 신호의 활성 에지에서 활성인 때에 수신기 포트(406)가 data_out 신호(510)를 사용하여 송신기 포트(408B)로 데이터를 전송하는 것을 도시하고 있다.
또한, 도 7e 내지 7g에는 도시되어 있지 않으나, 수신기 포트(406)는 프로그램 가능 프로세서(202B)에 대하여 (도 3에 도시된) 입력 프로세서 요소(302)로 이 인터페이스 신호{request_out 신호(512), grant_out 신호(516) 및 data_out 신호(510)}를 송신하고 입력 프로세서 요소(302)로부터 이 인터페이스 신호를 수신할 수 있다. 처리를 위해 수신기 FIFO(604) 내의 데이터가 이 프로그램 가능 프로세서(202) 내의 프로세서 요소{입력 프로세서 요소(302), 출력 프로세서 요소(304) 및/또는 프로세서 요소(306A-306C)} 중 하나에 입력되는 경우, 수신기 포트(406)는 입력 프로세서 요소(302)로 request_out 신호(512)를 송신한다. 수신기 포트(406) 내의 데이터가 프로그램 가능 프로세서(202)의 외부 장치{예컨대, 다른 프로그램 가능 프로세서(202), DMA 유닛(205) 중 하나 또는 외부 인터페이스(208) 중 하나}로 전송되는 경우, 수신기 포트(406)는 (논리 연결의 일부인) 적절한 송신기 포트(408)로 request_out 신호(512)를 송신한다.
도 8은 본 발명의 일 실시예에 따른 송신기 포트와 관련 인터페이스 신호의 상세한 블록도를 도시하고 있다. 특히, 도 8은 {송신기 FIFO(806)를 포함하는} 송신기 포트(408)와 관련 인터페이스 신호의 일 실시예를 도시하고 있다. 송신기 포트(408)는 (도 4에 도시된) 포트(404) 중 하나 내에 존재하며, 프로그램 가능 프로세서(202)로부터 데이터를 전송할 것이다.
도시된 바와 같이, 다수의 init_in 신호(506A-506H), 다수의 data_in 신호(502A-502H) 및 다수의 request_in 신호(504A-504H)가 이 프로그램 가능 프로세서(202) 내부{즉, 프로그램 가능 프로세서(202)의 포트 링(250) 내부}의 수신기 포트(406) 중 하나로부터 송신기 포트(408)로 입력된다. 또한, grant_out 신호(516), request_out 신호(512), data_out 신호(510) 및 init_out 신호(514)가 송신기 포트(408)로부터 이 프로그램 가능 프로세서(202)의 포트 링(250) 외부의 수신기 포트(406)로 출력된다.
송신기 FIFO(806)는 (도 8에 도시되지 않은) 출력 프로세서 요소(304) 또는 프로그램 가능 프로세서(202)의 포트 링(250) 내부의 다수의 수신기 포트로부터 각각 멀티플렉서(804A), 멀티플렉서(804B), 멀티플렉서(804C)를 통해 인터페이스 신호{다수의 init_in 신호(506A-506H), 다수의 data_in 신호(502A-502H) 및 다수의 request_in 신호(504A-504H)}를 수신하도록 연결된다.
예시의 목적으로, 도 9a 내지 9e는 본 발명의 일 실시예에 따른 상이한 인터페이스 신호를 사용하는 상이한 수신기 포트와 통신하는 송신기 포트의 상세한 블록도를 도시하고 있다. 특히, 도 9a는 송신기 포트(408)가 관련된 프로그램 가능 프로세서(202)의 포트 링(250) 내부의 요소로부터 인터페이스 신호를 수신하는 송신기 포트(408)의 상세한 블록도를 도시하고 있다. 도 9b 내지 9e는 송신기 포트(408)가 관련된 프로그램 가능 프로세서(202)의 포트 링(250) 외부의 수신기 포트(406)로부터 인터페이스 신호를 수신하는 송신기 포트(408)의 상세한 블록도를 도시하고 있다.
도 9a 내지 9e는 프로그램 가능 프로세서(202A)와 프로그램 가능 프로세서(202B)를 도시하고 있다. 프로그램 가능 프로세서(202A)와 프로그램 가능 프로세서(202B)는 각각 포트 링(250A)과 포트 링(250B)을 포함한다. 또한, 프로그램 가능 프로세서(202A-202B)는 다수의 수신기 포트 및 송신기 포트를 포함한다. 특히 (도 4에 도시된) 소정의 포트(404)는 송신기 포트와 수신기 포트를 포함한다. 그러나, 명확성을 위해 도 9a 내지 9e는 소정의 포트(404)에 대하여 송신기 포트와 수신기 포트 중 하나를 도시하고 있다. 프로그램 가능 프로세서(202A)의 포트 링(250A)은 수신기 포트(406B-406H)와 송신기 포트(408)를 포함한다. 프로그램 가능 프로세서(202B)의 포트 링(250B)은 수신기 포트(406A)를 포함한다.
도 9a에 따르면, {프로그램 가능 프로세서(202A) 내의} 출력 프로세서 요소(304)는 init_in 신호(506A), data_in 신호(502A) 및 request_in 신호(504A)를 송신하도록 연결된다. 수신기 포트(406B)는 init_in 신호(506B), data_in 신호(502B) 및 request_in 신호(504B)를 송신한다. 수신기 포트(406C)는 init_in 신호(506C), data_in 신호(502C) 및 request_in 신호(504C)를 송신한다. 수신기 포트(406D)는 init_in 신호(506D), data_in 신호(502D) 및 request_in 신호(504D)를 송신한다. 수신기 포트(406E)는 init_in 신호(506E), data_in 신호(502E) 및 request_in 신호(504E)를 송신한다. 수신기 포트(406F)는 init_in 신호(506F), data_in 신호(502F) 및 request_in 신호(504F)를 송신한다. 수신기 포트(406G)는 init_in 신호(506G), data_in 신호(502G) 및 request_in 신호(504G)를 송신한다. 수신기 포트(406H)는 init_in 신호(506H), data_in 신호(502H) 및 request_in 신호(504H)를 송신한다.
도 8에 따르면, 송신기 포트(408) 내의 송신기 FIFO(806)는, 멀티플렉서(804A-804C)가 init_in 신호(506) 중 하나, data_in 신호(502) 중 하나 및 request_in 신호(504) 중 하나를 선택하도록, 선택 신호(802)를 사용한다. 전술한 바와 같이, 호스트 프로세서(108)는 프로그램 가능 처리 유닛(106)을 설정하며, 한 프로그램 가능 프로세서(202) 내의 하나의 프로세서 요소로부터의 출력이 논리 연결을 통해 다른 프로그램 가능 프로세서(202) 내의 다른 프로세서 요소에 의하여 처리될 입력일 수 있다. 따라서, 호스트 프로세서(108)는 적절한 송신부로부터 init_in 신호(506), data_in 신호(502) 및 request_in 신호(504)를 선택하도록 송신기 FIFO(806)가 선택 신호(802)를 유지하게 한다. 설명을 돕기 위해 도 2로 돌아가서, 수신기 포트가 프로그램 가능 프로세서(202B)로 데이터를 수신하고 프로그램 가능 프로세서(202B)의 송신기 포트(408)를 통해 프로그램 가능 프로세서(202A)의 수신기 포트로 데이터를 출력할 경우, 호스트 프로세서(108)는 이 수신기 포트로부터의 신호(606)를 선택하도록 이 송신기 포트(408)를 설정할 것이다.
따라서, 선택된 수신기 포트(406){또는 선택된 출력 프로세서 요소(304)}는 논리 연결을 초기화하기 위해 init_in 신호(506)를 사용한다. 일 실시예에 따르면, 이 초기화는 논리 연결에서 사용되는 포트 내의 수신기 FIFO 및 송신기 FIFO의 플러싱을 포함할 수 있다. 따라서, (이 초기화 이전에) 이 FIFO 내에 임의의 데이터가 존재하는 경우, 이 초기화에 의해 데이터가 삭제된다. 또한, 선택된 수신기 포트(406){또는 선택된 출력 프로세서 요소(304)}는 송신기 포트(408)에 대한 송신기 FIFO(806)로의 데이터 입력을 요청하기 위해 request_in 신호(504)를 사용한다. 선택된 수신기 포트(406){또는 선택된 출력 프로세서 요소(304)}는 송신기 FIFO(806)로 데이터를 전송하기 위해 data_in 신호(502)를 사용한다.
또한, 도 8에 도시된 바와 같이, 송신기 포트(408)는 다른 프로그램 가능 프로세서(202){프로그램 가능 프로세서(202B)}의 수신기 포트(406A)로부터 인터페이스 신호를 수신 및 송신한다. 도 9b 내지 9e는 그러한 통신을 도시하고 있다.
도 9b는 (전술한 바와 같은) 데이터의 전송 전에 논리 연결을 생성하기 위해 송신기 포트(408)가 부착된 수신기 포트(406A)로 init_out 신호(514)를 출력하는 것을 도시하고 있다. 도 9c는 수신기 포트(406A)의 수신기 FIFO로의 데이터 입력을 요청하기 위해 송신기 포트(408)가 request_out 신호(512)를 출력하는 것을 도시하고 있다. 도 9d는 응답으로, 수신기 포트(406)의 수신기 FIFO에 공간이 이용가능해진 후에, 수신기 포트(406A)가 송신기 포트(408)에 의해 수신되는 grant_out 신호(516)를 출력하는 것을 도시하고 있다. 도 9e는 응답으로, 송신기 포트(408)가 data_out 신호(510)를 사용하여 송신기 FIFO(806)로부터 수신기 포트(406A)의 수신기 FIFO로 데이터를 출력하는 것을 도시하고 있다.
<프로그램 가능 프로세서 사이의 논리 연결>
도 10은 본 발명의 일 실시예에 따른 송신부 프로그램 가능 프로세서로부터 수신부 프로그램 가능 프로세서로의 소정의 논리 연결에 관한 다양한 루트를 도시하고 있다. 전술한 바와 같이, 호스트 프로세서(108)는 송신부 프로그램 가능 프로세서(202)로부터 수신부 프로그램 가능 프로세서(202)로의 데이터 전송을 위한 다수의 논리 연결을 성립시킬 수 있다. 특히, 제1 프로그램 가능 프로세서(202)의 요소에 의한 하나의 처리 동작의 출력은 제2 프로그램 가능 프로세서(202)의 요소에 의한 다른 처리 동작의 입력으로서 사용될 수 있다.
예를 들어, 프로그램 가능 처리 유닛(106)이 (이하에서 상세히 기술되는) 이미지 처리 모드에 있다고 가정한다. 제1 프로그램 가능 프로세서(202)는 비디오에서의 고스팅을 감소시키는 동작을 수행할 수 있고, 제2 프로그램 가능 프로세서(202)는 제1 프로그램 가능 프로세서(202)로부터 출력을 수신하여 비디오에서의 잡음을 감소시키는 동작을 수행할 수 있다. 제3 프로그램 가능 프로세서(202)는 제2 프로그램 가능 프로세서(202)로부터 출력을 수신하여 비디오에서의 닷 크롤을 감소시키는 동작을 수행할 수 있다. 일 실시예에 따르면, (이하에서 상세히 설명되는 바와 같이) 하나의 프로그램 가능 프로세서(202)가 소정의 동작을 수행하기 위한 전용 하드웨어 가속기를 가질 수 있기 때문에 서로 다른 프로그램 가능 프로세서(202)는 서로 다른 데이터 동작을 수행한다.
또한, 이 예가 다른 프로그램 가능 프로세서(202)로 직접 전송되는 하나의 프로그램 가능 프로세서(202) 내의 동작의 출력을 도시하고 있으나, 본 발명의 실시예들은 이에 한정되지 않는다. 일 실시예에 따르면, 한 프로그램 가능 프로세서(202)는 메모리(104) 중 하나로 동작의 출력을 전송할 수 있다. 따라서, 제2 프로그램 가능 프로세서(202)는 메모리(104)로부터 저장된 데이터를 회수할 수 있다. 제2 프로그램 가능 프로세서(202)가 자신의 동작 전에 제1 동작으로부터의 출력 중 일정량을 필요로 하는 경우 그러한 동작이 사용될 수 있다. 예를 들어, 제2 프로그램 가능 프로세서(202)는 비디오의 다수의 프레임에 걸쳐 시간적 잡음 감소 동작을 수행할 수 있다. 따라서, 제1 프로그램 가능 프로세서(202)로부터의 출력은 미리 정해진 수의 프레임이 처리될 때까지 메모리(108)에 저장된다. 이 예를 계속하면, 제1 프로그램 가능 프로세서(202)는 들어오는 비디오의 고스트 감소 동작을 계속 수행할 수 있으며, 동시에 제2 프로그램 가능 프로세서(202)는 (전술한 바와 같이) 출력된 비디오의 시간적 잡음 감소 동작을 수행할 수 있다. 마찬가지로, 프로그램 가능 처리 유닛(106)은 (이하에서 더 설명되는) 저장 모드 동안 서로 다른 프로그램 가능 프로세서(202)에 걸쳐 다중 동작을 수행할 수 있다.
프로세서의 아키텍처가 (도 2에 도시된 바와 같은) 지점간 구성(point-to-point configuration)을 가지기 때문에, 제1 프로그램 가능 프로세서(202)는 제2 프로그램 가능 프로세서(202)에 직접 연결될 수 없다. 따라서, 다수의 중간 프로그램 가능 프로세서(202) 중 하나를 통한 제1 프로그램 가능 프로세서(202){송신부 프로그램 가능 프로세서(202)}로부터 제2 프로그램 가능 프로세서(202){수신부 프로그램 가능 프로세서(202)}로의 논리 연결이 성립된다.
도 10은 프로그램 가능 프로세서(202A)로부터 프로그램 가능 프로세서(202H)로의 소정의 논리 연결에 관한 5개의 서로 다른 루트와 함께 도 2의 프로그램 가능 처리 유닛(106)을 도시하고 있다.
논리 연결에 관한 제1 루트(1002)는 프로그램 가능 프로세서(202A){송신부 프로그램 가능 프로세서}에서 시작하고, 프로그램 가능 프로세서(202D){제1 중간 프로그램 가능 프로세서}의 포트 링(250D)을 통과하며, 프로그램 가능 프로세서(202H){수신부 프로그램 가능 프로세서}의 포트 링(250H)에서 마친다. 특히, 데이터는 프로그램 가능 프로세서(202A)의 포트 링(250A)의 송신기 포트로부터 프로그램 가능 프로세서(202D)의 포트 링(250D)의 수신기 포트로 전송된다. 프로그램 가능 프로세서(202D)의 포트 링(250D)의 수신기 포트는 {프로그램 가능 프로세서(202D)의 포트 링(250D)을 통해} 프로그램 가능 프로세서(202D)의 포트 링(250D)의 송신기 포트로 데이터를 전송한다. 프로그램 가능 프로세서(202D)의 포트 링(250D)의 이 송신기 포트는 프로그램 가능 프로세서(202H)의 포트 링(250H)의 수신기 포트로 데이터를 전송한다.
논리 연결에 관한 제2 루트(1004)는 프로그램 가능 프로세서(202A){송신부 프로그램 가능 프로세서}에서 시작하고, 프로그램 가능 프로세서(202E){제1 중간 프로그램 가능 프로세서}를 통과하며, 프로그램 가능 프로세서(202H){수신부 프로그램 가능 프로세서}에서 마친다. 특히, 데이터는 프로그램 가능 프로세서(202A)의 포트 링(250A)의 송신기 포트로부터 프로그램 가능 프로세서(202E)의 포트 링(250E)의 수신기 포트로 전송된다. 프로그램 가능 프로세서(202E)의 포트 링(250E)의 수신기 포트는 {프로그램 가능 프로세서(202E)의 포트 링(250E)을 통해} 프로그램 가능 프로세서(202E)의 포트 링(250E)의 송신기 포트로 데이터를 전송한다. 프로그램 가능 프로세서(202E)의 포트 링(250E)의 이 송신기 포트는 프로그램 가능 프로세서(202H)의 포트 링(250H)의 수신기 포트로 데이터를 전송한다.
논리 연결에 관한 제3 루트(1006)는 프로그램 가능 프로세서(202A){송신부 프로그램 가능 프로세서}에서 시작하고, 프로그램 가능 프로세서(202E){제1 중간 프로그램 가능 프로세서}, 프로그램 가능 프로세서(202F){제2 중간 프로그램 가능 프로세서}, 프로그램 가능 프로세서(202G){제3 중간 프로그램 가능 프로세서}를 통과하며, 프로그램 가능 프로세서(202H){수신부 프로그램 가능 프로세서}에서 마친다. 특히, 데이터는 프로그램 가능 프로세서(202A)의 포트 링(250A)의 송신기 포트로부터 프로그램 가능 프로세서(202E)의 포트 링(250E)의 수신기 포트로 전송된다. 프로그램 가능 프로세서(202E)의 포트 링(250E)의 수신기 포트는 {프로그램 가능 프로세서(202E)의 포트 링(250E)을 통해} 프로그램 가능 프로세서(202E)의 포트 링(250E)의 송신기 포트로 데이터를 전송한다. 프로그램 가능 프로세서(202E)의 포트 링(250E)의 이 송신기 포트는 프로그램 가능 프로세서(202F)의 포트 링(250F)의 수신기 포트로 데이터를 전송한다. 프로그램 가능 프로세서(202F)의 포트 링(250F)의 수신기 포트는 {프로그램 가능 프로세서(202F)의 포트 링(250F)을 통해} 프로그램 가능 프로세서(202F)의 포트 링(250F)의 송신기 포트로 데이터를 전송한다. 프로그램 가능 프로세서(202F)의 포트 링(250F)의 이 송신기 포트는 프로그램 가능 프로세서(202G)의 포트 링(250G)의 수신기 포트로 데이터를 전송한다. 프로그램 가능 프로세서(202G)의 포트 링(250G)의 수신기 포트는 {프로그램 가능 프로세서(202G)의 포트 링(250G)을 통해} 프로그램 가능 프로세서(202G)의 포트 링(250G)의 송신기 포트로 데이터를 전송한다. 프로그램 가능 프로세서(202G)의 포트 링(250G)의 이 송신기 포트는 프로그램 가능 프로세서(202H)의 포트 링(250H)의 수신기 포트로 데이터를 전송한다.
논리 연결에 관한 제4 루트(1008)는 프로그램 가능 프로세서(202A){송신부 프로그램 가능 프로세서}에서 시작하고, 프로그램 가능 프로세서(202B){제1 중간 프로그램 가능 프로세서}, 프로그램 가능 프로세서(202C){제2 중간 프로그램 가능 프로세서}, 프로그램 가능 프로세서(202D){제3 중간 프로그램 가능 프로세서}를 통과하며, 프로그램 가능 프로세서(202H){수신부 프로그램 가능 프로세서}에서 마친다. 특히, 데이터는 프로그램 가능 프로세서(202A)의 포트 링(250A)의 송신기 포트로부터 프로그램 가능 프로세서(202B)의 포트 링(250B)의 수신기 포트로 전송된다. 프로그램 가능 프로세서(202B)의 포트 링(250B)의 수신기 포트는 {프로그램 가능 프로세서(202B)의 포트 링(250B)을 통해} 프로그램 가능 프로세서(202B)의 포트 링(250B)의 송신기 포트로 데이터를 전송한다. 프로그램 가능 프로세서(202B)의 포트 링(250B)의 이 송신기 포트는 프로그램 가능 프로세서(202C)의 포트 링(250C)의 수신기 포트로 데이터를 전송한다. 프로그램 가능 프로세서(202C)의 포트 링(250C)의 수신기 포트는 {프로그램 가능 프로세서(202C)의 포트 링(250C)을 통해} 프로그램 가능 프로세서(202C)의 포트 링(250C)의 송신기 포트로 데이터를 전송한다. 프로그램 가능 프로세서(202C)의 포트 링(250C)의 이 송신기 포트는 프로그램 가능 프로세서(202D)의 포트 링(250D)의 수신기 포트로 데이터를 전송한다. 프로그램 가능 프로세서(202D)의 포트 링(250D)의 수신기 포트는 {프로그램 가능 프로세서(202D)의 포트 링(250D)을 통해} 프로그램 가능 프로세서(202D)의 포트 링(250D)의 송신기 포트로 데이터를 전송한다. 프로그램 가능 프로세서(202D)의 포트 링(250D)의 이 송신기 포트는 프로그램 가능 프로세서(202H)의 포트 링(250H)의 수신기 포트로 데이터를 전송한다.
논리 연결에 관한 제5 루트(1010)는 프로그램 가능 프로세서(202A){송신부 프로그램 가능 프로세서}에서 시작하고, 프로그램 가능 프로세서(202B){제1 중간 프로그램 가능 프로세서}, 프로그램 가능 프로세서(202F){제2 중간 프로그램 가능 프로세서}, 프로그램 가능 프로세서(202G){제3 중간 프로그램 가능 프로세서}를 통과하며, 프로그램 가능 프로세서(202H){수신부 프로그램 가능 프로세서}에서 마친다. 따라서, 도시된 바와 같이, 하나 내지 다수의 상이한 루트가 2개의 서로 다른 프로그램 가능 프로세서(202) 사이의 논리 연결을 성립시키는데 사용될 수 있다. 특히, 데이터는 프로그램 가능 프로세서(202A)의 포트 링(250A)의 송신기 포트로부터 프로그램 가능 프로세서(202B)의 포트 링(250B)의 수신기 포트로 전송된다. 프로그램 가능 프로세서(202B)의 포트 링(250B)의 수신기 포트는 {프로그램 가능 프로세서(202B)의 포트 링(250B)을 통해} 프로그램 가능 프로세서(202B)의 포트 링(250B)의 송신기 포트로 데이터를 전송한다. 프로그램 가능 프로세서(202B)의 포트 링(250B)의 이 송신기 포트는 프로그램 가능 프로세서(202F)의 포트 링(250F)의 수신기 포트로 데이터를 전송한다. 프로그램 가능 프로세서(202F)의 포트 링(250F)의 수신기 포트는 {프로그램 가능 프로세서(202F)의 포트 링(250F)을 통해} 프로그램 가능 프로세서(202F)의 포트 링(250F)의 송신기 포트로 데이터를 전송한다. 프로그램 가능 프로세서(202F)의 포트 링(250F)의 이 송신기 포트는 프로그램 가능 프로세서(202G)의 포트 링(250G)의 수신기 포트로 데이터를 전송한다. 프로그램 가능 프로세서(202G)의 포트 링(250G)의 수신기 포트는 {프로그램 가능 프로세서(202G)의 포트 링(250G)을 통해} 프로그램 가능 프로세서(202G)의 포트 링(250G)의 송신기 포트로 데이터를 전송한다. 프로그램 가능 프로세서(202G)의 포트 링(250G)의 이 송신기 포트는 프로그램 가능 프로세서(202H)의 포트 링(250H)의 수신기 포트로 데이터를 전송한다.
설명한 바와 같이, 중간 프로그램 가능 프로세서(202)를 통한 이동은 포트 링(250)의 포트(404)를 통하며, 프로그램 가능 프로세서(202) 내부의 프로세서 요소나 기타 컴포넌트들을 통하지 않는다. 따라서, 중간 프로그램 가능 프로세서(202) 내의 프로세서 요소들은 송신부 프로그램 가능 프로세서(202)로부터 수신부 프로그램 가능 프로세서(202)로 전송되는 데이터에 대하여 어떠한 동작도 수행하지 않는다.
따라서, 이 아키텍처는 구성 가능(configurable)하고 배선에 의해 접속된(hardwired) 지점간 연결들의 조합을 사용한다. 송신기 포트는 미리 정해진 수신부에 연결되며, 이는 프로그램 가능 처리 유닛(106)의 다이(die)의 직접적인 배선을 가능하게 한다. 그러나, 소정의 송신기 포트는 전송된 데이터의 복수의 송신부 중 하나를 선택할 수 있다. 이번에는, 수신기 포트가 다수의 송신기 포트에 이용 가능한 데이터를 만든다. 이 아키텍처는 프로그램 가능 프로세서(202)의 포트 링(250) 내의 제어 및 데이터의 효율적인 전송을 가능하게 한다. 또한, 논리 연결을 통해 초기화 신호를 전송함으로써 데이터의 송신부에서 데이터가 이동할 논리 경로의 단일 지점 소거(single-point clearing)가 가능해지고, 중간 연결이 데이터 전송 전후에 정리되거나 비워질 필요가 없게 된다. 또한, 정해지지 않은 양의 데이터를 전송하고나서 백업되거나 정지되는 논리 연결은, 송신부에서 시작하고 논리 연결을 이동하는 단일 명령으로 소거될 수 있다.
프로그램 가능 처리 유닛의 동작
일 실시예에 따른 프로그램 가능 처리 유닛(106)의 동작이 설명된다.
<프로그램 가능 프로세서 사이의 데이터 전송 동작>
도 11은 본 발명의 일 실시예에 따른 프로그램 가능 처리 유닛 내의 논리 연결의 성립 및 초기화에 관한 흐름도를 도시하고 있다.
블록(1102)에서는, 데이터 전송을 위해 성립될 논리 연결에 관한 구성 데이터가 수신된다. 도 2를 참조하면, 상이한 프로그램 가능 프로세서들(202){송신부 프로그램 가능 프로세서, 중간 프로그램 가능 프로세서(들) 및 수신부 프로그램 가능 프로세서}이 데이터 송신을 위해 성립될 논리 연결에 관한 구성 데이터를 수신한다. 일 실시예에 따르면, 호스트 프로세서(108)는 이 구성 데이터를 내부 전역 버스(212)를 통해 이 프로그램 가능 프로세서들(202)로 전송한다. 일 실시예에 따르면, 호스트 프로세서(108)는 논리 연결의 일부인 프로그램 가능 프로세서(202)로 마이크로코드를 다운로드할 수도 있다. 예를 들면, 호스트 프로세서(108)는 송신부 및/또는 수신부 프로그램 가능 프로세서(202)로 특정 애플리케이션을 다운로드할 수 있다. 제어는 블록(1104)에서 계속된다.
블록(1104)에서는, 논리 연결이 성립된다. 도 6 및 8을 참조하면, (데이터가 논리 연결의 일부로 전송되는) 송신기 포트(408) 및 수신기 포트(406)가 수신된 구성 데이터에 기초하여 논리 연결을 성립시킨다. 전술한 바와 같이, 수신기 포트(406)는 어떠한 grant_out 신호(516)가 멀티플렉서(602)에 의해 선택될지를 결정하기 위해 선택 신호(606)를 사용한다. 예를 들면, 수신기 포트(406A)로 수신되는 데이터가 송신기 포트(408D)로 출력될 경우, 구성 데이터는 송신기 포트(408D)와 관련되는 grant_out 신호(516)를 선택하기 위해 수신기 포트(406A)가 선택 신호(606)를 사용하게 한다. 마찬가지로, 어떠한 request_in 신호(504), data_in 신호(502) 및 init_in 신호(506)가 멀티플렉서(804C), 멀티플렉서(804B) 및 멀티플렉서(804A)에 의하여 각각 선택될 것인지를 결정하기 위하여, 송신기 포트(408)는 선택 신호(802)를 사용한다. 제어는 블록(1106)에서 계속된다.
블록(1106)에서는, 논리 연결이 초기화된다. 도 2, 6 및 8을 참조하면, 이 논리 연결을 시작할 송신부 프로그램 가능 프로세서(202)에 관한 송신기 포트(408)는, 이 논리 연결에 포함되는 다음 송신부 프로그램 가능 프로세서(202)의 수신기 포트(406)로 init_out 신호(514)를 송신한다. 이 수신기 포트(406)는 이 신호를 init_in 신호(506)로서 수신하고, 이 송신부 프로그램 가능 프로세서(202) 내의 송신기 포트로 init_out 신호(514)를 출력한다. 이러한 init_out 신호(514)의 송신 및 init_in 신호(506)의 수신은 논리 연결을 따라 수신부 프로그램 가능 프로세서(202)의 송신기 포트(408)에 도달할 때까지 계속된다. 따라서, 이 초기화 신호는 논리 연결에 포함되는 서로 다른 포트들을 초기화한다. 일 실시예에 따르면, 이 초기화는 논리 연결에서 사용되는 수신기 FIFO 및 송신기 FIFO의 플러싱을 포함할 수 있다. 따라서, 이전의 논리 연결로부터의 이러한 FIFO 내에 임의의 데이터가 존재하는 경우, 이 초기화에 의하여 데이터가 삭제된다.
일 실시예에 따르면, 프로그램 가능 처리 유닛(106) 내의 상이한 프로그램 가능 프로세서(202)의 상이한 컴포넌트들에 의해 일련의 처리 동작들이 수행/실행된다. 제1 처리 동작의 출력이 제2 처리 동작의 입력으로 사용되는 등이다. 전술한 바와 같이, 상이한 프로그램 가능 프로세서(202)로의 데이터 전송을 위한 논리 연결이 성립된다. 따라서, 프로그램 처리 유닛(106)의 하나의 요소로부터 프로그램 처리 유닛(106)의 다른 요소로의 전송 각각에 대하여 논리 연결이 성립된다. 이제 프로그램 가능 처리 유닛(106)에서의 데이터 처리에 관한 일 실시예가 기술된다. 도 12는 본 발명의 일 실시예에 따른 프로그램 가능 처리 유닛에 의한 데이터 처리의 흐름도를 도시하고 있다. 특히, 흐름도(1200)는 본 발명의 일 실시예에 따른 프로그램 가능 처리 유닛(106) 내의 프로그램 가능 프로세서(202) 중 하나에 의한 데이터 처리를 설명한다.
블록(1202)에서는, 데이터의 스트림(stream)이 수신된다. 도 2를 참조하면, 제1 프로그램 가능 프로세서(202)가 다수의 송신부 중 하나로부터 데이터의 스트림을 수신한다. 예를 들어, 프로그램 가능 프로세서(202A)는 {비디오 신호 프로세서(104)와 같은} 외부 송신부로부터 데이터의 스트림을 수신할 수 있다. 또한, 프로그램 가능 프로세서(202A)는 DMA 유닛(204)과 메모리 인터페이스(206)를 통해 메모리(108)로부터 데이터의 스트림을 수신할 수 있다. 제어는 블록(1204)에서 계속된다.
블록(1204)에서는, 제1 프로그램 가능 프로세서에서 데이터의 스트림이 처리된다. 도 2를 참조하면, 제1 프로그램 가능 프로세서(202) 내의 컴포넌트{예컨대, 프로세서 요소(302, 304, 306A-306C) 중 하나 또는 가속기 유닛(310A-310B) 중 하나}가 제1 처리 동작을 수행한다. 입력 프로세서 요소(302)는 수신기 포트(406)를 통해 데이터를 수신한다. 일 실시예에 따르면, 임의의 프로세서 요소(302, 304, 306A-306C)가 수신된 데이터에 처리 동작을 수행/실행한다. 일 실시예에 따르면, 처리 동작이 관련되는 논리 연결의 설정의 일부로서, 호스트 프로세서(214)가 제1 프로그램 가능 프로세서(202)의 어떠한 컴포넌트가 처리 동작을 수행/실행할 것인지를 가리킬 수 있다. 따라서, 입력 프로세서 요소(302)는 메모리(314)에 데이터를 저장할 수 있으며, 지정된 컴포넌트는 데이터를 회수하고 그러한 데이터에 대해 제1 처리 동작을 수행/실행한다. 제1 프로그램 가능 프로세서(202)는 데이터의 스트림의 일부의 처리를 계속하는 동시에 데이터의 스트림의 다른 일부의 처리 결과를 출력할 수 있다. 예를 들면, 제1 프로그램 가능 프로세서(202)는 비디오의 후속 프레임의 처리를 계속하는 동시에 비디오의 첫번째 프레임의 처리 결과를 출력할 수 있다. 제어는 블록(1206)에서 계속된다.
블록(1206)에서는, 처리 동작의 결과가 논리 연결을 통해 다른 프로그램 가능 프로세서 또는 메모리로 전송/전달된다. 도 2 및 3을 참조하면, {제1 처리 동작이 수행/실행되는 프로그램 가능 프로세서(202)의} 출력 프로세서 요소(304)가 설정된 논리 연결을 통한 메모리(108) 또는 다른 프로그램 가능 프로세서(202)로의 설정된 논리 연결의 일부인 송신기 포트(408)를 통해 처리 동작의 출력을 전송/전달한다. 제어는 블록(1208)에서 계속된다.
블록(1208)에서는, 다른 프로그램 프로세서에서 결과가 처리된다. {블록(1204)에서 설명된} 제1 프로그램 가능 프로세서에서의 처리와 마찬가지로, 다른 프로그램 가능 프로세서(202) 내의 컴포넌트{예컨대, 프로세서 요소(302, 304, 306A-306C) 중 하나 또는 가속기 유닛(310A-310B) 중 하나}가 다른 이미지 처리 동작을 수행한다. 제어는 블록(1210)에서 계속된다.
블록(1210)에서는, 데이터의 스트림에 대한 처리 동작의 완료 여부가 결정된다. 특히, 데이터의 스트림의 일부를 처리하는 현재 프로그램 가능 프로세서(202)가, 호스트 프로세서(214)로부터 수신된 구성 데이터에 기초하여 자신의 동작의 출력이 논리 연결을 통해 메모리(108)로 전송될 것인지 다른 프로그램 가능 프로세서(202)로 전송될 것인지를 결정한다. 특히, 호스트 프로세서(214)는 데이터의 스트림을 수신하고 5개의 서로 다른 프로그램 가능 프로세서(202)에서 5개의 서로 다른 압축/저장 처리 동작을 수행하기 위해 프로그램 가능 처리 유닛(106)을 설정할 수 있다. 따라서, 호스트 프로세서(214)는 소정의 순서로 5개의 서로 다른 프로그램 가능 프로세서(202)로 데이터를 전송하기 위해 서로 다른 논리 연결을 설정한다. 데이터의 스트림에 대한 처리 동작이 완료되지 않았다고 결정한 후, 제어는 블록(1006)에서 계속되며, 처리 결과는 메모리(108) 또는 다른 프로그램 가능 프로세서(202)로 출력된다. 블록(1206)의 동작은 데이터의 스트림에 대한 처리 동작이 완료될 때까지 계속된다.
블록(1212)에서는, 데이터의 스트림에 대한 처리 동작이 완료되었다고 결정한 후 결과가 출력된다. 도 2를 참조하면, 일 실시예에 따르면, 현재 모드가 저장 모드인 경우, 데이터의 스트림을 처리하기 위한 프로그램 가능 프로세서들의 체인에서 최종 프로그램 가능 프로세서(202)가 메모리(108)로 결과를 출력한다. 도 1을 참조하면, 일 실시예에 따르면, 현재 모드가 이미지 처리 모드인 경우, 최종 프로그램 가능 프로세서(202)는 I/O 인터페이스(208)를 통해 비디오 디스플레이 프로세서(110)로 결과를 출력한다.
이제 핸드셰이크 프로토콜에 기초한 프로그램 가능 프로세서(202)의 서로 다른 포트 사이에서의 데이터 전송을 위한 동작의 일 실시예가 설명된다. 특히, 도 13a 및 13b는 본 발명의 일 실시예에 따른 프로그램 가능 프로세서 내의 상이한 포트의 메모리 사이의 통신의 흐름도를 도시하고 있다. 제한이 아닌 예시의 방식으로, 이러한 상이한 포트 내의 FIFO 메모리들이 2의 깊이를 가지는(즉, 2-엔트리 FIFO) 경우의 흐름도(1300)와 흐름도(1330)의 동작들이 설명된다. 도 13a는 포트의 메모리로의 데이터 수신에 관한 흐름도이고, 도 13b는 포트의 메모리로부터의 데이터 전송에 관한 흐름도이다.
블록(1302)에서는, 데이터 수신 요청이 프로그램 가능 프로세서의 포트 링의 수신기 포트로 수신된다. 도 6을 참조하면, 수신기 포트(406)는 request_in 신호(504)를 통해 데이터 수신 요청을 수신한다. 전술한 바와 같이, 수신기 포트(406)에 연결된 송신기 포트(408)가 이 요청을 전송한다. 제어는 블록(1304)에서 계속된다.
블록(1304)에서는, 수신기 포트의 수신기 FIFO가 가득 찼는지(full) 여부가 결정된다. 도 6을 참조하면, 수신기 포트(406)는 수신기 FIFO(604)가 가득 찼는지 여부를 결정한다. 수신기 포트(406)의 수신기 FIFO(604)가 가득 찼다고 결정한 후, 제어는 이 결정이 다시 이루어지는 블록(1304)에서 계속된다. 일 실시예에 따르면, 이 요청은 미리 정해진 시간 이후에 중단될 수 있으며, 호스트 프로세서(108)로 경보(alarm)가 발해지고 흐름도(1300)의 동작이 중단된다.
블록(1306)에서는, 수신기 포트(406)의 수신기 FIFO(604)가 가득 차지 않았다고 결정한 후, 수신기 FIFO가 반이 찼는지(one-half full) 여부가 결정된다. 전술한 바와 같이, 수신기 FIFO(604)는 2의 깊이를 가진 것으로 기술된다. 도 6을 참조하면, 수신기 포트(406)는 수신기 FIFO(604)가 반이 찼는지 여부를 결정한다. 즉, 수신기 포트(406)는 수신기 FIFO(604)가 비었는지, 아니면 하나의 엔트리에 데이터를 가지는지 여부를 결정한다. 수신기 FIFO가 반도 차지 않았다고(즉, 수신기 FIFO가 비었다고) 결정한 후, 제어는 블록(1310)에서 계속되며, 이는 이하에서 상세히 설명된다.
블록(1308)에서는, 수신기 FIFO가 반이 찼다고 결정된 후, 수신기 FIFO의 제1 엔트리에 저장된 데이터가 수신기 FIFO의 제2 엔트리로 이동된다. 도 6을 참조하면, 수신기 포트(406)는 제1 엔트리에 저장된 데이터를 수신기 FIFO(604)의 제2 엔트리로 이동시킨다. 제어는 블록(1310)에서 계속된다.
블록(1310)에서는, 요청 송신기 포트(수신기 포트로의 데이터 전송을 요청하는 송신기 포트)로 승인(grant)이 전송된다. 도 6을 참조하면, 수신기 포트(406)는 grant_in 신호(508)를 통해 송신기 포트(408)로 승인을 전송하며, 그에 의하여 송신기 포트(408)가 수신기 FIFO(604)로 데이터를 전송할 수 있음을 가리킨다. 제어는 블록(1312)에서 계속된다.
블록(1312)에서는, 수신된 데이터가 수신기 포트의 수신기 FIFO로 저장된다. 도 6을 참조하면, 수신기 포트(406)는 data_in 신호(502)를 통해 송신기 포트(408)로부터 수신된 데이터를 수신기 FIFO(604)의 제1 엔트리로 저장한다.
이제 포트의 메모리로부터의 데이터 전송의 일 실시예가 도 13b의 흐름도(1330)와 관련하여 설명된다. 블록(1332)에서는, 수신기 포트로의 데이터 출력 요청이 전송된다. 도 8을 참조하면, 송신기 포트(408)가 request_out 신호(512)를 통해 {송신기 포트(408)가 연결된} 수신기 포트(406)로 데이터 출력 요청을 전송한다. 제어는 블록(1334)에서 계속된다.
블록(1334)에서는, 수신기 포트로부터 승인이 수신되었는지 여부가 결정된다. 도 8을 참조하면, 송신기 포트(408)는 grant_out 신호(516)의 값에 기초하여 수신기 포트(406)로부터 승인이 수신되었는지 여부를 결정한다. 수신기 포트(406)로부터 승인이 수신되지 않았다고 결정한 후, 제어는 수신기 포트(408)가 이 결정을 다시 하는 블록(1334)에서 계속된다. 일 실시예에 따르면, 이 승인 검사는 미리 정해진 시간 이후에 중단될 수 있으며, 호스트 프로세서(108)로 경보가 발해지고 흐름도(1330)의 동작이 중단된다.
블록(1336)에서는, 수신기 포트로부터 승인이 수신되었다고 결정한 후, 송신기 FIFO가 반이 찼는지 여부가 결정된다. 도 8을 참조하면, 송신기 포트(408)는 송신기 FIFO(706)가 반이 찼는지 여부를 결정한다. 흐름도(1330)의 동작들이 초기화되었기 때문에, 송신기 FIFO(706)가 비지 않는다고 가정한다.
블록(1338)에서는, 송신기 FIFO가 반이 차지 않았다고(송신기 FIFO가 가득 찼다고) 결정한 후, 송신기 FIFO의 제2 엔트리로부터의 데이터가 수신기 FIFO로 출력된다. 도 8을 참조하면, 송신기 포트(408)는 송신기 FIFO(706)의 제2 엔트리로부터의 데이터를 data_out 신호(510)를 통해 수신기 FIFO로 출력하며, 그에 의해 흐름도(1330)의 동작이 완료된다.
블록(1340)에서는, 송신기 FIFO가 반이 찼다고 결정한 후, 송신기 FIFO의 제1 엔트리로부터의 데이터가 수신기 FIFO로 출력된다. 도 8을 참조하면, 송신기 포트(408)는 송신기 FIFO(706)의 제1 엔트리로부터의 데이터를 data_out 신호(510)를 통해 수신기 FIFO로 출력하며, 그에 의해 흐름도(1330)의 동작이 완료된다.
흐름도(1300)와 흐름도(1330)가 서로 다른 포트 링의 일부인 수신기 포트 및 송신기 포트 사이의 통신을 설명하고 있으나, 설명된 핸드셰이크 프로토콜은 동일한 포트 링의 일부인 수신기 포트 및 송신기 포트 사이의 통신에도 적용할 수 있다. 또한, 그러한 핸드셰이크 프로토콜 동작들은 입력 프로세서 요소(302)로 데이터를 입력하고 출력 프로세서 요소(304)로 데이터를 출력하는데 적용할 수 있다.
따라서, 도 13a 및 13b에서 설명된 바와 같이, 일 실시예에 따르면, 이미지 처리 동작에 적합한 데이터 구동 아키텍처는, 논리 연결에 적합한 상이한 포트를 통해 데이터를 전송하기 위한 이 핸드셰이크 프로토콜에 기초한다. 버블(bubble)은 데이터 트랜잭션이 일어나지 않는(즉, 소정의 클럭 주기에서 데이터가 이동하지 않는) 클럭 주기이다. 예를 들면, 논리 연결의 처음에는 데이터가 전송될 준비가 되어있지 않으며, 논리 연결의 마지막에는 데이터가 회수되지 않는다. 따라서, 데이터가 논리 연결로 넣어지지 않아서 논리 연결에 빈 장소가 존재할 수 있다. 또한, 설명한 바와 같이, 송신부 프로그램 가능 프로세서 또는 수신부 프로그램 가능 프로세서에서 데이터 정지 조건 때문에 논리 연결에 버블이 형성된 경우, 데이터는 단일 클럭 주기 동안 중단된다. 즉, 수신기 포트 및 송신기 포트 내의 FIFO 메모리는 논리 연결에서 논리 연결 내의 데이터 흐름의 중단 및 재개로부터 발생하지 않는 버블을 가능하게 한다. 본 발명의 실시예들은 버블이 버블 너머의 논리 연결의 양 단부에서 지연을 일으키지 않는 것이다. 버블은 프로그램 가능 처리 유닛(106)의 (버블 자체에 관련된 클럭 주기의 수보다 회복하는데 더 많은 클럭 주기를 요구할 수 있는) 재동기화(resync)를 요구하지 않는다.
<프로그램 가능 처리 유닛의 다중 모드 동작>
이제 프로그램 가능 처리 유닛(106)의 다중 모드 동작이 기술된다. 도 14는 본 발명의 일 실시예에 따른 프로그램 가능 처리 유닛의 다중 모드 동작의 흐름도를 도시하고 있다.
흐름도(1400)의 블록(1402)에서, 비디오가 수신된다. 도 1의 실시예를 참조하면, 프로그램 가능 처리 유닛(106)은 비디오 신호 프로세서(104)로부터 I/O 인터페이스(208)를 통해 비디오를 수신한다. 일 실시예에 따르면, 수신된 신호는 디지털 데이터의 스트림이다.
블록(1404)에서는, 시스템이 저장 모드에 있는지 여부가 결정된다. 도 2의 실시예를 참조하면, 호스트 프로세서(214)가 이 결정을 한다. 일 실시예에 따르면, 시스템(100)은 1) 저장 모드 또는 2) 이미지 처리 모드 둘 중 하나이다. 호스트 프로세서(214)는 시스템(100)의 사용자로부터의 입력에 기초하여 이 결정을 한다. 일 실시예에 따르면, 시스템(100)은 사용자가 원격 제어를 사용하여 현재 모드를 선택하는 텔레비전(또는 텔레비전에 연결된 미디어 센터 또는 셋톱 박스의 일부) 내에 존재한다. 예를 들면, 사용자는 비디오 디스플레이(112)에 비디오의 디스플레이를 잠시 멈출 때 시스템(100)이 저장 모드에 있게 할 수 있다. 또한, 사용자는 비디오 디스플레이(112) 상에 디스플레이되는 비디오를 되감을 때 시스템(100)이 저장 모드에 있게 할 수 있다. 따라서, 호스트 프로세서(214)는 사용자로부터 이 입력을 수신한다. 일 실시예에 따르면, 시스템(100) 내의 I/O 로직(도시되지 않음)이 시스템(100)에 관한 입력을 수신하고 처리할 수 있다. 그러한 I/O 로직은 이 입력을 호스트 프로세서(214)로 전송할 수 있다.
일 실시예에 따르면, 시스템(100)의 현재 모드는 메모리(108)가 비디오를 저장하지 않을 때까지 저장 모드로 유지된다. 예를 들면, 사용자가 비디오 디스플레이(112) 상의 디스플레이의 멈춤 동작을 중단하면(디스플레이를 재개하면), 시스템(100)은 메모리(108)가 저장된 비디오를 포함하지 않을 때까지 저장 모드로 유지된다. 따라서, 메모리(108)가 저장된 비디오를 포함하는 경우, 시스템(100)은 사용자가 빨리감기 동작(예컨대, 상업광고 건너뛰기)을 수행할 때까지 저장 모드로 유지될 수 있다. 그러한 동작은 메모리(108)로부터의 비디오의 출력 속도가 들어오는 비디오의 입력 속도를 초과하도록 한다.
시스템(100)의 현재 모드가 저장 모드가 아니라고(이미지 처리 모드라고) 결정한 후, 제어는 블록(1412)에서 계속되며, 이는 이하에서 상세히 설명된다. 시스템(100)의 현재 모드가 저장 모드라고 결정한 후, 제어는 블록(1406) 및 블록(1410)에서 계속되며, 이는 지금 설명된다.
블록(1406)에서는, 비디오가 압축된다. 도 2 및 3의 실시예를 참조하면, 하나 이상의 프로그램 가능 프로세서(202)의 하나 이상의 프로세서 요소가 비디오를 압축한다. 일 실시예에 따르면, 비디오의 압축의 일부로서, 다수의 다양한 잡음 감소 동작이 수행될 수 있다. 일 실시예에 따르면, 비디오 압축은 이미지 크기 조정, 프레임 속도 감소 등을 포함할 수 있다. 설명을 돕기 위해 도 2로 돌아가서, 프로그램 가능 프로세서(202A)의 프로세서 요소는 잡음 감소 동작을 수행할 수 있다. 프로그램 가능 프로세서(202E)는 이 잡음 감소 동작의 출력을 수신할 수 있다. 프로그램 가능 프로세서(202E)의 프로세서 요소는 이미지 크기 조정 동작을 통해 비디오에서 이미지를 축소시킬 수 있다. 프로그램 가능 프로세서(202H)는 이 이미지 크기 조정 동작으로부터의 출력을 수신할 수 있다. 프로그램 가능 프로세서(202H)의 프로세서 요소는 프레임 속도 감소 동작을 통해 비디오를 더 압축할 수 있다.
따라서, 이 예에서 설명된 바와 같이, 일 실시예에 따르면, 호스트 프로세서(214)는 적절한 프로그램 가능 프로세서(202)로 적절한 마이크로코드를 다운로드할 수 있다. 특히, 호스트 프로세서(214)는 시스템(100)의 현재 모드가 변할 때 프로그램 가능 프로세서(202)로 마이크로코드를 다운로드할 수 있다. 예를 들어, 프로그램 가능 프로세서(202)의 프로세서 요소가 이미지 처리 모드의 일부로서 (이하에서 더 설명되는 바와 같이) 강화된 비디오 처리 동작을 수행하도록 설정되었다고 가정한다. 따라서, 시스템(100)의 현재 모드가 저장 모드로 변경된 후, 호스트 프로세서(214)는 프레임 속도 감소 동작을 위해 프로그램 가능 프로세서(202H)로 마이크로코드를 다운로드할 수 있다.
또한, 호스트 프로세서(214)는 (도 10의 설명과 관련하여 전술한 바와 같이) 처리를 위해 프로그램 가능 프로세서(202) 사이의 논리 연결을 설정할 수 있다. 일 실시예에 따르면, 적어도 하나의 프로그램 가능 프로세서(202)가 결과를 메모리(108)에 저장하도록 설정될 수 있으며, 이는 이후 다른 프로그램 가능 프로세서(202)에 의하여 회수된다. 예를 들면, 다수의 비디오 프레임에 걸쳐 압축 동작 중 하나가 수행된 경우, 소정의 수의 비디오 프레임은 다른 프로그램 가능 프로세서(202)에 의한 처리 전에 메모리(108)에 저장될 수 있다.
서로 다른 압축 동작을 수행하는 서로 다른 프로그램 가능 프로세서 내의 서로 다른 프로세서 요소에 관한 이상의 예로 돌아가서, 호스트 프로세서(214)는 I/O 인터페이스(208)로부터 프로그램 가능 프로세서(202A)로의 논리 연결을 성립시킨다. 또한, 호스트 프로세서(214)는 프로그램 가능 프로세서(202A)로부터 프로그램 가능 프로세서(202E)로의 논리 연결을 성립시킨다. 또한, 호스트 프로세서(214)는 프로그램 가능 프로세서(202E)로부터 프로그램 가능 프로세서(202H)로의 논리 연결을 성립시킨다. 제어는 블록(1408)에서 계속된다.
블록(1408)에서는, 압축된 비디오가 저장된다. 도 2의 실시예를 참조하면, 프로그램 가능 프로세서(202) 중 하나가 압축된 비디오를 저장한다. 전술한 바와 같이, 일 실시예에 따르면, 적어도 하나의 프로그램 가능 프로세서(202)에 의하여 비디오에 다수의 압축 동작이 수행된다. 압축 동작을 완료하는 프로그램 가능 프로세서(202)는 압축된 비디오를 메모리(108)에 저장할 수 있다. 블록(1406)과 관련하여 전술한 예로 돌아가서, 프레임 속도 감소 동작의 완료 후, 프로그램 가능 프로세서(202)는 이 결과를 {전술한 바와 같이 소정의 프로그램 가능 프로세서(202)와 메모리(108) 사이의} 논리 연결을 통해 메모리(108)로 저장한다.
블록(1410)에서는, 컨트롤 입력에 기초하여 (강화된 비디오 처리와 무관하게) 비디오가 디스플레이된다. 전술한 바와 같이, 일 실시예에 따르면, 시스템(100)은 텔레비전 또는 기타 영상 장치의 일부이다. 그러한 장치의 사용자는 비디오 디스플레이(112) 상의 비디오의 디스플레이를 제어한다. 예를 들면, 사용자는 원격 제어를 사용하여 비디오 디스플레이(112) 상에서 비디오를 멈춤, 재생, 빨리감기할 수 있다. 따라서, 컨트롤 입력은 사용자로부터 수신되고 호스트 프로세서(214)로 전송된다. 컨트롤 입력이 비디오를 재생하는 것인 경우, 호스트 프로세서(214)는 메모리(108)에 저장된 비디오의 압축을 해제하고, 비디오 디스플레이(112) 상의 디스플레이를 위해 그러한 비디오를 비디오 디스플레이 프로세서(110)로 출력하기 위한 다수의 논리 연결을 성립시킨다.
예시의 목적으로, 메모리(108)에 저장된 비디오를 압축하기 위해 이미지 크기 조정 동작과 프레임 속도 감소 동작이 수행된다고 가정한다. 따라서, 호스트 프로세서(214)는 압축 해제 동작을 수행할 프로그램 가능 프로세서(202) 사이의 논리 연결을 성립시킨다. 예를 들면, 메모리(108)와 프로그램 가능 프로세서(202F) 사이에 논리 연결이 성립될 수 있다. 프로그램 가능 프로세서(202F)의 프로세서 요소는 메모리(108)로부터 압축된 비디오를 회수하여, {예컨대, 내삽법(interpolation)을 사용하여} 비디오로 프레임을 삽입할 수 있다. 프로그램 가능 프로세서(202F)와 프로그램 가능 프로세서(202D) 사이에 다른 논리 연결이 성립될 수 있다. 프로그램 가능 프로세서(202F)로부터의 결과로부터의 비디오가 성립된 논리 연결을 통해 프로그램 가능 프로세서(202D)로 전송된다. 프로그램 가능 프로세서(202D)는 비디오의 이미지 크기를 증가시키기 위해 이미지 크기 조정 동작을 수행할 수 있다. 프로그램 가능 프로세서(202D)와 I/O 인터페이스(208) 사이에 또 다른 논리 연결이 성립될 수 있다. 프로그램 가능 프로세서(202D)로부터의 결과로부터의 비디오가 성립된 논리 연결을 통해 I/O 인터페이스(208)로 전송된다. 비디오는 거기서부터 비디오 디스플레이 프로세서(110)로 출력된다.
다수의 압축 동작과 다수의 압축 해제 동작 사이에 일대일 관계가 존재하도록 설명되었으나, 실시예들은 이에 한정되지 않는다. 예시를 위해 이상의 예로 돌아가서, 일 실시예에 따르면, 비디오로 프레임을 다시 삽입하는 것은 디스플레이 및 압축 해제 실행을 증가시키기 위해 수행되지 않는다.
{블록(1410)에서} 컨트롤 입력에 기초한 비디오의 디스플레이에 대하여, 비디오 디스플레이(112) 상의 비디오의 디스플레이는 멈추어질 수 있다. 따라서, 전술한 압축 해제 동작은 수행되지 않는다. 또한, 프로그램 가능 처리 유닛(106)은 {블록(1406)과 블록(1408)에서 전술한 바와 같이} 메모리(108)로 들어오는 비디오의 압축 및 저장을 계속한다.
컨트롤 입력에 기초하여, 비디오 디스플레이(112) 상의 비디오의 디스플레이는 재생될 수 있다. 호스트 프로세서(214)는 비디오가 재생될 것이라는 것을 가리키는 컨트롤 입력을 수신한다. 따라서, 호스트 프로세서(214)는 컨트롤 입력이 변경되거나 메모리(108)가 더 이상 저장된 비디오를 포함하지 않을 때까지 이전의 프레임을 역순으로 압축 해제 및 디스플레이하도록 프로그램 가능 프로세서(108)를 설정한다.
컨트롤 입력에 기초하여, 비디오 디스플레이(112) 상의 비디오의 디스플레이는 들어오는 비디오가 디스플레이되는 것일 때까지 빨리감기될 수 있다. 예를 들어, 시스템(100)의 사용자는 상업광고를 건너뛰기를 원할 수 있다. 따라서, 호스트 프로세서(214)는 비디오가 재생될 때보다 빠른 속도로 비디오를 압축 해제 및 디스플레이하도록 프로그램 가능 프로세서(108)를 설정할 수 있다.
흐름도(1400)로 돌아가서, 블록(1412)에서는, 시스템(100)이 저장 모드가 아니라고(이미지 처리 모드라고) 결정한 후, 강화된 비디오 처리가 수행된다. 도 2의 실시예를 참조하면, 하나 이상의 프로그램 가능 프로세서(202)의 하나 이상의 프로세서 요소가 강화된 비디오 처리를 수행한다. 일 실시예에 따르면, 강화된 비디오 처리는 고스트 감소 동작, 잡음 감소 동작(공간적, 시간적 등), 닷 크롤 감소 동작 등을 포함한다.
설명을 돕기 위해 도 2로 돌아가서, 일 실시예에 따르면, 호스트 프로세서(214)는 (전술한 바와 같이) 강화된 비디오 처리와 관련된 다른 프로그램 가능 프로세서(202)와 I/O 인터페이스(208) 사이에 논리 연결을 성립시킨다. 또한, 호스트 프로세서(214)는 강화된 비디오 처리 동작의 일부로서 실행될 수 있는 마이크로코드를 다운로드할 수 있다. 예를 들어, 프로그램 가능 프로세서(202B)가 고스트 감소 동작을 수행하도록 설정되고, 프로그램 가능 프로세서(202H)가 공간적 잡음 감소 동작을 수행하도록 설정되고, 프로그램 가능 프로세서(202C)가 시간적 잡음 감소 동작을 수행하도록 설정되며, 프로그램 가능 프로세서(202E)가 닷 크롤 감소 동작을 수행하도록 설정된다고 가정한다.
따라서, 호스트 프로세서(214)는 프로그램 가능 프로세서(202B), 프로그램 가능 프로세서(202H), 프로그램 가능 프로세서(202C) 및/또는 프로그램 가능 프로세서(202E)로 마이크로코드를 다운로드할 수 있다. 또한, 호스트 프로세서(214)는 (데이터가 수신되는) I/O 인터페이스(208)로부터 (고스트 감소 동작이 수행되는) 프로그램 가능 프로세서(202B)로의 논리 연결을 성립시킨다. 또한, 호스트 프로세서(214)는 프로그램 가능 프로세서(202B)로부터 (공간적 잡음 감소 동작이 수행되는) 프로그램 가능 프로세서(202H)로의 논리 연결을 성립시킨다. 또한, 시간적 잡음 감소 동작이 비디오 데이터의 다수의 프레임에 걸쳐 수행된다고 가정하면, 호스트 프로세서(214)는 프로그램 가능 프로세서(202H)로부터 (시간적 잡음 감소 동작 수행 전에 비디오 데이터의 다수의 프레임을 저장하기 위한) 메모리(108)로의 논리 연결을 성립시킨다. 또한, 호스트 프로세서(214)는 메모리(108)로부터 프로그램 가능 프로세서(202C)로의 논리 연결을 성립시킨다. 따라서, 프로그램 가능 프로세서(202H)의 출력으로부터 비디오 데이터의 소정의 수의 프레임이 메모리(108)에 저장된 후, (시간적 잡음 감소 동작이 수행되는) 프로그램 가능 프로세서(202C)에 프레임이 입력된다. 또한, 호스트 프로세서(214)는 프로그램 가능 프로세서(202C)로부터 (닷 크롤 감소 동작이 수행되는) 프로그램 가능 프로세서(202E)로의 논리 연결을 성립시킨다. 또한, 호스트 프로세서는 프로그램 가능 프로세서(202E)로부터 비디오 데이터가 디스플레이를 위해 출력되는 I/O 인터페이스(208)로의 논리 연결을 성립시킨다.
블록(1414)에서는, 강화된 비디오 처리된 비디오가 디스플레이된다. 도 1 및 2의 실시예를 참조하면, I/O 인터페이스(208)는 비디오 디스플레이 프로세서(110)로 디스플레이를 위한 비디오 데이터를 출력한다.
또한, 일 실시예에 따르면, 시스템(100)의 현재 모드가 변경되면, 현재 동작이 중단(interrupt)되고, 결정이 블록(1404)에서 시스템의 모드와 관련을 가지는 지점 1에서 제어가 계속된다. 예를 들어, 현재 모드가 이미지 처리 모드이고 사용자가 비디오 디스플레이(112) 상의 디스플레이를 멈추기 위해 멈춤 버튼을 선택한 경우, 현재 모드는 저장 모드로 변경되고 제어는 중단되며 지점 1에서 계속된다.
흐름도(1400)가 저장 전의 비디오의 압축을 도시하고 있으나, 본 발명의 실시예들은 이에 한정되지 않는다. 다른 실시예에 따르면, 비디오는 수신되고 압축 동작 없이 메모리(108)에 저장된다.
발명의 상세한 설명에서, 본 발명을 완전히 이해시키기 위해, 로직 구현, 조작 부호(opcode), 연산 대상을 특정하기 위한 수단, 리소스 분할/공유/복제 구현, 시스템 컴포넌트의 유형 및 상호관계, 및 로직 분할/집적 선택과 같은 다수의 구체적인 세부 사항이 개시된다. 그러나, 그러한 구체적인 세부 사항 없이도 본 발명의 실시예들이 당업자에 의하여 실시될 수 있음을 알 것이다. 다른 예에서, 본 발명의 실시예들을 모호하게 하지 않기 위해, 컨트롤 구조, 게이트 레벨 회로(gate level circuit) 및 소프트웨어 명령 시퀀스 전체를 상세히 제시하지는 않았다. 당업자라면 포함된 설명으로 부당한 실험 없이 적절한 기능을 구현할 수 있을 것이다.
명세서에서 "일 실시예"라는 언급은, 기술된 실시예가 특정 특징, 구조 또는 특성을 포함할 수 있으나 모든 실시예가 특정 특징, 구조 또는 특성을 포함하는 것은 아님을 나타낸다. 또한, 그러한 표현은 꼭 동일한 실시예를 참조하는 것은 아니다. 또한, 일 실시예와 관련하여 특정 특징, 구조 또는 특성이 기술된 경우, 명시적인 기술 여부에 관계없이 다른 실시예와 관련된 그러한 특징, 구조 또는 특성에 영향을 미치는 것은 당업자의 지식 내임이 자명하다.
본 발명의 실시예들은 머신 판독 가능 매체에 의하여 제공되는 머신 실행 가능 명령 내에서 구현될 수 있는 특징, 방법 또는 과정을 포함한다. 머신 판독 가능 매체에는 머신(예컨대, 컴퓨터, 네트워크 장치, 개인 휴대 정보 단말기, 제조 장비, 하나 이상의 프로세서 세트를 구비한 임의의 장치 등)에 의해 액세스될 수 있는 형태로 정보를 제공(즉, 저장 및/또는 전송)하는 임의의 메커니즘이 포함된다. 일 실시예에 따르면, 머신 판독 가능 매체에는 휘발성 및/또는 비휘발성 매체{예컨대, ROM(read only memory), RAM(random access memory), 자기 디스크 저장 매체, 광 저장 매체, 플래시 메모리 장치 등)와 전기, 광, 음향 또는 기타 형태의 전파 신호(예컨대, 캐리어 파장, 적외선 신호, 디지털 신호 등)}가 포함된다.
그러한 명령은, 일반 목적 또는 특수 목적의, 명령으로 프로그램된 프로세서가 본 발명의 실시예들의 방법 또는 과정을 수행하도록 하는데 사용된다. 대안으로, 본 발명의 실시예들의 특징 또는 동작은 동작을 수행하기 위한 배선에 의해 접속된 로직을 포함하는 구체적인 하드웨어 컴포넌트 또는 구체적인 하드웨어 컴포넌트와 프로그램된 데이터 처리 컴포넌트의 임의의 조합에 의하여 수행된다. 본 발명의 실시예들은 소프트웨어, 데이터 처리 하드웨어, 데이터 처리 시스템 구현 방법, 및 다양한 처리 동작들을 포함하며, 본 명세서에서 상세히 설명된다.
다수의 도면은 본 발명의 실시예들에 따른 프로그램 가능 비디오 처리/저장 아키텍처에 적합한 장치 및 시스템의 블록도를 도시하고 있다. 다수의 도면은 프로그램 가능 비디오 처리/저장 아키텍처에 적합한 동작들을 나타내는 흐름도를 도시하고 있다. 흐름도의 동작들은 블록도에서 도시된 시스템/장치를 참조하여 설명될 것이다. 그러나, 흐름도의 동작들이 블록도를 참조하여 설명된 것과 다른 시스템 및 장치의 실시예에 의해 수행될 수 있으며, 시스템/장치를 참조하여 설명된 실시예들이 흐름도를 참조하여 설명된 것과 다른 동작들을 수행할 수 있음을 알아야 한다.
기술된 실시예들에 대한 다양한 치환의 관점에서, 이 상세한 설명은 예시의 목적일 뿐이며, 발명의 범위를 한정하는 것으로 이해되어서는 안된다. 예시의 목적으로, 프로그램 가능 처리 유닛(106)에 관해 동작들이 기술되었으나, 본 발명의 실시예들은 이에 한정되지 않는다. 예를 들어, 일 실시예에 따르면, 다중 모드 동작은 단일한 일반 목적 프로세서에서 실행되는 소프트웨어 애플리케이션에 의해 수행될 수 있다. 또한, 비디오의 처리에 관해 기술되었으나, 본 발명의 실시예들은 이에 한정되지 않는다. 예를 들어, 일 실시예에 따르면, 다중 모드 동작은 오디오, 오디오와 비디오의 조합 등과 같은 다른 유형의 데이터 처리에도 적용될 수 있다. 기술된 실시예들에 대한 가능한 치환들을 더 예시하기 위해, 다중 모드 동작이 2개의 모드에 관하여 기술되었으나, 본 발명의 실시예들은 이에 한정되지 않으며 더 많은 수의 모드가 존재할 수 있다. 예를 들어, 일 실시예에 따르면, 프로그램 가능 처리 유닛(106)의 세번째 모드는 비디오 처리의 기타 특징을 포함할 수 있다. 또한, RF 신호가 수신되고 아날로그 신호가 생성되는 아날로그 튜너에 관해 실시예들이 기술되었으나, 본 발명의 실시예들은 이에 한정되지 않는다. 예를 들어, 일 실시예에 따르면, 비디오 튜너(102)는 RF 신호를 수신하고 디지털 신호를 생성하기 위한 디지털 튜너일 수 있다. 따라서, 본 발명에서 청구되는 것은 이하의 청구범위의 원리 및 범위 안에서 이루어질 수 있는 모든 변경 및 균등물을 포함한다. 따라서, 명세서 및 도면은 제한적인 의미가 아니라 예시적인 의미로 간주되어야 할 것이다.

Claims (30)

  1. 비디오 디스플레이 장치로 비디오를 수신하는 단계;
    상기 비디오 디스플레이 장치가 저장 모드에 있다고 결정한 후, 적어도 하나의 프로세서에 의해 상기 비디오를 메모리에 저장하는 단계; 및
    상기 비디오 디스플레이 장치가 이미지 처리 모드에 있다고 결정한 후, 상기 적어도 하나의 프로세서로 상기 비디오에 대한 강화된(enhanced) 이미지 처리를 수행하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 비디오 디스플레이 장치가 상기 저장 모드에 있다고 결정한 후, 상기 비디오를 상기 메모리에 저장하기 전에, 상기 적어도 하나의 프로세서에 의해 상기 비디오를 압축하는 단계를 더 포함하는 방법.
  3. 제2항에 있어서,
    상기 적어도 하나의 프로세서에 의해 상기 비디오를 압축하는 단계는 상기 적어도 하나의 프로세서 중 제1 프로세서에 의해 상기 비디오에 대한 프레임 감소를 수행하는 단계를 포함하는 방법.
  4. 제3항에 있어서,
    상기 적어도 하나의 프로세서에 의해 상기 비디오를 압축하는 단계는 상기 적어도 하나의 프로세서 중 제2 프로세서에 의한 상기 비디오의 크기 조정 단계를 포함하는 방법.
  5. 제1항에 있어서,
    상기 비디오에 대한 강화된 이미지 처리를 수행하는 단계는 고스트(ghost) 감소 동작을 수행하는 단계를 포함하는 방법.
  6. 제1항에 있어서,
    상기 비디오에 대한 강화된 이미지 처리를 수행하는 단계는 잡음 감소 동작을 수행하는 단계를 포함하는 방법.
  7. 제1항에 있어서,
    상기 적어도 하나의 프로세서로 상기 비디오에 대한 강화된 이미지 처리를 수행하는 단계는 상기 적어도 하나의 프로세서 중 제1 프로세서로 상기 비디오에 대한 제1 강화된 이미지 처리 동작을 수행하는 단계와 상기 적어도 하나의 프로세서 중 제2 프로세서로 상기 비디오에 대한 제2 강화된 이미지 처리 동작을 수행하는 단계를 포함하는 방법.
  8. 제7항에 있어서,
    제3 프로세서를 통한 경로를 포함하는 논리 연결(logical connection)을 통해 상기 제1 프로세서로부터 상기 제2 프로세서로 제1 강화된 이미지 처리 동작의 출력을 전송하는 단계를 더 포함하고, 상기 제3 프로세서는 상기 논리 연결을 통해 상기 출력의 상기 전송의 일부로서 상기 출력에 대한 처리 동작을 수행하도록 설정되지 않은 방법.
  9. 메모리에 연결된 입력/출력 인터페이스; 및
    장치의 현재 모드가 이미지 처리 모드인 경우 비디오에 대한 제1 강화된 이미지 처리 동작을 수행하는 제1 프로그램 가능 프로세서
    를 포함하고,
    상기 제1 프로그램 가능 프로세서는 상기 장치의 상기 현재 모드가 저장 모드인 경우 상기 비디오를 상기 메모리에 저장하는 장치.
  10. 제9항에 있어서,
    상기 장치의 상기 현재 모드가 상기 이미지 처리 모드인 경우 상기 비디오에 대한 제2 강화된 이미지 처리 동작을 수행하는 제2 프로그램 가능 프로세서를 더 포함하고, 상기 제2 프로세서는 상기 장치의 상기 현재 모드가 상기 저장 모드인 경우 상기 비디오를 상기 메모리에 저장하기 전에 상기 비디오에 비디오 압축 동작을 수행하는 장치.
  11. 제10항에 있어서,
    상기 비디오 압축 동작은 이미지 크기 조정 동작과 프레임율 감소 동작으로 구성된 그룹으로부터 선택되는 장치.
  12. 제10항에 있어서,
    상기 장치의 상기 현재 모드가 상기 이미지 처리 모드인 경우 상기 비디오에 대한 제3 강화된 이미지 처리 동작을 수행하는 제3 프로그램 가능 프로세서를 더 포함하고, 상기 제3 프로세서는 상기 장치의 상기 현재 모드가 상기 저장 모드인 경우 상기 비디오 압축 동작 전에 상기 비디오에 대한 잡음 감소 동작을 수행하는 장치.
  13. 제9항에 있어서,
    상기 장치를 포함하는 비디오 디스플레이 장치의 사용자로부터 컨트롤 입력을 수신하는 호스트 프로세서를 더 포함하고, 상기 컨트롤 입력은 상기 현재 모드를 변경시키며, 상기 호스트 프로세서는 상기 컨트롤 입력이 상기 현재 모드를 변경시키는 경우 상기 제1 프로그램 가능 프로세서 내의 마이크로코드(microcode)를 갱신(update)하는 장치.
  14. 메모리;
    장치의 현재 모드가 이미지 처리 모드인 경우 비디오에 대한 제1 강화된 이미지 처리 동작을 수행하는 제1 프로그램 가능 프로세서 - 상기 제1 프로그램 가능 프로세서는 상기 장치의 상기 현재 모드가 저장 모드인 경우 상기 비디오에 대한 압축 동작을 수행함 -; 및
    제3 프로그램 가능 프로세서를 통한 경로를 포함하는 제1 논리 연결을 통해 상기 제1 강화된 이미지 처리 동작으로부터 출력을 수신하고 상기 장치의 상기 현재 모드가 상기 이미지 처리 모드인 경우 상기 비디오에 대한 제2 강화된 이미지 처리 동작을 수행하는 제2 프로그램 가능 프로세서 - 상기 제2 프로그램 가능 프로세서는 제4 프로그램 가능 프로세서를 통하는 경로를 포함하는 제2 논리 연결을 통해 상기 압축 동작으로부터 출력을 수신하고 상기 장치의 상기 현재 모드가 상기 저장 모드인 경우 상기 비디오를 상기 메모리에 저장함 -
    를 포함하는 장치.
  15. 제14항에 있어서,
    상기 장치를 포함하는 비디오 디스플레이 장치의 사용자로부터 컨트롤 입력을 수신하는 호스트 프로세서를 더 포함하고, 상기 컨트롤 입력은 상기 현재 모드를 변경시키며, 상기 호스트 프로세서는 상기 장치의 상기 현재 모드가 상기 저장 모드인 경우 상기 제1 논리 연결을 생성하고, 상기 호스트 프로세서는 상기 장치의 상기 현재 모드가 이미지 처리 모드인 경우 상기 제2 논리 연결을 생성하는 장치.
  16. 제15항에 있어서,
    상기 호스트 프로세서는 상기 컨트롤 입력이 상기 현재 모드를 변경시키는 경우 상기 제1 프로그램 가능 프로세서 및 상기 제2 프로그램 가능 프로세서 내의 마이크로코드를 갱신하는 장치.
  17. 제16항에 있어서,
    상기 현재 모드를 상기 저장 모드로 변경시키는 상기 컨트롤 입력은 상기 비디오 디스플레이 장치의 디스플레이 상에서 상기 비디오의 디스플레이의 멈춤 동작인 장치.
  18. 제16항에 있어서,
    상기 현재 모드를 상기 저장 모드로 변경시키는 상기 컨트롤 입력은 상기 비디오 디스플레이 장치의 디스플레이 상에서 상기 비디오의 디스플레이의 되감기 동작인 장치.
  19. 신호를 수신하는 비디오 튜너 - 상기 비디오 튜너는 상기 신호로부터 일 주파수에서의 아날로그 비디오 신호를 추출함 -;
    상기 아날로그 비디오 신호를 수신하고 상기 아날로그 비디오 신호를 디지털 비디오 신호로 변환하는 비디오 신호 프로세서;
    이중 데이터 속도(DDR) 랜덤 액세스 메모리(RAM); 및
    적어도 하나의 프로그램 가능 프로세서와 호스트 프로세서를 가지는 프로그램 가능 처리 유닛
    을 포함하는 시스템으로서,
    상기 호스트 프로세서는 상기 시스템이 저장 모드에 있는 경우 상기 DDR RAM 내에 상기 디지털 비디오 신호를 압축 및 저장하는 적어도 하나의 프로그램 가능 프로세서를 설정하고, 상기 호스트 프로세서는 상기 시스템이 이미지 처리 모드에 있는 경우 적어도 하나의 이미지 처리 동작을 수행하는 적어도 하나의 프로그램 가능 프로세서를 설정하는 시스템.
  20. 제19항에 있어서,
    상기 적어도 하나의 프로그램 가능 프로세서는 상기 디지털 비디오 신호의 복수의 프레임에 대해 상기 적어도 하나의 이미지 처리 동작을 수행하는 시스템.
  21. 제19항에 있어서,
    상기 적어도 하나의 프로그램 가능 프로세서 중 제1 프로그램 가능 프로세서는 상기 DDR RAM 내에 상기 적어도 하나의 이미지 처리 동작 중 제1 이미지 처리 동작의 결과를 저장하고, 상기 적어도 하나의 프로그램 가능 프로세서 중 제2 프로그램 가능 프로세서는 상기 DDR RAM으로부터 상기 결과를 회수하고 상기 적어도 하나의 이미지 처리 동작 중 제2 이미지 처리 동작을 수행하는 시스템.
  22. 제19항에 있어서,
    상기 적어도 하나의 이미지 처리 동작은 고스트 감소 동작, 시간적 잡음 감소 동작 및 공간적 잡음 감소 동작으로 구성된 그룹으로부터 선택되는 시스템.
  23. 머신에 의해 실행될 때 상기 머신이 동작들을 수행하도록 하는 명령을 제공하는 머신 판독 가능 매체(machine-readable medium)로서,
    상기 동작들은,
    비디오 디스플레이 장치로 비디오를 수신하는 단계;
    상기 비디오 디스플레이 장치가 저장 모드에 있다고 결정한 후, 적어도 하나의 프로세서에 의해 상기 비디오를 메모리에 저장하는 단계; 및
    상기 비디오 디스플레이 장치가 이미지 처리 모드에 있다고 결정한 후, 상기 적어도 하나의 프로세서로 상기 비디오에 대한 강화된 이미지 처리를 수행하는 단계
    를 포함하는 머신 판독 가능 매체.
  24. 제23항에 있어서,
    상기 비디오 디스플레이 장치가 상기 저장 모드에 있다고 결정한 후, 상기 비디오를 상기 메모리에 저장하기 전에, 상기 적어도 하나의 프로세서에 의해 상기 비디오를 압축하는 단계를 더 포함하는 머신 판독 가능 매체.
  25. 제24항에 있어서,
    상기 적어도 하나의 프로세서에 의해 상기 비디오를 압축하는 단계는 상기 적어도 하나의 프로세서 중 제1 프로세서에 의해 상기 비디오에 대한 프레임 감소를 수행하는 단계를 포함하는 머신 판독 가능 매체.
  26. 제25항에 있어서,
    상기 적어도 하나의 프로세서에 의해 상기 비디오를 압축하는 단계는 상기 적어도 하나의 프로세서 중 제2 프로세서에 의한 상기 비디오의 크기 조정 단계를 포함하는 머신 판독 가능 매체.
  27. 제23항에 있어서,
    상기 비디오에 대한 강화된 이미지 처리를 수행하는 단계는 고스트 감소 동작을 수행하는 단계를 포함하는 머신 판독 가능 매체.
  28. 제23항에 있어서,
    상기 비디오에 대한 강화된 이미지 처리를 수행하는 단계는 잡음 감소 동작을 수행하는 단계를 포함하는 머신 판독 가능 매체.
  29. 제23항에 있어서,
    상기 적어도 하나의 프로세서로 상기 비디오에 대한 강화된 이미지 처리를 수행하는 단계는 상기 적어도 하나의 프로세서 중 제1 프로세서로 상기 비디오에 대한 제1 강화된 이미지 처리 동작을 수행하는 단계와 상기 적어도 하나의 프로세서 중 제2 프로세서로 상기 비디오에 대한 제2 강화된 이미지 처리 동작을 수행하는 단계를 포함하는 머신 판독 가능 매체.
  30. 제29항에 있어서,
    제3 프로세서를 통한 경로를 포함하는 논리 연결을 통해 상기 제1 프로세서로부터 상기 제2 프로세서로 상기 제1 강화된 이미지 처리 동작의 출력을 전송하는 단계를 더 포함하고, 상기 제3 프로세서는 상기 논리 연결을 통해 상기 출력의 상기 전송의 일부로서 상기 출력에 대한 처리 동작을 수행하도록 설정되지 않은 머신 판독 가능 매체.
KR20067012934A 2003-12-31 2004-12-24 프로그램 가능 비디오 처리 및 비디오 저장 아키텍처 KR100829647B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/750,544 US8812749B2 (en) 2003-12-31 2003-12-31 Programmable video processing and video storage architecture
US10/750,544 2003-12-31

Publications (2)

Publication Number Publication Date
KR20060103275A true KR20060103275A (ko) 2006-09-28
KR100829647B1 KR100829647B1 (ko) 2008-05-16

Family

ID=34749332

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20067012934A KR100829647B1 (ko) 2003-12-31 2004-12-24 프로그램 가능 비디오 처리 및 비디오 저장 아키텍처

Country Status (8)

Country Link
US (2) US8812749B2 (ko)
JP (1) JP5085137B2 (ko)
KR (1) KR100829647B1 (ko)
CN (1) CN100551005C (ko)
DE (1) DE112004002609T5 (ko)
GB (1) GB2423212B (ko)
TW (1) TWI285364B (ko)
WO (1) WO2005067290A2 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7889951B2 (en) * 2003-06-19 2011-02-15 Intel Corporation Processor to processor communication in a data driven architecture
US20040257372A1 (en) * 2003-06-19 2004-12-23 Lippincott Louis A. Communication ports in a data driven architecture
US8812749B2 (en) 2003-12-31 2014-08-19 Intel Corporation Programmable video processing and video storage architecture
WO2013033469A1 (en) * 2011-08-30 2013-03-07 Allure Energy, Inc. Resource manager, system, and method for communicating resource management information for smart energy and media resources
CN102883199A (zh) * 2012-09-29 2013-01-16 鸿富锦精密工业(深圳)有限公司 分体式电视及应用于所述分体式电视的控制盒
KR20140129607A (ko) * 2013-04-30 2014-11-07 주식회사 칩스앤미디어 동영상 처리 방법 및 장치
CN105824389A (zh) * 2015-09-10 2016-08-03 维沃移动通信有限公司 一种高保真的处理方法和装置
CN110619694A (zh) * 2019-09-23 2019-12-27 北京百度网讯科技有限公司 存储感测数据的方法、装置、电子设备和计算机可读存储介质

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4065808A (en) 1975-01-25 1977-12-27 U.S. Philips Corporation Network computer system
JPS6364178A (ja) 1986-08-29 1988-03-22 インタ−ナショナル・ビジネス・マシ−ンズ・コ−ポレ−ション 画像処理システム
US4933836A (en) 1986-10-29 1990-06-12 United Technologies Corporation n-Dimensional modular multiprocessor lattice architecture
US4891751A (en) 1987-03-27 1990-01-02 Floating Point Systems, Inc. Massively parallel vector processing computer
US5689647A (en) 1989-03-14 1997-11-18 Sanyo Electric Co., Ltd. Parallel computing system with processing element number setting mode and shortest route determination with matrix size information
US5617577A (en) 1990-11-13 1997-04-01 International Business Machines Corporation Advanced parallel array processor I/O connection
US5151783A (en) * 1991-06-05 1992-09-29 Faroudja Y C Digital television with enhancement
JPH0556372A (ja) 1991-08-27 1993-03-05 Toshiba Corp Dsp使用テレビジヨン受像機
US5541640A (en) * 1992-06-23 1996-07-30 Larson; Craig R. Videophone for simultaneous audio and video communication via a standard telephone line
JPH0656732A (ja) 1992-08-07 1994-03-01 Teijin Ltd アミンを用いたアルデヒド誘導体の製造方法
JPH06125539A (ja) 1992-10-14 1994-05-06 Nippon Telegr & Teleph Corp <Ntt> 画像符号化装置
JPH06139210A (ja) 1992-10-26 1994-05-20 Toshiba Corp 映像信号処理装置
US5557734A (en) 1994-06-17 1996-09-17 Applied Intelligent Systems, Inc. Cache burst architecture for parallel processing, such as for image processing
US5630161A (en) 1995-04-24 1997-05-13 Martin Marietta Corp. Serial-parallel digital signal processor
US5802278A (en) 1995-05-10 1998-09-01 3Com Corporation Bridge/router architecture for high performance scalable networking
KR100269106B1 (ko) 1996-03-21 2000-11-01 윤종용 멀티프로세서 그래픽스 시스템
US6389174B1 (en) 1996-05-03 2002-05-14 Intel Corporation Video transcoding with interim encoding format
JP3119584B2 (ja) * 1996-06-20 2000-12-25 日本電気株式会社 ゴースト除去装置
US5911056A (en) 1997-05-01 1999-06-08 Hewlett-Packard Co. High speed interconnect bus
US6188381B1 (en) 1997-09-08 2001-02-13 Sarnoff Corporation Modular parallel-pipelined vision system for real-time video processing
US6151069A (en) 1997-11-03 2000-11-21 Intel Corporation Dual mode digital camera for video and still operation
US6125147A (en) 1998-05-07 2000-09-26 Motorola, Inc. Method and apparatus for reducing breathing artifacts in compressed video
US6598145B1 (en) 1999-02-12 2003-07-22 Avici Systems Irregular network
JP3824440B2 (ja) * 1999-03-09 2006-09-20 三菱電機株式会社 撮像装置
US6757019B1 (en) 1999-03-13 2004-06-29 The Board Of Trustees Of The Leland Stanford Junior University Low-power parallel processor and imager having peripheral control circuitry
JP2001036484A (ja) 1999-07-16 2001-02-09 Nec Corp 障害多発自動検出方法
JP3617390B2 (ja) 1999-11-05 2005-02-02 日本ビクター株式会社 ディジタル信号記録再生装置
US6804193B1 (en) 2000-07-28 2004-10-12 Marconi Intellectual Property (Ringfence) Inc. Protected Ethernet backplane communication
US6967950B2 (en) 2000-08-11 2005-11-22 Texas Instruments Incorporated Pull transfers and transfer receipt confirmation in a datapipe routing bridge
US7619657B2 (en) * 2000-10-04 2009-11-17 Fujifilm Corp. Recording apparatus, communications apparatus, recording system, communications system, and methods therefor for setting the recording function of the recording apparatus in a restricted state
US6952576B2 (en) * 2001-08-22 2005-10-04 Matsushita Electric Industrial Co., Ltd. Entertainment device having a content library and adaptive content selection
US7430002B2 (en) 2001-10-03 2008-09-30 Micron Technology, Inc. Digital imaging system and method for adjusting image-capturing parameters using image comparisons
JP4618956B2 (ja) 2001-12-10 2011-01-26 ソニー株式会社 信号処理装置、信号処理方法、信号処理システム、プログラム及び媒体
US20040024580A1 (en) * 2002-02-25 2004-02-05 Oak Technology, Inc. Server in a media system
US7212574B2 (en) 2002-04-02 2007-05-01 Microsoft Corporation Digital production services architecture
BR0309027A (pt) * 2002-04-05 2007-01-30 Thomson Licensing Sa sistema e método para controle remoto e método de gravador de vìdeo pessoal
US7861273B2 (en) * 2002-04-26 2010-12-28 Microsoft Corporation TV control resource management
FR2846506B1 (fr) * 2002-10-28 2005-02-11 Philippe Marie Alber Guenebaud Dispositif de trans-compression d'un flux numerique audiovisuel pour l'adapter aux equipements de television existants
US20040257372A1 (en) 2003-06-19 2004-12-23 Lippincott Louis A. Communication ports in a data driven architecture
US7889951B2 (en) 2003-06-19 2011-02-15 Intel Corporation Processor to processor communication in a data driven architecture
JP4317394B2 (ja) 2003-07-01 2009-08-19 スミダコーポレーション株式会社 面実装インダクタ
US8812749B2 (en) 2003-12-31 2014-08-19 Intel Corporation Programmable video processing and video storage architecture

Also Published As

Publication number Publication date
US20050166251A1 (en) 2005-07-28
TWI285364B (en) 2007-08-11
JP5085137B2 (ja) 2012-11-28
TW200531004A (en) 2005-09-16
WO2005067290A3 (en) 2005-12-08
DE112004002609T5 (de) 2006-11-16
US20150110463A1 (en) 2015-04-23
KR100829647B1 (ko) 2008-05-16
US9654724B2 (en) 2017-05-16
CN100551005C (zh) 2009-10-14
GB2423212B (en) 2009-06-10
US8812749B2 (en) 2014-08-19
GB0608720D0 (en) 2006-06-14
CN1902921A (zh) 2007-01-24
JP2007520115A (ja) 2007-07-19
GB2423212A (en) 2006-08-16
WO2005067290A2 (en) 2005-07-21

Similar Documents

Publication Publication Date Title
US9654724B2 (en) Programmable video processing and video storage architecture
KR101861770B1 (ko) 이미지 프로세싱 회로 및 이미지 프로세싱 방법
JP3926873B2 (ja) コンピュータシステム
US20040199390A1 (en) Signal processing system for reducing power consumption
TWI518673B (zh) 影像切換器及其切換方法
US20050152609A1 (en) Video decoder
JP2007520115A6 (ja) 装置、方法、システム、機械読み取り可能な媒体
US7889951B2 (en) Processor to processor communication in a data driven architecture
KR20020069533A (ko) 모듈라 텔레비젼용 하드디스크모듈 및 그것을 이용한 저장및 재생 방법
CN101257588A (zh) 用于处理电视分割画面的影像处理系统与方法
KR20170085213A (ko) 채널별 이종 동작을 위한 멀티채널 초고해상도 영상 획득/재생 시스템 및 방법
US7346715B2 (en) Data communication control device with peripheral device
KR100736935B1 (ko) 그래픽 처리를 이용한 비디오 뮤트 화면 표시장치 및 그방법
US9578368B2 (en) Method and data processing apparatus supporting simultaneous playback
US20060020892A1 (en) Electronic apparatus and video data receiver
JP2005122119A (ja) Mpuとビデオコーデックとで構成されるシステムにおけるビデオインタフェース装置
KR100438719B1 (ko) 영상 신호 재생 장치 및 방법
KR970008635B1 (ko) 멀티 하드디스크를 이용한 장시간 비트스트림 전송장치
US20130106874A1 (en) Enabling display commands from an electronic device to an integrated display on a computer system
KR20080061539A (ko) 영상기기 및 영상기기를 제어하는 리모콘 그리고 그들을이용한 채널 설정 방법
JP2000310985A (ja) バッファ制御装置及び半導体集積回路
JP2005269277A (ja) マルチプレクサの画像送信装置
JPH1127557A (ja) リモコン操作型電子機器
JP2019204032A (ja) 表示装置
TW202121885A (zh) 資料切換矩陣系統

Legal Events

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

Payment date: 20130503

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140502

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20150430

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160427

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee