Комментарии 24
8087 отнюдь не позволил ПК конкурировать с мэйнфреймами: он был весьма и весьма медленным, хотя, конечно, позволял выполнять вычисления с плавающей запятой намного быстрей, чем выполнение тех же операций чисто программным путём. Посмотрите времена выполнения операций в нём (а заодно и в 8086) и сравните с другими машинами.
Его ещё почему-то назвали процессором, хотя в то время называли сопроцессором.
При всей его "сопроцессорности", он сидел на шине параллельно, собственно, процессору 8086 и поддерживал все машинные циклы, необходимые для арбитража шины. При этом, он вычленял из потока опкодов свои команды, которые сам процессор молотил как NOPы по сути. Т.е. команды сопроцессору дополняли таблицу опкодов процессора. Ну и у процессора был ещё префикс LOCK, запрещающий сопроцессору использовать шину в пределах действия префикса, что гарантировало процессору доступность шины для завершения залоченных команд (сопроцессор мог занимать шину достаточно надолго).
Ну, он сопроцессором и был -- в частности, он не мог самостоятельно выбирать команды, это делал настоящий процессор (8086). Собственно, сопроцессоры, которые не являлись обязательными, но могли наращивать возможности основного процессора -- вещь не новая; скажем, у многих процессоров PDP-11 были необязательные FPU, которые тем или иным путём следили за выборкой команд и перехватывали управление, когда видели свою команду. Это, конечно, не микропроцессоры, но идея довольно близкая.
А как основной процессор выполнял команду сопроцессору в отсутствие последнего?
В PDP-11 просто возникало прерывание по неизвестной команде, так что была возможность программной эмуляции нужных команд при отсутствии железа, что выполнялось незаметно для прикладных программ (не считая более медленного выполнения, конечно) -- этим в определённых случаях пользовались.
Как в 8086 -- честно говоря, не помню, а поднимать документацию и разбираться лениво :) Но, по идее, тоже должно быть прерывание.
EVERYTHING YOU ALWAYS WANTED TO KNOW ABOUT MATH COPROCESSORS
https://docs.google.com/document/d/1SLnsJjShN-8lkj2LxcH979TF3_kzxVu_QIAZtOWbj4U/edit
В ранних версиях турбо-паскаля sin(1000) существенно не попадал в диапазон [-1,1].
Одинарная точность (32 бита) стала универсальным выбором для большинства задач. Двойная точность (64 бита) предназначалась для ситуаций, требующих повышенной точности и широкого диапазона. А расширенная точность (80 бит) использовалась в особых случаях, когда каждый бит был на счету.
Когда каждый бит на счету, используется их минимальное количество, а не максимальное)
Так себе статья.
С одной стороны - много какой-то невнятной лирики, с другой - мало полезного, много неточностей (если не сказать ошибок) и даже текст программы не отформатирован как код.
Слегка спасают только комментарии.
откуда вообще в математике возникла концепция плавающей запятой?
В математике плавающей запятой никогда не было. Она появилась в вычислительной технике.
Ну не скажите. Вся концепция вычислений через логарифмы эксплуатирует ту же самую идею. Это задолго до появления вычислительной техники.
Что такое "вычисления через логарифмы"? Если вы говорите об умножении чисел путём сложения их логарифмов, то там этой "концепции" и близко нет. Плавающая запятая - это хранение числа в виде двух чисел: мантиссы и порядка. Для математики в этом нет необходимости, она работает с абстрактными числами независимо от способа их записи и хранения.
А как, вы думаете, физики, астрономы записывали большие (маленькие) числа при вычислениях?
Долго читал ожидая, когда же начнётся что-то интересное или полезное. Увы, так и не дождался.
Цитирую:
В 1914 году Леонардо Торрес-и-Кеведо, испанский инженер и изобретатель, предложил использовать экспоненциальную запись для представления чисел в вычислительных машинах.
Вопрос: в 1914 году точно существовали вычислительные машины кроме арифмометра ? но там вроде целые числа , хотя деление возможно.
Плавающая запятая, что правит миром