본문 바로가기
Computer Science/컴퓨터 구조

[컴퓨터 구조] Chapter 01 컴퓨터 구조 시작하기

by BrickSky 2023. 10. 29.

컴퓨터 구조를 알아야 하는 이유

  • 컴퓨터 구조를 이해하면 문제 해결 능력이 향상된다.
  • 컴퓨터 구조를 이해하면 문법만으로는 알기 어려운 성능/용량/비용을 고려하여 개발할 수 있다.

→ 컴퓨터 구조를 안다고 해서 프로그램을 빠르게 구현할 수 있는 것은 아니다. 단 개발 프로그램의 성능과 용량, 비용을 고려할 수는 있다.
 
 

컴퓨터 구조의 큰 그림

컴퓨터 구조는 크게 1) 컴퓨터가 이해하는 정보와 2) 컴퓨터의 네 가지 핵심부품으로 나눌 수 있다.

1) 컴퓨터가 이해하는 정보

컴퓨터가 이해하는 정보는 데이터와 명령어로 구분된다.

데이터

  • 컴퓨터가 이해하는 숫자, 문자, 이미지, 동영상과 같은 정적인 정보

명령어

  • 컴퓨터를 실질적으로 작동시키는 부분

‘1’과 ‘2’는 데이터 인것이고 ‘더하라’는 명령어인 것이다.
즉 명령어는 컴퓨터를 작동시키고 데이터는 명령어를 위해 존재하는 일종의 재료인 것이다.
 

2) 컴퓨터의 네 가지 핵심부품

네가지 핵심부품에 관해 알아보자.

주기억장치(메모리)

  • 메모리는 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품이다.
  • 프로그램이 실행되기 위해서는 반드시 메모리에 저장이 되어있어야 한다.
  • 메모리 내부에 데이터와 명령어가 난잡하게 있으면 느리게 작동할 테니, 위치가 정돈되어있어 있어야 한다. 이때 사용되는 개념이 주소!
  • 주소를 왜 사용하나면, 저장된 값에 빠르고 정확하게 접근하기 위해서!

중앙처리장치(CPU)

  • CPU는 컴퓨터의 두뇌라고 생각하면 되는데, 메모리에 저장된 명령어를 읽어 들이고, 읽어드린 명령어를 해석하고 실행하는 부품이다.
  • CPU의 역할과 작동원리를 이해하기 위해서는 내부 구성요소를 알고 있어야 하는데 1) 산술논리연산장치, 2) 레지스터, 3) 제어장치가 해당된다.
  • 산술논리연산장치
    • 계산기라고 생각하면 된다. 계산만을 위해 존재하는 부품이다.
  • 레지스터
    • CPU 내부의 작은 임시 저장 장치. 프로그램을 실행하는데 필요한 값들을 임시 저장하는 부분
    • CPU 안에는 여러개의 이름이 다른 레지스터가 존재한다.
  • 제어장치
    • 제어신호라는 전기신호를 보냄으로써 명령어를 해석하는 장치이다.
    • 제어신호는 단순히 컴퓨터 부품을 관리하고 작동시키기 위한 신호라고 생각하면 된다.
      • 메모리 읽기: 저장된 값을 읽고 싶을 때
      • 메모리 쓰기: 어떤 값을 저장하고 싶을 때
       

위의 그림을 살펴보면, 프로그램의 명령어와 데이터를 저장하는 부품인 메모리에서 메모리에 저장된 명령어를 읽고 해석하고 실행하는 부품인 CPU가 가져온다. ALU가 가져온 값을 계산해서 작은 저장 장치인 레지스터로 넘긴다. 이렇게 값을 가져오고 계산해서 저장하는 단계를 끝내면 명령어가 끝난 것으로 볼 수 있다.

보조기억장치

  • 메모리는 실행되는 프로그램의 명령어와 데이터를 저장하는 특징을 갖고 있지만, 가격이 비싸고 전원이 꺼지면 내용이 사라진다는 문제점이 존재한다.
  • 즉, 메모리보다 크기가 크고 전원이 꺼져도 내용을 잃지 않기 위해 메모리를 보조할 장치가 필요한데 이러한 저장장치가 보조기억장치이다.

메모리는 실행되는 프로그램을 저장하지만, 보조기억장치는 보관할 프로그램을 저장한다고 생각하면 된다.

입출력장치

  • 입출력 장치는 마우스, 키보드처럼 컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환하는 장치이다.

 

3) 메인보드와 시스템 버스

위에서 나온 네 가지의 핵심 부품은 모두 메인보드라는 판에 연결된다.
메인보드에 연결된 부품들은 서로 정보를 주고받을 수 있는데 이는 메인보드 내부에 ’ 버스’라는 통로가 있기 때문이다. 컴퓨터 내부에는 여러 종류의 버스가 있는데! 그중 가장 중요한 버스가 시스템 버스이다.

시스템 버스

  • 네가지 핵심부품을 연결하는 버스이다.

시스템 버스 내부에는 주소 버스, 데이터 버스, 제어버스가 존재한다.

주소 버스

  • 주소를 주고 받는 통로

데이터 버스

  • 명령어와 데이터를 주고받는 통로

제어 버스

  • 제어 신호를 주고 받는 통로

앞서 제어신호를 통해 메모리를 읽을지 쓸지 정한다고 했는데, 이는 전기신호를 보냄으로 가능하다고 정리했다. 근데! 실제로는 제어 신호를 보낼 때 제어버스로 ’ 메모리 읽기’ 제어 신호를 보내고, 주소버스로 읽고자 하는 주소를 보낸 후에 데이터 버스로 CPU가 요청한 주소에 있는 내용을 보내는 것이다. 저장하는 경우에도 같은 루트를 반복한다.