Способы оценки пиковой производительности
Исторически одной из первых оценок пиковой производительности компьютера была оценка «число команд, выполняемых компьютером в единицу времени» (MIPS -Million Instructions Per Second). Для определенного класса приложений такой подход является вполне приемлемым, поскольку общее представление о скорости работы компьютера получить можно. Но, опять-таки, только самое общее. Производительность, выраженная в MIPS, говорит о скорости выполнения компьютером своих же команд. Но в какое число команд отобразится программа пользователя или отдельный ее оператор? Заранее не ясно. К тому же каждая программа обладает своей спецификой, число команд той или иной группы от программы к программе может меняться очень сильно. В этом контексте данная характеристика действительно дает лишь самое общее представление о производительности компьютера.
Для задач вычислительного характера, в которых важна высокая скорость выполнения операций над вещественными числами, подход к определению производительности не должен опираться на скорость выполнения машинных команд. Во многих случаях операции над вещественными числами выполняются медленнее, чем, скажем, управляющие или целочисленные операции. За время выполнения одной операции деления двух чисел в формате с плавающей точкой может выполниться десяток простых команд. Это послужило причиной введения другой оценки пиковой производительности: «число вещественных операций, выполняемых компьютером в единицу времени» (FLOPS -Floating point operations per second). Такой способ, безусловно, ближе и понятнее пользователю. Операция (а + b) в тексте программы соответствует одной операции сложения в программе. Пользователь знает вычислительную сложность своей программы, а на основе этой характеристики может получить нижнюю оценку времени ее выполнения.
Да, к сожалению, оценка будет только нижней. В этом и кроется причина недовольства и разочарований. Взяв за ориентир пиковую производительность компьютера, пользователь рассчитывает и на своей программе получить столько же. Совершенно не учитывается тот факт, что пиковая производительность получается при работе компьютера в идеальных условиях. Нет конфликтов при обращении к оперативной памяти, все данные берутся из регистров, все функциональные устройства постоянно и равномерно загружены и т. п. Но в жизни так бывает редко. В каждой программе пользователя есть свои особенности, которые эти идеальные условия нарушают, обнажая «узкие» места структуры компьютера. Особенности структуры ядра, системы команд, состав функциональных исполнительных устройств, строение и объем кэш-памяти, структура подсистемы доступа в память, реализация ввода-вывода — все это, и не только это, может влиять на выполнение реальной программы. Причем заметим, перечислены только части аппаратуры, а говорить надо о программно-аппаратной среде выполнения программ в целом. Если для компьютера нет эффективных компиляторов, то пиковая производительность будет вводить в заблуждение еще сильнее.
Значит нужно отойти от характеристик аппаратуры и оценить эффективность работы программно-аппаратной среды на фиксированном наборе задач. Бессмысленно для каждого компьютера показывать свой набор. Разработчики без труда придумают такие программы, выполняя которые компьютер не достигает пиковой производительности. Такие примеры никого не убедят. Набор тестовых программ должен быть зафиксирован. Эти программы будут играть роль эталона, по которому будут судить о возможностях компьютера.
Такие попытки предпринимались неоднократно. На основе различных критериев формировались тестовые наборы программ или фиксировались отдельные эталонные программы (benchmark). Эталонные программы (тесты) запускались на различных компьютерах, замерялись те или иные параметры, на основе которых впоследствии проводилось сравнение компьютеров между собой.
Дата добавления: 2015-09-29; просмотров: 687;