ماذا يعني الوصول المباشر للذاكرة Direct Memory Access؟
الوصول المباشر إلى الذاكرة (DMA) هي طريقة تسمح لجهاز الإدخال/الإخراج (I/O) بإرسال البيانات أو استقبالها مباشرةً من الذاكرة الرئيسية أو إليها، متجاوزاً وحدة المعالجة المركزية لتسريع عمليات الذاكرة.
تتم إدارة العملية بواسطة شريحة تعرف باسم وحدة تحكم DMA (DMAC)
شرح Techopedia للوصول المباشر للذاكرة
يتم استخدام جزء محدد من الذاكرة لإرسال البيانات مباشرةً من أحد الأجهزة الطرفية إلى اللوحة الأم دون إشراك المعالج الدقيق، بحيث لا تتداخل العملية مع التشغيل الكلي للكمبيوتر.
في أجهزة الكمبيوتر القديمة، كانت هناك أربع قنوات DMA مرقمة بـ 0 و1 و2 و3. عندما تم تقديم ناقل التوسعة ذي البنية القياسية الصناعية (ISA) المكون من 16 بت، تمت إضافة القنوات 5 و6 و7.
كان ISA هو معيار ناقل كمبيوتر لأجهزة الكمبيوتر المتوافقة مع IBM، مما يسمح للجهاز ببدء المعاملات (إتقان الناقل) بسرعة أكبر. تحتوي وحدة تحكم DMA ISA على 8 قنوات DMA، كل واحدة منها مرتبطة بعنوان 16 بت وسجلات عد.
تم استبدال ISA منذ ذلك الحين بمنفذ الرسومات المسرع (AGP) وبطاقات توسيع التوصيل البيني للمكونات الطرفية (PCI)، وهي أسرع بكثير. تنقل كل بطاقة DMA حوالي 2 ميغابايت من البيانات في الثانية.
يتم استخدام أدوات موارد نظام الكمبيوتر للاتصال بين الأجهزة والبرمجيات. الأنواع الأربعة من موارد النظام هي:
- عناوين الإدخال/الإخراج.
- عناوين الذاكرة.
- أرقام طلبات المقاطعة (IRQ).
- قنوات الوصول المباشر للذاكرة (DMA).
تُستخدم قنوات DMA لتوصيل البيانات بين الجهاز الطرفي وذاكرة النظام. تعتمد جميع موارد النظام الأربعة على خطوط معينة على الناقل. يتم استخدام بعض الخطوط على الناقل لـ IRQs، وبعضها للعناوين (عناوين الإدخال/الإخراج وعنوان الذاكرة) وبعضها لقنوات DMA.
تمكّن قناة DMA الجهاز من نقل البيانات دون تعريض وحدة المعالجة المركزية لحمل عمل زائد. وبدون قنوات DMA، تقوم وحدة المعالجة المركزية بنسخ كل جزء من البيانات باستخدام ناقل طرفي من جهاز الإدخال/الإخراج. يؤدي استخدام الناقل الطرفي إلى شغل وحدة المعالجة المركزية أثناء عملية القراءة/الكتابة ولا يسمح بتنفيذ أي عمل آخر حتى اكتمال العملية.
أما مع DMA، فيمكن لوحدة المعالجة المركزية معالجة مهام أخرى أثناء تنفيذ عملية نقل البيانات. يتم بدء نقل البيانات أولاً بواسطة وحدة المعالجة المركزية. يمكن نقل كتلة البيانات من وإلى الذاكرة بواسطة DMAC بثلاث طرق.
في وضع التدفق، لا يتم تحرير ناقل النظام إلا بعد اكتمال نقل البيانات. في وضع سرقة الدورة، أثناء نقل البيانات بين قناة DMA وجهاز الإدخال/الإخراج، يتم التخلي عن ناقل النظام لبضع دورات على مدار الساعة حتى تتمكن وحدة المعالجة المركزية من أداء مهام أخرى. عند اكتمال نقل البيانات، تتلقى وحدة المعالجة المركزية طلب مقاطعة من وحدة التحكم DMA. في الوضع الشفاف، يمكن لوحدة التحكم DMAC أن تتولى مسؤولية ناقل النظام فقط عندما لا يكون المعالج بحاجة إليه.
ومع ذلك، قد يتسبب استخدام وحدة تحكم DMA في حدوث مشاكل في ترابط ذاكرة التخزين المؤقت. قد لا يتم تحديث البيانات المخزنة في ذاكرة الوصول العشوائي التي يتم الوصول إليها بواسطة وحدة تحكم DMA ببيانات ذاكرة التخزين المؤقت الصحيحة إذا كانت وحدة المعالجة المركزية تستخدم ذاكرة خارجية.
تتضمن الحلول مسح سطور ذاكرة التخزين المؤقت قبل بدء عمليات نقل DMA الصادرة، أو إجراء إبطال ذاكرة التخزين المؤقت على عمليات نقل DMA الواردة عند إرسال إشارات الكتابة الخارجية إلى وحدة التحكم في ذاكرة التخزين المؤقت.