맨위로가기

벡터 프로세서

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

벡터 프로세서는 여러 데이터에 대해 단일 명령을 적용하여 연산 속도를 높이는 컴퓨터 아키텍처이다. 1960년대 웨스팅하우스의 솔로몬 프로젝트에서 시작되어, 1970년대 CDC STAR-100과 Cray-1을 거치며 발전했다. 벡터 프로세서는 CPU가 한 번에 여러 데이터를 처리하도록 설계되어 디코딩 시간과 메모리 사용을 효율적으로 만든다. SIMD와 비교하여 가변 길이 벡터 처리, 벡터 내부 요소에 대한 반복 및 축소, 체이닝을 통한 리소스 효율성 향상 등의 특징을 갖는다. 1990년대 후반 이후 대규모 병렬 처리 방식으로 전환되었지만, SIMD 형태로 발전하여 현재 CPU에 적용되고 있으며, RISC-V 벡터 확장과 같은 새로운 아키텍처가 개발되고 있다.

더 읽어볼만한 페이지

  • 코프로세서 - 제온 파이
    제온 파이는 인텔에서 개발한 x86 기반 메니코어 프로세서로, 나이츠 페리, 나이츠 코너, 나이츠 랜딩, 나이츠 밀 등의 모델이 있으며, AVX-512 명령어 세트 지원을 통해 고성능 컴퓨팅 환경에서 복잡한 연산을 효율적으로 처리하는 데 중점을 둔다.
  • 코프로세서 - 엔비디아 테슬라
    엔비디아 테슬라는 엔비디아가 개발한 고성능 GPU 제품군으로, CUDA를 활용한 병렬 컴퓨팅 환경을 제공하여 다양한 분야에서 고성능 컴퓨팅을 지원하며, 여러 마이크로아키텍처 기반 모델을 통해 발전해왔고, 메모리 및 통신 대역폭을 늘리는 혁신을 거듭해왔다.
  • 중앙 처리 장치 - 마이크로컨트롤러
    마이크로컨트롤러는 프로세서, 메모리, 입출력 기능을 단일 칩에 통합하여 임베디드 시스템의 핵심이 되는 부품으로, 프로그램 내장 방식을 통해 소프트웨어만으로 제어 기능 변경이 가능하며, 현재는 32비트 ARM, MIPS 아키텍처 기반 제품이 주를 이루고, 저전력 소모, 소형화, 다양한 기능 통합을 특징으로 다양한 분야에서 활용된다.
  • 중앙 처리 장치 - NX 비트
    NX 비트는 하드웨어 기반 보안 기능으로, 메모리 페이지의 실행 권한을 제어하여 특정 영역에서 코드 실행을 막아 버퍼 오버플로 공격과 같은 보안 위협을 줄이는 데 사용되며, AMD에서 처음 도입 후 다양한 프로세서와 운영체제에서 DEP 등의 이름으로 구현되었다.
  • 병렬 컴퓨팅 - 슈퍼컴퓨터
    슈퍼컴퓨터는 일반 컴퓨터보다 훨씬 높은 성능을 가진 컴퓨터로, 복잡한 계산과 시뮬레이션을 수행하며, 프로세서, 메모리, 스토리지, 네트워크 등으로 구성되어 병렬 처리를 통해 높은 성능을 구현하고, 군사, 기상 예측, 과학 기술 분야, 인공지능 등 다양한 분야에서 활용되고 있다.
  • 병렬 컴퓨팅 - 컴퓨터 클러스터
    컴퓨터 클러스터는 여러 대의 상용 컴퓨터를 고속 네트워크로 연결하여 고성능 컴퓨팅 시스템을 구축하는 방식으로, 슈퍼컴퓨터를 포함한 다양한 분야에서 높은 가용성과 확장성을 제공하며, 클러스터 미들웨어를 통해 시스템 관리, 부하 분산, 통신 방식, 데이터 공유 등을 지원하고 노드 장애 관리를 위한 펜싱 기술을 활용한다.
벡터 프로세서
개요
벡터 프로세서 블록 다이어그램
벡터 프로세서 블록 다이어그램
유형마이크로프로세서
설계 패러다임명령어 수준 병렬성(ILP)
사용 분야과학 시뮬레이션
인공지능
신호 처리
그래픽스
대체 기술SIMD
GPU
멀티 코어 프로세서
특징
파이프라인 단계명령어 인출
명령어 디코딩
주소 계산
메모리 액세스
레지스터 읽기
연산 실행
결과 쓰기
역사
개발 배경과학 및 공학 계산의 복잡성 증가
초기 벡터 프로세서IBM 스트레치, CDC 6600
전성기1970년대 ~ 1990년대 슈퍼컴퓨터
주요 제조사크레이 리서치
후지쯔
NEC
작동 원리
벡터 명령어단일 명령어로 다수의 데이터에 대한 연산 수행
벡터 레지스터다수의 데이터를 저장하는 레지스터
메모리 액세스스트라이드 액세스, 스캐터-개더 액세스 지원
장점
성능대규모 데이터 병렬 처리에서 높은 성능
효율성명령어 인출 및 디코딩 오버헤드 감소
프로그래밍특정 유형의 문제에 대해 간결한 프로그래밍 가능
단점
비용복잡한 하드웨어 구조로 인한 높은 비용
유연성모든 유형의 문제에 적합하지 않음
프로그래밍벡터화를 위한 프로그래밍 필요
응용 분야
과학 및 공학기상 모델링
분자 역학
유체 역학
인공지능신경망 학습
패턴 인식
신호 처리이미지 처리
음성 인식
그래픽스렌더링
애니메이션
미래
동향GPU와의 융합
임베디드 시스템 적용
도전 과제소프트웨어 개발
전력 소비
같이 보기
관련 기술SIMD
GPU
멀티 코어 프로세서
관련 개념병렬 처리
파이프라인
캐시

2. 역사

웨스팅하우스(Westinghouse)의 솔로몬 프로젝트와 일리노이 대학교 어배너-섐페인(University of Illinois at Urbana–Champaign)의 일리악 IV (ILLIAC IV) 프로젝트를 통해 벡터 프로세서의 기본 개념이 확립되었다.[1] 1970년대에는 Control Data Corporation(CDC)의 STAR-100과 텍사스 인스트루먼츠(Texas Instruments)의 Advanced Scientific Computer(ASC) 등이 초기 벡터 프로세서로 등장했다.

크레이 리서치의 Cray-1은 벡터 레지스터 기반 설계와 파이프라인 병렬 처리를 통해 벡터 프로세서 기술을 크게 발전시켰다. 1980년대에는 후지쯔, 히타치(Hitachi), NEC 등 일본 기업들이 Cray-1과 유사한 벡터 프로세서를 개발하여 경쟁에 참여했다.

1990년대 초, 한국과학기술원(KAIST)과 삼성전자, 현대전자, 금성사(현 LG전자)는 공동으로 슈퍼컴퓨터 개발에 착수하면서 벡터 프로세서 기술을 도입했다. 당시 개발된 슈퍼컴퓨터 'KAI-II'는 벡터 프로세서를 기반으로 설계되었다.

1990년대 후반 이후, 슈퍼컴퓨터 시장은 대규모 병렬 처리 방식으로 전환되었지만, 벡터 프로세서 기술은 SIMD 형태로 발전하여 현재 CPU에 적용되고 있다. NEC는 SX 시리즈를 통해 벡터 프로세서 개발을 계속하고 있으며, 최근에는 SX-Aurora TSUBASA를 출시했다. 최근에는 RISC-V 벡터 확장과 같이 새로운 벡터 프로세서 아키텍처가 개발되고 있다.[5]

3. 특징

벡터 프로세서는 CPU가 한 번에 여러 개의 데이터를 처리할 수 있도록 설계되었다. 일반적인 CPU는 "A와 B를 더한 후 결과를 C에 저장하라"는 명령을 처리할 때, 메모리 주소를 디코딩하고 데이터를 가져오는 데 시간이 걸린다. 반면 벡터 프로세서는 "여기서 여기까지의 모든 숫자를 저기서 저기까지의 모든 숫자에 더하라"는 명령을 처리할 수 있어 디코딩 시간을 줄이고 메모리 사용을 효율적으로 만든다.[14]

벡터 프로세서는 여러 기능 유닛에 병렬로 숫자를 추가할 수 있으며, 숫자 간의 의존성 검사가 필요 없다. 크레이는 서로 다른 형태의 작업을 한 번에 실행할 수 있도록 설계했다. 예를 들어, 두 숫자를 더한 후 세 번째 숫자와 곱하는 작업을 동시에 처리할 수 있다. 이러한 벡터 프로세싱 방식은 SIMD(Single Instruction, Multiple Data)라는 명칭으로 현대 CPU에 적용되고 있다.

다음은 벡터 프로세서와 스칼라 프로세서의 차이점을 설명하기 위한 예제이다. 10개의 숫자로 된 2그룹을 모두 더하는 간단한 작업을 일반적인 프로그래밍 언어에서는 루프(loop)를 사용해 각 숫자를 하나씩 가져와 더한다. 이 작업을 CPU에서는 다음과 같이 처리한다.

```text

execute this loop 10 times (아래 작업을 10번 반복 실행한다)

read the next instruction and decode it (다음 명령을 읽어들여 해독한다)

fetch this number (이쪽의 숫자를 가져온다)

fetch that number (저쪽의 숫자를 가져온다)

add them (두 숫자를 더한다)

put the result here (결과를 여기에 넣는다)

end loop (루프 마지막)

```

벡터 프로세서에서는 이 작업은 매우 다르게 처리된다.

```text

read instruction and decode it (명령을 읽어들여 해독한다)

fetch these 10 numbers (이쪽의 숫자 10개를 모두 가져온다)

fetch those 10 numbers (저쪽의 숫자 10개를 모두 가져온다)

add them (모두 더한다)

put the results here (결과를 여기에 넣는다)

3. 1. SIMD와 벡터 프로세서의 차이점

SIMD 명령어 집합은 벡터 명령어 집합에 비해 중요한 기능이 부족하다. 그중 가장 중요한 것은 벡터 프로세서가 가변 길이 벡터를 처리할 수 있다는 점이다.

순수(고정 폭, 사전 조건 없음) SIMD는 "벡터"라고 잘못 불리기도 하지만, 실제 벡터 ISA는 SIMD ISA에는 없는 다음 기능을 가질 수 있다.

  • 벡터 길이를 설정하는 방법(예: RISCV RVV의 `vsetvl` 명령어, NEC SX의 `lvl` 명령어). 길이를 2의 거듭제곱 또는 고정 데이터 폭의 배수로 제한하지 않는다.
  • 벡터 내부의 요소에 대한 반복 및 축소.


ARM SVE2 및 AVX-512와 같은 조건부 SIMD는 고정 폭 SIMD ALU를 사용하지만, 가변 길이 벡터처럼 보이기 위해 로컬로 제어되는(사전 조건) 유닛 활성화를 허용한다.

SIMD는 고정 폭 일괄 처리를 사용하기 때문에, 설계상 반복 및 축소를 처리할 수 없다.

SIMD와 벡터 프로세서의 차이


또한 벡터 프로세서는 벡터 체이닝을 통해 더 느린 하드웨어를 사용하고 전력을 절약하여 SIMD보다 처리량을 높이고 대기 시간을 줄여 리소스 효율성을 높일 수 있다.

4개의 64비트 요소를 사용하여 LOAD, ADD, MULTIPLY 및 STORE 시퀀스를 수행하는 SIMD 프로세서와 벡터 프로세서를 비교하면, SIMD 프로세서는 정의 및 설계상 모든 연산을 순차적으로 완료해야 한다. 반면 벡터 프로세서는 Cray-1에서와 같이 ADD와 MULTIPLY를 동시에 실행하는 기능을 가지는 경우, 더 효율적인 리소스 활용과 벡터 체이닝으로 인해 SIMD에 비해 중요한 장점과 차이점을 가진다.

현대의 팩 SIMD 아키텍처는 플린의 분류법에 나열된 것처럼, 대부분의 작업을 일괄 처리할 수 있다. 그러나 "n이 4의 배수" 및 "정렬된 접근"과 같은 가정은 제한적인 전문 사용 사례이다. 범용 루프의 경우 SIMD 설정 및 정리 오버헤드가 루프 내부의 명령어 수를 훨씬 초과할 수 있다. 프레디케이션이 없으면 SIMD 너비가 넓을수록 문제가 더 심각해져 성능 저하, 추가 전력 소비 및 불필요한 소프트웨어 복잡성을 초래한다.

반면에 벡터 프로세서는 임의의 개수 n에 대해 가변 길이 계산을 발행하도록 설계되었으므로 설정이 거의 필요하지 않으며 정리가 필요하지 않다.

Cray 스타일의 벡터 ISA의 경우, `setvl` (set vector length, 벡터 길이 설정) 명령어를 사용하여 하드웨어가 처리할 수 있는 데이터 값의 수를 정의한다. 이를 통해 벡터 프로그램을 휴대 가능하고, 공급 업체 독립적이며, 미래 지향적으로 만든다.

벡터 ISA는 명령어 수를 줄이는 것 외에도, 훨씬 더 많은 데이터 처리를 ALU에 발행할 수 있으며, 명령어 디코딩 및 발행이 유휴 상태로 유지될 수 있으므로 전력을 절약할 수 있다. 또한, 처리할 요소가 없더라도 정리 코드를 낭비하지 않는다.

결론적으로, 벡터 프로세서와 SIMD를 가진 프로세서를 구분하는 뚜렷한 차이점은 다음과 같이 요약할 수 있다.

  • 복잡한 소프트웨어와 단순화된 하드웨어 (SIMD)
  • 단순화된 소프트웨어와 복잡한 하드웨어 (벡터 프로세서)

3. 2. 벡터 명령어의 특징

벡터 프로세서는 다음과 같은 일반적인 기능을 갖추고 있으며, 많은 SIMD ISA가 아래 목록에서 차용하거나 영감을 받았다.

  • '''벡터 로드 및 저장''': 메모리와 벡터 레지스터 간에 여러 요소를 전송하는 명령어를 가진다. 일반적으로 여러 어드레싱 모드가 지원된다. 유닛-스트라이드 어드레싱 모드는 필수적이다. 최신 벡터 아키텍처는 일반적으로 임의의 상수 스트라이드뿐만 아니라 스캐터/개더(''인덱스'' 어드레싱 모드라고도 함) 어드레싱 모드도 지원한다. 고급 아키텍처는 ''세그먼트'' 로드 및 저장과 표준 벡터 로드 및 저장의 ''실패 우선'' 변형을 지원할 수도 있다. 세그먼트 로드는 각 요소가 여러 멤버를 포함하는 데이터 구조인 메모리에서 벡터를 읽는다. 멤버는 데이터 구조(요소)에서 추출되며, 각 추출된 멤버는 다른 벡터 레지스터에 배치된다.[16]
  • '''마스크된 연산''': 술어 마스크는 분기 없이 병렬 if/then/else 구문을 허용한다. 이를 통해 조건문이 있는 코드를 벡터화할 수 있다.
  • '''압축 및 확장''': 일반적으로 비트 마스크를 사용하여 마스크의 비트가 설정되었는지 또는 지워졌는지에 따라 데이터를 선형적으로 압축하거나 확장(재분배)한다. 이때 순차적 순서는 항상 유지되며 값은 복제되지 않는다(개더-스캐터, 즉 순열과 다름). 이러한 명령어는 AVX-512에 포함되어 있다.
  • '''레지스터 개더, 스캐터(일명 순열)'''[27]: 압축/확장의 덜 제한적이고 일반적인 변형이다. 다른 벡터를 "재정렬"하는 데 사용할 인덱스를 지정하기 위해 하나의 벡터를 사용한다. 개더/스캐터는 압축/확장보다 구현하기 더 복잡하며 본질적으로 비순차적이므로 벡터 체이닝을 방해할 수 있다. 개더-스캐터 메모리 로드/저장 모드와 혼동하지 않도록 주의해야 한다. 개더/스캐터 벡터 연산은 벡터 레지스터에서 작동하며, 종종 순열 명령어라고 한다.
  • '''스플랫 및 추출''': 스칼라와 벡터 간의 상호 작용에 유용하다. 단일 값을 벡터 전체로 브로드캐스트하거나 벡터에서 하나의 항목을 추출한다.
  • '''이오타''': 순차적으로 증가하는 즉시 값을 연속 요소에 드롭하는 매우 간단하고 전략적으로 유용한 명령어이다. 일반적으로 0부터 시작한다.
  • '''감소 및 반복''': 벡터에서 맵리듀스를 수행하는 연산이다(예: 전체 벡터의 최대값을 찾거나 모든 요소를 합산). 반복은 `x[i] = y[i] + x[i-1]` 형식이고 감소는 `x = y[0] + y[1]… + y[n-1]` 형식이다.
  • '''행렬 곱셈 지원''': 메모리에서 데이터를 알고리즘적으로 로드하거나, 벡터 요소에 대한 일반적인 선형 액세스를 재정렬(재매핑)하거나, "누산기"를 제공함으로써 임의 크기의 행렬을 효율적으로 처리할 수 있다. IBM POWER10은 MMA 명령어를 제공하지만,[28] 정확한 SIMD 크기에 맞지 않는 임의의 행렬 너비의 경우 레지스터 파일 리소스를 낭비하는 데이터 반복 기술이 필요하다.[29][30] NVidia는 높은 수준의 행렬 CUDA API를 제공하지만 내부 세부 정보는 사용할 수 없다.[31] 가장 리소스 효율적인 기술은 선형 벡터 데이터에 대한 액세스를 제자리에서 재정렬하는 것이다.
  • '''고급 수학 형식''': 종종 갈루아 필드 산술을 포함하지만 2진 부호화 10진수 또는 10진 고정 소수점을 포함할 수 있으며, 병렬 캐리-인 및 캐리-아웃을 지원하여 훨씬 더 큰(임의 정밀도) 산술 연산을 지원한다.
  • '''비트 조작''': 비트 수준 순열 연산, 비트 필드 삽입 및 추출, 원심 분리기 연산, 개체수 계산 및 기타 여러 가지의 벡터화된 버전을 포함한다.

3. 3. GPU 벡터 처리 기능

최신 GPU셰이더 파이프라인 배열을 포함하며, 이는 컴퓨트 커널에 의해 구동될 수 있고, 메모리 대기 시간을 숨기는 유사한 전략을 사용하여 벡터 프로세서로 간주될 수 있다.[3] GPU는 3D 셰이더 애플리케이션에서 일반적인 연산(RGB, ARGB, XYZ, XYZW)을 위해 짧은 벡터뿐만 아니라 삼각 함수 연산도 필요로 하기 때문에, 벡터 프로세서에서 발견되는 기능 외에 다음과 같은 기능을 지원한다.

  • '''부분 벡터''' - 요소는 일반적으로 두 개, 세 개 또는 네 개의 부분 요소(vec2, vec3, vec4)를 포함할 수 있으며, 주어진 술어 마스크의 비트는 부분 벡터의 요소가 아닌 전체 vec2/3/4에 적용된다. 부분 벡터는 RISC-V RVV에서도 도입되었다 ("LMUL"이라고 함).[32] 부분 벡터는 Vulkan SPIR-V 사양의 중요한 핵심 부분이다.
  • '''부분 벡터 스위즐''' - 부분 요소들을 올바른 SIMD "레인"으로 이동하기 위한 추가적인 (비용이 많이 들고 낭비적인) 명령어가 필요 없이 부분 벡터 간의 요소 연산을 허용하고 술어 마스크 비트를 절약하는 "레인 셔플링"이라고도 한다. Broadcom Videocore IV는 "레인 로테이트"[33]라는 용어를 사용하며, 다른 업계에서는 "스위즐"이라는 용어를 사용한다.[34]
  • '''초월 함수''' - 사인, 코사인 및 로그와 같은 삼각 함수 연산은 많은 까다로운 HPC 작업 부하보다 3D에서 훨씬 더 두드러지게 나타난다. 픽셀 좌표 계산은 높은 정밀도를 요구하지 않으므로 GPU의 경우 3D에서 정확도보다 속도가 훨씬 더 중요하다.

3. 4. Fault (또는 Fail) First

ARM SVE2와 RISC-V RVV에 도입된 개념은 추론적 순차 벡터 로드이다. ARM SVE2는 "First Fault Register"라는 특수 레지스터를 사용하고,[35] RVV는 벡터 길이(VL)를 수정(잘라냄)한다.[36]

ffirst영어의 기본 원리는 큰 순차 벡터 로드를 시도하지만, 하드웨어가 메모리 오류를 발생시키지 않고 성공할 수 있는 양, 또는 단순히 가장 편리한 양(0보다 큰)으로 ''실제'' 로드된 양을 임의로 줄일 수 있도록 하는 것이다. 중요한 요소는 ''후속'' 명령이 실제로 얼마나 많은 로드가 성공했는지 통지하거나 결정할 수 있으며, 이 양을 사용하여 실제로 로드된 데이터에 대해서만 작업을 수행한다는 것이다.

고정된(유연하지 않은) 로드 너비와 고정된 데이터 처리 너비를 가지고 페이지 경계를 넘는 로드를 처리할 수 없는 SIMD와 비교해 보면, 실제로 성공한 것에 적응할 수 없다. 그러나 역설적이게도 SIMD 프로그램이 사전에 (각 내부 루프, 매번) 최적으로 성공할 수 있는 것을 알아내려고 시도한다면, 그러한 명령은 반드시 중요한 내부 루프의 일부가 되기 때문에 성능을 저해하는 역할만 할 뿐이다.

ffirst영어가 왜 그렇게 혁신적인지는 표준 128비트 비-예측 non-ffirst영어 SIMD로 구현된 memcpy영어 또는 strcpy영어로 가장 잘 설명된다. IBM POWER9의 경우 strncpy영어를 구현하기 위한 수동으로 최적화된 명령의 수는 240개를 초과한다.[37] 반대로, 수동으로 최적화된 RVV 어셈블러의 동일한 strncpy영어 루틴은 단 22개의 명령이다.[38]

SIMD 예는 메모리 끝에서 너무 많은 값을 읽으려고 시도하여 잠재적으로 오류가 발생하고 실패할 수 있다. 또한 경계를 넘어감으로써 상당한 수의 페이지 또는 정렬되지 않은 오류를 일으킬 수 있다. 반대로, 벡터 아키텍처가 로드할 요소 수를 결정할 자유를 허용함으로써 strncpy영어의 첫 번째 부분은 처음에 최적이 아닌 메모리 경계에서 시작하는 경우, ''후속'' 루프 반복에서 벡터화된 메모리 읽기 배치가 기본 캐시 및 가상 메모리 배열과 최적으로 정렬되도록 충분한 로드를 반환할 수 있다. 또한 하드웨어는 주어진 루프 반복의 메모리 읽기를 ''정확히'' 페이지 경계에서 종료할 수 있는 기회를 사용하여(비용이 많이 드는 두 번째 TLB 조회를 피함) 추론적 실행을 통해 현재 루프에서 데이터를 처리하는 동안 다음 가상 메모리 페이지를 준비할 수 있다. 이 모든 것은 프로그램 자체가 아닌 하드웨어에 의해 결정된다.[39]

4. 성능 및 속도 향상

벡터 프로세서는 한 번에 여러 데이터에 대해 동일한 연산을 수행하여 성능을 크게 향상시킬 수 있다. 일반적인 CPU는 한 번에 한두 개의 데이터를 처리하는 반면, 벡터 프로세서는 "여기에서 여기까지"의 모든 숫자를 "저기에서 저기까지"의 모든 숫자에 더하라는 식으로 한 번에 많은 데이터에 대해 연산을 수행한다.

이렇게 하면 명령어 디코딩 시간을 절약할 수 있다. 일반 CPU는 각 데이터마다 메모리 주소를 디코딩하고 데이터를 가져와야 하지만, 벡터 프로세서는 한 번의 명령어만 읽고, 그 명령어 자체에 정의된 대로 연속된 데이터에 대해 동일한 연산을 반복한다.

예를 들어, 10개의 숫자 쌍을 더하는 작업을 생각해 보자. 일반 CPU는 루프를 통해 각 쌍을 가져와 더하지만, 벡터 프로세서는 한 번의 `vadd` 명령어(Cray 스타일의 경우 `setvli`, `vload`, `vadd`, `vstore`)로 처리할 수 있다. 이렇게 하면 주소 변환 횟수, 명령어 가져오기 및 디코딩 횟수가 줄어들어 성능이 향상된다.[14] 또한, 코드 크기가 줄어들어 메모리 사용 효율성이 높아지고, 분기 예측이 쉬워지며, 명령어에 하드 코딩된 길이 제한이 없어 "미래 보장"이 가능하다.[15]

최신 벡터 프로세서는 여러 개의 기능 유닛을 병렬로 사용하여 성능을 더욱 향상시킨다. 벡터 명령어는 여러 개의 독립적인 연산을 지정하므로, 각 연산 간의 종속성을 확인할 필요가 없어 제어 로직이 단순해지고 지연이 줄어든다.

벡터 프로세서의 성능 향상은 벡터 속도 비율(`r`)과 벡터화 비율(`f`)로 계산할 수 있다. `r`은 벡터 연산이 스칼라 연산보다 얼마나 빠른지를 나타내고, `f`는 전체 연산 중 벡터화된 연산의 비율을 나타낸다.

벡터 프로세서의 성능 향상 계산식은 다음과 같다.

:r/[(1-f)*r+f]

이 식에서 볼 수 있듯이, 벡터 프로세서의 성능이 아무리 높아도(`r`이 무한대) 속도 향상은 `1/(1-f)`를 넘을 수 없다. 즉, 벡터화 비율(`f`)이 성능에 매우 중요하다는 것을 의미한다.

참조

[1] 간행물 Computers by the thousand https://archive.org/[...] 1976-06-17
[2] 서적 The history of computer technology in their faces (in Russian) KIT
[3] 웹사이트 MIAOW Vertical Research Group http://miaowgpu.org/
[4] 웹사이트 MIAOW GPU https://github.com/V[...]
[5] 보도자료 Andes Announces RISC-V Multicore 1024-bit Vector Processor: AX45MPV https://www.globenew[...] GlobeNewswire 2022-12-07
[6] 학회 An algorithm of hardware unit generation for processor core synthesis with packed SIMD type instructions 2002
[7] 웹사이트 Riscv-v-spec/V-spec.adoc at master · riscv/Riscv-v-spec https://github.com/r[...] 2023-06-16
[8] 웹사이트 Vector Engine Assembly Language Reference Manual https://sxauroratsub[...] 2023-06-16
[9] 웹사이트 Documentation – Arm Developer https://developer.ar[...]
[10] 웹사이트 Vector Architecture http://thebeardsage.[...] 2020-04-27
[11] 웹사이트 Vector and SIMD processors, slides 12-13 http://www.inf.ed.ac[...]
[12] 웹사이트 Array vs Vector Processing, slides 5-7 https://course.ece.c[...]
[13] 웹사이트 SIMD vs Vector GPU, slides 22-24 https://course.ece.c[...]
[14] 서적 Computer Organization and Design: the Hardware/Software Interface page 751-2 https://archive.org/[...] Morgan Kaufmann
[15] 웹사이트 Riscv-v-spec/V-spec.adoc at master · riscv/Riscv-v-spec https://github.com/r[...] 2022-11-19
[16] 웹사이트 Videocore IV Programmer's Manual https://github.com/h[...]
[17] 웹사이트 Videocore IV QPU analysis by Jeff Bush https://jbush001.git[...]
[18] 웹사이트 Coding for Neon - Part 3 Matrix Multiplication https://community.ar[...] 2013-09-11
[19] 웹사이트 SIMD considered harmful https://www.sigarch.[...]
[20] 웹사이트 ARM SVE2 tutorial https://developer.ar[...]
[21] 웹사이트 Sse - 1-to-4 broadcast and 4-to-1 reduce in AVX-512 https://stackoverflo[...]
[22] 웹사이트 Assembly - Fastest way to do horizontal SSE vector sum (Or other reduction) https://stackoverflo[...]
[23] 웹사이트 Riscv-v-spec/V-spec.adoc at master · riscv/Riscv-v-spec https://github.com/r[...] 2022-11-19
[24] 웹사이트 Cray Overview http://www.lanl.gov/[...]
[25] 웹사이트 RISC-V RVV ISA https://github.com/r[...]
[26] 웹사이트 SX-Arora Overview https://sx-aurora.gi[...]
[27] 웹사이트 RVV register gather-scatter instructions https://github.com/r[...]
[28] Youtube IBM's POWER10 Processor - William Starke & Brian W. Thompto, IBM https://m.youtube.co[...]
[29] arXiv A matrix math facility for Power ISA(TM) processors
[30] 서적 High Performance Computing for Computer Graphics and Visualisation
[31] 웹사이트 CUDA C++ Programming Guide https://docs.nvidia.[...]
[32] 웹사이트 LMUL > 1 in RVV https://github.com/r[...]
[33] 웹사이트 Abandoned US patent US20110227920-0096 https://patents.goog[...]
[34] 웹사이트 Videocore IV QPU https://github.com/h[...]
[35] 웹사이트 Introduction to ARM SVE2 https://developer.ar[...]
[36] 문서 RVV fault-first loads https://github.com/r[...]
[37] 문서 PATCH to libc6 to add optimised POWER9 strncpy https://patchwork.oz[...]
[38] 문서 RVV strncpy example https://github.com/r[...]
[39] 논문 ARM SVE2 paper by N. Stevens https://alastairreid[...]
[40] 웹사이트 プロセッサ開発のセンス ~第4回 ベクトル・プロセッサ~ {{!}} 株式会社エヌエスアイテクス (NSITEXE,Inc.) https://www.nsitexe.[...] 2023-02-22
[41] 문서 いわゆる、「0オペランド」(スタックマシン等)・「1オペランド」(初期のコンピュータ。アキュームレータマシン)・「2オペランド」(CISCに多い)・「3オペランド」(RISCに多い)のこと。
[42] 문서 複素数のハードウェアサポートは、ポピュラーではないが特に珍しいものでもない。
[43] 문서 牧野淳一郎『スーパーコンピューティングの将来』25.4. 日本の時代 1990年代前半まで http://jun-makino.sa[...] 2023-09-09
[44] 문서 ASCII.jp:スーパーコンピューターの系譜 最後のベクトルマシンとなったCray X1 https://ascii.jp/ele[...] 2023-09-09
[45] 문서 Arm SVE命令セットって美味しいの? - Qiita https://qiita.com/aK[...] 2023-09-09
[46] 문서 「ベクトルプロセッサとスカラープロセッサ両方の性質を兼ね備えている」とある。 https://www.fujitsu.[...] 2023-09-09
[47] 서적 『RISC-V 原典』第8章 (pp.74-88) p.75に「ベクトルの長さとクロックサイクル当たりの最大の処理を命令のエンコーディングから分離することがベクトル・アーキテクチャの最も重要な点である」と強調がある。
[48] 서적 『RISC-V 原典』p.85に「vfmadd213pd とは何であり、いつ使うべきかを、どうしたら覚えられようか」とある。



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com