x87

x87 هي مجموعة فرعية مرتبطة بالفاصلة العائمة من مجموعة تعليمات بنية x86 . نشأت كامتداد لمجموعة تعليمات 8086 في شكل معالجات مساعدة اختيارية للفاصلة العائمة تعمل جنبًا إلى جنب مع وحدات المعالجة المركزية x86 المقابلة. تحمل هذه الرقائق الدقيقة أسماء تنتهي بـ "87". يُعرف هذا أيضًا باسم NPX (امتداد المعالج العددي). مثل الامتدادات الأخرى لمجموعة التعليمات الأساسية، لا تكون تعليمات x87 ضرورية بشكل صارم لبناء برامج عاملة، ولكنها توفر تنفيذات للأجهزة والرموز الدقيقة للمهام العددية الشائعة، مما يسمح بأداء هذه المهام بشكل أسرع بكثير من روتينات التعليمات البرمجية الآلية المقابلة . تتضمن مجموعة تعليمات x87 تعليمات للعمليات الأساسية للفاصلة العائمة مثل الجمع والطرح والمقارنة، ولكن أيضًا للعمليات العددية الأكثر تعقيدًا، مثل حساب الدالة الظلية ومعكوسها، على سبيل المثال.

تم تنفيذ تعليمات x87 هذه في وحدة المعالجة المركزية الرئيسية في معظم معالجات x86 منذ Intel 80486 ، ولكن المصطلح لا يزال يُستخدم أحيانًا للإشارة إلى ذلك الجزء من مجموعة التعليمات. قبل أن تصبح تعليمات x87 قياسية في أجهزة الكمبيوتر، كان على المترجمين أو المبرمجين استخدام استدعاءات مكتبة بطيئة إلى حد ما لأداء عمليات الفاصلة العائمة، وهي الطريقة التي لا تزال شائعة في الأنظمة المضمنة (منخفضة التكلفة) .

وصف

تشكل سجلات x87 بنية مكدسة غير صارمة عميقة ذات ثمانية مستويات تتراوح من ST(0) إلى ST(7) مع سجلات يمكن الوصول إليها مباشرة بواسطة أي من المتعاملين، باستخدام إزاحة نسبية إلى الأعلى، بالإضافة إلى الدفع والإخراج. (يمكن مقارنة هذا المخطط بكيفية دفع إطار المكدس وإخراجه وفهرسته.)

توجد تعليمات لدفع القيم وحسابها وإخراجها أعلى هذه المكدس؛ ثم تعالج العمليات الأحادية (FSQRT وFPTAN وما إلى ذلك) ضمناً أعلى ST(0)، بينما تعالج العمليات الثنائية (FADD وFMUL وFCOM وما إلى ذلك) ضمناً ST(0) وST(1). يسمح نموذج المكدس غير الصارم أيضًا للعمليات الثنائية باستخدام ST(0) مع وسيط ذاكرة مباشر أو مع سجل مكدس محدد صراحةً ، ST( x )، في دور مماثل للمجمع التقليدي ( وجهة مشتركة ومتعامل أيسر). يمكن أيضًا عكس ذلك على أساس كل تعليمات على حدة مع ST(0) كمتعامل غير معدّل وST( x ) كوجهة . علاوة على ذلك ، يمكن تبادل المحتويات الموجودة في ST(0) مع سجل مكدس آخر باستخدام تعليمة تسمى FXCH ST( x ).

تجعل هذه الخصائص مكدس x87 قابلاً للاستخدام كسبعة سجلات قابلة للعنونة بحرية بالإضافة إلى مُراكم مخصص (أو كسبعة مُراكم مستقلة). ينطبق هذا بشكل خاص على معالجات x86 الفائقة (مثل Pentium لعام 1993 وما بعده)، حيث يتم تحسين تعليمات التبادل هذه (الرموز D9C8..D9CF h ) إلى عقوبة ساعة صفرية باستخدام أحد مسارات الأعداد الصحيحة لـ FXCH ST( x ) بالتوازي مع تعليمات FPU. على الرغم من كونها طبيعية ومريحة لمبرمجي لغة التجميع البشرية ، فقد وجد بعض كتاب المترجمين أنه من الصعب إنشاء مولدات أكواد آلية تقوم بجدولة كود x87 بشكل فعال. يمكن لمثل هذه الواجهة القائمة على المكدس أن تقلل من الحاجة إلى حفظ متغيرات الخدش في استدعاءات الوظائف مقارنة بالواجهة القائمة على السجل [1] (على الرغم من أن مشكلات التصميم في تنفيذ 8087 حدت من هذه الإمكانية تاريخيًا. [2] [3] )

توفر x87 حسابات ثنائية ذات فاصلة عائمة بدقة مفردة ودقة مزدوجة ودقة مزدوجة ممتدة 80 بت وفقًا لمعيار IEEE 754-1985 . بشكل افتراضي، تستخدم جميع معالجات x87 دقة مزدوجة ممتدة 80 بت داخليًا (للسماح بدقة مستدامة على العديد من الحسابات، انظر الأساس المنطقي لتصميم IEEE 754 ). وبالتالي، قد يتصرف تسلسل معين من العمليات الحسابية بشكل مختلف قليلاً مقارنة بوحدة معالجة عائمة IEEE 754 ذات دقة مفردة أو مزدوجة صارمة. [4] نظرًا لأن هذا قد يكون أحيانًا مشكلة لبعض الحسابات شبه الرقمية المكتوبة لافتراض الدقة المزدوجة للتشغيل الصحيح، لتجنب مثل هذه المشكلات، يمكن تكوين x87 باستخدام سجل تكوين/حالة خاص للتقريب تلقائيًا إلى دقة مفردة أو مزدوجة بعد كل عملية. منذ تقديم SSE2 ، لم تعد تعليمات x87 ضرورية كما كانت من قبل، ولكنها تظل مهمة كوحدة قياسية عالية الدقة للحسابات الرقمية الحساسة لخطأ التقريب وتتطلب دقة 64 بت ونطاقًا موسعًا متاحًا في تنسيق 80 بت.

أداء

تحسب دورات الساعة لأمثلة تعليمات وحدة النقطة العائمة x87 النموذجية (يتم عرض إصدارات السجل-السجل فقط هنا). [5]

يغطي تدوين A ... B (الحد الأدنى إلى الحد الأقصى) الاختلافات في التوقيت التي تعتمد على حالة خط الأنابيب المؤقت والدقة الحسابية المختارة (32 أو 64 أو 80 بت)؛ كما يتضمن أيضًا الاختلافات الناتجة عن الحالات العددية (مثل عدد البتات المحددة، والصفر، وما إلى ذلك). يصور تدوين L → H القيم المقابلة لأقل ترددات الساعة (L) وأعلى ترددات الساعة (H) المتاحة.

تنفيذ x87 فاد فمول فديف اف اكس سي اتش وزارة التجارة والصناعة FSQRT فبتآن فباتان الحد الأقصى للساعة
(ميجا هرتز)
ذروة FMUL
(مليون/ ثانية )
FMUL §
rel. 5 MHz 8087
8087 70…100 90…145 193…203 10…15 40…50 180…186 30…540 250…800 000 5 → 00 10 0.034…0.055 → 0.100…0.111 ~0000 1 → 2× أسرع
80287 (الأصلية) 000 6 → 00 12 0.041…0.066 → 0.083…0.133 .000 1.2 → 2.4×
80387 (والموديلات الأحدث 287) 23…34 29…57 88…91 18 24 122…129 191…497 314…487 00 16 → 00 33 0.280…0.552 → 0.580…1.1 000 ~10 → 20×
80486 (أو 80487) 8…20 16 73 4 4 83…87 200…273 218…303 00 16 → 00 50 ….000000 1.0 → 3.1 000 ~18 → 56×
سيريكس 6x86 ، سيريكس MII 4…7 4…6 24…34 2 4 59…60 117…129 97…161 00 66 → 0 300 ..0000 11…16 → 50…75 00 ~320 → 1400×
AMD K6 (بما في ذلك K6 II/III) 2 2 21…41 2 3 21…41 ؟ ؟ 0 166 → 0 550 …..000000 83 → 275 0 ~1500 → 5000×
بنتيوم / بنتيوم MMX 1…3 1…3 39 1 (0*) 1…4 70 17…173 19…134 00 60 → 0 300 ..0000 20…60 → 100…300 0 ~1100 → 5400×
بنتيوم برو 1…3 2…5 16…56 1 28…68 ؟ ؟ 0 150 → 0 200 ..0000 30…75 → 40…100 0 ~1400 → 1800×
بنتيوم II / III 1…3 2…5 17…38 1 27…50 ؟ ؟ 0 233 → 1400 ..000 47…116 → 280…700 0 ~2100 → 13000×
أثلون (K7) 1…4 1…4 13…24 1…2 16…35 ؟ ؟ 0 500 → 2330 ..00 125…500 → 580…2330 0 ~9000 → 42000×
أثلون 64 (K8) 1000 → 3200 ..0 250…1000 → 800…3200 ~18000 → 58000×
بنتيوم 4 1…5 2…7 20…43
دورات متعددة
1 20…43 ؟ ؟ 1300 → 3800 ..00 186…650 → 543…1900 ~11000 → 34000×
* غالبًا ما يكون من الممكن تحقيق تأخير فعال في الساعة الصفرية، من خلال التنفيذ الفائق.
§ كان المعالج 8087 بسرعة 5 ميجاهرتز هو المعالج الأصلي x87. وبالمقارنة مع روتينات الفاصلة العائمة النموذجية التي يتم تنفيذها بواسطة البرامج على 8086 (بدون 8087)، فإن العوامل ستكون أكبر، ربما بعامل آخر قدره 10 (أي أن إضافة الفاصلة العائمة الصحيحة بلغة التجميع قد تستهلك أكثر من 1000 دورة).

الشركات المصنعة

تشمل الشركات التي صممت أو صنعت وحدات الفاصلة العائمة المتوافقة مع طرازات Intel 8087 أو الإصدارات الأحدث AMD ( 287 و 387 و 486DX و 5x86 و K5 و K6 و K7 و K8 )، و Chips and Technologies ( معالجات Super MATH المساعدة)، و Cyrix ( FasMath و Cx87SLC و Cx87DLC وما إلى ذلك و 6x86 و Cyrix MII )، و Fujitsu ( Pentium Mobile المبكرة وما إلى ذلك)، و Harris Semiconductor (صنعت معالجات 80387 و 486DX )، و IBM (تصاميم مختلفة 387 و 486 )، و IDT ( WinChip و C3 و C7 و Nano وما إلى ذلك)، و IIT ( 2C87 و 3C87 وما إلى ذلك)، وLC Technology ( معالجات Green MATH المساعدة)، و National Semiconductor ( Geode GX1 و Geode GXm وما إلى ذلك)، و NexGen ( Nx587 )، و Rise Technology ( mP6 )، و ST Microelectronics (التي صنعت 486DX و 5x86 وما إلى ذلك)، و Texas Instruments (التي صنعت معالجات 486DX وما إلى ذلك)، و Transmeta ( TM5600 و TM5800 )، و ULSI ( معالجات Math·Co المساعدة)، و VIA ( C3 و C7 و Nano وما إلى ذلك)، و Weitek ( 1067 و 1167 و 3167 و 4167 )، وXtend ( 83S87SX-25 ومعالجات مساعدة أخرى).

الأجيال المعمارية

8087

كان 8087 أول معالج مساعد للرياضيات للمعالجات ذات 16 بت التي صممتها شركة إنتل . وقد تم تصميمه ليتم إقرانه بمعالجات إنتل الدقيقة 8088 أو 8086. ( كانت معالجات إنتل ذات الفاصلة العائمة 8231 و8232 الأقدم ، والتي تم تسويقها للاستخدام مع وحدة المعالجة المركزية i8080، في الواقع إصدارات مرخصة من وحدات FPU Am9511 وAm9512 من AMD من عامي 1977 و1979. [6] )

80C187

إصدار 16 ميجا هرتز من Intel 80C187

على الرغم من أن ورقة البيانات الأصلية لعام 1982 لـ ( المستندة إلى NMOS ) 80188 و80186 تبدو وكأنها تذكر معالجات مساعدة للرياضيات محددة، [7] فإن كلتا الرقاقتين كانتا في الواقع مقترنتين بـ 8087.

ومع ذلك، في عام 1987، للعمل مع وحدة المعالجة المركزية Intel 80C186 المحدثة القائمة على CMOS ، قدمت Intel معالج الرياضيات المساعد 80C187 [8] . واجهة 80C187 للمعالج الرئيسي هي نفسها واجهة 8087، لكن جوهرها هو في الأساس نفس جوهر 80387SX وبالتالي فهي متوافقة تمامًا مع IEEE 754 وقادر على تنفيذ جميع التعليمات الإضافية لـ 80387. [9]

80287

80287 ( i287 ) هو معالج الرياضيات المساعد لسلسلة معالجات Intel 80286 الدقيقة . تضمنت نماذج Intel متغيرات بحدود تردد قصوى محددة تتراوح من 6 إلى 12 ميجا هرتز. كانت إصدارات NMOS متوفرة بترددات 6 و8 و10 ميجا هرتز. [ 10] كان إصدار Intel 80287-10 Numerics Coprocessor المتاح بتردد 10 ميجا هرتز مقابل 250  دولارًا أمريكيًا بكميات 100. [11] كانت هذه الإصدارات المعبأة من 80287 و80287-8 و80287-10 متاحة مقابل 212 دولارًا أمريكيًا و326 دولارًا أمريكيًا و374 دولارًا أمريكيًا على التوالي. كان هناك إصدار معبأ من 80C287A متاحًا مقابل 457 دولارًا أمريكيًا. [12] النماذج الأخرى 287 ذات الأداء المماثل لـ 387 هي Intel 80C287، التي تم بناؤها باستخدام CHMOS III، وAMD 80EC287 المصنعة في عملية CMOS الخاصة بـ AMD ، باستخدام بوابات ثابتة بالكامل فقط.

لاحقًا، تبع ذلك i80287XL مع بنية 387SX الدقيقة مع توصيل 287 دبوسًا، [13] وi80287XLT، وهي نسخة خاصة مخصصة لأجهزة الكمبيوتر المحمولة، بالإضافة إلى متغيرات أخرى. تحتوي على مضاعف داخلي 3/2، بحيث يمكن للوحات الأم التي تعمل على تشغيل المعالج المساعد بسرعة وحدة المعالجة المركزية 2/3 تشغيل وحدة النقطة العائمة بنفس سرعة وحدة المعالجة المركزية. قدم كل من 80287XL و80287XLT أداءً أفضل بنسبة 50% واستهلاك طاقة أقل بنسبة 83% وتعليمات إضافية. [14]

يعمل المعالج 80287 مع المعالج الدقيق 80386 وكان في البداية المعالج المساعد الوحيد المتوفر للمعالج 80386 حتى تقديم المعالج 80387 في عام 1987. ومع ذلك، فإن المعالج 80387 مفضل بشدة لأدائه العالي والقدرات الأكبر لمجموعة التعليمات الخاصة به.

80387

صورة شريحة وحدة المعالجة المركزية Intel 80387

يُعد المعالج المساعد 80387 ( 387 أو i387 ) أول معالج مساعد من إنتل يتوافق تمامًا مع معيار IEEE 754-1985 . تم إصداره في عام 1987، [15] بعد عامين من شريحة 386، ويتضمن i387 سرعة محسنة كثيرًا مقارنة بمعالجات إنتل المساعدة السابقة 8087/80287 وخصائص محسنة لوظائفه المثلثية. تم طرحه بسعر 500 دولار أمريكي بكميات 100. [16] بعد فترة وجيزة، تم طرحه من خلال عملية تحسين الكمبيوتر الشخصي من إنتل بسعر سوق التجزئة 795 دولارًا أمريكيًا. [17] كان إصدار 25 ميجا هرتز متاحًا في قناة البيع بالتجزئة مقابل 1395 دولارًا أمريكيًا. [18] استوفى المعالج المساعد للرياضيات Intel M387 معيار MIL-STD-883 Rev. C. تم اختبار هذا الجهاز الذي يتضمن دورة درجة حرارة بين -55 و 125 درجة مئوية، وختم محكم واحتراق ممتد. تعمل هذه النسخة العسكرية عند 16 ميجا هرتز. كانت هذه النسخة العسكرية متاحة في PGA 68-lead وحزمة مسطحة رباعية. كانت هذه النسخة العسكرية متاحة مقابل 1155 دولارًا أمريكيًا بكميات 100 وحدة لإصدار PGA. [19] كانت نسخة 33 ميجا هرتز من 387DX متاحة ولديها أداء 3.4 ميجا حجر شحذ في الثانية . [20] كانت النسخة التالية المعبأة من معالج الرياضيات المساعد 387DX 16 و 20 و 25 و 33 ميجا هرتز متاحة مقابل 570 دولارًا أمريكيًا و 647 دولارًا أمريكيًا و 814 دولارًا أمريكيًا و 994 دولارًا أمريكيًا على التوالي. [21] تقتصر تعليمات FPTAN وFPATAN في 8087 و80287 على وسيطة في النطاق ±π/4 (±45°)، ولا تحتوي 8087 و80287 على تعليمات مباشرة لوظائف SIN وCOS. [22] [ بحاجة لمصدر كامل ]

بدون معالج مساعد، يقوم 386 عادةً بإجراء العمليات الحسابية ذات الفاصلة العائمة من خلال روتينات برمجية (بطيئة نسبيًا)، يتم تنفيذها في وقت التشغيل من خلال معالج استثناءات برمجي . عندما يتم إقران معالج مساعد للرياضيات مع 386، يقوم المعالج المساعد بإجراء العمليات الحسابية ذات الفاصلة العائمة في الأجهزة، مما يؤدي إلى إرجاع النتائج بشكل أسرع كثيرًا من استدعاء مكتبة برمجية (محاكاة).

يتوافق i387 فقط مع شريحة i386 القياسية، التي تحتوي على ناقل معالج 32 بت. لا يمكن لـ i386SX الأحدث منخفض التكلفة، والذي يحتوي على ناقل بيانات أضيق 16 بت، التفاعل مع ناقل 32 بت الخاص بـ i387. يتطلب i386SX معالجًا مساعدًا خاصًا به، وهو 80387SX ، وهو متوافق مع ناقل بيانات SX الضيق 16 بت. أصدرت شركة Intel الإصدار منخفض الطاقة من المعالج المساعد 387SX. [23]

80487

اي487SX

تم تسويق i487SX (P23N) كمعالج مساعد لوحدات الفاصلة العائمة لأجهزة Intel i486SX . كان يحتوي في الواقع على تنفيذ كامل لـ i486DX . عند تثبيته في نظام i486SX، قام i487 بتعطيل وحدة المعالجة المركزية الرئيسية وتولى جميع عمليات وحدة المعالجة المركزية. اتخذ i487 التدابير اللازمة للكشف عن وجود i486SX ولن يعمل بدون وجود وحدة المعالجة المركزية الأصلية في مكانها. [24] [25] [ فشل التحقق ]

80587

كانت Nx587 هي وحدة FPU الأخيرة لـ x86 التي تم تصنيعها بشكل منفصل عن وحدة المعالجة المركزية، في هذه الحالة Nx586 من NexGen .

انظر أيضا

ملحوظات

  1. ^ تقوم الشركات التي لا تمتلك مصانع بتصميم شريحة وتعتمد على شركة مصنعة لتصنيعها، في حين أن الشركات المصنعة يمكنها القيام بكل من التصميم والتصنيع بنفسها.

مراجع

  1. ^ ويليام كاهان (2 نوفمبر 1990). "حول مزايا مجموعة 8087" (PDF) . ملاحظات الدورة غير المنشورة، قسم علوم الكمبيوتر، جامعة كاليفورنيا في بيركلي . مؤرشف من الأصل (PDF) في 18 يناير 2017.
  2. ^ ويليام كاهان (8 يوليو 1989). "كيف كان ينبغي التعامل مع مشكلة تجاوز/نقصان مكدس Intel 8087" (PDF) . مؤرشف من الأصل (PDF) في 12 يونيو 2013.
  3. ^ جاك ووير (1 نوفمبر 1997). "حوار مع ويليام كاهان".
  4. ^ ديفيد مونيو (مايو 2008). "مصائد التحقق من صحة حسابات الفاصلة العائمة". معاملات ACM للغات البرمجة والأنظمة . 30 (3): 1-41. arXiv : cs/0701192 . doi :10.1145/1353445.1353446. S2CID  218578808.
  5. ^ يتم أخذ الأرقام من أوراق بيانات المعالجات المعنية، وأدلة البرمجة، وأدلة التحسين.
  6. ^ "معالجات الحساب: الماضي والحاضر". www.cpushack.com . 23 سبتمبر 2010 . تم الاسترجاع في 3 مايو 2023 .
  7. ^ Intel (1983). دليل المعالجات الدقيقة والأجهزة الطرفية لشركة Intel. ص 3-25 (iAPX 186/20) و3-106 (iAPX 188/20).
  8. ^ "مجموعة وحدات المعالجة المركزية – الطراز 80187". cpu-info.com . مؤرشف من الأصل في 23 يوليو 2011. استرجاع 14 أبريل 2018 .
  9. ^ "80C187 80-BIT MATH COPROCESSOR" (PDF) . نوفمبر 1992. تم الاسترجاع في 3 مايو 2023 .
  10. ^ يوشيدا، ستايسي، "معالجات الرياضيات المساعدة: إبقاء جهاز الكمبيوتر الخاص بك على أهبة الاستعداد"، شركة إنتل، حلول الحواسيب الصغيرة، سبتمبر/أكتوبر 1990، الصفحة 16
  11. ^ شركة إنتل، "مكون التركيز على المنتج الجديد: معالج دقيق 32 بت مع القليل من المساعدة من بعض الأصدقاء"، حلول إصدارات 32 بت الخاصة، نوفمبر/ديسمبر 1985، الصفحة 13.
  12. ^ شركة إنتل، "تحسين الحاسب الشخصي"، عملية تحسين الحاسب الشخصي، الأمر رقم 245.2، 10-89/75K/AL/GO، أكتوبر 1989، الصفحة 4
  13. ^ Intel Corporation، "تركيز المنتج الجديد: الأنظمة: ترقية وحدة SnapIn 386 لأجهزة الكمبيوتر PS/2"، Microcomputer Solutions، سبتمبر/أكتوبر 1991، الصفحة 12
  14. ^ يوشيدا، ستايسي، "معالجات الرياضيات المساعدة: إبقاء جهاز الكمبيوتر الخاص بك على أهبة الاستعداد"، شركة إنتل، حلول الحواسيب الصغيرة، سبتمبر/أكتوبر 1990، الصفحة 16
  15. ^ موران، توم (16 فبراير 1987). "رقائق لتحسين أداء 386 جهازًا، كما تقول إنتل". إنفوورلد . المجلد 9، العدد 7. ص 5. ISSN  0199-6649.
  16. ^ "مكونات التركيز على المنتج الجديد: محرك الحوسبة 32 بت بأقصى سرعة". حلول . شركة إنتل: 10 مايو-يونيو 1987.
  17. ^ "NewsBit: Intel 80387 متوفر عبر قنوات البيع بالتجزئة". Solutions . Intel Corporation: 1. July–August 1987.
  18. ^ Intel Corporation، "NewsBits: 25 MHZ 80387 Available Through Retail Channels"، Microcomputer Solutions، سبتمبر/أكتوبر 1988، الصفحة 1
  19. ^ Intel Corporation، "التركيز: المكونات: الأجهزة الطرفية العسكرية تدعم المعالج الدقيق M386"، Microcomputer Solutions، مارس/أبريل 1989، الصفحة 12
  20. ^ Lewnes, Ann, "The Intel386 Architecture Here to Stay"، Intel Corporation، Microcomputer Solutions، يوليو/أغسطس 1989، الصفحة 2
  21. ^ شركة إنتل، "تحسين أجهزة الكمبيوتر الشخصية"، عملية تحسين أجهزة الكمبيوتر الشخصية، الأمر رقم 245.2، 10-89/75K/AL/GO، أكتوبر 1989
  22. ^ توثيق Borland Turbo Assembler.
  23. ^ Lewnes, Ann, "The Intel386 Architecture Here to Stay"، Intel Corporation، Microcomputer Solutions، يوليو/أغسطس 1989، الصفحة 2
  24. ^ Intel 487SX في القاموس المجاني على الإنترنت لعلوم الحوسبة
  25. ^ "Intel 80487". www.cpu-world.com . تم الاسترجاع في 9 يونيو 2021 .
  • دليل مطور برامج Intel 64 وIA-32 Architectures المجلد 1: Basic Architecture (PDF) . Intel.
  • كل ما تريد معرفته عن معالجات الرياضيات المساعدة

تم الاسترجاع من "https://en.wikipedia.org/w/index.php?title=X87&oldid=1251538797"
Original text
Rate this translation
Your feedback will be used to help improve Google Translate