CPU의 속도에 영향을 미치는 것에 대해 알아보자
📗 클럭이란?
클럭은 컴퓨터의 모든 부품을 일사불란하게 움직일 수 있게 하는 시간 단위이다.
✔ 그럼 클럭 신호가 빠르게 반복되면 컴퓨터의 부품들이 빠르게 움직일까?
꼭 그렇지는 않지만 일반적으로는 그렇다.
하지만 필요 이상으로 클럭 신호를 높인다면 발열이 심해질 수 있다.
💻 클럭 속도
헤르츠(Hz) 단위로 측정한다.
헤르츠는 1초에 클럭이 반복되는 횟수다.
클럭이 1초에 한번 반복되면 1Hz
클럭이 1초에 100번 반복되면 100Hz 이다.
위 i7-11700 CPU를 예시로 들면
클럭이 1초에 25억번 (2.5 x 109) 번
순간 최대 49억번 (4.9 x 109) 번 반복된다.
📗 코어란?
전통적으로 '명령어를 실행하는 부품'은 원칙적으로 하나만 존재했다.
하지만 오늘날 CPU에는 '명령어를 실행하는 부품'이 여러개 존재한다.
명령어를 실행하는 부품을 코어라고 부른다.
코어가 하나만 존재한다면 싱글코어라고 부르고
2개면 듀얼코어, 3개면 트리플 코어... 등등이라고 부른다.
코어가 2개 이상인 프로세서 부터 멀티 코어 프로세서라고 명칭한다.
✔ 그럼 코어 수에 비례해서 CPU가 빨라질까?
꼭 코어 수에 비례하여 속도가 증가하지는 않다.
어떠한 연산 작업에 있어 모든 코어가 동작하지 않을 수 있기 때문이다.
속도를 위해서는 코어별로 연산 작업량을 균형있게 할당하는 것이 중요하다.
📗 스레드란?
스레드란 실행 흐름의 단위이다.
스레드는 하드웨어적 스레드와 소프트웨어적 스레드가 존재한다.
💻 하드웨어적 스레드
하나의 코어가 동시에 처리하는 명령어의 단위이다.
하나의 코어가 한번에 하나의 명령을 받아들여서 처리할 수 있다면
이것을 1코어 1스레드 CPU라고 부른다.
원래 하나의 코어에 하나의 스레드가 존재했지만 하이퍼쓰레딩이라는 기술이
생겨나면서 코어보다 스레드가 더 많아지는 것도 가능해졌다.
하나의 코어가 한번에 2개의 명령을 처리할 수 있고 2개의 코어가 존재한다면
2코어 4스레드 CPU라고 부른다.
하나의 코어가 여러개의 명령을 처리할 수 있는 프로세서를
멀티 스레드 프로세서 혹은 멀티 스레드 CPU라고 부른다.
메모리 내의 프로그램이 CPU가 몇 코어 몇 스레드인지는 알 수 없다.
단지 한번에 몇개의 작업 흐름이 있는지 알 뿐이다.
따라서 하드웨어 스레드는 보이지 않는, 논리적인 CPU개수라는 의미에서
논리 프로세서 라고도 부른다.
💻 소프트웨어적 스레드
하나의 프로그램에서 독립적으로 실행되는 단위를 말한다.
소프트웨어 스레드는 소프트웨어 상에서 병렬적으로 작업을 나누고, 일을 할당할 때 쓰인다.
이 스레드가 하드웨어 스레드에 올라가 실행되는 것이다.
따라서 소프트웨어 스레드가 아무리 많아도 하드웨어 스레드의 개수에 따라
동시에 실행될 수 있는 작업량이 결정되는 것이다.
2코어 4스레드 CPU라고 한다면 소프트웨어 스레드가 100개 있다고 가정할 때
한번에 동시에 실행될 수 있는 작업은 4개 뿐이다.
이때 나머지 다른 소프트웨어 스레드들은 하드웨어 스레드에 올라갈 때 까지
기다리고 있는다. (유휴상태)
👀 학습을 마치고
클럭, 코어, 스레드에 대해 학습하고 나의 CPU의 클럭, 코어, 스레드는
어떨까 궁금해져서 찾아보았다. CPU정보는 작업관리자 성능탭에서 확인가능하다.
본인은 좀 오래된 모델은 인텔 i5-7500 모델을 사용하고 있다.
먼저 클럭을 확인해보면 기본 3.40GHz로 초당 3.4억번 클럭이 반복되는듯 하다.
코어는 총 4개, 논리 프로세서는 4개로 코어당 한개의 작업 씩,
총 4개의 코어가 한번에 4개의 작업을 수행하는 것 같다.
코어와 논리 프로세서 개수가 같은걸보니 아무래도 오래된 모델이라 하이퍼쓰레딩 기술은 없는듯하다...
학습 출처 :https://www.youtube.com/watch?v=VO0RQAA7KYc&list=PLVsNizTWUw7FCS83JhC1vflK8OcLRG0Hl&index=14
'CS-Study' 카테고리의 다른 글
컴퓨터 구조 : 명령어 집합 구조, CISC 와 RISC (0) | 2024.01.30 |
---|---|
컴퓨터 구조 : 명령어 병렬 처리 기법 (0) | 2024.01.30 |
컴퓨터 구조 : 명령어 사이클과 인터럽트 (0) | 2024.01.28 |
컴퓨터 구조 : 레지스터 (0) | 2024.01.26 |
컴퓨터 구조 : 소스코드와 명령어 그리고 명령어의 구조 (0) | 2024.01.25 |