وحدة تحكم الوصول المباشر للذاكرة في معمارية الكمبيوتر DMA Controller

اقرأ في هذا المقال


وحدة تحكم الوصول المباشر للذاكرة (DMA Controller) هو جهاز يسمح لأجهزة الإدخال/الإخراج بالوصول المباشر إلى الذاكرة بمشاركة أقل من المعالج، تحتاج وحدة التحكم (DMA) إلى نفس الدوائر القديمة للواجهة للتواصل مع وحدة المعالجة المركزية (CPU) وأجهزة الإدخال/الإخراج (Input/Output devices).

ما هي وحدة تحكم الوصول المباشر إلى الذاكرة DMA Controller؟

التعريف: وحدة تحكم الوصول المباشر إلى الذاكرة (DMA) أو (Direct Memory Access Controller)، هو جهاز خارجي يتحكم في نقل البيانات بين جهاز الإدخال/الإخراج والذاكرة دون تدخل المعالج، لديه القدرة على الوصول مباشرة إلى الذاكرة الرئيسية لعملية القراءة أو الكتابة، تمّ تصميم وحدة التحكم (DMA) بواسطة (Intel)، للحصول على أسرع معدل لنقل البيانات مع استخدام أقل للمعالج.

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

شرح وحدة تحكم الوصول المباشر للذاكرة DMA Controller:

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

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

ومن ثمّ عندما يكون لدى النظام وحدة تحكم (DMA)، فإنّه يحرر وحدة المعالجة المركزية من عملية نقل البيانات وفي ذلك الوقت المحدد يمكن لوحدة المعالجة المركزية تنفيذ عمليات أخرى، لقد ناقشنا حتى الآن الحاجة إلى وحدة تحكم (DMA)، دعنا الآن نفهم كيف ينفذ (DMA) أي تعليمات لنقل البيانات؟

تشغيل وحدة تحكم DMA في المعالجات الدقيقة:

في الأساس عندما يحتاج جهاز الإدخال/الإخراج إلى نقل البيانات إلى الذاكرة، فإنّه يرسل في البداية طلبًا إلى وحدة تحكم (DMA)، عند تلقي طلب نقل البيانات، ترسل وحدة التحكم طلب (HOLD) إلى وحدة المعالجة المركزية وتنتظر (HLDA) وهو ما يعد سوى إقرار من وحدة المعالجة المركزية.

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

تشغيل وحدة التحكم DMA داخل النظام في حالة الخمول والنشاط:

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

ولكن عندما تنشأ الحاجة لقراءة البيانات من القرص، ثمّ يرسل المعالج الدقيق تعليمات إلى وحدة التحكم في القرص حول عملية القراءة لتلك البيانات المعينة، عند جلب البيانات المطلوبة، ترسل وحدة التحكم بالقرص “الجهاز الطرفي” طلب (DMA)، أي إشارة (DRQ) إلى وحدة تحكم (DMA)، توضح إشارة (DRQ) أنّ الجهاز يريد مباشرة نقل البيانات إلى الذاكرة دون إزعاج المعالج.

لذلك، عند تلقي إشارة (DRQ)، يتم إرسال طلب (HOLD)، أي إشارة (HRQ) بواسطة وحدة تحكم (DMA) إلى المعالج الدقيق، تُظهر إشارة (HRQ) اهتمام وحدة تحكم (DMA) بالوصول إلى نواقل النظام، لذلك، عند تلقي طلب (HOLD)، تقوم وحدة المعالجة المركزية (CPU) بتبديل نواقلها من أجل منح التحكم لوحدة التحكم (DMA).

بمجرد أن يحرر المعالج النواقل، فإنّه يرسل إشارة (HLDA) إلى وحدة تحكم (DMA)، وعند استقبال إشارة (HLDA)، يتم منح التحكم في النواقل إلى وحدة التحكم (DMA) حيث يتغير موضع المفتاح الآن من (X) إلى (Y)، لذلك، عند التحكم في النواقل، يتم تمكين الدورة النشطة (active cycle) لـ (DMA)، وبالتالي، فإنّه يرسل الآن إشارة الاستلام (DACK) إلى وحدة التحكم بالقرص والتي توضح أنّها جاهزة الآن لنقل البيانات.

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

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

مخطط وحدة التحكم 8257 DMA:

  • (DRQ0 إلى DRQ3): رقم الدبابيس من (16 إلى 19)، يتم تمكين هذه الدبابيس كلما طلب جهاز الإدخال وحدة التحكم (DMA)، لنقل البيانات المباشر إلى الذاكرة الرئيسية أو منها، من بين جميع الأربعة، يحتل (DRQ0) الأولوية القصوى، في وضع الأولوية الثابتة.
  • (DACK0 إلى DACK3): رقم الدبابيس (14 و15 و24 و25)، هذه إشارات منخفضة نشطة ليست سوى إشارة إقرار تمّ إنشاؤها بواسطة وحدة التحكم لإظهار قبول (DMQ) بواسطة الأجهزة الطرفية.
  • (IOR): رقم الدبوس (1)، في الوضع الرئيسي للتشغيل، تشير الإشارة المنخفضة في هذا الدبوس إلى عملية القراءة على الجهاز الطرفي بواسطة وحدة التحكم (DMA)، بينما، في وضع (slave mode)، يُظهر أنّ عملية القراءة تتم عبر السجل الداخلي بواسطة المعالج.
  • (IOW): رقم الدبوس (2)، إنّه أيضًا دبوس منخفض نشط، تشير الإشارة المنخفضة في هذا الدبوس في الوضع (master mode) إلى أنّ عملية الكتابة تتم عبر الجهاز الطرفي، ومع ذلك، في الوضع (slave mode)، يقوم ناقل البيانات بتحميل محتواه في السجل.
  • (D0 إلى D7): رقم الدبابيس (26 إلى 30)، ومن (21 إلى 23)، هذه خطوط بيانات تحتوي على أوامر وكلمات الحالة في وضع (slave mode)، أثناء وجوده في الوضع الرئيسي (master mode)، ينقل بايت العنوان الأعلى إلى المزلاج (latch).
  • (A0 إلى A3): رقم الدبابيس (32 إلى 35)، هذه هي (4) سطور عناوين الأقل أهمية والتي تعمل كمدخلات ومخرجات في وضع التشغيل الرئيسي والنظام على التوالي.
  • (A4 إلى A7): رقم الدبابيس من (37 إلى 40)، هذه هي في الأساس خطوط عناوين ذات ترتيب منخفض تنتجها وحدة التحكم في الوضع (master mode).
  • (CLK): رقم الدبوس (12)، يستخدم هذا الدبوس لتوفير إشارة تردد ساعة داخلية إلى (8257).
  • (CS): رقم الدبوس (11)، يشير (CS) إلى اختيار الشريحة وهو دبوس منخفض نشط.
  • (HRQ): رقم الدبوس (10)، يُظهر تمكين هذا الدبوس طلب الوصول المباشر إلى الذاكرة بواسطة الجهاز الطرفي لعملية القراءة والكتابة.
  • (HLDA): رقم الدبوس (7)، يمثل تمكين هذا الدبوس إقرارًا من المعالج استجابةً لإشارة (HOLD) لوحدة تحكم (DMA).
  • (MEMR): رقم الدبوس (3)، تشير الإشارة المنخفضة في هذا الدبوس المعين إلى أنّ عملية القراءة تتم عبر الذاكرة بواسطة الجهاز الطرفي.
  • (MEMW): رقم الدبوس (4)، وهو أيضًا دبوس منخفض نشط، يتم تمكينه في وقت عملية كتابة الذاكرة بواسطة الجهاز الطرفي.
  • (ADSTB): رقم الدبوس (8)، يشير إلى (address strobe)، سيؤدي تمكين هذا الدبوس إلى فك مضاعفة العنوان وناقل البيانات باستخدام المزالج.
  • (VCC): رقم الدبوس (31)، يتم تطبيق إشارة التشغيل على هذا الدبوس.

شارك المقالة: