Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개발자공부일기

컴퓨터구조 - CPU 본문

TIL(Today I Learned)

컴퓨터구조 - CPU

JavaCPP 2025. 1. 6. 21:16

CPU는 컴퓨터의 주요 기능 구성 요소로서, 컴퓨터에서 모든 연산과 제어 작업을 처리하는 중요한 장치입니다. 컴퓨터의 두뇌라고도 할 수 있는 CPU는 다양한 프로그램과 운영 체제를 실행하고, 데이터를 처리하여 결과를 출력하는 역할을 합니다. CPU는 하나의 장치가 아니라 여러 구성 요소가 협력하여 작업을 처리하는 복합적인 시스템입니다.

CPU의 세 가지 주요 구성 요소

  1. 제어 장치 (Control Unit, CU)
    제어 장치는 컴퓨터의 각 부품에 명령을 전달하고 제어하는 역할을 합니다. 제어 장치는 프로그램 카운터와 명령어 레지스터를 사용하여 실행할 명령어의 순서를 제어하며, CPU 내의 다른 장치들과 협력하여 연산을 수행하게 합니다. 제어 장치는 데이터와 명령어 흐름을 관리하고, 프로그램 흐름을 제어하는 중요한 부분입니다.
  2. 산술/논리 단위 (Arithmetic/Logic Unit, ALU)
    산술/논리 단위는 모든 수학적 연산(덧셈, 뺄셈, 곱셈, 나눗셈 등)과 논리적 연산(AND, OR, NOT 등)을 처리합니다. 연산의 결과는 다시 레지스터에 저장되거나, 결과값을 메모리로 전송하는 등의 후속 작업이 수행됩니다. ALU는 컴퓨터 프로그램을 실행하는 데 있어 핵심적인 역할을 담당합니다.
  3. 메모리 장치 (Memory Unit)
    메모리 장치는 CPU와 메모리 간의 데이터 흐름을 관리합니다. CPU가 데이터를 처리하는 데 필요한 정보를 가져오거나 저장하는 역할을 합니다. 메모리에는 여러 종류가 있으며, 가장 빠른 접근 속도를 자랑하는 캐시 메모리부터 주 메모리(RAM), 보조 메모리(하드 디스크, SSD 등)까지 다양한 계층이 존재합니다. CPU는 필요한 데이터를 빠르게 가져오기 위해 효율적으로 메모리 계층을 활용합니다.

추가적인 필수 구성 요소

  • 캐시(Cache)
    CPU는 일반적으로 RAM에 직접 접근하지 않고, 대신 CPU 내부에 있는 캐시를 활용합니다. 캐시는 메모리 속도가 CPU에 비해 상대적으로 느리기 때문에, 캐시 메모리가 빠르게 데이터를 제공하여 성능을 향상시킵니다. 최신 CPU는 여러 계층의 캐시(Level 1, Level 2, Level 3 캐시)를 두어 더욱 빠른 데이터 접근을 가능하게 합니다.
  • 레지스터(Registers)
    레지스터는 CPU 내부에서 매우 빠르게 데이터를 저장하고 처리하는 작은 메모리 공간입니다. 레지스터는 연산 중 필요한 데이터를 즉시 제공할 수 있도록 하여, CPU의 연산을 효율적으로 만듭니다. 레지스터는 다양한 종류가 있으며, 각각 특정 용도로 사용됩니다.
  • 클럭(Clock)
    CPU는 클럭에 의해 동기화되어 작동합니다. 클럭은 CPU 내부의 다양한 회로가 일정한 주기로 동작할 수 있도록 일정한 전기 펄스를 발생시킵니다. 이 클럭의 속도를 클럭 속도라고 하며, 보통 헤르츠(Hz)메가헤르츠(MHz) 단위로 측정됩니다. 높은 클럭 속도는 CPU가 더 많은 명령어를 처리할 수 있게 만듭니다.
  • 명령어 레지스터(Instruction Register) 및 포인터(Instruction Pointer)
    명령어 레지스터는 현재 실행 중인 명령어를 저장하는 역할을 합니다. 명령어 포인터는 실행될 명령어의 메모리 주소를 가리키며, 프로그램의 흐름을 관리합니다. 새로운 명령어가 필요할 때마다 포인터는 다음 명령어의 위치로 이동합니다.
  • 버스(Bus)
    버스는 컴퓨터 내부의 다양한 구성 요소 간에 데이터가 흐를 수 있도록 하는 물리적 경로입니다. 시스템 버스는 주로 주소 버스, 데이터 버스, 제어 버스로 나뉘며, 각각 메모리 주소, 데이터, 제어 신호를 전달하는 역할을 합니다. 버스의 너비나 대역폭은 CPU의 성능에 중요한 영향을 미칩니다
     
    • 1. 주소 버스 (Address Bus)
      주소 버스는 메모리나 입출력 장치와의 통신에서 데이터를 읽거나 쓸 위치를 지정하는 역할을 합니다. CPU가 메모리에서 데이터를 읽거나 데이터를 저장할 위치를 지정할 때 주소 버스가 사용됩니다. 주소 버스의 너비(몇 비트로 데이터를 전달할 수 있는지)는 시스템의 메모리 용량에 영향을 미칩니다. 예를 들어, 32비트 주소 버스를 사용하는 시스템은 최대 4GB의 메모리 주소 공간을 지원합니다.
    • 데이터 버스 (Data Bus)
      데이터 버스는 실제 데이터를 전송하는 역할을 합니다. CPU와 메모리, 입출력 장치 간에 데이터를 전달하는 데 사용됩니다. 데이터 버스는 양방향으로 데이터를 전송할 수 있으며, 데이터 버스의 너비는 CPU가 한 번에 처리할 수 있는 데이터의 양을 결정합니다. 예를 들어, 32비트 데이터 버스는 한 번에 4바이트(32비트)의 데이터를 전송할 수 있습니다. 데이터 버스의 대역폭이 높을수록 더 많은 데이터를 빠르게 전송할 수 있습니다.
    • 제어 버스 (Control Bus)
      제어 버스는 시스템 내의 다른 구성 요소들이 CPU와의 상호 작용을 제대로 수행할 수 있도록 제어 신호를 전달합니다. 제어 버스는 CPU가 메모리나 입출력 장치에 대한 읽기/쓰기 작업을 지시할 때 사용됩니다. 또한, 클럭 신호나 인터럽트 요청 등을 처리하는 역할도 하며, 데이터 흐름을 조정하는 중요한 역할을 합니다. 제어 버스의 신호는 주로 "읽기", "쓰기", "인터럽트"와 같은 명령을 포함하며, 시스템의 동작을 동기화하는 데 필요한 정보를 제공합니다.

CPU의 작동 방식

CPU는 클럭 신호를 기준으로 주어진 명령어를 실행합니다. CPU의 명령어 처리 과정은 기본적으로 세 가지 단계로 나눠집니다.

  1. 가져오기(Fetch)
    CPU는 메모리에서 명령어를 가져옵니다. 이 명령어는 프로그램 카운터에 의해 지시된 주소에서 가져오며, 이 후 명령어가 명령어 레지스터로 전달됩니다.
  2. 디코딩(Decode)
    가져온 명령어는 디코더에 의해 해석됩니다. 디코더는 명령어를 이해하고, CPU 내부의 다른 부품들이 이 명령어를 실행할 수 있도록 신호를 보냅니다.
  3. 실행(Execute)
    디코딩된 명령어는 실제로 실행됩니다. 실행은 산술/논리 단위(ALU)에 의해 이루어지며, 연산 결과는 레지스터에 저장되거나 메모리로 전송됩니다. 실행된 명령어의 결과는 프로그램의 흐름을 제어하며, 다음 명령어를 가져오기 위해 프로그램 카운터가 업데이트됩니다.

CPU의 성능

CPU의 성능은 여러 요소에 의해 영향을 받습니다. 클럭 속도, 코어 수, 캐시 크기 등은 CPU 성능을 평가하는 주요 기준이 됩니다. 또한, 명령어 집합 구조(Instruction Set Architecture, ISA)파이프라인 구조와 같은 아키텍처적 특성도 성능에 중요한 영향을 미칩니다.

  1. 클럭 속도
    클럭 속도가 빠를수록 CPU는 더 많은 연산을 처리할 수 있습니다. 하지만, 클럭 속도만으로 CPU 성능을 판단하는 것은 한계가 있습니다. 여러 코어가 동시에 작업을 처리하는 멀티코어 시스템도 성능 향상에 중요한 역할을 합니다.
  2. 멀티코어 시스템
    멀티코어 시스템은 여러 개의 독립적인 프로세서를 갖추고 있어, 동시에 여러 작업을 처리할 수 있습니다. 이는 멀티태스킹 및 병렬 처리가 필요한 작업에서 뛰어난 성능을 발휘합니다.
  3. 명령어 파이프라인
    최신 CPU는 파이프라인을 사용하여 명령어를 여러 단계로 나누어 동시에 처리합니다. 이는 CPU가 한 번에 여러 명령어를 실행할 수 있게 만들어, 성능을 크게 향상시킵니다.

제어 장치(Control Unit)의 작동 방식

제어 장치는 CPU의 "관리자" 역할을 하며, 모든 연산 및 작업이 원활하게 이루어지도록 제어하고 조정합니다. 주요 작동 방식은 다음과 같습니다:

  1. 명령어 가져오기(Fetch)
    • 제어 장치는 프로그램 카운터(PC)를 참조하여 다음에 실행할 명령어의 주소를 메모리에서 가져옵니다.
    • 가져온 명령어는 명령어 레지스터(Instruction Register)에 저장됩니다.
  2. 명령어 디코딩(Decode)
    • 명령어 레지스터에 저장된 명령어를 해석하여 어떤 작업을 수행해야 하는지 분석합니다.
    • 명령어의 종류(연산, 메모리 접근, 분기 등)에 따라 ALU나 메모리 등 적합한 하드웨어 모듈에 신호를 전달합니다.
  3. 제어 신호 생성(Signal Generation)
    • 분석된 명령어를 기반으로 CPU 내부와 외부 장치에 제어 신호를 전달합니다.
    • 예를 들어, 데이터 버스를 통해 데이터를 전송하거나 ALU에 특정 연산을 수행하라는 지시를 내립니다.
  4. 프로그램 흐름 제어
    • 작업이 완료되면 프로그램 카운터를 증가시키거나(순차 실행), 조건에 따라 새로운 명령어 주소로 점프하여(분기 실행) 다음 명령어를 가져옵니다.

산술/논리 단위(ALU, Arithmetic/Logic Unit)의 작동 방식

ALU는 모든 계산과 논리 연산을 수행하는 CPU의 핵심 부분입니다. 주요 작동 방식은 다음과 같습니다:

  1. 연산 요청 수신
    • 제어 장치로부터 수행할 작업(덧셈, 뺄셈, 곱셈, 논리 연산 등)에 대한 명령을 받습니다.
    • 작업에 필요한 데이터(피연산자)는 레지스터 또는 메모리에서 가져옵니다.
  2. 연산 수행
    • 요청된 연산을 수행합니다.
      • 산술 연산: 덧셈, 뺄셈, 곱셈, 나눗셈 등.
      • 논리 연산: AND, OR, NOT, XOR 등.
      • 비교 연산: 크다/작다, 같다 등.
  3. 결과 저장
    • 연산 결과는 레지스터에 저장되거나 메모리로 전송됩니다.
    • 일부 경우, 결과는 조건 플래그(예: 0인지 여부, 음수 여부)에 기록되어 이후 명령어 실행에 사용됩니다.
  4. 후속 작업 신호
    • 연산이 끝난 후 제어 장치에 작업 완료 신호를 보내고, 다음 작업을 준비합니다.

메모리 장치(Memory Unit)의 작동 방식

메모리 장치는 CPU와 다른 하드웨어 장치 간의 데이터 저장 및 접근을 담당합니다. 주요 작동 방식은 다음과 같습니다:

  1. 주소 요청 처리(Address Request)
    • CPU는 특정 데이터나 명령어가 저장된 메모리 주소를 요청합니다.
    • 이 주소는 주소 버스를 통해 전달됩니다.
  2. 데이터 읽기(Read)
    • CPU가 데이터를 읽으려는 경우:
      • 메모리 컨트롤러는 요청받은 주소의 데이터를 메모리에서 찾아 데이터 버스를 통해 CPU로 전달합니다.
    • 캐시 메모리가 있을 경우, 먼저 캐시에서 데이터를 검색하고, 없다면 RAM에서 가져옵니다.
  3. 데이터 쓰기(Write)
    • CPU가 데이터를 메모리에 쓰려는 경우:
      • 메모리 컨트롤러는 데이터와 함께 지정된 메모리 주소를 확인한 후, 데이터를 해당 위치에 저장합니다.
  4. 캐시 활용(Cache Management)
    • CPU는 데이터를 더 빠르게 읽고 쓰기 위해 캐시 메모리를 적극적으로 활용합니다.
    • 캐시에는 자주 사용되는 데이터가 저장되며, RAM에 접근하는 시간을 줄여줍니다.
  5. 메모리 계층 간 동작
    • 캐시 → RAM → 보조 저장 장치(HDD/SSD) 순으로 접근하며, 가장 빠르고 가까운 메모리 계층에서 데이터가 처리됩니다.
    • 필요한 데이터가 상위 계층(캐시/RAM)에 없으면 하위 계층에서 데이터를 가져옵니다.

 

'TIL(Today I Learned)' 카테고리의 다른 글

게임에서 쓰이는 삼각함수  (0) 2025.01.07
버퍼와 스트림  (0) 2025.01.02
Promise와 forEach의 동작 차이  (0) 2024.12.31
I/O(Input/Output) 최적화  (0) 2024.12.30
OSI 응용 계층  (0) 2024.12.26