دسترسی مستقیم به حافظه یا DMA یکی از تکنولوژی های پرکاربرد امروزی است و
از این رو بر علم آموزان این حوزه واجب است که بدانند DMA چیست.

بدون حضور DMA پردازش ها بسیار کند خواهند بود و پردازنده ها برای هر عمل کوچکی مدت طولانی درگیر خواهند بود.

در این مقاله ما به طور خلاصه به بررسی DMA، کنترل کننده DMA، رجیستر ها، مزایا و معایب خواهیم پرداخت.

با ما همراه باشید.

1# DMA چیست؟

دانلود pdf مقاله

در پاسخ به سوال DMA چیست می توان گفت که
DMA در واقع سیستمی برای انتقال داده ها به صورت مستقیم بین حافظه و دستگاه های جانبی و بدون استفاده از پردازنده است.

واحدی که فعالیت دسترسی مستقیم به حافظه را کنترل می کند،
کنترلر DMA مخفف عبارت Direct Memory Access نامیده می شود.

پردازنده گذرگاه سیستم را برای چند چرخه کلاک کنار می گذارد؛
بنابراین، کنترلر DMA می تواند وظیفه انتقال داده را از طریق گذرگاه سیستم انجام دهد.

اشکال روش های دیگر انتقال داده این است که برای انتقال یک بلوک بزرگ از داده مفید نیستند؛
اما کنترلر DMA این کار را امکان پذیر می کند و انتقال داده را با سرعت بیشتری انجام می دهد.

بدون DMA، هنگامی که پردازنده از ورودی/خروجی برنامه ریزی شده استفاده می کند،
به طور معمول در کل مدت زمان خواندن یا نوشتن، اشغال شده است؛
بنابراین برای انجام کارهای دیگر در دسترس نیست.

با DMA، پردازنده شروع به انتقال اطلاعات کرده و
در همین حین، درخواست ها و عملیات خواسته شده دیگر را نیز به موازات انجام می دهد.

پس از پایان عملیات انتقال، از کنترل کننده DMA وقفه ای را دریافت می کند.

این ویژگی در هر زمان که CPU نمی تواند با سرعت انتقال داده مطابقت داشته باشد یا
هنگامی که CPU نیاز به انجام کار دارد در حالی که منتظر انتقال داده I/O نسبتاً کند است، مفید است.

بسیاری از سیستم های سخت افزاری امروزه از DMA استفاده می کنند.

DMA چیست؟

2# منظور از مدهای عملکردی در DMA چیست؟

در این مرحله بررسی می کنیم که حالت های عملکرد در DMA چیست و هر کدام چگونه عمل می کنند.

کنترلر DMA داده ها را در 3 حالت منتقل می کند:

1-2# حالت انفجاری (Burst mode)

در حالت انفجاری، کل مجموعه داده در یک توالی منتقل می شود.

به عبارتی، هنگامی که کنترلر DMA کنترل گذرگاه سیستم را به دست می آورد،
پس از اتمام انتقال داده، گذرگاه سیستم را آزاد می کند.

تا آن زمان CPU باید منتظر گذرگاه سیستم باشد.

وقتی کنترل کننده DMA به گذرگاه سیستم از طریق CPU دسترسی پیدا کرد،
ابتدا همه بایت های انتقالی را فرستاده و سپس گذرگاه های سیستم را آزاد می کند.

در این حالت، پردازنده برای مدت زمان نسبتاً طولانی غیرفعال می شود.

این حالت “حالت انتقال بلوک” نیز نامیده می شود.

حالت انفجاری

2-2# حالت سرقت چرخه (Cycle stealing mode)

کاربرد این حالت از DMA در موقعیت هایی است که
غیرفعال ماندن طولانی مدت CPU امکان پذیر نیست.

در حالت سرقت چرخه مشابه حالت قبل، کنترل کننده DMA با استفاده از سیگنال های BR یا Bus Request و
BG یا Bus Grant که دو سیگنال کنترل کننده رابط بین CPU و کنترل کننده DMA هستند، بر گذرگاه تسلط می یابد.

با این حال، در حالت سرقت چرخه، پس از یک بایت انتقال داده، کنترل گذرگاه سیستم از طریق BG به پردازنده کاهش می یابد.

سپس به طور مداوم مجدداً از طریق BR درخواست می شود و
یک بایت داده در هر درخواست منتقل می شود تا زمانی که کل مجموعه داده منتقل گردد.

در اصل در این حالت، کنترل کننده DMA، پردازنده را مجبور می کند تا
عملکرد خود را متوقف کرده و کنترل گذرگاه را برای مدت کوتاهی به کنترلر DMA واگذار کند.

پس از انتقال هر بایت، کنترلر DMA گذرگاه را رها می کند و
سپس مجدداً گذرگاه سیستم را درخواست می کند.

در این حالت، ابتدا CPU یک دستورالعمل را اجرا کرده، سپس DMA از گذرگاه برای انتقال یک داده استفاده می کند.

داده ها به همان سرعت منتقل نمی شوند؛
اما پردازنده برای مدت طولانی در حالت پشت سر هم غیرفعال نیست.

حالت سرقت چرخه در سیستم هایی کاربرد دارد که
کنترل کننده های سیستم، کنترل داده ها را در زمان واقعی انجام می دهند.

حالت سرقت چرخه

3-2# حالت شفاف (Transparent mode)

انتقال حالت شفاف بیشترین زمان را برای انتقال مجموعه ای از داده ها صرف می کند.

با این حال از نظر عملکرد کلی سیستم، کارآمدترین حالت است.

در حالت شفاف، زمانی که گذرگاه های سیستم مورد استفاده نیستند،
داده ها از طریق کنترل کننده DMA منتقل می شوند.

مزیت اصلی حالت شفاف این است که CPU هرگز اجرای برنامه های خود را متوقف نمی کند و
انتقال DMA از نظر زمان رایگان است.

با این وجود، عیب این روش این است که وضعیت گذرگاه ها باید توسط CPU مشخص شود که
این امر یاعث پیچیدگی سیستم می شود.

نام دیگر این حالت “حالت انتقال داده مخفی DMA” است.

حالت شفاف

3# نحوه عملکرد DMA

در قدم بعدی لازم است بدانیم که الگوریتم انتقال داده در DMA چیست و چگونه اتفاق می افتد.

کنترلر DMA یک واحد سخت افزاری است که به دستگاه های ورودی/خروجی اجازه می دهد،
بدون مشارکت پردازنده مستقیماً به حافظه دسترسی پیدا کنند.

پردازنده آدرس شروع و تعداد کلمات بلوک داده را که از حافظه به کنترلر DMA یا برعکس منتقل می شوند،
ارائه می دهد و گذرگاه را برای کنترل کننده DMA و انتقال بلوک داده ها آزاد می کند.

DMA را می توان به طرق مختلف پیکربندی کرد.

ممکن است بخشی از دستگاه های ورودی/خروجی جداگانه باشند و
یا همه لوازم جانبی متصل به سیستم یک کنترلر DMA مشترک داشته باشند.

نحوه عملکرد DMA

عملکرد DMA به شرح زیر است:

  1. هر زمان که یک دستگاه ورودی/خروجی بخواهد داده ها را به حافظه یا از حافظه منتقل کند،
    درخواست DMA (DRQ) را به کنترل کننده DMA ارسال می کند.
    کنترلر DMA این DRQ را می پذیرد و از CPU می خواهد تا
    با ارسال درخواست Hold (HLD) چند چرخه ساعت را نگه دارد.
  2. CPU درخواست Hold (HLD) را از کنترلر DMA دریافت و گذرگاه را رها می کند و
    تأییدیه Hold (HLDA) را به کنترلر DMA ارسال می کند.
  3. پس از دریافت تأییدیه نگهدارنده (HLDA)، کنترلر DMA به دستگاه ورودی/خروجی (DACK) اعلام می کند که
    انتقال داده ها قابل انجام است و کنترلر DMA کنترل گذرگاه سیستم را بر عهده می گیرد و
    داده ها را به یا از حافظه منتقل می کند.
  4. هنگامی که انتقال داده ها انجام شد، DMA یک وقفه ایجاد می کند تا
    به پردازنده اطلاع دهد که کار انتقال داده به پایان رسیده است و
    پردازنده می تواند دوباره کنترل گذرگاه را در دست گرفته و پردازش را در جایی که مانده است آغاز کند.

4# مزایا و معایب DMA چیست؟

تا این جا آموختیم که DMA یک روش انتقال داده بین حافظه اصلی و دستگاه های جانبی است که
داده ها را بدون مشارکت پردازنده به حافظه منتقل می کند.

در مرحله آخر، برای داشتن اطلاعات بیشتر درباره کاربردهای مناسب DMA باید بدانیم که
مزایا و معایب DMA چیست و با استفاده از آن ها کاربرد مناسب آن را پیدا کنیم.

مزایا:

  • این قابلیت به یک دستگاه جانبی اجازه می دهد تا بدون عبور از CPU از حافظه بخواند و یا در آن بنویسد.
  • می توان کار بر روی بخش دیگری را پیش برد در حالی که محیط جانبی می تواند حافظه را پر کند.
  • انتقال داده ها بدون دخالت پردازنده باعث افزایش سرعت عملیات خواندن و نوشتن می شود.
  • DMA چرخه ساعت را برای خواندن یا نوشتن یک بلوک داده کاهش می دهد.
  • پیاده سازی DMA همچنین بار عملیات پردازنده را کاهش می دهد.

مزایا و معایب DMA

معایب:

  • برای انجام این عملیات سیستم نیاز به یک کنترلر DMA دارد که هزینه سیستم را افزایش می دهد.
  • در انسجام حافظه cache اختلال به وجود می آورد.

مقاله بالا بخشی از مطالب گسترده برنامه نویسی میکروکنترلر ARM است.

برای یادگیری صفر تا صد این حوزه به آموزش جامع میکروکنترلر آرم مراجعه کنید.

برای مشاهده توضیحات کامل بسته کلیک کنید.

بسته میکروکنترلر آرم

اگر به دنبال یاد گرفتن مهارت بیشتر و افزایش درآمد هستید،

برای دریافت آموزش های رایگان مرتبط با حوزه علاقه‌مندی خود فقط کافیه فرم رو تکمیل کنید.

لطفا موبایل خود را وارد نمایید

نظرتون درباره این مقاله چیه؟
ما رو راهنمایی کنید تا اون رو کامل تر کنیم و نواقصش رو رفع کنیم.
توی بخش دیدگاه ها منتظر پیشنهادهای فوق العاده شما هستیم.