هندسة هارفارد المعدلة

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

هندسة هارفارد المعمارية

استخدم حاسوب هارفارد الأصلي ذو البنية المعمارية هارفارد، المعروف باسم هارفارد مارك 1 ، أنظمة ذاكرة منفصلة تمامًا لتخزين التعليمات والبيانات. كان المعالج المركزي يجلب التعليمات التالية ويحمل أو يخزن البيانات في آنٍ واحد [ 1 ] وبشكل مستقل. وهذا يختلف عن حاسوب فون نيومان ذي البنية المعمارية ، حيث تُخزن كل من التعليمات والبيانات في نظام الذاكرة نفسه، ويجب الوصول إليها بالتتابع (دون تعقيد ذاكرة التخزين المؤقت للمعالج المركزي ).

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

هندسة فون نيومان المعمارية

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

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

هندسة هارفارد المعدلة

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

بنية ذاكرة التخزين المؤقت المنقسمة (أو شبه فون نيومان)

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

بنية ذاكرة التعليمات كبيانات

يُحافظ تغيير آخر على طبيعة "مساحة العناوين المنفصلة" لآلة هارفارد، ولكنه يُتيح عمليات خاصة للآلة للوصول إلى محتويات ذاكرة التعليمات كبيانات. ولأن البيانات لا تُنفَّذ مباشرةً كتعليمات، فإن هذه الآلات لا تُعتبر دائمًا بنية هارفارد "مُعدَّلة".

  • إمكانية القراءة: يمكن نسخ قيم البيانات الأولية من ذاكرة التعليمات إلى ذاكرة البيانات عند بدء تشغيل البرنامج. أو، إذا لم تكن البيانات بحاجة إلى تعديل (قد تكون قيمة ثابتة، مثل باي ، أو سلسلة نصية )، فيمكن للبرنامج قيد التشغيل الوصول إليها مباشرةً من ذاكرة التعليمات دون شغل مساحة في ذاكرة البيانات (التي غالبًا ما تكون محدودة).
  • إمكانية الكتابة: تُعدّ إمكانية إعادة البرمجة ضرورية عمومًا؛ إذ نادرًا ما تعتمد الحواسيب كليًا على ذاكرة القراءة فقط (ROM) . على سبيل المثال، عادةً ما تحتوي وحدة التحكم الدقيقة على عمليات للكتابة إلى ذاكرة الفلاش المستخدمة لتخزين تعليماتها. [ 2 ] يمكن استخدام هذه الإمكانية لأغراضٍ منها تحديثات البرامج. يُعدّ استبدال ذاكرة EEPROM /PROM طريقةً بديلة.

بنية ذاكرة البيانات كتعليمات

تستطيع بعض معالجات بنية هارفارد، مثل معالج Maxim Integrated MAXQ، تنفيذ التعليمات المُستجلبة من أي جزء من الذاكرة ، على عكس معالج هارفارد الأصلي الذي يقتصر تنفيذه على التعليمات المُستجلبة من جزء ذاكرة البرنامج. وتستطيع هذه المعالجات، كغيرها من معالجات بنية هارفارد - وعلى عكس بنية فون نيومان البحتة - قراءة التعليمات وقراءة قيمة البيانات في آنٍ واحد، إذا كانتا في جزأين منفصلين من الذاكرة، وذلك لأن المعالج يحتوي على جزأين منفصلين (على الأقل) من الذاكرة مع ناقلات بيانات مستقلة. وأبرز فرق يلاحظه المبرمج بين هذا النوع من بنية هارفارد المُعدّلة وبنية فون نيومان البحتة هو أنه عند تنفيذ تعليمات من جزء من الذاكرة ، لا يمكن الوصول إلى نفس جزء الذاكرة كبيانات في الوقت نفسه. [ 3 ] [ 4 ]

المقارنات

يمكن استخدام ثلاث خصائص لتمييز آلات هارفارد المعدلة عن آلات هارفارد وفون نيومان الأصلية:

تشغل ذاكرتا التعليمات والبيانات مساحات عناوين مختلفة

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

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

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

يمكن الوصول إلى ذاكرة التعليمات وذاكرة البيانات بطرق مختلفة

كانت آلة هارفارد الأصلية، مارك 1 ، تخزن التعليمات على شريط ورقي مثقوب والبيانات في عدادات كهروميكانيكية. إلا أن هذا كان نتيجةً لقيود التكنولوجيا المتاحة آنذاك. أما اليوم، فقد تستخدم آلة هارفارد، مثل المتحكم الدقيق PIC، ذاكرة فلاش بعرض 12 بت للتعليمات، وذاكرة SRAM بعرض 8 بت للبيانات. في المقابل، يوفر متحكم فون نيومان الدقيق، مثل ARM7TDMI ، أو نواة هارفارد ARM9 المعدلة ، وصولاً موحداً إلى ذاكرة الفلاش وذاكرة SRAM (كوحدات بايت 8 بت في هذه الحالات).

الاستخدامات الحديثة للهندسة المعمارية المعدلة لجامعة هارفارد

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

توجد أيضًا معالجات تُصنّف ضمن فئة "آلات هارفارد" وفقًا لأدق تعريف (حيث تشغل ذاكرة البرنامج وذاكرة البيانات مساحات عناوين منفصلة)، وتُعدّل فقط من حيث إمكانية قراءة و/أو كتابة ذاكرة البرنامج كبيانات. على سبيل المثال، تُنفّذ تعليمات LPM (تحميل ذاكرة البرنامج) وSPM (تخزين ذاكرة البرنامج) في معالج Atmel AVR هذا التعديل. وتوجد حلول مشابهة في وحدات تحكم دقيقة أخرى مثل PIC و Z8Encore!، والعديد من عائلات معالجات الإشارات الرقمية مثل أنوية TI C55x ، وغيرها. ولأن تنفيذ التعليمات لا يزال محصورًا في مساحة عناوين البرنامج، فإن هذه المعالجات تختلف تمامًا عن آلات فون نيومان. كما يمكن للتوصيلات الخارجية تحويل نواة وحدة المعالجة المركزية من طراز هارفارد إلى نواة هارفارد مُعدّلة، على سبيل المثال، من خلال دمج إشارتي `PSEN#` (قراءة مساحة البرنامج) و`RD#` (قراءة مساحة البيانات الخارجية) خارجيًا عبر بوابة AND في وحدة تحكم دقيقة من عائلة Intel 8051 ، ويُقال حينها إن وحدة التحكم الدقيقة "متصلة بفون نيومان"، حيث تتوحد مساحات عناوين البيانات الخارجية والبرنامج.

يُسبب وجود مساحات عناوين منفصلة بعض الصعوبات في البرمجة بلغات عالية المستوى لا تدعم بشكل مباشر فكرة أن جداول البيانات للقراءة فقط قد تكون في مساحة عناوين مختلفة عن البيانات العادية القابلة للكتابة (وبالتالي تحتاج إلى قراءتها باستخدام تعليمات مختلفة). تدعم لغة البرمجة C مساحات عناوين متعددة إما من خلال امتدادات غير قياسية [ a ] أو من خلال الامتدادات القياسية الحالية لدعم المعالجات المدمجة .

انظر أيضاً

ملحوظات

  1. يذكر القائمون على مكتبة C القياسية لمنفذ GCC الخاص بمعالج Atmel AVR، الذي يتميز بمساحات عناوين منفصلة للتعليمات البرمجية والبيانات، في مقالهم " البيانات في مساحة البرنامج" أن مساحات العناوين المنفصلة تعني بنية هارفارد. ويشرحون أن لغة C تحتوي على مساحة عناوين مؤشر واحدة فقط، وبالتالي لم تُصمم لأجهزة بنية هارفارد. ثم يصفون الإضافات غير القياسية التي اعتمدها GCC لمعالج AVR ومكتبة AVR C للسماح بالوصول إلى البيانات المخزنة في ذاكرة التعليمات (البرنامج). بل ويشرحون أيضًا سبب عدم إمكانية استخدام الكلمة المفتاحية const لتمييز كائنات البيانات المراد وضعها في ذاكرة التعليمات.

مراجع

  1. دليل تشغيل الآلة الحاسبة ذات التحكم التسلسلي التلقائي . مطبعة جامعة أكسفورد. 1946. ص  4.
  2. "AVR109: البرمجة الذاتية" (ملف PDF) (مذكرة تطبيقية). أتمل. يونيو 2004. تم الاطلاع عليه بتاريخ 29 يناير 2015 .
  3. "دليل مستخدم عائلة MAXQ" . ماكسيم إنتجريتد . سبتمبر 2008. القسمان 1.2 "بنية ذاكرة هارفارد" و2.5 "الوصول إلى ذاكرة فون نيومان الزائف".
  4. كونارك جويل وآخرون. حول منفذ MAXQ GCC .