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

[혼공컴운] Ch1. 컴퓨터 구조 개괄

by hyuga_ 2023. 9. 26.

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

좋은 개발자가 되기 위해서는, 프로그래밍 언어의 문법과 함께 컴퓨터의 근간을 알아야 한다.

이를 알아야 문제해결 능력이 향상되고, 성능/용량/비용을 고려한 개발을 할 수 있기 때문이다.

 

1) 문제해결능력

컴퓨터구조에 대한 이해는 프로그래밍 언어의 문법만으로는 해결하기 어려운 문제들을 해결할 수 있도록 돕는다.

 

분명 코드는 제대로 작성했는데 동작하지 않는 경우가 있다. 내 개발환경에서는 문제없이 돌아갔는데 실제 사용자들에겐 오류가 뜨는 것이다. 이런 케이스는 문법 오류가 원인이 아니다.

 

여기서 더 나아가지 못하는 개발자가 있고, ‘한 번 들여다 봐야겠다!’ 하고 컴퓨터 내부를 거리낌없이 들여다 보는 개발자가 있다.

 

좋은 개발자는 컴퓨터를 미지의 대상으로 여기지 않고, 분석의 대상으로 바라보는 개발자이다. 문법에 맞는 소스 코드를 컴퓨터에 입력만 하는 개발자를 넘어서, 컴퓨터를 내려다보며 문제를 해결할 수 있는 개발자가 되는 것이 중요하다.

 

2) 성능, 용량, 비용

컴퓨터 구조를 학습하면 이들을 고려한 프로그래밍을 할 수 있다.

이들은 간과하기 쉽지만 절대로 간과해선 안되는 개념이다. 주요 IT 기업 중에서 성능, 용량, 비용을 고려하지 않는 회사는 없다.

 

또한 내가 개발하고 있는 프로그램이 어느 정도의 성능/용량/비용을 지닌 컴퓨터를 요구로 하는지를 판단할 수 있어야 한다.

클라우드 서비스를 활용할 때에도 CPU, 메모리, 저장 용량을 직접 선택해야 한다. 이에 따라 요금이 달라진다.

 

컴퓨터 구조는 결국 컴퓨터 각각을 이루고 있는 부품들의 성능, 용량, 비용에 관한 이야기이다.

 

 

2. 컴퓨터 구조의 큰 그림

컴퓨터 구조 강의는 크게 다음과 같이 분류할 수 있다.

 

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

  • 데이터
  • 명령어

 

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

  • CPU
  • 메모리 (RAM, 주기억장치, 메인메모리)
  • 보조기억장치
  • 입출력장치

 

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

데이터

숫자, 문자, 이미지, 동영상과 같은 정적인 정보

컴퓨터와 주고받는/ 내부에 저장된 정보를 데이터라 통칭하기도 한다.

컴퓨터는 이진법으로 숫자와 문자를 이해하고 표현한다.

 

명령어

컴퓨터는 결국 명령어를 처리하는 기계이다.

명령어는 컴퓨터를 실질적으로 움직이는 정보이다. 앞서 말한 데이터는 명령어를 실행하기 위한 일종의 재료와 같다.

향후 명령어의 생김새와 동작 방식에 대해서 다룰 것이다.

  • 1과 2를 더하라 에서 1, 2는 데이터이고 더하라 는 명령어이다.
  • "안녕하세요"를 출력하라 에서 안녕하세요는 데이터, 출력하라는 명령어이다.

 

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

 

세상에는 다양한 종류의 컴퓨터가 존재한다. 매우 작은 컴퓨터, 스마트폰, 노트북, 서버 컴퓨터, 슈퍼 컴퓨터 등 ..

그러나 컴퓨터의 종류를 막론하고 핵심 부품 4가지는 동일하다.

1) CPU, 2) 메모리, 3) 보조기억장치, 4) 입출력장치  (+ 5. 메인보드 (마더보드))

 

네 가지 핵심부품들이 서로 정보를 주고받기 위해 하나의 모이는 지점이 필요하다. 그 역할을 하는 판때기가 메인보드이다. 메인보드 위에 핵심부품들을 실장한다.

 

 

핵심부품 생김새

(좌) CPU, (우) 메모리 - 상단 RAM/ 하단 ROM

메모리의 경우 주기억장치, 메인메모리라고 부르기도 한다.

 

원래 RAM, ROM 두 가지 종류가 있지만 RAM이 컴퓨터 구조를 이해함에 있어 더욱 중요하기 때문에 메모리는 일반적으로 곧 RAM을 지칭한다.

(좌) 보조기억장치 (SSD, USB, CD 등), (우) 입출력장치 (컴퓨터와 정보를 주고받을 수 있는 장치. 키보드, 마우스 등)
메인보드

 

 

핵심부품 구조도

1. 메인보드

핵심부품들을 실장하는 기판이다.

 

2. 시스템 버스

버스: 정보를 주고받을 수 있는 통로. 메인보드에 연결된 부품은 버스를 통해 정보를 주고 받는다.

시스템 버스: 버스 중에서도 척추와 같은 역할을 수행. 컴퓨터의 핵심 부품을 연결하는 버스이다.

 

시스템 버스의 내부 구성

 

  1. 주소 버스: 주소를 주고받는 통로
  2. 데이터 버스: 명령어와 데이터를 주고받는 통로
  3. 제어 버스: 제어 신호를 주고받는 통로

 

3. CPU

 

CPU는 메모리에 저장된 값을 읽어들이고, 해석하고, 실행하는 장치다.

 

CPU의 핵심 부품

 

  1. ALU(산술 논리 연산장치): 계산기
  2. 레지스터: CPU 내부의 작은 저장장치
  3. 제어장치: 제어 신호를 내보내고, 명령어를 해석하는 장치
    • 제어 신호: 컴퓨터 부품들을 관리하고 작동시키기 위한 전기 신호. 대표적으로 메모리 읽기/ 쓰기 신호.

 

 

4. 메모리

메모리는 프로세스(현재 실행되는 프로그램)의 명령어와 데이터를 저장하는 부품이다.

 

메모리 안에 데이터와 명령어가 저장되어 있어야 프로그램이 실행될 수 있다.

(후에 OS - 페이징이라는 걸 배우면 굳이 실행되는 프로그램의 모든 데이터가 저장될 필요가 없음을 알게 된다.)

 

메모리에 저장된 값의 위치는 주소로 알 수 있다. 메모리의 한칸 한칸이 주소이다.

 

메모리에 저장할 수 있는 데이터/명령어의 종류가 굉장히 많은데, 그 중에 내가 원하는 것이 어디에 저장되어 있는지.. 그 위치를 특정하기 위한 개념이 주소이다.

 

 

5. 보조기억장치

설치는 했는데 실행 중이지 않은 프로그램의 경우에는 보조기억장치에 저장되어 있다.

메모리는 비싸고, 휘발성이기 때문에 전원이 꺼지면 저장된 내용을 잃는다.

 

때문에 보조기억장치가 필요하다. 메모리는 실행할 정보를 저장하고, 보조기억장치는 보관할 정보를 저장한다.

 

 

6. 입출력장치

컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환할 수 있는 부품이다. 모니터, 키보드, 마우스 등이 그 예이다.

 

 

 


[혼공컴운]이 붙은 포스팅들의 내용 출처는 대부분 강민철 님의 <혼자 공부하는 컴퓨터 구조+운영체제> 책 및 인프런 강의에 기반하고 있습니다. 정확한 내용은 책과 인프런 강의를 참고해주세요. 내용 중 저작권에 문제되는 사항이 있다면 바로 조치하겠습니다. 

 

혼자 공부하는 컴퓨터 구조+운영체제 - 예스24

혼자 해도 충분합니다! 1:1 과외하듯 배우는 IT 지식 입문서이 책은 독학으로 컴퓨터 구조와 운영체제를 배우는 입문자가 ‘꼭 필요한 내용을 제대로 학습’할 수 있도록 구성했다. 뭘 모르는지

www.yes24.com