본문 바로가기
컴퓨터구조

[컴퓨터구조] 하드웨어 종류 및 CPU 구성

by 개발LOG 2024. 7. 30.

하드웨어 (Hardware):

  • 중앙 처리 장치 (Central Processing Unit, CPU): 컴퓨터의 두뇌로서 연산을 수행하고 명령을 실행합니다.
  • 메모리 (Memory): 프로그램 및 데이터를 저장하는 장치로, 주 기억장치인 RAM(Random Access Memory)과 보조 기억장치인 하드 디스크 등이 있습니다.
  • 입출력 장치 (Input/Output Devices): 사용자와 컴퓨터 사이의 데이터 흐름을 관리합니다. 키보드, 마우스, 모니터, 프린터 등이 여기에 해당합니다.
  • 시스템 버스 (System Bus): CPU, 메모리, 입출력 장치 등 각 구성 요소 간의 통신을 담당합니다.

프로그램 내장 방식

프로그램 내장 방식은 컴퓨터 구조의 한 방식으로, 프로그램 명령어를 전자식 기억장치에 저장하는 방식입니다. 이 방식은 폰 노이만(John von Neumann)이 1940년대 중반에 제안했습니다. 프로그램 내장 방식 이전에는 스위치를 설치하고 전선을 연결하여 프로그램을 구성하는 방식이 사용되었는데, 이 방식은 프로그램 변경이 매우 불편했습니다.

현대 컴퓨터는 대부분 프로그램 내장방식을 따릅니다.

메모리(주기억장치)는 프로그램 내장방식의 컴퓨터에서 필수적인 하드웨어 장치로 프로그램(코드와 데이터)이 적재되는 장치입니다.

 

소프트웨어 (Software):

  • 운영 체제 (Operating System, OS): 하드웨어를 관리하고 응용 프로그램이 하드웨어와 상호작용할 수 있도록 지원합니다. Windows, macOS, Linux 등이 있습니다.
  • 응용 프로그램 (Application Software): 사용자의 요구에 따라 특정 작업을 수행하기 위해 설계된 소프트웨어입니다. 워드 프로세서, 웹 브라우저, 게임 등이 여기에 해당합니다.
  • 시스템 소프트웨어 (System Software): 운영 체제를 포함하여 컴퓨터의 기본 기능을 제공하는 소프트웨어를 말합니다.

중앙처리장치(CPU)의 구성요소

중앙처리장치(Central Processing Unit, CPU)는 컴퓨터의 두뇌로, 프로그램의 명령을 해석하고 처리하는 역할을 합니다. CPU의 구성 요소는 크게 다음과 같은 세 가지 주요 부분으로 나눌 수 있습니다.

  1. 산술논리 연산장치(Arithmetic Logic Unit, ALU)
    • 기능: ALU는 수학적 연산(덧셈, 뺄셈, 곱셈, 나눗셈 등)과 논리적 연산(AND, OR, NOT, XOR 등)을 담당합니다. 프로그램 실행 중 발생하는 모든 계산과 논리 판단을 처리합니다.
    • 구성: ALU는 연산기와 논리회로로 구성되어 있으며, 이를 통해 데이터를 처리합니다.
  2. 제어장치(Control Unit, CU)
    • 기능: 제어장치는 컴퓨터의 모든 부품이 조화롭게 작동할 수 있도록 명령어의 해석과 실행을 관리하고 조정합니다. 메모리에서 명령어를 가져오고, 해석하여 ALU와 기타 장치들이 수행할 동작을 결정하며, 이러한 동작들의 순서를 제어합니다.
    • 구성: 제어장치는 명령어 레지스터, 명령어 디코더, 타이밍 신호 발생기 등으로 구성되어 있으며, 이들은 명령어 실행에 필요한 시퀀스와 신호를 생성합니다.
  3. 레지스터(Register)
    • 기능: 레지스터는 CPU 내부의 작은 저장 공간으로, 명령어 실행 중 임시 데이터 저장, 연산 결과 보관, 명령어 포인터 등의 역할을 합니다. CPU의 처리 속도와 직접적인 관련이 있는 매우 빠른 메모리입니다.
    • 구성: 레지스터에는 다양한 종류가 있으며, 주요한 것으로는 일반 목적 레지스터, 명령어 레지스터, 프로그램 카운터(PC), 스택 포인터(SP), 상태 레지스터 등이 있습니다.
  4. 버스(Bus)

데이터, 주소, 제어 신호 등을 CPU와 다른 컴퓨터 구성 요소 간에 전송하는 통신 시스템입니다.

 

레지스터의 종류와 역할

CPU내부에는 다양한 목적의 레지스터 들이 존재합니다. 레지스터들은 정보를 일시적으로 저장하는데 사용되며, 각기 다른 역할을 수행합니다. 여기서는 레지스터들의 종류와 역할에 대해 알아보겠습니다.

  1. 프로그램 카운터(Program Counter, PC) 프로그램 카운터는 다음에 실행될 명령어의 메모리 주소를 가지고 있습니다. CPU가 명령어를 실행한 후, PC는 자동적으로 업데이트되어 다음 명령어의 위치를 가리킵니다. 이를 통해 CPU는 프로그램의 명령어를 순서대로 실행할 수 있습니다.
  2. 메모리 주소 레지스터(Memory Address Register, MAR) 메모리 주소 레지스터는 CPU가 접근하려는 메모리의 주소를 저장합니다. CPU가 데이터를 읽거나 쓰기 위해 메모리에 접근할 때, 그 위치를 MAR을 통해 지정합니다. 즉, MAR은 CPU와 메모리 사이의 특정 위치를 가리키는 데 사용됩니다.
  3. 메모리 버퍼 레지스터(Memory Buffer Register, MBR) 메모리 버퍼 레지스터는 CPU가 메모리로부터 읽은 데이터나 메모리에 쓸 데이터를 일시적으로 저장하는 레지스터입니다. 데이터 전송 시 MBR은 해당 데이터를 임시로 보관하며, CPU 또는 메모리 간의 데이터 교환에 중요한 역할을 합니다.
  4. 명령 레지스터(Instruction Register, IR) 명령 레지스터는 CPU에 의해 현재 실행되고 있는 명령어를 저장합니다. 명령어가 CPU로 가져와지면, 그 명령어는 IR에 저장되고, CPU는 이 명령어를 해석하여 실행합니다. IR은 CPU가 어떤 작업을 수행해야 하는지를 결정하는 데 기준이 됩니다.
  5. 누산기(Accumulator, ACC) 누산기는 중간 계산 결과를 저장하는 데 사용되는 레지스터입니다. 사칙연산과 같은 연산 수행 시, 연산의 결과는 일시적으로 ACC에 저장됩니다. 이를 통해 CPU는 복잡한 계산을 보다 효율적으로 처리할 수 있습니다.
  6. 상태 레지스터(Status Register) 상태 레지스터는 CPU의 현재 상태를 나타내는 플래그들을 포함합니다. 여기에는 산술 연산 결과의 오버플로, 제로, 음수, 캐리 아웃 같은 다양한 상태 정보가 포함됩니다. 상태 레지스터의 플래그들을 통해 프로그램은 조건부 분기와 같은 결정을 내릴 수 있습니다.

이러한 레지스터들은 CPU의 기능을 정확하게 수행하는 데 필수적인 역할을 합니다. 각 레지스터는 CPU 내에서 특정한 목적을 가지고 있으며, 이들의 상호작용을 통해 컴퓨터는 다양한 작업을 효율적으로 처리할 수 있습니다.

명령어 실행 사이클

Fetch Cycle (인출 사이클) Fetch Cycle은 CPU가 다음에 실행할 명령어를 메모리에서 가져오는 과정입니다. 이 사이클은 다음 단계들로 구성됩니다:

  1. 주소 지정: 프로그램 카운터(PC)가 가리키는 메모리 주소에서 명령어를 가져옵니다. PC는 현재 실행 중인 명령어의 위치를 저장하고 있으며, 각 Fetch Cycle이 시작될 때마다 다음 명령어의 주소를 가리키도록 업데이트됩니다.
  2. 명령어 인출: PC에 의해 지정된 주소에서 명령어를 메모리로부터 읽어들입니다. 이 명령어는 CPU 내부의 명령 레지스터(IR)에 임시로 저장됩니다.
  3. PC 업데이트: 명령어 인출이 완료되면, PC는 자동적으로 다음 명령어의 주소로 업데이트됩니다. 이는 보통 인출된 명령어의 크기에 따라 결정됩니다.

Execution Cycle (실행 사이클) Execution Cycle은 Fetch Cycle에 의해 인출되어 IR에 저장된 명령어를 CPU가 실제로 해석하고 실행하는 과정입니다. 이 사이클은 다음과 같은 단계들로 이루어집니다:

  1. 디코드: CPU는 IR에 저장된 명령어를 해석합니다. 이 단계에서 CPU는 명령어가 수행해야 할 작업의 종류(예: 데이터 이동, 산술 연산, 조건 분기 등)를 결정합니다.
  2. 실행: 디코드된 명령어에 따라 CPU는 필요한 연산을 수행합니다. 이는 레지스터 간의 데이터 이동, 산술 또는 논리 연산의 수행, 메모리 접근, 프로그램의 실행 흐름 변경 등을 포함할 수 있습니다.
  3. 결과 저장: 연산 결과는 레지스터나 메모리에 저장됩니다. 이 단계는 필요에 따라 명령어의 유형과 실행한 연산의 종류에 따라 달라집니다.

'컴퓨터구조' 카테고리의 다른 글

[컴퓨터구조] 컴파일러 vs 인터프리터 차이  (0) 2024.12.18