Введение
В первой части цикла статей, посвящённого параллельным вычислениям, мы обсуждали разницу в производительности между одно-, дву- и четырёхядерными процессорами, поскольку увеличение числа вычислительных блоков даёт ощутимо больший прирост производительности, чем "гонка" тактовой частоты. Но преимущество в производительности от параллельной обработки задачи или, по крайней мере, совместной работы множества устройств, можно получить не только в процессорах. Уже достаточно давно появились компьютеры с двумя и четырьмя видеокартами, да и есть ещё два компонента, которые определённо выигрывают от параллельной реализации: память и жёсткие диски.
Контроллеры памяти достаточно давно перешли от одного канала к параллельной работе двух, чтобы увеличить пропускную способность. В первой половине 2003 года Intel объявила чипсеты 865 и 875, которые перенесли платформы на Pentium 4 Socket 478 с одного канала памяти DDR333 на двухканальную конфигурацию DDR400. В то время пропускная способность не только удвоилась "на бумаге", но и в реальных приложениях прирост производительности тоже ощущался. Но какова ситуация сегодня? Многие ноутбуки работают только с одним модулем памяти (каналом), и никто особо не ощущает влияние этого на производительность. Кроме того, современные процессоры Intel Core 2 Duo работают со сложной системой кэширования, включающей 2 или 4 Мбайт кэша второго уровня, что снижает влияние медленной или очень быстрой памяти. Действительно ли двухканальные конфигурации памяти сегодня так необходимы?
Поскольку результаты тестов конфигураций с одним или двумя каналами памяти можно предсказать, мы решили пойти дальше. Для нашей статьи мы добавили ещё тесты, которые сравнивают производительность одного жёсткого диска и конфигураций RAID 0 с двумя и четырьмя жёсткими дисками в популярных приложениях. Мы уже опубликовали немало аналитических статей о RAID, поэтому здесь мы сфокусируем внимание на стандартных тестах для настольных ПК, а не на тестах производительности подсистемы хранения данных.
Параллельная работа памяти: один и два канала
Немного истории
Разработки в области оперативной памяти (известной как RAM - random access memory) шли практически линейно, пока AMD и Intel в 2003 году не представили двухканальные контроллеры. А в области серверов можно найти платформы Xeon (Bensley или последнюю платформу Stoakley для 45-нм процессоров), которые используют четырёхканальный контроллер памяти.
Модули памяти, альтернатива раздельным чипам памяти, появились в 1980-х годах, чтобы облегчить установку ОЗУ. Первые модули Single Inline Memory Module (SIMM) имели 30 контактов и работали с 8-битной шиной, то есть у компьютеров 286 и 386SX (16-битные ПК) модули необходимо было устанавливать парами, а для систем 386DX и выше (32-битные архитектуры) следовало занимать все четыре слота SIMM. 30-контактные модули SIMM и SIPP были распространены с ёмкостями от 256 кбайт до 4 Мбайт, а в середине 90-х их сменили 72-контактные SIMM. Тот факт, что модули необходимо было устанавливать парами или четвёрками, не имеет отношения к параллельной работе, поскольку причина кроется в соответствии с шириной шины.
72-контактные SIMM использовались для памяти с быстрым страничным режимом (fast page mode DRAM, FPM), которую быстро заменила память EDO (Extended Data Out) в конце 90-х. Хотя существовали SIMM и на 64 Мбайт, обычно ёмкость модулей не превышала 32 Мбайт. Технология EDO обеспечила лучшую производительность чтения, когда из одной страницы считывалось много данных, и не требовалось менять адрес строки. Память EDO обладала максимальной пропускной способностью 266 Мбайт/с.
EDO уступила место синхронной памяти DRAM (SDRAM) на 128-контактных модулях DIMM (64-битная шина данных на 3,3 В), а тактовая частота задавалась системной шиной или контроллером памяти. Первое поколение памяти PC66 уже было в два раза быстрее EDO-DRAM, а последующие поколения хорошо масштабировались: PC100 и PC133 стали весьма популярными. Затем появилась память с удвоенной передачей данных (double data rate, DDR SDRAM) на 184-контактных модулях DDR DIMM. Напряжение было уменьшено до 2,5 В, а производительность увеличена в два раза благодаря передаче данных на подъёме и спаде сигнала. Частоты составили до 200 МГц (DDR400). Память DDR2 на 240-контактных DIMM, как и память DDR3, по-прежнему использует технологию удвоенной передачи данных, но имеет большие буферы предварительной выборки, а также существенно увеличенные тактовые частоты - до 400 МГц для DDR2 (DDR2-800) и, как предполагается, до 800 МГц у DDR3 (DDR3-1600).
Все упомянутые технологии работают с одним каналом памяти (или могут работать), то есть они увеличили пропускную способность по сравнению с предыдущими поколениями, главным образом, с помощью расширения шины памяти и увеличения её частоты.
Два канала
Если вы хотите получить максимальную производительность, то модули памяти следует устанавливать парами, по одному модулю на каждый канал. Этот шаг увеличивает пропускную способность памяти благодаря переходу на 128-битную шину (двухканальный режим работы).
Когда тактовые частоты уже не получалось увеличивать, индустрия решила расширить шину памяти с 64 до 128 бит. С появлением AMD Athlon XP и второго поколения процессоров Intel Pentium 4 под Socket 478 свет увидели чипсеты с двухканальными контроллерами памяти: Intel 865/875 и nVidia nForce2. Принцип работы весьма прост: данные распределяются между двумя каналами памяти, что позволяет удвоить пропускную способность. Вам потребуются два модуля памяти, но производительность будет ощутимо выше.
Двухканальные контроллеры памяти интегрировались во все последующие производительные чипсеты для процессоров Intel, такие, как Intel 915/925, 955 и 975 (с памятью DDR2), а также в последние модели P35 и X38. Не будем забывать и о линейке чипсетов nVidia nForce 4. Если смотреть с точки зрения памяти, то единственное отличие по сравнению с прошлыми линейками чипсетов заключается в используемых технологиях и частотах, а также в небольшой коррекции контроллеров на чипсетах для энтузиастов (Intel 975X, X38, nVidia nForce 680i), позволяющей снизить задержки. AMD же интегрирует контроллеры памяти во все процессоры AMD64. Одноканальная версия контроллера "умерла" вместе с Socket 754, а все другие архитектуры под Socket 939 и Socket AM2 используют двухканальный контроллер.
Но осталось ли преимущество двухканального контроллера сегодня? Производительность памяти и эффективность кэширования у современных платформ существенно выросли, как будет видно по результатам тестов. Мы оснастили систему Core 2 Duo памятью DDR2-800 с низкими задержками, после чего провели тесты в двухканальном режиме, а также с одним каналом памяти. В обоих случаях мы использовали 1-Гбайт DIMM от Corsair.
Установка двух модулей памяти на один канал контроллера приведёт к его работе в одноканальном режиме.
Каждый быстрый процессор Core 2 Duo оснащён 4 Мбайт кэша L2, который несколько нивелирует изменения в производительности подсистемы памяти. Другими словами, разница в использовании очень быстрой или очень медленной памяти всё ещё существенна, но она меньше, чем у старых процессоров с менее эффективным кэшем.