В інформатиці багатократною буферизацією називається використання більше, ніж одного буферу для зберігання блоку даних, так що «читач» побачить остаточну (можливо, застарілу) версію даних швидше за частково оновлену, створену «записувачем». Вона також використовується для уникнення потреби у використанні [ru] у випадку, коли читачами та записувачами є різні пристрої.
Опис
Найкращим способом пояснити роботу багатократної буферизації є взяти приклад із реального світу. Нехай у погожий день ви вирішили набрати води у басейн, щоправда ви не можете знайти шланг. Тоді вам доведеться наповнювати басейн відрами. Отже, ви наповните одне відро (чи буфер) з крану, закриєте кран, підете до басейну, виллєте воду, повернетеся до крану і повторите процедуру. Це приклад одинарної буферизації. Кран буде закритий, поки ви «оброблюєте» відро з водою.
Тепер розглянемо, що ви робитимете, маючи два відра. Ви заповните перше відро, після чого поставите друге під відкритий кран. Поки друге відро наповнюється водою, ви матимете час вилити воду з першого у басейн. Коли ви повернетеся, ви можете просто поміняти відра, так що перше наповнюватиметься у той час, поки ви виливатимете воду з другого у басейн. Так може повторюватися, поки басейн не наповниться. Можна побачити, що цим способом басейн наповнюється набагато швидше, оскільки менше часу витрачається на очікування, нічого не роблячи, поки відро наповнюється. Це приклад подвійної буферизації. Кран може бути відкритим увесь час, і не треба чекати завершення обробки.
Якщо ви залучите когось іншого носити відра до басейну, поки одне наповнюється, а інше спустошується, то отримаєте приклад потрійної буферизації. Якщо цей крок займає забагато часу, ви можете використати більше відер, так що кран постійно їх наповнюватиме.
В інформатиці випадку з відкритим краном не може бути, чи не має бути, переважно вимикаючи його (подібно до аудіопотоків). Також, комп'ютери зазвичай надають перевагу порціям даних, аніж потокам. У таких випадках подвійна буферизація застосовується досить часто.
Мережа Петрі подвійної буферизації
Мережа Петрі на рисунку показує роботу подвійної буферизації. Вершини переходу W1 і W2 представляють запис відповідно до буферів 1 і 2, а R1 і R2 — читання з буферів 1 і 2 відповідно. На початку спрацює тільки вершина переходу W1. Після спрацювання W1, вершини R1 і W2 спрацюють одночасно. Після того, вершини R2 і W1 спрацюють одночасно, і так далі.
Отже, після першого переходу, коли W1 спрацьовує наодинці, система стає періодичною, і вершини переходу спрацьовують завжди парами (R1 з W2 і R2 з W1 відповідно).
Подвійна буферизація у комп'ютерній графіці
У комп'ютерній графіці подвійною буферизацією називається спосіб промальовування графіки, що усуває (чи знижує) мерехтіння, розриви та інші артефакти.
Програмам важко промальовувати екран так, щоб пікселі не змінювалися понад раз. Наприклад, при оновленні сторінки тексту, набагато легше очистити всю сторінку, а потім малювати літери, ніж якось стерти всі пікселі, що не відносяться одночасно до старих і нових літер. Проте, це проміжне зображення користувач побачить мерехтливим. Крім того, монітори постійно перемальовують видиму відеосторінку (приблизно 60 разів на секунду), тож навіть досконале оновлення може бути видимим короткочасно як горизонтальний роздільник між «новим» зображенням та неперемальованим «старим», званий розривом.
Програмна реалізація подвійної буферизації має всі операції малювання, результати яких зберігаються у деякій ділянці системної пам'яті, званій «заднім буфером». Коли всі операції малювання вважаються завершеними, вся ділянка (чи лише змінена частина) копіюється до відеопам'яті («переднього буферу»); це копіювання зазвичай синхронізується з растровим променем монітора для уникнення розривів. Подвійна буферизація обов'язково вимагає більше пам'яті та процесорного часу за одиночну через необхідність виділення системної пам'яті для заднього буферу, час на операції копіювання, та час очікування синхронізації.
Композитні менеджери вікон часто сполучають операції «копіювання» та «композитингу», використовувані у позиціюванні вікон, перетворення їх з ефектами масштабування чи викривлення, та роблячи порції прозорими. Отже «передній буфер» може містити лише композитне зображення, яке видно на екрані, тоді як інший, «задній буфер» для кожного вікна містить некомпозитне зображення усього вмісту вікна.
Гортання сторінок
У методі гортання сторінок (іноді званим пінг-понг буферизацією), замість копіювання даних, обидва буфери здатні бути відображеними (обидва у VRAM). Щоразу один буфер активно показується монітором, поки інший, фоновий — промальовується. Коли промальовування завершено, вони міняються ролями. Гортання сторінок зазвичай здійснюється шляхом зміни значення вказівника на початок відображуваних даних у відеопам'яті.
Гортання сторінок набагато швидше за копіювання даних і може гарантувати, що розриви не з'являтимуться доти, доки сторінки змінюються через кадровий імпульс монітора, що гасить — період гасіння, коли ніякі відеодані не промальовуються. Поточний активний і видимий буфер називається переднім, а фонова сторінка — «заднім буфером».
Потрійна буферизація
У комп'ютерній графіці, потрійна буферизація подібна до подвійної, але може надавати більшу продуктивність. У подвійній буферизації програми мають чекати на завершення копіювання чи обміну промальованого зображення перед початком промальовування наступного. Таке очікування може займати кілька мілісекунд, під час яких обидва буфери є недоторканими.
У потрійній буферизації програми мають два задні буфери, як і змогу негайно починати промальовування на тому з них, який не бере участі у вищезгаданому копіюванні. Третій, передній, буфер зчитується відеокартою для відображення на моніторі. Щойно зображення було надіслано монітору, передній буфер обмінюється (або копіюється) з тим заднім буфером, який містить найостанніше завершене зображення. Оскільки один із задніх буферів завжди завершений, відеокарта ніколи не чекає на завершення програмного забезпечення. Отже, програмне забезпечення та відеокарта є цілком незалежними, і можуть працювати кожна у своєму темпі. Нарешті, подане зображення починається без очікування синхронізації, а отже, з мінімальними лагами.
Завдяки тому, що програмний алгоритм не опитує графічне апаратне забезпечення у подіях оновлення монітора, алгоритм може працювати максимально швидко. Це може означати, що кілька зображень будуть записані до задніх буферів, але не будуть відображені на моніторі.
Існує альтернатива потрійної буферизації — трибуферний [en]. У цьому випадку програма промалювавши обидва задні буфери, очікує на переміщення одного з них на екран до того, як почне промальовувати наступний задній буфер (тобто за принципом трьох-елементної черги). Вищенаведена діаграма ілюструє цей процес.
Чотирикратна буферизація
Термін «чотирикратна буферизація» використовується у стереоскопічних реалізаціях, і означає використання подвійної буферизації для кожного з зображень для лівого та правого ока, загалом чотирьох буферів. Команда обміну чи копіювання буферів зазвичай застосовується до обох пар одночасно. У разі використання потрійної буферизації загальна кількість буферів дорівнює шести.
Чотирикратна буферизація — технологія реалізації стереоскопічного рендерингу кадрів у комп'ютерній графіці. Для забезпечення стереоскопічного рендерингу кожне око повинно отримувати окреме зображення. Чотирикратна буферизація використовує подвійну буферизацію разом з переднім і заднім буферами для кожного ока, загалом чотири буфери.
Подібно до вертикальної синхронізації у двовимірному режимі, чотирикратна буферизація дозволяє синхронно обмінювати передні та задні буфери для кожного ока, дозволяючи дисплею легко працювати з різними частотами кадрів.
Чотирикратна буферизація вимагає особливої підтримки драйверами відеокарт, що унеможливлює її для більшості споживчих карт. Проте її підтримують, наприклад відеокарти AMD серії Radeon HD 6000.
Стандарти 3D, такі як OpenGL і Direct3D також підтримують чотирикратну буферизацію.
Подвійна буферизація з прямим доступом до пам'яті
Термін подвійної буферизації використовується для копіювання даних між двома буферами для передачі прямого доступу до пам'яті (DMA), а не для збільшення продуктивності, але для задоволення конкретних вимог пристроїв щодо адресації (особливо 32-розрядні пристрої на системах із ширшою адресацією, наданою розширенням фізичних адрес). Драйвери Microsoft Windows особливо помітно використовуватимуть подвійну буферизацію. На системах на базі Linux чи BSD вона називається стрибковими буферами, оскільки дані повинні «стрибати» крізь ці буфери для введення та виведення.
Інші застосування
Подвійна буферизація також застосовується як техніка сприяння черезрядковості чи деінтерлейсингу відеосигналів.
Див. також
Примітки
- Вілсон, Дерек (26 червня 2009). Triple Buffering: Why We Love It [Потрійна буферизація: Чому нам це подобається] (англійською) . AnandTech. Архів оригіналу за 5 червня 2016. Процитовано 16 липня 2009.
- Сегал, Марк; Акелей, Курт (11 серпня 2008). The OpenGL Graphics System: A Specification (Version 3.0) (PDF). с. 490. Архів (PDF) оригіналу за 8 вересня 2008. Процитовано 6 червня 2016.
- Physical Address Extension - PAE Memory and Windows. Microsoft Windows Hardware Development Central. 2005. Архів оригіналу за 6 квітня 2008. Процитовано 7 квітня 2008.
Посилання
- Дулітл, Майк (24 травня 2007). Triple buffering: Improve your PC gaming performance for free [Потрійна буферизація: поліпшіть свою продуктивність у відеоіграх безкоштовно] (англійською) . Архів оригіналу за 19 червня 2016. Процитовано 6 червня 2016.
- http://www.tweakguides.com/Graphics_10.html [Архівовано 18 серпня 2016 у Wayback Machine.]
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Nemaye perevirenih versij ciyeyi storinki jmovirno yiyi she ne pereviryali na vidpovidnist pravilam proektu V informatici bagatokratnoyu buferizaciyeyu nazivayetsya vikoristannya bilshe nizh odnogo buferu dlya zberigannya bloku danih tak sho chitach pobachit ostatochnu mozhlivo zastarilu versiyu danih shvidshe za chastkovo onovlenu stvorenu zapisuvachem Vona takozh vikoristovuyetsya dlya uniknennya potrebi u vikoristanni ru u vipadku koli chitachami ta zapisuvachami ye rizni pristroyi Mnozhini 1 2 i 3 predstavlyayut operaciyi odinarnoyi podvijnoyi ta potrijnoyi buferizaciyi vidpovidno z uvimknenoyu vertikalnoyu sinhronizaciyeyu Na kozhnomu grafiku chas teche zliva napravo Zauvazhte sho 3 pokazuye en z troma buferami pochatkove viznachennya potrijnoyi buferizaciyi vikidatime kadr C yak tilki kadr D zavershitsya i pochne promalovuvati kadr E u bufer 1 bez zatrimki Mnozhina 4 pokazuye sho stayetsya koli kadr na prikladi B zajmaye bilshe chasu nizh zazvichaj dlya promalovuvannya U comu vipadku onovlennya kadru propuskayetsya U chutlivih do chasu realizaciyah takih yak progravannya video ves kadr mozhe buti opushenij Z tribufernim lancyugom obminiv u mnozhini 5 promalovuvannya kadru B mozhe pochatisya bez ochikuvannya kopiyuvannya kadru A do videopam yati znizhuyuchi jmovirnist vidsutnosti vertikalnogo zvorotnogo hodu zatrimanogo kadru OpisNajkrashim sposobom poyasniti robotu bagatokratnoyi buferizaciyi ye vzyati priklad iz realnogo svitu Nehaj u pogozhij den vi virishili nabrati vodi u basejn shopravda vi ne mozhete znajti shlang Todi vam dovedetsya napovnyuvati basejn vidrami Otzhe vi napovnite odne vidro chi bufer z kranu zakriyete kran pidete do basejnu villyete vodu povernetesya do kranu i povtorite proceduru Ce priklad odinarnoyi buferizaciyi Kran bude zakritij poki vi obroblyuyete vidro z vodoyu Teper rozglyanemo sho vi robitimete mayuchi dva vidra Vi zapovnite pershe vidro pislya chogo postavite druge pid vidkritij kran Poki druge vidro napovnyuyetsya vodoyu vi matimete chas viliti vodu z pershogo u basejn Koli vi povernetesya vi mozhete prosto pominyati vidra tak sho pershe napovnyuvatimetsya u toj chas poki vi vilivatimete vodu z drugogo u basejn Tak mozhe povtoryuvatisya poki basejn ne napovnitsya Mozhna pobachiti sho cim sposobom basejn napovnyuyetsya nabagato shvidshe oskilki menshe chasu vitrachayetsya na ochikuvannya nichogo ne roblyachi poki vidro napovnyuyetsya Ce priklad podvijnoyi buferizaciyi Kran mozhe buti vidkritim uves chas i ne treba chekati zavershennya obrobki Yaksho vi zaluchite kogos inshogo nositi vidra do basejnu poki odne napovnyuyetsya a inshe spustoshuyetsya to otrimayete priklad potrijnoyi buferizaciyi Yaksho cej krok zajmaye zabagato chasu vi mozhete vikoristati bilshe vider tak sho kran postijno yih napovnyuvatime V informatici vipadku z vidkritim kranom ne mozhe buti chi ne maye buti perevazhno vimikayuchi jogo podibno do audiopotokiv Takozh komp yuteri zazvichaj nadayut perevagu porciyam danih anizh potokam U takih vipadkah podvijna buferizaciya zastosovuyetsya dosit chasto Merezha Petri podvijnoyi buferizaciyi Dokladnishe Merezhi Petri Merezha Petri podvijnoyi buferizaciyi Merezha Petri na risunku pokazuye robotu podvijnoyi buferizaciyi Vershini perehodu W1 i W2 predstavlyayut zapis vidpovidno do buferiv 1 i 2 a R1 i R2 chitannya z buferiv 1 i 2 vidpovidno Na pochatku spracyuye tilki vershina perehodu W1 Pislya spracyuvannya W1 vershini R1 i W2 spracyuyut odnochasno Pislya togo vershini R2 i W1 spracyuyut odnochasno i tak dali Otzhe pislya pershogo perehodu koli W1 spracovuye naodinci sistema staye periodichnoyu i vershini perehodu spracovuyut zavzhdi parami R1 z W2 i R2 z W1 vidpovidno Podvijna buferizaciya u komp yuternij graficiU komp yuternij grafici podvijnoyu buferizaciyeyu nazivayetsya sposib promalovuvannya grafiki sho usuvaye chi znizhuye merehtinnya rozrivi ta inshi artefakti Programam vazhko promalovuvati ekran tak shob pikseli ne zminyuvalisya ponad raz Napriklad pri onovlenni storinki tekstu nabagato legshe ochistiti vsyu storinku a potim malyuvati literi nizh yakos sterti vsi pikseli sho ne vidnosyatsya odnochasno do starih i novih liter Prote ce promizhne zobrazhennya koristuvach pobachit merehtlivim Krim togo monitori postijno peremalovuyut vidimu videostorinku priblizno 60 raziv na sekundu tozh navit doskonale onovlennya mozhe buti vidimim korotkochasno yak gorizontalnij rozdilnik mizh novim zobrazhennyam ta neperemalovanim starim zvanij rozrivom Programna realizaciya podvijnoyi buferizaciyi maye vsi operaciyi malyuvannya rezultati yakih zberigayutsya u deyakij dilyanci sistemnoyi pam yati zvanij zadnim buferom Koli vsi operaciyi malyuvannya vvazhayutsya zavershenimi vsya dilyanka chi lishe zminena chastina kopiyuyetsya do videopam yati perednogo buferu ce kopiyuvannya zazvichaj sinhronizuyetsya z rastrovim promenem monitora dlya uniknennya rozriviv Podvijna buferizaciya obov yazkovo vimagaye bilshe pam yati ta procesornogo chasu za odinochnu cherez neobhidnist vidilennya sistemnoyi pam yati dlya zadnogo buferu chas na operaciyi kopiyuvannya ta chas ochikuvannya sinhronizaciyi Kompozitni menedzheri vikon chasto spoluchayut operaciyi kopiyuvannya ta kompozitingu vikoristovuvani u poziciyuvanni vikon peretvorennya yih z efektami masshtabuvannya chi vikrivlennya ta roblyachi porciyi prozorimi Otzhe perednij bufer mozhe mistiti lishe kompozitne zobrazhennya yake vidno na ekrani todi yak inshij zadnij bufer dlya kozhnogo vikna mistit nekompozitne zobrazhennya usogo vmistu vikna Gortannya storinok U metodi gortannya storinok inodi zvanim ping pong buferizaciyeyu zamist kopiyuvannya danih obidva buferi zdatni buti vidobrazhenimi obidva u VRAM Shorazu odin bufer aktivno pokazuyetsya monitorom poki inshij fonovij promalovuyetsya Koli promalovuvannya zaversheno voni minyayutsya rolyami Gortannya storinok zazvichaj zdijsnyuyetsya shlyahom zmini znachennya vkazivnika na pochatok vidobrazhuvanih danih u videopam yati Gortannya storinok nabagato shvidshe za kopiyuvannya danih i mozhe garantuvati sho rozrivi ne z yavlyatimutsya doti doki storinki zminyuyutsya cherez kadrovij impuls monitora sho gasit period gasinnya koli niyaki videodani ne promalovuyutsya Potochnij aktivnij i vidimij bufer nazivayetsya perednim a fonova storinka zadnim buferom Potrijna buferizaciyaU komp yuternij grafici potrijna buferizaciya podibna do podvijnoyi ale mozhe nadavati bilshu produktivnist U podvijnij buferizaciyi programi mayut chekati na zavershennya kopiyuvannya chi obminu promalovanogo zobrazhennya pered pochatkom promalovuvannya nastupnogo Take ochikuvannya mozhe zajmati kilka milisekund pid chas yakih obidva buferi ye nedotorkanimi U potrijnij buferizaciyi programi mayut dva zadni buferi yak i zmogu negajno pochinati promalovuvannya na tomu z nih yakij ne bere uchasti u vishezgadanomu kopiyuvanni Tretij perednij bufer zchituyetsya videokartoyu dlya vidobrazhennya na monitori Shojno zobrazhennya bulo nadislano monitoru perednij bufer obminyuyetsya abo kopiyuyetsya z tim zadnim buferom yakij mistit najostannishe zavershene zobrazhennya Oskilki odin iz zadnih buferiv zavzhdi zavershenij videokarta nikoli ne chekaye na zavershennya programnogo zabezpechennya Otzhe programne zabezpechennya ta videokarta ye cilkom nezalezhnimi i mozhut pracyuvati kozhna u svoyemu tempi Nareshti podane zobrazhennya pochinayetsya bez ochikuvannya sinhronizaciyi a otzhe z minimalnimi lagami Zavdyaki tomu sho programnij algoritm ne opituye grafichne aparatne zabezpechennya u podiyah onovlennya monitora algoritm mozhe pracyuvati maksimalno shvidko Ce mozhe oznachati sho kilka zobrazhen budut zapisani do zadnih buferiv ale ne budut vidobrazheni na monitori Isnuye alternativa potrijnoyi buferizaciyi tribufernij en U comu vipadku programa promalyuvavshi obidva zadni buferi ochikuye na peremishennya odnogo z nih na ekran do togo yak pochne promalovuvati nastupnij zadnij bufer tobto za principom troh elementnoyi chergi Vishenavedena diagrama ilyustruye cej proces Chotirikratna buferizaciyaTermin chotirikratna buferizaciya vikoristovuyetsya u stereoskopichnih realizaciyah i oznachaye vikoristannya podvijnoyi buferizaciyi dlya kozhnogo z zobrazhen dlya livogo ta pravogo oka zagalom chotiroh buferiv Komanda obminu chi kopiyuvannya buferiv zazvichaj zastosovuyetsya do oboh par odnochasno U razi vikoristannya potrijnoyi buferizaciyi zagalna kilkist buferiv dorivnyuye shesti Chotirikratna buferizaciya tehnologiya realizaciyi stereoskopichnogo renderingu kadriv u komp yuternij grafici Dlya zabezpechennya stereoskopichnogo renderingu kozhne oko povinno otrimuvati okreme zobrazhennya Chotirikratna buferizaciya vikoristovuye podvijnu buferizaciyu razom z perednim i zadnim buferami dlya kozhnogo oka zagalom chotiri buferi Podibno do vertikalnoyi sinhronizaciyi u dvovimirnomu rezhimi chotirikratna buferizaciya dozvolyaye sinhronno obminyuvati peredni ta zadni buferi dlya kozhnogo oka dozvolyayuchi displeyu legko pracyuvati z riznimi chastotami kadriv Chotirikratna buferizaciya vimagaye osoblivoyi pidtrimki drajverami videokart sho unemozhlivlyuye yiyi dlya bilshosti spozhivchih kart Prote yiyi pidtrimuyut napriklad videokarti AMD seriyi Radeon HD 6000 Standarti 3D taki yak OpenGL i Direct3D takozh pidtrimuyut chotirikratnu buferizaciyu Podvijna buferizaciya z pryamim dostupom do pam yatiDokladnishe Pryamij dostup do pam yati Termin podvijnoyi buferizaciyi vikoristovuyetsya dlya kopiyuvannya danih mizh dvoma buferami dlya peredachi pryamogo dostupu do pam yati DMA a ne dlya zbilshennya produktivnosti ale dlya zadovolennya konkretnih vimog pristroyiv shodo adresaciyi osoblivo 32 rozryadni pristroyi na sistemah iz shirshoyu adresaciyeyu nadanoyu rozshirennyam fizichnih adres Drajveri Microsoft Windows osoblivo pomitno vikoristovuvatimut podvijnu buferizaciyu Na sistemah na bazi Linux chi BSD vona nazivayetsya stribkovimi buferami oskilki dani povinni stribati kriz ci buferi dlya vvedennya ta vivedennya Inshi zastosuvannyaPodvijna buferizaciya takozh zastosovuyetsya yak tehnika spriyannya cherezryadkovosti chi deinterlejsingu videosignaliv Div takozh en Vertikalna sinhronizaciya Stereozobrazhennya RK stereookulyari ru HD3DPrimitkiVilson Derek 26 chervnya 2009 Triple Buffering Why We Love It Potrijna buferizaciya Chomu nam ce podobayetsya anglijskoyu AnandTech Arhiv originalu za 5 chervnya 2016 Procitovano 16 lipnya 2009 Segal Mark Akelej Kurt 11 serpnya 2008 The OpenGL Graphics System A Specification Version 3 0 PDF s 490 Arhiv PDF originalu za 8 veresnya 2008 Procitovano 6 chervnya 2016 Physical Address Extension PAE Memory and Windows Microsoft Windows Hardware Development Central 2005 Arhiv originalu za 6 kvitnya 2008 Procitovano 7 kvitnya 2008 PosilannyaDulitl Majk 24 travnya 2007 Triple buffering Improve your PC gaming performance for free Potrijna buferizaciya polipshit svoyu produktivnist u videoigrah bezkoshtovno anglijskoyu Arhiv originalu za 19 chervnya 2016 Procitovano 6 chervnya 2016 http www tweakguides com Graphics 10 html Arhivovano 18 serpnya 2016 u Wayback Machine