[혼공컴운] 5장 - CPU 성능 향상 기법
5-1 빠른 CPU를 위한 설계 기법
클럭
- 컴퓨터 부품들은 클럭 신호에 맞춰 움직인다.
- 클럭 속도는 헤르츠(Hz) 단위로 측정하고, 1초에 클럭이 몇번 반복되는지를 나타낸다.
(100Hz 는 1초에 클럭이 100번 반복된다는 의미이다.) - 클럭 속도는 일정하지 않고, 클럭 속도를 높일 수록 발열이 증가하기 때문에 클럭 속도를 올리는 것 만으로는 CPU 성능 향상에 한계가 있다.
코어
- CPU 의 정의는 ‘명령어를 실행하는 부품’ 인데, 오늘날의 CPU는 이러한 부품을 여러개 가질 수 있게 되었고 이를 코어라고 부른다.
(여기에는 ALU, 제어장치, 레지스터가 포함된다.) - 하나의 CPU가 2개 이상의 코어를 가지고 있는 경우 멀티코어 CPU 또는 멀티코어 프로세서라고 부른다.
- CPU에 코어가 여러개라고 하더라도 반드시 성능향상이 되는 것은 아니다.
- 코어마다 처리할 연산이 적절히 분배되지 않는다면 코어 수에 비례해서 연산 속도가 증가하지 않는다.
- 처리하고자 하는 작업량보다 코어수가 지나치게 많은 경우에도 성능에 크게 영향이 없다.
스레드
스레드에는 하드웨어적 스레드와 소프트웨어적 스레드가 있다.
하드웨어적 스레드
하나의 코어가 동시에 처리하는 명령어 단위
- 2코어 4스레드의 경우 CPU에 코어가 2개 있고, 각 코어가 동시에 2개의 스레드를 처리할 수 있다는 의미이다.
(이는 프로그램의 입장에선 CPU가 4개 있는 것 처럼 보인다. 그래서 하드웨어 스레드는 논리 프로세서라고도 불린다.) - 이처럼 하나의 코어로 여러 명령어를 동시에 처리하는 CPU를 멀티스레드 프로세서 또는 멀티 스레드 CPU라고 합니다.
- 하이퍼스레딩이란 인텔의 멀티 스레드 기술을 의미한다.
소프트웨어적 스레드
하나의 프로그램에서 독립적으로 실행되는 단위
- 프로그램이 동시에 여러 기능이 수행되길 원한다고 했을 때, 코드를 각각의 스레드로 만들면 동시에 실행할 수 있다.
멀티스레드 프로세서
멀티스레드 프로세서의 핵심은 레지스터이다.
하나의 코어로 여러 명령어를 동시에 처리하기 위해선 여러개의 ‘레지스터 세트’ (프로그램 카운터, 스택포인터 등)가 필요하다.