حافظه میانگیر یا بافر (Buffer) چیست و چه کاربردی دارد؟

میانگیر یا بافر، حافظه مجزایی نیست بلکه بخشی از حافظه فیزیکی (رم، دیسک سخت و...) است که برای ذخیره موقت دادهها کنار گذاشته میشود. لذا حافظه رم، دیسک سخت، حافظه فلش، کارت گرافیک و... همگی میتوانند بخشی تحت عنوان حافظه میانگیر با بافر داشته باشند. حافظه بافر ناپایا (volatile) است، یعنی اگر برق آن قطع شود، دادههایش حذف میشوند. بدون حافظه بافر، عملکرد کامپیوترها بسیار کندتر میشد، زیرا هنگام تبادل داده، قطعات سریعتر باید خود را با قطعات کندتر تطبیق میدادند و عملا بخشی از ظرفیتشان هدر میرفت.
کاربرد حافظه میانگیر یا بافر
یکی از مهمترین وظایف حافظه میانگیر (بافر) جبران اختلاف سرعت بین نقطه ارسال و نقطه دریافت دادههاست. اگر فرستنده داده، سرعتش کمتر از گیرنده داده باشد (مثل دیسک نوری که سرعتش کمتر از حافظه رم است)، گیرنده، بخشی از فضای خود را بهعنوان بافر کنار میگذارد تا روند دریافت و پردازش دادهها دچار وقفه نشود.
مثلا فرض کنید شخصی میخواهد ویدیویی را مستقیما از روی دیسک نوری (CD/DVD/…) رایانهاش تماشا کند. برای این منظور، دادهها ابتدا باید از دیسک نوری به حافظه اصلی یعنی حافظه رم منتقل شوند تا رایانه بتواند آنها را نمایش دهد. باتوجه به اینکه سرعت کار درایو نوری بسیار کمتر از حافظه رم است، اگر دادههای ویدیویی بایتبهبایت از روی دیسک نوری به حافظه رم منتقل شوند، ویدیو با وقفههای متعدد بهنمایش درمیآید و سیپییو نیز در تمام مدت پخش ویدیو درگیر میشود. برای رفع این مشکل، حافظه رم بخشی از فضای خود را بهعنوان حافظه میانگیر یا بافر تعیین میکند؛ سپس بهجای آنکه دادههای ویدیویی را ذرهذره از روی دیسک نوری دریافت کند، حجم بیشتری از آن (فرض کنید 50 مگابایت نخست) را دریافت و آن را در میانگیر یا بافر خود ذخیره میکند. وقتی کاربر مشغول تماشای آن 50 مگابایت ابتدایی است، بقیه دادهها نیز بهمرور از دیسک نوری به حافظه رم منتقل میشود و آماده پخش میماند. با این کار اختلاف سرعت درایو نوری با حافظه رم تقریبا جبران میشود (شکل زیر).

کاربرد دیگر حافظه میانگیر یا بافر این است که دادههایی را که قبلا استفاده شدهاند و یا بناست که از آنها استفاده شود، در خود ذخیره میکند تا دسترسی به آنها تسریع شود.
شاید تاکنون بسیار برایتان پیش آمده است که نرمافزاری را روی رایانهتان اجرا و بعد از اتمام کار و بستن آن، دوباره همان نرمافزار را احضار کرده و دیدهاید که بار دوم بسیار سریعتر از دفعه نخست باز و آماده کار شده است. چرا؟ چون بار اول دادههای کلیدی نرمافزار در بافر حافظه رم ذخیره شده است و وقتی بار دوم همان نرمافزار را اجرا میکنید، دیگر لازم نیست آن دادهها مجددا از هارددیسک (که حافظه کندتری است) فرخوانده و به حافظه رم منتقل شوند.
احتمالا نمونه دیگری از کاربرد بافر را حین کار با نرمافزار ورد مشاهده کردهاید: وقتی اولبار، سندی را در نرمافزار ورد ذخیره میکنید، اندکی زمان میبرد اما دفعات بعد وقتی پس از ویرایش همان سند، عبارت «ذخیرهسازی» ورد را کلیک میکنید، سند فورا نوسازی و ذخیره میشود. علتش این است که سند مذکور اولبار در حافظه بافر دیسک سخت ذخیره شده است. لذا وقتی ضمن ویرایش سند مرتبا آن را ذخیره میکنید، لازم نیست دادهها هر بار در دیسک سخت بازنویسی شوند. حافظه میانگیر یا بافر دیسک سخت برخلاف خود دیسک سخت، مکانیکی نیست بلکه حافظهای الکترونیکی از نوع رم و به همین خاطر سریعتر است. حافظه بافر دیسک سخت را گاهی حافظه پنهان یا کش دیسک سخت (disk cache) نیز میگویند.
گفتنی است بسیاری از دیگر تجهیزات رایانهای (چاپگرها، مودمها، دوربینهای عکاسی و ویدیویی و...) نیز حافظه میانگیر (بافر) دارند تا اختلاف سرعت آنها حین تبادل داده با سایر سختافزارها یا نرمافزارها جبران شود.