Sự khác biệt giữa DMA và IO ánh xạ bộ nhớ là gì? Cả hai đều trông giống tôi.Sự khác biệt giữa DMA và IO ánh xạ bộ nhớ là gì?
Trả lời
I/O được ánh xạ bộ nhớ cho phép CPU điều khiển phần cứng bằng cách đọc và ghi các địa chỉ bộ nhớ cụ thể. Thông thường, điều này sẽ được sử dụng cho các hoạt động băng thông thấp như thay đổi bit điều khiển.
DMA cho phép phần cứng đọc trực tiếp và ghi bộ nhớ mà không cần liên quan đến CPU. Thông thường, điều này sẽ được sử dụng cho các hoạt động băng thông cao như đầu vào đĩa I/O hoặc đầu vào video camera.
Vì vậy, về cơ bản chúng giống nhau nhưng theo hướng ngược lại? – f126ck
Không chính xác. DMA là khi hai thiết bị không phải là CPU sử dụng bus bộ nhớ để giao tiếp (với một thiết bị thường là bộ nhớ chính, và quá trình được dàn dựng bởi CPU). IO ánh xạ bộ nhớ là CPU nói chuyện với thiết bị trên bus bộ nhớ không phải là bộ nhớ chính. – jdizzle
tại sao cần phải ánh xạ bộ đệm dma ngay cả khi động cơ dma có trong thiết bị? – ransh
IO ánh xạ bộ nhớ nghĩa là thanh ghi thiết bị được ánh xạ vào không gian bộ nhớ của máy - khi các vùng nhớ đó được đọc hoặc ghi bởi CPU, nó đọc hoặc ghi vào thiết bị chứ không phải bộ nhớ thực. Để chuyển dữ liệu từ thiết bị sang bộ nhớ đệm thực tế, CPU phải đọc dữ liệu từ thanh ghi thiết bị được ánh xạ bộ nhớ và ghi nó vào bộ đệm (và chuyển đổi dữ liệu cho thiết bị).
Với truyền DMA, thiết bị có thể trực tiếp truyền dữ liệu đến hoặc từ bộ đệm bộ nhớ thực. CPU cho thiết bị biết vị trí của bộ đệm, và sau đó có thể thực hiện công việc khác trong khi thiết bị đang truy cập trực tiếp vào bộ nhớ.
Vì những người khác đã trả lời câu hỏi, tôi sẽ chỉ thêm một chút lịch sử.
Quay lại những ngày cũ, trên phần cứng x86 (PC), chỉ có không gian I/O và không gian bộ nhớ. Đây là hai không gian địa chỉ khác nhau, được truy cập với giao thức bus khác nhau và các hướng dẫn CPU khác nhau, nhưng có thể nói chuyện trên cùng một khe cắm thẻ plug-in.
Hầu hết các thiết bị sử dụng không gian I/O cho cả giao diện điều khiển lẫn giao diện truyền dữ liệu hàng loạt. Cách đơn giản để truy cập dữ liệu là thực thi nhiều lệnh CPU để truyền dữ liệu một từ tại một thời điểm từ địa chỉ I/O đến địa chỉ bộ nhớ (đôi khi được gọi là "bit-banging.")
Để di chuyển dữ liệu từ thiết bị đến bộ nhớ máy chủ tự động, không có hỗ trợ trong giao thức bus ISA cho các thiết bị để bắt đầu truyền. Giải pháp thỏa hiệp được phát minh: bộ điều khiển DMA. Đây là một phần của phần cứng mà CPU ngồi lên và bắt đầu chuyển để di chuyển dữ liệu từ địa chỉ I/O của thiết bị sang bộ nhớ, hoặc ngược lại. Bởi vì địa chỉ I/O giống nhau, bộ điều khiển DMA đang thực hiện các hoạt động giống như một CPU, nhưng hiệu quả hơn một chút và cho phép một số tự do tiếp tục chạy trong nền (mặc dù có thể không miễn là nó không thể nói chuyện với bộ nhớ).
Tua nhanh tới thời điểm PCI và các giao thức bus trở nên thông minh hơn nhiều: bất kỳ thiết bị nào cũng có thể bắt đầu chuyển. Vì vậy, nó có thể cho, nói, một thẻ điều khiển RAID để di chuyển bất kỳ dữ liệu nó thích hoặc từ máy chủ bất cứ lúc nào nó thích. Chế độ này được gọi là chế độ "bus master", nhưng không có lý do cụ thể nào khiến mọi người tiếp tục tham khảo chế độ này là "DMA" mặc dù bộ điều khiển DMA cũ đã biến mất lâu rồi. Không giống như các chuyển DMA cũ, thường không có địa chỉ I/O tương ứng, và chế độ tổng thể bus thường là giao diện duy nhất có trên thiết bị, không có chế độ "bit-đập" CPU nào cả.
Trong hạt nhân Linux 'DMA' được đề cập trong hơn 5000 tệp C, đó có thể là lý do tại sao mọi người vẫn nói về DMA. – JohnnyFromBF
Truy cập bộ nhớ trực tiếp (DMA) là một kỹ thuật chuyển dữ liệu từ I/O sang bộ nhớ và từ bộ nhớ sang I/O mà không cần sự can thiệp của CPU. Với mục đích này, một chip đặc biệt, được đặt tên là bộ điều khiển DMA, được sử dụng để kiểm soát tất cả các hoạt động và đồng bộ hóa dữ liệu. Kết quả là, so sánh với các kỹ thuật truyền dữ liệu khác, DMA nhanh hơn nhiều.
Mặt khác, bộ nhớ ảo hoạt động như bộ đệm giữa bộ nhớ chính và bộ nhớ phụ.Dữ liệu được tìm nạp trước từ bộ nhớ thứ cấp (đĩa cứng) vào bộ nhớ chính để dữ liệu đã có sẵn trong bộ nhớ chính khi cần. Nó cho phép chúng tôi chạy nhiều ứng dụng trên hệ thống hơn là chúng tôi có đủ bộ nhớ vật lý để hỗ trợ.
- 1. sự khác biệt giữa bộ nhớ ánh xạ io và io ánh xạ io
- 2. sự khác biệt giữa bộ nhớ cache l1 và bộ nhớ cache l2 là gì?
- 3. Có sự khác biệt nào giữa tệp iostream được ánh xạ và tăng tệp ánh xạ interprocess không?
- 4. Ưu điểm của tệp ánh xạ bộ nhớ là gì?
- 5. Sự khác nhau giữa omnifunc và completefunc ngoại trừ ánh xạ khóa gọi là gì?
- 6. Sự khác nhau giữa bộ nhớ đệm và bộ nhớ cache trống là gì?
- 7. khác biệt giữa IO-APIC-fasteoi và IO-APIC-cạnh
- 8. sự khác biệt giữa luồng bộ nhớ và dòng phim
- 9. Sự khác biệt giữa phản chiếu dựa trên gương và phản xạ truyền thống là gì?
- 10. Sự khác biệt giữa "bộ nhớ ảo" và "không gian hoán đổi" là gì?
- 11. Sự khác biệt giữa Caching và Memoization là gì?
- 12. SQLAlchemy: Sự khác biệt giữa flush() và commit() là gì?
- 13. Sự khác biệt giữa dealloc và viewdidunload là gì?
- 14. Sự khác biệt giữa lớp nguyên thủy và lớp bao bọc trong ánh xạ cột JPA (Hibernate) là gì?
- 15. Sự khác biệt giữa không có bộ nhớ cache và không lưu trữ trong bộ nhớ Cache-control là gì?
- 16. Sự khác biệt giữa tệp ánh xạ Hibernate và chú thích
- 17. Sự khác nhau giữa phụ thuộc maven org.apache.commons: commons-io và commons-io: commons-io là gì?
- 18. Sự khác biệt giữa bộ nhớ đệm bảo thủ và bộ đệm ẩn tiến bộ trong joomla 2.5 là gì?
- 19. Sự khác biệt giữa ascx và .cshtml là gì?
- 20. Sự khác biệt giữa Bộ đệm ẩn HttpRuntime và Bộ đệm ẩn HttpContext là gì?
- 21. Sự khác biệt giữa JavaBean và POJO là gì?
- 22. Sự khác biệt giữa betweeen% INC và @INC là gì?
- 23. Sự khác biệt giữa INTERSECT và WHERE IN là gì?
- 24. Sự khác biệt giữa RoutedCommand và RoutedUICommand là gì?
- 25. Sự khác biệt chính giữa Sinatra và Ramaze là gì?
- 26. Sự khác biệt giữa DBI và DBD là gì?
- 27. Sự khác biệt giữa NSInvocation và chặn là gì?
- 28. Sự khác biệt giữa fn và fn * là gì?
- 29. Sự khác biệt giữa xtype và bí danh là gì?
- 30. Sự khác biệt giữa build.sbt và build.scala là gì?
Cũng liên quan: [Trình điều khiển thiết bị Linux, Phiên bản 2: Chương 13: mmap và DMA] (http://www.xml.com/ldd/chapter/book/ch13.html); đầu tiên đọc câu trả lời ở đây đã giúp tôi rất nhiều, mặc dù. – sdaau