Совсем нубовский вопрос о intel & amd...

Тема в разделе "WASM.BEGINNERS", создана пользователем sheef_ad, 19 мар 2010.

  1. sheef_ad

    sheef_ad New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2009
    Сообщения:
    101
    Вот я учу асм и использую документацию по инструкциям интел, а у меня проц амд и тем не менее все всегда работает. Они (прицессоры) что полностью одинаковые по регистрам и инструкциям? К чему же тогда разговоры о том, что проги на асме невсегда будут работать на другом компе? Разумеется ibm imac не в счет, здесь все понятно, я говорю именно о амд и интел.
     
  2. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    Дело не в производителе процессора как таковом, а в том, к какой _архитектуре_ относится процессор. В персоналках (в том числе в современных Маках) используются процессоры интеловской архитектуры IA-32, которые выпускались или выпускаются несколькими фирмами -- самой Интел, АМД, ещё там кем-то... Поскольку эти процессоры относятся к одной архитектуре, они программно совместимы между собой, т.е. имеют общий набор регистров, общую систему команд и т.п. Исключением являются так называемые моделезависимые средства (например, регистр MSR), но они отличаются даже на разных процессорах одного производителя. Кроме того, сама система команд постоянно расширяется; например, команды набора MMX появились в Pentium MMX и Pentium 2 и отсутствуют в процессорах Pentium Pro, Pentium и более ранних.

    Несовместимыми являются процессоры разных архитектур. Например, IBM выпускает свои мэйнфреймы (zServer), восходящие к компутерам 1960-х годов (System/360), а также микропроцессоры PowerPC; Sun выпускает SPARC, Intel выпускает, помимо IA-32, процессоры архитектуры IA-64 (Itanium), программно совершенно отличающиеся от IA-32, ну и так далее.

    Архитектуру не следует путать с микроархитектурой. Архитектура -- это то, чем является процессор с точки зрения программиста: набор регистров, система команд и т.п. Микроархитектура -- это его внутреннее устройство. Понятное дело, что микроархитектура процессоров, например, Intel и AMD различается, поскольку они разработаны разными коллективами. Однако на уровне архитектуры они, как уже говорилось, совместимы между собой.
     
  3. sheef_ad

    sheef_ad New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2009
    Сообщения:
    101
    Большое спасибо. Теперь все стало ясно.
     
  4. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    sheef_ad
    Ну, как правило, еще приходится учитывать поддерживаемый набор инструкций, как то всякая ересь типа x86 FPU MMX 3DNow! SSE SSE2 SSE3 SSSE3 SSE4a SSE4.1 SSE4.2 AMD64 EM64T Intel 64 и еще по мелочам...
    Здесь производитель до определенной степени не при чем, так как у одного и того же производителя разные подмножества инструкций для разных моделей.
    Ну и конкретно по-разному сделаны средства аппаратной виртуализации. Если интересны детали, см. Intel Vanderpool, AMD Pacifica.
    Да, кстати, расширение x86-64, то есть его реализации AMD 64 и Intel 64 тоже имеют небольшие различия, хотя вряд ли нормальный человек наткнется на них в своем коде.
     
  5. d2k9

    d2k9 Алексей

    Публикаций:
    0
    Регистрация:
    14 сен 2008
    Сообщения:
    325
    Я натыкался, но вроде чувствую себя нормальным... ;)
     
  6. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    d2k9
    Ужос... И как это угораздило?
    Самый вероятный глюк - BSF/BSR, если еще не пофиксали...
    Еще конечно, очень противные глюки на разных режимах с SYSCALL/SYSRET/SYSENTER/SYSEXIT, это просто гадость... :dntknw:
     
  7. sheef_ad

    sheef_ad New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2009
    Сообщения:
    101
    Понятно. Мне еще не приходилось сталкиватся с какими то несовместимостями. Если столкнусь - буду иметь ввиду где искать. Спасибо.
    Кстити а архитектуры х32 и х64 что сильно разнятся? Если я пишу "обычный" код под 32 я думал что он должен быть совместим с х64 (понятное дело наоборот с64 на 32 дело непрокатит), во всяком случае оно обычно так и делается, или здесь уже не так?
     
  8. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    Что в данном случае понимается под совместимостью? Современные процессоры архитектуры IA-32, хотя и являются 64-разрядными, но полностью совместимы с 32-разрядными этой же архитектуры, т.е. любая 32-разрядная ОС и её программы, работавшая на предыдущих процессорах IA-32 (не расширенных до 64 разрядов), будет работать и на современных процах. Если же говорить о возможности выполнения 32-разрядных программ в 64-разрядных ОС, то здесь ограничением является не столько процессор, сколько сама система: а поддерживает ли она возможность исполнения 32-разрядного кода? Винда, как известно, поддерживает. Вот 16-разрядный код, предназначенный для реального режима, выполнить в 64-разрядной системе уже нельзя, поскольку процессор, работающий в 64-разрядном режиме, не может использовать режим V86, использовавшийся для выполнения 16-разрядного кода реального режима в 32-разрядных системах (AMD, а за ней и Intel не стали включать поддержку V86 в 64-разрядный режим, оставив её лишь в 32-разрядном защищённом режиме).
     
  9. sheef_ad

    sheef_ad New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2009
    Сообщения:
    101
    Я имел ввиду именно архитектуру IA-64 (человек выше о ней упомянул), я думал что все 64 разрядные камни делаются на этой архитектуре. Оказывается 64-х есть и на IA-32...
     
  10. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    sheef_ad

    Как я писал выше, архитектура IA-64 -- это _абсолютно_ другая архитектура, ничего общего с IA-32 не имеющая. Она была разработана совместно Intel и Hewlett-Packard, основанные на ней процессоры продаются под торговой маркой Itanium. Собственно, Intel и не хотела делать 64-разрядную IA-32, её к этому вынудила AMD, которая первой расширила до 64 бит архитектуру IA-32 (и обозвала AMD64), а уже потом Intel была вынуждена скопировать это расширение (в документации оно упоминается как Intel 64 и EM64T).
     
  11. sheef_ad

    sheef_ad New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2009
    Сообщения:
    101
    А! Вот оно как. Буду иметь ввиду при очередном апгрейде.
    Последний вопрос - а у AMD тоже есть процы на новой архитектуре (IA-64) или только расширенные версии старой?
     
  12. d2k9

    d2k9 Алексей

    Публикаций:
    0
    Регистрация:
    14 сен 2008
    Сообщения:
    325
    Ustus
    SYSCALL/SYSRET/SYSENTER/SYSEXIT - в точку, дело было именно с этим :)
    Ну скорее ето даже не глюки, а просто плохо документированные и различающиеся по требованию режимов привилегий инструкции для AMD/Intel.
     
  13. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    sheef_ad
    У AMD -- только IA-32. IA-64 не выпускает никто, кроме Intel.
     
  14. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.561
    Адрес:
    Russia
    SII
    Странно, что вы ничего не сказали про x86. Все пошло оттуда. Со времен 8086 процессора Intel.
    Чтобы небыло путаницы, для sheef_ad проще было бы сказать так:
    Есть архитектура с набором команда x86 (x86-64). У AMD и Intel, они совместимы между собой, если не вдаваться в некоторые специфичные для процессора инструкции, регистры и режимы. Будем говорить, что это Intel 64 & IA-32 архитектура.
    Есть архитектура с другим набором команд (Для вас сейчас не важно каким), вот она называется IA-64. Относится только к Intel.
    Все.
    Ну а так, в целом все всё верно тут сказали.
    Добавлю, что в современных процессорах архитектуры Intel 64, режимы виртуализации по разному разработаны. Совместимость исчезает.
     
  15. sheef_ad

    sheef_ad New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2009
    Сообщения:
    101
    Спасибо за путеводитель по железу. Все предельно ясно.
     
  16. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    TermoSINteZ
    x86 -- название неофициальное, хотя и широко используемое. Конечно, упомянуть его стоило.

    Виртуализация действительно совершенно разная, но её стоило бы просто записать в моделезависимые средства :) В конце концов, даже процессоры одной фирмы и даже практически одинакового торгового наименования (вроде Intel Core 2 Quad) имеют между собой отличия не только в частоте (у младших "квадов", насколько помню, виртуализация не поддерживается вовсе, в отличие от старших). Но начинающему эти тонкие материи ни к чему -- разве что завязать узелок на память, что за пределами неких базовых возможностей между процессорами возможны существенные отличия.
     
  17. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Очень даже официальное, и сильно любимое AMD - посмотри их мануалы.
    Это только Intel её гордо именует IA32 :)
     
  18. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    cppasm
    Intel -- автор архитектуры, и именно он определяет, что официально, а что -- нет.
     
  19. d2k9

    d2k9 Алексей

    Публикаций:
    0
    Регистрация:
    14 сен 2008
    Сообщения:
    325
    Какой-то бред, о чём спор - везде указывается х86 для 32 бит и х64 для 64 бит.
    Ппц, йа в шоке...
     
  20. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    не помню точно, вроде
    call esp по разному отрабатывает на Intel и AMD процах