Это в основном верно только для x86, поскольку ни ARM, ни PowerPC, ни MIPS, ни Sparc не реализуют свои FPU в качестве машин на основе стека.
Теперь, когда мы сократили его до x86, причина очевидна. Как и многие другие вещи в вычислительной технике, она сводится к историческим причинам (некоторые называют это истерическим изюмом, потому что настоящая причина не имеет смысла).
Историческая причина в том, что архитектура x86 не имела FPU. Теперь я знаю, что вы скажете: «Но посмотрите на Pentiums!». Да, у них были FPU, но в исходном 8086, который IBM решила построить для своего ПК, не было FPU - это была строго целочисленная машина, как в наши дни множество микроконтроллеров младшего класса.
Это не было большой проблемой, потому что оно предназначалось в основном для терминалов низкого уровня и текстовых процессоров. Но его дешевизна и популярность внезапно стали причиной его использования в научных и инженерных целях. Поэтому люди придумали дополнительные карты расширения с чипом FPU, чтобы ускорить процесс. Самые популярные из этих карт используют чип на основе стека, который также был изготовлен Intel. Этот небольшой факт облегчил Intel последующую интеграцию чипа в будущие поколения процессоров.
К этому моменту Intel все еще могла разработать набор инструкций, не основанный на дополнительном чипе. Но произошли две вещи. Многие приложения, в основном игры и электронные таблицы, начали использовать дополнительный FPU, и эти приложения стали очень и очень популярными. Кроме того, другие производители микросхем увидели, что происходит на рынке ПК, и захотели принять участие в акции. Итак, под давлением обратной совместимости и необходимости быстрого добавления этой функции Intel сделала самое разумное (с точки зрения управления бизнесом, не обязательно с точки зрения разработки): они просто включили сопроцессорный чип в свою следующую версию x86, чтобы отдел маркетинга может сказать, что у них есть FPU.
Короче говоря: истерический изюм!