# بنية هارفارد المعدلة

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

## بنية هارفارد

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

## بنية هارفارد المعدلة

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