Переехал на Quad, заметил интересную особенность — во всех режимах температура одного ядра на 8-12 градусов ниже, чем остальных. При этом от загрузки к загрузке номер этого ядра меняется — сначала оно было четвертым, потом третьим, потом снова четвертым, потом вторым, потом опять третьим. Получается, что нумерация процессоров/ядер не детерминирована? Типа, запускается стартовый код на каждом из, который инкрементит переменную и берет себе получившийся номер?
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Получается, что нумерация процессоров/ядер не детерминирована? Типа, запускается стартовый код на каждом из, который инкрементит переменную и берет себе получившийся номер?
Еще есть вариант, что не детерминировано распределение нагрузки на процессоры, вследствие чего наименьшую нагрузку, а следовательно, более низкую температуру, каждый раз получает разный процессор.
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
Здравствуйте, ДимДимыч, Вы писали:
ДД>Еще есть вариант, что не детерминировано распределение нагрузки на процессоры, вследствие чего наименьшую нагрузку, а следовательно, более низкую температуру, каждый раз получает разный процессор.
Это, как раз, наименее вероятно — тесты ведь загружают процессоры до упора, и я даже представить не могу такой ситуации, чтобы на разных тестах меньше загружалось одно и то же ядро, причем от загрузки к загрузке это ядро менялось.
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Здравствуйте, ДимДимыч, Вы писали:
ДД>>Еще есть вариант, что не детерминировано распределение нагрузки на процессоры, вследствие чего наименьшую нагрузку, а следовательно, более низкую температуру, каждый раз получает разный процессор.
ЕМ>Это, как раз, наименее вероятно — тесты ведь загружают процессоры до упора, и я даже представить не могу такой ситуации, чтобы на разных тестах меньше загружалось одно и то же ядро, причем от загрузки к загрузке это ядро менялось.
4-х ядерный процессор до упора загрузить полезной деятельностью практически не возможно. Он уже давно упёрся рогами в пропускную способность шины памяти.
Здравствуйте, fdn721, Вы писали:
ЕМ>>Это, как раз, наименее вероятно — тесты ведь загружают процессоры до упора, и я даже представить не могу такой ситуации, чтобы на разных тестах меньше загружалось одно и то же ядро, причем от загрузки к загрузке это ядро менялось.
F>4-х ядерный процессор до упора загрузить полезной деятельностью практически не возможно. Он уже давно упёрся рогами в пропускную способность шины памяти.
Где вы в тестовой загрузке видите полезную деятельность?
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Здравствуйте, fdn721, Вы писали:
ЕМ>>>Это, как раз, наименее вероятно — тесты ведь загружают процессоры до упора, и я даже представить не могу такой ситуации, чтобы на разных тестах меньше загружалось одно и то же ядро, причем от загрузки к загрузке это ядро менялось.
F>>4-х ядерный процессор до упора загрузить полезной деятельностью практически не возможно. Он уже давно упёрся рогами в пропускную способность шины памяти.
ЕМ>Где вы в тестовой загрузке видите полезную деятельность?
Ну тесты это не тупое выполнение add eax,eax в четыре потока. Они как раз стараются померить скорость конкретных полезных алгоритмов.
Здравствуйте, fdn721, Вы писали:
ЕМ>>Где вы в тестовой загрузке видите полезную деятельность?
F>Ну тесты это не тупое выполнение add eax,eax в четыре потока. Они как раз стараются померить скорость конкретных полезных алгоритмов.
Есть тесты чисто для ядра процессора (те же S&M, различные burn'еры и т.п.). Они нигде не упираются в пропускную способность памяти, ибо работают исключительно в пределах кэша. Почему они тоже греют одно ядро на 8-10 градусов меньше? И это относится не обязательно к предельной температуре — пока она растет, одно ядро тоже отстает на 8-10 от остальных, и в течение одного сеанса работы это ядро не меняется, но после перезагрузки оно может измениться.
Если же все без исключения производители тестов намеренно недогружают одно ядро — почему это проявляется только на некоторых процессорах, а не на всех подряд?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Как нумеруются процессоры/ядра?
От:
Аноним
Дата:
24.12.08 09:23
Оценка:
ЕМ>Переехал на Quad, заметил интересную особенность — во всех режимах температура одного ядра на 8-12 градусов ниже, чем остальных. При этом от загрузки к загрузке номер этого ядра меняется — сначала оно было четвертым, потом третьим, потом снова четвертым, потом вторым, потом опять третьим. Получается, что нумерация процессоров/ядер не детерминирована? Типа, запускается стартовый код на каждом из, который инкрементит переменную и берет себе получившийся номер?
А разве существует какой либо аппаратный номер для процессоров? Если нет, и аппаратно система полностью симметрична, то такой алгоритм вполне логичен.
ЕМ>Если же все без исключения производители тестов намеренно недогружают одно ядро — почему это проявляется только на некоторых процессорах, а не на всех подряд?
Может это ядро обрабатывает прерывания от SMM и "латает" BIOS? А что там в обработчике понаписано — одному Богу известно.
Здравствуйте, <Аноним>, Вы писали:
А>А разве существует какой либо аппаратный номер для процессоров? Если нет, и аппаратно система полностью симметрична, то такой алгоритм вполне логичен.
Например, у каждого процессора есть собственный APIC, имеющий собственный адрес — они ведь как-то упорядочиваются.
Здравствуйте, TarasCo, Вы писали:
TC>Может это ядро обрабатывает прерывания от SMM и "латает" BIOS? А что там в обработчике понаписано — одному Богу известно.
Как-то не верится, чтоб при выполнении чисто вычислительных тестов возникало столько прерываний, что ядро греется аж на десяток градусов меньше. Мне более логичным кажется предположение, что греется меньше одно и то же ядро, которое просто получает разные номера.
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Как-то не верится, чтоб при выполнении чисто вычислительных тестов возникало столько прерываний, что ядро греется аж на десяток градусов меньше. Мне более логичным кажется предположение, что греется меньше одно и то же ядро, которое просто получает разные номера.
А как температуру меряете ? может измеритель лажу выдаёт ? Ядрышки то все на одном кристалле, может даже переплетены между собой. Одно ядро замечательно будет греть соседей, как-то странно представить, что в одном углу малюсенькой пластинки температура так сильно отличается. Опять же, кулер плотно пристёгнут к процессору сверху, и тоже "поможет" в теплопередаче, равномерно размазать температуру по кристаллу. Я бы понял, если бы вы меряли температуру на разных физических процессорах, а так какую-то лажу намеряли непонятно чем и очень этому удивляетесь.
Здравствуйте, IID, Вы писали:
IID>А как температуру меряете ? может измеритель лажу выдаёт?
Температуру показывают многие современные утилиты — OCCT, SpeedFan, Everest и т.п. Берут ее с собственных датчиков процессора, показывают все одинаково.
IID> Ядрышки то все на одном кристалле, может даже переплетены между собой. Одно ядро замечательно будет греть соседей, как-то странно представить, что в одном углу малюсенькой пластинки температура так сильно отличается. Опять же, кулер плотно пристёгнут к процессору сверху, и тоже "поможет" в теплопередаче, равномерно размазать температуру по кристаллу.
Это все коню понятно. Скорее всего, просто датчик врет. Меня интересует другое — почему номер ядра, у которого показание датчика отличается, меняется от сеанса к сеансу? Каков алгоритм нумерации ядер системой при инициализации?
Блин, вот поленился лезть в Intel SMP Spec — думал, тут кто-нибудь уже вопросом владеет, и сразу ответит. Написали же всякой ерунды, и все не по делу.
Здравствуйте, TarasCo, Вы писали:
ЕМ>>Как-то не верится, чтоб при выполнении чисто вычислительных тестов возникало столько прерываний, что ядро греется аж на десяток градусов меньше.
TC>Да запросто. Там в коде где нибудь может hlt присутствует к примеру.
И в этом случае все упирается в последовательность нумерации ядер, коли этот гипотетический SMM-код после перезагрузки оказывается на другом ядре. Если бы температура ядер просто хаотично плавала — я бы не удивлялся.
TC>Совсем безумная идея: а может это сама процедура измерения температуры вызывает такой артефакт?
Так процедура заключается в чтении процессорного регистра, содержащего показания встроенного цифрового датчика температуры. И к ней опять-таки применим вывод из предыдущего абзаца.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Как нумеруются процессоры/ядра?
От:
Аноним
Дата:
24.12.08 16:13
Оценка:
А>>А разве существует какой либо аппаратный номер для процессоров? Если нет, и аппаратно система полностью симметрична, то такой алгоритм вполне логичен. ЕМ>Например, у каждого процессора есть собственный APIC, имеющий собственный адрес — они ведь как-то упорядочиваются.
Первым процессором полагаю будет назначен тот, на котором исполнялся биос и загрузчик ос. От винды это не зависит. Это дело биоса, а то и железа.
Здравствуйте, <Аноним>, Вы писали:
А>Первым процессором полагаю будет назначен тот, на котором исполнялся биос и загрузчик ос. От винды это не зависит. Это дело биоса, а то и железа.
Согласен, а остальные? И как выбирается тот процессор, на котором будет исполняться биос?
Здравствуйте, Евгений Музыченко, Вы писали:
А>>Первым процессором полагаю будет назначен тот, на котором исполнялся биос и загрузчик ос. От винды это не зависит. Это дело биоса, а то и железа.
ЕМ>Согласен, а остальные? И как выбирается тот процессор, на котором будет исполняться биос?
В соответствии с интеловским мануалом (Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 3A):
The MP initialization protocol defines two classes of processors: the bootstrap
processor (BSP) and the application processors (APs). Following a power-up or
RESET of an MP system, system hardware dynamically selects one of the processors
on the system bus as the BSP. The remaining processors are designated as APs.
As part of the BSP selection mechanism, the BSP flag is set in the IA32_APIC_BASE
MSR (see Figure 8-5) of the BSP, indicating that it is the BSP. This flag is cleared for
all other processors.
The BSP executes the BIOS’s boot-strap code to configure the APIC environment,
sets up system-wide data structures, and starts and initializes the APs. When the BSP
and APs are initialized, the BSP then begins executing the operating-system initialization
code.
Здравствуйте, crash override, Вы писали:
CO>As part of the BSP selection mechanism, the BSP flag is set in the IA32_APIC_BASE CO>MSR (see Figure 8-5) of the BSP, indicating that it is the BSP. This flag is cleared for CO>all other processors.
То есть, и стартовый процессор выбирается случайно, и остальные между собой разбираются в случайном порядке. Теперь понятно, спасибо!
Говорю ж — надо было мне сразу скачать спецификацию, а не надеяться, что кто-нибудь уже знает ответ.