Tam olarak VGA nedir ve ekran kartı ile arasındaki fark nedir?


30

İşletim sistemi geliştirme eğitimleri, doğrudan VGA veya EGA veya Super VGA'ya yazarak ekran verilerine ulaşmalarını belirlemektedir; ancak elde edemediğim şey, ekran için sabit bir adrese yazma ile doğrudan ekran kartına yazma arasındaki gerçek fark nedir? veya çıkarılabilir? Sadece konuyla ilgili bu konudaki kafa karışıklığımın netleşmesini istiyorum.

Ve kartlardaki değişkenler, bağlayıcı arayüzler, otobüsler, mimariler, çip üzerindeki sistemler, gömülü sistemler vb. Gibi basit bir durum olmadığı için, bu% 100'ün arkasındaki fikri anlamanın bir yolunu bulmakta zorlanıyorum. . Sabit adresler bir üst seviye GPU'dan bir üst seviye onboard'a göre farklılık gösterir mi? Neden ve neden olmasın?

Programlamadaki bir çekirdeğe ev sahipliği yapmak, bir işletim sistemi yapmak ve gerçekten çok hayal kırıklığına uğramış bir hayalim. Terminolojiyi anlayamamak, sadece bazı alanlarda beni engellemiyor, aynı zamanda donanım konusunda da aptal görünmeme neden oluyor.

EKSTRA: Bu güncel cevapların bazıları işlemcilerde 16-bit özelliklerde maksimum adreslenebilir hafızayı kullanmaktan bahsediyor. Sorun, ortaya çıkan diğer sorunlardan bazıları:

1. kartın kendi bellek hakkında Ne? Ekran verilerinin kendisi için sistem RAM'ine ihtiyaç duymayacaktı.

2. yüksek-bit modlarında ne hakkında? Ve BIOS'u gerçek modda (x86) ihmal etmiyor ve hala AL ile hafızayı ele alıyor musunuz?

3. Sabit bir adrese yazma kavramı, gerçek mikroişlemcideki veya üzerindeki işlemcilerin ve performansların katılımıyla GPU'da nasıl değişmeden kalır?


Biraz tarihsel bir bağlam için, ilgili bir soruya cevabımı kontrol edin: superuser.com/questions/357328/…
Russell Borogove

Ekran kartı teknolojisine / protokolüne atıfta bulunmanın yanı sıra, terimin belirli elektrik standartlarını ve ekran çözünürlüklerini belirlemeye geldiği belirtilmelidir. Hatta O, uygulandığı hangi anlamı tahmin etmek zor zaman siz "bağlamında" terimlerini görmek.
Daniel R Hicks,

Yanıtlar:


65

Teknik olarak VGA , 1987'de tanıtılan bir 640x480 video standardı olan Video Grafik Dizisi anlamına gelir . O zamanlar göreceli olarak yüksek çözünürlüklü, özellikle renkli ekran için.

Önce VGA tanıtıldı biz gibi birkaç diğer grafik standartları vardı hercules (720x348 piksel çözünürlükte) ya metin (25 karakter 80 satır) veya göreli yüksek çözünürlüklü siyah beyaz grafikler için sergiledi.

O zamandaki diğer standartlar, 640x200 piksel çözünürlüğe kadar 16 renge izin veren CGA ( Renkli grafik adaptörü ) idi. Bunun sonucu şöyle görünürdü:

görüntü tanımını buraya girin

Son olarak, dikkate değer bir PC standardı, 64 renkle 640 × 350'ye kadar çözünürlüklere izin veren Gelişmiş grafik adaptörüdür (EGA).

(Bu göreceli kısa kalması için bilgisayar dışı standartları görmezden geliyorum. Atari veya Amiga standartlarını-o zaman 4096 renge eklemeye başlarsam! - o zaman bu oldukça uzayacaktır.)

Sonra 1987'de IBM, PS2 bilgisayarını tanıttı. Fareler ve klavyeler için yeni portlar içeren öncekilerle karşılaştırıldığında bazı kayda değer farklılıklar vardı (Önceden fareler, eğer bir fareniz varsa , 25 iğneli seri portlar veya 9 iğneli seri portlar kullanıyordu ); Standart 3 inçlik sürücüler ve hem yüksek çözünürlük hem de birçok renk içeren yeni bir grafik adaptörü.

Bu grafik standardı Video Grafik Dizisi olarak adlandırıldı . Analog sinyalleri bir monitöre aktarmak için 3 sıralı, 15 pinli bir konektör kullandı. Bu bağlayıcı birkaç yıl öncesine kadar, DVI ve ekran portu gibi üstün dijital standartlarla değiştirilinceye kadar sürdü.

VGA'dan sonra

VGA standartlarında ilerleme durmadı. VGA'nın tanıtılmasından kısa bir süre sonra , aynı konektörü kullanan 800x600 S daha yüksek VGA (SVGA) gibi yeni standartlar ortaya çıktı . (Hercules, CGA, EGA vb. Hepsinin kendi konektörleri vardı. Yeterince düşük bir çözünürlük göstermiş olsanız bile, bir CGA monitörü VGA kartına bağlayamazsınız).

O zamandan beri çok daha yüksek çözünürlüklü ekranlara geçtik, ancak en sık kullanılan isim VGA. Doğru isimler SVGA, XVGA, UXGA vb.

görüntü tanımını buraya girin

(Wikipedia'nın izniyle)


'VGA' adı verilen bir diğer şey, orijinal VGA kartıyla kullanılan DE15 konektörüdür. Bu genellikle mavi bağlayıcı, analog 'VGA sinyallerini' monitöre aktarmanın tek yolu değildir, ancak en yaygın olanıdır.

Sol: DB5HD Sağ: Genellikle daha iyi kalite için kullanılan alternatif VGA konektörleri) görüntü tanımını buraya girin


'VGA'nın kullanılmasının üçüncü bir yolu da, bir kart VGA'dan tamamen farklı çözünürlüklerde bulunsa bile bir grafik kartını tanımlamaktır. Kullanım teknik olarak yanlıştır veya en azından 'VGA uyumlu kart' olmalıdır, ancak ortak konuşma bu farkı yaratmaz.


Yazmayı VGA'ya bırakıyor

Bu, bir IBM XT üzerindeki hafızanın tasarlanmasından kaynaklanıyor. CPU 1MiB (1024KiB) belleğe kadar erişebilir. Alt 512KiB RAM, üst kartlar, ROM vb. İçin 512 KiB idi.

Bu üst alan VGA kart hafızasının haritalandığı alandır. Doğrudan yazabilirsiniz ve sonuç ekranda görünecektir.

Bu sadece VGA için değil aynı zamanda jenerasyon alternatifler için de kullanılıyordu.

  G = Grafik Modu Video RAM
  M = Tek Renkli Metin Modu Video RAM
  C = Renkli Metin Modu Video RAM
  V = Video ROM BIOS (PS / 2’de "a" olur)
  a = Adaptör kartı ROM ve özel amaçlı RAM (boş UMA alanı)
  r = Ek PS / 2 Anakart ROM BIOS (PS / 2 olmayan sistemlerde ücretsiz UMA)
  R = Anakart ROM BIOS
  b = IBM Cassette BASIC ROM (IBM uyumluluklarında "R" olur)
  h = HIMEM.SYS yüklü ise Yüksek Bellek Alanı (HMA).

Geleneksel (Baz) Bellek:   
İlk 512KB (veya 64 KBB'lik 8 parça). 

Üst Bellek Alanı (UMA):

0A0000: GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
0B0000: MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
0C0000: VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
0D0000: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
0E0000: rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
0F0000: RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR

( ASCII haritasının kaynağı ).


1
Nit Yorum: Bir "DB15" konektörü değil. Bir DB15 bağlayıcısının yalnızca 2 satır pimi vardır (tıpkı DB9 ve DB25 gibi). VGA konektörünün 3 sıra pimi vardır ve genellikle "HD15" (DB'ye göre yüksek yoğunluk için HD) olarak adlandırılır (bazıları "HD15" in resmi bir isim olmadığını iddia etse de).
talaş

2
Nit Yorum # 2: Orijinal IBM PC, 512/512 numaralı bir bölmeyle piyasaya sürülmüş olabilir, ancak yakında 640/384'e bölündü (bu, kaynak sayfanızda belirtilmiştir). Grafik belleği 640K işaretinde (hex 0A0000) başlar. Hiç kimsenin “640K sınırının” nihayetinde iyi bilinen bir mesele haline geldiğine dair “512K sınırı” ndan gerçekten haberdar olduğunu sanmıyorum.
Hellion

2
@ sawdust: HD15 kesinlikle resmi bir isim değil (ancak bugünlerde olduğu kadar iyi). In Dx-nnkonnektör ailesi, xkabuk boyutudur nnpimleri sayısıdır. Kabuk B, paralel bir bağlantı noktasıyla aynı boyuttadır (veya eski, tam uygulama 25 pinli seri bağlantı noktası). Kabuk E, seri port ile aynı boyuttadır. Dolayısıyla teknik olarak , VGA 15 pinli konnektör DE-15 olacaktır, ancak bu asla orijinal konektör dizisinin bir parçası değildi. AFAIK, IBM'in PS / 2 MCGA, VGA ve 8514 / a'da kullanılmasından önce hiç bulunmamıştı. Wikipedia'nın iyi bir açıklaması var: en.wikipedia.org/wiki/D-subminiature
Alexios

3
Kararların süper enflasyonunu seviyorum: ultra geniş-süper-genişletilmiş-hiper-dört-grafik dizisi. Buna yüksek çözünürlük diyemezsin, çünkü bir gün olmayacak!
aidan

2
@LackingConfidence, kartların sunabileceği performansı istiyorsanız, kendilerine ait özel arayüzleri kullanmanız gerekir. Performansı umursamıyorsanız, sizin için bir VESA framebuffer oluşturmak için VGA BIOS var. Ayrıntılar için Linux'un vesafb.txt dosyasına bakın (ve tabii ki Linux'taki kaynak kodundan da).
derobert,

10

Bir "sabit adresi" yazma edildi esasen doğrudan bir video kartına yazma. Tüm bu video ISA video kartlarında (CGA, EGA, VGA) esas olarak doğrudan CPU'ların hafızasına ve G / Ç alanına eşleştirilen bir miktar RAM (ve kayıt) vardı.

Böylece, belirli bir hafıza konumuna bir bayt yazdığınızda, bu karakter (metin modunda) hemen ekranda göründü, çünkü aslında bir video kartında bulunan bir hafızaya yazdınız ve ekran kartı bu belleği kullandı.

Tüm bunlar bugün oldukça kafa karıştırıcı görünüyor, özellikle de bugünün ekran kartlarına bazen VGA deniyorsa (ve 1990'lardan gelen "gerçek" VGA kartlarına benzerlik gösteriyorlar). Bununla birlikte, modern kartlar bile bu eski tasarımların bazı işlevlerini taklit etmektedir (çoğu modern bilgisayarda DOS'u önyükleyebilir ve doğrudan video belleğine yazan DOS programlarını kullanabilirsiniz). Tabii ki, bugünlerde hepsi ekran kartının belleniminde öykünüyor.


Öyleyse, yerleşik bir video kartı ile bunun nasıl bir anlamı olabilir? Kart VGA dikte edilmediyse hala VGA'nın nasıl eklenmiş olabileceğini anlamadım.

1
Ekran kartınız takılı olsa bile, sistemin bir kısmına bir tür bus üzerinden bağlanır: PCIe, PCI, AGP, ISA, vb. Bu otobüsler harici bileşenleri ana karta bağlayabilir ve dahili bileşenleri bağlayabilir. yonga setinin içinde (SATA, video vb.)
13:15

1
Ancak otobüsler adreslerle ne yapacağını nasıl biliyor? Bu, PCI ve onboard kartlar, hatta GPU'lar veya tümleşik grafik mikroişlemciler arasında farklılık gösterecektir.

1
Kabloların PCI konektörüne yönlendirilip yönlendirilmediği veya tüm bağlantıların kuzey köprüsünüzün içinde olup olmadığına bakılmaksızın hiçbir fark yoktur. en.wikipedia.org/wiki/Conventional_PCI#PCI_adresi_spaces
13:01

3

Gerçekten bir fark yok: video belleği adresine yazıyorsanız, donanım bunu video kartına yönlendirir.

Kendi işletim sisteminizi yazıyorsanız, kartı bulmak için PCI veri yolunu tarayarak başlayarak grafik kartının hafızasını istediğiniz gibi eşleştirmesini sağlamak için muhtemelen çok fazla iş yapmanız gerekir.


Grafik kartım kuzey köprüsünde kurulu, PCI bağlı değil. Bence bu bir Intel GMA.

3
Grafik işlemciniz bir PCI yuvasını işgal etmeyebilir , ancak kesinlikle anakartta olsa bile, doğrudan bir yonga sisteminin bir parçası olarak entegre edilmiş olsa bile sistemin otobüslerinde oturuyor. Aynı şekilde, ana kartınızın SATA denetleyicileri veya USB denetleyicileri, ya da ... Yeterince barebone PCI veri yolu kullanıyorsanız, anakartınızın üzerindeki GPU'yu (ve SATA, USB, vb. Denetleyicileri) PCI Kimliğiyle birlikte görmelisiniz. İşletim sisteminiz için denetim aracı. Linux altında komut satırında sadece 'lspci' var. Windows için Gabriel Topala'nın "SIW" sini tercih ediyorum. Mac'lerde de bir 'lspci' olabilir mi?
FeRD

İşletim sistemi böyle bir durumda değil, çünkü donanım mimarisi ve platform önemli. İşletim sistemi bunun üzerine inşa edilmiştir ve çekirdeğin desteklediği tüm donanımlarla etkileşime geçmek için ana giriş noktasıdır. Mimari ve nitelikleri özelliği, ara yüzleştiğiniz şeydir. Donanımınızı belirlemek için çevrimiçi olarak anakartınıza bakın. Bu oldukça kolay bir başlangıç.

+1 kartı bulmak için PCI veri yolunu tarayarak başlayın.
n611x007

2

Şimdiye kadar cevaplar, eski video kartlarının işlemcinin adres alanına video belleği eşleştirilerek çalıştığını açıkladı. Bu kartların kendi hafızasıydı. Kuzey köprüsü, bu eşlenen bellek için istekleri VGA aygıtına yönlendirmeyi biliyor.

Daha sonra, VGA uyumlu kartlar için büyük açılımlar ve yeni modlar vardı. Bu, üzerinden çalışan VESA BIOS Uzantılarının (VBE) oluşturulmasına yol açar int 10h. Bu, temel 2D ivmesini (BitBlt), donanım imleçlerini, çift / üçlü tamponlamayı vb. Destekler. Bu, herhangi bir desteklenen çözünürlükte (yüksek çözünürlükler dahil) tam renkli ekran için temel yöntemdir. Bu normalde karttaki dahili belleği de kullandı, kuzey köprüsü klasik VGA'da olduğu gibi yönlendirmeyi gerçekleştirdi. Bu tam yakalayıcı / tam çözünürlüklü grafikleri kullanmanın en basit yoludur.

Daha sonra, VBE ile aynı özelliklere ve muhtemelen ek özelliklere erişim sağlayan, kullanımı kolay bir GPU'ya doğrudan erişme yöntemimiz var. Benim anlayışım burada oldukça bulanık. Bu arayüz cihaza özel olduğunu düşünüyorum ama bundan emin değilim.

Daha sonra, 3D hızlandırma / GP-GPU hesaplamasını vb. Destekleyebilen GPU arayüzü var. Bu, üreticinin tam kullanım için sağladığı sürücüleri veya spesifikasyonları gerektirdiğini ve sık sık aynı üreticinin cihazları arasında bile önemli farklılıklar olduğunu gösteriyor.


Özel bir sürücü yalnızca bir işletim sisteminde gereklidir. Tüm donanıma doğrudan mimariden erişilebilir.

1
Tabii ki, 3B bölümlere doğrudan erişimle ilgili problem, protokolün büyük bölümlerinin bazı büyük GPU üreticileri tarafından ticari sır olarak kabul edilmesi ve bu nedenle ters mühendislik uygulanmadığı veya ifşa edilmeme anlaşması imzalanmadığı takdirde, zaten içeren bir sürücü belirtilen bilgiye ihtiyaç var.
Kevin Cathcart

Karta bağlı. NVidia veya AMD ise tescilli olacak. Bütünleşik bir Intel GMA, bir nVidia GEForce'den çok daha kolay olurdu.

1
Söz konusu satırı "dalgıçlar veya spesifikasyonlar" ı yeniden istemek için güncelledim. Teknik özellikler, bunları alabileceğiniz zaman yeterlidir; bu da çoğu yeni Intel grafik çözümü için geçerlidir.
Kevin Cathcart,

1
Buna değer, tüm modern Intel ve AMD grafik kartlarının çoğunda yayınlanan programlama özelliklerinin çok büyük bir kısmı var. Nvidia hala bu konuda sessiz kalmaya devam ediyor, ancak Nouveau açık kaynaklı grafik sürücüsü, Nvidia ekran kartlarının programlanması konusunda çok sayıda belge (kaynak kodu biçiminde) içeriyor. Intel / AMD / Nvidia, bugünlerde tescilli ARM ASIC'lerden daha açık; gömülü / mobil yongalar hepsinden daha gizlidir.
allquixotic
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.