본문 바로가기

Library/Computer System

배열 프로세서(Array Processor)

배열 프로세서(array processor)는 대규모의 데이터 배열에 대한 계산을 수행하는 프로세서이다. 부가 배열 프로세서(attached array processor)는 범용 컴퓨터에 부착하는 추가 프로세서로, 특별한 수치 계산 작업에 대한 컴퓨터의 성능을 향상시키기 위해 사용된다. SIMD 배열 프로세서(SIMD array processor)는 단일 명령어 / 다중 데이터 구조를 가진 프로세서이며, 보통의 명령어에 대한 다중 기능 장치를 사용하여 벡터 명령어를 처리한다. 즉 두 형태 모두 벡터를 처리하는 배열 프로세서지만 내부적인 구조가 다르다.


부가 배열 프로세서는 기존의 호스트 컴퓨터에 대한 주변 장치로서 설계된 것으로, 복잡한 과학 응용에 대해 벡터 처리 능력을 제공하여 컴퓨터의 성능을 향상시킨다. 즉, 다중 기능 장치를 이용한 병렬 처리를 통하여 고성능을 발휘하는 것이다. 여기서는 하나 이상의 파이프라인된 부동소수점 가산기나 승산기를 가진 산술 장치가 포함되고, 복잡하고 다양한 산술 문제를 해결하기 위해 사용자가 프로그램 할 수 있도록 되어 있다. 일반적인 호스트 컴퓨터와 부가 배열 프로세서가 입출력 인터페이스로 연결되어 있고, 메인 메모리와 부가 배열 프로세서들의 로컬 메모리는 고속의 메모리 버스로 연결되어 있는 기계를 생각해보자. 여기서 부가 배열 프로세서는 호스트 컴퓨터에 의해 구동되는 후위(back-end) 기계로서, 호스트 컴퓨터의 입출력 제어기에 연결되어 마치 외부 접속 장치인 것처럼 간주된다. 부개 배열 프로세서를 위한 데이터는 고속의 버스를 통하여 메인 메모리에서 로컬 메모리로 전송된다. 이와 같이 부가 배열 프로세서를 가지고 있는 시스템은 복잡한 산술 응용 문제를 해결하는 능력을 제공한다.


SIMD 배열 프로세서는 병렬적으로 동작하는 다중 처리 장치를 가진 컴퓨터이다. 처리 장치는 공통 제어 장치의 제어에 의하여 동일한 동작을 수행하도록 동기화되기 때문에 단일 명령어 흐름과 다중 데이터 흐름(SIMD) 구조를 제공한다. 예를 들어, 하나의 제어 장치와 메인 메모리를 가지고 있으며, 각각의 프로세서 요소 PE가 자신의 로컬 메모리 M을 가진 기계를 생각해보자. 각 프로세서 요소 PE는 ALU, 부동소수점 산술 장치, 레지스터들을 포함하며, 제어 장치는 PE 안에서 이루어지는 동작을 제어한다. 프로그램은 메인 메모리에 자장되며, 각 명령어는 제어 장치에 의해 디코딩되고 수행될 동작이 결정된다. 스칼라와 프로그램 제어 명령어인 경우에는 제어 장치에서 곧바로 실행되지만, 벡터 명령어는 모든 PE들에게 전파되고 각 PE는 자신의 로컬 메모리에 저장되어 있는 피연산자를 이용하여 계산을 수행한다. 따라서 벡터 피연산자는 명령어의 병렬 수행에 앞서 각 로컬 메모리로 분산되어야 한다.

예를 들어, 벡터 덧셈 C = A + B를 생각해보자. 먼저 제어 장치는 A와 B의 i 번째 원소인 ai, bi를 로컬 메모리 Mi에 저장한다. 다음에 부동소수점 덧셈 명령어(ci = ai + bi)를 모든 PE에 보내어 동시에 덧셈이 이루어지도록 한다. 덧셈의 결과로 원소 ci가 각 로컬 메모리의 고정된 위치에 저장되면, 한 번의 덧셈 사이클로 원하는 벡터합을 구할 수 있게 된다.

벡터 명령어가 수행되는 동안 각 PE를 제어하기 위해 마스킹(masking) 방법을 사용한다. 즉, 각 PE의 활성화 여부를 나타내는 플래그를 제어해서 꼭 필요한 PE만 벡터 명령어의 수행에 참여하도록 한다. 예를 들어, 64개의 PE로 구성된 배열 프로세서에서 데이터 항목이 64개 이하인 벡터를 처리한다면, 제어 장치가 적당한 수의 PE만 선택하여 활성화시키고, 벡터의 길이가 64보다 큰 경우에는 제어 장치에 의해 나뉘어진 다음에 처리된다.


Copy from
M. Morris Mano, Computer System Architecture Third Edition, Prentice-Hall, 1992
김종상, 컴퓨터 시스템 구조, 사이텍 미디어, 1994 (번역)