과제 블로그

[컴퓨터 구조]CPU는 어떻게 작동할까? 본문

학교

[컴퓨터 구조]CPU는 어떻게 작동할까?

stdzmdlw 2023. 5. 14. 03:07

[1] CPU는 어떻게 만들어졌는가

CPU는 트랜지스터들로 이루어져 있고 트랜지스터는 실리콘으로 이루어져 있다. (CPU --> 트랜지스터 --> 실리콘)

CPU는 트랜지스터로 만들어져, 트랜지스터는 실리콘으로 만들어졌고, 실리콘 원자들은 다른 실리콘 원자들과 공유결합을 하여 안정한 구조를 이루는데 안정한 구조를 이루면 전자가 이동하지 않아 전류가 흐르지 않으므로 전류를 통하게 하기 위해서 전자를 한개 빼거나 더한다.

전자를 더한 실리콘으로 이루어진 반도체는 N형 반도체, 뺀 실리콘으로 이루어진 반도체는 P형 반도체라고 한다.

공유결합한 실리콘 원자를 전류를 흐르게 하기 위해 전자를 더하거나 뺀다. (공유결합한 안정한 구조의 실리콘 원자 --> 전자를 더한 실리콘 --> 전자를 뺀 실리콘)

P형 반도체와 N형 반도체를 서로 붙이면 N형 반도체에서 자유롭게 이동하던 전자가 P형 반도체의 빈 공간에 이끌려와 결합하게 되고, 이때 중성상태 였던 P형과 N형 반도체는 양전하나 음전하가 되면서 원자의 반발력이 생겨 더이상 전자가 이끌려와 결합하지 못한다.

이렇게 이동가능한 전자들이 없어진 곳을 공핍영역이라 합니다. 공핍영역에선 서로 다른 전하면이 생기게 되고, +쪽에서 -방향으로 전기장이 생성됩니다.

[1.1] 역방향 연결

역방향 연결

전지를 - + 로 연결하면 P형 반도체의 빈공간이 - 쪽으로 이동하고, N형 반도체의 전자가 + 쪽으로 이동하게 됩니다.

이러면 이동가능한 전자들이 없어진 곳이 확장되고 전자들이 눌려서 이동하지 못하게 됩니다.

[1.2] 순방향 연결

순방향 연결

전지를 + -로 연결하면 빈공간이 -쪽으로 이동하고, N형 반도체의 전자가 + 쪽으로 이동하게 됩니다.

전자가 이동중에 N형 반도체와 P형 반도체를 붙인 부분에 있는 공핍영역을 만나게 되지만 전압이 강하기에 무시하고 넘어가 전류가 흐르게 됩니다.

이렇게 전류를 흐르게 할 수도, 흐르지 않게 할 수도 있는 반도체를 트랜지스터라고 합니다.

[2] 논리 회로 (Logic gate)

컴퓨터는 0과 1로 이루어진 기계어를 이해하는데 전류가 통하지 않으면 0, 전류가 통하면 1으로 인식합니다.

0과 1은 거짓과 참으로 표현하기도 합니다.

[2.1] AND 회로

트랜지스터 두개를 병렬로 위와 같이 연결하면 AND 회로가 생성됩니다.

AND 회로는 두개의 트렌지스터에 전압이 걸려 전류가 흐를때만 참이 되는 논리회로를 말합니다.

[2.2] OR 회로

트랜지스터 두개를 직렬로 위와 같이 연결하면 OR 회로가 생성됩니다.

OR 회로는 두개의 트랜지스터중 하나만 전압이 걸려 전류가 흐르거나 양쪽 모두 전압이 걸려 전류가 흐를때 참이 되는 논리회로를 말합니다.

[2.3] NOT 회로

트랜지스터 한개로 이루어진 NOT 회로는 출력선을 앞쪽으로 가져와 붙였을때 생성됩니다.

NOT 회로는 트랜지스터에 전압이 걸려 전류가 흐를때 출력선을 지나쳐가 거짓이 되고, 트랜지스터에 전압이 걸리지 않을때 출력선을 따라 전류가 흘러 참이 되는 논리 회로를 말합니다.

[2.4] XOR 회로

위 논리 회로들을 위와 같이 연결하면 XOR 회로가 생성됩니다.

OR회로에 AND 회로를 연결하고 AND 회로에 NOT 회로를 연결하고 NOT 회로와 OR 회로에 AND 회로를 연결하면 XOR 회로가 생성됩니다.

XOR 회로는 두개의 트랜지스터에 전압이 걸려 전류가 흐르거나 두개의 트랜지스터에 전압이 걸리지 않아 전류가 흐르지 않을때 거짓이 되고,

두개의 트랜지스터중 하나만 전압이 걸려 전류가 흐를때 참이 되는 논리회로를 말합니다.

[2.4.1]간단한 덧셈이 가능한 논리 회로 만들어보기

1100 + 1010을 계산하는 논리 회로를 만들어 보겠습니다.

입출력값을 논리표로 만든다음 합과 올림수로 나누어 표를 만들어봅니다.

입력 1 입력 2 올림수
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1
입력 1 입력 2
0 0 0
0 1 1
1 0 1
1 1 0
입력 1 입력 2 올림수
0 0 0
0 1 0
1 0 0
1 1 1

합 논리표는 XOR 회로와 같고, 올림수 논리표는 AND 회로와 같으므로 입력값을 XOR 회로에 연결하여 합의 값을 출력하고, 올림수는 AND 회로에 연결하여 계산하면 아래와 같은 간단한 덧셈 회로가 만들어집니다.

간단한 덧셈 회로

[2.5] ALU(산술 논리 장치)

위와 비슷한 방식으로 논리 회로들을 이용해서 +, -같은 산술과 AND, OR같은 논리를 연산하는 ALU(산술 논리 장치)를 만들 수 있습니다.

ALU(산술 논리 장치)

[3] MOSFET(금속 산화막 반도체 *전계효과 트랜지스터)

*전계효과란 같은 극성은 반발하고 다른 극성은 끌어당기는 성질을 갖는 것을 이용한 반도체 기술을 말한다.

MOSFET의 크기

반도체에는 트랜지스터가 수십억 개가 들어가는데, 일반 트랜지스터가 수십억 개가 모이게 되면 크기가 너무 커지기에 먼지의 4/100배 크기인 MOSFET 트랜지스터가 들어가게 됩니다.

MOSFET은 몸체는 반도체로, 위에는 도체로 이루어져 있습니다.

N형 반도체와 P형 반도체의 접촉부분에는 공핍영역이 생김

몸체는 N형 반도체와 P형 반도체로 이루어져 있어서 서로 붙어있는 부분은 공핍역역이 생기게 됩니다.

가운데 부분에 전압을 걸면 전기장이 생성되는데 이 힘으로 빈부분은 아래로 내려가고 전자는 위로 올라가서 전자들끼리 고농도로 밀집되어 전자가 이동할 수 있는 통로가 생깁니다.

이 통로로 전자가 이동하면서 전류가 흐르게 됩니다.

이러한 MOSFET은 CPU를 구성하며 많은 논리게이트를 이루고, 연산을 수행합니다.

[4] 보드 구성

보드 구성 요소

보드는 RAM, CPU, SSD로 구성되어 있습니다.

[4.1] SSD

프로그램이 설치되어 있으며, CPU에 비해 속도가 너무 느려서 CPU는 SSD와는 소통하지 않고 RAM과 소통합니다.

[4.2] RAM

프로그램 실행시 데이터가 이동한다.(왼쪽에서 오른쪽으로)

프로그램을 실행하면 데이터가 RAM으로 이동하게 되고 CPU는 RAM과 소통하여 그 데이터를 가져옵니다.

하지만 RAM 마저도 CPU에 비해 속도가 느리기 때문에 CPU근처 혹은 내부에 캐시 메모리를 만듭니다.

[4.2.1]캐시 메모리

용량이 작지만 속도가 빠르며 중요한 데이터만 저장한다. Level1 ~ 3으로 3단계로 나누어 사용한다.

[4.2.2] CPU의 데이터 요청 순서

CPU의 데이터 요청 순서

CPU는 캐시 메모리의 Level순서대로 데이터를 요청하고 데이터가 없으면 다음 Level로 넘어가고, 캐시 메모리에 데이터가 없으면 RAM으로 넘어가 데이터를 요청한다.

[5] 레지스터

CPU에서 데이터를 일시적으로 저장하는 장치로, 메모리 중 속도가 가장 빠르다.

SSD —> RAM —> CACHE —> REGISTER 순으로 갈수록 속도는 빠르지만 가격이 비싸지고, 용량이 작아진다.

[5.1] 레지스터의 종류와 기능

프로그램 카운터: 다음에 실행될 명령어의 주소를 가지고 있다.

메모리 주소 레지스터: 프로그램 카운터에서 실행될 명령어의 주소를 받은 다음에 그 주소를 찾아가 데이터를 가져온다.

메모리 버퍼 레지스터: 메모리 주소 레지스터가 가져온 데이터나 명령어를 일시적으로 저장한다. 저장된 내용 중에 명령어는 명령어 레지스터로, 데이터는 누산기 레지스터로 전달된다.

명령어 레지스터: 명령어에 관한 데이터를 저장한다.

누산기 레지스터: 연산의 결과 값이나 중간 값을 일시적으로 저장한다.

제어장치: 명령어 레지스터에 있는 명령어를 받은 다음에 해석하고 시스템에 지시를 한다.

ALU는 산술, 논리를 연산한다.

[6] CPU 작동 원리

C언어나 파이썬같은 고급언어로 작성된 프로그램은 컴파일러를 통해 어셈블리어로 변환되고 어셈블리어는 어셈블러를 통해 기계어로 변환됩니다.

위와 같은 과정을 간단히 C = A + B로 표현해보겠습니다.

변환되는 과정

C = A + B는 컴파일러를 통해 LOAD [10], ADD [11], STORE [12]로 변환되고 어셈블러를 통해 각각 기계어로 변환됩니다.

두줄에 걸쳐 저장된 명령어들

어셈블리어 명령어 하나당 16비트의 기계어로 변환되는데 RAM은 8비트씩 저장하므로 두줄에 걸쳐 저장됩니다.

[6.1] 인출 단계

프로그램 카운터가 다음에 실행될 명령어의 주소 100을 가리키고, 메모리 주소 레지스터는 명령 수행을 위해 주소 100, 101에 찾아가 데이터를 가져와서 메모리 버퍼 레지스터에 저장합니다.

[6.2] 해석 단계

메모리 버퍼 레지스터에 저장된 데이터가 명령어이므로 명령어 레지스터로 전달되고 명령어는 제어장치로 전달되어 해석된다.

제어 장치에서 해석된 명령어는 주소 10의 데이터를 가져와 메모리 주소 레지스터에 저장하는 명령어이므로 주소 10의 데이터인 2를 메모리 주소 레지스터로 가져오고 메모리 버퍼 레지스터에 저장된다. 메모리 버퍼 레지스터에 저장된 데이터가 명령어가 아니므로 누산기 레지스터에 전달되고 저장됩니다.

[6.3] 실행 단계

다음 명령어 실행을 위해 기존 누산기에 저장되어 있던 값 2는 ALU로 전달되고 주소 102, 103을 찾아가 데이터를 메모리 주소 레지스터로 가져와서 메모리 버퍼 레지스터에 저장하고, 메모리 버퍼 레지스터에 저장된 데이터는 명령어가 아니므로 누산기 레지스터에 전달되고 ALU에 의해 즉시 2 + 3 이 실행되고 실행 값 5는 누산기 레지스터에 저장됩니다.

위 단계를 거쳐 계속 실행  

다음 명령어를 실행하여 주소 104, 105를 메모리 주소 레지스터로 가져오고 메모리 버퍼 레지스터에 저장합니다. 메모리 버퍼 레지스터에 저장된 데이터는 명령어이므로 명령어 레지스터로 전달되고 명령어는 제어장치로 이동하여 해석된다.

제어장치에서 해석된 명령어는 주소 12에 데이터 5를 저장하라는 명령어이므로 메모리 주소 레지스터에 데이터 5를 저장할 주소 12를 저장하고 저장할 데이터 5가 메모리 버퍼 레지스터에 전달되고 저장됩니다. 메모리 버퍼 레지스터에 저장된 데이터 5가 주소 12에 저장됩니다.

[7] 실습

B = A + A는 컴파일러를 통해 LOAD [10], ADD [11], STORE [12]로 변환되고 어셈블러를 통해 각각 기계어로 변환됩니다.LOAD [10], ADD [11], STORE [12]로 변환되고 어셈블러를 통해 각각 기계어로 변환됩니다.

[7.1] 인출 단계

프로그램 카운터가 다음에 실행될 명령어의 주소 100을 가리키고 메모리 주소 레지스터는 명령 수행을 위해 주소 100, 101에 찾아가 데이터를 가져와서 메모리 버퍼 레지스터에 저장한다.

[7.2] 해석 단계

메모리 버퍼 레지스터에 저장된 데이터가 명령어이므로 명령어 레지스터로 전달되고 명령어는 제어장치로 전달되어 해석됩니다. 해석된 명령어는 주소 10의 데이터를 가져와 메모리 주소 레지스터에 저장하는 명령어이므로 주소 10의 데이터인 2를 메모리 주소 레지스터로 가져오고 메모리 버퍼 레지스터에 저장된다. 메모리 버퍼 레지스터에 저장된 데이터가 명령어가 아니므로 누산기 레지스터에 전달되고 저장됩니다.

[7.3] 해석 단계

다음 명령어 실행을 위해 기존 누산기에 저장되어 있던 값 2는 ALU로 전달되고 주소 102, 103을 찾아가 데이터를 메모리 주소 레지스터로 가져와서 메모리 버퍼 레지스터에 저장하고, 메모리 버퍼 레지스터에 저장된 데이터는 명령어가 아니므로 누산기 레지스터에 전달되고 ALU에 의해 즉시 2 + 2가 실행되고 실행 값 4는 누산기 레지스터에 저장됩니다. 다음 명령어를 실행하여 주소 104, 105를 메모리 주소 레지스터로 가져오고 메모리 버퍼 레지스터에 저장합니다. 메모리 버퍼 레지스터에 저장된 데이터는 명령어이므로 명령어 레지스터로 전달되고 명령어는 제어장치로 이동, 해석됩니다. 제어장치에서 해석된 명령어는 주소 12에 누산기 레지스터의 값 4를 저장하는 명령어이므로 누산기 레지스터에 있던 값 4가 메모리 버퍼 레지스터로 전달되고 주소 12로 다시 전달되어 저장됩니다.

CPU 작동 과정

이와 같이 CPU는 인출, 해석, 실행, 저장의 과정을 거칩니다.

각 과정은 여러 단계로 세분화해서 사용하는데 스레드에 의해

처리되며 코어 하나에 여러개의 스래드가 실행될수록 속도가 빨라지고

코어가 많을수록 더 속도가 빨라집니다.

이러한 프로세서의 구조를 아키텍쳐라고 하며

아키텍쳐의 디자인에 따라 속도가 달라집니다.