Зависимость написания кода от процессора
Просто сегодня промелькнул разговор, что видишь ли продвинутые программеры используют строго процессоры Pentium, а про AMD и слышать не хотят.
Понятно что архитектура этих процов отличается, но как это влияет на ход выполнения программы?
Все они семейства x86 и микроархитектура последних
процов NetBurst.
Одинаковые наборы регистров
Одинаковые математические сопроцессоры сопросцессоры.
Ну вот на некоторых AMD процессорах отсутствует набор коман SSE2 - дополнительный набор команд
MMX.(а он тебе нужен!?!).
Вот мой селерон например хайперсрединг не подддерживает (чем я ничуть не огорчён).
--------------------------------------------
Ты сам толком определись чё ты собираешся делать,
а потом выбирай проц.
Возник такой вот вопрос. Есть ли предпочтения при выборе процессора, если комп будет использываться для написания прог. Это не обязательно проги на асме.
Просто сегодня промелькнул разговор, что видишь ли продвинутые программеры используют строго процессоры Pentium, а про AMD и слышать не хотят.
Понятно что архитектура этих процов отличается, но как это влияет на ход выполнения программы?
Если просто для написания, то есть если ты не заботишься об оптимизации то тогда можешь брать любой. Но, ИМХО, пень он и в Африке пень, а мы говорим именно опроцессорах а не об Атлонах ;). Да и еще именно Интел диктует на рынке свои условия.
Если просто для написания, то есть если ты не заботишься об оптимизации то тогда можешь брать любой. Но, ИМХО, пень он и в Африке пень, а мы говорим именно опроцессорах а не об Атлонах ;). Да и еще именно Интел диктует на рынке свои условия.
ну это спорный вопрос, 64-разрядных вентилей в x86 пока нет, так что здесь диктует AMD, с другой стороны из-за особенностей архитектуры у вентиля гораздо богаче инструментарий создания/отладки/оптимизации
ну это спорный вопрос, 64-разрядных вентилей в x86 пока нет, так что здесь диктует AMD, с другой стороны из-за особенностей архитектуры у вентиля гораздо богаче инструментарий создания/отладки/оптимизации
Есть и 64-разрядные пни :o Только я пока не могу представить задач требующих ТАКОЙ процессор. АМД просто гонит, пытается сделать их популярными. А рынок держит - Интел. Именно они заставляют переходить на PCIE.
ЗЫ. Кстати в последние время у АМД мануалы стали куда хуже чем раньше.
проблемы с теплоотводом. также, что конкретно
смущает -проблемы с частотной маркировкой.
указывается не реальная частота, а сравнительная.
хотя амд рулят не только в силу меньшей стоимости,
сколько в преимуществах (огромный кэш, что дает
больше, чем "никакой" размер кэша при накрученных
гигагерцах у интелов).
вообще: какой реальный смысл в 64 разрядах? оба
набора инструкций ia-64 и амд не то что разные
"меж друг другом", они разительно отличаются от
привычного большинству 32-bit assembly. кстати,
исходя из архитектурных отличий, ia-64 плохо
работает с 32 разрядами, эмулируя их. для амд64
инструкции младших моделей являются "родными".
личное: амд в последнее время имеют большие
проблемы с теплоотводом. также, что конкретно
смущает -проблемы с частотной маркировкой.
указывается не реальная частота, а сравнительная.
хотя амд рулят не только в силу меньшей стоимости,
сколько в преимуществах (огромный кэш, что дает
больше, чем "никакой" размер кэша при накрученных
гигагерцах у интелов).
вообще: какой реальный смысл в 64 разрядах? оба
набора инструкций ia-64 и амд не то что разные
"меж друг другом", они разительно отличаются от
привычного большинству 32-bit assembly. кстати,
исходя из архитектурных отличий, ia-64 плохо
работает с 32 разрядами, эмулируя их. для амд64
инструкции младших моделей являются "родными".
Это почему же у пней кеш маленький? Мне лично ордного метра L2 вполне хватает. К тому же у Пней кеш 4-ассоциативный. Про 64-разрядные атлоны я не знаю, а в 32-разрядных только 2-ассоцативный. Такше пень, имхо, лучше.
не частотой единой жив процессор ;) и уж тем более не разрядностью. теплоотвод как показатель качества - вообще бред, уж извините.
далее. то что оба процессора - х86, не значит, что они не отличаются архитектурой.
вот вам сайтик
http://www.aceshardware.com/list.jsp?id=4
почитайте, что тут написано, а потом кидайтесь аргументами. особо рекомендую статью
The Secrets of High Performance CPUs
это по поводу конструкций. что до написания кода в зависимости от процессора, то зависит и еще как. особую роль тут при заточке кода уделяется приницпу работы конвеера. скажем длинный конвеер эффективнее при малых ветвлениях кода. другой пример - оптимизация порядка команд по длинне под конкретный конвеер. нелюбимый Бобром Юров ( :) ) описывает такую оптимизацию в книге "Ассемблер. Специальный справочник".
Есть еще такой вопрос. Будет ли отличаться откомпилированный код программы, если его откомпилили на АМД и на Intel, если в программе не использывались специфические моменты написания кода для конкретного процессора?
Есть еще такой вопрос. Будет ли отличаться откомпилированный код программы, если его откомпилили на АМД и на Intel, если в программе не использывались специфические моменты написания кода для конкретного процессора?
будет скорее всего. думаю, что компиляторы подстраиваются под конкретный проц, по мере своих скромных возможностей.
Насколько мне известно пень64 может работать строго на 64 разрядах и строго на 32 разрядах (то есть в 64 разрядной системе 32 битное приложение незапустится и наоборот), а АМД64, может и на 64 разрядной системе запускать 32 разрядные приложения. Это, то что мне известно, но не подкреплено фактами :(
м.... если честно, я не являюсь профессионалом в области архитектуры процессоров, но некоторые познания имеются, если кто-то меня исправит или дополнит - буду рад.
Есть система команд IE-64 она с традиционными процессорами (х86) не связана вообще никак (кроме может того, что разработана интелом) у нее есть свои плюсы, у нее есть свои минусы. На этой системе не запустить обычные программы, и наоборот - программы для IE-64 на обычных процессорах запускать смысла нет. АМД пошла по другому пути и создала 64-разрядное расширение традиционной x-86 архитектуры. На 64-амд можно запустить обычное 32-разрядное (х-86 разумеется) приложение и оно будет работать, можно запустить и 64-разрядное приложение которое не пойдет в обычной 32-разрядной системе. Потом вентиль вдруг начал догонять, что ступил и создал свое расширение. на мой взгляд бредовое, но что сделано - то сделано. В результате последние пни-4 могут работать с 64-разрядными адресами, хотя сами процессоры остаются 32-разрядными. Эта часть команд совместима с расширением амд(вот тут не очень уверен, но обратного я не видел) и проги для "64 разрядных" пней пойдут на 64-амд.
Есть еще такой вопрос. Будет ли отличаться откомпилированный код программы, если его откомпилили на АМД и на Intel, если в программе не использывались специфические моменты написания кода для конкретного процессора?
нет, отличатся не будут если создавались приличным компилятором. Боюсь, что если использовать компилятор от Intel, то он не удержиться и что-нибудь добавит свое (хотя специально не проверял :) ).
А по поводу оптимизации... как сказал один дядя из вентиля на конференции - оптимизированная программа будет лучше работать и на интел и на амд. Это разумеется про оптимизацию на уровне алгоритма )), а оптимизацию на локальном уровне кода ИМХО(!) лучше выполняет компилятор.. по крайней мере я его не обогнал )
почитайте ту ссылку, что я дал. заодно и английский выучите :) икс-б-т опопсел... рекламу гонит :)
почитайте ту ссылку, что я дал. заодно и английский выучите :) икс-б-т опопсел... рекламу гонит :)
iXBT действительно опопсел. Даже не так - просто потерял профессионализм. Непонятно, куда их постоянные авторы ушли. Создается впечатление, что набрали студентов, а они и гонят лапшу, а сами Кваку с Контрой гоняют.
Даже мне пришлось высказаться по этому поводу - взял монитор ViewSonic 191b, несмотря на его разгром в обзоре на iXBT. Потом на форуме восстанавливали правду.
iXBT действительно опопсел. Даже не так - просто потерял профессионализм. Непонятно, куда их постоянные авторы ушли. Создается впечатление, что набрали студентов, а они и гонят лапшу, а сами Кваку с Контрой гоняют.
Даже мне пришлось высказаться по этому поводу - взял монитор ViewSonic 191b, несмотря на его разгром в обзоре на iXBT. Потом на форуме восстанавливали правду.
из российских хардварных сайтов я вообще только ferra.ru читать могу :)
из российских хардварных сайтов я вообще только ferra.ru читать могу :)
Возвращаясь к первоначальной теме: моделей процессоров за все это время развелось так много, что оптимизация под конкретный проц - дело нелегкое. В большинстве случаев все сводится к использованию/неиспользованию тех или дополнительных наборов команд: MMX, SSE/2/3, 3DNow!/Pro и т. п. Хотя, судя, по железячным форумам, есть еще такие вещи, как разное время выполнения команд, число ступеней конвейера, размерноть и латентность кэша и т. п. Тут что-то советовать - дело совершенно неблагодарное. Поэтому, кстати, сейчас системы кодогенерации перед выполнением (JIT) могут перегонять статически скомпилированные программы. Так что, при сегодняшних тенденциях увеличения числа моделей процессоров, будущее - за ними.
личное: амд в последнее время имеют большие
проблемы с теплоотводом. также, что конкретно
смущает -проблемы с частотной маркировкой.
Вот человек, мыслящий исключительно штампами и не смотрящий в глаза фактам.
Во-первых, сейчас и Интел перешел на статистическую маркировку, ибо теперь и у них не в мегагерце дело. Достигнут физический предел сегодняшним техпроцессам - ничего не поделаешь.
А если внимательно посмотреть на цифры рассеиваемой мощности последних моделей процессоров, можно заметить 60-80 Вт у AMD и 90-120 у Intel. Так у кого проблемы? Сейчас архитектурный лидер в области x86 - именно AMD, и Интелу приходится догонять, как ни странно. Иначе, с какой бы стати им пришлось поддерживать систему команд x86-64, разработанную AMD? Нонсенс, раньше было в точности наоборот! Остальное сами найдете и почитаете, если хотите понять суть.
а оптимизацию на локальном уровне кода ИМХО(!) лучше выполняет компилятор..
На данную тему:
http://lowlevel.h14.ru/cgi-bin/yabb/YaBB.cgi?board=other;action=display;num=1119538208
На данную тему:
http://lowlevel.h14.ru/cgi-bin/yabb/YaBB.cgi?board=other;action=display;num=1119538208
Кстати я как раз на днях эту книгу перечитал. ЗЫ. У меня складывается впечатление что если код оптимизирован - то от пня больше выиграш, тогда как при неоптимальном коде все наоборот.
А компиляторыы - до одногом места, они даже выровнять команды как следует не в состоянии, не говоря уже о том что-бы заботиться о попадании кода в различные кеш-линейки :(
И профилировщик у АМД левый :(
А компиляторыы - до одногом места, они даже выровнять команды как следует не в состоянии, не говоря уже о том что-бы заботиться о попадании кода в различные кеш-линейки :(
Опять ты за свое. Скажи еще, что все, что было сделано по оптимизации кода за последние пятнадцать лет - фигня на постном масле.
Насколько мне известно пень64 может работать строго на 64 разрядах и строго на 32 разрядах (то есть в 64 разрядной системе 32 битное приложение незапустится и наоборот), а АМД64, может и на 64 разрядной системе запускать 32 разрядные приложения. Это, то что мне известно, но не подкреплено фактами :(
Ту прав, так как AMD - это так называемые 32/64 разрядные процессоры. Из - за этого есть проблемы с производительностью(как всегда бывает при обратной совместимости(Моторола, которая делает процы для Маков давно от этого отказалась)) и по этой же причине на них не работает Линукс. Да и полноценных мастдаев под 64 разряда еще нет(сервиспаки не решают проблему в корне), так что до появления Лонгорна все это просто реклама.
Опять ты за свое. Скажи еще, что все, что было сделано по оптимизации кода за последние пятнадцать лет - фигня на постном масле.
А что-то в известных мне компиляторах я этих достижений не сильно замечаю. Вот что я прочитал\услышал\увидел от умных людей:
1. Выравнивание даных которые вмещаются в кеш происходит неоптимально, то-есть компилятор оставляет кучу "дыр" в памяти, которых можно избежать
2. Компилятор не беспокоится о попадании кода в разные кеш-линейки процессора
3. Компилятор может насильно испортить оптимально написаный код.
4. Компилятор никогда не развернет циклы(поправьте меня если я ошибаюсь и назовите такой компилятор, который разворачивает циклы, причем не как-нибудь а оптимально!)
5. Компилято р никогда не побеспокоится реорганизовать цикл для того что-бы избежать как-можно больше кеш-промахов.
....
Продолжить список того чего не делают компиляторы для создания оптимального кода? :)
ЗЫ. Это не свое, а актуальная тема, особенно для меня ;)
Ту прав, так как AMD - это так называемые 32/64 разрядные процессоры. Из - за этого есть проблемы с производительностью(как всегда бывает при обратной совместимости(Моторола, которая делает процы для Маков давно от этого отказалась)) и по этой же причине на них не работает Линукс. Да и полноценных мастдаев под 64 разряда еще нет(сервиспаки не решают проблему в корне), так что до появления Лонгорна все это просто реклама.
Вы бредите (с)
во-первых официальный релиз win64 уже вышел, а линухи для opteronов и хаммеров появились уже давнымдавно
Продолжить список того чего не делают компиляторы для создания оптимального кода? :)
Хорошо, под какие процессоры ты это умеешь делать лучше компиляторов?
Моторола, которая делает процы для Маков давно от этого отказалась
именно по этому Apple отныне выпускает Mac с процессорами Intel :D а на Моторолу забили. хотя процы моторолы действительно приятная штука :)
а насчет ОС Windows для 64 бит - это ты точно лажанул...
Хорошо, под какие процессоры ты это умеешь делать лучше компиляторов?
После прочтения книги Касперски, только под те которые он описал - PentiumII/PentiumIII/Pentium4/Athlon. Никакой екзотики. В любом случае, что-бы справляться с этим лучше компилятора нужно читать мануал производителя проца.