멀티 쓰레딩이 작동할때 어떤식으로 하드웨어가 작동을 하고 어떤식으로 작동하는지 알아보려고 한다.

<aside> 💡 긴 호흡을 가지고 작성한 글이다. 그러니 긴 호흡으로 읽는 걸 추천한다.

</aside>

기본 개념

사실 멀티 쓰레딩을 찾을 정도면 알고 있을 것이라고 생각되지만... 간단하게 언급만 하고 넘어가겠다.

CPU

현재 프로세서는 AMDx64 와 ARM 두 계열로 나눠졌지만 여기서는 크게 다룰 필요는 없는 거 같다.

사실 나도 잘 모른다.. 찾아보니 나무위키에 정리되어 있는데 궁금하면 읽어보는 것도 나쁘지 않을거 같다.

아래 사진은 다나와 사이트에서 두번째로 보이는 CPU의 성능이다. (사실상 아무거나..)

여기서 우리가 중요하게 봐야할 부분은 코어이다.

<aside> 💡 엇? 예전에 배울때는 코어 = 쓰레드라고 했는데 왜 쓰레드가 두배더 많지? 하이퍼스레딩 기술이라고, 코어에 가상 코어를 2개 올려 쓰레드를 많아 보이도록 하는 기술이다. 최적화하면 30% 정도의 성능이 좋아진다는데 컴맹이라 잘 모르겠다.

</aside>

위에서는 하나의 코어에 두개의 쓰레드가 동시 작동하는 것처럼 되어있지만 용어의 혼동을 줄이기 위해서 하나의 코어에는 하나의 쓰레드만 작동하는 것으로 가정하겠다.

싱글 쓰레딩

기본적으로 프로그램들은 하나의 싱글 쓰레딩이다.

아래의 간단한 코드와 같이 Main함수에서 시작해 Main함수으로 끝나는 쓰레드를 Main 쓰레드라고 부르기도 한다.

public static void main(String[] args) {
      System.out.println("HI 1");
      System.out.println("HI 2");
      System.out.println("HI 3");
}