یکی از اهداف از ساخت کامپیوترها آن است که انسانها بتوانند از آنها استفاده کنند و با آنها تعامل برقرار کنند، برای این کار لازم است افراد بتوانند ورودیهایی را به کامپیوتر بدهند و خروجیهایی را از آن دریافت کنند، بعنوان مثال با تکان دادن ماوس و کلیک کردن روی یک پوشه فرمانی را به کامپیوتر صادر کنند، حرکت ماوس و فرمانی که صادر میکند یک داده ورودی به کامپیوتر و تصویری که در مانیتور مشاهده میکنیم داده خروجی است که کامپیوتر به ما نشان میدهد. آشنایی با دستگاههای ورودی و خروجی کامپیوتر و نحوه عملکرد آنها بسیار مهم است و در درس معماری کامپیوتر که یکی از دروس بنیادی رشته کامپیوتر است این موارد بررسی میشود، برای مطالعه در خصوص معماری کامپیوتر آموزش جامع معماری کامپیوتر در مهندسی کامپیوتر، معماری کامپیوتر مجموعهای از قوانین و روشهایی است که به چگونگی طراحی، کارکرد، سازماندهی و پیاده سازی (ساخت) سیستمهای کامپیوتری میپردازد، در این صفحه به بررسی و آموزش کامل معماری کامپیوتر پرداخته شده است به صفحه مربوطه مراجعه کنید، همچنین میدانیم که پیش نیاز یادگیری معماری کامپیوتر درس مدارهای منطقی است، که برای آشنایی با مدار منطقیآموزش مدار منطقی به زبان ساده - بررسی مدار منطقی و انواع آنامروزه درک صحیحی از مدارهای منطقی برای هر مهندس برق و کامپیوتر ضروری است. این مدارها عنصر اصلی کامپیوترها و بسیاری از وسایل الکترونیکی اطراف ما هستند، در این صفحه به بررسی و آموزش مدار منطقی پرداخته شده است نیز میتوانید به صفحه مربوط به این درس مراجعه کنید.
زیر سیستم ورودی – خروجی یک کامپیوتر که I/O نامیده میشود، روش تبادل اطلاعات کارایی را بین سیستم مرکزی و محیط خارج فراهم میکند. برنامهها و دادهها باید برای پردازش وارد حافظه کامپیوتر شوند و نتایج حاصل از محاسبات نیز باید برای کاربر ضبط و یا نمایش داده شوند. کامپیوتر بدون امکان دریافت اطلاعات از یک منبع خارجی و یا انتقال نتایج به شکل قابل فهم بیمعنی است.
انواع دستگاه های ورودی و خروجی کامپیوتر
دستگاههای ورودی جهت ورود اطلاعات به کامپیوتر استفاده میشوند. برخی از دستگاه های ورودی کامپیوتر عبارتاند از:
- صفحه کلید (keyboard)
- ماوس (Mouse)
- میکروفن (Microphone)
- اسکنر (scanner)
- سی دی رام (CD-ROM)
- وب کم (Web cam)
- تاچ پد لب تاپ (Touch pad)
- دسته بازی (Joystick)
- قلم نوری (Optical Pen)
به عنوان مثال در صفحه کلید هر بار که کلیدی فشرده شود، پایانه کارکتر کد شده به فرم دودویی را به کامپیوتر میفرستد.
دستگاههای خروجی جهت نمایش اطلاعات استفاده میشوند. برخی از دستگاه های خروجی کامپیوتر عبارت اند از:
- صفحه نمایش (monitor)
- چاپگر (printer)
- هدفون (Head phone)
- بلندگو (speaker)
- پروژکتور (Video projector)
- پلاتر (Plotter)
برخی از دستگاه ها هم ورودی محسوب میشوند و هم خروجی، این دستگاه ها، برخی از زمانها نقش ورودی و برخی از زمانای دیگر نقش خروجی را بازی میکنند، از جمله این دستگاهها میتوان به موارد زیر اشاره کرد
- هارد دیسک (Hard Disk)
- فلش (Flash memory)
- مودم (Modem)
- کارت شبکه (NIC)
بررسی نحوه کار دستگاه های ورودی و خروجی
انتقال داده آسنکرون از/به دستگاه های ورودی/خروجی
پردازنده به صورت سنکرون با clock دستورات را اجرا میکند ولی دستگاههای ورودی/خروجی که خارج از پردازنده قرار دارند، به صورت آسنکرون دادهها را منتقل میکنند. وسایل جانبی همیشه در حال تبادل اطلاعات با پردازنده هستند، در این تبادل گاهی اوقات CPU فرستنده و گاهی گیرنده است. برای انتقال آسنکرون بین دو دستگاه باید از روش handshake برای هماهنگی ارسال و دریافت داده استفاده کرد.
هماهنگی در ارسال و دریافت داده بین دو دستگاه یا به عبارتی همگام بودن دو دستگاه برای انتقال داده به معنای هم سرعت بودن آنها نیست. همگام بودن به این معنی است که وقتی فرستنده میخواهد اطلاعاتی را به گیرنده بفرستد، هر زمان که فرستنده داده را فرستاد، گیرنده آن داده را همان موقع دریافت کند.
از آنجایی که چون سرعت دریافت و ارسال داده باهم برابر نیست، روشهای همگاه سازی زیر وجود دارند.
استفاده از strobe
در این روش با استفاده از یک سیگنال strobe عملیات هماهنگی ارسال/دریافت داده انجام میشود. شکل زیر دو روش موجود در این حالت و شکل موج زمانی ارتباط آنها را نشان میدهد. در شکل الف فرستنده داده را روی باس قرار میدهد و سیگنال strobe را فعال میکند تا گیرنده از وجود داده آگاه شود. در شکل ب گیرنده با فعال کردن سیگنال strobe تقاضای دریافت داده جدید را به گیرنده ارسال میکند.
ایراد روش strobe در این است که نمیتوان از دریافت داده توسط گیرنده مطلع شد.
روش Handshaking
در این روش از 2 سیگنال کنترلی برای هماهنگی ارسال/دریافت داده استفاده میکنیم. شکل زیر روش Handshaking را به همراه شکل موج ارسال/دریافت نشان میدهد.
همانطور که در شکل الف دیده میشود در شروع کار فرستنده یک داده معتبر را روی گذرگاه داده قرار میدهد و همزمان با آن Data Valid را فعال میکند تا گیرنده را از وجود داده جدید آگاه کند. در پاسخ گیرنده سیگنال Data Rec را فعال میکند که دریافت داده را به فرستنده اطلاع دهد. فرستنده پس از اطمینان از دریافت داده توسط گیرنده داده را از روی گذرگاه برداشته سیگنال Data valid را غیرفعال میکند و گیرنده در پاسخ به غیرفعال شدن Data valid، سیگنال Data Rec خود را غیرفعال میکند؛ در اینجا شروعکننده انتقال فرستنده است. در شکل ب شروعکننده انتقال گیرنده است؛ به این صورت که گیرنده با ارسال Req تقاضای داده جدید میکند. فرستنده با دریافت سیگنال Req، یک داده معتبر را روی گذرگاه داده قرار داده و سیگنال Gnt را فعال میکند تا گیرنده را از وجود داده جدید آگاه کند. گیرنده در پاسخ سیگنال Req را غیرفعال میکند که به فرستنده خبر دهد داده جدید را دریافت کرده است. در پاسخ به غیرفعال شدن سیگنال Req فرستنده داده را از روی گذرگاه داده برداشته و سیگنال Gnt را نیز غیرفعال میکند.
انتقال سریال
گاهی اوقات برای انتقال اطلاعات بین دو دستگاه از روش سریال استفاده میشود. در این روش اطلاعات بیت به بیت ارسال میشود. برای همین باید در شروع و خاتمه داده ارسالی از بیت شروع و بیت(های) خاتمه استفاده کنیم. در این روش خط به صورت عادی 1 است. برای ارسال داده یک بیت \(\circ\) (بیت شروع) ارسال میشود و سپس 8 بیت داده به ترتیب ارسال میشوند. پس از آن یک بیت پریتی ارسال میشود (برای تشخیص خطای ارسال) و در پایان 1 یا 2 بیت 1 (بیت(های) خاتمه) ارسال میشود. شکل زیر ارسال داده 10100010 را با 2 بیت خاتمه و پریتی زوج به صورت سریال نشان میدهد.
در این شکل برای ارسال 8 بیت داده مجبور به استفاده از 4 بیت اضافی هستیم بنابراین سربار ارسال برابر $\frac{\mathrm{4}}{\mathrm{12}}\mathrm{=}\mathrm{33\%}$ است. به عبارت دیگر در هر 12 بیت ارسالی 4 بیت اضافه وجود دارد.
روش های ورودی/خروجی
برای ارتباط پردازنده با دستگاههای ورودی/خروجی 3 روش وجود دارد:
روش سرکشی (Polling)
در این روش پردازنده در زمانهای مشخص به دستگاه IO سرکشی میکند و وضعیت آن را چک میکند که آیا داده جدیدی برای ارسال (یا آمادگی دریافت داده جدید) دارد. این روش برای دستگاههای ورودی/خروجی کُند مناسب است، در غیر این صورت ممکن است پردازنده قادر به جمعآوری تمام دادههای ارسالی نباشد و بخشی از دادهها از بین برود.
روش وقفه (Interrupt)
در این روش پردازنده دستورات را اجرا میکند و به محض این که یک دستگاه داده جدیدی برای ارسال داشته باشد با دادن وقفه پردازنده را آگاه میکند و پردازنده پس از خاتمه اجرای دستور جاری، آدرس برگشت (آدرس دستور بعدی) را در استک (Stack) ذخیره میکند، سپس به یک برنامه به نام روتین سرویس وقفه (ISR- Interrupt Service Routine) پرش میکند. پس از دادن سرویس لازم به دستگاه ورودی/خروجی، آدرس برگشت از روی استک برداشته شده و ادامه دستورات از آن آدرس پیگیری میشود.
در این روش زمانی پردازنده به وقفهای پاسخ میدهد که در مرحلهی Fetch و Decode دستورات دیگر نباشد.
روش دسترسی مستقیم حافظه (DMA-Direct Memory Access)
روش DMA برای دستگاههای ورودی/خروجی سریع مناسب است. در این روش پردازنده با دریافت یک وقفه از تقاضای ارسال داده آگاه میشود و پس از خاتمه اجرای دستور جاری، آدرس برگشت را در پشته ذخیره میکند. سپس به تنظیم یک دستگاه به نام کنترلر DMA میپردازد. به این ترتیب که آدرس شروع و آدرس مقصد و حجم داده مورد نظر برای انتقال را به کنترل DMA اطلاع میدهد. سپس پردازنده خود را از گذرگاهها جدا کرده و کنترل گذرگاه را در اختیار کنترلر DMA قرار میدهد. از اینجا به بعد کنترلر DMA وظیفه انتقال دادهها را از آدرس مبدأ به آدرس مقصد انجام میدهد. در پایان کنترلر DMA با ارسال یک سیگنال وقفه پردازنده را از خاتمه انتقال اطلاعات آگاه میکند و پردازنده ادامه اجرای دستورات را پیگیری میکند.
جمعبندی
هر سیستم کامپیوتری نیازمند بخشی است که عملیات ورود اطلاعات از محیط خارج و ارسال اطلاعات به محیط خارج را انجام دهد. برای مدیریت ورود و خروج اطلاعات روشهای مختلفی وجود دارد که آنها را در این مقاله شرح دادیم. امیدواریم مطالب ارائه شده مناسب شما بوده و توانسته باشید از آنها استفاده کنید.
اسکنر ورودی است یا خروجی؟
اسکنر یک دستگاه ورودی محسوب میشود، دستگاه های ورودی کامپیوتر دستگاه هایی هستند که جهت ورود اطلاعات به کامپیوتر استفاده میشوند و از آنجایی که اسکنر (Scanner) یک دستگاه الکترونیکی است که میتواند تصاویر را از اقلام فیزیکی گرفته و آنها را به فرمتهای دیجیتال تبدیل کند، اسکنر یک دستگاه ورودی محسوب میشود. تصاویر گرفته شده با اسکنر میتوانند در کامپیوتر ذخیره شوند و با استفاده از برنامههای نرم افزاری مشاهده یا اصلاح شوند.
کارت گرافیک ورودی است یا خروجی
مهمترین قسمت کارت گرافیک تراشهی مرکزی است که به آن GPU گفته میشود، GPU دستورالعملها و دادههای مربوط به نمایش تصویر را از (CPU) واحد پردازش مرکزی ، مرکز کنترل و کنترل کامپیوتر شما دریافت میکند، سپس دادهها را پردازش کرده و به صفحه کامپیوتر میگوید که چه چیزی را نمایش دهد و صفحه کامپیوتر شما سیگنالها را از GPU دریافت کرده و تصویر را نمایش میدهد، چون کارت گرافیک خروجی تصویر را به مانیتور میدهد (برای مانیتور خروجی تولید میکند) میتوان آن را دستگاه خروجی محسوب کرد.