Русский English


Разделы сайта

ПОСЛЕДНИЕ НОВОСТИ
СТАТЬИ
СКАЧАТЬ ФАЙЛЫ
РЕЗУЛЬТАТЫ ТЕСТОВ
ФОРУМ
О ТЕСТЕ
ССЫЛКИ
Разработки
RMMA
CPU RM
RM Gotcha
RMClock
RAMTester


Манифест


Тест CPU RightMark (CPU RM) предназначен для объективного измерения производительности современных и будущих CPU в различных вычислительных задачах, таких как: численное моделирование физических процессов и решении задач из области трехмерной графики. Основной упор сделан на тестирование под нагрузкой связки CPU-RAM и блоков FPU/SIMD.

Что значит "чистая производительность"?

Когда для измерения мощности процессора тестируется какое-либо приложение, зачастую на результаты тестов оказывает существенное влияние производительность других подсистем, таких как видео или дисковая . Иногда влияет скорость взаимодействия операционной системы с периферийными устройствами. Таким образом, даже сравнивая идентичные системы с различными процессорами, трудно получить сравнительную оценку именно реальной производительности процессоров, а не комплекса оборудования и ПО.

В тесте CPU RM влияние всех других подсистем, кроме памяти и шины CPU-RAM, нивелировано. Это достигается путем замера скорости работы различных частей тестового приложения, время работы которых не связано со временем выполнения <внешних> задач, вроде переключения видео страниц и обращения к жесткому диску для чтения/записи. Учитывается только время работы процессора.

Зачем нужна эта "чистая производительность"?

Кому нужно знать именно <чистую производительность>, если в реальном приложении результат будет иной? Например, зачем нужна чистая производительность процессора в графических задачах, если общая производительность системы определяется, в основном, видео картой? Но, и процессор под стать ускорителю нужно как-то выбирать, нужны какие-то объективные критерии выбора. В качестве иллюстрации, рассмотрим скорость работы трехмерной компьютерной игры в разрешении 1024x768x32bpp с наивысшей детализацией. Предположим, что результаты у систем с 2GHz и 1GHz процессорами идентичны. Выбираем 1GHz процессор, потому что он дешевле. А потом появляется новая трехмерная компьютерная игра, и уже сам центральный процессор системы становится узким местом в любом разрешении, потому что в этой новой игре применяются хитрые алгоритмы просчета потенциальной видимости объектов, динамической детализации, и реализована очень сложная и реалистичная физическая модель.

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

Еще один пример. Скорость работы реального приложения может зависеть от скорости работы жесткого диска, и процессоры в такой системе будут показывать относительно равные результаты. Бери любой. Но со временем объем оперативной памяти в системе увеличится, в использовании жесткого диска не будет больше необходимости, и небольшая разница результатов процессоров превратится в гигантскую.

Далее, общая сравнительная производительность систем может быть ниже сравнительной чистой производительности процессоров. Но выше быть не может.

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

Но как, например, измерить чистую производительность процессора в графических приложениях, если они напичканы вызовами видео драйвера? Синтетический тест, показывающий, сколько процессор может выполнить умножений, сложений и других арифметических операций в секунду плох. Он не учитывает, как процессор обрабатывает ветвления в реальной задаче, предсказывает переходы, насколько оптимизирован конвейер - в общем такой подход неадекватен задаче. Кроме того, необходимо еще определять пропорции, в которых встречаются те или иные команды в программе.

Но на самом деле любое приложение 3х мерной графики, будь то редактор 3D моделей или движок Quake, является в принципе реализацией на компьютере решения некоторой геометрической задачи. Скорее всего, выполнение некоторых элементов этой задачи, вроде текстурирования треугольников, возложено на 3D ускоритель. Однако алгоритмы оптимизации в компьютерной графике (чтобы не перегружать ускоритель рисованием невидимых объектов и т.п.) весьма сложны и требовательны к производительности центральных процессоров системы.

Интересно, что многие алгоритмы искусственного интеллекта, класса поиска пути и оптимизации укладки в трехмерном пространстве и пр. также геометричны по своей сути или содержат существенную геометрическую часть.

Решение большинства современных научных задач (геометрических, статистических, моделирования) в конечном итоге сводится к простым операциям - в первую очередь, скалярное произведение векторов, вычисление нормы вектора, операции сложения-умножения векторов и матриц. Исполнение этих операций чередуется с ветвлениями алгоритма. Подчеркнем: перечисленные операции постоянно повторяются в любом трехмерном графическом приложении, более того, основная вычислительная нагрузка приходится именно на их выполнение.

В тесте CPU RightMark как раз измеряется время выполнения геометрических вычислений, без учета вызова видеодрайвера. Поскольку графический движок VirtualRay, используемый для визуализации работы теста, чисто программный, т.е. не использует аппаратных возможностей 3D ускорителей, и поскольку, он основан на методе трассировки лучей, в нем не выполняется очень специфической операции закраски (текстурирования) треугольников, которая в настоящее время переложена на 3D ускоритель. В CPU RM производятся только естественные для геометрических приложений вычисления, связанные с предварительным отсечением невидимых объектов и сортировкой (culling/sorting).

Для правильного измерения производительности новейших процессоров необходимы тесты, полностью использующие все нововведения. Дополнительные расширения процессорных команд, архитектурные особенности. В противном случае просто не будет возможности адекватно измерить производительность на новых приложениях. Тест CPU RightMark полностью удовлетворяет всем перечисленным требованиям. А благодаря открытому исходному коду тест всегда можно оперативно модифицировать для поддержки любых новшеств в процессорах.

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

CPU RM содержит два блока: расчет физической модели и отображение сцены. У каждого блока есть различные варианты, оптимизированные под различные системы процессорных команд. Расчет физической модели имеет два варианта: с использованием SSE2 и с использованием FPU, поскольку при расчeте используются числа типа double.

Блок визуализации состоит из двух частей. Предварительного просчeта сцены и трассировки лучей, отвечающих точкам результирующего изображения. Для цикла трассировки лучей естественна оптимизация под SSE, в этой части практически не задействованны инструкции FPU, и она целиком написана на ассемблере. Другая часть - предварительный просчет сцены - алгоритмически сложна и написана на языке высокого уровня C++. Подобное разделение отвечает тенденциям принятым в реализации задач визуализации в реальном времени.

Отдельное измерение скорости работы различных частей программы позволяет оценить производительность центрального процессора в разноплановых приложениях. Это также позволяет протестировать качество реализации того или иного набора инструкций типа SIMD.

Оптимизация тестового приложения под тот или иной набор инструкций произведена по принципу разумной достаточности. Она не является абсолютной, но такой, которую можно достичь в реальном процессе разработки в разумные сроки. Часть кода, использующая FPU инструкции, откомпилирована с помощью MS VC++ 6.0 - самого распространенного на сегодня компилятора для создания компьютерных игр под платформу Win32. Другая часть, использующая набор инструкций SSE2, откомпилирована при помощи Intel C++ 5.0 с включенной полной оптимизацией. Разумно предположить, что компания Intel предлагает более эффективный инструмент генерации кода под свои процессоры.

Благодаря высокой точности измерений, для получения стабильных повторяемых результатов достаточно менее одной минуты работы теста. Тест CPU RM показывает результаты, пропорциональные, с небольшой поправкой на влияние памяти, частоте процессора. Что мы и ставили своей целью. Поскольку в тестовом приложении в основном выполняется эффективное предварительное кэширование данных, производительность памяти не оказывает решающего влияния на результаты. Это позволяет тестировать производительность процессоров в некотором отрыве от быстродействия памяти, что хорошо, поскольку тип памяти может измениться.

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

Присоединяйтесь!




© 2002-2007, RightMark Gathering. All rights reserved.
Design by Explosion