본문 바로가기

학교공부/컴퓨터구조

컴퓨터구조 16 - Multithreading

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로 바꾼다.

 

 

cpu 구조

PC와 GPR(범용레지스터)도 각 thread마다 갖고 있어야 한다. 

 

Fine-grained MT 장단점

장점

  1. dependency가 없어진다. 대충 single 5stages pipeline에서 thread 다섯개라고 생각해보면 각 cycle마다 각자거니까 data, control hazard(branch) 문제 다 사라진다.(structural은 고려해봐야됨). 

  2. 전체 성능, latency toerance이 향상된다.

단점

  1. hw가 복잡해진다. 
  2. single thread 퍼포먼스가 내려간다. (thread가 N개 있으면 대강 <= 1/N로 성능이 내려가니까)
  3. resource contention(structural hazard) 리소스 경합은 커진다
  4. thread간에 dependency 관리해 줘야한다
  5. Superscalar인 경우에는 dependency가 그대로 생겨버린다 (thread가 4개인데 superscalar의 pipeline도 4개면 쌤쌤)

 

Coarse-grained MT 

매 사이클이아닌 큰 event가 발생하면 그 때 바꾸자

 

 

Fine-grained MT vs Coarse-grained MT 

 

 

Fine-grained입장에서 장점

  1. 구현하기 쉽다.
      : 매 클락마다 바뀌는 거니까 구현 도 쉽고 no superscalar인 경우 dependency도 고려 안해줘도 된다. 근데 Coarse-grained는 dependency도 고려해줘야되고 따로 규칙을 정해줘야한다.
  2. Switching overhead가 없다.
     : Fine-grained인 경우 multi threading에 친화적인 hw(pc와 register가 여러개인)를 쓰기 때문에 switching에 overhead없음. 반면 Coarse-grained인 경우 큰 작업 생길 때마다 stack에 레지스터 넣는 thread context switching작업해서 overhead 존재

단점

  1. single thread의 성능은 하락한다. 높은 priority의 thread도 Fine-grained MT인 경우에는 분할적으로 돌아가기때문에 그 thread 입장에서는 손해임.

뭐하나가 딱 좋다고 할수없다. 전체 성능상에서는 FG가 좋을지도 몰라도 사용자입장에선 CG가 좋을 수도 있다. 각자 입장에 따라 다르다.

 

 

 그래서 다음에 나오는게 SMT