[컴] Simultaneous multithreading(SMT)

SMT 란 / hyperthreading / 하이퍼 쓰레딩 / 하이퍼 쓰레드 / SMT 가 뭐지? / SMT 란



Simultaneous multithreading(SMT)

Simultaneous multithreading(SMT) 는 직역하면 "동시 멀티스레딩" 정도 될 듯 하다.

하드웨어 멀티쓰레딩을 이용해서 superscalar CPU 의 전체적인 효율을 향상시켜 준다.

여러개의 독립적인 thread 들의 수행을 허락해서 자원을 좀 더 효율적으로 사용하도록 해준다.

multithreading 이라는 용어는 superscalar CPU 에서 "쓰레드 레벨에서의 실행(thread level execution)"을 구현한 것을 이야기 한다.


한 칩안에서 여러개의 thread 처리하는 방법들

multithreading 을 구현하는 방식은 크게 2가지가 있다.

  • temporal multithreading(=super threading) : 
  • Simultaneous multithreading(SMT)

한 칩안에서 여러개의 thread 를 처리하도록 하는 방법은 여러가지가 있다.

  • Interleaved multithreading : temporal multithreading(=super threading) 
    • 특정 pipeline stage 에서 한 사이클에 한개의 thread 만이 수행가능 하다.(a thread of instructions)
    • pipeline 하나에서 현재 작업중인 thread 의 long latency 가 발생할 때, 다른 thread 의 instruction 을 발행(issue)하게 된다.
  • Simultaneous multithreading(SMT)
    • 하지만 multithreading 에서는 특정 pipeline stage 에서 여러 thread 에서 온 여러 instruction 들에 대해 한번에 수행이 가능하다.
    • 한 사이클에 여러 thread 에서 동시에 여러개의 instruction 을 issue 한다. 이것이 가능하기 위해서는 프로세서는 superscalar 여야 한다.
  • Chip-level multiprocessing (CMP or multicore) : 칩하나에 여러개의 프로세서를 집적시켜놓는다. 그래서 thread 를 각각 독립적으로 돌린다.
  • 위 방법들을 조합해서 사용가능, (SMT와 CMP 를 같이 쓰는등)


SMT 구현을 위해 필요한 기능

이 SMT 는 프로세서 구조를 크게 변경하지 않고도 구현이 가능하다.
이것을 구현하기 위해 필요한 주요 기능은

  • 확장된 fetch 기능 : 한 cycle 에 여러 thread 로 부터 instruction 들을 fetch 하는 기능이 추가되어야 한다. 
  • 좀 더 큰 register 가 필요하다. : 여러 instruction 들이 한 cycle 에 fetch하기 때문에 더 많은 data 를  register 에 저장해야 한다.



superscalar 가 여러 instruction 을 한번에 수행하는 것이라면, thread-level parallelism 은 여러 thread 에서 온 instruction 들을 한개의 프로세서 칩에서 같은 시간에 처리하는 것이다.


Superscalar processor

superscalar processor(슈퍼 스칼라 프로세서) 는 instruction level 에서 병렬수행(parallelism) 을 가능하게 해준다. 그래서 한 clock 에 여러개의 instruction 이 수행될 수 있다.

여러개의 execution unit(수행 유닛) 이 있어서, 이 여러개의 execution unit 에 여러개의 instruction 을 보내서(dispatch) 한 clock cycle 에 여러개의 instruction 이 수행될 수 있게 해준다.

이 execution unit 은 core 를 이야기 하는 것이 아니고, cpu 내에 있는 ALU, FPU 등의 실행자원(execution resource) 을 이야기한다.

이 superscalar 기술이 instruction level parallelism 이고, thread level parallelism 이 multitheading 이다.






References


  1. Superscalar processor - Wikipedia
  2. Simultaneous multithreading - Wikipedia


댓글 없음:

댓글 쓰기