LINUX.ORG.RU
ФорумTalks

О «кривостях» x86


0

0

Очень часто вижу на ЛОРе, ну и еще кое-где (но в основном на ЛОРе) утверждение о том, что система команд данного семейства весьма крива и старовата. Так часто, что следовало бы в FAQ, да гугл ничего не говорит. И, к сожадению, сравнивать(по кривости) мне не с чем. Где можно прочитать про все это, ну и про то каким должен быть нормальный проц? Или здесь кто-нибудь сможет нормально объяснить?

http://ru.wikipedia.org/wiki/CISC
http://ru.wikipedia.org/wiki/RISC

Вот и всё объяснение. CISC чем-то похоже на винду - всякой фигни понапихали, из которых, в лучшем случае, исползуются лишь 50% возможностей. Поддержка компилятора, ll-библиотек, ядра приходят лишь годы спустя. А в это время процессор морально устаревает, и появляется еще бОльший монстр. И так по кругу.

RISC - это больше похоже на UNIX. Ядро маленькое, доп. возможности являются ""модулями"" (например ARM лицензирует процессоры с MMU, и без MMU, по желанию. Первый стоит чуть дороже). Причем набор инструкций остается тот-же.


Сейчас любят говорить, что, мол, в CISC процессорах используется RISC ядро... но кого это волнует, кроме как разработчиков этих процессоров? Ведь конечные пользователи все равно видят CISC архитектуру.

logIN
()
Ответ на: комментарий от magellan

>дескриптора? То есть в protected mode?

Да. Если брать реальный режим то это с небольшими огаворками просто 8086 процессор. А вот дальше начинаются костыли. Смешивание x86, 286, i386 и сейчас 64x. Притом 286 и 386 достаточно сильно различаются(конечно если не брать во внемание совместимость). И на данный момент мы имеем кашу из разных процессоров в одном кристале.

I3rain
()
Ответ на: комментарий от I3rain

> Да хотябы посмотреть структуру сегментного регистра. Костыл на костыле.

А что, сегментные регистры ещё кто-то использует?

Вообще я согласен - архитектура, скажем, Alpha или Itanium гораздо логичнее, чем x86. Но у них и нет тяжёлого исторического наследия.

Sikon ★★★
()
Ответ на: комментарий от Sikon

> Но у них и нет тяжёлого исторического наследия.

А вся проблема - в проприетарном софте, бинарную совместимость с которым пытались сохранить в архитектуре x86. Вот и получили в итоге костыль на костыле... Был бы весь софт открытым - написали бы компилятор под новую архитектуру, перекомпилировали - и всё...

slav ★★
()
Ответ на: комментарий от Sikon

Да там чего стоит только идиотское префиксование и пачка дублирующих друг-друга команд. Сплошное нагромождение костылей, если 8086 выглядел еще более-менее прилично, 80186 и 80286 хреново, но терпимо, то начиная с 80386 в системе команд развели такой порнографии, что в приличном обществе ее показывать стыдно.

anonymous
()

> Очень часто вижу на ЛОРе, ну и еще кое-где (но в основном на ЛОРе) утверждение о том, что система команд данного семейства весьма крива и старовата.

Вы посчитайте режимы работы х86 процессоров. Real mode, V86, protected, paging enabled, long mode, compatibility, PAE, SMM... А ведь еще и возможны комбинированные, в результате чего получаются совсем уродливые, "хаковые" режимы типа unreal mode.

Посмотрите на машинный код. Огромное количество инструкций переменной длины, в кодировании которых не наблюдается никакой логики, префиксы, ModRM и т.д. Причем многие инструкции типа INC, DEC, AAA и пр. уже практически не используются и без них вполне можно обойтись, но их приходится поддерживать ради обратной совместимости.

До просто оцените объем всех томов Intel Software Developers Manual -- это же ужоснах.

Relan ★★★★★
()
Ответ на: комментарий от Sikon

> А что, сегментные регистры ещё кто-то использует?

LOL. А как по-вашему работает процессор в protected mode? В сегментном регистре лежит сегментный селектор, который является индексом в таблице дескрипторов. Дескриптор описывает сегмент. При _каждом_ обращении к памяти производится проверка на корректность этого обращения с помощью дескриптора (база, лимит, права и т.д.).

Relan ★★★★★
()
Ответ на: комментарий от krum

> MIPS тоже ничего:) Не зря же китайцы свой проц на базе MIPS делают.

С набором инструкций MIPS я знаком слабо, но насколько я понял, он очень прост. И это хорошо.

Relan ★★★★★
()
Ответ на: комментарий от Relan

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

xnick
()
Ответ на: комментарий от xnick

>тем кто пишет на си - все равно, а тот кто пишет на ассемблере никогда не будет говорить что процессоры с сокращенным набором команд - это хорошо. на процессорах интел как раз может себя показать настоящий хакер.

Ой. Как ты не прав. Не забывай про компиляторы тогоже C/C++.

I3rain
()
Ответ на: комментарий от Relan

> С набором инструкций MIPS я знаком слабо, но насколько я понял, он очень прост. И это хорошо.

ну я бы не сказал, что MIPS прост. одна организация памяти чего стоит. как минимум ни чуть не проще, чем x86.

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от Relan

> Причем многие инструкции типа INC, DEC, AAA и пр. уже практически не используются и без них вполне можно обойтись, но их приходится поддерживать ради обратной совместимости.

"inc, dec depricated" ? интересное наблюдение..

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от Relan

> LOL. А как по-вашему работает процессор в protected mode?

А кому в эпоху flat-адресации вообще нужно знать о существовании каких-то там сегментных регистров?

Sikon ★★★
()
Ответ на: комментарий от xnick

>на процессорах интел как раз может себя показать настоящий хакер

Да, показать... разве что другим, еще более "настоящим" хакерам :) Много ли массового софта сейчас пишется на асме? :)

bigc ★★
()
Ответ на: комментарий от Sikon

>А кому в эпоху flat-адресации вообще нужно знать о существовании каких-то там сегментных регистров?

Системным программистам?

I3rain
()
Ответ на: комментарий от xnick

> а тот кто пишет на ассемблере никогда не будет говорить что процессоры с сокращенным набором команд - это хорошо

Я пишу частично на ассемблере. Конечно, стараюсь минимизировать его использование, но естественно далеко не все вещи можно сделать на С. Так вот, сокращение набора инструкций х86 сильно упростило бы мне жизнь.

> на процессорах интел как раз может себя показать настоящий хакер

А, ну всё понятно. Я хакером не являюсь и показаться им не стремлюсь. Просто у меня этот возраст прошел.

Relan ★★★★★
()
Ответ на: комментарий от Sikon

> А кому в эпоху flat-адресации вообще нужно знать о существовании каких-то там сегментных регистров?

Ваш вопрос не имеет смысла. Отключить сегментацию в х86 процессоре невозможно. Поэтому деваться просто некуда -- приходится знать и использовать.

Relan ★★★★★
()
Ответ на: комментарий от bigc

> Да, показать... разве что другим, еще более "настоящим" хакерам :)

Не, на ассемблере пишет всякое ламерье криворукое. А настоящие хакеры -- исключительно в машинных кодах прямо с терминала без всяких редакторов. :D

> Много ли массового софта сейчас пишется на асме? :)

А смысл? ;) Он используется только там, где без него не обойтись. Изредка в целях оптимизации под SIMD-инструкции. Во всех остальных случаях лучше положиться на компилятор.

Relan ★★★★★
()
Ответ на: комментарий от Relan

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

anonymousI
()
Ответ на: комментарий от anonymousI

> У меня приятель работал в фирме производящей софт для проектирования микросхем. Ядро демона, который в распределенно обсчитывает эти мелкосхемы, целиком на асме. За счет этого имеют зело большое приемущество в производительности перед конкурентами.

Ну, это пока они не собрались что-то в нем поменять... :)

annoynimous ★★★★★
()
Ответ на: комментарий от annoynimous

>>У меня приятель работал в фирме производящей софт для проектирования микросхем. Ядро демона, который в распределенно обсчитывает эти мелкосхемы, целиком на асме. За счет этого имеют зело большое приемущество в производительности перед конкурентами.

>Ну, это пока они не собрались что-то в нем поменять... :)

Или, того хуже, перенести с "кривого x86" куда-нить :)

bigc ★★
()
Ответ на: комментарий от bigc

Оно и работало быстрее... и падало быстрее... :) Если там только код в одной особо критичной функции на асме - то это понятно, да и коды команд для счёта на всех архитектурах похожи.

krum
()
Ответ на: комментарий от hibou

Apple переползли на Intel, потому-что у IBM не было в ближайших планах делать мобильный проц P5, который совсем мало бы жрал. И у Apple большая доля продаж - пауэрбуки(сейчас - макбуки на интеле)

Deleted
()
Ответ на: комментарий от anonymousI

>А пока денюжки-то идут +)))

Ну, дык я и не против, пусть идут :))

bigc ★★
()
Ответ на: комментарий от Relan

>Так вот, сокращение набора инструкций х86 сильно упростило бы мне жизнь.

Сокращение числа вариантов выбора всегда упрощает жизнь одним и ограничивает свободу другим. Интел с 386 громоздил костыли, делал обратную совместимость, чтобы не потерять рынок, а "продвинутые" RISC-архитектуры были дороже, ставились преимущественно на сервера и о доступных решениях для пользователей почему-то никто не думал. Вот и про**али рынок, "архитекторы".

frame ★★★
()
Ответ на: комментарий от robot12

Что даже первые три коментария здесь не прочитал?
Только не говори, что ответил сразу по прочтении Subj_а :-)

sdio ★★★★★
()
Ответ на: комментарий от sdio

Это просто первая кривость, коя приходит в голову при упоминании о сабже :)

bigc ★★
()
Ответ на: комментарий от bigc

> Да, показать... разве что другим, еще более "настоящим" хакерам :) Много ли массового софта сейчас пишется на асме? :)

Залезь, дорогой, внутрь libc/libm. Или, скажем, любого вменяемого кодека-декодера - сплошь асм. И кто ты теперь после подобного заявления?

Gharik
()
Ответ на: комментарий от hibou

>Хм... а почему тогда Apple переползли на Intel?

По тем же причинам, по которым на большинстве компов стоит Linux, а не Windows :D Массовость тянет за собой массовость... И изначально 8086 и, особенно, 8088 взяли хороший старт не из-за своей архитектуры, а из-за железячной совместимости с 8080. Который, в свою очередь, просто для своего времени оказался удачной вещью, "попал в струю". Дальше же начала просто играть открытая архитектура. Сама IBM ушла с этого рынка, но старт архитектуре был дан. Конкуренты все были закрытыми и, потому, сторонними разработчиками поддерживались хуже.

...

Вообще же, по пальцам можно пересчитать архитектуры, которые ХУЖЕ, чем x86 :)

А лучше - да почти все. Что DEC/PDP, что 68K, что современные ARM'ы, наконец... Последние, правда, свою часть рынка урвали. И вот тут уже - достижение исключительно архитектурное ;)

KRoN73 ★★★★★
()
Ответ на: комментарий от Relan

> Я пишу частично на ассемблере. Конечно, стараюсь минимизировать его использование, но естественно далеко не все вещи можно сделать на С. Так вот, сокращение набора инструкций х86 сильно упростило бы мне жизнь.

Сомневаюсь на счет упрощения жизни :) Если пишешь на asm, то переход на RISC приведет к увеличению размера кода (то, что в CISC можно сделать одной командой, в RISC приходится делать несколькими). Код становится более низкоуровневым, соответственно его тяжелее читать и отлаживать.

bigbit ★★★★★
()
Ответ на: комментарий от bigbit

Тут уже говорилось, что половина команд с x86 просто не нужна. Если и успользуют ассемблер, то либо для системеного программирования, либо для оптимизаций с использованием mmx/sse.

krum
()
Ответ на: комментарий от bigbit

> Код становится более низкоуровневым, соответственно его тяжелее читать и отлаживать.

Откуда только такие 3.14здаболы берутся? O_o

mutronix ★★★★
()

а правильно я понимаю, что если в шутке про портируемость .net и есть доля правды, то выражается она в потенциальной возможности упростить тайно планируемый перенос мира Winды на RISC?

Anonymous ★★★★★
()
Ответ на: комментарий от bigbit

>Код становится более низкоуровневым, соответственно его тяжелее читать и отлаживать

Комментарии человеческие писать не пробавал? Говорят помогает...

Doom3r
()
Ответ на: комментарий от Anonymous

>а правильно я понимаю, что если в шутке про портируемость .net и есть доля правды, то выражается она в потенциальной возможности упростить тайно планируемый перенос мира Winды на RISC?

Вообще-то мягкие смотрят на рынок мобильных устройств (сильно Sun глаза им мазолит)

Doom3r
()
Ответ на: комментарий от krum

>ут уже говорилось, что половина команд с x86 просто не нужна.

Половина, не половина, но, смешно, что, скажем, строковые операции ещё со времён 486 выполняются быстрее при их "ручной" реализации из нескольких команд :)

KRoN73 ★★★★★
()
Ответ на: комментарий от Doom3r

Sparc не видел.

ARM очень понравился своим единообразием и массой интересных фич (одна только возможность выполнять/не выполнять _любую_ команду в зависимости от состояния флагов чего стОит). Некоторые решения спорные - скажем, невозможность загрузки произвольной константы (минус - для больших и точных значений (для маленьких или больших "круглых" - всё красиво), плюс - от этого любое слово в коде - это команда, а не, например, часть команды или её параметр).

Power - не видел, но, вроде бы, идеологически это наследних 68K, если так - то очень приятно.

Cell - система невероятно интересная, но рынок программирования под него ещё не готов. Удастся Cell'у этот рынок сформировать или нет - посмотрим. Если удастся - это будет очень крупный переворот в области компов, сравнимый с появлением языков высокого уровня, или открытой архитектуры IBM :)

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

У Cell вообще-то такая же система команд, что и у Power. Рынка нет? Когда же это игровые приставки уже у нас перестали быть рынком?

krum
()
Ответ на: комментарий от krum

>У Cell вообще-то такая же система команд, что и у Power.

Дело не в системе команд, а в ассиметричной архитектуре. Полная система команд Power у PPE. А вот практики( и соответственно рынка) разработки программ с использованием всех возможностей SPEшек действительно пока нет. Игровые же приставки -- несколько другая область.

bigc ★★
()
Ответ на: комментарий от Gharik

Ты прекрасно понял что я( и не только я) имел в виду. Хорош, буквоедствовать и троллить :)))

bigc ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.