이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다.


보조기억장치에는 다양한 종류가 있다. 그중 가장 대중적인 보조기억장치는 하드 디스크와 플래시 메모리이다.

플래시 메모리는 보조기억장치에만 사용되는 것은 아니다.

 

하드 디스크(HDD : Hard Disk Drive)

하드디스크는 자기적인 성질(자성)으로 데이터를 저장하는 보조기억장치이다. 이 때문에 하드 디스크를 자기 디스크의 일종으로 지칭하기도 한다.

하드 디스크에서 실질적으로 데이터가 저장되는 곳은 위 그림속 동그란 원판(플래터)이다.

  • 플래터(platter) : 자기 물질로 덮여 있어 수많은 N극과 S극을 저장한다. N극과 S극은 0과 1의 역할을 수행한다.
  • 스핀들 : 플래터를 회전시키는 구성 요소, 스핀들이 플래터를 돌리는 분당 회전수를 RPM단위로 나타냄

 

  • 헤드 : 플래터를 대상으로 데이터를 읽고 쓰는 구성요소, 플래터 위에서 미세하기 떠 있는채로 데이터를 읽고 쓴다.
  • 디스크 암 : 헤드를 원하는 위치로 이동시키는 장치

 

하드 디스크는 일반적으로 여러 겹의 플래터로 이루어져 있고 플래터 양면을 모두 사용할 수 있다. 양면 플래터를 사용하면 위아래로 플래터당 두개의 헤드가 사용된다. 이때 일반적으로 모든 헤드는 디스크 암에 부착되어 다같이 이동한다.

 

플래터는 트랙과 섹터라는 단위로 데이터를 저장한다.

  • 트랙 : 플래터를 여러 동심원으로 나누었을 때 그중 하나의 원을 트랙이라고 부른다.
  • 섹터 : 트랙은 피자처럼 여러 조각으로 나누어지는데 이 한 조각을 섹터라고 부른다. 섹터 하나 크기는 512byte ~ 4,096Byte
  • 실린더 : 여러 겹의 플래터 상에서 같은 트랙이 위치한 곳을 모아 연결한 논리적 단위

 

연속된 정보는 보통 한 실린더에 기록된다. 예를 들어 두 개의 플래터를 사용하는 하드 디스크에서 네 개 섹터에 걸쳐 데이터를 저장할 때는 첫 번째 플래터 윗면, 뒷면과 두 번째 플래터 윗면, 뒷면에 데이터를 저장한다.

연속된 정보를 하나의 실린더에 기록하는 이유는 디스크 암을 움직이지 않고도 바로 데이터에 접근할 수 있기 때문이다.

 

하드 디스크가 저장된 데이터에 접근하는 시간은 크게 탐색 시간, 회전 지연, 전송 시간으로 나뉜다.

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

 

  • 회전 지연(rotational latency) : 헤드가 있는 곳으로 플래터를 회전시키는 시간

 

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

 


 

플래시 메모리(Flash Memory)

우리가 흔히 사용하는 USB, SD 카드, SSD가 모두 플래시 메모리 기반의 보조기억장치이다.

아래 그림에서 붉은 박스로 표시한 부분이 플래시 메모리이다.

  • 플래시 메모리는 전기적으로 데이터를 읽고 쓸 수 있는 반도체 기반의 저장 장치
  • 플래시 메모리는 보조기억장치 범주에만 속하지 않고 다양한 곳에 널리 사용하는 저장 장치
  • 플래시 메모리에는 크게 NAND 플래시 메모리와 NOR 플래시 메모리가 있다.

 

두 종류의 플래시 메모리
플래시 메모리는 크게 NAND 플래시 메모리와 NOR 플래시 메모리가 있다.
NAND 플래시와 NOR 플래시는 각각 NAND게이트와 NOR 게이트를 기반으로 만들어진 메모리를 뜻한다.
둘 중 대용량 저장 장치로 많이 사용되는 플래시 메모리는 NAND 플래시 메모리이다.
이 글에서 다루는 내용 또한 NAND 플래시 메모리이다.

 

  • 셀 : 플래시 메모리에서 데이터를 저장하는 가장 작은 단위

이 셀이 모이고 모여 MB, GB, TB 용량을 갖는 저장 장치가 된다.

하나의 셀에 몇 비트를 저장할 수 있느냐에 따라 플래시 메모리 종류가 나뉜다.

  • SLC : 한 셀에 1비트를 저장할 수 있는 플래시 메모리
  • MLC : 한 셀에 2비트를 저장할 수 있는 플래시 메모리
  • TLC : 한 셀에 3비트를 저장할 수 있는 플래시 메모리
  • QLC : 한 셀에 4비트를 저장할 수 있는 플래시 메모리

큰 차이가 아닌것처럼 보여도 이는 플래시 메모리의 수명, 속도, 가격에 큰 영향을 끼친다.

플래시 메모리에 수명이 있는가?
플래시 메모리에는 수명이 있다. 플래시 메모리뿐만 아니라 하드 디스크 또한 수명이 있다.
따라서 USB, SSD, SD 카드는 수명이 다하면 더 이상 저장 장치로써 사용이 불가능하다.

 

위 그림에서 알 수 있듯 같은 셀 대비 SLC -> MLC -> TLC -> QLC로 갈 경우 더 많은 데이터를 저장할 수 있다.

즉, QLC로 갈수록 저장용량에 대한 이점이 있는 것이다.

하지만 반대로 SLC로 갈 수록 속도와 데이터의 안정성, 데이터의 수명이 좋아진다.

 

아래의 표는 SLC ~ QLC까지의 성능을 비교한 표이다.

즉, 같은 용량의 플래시 메모리 저장 장치라고 할지라도 셀의 타입에 따라 수명, 가격, 성능이 다르다.

썼다 지우기를 자주 반복해야 하는 경우 혹은 높은 성능을 원하는 경우에는 고가의 SLC타입을 선택하는 것이 좋고, 저가의 대용량 저장 장치를 원한다면 QLC 타입을 선택하는 것이 좋다.

 

  • 페이지 : 셀들이 모여 만들어진 단위
  • 블록 : 페이지가 모여 만들어진 단위
  • 플레인 : 블록이 모여 만들어진 단위
  • 다이 : 플레인이 모여 만들어진 단위

 

플래시 메모리의 가장 큰 특징은 읽기/쓰기 단위와 삭제 단위가 다르다는 것이다.

  • 읽기/쓰기 단위 : 페이지
  • 삭제 단위 : 블록

 

이때 페이지는 세 개의 상태를 가질 수 있다.

  • Free 상태 : 어떠한 데이터도 저장하고 있지 않아 새로운 데이터를 저장할 수 있는 상태
  • Valid 상태 : 이미 유효한 데이터를 저장하고 있는 상태
  • Invalid 상태 : 쓰레기값이라 부르는 유효하지 않은 데이터를 저장하고 있는 상태

플래시 메모리는 하드 디스크와는 달리 덮어쓰기가 불가능하여 Valid 상태인 페이지에는 새 데이터를 저장할 수 없다.

 

아래의 그림은 플래시 메모리의 간단한 동작을 그림으로 표시한 것이다.

W는 쓰기를 의미하고 가운데의 숫자는 페이지의 번호, 나머지는 데이터를 의미한다

즉, W 1 a는 "1번 페이지에 a라는 데이터를 써라" 라는 뜻이 된다.

왼쪽의 LSN과 PSN은 논리주소와 물리주소를 뜻한다.(매핑 테이블)

페이지의 데이터를 표시하는 칸 오른쪽에 X로 표시되어있는 것은 Invalid(비유효)데이터를 의미한다.

그림에서 보는 것과 같이, 플래시 메모리에서 덮어쓰기가 불가능하기 때문에 이미 데이터가 있는 페이지에 다시 쓰기 명령이 들어오면 다른 페이지(Free 페이지)에 새로 들어온 데이터를 저장하고 해당 페이지를 Free -> Valid상태로 수정한다.

기존에 있던 페이지(Valid)는 Valid -> Invalid 상태로 만든다.

Invalid 상태의 페이지는 쓰레기값을 저장하고 있는 공간이다. 이는 엄연히 용량 낭비이다.

그렇다고 함부로 지울 수 없다. 왜냐하면 삭제 단위는 페이지가 아니라 블록단위이기 때문이다.

따라서 이런 쓰레기 값을 정리하기 위해 가비지 컬렉션 기능을 제공한다.

이는 위 그림에서 "쓰기 명령이 또 들어오면"이 적혀있는 부분을 보면 알 수 있다.

즉, 가비지 컬렉션은 유효한 페이지들만 새로운 블록으로 복사한 뒤, 기존의 블록을 삭제하는 기능이다.