# Table of Contents

# 문자 인코딩

  • 문자를 컴퓨터가 인식 가능한 비트열로 변환하는 것

# ASCII

  • 영어 알파벳을 표현하는 문자 인코딩 방식
  • 7비트로 한 문자를 표현하고, 1개는 패리티 비트로 사용한다.
  • 개의 문자를 표헌할 수 있다.

# 유니코드

  • 전 세계의 언어를 표현할 수 있는 문자 인코딩 방식
  • UTF-8:
    • 가변길이 문자열 인코딩
    • 1~4 바이트

# 컴퓨터 구조

# CPU

  • Processor라고도 한다.
  • 컴퓨터를 제어하는 핵심 장치. 인간의 뇌와 같다.

# CPU의 구성요소

# ALU

  • Arithmetic Logic Unit
  • 산술 연산, 논리 연산을 처리하는 디지털 회로

# Register

  • CPU 내부의 기억장치
  • Register의 크기는 CPU가 한 클럭에 처리할 수 있는 비트 수다.
    • PC: Program Counter. 다음 실행할 명령어의 메모리 주소를 저장한다.
    • IR: Instruction Register. 현재 실행 중인 명령어를 저장한다.

# CU

  • Control Unit
  • 메모리의 명령어를 패치, 해독하고 적절한 제어 신호를 각 장치에 보낸다.

# Bus

  • ALU, Register, CU를 연결하고 데이터가 전송되는 통로

# CPU 아키텍처

# CISC

  • Complex Instruction Set Computer
  • 명령어의 길이가 가변적이다.
  • 하나의 명령어로 최대한 많은 작업을 한다.
  • 모든 명령어를 하드웨어적으로 구현한다.
  • Intel, AMD의 x86, x64 제품군
  • 주로 PC, Server에 사용된다.

# RISC

  • Reduced Instruction Set Computer
  • 명령어의 길이가 고정되어있다.
  • 하나의 명령어로 하나의 작업을 수행한다.
  • RISC에서 자주 사용하는 명령어만 하드웨어적으로 구현하고, 복잡한 명령어는 소프트웨어적으로 구현한 형태다.
  • 자주 사용하는 명령어를 캐싱할 수 있다.
  • ARM 제품군
  • 주로 모바일 AP에 사용된다.

# AP

  • Application Processor
  • SoC(System on a Chip)이라고도 한다.
  • CPU, RAM, GPU 등이 한 개의 칩에 들어가는 것을 의마한다.
  • 주로 ARM에서 아키텍쳐를 설계하며, 이를 커스터마이징한 삼성 엑시노스, 퀄컴 스냅드래곤, 애플 실리콘 등의 제품군이 있다.

# GPU

  • Graphic Processing Unit
  • 그래픽 처리장치
  • CPU가 복잡한 연산을 빠르게 처리한다면, GPU는 단순하고 양이 많은 연산을 빠르게 병렬처리한다.
  • 그래픽, 빅데이터, 인공지능, 암호화폐 채굴 등 대용량 데이터 처리 분야에 활용된다.
  • 엔비디아

# RAM

  • Randon Access Memory
  • Random Access 방식이기 때문에 접근 속도가 일정하다.
  • 재부팅하면 정보가 사라지는 휘발성 메모리

# DRAM

  • Capacitor를 사용하며, 재충전이 필요하기 때문에 SRAM에 비해 느리다.
  • 하지만 구조가 단순해서 집적도를 높이기 쉽다.
  • 주메모리에 많이 사용된다.

# SRAM

  • Flip Flop을 사용하며, 재충전이 필요없기 때문에 DRAM보다 훨씬 빠르다.
  • 하지만 구조가 복잡해서 집적도를 높이기 어렵고 비싸다.
  • Cache Memory에 주로 사용된다.

# ROM

  • Read Only Memory
  • 읽기 전용 메모리로 데이터를 변경할 수 없거나 특수한 방법으로 기존 데이터를 모두 지운 후 재기록할 수 있다.
  • 비휘발성 메모리이기 때문에 전력이 차단되도 데이터가 유지된다.
  • 읽기 속도는 RAM에 비해 훨씬 빠르다.
  • BIOS 같이 부팅 시 가장 먼저 실행되어야 하는 소프트웨어를 주로 저장한다.

# EEPROM

  • Electrically Erasable Programmable Read Only Memory
  • 전기적으로 메모리 전체를 삭제 후 재기록할 수 있다.
  • 읽기 속도는 매우 빠르지만 쓰기 속도는 느리다. ROM은 덮어쓰기가 불가능하고 전체를 삭제한 후 재기록 해야하기 때문이다.

# Flash Memory

  • EEPROM에서 발전한 메모리
  • EEPROM은 메모리 전체를 삭제하고 재기록하지만 Flash Memory는 바이트 단위로 삭제 후 재기록할 수 있다.
  • 작고 빠르기 때문에 다양한 온갖 전자제품에 사용되며 USB 메모리, SSD에도 사용된다.

# 보조 기억장치

# HDD

  • Hard Disk Drive
  • 회전 디스크에 데이터를 저장한다.
  • 암(Arm)이 물리적으로 디스크를 회전하여 데이터를 읽고 쓰기 때문에 속도가 느리다.
  • 또한 전력소모가 크다.

# SSD

  • Solid State Drive
  • 쓰기 속도는 느리지만 읽기 속도가 빠른 Flash Memory 여러 개를 마치 RAID 0 방식으로 구성하여 느린 쓰기 속도를 극복한다.
  • HDD보다 훨씬 빠른 속도를 자랑한다.
  • 스마트폰 뿐만 아니라 노트북 분야에도 많이 사용되고 있다.

# 캐시 메모리

  • CPU와 주기억장치 사이에 위치하여 속도 향상을 가져온다.
  • SRAM을 사용하기 때문에 DRAM을 사용하는 주 메모리보다 속도가 빠르다.
  • 캐시 메모리는 시간 지역성, 공간 지역성 개념에서 출발한다.
  • 주 메모리에서 읽어온 데이터를 캐시메모리에 저장하고, 다음 접근 때 캐시메모리에서 데이터를 읽어온다.
  • 찾는 데이터가 캐시 메모리에 있는 비율을 Hit Ratio라고 한다.
  • 찾는 데이터가 캐시 메모리에 없어 주메모리를 탐색하는 시간을 Miss Penalty라고 한다.

# 가상 메모리

  • 주기억장치보다 더 큰 프로그램을 실행하기 위해 보조 기억장치의 영역 일부를 주기억장치처럼 사용하는 것
  • 프로그램을 페이지(Page)라는 단위로 분할하고, 현재 실행중인 페이지만 주기억장치에 로드하여 실행한다.

# RAID

  • 저장장치 여러개를 묶어 논리적으로 고성능, 안정성이 있는 저장장치 한 개 같은 효과를 얻기 위한 기법
  • 주 사용 목적은 고성능(Striping)안전성(Mirroring)에 있다.

# RAID 0

  • 고성능(Striping)
  • 일반적으로 입출력 속도는 CPU의 처리속도보다 훨씬 느리다.
  • RAID 0은 여러 저장장치에 데이터를 분산하여 저장한다.
  • 한 저장장치에 데이터가 저장되는 동안 CPU는 쉬지않고 다른 저장장치에 데이터를 저장한다.
  • 이론적으로 저장장치가 N개라면 속도는 N배가 된다.
  • 저장장치가 하나라도 고장나면 데이터 전체가 파손되기 때문에 안정성이 떨어진다.

# RAID 1

  • 안정성(Mirroring)
  • 동일한 데이터를 여러 디스크에 중복 저장한다.
  • 디스크 중 하나라도 살아남은 데이터는 보존된다.

# RAID 2, 3, 4, 5

  • 디스크에 데이터를 저장할 때 오류를 검출할 수 있는 Parity bit를 함께 저장한다.