Kehyspuskuri - Framebuffer

Image
Sun TGX -kehyspuskuri

Framebuffer ( kehysten puskuriin , tai joskus Framestore ) on osa hakumuisti (RAM), joka sisältää bittikartan , joka ajaa videonäytön. Se on muisti puskuri sisältää dataa, joka edustaa kaikkia pikseleitä täydelliseen videokuvan . Nykyaikaisten näytönohjainten ytimissä on kehyspuskuripiiri. Tämä piiri muuntaa muistissa olevan bittikartan videosignaaliksi, joka voidaan näyttää tietokoneen näytöllä.

In computing , joka on näytön puskuri on osa tietokoneen muistiin käytetään tietokoneen sovellus edustusta sisällön näytetään tietokoneen näytössä . Näyttöpuskuria voidaan kutsua myös videopuskuriksi , regenerointipuskuriksi tai lyhyesti regen -puskuriksi . Näytön puskurit on erotettava videomuistista . Tätä tarkoitusta varten käytetään myös termiä off-screen puskuri .

Puskurin tiedot koostuvat tyypillisesti jokaisen näytössä näkyvän pikselin väri -arvoista . Väriarvot tallennetaan tavallisesti 1-bittiseen binääriseen (yksivärinen), 4-bittiseen paletti-asetukseen , 8-bittiseen paletti-asetukseen, 16-bittiseen korkean värin ja 24-bittiseen todelliseen värimuotoon . Joskus käytetään ylimääräistä alfa -kanavaa pikselien läpinäkyvyyttä koskevien tietojen säilyttämiseen. Kehyspuskurin vaatima muistin kokonaismäärä riippuu lähtösignaalin resoluutiosta ja värisyvyydestä tai paletin koosta.

Historia

Image
Muistikuvio SWAC Williams -putken CRT: ssä vuonna 1951

Tietokonetutkijat olivat pitkään keskustelleet kehyksen puskurin teoreettisista eduista, mutta eivät kyenneet tuottamaan konetta, jolla olisi riittävästi muistia taloudellisesti toteuttamiskelpoisella hinnalla. Vuonna 1947 Manchester Baby -tietokone käytti Williams-putkea , myöhemmin Williams-Kilburn-putkea, tallentamaan 1024 bittiä katodisädeputken (CRT) muistiin ja näytettiin toisessa CRT: ssä. Muut tutkimuslaboratoriot tutkivat näitä tekniikoita MIT Lincoln Laboratoryn kanssa, joka saavutti 4096 -näytön vuonna 1950.

1960 -luvun lopulla otettiin käyttöön väriskannattu näyttö , nimeltään Brookhaven RAster Display (BRAD), joka käytti rumpumuistia ja televisiomonitoria. Vuonna 1969 A. Michael Noll Bell Labsista toteutti skannatun näytön, jossa oli kehyspuskuri, käyttäen magneettisydänmuistia . Myöhemmin Bell Labs -järjestelmää laajennettiin näyttämään kuva, jonka värisyvyys oli kolme bittiä tavallisella väritelevisiomonitorilla.

1970-luvun alussa MOS-muistin ( metallioksidi-puolijohdemuisti ) integroitujen piirisirujen , erityisesti suuritiheyksisten vähintään 1 kb: n DRAM - sirujen (dynaaminen hajasaantimuisti ) kehittäminen teki käytännölliseksi luoda ensimmäistä kertaa digitaalinen muistijärjestelmä , jossa on kehyksenpuskurit, jotka pystyvät pitämään tavallisen videokuvan. Tämä johti kehittämiseen SuperPaint järjestelmän Richard Shoup klo Xeroxin PARC vuonna 1972. Shoup pystyi käyttämään SuperPaint ruutupuskurointia luoda varhaisessa digitaalinen video-talteenottojärjestelmä. Synkronoimalla lähtösignaalin tulosignaaliin Shoup pystyi korvaamaan jokaisen datan pikselin sen siirtyessä sisään. Shoup kokeili myös lähtösignaalin muuttamista väritaulukoiden avulla. Näiden väritaulukoiden ansiosta SuperPaint-järjestelmä pystyi tuottamaan laajan valikoiman värejä sen rajoitetun 8-bittisen datan alueen ulkopuolella. Tämä malli tulee myöhemmin yleiseksi tietokoneen kehyspuskureissa.  

Vuonna 1974 Evans & Sutherland julkaisi ensimmäisen kaupallisen kehyksenpuskurin, Picture Systemin, joka maksoi noin 15 000 dollaria. Se pystyi tuottamaan jopa 512 x 512 pikselin resoluutioita 8-bittisissä harmaasävyissä , ja siitä tuli siunaus grafiikkatutkijoille, joilla ei ollut resursseja rakentaa omaa kehyspuskuriaan. New York Institute of Technology myöhemmin luoda ensimmäinen 24-bittinen väri, jossa käytetään kolmea Evans & Sutherland framebuffereilla. Jokainen kehyspuskuri liitettiin RGB -värilähtöön (yksi punaiselle, yksi vihreälle ja yksi siniselle), ja Digital Equipment Corporation PDP 11/04 -pienoistietokone hallitsi kolmea laitetta yhtenä.

Vuonna 1975 brittiläinen yhtiö Quantel valmisti ensimmäisen kaupallisen täyden värilähetys ruutupuskuroitu The Quantel DFS 3000. Sitä käytettiin ensimmäisen TV kattavuus 1976 Montrealin olympialaisissa luoda kuva-kuvassa- insertissä Olympic tulisoihduksi taas loppuosassa juoksija tuli stadionille.

Integroidun piiritekniikan nopea paraneminen mahdollisti sen, että monet 1970-luvun lopun kotitietokoneet sisälsivät matalan värisyvyyden kehyspuskureita. Nykyään lähes kaikki tietokoneet, joilla on graafisia ominaisuuksia, käyttävät kehyksenpuskuria videosignaalin tuottamiseen. Amiga- tietokoneissa, jotka on luotu 1980-luvulla, kiinnitettiin erityistä huomiota grafiikan suorituskykyyn ja niissä oli ainutlaatuinen Hold-And-Modify -kehyspuskuri, joka pystyy näyttämään 4096 väriä.

Framebuffereista tuli suosittuja myös huippuluokan työasemissa ja arcade-emolevyissä koko 1980-luvun. SGI , Sun Microsystems , HP , DEC ja IBM julkaisivat kaikki kehyspuskurit työasematietokoneilleen tänä aikana. Nämä kehyspuskurit olivat yleensä paljon laadukkaampia kuin useimmissa kotitietokoneissa, ja niitä käytettiin säännöllisesti televisiossa, tulostuksessa, tietokonemallinnuksessa ja 3D -grafiikassa. Sega käytti myös kehyspuskureita huippuluokan arcade-kortteihinsa , jotka olivat myös laadukkaampia kuin kotitietokoneissa.

Näyttötilat

Image
Sun cgsix -kehyspuskuri

Henkilö- ja kotitietokoneissa käytettävillä kehyspuskureilla oli usein joukko määriteltyjä tiloja , joissa kehyspuskuri voi toimia. Nämä tilat määrittävät laitteiston uudelleen tulostamaan eri resoluutioita, värisyvyyksiä, muistiasetteluja ja virkistystaajuuden ajoituksia.

Unix -koneiden ja käyttöjärjestelmien maailmassa tällaisia ​​mukavuuksia vältettiin yleensä laitteistoasetusten suoran manipuloinnin puolesta. Tämä käsittely oli paljon joustavampaa siinä mielessä, että mikä tahansa resoluutio, värisyvyys ja virkistystaajuus olivat saavutettavissa - vain kehyspuskurin käytettävissä olevan muistin rajoittamana.

Tämän menetelmän valitettava sivuvaikutus oli se, että näyttölaitetta voitiin ajaa yli kykyjensä. Joissakin tapauksissa tämä on johtanut näytön laitteistovaurioihin. Yleisemmin se tuotti yksinkertaisesti sekavaa ja käyttökelvotonta tuotosta. Nykyaikaiset CRT -näytöt korjaavat tämän ongelman ottamalla käyttöön suojapiirit. Kun näyttötapaa muutetaan, näyttö yrittää saada signaalin lukituksen uudelle virkistystaajuudelle. Jos näyttö ei pysty saamaan signaalilukitusta tai jos signaali on sen rakennerajojen ulkopuolella, näyttö jättää kehyspuskurin signaalin huomiotta ja saattaa näyttää käyttäjälle virheilmoituksen.

Nestekidenäytöt sisältävät yleensä samanlaisia ​​suojapiirejä, mutta eri syistä. Koska nestekidenäytön on näytettävä digitaalisesti näyttösignaali (emuloiden siten elektronisädettä), kantaman ulkopuolella olevaa signaalia ei voida fyysisesti näyttää näytöllä.

Väripaletti

Framebuffers on perinteisesti tukenut monenlaisia ​​väritiloja. Muistin kustannusten vuoksi useimmat varhaiset kehyspuskurit käyttivät 1-bittistä (2-väriä pikseliä), 2-bittistä (4-väriä), 4-bittistä (16-väriä) tai 8-bittistä (256 väriä) värisyvyyttä . Ongelma tällaisissa pienissä värisyvyyksissä on se, että kaikkia värejä ei voida tuottaa. Ratkaisu tähän ongelmaan oli indeksoitu väri, joka lisää hakutaulukon kehyspuskuriin. Jokainen kehyspuskurimuistiin tallennettu väri toimii väri -indeksinä. Hakutaulukko toimii palettina, jossa on rajoitettu määrä eri värejä, kun taas loput käytetään indeksitaulukkona.

Tässä on tyypillinen indeksoitu 256 värin kuva ja oma paletti (näytetään värimallien suorakulmiona):

Mukautuva 8 -bittinen paletinäyte image.png   Mukautuva 8 -bittinen paletti.png

Joissakin malleissa oli myös mahdollista kirjoittaa tietoja LUT: lle (tai vaihtaa olemassa olevien palettien välillä) ajon aikana, jolloin kuva jaettiin vaakasuoriin palkkeihin omalla paletillaan ja näin saatiin aikaan kuva, jolla oli paljon laajempi paletti. Esimerkiksi ulkona kuvatun kuvan katsominen kuva voitaisiin jakaa neljään palkkiin, joista ylempi korostuu taivaan sävyillä, seuraava lehtien sävyillä, seuraava ihon ja vaatteiden sävyillä ja pohja pohjavärillä. Tämä edellytti, että jokaisessa paletissa oli päällekkäisiä värejä, mutta huolellisesti tehty, mahdollisti suuren joustavuuden.

Muistin käyttö

Vaikka kehyksenpuskureihin päästään yleensä käsiksi muistin kartoituksen kautta suoraan suorittimen muistitilaan, tämä ei ole ainoa tapa, jolla niitä voidaan käyttää. Kehyspuskurit ovat vaihdelleet laajasti muistin käyttämisessä. Jotkut yleisimmistä ovat:

  • Koko kehyksen puskurin yhdistäminen tiettyyn muistialueeseen.
  • Portti -komennot kunkin pikselin, pikselialueen tai paletin määrittämiseksi.
  • Kartoitetaan kehyspuskurimuistia pienempi muistialue ja sitten vaihdetaan tarvittaessa.

Kehyspuskuriorganisaatio voi olla pakattu pikseliksi tai tasomaiseksi . Kehyspuskuri voi olla osoitettavissa kaikkiin pisteisiin tai sillä voi olla rajoituksia sen päivittämiselle.

RAM näytönohjaimessa

Näytönohjaimissa on aina tietty määrä RAM -muistia. Tässä RAM -muistissa kuvatiedoston bittikartta "puskuroidaan" näytettäväksi. Termiä kehyspuskuri käytetään siis usein keskenään, kun viitataan tähän RAM -muistiin.

Suoritin lähettää kuvapäivityksiä näytönohjaimelle. Kortin videoprosessori muodostaa kuvan näyttökuvasta ja tallentaa sen kehyspuskuriin suurena bittikarttana RAM -muistissa. Kortti käyttää RAM -muistin bittikarttaa näytön kuvan päivittämiseen jatkuvasti.

Virtuaaliset kehyksenpuskurit

Monet järjestelmät yrittävät jäljitellä kehyksen puskurilaitteen toimintaa, usein yhteensopivuussyistä. Kaksi yleisintä virtuaalista kehyksenpuskuria ovat Linux -kehyksenpuskurilaite ( fbdev ) ja X Virtual Framebuffer ( Xvfb ). Xvfb lisättiin X Window System -jakeluun tarjoamaan menetelmä X: n suorittamiseksi ilman graafista kehyksen puskuria . Linux -kehyspuskurilaite kehitettiin abstraktiksi fyysisestä menetelmästä taustalla olevan kehyksen puskurin käyttämiseksi taattuun muistikarttaan, joka on ohjelmien helppo käyttää. Tämä lisää siirrettävyyttä, koska ohjelmien ei tarvitse käsitellä järjestelmiä, joissa on erilliset muistikartat tai jotka vaativat pankin vaihtamista .

Sivun kääntö

Kehyspuskurissa voi olla riittävästi muistia kahden kehyksen arvoisen videodatan tallentamiseen. Tekniikassa, joka tunnetaan yleensä kaksoispuskurointina tai tarkemmin sivun kääntämisenä , kehyspuskuri käyttää puolet muististaan ​​näyttääkseen nykyisen kehyksen. Muistin ollessa esillä, toinen puoli muistista on täynnä seuraavan kehyksen tietoja. Kun toissijainen puskuri on täytetty, kehyspuskuria kehotetaan näyttämään toissijainen puskuri. Ensisijaisesta puskurista tulee toissijainen puskuri ja toissijaisesta puskurista tulee ensisijainen. Tämä kytkin tehdään usein pystysuoran sammutusvälin jälkeen, jotta vältetään näytön repeytyminen, jossa puolet vanhasta ja puolet uudesta kehyksestä on esitetty yhdessä.

Sivu käännetään on tullut standardi tekniikka, jota PC -peli ohjelmoijia .

Grafiikan kiihdyttimet

Kun paremman grafiikan kysyntä kasvoi, laitteiston valmistajat loivat tavan vähentää kehyksen puskurin täyttämiseen tarvittavaa suorittimen aikaa. Tätä kutsutaan yleisesti grafiikan kiihdytykseksi . Yleiset piirustuskomennot (joista monet ovat geometrisia) lähetetään grafiikkakiihdyttimelle niiden raakamuodossa. Kiihdytin rasteroi sitten komennon tulokset kehyksen puskuriin. Tämä menetelmä vapauttaa suorittimen tekemään muita töitä.

Varhaiset kiihdyttimet keskittyivät 2D -käyttöliittymien suorituskyvyn parantamiseen. Nämä 2D -ominaisuudet säilyvät, mutta useimmat nykyaikaiset kiihdyttimet keskittyvät tuottamaan 3D -kuvia reaaliajassa. Yleinen malli käyttää grafiikkakirjastoa , kuten OpenGL tai Direct3D, joka on liitetty näytönohjaimen kanssa, jotta vastaanotetut komennot voidaan muuntaa kiihdyttimen grafiikkaprosessorin (GPU) ohjeiksi . GPU käyttää näitä ohjeita rasteroitujen tulosten laskemiseen, ja tulokset bititään kehyksen puskuriin. Kehyspuskurin signaali tuotetaan sitten yhdessä sisäänrakennettujen videopäällystelaitteiden kanssa (joita käytetään yleensä hiiren kohdistimen tuottamiseen muuttamatta kehyspuskurin tietoja) ja mahdolliset lopulliset erikoistehosteet, jotka tuotetaan muokkaamalla lähtösignaalia. Esimerkki tällaisista lopullisista erikoistehosteista oli 3dfx Voodoo -korttien käyttämä spatiaalinen anti-aliasing- tekniikka . Nämä kortit lisäävät epäterävyyttä lähtösignaaliin, mikä tekee rasteroidun grafiikan aliasoinnin paljon vähemmän ilmeiseksi.

Kerran oli monia grafiikan kiihdyttimien valmistajia, mukaan lukien: 3dfx Interactive ; ATI ; Hercules ; Trident ; Nvidia ; Säde ; S3 Grafiikka ; SiS ja Silicon Graphics . Vuodesta 2015 lähtien x86-pohjaisten järjestelmien grafiikkakiihdyttimien markkinoita hallitsevat Nvidia (hankittu 3dfx vuonna 2002), AMD (joka hankki ATI: n vuonna 2006) ja Intel (joka tuottaa tällä hetkellä vain integroituja grafiikkasuorittimia erillisten näytönohjainten sijaan).

Vertailut

Kehyspuskurilla elektronisuihkua (jos näyttötekniikka käyttää sellaista) komennetaan suorittamaan rasteriskannaus , tapa, jolla televisio lähettää lähetyssignaalin. Väritiedot kustakin näytöllä näkyvästä kohdasta vedetään suoraan kehyksen puskurista skannauksen aikana, jolloin luodaan joukko erillisiä kuvaelementtejä eli pikseleitä.

Kehyspuskurit eroavat merkittävästi vektorinäytöistä, jotka olivat yleisiä ennen rasterigrafiikan tuloa (ja näin ollen kehyspuskurin käsitteeseen). Vektorinäytössä vain grafiikan primitiivien kärkipisteet tallennetaan. Lähtönäytön elektronisuihku käsketään sitten siirtymään pisteestä pisteeseen ja jäljittämään viiva näiden pisteiden välisen alueen yli.

Samoin kehyspuskurit eroavat tekniikasta, jota käytettiin varhaisessa tekstitilassa , jossa puskuri sisältää merkkien koodeja, ei yksittäisiä pikseleitä. Videonäyttölaite suorittaa saman rasteriskannauksen kuin kehyspuskurilla, mutta luo puskurin jokaisen merkin pikselit, kun se ohjaa sädettä.

Katso myös

Viitteet

Ulkoiset linkit