В 1980 году Intel выпустила 8087 — первый сопроцессор для работы с числами с плавающей запятой на микро компьютерах. С ним операции ускорялись до 100 раз, что давало огромный выигрыш для AutoCAD, электронных таблиц и авиасимуляторов. Но сам чип стоил сотни долларов.
До 8087 производители реализовывали плавающую запятую кто во что горазд. Intel позвал математика Уильяма Кана, который спроектировал точную архитектуру на строгих принципах. В итоге она легла в основу стандарта IEEE 754 — сейчас его используют почти все процессоры.
Чип содержал 40 000 транзисторов (для сравнения, у 8086 их было 29 000). Чтобы всё влезло, Intel пришлось разрабатывать новые приёмы. Один из ключевых блоков — скоростной barrel shifter. Он сдвигает число на любое количество бит за один такт. Это нужно и для выравнивания двоичных точек при сложении, и для трансцендентных операций через алгоритм CORDIC, и для сборки чисел из 16-битных кусков памяти.
Конструкция двухступенчатая. Первая ступень — битовый сдвигатель: сдвигает на 0–7 бит. Вторая — байтовый: сдвигает на 0–7 байт. Вместе они покрывают сдвиг от 0 до 63 бит. Внутри всё построено на pass transistor logic: транзисторы работают как переключатели, сигнал может идти в обе стороны. Специальные драйверы слева и справа позволяют сдвигать данные и влево, и вправо — просто меняя направление.
Управляется сдвигатель тремя источниками: напрямую из микрокода, от счётчика цикла (для CORDIC) или от счётчика лидирующих нулей (для нормализации). Шесть мультиплексоров выбирают нужный бит, а дешифраторы активируют одну из линий битового и одну из линий байтового сдвига.
Помимо shifter’а, 8087 обгонял основной процессор за счёт 80-битных регистров (вместо 16-битных), ПЗУ с константами для трансцендентных функций, аппаратной проверки на NaN, переполнение и антипереполнение, а также ускоренного умножения и деления. Всё вместе давало прирост до 100 раз. Уже с 80486 (1989) Intel начал встраивать FPU прямо в процессор, и отдельный сопроцессор ушёл в историю.