ورودی/خروجی حافظه‌نگاشتی

ورودی/خروجی حافظه‌ای و ورودی/خروجی درگاهی  دو روش مکمل برای پیاده‌سازی ورودی/خروجی بین پردازنده و دستگاه‌های جانبی در یک رایانه می‌باشند. یک راه دیگر می‌تواند استفاده از یک پردازنده اختصاصی که دستورها مخصوص خود را دارا می‌باشد باشد.
این دستورها در برگیرنده اطلاعات مبادله شده می‌باشد. این پورت شباهتی به شبکه ذخیره‌سازی ناحیه ای دارد که به سرورها و اجزای خارجی اطلاعات را مبادله می‌کنندWikipedia contributors, "Memory-mapped I/O,", December 13, 2012.

در هر دو این روشها، پردازنده و دستگاه‌جانبی هردو دسترسی مستقیم به یک فضای حافظه‌ای (که می‌تواند بسیار کوچک باشد) که بر روی آن دستگاه‌جانبی قرار دارد، دارند و از این طریق دستورها و داده‌های خود را داخل آن فضا کپی کرده و با یکدیگر ارتباط برقرار می‌نمایند.

تفاوت این روشها در نحوه آدرس‌دهی در داخل این فضای حافظه مشترک است. یکی از این روشها از آدرسهای حافظه‌ای (Memory-Mapped I/O) استفاده نموده در حالیکه دیگری از آدرس‌دهی درگاهی (Port-Mapped I/O) استفاده می‌نماید. مسلماً پردازنده‌هایی که از آدرس‌دهی درگاهی استفاده می‌کنند با توجه به اینکه تعداد آدرسهای درگاهی به نسبت آدرسهای حافظه‌ای بسیار محدودتر می‌باشند، انتخابهای کمتری دارند.

پردازنده‌های جدید اصولاً از سیستم آدرس‌دهی ورودی/خروجی حافظه‌ای استفاده می‌کنند. هرچند که پردازنده‌های اینتل به دلایل سنتی از هر دو نوع آدرس‌دهی استفاده می‌کنند.

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

روش رأی‌گیری نارسا و ناکافی شناخته شده‌است بخاطر اینکه در صورت مشغول بودن پردازنده، کار با این روش بسیار زمانبر می‌شود.

روش جایگزین خط وقفه یا Interrupt line نام گرفته‌است. در این روش دستگاه جانبی هر زمان که چیزی برای پردازش داخل ثبات یا حافظه خود بنویسد، یک سیگنال درخواست وقفه (Interrupt Request یا IRQ) به پردازنده ارسال می‌نماید و پردازنده وقتی یک سیگنال درخواست وقفه دریافت نمود کارهای خود را در هرمرحله‌ای که باشد ذخیره کرده و متوقف می‌نماید. سپس پردازنده با توجه به شماره سیگنال درخواست وقفه دریافتی و مقایسه آن با جدول شماره وقفه‌ها برای فهمیدن اینکه کدام دستگاه آن درخواست وقفه را ارسال نموده‌است (مثلاً در حالت استاندارد IRQ ۰ برای ساعت سیستم، ۱ برای صفحه‌کلید و ۱۴ برای دیسک سخت اصلی می‌باشند) به آن دستگاه مراجعه نموده و پس از انجام پردازش مورد نظر به کار قبلی خود از همان نقطه که رها کرده بود بازمی‌گردد.

 جستارهای وابسته 
 ورودی/خروجی
 درخواست وقفه
 وقفه

 منابع 

رده:برنامه‌نویسی
رده:دستگاه‌های خروجی رایانش
رده:دستگاه‌های ورودی رایانش
رده:مهندسی نرم‌افزار
رده:نرم‌افزار سیستم
رده:نرم‌افزار
رده:واسط‌ها