[컴퓨터구조론] 백터 처리

2024. 6. 21. 19:31CS/Computer Architecture

제 9장 Part-3

위 유튜브 강의를 보고서 정리한 내용입니다.

 

백터 처리 (Vector Processing)

  • 백터 : 컴퓨터 과학에서는 동일한 데이터 유형의 요소들의 순서 있는 집합을 나타낸다.
  • 백터 처리 : 컴퓨터에서 동일한 연산을 일련의 데이터에 대해 동시에 적용하는 방법을 말합니다.

 


왜 씀?

 

: 대량의 데이터를 동시에 처리하여 계산 속도를 향상하는 것.
: 일련의 데이터에 대한 연산을 한번에 수행할 수 있게 합니다.
: 과학, 공학, 그래픽, 기상 예보, 의료 이미징 등과 같은 분야에서 많은 양의 데이터를 빠르게 처리해야 하는 상황에 특히 유용.
: 장기 기상 예보, 석유 탐사, 지진 데이터 분야, 의학 검진, 분석, 기계 역학, 비행 시뮬레이션, 인공지능, 전문가 시스템, 유전자 분석, 2/3차원 이미지 처리 등에 활용.

 

 

비디오 게임 콘솔이나 그래픽 카드와 같은 멀티미디어 분야에 자주 사용된다.

 

CPU에서는 인텔의 MMX, 스트리밍 SIMD 확장(SSE)과 AMD의 3D나우! 등의 기술에서 이를 적용했다.

 

위 코드는 1~100까지의 array데이터를 더하고 있다.

 

벡터연산을 사용하면 간단하게 구현할 수 있다.

 

명령어를 불러와(fetch) 해독(decode)하는 작업을 1번만으로 끝낼 수 있기 때문에 작업 시간을 줄일 수 있다.

 

또한 코드 자체도 작아져서 메모리를 보다 효율적으로 사용할 수 있다.

 

단, 고급언어를 벡터명령어로 바꿔주는 벡터 컴파일러가 필요하다.

 


그래서 어떻게 만듬?

 

CPU를 여러 사용하면 한 번에 대용량 데이터스트림을 처리할 수 있지 않을까?

 

동시에 메모리를 접근하는 경우 자원충돌이 발생한다!

 

 

자원충돌을 방지하기 위해 메모리를 나누면 되는 것 아닌가?

 

  • 메모리 인터리빙(Interleaving)
    : 두 개 이상의 명령어가 동시에 메모리를 접근하는 경우, 파이프라인의 자원 충돌 문제 해결.
    : 메모리를 여러 모듈로 분할 구성.
    : 자원충돌을 방지하기 위해 메모리를 나눈다. 이를 메모리 뱅크라고 한다.
    : 인접한 메모리 위치를 서로 다른 메모리 뱅크(bank)에 둠으로써 동시에 여러 곳을 접근할 수 있게 하는 것

 


배열 프로세서 (Array Processors)

 

  • 벡터 프로세서(Vector processor) 또는 어레이 프로세서(Array processor)는 벡터라고 불리는 다수의 데이터를 처리하는 명령어를 가진 CPU를 말한다.
  • 여러 개의 프로세서가 배열로 만들어진다.
  • Main 프로세서의 뒤에서 Backend 프로세서로 사용됨.
  • 자체적으로 Local memory에 데이터 저장
  • Transputer라고도 함.

 

참고로 이와 반대로 한 번에 하나의 데이터를 처리하는 CPU는 스칼라 프로세서(Scalar processor)라고 한다.

 


SIMD

 

  • Single Instruction Multiple Data 배열 프로세서
    : main cpu와 main memory에 다수의 PE 연결.
    : PE를 묶어서 Array 프로세서 구현
  • PE
    : Processing Element.
    : 모든 프로세싱 요소들이 하나의 제어유닛 아래에 동기적으로 작동하는 시스템 구조.
    : 자체 프로세서와 local memory로 구성.

 

벡터 프로세서는 1970년대 처음 나타났으며 1980년에서 1990년대 동안 슈퍼 컴퓨터의 기본적인 형태였다.

 

오늘날 대부분의 CPU는 다수의 데이터를 처리하는 벡터 프로세싱을 위한 SIMD 명령어를 갖추고 있다.

 

벡터 프로세싱을 위한 또 다른 CPU 디자인으로 다수의 명령어로 다수의 데이터를 처리하는 MIMD (Multiple Instruction Multiple Data)가 있지만 전문적인 용도로만 사용될 뿐 일반적인 용도로 쓰이지는 않았다.

 

ILLIAC-IV : 대표적인 초기 SIMD 배열 프로세서

 

 


슈퍼 컴퓨터

 

당대의 컴퓨터들 중에서 가장 빠른 계산 성능을 갖는 컴퓨터들.

 

기상 예측과 모의 핵실험 분야에서 발전했다.

 

슈퍼컴퓨터의 조건

  1. 벡터 명령어 제공.
  2. 파이프라인된 부동 소수점산술연산 제공.
  3. 상업용 컴퓨터.

 

고속 연산을 목표로 설계한다. (메모리, 레지스터 크기를 키우는 등)

 

고속 연산을 위한 소재, 부품을 사용한다. (전기 신호의 속도를 높이기 위한 저항이 적은 소재 사용. 금, 은, 구리…)

 

현대 슈퍼컴퓨터들은 대부분 페타플롭스 수준의 계산능력을 가지고 있다.

 

Flop이란 초당 처리할 수 있는 floating point 연산의 수를 의미한다.

 

페타는 10^15를 뜻하며, 페타플롭스는 1초에 10^15번의 부동소수점 계산을 할 수 있는 성능으로, 쉽게 말해 초당 1000조 번의 계산을 하는 것.