Truy cập bộ nhớ trực tiếp (DMA) là gì và nó hoạt động như thế nào? [Wiki MiniTool]
What Is Direct Memory Access
Điều hướng nhanh:
Bạn có thể áp dụng RDMA công nghệ cho phép các máy tính trong mạng trao đổi dữ liệu trong bộ nhớ chính mà không liên quan đến bộ xử lý, bộ nhớ đệm hoặc hệ điều hành của một trong hai máy tính. Tuy nhiên, bạn cũng có thể sử dụng tính năng DMA để gửi trực tiếp dữ liệu từ thiết bị được gắn vào bộ nhớ trên bo mạch chủ của máy tính. Bài đăng này từ MiniTool chủ yếu nói về DMA.
Định nghĩa về truy cập bộ nhớ trực tiếp
Trước hết, truy cập bộ nhớ trực tiếp là gì? Truy cập bộ nhớ trực tiếp có thể được viết tắt là DMA, là một tính năng của hệ thống máy tính. Nó cho phép các thiết bị nhập / xuất (I / O) truy cập vào bộ nhớ hệ thống chính ( bộ nhớ truy cập tạm thời ), độc lập với khối xử lý trung tâm (CPU), giúp tăng tốc hoạt động của bộ nhớ.
Tiền boa: Bạn có thể quan tâm đến bài đăng này - 8 giải pháp hữu ích để sửa 100% CPU của bạn trong Windows 10 .
Nếu không có Quyền truy cập Bộ nhớ Trực tiếp, khi CPU sử dụng các đầu vào / đầu ra được lập trình, nó thường bị chiếm dụng hoàn toàn trong toàn bộ hoạt động đọc hoặc ghi, vì vậy nó không thể thực hiện các tác vụ khác. Với DMA, CPU đầu tiên bắt đầu quá trình truyền, sau đó thực hiện các hoạt động khác trong khi quá trình truyền đang diễn ra, và cuối cùng nhận được ngắt từ bộ điều khiển DMA (DMAC) khi hoạt động hoàn tất.
Truy cập bộ nhớ trực tiếp hữu ích bất cứ khi nào CPU không thể theo kịp tốc độ truyền dữ liệu hoặc khi CPU cần thực hiện công việc trong khi chờ truyền dữ liệu I / O tương đối chậm.
Nhiều hệ thống phần cứng sử dụng Quyền truy cập Bộ nhớ Trực tiếp, chẳng hạn như bộ điều khiển ổ đĩa, cạc đồ hoạ, cạc mạng và cạc âm thanh. DMA cũng được sử dụng để truyền dữ liệu trên chip trong các bộ xử lý đa lõi. So với máy tính không có kênh Truy cập bộ nhớ trực tiếp, máy tính có kênh DMA có thể truyền dữ liệu giữa các thiết bị với chi phí CPU ít hơn nhiều.
Truy cập Bộ nhớ Trực tiếp cũng có thể được sử dụng cho “bộ nhớ vào bộ nhớ” để sao chép hoặc di chuyển dữ liệu trong bộ nhớ. Nó có thể chuyển các hoạt động bộ nhớ đắt tiền (chẳng hạn như các bản sao lớn hoặc các hoạt động thu thập phân tán) từ CPU sang một công cụ DMA chuyên dụng. DMA rất quan trọng trong kiến trúc điện toán mạng trên chip và bộ nhớ.
Quyền truy cập bộ nhớ trực tiếp hoạt động như thế nào?
Sau đó, truy cập bộ nhớ trực tiếp hoạt động như thế nào? Truy cập bộ nhớ trực tiếp tiêu chuẩn (còn được gọi là DMA của bên thứ ba) sử dụng bộ điều khiển DMA. Bộ điều khiển DMA có thể tạo ra các địa chỉ bộ nhớ và khởi chạy các chu kỳ đọc hoặc ghi bộ nhớ. Nó bao gồm nhiều thanh ghi phần cứng có thể được đọc và ghi bởi CPU.
Các thanh ghi này bao gồm một thanh ghi địa chỉ bộ nhớ, một thanh ghi đếm byte và một hoặc nhiều thanh ghi điều khiển. Tùy thuộc vào các tính năng được cung cấp bởi bộ điều khiển Truy cập Bộ nhớ Trực tiếp, các thanh ghi điều khiển này có thể chỉ định một số kết hợp nguồn, đích, hướng truyền (đọc từ hoặc ghi vào thiết bị I / O), kích thước của đơn vị truyền và / hoặc số lượng byte để chuyển trong một loạt.
Để thực hiện các thao tác nhập, xuất hoặc chuyển bộ nhớ vào bộ nhớ, bộ xử lý chủ khởi tạo bộ điều khiển DMA với số lượng từ cần truyền và địa chỉ bộ nhớ sẽ sử dụng. Sau đó, CPU ra lệnh cho thiết bị ngoại vi bắt đầu truyền dữ liệu.
Sau đó, bộ điều khiển Truy cập Bộ nhớ Trực tiếp cung cấp địa chỉ và các dòng điều khiển đọc / ghi vào bộ nhớ hệ thống. Mỗi khi một byte dữ liệu được chuẩn bị để chuyển giữa thiết bị ngoại vi và bộ nhớ, bộ điều khiển DMA sẽ tăng thanh ghi địa chỉ bên trong của nó cho đến khi một khối dữ liệu hoàn chỉnh được chuyển.
Phương thức hoạt đông
Truy cập Bộ nhớ Trực tiếp hoạt động khác nhau trong các chế độ hoạt động khác nhau.
Chế độ chụp
Trong chế độ liên tục, toàn bộ khối dữ liệu được truyền theo một chuỗi liên tục. Khi CPU cho phép bộ điều khiển DMA truy cập vào bus hệ thống, bộ điều khiển DMA sẽ chuyển tất cả các byte dữ liệu trong khối dữ liệu trước khi giải phóng quyền điều khiển các bus hệ thống trở lại CPU, nhưng nó sẽ khiến CPU không hoạt động vì thời gian dài đáng kể. Chế độ này còn được gọi là “Chế độ chuyển khối”.
Chế độ ăn cắp chu kỳ
Chế độ đánh cắp chu kỳ được sử dụng trong một hệ thống mà CPU không thể bị vô hiệu hóa trong khoảng thời gian cần thiết cho chế độ truyền liên tục. Trong chế độ đánh cắp chu kỳ, bộ điều khiển DMA có được quyền truy cập vào bus hệ thống bằng cách sử dụng các tín hiệu BR (Bus Request) và BG (Bus Grant), các tín hiệu này giống như chế độ liên tục. Hai tín hiệu này điều khiển giao diện giữa CPU và bộ điều khiển DMA.
Một mặt, ở chế độ đánh cắp chu kỳ, tốc độ truyền khối dữ liệu không nhanh như ở chế độ liên tục, nhưng mặt khác, thời gian nhàn rỗi của CPU không lâu như ở chế độ liên tục.
Chế độ trong suốt
Chế độ trong suốt mất nhiều thời gian nhất để chuyển các khối dữ liệu, nhưng nó cũng là chế độ hiệu quả nhất về hiệu suất tổng thể của hệ thống. Ở chế độ trong suốt, bộ điều khiển Truy cập Bộ nhớ Trực tiếp chỉ truyền dữ liệu khi CPU thực hiện các hoạt động không sử dụng các bus hệ thống.
Ưu điểm chính của chế độ trong suốt là CPU không bao giờ ngừng thực thi các chương trình của nó và việc truyền Truy cập Bộ nhớ Trực tiếp là miễn phí về mặt thời gian, trong khi nhược điểm là phần cứng cần xác định khi nào CPU không sử dụng các bus hệ thống, điều này có thể phức tạp. Đây còn được gọi là “chế độ truyền dữ liệu DMA ẩn”.