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

از ویکی‌پدیا، دانشنامهٔ آزاد
(تغییرمسیر از ورودی/خروجی حافظه‌ای)
پرش به: ناوبری، جستجو

ورودی/خروجی حافظه‌ای و ورودی/خروجی درگاهی (به انگلیسی: Memory-Mapped I/O و Port-Mapped I/O به اختصار MMIO و PMIO) دو روش مکمل برای پیاده‌سازی ورودی/خروجی بین پردازنده و دستگاه‌های جانبی در یک رایانه می‌باشند. یک راه دیگر می‌تواند استفاده از یک پردازنده اختصاصی که دستورات مخصوص خود را دارا می‌باشد باشد.[۱]

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

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

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

عملکرد[ویرایش]

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

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

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

جستارهای وابسته[ویرایش]

منابع[ویرایش]