찰리의 놀이터

컴퓨터 구조(Computer Architecture) 본문

Computer Science

컴퓨터 구조(Computer Architecture)

차알리 2023. 2. 14. 13:55

컴퓨터 유래

컴퓨터라는 명칭은 라틴어 "Computare"(먼저 계산한다)에서 유래되었습니다.
앨런 튜링은 독일군의 암호를 풀어내기 위해 튜링 머신을 개발했고, 영화 "이미테이션 게임"으로도 상영이 되었습니다.
튜링 머신은 암호를 "입력"하면 "계산"을 통해 암호를 해독한 결과를 "출력"하는 기계입니다.
튜링은 튜링 머신을 보편 만능 기계(Universal Computing Machine)이라고 불렀는데 컴퓨터의 시초라고 할 수 있습니다.

컴퓨터의 구조

컴퓨터란, 입력 받은 데이터를 정해진 규칙대로 처리하여 처리 결과를 저장하고 출력하는 전자 장치

  • 입력받은 데이터
    • 사람은 컴퓨터에 데이터를 입력하고 컴퓨터는 이를 받아들입니다.
    • 데이터를 입력하기 위해 키보드 또는 마우스와 같은 입력장치를 통해 입력합니다.
  • 정해진 규칙
    • 정해진 규칙은 프로그램의 동작을 말합니다.
    • 개발자가 코드를 짜는 것은 계산기에 '2'와 '곱하기 연산자(x)', 그리고 '9'를 입력했을 때, 18이라는 결과값을 내놓는 것처럼 입력값에 대한 연산의 결과값을 출력하게 만드는 과정입니다.
    • 소프트웨어 또는 어플리케이션이라고 합니다.
  • 처리
    • 정해진 규칙에 따라 연산을 수행하는 것을 의미합니다.
    • 중앙처리장치(CPU)를 통해 연산을 수행합니다.
  • 저장
    • 컴퓨터는 CPU에서 처리한 결과 데이터를 저장할 수 있는 장치가 포함됩니다.
    • 기억장치에 데이터를 저장합니다.
  • 출력
    • 데이터의 처리 결과를 사람이 인식할 수 있도록 정보를 전달합니다.
    • 데이터를 출력하기 위해 모니터 또는 스피커와 같은 출력장치를 통해 출력합니다.

또한, 컴퓨터는 위의 5가지로 나누는 게 아닌 두 분류로 나눌 수도 있습니다.

  • 정해진 규칙대로 동작하게 하는 소프트웨어와 입력, 저장, 출력 등을 담당하는 하드웨어로 나눌 수 있습니다.

소프트웨어 (Software)

물리적인 형태가 없는 컴퓨터의 구성요소입니다.
또 다른 구성요소인 하드웨어가 어떻게 동작해야 하는지 정하는 명령어의 집합입니다.
사람의 몸이 하드웨어라면 정신이 소프트웨어에 해당합니다.
시스템 소프트웨어응용 소프트웨어로 구분됩니다.

시스템 소프트웨어 (System Software)

이름 그대로 시스템을 위한 소프트웨어입니다.
응용 소프트웨어가 실행될 수 있는 환경을 제공합니다.

  • Windows, Linux, MacOS와 같은 운영체제 또는 Python, Node.js와 같은 런타임 환경을 의미합니다.

하드웨어와 직접적으로 소통하며 하드웨어 장치가 정확한 동작을 할 수 있도록 해줍니다.

  • 키보드, 마우스, USB에 대한 드라이버와 같은 소프트웨어를 의미합니다.

응용 소프트웨어 (Application Software)

시스템 소프트웨어를 제외한 모든 소프트웨어를 의미합니다.
어플리케이션 또는 앱, 그리고 프로그램이라고도 합니다.
사무용, 교육용, 미디어용, 통신용, 게임용, 산업용 소프트웨어 등 다양한 종류의 소프트웨어가 존재합니다.

하드웨어 (HardWare)

컴퓨터를 구성하는 물리적, 기계적 장치들을 의미합니다.
중앙처리장치(CPU), 기억장치, 입력장치, 출력장치로 구분되며, 각 장치는 시스템 버스로 연결되어 있습니다.

중앙처리장치 (CPU, Central Processing Unit)

중앙처리장치는 컴퓨터에서 기억, 해석, 연산, 제어라는 4대 주요 기능을 관할하는 장치를 의미합니다.
쉽게 얘기하면 프로그램의 실행과 데이터를 처리하는 주요 장치입니다.
자세히 다루는 내용은 추후에 업데이트 하도록 하겠습니다.
기본적으로 산술논리연산장치(ALU, Arithmetic and Logical Unit)와 레지스터(Register Set), 그리고 제어장치(Control Unit)으로 구성이 됩니다.

  • 산술논리연산장치(ALU)
    • 산술 연산(+,-,*,/)과 논리 연산(AND,OR,NOT,XOR 등) 등을 수행하는 회로들로 이루어진 하드웨어 모듈입니다.
    • 프로그램에 기술된 명령어를 수행하는 실질적인 코드 실행 장치입니다.
  • 레지스터(Register)
    • CPU 내부에 위치한 기억장치이며 컴퓨터의 기억장치 중 접근 속도가 가장 빠릅니다.
    • 연산장치의 동작에 필요한 데이터를 임시보관하고 제공하는 역할을 합니다.
    • 구현 회로가 복잡하여 레지스터의 수가 제한됩니다.
    • 명령어 실행 과정 제어에 필요한 정보를 저장하는 제어용 레지스터와 명령어 실행에 필요한 데이터나 계산 결과를 임시로 저장하는 일반 산술용 레지스터가 있습니다.
  • 제어장치(Control Unit)
    • 프로그램 코드(명령어)를 해석하고, 실행하기 위한 제어 신호(Control Signals)를 순차적으로 발생시키는 하드웨어 모듈입니다.
    • CPU의 모든 동작과 데이터 흐름을 통제하고 관리하며, 운영체제와 소통하여 컴퓨터의 자원(Resource)를 관리합니다.

기억장치 (Memory Device)

중앙처리장치에서 작업을 처리하기 위해서는 데이터와 데이터를 처리할 프로그램이 필요합니다.
기억장치는 저장장치라고도 하며, 데이터와 프로그램, 그리고 연산의 중간 결과 등을 일시적 또는 영구적으로 저장하는 장치를 의미합니다.
레지스터와 캐시메모리, 주기억장치, 그리고 보조기억장치로 분류할 수 있습니다.

  • 레지스터(Register)
    • 중앙처리장치 내부에 존재하는 기억장치입니다.
    • 접근 시간이 중앙처리장치의 속도와 비슷합니다.(접근 속도가 가장 빠름)
  • 캐시 메모리(Cache Memory)
    • 중앙처리장치가 주기억장치에 접근할 때 속도 차이를 줄이기 위해 사용합니다.
    • 자주 사용하는 데이터를 캐시 메모리에 저장한 뒤, 데이터 재사용 시 주기억장치에 접근하지 않고 캐시 메모리에서 가져오면서 속도를 향상시킵니다.
    • CPU 코어와 메모리 사이의 병목 현상 완화를 통해 속도 향상의 장점이 있지만, 용량이 작고 비싸다는 단점이 있습니다.
  • 주기억장치
    • 중앙처리장치가 직접 데이터를 읽고 쓸 수 있는 장치입니다.
    • 프로그램을 실행하는 동안 필요한 모든 데이터(프로그램, 데이터, 연산의 중간 결과 등)를 저장합니다.
    • 캐시 메모리보다 용량이 크지만, 큰 용량의 데이터를 저장할 수 없습니다.
    • RAM(Random Access Memory)과 ROM(Read Only Memory) 등이 있습니다.
  • 보조기억장치
    • 컴퓨터에 필요한 모든 정보를 (반)영구적으로 저장합니다.
    • 큰 용량의 데이터를 저장할 수 있으며, 접근 시간은 주기억장치보다 약 1,000배 느립니다.
    • 접근 시간이 느린 탓에 중앙처리장치와 직접적인 소통을 하지 않습니다.
    • SSD(Solid State Drive)와 HDD(Hard Disk Drive) 등이 있습니다.

입력장치 (Input Device)

사용자가 컴퓨터에 데이터를 전달하는 장치를 의미합니다. 키보드, 마우스, 마이크 등이 있습니다.

출력장치 (Output Device)

컴퓨터가 사용자에게 데이터를 전달하는 장치를 의미합니다. 모니터, 스피커, 프린터 등이 있습니다.

시스템 버스 (System Bus)

각 하드웨어 장치들의 통로입니다. 물리적인 전선을 의미하며 데이터 버스, 주소 버스, 그리고 제어 버스가 있습니다.

  • 데이터 버스(Data Bus)
    • 하드웨어 간 데이터를 전달하는 통로입니다.
    • 양방향이며 프로세서와 메모리, 그리고 외부장치 사이에서 실제 데이터를 전달합니다.
  • 주소 버스(Address Bus)
    • 물리 메모리(Physical Memory)의 하드웨어 주소에 의해 정의되는 장치 사이에서 데이터를 주고받는 데 사용됩니다.
    • CPU또는 DMA(Direct Memory Access)가 가능한 장치에 의해 사용됩니다.
    • 데이터가 어디에 도착해야하는지 목적지 정보를 전달하는 통로라고 이해해주시면 됩니다.
  • 제어 버스(Control Bus)
    • CPU에 의해 사용되며 하드웨어 장치간의 통신에 사용됩니다.
    • CPU에서 생성된 제어신호를 다른 장치로 전달하는 통로입니다.

컴퓨터 동작원리

위의 내용을 바탕으로 컴퓨터의 동작원리를 알아보겠습니다.

  1. 컴퓨터에 전원을 공급합니다.
  2. 운영체제를 주기억장치로 옮기고, CPU는 주기억장치와 통신하며 운영체제를 실행합니다.
  3. 하나의 프로그램을 실행하면, 운영체제는 보조기억장치에 있는 프로그램을 주기억장치인 RAM에 적재(Load)합니다. 이 과정을 로딩(Loading)이라고 합니다.
  4. 로딩이 완료되면 화면에서 우리가 실행한 프로그램을 확인할 수 있습니다. 실행중인 프로그램을 우리는 프로세스라고 합니다.
  5. 우리는 키보드 또는 마우스, 마이크와 같은 입력장치를 통해 데이터를 입력합니다.
  6. 데이터가 입력되면 컴퓨터는 프로그램을 동작시키거나, 글자를 입력하거나, 녹음을 하는 등의 규칙에 대한 동작을 수행합니다.
    • 여기서 데이터가 입력된 후 CPU는 소스코드에 맞게 데이터를 해석하고 연산을 수행합니다.
  7. 연산 결과는 주기억장치에 저장되며, 모니터 또는 스피커와 같은 출력장치를 통해 사용자에게 전달됩니다.

각 부분에 대한 자세한 내용은 추후에 포스팅하도록 하겠습니다.