Вы еще не потестили свой проц новым тестом?
Ну и ну, все давно тестируют!
Уже версия 0.03 и феноменально дружественный интерфейс.
cctc это простой тест памяти с открытым кодом cctc.zip и готовый исполнимый файл cctc.exe.
Для выполнения на легальной копии ОС windows вам могут понадобиться бесплатые библиотеки vc2010 или vc2013 (нет постоянной ссылки на сайте Майкрософт).
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.
Значит этот исходник скомпилирован в среде vc2010. Для выполнения на легальной копии ОС windows вам могут понадобиться бесплатые библиотеки vc2010 redistibutable (нет постоянной ссылки на сайте Майкрософт).
Q.
цитата:
Запускаю cctc.exe, выдает ошибку "отсутствует MSVCP120.dll". Что делать?
A.
Значит этот исходник скомпилирован в среде vc2013. Для выполнения на легальной копии ОС windows вам могут понадобиться бесплатые библиотеки vc2013 redistibutable (нет постоянной ссылки на сайте Майкрософт).
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/vc2013 надо сделать новый проект как консольное приложение win32 и вставить в главный файл (совпадает с именем проекта, имеет расширение cpp, в нем в первой строке сверху может быть написано "определяет точку входа для консольного приложения") нового проекта (после строки с #include "stdafx.h") содержимое из исходника "cctc.cpp" (тоже после #include "stdafx.h"). А в файл "stdafx.h" нового проекта содержимое из исходника "stdafx.h" (после строки с #pragma once).
Экспресс выпуск vc2010/vc2013 для легальной копии ОС windows можно скачать (нет постоянной ссылки) на сайте Майкрософт бесплатно. Раскройте ваш творческий потенциал!