الفصل الخامس

مجال معمارية الكمبيوتر

يقع الكمبيوتر المادي في نهاية التسلسل الهرمي «جهاز الكمبيوتر» الموضَّح في الشكل ٢-١. وفي اللغة الدارجة، يشار إلى جهاز الكمبيوتر المادي باسم «العتاد» (hardware). وكلمة hard في المقابل الإنجليزي للكلمة تعني أنه أداةٌ مادية تخضع لقوانين الطبيعة في نهاية الأمر. وجهاز الكمبيوتر المادي هو الأداة الحوسبية «المادية» الأساسية التي تهم علماء الكمبيوتر.

لكن إذا طرح أحدٌ السؤالَ التالي: «ما طبيعة جهاز الكمبيوتر المادي؟» فربما أراوغ في إجابتي. يرجع السبب إلى أن جهاز الكمبيوتر المادي، وإن كان جزءًا من تسلسل هرمي أكبر، فإنه معقَّد لدرجةِ أنه يحوي تسلسله الهرمي الداخلي الخاص به. ومن ثَم يمكن تصميمه ووصفه على عدة مستويات من التجريد. والعلاقة بين هذه المستويات تجمع بين مبادئ التسلسل الهرمي التركيبي، التجريدي/التفصيلي، والبنائي التي أوضحناها في الفصل الأول.

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

رؤية الكمبيوتر المادي باعتباره أداةً حوسبية مجردة تعالج الرموز تشكِّل «معمارية» الكمبيوتر. (استُخدم مصطلح «المعمارية» من قبلُ للإشارة إلى الهيكل الوظيفي للأجهزة الافتراضية الموضَّحة في الشكل ٢-١. لكن، الآن، مصطلح «معمارية الكمبيوتر» له دلالة فنية محدَّدة أكثر.) فالمكونات المادية (الرقمية) التي تنفِّذ معماريته — العتاد الفعلي — تشكِّل «تكنولوجيا» الكمبيوتر. ومن ثَم يتضح لنا الفرق بين «معمارية الكمبيوتر» والتكنولوجيا (الرقمية).

ثمَّة جانب آخر مهم في هذا التفريق. يكمُن هذا الجانب في إمكانية تنفيذ معمارية بعينها باستخدام تكنولوجيات مختلفة. فالمعمارية ليست مستقلة عن التكنولوجيات؛ حيث إن تطور التكنولوجيا يؤثِّر في التصميم المعماري، لكن هناك قدْر معيَّن من الاستقلالية أو «درجات من الحرية» التي يتمتع بها مصمِّم معماريات الكمبيوتر. وفي المقابل، يمكن لتصميم معماريةٍ ما أن يشكِّل نوع التكنولوجيا التي يتم استخدامها.

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

وفيما يلي توضيح المصطلحات الأساسية المتعلقة بهذا النقاش: «معمارية الكمبيوتر» هي أحد فروع علم الكمبيوتر وتهتم بتصميم الكمبيوتر المادي ووصفه وتحليله ودراسة تنظيمه المنطقي وسلوكه وعناصره الوظيفية؛ وكل هذا يشكِّل معمارية الكمبيوتر (المادي). مهمة اختصاصي معمارية الكمبيوتر هي تصميم معماريات تلبي احتياجات مستخدمي الكمبيوتر المادي (مهندسو البرمجيات والمبرمجون ومصمِّمو الخوارزميات والمستخدمون غير الفنيين) من جانب، ومن جانب آخر تكون صالحة من الناحيتين الاقتصادية والتكنولوجية.

بذلك نجد أن معماريات الكمبيوتر أدواتٌ حدية. ولا بد لاختصاصي معمارية الكمبيوتر أن يكون ماهرًا في الجمع بين المتطلبات الوظيفية والأدائية للكمبيوتر، والجدوى التكنولوجية.

أجهزة الكمبيوتر الأنوية وذات النزعة الاجتماعية

يرجع قدْر كبير من الفضل في عولمة كل شيء إلى الكمبيوتر. إذا كان «الإنسان ليس جزيرة منعزلة»، فليس الكمبيوتر كذلك في القرن الحادي والعشرين. لكن فيما مضى وعلى مدار سنوات عديدة، كانت أجهزة الكمبيوتر بمثابة جزر منعزلة بالفعل. فالأداة الحوسبية من النوع الموضَّح باسم «النص» في الشكل ٢-١ كانت ستنجز المهام المنوطة بها وكأنه لا شيء في العالم سواها. كذلك ما كان لها تفاعل مع البيئة إلا بالبيانات والأوامر المُدخلة والنتائج المُخرجة. وخلاف ذلك، وتحقيقًا لكل الأغراض العملية، فإن الكمبيوتر المادي — ونظامه المخصَّص له وبرامج التطبيقات والأدوات الأخرى الخاصة به (مثل لغات البرمجة) — عاشت في عزلة أنوية بديعة.

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

لكن توجد شبكات أبسط يمكن أن تكون أجهزةُ الكمبيوتر جزءًا منها. فالأجهزة داخل مؤسسة (مثل جامعة أو شركة) تتصل بعضها ببعض عبْر ما يسمَّى «الشبكات المحلية». كذلك يمكن لمجموعة من أجهزة الكمبيوتر الموزَّعة عبْر منطقةٍ ما أن تتعاون بعضها مع بعض، ويؤدي كل جهاز منها المهمةَ الحوسبية المنوطة به، ولكنها تتبادل المعلومات بعضها مع بعض عند الحاجة. وقد جرت العادة على تسمية هذه الأنظمة باسم أنظمة «الحوسبة المتعددة» أو «الحوسبة الموزَّعة».

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

المعماريات الخارجية والداخلية

دخلت كلمة «معمارية» في سياق أجهزة الكمبيوتر للمرة الأولى في أوائل ستينيات القرن العشرين على يد ثلاثة من مهندسي شركة آي بي إم، وهم جين أمدال وفريدريك بروكس وجيريت بلاو. استخدم ثلاثتهم هذا المصطلح للإشارة إلى مجموعة السمات الوظيفية للكمبيوتر المادي كما هو متاح لمبرمج الكمبيوتر ذي المستوى الأدنى (مبرمجي الأنظمة الذين يبنون أنظمة التشغيل والبرامج المترجِمة والأدوات المساعدة الأساسية الأخرى التي تستخدم لغات التجميع)؛ أو «واجهتها الخارجية» إن جاز التعبير. لكن منذ ذلك الحين، امتدت ممارسة معمارية الكمبيوتر كي تشملَ التنظيم الداخلي المنطقي والهيكلي والوظيفي، وكذلك سلوك المكونات المادية للجهاز. لذا من المنظور العملي، يشير مصطلح «معمارية الكمبيوتر» إلى الجوانب الوظيفية والمنطقية لكلٍّ من الواجهة الخارجية والمكونات الداخلية للكمبيوتر المادي. لكن لم يتم الاتفاق على مصطلحين يشيران إلى هذين الجانبين، وانطلاقًا من مبدأ التبسيط، سأطلق عليهما المعمارية الخارجية والمعمارية الداخلية، على التوالي.

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

ويتشكَّل تصميم معماريات الكمبيوتر الخارجية حسب القوى المبذولة من بيئة الكمبيوتر الحوسبية؛ أي بما أن المعمارية الخارجية هي الواجهة بين الكمبيوتر المادي ومبرمجي الأنظمة الذين يصمِّمون الأجهزة الافتراضية التي «يراها» المستخدم «العادي» للكمبيوتر، فمن الطبيعي أن يكون للمتطلبات الوظيفية التي تفرضها هذه البيئة تأثيرٌ في تصميم المعمارية الخارجية. على سبيل المثال، إذا كان الهدف من الكمبيوتر دعم التنفيذ الفعَّال للبرامج المكتوبة بنوع معين من اللغات ولنقل ، فإن المعمارية الخارجية للكمبيوتر قد تكون موجَّهة صوب سمات اللغة ؛ ومن ثَم تسهِّل مهمة البرنامج المترجِم في ترجمة البرامج المكتوبة باللغة إلى لغة آلة للكمبيوتر . أو إذا كان نظام التشغيل الذي يحتل مستوًى أعلى من الكمبيوتر يتضمن إمكانيات معينة، فيمكن تسهيل تنفيذ نظام التشغيل عبر سمات مناسبة تُدمج في المعمارية الخارجية للكمبيوتر .
على الجانب الآخر، بما أن المعمارية الداخلية للكمبيوتر ستنفَّذ باستخدام مكونات (عتاد) مادية، وهذه المكونات صُنعت باستخدام تكنولوجيا معينة ولنقل ، فسيُقيد تصميم المعمارية الداخلية بسمات التكنولوجيا .
وفي الوقت ذاته، يمكن أن يتشكَّل تصميم المعمارية الخارجية ويتقيد بطبيعة المعمارية الداخلية والعكس صحيح. ومن ثَم، توجد علاقة حميمة بين البيئة الحوسبية والمعمارية الخارجية للكمبيوتر والمعمارية الداخلية له والتكنولوجيا المادية (انظر الشكل ٥-١).
fig4
شكل ٥-١: معماريات الكمبيوتر وقيودها الخارجية.

المعمارية الخارجية

«قدسُ الأقداس» لمعمارية الكمبيوتر الخارجية هي «مجموعة التعليمات» الخاصة بها التي تحدِّد مجموع العمليات التي يمكن أن يعطي المبرمِج التعليمات للكمبيوتر أن ينفِّذها مباشرةً. وأنواع العمليات التي يمكن تنفيذها بالتحديد ستُحدَّد وكذلك ستُحدَّد بمجموعة «أنواع البيانات» التي يدعمها أو «يتعرَّف عليها» الكمبيوتر مباشرةً. على سبيل المثال، إذا كان الهدف من الكمبيوتر أن يدعم العمليات الحوسبية العلمية والهندسية دعمًا فعالًا، فسيكون نوعا البيانات المهمان الأعداد الحقيقية (مثل ، و ، و ، وغيرها) والأعداد الصحيحة. ومن ثَم ينبغي أن تتضمَّن مجموعة التعليمات نطاقًا من التعليمات الحسابية.
بالإضافة إلى هذه التعليمات المحدَّدة بالمجال، ستكون هناك دائمًا مجموعة تعليمات ذات أغراض عامة، على سبيل المثال لتنفيذ أنواع تراكيب لغة البرمجة الدالة على الشرط (مثل if then else) والدالة على التكرار (مثل while do) والدالة على التفريع غير الشرطي (مثل goto). وتوجد تعليمات أخرى قد تمكِّن البرنامج من أن ينتظم في مقاطع أو وحدات مسئولة عن أنواع مختلفة من العمليات الحوسبية، مع إتاحة القدرة على نقل التحكم من وحدة إلى أخرى.
في الواقع، التعليمة عبارة عن «قالب» يصف العملية المراد تنفيذها بالإضافة إلى المراجع الخاصة بمواقع («عناوين») عناصر بياناتها المُدخلة («المعاملات» حسب الاصطلاح في مجال معمارية الكمبيوتر)، والموقع الذي ستوضع فيه بيانات المخرجات الخاصة بها. وتقتضي فكرة «العنوان» هذه مساحة «ذاكرة». ومن ثَم توجد مكونات ذاكرة تعدُّ جزءًا من المعمارية الخارجية. إضافة إلى ذلك، تشكِّل هذه المكونات تسلسلًا هرميًّا بوجه عام:
الذاكرة الطويلة الأجل: تُعرف باسم «المخزن المساعد» أو «الذاكرة الثانوية» أو «القرص الصلب».
الذاكرة المتوسطة الأجل: وتُعرف أيضًا باسم «الذاكرة الأساسية».
الذاكرة القصيرة الأجل للغاية (العاملة): وتُعرف باسم السجلات.

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

الذاكرة الطويلة الأجل هي أطول الذاكرات احتفاظًا بالمعلومات (أي، في قدرتها على «التذكر») حيث إنها ذاكرة دائمة وتصلح لكل الأغراض العملية. وهي الأكبر كذلك من حيث سعة الحجم، ولكنها الأبطأ في سرعة الوصول إليها. أما الذاكرة المتوسطة الأجل فلا تحتفظ بالمعلومات إلا إذا كان الكمبيوتر قيد التشغيل. فهي تفقد المعلومات عند إيقاف تشغيل الكمبيوتر. سعة حجم هذه الذاكرة أقلُّ بكثير من الذاكرة الطويلة الأجل، ولكن وقت الوصول إليها أقصر بكثير من الذاكرة الطويلة الأجل. وقد تغيِّر الذاكرة القصيرة الأجل أو العاملة محتوياتها عدة مرات في سياق العملية الحوسبية الواحدة؛ فسعة حجمها أقل بعدة أمثال من الذاكرة المتوسطة الأجل، ولكن وقت الوصول إليها أقصرُ بكثير جدًّا من الذاكرة الطويلة الأجل.

السبب في وجود التسلسل الهرمي في الذاكرة هو الحفاظ على توازن جيد بين متطلبات الاحتفاظ بالمعلومات والمساحة ووقت الوصول من أجل العمليات الحوسبية. كذلك ستحتوي مجموعة التعليمات على تعليماتٍ لتنفيذ عمليات نقل البرامج والبيانات بين مكونات الذاكرة هذه.

تقوم السمات الأخرى للمعمارية الخارجية على مجموعة التعليمات ومجموعة أنواع البيانات الخاصة بها. على سبيل المثال، يجب أن تتضمن التعليمات طرقًا لتحديد المواقع (العناوين) في ذاكرة المعاملات والتعليمات. ويطلق على الطرق المختلفة لتحديد عناوين الذاكرة «أنماط العنونة». سيكون هناك أيضًا قواعد أو أعراف لتنظيم وتشفير التعليمات الخاصة بمختلف أنواع البيانات بحيث يمكن حفظها داخل الذاكرة بفاعلية؛ ويطلق على هذه الأعراف «تنسيقات التعليمات». وبالمثل، «تنسيقات البيانات» عبارة عن قواعد لتنظيم أنواع البيانات المتنوعة؛ حيث تُحفظ عناصر البيانات من نوع معيَّن من البيانات في الذاكرة طبقًا لتنسيق البيانات ذي الصلة.

وأخيرًا، هناك عنصر مهم في المعمارية الخارجية وهو «طول الكلمة». يحدد هذا العنصر كمَّ المعلومات (الذي يقاس بوحدات البت) الذي يمكن قراءته من الذاكرة المتوسطة الأجل (الأساسية) أو نسخه إليها «في آنٍ واحد». إن سرعة تنفيذ التعليمات تعتمد اعتمادًا كبيرًا على طول الكلمة، وكذلك نطاق البيانات الذي يمكن الوصول إليه لكل وحدة من الزمن.

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

المعنى (الإجراء) التعليمة
R2 ← main-memory [R1 + D] (1) LOAD R2, (R1, D)
R2 ← R2 + 1 (2) ADD R2, 1
goto main-memory [R1 + D] (3) JUMP R1, D

المفاتيح:

R1 وR2: سجلان
main-memory: ذاكرة متوسطة الأجل
1: ثابت العدد الصحيح «1»
D: عدد صحيح
تضيف R1 + D في التعليمة الأولى العدد الصحيح D إلى «محتويات» ﻟ R1 وهذا يحدِّد عنوان مُعامل في الذاكرة الأساسية. أما في التعليمة الثالثة R1 + D فتحسب عنوانًا كذلك، ولكن يفسَّر هذا العنوان على أنه خاص بتعليمةٍ ينتقل إليها التحكم في الذاكرة الأساسية.

المعمارية الداخلية

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

هذه المسافة المفاهيمية في حالة أجهزة الكمبيوتر — والتي يطلق عليها في بعض الأحيان «الفجوة الدلالية» — تُقرَّب بطريقة التسلسل الهرمي. فتنفيذ المعمارية الخارجية يُوضح من خلال المعمارية الداخلية ومكوناتها. وإذا كانت المعمارية الداخلية نفسها معقَّدة ولا تزال توجد مسافة مفاهيمية بينها وبين الدوائر الإلكترونية، فإنها توصف وتُشرح من خلال مستوى تجريد أقل يطلق عليه «المعمارية الدقيقة». يمكن تفصيل المعمارية الدقيقة بدورها إلى ما يسمَّى «مستوى المنطق»، وقد يكون هذا المستوى قريبًا بالدرجة الكافية من مستوى الدوائر الإلكترونية بحيث يمكن تنفيذه من خلال مكونات مستوى المنطق. وبوجه عام، سينطبق على الكمبيوتر المادي مستويات الوصف/التجريد التالية:
المستوى ٤: المعمارية الخارجية
المستوى ٣: المعمارية الداخلية
المستوى ٢: المعمارية الدقيقة
المستوى ١: مستوى المنطق
المستوى ٠: مستوى الدوائر الإلكترونية

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

المكونات الأساسية لمعمارية الكمبيوتر الداخلية موضَّحة في الشكل ٥-٢. وهي تتكوَّن من الأجزاء التالية. أولًا، «نظام الذاكرة» ويتضمن التسلسل الهرمي للذاكرة الظاهر في المعمارية الخارجية والمتضمن أيضًا مكونات أخرى لا تُرى إلا في مستوى المعمارية الداخلية. يحتوي هذا النظام على وحدات تحكُّم مسئولة عن إدارة المعلومات (البنيات الرمزية) التي تمر بين الذاكرات في التسلسل الهرمي وبين النظام وباقي مكونات الكمبيوتر. ثانيًا، وحدة واحدة أو أكثر من «وحدات تفسير التعليمات» التي تجهز التعليمات من أجل تنفيذها والتحكم في تنفيذها. ثالثًا، وحدة واحدة أو أكثر من «وحدات التنفيذ» المسئولة عن التنفيذ الفعلي لفئات التعليمات المتنوعة المطلوبة في عملية الحوسبة. (والاسم الجامع لكلٍّ من نظام (أنظمة) تفسير التعليمات ووحدة (وحدات) التنفيذ هو «معالج» الكمبيوتر.) رابعًا، «شبكة الاتصال» التي تنقل بنيات الرموز فيما بين المكونات الوظيفية الأخرى. خامسًا، «نظام المدخلات/المخرجات» المسئول عن استقبال بنيات الرموز من — وإرسالها كذلك إلى — بيئة الكمبيوتر المادي. وأخيرًا، «وحدة التحكم» المسئولة عن إصدار الإشارات التي تتحكم في أنشطة المكونات الأخرى.
fig5
شكل ٥-٢: مخطط المعمارية الداخلية للكمبيوتر.

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

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

لا يزال هناك مكوِّن آخر في التسلسل الهرمي للذاكرة المرئي في المعمارية الداخلية، ولكن (عادةً) ما يكون مخفيًّا في المعمارية الخارجية. يسمَّى هذا العنصر بالذاكرة «المؤقتة» ويقع بين الذاكرة المتوسطة الأجل (الأساسية) والذاكرة القصيرة الأجل للغاية (السجل). في الشكل ٥-٢، هذا العنصر موضَّح باسم «الذاكرة القصيرة الأجل». تقع سعة حجم هذه الذاكرة وسرعة الوصول إليها بين سعة الحجم وسرعة الوصول الخاصين بهذين النوعين من الذاكرة. الفكرة الأساسية للذاكرة المؤقتة هي بما أن التعليمات داخل وحدة البرنامج تُنفَّذ على نحوٍ متسلسل (عادةً)، فيمكن وضع جزء من التعليمات في الذاكرة المؤقتة بحيث يمكن الوصول إليه بسرعةٍ أكبر مما لو كان في الذاكرة الأساسية. وبالمثل، طبيعة سلوك البرنامج هي أنه غالبًا ما يتم الوصول إلى البيانات أيضًا من عناوين متسلسلة في الذاكرة الأساسية؛ لذلك يمكن أيضًا وضع أجزاء من البيانات في ذاكرة مؤقتة. ولن يتم الوصول إلى الذاكرة الأساسية إلا في حال عدم وجود التعليمات أو عنصر البيانات ذي الصلة في الذاكرة المؤقتة، وسيؤدي ذلك إلى تبديل الجزء الجديد من المعلومات ذات الصلة بالجزء الموجود في الذاكرة المؤقتة، بحيث تكون المرجعية المستقبلية للتعليمات والبيانات متاحة في الذاكرة المؤقتة.

«كمبيوتر داخل الكمبيوتر»

إذن كيف يمكن أن نصل المعمارية الخارجية بالمعمارية الداخلية؟ كيف ترتبطان بعضهما ببعض في الواقع؟ لفهم هذه العلاقة، يجب أن نفهم وظيفة «وحدة التحكم» (المكتوبة على نحو منعزل مهيب في الشكل ٥-٢ وكأنها صندوق أسود).

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

وعلى وجه الخصوص، تصدر وحدة التحكم إشاراتٍ إلى المعالج (الذي هو مزيج من وحدات تفسير التعليمات وتنفيذها) لتجعل المعالج ينفِّذ خوارزمية تكرارية يطلق عليها عادةً «دورة التعليمات». دورة التعليمات هي التي تربط المعمارية الخارجية بالمعمارية الداخلية. وفيما يلي الصيغة العامة لهذا:

وحدة التحكم هي التي تتحكم في دورة التعليمات، ولكن وحدة تفسير التعليمات هي التي تنفِّذ الخطوات من خطوة إحضار التعليمة إلى خطوة إحضار المعاملات في الدورة، ثم خطوتَي التخزين والتحديث، وستنفِّذ وحدة التنفيذ خطوة التنفيذ. لنضرب مثلًا محددًا بتعليمة LOAD المذكورة فيما سبق:

لاحظ أن دلالة هذه التعليمة على مستوى المعمارية الخارجية ببساطة هي:

وعلى مستوى «المعمارية الداخلية»، فإن تنفيذ التعليمة ينطوي على أداء دورة التعليمات. تُحضر التعليمة إلى ، ثم يُفك تشفيرها وتُحسب عناوين المعاملات، ثم تُحضر المعاملات وتُنفَّذ التعليمة، وتُخزَّن النتيجة في السجل R2. وتُجرَّد كلُّ خطواتِ دورةِ التعليمات هذه في المعمارية الخارجية باعتبارها تفاصيلَ غير ضرورية، وذلك بقدرِ ما يخص مستخدمِي المعمارية الخارجية (مبرمجي النظام).

البرمجة الدقيقة

من باب التأكيد، دورة التعليمات عبارة عن خوارزمية تخضع خطواتها لسيطرة وحدة التحكم. في الواقع، قد لا يصعب على المرء فهْم أن هذه الخوارزمية يمكن تنفيذها «باعتبارها برنامجًا تنفِّذه وحدة التحكم» مع باقي الكمبيوتر (نظام الذاكرة ووحدة تفسير التعليمات ووحدات التنفيذ ومسارات الاتصال ونظام المدخلات/المخرجات) باعتباره جزءًا من «بيئة» البرنامج. مبتكِر هذه الرؤية — وكذلك تصميم معمارية وحدة التحكم بناءً عليها — هو عالِم الكمبيوتر البريطاني موريس ويلكس، وقد أطلق عليها اسم «البرمجة الدقيقة». وهي تشير إلى أن وحدة التحكم المبرمَجة بشكلٍ دقيق تنفِّذ برنامجًا دقيقًا ينفِّذ دورة التعليمات لكل نوع مميز من التعليمات، ما جعل البعض يطلق على وحدة التحكم المبرمَجة بشكل دقيق اسم «كمبيوتر داخل الكمبيوتر». وفي الحقيقة، معمارية الكمبيوتر كما يراها «اختصاصي البرمجة الدقيقة» تكون بالضرورة مفصَّلة أكثرَ من المعمارية الداخلية المشار إليها في الشكل ٥-٢. ورؤية اختصاصي البرمجة الدقيقة (أو منفذ وحدة التحكم) هذه للكمبيوتر هي «المعمارية الدقيقة» التي ذكرناها من قبل.

الحوسبة المتوازية

من الخصال المتأصلة في مبدعي الأشياء — مثل المهندسين والفنانين والحرفيين والكتَّاب وغيرهم — عدم الرضا أبدًا عما أنجزوه؛ فهم لا يفتئون يرجون صناعة أدواتٍ أفضل (مهما كان معيار «الأفضلية»). وفي مجال صناعة أجهزة الكمبيوتر المادية، فإن الرغبتين المهيمنتين متعلقتان بالمساحة والوقت؛ بمعنى صناعة أجهزة أصغر وأسرع.

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

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

الفكرة الأساسية بسيطة للغاية. يقال إن العمليتين أو المهمتين و يمكن تنفيذهما بالتوازي إذا حدثتا في «تدفُّق مهام تسلسلي» (مثل التعليمات في برنامج تسلسلي)، وكانتا مستقلتين بشكل متبادل. ويتحقق هذا الاستقلال التبادلي إذا كانتا تستوفيان شروطًا معينة. وستعتمد الطبيعة الدقيقة لهذه الشروط ودرجة تعقيدها على عدة عوامل، وبالأخص:
  • (أ)

    طبيعة المهام.

  • (ب)
    بنية تدفُّق المهام؛ بمعنى هل يحتوي التدفُّق على عبارات تكرارية (مثل أنواع مهام while do) أو عبارات شرطية (مثل if then else) أو عبارات goto.
  • (جـ)

    طبيعة الوحدات التي تنفِّذ المهام.

لنضرب المَثل بموقفٍ يتشارك فيه معالجان متطابقان نظامَ ذاكرة واحدًا. نريد أن نعرف الظروف التي يمكن أن يبدأ في ظلها تنفيذ المهمتين و بالتوازي اللتين تَظهران في تدفُّق مهام تسلسلي.
لنفترض أن مجموعة عناصر البيانات المدخلة إلى المهمة أُعطيت الاسم INPUT1 وتلك الخاصة بعناصر البيانات المخرجة منها أُعطيت الاسم OUTPUT1. وبالمثل في المهمة ، يكون لدينا المدخلات INPUT2 والمخرجات OUTPUT2. ولنفترض أن هذه المدخلات والمخرجات عبارة عن مواقع في الذاكرة الأساسية والسجلات أو أيهما. عندئذٍ، يمكن تنفيذ المهمة والمهمة بالتوازي (ويرمز إليها ) إذا ما استوفيت كل الشروط التالية:
  • (أ)
    استقلال المدخلات INPUT1 عن المخرجات OUTPUT2. (بمعنى أنه لا يوجد شيء مشترك بينهما.)
  • (ب)
    استقلال المدخلات INPUT2 عن المخرجات OUTPUT1.
  • (جـ)
    استقلال المخرجات OUTPUT1 عن المخرجات OUTPUT2.

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

[1] A B + C;
[2] D B F/E;
[3] X A – D;
[4] W B – F.

إذن:

INPUT1 = {B, C}, OUTPUT1 = {A}
INPUT2 = {B, E, F}, OUTPUT2 = {D}
INPUT3 = {A, D}, OUTPUT3 = {X}
INPUT4 = {B, F}, OUTPUT4 = {W}
بتطبيق شروط برنشتاين، يتضح التالي: أولًا، يمكن تنفيذ العبارتين الأولى والثانية بالتوازي؛ ثانيًا، يمكن تنفيذ العبارتين الثالثة والرابعة بالتوازي؛ لكن، ثالثًا، يوجد اعتمادية بين البيانات بين العبارتين الأولى والثالثة (المتغير )؛ رابعًا، يوجد قيد خاص باعتمادية البيانات بين العبارتين الثانية والثالثة (المتغير )، ومن ثَم لا يمكن تنفيذ هذين الزوجين بالتوازي.
إذن، بأخذ شروط التوازي وعدم التوازي هذه في الاعتبار، وبافتراض أنه يوجد ما يكفي من المعالجات التي يمكن أن تنفِّذ العبارات المتوازية في آن واحد، فإن الترتيب الفعلي لتنفيذ العبارات سيكون بالشكل التالي:
Statement [1] Statement [2];
Statement [3] Statement [4].

يوضِّح هذا الترتيب التسلسلي/المتوازي بنيةَ «البرنامج المتوازي»؛ حيث تكون المهام عبارات فردية توصف باستخدام إحدى لغات البرمجة. لكن لننظر في الكمبيوتر المادي ذاته. الهدف من البحث في المعالجة المتوازية له شقَّان واسعا النطاق، يتمثل أولهما في ابتكار خوارزميات أو استراتيجيات يمكن أن تكتشف وجهَ التوازي بين المهام، ومن ثَم تجدول المهام المتوازية أو تعيِّنها إلى وحدات مختلفة لتنفيذ المهام في نظام الكمبيوتر. أما الشق الثاني، فيتمثل في تصميم أجهزة كمبيوتر تدعم المعالجة المتوازية.

من منظور اختصاصي معمارية الكمبيوتر، توجد إمكانية التوازي على عدة مستويات من التجريد. وفيما يلي بعضٌ من «مستويات التوازي» هذه:
  • (١)

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

  • (٢)

    تنفيذ تدفقات مهام (أو تعليمات) على نحوٍ متزامن على تدفق بيانات فردي مشترك على عدة معالجات داخل كمبيوتر واحد.

  • (٣)

    شغل تدفقات بيانات متعددة لوحدات ذاكرة متعددة يتم الوصول إليها بنحو متزامن من خلال تدفق مهام (تعليمات) واحد على معالج واحد.

  • (٤)

    تنفيذ مقاطع (وتسمَّى سلاسل) تدفق مهام واحد بشكل متزامن، إما على معالج واحد أو على معالجات متعددة.

  • (٥)

    تنفيذ مراحل أو خطوات تعليمة واحدة بنحو متزامن داخل دورة التعليمات.

  • (٦)

    تنفيذ أجزاء برنامج دقيق بنحو متزامن داخل وحدة تحكم خاصة بجهاز الكمبيوتر.

تستخدم كل معماريات المعالجة المتوازية صورًا متباينة من الاحتمالات المذكورة آنفًا، وكثيرًا ما يجري الجمع بينها.

لنضرب مثالًا بمستوى التجريد الخامس المذكور فيما سبق. فكرة هذا المستوى هي أنه بما أن دورة التعليمات تتكون من عدة مراحل (بدايةً من إحضار التعليمة إلى تحديث pc)، فيمكن تنظيم المعالج نفسه الذي ينفِّذ دورة التعليمات في شكل «قناة تجزئة» (pipeline) تتكوَّن من هذه المراحل المتعددة. وستمر التعليمة الواحدة بكل مراحل القناة بطريقة تسلسلية. وتكون «المهام» في هذا المستوى من التجريد هي خطوات دورة التعليمات التي تمر عبْرها التعليمة. ولكن عندما تشغل التعليمة مرحلة من المراحل، تكون المراحل الأخرى خالية ويمكنها أن تعالج المراحل ذات الصلة للتعليمات الأخرى في تدفق التعليمات. في الحالة المثلى، يمكن تنفيذ دورة تعليمات تتكون من سبع خطوات بقناة تجزئة معالج تعليمات مكونة من سبع مراحل، ومن ثَم تصبح كل مراحل القناة مشغولة؛ حيث تعمل على سبع تعليمات مختلفة بالتوازي وكأنها خط تجميع. بالطبع هذه الحالة المثلى. لكن في الواقع العملي، يمكن لأزواج التعليمات في تدفق التعليمات أن تخرق شروط برنشتاين، ومن ثَم يمكن أن تحتوي القناة على مراحل «فارغة»، ويرجع سببُ ذلك إلى قيود اعتمادية البيانات بين مراحل أزواج التعليمات.
ويطلق على المعماريات التي تدعم هذا النوع من المعالجة المتوازية اسم المعماريات ذات قنوات التجزئة (انظر الشكل ٥-٣).
لنضرب مثالًا آخر، انظر إلى المهام في مستوى التجريد الأول المذكور فيما سبق. في هذا المستوى، تنفِّذ عدة معالِجات — داخل الكمبيوتر نفسه — تدفقات التعليمات (التي تنتمي، لنقُل، إلى وحدات برنامج منفصلة) بالتوازي. ربما تصل هذه المعالجات إلى نظام ذاكرة فردي مشترك واحد أو ربما ينقسم نظام الذاكرة ذاته إلى وحدات ذاكرة مستقلة. على أية حال، ستكون «شبكة ربط الذاكرة والمعالج» المتطورة بمثابة الواجهة بين أنظمة الذاكرة والمعالجات (انظر الشكل ٥-٤). ويُطلق على هذه المخططات «المعماريات المتعددة المعالِجات».
fig6
شكل ٥-٣: قناة تجزئة تعليمة.
fig7
شكل ٥-٤: مخطَّط معالج متعدد.

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

العلم في معمارية الكمبيوتر

بعد أن وصل القارئ إلى هذا القسم من الفصل، ربما يسأل: إذا ما سلَّمنا بأن معماريات الكمبيوتر أدواتٌ حدية، فبأي نحوٍ يُعَد هذا المجال من العلوم الاصطناعية؟

للإجابة عن هذا السؤال، لا بد من إدراكِ أن أكثرَ ما يَلفت الانتباه في هذا المجال هو أن مساحة المعرفة فيه تتكون (بالأساس) من مجموعة مبادئ «استدلالية»، وأن التفكير المتَّبع في تصميم معماريات الكمبيوتر هو «التفكير الاستدلالي».

الاستدلال — الذي مقابله الإنجليزي heuristics مشتَق من الكلمة اليونانية hurisko التي تعني «أن يجد» — هو القواعد أو الافتراضات التي تقدِّم أملًا أو بشرى بحلولٍ لأنواع معيَّنة من المسائل (التي سنناقشها في الفصل التالي)، ولكنها «غير مضمونة النجاح». ولنُعِد صياغةَ ما قاله عالِم الرياضيات الأمريكي من أصلٍ مجريٍّ جورج بوليا الذي أكَّد على نحو شهير دورَ الاستدلال في الاكتشافات الرياضية؛ التفكير الاستدلالي ليس قاطعًا ولا باتًّا ولا مؤكدًا البتة؛ بل هو بالأحرى مؤقَّت ومقبول منطقيًّا وتجريبي.

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

واستخدام الاستدلال يستجلب معه ضرورةَ «التجريب». فبما أن الاستدلال ليس مضمون النجاح، يكون الملجأ الوحيد تطبيقَه على مسألةٍ بعينها ومعرفةَ ما إذا كان مجديًا عمليًّا؛ أي، القيام بتجربة. وفي المقابل، قد تُشتق مبادئ الاستدلال ذاتها بناءً على تجارب سابقة. «إن الاستدلال والتجارب يسيران جنبًا إلى جنب» هي رؤية استوعبها جيدًا روادُ التفكير الاستدلالي أمثال ألين نيويل وهيربرت سايمون، وكذلك رواد مجال تصميم الكمبيوتر أمثال موريس ويلكس.

وكل هذا مقدِّمة لما يلي: «يندرج مجال معمارية الكمبيوتر ضمن العلوم الاصطناعية التجريبية الاستدلالية».

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

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

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

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

بالطبع يكاد هذا المخطط يطابق نموذجَ حل المسائل العلمية الذي طرحه فيلسوف العلم كارل بوبر:

هنا، تعبِّر عن موقف المسألة الحالي، وتعبِّر عن النظرية المؤقتة المطروحة لشرح الموقف أو حله، وتعبِّر عن عملية التخلص من الأخطاء المتعلقة بالنظرية (عن طريق التجارب و/أو التفكير النقدي)، وتعبِّر عن موقف المسألة الجديد الناتج بعد التخلص من الأخطاء. في سياق معمارية الكمبيوتر، تعبِّر عن مسألة التصميم المحدَّدة من حيث الأهداف والمتطلبات التي يجب أن يستوفيَها الكمبيوتر النهائي، وتعبِّر عن التصميم ذاته القائم على الاستدلال (وهو نظرية الكمبيوتر)، وتعبِّر عن عملية إجراء التجارب على التصميم وتقييمه وكذلك التخلُّص من عيوب التصميم ومشكلاته، ويعبِّر الناتج عن مجموعةٍ ربما تكون معدَّلة من الأهداف والمتطلبات، والتي تشكِّل مسألة تصميم جديدة.

جميع الحقوق محفوظة لمؤسسة هنداوي © ٢٠٢٤