هل نحتاج حقًا إلى الكثير من وحدات xPU؟

"في السنوات الأخيرة، تم إصدار إعلانات حول بنيات المعالجات الجديدة كل يوم تقريبًا، مع اختصار مكون من ثلاثة أحرف – TPU، IPU، NPU. ولكن ما الذي يميزهم حقا؟ هل يوجد بالفعل الكثير من بنيات المعالج الفريدة أم أن شيئًا آخر قد حدث؟

"

في السنوات الأخيرة، تم إصدار إعلانات حول بنيات المعالجات الجديدة كل يوم تقريبًا، وتم تقديم اختصار مكون من ثلاثة أحرف -TPU، IPU، NPU. ولكن ما الذي يميزهم حقا؟ هل يوجد بالفعل الكثير من بنيات المعالج الفريدة أم أن شيئًا آخر قد حدث؟

في عام 2018، ألقى جون إل. هينيسي وديفيد أ. باترسون محاضرة تورينج بعنوان "العصر الذهبي الجديد لهندسة الكمبيوتر". إنهم قلقون بشأن وحدة المعالجة المركزية وتطورها، لكن هذا ليس سوى جزء صغير من المعادلة بأكملها. وقال مايكل فرانك، الباحث في Arteris IP ومهندس النظام: "من وجهة نظر وحدة المعالجة المركزية، فإن معظم وحدات xPU هذه ليست معالجات حقيقية." "إنها أشبه بوحدة معالجة الرسومات، وهي أداة تسريع لأحمال العمل الخاصة. ولديهم الكثير من التنوع في الداخل. التعلم الآلي هو نوع من المعالجات، يمكنك تسميتها مسرعات التعلم الآلي بشكل جماعي، ولكنها تعمل على تسريع جزء المعالجة من مجموعة متنوعة.

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

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

الحقيقة هي أن معظم الأسماء تسويقية.

وقال سايمون دافيدمان، الرئيس التنفيذي لشركة Imperas Software: "النقطة المهمة هي أن الناس يستخدمون هذه الأسماء والمختصرات لغرضين مختلفين". "يتم استخدام أحدهما لشرح بنية المعالج، مثل SIMD (بيانات متعددة التعليمات الفردية). أما الآخر فيحدد قطاع التطبيق الذي يعالجه. لذلك يمكن تحديد بنية المعالج، أو ما يشبه الأسماء التجارية لوحدة معالجة الموتر (TPU). إنهم يقومون بتسمية بنياتهم غير المتجانسة أو المتجانسة، وليس المعالجات الفردية.

القليل من التاريخ

قبل أربعين عاما، كانت الأمور أبسط بكثير. في ذلك الوقت كانت هناك وحدة معالجة مركزية (CPU) وكان هناك العديد من المتغيرات منها، لكنها كانت في الأساس عبارة عن معالجات تورينج كاملة مع بنية فون نيومان. ولكل منها مجموعة تعليمات مختلفة تجعلها أكثر كفاءة في مهام معينة، وهناك الكثير من النقاش حول المزايا النسبية لمجموعة التعليمات المعقدة (CISC) ومجموعة التعليمات المخفضة (RISC).

لقد جلب ظهور RISC-V الكثير من الاهتمام إلى ISA. قال أوم من Xilinx: "يريد الناس فهم ISA لأن ISA هو الذي يحدد مدى تحسين المعالج للمهام المحددة". "يمكنهم إلقاء نظرة على قانون الأمن الداخلي وبدء دورة الحساب. إذا كان لدى ISA تعليمات أصلية ويعمل بسرعة 1 جيجا هرتز، فيمكنني مقارنته بمعالج ISA آخر، والذي قد يتطلب تعليماتين لنفس الوظيفة، ولكن المعالج يعمل بسرعة 1.5 جيجا هرتز. أي واحد يجعلني أذهب أبعد من ذلك؟ إنهم يقومون بحسابات رياضية لوظائف مهمة.

هناك طرق متعددة لتعبئة وحدات المعالجة المركزية (CPU). في بعض الأحيان يتم وضع الإدخال/الإخراج أو الذاكرة في نفس الحزمة. يطلق عليهم وحدات التحكم الدقيقة (MCUs).

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

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

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

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

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

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

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

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

بنية التنفيذ

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

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

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

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

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

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

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

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

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

تغيير "مجرد"

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

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

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

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

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

تلخيص

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

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

في السنوات الأخيرة، تم إصدار إعلانات حول بنيات المعالجات الجديدة كل يوم تقريبًا، مع اختصار مكون من ثلاثة أحرف – TPU، IPU، NPU. ولكن ما الذي يميزهم حقا؟ هل يوجد بالفعل الكثير من بنيات المعالج الفريدة أم أن شيئًا آخر قد حدث؟

في عام 2018، ألقى جون إل. هينيسي وديفيد أ. باترسون محاضرة تورينج بعنوان "العصر الذهبي الجديد لهندسة الكمبيوتر". إنهم قلقون بشأن وحدة المعالجة المركزية وتطورها، لكن هذا ليس سوى جزء صغير من المعادلة بأكملها. وقال مايكل فرانك، الباحث في Arteris IP ومهندس النظام: "من وجهة نظر وحدة المعالجة المركزية، فإن معظم وحدات xPU هذه ليست معالجات حقيقية." "إنها أشبه بوحدة معالجة الرسومات، وهي أداة تسريع لأحمال العمل الخاصة. ولديهم الكثير من التنوع في الداخل. التعلم الآلي هو نوع من المعالجات، يمكنك تسميتها مسرعات التعلم الآلي بشكل جماعي، ولكنها تعمل على تسريع جزء المعالجة من مجموعة متنوعة.

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

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

الحقيقة هي أن معظم الأسماء تسويقية.

وقال سايمون دافيدمان، الرئيس التنفيذي لشركة Imperas Software: "النقطة المهمة هي أن الناس يستخدمون هذه الأسماء والمختصرات لغرضين مختلفين". "يتم استخدام أحدهما لشرح بنية المعالج، مثل SIMD (بيانات متعددة التعليمات الفردية). أما الآخر فيحدد قطاع التطبيق الذي يعالجه. لذلك يمكن تحديد بنية المعالج، أو ما يشبه الأسماء التجارية لوحدة معالجة الموتر (TPU). إنهم يقومون بتسمية بنياتهم غير المتجانسة أو المتجانسة، وليس المعالجات الفردية.

القليل من التاريخ

قبل أربعين عاما، كانت الأمور أبسط بكثير. في ذلك الوقت كانت هناك وحدة معالجة مركزية (CPU) وكان هناك العديد من المتغيرات منها، لكنها كانت في الأساس عبارة عن معالجات تورينج كاملة مع بنية فون نيومان. ولكل منها مجموعة تعليمات مختلفة تجعلها أكثر كفاءة في مهام معينة، وهناك الكثير من النقاش حول المزايا النسبية لمجموعة التعليمات المعقدة (CISC) ومجموعة التعليمات المخفضة (RISC).

لقد جلب ظهور RISC-V الكثير من الاهتمام إلى ISA. قال أوم من Xilinx: "يريد الناس فهم ISA لأن ISA هو الذي يحدد مدى تحسين المعالج للمهام المحددة". "يمكنهم إلقاء نظرة على قانون الأمن الداخلي وبدء دورة الحساب. إذا كان لدى ISA تعليمات أصلية ويعمل بسرعة 1 جيجا هرتز، فيمكنني مقارنته بمعالج ISA آخر، والذي قد يتطلب تعليماتين لنفس الوظيفة، ولكن المعالج يعمل بسرعة 1.5 جيجا هرتز. أي واحد يجعلني أذهب أبعد من ذلك؟ إنهم يقومون بحسابات رياضية لوظائف مهمة.

هناك طرق متعددة لتعبئة وحدات المعالجة المركزية (CPU). في بعض الأحيان يتم وضع الإدخال/الإخراج أو الذاكرة في نفس الحزمة. يطلق عليهم وحدات التحكم الدقيقة (MCUs).

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

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

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

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

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

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

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

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

بنية التنفيذ

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

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

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

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

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

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

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

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

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

تغيير "مجرد"

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

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

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

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

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

تلخيص

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

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