IT개발및프로그래밍/자료구조

컴퓨터의 기본 구조와 데이터 처리 방식 이해하기

devgodmj 2024. 10. 21. 20:49

1. 컴퓨터란 무엇인가?

컴퓨터는 우리가 데이터를 처리하고 계산하는 데 도움을 주는 기계입니다. 컴퓨터의 기본적인 정의는 전자회로를 이용한 고속 자동 계산기입니다. 즉, 다양한 프로그램을 실행해 명령어의 순서에 따라 데이터를 처리하는 장치입니다.

컴퓨터는 크게 세 가지 구성요소로 나눌 수 있습니다: 하드웨어, 소프트웨어, 그리고 데이터입니다. 하드웨어는 물리적인 장치들, 소프트웨어는 하드웨어를 제어하는 프로그램, 데이터는 컴퓨터가 처리하는 정보입니다


2. 컴퓨터의 구성 요소

  • 컴퓨터 시스템의 기능적 구성 요소 
    • 하드웨어: 물리적인 장치(입력장치, 출력장치, CPU 등)
    • 소프트웨어: 하드웨어가 동작하도록 지시하는 프로그램과 명령어
    • 데이터: 컴퓨터가 처리하는 정보나 입력 값
  • 컴퓨터의 하드웨어 구성 요소
    • 입력장치(Input Device)
      키보드, 마우스와 같은 장치로 사용자가 컴퓨터에 데이터를 입력할 수 있게 해줍니다. 입력된 데이터는 컴퓨터 내부로 전달되어 처리됩니다.
    • 중앙 처리 장치(CPU; Central Processing Unit)
      컴퓨터의 두뇌 역할을 합니다. 데이터를 처리하고, 명령을 실행하며, 프로그램의 연산 작업을 수행합니다. 
      CPU는 연산장치(ALU), 제어장치, 레지스터로 구성되어 있습니다.
    • 기억 장치(Memory)
      데이터를 저장하는 장치입니다. 주기억 장치(메인 메모리, RAM)는 CPU가 즉시 접근하여 데이터를 처리하는 메모리이며, 보조기억 장치(하드 디스크, SSD)는 데이터를 영구적으로 저장하는 역할을 합니다. 
    • 출력장치(Output Device)
      모니터, 프린터와 같은 장치로, 처리된 결과를 사용자에게 보여줍니다.

3. 컴퓨터 데이터 처리의 기본 개념

컴퓨터는 데이터를 처리할 때 비트(bit) 단위로 작동합니다. 비트는 0과 1 두 가지 값만 가질 수 있는, 가장 작은 데이터 단위입니다.

여러 비트가 모이면  바이트(byte)를 형성하고, 이것으로 더 많은 정보를 저장하고 표현할 수 있습니다.
예를 들어, 8비트는 하나의 문자를 저장할 수 있는 1바이트가 됩니다.

또한, 컴퓨터는 데이터를 처리할 때 이진법(2진수)을 사용합니다.

우리가 10진수로 숫자를 입력하면 컴퓨터는 이를 2진수로 변환하여 처리하고, 처리 후에는 다시 10진수로 변환하여 보여줍니다.

  • 비트(Bit; Binary Digit): 컴퓨터가 데이터를 표현하는 가장 작은 단위로, 0 또는 1의 값만 가질 수 있습니다.
  • 바이트(Byte): 8개의 비트가 모여 1바이트를 형성합니다. 1바이트는 하나의 문자나 더 복잡한 데이터를 표현할 수 있는 단위입니다.
  • 버스(Bus): 컴퓨터 내부에서 데이터를 전달하는 통로입니다. CPU, 메모리, 입출력 장치 등 다양한 하드웨어 컴포넌트가 상호작용할 수 있도록 데이터를 주고받는 역할을 합니다. 버스는 병렬 통신을 기반으로 설계되며, 시스템의 성능과 처리 속도에 큰 영향을 미칩니다.
    • 제어 버스: 데이터가 어떻게 처리될지에 대한 제어 신호를 전달합니다. 
      예를 들어 읽기와 쓰기 신호, 장치 활성화 신호 등이 포함됩니다.
    • 주소 버스: 메모리나 장치의 위치(주소)를 전달합니다. CPU가 데이터를 읽거나 쓰기 위해 특정 메모리 주소를 지정할 때 사용됩니다.
    • 데이터 버스: 데이터를 전송하는 통로입니다. CPU와 메모리 간의 데이터 이동등에 사용됩니다. 
병렬 통신(Parallel Communication)
여러 비트의 데이터를 동시에 전송하는 통신방식. 
즉, 데이터를 여러 비트 단위로 동시에 전송할 수 있는 여러 개의 통로(회선)를 사용하여 데이터의 각 비트를 한꺼번에 보내는 방식
  • 워드(Word): 컴퓨터가 한 번에 처리할 수 있는 데이터의 크기를 말합니다. 즉, CPU가 한 사이클에 처리할 수 있는 데이터의 비트 수 입니다. 
    • 워드의 크기는 시스템 아키텍처에 따라 다르며 보통 16비트, 32비트, 64비트 등이 있습니다. 
      예를 들어, 64비트 워드 크기를 가진 시스템에서는 CPU가 한 번에 64비트의 데이터를 처리할 수 있습니다. 
    • 워드 크기는 CPU의 레지스터 크기, 주소 공간, 데이터 처리 능력과 관련이 있어 시스템의 성능과 처리 능력에 중요한 역할을 합니다. 


4. 컴퓨터의 작동 예시

컴퓨터가 데이터를 처리하는 과정을 예로 들어보겠습니다. 키보드에서 문자 'A'를 입력하면, 이 입력은 2진수로 변환됩니다(01000001). CPU는 이 2진 데이터를 처리한 후, 모니터를 통해 다시 'A'라는 결과를 보여줍니다. 이 모든 과정은 매우 빠르게 이루어집니다.

 

컴퓨터에서 CPU가 데이터를 처리하는 과정

  • 명령어 인출(Fetch): CPU는 메모리에서 명령어를 가져옵니다.
  • 명령어 해독(Decode): 가져온 명령어를 해석하여 어떤 작업을 수행해야 하는지 알아냅니다.
  • 명령어 실행(Execute): 해석한 명령어에 따라 데이터를 처리합니다.
  • 결과 저장(Store): 처리된 결과를 메모리에 저장하거나 출력 장치로 보냅니다.

5. CPU와 버스의 역할

CPU는 메모리에서 데이터를 가져와 계산하고 그 결과를 다시 메모리에 저장합니다. 이때  버스(bus)라는 고속 통신선을 통해 데이터를 주고받습니다. CPU가 데이터를 처리할 때 한번에 처리할 수 있는 데이터의 크기를 워드(word)라고 하며, 32비트 또는 64비트로 나뉩니다.

  • 워드(Word): CPU가 한 번에 처리할 수 있는 데이터의 크기를 의미합니다. 워드는 CPU의 성능에 따라 16비트, 32비트, 64비트 등으로 나뉩니다.
  • 32비트와 64비트 CPU의 차이점:
    • 32비트 CPU는 한 번에 32비트 크기의 데이터를 처리할 수 있고, 메모리 주소공간이 최대 4GB입니다.
    • 64비트 CPU는 64비트 크기의 데이터를 처리할 수 있으며, 훨씬 더 큰 메모리 주소공간을 지원해 더 많은 데이터를 한 번에 처리하고, 더 많은 메모리를 사용할 수 있습니다.

따라서 64비트 CPU는 더 빠른 처리 성능과 대용량 메모리 사용이 가능하다는 장점이 있습니다.

 


6. 진수의 변환

컴퓨터는 0과 1로 구성된 이진 시스템을 사용하므로 우리가 사용하는 10진수 데이터를 컴퓨터가 처리할 수 있도록 2진수로 변환해야 합니다. 반대로, 컴퓨터가 처리한 2진수 데이터를 우리에게 보여줄 때는 다시 10진수로 변환합니다.

  • 10진수를 2진수로 변환하는 방법
    • 10진수를 2로 나눈다.
    • 나머지를 기록한다. (이 나머지가 2진수의 한 자리 수가 된다.)
    • 몫이 0이 될 때까지 계속해서 몫을 2로 나누고, 나머지를 기록한다.
    • 마지막에 기록된 나머지들을 역순으로 배열한다. 
10진수 25를 2진수로 변환

1. 25 ÷ 2 = 12, 나머지 1
2. 12 ÷ 2 = 6, 나머지 0
3. 6 ÷ 2 = 3, 나머지 0
4. 3 ÷ 2 = 1, 나머지 1
5. 1 ÷ 2 = 0, 나머지 1

나머지들을 역순으로 배열하면 11001이므로, 25의 2진수 표현은 11001 이다.
  • 2진수를 10진수로 변환하는 방법
    • 2진수의 각 자리 숫자에 해당하는 자리 값을 2의 제곱으로 계산한다.
    • 각 자리의 숫자와 그 자리 값(2의 제곱 값)을 곱한다.
    • 결과를 모두 더하여 10진수로 변환한다.
2진수 11001을 10진수로 변환

1. 첫 번째 자리: 1 × 242^424 = 1 × 16 = 16
2. 두 번째 자리: 1 × 232^323 = 1 × 8 = 8
3. 세 번째 자리: 0 × 222^222 = 0 × 4 = 0
4. 네 번째 자리: 0 × 212^121 = 0 × 2 = 0
5. 다섯 번째 자리: 1 × 202^020 = 1 × 1 = 1

각 값을 더하면 16+8+0+0+1 = 25 이므로, 2진수 11001은 10진수로 25 이다.