KR100860160B1 - 비디오 처리를 위한 계층 프로세서 아키텍처 - Google Patents

비디오 처리를 위한 계층 프로세서 아키텍처 Download PDF

Info

Publication number
KR100860160B1
KR100860160B1 KR1020067024004A KR20067024004A KR100860160B1 KR 100860160 B1 KR100860160 B1 KR 100860160B1 KR 1020067024004 A KR1020067024004 A KR 1020067024004A KR 20067024004 A KR20067024004 A KR 20067024004A KR 100860160 B1 KR100860160 B1 KR 100860160B1
Authority
KR
South Korea
Prior art keywords
data
processor
instructions
processors
memory
Prior art date
Application number
KR1020067024004A
Other languages
English (en)
Other versions
KR20070022273A (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 KR1020067024004A priority Critical patent/KR100860160B1/ko
Publication of KR20070022273A publication Critical patent/KR20070022273A/ko
Application granted granted Critical
Publication of KR100860160B1 publication Critical patent/KR100860160B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

시스템은 메모리, 복수의 저수준 프로세서들, 및 제어 프로세서를 포함할 수 있다. 메모리는 지시 데이터, 상기 지시 데이터에 의해 기술되는 기타 데이터, 및 명령들을 저장할 수 있다. 저수준 프로세서들은 상기 명령들에 기반하여 상기 기타 데이터를 처리할 수 있다. 제어 프로세서는 상기 지시 데이터로부터 상기 기타 데이터를 처리하기 위해 필요한 상기 명령들의 집합을 결정할 수 있다. 제어 프로세서는 또한 상기 명령들의 집합이 상기 복수의 저수준 프로세서들 중 적어도 하나에 로딩되도록 할 수 있다.
Figure R1020067024004
비디오 정보, 데이터 처리, 프로세서

Description

비디오 처리를 위한 계층 프로세서 아키텍처{HIERARCHICAL PROCESSOR ARCHITECTURE FOR VIDEO PROCESSING}
일반적으로 본 발명의 실시예들은 정보 처리에 관련될 수 있으며, 더 상세하게는, 수신된 비디오 정보를 처리하는 것에 관련될 수 있다.
어떤 유형의 처리 작업들은 복잡한 알고리즘 및 처리되어야 할 방대한 양의 데이터 둘다를 수반할 수 있다. 비디오 정보의 디코딩, 및/또는 인코딩이 그러한 처리 작업의 하나일 수 있다. 예컨대, 비디오 정보의 다양한 인터레이싱 틀(interlacing scheme), 프레임(frame) 유형, 명령 등은, 유입되는 비디오 스트림을 조정하는 프로세서에 알고리즘의 복잡성을 부여할 수 있다. 다소 높은 프레임률(frame rate) 및 또는 프레임 당 픽셀(pixel)수 또한 처리되어야 할 상당한 양의 데이터를 부여할 수 있다(예컨대, 연산에 있어서의 부하(load)).
이와 같은 처리 작업들을 다루는 한 방법으로서, 논리적으로 복잡한 작업들을 처리할 수 있고 방대한 양의 데이터를 처리하기에 충분히 빠르고 감당할 능력이 되는 프로세서를 사용하는 것이 있다. 하지만 이러한 접근법은, 상대적으로 빠른 클럭 주파수에서 동작하며 상대적으로 크고 복잡한 프로세서를 수반할 수 있다. 상대적으로 빠른 클럭 주파수에서 동작하는 크고 복잡한 프로세서들은 상대적으로 높은 양의 전력을 낭비할 수 있다.
본 명세서에 포함되고 그 일부를 구성하는 첨부된 도면들은, 본 발명의 사상과 일치하는 하나 이상의 실시예들을 도시하며, 상세한 설명과 함께 상기 실시예들을 설명한다. 본 발명의 사상을 설명함에 있어서 도면들은 반드시 실제 크기인 것은 아니며, 과장된 부분이 있을 수 있다.
도 1은 예시적인 시스템을 도시한 도면.
도 2는 데이터 상의 동작 프로세스를 도시한 흐름도.
도 3은 예시적인 비디오 처리 알고리즘을 도시한 도면.
도 4는 도 1의 시스템인 어떻게 도 3의 알고리즘을 실시할 수 있는지를 도시한 도면.
도 5는 도 4의 다양한 프로그램들이 어떻게 메모리에 저장될 수 있는지를 도시한 도면.
후술할 상세한 설명은 첨부된 도면들을 참조한다. 동일하거나 유사한 구성요소를 식별하기 위해 동일한 참조 번호가 서로 다른 도면에서 사용될 수 있다. 후술할 설명에서, 본 발명의 다양한 측면들에 대한 전체적인 이해를 제공하기 위해, 제한이 아닌 설명의 목적으로 상세한 구조, 아키텍처, 인터페이스, 기술 등과 같은 특정 상세 사항들이 열거된다. 하지만, 본 발명의 다양한 측면들이 상기 특정 상세사항들로부터 벗어나지 않는 다른 예에서 실시될 수 있음은, 본 명세서에서 이익을 얻는 본 기술분야의 당업자에게 명백할 것이다. 어떤 예에서는, 불필요한 세부사항들로 본 발명의 설명이 모호해지지 않도록 하기 위해 잘 알려진 장치, 회로 및 방법에 대한 설명은 생략된다.
도 1은 예시적인 시스템(100)을 도시한 도면이다. 시스템(100)의 실시예는 개인용 비디오 레코더(personal video recorder; PVR) 또는 DVD 레코더(digital versatile disc recorder; DVD-R)를 포함할 수 있지만 본 발명이 이에 제한되는 것은 아니다. 예컨대, 시스템(100)은 일반용 컴퓨터, 휴대용 장치, 가전 장치, 또는 기타 전자 시스템 내에 구현될 수 있다. 시스템(100)은 단일 장치에서 구현될 수 있지만, 몇몇 실시예에서는 시스템(100)의 어떤 구성요소들은 시스템(100)의 다른 구성요소들과 원격으로 및/또는 물리적으로 분리될 수 있다. 또한, 시스템(100)은 개별적인 구성요소들을 포함하는 것으로 도시되었지만, 상기 구성요소들은 하드웨어, 소프트웨어/펌웨어, 또는 이들의 조합으로 구현될 수 있다. 하드웨어로 구현되면, 시스템(100)의 몇몇 구성요소들은 어떤 칩 또는 장치에서 결합될 수 있다.
시스템(100)은 데이터 소스(110), 메모리(120), 데이터 프로세서(130), 및 데이터 목적지(data destination; 170)를 포함할 수 있다. 소스(100)는 메모리(120)로 데이터를 송신하며, 메모리(120) 내의 데이터는 데이터 프로세서(130)에 의해 처리될 수 있다. 처리된 데이터는 목적지(170)로 송신될 수 있다. 예시를 위해, 송신되고 동작되는 데이터는 미디어 데이터(예컨대, 비디오 정보)를 포함할 수 있지만, 본 발명이 이에 제한되는 것은 아니다. 데이터 프로세서(130)는 여기 의 설명과 일치하는 미디어 정보보다는 다른 유형의 데이터를 처리할 수 있다.
소스(110)는 시스템(100)의 나머지 부분에 미디어 정보를 제공하는 장치를 포함할 수 있다. 소스(110)에 의해 제공되는 미디어 정보는 MPEG-1, MPEG-2, MPEG-4, H.264, Windows Media Video version 9(WMV9) 및 Advanced Video System(AVS) 포멧과 같은 포멧으로 인코딩된 비디오 정보를 포함할 수 있다. 본 발명은 여기에 특정하여 언급된 포멧들에 제한되는 것은 아니며, 여기에 개시된 틀(scheme)에 따라서 현재 공개되거나 나중에 개발될 미디어 포멧이 사용될 수 있다.
몇몇 실시예에서, 소스(110)는 비디오 정보(예컨대 고화질(HD) MPEG-2 정보)의 스트림(stream) 또는 채널을 미디어 정보의 다른 스트림 또는 채널로부터 분리하는 튜너(tuner)를 포함할 수 있다. 몇몇 실시예에서, 소스(110)는 저장 매체로부터 미디어 정보를 읽어들이기 위한 리더(reader)를 포함할 수 있다. 예컨대, 상기 리더는 DVD, 하드디스크, 반도체 저장 장치, 또는 기타 저장 매체로부터 비디오 정보를 추출하는 광학, 자기, 및/또는 전자 리더를 포함할 수 있다.
몇몇 실시예에서, 소스(110)는 통신망(도시되지 않음)으로부터 미디어 정보를 수신하는 수신기 회로를 포함할 수 있다. 소스(110) 내의 상기 수신기는 유선, 광학 또는 무선 전송 매체로부터 정보를 수신하도록 배치될 수 있다. 소스(110) 내의 수신기는 원하는 정보를 다른 수신된 정보와 분리하는 튜너 또는 기타 장치와 연관되어 동작하거나 또는 동작하지 않을 수 있다.
메모리(120)는 소스(110)로부터 미디어 정보를 수신하고 미디어 정보를 저장 할 수 있다. 데이터 프로세서(130)에 의해 명령을 받으면, 메모리(120)가 처리된 미디어 데이터를 목적지(170)에 제공할 수 있으며 및/또는 데이터 프로세서(130)에 의해 유발되면, 목적지(170)가 상기 처리된 미디어 데이터를 읽을 수 있다. 메모리는 데이터의 신속한 전송 및 저장을 용이하게 하는 임의 접근 메모리(random access memory; RAM)를 포함할 수 있다. 상기 RAM은 시스템(100)의 설계 변수(design parameter)에 따라 동기식, 비동기식, DDR(double data rate) 등일 수 있다.
미디어 데이터 저장에 추가하여, 메모리(120)는 데이터 프로세서(130) 및/또는 그 구성요소에 의해 사용되기 위한 명령들을 저장할 수 있다. 상기 명령들은 작업 특수성(task-specific)일 수 있으며, 필요할 때 데이터 프로세서(130)에 제공될 수 있다. 메모리(120)는, 데이터 프로세서(130)에 의해 로딩되면 데이터 프로세서(130)가 소스(110)로부터 수신된 데이터(미디어 또는 비디오 데이터) 상의 다양한 작업들의 처리를 수행할 수 있도록 하는 하나 이상의 일련의 명령들을 포함할 수 있다.
데이터 프로세서(130)는 제어 프로세서(140), 다수의 저수준(low-level) 프로세서(150-1, 150-2,...,150-n)(선택적으로 "저수준 프로세서들(150)"), 및 직접 액세스 메모리(direct memory access; DMA; 160)를 포함할 수 있다. 몇몇 실시예에서, 모든 구성요소들(130 내지 160)은 동일한 칩 또는 패키지 내에 위치할 수 있다. 그러나 몇몇 실시예에서, 제어 프로세서(140)는 별개의 칩 또는 패키지 내에 위치할 수 있는 반면, 저수준 프로세서들(150) 및 DMA(160)는 하나의 칩 또는 패키 지 내에 있을 수 있다. 다른 조합 또는 실시예도 가능하다.
제어 프로세서(140)는 상대적으로 복잡한 처리 동작을 제어 및/또는 조정하기에 충분한 명령 메모리를 포함할 수 있다. 상기 복잡한 동작(예컨대 비디오 정보 디코딩)을 처리함에 있어서, 제어 프로세서는 (예컨대 디코딩 알고리즘과 같은 알고리즘을 파싱(parsing)함으로써) 작업에 어떤 리소스가 필요한지를 결정하고 (예컨대, 적절하게 저수준 프로세서들(150)을 구성함으로써) 리소스를 작업에 할당할 수 있다. 할당 기능 이후에, 제어 프로세서(140)는 작업 특수성 명령을 메모리(120)에서 저수준 프로세서들(150)로 로딩하도록 배치될 수 있다.
몇몇 처리 동작들은 "데이터 주도성(data-driven)"(예컨대 소스(110)로부터의 데이터에 의해 결정됨)일 수 있으며, 제어 프로세서(140)는 어떤 유형의 처리가 구행되어야 하는지를 결정하는 지시 데이터(indicator data)를 검사할 수 있다. 그 다음에, 제어 프로세서(140)는 메모리(120)로부터 온 적절한 명령들이 있는 저수준 프로세서들(150)이 지시 데이터를 따르는 소스(110)로부터의 데이터를 처리하도록 구성할 수 있다. 제어 프로세서(140)는 또한 저수준 프로세서들(150) 중 어느 하나가 어떤 데이터를 처리하거나 및/또는 어떤 작업을 병렬적으로 수행하도록 할당할 수 있다. 제어 프로세서(140)는 새로 수신된 지시 데이터에 기반하여, 필요에 따라 저수준 프로세서들(150)을 재구성할 수 있다. 이와 같은 제어틀(control scheme)은 아래에서 더 자세하게 설명될 것이다.
논리적으로 복잡한 작업과 상대적으로 큰 양의 데이터를 수반하는 작업들을 처리하기 위해서, 제어 프로세서는 논리적인 복잡성을 처리할 수 있고, 상기와 같 은 양의 데이터를 처리하기 위해서 필요하다면 저수준 프로세서들(150)이 "동작 상태(on the fly)"가 되도록 구성할 수 있다. 상기 기능들을 수행하기 위해서, 제어 프로세서(140)는, 제어 프로세서(140)의 명령 메모리 내에 명령들의 개수의 약 10배 이상(예컨대 적어도 10배 이상)의 개수에 대한 룸(room)을 저수준 프로세서(150)로 포함할 수 있다. 일실시예에서, 제어 프로세서(140)는 약 34킬로바이트(Kb)의 명령 RAM을 포함할 수 있지만, 본 발명이 이에 제한되는 것은 아니다.
저수준 프로세서들(150)은 제어 프로세서(140)보다 더 적은(예컨대 10배수보다 적은) 양의 명령 메모리가 있는 다수의 프로세서들을 포함할 수 있다. 일실시예에서, 저수준 프로세서들(150)은 각각 약 1.5Kb의 명령 RAM을 포함할 수 있지만, 본 발명이 이에 제한되는 것은 아니다. 명령 메모리의 양이 더 적음으로 인해, 저레벨 프로세서들(150) 각각은 상대적으로 작은 코드 사이즈에 대응하는 작업을 수행할 수 있다. 저수준 프로세서들(150)은 또한 예컨대 하나 이상의 캐쉬, 딥 파이프라인(deep pipeline), 분기 예측(branch prediction), 추론적 실행(speculative execution) 등이 결핍될 수 있다. 그러나, 저수준 프로세서들(150)의 상대적으로 작은 메모리와 상대적으로 단순한 구조로 인해 더 복잡한 프로세서에 비해 전력 및 크기를 절약할 수 있다. 몇몇 실시예에서, 저수준 프로세서들(150)은 구조 및 용량에 있어서 균일할 수 있으며, 몇몇 실시예에서, 저수준 프로세서들(150)은 구조 및/또는 용량에 있어서 불균일할 수 있다.
간단하게 설명하기 위해 도 1에 명확하게 도시되지는 않았지만, 몇몇 실시예에서 저수준 프로세서들(150)은 예컨대, 저수준 프로세서들(150) 중 하나가 다른 저수준 프로세서들(150) 중 하나, 둘, 셋 또는 그 이상과 연결될 수 있는 매트릭스형(matrix-type) 배열과 같이 상호 연결될 수 있다. 몇몇 실시예에서, 한자리 수(예컨대 4 또는 8)의 저수준 프로세서들(150)이 있을 수 있지만, 다른 실시예에서는 두자리수의 저수준 프로세서들(150)(예컨대 16, 20, 32, 40 등)이 있을 수 있다. 또한, 저수준 프로세서들(150)이 처리 작업을 실행하는 것으로 설명될 것이지만, 몇몇 실시예에서는 저수준 프로세서들(150) 각각이 하나 이상의 저수준 프로세서들(150)과 연계하여 부작업(sub-task)을 수행할 수 있다. 다른 아키텍쳐 및 프로세싱 플로우의 변형예들이 가능하며 저수준 프로세서들(150)에 대해 고려된다.
임의의 이벤트에서, 저수준 프로세서들(150)은 메모리로부터 명령들, 및 제어 프로세서(140)로부터의 지시에 따라 상기 명령들을 사용하여 처리할 데이터를 수신할 수 있다. 수신된 명령들에 따라서, 저수준 프로세서들(150) 각각은 상기 프로세서들 중에서 가능한 상이한 처리 작업들이 있는 특정 목적의 프로세서로 배치될 수 있다. 저수준 프로세서들(150)은 그들 각자의 데이터를 가능한 병렬적으로 검색 및 처리하도록 배치될 수 있다. 또한, 저수준 프로세서들(150) 중 어느 하나는 그것의 현재 작업을 완료할 때마다 재구성될 수 있다(예컨대 다른 명령들을 수신함). 그러나 제어 프로세서(140)는 저수준 프로세서들(150) 중 몇몇이 수행되어야 할 작업들에 대해 이미 구성되어 있는 경우, 그것들을 재사용(즉, 재구성이 아님)할 수 있다. 제어 프로세서(140)에 의해 저수준 프로세서들(150)이 구성됨으로 인해, 데이터 프로세서(130)는 계층 프로세서라 불릴 수 있다.
DMA(160)는 메모리(120)로부터 데이터를 읽어들이거나 및/또는 메모리(120) 에 데이터를 기록할 수 있다. 이와 같이 할 때, DMA(160)는 제어 프로세서(140)가 소스(110)로부터 지시 데이터를 읽어들이는 것을 용이하게 한다. DMA(160)는 또한 명령 데이터 및 처리되어야 할 데이터를 저수준 프로세서들(150)에 제공할 수 있다. DMA(160)는 또한 저수준 프로세서들(150) 간의 데이터 흐름을 제어할 수도 있다. DMA(160)가 단일 연결로 메모리(120)와 연결된 것으로 도시되었지만, 이는 단지 A(160)와 메모리(120) 간의 양방향 데이터 전송을 도시하는 것이며 본 발명을 이에 제한하지 않음이 이해되어야 한다. 도 1에 명확하게 도시되지는 않았지만, 실제로는, 하나 이상의 추가적인(예컨대 제어) 연결이 DMA(160)와 메모리(120) 사이에 존재할 수 있다. 이와 같은 도면을 도시함에 있어서의 방침은 도 1에 도시된 다른 연결들에도 적용된다.
처리된 데이터(예컨대, 디코딩된 미디어 또는 비디오 정보)를 저장 또는 출력하기 위해 데이터 목적지(170)가 배치될 수 있다. 몇몇 실시예에서, 목적지(170)는 다른 시스템 또는 시스템(100)의 다른 구성요소(도시되지 않음)에게 데이터 프로세서(130)에 의해 처리된 데이터로의 접근을 제공하는 출력 인터페이스를 포함할 수 있다. 상기 물리적인 출력 인터페이스는 광학, 전자, 무선 등일 수 있으며, 데이터를 전송 및/또는 접근하기 위한 하나 이상의 기존의 또는 최근 개발된 인터페이스 사양을 따를 수 있다.
몇몇 실시예에서, 목적지(170)는 처리된 데이터를 저장하기 위한 저장 장치를 포함할 수 있다. 예컨대, 목적지(170)는 정보를 저장하는 하드디스크 또는 플래시 메모리를 포함할 수 있다. 몇몇 실시예에서, 목적지(170)는 처리된 정보를 휴대용 저장 매체로 전송하는 기록가능한 광학 드라이브(예컨대 DVD-RW 등)를 포함할 수 있다. 디스플레이 프로세서(도시되지 않음)는 차후에 플레이백(playback) 또는 다른 목적을 위해 목적지(170) 내에 저장된 정보에 접근할 수 있다.
목적지(170)에 대해서 몇몇 예시적인 실시예들이 논의되었지만, 본 발명이 분명하게 언급된 상기 실시예들에 제한되어야 하는 것은 아니며, 처리된 정보를 메모리(120)로부터 전송 또는 저장할 수 있는 모든 장치 또는 인터페이스를 포함한다. 예컨대, 몇몇 실시예에서 목적지(170)는 반드시 소스(110)로부터 분리 또는 구별될 필요는 없다. 몇몇 실시예에서, 디코딩된 비디오 정보는, 스트림 - 상기 정보는 상기 스트림으로부터 수신되었음 - 내로 (다른 채널의 백 모듈레이션(back modulation)에 의해) 재삽입될 수 있다.
도 2는 데이터 상의 동작의 프로세스(200)를 도시한 흐름도이다. 프로세서(200)는 설명의 편의를 위해 시스템(100)과 관련하여 설명될 수 있지만, 본 발명이 이에 제한되는 것은 아니다. 제어 프로세서(140)가 메모리(120)로부터 지시 데이터를 읽어들이고 지시 데이터에 따라서 수행되어야 할 하나 이상의 작업을 결정함으로써 프로세싱이 시작될 수 있다(동작 210). 제어 프로세서(140)는 그 명령 매모리 내에 상주하는 명령들(예컨대 알고리즘을 형성)을 사용하여 상기 결정을 할 수 있다. 아래에 더 상세하게 설명될 한 예에서, 제어 프로세서(140)는 비디오 데이터에 대한 디코딩 알고리즘을 실행할 수 있고, 사용되는 지시 데이터는 예컨대 비디오 데이터의 특정 프레임이 어떤 유형의 인코딩을 갖고 있는지에 대한 것일 수 있다.
프로세싱은 제어 프로세서(140)가 하나 이상의 저수준 프로세서들(150)로 로딩되어야 할 하나 이상의 작업들을 수행하기 위한 명령들을 배열함으로써 계속될 수 있다(동작 220). 몇몇 실시예에서, 제어 프로세서(140)는 DMA(160)가 메모리(120) 내의 적절한 명령들(예컨대 마이크로-코드 프로그램(들))에 접근하고 상기 명령들을 저수준 프로세서들(150)로 전달하도록 명령할 수 있다. 몇몇 실시예에서, 제어 프로세서(140)는 저수준 프로세서들(150)이 DMA(160)를 통해 메모리(120)로부터 명령들을 얻도록 명령할 수 있다. 지시 데이터가 처리되어야 할 다른 데이터에 우선하는 한, 제어 프로세서(140)는 상대적으로 낮은 지연(delay) 또는 대기 시간(latency)으로 명령들을 저수준 프로세서들(150) 내에 로딩할 수 있다.
명령들을 수신한 저수준 프로세서들(150)은 명령을 실행하여 제어 프로세서(140)에 의해 결정된 하나 이상의 작업들을 수행할 수 있다(동작 230). 명령들을 로딩한 후에, 가능하면 저수준 프로세서들(150)에 작은 설정(예컨대 메모리(120) 내의 데이터 검색)이 이루어진 후에, 상기 실행이 간단하게 시작될 수 있다. 동작(230)의 일부로서, 또는 그 동작 이전에 제어 프로세서(140) 또는 저수준 프로세서들(150)은, DMA(160)가 저수준 프로세서들(150)의 작업을 처리하는 동안에 저수준 프로세서들(150)로부터 데이터를 받아들이고 또한 그들에게 데이터를 전달하도록 프로그램할 수 있다. 하나의 저수준 프로세서(150)가 하나의 연산 작업을 수행할 수 있지만, 몇몇 실시예에서 2개 이상의 저수준 프로세서들(150)이 협력하여 하나의 작업을 수행할 수 있다. 또한, 몇몇 실시예에서 저수준 프로세서들(150)은 그들 각각의 작업(들) 또는 상기 작업(들)의 일부를 병렬적으로 수행할 수 있다.
저수준 프로세서들(150)은 그들 각각의 처리 작업(들)에 대해 적절하게 DMA(160)를통해 메모리(120)로부터 데이터를 전송받고 메모리(120)로 데이터를 전송할 수 있다(동작 240). 상기 처리가 완료되면, 처리된 데이터는 목적지(170)로 버퍼링 및/또는 전송하기 위해 메모리(120)로 전송될 수 있다.
동작들(210 내지 240)은 연속적인 연산 작업을 위해 적절하게 반복될 수 있다. 전술한 바와 같이, 제어 프로세서(140)는 동작(210) 및 동작(220)을 수행 및/또는 통합할 수 있으며, 저수준 프로세서들(150)은 동작(230) 및 동작(240)을 수행 및/또는 통합할 수 있다. 동작들(210 내지 240)의 반복은 지시 데이터가 언제 메모리(120)에 수신되는지에 좌우될 수 있다. 예컨대 저수준 프로세서들(150)이 데이터를 처리한 이후까지 지시 데이터의 (예컨대 다음 작업 또는 일련의 작업들을 지시하는) 다음 부분(piece)이 수신되지 않으면, 제어 프로세서(140)는 도 2에 실선 화살표로 도시된 바와 같이 동작(240) 이후까지는 동작(210)을 반복할 수 없다.
그러나, 저수준 프로세서들(150)이 데이터를 처리하기 전에 지시 데이터의 다음 부분이 수신되면, 도 2에 점선 화살표로 도시된 바와 같이, 제어 프로세서(140)는 동작(220) 이후에 동작(210)을 반복할 수 있다. 이와 같은 시나리오에서, 새로운 지시 데이터가 유효하게 되면, 제어 프로세서(140)는 저수준 프로세서들(150) 중 일부에 명령들을 로딩하는 것을 마치게 되며, 저수준 프로세서들(150)이 동작들(230 및 240)에서 실행하고 있는 동안, 제어 프로세서(140)가 동작들(210 및 220)에서 작업을 결정하고 명령들을 로딩할 수 있다. 제어 프로세서(140)와 저 수준 프로세서들(150) 간의 다른 프로세싱 플로우도 여기에 설명한 바와 동일할 수 있다.
시스템(100) 및 프로세스(200)를 이해하기 위해 상세한 예시가 제공될 것이다. 시스템(100) 및 프로세스(200)는 아래에 설명될 바와 같이 비디오 정보의 디코딩을 수용할 수 있지만, 본 발명이 그에 제한되는 것은 아니다. 또한 시스템(100) 및 프로세스(200)는 아래에 논의될 것보다 훨씬 복잡한 알고리즘들 - 비디오 디코딩이든 다른 종류의 것이든 - 을 수용할 수 있다.
도 3은 예시적인 비디오 프로세싱 알고리즘(300)을 도시한 도면이다. 알고리즘(300)은, 프레임이 인트라코딩된(intracoded; I) 영상, 예측된(predicted; P) 영상, 또는 양방향으로 예측된(B) 영상인지에 따라서, 그리고 세부적인 I, P, 또는 B 영상이 인터레이스 스캔된(interlaced scanned) 비디오 정보인지 또는 진행형 스캔된(progressively scanned) 비디오 정보인지에 따라서 비디오 정보의 프레임을 디코딩하는 하나 이상의 함수들(A 내지 G)을 수행할 수 있다. 지시 데이터는 프레임 내의 비디오 데이터 중 잔여 부분 상에서 어느 프로세싱 작업이 수행되어야 하는지를 지시하기 때문에, 상기와 같은 유형의 프레임(예컨대 B 프레임) 및 비디오 정보 모드(예컨대 인터레이스된(interlaced))는 지시 데이터의 한 예일 수 있다.
예시를 위해 인터레이스된 B 프레임의 수신을 가정하면, 알고리즘(300)은 함수들(D 및 G)이 비디오 정보의 상기 프레임을 디코딩하도록 수행될 것을 결정한다. 도 3의 화살표들은 함수들이 수행되는 목적지를 만들기 위해 이루어지는 논리적인 단계들을 도시한다. 함수들(D 및 G)은 비디오 데이터의 인터레이스된 B 프레임을 디코딩하기 위해 필요한 별개의 연산적인 작업들을 나타낼 수 있다. 물론, 이와 같은 비디오 정보의 프레임을 디코딩하기 위해 필요한 작업들이 둘 이상 또는 이하로 있을 수 있으며, 도시된 두 개의 작업은 단지 설명을 위한 것이다.
도 4는 시스템(100)이 어떻게 알고리즘(300)을 구현할 수 있는지를 도시한 도면이며, 상기 도면은 다른 실시예를 나타내도록 알고리즘(400)으로 구성되어있다. 비교를 위해, 처리되는 비디오 정보는 인터레이스된 B 프레임이라는 것도 가정될 것이다. 도시된 바와 같이, 제어 프로세서(140)는 데이터의 인터레이스된 B-타입 프레임에 대해 어떤 작업(들)이 수행되어야 하는지를 결정하기 위해 알고리즘(400)의 논리적인 부분을 거쳐갈 수 있다(동작 210).
그 다음에, 제어 프로세서(140)는 하나 이상의 저수준 프로세서들(150)로 프로그램 2를 로딩하고 상기 프로그램이 실행되도록 할 수 있다(동작 220). 프로그램 2의 복잡성에 기반하여, 제어 프로세서(140)는 저수준 프로세서들(150) 중 하나에 또는 복수의 저수준 프로세서들(150)에 대응하는 명령들을 로딩할 수 있다. 제어 프로세서(140)는 프로그램 2를 복수의 저수준 프로세서들(150)에게 분배할 것인지를 결정할 수 있으며, 혹은 이것이 미리 결정되고 예컨대 프로그램 2가 메모리(120)에 저장되는 방법에 반영될 수 있다. 제어 프로세서(140)가 일단 프로그램 2를 로딩하면, 지시 데이터(예컨대 프레임 종류 및/또는 모드)가 비디오 데이터의 다른 프레임에 대해 유효한 경우 제어 프로세서(140)는 동작들(210 및 220)을 다시 수행할 수 있다.
그 다음에, 저수준 프로세서(들)(150)는 프로그램 2의 제1 및 제2 부분인 함 수들(D 및 G)을 수행할 수 있다(동작들 230/240). 몇몇 실시예에서, 하나의 저수준 프로세서(예컨대 150-1)가 함수들(D 및 G)을 둘다 수행할 수 있다. 몇몇 실시예에서, 한 저수준 프로세서(예컨대 150-1)는 함수(D)를 수행할 수 있으며, 한 저수준 프로세서(예컨대 150-2)는 함수(G)를 수행할 수 있다. 몇몇 실시예에서, 둘 이상의 저수준 프로세서들(150)이 협력하여 함수들(D 및 G) 중 적어도 하나(예컨대 함수(G)를 수행할 수 있다. 여기에 설명된 바와 동일하게 다른 실시예들이 가능하다.
도 5는 프로그램 0 내지 5가 메모리(120)에 어떻게 저장될 수 있는지를 도시한 도면이다. 구조(500)는 메모리(120) 내에 연결 목록(linked list), 어레이 등과 같은 데이터 구조를 포함할 수 있다. 프로그램 0 내지 5는 개념적으로 구조 내의 행(row)으로 도시된, 구조(500) 내의 어떤 어드레스들에 상주할 수 있다. 몇몇 실시예에서, 저수준 프로세서들(150) 중 어느 것에 의해서도 동일한 버전의 프로그램(예컨대 프로그램 2)이 실행된다.
구조(500) 내에 열(column)을 정의하는 점선들은 저수준 프로세서들(150)마다 프로그램(예컨대 프로그램 2)의 처리가 다를 수 있음을 나타낸다. 몇몇 실시예에서, 예컨대 프로그램(프로그램 2)은 실행할 서로 다른 저수준 프로세서들(예컨대 150-1 내지 150-3)에 대해서 다수의 부분으로 분할될 수 있다(예컨대, 도 5에서는 3개로 분할되었지만, 본 발명이 이에 제한되는 것은 아니다). 예컨대, 프로그램 2의 제1 부분은 함수 D를 수행하는 명령일 수 있으며, 프로그램 2의 제2 부분(제3 부분도 가능)은 함수 G를 수행하는 명령일 수 있다. 몇몇 실시예에서, 어드레싱, 데이터 전송 등을 돕기 위해 저수준 프로세서들(150)마다 조금씩 다른 버전의 프로그램(예컨대 프로그램 2 또는 그 일부)을 로딩할 수 있다.
여기에 설명된 연산 집약적인(computationally intensive) 작업들로부터 고도로 복잡한 작업들을 분리함으로써, 시스템(100)이 알고리즘의 논리적인 복잡성을 처리할 수 있는 가능한 저성능(예컨대, 저전력)인 제어 프로세서(140)를 포함할 수 있으며, 많은 낮은 복잡성(lower-complexity)(예컨대, 더 작거나 및/또는 더 낮은 전력)인 저수준 프로세서들(150)이 알고리즘의 연산 로드(load)를 처리할 수 있다. 이와 같은 틀을 사용함으로써, 시스템(100)은 동일한 연산 동작(예컨대 비디오 디코딩)에 대해 다른 것보다 더 적은 전력을 소모할 수 있다. 비디오 압축해제(decompression)에서, 예컨대 지시 데이터(예컨대, 어떤 처리 작업이 나올 것인지에 대한 상세한 정보)가 다른 데이터보다 먼저 전송되기 때문에, 시스템(100)은 도성능 및 저전력 사용을 이룰 수 있다. 이와 같은 지시 데이터를 사용하여, 제어 프로세서(140)는 후속 작업을 수행하기 위해 즉시(on the fly) 데이터 프로세서(130)의 나머지 부분을 커스터마이즈(customize)하거나 및/또는 재구성할 수 있다.
본 발명의 원리와 일치하는 하나 이상의 실시예들의 상기 설명은 예시 및 설명을 제공하지만, 이것만이 전부이거나 본 발명의 범위를 개시된 정확한 형태로 제한하는 것은 아니다. 상기 설명들에 비추어 변형 및 수정이 가능하거나 또는 본 발명의 다양한 실시예의 실시로부터 이루어질 수 있다.
예컨대, 여기 설명된 계층 처리 틀(hierarchical processing scheme)은 비디 오 데이터에 제한되지 않는다. 오히려, 상기 틀은 지시 데이터(예컨대, 장래의 처리 작업을 지시하는 데이터)가 유효하고, 즉시 프로그램 가능한 저수준 프로세서들(150) 또는 다른 프로세서나 로직을 구성하는 모든 데이터에 적용될 수 있다. 또한, 단일한 장치로 도시되지는 않았지만, 몇몇 실시예에서 메모리(120)는 복수의 장치들을 포함할 수 있다. 예컨대, 저수준 프로세서들(150)에 대한 명령들은 더 작은 RAM, 읽기 전용 메모리(dedicated read-only memory), 또는 다른 별도의 저장 장치에 저장될 수 있는 반면에, 처리되는 데이터는 상대적으로 큰 RAM에 저장될 수 있다.
또한, 제어 프로세서(140)가 알고리즘상의 복잡성을 다루었고 저수준 프로세서들(150)이 데이터 처리를 다루었지만, 언제나 이와 같이 복잡성과 처리를 엄격하게 구별할 필요가 있는 것은 아니다. 예컨대, 몇몇 실시예에서는, 제어 프로세서(140)가 데이터를 처리할 수 있고, 몇몇 실시예에서는, 저수준 프로세서들(150)이 제한된 논리적인 파싱(parsing) 및/또는 의사 결정(decision making)을 다룰 수 있다. 그러나, 이와 같은 혼성 틀에서도, 저수준 프로세서들(150)이 실제 가능한 양만큼의 데이터를 처리하고 제어 프로세서(140)가 실제 가능한 만큼의 알고리즘의 복잡성을 다루는 것이 바람직할 수 있다. 또한, 비디오 정보의 디코딩이 일실시예로서 설명되었지만, 다른 실시예에서 다른 기능들이 가능하다. 예컨대, 시스템(100)은 미디어 정보를 인코딩하거나, 미디어 정보를 렌더링(rendering)하거나, 물리적인 현상들을 모델링하거나, 또는 그밖에 다량의 데이터를 처리하는 것에 관련될 수 있는 상대적으로 복잡한 다수의 동작들을 수행하도록 배치될 수 있다.
게다가, 도 2의 동작들은 도시된 순서대로 실행될 필요가 없으며 모든 동작들이 다 반드시 실시되어야 하는 것도 아니다. 또한 다른 동작들에 종속되지 않는 상기 동작들은 다른 동작들과 병렬적으로 수행될 수 있다. 또한, 상기 도면의 동작들 중 적어도 몇몇은 기계로 판독가능한 매체에서 구현된 명령, 또는 명령들의 그룹으로 구현될 수 있다.
명확하게 언급되지 않은 이상, 본 출원의 설명에 사용된 구성요소, 동작 또는 명령 중 어느 것도 본 발명에 중요하거나 필수적인 것으로 해석되어서는 안된다. 또한, 여기에 사용된 단수의 표현들은 하나 이상의 개체들을 포함하는 것을 의도한 것이다. 하나의 개체만을 의도한 경우에는 "하나의" 또는 유사한 용어가 사용된다. 본 발명의 사상 및 원리로부터 실질적으로 벗어나지 않고 본 발명의 전술한 실시예(들)에 대해 변형 및 변경이 이루어질 수 있다. 상기와 같은 모든 변형 및 변경은 본 명세서의 범위 내에 포함되고 다음의 특허청구범위에 의해 보호되기 위한 것이다.

Claims (23)

  1. 지시데이터, 상기 지시 데이터에 의해 기술되는 기타 데이터, 및 명령들을 저장하는 메모리;
    상기 명령들에 기반하여 상기 기타 데이터를 처리하는 복수의 저수준(low-level) 프로세서들; 및
    상기 지시 데이터로부터 상기 기타 데이터를 처리하기 위해 필요한 상기 명령들의 집합(subset)을 결정하고, 상기 명령들의 집합이 상기 복수의 저수준 프로세서들 중 적어도 하나에 로딩되도록 하는 제어 프로세서
    를 포함하는 시스템.
  2. 제1항에 있어서, 상기 제어 프로세서는 상기 복수의 저수준 프로세서들 각각에 작동가능하게 연결되는(operatively connected) 시스템.
  3. 제1항에 있어서 각각의 저수준 프로세서는 제1 크기의 명령 메모리를 포함하며,
    상기 제어 프로세서는 상기 제1 크기의 적어도 10배인 제2 크기의 명령 메모리를 포함하는 시스템.
  4. 제1항에 있어서,
    상기 메모리, 상기 복수의 저수준 프로세서들, 및 상기 제어 프로세서에 연결되어 상기 지시 데이터, 상기 기타 데이터, 및 상기 명령들의 전송을 조정하는 직접 메모리 접근 장치
    를 더 포함하는 시스템.
  5. 제4항에 있어서, 상기 직접 메모리 접근 장치 및 상기 복수의 저수준 프로세서들은 공통된 칩 내에 포함되는 시스템.
  6. 제5항에 있어서, 상기 제어 프로세서는 상기 공통된 칩 내에 포함되는 시스템.
  7. 제1항에 있어서,
    상기 지시 데이터 및 상기 기타 데이터를 상기 메모리에 제공하는 데이터 소스
    를 더 포함하는 시스템.
  8. 제7항에 있어서, 상기 데이터 소스는 튜너(tuner) 또는 통신 회로를 포함하는 시스템.
  9. 제1항에 있어서,
    상기 복수의 저수준 프로세서들에 의해 처리된 데이터를 수신하는 데이터 목적지(data destination)
    를 더 포함하는 시스템.
  10. 제9항에 있어서, 상기 데이터 목적지는 저장 장치 또는 출력 인터페이스를 포함하는 시스템.
  11. 제1 프로세서에 의해 제1 데이터로부터 수행될 작업을 결정하는 단계;
    상기 작업을 수행하는 명령들을 제2 프로세서에 로딩하는 단계; 및
    제2 데이터 상에서 상기 작업을 수행하도록 상기 명령들을 상기 제2 프로세서에 의해 실행하는 단계
    를 포함하는 방법.
  12. 제11항에 있어서,
    상기 작업 중에 상기 제2 데이터를 상기 제2 프로세서로 전송하는 단계
    를 더 포함하는 방법.
  13. 제11항에 있어서, 상기 제1 데이터는 상기 제2 데이터를 기술하는 방법.
  14. 제13항에 있어서, 상기 제2 데이터는 비디오 정보를 포함하며, 상기 제1 데이터는 상기 비디오 정보의 적어도 한 종류의 인코딩을 포함하는 방법.
  15. 제13항에 있어서, 상기 제2 데이터는 비디오 정보를 포함하며, 상기 제1 데이터는 상기 비디오 정보의 적어도 하나의 디스플레이 모드(display mode)를 포함하는 방법.
  16. 제11항에 있어서,
    상기 로딩하는 단계 이후에, 상기 제1 프로세서에 의해 제3 데이터로부터 수행될 다른 작업을 결정하는 단계; 및
    상기 다른 작업을 수행하는 다른 명령들을 제3 프로세서에 로딩하는 단계
    를 더 포함하는 방법.
  17. 제16항에 있어서,
    상기 제3 데이터에 의해 기술된 제4 데이터 상에서 상기 다른 작업을 수행하도록 상기 다른 명령들을 상기 제3 프로세서에 의해 실행하는 단계
    를 더 포함하는 방법.
  18. 제공되는 프로그램에 기반하여 제1 데이터를 처리하는 제1 프로세서들;
    상기 제1 데이터를 기술하는 제2 데이터에 기반하여 상기 제1 프로세서들에 제공할 적절한 프로그램들을 결정하는 제2 프로세서; 및
    상기 제1 데이터 및 상기 적절한 프로그램들을 상기 제1 프로세서들에 제공 하고 상기 제2 데이터를 상기 제2 프로세서에 제공하도록 상기 제1 프로세서들과 상기 제2 프로세서들에 연결된 메모리 접근기(accessor)
    를 포함하는 장치.
  19. 제18항에 있어서, 상기 제1 프로세서들과 상기 메모리 접근기는 패키지 내에 포함되는 장치.
  20. 제18항에 있어서, 상기 제1 프로세서들은 적어도 8개의 별개의 프로세서들을 포함하는 장치.
  21. 제18항에 있어서, 제1 프로세서는 제1 명령 메모리를 포함하며, 상기 제2 프로세서는 상기 제1 명령 메모리보다 적어도 10배 더 큰 제2 메모리를 포함하는 장치.
  22. 명령들을 포함하며 기계로 판독가능한 매체로서, 상기 명령들이 실행되면, 상기 명령들은 기계로 하여금,
    제1 데이터를 기술하는 제2 데이터에 기반하여 다수의 연산 작업들 중 상기 제1 데이터 상에서 수행할 하나의 연산 작업을 결정하며,
    상기 하나의 연산 작업을 수행하는 다른 명령들을 로딩하고, 및
    상기 제1 데이터 상에서 상기 하나의 연산 작업을 수행하기 위해 상기 다른 명령들을 실행하도록 하는
    기계로 판독가능한 매체.
  23. 제22항에 있어서,
    실행되면, 기계로 하여금 상기 하나의 연산 작업을 수행하는 상기 다른 명령들을 상기 기계 내의 복수의 별개의 프로세서들에 분배하도록 하는 명령들을 더 포함하는 기계로 판독가능한 매체.
KR1020067024004A 2004-05-20 2005-04-29 비디오 처리를 위한 계층 프로세서 아키텍처 KR100860160B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020067024004A KR100860160B1 (ko) 2004-05-20 2005-04-29 비디오 처리를 위한 계층 프로세서 아키텍처

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/850,095 2004-05-20
KR1020067024004A KR100860160B1 (ko) 2004-05-20 2005-04-29 비디오 처리를 위한 계층 프로세서 아키텍처

Publications (2)

Publication Number Publication Date
KR20070022273A KR20070022273A (ko) 2007-02-26
KR100860160B1 true KR100860160B1 (ko) 2008-09-24

Family

ID=41622198

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067024004A KR100860160B1 (ko) 2004-05-20 2005-04-29 비디오 처리를 위한 계층 프로세서 아키텍처

Country Status (1)

Country Link
KR (1) KR100860160B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999015983A2 (en) * 1997-09-23 1999-04-01 Nokia Networks Oy Adaptive processor system using a packet switched network
US6237029B1 (en) 1996-02-26 2001-05-22 Argosystems, Inc. Method and apparatus for adaptable digital protocol processing
EP1414014A2 (en) * 2002-10-22 2004-04-28 Broadcom Corporation Filter module for a video decoding system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6237029B1 (en) 1996-02-26 2001-05-22 Argosystems, Inc. Method and apparatus for adaptable digital protocol processing
WO1999015983A2 (en) * 1997-09-23 1999-04-01 Nokia Networks Oy Adaptive processor system using a packet switched network
EP1414014A2 (en) * 2002-10-22 2004-04-28 Broadcom Corporation Filter module for a video decoding system

Also Published As

Publication number Publication date
KR20070022273A (ko) 2007-02-26

Similar Documents

Publication Publication Date Title
JP4964774B2 (ja) ビデオ処理のための階層的プロセッサ構造
JP2022519855A (ja) ビデオストリーム復号方法、装置、端末機器およびプログラム
JP4664406B2 (ja) 動画像復号化装置、半導体装置、映像機器および動画像復号化方法
US20180343460A1 (en) Decoder resource allocating method and associated apparatus
CN104850456A (zh) 多进程解码方法和系统
RU2265879C2 (ru) Устройство и способ для извлечения данных из буфера и загрузки их в буфер
US8681862B2 (en) Moving picture decoding apparatus and moving picture decoding method
US20100053181A1 (en) Method and device of processing video
JP4865662B2 (ja) エントロピー符号化装置、エントロピー符号化方法およびコンピュータプログラム
US6072543A (en) Priority order processing circuit and method for an MPEG system
KR100860160B1 (ko) 비디오 처리를 위한 계층 프로세서 아키텍처
KR20170069074A (ko) 디코더의 동작 방법, 및 상기 디코더를 포함하는 어플리케이션 프로세서의 동작 방법
US20050175314A1 (en) Method and system for performing reverse play of SD MPEG video
US8446955B2 (en) Speculative motion prediction cache
US8036264B2 (en) Memory management in video decoding systems
CN1148061C (zh) 图像重放设备
US6785337B2 (en) MPEG picture processing apparatus and data transferring method using the apparatus
CN110505425A (zh) 一种解码方法、解码装置、电子设备和可读存储介质
US20080273595A1 (en) Apparatus and related method for processing macroblock units by utilizing buffer devices having different data accessing speeds
TWI517695B (zh) 晶片內/晶片外記憶體管理
US7012961B2 (en) Method and apparatus for decoding image having format for digital camcorder
CN102132568A (zh) 运动检测装置
JP2001184302A (ja) バッファ制御回路
US10003813B2 (en) Method and system for decoding by enabling optimal picture buffer management
US20080297522A1 (en) Image processing apparatus, image processing method, and computer-readable storage medium

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: 20120919

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20130902

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140829

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20150827

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160831

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee