الوصول المباشر إلى الذاكرة
يُعد الوصول المباشر إلى الذاكرة ( DMA ) ميزة في العديد من أنظمة الحاسوب تسمح لبعض الأنظمة الفرعية للأجهزة بالوصول إلى ذاكرة النظام الرئيسية بشكل مستقل عن وحدة المعالجة المركزية (CPU). [ 1 ]
بدون تقنية الوصول المباشر إلى الذاكرة (DMA)، يجب استخدام الإدخال والإخراج المبرمج لنقل البيانات، وهو ما يشغل وحدة المعالجة المركزية بالكامل طوال مدة النقل، وبالتالي تصبح غير متاحة لأداء مهام أخرى. أما مع تقنية DMA، فتبدأ وحدة المعالجة المركزية عملية النقل أولاً، ثم تُجري عمليات أخرى أثناء تقدم النقل، وأخيرًا تتلقى مقاطعة من وحدة التحكم في الوصول المباشر إلى الذاكرة ( DMAC ) عند اكتمال العملية. تُعد هذه الميزة مفيدة في أي وقت لا تستطيع فيه وحدة المعالجة المركزية مواكبة معدل نقل البيانات، أو عندما تحتاج إلى أداء مهام أثناء انتظار نقل بيانات بطيء نسبيًا.
تستخدم العديد من أنظمة الأجهزة تقنية الوصول المباشر إلى الذاكرة (DMA)، بما في ذلك وحدات تحكم محركات الأقراص ، وبطاقات الرسومات ، وبطاقات الشبكة ، وبطاقات الصوت ، ووحدات تحكم DMA المخصصة (التي تعمل نيابةً عن أنواع الأجهزة المذكورة). كما تُستخدم تقنية DMA لنقل البيانات داخل الشريحة في بعض المعالجات متعددة النوى . وتستطيع أجهزة الكمبيوتر المزودة بتقنية DMA نقل البيانات من وإلى الأجهزة مع تقليل الحمل على وحدة المعالجة المركزية بشكل كبير مقارنةً بأجهزة الكمبيوتر غير المزودة بهذه التقنية.
يمكن استخدام تقنية الوصول المباشر إلى الذاكرة (DMA) أيضًا لنقل البيانات بين وحدات الذاكرة. تُتيح هذه التقنية إمكانية نقل عمليات الذاكرة المُكلفة، مثل عمليات النسخ الكبيرة أو عمليات التجميع والتشتيت ، من وحدة المعالجة المركزية إلى وحدة تحكم DMA. ومن الأمثلة على ذلك تقنية تسريع الإدخال/الإخراج (I/O Acceleration Technology ). وتُعد تقنية DMA ذات أهمية في بنى الحوسبة الشبكية على الشريحة والحوسبة داخل الذاكرة .
بينما يكون تسريع الأجهزة عادةً خاصًا بالبائع، يمكن استخدام الوصول المباشر إلى الذاكرة بواسطة برنامج تشغيل الفئة . [ 2 ]
مبادئ
طرف ثالث

يستخدم نظام الوصول المباشر للذاكرة القياسي، والذي يُسمى أيضًا نظام الوصول المباشر للذاكرة من طرف ثالث، وحدة تحكم خاصة به. تستطيع وحدة التحكم هذه توليد عناوين الذاكرة وبدء دورات قراءة أو كتابة البيانات. تحتوي على عدة سجلات مادية يمكن للمعالج المركزي (CPU) الكتابة إليها وقراءتها. تشمل هذه السجلات سجل عنوان الذاكرة، وسجل العد، وسجل تحكم واحد أو أكثر. بناءً على الميزات التي توفرها وحدة التحكم، قد تحدد سجلات التحكم هذه مزيجًا من المصدر والوجهة واتجاه النقل (القراءة من جهاز الإدخال/الإخراج أو الكتابة إليه). [ 3 ]
لإجراء عملية إدخال أو إخراج أو نقل بيانات من ذاكرة إلى أخرى، يقوم المعالج الرئيسي بتهيئة وحدة التحكم DMA بحساب عدد الكلمات المراد نقلها وعنوان الذاكرة المطلوب استخدامه. ثم يُصدر المعالج المركزي أمرًا للجهاز الطرفي لبدء نقل البيانات. بعد ذلك، تُزوّد وحدة التحكم DMA ذاكرة النظام بالعناوين وخطوط التحكم للقراءة والكتابة. في كل مرة يصبح فيها بايت من البيانات جاهزًا للنقل بين الجهاز الطرفي والذاكرة، تُزيد وحدة التحكم DMA عداد عنوانها الداخلي حتى يتم نقل كتلة البيانات بالكامل.
إتقان استخدام الحافلات
في نظام التحكم بالناقل ، المعروف أيضًا بنظام الوصول المباشر للذاكرة من الطرف الأول ، يُمكن منح وحدة المعالجة المركزية والأجهزة الطرفية التحكم في ناقل الذاكرة. عندما يصبح أحد الأجهزة الطرفية متحكمًا بالناقل، فإنه يستطيع الكتابة مباشرةً إلى ذاكرة النظام دون تدخل وحدة المعالجة المركزية، مع توفير عنوان الذاكرة وإشارات التحكم حسب الحاجة. يجب اتخاذ بعض الإجراءات لوضع المعالج في حالة انتظار لتجنب حدوث تنازع على الناقل . قد يحتوي الجهاز الطرفي نفسه على سجلات مادية، مثل سجلات العناوين والعد، للتحكم في عملية الوصول المباشر للذاكرة.
أنماط التشغيل
وضع التصوير المتتابع
في وضع النقل المتتابع ، تُنقل كتلة بيانات كاملة في تسلسل متصل. بمجرد أن يمنح المعالج المركزي وحدة التحكم في الوصول المباشر إلى الذاكرة (DMA) حق الوصول إلى ناقل النظام، تنقل جميع بايتات البيانات في كتلة البيانات قبل إعادة التحكم في ناقل النظام إلى المعالج المركزي، ولكنها تجعل المعالج المركزي غير نشط لفترات طويلة نسبيًا. يُسمى هذا الوضع أيضًا "وضع نقل الكتل".
وضع سرقة الدراجات
يُستخدم وضع سرقة الدورة في الأنظمة التي لا ينبغي فيها تعطيل وحدة المعالجة المركزية (CPU) طوال المدة اللازمة لأوضاع نقل البيانات المتتابعة. في هذا الوضع، يحصل متحكم الوصول المباشر إلى الذاكرة (DMA) على حق الوصول إلى ناقل النظام بنفس طريقة الوضع المتتابع، باستخدام إشارتي طلب الناقل (BR ) ومنح الناقل (BG ) ، وهما الإشارتان اللتان تتحكمان في الواجهة بين وحدة المعالجة المركزية ومتحكم الوصول المباشر إلى الذاكرة. مع ذلك، في وضع سرقة الدورة، وبعد نقل وحدة بيانات واحدة، يُلغى التحكم في ناقل النظام لصالح وحدة المعالجة المركزية عبر إشارة منح الناقل. ثم يُعاد طلبه باستمرار عبر إشارة طلب الناقل، ناقلاً وحدة بيانات واحدة في كل طلب، حتى يتم نقل كتلة البيانات بالكامل. [ 4 ] من خلال الحصول على التحكم في ناقل النظام وتحريره باستمرار، يقوم متحكم الوصول المباشر إلى الذاكرة بدمج عمليات نقل التعليمات والبيانات. تعالج وحدة المعالجة المركزية تعليمة، ثم ينقل متحكم الوصول المباشر إلى الذاكرة قيمة بيانات واحدة، وهكذا. لا يتم نقل البيانات بالسرعة نفسها، ولكن وحدة المعالجة المركزية لا تبقى في وضع الخمول لفترة طويلة كما في الوضع المتتابع. يُعد وضع سرقة الدورة مفيدًا لأجهزة التحكم التي تراقب البيانات في الوقت الفعلي.
الوضع الشفاف
يستغرق الوضع الشفاف أطول وقت لنقل كتلة من البيانات، ولكنه في الوقت نفسه الوضع الأكثر كفاءة من حيث أداء النظام بشكل عام. في هذا الوضع، لا ينقل متحكم الوصول المباشر إلى الذاكرة (DMA) البيانات إلا عندما تُجري وحدة المعالجة المركزية عمليات لا تستخدم ناقلات النظام. الميزة الأساسية للوضع الشفاف هي أن وحدة المعالجة المركزية لا تتوقف عن تنفيذ برامجها، ويكون نقل البيانات عبر DMA مجانيًا من حيث الوقت، بينما يتمثل عيبه في أن الجهاز يحتاج إلى تحديد متى لا تستخدم وحدة المعالجة المركزية ناقلات النظام، وهو ما قد يكون معقدًا. يُطلق على هذا الوضع أيضًا اسم " وضع نقل بيانات DMA المخفي ".
تماسك الذاكرة المؤقتة
![]()
قد يؤدي الوصول المباشر إلى الذاكرة (DMA) إلى مشاكل في اتساق الذاكرة المخبئية . تخيل وحدة معالجة مركزية مزودة بذاكرة مخبئية وذاكرة خارجية يمكن للأجهزة الوصول إليها مباشرةً باستخدام DMA. عندما تصل وحدة المعالجة المركزية إلى الموقع X في الذاكرة، تُخزَّن القيمة الحالية في الذاكرة المخبئية. ستُحدِّث العمليات اللاحقة على X النسخة المخزنة مؤقتًا من X، ولكن ليس نسخة الذاكرة الخارجية، بافتراض أن الذاكرة المخبئية من نوع الكتابة المؤجلة . إذا لم تُفرَّغ الذاكرة المخبئية إلى الذاكرة الخارجية قبل محاولة الجهاز الوصول إلى X مرة أخرى، فسيتلقى الجهاز قيمة قديمة لـ X.
وبالمثل، إذا لم يتم إبطال النسخة المخزنة مؤقتًا من X عندما يقوم جهاز بكتابة قيمة جديدة إلى الذاكرة، فسيعمل المعالج المركزي على قيمة قديمة من X.
يمكن معالجة هذه المشكلة في تصميم النظام بإحدى طريقتين: تُطبّق الأنظمة المتماسكة مع ذاكرة التخزين المؤقت طريقةً في العتاد تُسمى " مراقبة ناقل البيانات "، حيث تُرسل إشارات الكتابة الخارجية إلى وحدة تحكم ذاكرة التخزين المؤقت التي بدورها تُجري عملية إبطال لذاكرة التخزين المؤقت لعمليات الكتابة عبر الوصول المباشر إلى الذاكرة (DMA)، أو عملية مسح لذاكرة التخزين المؤقت لعمليات القراءة عبر الوصول المباشر إلى الذاكرة. أما الأنظمة غير المتماسكة، فتترك هذه المهمة للبرمجيات، حيث يجب على نظام التشغيل التأكد من مسح خطوط ذاكرة التخزين المؤقت قبل بدء عملية نقل DMA صادرة، وإبطالها قبل الوصول إلى نطاق الذاكرة المتأثر بعملية نقل DMA واردة. كما يجب على نظام التشغيل التأكد من عدم وصول أي سلاسل عمليات قيد التشغيل إلى نطاق الذاكرة في هذه الأثناء. تُضيف الطريقة الأخيرة بعض العبء الإضافي على عملية DMA، حيث تتطلب معظم العتاد حلقةً لإبطال كل خط من خطوط ذاكرة التخزين المؤقت على حدة.
توجد أيضًا أنظمة هجينة، حيث تكون ذاكرة التخزين المؤقت الثانوية من المستوى الثاني متماسكة بينما تتم إدارة ذاكرة التخزين المؤقت من المستوى الأول (عادةً على وحدة المعالجة المركزية) بواسطة البرامج.
أمثلة
ISA
في جهاز IBM PC الأصلي (والجهاز اللاحق PC/XT )، كان هناك متحكم واحد فقط من نوع Intel 8237 DMA قادر على توفير أربع قنوات DMA (مرقمة من 0 إلى 3). كانت هذه القنوات تُجري عمليات نقل بيانات 8 بت (حيث أن 8237 كان جهازًا 8 بت، متوافقًا تمامًا مع بنية المعالج/الناقل i8088 في جهاز الكمبيوتر الشخصي )، وكان بإمكانها الوصول إلى أول ميغابايت فقط (وفقًا لمعيار i8086 /8088) من ذاكرة الوصول العشوائي، وكانت محدودة في الوصول إلى مقاطع فردية بحجم 64 كيلوبايت ضمن هذه المساحة (مع أن قناتي المصدر والوجهة كانتا قادرتين على الوصول إلى مقاطع مختلفة). إضافةً إلى ذلك، كان بالإمكان استخدام المتحكم فقط لعمليات النقل من وإلى أو بين أجهزة الإدخال/الإخراج الخاصة بناقل التوسعة، حيث أن 8237 كان بإمكانه إجراء عمليات نقل البيانات من الذاكرة إلى الذاكرة فقط باستخدام القناتين 0 و1، وكانت القناة 0 في جهازي PC (وXT) مخصصة لتحديث الذاكرة الديناميكي . وقد منع هذا من استخدامه كـ " Blitter " للأغراض العامة، وبالتالي، كانت عمليات نقل البيانات في ذاكرة الكتل في جهاز الكمبيوتر، والتي كانت محدودة بسرعة PIO العامة لوحدة المعالجة المركزية، بطيئة للغاية.
مع جهاز IBM PC/AT ، أضاف ناقل AT المُحسّن (المعروف أيضًا باسم بنية المعيار الصناعي ISA) وحدة تحكم DMA ثانية من طراز 8237 لتوفير ثلاث قنوات إضافية، والتي كانت ضرورية للغاية (5-7؛ تُستخدم القناة 4 كقناة متسلسلة لوحدة التحكم 8237 الأولى)، كما يتضح من تضارب الموارد مع قابلية التوسع الإضافية لجهاز XT مقارنةً بجهاز PC الأصلي. يسمح عرض ناقل العناوين الممتد لـ 24 بت في ISA DMA بالوصول إلى ما يصل إلى 16 ميجابايت من الذاكرة السفلية. [ 5 ] كما أُعيد توصيل سجل الصفحة لمعالجة مساحة عناوين الذاكرة الكاملة البالغة 16 ميجابايت لوحدة المعالجة المركزية 80286. تم دمج وحدة التحكم الثانية هذه أيضًا بطريقة قادرة على إجراء عمليات نقل 16 بت عند استخدام جهاز الإدخال/الإخراج كمصدر و/أو وجهة للبيانات (حيث أنها في الواقع تعالج البيانات بنفسها فقط لعمليات النقل من الذاكرة إلى الذاكرة، وإلا فإنها ببساطة تتحكم في تدفق البيانات بين الأجزاء الأخرى من نظام 16 بت، مما يجعل عرض ناقل البيانات الخاص بها غير مهم نسبيًا)، مما يضاعف إنتاجية البيانات عند استخدام القنوات الثلاث العليا.
لأغراض التوافق، ظلت قنوات DMA الأربع السفلية محدودة بنقل البيانات بحجم 8 بت فقط. ورغم أن عمليات النقل بين وحدات الذاكرة أصبحت ممكنة تقنيًا بفضل تحرير القناة 0 من معالجة تحديث DRAM، إلا أنها كانت محدودة الفائدة عمليًا نظرًا لانخفاض معدل نقل البيانات في وحدة التحكم مقارنةً بما يمكن أن تحققه وحدة المعالجة المركزية (أي معالج 80286 مُحسَّن ذو 16 بت يعمل بتردد 6 ميجاهرتز كحد أدنى، مقابل وحدة تحكم ذات 8 بت بتردد 4.77 ميجاهرتز). في كلتا الحالتين، بقيت مشكلة حدود القطاعات بحجم 64 كيلوبايت قائمة، حيث لم تتمكن عمليات النقل الفردية من عبور القطاعات (بل كانت "تلتف" حول بداية القطاع نفسه) حتى في وضع 16 بت. مع ذلك، كانت هذه المشكلة عمليًا تتعلق بتعقيد البرمجة أكثر من الأداء، إذ أن الحاجة المستمرة لتحديث DRAM (مهما كانت طريقة معالجته) لاحتكار ناقل البيانات كل 15 ميكروثانية تقريبًا حالت دون استخدام عمليات نقل الكتل الكبيرة (والسريعة، ولكن غير القابلة للمقاطعة).
بسبب أدائها المتأخر (1.6 ميجابايت /ثانية كحد أقصى لقدرة نقل 8 بت عند 5 ميجاهرتز، [ 6 ] ولكن ليس أكثر من 0.9 ميجابايت /ثانية في PC/XT و 1.6 ميجابايت /ثانية لعمليات نقل 16 بت في AT بسبب تكاليف ناقل ISA والتداخلات الأخرى مثل انقطاعات تحديث الذاكرة [ 1 ] ) وعدم توفر أي درجات سرعة تسمح بتثبيت بدائل مباشرة تعمل بسرعات أعلى من ساعة الكمبيوتر الشخصي القياسية 4.77 ميجاهرتز، فقد أصبحت هذه الأجهزة قديمة بشكل فعال منذ أواخر الثمانينيات.
أنظمة 80386 و32 بت
على وجه الخصوص، أدى ظهور معالج 80386 في عام 1985 وقدرته على نقل البيانات 32 بت (على الرغم من التحسينات الكبيرة في كفاءة حساب العناوين ونقل البيانات في وحدات المعالجة المركزية من إنتل بعد معالج 80186، مما جعل عمليات نقل البيانات عبر ناقل PIO، حتى عبر ناقل 16 بت في معالجي 286 و 386SX، تتفوق بسهولة على معالج 8237)، بالإضافة إلى تطوير نسخ محسّنة ( EISA ) أو بدائل لناقل ( MCA و VLB و PCI ) ناقل "ISA" مع أنظمة فرعية DMA ذات أداء أعلى بكثير (تصل إلى 33 ميجابايت/ثانية كحد أقصى لـ EISA، و 40 ميجابايت/ثانية لـ MCA، و 13 ميجابايت/ثانية عادةً لـ VLB/PCI)، إلى جعل وحدات التحكم DMA الأصلية تبدو وكأنها عبء على الأداء أكثر من كونها معززًا له. وقد تم دعمها بالقدر المطلوب لدعم مكونات أجهزة الكمبيوتر الشخصية القديمة المدمجة في الأجهزة اللاحقة.
من بين قطع الأجهزة القديمة التي استمرت في استخدام تقنية ISA DMA بعد شيوع ناقلات التوسعة 32 بت، بطاقات Sound Blaster التي كان من الضروري الحفاظ على توافقها التام مع معيار Sound Blaster ؛ وأجهزة الإدخال/الإخراج الفائقة على اللوحات الأم التي غالبًا ما كانت تتضمن وحدة تحكم مدمجة لقرص مرن ، ووحدة تحكم بالأشعة تحت الحمراء IrDA عند اختيار وضع FIR (الأشعة تحت الحمراء السريعة)، ووحدة تحكم بمنفذ متوازي IEEE 1284 عند اختيار وضع ECP. في الحالات التي كان لا يزال يُستخدم فيها معالج 8237 الأصلي أو المعالجات المتوافقة معه مباشرةً، قد يظل نقل البيانات من وإلى هذه الأجهزة محدودًا بأول 16 ميجابايت من ذاكرة الوصول العشوائي الرئيسية ، بغض النظر عن مساحة العناوين الفعلية للنظام أو مقدار الذاكرة المثبتة.
تحتوي كل قناة DMA على سجل عنوان 16 بت وسجل عدّ 16 بت مرتبط بها. لبدء نقل البيانات، يقوم برنامج تشغيل الجهاز بتهيئة سجلي العنوان والعدّ لقناة DMA، بالإضافة إلى تحديد اتجاه نقل البيانات، قراءةً أو كتابةً. ثم يُصدر تعليماته إلى وحدة DMA لبدء النقل. عند اكتمال النقل، يُقاطع الجهاز وحدة المعالجة المركزية.
تتيح تقنية DMA، سواءً كانت مُشتتة أو مُجمّعة أو مُوجّهة، نقل البيانات من وإلى مناطق ذاكرة متعددة في عملية DMA واحدة. وهي تُعادل ربط عدة طلبات DMA بسيطة معًا. والهدف من ذلك هو تخفيف العبء عن وحدة المعالجة المركزية (CPU) فيما يتعلق بمهام مقاطعة الإدخال/الإخراج ونسخ البيانات.
يرمز DRQ إلى طلب البيانات ، وDACK إلى تأكيد البيانات . تُمثل هذه الرموز، الظاهرة على المخططات الإلكترونية لأنظمة الحاسوب المزودة بوظيفة الوصول المباشر إلى الذاكرة (DMA)، خطوط الإشارة الإلكترونية بين وحدة المعالجة المركزية (CPU) ووحدة تحكم DMA. تحتوي كل قناة DMA على خط طلب وخط تأكيد. يجب تهيئة الجهاز الذي يستخدم DMA لاستخدام كلا خطي قناة DMA المخصصة له.
سمحت بنية ISA ذات 16 بت بالتحكم في ناقل البيانات. [ 7 ]
تخصيصات ISA DMA القياسية:
- تحديث ذاكرة الوصول العشوائي الديناميكية (قديم)
- عادةً ما تكون بطاقة الصوت ISA هي مكونات جهاز المستخدم
- وحدة تحكم القرص المرن
- WDMA لوحدة تحكم القرص الصلب (تم استبدالها بأوضاع UDMA )، منفذ متوازي (منفذ يدعم ECP)، أو بعض نسخ SoundBlaster مثل OPTi 928
- وحدة تحكم DMA 8237
- وحدة تحكم القرص الصلب ( PS/2 فقط)، أو جهاز المستخدم، وعادةً ما تكون بطاقة صوت ISA
- أجهزة المستخدم
- أجهزة المستخدم
PCI
لا تحتوي بنية PCI على وحدة تحكم مركزية للوصول المباشر إلى الذاكرة (DMA)، على عكس بنية ISA. بدلاً من ذلك، يمكن لجهاز PCI طلب التحكم في ناقل البيانات (ليصبح المتحكم الرئيسي فيه ) وطلب القراءة والكتابة من ذاكرة النظام. وبشكل أدق، يطلب مكون PCI ملكية ناقل البيانات من وحدة تحكم ناقل PCI (عادةً جسر مضيف PCI، وجسر PCI إلى PCI [ 8 ] )، والتي ستتولى عملية التحكيم في حال طلب عدة أجهزة ملكية ناقل البيانات في وقت واحد، حيث لا يمكن أن يكون هناك سوى متحكم رئيسي واحد في ناقل البيانات في الوقت نفسه. عند منح المكون الملكية، سيصدر أوامر قراءة وكتابة عادية على ناقل PCI، والتي ستُنفذها وحدة تحكم ناقل PCI.
على سبيل المثال، في جهاز كمبيوتر يعمل بمعالج Intel Core ، يقوم الجسر الجنوبي بتوجيه عمليات نقل البيانات إلى وحدة تحكم الذاكرة (المدمجة في شريحة المعالج) باستخدام بروتوكول DMI ، والتي بدورها تحولها إلى عمليات DDR وترسلها عبر ناقل الذاكرة. ونتيجة لذلك، تتضمن عملية نقل البيانات عبر PCI DMA عددًا من الخطوات؛ إلا أن ذلك لا يمثل مشكلة كبيرة، نظرًا لأن جهاز PCI أو ناقل PCI نفسه أبطأ بعشر مرات من باقي المكونات (انظر قائمة نطاقات تردد الأجهزة ).
قد يستخدم معالج x86 الحديث أكثر من 4 جيجابايت من الذاكرة، إما باستخدام وضع 64 بت الأصلي لمعالج x86-64 ، أو باستخدام امتداد العنوان الفيزيائي (PAE)، وهو وضع عنونة 36 بت. في هذه الحالة، لا يستطيع الجهاز الذي يستخدم DMA مع ناقل عناوين 32 بت الوصول إلى الذاكرة التي تتجاوز 4 جيجابايت. تُمكّن آلية دورة العنوان المزدوجة (DAC) الجديدة، إذا طُبّقت على كلٍ من ناقل PCI والجهاز نفسه، [ 9 ] عنونة DMA 64 بت. وإلا، فسيتعين على نظام التشغيل إيجاد حل بديل للمشكلة إما باستخدام مخازن مؤقتة مزدوجة مكلفة (مصطلح DOS/Windows) تُعرف أيضًا باسم مخازن الارتداد ( FreeBSD /Linux)، أو باستخدام وحدة إدارة الذاكرة للإدخال/ الإخراج (IOMMU) لتوفير خدمات ترجمة العناوين إن وُجدت.
I/OAT
كمثال على محرك الوصول المباشر للذاكرة (DMA) المدمج في وحدة المعالجة المركزية للأغراض العامة، تتضمن بعض شرائح Intel Xeon محرك DMA يُسمى تقنية تسريع الإدخال/الإخراج (I/OAT)، والذي يُمكنه تخفيف عبء نسخ الذاكرة عن وحدة المعالجة المركزية الرئيسية، مما يُتيح لها القيام بمهام أخرى. [ 10 ] في عام 2006، أجرى أندرو غروفر، مطور نواة لينكس في شركة Intel، اختبارات معيارية باستخدام تقنية I/OAT لتخفيف عبء نسخ حركة مرور الشبكة، ولم يجد تحسنًا في استخدام وحدة المعالجة المركزية يتجاوز 10% مع أحمال العمل المُستقبلة. [ 11 ]
DDIO
أُدخلت تحسينات إضافية على آلية الوصول المباشر إلى الذاكرة (DMA) في معالجات Intel Xeon E5 من خلال ميزة الإدخال/الإخراج المباشر للبيانات ( DDIO )، مما يسمح لـ "نوافذ" DMA بالتواجد داخل ذاكرة التخزين المؤقت للمعالج بدلاً من ذاكرة الوصول العشوائي (RAM). ونتيجةً لذلك، تُستخدم ذاكرة التخزين المؤقت للمعالج كمصدر ووجهة رئيسيين للإدخال/الإخراج، مما يسمح لوحدات التحكم في واجهة الشبكة (NICs) بالوصول المباشر إلى ذاكرة التخزين المؤقت من المستوى الأخير (L3) للمعالجات المحلية وتجنب جلب بيانات الإدخال/الإخراج المكلف من ذاكرة الوصول العشوائي. وبالتالي، تُقلل DDIO من زمن استجابة معالجة الإدخال/الإخراج الإجمالي، وتسمح بمعالجة الإدخال/الإخراج بالكامل في ذاكرة التخزين المؤقت، وتمنع عرض النطاق الترددي/زمن الاستجابة المتاح لذاكرة الوصول العشوائي من أن يصبح عائقًا أمام الأداء، وقد تُقلل من استهلاك الطاقة من خلال السماح لذاكرة الوصول العشوائي بالبقاء لفترة أطول في حالة استهلاك منخفض للطاقة. [ 12 ] [ 13 ] [ 14 ] [ 15 ]
AHB
في أنظمة الرقاقات المتكاملة والأنظمة المدمجة ، تُعدّ بنية ناقل النظام النموذجية عبارة عن ناقل معقد مدمج في الرقاقة، مثل ناقل AMBA عالي الأداء . يُعرّف AMBA نوعين من مكونات ناقل AMBA: رئيسي وتابع. تُشبه الواجهة التابعة منافذ الإدخال/الإخراج المبرمجة، والتي من خلالها يستطيع البرنامج (الذي يعمل على وحدة معالجة مركزية مدمجة، مثل ARM ) كتابة/قراءة سجلات الإدخال/الإخراج أو (بشكل أقل شيوعًا) كتل الذاكرة المحلية داخل الجهاز. أما الواجهة الرئيسية، فيمكن للجهاز استخدامها لإجراء عمليات الوصول المباشر إلى الذاكرة (DMA) من/إلى ذاكرة النظام دون تحميل وحدة المعالجة المركزية بشكل كبير.
لذا، فإن الأجهزة ذات النطاق الترددي العالي، مثل وحدات التحكم بالشبكة التي تحتاج إلى نقل كميات هائلة من البيانات من وإلى ذاكرة النظام، ستحتوي على محولين للواجهة مع ناقل AHB: واجهة رئيسية وواجهة تابعة. وذلك لأن ناقلات البيانات المدمجة، مثل AHB، لا تدعم تغيير حالة الناقل أو تبديل اتجاه أي خط عليه. ومثل PCI، لا حاجة إلى وحدة تحكم مركزية للوصول المباشر إلى الذاكرة (DMA) لأن DMA يتحكم بالناقل، ولكن يلزم وجود وسيط في حال وجود أكثر من وحدة تحكم رئيسية في النظام.
داخليًا، يوجد عادةً محرك DMA متعدد القنوات في الجهاز لتنفيذ عمليات تجميع وتشتيت متعددة متزامنة وفقًا لما تمت برمجته بواسطة البرنامج.
خلية
كمثال على استخدام تقنية الوصول المباشر إلى الذاكرة (DMA) في نظام متعدد المعالجات على شريحة واحدة ، يشتمل معالج Cell من IBM/Sony/Toshiba على وحدة DMA لكل عنصر من عناصر المعالجة التسعة، بما في ذلك عنصر معالج Power واحد (PPE) وثمانية عناصر معالجة تآزرية (SPE). ونظرًا لأن تعليمات التحميل/التخزين الخاصة بعنصر المعالجة التآزري (SPE) لا تستطيع قراءة/كتابة سوى ذاكرته المحلية، فإن هذا العنصر يعتمد كليًا على وحدات DMA لنقل البيانات من وإلى الذاكرة الرئيسية والذاكرات المحلية لعناصر المعالجة التآزرية الأخرى. وبالتالي، تعمل تقنية DMA كوسيلة أساسية لنقل البيانات بين النوى داخل وحدة المعالجة المركزية هذه (على عكس بنى المعالجات المتماسكة ذات الذاكرة المخبئية، مثل وحدة معالجة الرسومات للأغراض العامة Larrabee التي ألغت شركة Intel مشروعها ).
تتميز تقنية الوصول المباشر إلى الذاكرة (DMA) في Cell بتماسك كامل لذاكرة التخزين المؤقت (مع ملاحظة أن مخازن البيانات المحلية لوحدات المعالجة الخاصة (SPEs) التي تعمل عليها تقنية DMA لا تعمل كذاكرة تخزين مؤقت متماسكة عالميًا بالمعنى القياسي ). في كلٍ من عمليتي القراءة ("get") والكتابة ("put")، يمكن لأمر DMA نقل إما منطقة كتلة واحدة بحجم يصل إلى 16 كيلوبايت، أو قائمة تتراوح من 2 إلى 2048 كتلة من هذا النوع. يُصدر أمر DMA بتحديد زوج من عنوان محلي وعنوان بعيد: على سبيل المثال، عندما يُصدر برنامج SPE أمر DMA للكتابة، فإنه يُحدد عنوان ذاكرته المحلية كمصدر وعنوان ذاكرة افتراضية (يشير إما إلى الذاكرة الرئيسية أو الذاكرة المحلية لبرنامج SPE آخر) كهدف، بالإضافة إلى حجم الكتلة. وفقًا لتجربة، يصل الأداء الأمثل لتقنية DMA في Cell (3 جيجاهرتز، في ظل حركة مرور منتظمة) إلى 200 جيجابايت في الثانية. [ 16 ]
رقائق التحكم في الوصول المباشر للذاكرة
خطوط الأنابيب
قد تستفيد المعالجات المزودة بذاكرة مؤقتة وتقنية الوصول المباشر إلى الذاكرة (مثل معالجات الإشارات الرقمية ومعالج Cell ) من تداخل عمليات الوصول المباشر إلى الذاكرة مع عمليات المعالجة عبر التخزين المؤقت المزدوج أو التخزين المؤقت المتعدد. على سبيل المثال، تُقسّم الذاكرة المدمجة إلى مخزنين مؤقتين؛ حيث يعمل المعالج على البيانات في أحدهما، بينما يقوم محرك الوصول المباشر إلى الذاكرة بتحميل البيانات وتخزينها في الآخر. يتيح هذا للنظام تجنب زمن استجابة الذاكرة والاستفادة من عمليات النقل المتتالية ، على حساب الحاجة إلى نمط وصول متوقع إلى الذاكرة .
انظر أيضاً
- ملحق AT – واجهة تخزين الكمبيوتر القياسية. صفحات تعرض أوصافًا مختصرة لأهداف إعادة التوجيه.
- التشغيل المستقل للأجهزة الطرفية - ميزة في وحدة التحكم الدقيقة (MCU) لتفريغ المهام
- بليتر – دائرة متكاملة لمزامنة البيانات بسرعة
- قنوات الإدخال/الإخراج – بنية إدخال/إخراج عالية الأداء
- هجوم DMA – هجوم إلكتروني يستغل منافذ التوسعة عالية السرعة
- الإدخال/الإخراج المُمَثَّل في الذاكرة – طريقة اتصال وحدة المعالجة المركزية، صفحات تعرض أوصافًا مختصرة لأهداف إعادة التوجيه
- تسريع الأجهزة – أجهزة كمبيوتر متخصصة
- المعالجة في الذاكرة – تقنية معالجة البيانات
- إدارة الذاكرة – منهجية إدارة ذاكرة الحاسوب
- شبكة على شريحة - نظام فرعي للاتصالات الإلكترونية على دائرة متكاملة
- الاستطلاع (علوم الحاسوب) - عملية أخذ عينات من حالة الجهاز
- الوصول المباشر للذاكرة عن بُعد – الوصول المباشر للذاكرة على مستوى الأجهزة
- UDMA – طريقة نقل البيانات لمحركات الأقراص الصلبة ATA
- خدمات التسويق المباشر الافتراضية
مراجع
- 1 2 "أساسيات الوصول المباشر إلى الذاكرة على منصات الحاسوب المختلفة، ناشيونال إنسترومنتس، الصفحتان 6 و7" (ملف PDF) . جامعة كولورادو بولدر . تاريخ الاطلاع: 26 أبريل 2025 .
- ↑ "USB DMA — وثائق نواة لينكس" . www.kernel.org . تم الاطلاع عليه بتاريخ 28-09-2025 .
- ↑ أوزبورن، آدم (1980). مقدمة في الحواسيب الصغيرة: المجلد 1: المفاهيم الأساسية ( الطبعة الثانية). أوزبورن ماكجرو هيل. الصفحات من 5-67 إلى 5-93. ISBN 0931988349.
- ↑ هايز، جون ب. (1978). هندسة الحاسوب وتنظيمه . شركة ماكجرو هيل الدولية للنشر. ص 426-427. ISBN 0-07-027363-4.
- ↑ "ISA DMA - OSDev Wiki" . wiki.osdev.org . تم الاطلاع عليه بتاريخ 2025-04-20 .
- ↑ "ورقة بيانات Intel 8237 و8237-2" (ملف PDF) . موقع JKbox RC702 الفرعي . تم الاطلاع عليه بتاريخ 20 أبريل 2019 .
- ↑ شركة إنتل (25 أبريل 2003)، "الفصل 12: ناقل ISA" (ملف PDF) ، بنية الحاسوب الشخصي للفنيين: المستوى 1 ، تم الاطلاع عليه بتاريخ 27 يناير 2015
- ↑ "تفاصيل ناقل البيانات - كتابة برامج تشغيل الأجهزة لنظام Oracle® Solaris 11.3" . docs.oracle.com . تم الاطلاع عليه بتاريخ 18-12-2020 .
- ↑ "امتداد العنوان الفيزيائي - ذاكرة PAE ونظام التشغيل ويندوز" . مركز تطوير أجهزة مايكروسوفت ويندوز. 2005. تم الاطلاع عليه بتاريخ 7 أبريل 2008 .
- ↑ كوربيت، جوناثان (8 ديسمبر 2005). "نسخ الذاكرة في الأجهزة" . LWN.net .
- ↑ غروفر، أندرو (1 يونيو 2006). "I/OAT على ويكي لينكس نت" . نظرة عامة على I/OAT على لينكس، مع روابط لعدة معايير قياس . مؤرشف من الأصل في 5 مايو 2016. تم الاطلاع عليه في 12 ديسمبر 2006 .
- ↑ "Intel Data Direct I/O (Intel DDIO): الأسئلة الشائعة" (ملف PDF) . إنتل . مارس 2012. تم الاطلاع عليه بتاريخ 11 أكتوبر 2015 .
- ↑ رشيد خان (29-09-2015). "تجاوز حدود شبكات النواة" . redhat.com . تم الاطلاع عليه بتاريخ 11-10-2015 .
- ↑ "تحقيق أقل زمن استجابة بأعلى معدلات نقل البيانات باستخدام معالج Intel Xeon E5-2600 ومحول خادم Solarflare SFN6122F بسرعة 10 جيجابت إيثرنت" (ملف PDF) . solarflare.com . 2012-06-07 . تاريخ الاطلاع: 2015-10-11 .
- ↑ ألكسندر دويك (19 أغسطس 2015). "تجاوز حدود شبكات النواة" (ملف PDF) . linuxfoundation.org . ص 5. تاريخ الاسترجاع: 11 أكتوبر 2015 .
- ↑ كيستلر، مايكل (مايو 2006). "شبكة اتصالات متعددة المعالجات الخلوية: مصممة للسرعة" . IEEE Micro . 26 (3): 10-23 . doi : 10.1109/MM.2006.49 . S2CID 7735690 .
- ↑ "وحدة تحكم DMA متعددة الأوضاع Am9517A" (ملف PDF) . تم الاطلاع عليه بتاريخ 2024-01-06 .
- ↑ "وحدة التحكم في الوصول المباشر إلى الذاكرة Z80® DMA" (ملف PDF) . تم الاطلاع عليه بتاريخ 2024-01-07 .
- ↑ "كتاب بيانات أشباه الموصلات من شارب لعام 1986" (ملف PDF) . الصفحات 255-269 . تاريخ الاطلاع: 13 يناير 2024 .
- ↑ "وحدة تحكم الوصول المباشر إلى الذاكرة (DMA) pPD71037" (ملف PDF) . صفحة 832 (5b1) . تم الاطلاع عليه بتاريخ 2024-01-06 .
- ↑ "وحدة تحكم DMA من نوع µPD71071" (ملف PDF) . صفحة 940 (5g1) . تاريخ الاسترجاع: 2024-01-05 .
مصادر
- أساسيات الوصول المباشر إلى الذاكرة على منصات الحاسوب الشخصي المختلفة ، من إعداد إيه إف هارفي وفريق قسم جمع البيانات، شركة ناشيونال إنسترومنتس.
- mmap() و DMA ، من كتاب "برامج تشغيل أجهزة لينكس، الطبعة الثانية" ، تأليف أليساندرو روبيني وجوناثان كوربيت
- تخطيط الذاكرة وDMA ، من كتاب برامج تشغيل أجهزة لينكس، الطبعة الثالثة ، جوناثان كوربيت، أليساندرو روبيني، جريج كروه-هارتمان
- معالجة الوصول المباشر إلى الذاكرة والمقاطعات
- أوضاع DMA والتحكم في ناقل البيانات
روابط خارجية
- إتقان واجهات برمجة تطبيقات DMA و IOMMU ، مؤتمر لينكس المدمج 2014، سان خوسيه، بقلم لوران بينشارت
- ذاكرة الحاسوب
- اللوحة الأم
- حافلات تخزين الكمبيوتر
- تسريع الأجهزة
- المدخلات/المخرجات
