TLB và bộ đệm dữ liệu hoạt động như thế nào?


15

Tôi đang cố gắng học để kiểm tra và tôi nhận ra rằng tôi bối rối về cách TLB và bộ đệm dữ liệu hoạt động.

Tôi hiểu rằng TLB về cơ bản là bộ đệm của các địa chỉ vật lý được sử dụng gần đây nhất. Tuy nhiên, tôi đã xem một sơ đồ trong sách giáo khoa của mình (hiển thị bên dưới) và tôi không hiểu những gì đang diễn ra trong đó. Nó đột nhiên phân tách địa chỉ vật lý và sử dụng nó để lập chỉ mục bộ đệm, tôi đoán vậy. Nhưng tại sao nó lại hiển thị bộ đệm và dữ liệu riêng biệt? và tại sao phần bù byte chỉ còn lại nổi? Tôi khá chắc chắn rằng bộ nhớ cache được cho là cũng lưu trữ dữ liệu. Tôi không nghĩ mục đích duy nhất của nó là xác định liệu có một cú đánh hay bỏ lỡ bên trong nó hay không.

Tôi xin lỗi vì sự thiếu hiểu biết của tôi trước, nhưng cuốn sách hầu như không bao gồm TLB (nó giống như một trang nhỏ hơn một chút) và nó không làm tốt công việc giải thích mối quan hệ giữa TLB và bộ đệm.

Nhân vật


Câu hỏi này quá dài. Bạn có thể trích xuất một câu hỏi hẹp, cụ thể trong số này, và sau đó chỉnh sửa câu hỏi của bạn để cắt câu hỏi này thành một câu hỏi cụ thể không? Một phần của việc hỏi một câu hỏi hay bao gồm suy nghĩ cẩn thận về bản chất tối thiểu của những gì bạn cần biết và chỉ bao gồm những gì có liên quan và thiết yếu cho câu hỏi đó. Chẳng hạn, nếu bạn có một câu hỏi cụ thể về cách thức hoạt động của TLB, thay vì bỏ tất cả những điều này, làm thế nào về việc cố gắng tạo khung cho một câu hỏi được tạo ra hẹp trong một TLB?
DW

Được rồi, ý định của tôi là thể hiện những gì tôi đã hiểu về chủ đề này, vì hầu hết mọi người trên sàn giao dịch không thích trả lời câu hỏi mà không có người hỏi thể hiện một số nỗ lực (có thể hiểu được). Tôi đoán tôi không thể làm mọi người hài lòng. Có lẽ tôi sẽ chỉ chỉnh sửa nó với câu hỏi của tôi in đậm hoặc một cái gì đó.
audiFanatic

@DW có tốt hơn không?
audiFanatic

audiFanatic, bạn có thể đã hiểu sai hoặc hiểu sai ý kiến ​​của tôi và suy nghĩ "thể hiện một số nỗ lực". Đề nghị của tôi là bạn xác định một câu hỏi hẹp - đại loại như "TLB hoạt động như thế nào? Tôi không hiểu lắm" - và sau đó chỉ tập trung lại vào câu hỏi đó. Có, bạn cần nỗ lực nghiêm túc để trả lời câu hỏi đó và bạn nên thể hiện nỗ lực bạn đã làm để trả lời câu hỏi cụ thể đó , nhưng nỗ lực về một chủ đề không liên quan không liên quan (ví dụ, thực tế là bạn đã cố gắng hết sức để thực hiện tiến bộ về câu hỏi bài tập về nhà khiến bạn nghĩ đến câu hỏi này).
DW

Hãy để tôi giúp bạn hiểu nền tảng đằng sau này. Chúng tôi muốn xây dựng một kho lưu trữ chất lượng cao cho các câu hỏi và câu trả lời sẽ hữu ích cho người khác (không chỉ cho bạn). Điều tốt nhất bạn có thể làm để giúp đỡ là trích xuất một câu hỏi cụ thể, hẹp, được đặt ra và tập trung câu hỏi của bạn vào chỉ một câu hỏi đó. Một câu hỏi ngổn ngang, mở, không tập trung sẽ ít có ích cho những người khác có thể vấp phải nó (và người đọc cũng khó hiểu hơn và hiểu cốt lõi câu hỏi của bạn là gì, vì vậy bạn ít có khả năng nhận được một câu trả lời tốt).
DW

Câu trả lời:


23

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.)


1
Cảm ơn bạn! Điều đó đã xóa hầu hết mọi thứ. Tôi đã dành rất nhiều thời gian để nghiên cứu về điều này (vài ngày), tôi chỉ không thể tìm thấy một thông tin rõ ràng, ngắn gọn gắn kết tất cả lại với nhau (cộng với sự nhầm lẫn của tôi có lẽ không giúp ích cho việc tìm kiếm của tôi). Tương tự như vậy, tôi cảm thấy như mình đang ở trong một hiệu thuốc đang tìm cách chữa trị cho một số bệnh không được chẩn đoán; chỉ sử dụng các triệu chứng như một hướng dẫn.
audiFanatic

Với những gì đã nói, tôi có thêm một câu hỏi. Nếu chúng là bộ nhớ cache, tại sao cuốn sách phân tách các phần dữ liệu và thẻ của bộ đệm (địa ngục, phần dữ liệu thậm chí cao hơn thẻ và phần bit hợp lệ)? Có vẻ như bộ đệm không phục vụ gì ngoài việc kiểm tra thẻ (như thể nó không lưu trữ dữ liệu). Là khối dữ liệu ở góc dưới bên phải của phần hình ảnh của bộ đệm hay đó là một phần của bộ nhớ chính hay là gì?
audiFanatic

1
VPV+1P+1V+2P+2V+4095P+4095

TôiTôiTôi

Tuyệt. Cảm ơn. Tôi đoán đó là sự chia ly khiến tôi bối rối nhất.
audiFanatic
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.