Ідіть по дотичній з гібридним алгоритмом CORDIC Intel 8087

Ідіть по дотичній з гібридним алгоритмом CORDIC Intel 8087


Продовжуючи зворотне проектування Intel 8087 FPU, [Ken Shirriff] і друзі розглянули одну з тригонометричних функцій, зокрема FPTAN. Найцікавіша частина такого зворотного проектування, мабуть, полягає в тому, щоб з’ясувати, який алгоритм використовувався під час реалізації, намагаючись з’ясувати причину остаточного апаратного дизайну.

Якщо ви використовуєте простий MCU або MPU, як-от 6502 або Z80, без апаратних функцій, ви, ймовірно, використовуватимете такий алгоритм, як CORDIC або подібний, оскільки для цього потрібні лише базові апаратні функції, як-от додавання, віднімання, порозрядність і таблиці пошуку. Можна також використовувати поліноміальну апроксимацію, якщо є апаратна підтримка можливого прискорення, або, як у 8087, створити гібридний підхід, який націлений як на швидкість, так і на точність.

У статті детально описано точну реалізацію досягнення 64-бітної точності, яка обчислюється з 16-бітної за допомогою CORDIC перед переходом до техніки наближення Паде із співвідношенням двох поліномів. Оскільки після обчислення остаточного значення за допомогою CORDIC, залишок є дуже малим значенням, це поліноміальне наближення є не тільки дуже точним, але й швидким.

Такий підхід дозволяє FPTAN і подібні тригонометричні функції в цьому FPU, щоб досягти дуже високого рівня точності та розміру таблиці пошуку та не потрібно додаткового часу для роботи з рештою бітів за допомогою CORDIC. Для тих, хто хоче побачити повний алгоритм, який використовують інженери Intel, [Ken] містить повний список мікрокодів з коментарями в статті.

Що стосується точної швидкості цього підходу, [Ken] розраховує для одного значення FPTAN Він витрачає 33% на псевдоподіл CORDIC, 47% на псевдомноження CORDIC і лише 15% на поліноміальну апроксимацію та близько 5% накладних витрат.

У серії процесорів Pentium Intel повністю відійшла від CORDIC, оскільки відомо, що якою б точністю він не був, важко масштабувати велику кількість бітів без значної втрати часу. З появою інструкцій SIMD продуктивність x87 ISA ще більше знизилася, але цей аналіз знову показує, чому 8087 зробив такий вплив, коли був випущений.



Source link

Leave a Reply

Your email address will not be published. Required fields are marked *