하드 디스크와 플래시 메모리

Sundae·2023년 8월 3일

컴퓨터 구조

목록 보기
4/4
post-thumbnail

( 출처 - 위키백과 )

개요

보조기억장치에는 다양한 종류가 있다.
그 중 자주 쓰이는 보조기억장치는 하드 디스크와 플래시 메모리이다.
플래시 메모리는 우리가 흔히 사용하는 USB메모리 , SSD와 같은 저장장치를 말한다.

하드 디스크


하드 디스크(HDD : Hard Disk Drive)는 자기적인 방식으로 데이터를 저장하는 보조장치이다.

하드디스크는 회전하는 원판들(플래터) 위에 자기적으로 기록된 자료를 읽고 쓸 수 있는 자기 헤드로 구성된다.

구성 요소는 이러하다.

플래터(platter) : 자료가 저장되는 공간이다. 자기 물질로 덮여 있어 수많은 N극과 S극을 저장한다. N극과 S극은 0과 1의 역할을 수행한다.

스핀들(spindle) : 플래터를 회전시키는 구성 요소(축)이다. 이때 스핀들이 플래터를 돌리는 속도는 분당 회전수를 나타내는 RPM이라는 단위로 표현된다.

헤드(head) : 플래터 표면에 근접하여 자료를 읽고 쓰는 구성 요소이다.

디스크 암(disk arm) : 여러 개의 헤드는 디스크 암에 부착되어 있다. 디스크 암은 플래터 위를 움직여 헤드를 원하는 위치로 이동시킨다.

데이터가 저장되는 방식


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

  1. 트랙
    플래터를 여러 동심원으로 나누었을 때 그중 하나의 원을 트랙이라고 부른다.
    하드 디스크의 트랙은 보통 매우 많고 밀집되어 있으며, 데이터는 이 트랙들에 저장된다.
    읽기/쓰기 헤드는 이 트랙들을 따라 이동하여 데이터에 접근한다.
  2. 섹터
    섹터는 트랙에 있는 작은 부분으로, 하드 디스크의 가장 작은 전송 단위이다.

플래터는 여러 겹으로 사용될 수 있는데, 이때 여러 겹의 플래터 상에서 같은 트랙이 위치한 곳을 모아 연결한 논리적 단위를 실린더(cylinder)라고 한다.

다시 말해, 여러 개의 플래터(원판)가 서로 겹쳐져 있을 때, 같은 반지름 위치에 있는 플래터들의 트랙(Track)들을 하나로 묶은 개념이다.

이렇게 실린더로 묶는 이유는 데이터 접근을 최소화 하기 위함이다. 하나의 실린더에 묶여있는 트랙은 서로 물리적으로 가깝기 때문이다. 이러면 디스크 암을 움직이지 않고도 바로 데이터에 접근할 수 있다.

데이터에 접근하는 시간


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

  • 탐색 시간(sekk time)은 데이터가 저장된 트랙까지 헤드를 이동시키는 시간을 의미한다.

  • 회전 지연(rotational latency)은 헤드가 있는 곳으로 플래터를 회전시키는 시간을 의미한다.

  • 전송 시간(transfer time)은 하드 디스크와 컴퓨터 간에 데이터를 전송하는 시간을 의미한다.

위 시간들은 성능에 큰 영향을 끼치는 시간이다.

탐색 시간과 회전 지연을 단축시키기 위해서는 플래터를 빨리 돌리는 것도 중요하지만, 접근하려는 데이터가 플래터 혹은 헤드를 조금만 옮겨도 접근할 수 있는 곳에 위치해 있는 것도 중요하다.

플래시 메모리


플래시 메모리는 전기적으로 데이터를 읽고 쓸 수 있는 반도체 기반의 저장 장치이다.
대표적으로 USB 메모리 , SD 카드, SSD가 모두 플래시 메모리 기반의 보조기억장치이다.

플래시 메모리는 주로 NAND 혹은 NOR 게이트를 사용하여 정보를 저장한다 NAND 플래시 메모리는 비용이 낮고 대용량으로 제공되며 SSD와 USB 드라이브 등에 주로 사용된다. NOR 플래시 메모리는 읽기 속도가 빠르지만 NAND에 비해 비용이 높고 용량이 작아서 주로 휴대폰 등의 특정 용도에 사용된다.

플래시 메모리에는 (cell)이라는 단위가 있다.
셀이란 플래시 메모리에서 데이터를 저장하는 가장 작은 단위이다. 각 셀은 비트(bit) 단위로 정보를 표현하며, 이 비트는 0 또는 1의 값을 갖는다.

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

플래시 메모리 셀은 플래시 메모리 기술의 기본적인 저장 단위입니다. 플래시 메모리는 셀들로 구성된 배열 형태로 데이터를 저장하고 읽어옵니다. 각 셀은 비트(bit) 단위로 정보를 표현하며, 이 비트는 0 또는 1의 값을 갖습니다.

일반적으로 플래시 메모리 셀은 MOSFET(금속 산화물 반도체 전계 효과 트랜지스터)을 이용하여 구성된다. 간단하게 설명하자면, MOSFET은 전기적으로 절연된 게이트와 채널로 이루어진 반도체 소자로서 전기적인 신호를 통해 게이트와 채널 사이의 전류를 제어한다. 이를 이용하여 셀의 상태를 나타내고 변경할 수 있다.

다음은 플래시 메모리 셀의 대중적인 타입이다.

  1. SLC(Single-Level Cell): SLC는 각 셀이 1비트를 저장할 수 있는 타입이다. 셀의 상태는 0 또는 1 중 하나의 값을 갖는 단순한 형태이다. SLC는 빠른 속도와 긴 수명을 가지고 있지만, 비용이 상대적으로 높고 용량이 제한적이다. 주로 고성능의 빠른 저장 장치가 필요한 경우에 SLC 타입을 사용한다.

  2. MLC(Multi-Level Cell): SLC는 각 셀이 2비트를 저장할 수 있는 타입으로 SLC보다 더 높은 용량을 제공한다. 하지만 MLC는 SLC에 비해 속도와 수명이 낮고, 데이터 안정성이 떨어지는 경향이 있다. 대중적으로 사용되는 플래시 메모리는 MLC이며, 더 많은 데이터를 저장하고자 하는 경우 사용된다.

  3. TLC : TLC는 각 셀이 3비트를 저장할 수 있는 타입이다. 대용화 하기가 유리하다. 일반적으로 SLC나 MLC타입보다 수명과 속도가 떨어지지만 용량 대비 가격도 저렴하다.

    구분 SLC MLC TLC
    셀당 bit 1bit 2bit 3bit
    수명 길다 보통 짧다
    읽기/쓰기 속도 빠르다 보통 느리다
    용량 대비 가격 높다 보통 낮다

플래시 메모리에서 읽기 / 쓰기


셀들이 모여 만들어진 단위를 페이지(page), 그리고 페이지가 모여 만들어진 단위를 블록(block)이라고 한다. 블록이 모여 플레인(plane) 플레인이 모여 다이(die)가 된다.

플래시 메모리에서 읽기와 쓰기는 페이지 단위로 이루어진다. 하지만 삭제는 블록 단위로 이루어진다.

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

  1. FREE 상태는 어떠한 데이터도 저장하고 있지 않아 새로운 데이터를 저장할 수 있는 상태를 의미한다.

  2. Vaild 상태는 이미 유효한 데이터를 저장하고 있는 상태를 의미한다.

  3. Invalid 상태는 유효하지 않은 데이터를 저장하고 있는 상태를 의미한다.

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

그렇다면 만약 기존에 있는 데이터를 수정한다고 생각해보자.

Z라는 블록이 네 개의 페이지로 이루어져 있다고 가정해보자. 그리고 두 개의 페이지에는 각각 A와 B가 저장 되어 있다.
[ A ] , [ B ] , [ ] , [ ]

여기서 C라는 데이터를 저장해보자. 플래시 메모리의 읽기 쓰기 단위는 페이지이므로 빈 페이지에 값이 저장될 것이다.

[ A ] , [ B ] , [ C ] , [ ]

만약 여기서 A를 A~ 로 수정하고 싶다면 어떻게 해야할까? 플래시 메모리는 덮어쓰기가 불가능하기 때문에 기존에 저장된 A는 INvalid 상태가 되어 더 이상 값이 유효하지 않은 쓰레기 값이 되고, A~ 데이터가 저장된다.

[ Invalid ( A ) ] , [ B ] , [ C ] , [ A~ ]

그런데 여기서 문제가 있다. A같이 쓰레기값을 저장하고 있는 공간은 당연히 용량 낭비로 이어진다.

그렇다고 A만 지울 수는 없다. 플래시 메모리에서 삭제는 블록 단위로 수행되기 때문이다.

그래서 최근 SSD를 비롯한 플래시 메모리는 이런 쓰레기값을 정리하기 위해 가비지 컬렉션(garbage collection) 기능을 제공한다.

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


참고 자료

혼자 공부하는 컴퓨터 구조 + 운영체제

profile
성장 기록 / 글에 오류가 있다면 댓글 부탁드립니다.

0개의 댓글