Солнушкин К.С. Модель производительности ЭВМ с учетом быстродействия центрального процессора (на примере задачи аэродинамики) Всего за полгода (с сентября 2007 по март 2008 года) производительность 50 самых мощных ЭВМ России и СНГ увеличилась в три раза. (см. список "Top50 – Суперкомпьютеры", http://supercomputers.ru). Это беспрецедентный рост за всю историю суперкомпьютерной отрасли России. По Санкт-Петербургу рост еще значительнее – в 3,2 раза (с 1,8 по 5,8 TFLOPS пиковой производительности). В указанный список вот уже в третьей редакции подряд входят только кластерные ЭВМ, вытеснив более дорогие ЭВМ с общей памятью. В условиях резкого роста вычислительных мощностей возникает потребность в анализе эффективности и научно обоснованном создании новых ЭВМ. В организациях и учреждениях бюджет любых проектов, в том числе при закупке ЭВМ, ограничен, поэтому ставится задача достичь для создаваемой ЭВМ максимальной производительности. В математической постановке это задача оптимизации, а именно – поиска минимума критерия "стоимость/производительность" на множестве возможных конфигураций ЭВМ [3]. Эта задача является весьма сложной. Пространство возможных конфигураций ЭВМ является многомерным, и для проведения оптимизации необходимо иметь возможность сопоставить каждому элементу этого многомерного пространства значение критерия "стоимость/производительность". Для этого, в свою очередь, необходимо для каждой конфигурации определять как стоимость, так и производительность. Эти величины известны только для весьма ограниченного числа ЭВМ, которые были реально созданы и производительность которых удалось измерить. Для большинства же конфигураций ЭВМ эти величины неизвестны, и их необходимо определять при помощи моделирования. Вместе с тем для современных ЭВМ такие модели практически отсутствуют. Учитывая темпы развития отрасли и появления новых архитектур центральных процессоров и других компонентов ЭВМ, модели производительности и стоимости должны регулярно обновляться и пополняться [1]. Для построения моделей производительности кластерных ЭВМ необходимо сначала научиться строить модели более простых объектов, в 1 частности, одно- и многопроцессорных ЭВМ, выполняющих роль базовых вычислительных блоков (так называемых "узлов") кластерных ЭВМ. В данной статье мы предлагаем модель производительности однопроцессорной ЭВМ на задаче аэродинамики, учитывающую быстродействие центрального процессора. Современные ЭВМ строят в соответствии с концепцией хранимой в памяти программы, эта концепция предложена фон Нейманом. Согласно ей, ЭВМ в процессе выполнения программы выполняет циклически следующий набор шагов: 1. выборка очередной команды из памяти 2. выборка данных из памяти, необходимых для выполнения команды 3. собственно исполнение команды 4. запись результатов выполнения обратно в память При этом время собственно исполнения команды (п. 3) определяется быстродействием центрального процессора (ЦП), а время, затрачиваемое на вспомогательные операции (пп. 1, 2, 4) определяется быстродействием подсистемы памяти, состоящей из оперативного запоминающего устройства (ОЗУ) и кэш-памяти различных уровней. В связи с этим предлагается концептуальная модель выполнения программы на ЭВМ, согласно которой время, затраченное на ее выполнение, состоит из двух частей: время, в течение которого происходило выполнение команд центральным процессором ( t proc ), и время, в течение которого происходила работа с подсистемой памяти – чтение и запись ( tmem ). Во время работы программы процессор ЭВМ выполняет поток команд, задействуя для выполнения каждой команды доступные функциональные устройства. Часть команд выполняется за один такт работы ЦП, часть требует нескольких тактов. Современные ЦП являются суперскалярными, то есть содержат несколько функциональных устройств, которые могут работать параллельно. Если алгоритм это позволяет, ЦП может одновременно задействовать несколько таких устройств. В этом случае за один такт можно выполнить не одну команду, а более. Время t proc равно длительности всех тактов ЦП, необходимых для выполнения программы и определяется как количество тактов, деленное на тактовую частоту ЦП: t proc = C proc f CPU . Количество тактов C proc зависит от многих факторов, включая следующие: размер задачи (количество ее входных данных). Чем больше входных данных, тем больше C proc ; способ записи алгоритма на языке программирования и способ трансляции текста программы в машинные коды. Например, технологии оптимизации, встроенные в компиляторы, позволяют сократить 2 количество машинных инструкций в программе, что ведет к сокращению числа необходимых тактов C proc . Другие технологии позволяют записывать инструкции машинного кода в форме, допускающей параллельное исполнение на суперскалярных ЦП. Это также приводит к уменьшению числа тактов C proc ; тип применяемого ЦП, а именно состав и количество его функциональных устройств и их возможность работать параллельно. Современные суперскалярные ЦП способны выполнять до четырех команд за такт, что позволяет значительно уменьшить общее число тактов ЦП, необходимых для решения задачи. Время работы с подсистемой памяти определяется следующим образом. Если для выполнения команды требуются операнды, находящиеся в памяти, ЦП загружает их, прежде чем продолжить выполнение команды. Загрузка занимает различное время. Если требуемые данные находятся в ОЗУ, загрузка может занять время, равное более чем сотне тактов ЦП, в течение которых полезную работу ЭВМ выполнять не будет. Время, которое требуется для доступа к ячейке памяти, называется латентностью доступа. Для повышения эффективности работы ЭВМ латентность необходимо снижать. Одним из способов этого является применение быстродействующей кэш-памяти, обычно двух-трех уровней иерархии, где хранятся недавно использованные данные. Латентность при доступе к кэш-памяти первого уровня составляет единицы тактов ЦП, второго уровня – десятки тактов. Общее время, затраченное ЭВМ на ожидание доступа к памяти, состоит, таким образом, из следующих слагаемых: t mem = t RAM N RAM + ∑ t Li N Li . Здесь: t RAM – латентность при доступе к ОЗУ; N RAM – количество обращений к памяти, завершившихся доступом к ОЗУ; t Li – латентность доступа к кэш-памяти уровня i; N Li – количество обращений к памяти, удовлетворенных кэш-памятью уровня i ("попадание в кэш", "cache hit"). В случае ЭВМ с неоднородной организацией подсистемы памяти (Non-Uniform Memory Architecture, NUMA), добавляется еще одно слагаемое: t NUMA N NUMA , где t NUMA – латентность доступа к памяти соседнего ЦП; N NUMA – количество обращений к ней. Количество обращений к различным устройствам подсистемы памяти (т.е. значения N RAM , N Li ) определяет общую величину задержки счета, связанную с ограниченным быстродействием подсистемы памяти. Однако конкретные значения этих величин зависят от множества факторов, в первую очередь, от типа ЭВМ, алгоритма и входных данных. Так, с увеличением размера кэш-памяти больше запросов будет выполняться без необходимости обращения к ОЗУ, поэтому N Li будет увеличиваться, а 3 N RAM – уменьшаться. Сложность вносит и то, что для разных типов ЭВМ значения латентности различны. Для исследований в этой области применяют методы имитационного моделирования. Итак, обе компоненты времени выполнения программы ( t proc и tmem ) существенно зависят от типа ЭВМ, алгоритма и его входных данных. Обозначим общее время выполнения программы через tCPU : t CPU = t proc + t mem = C proc f CPU + t mem (1) Обозначение tCPU выбрано по следующей причине. Современные многозадачные операционные системы работают в режиме разделения времени. Каждой из работающих в системе задач, включая ядро операционной системы, поочередно выделяется небольшой квант времени, в течение которого задача может занимать центральный процессор. Общая длительность всех квантов, которые потребовались для завершения задачи, традиционно называется процессорным временем, затраченным задачей (англ. "CPU time"). Таким образом, обозначение tCPU является исторически сложившимся, хотя и не очень удачным; следует отличать его от t proc . В многозадачных операционных системах с уменьшением накладных расходов, связанных с работой операционной системы и сторонних программ, астрономическое время выполнения уменьшается и стремится к процессорному времени. Величину процессорного времени, затраченного при выполнении задачи, можно получить с помощью систем учета ресурсов, являющихся частью операционной системы. Приведенная выше формула задает математическую модель для времени выполнения программы на ЭВМ. Так как время выполнения определяет быстродействие ЭВМ на задаче [2], то мы имеем дело с моделью производительности ЭВМ. Идентифицировать модель можно с помощью эксперимента. Исследуем процесс численного моделирования обтекания кузова автомобиля с учетом турбулентности. Задача (см. [4]) решается методом конечных объемов с числом ячеек примерно 3,6 млн. Для исследования используем ЭВМ на основе ЦП "AMD Opteron 254". Будем варьировать тактовую частоту ЦП в пределах f CPU =1000–2800 МГц и измерять процессорное время tCPU , затраченное для численного моделирования, в данном случае – для выполнения 25 итераций алгоритма. Будем также варьировать быстродействие ОЗУ путем изменения тактовой частоты ОЗУ. Результаты эксперимента сведем в следующую таблицу. 4 Процессорное время tCPU , с, затраченное на численное моделирование, в зависимости от тактовых частот ЦП и ОЗУ Тактовая частота ЦП f CPU , ГГц 1,0 1,8 2,0 2,2 2,4 2,6 2,8 f DRAM , МГц 200 1975 1249 1166 1097 1043 1015 958 333 1894 1127 1029 978 915 855 847 400 1882 1110 1016 942 882 819 776 В таблице использованы следующие обозначения: f CPU – тактовая частота ЦП, ГГц; f DRAM – тактовая частота ОЗУ (“DRAM Clock”), МГц. Согласно формуле (Ошибка! Источник ссылки не найден.), мы задавали значения f CPU и получали в ходе эксперимента значения tCPU . Теперь требуется найти значения C proc и tmem . Так как мы также варьировали быстродействие ОЗУ, то фактически мы исследовали три ЭВМ с одним и тем же типом ЦП, но различными типами ОЗУ. Поэтому нам необходимо идентифицировать три модели производительности с одним и тем же значением C proc , так как эта величина не зависит от быстродействия ОЗУ. Обработав экспериментальные данные методом регрессионного анализа, получаем, что всем моделям соответствует значение 9 C proc =1655·10 тактов ЦП. Далее для трех разных значений тактовой частоты ОЗУ – 200, 333 и 400 МГц получаем значения tmem , равные соответственно 347, 225 и 194 с. Как видим, при повышении быстродействия ОЗУ время, затраченное вхолостую на ожидание доступа к ОЗУ, сокращается. На рисунке приведен пример согласования между экспериментальными и модельными данными для тактовой частоты памяти 400 МГц. Для остальных случаев рисунки аналогичны. 5 tCPU, с 2000 1800 1600 1400 1200 1000 800 600 1,0 1,5 2,0 2,5 fCPU, ГГц Зависимость процессорного времени, затраченного на расчет, от тактовой частоты ЦП: эксперимент (точки) и модель (линия). (Тактовая частота ОЗУ – 400 МГц) Согласно модели, при параметрах ЦП и ОЗУ, обеспечивающих их максимальное быстродействие ( f CPU =2,8 ГГц; f RAM =400 МГц), время, затраченное на работу с подсистемой памяти, составляет 25 % от общего времени счета. Рост интенсивности вычислений (например, за счет повышения тактовой частоты ЦП) ведет к росту нагрузки на подсистему памяти. Если поднять тактовую частоту ЦП в два раза, не увеличив при этом быстродействие ОЗУ, то время счета уменьшится только в 1,6 раза, при этом время работы с подсистемой памяти будет составлять порядка 40 % времени счета. В такой ситуации подсистема памяти становится "узким местом" ЭВМ. Чтобы избежать подобного дисбаланса, производители ЭВМ сопровождают повышение скоростных характеристик ЦП аналогичным повышением характеристик подсистемы памяти; модель объясняет это поведение. Это объяснение верно и в более общем случае. Так, в современных процессорах "AMD Barcelona" в рамках одного ЦП работают 4 вычислительных ядра. Это также ведет к росту интенсивности вычислений и повышению нагрузки на подсистему памяти. Так как увеличить скоростные характеристики ОЗУ было затруднительно с технологической точки зрения, то во избежание дисбаланса производитель добавил в состав ЦП 3-ий уровень кэш-памяти значительного объема; при этом доля 6 запросов, удовлетворяемых из кэш-памяти, возросла (величина N L3 в концептуальной модели), следовательно, удалось повысить скоростные характеристики подсистемы памяти в целом. В качестве направлений дальнейших исследований можно назвать поиск зависимостей, связывающих параметры модели C proc и tmem с параметрами ЭВМ и решаемой задачи. С автором можно связаться по адресу ks@spbstu.ru. СПИСОК ЛИТЕРАТУРЫ 1. Солнушкин К.С. Анализ быстродействия ОЗУ и построение модели производительности ЭВМ // Научно-технический вестник СПбГУ ИТМО. СПб.: СПбГУ ИТМО, 2008. ISSN 1819-222X (в печати) http://konstantin.solnushkin.ru. 2. Солнушкин К.С. О значении терминов "производительность" и "быстродействие" в применении к ЭВМ // Научно-технические ведомости СПбГПУ. 2008.№ 3. С. 297-300. 3. Солнушкин К.С. Постановка задачи синтеза кластерных ЭВМ, оптимальных по критерию цены производительности // Труды XV Всерос. науч.-методич. конф. Телематика-2008. СПб.: Изд-во СПбГУ ИТМО, 2008. http://konstantin.solnushkin.ru 4. FLUENT Benchmarks. http://www.fluent.com/software/fluent/fl5bench/flbench_6.3/ problems/fl5l2.htm 7