حافظه میانگیر

بندانگشتی|یک حافظهٔ میانگیر اینتل روی یک ماژول رَم (RAM)
**حافظهٔ میانگیر** یا **بافر** ، در لغت به معنای حائل یا میانی است که در علوم مختلف به شکلی متفاوت به مفهوم یک حافظهٔ میانجی یا موقت بکار می‌رود. عمومأ در علوم کامپیوتر و الکترونیک اشاره به حافظهٔ موقت یک سیستم دارد.

مثال:

buffer size = 1Mb به معنی این است که حافظه میانگیر این سیستم برابر با ۱ مگابایت می‌باشد یا: اندازه حافظه موقت = 1Mb

مثلاً در شیمی محلول بافر محلولی است که ph را ثابت نگه می‌دارد، بنابراین به کمک این محلول می‌توان در مراحل گوناگون یک فرایند شمیایی ph را ثابت نگه داشته و آن را اندازه‌گیری نماییم. مدارهای بافر نیز در الکترونیک مفهومی نزدیک به این دارند. به این صورت که داده‌های سیگنال دریافتی را در خود نگهداری نموده و بر حسب نیاز به سیستم بعدی تحویل می‌دهند. مدارهای بافر به‌طور کلی به دو دسته آنالوگ و دیجیتال تقسیم می‌شوند.

## بافرهای آنالوگ
در بافر آنالوگ، سیگنال به صورت آنالوگ به مدار بافر رسیده و به طبقهٔ بعدی تحویل داده می‌شود که در صورتی که سیگنال از جنس جریان باشد به آن بافر جریان و در صورتی که از جنس ولتاژ باشد به آن بافر ولتاژ گفته می‌شود.

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

### انواع بافر دیجیتال
* سخت‌افزاری:
قطعه‌ای سخت‌افزاری است که در برخی از وسایل مانند چاپگرها وجود دارد و می‌توانیم آن را افزایش یا کاهش دهیم؛ یا در صفحه‌کلید بافری وجود دارد که تعداد معینی از کلیدهای فشرده شده را حفظ می‌کند و به یکی پس از دیگری اجرا می‌کند.
* نرم‌افزاری:
به صورت نرم‌افزاری بخشی از حافظه اصلی را به عنوان بافر در نظر می‌گیرد.

### تعیین اندازه حافظه میانگیر
# سیستم‌عامل زمان بارگذاری اندازه حافظه میانگیر را تعیین می‌کند.
# بر با استفاده از دستورها سیستم‌عاملی اندازه حافظه میانگیر را تعیین می‌کند.
# طریق برنامه‌نویسی و کنترل آن به وسیلهٔ اجرای یک مایکرو که قسمتی از حافظه را به عنوان حافظه میانگیر در نظر می‌گیرد و محتوای حافظه میانگیر را با فایل‌های تحت پردازش مرتبط می‌کند.

### شیوه استفاده از حافظه میانگیر
# روش انتقالی: انتقال اطلاعات از حافظه میانگیر به working area و پردازش آن.
# روش مکانی: آدرس اطلاعات به پردازشگر داده می‌شود و از همان حافظه میانگیر به عنوان محیط کاری استفاده می‌کند.

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

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

## بافرهای نوری (Optical buffer)
امروزه بیشترین پژوهش‌های مربوط به بافر در این زمینه انجام می‌پذیرد، بافر نوری وسیله ایست که توانایی نگهداری موقت نور را دارد، این نوع بافر در مخابره‌های نوری کاربرد دارد. بحث مورد پژوهش در این زمینه اینست که آیا به کمک این گونه بافرها می‌توان سرعت نور را کاهش داد؟

## کاربرد مدارهای بافر
مدارهای بافر بسته به نوع خود کاربردهای متفاوتی دارند:

۱بافرهای آنالوگ: بافر ولتاژ زمانی کاربرد دارد که می‌خواهیم ولتاژ را از مداری با رسانندگی (امپدانس) خروجی بالا به مداری با رسانندگی ورودی پایین تحویل دهیم که بوسیلهٔ بافر مانع از لود شدن سیگنال مدار اول بروی مقاومت ورودی مدار دوم و تداخل این دو مدار می‌شویم. بافر جریان نیز متشابها هنگامی بکار می‌رود که می‌خواهیم سیگنال از جنس جریان را از مداری با امپدانس خروجی پایین به مداری با امپدانس ورودی بالا تحویل دهیم.

۲بافرهای دیجیتال: در اتصالات بین سخت‌افزارها، فرستادن داده به شبکه، بازخوانی اطلاعات، ویا نمایش خروجی کاربرد دارند؛ که دلیل استفاده از بافر احتمال تفاوت سرعت آن‌ها یا زمان آغاز بکار بخش‌های مختلف می‌باشد.

در حالت کلی موارد کاربرد مدارهای بافر عبارتند از:
* اتصال دو مدار با رسانندگی‌های ورودی و خروجی ناایدآل و جلوگیری از تخریب اطلاعات
* اتصال دوبخش که سرعت‌های گوناگونی در پردازش دارند
* نگهداری موقت اطلاعات برای به کاربردن در زمانی دیگر
* تأخیر در دریافت اطلاعات به منظور رسیدن به زمان کافی برای انجام پردازش
* نگه داشتن اطلاعات برای استفادهٔ متعدد در انجام فرایند

## بافرهای ایده‌آل
### بافر ولتاژ ایده‌آل
بافری است با رسانندگی ورودی بی‌نهایت و رسانندگی خروجی صفر برای جلوگیزی از بارگیری، از دیگر ویژگی‌های این گونه بافرها خطی بودن در دامنه‌ها و بسامدهای گوناگون سیگنال ورودی و نداشتن دیرکرد در تحویل خروجی می‌باشد.

### بافر جریان ایده‌آل
بافری است با رسانندگی ورودی صفر و رسانندگی خروجی بی‌نهایت به منظور جلوگیری از بارگیری، از دیگر ویژگی‌های این نوع بافر همانند بافر ولتاژ، خطی بودن در دامنه‌ها و بسامدهای گوناگون سیگنال ورودی و نداشتن دیرکرد در تحویل خروجی می‌باشد.

## نمونه‌هایی از بافرهای آنالوگ و دیجیتال
### بافرهای آنالوگ
;بافر ولتاژ:
* مدارهای شامل ترانزیستورهای قدرت: مدارهایی که شامل ترانزیستورهای قدرت می‌باشند مانند مدارهای به کار برده شده در لوازم صوتی که با بهرهٔ ولتاژ یک جریان را به بسیار تقویت می‌کنند.
* آپ-امپ با فیدبک منفی
* مدار کلکتور مشترک
* مدار درین مشترک
* مدارهای امیتر (سورس) مشترک و بیس (گیت) مشترک نیز بافرهای ولتاژ با بهره (گین) غیر یک محسوب می‌شوند.
;بافر جریان
* مدارهای بیس مشترک و گیت مشترک

### بافرهای دیجیتال
* در مبدل‌های آنالوگ به دیجیتال
* در مبدل‌های سری به موازی وموازی به سری
* در همه ورودی‌ها و خروجی‌های سخت‌افزاری رایانه مانند: صفحهٔ نمایش، موس، صفحه کلید و…
* در پورت‌های ورودی: مانند پورت‌های usb, com, wireless و…
* در افزارهایی که به شبکه متصلند
* بسیاری از سخت‌افزارهای رایانه مانند: هارد درایو، سی دی درایو و

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

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

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

برای مثال نرم‌افزارهای CD Writer از حافظه میانگیر نرم‌افزاری استفاده می‌کنند.

توجه داشته باشید که حافظه میانگیر برای انتقال اطلاعات میان دو واحد سخت‌افزاری استفاده می‌شود و برای انتقال اطلاعات بین واحدهای نرم‌افزاری از نام حافظه میانگیر استفاده نمی‌شود.http://www.elmefarda.com/فرق-بافر-buffer-و-کش-cache/

## منابع

* ابویسانی، مهدی، بافر و مدارهای بافری، زیر نظر ناصر حافظی مطلق، زمستان ۱۳۸۸.

رده:حافظه رایانه
رده:همگامی