KR20080100380A - 병렬 화상 처리 시스템과 병렬 화상 처리 시스템의 제어 방법 및 그 장치 - Google Patents

병렬 화상 처리 시스템과 병렬 화상 처리 시스템의 제어 방법 및 그 장치 Download PDF

Info

Publication number
KR20080100380A
KR20080100380A KR1020087023995A KR20087023995A KR20080100380A KR 20080100380 A KR20080100380 A KR 20080100380A KR 1020087023995 A KR1020087023995 A KR 1020087023995A KR 20087023995 A KR20087023995 A KR 20087023995A KR 20080100380 A KR20080100380 A KR 20080100380A
Authority
KR
South Korea
Prior art keywords
instruction
element processor
execution
operation code
register
Prior art date
Application number
KR1020087023995A
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 KR20080100380A publication Critical patent/KR20080100380A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • 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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Image Processing (AREA)

Abstract

처리 대상 화상의 폭 방향 화소수보다도 PE수가 적은 1차원 SIMD 병렬 화상 처리 시스템에서 화상 전체에 대한 처리를 행할 때, 필요로 되는 프로그램 코드량을 삭감한다. PE 어레이(1)를 제어하는 컨트롤러(2) 내에, 명령의 반복 실행부(22)를 포함하고,그 내부에 피연산자 변환부(221), 메모리 어드레스 변환부(222), 연산 코드 변환부(223)를 갖는다. 프로그램 메모리(3)에 저장된 프로그램 코드를 명령 페치/디코드부(21)가 판독하여 실행할 때, 반복 실행부(22)가 프로그램 코드를 판단하고, 명령에 따라서 피연산자 변환부(221), 메모리 어드레스 변환부(222), 연산 코드 변환부(223)에 의한 변환을 행하고, 1 명령의 프로그램 기술을 각 PE에 할당된 수의 처리 대상 화소에 적응한 반복 실행을 행함으로써, 프로그램 코드량을 삭감할 수 있다.
병렬 화상 처리 시스템, 연산 코드 변환부, 피연산자 변환부, 반복 실행부, 프로그램 메모리, 명령 페치/디코드부

Description

병렬 화상 처리 시스템과 병렬 화상 처리 시스템의 제어 방법 및 그 장치{PARALLEL IMAGE PROCESSING SYSTEM CONTROL METHOD AND APPARATUS}
본 발명은 병렬 화상 처리 시스템에 관한 것으로,특히 1차원 SIMD(Single Instruction Multip1e Data) 프로세서 어레이 구조를 포함하는 병렬 화상 처리 시스템의 제어 방법 및 장치에 관한 것이다.
종래의 병렬 화상 처리 시스템의 일례가 일본 특허 제2839026호 공보(특허 문헌 1) 및 일본 특허 공개 2002-7359호 공보(특허 문헌 2)에 기재되어 있다. 이 종래의 병렬 화상 처리 시스템은, 다수의 연산 요소 프로세서(Processor Element, 이하 「PE」라고 함)이 1차원 병렬 접속된 PE 어레이와, 그들을 제어하는 컨트롤러로 구성되어 있다. 각 PE는 연산 처리를 행하는 연산부(ALU), 처리 대상 화상의 국소적인 화소값을 저장하는 로컬 메모리 및 일시적인 연산 결과를 유지하는 레지스터로 구성되어 있다.
이와 같은 구성을 갖는 종래의 병렬 화상 처리 시스템은, 로컬 메모리에 저장된 처리 대상 화상의 특정 행에 대하여 어떠한 연산을 행하는 경우, 로컬 메모리의 특정 행에 대응하는 어드레스로부터 화소값을 판독하여, 레지스터에 저장한다. 레지스터에 저장한 화소값을 판독하여, ALU에서 연산을 행하고, 연산 결과를 레지 스터에 저장한다. 레지스터에 저장한 연산 결과를 로컬 메모리의 특정 행에 저장한다. 연산에서, 처리 대상으로 하는 화소의 주변에 위치하는 화소값이 필요한 경우에는, PE 간의 데이터 전송부를 이용하여 필요한 화소값을 수집하여 연산을 행한다.
또한,일본 특허 공개 제2004-362086호 공보(특허 문헌 3)에는, SIMD 병렬 처리 시스템이 처리 대상으로 되는 화상에 최적인 PE수를 갖지 않는 경우의 프로그램 효율을 향상시키기 위해서, PE의 병렬도(parallelism)에 따라서 자동적으로 PE 명령을 반복 실행하는 기능을 갖춘 SIMD형 병렬 처리 시스템이 기재되어 있다. 이 병렬 처리 시스템 에서는,프로그램에 의해 지시되는 병렬도 정보와 SIMD 연산기의 병렬도 정보로부터 반복 실행 횟수를 산출하고, 시스템이 갖는 PE수에 따라서 필요해지는 횟수의 PE 명령의 자동 반복 실행을 실현하고 있다.
[특허 문헌 1] 일본 특허 제2839026호 공보(예를 들어, 도 1, 단락 0008)
[특허 문헌 2] 일본 특허 공개 제2002-7359호 공보(예를 들어, 도1, 단락 0014∼0016)
[특허 문헌 3] 일본 특허 공개 제2004-362086호 공보(예를 들어, 단락 0011∼0021, 도 1)
<발명의 개시>
<발명이 해결하고자 하는 과제>
그러나, 상기 종래의 병렬 화상 처리 시스템에서는, PE수가 처리 대상 화상의 폭방향 화소수보다 적고, 각 PE에 복수 화소를 할당하여 처리를 행하는 경우의 메모리상에서의 화소의 배치, PE 간에 걸친 데이터 취득의 자동화에 대하여 아무것도 고려되어 있지 않다.
상기 특허 문헌 3에 기재된 시스템에서는, 동일 명령 또는 동일 서브루틴의 반복 실행을 행하고 있지만, 이와 같은 단순한 반복 실행에서는 인접 PE와의 통신을 포함하는 처리를 자동화할 수는 없다. 근접 화소값을 필요로 하는 처리를 실현하기 위해서는, 필요한 근접 화소값이 동일 PE 내 또는 인접 PE 내 중 어디에 할당되어 있는지에 따른 특별한 처리의 추가가 필요해져서, 프로그램 코드량이 증대된다.
본 발명의 목적은, 근접 화소값을 필요로 하는 처리의 자동화를 가능하게 하는 신규의 병렬 화상 처리 시스템 및 그 제어 방법을 제공하는 것에 있다.
본 발명의 다른 목적은, 근접 화소값을 필요로 하는 처리에서도, 처리 대상 화상의 폭방향 화소수와 동일 PE수를 갖는 1차원 SIMD 병렬 화상 처리 시스템과 동일 정도의 프로그램 코드량으로 화상 전체에 대한 화상 처리를 실행할 수 있는 화상 처리 시스템의 제어 방법 및 장치를 제공하는 것에 있다.
<과제를 해결하기 위한 수단>
본 발명은, 처리 대상 데이터수보다 적은 개수의 요소 프로세서를 갖고, 각 요소 프로세서가 복수개의 처리 대상 데이터를 처리하는 병렬 화상 처리 시스템의 제어 방법으로서, 요소 프로세서에 할당한 처리 대상 데이터수에 따라서 명령을 자동적으로 반복 실행하고, 소정 명령을 반복 실행할 때, 반복중인 각각의 실행시에 처리하는 데이터에 따라서 연산 코드를 치환하고, 치환된 연산 코드에 의해 요소 프로세서를 제어하는 것을 특징으로 한다.
본 발명의 일 실시 형태에 의하면, 본 발명은 처리 대상 화상의 폭방향 화소수보다 적은 개수의 요소 프로세서를 갖고,각 요소 프로세서가 복수개의 화소를 처리하는 1차원 프로세서 어레이 구조를 포함하는 병렬 화상 처리 시스템의 제어 방법으로서,요소 프로세서에 할당한 화소수에 따라서 명령을 자동적으로 반복 실행하고, 인접 화소의 화소값 취득 명령을 반복 실행할 때, 처리하는 화소의 위치에 따라서 연산 코드를 인접 요소 프로세서로부터의 화소값 전송 명령과 자신의 요소 프로세서 상의 화소값 취득 명령의 조합으로 치환하고, 치환된 연산 코드에 의해 상기 요소 프로세서를 제어하는 것을 특징으로 한다.
또한,각 요소 프로세서에 할당한 화소수에 맞춰서 레지스터군을 분할하여 이용하고, 반복 실행시에 이용하는 레지스터군을 절환하도록 피연산자(operand)를 재기입하고,메모리 액세스 명령의 반복 실행시에 상기 요소 프로세서에 할당한 화소수에 맞춘 오프셋값을 어드레스에 가산하는 것을 특징으로 한다.
본 발명의 일 실시예에 의한 병렬 화상 처리 시스템은, 프로그램에 따라서 PE 어레이를 제어하는 컨트롤러 내에, 프로그램 내의 각 어드레스의 명령을 각 PE에 할당된 화소수에 따라서 자동적으로 반복 실행하기 위한 장치를 포함하며,또한,반복 실행하는 명령중의 피연산자를 변환하는 장치, 반복 실행하는 명령중의 메모리 액세스 시의 어드레스를 변환하는 장치, 및 반복 실행시에 각 PE에 할당된 복수의 화소 내의 화소 위치에 따라서 연산 코드를 변환하는 장치를 갖는다.
이와 같은 구성을 채용하여, 프로그램에 기술된 1개의 명령을 각 PE에 할당 된 복수의 처리 대상 화소에 대하여 자동적으로 반복 실행하여, 연산 코드 변환함으로써, 근접 화소값을 필요로 하는 처리의 자동화가 가능해져서,처리 대상 화상의 폭방향 화소수와 동일 PE수를 갖는 1차원 SIMD 병렬 화상 처리 시스템과 동일 정도의 프로그램 코드량으로 화상 전체에 대한 화상 처리를 실행할 수 있다.
<발명의 효과>
전술한 바와 같이, 본 발명에 의하면, 요소 프로세서에 할당한 처리 대상 데이터수에 따라서 명령을 자동적으로 반복 실행하고, 소정 명령을 반복 실행할 때, 반복중인 각각의 실행시에 처리하는 데이터에 따라서 연산 코드를 치환하고, 치환된 연산 코드에 의해 요소 프로세서를 제어한다. 이것에 의해, 실행 대상의 화소 위치에 따라서 서로 다른 동작을 행할 필요가 있는 주변 화소값의 취득 명령 등에서 화소 위치를 고려한 명령 변환을 행할 수 있으며,근접 화소값을 필요로 하는 처리의 자동화를 적은 프로그램 코드량으로 실현할 수 있다.
또한,처리 대상 화상의 폭방향 화소수보다 적은 PE수를 갖는 1차원 SIMD화상 처리 시스템에서,컨트롤러 내에 배치된 반복 실행 장치, 피연산자를 변환하는 장치 및 메모리 어드레스를 변환하는 장치에 따라, 1 화소에 대한 명령의 프로그램 기술만으로 자동적으로 반복 실행할 수가 있으며,또한,연산 코드를 변환함으로써, 근접 화소값을 필요로 하는 처리의 자동화가 가능하게 되어 프로그램 코드량을 증대시키지 않고 화상 전체에 대한 화상 처리를 실행할 수 있다.
<발명을 실시하기 위한 최량의 형태>
이하, 본 발명의 실시 형태를 도면에 기초하여 상세히 설명한다.
1. 시스템 구성
도 1은 본 발명의 일 실시 형태에 따른 병렬 화상 처리 시스템의 기능적 구성을 나타내는 블록도이다. 본 실시 형태에 따른 병렬 화상 처리 시스템은, 화상 처리에서의 각각의 명령 동작을 행하는 PE 어레이(1)와, 프로그램에 의해 PE 어레이(1)의 동작을 제어하는 컨트롤러(2)와, 실행할 화상 처리를 기술한 프로그램을 저장하는 프로그램 메모리(3)를 포함한다.
PE 어레이(1)는 다수의 PE(10)가 1차원으로 배열되어 접속된 구성을 갖고, 각 PE가 동일 프로그램을 실행하는 SIMD 방식으로서 구성되어 있다. 단,도 1에서는 번잡하게 되지 않도록 인접하는 3개의 PE만이 도시되어 있다.
각 PE(10)는, 로컬 메모리(11), 연산부(12) 및 레지스터군(13)을 포함한다. PE 어레이(1)에 포함되는 PE(10)의 개수는 처리 대상 화상의 폭방향 화소수의 정수분의 1인 것이 바람직하다. 이는 각 PE(10)에 동일수의 화소를 할당할 수 있도록 하기 위함이다. 단,이 정수분의 1이라고 하는 조건을 충족시키지 않는 경우이더라도 본 발명은 적용 가능하며, 마찬가지의 효과를 얻을 수 있다.
컨트롤러(2)는 PE 어레이(1)의 동작 시퀀스를 제어하는 유닛이며, 명령 페치/디코드부(21) 및 반복 실행부(22)를 포함한다. 반복 실행부(22)는 컨트롤러(2)가 실행하는 명령에 대하여 각 PE에 할당된 처리 대상 화소수에 따라서 반복 실행을 행하기 위한 유닛이며, 피연산자 변환부(221), 메모리 어드레스 변환부(222), 연산 코드 변환부(223), 반복 실행 카운터(224), 반복 실행 지정 레지스터(225), 및 처리 대상 화상 높이 레지스터(226)를 포함한다.
반복 실행 카운터(224)는, 반복 실행부(22)에서 반복 실행 지정 레지스터(225)의 값으로 지정된 횟수의 명령 반복 실행 시에 이용하는 카운터 CR이다. 반복 실행 지정 레지스터(225)는, 명령의 반복 실행을 행할 때의 반복 횟수 NR을 지정하여 유지하는 레지스터이며, PE수와 처리 대상 화상의 폭방향 화소수의 비에 따라 필요해지는 반복 횟수, 즉 각 PE에 할당된 처리 대상 화소수를 지정한다. 처리 대상 화상 높이 레지스터(226)는, 처리 대상으로 하는 화상의 높이 방향의 화소수 NH를 저장하여 유지하는 레지스터이며, 여기서의 값은 메모리 액세스 명령의 반복 실행시에 처리 대상 화상이 저장된 어드레스의 오프셋값 산출에 이용한다.
1.1) PE 어레이
PE 어레이(1)는, 각 PE(l0)에 처리 대상 화상의 화소를 할당하여, 각 PE에서 동일한 명령을 병렬로 동작시킴으로써 화상 처리 동작을 행한다. PE(10)는, 처리 대상 화상 내의 할당된 화소값을 저장, 연산하는 요소 프로세서이며, 통상의 프로세서가 갖는 명령 실행 기능을 구비하고,컨트롤러(2)로부터의 제어 신호에 의해 명령 동작을 행한다. 각 PE(10)는 데이타 교환을 행하기 위해 인접하는 PE(10)와 접속되어 있다.
로컬 메모리(11)는, 각 PE(10)가 개별로 갖는 메모리이며, 연산부(12)와 밀접하게 접속되며, 처리 대상 화상 내의 각 PE에 할당된 화소값을 저장하는 외에,처리 도중의 연산 결과 등을 저장한다. 처리 대상 화상의 각 PE에 할당된 각각의 화소값을, 처리 대상 화상의 높이 방향의 화소수의 오프셋을 갖는 어드레스에 각각 저장한다. 이 때의 어드레스 오프셋값, 즉 처리 대상 화상의 높이 방향 화소수를 Om으로 한다. 예를 들면, PE에 할당된 화소값은, 좌단의 화소값을 어드레스 A에 저장한다고 한 경우, A, A+Om, A+2×Om, A+3×Om의 어드레스에 각각 저장된다.
연산부(12)는, 레지스터군(13)의 판독/기입 명령, 로컬 메모리(11)에 대한 판독/기입 명령, 산술 연산 명령, 논리 연산 명령 등을 실행하는 유닛이며, 화상 처리에서,할당된 화소값에 대한 연산 등을 행한다.
레지스터군(13)은, 각 PE(10) 내의 연산부(12)가 개별로 갖는 연산용 레지스터이며, 연산 동작 시에 입력으로 되는 값, 및 출력되는 연산 결과를 저장한다. 각 레지스터에는 R(0)부터 R(레지스터 개수 -1)까지의 레지스터 번호를 부여한다. 각 PE(10)에 대하여 할당된 복수 화소를 자동적으로 처리하기 위해서, 포함되는 레지스터 개수를 할당한 화소수로 분할하여 이용한다. 예를 들면, 각 PE(10)에 대하여 2개의 화소를 할당한 경우, 레지스터군(13)이 갖는 레지스터 개수를 전반과 후반의 2개로 분할하여 이용하고, 각 PE(l0)에 대하여 4개의 화소를 할당한 경우에는 레지스터군(13)이 갖는 레지스터 개수를 4분할하여 이용한다.
1.2) 컨트롤러
컨트롤러(2)는, 명령 페치/디코드부(21)에 의해 프로그램 메모리(3)에 저장된 프로그램을 순차적으로 판독하고, 해석하여 PE 어레이(1)를 제어함으로써, 화상 처리를 진행시킨다.
명령 페치/디코드부(21)는, 프로그램 메모리(3)로부터 프로그램을 판독하고, 연산 코드 및 피연산자를 해석하여 PE 어레이(1)의 제어를 행하는 컨트롤러(2)의 중핵을 이루는 유닛이다. 프로그램 메모리(3)로부터 판독한 연산 코드 및 피연산 자를 반복 실행부(22)에 제공하여 반복 실행의 판단을 행한다. 반복 실행부(22)가 반복 실행을 행한다고 판단한 경우에는, 지정 횟수의 반복이 완료할 때까지 후속하는 프로그램의 판독은 정지된다. 반복 실행부(22)에 의해 반복 실행의 각 스텝에 따라서 재기입된 연산 코드 및 피연산자를 이용하여 PE 어레이(1)를 제어한다.
반복 실행부(22)는, 명령 페치/디코드부(21)로부터 입력된 연산 코드가 반복 실행 대상으로 되는 명령인지를 판단하여, 연산 코드가 대상 명령인 경우에는 반복 실행 카운터(224)를 이용하여 반복 실행 지정 레지스터(225)에 의해 지정된 횟수 NR의 반복 실행을 행한다. 또한,반복 실행이 종료할 때까지, 명령 페치/디코드부(21)에 대하여 후속하는 명령의 프로그램 메모리로부터의 판독을 정지하도록 지시한다. 반복 실행을 행할 때에는, 반복 실행 지정 레지스터(225)에 의해 지정된 횟수 NR, 즉 각 PE에 할당된 처리 대상 화소수와 반복 실행 카운터(224)의 값 CR에 의해 산출할 수 있는 처리 대상 화소군 내의 화소 위치에 따라서, 피연산자 변환부(221), 메모리 어드레스 변환부(222), 연산 코드 변환부(223)에 의해 피연산자, 메모리 어드레스 및 연산 코드의 변환을 행한다.
1.3) 피연산자 변환부
피연산자 변환부(221)는, 반복 실행시에 레지스터군(13) 내의 레지스터 이용 부분을 처리 대상 화소 위치에 따라서 절환하기 위해서, 레지스터 번호의 변환을 행하는 유닛이다. 명령 페치/디코드부(21)로부터 입력된 연산 코드에 의해 피연산자의 변환이 필요한 명령인지를 판단한다. 피연산자 변환이 필요한 경우에는, PE 어레이(1) 내의 레지스터군(13)이 갖는 레지스터 개수를 반복 실행 지정 레지스 터(225)에 저장된 반복 실행 횟수 NR에 의해 분할하고, 분할한 각 레지스터 개수에 반복 실행 카운터(224)에 저장되는 0부터 (NR-1)까지의 값을 승산한 값을 레지스터 위치 절환에 이용되는 오프셋값을 획득한다.
레지스터 개수가 반복 실행 횟수 NR로 분할할 수 없는 경우에는, 소수점 이하를 절사한 정수값을 이용하고, 이것에 반복 실행 카운터(224)의 값 CR을 승산하여 오프셋값을 산출한다. 산출한 오프셋값을 명령 페치/디코드부(21)로부터 입력된 피연산자(레지스터 번호)에 가산함으로써 피연산자 변환을 행하고, 변환 결과의 피연산자를 명령 페치/디코드부에 제공한다.
오프셋값을 산출하는 장치로서는 제산기나 승산기를 이용한 구성, 또는 테이블을 이용한 구성이 고려된다. 이후에는 테이블을 이용하여 오프셋값을 산출하도록 구성한 피연산자 변환부(221)를 설명한다.
도 2는 본 실시 형태에 따른 병렬 화상 처리 시스템에서의 피연산자 변환부의 구성을 기능적으로 나타낸 블록도이다. 피연산자 변환부(221)는, 레지스터 번호의 변환에 이용하는 오프셋값을, 반복 실행 지정 레지스터값 NR과 반복 실행 카운터값 CR을 키로서 설정한 오프셋 산출 테이블을 이용하여 결정한다. 여기에서는, 반복 실행 지정 레지스터(225)의 값 NR에 의해 지정되는 반복 실행 횟수에 응답하기 위해, 1회 (반복 실행을 행하지 않음)부터 4회까지 응답할 수 있는 오프셋 산출 테이블 221.1을 준비하였다.
도 2에서의 오프셋 산출 테이블 221.1은 레지스터 개수가 N개인 것으로서 기재하고 있다. 연산 코드가 피연산자 변환 대상 명령인지의 여부를 판단하 고(221.6), 그 결과에 의해, 입력 레지스터 번호를 그대로 출력하거나,오프셋 산출 테이블 221.1에 의해 결정된 오프셋값을 가산하여(221.5) 출력할지를 선택한다(221.7). 즉, 연산 코드가 오프셋값 피연산자 변환 대상 명령인 경우에는, 입력 레지스터 번호와 오프셋 산출 테이블 221.1에 의해 결정된 오프셋값을 가산한 결과를 출력하고, 연산 코드가 피연산자 변환 대상 명령이 아닌 경우에는 입력 레지스터 번호를 그대로 출력한다.
또한,피연산자 변환부(221)는, 오프셋 산출 테이블 221.1을 참조할 때의 반복 실행 카운터값 CR을 조정하는 카운터값 조정부를 갖는다. 이 카운터값 조정부는, 인접 화소값의 취득 명령을 반복 실행할 때에 필요해지는 유닛이다. 인접 화소값의 취득 명령을 반복 실행할 때에는, 반복 실행 카운터(224)의 값 CR에 따라서, 필요로 하는 인접 화소값을 인접 PE가 유지하고, 인접 PE로부터 자신의 PE로의 화소값 전송을 행하는 경우와, 필요로 하는 인접 화소값을 자신의 PE가 유지하고, 레지스터 번호를 오프셋한 레지스터로부터의 참조를 행하는 경우의 2가지 경우가 존재한다. 이 경우에,명령이 좌우 어느쪽측의 화소값을 참조하는 명령인지, 전송 목적지가 인접 PE인지, 자신의 PE인지에 의해, 입력 피연산자에서 지정된 레지스터 번호를 오프셋하는 것이 필요해진다.
따라서,도 2에 도시한 바와 같이, 오프셋 산출 테이블 221.1을 참조할 때에 반복 실행 카운터값 CR을 바꾼다. 우선 연산 코드로부터 카운터값 CR의 조정이 필요한지의 여부를 판단하여(221.2), 필요하면 카운터값 CR을 조정하고 (221.3), 조정된 결과를 선택하여(221.4) 오프셋 산출 테이블 221.1을 참조한다. 카운터값 CR 의 조정이 불필요하면, 입력한 카운터값 CR을 선택하여 (221.4), 오프셋 산출 테이블 221.1을 참조한다.
1.4) 메모리 어드레스 변환부
메모리 어드레스 변환부(222)는, 메모리 액세스 명령을 반복 실행할 때에 액세스하는 어드레스를 변환하기 위한 유닛이다. 명령 페치/디코드부(21)로부터 입력된 연산 코드가 로컬 메모리(11)의 판독/기입 명령인 경우, 처리 대상 화상 높이 레지스터(226)의 값 NH와 반복 실행 카운터(224)의 값 CR을 승산하여 얻어지는 값을 입력 어드레스에 가산하는 어드레스 변환을 행하고, 명령 페치/디코드부(21)에 변환 완료 어드레스를 제공한다.
1.5) 연산 코드 변환부
연산 코드 변환부(223)는, 반복 실행함에 있어서 실행 대상으로 하는 화소위치에 따라서 다른 동작을 행할 필요가 있는 좌/우 인접 화소값의 취득 명령을 실행할 때에, PE 어레이(1)에서 실행하는 연산 코드의 변환을 행하는 유닛이다. 명령 페치/디코드부(21)로부터 입력된 연산 코드가 좌/우 인접 화소값의 취득 명령인 경우, 반복 실행 카운터(224) 및 반복 실행 지정 레지스터(225)의 값 CR 및 NR에 의해 현재 실행 대상으로 하고 있는 화소의 각 PE에 할당된 복수 화소 내에서의 화소 위치를 산출하고, 취득할 인접 화소값이 자신의 PE의 레지스터에 유지되어 있는지, 인접 PE의 레지스터에 유지되어 있는지를 판단하고, 자신의 PE레지스터로부터 판독되도록, 또는 우측 인접 PE로부터의 레지스터값이 전송되도록 변환한 연산 코드를 명령 페치/디코드부(21)에 제공한다.
2. 동작
도 3은 본실시 형태에 따른 병렬 화상 처리 시스템의 전체적 동작을 나타내는 플로우차트이다. 명령 페치/디코드부(21)가 프로그램 메모리(3)에 저장된 프로그램으로부터 실행할 어드레스의 프로그램 코드를 판독하고, 반복 실행부(22)에 공급한다(스텝 A1). 반복 실행부(22)는 제공된 프로그램 코드의 연산 코드가 반복 실행 대상 명령인지의 여부를 판단한다(스텝 A2). 반복 실행 대상명령이 아니라고 판단한 경우에는(스텝 A2의 '아니오'), 프로그램 코드를 그대로 명령 페치/디코드부(21)에 제공하고, PE 어레이(1)를 제어하여 명령 처리를 행한다(스텝 A3, A4).
연산 코드가 반복 실행 대상 명령이라고 판단한 경우에는(스텝 A2의 '예'), 반복 실행 카운터(224)의 값 CR을 0으로 초기화하고(스텝 A5), 피연산자 변환부(221), 메모리 어드레스 변환부(222) 및 연산 코드 변환부(223)에 프로그램 코드를 제공한다(스텝 A6, A7, A8).
명령 페치/디코드부(21)는, 피연산자 변환부(221), 메모리 어드레스 변환부(222) 및 연산 코드 변환부(223)에 의해 변환된 프로그램 코드를 수취하고(스텝 A9), 이것을 해석하여 PE 어레이(1)을 제어하고, 각 명령에 따른 처리를 행한다(스텝 A10).
그 후, 반복 실행 카운터(224)의 값 CR을 1만큼 증분시켜서(스텝A11), 반복 실행 지정 레지스터(225)의 값 NR과 비교를 행한다(스텝 A12). 반복 실행 카운터(224)의 값 CR < 반복 실행 지정 레지스터(225)의 값 NR이면(스텝 A12의 '아니오'), 처리는 스텝 A6, A7, A8로 되돌아가서 반복 실행을 행한다. 반복 실행 카운 터(224)의 값 CR이 반복 실행 지정 레지스터(225)의 값 NR과 동등하게 된 시점에서(스텝 A12의 '예'), 처리는 입력 프로그램 코드의 1스텝에 대하여 필요한 횟수의 반복 실행이 종료한 것으로 하여, 다음 프로그램 코드의 처리로 진행한다.
이하, 피연산자 변환부(221), 메모리 어드레스 변환부(222) 및 연산 코드 변환부(223)가 각각 실행하는 스텝 A6, A7 및 A8에 대하여 상세히 설명한다.
2.1) 피연산자 변환
도 4는 본 실시 형태에 따른 병렬 화상 처리 시스템의 피연산자 변환 동작을 나타내는 플로우차트이다. 피연산자 변환부(221)는, 명령 페치/디코드부(21)로부터 입력된 프로그램 코드 내에 포함되는 입력원, 출력처로 되는 각 피연산자에 대하여, 연산 코드와 피연산자 위치에 의해 변환 대상으로 할지의 판단한다(스텝 B1). 피연산자가 변환 대상이 아닌 경우에는(스텝 B1의 '아니오'), 변환을 행하지 않고 입력된 레지스터 번호를 그대로 출력한다.
피연산자가 변환 대상인 경우에는(스텝 B1 '예'), 또한 연산 코드가 인접 화소값의 취득 명령인지를 판단한다(스텝 B2). 전술한 바와 같이, 인접 화소값의 취득 명령을 반복 실행할 때에는, 반복 실행 카운터(224)의 값 CR에 따라서, 취득할 인접 화소값을 인접 PE가 유지하고 있으며 인접 PE로부터 자신의 PE로의 화소값 전송을 행하는 경우와, 취득할 인접 화소값을 자신의 PE가 유지하고 있으며 레지스터 번호를 오프셋한 레지스터로부터의 참조를 행하는 경우의 2가지 경우가 존재한다. 이 경우에,명령이 좌우 어느쪽측의 화소값을 참조하는 명령인지, 전송원이 인접 PE인지, 자신의 PE인지에 의해, 입력 피연산자에서 지정된 레지스터 번호를 오프셋 하는 것이 필요해지기 때문에, 오프셋 산출 테이블을 참조할 때에 반복 실행 카운터값 CR을 바꾸는 처리를 행할 필요가 있다. 따라서, 연산 코드가 인접 화소값의 취득 명령인 경우에는(스텝 B2의 '예'), 연산 코드가 좌우 어느쪽측의 인접 화소값을 취득하는 명령인지를 판단한다(스텝 B3).
연산 코드가 우측 인접 화소값을 취득하는 명령의 경우, (반복 실행 카운터값 CR) < (반복 실행 지정 레지스터값 NR-1)이면 자신의 PE가 갖는 레지스터를 참조하는 것으로 되어, 카운터값 조정은 행하지 않는다. (반복 실행 카운터값 CR) = (반복 실행 지정 레지스터값 NR-1)이면, 우측 인접 PE가 갖는 좌단의 화소를 유지하고 있는 레지스터를 참조하는 것으로 되어, 이 경우에는 입력된 반복 실행 카운터값 CR을 0으로 조정(변환)한다(스텝 B4).
연산 코드가 좌측 인접 화소값을 취득하는 명령의 경우, (반복 실행 카운터값CR) > 0이면 자신의 PE가 갖는 레지스터를 참조하는 것으로 되기 때문에 카운터값 조정은 행하지 않는다. (반복 실행 카운터값 CR) = 0인 경우에는, 좌측 인접 PE가 갖는 레지스터를 참조하는 것으로 되지만, 좌측 인접 PE가 유지하고 있는 화소 중 우단으로 되는 레지스터값을 참조하는 것으로 되기 때문에, 입력된 반복 실행 카운터값 CR을 (반복 실행 지정 레지스터값 NR-1)로 조정(변환)한다(스텝B5).
그 후, 반복 실행 지정 레지스터(225)의 값 NR과, 필요에 따라서 조정된 반복 실행 카운터(224)의 값 CR을 키로서 오프셋 산출 테이블 221.1을 참조하여, 피연산자의 오프셋값을 결정한다(스텝 B6). 입력된 레지스터 번호에 오프셋값을 가산한 결과를 피연산자 변환 결과로서 출력한다(스텝 B7).
2.2) 메모리 어드레스 변환
도 5는 본실시 형태에 따른 병렬 화상 처리 시스템의 메모리 어드레스 변환 동작을 나타내는 플로우차트이다. 메모리 어드레스 변환부(222)는, 입력된 연산 코드가 메모리 어드레스 변환이 대상으로 되는 메모리 판독 명령/메모리 기입 명령 등인지를 판단한다(스텝 C1).
입력 연산 코드가 변환 대상 명령인 경우에는(스텝 C1의 '예'), 처리 대상 화상 높이 레지스터(226)의 값 NH에 반복 실행 카운터(224)의 값 CR을 곱한 값을 메모리 어드레스의 오프셋값으로서 산출한다(스텝 C2). 그리고,입력 메모리 어드레스에 산출한 오프셋값을 더한 값을 변환된 메모리 어드레스로서 출력한다(스텝 C3). 입력 연산 코드가 변환 대상 명령이 아닌 경우에는(스텝 C1의 '아니오'), 변환을 행하지 않고 그대로의 어드레스를 출력한다.
2.3) 연산 코드 변환
도 6은 본 실시 형태에 따른 병렬 화상 처리 시스템의 연산 코드 변환 동작을 나타내는 플로우차트이다. 연산 코드 변환부(223)는, 명령 페치/디코드부(21)로부터 입력된 연산 코드가 변환 대상으로 되는 좌우 인접 화소값의 취득 명령인지를 판단한다(스텝 D1).
입력 연산 코드가 좌우 인접 화소값의 취득 명령인 경우에는(스텝 D1 "예"), 연산 코드가 우측 인접 화소값 취득 명령인지, 좌측 인접 화소 취득 명령인지에 의해 각각 이하의 동작을 행한다(스텝 D2).
연산 코드가 우측 인접 화소값을 취득하는 명령의 경우, 반복 실행 카운터값 CR < (반복 실행 지정 레지스터값 NR-1)이면, 자신의 PE가 갖는 레지스터를 참조하기 때문에, 동일 PE 내에서의 레지스터간 이동 명령을 변환된 연산 코드로서 출력한다. 반복 실행 카운터값 CR = (반복 실행 지정 레지스터값 NR-1)이면 우측 인접 PE가 갖는 좌단의 화소를 유지하고 있는 레지스터를 참조하기 때문에, 입력 연산 코드인 우측 인접 PE의 레지스터값을 전송하는 명령을 그대로 출력한다(스텝 D3).
연산 코드가 좌측 인접 화소값을 취득하는 명령의 경우, 반복 실행 카운터값 CR > 0이면 자신의 PE가 갖는 레지스터를 참조하기 때문에, 동일 PE 내에서의 레지스터간 이동 명령을 변환된 연산 코드로서 출력한다. 반복 실행 카운터값 CR=0인 경우에는, 좌측 인접 PE가 갖는 레지스터를 참조하기 때문에, 입력 연산 코드인 좌측 인접 PE의 레지스터값을 전송하는 명령을 그대로 출력한다(스텝 D4).
입력 연산 코드가 좌우 인접 화소값의 취득 명령이 아닌 경우에는(스텝 D1의 '아니오'), 연산 코드 변환은 행하지 않고, 그대로의 연산 코드를 명령 페치/디코드부(21)에 출력한다.
3. 효과
전술한 바와 같이, 본 실시 형태에 따르면, 프로그램 메모리(3)로부터 판독된 프로그램 코드의 1 명령에 대하여 명령 페치/디코드부(21)가 해석·실행을 행할 때, 반복 실행부(22)에 의해 복수 명령에 상당하는 PE 어레이 제어를 행한다. 따라서,각 PE에 할당된 복수의 화소에 대한 처리를 1 명령으로 기술할 수 있어, 프로그램 코드량을 삭감할 수 있다.
또한,반복 실행부(22) 내에 연산 코드 변환부(223)를 구비함으로써, 인접하 는 좌우 화소값의 교환을 필요로 하는 처리에서,1개의 PE에 복수 화소를 할당하였을 때에 필요해지는 인접 PE간에서의 전송 동작과, 자신의 PE 내에 유지하고 있는 화소값을 이용한 동작 등의 서로 다른 명령이 필요해지는 동작을 1 명령으로 일괄하여 기술할 수 있다. 이것에 의해, 프로그램 코드량을 더욱 삭감할 수 있으며, 또한,PE수가 서로 다른 SIMD 병렬 화상 처리 시스템 상에서의 화상 처리를 프로그램의 변경을 행하지 않고 실현하는 것이 용이해진다.
다음으로,본 발명의 일 실시예에 따른 병렬 화상 처리 시스템의 동작에 대하여 설명한다. 여기에서는, 일례로서, 폭 256화소×높이 256화소의 처리 대상 화상에 대하여, 그 폭방향 화소수의 절반에 해당하는 128개의 PE가 1차원으로 배열된 PE어레이(1)를 갖는 병렬 화상 시스템을 이용하는 것으로 한다.
도 7은 본 발명의 일 실시예에 따른 병렬 화상 처리 시스템을 동작시키는 프로그램의 일례를 나타내는 도면이다. 이 예에서는, 각 화소에 대하여 우측에 인접하는 화소값과의 차의 절대값을 구하는 처리를 나타내고 있다. 본 실시예에서는, 각 PE는 36개의 레지스터를 갖는 것으로 한다. PE 수가 처리 대상 화상의 폭방향 화소수의 절반수이므로, 각 PE에는 2화소씩의 처리를 할당하게 된다. 이 때문에, 반복 실행 지정 레지스터(225)에는, 프로그램의 실행에 앞서, NR=2를 저장하고, 레지스터군(13)을 R(0)∼R(17)과, R(18)∼R(35)의 2군으로 분할해서 이용한다.
로컬 메모리(11)에는 MEM1번지로부터 처리 대상 화상이 저장되어 있다. 본 실시예에서는 각 PE에 2화소씩을 할당하여 처리를 행하기 때문에, 그들 2화소를 높 이 방향 화소수에 해당하는 256의 오프셋을 갖는 어드레스에 각각 저장한다. PE에 할당된 화상 중,좌측의 화소값이 어드레스 MEM1번지로부터 어드레스 (MEM1+255)번지에 저장되고, 우측의 화소값은 오프셋값 256을 더한 어드레스 (MEM1+256)번지로부터 어드레스 (MEM1+511)번지에 저장된다. 이 때문에, 처리 대상 화상 높이 레지스터(226)에는 처리 대상 화상의 높이 방향 화소수인 256을 저장해 둔다. 처리 결과 화상은 MEM2번지 이후에 저장한다.
이하에, 본 발명의 병렬 화상 처리 시스템의 동작을 도 7에 도시한 프로그램을 일례로서, 도 3의 플로우차트도 참조하면서 설명한다.
우선,명령 페치/디코드부(21)가 프로그램 메모리(3)로부터 1행째의 프로그램 코드(LD MEM1, R(0))을 판독하고, 반복 실행부(22)에 제공한다(도 3의 스텝 A1). 1행째의 프로그램 코드의 동작 내용은, 로컬 메모리(11)의 어드레스MEM1에 저장되어 있는 값을 판독하고, 레지스터 R(0)에 저장하는 것인다. 반복 실행부(22)는, 프로그램 코드의 연산 코드 부분이 메모리 판독 명령(LD)이기 때문에,반복 실행 대상 명령이라고 판단하여 반복 실행 카운터(224)를 0으로 설정한다(스텝 A5).
다음으로,프로그램 코드를 피연산자 변환부(221), 메모리 어드레스 변환부(222), 연산 코드 변환부(223)에 제공한다. 피연산자 변환부(221)는, 반복 실행 지정 레지스터(225) 및 반복 실행 카운터(224)의 값 NR 및 CR을 참조하여, 오프셋 산출 테이블 221.1로부터 오프셋값으로서 0을 얻는다. 이것을 입력된 레지스터 번호 0에 가산한 결과인 0을, 변환된 레지스터 번호로서 명령 페치/디코드부(21)에 제공한다(스텝 A6). 메모리 어드레스 변환부(222)는, 반복 실행 카운터(224)의 값 CR을 참조하고, 이것이 0이기 때문에 변환을 행하지 않고, 메모리 어드레스 MEM1을 명령 페치/디코드부(21)에 제공한다(스텝 A7). 연산 코드 변환부(223)는, 입력 연산 코드가 메모리 판독 명령(LD)이며, 연산 코드 변환의 필요한 좌우 인접 화소값의 취득 명령이 아니기 때문에, 연산 코드 변환을 행하지 않고, 입력 연산 코드를 그대로 명령 페치/디코드부(21)에 제공한다(스텝 A8). 명령 페치/디코드부(21)는, 반복 실행부(22)로부터 입력된 연산 코드, 메모리 어드레스, 피연산자에 기초하여 PE 어레이(1)를 동작시켜서, 로컬 메모리(11)의 어드레스 MEM1의 내용이 레지스터 R(0)에 저장된다(스텝 A9, A10).
계속해서, 반복 실행부(22)는, 반복 실행 카운터(224)의 값 CR을 1만큼 증가시켜서 1로 설정한다(스텝 Al1). 그 후, 반복 실행 카운터(224)의 값 CR=1과 반복 실행 지정 레지스터(225)의 값 NR=2를 비교하고, 이들은 동일값이 아니기 때문에, 필요한 횟수의 반복 실행을 끝내지 않았다고 판단하여 피연산자 변환부(221), 메모리 어드레스 변환부(222), 연산 코드 변환부(223)의 실행으로 되돌아간다(스텝 A12).
피연산자 변환부(221)는, 반복 실행 지정 레지스터(225) 및 반복 실행 카운터(224)의 값 NR 및 CR을 참조하여, 오프셋 산출 테이블 221.1로부터 오프셋값으로서 18을 얻는다. 이것을 입력된 레지스터 번호 0에 가산한 결과인 18을, 변환된 레지스터 번호로서 명령 페치/디코드부(21)에 제공한다(스텝 A6). 메모리 어드레스 변환부(222)는, 반복 실행 카운터(224)의 값 CR이 1이기 때문에,메모리 어드레 스 MEM1에 대하여 오프셋(256)을 더한 어드레스 (MEM1+256)을 명령 페치/디코드부(21)에 제공한다(스텝 A7). 연산 코드 변환부(223)는, 입력 연산 코드가 메모리 판독 명령(LD)이며, 연산 코드 변환이 필요한 좌우 인접 화소값의 취득 명령이 아니기 때문에, 연산 코드 변환을 행하지 않고, 입력 연산 코드를 그대로 명령 페치/디코드부(21)에 제공한다(스텝 A8). 명령 페치/디코드부(21)는, 반복 실행부(22)로부터 입력된 연산 코드, 메모리 어드레스, 피연산자에 기초하여 PE 어레이(1)를 동작시켜서, 로컬 메모리(11)의 어드레스 (MEM1+256)번지의 내용이 레지스터 R(18)에 저장된다(스텝 A9, A10).
반복 실행부(22)는, 반복 실행 카운터(224)의 값 CR을 1만큼 증가시켜서 2로 설정한다(스텝 A11). 그 후, 반복 실행 카운터(224)의 값 CR을 반복 실행 지정 레지스터(225)에 지정된 값 NR과 비교하고, 이것이 동일값이기 때문에, 필요한 반복 실행이 종료하였다고 판단하여 1행째의 프로그램 코드에 대응하는 처리를 종료하고, 다음 명령 처리로 이행한다(스텝 A12).
다음으로,명령 페치/디코드부(21)가 프로그램 메모리(3)로부터 2행째의 프로그램 코드(MVLR(0), R(1))를 판독하고, 반복 실행부(22)에 제공한다(스텝 A1). 2행째의 프로그램 코드의 동작 내용은, 우측 화소에 대응하는 레지스터R(0)의 값을 레지스터 R(1)에 저장하는 것이다. 1개의 PE에 대하여 1화소를 할당한 시스템에서는, 우측 인접 PE의 레지스터 R(0)에 저장된 값을 자신의 PE에 전송하고, 레지스터 R(1)에 저장한다고 하는 동작으로 되지만, 본 실시예에서는 1개의 PE에 대하여 2화소를 할당하고 있기 때문에,우측 화소는 항상 우측 인접 PE가 유지하고 있는 것 이 아니라, PE에 할당된 처리 대상 화소 중,좌측 화소에 대한 우측 화소의 값은 PE 내의 또 다른 레지스터에 저장되어 있는 것으로 된다. 이 때문에, 우측 화소값의 취득 동작은, 처리 대상 화소에 따라서 자신의 PE 내에서의 레지스터값을 판독하거나, 또는 우측 인접 PE의 레지스터 R(0)을 자신의 PE에 전송한다고 하는 2종류의 동작으로 나뉜다. 반복 실행부(22)는, 연산 코드가 우측 인접 화소값의 전송 명령이기 때문에,반복 실행 대상 명령이라고 판단하여 반복 실행 카운터(224)의 값을 0으로 설정한 후, 피연산자 변환부(221), 연산 코드 변환부(223)를 동작시킨다(스텝 A2, A5).
피연산자 변환부(221)는, 프로그램 코드에 지정된 입력원 레지스터, 출력처 레지스터의 각각에 대하여 피연산자 변환 처리를 행한다(스텝 A6). 입력된 연산 코드가 우측 인접 화소값의 취득 명령(MVL)이기 때문에,입력원 레지스터와 출력처 레지스터의 각각에서 서로 다른 피연산자 연산을 행한다. 입력원 레지스터에 대해서는, 반복 실행 지정 레지스터(225) 및 반복 실행 카운터(224)의 값 NR 및 CR을 참조하여, 오프셋 산출 테이블 221.1을 이용하여 오프셋값으로서 18을 얻는다. 이것을 입력된 레지스터 번호 0에 가산한 결과인 18을, 변환된 입력원 레지스터 번호로서 명령 페치/디코드부(21)에 제공한다. 출력처 레지스터에 대해서는, 오프셋 산출 테이블을 참조할 때의 반복 실행 카운터값 CR을 0으로 조정하여 오프셋 산출을 행하여 얻어지는 오프셋값인 "0"을, 입력된 레지스터 번호 1에 가산한 결과인 "1"을, 변환된 출력처 레지스터 번호로서 명령 페치/디코드부(21)에 제공한다.
연산 코드 변환부(223)는, 우측 인접 화소값의 취득 명령(MVL)은 연산 코드 변환의 필요한 명령이라고 판단하고, 반복 실행 카운터(224)의 값 CR이 (반복 실행 지정 레지스터(225)의 값 NR-1)과 동일하지 않기 때문에, 동일 PE 내에서의 레지스터간 이동 명령으로 변환하고, 명령 페치/디코드부(21)에 제공한다(스텝 A8). 명령 페치/디코드부(21)가 PE 어레이(1)를 동작시켜서, 레지스터R(18)의 내용이 레지스터 R(1)에 저장된다(스텝 A9, A10).
반복 실행부(22)는, 반복 실행 카운터(224)의 값 CR을 1만큼 증가시켜서 1로 설정한다(스텝 Al1). 그 후, 반복 실행 카운터(224)의 값 CR=1과 반복 실행 지정 레지스터(225)의 값 NR=2를 비교하고, 이들은 동일값이 아니기 때문에, 필요한 반복 실행을 끝내지 않았다고 판단하여 피연산자 변환부(221), 연산 코드 변환부(223)의 실행으로 되돌아간다(스텝 A12).
피연산자 변환부(221)는, 연산 코드가 우측 인접 화소값의 전송 명령(MVL)이며, 반복 실행 카운터(224)의 값 CR이 (반복 실행 지정 레지스터(225)의 값 NR-1)과 동일하기 때문에, 우측 PE의 레지스터 R(0)의 내용을 전송하는 동작으로 되도록 변환을 행한다. 이 때문에, 입력원 레지스터에 대해서는, 오프셋 산출 테이블 221.1을 참조할 때의 반복 실행 카운터값 CR을 0으로 조정하여 오프셋 산출을 행하여 얻어지는 오프셋값인 0을, 입력된 입력원 레지스터 번호 0에 가산한 결과인 0을, 변환된 입력원 레지스터 번호로서 명령 페치/디코드부(21)에 제공한다. 출력처 레지스터에 대해서는 1행째의 경우와 마찬가지의 변환을 행하고, 반복 실행 지정 레지스터(225) 및 반복 실행 카운터(224)의 값 NR 및 CR에 의해 오프셋 산출 테이블 221.1을 이용하여 얻은 오프셋값 "18"을, 입력된 출력처 레지스터 번호 1에 가산한 결과인 "19"를, 변환된 출력처 레지스터로서 명령 페치/디코드부(21)에 제공한다(스텝 A6).
연산 코드 변환부(223)는, 입력 연산 코드는 연산 코드 변환이 대상으로 되는 명령이지만, 반복 실행 카운터(224)의 값 CR이 (반복 실행 지정 레지스터225의 값 NR-1)과 동일하기 때문에, 변환을 행하지 않고, 명령 페치/디코드부(21)에 제공한다(스텝 A8). 명령 페치/디코드부(21)가 PE 어레이(1)를 동작시켜서, 우측 PE의 레지스터 R(0)의 내용이 레지스터 R(19)에 저장된다(스텝 A9, A10).
반복 실행부(22)는, 반복 실행 카운터(224)의 값 CR을 1만큼 증가시켜서 2로 설정한다(스텝 Al1). 이 값은 반복 실행 지정 레지스터(225)에 지정된 값NR과 동일하기 때문에, 필요한 반복 실행이 종료하였다고 판단하여, 2행째의 프로그램 코드에 대응하는 처리를 종료하고, 다음 명령 처리로 이행한다(스텝 A12).
명령 페치/디코드부(21)가 프로그램 메모리(3)로부터 3행째의 프로그램 코드(ABSR(0), R(1), R(2))를 판독하여, 반복 실행부(22)에 제공한다. 3행째의 프로그램 코드의 동작 내용은, 레지스터 R(0)과 레지스터 R(1)의 차의 절대값을 산출하고, 연산 결과를 레지스터 R(2)에 저장하는 것이다. 반복 실행부(22)는, 입력원 지정, 출력처 지정 각각의 피연산자에 대하여 1행째의 경우와 마찬가지의 변환을 행하여 반복 동작하고, 명령 페치/디코드부(21)가 PE 어레이(1)를 동작시킨 결과, 레지스터 R(0)과 레지스터 R(1)의 차의 절대값이 레지스터 R(2)에, 레지스터 R(18)와 레지스터 R(19)의 차의 절대값이 레지스터 R(20)에 저장되고, 다음의 명령 처리로 이행한다.
명령 페치/디코드부(21)가 4행째의 프로그램 코드(ST MEM2, R(2))를 판독하여, 반복 실행부(22)에 제공한다. 4행째의 프로그램 코드의 동작 내용은, 레지스터 R(2)에 저장되어 있는 값을 판독하고, 로컬 메모리(11)의 어드레스 MEM2에 기입하는 것이다. 반복 실행부(22)에서 1행째의 경우와 마찬가지의 메모리 어드레스, 피연산자의 변환이 행해지고, 명령 페치/디코드부(21)가 PE 어레이(1)를 동작시켜서, 레지스터 R(2)의 값이 로컬 메모리(11)의 어드레스 MEM2 번지에, 레지스터 R(20)의 값이 로컬 메모리(11)의 어드레스 (MEM2+256) 번지에 저장된다.
이와 같이, 본 실시예에서는, 프로그램 메모리(3)로부터 판독되는 프로그램 코드의 1 명령에 대하여, 반복 실행부(22)에 의해 2 명령에 상당하는 PE 어레이 제어가 행해지기 때문에, 프로그램 코드량을 삭감할 수 있다. 또한,연산 코드 변환부(223)에 의해 반복 실행시의 일부 사이클에서 다른 명령을 실행할 수 있기 때문에, 동일 명령의 반복 실행에서는 처리할 수 없는 인접 화소와의 교환 처리에서도 자동적인 반복 실행에 의한 동작이 가능해져서,프로그램 코드량을 더욱 삭감할 수 있다.
또한,본 실시예에서는 처리 대상 화상의 폭방향 화소수와 PE수의 비가 2:1로 되는 예이었지만, 이 비에 한정되는 것이 아니라, 3:1, 4:1, …, N:1로, 처리 대상 화상의 폭방향 화소수가 시스템이 갖는 PE수보다 많은 경우에 적용이 가능하다.
본 발명에 의하면, 비디오 화상, 센서 화상 등을 입력으로 하는 화상 처리 장치, 화상 검사 장치, 화상 인식 장치 등의 용도에 적용할 수 있다.
도 1은 본 발명의 일 실시 형태에 따른 병렬 화상 처리 시스템의 기능적 구성을 나타내는 블록도.
도 2는 본 실시 형태에 따른 병렬 화상 처리 시스템에서의 피연산자 변환부의 구성을 기능적으로 나타내는 블록도.
도 3은 본실시 형태에 따른 병렬 화상 처리 시스템의 전체적 동작을 나타내는 플로우차트.
도 4는 본 실시 형태에 따른 병렬 화상 처리 시스템의 피연산자 변환 동작을 나타내는 플로우차트.
도 5는 본 실시 형태에 따른 병렬 화상 처리 시스템의 메모리 어드레스 변환 동작을 나타내는 플로우차트.
도 6은 본 실시 형태에 따른 병렬 화상 처리 시스템의 연산 코드 변환 동작을 나타내는 플로우차트.
도 7은 본 발명의 일 실시예에 의한 병렬 화상 처리 시스템을 동작시키는 프로그램의 일례를 나타내는 도면.
<도면의 주요 부분에 대한 부호의 설명>
1: PE 어레이
2: 컨트롤러
3: 프로그램 메모리
10: PE
11: 로컬 메모리
12: 연산부
13: 레지스터
21: 명령 페치/디코드부
22: 반복 명령 실행부
221: 피연산자 변환부
222: 메모리 어드레스 변환부
223: 연산 코드 변환부
224: 반복 실행 카운터
225: 반복 실행 지정 레지스터
226: 처리 대상 화상 높이 레지스터

Claims (11)

  1. 처리 대상 데이터수보다 적은 개수의 요소 프로세서를 갖고, 각 요소 프로세서가 복수개의 처리 대상 데이터를 처리하는 병렬 화상 처리 시스템의 제어 방법으로서,
    상기 요소 프로세서에 할당된 처리 대상 데이터수에 따라서 명령을 자동적으로 반복 실행하는 단계,
    소정 명령을 반복 실행할 때, 반복중인 각각의 실행시에 처리하는 데이터에 따라서 연산 코드를 치환하는 단계, 및
    상기 치환된 연산 코드에 의해 상기 요소 프로세서를 제어하는
    것을 특징으로 하는 병렬 화상 처리 시스템의 제어 방법.
  2. 제1항에 있어서,
    상기 처리 데이터로서 복수의 화소를 처리할 때,
    상기 요소 프로세서에 할당한 화소수에 따라서 명령을 자동적으로 반복 실행하고,
    인접 화소의 화소값 취득 명령을 반복 실행할 때, 처리하는 화소의 위치에 따라서 연산 코드를 인접 요소 프로세서로부터의 화소값 전송 명령과 자신의 요소 프로세서 상의 화소값 취득 명령의 조합으로 치환하며,
    상기 치환된 연산 코드에 의해 상기 요소 프로세서를 제어하는
    병렬 화상 처리 시스템의 제어 방법.
  3. 제2항에 있어서,
    각 요소 프로세서에 할당한 화소수에 따라서 레지스터군을 분할하여 이용하고, 반복 실행시에 이용하는 레지스터군을 절환하도록 피연산자를 재기입하고,
    메모리 액세스 명령의 반복 실행시에 상기 요소 프로세서에 할당한 화소수에 대응하는 오프셋값을 어드레스에 가산하는 병렬 화상 처리 시스템의 제어 방법.
  4. 처리 대상 데이터수보다 적은 개수의 요소 프로세서를 갖고,각 요소 프로세서가 복수개의 처리 대상 데이터를 처리하는 병렬 화상 처리 시스템의 제어 장치로서,
    상기 요소 프로세서에 할당한 처리 대상 데이터수에 따라서 명령을 자동적으로 반복 실행하는 반복 실행 수단을 갖고,
    상기 반복 실행 수단은, 소정 명령을 반복 실행할 때, 반복중인 각각의 실행시에 처리하는 데이터에 따라서 연산 코드를 치환하는 연산 코드 변환 수단을 가지며,상기 치환된 연산 코드에 의해 상기 요소 프로세서를 제어하는
    병렬 화상 처리 시스템의 제어 장치.
  5. 제4항에 있어서,
    상기 처리 데이터로서 복수의 화소를 처리할 때,
    상기 반복 실행 수단은, 상기 요소 프로세서에 할당한 화소수에 따라서 명령을 자동적으로 반복 실행하고,
    상기 반복 실행 수단은, 인접 화소의 화소값 취득 명령을 반복 실행할 때, 처리하는 화소의 위치에 따라서 연산 코드를 인접 요소 프로세서로부터의 화소값 전송 명령과 자신의 요소 프로세서 상의 화소값 취득 명령의 조합으로 치환하는 연산 코드 변환 수단을 가지며,상기 치환된 연산 코드에 의해 상기 요소 프로세서를 제어하는 병렬 화상 처리 시스템의 제어 장치.
  6. 제5항에 있어서,
    상기 요소 프로세서는 복수개의 화소를 처리하는 1차원 프로세서 어레이 구조를 포함하며,
    상기 1차원 프로세서 어레이 구조는 1차원 SIMD(Single Instruction Multiple Data) 프로세서 어레이 구조인 병렬 화상 처리 시스템의 제어 장치.
  7. 제6항에 있어서,
    상기 반복 실행 수단은,
    각 요소 프로세서에 할당한 화소수에 따라서 레지스터군을 분할하여 이용하고, 반복 실행시에 이용하는 레지스터군을 절환하도록 피연산자를 재기입하는 피연산자 변환 수단과,
    메모리 액세스 명령의 반복 실행시에 상기 요소 프로세서에 할당한 화소수에 대응하는 오프셋값을 어드레스에 가산하는 메모리 어드레스 변환 수단
    을 더 포함하는 병렬 화상 처리 시스템의 제어 장치.
  8. 처리 대상 데이터수보다 적은 개수의 요소 프로세서를 갖고,각 요소 프로세서가 복수개의 처리 대상 데이터를 처리하는 병렬 화상 처리 시스템으로서,
    상기 요소 프로세서에 할당한 처리 대상 데이터수에 따라서 명령을 자동적으로 반복 실행하는 반복 실행 수단을 갖고,
    상기 반복 실행 수단은, 소정 명령을 반복 실행할 때, 반복중인 각각의 실행시에 처리하는 데이터에 따라서 연산 코드를 치환하는 연산 코드 변환 수단을 가지며,상기 치환된 연산 코드에 의해 상기 요소 프로세서를 제어하는 것을 특징으로 하는 병렬 화상 처리 시스템.
  9. 제8항에 있어서,
    상기 처리 데이터로서 복수의 화소를 처리할 때,
    상기 반복 실행 수단은, 상기 요소 프로세서에 할당한 화소수에 따라서 명령을 자동적으로 반복 실행하고,
    상기 반복 실행 수단은, 인접 화소의 화소값 취득 명령을 반복 실행할 때, 처리하는 화소의 위치에 따라서 연산 코드를 인접 요소 프로세서로부터의 화소값 전송 명령과 자신의 요소 프로세서 상의 화소값 취득 명령의 조합으로 치환하는 연산 코드 변환 수단을 가지며,상기 치환된 연산 코드에 의해 상기 요소 프로세서를 제어하는 병렬 화상 처리 시스템.
  10. 처리 대상 데이터수보다 적은 개수의 요소 프로세서를 갖고,각 요소 프로세서가 복수개의 처리 대상 데이터를 처리하는 병렬 화상 처리 시스템을 구성하는 컴퓨터에게,
    상기 요소 프로세서에 할당한 처리 대상 데이터수에 따라서 명령을 자동적으로 반복 실행하는 기능과,
    상기 반복 실행 스텝에서 소정 명령을 반복 실행할 때, 반복중인 각각의 실행시에 처리하는 데이터에 따라서 연산 코드를 치환하는 기능과,
    상기 치환된 연산 코드에 의해 상기 요소 프로세서를 제어하는 기능
    을 실행시키는 프로그램.
  11. 제10항에 있어서,
    상기 컴퓨터에게, 상기 처리 데이터로서 복수의 화소를 처리시킬 때,
    상기 요소 프로세서에 할당한 화소수에 따라서 명령을 자동적으로 반복 실행하는 기능과,
    상기 반복 실행 스텝에서 인접 화소의 화소값 취득 명령을 반복 실행할 때, 처리하는 화소의 위치에 따라서 연산 코드를 인접 요소 프로세서로부터의 화소값 전송 명령과 자신의 요소 프로세서 상의 화소값 취득 명령의 조합으로 치환하는 기능과,
    상기 치환된 연산 코드에 의해 상기 요소 프로세서를 제어하는 기능
    을 실행시키는 프로그램.
KR1020087023995A 2006-03-30 2006-12-05 병렬 화상 처리 시스템과 병렬 화상 처리 시스템의 제어 방법 및 그 장치 KR20080100380A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2006092831 2006-03-30
JPJP-P-2006-00092831 2006-03-30

Publications (1)

Publication Number Publication Date
KR20080100380A true KR20080100380A (ko) 2008-11-17

Family

ID=38580862

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087023995A KR20080100380A (ko) 2006-03-30 2006-12-05 병렬 화상 처리 시스템과 병렬 화상 처리 시스템의 제어 방법 및 그 장치

Country Status (6)

Country Link
US (1) US8106912B2 (ko)
EP (1) EP2000973B1 (ko)
JP (1) JP5077579B2 (ko)
KR (1) KR20080100380A (ko)
CN (1) CN101416216B (ko)
WO (1) WO2007116560A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2464292A (en) * 2008-10-08 2010-04-14 Advanced Risc Mach Ltd SIMD processor circuit for performing iterative SIMD multiply-accumulate operations
JP4901891B2 (ja) * 2008-11-05 2012-03-21 株式会社東芝 画像処理プロセッサ
US10733478B2 (en) * 2016-08-31 2020-08-04 Facebook, Inc. Systems and methods for processing media content that depict objects
CN110728364A (zh) * 2018-07-17 2020-01-24 上海寒武纪信息科技有限公司 一种运算装置和运算方法
US11182160B1 (en) * 2020-11-24 2021-11-23 Nxp Usa, Inc. Generating source and destination addresses for repeated accelerator instruction

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04291659A (ja) * 1991-03-20 1992-10-15 Hitachi Ltd 並列コンピュータシステムおよびその動作方法
JP3223549B2 (ja) * 1991-12-24 2001-10-29 ソニー株式会社 Simd型並列演算装置
JP2839026B1 (ja) 1997-06-25 1998-12-16 日本電気株式会社 並列画像処理装置
US6741294B2 (en) * 1997-12-08 2004-05-25 Sony Corporation Digital signal processor and digital signal processing method
JP2002532810A (ja) * 1998-12-15 2002-10-02 インテンシス・コーポレーション 画像処理機能および制御のためのプログラム式並列コンピュータ
US7506136B2 (en) * 1999-04-09 2009-03-17 Clearspeed Technology Plc Parallel data processing apparatus
JP2002007359A (ja) 2000-06-21 2002-01-11 Sony Corp Simd制御並列処理方法および装置
AU2002233500A1 (en) * 2001-02-14 2002-08-28 Clearspeed Technology Limited An interconnection system
JP4143302B2 (ja) * 2002-01-15 2008-09-03 キヤノン株式会社 画像処理装置、画像処理方法、制御プログラム及び記録媒体
JP4136432B2 (ja) * 2002-04-15 2008-08-20 松下電器産業株式会社 図形描画装置
US20050188087A1 (en) * 2002-05-28 2005-08-25 Dai Nippon Printing Co., Ltd. Parallel processing system
JP2004362086A (ja) * 2003-06-03 2004-12-24 Matsushita Electric Ind Co Ltd 情報処理装置および機械語プログラム変換装置
WO2005069215A1 (en) 2004-01-14 2005-07-28 Koninklijke Philips Electronics N.V. Processor architecture
WO2005109221A2 (en) * 2004-05-03 2005-11-17 Silicon Optix A bit serial processing element for a simd array processor
JP4478050B2 (ja) * 2005-03-18 2010-06-09 株式会社リコー Simd型マイクロプロセッサ及びデータ処理方法

Also Published As

Publication number Publication date
EP2000973A9 (en) 2009-03-04
CN101416216B (zh) 2012-11-21
CN101416216A (zh) 2009-04-22
JP5077579B2 (ja) 2012-11-21
EP2000973A4 (en) 2012-01-04
EP2000973A2 (en) 2008-12-10
US20090106528A1 (en) 2009-04-23
JPWO2007116560A1 (ja) 2009-08-20
EP2000973B1 (en) 2013-05-01
US8106912B2 (en) 2012-01-31
WO2007116560A1 (ja) 2007-10-18

Similar Documents

Publication Publication Date Title
EP1028382B1 (en) Microcomputer
Shin et al. Superword-level parallelism in the presence of control flow
US6762764B2 (en) System and method for processing image, and compiler for use in this system
JP2021108102A (ja) 行列演算アクセラレータの命令のための装置、方法、およびシステム
KR20080100380A (ko) 병렬 화상 처리 시스템과 병렬 화상 처리 시스템의 제어 방법 및 그 장치
JP2020109604A (ja) ロード/ストア命令
JP2003501773A (ja) 算術論理演算装置およびスタックを備えたデータプロセッサ
US10754652B2 (en) Processor and control method of processor for address generating and address displacement
JP7154788B2 (ja) 半導体装置
WO2010113340A1 (en) Single instruction multiple data (simd) processor having a plurality of processing elements interconnected by a ring bus
JPH04293150A (ja) コンパイル方法
JP4442905B2 (ja) 画像データの処理方法
JP2001216275A (ja) 画像処理装置および画像処理方法
JP3971559B2 (ja) 並列プロセッサ及びそれを用いた画像処理装置
JP2004334297A (ja) 並列演算処理装置及び並列演算処理方法
JP4294190B2 (ja) 並列プロセッサ及びそれを用いた画像処理装置
JP2772100B2 (ja) 並列命令フェッチ機構
Kusswurm Introduction to X86-AVX SIMD Programming
JP3547316B2 (ja) プロセッサ
Formella Some mpeg decoding functions on spert: An example for assembly programmers
Fuertler et al. Novel development tool for software pipeline optimization for VLIW-DSPs used in real-time image processing
Meenderinck et al. The SARC Media Accelerator
JP2006251978A (ja) ベクトル演算装置および方法
JP2004246609A (ja) マイクロプロセッサ
JP2001092663A (ja) データ処理装置

Legal Events

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