10M+ قطعات الکترونیکی در انبار
تاییدیه ISO
ضمانتنامه شامل است
تحویل سریع
قطعات سخت پیدا شدنی؟
ما منبع آنها هستیم
درخواست قیمت

دسترسی مستقیم به حافظه (DMA): ویژگی ها، عملیات و برنامه ها

Sep 16 2025
منبع: Michael Chen
مرور: 11668

دسترسی مستقیم به حافظه (DMA) روشی است که رایانه ها را قادر می سازد تا داده ها را به طور موثرتری انتقال دهند. به جای اینکه CPU هر انتقال را مدیریت کند، یک کنترلر DMA داده ها را مستقیما بین حافظه و دستگاه ها ارسال می کند. این باعث صرفه جویی در زمان می شود، مصرف برق را کاهش می دهد و به CPU اجازه می دهد تا روی کارهای دیگر تمرکز کند.

ج1. بررسی دسترسی مستقیم به حافظه

ج2. ویژگی های دسترسی مستقیم به حافظه

ج3. عملیات گام به گام DMA

ج4. کنترلر DMA و اتصالات آن

ج5. حالت های انتقال DMA و تفاوت های آنها

ج6. سبک های اصلی DMA

ج7. پراکندگی-جمع آوری DMA

ج8. DMA و همگام سازی کش

ج9. نقش IOMMU در ایمنی DMA

ج10. نگرانی های امنیتی: حملات و حفاظت های DMA

ج11. کاربردهای مختلف DMA

ج13. پرسش و پاسخهای متداول [سؤالات متداول]

Direct Memory Access (DMA): Features, Operation, and Applications

بررسی مستقیم دسترسی به حافظه

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

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

این تنظیمات باعث می شود سیستم روان تر اجرا شود زیرا CPU با حرکت مداوم داده ها کند نمی شود. همچنین به صرفه جویی در مصرف انرژی کمک می کند و عملکرد کلی کامپیوتر را بهبود می بخشد.

ویژگی های دسترسی مستقیم به حافظه

انتقال داده با سرعت بالا

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

تخلیه CPU

CPU از کارهای تکراری انتقال داده رها می شود و آن را برای محاسبات در دسترس قرار می دهد.

کاهش سربار وقفه

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

حافظه مستقیم

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

پشتیبانی چند کاناله

کنترلرهای مدرن DMA از چندین کانال مستقل پشتیبانی می کنند و انتقال همزمان را امکان پذیر می کنند.

قابلیت انتقال پشت سر هم

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

اولویت و داوری

کنترلرهای DMA از سطوح اولویت برای تصمیم گیری در مورد اینکه کدام کانال به گذرگاه حافظه دسترسی پیدا می کند استفاده می کنند.

حالت های انتقال

پشتیبانی از حالت های مختلف مانند تک، بلوک، پشت سر هم و انتقال مبتنی بر تقاضا بسته به نیاز سیستم.

سازگاری با چندین اتوبوس

با اتوبوس های سیستم مختلف برای یکپارچه سازی انعطاف پذیر کار می کند.

تشخیص و مدیریت خطا

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

انتقال حافظه به حافظه

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

عملیات گام به گام DMA

مرحلهچه اتفاقی می افتد؟سیگنال / اکشن
1دستگاه سرویس DMA را درخواست می کند.خط DRQ (درخواست DMA) فعال شد
2کنترلر DMA کنترل گذرگاه سیستم را درخواست می کند.BR (درخواست اتوبوس)
3CPU به طور موقت گذرگاه را به کنترلر DMA آزاد می کند.BG (کمک هزینه اتوبوس)
4کنترلر DMA آدرس حافظه و تعداد کلمات (واحدهای داده) را برای انتقال تنظیم می کند.آدرس و شمارش ثبت
5داده ها مستقیما بین دستگاه ورودی/خروجی و رم منتقل می شوند و CPU را دور می زنند.انتقال مستقیم
6پس از اتمام، کنترلر DMA به CPU اطلاع می دهد.INTR (وقفه)

کنترلر DMA و اتصالات آن

DMA Controller and Its Connections

قطعات اصلی CPU ، حافظه ، کنترل کننده DMA و دستگاه های ورودی / خروجی (I / O) هستند. کنترلر DMA بر جابجایی داده ها بین حافظه و دستگاه های ورودی/خروجی بدون نیاز به CPU برای انجام تمام کارها نظارت می کند.

هنگامی که یک دستگاه ورودی/خروجی نیاز به ارسال یا دریافت داده دارد، درخواستی را به کنترلر DMA ارسال می کند. سپس کنترلر از CPU اجازه استفاده از گذرگاه سیستم را می خواهد، که مسیر اصلی داده های داخل رایانه است. هنگامی که CPU اجازه می دهد، کنترلر DMA کنترل را به دست می گیرد و داده ها را مستقیما بین حافظه و دستگاه I/O منتقل می کند. پس از اتمام انتقال، به CPU اطلاع می دهد که کار به پایان رسیده است.

نمودار همچنین خطوط مختلفی را که اطلاعات را حمل می کنند نشان می دهد. خطوط آدرس (خاکستری) تصمیم می گیرند که داده ها به کجا بروند، خطوط داده (سبز) اطلاعات واقعی را حمل می کنند و خطوط کنترل (نارنجی) فرآیند را مدیریت می کنند. گذرگاه DMA چندین دستگاه ورودی/خروجی را به کنترلر متصل می کند. این تنظیمات به سیستم کمک می کند تا داده ها را روان تر مدیریت کند و CPU را برای کارهای دیگر آزاد نگه می دارد.

حالت های انتقال DMA و تفاوت های آنها

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

سبک های اصلی DMA

مسترینگ اتوبوس (DMA شخص اول)

در مسترینگ اتوبوس، خود دستگاه به طور موقت نقش کنترل کننده گذرگاه سیستم را بر عهده می گیرد. این بدان معناست که می تواند مستقیما از حافظه بخواند یا بدون نظارت مداوم CPU در آن بنویسد. از آنجایی که دستگاه نقل و انتقالات خود را مدیریت می کند، این فرآیند بسیار سریع و کارآمد است. اجزای مدرن با کارایی بالا مانند پردازنده های گرافیکی PCIe، درایوهای NVMe و کارت های شبکه اغلب از این روش استفاده می کنند. CPU در طول این انتقال ها عمدتا رایگان است که عملکرد کلی سیستم را بهبود می بخشد.

DMA شخص ثالث (مبتنی بر کنترلر)

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

پراکندگی-جمع آوری DMA

در بسیاری از موارد، داده های موجود در حافظه در یک خط مستقیم ذخیره نمی شوند. می توان آن را به مکان های مختلف تقسیم کرد. Scatter-Collect DMA امکان جابجایی همه این داده ها را به یکباره فراهم می کند، حتی اگر پخش شده باشد.

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

مزایای DMA پراکنده جمع آوری

• داده های پراکنده را بدون مراحل اضافی جابجا می کند.

• به سیگنال های کمتری به CPU نیاز دارد.

• انتقال داده ها را سریعتر و روان تر می کند.

• با اجتناب از کپی های اضافی باعث صرفه جویی در فضای حافظه می شود.

DMA و همگام سازی کش

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

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

• CPU می تواند پس از نوشتن دستگاه، حافظه پنهان را باطل کند، بنابراین داده های به روز شده را از حافظه بارگیری می کند.

• پردازنده های مدرن از DMA منسجم حافظه پنهان استفاده می کنند که به طور خودکار این کار را انجام می دهد.

نقش IOMMU در ایمنی DMA

ویژگیعملکردسود
نگاشت آدرسدرخواست های DMA دستگاه را به آدرس های حافظه معتبر ترجمه می کنداز خرابی تصادفی یا مضر داده ها جلوگیری می کند
انزواهر دستگاه را به مناطق حافظه اختصاص داده شده محدود می کنداز سیستم در برابر دستگاه های معیوب یا مخرب محافظت می کند
پشتیبانی 64 بیتیآدرس دهی را فراتر از محدودیت های 32 بیتی گسترش می دهدپشتیبانی از دستگاه های مدرن با نیاز به حافظه زیاد

نگرانی های امنیتی: حملات DMA و حفاظت

خطرات امنیتی

• سرقت داده ها از طریق دسترسی غیرمجاز DMA.

• تزریق بدافزار به حافظه سیستم.

• حملات خدمتکار شیطانی Thunderbolt به لپ تاپ ها.

2 حفاظت

• IOMMU / VT-d / AMD-Vi را فعال کنید.

• از محافظت از DMA هسته (ویندوز) استفاده کنید.

• پورت های خارجی استفاده نشده را غیرفعال کنید.

• از رایانه های شخصی با هسته ایمن و محدودیت های BIOS/UEFI استفاده کنید.

کاربردهای مختلف DMA

انتقال دیسک و فضای ذخیره سازی

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

رابط های شبکه

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

پردازش صدا و تصویر

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

سیستم های تعبیه شده

میکروکنترلرها از DMA برای تخلیه حرکات تکراری داده (مانند قرائت ADC یا بافرهای UART) استفاده می کنند و چرخه های CPU را برای وظایف کنترل آزاد می کنند.

رندر گرافیک

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

نتیجه

دسترسی مستقیم به حافظه (DMA) با انتقال مستقیم داده ها بین حافظه و دستگاه ها بدون تکیه بر CPU، کارایی رایانه را بهبود می بخشد. این تاخیرها را کاهش می دهد، مصرف برق را کاهش می دهد و امکان عملکرد روان تر در کارهایی مانند ذخیره سازی، شبکه و گرافیک را فراهم می کند. با مدیریت خطای داخلی و ویژگی های امنیتی، DMA روشی قابل اعتماد برای انتقال سریع و کارآمد داده ها باقی می ماند.

پرسش و پاسخهای متداول [سؤالات متداول]

DMA چه تفاوتی با I/O برنامه ریزی شده دارد؟

DMA داده ها را با استفاده از یک کنترلر منتقل می کند، در حالی که I/O برنامه ریزی شده برای هر انتقال به CPU متکی است.

چگونه DMA در مصرف انرژی صرفه جویی می کند؟

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

DMA به چه حافظه ای می تواند دسترسی داشته باشد؟

DMA می تواند به RAM سیستم، حافظه ویدیویی، حافظه بافر دسترسی داشته باشد و گاهی اوقات داده ها را بین مناطق حافظه کپی کند.

آیا DMA می تواند چندین دستگاه را به طور همزمان مدیریت کند؟

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

محدودیت های اصلی DMA چیست؟

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

چرا DMA در سیستم های واقعی مهم است؟

این انتقال داده سریع و با تأخیر کم را فراهم می کند تا CPU بتواند روی کارهای مهم زمان تمرکز کند.