본문 바로가기
et cetera/Computer Architecture, Operating System

[혼공컴운] 3주차_Chapter 06~08

by 양진주 2024. 1. 21.
기본 미션
p. 185의 확인 문제 3번, p. 205의 확인 문제 1번 풀고 인증하기

선택 미션
Ch.07(07-2) RAID의 정의와 종류를 간단히 정리해 보기

 

Chapter 0️⃣6️⃣

1) RAM의 특징과 종류 

휘발성 저장 장치: 전원을 끄면 저장된 명령어와 데이터가 모두 날아감 

e.g. 메모리(RAM) - 현재 "실행되는" 프로그램의 명령어 + 데이터 저장 [Chapter 01]

 

비휘발성 저장 장치: 전원이 꺼져도 저장된 내용 유지 but CPU가 직접 접근하지 못함 ➡️ RAM으로 복사하여 저장한 뒤 실행 

e.g. 보조기억장치(하드 디스크, SSD, CD-ROM, USB 메모리) -  "보관할" 프로그램의 명령어 + 데이터 저장 [Chapter 01]

 

RAM 용량 ⬆️ ➡️ 프로그램 실행 시간 ⬆️

 

RAM 종류

DRAM(Dynamic RAM): 시간이 지나면 저장된 데이터 소멸 ➡️ 일정 주기로 데이터 재활성화(다시 저장)

SRAM(Static RAM): 시간이 지나도 저장된 데이터 소멸 ❌

  DRAM SRAM
재충전 필요 필요 ❌
속도 ⬇️ ⬆️
가격 ⬇️ ⬆️
집적도 ⬆️ ⬇️
소비 전력 ⬇️ ⬆️
사용 용도 주기억장치(RAM) 캐시 메모리
[Chapter 06 -3]

 

SDRAM(Synchronous Dynamic RAM): 클럭에 맞춰 동작하며 클럭마다 CPU와 정보 교환하는 DRAM

DDR SDRAM(Double Data Rate SDRAM): 대역폭 * 2 ➡️ 속도를 빠르게 만든 SDRAM

DDR2 SDRAM: 대역폭 * 4, DDR3 SDRAM: 대역폭 * 8 ...

↕️

SDR SDRAM(Single Data Rate SDRAM)

 

❓기본 미션
Q. 다음 설명을 읽고 SRAM에 대한 설명인지 DRAM에 대한 설명인지 쓰세요
- 주로 캐시 메모리로 활용됩니다. (     )
- 주로 주기억장치로 활동됩니다. (     )
- 대용량화하기 유리합니다. (     )
- 집적도가 상대적으로 낮습니다. (     )

A. SRAM, DRAM, DRAM, SRAM

 

2) 메모리의 주소 공간

물리 주소: 메모리 사용, 정보가 실제로 저장된 하드웨어상의 주소

논리 주소: CPU&실행 중인 프로그램 사용, 실행 중인 프로그램 각각에게 부여된 0번지부터 시작되는 주소, 프로그램의 시작점(베이스 레지스터)로부터 떨어진 거리 

 

메모리 관리 장치 :CPU가 발생시킨 논리 주소 + 베이스 레지스터 값(= 프로그램의 최소 물리 주소)

➡️ 논리 주소 ↔️ 물리 주소 변환 ➡️ CPU ↔️ 메모리 상호작용 

 

❗ 다른 프로그램의 영역을 침범할 수 있는 명령어

      ➡️ 한계 레지스터: 논리 주소의 최대 크기, 명령어 실행 방지(트랩 인터럽트 발생)&실행 중인 프로그램이 다른 프로그램에 영향 받지 않도록 보호 

∴ 베이스 레지스터 값 ≤ 프로그램의 물리 주소 < 베이스 레지스터 값 + 한계 레지스터 값 

 

3) 캐시 메모리 

<저장장치>

- CPU와 거리⬇️ → 속도 ⬆️ / 거리 ⬆️ → 속도 ⬇️

- 속도 ⬆️: 용량 ⬇️ 가격 ⬆️

 

저장 장치 계층 구조: 'CPU에 얼마나 가까운가'

CPU: 프로그램을 실행하는 과정에서 빈번히 메모리 접근 ➡️ 메모리에 접근하는 속도도 빨라야 함 ➡️ 캐시 메모리 등장 

캐시 메모리: 메모리에서 CPU가 사용할 데이터를 예측하여 미리 캐시 메모리로 가지고 와서 활용 

 

코어와의 거리: L1 캐시 ➡️ L2 캐시 ➡️ L3 캐시

 

➕ 분리형 캐시

L1I 캐시(명령어 저장) / L1D 캐시(데이터 저장) ➡️ 접근 속도 ⬆️

 

캐시 히트: 자주 사용될 것으로 예측한 데이터가 실제로 들어맞음 ➡️ 캐시 메모리 내 데이터 CPU에서 활용 

↕️

캐시 미스: 예측이 틀림 ➡️ 메모리에서 필요한 데이터를 직접 가져옴 ➡️ 성능 ⬇️

캐시 적중률 = 캐시 히트 횟수 / (캐시 히트 횟수 + 캐시 미스 횟수)

 

<참조 지역성의 원리> ➡️ CPU가 사용할 법한 데이터 예측 

- 시간 지역성: CPU는 최근에 접근했던 메모리 공간에 다시 접근하려는 경향이 있다. 

- 공간 지역성: CPU는 접근한 메모리 공간 근처를 접근하려는 경향이 있다. ( ∵ 관련 있는 데이터끼리 모여서 저장됨)

❓기본 미션 
Q. 다음 보기에 있는 저장 장치들로 저장 장치 계층 구조 도식도를 채우세요. 
A. 레지스터, 캐시 메모리, 메모리, 보조기억장치 

 

Chapter 0️⃣7️⃣

1) 다양한 보조기억장치

하드 디스크(자기 디스크): 자기적인 방식으로 데이터 저장 

 

플래터: 하드 디스크에서 실질적으로 데이터가 저장되는 곳

스핀들: 플래터를 회전시키는 구성 요소 (RPM 15,000 = 1분에  15,000바퀴를 회전하는 하드 디스크)

헤드: 플래터를 대상으로 데이터를 읽고 쓰는 구성 요소 

디스크 암: 원하는 위치로 헤드를 이동 

 

트랙: 플래터를 동신원으로 나누었을 때 그중 하나의 원

섹터(= 하드 디스크의 가장 작은 전송 단위): 트랙의 한 조각, 일반적으로 512byte 

실린더: 여러 겹의 플래터 상에서 같은 트랙이 위치한 곳을 모아 연결한 논리적 단위

연속된 정보를 한 실린더에 기록 ➡️ 디스크 암을 움직이지 않고도 바로 데이터에 접근 가능 

 

저장된 데이터에 접근하는 시간

- 탐색 시간: 접근하려는 데이터가 저장된 트랙까지 헤드를 이동시키는 시간 

- 회전 지연: 헤드가 있는 곳으로 플래터를 회전시키는 시간 

- 전송 시간: 하드 디스크와 컴퓨터 간에 데이터를 전송하는 시간 

➕ 단일 헤드 디스크 = 고정 헤드 디스크, 다중 헤드 디스크 = 이동 헤드 디스크 

 

플래시 메모리: 전기적으로 데이터를 읽고 쓸 수 있는 반도체 기반의 저장 장치 

➕ NAND 플래시 메모리(대용량 저장 장치로 많이 사용됨), NOR 플래시 메모리 

 

셀: 플래시 메모리에서 데이터를 저장하는 가장 작은 단위 ➡️ MB, GB, TB 용량을 갖는 저장 장치 

- SLC 타입: 한 셀에 1비트를 저장할 수 있는 플래시 메모리 ➡️ 빠른 입출력, 수명 ⬆️, 가격 ⬆️

✅고성능의 빠른 저장 장치가 필요한 경우

- MLC 타입: 한 셀에 2비트(정보 4개)를 저장할 수 있는 플래시 메모리 ➡️ 대용량화 유리, 속도 ⬇️, 수명 ⬇️, 가격 ⬇️

- TLC 타입: 한 셀에 3비트(정보 8개)를 저장할 수 있는 플래시 메모리 ➡️ 대용량화 유리, 속도 ⬇️⬇️, 수명 ⬇️⬇️, 가격 ⬇️⬇️

구분 SLC MLC TLC
셀당 bit 1 bit 2 bit 3 bit
수명 ⬆️ 보통 ⬇️
읽기/쓰기 속도 ⬆️ 보통  ⬇️
용량 대비 가격 ⬆️ 보통  ⬇️

 

셀 ➡️ 페이지(읽기/쓰기 단위) ➡️ 블록(삭제 단위) ➡️ 플레인 ➡️ 다이 

페이지

- Free 상태: 어떠한 데이터도 저장하고 있지 않아 새로운 데이터를 저장할 수 있는 상태

- Valid 상태: 이미 유효한 데이터를 저장하고 있는 상태 ➡️ 새 데이터 저장 불가능 

- Invalid 상태: 유효하지 않은 데이터(쓰레기값)를 저장하고 있는 상태 

 

가비지 컬렉션 ➡️ 쓰레기값 정리 

1. 유효한 페이지들만을 새로운 블록으로 복사

2. 기존의 블록 삭제 

 

2) RAID의 정의와 종류

RAID: 하드 디스크&SSD 사용 ➡️ 물리적 보조기억장치를 하나의 논리적 보조기억장치처럼 사용하는 기술 ➡️ 데이터 안정성, 높은 성능 

 

RAID 0: 보조기억장치에 데이터를 단순히 나누어 저장하는 구성 방식(스트라이핑) ➡️ 데이터 읽고 쓰는 속도 ⬆️ (속도 = nTB 저장 장치 * n)

❗ 저장된 정보 안정성 문제 

⬇️

 

RAID 1: 완전한 복사본 생성(미러링) ➡️ RAID 0보다 쓰기 속도 ⬇️, 복구 간단 

❗ 사용 가능 용량 감소 ➡️ 비용 증가 문제

⬇️

 

RAID 4: 오류를 검출하고 복구하기 위한 정보를 저장한 장치(패리티 비트)를 두는 구성 방식 ➡️ RAID 1보다 적은 하드 디스크로도 데이터를 안전하게 보관 

➕ 패리티 비트: RAID에선 오류 복구 가능 

❗ 새로운 데이터가 저장될 때마다 패리티 저장 디스크 데이터 사용 ➡️ 패리티 저장 장치 병목 현상 발생 

⬇️

 

RAID 5: 패리티 정보를 분산하여 저장하는 방식 ➡️ 병목 현상 해소 

 

RAID 6: 서로 다른 두 개의 패리티를 두는 방식 ➡️ 오류를 검출하고 복구할 수 있는 수단 두 개 ➡️ 안정성 ⬆️ 

❗ 저장할 패리티 2개 ➡️ 쓰기 속도 ⬇️ 

 

+) Nested RAID

    e.g. RAID 10(= RAID 0 + RAID 1), RAID 50(= RAID 0 + RAID 5)

 

❗ 선택 미션 
Q. RAID의 정의와 종류를 간단히 정리해 보기
A. 
  장점 단점 
RAID 0 스트라이핑 ➡️ 속도 ⬆️ 정보 안정성 문제 
RAID 1 미러링 ➡️ 복구 간편  사용 가능 용량 감소 ➡️ 비용 증가 문제 
RAID 4 패리티 비트 ➡️ 적은 하드 디스크로 안전하게 보관 패리티 저장 장치 병목 현상 
RAID 5 패리티 정보 분산 저장 ➡️ 병목 현상 해소 -
RAID 6 서로 다른 두 개의 패리티 ➡️ 안정성 ⬆️ 저장할 패리티 2개 ➡️ 쓰기 속도 ⬇️
 

 

Chapter 0️⃣8️⃣

1) 장치 컨트롤러와 장치 드라이버

입출력 장치: 종류 多 + 전송률 ⬇️ ➡️ CPU, 메모리, 입출력장치 통신 어려움 ➡️ 장치 컨트롤러 연결

 

장치 컨트롤러: 입출력 장치 연결 하드웨어적 통로 - 입출력 버스 이용(CPU와 입출력장치 간 통신 중개, 오류 검출, 데이터 버퍼링)

    - 버퍼링: 전송률 ⬆️ 장치(CPU) & 전송률 ⬇️ 장치(입출력장치) 교환 데이터 임시 저장공간(버퍼)에 저장 ➡️ 전송률 비슷하게 맞춤 

장치 컨트롤러

 

데이터 레지스터: CPU와 입출력장치 사이에 주고받을 데이터 저장 ➡️ 버퍼 역할 (if 데이터 ⬆️ ➡️ RAM 사용)

상태 레지스터: 상태 정보(입출력장치 입출력 작업 준비/완료 여부, 오류 여부) 저장 

제어 레지스터:  입출력 장치가 수행할 내용에 대한 제어 정보 & 명령 저장 

 

장치 드라이버: 입출력 장치 연결 소프트웨어적 통로(장치 컨트롤러 동작 감지, 제어 ➡️ 장치 컨트롤러 컴퓨터 내부와 정보 교환)

➕ 장치 드라이버 인식, 실행 주체: 운영체제 

 

2) 다양한 입출력 방법 

프로그램 입출력: 프로그램 속 명령어 ➡️ 입출력장치 제어 

1. CPU ➡️(명령)➡️ 하드 디스크 컨트롤러의 제어 레지스터

2. 하드 디스크 컨트롤러: 하드 디스크 상태 확인 ➡️ 상태 레지스터 준비 표시 

3. CPU: 상태 레지스터 주기적으로 읽으며(폴링) 하드 디스크 준비 여부 확인 ➡️ 백업할 메모리의 정보 데이터 레지스터에 작성 

➕ 폴링: 입출력 장치의 상태 주기적으로 확인 ➡️ CPU 부담 ⬆️

 

장치 컨트롤러의 레지스터 값 저장 방법 

- 메모리 앱 입출력: 메모리에 접근하기 위한 주소 공간 & 입출력장치에 접근하기 위한 주소 공간 ➡️ 하나의 주소 공간으로 간주 

- 고립형 입출력: 메모리를 위한 주소 공간 & 입출력장치를 위한 주소 공간 분리 

메모리 앱 입출력 고립형 입출력
메모리와 입출력장치 같은 주소 공간 사용  메모리와 입출력장치 분리된 주소 공간 사용 
메모리 주소 공간 ⬇️ 메모리 주소 공간 그대로 
메모리와 입출력장치 같은 명령어 입출력 전용 명령어 

 

 

인터럽트 기반 입출력 [Chapter 04]

1. CPU: 장치 컨트롤러에 입출력 작업 명령

2. 장치 컨트롤러: 입출력장치 제어 & 입출력 수행 ➡️ CPU: 다른 작업 

3. 장치 컨트롤러: 입출력 완료 ➡️ CPU에 인터럽트 요청 신호 송신 ➡️ CPU: 하던 일 백업, 인터럽트 서비스 루틴 

 

인터럽트 비트 활성화 or NMI(무시할 수 없는 인터럽트) 발생 ➡️ 우선순위 높은 인터럽트부터 처리 

 

프로그래머블 인터럽트 컨트롤러(PIC): 여러 장치 컨트롤러에 연결 ➡️ 장치 컨트롤러에서 보낸 하드웨어 인터럽트 요청 우선순위 판별(NMI 제외) ➡️ CPU에 지금 처리해야할 하드웨어 인터럽트 알려줌 

1. PIC: 장치 컨트롤러에서 인터럽트 요청 신호 수신 

2.  PIC: 인터럽트 우선순위 판단 ➡️ CPU에 인터럽트 요청 신호 송신 

3. CPU: PIC에 인터럽트 확인 신호 송신 

4. PIC: 데이터 버스 ➡️ CPU에 인터럽트 벡터

5. CPU: 인터럽트 서비스 루틴 실행 

 

DMA 입출력: 직접 메모리에 접근할 수 있는 입출력 기능(CPU 접근 ❌) ➡️ CPU 부담 ⬇️

시스템 버스에 하드웨어(DMA 컨트롤러) 필요 

1. CPU: DMA 컨트롤러에 입출력 작업 명령 

2. DMA 컨트롤러: CPU 대신 장치 컨트롤러와 상호작용(+필요한 경우 메모리 직접 접근) ➡️ 작업 수행

3. DMA 컨트롤러 ➡️(인터럽트)➡️ CPU 

+) 사이클 스틸링: DMA가 CPU가 쓸 시스템 버스를 이용함 

 

입출력 버스: DMA 컨트롤러 & 장치 컨트롤러 별도로 연결 ➡️ 시스템 버스 사용 빈도 ⬇️