← На главную

Intel 8087: 69-битный сумматор ускорил вычисления в 100 раз

13.06.2026 16:49 · hackernews

В 1980 году Intel выпустила математический сопроцессор Intel 8087 — отдельный чип, который ускорял вычисления до 100 раз. Он умел не только складывать и умножать, но и считать квадратные корни, тангенсы, экспоненты и логарифмы. Сердцем этих операций был 69-битный сумматор. Именно о его схеме идёт речь в статье.

Сумматор построен из 4-битных блоков. Внутри каждого блока используется Manchester carry chain — техника, придуманная в Манчестерском университете в 1959 году для компьютера Atlas. Идея в том, чтобы не ждать, пока перенос пройдёт через все 69 бит последовательно (как в сложении столбиком), а выставить заранее для каждого бита сигналы Generate, Propagate или Delete. Если два бита дают 1+1 — перенос генерируется; 0+0 — удаляется; 0+1 — пропускается. Эти сигналы вычисляются параллельно за постоянное время. Затем по ним быстро, без задержек логических элементов, проходит сам перенос — как сигнал по проводу.

Чтобы перенос не ослабевал из-за проходных транзисторов, цепь разбита на блоки по 4 бита, и в каждом стоит carry-skip — схема, которая «освежает» сигнал. Если все четыре бита в блоке работают в режиме Propagate, перенос пролетает сквозь блок без внутренних вычислений.

Для дополнительного ускорения чип использует предзарядку линий переноса до 5V в начале такта, потому что NMOS-транзисторы быстрее тянут сигнал к земле, чем к питанию. Высокое напряжение означает «нет переноса», низкое — «есть перенос».

Сам 69-битный сумматор нужен не только из-за 64-битной мантиссы. Три младших бита отведены под округление (Guard, Round, Sticky). Ещё один бит требуется, когда значение из B register удваивается, и ещё один — при представлении отрицательных чисел в дополнительном коде. На выходе сумматора 70 бит; Sum Shifter сдвигает результат на два бита вправо до 68 бит.

Умножение реализовано через radix-4 Booth multiplication — за такт обрабатывается два бита множителя. Для этого используется Skip Shifter, который выдвигает по два бита. На каждом шаге к сумме добавляется 2B, B, 0 или -B. Деление и квадратный корень тоже построены на повторяющихся сложениях и вычитаниях — их внутренний цикл реализован аппаратно, а не микрокодом.

В патенте 8087 сказано: «В конечном счёте все арифметические операции сводятся к бинарному сложению». Производительность сумматора — ключ к производительности всего сопроцессора. Более быстрые схемы вроде Kogge-Stone adder из Pentium потребовали бы гораздо больше транзисторов — для 8087 это было непозволительно. Инженеры нашли баланс между сложностью и скоростью, выбрав Manchester carry chain с carry-skip.

Читать оригинал →