CPUID на нескольких ядрах /NUMA

Я работаю над обнаружением процессора и общим кодом обнаружения среды для моей хобби ОС. Есть ли когда-нибудь случай, когда CPUID нужно вызывать несколько раз? То есть, если система имеет несколько ядер, должна ли ОС вызывать CPUID на каждом ядре? То же самое для NUMA.

Об этом неясно как в руководствах AMD, так и в отношении Intel CPUID. В вики osdev есть статья, в которой упоминается вызов CPUID под названием " Обнаружение топологии процессора", но, насколько мне известно, неясно, когда и сколько раз нужно вызывать CPUID.

1 ответ

Решение

Поскольку прошла почти неделя, и никто не смог ответить на этот вопрос (возможно, из-за праздников), я все равно попытаюсь ответить на него.

Я думаю, что ответ - да. Вам может понадобиться позвонить CPUID на каждом ядре. Одна из причин этого заключается в том, что не все (даже x86) системы сегодня являются однородными.

Например, я читал на форуме по разгону (не могу найти ссылку), что на некоторых двухслойных серверных платах можно смешивать две разные модели процессоров. У человека была двухконтактная система 1366 с двумя разными скоростными процессорами. (и разные модели #)

Так что в этом случае звонит CPUID будет зависеть от того, на каком процессоре был поток - поэтому вам нужно будет вызывать его один раз для каждого процессора, чтобы получить всю информацию.

В руководствах одной из моих серверных материнских плат также говорится, что вам разрешено смешивать процессоры разных моделей (с некоторыми ограничениями). И, конечно, можно смешивать два разных степпинга одной и той же модели процессора.


Одна только эта причина (гетерогенная топология) уже является причиной необходимости вызова CPUID на каждом ядре.

Другие вопросы по тегам