Lec24-Storage

한국어판 강의자료 · 24쪽
1쪽
p.1
2쪽
p.2flash memory(플래시 메모리)
3쪽
p.3flash memory(플래시 메모리)
  • electrically modifiable(전기적으로 수정 가능한) non-volatile storage(비휘발성 저장소)
  • 1980년대 초 Toshiba에서 처음 개발됨
  • ROM 및 EEPROM 장치에서 진화함
  • 작동 원리:
  • 두 번째 'floating gate(플로팅 게이트)'를 가진 트랜지스터
  • floating gate(플로팅 게이트)는 전자를 포획할 수 있음
  • 트랜지스터 스위칭을 위한 임계 전압(Vt)의 감지 가능한 변화를 유도함
  • control gate(컨트롤 게이트)
  • floating gate(플로팅 게이트)
  • source(소스)
  • drain(드레인)
  • Vg (게이트 전압)
4쪽
p.4NAND flash(NAND 플래시) 읽기 작업 (NAND)
  • source(소스)와 drain(드레인) 사이의 전류 흐름 강도를 통해 논리적 값 '1' 또는 '0'을 알 수 있음
  • 1: erased state(지워진 상태) = 저저항 = 빠른 전환
  • 임계 전압 == Vt_low
  • 0: programmed state(프로그래밍된 상태) = 높은 저항 (플로팅 게이트 전자로 인해), 느린 전환
  • 임계 전압 == Vt_high
  • Vt_low
  • 0 또는 1을 읽기 위해 전류 감지
  • GND
  • Vt_low 또는 Vt_high에서 전원 켜기?
5쪽
p.5NAND flash(NAND 플래시) 프로그래밍 및 지우기
  • 플래시 프로그래밍(쓰기)
  • 논리적 값 '1(지워진 상태)'에서 '0(프로그래밍된 상태)'로 변경
  • control gate(컨트롤 게이트)에 고전압을 인가
  • • 전자가 floating gate(플로팅 게이트)에 모임
  • • 'tunnel injection(터널 주입)'
  • → Vt 증가 = Vt_low에서 스위칭되지 않음 = 저전류 = '0'
  • 플래시 지우기
  • floating gate(플로팅 게이트)의 전하를 방전 (전체 block(블록)!) → 다시 '1'로 복귀
  • 기판, source(소스), drain(드레인)에 고전압 인가
  • • 'tunnel release(터널 방출)'
  • block-granularity erasure(블록 단위 지우기)의 특성으로 인해, 어떤 오버라이트 작업도 먼저 비용이 큰 지우기 작업을 수행해야 함
  • 0V
  • 'tunnel release(터널 방출)'
  • drain(드레인)에서 floating gate(플로팅 게이트)의 전하 방출
  • 20V
  • 20V
  • 20V
  • 'tunnel injection(터널 주입)'
  • floating gate(플로팅 게이트)에 전하 포획
  • 0V
  • 0V
6쪽
p.6flash memory(플래시 메모리): NAND 모델
  • NAND flash(NAND 플래시)
  • 모든 셀이 직렬로 전역 GND에 연결됨
  • • 하나의 셀은 약 Vt_low에서 올라가고, 다른 모든 셀은 약 Vt_high 이상으로 올라감
  • • 전류가 흐르는지 여부에 따라 1 또는 0 결정
  • NOR flash(NOR 플래시)보다 더 높은 밀도
  • → 대용량 저장 장치 (예: USB, SSD 등)
7쪽
p.7flash memory(플래시 메모리): NAND 모델
  • 순차적, page(페이지) 또는 block-level operation(블록 단위 작업)
  • block(블록) = page(페이지)의 그룹
  • block(블록): 16KB ~ 512KB // erasure granularity(지우기 단위)
  • page(페이지): 512B ~ 4KB // read & program granularity(읽기 및 프로그래밍 단위)
  • 그림 출처: https://www.cactus-tech.com/resources/blog/details/solid-state-drive-primer-4-nand-architecture-pages-blocks/
8쪽
p.8flash memory(플래시 메모리): NOR 모델
  • NOR flash(NOR 플래시)
  • 각 셀은 GND와 비트라인에 연결됨
  • WL이 활성화되면, 연결된 셀이 비트라인을 낮춤
  • 풀다운 속도(즉, 전류 강도)에 따라 1 또는 0 결정
  • 빠른 워드 단위 프로그래밍 가능
  • 워드 단위 읽기/쓰기 가능
  • 그러나 지우기는 여전히 block(블록) 단위로 수행됨
  • NAND보다 빠른 읽기 속도
  • in-place memory(인플레이스 메모리) // 예: EPROM, ROM, ..
9쪽
p.9NAND flash(NAND 플래시) 기술 비교
  • + 고밀도
  • + 빠른 쓰기, 지우기
  • - 느린 읽기
  • → 대량 저장소에 사용됨
  • + byte-addressable(바이트 주소 지정 가능)
  • + 빠른 읽기
  • - 매우 느린 쓰기 및 지우기
  • → 임베디드 시스템에 사용됨
  • Gb/cm²
  • $/Gb
  • Act. (mW)
  • Idle (mW)
  • Read
  • Write
  • Erase
  • DRAM
  • 3.03
  • 2.16
  • 228
  • 15
  • 55 ns
  • 55 ns
  • -
  • NOR Flash
  • 2.62
  • 122
  • 0.041
  • 75 ns
  • 1.6 us (2B)
  • 3300 us (4K)
  • 700 ms
  • NAND Flash (SLC)
  • 5.97
  • 0.85
  • 67.5
  • 0.054
  • 25 us
  • 220 us
  • 1.5 ms
  • NAND Flash (MLC)
  • 11.9
  • 0.3
  • 50 us
  • 680 us
  • 3.3 ms
10쪽
p.10더 밀도 높은 플래시 – SLC vs. MLC
  • SLC
  • 전류의 두 수준 = '0' 또는 '1'
  • MLC
  • N개의 전류 수준 = log(N) 논리 상태
  • 예: 2비트 MLC는 전류의 네 수준 필요 (= floating gate(플로팅 게이트)에 수집된 4개의 서로 다른 전하 수준에 기반한 4개의 임계 전압)
  • ECC는 SLC보다 더 중요함
11쪽
p.11flash memory(플래시 메모리)의 문제점
  • block-granularity erasure(블록 단위 지우기)
  • '0' 셀 → 전체 block(블록) 지우기 → '1' 셀
  • NOR도 랜덤 액세스 재쓰기 또는 지우기를 지원하지 않음
  • 메모리 마모
  • 프로그램-지우기(P/E) 사이클 수가 '유한'함 – SLC의 경우 일반적으로 100,000 P/E cycles (Program/Erase cycles)(P/E 사이클)
  • wear leveling(웨어 레벨링)
  • • 쓰기를 다른 block(블록)에 분산
  • • spare blocks(예비 블록) 사용
  • → 백그라운드에서 'garbage collection(가비지 컬렉션)' 트리거
  • read disturbance(읽기 교란)
  • NAND 셀에 많은 읽기가 수행되면 인접 셀의 값이 변경됨
  • 오류 정정 코드(ECC) 필요
12쪽
p.12flash memory(플래시 메모리)의 garbage collection(가비지 컬렉션)
  • 출처: https://en.wikipedia.org/wiki/Write_amplification#/media/File:Garbage_Collection.png
13쪽
p.13솔리드 스테이트 드라이브 (SSD)
  • page(페이지): 512B에서 4KB, block(블록): 32에서 128페이지
  • 데이터는 page(페이지) 단위로 읽거나 쓰임
  • page(페이지)는 block(블록)이 지워진 후에만 덮어쓸 수 있음
  • block(블록)은 100,000회 반복 쓰기 후에 마모됨
  • 플래시 변환 레이어 (FTL)
  • I/O 버스
  • page(페이지) 0
  • page(페이지) 1
  • page(페이지) P-1
  • ...
  • block(블록) 0
  • ...
  • page(페이지) 0
  • page(페이지) 1
  • page(페이지) P-1
  • ...
  • block(블록) B-1
  • flash memory(플래시 메모리)
  • 솔리드 스테이트 디스크 (SSD)
  • 논리 디스크 block(블록) 읽기 및 쓰기 요청
14쪽
p.14솔리드 스테이트 드라이브 (SSD): 플래시 기반 드라이브
  • SATA interface(SATA 인터페이스) 커넥터
  • (캐시)
15쪽
p.15hard drive(하드 드라이브)가 고장났을 경우?
  • redundant array of independent disks(독립 디스크의 중복 배열) (RAID)
  • (David Patterson의 대표적 연구, 1988년)
16쪽
p.16redundant array of independent disks (RAID)(독립 디스크의 중복 배열)
  • 아이디어: 소수의 대형 디스크를 다수의 소형 디스크로 대체하라!
  • 데이터 용량
  • 볼륨
  • 전력
  • data rate(데이터 전송 속도)
  • I/O rate(입출력 속도)
  • MTTF
  • IBM 3390 (K)
  • IBM 3.5" 0061 (IBM 3.5" 0061) ×70
  • 20 GBytes
  • 320 MBytes
  • 23 GBytes
  • 97 cu. ft.
  • 3 KW
  • 15 MB/s
  • 600 I/Os/s
  • 250 KHrs
  • $250K
  • 0.1 cu. ft.
  • 11 W
  • 1.5 MB/s
  • 55 I/Os/s
  • 50 KHrs
  • $2K
  • 11 cu. ft.
  • 1 KW
  • 120 MB/s
  • 3900 I/Os/s
  • ??? Hrs
  • $150K
  • 디스크 어레이의 잠재력:
  • 대용량 데이터 및 높은 I/O rate(입출력 속도)
  • 단위 부피당 고용량, 단위 전력당 고용량
  • 높은 신뢰성(?)
17쪽
p.17parity(패리티) 또는 mirroring(미러링) 없이 block-level striping(블록 단위 스트라이핑)
  • space efficiency(공간 효율성): 1
  • fault tolerance(장애 내성) 없음
  • 높은 대역폭
  • RAID 0: fault tolerance(장애 내성) 없는 스트라이핑 디스크 어레이
18쪽
p.18parity(패리티) 또는 스트라이핑 없이 mirroring(미러링)
  • space efficiency(공간 효율성): ½
  • 단일 디스크 고장에 견딤
  • RAID 0에 비해 성능 저하
  • RAID 1(대중적): mirroring(미러링) 및 듀플렉싱
  • 읽기: B == B ?
  • 쓰기: B
19쪽
p.19bit-level striping(비트 단위 스트라이핑)과 전용 SEC code(단일 오류 정정 코드) (Hamming code(해밍 코드))
  • 모든 디스크 spindle(스핀들)의 회전이 동기화되어 고속 data rate(데이터 전송 속도)를 제공한다.
  • space efficiency(공간 효율성): Hamming code(해밍 코드) 오버헤드
  • 워드 내에서 1비트 오류를 수정할 수 있다.
  • 단일 노드 장애를 견딜 수 있다.
  • 단일 쓰기 작업을 수행하려면 모든 디스크에 접근해야 한다.
  • B 데이터: ECC(B 데이터)
  • RAID 2: Hamming code(해밍 코드) ECC (1비트 수정 가능)
  • 읽기: ECC(B0:B1:B2:B3) == Bx:By:Bz ?
20쪽
p.20byte-level striping(바이트 단위 스트라이핑)과 전용 parity(패리티)
  • 모든 디스크 spindle(스핀들)의 회전이 동기화되어 고속 data rate(데이터 전송 속도)를 제공한다.
  • space efficiency(공간 효율성): (n-1) / n
  • 단일 노드 장애를 견딜 수 있다.
  • 단일 쓰기 작업을 수행하려면 모든 디스크에 접근해야 한다.
  • RAID 3: 바이트 인터리브 parity(패리티)
  • B0 B1 B2 B3 = B parity(패리티)
  • block(블록) = B0:B1:B2:B3
  • 읽기: B1 = B0 B2 B3 B parity(패리티) ?
21쪽
p.21RAID 4: block(블록) 인터리브 parity(패리티)
  • block-level striping(블록 단위 스트라이핑)과 전용 parity(패리티)
  • space efficiency(공간 효율성): (n-1) / n
  • 단일 노드 장애를 견딜 수 있다.
  • 단일 접근 시 단일 디스크를 사용한다.
  • parity(패리티) 디스크는 traffic bottleneck(트래픽 병목)이 될 수 있다.
  • B1 쓰기: 새로운 B1 이전 B1 이전 B parity(패리티) = 새로운 B 패리티
  • B1 복원: B0 B2 B3 B parity(패리티)
  • B1에만 새로운 쓰기를 수행하려면 어떻게 해야 하는가?
  • B0, B2, B3와 함께 read-modify-write(읽기-수정-쓰기) 수행?
22쪽
p.22RAID 5 (인기 있음): block(블록) 인터리브 distributed parity(분산 패리티)
  • block-level striping(블록 단위 스트라이핑)과 distributed parity(분산 패리티)
  • RAID 4에서 시작한다.
  • parity(패리티) 생성이 bottleneck(병목)을 일으키지 않는다.
23쪽
p.23RAID 6: 두 개의 독립된 parity(패리티) 방식을 가진 독립 데이터 디스크
  • block-level striping(블록 단위 스트라이핑)과 "이중" distributed parity(분산 패리티)
  • RAID 5에 추가 parity(패리티) block(블록)을 더한다.
  • space efficiency(공간 효율성): (n-2) / n
  • 두 디스크 장애를 견딜 수 있다.
24쪽
p.24질문?
단축키
Ctrl K · s자료 검색
[ ]이전·다음 강의
Space영상 재생·정지
j k다음·이전 section
n p다음·이전 slide
b강의 목록 접기·펴기
t맨 위
/강의 검색
Esc닫기