2013-09-07 89 views
7

Tôi thực sự là người mới khởi động Cortex A và tôi biết ARM áp dụng mô hình bộ nhớ được đặt hàng yếu và có ba loại bộ nhớ loại trừ lẫn nhau:[ARM CortexA] Sự khác biệt giữa loại bộ nhớ được đặt hàng và thiết bị

  • mạnh theo lệnh
  • Device
  • Bình thường

tôi khoảng hiểu những gì bình thường là cho và những gì mạnh mẽ theo lệnh và thiết bị có ý nghĩa. Tuy nhiên sự khác biệt giữa đặt hàng mạnh mẽ và thiết bị gây nhầm lẫn cho tôi.

Theo hướng dẫn Cortex-A Series Programmer, sự khác biệt duy nhất là:

Một ghi vào mạnh theo lệnh bộ nhớ có thể hoàn thành chỉ khi nó đạt đến thành phần ngoại vi hay bộ nhớ truy cập bởi các ghi.

Ghi vào bộ nhớ thiết bị được phép hoàn thành trước khi nó đạt đến thành phần ngoại vi hoặc bộ nhớ được truy cập bằng ghi.

Tôi không hoàn toàn chắc chắn về ý nghĩa thực sự của việc này. Tôi đoán rằng, thứ tự truy cập vào bộ nhớ được đánh máy với lệnh được đặt mạnh hoặc Thiết bị phải được kết hợp với mã của người lập trình (không có quyền truy cập không theo thứ tự). Nhưng CPU sẽ có khả năng thực hiện lệnh tiếp theo trong khi truy cập vào bộ nhớ nếu gõ thiết bị, và nó sẽ chỉ đơn giản là chờ cho đến khi truy cập được hoàn thành nếu gõ mạnh được lệnh.

Sửa lỗi nếu tôi sai và vui lòng cho tôi biết ý nghĩa của việc này là gì.

Xin cảm ơn trước.

Trả lời

6

Một điều quan trọng cần hiểu là các loại bộ nhớ có không hiệu lực được bảo đảm trên toàn bộ luồng lệnh - chúng chỉ ảnh hưởng đến thứ tự truy cập bộ nhớ. (Chúng có thể có tác động cụ thể đối với một bộ xử lý cụ thể được tích hợp theo một cách cụ thể với một kết nối cụ thể - nhưng điều đó không bao giờ có thể được dựa vào bằng phần mềm.)

Một điều quan trọng cần hiểu là ngay cả bộ nhớ được yêu cầu mạnh mẽ cũng cung cấp ngầm định đảm bảo đặt hàng chỉ liên quan đến truy cập vào cùng một thiết bị ngoại vi. Bất kỳ yêu cầu đặt hàng nào nghiêm ngặt hơn yêu cầu sử dụng các hướng dẫn rào cản rõ ràng.

Điểm quan trọng thứ ba là bất kỳ thứ tự truy cập bộ nhớ ngầm nào diễn ra do các loại bộ nhớ không ảnh hưởng đến thứ tự truy cập vào các loại bộ nhớ khác. Một lần nữa, nếu ứng dụng của bạn có các phụ thuộc như thế này, các hướng dẫn rào cản rõ ràng là bắt buộc.

Bây giờ, dựa trên nền tảng đó - cách đơn giản hơn để mô tả sự khác biệt giữa Thiết bị và bộ nhớ được sắp xếp mạnh là các truy cập bộ nhớ thiết bị có thể được đệm - trong bộ xử lý hoặc trong kết nối. Sự khác biệt là một truy cập đệm có thể được báo hiệu là hoàn thành cho bộ vi xử lý trước khi nó đã hoàn thành (hoặc thậm chí được khởi tạo) ở điểm cuối. Điều này mang lại hiệu suất tốt hơn với chi phí mất báo cáo đồng bộ về bất kỳ điều kiện lỗi nào.

+0

vì vậy @unixsmurf trong quan điểm của bạn những gì nên được sử dụng cho thiết bị MMIO regs nói GIC? từ lời giải thích tôi nghĩ rằng nó nên được đặt hàng mạnh mẽ cho gic, phải không?xin vui lòng bình luận – mSO

+0

@mSO: Bộ nhớ thiết bị là tùy chọn hiệu quả nhất - vì nó cho phép sử dụng tính năng ghi đệm. Đặt hàng mạnh mẽ cũng sẽ có chức năng chính xác, nhưng có thể ảnh hưởng đến hiệu suất tiêu cực. – unixsmurf

+0

unixsmurf Tôi đã đăng một câu hỏi trên các dòng tương tự mà ở đây http://stackoverflow.com/questions/20265729/stage-2-memattr-long-descriptor-arm-pte-query bạn có thể vui lòng bình luận về nó, cảm ơn – mSO