KR100280854B1 - 데이타 처리 장치 및 데이타 처리 방법 - Google Patents

데이타 처리 장치 및 데이타 처리 방법 Download PDF

Info

Publication number
KR100280854B1
KR100280854B1 KR1019970005448A KR19970005448A KR100280854B1 KR 100280854 B1 KR100280854 B1 KR 100280854B1 KR 1019970005448 A KR1019970005448 A KR 1019970005448A KR 19970005448 A KR19970005448 A KR 19970005448A KR 100280854 B1 KR100280854 B1 KR 100280854B1
Authority
KR
South Korea
Prior art keywords
output
input
processor
data processing
data
Prior art date
Application number
KR1019970005448A
Other languages
English (en)
Other versions
KR970062893A (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 마찌다 가쯔히꼬
Publication of KR970062893A publication Critical patent/KR970062893A/ko
Application granted granted Critical
Publication of KR100280854B1 publication Critical patent/KR100280854B1/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/22Microcontrol or microprogram arrangements
    • G06F9/28Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
    • 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/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • G06F15/8015One dimensional arrays, e.g. rings, linear arrays, buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • 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
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17337Direct connection machines, e.g. completely connected computers, point to point communication networks

Landscapes

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

Abstract

본 발명은 다수의 링형 상호 접속된 프로세서를 포함하여 다수의 행렬과 신경망을 고속 연산을 실행할 수 있는 병렬 데이타 처리 장치를 제공한다. 본 발명에 따른 데이타 처리 장치는 각 프로세서가 제1 데이타 유지 수단과 저장 수단을 포함하되, 저장 수단은 제2 데이타 유지 수단과 결합 수단을 포함하는 다수의 상호 접속된 프로세서를 포함한다. 각 프로세서의 결합 수단은 입력, 출력, 및 상태 변수를 갖고 있다. 결합 수단의 입력과 출력 접속은 상태 변수의 상태에 따라 변한다. 프로세서의 결합 수단의 입력은 제1 인접 프로세서의 제2 출력에 접속되고, 출력은 그 프로세서의 제2 데이타 유지 수단의 입력에 접속되고, 입력은 제2 인접 프로세서의 제1 데이타 유지 수단의 출력에 접속되고, 그리고 출력은 그 프로세서의 결합 수단의 입력에 접속된다. 프로세서들은 서로 접속되어 데이타 세트가 프로세서들 간에 동시에 전달되는 링회로를 형성한다.

Description

데이타 처리 장치 및 데이타 처리 방법
제1도는 종래 기술에 따른 SIMD형 병렬 데이타 처리 장치의 예시도.
제2도는 종래 기술에 따른 프로세서를 내장한 기능 메모리의 예시도.
제3도는 종래 기술에 따른 기능 메모리에 내장된 프로세서의 예시적 구조도.
제4도는 링형 시프트 레지스터를 구비한 종래의 병렬 데이타 처리 장치의 원리 구성도.
제5도는 본 발명에 따른 데이타 처리 장치의 일 실시예를 도시한 도면.
제6(a)도 및 제6(b)도는 제5도에 도시된 결합 수단의 작동 상태를 도시한 것으로서, 상태 변수에 따른 상태 A와 상태 B를 나타낸 도면.
제7도는 제5도에 도시된 결합 수단의 예시도.
제8도는 제5도에 도시된 결합 수단의 다른 예시도.
제9도는 본 발명에 따른 데이타 처리 장치의 다른 실시예를 도시한 도면.
제10도는 본 발명에 따른 데이타 처리 장치의 또 다른 실시예를 도시한 도면.
제11도는 본 발명에 따른 데이타 처리 장치의 또 다른 실시예를 도시한 도면.
제12도는 본 발명에 따른 데이타 처리 장치의 또 다른 실시예를 도시한 도면.
제13도는 제12도에 도시된 결합 수단의 예시도.
제14도는 제12도에 도시된 결합 수단의 다른 예시도.
제15도는 본 발명에 따른 데이타 처리 장치의 또 다른 실시예를 도시한 도면.
제16도는 본 발명에 따른 데이타 처리 장치의 또 다른 실시예를 도시한 도면.
제17도는 본 발명에 따른 데이타 처리 장치의 또 다른 실시예를 도시한 도면.
제19도는 본 발명에 따른 데이타 처리 장치의 또 다른 실시예를 도시한 도면.
제20도는 본 발명에 따른 데이타 처리 장치의 또 다른 실시예를 도시한 도면.
제21도는 본 발명에 따른 데이타 처리 장치의 또 다른 실시예를 도시한 도면.
제22도는 프로세서를 내장하고, 본 발명의 데이타 처리 장치가 적용된 기능 메모리의 예시도.
제23도는 제14도에 도시된 기능 메모리의 프로세서에 사용된 결합 수단의 예시도.
제24도는 본 발명에 따른 신경망에 의한 동작예를 나타낸 플로우 챠트.
제25(a), 25(b), 및 25(c)도는 구조가 서로 다른 신경 망들의 예시도.
제26도는 본 발명에 따른 데이타 처리 장치를 이용한 제25(a)도의 신경망의 연산 방법을 설명하기 위한 도면.
제27도는 본 발명에 따른 데이타 처리 장치를 이용한 제25(c)도의 신경망의 연산 방법을 설명하기 위한 도면.
제28도는 본 발명에 따른 데이타 처리 장치를 이용한 제25(b)도의 신경망의 연산 방법을 설명하기 위한 도면.
제29도는 본 발명에 따른 2개 행렬의 곱을 연산하기 위한 예시적인 데이타 처리 방법의 플로우 챠트.
제30도는 본 발명에 따른 데이타 처리 장치를 이용한 2개 행렬의 곱을 연산하는 방법을 설명하기 위한 도면.
* 도면의 주요부분에 대한 부호의 설명
1001 : 프로세서 1002 : 제1 데이타 유지 수단
1003 : 제2 데이타 유지 수단 1004 : 결합 수단
1011 : 제1 입력 1012 : 제2 입력
1013 : 제1 출력 1014 : 제2 출력
[발명의 목적]
[발명이 속하는 기술 분야 및 그 분야의 종래 기술]
본 발명은 데이타 처리 장치와 데이타 처리 방법에 관한 것으로, 특히 행렬 또는 벡터의 곱이나 디지탈 신경망의 연산 등과 같은 많은 곱-합(product-sum)의 고속 데이타 처리를 수행할 수 있는 데이타 처리 장치와 이 데이타 처리 장치를 이용한 곱-합 연산 방법에 관한 것이다.
수많은 데이타를 고속으로 처리하는데 단일 명령 다중 데이타(single instruction multi-data ; SIMD) 병렬 데이타 처리 장치가 이용되어 왔다. 이 데이타 처리 장치는 다수의 로컬 메모리, 다수의 프로세서, 제어 장치, 글로벌 버스, 프로세서간 버스, 및 로컬 메모리 각각을 대응하는 프로세서에 접속시키는 로컬 버스들로 구성된다. 각 프로세서와 각 로컬 메모리는 로컬 버스를 통해 서로 접속된다. 각 프로세서는 로컬 메모리-프로세서 버스를 통해 로컬 메모리로부터 연산용 데이타를 독출하고 또 이 로컬 메모리 내로 데이타를 기입한다. 각 프로세서는 글로벌 버스를 통해 제어 장치에 접속되어 이 제어 장치로부터 실행될 명령과 로컬 메모리에 저장될 데이타를 수신한다. 프로세서에 의해 로컬 메모리로부터 독출된 데이타도 글로벌 버스를 통해 제어 장치에 전송된다. 인접한 프로세서들은 각자의 프로세서간 버스에 의해 차례로 상호 접속된다. 2개의 서로 이웃한 프로세서는 이들 사이에서 프로세서간 버스를 통해 데이타를 서로 교환할 수 있다.
한편, IC 메모리는 일반적으로 행렬 구조로 되어 있다. 행렬의 각 행 또는 열에 간단한 프로세서를 내장시킨 기능 메모리는 이러한 IC 메모리의 일종이다. 이 기능 메모리는 메모리부, 프로세서부, 행 디코더 구동부, 열 디코더 구동부, 및 제어회로부로 구성된다. 기능 메모리는 통상의 메모리로 사용될 수 있고 그 외에도 집적 회로에 내장된 SIMD형 프로세서를 사용하여 메모리 행렬 내의 행 또는 열 마다 데이타를 병렬로 처리하는데도 적용된다. 각각의 내장 프로세서는 그 이웃한 프로세서에 데이타를 전송하거나 이 프로세서로부터 데이타를 수신 받을 수 있다.
기능 메모리의 프로세서부는 「“Computational Ram : A Memory-SIMD Hybrid and its Application to DSP” CICC ’92」에 기재되어 있다. 이 기능 메모리는 X-레지스터, Y-레지스터, 기입 허가 레지스터, 1비트 ALU(arithmetic and logic unit), 및 글로벌 명령 라인으로 구성된다. X-레지스터와 Y-레지스터는 1비트 범용 레지스터이다. 각 프로세서는 우측 인접 프로세서의 X-레지스트와 좌측 인접 프로세서의 Y-레지스터에 데이타를 기입할 수 있다. 1비트 구성의 기입 허가 레지스터는 디지트 “1”이 표시될 때에 프로세서가 메모리에 결과를 기입할 수 있도록 해 준다.
링형상 상호 접속 트레이부를 가진 병렬 데이타 처리 장치는 일본 공개 특허 공보 제3-105584호에 기재되어 있다.
이 데이타 처리 장치는 다수의 데이타 처리 장치, 다수의 트레이, 다수의 메모리, 및 바이패스 수단으로 구성된다. 트레이들은 서로 연결되어 루프를 형성한다. 각 데이타 처리 장치에는 하나의 트레이와 하나의 메모리가 구비된다. 루프에 포함된 트레이의 수는 이웃하는 트레이들 사이의 접속 라인에 데이타 바이패스 선택기회로를 설치함으로써 자유롭게 조정될 수 있다.
이 병렬 데이타 처리 장치에서는 n×m차 행렬 요소와 n-차 벡터의 곱이 다음과 같이 연산된다.
행렬의 i번째 행의 요소가 i번째 메모리(1≤i≤m)에 입력되고, j번째 벡터 요소가 j번째 트레이(1≤j≤m)에 입력된다. 각 데이타 처리 장치에서는 메모리의 k번째 행의 요소와 트레이에 내장된 벡터 요소의 곱의 합을 결정하기 위하여 k번째 데이타 처리가 실행된다. 그 다음, 트레이 내용은 인접한 처리 장치로 전송된다. 상술한 과정은 연속한 프로세서들에 의해 n회 반복되어 n×m차 행렬과 n차 벡터의 곱을 얻게 된다.
즉, 이 병렬 데이타 처리 장치는 임의 크기의 행렬이나 신경망 상에서 병렬 동작을 효율적으로 실행할 수 있다.
상술한 종래의 병렬 데이타 처리 장치에서, 각 처리 장치는 양측에 있는 2개의 이웃한 처리 장치 각각으로부터 데이타를 수신할 수 있고 또 이 이웃한 처리 장치 각각에 데이타를 전송할 수 있다. 그 결과, 행렬 또는 신경망 상의 병렬 곱-합 동작은 데이타를 분리된 처리 장치들에 전송하기 위한 과정이 더 필요하게 되어 처리 시간의 오버 헤드(overhead)를 생기게 한다.
지금, 처리 장치에 의해 실행될 1회의 처리가 1회의 곱-합 동작의 1싸이클, 데이타를 인접한 프로세서에 전달하는 1싸이클, 및 데이타를 분리된 기존의 프로세서로 전달하는 1싸이클로 이루어져 있다는 조건에서 각 행렬이 n×n 크기인 2개 행렬의 곱을 연산하기 위하여 n개의 프로세서를 가진 SIMD형 병렬 데이타 처리 장치를 적용한다고 가정한다. 이것은 데이타 처리 장치가 곱-합 동작을 n×n 싸이클, 데이타를 인접한 프로세서에 전달하는 것을 n×n 싸이클, 그리고 데이타를 분리된 기존의 프로세서에 전달하는 것을 n×n 싸이클 실행해야 함을 의미한다. 따라서, 총 처리 시간은 3n2싸이클이다. 즉, 처리 시간의 1/3은 오버 헤드 시간이다. 수차원 정도의 행렬이나 신경망의 연산 시에는 오버 헤드는 무시할 수 있을 정도이나 수백 또는 수천 차원의 행렬 또는 신경망의 연산 시에는 분리된 프로세서들 간에 데이타를 전송하는데 오버 헤드가 현저하게 생기게 된다.
종래의 병렬 데이타 처리 장치는 트레이 루프를 갖고 있고, 따라서 데이타를 분리된 프로세서에 전달하는데 아무런 오버 헤드 없이 하나의 행렬 또는 신경망의 곱-합 연산을 실행할 수 있었으나, 2 또는 그 이상의 행렬 또는 신경망에 대해서는 각자의 동작을 실행해야만 하였다.
[발명이 이루고자 하는 기술적 과제]
본 발명의 목적은 종래 기술의 상술한 문제점들이 없이 다수의 행렬과 신경망을 연산할 때 고속으로 병렬 데이타 처리를 실행할 수 있는 병렬 데이타 처리 장치와 이 장치를 이용하여 데이타를 처리하는 방법을 제공하는데 있다.
(1) 본 발명은, 각각의 프로세서가 데이타를 저장하기 위한 제1 데이타 유지 수단과, 데이타를 저장하기 위한 하나 또는 그 이상의 제2 데이타 유지 수단과 결합 수단으로 이루어진 저장 수단을 포함하는 1차원 또는 다차원 상호 접속 프로세서들을 포함하는 데이타 처리 장치에 있어서, 각 프로세서의 상기 결합 수단이 적어도 2개의 입력, 적어도 2개의 출력, 및 입-출력 접속을 설정하기 위한 상태 변수를 갖되 : 상기 결합 수단의 제1 입력은 제1 물리적 또는 논리적 인접 프로세서의 결합 수단의 제2 출력에 접속되고; 상기 결합 수단의 제1 출력은 상기 결합 수단이 존재하는 동일 메모리 수단에 배설된 상기 제2 데이타 유지 수단의 입력에 접속되고; 상기 결합 수단의 제2 입력은 제2 물리적 또는 논리적 인접 프로세서의 결합 수단의 제1 데이타 유지 수단의 출력에 접속되고; 상기 결합 수단의 제2 출력은 제2 물리적 또는 논리적 인접 프로세서의 결합 수단의 상기 제1 데이타 유지 수단의 제1 입력에 접속되고, 그리고 상기 결합 수단의 상기 상태 변수의 값에 따라서 프로세서의 상기 접속 상태가 변화되도록 하여 데이타가 물리적 또는 논리적으로 분리된 프로세서에 전달되도록 하고 또 물리적 또는 논리적으로 연속한 프로세서들 간에 데이타의 회전을 가능하도록 상기 상태 변수의 값을 변경시킴으로써 상기 결합 수단의 상기 입-출력 접속이 변화될 수 있는 것을 특징으로 하는 데이타 처리 장치를 제공한다.
(2) 본 발명은, 상기 (1)에 기재된 데이타 처리 장치에 있어서, 물리적 또는 논리적 단자점에 위치한 상기 프로세서의 상기 제1 데이타 유지 수단의 출력이, 상기 제1 인접 프로세서의 상기 결합 수단의 부존재 때문에, 상기 프로세서가 데이타가 회전될 수 있는 물리적 또는 논리적으로 계속되는 프로세서 그룹 내에 포함되도록 상기 프로세서의 상기 제1 입력에 접속되는 것을 특징으로 하는 데이타 처리 장치를 제공한다.
(3) 본 발명은, 상기 (1) 또는 (2)에 기재된 데이타 처리 장치에 있어서, 상기 결합 수단이, 제1 입력 및 제2 출력들로서, 적어도 2개의 입력과 적어도 2개의 출력을 갖되, 상기 결합 수단의 제1 입력과 제2 출력은 상기 제1 및 제2 인접 프로세서의 상기 제2 출력과 제1 입력 각각에 접속되고, 상기 제1 데이타 유지 수단이 2개의 출력을 갖되, 그 중 제1 출력은 상기 제1 및 제2 인접 프로세서의 상기 결합 수단의 상기 제2 입력 각각에 접속되어 상기 상태 변수의 값에 따라서 상기 프로세서의 접속을 변화시켜서 상기 프로세서가 물리적 또는 논리적으로 분리된 위치에 있는 임의의 프로세서에 2방향으로 데이타를 전달할 수 있도록 하는 것을 특징으로 하는 데이타 처리 장치를 제공한다.
(4) 본 발명은, 각각의 프로세서가 데이타를 저장하기 위한 제1 데이타 유지 수단과, 데이타를 저장하기 위한 하나 또는 그 이상의 제2 데이타 유지 수단과 결합 수단으로 이루어진 저장 수단을 포함하는 1차원 또는 다차원 상호 접속 프로세서들을 포함하는 데이타 처리 장치에 있어서, 각 프로세서의 상기 결합 수단이 적어도 3개의 입력, 적어도 3개의 출력, 및 입-출력 접속을 설정하기 위한 상태 변수를 갖되, 상기 결합 수단의 제2 입력 및 제2 출력은 제1 물리적 또는 논리적 인접 프로세서의 결합 수단의 제1 출력 및 제1 입력 각각에 접속되고; 상기 결합 수단의 제1 입력 및 제1 출력은 제2 물리적 또는 논리적 인접 프로세서의 결합 수단의 제2 출력 및 제2 입력 각각에 접속되고, 상기 결합 수단의 제3 출력은 상기 결합 수단이 존재하는 동일 저장 수단에 배설된 데이타 유지 수단의 입력에 접속되고; 상기 결합 수단의 제3 입력은 상기 제1 데이타 유지 수단의 출력에 접속되고, 그리고 상기 결합 수단의 상기 상태 변수의 값에 따라서 프로세서의 상기 접속 상태가 변화되도록 하여 데이타가 물리적 또는 논리적으로 분리된 프로세서에 전달되도록 하고 또 물리적 또는 논리적으로 연속한 프로세서들 간에 데이타의 회전을 가능하도록 상기 상태 변수의 값을 변경시킴으로써 상기 결합 수단의 상기 입-출력 접속이 변화될 수 있는 것을 특징으로 하는 데이타 처리 장치를 제공한다.
(5) 본 발명은, 각각의 프로세서가 데이타 처리 수단, 메모리 수단, 및 제1 레지스터 수단 및 결합 수단으로 구성된 하나 또는 그 이상의 저장 수단으로 구성된 1차원 또는 다차원 접속 프로세서들을 포함하는 SIMD형 병렬 데이타 처리 장치에 있어서, 상기 메모리 수단의 출력은 상기 데이타 처리 수단의 제1 입력에 접속되고, 상기 제1 레지스터 수단의 출력은 상기 데이타 처리 수단의 제2 입력에 접속되고, 상기 데이타 처리 수단의 제1 출력은 상기 메모리 수단의 입력에 접속되고, 상기 결합 수단의 제1 출력은 상기 결합 수단이 존재하는 동일 저장 수단에 배설된 상기 제1 레지스터 수단의 제1 입력에 접속되고, 상기 결합 수단의 제2 출력은 제2 물리적 또는 논리적 인접 프로세서의 결합 수단의 제1 입력에 접속되고, 상기 데이타 처리 수단의 제2 출력은 제1 물리적 또는 논리적 인접 프로세서의 결합 수단의 제2 입력에 접속되고, 상기 데이타 처리 수단의 제4 출력은 상기 결합 수단의 제2 입력에 접속되고, 그리고 상기 결합 수단의 제3 입력의 값에 따라서 상기 결합 수단의 제1 및 제2 입력과 제1 및 제2 출력의 접속을 변화시켜서 상기 결합 수단의 제3 입력의 값에 따라서 프로세서간 접속 상태를 변화시킴으로써 각 프로세서가 임의의 물리적 또는 논리적으로 분리된 프로세서에 데이타를 전달할 수 있고 또 데이타가 물리적 또는 논리적으로 연속한 프로세서 군 중에서 데이타를 회전시킬 수 있는 것을 특징으로 SIMD형 병렬 데이타 처리 장치를 제공한다.
(6) 본 발명은, 상기 (5)에 기재된 데이타 처리 장치에 있어서, 상기 프로세서가 물리적 또는 논리적 단자점에 위치하고, 상기 프로세서의 결합 수단이 여기에 접속될 수 있는 상기 제1 물리적 또는 논리적 인접 프로세서의 결합 수단이 존재하지 않기 때문에 제2 자유 출력을 갖고, 상기 프로세서가 상기 결합 수단의 제2 출력을 동일 결합 수단의 제1 출력에 접속시킴으로써 물리적 또는 논리적으로 연속한 프로세서군 내에 포함될 수 있고, 이에 따라서 상기 연속한 상호 접속된 프로세서 군에서 데이타가 회전할 수 있는 것을 특징으로 하는 데이타 처리 장치를 제공한다.
(7) 본 발명은, 상기 (5) 또는 (6)에 기재된 데이타 처리 장치에 있어서, 상기 결합 수단이 상기 결합 수단의 제3 입력에 접속된 제2 레지스터 수단을 갖고, 상기 제2 레지스터 수단이 상기 결합 수단의 제3 입력의 값을 유지하고, 상기 결합 수단의 제3 입력의 값을 변화시킴으로써 상기 결합 수단의 제1 및 제2 입력과 제1 및 제2 출력의 접속이 변화되어 상기 결합 수단의 제3 입력의 값에 따라서 프로세서간 접속 상태를 변화시킬 수 있고 이에 따라서 각 프로세서가 임의의 물리적 또는 논리적으로 분리된 프로세서에 데이타를 전달할 수 있고 또 물리적 또는 논리적으로 연속한 프로세서군 중에서 데이타가 회전할 수 있는 것을 특징으로 하는 데이타 처리 장치를 제공한다.
(8) 본 발명은, 상기 (5) 내지 (7) 중 어느 하나에 기재된 데이타 처리 장치에 있어서, 상기 프로세서에서, 상기 데이타 처리 수단의 제3 출력이 상기 제1 레지스터 수단의 제2 입력에 접속되어 상기 데이타 처리 수단이 상기 결합 수단을 통하지 않고서 동일 프로세서의 레지스터 수단에 데이타를 직접 전달할 수 있도록 하는 것을 특징으로 하는 데이타 처리 장치를 제공한다.
(9) 본 발명은, 상기 (5) 내지 (8) 중 어느 하나에 기재된 데이타 처리 장치에 있어서, 상기 프로세서가 상기 메모리 수단의 입력 및 출력 대신에 입-출력 포트를 갖고, 상기 제1 레지스터 수단의 제1 및 제2 입력과 출력 대신에 입-출력 포트를 갖고, 그리고 상기 데이타 처리 수단의 제1 및 제2 입력과 제1, 제2, 및 제3 출력 대신에 입-출력 포트를 갖고, 그리고 상기 결합 수단의 입-출력 포트와 제1 및 제2 입력들 각각이 제1 공용 버스에 접속되어 상기 데이타 처리 수단이 상기 공용 버스를 통해 상기 메모리 수단, 상기 제1 레지스터 수단, 및 상기 결합 수단에 데이타를 전달하고 또 이들 수단으로부터 데이타를 수신할 수 있도록 하는 것을 특징으로 하는 데이타 처리 장치를 제공한다.
(10) 본 발명은, 상기 (5) 내지 (9) 중 어느 하나에 기재된 데이타 처리 장치에 있어서, 다수의 저장 수단을 포함하는 상기 프로세서에서, 상기 데이타 처리 수단의 제4 출력과 상기 결합 수단의 제3 출력이 제2 공용 버스에 접속되어 상기 데이타 처리 수단과 상기 결합 수단 사이의 데이타 전송을 가능하게 하는 것을 특징으로 하는 데이타 처리 장치를 제공한다.
(11) 본 발명은, 상기 (5) 내지 (9) 중 어느 하나에 기재된 데이타 처리 장치를 이용하여 제1층의 m개 노드 Xi(1≤i≤m)와 제2층의 n개 노드 Yj(1≤j≤n)를 결합시키는 신경망의 연산 동작 실행 방법에 있어서, 연속한 상기 수 m과 n중에서 더 큰 쪽 수(이하 P로 표시함)의 프로세서를 이용하여, k번째(1≤k≤P)프로세서의 메모리 수단에 상기 제1층의 노드 Xk의 출력을 저장하되, 해당하는 노드가 없는 경우에는 0을 저장하고, 상기 제1층의 각 노드 Xi(1≤i≤m)를 상기 제2층의 k번째 노드 Yk에 결합시키기 위한 계수 Wik(1≤i≤m)와 Wpk(p는 (i+k-1)을 P로 나눈 나머지임. 단 나머지가 0인 경우에는 P임)를 동시에 프로세서에 의해 억세스될 수 있는 어드레스에 저장하되, 해당하는 계수가 없는 경우에는 0을 저장하고 상기 데이타 처리 수단의 출력을 우측 또는 좌측으로 회전시키기 위하여 상기 결합 수단을 설정함으로써 노드 X의 출력을 우측 또는 좌측으로 회전시키고, 각 프로세서에서 노드 X의 출력과 상기 계수의 곱의 합을 연산하여 노드 Y의 출력을 구하여, 상기 제1층의 m개 노드 Ai(1≤i≤m)를 상기 제2층의 n개 노드 Bj(1≤j≤n)를 결합시키는 신경망에서 노드 Bj(1≤j≤n)의 출력을 구하는 것을 가능하게 하는 신경망의 연산 동작 실행 방법을 제공한다.
(12) 본 발명은, 상기 (5) 내지 (9) 중 어느 하나에 기재된 데이타 처리 장치를 이용하여 n×m의 크기를 가진 행렬 A와 m×1의 크기를 가진 행렬 B와의 곱을 연산하기 위한 방법에 있어서, 연속한 상기 수 m과 1중에서 더 큰 쪽 수(이하 P로 표시함)의 프로세서를 이용하여, k번째(1≤k≤P) 프로세서의 메모리 수단에 상기 행렬 A의 k번째 열 내의 요소 aik를 저장하되, 상기 행렬 A의 해당 요소가 없는 경우에는 0을 저장하고, 동일 행 내의 데이타를 동시에 프로세서에 의해 억세스될 수 있는 어드레스에 저장하고, 상기 행렬 B의 j번째 열 내의 데이타 bij(1≤i≤)와 bpj(p는 (i+k-1)을 P로 나눈 나머지임. 단 나머지가 0인 경우에는 P임)를 동시에 프로세서에 의해 억세스될 수 있는 어드레스에 저장하되, 해당하는 상기 행렬 B의 해당 요소가 없는 경우에는 0을 저장하고, 상기 데이타 처리 수단의 출력을 우측 또는 좌측으로 회전시키기 위하여 상기 결합 수단을 설정함으로써 상기 행렬 A의 데이타의 출력을 우측 또는 좌측으로 회전시키고, 각 프로세서에서 행렬 A의 요소와 행렬 B의 요소의 곱의 합을 연산하여, 크기가 n×m인 행렬과 크기가 m×1인 행렬의 곱을 구하는 것을 가능하게 하는 행렬의 곱 연산 동작 실행 방법을 제공한다.
[발명의 구성 및 작용]
먼저, 본 발명에 대한 참조로서 종래 기술들에 대해서 설명한다.
제1도에 도시된 단일 명령 다중 데이타(SIMD) 병렬 데이타 처리 장치는 수많은 데이타를 고속으로 처리하는데 사용되어 왔다. 제1도에서 데이타 처리 장치는 다수의 로컬 메모리(27001), 다수의 프로세서(27002), 제어 장치(27003), 글로벌 버스(27004), 프로세서간 버스(27007), 및 로컬 메모리 각각을 해당 프로세서에 접속시키기 위한 로컬 버스들(27006)로 구성된다. 각 프로세서와 각 로컬 메모리는 로컬 버스를 통해 서로 접속된다. 각 프로세서는 로컬 메모리-프로세서 버스를 통해 로컬 메모리로부터 연산용 데이타를 독출하고 또 로컬 메모리 내에 데이타를 기입한다. 각 프로세서는 글로벌 버스를 통해 제어 장치에 접속되고, 이 글로벌 버스를 통해 프로세서는 실행될 명령과 로컬 메모리에 저장될 데이타를 제어 장치로부터 수신한다. 프로세서에 의해 로컬 메모리로부터 독출된 데이타도 글로벌 버스를 통해 제어 장치에 전달된다. 인접한 프로세서들은 각자의 프로세서간 버스에 의해 차례로 상호 접속된다. 2개의 인접한 프로세서는 프로세서간 버스를 통해 그들 간에 데이타를 서로 교환할 수 있다.
한편, IC 메모리는 일반적으로 행렬 구조로 되어 있다. 제2도에 도시된 바와 같이 행렬의 각 행 또는 열에 간단한 프로세서를 내장시킨 기능 메모리는 이러한 IC 메모리의 일종이다. 이 기능 메모리는 메모리부(28001), 프로세서부(28002), 행 디코더 구동부(28003), 열 디코더(28004), 및 제어 회로부(28005)로 구성된다. 기능 메모리는 통상의 메모리로 사용될 수 있고 그 외에도 집적 회로에 내장된 SIMD형 프로세서를 사용하여 메모리 행렬 내의 행 또는 열 마다 데이타를 병렬로 처리하는 데도 적용된다. 각각의 내장 프로세서는 그 이웃한 프로세서에 데이타를 전송하거나 이 프로세서로부터 데이타를 수신 받을 수 있다.
제3도는 기능 메모리의 프로세서부가 「“Computational Ram:A Memory-SIMD Hybrid and its Application to DSP” CICC ’92」에 기재되어 있는 것을 도시한 것이다. 이 기능 메모리는 X-레지스터(14001), Y-레지스터(14002), 기입 허가 레지스터(14003), 1비트 ALU(arithmetic and logic unit), 및 글로벌 명령 라인(14005)으로 구성된다. X-레지스터와 Y-레지스터는 1비트 범용 레지스터이다. 각 프로세서는 우측 인접 프로세서의 X-레지스터와 좌측 인접 프로세서의 Y-레지스터에 데이타를 기입할 수 있다. 1비트 구성의 기입 허가 레지스터는 디지트 “1”이 표시될 때에 프로세서가 메모리에 결과를 기입할 수 있도록 해준다.
제4도는 링형상 상호 접속 트레이부를 가진 병렬 데이타 처리 장치의 주 구조를 도시한 것으로, 일본 공개 특허 공보 제3-105584호에 기재되어 있다.
이 데이타 처리 장치는 다수의 데이타 처리 장치(30001), 다수의 트레이(30002), 다수의 메모리(30003), 및 바이패스 수단(30004)으로 구성된다. 트레이들은 서로 연결되어 루프를 형성한다. 각 데이타 처리 장치에는 하나의 트레이와 하나의 메모리가 구비된다. 루프에 포함된 트레이의 수는 이웃하는 트레이들 사이의 접속라인에 데이타 바이패스 선택기 회로를 설치함으로써 자유롭게 조정될 수 있다.
이 병렬 데이타 처리 장치에서는 n×m차 행렬 요소와 n-차 벡터의 곱이 다음과 같이 연산된다.
행렬의 i번째 행의 요소가 i번째 메모리(1≤i≤m)에 입력되고, j번째 벡터 요소가 j번째 트레이(1≤j≤m)에 입력된다. 각 데이타 처리 장치에서는 메모리의 k번째 행의 요소와 트레이에 내장된 벡터 요소의 곱의 합을 결정하기 위하여 k번째 데이타 처리가 실행된다. 그 다음, 트레이 내용은 인접한 처리 장치로 전송된다. 상술한 과정은 연속한 프로세서들에 의해 n회 반복되어 n×m차 행렬과 n차 벡터의 곱을 얻게 된다.
즉, 이 병렬 데이타 처리 장치는 임의 크기의 행렬이나 신경망 상에서 병렬 동작을 효율적으로 실행할 수 있다.
[실시예 1]
제5도를 참조로, 본 발명의 일 실시예인 데이타 처리 장치에 대해 이하에서 설명한다.
본 발명의 본 실시예는 1차원 상호 접속된 프로세서들(1001)을 포함하며, 이 프로세서들은 제1 데이타 유지 수단(1002)과 저장 수단(1005)으로 구성되며, 저장 수단(1005)은 제2 데이타 유지 수단(1003)과 결합 수단(1004)으로 구성된다.
결합 수단은 2개의 입력(1011, 1012), 2개의 출력(1013, 1014), 및 하나의 상태 변수(1010)를 갖고 있으며, 이 상태 변수는 2개의 가능한 상태를 취할 수 있다. 결합 수단의 제1 입력(1011)은 우측 프로세서의 결합 수단의 제2 출력(1014)에 접속되고, 결합 수단의 제1 출력(1013)은 제2 데이타 유지 수단의 입력(1016)에 접속되고, 결합 수단의 제2 입력(1012)은 좌측 프로세서의 제1 데이타 유지 수단의 출력(1015)에 접속되고, 결합 수단의 제2 출력(1014)은 좌측 프로세서의 결합 수단의 제1 입력(1011)에 접속된다.
상태 변수를 제1 상태로 설정하면 제1 입력과 제1 출력이 상호 접속되고, 제2 입력과 제2 출력이 상호 접속되고, 상태 변수를 제2 상태로 설정하면 제1 입력과 제2 출력이 상호 접속되고, 제2 출력과 제2 입력이 상호 접속된다.
제6(a)도와 제6(b)도는 결합 수단의 접속 상태를 도시한 도면으로서, 제6(a)도는 상태 변수의 제1 상태를, 제6(b)도는 상태 변수의 제2 상태를 나타낸다.
프로세서(S1, S4)의 결합 수단(K1, K4)에 대한 상태 변수들을 제2 상태로 설정하고 프로세서(S2, S3)의 결합 수단(K2, K3)에 대한 상태 변수들을 제2 상태로 설정하면, 프로세서(S1)의 제1 데이타 유지 수단(Y1)의 출력이 프로세서(S2)의 제2 데이타 유지 수단(X2)의 입력에 접속되고, 프로세서(S2)의 제1 데이타 유지 수단(Y2)의 출력이 프로세서(S3)의 제2 데이타 유지 수단(X3)의 입력에 접속되고, 그리고 프로세서(S3)의 제1 데이타 유지 수단(Y3)의 출력이 프로세서(S1)의 제2 데이타 유지수단(X1)의 입력에 접속된다. 즉, 프로세서(S1, S2, S3)는 상호 접속되어 데이타가 좌측에서 우측으로 회전하는 루프를 형성한다.
도시된 실시예는 4개의 프로세서를 포함하고 있지만 동일한 방식으로 더 많은 프로세서를 사용할 수 있다.
제7도와 제8도는 제5도의 실시예의 결합 수단의 일례를 도시한 것으로 2선(two-wired) 입력(1011, 1012)과 2선 출력(1013, 1014)으로 전자 회로로 구성되어 있다.
본 실시예에서, 플립플롭은 상태 변수로서 작용한다. 플립플롭(F.F.)이 1(즉, 제1 상태)을 취하며, 제1 입력(1011)이 제1 출력(1013)에 접속되고, 제2 입력(1012)이 제2 출력(1014)에 접속된다. 플립플롭이 0(즉, 제2 상태)을 취하면, 제1 입력(1011)이 제2 출력(1014)에 접속되고, 제2 입력(1012)이 제1 출력(1013)에 접속된다.
제9도는 본 발명의 일 실시예에 따른 데이타 처리 장치이다. 제9도에서는 제5도에서 도시된 구성 성분과 동일한 구성 성분에 대해서는 동일한 도면 부호를 붙이고 이에 대해서는 더 이상 설명하지 않는다.
이 데이타와 처리 장치는 프로세서(1001)가 2차원 행렬로 배열되고 각 프로세서에는 그 입력(9016)이 결합 수단의 제1 입력(1013)에 접속되어 있는 제2 데이타 유지 수단(9003)이 설치되어 있다는 점에서 제5도에 도시된 실시예와 다르다.
수직 방향(열)으로 배열된 프로세서들을 상호 접속시키기 위해서, 행렬의 열내의 프로세서의 제1 데이타 유지 수단의 출력(9015)이 그 결합 수단의 제2 입력(9012)에 접속되고, 그 결합 수단의 제2 출력(9014)이 그 열 내에서 위에 배설된 다른 프로세의 결합 수단의 제1 입력(9011)에 접속된다.
이 결과, 프로세서의 결합 수단들은 2차원 시스템의 행과 열에서 인접한 프로세서들의 결합 수단에 접속된다. 상태 변수의 24가지 상태는 물론 24(4×3×2)종류의 결합 수단의 입-출력 접속이 있다.
도시된 실시예는 12개의 프로세서(4행×3열)를 이용하고 있지만, 상술한 방식과 동일한 방식으로 더 많은 수의 프로세서를 포함할 수 있다. 본 실시예의 프로세서들은 2차원 시스템으로 배열되지만, 3차원 이상으로 배열될 수도 있다.
[실시예 2]
제10도는 본 발명의 다른 실시예에 따른 데이타 처리 장치이다. 제10도에서는 제5도에 도시된 구성과 동일한 구성 성분에 대해서는 동일한 도면 부호를 붙이고 이에 대해서는 설명하지 않는다.
이 데이타 처리 장치는 프로세서(S1, S4)가 단자점들에 배설되어 있다는 점, 즉, 프로세서(S1)의 결합 수단(K1)이 제2 출력(1014)이나 제2 입력(1012)을 갖지 않고 또는 프로세서(S4)의 제1 데이타 유지 수단(Y4)의 출력이 결합 수단(K4)의 제1 입력(1011)에 접속된다는 점에서 제5도에 도시된 실시예와 다르다.
프로세서(S1)의 결합 수단(K1)의 상태 변수가 제1 상태를 취하고 프로세서(S2, S3, S4)의 결합 수단(K2, K3, K4)의 상태 변수가 제2 상태를 취하면, 프로세서(S1)의 제1 데이타 유지 수단(Y1)의 출력이 프로세서(S2)의 제2 데이타 유지 수단(X2)의 입력에 접속되고, 프로세서(S2)의 제1 데이타 유지 수단(Y2)의 출력이 프로세서(S3)의 제2 데이타 유지 수단(X3)의 입력에 접속되고, 프로세서(S2)의 제1 데이타 유지 수단(Y3)의 출력이 프로세서(S3)의 제2 데이타 유지 수단(X4)의 입력에 접속되고, 그리고 프로세서(S3)의 제1 데이타 유지 수단(Y4)의 출력이 프로세서(S1)의 제2 데이타 유지 수단(X1)의 입력에 접속된다. 즉, 프로세서(S1, S2, S3, S4)는 상호 접속되어 데이타가 좌측에서 우측으로 회전되는 루프를 형성한다.
모든 프로세서의 결합 수단의 상태 변수들이 제1 상태로 설정되면, 프로세서(S1)의 제1 데이타 유지 수단(Y1)의 출력은 프로세서(S2)의 제2 데이타 유지 수단(X1)의 입력에 접속되고, 프로세서(S2)의 제1 데이타 유지 수단(Y2)의 출력이 프로세서(S3)의 제2 데이타 유지 수단(X2)의 입력에 접속되고, 프로세서(S2)의 제1 데이타 유지 수단(Y3)의 출력이 프로세서(S3)의 제2 데이타 유지 수단(X3)의 입력에 접속되고, 그리고 프로세서(S3)의 제1 데이타 유지 수단(Y4)의 출력이 프로세서(S1)의 제2 데이타 유지 수단(X4)의 입력에 접속된다. 즉, 각 프로세서의 제1 데이타 유지 수단은 동일 프로세서의 제2 데이타 유지 수단에 접속된다.
도시된 실시예는 4개의 프로세서를 사용하지만, 상술한 방식과 동일한 방식으로 더 많은 수의 프로세서를 포함할 수 있다. 본 실시예에서 프로세서들은 일차원으로 배열되어 있지만 2차원 또는 그 이상 차원으로 배열될 수 있다.
[실시예 3]
제11도를 참조로 본 발명의 또 다른 실시예에 따른 데이타 처리 장치에 대해서 설명한다.
제11도에서는 제5도와 제10도에 도시된 구성 성분과 동일한 구성 성분에 대해서 동일한 도면 부호를 붙이고 이에 대해서는 더 이상 설명하지 않는다.
이 데이타 처리 장치는 모든 프로세서가 부가적인 제2 데이타 유지 수단(11003)을 갖고 있고, 제1 데이타 유지 수단의 출력(11015)이 좌측 프로세서의 결합 수단의 제2 입력(11012)에 접속되고, 결합 수단의 제1 입력(11011)이 좌측 프로세서의 결합 수단의 제2 출력(11014)에 접속되고, 결합 수단의 제1 출력(11013)이 제2 데이타 유지 수단(11003)의 입력(11016)에 접속된다는 점에서 제10도에 도시된 실시예와 다르다. 프로세서(S1)의 제1 데이타 유지 수단(Y1)의 출력(11015)은 동일 프로세서(S1)의 결합 수단(K1)의 제1 입력(11011)에 접속된다. 모든 결합 수단이 4개의 입력을 갖고 있으므로 그 입력의 접속이 24(=4×3×2) 종류가 있게 되고, 따라서 상태 변수가 24가지 상태를 취할 수가 있다.
프로세서의 입-출력 접속이 프로세서(S2, S3)에 대해서는 도면 부호 1011 내지 1014, 1012 내지 1013, 11011 내지 11014, 11012 내지 11013으로, 프로세서(S1)에 대해서는 1011 내지 1013, 11011 내지 11014, 11012 내지 11013, 그리고 프로세서(S4)에 대해서는 1011 내지 1014, 1012 내지 1013, 11011 내지 11013과 같은 방식으로 이루어지면, 제1 데이타 유지 수단과 제2 데이타 유지 수단(1003)은 데이타를 오른쪽으로 회전시키면서 전달할 수 있고, 제1 데이타 유지 수단과 부가적인 제2 데이타 유지 수단(11003)은 데이타를 왼쪽으로 회전시키면서 전달할 수 있다.
[실시예 4]
제12도를 참조로 본 발명에 따른 데이타 처리 장치의 일례에 대해서 설명한다.
이 데이타 처리 장치는 1차원으로 배열된 프로세서들(2001)을 포함하며, 프로세서 각각은 제1 데이타 유지 수단(2002)과 저장 수단(2005)으로 구성되고, 저장 수단은 제2 데이타 유지 수단(2003)과 결합 수단(2004)으로 구성된다. 결합 수단은 3개의 입력, 3개의 출력, 및 하나의 상태 변수를 갖고 있으며, 이 상태 변수는 6가지 가능한 상태(2010)를 취할 수 있다. 결합 수단의 제2 입력(2012)과 제2 출력(2015)은 우측 프로세서의 결합 수단의 제1 출력(2014)과 제1 입력(2011) 각각에 접속된다. 결합 수단의 제1 입력(2011)과 제1 출력(2014)은 좌측 프로세서의 결합 수단의 제2 출력(2015)과 제2 입력(2012) 각각에 접속된다. 결합 수단의 제3 출력(2016)은 제2 데이타 유지 수단의 입력(2018)에 접속되고, 결합 수단의 제3 출력은 제1 데이타 유지 수단의 출력(2017)에 접속된다.
상태 변수가 제1 상태에 있다면, 제1 입력(2011)은 제1 출력(2014)에 접속되고, 제2 입력(2012)은 제2 출력(2015)에 접속되고, 그리고 제3 입력(2013)은 제3 출력(2016)에 접속된다.
상태 변수가 제2 상태에 있다면, 제1 입력은 제1 출력에 접속되고, 제2 입력은 제3 출력에 접속되고, 그리고 제3 입력은 제2 출력에 접속된다.
상태 변수가 제3 상태에 있다면, 제1 입력은 제2 출력에 접속되고, 제2 입력은 제1 출력에 접속되고, 제3 입력은 제3 출력에 접속된다.
상태 변수가 제4 상태에 있다면, 제1 입력은 제2 출력에, 제2 입력은 제3 출력에, 그리고 제3 입력은 제1 출력에 접속된다.
상태 변수가 제5 상태에 있다면, 제1 입력은 제3 출력에, 제2 입력은 제1 출력에, 그리고 제3 입력에 제2 출력에 접속된다.
상태 변수가 제6 상태에 있다면, 제1 입력은 제3 출력에, 제2 입력은 제2 출력에, 그리고 제3 입력은 제3 출력에 접속된다.
모든 프로세서의 결합 수단의 상태 변수들이 제1 상태 또는 제3 상태로 설정되며, 프로세서(S1)의 제1 데이타 유지 수단(Y1)의 출력은 동일 프로세서(S1)의 제2 데이타 유지 수단(X1)의 입력에 접속되고, 프로세서(S2)의 제1 데이타 유지 수단(Y2)의 출력은 동일 프로세서(S2)의 제2 데이타 유지 수단(X2)의 입력에 접속되고, 프로세서(S3)의 제1 데이타 유지 수단(Y3)의 출력은 동일 프로세서(S3)의 제2 데이타 유지 수단(X3)의 입력에 접속되고, 프로세서(S4)의 제1 데이타 유지 수단(Y4)의 출력은 동일 프로세서(S4)의 제2 데이타 유지 수단(X4)의 입력에 접속된다.
즉, 각 프로세서의 제1 데이타 유지 수단은 동일 프로세서의 제2 데이타 유지 수단에 접속된다.
프로세서(S1)의 결합 수단의 상태 변수가 제2 상태로 설정되고, 프로세서(S2, S3)의 결합 수단의 상태 변수들이 제5 상태로 설정되고, 그리고 프로세서(S4)의 결합 수단의 상태 변수가 제6 상태로 설정되면, 프로세서(S1)의 제1 데이타 유지 수단(Y1)의 출력은 프로세서(S2)의 제2 데이타 유지 수단(X2)의 입력에 접속되고, 프로세서(S2)의 제1 데이타 유지 수단(Y2)의 출력은 프로세서(S3)의 제2 데이타 유지 수단(X3)의 입력에 접속되고, 프로세서(S3)의 제1 데이타 유지 수단(Y3)의 출력은 프로세서(S4)의 제2 데이타 유지 수단(X4)의 입력에 접속되고, 프로세서(S4)의 제1 데이타 유지 수단(Y4)의 출력은 프로세서(S1)의 제2 데이타 유지 수단(X1)의 입력에 접속된다. 즉, 프로세서(S1, S2, S3, S4)는 서로 접속되어 데이타가 좌측에서 우측으로 회전될 수 있는 링회로를 형성한다.
프로세서(S1)의 결합 수단의 상태 변수가 제2 상태로 설정되고, 프로세서(S2, S3)의 결합 수단의 상태 변수들은 제4 상태로 설정되고, 그리고 프로세서(S4)의 결합 수단의 상태 변수가 제6 상태로 설정되면, 프로세서(S1)의 제1 데이타 유지 수단(Y1)의 출력은 프로세서(S4)의 제2 데이타 유지 수단(X4)의 입력에 접속되고, 프로세서(S4)의 제1 데이타 유지 수단(Y4)의 출력은 프로세서(S3)의 제2 데이타 유지 수단(X3)의 입력에 접속되고, 프로세서(S3)의 제1 데이타 유지 수단(Y3)의 출력은 프로세서(S2)의 제2 데이타 유지 수단(X2)의 입력에 접속되고, 프로세서(S2)의 제1 데이타 유지 수단(Y2)의 출력은 프로세서(S1)의 제2 데이타 유지 수단(X1)의 입력에 접속된다. 즉, 프로세서(S1, S2, S3, S4)는 서로 접속되어 데이타가 우측에서 좌측으로 회전될 수 있는 링회로를 형성한다.
도시된 실시예는 4개의 프로세서를 사용하고 있지만 상술한 것과 동일한 방식으로 더 많은 수의 프로세서를 포함할 수도 있다.
제13도와 제14도는 각각 결합 수단의 2가지 다른 예들로, 각 예들은 3개의 2선 입력(2011, 2012, 2013)과 3개의 2선 출력(2014, 2015, 2016)을 갖고 있으며, 전자 회로들로 구성된 제12도의 데이타 처리 장치에 사용된다.
상기 예 모두에서 플립플롭(F.F.)은 상태 변수로 이용된다. 플립플롭의 출력이 “000”(제1 상태에 해당)이면, 제1 입력(2011)은 제1 출력(2014)에 접속되고, 제2 입력(2012)은 제2 출력(2015)에 접속되고, 그리고 제3 입력(2013)은 제3 출력(2016)에 접속된다.
플립플롭의 출력이 “101”(즉, 제2 상태)이면, 제1 입력(2011)은 제1 출력(2014)에, 제2 입력(2012)은 제3 출력(2016)에, 그리고 제3 입력(2013)은 제2 출력(2015)에 접속된다.
플립플롭의 출력이 “100”(즉, 제3 상태)이면, 제1 입력(2011)은 제2 출력(2015)에, 제2 입력(2012)은 제1 출력(2014)에, 제3 입력(2013)은 제3 출력(2016)에 접속된다.
플립플롭의 출력이 “001”(즉, 제4 상태)이면, 제1 입력(2011)은 제2 출력(2015)에, 제2 입력(2012)은 제3 출력(2016)에, 그리고 제3 입력(2013)은 제1 출력(2014)에 접속된다.
플립플롭의 출력이 “010”(즉, 제5 상태)이면, 제1 입력(2011)은 제3 출력(2016)에, 제2 입력(2012)은 제1 출력(2014)에, 그리고 제3 입력(2013)은 제2 출력(2015)에 접속된다.
플립플롭의 출력이 “011”(즉, 제6 상태)이면, 제1입력(2011)은 제3 출력(2016)에, 제2 입력(2012)은 제2 출력(2015)에, 그리고 제3 입력(2013)은 제1 출력(2014)에 접속된다.
제15도를 참조로 본 발명에 따른 데이타 처리 장치의 다른 예에 대해서 설명한다.
제15도에서는 제12도에 도시된 구성 성분과 동일한 구성 성분에 대해서는 동일 도면 부호를 붙이고 이에 대해서는 설명하지 않는다.
제12도에 도시된 장치와 비교해서, 이 데이타 처리 장치는 프로세서가 2차원으로 배열되어 있다는 것이 특징이다. 따라서, 프로세서의 결합 수단의 제1 입력(12011)과 제1 출력(12014)은 상부 프로세서의 결합 수단의 제2 출력(12015)과 제2 입력(12012) 각각에 접속되고, 프로세서의 결합 수단의 제2 입력(12012)과 제2 출력(12015)은 하부 프로세서의 결합 수단의 제1 출력(12014)과 제1 입력(12011) 각각에 접속되어서 수직 배열된 프로세서들을 상호 접속시킨다.
즉, 프로세서의 결합 수단은 그 입력과 출력들에서 상부, 하부, 좌측 및 우측의 인접 프로세서들의 각 결합 수단과 상호 접속될 수 있다. 결합 수단은 120(=5×4×3×2) 종류의 입-출력 접속을 가질 수 있으며 120가지의 해당 상태를 취할 수가 있다.
도시된 실시예는 1행에서 4개 프로세서, 1열에서 3개 프로세서를 사용하고 있지만, 상술한 것과 동일한 방식을 이들을 결합시킴으로써 더 많은 수의 프로세서를 포함하도록 확장될 수 있다. 또한 도시된 실시예는 프로세서의 2차원 배열을 채택하고 있지만 프로세서를 3차원으로 배열하는 것도 가능하다.
[실시예 5]
제16도를 참조로 본 발명을 구체화시킨 데이타 처리 장치에 대해서 설명한다.
본 발명의 본 실시예는 1차원 배열된 프로세서들(3010)을 포함하는 SIMD(Single Instruction Multi Data)형 데이타 처리 장치를 나타낸 것이다. 여기서, 각 프로세서는 데이타 처리 수단(3013), 메모리 수단(3011), 및 저장 수단으로 구성되며, 저장 수단은 제1 레지스터 수단(3012)과 결합 수단(3014)으로 구성된다.
각 프로세서의 각 처리 수단은 각 프로세서에 명령을 공급하고 각 프로세서의 메모리 내의 데이타를 독출하고 메모리 내로 데이타를 기입하는 프로세서의 제어 수단(3015)으로부터 글로벌 버스(30151)에 접속된다.
메모리 수단의 출력(30111)온 데이타 처리 수단의 제1 입력(30136)에 접속되고, 제1 레지스터 수단의 출력(30121)은 데이타 처리 수단의 제2 입력(30137)에 접속되고, 데이타 처리 수단의 제1 출력(30131)은 메모리 수단의 입력(30116)에 접속되고, 결합 수단의 출력(30141)은 제1 레지스터 수단의 제1 입력(30126)에 접속되고, 결합 수단의 제2 출력(30142)은 좌측 프로세서의 결합 수단의 제1 입력(30146)에 접속되고, 데이타 처리 수단의 제2 출력(30132)은 우측 프로세서의 결합 수단의 제2 입력(30147)에 접속되고, 그리고 데이타 처리 수단의 제4 출력(30134)은 결합 수단의 제3 입력(30148)에 접속된다.
결합 수단(XF)의 제3 입력이 값 “0”을 취하면, 결합 수단에서 제1 입력은 제1 출력에, 제2 입력은 제2 출력에 접속된다. 제3 입력에 “1”이 나타나면, 제1 입력은 제2 출력에, 제2 입력은 제1 출력에 접속된다.
모든 프로세서의 결합 수단(XF)의 모든 제3 입력에서 값 “1”이 나타나면, 각 프로세서의 결합 수단(XF)에 접속된 데이타 처리 수단(P)의 제2 출력은 우측 프로세서의 레지스트 수단(X)에 접속되어 이 레지스터 수단으로 데이타 처리 수단(P)로 부터의 데이타 출력이 전달될 수 있다.
제16도로부터, 인접한 프로세서들 간의 접속을 역전시킴으로써 데이타가 역방향으로 전달될 수 있음은 명백하다.
도시된 실시예는 3개의 프로세서를 사용하고 있지만, 상술한 것과 동일한 방식으로 부가적인 프로세서들을 결합시킴으로써 더 많은 수의 프로세서를 포함할 수 있다. 상술한 실시예는 프로세서의 1차원 배열을 채택하고 있지만, 2 또는 그 이상차원으로 배열된 프로세서로 구성될 수도 있다.
[실시예 6]
제17도를 참조로 본 발명을 구체화시킨 데이타 처리 장치에 대해서 설명한다. 제17도에서는 제16도의 실시예에서와 동일한 구성 성분에 대해서 동일한 도면 부호를 붙이고 이에 대해서는 더 이상 설명하지 않는다.
제17도에 도시된 실시예는 프로세서의 데이타 처리 수단의 제2 출력(30132)이 우측의 인접한 프로세서가 없는 경우에 결합 수단의 제1 입력(30146)에 접속된다는 점에서 제16도의 실시예와 다르다.
모든 프로세서의 결합 수단(XF)의 모든 제3 입력(30148)에서 값 “0”이 나타나면, 각 프로세서의 결합 수단(XF)에 접속된 데이타 처리 수단(P)의 제2 출력은 동일 프로세서의 제1 레지스터 수단(X)에 접속된다. 즉, 데이타 처리 수단(P)로부터 출력된 데이타는 동일 프로세서의 제1 레지스터 수단으로 전달될 수 있다.
프로세서(S1)의 결합 수단(XFI)의 제3 입력에서 값 “0”이 나타나고, 프로세서(S2, S3)의 결합 수단(XF2, XF3)의 제3 입력에서 값 “1”이 나타나면, 결합 수단(XF1)에 접속된 데이타 처리 수단(P1)의 제2 출력은 프로세서(S2)의 레지스터 수단(X2)에 접속되고, 결합 수단(XF2)에 접속된 데이타 처리 수단(P2)의 제2 출력은 프로세서(S3)의 레지스터 수단(X3)에 접속되고, 그리고 결합 수단(XF3)에 접속된 데이타 처리 수단(P3)의 제2 출력은 프로세서(S1)의 레지스터 수단(X1)에 접속된다. 즉, 데이타 처리 수단(P)으로부터 출력된 데이타는 좌측에서 우측으로 전달될 수 있다.
제17도로부터 인접하는 프로세서들 간의 접속을 역전시킴으로써 데이타가 우측으로부터 좌측으로 전달될 수 있음은 명백하다.
도시된 실시예는 3개의 프로세서를 사용하고 있지만, 상술한 것과 동일한 방식으로 부가적인 프로세서들을 결합함으로써 더 많은 수의 프로세서를 포함할 수 있다. 상술한 실시예는 프로세서의 1차원 배열을 채택하고 있지만 2 또는 그 이상차원으로 배열된 프로세서들로 구성될 수도 있다.
[실시예 7]
제18도를 참조로 본 발명을 구체화시킨 데이타 처리 장치에 대해서 설명한다. 제18도에서는 제16도 및 제17도의 실시예에서와 동일한 구성 성분에 대해서 동일 도면 부호를 붙이고 이에 대한 설명은 생략한다.
제18도에 도시된 실시예는 제17도의 실시예와 유사하나, 결합 수단의 제3 출력(30148)에 접속된 제2 레지스터 수단(5011)이 있다는 점에서 제17도와 다르다.
데이타 처리 수단의 제4 출력(30134) 값이 특정 타이밍에서 제2 레지스터 수단에 기입되고, 제2 레지스터가 그 출력에서 “0”을 갖게 되면, 제1 입력은 제1 출력에 접속되고, 제2 입력은 제2 출력에 접속된다. 제2 레지스터 수단의 값이 “1”이 되면, 제1 입력은 제2 출력에, 제2 입력은 제1 출력에 접속된다. 이것은 상술한 실시예 3과 동일한 효과를 가져온다.
도시된 실시예는 3개의 프로세서를 사용하고 있지만, 상술한 것과 동일한 방식으로 부가적인 프로세서들을 결합함으로써 더 많은 수의 프로세서를 포함할 수 있다. 상술한 실시예는 프로세서의 1차원 배열을 채택하고 있지만, 2 또는 그 이상차원으로 배열된 프로세서로 구성될 수도 있다.
[실시예 8]
제19도를 참조로 본 발명을 구체화시킨 데이타 처리 장치에 대해서 설명한다. 제19도에서는 제16도 내지 제18도의 실시예에서와 동일한 구성 성분에 대해서 동일 도면부호를 붙이고 이에 대한 설명은 생략한다.
제19도에 도시된 실시예는 제18도의 실시예와 유사하나, 데이타 처리 수단의 제3 입력(60133)이 제1 레지스터 수단의 제2 입력(60127)에 접속되어 있다는 점에서 제18도와 다르다.
제18도에 도시된 실시예에서, 프로세서의 데이타 처리 수단의 출력은, 만일 제1 레지스터 수단에 접속된 결합 수단의 제2 레지스터 수단에 값 “1”이 설정되지 않으며, 동일 프로세서의 상기 제1 레지스터 수단 내로 기입될 수 없다. 그러나, 데이타 처리 장치는 프로세서들 간에 회전하는 데이타를 가지고 연산하면서 제2 레지스터 수단의 값을 자주 변경시키기가 쉽지 않다. 따라서 본 실시예는 데이타 처리 수단으로부터 동일 프로세서의 제1 레지스터 수단 내로 출력 정보를 기입하기 위한 수단을 제공한다.
도시된 실시예는 3개의 프로세서를 사용하고 있지만, 상술한 것과 동일한 방식으로 부가적인 프로세서를 결합함으로써 더 많은 수의 프로세서를 포함할 수도 있다. 상술한 실시예는 프로세서의 1차원 배열을 채택하였지만, 프로세서의 2 또는 그 이상의 차원으로 배열할 수 있다.
[실시예 9]
제20도를 참조로 본 발명을 구체화시킨 데이타 처리 장치에 대해서 설명한다. 제20도에서는 제16도 내지 제18도의 실시예에서와 동일한 구성 성분에 대해서 동일 도면 부호를 붙이고 이에 대한 설명은 생략한다.
제20도에 도시된 실시예는 제19도에 도시된 실시예와 유사하나, 각 프로세서가 메모리 수단(3011)의 입-출력 포트(70111)(입력(30116)과 출력(30111)을 대신함), 제1 레지스터 수단(3012)의 입-출력 포트(70121)(제1 및 제2 입력(30126, 60127)와 출력(30121)을 대신함), 및 데이타 처리 수단(3013)의 입-출력 포트(70131)(제1 및 제2 입력(30136, 30137)과 제1, 제2, 및 제3 출력(30131, 30132, 60133)을 대신함)를 갖고 있고, 이들 입-출력 포트와 결합 수단(3014)의 제1 및 제2 입력(30146, 30147)은 제1 공용 버스(7011)에 접속되어 있다는 점에서 제19도와 다르다.
데이타는 제1 공용 버스를 통해 데이타 처리 수단으로부터 메모리 수단, 제1 레지스터 수단, 및 결합 수단으로 그리고 그 역으로 전달될 수 있다. 제1 공용 버스가 구비됨으로써 제19도에 도시된 실시예와 비교해서 모든 프로세서의 전체 회로가 간단하게 된다.
도시된 실시예는 3개의 프로세서를 이용하지만, 상술한 것과 동일한 방식으로 부가적인 프로세서를 결합함으로써 더 많은 수의 프로세서를 포함할 수 있다. 상술한 실시예는 프로세서의 1차원 배열을 채택하였지만 프로세서를 2 또는 그 이상의 차원으로 배열할 수 있다.
[실시예 10]
제21도를 참조로 본 발명에 따른 데이타 처리 장치의 실시예에 대해서 설명한다. 제21도에서는 제16도 내지 제20도의 실시예에서와 동일한 구성 성분에 대해서 동일 도면 부호를 붙이고 이에 대한 설명은 생략한다.
제21도에 도시된 실시예는 제20도에 도시된 실시예와 유사하나, 각 프로세서가 2개의 저장 수단(3016)을 갖고 있고, 데이타 처리 수단의 제4 출력(30134)과 결합 수단(3014)의 제3 입력(30148)은 제2 공용 버스(8011)에 접속된다는 점에서 제20도와 다르다.
제20도의 실시예에서, 각 프로세서는 다수의 결합수단을 포함한다면 데이타 처리 수단의 다수의 제4 출력을 가져야 한다. 이것은 각 프로세서의 회로를 복잡하게 할 수 있다. 따라서, 본 실시예는 데이타 처리 수단의 제4 출력과 결합 수단의 제3 입력이 제2 공용 버스에 접속되는 모든 프로세서의 회로를 채택한다.
도시된 실시예는 3개의 프로세서를 사용하지만, 상술한 것과 동일한 방식으로 부가적인 프로세서를 결합함으로써 더 많은 수의 프로세서를 포함할 수 있다. 상술한 실시예는 프로세서의 1차원 배열을 채택하였지만 프로세서를 2 또는 그 이상의 차원으로 배열할 수 있다.
제22도는 본 발명이 적용된 기능 메모리의 프로세서부의 실시예를 도시한 것이다. 이 실시예는 제3도(종래 기술)에 도시된 기능 메모리에 해당하는데, 프로세서부의 X-레지스터(14001)와 Y-레지스터(14022) 각각에 접속 가능한 결합 수단(14006, 14007)이 구비되어 있다.
제23도는 제22도에 도시된 기능 메모리의 프로세서부에 사용된 결합 수단의 일례를 도시한 것이다. 제23도에서, 문자 A, B, C, D, 및 E는 제22에서 좌측으로부터 두 번째 열에 도시된 프로세서 결합 수단(XF1, YF1)의 접속점 A, B, C, D, 및 E에 각각 해당한다.
플립플롭(F.F.)이 상태 “0”을 취하면, 점 A와 B가 상호 접속되고, 점 C와 B가 상호 접속된다. 플립플롭(F.F.)이 상태 “1”을 취하면, 점 A와 B가 상호 접속되고, 점 C와 D가 상호 접속된다.
만일 플립플롭(XF0 내지 XF4)가 “0”으로 설정되고, 플립플롭(XF5)가 “1”로 설정되면, 데이타는 좌측으로 회전할 수 있다. 반면에, 만일 플립플롭(YF1 내지 YF5)가 “0”으로 설정되고, 플립플롭(YF0)가 “1”로 설정되면, 데이타는 우측으로 회전될 수 있다.
도시된 실시예는 6개의 프로세서로 구성되어 있지만, 상술한 것과 동일한 방식으로 부가적인 프로세서를 결합함으로써 더 많은 수의 프로세서를 포함할 수 있다. 상술한 실시예는 프로세서의 1차원 배열을 채택하고 있지만, 프로세서를 2 또는 그 이상의 차원으로 배열할 수 있다.
[실시예 11]
제24도는 본 발명에 따른 신경망의 연산 동작을 실행하기 위한 데이타 처리 방법의 일례를 설명하는 플로우챠트이다.
신경망은 제25(a), 25(b), 및 25(c)도에 도시된 바와 같이 완전히 상호 접속된 2층 구조를 갖고 있다. 통상적으로는 2층 신경망이 아닌 3 또는 그 이상의 층을 가진 신경망이 사용되고 있으나, 설명의 단순화를 위해 2층형 신경망을 도시한 것이다.
신경망의 연산 동작은 일반적으로 다음 식으로 표현된다.
Figure kpo00001
상기 식에서, yj는 제2층의 노드(j)의 출력, xi는 제1층의 노드(i)의 출력, Wij는 노드(i)에서 노드(j)까지의 가중 계수이다.
제25(a)도는 제1층과 제2층에서 동일 번호의 노드를 가진 신경망, 제25(b)도는 제1층이 제2층보다 더 적은 수의 노드를 가진 신경망, 제25(c)도는 제1층이 제2층보다 더 많은 수의 노드를 가진 신경망을 도시한 것이다.
상기 식은 곱의 합을 구하기 위해 다음 식을 포함한다.
Figure kpo00002
이 식에 따른 연산 동작에 대해서는 제24도에 도시된 플로우챠트를 참조로 설명한다.
제1층이 m개 노드를, 제2층이 n개 노드를 갖고 있고, P세트의 연속한 상호 접속된 프로세서(P는 “m”중 큰 것임)을 이용하여 연산 동작을 실행한다고 가정한다.
단계 S2001에서, 제1층 내의 k번째 노드(Xk)로부터의 출력은 k번째(1≤k≤P) 프로세서의 메모리에 내장되고, 메모리 어드레스는 모든 프로세서에 의해 한 번에 억세스될 수 있다. 해당 요소가 없다면 메모리 내에는 0이 저장된다.
단계 S2002에서, 제1층 내의 각 k번째 노드(Xj)(1≤i≤n)와 제2층 내의 각 k번째 노드(Yk) 사이의 계수(Wik)(1≤i≤n)는 k번째 (1≤k≤P) 프로세서의 메모리에 저장되고, 메모리의 Wpk(p는 (i+k-1)을 P로 나눈 나머지이고, 만일 나머지가 0이면 p는 P이다.) 어드레스는 모든 프로세서에 의해 한 번에 억세스될 수 있다. 해당 계수가 없다면 메모리에는 0이 저장된다.
단계 S2003에서, 제1층의 출력이 회전되었는지를 여부를 체크한다. 회전되지 않았다면, 단계 S2004가 실행된다.
단계 S2004에서, 모든 프로세서의 데이타 처리 수단의 출력이 동일 프로세서의 메모리에 기입될 수 있도록 모든 결합 수단이 설정된다.
단계 S2005에서, 제1층의 출력은 각 프로세서에 의해 계수가 곱해지고, 이 곱이 각 프로세서의 메모리에 저장된다.
단계 S2006에서, 모든 결합 수단은 데이타 처리 수단으로부터의 출력이 우측으로 회전될 수 있도록 설정된다.
단계 S2007에서, 제1층으로부터의 출력이 우측으로 회전된다.
단계 S2003에서의 체크 결과가 긍정(YES)이면, 단계 S2008이 실행된다. 제2층의 각 노드의 출력은 각 프로세서에 대해 단계 S2008에서 얻어진 곱들을 합산함으로써 구해진다.
따라서, 행렬 A와 행렬 B의 곱이 구해진다.
제26도는 제25(a)도에 도시된 신경망의 연산 과정을 나타낸 것이다. 이 경우에, 4개의 프로세서(0 내지 3)를 가진 SIMD형 데이타 처리 장치는 데이타를 우측에서 좌측으로 회전시켜 전달함으로써 작동한다. 좌측에 나타난 문자 A-K는 메모리 어드레스를 표시한다.
제26도에서, 상태(1)은 제1층의 출력 Xi와 노드들 간의 가중 데이타 Wij가 메모리에 저장되는 것을 나타내고, 상태(2)는 어드레스(A)의 값이 각 프로세서에 의해 어드레스(B)의 값에 의해 곱해지고, 그 결과가 각 프로세서에 대해 어드레스(F)에 저장되는 것을 나타내고; 상태(3)은 어드레스(A) 내의 데이타 세트가 좌측으로 회전되는 것을 나타내고; 상태(4)는 어드레스(A)의 값이 어드레스(C)의 값에 의해 곱해지고, 그 결과가 어드레스(G)에 저장되는 것을 나타내고, 상태(5)는 어드레스(A) 내의 데이타 세트가 좌측으로 회전되는 것을 나타내고; 상태(6)은 어드레스(A)의 값이 어드레스(D)의 값에 의해 곱해지고, 그 결과가 어드레스(H)에 저장되는 것을 나타내고; 상태(7)은 어드레스 내의 데이타 세트가 좌측으로 회전되는 것을 나타내고; 그리고 상태(8)은 어드레스(A)의 값이 어드레스(E)의 값에 의해 곱해지고, 그 결과가 어드레스(I)에 저장되는 것을 나타낸다.
최종적으로, 어드레스(F-I)의 내용이 각 프로세서에 대해 함께 합산된다. 따라서 곱의 합
Figure kpo00003
가 실행된다.
제27도는 제25(c)도에 도시된 신경망의 연산의 다른 예를 나타낸 것이다. 이 과정은 제26도에 도시된 과정과 연산 방법과 조건에 있어 유사하나, 데이타 Wij를 저장하는 방법이 서로 다르다. 제27도의 경우에는 데이타Wij는 프로세서(P0, P1)에 저장된다. 유사한 연산이 실행되고 그 결과가 얻어진다.
제28도는 제25(b)도에 도시된 신경망의 연산의 다른 예를 나타낸 것이다. 이 과정은 제26도에 도시된 과정과 연산 방법과 조건에 있어서 유사하나, 데이타 Xi와 Wij를 저장하는 방법이 서로 다르다. 제28도의 경우에는 데이타 Xi는 프로세서(P0, P1)에 저장되고, 데이타 Wij는 프로세서(P0 내지 P3)에 저장된다. 유사한 연산이 실행되고 프로세서(P0 내지 P3) 각각에서 그 결과가 얻어진다.
[실시예 12]
제29도는 본 발명에 따른 2개의 행렬을 곱하는 데이타 처리 방법의 일례를 설명하는 플로우챠트이다.
이하, 제29도를 참조로 이 처리 플로우챠트에 대해서 설명한다.
행렬 A는 크기가 n×m이고, 행렬 B는 크기가 m×1이고, 순차 프로세서의 P세트의 연속한 프로세서(p는 2개의 수 “m” 과 “1” 중에서 더 큰쪽임)를 이용하여 연산을 실행한다고 가정한다.
단계 S2101에서, 행렬 A의 k번째 열 m의 요소 aik(1≤i≤n)는 k번째(1≤k≤P) 프로세서의 메모리에 저장되고, 동일 행 내의 데이타를 모든 프로세서에 의해 한 번에 억세스될 수 있는 어드레스에 저장된다. 해당 요소가 없다면, 메모리에는 0이 저장된다.
단계 S2102에서, 행렬B의 k번째 열 내의 요소 bik(1≤i≤m) 또는 bpk(p는 (i+k-1)을 P로 나눈 나머지이고, 나머지가 0인 경우에는 p는 P이다.)가 k번째(1≤k≤P) 프로세서의 메모리에 저장되고, 메모리의 어드레스는 모든 프로세서에 의해 한번에 억세스될 수 있다. 해당 요소가 없다면, 메모리에는 0이 저장된다.
단계 S2103에서, 제1행이 지정된다.
단계 S2104에서, 행렬의 모든 항이 연산되었는지 여부가 체크된다. 연산되지 않았다면 단계 S2105가 실행된다.
단계 S2105에서, 행렬 A의 지정된 행내의 요소들이 모든 프로세서를 통해 회전되었는지 여부가 체크된다. 체크 결과가 부정(NO)이면, 단계 S2106이 실행된다.
단계 S2106에서, 각 프로세서의 데이타 처리 수단의 출력이 동일 프로세서의 메모리에 기입될 수 있도록 모든 결합 수단이 설정된다.
단계 S2107에서, 행렬 A의 지정된 행의 요소들과 행렬 B의 각 요소와의 곱이 각 프로세서에 의해 연산되고, 연산 결과는 각 프로세서의 메모리에 저장된다.
단계 S2108에서, 데이타 처리 수단으로부터의 출력이 우측으로 회전할 수 있도록 모든 결합 수단이 설정된다.
단계 S2109에서, 행렬 A의 지정된 행이 우측으로 회전된다.
단계 S2105에서의 체크 결과가 긍정(YES)이면, 단계 S2110이 실행된다.
단계 S2110에서, 다음 행이 지정되고 단계 S2104가 실행된다.
단계 S2105에서 체크 결과가 긍정(YES)이면, 단계 S2111가 실행된다.
단계 S2111에서, 곱해진 행렬 A와 B의 각 요소는 얻어진 곱으로부터 결정된다.
따라서, 행렬 A와 행렬 B의 곱이 구해진다.
제30도는 크기가 3×3인 행렬 A와 크기가 3×3인 행렬 B의 곱을 연산하는 과정을 나타낸 것이다. 제30도의 경우에는 3개의 프로세서(0 내지 2)를 가진 SIMD형 데이타 처리 장치는 데이타를 우측에서 좌측으로 회전시켜 전달함으로써 작동한다. 좌측에 나타난 문자 A-Q는 메모리 어드레스를 표시한다.
제30도는, 행렬 A와 B의 모든 요소가 프로세서의 메모리에 저장되는 상태(1); 어드레스(A)의 값이 어드레스(D)의 값에 의해 곱해지고 그 값들의 곱은 어드레스(G)에 저장되고, 어드레스(B)의 값이 어드레스(E)의 값에 의해 곱해지고 그 값들의 곱은 어드레스(H)에 저장되고, 그리고 어드레스(C)의 값이 어드레스(F)의 값에 의해 곱해지고 그 값들의 곱이 어드레스(I)에 저장되는 상태(2); 어드레스(A, B, C) 내의 데이타 세트가 좌측으로 회전되는 상태(3); 어드레스(A)의 값이 어드레스(D)의 값에 의해 곱해지고 그 값들의 곱이 어드레스(J)에 저장되고, 어드레스(B)의 값이 어드레스(E)의 값에 의해 곱해지고 그 곱이 어드레스(K)에 저장되고, 어드레스(C)의 값이 어드레스(F)의 값에 의해 곱해지고 그 곱이 어드레스(L)에 저장되는 상태(4); 어드레스(A, B, C) 내의 데이타 세트가 좌측으로 회전되는 상태(5); 그리고 어드레스(A)의 값이 어드레스(D)의 값에 의해 곱해지고 그 곱이 어드레스(M)에 저장되고, 어드레스(B)의 값이 어드레스(E)의 값에 의해 곱해지고 그 곱이 어드레스(N)에 저장되고, 어드레스(C)의 값이 어드레스(F)의 값에 의해 곱해지고 그 곱이 어드레스(O)에 저장되는 상태(6)를 나타낸다. 최종적으로 어드레스(G, J, M 과 H, K, N 과 I, L, O)의 내용이 합산되어 2개의 행렬(A, B)의 곱이 구해진다.
본 발명에 따른 데이타 처리 장치 또는 방법은 다음과 같은 효과와 장점을 제공한다.
본 발명의 데이타 처리 장치는 한 프로세서에서 물리적 또는 논리적으로 분리된 다른 프로세서로 데이타를 효율적으로 전달할 수 있다.
본 발명의 데이타 처리 장치는 물리적 또는 논리적으로 연속한 프로세서 그룹에서 회전에 의해서 데이타를 효율적으로 전달할 수 있다.
본 발명의 데이타 처리 장치는 물리적 또는 논리적으로 연속한 프로세서 그룹에서 회전에 의해서 데이타를 효율적으로 전달할 수 있기 때문에 다수 행렬의 곱과 같은 곱을 합산함으로써 다수의 연산을 한 번에 효율적으로 실행할 수 있다.
본 발명의 데이타 처리 장치는 단자에 배설된 프로세서를 물리적 또는 논리적을 연속한 프로세서 내에 포함시킬 수가 있고, 프로세서들 간에서 회전에 의해 데이타를 전달시킴으로써 프로세서를 효율적으로 이용할 수 있다.
본 발명의 데이타 처리 장치는 물리적 또는 논리적으로 분리된 프로세서들 사이에서 양 방향으로 데이타를 효율적으로 전달할 수 있다.
본 발명의 데이타 처리 장치는 데이타 처리 수단의 제4 출력을 통해 결합 수단의 제2 레지스터 수단에 데이타를 미리 저장하여 간결한 데이타 처리 수단을 구현함으로써 데이타 처리 수단의 제4 출력에 접속 명령을 줄 필요없이 결합 수단을 통해 제1 레지스터 수단에 데이타를 전달할 수 있다.
본 발명의 데이타 처리 장치는 결합 수단을 통하지 않고서(즉, 결합 수단의 상태를 변경시키지 않고서) 각 프로세서로부터 이것의 제1 레지스터 수단으로 데이타를 효율적으로 전달할 수 있으므로 데이타 처리 효율을 향상시킬 수 있다.
본 발명의 데이타 처리 장치는 각 프로세서가 메모리 수단, 제1 레지스터 수단, 및 데이타 처리 수단의 입력 및 출력들과 결합 수단의 입력을 접속시키는 공용 버스를 통해 데이타를 전달할 수가 있어 프로세서의 구조가 간단해 질 수 있다.
본 발명의 데이타 처리 장치는 공용 버스를 이용하여 결합 수단의 제3 입력을 데이타 처리 수단의 제4 출력에 접속함으로써 다수의 결합 수단을 내장한 프로세서의 구조가 간단해 질 수 있다.
본 발명의 데이타 처리 방법은 다수의 프로세서를 이용하여 신경망의 연산을 효율적을 실행하는 것은 물론 다수의 신경망으로 병렬 연산을 한번에 실행할 수 있다.
본 발명의 데이타 처리 방법은 다수의 프로세서를 이용하여 2개 행렬의 곱을 효율적으로 실행하는 것은 물론 다수의 행렬의 곱을 동시에 구할 수 있다.

Claims (12)

  1. 각각의 프로세서가 데이타를 저장하기 위한 제1 데이타 유지 수단과, 데이타를 저장하기 위한 하나 또는 그 이상의 제2 데이타 유지 수단과 결합 수단으로 이루어진 저장 수단을 포함하는 1차원 또는 다차원 상호 접속 프로세서들을 포함하는 데이타 처리 장치에 있어서, 각 프로세서의 상기 결합 수단이 적어도 2개의 입력, 적어도 2개의 출력, 및 입-출력 접속을 설정하기 위한 상태 변수를 갖되: 상기 결합 수단의 제1 입력은 제1 물리적 또는 논리적 인접 프로세서의 결합 수단의 제2 출력에 접속되고; 상기 결합 수단의 제1 출력은 상기 결합 수단이 존재하는 동일 메모리 수단에 배설된 상기 제2 데이타 유지 수단의 입력에 접속되고; 상기 결합 수단의 제2 입력은 제2 물리적 또는 논리적 인접 프로세서의 결합 수단의 제1 데이타 유지 수단의 출력에 접속되고; 상기 결합 수단의 제2 출력은 상기 제2 물리적 또는 논리적 인접 프로세서의 결합 수단의 상기 제1 데이타 유지 수단의 제1 입력에 접속되고, 그리고 상기 상태 변수의 상태값에 따라 상기 결합 수단의 상기 입-출력 접속이 변화될 수 있는 것을 특징으로 하는 데이타 처리 장치.
  2. 제1항에 있어서, 물리적 또는 논리적 단자점에 위치한 상기 프로세서의 상기 제1 데이타 유지 수단의 출력이, 상기 제1 인접 프로세서의 상기 결합 수단이 존재하지 않는 경우에, 상기 프로세서의 상기 제1 입력에 접속되는 것을 특징으로 하는 데이타 처리 장치.
  3. 제1항 또는 제2항에 있어서, 상기 결합 수단이, 제1 입력 및 제2출력들로서, 적어도 2개의 입력과 적어도 2개의 출력을 갖되, 상기 결합 수단의 제1 입력과 제2 출력은 상기 제1 및 제2 인접 프로세서의 상기 제2 출력과 제1 입력 각각에 접속되고, 상기 제1 데이타 유지 수단이 2개의 출력을 갖되, 그 중 제1 출력은 상기 제1 및 제2 인접 프로세서의 상기 결합 수단의 상기 제2 입력 각각에 변화 가능하게 접속된 것을 특징으로 하는 데이타 처리 장치.
  4. 각각의 프로세서가 데이타를 저장하기 위한 제1 데이타 유지 수단과, 데이타를 저장하기 위한 하나 또는 그 이상의 제2 데이타 유지 수단과 결합 수단으로 이루어진 저장 수단을 포함하는 1차원 또는 다차원 상호 접속 프로세서들을 포함하는 데이타 처리 장치에 있어서, 각 프로세서의 상기 결합 수단이 적어도 3개의 입력, 적어도 3개의 출력, 및 입-출력 접속을 설정하기 위한 상태 변수를 갖되: 상기 결합 수단의 제2 입력 및 제2 출력은 제1 물리적 또는 논리적 인접 프로세서의 결합 수단의 제1 출력 및 제1 입력 각각에 접속되고; 상기 결합 수단의 제1 입력 및 제1 출력은 제2 물리적 또는 논리적 인접 프로세서의 결합 수단의 제2 출력 및 제2 입력 각각에 접속되고; 상기 결합 수단의 제3 출력은 상기 결합 수단이 존재하는 동일 저장 수단에 배설된 데이타 유지 수단의 입력에 접속되고, 상기 결합 수단의 제3 입력은 상기 제1 데이타 유지 수단의 출력에 접속되고, 그리고 상기 상태 변수의 상태값에 따른 상기 결합 수단의 상기 입-출력 접속이 변화될 수 있는 것을 특징으로 하는 데이타 처리 장치.
  5. 각각의 프로세서가 데이타 처리 수단, 메모리 수단, 및 제1 레지스터 수단 및 결합 수단으로 구성된 하나 또는 그 이상의 저장 수단을 포함하는 1차원 또는 다차원 상호 접속 프로세서들을 포함하는 SIMD형 병렬 데이타 처리 장치인 데이타 처리 장치에 있어서, 상기 메모리 수단의 출력은 상기 데이타 처리 수단의 제1 입력에 접속되고, 상기 제1 레지스터 수단의 출력은 상기 데이타 처리 수단의 제2 입력에 접속되고, 상기 데이타 처리 수단의 제1 출력은 상기 메모리 수단의 입력에 접속되고, 상기 결합 수단의 제1 출력은 상기 결합 수단이 존재하는 동일 저장 수단에 배설된 상기 제1 레지스터 수단의 제1 입력에 접속되고, 상기 결합 수단의 제2 출력은 제2 물리적 또는 논리적 인접 프로세서의 결합 수단의 제1 입력에 접속되고, 상기 데이타 처리 수단의 제2 출력은 제1 물리적 또는 논리적 인접 프로세서의 결합 수단의 제2 입력에 접속되고, 상기 데이타 처리 수단의 제4 출력은 상기 결합 수단의 제3 입력에 접속되고, 그리고 상기 결합 수단의 제3 입력의 값에 따라서 상기 결합 수단의 제1 및 제2 입력과 제1 및 제2 출력의 접속이 변화될 수 있는 것을 특징으로 하는 데이타 처리 장치.
  6. 제5항에 있어서, 물리적 또는 논리적 단자점에 위치한 프로세서의 상기 제1 데이타 처리 수단의 출력이 상기 제1 인접 프로세서의 부존재 결합 수단 대신에 상기 프로세서의 결합 수단의 제1 출력에 접속된 것을 특징으로 하는 데이타 처리 장치.
  7. 제5항 또는 제6항에 있어서, 상기 결합 수단이 상기 결합 수단의 제3 입력에 접속된 제2 레지스터 수단을 갖고, 상기 제2 레지스터 수단이 상기 결합 수단의 제3 입력의 값을 유지하고, 상기 결합 수단의 제3 입력의 값에 따라서 상기 결합 수단의 제1 및 제2 입력과 제1 및 제2 출력의 접속이 변화될 수 있는 것을 특징으로 하는 데이타 처리 장치.
  8. 제5항 또는 제6항에 있어서, 상기 프로세서에서, 상기 데이타 처리 수단의 제3 출력이 상기 제1 레지스터 수단의 제2 입력에 접속된 것을 특징으로 하는 데이타 처리 장치.
  9. 제5항 또는 제6항에 있어서, 상기 프로세서가 상기 메모리 수단의 입력 및 출력 대신에 입-출력 포트를 갖고, 상기 제1 레지스터 수단의 제1 및 제2 입력과 출력 대신에 입-출력 포트를 갖고, 그리고 상기 데이타 처리 수단의 제1 및 제2 입력과 제1, 제2, 및 제3 출력 대신에 입-출력 포트를 갖고, 그리고 상기 입-출력 포트들과 상기 결합 수단의 제1 및 제2 입력들 각각이 제1 공용 버스에 접속된 것을 특징으로 하는 데이타 처리 장치.
  10. 제5항 또는 제6항에 있어서, 다수의 저장 수단들을 포함하는 상기 프로세서에서, 상기 데이타 처리 수단의 제4 출력과 상기 결합 수단의 제3 출력이 제2 공용 버스에 접속된 것을 특징으로 하는 데이타 처리 장치.
  11. 제5항 또는 제6항의 데이타 처리 장치를 이용하여 제1층의 m개 노드 Xi(1≤i≤m)와 제2층의 n개 노드 Yj(1≤j≤n)를 결합시키는 신경망의 연산 동작 실행 방법에 있어서, 연속한 상기 수 m과 n중에서 더 큰 쪽 수(이하 P로 표시함)의 프로세서를 이용하여, k번째(1≤k≤P) 프로세서의 메모리 수단에 상기 제1층의 노드 Xk출력을 저장하되, 해당하는 노드가 없는 경우에는 0을 저장하고, 상기 제1층의 각 노드 Xi(1≤i≤m)를 상기 제2층의 k번째 노드 Yk에 결합시키기 위한 계수 Wik(1≤i≤m) 또는 Wpk(p는 (i+k-1)을 P로 나눈 나머지임. 단 나머지가 0인 경우에는 P임)를 동시에 프로세서에 의해 억세스될 수 있는 어드레스에 저장하고 또는 해당하는 계수가 없는 경우에는 0을 저장하고, 상기 데이타 처리 수단의 출력을 우측 또는 좌측으로 회전시키도록 상기 결합 수단을 설정함으로써 노드 X의 출력을 우측 또는 좌측으로 회전시키고, 각 프로세서에서 노드 X의 출력과 상기 계수의 곱의 합을 연산하여 노드 Y의 출력을 구하는 것을 특징으로 하는 신경망의 연산 동작 실행 방법.
  12. 제5항 또는 제6항의 데이타 처리 장치를 이용하여 n×m의 크기를 가진 행렬 A와 m×1의 크기를 가진 행렬 B와의 곱을 계산하는 연산 동작을 실행하기 위한 방법에 있어서, 연속한 상기 수 m과 1중에서 더 큰 쪽 수(이하 P로 표시함)의 프로세서를 이용하여, k번째(1≤k≤P) 프로세서의 메모리 수단에 상기 행렬 A의 k번째 열 내의 요소 aik(1≤i≤n)를 저장하되, 상기 행렬 A의 해당 요소가 없는 경우에는 0을 저장하고, 동일 행 내의 데이타를 동시에 프로세서에 의해 억세스될 수 있는 어드레스에 저장하고, 상기 행렬 B의 j번째 열 내의 데이타 bij(1≤i≤m) 또는 bpj(p는 (i+j-1)을 P로 나눈 나머지임. 단 나머지가 0인 경우에는 P임)를 동시에 프로세서에 의해 억세스될 수 있는 어드레스에 저장하되 해당하는 상기 행렬 B의 해당 요소가 없는 경우에는 0을 저장하고, 상기 데이타 처리 수단의 출력을 우측 또는 좌측으로 회전시키도록 상기 결합 수단을 설정함으로써 상기 행렬 A의 데이타의 출력을 우측 또는 좌측으로 회전시키고, 각 프로세서에서 행렬 A의 요소와 행렬 B의 요소의 곱의 합을 결정하는 것을 특징으로 하는 행렬의 곱 연산 동작 실행 방법.
KR1019970005448A 1996-02-22 1997-02-22 데이타 처리 장치 및 데이타 처리 방법 KR100280854B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP08034486A JP3136088B2 (ja) 1996-02-22 1996-02-22 データ処理装置及びデータ処理方法
JP96-034486 1996-02-22

Publications (2)

Publication Number Publication Date
KR970062893A KR970062893A (ko) 1997-09-12
KR100280854B1 true KR100280854B1 (ko) 2001-02-01

Family

ID=12415581

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970005448A KR100280854B1 (ko) 1996-02-22 1997-02-22 데이타 처리 장치 및 데이타 처리 방법

Country Status (4)

Country Link
US (1) US5797027A (ko)
JP (1) JP3136088B2 (ko)
KR (1) KR100280854B1 (ko)
TW (1) TW331607B (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040254965A1 (en) * 2001-03-02 2004-12-16 Eric Giernalczyk Apparatus for variable word length computing in an array processor
JP2004054680A (ja) * 2002-07-22 2004-02-19 Fujitsu Ltd 並列効率計算方法
US8549592B2 (en) 2005-07-12 2013-10-01 International Business Machines Corporation Establishing virtual endorsement credentials for dynamically generated endorsement keys in a trusted computing platform
WO2008027091A1 (en) * 2006-08-28 2008-03-06 Tableau, Llc Method and system for password recovery using a hardware accelerator
US20080052429A1 (en) * 2006-08-28 2008-02-28 Tableau, Llc Off-board computational resources
US20080126472A1 (en) * 2006-08-28 2008-05-29 Tableau, Llc Computer communication
US20080052525A1 (en) * 2006-08-28 2008-02-28 Tableau, Llc Password recovery
US20080052490A1 (en) * 2006-08-28 2008-02-28 Tableau, Llc Computational resource array
JP5079342B2 (ja) 2007-01-22 2012-11-21 ルネサスエレクトロニクス株式会社 マルチプロセッサ装置
US9645603B1 (en) * 2013-09-12 2017-05-09 Advanced Processor Architectures, Llc System clock distribution in a distributed computing environment
US9429983B1 (en) 2013-09-12 2016-08-30 Advanced Processor Architectures, Llc System clock distribution in a distributed computing environment
US11042211B2 (en) 2009-08-07 2021-06-22 Advanced Processor Architectures, Llc Serially connected computing nodes in a distributed computing system
US8675371B2 (en) 2009-08-07 2014-03-18 Advanced Processor Architectures, Llc Distributed computing
KR20120074762A (ko) * 2010-12-28 2012-07-06 삼성전자주식회사 재구성 가능한 심드 아키텍처 기반의 컴퓨팅 장치 및 방법
US9152663B2 (en) * 2013-03-15 2015-10-06 Intel Corporation Fast approach to finding minimum and maximum values in a large data set using SIMD instruction set architecture
US9177646B2 (en) 2013-05-06 2015-11-03 International Business Machines Corporation Implementing computational memory from content-addressable memory
KR102376265B1 (ko) * 2016-09-19 2022-03-18 엘모스 세미컨덕터 에스이 프로세서를 감시하기 위한 와치독
US20230229450A1 (en) * 2018-02-23 2023-07-20 Untether Ai Corporation Computational memory
JP7074018B2 (ja) * 2018-10-22 2022-05-24 日本電信電話株式会社 分散処理システムおよび分散処理方法
JP7074017B2 (ja) * 2018-10-22 2022-05-24 日本電信電話株式会社 分散処理システムおよび分散処理方法
CN112860597B (zh) * 2019-11-27 2023-07-21 珠海格力电器股份有限公司 一种神经网络运算的系统、方法、装置及存储介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4523273A (en) * 1982-12-23 1985-06-11 Purdue Research Foundation Extra stage cube
JP2825133B2 (ja) * 1989-09-20 1998-11-18 富士通株式会社 並列データ処理方式
US5276891A (en) * 1990-01-11 1994-01-04 Bull Hn Information Systems Inc. Alignment of sign, data, edit byte operand results for storage in memory
US5708836A (en) * 1990-11-13 1998-01-13 International Business Machines Corporation SIMD/MIMD inter-processor communication
JPH04293151A (ja) * 1991-03-20 1992-10-16 Fujitsu Ltd 並列データ処理方式
JPH06314241A (ja) * 1993-03-04 1994-11-08 Sharp Corp 高速半導体記憶装置及び高速連想記憶装置
FR2710993B1 (fr) * 1993-10-04 1995-11-24 Commissariat Energie Atomique Procédé et système d'interconnexion pour la gestion de messages dans un réseau de processeurs à structure parallèle.
US5708835A (en) * 1995-03-27 1998-01-13 Hughes Electronics Dual-directional parallel processor

Also Published As

Publication number Publication date
TW331607B (en) 1998-05-11
JP3136088B2 (ja) 2001-02-19
US5797027A (en) 1998-08-18
KR970062893A (ko) 1997-09-12
JPH09231182A (ja) 1997-09-05

Similar Documents

Publication Publication Date Title
KR100280854B1 (ko) 데이타 처리 장치 및 데이타 처리 방법
EP0390907B1 (en) Parallel data processor
US4507726A (en) Array processor architecture utilizing modular elemental processors
US5081575A (en) Highly parallel computer architecture employing crossbar switch with selectable pipeline delay
US5179714A (en) Parallel bit serial data processor
US4697247A (en) Method of performing matrix by matrix multiplication
US5247613A (en) Massively parallel processor including transpose arrangement for serially transmitting bits of data words stored in parallel
US4745546A (en) Column shorted and full array shorted functional plane for use in a modular array processor and method for using same
EP1792258B1 (en) Interconnections in simd processor architectures
US4524428A (en) Modular input-programmable logic circuits for use in a modular array processor
US4543642A (en) Data Exchange Subsystem for use in a modular array processor
WO1992022873A1 (en) High performance array processor
Chung Prefix computations on a generalized mesh-connected computer with multiple buses
WO2008153817A2 (en) Method and apparatus for connecting multiple multimode processors
Irwin et al. A micro-grained VLSI signal processor
US20030200422A1 (en) Parallel processor
GB2370139A (en) Parallel loaded shift register in parallel processor element
Fujita et al. IMAP: integrated memory array processor
EP0315550A2 (en) Highly parallel computer architecture employing crossbar switch with selectable pipeline delay
Swarztrauber The Communication Machine
CN112486905A (zh) 可重构异构化pea互连方法
Panda et al. Fast data manipulation in multiprocessors using parallel pipelined memories
Fountain An analysis of methods for improving long-range connectivity in meshes
Baklouti et al. Study and integration of a parametric neighbouring interconnection network in a massively parallel architecture on FPGA
Torres et al. A new concept of a mono-dimensional SIMD/MIMD parallel architecture based in a content addressable memory

Legal Events

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

Payment date: 20091110

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee