Làm thế nào để GPU / CPU giao tiếp với đầu ra màn hình tiêu chuẩn? (HDMI / DVI / vv) [đã đóng]


14

Tôi quan tâm đến cách thức cpu / gpu trình bày (cho bất kỳ thiết bị nào mà nó làm) dữ liệu video sau khi được xử lý.

Tôi đã được thông báo rằng video được xử lý bởi CPU / GPU và sau đó được gửi đến một mạch tích hợp bằng nối tiếp tốc độ cao để chuyển đổi tín hiệu nối tiếp thành đầu ra màn hình phù hợp, nhưng tôi không thể xác nhận điều này bằng cách tìm kiếm trực tuyến.

Tôi quan tâm đến việc báo hiệu và không thể tìm kiếm các giao thức / vv vì tôi không biết những gì tôi đang tìm kiếm. Vì vậy, CPU / GPU có tương tác trực tiếp với đầu ra video không (tôi có thể tìm thấy các giao thức này một cách dễ dàng) hoặc có một "người trung gian" để nói và nếu vậy nó là gì, loại chip / vv?


Bạn có thể mua RAMDAC video dưới dạng các phần riêng biệt: ti.com.cn/cn/lit/ds/symlink/tvp3703.pdf mặc dù điều đó không có nghĩa là nó sẽ được tách riêng trên card đồ họa của bạn.
pjc50

Câu trả lời:


18

Hình ảnh hiển thị trên màn hình được lưu trữ trong RAM video trên máy tính của bạn trên card đồ họa theo cấu trúc được gọi là bộ đệm khung. Dữ liệu trong bộ đệm khung thường là màu RGB 24 bit, do đó sẽ có một byte cho màu đỏ, một cho màu xanh lục và một cho màu xanh lam cho mỗi pixel trên màn hình, có thể có thêm một số byte đệm. Dữ liệu trong RAM video có thể được tạo bởi GPU hoặc CPU. RAM video liên tục được đọc bởi một thành phần DMA chuyên dụng trên thẻ video và được gửi đến màn hình. Đầu ra tín hiệu đến màn hình là tín hiệu tương tự (VGA) trong đó các thành phần màu được gửi qua bộ chuyển đổi kỹ thuật số sang bộ chuyển đổi tương tự trước khi rời thẻ hoặc tín hiệu kỹ thuật số trong trường hợp DVI, HDMI hoặc DisplayPort. Phần cứng chịu trách nhiệm cho việc này cũng tạo ra các tín hiệu đồng bộ ngang và dọc cũng như tất cả các độ trễ thích hợp để dữ liệu hình ảnh chỉ được gửi đến màn hình khi nó sẵn sàng cho nó. Trong DVI và HDMI, luồng thông tin màu pixel được mã hóa và nối tiếp và gửi qua TMDS (tín hiệu vi sai tối thiểu hóa chuyển tiếp) đến màn hình. DisplayPort sử dụng mã hóa 8b / 10b. Việc mã hóa phục vụ nhiều mục đích. Đầu tiên, TMDS giảm thiểu chuyển đổi tín hiệu để giảm phát thải EMI. Thứ hai, cả TMDS và 8b / 10b đều là các giao thức cân bằng DC nên các tụ chặn DC có thể được sử dụng để loại bỏ các vấn đề với các vòng lặp trên mặt đất. Thứ ba, 8b / 10b đảm bảo mật độ chuyển tiếp đủ cao để cho phép khôi phục đồng hồ tại máy thu vì DisplayPort không phân phối đồng hồ riêng. luồng thông tin màu pixel được mã hóa và tuần tự hóa và gửi qua TMDS (tín hiệu vi sai thu nhỏ chuyển tiếp) đến màn hình. DisplayPort sử dụng mã hóa 8b / 10b. Việc mã hóa phục vụ nhiều mục đích. Đầu tiên, TMDS giảm thiểu chuyển đổi tín hiệu để giảm phát thải EMI. Thứ hai, cả TMDS và 8b / 10b đều là các giao thức cân bằng DC nên các tụ chặn DC có thể được sử dụng để loại bỏ các vấn đề với các vòng lặp trên mặt đất. Thứ ba, 8b / 10b đảm bảo mật độ chuyển tiếp đủ cao để cho phép khôi phục đồng hồ tại máy thu vì DisplayPort không phân phối đồng hồ riêng. luồng thông tin màu pixel được mã hóa và tuần tự hóa và gửi qua TMDS (tín hiệu vi sai thu nhỏ chuyển tiếp) đến màn hình. DisplayPort sử dụng mã hóa 8b / 10b. Việc mã hóa phục vụ nhiều mục đích. Đầu tiên, TMDS giảm thiểu chuyển đổi tín hiệu để giảm phát thải EMI. Thứ hai, cả TMDS và 8b / 10b đều là các giao thức cân bằng DC nên các tụ chặn DC có thể được sử dụng để loại bỏ các vấn đề với các vòng lặp trên mặt đất. Thứ ba, 8b / 10b đảm bảo mật độ chuyển tiếp đủ cao để cho phép khôi phục đồng hồ tại máy thu vì DisplayPort không phân phối đồng hồ riêng.

Ngoài ra, đối với HDMI và DisplayPort, dữ liệu âm thanh cũng được gửi đến card đồ họa để truyền đến màn hình. Dữ liệu này được chèn vào tạm dừng trong luồng dữ liệu giữa các khung hình video. Trong trường hợp này, thẻ video sẽ tự hiển thị dưới dạng âm thanh chìm cho hệ điều hành và dữ liệu âm thanh sẽ được truyền qua DMA sang thẻ để đưa vào dữ liệu video.

Bây giờ, bạn có thể nhận ra rằng đối với màn hình 1920x1080 với 4 byte mỗi pixel, bạn chỉ cần khoảng 8 MB để lưu trữ hình ảnh, nhưng RAM video trong máy tính của bạn có thể gấp nhiều lần kích thước đó. Điều này là do RAM video không chỉ dành cho việc lưu trữ bộ đệm khung. RAM video được kết nối trực tiếp với GPU, bộ xử lý dành cho mục đích đặc biệt được thiết kế để hiển thị 3D và giải mã video hiệu quả. GPU sử dụng quyền truy cập trực tiếp vào RAM video để đẩy nhanh quá trình kết xuất. Trên thực tế, việc lấy dữ liệu từ bộ nhớ chính vào bộ nhớ video là một chút tắc nghẽn vì bus PCI kết nối thẻ video với CPU và bộ nhớ chính chậm hơn đáng kể so với kết nối giữa GPU và RAM video.


7

Các đầu ra màn hình hiện đại khác nhau về cơ bản là dòng bit nối tiếp. Tốc độ bit quá cao đối với bộ xử lý (hoặc nếu có thể theo kịp thì nó sẽ đòi hỏi quá nhiều thời gian xử lý của nó). Một phần bộ nhớ được đặt sang một bên để chứa các bit của hình ảnh. Một phần cứng chuyên dụng đọc nội dung bộ nhớ và truyền nó ra ngoài. Phần này tương tự như bộ điều khiển DMA và thực sự khá đơn giản. Nó chỉ là một phần nhỏ của GPU hiện đại, chủ yếu liên quan đến việc tạo hình ảnh đó trong bộ nhớ từ các lệnh GPU cấp cao hơn.

Bộ nhớ chứa hình ảnh video có thể là một phần của bộ nhớ chính (giá rẻ) hoặc bộ nhớ chuyên dụng có thể được truy cập đồng thời bởi 'DMA' và CPU và / hoặc GPU. 'DMA' phải được định cấu hình với nhiều tham số khác nhau, ví dụ: chiều rộng và chiều cao pixel, độ sâu màu, vị trí bắt đầu trong bộ nhớ, v.v.

Trên các máy tính hiện đại, GPU là bộ xử lý (rất chuyên dụng) cạnh tranh với tốc độ của CPU chính (và vượt xa nó trên chính sân của nó). Nó thực hiện những việc như tạo ra một hình ảnh psuido-3D từ một loạt các vật thể 3D với kết cấu và nguồn sáng. Tất cả điều này có thể được thực hiện bên trong bộ nhớ video, bởi GPU. CPU chỉ cung cấp các đối tượng, kết cấu và nguồn sáng.

Đọc dữ liệu video từ bộ nhớ và chuyển nó ra là một quá trình khá đơn giản, nhưng nó phải được thực hiện khá nhanh và mọi lúc. Do đó, nhiệm vụ này rất phù hợp với phần cứng chuyên dụng và không phù hợp với CPU. AFAIK các máy tính cuối cùng có CPU liên quan đến việc tạo tín hiệu video là ZX80 / 81 và Spectrum. Trên những CPU đó chỉ có thể tự làm việc trong thời gian truy xuất (dọc?).


1
Đây là thông tin tuyệt vời. Vậy bộ điều khiển DMA (hoặc phần cứng tương tự) truy cập trực tiếp vào bộ nhớ video? Và trên một hệ thống có đồ họa tích hợp sử dụng RAM hệ thống, nó có truy cập trực tiếp vào RAM hệ thống không? Xin lỗi vì sự đơn giản của câu hỏi của tôi. Tôi là một DIY'er lớn nên tôi có xu hướng nhảy vào những thứ cấp cao hơn với kiến ​​thức cấp thấp hơn. :)
Craig Lafferty

Và để theo dõi, làm thế nào để bộ điều khiển biết địa chỉ nào trong RAM để "đánh cắp" khung hình từ đó? Các khung hình / bitmap đang được thay thế thực sự nhanh chóng và di chuyển xung quanh tôi giả sử.
Craig Lafferty

Nhận xét cuối cùng của bạn là chính xác: nó được lưu trữ trong bộ đệm khung và cho video tương tự được chuyển đến RAMDAC . Địa chỉ bộ đệm khung có thể được cố định hoặc chỉ định trong thanh ghi điều khiển. Có nhiều thủ thuật khác nhau liên quan đến việc tráo đổi bộ đệm khung giữa hoặc trong các khung hoặc trên một số hệ thống (Amiga) thay đổi chế độ video ở giữa khung hình.
pjc50

Tại sao bộ xử lý sẽ bị chậm lại? Không phải nó đã phải xử lý video để bộ điều khiển có thể sử dụng nó sao? Tôi sẽ đoán khác ở đây và nói rằng bộ điều khiển đọc đi đọc lại RAM và CPU / GPU chỉ cập nhật RAM với thông tin hiển thị mới khi có gì đó thay đổi, ví dụ như GPU sẽ đưa màn hình hiện tại của tôi vào RAM của nó và khi tôi di chuyển con trỏ, nó cập nhật các pixel đã bị thay đổi. Trong khi đó, bộ điều khiển đọc RAM 60 lần hoặc hơn một giây (loại FR tiêu chuẩn tôi đoán).
Craig Lafferty

1
RAM video không chỉ được sử dụng để lưu trữ hình ảnh hiển thị, nó còn được sử dụng bên trong bởi GPU để lưu trữ dữ liệu cảnh được đưa vào bộ đệm khung. Điều này có thể chiếm nhiều không gian vì GPU cần truy cập vào các lưới 3D chi tiết của các đối tượng cùng với tất cả dữ liệu kết cấu cho các bề mặt của chúng.
alex.forencich
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.