نظام IBM للفاصلة العائمة السداسية العشرية
| تنسيقات النقطة العائمة |
|---|
| معهد مهندسي الكهرباء والإلكترونيات 754 |
| آخر |
|
| البدائل |
الفاصلة العائمة السداسية عشرية (والتي تسمى الآن HFP بواسطة IBM ) هي تنسيق لترميز الأرقام ذات الفاصلة العائمة تم تقديمه لأول مرة على أجهزة كمبيوتر IBM System/360 ، وتم دعمه على الأجهزة اللاحقة المستندة إلى تلك البنية، [1] [2] [3] بالإضافة إلى الأجهزة التي كانت مخصصة لتكون متوافقة مع تطبيقات System/360. [4] [5]
بالمقارنة مع الفاصلة العائمة IEEE 754 ، فإن تنسيق HFP له دلالة أطول ، وأس أقصر . تحتوي جميع تنسيقات HFP على 7 بتات من الأس مع تحيز 64. يتراوح النطاق الطبيعي للأرقام القابلة للتمثيل من 16 −65 إلى 16 63 (حوالي 5.39761 × 10 −79 إلى 7.237005 × 10 75 ).
يتم تمثيل الرقم بالصيغة التالية: (−1) الإشارة × 0. الدلالة × 16 الأس −64 .
دقة واحدة 32 بت
يتم تخزين رقم HFP بدقة واحدة (يطلق عليه IBM اسم "قصير") في كلمة مكونة من 32 بت:
1 7 24 (العرض بالبتات) س خبرة جزء 31 30 ... 24 23 ... 0 (مؤشر البت) * * تقوم وثائق IBM بترقيم البتات من اليسار إلى اليمين، بحيث يتم تحديد البت الأكثر أهمية كرقم البت 0.
في هذا التنسيق لا يتم إخفاء البت الأولي، ويتم تعيين النقطة الأساسية (السداسية عشرية) على يسار القيمة الدالة (الكسر في وثائق IBM والأشكال).
نظرًا لأن القاعدة هي 16، فإن الأس في هذا النموذج أكبر بحوالي مرتين من المكافئ في IEEE 754، ومن أجل الحصول على نطاق أس مماثل في النظام الثنائي، يلزم وجود 9 بتات أس.
مثال
خذ في الاعتبار ترميز القيمة −118.625 كقيمة عائمة ذات دقة واحدة HFP.
القيمة سلبية، لذا فإن بت الإشارة هو 1.
القيمة 118.625 10 في النظام الثنائي هي 1110110.101 2 . يتم تطبيع هذه القيمة عن طريق تحريك نقطة الأساس إلى اليسار أربعة بتات (رقم سداسي عشري واحد) في كل مرة حتى يصبح الرقم الموجود في أقصى اليسار صفرًا، مما ينتج عنه 0.01110110101 2 . يتم تعبئة الأرقام الموجودة في أقصى اليمين المتبقية بالأصفار، مما ينتج عنه كسر مكون من 24 بتًا بقيمة .0111 0110 1010 0000 0000 0000 2 .
حركت القيمة الطبيعية نقطة الأساس رقمين سداسيين عشريين إلى اليسار، مما أدى إلى مضاعف وأس 16 +2 . تمت إضافة تحيز +64 إلى الأس (+2)، مما أدى إلى +66، وهو 100 0010 2 .
يؤدي الجمع بين الإشارة والأس والتحيز والكسر الطبيعي إلى إنتاج هذا التشفير:
س خبرة جزء 1 100 0010 0111 0110 1010 0000 0000 0000
بعبارة أخرى، الرقم الممثل هو −0.76A000 16 × 16 66 − 64 = −0.4633789… × 16 +2 = −118.625
أكبر عدد يمكن تمثيله
س خبرة جزء 0 111 1111 1111 1111 1111 1111 1111 1111
الرقم الممثل هو +0.FFFFFF 16 × 16 127 − 64 = (1 − 16 −6 ) × 16 63 ≈ +7.2370051 × 10 75
أصغر عدد موجب موحد
س خبرة جزء 0 000 0000 0001 0000 0000 0000 0000 0000
الرقم الممثل هو +0.1 16 × 16 0 − 64 = 16 −1 × 16 −64 ≈ +5.397605 × 10 −79 .
صفر
س خبرة جزء 0 000 0000 0000 0000 0000 0000 0000 0000
يتم تمثيل الصفر (0.0) في شكل طبيعي على هيئة جميع البتات الصفرية، والتي تكون القيمة الحسابية +0.0 16 × 16 0 − 64 = +0 × 16 −64 ≈ +0.000000 × 10 −79 = 0. مع الأخذ في الاعتبار كسر جميع البتات صفر، فإن أي تركيبة من بت الإشارة الموجبة أو السالبة وأس متحيز غير صفري ستعطي قيمة تساوي الصفر حسابيًا. ومع ذلك، فإن الشكل الطبيعي الذي تم إنشاؤه للصفر بواسطة أجهزة وحدة المعالجة المركزية هو جميع البتات صفرية. وهذا صحيح لجميع تنسيقات الدقة العائمة الثلاثة. يمكن أن يؤدي الجمع أو الطرح مع قيم الأس الأخرى إلى فقدان الدقة في النتيجة.
قضايا الدقة
نظرًا لأن القاعدة هي 16، فقد يكون هناك ما يصل إلى ثلاثة بتات صفرية رئيسية في الدلالة الثنائية. وهذا يعني أنه عند تحويل الرقم إلى ثنائي، قد يكون هناك 21 بتًا فقط من الدقة. وبسبب تأثير "الدقة المتذبذبة"، يمكن أن يتسبب هذا في أن تكون بعض الحسابات غير دقيقة للغاية. وقد تسبب هذا في انتقادات كبيرة. [6]
من الأمثلة الجيدة على عدم الدقة تمثيل القيمة العشرية 0.1. ليس لها تمثيل ثنائي أو سداسي عشري دقيق. في التنسيق السداسي عشر، يتم تمثيلها على النحو التالي 0.19999999... 16 أو 0.0001 1001 1001 1001 1001 1001 1001... 2 ، أي:
س خبرة جزء 0 100 0000 0001 1001 1001 1001 1001 1010
يحتوي هذا على 21 بت فقط، في حين أن الإصدار الثنائي يحتوي على 24 بت من الدقة.
ستة أرقام سداسية عشرية من الدقة تعادل تقريبًا ستة أرقام عشرية (أي (6 − 1) log 10 (16) ≈ 6.02). يتطلب تحويل قيمة عشرية عشرية أحادية الدقة إلى سلسلة عشرية ما لا يقل عن 9 أرقام مهمة (أي 6 log 10 (16) + 1 ≈ 8.22) لتحويلها مرة أخرى إلى نفس قيمة الرقم العشري العشري.
دقة مزدوجة 64 بت
تنسيق HFP ذو الدقة المزدوجة (المسمى "طويلًا" بواسطة IBM) هو نفس التنسيق "القصير" باستثناء أن حقل الكسر أوسع ويتم تخزين الرقم ذو الدقة المزدوجة في كلمة مزدوجة (8 بايت):
1 7 56 (العرض بالبتات) س خبرة جزء 63 62 ... 56 55 ... 0 (مؤشر البت) * * تقوم وثائق IBM بترقيم البتات من اليسار إلى اليمين، بحيث يتم تحديد البت الأكثر أهمية كرقم البت 0.
يغطي الأس لهذا التنسيق حوالي ربع النطاق فقط مثل تنسيق IEEE الثنائي المقابل.
14 رقمًا سداسيًا عشريًا من الدقة تعادل تقريبًا 17 رقمًا عشريًا. يتطلب تحويل رقم سداسي عشري مزدوج الدقة إلى سلسلة عشرية ما لا يقل عن 18 رقمًا مهمًا لتحويله مرة أخرى إلى نفس قيمة الرقم السداسي عشري.
دقة ممتدة 128 بت
تمت إضافة تنسيق HFP رباعي الدقة ، الذي أطلقت عليه IBM اسم الدقة الممتدة، إلى سلسلة System/370 وكان متاحًا في بعض طرز S/360 (S/360-85 و-195 وغيرها بناءً على طلب خاص أو محاكاة بواسطة برنامج نظام التشغيل). يكون حقل الكسر ذي الدقة الممتدة أوسع، ويتم تخزين رقم الدقة الممتدة على هيئة كلمتين مزدوجتين (16 بايت):
الجزء ذو الترتيب العالي 1 7 56 (العرض بالبتات) س خبرة كسر (14 رقمًا من الدرجة العليا) 127 126 ... 120 119 ... 64 (مؤشر البت) * الجزء منخفض الترتيب 8 56 (العرض بالبتات) غير مستخدم كسر (من 14 رقمًا من الدرجة المنخفضة) 63 ... 56 55 ... 0 (مؤشر البت) * * تقوم وثائق IBM بترقيم البتات من اليسار إلى اليمين، بحيث يتم تحديد البت الأكثر أهمية كرقم البت 0.
28 رقمًا سداسيًا عشريًا من الدقة تعادل تقريبًا 32 رقمًا عشريًا. يتطلب تحويل HFP بدقة موسعة إلى سلسلة عشرية 35 رقمًا مهمًا على الأقل لتحويلها مرة أخرى إلى نفس قيمة HFP. الأس المخزن في الجزء ذي الترتيب المنخفض أقل بمقدار 14 من الجزء ذي الترتيب المرتفع، ما لم يكن هذا أقل من الصفر.
العمليات الحسابية
العمليات الحسابية المتاحة هي الجمع والطرح، سواء الطبيعية أو غير الطبيعية، والمقارنة. تتم التطبيع المسبق بناءً على فرق الأس. الضرب والقسمة للتطبيع المسبق للقيم غير الطبيعية، وتقصير النتيجة بعد رقم حراسة واحد. هناك عملية نصف لتبسيط القسمة على اثنين. بدءًا من ESA/390، توجد عملية الجذر التربيعي. تحتوي جميع العمليات على رقم حراسة سداسي عشري واحد لتجنب فقدان الدقة. يتم تقصير معظم العمليات الحسابية مثل الآلات الحاسبة البسيطة. لذلك، 1 − 16 −8 = 1. في هذه الحالة، يتم تقريب النتيجة بعيدًا عن الصفر. [7]
IEEE 754 على أجهزة الكمبيوتر المركزية من IBM
بدءًا من S/390 G5 في عام 1998، [8] تضمنت أجهزة الكمبيوتر المركزية من IBM أيضًا وحدات IEEE ثنائية ذات فاصلة عائمة تتوافق مع معيار IEEE 754 للحسابات ذات الفاصلة العائمة . تمت إضافة الفاصلة العائمة العشرية IEEE إلى IBM System z9 GA2 [9] في عام 2007 باستخدام الملي كود [10] وفي عام 2008 إلى IBM System z10 في الأجهزة. [11]
تدعم أجهزة الكمبيوتر المركزية الحديثة من IBM ثلاثة أنظمة أساسية ذات فاصلة عائمة بثلاثة تنسيقات سداسية عشرية (HFP)، وثلاثة تنسيقات ثنائية (BFP)، وثلاثة تنسيقات عشرية (DFP). يوجد وحدتان للفاصلة العائمة لكل نواة؛ واحدة تدعم HFP وBFP، والأخرى تدعم DFP؛ يوجد ملف سجل واحد، FPRs، والذي يحتوي على التنسيقات الثلاثة. بدءًا من z13 في عام 2015، أضافت المعالجات مرفق متجه يتضمن 32 سجل متجه، كل منها بعرض 128 بت؛ يمكن أن يحتوي سجل المتجه على رقمين عائمين بطول 64 بت أو أربعة أرقام عائمة بطول 32 بت. [12] يتم وضع سجلات الفاصلة العائمة التقليدية البالغ عددها 16 سجلًا على سجلات المتجه الجديدة بحيث يمكن معالجة بعض البيانات باستخدام تعليمات الفاصلة العائمة التقليدية أو باستخدام تعليمات المتجه الأحدث.
استخدامات خاصة
يتم استخدام تنسيق IBM HFP في:
- ملفات نقل SAS 5 (.XPT) كما هو مطلوب من قبل إدارة الغذاء والدواء (FDA) لتقديم دراسات طلبات الأدوية الجديدة (NDA)، [13]
- ملفات بيانات GRIB (GRIdded Binary) لتبادل مخرجات نماذج التنبؤ بالطقس ( تنسيق النقطة العائمة أحادي الدقة IEEE في الإصدار الحالي)،
- ملفات بتنسيق GDS II (نظام قاعدة البيانات الرسومية II) ( OASIS هو البديل)، و
- ملفات بتنسيق SEG Y (جمعية الجيوفيزيائيين الاستكشافيين Y) (تمت إضافة الفاصلة العائمة ذات الدقة الفردية IEEE إلى التنسيق في عام 2002). [14]
نظرًا لأن IBM هي المزود الوحيد المتبقي للأجهزة التي تستخدم تنسيق HFP، ونظرًا لأن أجهزة IBM الوحيدة التي تدعم هذا التنسيق هي أجهزة الكمبيوتر المركزية الخاصة بها، فإن القليل من تنسيقات الملفات تتطلب ذلك. أحد الاستثناءات هو تنسيق ملف SAS 5 Transport، الذي تتطلبه إدارة الغذاء والدواء؛ في هذا التنسيق، "يتم تخزين جميع الأرقام ذات الفاصلة العائمة في الملف باستخدام تمثيل IBM المركزي. [...] تستخدم معظم المنصات تمثيل IEEE للأرقام ذات الفاصلة العائمة. [...] لمساعدتك في قراءة و/أو كتابة ملفات النقل، نقدم روتينات للتحويل من تمثيل IEEE (إما كبير أو صغير) إلى تمثيل النقل والعكس مرة أخرى." [13] يتوفر أيضًا كود تنسيق IBM بموجب LGPLv2.1 . [15]
الأنظمة التي تستخدم تنسيق النقطة العائمة الخاص بشركة IBM
- IBM System/360 وخلفاؤه
- ار سي ايه سبكترا 70
- النظام الكهربائي الانجليزي 4
- أجهزة الكمبيوتر الصغيرة من سلسلة GEC 4000
- أجهزة كمبيوتر Interdata 16 بت و32 بت
- سلسلة SDS سيجما
- أجهزة الكمبيوتر الصغيرة العامة للبيانات
- أجهزة كمبيوتر من سلسلة ICL 2900
- أجهزة الحاسوب الرئيسية من سلسلة 7.700 و7.500 من شركة Siemens وخلفائها
القرار الخاص بالفاصلة العائمة السداسية عشرية
تشرح المقالة "هندسة نظام IBM System/360" هذا الاختيار على أنه بسبب "انخفاض تواتر التحويل المسبق والفيض وفقدان الدقة بعد التحويل في إضافة الفاصلة العائمة بشكل كبير من خلال هذا الاختيار". [16] سمح هذا بأداء أعلى لنماذج System/360 الكبيرة، وخفض التكلفة للنماذج الصغيرة. كان المؤلفون على دراية بإمكانية فقدان الدقة، لكنهم افترضوا أن هذا لن يكون مهمًا بالنسبة لمتغيرات الفاصلة العائمة ذات 64 بت. لسوء الحظ، يبدو أن المصممين لم يكونوا على دراية بقانون بنفورد الذي يعني أن نسبة كبيرة من الأرقام ستعاني من انخفاض الدقة.
يقتبس كتاب "هندسة الكمبيوتر" الذي ألفه اثنان من مهندسي نظام/360 دراسة سويني التي أجريت في الفترة من 1958 إلى 1965 والتي أظهرت أن استخدام قاعدة أكبر من 2 قلل بشكل كبير من عدد التحولات المطلوبة للمحاذاة والتطبيع، وخاصة عدد التحولات المختلفة المطلوبة. لقد استخدموا قاعدة أكبر لجعل التنفيذات تعمل بشكل أسرع، وكان اختيار القاعدة 16 طبيعيًا نظرًا لوجود بايتات 8 بت. كان القصد هو استخدام الأرقام العائمة 32 بت فقط للحسابات التي لن تنشر أخطاء التقريب، وسيتم استخدام الدقة المزدوجة 64 بت لجميع الحسابات العلمية والهندسية. كان التنفيذ الأولي للدقة المزدوجة يفتقر إلى رقم حارس للسماح بالتقريب المناسب، ولكن تم تغيير هذا بعد فترة وجيزة من تسليم أول عميل. [17]
انظر أيضا
مراجع
- ^ مبادئ تشغيل نظام IBM/360، منشور IBM A22-6821-6، الطبعة السابعة (13 يناير 1967)، ص 41-50
- ^ مبادئ تشغيل نظام IBM/370، منشور IBM GA22-7000-4، الطبعة الخامسة (1 سبتمبر 1975)، ص 157-170
- ^ z/مبادئ تشغيل الهندسة المعمارية، منشور IBM SA22-7832-01، الطبعة الثانية (أكتوبر 2001)، الفصل 9 وما يليه.
- ^ Xerox Data Systems (أكتوبر 1973). Xerox SIGMA 7 Computer Reference Manyal. ص. 48. تم الاسترجاع في 13 نوفمبر 2020 .
- ^ RCA (مارس 1966). معالجات Spectra 70: 35 45 55 (PDF) . ص. 184. تم الاسترجاع في 13 نوفمبر 2020 .
- ^ Warren Jr., Henry S. (2013) [2002]. "The Distribution of Leading Digits". Hacker's Delight (2 ed.). Addison Wesley - Pearson Education, Inc. ص 385-387. ISBN 978-0-321-84268-8. 0-321-84268-5.
- ^ ESA/390 دعم النقطة العائمة المحسّن: نظرة عامة
- ^ Schwarz, EM; Krygowski, CA (سبتمبر 1999). "وحدة النقطة العائمة S/390 G5". مجلة IBM للبحث والتطوير . 43 (5.6): 707–721. doi :10.1147/rd.435.0707.
- ^ Duale, AY; Decker, MH; Zipperer, H.-G.; Aharoni, M.; Bohizic, TJ (January 2007). "Decimal floating-point in z9: An implementation and testing perspective". مجلة IBM للبحث والتطوير . 51 (1.2): 217–227. CiteSeerX 10.1.1.123.9055 . doi :10.1147/rd.511.0217.
- ^ Heller, LC; Farrell, MS (مايو 2004). "Millicode in an IBM zSeries processing". مجلة IBM للبحث والتطوير . 48 (3.4): 425–434. CiteSeerX 10.1.1.641.1164 . doi :10.1147/rd.483.0425.
- ^ Schwarz, EM; Kapernick, JS; Cowlishaw, MF (يناير 2009). "دعم الفاصلة العائمة العشرية على معالج IBM System z10". مجلة IBM للبحث والتطوير . 53 (1): 4:1–4:10. doi :10.1147/JRD.2009.5388585.
- ^ z/مبادئ تشغيل العمارة
- ^ "تخطيط تسجيل مجموعة بيانات بتنسيق SAS Transport (XPORT)" (PDF) . تم الاسترجاع في 18 سبتمبر 2014 .
- ^ "تنسيق تبادل البيانات SEG Y rev 1، الإصدار 1.0" (PDF) . مايو 2002.
- ^ "الحزمة 'SASxport'" (PDF) . 10 مارس 2020. مؤرشف من الأصل (PDF) في 18 أغسطس 2016. تم الاسترجاع 19 يوليو 2016 .
- ^ أمدال، جين؛ بلاو، جيريت؛ بروكس، الابن، فريدريك. "هندسة نظام IBM/360". مجلة IBM للبحث والتطوير . 1964 : 87. تم الاسترجاع في 4 سبتمبر 2023 .
- ^ Blaauw, Gerrit A.; Brooks, Frederick P. (1997). Computer Architecture (الطبعة الأولى). Reading, Massachusetts: Addison-Weslet. ISBN 0-201-10557-8.
قراءة إضافية
- سويني، دي دبليو (1965). "تحليل إضافة الفاصلة العائمة". مجلة أنظمة آي بي إم . 4 (1): 31-42. doi :10.1147/sj.41.0031.
- تومايكو، ج. (صيف 1995). "مشكلات الفاصلة العائمة في نظام 360". حوليات تاريخ الحوسبة في معهد مهندسي الكهرباء والإلكترونيات . 17 (2): 62-63. doi :10.1109/MAHC.1995.10006. ISSN 1058-6180.
- Harding, LJ (1966)، "خصائص نظام النقطة العائمة 360"، وقائع SHARE 27، 8-12 أغسطس 1966 ، تم تقديمها في SHARE XXVII، تورنتو، كندا doi:10.5281/zenodo.10566524.
- Harding, LJ (1966)، "تعديلات نظام النقطة العائمة/360"، وقائع SHARE 27، 8-12 أغسطس 1966 ، تم تقديمها في SHARE XXVII، تورنتو، كندا doi:10.5281/zenodo.10566780.
- Harding, LJ (1966)، "التعديل المقترح لضرب النقطة العائمة"، التغيير الهندسي المقترح لشركة IBM Corporation، doi:10.5281/zenodo.10567044.
- أندرسون، ستانلي ف.؛ إيرل، جون ج.؛ جولدشميت، روبرت إليوت؛ باورز، دون م. (يناير 1967). "نموذج IBM System/360 91: وحدة تنفيذ النقطة العائمة". مجلة IBM للبحث والتطوير . 11 (1): 34-53. doi :10.1147/rd.111.0034.
- Padegs, A. (1968). "الجوانب البنيوية لنموذج System/360 85، III: امتدادات لهندسة النقطة العائمة". مجلة أنظمة IBM . 7 (1): 22–29. doi :10.1147/sj.71.0022.
- شوارتز، إي إم؛ سيجال، إل؛ ماكفيرسون، تي جيه (يوليو 1997). "وحدة فاصلة عائمة CMOS لخادم المؤسسة الموازي S/390 G4". مجلة IBM للبحث والتطوير . 41 (4.5): 475-488. doi :10.1147/rd.414.0475.
