클럭(Clock)
CPU는 명령어를 실행하기 위해 명령어 사이클이라는 과정을 따른다. 명령어 사이클은 명령어를 메모리에서 가져오고, 해당 명령어를 해석하며, 실행하고, 결과를 저장하는 단계로 구성된다. 클럭은 이러한 명령어 사이클을 일관되게 제어하여 CPU의 작동을 동기화한다. 각 명령어는 클럭 주기에 따라 수행되며, 명령어의 실행이 끝나면 다음 명령어를 수행한다.
클럭 신호
클럭 신호는 일정한 주기로 변하는 신호로, CPU의 모든 동작은 클럭의 신호에 따라 동작한다. 클럭의 주기는 시스템의 성능과 전력 소모에 영향을 미치므로, 클럭 주기를 어떻게 설정하느냐가 중요다
클럭 속도
헤르츠(Hz)단위로 측정한다. 이는 1초에 클럭이 몇 번 반복되는지 나타낸다. 클럭이 똑-딱하고 1초에 한번 반복되면 CPU클럭 속도는 1Hz이고 클럭이 1초에 100번 반복되면 CPU클럭 속도는 100Hz인 셈이다.
실제로 클럭 속도가 높은 CPU는 일반적으로 성능이 좋다. 그래서 클럭 속도는 CPU속도 단위로 간주되기도 한다.
01 베이스 클럭 속도
CPU가 일반적으로 동작하는 기본 클럭 속도
02 최대 클럭 속도
오버클럭킹(overclocking)이 가능한 경우에 해당하는 클럭 속도
그럼 클럭속도를 무조건적으로 높이면 속도가 빨라질까?
클럭 주파수는 1초에 클럭이 발생하는 횟수를 나타낸다. 클럭 주파수가 높을수록 CPU는 빠르게 동작할 수 있지만, 높은 클럭 주파수는 전력 소모와 발열을 증가시킬 수 있다.
클럭 속도는 일정하지 않다.
클럭이라는 단어만 보고 시계를 떠올려 클럭 속도가 매번 일정하게 유지된다고 생각할 수도 있지만 실제로는 그렇지 않다.
그러므로 클럭 속도가 계속해서 변한다는 의미이다. CPU는 계속 일정한 클럭 속도를 유지하기보다는 고성능을 요하는 순간에 순간적으로 클럭 속도를 높이고 그렇지 않을 때는 유연하게 클럭 속도를 낮추기도 한다.
01 동적 클럭 관리(Dynamic Clock Management)
CPU는 현재의 작업 부하에 따라 클럭 속도를 조절하며 작업 부하가 높을 때는 클럭 속도를 높여 성능을 향상시키고 부하가 낮을 때는 클럭 속도를 낮춰 전력 소모를 줄인다.
02 오버클럭킹(Overclocking)
CPU, 메모리 또는 그래픽 카드의 클럭 속도를 공식 스펙보다 높게 조절하는 것이다. 이를 통해 높은 성능을 얻을 수 있지만 안전성과 내구성에 영향을 미칠 수 있다.
코어와 멀티코어
현대적인 관점에서 CPU의 정의가 변화하면서, CPU는 더 이상 단일한 명령어를 실행하는 부품이라는 개념을 넘어서 여러 개의 명령어를 동시에 처리할 수 있는 다중 코어 아키텍처로 발전했다. 이러한 다중 코어 아키텍처는 단일 코어에 비해 성능 향상과 효율성을 제공한다.
코어
우리가 지금까지 CPU정의로 알고 있었던 명령어를 실행하는 부품은 오늘날 코어(core)라는 용어로 사용된다. 그래서 오늘날 CPU는 단순히 명령어를 실행하는 부품에서 명령어를 실행하는 부품을 여러 개 포함하는 부품으로 명칭의 범위가 확장되었다.
멀티 코어 CPU 또는 멀티코어 프로세서
CPU내에 명령어를 처리하는 일꾼이 여러 명 있는 것과 같다. 여러 개의 코어를 포함하고 있는 CPU를 말한다.
코어 한 개인 경우 : 싱글코어(single-core)
코어 두 개인 경우 : 듀얼코어(dual-core) - 멀티코어
코어 세 개인 경우 : 트리플코어(triple-core) - 멀티코어
코어를 두개, 세 개, 100개 늘리면 연산 속도도 그에 비례하여 빨라지나요?
꼭 그렇지 않다. 조별과제를 떠올리면 된다. 업무가 균등하게 분배되지 않거나 한 두사람만의 생산성만큼 결과물이 나오게된다. 그러므로 코어마다 처리할 명령어들을 얼마나 적절하게 분배하느냐에 따라서 연산 속도는 달라진다.
스레드
사전적의미는 실행 흐름의 단위이다. 하드웨어적 스레드가있고 소프트웨어적 스레드가 있다.
하드웨어적
01 스레드
스레드를 하드웨어적으로 정의하면 하나의 코어에서 동시에 처리하는 명령어 단위이다. 우리가 지금까지 배운 CPU는 1코어 스레드 CPU였다. 즉 명령어를 실행하는 부품이 하나있고 한번에 하나씩 명령어를 실행하는 CPU를 가정했다.
02 멀티 쓰레드
하나의 코어로 여러 명령어를 동시에 처리하는 CPU를 멀티쓰레드 프로세서 또는 멀티스레드 CPU라고 한다.
여러 스레드를 지원하는 CPU는 하나의 코어로도 여러 개의 명령어를 동시에 실행할 수 있다. 예를 들어 2코어 스레드 CPU는 아래 그림처럼 명령어를 실행하는 부품을 두 개 포함하고 한 번에 네 개의 명렁어를 처리할 수 있는 CPU를 의미한다.
03 하이퍼스레딩(hyper-threading)
인텔의 멀티스레드 기술을 의미한다. 인텔이 자신들의 멀티스레드 기술에 하이퍼스레딩이라는 명칭을 부여했다.
소프트웨어적
01 스레드
하나의 프로그램에서 독립적으로 실행되는 단위로 프로세스 내에서 발생하는 실행의 흐름을 의미한다.
02 멀티 스레드
하나의 프로그램에서 동시에 두 개 이상의 스레드가 실행된다고 보면 된다. 이는 단일 프로세스 내에서 여러 실행 흐름이 동작하고 각각의 스레드가 동일한 주소 공간을 공유하면서 작업을 수행한다.
결과
소프트웨어적 스레드는 단일 코어에서 여러 개의 스레드를 동시에 실행할 수 있다. 즉 하드웨어적 스레드가 1개인 경우에도 소프트웨어적으로 여러 스레드를 생성하여 동시에 다양한 작업을 처리할 수 있다.
이러한 멀티 스레딩은 프로그램의 병렬성을 높이고 CPU 자원을 효율적으로 활용하여 성능을 향상시킨다. 멀티 스레딩을 통해 여러 작업이 동시에 진행될 수 있으므로 사용자 경험을 향상시키거나 병렬 작업을 처리할 수 있다.
멀티스레드 프로세서
하나의 코어로 여러 명령어를 동시에 처리하는 CPU이다. 실제로 설계하는 일은 매우 복잡하지만 가장 크 핵심은 레지스터이다. 하나의 코어로 여러 명령어를 동시에 처리하도록 만들려면 프로그램 카운터, 스택 포인터, 데이터 버퍼 레지스터, 데이터 주소 레지스터와 같이 하나의 명령어를 처리하기 위해 꼭 필요한 레지스터를 여러개 가지고 있으면 된다.
하나의 명령어를 실행하기 위해 꼭 필요한 레지스터들을 편의상 레지스터 세트라고 표기하였다.
논리 프로세서
논리 프로세서는 논리적으로 독립된 처리 단위로, 하나의 물리적인 코어에서 다수의 논리 프로세서가 동작할 수 있도록 한다. 이는 하나의 코어가 여러 스레드를 동시에 처리할 수 있다.
하드웨어 스레드를 이용한 멀티스레드 프로세서에서는 메모리 속 프로그램은 마치 한 번에 하나의 명령어를 처리하는 CPU가 여러 개 있는 것처럼 보인다. 실제로는 여러 명령어를 동시에 처리하는 것이 아니라, 논리적으로 독립된 처리 단위가 여러 개 있어 마치 병렬로 처리되는 것처럼 보이게 된다.
참고 : 본 내용은개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제강의를 수강하여 작성하였습니다. https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard
'책 > 혼공 컴퓨터구조+운영체제' 카테고리의 다른 글
컴퓨터 구조 - ISA, CISC, RISC (0) | 2023.11.29 |
---|---|
컴퓨터 구조 - 명령어 파이프라인, 슈퍼 스칼라, 비순차적 명령어 처리 기법 (0) | 2023.11.29 |
컴퓨터 구조 - 명렁어 사이클,인터럽트, 예외,하드웨어 인터럽트, 인터럽트 서비스 루틴 (1) | 2023.11.22 |
컴퓨터 구조 - 레지스터(프로그램 카운터, 명령어 레지스터, 메모리 주소 레지스터등), 스택 주소 지정방식, 변위 주소 지정 방식 (0) | 2023.11.19 |
컴퓨터 구조 - ALU,플래그,제어장치 (0) | 2023.11.18 |
댓글