فيرمي (معمارية دقيقة)

فيرمي هو الاسم الكودي لبنية دقيقة لوحدات معالجة الرسوميات صممتها شركة إنفيديا، وطُرحت لأول مرة في الأسواق في أبريل 2010، لتكون خلفاً لبنية "تسلا" الدقيقة. وتُعد البنية الأساسية المستخدمة في سلسلتي "جي فورس 400" و"جي فورس 500". صُنعت جميع وحدات معالجة الرسوميات المكتبية من فئة فيرمي بتقنية 40 نانومتر، بينما صُنعت الوحدات المحمولة بتقنيتي 40 نانومتر و28 نانومتر . وتُعد فيرمي أقدم بنية دقيقة من إنفيديا تتلقى دعماً لواجهة برمجة تطبيقات الرسوميات من مايكروسوفت "دايركت ثري دي 12" بمستوى المزايا 11.

تلت بنية "كيبلر" بنية فيرمي، واستُخدمت جنباً إلى جنب مع كيبلر في سلاسل "جي فورس 600" و"جي فورس 700" و"جي فورس 800"، واقتصر استخدامها في السلسلتين الأخيرتين على وحدات معالجة الرسوميات الخاصة بالحوسبة المحمولة.

وفي سوق محطات العمل، استُخدمت فيرمي في سلسلة "إنفيديا كوادرو x000"، وطرازات "كوادرو إن في إس"، وفي وحدات الحوسبة "إنفيديا تسلا".

سُميت البنية تيمناً بالعالم الفيزيائي الإيطالي إنريكو فيرمي.

 نظرة عامة 
تصغير|يسار|بطاقة إنفيديا جي فورس جي تي إكس 480 من سلسلة بطاقات جي فورس 400؛ وهي الإصدار الأول الذي تضمن بنية فيرمي الدقيقة (GF100-375-A3).
تصغير|يسار|شكل 1. بنية إنفيديا فيرميدلالات الألوان في الأشكال: البرتقالي - الجدولة والإرسال؛ الأخضر - التنفيذ؛ الأزرق الفاتح - السجلات والذاكرة المخبئية.
تصغير|صورة مجهرية لرقاقة المعالج جي إف 100 الموجود داخل بطاقات جي فورس جي تي إكس 470
تتميز وحدات معالجة الرسوميات من فئة فيرمي باحتوائها على 3 مليارات ترانزستور، ويظهر مخططها الهيكلي في الشكل 1.
 المعالج المتعدد المتدفق: يتكون من 32 نواة كودا (انظر أقسام المعالج المتعدد المتدفق ونواة كودا).
 مجدول جيجا ثريد العام: يوزع كتل الخيوط البرمجية على مجدولي خيوط المعالجات المتعددة المتدفقة ويدير عمليات تبديل السياق بين الخيوط أثناء التنفيذ (انظر قسم جدولة الوارب).
 واجهة المضيف: تربط وحدة معالجة الرسوميات بالمعالج المركزي عبر مسرى بي سي آي إكسبريس الإصدار الثاني (بذروة نقل تصل إلى 8 جيجابايت/ثانية).
 ذاكرة الوصول العشوائي الحركية: تدعم ما يصل إلى 6 جيجابايت من ذاكرة GDDR5 بفضل قدرة العنونة بمعدل 64 بت (انظر قسم بنية الذاكرة).
 تردد الساعة: 1.5 جيجاهرتز (لم تعلن إنفيديا عن هذا الرقم، لكنه تقدير من شركة إنسايت 64).
 ذروة الأداء: 1.5 تيرافلوبس.
 تردد الذاكرة العامة: 2 جيجاهرتز.
 عرض نطاق الذاكرة: 192 جيجابايت/ثانية.
 دعم فك ترميز الفيديو عالي الدقة بتنسيق إتش 264.

 المعالج المتعدد المتدفق 
يحتوي كل معالج متعدد متدفق على 32 نواة كودا ذات دقة أحادية، و16 وحدة تحميل وتخزين، وأربع وحدات وظائف خاصة، وكتلة سعة 64 كيلوبايت من الذاكرة عالية السرعة المدمجة (انظر قسم المستوى الأول والذاكرة المشتركة)، وواجهة للذاكرة المخبئية من المستوى الثاني.

 وحدات التحميل والتخزين 
تسمح بحساب عناوين المصدر والوجهة لـ 16 خيطاً برمجياً في كل دورة ساعة، وتقوم بتحميل وتخزين البيانات من وإلى الذاكرة المخبئية أو ذاكرة الوصول العشوائي الحركية.

 وحدات الوظائف الخاصة 
تنفذ التعليمات المتسامية مثل الجيب، وجيب التمام، والمقلوب، والجذر التربيعي. تنفذ كل وحدة وظائف خاصة تعليمة واحدة لكل خيط في كل دورة ساعة؛ بينما يستغرق تنفيذ "الوارب" ثماني دورات ساعة. ينفصل خط أنابيب هذه الوحدات عن وحدة الإرسال، مما يسمح لوحدة الإرسال بإصدار تعليمات لوحدات تنفيذ أخرى أثناء انشغال وحدات الوظائف الخاصة.

 نواة كودا 
 وحدة الحساب والمنطق الصحيحة 
تدعم الدقة الكاملة بمعدل 32 بت لجميع التعليمات، بما يتوافق مع متطلبات لغات البرمجة القياسية. كما جرى تحسينها لتدعم بكفاءة عمليات 64 بت في طرازات محطات العمل والخوادم، ولكنها قُيدت تقنياً في النسخ الموجهة للمستهلكين.

 وحدة الفاصلة المتحركة 
تطبق معيار الفاصلة المتحركة الجديد IEEE 754-2008، وتوفر تعليمة الضرب والجمع الموحد لكل من الحسابات ذات الدقة الأحادية والمزدوجة. ويمكن تنفيذ ما يصل إلى 16 عملية ضرب وجمع موحد ذات دقة مزدوجة لكل معالج متعدد متدفق في كل دورة ساعة.

 الضرب والجمع الموحد 
تنفذ عملية الضرب والجمع الموحد عمليتي الضرب والجمع في خطوة تقريب نهائية واحدة، دون فقدان الدقة في عملية الجمع. وتُعد هذه العملية أكثر دقة من تنفيذ العمليتين بشكل منفصل.

 جدولة الوارب 
تستخدم بنية فيرمي مجدول وارب موزعاً ذا مستويين.

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

تتطلب عمليات الفاصلة المتحركة ذات الدقة 64 بت استخدام عمودي التنفيذ الأولين معاً، لذا فهي تعمل بنصف سرعة عمليات 32 بت.

 مجدول الوارب المزدوج 
على مستوى المعالج المتعدد المتدفق، يوزع كل مجدول وارب مجموعات من 32 خيطاً برمجياً على وحدات التنفيذ الخاصة به. يحتوي كل معالج على مجدولين ووحدتي إرسال تعليمات، مما يسمح بإصدار وتنفيذ مجموعتي وارب في وقت واحد. يختار المجدول المزدوج مجموعتي وارب، ويرسل تعليمة واحدة من كل مجموعة إلى مجموعة مكونة من 16 نواة، أو 16 وحدة تحميل وتخزين، أو 4 وحدات وظائف خاصة.
يمكن إرسال معظم التعليمات بشكل مزدوج؛ مثل تعليمتين للأعداد الصحيحة، أو تعليمتين للفاصلة المتحركة، أو مزيج من تعليمات الأعداد الصحيحة والفاصلة المتحركة والتحميل والتخزين ووحدات الوظائف الخاصة. ولا تدعم تعليمات الدقة المزدوجة الإرسال المزدوج مع أي عملية أخرى.

 الأداء 
تُحسب قوة المعالجة النظرية للدقة الأحادية لوحدة معالجة الرسوميات فيرمي بوحدة جيجا فلوبس كالتالي: 2 (عمليتان لكل تعليمة ضرب وجمع موحد لكل نواة كودا في الدورة) × عدد نوى كودا × تردد المظلل (بالجيجاهرتز). يشار إلى أن الجيل السابق "تسلا" كان بإمكانه إصدار تعليمات مزدوجة (MAD+MUL) لنوى كودا ووحدات الوظائف الخاصة بالتوازي، لكن فيرمي فقدت هذه القدرة لأنها لا تستطيع إصدار سوى 32 تعليمة في الدورة لكل معالج متعدد متدفق، وهو ما يبقي الـ 32 نواة كودا ممتلئة تماماً. وبناءً عليه، لا يمكن استغلال وحدات الوظائف الخاصة للوصول إلى أكثر من عمليتين لكل نواة كودا في الدورة.

تبلغ قوة المعالجة النظرية للدقة المزدوجة في فيرمي نصف أداء الدقة الأحادية في رقاقات GF100/110. ومع ذلك، فإن هذه القوة متاحة عملياً فقط في بطاقات إنفيديا كوادرو وإنفيديا تسلا المهنية، بينما تم تقييد بطاقات جي فورس الموجهة للمستهلكين لتصل إلى الثمن (12.5%) فقط.

 الذاكرة 
ذاكرة مخبئية من المستوى الأول لكل معالج متعدد متدفق، وذاكرة مخبئية موحدة من المستوى الثاني تخدم جميع العمليات (التحميل، التخزين، والأنسجة).

 السجلات 
يحتوي كل معالج متعدد متدفق على 32 ألف سجل بسعة 32 بت. يمتلك كل خيط حق الوصول إلى سجلاته الخاصة فقط ولا يمكنه الوصول إلى سجلات الخيوط الأخرى. أقصى عدد من السجلات يمكن استخدامه بواسطة نواة كودا هو 63 سجلاً. يتناقص عدد السجلات المتاحة تدريجياً من 63 إلى 21 مع زيادة عبء العمل (وبالتالي زيادة متطلبات الموارد) حسب عدد الخيوط. تتمتع السجلات بعرض نطاق ترددي عالٍ جداً يصل إلى حوالي 8000 جيجابايت/ثانية.

 المستوى الأول والذاكرة المشتركة 
ذاكرة مدمجة يمكن استخدامها إما لتخزين البيانات المخبئية للخيوط الفردية (في حال فيض السجلات) أو لمشاركة البيانات بين عدة خيوط (الذاكرة المشتركة). يمكن تهيئة هذه الذاكرة البالغة سعتها 64 كيلوبايت إما كـ 48 كيلوبايت ذاكرة مشتركة مع 16 كيلوبايت ذاكرة مخبئية من المستوى الأول، أو العكس. تسمح الذاكرة المشتركة للخيوط داخل نفس الكتلة بالتعاون، وتسهل إعادة استخدام البيانات المدمجة، وتقلل بشكل كبير من حركة البيانات خارج الشريحة. توفر هذه الذاكرة وصولاً بمدة زمنية منخفضة (10-20 دورة) وعرض نطاق ترددي عالٍ جداً (1600 جيجابايت/ثانية). وقد أشار ديفيد باترسون إلى أن هذه الذاكرة المشتركة تستخدم فكرة المذكرة المحلية.

 الذاكرة المحلية 
تُستخدم الذاكرة المحلية كموقع لتخزين السجلات "الفائضة". ويحدث فيض السجلات عندما تتطلب كتلة الخيوط مساحة تخزين للسجلات أكبر مما هو متاح في المعالج المتعدد المتدفق. وتُستخدم الذاكرة المحلية فقط لبعض المتغيرات التلقائية، وعموماً، يظل المتغير التلقائي في السجل ما لم تكن هناك مصفوفات لا يمكن للمترجم تحديد فهرسها، أو هياكل كبيرة تستهلك مساحة كبيرة.

 الذاكرة المخبئية من المستوى الثاني 
ذاكرة مخبئية موحدة بسعة 768 كيلوبايت، مشتركة بين جميع المعالجات الـ 16، تخدم جميع عمليات التحميل والتخزين من وإلى الذاكرة العامة، بما في ذلك النسخ من وإلى المعالج المضيف، وطلبات الأنسجة. كما تطبق هذه الذاكرة العمليات الذرية المستخدمة لإدارة الوصول إلى البيانات المشتركة بين كتل الخيوط.

 الذاكرة العامة 
يمكن لجميع الخيوط الوصول إلى الذاكرة العامة (ذاكرة الفيديو) مباشرة، وكذلك النظام المضيف عبر مسرى بي سي آي إكسبريس. وتتميز بمدة زمنية عالية تتراوح بين 400 و800 دورة ساعة.

 فك ضغط وضغط الفيديو 
انظر إنفيديا إن في ديك (المعروف سابقاً باسم NVCUVID) بالإضافة إلى إنفيديا بيور فيديو. تقنية إنفيديا إن في إنك لم تكن متاحة بعد، بل قُدمت في الجيل التالي "كيبلر".

 رقاقات فيرمي 
 جي إف 100
 جي إف 104
 جي إف 106
 جي إف 108
 جي إف 110
 جي إف 114
 جي إف 116
 جي إف 117
 جي إف 119

 انظر أيضاً 

 أدرينو
 كودا
 قائمة وحدات معالجة الرسوميات من إنتاج إنفيديا
 واجهة توصيل قابلة للتوسع

 المراجع 

 عام 

 N. Brookwood, "NVIDIA Solves the GPU Computing Puzzle."
 P.N. Glaskowsky, "NVIDIA’s Fermi: The First Complete GPU Computing Architecture."
 N. Whitehead, A. Fit-Florea, "Precision & Performance: Floating Point and IEEE 754 Compliance for NVIDIA GPUs.", 2011.

 R. Farber, "CUDA Application Design and Development," Morgan Kaufmann, 2011.
 NVIDIA Application Note "Tuning CUDA applications for Fermi".

 وصلات خارجية 

 بنية إنفيديا فيرمي على أورانج أول سوليوشنز 

تصنيف:بنية إنفيديا الدقيقة
تصنيف:بطاقات عرض مرئي