computer에서 data를 기억하기 위해 사용하는 device를 총칭한다.
다음 그림은 종류를 나타낸 것이다.
다음 그림으로 간략히 표기할 수 있다.
- Seqential Access Storage Device & media (SASD)
- Direct Access Storage Device & media (DASD)
앞서 살펴본 것처럼 Address를 통해 위치를 지정하여 읽고 쓰는 방식의 memory를 random access memory (RAM)
라고 부른다.
컴퓨터를 조립할 때 사용하는 RAM이 바로 random access memory의 약자이다.
주로
volatile memory
라는 것을 주의해야 한다.(전원이 꺼지면 데이터가 사라짐) Core RAM이라는 Non-volatile RAM이 초기에 있었다.
RAM은 크게 다음과 같은 두 종류로 나뉜다.
컴퓨터 조립 등의 경우에 흔히 얘기하는 RAM은 Dynamic RAM이다.
static RAM(SRAM)
flip-flop
,register
처럼 ) gate(좀 더 정확히는 transistor)로 만들어진 Memory로 다량의 Transistor를 다량으로 집적(1bit 기억하는D Flip-Flop
에 6개의 NAND가 들어감)시켜야 저장용량이 커지는 구조이다.
즉, 대용량 memory로 만들기가 어렵다. 용량당 들어가는 비용이 너무 크지만 속도 측면에서는 매우 높은 성능을 보인다.
cashe의 경우 buffer와 마찬가지로 속도의 차이가 나는 두 소자 사이에 놓여 속도 차이에 의한 문제를 완화시켜주는 역할을 한다. 차이점이라면 cache의 경우 prefetch 방식으로 필요한 것으로 예측되는 데이터를 미리 가져다 놓는 알고리즘 등이 적용된 소자에 사용된다. buffer가 보다 넓은 개념으로 사용된다.
capacitor
를 이용하여 필요한 transistor의 수를 대폭 줄인 memory이다. 기생 capacitor(Transistor 제조시 생기는 capacitor)를 활용하는 기술 등의 발전은 집적도가 매우 높은 DRAM 구현을 가능하게 했다. 오늘날 대용량의 memory를 위해 주로 채택되는 방식이다.
capacitor를 사용하기 때문에 누설전류로 인한 데이터 손실을 막기 위한 주기적인 충전이 필요(전력효율이 낮음)하고 SRAM에 비해 속도가 느리다.
SDRAM은 Single Data Rate SDRAM (SDR SDRAM, SDR)에서 시작하여 Double Data Rate SDRAM (DDR SDRAM, DDR)으로 발전했으며, DDR의 경우 DDR5까지 개발된 상태이다.
Single Data Rate (SDR) SDRAM : clock cycle 하나당 하나의 데이터를 전송한다. (rising edge만 사용)
Double Data Rate (DDR) SDRAM : clock cycle 하나당 2개의 데이터를 전송 한다. (rising and falling edge 모두 사용)
RAM 중에서 data의 무결성이 중요한 경우(서버용)를 위한 것으로 저장된 데이터의 오류를 체크하고 수정하는 기능이 있는 것이다. Error Checking and Correction Memory의 줄임말으로 매우 고가이며 PC에서는 보통 사용하지 않는다.
parity
bit와 같이 단순한 방법부터 Hamming code
등의 좀 더 복잡한 방법 등이 있다. 일반적으로 오류를 검출하는 경우보다 수정을 하려면 보다 많은 bit를 사용해야 한다.
특정 파일이 변조되지 않았는지라던지 제대로 다운로드 되었는지 등을 검증하는 방법이다.
parity bit가 동적인 데이터(계속해서 값이 변화하는 RAM에 저장된 데이터)에 적합한 기술이라면 Checksum과 CRC는 정적인 데이터 (설치 파일 등)에 적합한 기술이다.
특정 데이터가 생성되었을 때 checksum(데이터들을 단위별로 더하고 넘어가는 값은 무시)이나 Cyclic Redundancy Check(CRC), Hash code를 계산해 저장해두면 이후 예기치 않게 해당 데이터가 바뀐 경우 이를 확인 할 수 있다.
Read Only Memory
한 번 기록한 정보에 대해 오직 읽기만을 허용하도록 설계된 Non-volatile 기억 장치
제조될 때 한번 데이터가 기재되고 이후로는 읽기만 가능한 memory device를 가르킨다.
엄밀하게는 write-once memory
라고 할 수 있으나 기존의 ROM이 사용되는 모든 분야에 여러 번 write가 가능한 memory들로 대체되고 있기 때문에 전원이 꺼져도 데이터를 유지하는 memory를 ROM이라고 부른다고 생각해도 크게 틀리지 않다.
masked ROM
Promgrammable ROM(PROM)
OTP ROM
(One Time Programmable ROM)이라고 불린다.Erasable PROM(EPROM)
Electrically Erasable PROM(EEPROM)
Flash Memory (PROM Flash)
bit나 depth 단위로 access가 이루어지는 RAM, ROM과 달리 특정 크기의 bytes (block) 단위로 access가 이루어지는 device
computer에서 사용하는 고밀도 대용량의 기억 장치들은 block device이며ㅗ 보조기억장치로 활용된다.
최근 SSD에 의해 점유율이 위협을 받고 있으나 아직까지 Mass storage의 대명사는 disk drive라고 할 수 있다.
사실 소재에 따라 floppy disk drive와 hard disk drive로 나뉘지만 현재는 hard disk drive만을 사용하기 때문에 줄여서 hard라고 불림
HDD보다 용량대비 단가가 더 낮은 장비이나 속도는 컴퓨터 초창기의 천동테이프 수준이라고 생각될 수 있을 정도로 느린 장비이다. 최후의 저장 장소로 보험용으로 사용된다.
이전에 프로그램 설치 (특히 OS)는 대부분의 경우 CD-ROM을 사용했을 정도로 많이 사용되었으나 Flash memory의 가격이 어마어마하게 떨어지면서 현재는 거의 사용이 되지 않고 있다.
Flash Memory는
RAM 같은 EEPROM 유형의 기억장치
이다.Solid State Disk (SSD)는
전기적으로 내용 변경 및 일괄 소거도 가능하다.
RAM 같은 ROM이다.
1bit를 담고 있는 cell별로 read의 경우 random access가능하며 cell이 저장할 수 있는 bit의 크기에 따라 다음으로 구분한다.
실제로는 32 or 64개의 cell이 연결된 String(or Column)이 read의 최소단위(RAM과 유사) 가 되며, 16 or 23개의 String이 모여 program(=write)의 최소단위인 Page(or Row) 를 이루고, 64 or 128개의 String이 모여 erase의 최소단위인 Block 을 이룬다(NAND Flash 기준).
Page와 비슷한 개념으로 segment가 있는데, page는 물리적으로 주소를 나누는 방식(같은 bit size로 나뉨)이고 segment는 논리적으로 나누는 방식(bit size가 다름)이다.
전원이 나가도 기억 유지한다.
쉽게 쓰기 지우기가 가능하다.
읽기/쓰기 수만번 가능하다.
cell을 직렬로 연결한 방식으로 NOR Flash에 비해 read time이 느린 단점을 가지나 program(=write)와 erase time이 page, block단위로 이루어짐에 따라 매우 빠르다.
더욱이 cell이 차지하는 면적을 NOR Flash 대비 40%수준이며 제조 단가도 적게 들어간다.
위같은 이유로 높은 집적도의 경제성을 가진 제품이 가능하여 현재 Flash Memory시장에서 가장 널리 사용되는 중이다.
cell을 병렬로 연결한 방식으로 NAND Flash에 비해 read time이 6-7배 정도 빠르지만, program과 erase가 cell단위로 이루어지다보니 매우 느리다.
낮은 집적도와 높은 제조단가로 인해 시장규모가 축소되고 있는 상황이다.
SSD의 경우, 최근 HDD를 대체하고 있는 추세임.
reference
mk docs