하드 디스크와 플래시 메모리는 가장 대표적인 보조기억장치이다. 두 장치에 대해 알아보자!
하드 디스크 (HDD, Hard Disk Driver)
- 자기적인 방식으로 데이터를 저장하는 보조기억장치이다.
- 자기 디스크(magnetic disk)의 일종으로 볼 수 있다.
하드 디스크 특징
- 동그란 원판에 데이터를 저장하고, 원판을 회전시켜 뾰족한 리더기를 통해 데이터를 읽는다.
- CD나 LP와 비슷하게 동작한다.
하드 디스크 구조

- 플래터(platter)란? 하드 디스크에서 데이터가 실질적으로 저장되는 곳.
- 원판 형태이며, 자기 물질로 덮여 있다. 내부에 수많은 N극과 S극이 존재한다.
- N극과 S극은 비트 (0과 1) 역할을 한다.
- 스핀들(spinddle)이란? 플래터를 회전시키는 구성 요소를 뜻한다.
- RPM(Revolution Per Minute)이란? 스핀들이 플래터를 돌리는 분당 회전 수를 나타내는 단위
- ex. RPM이 20,000인 경우, 1분에 플래터를 20,000번 회전할 수 있다.
- 헤드(head)란? 플래터를 대상으로 데이터를 읽고 쓰는 구성요소
- 헤드는 플래터 위에서 미세하게 떠 있으면서 데이터를 읽고 쓴다. 바늘과 같이 생겼다.
- 디스크암(disk arm)이란, 헤드를 원하는 위치로 이동시키는 부품. 헤드는 디스크암에 부착돼 있다.
💡 많은 양의 데이터를 저장하기 위해 여러 겹의 플래터로 구성되며, 플래터 양면을 모두 사용 가능하다.
💡 양면 플래터를 사용하게 되면, 플래터마다 위아래로 두 개의 헤드가 사용된다.
💡 모든 헤드는 디스크 암에 부착돼 있으며, 디스크 암의 이동에 따라 모든 헤드가 같이 이동한다.
ex. 플래터가 5개, 헤드가 10개라면 디스크 암의 이동에 따라 10개의 헤드가 모두 움직인다.
플래터 데이터
- 플래터는 트랙과 섹터라는 단위로 데이터를 저장한다.
- 트랙(track): 플래터를 여러 동심원으로 나눌 때 그 중 하나의 원을 말한다.
- 섹터(sector): 트랙을 여러 조각으로 나눌 때 한 조각을 의미한다.
- 하드 디스크의 가장 작은 전송 단위이다.
- 하나의 섹터는 일반적으로 512 바이트이지만, 하드 디스크마다 차이가 있다.
- 블록(block): 하나 이상의 섹터를 묶어서 블록이라 표현한다.
- 여러 겹 플래터 상에서 같은 트랙이 위치한 곳을 모아서 연결한 논리적 단위를 실린더(cylinder)라고 한다.
- 각 플래터의 트랙들이 모여 원통 모양이 된다.
- 연속된 정보들은 보통 한 실린더에 기록된다.
ex. 두개의 플래터를 가진 하드 디스크가 네 개 섹터에 데이터를 저장할 때엔 첫 번째 플래터의 윗면과 뒷면, 두 번째 플래터의 윗면과 뒷면에 데이터를 저장한다.
💡 이를 통해 디스크 암을 움직이지 않고 연속된 정보에 바로 접근할 수 있다.
저장된 데이터에 접근하는 과정
- 하드 디스크가 데이터에 접근하는 시간은 탐색 시간, 회전 지연, 전송 시간으로 나뉜다.
- 접근할 데이터가 저장된 트랙까지 헤드를 이동시키는 시간을 탐색 시간(search time)이라고 한다.
- 헤드가 있는 곳으로 플래터를 회전 시키는 시간을 회전 지연(rotation latency)이라고 한다.
- 하드 디스크와 컴퓨터 사이 데이터를 전송하는 시간을 전송 시간(transfer time)이라고 한다.
- 탐색 시간, 회전 시간, 전송 시간은 성능에 큰 영향을 끼치게 된다.
- 하드 디스크에서 데이터를 이용하는 시간은 매우 크다.
| 프로그래머가 꼭 알아야하는 컴퓨터 시간들 | 소요시간 |
|---|
| L1 캐시 참조 시간 | 0.5ns |
| L1 캐시 참조 시간 | 5ns |
| 메모리 참조 시간 | 7ns |
| 메모리에서 1MB를 순차적으로 읽는 시간 | 250,000ns |
| (하드) 디스크 탐색 시간 | 10,000,000ns |
| (하드) 디스크에서 1MB를 순차적으로 읽는 시간 | 30,000,000ns |
| 한 패킷이 캘리포니아에서 네덜란드까지 왕복하는 시간 | 150,000,000ns |
💡 성능 향상 방법
플래터를 빨리 돌려 1분당 회전 수(RPM)를 높인다.
참조 지역성을 고려하여 데이터를 위치시켜 플래터와 헤드의 이동 시간을 줄인다.
단일 헤드 디스크와 고정 헤드 디스크
- 단일 헤드 디스크(single-head disk)
- 플래터의 한 면당 헤드가 하나씩 달려 있는 하드 디스크
헤드를 데이터가 있는 곳 까지 이동 시켜야 하기 때문에 이동 헤드 디스크(movable-head disk)라고 부른다.
- 다중 헤드 디스크(multiple-head disk)
- 헤드가 트랙별로 여러개 달려 있는 하드 디스크
헤드를 움직일 필요가 없기 때문에 고정 헤드 디스크(fixed-head disk)라고 부른다.
플래시 메모리
- 우리는 플래시 메모리 기반의 보조 기억 장치를 많이 사용한다.
- ex. USB 메모리 / SD 카드 / SSD 등..
플래시 메모리(flash memory)
- 전기적으로 데이터를 읽고 쓸 수 있는 반도체 기반 저장 장치
- 보조기억장치 뿐만 아니라 다양한 곳에 활용되고 있음
ex. ROM (주기억장치)
플래시 메모리의 종류
- NAND 플래시 메모리
NAND 연산을 수행하는 회로(NAND 게이트) 기반으로 만들어진 메모리
대용량 저장 장치로 많이 사용하며 일반적으로 플래시 메모리로 통칭됨
- NOR 플래시 메모리
NOR 연산을 수행하는 회로(NOR 게이트) 기반으로 만들어진 메모리
플래시 메모리 저장 단위와 종류
셀(cell)
- 플래시 메모리에서 데이터를 저장하는 가장 작은 단위이다.
- 셀 하나에 몇 비트를 저장할 수 있는지에 따라 플래시 메모리가 나뉜다.
- 1비트: SLC
2비트: MLC
3비트: TLC
4비트: QLC 등...
- 셀에 저장하는 비트량은 수명, 속도, 가격에 큰 영향을 끼친다.
- 셀에 일정 횟수 이상 데이터를 쓰고 지우면 더 이상 데이터를 저장할 수 없다.
1. SLC(Single Level Cell) 타입
- 한 셀에 1비트 저장 가능. 즉, 0/1 2개 정보를 표현할 수 있음
💡 장점
- MLC나 TLC보다 비트의 빠른 입출력이 가능하다.
- MLC나 TLC보다 수명이 길어 더 많은 데이터의 입력/삭제가 가능하다.
💡 단점
- 용량 대비 가격이 높음
- 기업에서 데이터의 입력/삭제가 많고, 고성능 빠른 저장 장치가 필요할 때 SLC를 주로 사용
2. MLC (Multiple Level Cell) 타입
- 한 셀에 2비트 저장 가능. 즉, 4개 정보를 표현할 수 있다.
💡 장점
- SLC 타입보다 용량대비 가격이 저렴하다.
- 한 셀에 두 비트를 저장하기 때문에 SLC보다 대용량화 하기 유리하다.
💡 단점
- 속도와 수명은 SLC에 비해 떨어진다.
- TLC와 함께 시중에서 가장 많이 사용되는 플래시 메모리 저장 타입이다.
3. TLC (Triple-Level Cell) 타입
- 한 셀에 3비트 저장 가능. 즉, 8개 정보를 표현할 수 있다.
💡 장점
- SLC, MLC보다 가격이 저렴하다.
- SLC, MLC보다 대용량화 하기 유리하다.
💡 단점
SLC, MLC보다 수명과 속도가 떨어진다.
표로 다시 보기
| 구분 | SLC | MLC | TLC |
|---|
| 셀당 bit | 1bit | 2bit | 3bit |
| 수명 | 길다 | 보통 | 짧다 |
| 읽기/쓰기 속도 | 빠르다 | 보통 | 느리다 |
| 용량 대비 가격 | 높다 | 보통 | 낮다 |
셀보다 큰 단위
- 페이지(page): 셀들이 모인 단위
- 블록(block): 페이지가 모인 단위
- 플레인(plane): 블록이 모인 단위
- 다이(die): 플레인이 모인 단위
플래시 메모리의 읽기와 쓰기, 삭제
- 플래시 메모리의 읽기/쓰기 단위와 삭제 단위는 다르다.
- 읽기와 쓰기: 페이지 단위로 이루어진다.
- 삭제: 블록 단위로 이루어진다.
플래시 메모리 페이지의 상태
- 페이지는 Free, Valid, Invalid 3가지 상태를 가질 수 있다.
Free 상태란? 어떤 데이터도 저장하지 않아 새로운 데이터를 저장할 수 있는 상태
Valid 상태란? 이미 유효한 데이터를 저장하고 있는 상태
Invalid 상태란? 유효하지 않은 쓰레기 값들을 저장하고 있는 상태
- 플래시 메모리는 덮어 쓰기가 불가능 하기 때문에 Valid/Invalid 상태의 페이지에는 새 데이터를 저장할 수 없다.
가비지 컬렉션(garbage collection)
- 쓰레기 값을 정리하는 기능이다.
- 유효한 페이지들을 새로운 블록에 복사하고, 기존 블록은 삭제한다.