메모리 컨트롤러

thumb|right | 인텔 82PM45 메모리 컨트롤러 허브
**메모리 컨트롤러**(memory controller), **메모리 칩 컨트롤러**(memory chip controller, **MCC**) 또는 **메모리 컨트롤러 장치**(memory controller unit, **MCU**)는 컴퓨터의 주 메모리로 들어오고 나가는 데이터 흐름을 관리하는 디지털 회로이다. 메모리 컨트롤러가 마이크로프로세서의 필수 부분과 같이 다른 칩에 통합될 때, 일반적으로 **통합 메모리 컨트롤러** (**IMC**)라고 불린다.

메모리 컨트롤러는 동적 랜덤 액세스 메모리 (DRAM)를 읽고 쓰는 데 필요한 논리를 포함하며, 중요한 메모리 리프레시 및 기타 기능을 제공한다. DRAM 읽기 및 쓰기는 DRAM의 행 및 열 데이터 주소를 멀티플렉서 회로의 입력으로 선택하여 수행되며, DRAM의 디멀티플렉서는 변환된 입력을 사용하여 올바른 메모리 위치를 선택하고 데이터를 반환한다. 이 데이터는 다시 멀티플렉서를 통해 전달되어 데이터를 통합함으로써 작업에 필요한 버스 폭을 줄인다. 메모리 컨트롤러의 버스 폭은 초기 시스템의 8비트에서부터 더 복잡한 시스템의 512비트에 이르기까지 다양하며, 일반적으로 4개의 64비트 동시 메모리 컨트롤러가 병렬로 작동하는 형태로 구현되지만, 일부는 두 개의 64비트 메모리 컨트롤러가 128비트 메모리 장치에 접근하는 데 사용되기도 한다.

PowerQUICC II 프로세서에 통합된 것과 같은 일부 메모리 컨트롤러는 오류 검출 정정 하드웨어를 포함한다. 많은 현대 프로세서 또한 메모리 관리 장치 (MMU)가 통합되어 있으며, 이는 많은 운영체제에서 가상 주소 지정을 구현한다. 초기 x86-32 프로세서에서는 MMU가 CPU에 통합되었지만, 메모리 컨트롤러는 일반적으로 노스브리지의 일부였다.

## 역사
오래된 인텔 및 파워PC 기반 컴퓨터는 주 프로세서와 분리된 메모리 컨트롤러 칩을 가지고 있다. 종종 이들은 컴퓨터의 노스브리지에 통합되어 있으며, 때로는 메모리 컨트롤러 허브라고도 불린다.

대부분의 최신 데스크톱 또는 워크스테이션 마이크로프로세서는 인텔, AMD 및 ARM 아키텍처 기반의 마이크로프로세서를 포함하여 **통합 메모리 컨트롤러** (**IMC**)를 사용한다. K8 (2003년경) 이전에는 AMD 마이크로프로세서가 마더보드의 노스브리지에 메모리 컨트롤러를 구현했다. K8 이후부터 AMD는 통합 메모리 컨트롤러를 사용했다. 마찬가지로, 네할렘 (2008년경) 이전까지 인텔 마이크로프로세서는 마더보드의 노스브리지에 구현된 메모리 컨트롤러를 사용했다. 네할렘 이후부터는 통합 메모리 컨트롤러로 전환했다. 통합 메모리 컨트롤러를 사용하는 다른 마이크로프로세서 아키텍처의 예로는 NVIDIA의 페르미, IBM의 POWER5, 그리고 썬 마이크로시스템즈의 UltraSPARC T1이 있다.

통합 메모리 컨트롤러는 메모리 지연 시간을 줄이는 것과 같이 시스템 성능을 향상시킬 수 있는 잠재력을 가지고 있지만, 마이크로프로세서를 특정 유형의 메모리에 고정시켜 새로운 메모리 기술을 지원하기 위해 재설계를 강요한다. DDR2 SDRAM이 도입되었을 때, AMD는 새로운 애슬론 64 CPU를 출시했다. 이 새로운 모델은 DDR2 컨트롤러를 탑재하여 다른 물리적 소켓(소켓 AM2라고 함)을 사용하므로, 새로운 유형의 RAM을 위해 설계된 마더보드에만 장착될 수 있다. 메모리 컨트롤러가 온다이에 있지 않을 때, 동일한 CPU는 새로운 메모리를 사용하기 위해 업데이트된 노스브리지가 있는 새 마더보드에 설치될 수 있다.

DEC 알파 21066 및 HP PA-7300LC와 같은 1990년대의 일부 마이크로프로세서에는 통합 메모리 컨트롤러가 있었지만, 성능 향상보다는 외부 메모리 컨트롤러의 필요성을 없애 시스템 비용을 줄이기 위해 구현되었다.

일부 CPU는 칩셋의 일부가 아닌 전용 외부 구성 요소로 메모리 컨트롤러를 갖도록 설계되었다. 일례로 IBM 파워8은 DIMM 모듈에 장착되어 메모리 버퍼, L4 캐시 칩, 그리고 실제 메모리 컨트롤러 역할을 하는 외부 센타우르 칩을 사용한다. 센타우르 칩의 첫 번째 버전은 DDR3 메모리를 사용했지만, 이후 DDR4를 사용할 수 있는 업데이트된 버전이 출시되었다.

## 보안<span class="anchor" id="SCRAMBLING"></span>
몇몇 실험적인 메모리 컨트롤러는 캐시 및 버스 성능을 향상시키기 위해 CPU의 메모리 관리 장치에서 수행하는 1단계 주소 변환 외에 2단계 주소 변환을 포함한다.

특정 인텔 코어 프로세서에 통합된 메모리 컨트롤러는 주 메모리에 기록된 사용자 데이터를 의사 난수 패턴으로 바꾸는 기능인 **메모리 스크램블링**을 제공한다. 메모리 스크램블링은 포렌식 및 리버스 엔지니어링 분석을 DRAM 데이터 잔류성 기반으로 방지하여 다양한 유형의 콜드 부팅 공격을 효과적으로 무력화할 수 있는 잠재력을 가지고 있다. 현재 관행으로는 이는 달성되지 않았으며, 메모리 스크램블링은 DRAM 관련 전기적 문제를 해결하기 위해 설계되었을 뿐이다. 2010년대 후반의 메모리 스크램블링 표준은 보안 문제를 다루지 않으며 암호학적으로 안전하거나 공개적인 수정 또는 분석에 개방되어 있지 않다.

ASUS와 인텔은 자체적인 메모리 스크램블링 표준을 가지고 있다. ASUS 마더보드는 사용자가 ASUS 또는 인텔 중 어떤 메모리 스크램블링 표준을 사용할지, 또는 이 기능을 완전히 끌지 선택할 수 있도록 허용했다.

## 변형

### 더블 데이터 레이트 메모리
더블 데이터 레이트 (DDR) 메모리 컨트롤러는 DDR SDRAM을 구동하는 데 사용되며, 시스템 메모리 클럭의 상승 에지와 하강 에지 모두에서 데이터가 전송된다. DDR 메모리 컨트롤러는 단일 데이터 레이트 컨트롤러에 비해 훨씬 더 복잡하지만, 메모리 클럭 속도나 버스 폭을 늘리지 않고도 두 배의 데이터를 전송할 수 있다.

### 다중 채널 메모리

다중 채널 메모리 컨트롤러는 DRAM 장치가 여러 버스로 분리되어 메모리 컨트롤러가 병렬로 접근할 수 있도록 하는 메모리 컨트롤러이다. 이는 채널 수만큼 버스의 이론적인 대역폭 양을 증가시킨다. 모든 DRAM에 대한 채널을 사용하는 것이 이상적인 해결책이겠지만, 채널을 더 추가하면 복잡성과 비용이 증가한다.

### 완전 버퍼링 메모리

완전 버퍼링 메모리 시스템은 모든 메모리 모듈에 메모리 버퍼 장치를 배치하는데 (완전 버퍼링 RAM이 사용될 때 FB-DIMM이라고 함), 이는 기존의 메모리 컨트롤러 장치와 달리 이전 RAM 설계에서 사용된 병렬 링크 대신 직렬 데이터 링크를 메모리 컨트롤러에 사용한다. 이는 마더보드에 메모리 장치를 배치하는 데 필요한 와이어 수를 줄여 (더 적은 수의 레이어를 사용할 수 있어 단일 보드에 더 많은 메모리 장치를 배치할 수 있음) 지연 시간을 증가시키는 단점이 있다(메모리 위치에 접근하는 데 필요한 시간). 이 증가는 DRAM 셀에서 읽은 병렬 정보를 FB-DIMM 컨트롤러가 사용하는 직렬 형식으로 변환하고, 다시 마더보드의 메모리 컨트롤러에서 병렬 형식으로 변환하는 데 필요한 시간 때문이다.

### 플래시 메모리 컨트롤러

USB 플래시 드라이브 및 솔리드 스테이트 드라이브와 같은 많은 플래시 메모리 장치에는 플래시 메모리 컨트롤러가 포함되어 있다. 플래시 메모리는 RAM보다 접근 속도가 본질적으로 느리고, 일반적으로 수백만 번의 쓰기 주기 후에 사용 불가능해지기 때문에 RAM 애플리케이션에는 적합하지 않다.

## 같이 보기
* 주소 생성 장치
* 메모리 스크러빙
* 저장 컨트롤러

## 각주

## 외부 링크
*  듀얼 채널 메모리 컨트롤러와 사용법 설명
* 메모리 컨트롤러 소개
* 단일 및 다중 채널 메모리 모드에 대한 인텔 가이드
*  메모리 컨트롤러란 무엇이며 어떻게 작동하는가
* 메모리 컨트롤러란 무엇인가?
* 메모리 컨트롤러: 역사와 작동 방식
* 플래시 메모리: 유형 및 개발 역사

분류:컴퓨터 메모리
분류:집적 회로