오늘 배울 것
- 클럭
- 코어 & 멀티 코어
- 스레드 & 멀티 스레드
CPU의 속도를 빠르게 만들어보자
1. 컴퓨터 부품들은 '클럭 신호'에 맞춰 일사불란하게 움직인다
2. CPU는 '명령어 사이클' 이라는 정해진 흐름에 맞춰 명령어들을 실행한다
그럼 클럭 신호가 빠르게 반복되면 CPU를 비롯한 컴퓨터 부품들은 그만큼 빠르게 움직일까?
-> 예스. 꼭 그렇지만은 않지만 일반적으로 그럼
클럭 속도
- 클럭 속도는 헤르츠라는 단위로 측정됨
- 헤르츠(Hz): 1초에 클럭이 반복되는 횟수
- 클럭이 똑-딱 하고 1초에 한 번 반복되면 1Hz
- 클럭이 1초에 100번 반복되면 100Hz
- 그럼 클럭속도만 올리면 씨피유 빨라지겠네요? .. 꼭 그런건 아님.. 필요 이상으로 클럭을 높이면 발열이 심각해짐 -
클럭 속도를 늘리는 방법 이외에는?
- 코어 수를 늘리는 방법 (듀얼 코어, 멀티 코어 ... )
- 스레드 수를 늘리는 방법 (멀티 스레드 ... )
코어(Core)란?
- 현대적인 관점에서 "CPU"라는 용어를 재해석 해야 함
- '씨피유는 명령어를 실행하는 부품'? 라고 이해를 했을거임
- 근데 전통적으로 명령어를 실행하는 부품은 원칙적으로 하나만 존재
- 하지만 오늘날에는 씨피유에는 명령어를 실행하는 부품이 여러개 존재하게 됨
- 그 중에 '명령어를 인출하고 해석하고 실행하는 부품'을 오늘날 코어라는 용어로 사용하게 됨
- 코어를 여러개 가지고 있는걸 멀티코어라고 함
- 코어 수에 비례하여 CPU 속도가 증가하지는 않음
스레드와 멀티 스레드
스레드란 '실행 흐름의 단위'
하드웨어 스레드(논리프로세서) : 하나의 코어가 동시에 처리하는 명령어 단위
위 사진은 코어가 명령어를 해석하고 실행하는 부품이 2개고(2코어),
각각의 코어가 2개씩 명령어를 동시에 실행할 수 있는 상태 (4스레드)
이러한 종류의 CPU를 멀티스레드프로세서, 멀티스레드 CPU 라고 함
멀티스레드 프로세서를 실제로 설계하는 일은 매우 복잡하지만, 가장 큰 핵심은 레지스터
소프트웨어 스레드 : 하나의 프로그램에서 독립적으로 실행되는 단위
싱글스레드는 하나의 실행 흐름만 가지고 실행되는 것
멀티스레드는 두 개 이상의 영역이 실행되는 것
예시로
1. 사용자로부터 입력받은 내용을 화면에 보여주는 기능
2. 사용자가 입력한 내용이 맞춤법에 맞는지 검사하는 기능
3. 사용자가 입력한 내용을 수시로 저장하는 기능
을 만들고 싶다?
이럴 때 소프트웨어 스레드를 3개 만들어서 각각 실행되도록 하면 3개의 실행흐름이 만들어짐
'CS' 카테고리의 다른 글
[혼자 공부하는 컴퓨터구조 + 운영체제] - 명령어 집합 구조, CICS & RISC (1) | 2023.06.11 |
---|---|
[혼자 공부하는 컴퓨터구조 + 운영체제] - 명령어 병렬 처리 기법 (0) | 2023.05.07 |
[혼자 공부하는 컴퓨터구조 + 운영체제] - 명령어 사이클과 인터럽트 (0) | 2023.04.23 |
[혼자 공부하는 컴퓨터구조 + 운영체제] - 레지스터 (0) | 2023.04.23 |
[혼자 공부하는 컴퓨터구조 + 운영체제] - ALU와 제어 장치 (0) | 2023.04.16 |