Sự khác biệt giữa bộ đệm và bộ đệm là gì?


Câu trả lời:


11

Từ bài viết của Wikipedia về bộ đệm dữ liệu :

bộ đệm là một vùng lưu trữ bộ nhớ vật lý được sử dụng để tạm thời giữ dữ liệu trong khi nó đang được di chuyển từ nơi này sang nơi khác

Một bộ đệm kết thúc việc đạp xe xuyên qua và giữ từng đoạn dữ liệu được truyền từ vị trí lưu trữ này sang vị trí lưu trữ khác (như khi sử dụng bộ đệm tròn trong xử lý âm thanh). Một bộ đệm chỉ cho phép điều đó - một "bộ đệm" dữ liệu trước và sau vị trí hiện tại của bạn trong luồng dữ liệu.

Thật vậy, có một số khía cạnh phổ biến của bộ đệm và bộ đệm. Tuy nhiên, bộ đệm theo nghĩa thông thường thường không lưu trữ tất cả dữ liệu khi nó được di chuyển từ nơi này sang nơi khác (tức là bộ đệm CPU).

Mục đích của bộ đệm là lưu trữ dữ liệu một cách minh bạch, sao cho vừa đủ dữ liệu được lưu vào bộ đệm để dữ liệu còn lại có thể được chuyển mà không bị phạt hiệu năng. Trong ngữ cảnh này, bộ đệm chỉ "tìm nạp trước" một lượng nhỏ dữ liệu (tùy thuộc vào tốc độ truyền, kích thước bộ đệm, v.v ...).

Sự khác biệt chính là bộ đệm cuối cùng sẽ chứa tất cả dữ liệu. Ngược lại, bộ đệm có thể chứa tất cả, một số hoặc không có dữ liệu (tùy thuộc vào thiết kế). Tuy nhiên, bộ đệm được truy cập như thể bạn đang truy cập trực tiếp vào dữ liệu ở vị trí đầu tiên - chính xác những gì được lưu trong bộ nhớ cache là trong suốt đối với "người dùng" của bộ đệm.


Sự khác biệt là trong giao diện . Khi bạn đang sử dụng bộ đệm để truy cập nguồn dữ liệu, bạn sử dụng nó như thể bộ đệm nguồn dữ liệu - bạn có thể truy cập mọi phần của nguồn dữ liệu thông qua bộ đệm và bộ đệm sẽ xác định dữ liệu đến từ đâu ( bộ nhớ cache chính nó, hoặc nguồn). Bản thân bộ đệm xác định phần nào của dữ liệu cần tải trước (thường chỉ là phần đầu, nhưng đôi khi là tất cả), trong khi thuật toán thay thế bộ đệm được sử dụng sẽ xác định những gì / khi mọi thứ được xóa khỏi bộ đệm. Ví dụ tốt nhất về điều này là một hệ thống, ngoài chính bộ đệm của CPU , là trình tải trước / readahead. Cả hai đều tải các phần dữ liệu mà họ nghĩ rằng bạn sẽ sử dụng nhiều nhất vào bộ nhớ và trở lại ổ cứng nếu có gì đó không được lưu trong bộ nhớ cache.

Ngược lại, bộ đệm không thể được sử dụng để di chuyển tức thời vị trí của bạn trong luồng dữ liệu, trừ khi phần mới đã được chuyển sang bộ đệm. Để làm như vậy sẽ yêu cầu bộ đệm di dời (với vị trí mới vượt quá chiều dài bộ đệm), yêu cầu bạn phải "khởi động lại" bộ đệm từ một vị trí mới. Ví dụ tốt nhất về điều này là di chuyển thanh trượt trong video Youtube.

Một ví dụ khác về bộ đệm là phát lại âm thanh trong Winamp. Vì các tệp âm thanh cần được giải mã bởi CPU, nên phải mất một thời gian giữa khi bài hát được đọc, đến khi âm thanh được xử lý, khi nó được gửi đến card âm thanh của bạn. Winamp sẽ đệm một số dữ liệu âm thanh để có đủ dữ liệu âm thanh được xử lý để tránh mọi "khóa" (tức là CPU luôn chuẩn bị âm thanh bạn sẽ nghe trong vài trăm mili giây, không bao giờ là thời gian thực ; những gì bạn nghe được đến từ bộ đệm, đó là những gì CPU đã chuẩn bị trong quá khứ).


Tôi lấy ví dụ trong Youtube của bạn nếu video đã được đệm hoàn toàn tức là được tải xuống thiết bị của bạn, nó chỉ được lưu vào bộ nhớ cache và bạn không phải tìm vị trí mới mỗi khi bạn di chuyển slide trừ khi bạn làm mới trang hoặc tải lại video. Điều đó có đúng không?
PeanutsMonkey

@PeanutsMonkey chính xác, video Youtube được tải trực tiếp vào bộ nhớ cache của trình duyệt của bạn khi nó đang được đệm. Bộ đệm trong trường hợp này chỉ đơn giản là một thuật ngữ cấp cao, vì bạn luôn xem những gì hiện đang nằm trong bộ đệm. Khi video được đệm, nó được chuyển sang bộ đệm (chúng có chung vị trí thực tế). Tôi đã cập nhật câu trả lời với một ví dụ khác về bộ đệm, trong bối cảnh trình phát âm thanh.
Đột phá

2
phiên bản tl; dr: Nếu bạn muốn lấy dữ liệu ra khỏi nó càng nhanh càng tốt, đó là một bộ đệm. Nếu bạn muốn giữ dữ liệu trong đó càng lâu càng tốt, đó là bộ đệm.
David Schwartz

10

Sẽ chính xác hơn khi nói rằng bộ đệm là một kiểu sử dụng cụ thể của bộ đệm, ngụ ý nhiều lần sử dụng của cùng một dữ liệu. Hầu hết việc sử dụng "bộ đệm" ngụ ý rằng dữ liệu sẽ bị cạn kiệt hoặc bị loại bỏ sau một lần sử dụng (mặc dù điều này không nhất thiết phải như vậy), trong khi "bộ đệm" ngụ ý rằng dữ liệu sẽ được sử dụng lại nhiều lần. Bộ nhớ đệm cũng thường ngụ ý rằng dữ liệu được lưu trữ vì nó cũng đang được sử dụng đồng thời, mặc dù điều này không nhất thiết phải như vậy (như trong quá trình tìm nạp trước và tương tự), trong khi bộ đệm ngụ ý rằng dữ liệu sẽ được lưu trữ để sử dụng sau.

Tuy nhiên, chắc chắn có sự chồng chéo lớn trong cả việc thực hiện và sử dụng.


3

Một sự khác biệt quan trọng giữa bộ đệm và bộ đệm là:

Bộ đệm là một phần của bộ nhớ chính. Chúng là các cấu trúc có mặt và được truy cập từ bộ nhớ chính (RAM).

Mặt khác, bộ đệm là một bộ nhớ vật lý riêng biệt trong hệ thống phân cấp bộ nhớ của máy tính.

Bộ đệm đôi khi cũng được gọi là - Bộ đệm bộ đệm. Tên này nhấn mạnh vào thực tế là việc sử dụng bộ đệm tương tự như bộ đệm, tức là để lưu trữ dữ liệu. trong khi sự khác biệt nằm trong bối cảnh sử dụng của nó.

Bộ đệm được sử dụng để lưu trữ dữ liệu tạm thời, trong khi dữ liệu được di chuyển từ đối tượng này sang đối tượng khác. EX: khi video được chuyển từ Internet sang PC của chúng tôi, bộ đệm hiển thị được sử dụng để lưu trữ các khung của video sẽ được hiển thị tiếp theo. . Dữ liệu mới được ghi không được sao chép vào bộ nhớ thứ cấp ngay lập tức. Các thay đổi được thực hiện được lưu trữ trong bộ đệm và sau đó theo chính sách được thiết kế, các thay đổi được phản ánh trở lại tệp trong bộ nhớ thứ cấp (đĩa cứng).

Mặt khác, bộ nhớ cache được sử dụng giữa bộ nhớ chính và bộ xử lý, để thu hẹp khoảng cách giữa tốc độ thực thi của RAM và bộ xử lý. Ngoài ra, dữ liệu được truy cập thường xuyên nhất được lưu trữ trong bộ đệm để giảm quyền truy cập vào RAM.


-1 bạn viết "bộ nhớ cache là bộ nhớ vật lý riêng biệt" <--- Không. Không nhất thiết. IE lưu trữ bộ nhớ cache trên ổ cứng và không nghi ngờ gì khi tải nó vào RAM stackoverflow.com/questions/854412/ sắt Tôi không nghĩ mã C có thể chỉ định để tải nó vào bộ nhớ vật lý được gọi là bộ đệm. Những gì được đặt trong bộ đệm đó là một thứ cấp thấp, có lẽ chỉ HĐH mới có thể chỉ định. Nhưng nó vẫn được gọi là bộ nhớ cache mặc dù trong RAM. Và mực máy chủ web có thể thiết lập bộ đệm, không có lý do gì để nghĩ rằng đó là tất cả trong bộ nhớ đệm vật lý hoặc cần phải có.
barlop

bộ nhớ đệm là một chức năng, nó không cần phải có trong bộ nhớ đặc biệt
barlop

1

Điểm chung: cả hai đều là các thành phần lưu trữ dữ liệu trung gian (phần mềm hoặc phần cứng) giữa tính toán và lưu trữ "chính".

Đối với tôi sự khác biệt là như sau:

Đệm:

  • Xử lý truy cập tuần tự vào dữ liệu (ví dụ đọc / ghi dữ liệu từ tệp hoặc ổ cắm)
  • Cho phép giao diện giữa tính toán và lưu trữ chính, điều chỉnh cho nhau các kiểu truyền dữ liệu khác nhau của nhà sản xuất dữ liệu và người tiêu dùng dữ liệu. Ví dụ, tính toán ghi các đoạn dữ liệu nhỏ, nhưng ổ đĩa chỉ có thể chấp nhận các phần dữ liệu có kích thước cụ thể. Vì vậy, bộ đệm tích lũy các phần nhỏ làm đầu vào và tập hợp lại thành các phần lớn hơn của đầu ra.
  • Vì vậy, nó giống như một mẫu thiết kế Adaptor . Nó tham gia hai thành phần tương tác không thể tương tác trực tiếp.
  • Ví dụ: bộ đệm đĩa, BufferedReader trong ngôn ngữ Java, đấu tranh trong đồ họa máy tính.

Bộ nhớ cache:

  • Xử lý truy cập ngẫu nhiên vào dữ liệu (ví dụ: bộ đệm CPU lưu trữ các dòng ghi nhớ được đặt không cần thiết theo tuần tự).
  • Tối ưu hóa truy cập vào bộ lưu trữ chính, làm cho nó nhanh hơn. Ví dụ, bộ đệm CPU tránh truy cập vào bộ nhớ, do đó làm cho các lệnh CPU nhanh hơn.
  • Nó giống như một mẫu thiết kế trang trí . Nó tham gia (thường là trong suốt) hai thành phần tương tác về nguyên tắc có thể tương tác trực tiếp với nhau, nhưng nó làm cho sự tương tác nhanh hơn.
  • Ví dụ: bộ đệm CPU, bộ đệm trang, proxy web, bộ đệm trình duyệt.
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.