Диапазоны изменений коэффициентов нагрузки общих ресурсов МВС с учетом параметров реальных процессоров и оперативной памяти
Коэфициент нагрузки кэш-памяти первого уровня может изменяться в широких пределах в зависимости от типа программы, параметров ядра. Примем, что меняется в диапазоне 0.2 – 0.8.
Вероятность удачных обращений в кэш-памяти всех уровней зависят от многих переменных, в частности от свойств пространственной и временной локальности программы, от степени ассоциативности и размеров кэш-памятей и ряда других. Примем, что изменяется в диапазоне 0.7 - 0.8, - 0.8 - 0.9 , - 0.9 - 0.97.
Значения суммарных коэффициентов нагрузки кэш-памяти третьего уровня, коммутаторов и оперативной памяти для 4-х и 8-ми ядерных вычислительных системы ( ) при различных сочетаниях параметров приведены в таблицах 1 и 2.
Таблица 1.
2 канала оперативной памяти; =4 такта; =10 тактов;
=30 тактов; =150 тактов; = 9 тактов.
k=4 | k=8 | k=4 | k=8 | k=4 | k=8 | ||||
0.2 | 0.7 | 0.80 | 0.90 | 0.108 | 0.216 | 0.360 | 0.720 | 0.0900 | 0.180 |
0.8 | 0.90 | 0.97 | 0.036 | 0.072 | 0.120 | 0.240 | 0.0090 | 0.018 | |
0.3 | 0.7 | 0.80 | 0.90 | 0.162 | 0.324 | 0.540 | 1.080 | 0.1350 | 0.270 |
0.8 | 0.90 | 0.97 | 0.054 | 0.108 | 0.180 | 0.360 | 0.0135 | 0.027 | |
0.4 | 0.7 | 0.80 | 0.90 | 0.216 | 0.432 | 0.720 | 1.440 | 0.1800 | 0.360 |
0.8 | 0.90 | 0.97 | 0.072 | 0.144 | 0.240 | 0.480 | 0.0180 | 0.036 | |
0.5 | 0.7 | 0.80 | 0.90 | 0.270 | 0.540 | 0.900 | 1.800 | 0.2250 | 0.450 |
0.8 | 0.90 | 0.97 | 0.090 | 0.180 | 0.300 | 0.600 | 0.0225 | 0.045 | |
0.6 | 0.7 | 0.80 | 0.90 | 0.324 | 0.648 | 1.080 | 2.160 | 0.2700 | 0.540 |
0.8 | 0.9 | 0.97 | 0.108 | 0.216 | 0.360 | 0.720 | 0.0270 | 0.054 | |
0.7 | 0.7 | 0.80 | 0.90 | 0.378 | 0.756 | 1.260 | 2.520 | 0.3150 | 0.630 |
0.8 | 0.90 | 0.97 | 0.126 | 0.252 | 0.420 | 0.840 | 0.0315 | 0.063 | |
0.8 | 0.7 | 0.80 | 0.90 | 0.432 | 0.864 | 1.440 | 2.880 | 0.3600 | 0.720 |
0.8 | 0.90 | 0.97 | 0.144 | 0.288 | 0.480 | 0.960 | 0.0360 | 0.072 |
Таблица 2.
2 канала оперативной памяти; =4 такта; =12 тактов;
=36 тактов; =180 тактов; = 9 тактов.
k=4 | k=8 | k=4 | k=8 | k=4 | k=8 | ||||
0.2 | 0.7 | 0.80 | 0.90 | 0.108 | 0.216 | 0.432 | 0.864 | 0.1080 | 0.2160 |
0.8 | 0.90 | 0.97 | 0.036 | 0.072 | 0.144 | 0.288 | 0.0108 | 0.0216 | |
0.3 | 0.7 | 0.80 | 0.90 | 0.162 | 0.324 | 0.648 | 1.296 | 0.1620 | 0.3240 |
0.8 | 0.90 | 0.97 | 0.054 | 0.108 | 0.216 | 0.432 | 0.0162 | 0.0324 | |
0.4 | 0.7 | 0.80 | 0.9 | 0.216 | 0.432 | 0.864 | 1.728 | 0.2160 | 0.4320 |
0.8 | 0.90 | 0.97 | 0.072 | 0.144 | 0.288 | 0.576 | 0.0216 | 0.0432 | |
0.5 | 0.7 | 0.80 | 0.9 | 0.270 | 0.540 | 1.080 | 2.160 | 0.2700 | 0.5400 |
0.8 | 0.90 | 0.97 | 0.090 | 0.180 | 0.360 | 0.720 | 0.0270 | 0.0540 | |
0.6 | 0.7 | 0.80 | 0.90 | 0.324 | 0.648 | 1.296 | 2.592 | 0.3240 | 0.6480 |
0.8 | 0.9 | 0.97 | 0.108 | 0.216 | 0.432 | 0.864 | 0.0324 | 0.0648 | |
0.7 | 0.7 | 0.80 | 0.9 | 0.378 | 0.756 | 1.512 | 3.024 | 0.3780 | 0.7560 |
0.8 | 0.90 | 0.97 | 0.126 | 0.252 | 0.504 | 1.008 | 0.0378 | 0.0756 | |
0.8 | 0.7 | 0.80 | 0.9 | 0.432 | 0.864 | 1.728 | 3.456 | 0.4320 | 0.8640 |
0.8 | 0.90 | 0.97 | 0.144 | 0.288 | 0.576 | 1.152 | 0.0432 | 0.0864 |
Параметры латентностей (задержек) составляют:
кэш-памяти первого уровня - 4 такта;
кэш-памяти второго уровня - (10 – 12) тактов в зависимости от частоты процессора;
кэш-памяти третьего уровня - (30 – 36) тактов в зависимости от частоты процессора;
оперативной памяти - (50 – 60) нс, что в пересчете на такты в зависимости от частоты процессора составляет (120 – 180) тактов;
коммутаторов - (9 - 10) тактов при передаче 64-байтных блоков.
Анализ данных таблиц 1 и 2 показывает, что при измении параметров в широких пределах суммарный коэффициент нагрузки:
коммутаторов 1 и 2 достаточно мал и не превышает единицы (в худшем из рассмотренных вариантов меньше 0.5, а коммутатор 2 менее нагружен по сравнению с коммутатором 1). Это означает, что они не являются «узкими» местами исследуемых многоядерных вычислительных систем.
одного канала оперативной памяти также меньше 1 при условии, что вероятности удачных обращений в кэш-памяти не меньше: - 0.7, - 0.8, - 0.9. Если в одной микросхеме имеется не 2, а 3 канала оперативной памяти (такая ситуация в процессорах Xeon со структурой Nehalem), то запас прочности, соответственно, возрастает.
кэш-памяти третьего уровня во многих случаях превышает единицу. Уже при 4-х ядрах в вычислительной системе при 0.5 - ,и может достигать значений 1.3 – 1.7. Еще более тяжелая ситуация в 8-ми ядерных системах. Уже при 0.3 и может достигать значений 2.9 – 3.4.
Это означает, что именно кэш-память третьего уровня (общий ресурс многоядерной вычислительной системы) является «узким» местом.
Реализация общей кэш-памяти третьего уровня в виде единого комбинационного устройства целесообразна в системах с числом ядер не более 4.
В системах с большим числом ядер кэш-память третьего уровня должна быть реализована более сложным образом, например разделена на несколько сегментов (один сегмент для не более 4-х ядер).
Определив суммарный коэффициент нагрузки кэш-памяти третьего уровня, коэффициент ускорения многоядерной вычислительной системы можно определить по формуле
.
Результаты зависимости ускорения S от параметров программы и МВС, приведеных в таблице 1, отображены в таблице 3.
В таблице 4 приведены значения коэффициентов ускорения многоядерной вычислительной системы с процессором фирмы Intel Xeon Е5520 (данные взяты из [3]), полученные при выполнении тестов и реальных программ.
Таблица 3.
Кол-во ядер | ; ; ; | Коэффици-ент ускорения МВС | ; ; ;; | Коэффи-циент ускорения МВС S | |
0.2 | 0.18 | 0.072 | |||
0.36 | 0.144 | ||||
0.72 | 0.288 | ||||
0.3 | 0.27 | 0.108 | |||
0.54 | 0.216 | ||||
1.08 | 7.41 | 0.432 | |||
0.4 | 0.36 | 0.144 | |||
0.72 | 0.288 | ||||
1.44 | 5.6 | 0.576 | |||
0.5 | 0.45 | 0.180 | |||
0.90 | 0.360 | ||||
1.80 | 4.4 | 0.720 | |||
0.6 | 0.54 | 0.216 | |||
1.08 | 3.7 | 0.432 | |||
2.16 | 3.7 | 0.864 | |||
0.7 | 0.63 | 0.252 | |||
1.26 | 3.17 | 0.504 | |||
2.52 | 3.17 | 1.080 | 7.41 | ||
0.8 | 0.72 | 0.288 | |||
1.44 | 2.8 | 0.576 | |||
2.88 | 2.8 | 1.152 | 6.94 |
Таблица 4.
Тест | Коэффициент ускорения МВС S | Примечания Процессор Xeon Е5520 | |||
Количество ядер в МВС | |||||
Copy | 1.98 | 2.99 | 3.27 | Тесты STREAM | |
Scale | 1.98 | 3.01 | 3.39 | ||
Add | 1.98 | 2.68 | 2.56 | ||
Triad | 1.97 | 2.71 | 2.70 | ||
Linpack (n=1000) | 1.83 | 2.45 | 2.16 | Тест Linpack (n=1000) | |
Test178cls | 2.00 | 3.80 | 6.70 | Приложение Gaussian-03 | |
Test178mp2 | 1.80 | 3.20 | 5.10 | ||
Teat397dft_no FMM | 2.00 | 3.90 | 7.10 |
Сравнение данных из таблицы 4 и результатов, полученных в соответствии с предложенной методикой, показывает хорошое их соответствие.
Основная проблема при использовании предложенной методики состоит в определении коэффициента нагрузки кэш-памяти первого уровня .Значение этого коэффициента в значительной степени определяется количеством команд обращения в память в программе и их соотношением с общим числом команд в программе, а также типом команд обработки, наличием различных зависимостей между командами и параметрами исполнительных устройств. Некоторая статистика количества общего команд, команд обращения в память, команд обработки данных с плавающей запятой, команд обработки данных других типов для ряда программ приводится в [2].
Для конкретной программы пользователя не составляет большого труда выявить участки программы, которые вносят наибольший вклад во время выполнения программы. Затем написать упрощенные программы реализации этих участков на псевдоассемблере. Анализ этих программ позволит выяснить структуру программы (число команд обращения в память, наличие информационных зависимостей между командами, тип обрабатываемых данных). Зная параметры процессоров (латентности кэш-памятей, их объемы, времена выполнения основных операций, частоты процессора), оперативной памяти конкретной многоядерной вычислительной системы, а также структуру программ, можно определить конкретный диапазон значений коэффициента нагрузки кэш-памяти первого уровня и воспользоваться предложенной методикой для определения коэффициента ускорения многоядерной вычислительной системы при выполнении конкретной программы.
Выводы:
1. Если суммарный коэфициент загрузки (использования) наиболее загруженного общего ресурса (в ииследуемых системах это кэш-память третьего уровня) в системе меньше 1, то при выборе соответствующих размеров буферов коэффициент ускорения системы стремится к n, где n– это число ядер в системе.
2. Для определения коэффициента ускорения многоядерных вычислительных систем, «узким» местом которых является кэш-память третьего уровня, можно использовать следующую методику:
определяется суммарный коэффициент нагрузки кэш-памяти третьего уровня;
коэффициент ускорения многоядерной вычислительной системы.
.
Список литературы:
1. Воеводин В.В.Параллельные вычисления. — Воеводин В.В., Воеводин Вл.В. — Спб.: БХВ-Петербург, 2002. 608 с.
2. David E.Culler, Jaswinder Pal Singh with Anoop Gupta. Parallel Computer Architecture: A hardware/software aproach. Morgan Publishers INC, San Francisco, California, 1999, 1025 p.
3. Михаил Кульминский. Nehalem: структура и производительность. Открытые системы, №8, 2009.
УДК 004.31
Смолий В.В., Чернядьева В.В.