GPU / CPU는 표준 디스플레이 출력과 어떻게 통신합니까? (HDMI / DVI / 등) [닫힘]


14

CPU / GPU가 처리 된 후 비디오 데이터를 (어떤 장비 에나) 제공하는 방법에 관심이 있습니다.

비디오가 CPU / GPU에 의해 처리 된 후 직렬 신호를 적절한 디스플레이 출력으로 변환하는 고속 직렬을 통해 집적 회로로 전송되었다고 들었지만 온라인으로 검색하여 확인할 수는 없습니다.

나는 신호에 관심이 있으며 찾고있는 것이 무엇인지 알지 못하기 때문에 프로토콜 등을 검색 할 수 없습니다. CPU / GPU가 비디오 출력과 직접 상호 작용하거나 (이 프로토콜을 쉽게 찾을 수 있음) "중간자"가 있습니까? 그렇다면 칩 유형 등입니까?


비디오 RAMDAC를 별도의 부품으로 구입할 수 있습니다 : ti.com.cn/cn/lit/ds/symlink/tvp3703.pdf 이것은 그래픽 카드에서 분리된다는 것을 의미하지는 않습니다.
pjc50

답변:


18

모니터에 표시되는 이미지는 컴퓨터의 비디오 RAM에 그래픽 카드의 프레임 버퍼라고하는 구조로 저장됩니다. 프레임 버퍼의 데이터는 일반적으로 24 비트 RGB 색상이므로 디스플레이의 각 픽셀에 대해 1 바이트의 빨강, 녹색 및 1 개의 파랑이있을 수 있으며, 추가 패딩 바이트가있을 수 있습니다. 비디오 RAM의 데이터는 GPU 또는 CPU에 의해 생성 될 수 있습니다. 비디오 RAM은 비디오 카드의 특수 DMA 구성 요소에 의해 지속적으로 판독되어 모니터로 전송됩니다. 모니터로 출력되는 신호는 카드를 떠나기 전에 컬러 컴포넌트가 디지털-아날로그 변환기를 통해 전송되는 아날로그 신호 (VGA)이거나 DVI, HDMI 또는 DisplayPort의 경우 디지털 신호입니다. 이를 담당하는 하드웨어는 수평 및 수직 동기 신호와 모든 적절한 지연을 생성하여 이미지 데이터가 준비 될 때만 모니터로 전송됩니다. DVI 및 HDMI에서 픽셀 색상 정보 스트림은 인코딩 및 직렬화되며 TMDS (전환 최소화 차동 신호)를 통해 모니터로 전송됩니다. DisplayPort는 8b / 10b 인코딩을 사용합니다. 인코딩은 다양한 용도로 사용됩니다. 첫째, TMDS는 신호 전환을 최소화하여 EMI 방출을 줄입니다. 둘째, TMDS와 8b / 10b는 모두 DC 밸런스드 프로토콜이므로 DC 차단 커패시터를 사용하여 접지 루프 문제를 제거 할 수 있습니다. 셋째, 8b / 10b는 DisplayPort가 별도의 클럭을 분배하지 않기 때문에 수신기에서 클럭을 복구 할 수있을만큼 높은 전이 밀도를 보장합니다. 픽셀 컬러 정보의 스트림은 인코딩 및 직렬화되고 TMDS (전환 최소화 차동 시그널링)를 통해 모니터로 전송된다. DisplayPort는 8b / 10b 인코딩을 사용합니다. 인코딩은 다양한 용도로 사용됩니다. 첫째, TMDS는 신호 전환을 최소화하여 EMI 방출을 줄입니다. 둘째, TMDS와 8b / 10b는 모두 DC 밸런스드 프로토콜이므로 DC 차단 커패시터를 사용하여 접지 루프 문제를 제거 할 수 있습니다. 셋째, 8b / 10b는 DisplayPort가 별도의 클럭을 분배하지 않기 때문에 수신기에서 클럭을 복구 할 수있을만큼 높은 전이 밀도를 보장합니다. 픽셀 컬러 정보의 스트림은 인코딩 및 직렬화되고 TMDS (전환 최소화 차동 시그널링)를 통해 모니터로 전송된다. DisplayPort는 8b / 10b 인코딩을 사용합니다. 인코딩은 다양한 용도로 사용됩니다. 첫째, TMDS는 신호 전환을 최소화하여 EMI 방출을 줄입니다. 둘째, TMDS와 8b / 10b는 모두 DC 평형 프로토콜이므로 DC 차단 커패시터를 사용하여 접지 루프 문제를 제거 할 수 있습니다. 셋째, 8b / 10b는 DisplayPort가 별도의 클럭을 분배하지 않기 때문에 수신기에서 클럭을 복구 할 수있을만큼 높은 전이 밀도를 보장합니다.

또한 HDMI 및 DisplayPort의 경우 오디오 데이터도 그래픽 카드로 전송되어 모니터로 전송됩니다. 이 데이터는 비디오 프레임 사이의 데이터 스트림에서 일시 정지에 삽입됩니다. 이 경우 비디오 카드는 운영 체제에 오디오 싱크로 표시되며 비디오 데이터에 포함시키기 위해 오디오 데이터가 DMA를 통해 카드로 전송됩니다.

이제 픽셀 당 4 바이트의 1920x1080 디스플레이의 경우 이미지를 저장하는 데 약 8MB 만 필요하지만 컴퓨터의 비디오 RAM은 그 크기의 몇 배일 것입니다. 이것은 비디오 RAM이 프레임 버퍼를 저장하기위한 것이 아니기 때문입니다. 비디오 RAM은 효율적인 3D 렌더링 및 비디오 디코딩을 위해 설계된 특수 목적 프로세서 인 GPU에 직접 연결됩니다. GPU는 비디오 RAM에 직접 액세스하여 렌더링 프로세스를 촉진합니다. 실제로 비디오 카드와 CPU를 연결하는 PCI 버스가 GPU와 비디오 RAM을 연결하는 것보다 속도가 느리기 때문에 메인 메모리에서 비디오 메모리로 데이터를 가져 오는 것은 약간의 병목 현상입니다.


7

다양한 최신 디스플레이 출력은 기본적으로 직렬 비트 스트림입니다. 비트 전송률이 프로세서에 비해 너무 높습니다 (또는 유지할 수있는 경우 처리 시간이 너무 많이 소요됨). 이미지의 비트를 포함하도록 메모리 조각이 따로 보관됩니다. 전용 하드웨어가 메모리 내용을 읽고 스트리밍합니다. 이 부분은 DMA 컨트롤러와 유사하며 실제로는 매우 간단합니다. 그것은 현대 GPU의 작은 부분 일 뿐이며, 주로 상위 수준 GPU 명령으로 메모리에 이미지를 만드는 것과 관련이 있습니다.

비디오 이미지를 포함하는 메모리는 주 메모리 (저렴한)의 일부이거나 'DMA'와 CPU 및 / 또는 GPU에서 동시에 액세스 할 수있는 전용 메모리 일 수 있습니다. 'DMA'는 픽셀 너비와 높이, 색 깊이, 메모리의 시작 위치 등과 같은 다양한 매개 변수로 구성해야합니다.

최신 컴퓨터에서 GPU는 주 CPU의 속도를 능가하고 자체 잔디에서 그것을 능가하는 (매우 특수화 된) 프로세서입니다. 텍스처와 광원이있는 여러 3D 객체에서 psuido-3D 이미지를 생성하는 것과 같은 작업을 수행합니다. 이것은 GPU에 의해 비디오 메모리 내부에서 모두 수행 될 수 있습니다. CPU는 단지 객체, 텍스처 및 광원을 제공합니다.

메모리에서 비디오 데이터를 읽고 이동시키는 것은 다소 간단한 과정이지만, 항상 매우 빠르게 수행되어야합니다. 따라서이 작업은 전용 하드웨어에 적합하고 CPU에는 적합하지 않습니다. AFAIK 비디오 신호 생성에 CPU가 포함 된 마지막 컴퓨터는 ZX80 / 81 및 스펙트럼입니다. 그런 경우 CPU는 (수직?) 재 추적 시간 동안에 만 자체 작업을 수행 할 수 있습니다.


1
이것은 훌륭한 정보입니다. DMA 컨트롤러 (또는 유사한 하드웨어)가 비디오 메모리에 직접 액세스합니까? 그리고 시스템 RAM을 사용하는 통합 그래픽이있는 시스템에서 시스템 RAM에 직접 액세스합니까? 내 질문이 단순해서 죄송합니다. 나는 큰 DIY'er이므로 낮은 수준의 지식으로 높은 수준의 물건으로 뛰어 드는 경향이 있습니다. :)
Craig Lafferty 2014 년

그리고 후속 조치를 위해 컨트롤러는 RAM에서 프레임을 "훔칠"주소를 어떻게 알 수 있습니까? 프레임 / 비트 맵이 실제로 빠르게 교체되고 있다고 가정합니다.
Craig Lafferty 2014 년

마지막 주석이 정확합니다 : 프레임 버퍼에 저장되며 아날로그 비디오의 경우 RAMDAC에 전달됩니다 . 프레임 버퍼 어드레스는 제어 레지스터에서 고정되거나 지정 될 수있다. 프레임간에 또는 프레임간에 또는 프레임 아래에서 비디오 모드를 변경하는 일부 시스템 (Amiga)에서 프레임 버퍼 교환과 관련된 다양한 트릭이 있습니다.
pjc50

프로세서 속도가 느려지는 이유는 무엇입니까? 컨트롤러가 비디오를 사용하기 위해 이미 비디오를 처리하지 않아도됩니까? 여기서 또 다른 추측을하고 컨트롤러가 RAM을 반복해서 읽고 CPU / GPU는 무언가가 변경되었을 때 새로운 디스플레이 정보로 RAM을 업데이트한다고 말합니다. 예를 들어 GPU는 현재 화면을 그 RAM과 커서를 움직이면 변경된 픽셀이 업데이트됩니다. 그 동안 컨트롤러는 1 초에 RAM 60을 읽습니다 (표준 FR 종류).
Craig Lafferty

1
비디오 RAM은 디스플레이 이미지를 저장하는 데 사용될뿐만 아니라 GPU에 의해 프레임 버퍼로 렌더링되는 장면 데이터를 저장하기 위해 내부적으로 사용됩니다. GPU는 표면의 모든 텍스처 데이터와 함께 객체의 상세 3D 메시에 액세스해야하기 때문에 많은 공간을 차지할 수 있습니다.
alex.forencich
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.