1. 빠른 CPU를 위한 설계 기법
1-1. 클럭
- 컴퓨터 시스템에서 시간의 흐름을 제어하는, CPU와 다른 하드웨어의 동작을 동기화하는 주기적인 전기 신호
헤르츠(Hz)
: 1초에 클럭이 몇 번 반복되는지에 대한 클럭 속도 단위 ex. 2.5G(=2.5*10^9)Hz = 25억
- 클럭 속도가 높은 CPU가 일반적으로 성능이 좋으나 (단점) 발열 문제가 있음
- 클럭 속도가 일정하게 유지되는 것은 아니며 최대 클럭 속도를 강제로 끌어올리는 오버클럭킹도 있음
1-2. 코어와 멀티코어
코어
: 명령어를 실행하는 부품(=이전 장에서 CPU 자체로 불렸던, ALU + 레지스터(들) + 제어장치 묶음)
멀티코어
(=멀티코어 프로세서) : 여러 개의 코어를 가진 CPU ex. 듀얼코어, 쿼드코어, 옥타코어 등
- CPU의 연산 속도가 코어 수에 꼭 비례X → 코어마다 처리할 명령어의 적절한 분배가 중요
1-3. 스레드와 멀티스레드
<aside>
❕
코어 = 명령어를 실행할 수 있는 하드웨어 부품
스레드 = 명령어를 실행하는 단위
</aside>
<aside>
❕
한 번에 하나씩 명령어를 처리하는 1코어 1스레드 CPU도 ‘소프트웨어적 스레드’ 수십 개 실행 가능
</aside>
스레드
: 실행 흐름의 단위
- 하드웨어적 스레드 : 하나의 코어가 동시에 처리하는 명령어 단위
- 멀티스레드 프로세서, 멀티스레드 CPU = 논리 프로세서
- 하이퍼 스레딩 : 인텔의 멀티스레드 기술
- 멀티스레드 프로세서 = 레지스터가 핵심
- 하나의 명령어를 처리하기 위해 꼭 필요한 레지스터 세트 등이 여러 개 필요함
- 하드웨어적 스레드 각각은 한 번에 하나의 명령어를 처리하는 CPU처럼 느껴짐
- ex. 2코어 4스레드는 프로그램 입장에서는 CPU가 4개 있는 것처럼 느껴짐
- 소프트웨어적 스레드 : 하나의 프로그램에서 독립적으로 실행되는 단위 ex. 화면 출력 + 입력 등
2. 명령어 병렬 처리 기법
- 명령어 병렬 처리 기법 : 명령어를 동시에 처리하여 CPU를 한시도 쉬지 않고 작동시키는 기법
- 명령어 파이프라이닝, 슈퍼스칼라, 비순차적 명령어 처리(OoOE)