Инструкция процессора на машине с несколькими физическими процессорами - PullRequest
8 голосов
/ 16 июля 2011

У меня есть 2 вопроса: 1. Может ли машина иметь два или более ЦП, которые отличаются по модели?2. Если я назову инструкцию CPUID, будет ли результат отличаться, когда разные процессоры его выполнят?(Если ответ на вопросы 1 правильный, это очевидно).Если так, как я могу получить информацию обо всех процессорах по инструкции CPUID.

Ответы [ 3 ]

6 голосов
/ 16 июля 2011

Да и нет.Существует много систем, которые имеют несколько процессоров и сильно различаются.Прогресс геймбоя, имеет геймбоя как на основе руки, так и на базе z80 (нельзя использовать оба одновременно).но у nds есть arm9 и arm7 (можно / нужно использовать оба одновременно).Omap, который вы найдете на доске для бега, имеет руку и TSP DSP (можно использовать оба одновременно).Я предполагаю, что вы говорили о системах x86.Большинство рабочих столов - просто x86.Ваша мышь и клавиатура и тому подобное, вероятно, имеют 8051-е или другие разновидности микроконтроллеров.Но вас это не волнует, потому что это просто устройства USB HID, дисководы CDROM или жесткие диски.Вы не можете получить процессор, поэтому не имеет значения, что он появляется.В ноутбуках и серверных системах класса high-end и, вероятно, в настольных компьютерах скоро появится второй процессор или компьютер, для ноутбука это, вероятно, устройство, значительно снижающее энергопотребление, поэтому x86 можно отключить в режиме ожидания, а устройство поддерживает работу,ты просыпаешься, он поднимается очень быстро.На сервере другая система работает как пуленепробиваемый сторожевой таймер, следит за сервером, обеспечивает мониторинг и некоторые дистанционные перезагрузки и другие возможности.Точно так же вы не можете получить на этом процессоре, поэтому не имеет значения, если вы не можете найти в сделке CPUID.Еще одна ваша видеокарта, от сотен до тысяч графических процессоров.Вы можете получить доступ к ним с вашими программами, как с omap dsp, но вы не выполняете обработку общего назначения, поэтому снова CPUID не нужно будет предоставлять эту информацию.

Так что да и нет.Ваша компьютерная система в целом, включая периферийные устройства, имеет много разных процессоров, но обработка общего назначения обычно представляет собой одноядерный или многоядерный процессор одного семейства, обычно внутри одного чипа.Так что CPUID действительно нужно только для того, чтобы дать вам это ядро ​​/ семью.

5 голосов
/ 16 июля 2011

Для этого нужно различать "сокеты" и "ядра" , поскольку термин "процессор" неоднозначен.

CPUID предоставляет вам информацию о текущем сокете , то есть сокете, в котором находится ядро, в котором выполняется текущий поток (поток, содержащий код операции CPUID).

Разные сокеты могут содержать немного различное оборудование, если они совместимы, поэтому:

Чтобы получить информацию о другом сокете, вы должны убедиться, что ваш процесс выполняется на соответствующем сокете.: Вы можете заказать свою операционную систему для запуска потока на определенном сокете, но это зависит от ОС.Поисковая система: настройка привязка процессора для потока в вашей ОС.

CPUID расскажет вам все, что вам нужно знать о текущем сокете , включая количество "логических процессоров" : число логических процессоров равно числуядер, если ваши ядра не с гиперпоточностью , если они с гиперпоточностью, то число логических процессоров будет удвоено.

1 голос
/ 17 июля 2011

Я предполагаю, что наличие cpuid в вашем вопросе означает контекст x86 / x64.

Многосекционная материнская плата (на самом деле bios) требует, чтобы все установленные процессоры сообщали одну и ту же информацию cpuid, т.е.так же.Я предполагаю, что было бы возможно иметь процессоры, которые архитектурно равны, но с разными частотами, но тогда производитель mb должен был бы перечислить, какие комбинации работают, а какие нет, и отвечать на бесконечные электронные письма о том, почему не работает та или иная совместимая комбинация..

...