<본 카테고리는 "혼자 공부하는 컴퓨터구조 + 운영체제" 책과 강의를 기반으로 작성하였습니다>
보조기억장치
개요
보조기억장치는 컴퓨터 시스템에서 데이터를 저장하고 검색하기 위해 사용되는 장치들의 모음이다. 이러한 보조기억장치는 데이터를 장기적으로 보존하며, 주 기억장치(주 메모리)인 RAM과 달리 전원이 꺼져도 데이터를 유지할 수 있다. 가장 일반적인 보조기억장치로는 하드 디스크(hard disk drive, hdd)와 플래시 메모리(flash memory)가 있다. 이들은 컴퓨터의 운영체제, 프로그램, 파일 및 기타 데이터를 저장하는 데 사용된다. 이번 시간에는 HDD와 플래시 메모리에 대해 학습해 보도록 하자.
HDD
하드 디스크(또는 자기 디스크)는 자기적인(magnetic) 방식, 즉 회전하는 원판들 위에 자기적으로 데이터를 기록하고 읽어오는 방식으로 데이터를 저장하는 하드웨어를 의미한다. 이를 통해 기록된 데이터들은 1956년 미국의 IBM에서 RAMAC이라는 이름으로 출시된 이후로, 현재까지 중요한 저장 매체로서 사용되고 있다.
물리적 구조
플래터(Platter)는 하드 디스크의 원판 형태의 구성 요소다. 일반적으로 플래터는 금속이나 유리로 만들어진 원판으로, 자기적으로 데이터를 기록하고 읽어오는 저장소 역할을 한다. 플래터는 추후에 언급할 디스크 암의 회전을 통해 원하는 위치로 회전한다. 하드 디스크에는 여러 개의 플래터가 쌓여 있을 수 있으며, 각 플래터는 양면에 데이터를 저장할 수 있다.
스핀들(Spindle)은 플래터를 중심으로 회전시키는 축이다. 스핀들은 디스크 드라이브의 내부에 위치하며, 모터나 다른 회전 장치와 연결되어 플래터를 정확한 속도로 회전시킨다. 플래터가 회전함으로써 디스크 암이 원하는 위치로 이동할 수 있게 된다. 이때 스핀들이 플래터를 돌리는 속도를 분당 회전수 RPM(Revolution per minute)이라는 단위로 표현한다.
헤드(Head)는 하드 디스크의 데이터를 읽고 쓰는 장치다. 플래터의 표면과 매우 근접하여 데이터를 읽고 쓰는 작업을 수행한다. 헤드는 작은 팔 형태로 구성되어 있으며, 데이터를 자기적으로 읽고 쓰기 위한 자기 헤드(자기 헤드 또는 리드/라이트 헤드)로 구성된다. 헤드는 디스크 암을 통해 플래터의 표면과 교차하면서 데이터를 읽고 쓰는 작업을 수행한다.
액추에이터(Actuator)는 디스크 암을 움직이는 기계적인 장치다. 일반적으로 액추에이터는 작은 전동 모터와 함께 사용되며, 전기적인 신호를 받아 디스크 암을 정확한 위치로 이동시킨다. 액추에이터는 디스크 암을 제어하여 헤드가 원하는 데이터가 있는 트랙으로 정확하게 이동할 수 있도록 한다. 액추에이터는 디스크 암의 움직임을 조절하고 디스크 암이 플래터의 표면에서 데이터를 읽거나 쓸 수 있게 한다.
디스크 암(Disk arm) 혹은 액추에이터 암(Actuator arm)은 플래터 위를 이동하며 헤드를 원하는 위치로 이동시키는 역할을 한다. 디스크 암은 헤드를 지지하고 플래터의 표면과의 거리를 제어한다. 액추에이터(Actuator)로부터 움직임을 전달받아 헤드를 정확한 트랙으로 이동시킨다. 디스크 암의 움직임은 데이터의 접근과 검색 속도에 영향을 미치게 된다.
논리적 구조
하드 디스크는 다음과 같이 트랙, 섹터, 실린더의 저장 단위를 사용한다. 간혹 하나 이상의 섹터를 묶어 블록(block) 혹은 클러스터(cluster)라고 표현하기도 한다.
먼저 트랙(track)은 하드 디스크 플래터의 원형 표면을 원형으로 나눈 하나의 원이다. 즉, 플래터의 동심원에 따라 형성되는 원형 경로다. 각 플래터는 여러 개의 트랙으로 구성되며, 각 트랙은 데이터를 저장하는 단위다. 트랙은 일반적으로 외부 트랙부터 시작하여 내부 트랙으로 번호가 매겨지는데, 이는 데이터의 위치를 식별하는 데 사용된다.
이러한 트랙을 여러 조각으로 나누었을 때 한 조각을 섹터(sector)라고 한다. 즉, 트랙에 디스크 헤드가 데이터를 읽고 쓸 수 있는 작은 조각으로 나눈 단위다. 각 섹터는 고정된 크기를 가지며, 일반적으로 512바이트부터 4킬로바이트 사이의 크기를 갖는다. 섹터는 데이터의 최소 단위이며, 파일이나 정보를 저장하기 위해 사용된다.
실린더(cylinder)는 동일한 위치의 플래터 위에 있는 트랙들을 모아놓은 집합이다. 즉, 각 플래터의 동일한 실린더 위치에 있는 트랙들을 한 그룹으로 묶어서 실린더라고 한다. 이러한 구성은 플래터들이 동시에 회전하고 동일한 위치에 있는 트랙에 접근하기 때문에 데이터 접근 시간을 최소화한다. 실린더는 디스크 드라이브의 논리적인 구성 단위로 사용되며, 파일 시스템에서 데이터의 위치를 식별하는 데 사용된다. 이때 연속된 정보는 보통 한 실린더에 기록된다. 이는 디스크 암을 움직이지 않고도 바로 데이터에 접근할 수 있기 때문이다.
성능 요소
다음과 같은 하드 디스크가 있다고 가정했을 때, 저장된 데이터에 접근하는 과정을 생각해 보자. 노란색으로 칠해진 부분이 접근하려는 데이터다.
먼저 디스크 암이 특정 트랙으로 이동하는 데 시간이 걸릴 것이다. 이를 탐색 시간(Seek time)이라고 한다. 즉, 접근하려는 데이터가 저장된 트랙까지 헤드를 이동시키는 시간을 의미한다. 탐색 시간은 디스크 암이 움직이는 거리에 따라 결정된다.
이후 디스크 플래터가 회전하여 특정 섹터까지 도달하는 시간이 필요할 것이다. 이를 회전 지연(Rotational latency)라고 부른다. 플래터는 일정한 속도로 회전하며, 디스크 헤드가 데이터를 읽기 위해 원하는 섹터가 디스크 헤드 아래로 이동하는 것을 기다려야 한다. 회전 지연은 회전 속도에 따라 결정된다.
이제 데이터를 읽을 준비를 마쳤으니, 디스크 헤드에서 데이터를 읽거나 쓰는 데 시간이 걸릴 것이다. 이를 전송 시간(transfer time)이라고 하며, 디스크 데이터 전송 속도에 의해 결정된다.
요약하자면 하드 디스크가 저장된 데이터에 접근할 때 소요되는 시간은 데이터를 찾는 탐색 시간 + 트랙을 옮기는 회전 지연 + 하드 디스크와 컴퓨터 간 데이터를 전송하는 전송 시간만큼 걸린다. 이러한 요소들은 성능에 큰 영향을 끼치는 시간이다. 따라서 이러한 스케줄링을 관리하는 기법도 추후에 다루게 된다.
플래시 메모리
플래시 메모리(flash memory)는 USB 메모리, SD 카드, SSD 등과 같은 장치들을 포함한 전기적으로 데이터를 읽고 쓸 수 있는 반도체 기반의 저장 장치를 의미한다. 초기에는 ROM의 일종인 EEPROM으로부터 발전하여 현재의 모습으로 정착되었으며, 플래시 메모리는 ROM의 특징뿐만 아니라 RAM의 특징도 갖추고 있어 범용적으로 사용할 수 있는 저장 장치로 인정받고 있다. 이로 인해 플래시 메모리는 다양한 분야에서 널리 사용되고 있다.
종류
플래시 메모리는 주로 NAND 플래시 메모리와 NOR 플래시 메모리로 나뉜다. NAND 플래시 메모리는 주로 데이터를 저장하는 데 사용되며, NAND 게이트를 이용하여 데이터를 구성한다. 이러한 플래시 메모리는 고밀도 저장이 가능하고, 데이터를 쓰는 속도가 빠르며, 생산 비용이 낮아 경제적이다. 그러나 랜덤 액세스가 느리고, 한 블록이 모두 동작하여 상대적으로 읽기 성능이 떨어지는 단점이 있다.
반면 NOR 플래시 메모리는 주로 코드를 저장하는 데 사용된다. 즉, NOR 게이트를 이용하여 데이터를 구성하는 플래시 메모리로서, 랜덤 액세스가 가능하고 읽기 속도가 빠르다. 하지만 한 셀씩 기록하는 방식으로 인해 쓰기 속도가 상대적으로 느리며, 밀도가 낮아 용량 대비 가격이 비싸다는 단점이 있다.
또한 플래시 메모리는 데이터를 저장하는 가장 작은 단위인 셀에 몇 비트를 저장할 수 있는지에 따라 다양한 종류로 분류된다. 일반적으로 SLC, MLC, TLC과 같은 유형이 있다. 이러한 분류는 각 셀당 저장 가능한 비트 수에 기반하여 이루어진다.
SLC (Single Level Cell)는 한 셀에 1비트를 저장할 수 있는 유형으로, 비트 당 공간이 크기 때문에 입출력 속도가 빠르고 수명이 길며, 높은 신뢰성을 제공한다. 그러나 용량 대비 가격이 상대적으로 높다.
MLC (Multiple Level Cell)은 한 셀에 2비트를 저장할 수 있는 유형이다. SLC에 비해 비트 당 공간이 작아 용량을 늘릴 수 있으며, 비용을 줄일 수 있다. 그러나 셀 당 저장되는 비트 수가 늘어나기 때문에 입출력 속도가 상대적으로 느리고, 수명과 신뢰성도 낮아진다.
TLC (Triple Level Cell)은 한 셀에 3비트를 저장할 수 있는 유형이다. MLC보다 더 높은 용량을 제공할 수 있으며, 비용을 더욱 절감할 수 있다. 그러나 셀 당 비트 수가 많아져서 입출력 속도와 수명, 신뢰성이 더욱 감소한다.
SLC | MLC | TLC | |
셀당 bit | 1 | 2 | 3 |
수명 | 길다 | 보통 | 짧다 |
읽기/쓰기 속도 | 빠르다 | 보통 | 느리다 |
용량 대비 가격 | 비싸다 | 보통 | 싸다 |
단위와 특징
앞서 플래시 메모리에서 가장 작은 단위를 셀이라고 하였다. 이러한 셀들이 모여 만들어진 단위를 페이지(page), 페이지가 모여 만들어진 단위를 블록(block), 블록이 모여 플레인(plane), 플레인이 모여 다이(die)가 된다.
플래시 메모리에서 데이터의 읽기와 쓰기는 페이지 단위로 수행된다. 만약 셀 단위로 수행한다면 연산이 복잡해지고 시간이 많이 소요되며, 데이터의 일관성과 안전성에 문제가 발생할 가능성이 있다. 이는 하나의 셀을 읽거나 쓰는 동안에도 다른 셀에 영향을 미칠 수 있기 때문이다. 반면, 블록 단위보다 작은 페이지 단위로 수행한다면 전체 블록을 읽고 쓸 필요가 없어서 비효율적인 자원 사용을 줄일 수 있다.
하지만, 데이터의 삭제는 페이지보다 큰 블록 단위로 이루어진다. 이는 플래시 메모리가 하드 디스크와 달리 덮어쓰기를 지원하지 않기 때문이다. 플래시 메모리는 전기 신호를 사용하여 데이터를 저장하고 지운다. 각 셀은 0 상태와 1 상태를 가질 수 있으며, 이 두 상태는 셀에 저장된 전하의 양에 따라 결정된다. 셀 상태를 0에서 1로 바꾸는 것은 전하를 추가함으로써 단순하게 이루어진다. 반면, 셀 상태를 1에서 0으로 바꾸는 것은 저장된 전하를 제거해야 하므로 복잡하고 에너지를 많이 소모한다.
플래시 메모리는 전기 신호를 사용하여 데이터를 저장하고 지운다. 셀은 보통 0 상태와 1 상태를 가질 수 있으며, 이 두 가지 상태는 셀에 저장된 전하의 양에 따라 결정된다. 0에서 1로의 상태 변화는 단순히 셀에 전하를 추가함으로써 간단하게 해결할 수 있지만, 1에서 0으로의 상태 변화는 셀에 저장된 전하를 제거해야 하므로, 더 복잡하고 많은 에너지를 필요로 한다. 따라서 1 상태인 셀에 0을 쓰려면, 셀의 전하를 먼저 제거하고 새로운 데이터를 써야 한다. 이를 위해 전체 블록을 삭제한 후 새로운 데이터를 쓰는 과정이 필요하며, 이는 시간이 많이 소요되고 셀의 수명을 단축시킨다.
이러한 이유로 플래시 메모리는 일반적으로 데이터를 덮어쓰는 대신 가비지 컬렉션(garbage collection) 기능을 사용한다. 이는 유효한 데이터를 가진 페이지들만을 새로운 블록으로 복사한 후, 기존의 블록을 삭제하는 작업이다. 이 과정을 통해 Invalid 상태인 쓰레기 값을 정리하게 된다. 이처럼 페이지는 데이터를 새로 저장할 수 있는 Free 상태, 유효한 데이터를 갖고 있는 Valid 상태, 그리고 쓰레기 값을 저장하고 있는 Invalid 상태로 구분된다.
예를 들어, X라는 블록이 네 개의 페이지로 구성되어 있고, 그중 두 개의 페이지에는 A와 B라는 데이터가 각각 저장되어 있다고 가정해 보자. 이제 이 블록 X에 새로운 데이터 C를 저장하면 다음과 같이 페이지가 채워진다.
여기서 기존에 저장된 데이터 A를 업데이트하여 A'로 변경하고 싶다면 어떻게 해야 할까? 플래시 메모리에서는 덮어쓰기가 불가능하기 때문에, 기존에 저장된 데이터 A는 이제 무효화되어 (Invalid 상태가 되어) 쓰레기 값이 되고, 새로운 데이터 A'는 별도의 공간에 저장된다.
이렇게 되면, 원래 데이터 A가 저장되어 있던 공간은 실제로는 사용되지 않고 있음에도 불구하고 여전히 저장 공간을 차지하게 된다. 이는 저장 공간의 낭비를 초래한다. 그런데, 문제는 A가 저장되어 있던 공간만을 개별적으로 지울 수 없다는 점이다. 따라서 플래시 메모리에서는 가비지 컬렉션 방식을 사용해, 유효한 데이터를 가진 페이지만 다른 블록으로 복사한 후에 기존 블록을 삭제하게 된다. 이런 방식을 통해 무효화된 데이터가 차지하던 공간을 효율적으로 관리할 수 있게 된다.
요약
HDD
1. 정의: 자기적인 방식으로 데이터를 저장하는 보조기억 장치
2. 구성
- 플래터, 스핀들, 헤드, 디스크 암, 액추에이터
→ 플래터 단위: 트랙, 섹터, 실린더
3. 접근 과정
- 탐색 → 회전 → 전송
플래시 메모리
1. 정의: 전기적으로 데이터를 읽고 쓸 수 있는 반도체 기반의 저장 장치
2. 종류
a. NAND / NOR
b. SLC, MLC, TLC ...
3. 단위
- 셀, 페이지, 블록, 플레인, 다이
4. 특징
- 읽기와 쓰기는 페이지 단위, 삭제는 블록 단위
- 가비지 컬렉션 사용
'CS > 컴퓨터구조' 카테고리의 다른 글
[컴퓨터구조] RAID의 정의와 종류 (0) | 2023.09.13 |
---|---|
[컴퓨터구조] 메모리 (0) | 2023.06.22 |
[컴퓨터구조] 캐시 메모리 (0) | 2023.06.21 |
[컴퓨터구조] CPU 설계 기법 (2) (0) | 2023.06.13 |
[컴퓨터구조] CPU 설계 기법 (1) (0) | 2023.06.12 |