본문 바로가기

CS 공부/[강의] 혼공 컴퓨터구조 + 운영체제

[10/6] 다양한 보조기억장치 (플래시 메모리)

https://www.youtube.com/watch?v=m2NfFJEvssY&list=PLVsNizTWUw7FCS83JhC1vflK8OcLRG0Hl&index=20

 

 

 

 

 

들어가며

다양한 보조기억장치(하드디스크)  먼저 읽기 ! 

 


 

 

 

플래시 메모리란?

SSD 나 SD카드를 열어보면, 똑같은 네모뭉텅이(?) 들이 플래시 메모리이다.

 

플래시 메모리는 전기적으로 데이터를 읽고 쓰는 반도체 기반 저장장치이다.

SSD, SD카드, USB메모리가 전부 플래시 메모리 기반의 저장장치이다.

플래시 메모리를 보조기억장치 파트에서 소개하고는 있으나,

범용성이 매우 넓기에 보조기억장치에만 속한다고 보기는 어렵다.

실제로 주기억장치 중의 하나인 ROM 으로도 플래시메모리가 사용된다.

플래시메모리는 범용성이 넓은 저장장치인데 보조기억장치로도 많이 사용된다, 라고 이해할 것.

 

 

(출처 : https://www.youtube.com/watch?v=1teqO2py_XA)

좌 : USB 메모리 앞면 
우 : USB 메모리 뒷면 - 8GB 플래시 메모리

 

 

 

종류는 다르나 USB 메모리의 뒷면에 약품처리를 통해 드러나게 만든 플래시 카드의 모습 (출처 : https://www.youtube.com/watch?v=1teqO2py_XA)

 

 

 


 

 

플래시 메모리의 종류

 

- NAND 플래시 메모리

NAND 연산을 수행하는 NAND 게이트를 기반으로 만들어진 플래시 메모리이다.

오늘날의 대용량 저장장치로 많이 사용되는 플래시 메모리이다.

 

 

- NOR 플래시 메모리

NOR 연산을 수행하는 NOR 게이트를 기반으로 만들어진 플래시 메모리이다.

 

 

 


 

 

플래시 메모리 - NAND 플래시 메모리

 

Cell 셀

: 플래시 메모리를 이루고 있는 단위

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

: 셀이 모이고 모여 수 MB, GB, TB 저장장치가 된다

 

 


 

플래시 메모리의 성능, 가격, 수명을 결정하는 요소가 된다. 

한 셀에 1비트를 저장할 수 있는 플래시 메모리 : SLC 타입 ( Single Level Cell )

한 셀에 2비트를 저장할 수 있는 플래시 메모리 : MLC 타입 

한 셀에 3비트를 저장할 수 있는 플래시 메모리 : TLC  타입 

한 셀에 4비트를 저장할 수 있는 플래시 메모리 : QLC 타입 

 

 

 

SLC  (한 집에 1명)

한개의 비트가 저장돼 있기에 한 셀로 두개의 정보를 표현할 수 있다. 한셀에 한비트가 살고 있는 구조를 통해 빠른 입출력이 가능한 특징을 가지고 있다.

 

➡️ 플래시메모리 (USB, SSD, SD카드), 하드디스크에는 수명이 있다.

    일정횟수 이상을 썻다 지웠다를 반복하면 보조기억장치로서 수명을 다하게 된다.

    즉, 하드디스크에 백업했다해서 그게 영원히 저장되는 것은 아니다.

 

 

 

 

 

 

MLC  (한 집에 2명)

한 셀에 2비트씩 저장할 수 있는 구조이다. 즉, 한 셀당 4개의 정보를 표현할 수 있다. MLC 타입은 한집에 두명이 살고 있기에 두명이서 외출준비를 하는 시간이 당연히 SLC타입보다 입출력이 느릴 수 밖에 없다. 그리고 SLC 타입은 여러번 썼다 지웠다 할 수 있으나 MLC 타입은 그에비에서는 좀 더 적은 횟수의 쓰고 지우는 작업이 가능하다. 또 시중에서 많이 사용되는 타입 중 하나인데, 이것은 USB메모리나 SSD같은 곳에서 사용된다. (낮은 가격으로 고용량의 저장장치를 꾸릴 수 있기 때문)

 

 

 

 

 

 

TLC  (한 집에 3명)

한 셀당 3비트씨 저장할 수 있기에 MLC보다도 대용량화에 유리하다.

 

 

 

 

 

이런 SLC, MLC, TLC 등의 타입을 통해 알 수 있는 것은
같은 플래시 메모리라도 타입에 따라 수명과 가격, 성능이 다르다.

 


 

플래시 메모리의 단위 

 

 

[ 플레시메모리의 단위 ]

셀들이 모여서 page 가 되고,

페이지들이 block이 되고
블록이 모여 plane(플레인)이 되고
플레인이 모여 die(다이)가 된다.

 

 

플래시 메모리는 읽기/쓰기의 단위와 삭제의 단위가 다르다.

읽기와 쓰기는 페이지 단위로 이뤄지며, 삭제는 블록단위로 이뤄진다.

 

 

 

 

◼︎ 읽기와 쓰기는 페이지 단위로 이뤄진다고 했는데, 이러한 페이지는 상태를 가질 수 있다.

 

- Free 상태

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

 

- Valid 상태

이미 유효한 데이터를 저장하고 있는 상태

 

- Invalid 상태

유효하지 않은 데이터(쓰레기 값)을 저장하고 있는 상태

플래시메모리는 하드디스크와 달리 덮어쓰기가 아예 불가하다.

대신 데이터가 이미 쓰여진 해당 섹터를 먼저 지우고(Erase) 그 후에 새로운 데이터를 쓸 수 있다.

그래서 데이터가 더이상 유효하지 않거나, 덮어쓰기가 필요할 때 해당 데이터를 Invalid 라고 표시한다.

이것은 더이상 해당 데이터가 유요하지 않으며, 나중에 지우기 연산 Erase를 통해 그 공간을 재사용할 수 있음을 의미한다.

 

 

 


 

 

예를 들어 블록 x가 있다고 했을 때, (블록의 네모들이 페이지)

블록 x에 한페이지를 차지하는 데이터 c를 저장한다고 한다면,

읽기 쓰기 단위는 페이지 단위로 이뤄지기에 위 사진과 같이 저장된다.

 

 

 

만약, 새롭게 저장된 C와 기존의 B는 그대로 둔 채 

기존의 A만을 A' 로 수정하고 싶다면 어떻게 해야할까?

 

 

 

 

삭제는 블록단위로만 이뤄지기에 A 페이지만 삭제할 수가 없다.

이런경우,  A를 Invalid 페이지로 만들어 준 뒤 새롭게 저장될 A' 값을 새롭게 새로운 페이지로 써주게 된다.

 

 

그런데 이렇게 되면, A라는 값은 실제로 쓰고 있는 값이 아닌데 용량을 차지 하고 있기에 용량 낭비로 이어진다. 이런 낭비를 방지하기 위해 가비지 컬렉션이라는 것이 있다. 가비지 컬렉션은 유효한 페이지들만을 새로운 블록으로 복사해주누 뒤, 기존의 블록을 삭제하는 동작을 통해 공간을 정리하는 기능이다.