컴퓨터 구조를 배우는 이유?
- 매일 컴퓨터를 사용하기 때문에
- 남은 생애동안 컴퓨터 쓸 가능성 높으니까
- 우리는 CS 공부에 관심이 많으니까
- 컴퓨터 구조는 CS에서 가장 기본적인 내용이니까. 컴퓨터가 없으면 CS도 존재하지 않음
💻 Class of Computing Applications
1. PC (Personal Computer)
- 크기, 성능, 가격이 만족스러운 다목적 microcomputer
- 가성비(크기, 성능 및 가격) 이 고려대상
- individual use - 각자의 용도에 맞게 개인적으로 사용
PC의 구성요소
- 컴퓨터 케이스
- 전원 공급 장치
- 마더보드(=메인보드) : 컴퓨터를 구성하는 모든 하드웨어(CPU, 메모리, SSD, RAM등)들을 연결하는 전자회로 기판
- RAM(Random Acess Memory) : =컴퓨터 메모리. 읽고 쓰기가 가능한 주기억 장치.
- 하드 디스크 : 주기억장치를 보조하는 보조기억장치. 파일과 데이터를 장기적 저장
- 외부 장치(모니터, 키보드, 디스플레이 등)
2. Server
- 동시에 multiple user를 위해 더 큰 프로그램을 실행하는 데 사용되는 컴퓨터
- 일반적으로 네트워크를 통해서만 액세스
- PC와 동일한 기본 기술로 구축되지만 더 큰 (컴퓨팅, 용량, Input/output 용량)
3. Supercomputer
- extreme한 서버 (서버를 확장한 개념. 서버들의 집합체)
- 매우 큰 비용, 용량, 많은 프로세서를 가진 서버
- 성능과 비용이 가장 높은 컴퓨터 class -> 과학 계산, 엔지니어링 쪽. 전체 컴퓨터 시장에서 가장 작은 부분 차지
4. Embedded computer
- 하나의 pre-determined application(미리 설정된 기능) 또는 소프트웨어 모음을 실행하는데 사용되는 다른 장치 내부의 컴퓨터 -> 세탁기, 냉장고.. 등등
- 크기가 작아 여러 기능을 수행하지 못하고 정해진 기능만 수행
- 일반적으로 하드웨어랑 통합
+)PMD (Personal Mobile Device)
- 오늘날의 스마트폰, 태블릿
- 무선 인터넷 연결로 작동되는 배터리
- pc와 달리 키보드, 마우스x
- 터치 스크린에 의존
Cloud computing 클라우드 컴퓨팅
- 인터넷을 통해 호스팅 서비스(애플리케이션과 웹 사이트를 인터넷에서 사용할 수 있도록 하는 기능)를 제공
- local drive가 아닌 인터넷의 원격 서버를 사용하여 데이터를 저장, 관리 그리고 접근하는 기술
- 장점 - 비용 절감, 민첩성 및 가치 실현 시간 개선(하드디스크 연결하는 시간 필요x,구매를 위해 기다릴 필요x)
- 인터넷이 끊기면 쓸 수 없는가? 그럴수도 있고 아닐 수도 있음. 원칙적으로는 그러하나 미리 컴퓨터 내부적으로 데이터를 저장하여 쓸 수 있는 경우도 있다.
10진수/ 2진수 값
- 저장장치의 표기 용량(십진수)과 실제용량(이진수)에는 진법의 차이가 있다→ 십진수 저장용량/ 이진수 값 =실제 용량

PostPC Era
- 현재 우리 시대 → PC하나만 보유X, 다양하게 확장. 스마트폰이 압도적으로 많음
컴퓨터 구조에서 8가지의 위대한 아이디어
(대부분 pc의 속도 관점에서의 성능 증가와 관련)
(1) 무어의 법칙에 따른 설계

무어의 법칙 IC(직접 회로)의 트랜지스터 수가 약 2년마다 두 배로 증가한다는 고찰→ 트랜지스터 개수가 증가하면 처리 속도가 빨라지게 된다. 이렇게 성능을 상승시킨 기술들이 GREAT하다
(지금은 많이 깨진 법칙)
(2) abstraction(추상화)를 통한 디자인의 간편화, 간소화
low-level의 기계어를 higher-lever(ex - C언어, 파이썬..) 로 만들어 코드를 간편하게 표현한다.
(3) common case를 빠르게 만든다
CPU 연산과 같이 반복적인 동작은 RAM 같은 휘발성 메모리에 저장하여 빠르게 처리한다.
(4) parallelism(병렬처리)를 통한 성능
(5) pipelining(파이프라이닝)을 통한 성능
pipelining : 일종의 분담작업. 한 번에 하나의 명령어만 실행x 하나의 명령어가 실행되는 도중 다른 명령어를 실행. (순차적으로 하나씩 수행x) → 시간을 효율적으로.

(6) prediction(예측)을 통한 성능 향상
dictionary 같이 미리 컴퓨터 내부적으로 정의되어 있는 값을 이용하여 instruction을 줄인다.
(7) 메모리의 계층 구조(hierarchy)

좋은 메모리 -> 윗 부분으로 갈 수록 동작과 접근이 많고, high level이며, 속도가 빠르다.
(8) redundancy(중복성)을 통한 신뢰성
같은 연산을 하는 것을 redundant하게 두어서 한 부분이 고장나도 속도를 유지할 수 있도록 한다.
Below our programs

소프트웨어 계층의 구성
-
Applications software
- 구체적인 기능을 수행하는 컴퓨터 프로그램
- 각각의 어플리케이션은 특정 task를 수행하여 user를 assist하도록 설계
- ex - 유튜브, gmail, word..
-
Systems software
- 컴퓨터 시스템 운영에 필요한 프로그램
- 컴퓨터 하드웨어와 어플리케이션을 실행하기 위해 설계됨
- OS - 하드웨어 자원을 관리해주는 소프트웨어 ex - 윈도우, 리눅스.. 등등
- 컴파일러 - highlevel 언어로 쓰여진 프로그램을 low-level 언어(binary code)로 번역하여 컴퓨터가 이해하도록 하는 역할
-
Hardware
-
컴퓨터 시스템의 물리적 장치 또는 장비
-
만질 수 있음. 볼 수 있음.
-
5가지 종류의 하드웨어 - 중앙처리장치(CPU), 출력장치, 주기억장치, 보조기억장치, 입력장치

High-level language to Hardware Language
- High-level program languages : word와 대수 표기법(algebraic notation)으로 구성된 이식가능한(porable) 언어. 컴퓨터가 이해할 수 없음
- Assembly languages : instruction의 상징적 표현. 주소값, 연산에 대한 명령어 등등.. high level에서 low level로 거쳐가는 중간단계
- Binary machine languages : instruction의 이진 표현. 컴퓨터가 이해할 수 있음. 왜 컴퓨터는 이진수만 이해할 수 있을까? 전기적신호로 동작하여 on/off로만 구성하여 error 발생되지 않도록.
Organization of computer
Five components - Control, Input, Output, Memory, Processor(실제 동작 수행), Datapath(cpu 안에서 data와 address를 처리하는 모든 요소)
단위 비용당 성능 향상
- 기술의 단위 비용당 상대적인 성능
- 1세대 컴퓨터 (1950년대)= 진공관 - 2진 연산 만 가능. 불편함 많았음
- 2세대 컴퓨터(1960년대)= 트랜지스터 - 반도체의 등장. 전기적 신호로 on/off 조절. 간략한 코딩
- 3세대 컴퓨터(1970년대) = 직접회로(IC) - 하나의 칩 안에 몇백개의 트랜지스터
- VLSI(Very Large Scale Integrated circuit) - 우리가 알고 있는 컴퓨터 단계. 수백만개의 트랜지스터를 포함하는 기기.
단위 비용당성능의 눈부신 성장
DRAM의 성능 향상
RAM: Hard와 memory 사이 일종의 중간 단계로 자주 수행하는 동작을 저장하는 임시 memory이다. 이를 통해 처리 속도가 향상된다. hard disk와 달리 전원 off시 데이터가 소멸된다.
DRAM - 저장된 데이터가 시간과 전원의 끊김에 따라 소멸되는 RAM
3년마다 4배의 성능이 향상되고 있다.
이 포스트는 경희대학교 컴퓨터공학과 김정욱 교수님의 컴퓨터 구조 수업을 기반으로 작성되었습니다.