بنية نظام غير متجانسة أو عن لقاء وحدة المعالجة المركزية ووحدة معالجة الرسومات

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



ندخل اليوم حقبة جديدة في تطوير الرقائق المسؤولة عن الحوسبة في قلوب أجهزة الكمبيوتر المكتبية والخوادم والأجهزة المحمولة والأجهزة الإلكترونية القابلة للارتداء. من خلال الجمع بين مناهج معالجة المعلومات في وحدة المعالجة المركزية ووحدة معالجة الرسومات ، طورنا بنية جديدة مفتوحة ، والتي بدونها يبدو من الصعب تنفيذ قانون مور نفسه. تلبية HSA - بنية النظام غير المتجانسة.

لحظة من التاريخ


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

في فجر هندسة الكمبيوتر ، كانت وحدات المعالجة المركزية بسيطة إلى حد ما. في الواقع ، جاءت جميع العمليات لإضافة أرقام في نظام ثنائي. عندما طلب منه طرح ما يسمى " رموز عكسية": كانت بسيطة ومناسبة" للحديد "، دون الحاجة إلى أكثر المسرات المعمارية تعقيدًا التي تطرح الطرح" الصريح "للأرقام. لكل طراز كمبيوتر ، تم كتابة البرامج بشكل منفصل حتى عام 1964.


نظام اي بي ام / 360

في عام 1964 ، أصدرت شركة IBM System / 360 ، وهو جهاز كمبيوتر غير طريقة إنشاء المعالجات. على الأرجح ، كان هو الذي تشرف بتقديم مفهوم مثل هندسة النظام. فقط لأنه قبله لم يكن هناك "نظام". والحقيقة هي أنه قبل System / 360 ، عملت جميع أجهزة الكمبيوتر من الخمسينات والستينات فقط مع رمز البرنامج الذي تم كتابته خصيصًا لهم. من ناحية أخرى ، طورت IBM المجموعة الأولى من التعليمات ، والتي تم دعمها في مجموعة متنوعة من التكوينات (والأداء) ، ولكن نفس بنية النظام / 360. بالمناسبة ، في نفس الكمبيوتر ، أصبح البايت لأول مرة 8 بت. قبل ذلك ، في جميع أجهزة الكمبيوتر الشائعة تقريبًا ، كانت تتكون من ستة بت.

كان الابتكار الرئيسي الثاني في الستينيات هو تطوير DEC. في حاسوبهم PDP-8 ، استخدموا بنية بسيطة للغاية في ذلك الوقت ، تحتوي على أربعة سجلات فقط من 12 بت لكل منها وأكثر من 500 كتلة وحدة المعالجة المركزية بقليل. تلك "الترانزستورات" التي تم قياسها بالفعل في السبعينيات بالآلاف والمليارات في العقد الأول من القرن الحادي والعشرين. هذه البساطة وخلق IBM لمفهوم مثل "مجموعة من التعليمات" وتحديد الاتجاه الإضافي لتطوير تكنولوجيا الكمبيوتر.

بدأ ازدهار الإلكترونيات الدقيقة في السبعينيات. بدأ كل شيء بإنتاج أول معالجات أحادية الشريحة: ثم قامت العديد من الشركات بإنتاج الرقائق بموجب ترخيص ، ثم قامت بتحسينها ، بإضافة تعليمات جديدة وتوسيع القدرات.

منذ منتصف السبعينيات ، كان سوق المعالج 8 بت ممتلئًا ، وبحلول نهاية العقد ، ظهرت حلول 16 بت بأسعار معقولة في أجهزة الكمبيوتر ، مما جلب معه بنية x86 ، والتي (على الرغم من التحسينات الكبيرة) لا تزال حية وجيدة. كانت الآفة الرئيسية التي أوقفت تطوير معالجات 16 بت في ذلك الوقت هي "حبس" الشركات المصنعة في إنتاج ما يسمى رقائق دعم للهياكل 8 بت. معا قاموا بصنع ما يسمى فيما بعد جسري "الشمال" و "الجنوب".

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

تم تمرير منتصف ونهاية الثمانينيات تحت شعار الانتقال إلى عنونة ذاكرة 32 بت ونوى معالج 32 بت. عمل قانون مور كما كان من قبل: زاد عدد الترانزستورات ، وزاد تردد الساعة وأداء المعالج "التقريبي".

في عام 1991 ، شاهد معالجات AMD Am386DX و Am386SX الضوء ، والذي كان أداءه مشابهًا للجيل التالي من الأنظمة (486). يعتبر الكثير Am386SX أول تطوير مستقل للشركة ونقطة انطلاق لما يقرب من 15 عامًا من الهيمنة في سوق أجهزة الكمبيوتر المنزلية ومحطات العمل عالية الأداء. نعم ، كان معمارًا استنساخًا لشريحة i368SX ، ولكن كان لديه عملية تقنية أقل ، وكفاءة طاقة أفضل بنسبة 35 ٪ وفي نفس الوقت كان يعمل على تردد ساعة أعلى من سلفه ، لكنه كان أرخص.


كانت التسعينات نفسها غنية للغاية في كل من الأحداث في مجال الإلكترونيات الدقيقة والنمو السريع للسوق. في التسعينات ، بدأت AMD تعتبر أحد اللاعبين الجادين في السوق ، حيث أن معالجاتنا من حيث السعر ونسبة الأداء غالبًا ما تركت منافسيها خارج Intel Pentium ، خاصة في قطاع المنزل. مجموعة موسعة من التعليمات (MMX / 3DNow!) ، ظهور ذاكرة تخزين مؤقت من المستوى الثاني ، انخفاض حاد في تقنية المعالجة ، زيادة في سرعة الساعة ... والآن الألفية الجديدة موجودة بالفعل في الفناء.

في عام 2000 ، تجاوزت معالجات AMD لأول مرة في العالم الخط بتردد 1 جيجاهرتز ، وبعد ذلك بقليل ، اتخذت نفس بنية K7 ارتفاعًا جديدًا - 1.4 جيجاهرتز.

في نهاية عام 2003 ، أصدرنا معالجات جديدة تعتمد على بنية K8 ، والتي تحتوي على ثلاثة ابتكارات مهمة: عنونة ذاكرة 64 بت ، وحدة تحكم مدمجة للذاكرة ، وناقل HyperTransport ، الذي يوفر عرض نطاق مذهل في ذلك الوقت (حتى 3.2 جيجابايت / ثانية).

في عام 2005 ، ظهرت أول معالجات ثنائية النواة (تمتلك Intel نوى بلوريتين منفصلتين على ركيزة واحدة ، وتحتوي AMD على نواتين داخل بلورة واحدة ، ولكن مع ذاكرة تخزين مؤقت منفصلة).

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

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

يمكن تنفيذ GPGPU ، الحوسبة للأغراض العامة على مسرع الرسومات باستخدام معيار مفتوح و OpenCL ، أو لهجة مبسطة إلى حد ما من C.

منذ ذلك الحين ، من الابتكارات الرئيسية في GPU ، يمكننا فقط ذكر مظهر واجهة برمجة تطبيقات Mantle ذات المستوى المنخفض ، والتي تسمح لك بالوصول إلى بطاقات AMD الرسومية حول ذلك على نفس مستوى الوصول إلى مسرعات الرسومات داخل وحدات تحكم PS4 و Xbox One) والزيادة الهائلة في سعة الذاكرة لوحدة معالجة الرسومات في العامين الماضيين.

صورة

هذه هي نهاية القصة ، لقد حان الوقت للانتقال إلى الأكثر إثارة للاهتمام: HSA.

ما هو HSA؟


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

في الوقت نفسه ، HSA هي بنية معالج تجمع بين الحسابات القياسية على نوى وحدة المعالجة المركزية الكلاسيكية ، والحسابات المتوازية الجماعية على وحدات معالجة الرسومات ، وتعمل مع معالجة الإشارات على وحدات DSP ، وتربطها باستخدام الوصول المتماسك إلى ذاكرة الوصول العشوائي. أي أن التاريخ الكامل لإنتاج المعالج والفيديو في HSA يتقارب عند نقطة واحدة: أدى ما يقرب من 50 عامًا من التقدم في مجال الإلكترونيات الدقيقة إلى إنشاء مزيج منطقي من أفضل جوانب الأنظمة المختلفة.

جعل تطوير بنية x86 والمعالجات من الممكن إنشاء وحدات معالج عالية الكفاءة توفر مهامًا مشتركة واستهلاكًا منخفضًا للطاقة.

إن توحيد معالجات التظليل داخل نواة GPU والتبسيط العام للبرمجة لنظام يحتوي على عدد كبير من وحدات التنفيذ المتوازية قد أعطى GPGPU طريقة واستخدام قوة معالجة بطاقات الفيديو في تلك المناطق التي تم فيها استخدام مسرعات الأجهزة المنفصلة سابقًا ، والتي لم تفز بأي حصة سوقية ملموسة بحيث البقاء واقفا على قدميه.



توفر وحدة التحكم في الذاكرة المدمجة وناقل PCIe ونظام الإدخال / الإخراج وصولًا شفافًا للذاكرة لمختلف وحدات HSA.

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

تغطي جميع هذه الوحدات معًا مجموعة كاملة من المهام الحديثة ، ويسمح لك HSA بتعليم البرامج بشفافية وسهولة للعمل مع المجموعة الكاملة من إمكانات الأجهزة المتاحة باستخدام الأدوات الكلاسيكية مثل لغات مثل Java و C ++.

أسباب إنشاء HSA


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

الأول ، من حيث المبدأ ، مفهوم. يريد الجميع أن تعمل الأداة لفترة أطول ، فالحالة لم تكن سميكة مع Big Mac ، ولم يتم تسخينها مثل مقلاة على موقد. يواجه مالكو مراكز البيانات الكثير من المتاعب لإزالة الحرارة وضمان عدم انقطاع الطاقة ، لتحميلها بواط إضافي من حزمة الحرارة يعني زيادة تكلفة خدماتهم. استضافة أكثر تكلفة - المزيد من الإعلانات على الموارد المفضلة لديك ، المزيد من حمل وحدة المعالجة المركزية على الأجهزة ، استهلاك أعلى للطاقة ، عمر بطارية أقل.

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

حسنًا ، تتطلب التطورات الحديثة في مجال المساعدين الأذكياء والمساعدين الافتراضيين وآفاق تطوير الذكاء الاصطناعي اعترافًا طبيعيًا بكلام الإنسان وتعبيرات الوجه والإيماءات ، الأمر الذي يتطلب بدوره زيادة في الأداء المباشر وتحسين عمليات فك التشفير الصوتي والصوتي فيديو مباشر.

سيتم حل جميع هذه المشاكل من خلال بنية أجهزة عالمية يتم تنفيذها في شكل SoC ، وتجمع بين سحر وحدات المعالجة المركزية ووحدات معالجة الرسومات الكلاسيكية ، وتوزع بكفاءة العمليات التسلسلية والمتوازية بين تلك الوحدات القادرة على أداء المهام المقابلة بكفاءة أكبر.

ولكن كيف لتعليم البرمجيات للعمل مع كل هذا الروعة من قدرات الحوسبة؟

الملامح الرئيسية لنظام غير متجانس


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

  • معالجة موحدة لجميع المعالجات ؛
  • تماسك الذاكرة الكاملة ؛
  • العمليات في نظام ذاكرة الصفحة ؛
  • وضع الإرسال المخصص ؛
  • إدارة الطابور على مستوى العمارة ؛
  • دعم لغوي عالي المستوى لمعالجات الحوسبة - GPU ؛
  • تغيير السياق والمهام المتعددة الوقائية.

لا يحتاج مطور التطبيق إلى فهم لغات البرمجة ذات المستوى المنخفض: تتوفر المكونات القياسية ، ولغة وسيطة بسيطة ، وواجهات التفاعل والأجهزة للمطور ، والذاكرة المتماسكة وكيف يتم توزيع المهام بين وحدات الحوسبة بسهولة مخفية "تحت الغطاء".

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

صعوبات OpenCL و C ++ AMP


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

لتسريع كود Java دون إعادة كتابته على OpenCL ، يتم استخدام مكتبة AparApi خاصة (مفتوحة المصدر) ، والتي تسمح لك بتحويل Java bytecode إلى OpenCL مع دعم الحوسبة المتوازية على نواة وحدة المعالجة المركزية ووحدة معالجة الرسومات.

في المستقبل ، من المخطط الانتهاء من Aparapi ، وربطه أولاً بـ HSAIL ، ثم إضافة محسن خاص. في النهاية ، يجب أن يعمل HSA مع تسارع غير متجانس مباشرة من خلال جهاز Java ، شفاف للمستخدم والمبرمج.


لقد قلنا بالفعل أن HSA منصة مفتوحة. يتم توفير واجهات برمجة التطبيقات والمواصفات مجانًا من قبل المطور ، و HSA نفسها مستقلة عن مجموعة التعليمات لوحدة المعالجة المركزية أو وحدة معالجة الرسومات.

لضمان توافق حلول الأجهزة لمختلف البائعين ، أنشأنا مجموعة ISA الخاصة بنا: HSAIL (HSA Intermediate Layer) ، والتي تضمن تشغيل البرنامج بغض النظر عن ما يوجد داخل حل HSA. تدعم الطبقة المتوسطة نفسها العمل مع الاستثناءات ، والوظائف الافتراضية ، ونماذج الذاكرة للغات الحديثة ، لذلك لا يتوقع حدوث مشاكل مع دعم C ++ و Java و .Net ، في حين يمكن للمطورين الوصول إلى الأجهزة مباشرة واستخدام مكتبات التحسين الجاهزة HSA ، التي ستقوم بتوزيع المهام بشكل مستقل وتبسيط الاتصال مع الأجهزة ، وتبسيط عمل المبرمج.



مكون الأجهزة


ليست AMD وحدها على قيد الحياة HSA. من المهم للمطورين أن يعمل الشفرة المكتوبة بشكل جيد بنفس القدر على الأجهزة المختلفة. يستخدم شخص ما لغات برمجة عالية المستوى مثل C ++ أو Java لهذا ، ولكننا نقترح العمل على مستوى أقل. من ناحية ، يمكن تشغيل التطبيقات الكلاسيكية على أجهزة HSA كما لو لم يتغير شيء. ستزود أنظمة التشغيل التطبيقات القديمة بوصول واضح وسهل إلى المعالج والذاكرة ونواة الفيديو. من ناحية أخرى ، يتيح لك HSAIL استخراج كل الطاقة من SoC الجديدة ، ويمكن للمطورين إنشاء تطبيقات عالية الأداء وتوفير الموارد بسهولة كما هو الحال مع حزم نظام التشغيل والأجهزة الكلاسيكية. مؤسسة HSA

الآنهناك سبع شركات هم مؤسسو هذه المنظمة: AMD و ARM و Imagination Technologies و MediaTek و Texas Instruments و Samsung Electronics و Qualcomm®.

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

إيجابيات وسلبيات حلول الأجهزة القائمة على HSA


تسمح لك البنية غير المتجانسة بدمج قدرات وحدة المعالجة المركزية ووحدة معالجة الرسومات ، وهذه هي ميزتها الرئيسية. في الوقت نفسه ، تتولى HSA الطاقة المستهلكة ، دون تحميل المعالج بحسابات أكثر كفاءة للتشغيل على وحدة معالجة الرسومات.

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

غالبًا ما يكون أداء HSA في المهام العامة أعلى من أداء وحدات المعالجة المركزية الكلاسيكية وأعلى من حزمة CPU + GPU نظرًا لحقيقة أنه بغض النظر عن مدى مثالية برامج التشغيل ، فإن نسخ البيانات من الذاكرة المشتركة إلى ذاكرة GPU وإرسال نتائج الحساب مرة أخرى يمكن أن يستغرق وقت أكثر من الحسابات نفسها.

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

Source: https://habr.com/ru/post/ar387439/


All Articles