차곡차곡 성 쌓기
article thumbnail

본 카테고리는 "혼자 공부하는 컴퓨터구조 + 운영체제 (강민철 저)" 책과 강의를 기반으로 작성하였습니다.


🐳 CPU를 어떻게 빠르게 만들까?

방법 1. 클럭 신호를 더 빠르게

먼저 클럭을 더 빠르게 조정하는 방법이 있다. 컴퓨터 부품들은 '클럭 신호'에 맞춰 일사불란하게 움직이다. 

일반적으로 클럭 속도를 높일 수록 CPU도 빠르게 동작 한다. 하지만 클럭 수를 높이면 그 만큼 발열이 심해지는 문제가 있다.

참고로 요즘 i7 CPU의 클럭수는 평균 2.5GHz, 최고 4GHz이다. 약 1초에 2.5억번의 명령어 사이클을 실행한다는 것이다.

Hz는 초당 실행하는 명령어 사이클의 수이다.

 

 

방법 2. 멀티 코어, 멀티 스레드

다른 방법으로는 코어의 수와, 스레드의 수를 늘리는 것이다. 코어와 스레드에 대해 알아보자

 

🐳 코어

전통적인 CPU를 생각하면 된다. 옛날에는 컴퓨터에 CPU가 한 개였기 때문에 실행하는 부품이 곧 CPU였다. 하지만 최근의 컴퓨터는 명령어를 실행하는 부품이 여러개이다. 이처럼 명령어를 실행하는 부품을 코어라고 한다.

전통적 CPU와 오늘날 CPU

CPU의 속도는 코어 수에 비례하여 증가할까? 그렇지 않다. 각 코어에게 최적의 명령어들을 배분해주고, 끝나는 시간에 맞춰 딱 적절한 명령어를 배분해주어야 하기 때문인데, 이상적인 이론일 뿐 구현하기가 쉽지않디. 그렇기 때문에 속도는 증가하나 코어 수에 따라 비레적으로 증가하지 않는다. 

 

🐳 스레드

스레드는 개념적으로 하드웨어적 스레드와 소프트웨어적 스레드로 구별하여 공부하는 것이 편하다. 

▶︎ 하드웨어적 스레드 

  하나의 코어가 동시에 처리하는 명령어의 단위이다. 아래 그림은 하나의 CPU안에 2개의 코어가 있는 모습이다. 각 코어는 2개의 스레드를 가져 동시에 2가지 명령어를 처리할 수 있다. 우리는 이러한 CPU를 2코어 4스레드 CPU라고 한다. 

     

 

컴퓨터를 살 때 CPU 칩에 대한 설명으로 나오는 스레드 개념이 바로 이 개념이다. Intel Core i7칩은 8코어 16스레드를 가진다. 이는 1코어 당 2개의 코어를 가지며, 총 16개의 명령어를 동시에 처리할 수 있다는 뜻이다.

Intel Core i7-11700 Processor

 

참고로 Apple의 M1칩은 8코어 8스레드이다. 스레드가 많다고 무조건 좋은 것이 아니다는 것을 보여준다. 그 이유는 애플은 싱글 사용자를 위한 기기를 만들며, 하나의 코어가 다양한 일을 할 정도의 앱이 돌아가지 않기 때문에 8개의 코어로 충분하기 때문이다. 따라서 애플은 고성능 코어를 배치하고, 또한 메모리와 CPU 사이의 물리적 공간을 줄여 속도를 향상시켰다.

 

이처럼 한 코어에 여러 스레드가 있는 것을 멀티 스레드라고 한다. 멀리 스레드 구현의 가장 큰 핵심은 레지스터 세트이다. 레지스터 세트란 하나의 명령을 실행하기 위해 꼭  필요한 레지스터들의 모음을 편의상 표기한 것이다. 레지스터가 세트가 여러 개 있다면 하나의 코어에서 여러 명령어를 동시에 처리할 수 있고, 바로 멀리 스레드 개념을 구현할 수 있게 되는 것이다.

 

 

▶︎ 소프트웨어적 스레드

소프트웨어적 스레드는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다. 흔히 운영체제에서 공부하는 프로세스 내의 작업 단위이며 하나의 프로그램에서 독립적으로 실행되는 단위이다. 소프트웨어 스레드는 프로그램을 만드는 개발자가 직접 스레드의 수를 정의할 수 있다. 이는 운영체제 파트에서 자세히 다룰 것이다.

728x90
profile

차곡차곡 성 쌓기

@nagrang

포스팅이 좋았다면 "좋아요" 해주세요!