|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Окт 22, 2003 14:10:39 Подскажите как можно протестировать кэш процессора или URL с примером |
|
|
Дата: Окт 23, 2003 12:13:17 Из когда-то прочитанного в интеловских мануалах я не припомню такого, чтоб камень предоставлял какие-то возможности прямого тестирования кеша. Есть WBINVD/INVD/INVLPG объявляющие кеш недействительным. В новых камнях есть PREFETCH, позволяющая загружать кеш и CLFLUSH сбрасывающая содержимое кеша. Чем CLFLUSH отличается от INVLPG я уже не помню. Есть RDPMC позволяющая узнать как часто загружается кеш и наверное еще че-нить про кеш с её помощью узнать можно. Есть CPUID, позволяющая вытянуть кое-какую инфу про кеш (см аттач). Возможно еще что-то есть и возможно из всего этого и можно слепить какой-то тестер кеша. В общем ищи на интеловский сайт и сливай их мануалы по камням. Если у тя че-то получится, интересно было бы посмотреть. _408078008__cpuid.zip |
|
|
Дата: Ноя 1, 2003 14:41:41 Вопрос скорее к Four-F Ж:) Слепил драйвер, для отключения и тестирования кэш, чтобы добраться до привилегированных команд под w2k поставил команду CPUID и .... заработал BSOD :(( Тоже происходит при пресылке из/в регистры tr5, tr4... это, что получается я не в 0-ом кольце защиты процессора ? Понимаю, что эти регистры устарели (от 486), но зачем же так "бить по рукам" Да и в user-mode CPUID работает, а в режиме ядра нет, может есть объяснение ? |
|
|
Дата: Ноя 2, 2003 11:27:16 [ s_work: Да и в user-mode CPUID работает, а в режиме ядра нет, может есть объяснение ? ] CPUID одинаково хорошо работает и в user-mode и в kernel-mode. А объяснение очень простое: CPUID затирает содержимое ebx, который ты перед этим не сохранил. Угадал? :-) По поводу tr5, tr4. Мне очень стыдно, но я не знаю, что это такое. Покажи кусок кода. |
|
|
Дата: Ноя 2, 2003 14:19:02 Trx - это тестовые регистры. Предпологалось использовать их для тестирования проца. Но похоже что в интел от них отказались. Или просто не документировали, чтобы потом проблем с обратной совместимостью не было. Но даже изначально интел заявляла, что информация которая в них находится интерпретируется в зависимости от модели проца. |
|
|
Дата: Ноя 3, 2003 10:59:01 На счет CPUID Вы абсолютно правы, некоторые исходники, работающие под Вынь 98 не работают в 2000 и мне приходилось в процедуре окна ставить pushad, чтобы не морочиться (как оказалось, в Вынь 2000 нельзя менять ebx), и так в будущих версиях Виндов будет работать, вдруг опять чё поменяют :) Регстры Trx пусть остаются на совести Intel. Только мне надо написать программу тестирования кэша у проца. У меня на работе Celeron 1.8, а в институте - древние пни и как в этом случае вывернуться с таким раскладом ? Если эти регистры интерпретируется в зависимости от модели :=( Придётся изобретать... |
|
|
Дата: Ноя 3, 2003 12:31:44 [ s_work: ...как оказалось, в Вынь 2000 нельзя менять ebx... ] И не только в 2000, а вообще во всех Вынях. Это камень преткновения практически всех, кто на асме под вынь кодить начинает. Система гарантирует, что она сохраняет только регистры esi, edi, ebp и ebx. И ты должен поступать точно так же, т.к. система ожидает, что esi, edi, ebp и ebx останутся неизменными после возвращения управления назад в систему. |
|
|
Дата: Ноя 3, 2003 15:54:09 s_work А какую конкретно информацию необходимо получить про кеш? |
|
|
Дата: Ноя 4, 2003 11:44:37 Получить информацию про кэш - не проблема, а проблема его протестировать. В доке по 486 проц написано как это сделать, но там используются TRx регистры. Если Intel эти регистры интерпретирует по разному, то соотвественно... в Celeron под вынь 2000 - BSOD. Кэш отключается просто (биты CD,NW в CR0) нашёл команды: PREFETCHh—Prefetch Data Into Caches (спасибо Four-F), но MASM их не переваривает выдает: error A2085: instruction or register not accepted in current CPU mode, хотя стоит в начале .686p Это я тоже обошел, втавив "db 0fh, 18h, 0с8h" Проблема как раз в логике работы, не знаю алгоритма тестирования P4 и подобных ему урезанных Celeron - ов. Может у кого есть опыт в составлении подобной проги ? |
|
|
Дата: Ноя 4, 2003 12:52:27 s_work Я имел ввиду какую информацию должна выдать программа после проведения тестирования? |
|
|
Дата: Ноя 4, 2003 13:38:43 Очень просто: какой кэш тестировали (L1,L2) и результат "Ok" или "не Ok" |
|
|
Дата: Ноя 4, 2003 13:54:20 s_work Ладно поставим вопрос по другому: в каком случае программа должно сказать "ок" а в каких "не ок"? На основе какой информации она принимает это решение? Какая вообще информация нужна для принятия такого решения? |
|
|
Дата: Ноя 6, 2003 14:40:44 Если кэш - память то при записи в туда одного значения, считывать должны тоже самое (Ок!), если нет, то (не Ок!). В свете последних данных тестировать можно L3 в даже в celeron, но считывать от туда можно очевидно не то, что записали, т.к. celeron не что иное, как отбраковка от pentium :)) |
|
|
Дата: Ноя 6, 2003 15:04:15 s_work Зачем писать тестирующую программу которая всегда говорит "Ок"? Если с кешем случится такая неполадка, то до запуска твоей программы дело даже не дойдет. А в целеронах неисправные блоки кеша отключаются на аппаратном уровне, и доступа к ним получить нельзя. Разве что только через JTAG. |
|
|
Дата: Ноя 6, 2003 15:41:44 В этом вся "засада" :( надо показать алгоритм тестирования. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.098 |