Буферизация оперативной памяти это

Обновлено: 06.07.2024

Все вопросы и правила по ведению этой статьи были описаны в части 1. Автор ещё раз замечает, что он активно использует свои определения, и теоретические выкладки, которые никак не претендуют на официальный статус научных, но от этого хуже не становятся.

Буферы

Ещё один вид памяти, часто используемый, но нереализованный в виде API. Он берёт своё начало от вопросов по схемам редактирования файлов, что видимо, является темой последующих статей. Буферная память как следует из названия – это по сути дела то же, что и буферы. Но, в конце концов, такое понятие было обобщено и систематизировано, так как предлагаемая схема использования нашла себя и в других областях, отличных от вопросов буферизации. В общем случае темы буферизации и дефрагментирования являются довольно большими, очень скучно и нудно излагать их в одной статье, поэтому здесь будут лишь объяснения, связанные с буферной памятью, а все вопросы и причины, почему именно, так или иначе, таятся глубже.

Буферная память имеет несколько назначений.

Первое назначение: Целью механизма буферной памяти, (или то же что «прокси- систем») является уменьшение потребляемых ресурсов объектом приёмником, требующего сравнительно больших затрат, путём уменьшения частоты поступления потока данных в объект- приёмник.

Целью механизма буферной памяти является создание участка оперативной памяти для отработки процессов рейдеринга памяти, и других процессов, время выполнения которых зависит от размеров памяти.

Читатель может заметить ещё одну цель создания буферов. Это проведение некоторого рода операций над файлами большого размера, которые не умещаются в оперативной памяти. Однако следует считать, что этот случай попадает под первое назначение буфера, так как нехватку оперативной памяти можно понимать как большие затраты ресурсов. Таким образом под затратой ресурсов следует понимать как источник хранения данных, так и время выполнения кода.

Буферной памятью называется – объект памяти, которым владеют одновременно два объекта, не связанные между собой.

В этом определении важно два слова: «ДВА ОБЪЕКТА» и «НЕ СВЯЗАННЫЕ». В случае нарушения одного из этих условий мы автоматически попадаем в неизведанный мир Оморфо программирования.

Обычно два объекта, владеющие буферной памятью, называются по типу их отношений с буфером: «источник» / «приёмник». Один объект «источник» помещает данные в буфер, а другой объект – «приёмник» снимает их с буфера. Но (. ) сами эти объекты не связаны между собой ни какой архитектурной зависимостью кода! Между прочим, такая модель взаимодействия получила название прокси, когда существует система-посредник между двумя системами. То есть буфер иными словами является прокси-объектом, а источник – буфер – приёмник – прокси-системой.

Рабочий цикл буфера.

  1. Состояние сброса.
  2. Состояние наполнения.
  3. Состояние передачи.

Состоянием наполнения называется момент времени, в котором информация помещается в буфер.

Состоянием передачи называется процесс, когда информация из буфера перемещается в объект приёмник.

Графическое изображение цикла работы буфера представлено на следующем рисунке 2.1 .

Состояние сброса является начальным состоянием буферной памяти, после того как она заказана и выделена. Буферную память, как правило, заказывает третье лицо, и назначает её владельцам: источнику и приёмнику. То есть источник, и приёмник не подозревают, что они работают через буфер. Очень часто буферную память заказывает и объект приёмник, который, по сути, управляет выходным хранилищем данных. В этом случае, он подключается к объекту источнику и передаёт ему буфер. Но никогда (. ) буферную память не заказывает объект источник, на это есть много веских причин, которые выходят за рамки повествования. Можно считать, что объект источник должен быть сконструирован так, чтобы он не подозревал, что работает с буфером. Конечно, на любое правило есть исключения, но в большинстве случаев, такое утверждение указывает на неоптимальность управляющего алгоритма, либо на возможность потенциальной ошибки в нём.

  1. По сессионное заполнение.
  2. Циклическое.
  3. Неупорядоченное.

В первом случае источник заполняет буфер во время специальных периодов называемых сессиями, во втором случае буфер заполняет в каком-либо непрерывном цикле, и в третьем случае буфер заполняется в произвольный момент времени.

Если память в буфере занимается сегментно, то тогда возникает возможность предсказывать переполнение, и передать данные в приёмник в любой момент, когда он будет готов для приёма. В подобных алгоритмах активно используются асинхронные вызовы и событийные системы потенциалов, но можно ограничиться и традиционными способами.

Если заполнение выполняется сессиями, то возникает возможность освобождать буфер каждый раз после сессии, если приёмник готов к передачи, но этим не стоит злоупотреблять, так как система буферной памяти разрабатывалась именно чтобы сделать обращение к выделению основных блоков памяти менее частым. В этом случае можно использовать систему потенциальных предсказаний. В случае циклического заполнения процесс передачи осуществляется в зависимости после последнего гарантированного удачного помещения данных в буфер. Удачным гарантированным помещением в случае сегментной схемы считается – последний помещающийся в буфер сегмент.

Так же хочется отметить по-секторную модель, в которой имеется возможность одновременных процессов считывания и записи в буфер, это актуально при многониточном программировании, а так же в нелинейных системах. В этом случае буфер делиться на несколько секторов. Когда заполняется один сектор буфера, следующий переходит в состояние заполнения, а заполненный сектор переходит в состояние передачи.

Выделение памяти буферу.

Вопрос создания буфера открывается в момент создания объекта приёмника. И как нестранно такое утверждение – правило. Сколько же памяти следует отдавать на буфер? Вот довольно жёсткий принцип:

Размер буфера должен быть таким, чтобы суммарное время выполнения кода обслуживающее режим наполнения, было бы равно времени выполнения кода, выполняющего режим передачи. При этом код исполняемый объектом источником должен иметь приемлемое время исполнения.

В первой части определения разговор идёт касательно так называемого первого назначения буфера. Обычно код организующий выделение памяти средствами ОС является «тяжёлым кодом», то есть он требует сравнительно много времени на выполнение. Предположим, если вы выполняете какие-то циклические действия над потоком ввода из файла, то было бы чрезвычайно расточительно обращаться к диску за каждым байтом. В этом случае, с диска считывается сразу дамп памяти, а некая операция выполняется над этим дампом. Данный пример, аналогичен, так же если вместо источника диска, подставить источник – некую функцию, конвертирующую данные, либо что-то ещё.

Во второй части правила говориться о затратах на использование ресурсов источником, подобно примеру выше – это диск. Диск – медленное устройство и требует сравнительно большего времени для получения/передачи данных. Вместо диска можно подразумевать совокупность процедур, работающих с памятью, и время выполнения которых зависит от размера обрабатываемой памяти. Примером таких процедур могут служить процедуры рейдеринга памяти, выполняющих её дефрагментацию.

Однако, несмотря на всё вышесказанное, прямое использование этого правила не возможно, так как число влияющих факторов на выбор размера буфера намного больше из тех, что рассмотрены в правиле. На выбор размера буфера так же влияют: гранулярность памяти, физический размер страниц, методы выделения памяти, удобство работы обслуживающих алгоритмов, и др. Так же фактором выбора размера буфера является место его размещения и метод получения.

Буферную память можно разместить как статически, то есть заранее расположенную в секции неинициализированных данных, так и динамически выделенную.

В том случае, если буфер создаётся для кэширования вывода в файл, можно разместить буфер прямо на первых страницах файла, однако это чревато последствиями перекачки всех данных при сохранении файла. Можно размещать буфер и в хвосте файла, с каким-то запасом, и постепенно передвигать сам буфер по мере заполнения файла. Вот как это выглядит на практике:

Здесь серым цветом выделена заполняющаяся часть файла, а зелёным – буфер. Остальное – незанятое пространство. Если заполнение дойдёт до границ буфера и потребует большего пространства, тогда информация в буфере будет переработана, а сам буфер будет перемещён дальше, вот так:

По сути, данный метод является как бы обычной последовательной записью в файл, но с промежутками. И, тем не менее, это считается полноценным случаем буфера.

Буферную память целесообразно размещать в области виртуальной памяти, т.е. в файле подкачки. В любом случае размер буфера обязан быть кратен размеру страницы в данной системе. Однако гранулярность выделения памяти в Win32 является 64-bits, что создаёт жёсткие ограничения на размер буфера. Поэтому стоит выделять некоторое пространство памяти для нескольких буферов, и давать им размеры и базовые адреса по размерам страниц. (Более подробно о стратегиях выделения памяти в следующей части.)

Один буфер для многих и многоуровневая буферизация.

Широкий круг задач приходится выполнять жёстко последовательно. Например, ввод с клавиатуры может быть направлен в данный момент времени только в один источник. Этим можно воспользоваться для организации одного буфера для использования многими. Можно применить технологию ускользающих. В этом случае сброс буфера будет выполняться либо когда он наполнен, либо когда к буферу обращается другой объект-хозяин. Место под такой буфер можно зарезервировать в неинициализированном разделе, если он не превышает 8kb – 12kb оперативно памяти. Использование статических буферов является более эффективными по способу адресации, и тем эта эффективность выше, чем больше кода использует данный буфер. При этом при использовании статически размещённого буфера отпадает головная боль за слежением очистки мусора и выделения памяти, что сильно влияет на качество системы. Статические буфера желательно использовать, где только это возможно, хотя это возможно далеко не везде. К счастью существует метод многоуровневой буферизации. Как следует из названия, этот метод представляет собой наличие объекта хозяина у буфера, где объект хозяин сам является буфером. Буфер, который «стоит» ближе к действительному источнику именуется первым, а все последующие по порядку. Обычно каждый последующий буфер имеет меньшую частоту сброса, а значит, занимает больше памяти. Метод многоуровневой буферизации позволяет комбинировать достоинства нескольких приёмов размещения буферов. Например, первым буфером может являться буфер размещённый статически, а вторым – размещённый динамически. Примером использования многоуровневой системы буферизации может послужить API работы с файлами. Вы можете использовать кокой-то свой буфер для выполнения задач, когда система прозрачно для вас выполняет ещё одну буферизацию. А если вспомнить про физический буфер, находящийся в самом жёстком диске, то мы получим трёх уровневую систему буферизации ввода.

  1. Объект источник помещает данные в область памяти «не являющуюся буфером».
  2. После всех операций данные направляются в буфер.

В качестве промежуточной памяти может выступать какой либо её блок, размещённый статически и работать по методике ускользающих. Такая система нашла широкое применение на практике, и мы рассмотрим её подробней несколько позже. Важно отметить следующее, что в данной многоуровневой системе, первый объект-буфер не является либо совсем буфером, либо является буфером неполноценным, так как не отвечает одному из назначений буфера, или не имеет буферного цикла.

API буферов.

Обычно всё-таки следует организовать некоторый локальный API по работе с буферной памятью. Первая важная функция, которая должна существовать это, конечно же, CreateBuffer. Вот возможный её прототип:

Что такое регистровая RDIMM-память и зачем нужен ECC

Оперативная память в сокращении может называться ОЗУ. Ее также называют оперативным запоминающим устройством, памятью с произвольным доступом, RAM. ОЗУ также можно ласково назвать «оперативкой». RAM логически состоит из ячеек памяти. Каждая ячейка хранит количество бит, равное степени двойки. 2^3=8 бит, 2^4=16 бит, 2^5=32 бит, 2^6=64 бит. У каждой ячейки памяти есть свой адрес. Адрес ячейки «оперативки» выглядит следующим образом: FFFFFFFFF.

Регистровой памятью (Registered DIMM, RDIMM) называют модули ОЗУ, которые имеют на «борту» отдельный регистр для адресов «оперативки» и команд.

Контроллер ОЗУ в процессоре обращается к регистрам, регистры же направляют информацию в микросхемы памяти. Такая организация «оперативки» позволяет увеличить количество модулей на канал RAM за счет снижения электрической нагрузки на контроллер памяти. Контроллер находится либо в северном мосту материнской платы, либо в процессоре. Также вдвое уменьшается емкость модулей памяти, если модуль содержит два регистра.

Регистровая память отличается от обычной, небуферизованной «оперативки», более высокими задержками при чтени и записи информации в модулях ОЗУ. Это происходит из-за того, что модули содержат дополнительный промежуточный узел — буфер. Чтение/запись производит контроллер памяти в процессоре или северном мосту материнской платы. Работа с этим узлом, естественно, требует дополнительного времени работы. Но при этом отметим то, что уменьшается нагрузка на процессор, так как буфер отвечает за непосредственную работу с банками памяти.

Каждый модуль ОЗУ содержит микросхему SPD (Serial Presence Detect). Данная микросхема содержит прошивку модуля памяти. Эта прошивка определяет работу более простых микросхем.


Регистровая и буферизованная память — одно и то же

Регистровая память — это буферизованная память. Как было обозначено выше — регистр — это буфер для адресов и команд при работе с памятью. Процессор или северный мост материнской платы отправляют данные, адреса ячеек памяти и команды. Регистры выполняют команды по указанным адресам.

Такая память стоит дороже обычной, небуферизованной памяти. Используется она исключительно в серверах, потому что позволяет получить больший объем памяти на один процессор в сервере.

Что такое FB-DIMM

FB-DIMM, Full Buffered Dual Inline Memory Module — полностью буферизованная DIMM — это планки ОЗУ DDR2. Плашки ОЗУ при этом используют последовательный интерфейс передачи данных между модулями памяти и контроллером «оперативки». В отличие от стандартных модулей RAM, они используют не 240-pin, а 96-pin из 240 возможных пинов. Такая организация работы позволяет организовывать с помощью контроллеров памяти большее количество каналов на материнской плате. Вплоть до 6 каналов. Данные модули памяти несовместимы с обычными планками «оперативки».

Последовательный интерфейс — это интерфейс передачи данных, при работе которого данные передаются по одному проводу или дорожке на печатной плате друг за другом. Таких проводов (дорожек) может быть несколько, но принцип передачи данных при этом не меняется.


Advanced Memory Buffer, AMB — микросхема, которая организует работу модулей памяти FB-DIMM. Эта микросхема располагается прямо на планке «оперативки».


В один канал памяти при такой организации работы модулей ОЗУ возможна установка до 8 планок «оперативки». Это позволяет, в случае с RAM DDR2, добиться емкости ОЗУ до 192 Гигабайт на один сервер.

В связи с тем, что микросхема AMB добавляет свои задержки в работу модуля памяти, данные плашки работают несколько медленнее модулей RDIMM, регистровой ОЗУ. Но, так как общее количество памяти в данном случае возрастает, то общая производительность системы также возрастает.


Краткая история оперативной памяти

Ниже приводится краткая история развития типов ОЗУ. Начинаем мы ее со времени выпуска памяти SDRAM. Это произошло в 1996 году. Пропускная способность данной RAM составила 1.1 GBps.

Следующей памятью в таблице указана память RDRAM. Она была выпущена в 1998 году. Это была абсолютно новая архитектура ОЗУ. Совершенно новый стандарт от фирмы Rambus. Было выпущено несколько поколений памяти. Она отличалась более высокими частотами, стабильными таймингами, вот только при этом задержки функционирования памяти были немного выше. К сожалению, данная память не выдержала конкуренции на рынке и вынуждена была сойти со сцены рынка памяти.

Следующими в таблице указаны линейки RAM DDR. Double Data Rate Synchronous Dynamic Random Access Memory — синхронная динамическая память с произвольным доступом и удвоенной скоростью передачи данных. Этот стандарт ОЗУ был выпущен на рынок в 2000 году. Данная память используется и на текущий момент. При этом развивается стандарт для достижения более высоких скоростей функционирования.

Последним типом RAM DDR, выпущенным на рынок, на данный момент является память DDR4.

па

Регистровая память (registered, буферизованная, buffered) – вид оперативной памяти, модули которой содержат регистр между микросхемами памяти и контроллером памяти. Обычно используется в системах, требующих масштабируемости и отказоустойчивости. Наличие регистров уменьшает электрическую нагрузку на контроллер памяти, что позволяет устанавливать большее количество модулей памяти на один канал. Таким образом, обеспечение максимального объема памяти, поддерживаемого современными процессорами, возможно только при использовании регистровой памяти

Регистровые модули (RDIMM) необходимы для установки большого объема оперативной памяти по сравнению с небуферизованной памятью DIMM (UDIMM). Стоит учитывать, что модули UDIMM – неважно, с поддержкой ECC или без нее, – не могут работать совместно с RDIMM, причем в некоторых случаях попытка совместить такую память может привести к выходу из строя материнской платы либо модулей памяти. Поэтому, выбирая память, необходимо сразу брать регистровые модули, так как в случае модернизации не придется заменять всю память сервера. Максимальные значения объема памяти, ее частоты и количество модулей приведены в таблице ниже. Также здесь представлена информация о LRDIMM:

UDIMM RDIMM LV RDIMM LRDIMM
Максимальная частота при двух модулях на канал 1333 1600 МГц 1333 МГц 1333 МГц
Максимальная частота при трех модулях на канал Работа в таком режиме не допускается 1333 МГц 1333 МГц 1066 МГц
Максимальный объем памяти на процессор (четырехканальный режим) 64 ГБ 192 ГБ при трех модулях на канал - Dual Rank
256 ГБ при двух модулях на канал - Quad Rank
192 ГБ при трех модулях на канал - Dual Rank
256 ГБ при двух модулях на канал - Quad Rank
384 ГБ
Максимальная частота памяти
при максимальном объеме
1066 МГц 1066 МГц - Dual Rank
800 МГц - Quad Rank
1066 МГц - Dual Rank
800 МГц - Quad Rank
1066 МГц
Рабочее напряжение 1.5 В 1.5 В 1.35 В 1.35 В/1.5 В
Потребление энергии
при трех модулях на канал
(на модуль)
4 Вт 4.5 Вт ≤4 Вт 5-6 Вт

Преимущества регистровой памяти прекрасно демонстрируют серверные материнские платы, например SuperMicro X9DR3-LN4F+, на которой имеется 24 слота памяти, по 12 на каждый процессор. Так как процессоры для данной платы поддерживают четырехканальную память, получаем три модуля на канал. Для сравнения – платы для похожих процессоров, не поддерживающих регистровую память, имеют максимум восемь слотов памяти.

RDIMM

Некоторым недостатком регистровой памяти является небольшое уменьшение производительности. Каждое чтение и запись буферизуются в регистре на один такт, прежде чем попадут с шины памяти в чип DRAM, поэтому регистровая память считается на один такт более медленной, чем нерегистровая. Для памяти типа SDRAM, к которой относятся современные DDR3 и DDR4 модули, эта задержка существенна только для первого цикла в серии запросов.

Всем известно, что в современных вычислительных устройствах есть оперативная память, где информация хранится только во время работы. Выполнена оперативная память в виде модулей с микросхемами (чипами), имеющих набор ячеек для хранения битовой информации. Каждая ячейка памяти предназначена для хранения нуля или единицы. 8 таких ячеек хранят 8 бит (это уже 1 байт). Изготавливаются такие чипы на основе полупроводников. Но реализация модулей оперативной памяти для серверов и ПК имеет ряд серьезных различий, которые мы и рассмотрим в этой статье.

Память с контролем чётности.

На раннем этапе развития компьютерной техники ещё не очень хорошо была развита технология производства полупроводниковых элементов. Поэтому существовала вероятность потери информации при записи в какую-либо ячейку памяти: записывали в неё единичку, а она и не записалась (остался ноль). Чтобы хоть как-то контролировать процесс записи в память, была придумана простая технология проверки данных.

Перед записью одного байта (8 бит) вычислялась сумма всех бит в этом байте. Но запоминалась не вся контрольная сумма (для экономии памяти), а только её последний бит, значение которого (ноль или единица) запоминалось в специально отведённом для него месте. Значение этого бита (0 или 1) зависело от того, чётная или нечётная сумма битов получалась при сложении. Поэтому этот бит стали называть битом чётности (parity bit).

Память без контроля чётности.

Со временем стали появляться более надёжные микросхемы. Вероятность возникновения ошибок в них становилась меньше. Одновременно происходило и удешевление электронных компонентов. Производство и продажи компьютеров приобрели массовый характер. Для некоторых пользователей ошибки в работе компьютеров были не критичными. Поэтому на рынок стали выпускаться модели, в которых использовалась память без контроля чётности. Избавление от "лишнего" девятого бита (на каждый байт) и "лишних" затрат на вычисление контрольных сумм позволило несколько снизить стоимость компьютеров и сделать их доступными для широких масс потребителей. Такие компьютеры стали очень популярны среди настольных (desktop) систем.

Однако, в отдельных отраслях производства, системах военно-оборонного значения и банковской сфере недопустимость ошибок в вычислительных системах остается одной из важнейших задач.

Память с контролем и коррекцией ошибок.

Технология контроля чётности не является совершенной. Она неспособна обнаружить, например, "пропадание" одновременно 2-х битов (чётность в таком случае не меняется). Поэтому решено было каждый, записываемый в память бит данных, включать не в одну контрольную сумму, а в несколько. При такой системе контроля стало возможным обнаруживать одновременно несколько ошибок, их адреса, и, кроме того, исправлять эти ошибки. Такая технология получила название Error Correction Code (ECC), так как вычислялся код, позволяющий корректировать ошибки.

Конечно, для хранения контрольных сумм требуются дополнительные регистры, что делает такие модули памяти более дорогими, но в целом, системы на основе памяти с ECC являются более отказоустойчивыми. Наибольшее применение такие модули памяти получили в серверных системах.

Память с контролем чётности и технологией ECC может применяться как в серверных, так и в настольных системах. В первом случае это оправдано важностью решаемых задач (где цена малейшей ошибки очень велика), а во втором не всегда целесообразно (с экономической точки зрения: ведь для использования модулей с контролем ошибок необходимо иметь более дорогую материнскую плату, поддерживающую эту технологию, иначе контроль ошибок просто не будет выполняться).

Буферизованная память (buffered memory).

В вычислительных системах управление записью/чтением в память и из неё осуществляется специальным контроллером памяти. Этот контроллер должен иметь доступ ко всем ячейкам памяти и обеспечивать передачу информации от шины к памяти и обратно. В настольных системах часто используются процессоры со встроенным контроллером памяти. Некоторыми недостатками такой реализации являются следующие:

- контроллер один, а контролировать надо много ячеек памяти - есть ограничение на количество одновременно обслуживаемых банков памяти при сохранении высокого быстродействия;

- по одной шине данных от процессора или других компьютерных компонентов надо передавать и управляющие команды и данные - ко всем используемым модулям памяти (растет нагрузка на шину).

Чтобы улучшить ситуацию, решено было часть функций контроллера реализовать в каждом модуле памяти. Для этого в модуль памяти интегрируется специальный чип, выполняющий роль буфера, который принимает от центрального процессора команды управления и установки адресов (в этом случае поток данных в память идет по шине параллельно потоку команд). Так появилась буферизованная память (buffered memory).

Позже в этом буфере стали реализовываться функции коррекции ошибок (ECC), а также появилась возможность наращивания памяти без дополнительной нагрузки для шины данных. Дополнительные чипы для реализации буфера стали называться регистрами, а сама память - регистровой памятью (registered memory).

Со временем появились и полностью буферизованные модули памяти (FB - fully buffered), в буфер (регистр) которых стали передаваться последовательно в одном потоке не только сигналы управления, но и данные. При использовании промежуточного буфера происходит некоторое замедление в работе памяти, потому что для записи в буфер требуется один промежуточный такт.

Стоит такая память намного дороже нерегистровой (unregistered) за счёт наличия дополнительной микросхемы регистра и использования сложных технологий. Но, из-за своей эргономичности, возможности наращивания объёма, а также из-за контроля над ошибками, широко используется в серверных системах, где очень важна стабильная и безошибочная работа с большими объёмами данных.

Вопросы совместимости.

Буферизованные модули памяти на ранних стадиях своего развития использовались как в настольных, так и серверных системах, но появление регистровой памяти исключило возможность использования её в ПК.

В настольных системах использование регистровой памяти нецелесообразно (избыточная дороговизна), да и зачастую невозможно, поскольку большинство материнских плат, используемых в десктопах не имеют поддержки регистровой памяти. Материнские платы, используемые в современных серверных системах, наоборот, рассчитаны на работу только с регистровой памятью, поскольку наращивание мощности (без изменения платформы) и возможность контроля над ошибками - для серверов более важный фактор, чем стоимость.

Модули памяти могут изготавливаться по-разному, чтобы обеспечить поддержку дополнительных функций. Эти функции требуют наличия дополнительных компонентов.

Модули регистровой памяти содержат регистры или буферы, обеспечивающие контроль за передачей данных, что повышает надежность хранения и передачи. Они также позволяют повысить масштабируемость памяти (становится возможной установка большего объема оперативной памяти). Из-за этого регистровая память используется преимущественно в серверах. Некоторые модули регистровой памяти DIMM содержат функцию контроля четности. Она используется для дополнительной проверки на наличие ошибок. Для использования этой функции системная плата компьютера должна поддерживать контроль четности. При этом модули регистровой памяти с контролем четности могут использоваться в системах, которые поддерживают только регистровую память. В этом случае функция контроля четности просто не используется. Регистровые модули памяти поддерживают функцию ECC, но не вся память с функцией ECC является регистровой.

Полностью буферизованная берет на себя некоторые функции контроллера памяти (микросхемы, которая управляет передачей данных в оперативной памяти), выполняя их прямо на модуле памяти. Это открывает дополнительные возможности масштабирования памяти. Память с полной буферизацией нельзя использовать в компьютере, который поддерживает регистровую память, и наоборот. Полностью буферизованная память поддерживает технологию ECC, но не вся память с поддержкой ECC является полностью буферизованной.

Небуферизованная память — это оперативная память, которая не содержит никаких буферов или регистров. Этот тип памяти наиболее часто используется в настольных компьютерах и ноутбуках. Вы не можете использовать регистровую память или полностью буферизованную память в компьютере, который поддерживает только небуферизованную память.

Память с технологией ECC (код коррекции ошибок) содержит дополнительную микросхему памяти, которая позволяет материнской плате обнаруживать и исправлять ошибки в отдельных битах. Это повышает надежность хранения данных и может помочь при выявлении потенциально неисправных модулей памяти. Все регистровые модули памяти и модули памяти с полной буферизацией также поддерживают технологию ECC (код коррекции ошибок). Но также существует память с поддержкой ECC и без буферизации, которая обычно используется в наиболее производительных рабочих станциях. В некоторых случаях небуферизованную память с поддержкой ECC можно использовать в компьютере, который поддерживает установку небуферизованной памяти, но не поддерживает технологию ECC. В этом случае подобная функция памяти просто не будет использоваться.

Читайте также: