TestMem support page - BenchMem

TestMem techsupport home page

home   news   software   articles   other   links   contact


 

Мои программы:

Тест памяти

TestMem1
TestMem2
TestMem3
TestMem4
Автоматическое управление частотой процессора
C&QnF2
Тест видеопамяти
TestVideoRAM
Загрузчик video BIOS
Loader
Меню для VGA
Video BIOS extender
Производительность подсистемы памяти
BenchMem

Программа для визуального представления производительности системной памяти.

    Программа прогоняет блоки разной длины на чтение и запись и строит графики производительности.

    С О Д Е Р Ж А Н И Е
Зачем нужна эта программа
Что нового
Внешний вид
Небольшое описание
Что, где, ...??

Зачем нужна эта программа.

В начальной версии строятся два графика:
- производительность системы кеширования
- зависимость скорости чтения и записи системной памяти от режима достуап по адресам

Что нового.

пока ничего, будет(?).
Хотелось бы сделать:
     - график скорости D-cache(есть)
     - график скорости I-cache
     - производительность памяти при 4,32,64,128-байтном доступе
     - график memory latency для разного --.--.--.-- доступа
     - вычисление блока передачи данных по memory latency
     - прочее, пока трудно сформулировать.

Внешний вид.


В начальной версии, программа имеет 3 окна:
- производительность cache 1, 2 level и внешней памяти.

cache speed

На самом верху окна выдается частота процессора, не путать с рейтингом для AMD процессоров!
Особая точность в этом числе не важна - его значение используется для вычисления времени выполнения тестов с применением команды RDTSC.
Внизу окна выводится:
     - выбранный метод доступ к памяти из:
          - normal - доступ через обычные команды чтения и записи
          - MMX - доступ через MMX расширение
          - SSE - доступ через SSE расширение.
          Для расширения SSE2 используются те же команды, что в SSE и уточнение режима SSE или SSE2 не требуется.
     - скорость чтения из cache 1 level
     - скорость чтения из cache 2 level
     - скорость чтения из системной памяти
Также на этом окне есть кнопка Refresh, позволяющая перезапустить тест на этом окне.

На втором окне выводится скорость чтения и записи для разного 'прыжка' по адресам. Например, позиция 1Kb означает, что следующий доступ смещен от текущего на 1Kb в сторону большего адреса и его скорость равна соответствующим позициям графиков. Значения с отрицательными числами соответствуют смещению нового адреса в сторону уменьшения адресов. Цифра 0 обозначает прямое последовательное потоковое чтение (и запись). Отдельные всплески, кроме зоны около 0, означают случайную синхронизацию в связке CPU-...-RAM, что и вызывает всплеск производительности.

cache speed

В этом, как и в первом окне, выводится выбранный метод доступа и максимальная, минимальная и средняя скорость памяти по записи и по чтению.
На третьем окне приведена лицензия и ссылки на mail и эту страницу. Вряд-ли стоит приводить ее внешний вид, ничего интересного там нет.

Небольшое описание.

Выбор режима доступа из normal,MMX,SSE выбирается автоматически по доступности этого набора команд в процессоре и максимальной производительности. Для измерения cache 1 level, скорости памяти по чтению и скорости по записи, выбирается свой, оптимальный режим. Если при refresh этот тип меняется, то означает практически равную производительность режимов.
В программе предусмотрены специальные меры предотвращения искажения результатов из-за загруженности операционной системы. К примеру, если отсутствуют тяжелые задачи или DOS-окна, то программа выполняется много быстрее, чем при их наличии. Я не стал делать этот механизм очень 'упорным', иначе на загруженном компьютере результата придется ждать очень долго. Соответственно, опция "High priority" не очень и нужна. При включении этой опции задача имеет действительно HIGH priority и даже мышка не будет перемещаться. Ничего страшного, компьютер не сломается. Противодействие задержкам операционной системы достаточно эффективно и особого смысла ставить эту опцию нет. Впрочем, если Вы считаете нужным - пожалуйста.
Кодга уже сделал начальную версию понял, что обязательно надо выводить данные как для 32-байтного, так и для 64-байтного блока тестирования. Накладные расходы для переделки превысили все разумные рамки и .... проще сделать новую редакцию заново. Т.о., сейчас есть 2 одинаковые версии - для 32 и 64 блока.
Основная причина - дл процессоров до Pentium3 включительно размер блока обмена с внешней памятью равнялся 32 байта, а в Athlon и Pentium4 это число было увеличено.
Еще одна очень важная вещь - в программе нет никаких компенсаций!
Сколько реально выполняется тест, столько и выводится на график и в результат.
В программе учитывается только один параметр - время выполнения команды RDTSC, по которой запрашивается системный счетчик процессора. RDTSC показывает количество тиков процессора (величина обратная частоте процессора) и позволяет измерять время предельно точно.
Сейчас поясню причину появления этой задержки...
Обычная проверка времени производится как-то так:
          rdtsc
          тестирование
          rdtsc
По двум значениям системного счетчика можно точно измерить время, но сами операции RDTSC занимают какое-то время! Положим, что процессор выдает значение своего счетчика на самый конец операции RDTSC, тогда время выполнения всей второй команды RDTSC попадет в общее время. Т.о., чтоб получить реальное время, затраченное на тестирование, надо из приведенного значения вычесть время на одну операцию RDTSC, что и делается в программе. Как подтверждение сказанного, на Pentium2/3 время выполнения команды RDTSC очень велико и без учета этого фактора кривая производительности cache на первом окне будет загнута вниз. Если посмотреть на график моей программы - горизонтальная линия.
Resume: в программе нет никаких поправок! Возможно, что применены не самые оптимальные режимы доступа .... над этим буду работать.

Что, где, ...???

Программа сгенерирована в 3х версиях: с 32-байтным блоком, с 64-байтным блоком и с 128-байтным блоком Позже выпущу совмещенную версию(вряд-ли). Если Вы сомневаетесь в честности программы, я могу представить исходники программы. Вы можете делать с ними что угодно при одном обязательном условии - никакие идеи и алгоритмы не могут быть использованы в не-freeware программах!
Прошу сразу учесть, что она написана на ассемблере.

WARNING! email на hotmail практически не работает!

back


ђҐ©вЁ­Ј@Mail.ru