[CS] 빠른 CPU를 위한 설계 기법

정은아·2023년 12월 18일
post-thumbnail

클럭과 코어, 스레드라는 개념을 이해하고 빠른 CPU를 만드는 설계 기법인 멀티코어와 멀티스레드란 무엇인지 알아보자.

클럭

  • 컴퓨터 부품들은 '클럭 신호'에 맞춰 일사분란하게 움직인다.
  • CPU는 '명령어 사이클'이라는 정해진 흐름에 맞춰 명령어들을 실행한다.
  • 클럭 속도가 높아지면? CPU도 명령어 사이클을 더 빠르게 반복한다. 다른 부품들도 그에 발맞춰 더 빠르게 작동한다.
  • 클럭 속도는 헤르츠(Hz)단위로 측정한다.
  • 클럭이라는 단어만 보고 매번 일정한 속도를 유지할 것이라고 생각하지만, 실제로는 그렇지 않다.
  • CPU를 보면 기본 클럭 속도(Base)와 최대 클럭 속도(Max)로 나뉘는데, CPU는 계속 일정한 속도를 유지하기 보다는, 고성능을 요하는 순간에는 순간적으로 클럭 속도를 높이고, 그렇지 않을 때는 유연하게 클럭 속도를 낮춘다.
  • 최대 클럭 속도를 강제로 더 끌어올릴 수 있는데, 이런 기법을 '오버 클럭킹'이라고 한다.

코어와 멀티코어

  • CPU의 정의로 알고있던 '명령어를 실행하는 부품'은 코어라는 용어로 사용된다.
  • 코어를 여러 개 포함하고 있는 CPU를 멀티코어 CPU 또는 멀티코어 프로세서라고 부른다.
  • 클럭 속도가 2.4GHz인 단일 코어 CPU와 클럭 속도가 1.9GHz인 멀티코어 CPU를 비교하면? 놀랍게도 후자가 성능이 더 좋다.
  • 코어를 두 개, 100개로 늘리면 연산 처리 속도가 그에 비례하게 증가할까? 그렇지는 않다. 처리하고자 하는 작업량보다 코어 수가 지나치게 많아도 성능에는 크게 영향이 없다. 중요한 것은 코어마다 처리할 명령어들을 얼마나 적절하게 분배하느냐이고 그에 다라서 연산 속도는 크게 달라진다.

스레드와 멀티스레드

  • 스레드는 '실행 흐름의 단위'를 뜻한다.

  • CPU에서 사용되는 하드웨어적 스레드가 있고, 프로그램에서 사용되는 소프트웨어적 스레드가 있다.

    하드웨어적 스레드

    • 하나의 코어가 동시에 처리하는 명령어 단위를 뜻한다.
    • 하나의 코어로 여러 명령어를 동시에 처리하는 CPU를 멀티스레드 프로세서(여러 개의 하드웨어적 스레드를 지원하는 CPU) 또는 멀티스레드 CPU라고 부른다.

    소프트웨어적 스레드

    • 하나의 프로그램에서 독립적으로 실행되는 단위를 뜻한다.
    • Phyton, Java, C++등의 프로그래밍언어를 이용해 소프트웨어적 스레드를 만들 수 있다.

    멀티스레드 프로세서

    • 소프트웨어적으로 정의된 스레드를 스레드, CPU에서 사용되는 스레드는 하드웨어 스레드라고 한다.
    • 멀티스레드 프로세서의 가장 큰 핵심은 레지스터이다.
    • 하드웨어 스레드를 이용해 하나의 코어로도 여러 명령어를 동시에 처리할 수 있다고 했는데, 메모리 속 프로그램 입장에서 보면 하드웨어 스레드는 마치 '한 번에 하나의 명령어를 처리하는 CPU'나 다름이 없다. 2코어 4스레드 CPU는 한 번에 네 개의 명령어를 처리할 수 있기 때문에? 하드웨어 스레드를 논리 프로세서라고 부르기도 한다.

멀티코어와 멀티스레드의 차이?

  • 코어는 명령어를 실행할 수 있는 '하드웨어 부품'
  • 스레드는 '명령어를 실행하는 단위'
  • 멀티코어 프로세서는 명령어를 실행할 수 있는 하드웨어 부품이 CPU 안에 두 개 이상 있는 CPU를 의미하고, 멀티스레드 프로세서는 하나의 코어로 여러 개의 명령어를 동시에 실행할 수 있는 CPU를 의미한다.
profile
꾸준함의 가치를 믿는 개발자

0개의 댓글