Bir nechta buferlash - Multiple buffering

To'plamlar 1, 2 va 3 navbati bilan bitta, ikki va uch marta buferlash ishini ifodalaydi vertikal sinxronizatsiya (vsync) yoqilgan. Har bir grafikada vaqt chapdan o'ngga qarab oqadi. Yozib oling 3 ko'rsatadi a almashtirish zanjiri uchta tampon bilan; uch marta tamponlashning asl ta'rifi D ramkasi tugashi bilanoq C ramkasini tashlab yuboradi va kechiktirmasdan 1-buferga E ramkasini chizishni boshlaydi. O'rnatish 4 ramka (B, bu holda) chizish odatdagidan ko'proq vaqt talab qilganda nima bo'lishini ko'rsatadi. Bunday holda, ramka yangilanishi o'tkazib yuboriladi. Videoni ijro etish kabi vaqtni sezgir bajarishda butun kadr o'chirib qo'yilishi mumkin. To'plamda uchta buferli almashtirish zanjiri bilan 5, B kadrni chizish A kadrni video xotiraga ko'chirilishini kutmasdan boshlanishi mumkin, bu esa kechiktirilgan kadrning vertikal orqaga qaytish imkoniyatini kamaytiradi.

Yilda Kompyuter fanlari, ko'p tamponlash bir nechtasidan foydalanish bufer ma'lumotlar blokini ushlab turish, shunday qilib "o'quvchi" ma'lumotlarning qisman yangilangan versiyasini emas, balki to'liq (ehtimol eski bo'lsa ham) versiyasini ko'radi. "yozuvchi". Bundan tashqari, foydalanish zarurligini oldini olish uchun ham foydalaniladi ikki portli operativ xotira (DPRAM) qachon o'quvchilar va yozuvchilar turli xil qurilmalar.

Tavsif

Bir nechta buferlash qanday ishlashini tushuntirishning oson usuli - bu hayotiy misolni olishdir. Bu juda yaxshi quyoshli kun va siz belkurak hovuzini chiqarishga qaror qildingiz, faqat siz o'zingizning bog 'shlangingizni topa olmaysiz. Hovuzni chelaklar bilan to'ldirishingiz kerak bo'ladi. Shunday qilib, siz mushtdan bitta chelakni (yoki buferni) to'ldirasiz, kranni o'chirasiz, basseynga borasiz, suvni to'kib tashlaysiz, mashqni takrorlash uchun kranga qaytib borasiz. Bu bitta buferga o'xshaydi. Bir chelak suvni "qayta" ishlov berayotganda kranni o'chirish kerak.

Endi sizda ikkita chelak bo'lsa, buni qanday amalga oshirishingizni o'ylab ko'ring. Siz birinchi chelakni to'ldirib, keyin ikkinchisini oqayotgan suv ostiga almashtirasiz. Keyin birinchi hovuzni bo'shatish uchun ikkinchi chelakni to'ldirish uchun qancha vaqt kerak bo'ladi. Qaytganingizda chelaklarni almashtirishingiz mumkin, shunda birinchisi yana to'ldiradi, shu vaqt ichida ikkinchisini hovuzga bo'shatish mumkin. Hovuz to'lguncha buni takrorlash mumkin. Ushbu usul hovuzni tezroq to'ldirishini ko'rish aniq, chunki kutish uchun hech qanday vaqt sarf qilinmaydi, chelaklar to'ldirilganda. Bu ikki tomonlama buferga o'xshaydi. Musluk har doim ham bo'lishi mumkin va ishlov berish tugaguncha kutish shart emas.

Agar siz birovni to'ldirayotganda va boshqasini bo'shatayotganda chelakni basseynga olib borish uchun boshqa odamni ish bilan ta'minlagan bo'lsangiz, bu uch barobar buferga o'xshaydi. Agar bu qadam etarlicha vaqt talab qilsa, siz undan ham ko'proq chelaklarni ishlatishingiz mumkin edi, shunda kran doimiy ravishda to'lg'azish paqirlari bilan ishlaydi.

Kompyuter fanida o'chirib bo'lmaydigan yoki o'chirilishi mumkin bo'lgan ishlaydigan kranga ega bo'lish holati odatiy holdir (masalan, audio oqim). Bundan tashqari, kompyuterlar odatda oqimlar bilan emas, balki ma'lumotlar qismlari bilan ishlashni afzal ko'rishadi. Bunday vaziyatlarda ko'pincha ikki tamponlama qo'llaniladi.

Ikki tamponlangan Petri to'ri

Ikki tamponli Petri Net

The Petri to'ri rasmda ikki tomonlama buferlash qanday ishlashini ko'rsatadi. W1 va W2 o'tish mos ravishda 1 va 2 buferga yozishni, R1 va R2 esa 1 va 2 buferdan o'qishni anglatadi, boshida faqat W1 o'tish yoqiladi. W1 yong'inlaridan keyin R1 va W2 ikkalasi ham yoqiladi va parallel ravishda davom etishi mumkin. Tugatgandan so'ng, R2 va W1 parallel ravishda davom etadi va hokazo.

Shunday qilib, W1-ning o'zi yoqadigan dastlabki vaqtdan so'ng, bu tizim davriy bo'lib, o'tishlar yoqiladi - har doim juft bo'lib (mos ravishda W2 bilan R1 va W1 bilan R2).

Kompyuter grafikasidagi ikki tomonlama buferlash

Yilda kompyuter grafikasi, ikki tamponlash - grafika chizish texnikasi, unda duduqlik yo'q (yoki kam) yirtib tashlash va boshqa asarlar.

Piksellar bir martadan ortiq o'zgarmasligi uchun dastur uchun displey chizish qiyin. Masalan, matn varag'ini yangilashda faqat eski harflarda ishlatiladigan, ammo yangilarida bo'lmagan piksellarni qandaydir tarzda o'chirib tashlashdan ko'ra, butun varaqni tozalash va so'ngra harflarni chizish osonroq. Biroq, bu oraliq rasm foydalanuvchi tomonidan quyidagicha ko'rinadi miltillovchi. Bunga qo'chimcha, kompyuter monitorlari ko'rinadigan video sahifani doimiy ravishda qayta tiklang (an'anaviy ravishda sekundiga 60 martadan), shuning uchun ham mukammal yangilanish bir lahzada "yangi" rasm va qayta chizilmagan "eski" rasm o'rtasida gorizontal ajratuvchi sifatida ko'rinishi mumkin, yirtib tashlash.

Dasturni ikki tomonlama buferlash

Ikki tamponli dasturiy ta'minotni amalga oshirish barcha chizish operatsiyalari natijalarini tizimning biron bir mintaqasida saqlaydi Ram; har qanday bunday mintaqa ko'pincha "orqa bufer" deb nomlanadi. Barcha chizish operatsiyalari tugallangan deb hisoblanganda, butun mintaqa (yoki faqat o'zgartirilgan qism) ko'chiriladi video RAM ("old bufer"); ushbu nusxa ko'chirish odatda monitor bilan sinxronlashtiriladi raster yirtib tashlamaslik uchun nur. Ikki tamponli dasturiy ta'minotni amalga oshirish, albatta, orqa tampon uchun ajratilgan tizim xotirasi, nusxalash jarayoni va sinxronizatsiyani kutish vaqti tufayli bitta buferga qaraganda ko'proq xotira va protsessor vaqtini talab qiladi.

Kompozitsiya oynasi menejerlari ko'pincha "nusxalash" operatsiyasini "kompozitsion "oynalarni joylashtirish, ularni masshtab yoki tebranish effektlari bilan o'zgartirish va qismlarni shaffof qilish uchun ishlatiladi. Shunday qilib," old bufer "faqat ekranda ko'rinadigan kompozitsion tasvirni o'z ichiga olishi mumkin, har bir oyna uchun har xil" orqa bufer "mavjud. butun oyna tarkibidagi kompozitsion bo'lmagan rasm.

Sahifani aylantirish

Sahifani almashtirish usulida ma'lumotlarni nusxalash o'rniga ikkala bufer ham ko'rsatilishi mumkin (ikkalasi ham mavjud) Video RAM ). Istalgan vaqtda bitta bufer monitor tomonidan faol ravishda namoyish etiladi, ikkinchisi esa fon buferi chiziladi. Fon buferi tugagach, ikkalasining roli almashtiriladi. Sahifani almashtirish odatda a ni o'zgartirish orqali amalga oshiriladi apparat registri ichida video displey tekshiruvi - video xotirasida ko'rsatiladigan ma'lumotlarning boshlanishiga ko'rsatgichning qiymati.

Sahifani aylantirish ma'lumotni nusxalashga qaraganda ancha tezroq va monitor paytida sahifalar o'girilib turganda, yirtilib ketmasligi kafolatlanishi mumkin. vertikal bo'shliq oralig'i - video ma'lumot olinmaydigan bo'sh davr. Hozirgi vaqtda faol va ko'rinadigan bufer deb ataladi old tampon, fon sahifasi esa orqa tampon.

Uch marta buferlash

Yilda kompyuter grafikasi, uch marta buferlash ikki tomonlama buferga o'xshaydi, lekin yaxshilangan ishlashni ta'minlay oladi. Ikki marta buferlashda dastur keyingi chizishni boshlashdan oldin tugallangan rasm ko'chirilguncha yoki almashtirilguncha kutishi kerak. Ushbu kutish davri bir necha bo'lishi mumkin millisekundlar bu vaqt ichida na buferga tegsa bo'ladi.

Uch marta tamponlashda dastur ikkita orqa tamponga ega va shu zahotiyoq bunday nusxalashga aloqador bo'lmagan rasmda chizishni boshlashi mumkin. Uchinchi bufer, oldingi bufer, tasvirni monitorda aks ettirish uchun grafik karta tomonidan o'qiladi. Rasm monitorga yuborilgandan so'ng, oldingi bufer eng so'nggi to'liq tasvirni ushlab turgan orqa tampon bilan siljiydi (yoki undan nusxa olinadi). Orqa tamponlardan biri har doim to'liq bo'lganligi sababli, grafik karta hech qachon dasturiy ta'minot tugashini kutmaydi. Binobarin, dasturiy ta'minot va grafik karta butunlay mustaqil bo'lib, o'z tezligida ishlashi mumkin. Nihoyat, ko'rsatilgan tasvir sinxronizatsiyani kutmasdan va shu bilan minimal kechikish bilan boshlandi.[1]

Dastur tufayli algoritm monitorni yangilaydigan voqealar uchun grafik apparatdan so'roq qilinmasa, algoritm doimiy ravishda qo'shimcha freymlarni tezkor ravishda uzatishi mumkin, chunki apparat ularni ko'rsatishi mumkin. Yangilash oralig'idan ancha tezroq bajarilgan kadrlar uchun nusxa olishdan oldin orqa buferlar ramkalarini bir necha bor yangi takrorlashlar bilan almashtirish mumkin. Bu shuni anglatadiki, ketma-ket kadrlar ustiga yozilishidan oldin hech qachon ishlatilmaydigan orqa buferga ramkalar yozilishi mumkin. Nvidia ushbu usulni "Tez sinxronizatsiya" nomi ostida amalga oshirdi.[2]

Ba'zan uch marta buferlash deb ataladigan alternativ usul bu almashtirish zanjiri uch tampon uzun. Dastur ikkala orqa tamponni ham chizib bo'lgandan so'ng, yana bir orqa tamponni chizishdan oldin, ikkinchisi ekranda joylashguncha kutadi (ya'ni 3 uzunlik) birinchi ichida, birinchi tashqarida navbat). Ko'pgina Windows o'yinlari uch marta buferlashni yoqishda ushbu usulga murojaat qilgan ko'rinadi.[iqtibos kerak ]

To'rt tamponlash

Atama to'rtta buferlash chapdagi va o'ngdagi tasvirlarning har biri uchun er-xotin tampondan foydalanishni anglatadi stereoskopik dasturlar, shuning uchun jami to'rt tampon (agar uch tampon ishlatilgan bo'lsa, u holda bo'ladi) olti tamponlar). Buferni almashtirish yoki nusxalash buyrug'i odatda ikkala juftga birdaniga tegishlidir, shuning uchun hech qachon bir ko'z boshqa ko'zga qaraganda eski tasvirni ko'rmaydi.

To'rt tamponlash ko'pgina iste'mol kartalari uchun o'chirib qo'yilgan grafik kartalar drayverlarida alohida yordamni talab qiladi. AMD-ning Radeon HD 6000 seriyali va undan yangi versiyasi uni qo'llab-quvvatlaydi [1].

Kabi 3D standartlari OpenGL[3] va Direct3D to'rtta buferlashni qo'llab-quvvatlash.

DMA uchun ikki tomonlama buferlash

Atama ikki tamponlash uchun ikki tampon o'rtasida ma'lumotlarni nusxalash uchun foydalaniladi xotiraga bevosita kirish (DMA) o'tkazmalari, emas ishlashni oshirish uchun, lekin qurilmaning o'ziga xos manzil talablarini qondirish uchun (masalan, 32-bitli qurilmalarda kengroq manzilga ega tizimlardagi tizimlar Jismoniy manzilni kengaytirish ).[4] DOS va Windows qurilma drayverlari "ikki tamponlash" atamasi ishlatilishi mumkin bo'lgan joy. Linux va BSD manba kodlari bu "qaytish buferlari" deb nomlanadi.[5]

Ba'zi dasturchilar bu kabi ikki tomonlama buferlashdan qochishga harakat qilishadi nol nusxa texnikasi.

Boshqa maqsadlar

Ikki tamponlash, shuningdek, engillashtirish uchun texnik vosita sifatida ishlatiladi interlacing yoki deinterlacing video signallari.

Shuningdek qarang

Adabiyotlar

  1. ^ "Uch tamponlash: nega biz uni yaxshi ko'ramiz". AnandTech. 2009 yil 26 iyun. Olingan 2009-07-16.
  2. ^ Smit, Rayan. "NVIDIA GeForce GTX 1080 & GTX 1070 Founders Editions Review: FinFET Generation-ni boshlash". Olingan 2017-08-01.
  3. ^ OpenGL 3.0 spetsifikatsiyasi, 4-bob
  4. ^ "Jismoniy manzil kengaytmasi - PAE xotirasi va Windows". Microsoft Windows Hardware Development Central. 2005 yil. Olingan 2008-04-07.
  5. ^ Gorman, Mel. "Linux virtual xotira menejerini tushunish, 10.4 zıplama buferlari".

Tashqi havolalar