Почему готовые приложения работают на процессорах Intel и AMD? - PullRequest
10 голосов
/ 07 мая 2009

Мне не хватает понимания, как код, скомпилированный для процессора Intel, работает на процессоре AMD.

Мое базовое понимание состоит в том, что если вы, например, компилируете код C, компилятор преобразует исходный код в машинный язык, который будет содержать инструкции для конкретного процессора. Итак, вам нужно скомпилировать компилятор для любой платформы, которую вы хотите, чтобы ваше приложение использовало. Почему вам не нужен компилятор для AMD и Intel, и вам не нужно покупать программное обеспечение для конкретного процессора?

Я знаю, что процессоры AMD и процессоры Intel имеют некоторую совместимость со старыми инструкциями x86; что я хотел бы знать, как они это делают? Я имею в виду, что AMD или Intel не должны звонить друг другу и рассказывать друг другу свои коммерческие секреты, так как они могут создавать совместимые наборы инструкций?

Вся совместимость по-прежнему основана на наборе инструкций 386, с набором утверждений, таких как «ЕСЛИ ЦП AMD, сделайте это, В противном случае, если INTEL сделает это»?

Ответы [ 4 ]

19 голосов
/ 07 мая 2009

Процессоры AMD и Intel x86 и x86-64 практически полностью совместимы. Они оба реализуют все x86 и x86-64. У каждого из них есть свои собственные расширения (например, MMX и 3DNow), но компиляторы обычно не используют их, если вы сами не скажете им. В настоящее время AMD и Intel поддерживают практически все расширения друг друга. Единственный раз, когда вам может понадобиться беспокоиться о разнице, это когда вы делаете действительно низкоуровневое ядро.

Кстати, набор инструкций на самом деле не является "коммерческой тайной". Реализация есть. Обе компании выпускают документацию по набору инструкций, поэтому каждая может скопировать ее. Причина этого, вероятно, заключается в том, что если все больше компаний будут производить совместимые чипы, для этого набора инструкций будет написано больше программного обеспечения, поэтому больше людей будут покупать эти чипы. x86 / x86-64 - это стандартная архитектура для настольных компьютеров, гарантирующая, что люди будут продолжать покупать чипы Intel и AMD. Intel и AMD имеют очень разные реализации, они просто выполняют один и тот же код.

6 голосов
/ 07 мая 2009

Помните также, что наборы команд для этих процессоров публично документированы; обычно один поставщик изобретает новый набор инструкций, а через одно или два поколения другой поставщик реализует совместимые расширения. Таким образом, вместо IF 386 .... у вас есть нечто большее, если IF SSE4 ПОДДЕРЖИВАЕТСЯ ... без учета конкретного поставщика.

6 голосов
/ 07 мая 2009

На самом деле они имеют соглашение о перекрестном лицензировании. Информация и инновации передавались от Intel к AMD еще в 90-х годах, когда AMD была вторым источником процессоров 386 и 486, а затем от AMD к Intel, когда Intel приняла расширения x86-64.

1 голос
/ 07 мая 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...