Контроллер памяти , также известный как контроллер микросхемы памяти ( MCC ) или блок контроллера памяти ( MCU ), представляет собой цифровую схему, которая управляет потоком данных, поступающих в основную память компьютера и из нее . [1] [2] Когда контроллер памяти интегрирован в другую микросхему, например, как неотъемлемая часть микропроцессора , его обычно называют интегрированным контроллером памяти ( IMC ).
Контроллеры памяти содержат логику, необходимую для чтения и записи в динамическую память с произвольным доступом (DRAM), а также для обеспечения критического обновления памяти и других функций. Чтение и запись в DRAM выполняются путем выбора адресов данных строк и столбцов DRAM в качестве входов для схемы мультиплексора , где демультиплексор на DRAM использует преобразованные входы для выбора правильного расположения памяти и возврата данных, которые затем передаются обратно через мультиплексор для консолидации данных с целью уменьшения требуемой ширины шины для операции. Ширина шины контроллеров памяти варьируется от 8 бит в более ранних системах до 512 бит в более сложных системах, где они обычно реализуются как четыре 64-битных одновременных контроллера памяти, работающих параллельно, хотя некоторые работают с двумя 64-битными контроллерами памяти, используемыми для доступа к 128-битному устройству памяти.
Некоторые контроллеры памяти, например, интегрированные в процессоры PowerQUICC II, включают в себя аппаратные средства обнаружения и исправления ошибок . [3] Распространенной формой контроллера памяти является блок управления памятью (MMU), который во многих операционных системах реализует виртуальную адресацию .
Старые компьютеры на базе Intel и PowerPC имеют чипы контроллера памяти, которые отделены от основного процессора. Часто они интегрированы в северный мост компьютера, также иногда называемый концентратором контроллера памяти.
Большинство современных настольных или рабочих микропроцессоров используют интегрированный контроллер памяти ( IMC ), включая микропроцессоры Intel , AMD и те, что построены на архитектуре ARM . До K8 (около 2003 года) микропроцессоры AMD имели контроллер памяти, реализованный на северном мосту их материнской платы . В K8 и более поздних версиях AMD использовала интегрированный контроллер памяти. [4] Аналогично, до Nehalem (около 2008 года) микропроцессоры Intel использовали контроллеры памяти, реализованные на северном мосту материнской платы. Nehalem и позже перешли на интегрированный контроллер памяти. [5] Другие примеры архитектур микропроцессоров, которые используют интегрированные контроллеры памяти , включают Fermi от NVIDIA , POWER5 от IBM и UltraSPARC T1 от Sun Microsystems .
Хотя встроенный контроллер памяти может повысить производительность системы, например, за счет снижения задержки памяти , он привязывает микропроцессор к определенному типу (или типам) памяти, вынуждая перепроектировать его для поддержки новых технологий памяти. Когда была представлена DDR2 SDRAM , AMD выпустила новые процессоры Athlon 64. Эти новые модели с контроллером DDR2 используют другой физический сокет (известный как Socket AM2 ), поэтому они подойдут только к материнским платам, разработанным для нового типа оперативной памяти. Если контроллер памяти не встроен в кристалл, тот же процессор можно установить на новую материнскую плату с обновленным северным мостом для использования новой памяти.
Некоторые микропроцессоры 1990-х годов, такие как DEC Alpha 21066 и HP PA-7300LC , имели встроенные контроллеры памяти; однако это было реализовано не для повышения производительности, а для снижения стоимости систем за счет устранения необходимости во внешнем контроллере памяти. [ необходима цитата ]
Некоторые процессоры разработаны так, чтобы их контроллеры памяти были выделенными внешними компонентами, которые не являются частью чипсета. Примером является IBM POWER8 , который использует внешние чипы Centaur , которые монтируются на модули DIMM и действуют как буферы памяти, чипы кэша L4 и как фактические контроллеры памяти. Первая версия чипа Centaur использовала память DDR3, но позже была выпущена обновленная версия, которая может использовать DDR4. [6]
Несколько экспериментальных контроллеров памяти содержат второй уровень трансляции адресов в дополнение к первому уровню трансляции адресов, выполняемому блоком управления памятью ЦП, для улучшения производительности кэша и шины. [7]
Контроллеры памяти, интегрированные в некоторые процессоры Intel Core , обеспечивают скремблирование памяти как функцию, которая превращает пользовательские данные, записанные в основную память, в псевдослучайные шаблоны. [8] [9] Скремблирование памяти может предотвратить криминалистический и обратный инженерный анализ на основе остаточных данных DRAM , эффективно делая различные типы атак холодной загрузки неэффективными. В текущей практике это не было достигнуто; скремблирование памяти было разработано только для решения электрических проблем, связанных с DRAM. Стандарты скремблирования памяти конца 2010-х годов решают проблемы безопасности и не являются криптографически безопасными или открытыми для публичного пересмотра или анализа. [10]
ASUS и Intel имеют свои отдельные стандарты скремблирования памяти. Материнские платы ASUS позволяют пользователю выбирать, какой стандарт скремблирования памяти использовать (ASUS или Intel), или полностью отключить эту функцию. [ необходима цитата ]
Контроллеры памяти с двойной скоростью передачи данных (DDR) используются для управления DDR SDRAM , где данные передаются как по восходящим, так и по нисходящим фронтам тактовой частоты памяти системы. Контроллеры памяти DDR значительно сложнее по сравнению с контроллерами с одинарной скоростью передачи данных, [ необходима ссылка ], но они позволяют передавать вдвое больше данных без увеличения тактовой частоты памяти или ширины шины.
Многоканальные контроллеры памяти — это контроллеры памяти, в которых устройства DRAM разделены на несколько шин, чтобы контроллер(ы) памяти могли получать к ним параллельный доступ. Это увеличивает теоретическую пропускную способность шины в разы, равные количеству каналов. Хотя идеальным решением был бы канал для каждого DRAM, добавление большего количества каналов увеличивает сложность и стоимость.
Полностью буферизованные системы памяти размещают буферное устройство памяти на каждом модуле памяти (называемое FB-DIMM , когда используется полностью буферизованная RAM), которое в отличие от традиционных устройств контроллера памяти использует последовательный канал передачи данных к контроллеру памяти вместо параллельного канала, который использовался в предыдущих конструкциях RAM. Это уменьшает количество проводов, необходимых для размещения устройств памяти на материнской плате (позволяя использовать меньшее количество слоев, что означает, что больше устройств памяти может быть размещено на одной плате), за счет увеличения задержки (времени, необходимого для доступа к ячейке памяти). Это увеличение связано со временем, необходимым для преобразования параллельной информации, считываемой из ячейки DRAM, в последовательный формат, используемый контроллером FB-DIMM, и обратно в параллельную форму в контроллере памяти на материнской плате.
Теоретически буферное устройство памяти FB-DIMM может быть создано для доступа к любым ячейкам DRAM, что позволит разработать контроллер памяти, независимый от ячеек памяти, однако это не было продемонстрировано, поскольку технология находится в зачаточном состоянии.
Многие устройства флэш-памяти , такие как USB-флеш-накопители и твердотельные накопители , включают в себя контроллер флэш-памяти . Флеш-память по своей природе медленнее в доступе, чем ОЗУ, и часто становится непригодной для использования после нескольких миллионов циклов записи, что обычно делает ее непригодной для приложений ОЗУ.