Chapter 01 컴퓨터 구조 시작하기
1. 컴퓨터 구조를 알아야 하는 이유
문제 해결
프로그래밍 언어의 문법만 알고 있는 사람
-> 컴퓨터 = 코드 입력하면 결과 내놓는 '미지의 대상'
<컴퓨터 구조 이해 시 장점>
- 문제 상황 빠르게 진단
- 문제 해결의 실마리 다양하게 찾음
=> 문제 해결 능력 향상
=> 미지의 대상이 아닌 '분석의 대상'
성능, 용량, 비용
컴퓨터 선택에 따라 성능, 용량, 비용이 달라짐
=> 저렴한 제품이 무조건 좋은 것 X
개발한 프로그램을 위한 최적의 컴퓨터 환경을 스스로 판단해야 함
=> 입출력에만 집중하는 개발 X 성능, 용량, 비용까지 고려하는 개발자 O
2. 컴퓨터 구조의 큰 그림
Key Word: 데이터 / 명령어 / 메모리 / CPU / 보조기억장치 / 입출력장치 / 시스템 버스
<알아야 할 컴퓨터 구조 지식>
- 컴퓨터가 이해하는 정보
- 데이터
- 명령어
- 컴퓨터의 4가지 핵심 부품
- CPU
- 메모리
- 보조기억장치
- 입출력장치
CPU-Z: 컴퓨터에 설치된 부품 사양 확인
레지스터 → (Cache_L1 Data: 가장 빠름 (→ L2 → L3)) → Memory → 보조기억장치
- 레지스터: 연산을 실행하기 위해 가지고 있는 위치
- 캐시: 조금 더 빠르게 만들려고 생겨남
- SHA: 암호화/ x86-64, M1
컴퓨터가 이해하는 정보
컴퓨터는 0과 1로 표현된 정보만을 이해
0과 1로 표현된 정보(= 컴퓨터가 이해하는 정보): 데이터 / 명령어
데이터(data)
- (숫자, 문자, 이미지, 동영상과 같은) 정적 정보
- 컴퓨터와 주고받는 정보
- 컴퓨터에 저장된 정보
명령어(instruction)
- 데이터를 움직이고 컴퓨터를 작동시키는 정보
- 실질적으로 컴퓨터를 작동시키는 더 중요한 정보
예시
1과 2를 더하라 -> 데이터: 1, 2 / 명령어: 더하라, 1과 2를
안녕하세요를 화면에 출력하라 -> 데이터: 안녕하세요 / 명령어: 화면에 출력하라, 안녕하세요를
USB 메모리에 cat.jpg를 저장하라 -> 데이터: cat.jpg / 명령어: USB 메모리에 저장하라, cat.jpg를
=> 데이터: 명령어를 위해 존재하는 일종의 재료 / 명령어: 컴퓨터를 작동시키는 정보
-> 컴퓨터 프로그램 = 명령어들의 모음
컴퓨터의 4가지 핵심 부품
- 중앙처리장치(CPU; Central Processing Unit)
- 주기억장치(메모리; main memory)
: RAM(Random Access Memory) / ROM(Read Only Memory) - 보조기억장치(secondary storage)
- 입출력장치(input/output(I/O) device)
CPU
컴퓨터의 두뇌
메모리에 저장된 명령어를 읽어 들이고, 읽어 들인 명령어 해석하고, 실행하는 부품
<CPU 내부 구성 요소 3가지>
- 산술논리연산장치(ALU; Arithmetic Logic Unit)
- 계산만을 존재하는 부품/ 계산기
- 컴퓨터 내부에서 수행되는 대부분의 계산
- 레지스터(register)
- 작은 임시 저장 장치
- 프로그램 실행 시 필요한 값들을 임시로 저장
- 여러 개의 레지스터 존재, 각기 다른 이름과 역할 가짐
- 제어장치(CU; Control Unit)
- 제어 신호(control signal)라는 전기 신호를 내보내고 명령어를 해석하는 장치
- 제어 신호: 컴퓨터 부품들을 관리하고 작동시키기 위한 일종의 전기 신호
- CPU가 메모리에 저장된 값 읽고 싶을 때 -> 메모리를 향해 '메모리 읽기' 제어 신호 보냄
- CPU가 메모리에 어떤 값 저장하고 싶을 때 -> 메모리를 향해 '메모리 쓰기' 제어 신호 보냄
- 제어 신호(control signal)라는 전기 신호를 내보내고 명령어를 해석하는 장치
제어장치) 메모리 읽기(제어 신호) -> 1번지에 저장된 명령어 읽음
저장된 명령어: 더하라, 3번지와 4번지를
-> 메모리) 1번지에 저장된 명령어 -> CPU(레지스터)
-> 제어장치) 명령어 해석(3번지와 4번지 데이터가 필요 판단) -> 메모리에 읽기(제어 신호) 보냄
-> 메모리) 3번지와 4번지에 저장된 데이터 -> CPU(서로 다른 레지스터)
-> ALU) 연산 수행(120+100) -> 레지스터
제어장치) 메모리 읽기(제어 신호) -> 2번지에 저장된 명령어 읽음
저장된 명령어: 저장하라, 연산 결과를
-> 메모리) -> 2번지에 저장된 명령어 -> CPU(레지스터)
-> 제어장치) 명령어 해석(메모리에 계산 결과 저장) -> 메모리에 쓰기(제어 신호) + 계산 결과(220) 보냄
CPU 한계 O, GPU 한계 X → GPU) 병렬 처리, 순서 상관 없이 실행도 됨
하드웨어 올려서 속도 증가 시키는 것은 한계가 옴
But, 소프트웨어(알고리즘) 변경 → 속도 빨라짐
<정리>
- CPU는 메모리에 저장된 값을 읽어 들이고, 해석하고, 실행하는 장치
- CPU 내부에는 ALU, 레지스터, 제어장치가 있음
- ALU는 계산하는 장치, 레지스터는 임시 저장 장치, 제어장치는 제어 신호를 발생시키고 명령어를 해석하는 장치
메모리
- 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품
- 프로그램이 실행되려면 반드시 메모리에 저장되어 있어야 함
컴퓨터가 빠르게 작동 -> 메모리 속 명령어와 데이터 중구난방 저장 X 위치 정돈 O
=> 저장된 값에 빠르고 효율적인 접근 -> 주소(address) 사용
주소 ~> 메모리 내 원하는 위치에 접근 가능
<정리>
- 프로그램이 실행되기 위해서는 반드시 메모리에 저장되어 있어야 함
- 메모리는 현재 실행되는 프로그램의 명령와 데이터를 저장
- 메모리에 저장된 값의 위치는 주소로 알 수 있음
보조기억장치
<메모리 단점>
- 가격 ↑ -> 저장 용량 ↓
- 전원 꺼지면 저장된 내용 잃음
=> 메모리보다 크기 ↑ + 전원 꺼져도 저장된 내용 잃지 X 메모리 보조할 저장 장치 = 보조기억장치
ex. 하드 디스크, SSD, USB 메모리, DVD, CD-ROM
- 메모리: 현재 '실행되는' 프로그램 저장
- 보조기억장치: '보관할' 프로그램 저장
입출력장치
(마이크, 스피커, 프린터, 마우스, 키보드와 같이) 컴퓨터 외부에 연결
-> 컴퓨터 내부와 정보를 교환하는 장치
Q: 보조기억장치로 알고 있던 하드 디스크, USB 메모리, CD-ROM도 컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환할 수 있는 장치로 볼 수 있지 않나?
A: 보조기억장치는 관점에 따라 입출력장치의 일종으로 볼 수 있다.
=> 보조기억장치와 입출력장치: 주변장치(peripheral device)_컴퓨터 주변에 붙어있는 장치
But, 보조기억장치는 입출력장치에 비해 메모리를 보조하는 특별한 기능 수행
메인보드와 시스템버스
컴퓨터 핵심 부품들은 메인보드라는 판에 연결
ㄴ메인보드(main board) = 마더보드(mother borad)
메인보드 내부에 버스(bus)라는 다양한 통로 O
-> 메인보드에 연결된 부품들은 서로 정보를 주고 받을 수 있음
가장 중요한 버스: 시스템 버스(system bus)
<시스템 버스>
- 주소 버스(address bus): 주소를 주고받는 통로
- 데이터 버스(data bus): 명령어와 데이터를 주고받는 통로
- 제어 버스(control bus): 제어 신호를 주고받는 통로
CPU가 메모리 속 명령어 읽어 들이기 위해 (제어장치)에서 '메모리 읽기'라는 신호 보냄
=> (제어 버스)로 '메모리 읽기' 신호 + (주소 버스)로 읽고자 하는 주소 보냄
-> 메모리는 (데이터 버스)로 CPU가 요청한 주소에 있는 내용 보냄
메모리에 어떤 값 저장
CPU는 (데이터 버스) 메모리에 저장할 값 + (주소 버스) 저장할 주소 + (제어 버스) '메모리 쓰기' 제어 신호 보냄
출처
'Computer Science > 컴퓨터구조 | 운영체제' 카테고리의 다른 글
[혼자 공부하는 컴퓨터구조+운영체제] Chapter 03 명령어 (0) | 2024.01.05 |
---|---|
[혼자 공부하는 컴퓨터구조+운영체제] Chapter 02 데이터 (0) | 2024.01.05 |
CH7. Memory Management (0) | 2022.05.20 |
CH6. CPU Scheduling (0) | 2022.05.19 |
CH5. Process Synchronization (0) | 2022.05.19 |