프로그래밍을 하다가 문득 이런 생각이 들었습니다. ‘CPU가 내가 쓴 코드를 처리 할 텐데 어떤 방식으로 처리하는 거지?’ 서비스나 프로젝트를 생각 할 때 소프트웨어적으로만 생각했지 하드웨어적으로 생각해본 적이 없었던 것 같습니다. 전에 설명한 인터럽트도 일종의 소프트웨어라서 하드웨어 쪽을 크게 신경 쓸 필요 없이 코드를 작성하면 됐었습니다. 필자는 학부 생활하면서 컴퓨터 구조를 수강했음에도 불구하고 하드웨어에 대한 그림이 잘 그려지지 않았습니다~~(수업을 똑바로 안 듣..)~~. 이참에 하드웨어와 친해지기 위해 익숙하지만 잘 모르는 CPU 친구를 알아보도록 합시다.
CPU란 무엇일까요? Central Processing Unit의 약자로 흔히 컴퓨터의 ‘뇌’로 비유합니다. 이름처럼 중앙에서(Central) 모든 연산 처리(Processing)를 담당 합니다. 예를 들어 CPU는 SSD에 있는 사진 파일을 클릭해서 데이터를 메모리로 가져오고 이를 모니터에 보여 줄 때 까지의 모든 연산 과정을 처리합니다. CPU 구조를 이해하기 위해 Computer Abstraction Layers를 하나 씩 살펴보면 좋습니다. Computer Abstraction Layers가 생소할 수 있는데 네트워크 OSI 7계층을 떠올리면 감이 오실 것 같습니다. OSI 7계층의 하위 계층에서 위 계층으로 올라가면서 네트워크 통신 과정을 단계별로 파악할 수 있듯이, 컴퓨터 구조를 여러 층으로 나누고 하위 계층에서 위 계층으로 올라가면서 복잡한 컴퓨터 구조를 이해하기 수월할 것입니다. Intel이 제시한 Computer Abstraction Layers에 따라 10계층으로 나누고 그 중 하위 7계층(Physics ~ Instruction Set Architecture)에 대해서 알아보도록 하겠습니다.
<aside> 💡 Computer Abstraction Layers
</aside>
Physics와 Transistors를 시작으로 Computer Abstraction Layers를 차근차근 하나씩 알아보겠습니다**.** Physics는 Atom(원자)단계라고 봐도 되겠습니다. CPU, 즉 반도체는 주로 실리콘(규소, Si)으로 만들어집니다. 이는 실리콘 원자의 특성 때문인데, 최외각 전자가 8개일 때 화학적으로 안정한 결합을 합니다. 실리콘의 최외각 전자가 4개이기 때문에 다른 실리콘 원자들과 단단하게 결합할 수 있습니다. 결합 중간에 불순물을 넣어봅시다. 최외각 전자가 3개인 붕소(B)와 결합하면 1개의 양공이 생깁니다. 최외각 전자 수가 5개인 인(P)이라면 1개의 자유전자가 생깁니다. 붕소를 넣어 전자 1개를 부족한 상태는 양(Positive)의 성질을 띄어 P형 반도체, 인을 넣어 전자 1개가 많은 상태는 음(Negative)의 성질을 띄어 N형 반도체라 합니다.
실리콘, 붕소, 인의 결합
이제 이 둘을 붙여서 살펴보면 N형의 전자가 P형의 양공으로 이동하여 중간에 전자가 이동하지 않는 균형이 잡힌 상태인 공핍 영역이 생깁니다. 여기에 인위적으로 전지를 연결하고 전압을 걸어주는 방향에 따라 전류가 흐르게 하거나 흐르지 않게 할 수 있습니다. 전류를 흐르게 하는 방향을 순방향, 흐르지 않게 하는 방향을 역방향으로 연결 했다고 합니다. 순방향으로 연결하면 공핍 영역을 넘을 만큼의 힘이 가해져 전류가 흐르도록 합니다. 역방향이라면 애초에 공핍영역으로 전류가 흐르지 않는데 방향도 달라 전류가 흐르는 것이 더욱 어렵게 됩니다. 이렇게 PN 반도체의 성질과 전압 방향을 조합하여 만든것이 Transistor(이하 트랜지스터)입니다. 트랜지스터의 가장 큰 특징은 앞서 말한 순방향, 역방향에 따라 전류를 제어하는 스위치 작용입니다. 트랜지스터의 기호는 다음과 같은데 가운데에 전압을 걸어주면 전류가 흐르는 걸 추상화한 기호입니다.