Post

컴퓨터의 핵심 부품 - CPU

중앙처리장치(CPU)

CPU는 컴퓨터의 핵심적인 부품으로, 컴퓨터의 ‘두뇌’라고 할 수 있다.
컴퓨터의 실행에 워낙 많은 부분을 차지하고 있어 CPU는 크게 아래 5가지의 구성요소로 다시 나뉘게 된다.

산술 논리 장치(ALU: Arithmetic and Logical Unit)

  • 모든 산술(덧셈, 뺄셈)과 논리(AND, OR, NOT 등)연산을 수행한다.

제어 장치(Control Unit)

  • CPU 내에서 명령어를 해석하고, ALU나 다른 구성 요소들에게 명령어 실행을 지시한다.
  • 명령어들의 순서를 조정하고, 시스템의 다른 부분들과 작업 흐름을 제어한다.

레지스터(Register)

  • CPU 내의 매우 빠른 기억 장치로, 현재 수행 중인 작업과 관련된 데이터나 명령어를 임시로 저장한다.

캐시 메모리(Cache Memory)

  • 빈번하게 사용되거나 최근에 사용된 데이터와 명령어를 임시 저장하는 고속 메모리다.
  • 일반적으로 여러 레벨(L1, L2, L3 등)로 구성되며, 각 레벨은 속도와 크기, CPU와의 거리에 따라 분류된다.
  • L1 캐시는 가장 빠르지만 용량이 작고, L2와 L3는 상대적으로 느리지만 더 많은 데이터를 저장할 수 있다.

클럭(Clock)

  • CPU의 작동 속도를 조절하는 타이밍 장치로서, CPU 내의 모든 활동은 클럭 사이클에 맞춰 이뤄진다.
  • 클럭 속도는 CPU가 초당 몇 번의 연산을 수행할 수 있는지를 나타낸다.

클럭 속도를 무조건 최고속도로 설정하면 좋은 거 아닌가? 🧐

클럭 속도를 조절하는 이유

  • 열 발생: 클럭 속도가 높아질수록 CPU에서 발생하는 열이 증가하며, 과도한 열은 CPU에 손상을 줄 수 있다.
  • 전력 소비 : 클럭 속도가 증가하면 전력 소비도 증가하며, 이는 특히 배터리로 작동하는 모바일 장치에서 중요한 문제가 될 수 있다. 높은 전력 소비는 배터리 수명을 단축하게 하고, 전력 관리에 대한 요구가 증가한다.

제어 장치랑 클럭 각각 작업 흐름을 제어하고, CPU 내의 활동에 대한 사이클을 맞춰준다고 한다.
둘 다 하는 일이 상당히 비슷해 보이는데 대체 차이점이 뭘까?

제어 장치와 클럭의 차이점

  • 기능적 차이: 제어 장치는 명령어 해석과 데이터 흐름을 담당하는 반면, 클럭은 작업의 타이밍과 동기화를 관리한다.
  • 동작 방식 : 제어 장치는 CPU의 ‘두뇌’로서 명령어를 어떻게 처리할지 결정하는 반면, 클럭은 ‘시계’로서 모든 작업이 언제 일어날지 정한다.

위에 우리는 CPU 내의 주요 구성 요소에 대해 간략히 살펴보았다.
그렇다면 5 + 3에 결과가 무엇인지 CPU에게 연산을 시키면 실제로 어떻게 동작하는 걸까? 🧐

CPU 동작 방식 (5 + 3) ❗️

  1. 명령어의 해석(제어 장치)
    • 사용자 또는 프로그램으로부터 5 + 3이라는 연산 명령이 CPU에 전달된다.
    • 제어 장치는 이 명령어를 해석하여, 필요한 연산이 덧셈임을 파악하고, 이에 필요한 데이터와 연산을 식별한다.
  2. 데이터 로딩(레지스터)
    • 제어 장치는 5와 3이라는 데이터를 레지스터(Register)로 이동시킨다.
  3. 산술 연산 수행(산술 논리 장치)
    • 제어 장치는 산술 논리 장치(ALU)에 레지스터에 저장된 5와 3을 더하라는 명령을 내린다.
    • ALU는 덧셈 연산을 수행하고, 결과값인 8을 다시 레지스터에 저장한다.
  4. 캐시 메모리 활용
    • 이 과정에서 캐시 메모리(Cache Memory)는 최근에 사용된 데이터나 연산 결과를 저장한다.
    • CPU가 동일한 데이터(‘5’와 ‘3’)를 사용하여 또다시 덧셈 연산을 수행해야 할 경우, 캐시 메모리는 이 데이터를 빠르게 제공한다. 이는 메모리로부터 데이터를 다시 로딩하는 과정을 간소화하고, 전반적인 연산 속도를 향상한다.
  5. 클럭의 역할
    • 이 모든 과정은 CPU의 클럭(Clock) 사이클에 따라 진행된다. 클럭은 CPU 내의 모든 활동의 타이밍을 조정하며, 클럭 속도는 이러한 연산이 수행되는 속도를 결정한다.

레지스터랑 캐시 메모리 중 더 빠른 것은 레지스터이다.
여기서 궁금증이 하나 생기는데, 그럼 캐시 메모리는 왜 필요한 걸까?
캐시메모리를 사용하지 않고 레지스터로 바로 이동시켜서 연산하면 되지 않나? 🧐

아래에 제어 장치가 데이터를 로드하는 방식에 대해 먼저 알아본 후 캐시 메모리에 사용 용도를 파악해 보자.

CPU의 제어 장치가 데이터를 로드 하는 방식 4가지

  1. 직접 할당
    • 명령어 자체가 값을 포함할 수 있으며, 이 경우 CPU는 명령어를 디코딩하면서 직접 이 값을 레지스터에 로드시킨다.
    • 명령어의 크기는 제한되어 있으므로 크거나 복잡한 데이터를 할당할 때는 적합하지 않다. 또한 직접 할당만 사용하면 미리 정의된 상수 값으로만 ​​작동하므로 프로그램의 유연성과 기능이 제한된다.
  2. 메모리 접근
    • 데이터가 메모리에 저장되어 있을 경우, 제어 장치는 메모리 주소를 통해 해당 데이터를 읽어 레지스터로 전송한다.
    • 프로그램이 사용하는 대부분의 데이터는 메모리(RAM)에 저장된다.
    • 메모리에 액세스하면 CPU는 프로그램 실행 중에 동적으로 변경될 수 있는 방대한 양의 데이터를 처리할 수 있다.
  3. 캐시 메모리 활용
    • 사용할 데이터가 캐시 메모리에 있을 경우, 제어 장치는 캐시에서 이 값을 빠르게 가져와 레지스터로 로드한다.
    • 캐시에서 데이터에 액세스하는 것이 메모리에서 액세스하는 것보다 훨씬 빠르다.
  4. 입출력 장치
    • 입력 장치(예: 키보드, 네트워크 등)로 부터 직접 데이터를 받아서 레지스터에 로드한다.

캐시 메모리를 사용하는 이유는 위에 설명해 놓은 데이터를 로드하는 방식 중 메모리에 접근해서 데이터를 가져오는 경우에 사용된다. 제어 장치가 메모리까지 접근해 데이터를 받아오는 것이 아닌 물리적으로 더 가까운 위치에 존재하는 캐시 메모리에서 데이터를 가져옴으로써 연산할 내용을 더 빠르게 레지스터에 로드할 수 있다. 😉

This post is licensed under CC BY 4.0 by the author.

© zwoong. Some rights reserved.