본 게시물은 ‘강민철, ⌜혼자 공부하는 컴퓨터구조 + 운영체제⌟, 한빛미디어, 2022’ 을 인용하였습니다.
1. 컴퓨터 구조를 알아야 하는 이유
- 문제 해결의 실마리를 다양하게 찾을 수 있다.
- 문법만으로는 알기 어려운 성능, 용량, 비용을 고려해 개발할 수 있다.
2. 컴퓨터 구조의 큰 그림
2-1. 컴퓨터가 이해하는 정보
- 데이터(data) : 컴퓨터가 이해하는 숫자, 문자, 이미지, 동영상 등 정적인 정보
- 명령어(instruction) : 데이터를 움직이고 컴퓨터를 작동시키는 정보
2-2. 컴퓨터의 4가지 핵심 부품
Preview
- 중앙처리장치(CPU; Central Processing Unit)
- 주기억장치(Main memory, 메모리)
- RAM(Random Access Memory) == 메모리
- ROM(Read Only Memory)
- 보조기억장치(Secondary storage)
- 입출력장치(I/O Device)
메모리
- 현재 실행되는 프로그램의 명령어/데이터 저장하는 부품
- 즉, 프로그램이 실행되려면 반드시 메모리에 저장되어야 함
- 빠른 작동 위해서는 저장된 명령어, 데이터 위치가 정돈되어 있어야 함
- 저장된 값에 빠르고 효율적인 접근 위해 ‘주소(address)’ 개념 사용
- 저장된 값의 위치를 주소를 통해 알 수 있음
CPU
- 메모리에 저장된 명령어를 읽어 들이고, 읽어 들인 명령어를 해석/실행하는 부품
- CPU 내부 구성 요소
- 산술논리연산장치(ALU; Arithmetic Logic Unit) : 컴퓨터 내부의 수행되는 대부분 계산 수행
- 레지스터(Register) : CPU 내부의 작은 임시 저장 장치
- 제어장치(CU; Control Unit) : 제어 신호(control signal) 내보내고 명령어를 해석하는 장치
- 제어 신호 : 컴퓨터 부품 관리/작동 위한 일종의 전기 신호
- CPU가 메모리에 저장된 값을 읽고 싶을 땐 메모리 향해 ‘메모리 읽기’ 제어 신호 전송
- CPU가 메모리에 어떤 값을 저장하고 싶을 땐 메모리 향해 ‘메모리 쓰기’ 제어 신호 전송
- CPU가 메모리의 명령어를 실행하는 과정
1. 제어장치는 1번지에 저장된 명령어를 읽기 위해 메모리에 ‘메모리 읽기’ 제어 신호 전송
2.
① 메모리는 1번지에 저장된 명령어를 CPU에 건네줌 → 레지스터에 저장됨
② 제어장치는 읽어 들인 명령어 해석 후, 3번지/4번지에 저장된 데이터가 필요하다고 판단
③ 제어장치는 3번지/4번지에 저장된 데이터를 읽기 위해 메모리에 ‘메모리 읽기’ 제어 신호 전송
3.
① 메모리는 3번지/4번지에 저장된 데이터를 CPU에게 건네줌 → 서로 다른 레지스터에 저장됨
② ALU가 읽어 들인 데이터로 연산 수행
③ 계산의 결과값은 레지스터에 저장됨
계산이 끝나면, 첫 번째 명령어 실행이 종료됨
4.
① 제어장치는 2번지에 저장된 다음 명령어를 읽기 위해 ‘메모리 읽기’ 제어 신호 전송
② 메모리는 2번지에 저장된 명령어를 CPU에게 건네줌 → 레지스터에 저장됨
③ 제어장치는 해당 명령어 해석 뒤, 메모리에 계산 결과를 저장해야 한다고 판단
④ 제어장치는 계산 결과를 저장하기 위해 메모리에 ‘메모리 쓰기’ 제어 신호와 함께 계산 결괏값인 220을 보냄
메모리가 계산 결과를 저장하면 두 번째 명령어 실행도 끝남
보조기억장치
- 메모리 단점 : 가격, 휘발성
- 보조기억장치는 메모리보다 크기가 크고 비휘발성인 저장 장치
- 보조기억장치 예시 : HDD, SSD, USB, CD-ROM, DVD 등
- 메모리에 현재 ‘실행되는’ 프로그램을 저장한다면
보조기억장치는 ‘보관할’ 프로그램을 저장하는 것
입출력장치
- 마이크, 스피커, 프린터, 마우스, 키보드 등과 같이 컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환하는 장치
메인보드와 시스템 버스
- 메인보드(main board) : 컴퓨터 핵심 부품들이 연결되는 판
- 여러 컴퓨터 부품을 부착할 수 있는 슬롯, 연결 단자 있음
- 메인보드에 연결된 부품들은 서로 정보를 주고받을 수 있음 → 버스(bus) 통로 덕분
- 시스템 버스(system bus) : 컴퓨터 내부의 여러 버스 가운데 가장 중요한 버스
- 주소 버스(address bus) : 주소 주고받는 통로
- 데이터 버스(data bus) : 명령어/데이터 주고받는 통로
- 제어 버스(control bus) : 제어 신호 주고받는 통로
- CPU 작동 예시 - 값 읽기
- 제어 버스로 ‘메모리 읽기’ 제어 신호 전송
- 주소 버스로 읽고자 하는 주소 전송
- 메모리는 데이터 버스로 CPU가 요청한 주소에 있는 내용 전송
- 데이터 버스 통해 메모리 저장할 값
- 주소 버스 통해 저장할 주소
- 제어 버스 통해 ‘메모리 쓰기’ 제어 신호 전송