Làm thế nào để CPU giao tiếp với GPU trước khi trình điều khiển được tải? [bản sao]


24

Theo tôi hiểu, GPU có bộ hướng dẫn riêng, có hướng dẫn được tạo bởi trình điều khiển đồ họa. Các hướng dẫn GPU sau đó được gửi đến GPU. Vì vậy, làm thế nào để giao tiếp đồ họa hoạt động trước khi trình điều khiển được tải? Có một số hướng dẫn cơ bản mà GPU phải thực hiện ở mức tối thiểu để đảm bảo rằng máy tính có thể thực hiện các tác vụ hiển thị cơ bản không?


Câu trả lời:


34

"Có một số hướng dẫn cơ bản ...?" Đúng chính xác. Tất cả các GPU được yêu cầu thực hiện một trong một số giao diện đơn giản - chúng quá thô sơ để được gọi là "bộ hướng dẫn" - phần sụn nền tảng ("BIOS" hoặc "UEFI") và các trình điều khiển đi kèm với HĐH biết cách nói chuyện với . Sự lựa chọn thông thường của "giao diện đơn giản" ngày nay là "VGA" ("Mảng đồ họa video"), giao diện cấp đăng ký ban đầu được xác định cho các thẻ video của tiêu chuẩn đó. (Bây giờ đã hơn 30 tuổi!)

Ví dụ: nếu Trình quản lý thiết bị trên hệ thống Windows ID thẻ đồ họa là "Bộ điều hợp video Microsoft Basic", thì HĐH không thể tìm thấy trình điều khiển cụ thể cho thẻ và thay vào đó đã tải trình điều khiển tương thích VGA.

Về mặt kỹ thuật, Windows luôn tải trình điều khiển đó (để nó có thể hiển thị, ví dụ như màn hình tiến trình khởi động), sau đó (khá muộn khi khởi động) xác định và tải trình điều khiển "thực" cho card đồ họa của bạn.

Chuẩn VGA chỉ hỗ trợ một vài chế độ đồ họa và chế độ văn bản có độ phân giải thấp và không liên quan đến những gì tôi gọi là "chương trình đang chạy" hoặc thậm chí là "hướng dẫn" trên GPU. Về bản chất, phần sụn hệ thống hoặc "trình điều khiển video cơ sở" chỉ cần đặt nó vào chế độ mong muốn và sau đó ghi bit vào bitmap; các bit trong bitmap tương ứng trực tiếp với các pixel trên màn hình. Bất kỳ số học nào phải được thực hiện để vẽ các đường hoặc đường cong được thực hiện trong CPU. Đó là một cách rất thấp và chậm để làm cho công cụ hiển thị trên màn hình. Nhưng nó đủ để hiển thị từ và các tương tác đơn giản với phần sụn, cho các cài đặt hệ điều hành và màn hình tiến trình khởi động sớm, v.v.

Wikipedia: Mảng đồ họa video


1
Tình hình đầy đủ là phức tạp. Các thẻ "VGA" đầu tiên thực sự bị hạn chế. Trong một thời gian dài, Windows NT yêu cầu hỗ trợ 800x600, nhưng có, chỉ 16 màu. Trông nó thật kinh khủng! Xem bài viết Wikipedia tôi liên kết.
Jamie Hanrahan

9
Windows nhiều khả năng sử dụng VESA BIOS Extentions (VBE) cho bộ điều hợp cơ bản của nó. VBE được hỗ trợ khá rộng rãi và cho phép màu 16-24 bit và lên tới 1600x1200 pixel.
8

3
Nó sẽ không phải là phần mở rộng BIOS VESA, vì Windows hoàn toàn không gọi mã BIOS / UEFI cho bất cứ điều gì sau khi các giai đoạn khởi động sớm nhất được thực hiện.
Jamie Hanrahan

2
Tôi đã thấy một số máy tính, bao gồm cả máy tính xách tay của tôi, nơi màn hình khởi động Windows "quay tròn" bắt đầu có độ phân giải cực thấp (320x200, tôi sẽ nói, chế độ 256 màu của VGA) và sau đó nhanh chóng chuyển sang độ phân giải cao hơn.
Artelius

1
Ngay cả 800x600 ở 16 màu cũng vượt quá khả năng của VGA. VGA đạt tối đa 640x480 16 màu. Tuy nhiên, các nhà sản xuất chip đồ họa đã vượt xa điều này và sẽ thêm các chế độ "SuperVGA" hay còn gọi là chế độ SVGA để tăng màu sắc và độ phân giải, đồng thời có các chế độ độc quyền của riêng họ. VESA đã đưa ra một cách tiêu chuẩn để truy cập các chế độ độc quyền đó, nhưng đây là khoảng thời gian PC bắt đầu được điều khiển bằng GUI, và do đó trình điều khiển là một lựa chọn tốt. Đó cũng là lúc khả năng tăng tốc 3D bắt đầu được thêm vào. Vì vậy, trong khi hầu hết các thẻ đều tương thích với VESA, không ai nói về nó.
trlkly

16

Tôi sẽ cố gắng làm rõ "voodoo" đằng sau tất cả những điều này, bằng cách giải thích cách phần cứng cũ hoạt động. Các GPU hiện đại không hoạt động như thế này nhưng chúng mô phỏng giao diện CPU-đồ họa-card.

tl; dr

Các chip / thẻ đồ họa trong thập niên 80 và đầu thập niên 90 phải tạo ra đầu ra cực kỳ nhanh (liên quan đến tốc độ xung nhịp) để chúng không thực hiện các hướng dẫn mà thay vào đó là các mạch cố định. Họ chỉ hút dữ liệu ra khỏi RAM khi họ đi, vì vậy CPU chỉ cần đổ dữ liệu vào RAM đúng chỗ, và chip đồ họa sẽ nhặt nó lên và ném lên màn hình. CPU cũng có thể đặt các biến cấu hình khác nhau trên chip đồ họa.

Chi tiết:

Vào những năm 80, máy tính gia đình có một con chip đồ họa thực sự "ngu ngốc" có một vài hành vi cố định. Nó sẽ có ý nghĩa nhất nếu tôi đi qua đường ống ngược.

Màn hình CRT

Những màn hình cần đầu vào tương tự. Nói cách khác, điện áp cao hơn = đầu ra sáng hơn. Màn hình màu có 3 kênh (Đỏ, Xanh lục và Xanh lam (hoặc, ví dụ: YUV hoặc YIQ ) ). Những điện áp này điều chỉnh cường độ của chùm electron. Thứ đơn giản.

CRT theo dõi theo nghĩa đen được sử dụng nam châm điện để làm lệch chùm tia điện tử từ trái sang phải, sau đó bắt đầu lại thấp hơn một chút và đi từ trái sang phải, và cứ thế từ trên xuống dưới. Sau đó trở lại đầu trang và lặp lại.

Bộ giải mã

Các chip đồ họa có bộ chuyển đổi "kỹ thuật số sang tương tự" (một thành phần điện rất phổ biến ). Điều này đã chuyển đổi các giá trị kỹ thuật số (ví dụ 2, 4 hoặc 8 bit) thành điện áp có thể được cung cấp cho màn hình.

Quét

Các chip đồ họa đã phải "theo kịp" với chùm electron, gửi giá trị phù hợp tới DAC để nó có thể tạo ra điện áp tương ứng vào đúng thời điểm. (Đồng hồ đã được sử dụng cho việc này mà tôi sẽ không tham gia.) Không có thời gian để thực hiện các hướng dẫn ở đây. Mọi thứ đều cứng cáp và mất một số chu kỳ đồng hồ nhỏ, cố định.

Chế độ video

Những con chip ban đầu không nhanh lắm và có RAM hạn chế. Do đó, họ có xu hướng cho phép lựa chọn các chế độ khác nhau và các tham số cấu hình khác, ví dụ như màu nền, lựa chọn phông chữ, vị trí và kích thước con trỏ, chọn bảng màu và họa tiết. Hầu hết cung cấp chế độ "chỉ ký tự" độ phân giải cao và chế độ pixel theo pixel độ phân giải thấp hơn.

Ba chế độ VGA đáng chú ý là:

  • 16 (ish) màu chế độ văn bản 80x25 (về cơ bản là màn hình tải BIOS trông như thế nào)
  • Chế độ độ phân giải cao 16 màu 640x480
  • Chế độ cao 256 màu 320x200

Vẽ pixel

Rất đại khái, tùy thuộc vào hệ thống đồ họa, đường ống trông giống như thế này:

Vị trí pixel hiện tại Xử lý dữ liệu ký tự / phông chữ / sprite / pixel / config values ​​Giá trị pixel ⇒ Bảng màu ⇒ DAC

Đó là bước thứ 2 cần đọc từ một vài vị trí RAM. Chẳng hạn, ở Chế độ văn bản, một ký tự 1 byte sẽ được tra cứu. Điều này sẽ tạo thành một chỉ mục vào một bảng phông chữ. Một chút sẽ được nhìn lên từ bảng này, cho biết pixel đó nên là màu nền trước hay màu nền. Một byte thứ ba sẽ được tìm nạp để có được màu nền trước / nền đó. Tất cả trong tất cả, 3 byte đọc từ RAM.

Nhưng "dòng chảy" này gần như là một tập hợp các mạch cố định đơn giản được sắp xếp chính xác như dòng chảy được mô tả.

Giao diện bus bộ nhớ

CPU Intel có thứ di sản gây phiền nhiễu này được gọi là bus IO nhưng nó không quan trọng nên tôi sẽ giả vờ nó không có ở đó.

CPU truy cập RAM bằng cách truyền phát yêu cầu ĐỌC hoặc VIẾT và địa chỉ trên bus bộ nhớ. Mặc dù hầu hết các địa chỉ hợp lệ đều gợi ra phản hồi từ RAM, nhưng một số phạm vi nhất định được xử lý bởi các thiết bị thay thế. Chẳng hạn, việc đọc từ một địa chỉ cụ thể có thể cung cấp cho bạn thông tin về các phím bấm trên bàn phím.

Bằng cách viết vào đúng phần của "phạm vi đồ họa", bạn có thể viết cả nội dung màn hình và cũng có thể đặt các tham số cấu hình card đồ họa. Chip đồ họa "ngu ngốc" không thực hiện bất kỳ hướng dẫn nào. Nó chỉ tiếp tục chạy theo, có một vài byte chảy qua các mạch của nó và xuất ra điện áp.

Với VGA, thực sự có RAM trên card đồ họa, bởi vì bạn có thể định cấu hình card đồ họa thành dữ liệu được xử lý trước trước khi ghi vào RAM đồ họa, để tăng hiệu suất trong một số trường hợp.

VESA

Card đồ họa sau VGA cung cấp độ phân giải cao hơn và độ sâu màu tốt nhưng hoạt động với các nguyên tắc tương tự. Nhiều card đồ họa hiện đại vẫn cung cấp khả năng tương thích với điều này để cho phép độ phân giải cao hơn trong quá trình khởi động. Nhưng VGA là thiết bị "hoàn hảo" mà thực tế mọi thẻ sẽ mô phỏng.

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.