"Некоторые используют в качестве таймера команду RDTSC, считывающую показания внутреннего счетчика процессора, каждый такт увеличивающегося на постоянную величину (как правило, единицу). Для профилировки машинного кода она подходит на ура, но вот на роль беспристрастного метронома уже не тянет. Некоторые APCI-контроллеры динамически изменяют частоту процессора или усыпляют его в паузах между работой для лучшего охлаждения. Как следствие - непосредственное преобразование процессорных тактов в истинное время оказывается невозможным." 1. Насколько мне известно динамически изменять частоту возможно только на спец. процессорах вроде intel mobile. (?) 2. Как же узнать усыпляют или нет? Вот еще интересные моменты. "Многопроцессорные ядра содержат множество LOOK'ов, встречающихся в самых неожиданных местах, и съедающий вполне ощутимый процент производительности, поэтому многопроцессорные ядра всегда медленнее. В однопроцессорных ядрах часть LOOK'ов убрана полностью, вместе с примыкающими к ним флагами, а часть - заменена более быстродействующими NOP'ми. Общая же структура ядра сохранена в более или менее неизменном виде." Насколько я понял Крис имеет ввиду под lock команду tls. Чтоже они имеет ввиду под nop? Nop? Сомнительно, пустые циклы? Тоже врятли... Выделенное предложение вообще странно звучит. Нет я конечно понимаю что если везде наставить блокировку шины то будут тормоза, но это нужно как-то подругому написать.
>>1. Насколько мне известно динамически изменять частоту возможно только на спец. процессорах вроде intel mobile. (?) Увеличение напряжения.
AMD Athlon 64 - Cool'n'Quiet. AMD Mobile (непомню точно с каких пор)-что то с power связано Не знаю как, но при включенном Cool'n'Quiet начинает ругаться VMWare что-то типа несовпадение реальной и расчетной частоты процессора.
Т.е. фактически APCI-контроллер может когда ему вздумается поменять напряжение на обычном не mobile процессоре? Что-то не верится.
NoName > 1. Насколько мне известно динамически изменять частоту > возможно только на спец. процессорах вроде intel mobile. не только мобиле, хотя главным образом имелся ввиду он > 2. Как же узнать усыпляют или нет? по расхождению RDTSC с другими таймерами, но это, естественно, грубый вариант более точных, увы, не знаю (если они вообще существуют) > Насколько я понял Крис имеет ввиду под lock команду tls. нет, обычный префикс lock, достаточно сравнить разные версии ядра в дизасме > Чтоже они имеет ввиду под nop? Nop? XCHG EAX,EAX > Выделенное предложение вообще странно звучит. Нет я > конечно понимаю что если везде наставить блокировку > шины то будут тормоза, но это нужно как-то подругому > написать. а в чем оно неправильно звучит? многопроцессорное ядро на 2х ЦПшной машине никогда не даст 2х кратного прироста производительности, даже при идельном распараллеливании обрабатываемых данных между потоками, поскольку там больше "лишнего" кода и многопроцессорное ядро всегда медленнее однопроцессорного на 1х ЦПшной машине.
С этим никто не спорит. Ты сам понимаешь что все-таки работать будет быстрее Как же так, оно ведь создается для >=2 ЦП. Наверное так сравнивать нельзя. Обыкновенная игра слов. Просто предложение "поэтому многопроцессорные ядра всегда медленнее" как мне кажется неполностью раскрывает суть. Мне кажется это вообще нереализуемый вариант поскольку tsc на хорошей машине имеет хорошую частоту обнавления которая явно побольше чем у таймеров и заметить небольшие остановкии становится, как мне кажется, просто невозможно. А где можно узнать такую информацию достоверно для отдельного процессора? Например Обычный PIII 800 или PII 400?
> С этим никто не спорит. > Ты сам понимаешь что все-таки работать будет быстрее ладно, скажем по-другому, в многоЦПшных ядрах большой оверхид > Обыкновенная игра слов. Просто предложение "поэтому > многопроцессорные ядра всегда медленнее" как мне > кажется неполностью раскрывает суть. все упирается в слова но вообще-то в статье кроме слов есть еще и пояснения. > Мне кажется это вообще нереализуемый вариант поскольку > tsc на хорошей машине имеет хорошую частоту обнавления > которая явно побольше чем у таймеров и заметить > небольшие остановкии становится, как мне кажется, > просто невозможно. даже на самой отстойной машине, tsc _намного_ больше, но заметить "спячку" очень просто. пусть ЦП спит 10%, тогда расхождение будет в 10%, частота роли не играет. даже если ЦП спит всего 0.0001% это можно засечь, главное, подождать столько, чтобы этот процент составил хотя бы 10-20 тиков таймера для уверенного замера >>не только мобиле, хотя главным образом имелся ввиду он >А где можно узнать такую информацию достоверно для > отдельного процессора? Например Обычный PIII 800 или > PII 400? я определял экспериментально, к тому же в опциях BIOS была подобная фишка, плюс на сайтах производителя матерей была реклама о возможности динамического изменения частоты, когда она нужнее всего. ну типа динамический разгон. сейчас не помню какие я тестил матеря. кажется abit, но могу и ошибится. давно это уже было...
kaspersky ок, спасибо за разъяснения. Остался один момент. Как все-таки можно синхронизировать посредством 90h? И хотелось бы все таки увидеть "пример реализации" который ты пытался написать выше.
NoName > Остался один момент. Как все-таки можно > синхронизировать посредством 90h? а никак на одноцпшной машине LOCK просто не нужен, процессор-то ведь один и никто другой на шину не претендует, поэтому LOCK теряет всякий смысл и заменяется NOP, который работает быстрее > И хотелось бы все таки увидеть "пример реализации" > который ты пытался написать выше. пример, приведенный на вскидку, оказался не самым наглядным, сейчас найду что-то более достойное, хотя любой может поднять иду и заглянуть в ядро сам, просто сравнивания реализацию одних и тех же функций в одноЦПшной и многоЦПшноый версиях ядра