2014-11-23 15 views
40

Sự hiểu biết của tôi là sự khác biệt chính giữa hai phương pháp là trong dữ liệu phương thức "ghi qua" được ghi vào bộ nhớ chính thông qua bộ nhớ cache ngay lập tức, trong khi dữ liệu "ghi lại" được viết trong "thời gian sau".Ghi lại và Viết qua

Chúng tôi vẫn cần phải chờ bộ nhớ trong "thời gian sau", vậy lợi ích của việc "ghi đè" là gì?

+0

@EricWang Tôi nghĩ rằng bạn có nghĩa là 'viết lại' có hiệu suất tốt hơn? – wlnirvana

+0

@wlnirvana Có, bạn nói đúng, đó là lỗi văn thư của tôi. Tôi sẽ loại bỏ nó, và đưa vào một bình luận mới ở đây để tránh gây hiểu lầm trong tương lai. –

+2

Đơn giản chỉ cần đặt, 'write back' có hiệu suất tốt hơn, vì ghi vào bộ nhớ chính chậm hơn nhiều so với ghi vào bộ nhớ cache cpu, và dữ liệu có thể ngắn (có thể thay đổi lại sớm hơn và không cần phải đưa phiên bản cũ vào bộ nhớ). Nó phức tạp, nhưng phức tạp hơn, hầu hết bộ nhớ trong cpu hiện đại sử dụng chính sách này. –

Trả lời

44

Lợi ích của việc ghi vào bộ nhớ chính là nó đơn giản hóa thiết kế của hệ thống máy tính. Với quá trình ghi, bộ nhớ chính luôn có bản sao cập nhật của dòng. Vì vậy, khi đọc xong, bộ nhớ chính luôn có thể trả lời bằng dữ liệu được yêu cầu.

Nếu ghi lại được sử dụng, đôi khi dữ liệu cập nhật nằm trong bộ nhớ cache của bộ xử lý và đôi khi nó nằm trong bộ nhớ chính. Nếu dữ liệu nằm trong bộ nhớ cache của bộ xử lý, thì bộ xử lý đó phải dừng bộ nhớ chính để trả lời yêu cầu đọc, vì bộ nhớ chính có thể có một bản sao cũ của dữ liệu. Điều này phức tạp hơn là viết qua.

Ngoài ra, quá trình ghi có thể đơn giản hóa giao thức kết hợp bộ nhớ cache vì không cần trạng thái Sửa đổi trạng thái. Sửa đổi hồ sơ nhà nước rằng bộ nhớ cache phải ghi lại dòng bộ nhớ cache trước khi nó làm mất hiệu lực hoặc trục xuất dòng. Trong ghi thông qua một dòng bộ nhớ cache luôn luôn có thể bị vô hiệu mà không cần viết trở lại kể từ khi bộ nhớ đã có một bản sao up-to-date của dòng.

Một điều nữa - trên phần mềm kiến ​​trúc ghi lại ghi vào bộ ghi I/O được ánh xạ bộ nhớ phải thực hiện các bước bổ sung để đảm bảo rằng các ghi được gửi ngay lập tức ra khỏi bộ đệm. Nếu không, việc ghi sẽ không hiển thị bên ngoài lõi cho đến khi dòng được đọc bởi một bộ xử lý khác hoặc dòng bị loại bỏ.

+4

Đối với I/O được ánh xạ bộ nhớ, các địa chỉ này thường được ánh xạ dưới dạng uncached. Viết qua cũng có thể được sử dụng để tăng độ tin cậy (ví dụ: nếu L1 chỉ có bảo vệ tính chẵn lẻ và L2 có ECC). Viết thông qua cũng phổ biến hơn đối với các bộ nhớ đệm nhỏ hơn sử dụng no-write-allocate (nghĩa là ghi nhớ không phân bổ block cho cache, có khả năng giảm nhu cầu dung lượng L1 và băng thông điền L2/L1) vì phần lớn phần cứng yêu cầu viết qua đã có mặt để viết xung quanh. –

+1

là nó có thể kiểm tra xem phương pháp bộ nhớ cache của tôi trong lõi của tôi là viết lại hoặc viết thông qua? – Shaowu

+2

Có thể gây nhầm lẫn khi nói rằng việc ghi lại phức tạp hơn vì bộ xử lý phải dừng bộ nhớ chính để trả lời yêu cầu đọc. Đó là moreso rằng bộ nhớ cache theo dõi những dữ liệu là dữ liệu (không phù hợp với bộ nhớ chính) và những gì không bằng cách sử dụng "bit bẩn (s)", do đó nó có thể không kiểm tra bộ nhớ chính ở tất cả. – steviejay

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