العودة
هندسة عكسية لخوارزمية الظل في Intel 8087: أكثر من CORDIC
SiTech AI Team2 წთ. საკითხავი

هندسة عكسية لخوارزمية الظل في Intel 8087: أكثر من CORDIC

فحص كين شيرف شريحة المعالج الرياضي Intel 8087 وميكروكوده، فوجد أن تعليمة FPTAN جمعت بين CORDIC بعرض 16 بت وتقريب Padé النسبي للوصول إلى دقة 64 بت، ولم تكتفِ بـ CORDIC وحده.

قدّمت Intel معالج المكوّن الرياضي 8087 عام 1980، فسرّع حساب الفاصلة العائمة كثيراً في حاسبات IBM PC: صار حساب الظل يستغرق نحو 90 ميكروثانية بدلاً من نحو 13 000 على المعالج 8086. وقد أعاد كين شيرف بناء خوارزمية التعليمة FPTAN بعد فحص شريحة الدائرة والميكروكود، وتبيّن أن الشريحة لم تكتفِ بخوارزمية CORDIC.

CORDIC من القاذفة B-58 إلى 8087

استخدمت الشريحة خوارزمية CORDIC التي وضعها جاك فولدر عام 1956 لقاذفة B-58 Hustler. لا تحتاج الخوارزمية سوى الإزاحة والجمع وجدول من الزوايا الخاصة المحسوبة مسبقاً، arctan(2^-n)، دون ضرب أو قسمة: وبتدوير المتجه (1, 0) بهذه الزوايا نحصل على النقطة (X, Y)، ويكون الظل هو Y/X.

القسمة الشكلية في CORDIC عند زاوية 0.95 راديان. الرسم: Ken Shirriff

لماذا كثير الحدود النسبي

تمنح 16 خطوة من CORDIC دقة تقارب 16 بت، أما 64 بت فتتطلب 64 خطوة. لذلك تحسب 8087 الزاوية المتبقية الصغيرة (نحو 2^-16) بتقريب Padé: النسبة 3x/(3-x²) التي ينمو خطؤها بمقدار x⁴ ويبقى دون 2^-64. ونسبة كثيرَي حدود تناسب دالة الظل أفضل من متسلسلة تايلور لأن الدالة تذهب إلى ما لا نهاية عند π/2؛ ولأن FPTAN تعيد البسط والمقام منفصلين، فإن القسمة لا تكلف شيئاً.

ثلاث مراحل في الميكروكود

يضم ROM الميكروكود 1648 تعليمة دقيقة، وتبدأ FPTAN من العنوان #1039. تقارن مرحلة القسمة الشكلية زاوية الدخل بالزوايا المخزنة وتدوّن القرارات في سجل إزاحة بعرض 16 بت؛ وعند 0.95 راديان يكون التسلسل 10010101 00100111. ثم يأتي التقريب النسبي، وبعده الضرب الشكلي: تُنفذ الدورات بالإزاحة والجمع بترتيب معاكس، من الأصغر، للحد من خطأ التقريب. ومعظم الحساب يتم على أعداد صحيحة بعرض 64 بت بأسس ضمنية، والعملية الوحيدة المكلفة هي تربيع الزاوية.

الضرب الشكلي: يدور المتجه بالإزاحة والجمع. الرسم: Ken Shirriff

العتاد والأداء

تُخزَّن الأعداد بصيغة «temporary real» بعرض 80 بت: بت الإشارة وأس مُزاح بعرض 15 بت وصفيحة بعرض 64 بت، ولكل سجل في المكدس وسم: zero أو valid أو special أو empty. وتستغرق FPTAN عادةً 450 دورة ساعة؛ وعند 0.95 يذهب 33% من الوقت إلى القسمة الشكلية و15% إلى كثير الحدود و47% إلى الضرب الشكلي و5% إلى أعباء إضافية. وانتقلت Intel في Pentium إلى تقريبات كثيرة الحدود.

أُجري التحليل مع أعضاء «Opcode Collective»: حُوِّلت صور ROM إلى بيانات ميكروكود بمصنّف تعلّم آلي.

SSiTech

SiTech — تطوير ويب مدعوم بالذكاء الاصطناعي

نبني مواقع سريعة وعصرية وندمج الذكاء الاصطناعي في سير عمل الشركات. لديك مشروع أو سؤال؟ يسعدنا مساعدتك.