[13] 보조 기억장치

hyunsooo·2023년 4월 12일
0
post-thumbnail

이번 시간에는 보조기억장치에서 알아보겠습니다. 보조 기억장치는 하드 디스크, 플래시 메모리(SSD, USB, SD) 등의 장치를 의미합니다. 주기억장치의 휘발성을 보완하기 위해 사용하는게 보조기억장치 입니다. 이번 시간에는 가장 대표적으로 사용하는 하드 디스크와 플래시 메모리에 대해서 알아보겠습니다.

하드 디스크

하드 디스크는 자기적인 방식으로 데이터를 저장합니다. LP판처럼 보이는 곳이 플래터인데 이 플래터에 수많은 N극과 S극으로 데이터를 저장할 수 있습니다. 그림을 자세히 보시면 이런 플래터가 여러겹으로 이루어져 있고, 일반적으로 양면 모두 사용할 수 있어 많은 양의 데이터를 저장할 수 있습니다. 플래터의 중앙은 스핀들이라고 부르는 장치이며, 이 장치로 플래터를 회전시켜 줍니다. 여기서 분당 회전수(RPM)로 스핀들의 속도를 측정할 수 있습니다.

헤드는 플래터의 자기물질, 즉 데이터를 읽어주는 역할을 담당합니다. 플래터의 모든 층과 모든 면을 읽어야 하기 때문에 그림을 자세히 보면 층마다 헤드가 존재하는 것을 알 수 있습니다. 암(디스크 암, 엑츄에이터 암)은 헤드를 데이터가 있는 곳으로 움직일 수 있게 하는 장치입니다.

하드 디스크 - 저장 단위

위의 그림은 하나의 플래터의 구조 입니다. 트랙은 운동장의 트랙처럼 각각의 원띠들을 의미합니다.트랙의 일부분을 섹터라고 표현하고 512~4096 바이트 크기로 나누어집니다. 위의 그림에서는 나오지 않았지만 여러개의 플래터가 겹쳐서 사용될 때, 같은 트랙이 위치한 곳을 모아 연결한 단위를 실린더라고 부릅니다.

정리하자면, 플래터는 트랙과 섹터로 단위로 이루어져 있고, 각각의 플래터의 동일한 위치에 있는 트랙들이 모여 실린더라는 단위를 이루게 됩니다. 하드 디스크 구조에서 암은 헤드를 움직이는 장치라고 했습니다. 이 암은 각각의 플래터에 헤드들을 움직이지 않고 같은 위치로 동시에 움직이도록 작동하기 때문에 연속된 데이터들은 보통 하나의 실린더로 저장되게 됩니다.

하드 디스크 - 데이터 접근 과정

하드 디스크가 데이터에 접근할 경우 소요되는 시간은 아래의 3가지 경우 입니다.

  • 탐색 시간 (seek time)

    • 접근하려는 데이터가 저장된 트랙까지 헤드를 이동시키는 시간
  • 회전 지연 (rotational latency)

    • 헤드가 있는 곳으로 플래터를 회전 시키는 시간
  • 전송 시간 (transfer time)

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

Jeff Dean - Numbers Every Programmer Should Know의 자료에 따르면 아래와 같습니다.

탐색 시간소요 시간
L1 캐시 참조 시간0.5ns
L2 캐시 참조 시간5ns
메모리 참조 시간7ns
메모리에서 1MB 순차적으로 읽는 시간250,000ns
(하드) 디스크 탐색 시간10,000,000ns
(하드) 디스크에서 1MB를 순차적으로 읽는 시간30,000,000ns
한 패킷이 캘리포니아에서 네덜란드까지 왕복하는 시간150,000,000ns

플래시 메모리

플래시 메모리는 전기적으로 데이터를 읽고 쓰는 반도체 기반 저장 장치입니다. 플래시 메모리 자체는 범용성이 넓기에 보조기억장치에만 속한다고 보기는 어렵습니다. 예를 들어, ROM같은 경우도 플래시 메모리의 일종입니다.

플래시 메모리의 종류도 크게 NAND, NOR 플래시 메모리로 나누어집니다. NAND 플래시는 셀을 수직으로 배열하는 구조이기 때문에 용량을 늘리기 쉽고 쓰기 속도가 빠른 반면 NOR 플래시는 읽기 속도가 빠르지만 쓰기가 매우 느려 치명적인 단점으로 작용하여 NAND 플래시 메모리를 대부분의 기기의 저장장치로 사용하고 있습니다.

셀은 플래시 메모리에서 데이터를 저장하는 가장 작은 단위입니다. 이 셀이 모여 MB, GB, TB 저장 장치가 됩니다. 이때, 한셀에 1bit를 저장할 수 있는 메모리(SLC), 2bit(MLC), 3bit(TLC), 4bit(QLC)라고 합니다.

SLC

한 셀에 1bit만 저장할 수 있으므로, 한 셀로 두 개의 정보를 표현할 수 있습니다. bit수가 적기 때문에 bit의 빠른 입출력이 가능하며 수명이 조금 긴 특징이 있습니다. 하지만 용량 대비 가격이 비싸다는 단점이 있습니다.

MLC

한 셀에 2bit를 저장할 수 있으므로, 한 셀로 네 개의 정보를 표현할 수 있습니다. 따라서 대용량화에 유리합니다. 하지만 SLC보다 입출력 속도가 느리며 수명이 짧습니다.

TLC

한 셀에 3bit를 저장할 수 있으므로, 한 셀로 여덟 개의 정보를 표현할 수 있습니다. 마찬가지로 대용량화에 유리하고 입출력 속도가 느리며 수명이 짧습니다.

위와 같은 특징으로 알 수 있는 것은, 같은 플래시 메모리라도 수명, 가격, 성능이 다를 수 있다는 점 입니다.

플래시 메모리 - 저장 단위

플래시 메모리의 저장 단위로는 셀들이 모여 페이지를 이루고, 페이지가 블록, 블록이 모여 플레인, 플레인이 모여 다이를 이루고 있습니다.

여기서 중요한 점은, 플래시 메모리는 읽기/쓰기와 삭제를 할 때 단위가 다르다는 점입니다. 읽기/쓰기는 페이지 단위로 이루어지지만 삭제는 블록 단위로 이루어집니다.

이 페이지 또한 상태를 가지고 있을 수 있습니다. 크게 Free, Valid, Invalid 상태로 나눌 수 있습니다.

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

  • Valid : 이미 유요한 데이터를 저장하고 있는 상태

  • Invalid : 플래시 메모리는 하드 디스크와 달리 덮어쓰기가 불가능하기 때문에 유요하지 않은 데이터(쓰레기값)를 저장하고 있는 상태

위와 같이 하나의 블록안의 하나의 페이지를 수정하려고 한다면 기존 페이지를 Invalid 상태로 바꾸고 새로운 데이터를 저장하게 됩니다. 하지만 계속 이렇게 사용한다면, 사용하지 않는 상태의 데이터로 인해 메모리 공간을 낭비하게 됩니다.

이 문제를 해결하기 위해 가비지 컬렉션이 존재합니다. 이 가비지 컬렉션은 유효한 페이지들만 새로운 블록으로 복사한 후 기존 블록을 삭제하여 공간을 정리하는 기능입니다.

profile
지식 공유

0개의 댓글