CPU의 작동 원리

koeyhoyh·2023년 7월 26일
1

사내 스터디

목록 보기
1/1

회사에서 프론트엔드 개발 중, 웹 워커를 여러 개 만들어 사용해야 하는 일이 생겼다. 스크럼 시간에 해당 기능에 멀티 쓰레딩을 지원할 거라고 말했는데 "그러면 어떻게 되나요?" 라는 물음에 "브라우저에서 많은 쓰레드를 사용하니까 더 많은 CPU자원을 사용할거고 다른 작업을 잘 처리하지 못하게 되겠죠." 라는 부끄러운 답변을 했다.

조금 더 답변을 잘 하고 싶다는 생각을 했고, 배웠지만 잊어버린 것에 대해 정리해보면 좋을 것 같다고 생각해서 CPU의 작동 원리부터 글을 적게 되었다.


CPU(Central Processing Unit)의 구성

CPU는 트랜지스터라는 반도체로 만들어져 있다.

반도체는 전기 전도율이 도체와 부도체의 중간 정도인 물질이다. 가해진 전압이나 열에 따라서 전도도가 변한다.

반도체는 주로 실리콘으로 만든다. 실리콘은 원자번호 14번으로, 최 외각전자가 4개이다.


알다시피, 원자들은 옥텟 규칙에 따라 최외각전자를 8개로 만드려는 성질이 있고 그 성질에 따라서 자연적인 상태의 실리콘은 보통 이런 식으로 결합하여 안정적인 상태를 띠고 있다.

TMI: 실리콘(규소)는 지구에서 2번째로 많은 원소이다. (1번째는 산소)
-> 자원이 풍부해 가격이 꽤 저렴하다.


그러나 이렇게 안정적인 상태를 가지고 있으면 전류가 흐르지 않게 된다. 그렇기 때문에 전자가 하나 부족하거나, 전자가 하나 많은 원소를 첨가해 전류를 통하게 만들어준다.

전자가 한 개 적은 원소를 첨가한 반도체는 [P형 반도체], 전자가 하나 많은 원소를 첨가한 반도체는 [N형 반도체] 라고 한다.

전자가 하나 부족한 원소를 첨가하면 안정적인 형태에서 빈 구멍(양공)이 생기게 되는데, 그 구멍을 채우기 위해 전자가 움직일 수 있다.
전자가 하나 많은 원소를 첨가하면 남는 전자(자유전자)가 자유롭게 이동하게 된다.

이제, P형 반도체와 N형 반도체를 붙여보자.


안정적인 상태가 되기 위해 반도체가 맞닿은 쪽의 전자는 N형 반도체에서 P형 반도체 쪽으로 이동한다. 이렇게 시간이 지나면 공핍영역이라는 것이 생긴다. 공핍영역이란 원자들이 안정 상태를 만족하게 되어 전자가 이동할 수 없는 영역을 뜻한다.

이렇게 P형 반도체와 N형 반도체를 붙여 공핍영역이 생성되면, 순 방향으로 전압을 걸어주지 않는 이상 해당 반도체는 전류가 흐르지 않게 된다.
즉, 한 방향으로만 전류가 흐르게 되는 것이다. (P형 반도체와 N형 반도체를 붙인 것을 '다이오드'(Diode)라고 한다.)

이제, P형-N형-P형이나 N형-P형-N형으로 반도체를 붙여보자. (가운데 낀 반도체는 아주 얇게 만든다.)

평상시에, 앞의 V1에 연결되어 있는 p형-n형 반도체는 순방향으로 연결되어 있으니 Ie , Ib 에 전류가 흐를 것이고, V2에 연결되어 있는 n형-p형 반도체는 역방향으로 연결되어 있으니 Ic 에 전류가 흐르지 않을 것이다.

이 때, V1에 일정 임계점을 넘는 전압을 걸어보자. 그러면 첫 번째 P형 반도체에 있던 양공이 n형 반도체를 뛰어넘어 오른쪽의 p형 반도체로 이동하게 된다. -> Ic 에도 전류가 흐르게 된다.

이러한 구조를 이용해서 반도체에 전류를 흐르게/흐르지 않게 만들 수 있게 되었다.

이렇게 전류를 흐르게/흐르지 않게 만드는 것을 '스위칭'이라고 하고, 전류가 흐르는 상태를 1, 흐르지 않는 상태를 0으로 표현할 수 있게 되었다!

TMI: 트랜지스터가 작아지면서 누수 전류가 흐르는 "터널링 현상"이라는 것이 생겼다.
삼성전자에서 이 누수 전류가 흐르는 현상을 활용가능한 상태로 만듦으로써 3진법 반도체를 만들었다.

이제, 트랜지스터를 결합해 논리 회로(logic gate)를 만들 수 있게 되었다.

논리 회로의 정의는 '하나 이상'의 논리 입력 값에 대해 논리 연산을 수행하여 하나의 논리 출력값을 얻는 회로이다.


트랜지스터는 보통 이런 모양으로 많이 표현한다.

아래는 트랜지스터를 이용해 AND 회로를 만들었다.
A와 B가 둘 다 전류가 흘러야 출력에도 전류가 흐르게 된다.

아래는 OR 회로이다. (다크모드 사용자 분들께 죄송합니다..)
A, B 두 회로 중 하나만 전류가 흐르면 출력에 전류가 흐르게 된다.

아래는 NOT 회로이다.
트랜지스터에 전압이 걸려있으면 출력쪽으로 전류가 흐르지 않고 전압이 걸려있지 않다면 출력에 전류가 흐르게 된다.

마지막으로 소개할 XOR(Exclusive OR: 배타적 논리합) 회로이다. 기존의 AND, OR, NOT 논리회로를 조합해서 만들며 2개의 논리 입력 값 중 1개만 참일 경우를 찾는다.

그래서, 논리회로로 뭘 할 수 있는데??

이 논리회로들을 이용해 CPU에서 산술논리장치(ALU: Arithmetic Logic Unit)을 만든다. ALU는 더하기/빼기 등의 산수와 AND/OR 등의 논리를 연산하는 역할을 한다.

예로 AND, XOR 회로를 이용해 더하기 회로를 만들 수 있다.
(여기서 보여주는 예제는 한 비트간의 연산이다. 모든 수에 대해서 더하기를 처리할 수 있는 논리회로는 더 복잡하고 크다.)

먼저, 2진수는 0과 1만을 사용하기 때문에 0과 0을 더하면 0, 0과 1을 더하면 1, 1과 1을 더하면 올림수가 생겨 10이 된다.

그런데?!? 출력 결과를 살펴보면 XOR 회로와, 올림수는 AND 회로의 논리 결과 값과 같다.

즉 위와 같이 논리회로를 구성하면 비트의 더하기 회로를 구현할 수 있다. 이런 식으로, CPU는 수많은 트랜지스터를 이용해 논리회로를 구성해가고 연산을 수행한다.
(CPU는 크기가 아주 작은 MOSFET 이라는 트랜지스터를 이용해 수많은 논리회로를 구성한다.)

CPU는 하드디스크와 소통하지 않는다.

프로그램을 실행하면 하드디스크에 있는 프로그램 데이터를 RAM에 옮기고, CPU는 RAM에 있는 데이터를 가져와 사용하게 된다. 왜냐하면 입출력속도가 엄청나게 차이나기 때문이다.

삼성 SSD 990 pro 의 읽기 쓰기 속도는 약 7GB/s 이다.
삼성 DDR5-5600 RAM의 읽기 쓰기 속도는 약 44.8GB/s 이다.

사실 RAM도 CPU의 작업속도에 비해 매우 느리기 때문에 가장 먼저 cache memory를 참조한다. CPU는 L1 cache, L2 cache, L3 cache 를 순차적으로 확인하며 데이터가 없을 때 RAM에 접근해 데이터를 가져오게 된다.
cache는 CPU의 근처나 내부에 존재하며, 용량이 비교적 작지만 CPU에서 매우 빠르게 접근 가능하다.

L1 cache의 접근속도는 1~3 의 클럭 사이클을 가진다.
L2 cache의 접근속도는 약 10의 클럭 사이클을 가진다.
L3 cache의 접근속도는 약 30정도의 클럭 사이클을 가진다.

M1 pro의 Clock rate는 2064 - 3220 MHz 이다.
= M1 pro의 CPU는 1초에 32억 2천만번의 cycle을 가진다.
= 1cycle에 약 310 ps 가 걸린다.

마지막으로 레지스터가 존재한다. 레지스터는 CPU 내부에서 데이터를 일시적으로 기억하는 장치로, 가장 빠른 접근속도를 가지고 있다.(0.5 ~ 1 클럭 사이클)

레지스터는 여러 가지 종류가 존재하는데


참고

트랜지스터: https://news.samsungdisplay.com/23538/
The memory hierarchy: https://computerscience.chemeketa.edu/cs160Reader/ComputerArchitecture/MemoryHeirarchy.html

profile
내가 만들어낸 것들로 세계에 많은 가치를 창출해내고 싶어요.

0개의 댓글