Кіріспе

Видео дисплейін басқаратын бит картасын қамтитын кездейсоқ қатынас жадының бөлігі – фрейм буфері (фрейм буфері, кейде фрейм-қойма) – бейне дисплейін басқаратын бит картасын қамтитын кездейсоқ қатынас жадының (RAM) бөлігі. Бұл толық видео кадрдағы барлық пиксельдерді бейнелейтін деректерді қамтитын жад буфері. Қазіргі заманғы бейнекарталар өздерінің негізгі бөліктерінде фреймбуферлік схемаларды қамтиды. Бұл схема жадтағы бит картасын компьютер мониторында көрсетілетін бейне сигналына айналдырады. Экран буфері – компьютерлік бағдарламаның компьютерлік дисплейде көрсетілетін мазмұнды бейнелеу үшін пайдаланатын компьютерлік жадының бөлігі. Экран буферін бейне буфері, регенерациялық буфер немесе қысқаша regen буфер деп те атайды. Экран буферлері бейне жадынан ерекшеленуі керек. Осы мақсатта экраннан тыс буфер термині де қолданылады. Буфердегі ақпарат әдетте дисплейде көрсетілетін әрбір пикселдің түс мәндерінен тұрады. Түс мәндері әдетте 1 биттік екілік (монохромды), 4 биттік палитраланған, 8 биттік палитраланған, 16 биттік жоғары түсті және 24 биттік нақты түс форматтарында сақталады. Кейде пикселдің мөлдірлігі туралы ақпаратты сақтау үшін қосымша альфа арнасы қолданылады. Фреймбуфер үшін қажетті жадтың жалпы көлемі шығыс сигналының ажыратымдылығына және түс тереңдігіне немесе палитраның мөлшеріне байланысты.

Тарих

Компьютер зерттеушілері фреймбуфердің теориялық артықшылықтарын ұзақ талқылады, бірақ экономикалық тұрғыдан тиімді бағамен жеткілікті жадысы бар машина жасауға қол жеткізе алмады. 1947 жылы «Манчестер Бейбі» компьютері 1024 бит ақпаратты катодты сәулелі түтікте (CRT) сақтап, оны екінші CRT-да көрсету үшін Уильямс түтігін, кейін Уильямс-Килберн түтігін пайдаланды. Басқа зертханалар да осы технологияны зерттеді, 1950 жылы MIT Линкольн зертханасы 4096 пикселдік дисплейге қол жеткізді. 1969 жылы Bell Labs-тің А. Майкл Нолл магниттік ядролық жадыны қолдана отырып, фреймбуфері бар сканерленген дисплейді жасады. Кейіннен Bell Labs жүйесі стандартты түсті теледидар мониторында үш биттік түс тереңдігімен суретті көрсетуге мүмкіндік берді. 1970-ші жылдардың басында MOS жадының (металл-оксид-жартылайөткізгіш жады) интегралды схемалық микросхемалары, әсіресе 1 кб жадысы бар жоғары тығыздықты DRAM (динамикалық кездейсоқ қолжетімділік жады) микросхемаларының дамуы, стандартты бейнесуретті сақтауға қабілетті фреймбуфері бар алғашқы цифрлық жады жүйесін жасауға мүмкіндік берді. Бұл 1972 жылы Xerox PARC-те Ричард Шоуптың SuperPaint жүйесін әзірлеуіне әкелді. Шоуп SuperPaint фреймбуферін пайдаланып, алғашқы цифрлық бейне түсіру жүйесін құрастыра алды. Шығу сигналын кіріс сигналымен синхрондау арқылы Шоуп әрбір пикселдің деректерін ауысқан сайын жаңа деректермен жаза алды. Шоуп сонымен қатар түс кестелерін қолдана отырып, шығу сигналын өзгертумен тәжірибе жүргізді. Бұл түс кестелері SuperPaint жүйесіне 8 биттік деректің шектеулі диапазонынан тыс түрлі түстерді шығаруға мүмкіндік берді. Бұл әдіс кейіннен компьютерлік фреймбуферлерде кеңінен қолданыла бастады. 1974 жылы Evans & Sutherland компаниясы алғашқы коммерциялық фреймбуферді – Picture System-ді шығарды, оның құны шамамен 15 000 долларға бағаланды. Ол 8 биттік сұрғыл түс палитрасында 512x512 пикселге дейінгі ажыратымдылықты (resolution) қамтамасыз етті және өздерінің фреймбуферін құруға ресурстары жетпеген графикалық зерттеушілер үшін пайдалы болды. Нью-Йорк технология институты кейіннен Эванс пен Сазерленд фреймбуферлерін пайдалана отырып, алғашқы 24 биттік түс жүйесін жасады. Әрбір фреймбуфер RGB түс шығысына (біреуі қызыл, біреуі жасыл және біреуі көк) қосылды, ал Digital Equipment Corporation PDP 11/04 мини-компьютері үш құрылғыны біріктіріп басқарды. 1975 жылы Ұлыбританияның Quantel компаниясы алғашқы коммерциялық толық түсті эфирлік фреймбуферді – Quantel DFS 3000-ді шығарды. Ол алғаш рет 1976 жылғы Монреаль Олимпиадасының теледидарлық көрсетілімінде Олимпиаданың жалынының кіріспе суретін жасау үшін қолданылды, ал қалған бөлігінде стадионға кіретін жүгірушінің суреті көрсетілді. Интегралды схема технологиясының үдемелі дамуы 1970-ші жылдардың соңында көптеген үй компьютерлерінде төмен түс тереңдігі бар фреймбуферлерді пайдалануға мүмкіндік берді. Бүгінде графикалық мүмкіндіктері бар дерлік барлық компьютерлер бейнесигналды жасау үшін фреймбуферді қолданады. 1980-ші жылдары жасалған Amiga компьютерлері графикалық өнімділікке ерекше назар бөлді және 4096 түсті көрсетуге қабілетті бірегей Hold And Modify фреймбуферін қамтыды. Фреймбуферлер 1980-ші жылдары жоғары деңгейдегі жұмыс станцияларында және аркадалық ойын автоматтарында да танымал болды. SGI, Sun Microsystems, HP, DEC және IBM осы кезеңде өздерінің жұмыс станциялары үшін фреймбуферлерді шығарды. Бұл фреймбуферлер әдетте үйдегі компьютерлерде кездесетін сападан әлдеқайда жоғары болды және теледидар, баспа, компьютерлік модельдеу және 3D графика салаларында жиі қолданылды. Sega компаниясы да өздерінің жоғары деңгейдегі аркадалық ойын автоматтарында фреймбуферлерді пайдаланды, олардың сапасы үй компьютерлеріне қарағанда жоғары болды.

Көрсету режімдері

Жеке және үй компьютерлерінде қолданылатын фреймбуферлер көбінесе фреймбуфердің жұмыс істейтін белгілі режимдер жиынтығына ие болды. Бұл режимдер аппараттық құралды әртүрлі ажыратымдылықтарды, түс тереңдіктерін, жад құрылымын және жаңару жылдамдығын шығару үшін қайта конфигурациялайды. Unix машиналары мен операциялық жүйелер әлемінде мұндай ыңғайлылықтар көбінесе аппараттық параметрлерді тікелей басқаруға басымдық берді. Бұл манипуляция әлдеқайда икемді болды, себебі кез келген ажыратымдылық, түс тереңдігі және жаңару жылдамдығы фреймбуферге қол жетімді жадпен ғана шектелді. Бұл әдістің өкінішті жағымсыз салдары дисплей құрылғысын оның мүмкіндіктерінен асырып жұмыс ітетуі болды. Кейбір жағдайларда бұл дисплейге аппараттық зақым келтірді. Көбінесе, ол жай ғана бұрмаланған және қолдануға жарамсыз нәтиже берді. Қазіргі заманғы CRT мониторлары бұл мәселені қорғау тізбектерін енгізу арқылы шешеді. Дисплей режимі өзгерген кезде монитор жаңа жаңару жиілігінде сигналды тұрақтандыруға тырысады. Егер монитор сигналды тұрақтандыра алмаса немесе егер сигнал оның жобалау шектеулерінен тыс болса, монитор фреймбуфер сигналын елемейді және мүмкін пайдаланушыға қате туралы хабарлама береді. LCD мониторлары да ұқсас қорғау тізбектерін қамтиды, бірақ себептері әртүрлі. LCD дисплейі дисплей сигналын цифрлық түрде үлгілеуі керек болғандықтан (электронды сәулеге ұқсату арқылы), ауқымынан тыс кез келген сигнал мониторда физикалық түрде көрсетілмейді.

Жадына қатынау

Фреймбуферлерге көбінесе жад картасы арқылы тікелей CPU жад кеңістігіне қол жеткізіледі, бірақ бұл оларға қол жеткізудің жалғыз жолы емес. Фреймбуферлер жадқа қол жеткізу әдістері бойынша әртүрлі болған. Ең көп қолданылатындары:
Түгелдей фреймбуферді белгілі бір жад диапазонымен сәйкестендіру. Әрбір пикселді, пикселдер тізбегін немесе палитра элементін орнату үшін порт командаларын пайдалану. Фреймбуфер жадынан кіші жад диапазонын карталау, содан кейін қажет болған жағдайда жад блоктарын ауыстыру. Фреймбуфер ұйымдастырылуы жинақы пикселдер түрінде немесе жазықтық түрінде болуы мүмкін. Фреймбуфердің барлық нүктелеріне дер кезінде қол жеткізілуі мүмкін немесе оны жаңарту тәсіліне шектеулер қойылуы мүмкін.

Видеокартадағы RAM

Видеокарталарда әрқашан белгілі бір көлемде RAM болады. Осы RAM-ның шағын бөлігі бейне деректерінің растрлік кескінін көрсету үшін "буферде" сақталады. Сондықтан, осы RAM туралы айтылғанда "фрейм буфері" термині көбінесе мағынасы бірдей қолданылады. Орталық процессор (CPU) бейнекартаға кескінді жаңарту туралы мәліметтер жібереді. Картадағы бейнепроцессор экрандағы кескінді құрастырып, оны RAM-дағы фрейм буферінде үлкен растрлік кескіні ретінде сақтайды. Карта экранды үнемі жаңарту үшін RAM-дағы растрлік кескінді пайдаланады.

Виртуалды фреймбуферлер

Көптеген жүйелер үйлесімділік мақсатында фреймбуфер құрылғысының жұмысын имитациялауға тырысады. Ең көп таралған екі виртуалды фреймбуфер – Linux фреймбуфер құрылғысы (fbdev) және X виртуалды фреймбуфері (Xvfb). Xvfb графикалық фреймбуферсіз X терезелік жүйесін іске қосу мүмкіндігін беру үшін X терезелік жүйесіне қосылды. Linux фреймбуфері бағдарламаларға оңай қол жеткізуге болатын, кепілді жад картасына негізгі фреймбуферге қол жеткізудің физикалық тәсілін абстракциялау үшін әзірленді. Бұл портативтілікті арттырады, себебі бағдарламалар бөлек жад карталарымен немесе жад банктерін ауыстыруды қажет ететін жүйелермен жұмыс істеуге міндетті емес.

Беттерді бұру

Фрейм буфері екі кадр көлеміндегі бейне деректерін сақтауға жеткілікті жадпен жасалуы мүмкін. Қос буферлеу деп жалпылама аталатын, немесе нақтырақ айтқанда, бет ауыстыру (page flipping) деп аталатын техникада, фрейм буфер жадының жартысын ағымдағы кадрды көрсету үшін пайдаланады. Ол жад көрсетіліп жатқанда, жадтың екінші жартысы келесі кадрға арналған деректермен толтырылады. Екінші буфер толтырылғаннан кейін, фрейм буферге оны көрсетуге бұйырық беріледі. Бастапқы буфер екінші буферге, ал екінші буфер бастапқы буферге айналады. Бұл ауысу көбінесе экранның жарылуын (screen tearing) болдырмау үшін, ескі кадрдың жартысы мен жаңа кадрдың жартысы бірдей көрсетілген кезде, тік сызықтар аралығынан кейін жасалады. Бет ауыстыру компьютер ойындары бағдарламалаушылары үшін стандартты әдіс болып табылады.

Графикалық үдетушілер

Жақсы графикаға деген сұраныс артуымен аппараттық өндірушілер фреймбуферді толтыру үшін қажетті CPU уақытын азайтудың жолын тапты. Бұл әдетте графикалық үдету деп аталады. Көптеген графикалық сурет командалары (олардың көпшілігі геометриялық) графикалық үдеткішке өз бастапқы түрінде жіберіледі. Үдеткіш содан кейін команданың нәтижелерін фреймбуферге растрлейді. Бұл әдіс CPU-ны басқа жұмыстарды орындауға босатады. Алғашқы үдеткіштер 2D GUI жүйелерінің өнімділігін жақсартуға бағытталған. Осы 2D мүмкіндіктерін сақтап қалғанда, қазіргі заманғы үдеткіштердің көпшілігі 3D бейнелерді нақты уақытта шығаруға бағытталған. Көптеген жүйелер OpenGL немесе Direct3D сияқты графикалық кітапханаларды пайдаланады, олар графикалық драйвермен интерфейс арқылы алынған командаларды үдеткіштің графикалық өңдеу блогына (GPU) нұсқауларға аударады. GPU осы нұсқауларды растрленген нәтижелерді есептеу үшін пайдаланады және нәтижелер фреймбуферге біт-белгіленеді. Фреймбуфердің сигналы содан кейін кіріктірілген видео-оверлей құрылғыларымен (әдетте фреймбуфер деректерін өзгертпей тышқан курсорын шығару үшін қолданылады) және шығыс сигналын өзгерту арқылы жасалатын кез келген соңғы арнайы эффекттермен біріктіріледі. Мұндай соңғы арнайы эффекттердің мысалы – 3dfx Voodoo карталарында қолданылған кеңістіктік антиалиазинг техникасы. Бұл карталар шығыс сигналына сәл бұрмалау қосып, растрленген графиканың қабаттасуын азайтады. Бір кезде графикалық үдеткіштердің көптеген өндірушілері болды, олардың ішінде: 3dfx Interactive; ATI; Hercules; Trident; Nvidia; Radius; S3 Graphics; SiS және Silicon Graphics. 2015 жылдан бастап x86 негізделген жүйелерге арналған графикалық үдеткіштер нарығында Nvidia (2002 жылы 3dfx компаниясын сатып алды), AMD (2006 жылы ATI компаниясын сатып алды) және Intel үстемдік етеді.

Салыстырулар

Фреймбуфер арқылы электронды сәуле (егер дисплей технологиясы оны қолданса) теледидардың хабар тарату сигналын көрсету тәрізді растрлық сканерлеуді орындауға бұйрық беріледі. Экранда көрсетілген әрбір нүктеге қатысты түс ақпараты сканерлеу кезінде фреймбуферден тікелей алынады, осылайша дискретті сурет элементтері, яғни пиксельдер жиынтығы құрылады. Фреймбуферлер растрлық графиканың пайда болуына дейін (демек, фреймбуфер тұжырымына дейін) кең таралған векторлық дисплейлерден едәуір өзгеше. Векторлық дисплейде графикалық примитивтердің тек қана төбелері сақталады. Шығару дисплейінің электронды сәулесі содан кейін төбеден төбеге қозғалып, осы нүктелер арасындағы аумақта сызықтар салады. Сондай-ақ, фреймбуферлер ерте мәтіндік режимдегі дисплейлерде қолданылған технологиядан да ерекшеленеді, онда буфер жеке пиксельдер емес, әріптердің кодтарын сақтайды. Видео дисплейі фреймбуфердегідей растрлық сканерлеуді орындайды, бірақ сәулені бағыттағанда буфердегі әрбір әріптің пиксельдерін жасайды.