맨위로가기

플린 분류

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

1. 개요

플린 분류는 컴퓨터 아키텍처를 동시 명령어 수와 데이터 스트림 수에 따라 분류한 것이다. 이 분류는 SISD(단일 명령어, 단일 데이터), SIMD(단일 명령어, 다중 데이터), MISD(다중 명령어, 단일 데이터), MIMD(다중 명령어, 다중 데이터)의 네 가지 범주로 나뉜다. SIMD는 배열 프로세서, 파이프라인 프로세서, 연관 프로세서로 세분화되며, MIMD는 SPMD(단일 프로그램, 다중 데이터)와 MPMD(다중 프로그램, 다중 데이터)로 더 나눌 수 있다. 플린 분류는 병렬 컴퓨터를 특징에 따라 분류하는 데 한계가 있다는 비판도 있다.

더 읽어볼만한 페이지

  • 플린 분류 - MIMD
    MIMD는 여러 프로세서가 각기 다른 명령어와 데이터를 처리하는 병렬 컴퓨팅 구조로, 공유 메모리 및 분산 메모리 모델로 나뉘며, 높은 병렬성을 요구하는 다양한 분야에 활용되지만 프로그래밍 복잡성 등의 과제를 안고 있다.
  • 플린 분류 - 폰 노이만 구조
    폰 노이만 구조는 CPU, 주소 지정 메모리, 버스를 핵심 요소로 하는 컴퓨터 아키텍처로, 프로그램 내장 방식을 통해 명령어와 데이터를 동일한 기억 장치에 저장하고 순차적으로 실행하는 특징을 가진다.
  • 컴퓨터의 유형 - 데스크톱 컴퓨터
    데스크톱 컴퓨터는 독립된 디스플레이, 키보드, 마우스 등을 연결하여 책상 위에 놓고 사용하는 개인용 컴퓨터로, 1970년대 후반 등장 이후 다양한 폼 팩터와 용도로 발전해왔으며, 노트북과 스마트 기기의 등장으로 성장세가 둔화되었으나 고성능을 요구하는 분야에서 중요한 위치를 차지하며 게이밍 데스크톱 시장의 성장과 함께 재조명받고 있다.
  • 컴퓨터의 유형 - 양자 컴퓨터
    양자 컴퓨터는 양자역학적 현상을 이용하여 정보를 처리하는 컴퓨터로, 큐비트를 통해 0과 1을 동시에 표현하여 특정 연산에서 기존 컴퓨터보다 빠른 속도를 보이며 암호 해독, 신약 개발 등 다양한 분야에 혁신을 가져올 것으로 기대된다.
플린 분류
개요
유형컴퓨터 아키텍처 분류
개발자마이클 J. 플린
발표 연도1966년
분류
SISD (단일 명령어 단일 데이터)단일 처리 장치가 명령어 스트림을 실행하고, 단일 데이터 스트림에서 작동함.
SIMD (단일 명령어 다중 데이터)단일 명령어가 여러 처리 장치에 의해 실행되며, 각 처리 장치는 다른 데이터 스트림에서 작동함.
MISD (다중 명령어 단일 데이터)여러 처리 장치가 동일한 데이터 스트림에서 작동하며, 각 처리 장치는 서로 다른 명령어 스트림을 실행함.
MIMD (다중 명령어 다중 데이터)여러 처리 장치가 여러 데이터 스트림에서 작동하며, 각 처리 장치는 서로 다른 명령어 스트림을 실행함.

2. 분류

플린 분류는 컴퓨터 아키텍처를 동시 명령어 수 또는 데이터 스트림에 따라 분류한 것이다. 1972년, 플린은 SIMD를 세 가지 하위 범주로 추가 정의했다.[2]

분류개요
단일 명령어, 단일 데이터 스트림 (SISD)명령어와 데이터에 병렬성이 없는 순차적 컴퓨터. 구형 개인용 컴퓨터메인프레임이 이에 해당한다.
단일 명령어, 다중 데이터 스트림 (SIMD)하나의 명령어를 여러 데이터 스트림에 적용하는 형태. 벡터 컴퓨터, GPU, MMX, SSE, 3DNow!, SPE 등이 있다.
다중 명령어, 단일 데이터 스트림 (MISD)여러 명령어를 하나의 데이터 스트림에 적용하는 형태. 결함 감내 설계 시스템에서 중복성을 확보하기 위해 사용된다.
다중 명령어, 다중 데이터 스트림 (MIMD)여러 프로세서가 각기 다른 데이터를 다른 명령어로 처리하는 컴퓨터. 분산 시스템이 대표적이며, 멀티 코어 프로세서를 탑재한 최신 개인용 컴퓨터도 여기에 해당한다.


2. 1. 단일 명령어, 단일 데이터 (SISD)

명령어 스트림이나 데이터 스트림에서 병렬성을 활용하지 않는 순차적 컴퓨터이다. 단일 제어 장치(CU)는 메모리에서 단일 명령어 스트림(IS)을 가져온다. 그런 다음 CU는 단일 처리 요소(PE)가 단일 데이터 스트림(DS)에서 한 번에 하나의 연산을 수행하도록 적절한 제어 신호를 생성한다.

SISD 아키텍처의 예로는 이전 개인용 컴퓨터(PC)(2010년까지 많은 PC가 여러 코어를 가지고 있었다) 및 메인프레임 컴퓨터와 같은 전통적인 단일 프로세서 시스템이 있다.

2. 2. 단일 명령어, 다중 데이터 (SIMD)

플린은 1972년 논문에서 SIMD를 다음과 같은 세 가지 하위 범주로 세분화했다.[2]

  • '''배열 프로세서''': 동일한 하나의 명령을 받지만, 각 병렬 처리 장치는 자체적으로 분리된 별개의 메모리 및 레지스터 파일을 갖는다.
  • '''파이프라인 프로세서''': 동일한 하나의 명령을 받지만, 중앙 자원에서 데이터를 읽어 각자 해당 데이터의 조각을 처리한 다음, 결과를 동일한 중앙 자원에 다시 기록한다. 플린의 1972년 논문 그림 5에서 해당 자원은 주 메모리이다. 현대 CPU의 경우 해당 자원은 일반적으로 레지스터 파일이다.
  • '''연관 프로세서''': 동일한 하나의 명령을 받지만, 각 병렬 처리 장치에서 해당 장치에 "로컬" 데이터에 따라 실행을 수행할지 또는 건너뛸지에 대한 "독립적인" 결정이 내려진다. 현대 용어로는 이를 "예측된"(마스크된) SIMD라고 한다.


현대적인 용어로서의 배열 프로세서는 "단일 명령, 다중 스레드(SIMT)"이다. 이는 플린의 1972년 분류 체계에서 SIMD의 하위 범주로 구분되는 명확한 분류이다. 병렬 하위 요소가 자체적인 독립적인 레지스터 파일과 메모리(캐시 및 데이터 메모리)를 갖는다는 특징으로 식별된다. 플린의 원본 논문에서는 SIMT 프로세서의 두 가지 역사적 예시로 SOLOMON과 ILLIAC IV를 언급하고 있다.

Aspex Microelectronics의 연관 문자열 프로세서(ASP)[7]는 마케팅 자료에서 스스로를 "대규모 광대역 SIMD"로 분류했지만, ''비트 레벨'' ALU와 비트 레벨 프레디케이션(플린의 분류 체계: 연관 처리)을 가지고 있었으며, 4096개의 각 프로세서는 자체적인 레지스터와 메모리를 갖추고 있었다(플린의 분류 체계: 배열 처리).[9][10]

1972년 플린이 논문을 작성했을 당시, 많은 시스템이 파이프라인이 읽고 쓰는 자원으로 주 메모리를 사용했다. 모든 "파이프라인"이 주 메모리가 아닌 레지스터 파일에서 읽고 쓸 때, 현대적 형태의 SIMD가 나타난다. 예시로는 알티벡, NEON, 그리고 AVX 등이 있다.

이러한 종류의 레지스터 기반 SIMD에 대한 다른 이름으로는 "팩 SIMD"[11]가 있으며, 또 다른 이름은 레지스터 내 SIMD (SWAR)이다. 프레디케이션이 적용될 경우, 이는 연관 처리가 된다.

연관 프로세서의 현대적인 용어는 "조건부" (또는 마스크) SIMD이다. 예시로는 AVX-512가 있다.

일부 현대적인 설계(특히 GPU)는 이러한 하위 범주 중 둘 이상의 특징을 취한다.

분류개요
단일 명령어, 다중 데이터 스트림(SIMD)하나의 명령어 열을 여러 데이터 스트림에 적용하는 형태의 컴퓨터이다. 멀티미디어 처리(이미지, 음성, 동영상 등)에 많이 사용된다. 벡터 컴퓨터, GPU, MMX, SSE, 3DNow!, SPE 등이 SIMD 아키텍처의 예시이다.


2. 3. 다중 명령어, 단일 데이터 (MISD)

여러 개의 명령어가 하나의 데이터 스트림에서 작동하는 방식으로, 결함 허용에 사용되는 드문 아키텍처이다. 이질적인 시스템은 동일한 데이터 스트림에서 작동하며 결과에 동의해야 한다. 우주왕복선 비행 제어 컴퓨터가 그 예시이다.[12] 이론적으로 MISD형으로 제안된 컴퓨터도 몇몇 있었지만, 높은 가격에 비해 성능이 좋지 않아 대량 생산에 이르지 못했다.

2. 4. 다중 명령어, 다중 데이터 (MIMD)

여러 개의 자율적인 프로세서가 서로 다른 데이터에 대해 동시에 서로 다른 명령어를 실행한다. MIMD 아키텍처에는 멀티 코어 수퍼스칼라 프로세서와 분산 시스템이 포함되며, 하나의 공유 메모리 공간 또는 분산 메모리 공간을 사용한다.[1]

일반적으로 분산 시스템은 MIMD형이라고 하며, 단일 공유 메모리를 사용하는 경우와 분산 메모리를 사용하는 경우가 있다. 최근의 개인용 컴퓨터에서는 프로세서가 여러 코어를 탑재하고 (멀티 프로세서, 멀티 코어), 멀티태스킹을 애플리케이션 단위로 분산하고 있다.[1]

3. 분류 비교를 위한 다이어그램

SISD


MISD


SIMD


MIMD


4개의 아키텍처는 아래와 같이 시각적으로 표시된다. 각 처리 장치(PU)는 유니코어 또는 멀티코어 컴퓨터에 대해 표시한 것이다.[4]

다음은 4가지 아키텍처를 도해한 것이다. "PU"는 처리 장치(processing unit), "Instruction Pool"은 명령 풀, "Data Pool"은 데이터 풀이다.


4. 추가 분류

플린은 1972년에 SIMD의 세 가지 하위 범주를 추가로 정의했다.[2]


  • 배열 처리 (SIMT)
  • 파이프라인 처리 (팩 SIMD)
  • 연관 처리 (예측/마스크 SIMD)


2006년 기준으로, TOP500 슈퍼컴퓨터 상위 10위와 대부분의 슈퍼컴퓨터가 MIMD 아키텍처를 기반으로 한다. MIMD 범주는 더 세분화되기도 한다.[13][14][15][16][17]

이 외에도 다른 분류법이 제안되었다.[29]

또한, 플린의 분류는 "기계적일 뿐"이며, 현재[30]까지 제안된 병렬 컴퓨터를 특징에 따라 잘 분류할 수 없다는 비판이 있어, 새로운 분류를 시도한 서적도 있다.[31]

4. 1. 단일 프로그램, 다중 데이터 (SPMD)

여러 개의 자율 프로세서가 서로 다른 데이터에 대해 동일한 프로그램을 동시에 실행한다(하지만 SIMD가 강제하는 락스텝 방식이 아닌 독립적인 지점에서 실행).[19] ''단일 프로세스, 다중 데이터''라고도 한다.[17] SPMD는 명시적 병렬 프로그래밍의 가장 일반적인 스타일이다.[20] SPMD 모델과 용어는 RP3 팀의 Frederica Darema에 의해 제안되었다.[21]

4. 2. 다중 프로그램, 다중 데이터 (MPMD)

여러 개의 독립적인 프로세서가 동시에 최소 두 개의 독립적인 프로그램을 실행한다. 고성능 컴퓨팅(HPC) 환경에서 이러한 시스템은 종종 하나의 노드를 "호스트"("명시적 호스트/노드 프로그래밍 모델") 또는 "매니저"("매니저/워커" 전략)로 지정하여, 데이터를 다른 모든 노드에 분배하는 하나의 프로그램을 실행하며, 다른 모든 노드는 두 번째 프로그램을 실행한다. 그런 다음 다른 노드는 결과를 매니저에게 직접 반환한다. 이의 예로는 SPU/PPU 프로세서를 갖춘 소니 플레이스테이션 3 게임 콘솔이 있다.[24]

MPMD는 HPC가 아닌 환경에서도 흔히 사용된다. 예를 들어, make 빌드 시스템은 make 실행 파일 외에 대상 종속 프로그램을 사용하여 여러 종속성을 병렬로 빌드할 수 있다. MPMD는 파이프라인 형태를 취하는 경우도 많다. ''ls | grep "A" | more''와 같은 간단한 유닉스 셸 명령은 하나의 출력을 다음 입력으로 사용하여 별도의 프로그램을 병렬로 실행하는 세 개의 프로세스를 시작한다.

이러한 방식은 개별 프로그램이 특정 병렬 알고리즘의 일부를 구현하는 것이 아니라 일반적인 구성 요소라는 점에서 HPC에서 사용되는 명시적 병렬 프로그래밍과 다르다. 파이프라인 접근 방식에서는 사용 가능한 병렬 처리 양이 데이터 세트의 크기에 따라 증가하지 않는다.

5. 비판 및 새로운 분류

2006년 현재, TOP500에서 상위를 차지하는 머신은 대부분 MIMD/SIMD 헤테로지니어스 아키텍처이다. MIMD는 더 자세히 다음과 같이 분류하기도 한다.[24][25][26][27]


  • '''단일 프로그램, 다중 데이터 스트림(SPMD)'''


: 여러 프로세서가 동시에 같은 프로그램을 실행한다. 단, SIMD나 MISD(록스텝 실행)처럼 같은 부분이 아니라, 각각 다른 부분을 실행하며, 서로 다른 데이터를 사용한다. '단일 프로세스, 다중 데이터'라고도 불리며, 병렬 프로그래밍에서 가장 일반적이다.[28]

  • '''다중 프로그램 다중 데이터(MPMD)'''


: 여러 프로세서가 동시에 적어도 2개 이상의 독립적인 프로그램 그룹을 실행한다. 이는 멀티 프로세서에서 여러 프로세스를 동시에 실행하는 것과는 다르다. 멀티 프로세서 환경은 단순히 하드웨어가 멀티 프로세서로 되어 있을 뿐이며, 운영 체제가 이를 여러 컴퓨터인 것처럼 보이게 하는 것이다. 여기서 말하는 MPMD는 하나의 노드를 "호스트" 또는 "매니저"로 하여, 거기서 첫 번째 프로그램을 실행하고, 그 프로그램이 다른 노드 그룹에 두 번째 프로그램과 데이터를 분배하여 실행되는 형태를 의미한다. 각 노드가 실행한 결과는 매니저 노드로 반환된다.

이 외의 다른 분류법도 제안되었다.[29]

또한 플린의 분류는 "기계적일 뿐"이며, 현재[30]까지 제안된 병렬 컴퓨터를 특징에 따라 잘 분류할 수 없다는 비판적인 지적이 있어, 새로운 분류를 시도한 서적도 있다.[31]

참조

[1] 간행물 Very high-speed computing systems https://ieeexplore.i[...] 1966-12
[2] 간행물 Some Computer Organizations and Their Effectiveness https://www.cs.utah.[...] 1972-09
[3] 간행물 A Survey of Parallel Computer Architectures http://www.eng.ucy.a[...] 1990-02
[4] 웹사이트 Data-Level Parallelism in Vector, SIMD, and GPU Architectures http://www.cse.msu.e[...] 2013-11-12
[5] 간행물 Some Computer Organizations and Their Effectiveness https://www.cs.utah.[...] 1972-09
[6] 웹사이트 NVIDIA's Next Generation CUDA Compute Architecture: Fermi http://www.nvidia.co[...]
[7] 간행물 ASP: A Cost-Effective Parallel Microcomputer 1988
[8] 웹사이트 Linedancer HD – Overview http://www.aspex-sem[...]
[9] conference Artificial Neural Network on a Massively Parallel Associative Architecture Springer Science+Business Media 1988
[10] 웹사이트 Effective Monte Carlo simulation on System-V massively parallel associative string processing architecture https://core.ac.uk/d[...]
[11] conference An algorithm of hardware unit generation for processor core synthesis with packed SIMD type instructions 2002
[12] 간행물 The space shuttle primary computer system 1984-09
[13] 웹사이트 Single Program Multiple Data stream (SPMD) http://www.llnl.gov/[...] Llnl.gov 2013-12-09
[14] 웹사이트 Programming requirements for compiling, building, and running jobs http://www.cisl.ucar[...]
[15] 웹사이트 CTC Virtual Workshop http://web0.tc.corne[...] Web0.tc.cornell.edu 2013-12-09
[16] 웹사이트 NIST SP2 Primer: Distributed-memory programming http://math.nist.gov[...] Math.nist.gov 2013-12-09
[17] 웹사이트 Understanding parallel job management and message passing on IBM SP systems http://www.cisl.ucar[...]
[18] 웹사이트 9.2 Strategies http://www.tc.cornel[...]
[19] 문서 Flynn's+taxonomy
[20] 웹사이트 Single program multiple data https://xlinux.nist.[...] Nist.gov 2013-12-09
[21] 간행물 A single-program-multiple-data computational model for EPEX/FORTRAN
[22] 문서 Flynn, M., Some Computer Organizations and Their Effectiveness, IEEE Trans. Comput., Vol. C-21, pp. 948, 1972.
[23] 문서 Duncan, Ralph, "A Survey of Parallel Computer Architectures", IEEE Computer. February 1990, pp. 5-16.
[24] 웹사이트 SPMD http://www.llnl.gov/[...]
[25] 웹사이트 Programming requirements for compiling, building, and running jobs http://www.cisl.ucar[...]
[26] 웹사이트 SPMD or Manager/Worker http://web0.tc.corne[...]
[27] 웹사이트 Distributed-memory programming http://math.nist.gov[...]
[28] 웹사이트 single program multiple data http://www.nist.gov/[...]
[29] 웹사이트 Distributed Memory Programming http://www.tc.cornel[...]
[30] 서적 1988年の書籍
[31] 서적 雨宮真人・田中譲『コンピュータアーキテクチャ』ISBN 4-274-07426-9 pp. 26-



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

문의하기 : help@durumis.com