드라이버가로드되기 전에 CPU가 GPU와 어떻게 통신합니까? [복제]


24

내가 이해하는 것처럼 GPU에는 자체 명령 세트가 있으며 그 명령은 그래픽 드라이버로 생성됩니다. 그런 다음 GPU 명령어가 GPU로 전송됩니다. 그렇다면 드라이버가로드되기 전에 그래픽 통신은 어떻게 작동합니까? 컴퓨터가 기본 디스플레이 작업을 수행 할 수 있도록 GPU가 최소로 구현해야하는 기본 지침이 있습니까?


답변:


34

"기본 지침이 있습니까?" 예, 정확히 모든 GPU는 몇 가지 간단한 인터페이스 중 하나를 구현해야합니다. "명령 세트"라고하기에는 너무 원시적입니다. 플랫폼 펌웨어 ( "BIOS"또는 "UEFI")와 OS에 포함 된 드라이버는 . 요즘 "간단한 인터페이스"의 일반적인 선택은 원래 해당 표준의 비디오 카드에 대해 정의 된 레지스터 수준 인터페이스 인 "VGA"( "비디오 그래픽 배열")입니다. (지금 30 세 이상!)

예를 들어, Windows 시스템의 장치 관리자가 그래픽 카드를 "Microsoft Basic 비디오 어댑터"로 식별하면 OS가 카드의 특정 드라이버를 찾지 못하고 대신 VGA 호환 드라이버를로드 한 것입니다.

기술적으로 Windows는 항상 해당 드라이버를로드하므로 (부팅 진행률 화면과 같이 표시 될 수 있음) (부팅이 늦게) 그래픽 카드의 "실제"드라이버를 식별하고로드합니다.

VGA 표준은 일부 저해상도 그래픽 모드와 텍스트 모드 만 지원하며 GPU에서 "실행중인 프로그램"또는 "명령"이라고 부르는 내용은 포함하지 않습니다. 기본적으로 시스템 펌웨어 또는 "기본 비디오 드라이버"는 원하는 모드로 전환 한 다음 비트 맵에 비트를 씁니다. 비트 맵의 ​​비트는 화면의 픽셀에 직접 대응합니다. 선이나 곡선을 그리기 위해 수행해야하는 모든 산술은 CPU에서 수행됩니다. 화면에 물건을 표시하는 매우 낮은 수준의 느린 방법입니다. 그러나 펌웨어, OS 설치 및 초기 부팅 진행 화면 등의 표시 및 간단한 상호 작용에 충분합니다.

위키 백과 : 비디오 그래픽 배열


1
전체 상황은 복잡합니다. 최초의 "VGA"카드는 실제로 그 제한이었습니다. 오랫동안 Windows NT는 800x600을 지원해야했지만 16 색만 지원했습니다. 꽤 끔찍해 보였다! 내가 링크 한 Wikipedia 기사를 참조하십시오.
Jamie Hanrahan

9
Windows 는 기본 어댑터로 VESA BIOS Extentions (VBE) 를 사용합니다. VBE는 꽤 광범위하게 지원되며 16-24 비트 컬러와 최대 1600x1200 픽셀을 허용합니다.
8bittree

3
Windows가 단호을 위해 BIOS / UEFI 코드를 호출하지 않기 때문에 그것은, VESA BIOS 확장되지 않을 것 아무것도 부트 스트랩의 매우 초기 단계 완료 후.
Jamie Hanrahan

2
랩톱을 포함한 일부 컴퓨터에서 "회전하는 도트"Windows 부팅 화면이 매우 낮은 해상도 (320x200, VGA의 256 색 모드)로 시작한 다음 빠르게 높은 해상도로 전환됩니다.
Artelius

1
16 색의 800x600도 VGA의 기능을 능가합니다. VGA는 640x480 16 색으로 최대가되었습니다. 그러나 그래픽 칩 제조업체는이를 넘어서서 SVGA 모드라고하는 "SuperVGA"를 추가하여 색상과 해상도를 높이는 동시에 자체 독점 모드를 갖습니다. VESA는 이러한 독점 모드에 액세스하는 표준 방법을 찾았지만 PC가 주로 GUI로 구동되기 시작한시기가되었으므로 드라이버를 선택하는 것이 좋습니다. 또한 3D 가속 기능이 추가되기 시작했습니다. 따라서 대부분의 카드는 VESA와 호환되지만 아무도 그것에 대해 이야기하지 않았습니다.
trlkly

16

나는 오래된 하드웨어가 어떻게 작동했는지 설명함으로써이 모든 것의 뒤에 "부두"를 정리하려고 노력할 것이다. 최신 GPU는 이와 같이 작동하지 않지만 CPU-to-graphics 카드 인터페이스를 에뮬레이트합니다.

tl; dr

80 년대와 90 년대 초의 그래픽 칩 / 카드는 (클럭 속도에 비해) 매우 빠르게 출력을 생성해야했기 때문에 명령을 실행하지 않고 고정 회로를 사용해야했습니다. 그들은 방금 갔을 때 RAM에서 데이터를 빨아 들였으므로 CPU는 단순히 RAM에 데이터를 올바른 장소에 덤프해야했으며 그래픽 칩이 데이터를 가져 와서 화면에 던졌습니다. CPU는 또한 그래픽 칩에서 다양한 구성 변수를 설정할 수 있습니다.

세부:

80 년대에 가정용 컴퓨터에는 몇 가지 고정 된 동작을 가진 정말 "멍청한"그래픽 칩이있었습니다. 파이프 라인을 거꾸로 통과하면 가장 의미가 있습니다.

CRT 모니터

이 모니터에는 아날로그 입력이 필요했습니다. 즉, 높은 전압 = 더 밝은 출력입니다. 컬러 모니터에는 3 개의 채널이 있습니다 (빨강, 녹색 및 파랑 (예 : YUV 또는 YIQ ) ). 이 전압은 전자 빔의 강도를 조정했습니다. 간단한 것들.

CRT 모니터는 문자 그대로 전자석을 사용하여 전자 빔을 왼쪽에서 오른쪽으로 편향시킨 다음 다시 조금 더 낮게 시작하고 왼쪽에서 오른쪽으로, 위에서 아래로 진행합니다. 그런 다음 맨 위로 돌아가 반복하십시오.

DAC

그래픽 칩에는 "디지털-아날로그"변환기 (매우 일반적인 전기 구성 요소 )가있었습니다. 이는 디지털 값 (예 : 2, 4 또는 8 비트)을 모니터에 공급할 수있는 전압으로 변환했습니다.

스캐닝

그래픽 칩은 전자 빔을 "유지"하여 적절한 값을 DAC에 보내 적절한 시간에 해당 전압을 출력 할 수 있도록해야했습니다. (내가 가지 않을 시계에는 시계가 사용되었습니다.) 여기서 명령을 실행할 시간이 없었습니다. 모든 것이 유선으로 연결되어 있고 고정 된 수의 클럭 사이클이 소요되었습니다.

비디오 모드

초기 칩은 빠르지 않았으며 RAM이 제한적이었습니다. 이로 인해 배경색, 글꼴 선택, 커서 위치 및 크기, 팔레트 선택 및 스프라이트와 같은 다양한 모드 및 기타 구성 매개 변수를 선택할 수있었습니다. 대부분은 고해상도 "문자 전용"모드와 저해상도 픽셀 단위 모드를 제공했습니다.

주목할만한 세 가지 VGA 모드는 다음과 같습니다.

  • 16 (ish) 컬러 80x25 텍스트 모드 (기본적으로 BIOS 로딩 화면 모양)
  • 16 색 640x480 고해상도 모드
  • 256 컬러 320x200 하이 컬러 모드

그림 픽셀

그래픽 시스템에 따라 파이프 라인은 다음과 같습니다.

현재 픽셀 위치 ⇒ 프로세스 문자 / 글꼴 / 스파이트 / 픽셀 / 구성 데이터 ⇒ 픽셀 값 ⇒ 팔레트 ⇒ DAC

두 번째 RAM 위치에서 읽어야하는 것은 두 번째 단계입니다. 예를 들어, 텍스트 모드에서는 1 바이트 문자가 조회됩니다. 이것은 글꼴 테이블에 색인을 형성합니다. 이 표에서 비트가 조회되어 해당 픽셀이 전경색인지 배경색인지를 나타냅니다. 전경색 / 배경색을 얻기 위해 세 번째 바이트를 가져옵니다. RAM에서 3 바이트를 읽습니다.

그러나이 "흐름"은 방금 설명한 흐름과 똑같이 배열 된 간단한 고정 회로의 집합입니다.

메모리 버스 인터페이스

인텔 CPU에는 IO 버스라는 성가신 레거시 기능이 있지만 중요하지 않으므로 여기에없는 척합니다.

CPU는 메모리 버스에서 READ 또는 WRITE 요청과 주소를 브로드 캐스트하여 RAM에 액세스합니다. 대부분의 유효한 주소는 RAM에서 응답을 얻지 만 특정 범위는 장치에서 대신 처리 됩니다. 예를 들어 특정 주소에서 읽으면 키보드 키 누르기에 대한 정보가 제공 될 수 있습니다.

"그래픽 범위"의 오른쪽 부분에 쓰면 화면 내용과 그래픽 카드 구성 매개 변수를 모두 쓸 수 있습니다. "dumb"그래픽 칩은 명령을 실행하지 않습니다. 단지 몇 바이트가 회로를 통해 흐르고 전압을 출력하면서 플로팅을 계속 유지합니다.

VGA를 사용하면 실제로 그래픽 카드 RAM 이 있습니다. 그래픽 RAM이 그래픽 RAM에 기록되기 전에 사전 처리 된 데이터로 그래픽 카드를 구성하여 일부 상황에서 성능을 향상시킬 수 있기 때문입니다.

VESA

VGA 이후의 그래픽 카드는 더 높은 해상도와 우수한 색상 심도를 제공했지만 유사한 원리로 작동했습니다. 많은 최신 그래픽 카드는 여전히 부팅시 더 높은 해상도를 허용하기 위해이 호환성을 제공합니다. 그러나 VGA는 실질적으로 모든 카드가 에뮬레이트하는 "완전한"입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.