netch80: (Default)
[personal profile] netch80
Может, баян, но я для себя ещё не формулировал.

Общеизвестная критика Intel с позиции "этот ваш x86 полный отстой, надо было делать как в ARM/MIPS/etc., конверсия во внутренний RISC не нужна, команды разбирать слишком дорого", которой полны соответствующие форумы - обычно заканчивается тем, что оппонент или стихает, или переходит в режим "от обоснуя слышу" и на этом обсуждение заканчивается якобы победой критика.

Но я ни разу не видел возражения на это, что RISC, VLIW, etc. организации банально нерасширяемы. Да, иногда цена расширения велика - начиная от тотального OOO+Tomasulo во внутренней логике (дорогая таки штука) до префиксов на каждую операцию (в x86-64 коде, ~38% всех команд с префиксом REX, и это я не считал те, у которых он подразумевается из-за единственности сути), но она подъёмна и, главное, перспективна в плане сохранения совместимости с существующими готовыми продуктами. X86-32 пережило даже внедрение AVX:) и умирать не собирается.

Отсюда обратный вывод - что x86 живо только пока идёт бурное развитие (по закону Мура). Как только последний остановится, она потеряет преимущество и лет за 10 уйдёт в ноль; но пока рост есть - она непобедима. Закон Чёрной королевы в действии.

Но странно другое. Практически каждое архитектурное решение Intel это в лучшем случае оптимальность на один шаг вперёд, уже через два шага побочные эффекты сиюминутной выгоды становятся явными недостатками. Результат выглядит как корабль, слой ракушек на котором в несколько раз толще ширины корабля. Зачем? Я не верю, что у них так плохо с мозгами.

Date: 2013-12-23 10:50 am (UTC)
From: [identity profile] http://users.livejournal.com/_slw/
по сравнению с pdp11?
с его вот этим всем, моделью прерываний, например?

Date: 2013-12-24 09:15 pm (UTC)
From: [identity profile] netch80.livejournal.com
> по сравнению с pdp11?

И по сравнению с PDP-11 тоже. Например, в таком её виде она банально нерасширяема. Почему эта её хвалёная ортогональность вдруг заканчивается на ряде команд, и уже MUL и DIV работают только с регистром (или двумя) в качестве целевого операнда? Почему точно так же не хватило полноценных кодов на ADCB, SBCB, XOR, и не сделали расширение? Почему в VAX не стали повторять этот принцип, а перешли на байтовую грануляцию команд?

> с его вот этим всем

Это чем? Например, виртуальной памятью в стиле "узкое окошко"? Неисправимой 16-битностью?

> моделью прерываний

Модель прерываний там тупейшая и слабо управляемая. То, что в PDP-11 для некоторой цели можно было поднять IPL, а в 8086 - загнать маску в 8259, принципиально ничего не меняет. (Или ты про один флажок IF? Он - последнее средство в цепочке, и то, что некоторые использовали только его, говорит не более чем об их способностях и потребностях.) Зато в 8086 можно было управлять каждым запретом раздельно (привет BSD с её spl*()), а в PDP-11 - если ты запретил то, что на уровне 6, то то, что на уровне 4, уже никак не будет доступно.

Да, программировать человеку приятнее с полной ортогональностью. Это удобнее, чем помнить всякие странности типа того, что на amd64 почему-то push константы есть только 32-битный. Но расход ресурсов на это может быть чрезмерный. Мне в этом плане подход S/360 с потомками кажется куда адекватнее.

Profile

netch80: (Default)
netch80

January 2026

S M T W T F S
    1 23
45678910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 11th, 2026 04:25 pm
Powered by Dreamwidth Studios