حافظه میانگیر(buffer)چیست؟
حافظه میانگیر(buffer)چیست؟
حافظه میانگیر (به انگلیسی: Buffer)، در لغت به معنای حائل و یا میانگر میباشد که در علوم مختلف به شکلی متفاوت به مفهوم یک حافظهٔ میانجی و یا موقت بکار میرود.
مثلا در شیمی محلول بافر محلولی است که ph را ثابت نگه میدارد، بنابراین به کمک این محلول میتوان در مراحل مختلف یک فرایند شمیایی ph را ثابت نگه داشته و آن را اندازهگیری نماییم. مدارهای بافر نیز در الکترونیک مفهومی نزدیک به این دارند. به این صورت که اطلاعات سیگنال دریافتی را در خود ذخیره نموده و بر حسب نیاز به سیستم بعدی تحویل میدهند. مدارهای بافر به طور کلی به دو دسته آنالوگ و دیجیتال تقسیم میشوند.
بافرهای آنالوگ
در بافر آنالوگ، سیگنال به صورت آنالوگ به مدار بافر رسیده و به طبقهٔ بعدی تحویل داده میشود که در صورتی که سیگنال از جنس جریان باشد به آن بافر جریان و در صورتی که از جنس ولتاژ باشد به آن بافر ولتاژ گفته میشود.
بافرهای دیجیتال
بافر دیجیتال به صورت حافظه عمل میکند و سیگنال دیجیتال به بافر وارد شده و به صورت دیجتال به بخش بعدی تحویل داده میشود. اگر سیگنال به صورت موازی وارد مدار بافر و به صورت موازی از آن خارج شود آن بافر موازی گفته میشود و در صورتی که سیگنال به صورت سری وارد مدار بافر و به صورت سری از آن خارج شود آن بافر سری گفته میشود، ترکیب این دو میتواند به نام بافرهای سری-موازی شناخته شود.
انواع بافر دیجیتال
- سختافزاری:
قطعهای سختافزاری است که در بعضی از وسایل مانند چاپگرها وجود دارد و میتوانیم آنرا زیاد و کم کنیم. و یا در صفحهکلید بافری وجود دارد که تعداد معینی از کلیدهای فشرده شده را حفظ میکند و به ترتیب اجرا میکند.
- نرمافزاری:
به صورت نرمافزاری قسمت از حافظه اصلی را به عنوان بافر در نظر میگیرد.
تعیین اندازه بافر
- سیستمعامل زمان بارگذاری اندازه بافر را تعیین میکند.
- کاربر با استفاده از دستورات سیستمعاملی اندازه بافر را تعیین میکند.
- طریق برنامهنویسی و کنترل آن بوسیله اجرای یک ماکیرو که قسمتی از حافظه را به عنوان بافر در نظر میگیرد و محتوای بافر را با فایلهای تحت پردازش مرتبط میکند.
نحوه استفاده از بافر
- روش انتقالی: انتقال اطلاعات از بافر به working area و پردازش آن.
- روش مکانی: آدرس اطلاعات به پردازشگر داده میشود و از همان بافر به عنوان محیط کاری استفاده میکند.
میزان بافر
- باید آنقدر باشد که اختلاف سرعت را بپوشاند.
- آنقدر باشد که working area زیاد محدود نشود چون پردازش کند میشود.
انواع بافرینگ
- ساده: یک بافر در اختیار برنامه قرار میگیرد.
- مضاعف: دو بافر در اختیار برنامه قرار میگیرد، میتوان در اثنا خواندن یک بلاک و انتقال آن به یک بافر، محتوای بافر دیگر را که پر است، پردازش کرد.
- چندگانه: در این نوع بافرینگ بافرها به طور خودکار از پیش پر میشود و در حالی که برنامه فایل پرداز روی محتوای بافر کار میکند، سیستم بافر دیگری را پر و آماده میسازد.
- بافر چرخشی: در این نوع بافرنگ بافرها پشت سر هم نوشته میشوند و پس از پر شدن آخرین بافر دوباره بافر اولی پر میشود
افرهای نوری (Optical buffer)
امروزه بیشترین پژوهشهای مربوط به بافر در این زمینه انجام میپذیرد، بافر نوری وسیله ایست که توانایی ذخیرهٔ موقت نور را دارد، این نوع بافر در مخابرههای نوری کاربرد دارد. بحث مورد پژوهش در این زمینه اینست که آیا به کمک این نوع بافرها میتوان سرعت نور را کاهش داد؟
کاربرد مدارهای بافر
مدارهای بافر بسته به نوع خود کاربردهای متفاوتی دارند:
بافرهای آنالوگ: بافر ولتاژ زمانی کاربرد دارد که میخواهیم ولتاژ را از مداری با امپدانی خروجی بالا به مداری با امپدانس خروجی پایین تحویل دهیم که بوسیلهٔ بافر مانع از لود شدن سیگنال مدار اول بروی مقاومت ورودی مدار دوم و تداخل این دو مدار میشویم. بافر جریان نیز متشابها هنگامی بکار میرود که میخواهیم سیگنال از جنس جریان را از مداری با امپدانس خروجی پایین به مداری با امپدانس ورودی بالا تحویل دهیم.
بافرهای دیجیتال در اتصالات بین سختافزارها، فرستادن داده به شبکه، باز خوانی اطلاعات، ویا نمایش خروجی کاربرد دارند. که دلیل استفاده از بافر احتمال تفاوت سرعت آنها و یا زمان شروع بکار قسمتهای مختلف میباشد.
در حالت کلی موارد کاربرد مدارهای بافر عبارتند از:
- اتصال دو مدار با امپدانسهای ورودی و خروجی غیر ایدآل و جلوگیری از تخریب اطلاعات
- اتصال دوبخش که سرعتهای متفاوتی در پردازش دارند
- ذخیره موقت اطلاعات برای استفاده در زمانی دیگر
- تاخیر در دریافت اطلاعات به منظور رسیدن به زمان کافی برای انجام پردازش
- نگه داشتن اطلاعات برای استفادهٔ متعدد در انجام فرایند
بافرهای ایدهآل
بافر ولتاژ ایدهآل
بافری است با امپدانس ورودی بی نهایت و امپدانس خروجی صفر برای جلوگیزی از بار گیری، از دیگر ویژگیهای این نوع بافر خطی بودن در دامنهها وفرکانسهای مختلف سیگنال ورودی و نداشتن تاخیر در تحویل خروجی میباشد.
بافر جریان ایده آل
بافری است با امپدانس ورودی صفر و امپدانس خروجی بی نهایت به منظور جلوگیری از بارگیری، از دیگر ویژگیهای این نوع بافر متشابه بافر ولتاژ خطی بودن در دامنهها وفرکانسهای مختلف سیگنال ورودی و نداشتن تاخیر در تحویل خروجی میباشد.
مثالهایی از بافرهای آنالوگ و دیجیتال
بافرهای آنالوگ
- بافر ولتاژ
- مدارهای شامل ترانزیستورهای قدرت: مدارهایی که شامل ترانزیستورهای قدرت میباشند مانند مدارهای مورد استفاده در لوازم صوتی که با بهرهٔ ولتاژ یک جریان را به شدت تقویت میکنند.
- آپ-امپ با فیدبک منفی
- مدار کلکتور مشترک
- مدار درین مشترک
- مدارهای امیتر(سورس) مشترک و بیس(گیت) مشترک نیز بافرهای ولتاژ با بهره(گین) غیر یک محسوب میشوند.
- بافر جریان
- مدارهای بیس مشترک و گیت مشترک
بافرهای دیجیتال
- در مبدلهای آنالوگ به دیجیتال
- در مبدلهای سر به موازی وموازی به سری
- در کلیه ورودیها و خروجیهای سختافزاری رایانه مانند: صفحهٔ نمایش، موس، کیبورد و...
- در پورتهای ورودی: مانند پورتهای usb، com، wireless و...
- در لوازمی که به شبکه متصلند
- بسیاری از سختافزارهای رایانه مانند: هارد درایو، سی دی درایو و
تشریح یک مثال
برای مثال انتفال اطلاعات از پردازشگر مرکزی به چاپگر را در نظر بگیرید. CPUقطعهای است که در مقایسه با چاپگر بسیار سریع پردازش میکند و اگر ما بخواهیم اطلاعاتی را از پردازشگر به چاپگر بدون وجود بافر بفرستیم باید در زمان کاری پردازشگر وقفه (نرمافزاری) بیاندازیم تا پس از انتقال یک کاراکتر به چاپگر کاراکتر دیگری به چاپگر فرستاده شود و این به معنای کند شدن کار پردازشگر و در نهایت کند شدن کل سیستم است.
بنابراین بین پردازشگر مرکزی و چاپگر میتوان بافری (چه به صورت سختافزاری و چه به صورت نرمافزاری) قرار داد تا پردازشگر اطلاعات را برای بافر فرستاده و چاپگر سر صبر و حوصله آنها را چاپ نماید و پردازشگر هم پس از فرستادن اطلاعات میتواند به کارهای دیگری برسد.
از طرفی حافظه بافر به صورت نرمافزاری هم وجود دارد که برای ذخیره سازی موفت اطلاعات به کار میرود. این حافظه رزرو بخشی از حافظه اصلی است و چون سختافزاری نیست طول آن میتواند متغیر هم باشد.
برای مثال نرمافزارهای CD Writer از حافظه بافر نرمافزاری استفاده میکنند.
توجه داشته باشید که حافظه بافر برای انتقال اطلاعات بین دو واحد سختافزاری استفاده میشود و برای انتقال اطلاعات بین واحدهای نرمافزاری از نام بافر استفاده نمیشود.