2011-09-17 31 views
9

Máy tính vẽ bất kỳ thứ gì lên màn hình ở mức thấp nhất (không có gì về các thư viện bên ngoài như X11)? Có nghĩa vụ phải được lắp ráp lệnh mà làm điều này? CPU kiểm soát chính xác những gì xuất hiện trên màn hình chính xác như thế nào?Máy tính vẽ màn hình như thế nào?

+0

CPU không thực hiện được. –

+1

@Ash: Giả sử có một GPU chuyên dụng. – delnan

+0

http://fgiesen.wordpress.com/category/graphics-pipeline/page/2/ có thể được quan tâm. – user786653

Trả lời

5

Thông thường, có một vùng bộ nhớ gọi là frame buffer trong thẻ video của bạn. Viết một giá trị có nghĩa là thiết lập giá trị màu của một pixel.

Bạn có thể xem xét bộ đệm khung như một mảng 2D, trong đó mỗi bit đại diện cho một pixel trên màn hình. Để đại diện cho màu sắc được sử dụng mức độ khác nhau của bộ đệm. Hôm nay một bộ đệm khung phổ biến có 24 cấp độ (8 cho mỗi thành phần màu RGB) và cho phép defenition của 2^24 màu sắc có thể.

Ngày nay, quyền truy cập vào bộ đệm khung xảy ra thông qua GPU cho các vấn đề về lỗ thủng: ngay cả khi CPU có thể thực hiện nhiệm vụ này, nó khá tốn kém.

8

Về cơ bản giống như cách nó đọc từ đĩa cứng hoặc phát hiệu ứng âm thanh.

Bằng cách ghi dữ liệu nhất định vào địa chỉ bộ nhớ cụ thể được bộ điều khiển bộ nhớ ánh xạ tới phần cứng bên ngoài được đề cập (ổ cứng, GPU hoặc card âm thanh trong những trường hợp này). Khi phần cứng nhận được các ghi đó, nó sẽ giải thích dữ liệu được viết dưới dạng hướng dẫn về việc cần làm.

CPU thực sự là loại bị cô lập với phần còn lại của hệ thống. Tất cả những gì nó thực sự biết là bus bộ nhớ. Nó có thể đọc và ghi dữ liệu trên xe buýt đó, và về cơ bản là nó. Một số lần đọc/ghi này đi vào bộ nhớ, và một số khác có thể được ánh xạ tới thanh ghi điều khiển của nhiều phần cứng khác nhau hoặc bộ nhớ của thiết bị nếu có, cho phép CPU giao tiếp với các thiết bị khác.

GPU hiện đại có RAM chuyên dụng riêng, có thể tải dữ liệu vào. Vì vậy, CPU sẽ gửi hướng dẫn tới GPU, chỉ định nơi trong bộ nhớ chính nó có thể tìm thấy dữ liệu được sử dụng để tạo ra nội dung màn hình và phải làm gì với nó. Sau đó, GPU tải dữ liệu đó từ bộ nhớ chính vào bộ nhớ RAM của nó, nơi nó thực hiện các phép biến đổi và tính toán cần thiết, trước khi ghi nó vào bộ đệm khung của nó, mà trình duyệt liên tục đọc từ đó.

+1

+1: Tôi cảm thấy xấu hổ về câu trả lời hời hợt của mình. – Heisenbug

+0

Tại sao? Đó là một câu trả lời tốt. :) – jalf

3

Có bộ nhớ ở đâu đó dành riêng cho màn hình video. Mỗi điểm ảnh trên màn hình có một lượng bộ nhớ nhất định. Tránh các giải pháp lịch sử như bảng màu và màu đen và trắng, thường có một số bit nhất định cho màu đỏ, một số bit cho màu xanh và một số cho màu xanh lá cây. Khi những màu sắc được thêm vào, bạn có thể nhận được tất cả mọi thứ bao gồm cả màu trắng (tôi biết họ không phải là màu sắc chính được sử dụng với sơn ví dụ, đừng lo lắng nó hoạt động). Thông thường, bạn sẽ tìm thấy màu 24 bit vì nó rất dễ quản lý 8 bit, một byte, màu đỏ, một byte màu xanh lá cây và một byte màu xanh, và dây lên bộ nhớ, v.v.

Phần cứng video liên tục đọc bộ nhớ và sử dụng bất kỳ công nghệ nào để gửi tín hiệu đến màn hình về cơ bản cho biết số lượng màu đỏ, xanh lá cây và xanh dương sáng lên cho một pixel cụ thể, liên tục quét màn hình bằng thông tin cập nhật.

Một vài kỹ thuật phổ biến để sử dụng bộ nhớ này là sử dụng một cái gì đó gọi là dual ported, nơi hai thực thể có thể đọc/ghi bộ nhớ. Hoặc có hai kỷ niệm và trao đổi chúng. Trong cả hai trường hợp có một thực thể khác, một bộ xử lý, hoặc chính bản thân CPU, hoặc những ngày này nhiều bộ xử lý đồ họa nhỏ trong card video/chip. Trong cả hai trường hợp, một số phần mềm chạy và tính toán vị trí và màu sắc của tất cả các pixel và ghi chúng vào bộ nhớ video, tùy thuộc vào cơ chế được sử dụng bên video/màn hình của bộ nhớ có những thay đổi khi nó có ý nghĩa.bạn không muốn chỉ có một số điểm ảnh của các chữ cái mà bạn đang gõ để hiển thị trên một thẻ ngang qua màn hình, sau đó có phần còn lại hiển thị trên thẻ tiếp theo, có thể nhận được thông báo người dùng nhấp nháy.

Bộ nhớ video thường được ánh xạ như bộ nhớ hệ thống, bộ xử lý có khả năng sẽ sử dụng cùng một hướng dẫn sử dụng để truy cập không phải video, hệ thống, bộ nhớ. Chắc chắn gpus có thể, nhưng một cpu thường không có hướng dẫn cụ thể ngoại vi, uart, gpio, video, usb, lưu trữ, vv Các thiết bị ngoại vi thường được ánh xạ như một số địa chỉ trong không gian bộ nhớ của cpu và bộ nhớ bình thường đọc/ghi hướng dẫn được sử dụng .

Vì các loại thuật toán chuyên biệt và quan trọng hơn là số lượng tính toán cần thiết cho trò chơi video, thẻ video sử dụng nhiều, nhiều, chuyên ngành, đơn giản, bộ xử lý đồ họa, có thể, hôm qua, hôm nay hoặc ngày mai bộ nhớ video hướng dẫn cụ thể cho hiệu suất hoặc kích thước hoặc quyền lực hoặc các lý do khác. Những gì có thể sẽ không thay đổi là mô hình có bộ nhớ framebuffer, bộ nhớ chứa một màn hình có giá trị pixel mà phần cứng video sử dụng để tạo tín hiệu để gửi đến màn hình để nó có thể vẽ màn hình.

+0

Đúng đối với các hệ thống hiện tại mà tôi biết, nhưng một số hệ thống cũ hơn không có bộ đệm khung đệm. :-) –

+1

Thats lý do tại sao tôi nói "tránh các giải pháp lịch sử", tôi đã cố gắng để ở lại điểm và không nhận được vô số cách mà không có một số loại bộ đệm khung hoặc thậm chí cả trường hợp không có bộ đệm khung. Tôi nghĩ rằng câu hỏi chính là có hướng dẫn lắp ráp (hiếm khi), nếu không thì những gì (bộ nhớ ánh xạ như hầu hết mọi thứ). Có thể là một câu hỏi kiểu cộng đồng thú vị, những giải pháp nào khác ngoài bộ đệm khung đã được sử dụng để triển khai video/đồ họa máy tính. –

+0

Tôi thực sự chỉ chạy trên một hệ thống hiện tại (trong sản xuất) mà không sử dụng một bộ đệm khung sao lưu. Cánh quạt dựa trên "Hydra"! –

Các vấn đề liên quan