От каких факторов зависит пропускная способность модулей оперативной памяти

Обновлено: 06.07.2024

Оперативная память (ОЗУ - Оперативное Запоминающее Устройство, или RAM – Random Access Memory) используется для временного хранения информации, которая в данный момент нужна процессору.

Она, выступает в качестве буфера между дисковыми накопителями и процессором, так как скорость обмена данными между процессором и ОЗУ в разы больше, чем между процессором и жестким диском (или любым другим накопителем).

Это энергозависимая память - при выключении питания память обнуляется.

В ОЗУ располагается активная программа, выполняемая компьютером в данный момент.

Основной составной частью ОЗУ является массив элементов памяти, объединенных в матрицу накопителя. Элемент памяти (ЭП) может хранить один бит информации (запоминать два состояния 0 или 1).

Устройство ОЗУ

Оперативная память является электронной памятью, потому что она создается с помощью изделий микроэлектроники - микросхем (чипов).

Используется два основных типа оперативной памяти: статическая память (SRAM — Static RAM) и динамическая память (DRAM — Dynamic RAM).

Эти две разновидности памяти различаются быстродействием и удельной плотностью (емкостью) хранимой информации. Быстродействие памяти характеризуется двумя параметрами: временем доступа (access time) и длительностью цикла памяти (cycle time). Эти величины, как правило, измеряются в наносекундах. Чем меньше эти величины, тем больше быстродействие памяти.

В статической памяти элементы построены на триггерах — схемах с двумя устойчивыми состояниями. Для построения одного триггера требуется 4-6 транзисторов. После записи информации в статический элемент памяти он может хранить информацию сколь угодно долго (пока подается электрическое питание). Статическая память имеет высокое быстродействие и низкую удельную плотность размещения хранящихся данных.

В динамической памяти элементы памяти построены на основе полупроводниковых конденсаторов, занимающих гораздо меньшую площадь, чем триггеры в статических элементах памяти. Для построения динамического элемента памяти требуется всего 1-2 транзистора. Подключение и отключение конденсаторов в динамических ЭП осуществляется с помощью полупроводниковых транзисторов (ключей).

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

Учимся выбирать оперативную память

Оперативная память и её основные характеристики.

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

Взаимосвязь ОЗУ и процессора

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

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

Тип оперативной памяти.

На сегодняшний день в мире наиболее предпочтительным типом памяти являются модули памяти DDR (double data rate). Они различаются по времени выпуска и конечно же техническими параметрами.

Объём оперативной памяти.

Про объём памяти много писать не буду. Скажу лишь, что именно в этом случае размер имеет значение 🙂
Все несколько лет назад оперативная память объёмом в 256-512 МБ удовлетворяла все нужды даже крутых геймерских компьютеров. В настоящее же время для нормального функционирования отдельно лишь операционной системы windows 7 требуется 1 Гб памяти, не говоря уже о приложениях и играх. Лишней оперативка никогда не будет, но скажу Вам по секрету, что 32-х разрядная windows использует лишь 3,25 Гб ОЗУ, если даже вы установите все 8 Гб ОЗУ. Подробнее об этом вы можете прочитать здесь.

Форм фактор планок ОЗУ

Тактовая частота.

Это довольно таки важный технический параметр оперативной памяти. Но тактовая частота есть и у материнской платы и важно знать рабочую частоту шины этой платы, так как если вы купили например модуль ОЗУ DDR3-1800, а слот (разъём) материнской платы поддерживает максимальную тактовую частоту DDR3-1600, то и модуль оперативной памяти в результате будет работать на тактовой частоте в 1600 МГц. При этом возможны всяческие сбои, ошибки в работе системы и синие экраны смерти.

Модули DDR2

Модули DDR3

Пропускная способность.

Тайминги (латентность).

Режимы работы памяти.

Оперативная память может работать в нескольких режимах, если конечно такие режимы поддерживаются материнской платой. Это одноканальный, двухканальный, трехканальный и даже четырехканальный режимы. Поэтому при выборе оперативной памяти стоит обратить внимание и на этот параметр модулей.
Теоретически скорость работы подсистемы памяти при двухканальном режиме увеличивается в 2 раза, трехканальном – в 3 раза соответственно и т.д., но на практике при двухканальном режиме прирост производительности в отличии от одноканального составляет 10-70%.
Рассмотрим подробнее типы режимов:

  • Single chanell mode (одноканальный или асимметричный) – этот режим включается, когда в системе установлен только один модуль памяти или все модули отличаются друг от друга по объему памяти, частоте работы или производителю. Здесь неважно, в какие разъемы и какую память устанавливать. Вся память будет работать со скоростью самой медленной из установленной памяти.
  • Dual Mode (двухканальный или симметричный) – в каждом канале устанавливается одинаковый объем оперативной памяти (и теоретически происходит удвоение максимальной скорости передачи данных). В двухканальном режиме модули памяти работают попарно 1-ый с 3-им и 2-ой с 4-ым.
  • Triple Mode (трехканальный) – в каждом из трех каналов устанавливается одинаковый объем оперативной памяти. Модули подбираются по скорости и объему. Для включения этого режима модули должны быть установлены в 1, 3 и 5/или 2, 4 и 6 слоты. На практике, кстати говоря, такой режим не всегда оказывается производительнее двухканального, а иногда даже и проигрывает ему в скорости передачи данных.
  • Flex Mode (гибкий) – позволяет увеличить производительность оперативной памяти при установке двух модулей различного объема, но одинаковых по частоте работы. Как и в двухканальном режиме платы памяти устанавливаются в одноименные разъемы разных каналов.

Кит набор двухканальный

для трехканального режима

Kit - набор трехканальный

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

Производитель модулей.

Маркировка модулей оперативной памяти

Приведу еще один пример маркировки CM2X1024-6400C5:
Из маркировки видно, что это модуль DDR2 объемом 1024 Мбайт стандарта PC2-6400 и задержками CL=5.
Марки OCZ, Kingston и Corsair рекомендуют для оверклокинга, т.е. имеют потенциал для разгона. Они будут с небольшими таймингами и запасом тактовой частоты, плюс ко всему они снабжены радиаторами, а некоторые даже кулерами для отвода тепла, т.к. при разгоне количество тепла значительно увеличивается. Цена на них естественно будет гораздо выше.
Советую не забывать про подделки (их на прилавках очень много) и покупать модули оперативной памяти только в серьезных магазинах, которые дадут Вам гарантию.

Лучшая оперативная память 2019

Corsair Dominator Platinum

10

Лучшая память среди одноклассников с высокой производительностью и инновациями в технологии RGB. Стандарт DDR4, скорость 3200MHz, дефолтные тайминги 16.18.18.36, два модуля по 16 гигабайт. У планок яркие светодиоды подсветки Capellix RGB, продвинутая программа iCUE теплоотводы Dominator DHX. Единственная проблема – может не подойти высота модуля.

Компания Corsair, как всегда, с каждой новой моделью превосходит саму себя, Dominator Platinum не стала исключением. Сегодня это излюбленный набор памяти DDR4 для геймеров и владельцев мощных рабочих станций. Внешний вид модулей гладкий и стильный импонирует любителям гейминга, DHX охлаждение работает эффективно, а производительность планок уже готова стать легендой. В любом случае, на долгие годы она обеспечит пользователя флагманскими параметрами. Сейчас у памяти новый дизайн, новая, более яркая подсветка Corsair Capellix на 12 светодиодов. Программное обеспечение (фирменное) iCUE обеспечивает гибкую настройку памяти на максимальную производительность. Если вы поменяли материнку или процессор, а может быть и графический ускоритель, под любой новый компонент память можно настроить как родную.

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

Оперативная память - вроде бы ничего сложного, но в то же время когда меня просят прокомментировать ту или иную сборку я прихожу в недоумение. К примеру, у человека очень ограниченный бюджет, денег мало, он ставит GTX1060, в принципе карта хорошая, не самая слабая, но и не самая лучшая. Вот, но при этом у него оперативной памяти 16 Гб, радиаторы на ней больше чем у меня на процессоре и частота у неё там 2133 Мгц. Вопрос: Зачем? Получаю ответ: Мне так сказал друг. Я так видел у кого-то на канале. Ну и всё в таком духе. Так делать не надо. Сегодня мы с вами подробно разберем какую оперативную память выбрать для своего компьютера и какие должны быть у нее параметры. Погнали.

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

  • тип памяти
  • пропускная способность
  • объём памяти
  • частота этой памяти
  • тайминги

Давайте разберем теперь каждый параметр по отдельности более подробно.

Типы памяти

Какие они бывают: это DDR1, DDR2, DDR3 и DDR4 (которую мы рассмотрим как нибудь отдельно). DDR3 - самый массовый и распространенный тип памяти на сегодняшний день. Основное отличие от DDR2, это то что она способна за один такт взять 8 бит информации, в то время как DDR2 только 4. То есть она быстрее. Также у DDR3 пониженное энергопотребление 1.5 Вольта, в отличии от DDR2, где 1.8 Вольта. соответственно чем ниже энергопотребление, тем меньше тепловыделение. Тепловыделение у DDR3 на 40% ниже чем в DDR2, соответственно его можно использовать без огромных радиаторов, да в принципе без радиаторов. По факту в играх разница между DDR2 и DDR3 составляет примерно 5-7-10%.

Пропускная способность

Пропускная способность оперативной памяти - этот параметр наиболее важен в оперативной памяти, он влияет в принципе на быстродействие всего компьютера и измеряется в мегабайтах в секунду. Т.е. это то количество информации которую в оперативную память может передать процессор. Оптимальный вариант - это когда пропускная способность оперативной памяти равняется пропускной способности шины процессора. Давайте разберем пример, чтобы было более конкретно и понятно. Допустим у нас есть две планки оперативной памяти которая называется Kingston HyperX Fury DDR3 4GB 1866 МГц, Black.

Давайте разберем что за что отвечает. Значит Kingston - это производитель, DDR3 - это тип памяти, 4Gb - это значит 4 ГБ оперативная память, pc3-15000, 15000 - это эффективная пропускная способность. Представим что у нас есть процессор Intel Core i5-3340.

Что мы здесь видим, на скриншоте указано количество каналов памяти 2, максимальная пропускная способность памяти 25,6 Гигабит в секунду, т.е. это 25600 Мб в секунду. Таким образом мы берём нашу эффективную пропускную способность памяти, это 15000, умножаем на 2, потому что процессор поддерживает двухканальный режим и получаем наши 30000, что больше чем может процессор (25600 Мб/сек). То есть если мы размещаем не одну планку на 8 Гб, а размещаем 2 планки по 4 Гб, то мы активируем двухканальный режим который нам дает удвоенную пропускную способность. Установка двух планок оперативной памяти позволит активировать двухканальный режим, в идеале для этого должна быть память одного производителя, с одинаковой частотой, с одинаковым объемом и с одинаковыми таймингами. Но это в идеале, лучше конечно покупать киты, это набор из двух или больше планок оперативной памяти которые уже готовы к двухканальному режиму. Но скажу так я для себя купил сначала 8 гигабайт, потом еще 8 Гб и они великолепно работали и работают в двухканальном режиме. Для активации двухканального режима необходимо чтобы были две планки одинакового производителя, также их необходимо разместить в определенные слоты, например на фото материнской платы четыре слота для размещения оперативной памяти и они окрашены в разные цвета. Так в принципе делается во всех современных материнских платах, которые поддерживают двухканальный режим.

Так вот, для активации двухканального режима необходимо планки памяти вставлять в 1 и 3 разъем, либо во 2 и 4, таким образом и активируется двухканальный режим. В играх двухканальный режим дает довольно сомнительный прирост производительности - это примерно 1-3%, а вот допустим в обычной работе тот же архиватор будет у вас работать на 30% быстрее если будет двухканальный режим.

Несколько недель назад в разговоре за обедом коллега пожаловался на какой-то медленный процесс. Он подсчитал количество сгенерированных байт, количество циклов обработки, и в конечном счёте, объём оперативной памяти. Коллега заявил, что современный GPU с пропускной способностью памяти более 500 ГБ/с съел бы его задачу и не подавился.

Мне показалось, что это интересный подход. Лично я раньше не оценивал задачи производительности с такой стороны. Да, я знаю о разнице в производительности процессора и памяти.


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

Вот мысленный эксперимент. Представьте, что в памяти непрерывный массив из миллиарда 32-разрядных целых чисел. Это 4 гигабайта. Сколько времени займёт перебор этого массива и суммирование значений? Сколько байт в секунду может CPU считать из оперативной памяти? Непрерывных данных? Произвольного доступа? Насколько хорошо можно распараллелить этот процесс?

Вы скажете, что это бесполезные вопросы. Реальные программы слишком сложны, чтобы имел смысл такой наивный ориентир. Так и есть! Реальный ответ — «зависит от ситуации».

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

Если вы читаете блоги по программированию, то наверняка сталкивались с «цифрами, которые должен знать каждый программист». Они выглядят примерно так:

Отличный список. Он всплывает на HackerNews как минимум раз в год. Каждый программист должен знать эти цифры.

Но эти цифры о другом. Задержка и пропускная способность не одно и то же.

Тот список составлен в 2012 году, а эта статья 2020 года, времена изменились. Вот цифры для Intel i7 со StackOverflow.


Интересно! Что изменилось?

  • L1 стал медленнее; 0,5 → 1,5 нс
  • L2 быстрее; 7 → 4,2 нс
  • Соотношение L1 и L2 намного уменьшилось; 2,5x против 14х (ого!)
  • Кэш L3 теперь стал стандартом; от 12 до 40 нс
  • Оперативная память стала быстрее; 100 → 60 нс

Вот некоторые цифры из wikichip по пропускной способности и размеру кэша моего процессора.


Что хочется знать:

  • Верхний предел производительности RAM
  • Нижний предел
  • Лимиты кэшей L1/L2/L3

Проведём несколько тестов. Для замера пропускной способности я написал простенькую программу на C++. Очень приблизительно она выглядит так.


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

Также нужно измерить случайный доступ. Это очень сложно. Я попробовал несколько способов, в итоге решил смешивать предварительно вычисленные индексы. Каждый индекс существует ровно один раз. Затем внутренний цикл перебирает индексы и вычисляет sum += nums[index] .


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

Проведём тесты с тремя типами данных:

int — основное 32-разрядное целое число
matri4x4 — содержит int[16] ; помещается в 64-байтовую строку кэша
matrix4x4_simd — использует встроенные средства __m256i

Мой первый тест работает с большим блоком памяти. Блок размером 1 ГБ из N элементов выделяется и заполняется небольшими случайными значениями. Простой цикл перебирает массив N раз, поэтому он обращается к памяти объёмом N ГБ для вычисления суммы int64_t . Несколько потоков разбивают массив, а каждый получает доступ к одинаковому количеству элементов.


Тада! На этом графике мы берём среднее время выполнения операции суммирования и преобразуем его из runtime_in_nanoseconds в gigabytes_per_second .

Довольно неплохой результат. int32 может последовательно считывать в одном потоке 11 ГБ/с. Он масштабируется линейно, пока не достигнет 38 ГБ/с. Тесты matrix4x4 и matrix4x4_simd быстрее, но упираются в тот же потолок.

Существует чёткий и очевидный потолок, сколько данных мы можем считывать из оперативной памяти в секунду. На моей системе это примерно 40 ГБ/с. Это соответствует современным спецификациям, перечисленным выше.

Судя по трём нижним графикам, случайный доступ медленный. Очень, очень медленный. Производительность однопоточного int32 составляет ничтожные 0,46 ГБ/с. Это в 24 раза медленнее, чем последовательное суммирование на скорости 11,03 ГБ/с! Тест matrix4x4 показывает лучший результат, потому что выполняется на полных кэш-линиях. Но он по-прежнему в четыре-семь раз медленнее, чем последовательный доступ, и достигает пика на уровне всего 8 ГБ/с.

В моей системе размер кэша L1/L2/L3 для каждого потока составляет 32 КБ, 256 КБ и 2 МБ. Что произойдёт, если взять 32-килобайтный блок элементов и перебрать его 125 000 раз? Это 4 ГБ памяти, но мы всегда будем попадать в кэш.


Потрясающе! Однопоточная производительность аналогична чтению большого блока, около 12 ГБ/с. За исключением того, что на этот раз многопоточность пробивает потолок 40 ГБ/с. В этом есть смысл. Данные остаются в кэше, так что узкое место оперативной памяти не проявляется. Для данных, которые не поместились в кэш L3, действует тот же потолок около 38 ГБ/с.

Тест matrix4x4 показывает аналогичные результаты схеме, но ещё быстрее; 31 ГБ/с в однопоточном режиме, 171 ГБ/с в многопоточном.


Теперь давайте посмотрим на matrix4x4_simd . Обратите внимание на ось y.


matrix4x4_simd выполняется исключительно быстро. Он в 10 раз быстрее, чем int32 . На блоке 16 КБ он даже пробивает 1000 ГБ/с!

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

Но урок понятен. Внутри кэша данные обрабатываются быстро. С очень высоким потолком при использовании SIMD: более 100 ГБ/с в однопоточном режиме, более 1000 ГБ/с в многопоточном. Запись данных в кэш происходит медленно и с жёстким лимитом около 40 ГБ/с.

Давайте сделаем то же самое, но теперь с произвольным доступом. Это моя любимая часть статьи.


Чтение случайных значений из RAM происходит медленно, всего 0,46 ГБ/с. Чтение случайных значений из кэша L1 очень быстрое: 13 ГБ/с. Это быстрее, чем скорость чтения последовательных данных int32 из RAM (11 ГБ/с).


Тест matrix4x4 показывает аналогичный результат по тому же шаблону, но примерно вдвое быстрее, чем int .


Произвольный доступ matrix4x4_simd безумно быстр.

Произвольное чтение из памяти осуществляется медленно. Катастрофически медленно. Менее 1 ГБ/с для обоих вариантов теста int32 . В то же время произвольное чтение из кэша на удивление быстрое. Оно сравнимо с последовательным чтением из оперативной памяти.


Это нужно переварить. Произвольный доступ к кэшу сопоставим по скорости с последовательным доступом к RAM. Падение от L1 16 КБ до L2 256 КБ всего в два раза или меньше.

Думаю, что это повлечёт глубокие последствия.

Погоня за указателем (прыжки по указателям) — это плохо. Очень, очень плохо. Насколько снижается производительность? Смотрите сами. Я сделал дополнительный тест, который обёртывает matrix4x4 в std::unique_ptr . Каждый доступ проходит через указатель. Вот ужасный, просто катастрофический результат.


Последовательное суммирование значений за указателем выполняется со скоростью менее 1 ГБ/с. Скорость произвольного доступа с двойным пропуском кэша составляет всего 0,1 ГБ/с.

Погоня за указателем замедляет выполнение кода в 10-20 раз. Не позволяйте своим друзьям использовать связанные списки. Пожалуйста, подумайте о кэше.

Для разработчиков игр привычно устанавливать предел (бюджет) нагрузки на CPU и объём памяти. Но я никогда не видел бюджет пропускной способности.

У современных игр FPS продолжает расти. Сейчас он на уровне 60 FPS. VR работает на частоте 90 Гц. У меня игровой монитор на 144 Гц. Это потрясающе, так что 60 FPS кажется дерьмом. Я ни за что не вернусь к старому монитору. У киберспортсменов и стримеров Twitch мониторы 240 Гц. В этом году Asus представила на выставке CES монстра на 360 Гц.

У моего процессора верхний предел около 40 ГБ/с. Это кажется большой цифрой! Однако при частоте 240 Гц получается всего лишь 167 МБ на кадр. Реалистичное приложение может генерировать трафик 5 ГБ/с на частоте 144 Гц, а это всего 69 МБ на кадр.

Вот таблица с несколькими цифрами.


Мне кажется, полезно оценить проблемы с такой стороны. Это позволяет понять, что некоторые идеи неосуществимы. Достигнуть 240 Гц непросто. Это не случится само собой.

Прошлый список устарел. Сейчас его необходимо обновить и привести в соответствие к 2020 году.

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


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

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

В конечном счёте, я думаю, что это нормально. Это статья не о точной производительности моего десктопа. Речь о постановке проблем с определённой точки зрения. И о том, как научиться выполнять некоторые приблизительные математические расчёты.

Коллега поделился со мной интересным мнением о пропускной способности памяти GPU и производительности приложений. Это подтолкнуло меня к исследованию производительности памяти на современных компьютерах.

Для примерных расчётов вот некоторые цифры для современного десктопа:

  • Производительность RAM
    • Максимум: 45 ГБ/с
    • В среднем, примерно: 5 ГБ/с
    • Минимум: 1 ГБ/с
    • Максимум (c simd): 210 ГБ/с / 80 ГБ/с / 60 ГБ/с
    • В среднем, примерно: 25 ГБ/с / 15 ГБ/с / 9 ГБ/с
    • Минимум: 13 ГБ/с / 8 ГБ/с / 3,5 ГБ/с

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

    Спасибо за чтение.

    Эта статья только слегка затронула тему. Вероятно, я не буду углубляться в неё. Но если это сделал, то мог бы охватить некоторые из следующих аспектов:

    • Производительность записи
    • Ложное совместное использование (false sharing)
    • Производительность std::atomic (или её отсутствие)
    • Счётчики производительности

    Тесты проводились на моём домашнем ПК. Только стоковые настройки, никакого разгона.

    Пропускная способность (Пиковый показатель скорости передачи данных) – это комплексный показатель возможности RAM, в нем учитывается частота передачи данных, разрядность шины и количество каналов памяти. Частота указывает потенциал шины памяти за такт – при большей частоте, можно передать больше данных.

    Пиковый показатель вычисляется по формуле:

    Пропускная способность (B) = Частота передачи (f) x разрядность шины (c) x количество каналов памяти(k)

    Если рассматривать на примере DDR400 (400 МГц) с двухканальным контроллером памяти пиковый показатель скорости передачи данных равен:
    (400 МГц x 64 бит x 2)/ 8 бит = 6400 Мбайт/с

    На 8 мы поделили, чтобы перевести Мбит/с в Мбайт/с (в 1 байте 8 бит).

    Популярные модели оперативной памяти

    Пропускная способность

    Для быстрой работы компьютера пропускная способность шины оперативной памяти должна совпадать с пропускной способности шины процессора. К примеру, для процессора Intel core 2 duo E6850 с системной шиной 1333 MHz и пропускной способностью 10600 Mb/s, нужно купить две оперативные памяти с пропускной способностью 5300 Mb/s каждая (PC2-5300), в сумме они будут иметь пропускную способность системной шины (FSB) равную 10600 Mb/s.

    Двухканальный режим

    Для увеличения скорости обмена данных и увеличения пропускной способности современные чипсеты поддерживают двухканальную архитектуру памяти.

    память

    Если установить два, абсолютно идентичных, модули памяти, тогда будет использован двухканальный режим. Лучше всего использовать Kit – набор из двух и более модулей памяти, которые уже были проверены при работе с друг другом. Эти модули памяти одного производителя, с одинаковым объемом и одинаковой частотой.

    память

    При использовании двух идентичных модуля памяти DDR3 в двухканальном режиме позволяет повысить пропускную способность до 17.0 Гбайт/с. Если использовать оперативную память с 1333 Мгц, то пропускная способность повысится до 21.2 Гбайт/с.

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