2012-10-18 4 views
9

SIMD와 벡터 프로세서의 차이점은 무엇입니까? 현재 나의 이해는 벡터 처리가 SIMD의 부분 집합이라는 것이다. 하지만 "SIMD는 벡터에만 국한되지 않는다"는 말을 들었습니다. 그 의미가 정확히 무엇인지 모르겠습니다. 구체적인 예가 있습니까?SIMD vs 벡터 아키텍처

또한 스칼라 아키텍처가 벡터 아키텍처보다 우수한 이유는 무엇입니까? 프로그램을 구현하고 프로그램하기가 쉽기 때문입니까?

우리는 SISD (일반 1 코어 CPU), SIMD (단일/다중 코어 프로세서의 SSE 확장), MIMD (errmm .. 대략 MPI와 비슷하게 클러스터링!) 및 MISD 비실용적/불가능한 것으로 간주 됨). 이 외에도 제가 읽은 몇 가지 다른 것들은 Vector processing과 Superscalar 아키텍처입니다. 내가 놓치고 알아야 할 새로운 아키텍처? 감사!

답변

9

Flynn's Taxonomy은 컴퓨터 아키텍처의 분류입니다. Flynn의 Taxonomy에 따라 벡터 처리는 SIMD 클래스로 분류됩니다. 벡터 프로세서가 아니지만 SIMD 클래스에 속하는 아키텍처가 있습니다. 예는 다음과 같습니다. Connection Machine 및 다수의 프로세서가 동일한 명령을 실행하는 많은 GPUs.

MMX, SSE, Altivec 등은 벡터 처리 및 SIMD 클래스로 분류됩니다. 서브 워드 병렬성, 소규모 SIMD, 짧은 벡터 처리, 레지스터 내 SIMD 또는 가장 일반적으로 멀티미디어 확장과 같은 많은 개념이 있습니다.

전통적으로 Cray 또는 STAR과 같은 벡터 프로세서는 더 크고 다양한 벡터 크기를 사용했습니다.

Superscalar은 프로세서를 구현하는 방법이지만 Flynn 's Taxonomy처럼 명령어 세트에 대한 언급은하지 않습니다.

3

실제 사례는 ARM Neon 대 ARM VFP의 비교에서 찾을 수 있습니다. 첫 번째는 2,4,8 또는 16 개의 항목을 평행 (또는 거의 평행)으로 평가하는보다 고전적인 SIMD입니다. 다른 하나는 두 세트의 연속 레지스터를 순차적으로 반복하도록 프로그래밍 된 부동 소수점 확장입니다 (예 : 2 건너 뛸 수 있음). S0..S3, S8..S11을 작성하고 결과를 S12..S15에 씁니다.

후자의 아키텍처는 1-4 클럭 사이클을 사용하여 같은 명령으로 변수 번호 (1-4) 연산을 처리하여 작업을 완료합니다. 아키텍처가 명령어 당 128 개의 연산을 허용한다면 벡터와 SIMD 아키텍처 일지라도 시스템 간의 개념적 차이가 명확 해집니다.