해당 블로그 포스트의 내용은 [한빛미디어]의 '혼자 공부하는 컴퓨터 구조와 운영체제' 책의 저자이신 강민철님께서 강의하신 내용을 위주로 정리했습니다.
https://youtube.com/playlist?list=PLVsNizTWUw7FCS83JhC1vflK8OcLRG0Hl&si=H1U9OoqlmQ8ZiZai
1. Intro
컴퓨터 구조는 크게 컴퓨터가 이해하는 정보와 컴퓨터의 네 가지 부품으로 나뉜다.
컴퓨터가 이해하는 정보
- 데이터
- 명령어
컴퓨터의 네 가지 부품
- CPU (중앙처리장치)
- Memory (메모리)
- I/O Device (입출력장치)
- Auxillary Storage (보조기억장치)
2. 컴퓨터가 이해하는 정보
컴퓨터가 이해하는 정보는 다시 데이터와 명령어 2가지로 나뉜다.
2.1) 데이터
데이터
- 숫자, 문자, 이미지, 동영상과 같은 정적인 정보
- 컴퓨터와 주고받는 / 내부에 저장된 정보를 데이터라 통칭하기도 함
- 0과 1로 숫자를 표현하는 방법
- 0과 1로 문자를 표현하는 방법
2.2) 명령어
컴퓨터는 결국 명령어를 처리하는 기계이다.
명령어
- 컴퓨터를 실질적으로 움직이는 정보
- 데이터는 명령어를 위한 일종의 재료
명령어의 생김새와 동작 방식
아래의 예시들은 명령어를 나타내고, 이를 구성하는 빨간색 글씨는 데이터다.
예를 들어, 1과 2를 더하라
혹은 '안녕하세요'를 출력하라
3. 컴퓨터의 네 가지 핵심 부품
다음과 같이 세상에는 정말 다양한 종류의 컴퓨터들이 있다.
이때, 컴퓨터의 종류가 다양할지라도 해당 컴퓨터를 구성하는 핵심 부품들은 거의 동일한데 이를 컴퓨터의 네 가지 핵심 부품이라 한다.
컴퓨터를 구성하는 네 가지 핵심 부품은 아래와 같다.
컴퓨터의 네 가지 핵심 부품
- CPU
- Memory (Main memory, 주기억장치)
- RAM
ROM
- I/O Devices
- Auxillary Storage
이때, Memory는 Main Memory로 주기억장치라고 하는데,
일반적으로 편하게 Memory로 줄여서 부르기도 한다.
Main Memory는 2가지 종류가 있는데 RAM, ROM이 있다.
일반적으로 컴퓨터를 실질적으로 작동시키고 이해하는데 RAM이 ROM보다 더 중요하므로
여기서는 Memory를 RAM이라 보면 되겠다.
컴퓨터의 네 가지 핵심 부품 - 사진
그리고 위의 네 가지 부품들 (CPU, Memory, I/O Devices, Auxillary Devices)이 정보를 주고받기 위해서는, 하나의 보드가 필요한데 이를 Mainboard(Motherboard)라 한다.
마지막으로, 컴퓨터를 구성하는 네 가지 핵심 부품들이 정보를 주고받을 때 이용하는 통로를 시스템 버스(System Bus)라 한다.
3.1) Memory
Memory는 현재 실행되는 프로그램(Process)의 명령어와 데이터를 저장하는 부품이다.
모든 프로그램은 명령어와 데이터로 구성되어 있는데, 실행되고 있는 프로그램의 명령어와 데이터는 메모리에 저장되어 있다.
즉, 어떤 프로그램을 실행하기 위해 메모리 안에 명령어와 데이터가 있어야 한다.
그리고 현재 실행되고 있지 않은 프로그램은 보조기억장치에 저장되어 있다.
메모리 주소는 내가 접근하고자 하는 / 필요로 하는 데이터나 명령어가 저장된 위치이다.
즉, 정리하자면 메모리의 핵심 사항은 다음과 같다.
- 프로그램이 실행되기 위해서는 메모리에 명령어와 데이터가 저장되어 있어야 한다.
- 메모리는 현재 실행되는 프로그램의 명령어와 데이터를 저장한다.
- 메모리에 저장된 값의 위치는 메모리 주소로 알 수 있다.
3.2) CPU
CPU는 메모리에 저장된 명령어를 읽어 들이고, 해석하고, 실행하는 부품이다.
CPU는 주로 다음의 세 가지 구성원소로 이루어져 있다.
- ALU (산술 논리 연산 장치): 계산기
- Register (레지스터): CPU 내부의 작은 (임시) 저장장치
- Control Unit (제어장치): 제어 신호라는 전기 신호를 내보내고, 명령어를 해석하는 장치
이때, 제어 신호란 컴퓨터 부품들을 관리하고 작동시키기 위한 전기 신호이다.
그 종류에는 여러가지가 있는데, 대표적으로는 Memory Read / Write 신호가 있다.
메모리 1번지의 주소에 제어신호를 'Memory Read' 로 보내, 1번지에 있는 명렁어를 가져온다.
1번지에 저장된 명령어는 CPU의 Register에 전달되는데, 이를 Control Unit에서 '명령어를 해석' 하여
메모리 3번지와 4번지에 있는 데이터를 읽어오기 위해 다시 한 번 'Memory Read'라는 제어신호를 보내게 된다.
이후 메모리의 3번지와 4번지에 있는 데이터를 CPU의 Register에 저장하게 되고 제어장치가 '명령어 해석'을 통해 ALU에 전달한 이후
ALU는 120과 100을 더한 후에 해당 결과를 Register에 저장하게 된다.
이후 두 번째 명령어를 읽기 위해 Control Unit에서 'Memory Read' 전기신호를 보내, 2번지에 저장된 명령어를 읽어온다.
그렇게 되면 제어장치는 해당 명령어를 해석하고, 연산 결과를 저장하기 위해 'Memory Write' 신호와 함께 Register에 저장된 220이라는 값을 Memory의 5번지에 저장한다.
실제로는 이것보다 더욱 복잡하지만, 아직은 CPU에 대해 자세하게 학습하지는 않았기에 이 정도로만 설명한다.
CPU에 대해 간단히 정리하자면 다음과 같다:
CPU는 메모리에 저장된 명령어를 읽어 들이고, 해석하고, 실행하는 부품이다.
CPU 내부에는 ALU, Register, Control Unit이 있다.
- ALU는 계산하는 장치
- Register는 CPU 안의 임시 저장 장치
- Control Unit은 제어 신호라는 전기 신호를 발생시키고, 명령어를 해석하는 장치
3.3) Auxillary Unit (보조 기억 장치)
보조 저장 장치가 왜 필요한가?
RAM과 같은 Main Memory는 전원을 끄면 정보가 사라지기 때문에 전원이 꺼져도 정보를 저장할 수 있는 장치가 필요하다.
그래서 등장한 것이 보조기억장치이다.
보조기억장치는 전원이 꺼져도 보관될 프로그램을 저장하는 장치이다.
메모리는 현재 실행되고 있는 프로그램의 명령어와 데이터를 저장하고,
보조기억장치는 실행되지 않는 프로그램의 명령어와 데이터를 저장한다.
즉 메모리는 실행할 프로그램의 명령어와 데이터를 저장하고, 보조기억장치는 실행하지 않는 프로그램의 명령어와 데이터를 저장한다.
메모리: 실행할 정보를 저장
보조기억장치: 보관할 정보를 저장
3.4) I/O Device (입출력장치)
입출력장치는 컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환할 수 있는 부품이다.
보조기억장치와 입출력장치는 딱 잘라 구분되는 개념은 아니다.
오히려 둘을 주변 장치(peripheral device)라 통칭하기도 한다.
따라서 보조기억장치는 메모리를 보조하는 특별한 입출력장치라 보자.
3.5) Mainboard
Mainboard는 컴퓨터의 네 가지 핵심 부품을 연결하는 부품(판)이다.
그리고 네 가지 부품들을 연결해서 부품들간의 정보를 주고받을 수 있게 하는 통로 중에서 중요한 통로를 System Bus라 한다.
Mainboard
- 메인보드에 연결된 부품은 버스를 통해 정보를 주고 받음
- 버스는 컴퓨터의 부품끼리 정보를 주고받는 일종의 통로
- 다양한 종류의 버스가 있음
- 컴퓨터의 핵심 부품을 연결하는 버스는 System Bus
System Bus의 내부 구성
- Address Bus: 주소를 주고받는 통로
- Data Bus: 명령어와 데이터를 주고받는 통로
- Control Bus: 제어 신호를 주고받는 통로
만약 메모리의 값을 읽어오고 싶다면 아래와 같이 작동한다.
즉, 메모리 1번지에 있는 명령어를 읽고 싶다면
Address Bus를 통해 1번지라는 주소를, Control Bus를 통해 Memory Read라는 제어신호를 전달한다.
만약 메모리에 값을 쓰고 싶다면 다음과 같이 작동한다.
즉, 메모리 5번지에 220이라는 데이터를 저장하고 싶다면
Address Bus를 통해 5번지라는 주소를, Data Bus를 통해 220이라는 데이터를
Control Bus를 통해 Memory Write라는 제어신호를 전달한다.