KR100895298B1 - 멀티미디어 데이터의 효율적인 병렬 처리를 위한 장치,방법, 데이터 처리 엘리먼트 - Google Patents

멀티미디어 데이터의 효율적인 병렬 처리를 위한 장치,방법, 데이터 처리 엘리먼트 Download PDF

Info

Publication number
KR100895298B1
KR100895298B1 KR1020070042190A KR20070042190A KR100895298B1 KR 100895298 B1 KR100895298 B1 KR 100895298B1 KR 1020070042190 A KR1020070042190 A KR 1020070042190A KR 20070042190 A KR20070042190 A KR 20070042190A KR 100895298 B1 KR100895298 B1 KR 100895298B1
Authority
KR
South Korea
Prior art keywords
data processing
processing element
shared memory
data
memory page
Prior art date
Application number
KR1020070042190A
Other languages
English (en)
Other versions
KR20080097066A (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 KR1020070042190A priority Critical patent/KR100895298B1/ko
Priority to US12/112,156 priority patent/US8510514B2/en
Publication of KR20080097066A publication Critical patent/KR20080097066A/ko
Application granted granted Critical
Publication of KR100895298B1 publication Critical patent/KR100895298B1/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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/656Address space sharing

Abstract

멀티미디어 데이터의 효율적인 병렬 처리를 위한 장치, 방법, 데이터 처리 엘리먼트가 개시된다. 본 발명의 데이터 처리 엘리먼트는, 당해 데이터 처리 엘리먼트 및 인접한 다른 데이터 처리 엘리먼트들에 의해 공유되는 공유 메모리 페이지와, 공유 메모리 페이지를 데이터 처리 엘리먼트에 선택적으로 연결하는 공유 페이지 스위치를 포함하는 메모리 라우팅부; 및 공유 메모리 페이지와 연결하기 위한 가상 페이지와, 멀티미디어 데이터 처리를 위한 일련의 태스크가 각 데이터 처리 엘리먼트에서 처리된 상태에 따라 공유 메모리 페이지를 어떤 데이터 처리 엘리먼트에 할당할지를 결정하고, 결정에 따라 공유 페이지 스위치를 제어하는 동적 재할당부를 포함하는 데이터 처리부를 포함한다. 본 발명에 따르면, 데이터 처리 엘리먼트 간에 시간 - 방향성을 가지는 공유 메모리 구조를 이용하여 멀티미디어 데이터를 효율적으로 병렬 처리할 수 있다.
멀티미디어, 병렬화, 어레이, 데이터 처리 엘리먼트

Description

멀티미디어 데이터의 효율적인 병렬 처리를 위한 장치, 방법, 데이터 처리 엘리먼트{Apparatus, Method, Data Processing Element for efficient parallel processing of multimedia data}
도 1은 본 발명의 일실시예에 따른 병렬 데이터 처리 시스템의 구조를 나타낸 도면이다.
도 2는 본 발명의 다른 실시예에 따른 데이터 처리 엘리먼트의 내부 구조를 나타낸 도면이다.
도 3은 본 발명의 또 다른 실시예에 따른 병렬 처리 시스템에서의 데이터 처리 방법을 나타낸 흐름도이다.
도 4는 본 발명의 또 다른 실시예에 따른 병렬 처리 시스템의 데이터 처리 엘리먼트에서의 데이터 처리 방법을 나타낸 흐름도이다.
본 발명은 멀티미디어 데이터의 효율적인 병렬 처리를 위한 장치, 방법, 데이터 처리 엘리먼트에 관한 것으로, 더욱 상세하게는 대량의 멀티미디어 데이터 처리를 위한 다수의 데이터 처리 엘리먼트(Data Processing Element, DPE)로 구성된 병렬 데이터 처리 어레이(Parallel Data Processing Array) 및 데이터 처리 엘리먼트 간의 대량의 데이터를 상호 전달하기 위한 장치 및 방법에 관한 것이다.
IT 산업의 발전과 더불어 휴대용으로 소지할 수 있는 제품뿐만 아니라 가정용 전자기기에서도 비디오, 오디오 등의 멀티미디어 데이터 처리를 수행하는 제품이 급격하게 늘어나게 되었다. 이러한 멀티미디어 제품은 DVD 영상, MPEG-2, 휴대폰의 동영상 재생기능, HDTV 등 매우 다양한 제품군으로 확산되고 있다. 해당 멀티미디어 제품을 위한 영상 및 오디오는 미가공 데이터(Raw data)의 관점에서 볼 때 매우 방대한 데이터를 포함한다. 예를 들어, 1920 x 1200의 화면 크기를 가지는 영상의 각 픽셀이 24-bit로 표현된다고 할 때, 초당 30 프레임을 연속적인 시리얼 비트 흐름(serial bitstream)으로 전송하려면 1.66 Gbps의 전송 성능이 필요하다. 프레임 비율(frame rate)이 증가할수록 더 많은 전송 성능이 필요하기 때문에 현재의 대부분의 영상 및 음성은 고도의 압축 기법을 사용하고 있다.
멀티미디어 데이터의 압축기법은 MPEG-2, MPEG-4, H.264, BSAC(Bit Sliced Arithmetic Coding), AAC+(Advanced Audio Coding plus) 등을 비롯하여 매우 다양한 종류의 압축기법이 존재한다. 이러한 압축기법을 사용하기 위해서는 영상을 압축(Coding)하고 해제(Decoding)하는 기능을 가진 하드웨어가 필요하다. 현재의 대부분의 모바일 및 가정용 멀티미디어 기기들은 압축 및 해제를 실시간으로 수행하기 위해서 멀티미디어 코덱(codec)용 초고밀도 집적 회로(Very Large Scale Integration, VLSI)를 내장하고 있다.
코덱용 VLSI가 요구하는 성능은 코덱 알고리즘의 복잡도나 특성에 따라 다르 지만, 최근의 멀티미디어 코덱은 0.6 GIPS(Giga Instructions Per Second) 내지 1.5 GIPS의 데이터 처리 성능이 요구되고, 향후 수년 내로는 2 GIPS 내지 5 GIPS 이상의 데이터 처리 성능이 필요할 것으로 전망된다. 이러한 계산량을 가지는 데이터를 처리하기 위해서는 고성능의 코덱용 칩이 필요하다.
이러한 다양한 종류의 멀티미디어 코덱을 단시간 내에 하드웨어로 구현하면서, 고성능을 얻을 수 있는 방법은 프로세서 어레이 구조 또는 병렬 처리 시스템을 사용하는 것이다. 프로그래머블(programable) 프로세서는 다양한 멀티미디어 코덱을 단시간 내 구현 가능하게 하는 반면, 처리 속도가 떨어지는 단점이 있다. 이러한 단점을 보완하기 위한 어레이 구조의 프로그래머블 프로세서는 멀티미디어 데이터를 병렬 처리하여 고성능의 멀티미디어 처리를 가능하게 한다.
한편, 멀티미디어 데이터 처리는 일련의 데이터 스트림(Stream)에 대해서 동일한 연산을 반복적으로 행하는 특성을 지니고 있기 때문에, 데이터 처리의 특성상 병렬화가 용이하다는 장점을 지니고 있다. 병렬화가 용이하다는 것은 다수의 프로세서에 데이터 처리를 위한 태스크(Task)를 독립적으로 할당하고, 할당된 각각의 태스크가 동시에 수행 가능한 특성이 있다는 것을 의미한다.
멀티미디어 데이터 처리를 위한 고성능의 프로세서 어레이를 구성하기 위해서, 프로세서 어레이를 구성하는 각 데이터 처리 엘리먼트(Data Processing Element, DPE)의 효율적인 구조와 각각의 데이터 처리 엘리먼트를 효율적으로 연결(interconnect)하는 방법에 대한 기술이 요구되고 있다.
본 발명이 이루고자 하는 기술적 과제는, 다수의 데이터 처리 엘리먼트 로 구성된 병렬 데이터 처리 어레이(Parallel Data Processing Array)에서 멀티미디어 데이터의 효율적인 병렬 처리를 위한 데이터 처리 엘리먼트로서, 데이터 처리 엘리먼트 간에 시간 - 방향성을 가지는 공유메모리 (Temporal and Directional Shared Memory) 구조를 가지는 데이터 처리 엘리먼트를 제공하는 것이다.
또한 본 발명이 이루고자 하는 기술적 과제는, 멀티미디어 데이터의 효율적인 병렬 처리를 위한 데이터 처리 엘리먼트에 적용되는 데이터 처리 장치를 제공하는 것이다.
또한 본 발명이 이루고자 하는 기술적 과제는, 멀티미디어 데이터의 효율적인 병렬 데이터 처리 어레이에서의 데이터 처리 방법을 제공하는 것이다.
또한 본 발명이 이루고자 하는 기술적 과제는, 멀티미디어 데이터의 효율적인 병렬 데이터 처리 어레이의 데이터 처리 엘리먼트에서의 데이터 처리 방법을 제공하는 것이다.
상기와 같은 기술적 과제를 달성하기 위한, 본 발명에 따르는 멀티미디어 데이터의 효율적인 병렬 처리를 위한 데이터 처리 엘리먼트는, 다수의 데이터 처리 엘리먼트를 포함하는 병렬 처리 시스템에서, 당해 데이터 처리 엘리먼트 및 인접한 다른 데이터 처리 엘리먼트들에 의해 공유되는 공유 메모리 페이지(shared memory page)와, 상기 공유 메모리 페이지를 데이터 처리 엘리먼트에 선택적으로 연결하는 공유 페이지 스위치(shared page switch)를 포함하는 메모리 라우팅부(Memory Routing Unit, MRU); 및 상기 공유 메모리 페이지와 연결하기 위한 가상 페이지(virtual page)와, 멀티미디어 데이터 처리를 위한 일련의 태스크(task)가 각 데이터 처리 엘리먼트에서 처리된 상태에 따라 상기 공유 메모리 페이지를 어떤 데이터 처리 엘리먼트에 할당할지를 결정하고, 상기 결정에 따라 공유 페이지 스위치를 제어하는 동적 재할당부(dynamic remapper)를 포함하는 데이터 처리부(Data Processing Unit, DPU);를 포함한다.
바람직하게는, 상기 공유 메모리 페이지를 상기 인접한 다른 데이터 처리 엘리먼트들과 공유하기 위한 공유 메모리 연결선과, 각 데이터 처리 엘리먼트에서의 태스크 처리 상태를 알리기 위한 메시지 전달 라인을 포함하는 다수의 연결부;를 더 포함한다. 바람직하게는, 당해 데이터 처리 엘리먼트는 N(north), W(west), S(south), E(east)의 4 방향에 대하여 타 데이터 처리 엘리먼트들과 인접하도록 4 개의 연결부를 가진다.
바람직하게는, 상기 동적 재할당부는, 당해 데이터 처리 엘리먼트가 수행하는 태스크의 이전 단계의 태스크를 수행하는 인접한 다른 데이터 처리 엘리먼트에 의해 생성된 데이터가, 상기 공유 메모리 페이지에 저장되도록 메모리를 재할당하고, 당해 데이터 처리 엘리먼트에 의해 생성된 데이터가, 다음 단계의 태스크를 수행하는 인접한 다른 데이터 처리 엘리먼트의 공유 메모리 페이지에 저장되도록 메모리를 재할당한다.
바람직하게는, 상기 데이터 처리부는, 데이터 처리 명령과 연산을 수행하는 데이터 처리 코어와, 상기 데이터 처리 코어의 동작에 요구되는 메모리를 액세스하 는 메모리 중계기;를 더 포함한다.
바람직하게는, 상기 공유 메모리 페이지는 둘 이상이고, 상기 공유 페이지 스위치는 상기 각 공유 메모리 페이지를 연결하는 둘 이상의 스위치 및 상기 가상 페이지를 연결하는 스위치를 포함한다.
또한 상기와 같은 기술적 과제를 달성하기 위한, 본 발명에 따르는 멀티미디어 데이터의 효율적인 병렬 처리를 위한 데이터 처리 엘리먼트의 데이터 처리 장치는, 상기 공유 메모리 페이지와 연결하기 위한 가상 페이지(virtual page); 및 멀티미디어 데이터 처리를 위한 일련의 태스크(task)가 각 데이터 처리 엘리먼트에서 처리된 상태에 따라 상기 공유 메모리 페이지를 어떤 데이터 처리 엘리먼트에 할당할지를 결정하는 동적 재할당부(dynamic remapper);를 포함한다.
바람직하게는, 상기 동적 재할당부는, 당해 데이터 처리 엘리먼트가 수행하는 태스크의 이전 단계의 태스크를 수행하는 인접한 다른 데이터 처리 엘리먼트에 의해 생성된 데이터가, 상기 공유 메모리 페이지에 저장되도록 메모리를 재할당하고, 당해 데이터 처리 엘리먼트에 의해 생성된 데이터가, 다음 단계의 태스크를 수행하는 인접한 다른 데이터 처리 엘리먼트의 공유 메모리 페이지에 저장되도록 메모리를 재할당한다.
바람직하게는, 데이터 처리 명령과 연산을 수행하는 데이터 처리 코어; 및 상기 데이터 처리 코어의 동작에 요구되는 메모리를 액세스하는 메모리 중계기;를 더 포함한다.
또한 상기와 같은 기술적 과제를 달성하기 위한, 본 발명에 따르는 멀티미디 어 데이터의 효율적인 병렬 처리를 위한 병렬 처리 시스템에서의 데이터 처리 방법은, 멀티미디어 데이터 처리 알고리즘을 병렬 처리 가능한 2 이상의 서브 블록(sub-block)으로 분할하는 단계; 상기 분할된 서브 블록을 처리하는 일련의 태스크(task)를, 각 태스크의 처리 순서에 따라 각 데이터 처리 엘리먼트의 연결된 방향성을 고려하여 각 데이터 처리 엘리먼트에 배정하는 단계; 및 일련의 태스크가 각 데이터 처리 엘리먼트에서 처리된 상태에 따라 각 공유 메모리 페이지를 동적으로 재할당하는 단계;를 포함한다.
바람직하게는, 상기 동적 재할당 단계는, 당해 데이터 처리 엘리먼트가 수행하는 태스크의 이전 단계의 태스크를 수행하는 인접한 다른 데이터 처리 엘리먼트에 의해 생성된 데이터가, 상기 공유 메모리 페이지에 저장되도록 메모리를 재할당하는 단계; 및 당해 데이터 처리 엘리먼트에 의해 생성된 데이터가, 다음 단계의 태스크를 수행하는 인접한 다른 데이터 처리 엘리먼트의 공유 메모리 페이지에 저장되도록 메모리를 재할당하는 단계;를 포함한다.
또한 상기와 같은 기술적 과제를 달성하기 위한, 본 발명에 따르는, 멀티미디어 데이터의 효율적인 병렬 처리를 위한 병렬 처리 시스템의 데이터 처리 엘리먼트에서의 데이터 처리 방법은, 당해 공유 메모리 페이지에 저장된 데이터를 불러들여 당해 데이터 처리 엘리먼트에 배정된 태스크를 수행하는 단계; 당해 데이터 처리 엘리먼트에 의해 생성된 데이터가, 다음 단계의 태스크를 수행하는 인접한 다른 데이터 처리 엘리먼트의 공유 메모리 페이지에 저장되도록 메모리를 재할당하는 단계; 및 당해 데이터 처리 엘리먼트에 의해 생성된 데이터를 할당된 공유 메모리 페 이지에 저장하는 단계;를 포함한다.
바람직하게는, 이전 단계의 태스크를 수행하는 인접한 다른 데이터 처리 엘리먼트의 태스크가 종료되었는지 확인하는 단계; 및 다음 단계의 태스크를 수행하는 인접한 다른 데이터 처리 엘리먼트의 태스크가 종료되었는지 확인하는 단계;를 더 포함한다.
이하에서, 첨부된 도면들을 참조하여 본 발명의 바람직한 실시예를 상세히 설명한다. 도면들 중 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 참조번호들 및 부호들로 나타내고 있음에 유의해야 한다. 하기에서 본 발명을 설명함에 있어, 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다.
도 1은 본 발명의 일실시예에 따른 병렬 데이터 처리 시스템의 구조를 나타낸 도면이다.
도 1을 참조하면, 본 발명의 병렬 데이터 처리 어레이는 다수의 데이터 처리 엘리먼트(Data Processing Element, DPE)로 구성된 병렬 데이터 처리 시스템이다.
각각의 데이터 처리 엘리먼트는 데이터 처리부(Data Processing Unit, DPU) 및 메모리 라우팅부(Memory Routing Unit, MRU)를 포함한다. 각 데이터 처리 엘리먼트의 데이터 처리부는 병렬적으로 데이터 처리를 수행하지만, 단순히 자신의 메모리 라우팅부에 존재하는 데이터만을 이용하는 것이 아니고, 인접한 다른 데이터 처리 엘리먼트들의 메모리 라우팅부와 상호 연동하여 일련의 프로세서를 유기적으 로 처리하는 구조이다. 메모리 라우팅부 역시 이렇게 상호 연동에 적합한 구조로 되어 있다. 각 데이터 처리 엘리먼트의 내부 구조에 대하여는 도 2에서 상세히 설명할 것이다.
데이터 처리 엘리먼트(100)를 중심으로 살펴보면, 데이터 처리부(110)와 메모리 라우팅부(120)를 포함하고 있으며, 인접한 다른 데이터 처리 엘리먼트들(100n, 100w, 100s, 100e)과 연결하기 위하여 공유 메모리 연결선들(131n, 131w, 131s, 131e) 및 메시지 전달 라인들(132n, 132w, 132s, 132e)을 가지고 있다.
공유 메모리 연결선은 데이터 처리 엘리먼트 내의 공유 메모리를 인접한 다른 데이터 처리 엘리먼트에 연결하기 위한 라인(line)이다. 이 공유 메모리 연결선은 메모리 액세스를 위한 선들, 즉, 어드레스(address), 데이터(data), EN(Enable), RW (Read/Write) 등을 위한 각각의 연결선의 집합이다.
데이터 처리 엘리먼트(100)의 북측(North side, N-side) 공유 메모리 연결선(131n)은 데이터 처리 엘리먼트(100)의 위쪽에 위치한 데이터 처리 엘리먼트(100n)의 남측(Sourth side, S-side) 공유메모리 연결선과 연결된다. 마찬가지로, 서측(West side, W-side) 공유 메모리 연결선(131w)은 왼쪽에 위치한 데이터 처리 엘리먼트(100w)의 동측(East side, E-side) 공유메모리 연결선과 연결되고, 남측(S-side) 공유 메모리 연결선(131s)은 아래쪽에 위치한 데이터 처리 엘리먼트(100s)의 북측(N-side) 공유메모리 연결선과 연결되며, 동측(E-side) 공유 메모리 연결선(131e)은 오른쪽에 위치한 데이터 처리 엘리먼트(100e)의 서측(W-side) 공유메모리 연결선과 연결된다.
메시지 전달 라인은 인접한 데이터 처리 엘리먼트로 메시지를 송신하고 또한 메시지를 수신하기 위한 장치이다. 메시지 전달 라인은 L2Ren(Left to right enable), L2RMsg(Left to right message), R2Len(Right to left enable), R2LMsg (Right to left message) 등을 위한 각각의 연결선의 집합이다.
데이터 처리 엘리먼트(100)는 인접한 다른 데이터 처리 엘리먼트들(100n, 100w, 100s, 100e)과 메시지를 주고 받기 위하여 메시지 전달 라인들(132n, 132w, 132s, 132e)을 가지고 있는데, 데이터 처리 엘리먼트(100)의 북측 메시지 전달 라인(132n)은 데이터 처리 엘리먼트(100n)의 남측 메시지 전달 라인과 연결된다. 마찬가지로, 서측 메시지 전달 라인(132w)은 데이터 처리 엘리먼트(100w)의 동측 메시지 전달 라인과 연결되고, 남측 메시지 전달 라인(132s)은 데이터 처리 엘리먼트(100s)의 북측 메시지 전달 라인과 연결되며, 동측 메시지 전달 라인(132e)은 데이터 처리 엘리먼트(100e)의 서측 메시지 전달 라인과 연결된다.
이러한 구성을 통하여, 임의의 데이터 처리 엘리먼트는 동서남북(N, W, S, E)에 위치한 인접한 다른 데이터 처리 엘리먼트와 연결될 수 있고, 이를 확장하여 임의의 M x N 데이터 처리 어레이가 구성될 수 있다.
이와 같이 4 방향으로 방향성을 가지고 연결함으로써, 연결을 용이하게 하고 다양한 멀티미디어의 처리에 효과적으로 대응할 수 있다. 예를 들어 남북(N -> S) 방향으로는 계층적 차이에 따라 데이터 처리가 이루어지고, 서동(W -> E) 방향으로는 같은 계층의 시간적 처리 순서에 따라 데이터 처리가 이루어지도록 시스템을 활용할 수도 있다.
본 실시예에서는 4 방향으로 연결되는 경우를 예시하였으나, 이에 한정되는 것은 아니며, 시스템에 따라 방향성을 유지한 상태로 공유 메모리 연결선 및 메시지 전달 라인의 개수를 증감시켜 연결 방향을 증감시킬 수 있음을 본 발명이 속하는 기술 분야에 종사하는 자라면 쉽게 이해할 수 있을 것이다.
도 2는 본 발명의 다른 실시예에 따른 데이터 처리 엘리먼트의 내부 구조를 나타낸 도면이다. 즉, 병렬 데이터 처리 어레이를 이루는 개개의 데이터 처리 엘리먼트의 구조를 살핀다.
도 2를 참조하면, 데이터 처리 엘리먼트(200)는 데이터 처리부(Data Processing Unit, DPU)(210)와 메모리 라우팅부(Memory Routing Unit, MRU)(220)를 포함한다. 또한 공유 메모리 페이지를 인접한 다른 데이터 처리 엘리먼트들과 공유하기 위한 연결부(230)를 포함한다.
데이터 처리부(210)는 데이터 처리 명령과 연산을 수행하는 데이터 처리 코어(211), 데이터 처리 코어(211)의 동작에 요구되는 메모리를 액세스하는 메모리 중계기(memory arbiter)(213), 공유 메모리 페이지(222a 내지 222e)와 연결하기 위한 가상 페이지(virtual page)(215v), 및 공유 페이지 스위치(221a 내지 221e, 및 221v)를 제어하는 동적 재할당부(dynamic remapper)(217)를 포함하고 있다.
바람직하게는, 동적 재할당부(217)는 데이터 처리 엘리먼트(200)가 수행하는 태스크의 이전 단계의 태스크를 수행하는 인접한 다른 데이터 처리 엘리먼트에 의해 생성된 데이터가, 공유 메모리 페이지에 저장되도록 메모리를 재할당한다. 또한 데이터 처리 엘리먼트(200)에 의해 생성된 데이터가, 다음 단계의 태스크를 수행하 는 인접한 다른 데이터 처리 엘리먼트의 공유 메모리 페이지에 저장되도록 메모리를 재할당한다.
메모리 라우팅부(220)는 당해 데이터 처리 엘리먼트(200) 및 인접한 다른 데이터 처리 엘리먼트들에 의해 공유되는 공유 메모리 페이지(shared memory page)(222a 내지 222e)와, 공유 메모리 페이지(222a 내지 222e)를 데이터 처리 엘리먼트에 선택적으로 연결하는 공유 페이지 스위치(shared page switch)(221a 내지 221e, 및 221v)를 포함한다. 공유 메모리 페이지의 개수는 시스템에 따라 증감될 수 있다.
바람직하게는 당해 데이터 처리 엘리먼트(200)는 N(north), W(west), S(south), E(east)의 4 방향에 대하여 타 데이터 처리 엘리먼트들과 인접하도록 4 개의 연결부(231a 내지 231e, 및 232a 내지 232e)를 가진다.
이하에서 더욱 상세히 설명한다.
데이터 처리부(210)는 데이터 처리 코어(211), 메모리 중계기(213), 로컬 메모리 페이지(215a 내지 215c), 가상 페이지(215v), 및 동적 재할당부(217)로 구성되어 있다.
데이터 처리 코어(211)는 디지털 신호 처리기(Digital signal processor, DSP)에서 메모리 관련 부분을 제외한 코어(core)이다. 내부적으로는 명령어(instruction), 데이터 주소 생성기(data address generator), 실행부(execution unit)로 구성되어 있다. 데이터 처리 코어(211)는 일반적으로 명령어 인출(instruction fetch), 좌측 데이터 인출(left operand fetch), 우측 데이터 인 출(right operand fetch), 실행 결과 쓰기(execution result write)를 위해서 4 개의 메모리 버스(212)를 매 클록 사이클마다 액세스한다.
메모리 중계기(213)는 데이터 처리 코어(211)로부터 요구되는 메모리 액세스를 중계하여 각 메모리 페이지에 연결시켜 주는 역할을 한다. 메모리 중계기(213) 는 로컬 영역의 물리적 메모리 페이지인 로컬 메모리 페이지(215a 내지 215c) 및 가상 페이지(215v)를 관리한다.
로컬 메모리 페이지(215a 내지 215c)에는 데이터 처리 코어(211)에서 수행되는 명령어 및 로컬 데이터들이 저장된다. 가상 페이지(215v)는 실제로는 존재하지 않는 메모리 블록으로서, 물리적으로 실제 존재하는 공유 메모리 페이지(222a 내지 222e) 중의 하나에 연결되거나, 공유 메모리 연결선(231n, 231w, 231s, 231e)을 통하여 인접한 다른 데이터 처리 엘리먼트의 공유 메모리 페이지에 연결된다. 공유 메모리 페이지(222a 내지 222e)에는 데이터 처리 코어(211)가 인접한 데이터 처리 엘리먼트에 속한 데이터 처리 코어로 전달하려는 멀티미디어 데이터 또는, 인접한 다른 데이터 처리 엘리먼트로부터 전달받을 멀티미디어 데이터가 저장된다.
메모리 라우팅부(220)는 5 개의 물리적인 공유 메모리 페이지(222a 내지 222e), 각 공유 메모리 페이지를 연결하기 위한 5개의 공유 페이지 스위치(221a 내지 221e), 및 가상 페이지(215v)를 인접한 다른 데이터 처리 엘리먼트의 공유 메모리 페이지와 연결하기 위한 공유 페이지 스위치(221v)를 포함하고 있다.
본 실시예에서 공유 메모리 페이지의 개수가 5개인 경우를 예시하였으나, 이에 한정되는 것은 아니고 시스템에 따라 개수를 증감할 수 있음은 본 발명이 속하 는 기술 분야에 종사하는 자라면 쉽게 이해할 수 있을 것이다.
가상 페이지(215v)를 연결하기 위한 공유 페이지 스위치(221v)는 다른 공유 페이지 스위치(221a 내지 221e)와는 달리 각 방향의 공유 메모리 연결선(231n, 231w, 231s, 231e)을 물리적인 공유 메모리가 아닌 가상 페이지(215v)와 연결한다. 즉, 가상 페이지(215v)는 공유 페이지 스위치(221v)를 통하여 인접한 다른 데이터 처리 엘리먼트의 물리적인 공유 메모리 페이지와 연결될 수 있다. 이를 통하여 데이터 처리 코어(211)는 인접한 다른 데이터 처리 엘리먼트의 공유 메모리 페이지에 데이터를 쓰거나 읽을 수 있다.
공유 메모리 페이지 1(222a)은 공유 페이지 스위치(221a)와 상호 연동 (association)된다. 즉, 공유 메모리 페이지 1(222a)은 공유 페이지 스위치(221a)를 통해서, 공유 메모리 연결선(231n, 231w, 231s, 231e) 또는 가상 페이지(215v) 중의 하나와 연결될 수 있다. 공유 페이지 스위치(221a)는 5:1 양방향 멀티플렉서(Bi-directional MUX)의 역할을 한다. 이렇게 하여, 공유 메모리 페이지 1(222a)은 당해 데이터 처리 엘리먼트(200)에 의하여 사용될 수도 있고, 인접한 다른 데이터 처리 엘리먼트에 의해 사용될 수도 있다.
이러한 연결은 다른 공유 메모리 페이지(222b 내지 222e)에 대해서도 동일하다. 즉, 공유 메모리 페이지 2(222b)는 공유 페이지 스위치(221b)와, 공유 메모리 페이지 3(222c)은 공유 페이지 스위치(221c)와, 공유 메모리 페이지 4(222d)는 공유 페이지 스위치(221d)와, 그리고 공유 메모리 페이지 5(222e)는 공유 페이지 스위치(221e)와 상호 연동 되어 있으며, 각각의 공유 메모리 페이지는 공유 메모리 연결선(231n, 231w, 231s, 231e) 또는 가상 페이지(215v) 중의 하나와 연결될 수 있다.
한편, 공유 페이지 스위치(221v)의 연결 선택, 즉 가상 페이지(215v)가 공유 메모리 페이지(222a 내지 222e) 또는 공유 메모리 연결선(231n, 231w, 231s, 231e) 중 어느 하나와 연결될 것인지는 동적 재할당부(217)와 데이터 처리 코어(211)에 의하여 동적으로 결정된다.
또한 공유 페이지 스위치(221a 내지 221e)의 연결선택, 즉 공유 메모리 페이지(222a 내지 222e)가 공유 메모리 연결선(231n, 231w, 231s, 231e) 또는 가상 페이지(215v) 중 어느 쪽에 연결될 것인지도 동적 재할당부(217)와 데이터 처리 코어(211)에 의하여 동적으로 결정된다.
동적 재할당부(217)는 인접한 다른 데이터 처리 엘리먼트와 메시지를 주고 받기 위한 메시지 전달 라인들(132n, 132w, 132s, 132e)과 연결되어 있다. 동적 재할당부(217)는 메시지 전달 라인들(132n, 132w, 132s, 132e) 각각에 대하여 데이터 대기열(queue)을 가지고 있다. 메시지 전달 라인을 통하여 인접한 데이터 처리 엘리먼트로부터 메시지가 들어오면 이를 대기열에 저장하고 데이터 처리 코어(211)에 연결된 라인(219)을 통하여 인터럽트를 발생시킨다. 데이터 처리 코어(211)는 동적 재할당부(217)로부터 인터럽트가 발생하면 어떠한 메시지가 들어왔는지 확인하고, 이 메시지로부터 인접한 다른 데이터 처리 엘리먼트 내의 다른 데이터 처리 코어의 현재 데이터 처리 상태를 파악할 수 있다.
데이터 처리 코어(211)는 자신이 수행중인 알고리즘의 진행 상태 및 인접한 데이터 처리 코어의 데이터 처리 상태를 확인한 후, 공유 메모리 페이지(222a 내지 222e)의 메모리 맵핑(mapping) 변경에 대한 결론을 내린다. 메모리 맵핑 변경에 대한 결론이 나면, 데이터 처리 코어(211)는 동적 재할당부(217)에 라인(219)을 통하여 메모리 맵(map) 변경을 위한 명령을 내린다.
동적 재할당부(217)는 데이터 처리 코어(211)로부터 수신한 명령에 근거하여 스위치 제어 라인(218v)을 통하여 공유 페이지 스위치(221v)의 맵핑을 변경시킨다. 마찬가지로 스위치 제어 라인(218a 내지 218e)을 통하여 공유 페이지 스위치(221a 내지 221e)의 맵핑을 변경시킨다.
본 발명의 실시예와 같은 방식으로 데이터 처리 엘리먼트의 구조를 설계하면, 각 데이터 처리 엘리먼트는 다른 데이터 처리 엘리먼트의 공유 메모리 페이지를 사용할 수 있고, 이를 이용한 병렬 데이터 처리 어레이는 시간 - 방향성을 가지는 공유 메모리 매핑 구조를 가지게 된다. 이 경우 병렬 데이터 처리 어레이의 성능 및 활용을 극대화할 수 있다. 예를 들어, 메모리 재할당(remapping)의 방법만으로 프로세서 간에 데이터를 주고 받는 효과를 얻을 수 있다. 이에 대하여는 도 3 및 도 4에서 더욱 상세히 설명한다.
도 3은 본 발명의 또 다른 실시예에 따른 병렬 처리 시스템에서의 데이터 처리 방법을 나타낸 흐름도이다.
도 3을 참조하면, 우선 본 실시예의 데이터 처리 방법은, 앞서 설명했던 시스템, 즉, 다수의 데이터 처리 엘리먼트를 포함하고, 각 데이터 처리 엘리먼트는 인접한 다른 데이터 처리 엘리먼트들과 공유하는 공유 메모리 페이지를 가지는 병 렬 처리 시스템에서의 데이터 처리 방법이다.
본 실시예의 데이터 처리 방법은, 우선, 멀티미디어 데이터 처리 알고리즘을 병렬 처리 가능한 2 이상의 서브 블록(sub-block)으로 분할하고(S310), 분할된 서브 블록을 처리하는 일련의 태스크(task)를, 각 태스크의 처리 순서에 따라 각 데이터 처리 엘리먼트의 연결된 방향성을 고려하여 각 데이터 처리 엘리먼트에 배정(S320)한 후, 일련의 태스크가 각 데이터 처리 엘리먼트에서 처리된 상태에 따라 각 공유 메모리 페이지를 동적으로 재할당한다(S330).
바람직하게는, S330 단계는, 당해 데이터 처리 엘리먼트가 수행하는 태스크의 이전 단계의 태스크를 수행하는 인접한 다른 데이터 처리 엘리먼트에 의해 생성된 데이터가, 해당 공유 메모리 페이지에 저장되도록 메모리를 재할당하는 단계와, 당해 데이터 처리 엘리먼트에 의해 생성된 데이터가, 다음 단계의 태스크를 수행하는 인접한 다른 데이터 처리 엘리먼트의 공유 메모리 페이지에 저장되도록 메모리를 재할당하는 단계를 포함할 수 있다.
이하에서 실제 예를 들어 더욱 상세히 설명한다. 이하의 설명에 도 1 및 도 2를 참조하며, 도 1의 데이터 처리 엘리먼트(100)의 내부를 도 2의 데이터 처리 엘리먼트(200)로 가정하여 설명한다.
일반적인 멀티미디어 알고리즘은 서브 블록(sub-block)으로 분할이 가능하다. 예를 들면, 임의의 멀티미디어 알고리즘은 A -> B -> C로 이어지는 서브 블록의 조합으로 분할이 가능하다. 만일 한 개의 디지털 신호 처리기(DSP)에서 A, B, C 의 서브 블록에 해당하는 태스크를 모두 수행한다면 최종 출력인 C의 출력을 얻어 내기 위해서는 A의 출력, B의 출력을 모두 계산해야 한다.
A -> B -> C로 이어지는 멀티미디어 알고리즘을 데이터 처리 엘리먼트에 각각 분할했을 때를 가정해 보자. 도 1에서 데이터 처리 엘리먼트(100w)는 태스크 A를, 데이터 처리 엘리먼트(100)는 태스크 B를, 데이터 처리 엘리먼트(100e)는 태스크 C를 각각 처리한다고 가정한다.
초기에 데이터 처리 엘리먼트(100w)의 가상 페이지는 공유 페이지 스위치를 을 통하여 자신의 동측 공유 메모리 연결선에 연결되고, 이는 다시 데이터 처리 엘리먼트(100)의 서측 공유 메모리 연결선(131w 또는 231w)에 연결된 후, 데이터 처리 엘리먼트(100)의 공유 페이지 스위치(221a)를 통해서 데이터 처리 엘리먼트(100)의 공유 메모리 페이지(222a)에 연결되어 있다. 데이터 처리 엘리먼트(100w) 내의 데이터 처리 코어는 처리 결과를 모두 데이터 처리 엘리먼트(100) 내의 공유 메모리 페이지(222a)에 저장한 후, 메시지 전달 라인(132w 또는 232w)을 통해서 데이터 처리 코어(211)에 태스크 A의 처리가 완료되었음을 알린다.
데이터 처리 엘리먼트(100)의 데이터 처리 코어(21)는 데이터 처리 엘리먼트(100) 내의 동적 재할당부(217)에 명령을 내려서 공유 메모리 페이지(222a)가 가상 페이지(215v)에 연결되게 함과 동시에 데이터 처리 엘리먼트(100)의 서측 공유메모리 연결선(131w 또는 231w)이 공유 페이지 스위치(221b)를 통해서 공유 메모리 페이지(222b)에 연결되게 한다. 그리고, 메모리 재할당이 완료되었음을 메시지 전달 라인(132w 또는 232w)을 통해서 데이터 처리 엘리먼트(100w)에 알린다.
이제 데이터 처리 엘리먼트(100)의 데이터 처리 코어(211)는 태스크 B를 수 행하면서 공유 메모리 페이지(222a)에 저장된 데이터를 처리하여 데이터 처리 엘리먼트(100e)의 공유 메모리 페이지에 결과를 저장한다.
데이터 처리 엘리먼트(100) 내의 데이터 처리 코어(211)가 태스크 B를 수행하고 있을 때, 데이터 처리 엘리먼트(100w)의 데이터 처리 코어는 태스크 A를 수행하여 데이터 처리 엘리먼트(100) 내의 공유 메모리 페이지(222b)에 저장한다.
데이터 처리 엘리먼트(100)과 데이터 처리 엘리먼트(100w)에서 태스크 A 및 태스크 B가 각각 수행중일 때, 같은 방법으로 데이터 처리 엘리먼트(100e)는 태스크 C를 수행한다.
전술한 바와 같은 과정을 통하여 태스크 A, 태스크 B 및 태스크 C는 각각 데이터 처리 데이터 처리 엘리먼트(100w), 데이터 처리 엘리먼트(100) 및 데이터 처리 엘리먼트(100e)에서 동시에 처리되며 최종 처리량(throughput)은 알고리즘의 서브 블록들이 단일 프로세서에서 처리될 때에 비해서 약 3배가 된다.
또한, 데이터 처리 엘리먼트 내의 공유 메모리 페이지의 맵핑이 동적으로 변화되면서 인접한 다른 데이터 처리 엘리먼트의 가상 페이지에 연결되도록 하는, 시간 - 방향성을 가지는 공유 메모리(Temporal and Directional Shared Memory) 구조를 통하여 데이터 처리 엘리먼트 간의 대량의 데이터 이동을 가능하게 한다. 즉 메모리 재할당만으로 실제적인 대량의 데이터 이동의 효과를 얻을 수 있다.
도 4는 본 발명의 또 다른 실시예에 따른 병렬 처리 시스템의 데이터 처리 엘리먼트에서의 데이터 처리 방법을 나타낸 흐름도이다.
도 4을 참조하면, 우선 본 실시예의 데이터 처리 방법은, 앞서 설명했던 시 스템, 즉, 다수의 데이터 처리 엘리먼트를 포함하고, 각 데이터 처리 엘리먼트는 인접한 다른 데이터 처리 엘리먼트들과 공유하는 공유 메모리 페이지를 가지는 병렬 처리 시스템이 멀티미디어 데이터 처리 알고리즘을 분할하여 2 이상의 일련의 태스크(task)로 병렬 처리할 때, 각 데이터 처리 엘리먼트에서의 데이터 처리 방법이다.
본 실시예의 데이터 처리 방법은, 당해 공유 메모리 페이지에 저장된 데이터를 불러들여(S420) 당해 데이터 처리 엘리먼트에 배정된 태스크를 수행(S430)하는 단계와, 당해 데이터 처리 엘리먼트에 의해 생성된 데이터가, 다음 단계의 태스크를 수행하는 인접한 다른 데이터 처리 엘리먼트의 공유 메모리 페이지에 저장되도록 메모리를 재할당(S450)하는 단계, 및 당해 데이터 처리 엘리먼트에 의해 생성된 데이터를 할당된 공유 메모리 페이지에 저장하는 단계를 포함한다.
또한 데이터 처리 엘리먼트 간의 동기화를 수행하기 위하여, 이전 단계의 태스크를 수행하는 인접한 다른 데이터 처리 엘리먼트의 태스크가 종료되었는지 확인하는 단계(S410) 및 다음 단계의 태스크를 수행하는 인접한 다른 데이터 처리 엘리먼트의 태스크가 종료되었는지 확인하는 단계(S450)를 더 포함할 수 있다.
이와 같은 방식으로, 최종적으로 태스크가 완료(S450)될 때까지 메모리 재할당을 통하여, 대량의 데이터를 각 데이터 처리 엘리먼트 사이에 별도의 데이터 전송 과정 없이 전송할 수 있다. 또한 각 데이터 처리 엘리먼트의 프로세서 코어에 의하여 수행되는 프로그램의 변경이 없이, 메모리만 재할당되는 방식으로 각각의 독립적인 태스크를 수행할 수 있다.
본 발명은 또한 데이터 전송 장치에만 한정되는 것이 아니라 본 장치를 포함하여 임의의 두 데이터 처리 엘리먼트 간에 고속의 대량 데이터 전송 가능하도록 구현한 병렬 데이터 처리 어레이에도 적용될 수 있음은 자명하다.
본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장 장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등 및 균등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
본 발명에 따르면, 데이터 처리 엘리먼트 간에 시간 - 방향성을 가지는 공 유 메모리 구조를 이용하여 멀티미디어 데이터를 효율적으로 병렬 처리할 수 있다.
또한 본 발명에 따르면, 데이터 처리 엘리먼트 내의 공유 메모리 페이지의 맵핑이 동적으로 변화되면서 인접한 다른 데이터 처리 엘리먼트의 가상 페이지에 연결되도록 하는 구조를 통하여 데이터 처리 엘리먼트 간의 대량의 데이터 이동이 가능하며, 결과적으로 메모리 재할당만으로 데이터 처리 엘리먼트 간에 대량의 데이터 이동 효과를 얻을 수 있다.

Claims (19)

  1. 다수의 데이터 처리 엘리먼트(Data Processing Element, DPE)를 포함하는 병렬 처리 시스템의 각 데이터 처리 엘리먼트에 있어서,
    당해 데이터 처리 엘리먼트 및 인접한 다른 데이터 처리 엘리먼트들에 의해 공유되는 공유 메모리 페이지(shared memory page)와, 상기 공유 메모리 페이지를 데이터 처리 엘리먼트에 선택적으로 연결하는 공유 페이지 스위치(shared page switch)를 포함하는 메모리 라우팅부(Memory Routing Unit, MRU); 및
    상기 공유 메모리 페이지와 연결하기 위한 가상 페이지(virtual page)와, 멀티미디어 데이터 처리를 위한 일련의 태스크(task)가 각 데이터 처리 엘리먼트에서 처리된 상태에 따라 상기 공유 메모리 페이지를 어떤 데이터 처리 엘리먼트에 할당할지를 결정하고, 상기 결정에 따라 공유 페이지 스위치를 제어하는 동적 재할당부(dynamic remapper)를 포함하는 데이터 처리부(Data Processing Unit, DPU);를 포함하는 것을 특징으로 하는 멀티미디어 데이터의 병렬 처리를 위한 데이터 처리 엘리먼트.
  2. 제 1항에 있어서,
    상기 공유 메모리 페이지를 상기 인접한 다른 데이터 처리 엘리먼트들과 공유하기 위한 공유 메모리 연결선과, 각 데이터 처리 엘리먼트에서의 태스크 처리 상태를 알리기 위한 메시지 전달 라인을 포함하는 다수의 연결부;를 더 포함하는 것을 특징으로 하는 멀티미디어 데이터의 병렬 처리를 위한 데이터 처리 엘리먼트.
  3. 제 2항에 있어서,
    당해 데이터 처리 엘리먼트는 N(north), W(west), S(south), E(east)의 4 방향에 대하여 타 데이터 처리 엘리먼트들과 인접하도록 4 개의 연결부를 가지는 것을 특징으로 하는 멀티미디어 데이터의 병렬 처리를 위한 데이터 처리 엘리먼트.
  4. 제 1항에 있어서,
    상기 동적 재할당부는,
    당해 데이터 처리 엘리먼트가 수행하는 태스크의 이전 단계의 태스크를 수행하는 인접한 다른 데이터 처리 엘리먼트에 의해 생성된 데이터가, 상기 공유 메모리 페이지에 저장되도록 상기 공유 페이지 스위치를 제어하고,
    당해 데이터 처리 엘리먼트에 의해 생성된 데이터가, 다음 단계의 태스크를 수행하는 인접한 다른 데이터 처리 엘리먼트의 공유 메모리 페이지에 저장되도록 상기 공유 페이지 스위치를 제어하는 것을 특징으로 하는 멀티미디어 데이터의 병렬 처리를 위한 데이터 처리 엘리먼트.
  5. 제 1항에 있어서,
    상기 데이터 처리부는,
    데이터 처리 명령과 연산을 수행하는 데이터 처리 코어와, 상기 데이터 처리 코어의 동작에 요구되는 메모리를 액세스하는 메모리 중계기;를 더 포함하는 것을 특징으로 하는 멀티미디어 데이터의 병렬 처리를 위한 데이터 처리 엘리먼트.
  6. 제 1항에 있어서,
    상기 공유 메모리 페이지는 둘 이상이고, 상기 공유 페이지 스위치는 상기 각 공유 메모리 페이지를 연결하는 둘 이상의 스위치 및 상기 가상 페이지를 연결하는 스위치를 포함하는 것을 특징으로 하는 멀티미디어 데이터의 병렬 처리를 위한 데이터 처리 엘리먼트.
  7. 다수의 데이터 처리 엘리먼트(Data Processing Element, DPE)를 포함하는 병렬 처리 시스템에서 각 데이터 처리 엘리먼트의 데이터 처리 장치에 있어서,
    당해 데이터 처리 엘리먼트 또는 인접한 다른 데이터 처리 엘리먼트들의 공유 메모리 페이지((shared memory page)들 중 하나와 선택적으로 연결되는 가상 페이지(virtual page); 및
    멀티미디어 데이터 처리를 위한 일련의 태스크(task)가 각 데이터 처리 엘리먼트에서 처리된 상태에 따라 공유 메모리 페이지를 상기 가상 페이지 또는 인접한 다른 데이터 처리 엘리먼트들 중 하나에 할당하는 동적 재할당부(dynamic remapper);를 포함하는 것을 특징으로 하는 멀티미디어 데이터의 병렬 처리를 위한 데이터 처리 엘리먼트의 데이터 처리 장치.
  8. 제 7항에 있어서,
    상기 동적 재할당부는,
    당해 데이터 처리 엘리먼트가 수행하는 태스크의 이전 단계의 태스크를 수행하는 인접한 다른 데이터 처리 엘리먼트에 의해 생성된 데이터가, 당해 데이터 처리 엘리먼트의 공유 메모리 페이지에 저장되도록 상기 공유 메모리 페이지를 재할당하고,
    당해 데이터 처리 엘리먼트에 의해 생성된 데이터가, 다음 단계의 태스크를 수행하는 인접한 다른 데이터 처리 엘리먼트의 공유 메모리 페이지에 저장되도록 상기 다음 단계의 태스크를 수행하는 인접한 다른 데이터 처리 엘리먼트의 공유 메모리 페이지를 재할당하는 것을 특징으로 하는 멀티미디어 데이터의 병렬 처리를 위한 데이터 처리 엘리먼트의 데이터 처리 장치.
  9. 제 7항에 있어서,
    데이터 처리 명령과 연산을 수행하는 데이터 처리 코어; 및
    상기 데이터 처리 코어의 동작에 요구되는 메모리를 액세스하는 메모리 중계기;를 더 포함하는 것을 특징으로 하는 멀티미디어 데이터의 병렬 처리를 위한 데이터 처리 엘리먼트의 데이터 처리 장치.
  10. 다수의 데이터 처리 엘리먼트(Data Processing Element, DPE)를 포함하고, 각 데이터 처리 엘리먼트는 인접한 다른 데이터 처리 엘리먼트들과 공유하는 공유 메모리 페이지(shared memory page)를 가지는 병렬 처리 시스템에서의 데이터 처리 방법에 있어서,
    멀티미디어 데이터 처리 알고리즘을 병렬 처리 가능한 2 이상의 서브 블록(sub-block)으로 분할하는 단계;
    상기 분할된 서브 블록을 처리하는 일련의 태스크(task)를, 각 태스크의 처리 순서에 따라 각 데이터 처리 엘리먼트의 연결된 방향성을 고려하여 각 데이터 처리 엘리먼트에 배정하는 단계; 및
    일련의 태스크가 각 데이터 처리 엘리먼트에서 처리된 상태에 따라 각 공유 메모리 페이지를 동적으로 재할당하는 단계;를 포함하는 것을 특징으로 하는 멀티미디어 데이터의 병렬 처리를 위한 병렬 처리 시스템에서의 데이터 처리 방법.
  11. 제 10항에 있어서,
    상기 동적 재할당 단계는,
    당해 데이터 처리 엘리먼트가 수행하는 태스크의 이전 단계의 태스크를 수행하는 인접한 다른 데이터 처리 엘리먼트에 의해 생성된 데이터가, 상기 공유 메모리 페이지에 저장되도록 메모리를 재할당하는 단계; 및
    당해 데이터 처리 엘리먼트에 의해 생성된 데이터가, 다음 단계의 태스크를 수행하는 인접한 다른 데이터 처리 엘리먼트의 공유 메모리 페이지에 저장되도록 메모리를 재할당하는 단계;를 포함하는 것을 특징으로 하는 멀티미디어 데이터의 병렬 처리를 위한 병렬 처리 시스템에서의 데이터 처리 방법.
  12. 다수의 데이터 처리 엘리먼트(Data Processing Element, DPE)를 포함하고, 각 데이터 처리 엘리먼트는 인접한 다른 데이터 처리 엘리먼트들와 공유하는 공유 메모리 페이지(shared memory page)를 가지는 병렬 처리 시스템이, 멀티미디어 데이터 처리 알고리즘을 분할하여 2 이상의 일련의 태스크(task)로 병렬 처리할 때, 각 데이터 처리 엘리먼트에서의 데이터 처리 방법에 있어서,
    당해 공유 메모리 페이지에 저장된 데이터를 불러들여 당해 데이터 처리 엘리먼트에 배정된 태스크를 수행하는 단계;
    당해 데이터 처리 엘리먼트에 의해 생성된 데이터가, 다음 단계의 태스크를 수행하는 인접한 다른 데이터 처리 엘리먼트의 공유 메모리 페이지에 저장되도록 상기 다음 단계의 태스크를 수행하는 인접한 다른 데이터 처리 엘리먼트의 공유 메모리 페이지를 재할당하는 단계; 및
    당해 데이터 처리 엘리먼트에 의해 생성된 데이터를 상기 재할당된 공유 메모리 페이지에 저장하는 단계;를 포함하는 것을 특징으로 하는 멀티미디어 데이터의 효율적인 병렬 처리를 위한 병렬 처리 시스템의 데이터 처리 엘리먼트에서의 데이터 처리 방법.
  13. 제 12항에 있어서,
    당해 공유 메모리 페이지에 저장된 데이터를 불러들이기 전에, 이전 단계의 태스크를 수행하는 인접한 다른 데이터 처리 엘리먼트의 태스크가 종료되었는지 확인하는 단계; 및
    당해 데이터 처리 엘리먼트에 배정된 태스크를 수행한 후에, 다음 단계의 태스크를 수행하는 인접한 다른 데이터 처리 엘리먼트의 태스크가 종료되었는지 확인하는 단계;를 더 포함하는 것을 특징으로 하는 멀티미디어 데이터의 효율적인 병렬 처리를 위한 병렬 처리 시스템의 데이터 처리 엘리먼트에서의 데이터 처리 방법.
  14. 데이터 병렬 처리 시스템에 다수 포함된 데이터 처리 엘리먼트(Data Processing Element, DPE)의 멀티미디어 데이터의 처리 방법에 있어서,
    당해 데이터 처리 엘리먼트 및 인접한 다른 데이터 처리 엘리먼트들의 데이터 처리 상태에 따라 공유 메모리 페이지를 재할당하는 단계; 및
    인접한 다른 데이터 처리 엘리먼트들이 상기 공유 메모리 페이지에 엑세스할 수 있도록 재할당된 공유 메모리 페이지를 인접한 다른 데이터 처리 엘리먼트들 중 하나와 선택적으로 연결하는 단계;를 포함하는 것을 특징으로 하는 데이터 처리 엘리먼트에서의 멀티미디어 데이터 처리 방법.
  15. 제14항에 있어서, 상기 공유 메모리 페이지 재할당 단계는,
    이전 단계의 태스크를 수행하는 인접한 다른 데이터 처리 엘리먼트에 의해 생성된 데이터가, 당해 데이터 처리 엘리먼트에 저장되도록 상기 공유 메모리 페이지를 재할당하는 단계; 및
    당해 데이터 처리 엘리먼트에 의해 생성된 데이터가, 다음 단계의 태스크를 수행하는 인접한 다른 데이터 처리 엘리먼트에서 사용되도록 상기 다음 단계의 태스크를 수행하는 인접한 다른 데이터 처리 엘리먼트에 상기 공유 메모리 페이지를 재할당하는 단계;를 포함하는 것을 특징으로 하는 데이터 처리 엘리먼트에서의 멀티미디어 데이터 병렬 처리 방법.
  16. 제14항에 있어서,
    이전 단계의 태스크를 수행하는 인접한 다른 데이터 처리 엘리먼트에 공유 메모리 페이지를 재할당한 후, 당해 데이터 처리 엘리먼트에 의해 생성된 데이터가, 다음 단계의 태스크를 수행하는 인접한 다른 데이터 처리 엘리먼트에 저장되도록 당해 데이터 처리 엘리먼트를 상기 다음 단계의 태스크를 수행하는 인접한 다른 데이터 처리 엘리먼트의 재할당된 공유 메모리 페이지에 연결하는 단계;를 더 포함하는 것을 특징으로 하는 데이터 처리 엘리먼트에서의 멀티미디어 데이터 병렬 처리 방법.
  17. 제14항에 있어서,
    당해 데이터 처리 엘리먼트 및 인접한 다른 데이터 처리 엘리먼트들의 데이터 처리 상태에 따라 상기 공유 메모리 페이지 재할당과 동시에 가상 페이지를 재할당하는 단계;를 더 포함하는 것을 특징으로 하는 데이터 처리 엘리먼트에서의 멀티미디어 데이터 병렬 처리 방법.
  18. 멀티미디어 데이터의 병렬 처리를 위한 데이터 병렬 처리 시스템에 다수 포함된 각 데이터 처리 엘리먼트(Data Processing Element, DPE)에 있어서,
    당해 데이터 처리 엘리먼트 및 인접한 다른 데이터 처리 엘리먼트들의 데이터 처리 상태에 따라 당해 데이터 처리 엘리먼트 및 인접한 다른 데이터 처리 엘리먼트들에 의해 데이터가 공유되도록 공유 메모리 페이지를 재할당하는 데이터 처리부(Data Processing Unit, DPU); 및
    인접한 다른 데이터 처리 엘리먼트들이 상기 공유 메모리 페이지에 엑세스할 수 있도록 재할당된 공유 메모리 페이지를 인접한 다른 데이터 처리 엘리먼트들 중 하나에 선택적으로 연결하는 메모리 라우팅부(Memory Routing Unit, MRU);를 포함하는 것을 특징으로 하는 멀티미디어 데이터의 병렬 처리를 위한 데이터 처리 엘리먼트.
  19. 제18항에 있어서,
    당해 데이터 처리 엘리먼트는 인접한 다른 데이터 처리 엘리먼트들이 시간적 또는 계층적 방향성을 갖고 연결되도록 하는 다수의 연결부들을 가지는 것을 특징으로 하는 멀티미디어 데이터의 병렬 처리를 위한 데이터 처리 엘리먼트.
KR1020070042190A 2007-04-30 2007-04-30 멀티미디어 데이터의 효율적인 병렬 처리를 위한 장치,방법, 데이터 처리 엘리먼트 KR100895298B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020070042190A KR100895298B1 (ko) 2007-04-30 2007-04-30 멀티미디어 데이터의 효율적인 병렬 처리를 위한 장치,방법, 데이터 처리 엘리먼트
US12/112,156 US8510514B2 (en) 2007-04-30 2008-04-30 Apparatus, method and data processing element for efficient parallel processing of multimedia data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070042190A KR100895298B1 (ko) 2007-04-30 2007-04-30 멀티미디어 데이터의 효율적인 병렬 처리를 위한 장치,방법, 데이터 처리 엘리먼트

Publications (2)

Publication Number Publication Date
KR20080097066A KR20080097066A (ko) 2008-11-04
KR100895298B1 true KR100895298B1 (ko) 2009-05-07

Family

ID=39888397

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070042190A KR100895298B1 (ko) 2007-04-30 2007-04-30 멀티미디어 데이터의 효율적인 병렬 처리를 위한 장치,방법, 데이터 처리 엘리먼트

Country Status (2)

Country Link
US (1) US8510514B2 (ko)
KR (1) KR100895298B1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8484645B2 (en) * 2008-06-10 2013-07-09 Hewlett-Packard Development Company, L.P. Apparatus, and associated method, for handling content pursuant to transfer between enterprise content management repositories
US10628192B2 (en) * 2015-12-24 2020-04-21 Intel Corporation Scalable techniques for data transfer between virtual machines
KR20180005001A (ko) 2016-07-05 2018-01-15 한국전자통신연구원 동적 메모리 관리 장치 및 방법
US10656964B2 (en) * 2017-05-16 2020-05-19 Oracle International Corporation Dynamic parallelization of a calculation process
US11379389B1 (en) * 2018-04-03 2022-07-05 Xilinx, Inc. Communicating between data processing engines using shared memory

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0930574A2 (en) 1998-01-16 1999-07-21 Sony Corporation Parallel processor and processing method
KR20050021233A (ko) * 2003-08-21 2005-03-07 마츠시타 덴끼 산교 가부시키가이샤 신호 처리 장치 및 그것을 이용한 전자 기기
WO2006015868A2 (en) 2004-08-13 2006-02-16 Clearspeed Technology Plc Global memory system for a data processor comprising a plurality of processing elements
KR20060121266A (ko) * 2003-12-01 2006-11-28 가부시키가이샤 소니 컴퓨터 엔터테인먼트 효율적인 멀티태스킹을 위한 방법 및 장치

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11316744A (ja) * 1998-05-01 1999-11-16 Sony Corp 並列プロセッサおよび演算処理方法
US6961782B1 (en) 2000-03-14 2005-11-01 International Business Machines Corporation Methods for routing packets on a linear array of processors
US6754801B1 (en) 2000-08-22 2004-06-22 Micron Technology, Inc. Method and apparatus for a shift register based interconnection for a massively parallel processor array
FR2865290A1 (fr) 2004-01-21 2005-07-22 Thomson Licensing Sa Procede de gestion de donnees dans un processeur matriciel et processeur matriciel mettant en oeuvre ce procede

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0930574A2 (en) 1998-01-16 1999-07-21 Sony Corporation Parallel processor and processing method
KR20050021233A (ko) * 2003-08-21 2005-03-07 마츠시타 덴끼 산교 가부시키가이샤 신호 처리 장치 및 그것을 이용한 전자 기기
KR20060121266A (ko) * 2003-12-01 2006-11-28 가부시키가이샤 소니 컴퓨터 엔터테인먼트 효율적인 멀티태스킹을 위한 방법 및 장치
WO2006015868A2 (en) 2004-08-13 2006-02-16 Clearspeed Technology Plc Global memory system for a data processor comprising a plurality of processing elements

Also Published As

Publication number Publication date
US8510514B2 (en) 2013-08-13
US20080270710A1 (en) 2008-10-30
KR20080097066A (ko) 2008-11-04

Similar Documents

Publication Publication Date Title
US11311801B2 (en) Methods for using high-speed data communication fabric to enable cross-system command buffer reading for data retrieval in cloud gaming
TWI483213B (zh) 用於託付繪圖之整合式gpu、nic及壓縮硬體
CN102067088A (zh) 多处理器
KR100895298B1 (ko) 멀티미디어 데이터의 효율적인 병렬 처리를 위한 장치,방법, 데이터 처리 엘리먼트
TWI582689B (zh) 用於多重格式影像處理之可組配緩衝器分派技術
EP1654669A2 (en) A single chip protocol converter
US8464006B2 (en) Method and apparatus for data transmission between processors using memory remapping
EP3364625B1 (en) Device, system and method for adaptive payload compression in a network fabric
CN1813250A (zh) 在数据驱动架构网状阵列中控制存储器存取装置
JPH0984004A (ja) 画像処理装置
CN100547567C (zh) 具有被优化以处理数据流应用的高速缓存的数据处理系统
US7657711B2 (en) Dynamic memory bandwidth allocation
JPH04295947A (ja) 動的割振りが可能なバスを備えるコンピュータ
JP4563300B2 (ja) テーブル装置、可変長符号化/復号装置、可変長符号化装置及び可変長復号装置
CA2203378A1 (en) Simultaneous processing by multiple components
CN101261605A (zh) 融合存储器设备及方法
JP3327900B2 (ja) データ処理装置
US20060098730A1 (en) Video codec
KR101484101B1 (ko) 동영상 변환 장치
JP2011160077A (ja) 復号装置および方法
JPH11266447A (ja) 集積回路及び集積化方法
KR0155527B1 (ko) 복합 멀티미디어 보드의 pc 정합방법 및 그 장치
US20050033927A1 (en) Information-processing apparatus and electronic equipment using thereof
JP4351903B2 (ja) 動画像符号化装置
CN116226032A (zh) 用于ddr存储器的读控制系统

Legal Events

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

Payment date: 20120330

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20130325

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160330

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20170327

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20180406

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20190325

Year of fee payment: 11