البنى التفرعية
بني تفرعيه
Parallel architecture -
سيرا أستور- فيصل العباس
النيسبة المتعددة multi-threading
المعالجات المتعددة النوى multi-cores
الحاسوب ذو البنية التفرعية/المتوازية parallel architecture هو منظومة مكونات وعناصر معالجة تتعاون لحل مسألة ما بسرعة. الطريقة التقليدية لزيادة أداء منظومات الحواسيب هي استعمال معالِجات متعددة تتعاون معاً لحل المسائل بسرعة، ويمكن لها أن تعمل على التوازي لتقبُّل أعباء معيَّنة، وهو ما يُعرف بالمعالجة المتوازية parallel processing، ويُقال عن الحاسوب عندئذٍ إنه ذو بنية تفرعية أو متوازيةٍ.
أظهرت المعالجة التفرعية/المتوازية مجالاً واعداً لتحقيق متطلبات الحوسبة المعقدة والحوسبة في الزمن الحقيقي في مختلف التطبيقات التي تتطلب السرعة في الإنجاز. وقد شاع استخدام البنى التفرعية وتعمقت البحوث فيها حول العالم بهدف تطوير صيغ وبنى جديدة لها. وكانت سرعة التنفيذ هي الدافع الرئيس للتطوير، وشملت النواحي التالية: وحدات المعالجة Processing Elements (PE) أو المعالجات، وعددها، وشبكات الاتصال التي تربط بعضها ببعض، وآلية الاتصال بينها، وكذلك ترتيب وحدات المعالجة ووحدات الذاكرة، وآلية اتصال مختلف وحدات المعالجة والذاكرة ووحدات الإدخال والإخراج. وتؤدي البنى الداخلية لوحدات المعالجة دوراً مهماً في البنى التفرعية للحواسيب. وقد شاع في هذا الإطار استخدام المعالِجات المتعددة المتناظرة Symmetric Multiprocessors (SMP).
ويشهد مجال تصميم المعالجات المتوازية حالياً انعطافة تقانية تتطلب تغييرات جذرية في التقنيات التقليدية بسبب وصولها إلى حدودها القصوى؛ ولذلك اعتمدت مؤخراً تقنيات النيسبة المتعددة multi-threading والمعالجات المتعددة النوى multi-core processors الحديثة نسبياً لتحقيق تعاظم الأداء المطلوب في التطبيقات الحديثة.
تعتمد تقنية النيسبة المتعددة على تنفيذ عدد من النياسب تتبع برنامجاً واحداً أو أكثر من برنامج بطريقة متسايرة. وتتطلب هذه التقنية دعماً عتادياً في المعالج يتمثّل- في بعض الأنواع -بمضاعفة أجزاء من موارده الفيزيائية، كما في تقنية النيسبة المتعددة في آن معاً (المتآونة) (SMT) Simultaneous Multi-Threading. أما التقنية المتعددة النوى فتعتمد على مضاعفة كامل المعالج الفيزيائي على رقاقة إلكترونية وحيدة تمكّن البرامج من العمل بطريقة التوازي الصريح Explicit.
طُوّرت في العقود الأخيرة بنى تفرعية عديدة، لهذا يصعب إيجاد آلية تصنيف واحدة لها، لأن معظمها يتشارك في كثير من الصفات والمزايا. ويمكن تمييز معظم البنى التفرعية للحواسيب وفق التصنيفات الأولية التالية: تصنيف فلين Flynn، وتصنيف يعتمد طريقة ترتيب الذاكرة في وحدات المعالجة PE، وتصنيف يعتمد طرائق الربط البيني لوحدات المعالجة ونسيقات الذاكرة memory modules، وتصنيف يعتمد طبيعة وحدات المعالجة PE وخواصها، وأصناف أخرى لها بنى تفرعية خاصة.
1- تصنيف فلين:
اقترح عالم الرياضيات فون نيومن Von Neumann عام 1945 نموذج حوسبة يعتمد على البرنامج المخزّن stored-program ويتألف من وحدات رئيسة: هي وحدة المعالجة المركزية Central Processing Unit (CPU) ووحدة الإدخال و الإخراج I/O unit والذاكرة الرئيسة (الشكل 1-آ). تتألف وحدة المعالجة المركزية من وحدة حساب ومنطقALU ووحدة تحكم CU. يتألف البرنامج في هذا النموذج من توالي التعليمات المخزّنة تسلسلياً في ذاكرة الحاسوب، وتنفذ واحدة تلو الأخرى بطريقة خطية وباستخدام سياق تحكمي وحيد. يُعدّ هذا النموذج أساس تصميم منظومات الحواسيب التقليدية، والتي يُنظَر إليها على أنها آلة تتابعية تتطلب أن يُوَصِّف المبرمِج خوارزميات البرامج المصمّمة لها كمتتالية من التعليمات التسلسلية. وتقوم المعالجات بتنفيذ تعليمات الآلة الخاصة بالتتابع وبتعليمة واحدة في لحظة معينة. تُنفَّذ كل تعليمة على مرحلتين (شكل 1-ب). يجلب المعالج PE التعليمات والمعطيات من الذاكرة الرئيسةmain memory، ويعالجها كما تنص عليه التعليمة، ثم يحفظ النتائج في الذاكرة بعد انتهاء المعالجة.
وفي عام 1972 قدم مايكل فلين Michael J. Flynn تصنيفاً عاماً للمعالجات المتوازية اعتماداً على طريقة تدفق التعليمات instruction streams والمعطيات data streams، وهما خطوتان رئيستان في تنفيذ البرامج كما يبين الشكل (1). ويشار عادة إلى التعليمات باسم دفق التعليمات التي ترد من الذاكرة الرئيسة إلى المعالج PE. ويشار إلى المعطيات باسم دفق المعطيات التي ترد من المعالج وإليه. واعتماداً على ذلك، صنّف فلين الحواسيب في أصناف أربعة رئيسة وفق إمكانات المعالجة المتوازية المتاحة فيها:
الشكل (1): أ- بنيان الحاسوب المقترح من فون نيومن، ب-دفق المعطيات ودفق التعليمات. |
أ-تعليمة مفردة -دفْق معطيات مفرد Single Data Stream - Single Instruction (SISD): تكون الحواسيب من هذا الصنف أحادية المعالج، وهي حواسيب تتابعية ولا تستطيع تنفيذ أية عمليات على التوازي. وكل الحواسيب التي لها هذا المخطط كما في الشكل (1) تندرج تحت هذا الصنف، ويبين الشكل (2) تمثيلاً وظيفياً بديلاً عنها.
الشكل (2) بنية حاسوب ذي تعليمة مفردة ودفق معطيات مفرد SISD |
ب-تعليمة مفردة - دفْق معطيات متعدد Single Instruction - Multiple Data Stream (SIMD): يبين الشكل (3) البنية العامة لهذا الصنف، ولهذه البنية دفق تعليمات وحيد لمعالجة كامل المعطيات، وفيها تتحكم وحدة تحكم وحيدة بعدة وحدات أو معالجات تنفيذ. يزود كل معالج تنفيذ بذاكرة محلية لحفظ المعطيات التي سيعالجها، وتنفذ التعليمة الصادرة عن وحدة التحكم في معالجات التنفيذ جميعها، في حين يعالج كل منها معطياته المحلية. يمكن لوحدات التنفيذ هذه أن يتواصل بعضها مع بعض عند الضرورة. ويقسم هذا الصنف من الحواسيب إلى مجموعتين مختلفتين وفقاً لشبكة الربط البينية للمعالجات هما المعالِجات المُتَّجِهية vector والمعالجات الصفيفية array.
الشكل (3) البنية العامة للحواسيب ذوات التعليمة المفردة، دفْق المعطيات المتعدد SIMD |
ج- تعليمات متعددة - دفْق معطيات مفرد Multiple Instructions - Single Data Stream (MISD): تُرْسَل التعليمات متتاليةً إلى مجموعة من المعالجات، بحيث ينفِّذ كل منها تتالي تعليمات مختلفاً عن غيره (الشكل 4) لم تُنفَّذ هذه البنية أبداً ولكن يمكن عدّ الحواسيب المتواردة pipelining من هذا الصنف.
الشكل (4) البنية العامة للحواسيب ذوات التعليمات المتعددة ودفْق المعطيات المفرد MISD. |
د- تعليمات متعددة - دفْق معطيات متعدد Multiple Instructions - Multiple Data Stream (MIMD): تعد هذه البنية من أكثر البنى شيوعاً واستخداماً، وتتألف من عدد من المعالجات كل منها قادر على تنفيذ دفق تعليمات على معطيات مستقلة (الشكل 5). تتشارك عادة المعالجات المتواردة، مثل شبكات الاتصال ووحدات الادخال والاخراج ومكتبات البرامج وقواعد المعطيات. إنّ تعدد المعالجات في هذه البنية يحسِّن أداء الحاسوب، ويحسِّن وثوقيته، وذلك لأن نظام التشغيل يتحكم بجميع المعالجات. تقع منظومات المعالجات المتعددة النوى، والمعالجات المتعددة المتناظرة SMP، والعناقيد ومنظومات النفاذ اللامُنتَظَم إلى الذاكرة Non-Uniform Memory Access (NUMA) ضمن هذا الصنف.
الشكل (5) البنية العامة للحواسيب ذوات التعليمات المتعددة ودفق المعطيات المتعدد. |
2- التصنيف وفقا لترتيب الذاكرة والاتصال بالمعالجات:
تندرج البنى التفرعية وفق هذا التصنيف في فئتين: ذات الذاكرة المشتركة وذات الذاكرة الموزعة، وكل منهما تشكل جزءاً من البنى التفرعية ذات التعليمات المتعددة ودفق المعطيات المتعدد MIMD.
3- طريقة الربط البيني للمعالجات ومجتزآت الذاكرة:
تصنف البنى التفرعية وفقاً لطرائق الربط /شبكة الربط التي تسيٍّر الاتصالات بين مختلف المعالجات في البنية، ويخص هذا التصنيف البنى MIMD حيث تحتوي جميعها على معالجات متعددة وعلى العديد من نسيقات الذاكرة. تتضمن شبكات الاتصالات البينية هذه: الشبكة الخطية linear، والشبكة الوحيدة المسرى المشترك shared single bus، والشبكة ذات المسارات المتعددة المشتركة shared multiple buses، والمقاطع crossbars، والحلقات rings. تختلف هذه البنى، فمنها ذات بنى توصيل ساكن static مثل الشبكة الخطية والحلقة والنجمي، أو وحيدة المسرى المشترك أو متعددة المسارات أو متقاطعة ديناميكية. يتحكم النظام في إعادة تشكيلها لتسهيل الاتصال وتيسيره. يبين الشكل (6) بعض هذه التوصيلات وتشكيلاتها.
الشكل (6) طرائق الربط البيني للمعالجات مع نسيقات الذاكرة: (أ- خطي، ب- وحيد المسرى، ج- متعدد المساري ، د- متقاطع، هـ-نجمي، و- حلقي). |
4- تصنيف البنى وفقاً لوحدات المعالجة:
تصنف البنى التفرعية أيضاً وفقاً لطبيعة وحدات المعالجة PE/المعالجات فيها وبنيتها. أكثر المعالجات استخداماً هي المعالجات ذات مجموعة التعليمات المعقدة Complex Instruction Set Computers (CISC) وذات مجموعة التعليمات المخفضة Reduced Instruction Set Computers (RISC). لكل من الصنفين مزايا ومساوئ تؤثر في أداء الحواسيب. إضافة إلى ذلك ثمة بنى خاصة للمعالجات هي التوارد. وجميع هذه البنى تتبع للتصنيف MIMD السابق الذكر.
تصنٍّف كلُّ الحواسيب المتوازية الهدفَ تقريباً وفق النموذج MIMD، ويمكن تقسيم تنظيمات MIMD إلى فروع وفق تنظيم الذاكرة فيها، وذلك بحسب وجهة نظر تنظيم الذاكرة الفيزيائية ووجهة نظر مبرمج هذه الذاكرة. وفيما يخص تنظيم الذاكرة الفيزيائية، يمكن تمييز حواسيب ذات ذاكرة فيزيائية مشتركة، تسمى أيضاً معالجات متعددة multiprocessors، وحواسيب ذات ذاكرة فيزيائية موزعة، وتسمى أيضاً الحواسيب المتعددة multi-computers، وتعتمد بعض الحواسيب على نموذج مختلط كاستخدام ذاكرة مشتركة افتراضية على ذاكرة فيزيائية موزعة.
1- الحواسيب ذات الذاكرة الموزعة Distributed Memory Machines (DMM):
تتألف هذه الحواسيب من عناصر معالجة (تسمى العقد)، وشبكة اتصال تربط العقد بعضها ببعض، وتدعم نقل المعطيات بين المعطيات وبين هذه العقد. العقدة هي وحدة مستقلة مؤلفة من معالج وذاكرة محلية، وفي بعض الأحيان تتألف من عناصر طرفية. يخزَّن البرنامج في الذاكرة المحلية لعقدة أو أكثر، وتعّد كل الذواكر ذواكر خصوصية private، ويمكن للعقدة التواصل المباشر مع ذاكرتها الخصوصية المحلية. عندما تحتاج عقدة معالج إلى معطيات ذاكرة عقدة أخرى لتنفيذ حسابات معينة تستخدم آلية تبادل الرسائل message passing عبر شبكة الاتصال؛ لذلك فإن منظومات DMM تبرمج عموماً باستخدام نموذج تبادل الرسائل البرمجي المعتمد على الاتصال بين الإجرائيات المتعاونة الشكل (7).
الشكل (7) بنية الحواسيب المتعددة المعالجات وذات الذاكرة الموزعة. |
تشبه بنية هذا النموذج في كثير من النواحي شبكات محطات العمل Network of Workstations (NOW) التي تتصل فيها عدة محطات عمل تقليدية بعضها مع بعض عن طريق شبكة اتصال محلية LAN. ومن أهم الفروق بينهما أن شبكات اتصال النموذج DMM هي نموذجياً أسرع، وتقدم عرض حزمة أكبر، وذات تأخير أقل، وهي أكثر تخصصاً. يسمى وصل عدة حواسيب كاملة بوساطة شبكات اتصال مخصصة غالباً بالعناقيد clusters، وتعتمد على استخدام حواسيب قياسية، وشبكات اتصال قياسية طبوغرافياً. يبرمج العنقود كاملاً كوحدة واحدة. من جهة أخرى يكمن الفارق الرئيسي بين المنظومات العنقودية والمنظومات الموزعة distributed systems في أن العقد في المنظومات العنقودية تستخدم نظام التشغيل ذاته، ولا يمكن عنونتها عادة بطريقة منفردة، وبدلاً من ذلك يُستخدام مُجدوِل عمل خاص بها. يمكن وصل عدة منظومات عنقودية بعضها ببعض عن طريق المنظومات «الشبكية» grid systems باستخدام نظام تشغيل وسطي middleware. وهذا ما يسمح بتعاون منسّق لعدد من العناقيد بعضها مع بعض؛ وتتحكم البرامج الوسيطة بتنفيذ برامج التطبيقات في هذه المنظومات.
كذلك نشأ حديثاً صنف من الحوسبة يعد من الحوسبة العنقودية، هو الحوسبة المستودعية Warehouse Scale Computing (WSC)، ومن أنواعها مراكز المعطيات Data Centers (DC). ويكون المركز مؤلفاً من مجموعة من حواسيب في مستودع تربط بينها شبكة وتعمل متعاونة لتنفيذ أعمال محددة بسرعة.
2- الحواسيب المشتركة الذاكرة Shared Memory Machines (SMM):
تتألف هذه الحواسيب من مجموعة من المعالجات أو النويات، مع ذاكرة مشتركة، وشبكة اتصال تربط المعالجات بالذاكرة. يمكن للذاكرة المشتركة أن تُنْجز كمجموعة من ذواكر منفردة. ويجري تبادل المعطيات بين المعالجات بوساطة الذاكرة المشتركة عن طريق قراءة المتغيرات المشتركة أو كتابتها. وتعد النويات في المعالجات المتعددة النوى مثالاً على النموذج SMM، وتكون الذاكرة العمومية عادة وحدات ذاكرة منفصلة تقدم فضاء عنونة مشتركاً يمكن لجميع المعالجات النفاذ إليها. تعدّ المعالجات المتعددة المتناظرة SMP نوعاً خاصاً من منظومات SMM. تتشارك في هذه المنظومة عدة معالجات بذاكرة واحدة أو بمجموعة ذواكر بوساطة مسرى مشترك، أو بأي آلية اتصال بينـي أخرى.
تتمتع هذه المنظومة بميِّزة أن زمن النفاذ منتظم uniform إلى أي منطقة في الذاكرة، أي هو نفسه تقريباً لكل معالج. تحتوي منظومات SMP عادة على عدد قليل من المعالجات، وليس لها على وجه العموم ذواكر محلية خاصة بالمعالجات، أو معالجات دخل/خرج، ولكن لكل معالج منها تراتبية خاصة من الخابياتCache. ويكون النفاذ إلى الخابية أسرع من النفاذ إلى الذاكرة الرئيسية. ويمكن أن يعدّ كل معالج متعدد النوى منظومة SMP الشكل (8).
الشكل (8) بنية الحواسيب المتعددة المعالجات وذات الذاكرة المشتركة. |
تعتمد البرامج المتوازية لمنظومات SMM على تنفيذ النياسب آنياً. ويمكن لبعض منظومات SMP أن تُستخدم عُقَداً في منظومات حاسوبية متوازية أكبر، وذلك بتوظيف شبكة اتصال لتبادل المعطيات بين معالجات عقد SMP المختلفة. في مثل هذه المنظومات يمكن تعريف فضاء عنونة مشترك باستخدام بروتوكولات اتساق خابيات cache coherence protocol مناسب. يقدم بروتوكول اتساق الخابيات نظرة موحّدة إلى فضاء عنونة مشترك على الرغم من أن الذاكرة الفيزيائية قد تكون موزعة. تضمن هذه البروتوكولات أن يعيد أي نفاذ أكثر القيم حداثة لموقع ذاكرة محدد، وذلك بقطع النظر عن الموقع الفيزيائي لموقع تخزين هذه القيمة. يدعى النظام الناتج في هذه الحالة بالذاكرة المشتركة الموزعة (Distributed Shared Memory (DSM. وعلى النقيض من منظومات SMP فإن زمن النفاذ في منظومات DSM يعتمد على موقع المعطيات في الذاكرة العمومية، فيكون النفاذ إلى معطيات موجودة في الذاكرة المشتركة المحلية ضمن عقدة SMP أسرع من النفاذ إلى قيمة معطيات موجودة في ذاكرة مشتركة لعقد أخرى من SMP بعيدة، وذلك باستخدام بروتوكول اتساق الخابية. لذلك تسمى هذه المنظومات أيضاً بمنظومات النفاذ اللامُنتَظَم إلى الذاكرة NUMA؛ في حين يكون لمنظومات SMP الوحيدة زمن نفاذ موحّد لجميع المعالجات فيها، ولذلك تسمى أيضاً Uniform Memory Access (UMA).
النيسبة المتعددة multi-threading
يعدّ حاجز الذاكرة memory wall أحد العوائق الرئيسية في عدم إمكان الاستفادة من التقنيات الحديثة بطريقة فعّالة؛ ينتج هذا الحاجز من عدم إمكان إنقاص زمن النفاذ إلى الذاكرة، مع ازدياد سرعة المعالج، أي إنقاص لدورة ساعته؛ مما يعني ازدياد عدد دورات الساعة اللازمة للنفاذ إلى الذاكرة. تعدّ الخابيات المحلية إحدى المقاربات الرئيسية لإنقاص زمن النفاذ وتجاوز حاجز الذاكرة. أما المقاربة الأخرى المستخدمة حديثاً في أغلب المعالجات الحالية فهي النيسبة المتعددة.
ومع تطور تصنيع البرمجيات أصبحت التطبيقات أكثر قدرة على تنفيذ عدة مهمات متزامنة. فتطبيقات المخدمات الحالية غالباً ما تتألف من عدد من النياسب أو الإجرائيات. وقد تم اعتماد عدد من المقاربات في العتاد والبرمجيات لدعم التوازي على مستوى النيسب Thread-Level Parallelism (TLP). ويعد النيسبُ الجزءَ القابل للإسناد من الإجرائية؛ ويتضمن سياق المعالج (المؤلف من عداد البرنامج PC ومؤشر المكدس) ومساحة المعطيات الخاصة به في المكدس (لتمكين التفرع). يُنفّذ النيسب تسلسلياً، وهو قابل للمقاطعة، مما يُمكِّن المعالج من الانتقال من نيسب إلى آخر؛ لذلك يمكن تعريف النيسب على أنه استغلال رئيسي لوحدة المعالجة المركزية. وهذا ما يحتِّم أن يكون المعالج المتعدد النياسب قادراً، على الأقل، على أن يقدّم عدادَ برنامجٍ مستقل لكل نيسب تنفيذي حتى تتمكن النياسب المتعددة من التنفيذ المتساير. وتقسم مقاربات تصميم النياسب المتعددة بوجه عام إلى المقاربات الرئيسية التالية:
أ- النيسبة المتعددة المتشابكة interleaved multi-threading: تعتمد فكرة النيسبة المتعددة المتشابكة على إخفاء زمن تلبّث latency النفاذ إلى الذاكرة، وذلك بمحاكاة عدد من المعالجات الافتراضية على كل معالج فيزيائي. يحتوي كل معالج فيزيائي على عداد برنامج وعدد منفصل من المسجلات لكل من المعالجات الافتراضية. يتم الابتدال إلى المعالج الافتراضي التالي بعد تنفيذ كل تعليمة، ويحاكى المعالج الافتراضي التالي من قبل المعالج الفيزيائي بطريقة التخديم الدوري round-robin. إذا ما توقف النيسب الذي هو في قيد التنفيذ لسبب ما- كارتباط معطيات أو لتلبّث الذاكرة- يجري تخطي هذا النيسب والانتقال إلى نيسب جاهز للتنفيذ. يصنّف هذا النوع من النيسبة المتعددة نيسبةً متعددةً دقيقة الحبحبة؛ لأن الابتدال يحصل بعد كل تعليمة. يتطلب هذا النوع من النيسبة المتعددة أن تكون المعالجات الفيزيائية مصمّمة خصوصاً لمحاكاة عدد من المعالجات الافتراضية.
ب- النيسبة المتعددة الموْقفة blocked multi-threading: تستخدم النيسبة المتعددة الموقفة بوصفها طريقة أخرى لقرار الابتدال بين المعالجات الافتراضية. وفيها تُنفَّذ تعليمات نيسب ما حتى التوقف المُكْلِف للنيسب بسبب طروء حدث يسبب التأخير مثل إخفاق الخابية؛ يحرّض مثل هذا الحدث الابتدال إلى نيسب آخر. وتعدّ هذه المقاربة فعّالة في معالجات التنفيذ المرتب in-order processors. يصنّف هذه النوع ضمن النيسبة المتعددة القاسية الحبحبة، ولها أنواع أخرى مثل النيسبة المتعددة ذات الحصص الزمنية time-slice multi-threading التي تعتمد على تقسيم الزمن لحصص زمنية يتم الابتدال فيها بين المعالجات الافتراضية عند انتهاء الحصة الزمنية لمعالج افتراضي. تسبب هذه الطريقة استخداماً غير كفء للمعالج الصلب (الفيزيائي) بسبب الانتظار عند أحداث معينة، مثل انتظار عملية دخل/خرج. يُتَجنَّب هذا القصور باستخدام النيسبة المتعددة ذات الابتدال عند الحدث switch-on-event-multi-threading التي يتم فيها الابتدال عند التوقف أو الانتظار لحدث ما.
ج- النيسبة المتعددة المتآونة Simultaneous Multi-Threading – (SMT): وتسمى أيضاً في معالجات إنتل بالنيسبة الترابطية Hyper-Threading – (HT). تحاول تقنية التنفيذ غير المرتب out-of-order-execution زيادة مجمّع التعليمات المتاحة للتنفيذ بالنظر المسبق في دفق التعليمات، كذلك تحاول معالجات SMT زيادة حجم مجمّع التعليمات المتاحة عن طريق مجموعة من التعليمات المتاحة من عدد من النياسب المختلفة. يجري في هذه المقاربة إصدار التعليمات في آن معاً لعدد من النياسب المختلفة لتنفيذها على وحدات تنفيذ معالج سلَّمي فائق Super Scalar. تَجمع هذه المقاربة بين تقنية الإصدار المتعدد multiple issue للبنيان السلَّمي الفائق، والنيسبة المتعددة. وتصنّف أيضاً بأنها نيسبة متعددة غليظة الحبحبة.
تعتمد الفكرة الرئيسية للنيسبة المتعددة المتزامنة على استخدام عدة نياسب، وجدولة عدة تعليمات تنفيذية من نياسب مختلفة في دورة تنفيذية واحدة إذا كان ذلك ضرورياً؛ وهذا يعني استخدام الوحدات الوظيفية للمعالج بكفاءة أكبر. يؤدي هذا إلى تنفيذ متزامن لعدة نياسب مختلفة، وتتنافس في كل دورة تعليمات عدة نياسب على الوحدات الوظيفية للمعالج. ويخزّن المعالج حالة نيسبين أو أكثر في الوقت نفسه، ويقوم نظام التشغيل بجدولة النياسب اللازمة للتنفيذ. ويمكن بزيادة صغيرة في عدد الترانزستورات والتعقيد تحسين الأداء نظرياً تحسيناً جيّداً.
يقوم الدعم العتادي لهذا النوع من النياسب على مضاعفة منطقة الرقاقة الإلكترونية المستخدمة لتخزين حالة المعالج؛ ويتضمن هذا عداد البرنامج PC، ومسجلات التحكم والمستخدم، وكذلك متحكم المقاطعة مع مسجلاته الخاصة (الشكل 9). يبدو المعالج مع هذه المضاعفة لنظام التشغيل وبرنامج المستخدم على أنه عدد من المعالجات المنطقية التي يمكن تعيين نيسب مختلف على كل منها. يمكن لهذه النياسب المتعددة أن تكون من برنامج وحيد أو من عدة برامج للمستخدم. وإن عدد مرات المضاعفة هو الذي يحدد عدد المعالجات المنطقية التي يمكن أن تستخدم. كذلك يجب على نظام التشغيل أن يكون قادراً على التحكم بالمعالجات المنطقية المتعددة، وعلى برامج التطبيقات أن تستخدم تقنيات البرمجة المتوازية لتحصيل ربح الأداء في معالجات SMT.
المعالجات المتعددة النوى multi-cores
وتسمى أيضاً المعالجات المتعددة على الرقاقة Chip Multi-Processors (CMP). تفترض معظم تقنيات التوازي العتادي المضمّن implicit parallelism مثل التوازي على مستوى الخانة الثنائية، أو التوازي بالتوارد، أو التوازي باستخدام وحدات تنفيذ متعددة في المعالج، تفترض سياقاً تحكمياً تسلسلياً وحيداً للتعليمات يغذي المعالج بوساطة المصرِّف compiler. هذا النوع من التوازي هو محدود بعدة عوامل فيزيائية وتقنية. وقد وصلت معظم التقنيات السابقة المستخدمة لتحسين الأداء وزيادة الإنتاجية الحسابية في المعالجات والمنظومات الحاسوبية إلى حدودها القصوى الممكنة خلال السنوات الأخيرة لعدة أسباب منها: إن إضافة عدد الوحدات الوظيفية في المعالج الواحد محدودة بارتباط التعليمات، كذلك وصلت سرعة المعالج إلى حدودها الفيزيائية القصوى بسبب الاستهلاك العالي للطاقة من جهة، وعدم القدرة على إنقاص زمن النفاذ إلى الذاكرة من جهة أخرى. هذه الأسباب وغيرها حتّمت انعطافاً تقنياً في تصميم المنظومات الحاسوبية الحديثة، وفرضت تغييرات جذرية على البنى التصميمية لضمان استمرار تعاظم أداء المعالجات المطلوب عن طريق المسائل البرمجية والتطبيقية؛ وتعد تقانة المعالجات المتعددة النوى أهم المقاربات المستخدمة حديثاً.
يتطلب استخدام الموارد الموجودة في المعالجات المتوازية بكفاءة عالية استخدام برامج متوازية بطريقة صريحة explicit parallelism؛ وهو ما يسمى أحياناً بالتوازي على مستوى النيسب TLP، لأن السياقات التحكمية المتعددة المطلوبة للعمل على النويات المتعددة غالباً ما تسمى النياسب.
تعتمد هذه التقانة على تجميع عدة معالجات نويات cores مستقلة ذات تنظيم وبنًى بسيطة على رقاقة معالج وحيدة، بدلاً من زيادة تعقيد التنظيم الداخلي لرقاقة المعالج الوحيد (الشكل 9-هـ). ويجري في هذه الحالة مضاعفة كامل المعالج مقارنة بالنيسبة المتعددة المتناظرة SMT. يمكن لكل من هذه النويات الحصول على سياق تحكمي منفصل؛ مما يتطلب استخدام تقنيات البرمجة المتوازية الصريحة. تتشارك هذه النويات في الذاكرة الرئيسية وعادة ما تتشارك أيضاً في بعض مستويات الذاكرة الخابية. وكل نواة من وجهة نظر نظام التشغيل، هي معالج منطقي ذو موارد تنفيذ مستقلة، مثل الوحدات الوظيفية، أو مثل مراحل التنفيذ في المعالجات المتواردة، ويتم التحكم بها بطريقة مستقلة.
الشكل (9) مقارنة مبسّطة بين بنى المعالجات الوحيدة النواة، والمتعددة المعالجات، المتعددة النوى. |
يكمن الاختلاف الرئيسي بين منظومات SMT والمنظومات المتعددة النوى في أنه في الأولى تتشارك أجزاء من المعالج الواحد بين النياسب المتعددة؛ في حين تتضاعف أجزاء المعالج الأخرى بين النياسب المختلفة. ومن أهم الموارد المشتركة بين النياسب وحدات التنفيذ التي تعمل على أكثر من نيسب في وقت واحد عن طريق تنفيذ التعليمات من نيسب على الموارد التي لا يحتاج إليها النيسب الآخر؛ وعملياً تتشابك تقنية SMT في تنفيذ التعليمات على متوارد التنفيذ من عدة نياسب مختلفة وتحصل على الربح في الأداء من خلال إخفاء التلبّث، وتستخدم عملياً نواة تنفيذ وحيدة ومشتركة بين النياسب المختلفة. من جهة أخرى تحتوي المعالجات المتعددة النوى على عدد من نويات التنفيذ. وهكذا يمكن أن يحصل على توالٍ من التعليمات أو النياسب على وحدة تنفيذ كاملة مما يسمح بالتنفيذ المتوازي الحقيقي للنياسب.
ثمة تصاميم مختلفة مستخدمة في المعالجات المتعددة النوى؛ تختلف بحسب عدد النويات، أو بنية وحجم الخابيات وحجمها، وطرق النفاذ من النويات إلى الخابيات، والاستخدام غير المتجانس للمكونات. يمكن بوجه عام تمييز ثلاثة تصاميم أساسية:
آ. التصميم الهرمي/التراتبي hierarchical: تتشارك في هذه المنظومة عدة نوويات بعدد من الخابيات، وتنظّم الخابيات على شكل شجرة يزداد فيها حجم الخابية من الأوراق إلى الجذر (الشكل 10-أ)، ويمثّل الجذر عقدة الارتباط بالذاكرة الخارجية. يمكن في هذا التصميم أن يكون لكل نواة مستوى خابية أول L1 منفصل، وتتشارك مع باقي النويات في الخابية ذات المستوى الثاني L2. وعادة ما تتشارك في الذاكرة الخارجية أيضاً منتجة بذلك مستوى ثالثاً في التراتبية، ويمكن أن يتوسع هذا المستوى لعدد من المستويات الأخرى. الاستخدام النموذجي لهذا التصميم هو لمعالجات النيسبة المتعددة المتآونة SMT.
ب. التصميم المتوارد: تعالج عناصر المعطيات في هذا التصميم بوساطة عدة نويات تنفيذية بطريقة متواردة، تدخل المعطيات رقاقة المعالج من بوابة دخل وتمر تتابعياً عبر النويات المختلفة حتى تترك النواة الأخيرة رقاقة المعالج عبر بوابة خرج (الشكل 10-ب). تنفّذ كل نواة في مسار التنفيذ هذا خطوات معالجة محددة على كل عنصر من عناصر المعطيات. يستخدم هذا التصميم في المعالجات التي تتطلب خطوات حسابية تطبّق على سلاسل طويلة من المعطيات، مثل معالجات شبكات الاتصال والمسيّرات routers، والمعالجات البيانية graphics processors.
جـ. التصميم الشبكي networked: تتصل كل نواة بالخابيات المحلية التابعة لها والذاكرات في هذا التصميم عبر شبكة اتصال داخلية بالنويات الأخرى على الرقاقة (الشكل 10-ج). تنتقل المعطيات في هذا التصميم بين النويات المختلفة عبر شبكة الاتصال، كذلك يمكن لهذه الشبكة أن تقدم دعماً لعمليات المزامنة بين النويات المتعددة. ويستخدم هذا النموذج في بعض المعالجات الخاصة مثل معالج Intel Teraflop المستخدم في أبحاث استكشاف إمكان بناء معالجات ذات مئات أو آلاف النويات، وتتضمن هذه الأبحاث مواضيع تصميم النواة، وإدارة الطاقة، وتراتبية الذاكرة والخابية، والدخل/ الخرج.
الشكل (10) بنى المعالجات المتعددة النوى. |
تتطلب عدة مواضيع أساسية عناية خاصة في حال زيادة عدد النويات على الرقاقة الوحيدة، الأول شبكة الاتصال الداخلية الفعّالة بين النويات، بحيث تقدم عرض حزمة كافياً لنقل المعطيات بين النويات، وكذلك يجب أن تكون هذه الشبكة قابلة للتوسع لدعم الازدياد المطرد في عدد النويات في الأجيال المقبلة من المعالجات الحديثة. الموضوع الثاني هو مواربة الأخطاء؛ فعلى النويات الاستمرار في العمل في حال أخفق عتاد إحداها. الموضوع الثالث هو وصول المعطيات المنتجة واللازمة بطريقة سريعة إلى الرقاقة لتمكين كل النويات من العمل بطريقة سليمة. يتطلب ذلك نقطتين رئيسيتين: الأولى نظام ذاكرة سريع التخديم؛ تستخدم عدة مستويات من الخابية لتحسين نظام الذاكرة، ومن المرجّح أن يزداد عدد هذه المستويات بازدياد عدد النويات، النقطة الثانية توفّر نظام دخل/خرج يقدّم عرض حزمة يقدر بمئات الغيغابايتات بالثانية (gigabytes/s) للرقاقة.
مراجع للاستزادة: - D.A. Patterson, J. L. Hennessey, Computer Organization and Design, Morgan Kuffmann, Elsevier Inc, 2014. - T. Rauber G. R¨unger, Parallel Programming For Multicore and Cluster Systems, Springer-Verlag Berlin Heidelberg 2010. |
- التصنيف : كهرباء وحاسوب - النوع : كهرباء وحاسوب - المجلد : المجلد الخامس مشاركة :