먼저, CPU의 작동원리를 알아보기 전에 CPU(중앙처리장치)에 대해 알아봅시다.
간단하게 설명하면 사람의 두뇌와 같이 컴퓨터 시스템에 부착된 모든 장치의 동작을 제어하고 명령을 실행하는 장치입니다. 중앙처리장치는 제어장치(Control Unit), 연산장치(ALU), 레지스터(Register) 그리고 이들을 연결하여 데이터를 전달하는 버스로 구성되어 있습니다.
연산 장치(ALU)는 산술 연산과 논리 연산을 수행하는 기능을 가진 장치입니다.
주로 정수 연산을 수행하지만, 최근에는 실수연산과 부동소수 연산까지 처리할 수 있게되었습니다.
연산장치의 구성요소의 기능을 간단하게 알아봅시다.
가산기(Adder)
: 산술연산을 수행하는 회로, 두 개이상의 수의 합을 계산하는 논리 회로.
보수기(Complementer)
: 뺄셈을 사용할 때 사용하는 보수를 만들어주는 논리 회로.
시프터(Shifter)
: 2진수의 각 자리를 왼쪽 또는 오른쪽으로 이동해주는 회로.
오버플로우 검출기(Overflow)
: 산술기의 결과가 해당 레지스터의 용량을 초과했을 때를 검출해주는 회로.
데이터 레지스터(Data Register)
: 연산을 위한 데이터를 일시적으로 기억하는 레지스터.
연산장치의 명령어 수행 과정
① 레지스터 또는 기억장치에서 데이터를 가져온다.
② ALU에서 명령어에 따른 연산을 수행한다.
③ 연산의 결과값을 누적기(Accumulator)에 저장한다.
제어 장치는 모든 장치가 유기적으로 동작할 수 있도록 하고, 주기억 장치에서 명령어를 가져와 해독하여 제어신호를 결과에 따라 컴퓨터 시스템 내의 각 자원에 전달하여 자원의 동작을 명령/제어하는 CPU의 장치입니다.
제어장치의 구성요소와 기능을 간단하게 알아봅시다.
제어장치의 명령어 수행 과정
① PC에 저장된 주소를 MAR로 보낸다.
② MAR에 저장된 주소에 있는 기억장치의 명령어를 MBR로 읽어 오고, PC를 증가시킨다. 명령어의 실행을 위해 읽어 온 명령을 IR에 저장한다.
③ 명령어의 연산코드는 명령어 해독기로 보내고 오퍼랜드는 주소처리기로 보낸다.
④ 주소처리기는 MAR을 통해 기억장치에 접근하여 명령어 수행에 필요한 오퍼랜드의 주소 또는 다음 명령어의 주소를 계산한다.
⑤ 제어신호 발생기에서는 위의 ①~④ 과정에서 필요한 제어신호와 연산코드를 해독하여 명령 수행을 위한 제어신호를 발생시킨다. 이때 명령어가 기억장치의 주소를 참조하는 명령어라면 주소처리기를 동작시켜 다음에 수행될 명령어의 주소를 계산한다.
⑥ 현재 IR에 있는 명령어의 수행이 끝나면 증가된 PC의 내용은 다음에 수행할 명령어의 주소를 지정하거나 분기가 필요한 경우 해당 명령어의 주소를 지정하는데 이는 다시 ①부터의 과정을 반복하며 실행된다.
MBR
위의 부분에서 다룬 MBR은 Memory Buffer Register 약자로 기억장치 HDD(Master Boot Record)와 다른 의미라는 것을 알 수 있습니다.
CPU의 속도에 비해서 하드디스크(HDD)는 너무 느리기 때문에 CPU는 HDD와 소통하지 않습니다.
그래서 CPU는 램(RAM)과 소통하는데 HDD나 SSD의 데이터를 RAM으로 이동시키고 그 데이터를 CPU에서 가지고 옵니다. 하지만, 램도 CPU에 비해 많이 느리기 때문에 CPU내부나 근처에 캐시메모리를 만들어 그곳에 데이터를 저장합니다. 캐시메모리는 램에 비하면 용량이 매우 작기 때문에 중요하다고 판단되는 데이터만 저장해서 사용합니다. 캐시메모리는 레벨이 존제하는데 1~3까지 존재합니다. 캐시메모리의 레벨이 높아질수록 속도가 느려지고 용량이 커집니다.
SSD, RAM, CACHE, REGISTER 순으로 속도는 빨라지지만, 용량이 작고 가격도 비싸집니다.
CPU는 데이터를 인출(Fetch), 해석(Decode), 실행(Execute), 쓰기(Writeback) 하는 과정을 거칩니다. 실제로 CPU는 이 단계를 세분화해서 사용하는데 이것을 스레드라고 하고 합니다.
이 때문에 코어 하나에 여러 개의 스레드가 실행되면 속도가 빨라지는 것입니다.
따라서, CPU의 동작 과정 중 하나인 명령어의 제어와 관련된 부분을 담당하는 제어장치와 산술 논리 연산 부분을 담당하는 연산장치, 레지스터 등의 구성 요소들이 상화 작용하여 일어나는 전체적인 과정을 CPU의 작동원리라고 합니다.