멀티프로세서 : 한개 이상의 프로세서를 가진 컴퓨터 시스템
프로세스 수준 병렬성에 해당 : 독립적 작업들의 Throughput 향상
클러스터 : LAN으로 연결된 멀티 프로세서 시스템
병렬 처리 프로그램 : 여러 프로세서에서 작동하는 단일 프로그램
멀티코어 마이크로프로세서 : 여러 프로세서(코어)를 가진 칩. SMP = shared memory processor
병렬성을 가진 하드웨어를 효율적으로 사용하는 것은 어렵다
데이터 스트림과 명령어 스트림으로 구분
SISD : 고전적 싱글 컴퓨터
SIMD : 벡터 데이터 연산에 유용, 데이터 수준 병렬성 ex) 멀티미디어
MIMD : SISD의 연결로 병렬 프로그램 실행. MIMD 상 병렬 프로그램 = SPMD
프로세스 : 단일 혹은 여러개의 쓰레드, 독자적 주소 공간과 OS 상태. OS에 의해 문맥 교환
쓰레드 : 작업을 위한 명령어의 순차적 흐름
각 프로세서는 하나 혹은 그 이상의 하드웨어 쓰레드를 제공
멀티쓰레딩 : 병렬적으로 여러 쓰레드 처리를 하는 것
프로세서 자원은 비용이 높으므로 아이들 상태가 없도록 해야함
ex) 캐시 미스 등으로 대기 시, 다른 쓰레드로 교환
쓰레드 교환이 대기 지연보다 짧아야하기 때문에 하드웨어 추가, 쓰레드 교환마다 문맥 저장 불필요
Fine-grain : 각 사이클마다 쓰레드 교환, stall 발생 시 다른 쓰레드 실행
Coarse-grain : stall이 길 때만 교환
Simultaneous : function 유닛이 가용일 때 쓰레드들의 명령어 실행
SMP : shared memory multiprocessor
여러 프로세스들이 같은 물리 주소 공간 사용, 캐시를 통해 메모리 병목 해소
Uniform Mem Access(프로세서 간 동기화 필요 시) vs. Non-uniform Mem Access
3D 그래픽 작업을 위한 프로세서