Еще один тест скорости системной памяти и кэша процессора с открытым исходным кодом
реклама
Вы еще не потестили свой проц новым тестом?
Ну и ну, все давно тестируют!
Уже версия 0.03 и феноменально дружественный интерфейс.
Самая новая версия: 0.05 (или здесь)
|
|
|
Инструкция к cctc v0.03
cctc это простой тест памяти с открытым кодом cctc.zip (или здесь) и готовый исполнимый файл cctc.exe (или здесь).
Для выполнения на легальной копии ОС windows вам могут понадобиться бесплатые библиотеки vc2010 отсюда.
cctc это качественный (а не количественный) тест, который пытается обнаружить влияние L1,L2,L3 кэша на доступ к памяти, и сравнить это влияние в принципе, абсолютные значения тестов не могут быть использованы, это связано с погрешностями измерений интервалов и погрешностями вычислительных действий над ними, т.к. не приняты никакие меры по улучшению точности.
Пример работы теста
>cctc.exe -p2 262e6 13.5
CPU cache test v0.03
FSB: 2.620000e+008
CPU_mult: 1.350000e+001
test pattern: 2
Select CPU assignment for the program and press a key when ready...
pass: block size: clc: seconds: transfer rate
01: 2K: 4.148178e+004: 3.752946e-004s: 170532.70Kb/s ( 166.54Mb/s, 0.16Gb/s )
02: 4K: 8.607897e+004: 7.301015e-004s: 164360.71Kb/s ( 160.51Mb/s, 0.16Gb/s )
03: 8K: 1.661562e+005: 1.315344e-003s: 170297.61Kb/s ( 166.31Mb/s, 0.16Gb/s )
04: 16K: 3.288461e+005: 2.417302e-003s: 172092.67Kb/s ( 168.06Mb/s, 0.16Gb/s )
05: 32K: 6.699504e+005: 4.545889e-003s: 168943.86Kb/s ( 164.98Mb/s, 0.16Gb/s )
06: 64K: 1.745725e+006: 1.085834e-002s: 129669.94Kb/s ( 126.63Mb/s, 0.12Gb/s )
07: 128K: 3.681056e+006: 2.081457e-002s: 122990.78Kb/s ( 120.11Mb/s, 0.12Gb/s )
08: 256K: 7.489802e+006: 3.811604e-002s: 120893.98Kb/s ( 118.06Mb/s, 0.12Gb/s )
09: 512K: 2.240409e+007: 1.013473e-001s: 80830.97Kb/s ( 78.94Mb/s, 0.08Gb/s )
10: 1024K: 4.963850e+007: 1.964770e-001s: 72965.29Kb/s ( 71.26Mb/s, 0.07Gb/s )
11: 2048K: 1.000993e+008: 3.396075e-001s: 72365.90Kb/s ( 70.67Mb/s, 0.07Gb/s )
12: 4096K: 3.110647e+008: 8.794593e-001s: 46574.07Kb/s ( 45.48Mb/s, 0.04Gb/s )
13: 8192K: 9.442160e+008: 2.135631e+000s: 30686.95Kb/s ( 29.97Mb/s, 0.03Gb/s )
14: 16384K: 2.188540e+009: 3.712535e+000s: 26478.94Kb/s ( 25.86Mb/s, 0.03Gb/s )
15: 32768K: 4.634060e+009: 5.240667e+000s: 25010.56Kb/s ( 24.42Mb/s, 0.02Gb/s )
16: 65536K: 9.358919e+009: 5.292010e+000s: 24767.91Kb/s ( 24.19Mb/s, 0.02Gb/s )
Результаты реальных тестов
Вот файл (или здесь) результатов выполнения "cctc.exe" для двух процессоров на am3 и на 1156, можете сравнить со своими результатами для "cctc.exe".
Умножив на два значение transfer rate результатов для тестового паттерна 1 можно получить что-то очень близкое к максимальной скорости чтения/записи в память для среднестатистических программ.
Вопросы
Q.
цитата:
Запускаю cctc.exe, выдает ошибку "отсутствует MSVCR100.dll". Что делать?
A.
Для выполнения на легальной копии ОС windows вам могут понадобиться бесплатые библиотеки vc2010 отсюда.
Q.
цитата:
непонятная прога - без GUI и значения надо задавать в непонятных штуках "1.350000e+001"
A.
"1.350000e+001" это формат для записи чисел с плавающей точкой на текстовых консолях(файлах), если вы хотите работать с числами с плавающей точкой, то этот формат надо знать.
GUI нет смысла делать для простой программы с открытым кодом, простой код теста будет скрыт за нагромождением кода для отображения, причем портабельность программы с GUI меньше.
В работе вам поможет FAR и пустой каталог, в который вы скопируете тест и куда будут генериться выходные файлы. Этот FAR и есть GUI, просматривая файлы в котором вы увидите все результаты не хуже, чем в отдельном GUI.
Для работы без GUI надо потратить время, чтобы освоить работу с инструментом, но проблема этого теста в том, что комбинаций для изучения очень много, освоить их активацию через GUI будет не сильно проще, чем через комстроку, просматривать файлы результатов в комстроке нет необходимости.
Q..
цитата:
там хоть что указывай, даже то, что физически нельзя
что за FSB - ?
что за множитель - ?
поставил 400000000*30
тест пройден и чего из этого?
зачем этот тест?
A..
Запускаем тест так
cctc [ ключ] FSB CPU_mult
FSB это базовая частота амд процессора (задается в BIOS), которую вы потом множите (тоже в BIOS) для CPU_core, NB и HT
CPU_mult это множитель для CPU_core
У многих своя персональная частота и множитель, легче их спросить у вас и задать руками, чем спрашивать у виндовс.
Если вы зададите неверные параметры FSB и CPU_mult, значения теста cctc будут неверными и бесполезными.
ключ это
-p1 тестовый паттерн 1, это такой тип теста
-p2 тестовый паттерн 2, это такой тип теста
-t проверка ваших FSB CPU_mult
-t проверка нужна, чтобы убедиться, что тест правильно считает время по заданным вами параметрам FSB CPU_mult, тест заключается в том, чтобы посмотреть пару десятков секунд как синхронно идут тестируемые (работающие с вашими FSB и CPU_mult) и опорные часы. Автоматически это трудно все сообщения выдать когда кто кого и как опережает, вы сами все вариации увидите. Этот тест нужен не для того, чтобы проверить ваши FSB и CPU_mult, а чтобы проверить, что на вашей win32 совместимой системе программа cctc будет работать правильно.
Если вы все ввели правильно, то на выходе cctc получается табличка, вот моя
FSB: 2.620000e+008
CPU_mult: 1.350000e+001
test pattern: 2
Select CPU assignment for the program and press a key when ready...
pass: block size: clc: seconds: transfer rate
01: 2K: 4.148178e+004: 3.752946e-004s: 170532.70Kb/s ( 166.54Mb/s, 0.16Gb/s )
02: 4K: 8.607897e+004: 7.301015e-004s: 164360.71Kb/s ( 160.51Mb/s, 0.16Gb/s )
03: 8K: 1.661562e+005: 1.315344e-003s: 170297.61Kb/s ( 166.31Mb/s, 0.16Gb/s )
04: 16K: 3.288461e+005: 2.417302e-003s: 172092.67Kb/s ( 168.06Mb/s, 0.16Gb/s )
05: 32K: 6.699504e+005: 4.545889e-003s: 168943.86Kb/s ( 164.98Mb/s, 0.16Gb/s )
06: 64K: 1.745725e+006: 1.085834e-002s: 129669.94Kb/s ( 126.63Mb/s, 0.12Gb/s )
07: 128K: 3.681056e+006: 2.081457e-002s: 122990.78Kb/s ( 120.11Mb/s, 0.12Gb/s )
08: 256K: 7.489802e+006: 3.811604e-002s: 120893.98Kb/s ( 118.06Mb/s, 0.12Gb/s )
09: 512K: 2.240409e+007: 1.013473e-001s: 80830.97Kb/s ( 78.94Mb/s, 0.08Gb/s )
10: 1024K: 4.963850e+007: 1.964770e-001s: 72965.29Kb/s ( 71.26Mb/s, 0.07Gb/s )
11: 2048K: 1.000993e+008: 3.396075e-001s: 72365.90Kb/s ( 70.67Mb/s, 0.07Gb/s )
12: 4096K: 3.110647e+008: 8.794593e-001s: 46574.07Kb/s ( 45.48Mb/s, 0.04Gb/s )
13: 8192K: 9.442160e+008: 2.135631e+000s: 30686.95Kb/s ( 29.97Mb/s, 0.03Gb/s )
14: 16384K: 2.188540e+009: 3.712535e+000s: 26478.94Kb/s ( 25.86Mb/s, 0.03Gb/s )
15: 32768K: 4.634060e+009: 5.240667e+000s: 25010.56Kb/s ( 24.42Mb/s, 0.02Gb/s )
16: 65536K: 9.358919e+009: 5.292010e+000s: 24767.91Kb/s ( 24.19Mb/s, 0.02Gb/s )
Строки
FSB: 2.620000e+008
CPU_mult: 1.350000e+001
test pattern: 2
это параметры, которые вы ввели, можете их проверить, что все прочитано программой cctc правильно.
Строки
Select CPU assignment for the program and press a key when ready...
это пауза, открываете "диспетчер задач\процессы\задать соответствие" и выбираете для cctc.exe тестируемое ядро, если конечно желаете это выбрать, когда все приготовили, нажали чего-нибудь.
Строки
pass: block size: clc: seconds: transfer rate
это заголовок столбцов: номер теста, размер блока, кол-во потраченных тактов FSB, оно же в секундах, скорость передачи в Кбайт/с,Мбайт/с,Гбайт/с (Мбайт/с и Гбайт/с нужны тем, кто в уме не может на 1024 умножать).
Назначением теста изначально было проверка этого утверждения, что феном имеет такой L3, что его и не видно на тестах. Утверждение не подтвердилось, каждый уровень кэша хорошо виден на границах, по моей табличке это
L1/L2
04: 16K: 3.288461e+005: 2.417302e-003s: 172092.67Kb/s ( 168.06Mb/s, 0.16Gb/s )
06: 64K: 1.745725e+006: 1.085834e-002s: 129669.94Kb/s ( 126.63Mb/s, 0.12Gb/s )
L2/L3
реклама
08: 256K: 7.489802e+006: 3.811604e-002s: 120893.98Kb/s ( 118.06Mb/s, 0.12Gb/s )
10: 1024K: 4.963850e+007: 1.964770e-001s: 72965.29Kb/s ( 71.26Mb/s, 0.07Gb/s )
L3/memory
12: 4096K: 3.110647e+008: 8.794593e-001s: 46574.07Kb/s ( 45.48Mb/s, 0.04Gb/s )
14: 16384K: 2.188540e+009: 3.712535e+000s: 26478.94Kb/s ( 25.86Mb/s, 0.03Gb/s )
Тест cctc также может использоваться и для проверки кэша в вашей системе.
В приведенной мной ссылке (или здесь), есть сравнение фенома и i3 для обоих паттернов.
Умножив на два значение transfer rate результатов для тестового паттерна 1 можно получить что-то очень близкое к максимальной скорости чтения/записи в память для среднестатистических программ.
Q.
цитата:
У меня кэш L2 512Kбайт, а срез скорости расположен на границе блока в 256Kбайт, значит у меня не работает кэш L2?
A.
При оценке скоростей для тестового паттерна 1 и тестового паттерна 2 надо учесть, что "размер блока" это "размер входного блока", т.е. в этих паттернах реально передается в 2 раза больше данных (входной блок полностью переписывается в выходной), поэтому при блоке в 256Kбайт у вас занимается весь кэш в 512Kбайт.
Также надо учесть, что кроме вашей программы на процессоре исполняются и другие, а они также требуют кэш, поэтому скорость при размере блока на границе размера кэша может немного снижаться по сравнению со скоростью, когда блок полностью гарантированно помещается в кэш.
Что делает каждый тестовый паттерн можно посмотреть в исходниках.
Q.
цитата:
у меня получилось
FSB: 2.200000e+008
CPU_mult: 1.500000e+001
test pattern: 1
L1 (32К) - 23Гбайт/с
L2 (256К) - 8Гбайт/с
memory (64M) - 2.4Гбайт/с
правильно?
только это все как то не так, откуда насчиталось 2.4 ?
почему вообще результаты такие маленькие?
A.
Правильно, если вы правильно задали параметры FSB и CPU_mult, то по тесту у вас 220МГц*15=3.3ГГц процессор с 64К L1, 512Кб L2 кэша и без L3 кэша, похоже на атлон.
cctc.exe показывает не абстактную скорость памяти, а скорость обработки памяти в конкретном тестовом паттерне, сравнивать в принципе можно только одинаковые тестовые паттерны.
Однако, по данным паттерна -p1 можно вычислить максимально ожидаемую скорость чтения/записи для среднестатистических программ с интенсивными операциями с памятью, если умножить полученные значения тестов на два. Применительно к вам это будет
L1 - 46
L2 - 16
memory - 5
Но прямого смысла эти числа не имеют, поскольку все зависит от конкретной выполняемой программы.
Максимальная скорость ddr3 памяти в принципе определяется однозначно частотой шины памяти (например, 667МГц) и задержками памяти (например, 9-9-9-24), эти параметры в общем не зависят от процессора (от современного, которые много быстрее), поэтому числа получаются маленькие или большие только в зависимости от параметров вашей ddr3 памяти.
Реальная скорость передачи по тестам даже для атлона получается выше максимальной скорости ddr3 памяти, это потому, что работает кэш, чем лучше этот кэш обслуживает запросы, тем больше превышение реальной скорости над максимальной скоростью ddr3 памяти.
Q.
цитата:
Ну а как измерить этим тестом cctc скорость кэша и памяти в общем, а не применительно к тестовому паттерну?
A.
Максимальная скорость ddr3 памяти в принципе определяется однозначно частотой шины памяти (например, 667МГц) и ее задержками (например, 9-9-9-24-33-2T), эти параметры в общем не зависят от процессора (от современного, которые намного быстрее), т.е. ее нет смысла вычислять тестами.
Реальная скорость обмена данными с ddr3 памятью по тестам cctc даже для атлона может получаться выше максимальной скорости ddr3 памяти, это потому, что работает кэш, чем лучше этот кэш обслуживает запросы, тем больше превышение реальной скорости над максимальной скоростью ddr3 памяти.
Максимальная скорость кэша зависит от того, что и как туда поместили, поскольку процессор вмешивается и сам определяет когда и что кэшировать, т.е. скорость и кэша, и памяти сильно зависит от конкретной программы.
cctc.exe показывает не абстактную скорость кэша и памяти, а скорость обработки памяти в конкретном тестовом паттерне, сравнивать в принципе можно только одинаковые тестовые паттерны.
Однако, по данным паттерна -p1 можно вычислить ожидаемую максимальную скорость чтения/записи для среднестатистических программ с интенсивными операциями с памятью, если умножить полученные значения тестов для этого паттерна на два.
Q.
цитата:
да и если тест так зависит от того, что поставишь FSB и множитель(фактически от частоты CPU), то как он может считать точно?
A.
Тест не зависит от FSB и множителя, но подсчет времени зависит, поэтому при неправильных FSB и множитель вы не сможете рассчитать время в секундах, а рассчитаете его относительно марсианских единиц измерения времени.
Q.
цитата:
Как скомпилировать тест самому?
A.
Чтобы скомпилировать тест в vc2010 надо сделать новый проект как консольное приложение win32 и вставить в главный файл (совпадает с именем проекта, имеет расширение cpp, в нем в первой строке сверху может быть написано "определяет точку входа для консольного приложения") нового проекта (после строки с #include "stdafx.h") содержимое из исходника "cctc.cpp" (тоже после #include "stdafx.h"). А в файл "stdafx.h" нового проекта содержимое из исходника "stdafx.h" (после строки с #pragma once).
Экспресс выпуск vc2010 для легальной копии ОС windows можно скачать у майкрософт бесплатно (Раскройте ваш творческий потенциал!).
Обсуждение этой заметки в форуме.
|
|
|
Создано: 15.11.11
Последний раз отредактировано: 04.11.12
Ссылка на оригинал этой статьи.
реклама
Лента материалов
Соблюдение Правил конференции строго обязательно!
Флуд, флейм и оффтоп преследуются по всей строгости закона!
Комментарии, содержащие оскорбления, нецензурные выражения (в т.ч. замаскированный мат), экстремистские высказывания, рекламу и спам, удаляются независимо от содержимого, а к их авторам могут применяться меры вплоть до запрета написания комментариев и, в случае написания комментария через социальные сети, жалобы в администрацию данной сети.
Сейчас обсуждают