Priv's Blog
1. 컴퓨터 구조 본문
1. 컴퓨터 구조가 필요한 이유
프로그래머는 코드를 작성하는 일을 한다고 생각하기 쉽지만, 문제 상황을 빠르게 진단하고 해결책을 고민하기 위해서는 '컴퓨터 구조'에 대한 이해도 요구된다.
본인이 개발에 사용하는 컴퓨터에 이해가 뒷받침된다면 적합한 성능과 비용을 책정할 수도 있다.
물론, 클라우드 서버를 사용한다고 해도 예외는 아니다.
자신에게 필요한 개발 환경을 적합하게 구축하고, 이에 필요한 예산을 측정하고, 필요한 자원을 확보하는 능력은 프로그래머의 기본 소양이라 여기는 것이 좋다.
2. 컴퓨터 구조의 큰 그림
컴퓨터 구조의 지식은 '컴퓨터가 이해하는 정보'와 '컴퓨터의 4가지 핵심 부품'으로 나눠진다.
2.1) 컴퓨터가 이해하는 정보
모두가 알다시피 컴퓨터는 0, 1로 이루어진 정보만 이해할 수 있다.
이 0과 1로 표현되는 정보는 '데이터'와 '명령어'로 나눠볼 수 있다.
컴퓨터가 이해하는 숫자, 문자, 이미지, 동영상 등의 정적인 정보들을 데이터라고 부른다.
명령어는 이 데이터를 움직이고 컴퓨터를 작동시키는 정보라고 할 수 있다.
이 때문에 컴퓨터 프로그램은 '명령어들의 집합'이라고 표현할 수도 있다.
2.2) 컴퓨터의 4가지 핵심 부품
컴퓨터의 종류와 크기, 용도는 제각각이겠지만 그렇다고 해서 컴퓨터를 구성하는 핵심 요소들은 크게 다르지 않다.
CPU, Main Memory, Secondary Storage, IO가 바로 그것이다.
컴퓨터의 구성 요소들을 간략하게 그림으로 표현하면 위와 같다.
- 메모리
메모리는 현재 실행되는 프로그램의 명령어, 데이터를 저장하는 부품이다.
즉, 프로그램이 실행되기 위해서는 메모리가 필수적이다.
메모리에 데이터가 저장될 때는 항상 '주소'라는 개념을 사용한다.
컴퓨터가 요구하는 데이터에 접근하기 위해 사용하는 개념으로, 현실에서 사용되는 주소의 개념과 거의 동일하다.
- CPU
컴퓨터의 두뇌에 해당하는 CPU는 메모리에 저장된 명령어를 읽고, 해석하고, 실행하는 부품이다.
CPU의 구성 요소는 크게 ALU, Register, CU로 나눌 수 있다.
- ALU: 순전히 계산만을 위해 존재하는 부품이다. 컴퓨터 내부에서 수행되는 대부분의 계산을 수행한다.
- Register: CPU 내부에 위치한 임시 저장 장치로, 프로그램 실행에 필요한 값을 임시 저장한다.
- CU: 제어 신호(Control Signal)라는 컴퓨터 부품들을 관리하고 작동시키기 위한 일종의 전기 신호를 내보내고 명령어를 해석한다. CPU가 메모리의 값을 읽을 때는 '메모리 읽기' 제어 신호를 보내고, 메모리에 값을 쓸 때는 '메모리 쓰기'라는 제어 신호를 보낸다.
- 보조 기억 장치
앞에서 살펴본 CPU, 메모리는 속도는 빠르지만 가격이 상당히 비싸고 저장 용량은 적으며, 전원이 꺼지면 저장된 내용이 지워져 버린다는 단점이 있다.
여기서 전원이 꺼져도 내용이 저장될 수 있는 기억 장치가 보조 기억 장치이다.
보조 기억 장치는 가격이 싸고 저장 용량은 많으며, 전원이 꺼져도 저장된 내용이 지워지지 않는다.
하지만 상대적으로 속도가 상당히 느리다.
HDD, SSD 등이 대표적인 보조 기억 장치에 해당한다.
- 입출력 장치
마이크, 스피커, 마우스, 키보드 등 컴퓨터 외부에 연결되어 데이터를 주고받는(IO) 장치들을 말한다.
컴퓨터 외부에 연결되어 데이터를 주고받기 위해서는 '드라이버'라는 개념이 요구된다.
보조 기억 장치도 일종의 입출력 장치라고 볼 수 있으며, 보조 기억 장치와 입출력 장치를 통틀어서 '주변 장치'라고 부르기도 한다.
물론, 입출력 장치와 보조 기억 장치는 일단 서로 구분해 주는 것이 이해하기에 좋다.
- 메인보드와 시스템 버스
위에서 살펴본 핵심 컴퓨터 부품들은 메인보드(마더보드)라는 부품을 통해 연결, 동작된다.
메인보드에 연결된 부품들은 '버스(bus)'라는 데이터 송수신용 통로를 통해 데이터를 주고받을 수 있다.
여기서 CPU, 메모리, 보조 기억 장치, 입출력 장치와 같이 핵심 부품 4가지를 연결하는 버스를 시스템 버스라고 부른다.
시스템 버스는 주소 버스, 데이터 버스, 제어 버스로 구성된다.
- 주소 버스(Address Bus): 주소를 주고받는 통로이다.
- 데이터 버스(Data Bus): 명령어와 데이터를 주고받는 통로이다.
- 제어 버스(Control Bus): 제어 신호를 주고받는 통로이다.
CPU가 시스템 버스를 통해 메모리에 있는 값을 읽기 위해서는 아래와 같이 동작한다.
반대로 CPU가 메모리에 데이터를 쓸 때는 다음과 같이 동작한다.
수고하셨습니다!
'Dev. Study Note > Computer Architecture' 카테고리의 다른 글
6. 보조기억장치 (0) | 2023.03.28 |
---|---|
5. RAM (0) | 2023.03.26 |
4. CPU (0) | 2023.03.19 |
3. 명령어 (0) | 2023.03.12 |
2. 데이터 (0) | 2023.03.12 |