Danh mục

Truy cập bộ nhớ trực tiếp Trong bài này chúng tôi sẽ giới thiệu cho các bạn

Số trang: 6      Loại file: pdf      Dung lượng: 138.47 KB      Lượt xem: 8      Lượt tải: 0    
Jamona

Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Truy cập bộ nhớ trực tiếp Trong bài này chúng tôi sẽ giới thiệu cho các bạn một số kiến trúc điển hình được sử dụng để thực thi truy cập bộ nhớ trực tiếp. Truy cập bộ nhớ trực tiếp (Direct Memory Access hay được viết tắt là DMA) là một thành phần quan trọng trong bất cứ kiến trúc máy tính hiện đại nào. DMA cho phép CPU chia tải (offload) các ngăn xếp bộ nhớ ngày càng chật trội sang các thành phần khác. Cách thức này giúp giải phóng CPU khỏi các công việc lặt vặt...
Nội dung trích xuất từ tài liệu:
Truy cập bộ nhớ trực tiếp Trong bài này chúng tôi sẽ giới thiệu cho các bạn Truy cập bộ nhớ trực tiếpTrong bài này chúng tôi sẽ giới thiệu cho các bạn một số kiến trúc điển h ìnhđược sử dụng để thực thi truy cập bộ nhớ trực tiếp.Truy cập bộ nhớ trực tiếp (Direct Memory Access hay đ ược viết tắt l à DMA)là một thành phần quan trọng trong bất cứ kiến trúc máy tính hiện đại nào.DMA cho phép CPU chia tải (offload) các ngăn xếp bộ nhớ ngày càng chật trộisang các thành phần khác. Cách thức này giúp giải phóng CPU khỏi các côngviệc lặt vặt và cung cấp nhiều chu trình (cycle) hơn để giải quyết các nhiệm vụphức tạp hơn.Cho ví dụ, có lẽ trong số các bạn sẽ có ng ười thích lưu bài viết này vào ổ cứngđể có thể đọc tham khảo sau này. Khi chọn thực hiện công việc này, bạn sẽ cầnphải chọn một địa điểm (location) nào đó để lưu trữ bài viết. Lúc này dữ liệuđược thu về bởi card mạng v à sau đó được định tuyến đến địa điểm mongmuốn trên ổ cứng của bạn. Một nhiệm vụ rất đơn giản và khả năng của CPUthừa cho các kiểu hoạt động nh ư vậy.Mặc dù ý tưởng chính của kỹ thuật truy cập bộ nhớ trực tiếp khá đơn giảnnhưng các hoạt động truy cập bộ nhớ một cách trực tiếp lại rất phức tạp. Bạncó thể hình dung, khi có nhiều thiết bị (hoặc ngoại vi) đều muốn truy cập đếncác vị trí của bộ nhớ thì vấn đề sẽ xảy ra. Đây là lý do hoặc yêu cầu cần có mộtDMA controller. DMA controller th ực chất là một thiết bị giúp điều khiển tấtcả các hoạt động DMA.Để điều khiển các hoạt động DMA, DMA controller cần phải có các thông tinliên quan với hoạt động sắp tới. Các thông tin này gồm có những thứ giốngnhư các địa chỉ nguồn và đích, chế độ, kích thước dữ liệu được truyền tải.DMA controller c ũng cần được trang bị kiến thức về những gì nó sẽ truyền tải,nơi truyền tải đến và cách truyền tải như thế nào, bao lâu để thực hiện côngviệc đó. Với kiến thức này, DMA controller có thể yêu cầu sự điều khiển busnhớ từ CPU. Khi CPU sẵn sàng nhường sự điều khiển của bus nhớ, nó sẽ gửi đimột tín hiệu phúc đáp ACK để đáp trả lại tín hiệu yêu cầu của DMA controller. Hình 1: Sự tương tác Direct Memory AccessBurst hay Single -cycleĐiều gì sẽ xảy ra sau khi DMA controller tăng điều khiển của bus nhớ ho àntoàn phụ thuộc vào chế độ DMA controller đã được chỉ thị từ trước. Có hai chếđộ hoạt động nói chung của DMA controller. Đầu ti ên là burst. Khi DMAcontroller hoạt động trong chế độ burst, nó sẽ duy trì sự điều khiển của bus nhớtrong khoảng thời gian truyền tải bộ nhớ. Nh ược điểm trong chế độ burst làCPU không thể truy cập vào bus nhớ cho tới khi DMA controller hoàn tất việctruyền tải bộ nhớ. Lúc này CPU vẫn có thể truy cập vào cache L1 và L2 của nónhưng không thể truy cập vào bộ nhớ khác; điều này đã hạn chế CPU trongviệc thực hiện nhiệm vụ và có thể khiến nó phải đợi cho tới khi DMAcontroller hoàn tất việc truyền tải bộ nhớ sau đó trả sự điều khiển bus nhớ vềlại cho mình.Để tránh tình huống CPU buộc phải đợi cho việc truy ên tải bộ nhớ hoàn tất,DMA controller có thể hoạt động trong chế độ khác mang tên single-cycle.Cách thức hoạt động trong chế độ single -cycle như sau, DMA controller sẽ trảsự điều khiển bus nhớ sau khi truyền tải xong mỗi block nhớ. Kích th ước củamỗi block nhớ này thường rơi vào cỡ 256 hoặc 512 byte. Điều này cho phépCPU có nhiều cơ hội sử dụng bus nhớ hơn cho các m ục đích riêng mà khôngcần phải đợi một số lượng thời gian khá lớn hoàn thành việc truyền tải bộ nhớnhư ở chế độ burst. Tuy nhiên vẫn có một nhược điểm đối với hoạt động củaDMA trong chế độ single-cycle này. Khi DMA controller trả quyền điều khiểnbus nhớ nó phải gửi một yêu cầu đến CPU để tăng quyền điều khiển bus, sauđó phải đợi tính hiệu phúc đáp ACK từ CPU tr ước khi có thể tăng điều khiểnlại bus nhằm thực hiện truyền tải các block nhớ khác. Nh ư vậy việc lặp đi lặplại nhiều lần chuỗi yêu cầu/ phúc đáp sẽ làm tiêu tốn thời gian hoàn thành quátrình truyền tải của bộ nhớ.Chế độ hoạt động single-cycle thường được sử dụng nhất mặc dù hầu hết cácDMA controller đều có thể đáp ứng cho cả hai chế độ. Chiều dài tối ưu củamỗi khối mà DMA sẽ truyền tải trước khi trả lại sự điều khiển cho bus và yêucầu lại quyền điều khiển là một vấn đề khá phức tạp. Một hệ số chính trongviệc xác định kích thước tối ưu của block là tốc độ lỗi quan sát được. Khi cótốc độ lỗi cao thì chiều dài của khối càng nhỏ sẽ càng tốt. Tuy nhiên cũng cầnbiết rằng, khi có ít lỗi do giảm chiều dài block thì chúng ta sẽ chịu tổn thất ởchỗ tăng các quá trình yêu cầu/ phúc đáp giữa DMA controller và CPU. Quyếtđịnh thực thi như thế nào là phụ thuộc vào mỗi nhà sản xuất DMA controller(đặc biệt là các kỹ sư thiết kế ra nó!). N ếu muốn biến cách xác định này nhưthế nào cho một DMA controller cụ thể, bạn có thể tìm kiếm nó ở đâu đó trongtài liệu, bằng không có thể y êu cầu từ công ty.Khi DMA controller đã hoàn tất quá trình truyền tải một block và trả lại sựđiều khiển của bus nhớ cho CPU, CPU lúc này sẽ có thể truy cập cập vào busđể thực hiện các mục đích riêng. Trong ví dụ chúng tôi sử dụng ở tr ên và trongnhiều ví dụ khác đã cung cấp cho CPU một cơ hội cập nhật các chỉ thị tiếntrình và cập nhật các thông tin mới có liên quan với hoạt động DMA đangđược thực hiện cho hệ thống file.Cache CoherencyMột vấn đề khác phát sinh trong quá trình hoạt động DMA đó là cachecoherency. Khi CPU truy cập một vị trí nhớ, giá trị của vị trí đó sẽ đ ược lưutrong cache nhớ của CPU. Nếu hoạt động DMA có li ên quan đến vị trí nhớ nàythì giá trị trong cache nhớ của CPU có thể không tương khớp với giá trị tại vịtrí nhớ thực.Để khắc phục vấn đề này, có hai giải pháp được đưa ra. Các hệ thống cố kếtcache toàn bộ cần phải thi hành một giải pháp phần cứng mà ở đó DMAcontroller sẽ gửi đi một tín hiệu đến cache controller khi nó mong muốn truycập vào vị trí nhớ. Nếu DMA muốn ghi vào vị trí đó, cache co ...

Tài liệu được xem nhiều:

Tài liệu cùng danh mục:

Tài liệu mới: