주기억장치

[섬네일|[DDR4 SDRAM 모듈.  기준으로 PC와 서버에 사용되는 컴퓨터 메모리의 90% 이상이 이 유형이었다.]]

**주기억장치**(主記憶裝置) 또는 **컴퓨터 메모리**(computer memory)는 컴퓨터에서 즉시 사용할 수 있도록 데이터 및 프로그램과 같은 정보를 저장한다. 메모리라는 용어는 종종 RAM, 주기억장치 또는 주기억장치라는 용어와 동의어로 사용된다. 주기억장치에 대한 구식 동의어로는 코어(자기 코어 메모리의 경우)와 스토어(store)가 있다.

주기억장치는 대용량 스토리지에 비해 빠르게 작동하며 대용량 스토리지는 비트당 더 저렴하고 용량이 더 크지만 속도가 느리다. 열려 있는 프로그램과 활발하게 처리되는 데이터를 저장하는 것 외에도 컴퓨터 메모리는 대용량 스토리지 캐시 및 쓰기 버퍼 역할을 하여 읽기 및 쓰기 성능을 향상시킨다. 운영체제는 실행 중인 소프트웨어에서 필요하지 않은 한 캐싱을 위해 RAM 용량을 빌려 사용한다. 필요한 경우 컴퓨터 메모리의 내용을 스토리지로 전송할 수 있으며, 이를 수행하는 일반적인 방법은 가상 메모리라는 메모리 관리 기술을 이용하는 것이다.

최신 컴퓨터 메모리는 반도체 메모리로 구현되며 데이터는 메모리 셀 내에 저장된다. 메모리 셀은 MOS 트랜지스터와 집적 회로의 다른 구성 요소로 만들어진다. 반도체 메모리에는 휘발성과 비휘발성 메모리의 두 가지 주요 유형이 있다. 비휘발성 메모리의 예로는 플래시 메모리와 고정 기억 장치, PROM, EPROM, EEPROM 메모리가 있다. 휘발성 메모리의 예로는 주기억장치에 사용되는 동적 램(DRAM)과 주로 CPU 캐시에 사용되는 정적 램(SRAM)이 있다.

대부분의 반도체 메모리는 각각 하나의 비트(0 또는 1)를 저장하는 메모리 셀로 구성된다. 플래시 메모리 구조는 메모리 셀당 한 비트와 셀당 여러 비트를 저장할 수 있는 멀티 레벨 셀을 모두 포함한다. 메모리 셀은 1, 2, 4, 8, 16, 32, 64 또는 128비트와 같이 고정된 워드 길이의 워드로 그룹화된다. 각 워드는 N비트 이진 주소로 접근할 수 있어 메모리에 2N개의 워드를 저장할 수 있다.

## 역사
[섬네일|컴퓨터 메모리 및 [기억 장치|스토리지의 역사적 최저 소매 가격]]
[섬네일|초기 펀치 곱셈 계산기인 [IBM 602에 사용된 전기 기계식 메모리]]
[섬네일|[에니악 섹션 뒷면의 세부 정보, 진공관 표시]]
[섬네일|upright|[IAS 컴퓨터에 메모리로 사용된 윌리엄스관 ]]
[섬네일|8[기비바이트|GB microSDHC 카드가 8바이트의 자기코어 메모리 위에 놓여 있다(1코어는 1비트이다).]]

1940년대 초, 메모리 기술은 종종 몇 바이트의 용량을 허용했다. 수천 개의 진공관을 사용한 최초의 전자 프로그래밍 가능 디지털 컴퓨터인 에니악은 진공관에 저장된 10진수 20개를 포함하는 간단한 계산을 수행할 수 있었다.

컴퓨터 메모리의 다음 중요한 발전은 1940년대 초 J. 프레스퍼 에커트가 개발한 음향 지연선 기억기였다. 유리관에 수은을 채우고 각 끝을 석영 크리스탈로 막아 지연선은 수은을 통해 전파되는 음파 형태로 정보 비트를 저장할 수 있었으며, 석영 크리스탈은 비트를 읽고 쓰는 트랜스듀서 역할을 했다. 지연선 메모리는 몇 천 비트의 용량으로 제한되었다.

지연선에 대한 두 가지 대안인 윌리엄스관과 셀렉트론 튜브는 1946년에 등장했으며, 둘 다 유리관에 전자빔을 저장 수단으로 사용했다. 브라운관을 사용하여 프레드 윌리엄스는 최초의 랜덤 액세스 컴퓨터 메모리인 윌리엄스관을 발명했다. 윌리엄스관은 셀렉트론 튜브보다 더 많은 정보를 저장할 수 있었고(셀렉트론은 256비트로 제한되었지만 윌리엄스관은 수천 비트를 저장할 수 있었다) 비용이 저렴했다. 그럼에도 불구하고 윌리엄스관은 환경 교란에 극도로 민감했다.

1940년대 후반부터 비휘발성 메모리를 찾기 위한 노력이 시작되었다. 자기코어 메모리는 전원 손실 후에도 메모리 호출을 가능하게 했다. 이는 1940년대 후반 프레드릭 W. 비헤(Frederick W. Viehe)와 왕안이 개발했고, 1950년대 초 제이 포레스터와 얀 A. 라이크만이 개선하여 1953년 훨윈드 I 컴퓨터와 함께 상용화되었다. 자기코어 메모리는 1960년대 MOS 반도체 메모리가 개발될 때까지 지배적인 형태의 메모리였다.

최초의 반도체 메모리는 1960년대 초 바이폴라 트랜지스터를 사용하여 플립플롭 회로로 구현되었다. 개별 소자로 만든 반도체 메모리는 1961년 텍사스 인스트루먼트에서 미국 공군에 처음 공급했다. 같은 해 페어차일드 반도체의 응용 엔지니어 밥 노먼(Bob Norman)은 집적 회로(IC) 칩에 솔리드 스테이트 메모리 개념을 제안했다. 최초의 바이폴라 반도체 메모리 IC 칩은 1965년 IBM이 출시한 SP95였다. 반도체 메모리는 자기코어 메모리에 비해 성능이 향상되었지만, 더 크고 비쌌으며 1960년대 후반까지 자기코어 메모리를 대체하지 못했다.

### MOS 메모리

MOSFET의 발명으로 금속 산화물 반도체(MOS) 트랜지스터를 메모리 셀 저장 요소로 실용적으로 사용할 수 있게 되었다. MOS 메모리는 1964년 페어차일드 반도체의 존 슈미트(John Schmidt)가 개발했다. 성능 향상 외에도 MOS 반도체 메모리는 자기 코어 메모리보다 저렴하고 전력 소비가 적었다. 1965년 영국왕립레이더연구소의 J. 우드(J. Wood)와 R. 볼(R. Ball)은 전원 공급 장치, 스위치 교차 결합, 스위치 및 지연선 스토리지를 위한 MOSFET 전력 장치 외에 CMOS(상보 MOS) 메모리 셀을 사용하는 디지털 스토리지 시스템을 제안했다. 1968년 페어차일드에서 페데리코 파진이 실리콘 게이트 MOS 집적 회로(MOS IC) 기술을 개발하여 MOS 메모리 칩 생산이 가능해졌다. NMOS 메모리는 1970년대 초 IBM에 의해 상용화되었다. MOS 메모리는 1970년대 초 자기 코어 메모리를 제치고 지배적인 메모리 기술이 되었다.

휘발성 랜덤 액세스 메모리(RAM)의 두 가지 주요 유형은 정적 램(SRAM)과 동적 램(DRAM)이다. 바이폴라 SRAM은 1963년 페어차일드 반도체의 로버트 노먼(Robert Norman)이 발명했으며, 이어서 1964년 페어차일드의 존 슈미트(John Schmidt)가 MOS SRAM을 개발했다. SRAM은 자기코어 메모리의 대안이 되었지만, 데이터의 각 비트당 6개의 트랜지스터가 필요하다. SRAM의 상업적 사용은 1965년 IBM이 시스템/360 모델 95용 SP95 SRAM 칩을 출시하면서 시작되었다.

도시바는 1965년 Toscal BC-1411 전자 계산기에 바이폴라 DRAM 메모리 셀을 도입했다. 바이폴라 DRAM은 성능이 향상되었지만 당시 지배적이던 자기코어 메모리의 저렴한 가격과 경쟁할 수 없었다. MOS 기술은 현대 DRAM의 기반이다. 1966년 IBM 토마스 J. 왓슨 연구 센터의 로버트 H. 데나드는 MOS 메모리 연구에 몰두하고 있었다. MOS 기술의 특성을 조사하던 중 그는 커패시터를 만들 수 있고, MOS 커패시터에 전하 또는 무전하를 저장하여 비트의 1과 0을 나타낼 수 있으며, MOS 트랜지스터가 커패시터에 전하를 쓰는 것을 제어할 수 있음을 발견했다. 이는 그가 단일 트랜지스터 DRAM 메모리 셀을 개발하게 된 계기가 되었다. 1967년 데나드는 MOS 기술 기반의 단일 트랜지스터 DRAM 메모리 셀에 대한 특허를 출원했다. 이는 1970년 10월 최초의 상업용 DRAM IC 칩인 인텔 1103으로 이어졌다. SDRAM(SDRAM)은 1992년 삼성 KM48SL2000 칩으로 처음 출시되었다.

메모리라는 용어는 또한 현대의 플래시 메모리를 포함한 고정 기억 장치(ROM)와 같은 비휘발성 메모리를 지칭하는 데도 자주 사용된다. PROM은 1956년 아메리칸 보쉬 아르마 코퍼레이션(American Bosch Arma Corporation)의 아르마 디비전(Arma Division)에서 근무하던 웬 칭 차우가 발명했다. 1967년 벨 연구소의 다원 강(Dawon Kahng)과 사이먼 시제는 MOS 반도체 소자의 플로팅 게이트가 재프로그래밍 가능한 ROM의 셀로 사용될 수 있다고 제안했으며, 이는 1971년 인텔의 도브 프로만이 EPROM(지우기 가능한 PROM)을 발명하게 된 계기가 되었다. EEPROM(전기적으로 지울 수 있는 PROM)은 1972년 전기기술연구소의 야스오 타루이(Yasuo Tarui), 유타카 하야시(Yutaka Hayashi), 키요코 나가(Kiyoko Naga)가 개발했다. 플래시 메모리는 1980년대 초 도시바의 마스오카 후지오가 발명했다. 마스오카와 동료들은 1984년 NOR 플래시의 발명을 발표했고, 이어서 1987년 낸드 플래시를 발표했다. 도시바는 1987년 낸드 플래시 메모리를 상용화했다.

기술 개발과 규모의 경제는 이른바 **(VLM)** 컴퓨터를 가능하게 했다.

## 휘발성 범주

### 휘발성 메모리
섬네일|다양한 유형의 DRAM을 포함하는 다양한 메모리 모듈(위에서 아래로): DDR SDRAM, SDRAM, EDO DRAM 및 FPM DRAM

휘발성 메모리는 저장된 정보를 유지하기 위해 전원이 필요한 컴퓨터 메모리이다. 대부분의 현대 반도체 휘발성 메모리는 정적 램(SRAM) 또는 동적 램(DRAM)이다. DRAM은 데스크톱 시스템 메모리에 주로 사용된다. SRAM은 CPU 캐시에 사용된다. SRAM은 적은 메모리를 필요로 하는 소형 임베디드 시스템에서도 찾아볼 수 있다.

SRAM은 전원이 연결되어 있는 한 내용을 유지하며 더 간단한 인터페이스를 사용할 수 있지만, 일반적으로 비트당 6개의 트랜지스터를 사용한다. 동적 RAM은 인터페이스 및 제어가 더 복잡하며, 내용을 잃지 않기 위해 정기적인 새로고침 주기가 필요하지만, 비트당 하나의 트랜지스터와 하나의 커패시터만 사용하므로 훨씬 더 높은 밀도와 훨씬 저렴한 비트당 비용을 달성할 수 있다.

### 비휘발성 메모리

비휘발성 메모리는 전원이 공급되지 않을 때에도 저장된 정보를 유지할 수 있다. 비휘발성 메모리의 예로는 고정 기억 장치, 플래시 메모리, 대부분의 자기 컴퓨터 저장 장치 유형(예: 하드 디스크 드라이브, 플로피 디스크 및 자기 테이프), 광 디스크, 그리고 자기 드럼, 천공 테이프 및 천공 카드와 같은 초기 컴퓨터 저장 방법이 있다.

개발 중인 비휘발성 메모리 기술에는 FeRAM, 프로그래머블 금속화 셀, 스핀 토크 전이 자기 저항 메모리, SONOS, RRAM, 레이스트랙 메모리, 나노 램, 3D XPoint 및 밀리피드 메모리가 있다.

### 준휘발성 메모리
세 번째 메모리 범주는 준휘발성이다. 이 용어는 전원이 제거된 후 제한된 비휘발성 지속 시간을 가지지만 데이터는 궁극적으로 손실되는 메모리를 설명하는 데 사용된다. 준휘발성 메모리를 사용할 때의 일반적인 목표는 휘발성 메모리와 관련된 높은 성능과 내구성을 제공하면서 비휘발성 메모리의 일부 이점을 제공하는 것이다.

예를 들어, 일부 비휘발성 메모리 유형은 쓰기 시 마모를 겪는다. 마모된 셀은 휘발성이 증가하지만 다른 기능은 계속 작동한다. 따라서 자주 쓰이는 데이터 위치는 마모된 회로를 사용하도록 지시할 수 있다. 위치가 알려진 유지 시간 내에 업데이트되는 한 데이터는 유효하게 유지된다. 업데이트 없이 일정 기간이 지나면 값은 더 긴 유지 시간을 가진 덜 마모된 회로로 복사된다. 마모된 영역에 먼저 쓰면 마모되지 않은 회로의 마모를 피하면서 높은 쓰기 속도를 허용한다.

두 번째 예로, STT-RAM은 큰 셀을 구축하여 비휘발성으로 만들 수 있지만, 그렇게 하면 비트당 비용과 전력 요구 사항이 증가하고 쓰기 속도가 감소한다. 작은 셀을 사용하면 비용, 전력 및 속도가 향상되지만 준휘발성 동작이 발생한다. 일부 응용 프로그램에서는 증가된 휘발성을 관리하여 비휘발성 메모리의 많은 이점을 제공할 수 있다. 예를 들어, 전원을 제거하지만 데이터 손실 전에 깨어나도록 강제하거나, 읽기 전용 데이터를 캐시하고 전원 차단 시간이 비휘발성 임계값을 초과하면 캐시된 데이터를 폐기하는 방식으로 말이다.

준휘발성이라는 용어는 다른 메모리 유형으로 구성된 준휘발성 동작을 설명하는 데도 사용된다. 예를 들어, 동일한 마이크로칩에 SRAM과 비휘발성 메모리를 결합한 nvSRAM은 외부 신호가 휘발성 메모리에서 비휘발성 메모리로 데이터를 복사하지만, 복사가 발생하기 전에 전원이 제거되면 데이터가 손실된다. 또 다른 예는 배터리 백업 RAM으로, 외부 전원 손실 시 메모리 장치에 전원을 공급하기 위해 외부 전지를 사용한다. 전원이 장기간 꺼지면 배터리가 방전되어 데이터가 손실될 수 있다.

## 관리

메모리를 적절하게 관리하는 것은 컴퓨터 시스템이 제대로 작동하는 데 필수적이다. 현대의 운영체제는 메모리를 적절하게 관리하기 위한 복잡한 시스템을 가지고 있다. 그렇게 하지 않으면 버그나 느린 성능으로 이어질 수 있다.

### 버그
메모리의 부적절한 관리는 다음과 같은 유형을 포함한 버그 및 보안 취약성의 일반적인 원인이다.

* 메모리 누수는 프로그램이 운영체제로부터 메모리를 요청하고 사용을 마친 후에도 메모리를 반환하지 않을 때 발생한다. 이 버그가 있는 프로그램은 운영체제 메모리가 부족해져 프로그램이 실패할 때까지 점차 더 많은 메모리를 요구할 것이다.
* 세그멘테이션 오류는 프로그램이 접근할 권한이 없는 메모리에 접근하려고 할 때 발생한다. 일반적으로 그렇게 하는 프로그램은 운영체제에 의해 종료된다.
* 버퍼 오버플로는 프로그램이 할당된 공간의 끝에 데이터를 쓰고 이어서 다른 목적으로 할당된 메모리를 넘어 데이터를 계속 쓸 때 발생한다. 이는 메모리 접근 오류, 잘못된 결과, 충돌 또는 시스템 보안 위반을 포함한 불규칙한 프로그램 동작을 초래할 수 있다. 따라서 이는 많은 소프트웨어 취약성의 기반이며 악의적으로 악용될 수 있다.

### 가상 메모리

가상 메모리는 운영체제가 일반적으로 많은 최신 중앙 처리 장치의 일부인 메모리 관리 장치의 도움을 받아 물리 메모리를 관리하는 시스템이다. 이를 통해 여러 유형의 메모리를 사용할 수 있다. 예를 들어, 일부 데이터는 RAM에 저장될 수 있고 다른 데이터는 하드 디스크 드라이브(예: 스와프 파일)에 저장되어 캐시 계층 구조의 확장으로 기능한다. 이는 여러 가지 이점을 제공한다. 컴퓨터 프로그래머는 더 이상 데이터가 물리적으로 저장되는 위치나 사용자 컴퓨터에 충분한 메모리가 있을지 걱정할 필요가 없다. 운영체제는 활발하게 사용되는 데이터를 하드 디스크보다 훨씬 빠른 RAM에 배치할 것이다. RAM 용량이 모든 현재 프로그램을 실행하기에 충분하지 않으면 컴퓨터가 작업을 수행하는 데 걸리는 시간보다 RAM에서 디스크로 데이터를 이동하고 다시 이동하는 데 더 많은 시간을 소비하는 상황이 발생할 수 있다. 이를 스레싱이라고 한다.

### 보호된 메모리

보호된 메모리는 각 프로그램에 사용할 메모리 영역이 주어지고 해당 범위를 벗어나는 것이 방지되는 시스템이다. 운영체제가 프로그램이 자신의 것이 아닌 메모리를 변경하려고 시도했음을 감지하면 프로그램은 종료된다(또는 다른 방식으로 제한되거나 리디렉션된다). 이렇게 하면 문제가 있는 프로그램만 충돌하고 다른 프로그램은 오작동(우발적이든 의도적이든)의 영향을 받지 않는다. 보호된 메모리를 사용하면 컴퓨터 시스템의 신뢰성과 보안이 크게 향상된다.

보호된 메모리가 없으면 한 프로그램의 버그가 다른 프로그램에서 사용하는 메모리를 변경할 수 있다. 이로 인해 해당 다른 프로그램이 손상된 메모리로 실행되어 예측할 수 없는 결과가 발생한다. 운영체제의 메모리가 손상되면 전체 컴퓨터 시스템이 충돌하여 재부팅해야 할 수도 있다. 때로는 프로그램이 의도적으로 다른 프로그램에서 사용하는 메모리를 변경하기도 한다. 이는 바이러스 및 악성코드가 컴퓨터를 장악하기 위해 수행한다. 또한 중단점이나 후크를 삽입하기 위해 다른 프로그램을 수정하려는 의도적인 프로그램(예: 디버거)에 의해 무해하게 사용될 수도 있다.

## 같이 보기

* 메모리 지오메트리
* 메모리 계층 구조
* 메모리 구성
* 프로세서 레지스터는 데이터를 저장하지만 일반적으로 하나의 워드만 저장하고 주소 지정 메커니즘을 포함하지 않으므로 메모리로 간주되지 않는다.
* 유니버설 메모리, 대용량과 고속을 모두 결합한 메모리

## 내용주

## 각주

## 더 읽어보기
* 
* 

분류:컴퓨터 메모리
분류:디지털 전자공학
분류:MOSFET