본문 바로가기

computer science/computer architecture

[오늘 CS] 컴퓨터 구조 - CPU 성능 향상을 위한 설계 기법

CPU 성능 향상을 위해 컴퓨터를 설계하는 기법들이 있다. 클럭, 멀티코어, 멀티스레드가 각각 무엇인지 알아보고, 이들이 CPU 속도와 어떤 관계가 있는지 알아보자

 

 

1. 클럭

  • 논리상태 H(high,논리 1)와 L(low,논리 0)이 주기적으로 나타나는 신호
  • 이전에 학습한 내용에 따르면,
    • 컴퓨터 부품들은 '클럭 신호'에 맞춰 일사불란하게 움직인다
    • CPU는 '명령어 사이클'이라는 정해진 흐름에 맞춰 명령어들을 실행한다
  • 이 말인 즉슨, 
    • '클럭 신호'가 빠르게 반복되면 CPU를 비롯한 모든 컴퓨터 부품들은 그만큼 빠른 박자에 맞춰 움직임
    • CPU는 명령어 사이클을 더 빠르게 반복할 것이고, 다른 부품들도 그에 발맞춰 더 빠르게 작동하게 됨
  • 클럭 속도는 헤르츠(Hz) 단위. 오늘날 우리가 사용하는 CPU는 기본 속도 2.5GHz(1초에 25억번), 최대 속도 4.9GHz(1초에 49억번)로 계속 일정한 클럭 속도를 유지하기보다 고성능을 요하는 순간에 클럭 속도를 높이고, 그렇지 않을 때는 유연하게 낮춤
    • 클럭 속도를 무지막지하게 높이면 무조건 CPU가 빨라질까?
    • No... 한계가 존재. 무한히 높인다면 컴퓨터가 아주 핫하게 불탈 것임.

 

 

 

 

 

2. 코어와 멀티코어

  • 코어 - 명령어를 실행하는 부품
    • 전통적인 관점에서 CPU의 '명령어를 실행하는 부품'은 하나만 존재했음. 하지만 많은 기술 발전으로 CPU 내부에 '명령어를 실행하는 부품'을 얼마든지 만들 수 있게됨
  • 멀티 코어 - 코어를 여러개 포함함. 이는 CPU 내에 명령어를 처리하는 일꾼이 여러 명 있는 것
    • 클럭 속도가 2.4GHz인 단일 코어 CPU vs. 클럭 속도가 1.9GHz인 멀티코어 CPU(win)
      • 그럼 코어를 2,3,...100개까지 늘리면 100배 빨라질까?
      • No... CPU 연산 속도가 꼭 코어 수에 비례해 증가하는 것은 아님. 4명의 요리를 100명의 요리사가 하는 것은 4명의 요리를 4명이 하는 것보다 딱히 빠르지 않음

 

 

 

 

3. 스레드와 멀티스레드

  • 스레드 - 실행 흐름의 단위. (*주의 ! CPU에서 사용되는 스레드와 프로그래밍에서 사용되는 스레드는 용례가 다름)
    • 하드웨어적 스레드
      • 하나의 코어가 동시에 처리하는 명령어 단위
      • 지금까지 배운 CPU는 1코어 1스레드 CPU였음. 반면, 여러 스레드를 지원하는 멀티스레드 CPU는 하나의 코어로 여러 개의 명령어를 동시에 실행할 수 있음
      • 2코어 4스레드 = 명령어를 실행하는 부품이 두 개. 한 번에 네 개의 명령어를 처리할 수 있음
    • 소프트웨어적 스레드
      • 하나의 프로그램에서 독립적으로 실행되는 단위
      • 하나의 프로그램은 실행되는 과정에서 한 부분만 실행될 수 있고, 프로그램의 여러 부분이 동시에 실행될 수 있음
        • 예시로 다음의 기능이 동시에 수행되길 원한다면, Python과 같은 프로그래밍 언어로 소프트웨어적 스레드를 만들 수 있음
          1) 사용자로부터 입력받은 내용을 화면에 보여 주는 기능
          2) 사용자가 입력한 내용이 맞춤법에 맞는지 검사하는 기능
          3) 사용자가 입력한 내용을 수시로 저장하는 기능
    • 멀티스레드 프로레서(하드웨어적 스레드 또는 논리 프로세서)
      • 하나의 코어로 여러 명령어를 동시에 처리할 수 있음. 어떻게 이런 일이 가능할까?
        • 가장 큰 핵심은 레지스터. 하나의 코어로 여러 명령어를 동시에 처리하려면, PC, SP, MBR, MAR 등과 같이 하나의 명령어를 처리하기 위해 꼮! 필요한 레지스터를 여러개 가지고 있으면 됨
      • 프로그램 입장에서 봤을 땐, 하드웨어 스레드는 마치 '한 번에 하나의 명령어를 처리하는 CPU'나 다름 없음. 가령 2코어 4스레드 CPU는 한 번에 네 개의 명령어를 처리할 수 있는데, 프로그램 입장에선 한 번의 하나의 명령어를 처리하는 CPU가 네 개 있는 것처럼 보임

 

 

 

 

 

[출처] 혼자 공부하는 컴퓨터 구조 + 운영체제