2011-12-27 68 views
8

Tôi chỉ muốn biết sự khác biệt giữa các cổng I/o và bộ nhớ I/o, bởi vì tôi khá bối rối. Và nếu ai đó giải thích việc sử dụng nó, điều đó thật tuyệt vời. Và bằng cách sử dụng tôi có nghĩa là, khi cổng I/O được ưa thích và khi bộ nhớ I/O được ưa thích.sự khác biệt giữa các cổng I/O và bộ nhớ I/O

Trả lời

10

Không có sự khác biệt về khái niệm giữa các vùng bộ nhớ và I/O vùng: cả trong số họ được truy cập bằng cách khẳng định tín hiệu điện trên xe buýt địa chỉ và điều khiển xe buýt

Trong khi một số nhà sản xuất CPU thực hiện một không gian địa chỉ duy nhất trong các chip của họ , những người khác đã quyết định rằng các thiết bị ngoại vi khác với bộ nhớ và, do đó, xứng đáng với một không gian địa chỉ riêng biệt. Một số bộ vi xử lý (đáng chú ý nhất là họ x86) có các dòng đọc và ghi riêng biệt cho các cổng I/O và các lệnh CPU đặc biệt để truy cập các cổng.

Linux thực hiện khái niệm về cổng I/O trên tất cả các nền tảng máy tính mà nó chạy trên, ngay cả trên nền tảng nơi CPU triển khai một không gian địa chỉ duy nhất. Việc thực hiện truy cập cổng đôi khi phụ thuộc vào việc tạo và mô hình cụ thể của máy chủ (vì các mô hình khác nhau sử dụng các chipset khác nhau để ánh xạ các giao dịch bus vào không gian địa chỉ bộ nhớ).

Ngay cả khi xe buýt ngoại vi có không gian địa chỉ riêng cho cổng I/O, không phải tất cả các thiết bị đều ánh xạ thanh ghi của chúng vào cổng I/O. Trong khi việc sử dụng các cổng I/O là phổ biến cho các bo mạch ngoại vi ISA, hầu hết các thiết bị PCI ánh xạ các thanh ghi vào một vùng địa chỉ bộ nhớ. Cách tiếp cận bộ nhớ I/O này thường được ưu tiên, vì nó không yêu cầu sử dụng các hướng dẫn bộ xử lý có mục đích đặc biệt; Bộ nhớ truy cập lõi CPU hiệu quả hơn nhiều, và trình biên dịch có nhiều tự do hơn trong việc phân bổ đăng ký và lựa chọn chế độ giải quyết khi truy cập bộ nhớ.

Chi tiết khác tại http://www.makelinux.net/ldd3/chp-9-sect-1

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