معماريات المعالجات الصغرية: ما هي المعمارية Architecture؟
مقدمة حول مفهوم المعمارية
عند التعامل مع أي نظامٍ حاسوبي، نلاحظ أنه قائم على مجموعة من الوحدات الوظيفية Functional Modules كالمعالج، الذواكر، بوابات الدخل والخرج، وشبكات التبديل Switching Networks. يمكننا التفكير باللوحة الأم Mother Board الخاصة بالحواسيب الشخصية PC’s كمثالٍ ممتاز على الأنظمة الحاسوبية، فهي تتضمن المعالج الصغري Microprocessor، الذواكر (ذواكر RAM، وذواكر ROM)، بوابات إدخال وإخراج البيانات. عملية وضع هذه المكونات مع بعضها البعض، وتوصيلها مع بعضها البعض لن يؤدي إلى الحصول على الوظائف المطلوبة من اللوحة الأم، والمتمثلة في قيادة الحاسوب ككل، وإظهار ما يحدث من فعالياتٍ على الشاشة، واستقبال الأوامر المختلفة من المستخدم، عبر طرفيات الإدخال مثل لوحة المفاتيح والفأرة. يجب أن يكون هنالك منهجية معينة تنظم سير العمليات في الحاسوب، فيجب أن يعرف المعالج ما الذي تعنيه عملية النقر على الفأرة، أو حتى تحريك مؤشر الفأرة، ويجب على الحاسوب أيضاً أن يفسر ويفهم الأزرار التي يقوم المستخدم باستخدامها، ويجب أن يقوم أيضاً بتفسير هذه الرسائل، وإظهارها على الشاشة. بنفس الوقت، يجب أن ينظم الحاسوب الآلية التي يتم وفقها تبادل المعلومات ما بين الذواكر والمعالج. كل هذه المهام، ترتبط بشكلٍ أساسي بمفهوم “المعمارية Architecture”.فما هي المعمارية؟
المعمارية هي الآلية التي يتم وفقاً لها ترتيب الوحدات الوظيفية المختلفة ضمن النظام الحاسوبي، بحيث تحدد المعمارية كيفية انتقال البيانات والمعلومات ما بين الوحدات الحاسوبية، كوحدة المعالجة المركزية والذواكر وبوابات الإدخال والإخراج.
(ملاحظة: يرد مصطلح “المعمارية” ببعض المراجع على أنه “Processors Architecture” أو “Microarchitecture”، ويشير المصطلحان إلى نفس المفهوم).
يحتوي مصطلح معماريات الحواسيب على جانبين، جانب يشدد على تصميم المعمارية وجانب آخر يُشدد على تنظيم المعمارية. تصميم معمارية حاسوب يتطلب اختيار وحدات وظيفية مُتعددة كالمعالجات والذواكر وترتيبها ضمن نظام وذلك بتصميم الروابط بينها.
على سبيل المثال، من مهام تصميم المعمارية اختيار إذا ما كانت ستحتوي على تعليمة لضرب عنصرين. ولكن تحديد ما إذا كانت هذه التعليمة ستُنفذ عبر وحدة خاصة للضرب أم عبر أسلوب يستفيد من تكرار استخدام وحدة الجمع هو من مهام تنظيم المعمارية. يتم اختيار هذا القرار بناء على التردد المتوقع لاستخدام تعليمة الضرب، سرعة تنفيذ كل من المنهجين، وكلفة وجود وحدة الضرب الخاصة.
على الرغم من صعوبة التفريق بين مفهومي المعمارية وتنظيمها في بعض المواضيع إلا أنه دائماً ما يمكننا ملاحظته وتمييزه. يوفر العديد من مصنعي الحواسيب اليوم العديد من المعالجات التي تشترك بنفس التصميم لكن تختلف في التنظيم الداخلي. وبالطبع هذا الاختلاف يسبب تغير كلفة الحاسوب وسمات الأداء. بسبب ذلك، يستطيع تصميم معمارية ما التواجد لسنوات عديدة ومجاراة المتطلبات والتغييرات التقنية بتغيير تنظيم المعمارية فقط. كما نرى في منتج معمارية IBM المركزية حيث تم تصميم معمارية IBM System/370 أول مرة في عام 1970 ومازالت تعتمد الشركة على هذا التصميم، مع تحسينات قليلة، كتصميم المعمارية الأساسي في منتجاتها.
يمكن تشبيه هذه العملية (تصميم وتنظيم المعمارية) بعملية بناء العمارات حيث يجب اختيار المواد البنائية المناسبة أولاً ومن ثم ترتيبها وتنظيمها لتعطي هيكلية البناء المطلوب. فتصميم وحدة المعالجة المركزية يتضمن الجمع بين المسجلات، وحدات حسابية، ووحدة تحكم منطقية وترتيبها للحصول على المعالج المطلوب.
هنالك نقطة هامة تتعلق بمفهوم المعمارية: المعمارية لا تتعلق بكيفية تنظيم وتصميم العتاد الحاسوبي فقط، بل هي ترتبط أيضاً بالبرامج والتطبيقات ونظم التشغيل. فعندما نقول أن معالجاً ما مبني على معماريةٍ ما، فنحن نقصد الآلية التي تم وفقاً له تصميم وتنظيم الوحدات الداخلية لهذا المعالج. وعندما نقول أن نظام تشغيل مصمم بمعمارية 64-بت، فنحن نقصد تصميم وتنظيم مجموعات التعليمات وكيفية عملها ضمن نظام التشغيل. بمعنى آخر، يجب أن نميز بين مفهوم المعمارية “العتادية Hardware” و “البرمجية Software”.
الصورة التالية، توضح المفهوم الأساسي للمعمارية، من حيث الوحدات الوظيفية الأساسية المرتبطة بها.
اعتماداً على المخطط البسيط السابق، نستطيع أن نلخص أن مفهوم المعمارية يرتبط بـ:
- عرض النواقل Bus Width (نواقل التحكم، نواقل العناوين، نواقل البيانات)
- صفات ومميزات وحدة المعالجة المركزية (بشكل أساسي سرعة المعالج)
- الذواكر (حجمها وسرعتها)
- بوابات الإدخال والإخراج
فتكون وظيفة المعمارية هي تصميم آلية تبادل البيانات والمعلومات بين هذه المكونات، بما يحقق الهدف المطلوب.
تقييم المعمارية
لنعود لمفهوم المعمارية بالمعنى الشامل الذي يجمع بين التصميم والتنظيم. عند تقييم أي معمارية يوجد ثلاث معايير أساسية يجب النظر فيها:
- الأداء
- الكلفة
- الحجم الأقصى للبرنامج والبيانات
يوجد العديد من المعايير الأخرى التي نستطيع أن نُقييم المعمارية من خلالها كاستهلاك الطاقة، الحجم والثقل (معياريين يهتما بالبنية الفيزيائية للمعالج)، وسهولة البرمجة. تؤخذ تلك المعايير في عين الاعتبار حسب التطبيقات المطلوبة أما المعايير الثلاث في الأعلى فهي مهمة في جميع التطبيقات.
لا يوجد أي قاعدة مطلقة تحدد تفوق معمارية ما على معمارية أخرى. حيث يتناسب تطور معماريات المعالجات مع التقنية المتواجدة. المعمارية التي تكون مبتكرة وفعالة اليوم قد تصبح غير مفيدة في الغد، والعكس صحيح. تكمن الفكرة المهمة عند النظر إلى أي معمارية في مقارنتها مع التقنيات الموجودة. فمن المهم معرفة مدى استفادة النظام الحاسوبي من دورات المعالج، سعة الذاكرة، عرض نطاق الدخل والخرج كأهمية معرفة سرعة الحوسبة الأساسية للمعالج. ولا يكفي النظر إلى عوامل الأداء فقط فعامل الكلفة بأهمية عامل الأداء.
اختيار المعمارية
أحد أهم الأخطاء الشائعة هي الاعتقاد أن معمارية الحواسيب هي عملية تصميم عتاد الحاسوب. تتعامل معمارية الحواسيب مع الوحدات والعناصر في المستوى الوظيفي وليس فقط على مستوى عتاد الأجهزة. معمارية الحواسيب عليها أن تحيط بمجال أبعد من العتاد الفيزيائي.
من أهم وربما أوائل القضايا التي يجب العمل على تنفيذها عند اختيار معمارية مناسبة هي تصميم مجموعة تعليمات المعالج. إلى الآن يوجد مناقشات وخلافات حول مجموعة التعليمات الأمثل حيث أنها قد تكون معقدة أو بسيطة. وهذه الخلافات لن تنتهي بحل وحيد حيث يتم تطوير مجموعة التعليمات تحت فلسفات مختلفة مع وجود غالبية التفضيل لمجموعة التعليمات البسيطة.
باختصار، تبني المعمارية الأنظمة من خلال عدة عناصر، بعضها يظهر على العتاد وبعضها بالبرنامج وبعضها يكون مزيج من العتاد والبرنامج. يجب اختيار مجموعة تعليمات لتوضيح شكل البرنامج ومن ثم اختيار عتاد وعناصر أخرى وجمعها للحصول على نظام كامل بأعلى كفاءة.
المعماريات الحديثة Modern Architectures
يمكننا القول أن العرض البسيط السابق هو عرض جيد ومناسب لفهم مبدأ المعمارية، ولكن لا يمكن القول أنه عرض شامل، خصوصاً مع المعماريات الحديثة التي تقوم الشركات بطرحها. لو أردنا البحث والغوص بالمعماريات التي تقوم شركة إنتل بطرحها وتطويرها، لاحتجنا لآلاف الصفحات والرسوم والتوضيحية كي نقول أننا عرضنا الفكرة بشكلٍ كامل، هذا ناهيك عن الشركات الأخرى التي تعمل أيضاً على تطوير معالجاتها وفقاً لمعمارياتها الخاصة، مثل شركة AMD.
فضلاً عن ذلك، فإننا عرضنا مفهوم المعمارية من وجهة نظر الأنظمة الحاسوبية بشكلٍ كامل: هذا يعني أن الكلام السابق ينطبق على أي نظامٍ حاسوبي، سواء كانت حاسوب شخصي، أو حاسوب محمول، أو جهاز لوحي، أو هاتف ذكي، أو الأنظمة الحاسوبية المعتمدة على الأنظمة المضمنة (مثل معالجات الإشارة الرقمية DSP والمتحكمات الصغرية Microcontrollers). يجب أن نأخذ بعين الاعتبار التطورات الحديثة التي طرأت على مجال المعالجات الصغرية، مثل المعالجات متعددة النوى Multi-core Processors (فعلياً لم يعد هنالك أي حاسوب أو جهاز ذكي حديث إلا ويتمتع بوحدة معالجة متعددة النوى)، وخصائص أخرى مثل تقنية Hyper-Threading التي تجعل المعالج يعمل بعددٍ مضاعف من أنوية المعالجة (أي أن معالجاً بنواتين سيعمل وكأنه يمتلك أربع أنوية معالجة)، وغيرها من التقنيات والمميزات التي تطرحها الشركات لتحسين أداء معالجاتها والأنظمة الحاسوبية التي ستعمل عليها. كل هذه التفاصيل يجب أن تؤخذ بعين الاعتبار عن دراسة أي معالج ونظام حاسوبي، ولا يمكن الاعتماد فقط على المعلومات الأولية والمفاهيم البسيطة المتعلقة بموضوع المعمارية وبنية النظام الحاسوبي.
من هذا المنطلق، وبسبب التعقيد الكبير والمتزايد الذي يطرأ على الأنظمة الحاسوبية، فإننا يجب أن نميز بين الأنواع التالية من المعماريات الحاسوبية:
- المعماريات الخاصة بالحواسيب الشخصية (أو الحواسيب الصغرية Micro-Computers) مثل معماريات شركة إنتل و AMD، ونميز وجود هذه المعماريات في الحواسيب الشخصية والحواسيب المحمولة
- المعماريات الخاصة بالأنظمة الحاسوبية القائمة على النظم المضمنة Embedded Systems: مثل معمارية ARM أو معماريات AVR الخاصة بشركة Atmel، ونميز هذه المعماريات بشكلٍ كبير في الأجهزة الذكية والهواتف الذكية
- المعماريات الخاصة بالأنظمة الحاسوبية العاملة في المخدمات Servers
- المعماريات الخاصة بالحواسيب الفائقة Supercomputers
للمزيد حول موضوع المعمارية:
- معماريات المعالجات الصغرية: ما هو الفرق بين معمارية فون نيومان ومعمارية هارفرد
- معماريات المعالجات الصغرية: ما هو الفرق بين معمارية CISC ومعمارية RISC؟
- معماريات المعالجات الصغرية: خاصية أنابيب التجزئة Pipelining
المصادر: كتاب “High Performance Computer Architecture” من تأليف “هارولد س. ستون Harold S. Stone”. كتاب “Computer Organization & Architecture” من تأليف “ويليام ستالينغز Willian Stallings”.
جميل أنت يا أخ جميل
استمر بارك الله فيك