>> Вы удивитесь, но, например, все офисные приложения интенсивнейшим образом используют FPU.
>> Шрифты, вёрстка/textflow (это wordprocessor'ы), расчёты в электронных таблицах, бухгалтерские
>> программы и т.д. Мы уж не говорим о графредакторах и всяких
>> программах для обработки фотографий - я говорю _не_ о профессиональных, а
>> о повседневных!
> Т.е. Без x87 вы графику не отобразите-)) Шрифты, я так понимаю вы
> в том числе про сглаживание?-) А логические элементы на которых построены
> процессоры конечно что-то о синусах знают-))) Всё можно сделать на всём. Мы говорим об эффективности. Логические элементы, из которых сделаны процессоры, не знают и про целочисленную арифметику, кстати - из этого никак не следует, что следует отменить целочисленное ядро.
> 80 битные регистры и стековая структура была хороша, когда обычные регистры CPU
> были 8-16 разрядные, сегодня когда они 64 разрядные, это уже не
> актуально.
Правда? А то, что x87 - это не просто стек и 80-разрядных регистры, а железка, позволяюшая в среднем меньше чем за такт правильно выполнить арифметическую (и не только) IEEE 754 - операцию?
>> Плавающая арифметика двойной точности без FPU медленнее на 2 порядка (буквально: в
>> 100 раз в лучшем случае). И не рассказывайте про SSE/MMX -
>> они не по другой части. Если Вы только слушаете музыку, смотрите
>> кино и играете в игрушки - это Ваши "типовые задачи" -
>> то да, Вам и без FPU ничего. Но не все такие
>> счастливые.
> Мои типовые задачи включают в том числе математические вычисления, но наши библиотеки(я
> про то, что используем на работе) не используют x87. Тот же
> синус ничто не мешает представить в табличной форме,
Вы собираетесь тащить таблицы Брадиса? Если не секрет, с какой дискретностью/точностью вы хотите их представить? То, что в ваших задачах вам может хватать _очень_ грубых приближений, не означает, что это всегда так. Или, всё-таки, промежуточные значения вы будете сильно не спеша считать?
Кстати, любое табличное представление в лучшем случае забивает кеши (когда вам везёт, оно маленькое и вы не промахиваетесь), в худшем - вызывает прокачивание по шине памяти.
> а графические процессоры
> очень хорошо работают, как числодробилка. Кстати, отказ от x87 позволил лучше
> распареллить приложения. И уж объем данных, которые наши приложения обрабатывают существенно
> больше, чем объем данных у офиса или 1С.
> Выдам служебную тайну -))) Биометрическая система распознавания образов и целей, спокойно
> распознает лица и пальцы без использования x87. Вычислений там тоже достаточно.
У вас massively parallelizable application. Это очень ограниченный (хотя и сильно полезный) класс приложений. Увы и ах, огромное количество приложение не-(или плохо-)параллелизуемы. Уж не говорю о том, что сама по себе параллельность требует накладных расходов и на массе задач они просто не окупаются.
> И еще момент, если посмотреть на то, как используются ресурсы процессора современными
> приложениями, то становится грустно.
> Откомпилируйте cout<<"the best"; на компиляторах 10 летней давности и на компиляторах 2011
> года, будете неприятно удивлены качеством кода-))
Вы путаете компиляторы и библиотеки. Качество генерируемого кода сейчас гораздо выше. И даже с библиотеками всё не так просто - iostream не лучший пример. Попробуйте откомпилировать следующую простую программку компилятором 10-летней давности (ну, например, gcc 3.0, можете взять текущий gcc 3.3) и gcc 4.6.2 - сильно удивитесь (в обоих случаях параметры компиляции -O2 -S). Попробуйте, не пожалеете:
#include <numeric>
#include <stdio.h>
static int fn()
{
static const int a[] = { 2, 6, 1, 4, 0 } ;
return std::accumulate(a + 0, a + sizeof a/sizeof *a, 0) ;
}
int main(int, char *[])
{
printf("%d\n", fn()) ;
}