★KEYWORD★
플린 분류 : 컴퓨터 구조 분류 / 명령어와 데이터 입력의 개수에 따라 구분 / SISD / SIMD / MISD / MIMD
플린 분류 (Flynn's taxonomy)
스탠퍼드 대학교의 전기공학과 교수인 마이클 J. 플린이 1966년에 제안한 컴퓨터 구조 분류이다.
명령어(Instruction)와 데이터 입력(Data stream)의 개수에 따라 구분한다.
분류
플린이 정의한 네 가지 분류는 아키텍처에서 사용 가능한 동시 명령어 수 또는 데이터 스트림에 기초한다.
- SISD(Single Instruction, Single Data stream)
- SIMD(Single Instruction, Multiple Data streams)
- MISD(Multiple Instruction, Single Data stream)
- MIMD (Multiple Instruction, Multiple Data streams)
SISD
Single instruction stream, single data stream.
한 번에 데이터 하나를 명령어 하나로 처리하는 기법.
폰 노이만 구조의 컴퓨터는 기본적으로 이 기법을 따른다. 가장 기본적이고 간단한 구조이지만 명령어를 실행할 때마다 명령어와 데이터를 읽어와 처리해야 하기 때문에 효율이 떨어진다.
SIMD
Single instruction stream, multiple data streams.
한 번에 데이터 여러 개를 명령어 하나로 처리하는 기법.
현재 대부분의 프로그램은 SISD 방식으로 동작한다. 즉 하나의 명령으로 하나의 데이터를 처리하는 것이고 2개의 데이터를 처리하려면 2번 연산한다. 라이브러리 수준의 프로그램이 아닌 경우에는 백이면 백 SISD로 구현되는데 CPU의 성능을 100% 활용하지 못하는 것이다. 다행히 요즘 컴파일러들은 똑똑해서 일괄계산 루프문 정도는 SIMD로 잘 바꿔주는 편이다.
MISD
Multiple instruction streams, single data stream.
한 번에 데이터 한 개를 여러 명령어로 처리하는 기법.
예를 들어 곱셈을 하고 싶은데 명령어는 SHIFT 연산과 ADD 연산만이 있다고 하면, SHIFT와 ADD를 반복하여 곱셈을 구현할 수 있다. 이것을 소프트웨어 레벨이 아닌 하드웨어(프로세서) 레벨로 구현한 것이 MISD이다. CPU에서 흔히 사용하는 파이프라인 기법이 이에 해당한다. CPU 밖에서 보자면 데이터 한 개를 넣어 결과 한 개를 얻어내므로 SISD와 크게 구별하지 않는 경향이 있다.
MIMD
Multiple instruction streams, multiple data streams.
한 번에 데이터 여러 개를 여러 명령어로 처리하는 기법.
SIMD와의 차이점은 SIMD는 여러 데이터를 같은 인스트럭션으로 한꺼번에 처리하는 것이고 MIMD는 여러 데이터를 다른 인스트럭션으로 한꺼번에 처리하는 것이다. 현대의 동시적 멀티스레드 프로그램들은 모두 MIMD라고 볼 수 있다. SPMD와 MPMD는 이 MIMD에서 더욱 세분화된 분류이다. 인텔 제온 파이, 슈퍼스칼라를 지원하는 모든 멀티코어 프로세서, 그리고 현재 거의 모든 슈퍼컴퓨터들은 이 MIMD를 기반으로 작동한다.
분류 비교를 위한 다이어그램
4개의 아키텍처가 아래와 같이 시각적으로 표시된다.
각 처리 장치(PU)는 유니코어 또는 멀티코어 컴퓨터에 대해 표시한 것이다:
출처 및 참고 : 위키백과, 나무위키
HyunZzang의 프로그래밍 공간 / 함께 공부해요!!
도움이 되셨다면 "좋아요❤️" 또는 "구독👍🏻" 부탁드립니다 :)