멀티스래딩, 다중 프로세서 : Multithreading, chip Multiprocessors

Learning stuff 2013. 3. 5. 14:10

프로세서의 성능 평가 척도
- 명령어를 실행하는 비율(rate)이며 'MIPS rate = f x IPC'로 표현된다. 여기서 f는 프로세서 클록 주파수이며 IPC(instructions per cycle)는 사이클 당 실행되는 명령어들의 평균 수를 나타낸다.
- IPC를 높이기 위한 방법 : 명령어 수준 병렬성을 이룬다. 명령어 파이프라인, 수퍼스칼라, 그리고 멀티스래딩을 통해.

멀티스래딩(multithreading)의 정의
 - 명령어 스트림(thread)의 병렬적 실행. 멀티스래드 프로세서 내의 스래드는 소프트웨어 스래드와 같거나 다를 수 있다.
- 응용 프로그램에게 보이는 user level 스래드와 OS에게만 보이는 kernel level thread는 모두 명시적(explicit) 스래드이며 모든 상용 프로세서와 대부분의 실험용 프로세서는 명시적 스래드를 사용한다.
- 묵시적(implicit) 멀티스래딩은 하나의 순차적 프로그램으로부터 추출한 다수의 스래드를 동시해 실행하는 것을 뜻하며, 컴파일러에 의해 정적으로 또는 하드웨어에 의해 동적으로 정의된다.

명시적 멀티스래딩의 방법
- 멀티스래드 프로세서는 동시에 실행될 각 스래드를 위해 별도의 Program Counter가 제공어야 하며, 넓게 보아 네가지 주요 방법이 존재한다.

interleaved multithreading
프로세서는 한번에 두 개 혹은 그 이상의 스래드를 다루며, 각 클록 사이클마다 어느 한 스래드로부터 다른 스래드로 스위칭한다. fine-grain multithreading이라고도 한다.

blocked multithreading
스래드의 명령어들은 cache miss와 같이 latency를 유발하는 사건이 발생할 때까지 연속해서 실행되고, 사건 발생 시 다른 스래드로 스위치된다. coarse-grain multithreading이라고도 부른다.

simultaneous multithreading: SMT
명령어들이 다수의 스래드로부터 수퍼스칼라 프로세서의 실행 유닛들로 동시에 발송(issue)된다. 넓은 수퍼스칼라 명령어 발송 능력과 다수의 thread context의 결합 형태이다. intel사의 Hyperthreading은 두 개의 스래드를 지원하는 SMT이다. 

chip multiprocessing
전체 프로세서가 하나의 칩에 중복되어 들어가며, 각 프로세서는 별도의 스래드들을 처리한다. 파이프라인 설계에서 복잡도가 증가되는 것과는 상관없이 칩 상의 이용 가능한 영역이 효과적으로 사용될 수 있다는 장점이 있다. multicore(또는 chip level multiprocessing; CMP)가 여기에 속한다(?).

스칼라 프로세서의 경우
- 멀티스래딩을 지원하지 않는 단일 스래드 스칼라, interleaved multithreaded scalar, blocked multithreaded scalar가 있다.

사용자 삽입 이미지
다중 명령어 프로세서의 경우
- multithreading을 지원하지 않는 수퍼스칼라, 의존성으로 인해 사이클 당 발송 가능 명령어 수가 제한 받는 interleaved multirheading 수퍼스칼라, blocked multithreaded 수퍼스칼라, 단일 word에 여러 명령어가 담기도록 컴파일러에 의해 구성되는 VLIW(Very Large Instruction Word), interleaved multithreading VLIW, blocked multithreaded VLIW가 있다.
사용자 삽입 이미지
여러 스래드의 병렬적, 동시적 실행의 경우
- simultaneous multithreading, (그림의 경우) 각기 2-발송 수퍼스칼라 프로세서이자 각각의 스래드가 사이클 당 두 개의 명령어 발송이 가능한 chip multiprocessor가 있다.
사용자 삽입 이미지

'Learning stuff' 카테고리의 다른 글

JIT  (0) 2013.03.05
CPU Bound, I/O Bound, Memory Bound, Cache Bound  (0) 2013.03.05
cmp simulator  (0) 2013.03.05
Event-driven simulation  (0) 2013.03.05
trace_driven 이란  (0) 2013.03.05