빠른 CPU를 설계하기 위한 방법으로는 아래 3가지 요소를 조절할 수 있다.
컴퓨터 부품은 Clock에 맞춰서 작동한다.
즉, 빠른 CPU를 위해서는 clock의 속도를 올리면 CPU를 비롯한 부품들은 그만큼 빠른 박자에 맞춰서 움직일 수 있다.
clock speed는 Hz 단위로 측정하며, 상용으로 사용되는 clock speed는 2.5G ~ 4.9G 정도 이다.
clock speed를 높일수록 CPU의 속도가 빨라질 수 있지만 speed가 오를수록 발열이 오르고 특정 지점 이상으로 speed가 높아지면 powerwall이 발생한다.
이전까지 말했던 CPU라는 하나의 부품은 '명령어를 실행하는 부품'이었는데, 이 부품 하나를 'Core'라고 부르며 여러 'Core'를 탑제하는 multi-core CPU 또는 multi-core process로 확장하는 방법이 있다.
이는 CPU 자체를 여러개 설치하는 것과 같은 효과를 내며 2.4GHz의 단일 코어 CPU와 1.9GHz의 듀얼코어 CPU를 비교하면 일반적으로 후자가 성능이 더 좋다.
하지만 무작정 Core를 늘린다고 속도가 빨라지지는 않는 것처럼 core마다 처리할 명령어들을 얼마나 적절하게 분배하느냐에 따라 연산 속도가 크게 달라진다.
thread는 process에서 사용하는 software thread와 CPU와 같은 hardware에서 사용하는 hardware thread 와 같이 구분해서 볼 수 있다.
여기서는 CPU에서 사용하는 hardware thread로 하나의 core가 동시에 처리하는 명령어 단위를 의미한다.
이 명칭은 정식 명칭이 아니라 편하게 부르기 위해 사용한다.
단일 thread CPU는 당연히 하나만의 명령어를 처리하지만, multithread CPU는 여러 개의 명령어를 동시에 실행할 수 있다.(intel에서는 자신들의 multithread 기술에 hyper threading이라는 명칭을 붙였다.)
multi processor CPU를 실제로 설계하는 일은 매우 복잡하지만, 핵심적인 부분은 register이다.
하나의 core로 여러 명령어를 동시에 처리하도록 만들려면 program counter, stack pointer, data buffer register 등과 같이 하나의 명령어를 처리하기 위해 필요한 register set을 여러개 가지고 있으면 된다.
이러한 register를 2개 가지고 있으면 CPU는 2개의 명령어를 처리하기 위한 정보를 가지고 있을 수 있고 이를 이용해 ALU와 제어장치가 2개의 register set에 저장된 명령어를 해석하고 실행하면 하나의 core에서 2개의 명령어가 동시에 실행될 수 있다.
CPU 입장에서는 이러한 방식의 처리 방식이 한번에 여러개의 CPU를 가진 것 처럼 보이기 때문에 이를 logical processor라고 부르기도 한다.