ScholarGate
어시스턴트

SIMD 및 벡터 프로세서

SIMD 및 벡터 프로세서는 단일 명령어를 여러 데이터 요소에 동시에 적용하여 데이터 수준 병렬성을 활용하며, 멀티미디어, 과학 계산, 머신러닝 커널과 같은 규칙적이고 반복적인 계산을 가속화합니다.

PaperMind(으)로 주제 찾기곧 제공Find papers & topics
Tools & resources
슬라이드 다운로드
Learn & explore
동영상곧 제공

Definition

SIMD(단일 명령어 다중 데이터) 및 벡터 처리는 넓은 벡터 레지스터 또는 SIMD 레인에 저장된 여러 데이터 요소에 대해 하나의 명령어가 동일한 연산을 동시에 수행하여 데이터 수준 병렬성을 활용하는 아키텍처 기술입니다.

Scope

이 주제는 단일 명령어 다중 데이터(SIMD) 실행을 다룹니다. 여기에는 벡터 레지스터와 파이프라인 레인을 갖춘 고전적인 벡터 프로세서, 상용 CPU의 SIMD 확장, 마스킹 및 조건부 실행(predication), 그리고 데이터 병렬성이 유익한 조건 등이 포함됩니다. 데이터 병렬 하드웨어의 아키텍처를 다루지만, 코어 간 스레드 수준 병렬성(멀티코어 및 칩 멀티프로세서)과 대규모 다중 코어 GPU 모델(GPU 아키텍처)은 제외합니다. 이들은 부분적으로 겹칠 수 있습니다.

Core questions

  • 하나의 명령어를 여러 데이터 요소에 적용하는 것이 어떻게 병렬 속도 향상을 달성합니까?
  • 벡터 프로세서는 상용 CPU의 SIMD 확장과 어떻게 다릅니까?
  • 마스킹 및 조건부 실행(predication)을 통해 조건부 연산은 어떻게 처리됩니까?
  • 어떤 종류의 계산이 데이터 병렬 실행으로부터 가장 큰 이점을 얻습니까?

Key concepts

  • 단일 명령어 다중 데이터 (SIMD)
  • 벡터 레지스터 및 레인
  • 벡터 길이 및 스트립 마이닝
  • 마스킹 및 조건부 실행(predication)
  • gather/scatter
  • SIMD CPU 확장
  • 데이터 수준 병렬성
  • 처리량 지향 실행

Key theories

단일 명령어 다중 데이터를 통한 데이터 수준 병렬성
동일한 연산이 배열의 여러 요소에 독립적으로 적용될 때, 하나의 명령어가 많은 병렬 레인 또는 파이프라인 벡터 장치를 구동할 수 있으며, 명령어 인출 및 제어 오버헤드를 대규모 데이터에 분산시켜 규칙적인 계산에 높은 처리량을 제공합니다.

Mechanisms

벡터 프로세서는 벡터 레지스터에 요소 배열을 저장하고, 파이프라인 또는 복제된 기능 단위를 통해 처리하며, 하나의 명령어가 전체 벡터에 대한 연산을 지정합니다. 긴 벡터는 청크(스트립 마이닝)로 처리됩니다. CPU의 SIMD 확장은 고정 폭 레지스터를 제공하며 요소별로 작동합니다. 마스킹은 요소별 조건부 실행을 가능하게 하고, gather/scatter 연산은 비연속적인 메모리 접근을 처리합니다.

Clinical relevance

데이터 병렬 하드웨어는 최신 프로세서의 최고 처리량 대부분을 제공합니다. SIMD 확장은 미디어 코덱, 이미지 처리, 물리 시뮬레이션, 딥러닝의 기반이 되는 밀집 선형 대수를 가속화하며, 벡터 아키텍처는 슈퍼컴퓨팅의 동력입니다. 효과적인 사용은 컴파일러와 프로그래머가 규칙적이고 벡터화 가능한 계산을 노출하는 데 달려 있습니다.

History

벡터 처리는 1970년대 CDC STAR-100 및 특히 Cray-1과 같은 슈퍼컴퓨터에 의해 개척되었습니다. 데이터 병렬성은 1990년대 후반부터 SIMD 확장(MMX, SSE, AVX, NEON)을 통해 상용 CPU에 다시 도입되었으며, 확장 가능한 벡터 확장과 밀집 수치 연산 워크로드의 부활은 벡터 아키텍처에 대한 관심을 새롭게 했습니다.

Key figures

  • Seymour Cray
  • Michael J. Flynn
  • John L. Hennessy
  • David A. Patterson

Related topics

Seminal works

  • hennessy2019
  • patterson2020

Frequently asked questions

SIMD 확장과 벡터 프로세서의 차이점은 무엇입니까?
SIMD 확장은 기존 CPU에 고정 폭 레지스터(예: 128 또는 256비트)를 추가하여 명령어당 정해진 수의 요소에 대해 작동합니다. 벡터 프로세서는 벡터 레지스터와 길고 종종 가변적인 길이의 벡터에 대해 작동하는 명령어를 중심으로 구축되며, 일반적으로 깊이 파이프라인된 레인을 통해 작동합니다.
모든 프로그램이 SIMD의 이점을 얻지 못하는 이유는 무엇입니까?
SIMD는 규칙적인 메모리 접근을 통해 많은 독립적인 데이터 요소에 동일한 연산을 적용하는 계산의 속도를 높입니다. 분기, 불규칙한 데이터 종속성 또는 분산된 메모리 접근이 지배적인 프로그램은 병렬 레인을 유용하게 바쁘게 유지할 수 없으므로 이점이 거의 없습니다.

Methods for this concept

Related concepts