KR101084044B1 - 고화질 멀티 포맷 비디오 코덱 시스템을 위한 멀티 프로세서 플랫폼 기반 시스템 - Google Patents

고화질 멀티 포맷 비디오 코덱 시스템을 위한 멀티 프로세서 플랫폼 기반 시스템 Download PDF

Info

Publication number
KR101084044B1
KR101084044B1 KR1020100018907A KR20100018907A KR101084044B1 KR 101084044 B1 KR101084044 B1 KR 101084044B1 KR 1020100018907 A KR1020100018907 A KR 1020100018907A KR 20100018907 A KR20100018907 A KR 20100018907A KR 101084044 B1 KR101084044 B1 KR 101084044B1
Authority
KR
South Korea
Prior art keywords
cluster
processor
clusters
data
processors
Prior art date
Application number
KR1020100018907A
Other languages
English (en)
Other versions
KR20110099895A (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 KR1020100018907A priority Critical patent/KR101084044B1/ko
Publication of KR20110099895A publication Critical patent/KR20110099895A/ko
Application granted granted Critical
Publication of KR101084044B1 publication Critical patent/KR101084044B1/ko

Links

Images

Classifications

    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
    • 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/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • 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
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors

Abstract

고화질의 멀티 포맷 비디오 코덱 시스템을 위한 멀티 프로세서 플랫폼 기반 시스템이 개시된다. 복수의 프로세서를 멀티 포맷 비디오 코덱(multi-format video codec)의 기능 블록 각각에 상응하여 그룹화한 복수의 클러스터, 상기 복수의 클러스터간에 제어 정보를 통신하기 위해 상기 복수의 클러스터간에 상호 연결되는 제어 네트워크 및 상기 복수의 클러스터간에 데이터를 통신하기 위해 상기 복수의 클러스터간에 상호 연결되는 데이터 네트워크를 포함하는 멀티 프로세서 플랫폼 기반 시스템에 의하면, 고성능의 소프트웨어 비디오 어플리케이션을 효율적으로 구현할 수 있으며, 멀티 포맷 비디오 코덱 지원이 가능한 효과가 있다.

Description

고화질 멀티 포맷 비디오 코덱 시스템을 위한 멀티 프로세서 플랫폼 기반 시스템{Multi-processor platform-based system for high-definition multi-format video systems}
본 발명은 멀티 프로세서 플랫폼 기반 시스템에 관한 것으로, 보다 상세하게는 고화질의 멀티 포맷 비디오 코덱 시스템을 위한 멀티 프로세서 플랫폼 기반 시스템에 관한 것이다.
보다 높은 성능을 요구하는 어플리케이션들은 마이크로프로세서의 복잡도를 빠르게 증가시켰다. 폴락의 법칙(Pollack’s rule)에 따르면, 동일 프로세스 기술에서 로직 복잡도가 두 배가 되면 마이크로프로세서는 대략 40% 정도 성능이 향상될 수 있다. 그러나 디바이스가 점점 더 작아질수록 커지는 서브-임계 누설(sub-threshold leakage)로 인해 그 성능이 비례하여 개선되지는 못한다. 그리고 칩에 있어서 트랜지스터 집적도는 계속 증가하겠지만, 최근 고성능 마이크로프로세서의 성능 증가율은 전력 및 열 문제로 인해 둔화되기 시작하고 있다.
전력 및 열적 제한뿐 아니라 성능 요건을 만족시키기 위해, 여러 개의 프로세서 및 메모리를 한 개의 칩에 구현한 멀티 코어 솔루션이 적용되기 시작했다. 지금까지는 하나의 프로세서가 여러 개의 작업을 처리했기에 클록 속도가 빨라도 병목현상이 생길 경우 작업처리 속도에 제약사항이 존재한다. 그러나 멀티 코어에서는 여러 개의 프로세서가 작업을 분산 처리해 효율성을 높일 수 있고, 높은 클록으로 인한 전력소모 및 발열 문제를 동시에 해결해 주는 장점이 있다. 하지만 특정 어플리케이션을 위해 정해진 멀티 코어 플랫폼의 이용 가능한 모든 리소스를 최대한 이용하는 것은 간단한 일이 아니다. 플랫폼을 사용하기 쉽고 효율적으로 만들기 위해, 멀티 코어 플랫폼은 프로세싱 요소(processing element)의 아키텍처(architecture), 통신 네트워크 아키텍처, 프로그래밍 환경과 같은 3가지 특징이 중요하다.
기존에 UltraSPARC T1 프로세서, 피코어레이(picoArray), StepNP, TCT(tightly-coupled-thread)와 같은 다양한 멀티 코어 플랫폼이 제안되었다. 이러한 멀티 코어 플랫폼들은, 프로세싱 요소 사이에서 강한 결합(tightly-coupled) 멀티스레드 프로그램과 스트림 데이터에 의해 설명되는 고성능 비디오 어플리케이션에 적합하다. 또한, 실시간 제한으로 인해 저지연(low latency) 및 보장된 처리량(throughput)을 요구한다. 그러므로 파인 그레인 스레드(fine-grain thread) 사이의 잦은 동기화와 이송(migration) 때문에, 고성능 비디오 플랫폼은 프로세싱 요소와 인터-프로세서 통신(inter-processor communication, IPC)을 위한 복잡한 아키텍처를 적용해야 한다.
현재 H.264/AVC, VC-1, MPEG-2, MPEG-4, JPEG2000 등과 같은 10여 개 이상의 표준 비디오 포맷이 있다. 또한 시장에서 널리 이용되는 몇몇의 비표준 비디오 포맷도 존재하며, 나아가 하나의 비디오 포맷에서도 많은 프로파일과 레벨이 있다. 각 프로파일은 어플리케이션의 특정 클래스를 타겟으로 하는 것이고, 각 레벨은 프레임의 특정 크기를 나타낸다. 미래에는 더 많은 수의 비디오 포맷이 있을 것이다.
전술한 배경기술은 발명자가 본 발명의 도출을 위해 보유하고 있었거나, 본 발명의 도출 과정에서 습득한 기술 정보로서, 반드시 본 발명의 출원 전에 일반 공중에게 공개된 공지기술이라 할 수는 없다.
본 발명은 고성능의 소프트웨어 비디오 어플리케이션을 효율적으로 구현할 수 있으며, 멀티 포맷 비디오 코덱을 지원하는 멀티 프로세서 플랫폼 기반 시스템을 제공하기 위한 것이다.
또한, 본 발명은 복수의 프로세서를 클러스터화하고, 클러스터 내에서의 인트라 클러스터(intra-cluster) 통신과 클러스터간의 인터 클러스터(inter-cluster) 통신으로 분리함으로써 프로세서간의 효율적인 통신을 통해 사용한 프로세서 개수에 비례하는 높은 성능을 얻을 수 있는 멀티 프로세서 플랫폼 기반 시스템을 제공하기 위한 것이다.
또한, 본 발명은 모든 프로세서를 포인트 투 포인트(point-to-point) 연결하는 것에 비해 상호 연결 오버헤드(interconnection overhead)를 크게 줄일 수 있는 멀티 프로세서 플랫폼 기반 시스템을 제공하기 위한 것이다.
또한, 본 발명은 모든 프로세서간의 통신을 단일 명령(single instruction)으로 구현할 수 있어 지연시간을 줄일 수 있는 멀티 프로세서 플랫폼 기반 시스템을 제공하기 위한 것이다.
본 발명의 이외의 목적들은 하기의 설명을 통해 쉽게 이해될 수 있을 것이다.
본 발명의 일 측면에 따르면, 복수의 프로세서를 포함하는 멀티 프로세서 플랫폼 기반 시스템에 있어서, 상기 복수의 프로세서를 멀티 포맷 비디오 코덱(multi-format video codec)의 기능 블록 각각에 상응하여 그룹화한 복수의 클러스터; 상기 복수의 클러스터간에 제어 정보를 통신하기 위해 상기 복수의 클러스터간에 상호 연결되는 제어 네트워크; 및 상기 복수의 클러스터간에 데이터를 통신하기 위해 상기 복수의 클러스터간에 상호 연결되는 데이터 네트워크를 포함하는 멀티 프로세서 플랫폼 기반 시스템이 제공된다.
상기 복수의 클러스터는 문법 파싱(syntax parsing), 변환 및 양자화(transform and quantization), 프레임 내 픽셀 예측(공간 예측)(intra-frame pixel prediction (spatial prediction)), 프레임간 픽셀 예측(시간 예측)(inter-frame pixel prediction (temporal prediction)), 후 처리(post processing), 움직임 추측(motion estimation) 기능 블록 중 하나 이상을 포함하는 상기 멀티 포맷 비디오 코덱의 기능 블록에 각각 대응할 수 있다.
상기 클러스터는, 상기 복수의 프로세서와; 상기 복수의 프로세서가 공유하는 명령 캐시 및 데이터 캐시와; 상기 복수의 프로세서에 의해 실행되는 스레드의 스케쥴링, 동기화 및 콘텍스트 교환(context switching)을 수행하는 하드웨어 OS 커널(Hardware OS Kernel)을 포함할 수 있다.
상기 프로세서는 상기 스레드를 실행하고, 상기 데이터 네트워크를 통해 타 클러스터와 상기 데이터를 통신할 수 있다. 상기 프로세서는 상기 스레드를 편성하고 제어하며, 상기 제어 네트워크를 통해 타 클러스터와 상기 제어 정보를 통신할 수 있다.
상기 클러스터는, 계산-집중(computation-intensive) 및 데이터-집중(data-intensive)적인 오퍼레이션 중 하나 이상을 수행하여 상기 프로세서를 보완하는 디지털 신호 처리기를 더 포함할 수 있다.
상기 디지털 신호 처리기는, 상기 프로세서 코어로부터 상기 디지털 신호 처리기로의 명령어(command)를 저장하는 명령어 큐와, 상기 명령어에 따라 캐시 메모리에 저장된 스레드를 실행하는 실행 유닛과, 상기 실행 유닛에 의해 수행 가능한 명령어를 상기 명령어 큐로부터 가져오는 디지털 신호 처리기 관리자를 더 포함할 수 있다.
상기 클러스터는 인터 클러스터 통신시 상기 제어 네트워크를 통해 타 클러스터와 제어 정보를 통신하기 위해 상태 확인, 인터럽트 세팅 및 핸들링을 수행하는 네트워크 인터페이스를 더 포함할 수 있다.
상기 제어 네트워크는 FIFO 채널과 연결되고, 목적지/근원지 클러스터 식별자 및 채널 식별자를 이용하여 상기 복수의 클러스터간에 포인트 투 포인트(point to point) 연결을 통한 인터 클러스터 통신을 제공할 수 있다.
상기 데이터 네트워크는 공유 로컬 메모리를 이용하여 상기 복수의 클러스터간에 데이터를 송수신할 수 있다.
한편, 본 발명의 다른 측면에 따르면, 복수의 프로세서가 멀티 포맷 비디오 코덱의 기능 블록 각각에 상응하여 그룹화된 복수의 클러스터를 포함하는 멀티 프로세서 플랫폼 기반 시스템에서 인터 클러스터 통신을 위해 제어 링크를 구축하는 방법으로서, 근원지 클러스터에 포함되는 프로세서가 상기 제어 링크를 구축하고자 하는 목적지 클러스터와의 사이에 할당된 FIFO 채널의 이용가능 상태를 확인하는 단계: 상기 FIFO 채널이 풀(full)이 아닌 경우 상기 목적지 클러스터를 식별하기 위한 제1 클러스터 식별자와 상기 FIFO 채널을 식별하기 위한 제1 채널 식별자를 이용하여 PUT 명령을 등록하는 단계; 제어 정보가 상기 제1 채널 식별자에 의해 식별되는 상기 FIFO 채널 내에 전달되는 단계: 상기 목적지 클러스터가 상기 FIFO 채널의 이용가능 상태를 확인하는 단계; 상기 FIFO 채널이 비어있지 않은 경우 상기 근원지 클러스터를 식별하기 위한 제2 클러스터 식별자와 상기 FIFO 채널을 식별하기 위한 제2 채널 식별자를 이용하여 GET 명령을 등록하는 단계; 및 상기 제2 채널 식별자에 의해 식별되는 상기 FIFO 채널 내의 상기 제어 정보를 읽어오는 단계를 포함하는 제어 링크 구축 방법이 제공된다.
상기 근원지 클러스터 및 상기 목적지 클러스터는 네트워크 인터페이스를 이용하여 상기 FIFO 채널의 이용가능 상태를 확인할 수 있다.
한편, 본 발명의 또 다른 측면에 따르면, 복수의 프로세서가 멀티 포맷 비디오 코덱의 기능 블록 각각에 상응하여 그룹화된 복수의 클러스터를 포함하는 멀티 프로세서 플랫폼 기반 시스템에서 인터 클러스터 통신을 위해 데이터 링크를 구축하는 방법으로서, 근원지 클러스터 내의 제1 프로세서가 상기 근원지 클러스터 내의 제2 프로세서로 제어 메시지를 전달하는 단계: 상기 제2 프로세서는 상응하는 공유 메모리로 데이터를 전달하는 단계; 상기 제2 프로세서는 상기 제1 프로세서로 제어 메시지 응답을 보내는 단계; 상기 제1 프로세서는 목적지 클러스터 내의 제3 프로세서로 제어 네트워크의 FIFO 채널을 통해 메시지를 보내는 단계; 상기 제3 프로세서는 상기 FIFO 채널 내의 메시지를 읽고, 상기 목적지 클러스터 내의 제4 프로세서로 제어 메시지를 보내는 단계; 상기 제4 프로세서는 상기 공유 메모리로부터 상기 데이터를 수신하는 단계; 및 상기 제4 프로세서는 상기 제3 프로세서로 동기화 메시지 응답을 보내는 단계를 포함하는 데이터 링크 구축 방법이 제공된다.
상기 근원지 클러스터 및 상기 목적지 클러스터는 각각 하드웨어 OS 커널을 통해 내부에서 상기 제어 메시지를 전달할 수 있다.
전술한 것 외의 다른 측면, 특징, 이점이 이하의 도면, 특허청구범위 및 발명의 상세한 설명으로부터 명확해질 것이다.
본 발명의 실시예에 따르면, 고성능의 소프트웨어 비디오 어플리케이션을 효율적으로 구현할 수 있으며, 멀티 포맷 비디오 코덱 지원이 가능한 효과가 있다.
또한, 복수의 프로세서를 클러스터화하고, 클러스터 내에서의 인트라 클러스터 통신과 클러스터간의 인터 클러스터 통신으로 분리함으로써 프로세서간의 효율적인 통신을 통해 사용한 프로세서 개수에 비례하는 높은 성능을 얻을 수 있다.
또한, 모든 프로세서를 포인트 투 포인트 연결하는 것에 비해 상호 연결 오버헤드를 크게 줄일 수 있다.
또한, 모든 프로세서간의 통신을 단일 명령으로 구현할 수 있어 지연시간을 줄일 수 있다.
도 1은 본 발명의 일 실시예에 따른 멀티 프로세서 플랫폼 기반 시스템의 구성을 나타내는 블록도.
도 2는 본 발명의 일 실시예에 따른 멀티 프로세서 플랫폼 기반 시스템에 포함되는 클러스터의 구성을 나타낸 블록도.
도 3은 본 발명의 일 실시예에 따른 클러스터에 포함되는 공유 명령 캐시 및 공유 데이터 캐시의 구성을 나타낸 블록도.
도 4는 본 발명의 일 실시예에 따른 클러스터에 포함되는 디지털 신호 처리기의 구성을 나타낸 블록도.
도 5는 본 발명의 일 실시예에 따른 멀티 프로세서 플랫폼 기반 시스템에 적용되는 제어 네트워크의 구성을 나타낸 블록도.
도 6은 제어 링크를 구축하는 방법을 설명하기 위한 도면.
도 7은 본 발명의 일 실시예에 따른 멀티 프로세서 플랫폼 기반 시스템에 적용되는 데이터 네트워크의 구성을 나타낸 블록도.
도 8은 데이터 링크를 구축하는 방법을 설명하기 위한 도면.
도 9는 본 발명의 일 실시예에 따른 캐시에 대해서 통합된 메모리 맵의 구성을 나타내는 블록도.
도 10은 본 발명의 일 실시예에 따른 클러스터 사이에 데이터 트랜잭션을 위한 일관성 스킴을 나타내는 도면.
본 발명은 다양한 변환을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변환, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 본 발명을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다.
본 명세서에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
또한, 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 본 발명을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
이하, 본 발명의 실시예에 대해 관련 도면들을 참조하여 상세히 설명하기로 한다.
도 1은 본 발명의 일 실시예에 따른 멀티 프로세서 플랫폼 기반 시스템의 구성을 나타내는 블록도이다.
본 실시예에 따른 멀티 프로세서 플랫폼 기반 시스템은 고화질 멀티 포맷 비디오 코덱 시스템으로서, 시스템을 구성하는 복수의 프로세서(P)가 클러스터화됨으로써, 복수의 클러스터(cluster)(10)로 구분될 수 있다. 본 명세서에서 프로세서는 스레드를 실행하는 프로세싱 요소로서, 코어(core), 프로세서 코어(processor core)와 동일한 의미로 사용되며, 이하에서는 프로세서로 통칭하기로 한다.
본 실시예에 따른 멀티 프로세서 플랫폼 기반 시스템에서, 하나의 클러스터(10) 내에 포함된 프로세서(P)간에는 인트라 클러스터 통신을 수행하며, 각 클러스터(10)간에는 인터 클러스터 통신을 수행하여 프로세서간의 효율적인 통신 수행이 가능하도록 한다. 따라서, 멀티 프로세서 플랫폼 기반 시스템에 포함되는 프로세서(P)의 개수에 비례하여 높은 성능을 얻을 수 있다.
도 1을 참조하면, 본 실시예에 따른 멀티 프로세서 플랫폼 기반 시스템은 복수의 클러스터(10-1. 10-2. 10-3. 10-4, 이하 ‘10’이라 통칭함), 제어 네트워크(20), 데이터 네트워크(30)를 포함한다.
클러스터(10)는 서로 기본적으로 어드레스 공간을 공유하며, 제어 정보의 전달을 위한 제어 네트워크(control network)(20)와 데이터 전달을 위한 데이터 네트워크(data network)(30)를 통해 상호 연결(interconnection)된다.
멀티 프로세서 플랫폼 기반 시스템이 적용되는 어플리케이션, 예를 들면 비디오 어플리케이션을 복수의 기능 블록으로 나눈 후 각 기능 블록마다 하나씩의 클러스터(10)를 할당하여 태스크 수준 병렬성(task-level parallelism)을 획득할 수 있다.
비디오 어플리케이션을 분석하면, 주요 기능 블록은 기능에 따라 다음과 같이 상응하여 분류할 수 있다. 디코더에 대해서는, 문법 파싱, 변환 및 양자화, 프레임 내 픽셀 예측(공간 예측), 프레임간 픽셀 예측(시간 예측), 및 후 처리 기능 블록이 있다. 인코더에 대해서는, 움직임 추측 기능 블록을 더 포함한다. 따라서, 본 실시예에 따르면 각 기능 블록에 대해서 하나씩의 클러스터(10)가 할당될 수 있다.
제어 네트워크(20)와 데이터 네트워크(30)는 2개의 분리된 레이어(layer)의 상호 연결 네트워크이다. 제어 네트워크(20)는 한 그룹의 FIFO(First-In First-Out, 선입선출) 채널(60)을 가지는 제어 링크를 구현하여 멀티 기능 블록을 위한 분산 제어를 지원한다.
데이터 네트워크(30)는 공유 로컬 메모리(50)를 가지고 일 클러스터(10)로부터 타 클러스터(10)로의 로컬 데이터 링크를 구현하여 분산 로컬 메모리를 이용한 데이터 스트리밍을 지원한다. 또한, 데이터 네트워크(30)는 DMA 컨트롤러(32)를 이용하여 오프-칩 메모리(off-chip memory), 즉 글로벌 메모리(40)로의 글로벌 링크(global link)도 지원한다. 도 1에 도시된 배열 블록(configuration block)(52)은 상술한 로컬 데이터 링크를 구현하기 위한 구성이다.
클러스터 내 프로세서간 통신은 하드웨어로 구현된 OS 커널을 통해서 이루어지며, 클러스터간 통신은 클러스터(10)를 포인트 투 포인트(point-to-point)로 연결하고 있는 FIFO 채널(60)을 통해 이루어지며, 각각은 단일 명령(single instruction)으로 구현될 수 있다.
이를 통해 멀티 프로세서 플랫폼 기반 시스템을 구성하고 있는 모든 프로세서를 포인트 투 포인트로 연결하는 것에 비해서 상호 연결 오버헤드(interconnection overhead)를 크게 줄일 수 있다. 또한, 지연시간 오버헤드(latency overhead)를 가지는 NOC 통신에 비해서 모든 프로세서간 통신을 단일 명령으로 구현할 수 있어 지연시간을 줄일 수 있다.
또한, 고성능의 소프트웨어 비디오 어플리케이션은 다수의 강한 결합 멀티스레드 태스크(tightly-coupled multithread task)들로 구현되기 때문에, 프로세서간 통신을 상기와 같이 2개로 분리함으로써, 스레드(thread)간 통신은 인트라 클러스터 통신으로, 태스크(task)간 통신은 인터 클러스터 통신으로 지원함으로써 고성능의 소프트웨어 비디오 어플리케이션을 효율적으로 구현할 수 있다.
또한, 도 1에서는 멀티 프로세서 플랫폼 기반 시스템이 4개의 클러스터(10)를 포함하고 있으며 하나의 클러스터(10) 내에 4개의 프로세서(P)가 포함되는 것으로 도시되어 있지만, 본 발명의 권리범위가 이에 한정되는 것은 아니며, 필요에 따라 클러스터(10)의 수 및 하나의 클러스터(10) 내에 포함되는 프로세서(P)의 수는 다양할 수 있을 것이다.
이하 멀티 프로세서 플랫폼 기반 시스템의 각 구성요소에 대하여 관련 도면을 참조하여 그 기능 및 구성에 대하여 상세히 설명하기로 한다.
도 2는 본 발명의 일 실시예에 따른 멀티 프로세서 플랫폼 기반 시스템에 포함되는 클러스터의 구성을 나타낸 블록도이고, 도 3은 본 발명의 일 실시예에 따른 클러스터에 포함되는 공유 명령 캐시 및 공유 데이터 캐시의 구성을 나타낸 블록도이며, 도 4는 본 발명의 일 실시예에 따른 클러스터에 포함되는 디지털 신호 처리기의 구성을 나타낸 블록도이다.
도 2를 참조하면, 클러스터(10)는 복수의 프로세서(100-1, 100-2, 100-3, 100-4, 이하 ‘100’이라 통칭함), 공유 명령 캐시(110), 공유 데이터 캐시(120), 하드웨어 OS 커널(Hardware OS Kernel, HOSK)(130), 네트워크 인터페이스(Network Interface)(150)를 포함한다. 필요에 따라 계산-집중(computation-intensive) 혹은 데이터-집중(data-intensive)적인 오퍼레이션을 위한 하나 이상의 디지털 신호 처리기(Digital Si2gnal Processor, DSP)(140)를 더 포함할 수 있다.
본 실시예에 따른 클러스터(10)는 복수의 프로세서(100)를 클러스터화, 즉 그룹화함으로써, 스레드 수준 병렬성(thread-level parallelism)을 이용하여 보다 높은 성능을 얻을 수 있다. 프로세서(100)는 RISC 마이크로프로세서일 수 있으며, 예를 들어 16개의 32비트 다목적 레지스터와 1개의 32비트 시스템 레지스터를 가지는 5-스테이지 파이프라인 프로세서일 수 있다. 각 프로세서(100)의 이용이 평균적으로 80%인 것을 가정하면, 클러스터(10)는 프로세서(100)가 130nm 공정에서 200MHz에서 동작하기 때문에 최대 640 MIPS(Million Instructions Per Second)까지 지원할 수 있다.
하드웨어 OS 커널(130)이 동적으로 클러스터(10) 내에서 스레드를 스케쥴링하기 때문에 한 그룹의 스레드를 하나의 클러스터(10)에 배치함으로써 스레드 수준 병렬성을 용이하게 얻을 수 있다. 또한, 하드웨어 OS 커널(130)은 클러스터(10) 내에서 스레드를 위한 콘텐스트 교환 및 동기화(synchronization)의 오버헤드를 감소시킨다.
하드웨어 OS 커널(130)은 메인 컨트롤러(132)와, 스레드 관리자(136)와, 콘텍스트 관리자(134)를 포함한다. 스레드 관리자(136)는 하나의 스레드가 수행될 준비가 되었는지 여부를 나타내는 1 비트 벡터를 가지고 레디 큐(ready queue)를 구현한다. 스레드 디스크립터(thread descriptor)와 세마포어 디스크립터(semaphore descriptor)는 스레드 제어 메모리(170)에 저장되어 있다. 스레드 디스크립터는 우선순위 및 대기 스레드를 위한 큐를 포함한다. 세마포어 디스크립터는 그 값과 계수 세마포어(counting semaphore)인지 혹은 이진 세마포어(binary semaphore)인지를 나타내는 타입 인디케이터를 포함한다. 스레드 스케쥴링을 위해, 스레드 관리자(136)는 레디 큐 벡터를 스캔하여 가장 큰 우선순위 값을 가지는 레디 스레드(ready thread)를 선택한다. 또한 대기 큐(wait queue)를 각 세마포어에 할당하고, 해당 세마포어를 기다리는 모든 스레드를 저장한다. 대부분의 세마포어는 단지 하나의 대기 스레드를 가지기 때문에, 대기 큐는 링크드 리스트(linked list)로 구현된다.
스레드 스케쥴링 후에, 콘텍스트 관리자(134)는 스케쥴링된 스레드의 콘텍스트를 콘텍스트 메모리(160)로부터 콘텍스트 버퍼로 프리페치(pre-fetch)한다. 콘텍스트 교환은 프로세서(100) 내에서 실행되는 스레드가 입력 데이터 혹은 외부 이벤트를 기다리고 있거나 프리페치된 스레드의 우선순위가 프로세서(100) 내에서 실행되고 있는 스레드보다 높을 때에만 일어난다.
클러스터(10) 내에서 각 프로세서(100)는 2개의 로컬 버스, 콘텍스트 버스(context bus) 및 명령어 버스(command bus)를 통해 하드웨어 OS 커널(130)로 연결되어 있다. 스레드 생성과 소멸, 세마포어 포스팅 및 대기와 같은 OS API를 포함하는 하드웨어 OS 커널(130)로의 제어 명령어는 명령어 버스를 통해 보내진다.
스레드 스케쥴링 이외에, 하드웨어 OS 커널(130)은 세마포어 액세스를 제어한다. 커널의 크기가 HOSK API를 포함하여 단지 1.5KB이긴 하지만, 운영 시스템 소프트웨어가 없는 백그라운드 내에서 콘텍스트 버스를 통해 스레드 콘텍스트를 교환한다. 하드웨어 OS 커널(130) 덕분에, 인터럽트 로직(interrupt logic)과 뱅크드 레지스터(banked register)와 같은 시스템 소프트웨어를 위한 하드웨어 로직 지원을 포함하지 않는 클러스터(10) 내의 프로세서(100)를 이용할 수 있다.
공유 명령 캐시(shared instruction cache)(120)와 공유 데이터 캐시(shared data cache)(130)는 프로세서(100) 사이에서 공유된다. 공유 명령 캐시(120) 또는/및 공유 데이터 캐시(130)는 L1 캐시일 수 있으며, 이러한 L1 캐시를 공유함으로써 하나의 클러스터(10) 내에서 캐시 일관성(cache coherency)을 얻을 수 있다. 하지만, L1 캐시를 공유하는 것은 태그(tag)를 매칭하고 캐시 메모리에 액세스함에 있어서 충돌을 야기한다. 그러므로, 도 3에 도시된 것과 같이 공유 명령 캐시(120) 및 공유 데이터 캐시(130) 모두에 대해서 캐시 메모리를 4개의 뱅크(bank)로 구현함으로써 액세스 충돌을 완화한다.
공유 명령 캐시(120)의 경우 프로세서(100) 사이에 인터리빙(interleaving)하는 뱅크를 가지고 액세스 충돌을 감소시킨다. 더구나 각 프로세서(100)와 캐시 메모리 사이에 명령 프리페치 큐(180-1, 180-2, 180-3, 180-4, 이하 ‘180’으로 통칭함)를 적용한다.
태그 매칭 충돌을 감소시키기 위해, 요구된 명령 및 그 전의 명령이 동일 블록 내에 있다면 태그 매칭은 스킵된다. 그러므로, 캐시 블록의 크기를 증가시킴으로써 태그 매칭 충돌은 더 감소될 수 있다. 대부분의 명령이 순차적으로 컴파일러 생성 코드 내에서 페치되기 때문에 이러한 스킴(scheme)이 효력이 있다.
8 워드(word)의 블록을 가지는 2-웨이 세트 연관 구조 캐시(2-way set-associative cache)를 위한 4 뱅크 캐시 메모리가 도 3의 하단에 도시되어 있다. 뱅크 내에 2개의 다른 웨이(Way0, Way1)의 블록에 대해 8개의 워드를 포지셔닝함에 있어서의 오프셋은 2개의 웨이로부터의 명령이 태그 매칭 동안 동시에 페치(fetch)될 수 있도록 한다. 예를 들어, 캐시 컨트롤러는 뱅크 0과 뱅크 2로부터 각각 명령 어드레스의 블록 오프셋이 0인 2개의 웨이에 대한 2개의 명령을 동시에 읽는다. 2개의 태그 중 어느 하나가 매칭될 때, 컨트롤러는 명령 프리페치 큐(180) 내로 매칭된 웨이의 명령만을 푸쉬(push)한다.
컴파일러 생성 코드에서, 로드/스토어(load/store) 명령은 전체 명령의 대략 20% 정도이다. 그러므로, 공유 데이터 캐시(130)의 경우 그 액세스의 빈도는 상대적으로 매우 적다. 하지만, 로드/스토어 명령은 임의의 주소에 액세스하는 경향이 있기 때문에 프리페치 큐를 이용할 수는 없다. 또한, 이러한 비순차적 액세스는 태그 매칭 충돌을 증가시킨다. 대략 60% 정도의 데이터 액세스가 스택 메모리에 대한 것이다. 그러므로, 각 프로세서(100)와 데이터 캐시 컨트롤러 사이에 작은 태그 버퍼(190-1, 190-2, 190-3, 190-4, 이하 ‘190’으로 통칭함)를 추가함으로써 충돌을 감소시킬 수 있다. 태그 버퍼(190)는 현재 스택 포인터에 인접하면서 최근에 매칭된 태그들의 단기간 히스토리를 저장하고 있다.
각 프로세서(100)의 성능은 수백의 MIPS 범위 내에 있으며, 클러스터(10)의 성능은 멀티 클러스터를 적용하더라도 고성능 비디오 코덱 어플리케이션을 지원하기에 충분히 높지 않을 수 있다. 예를 들어, 720p 30fps 의 H.264/AVC 비트스트림을 디코딩하는 작업량은 20개 이상의 GOP에 달한다. 따라서, 본 실시예에 따른 클러스터(10)는 디지털 신호 처리기(140)를 더 포함할 수 있다.
클러스터(10) 내에는 각 기능의 제어 파트와 데이터 처리 파트의 일부가 프로세서(100)내에서 실행된다. 반면 대부분의 계산-집중 혹은 데이터-집중 파트는 디지털 신호 처리기(140)에서 실행된다. 따라서, 멀티 프로세서 플랫폼 기반 시스템은 클러스터 집합체를 이용하여 낮은 동작 클록 주파수를 가지면서도 고성능을 제공하고 설계 복잡도를 실질적으로 감소시킬 수 있는 효과가 있다.
디지털 신호 처리기(140)는 클러스터(10)에 매핑된 기능 블록의 계산-집중 혹은 데이터-집중적 오퍼레이션(computation or data-intensive operation)을 효율적으로 프로그램할 수 있을 정도로 유연하여, 고성능 비디오 코덱 시스템의 성능 요구를 만족시킬 수 있게 된다. 디지털 신호 처리기(140)는 기능에 있어서 도메인 관련 파트(domain-specific part)를 동시에 실행함으로써 클러스터(10) 내의 프로세서(100)를 보완한다. 그러므로 계산-집중 혹은 데이터-집중적 오퍼레이션을 위한 코드 실행을 최적화하는 것이 가능하다. 디지털 신호 처리기(140)는 모든 스레드를 위한 코드에 대해 충분한 메모리를 가지고 있어야 하며, 초기화 동안 클러스터(10)의 프로세서는 모든 스레드를 위한 코드를 다운로드해야 한다. 디지털 신호 처리기(140)에 의해 실행되는 스레드는 파싱(parsing)과 같은 제어-집중적인 기능을 위한 파인 그레인드(fine-grained) 스레드이거나, 계산-집중 기능을 위한 코어스 그레인드 (coarse-grained) 스레드일 수 있다.
프로세서(100)와 디지털 신호 처리기(140) 사이에는 강한 결합 상호 연결(tightly coupled interconnection)을 적용하는데, 이는 상호 연결이 시스템 성능에 중요하기 때문이다. 도 4를 참조하면, 프로그래머블 디지털 신호 처리기(140)를 가지는 클러스터(10)의 아키텍처가 도시되어 있다. 프로세서(100)로부터 디지털 신호 처리기(140)로의 통신 명령어는 특별한 보조프로세서 명령으로서, 처음에 상응하는 명령어 큐(210-1, 210-2, 210-3, 210-4) 내에 저장되었다가 실행시 분리시킨다. 프로세서(100)가 실행 유닛(140)의 상태를 모니터링하지 않고서도 디지털 신호 처리기(140)를 이용하는 것이 가능하도록, 디지털 신호 처리기 관리자(220)는 실행 유닛(230)에 의해 수행될 수 있는 명령어를 가져온다.
클러스터(10)와 디지털 신호 처리기(140) 사이에는 공유 로컬 메모리가 존재하며, 공유 로컬 메모리의 구조가 도 4의 우측에 도시되어 있다. 클러스터(10)의 디지털 신호 처리기(140)는 로컬 메모리 컨트롤러(250)를 통해 근원지 로컬 메모리(260)로부터 입력 오퍼런드를 읽고, 다른 RISC 클러스터(10)의 근원지 로컬 메모리인 목적지 로컬 메모리(270)로 그 결과를 기록한다. 결과적으로 공유 로컬 메모리는 이중 버퍼 구조로서, 하나의 클러스터의 목적지(destination)와 타 클러스터의 근원지(source)로서 공유되며, 두 클러스터 사이의 통신 채널이 된다.
또한, 프로세서(100)는 공유 캐시뿐 아니라 공유 로컬 메모리에도 액세스할 수 있다. 그러므로, 태스크 파티션 단계(task partition step) 동안 스레드를 보조프로세서 스레드에 할당하거나 혹은 그 반대 동작을 수행할 수 있다. 따라서, 더 효율적으로 비디오 플랫폼을 이용할 수 있도록 더 좋은 파티션을 찾는 것이 가능하게 한다.
논리적으로 클러스터(10)는 복수의 프로세서를 포함할 수 있다. 프로세서는 실제 제어 및 데이터 프로세서로서 이용될 수도 있을 것이다. 프로세서는 클러스터(10) 내에서 실행되는 데이터 처리 스레드를 편성하고 제어한다. 더구나 제어 네트워크(20)로 연결된 네트워크 인터페이스(150)를 통해 타 클러스터와 제어 정보를 통신한다. 또한, 프로세서는 데이터 처리 스레드를 실행하고, 디지털 신호 처리기(140) 내에서 실행되는 스레드를 관리한다. 그리고 프로세서는 네트워크 인터페이스(150)를 통해 타 클러스터와 데이터 정보를 교환할 수 있을 것이다.
본 실시예에서 좋은 성능과 모듈화를 위해 네트워크 인터페이스(150)는 네트워크 포트(network port)로 구현하여 실질적으로 IPC 오버헤드를 감소시킬 수 있다.
도 2 내지 도 4를 참조하여 상술한 멀티 프로세서 플랫폼 기반 시스템에서 고성능 비디오 시스템을 구현하기 위해, 높은 데이터 대역폭을 지원할 수 있는 효율적인 통신 아키텍처가 필요하다. 일반적으로 특히 그 실행이 서로 강하게 결합되어 있을 때 멀티 구성요소를 가지는 시스템의 성능을 개선하는 것은 매우 어려우므로, 통신 아키텍처는 멀티 프로세서 플랫폼 기반 시스템에서 효율적인 동기화를 지원할 필요가 있다.
따라서, 유연하고 효율적인 상호 연결을 통해 복수의 클러스터(10)간에 비디오 어플리케이션을 위한 비동기화된 제어뿐만 아니라 작고 큰 크기의 데이터 전달을 효율적으로 지원하기 위해, 멀티 프로세서 플랫폼 기반 시스템은 작은 크기의 데이터 및 제어 정보 중 하나 이상을 위한 제어 네트워크(20) 및 큰 크기의 데이터를 위한 데이터 네트워크(30), 즉 2개의 분리된 통신 네트워크를 이용한다.
여기서, 클러스터(10)는 상태 확인, 인터럽트 세팅 및 핸들링과 같은 기본적인 동작을 수행하는 네트워크 인터페이스(150)를 네트워크 어댑터로서 이용함으로써 인터 클러스터 통신의 오버헤드를 감소시킨다. 각 포트에 대한 통신 셋업이 단일 명령으로 실행되기 때문에 타 클러스터 사이에서의 인터 클러스터 동기화의 오버헤드가 실질적으로 감소될 수 있다.
본 발명에 따른 멀티 프로세서 플랫폼 기반 시스템에서, 제어 정보 전달은 메시지 전달(message passing)에 기초한다. 반면 데이터 전달은 지역적으로는 멀티 공유 메모리를 가지고, 광역적으로는 DMA 동작을 통해 수행된다. 통신 버퍼로서 공유 메모리를 이용하는 것은 2개의 다른 클러스터 사이에 통신 오버헤드를 감소시킬 수 있다. 그 과정은 다음과 같다. 처음에 생산자가 공유 메모리에 메시지로서 그 결과를 올리고, 그 후 소비자가 읽을 준비가 되었을 때 통지한다. 공유 메모리에 액세스하는 것은 액세스 충돌 때문에 성능 병목이 발생할 수 있으므로, 공유 메모리를 구현함에 있어서 생산자와 소비자의 동기화를 위해 2개의 메모리 블록과 2개의 락(lock)을 이용한다.
이하, 멀티 프로세서 플랫폼 기반 시스템의 통신 아키텍처에 대하여 관련 도면을 참조하여 설명하기로 한다.
도 5는 본 발명의 일 실시예에 따른 멀티 프로세서 플랫폼 기반 시스템에 적용되는 제어 네트워크의 구성을 나타낸 블록도이고, 도 6은 제어 링크를 구축하는 방법을 설명하기 위한 도면이다.
FIFO 채널 그룹(60)이 클러스터(10) 사이에서 작은 크기의 데이터 또는/및 동기화 정보(즉, 제어 정보)를 전달하기 위한 포인트 투 포인트 연결을 위해 할당되어 있다. 제어 네트워크(20)는 클러스터(10) 사이에서 완전한 프로그래머블 연결성(fully programmable connectivity)을 지원한다.
제어 링크는 2개의 식별자(ID), 즉 목적지/근원지 클러스터 식별자 및 채널 식별자를 가지고 구축된다. 클러스터 식별자 디코더(310a, 310b, 310c)는 클러스터 식별자를 통해 목적지 채널 혹은 근원지 채널 그룹을 식별한다. 채널 식별자 디코더(320a, 320b, 320c)는 채널 식별자를 통해 채널을 식별한다.
클러스터(10a, 10b, 10c)의 네트워크 인터페이스는 클러스터(10)와 채널 식별자 디코더(320a, 320b, 320c)를 이용하여 제어 링크를 구축하며, 식별된 채널의 상태(full 혹은 empty)를 모니터링하고 전달한다.
도 6을 참조하여, 제어 링크 구축 방법에 대하여 설명하기로 한다. 여기서는, 2번째 FIFO 채널을 통해 클러스터 A로부터 클러스터 B로의 제어 정보 전달을 비동기적으로 실행하는 것을 가정하여 설명한다.
우선, 클러스터 A의 프로세서는 네트워크 인터페이스를 통해 클러스터 A와 클러스터 B 사이에서 클러스터 식별자 디코더 및 채널 식별자 디코더에 의해 생성된 2번째 채널의 이용가능 상태를 확인한다. 해당 채널이 풀(full)이 아닌 경우 (B, 2)의 ID를 가지는 PUT 명령을 등록한다. 그 후 제어 정보는 클러스터 B를 위해 채널 그룹 내의 2번째 채널 내에 전달된다. 후에, 클러스터 B의 프로세서는 네트워크 인터페이스를 통해 (A, 2)로 식별되는 채널의 이용가능성을 모니터링하고, 해당 채널이 비어있지 않은 경우, 즉 empty가 아닌 경우 (A, 2)의 ID를 가지는 GET 명령을 등록한다. 따라서, 다른 클러스터 사이의 제어 트랜잭션을 위해 네트워크 인터페이스에 대해서 단지 2개의 명령만이 요구된다.
도 7은 본 발명의 일 실시예에 따른 멀티 프로세서 플랫폼 기반 시스템에 적용되는 데이터 네트워크의 구성을 나타낸 블록도이고, 도 8은 데이터 링크를 구축하는 방법을 설명하기 위한 도면이다.
데이터 네트워크(30)에서는 대역폭 한계와 지연시간을 완화하기 위해 두 클러스터 사이의 스트리밍 데이터를 저장하는 통신 버퍼로서, 로컬 전달(local transfer)을 위해 이중 버퍼 구조의 로컬 메모리(50)를 이용할 수 있다. 또한, DMA 컨트롤러(32)를 통한 오프-칩 메모리에서 로컬 메모리로의 글로벌 전달(global transfer)을 지원한다.
제어 네트워크의 제어 링크를 통해 동기화되는 2개의 클러스터(10)는 로컬 데이터 전달을 위해 통신 버퍼로서 하나의 이중 버퍼 구조의 로컬 메모리(50)를 공유한다. 하나의 클러스터 내의 각 프로세서와 디지털 신호 처리기는 로컬 메모리(50)에 액세스하여 한 덩어리의 스트리밍 데이터를 페치하거나 저장할 수 있다. 따라서, 글로벌 데이터 네트워크에서의 데이터 대역폭은 실질적으로 감소한다. 더구나 스레드는 디지털 신호 처리기 스레드로 할당할 수 있거나 성능 트레이드 오프 없이 그 반대 동작을 수행할 수 있다.
데이터 네트워크(30)는 스트리밍 데이터 전달을 위해 DMA 컨트롤러(32)를 통해 제1 글로벌 메모리(40a)를 이용하고, 명령과 데이터 캐시 전달을 위해 제2 글로벌 메모리(40b)를 이용한다. 프로세서(100)로부터의 글로벌 데이터 전달에 관련된 오퍼레이션을 오프로드(offload)하기 위해, 로컬 메모리로/로부터 큰 크기의 데이터를 스트리밍하기 위한 글로벌 데이터 네트워크 내에 중앙집중된 DMA 컨트롤러(32)를 적용한다. DMA 컨트롤러(32)는 비디오 어플리케이션에서 상당한 사이클을 차지하는 어드레스 계산과 데이터 배열을 수행한다. 비디오 플랫폼에서 캐시로의/로부터의 대역폭은 글로벌 네트워크에서의 전체 대역폭 중 대략 30% 정도이다. 따라서, 글로벌 데이터 네트워크는 스트리밍 데이터를 위한 하나(30a)와, 캐시 데이터를 위한 다른 하나(30b)로 구분된다. 이는 메모리 컨트롤러의 구현을 통해 통합될 수 있다.
도 8을 참조하면, 데이터 네트워크 내에서 데이터 링크가 구축되는 방법이 도시되어 있다. 클러스터 A(10a)를 근원지 클러스터, 클러스터 B(10b)가 목적지 클러스터인 것으로 가정한다.
우선 근원지 클러스터 내에서 프로세서 A0는 HOSK를 통해 프로세서 A1으로 제어 메시지를 보낸다(S1). 프로세서 A1은 네트워크 인터페이스를 통해 상응하는 공유 메모리(350)로 데이터를 전달한다(S2). 프로세서 A1은 프로세서 A0로 제어 메시지 응답(control message back)을 보낸다(S3). 근원지 클러스터의 프로세서 A0는 목적지 클러스터의 프로세서 B0로 제어 네트워크의 FIFO 채널(60)을 통해 메시지를 보낸다(S4). 프로세서 B0는 FIFO 채널(60) 내의 제어 메시지를 읽고(S5), 목적지 클러스터의 HOSK를 통해 프로세서 B1으로 보낸다(S6). 프로세서 B1은 네트워크 인터페이스를 통해 공유 메모리(350)로부터 데이터를 수신한다(S7). 프로세서 B1은 프로세서 B0로 동기화 메시지 응답(synch message back)을 보낸다(S8).
본 발명에 따른 멀티 프로세서 플랫폼 기반 시스템의 아키텍처는 각 클러스터를 위한 공유 명령 캐시 및 공유 데이터 캐시, 각 제어 링크를 위한 FIFO 채널 그룹, 두 클러스터 사이의 각 데이터 링크를 위한 공유 로컬 메모리, 오프-칩 글로벌 메모리, 및 각 디지털 신호 처리기 스레드를 위한 코드 메모리 등과 같은 분산 메모리(distributed memory)를 요구한다.
도 9는 본 발명의 일 실시예에 따른 캐시에 대해서 통합된 메모리 맵의 구성을 나타내는 블록도이고, 도 10은 본 발명의 일 실시예에 따른 클러스터 사이에 데이터 트랜잭션을 위한 일관성 스킴을 나타내는 도면이다.
각 클러스터(10a, 10b, 10c)에 대해서 컴파일된 코드는 도 9에 도시된 것과 같이 분산 메모리(400)에 함께 쌓인다. 명령 캐시(I-$)는 코드 영역에 액세스하고 데이터 캐시(D-$)는 데이터 및 스택 영역에 액세스한다. 데이터 캐시가 힙(heap) 영역에 액세스하는 것을 허용하지 않는다. 이는 비디오 어플리케이션에서는 데이터의 크기와 생애(lifetime)를 쉽게 예측가능하기 때문에 전체 성능을 저하시키지 않는다. 간단하게 L1 캐시를 공유하고 힙 영역 액세스를 허용하지 않음으로써, 결과적으로 오버헤드 없이 캐시 일관성을 유지할 수 있다.
두 클러스터 사이의 제어 링크를 위해, 미리 정의된 식별자(ID)를 가지는 FIFO 채널(60a)이 이용되며, 트랜잭션 블로킹이 비동기적으로 실행된다. 생산자는 우선 ID를 가지는 FIFO 채널 내에 데이터를 보내고, 그 후 소비자가 해당 ID를 가지는 FIFO 채널로부터 데이터를 가져온다. 소비자는 FIFO 채널이 비어있다면 데이터가 이용가능할 때까지 기다려야 한다. 유사하게 생산자는 FIFO 채널이 비어있지 않다면 그 공간이 이용가능할 때까지 기다려야 한다. 두 프로세서 및 네트워크 인터페이스가 FIFO 채널의 이용가능성을 확인해야 한다.
도 10을 참조하면, 데이터 링크를 위한 각 로컬 메모리(50a)는 2개의 영역으로 구분된다. 생산자는 하나의 영역(Region 0) 내에 데이터를 전달하고, 제어 네트워크의 제어 링크를 통해 소비자에게 동기화 정보(예를 들어, explicit sync)를 포워딩한다. 이후 타 영역(Region 1) 내에 데이터를 연속적으로 전달한다. 제어 네트워크로부터 동기화 정보를 가져온 후, 소비자는 로컬 메모리(50a)의 상응하는 섹션(Region 0)으로부터 데이터를 가져온다.
본 발명에 따른 멀티 프로세서 플랫폼 기반 시스템은 고성능 비디오 어플리케이션을 효율적으로 구현하기 위해 네트워크 인터페이스와 하드웨어 OS 커널에 대해서 하드웨어 지원을 제공할 수 있다.
네트워크 인터페이스는 하드웨어 메시지 전달 엔진이다. 채널의 각 액세스에 대해서, 채널을 모니터하고, 비어 있는지 혹은 비어 있지 않은지 그 상태를 보고하며, 채널이 이용불가능한 경우 자동으로 액세스를 차단한다. 그러므로, 소프트웨어 코드에서 채널이 이용가능한지를 보고 확인하기 위한 대기 루프가 요구되지 않는다. 그 결과 채널 액세스를 위한 완전한 호출은 단지 하나의 명령이 걸리게 된다.
각 클러스터의 하드웨어 OS 커널은 스레드 콘텍스트 교환을 포함하여 스레드의 스케쥴링과 동기화를 수행한다. 스레드 스케쥴링을 위해, 하드웨어 OS 커널은 레디 큐를 스캔하고 가장 높은 우선순위를 가지는 스레드를 선택한다. 그 후 선택된 스레드의 우선순위를 0으로 설정하고, 레디 큐 내의 타 스레드의 우선순위를 1씩 증가시킨다. 따라서, 레디 큐 내의 스레드의 수가 N일 때, 스레드 스케쥴링을 위해 적어도 2N 번의 메모리 액세스가 걸리게 된다. 더구나, 하드웨어 OS 커널은 인터럽트 서비스를 위해 혹은 스레드를 유지하거나 깨우기 위해 단일 명령을 가지는 세마포어 제어를 가속화한다. 마지막으로 스레드 콘텍스트 교환은 콘텍스트 버스의 너비가 32 비트일 때 32 사이클까지 수행될 수 있을 것이다.
하드웨어 OS 커널은 런타임에 스레드를 클러스터 내의 프로세서로 동적 할당한다. 각 스레드 코드의 명령은 순차적 순서에 따라 실행되는 반면, 스레드의 활성화 및 동기화는 데이터에 따른다(data-driven). 스레드 내에 우선순위를 주고 클러스터 내에서 실행되는 프로세서의 수를 조정하는 것이 가능하다.
이하에서는 본 발명에 따른 멀티 프로세서 플랫폼을 고화질 멀티 포맷 비디오 코덱 시스템에 적용하여 설계하는 방법에 대하여 설명하기로 한다. 비디오 포맷 각각은 많은 계산, 큰 메모리 및 메모리 대역폭을 요구하고, 파싱을 위한 고도의 순차적 오퍼레이션을 포함한다.
비디오 어플리케이션을 분석하면, 전술한 바와 같이 디코더에 대해서는 문법 파싱, 변환 및 양자화, 프레임 내 픽셀 예측(공간 예측), 프레임간 픽셀 예측(시간 예측), 및 후 처리 기능 블록이 있다. 인코더에 대해서는 움직임 추측 기능 블록을 더 포함한다. 문법 파싱 블록을 제외한 타 기능 블록은 병렬 처리 및 파이프라인 기술을 이용할 수 있고, 코오스 그레인드 기능에 의해 실행될 수 있다. 하지만, 문법은 특성상 순차적이기 때문에, 파인 그레인드 기능에 의해 실행될 필요가 있다.
또한, 비디오 어플리케이션의 경우 움직임 추측 및 프레임간 예측을 위한 레퍼런스 픽셀 로딩, 프레임 내 예측 및 후 처리를 위한 재구성된 픽셀 네이버링(neighboring), 콘텍스트 적응 코딩을 위해 이웃하는 매크로블록 사이의 데이터 의존성 등의 특징에 의해 상당한 대역폭이 요구된다. 그러므로 데이터 공유 및 데이터 재사용 스킴이 결합된 공유 로컬 메모리와 같은 효율적인 메모리 체계가 시스템 대역폭을 감소시키기 위해 고려될 수 있다.
멀티 프로세서 플랫폼 기반 시스템에서는 6개의 클러스터 집합체를 적용한다. 대부분의 비디오 코덱은 전술한 바와 같이 6개 혹은 그 이하의 주 기능 블록으로 구성되기 때문이다. 또한, 시스템의 호스트 프로세서, LCD 컨트롤러, UART 컨트롤러를 포함한다. 130nm CMOS 공정에서 동작 주파수는 클러스터 및 보조프로세서와, 통신 네트워크를 포함하는 플랫폼 내의 모든 구성요소에 대해 대략 200MHz이다. 그 결과 6개의 클러스터는 전체 성능에 있어서 4800 MIPS의 원인이 된다. 더 축소된 공정에 의하면 더 증가할 수도 있을 것이다.
각 클러스터는 2KB 슬라이스로 분할되는 16KB의 공유 명령 캐시와 8KB의 공유 데이터 캐시가 각각 할당되어 있다.
MB 레벨 파이프라인 스킴이 비디오 어플리케이션에 주로 적용되고, 따라서 나머지(residual), 예측(prediction), 픽셀값(pixel values) 같은 데이터를 저장하기 위한 로컬 메모리의 필요량은 이중 버퍼 모드를 이용할지라도 기능 블록 사이에서 1KB(16 x 16 x 2B x 2)를 초과하지 않는다.
재구성된 픽셀과 레퍼런스 픽셀을 네이버링하기 위해서, 산술적으로 로컬 메모리의 필요량을 예측하는 것은 어렵다. 이는 알고리즘에 따라 수 내지 수십 KB로 다양하기 때문이다. 하지만, DMA를 가지는 오프-칩 메모리를 이용함으로써 성능 저하 없이 쉽게 감소시킬 수 있다. 결과적으로 로컬 데이터 네트워크에서 인접한 클러스터 사이에 2KB 공유 로컬 메모리를 할당한다. 분산 제어 네트워크에 대해서, 32개의 FIFO가 할당되고, 그 폭은 32 비트로 동일하다.
글로벌 데이터 네트워크에서 오프-칩 메모리 인터페이스를 위해서, SDRAM 혹은 DDR DRAM 메모리 컨트롤러가 지원되고, 요구되는 대역폭에 따라 선택된다.
제어-집중 혹은 계산-집중 스레드를 위해서, 디지털 신호 처리기가 적용된다. 전자는 코드 메모리로부터 명령을 페치하거나 클러스터로부터 명령을 가져올 수 있지만, 후자는 단지 클러스터로부터 명령을 가져올 수만 있다.
코드 메모리는 스레드 루틴을 포함할 수 있다. 실행 시간의 많은 부분을 차지하고 자주 발생한다. 클러스터로부터의 명령어는 실행될 스레드 루틴을 포함하는 코드 메모리의 어드레스를 지정한다. 문법 파싱에서 나머지 데이터는 코드 메모리에서 스레드 루틴에 의해 획득된다. 파싱 기능을 제외한 타 부분은 특히 고해상도를 위해 코오스 그레인드 스레드를 가지고 구현되도록 요구되는 계산-집중 스레드에 적합할 수 있다.
상기에서는 본 발명의 실시예를 참조하여 설명하였지만, 해당 기술 분야에서 통상의 지식을 가진 자라면 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
10-1, 10-2, 10-3, 10-4, 10a, 10b, 10c: 클러스터
20: 제어 네트워크 30, 30a, 30b: 데이터 네트워크
40: 글로벌 메모리 50: 로컬 메모리
60: FIFO 채널
100-1, 100-2, 100-3, 100-4: 프로세서
110: 공유 명령 캐시 120: 공유 데이터 캐시
130: 하드웨어 OS 커널 140: 디지털 신호 처리기
150: 네트워크 인터페이스 160: 콘텍스트 메모리
170: 스레드 제어 메모리
180-1, 180-2, 180-3, 180-4: 프리페치 큐
190-1, 190-2, 190-3, 190-4: 태그 버퍼

Claims (14)

  1. 삭제
  2. 복수의 프로세서를 포함하는 멀티 프로세서 플랫폼 기반 시스템에 있어서,
    상기 복수의 프로세서를 멀티 포맷 비디오 코덱(multi-format video codec)의 기능 블록 각각에 상응하여 그룹화한 복수의 클러스터;
    상기 복수의 클러스터간에 제어 정보를 통신하기 위해 상기 복수의 클러스터간에 상호 연결되는 제어 네트워크; 및
    상기 복수의 클러스터간에 데이터를 통신하기 위해 상기 복수의 클러스터간에 상호 연결되는 데이터 네트워크를 포함하며,
    상기 복수의 클러스터는 문법 파싱(syntax parsing), 변환 및 양자화(transform and quantization), 프레임 내 픽셀 예측(공간 예측)(intra-frame pixel prediction (spatial prediction)), 프레임간 픽셀 예측(시간 예측)(inter-frame pixel prediction (temporal prediction)), 후 처리(post processing), 움직임 추측(motion estimation) 기능 블록 중 하나 이상을 포함하는 상기 멀티 포맷 비디오 코덱의 기능 블록에 각각 대응하는 것을 특징으로 하는 멀티 프로세서 플랫폼 기반 시스템.
  3. 복수의 프로세서를 포함하는 멀티 프로세서 플랫폼 기반 시스템에 있어서,
    상기 복수의 프로세서를 멀티 포맷 비디오 코덱(multi-format video codec)의 기능 블록 각각에 상응하여 그룹화한 복수의 클러스터;
    상기 복수의 클러스터간에 제어 정보를 통신하기 위해 상기 복수의 클러스터간에 상호 연결되는 제어 네트워크; 및
    상기 복수의 클러스터간에 데이터를 통신하기 위해 상기 복수의 클러스터간에 상호 연결되는 데이터 네트워크를 포함하며,
    상기 클러스터는,
    상기 복수의 프로세서와;
    상기 복수의 프로세서가 공유하는 명령 캐시 및 데이터 캐시와;
    상기 복수의 프로세서에 의해 실행되는 스레드의 스케쥴링, 동기화 및 콘텍스트 교환(context switching)을 수행하는 하드웨어 OS 커널(Hardware OS Kernel)을 포함하는 멀티 프로세서 플랫폼 기반 시스템.
  4. 제3항에 있어서,
    상기 프로세서는 상기 스레드를 실행하고, 상기 데이터 네트워크를 통해 타 클러스터와 상기 데이터를 통신하는 것을 특징으로 하는 멀티 프로세서 플랫폼 기반 시스템.
  5. 제4항에 있어서,
    상기 프로세서는 상기 스레드를 편성하고 제어하며, 상기 제어 네트워크를 통해 타 클러스터와 상기 제어 정보를 통신하는 것을 특징으로 하는 멀티 프로세서 플랫폼 기반 시스템.
  6. 제3항에 있어서,
    상기 클러스터는, 계산-집중(computation-intensive) 및 데이터-집중(data-intensive)적인 오퍼레이션 중 하나 이상을 수행하여 상기 프로세서를 보완하는 디지털 신호 처리기를 더 포함하는 것을 특징으로 하는 멀티 프로세서 플랫폼 기반 시스템.
  7. 제6항에 있어서,
    상기 디지털 신호 처리기는,
    상기 프로세서 코어로부터 상기 디지털 신호 처리기로의 명령어(command)를 저장하는 명령어 큐와, 상기 명령어에 따라 캐시 메모리에 저장된 스레드를 실행하는 실행 유닛과, 상기 실행 유닛에 의해 수행 가능한 명령어를 상기 명령어 큐로부터 가져오는 디지털 신호 처리기 관리자를 더 포함하는 것을 특징으로 하는 멀티 프로세서 플랫폼 기반 시스템.
  8. 제3항에 있어서,
    상기 클러스터는 인터 클러스터 통신시 상기 제어 네트워크를 통해 타 클러스터와 제어 정보를 통신하기 위해 상태 확인, 인터럽트 세팅 및 핸들링을 수행하는 네트워크 인터페이스를 더 포함하는 것을 특징으로 하는 멀티 프로세서 플랫폼 기반 시스템.
  9. 제2항 또는 제3항에 있어서,
    상기 제어 네트워크는 FIFO 채널과 연결되고, 목적지/근원지 클러스터 식별자 및 채널 식별자를 이용하여 상기 복수의 클러스터간에 포인트 투 포인트(point to point) 연결을 통한 인터 클러스터 통신을 제공하는 것을 특징으로 하는 멀티 프로세서 플랫폼 기반 시스템.
  10. 제2항 또는 제3항에 있어서,
    상기 데이터 네트워크는 공유 로컬 메모리를 이용하여 상기 복수의 클러스터간에 데이터를 송수신하는 것을 특징으로 하는 멀티 프로세서 플랫폼 기반 시스템.
  11. 복수의 프로세서가 멀티 포맷 비디오 코덱(multi-format video codec)의 기능 블록 각각에 상응하여 그룹화된 복수의 클러스터를 포함하는 멀티 프로세서 플랫폼 기반 시스템에서 인터 클러스터 통신을 위해 제어 링크를 구축하는 방법으로서,
    근원지 클러스터에 포함되는 프로세서가 상기 제어 링크를 구축하고자 하는 목적지 클러스터와의 사이에 할당된 FIFO 채널의 이용가능 상태를 확인하는 단계:
    상기 FIFO 채널이 풀(full)이 아닌 경우 상기 목적지 클러스터를 식별하기 위한 제1 클러스터 식별자와 상기 FIFO 채널을 식별하기 위한 제1 채널 식별자를 이용하여 PUT 명령을 등록하는 단계;
    제어 정보가 상기 제1 채널 식별자에 의해 식별되는 상기 FIFO 채널 내에 전달되는 단계:
    상기 목적지 클러스터가 상기 FIFO 채널의 이용가능 상태를 확인하는 단계;
    상기 FIFO 채널이 비어있지 않은 경우 상기 근원지 클러스터를 식별하기 위한 제2 클러스터 식별자와 상기 FIFO 채널을 식별하기 위한 제2 채널 식별자를 이용하여 GET 명령을 등록하는 단계; 및
    상기 제2 채널 식별자에 의해 식별되는 상기 FIFO 채널 내의 상기 제어 정보를 읽어오는 단계를 포함하는 제어 링크 구축 방법.
  12. 제11항에 있어서,
    상기 근원지 클러스터 및 상기 목적지 클러스터는 네트워크 인터페이스를 이용하여 상기 FIFO 채널의 이용가능 상태를 확인하는 것을 특징으로 하는 제어 링크 구축 방법.
  13. 복수의 프로세서가 멀티 포맷 비디오 코덱(multi-format video codec)의 기능 블록 각각에 상응하여 그룹화된 복수의 클러스터를 포함하는 멀티 프로세서 플랫폼 기반 시스템에서 인터 클러스터 통신을 위해 데이터 링크를 구축하는 방법으로서,
    근원지 클러스터 내의 제1 프로세서가 상기 근원지 클러스터 내의 제2 프로세서로 제어 메시지를 전달하는 단계:
    상기 제2 프로세서는 상응하는 공유 메모리로 데이터를 전달하는 단계;
    상기 제2 프로세서는 상기 제1 프로세서로 제어 메시지 응답을 보내는 단계;
    상기 제1 프로세서는 목적지 클러스터 내의 제3 프로세서로 제어 네트워크의 FIFO 채널을 통해 메시지를 보내는 단계;
    상기 제3 프로세서는 상기 FIFO 채널 내의 메시지를 읽고, 상기 목적지 클러스터 내의 제4 프로세서로 제어 메시지를 보내는 단계;
    상기 제4 프로세서는 상기 공유 메모리로부터 상기 데이터를 수신하는 단계; 및
    상기 제4 프로세서는 상기 제3 프로세서로 동기화 메시지 응답을 보내는 단계를 포함하는 데이터 링크 구축 방법.
  14. 제13항에 있어서,
    상기 근원지 클러스터 및 상기 목적지 클러스터는 각각 하드웨어 OS 커널을 통해 내부에서 상기 제어 메시지를 전달하는 것을 특징으로 하는 데이터 링크 구축 방법.
KR1020100018907A 2010-03-03 2010-03-03 고화질 멀티 포맷 비디오 코덱 시스템을 위한 멀티 프로세서 플랫폼 기반 시스템 KR101084044B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020100018907A KR101084044B1 (ko) 2010-03-03 2010-03-03 고화질 멀티 포맷 비디오 코덱 시스템을 위한 멀티 프로세서 플랫폼 기반 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100018907A KR101084044B1 (ko) 2010-03-03 2010-03-03 고화질 멀티 포맷 비디오 코덱 시스템을 위한 멀티 프로세서 플랫폼 기반 시스템

Publications (2)

Publication Number Publication Date
KR20110099895A KR20110099895A (ko) 2011-09-09
KR101084044B1 true KR101084044B1 (ko) 2011-11-16

Family

ID=44952550

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100018907A KR101084044B1 (ko) 2010-03-03 2010-03-03 고화질 멀티 포맷 비디오 코덱 시스템을 위한 멀티 프로세서 플랫폼 기반 시스템

Country Status (1)

Country Link
KR (1) KR101084044B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102644719B1 (ko) * 2023-04-07 2024-03-08 메티스엑스 주식회사 다중 스레드의 비동기적인 실행이 가능한 매니코어 시스템

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100400165B1 (ko) 1998-11-16 2003-10-01 텔레폰아크티에볼라게트 엘엠 에릭슨 처리 시스템 스케쥴링

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100400165B1 (ko) 1998-11-16 2003-10-01 텔레폰아크티에볼라게트 엘엠 에릭슨 처리 시스템 스케쥴링

Also Published As

Publication number Publication date
KR20110099895A (ko) 2011-09-09

Similar Documents

Publication Publication Date Title
US20160026574A1 (en) General purpose digital data processor, systems and methods
US20210073170A1 (en) Configurable heterogeneous ai processor
JP6047747B2 (ja) 制御タイプの実行モードとデータフロータイプの実行モードとの組み合わせによりタスクを並列に実行可能な複数の処理ユニットを有するシステム
KR102600852B1 (ko) 이종 cpu/gpu 시스템에서 데이터 흐름 신호 처리 애플리케이션 가속화
US9274793B2 (en) Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
CN100530107C (zh) 基于io事件通知机制的单进程内容服务器装置及方法
AU765469B2 (en) Shared memory type vector processing system and control method thereof
US20160210145A1 (en) Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
US20120246450A1 (en) Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
US20080046689A1 (en) Method and apparatus for cooperative multithreading
CN1602467A (zh) 具有多个处理器的数据处理系统、用于具有多个处理器的数据处理系统的任务调度程序及用于任务调度的对应方法
Almeida et al. Evaluating the impact of task migration in multi-processor systems-on-chip
JP2009515246A (ja) 集中特化したマルチタスク及びマルチフロー処理をリアルタイム実行する手法及びシステム
US20100275208A1 (en) Reduction Of Memory Latencies Using Fine Grained Parallelism And Fifo Data Structures
CN1311348C (zh) 数据处理系统
Govindarajan et al. Design and performance evaluation of a multithreaded architecture
TW201423402A (zh) 通用目的數位資料處理器、系統及方法
KR101084044B1 (ko) 고화질 멀티 포맷 비디오 코덱 시스템을 위한 멀티 프로세서 플랫폼 기반 시스템
EP1604286B1 (en) Data processing system with cache optimised for processing dataflow applications
Rutten et al. Design of multi-tasking coprocessor control for eclipse
Nieuwland et al. A heterogeneous HW-SW architecture for hand-held multimedia terminals
Gharaibeh et al. Crystalgpu: Transparent and efficient utilization of gpu power
US20130205090A1 (en) Multi-core processor having hierarchical communication architecture
Lee et al. DSP based programmable FHD HEVC decoder
Hussain Hmmc: A memory controller for heterogeneous multi-core system

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20151028

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160219

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20171023

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20181101

Year of fee payment: 8