최근 수정 시각 : 2019-10-28 15:14:16

기억장치

1. 개요
1.1. CPU와 메모리간의 접근성에 따른 분류1.2. 접근 방식에 따른 분류1.3. 저장 방식에 따른 분류
1.3.1. 반도체1.3.2. 자기장(Magnetic)을 이용한 방식1.3.3. 광학(Optical) 방식
1.4. 관습에 따른 분류
2. 기억장치의 성능
2.1. 용량(Storage Capacity)2.2. 접근 시간(Access Time)2.3. 데이터 전송률(Data Transfer Rate)
3. 기타

1. 개요

컴퓨터 메모리
{{{#!wiki style="margin:0 -10px -5px;"
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="margin:-5px -1px -11px;"
휘발성 메모리
<colbgcolor=#E0E0E0,#222> RAM DRAM · SRAM
개발중 T-RAM · Z-RAM
비휘발성 메모리
ROM Mask ROM · PROM · EPROM · EEPROM
NVRAM 플래시 메모리 · 메모리 카드 · SSD · eMMC · UFS
초기 NVRAM nvSRAM · FeRAM · MRAM · PRAM(옵테인 메모리)
기계적 자기테이프 · 자기필름판 · HDD · 광학 디스크
개발중 CBRAM · SONOS · RPAM · Racetrack Memory · NRAM · Millipede Memory · FJG}}}}}}}}}


메모리란 컴퓨터의 기억장치를 일컫는다. 큰 틀에서 설명하면, CPU는 계산을 담당하고, 메모리는 기억을 담당한다. 비유를 하자면 CPU는 사람이고, 메모리는 책과 노트를 펼칠 수 있는 책상이며, 보조기억장치는 책장이라 할 수 있겠다. 책상의 크기가 곧 메모리의 크기로, 책상이 클 수록 책을 이것 저것 펼쳐놓을 수 있는 것과 마찬가지가 된다. 어디까지나 쉽게 설명하기 위한 비유이므로 자세한 것은 아래 항목을 참고하자.

CPU에서 계산한 결과가 메모리에 저장이 되는 것이다. 하드디스크 같은 보조기억장치에 저장되는 것이 아니다. 그러니까 컴퓨터가 켜지면서부터 프로그램이 실행되면 그것들은 몽땅 메모리에 올라오게 된다. 이때문에 메모리의 크기가 중요하지만 옛날엔 이 메모리의 가격이 비쌌기 때문에 메모리를 절약하기 위해 페이지니 스와핑이니 하는 온갖 방법이 탄생했다. 또한 이 메모리에도 용도별로 여러 종류가 존재하며 가격에 따라 그 크기와 용도가 결정되기도 한다. 요즘은 메모리의 중요성이나 존재조차 모르는 사람들이 많이 있다.

1.1. CPU와 메모리간의 접근성에 따른 분류

CPU에 가까운 순서대로 레지스터(CPU) - (캐시 메모리) - 주 기억 장치 - (캐시 메모리) - 보조 기억 장치로 나눌 수 있다. 일반적으로 용량이 작을수록 동작속도가 빠르며, 용량이 클수록 동작속도가 느리다. 반면 속도가 빠를수록 용량 대비 가격이 비싸지고, 느릴수록 싸진다. 즉, 빠른 속도가 요구되지만 많은 용량이 필요하지 않은 CPU내의 레지스터에는 고속, 고가의 기억장치를 사용하게 되고, 대용량의 자료를 영구적으로 보관하기 위해서는 저속, 저가, 대용량의 기억장치를 사용하게 된다.
간단히 레지스터에 있는 데이터를 읽는 것은 머릿속에 있는 기억을 떠올리는 행동으로, 주기억장치에 있는 데이터를 읽는 것은 책장에 꽂혀 있는 책에서 특정한 책을 찾아 내용을 읽는 행동으로, 보조기억장치에 있는 데이터를 읽는 것은 지구를 한 바퀴 돌아서 특정한 내용을 찾아오는 것으로 비유하곤 한다.

저장 비트당의 가격과 용량, 그리고 속도에 따라 계층을 구분하면 피라미드형 구조를 이루게 된다. 더 자세한 내용은 메모리 계층 구조 참조.
레지스터
캐시 메모리
주 기억 장치
버퍼(디스크 캐시)
보조 기억 장치
  • 레지스터
    CPU의 일부로 CPU의 동작 속도와 동기화되어 작동한다. 사용자가 값을 읽고 쓸 수 있으며 동작 속도가 매우 빠르지만 수십~수백개의 정수형[1]과 실수형 데이터만을 저장할 수 있다. SIMD를 지원하는 CPU는 SIMD 레지스터 역시 따로 제공한다.
  • 주 기억 장치(Main Memory)
    CPU에서 직접 접근이 가능한 메모리. 이 뜻은 '주기억장치 100번지의 내용을 레지스터 1번에 저장하라', 혹은 '레지스터 1번의 내용을 주기억장치 100번에 덮어써라'와 같은 명령이 가능하다는 뜻이다. 직접 접근이 가능하지만 상수를 쓰는 것 이외의 연산은 CPU에서 바로 수행할 수 없으며, 메모리의 값을 레지스터로 로드, 연산, 연산 결과 적용의 단계를 거쳐야 한다.[2] CISC CPU에서는 메모리의 값을 직접 변경하는 명령어를 제공하는것처럼 보이지만 내부적으로는 위 단계를 거친다.
  • 보조 기억 장치
    CPU에서 직접 접근이 불가능한 메모리. 접근하려면 디바이스 드라이버와 시스템 콜을 통하여 기억장치의 특정 위치의 내용을 주기억장치로 로드(Load)한 뒤 읽어야 한다. 예를 들어 '0번 디스크 8번 트랙 12번 섹터 16번지의 값을 레지스터 1번에 저장하라'와 같은 명령이 불가능하다. 해당 내용을 읽으려면 '0번 디스크 8번 트랙 12번 섹터를 주기억장치 1024번지에 로드하라'는 시스템 콜을 먼저 호출한 후 메모리에서 '1024+16번지의 값을 레지스터 1번에 저장하라'와 같은 형태로 접근해야만 한다. CPU의 입장에서 보자면 보조기억장치는 여러 종류의 주변장치 중 하나이며 그 중 '저장 기능'을 지니고 있는 장치일 뿐이다.

1.2. 접근 방식에 따른 분류

  • 순차 접근 메모리: SAM = Sequential Access Memory.
  • 임의 접근 메모리: RAM = Random Access Memory.
    • 읽기 전용 메모리: ROM = Read Only Memory
    • 읽기 쓰기 메모리: RWM = Read Write Memory

1.3. 저장 방식에 따른 분류

주기억장치로도 사용 가능한 메모리는 ☆, 보조기억장치로만 사용이 가능한 메모리는 ★ 표시한다.
임의 접근이 가능한 메모리는 ※, 순차 접근만이 가능한 메모리는 → 표시한다.

1.3.1. 반도체

1.3.2. 자기장(Magnetic)을 이용한 방식

저장 매체(Media) 위에 자기장에 반응하는 물질을 발라두고 헤드(Head)를 이용해 특정 위치의 값을 읽어오는 장치.
* 자기코어 기억장치: 자기코어(Magnetic Core)는 페라이트(Ferrite) 자성 물질을 작은 고리 모양으로 만든 링에 도체를 끼운 후, 도체에 흐르는 전류의 방향에 따라 데이터를 기억시키거나 읽을 수 있는 기억장치이다. 자기코어는 초창기의 컴퓨터에 사용된 기억장치로 현재에는 사용되지 않고 있다. 하나의 자기코어에는 오직 하나의 상태, 즉 1비트의 데이터가 기억된다. 따라서 원하는 크기의 기억 용량을 갖도록 하기 위해서는 많은 개수의 자기코어가 필요하다. 또한 속도가 매우 느린 기억장치이다. 자기코어는 한번 자화되면 전원이 끊어져도 해당 상태를 유지하기 때문에 비휘발성 메모리이다. 자기코어에서 데이터를 읽어낸 후에는 저장된 데이터가 사라지게 된다. 따라서 계속 데이터를 유지하기 위해서는 읽어낸 후에 다시 데이터를 저장시키기 위한 방법이 필요하다. 요즘에는 쓰기는 커녕 보기도 힘든 물건이지만 교과서에는 나온다.
* 기록방법: 자기코어에는 1과 0의 두 가지 상태 중의 하나를 기억시킬 수 있다. 즉, 다음 그림과 같이 전류가 흐르는 방향에 따라 1이나 0의 상태를 갖게 된다.
* 읽기방법: 자기코어에 기억된 내용을 읽을 때에는 자기코어에 0을 기억시킬 때와 같은 방향으로 전류를 흐르게 한 후에 읽기 위한 선에 전류가 흐르게 되면 1, 흐르지 않으면 0으로 판단한다.
* 아폴로 우주선의 컴퓨터에는 이 자기코어 메모리 장치가 사용되었다. 수작업으로 만드는 수공업품이며, 현대의 메모리처럼 모듈식으로 제작되었지만 부피는 상당히 크다.
  • 자기 디스크★※→: 매체로 원반을 이용한다. 원반의 특정 트랙으로는 임의 접근이 가능하지만 원하는 섹터를 읽을 때까지는 순차 접근만이 가능하다. 이를 하이브리드 접근이라고 한다.
  • 자기 드럼☆※→

    • 파일:external/upload.wikimedia.org/ERA_Magnetic_Drum,_US,_c._1951_-_Computer_History_Museum_-_Mountain_View,_California.jpg
      매체로 원통(Cylinder)의 바깥쪽을 이용한다. 실린더의 바깥쪽에 자성물질을 발라두고 실린더를 회전시키거나, 실린더 표면을 읽는 헤드를 여러 개 두어 특정 위치의 값을 읽는다. 반도체 메모리를 컴퓨터에 기억장치로 도입하기 전에는 자기 드럼을 주기억장치로 활용하였다. 이후 반도체 메모리가 주기억장치의 대세가 되면서 현재는 시장에서 퇴출된 상태이다. 자기 드럼이 주기억장치로 활용될 때에는 CPU에서 특정 명령을 수행한 뒤 다음 명령을 읽어와야 할 때 드럼 헤드의 위치에 바로 다음 명령어가 위치하도록 드럼의 회전 속도와 명령의 수행 시간을 계산하는 최적화를 사람이 손으로 직접 하기도 하였다. 당시에는 자기 드럼이 자기 디스크보다 빨랐기에 주기억장치로 활용될 수 있었다.
  • 자기테이프★→: 가격 대비 저장용량의 끝판왕.

1.3.3. 광학(Optical) 방식

  • CD★※→
  • DVD★※→
  • Blu-ray Disc★※→
  • M-DISC★※→
  • 광자기 디스크★※→
  • 플롭티컬 디스크★※→ - 플로피디스크와 광학 매체를 결합하여 플로피디스크 크기의 매체에 120M 데이터를 저장할 수 있는 장치였으며, 드라이브 역시 일반 플로피티스크와 플롭티컬 디스크를 자유자재로 읽을 수 있었다. 하지만 비싼 가격에 CD의 등장으로 시장에서 뜨지 못하고 곧바로 사장되었다.
  • 천공 카드★: 엄연히 보조기억장치 중 하나이다.
  • OMR 카드
  • 주판☆: 기계 대신 사람이 직접 액세스하는 휘발성 메모리.

1.4. 관습에 따른 분류

램디스크를 보면 알겠지만, 기술의 발전 및 대세였던 기억장치들의 발전사에 따라 이름 불리다보니 이름과 실제가 다른 것들이 많다. 영어로 쓰여 있지만, 미국인 영국인이 쓰지 않는 콩글리시도 많다.
  • 매우 빠른 메모리
    • 캐시: 캐시 메모리를 지칭한다. 소비자가 직접 구매하는 제품은 아니고, CPUHDD 등에서 스펙으로 접하는 용어다. 딱히 혼란을 유도하는 이름은 아니다.
    • 버퍼: 느린 저장장치들은 완충역할을 해주는 보조적인 버퍼 메모리를 많이 활용한다. 그냥 캐시라고 불리기도 하며, 파워나 부스터 등으로 마케팅 되기도 한다.
  • 빠른 메모리
    • RAM: 1990년대 중반부터 말까지는 주로 SDRAM을 지칭했으나 2000년 DDR SDRAM이 등장한 이후[3]부터는 DDR SDRAM을 지칭한다. 엄격 진지 근엄하자면, 현대에 널리 사용되는 거의 모든 기억 장치가 RAM이다. 쓰기가 안 되는 ROM은 RAM이 아니라고 할 수도 있으나 Random Access가 가능하기 때문에 엄격 진지 근엄한 정의로는 ROM 역시 RAM의 일종이다. 테이프나 천공 카드는 Random Access가 불가능하기 때문에 RAM이 아니다.
    • ROM: 전원을 껐을 때 날아가지 않은 메모리로 인식하는 사람이 많다. 플래시 메모리로 오해하기도 한다. 자세히 들어가면 플래시 메모리이긴 하며 ROM의 역할을 플래시 메모리가 대체하기도 하지만, 재기록 가능한 메모리를 ROM으로 부르는 오해도 발생한다.
  • 느리지만 보존되는 메모리
    • 메모리
      • 보통 메모리 카드를 지칭한다. 디지털 카메라가 한창이었을 시절 그렇게 굳어졌다. 메모리카드가 소형화된 2010년대에는 microSD 또는 그냥 SD카드 또는 샌디스크라 불린다.
      • 이 짧고 입에 착 달라붙어서 일반적으로는 RAM이라고 부르지만 디스크와 상대적인 개념으로, DDR SDRAM을 지칭하기도 한다. 그런데 이럴 때는 보통 '주기억장치', 혹은 '메인 메모리'를 사용한다.
      • 하드디스크가 없는 플래시 메모리를 사용한 스마트폰이 등장하면서 혼란하다 혼란해졌다. 2GB메모리, 16GB메모리, 64GB메모리 간혹 어디서 뭔가 들은 사람이 2GB RAM, 16GB ROM, 64GB 샌디스크라 적기도 하는데, 이건 아니다.
      • SD카드(안드로이드): microSD카드가 아닌, 내부 플래시 메모리(eMMC) 저장소를 지칭한다. 슬롯에 꽂아 쓰는 그 microSD카드는 external sdcard라고 한다. 그렇다고 안드로이드 뚜껑을 따면 내부에 SD카드가 심어져 있는 것은 아니다. 내부 메모리는 사용자가 터치할 수 없는 안드로이드 운영체제 전용 메모리를 지칭한다. 이렇게 된 이유는 안드로이드가 개발될 당시 내부 메모리 가격이 비싸서 MB단위의 적은 용량의 칩을 사용할 수밖에 없었기 때문이다. 내장 메모리를 운영체제용(필수)으로 이용하고, SDcard를 삽입시켜 사용자 데이터 저장용(선택)으로 쓰도록 했던 것. 이후 메모리 가격이 내려가면서 SDcard라 이름 붙은 영역이 내장 메모리의 파티션으로 들어갔다가, 그 이후에는 폴더로 전환되는 과정에서 이름과 실제가 달라지게 되었다.
    • 하드: 보통 재기록 가능한 비 휘발성 저장소를 지칭한다. 오랜 기간 동안 하드디스크가 저장소 역할을 해왔기 때문에 아무런 문제 없이 사용되다가, SSD가 나오면서 혼돈 파괴 망가가 시작되었다. 초창기에는 SSD를 그냥 하드라고 부르기도 하고, SSD 하드라 부르기도 했다.
    • 디스크: 저장소를 지칭한다. 하드디스크, 컴팩트 디스크의 줄임말로 오래도록 써 왔다. 덕분에 디스크가 없는 램디스크, 샌디스크, 이동식 디스크같은 것들도 존재하게 되었으며, SSD의 D가 디스크라 생각하는 사람들도 꽤 있다.
  • 이동식 메모리
    • CD: 광학 디스크를 지칭한다. 대다수의 ODD는 CD드라이브로 불린다. 이후 출시된 DVD, 블루레이도 고용량 CD라 부르는 사람들이 많다. 딱히 문제되지는 않는데, 광학디스크가 사양세라 부를 일도 거의 없어졌기 때문이다.
    • USB: USB 메모리, 정확히는 손가락 크기의 USB 플래시 메모리 막대기를 지칭한다. 외장하드에도 USB가 있지만, USB라 부르지 않는다. 외장 SSD는 기술적으로 USB 메모리에 가깝지만, 외장하드라 불릴 여지가 높다.

2. 기억장치의 성능

기억장치의 성능은 기억장치의 용량, 접근 시간, 데이터 전송률 등으로 평가할 수 있다.

2.1. 용량(Storage Capacity)

큰 용량을 나타낼 때에는 SI 접두어에서 따온 단위를 앞에 붙인다.

1Bit(비트) = 가장 작은 용량 단위
1Byte(바이트) = 8Bit
1kB(킬로바이트) = 2의 10제곱 Byte = 1024 Byte
1MB(메가바이트) = 2의 20제곱 Byte = 1024 KB
1GB(기가바이트) = 2의 30제곱 Byte = 1024 MB
1TB(테라바이트) = 2의 40제곱 Byte = 1024 GB
1PB(페타바이트) = 2의 50제곱 Byte = 1024 TB
1EB(엑사바이트) = 2의 60제곱 Byte = 1024 PB
1ZB(제타바이트) = 2의 70제곱 Byte = 1024 EB
1YB(요타바이트) = 2의 80제곱 Byte = 1024 ZB

컴퓨터의 기억장치는 주기억장치, 즉 램의 용량이 커질수록 컴퓨터의 연산 속도가 빨라질 수 있다. 그러나 경제적인 면이나 효율적인 면을 고려하여 적절한 용량을 선택하는 것이 좋다.

참고로 위 용량 표기는 실제로는 정확하지 않다. 자기디스크 기억장치, 반도체 보조기억장치가 그렇다. 여기에 대해서는 아래 항목 참조.

여담으로, 2017년에 전 세계의 모든 인터넷 정보를 다 모으면 44ZB가 된다고 한다.(다른 뉴스에서 나옴) 차후 44zb보다 정확한 용량을 알게된다면 내용 수정 바람.(2018/12/10수정됨)

2.1.1. 하드디스크와 플래시 메모리의 표기 용량과 실제

2.2. 접근 시간(Access Time)

접근 시간은 기억장치에 기억되어 있는 데이터를 읽거나 기억장치에 데이터를 기록하는데 소요되는 시간을 말한다,
램의 접근 시간은 기억시킬 메모리의 주소를 메모리 주소 레지스터(MAR)에 전달한 후, 메모리 버퍼 레지스터(MBR)에서 기억시킬 데이터를 수신할 때까지 걸리는 시간을 의미한다.

2.3. 데이터 전송률(Data Transfer Rate)

데이터 전송률은 기억장치에서 1초 동안에 전송될 수 있는 최대 정보량을 의미하는 것으로 대역폭(Bandwidth)이라고도 한다. 데이터 전송률의 단위는 초당 비트(bps)[4] 또는 초당 워드(Word/S)이다. USBSATA의 규격을 볼 때 Gbps라는 표기를 봤을 것이다.

3. 기타

MS에서는 느린 보조 기억장치인 HDD를 보완하기 위해서 USB 메모리 등을 이용하여 일종의 보조 캐시 처럼 사용하는 ReadyBoost라는 기술을 선보인 적이 있다. 다만, 이는 느린 HDD일 때나 효과가 있고, SSD 나 고속 HDD에서는 기능 자체가 동작하지 않는다. SSD가 널리 보급됨에 따라 같이 사장되어 버린 기술.

파일:크리에이티브 커먼즈 라이선스__CC.png 이 문서의 내용 중 전체 또는 일부는 메모리 문서의 r47 판, 2번 문단에서 가져왔습니다. 이전 역사 보러 가기


[1] 시스템의 비트를 따라간다. 즉, 32비트 시스템이라면 32비트 정수, 64비트 시스템이라면 64비트 정수.[2] 이는 CPU의 작동 단계인 Fetch-Decode-Execute-Write Back(Store)와 일치한다.[3] 정확히 따지면 초창기인 2000~2001년 사이에는 인텔이 매우 비싼 가격의 RDRAM으로 밀어주는 바람에 DDR SDRAM을 사용할 수 있는 메인보드가 많지 않았고, 설령 찾았더라도 당시 DDR SDRAM이 기존 SDRAM보다 더 비싼 가격을 헝성하는 등 접근성이 중요한 일반 사용자 입장으로썬 매리트가 떨어졌기 때문에 여전히 SDRAM을 지칭하는 경우가 더 많았다. 인텔이 RDRAM을 포기하고 펜티엄 4 노스우드 세대인 2002년이 되어서야 DDR SDRAM으로 정착되었다.[4] 1바이트는 8비트이므로, 초당 바이트로 환산하려면 8로 나눠야 한다.

분류