KR20030064239A - 화상을 처리하는 장치 및 방법과 이 장치에 이용되는컴파일러 - Google Patents

화상을 처리하는 장치 및 방법과 이 장치에 이용되는컴파일러 Download PDF

Info

Publication number
KR20030064239A
KR20030064239A KR1020020030578A KR20020030578A KR20030064239A KR 20030064239 A KR20030064239 A KR 20030064239A KR 1020020030578 A KR1020020030578 A KR 1020020030578A KR 20020030578 A KR20020030578 A KR 20020030578A KR 20030064239 A KR20030064239 A KR 20030064239A
Authority
KR
South Korea
Prior art keywords
unit
operations
pipelines
clock
image processing
Prior art date
Application number
KR1020020030578A
Other languages
English (en)
Inventor
가즈히로 히와다
다까히로 사이또
사이또세이이찌로
Original Assignee
가부시끼가이샤 도시바
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 가부시끼가이샤 도시바 filed Critical 가부시끼가이샤 도시바
Publication of KR20030064239A publication Critical patent/KR20030064239A/ko

Links

Classifications

    • 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
    • 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
    • G06F15/8053Vector processors
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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

Abstract

입력된 화상 데이터를 연산하는 복수의 연산 파이프라인과, 상기 복수의 연산 파이프라인이 출력한 연산 결과를, 다시 상기 복수의 연산 파이프라인으로 입력시키기 위해, 데이터 전송 경로를 전환하기 위한 전환 채널과, 상기 전환 채널에 의한 상기 데이터 전송 경로의 전환 및 상기 복수의 연산 파이프라인에 있어서의 연산을 제어하는 제어 회로를 구비하는 화상 처리 장치이며, 상기 제어 회로는 복수의 연산으로 구성되는 단위 연산을 상기 복수의 연산 파이프라인으로 실행할 때에, 1에서 n (n은 양의 정수)까지의 단위 연산 중 단위 연산 k(1<k<n)로부터 단위 연산 n까지의 (n-k+1)개의 단위 연산을 구성하는 상기 복수의 연산을 동일한 연산 파이프라인에서의 동일한 연산 시간에 중복되지 않도록 스케쥴링한다.

Description

화상을 처리하는 장치 및 방법과 이 장치에 이용되는 컴파일러{IMAGE PROCESSING DEVICE AND METHOD, AND COMPILER USED IN IMAGE PROCESSING DEVICE}
본 발명은 화상을 처리하는 장치 및 방법과 이 장치에 이용되는 컴파일러에 관한 것으로, 특히 대량의 화상 데이터의 처리시에 메모리에 대한 로드/스토어 처리의 횟수를 저감하여 신속한 데이터 처리를 가능하게 한 화상을 처리하는 장치 및 방법과 이 장치에 이용되는 컴파일러에 관한 것이다.
일반적으로 컴퓨터그래픽스 등의 화상 처리 기술의 분야에서는, 영상 내의 형상이나 색채 등에 관한 여러 종류의 다양한 표현을 실현하기 위하여 유연한 화상 처리 기능을 갖는 화상 처리 장치가 요구되고 있다. 또한, 이 화상 처리 장치에 이용되는 소프트웨어로서의 컴파일러에 대해서도 정채(精彩)한 화상 내의 형상이나 색채 등에 관한 대량의 데이터를 처리할 수 있는 컴파일러가 요구되고 있다.
예를 들면, 화상에서의 밝기나 색이 일정한 모양을 나타내는 텍스쳐에 기초하여 색을 결정해가는 경우에는 그 화상을 형성하고 있는 화소(픽셀)의 좌표에 기초하여 그 화소가 갖는 색을 결정하고 있다. 이러한 색을 결정해 가는 처리 시에도 대량의 데이터가 이용되어, 이것을 순차적으로 순서를 밟아 연산해야하기 때문에 종래부터 고속 연산을 행하는 화상 처리 장치(Graphic Processor Unit : GPU)가 이용되고 있다.
그러나, 종래의 GPU에서는 고정적 데이터 플로우, 혹은 반고정적 데이터 플로우밖에 취급할 수 없어, 한번에(1 패스로) 실행할 수 있는 픽셀(pixel : 화소) 처리가 한정되어 있다. 이 때문에, 복잡한 연산을 행하기 위해서는 GPU를 복수 패스 사용할 필요가 있었다. GPU를 복수 패스 사용하는 경우에는, 이전의 패스에서 중간 데이터를 프레임 버퍼 등의 메모리에 일단 기입하고나서 이후의 패스에서 그 프레임 버퍼 등의 메모리에 기입되어 있는 데이터를 그 메모리로부터 판독하게 되어, 메모리에 대한 로드/스토어의 횟수가 증가하게 된다.
이 메모리에 대한 로드/스토어의 횟수의 증가는 화상 처리 프로세서 전체 데이터 처리의 흐름에 있어서는 병목의 원인이 되어, 화상 처리 성능을 저감시키는 문제가 있어, 데이터 처리의 신속성의 관점에서 볼 때 개선이 요망되고 있었다. 예를 들면, 「nVidia사」의 GeForce3 GPU는 프로그램 가능한 (프로그래머블) 픽셀 프로세서를 포함하고 있고, 어드레스 연산기, 픽셀 컬러의 블렌드 처리 등을 행하는 컴바이너를 각각 일련의 명령 열에 의해 프로그램 가능하다(논문: GeForce 3 GPU [Compiling to a VLIW Fragment Pipeline : 도 1, 2] 참조).
그러나, 상술한 논문에 개시되어 있는 nVidia사의 칩에서도 하나의 픽셀에 대하여 한번에 실행할 수 있는 명령의 수는 한정되어 있으며, 또한 레지스터의 수도 한정되어 있다. 이 때문에 더 복잡한 처리는 픽셀 프로세서를 복수 패스로 이용하여 행할 필요가 있다. 그 이유는, 이 선행 기술로서의 화상 처리 프로세서에서는, 어드레스 연산기와 컴바이너가 분리되어 있어, 컴바이너로부터 어드레스 연산기로의 순서로 연산을 행하고자 하는 경우에, 복수 패스로 분리할 필요가 있기 때문이다.
만일 1패스로 보다 유연한 처리를 행하는 화상 처리 장치나 이것에 이용되는 컴파일러를 제공할 수 있으면, 픽셀 연산에서의 패스 수를 삭감할 수 있으며, 성능의 병목이 되기 쉬운 메모리에 대한 로드/스토어 횟수를 삭감시킬 수 있다.
도 1은 본 발명의 제1 실시예에 따른 화상 처리 장치가 설치된 시스템의 전체 구성을 도시한 블록도.
도 2는 도 1에서의 화상 처리 코어의 개략 구성을 도시한 블록도.
도 3은 화상 코어 내의 기능 구성의 개략을 도시한 블록도.
도 4는 도 1 내지 도 3의 화상 처리 코어에 의한 동작을 설명하기 위해 도시한 도면으로서, 도 4의 (a)는 데이터 플로우 그래프(DFG=단위 연산), 도 4의 (b)는 두개의 기능 유닛(FU)으로 스케쥴화된 단위 연산, 도 4의 (c)는 두개의 FU의 스케줄을 도시한 설명도.
도 5는 단위 연산 1∼n과 개개의 연산과의 관계를 도시한 설명도.
도 6은 연산이 중복되어 스케쥴링할 수 없게 되는 예를 도시한 도면으로서, 도 6의 (a)는 1사이클 어긋나게 한 예 1과, 도 6의 (b)는 3 사이클 어긋나게 한 예 2를 도시한 설명도.
도 7은, 도 1 내지 도 3의 화상 처리 코어에 의한 동작을 설명하기 위해 도시한 도면으로서, 도 7의 (a)는 데이터 플로우 그래프(DFG=단위 연산), 도 7의 (b)는 3개의 기능 유닛(FU)으로 스케쥴화된 단위 연산, 도 7의 (c)는 3개의 FU의 스케줄을 도시한 설명도.
도 8은 도 1 내지 도 3의 화상 처리 코어에 의한 동작을 설명하기 위해 도시한 도면으로서, 도 7과는 다른, 도 8의 (a)는 데이터 플로우 그래프(DFG= 단위 연산), 도 8의 (b)는 3개의 기능 유닛(FU)으로 스케쥴화된 단위 연산, 도 8의 (c)는 3개의 FU의 스케줄을 도시한 설명도.
도 9는 베이스 어드레스와 「스텝 수 mod N」이 동일한 경우의 어드레스 생성 회로의 구성을 도시한 블록도.
도 10은 베이스 어드레스와 「세대*베이스 어드레스 스텝 폭 mod N」이 동일한 경우의 어드레스 생성 회로의 구성을 도시한 블록도.
도 11은 동작의 일례로서의 4화소의 블렌드 처리의 경우의 브랜치 수 삭감의 구체예를 도시한 설명도.
도 12는 FU 내의 채널을 FIFO 등에 의해 실현한 경우의 연산 파이프라인 내의 채널을 도시한 설명도.
도 13은 도 12의 처리를 구체적으로 가능하게 하기 위한 승산과 가산을 행하는 파이프라인의 예를 도시한 블록도.
도 14는 본 발명의 제3 구성의 실시예에 따른 화상 처리 방법의 처리 단계를 도시한 흐름도.
<도면의 주요 부분에 대한 부호의 설명>
2 : 화상 처리 전용 회로
3 : 메모리
4 : 화상 처리 코어
5 : 시스템 버스
6 : 중앙 처리 장치
8 : 메모리 장치
16 : 내부 버스
본 발명의 제1 구성에 따른 화상 처리 장치는, 입력된 화상 데이터를 연산하는 복수의 연산 파이프라인과, 상기 복수의 연산 파이프라인이 출력한 연산 결과를 다시 상기 복수의 연산 파이프라인에 입력시키기 위해, 데이터 전송 경로를 전환하기 위한 전환 채널과, 상기 전환 채널에 의한 상기 데이터 전송 경로의 전환 및 상기 복수의 연산 파이프라인에서의 연산을 제어하는 제어 회로를 구비함과 함께, 상기 제어 회로는, 복수의 연산으로 구성되는 단위 연산을 상기 복수의 연산 파이프라인으로 실행할 때에, 1부터 n(n은 양의 정수)까지의 단위 연산 중 단위 연산 k (1<k<n)로부터 단위 연산 n까지의 (n-k+1)개의 단위 연산을 포함하는 상기 복수의 연산이 동일한 연산 파이프라인에서의 동일한 연산 시간에 중복되지 않도록 스케쥴링하는 것을 특징으로 한다.
또한, 본 발명의 제2 구성에 따른 컴파일러는 입력된 화상 데이터를 연산하는 복수의 연산 파이프라인과, 상기 복수의 연산 파이프라인에 의해 출력된 연산 결과를, 다시 상기 복수의 연산 파이프라인에 입력시키기 위해 데이터 전송 경로를 전환하기 위한 전환 채널과, 상기 전환 채널에 의한 상기 데이터 전송 경로의 전환 및 상기 복수의 연산 파이프라인에서의 연산을 제어하는 제어 회로를 구비하는 화상 처리 장치에 이용되는 컴파일러에 있어서, 상기 복수의 연산 파이프라인을 구성하는 각각의 연산 파이프라인이 외부로부터 공급된 상기 화상 데이터의 일부분을 각각 수신하여, 복수의 연산으로 구성되는 1부터 n(n은 양의 정수)까지의 n개의 단위 연산 중 단위 연산 k(1<k<n)로부터 단위 연산 n까지의 (n-k+1)개의 단위 연산을 구성하는 상기 복수의 연산이 동일한 연산 파이프라인에서의 동일한 연산 시간에 중복되지 않도록 스케쥴링하고, 스케쥴링에 따라 상기 복수의 연산 파이프라인의 연산 순서를 제어하는 것을 특징으로 한다.
또한, 본 발명의 제3 구성에 따른 화상 처리 방법은, 입력된 화상 데이터를 연산하는 복수의 연산 파이프라인을 구성하는 각각의 연산 파이프라인에 외부로부터 공급된 상기 화상 데이터의 일부분을 공급하고, 복수의 연산으로 구성되는 1부터 n(n은 양의 정수)까지의 n개의 단위 연산 중 단위 연산 k로부터 단위 연산 n까지의 (n-k+1)개의 단위 연산을 구성하는 상기 복수의 연산이 동일한 파이프라인에서의 동일한 연산 시간에 중복되지 않도록 스케쥴링하고, 상기 스케줄링에 따라 상기 화상 데이터의 연산을 제어하는 것을 특징으로 한다.
이하, 첨부 도면을 참조하면서, 본 발명에 따른 화상을 처리하는 장치 및 방법과 이 장치에 이용되는 컴파일러의 실시예에 대하여, 상세히 설명한다. 우선,도 1을 참조하여 제1 실시예에 따른 화상 처리 프로세서의 전체적인 시스템 구성에 대하여 설명한다. 이 제1 실시예 구성의 목적은 다양한 화상 처리를 효율적으로 행하는 화상 처리 프로세서를 제공하는 것에 있다. 우선, 제1 실시예에 따른 프로세서를 이용한 시스템의 구성예를 설명한다.
<실시예>
도 1은 제1 실시예에 따른 화상 처리 프로세서가 적용되는 화상 처리 시스템의 구성예를 도시하고 있다. 도 1에서, 화상 처리 프로세서(1)는, 예를 들면 Setup/DA 등의 화상 처리 전용 회로(2)와 동일 칩 상에 혼재된 메모리(3)와, 적어도 하나, 바람직하게는 복수의 화상 처리 코어(4)를 구비하고 있다. 화상 처리 코어(4)의 상세한 구성에 대해서는 후술한다.
화상 처리 프로세서(1)는, 시스템 버스(5)를 통해 중앙 처리 장치(이하, CPU-Central Processing Unit : 6)에 접속되어 있고, 이 CPU(6)와 협조하여 화상 처리를 포함하는 정보 처리를 행한다. 또한, 화상 처리 프로세서(1)는 시스템 버스(5)나 브릿지(7) 등을 통해 외부의 메모리 장치(8)에 접속되고, 메모리 장치(8) 사이에서 데이터를 송수신하면서 정보 처리를 행하고 있다. 브릿지(7)에는 입출력부(9)도 접속되어 있다. 화상 처리 코어(4)는 코어 내의 각 구성 요소를 제어하기 위한 컨트롤러(10)를 각각의 내부에 구비하고 있다.
이어서, 화상 처리 코어(4)의 상세한 내용에 대하여 도 2를 참조하면서 설명한다. 도 2는, 화상 처리 코어(4)의 개략을 도시하고 있다. 화상 처리 코어(4)는, 상술한 컨트롤러(10) 외에 스토어 유닛(11)과, 제1 로딩 유닛(12)과, 픽셀 연산을 행하는 파이프라인형의 연산기로서 복수의 연산 파이프라인(17, 18)과, 전환 채널(15)과, 통신로로서 기능하는 내부 버스(16)를 구비하고 있다. 컨트롤러(10)는 상기 복수의 연산 파이프라인(17, 18)이 복수의 연산으로 각각 구성되는 단위 연산을 상기 파이프라인으로 실행할 때에 1부터 n(n은 양의 정수)까지의 n개의 단위 연산 중 단위 연산 k(1<k<n)로부터 단위 연산 n까지의 (n-k+1)개의 단위 연산을 구성하는 상기 복수의 연산이 동일한 연산 파이프라인에서의 동일한 연산 시간에 중복되지 않도록 스케쥴링하고 있다(상세한 내용은 후술하겠음).
또한, 상기 화상 처리 코어(4)는 제1 로딩 유닛(12)을 통해 메모리(3)로부터 화상 데이터 중 적어도 일부분을 수취하고, 연산 파이프라인군의 각 연산 파이프라인(17, 18)에 의해 이 데이터를 처리하여, 스토어 유닛(11)을 통해 메모리(3)에 일련의 데이터를 재기입하는 것에 의해 정보 처리를 행하고 있다. 또한, 이 때 전환 채널(15)과 내부 버스(16)를 사용하여, DAG(Directed Acyclic Graph) 형상의 데이터 플로우를 갖는 프로그램을 실행하고 있다. 이 프로그램의 실행 방법에 대해서는 후술하겠다.
DAG 형상의 데이터 플로우를 갖는 프로그램을 실행 가능하게 함으로써, 종래의 고정적인 데이터 플로우밖에 실행할 수 없던 GPU와 비교하여 메모리에 대한 로드/스토어의 횟수를 삭감할 수 있다. 이것을 실현하기 위해 전환 채널(15)과 내부 버스(16)를 부가하고 있는 만큼 하드웨어량은 다소 증가하고는 있지만, 성능 상의 병목이 되기 쉬운 로드/스토어의 횟수를 삭감시킬 수 있기 때문에 전체적인 성능의 향상을 기대할 수 있다.
이어서, 화상 처리 코어(4)의 기능 구성예를 도 3을 참조하면서 설명한다.
도 3은 화상 처리 코어(4)의 구성예를 도시한 블록도이다. 이 제1 실시예에 따른 화상 처리 프로세서의 경우, 화상 처리 코어(4)는, 컨트롤러(10)와, 스토어 유닛(11)과, 제1 로딩 유닛(12)과, 전환 채널(15)과, 내부 버스(16)와, 제1 연산 파이프라인(FUa : 17)과, 제2 연산 파이프라인(FUb : 18)으로 구성되어 있다.
컨트롤러(10)는 다른 구성 요소를 스텝마다 제어하는데, 특히 페이즈라고 하는 개념을 이용하여 제어를 행한다. 여기서 페이즈는
페이즈=스텝 수 mod 최대 페이즈 수
에 의해 정의된다. 이 페이즈는 연산 파이프라인(17, 18)의 구체적인 동작의 국면에서는 동작 클럭으로서 파악할 수도 있으므로, 도 4를 포함하는 이 이후의 설명에서는 클럭으로 표기한다.
FUa(17) 및 FUb(18)는 파이프라인화된 연산 파이프라인으로서, 소정의 연산 시간의 간격, 즉 페이즈(도 4에서는 클럭)마다 다른 명령을 실행할 수 있다. 전환 채널은 채널군과 크로스바로 구성할 수도 있고, 이들 크로스바는 멀티캐스트 가능한 단 방향의 크로스바(입력 집합과 출력 집합에 중복 부분이 없음)이다. 크로스바는 클럭마다 연산 파이프라인의 출력을 임의의 채널로 전송할 수 있음과 함께 클럭마다 임의의 채널의 출력을 임의의 연산 파이프라인의 입력으로 전송할 수 있다. 전환 채널(15)은 복수의 채널(1R/1W RAM)을 집약한 것이다. 전환 채널(15)의 각 채널은 클럭마다 결정되는 판독 오프셋 어드레스에 기초를 둔 판독과, 기입 오프셋 어드레스에 기초를 둔 기입을 행할 수 있다.
이러한 구성을 취함으로써, GeForce3 등과 같은 레지스터 컴바이너형의 GPU보다도 높은 프로그램 가능성을 갖고, 또한 VLIW형의 프로세서보다도 면적을 효율적으로 사용하여 많은 연산기를 제어할 수 있게 되어 있다.
본 발명의 제2 구성에 따른 화상 처리 장치에 이용되는 컴파일러는 화상 처리 프로세서(1)로 실행되는 화상 처리 프로그램이다. 이 컴파일러는 복수의 연산 파이프라인을 구성하는 각각의 연산 파이프라인이, 외부로부터 공급된 상기 화상 데이터의 일부분을 각각 수신하여, 복수의 연산으로서 1부터 n(n은 양의 정수)까지의 n개의 단위 연산 중 단위 연산 k(1<k<n)로부터 단위 연산 n까지의 (n-k+1)개의 단위 연산이 동일한 연산 파이프라인에서의 동일한 연산 시간에 중복되지 않도록 스케쥴링하고, 상기 스케쥴링에 따라 상기 복수의 연산 파이프라인의 연산의 순서를 제어하고 있다.
이어서, 제1 실시예에 따른 화상 처리 프로세서에서의 프로그램의 실행 예에 대하여 도 4를 참조하면서 설명한다. 도 4는, 이 화상 처리 코어(4)로 실행할 수 있는 프로그램과 그 스케줄의 예를 도시하고 있다. 도 4의 (a)에 도시되어 있는 것이 실행하고자 하는 DFG(Data Flow Graph)이다. 이 DFG가 일련의 연산의 반복 패턴으로서의 단위 연산을 구성하고 있다. 즉, 도면 내의 부호 a0, a1, a2, b0, b2가 연산 파이프라인(FU)에서의 개개의 연산에 상당하며, a0, a1, a2, b0, b2가 하나로 연결된 연산의 집합이 단위 연산이고, 단위 연산 내의 개개의 연산을 연결하는 화살표가 연산 파이프라인 사이의 전송에 상당하며, 도면 내의 상부의 ○는 입력, 하부의 ○는 출력을 의미한다.
도 4의 (b)는, 스케줄된 후의 단위 연산을 도시하고 있다. a0, a1, a2는 제1 연산 파이프라인(FUa : 17)에 의해 b0, b2는 제2 연산 파이프라인(FUb : 18)에 의해 실행할 수 있는 것으로 한다. FUa(17), FUb(18)는 클럭마다 다른 명령을 실행할 수 있다. 이 예에서는 FUa(17)는 클럭 0에서 연산 a0을, 클럭 2에서 a1을, 클럭 4에서 연산 a2를 실행한다. FUb는 클럭 1에서 b0을, 클럭 5에서 연산 b2를 실행한다. 최대 클럭은 3이고, 하나의 연산 파이프라인 FU는 3개분의 클럭 사이에서 하나의 연산을 실행할 수 있도록 설정되어 있다.
도 4의 (b)는 1조의 입력 데이터에 의한 하나의 단위 연산에 주목하고 있다. 이 하나의 단위 연산에서의 일련의 처리를 세대라고 한다. 실행 시에 스텝마다 다른 입력 데이터의 조를 입력하여, 복수 세대의 처리가 동시에 실행된다. 도 4의 (c)는 그 처리의 모습을 나타내고 있으며, 사선으로 표시된 복수의 연산이 동일 세대 k의 단위 연산이다.
도 4의 (c)에서, 단위 연산의 세대 k 번째의 연산은 도 4의 (b)와 동일한 클럭에서 행해지고 있으며, FUa(17)는 클럭 0에서 연산 a0k를, 클럭 2에서 a1k를, 클럭 4에서 연산 a2k를 실행하고, FUb는 클럭 1에서 b0k를, 클럭 5에서 연산 b2k를 실행하고 있다. 다음 세대 k+1의 단위 연산은, FUa(17)는 클럭 3에서 연산 a0k+1을, 클럭 5에서 alk+1을, 클럭 7에서 연산 a2k+1을 실행하고, FUb는 클럭 4에서 b0k+1을, 클럭 8에서 연산 b2k+1을 실행하고 있다.
단위 연산과 개개의 연산과의 관계에 대하여 도 5를 이용하여 설명한다. 화상 처리 프로세서는, 단위 연산 1부터 단위 연산 n까지의 n개의 단위 연산을 차례대로 처리함과 함께 각 단위 연산에서의 개개의 연산의 순서도 동일한 순서로 되어 있다. 따라서 복수의 연산 파이프라인의 처리는 동일한 단위 연산 내에서 개개의 연산이 동일 클럭에서 중복되지 않도록 스케쥴링함과 함께 인접하는 단위 연산이나 얼마간의 간격을 둔 단위 연산 사이에서도 동일한 파이프라인의 동일한 클럭에서 연산이 중복되지 않도록 스케쥴링하는 것이 필요해진다.
즉, 컨트롤러(10)는 연산 파이프라인군을 구성하는 각 연산 파이프라인(17, 18)이 외부로부터 공급되어 상기 메모리에 보유된 일련의 데이터의 일부분을 수신하여, 복수의 파이프라인(17, 18)을 이용하여 복수의 연산으로 구성되는 단위 연산을 상기 복수의 연산 시간에서 연산하도록 스케쥴링할 때에, 단위 연산이 1부터 n(n은 양의 정수)까지의 개수를 갖고 있을 때에, k(l<k<n)번째의 단위 연산에서의 각 연산과, k+1번째 및 k+2번째의 단위 연산에서의 각 연산이 동일 파이프라인의 동일 연산 시간에 중복되지 않도록 함과 함께, k부터 n까지의 (n-k+1)개의 단위 연산의 상호간에도 각 연산이 동일 파이프라인(17 또는 18)의 동일한 연산 시간(클럭)에서 중복되지 않도록 연산의 순서를 제어하고 있다.
도 6의 (a)는 1 사이클 어긋나게 하면 스케쥴링이 중복되는 예 1을 도시하고 있으며, 도 6의 (b)는 3 사이클 어긋나게 하면 스케쥴링이 중복되는 예 2를 도시하고 있다. 도 6의 (a)에 도시된 예1에서는, 단위 연산에서의 연산의 순서가 도 4의(a)와 동일하지만, 클럭 0에서 a0k, 클럭 1에서 a1k, 클럭 2에서 a2k, …와 같이 단위 연산이 실행되는 경우를 도시하고 있다. 도 4의 (b)와 같이, FUa가 클럭 0, 클럭 2, 클럭 4에서 연산을 행하며, 각각의 사이의 클럭 1과 클럭 3에서는 연산을 행하지 않도록 한 스케쥴링을 행하지 않고, 연속하는 클럭에서 각각의 파이프라인을 이용하여 병렬 연산을 한 경우, 단위 연산 k의 각 연산은 FUa가 클럭 0에서 a0k, 클럭 1에서 a1k, 클럭 2에서 a2k의 연산을 행하고, FUb가 클럭 1에서 b0k, 클럭 3에서 b2k의 연산을 행한다. 이어서, 1 사이클 어긋나게 한 클럭에서 스케쥴링을 하여 다음 세대의 단위 연산 k+1을 행한다고 하면, FUa는 클럭 1에서 a0k+1, 클럭 2에서 alk+1, 클럭 3에서 a2k+1을 연산하고, FUb는 클럭 2에서 b0k+1, 클럭 4에서 b2k+1을 연산하도록 스케쥴링된다. 이 경우, 도 6의 (a)에 사선의 블록으로 도시한 바와 같이, FUa의 클럭 1과 클럭 2에 세대가 다른 두개의 연산이 스케쥴링되어, FUa에서의 연산이 특정한 클럭일 때에 중복된다.
또한, 도 6의 (b)는, 도 4의 (a)와 동일한 단위 연산을 도 4의 (c)와 마찬가지로 스케쥴링한 후, 다음 단위 연산을 3 사이클 어긋나게 한 경우를 도시하고 있다. 이 경우, 단위 연산 k는 상기 도 4의 (c)와 동일한 스케쥴링으로 행해지지만, 다음 세대의 단위 연산 k+1은 FUa의 클럭 3에서는 a0k+1, 클럭 5에서는 a1k+1, 클럭 7에서 a2k+1의 연산이 행해지며, FUb의 클럭 4에서 b0k+1, 클럭 7에서 b2k+1이 되며, 도6의 (b)에 사선의 블록으로 도시한 바와 같이 FUb의 클럭 4에서 b2k와 b0k+1의 연산이 중복된다. 또한, FUb의 클럭 7에서도 b2k+1과 b0k+2의 연산이 중복된다. 이러한 연산의 중복을 피하기 위해서는 도 5에서 설명한 바와 같이 단위 연산에 대하여 개별 연산이 충돌하지 않는지의 여부를 검토하여 도 4의 (c)와 같이 스케쥴링을 행하도록 하면 된다.
이와 같이 하여, 사전에 스케쥴링을 행하고나서 연산 파이프라인을 동작시킴으로써, 클럭마다 복수의 연산 파이프라인의 연산을 효율적으로 실행시킬 수 있으므로, 연산기나 통신로의 효율적인 제어를 간단히 행할 수 있다. 또한, 각 연산 파이프라인은 클럭에 의해 실행하는 명령이 결정되기 때문에, 그 클럭마다 대응하는 명령을 순차적으로 실행하면 된다.
또한, 도 4의 (a), (b), (c)에 도시된 화상 처리 프로세서에 의한 실행 프로그램과 그 스케쥴링은 일례이며, 연산 파이프라인 FU를 3개 설치함으로써 소정의 연산 시간인 클럭을 2 사이클로 하여 연산을 반복할 수도 있다. 이 예를 도시한 것이 도 7 및 도 8이다. 도 7의 (a)와 같은 단위 연산을 도 7의 (b)와 같이 스케쥴화하여, 도 7의 (c)와 같이 연산을 행하고 있다. 연산 파이프라인은 FUa0, FUa1, FUb의 3개이며, FUa0, FUa1은 도 4에서의 파이프라인 FUa의 기능을 두개의 파이프라인으로 대체시켜, 두개의 클럭을 반복함에 의해 도 4와 동일한 연산 처리를 행하고 있다. 이와 같이 연산 a0, a1, a2를 두개의 연산기 FUa0, FUa1에 할당하도록 해도 된다.
도 4의 (b), (c)와 같이 두개의 연산 파이프라인을 이용하여 단위 연산의 스케쥴링을 행하는 경우, 예를 들면 단위 연산 k의 연산은 클럭 0부터 클럭 5까지의 6개의 클럭을 이용하여 행해지고 있었지만. 도 7의 (b), (c)에 도시한 바와 같이 3개의 연산 파이프라인을 이용하여 단위 연산의 스케쥴링을 행한 경우, 동일한 단위 연산 k를 클럭 2부터 클럭 4까지의 3개의 클럭으로 끝낼 수 있으며, 연산 파이프라인을 하나 늘린 것만으로 절반의 사이클에서 하나의 단위 연산을 완료시킬 수 있다.
또한, 도 7과 마찬가지로 연산 a0, a1, a2를 두개의 연산기 FUa0, FUa1에 할당함과 함께, 각각의 연산 파이프라인 FUa0, FUb에서의 연산 a0과 a1 및 연산 b0와 b1 사이에 2 클럭 이상의 간격을 두도록 한 것이 도 8의 (a), (b), (c)에 도시되어 있다. 연산 파이프라인을 하나 증가시켜 한쪽의 연산 파이프라인의 하나의 클럭을 두개로 하는 경우에도 하나의 단위 연산을 도 7의 (a), (b), (c)와 같이 4 클럭으로 완료해도 되며, 도 8의 (a), (b), (c)와 같이 6 클럭에 걸치는 연산으로 행할 수도 있다.
또한, 도 8과 같이 연산을 행하게 하는 경우, 단위 연산 k에서의 연산 b1보다도 단위 연산 k+1에서의 연산 b0이 먼저 실행된다. 이와 같이, 이후에 실행되는 단위 연산 내의 연산을 이전의 단위 연산 내의 연산보다 먼저 실행할 수도 있다. 도 7과 비교한 도 8의 예의 특징은, 이러한 연산의 순서가 교체되는 스케쥴링을 행할 수도 있다는 것이다.
전환 채널(15)의 제어는, 각 채널(1R/1W·RAM)마다 행해지고 있으며, 구체적으로 설명하면, 각 채널마다 판독 어드레스, 기입 어드레스가 결정되어 있다. 도 9는 이 채널의 어드레스를 결정하는 동작을 나타내고 있다. 예를 들면, 판독·기입 어드레스는 이하와 같이 결정된다.
N은 메모리의 어드레스 수를 나타내는 엔트리 수를 나타내는 것으로 하면,
베이스 어드레스=(세대 카운터치*채널 중복도(Channl)) mod N
판독 어드레스=(베이스 어드레스+판독 오프셋(Ch, phase)) mod N
기입 어드레스=(베이스 어드레스+기입 오프셋(Ch, phase)) mod N
이 된다. 여기서 세대 카운터는 클럭 0일 때마다 카운트 업되는 값이다. 베이스 어드레스는 모듈 N의 값이므로, 베이스 어드레스는 클럭 0마다 채널 중복도마다 카운트 업되는 모듈 N의 카운터(사이클 카운터)로 실현할 수 있다. 이것을 베이스 어드레스 카운터라고 한다.
채널 중복도는, 하나의 채널에 단위 연산 상의 다른 데이터를 나타내는 브랜치를 몇 개 매립할지를 나타내는 값(자연수)으로 채널마다 결정된다. 판독, 기입 오프셋은 각 채널·각 클럭마다 결정된다. 따라서, 채널마다의 제어 회로는 베이스 카운터와 클럭마다 판독·기입 오프셋을 테이블에서 판독하고, 베이스 어드레스의 값과 모듈 가산을 행하는 회로에 의해 실현할 수 있다.
도 1 내지 도 3의 컨트롤러의 구체예를 도시한 것이 도 9 및 도 10의 블록도이다. 도 9는 베이스 어드레스와 스텝 수 mod N이 동일한 경우의 어드레스 카운터의 기능 구성을 도시하고 있다. 도 9에서는, 스텝 수가 클럭 생성 회로(21)와 모듈 N 회로(23)에 입력되고, 클럭 생성 회로(21)의 출력에 기초하여 오프셋 저장 메모리(22)로부터 판독된 오프셋과 모듈 N 회로(23)의 출력에 기초하여 가산기(26 및 27)에 의해 각각 판독 어드레스와 기입 어드레스가 출력된다.
도 10은 세대를 결정할 때에 스텝을 클럭 수로 나눈 몫에 기초하여 베이스 어드레스를 구하는 예이다. 예를 들면 2 스텝마다 그래프가 실행되는 경우에는 2 사이클에 1씩 카운트 업된다. 오프셋은 도 8의 예와 마찬가지로 하여 구해지며, 베이스 어드레스는, 중복도 레지스터(24)의 출력과 입력된 스텝 수에 기초하여, 베이스 어드레스 생성 회로(25)에 의해 출력된다. 여기서, 베이스 어드레스는 「베이스 어드레스=세대*베이스 어드레스 스텝 폭 mod N」로 구해지며, 구해진 베이스 어드레스는 도 9와 마찬가지로 가산기(26 및 27)로 출력된다.
가산기(26 및 27)는 오프셋 저장 메모리(22)로부터 출력된 오프셋과 베이스 어드레스를 각각 가산하여 판독 어드레스 및 기입 어드레스를 각각 출력한다. 이 도 9의 예에 의한 어드레스 생성 회로에 의하면, 베이스 어드레스 스텝 폭을 클럭 수보다도 작은 값으로 할 수 있게 되기 때문에, 도 9에 도시한 베이스 어드레스 생성 회로에 비해 메모리를 보다 한층 유효하게 활용할 수 있다.
도 11은 연산기의 기능을 증가시킴으로써 브랜치 수를 삭감하는 예를 도시하고 있다. 이 도 11은, 화상 데이터에서의 4 화소의 블렌드 처리를 행하는 경우를 도시하고 있으며, 「a」는 화소의 판독 동작, 「b」는 화소 연산의 동작, 「c」는 4 화소를 판독함과 함께 화소 연산을 행하는 동작을 의미하고 있다. 이 동작의 예에 의하면, 화살표의 좌측에서는 브랜치 수가 11이었던 것이 우측에서는 두개로 되어 있다.
이와 같이 하여, 연산기의 기능을 증가시켜 브랜치 수를 삭감시킴으로써, 크로스바나 채널의 규모를 작게 할 수도 있다. 이러한 구성을 이용함으로써, 후술하는 필터링 기능이 있는 복수 화소 판독 회로 등에 적용할 수 있다. 또한, SIND MulAdd나 SIND MulMul-Add 등의 복호 연산기에도 적용할 수 있다.
본 발명에 따른 화상 처리 장치는 복수의 화상 처리 코어를 배열한 구성을 포함해도 된다. 이것은, 하나의 반도체 칩 위에 화상 처리 코어를 복수개 배열한 구성으로, 화상 처리 코어를 복수개 집적함으로써 선형성을 향상시킬 수 있다. 화상 처리 코어 단체(團體)라도 어느 정도 자유로운 규모의 단위 연산을 실행할 수 있는 확장성을 갖고 있으므로, 화상 처리 코어간의 접속은 치밀하지 않아도 어느 정도 자유로운 규모의 단위 연산을 실행할 수 있다. 화상 처리 코어 자체가 파이프라인화된 연산기이므로, 매 사이클 혹은 수 사이클에 한번의 처리량으로 연산할 수 있으며, 종래의 화상 처리 프로세서의 연산 파이프라인으로서 화상 처리 코어를 사용할 수 있다.
본 발명에 따른 화상 처리 장치는, 상술한 바와 같이 연산의 실행 전에 미리 단위 연산에서의 각 연산 처리의 흐름을 스케쥴링하는 개념을 이용하고 있다. 도 4의 (a)에서는 연산의 내용이 도시되어 있지만, 이 연산 내용은 장치를 구성하는 연산 파이프라인의 개수를 나타내는 것은 아니다. 따라서, 본 발명은 연산 a0, a1, a2를 실행할 수 있는 연산 파이프라인이 하나인지 두 개인지에는 의존하지않게 된다. 도 4의 (a)에 도시한 각 연산을 가상 연산 파이프라인이라고 부를 수 있다.
스케쥴링 전의 단위 연산을 사전에 프로그램으로서 할당해 두고, 실행 시에 장치의 구체적인 구성을 파악하고나서 상세한 스케쥴링을 행함으로써, 프로그램을 장치 구성으로부터 독립된 구성으로 할 수 있다. 이것을 개념적으로 나타낸 것이 상술한 제2 구성으로서의 컴파일러이다. 이에 따라, 장치의 구성을 변경해도 동일한 프로그램을 실행할 수 있게 된다. 구체적으로 설명하면, 연산 파이프라인의 수, 연산 파이프라인의 처리량, 레이턴시의 변경 등이 가능해진다.
본 발명의 제1 기본 구성에 따른 화상 처리 장치에 따르면, 체이닝 기능을 갖는 종래의 화상 처리 프로세서에서는 연산 파이프라인 사이의 접속이 한정되어 있었던 것에 비하여, 연산 파이프라인 수, 채널 수가 허용되는 한, 임의의 DAG 형상의 데이터 플로우 프로그램을 실행할 수 있기 때문에, 로드/스토어 수를 삭감할 수 있다. 또한 연산 파이프라인이 클럭마다 다른 명령을 실행할 수 있기 때문에, 실행할 수 있는 DAG를 구성하는 정점의 수가 연산 파이프라인의 수에 제한되지 않으므로, 연산 파이프라인의 가상화 기능을 갖지 않은 종래의 화상 처리 프로세서에 비해 로드/스토어 수를 삭감할 수 있다.
또한, 연산 파이프라인의 스케쥴링을 단위 연산마다 미리 행하기 때문에, 제어 회로를 간단하게 할 수 있다. 동일한 기능은 SIMD형 프로세서라도 소프트웨어 파이프라이닝으로 실현할 수 있지만, SIMD형 프로세서로 실현하는 경우, 레지스터 파일에 연산 유닛의 합계 입력수분의 리드 포트와, 연산 유닛의 합계 출력 수분의라이트 포트, (채널 수×채널의 평균 깊이)개 이상의 레지스터 수 등이 필요해지기 때문에 대규모의 장치가 필요하며, 제안하는 장치가 더 유리하다.
채널의 출력 통로를 멀티캐스트 가능하게 하고, 입력 집합과 출력 집합과의 중복이 없는 단일 방향의 크로스바에 의해 구성한 경우에는, 데이터 플로우 프로그램을 실행하는 경우, 동일한 데이터를 동일 스텝처로 전송하는 복수의 채널을 통합하고, 하나의 채널과, 채널 출력 통신로에서의 멀티캐스트로 대체할 수 있다. 이 때문에, 동일한 데이터 플로우 프로그램의 실행에 필요한 채널의 수를 삭감할 수 있으며, 장치의 규모를 작게 할 수 있다. 동일한 채널 수로 실현할 수 있는 데이터 플로우 그래프(DFG=단위 연산)의 규모가 커져, 로드/스토어 수를 삭감할 수 있다.
채널군을 구성하는 채널은 랜덤 액세스 메모리로 구성됨과 함께, 이 랜덤 액세스 메모리를 1스텝마다 임의의 어드레스로의 하나의 데이터의 기입과, 임의의 어드레스로부터의 하나의 데이터 판독이 가능하도록 구성한 경우에는 데이터 플로우 프로그램을 실행할 때에, 동일한 데이터를 다른 스텝처로 전송하는 복수의 채널을 통합하여, 하나의 채널로 대체할 수 있다. 장치 규모의 축소, 로드/스토어 수의 삭감으로 이어진다.
제어 회로가 동일한 파이프라인 사이의 전송을 연산 파이프라인 내에 설치된 통신로에 의해 행할 수 있도록 제어하는 기능을 갖도록 구성한 경우에는, 채널 사용 수를 삭감시킬 수 있으며, 장치 규모의 축소, 로드/스토어 수의 삭감으로 이어지는 특유의 효과를 갖는다. 도 12에는 삭감할 수 있는 채널의 예가 도시되어 있다.
이러한 구성을 FIFO(First-In First-Out : 선입선출) 회로로 구성함으로써 상기한 기능을 간단한 장치로 실현할 수 있다. 상기 구성과 비교하여 채널 사용 수를 삭감하기 위한 조건이 다소 까다롭지만, 컴파일 시에 채널을 삭감할 수 있도록 명령을 스케줄함으로써, 효율적으로 사용 채널 수를 삭감할 수 있다. 도 13에 연산 파이프라인의 예가 도시되어 있다.
도 13에서, FIFO 회로(30)는 예를 들면 도 2 및 도 3의 내부 버스(16)를 통해 공급되는 화상 데이터를 승산하는 승산기(31)와 승산기(31)의 출력을 한쪽의 입력으로 하는 가산기(32)와, 가산기(32)의 출력을 받아들여 선입 선출 동작에 의해 입력된 순서로 출력하는 선입 선출(FIFO)부(33)와, 이 FIFO부(33)의 출력에 내부 버스(16)를 통해 입력된 예를 들면 어드레스 정보 등을 합성 처리하여 출력하는 컨트롤러(10)를 구비하고, 가산기(32)의 다른 쪽 입력에는 컨트롤러(10)로부터의 출력이 공급되고 있다.
이 예는, MUL-ADD(a+b*c)를 행하는 파이프라인이지만, 연산 결과를 입력 a로 되돌리는 채널이 설치되어 있다. 복수의 연산 파이프라인은, 화상에서의 색에 관한 연산을 행하는 연산 파이프라인을 포함하고 있는 경우에는, 그래픽 프로세서에 제안하는 장치를 이용함으로써, 그래픽 프로세서에 종종 요구되는 복잡한 DAG의 실행을 적은 로드/스토어 수로 실행할 수 있게 된다.
마지막으로, 본 발명의 제3 구성에 따른 화상 처리 방법의 실시예에 대하여 도 14의 흐름도를 이용하여 설명한다. 도 14에서, 단계 ST1에서는 입력된 화상 데이터를 연산하는 복수의 연산 파이프라인을 구성하는 각각의 연산 파이프라인에 외부로부터 공급된 상기 화상 데이터 중 적어도 일부분이 공급된다.
이어서, 단계 ST2에서, 복수 연산인 단위 연산으로서, 1부터 n(n은 양의 정수)까지의 n개의 단위 연산에서의 단위 연산 k로부터 단위 연산 n까지의 (n-k+1)개의 단위 연산이 동일한 파이프라인에서의 동일한 연산 시간에 중복되지 않도록 스케쥴링된다. 이 단위 연산의 구체예는 도 4의 (a)에 도시되어 있다.
이어서, 도 14의 단계 ST3과 같이 단계 ST2에서 행해진 스케쥴링에 따라 상기 화상 데이터의 연산이 제어되고 있다. 이상의 단계에 의해 화상 데이터의 처리가 행해진다.
이상 상세히 설명한 바와 같이, 본 발명은 화상의 형상이나 색채에 관한 대량의 데이터를 처리하는 경우에 1회의 메모리 액세스에 의해 판독한 처리해야 할 데이터를 미리 스케쥴링하고나서 병렬 처리하는 연산부에 의해 처리함으로써, 여러 종류의 다양한 처리를 대상으로 하는 화상 처리 연산에서의 패스 수를 삭감하여 효율적으로 처리함과 함께 메모리에 대한 로드/스토어 횟수를 저감시킬 수 있는 화상을 처리하는 장치 및 방법과 이 장치에 이용되는 컴파일러를 제공할 수 있다. 또한, 연산 파이프라인의 스케쥴링을 단위 연산마다 미리 행하고 있으므로, 화상 처리 장치의 제어 회로의 구성을 간단하게 할 수 있다.

Claims (20)

  1. 입력된 화상 데이터를 연산하는 복수의 연산 파이프라인과, 상기 복수의 연산 파이프라인이 출력한 연산 결과를 다시 상기 복수의 연산 파이프라인으로 입력시키기 위해, 데이터 전송 경로를 전환하기 위한 전환 채널과, 상기 전환 채널에 의한 상기 데이터 전송 경로의 전환 및 상기 복수의 연산 파이프라인에 있어서의 연산을 제어하는 제어 회로를 구비하는 화상 처리 장치에 있어서,
    상기 제어 회로는, 복수의 연산으로 구성되는 단위 연산을 상기 복수의 연산 파이프라인으로 실행할 때에, 1부터 n(n은 양의 정수)까지의 단위 연산 중 단위 연산 k(1<k<n)부터 단위 연산 n까지의 (n-k+1)개의 단위 연산을 구성하는 상기 복수의 연산을 동일한 연산 파이프라인에서의 동일한 소정 연산 시간에 중복되지 않도록 스케쥴링하는 화상 처리 장치.
  2. 제1항에 있어서,
    상기 화상 데이터를 기억하는 메모리 장치와, 화상 처리를 포함하는 소정의 정보 처리를 행하는 중앙 처리 장치(CPU)와, 화상 데이터의 입출력부가 접속됨과 함께 상기 메모리 장치가 접속되는 브릿지와, 상기 CPU 및 상기 브릿지 사이의 데이터의 송수신을 중개하는 시스템 버스와, 상기 화상 데이터의 일부분을 보유하는 레지스터를 더 포함하는 화상 처리 장치.
  3. 제1항에 있어서,
    상기 복수의 파이프라인과 상기 전환 채널과 상기 제어 회로는 각각 하나의 화상 처리 코어 내에 설치됨과 함께, 상기 화상 처리 코어는 복수개 설치되고,
    각 화상 처리 코어는, 스토어 유닛과, 제1 로딩 유닛과, 각각이 픽셀 연산을 행하는 복수의 연산 파이프라인을 더 포함하는 화상 처리 장치.
  4. 제3항에 있어서,
    상기 각 화상 처리 코어는, 코어의 외부로부터의 명령을 공급하는 내부 버스와, 상기 내부 버스를 통해 공급된 명령을 할당받아 상기 소정 연산 시간인 클럭마다 연산을 실행하는 상기 복수의 연산 파이프라인과, 상기 클럭마다 상기 연산 파이프라인의 출력을 임의의 채널로 송출함과 함께 클럭마다 임의의 채널의 출력을 임의의 연산 파이프라인의 입력으로 송출하는 크로스바 및 채널군을 포함하는 상기 전환 채널을 포함하는 화상 처리 장치.
  5. 제1항에 있어서,
    상기 단위 연산으로서의 데이터 플로우 그래프(DFG)는 상기 복수의 연산 파이프라인에 할당되는 개개의 연산으로 구성되고, 상기 복수의 연산 파이프라인은 복수의 단위 연산을 구성하는 개개의 연산을 클럭마다 스케쥴링하여 처리하도록 상기 제어 회로에 의해 제어되는 화상 처리 장치.
  6. 제1항에 있어서,
    상기 제어 회로는 상기 동일한 연산 시간인 클럭마다 동일한 상기 단위 연산을 구성하는 개개의 연산이 동일한 연산 파이프라인에서 중복되지 않도록 스케쥴링함과 함께, 인접하는 단위 연산이나 얼마간의 간격을 둔 단위 연산이라도 동일한 클럭에서 개개의 연산이 중복되지 않도록 스케쥴링하여 상기 복수의 연산 파이프라인의 처리를 제어하는 화상 처리 장치.
  7. 제6항에 있어서,
    상기 제어 회로는 하나의 단위 연산을 적어도 3개의 연산 파이프라인을 이용하여 연산하고, 두개의 연산 파이프라인을 이용하여 연산했을 때의 절반의 클럭 사이클에서 처리하도록 연산 파이프라인의 스케쥴링을 제어하는 화상 처리 장치.
  8. 제6항에 있어서,
    상기 제어 회로는 적어도 3개의 연산 파이프라인을 이용하여 상기 단위 연산을 처리하고, 단위 연산 k+1에서의 개개의 연산을 단위 연산 k에서의 개개의 연산보다도 먼저 실행하도록 연산의 순서를 교체하여 스케쥴링을 제어하는 화상 처리 장치.
  9. 제1항에 있어서,
    상기 제어 회로는, 상기 소정 연산 시간으로서의 클럭을 생성하기 위한 기초가 되는 스텝 수를 입력하여 소정의 연산을 행하여 상기 클럭을 생성하는 클럭 생성 회로와, 상기 클럭 생성 회로로부터 출력된 상기 클럭을 오프셋으로서 저장하는 오프셋 저장 메모리와, 상기 스텝 수를 입력하여 모듈 가산하는 모듈 N 회로와, 상기 오프셋 메모리로부터 출력된 오프셋과 상기 모듈 N 회로의 출력을 가산하여 판독 어드레스를 생성하는 제1 가산기와, 상기 오프셋과 상기 모듈 N 회로의 출력을 가산하여 기입 어드레스를 생성하는 제2 가산기를 포함하는 화상 처리 장치.
  10. 제1항에 있어서,
    상기 제어 회로는, 상기 소정 연산 시간으로서의 클럭을 생성하기 위한 기초가 되는 스텝 수를 입력하여 소정의 연산을 행하여 상기 클럭을 생성하는 클럭 생성 회로와, 상기 클럭 생성 회로로부터 출력된 상기 클럭을 오프셋으로서 저장하는 오프셋 저장 메모리와, 중복도를 기억하는 중복도 레지스터와, 상기 스텝 수와 상기 중복도에 기초하여 세대(世代)를 결정하기 위한 베이스 어드레스를 생성하는 베이스 어드레스 생성 회로와, 상기 오프셋과 상기 베이스 어드레스를 가산하여 판독 어드레스를 생성하는 제1 가산기와, 상기 오프셋과 상기 베이스 어드레스를 가산하여 기입 어드레스를 생성하는 제2 가산기를 포함하는 화상 처리 장치.
  11. 제1항에 있어서,
    상기 제어 회로는, 상기 복수의 연산 파이프라인에 있어서의 동일한 파이프라인 사이의 전송을 연산 파이프라인 내에 설치된 통신로를 이용하여 행할 수 있도록 하는 기능을 갖고, 상기 통신로는 입력된 화상 데이터를 승산하는 승산기와, 이 승산기의 출력을 한쪽의 입력으로 하는 가산기와, 가산기의 출력을 받아들여 선입 선출 동작에 의해 입력된 순서로 출력하는 선입 선출(FIFO)부와, 이 FIFO부의 출력에 어드레스 정보를 포함하는 신호를 합성 처리하여 상기 가산기의 다른 측의 입력으로 공급하는 컨트롤러를 포함하는 FIFO 회로를 포함하는 화상 처리 장치.
  12. 입력된 화상 데이터를 연산하는 복수의 연산 파이프라인과, 상기 복수의 연산 파이프라인이 출력한 연산 결과를, 다시 상기 복수의 연산 파이프라인에 입력시키기 위해, 데이터 전송 경로를 전환하기 위한 전환 채널과, 상기 전환 채널에 의한 상기 데이터 전송 경로의 전환 및 상기 복수의 연산 파이프라인에 있어서의 연산을 제어하는 제어 회로를 구비하는 화상 처리 장치에 이용되는 컴파일러에 있어서,
    상기 복수의 연산 파이프라인을 구성하는 각각의 연산 파이프라인이, 외부로부터 공급된 상기 화상 데이터의 일부분을 각각 수신하고,
    복수의 연산으로 구성되는 1부터 n(n은 양의 정수)까지의 n개의 단위 연산 중 단위 연산 k(1<k<n)로부터 단위 연산 n까지의 (n-k+1)개의 단위 연산을 구성하는 상기 복수의 연산이 동일한 연산 파이프라인에 있어서의 동일한 연산 시간에 중복되지 않도록 스케쥴링하고,
    상기 스케쥴링에 따라 상기 복수의 연산 파이프라인의 연산의 순서를 제어하는 화상 처리 장치에 이용되는 컴파일러.
  13. 제12항에 있어서,
    상기 동일한 연산 시간인 클럭마다 동일한 상기 단위 연산을 구성하는 개개의 연산이 동일한 연산 파이프라인에서 중복되지 않도록 스케쥴링함과 함께, 인접하는 단위 연산이나 얼마간의 간격을 둔 단위 연산이라도 동일한 클럭에서 개개의 연산이 중복되지 않도록 스케쥴링하여 상기 복수의 연산 파이프라인의 처리를 제어하는 화상 처리 장치에 이용되는 컴파일러.
  14. 제13항에 있어서,
    하나의 단위 연산을 적어도 3개의 연산 파이프라인을 이용하여 연산하고, 두개의 연산 파이프라인을 이용하여 연산했을 때의 절반의 클럭 사이클에서 처리하도록 연산 파이프라인의 스케쥴링을 제어하는 화상 처리 장치에 이용되는 컴파일러.
  15. 제13항에 있어서,
    적어도 3개의 연산 파이프라인을 이용하여 상기 단위 연산을 처리하고, 단위 연산 k+1에서의 개개의 연산을 단위 연산 k에서의 개개의 연산보다도 먼저 실행하도록 연산의 순서를 교체하여 스케쥴링을 제어하는 화상 처리 장치에 이용되는 컴파일러.
  16. 입력된 화상 데이터를 연산하는 복수의 연산 파이프라인을 구성하는 각각의 연산 파이프라인에 외부로부터 공급된 상기 화상 데이터의 일부분을 공급하는 단계와,
    복수의 연산으로 구성되는 1부터 n(n은 양의 정수)까지의 n개의 단위 연산 중 단위 연산 k부터 단위 연산 n까지의 (n-k+1)개의 단위 연산을 구성하는 상기 복수의 연산이 동일한 파이프라인에 있어서의 동일한 연산 시간에 중복되지 않도록 스케쥴링하는 단계와,
    상기 스케쥴링에 따라 상기 화상 데이터의 연산을 제어하는 단계를 포함하는 화상 처리 방법.
  17. 제16항에 있어서,
    적어도 상기 화상 데이터를 입력하고나서 스케쥴링되기까지의 동안 적어도 그 일부를 기억하는 화상 처리 방법.
  18. 제16항에 있어서,
    상기 스케쥴링시에, 상기 동일한 연산 시간인 클럭마다 동일한 상기 단위 연산을 구성하는 개개의 연산이 동일한 연산 파이프라인에서 중복되지 않도록 스케쥴링함과 함께, 인접하는 단위 연산이나 얼마간의 간격을 둔 단위 연산이라도 동일한 클럭에서 개개의 연산이 중복되지 않도록 스케쥴링하여 상기 복수의 연산 파이프라인의 처리를 제어하는 화상 처리 방법.
  19. 제18항에 있어서,
    상기 스케쥴링시에, 하나의 단위 연산을 적어도 3개의 연산 파이프라인을 이용하여 연산하고, 두개의 연산 파이프라인을 이용하여 연산했을 때의 절반의 클럭 사이클에서 처리하도록 연산 파이프라인의 스케쥴링을 제어하는 화상 처리 방법.
  20. 제18항에 있어서,
    상기 스케쥴링시에, 적어도 3개의 연산 파이프라인을 이용하여 상기 단위 연산을 처리하고, 단위 연산 k+1에서의 개개의 연산을 단위 연산 k에서의 개개의 연산보다도 먼저 실행하도록 연산의 순서를 교체하여 스케쥴링을 제어하는 화상 처리 방법.
KR1020020030578A 2002-01-22 2002-05-31 화상을 처리하는 장치 및 방법과 이 장치에 이용되는컴파일러 KR20030064239A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2002013001A JP2003216943A (ja) 2002-01-22 2002-01-22 画像処理装置、この装置に用いられるコンパイラおよび画像処理方法
JPJP-P-2002-00013001 2002-01-22

Publications (1)

Publication Number Publication Date
KR20030064239A true KR20030064239A (ko) 2003-07-31

Family

ID=19191778

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020020030578A KR20030064239A (ko) 2002-01-22 2002-05-31 화상을 처리하는 장치 및 방법과 이 장치에 이용되는컴파일러

Country Status (6)

Country Link
US (1) US6762764B2 (ko)
EP (1) EP1333381A3 (ko)
JP (1) JP2003216943A (ko)
KR (1) KR20030064239A (ko)
CN (1) CN1434380A (ko)
TW (1) TW569149B (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100791411B1 (ko) * 2006-12-07 2008-01-07 한국전자통신연구원 그래픽스 처리장치 및 방법
KR100826740B1 (ko) * 2005-07-12 2008-04-30 가부시키가이샤 소니 컴퓨터 엔터테인먼트 멀티그래픽프로세서시스템, 그래픽프로세서 및묘화처리방법

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7299458B2 (en) * 2002-10-31 2007-11-20 Src Computers, Inc. System and method for converting control flow graph representations to control-dataflow graph representations
US6985150B2 (en) * 2003-03-31 2006-01-10 Sun Microsystems, Inc. Accelerator control unit configured to manage multiple hardware contexts
JP3756888B2 (ja) * 2003-04-17 2006-03-15 株式会社東芝 グラフィックスプロセッサ、グラフィックスカード及びグラフィックス処理システム
KR100831417B1 (ko) * 2003-12-01 2008-05-22 비욘드 이노베이션 테크놀로지 씨오., 엘티디. 이미지 축소 프로세싱 회로를 위한 방법
US8704837B2 (en) 2004-04-16 2014-04-22 Apple Inc. High-level program interface for graphics operations
US8134561B2 (en) 2004-04-16 2012-03-13 Apple Inc. System for optimizing graphics operations
US8446417B2 (en) 2004-06-25 2013-05-21 Nvidia Corporation Discrete graphics system unit for housing a GPU
US7663633B1 (en) * 2004-06-25 2010-02-16 Nvidia Corporation Multiple GPU graphics system for implementing cooperative graphics instruction execution
US8941668B2 (en) * 2004-06-25 2015-01-27 Nvidia Corporation Method and system for a scalable discrete graphics system
US8411093B2 (en) * 2004-06-25 2013-04-02 Nvidia Corporation Method and system for stand alone graphics independent of computer system form factor
US8181219B2 (en) 2004-10-01 2012-05-15 Microsoft Corporation Access authorization having embedded policies
US7904956B2 (en) 2004-10-01 2011-03-08 Microsoft Corporation Access authorization with anomaly detection
US7685632B2 (en) * 2004-10-01 2010-03-23 Microsoft Corporation Access authorization having a centralized policy
US7542042B1 (en) * 2004-11-10 2009-06-02 Nvidia Corporation Subpicture overlay using fragment shader
GB0425204D0 (en) * 2004-11-15 2004-12-15 Falanx Microsystems As Processing of 3-dimensional graphics
US8253751B2 (en) * 2005-06-30 2012-08-28 Intel Corporation Memory controller interface for micro-tiled memory access
US7512773B1 (en) 2005-10-18 2009-03-31 Nvidia Corporation Context switching using halt sequencing protocol
US7916146B1 (en) * 2005-12-02 2011-03-29 Nvidia Corporation Halt context switching method and system
US9081609B2 (en) * 2005-12-21 2015-07-14 Xerox Corporation Image processing system and method employing a threaded scheduler
JP2008098911A (ja) * 2006-10-11 2008-04-24 Sony Corp 画像処理装置および方法、並びにプログラム
JP2008299610A (ja) * 2007-05-31 2008-12-11 Toshiba Corp マルチプロセッサ
US8754895B2 (en) * 2008-09-09 2014-06-17 Sony Corporation Pipelined image processing engine
JP5185242B2 (ja) * 2009-12-04 2013-04-17 株式会社東芝 コンパイル装置
JP5632651B2 (ja) * 2010-05-19 2014-11-26 スパンション エルエルシー 半導体回路及び設計装置
JP5051327B1 (ja) * 2012-03-22 2012-10-17 富士ゼロックス株式会社 画像処理装置及びプログラム
JP6378515B2 (ja) 2014-03-26 2018-08-22 株式会社メガチップス Vliwプロセッサ
US9818166B2 (en) 2015-01-16 2017-11-14 Intel Corporation Graph-based application programming interface architectures with producer/consumer nodes for enhanced image processing parallelism
US9710876B2 (en) 2015-01-16 2017-07-18 Intel Corporation Graph-based application programming interface architectures with equivalency classes for enhanced image processing parallelism
JP6724908B2 (ja) * 2015-05-12 2020-07-15 日本電気株式会社 アクセラレータ制御装置、アクセラレータ制御方法およびプログラム
DE112016006516T5 (de) * 2016-02-29 2018-11-15 Olympus Corporation Bildverarbeitungsvorrichtung

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR970058009A (ko) * 1995-12-20 1997-07-31 배순훈 파이프 라인 구조를 가지는 다중 프로세서 화상 처리 장치
JPH11238120A (ja) * 1997-12-05 1999-08-31 Hewlett Packard Co <Hp> 多段階画像処理方法および装置
KR20010023268A (ko) * 1998-06-25 2001-03-26 마츠시타 덴끼 산교 가부시키가이샤 화상 처리 장치
US6212611B1 (en) * 1998-11-03 2001-04-03 Intel Corporation Method and apparatus for providing a pipelined memory controller

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5197140A (en) * 1989-11-17 1993-03-23 Texas Instruments Incorporated Sliced addressing multi-processor and method of operation
KR100186916B1 (ko) * 1994-02-14 1999-05-01 모리시다 요이치 신호처리장치
WO1995028686A1 (en) * 1994-04-15 1995-10-26 David Sarnoff Research Center, Inc. Parallel processing computer containing a multiple instruction stream processing architecture
US6567564B1 (en) * 1996-04-17 2003-05-20 Sarnoff Corporation Pipelined pyramid processor for image processing systems

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR970058009A (ko) * 1995-12-20 1997-07-31 배순훈 파이프 라인 구조를 가지는 다중 프로세서 화상 처리 장치
JPH11238120A (ja) * 1997-12-05 1999-08-31 Hewlett Packard Co <Hp> 多段階画像処理方法および装置
KR20010023268A (ko) * 1998-06-25 2001-03-26 마츠시타 덴끼 산교 가부시키가이샤 화상 처리 장치
US6212611B1 (en) * 1998-11-03 2001-04-03 Intel Corporation Method and apparatus for providing a pipelined memory controller

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100826740B1 (ko) * 2005-07-12 2008-04-30 가부시키가이샤 소니 컴퓨터 엔터테인먼트 멀티그래픽프로세서시스템, 그래픽프로세서 및묘화처리방법
KR100791411B1 (ko) * 2006-12-07 2008-01-07 한국전자통신연구원 그래픽스 처리장치 및 방법

Also Published As

Publication number Publication date
EP1333381A3 (en) 2010-11-10
TW569149B (en) 2004-01-01
US6762764B2 (en) 2004-07-13
JP2003216943A (ja) 2003-07-31
CN1434380A (zh) 2003-08-06
EP1333381A2 (en) 2003-08-06
US20030137518A1 (en) 2003-07-24

Similar Documents

Publication Publication Date Title
KR20030064239A (ko) 화상을 처리하는 장치 및 방법과 이 장치에 이용되는컴파일러
CN114238204B (zh) 可重构并行处理
CN107563952B (zh) 可编程二维图像处理器上的卷积神经网络
JP3916680B2 (ja) プロセッサ
EP0539595A1 (en) Data processor and data processing method
JP2006012182A (ja) データ処理システムとその方法
JP2013529322A (ja) 高効率の埋め込み型均一マルチコアプラットフォーム用のタイルベースのプロセッサアーキテクチャーモデル
EP1261912A2 (en) Processing architecture having sub-word shuffling and opcode modification
KR102278021B1 (ko) 이미지 프로세서 런타임 효율성을 개선하기 위한 프로그램 코드 변환
US20030097391A1 (en) Methods and apparatus for performing parallel integer multiply accumulate operations
JP3971535B2 (ja) Simd型プロセッサ
US8060726B2 (en) SIMD microprocessor, image processing apparatus including same, and image processing method used therein
WO2016024508A1 (ja) マルチプロセッサ装置
US7199799B2 (en) Interleaving of pixels for low power programmable processor
CN112074810B (zh) 并行处理设备
JP2002063025A (ja) 可変長データ処理用プロセッサ
US7127590B1 (en) Reconfigurable VLIW processor
JP4483991B2 (ja) 高速pe間データ再配置機能を有するプロセッサアレイシステム
CN102184090B (zh) 一种动态可重构处理器及其固定数的调用方法
JPH0282378A (ja) 並列計算機におけるイベントスケジューリング処理方式
JP2934003B2 (ja) データ処理装置
CN102112965B (zh) 运算处理装置
JP2002318687A (ja) 情報処理装置及び計算機システム
US7107478B2 (en) Data processing system having a Cartesian Controller
WO2011151000A9 (en) Method and device for data processing

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application