2012-05-04 34 views
19

Ai đó có thể giải thích sự khác biệt giữa một bộ đệm TLB (Translation lookaside buffer) và một bộ nhớ cache bỏ lỡ?TLB bỏ lỡ và bộ nhớ cache bị lỡ?

Tôi tin rằng tôi phát hiện ra TLB đề cập đến một số loại địa chỉ bộ nhớ ảo nhưng tôi không quá rõ ràng điều này thực sự có ý nghĩa gì?

Tôi hiểu kết quả nhớ cache khi một khối bộ nhớ (kích thước của một đường bộ nhớ cache) được tải vào bộ nhớ cache (L3?) Và nếu địa chỉ được yêu cầu không được giữ trong các dòng bộ nhớ cache hiện tại. .

+1

Hiểu phân trang http://stackoverflow.com/a/18431262/895245 và xem phần TLB. –

Trả lời

26

Vâng, tất cả các hệ điều hành hiện đại ngày nay đều sử dụng thứ gọi là bộ nhớ ảo. Mỗi địa chỉ được tạo ra bởi CPU là ảo. Có các bảng trang ánh xạ các địa chỉ ảo đó đến địa chỉ vật lý. Và TLB chỉ là một bộ nhớ cache của các mục bảng trang.

Mặt khác L1, L2, L3 lưu trữ cache nội dung bộ nhớ chính.

Thiếu TLB xảy ra khi ánh xạ virtual memory address => physical memory address cho CPU yêu cầu địa chỉ ảo không có trong TLB. Sau đó, mục nhập đó phải được tìm nạp từ bảng trang vào TLB.

Thiếu bộ nhớ cache xảy ra khi CPU yêu cầu thứ gì đó không có trong bộ nhớ cache. Dữ liệu sau đó được tìm kiếm trong bộ nhớ chính (RAM). Nếu nó không có, dữ liệu phải được lấy từ bộ nhớ thứ cấp (đĩa cứng).

+0

Mục đích của địa chỉ bộ nhớ ảo là gì và nó thực sự là gì, vẫn là bộ nhớ chính (RAM)? – mezamorphic

+5

Vâng, các CPU 32 bit trước đó được sử dụng để tạo ra các địa chỉ 32 bit ~ 4GB bộ nhớ địa chỉ. Nhưng lượng RAM thường ít hơn 4GB. Bây giờ, nếu bạn có RAM 1 GB, bạn không thể chạy chương trình cần nhiều hơn 1 GB bộ nhớ địa chỉ. Vậy tại sao không đánh lừa chương trình tin rằng bạn có RAM 4GB? Chỉ một phần dữ liệu chương trình nằm trong RAM và phần còn lại trong ổ cứng. Đó là những gì bộ nhớ ảo làm. Bạn có thể đọc tất cả về nó trong [bài viết Wikipedia] này (http://en.wikipedia.org/wiki/Virtual_memory). CPU 64 bit hiện tại cũng sử dụng bộ nhớ ảo. Chỉ có chiều dài địa chỉ ảo bây giờ là 48 bit. – Hindol

2

Trình tự sau đây sau khi tải địa chỉ hướng dẫn đầu tiên (tức là địa chỉ ảo) trong PC làm cho khái niệm về bỏ lỡ và bộ nhớ cache của TLB rất rõ ràng.

Các hướng dẫn đầu tiên • Truy cập vào hướng dẫn đầu tiên

  • Lấy PC bắt đầu
  • Tiếp cận iTLBwith VPN chiết xuất từ ​​PC: iTLBmiss
  • Gọi iTLBmiss xử lý địa chỉ
  • Tính PTE
  • Nếu PTEsare được lưu trong dữ liệu L1 và cache L2, hãy tìm chúng bằng địa chỉ PTE: bạn sẽ bỏ lỡ ở đó
  • bảng Truy cập trang trong bộ nhớ chính: PTE không hợp lệ: lỗi trang
  • xử lý lỗi trang
  • Gọi
  • Phân bổ khung trang, đọc trang từ đĩa, cập nhật PTE, PTE tải trong iTLB, khởi động lại lấy • Bây giờ bạn có địa chỉ vật lý

  • Tiếp cận ICache: bỏ lỡ

  • Gửi nạp tiền yêu cầu đến mức độ cao hơn: bạn bỏ lỡ ở khắp mọi nơi
  • Gửi yêu cầu đến bộ điều khiển bộ nhớ (cầu bắc)
  • truy cập bộ nhớ chính
  • đọc dòng bộ nhớ cache
  • Refill tất cả các cấp bộ nhớ cache như dòng bộ nhớ cache trở về bộ vi xử lý
  • Giải nén hướng dẫn thích hợp từ dòng bộ nhớ cache với khối bù đắp • Đây là độ trễ dài nhất có thể trong một truy cập hướng dẫn/data

nguồn https://software.intel.com/en-us/articles/recap-virtual-memory-and-cache

0

Khi CÁCH cả các quá trình được đề cập. Trên lưu ý về hiệu suất, một bộ nhớ cache bỏ lỡ không nhất thiết phải ngăn chặn CPU. Một số lượng nhỏ các cache nhớ có thể được dung thứ bằng cách sử dụng các kỹ thuật tìm nạp trước thuật toán. Một TLB bỏ lỡ tuy nhiên làm cho CPU để gian hàng cho đến khi TLB đã được cập nhật với địa chỉ mới. Nói cách khác, việc tìm nạp trước có thể che giấu bộ nhớ cache nhưng không phải là lỗi TLB.

+0

Điều này không đúng. Với việc thực hiện out-of-order và phần cứng trang bảng đi bộ (x86, ARM, một số MIPS Release 5, vv) một TLB bỏ lỡ có thể không ngay lập tức gian hàng xử lý. Hơn nữa, các tài liệu học thuật đã đề xuất phần cứng tìm nạp trước cho TLBs. Nó cũng sẽ có thể cho một bộ xử lý để tìm nạp trước các mục TLB với một lệnh tìm nạp bộ nhớ thông thường. –

Các vấn đề liên quan