169 похожих чатов

Float foo(float a, float b, float c, float d) {

return (a * b + c * d) / (a * c + b * d);
}

Так ли то, что подобный код на стековой машине считаться будет существенно медленнее чем на регистровой?

17 ответов

59 просмотров

1) если берем просто регистровый процессор, то цена не так высока, иначе фортом 50 лет назад никто не пользовался бы. Если стековый процессор, то и цена, естественно, нулевая. 2) и да и нет. Стековой архитектуре уже много лет, не взлетает по многим причинам. Я бы ставил на то, что основная проблема в том, что средний потребитель не знает разницы между арм и х86, про более экзотические архитектуры он вообще не слышал

Если регистров достаточно (т.е. память или стек для вычисления не нужны), и ABI таков что входные параметры уже лежат в регистрах, и выходное значение сохраняется в другой регистр, то, при условно равных прочих условиях (скажем, равном потреблении энергии), да — этот код будет (наверное) быстрей вычисляться на регистровой машине. Но, наверняка найдется другой код, который будет быстрей вычисляться на стековой машине при тех же условиях.

Defragmented-Panda Автор вопроса
Nauz Rem
1) если берем просто регистровый процессор, то цен...

1 понял, спасибо 2 что насчет спец железа где пользователь его не программирует? Всякие там девайсы которые сами работают. От ключей до умных колонок

Defragmented-Panda Автор вопроса
ruv
Если регистров достаточно (т.е. память или стек дл...

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

Nauz Rem
1) если берем просто регистровый процессор, то цен...

Изучая исторические ЭВМ я заметил, что многие из древнейших были с минимально возможным набором комманд и числом регистров. И многие конечно были стековой архитектуры - для экономии. Но с приходом интеграции и миниатюризации пришлось в процессор поместить некоторое количество быстрых регистров так как память на микросхемах была очень дорогая. А те технологии не позволяли поместить в кристалл процессора большой кэш. Когда же это стало возможно, уже все привыкли к регистрам. Имхо переход к регистровым архитектурам вызван именно таким путем развития технологий и маркетингом. Просто в стековые процесссоры не выгодно инвестировать

Andrey Smirnov
Изучая исторические ЭВМ я заметил, что многие из д...

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

Andrey Smirnov
Изучая исторические ЭВМ я заметил, что многие из д...

Не выгодно, потому что регистровые уже более развиты и разработчики привыкли. Переход на новую архитектуру - потеря кучи бабла, х86 потому на столько популярен, что тянет легаси с 80х(?) годов

Andrey Smirnov
Изучая исторические ЭВМ я заметил, что многие из д...

скорее первые процессоры были гибридными регистрово стековыми. И стек это способ организации регистров. в х86 8 регистров и один стек? Если мы возьмем двухстековый процессор с глубиной стека в 16 регистров, то это уже в сумме 32 регистра, как в mips . На стековые процессоры легко было перейти, но проблема в том, что сами разработчики не готовили их как процессоры общего назначения. В большинство процессоров не встраивали mmu, и вообще они были процессорами общего назначения.

Igor 🐱 Jirkov
Кажется, сложно теперь оценить перспективность сте...

Я это и написал. И уже в этом чате многократно писали. Вложено слишком много денег, что бы поворачивать производство на другой путь 😢 По тому продолжаем теоретизировать. "Есть ли жизнь на стековых процессорах!?" 😂

Andrey Smirnov
Я это и написал. И уже в этом чате многократно пис...

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

Andrey Smirnov
Изучая исторические ЭВМ я заметил, что многие из д...

а стековые транспьютеры кто-то пытался делать? какой-нибудь Burrought B5700 а то кто-то вещал что стековые машины схемотехнически проще, соответственно можно больше ядер на кристалл нафигачить

B5000 ! Описание на википедии скудное

http://bitsavers.org/pdf/burroughs/B5000_5500_5700/

Andrey Smirnov
B5000 ! Описание на википедии скудное

Там пишут, что для B5000, B5500, B5700 одна и та же система команд.

И до кучи, разработка стекового суперскалярного процессора (от того же автора zzeng): https://habr.com/ru/post/278575/ (2016)

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта