رفتن به محتوای اصلی
توضیح کوهستانتاخیر نمایشگردایرکت‌ایکس· 6 دقیقه مطالعه· در بازی و ورزش‌های الکترونیک

بافر دوگانه در برابر سه‌گانه: زنجیره تعویض کارت گرافیک چگونه تاخیر نمایشگر را فدای پارگی تصویر می‌کند؟

بافر دوگانه تاخیر ورودی را به حداقل می‌رساند، اما با افت توان پردازنده گرافیکی، خطر پارگی شدید تصویر یا سقوط وحشتناک نرخ فریم را به همراه دارد. بافر سه‌گانه این افت ناگهانی را با اضافه کردن بافر حافظه سوم حذف می‌کند و در ازای یک تاخیر دائمی به اندازه یک فریم، حرکتی روان و بی‌نقص ارائه می‌دهد.

به قلم ویدا فراهانی

این خبر را به اشتراک بگذارید

به‌طور خلاصه

  • بافر دوگانه کمترین تاخیر ورودی را مهیا می‌کند، اما در زمان کم‌آوردن سخت‌افزار، بازیکن را وادار به تحمل پارگی تصویر یا افت شدید نرخ فریم می‌سازد.
  • بافر سه‌گانه با اضافه کردن یک بافر حافظه سوم توقف‌های خط لوله رندر را از بین می‌برد و در ازای تاخیر همیشگی یک فریم، حرکتی کاملاً روان پدید می‌آورد.
  • نمایشگرهای امروزی مجهز به نرخ نوسازی متغیر این بن‌بست نرم‌افزاری را دور می‌زنند و اجازه می‌دهند بافر دوگانه همزمان تاخیر اندک و تصویری بدون پارگی ارائه دهد.

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

در مسابقات بازی‌های ویدیویی (esports)، میلی‌ثانیه‌ها سرنوشت پیروزی و شکست در نبردهای تن‌به‌تن را رقم می‌زنند. مکانیزمی که وظیفه تحویل این فریم‌های سرنوشت‌ساز را به نمایشگر بر عهده دارد، زنجیره تعویض (swap chain) است؛ صفی از بافرهای حافظه که مستقیماً توسط رابط‌های برنامه‌نویسی گرافیکی (API) هدایت می‌شود.[2]

برای درک این بده‌بستان فنی، باید نحوه مکالمه واحد پردازش گرافیکی (GPU) با نمایشگر را زیر ذره‌بین گذاشت. مانیتورها در بازه‌های زمانی کاملاً ثابتی تازه می‌شوند و یک صفحه استاندارد ۶۰ هرتز، به طور دقیق هر ۱۶٫۶۷ میلی‌ثانیه یک تصویر کاملاً تازه طلب می‌کند.[3]

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

این شکاف ناخوشایند همان پارگی تصویر (Screen Tearing) نام دارد؛ یک نقص بصری آزاردهنده که در آن نیمه بالای تصویر فریم قدیمی و نیمه پایین فریم جدید را به نمایش می‌گذارد. راه رهایی از این آشفتگی بصری تنها یک چیز است: همگام‌سازی بی‌نقص سخت‌افزار.[4]

مبنای عملکرد بافر دوگانه

پایه‌ای‌ترین پاسخ فنی به این پارگی، بافر دوگانه (Double Buffering) است. سیستم دو فضای مجزا در حافظه اختصاص می‌دهد: بافر جلو (Front Buffer) که مانیتور داده‌ها را از روی آن می‌خواند، و بافر عقب (Back Buffer) که کارت گرافیک فریم بعدی را در آن نقاشی می‌کند.[4]

بافر سه‌گانه با افزودن دومین بافر عقب به کارت گرافیک اجازه می‌دهد تا در زمان انتظار برای نوسازی مانیتور، به رندر کردن فریم‌های جدید ادامه دهد.

به محض پایان رندر، سیستم جای این دو بافر را عوض می‌کند. اگر همگام‌سازی عمودی (V-Sync) خاموش باشد، این تعویض بی‌درنگ و آنی رخ می‌دهد؛ رویکردی که تازه‌ترین داده‌های ممکن را به خورد بازیکن می‌دهد اما تاوانش پارگی بی‌پایان تصویر است.

روشن کردن V-Sync تعویض بافرها را دقیقاً به بازه خاموشی عمودی (VBI) مانیتور قفل می‌کند؛ همان مکث بسیار ناچیزی که بین نوسازی‌های پیاپی صفحه رخ می‌دهد. این کار پارگی را نابود می‌کند اما زیر فشارهای سنگین پردازشی، یک گلوگاه مرگبار برای لوله‌های انتقال داده می‌سازد؛ سخت‌افزار برای تعویض بافر دست‌به‌سینه منتظر اجازه می‌ماند.[3]

اگر کارت گرافیک برای رندر یک فریم روی مانیتور ۶۰ هرتزی ۱۷ میلی‌ثانیه زمان صرف کند، ضرب‌الاجل سفت‌وسخت ۱۶٫۶۷ میلی‌ثانیه‌ای را از دست می‌دهد. در این وضعیت، بافر عقب پر می‌ماند و باید منتظر آغاز چرخه نوسازی بعدی دست روی دست بگذارد.

چون بافر عقب اشغال است، پردازنده گرافیکی هیچ فضایی برای تخلیه داده‌های تازه ندارد. در نتیجه به کما می‌رود و کاملاً متوقف می‌شود؛ در حالی که مانیتور فریم قبلی را برای بار دوم روی صفحه می‌اندازد، پردازنده بدون انجام هیچ کاری بی‌کار می‌نشیند. این سکته، یک پرش تصویر کاملاً محسوس ایجاد می‌کند.

این توقف ناگهانی بی‌درنگ نرخ فریم موثر را نصف می‌کند و هدف ۶۰ فریم بر ثانیه را به ۳۰ فریم بر ثانیه تنزل می‌دهد. بازیکن این شوک را به شکل جهش وحشتناک در تاخیر ورودی حس می‌کند؛ لگی کشنده که نشانه‌گیری دقیق را غیرممکن می‌سازد.[3]

بده‌بستان فنی در بافر سه‌گانه

بافر سه‌گانه با افزودن دومین بافر عقب به زنجیره تعویض، این توقف ویرانگر را خنثی می‌کند. وقتی کار بافر عقب اول تمام شد و منتظر پنجره همگام‌سازی ماند، کارت گرافیک دست از کار نمی‌کشد؛ بلکه فوراً به سراغ خانه بعدی می‌رود.[4]

بافر سه‌گانه با پذیرش جریمه تاخیر ثابتِ یک فریمی، از جهش‌های مرگبار تاخیر که ناشی از توقف کارت گرافیک در بافر دوگانه است جلوگیری می‌کند.

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

این سازوکار سقوط آزاد نرخ فریم را متوقف می‌کند. اگر پردازشگر گرافیکی یک پنجره بازسازی را از دست بدهد، مانیتور به محض آمادگی، تازه‌ترین فریم کامل‌شده را از میان دو بافر عقب موجود برمی‌دارد. خروجی نهایی پیش چشم کاربر، انیمیشنی کاملاً نرم و یکدست است.[3]

با تمام این اوصاف، این روانی تصویر تاوانی سخت در بخش تاخیر ورودی دارد. با حضور یک بافر اضافی در زنجیره، تصویری که روی مانیتور نقش می‌بندد همواره یک گام عقب‌تر از فریم در سامانه‌ای بدون محدودیت است.

در فرکانس ۶۰ هرتز، آن بافر اضافی حدود ۱۶٫۷ میلی‌ثانیه تاخیر میان کلیک ماوس و مشاهده واکنش روی صفحه می‌اندازد. برای یک بازیکن حرفه‌ای مسابقات الکترونیک، چنین تاخیر ثابتی سازشی غیرقابل قبول است؛ آن‌ها پارگی تصویر را به کنترل‌های کند و لخت ترجیح می‌دهند.[1]

مدل‌های مدرن ارائه برگردان

رابط‌های گرافیکی مدرن مثل DirectX 12 و Vulkan سازوکار این زنجیره‌های تعویض را دگرگون کرده‌اند. ویندوز با معرفی مدل ارائه برگردان (Flip Model)، روش‌های سنتی کپی بلوک بیتی را که بی‌رویه داده‌ها را در سیستم جا‌به‌جا می‌کردند به حاشیه راند. این تحول معماری، محاسبات ریاضی تاخیر را زیرورو کرد.[2]

مدل برگردان به بخش مدیریت پنجره‌های دسکتاپ سیستم‌عامل اجازه می‌دهد بدون کپی کردن فیزیکی داده‌ها، مستقیماً از روی بافر عقب بخواند. این کار مصرف پهنای باند حافظه را مهار می‌کند و میلی‌ثانیه‌های ارزشمندی از زمان کل ارائه می‌کاهد؛ جهشی غول‌آسا در بازدهی پردازش بصری.[2]

مدل‌های مدرن ارائه برگردان به سیستم‌عامل اجازه می‌دهند بافر عقب را بدون کپی داده‌ها مستقیماً بخواند و میلی‌ثانیه‌ها از زمان کل تاخیر بکاهد.

توسعه‌دهندگان همچنین می‌توانند چیدمان‌های پیشرفته‌تری مانند حالت صندوق پستی (Mailbox Mode) را فعال کنند. در این پیکربندی، کارت گرافیک بی‌وقفه فریم‌ها را درون بافرهای پشتی می‌ریزد، اما سیستم فریم قبلیِ نمایش‌داده‌نشده را بلافاصله بازنویسی می‌کند. فقط جدیدترین داده‌ها حق بقا دارند.

حالت صندوق پستی خروجی بدون پارگی ناشی از V-Sync را در کنار سرعت مهارنشده یک لوله رندرینگ آزاد فراهم می‌آورد. این شیوه به دلیل دور ریختن فریم‌های قدیمی انرژی و برق هدر می‌دهد، اما تضمین می‌کند مانیتور همواره داغ‌ترین و تازه‌ترین داده ممکن را شکار کند.

راهکار مبتنی بر نرخ نوسازی متغیر

راهکارهای سخت‌افزاری تا حد زیادی طومار کشمکش‌های نرم‌افزاری بافرینگ را در سیستم‌های بالارده پیچیده‌اند. فناوری‌های نرخ نوسازی متغیر (VRR) با تغییر رفتار ذاتی مانیتور حین رندر، کل این معادله را وارونه کرده‌اند: مانیتور اکنون گوش‌به‌فرمان کامل کارت گرافیک می‌شود.

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

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

زنجیره‌های تعویض بهینه‌نشده، در صورت تنظیمات اشتباه هنوز هم می‌توانند تا ۵۰ یا ۶۰ میلی‌ثانیه تاخیر ورودی اولیه به سیستم تحمیل کنند. تسلط بر خط لوله بافرینگ برای توسعه‌دهندگانی که به دنبال تجربه‌ای برق‌آسا و روان هستند حیاتی است. در طراحی یک محیط تعاملی پرشتاب، تک‌تک میلی‌ثانیه‌ها سرنوشت‌سازند.[2]

تصویر: فناوری‌های نرخ نوسازی متغیر بار مسئولیت همگام‌سازی را از دوش کارت گرافیک برداشته و مستقیماً به سخت‌افزار نمایشگر واگذار می‌کنند.

ردپای اشغال حافظه

بافر سه‌گانه ردپای حافظه حجیم‌تری نیز به سخت‌افزار گرافیکی تحمیل می‌کند. ذخیره‌سازی یک بافر رنگ تمام‌رزولوشن اضافی، همراه با داده‌های بافر عمق و استنسیل مربوطه، بخش گرانبهایی از حافظه گرافیکی (VRAM) را می‌بلعد؛ سرباری که رابطه مستقیمی با رزولوشن نمایشگر دارد.

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

بررسی عمیق دیدگاه‌ها

بافر دوگانه (V-Sync خاموش)

استاندارد محبوب در مسابقات esports که در آن تاخیر تنها معیار سرنوشت‌ساز بازی است.

با به‌کارگیری تنها دو بافر و خاموش کردن کامل همگام‌سازی، کارت گرافیک فریم‌ها را در همان میلی‌ثانیه آماده‌شدن به نمایشگر شلیک می‌کند. این روند کمترین تاخیر ورودی ممکن را به ارمغان می‌آورد و تضمین می‌کند دستورات گیمر در چشم‌برهم‌زدنی روی تصویر ثبت شوند. تاوان اجتناب‌ناپذیر این شتاب، پارگی شدید تصویر است؛ چراکه مانیتور در حین خواندن بافر، شاهد بازنویسی همزمان آن توسط پردازنده گرافیکی خواهد بود.

بافر سه‌گانه (V-Sync روشن)

تنظیمات ایده‌آل برای بازی‌های داستانی تک‌نفره و عناوینی با گرافیک سنگین که روانی حرکت در آنها اولویت اول است.

اضافه شدن بافر سوم به پردازنده گرافیکی امکان می‌دهد حتی حین انتظار برای چرخه نوسازی مانیتور، بدون توقف به رندر کردن ادامه دهد. این قابلیت هم پارگی تصویر را محو می‌کند و هم افت فریم‌های ناگهانی مربوط به V-Sync در بافر دوگانه را برطرف می‌سازد. بهای آن تاخیر دائمی به اندازه یک فریم است؛ خصلتی که آن را برای بازی‌های تیراندازی نیازمند واکنش‌های فوق‌سریع نامناسب می‌کند، اما برای خلق تجربه‌ای سینمایی و روان ایده‌آل است.

بازیکنان حرفه‌ای ورزش‌های الکترونیک 40%برنامه‌نویسان گرافیک 35%سازندگان سخت‌افزار 25%
بازیکنان حرفه‌ای ورزش‌های الکترونیک
پایین‌ترین تاخیر ورودی ممکن را به کیفیت بصری ترجیح می‌دهند و پارگی تصویر را برای به دست آوردن برتری در کسری از میلی‌ثانیه به جان می‌خرند.
برنامه‌نویسان گرافیک
بر حداکثر بازدهی خط لوله تمرکز دارند و از بافر سه‌گانه و مدل‌های برگردان (Flip) برای جلوگیری از توقف پردازنده گرافیکی و بهینه‌سازی منابع بهره می‌برند.
سازندگان سخت‌افزار
راهکارهای سخت‌افزاری مانند نرخ نوسازی متغیر (VRR) را ترویج می‌کنند که به کل محدودیت‌های بافرینگ نرم‌افزاری را دور می‌زند.

دیدگاه‌هایی که این گزارش پوشش نداده

  • توسعه‌دهندگان بازی‌های موبایل
  • مهندسان پنل‌های نمایشگر

منابع

پوشش منابع

4 منبع

3 دیدگاه شناسایی‌شده

بازیکنان حرفه‌ای ورزش‌های الکترونیک 40%برنامه‌نویسان گرافیک 35%سازندگان سخت‌افزار 25%
  1. [1]تیم سردبیری کوهستانبازیکنان حرفه‌ای ورزش‌های الکترونیک

    تحلیل تیم سردبیری کوهستان

    مطالعه در تیم سردبیری کوهستان →
  2. [2]Microsoft Learnبرنامه‌نویسان گرافیک

    DXGI flip-model presentation

    مطالعه در Microsoft Learn →
  3. [3]Intelسازندگان سخت‌افزار

    Advantages of Using Triple Buffering in 3-D Games

    مطالعه در Intel →
  4. [4]Wikipedia

    Multiple buffering

    مطالعه در Wikipedia →

نظرات

همیشه در جریان باشید

هر زاویه. هر روز.

اخبار بازی و ورزش‌های الکترونیک با پوشش کامل منابع و تحلیل دیدگاه‌ها، هر روز و رایگان.