حافظه میانگیر
حافظهٔ میانگیر یا بافر ، در لغت به معنای حائل یا میانی است که در علوم مختلف به شکلی متفاوت به مفهوم یک حافظهٔ میانجی یا موقت بکار می‌رود. عمومأ در علوم کامپیوتر و الکترونیک اشاره به حافظهٔ موقت یک سیستم دارد.
مثال:
buffer size = 1Mb به معنی این است که حافظه میانگیر این سیستم برابر با ۱ مگابایت می‌باشد یا: اندازه حافظه موقت = 1Mb
مثلاً در شیمی محلول بافر محلولی است که ph را ثابت نگه می‌دارد، بنابراین به کمک این محلول می‌توان در مراحل گوناگون یک فرایند شمیایی ph را ثابت نگه داشته و آن را اندازه‌گیری نماییم. مدارهای بافر نیز در الکترونیک مفهومی نزدیک به این دارند. به این صورت که داده‌های سیگنال دریافتی را در خود نگهداری نموده و بر حسب نیاز به سیستم بعدی تحویل می‌دهند. مدارهای بافر به‌طور کلی به دو دسته آنالوگ و دیجیتال تقسیم می‌شوند.
در بافر آنالوگ، سیگنال به صورت آنالوگ به مدار بافر رسیده و به طبقهٔ بعدی تحویل داده می‌شود که در صورتی که سیگنال از جنس جریان باشد به آن بافر جریان و در صورتی که از جنس ولتاژ باشد به آن بافر ولتاژ گفته می‌شود.
بافر دیجیتال به صورت حافظه عمل می‌کند و سیگنال دیجیتال به بافر وارد شده و به صورت دیجتال به بخش بعدی تحویل داده می‌شود. اگر سیگنال به صورت موازی وارد مدار بافر و به صورت موازی از آن خارج شود آن بافر موازی گفته می‌شود و در صورتی که سیگنال به صورت سری وارد مدار بافر و به صورت سری از آن خارج شود آن بافر سری گفته می‌شود، ترکیب این دو می‌تواند به نام بافرهای سری-موازی شناخته شود.
قطعه‌ای سخت‌افزاری است که در برخی از وسایل مانند چاپگرها وجود دارد و می‌توانیم آن را افزایش و یا کاهش دهیم؛ یا در صفحه‌کلید بافری وجود دارد که تعداد معینی از کلیدهای فشرده شده را حفظ می‌کند و به یکی پس از دیگری اجرا می‌کند. به صورت نرم‌افزاری بخشی از حافظه اصلی را به عنوان بافر در نظر می‌گیرد.امروزه بیشترین پژوهش‌های مربوط به بافر در این زمینه انجام می‌پذیرد، بافر نوری وسیله ایست که توانایی نگهداری موقت نور را دارد، این نوع بافر در مخابره‌های نوری کاربرد دارد. بحث مورد پژوهش در این زمینه اینست که آیا به کمک این گونه بافرها می‌توان سرعت نور را کاهش داد؟
مدارهای بافر بسته به نوع خود کاربردهای متفاوتی دارند:
1بافرهای آنالوگ: بافر ولتاژ زمانی کاربرد دارد که می‌خواهیم ولتاژ را از مداری با رسانندگی (امپدانس) خروجی بالا به مداری با رسانندگی ورودی پایین تحویل دهیم که بوسیلهٔ بافر مانع از لود شدن سیگنال مدار اول بروی مقاومت ورودی مدار دوم و تداخل این دو مدار می‌شویم. بافر جریان نیز متشابها هنگامی بکار می‌رود که می‌خواهیم سیگنال از جنس جریان را از مداری با امپدانس خروجی پایین به مداری با امپدانس ورودی بالا تحویل دهیم.
2بافرهای دیجیتال: در اتصالات بین سخت‌افزارها، فرستادن داده به شبکه، بازخوانی اطلاعات، ویا نمایش خروجی کاربرد دارند؛ که دلیل استفاده از بافر احتمال تفاوت سرعت آن‌ها یا زمان آغاز بکار بخش‌های مختلف می‌باشد.
در حالت کلی موارد کاربرد مدارهای بافر عبارتند از:
بافری است با رسانندگی ورودی بی‌نهایت و رسانندگی خروجی صفر برای جلوگیزی از بار گیری، از دیگر ویژگی‌های این گونه بافرها خطی بودن در دامنه‌ها و بسامدهای گوناگون سیگنال ورودی و نداشتن دیرکرد در تحویل خروجی می‌باشد.
بافری است با رسانندگی ورودی صفر و رسانندگی خروجی بی‌نهایت به منظور جلوگیری از بارگیری، از دیگر ویژگی‌های این نوع بافر همانند بافر ولتاژ , خطی بودن در دامنه‌ها و بسامدهای گوناگون سیگنال ورودی و نداشتن دیرکرد در تحویل خروجی می‌باشد. برای مثال انتفال اطلاعات از پردازشگر مرکزی به چاپگر را در نظر بگیرید. CPU قطعه‌ای است که در مقایسه با چاپگر بسیار تند پردازش می‌کند و اگر ما بخواهیم اطلاعاتی را از پردازشگر به چاپگر بدون وجود حافظه میانگیر بفرستیم باید در زمان کاری پردازشگر وقفه (نرم‌افزاری) بیندازیم تا پس از انتقال یک کاراکتر به چاپگر کاراکتر دیگری به چاپگر فرستاده شود و این به معنای کند شدن کار پردازشگر و سرانجام کند شدن کل سیستم است.
بنابراین میان پردازشگر مرکزی و چاپگر می‌توان حافظه میانگیری (چه به صورت سخت‌افزاری و چه به صورت نرم‌افزاری) قرار داد تا پردازشگر اطلاعات را برای حافظه میانگیر فرستاده و چاپگر سر صبر و حوصله آن‌ها را چاپ نماید و پردازشگر هم پس از فرستادن اطلاعات می‌تواند به کارهای دیگری برسد.
از طرفی حافظه میانگیر به صورت نرم‌افزاری هم وجود دارد که برای نگهداری موقت اطلاعات به کار می‌رود. این حافظه رزرو بخشی از حافظه اصلی است و چون سخت‌افزاری نیست طول آن می‌تواند متغیر هم باشد.
برای مثال نرم‌افزارهای CD Writer از حافظه میانگیر نرم‌افزاری استفاده می‌کنند.
توجه داشته باشید که حافظه میانگیر برای انتقال اطلاعات میان دو واحد سخت‌افزاری استفاده می‌شود و برای انتقال اطلاعات بین واحدهای نرم‌افزاری از نام حافظه میانگیر استفاده نمی‌شود.