hmk run dev
빠른 CPU를 위한 설계 기법 본문
클럭(clock)
1. 컴퓨터 부품들은 '클럭 신호'에 맞춰 일사불란하게 움직인다.
2. CPU는 '명령어 사이클'이라는 정해진 흐름에 맞춰 명령어들을 실행한다.
일반적으로 클럭 신호가 빠르게 반복되면
CPU를 비롯한 컴퓨터 부품들은
그만큼 빠른 박자에 맞춰 움직이겠네요?
꼭 그런건 아니지만 일반적으로는 맞다.
클럭 속도
- 헤르츠(Hz) 단위로 측정 (초당 횟수)
- 클럭이 '똑-딱-' 하고 1초에 한 번 반복되면 1Hz
클럭 신호를 무지성으로 높이면
CPU가 무지막지하게 빨라진다?
필요 이상으로 클럭을 높이면 발열이 심해짐
코어와 멀티 코어
- 클럭 속도를 늘리는 것 이외에 성능을 높이는 방법은?
- 코어 수를 늘리는 방법 ex) 듀얼 코어, 멀티 코어...
- 스레드 수를 늘리는 방법 ex) 멀티 스레드..
코어(CORE)란?
- 현재덕 관점에서 CPU라는 용어를 재해석 해야 함
- 명령어를 실행하는 부품?
- 전통적으로 '명령어를 실행하는 부품'은 원칙적으로 하나만 존재
- But 오늘날 CPU에는 '명령어를 실행하는 부품'이 여러 개 존재
- '명령어를 실행하는 부품'을 코어라는 용어로 사용
코어를 무지성으로 늘리면
연산 속도도 그에 비례해 빨라지나?
꼭 코어 수에 비례하여 증가하진 않는다.
여러개의 코어를 두는 방식은 명령어들을 적절하게 분배하는 방식도 중요함
스레드
스레드란 '실행 흐름의 단위'
하드웨어 스레드
- 하나의 코어가 동시에 처리하는 명령어 단위
멀티스레드 프로세서를 실제로 설계하는 일은 매우 복잡하지만,
가장 큰 핵심은 레지스터
하나의 명령어를 실행하기 위해 꼭 필요한 레지스터들은 편의상 '레지스터 세트'라고 표기
하나의 코어에 레지스터 세트가 여러개가 있다면 하나의 코어가 여러개의 명령어를 동시에 처리가 가능해짐
하드웨어 스레드
- 논리 프로세서 라고도 부른다.
CPU 내부에 코어가 몇개고 스레드가 몇개인지는 메모리 안의 프로그램이 알필요가 없다.
다만 CPU가 상황에 맞게 처리할 뿐 => 논리 프로세서
소프트웨어 스레드
- 하나의 프로그램에서 독집적으로 실행되는 단위
1코어 1스레드 CPU도 여러 소프트웨어적 스레드를 만들 수 있다.
CPU는 내부적으로 여러개 프로그램이나 스레드를 실행할 때 엄청나게 빠르게 번갈아가면서 실행할 수 있다.
Reference
'cs' 카테고리의 다른 글
프로세스 스케줄링 알고리즘 (0) | 2024.04.03 |
---|---|
알아두면 쓸데 있는 GOF 디자인 패턴 (0) | 2024.03.28 |
소스 코드와 명령어 (0) | 2024.03.02 |
0과 1로 문자를 표현하기 (0) | 2024.03.02 |
0과 1 (0) | 2024.03.02 |