[운영체제] 1. CPU의 원리
실리콘 원소의 구조, 전자와 양공의 이동
CPU에 필수적인 트랜지스터라는 반도체는 실리콘으로 이루어짐.
실리콘은 최외각 전자가 4개로, 4중 결합으로 순수한 실리콘은 전자가 이동하지 않아 다른 원소를 추가해 전류가 흐르게 만들어줌. 전자가 부족한 원소를 추가하면 전자가 부족한 공간으로 이동하면서 그 역방향인 구멍이 생기는 방향으로 전류가 발생. 양전하를 띈 것처럼 행동하므로 양공이라고 함. 전자가 한개 많은 원소를 추가하면 남는 전자가 자유롭게 이동하면서 전류가 흐름.
P형 반도체, N형 반도체 접합 및 전자와 양공의 이동
이 때 전자가 한개 적은 원소를 첨가한 반도체는 p형(positive), 많은 원소를 첨가한 반도체는 n형(negative) 반도체라 함.
P와 N을 결합하면 +에서 -로 전기장이 생김. 이때 양쪽에 같은 방향(+ +), 즉 순방향으로 연결하면 전류가 흐름.
역방향으로 연결하면 전류가 흐르지 못함.
PNP접합 상태에서의 양공과 전자의 이동, 트랜지스터
n형 반도체를 얇게 만들고 PNP 형태로 접합하면, PN에서 전압, NP에서 전압을 줬을 때 순방향의 전압의 세기가 커지면 역방향의 반발력을 초월해서 전자가 지나가게 되고, 전류가 흐름. 전압이 작아지면 전류가 흐르지 못함. 이를 조절하는 것을 "트랜지스터" 라고 함. (NPN도 됨)
트랜지스터를 이용한 논리회로
트랜지스터 두개를 가로로 붙여, 둘 다 모두 전압이 걸렸을 때 (1 1) 전류가 흐르게 할 수 있음 ( output 1 ). 이를 AND 게이트라고 함. 마찬가지로 트랜지스터 두개의 연결 형태를 세로로 바꿔줌으로써 OR 게이트도 만들 수 있음. 트랜지스터의 출력선을 앞으로 당기면 입출력 값을 바꿔주는 NOT 게이트도 만들 수 있음. 세 개의 게이트를 조합하여 1 1 -> output 0인 XOR 게이트를 만들 수 있음.
덧셈 논리회로의 작동 원리와 구성
2진수로 수를 input으로 받아 합(XOR)과 올림수(AND) 두 출력을 만들어서 논리 회로를 구축함.
CPU 내 ALU의 구성
산술+논리가 모두 가능한 ALU가 CPU에 있음. CPU에 수십억개의 트랜지스터가 들어감.
MOSFET과 전자의 이동
수십억개의 트랜지스터를 조그마한 CPU에 넣기 위해, MOSFET이라는 형태의 트랜지스터를 개발함.
밑은 반도체이고 위는 전류가 흐르는 금속이 들어감. 특정 형태로 인해 가운데 전압을 걸어주면 ON이 되어 전류가 흐르고 전압이 없으면 OFF가 됨. MOSFET이 여러 겹으로 쌓여 논리게이트를 이루고 연산을 수행할 수 있음.
메모리 계층 구조
CPU는 RAM과 소통하는데, 우리가 어떤 프로그램을 실행하면 데이터는 램으로 이동하고 CPU는 그 데이터를 가져옴. 하지만 램도 cpu에 비하면 많이 느리기에 cpu 내부나 근처에 캐시메모리를 만들어 데이터를 저장함.
캐시메모리는 램에 비하면 용량이 작기에 중요하다고 판단되는 데이터만 저장함.
캐시메모리는 레벨1부터 레벨3까지 단계를 나누어 사용하는데, L1는 속도는 빠르고 용량이 작으며, L3는 용량이 크고 속도가 느리다. CPU는 L1에 가장 먼저 데이터를 요청하고, 그곳에 없으면 L2, L3, 그 후 마지막에 RAM으로 데이터를 요청함.
CPU와 레지스터
컴퓨터의 기억장치에는 하드디스크, 램, 캐시메모리, 레지스터가 있음. 레지스터는 CPU 내부에서 데이터를 일시적으로 저장하는 장치로 속도가 가장 빠른 메모리임. 순서대로 속도는 빠르지만 용량이 작아짐. 레지스터의 종류는 매우 많지만 몇개만 살펴보자면, 프로그램 카운터 레지스터에는 다음번에 수행할 메모리의 주소가 들어있음. 메모리 주소 레지스터는 프로그램 카운터에서 수행할 주소를 넘겨받은 다음 그 주소를 찾아가 데이터를 가져오는 역할을 함. 메모리 버퍼 레지스터는 메모리 주소 레지스터가 가져온 데이터나 명령을 일시적으로 저장하고, 메모리에 전달함. 명령어 레지스터는 메모리 버퍼 레지스터의 명령을 전달받아 제어장치에 전달함. 누산기 레지스터는 값을 저장하고 ALU는 산술/논리 연산을 수행함.제어장치는 모든 과정의 명령을 통제하고 수행함.
CPU의 기계어 연산 과정, 스레드와 아키텍쳐
CPU는 이렇게 데이터를 인출하고 해석하고 실행하고 저장하는 과정을 세분화하는데, 이렇게 분리된 각각의 프로세스를 쓰레드라 함. 코어 하나에 여러개의 쓰레드가 실행되면 연산 속도가 빨라지고, 코어가 많아져도 속도가 빨라짐. 이러한 프로세서의 구조는 회사마다 다른데, 이를 CPU 아키텍쳐라 하며 아키텍쳐 디자인은 펜티엄, 타이거레이크 등 다양한 형태로 진화중임.