VGA 란 정확히 무엇이며 VGA와 비디오 카드의 차이점은 무엇입니까?


30

운영 체제 개발 자습서는 VGA, EGA 또는 Super VGA에 직접 기록하여 화면 데이터에 도달하는 지점을 정확하게 찾아 내지 만, 표시되지 않는 고정 주소에 쓰는 것과 온보드로 직접 비디오 카드에 쓰는 것의 차이점은 무엇입니까? 또는 이동식? 내 문제에 대한 혼란에 대한 기본적인 설명을 원합니다.

그리고 카드, 연결 인터페이스, 버스, 아키텍처, 칩상의 시스템, 임베디드 시스템 등에 변수가있는 단순한 경우가 아니기 때문에이 100 %의 배경에 대한 아이디어를 이해하는 방법을 찾기가 어렵습니다 . 고정 주소가 고성능 GPU와 저가형 온보드 GPU와 다릅니 까? 왜, 왜 안돼?

커널을 호스팅하고 운영 체제를 만드는 것이 실제로 꿈꾸는 프로그래밍의 목표 중 하나입니다. 용어를 이해하지 못하면 일부 영역에서 저를 방해 할뿐만 아니라 하드웨어의 주제에 대해 어리석은 것처럼 보입니다.

EXTRA : 이러한 현재 답변 중 일부는 프로세서의 최대 주소 지정 가능 메모리를 16 비트의 사양으로 사용하는 것에 대해 말합니다. 문제는 다음과 같은 다른 발생하는 문제 중 일부입니다.

1. 카드 자체 메모리는 어떻습니까? 화면 데이터 자체에는 시스템 RAM이 필요하지 않습니다.

2. 높은 비트 모드에서는 어떻습니까? 그리고 실제 모드 (x86)에서 BIOS를 무시해도 여전히 AL을 통해 메모리를 처리 할 수 ​​없습니까?

3. 고정 주소에 쓰는 개념은 실제 마이크로 프로세서에서 또는 그 이상으로 여러 레지스터와 성능을 가진 GPU에서 어떻게 변경되지 않습니까?


약간의 역사적 맥락에 대해서는 관련 질문에 대한 답변을 확인하십시오 : superuser.com/questions/357328/…
Russell Borogove

디스플레이 카드 기술 / 프로토콜을 언급 할뿐만 아니라이 용어는 특정 전기 표준 및 디스플레이 해상도를 나타냅니다. 심지어이 적용되고있는 의미를 추측하기 어려운 당신이 "상황에서"조건을 참조하십시오.
다니엘 R cks

답변:


65

기술적으로 VGA는 1987 년에 도입 된 640x480 비디오 표준 인 비디오 그래픽 어레이 (Video Graphics Array)를 나타냅니다 . 당시에는 특히 컬러 디스플레이의 경우 상대적으로 높은 해상도였습니다.

VGA가 도입 되기 전에 텍스트 (25 줄의 80 줄) 또는 상대적 고해상도 흑백 그래픽 (720x348 픽셀)을 표시하는 허큘리스 와 같은 몇 가지 다른 그래픽 표준이있었습니다 .

당시의 다른 표준은 CGA ( 컬러 그래픽 어댑터 )로 최대 640x200 픽셀의 해상도에서 최대 16 색을 허용했습니다. 그 결과는 다음과 같습니다.

여기에 이미지 설명을 입력하십시오

마지막으로 주목할만한 PC 표준은 EGA (Enhanced graphics adapter)로 64 색으로 최대 640 × 350의 해상도를 허용했습니다.

(이 상대를 짧게 유지하기 위해 비 PC 표준을 무시하고 있습니다. Atari 또는 Amiga 표준을 추가하기 시작하면-당시 최대 4096 색!-이것은 꽤 길어질 것입니다.)

1987 년 IBM은 PS2 컴퓨터를 출시했습니다. 마우스와 키보드를위한 새로운 포트가 포함 된 이전 모델과 비교했을 때 몇 가지 주목할만한 차이점이있었습니다 (이전에 마우스는 마우스가있는 경우 25 핀 직렬 포트 또는 9 핀 직렬 포트를 사용 했습니다). 표준 3½ 인치 드라이브 및 고해상도 및 다양한 색상의 새로운 그래픽 어댑터.

이 그래픽 표준을 Video Graphics Array 라고합니다 . 아날로그 신호를 모니터에 전송하기 위해 3 열, 15 핀 커넥터를 사용했습니다. 이 커넥터는 DVI 및 디스플레이 포트와 같은 우수한 디지털 표준으로 대체 된 몇 년 전까지 지속되었습니다.

VGA 후

VGA 표준으로 진행이 중단되지 않았습니다. VGA가 도입 된 직후 800x600과 같은 새로운 표준이 생겼습니다. S 동일한 커넥터를 사용하는 VGA (SVGA) uper. (Hercules, CGA, EGA 등은 모두 자체 커넥터가 있습니다. 해상도가 충분히 낮더라도 CGA 모니터를 VGA 카드에 연결할 수 없습니다).

그 이후로 우리는 훨씬 더 높은 해상도의 디스플레이로 넘어갔지 만 가장 많이 사용되는 이름은 VGA입니다. 올바른 이름은 SVGA, XVGA, UXGA 등이더라도

여기에 이미지 설명을 입력하십시오

(Wikipedia의 그래픽 제공)


'VGA'라고하는 또 다른 것은 원래 VGA 카드와 함께 사용되는 DE15 커넥터입니다. 이 파란색 커넥터는 일반적으로 아날로그 'VGA 신호'를 모니터로 전송하는 유일한 방법은 아니지만 가장 일반적입니다.

왼쪽 : DB5HD 오른쪽 : 대체 VGA 커넥터 (일반적으로 더 나은 품질을 위해 사용됨) 여기에 이미지 설명을 입력하십시오


'VGA'가 사용되는 세 번째 방법은 그래픽 카드를 설명하는 것입니다. 비록 해당 카드가 VGA와 완전히 다른 해상도를 생성 할 수 있습니다. 사용이 기술적으로 잘못되었거나 최소한 'VGA 호환 카드'여야하지만 일반적인 연설로 인해 차이가 생기는 것은 아닙니다.


그 잎 VGA에 쓰기

이것은 IBM XT의 메모리가 고안된 방식에서 비롯됩니다. CPU는 최대 1MiB (1024KiB)의 메모리에 액세스 할 수 있습니다. 하단 512KiB는 RAM 용으로, 상단 512KiB는 애드 인 카드, ROM 등을 위해 예약되었습니다.

이 상단 영역은 VGA 카드 메모리가 매핑 된 곳입니다. 직접 쓸 수 있고 결과가 디스플레이에 나타납니다.

이것은 VGA뿐만 아니라 동일한 세대 대안에도 사용되었습니다.

  G = 그래픽 모드 비디오 RAM
  M = 흑백 텍스트 모드 비디오 RAM
  C = 컬러 텍스트 모드 비디오 RAM
  V = 비디오 ROM BIOS (PS / 2에서 "a"임)
  a = 어댑터 보드 ROM 및 특수 목적 RAM (사용 가능한 UMA 공간)
  r = 추가 PS / 2 마더 보드 ROM BIOS (비 PS / 2 시스템에서 무료 UMA)
  R = 마더 보드 ROM BIOS
  b = IBM Cassette BASIC ROM (IBM 호환 장치에서 "R"임)
  h = HIMEM.SYS가로드 된 경우 HMA (High Memory Area).

기존 (기본) 메모리 :   
처음 512KB (또는 64KiB의 8 개 청크). 

상단 메모리 영역 (UMA) :

0A0000 : GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
0B0000 : MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
0C0000 : VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
0D0000 : aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
0E0000 : rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
0F0000 : RRRRRRRRRRRRRRRRRRRRRRRRbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbRRRRRRRR

( ASCII 맵의 소스 ).


1
주석 : "DB15"커넥터가 아닙니다. DB15 커넥터에는 2 행의 핀만 있습니다 (DB9 및 DB25와 동일). VGA 커넥터에는 3 열의 핀이 있으며 종종 "HD15"(DB와 비교하여 고밀도의 경우 HD)라고합니다 (일부 "HD15"는 공식 명칭이 아니라고 주장합니다).
톱밥

2
주석 # 2 : 원래 IBM PC가 512/512 분할로 릴리스되었지만 곧 640/384 분할로 변경되었습니다 (소스 페이지에서 참조). 그래픽 메모리는 640K 마크 (16 진수 0A0000)에서 시작합니다. "640K 경계"가 결국 잘 알려진 문제가되는 방식으로 "512K 경계"를 알고있는 사람은 없다고 생각합니다.
Hellion

2
@sawdust : HD15는 공식 명칭이 아닙니다 (그러나 오늘날만큼 좋습니다). 에서 Dx-nn커넥터 가족 x, 쉘의 크기가 nn핀의 수이다. 쉘 B는 병렬 포트 (또는 구식의 완전한 25 핀 직렬 포트)와 동일한 크기입니다. 쉘 E는 직렬 포트와 동일한 크기입니다. 따라서 기술적 으로 VGA 15 핀 커넥터는 DE-15이지만 원래 커넥터 라인업의 일부는 아니 었습니다. AFAIK는 IBM이 PS / 2 MCGA, VGA 및 8514 / a에서 사용하기 전에는 존재하지 않았습니다. Wikipedia에 대한 좋은 설명이 있습니다 : en.wikipedia.org/wiki/D-subminiature
Alexios

3
나는 해상도의 최고급 인플레이션을 좋아합니다. 초광각 슈퍼 확장 하이퍼 쿼드 그래픽 배열. 언젠가는 불가능하기 때문에 고화질이라고 부를 수는 없습니다!
aidan

2
@LackingConfidence 카드가 제공 할 수있는 성능을 원하면 개별 독점 인터페이스를 사용해야합니다. 성능에 신경 쓰지 않으면 VESA 프레임 버퍼를 설정하는 VGA BIOS가 있습니다. 자세한 내용은 Linux의 vesafb.txt를 참조하십시오 (물론 Linux의 소스 코드도 물론).
derobert

10

"고정 주소" 쓰는 것은 본질적으로 비디오 카드에 직접 쓰는 것이 었습니다 . 모든 비디오 ISA 비디오 카드 (CGA, EGA, VGA)에는 본질적으로 일부 RAM (및 레지스터)이 CPU 메모리 및 I / O 공간에 직접 매핑되었습니다.

따라서 특정 메모리 위치에 바이트를 쓰면 비디오 카드에있는 메모리에 실제로 기록 된 비디오 카드가 해당 메모리를 사용했기 때문에 해당 문자 (텍스트 모드)가 즉시 화면에 나타납니다.

특히 오늘날의 비디오 카드는 때때로 VGA라고 불리며 1990 년대의 "진정한"VGA 카드와 유사하다는 점을 고려하면 오늘날 매우 혼란스러워 보입니다. 그러나 최신 카드조차도 이러한 이전 디자인의 일부 기능을 에뮬레이트합니다 (대부분의 최신 PC에서 DOS를 부팅하고 비디오 메모리에 직접 쓰는 DOS 프로그램을 사용할 수 있음). 물론 오늘날에는 비디오 카드의 펌웨어에서 모두 에뮬레이트됩니다.


온보드 비디오 카드를 사용하면 어떤 의미가 있습니까? 카드에 VGA가 지정되어 있지 않은 경우 VGA를 어떻게 추가 할 수 있습니까?

1
비디오 카드가 통합되어 있어도 PCIe, PCI, AGP, ISA 등의 버스를 통해 나머지 시스템에 계속 연결되어 있습니다.이 버스는 외부 구성 요소를 마더 보드에 연결하고 내부 구성 요소를 연결할 수 있습니다. 칩셋 내부 (SATA, 비디오 등)
haimg

1
그러나 버스는 어떻게 주소와 관련이 있는지 알고 있습니까? 이는 PCI와 온보드 카드, GPU 또는 통합 그래픽 마이크로 프로세서에 따라 다릅니다.

1
와이어가 PCI 커넥터로 라우팅되는지 또는 모든 연결이 노스 브릿지 내부에 있는지의 여부에는 차이가 없습니다. en.wikipedia.org/wiki/Conventional_PCI#PCI_address_spaces
haimg

3

실제로 차이는 없습니다. 비디오 메모리의 주소에 쓰는 경우 하드웨어가 비디오 카드로 라우팅합니다.

자신의 운영 체제를 작성하는 경우 PCI 버스를 스캔하여 카드를 찾기 시작하여 그래픽 카드가 원하는 메모리를 매핑하도록하는 데 많은 노력을 기울여야 할 것입니다.


내 그래픽 카드는 노스 브리지에 탑재되어 있으며 PCI로 연결되어 있지 않습니다. 인텔 GMA 인 것 같습니다.

3
그래픽 프로세서가 PCI 슬롯을 차지 하지는 않지만 시스템 버스 중 하나에 확실히 장착되어 있습니다. 마더 보드에 있더라도 시스템 온 칩의 일부로 직접 통합되어 있어도 알 수 있습니다. 마더 보드의 SATA 컨트롤러 또는 USB 컨트롤러와 같은 방식 또는 ... 충분히 베어 본 PCI 버스를 사용하는 경우 온보드 GPU (및 SATA, USB 등 컨트롤러)와 PCI ID가 표시되어야합니다. OS 용 검사 도구. 리눅스에서는 명령 줄에 'lspci'입니다. Windows의 경우 Gabriel Topala의 "SIW"를 선호합니다. 맥 ... 'lspci'도 가지고 있을까요?
FeRD

하드웨어 아키텍처와 플랫폼이 중요하기 때문에 OS는 중요하지 않습니다. OS는 그 위에 구축되었으며 커널이 서비스를 지원하는 모든 하드웨어와 상호 작용하는 주요 진입 점입니다. 아키텍처 및 니트 사양은 인터페이스입니다. 하드웨어를 확인하려면 온라인으로 마더 보드를 찾으십시오. 그것은 공정한 쉬운 시작입니다.

카드를 찾기 위해 PCI 버스를 스캔하여 +1부터 시작하십시오.
n611x007

2

지금까지 답변은 비디오 메모리를 프로세서의 주소 공간에 매핑하여 오래된 비디오 카드가 작동한다고 설명했습니다. 이것은 카드 자체의 메모리였습니다. 노스 브릿지는이 매핑 된 메모리에 대한 요청을 VGA 장치로 리디렉션하는 것을 알고 있습니다.

그 외에도 VGA 호환 카드에 대한 확장 및 새로운 모드가 거의 없었습니다. 이로 인해 VESA BIOS 확장 (VBE)이 생성됩니다 int 10h. 기본 2D 가속 (BitBlt), 하드웨어 커서, 이중 / 삼중 버퍼링 등을 지원합니다. 이것은 지원되는 모든 해상도 (고해상도 포함)에서 풀 컬러 디스플레이를위한 기본 방법입니다. 이것은 노스 브릿지가 클래식 VGA와 같이 리디렉션을 수행 할 때 카드 내부의 메모리도 일반적으로 사용했습니다. 전체 콜로 / 풀 해상도 그래픽을 사용하는 가장 간단한 방법입니다.

다음으로 bios를 사용하지 않고 GPU에 액세스하는 직접적인 방법으로 VBE와 동일한 기능 및 추가 기능에 액세스 할 수 있습니다. 내 이해는 여기에서 꽤 모호하다. 이 인터페이스는 장치마다 다르지만 전혀 확신 할 수 없습니다.

그런 다음 3D acelleration / GP-GPU 계산 등을 지원할 수있는 GPU 인터페이스가 있습니다.이를 위해서는 제조업체가 제공 한 드라이버 또는 사양을 완전히 사용해야하며 동일한 제조업체의 장치 간에도 실질적인 차이가있는 경우가 많습니다.


devce 드라이버는 운영 체제에서만 필요합니다. 모든 하드웨어는 아키텍처에서 직접 액세스 할 수 있습니다.

1
물론, 3D 부분에 대한 직접 액세스의 문제점은 프로토콜의 실질적인 부분이 일부 주요 GPU 제조업체에 의해 영업 비밀로 간주되므로 리버스 엔지니어링 또는 비공개 계약에 서명하지 않은 경우 이미 포함 된 드라이버 말했다 지식이 필요합니다.
케빈 카스 카트

카드에 따라 다릅니다. 그것이 nVidia 또는 AMD라면 그것은 독점적 일 것입니다. 온보드 인텔 GMA는 nVidia GEForce보다 훨씬 쉽습니다.

1
해당 다이버를 "다이버 또는 사양"으로 reqad하도록 업데이트했습니다. 사양을 얻을 수있을 때 충분합니다. 실제로 많은 최신 인텔 그래픽 솔루션의 경우입니다.
Kevin Cathcart

1
가치가있는 모든 최신 인텔 및 대부분의 AMD 그래픽 카드에는 프로그래밍 사양이 매우 다양합니다. Nvidia는 여전히이 문제에 대해 침묵하고 있지만, Nouveau 오픈 소스 그래픽 드라이버에는 Nvidia 그래픽 카드 프로그래밍에 대한 많은 문서 (소스 코드 형식)가 포함되어 있습니다. 인텔 / AMD / Nvidia는 요즘 독점 ARM ASIC보다 더 개방적입니다. 임베디드 / 모바일 칩이 가장 비밀이다.
allquixotic
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.