2012-01-24 18 views
8

Có hướng dẫn thích hợp giải thích cách sử dụng các bảng TLB (Translation Lookaside Buffers) trên một lõi ARM1176JZF-S không?Sử dụng Bộ đệm Bản dịch Bộ dò tìm Bản dịch ARM11 (TLB)?

Sau khi nhìn qua các tài liệu kỹ thuật cho nền tảng ARM mà tôi vẫn không có đầu mối những gì một TLB là hoặc những gì nó trông như thế nào. Theo như tôi hiểu, mỗi mục TLB ánh xạ một trang ảo đến một trang vật lý, cho phép ánh xạ lại và kiểm soát các quyền bộ nhớ.

Ngoài ra, tôi hoàn toàn không có đầu mối về cách sử dụng chúng.

  • Mục nhập TLB có cấu trúc nào? Làm cách nào để tạo mục nhập mới?
  • Làm cách nào để xử lý VM trong các chuyển đổi ngữ cảnh cho các luồng không gian người dùng? Làm cách nào để đảm bảo rằng các chuỗi chỉ có thể truy cập các trang cụ thể được gán cho quy trình gốc của chúng (thi hành bảo vệ bộ nhớ)? Tôi có lưu trạng thái TLB cho mỗi ngữ cảnh không?
  • Tại sao có hai TLB? Tôi có thể sử dụng MicroTLB nếu nó chỉ có thể có 10 mục? Chắc chắn, tôi cần nhiều hơn 10.
  • Nó nói rằng một trong những phần của TLB chính là "một mảng liên kết đầy đủ gồm tám phần tử, có thể khóa được". Đó là gì? Tôi chỉ nhận được 8 mục cho TLB chính?

Cảm ơn bạn trước. Tôi sẽ rất vui nếu ai đó cung cấp giải thích về TLB là gì. Tôi hiện đang làm việc trên một người lập bản đồ bộ nhớ cho hạt nhân của tôi, và tôi đã khá nhiều hit một kết thúc chết.

+0

Bạn có đang viết hệ điều hành của riêng mình không? Nếu bạn đang sử dụng một hệ điều hành hiện có, họ sẽ chăm sóc những chi tiết này cho bạn. Bạn có thể cần phải thiết lập 1-2 TLB bằng tay trong khi khởi động nhưng sau đó hạt nhân hệ điều hành sẽ chăm sóc nó. – gravitron

+0

@gravitron Tôi đang chuyển một hạt nhân hiện có (Darwin) sang nền tảng ARM. Hạt nhân dựa vào một tập hợp các hàm HAL tóm tắt tất cả các tương tác với nền tảng (quản lý bộ nhớ vật lý, chuyển ngữ cảnh, bộ đệm, ngoại lệ, v.v.) –

+0

Câu trả lời đơn giản là ** TLB ** là ** ** ** trang bảng dưới dạng bộ nhớ cache ** ** là ** bộ nhớ **; I E. ** TLB ** là một bộ nhớ cache ** MMU **. micro-TLB -> L1 cache, vv Thật thú vị, hành vi VIVT/PIPT vv của cache có thể sẽ ảnh hưởng đến hoạt động của TLB như được mô tả bởi * ninjalj *. –

Trả lời

15

Các tài liệu tham khảo hướng dẫn kỹ thuật cho ARM1176JZF-S dường như là DDI 0301. Tài liệu đó chứa tất cả các chi tiết cụ thể cho rằng cốt lõi ARM cụ thể.

Tôi vẫn không biết đầu mối TLB là gì hoặc trông như thế nào. Theo như tôi hiểu, mỗi mục TLB ánh xạ một trang ảo đến một trang vật lý, cho phép ánh xạ lại và kiểm soát các quyền bộ nhớ.

TLB là bộ nhớ cache của bảng trang. Một số bộ xử lý cho phép truy cập trực tiếp vào TLB, trong khi không biết gì về bảng trang (ví dụ: MIPS), trong khi những người khác biết về bảng trang và sử dụng TLB nội bộ mà người lập trình hầu như không thấy (ví dụ: x86). Trong trường hợp này, TLB được quản lý bởi phần cứng, và lập trình viên hệ thống chỉ phải quan tâm để làm cho các thanh ghi TTB (Bảng dịch cơ sở) trỏ đến bảng trang, và làm mất hiệu lực TLB ở những nơi thích hợp.

Mục nhập TLB có cấu trúc gì? Làm cách nào để tạo mục nhập mới?

Được thực hiện theo phần cứng. Trên một TLB bỏ lỡ, MMU đi bảng trang và điền TLB từ đó.

Làm cách nào để xử lý VM trong các công tắc ngữ cảnh cho các luồng không gian người dùng?

Một số nền tảng có TLBs mà chỉ đơn giản bản đồ địa chỉ ảo thành địa chỉ vật lý (ví dụ: x86). Trên các nền tảng này, bạn phải thực hiện tuôn ra TLB đầy đủ trên mỗi công tắc ngữ cảnh. Các nền tảng khác (MIPS, lõi ARM cụ thể này) bản đồ (ASID, địa chỉ ảo) cặp đến địa chỉ vật lý. ASID là Mã định danh dành riêng cho ứng dụng, nghĩa là: số nhận dạng cho một quy trình. MMU sử dụng thanh ghi để biết ASID nào sử dụng (tôi nghĩ đó là đăng ký ID ngữ cảnh trong trường hợp này). Vì có thể có nhiều quy trình hơn ASID, đôi khi bạn có thể cần phải tái chế một ASID (gán nó cho một quy trình khác) và thực hiện tuôn ra TLB (đó là những gì mà TLB không hợp lệ hóa bằng thao tác ASID).

Tại sao có hai TLB? Tôi có thể sử dụng MicroTLB nếu nó chỉ có thể có 10 mục? Chắc chắn, tôi cần nhiều hơn 10.

Đây chính xác là lý do giống như bạn có bộ đệm mức 1 riêng biệt nhỏ để được hướng dẫn và dữ liệu. Vì chúng là bộ đệm, bạn không cần cần hơn 10 (mặc dù có nhiều hơn có thể cải thiện hiệu suất).

Nó nói rằng một trong các phần của TLB chính là "một mảng liên kết đầy đủ gồm tám phần tử, có thể khóa". Đó là gì? Tôi chỉ nhận được 8 mục cho TLB chính?

Một số trang bộ nhớ (ví dụ: một số phần của hạt nhân) được truy cập thường xuyên. Nó có ý nghĩa để khóa chúng, vì vậy chúng không bị ném ra khỏi TLB. Ngoài ra, trên các hệ thống thời gian thực, một TLB bỏ lỡ hoặc một bộ nhớ cache bỏ lỡ có thể giới thiệu một số không mong muốn không mong muốn. Vì vậy, có một tùy chọn để khóa một số mục TLB. TLB chính có nhiều mục hơn, nhưng chỉ có 8 mục có thể khóa được.

+0

Câu trả lời hay. Cảm ơn bạn rất nhiều! –

+0

Cảm ơn bạn đã biết chi tiết ARM ACID ASID là gì. Có vẻ như các tên miền * cũ hơn * và * PID *. –