Điều gì làm cho bộ nhớ cache CPU nhanh hơn nhiều so với bộ nhớ chính? Tôi có thể thấy một số lợi ích trong một hệ thống bộ đệm tầng. Nó có ý nghĩa rằng một bộ đệm nhỏ hơn là nhanh hơn để tìm kiếm. Nhưng phải có nhiều hơn cho nó.
Điều gì làm cho bộ nhớ cache CPU nhanh hơn nhiều so với bộ nhớ chính? Tôi có thể thấy một số lợi ích trong một hệ thống bộ đệm tầng. Nó có ý nghĩa rằng một bộ đệm nhỏ hơn là nhanh hơn để tìm kiếm. Nhưng phải có nhiều hơn cho nó.
Câu trả lời:
Trong trường hợp bộ đệm CPU, nó nhanh hơn vì nó cùng bộ xử lý. Nói cách khác, dữ liệu được yêu cầu không phải được đưa vào bộ xử lý; nó đã ở đó
Trong trường hợp bộ nhớ cache trên ổ cứng, nó nhanh hơn vì nó ở bộ nhớ trạng thái rắn và không nằm trên các đĩa xoay.
Trong trường hợp bộ đệm trên một trang web, nó nhanh hơn vì dữ liệu đã được truy xuất từ cơ sở dữ liệu (trong một số trường hợp, có thể được đặt ở bất kỳ đâu trên thế giới).
Vì vậy, đó là về địa phương , chủ yếu. Cache loại bỏ bước chuyển dữ liệu .
Địa phương là một cách thú vị để nói dữ liệu "gần nhau", theo thời gian hoặc không gian. Bộ nhớ đệm với bộ nhớ nhỏ hơn, nhanh hơn (nhưng thường đắt hơn) hoạt động vì thông thường một lượng tương đối nhỏ của dữ liệu tổng thể là dữ liệu được truy cập thường xuyên nhất.
Đọc thêm
Cache (Điện toán) trên Wikipedia
Nó nhanh hơn vì cả hai đều gần hơn và vì nó là SRAM chứ không phải DRAM.
SRAM là và có thể nhanh hơn đáng kể so với DRAM, các giá trị được giữ tĩnh ( RAM S trong S ) để chúng không phải được làm mới mà lấy đi chu kỳ. DRAM rất năng động, giống như pin sạc nhỏ, bạn phải thường xuyên sạc lại pin để chúng không bị cạn kiệt và trở thành số không. Điều này đánh cắp thời gian chu kỳ ngoài cách bạn phải truy cập các bit, v.v.
Ở cùng một điểm chết hoặc gần hơn bộ xử lý làm giảm hành trình khứ hồi, cả L1 và L2 đều nhanh hơn DRAM từ góc độ truy cập.
SRAM truy cập nhanh hơn DRAM lấy táo và táo thường ở trên chip hoặc gần hơn hoặc trên các bus nhanh hơn DRAM khiến thời gian truy cập cũng nhanh hơn.
Một điều cần được đề cập rõ ràng là tác động của tốc độ ánh sáng. Trong video này, Grace Hopper cho thấy một đoạn dây dài khoảng một feet, đó là khoảng cách mà tín hiệu điện có thể truyền đi trong một nano giây *. Nếu CPU hoạt động ở tần số 3GHz, thì có nghĩa là khoảng cách 4 "trên mỗi chu kỳ xung nhịp. Đây là giới hạn vật lý cứng đối với tốc độ truy cập bộ nhớ. Đây là một phần lớn lý do tại sao gần với CPU (như bộ đệm L1), cho phép bộ nhớ để được nhanh hơn.
EDIT * thực sự ánh sáng có thể đi được bao xa trong chân không, khoảng cách qua đồng / silicon là ít hơn.
Các câu trả lời khác đã bao gồm tất cả các bit có liên quan: địa phương (và chi phí truyền dữ liệu liên quan, chiều rộng xe buýt và đồng hồ, v.v.); tốc độ ánh sáng (một lần nữa, liên quan đến chi phí chuyển nhượng và chiều rộng và thông lượng xe buýt); công nghệ bộ nhớ khác nhau (SRAM vs.DRAM). Tất cả điều này nhìn thấy trong ánh sáng của cân bằng chi phí / hiệu suất .
Một bit bị bỏ qua và nó chỉ được đề cập trong bình luận của Darkhogg: bộ nhớ cache lớn hơn có tốc độ truy cập tốt hơn nhưng độ trễ lâu hơn. Nhiều cấp độ của bộ đệm trong đó cũng được giới thiệu để giải quyết sự đánh đổi này.
Có một câu hỏi và câu trả lời xuất sắc về điểm này trên thiết bị điện tử SE
Từ các câu trả lời, đối với tôi, một điểm cần làm nổi bật là: logic thực hiện tất cả các hoạt động cần thiết cho việc đọc bộ đệm không đơn giản (đặc biệt là nếu bộ đệm được liên kết, giống như hầu hết các bộ đệm hiện nay). Nó đòi hỏi cổng và logic. Vì vậy, ngay cả khi chúng ta loại trừ chi phí và không gian chết
Nếu ai đó sẽ cố gắng thực hiện bộ đệm L1 lớn một cách lố bịch, logic thực hiện tất cả các hoạt động cần thiết cho việc đọc bộ đệm cũng sẽ trở nên lớn. Tại một số điểm, độ trễ lan truyền qua tất cả logic này sẽ quá dài và các hoạt động chỉ mất một chu kỳ đồng hồ trước đó sẽ phải được chia thành nhiều chu kỳ đồng hồ. Điều này sẽ tăng độ trễ.
Có rất nhiều điểm tốt được nêu ra trong các câu trả lời khác, nhưng một yếu tố dường như bị thiếu: độ trễ giải mã địa chỉ.
Sau đây là một sự đơn giản hóa lớn về cách giải mã địa chỉ bộ nhớ hoạt động, nhưng nó cho một ý tưởng tốt về lý do tại sao các chip DRAM lớn thường khá chậm.
Khi bộ xử lý cần truy cập bộ nhớ, nó sẽ gửi một lệnh tới chip bộ nhớ để chọn từ cụ thể mà nó muốn sử dụng. Lệnh này được gọi là Chọn Địa chỉ Cột (bây giờ chúng ta sẽ bỏ qua địa chỉ hàng). Bây giờ, chip bộ nhớ phải kích hoạt cột được yêu cầu, bằng cách gửi địa chỉ xuống một tầng các cổng logic để tạo một lần ghi kết nối với tất cả các ô trong cột. Tùy thuộc vào cách nó được triển khai, sẽ có một độ trễ nhất định cho mỗi bit địa chỉ cho đến khi kết quả xuất hiện ở đầu kia. Đây được gọi là độ trễ CAS của bộ nhớ. Bởi vì các bit đó phải được kiểm tra tuần tự, quá trình này mất nhiều thời gian hơn so với chu kỳ của bộ xử lý (thường chỉ có một vài bóng bán dẫn theo trình tự để chờ). Nó cũng mất nhiều thời gian hơn một chu kỳ xe buýt (thường chậm hơn một vài lần so với chu kỳ bộ xử lý). Lệnh CAS trên chip bộ nhớ thông thường có khả năng đảm nhận thứ tự 5ns (IIRC - đã lâu rồi tôi mới xem xét thời gian), tốc độ chậm hơn so với chu kỳ bộ xử lý.
May mắn thay, chúng tôi chia địa chỉ thành ba phần (cột, hàng và ngân hàng) cho phép mỗi phần nhỏ hơn và xử lý đồng thời các phần đó, nếu không độ trễ sẽ còn dài hơn.
Bộ đệm bộ xử lý, tuy nhiên, không có vấn đề này. Không chỉ nhỏ hơn nhiều, vì vậy dịch địa chỉ là một công việc dễ dàng hơn, nó thực sự không cần dịch nhiều hơn một đoạn nhỏ của địa chỉ (trong một số biến thể, không có gì cả) vì nó là liên kết. Điều đó có nghĩa là dọc theo mỗi dòng bộ nhớ được lưu trong bộ nhớ cache, có thêm các ô nhớ lưu trữ một phần (hoặc tất cả) địa chỉ. Rõ ràng điều này làm cho bộ đệm thậm chí còn đắt hơn, nhưng điều đó có nghĩa là tất cả các ô có thể được truy vấn để xem liệu chúng có dòng bộ nhớ cụ thể mà chúng ta muốn đồng thời hay không, và chỉ có một (hy vọng) có dữ liệu phù hợp sẽ loại bỏ nó lên một chiếc xe buýt kết nối toàn bộ bộ nhớ với lõi bộ xử lý chính. Điều này xảy ra trong ít hơn một chu kỳ, bởi vì nó đơn giản hơn nhiều.
Một trong những triết lý mà tôi đã nghiên cứu là chuyển động phần cứng đạt tối đa thông lượng tối thiểu khi chúng ta nói về bất kỳ bộ nhớ dựa trên bộ đệm nào, có thể là bộ đệm CPU, bộ đệm bộ đệm hoặc bộ nhớ cache cho mục đích đó. Động lực cơ bản đạt được khi có ít nhất hoặc không có chuyển động phần cứng để truy xuất / đọc / ghi dữ liệu và thao tác được hoàn thành nhanh hơn.
Dữ liệu truyền từ đĩa -> bộ nhớ chính (RAM) (lưu trữ tạm thời) -> Bộ đệm CPU (bộ nhớ tạm thời nhỏ hơn gần CPU để dữ liệu được truy cập thường xuyên) -> CPU (xử lý).
Bộ đệm CPU là không gian bộ nhớ nhỏ hơn, nhanh hơn, lưu trữ các bản sao dữ liệu từ các vị trí bộ nhớ chính được sử dụng gần đây nhất.
Bộ đệm bộ đệm là vùng nhớ chính lưu trữ các bản sao dữ liệu từ các vị trí đĩa được sử dụng gần đây nhất.
Bộ nhớ cache của trình duyệt là thư mục hoặc không gian tương tự lưu trữ các bản sao dữ liệu từ các trang web được truy cập gần đây nhất của người dùng.
Tham khảo: Cách thức hoạt động của bộ nhớ máy tính