Article/Computer Graphics

[HARDWARE] CPU의 구조와 작동

김성인 2023. 12. 14. 21:25

 글의 목적 : CPU와 GPU의 주된 목적에 따라 다른 방식으로 작동하는데, 그것을 비교해 보고 이해하기 위하여, CPU의 구조와 작동에 대해서 알아가기 위하여 공부하고 정리합니다.



이 글과 연관된 페이지

 

GPU의 구조와 작동 : https://asatala.tistory.com/115

CPU와 GPU의 비교 : https://asatala.tistory.com/116

GPGPU : https://asatala.tistory.com/117

Mobile Device의 특징 : https://asatala.tistory.com/118

논리회로 : https://asatala.tistory.com/119


CPU의 구조와 작동

목차

 

CPU란?

 

트랜지스터

 

반도체

  • P형, N형 반도체

 

논리 연산 간략한 개요

  • AND
  • OR
  • NOT

 

CPU 구성요소

  1. 제어 장치(CU, Control Unit)
  2. 연산 장치(ALU, Arithmetic and Logical Unit)
    • 마이크로 연산
  3. 레지스터(Register)

 

특수 목적 레지스터의 종류


메모리의 속도


CPU의 연산

 

컴퓨터 그래픽스에서의 결론


CPU의 구조와 작동

CPU란?

  • 중앙처리장치(Central Processing Unit)의 약자로 대부분의 처리 작업을 수행하는 컴퓨터 하드웨어의 기본 구성 요소.  흔히 컴퓨터의 두뇌라고 한다.
  • CPU는 컴퓨터 메모리의 명령을 해석하고 실행하며 산술 및 논리 연산을 수행하여 프로그램의 실행, 입출력 연산 처리, 데이터 관리 등의 작업을 수행한다.


CPU는 트랜지스터 반도체의 집합체로써 CPU의 구성요소에 대하여 알아보기 전에 트랜지스터와 반도체에 대해서 알아보자.

 


트랜지스터

 전자 회로의 구성 요소 역할을 하는 기본 전자 부품이다.  증폭, 스위칭, 신호 변조 동에 사용된다.  그리고 우리가 주목해야 할 점은 스위칭이다.  이 부분에 대해서는 밑에서 자세히 설명하겠습니다.

트랜지스터


트랜지스터에는 BJT, FET 두 가지 주요 유형이 있다.

  1. BJT(Bipolar Junction Transistor / 양극성 접합 트랜지스터) : 이미터, 베이스, 컬렉터의 세 가지 반도체 재료 층으로 구성되어 있다.  BJT의 동작은 이러한 층 사이의 전하 캐리어(전자 또는 정공)의 흐름에 의해 제어된다.  
  2. FET(Field-Effect Transistor / 전계 효과 트랜지스터) : 소스, 게이트, 드레인의 세 가지 단자가 있다.  소스와 드레인 간의 전류 흐름을 게이트에 적용된 전압으로 제어된다.

 

반도체

 도체와 부도체 사이의 전기 전도성을 갖는 물질이다.  컴퓨터에서 사용되는 반도체의 경우 전기에 의하여 제어된다.  현대 전자공학에서 트랜지스터, 다이오드, 직접회로의 기초 역할을 하고 있다.
반도체의 재료는 일반적으로 실리콘이고, 이 실리콘은 최외각 전자가 4개이고 다른 실리콘 원소들과 전자를 공유하며 단단하게 결합되어 있다.  대부분의 원소의 경우 옥텟 규칙에 따라 최외각 전자 수가 8개 일 때 가장 안정적이다.  이로 인하여 순수한 실리콘만으로는 전자가 이동하지 않아 전류가 흐르지 못한다.

 


P형, N형 반도체

 순수한 실리콘에 전류가 흐를 수 있도록 최외각 전자가 3개이거나, 5개인 원소를 첨가해 전류가 통하게 만든다.

 

  1. 전자가 3개인 원소를 첨가하면 전자껍질의 최외각에 7개의 전자가 존재하므로 1개의 구멍이 생긴다.  이 구멍을 채우기 위해서 전자가 이동하게 되고, 이동하게 된 원래의 자리에 다시 구명이 생기며, 전자가 이동하게 된 반대 방향으로 전류가 흐르게 된다. 
  2. 전자가 5개인 원소를 첨가하면 전자껍질의 최외각에 8개의 전자가 안정적으로 자리하며, 1개의 전자가 자유롭게 이동하면서 전류를 흐르게 한다.
  • 전자가 3개인 원소를 첨가한 반도체를 P(Positive)형 반도체라 한다.
  • 전자가 5개인 원소를 첨가한 반도체를 N(Negative)형 반도체라 한다.

 

  • P형, N형, P형 순서로 합치게 되면, 바로 트랜지스터가 된다.
  • 그리고 CPU에는 Mosfet이라는 트랜지스터가 들어간다.
  • CPU는 트랜지스터를 사용하여 계산의 기본 구성 요소인 논리 연산을 수행하고,  AND, OR, NOT과 같은 기본적인 논리 연산을 구현하여 디지털 회로를 만들어낸다.

Mosfet

 

논리 연산 간략한 개요

 

  1. AND
    • 두 입력 모두 1인 경우에만 1을 출력한다.  그렇지 않을 경우 0을 출력한다.
  2. OR
    • 하나 이상의 입력이 1이면 출력은 1이다.  두 입력 모두 0인 경우에만 0을 출력한다.
  3. NOT
    • 입력이 1이면 출력은 0, 입력이 0이면 출력은 1이다.

 

트랜지스터는 논리 게이트를 구축하는 데 사용되며, 논리 게이트는 결합되어 가산기, 멀티플렉서, 플립플롭과 같은 더 복잡한 회로를 형성한다.

 


CPU 구성요소

제어장치, 연산 장치, 레지스터

 

1. 제어 장치(CU, Control Unit)

  • 컴퓨터 시스템의 작동을 통제하고 지시하는 장치로써, 기억장치로부터 프로그래밍 명령을 순차적으로 꺼내 해석하고, 해석에 따라 명령어 실행에 필요한 제어 신호를 기억장치, 연산장치, 입출력 장치 등으로 보낸다.

2. 연산 장치(ALU, Arithmetic and Logical Unit)

  • 마이크로 연산
    • 매우 낮은 수준에서 데이터를 조작하는 기본 작업을 말한다.
    • 레지스터에 저장된 데이터를 대상으로 수행되는 연산
    • CPU 내부에 존재하는 레지스터의 상태를 변경시키는 동작

마이크로 연산

  1. Register Transfer
    • 데이터는 CPU 내의 작고 빠른 저장 위치인 레지스터 간에 이동된다.  
    • 메모리에서 레지스터로 데이터를 로드하거나 레지스터 간에 데이터를 이동하는 작업을 말한다.
  2. Arithmetic Operations
    • 산술 마이크로 연산에는 덧셈, 뺄셈, 곱셈, 나눗셈과 같은 기본적인 수학 계산이 포함된다.
    • 그리고 이것은 일반적으로 CPU의 ALU(산술 논리 장치)에서 수행된다.
  3. Logic Operations
    • AND, OR, NOT, XOR과 같은 논리 연산이 포함된다.
    • ALU에서도 수행되며 의사 결정 및 비교에 사용된다.
  4. Data Transfer
    • 레지스터 간, CPU와 메모리 간, CPU와 입출력 장치 간 등 CPU의 서로 다른 부분 간에 데이터를 이동하는 작업을 한다.
  5. Control Operations
    • CPU의 동작을 제어하는 역할을 한다.
      메모리에서 명령어 가져오기, 명령어 디코딩, 실행할 작업 순서 결정을 한다.
  6. Shift Operations
    • 이진수의 비트를 왼쪽이나 오른쪽으로 이동하는 작업을 한다.
      2의 거듭제곱으로 곱하거나 나누는데 사용된다.
  7. Comparison Operations
    • 값을 비교하여, 같음, 큼, 작음 등의 관계를 결정하는 데 사용된다.
  8. Program Counter Operations
    • 다음에 실행될 명령어의 메모리 주소를 추적하는 레지스터이다.  값을 증가시켜 다음 명령어로 이동하거나 새 값을 로드하여 프로그램의 다른 위치로 점프한다.
  9. Interrupt Handling
    • CPU의 현재 상태를 저장하고, 제어를 인터럽트 서비스 루틴으로 전달하고, 나중에 인터럽트 된 작업으로 복귀할 수 있도록 한다.


3. 레지스터(Register)

  • CPU 내에 존재하는 매우 작고, 가장 빠른 메모리
  • 명령어 주소, 코드, 연산에 필요한 데이터, 연산 결과 등을 임시로 저장한다.


특수 목적 레지스터의 종류

  1. MAR(Memory Address Register)
    • 다음 읽기 또는 쓰기 작업이 발생할 메인 메모리 위치의 메모리 주소를 저장한다.
  2. PC(Program Counter)
    • 프로그램에서 가져와서 실행할 다음 명령어의 주소를 추적한다.
  3. SP(Stack Pointer)
    • 메모리 내 스택의 최상위 주소를 추적한다.  이는 스택에 데이터를 밀어 넣거나 스택에서 꺼내는 것과 같은 스택 기반 메모리 작업에 사용된다.
  4. IX(Index Register)
    • 인덱스 주소 지정 모드에서 인덱스 값을 저장하는 데 사용된다.  인덱스 값은 메모리 위치에 접근하기 위해 기본 주소에 추가된다.
  5. IR(Instruction Register)
    • 현재 실행 중인 명령어를 일시적으로 유지한다.  명령어 디코딩 및 제어에 사용된다.
  6. MBR(Memory Buffer Register)
    • 메인 메모리로 전송되거나 메인 메모리로부터 전송되는 데이터를 임시로 저장한다.  메모리 읽기 또는 쓰기 작업 중에 버퍼 역할을 한다.
  7. AC(Accumulator)
    • 산술 논리 유닛(ALU)에서 수행되는 산술, 노리 연산의 결과를 임시로 저장한다.
  8. PSR(Program Status Register)
    • 조건 플래그(예를 들어 제로 플래그, 캐리 플래그) 및 기타 상태 표시기를 포함하여 CPU의 현재 상태에 대한 정보를 저장한다.

 

메모리의 속도

 Register > L1 Cache > L2 Cache > RAM(이 부분까지 메모리라 칭할 수 있다) > SSD > HDD

 

  1. Register
    • CPU 칩에 직접 위치한다.
    • CPU가 작업 중에 빠르게 액세스해야 하는 소량의 데이터를 저장하는 데 사용되고, 이는 CPU 제어 장치의 일부이며 중간 값, 메모리 주소 및 프로그램 카운터 저장과 같은 작업에 사용된다.
  2. L1, L2, L3 Cache
    • L1은 Level 1의 약자이다.
    • CPU 칩에 존재하지만, Register와는 다르다.
    • 주 메모리(RAM)과 CPU 사이에서 작고 빠른 버퍼 역할을 하고, L1, L2, L3 순서대로 빠르고, 용량이 작다.
    • 자주 사용하는 명령어(코드)와 데이터를 저장하여 CPU가 상대적으로 느린 주 메모리(RAM)의 정보에 액세스하는데 걸리는 시간을 줄여준다.
    • CPU는 가장 먼저 L1에서 데이터를 찾고, 없으면 L2에서 찾는 방식으로 작동한다.
  3. RAM
    • CPU 칩 외부에 존재하고, 보통 마더보드에 붙어 있다.
    • 프로그램을 실행할 때, CPU, GPU가 직접적으로 처리하기 위하여 HDD와 같은 저장 장치에 들어 있는 리소스 등을 여기에 올려서 두게 된다.
  4. SSD, HDD
    • RAM과 비슷하게 마더보드에 연결한다.
    • 운영 체제, 애플리케이션 및 사용자 데이터를 위한 비휘발성 장기 저장소이다.
    • 데이터를 처리와는 상관없이, 리소스들을 저장해 두고, CPU나 GPU가 처리를 하기 위해서는 RAM으로 올려야 한다.

 

CPU의 연산

 CPU의 연산 순서는 인출 > 해석 > 실행 > (메모리 액세스) > 저장 > (다음 명령어 가져오기)으로 이루어진다.
여기서 ( )은 상황(정확히는 명령어)에 따라서 일어나지 않을 수 있다.

 

  1. 인출(Fetch)
    • CPU는 컴퓨터 메모리에서 프로그램 카운터가 가리키는 명령어를 가지고 온다.
    • 가져와야 할 다음 명령어의 주소는 프로그램 카운터에 저장된다.
  2. 해석(Decode)
    • 가져온 명령어를 해석하여 어떤 작업을 수행해야 하는지 '이해'한다.
    • 이것은 명령어를 OPCODE, 피연산자로 분해하는 작업을 포함한다.
  3. 실행(Excute)
    • 해석된 명령에 따라 실제 작업이나 계산을 수행한다.
    • 이것은 산술, 논리 연산, 데이터 조작 또는 제어 흐름 작업을 한다.
  4. 메모리 액세스(Memory Access)
    • 필요에 따라(명령어에 따라) 메모리에서 데이터를 읽거나 데이터를 저장하는 작업을 한다.
  5. 저장(Write Back)
    • 실행된 명령의 결과는 CPU의 내부 레지스터나 메모리에 기록된다.
  6. 다음 명령어 가져오기(Fetch Next Instruction)
    • 프로그램 카운터가 증가하여 메모리에서 다음 명령어를 가리키게 된다.

 

이러한 단계들의 연속은 Fetch-Decode-Execute 주기라고 불린다고 한다.  이것을 반복하여 프로그램을 계산해낸다.  CPU는 매우 높은 속도로 이러한 작업을 수행한다.

 

 

컴퓨터 그래픽스에서의 결론

CPU

  • '직렬 처리'에 최적화 된 하나의 코어(멀티 코어의 경우 여러개)로 구성되어 있다.
    • 하나의 일을 GPU보다 매우 빠르게 처리한다.
    • 이런 이유로 만약 화면에 뿌려주는 Pixel을 계산해야 한다면 FHD의 해상도에서 한 프레임을 그리기 위하여 최소 2,073,600번을 계산해야 한다.
  • 순차적인 작업(Sequential task)에 강점이 있다.

이 글과 연관된 페이지

 

GPU의 구조와 작동 : https://asatala.tistory.com/115

CPU와 GPU의 비교 : https://asatala.tistory.com/116

GPGPU : https://asatala.tistory.com/117

Mobile Device의 특징 : https://asatala.tistory.com/118

논리회로 : https://asatala.tistory.com/119

https://asatala.tistory.com/118


 

놀라울 정도로 CPU에 대해서 대략적이지만 잘 설명해 놓은 YouTube가 있어 공유합니다.
https://www.youtube.com/watch?v=Fg00LN30Ezg&t=533s

'Article > Computer Graphics' 카테고리의 다른 글

[HARDWARE] Mobile Device의 특징  (0) 2023.12.14
GPGPU  (0) 2023.12.14
[HARDWARE] CPU와 GPU의 비교  (0) 2023.12.14
[HARDWARE] GPU의 구조와 작동  (0) 2023.12.14
[Article] HDR과 ACES  (1) 2023.11.27