Thread
- Instruction stream with state
Thread는 자기만의 독립적인 state(context)를 갖는다. 한 process안에 하나이상의 thread를 가질 수 있음. multi threading관점에서는 각각의 thread를 독립적인 program으로 생각한다.
processor 입장에서 thread의 흐름(context)을 잘 기억해야된다.
이러한 문제를 해결하다보면 이전의 문제였던 control structural hazard 자연스럽게 해결할 수 있다.
그리고 여기서 나오는 multithreading은 hw관점에서의 이야기이다.
Hardware multi threading 장단점
장점
간단하게 긴 latency를 가진 작업을 만날 때 다른 작업을 해서 전체 성능을 올릴 수 있다.
context swich penalty가 거의 없다. (hw적으로 하는거라 sw multi threading처럼 memory에 context올리고 그런거 없음) 물론 swich할게 hw보다 많으면 overhead 생기긴함.
Multi threading 종류
- Fine-grained MT
- Coarse-grained MT
- Simultaneous MT
참고로 fine과 coarse는 곡식으로 fine grain은 낱알같이 작은 곡식 coarse는 큰 곡식을 말한다. 세세하게 쪼개느냐 굵게 뭉퉁그리느냐의 차이로 보면된다.
Fine-grained MT
매 사이클마다 다른 thread로 바꾼다.
PC와 GPR(범용레지스터)도 각 thread마다 갖고 있어야 한다.
Fine-grained MT 장단점
장점
-
dependency가 없어진다. 대충 single 5stages pipeline에서 thread 다섯개라고 생각해보면 각 cycle마다 각자거니까 data, control hazard(branch) 문제 다 사라진다.(structural은 고려해봐야됨).
-
전체 성능, latency toerance이 향상된다.
단점
- hw가 복잡해진다.
- single thread 퍼포먼스가 내려간다. (thread가 N개 있으면 대강 <= 1/N로 성능이 내려가니까)
- resource contention(structural hazard) 리소스 경합은 커진다
- thread간에 dependency 관리해 줘야한다
- Superscalar인 경우에는 dependency가 그대로 생겨버린다 (thread가 4개인데 superscalar의 pipeline도 4개면 쌤쌤)
Coarse-grained MT
매 사이클이아닌 큰 event가 발생하면 그 때 바꾸자
Fine-grained MT vs Coarse-grained MT
Fine-grained입장에서 장점
- 구현하기 쉽다.
: 매 클락마다 바뀌는 거니까 구현 도 쉽고 no superscalar인 경우 dependency도 고려 안해줘도 된다. 근데 Coarse-grained는 dependency도 고려해줘야되고 따로 규칙을 정해줘야한다. - Switching overhead가 없다.
: Fine-grained인 경우 multi threading에 친화적인 hw(pc와 register가 여러개인)를 쓰기 때문에 switching에 overhead없음. 반면 Coarse-grained인 경우 큰 작업 생길 때마다 stack에 레지스터 넣는 thread context switching작업해서 overhead 존재
단점
- single thread의 성능은 하락한다. 높은 priority의 thread도 Fine-grained MT인 경우에는 분할적으로 돌아가기때문에 그 thread 입장에서는 손해임.
뭐하나가 딱 좋다고 할수없다. 전체 성능상에서는 FG가 좋을지도 몰라도 사용자입장에선 CG가 좋을 수도 있다. 각자 입장에 따라 다르다.
그래서 다음에 나오는게 SMT
'학교공부 > 컴퓨터구조' 카테고리의 다른 글
컴퓨터구조 18 - SMT (0) | 2020.06.17 |
---|---|
컴퓨터구조 17 - SMT (0) | 2020.06.17 |
컴퓨터구조 15 - SuperScalar (0) | 2020.06.17 |
컴퓨터구조 - 14(Predicated execution, Loop Unroll) (0) | 2020.06.17 |
컴퓨터구조 13 - Branch Prediction (0) | 2020.06.16 |