728x90
클럭, 멀티코어, 멀티스레드라는 용어는 컴퓨터 구매, 프로그램 개발 시에 많이 들어본 단어이다
클럭
- 컴퓨터의 모든 부품을 일사불란하게 움직일 수 있게 하는 시간 단위
- 학습했던 내용
- 컴퓨터 부품들은 클럭 신호에 맞춰 일사불란하게 움직임
- CPU는 명령어 사이클이라는 흐름에 맞춰 명령어를 실행함
- 클럭 신호가 빠르다면 컴퓨터 부품은 그만큼 빠은 박자에 맞춰 움직임
- 클럭 속도가 높은 CPU가 성능이 좋은 CPU라고 볼 수 있음
클럭 속도
- 단위로 헤르츠(Hz)를 사용함
- 1초에 클럭이 한 번 반복되면 1Hz, 100번 반복되면 100Hz이다.
- intel i9 기준 평균 4.0GHz (1 GHz = 1,000,000,000Hz \(10^{9} \))
- 평균이라는 단어를 사용한 이유는 클럭속도는 유지되는 것이 아니라 상황에 따라 달라짐
- 최대 클럭 속도를 강제로 끌어올릴 수 있는데 이런 기법은 오버클럭킹이라고 함
- 클럭 속도가 높으면 CPU가 빨라질까?
- CPU를 빠르게 하지만 발열 문제가 심해짐
- 클럭 속도만으로는 성능을 올리는 것에 한계가 있음
클럭 속도 높이는 방법 외에 CPU 성능을 높이는 방법
- 코어 수 늘리기
- 스레드 수 늘리기
코어와 멀티코어
- CPU란 명령어를 실행하는 부품이고 이는 전통적인 관점에서 원칙적으로 하나만 존재했었음
- 하지만 기술이 발전하여 CPU 내부에 명령어를 실행하는 부품을 얼마든지 만들 수 있게 됨
- 코어 = 명령어를 실행하는 부품
코어를 여러 개 포함하고 있는 CPU를 멀티코어 Multi-core CPU 또는 멀티코어 프로세서 라고 부름
1. 클럭 속도 2.4 GHz 단일 코어 CPU
2. 클럭 속도 1.9GHz 멀티코어 CPU
1번과 2번을 비교한다고 할 때 일반적으로 2번 성능이 훨씬 좋음
그럼 코어를 100개로 늘르면 연산 처리 속도가 100배로 빨라지는 걸까?
그렇지 않다. CPU의 연산 속도가 꼭 코어 수에 비례하여 증가하지 않음 -> 업무가 균등하게 분배되지 않거나 한 두 코어만 열심히 처리하면 코어 수에 비례하여 연산 속도가 증가하지 않음
스레드와 멀티스레드
스레드 Thread
- 실행 흐름의 단위
- CPU와 프로그래밍의 스레드는 다르게 구분해야 함
- CPU 스레드: 하드웨어적 스레드
- 프로그램 스레드: 소프트웨어적 스레드
하드웨어적 스레드
- 하나의 코어가 동시에 처리하는 명령어의 단위
- 위에서의 CPU는 1 코어 1 스레드 CPU였지만 2 코어 4 스레드 CPU도 존재함
위에 그림처럼 하나의 코어로 여러 명령어를 동시에 처리하는 CPU를 멀티스레드 프로세서, 멀티스레드 CPU라고 함
하이퍼스레딩: 인텔의 멀티스레드 기술
소프트웨어적 스레드
- 스레드: 하나의 프로그램에서 독립적으로 실행되는 단위
- 프로그램의 여러 부분이 동시에 실행될 수 있음(멀티 스레드)
- 워드
- 사용자로부터 입력받은 내용을 화면에 보여주는 기능
- 사용자가 입력한 내용이 맞춤법에 맞는지 검사하는 기능
- 사용자가 입력한 내용을 수시로 저장하는 기능
- 들을 작동시키는 코드를 각각의 스레드로 만들면 동시에 실행할 수 있음
하드웨어 스레드: 하나의 코어가 동시에 처리하는 명령어 단위 (논리 프로세서라고 부르기도 함)
소프트웨어 스레드: 하나의 프로그램에서 독립적으로 실행되는 단위
멀티스레드 프로세서
- 하드웨어 스레드가 가능한 이유
- 멀티스레드 프로세서의 핵심은 레지스터이다
- 하나의 명령어를 처리하기 위해 꼭 필요한 레지스터를 여러 개 가지고 있으면 됨
- 프로그램 카운터가 2개 라면 메모리에서 가져올 명령어 주소를 2개 지정할 수 있고 스택 포인터가 2개라면 2개의 스택을 관리할 수 있음
12 코어 24 스레드 CPU 사용 중
코어: 명령어를 실행할 수 있는 하드웨어 부품
스레드: 명령어를 실행하는 단위
멀티코어 프로세서: 명령어를 실행할 수 있는 하드웨어 부품이 CPU안에 2개 이상 있는 CPU
멀티스레드 프로세서: 하나의 코어로 여러 개의 명령어를 동시에 실행할 수 있는 CPU
728x90
'컴퓨터구조' 카테고리의 다른 글
[컴퓨터구조] 메모리 RAM의 특징과 종류 (0) | 2022.11.23 |
---|---|
[컴퓨터구조] 명령어 병렬 처리 기법 (0) | 2022.11.22 |
[컴퓨터구조] 명령어 사이클, 인터럽트 (0) | 2022.11.22 |
[컴퓨터구조] 레지스터 (0) | 2022.11.22 |
[컴퓨터구조] CPU, ALU와 제어장치 (1) | 2022.11.22 |