Tôi nghĩ rằng tôi thấy sự nhầm lẫn của bạn. TLB và bộ đệm dữ liệu là hai cơ chế riêng biệt. Cả hai đều là bộ nhớ cache của một loại, nhưng chúng lưu trữ những thứ khác nhau:
↦
Do đó, TLB hoạt động như một bộ đệm chuyên dụng cho việc tra cứu này. TLB có một vài mục nhập TLB, trong đó mỗi mục nhập TLB chứa cả địa chỉ ảo và địa chỉ vật lý tương ứng.
TLB cho phép bộ xử lý chuyển đổi nhanh chóng các địa chỉ ảo thành địa chỉ vật lý. Nếu một lệnh yêu cầu bộ xử lý thực hiện một số thao tác bộ nhớ trên địa chỉ (ảo), trước tiên bộ xử lý sẽ kiểm tra xem TLB có chứa mục nhập cho địa chỉ ảo đó không. Nếu đúng như vậy, thì đó được gọi là "bộ nhớ cache" để tra cứu TLB và vì mục nhập TLB cũng chứa địa chỉ vật lý được dịch, bộ xử lý sẽ biết ngay địa chỉ vật lý nào sẽ sử dụng. Nếu không, đó là lỗi bộ nhớ cache cho tra cứu TLB và bộ xử lý phải thực hiện chuyển đổi ảo thành vật lý bằng cách đi bộ bảng trang. (Sau khi hoàn thành việc chuyển đổi đó, nó sẽ thêm một mục vào TLB để chuyển đổi trong tương lai của địa chỉ ảo đó sẽ diễn ra nhanh hơn nhiều.)
Bộ đệm dữ liệu là bộ đệm cho nội dung của bộ nhớ. Bộ nhớ chính cho phép bạn chỉ định một địa chỉ vật lý và đọc giá trị tại địa chỉ vật lý đó. Tuy nhiên, bộ nhớ chính chậm. Nếu chúng tôi phải vào bộ nhớ chính mỗi lần chúng tôi muốn thực hiện bất kỳ thao tác bộ nhớ nào, bộ xử lý của chúng tôi sẽ rất chậm.
Do đó, bộ đệm dữ liệu hoạt động như một bộ đệm chuyên dụng để đọc bộ nhớ. Bộ đệm dữ liệu có một số mục bộ đệm, trong đó mỗi mục bộ đệm chứa một địa chỉ vật lý và giá trị của bộ nhớ tại địa chỉ đó.
Bộ đệm dữ liệu cho phép bộ xử lý đọc rất nhanh từ bộ nhớ. Khi bộ xử lý muốn đọc bộ nhớ tại một số địa chỉ (vật lý), trước tiên, nó sẽ kiểm tra bộ đệm dữ liệu để xem liệu nó có chứa một mục bộ đệm cho địa chỉ đó không. Nếu đúng như vậy, đây được gọi là "bộ nhớ cache" (trong bộ đệm dữ liệu) và bộ xử lý có thể sử dụng ngay giá trị dữ liệu được lưu trong mục bộ đệm đó mà không cần liên hệ với bộ nhớ chính. Nếu không, thì đây là "lỗi bộ nhớ cache" (đối với bộ đệm dữ liệu) và bộ xử lý cần chuyển đến bộ nhớ chính. (Sau khi bộ xử lý nhận giá trị tại địa chỉ đó từ bộ nhớ chính, nó sẽ thêm mục nhập bộ đệm vào bộ đệm dữ liệu để các nỗ lực đọc cùng địa chỉ đó sẽ xuất hiện trong bộ đệm dữ liệu.)
Cả hai đều là bộ nhớ cache, nhưng chúng phục vụ một mục đích khác nhau. Bộ xử lý sử dụng cả hai cho từng hoạt động của bộ nhớ: trước tiên, nó sử dụng TLB để chuyển đổi từ địa chỉ ảo sang địa chỉ vật lý, sau đó nó kiểm tra bộ đệm dữ liệu để tăng tốc quá trình đọc giá trị được lưu trong bộ nhớ tại địa chỉ đó.
Để biết thêm chi tiết, bạn có thể đọc bài viết Wikipedia về TLB . Nếu bạn thực hiện tìm kiếm, có rất nhiều thông tin khác có sẵn về TLB và bộ đệm dữ liệu. Tôi khuyên bạn nên tìm kiếm "TLB" và "Bộ đệm L1" hoặc "Bộ đệm L2" (2 cái sau là các loại bộ đệm dữ liệu).
(Để tham khảo trong tương lai: chúng tôi hy vọng bạn thực hiện một số nghiên cứu về câu hỏi của mình trước khi hỏi tại đây và kiểm tra các nguồn Internet tiêu chuẩn. Nếu câu trả lời có thể được tìm thấy trong Wikipedia, bạn đã tự mình thực hiện đủ nghiên cứu. may mắn hơn nếu bạn đã kiểm tra các nguồn Internet để biết thông tin về cách TLB trước khi hỏi tại đây. Xem thêm Bao nhiêu nỗ lực nghiên cứu của người dùng Stack Overflow ? . Vì vậy, hãy tận dụng cơ hội này để làm bài học cho cách bạn có thể cải thiện chính mình kỹ năng nghiên cứu - thứ gì đó sẽ có giá trị với bạn trong suốt sự nghiệp của bạn.)