CPU 성능 향상을 위한 설계
더 빠른 CPU를 설계하기 위한 고민은 항상 이어지고 있다. 이번 포스팅에서는 클럭, 코어, 스레드 등 CPU 성능 향상과 관련된 개념과 설계 기법, 동시성과 병렬성의 정의와 차이점을 살펴본다.
CPU 클럭 속도
클럭(Clock)이란 컴퓨터의 부품을 일사불란하게 움직일 수 있게 하는 시간의 단위를 의미한다. 클럭의 '똑-딱' 주기에 맞춰 레지스터 간 데이터 이동, ALU에서의 연산, 메모리에 저장된 명령어를 읽어 들이는 동작이 이루어진다.
클럭 속도는 헤르츠(Hz) 단위로 측정이 된다. 이는 클럭이 1초에 몇 번 반복되는지를 나타낸다. 예를 들면, 클럭의 '똑-딱' 하는 소리가 1초에 100번 반복된다면 이 CPU는 클럭 속도가 100Hz인 셈이다.
클럭 속도가 높아지면 CPU는 명령어 사이클을 더 빠르게 반복하며, 다른 부품도 이에 맞춰 더 빠르게 작동한다. 따라서 클럭 속도는 CPU 속도의 단위로 간주되며, 일반적으로 클럭 속도가 높은 CPU가 더 높은 성능을 제공한다.
하지만 클럭 속도가 필요 이상으로 높이면 컴퓨터의 발열이 심해질 수 있기 때문에 클럭 속도만으로 성능을 끌어올리기엔 한계가 있다.
멀티코어와 멀티스레드
클럭 속도를 높이는 방법 외에도 코어 수나 스레드 수를 늘리는 방법으로 CPU 성능을 높일 수 있다.
코어(Core)란 CPU 내부에서 명령어를 읽고, 해석하고, 실행하는 단위를 의미한다. 과거에는 이러한 단위를 CPU 자체로 간주했는데, 이는 전통적으로 CPU가 하나만 존재하는 구조였기 때문이다. 그러나 기술의 발달로 인해 단일 CPU 내에 여러 개의 독립적인 실행 단위가 포함될 수 있게 되었고, 이를 구분하기 위해 "코어"라는 이름이 사용되었다.
코어가 8개라고 명시되어 있다면, 이는 CPU 내부에 명령어를 읽고, 해석하고, 실행하는 단위가 8개 있다는 의미이다. 이렇게 여러 개의 코어를 가진 CPU는 멀티코어 CPU 또는 멀티코어 프로세서라고 불린다.
아래는 코어 개수에 따른 명칭을 정리한 표이다.
코어 개수 | 명칭 | 설명 |
1 | 싱글코어(Single Core) | 하나의 코어만 장착된 CPU로, 동시에 하나의 작업만 처리 가능 |
2 | 듀얼코어(Dual Core) | 두 개의 코어로 구성된 CPU로, 멀티태스킹 성능이 향상됨 |
4 | 쿼드코어(Quad Core) | 네 개의 코어로 구성된 CPU로, 동시 다중 작업 처리에 유리 |
6 | 헥사코어(Hexa Core) | 여섯 개의 코어로 구성된 CPU로, 고성능 작업 처리와 게이밍에 적합 |
8 | 옥타코어(Octa Core) | 여덟 개의 코어로 구성된 CPU로, 멀티스레드 작업과 고사양 애플리케이션에 적합 |
10 이상 | 멀티코어(Multi Core) | 10개 이상의 코어를 가진 CPU로, 서버나 고사양 작업에 사용 |
이 표는 일반적인 명칭과 개념을 기반으로 작성되었으며, 실제 상업적인 용어는 제조사에 따라 다를 수 있다.
스레드(Thread)는 프로그래밍 언어, CPU, 운영체제 등 다양한 분야에서 사용되는 범용성이 높은 용어다. 따라서 각각의 용례에 따라 의미와 활용 방식이 조금씩 다르다. 혼란을 방지하기 위해 하드웨어 스레드와 소프트웨어 스레드(이하 스레드)로 나누어 알 필요가 있다.
하드웨어 스레드란 하나의 코어가 동시에 처리하는 명령어의 단위를 말한다. 이를 기반으로, 하나의 코어에서 여러 명령어를 동시에 처리할 수 있는 CPU를 멀티스레드 프로세서 또는 멀티스레드 CPU라고 한다. 예를 들어, 실행 부품이 하나여서 한 번에 하나의 명령어만 처리할 수 있다면 이는 1 코어 1 스레드 CPU다. 반면, 실행 부품이 두 개여서 두 코어로 네 개의 명령어를 동시에 처리할 수 있다면 2 코어 4 스레드 CPU라고 한다.
하드웨어 스레드는 메모리에서 실행 중인 프로그램 관점에서는 "한 번에 하나의 명령어를 처리하는 독립적인 CPU"처럼 작동한다. 예를 들어, 2 코어 4 스레드 CPU는 프로그램 입장에서 4개의 CPU가 각각 독립적으로 명령어를 처리하는 것처럼 보인다. 이러한 이유로 하드웨어 스레드는 "논리 프로세서"라고도 불린다.
소프트웨어 스레드
소프트웨어 스레드는 프로그램 내에서 독립적으로 실행되는 단위를 의미한다. '프로그램이 여러 스레드로 실행된다는 것'은 '프로그램의 여러 부분이 동시에 실행될 수 있음'을 뜻한다. 중요한 점은, 하드웨어 스레드가 하나인 CPU에서도 이러한 멀티스레드 프로그램을 실행할 수 있다는 것이다.
병렬성과 동시성
사전적 정의만 암기했다면 '1 코어 1 스레드 CPU가 여러 스레드로 만들어진 프로그램을 실행할 수 있다'라는 말을 납득하기 어려웠을 것이다. 따라서 하드웨어적인 스레드와 소프웨어적 스레드의 의미를 구분하여 기역해 두는 것 이 좋다.
하드웨어 스레드와 소프트웨어 스레드의 차이는 동시성과 병렬성이라는 키워드의 차이를 통해 좀 더 명확히 이해할 수 있다.
병렬성(Parallelism)이란 여러 작업을 물리적으로 동시에 처리하는 성질을 말한다. 예를 들어, 하드웨어 스레드가 4개인 CPU는 각 스레드가 독립적으로 하나의 명령어를 처리할 수 있다. 이는 같은 시점에 최대 4개의 작업을 병렬로 실행할 수 있음을 의미한다.
동시성(Concurrency)이란 여러 작업이 동시에 처리되는 것처럼 보이는 성질을 의미한다. 예를 들어, CPU가 빠르게 여러 작업을 번갈아가며 처리하면, 사용자 입장에서는 작업이 동시에 실행되는 것처럼 보인다. 그러나 이는 실제로 물리적으로 같은 시점에 여러 작업이 처리되는 것이 아니라, 짧은 시간 간격으로 작업 간 전환(Context Switching)이 이루어지기 때문이다.
하드웨어 스레드는 '병렬성'을 구현하기 위한 물리적인 실행 단위에 가깝고, 소프트웨어 스레드는 '동시성'을 구현하기 위한 논리적인 실행 단위에 가깝다.
출처
이것이 취업을 위한 컴퓨터 과학이다 with CS 기술 면접
'Knowledge > 컴퓨터구조&운영체제' 카테고리의 다른 글
[컴퓨터구조] 메모리 - RAM (1) | 2024.11.27 |
---|---|
[컴퓨터구조] 파이프라이닝을 통한 명령어 병렬 처리 (0) | 2024.11.27 |
[컴퓨터구조] CPU - 인터럽트 (0) | 2024.11.08 |
[컴퓨터구조] CPU - 레지스터 (0) | 2024.10.31 |
[컴퓨터구조] 컴퓨터가 이해하는 정보 - 명령어 (0) | 2024.10.28 |