Tại sao kích thước của bộ đệm L1 không tăng rất nhiều trong 20 năm qua?


35

Các i486 Intel có 8 KB cache L1. Các Intel Nehalem có 32 instruction cache KB L1 và 32 bộ nhớ cache dữ liệu KB L1 cho mỗi lõi.

Lượng bộ nhớ cache L1 không tăng với tốc độ gần như tốc độ clockrate đã tăng.

Tại sao không?


Bạn đang so sách những quả táo và những quả cam. Tốc độ đồng hồ đã tăng, nhưng không có mối tương quan với nhu cầu cần thêm bộ đệm. Chỉ vì bạn có thể làm một cái gì đó nhanh hơn, không có nghĩa là bạn được hưởng lợi từ một thùng lớn hơn.
Keltari

Bộ nhớ cache dư thừa và chi phí quản lý có thể làm chậm hệ thống. Họ đã tìm thấy điểm ngọt ngào và nó sẽ vẫn còn.
Phòng thí nghiệm Fiasco

Câu trả lời:


17

30K văn bản Wikipedia không hữu ích như một lời giải thích về lý do tại sao bộ nhớ cache quá lớn lại kém tối ưu. Khi bộ đệm quá lớn, độ trễ để tìm một mục trong bộ đệm (bao thanh toán trong bộ nhớ cache) bắt đầu tiếp cận độ trễ của việc tìm kiếm mục trong bộ nhớ chính. Tôi không biết các nhà thiết kế CPU nhắm đến tỷ lệ nào, nhưng tôi nghĩ nó tương tự như hướng dẫn 80-20: Bạn muốn tìm dữ liệu phổ biến nhất của mình trong bộ đệm 80% và 20 lần khác % thời gian bạn sẽ phải vào bộ nhớ chính để tìm nó. (hoặc bất cứ điều gì các nhà thiết kế CPU dự định tỷ lệ có thể.)

EDIT: Tôi chắc chắn rằng nó không ở đâu gần 80% / 20%, vì vậy thay thế X và 1-X. :)


6
"Khi bộ đệm quá lớn, độ trễ để tìm một mục trong bộ đệm (bao thanh toán trong bộ nhớ cache bị lỗi) bắt đầu tiếp cận độ trễ của việc tìm kiếm mục trong bộ nhớ chính." Bạn có chắc về điều này? Ví dụ: nhân đôi số lượng RAM được cài đặt chắc chắn sẽ không làm tăng độ trễ của nó, tại sao điều này lại đúng với bộ đệm? Ngoài ra, tại sao bộ đệm L2 sẽ phát triển lớn hơn với CPU mới, nếu đây là một vấn đề? Tôi không phải là chuyên gia về vấn đề này, tôi thực sự muốn biết :)
sYnfo

2
Tôi đã chuẩn bị một bản mô tả dài về bộ nhớ đệm trong phần mềm và đo lường khi bộ nhớ cache của bạn tự phát triển và nên được kết xuất / xây dựng lại, nhưng sau đó tôi quyết định tốt nhất nên thừa nhận rằng tôi không phải là nhà thiết kế phần cứng. :) Trong cả hai trường hợp, tôi nghi ngờ câu trả lời có thể được tóm tắt bởi luật lợi nhuận giảm dần. Tức là nhiều hơn không phải lúc nào cũng tốt hơn.
JMD

3
Từ lịch sử lâu dài của tôi về vấn đề phần cứng ở mức độ thấp, nhưng không thực sự là một nhà thiết kế, tôi nói rằng độ trễ dường như có liên quan đến việc có bao nhiêu cách bộ đệm được kết hợp, không phải kích thước. Tôi đoán là các bóng bán dẫn bổ sung sẽ đi vào bộ đệm đã được chứng minh là hiệu quả hơn ở nơi khác đối với hiệu suất tổng thể.
Brian Knoblauch

1
@JMD Tôi vẫn quan tâm đến mô tả đó;) Mặc dù các bình luận có lẽ không phải là nơi tốt nhất cho việc này, đúng. @Brian Vì vậy, nếu tôi hiểu chính xác, họ đã quyết định đặt ít bóng bán dẫn hơn vào bộ đệm L1 và đồng thời đặt nhiều hơn vào L2, tốc độ này chậm hơn đáng kể? Xin đừng xúc phạm, tôi chỉ tò mò thôi :)
sYnfo

10

Một yếu tố là việc tìm nạp L1 bắt đầu trước khi bản dịch TLB hoàn tất để giảm độ trễ. Với một bộ đệm đủ nhỏ và đủ cao, các bit chỉ mục cho bộ đệm sẽ giống nhau giữa các địa chỉ ảo và vật lý. Điều này có thể làm giảm chi phí duy trì sự kết hợp bộ nhớ với bộ đệm được gắn thẻ vật lý hầu như được lập chỉ mục.


1
Câu trả lời thú vị nhất :)
Nhà phát triển GameD

1
Tôi tin rằng đây là lý do, nhưng hãy để tôi đưa ra con số. Kích thước trang trên kiến ​​trúc x86 là 4096 byte. Bộ đệm muốn chọn nhóm bộ đệm trong đó tìm kiếm mục nhập của dòng bộ đệm (64 byte) trước khi dịch trang hoàn tất. Sẽ rất tốn kém khi phải quyết định giữa quá nhiều mục trong một nhóm, vì vậy mỗi nhóm chỉ có 8 mục trong đó. Kết quả là, trong mười năm qua, tất cả các cp x86 đắt tiền đều có chính xác 32768 byte (512 dòng bộ đệm) trong bộ đệm dữ liệu L1 của họ.
b_jonas

Vì điều này rất khó để tăng, nên cpus thêm một mức bộ nhớ cache ở giữa, vì vậy chúng tôi có bộ đệm L2 và L3 riêng biệt ngay bây giờ. Ngoài ra, bộ đệm mã L1 và bộ đệm dữ liệu L1 là riêng biệt, bởi vì CPU biết nếu nó truy cập mã hoặc dữ liệu.
b_jonas

8

Kích thước bộ đệm bị ảnh hưởng bởi nhiều yếu tố:

  1. Tốc độ của tín hiệu điện (nên là nếu không phải là tốc độ ánh sáng, thứ gì đó có cùng độ lớn):

    • 300 mét trong một micro giây.
    • 30 cm trong một nano giây.
  2. Chi phí kinh tế (các mạch ở các mức bộ đệm khác nhau có thể khác nhau và kích thước bộ đệm nhất định có thể không xứng đáng)

    • Nhân đôi kích thước bộ đệm không tăng gấp đôi hiệu suất (ngay cả khi vật lý cho phép kích thước đó hoạt động) đối với kích thước nhỏ, nhân đôi sẽ mang lại hiệu suất cao hơn gấp đôi, đối với kích thước lớn, nhân đôi kích thước bộ đệm cho hiệu năng gần như không có.
    • Tại wikipedia, bạn có thể tìm thấy một biểu đồ hiển thị ví dụ như cách không đáng để tạo bộ nhớ cache lớn hơn 1MB (thực tế bộ nhớ cache lớn hơn tồn tại nhưng bạn phải lưu ý rằng đó là các lõi đa bộ xử lý.)
    • Đối với bộ đệm L1, cần có một số biểu đồ khác (mà các nhà cung cấp không hiển thị) tạo ra kích thước 64 Kb thuận tiện.

Nếu kích thước bộ đệm L1 không thay đổi sau 64kb thì đó là vì nó không còn giá trị. Cũng lưu ý rằng bây giờ có "văn hóa" lớn hơn về bộ đệm và nhiều lập trình viên viết mã "thân thiện với bộ đệm" và / hoặc sử dụng các hướng dẫn prefetech để giảm độ trễ.

Tôi đã thử một lần tạo một chương trình đơn giản truy cập các vị trí ngẫu nhiên trong một mảng (của một số MegaBytes): chương trình đó gần như đóng băng máy tính vì mỗi lần đọc ngẫu nhiên, toàn bộ một trang được chuyển từ RAM sang bộ đệm và vì điều đó rất đơn giản. chương trình đã rút hết tất cả các băng thông với việc để lại rất ít tài nguyên cho HĐH.


6

Tôi tin rằng nó có thể được tóm tắt đơn giản bằng cách nói rằng bộ đệm càng lớn, truy cập sẽ càng chậm. Vì vậy, bộ đệm lớn hơn đơn giản là không giúp ích gì vì bộ đệm được thiết kế để giảm tốc độ truyền thông bus chậm đến RAM.

Vì tốc độ của bộ xử lý đã tăng lên nhanh chóng, bộ đệm có cùng kích thước phải hoạt động nhanh hơn và nhanh hơn để theo kịp nó. Vì vậy, bộ nhớ cache có thể tốt hơn đáng kể (về tốc độ) nhưng không phải về lưu trữ.

(Tôi là một người làm phần mềm nên hy vọng điều này không sai lầm)


3

Từ bộ đệm L1 :

Bộ đệm cấp 1, hoặc bộ đệm chính, nằm trên CPU và được sử dụng để lưu trữ tạm thời các hướng dẫn và dữ liệu được sắp xếp theo khối 32 byte. Bộ nhớ cache chính là hình thức lưu trữ nhanh nhất. Bởi vì nó được tích hợp vào chip với giao diện trạng thái chờ (độ trễ) bằng 0 cho đơn vị thực thi của bộ xử lý, nên nó bị giới hạn về kích thước .

SRAM sử dụng hai bóng bán dẫn mỗi bit và có thể giữ dữ liệu mà không cần sự trợ giúp bên ngoài, miễn là nguồn điện được cung cấp cho mạch. Điều này trái ngược với RAM động (DRAM), phải được làm mới nhiều lần mỗi giây để giữ nội dung dữ liệu của nó.

Bộ xử lý P55 MMX của Intel, được ra mắt vào đầu năm 1997, đáng chú ý là việc tăng kích thước bộ đệm cấp 1 của nó lên 32KB. Các chip AMD K6 và Cyrix M2 được ra mắt vào cuối năm đó đã tăng mức tiền cược hơn nữa bằng cách cung cấp bộ nhớ cache cấp 1 64KB. 64Kb vẫn là kích thước bộ đệm L1 tiêu chuẩn, mặc dù các bộ xử lý đa lõi khác nhau có thể sử dụng nó khác nhau.

EDIT: Xin lưu ý rằng câu trả lời này là từ năm 2009 và CPU đã phát triển vượt bậc trong 10 năm qua. Nếu bạn đã đến bài viết này, đừng quá coi trọng tất cả các câu trả lời của chúng tôi ở đây.


Một tế bào SRAM điển hình được tạo thành từ sáu MOSFET. Mỗi bit trong SRAM được lưu trữ trên bốn bóng bán dẫn (M1, M2, M3, M4) tạo thành hai bộ biến tần ghép chéo. Nguồn thứ hai Nguồn
lukecampbell

Đây chỉ là mô tả về tình huống, và không giải thích bất cứ điều gì về lý do tại sao.
Eonil

@Eonil - Chúng tôi không thể cung cấp câu trả lời tại sao mà nếu chúng tôi muốn. Tuy nhiên, lợi nhuận giảm dần trên hiệu suất là một lời giải thích hợp lý khả thi. Khi câu hỏi được viết cách đây gần một thập kỷ, nó đắt hơn nhiều, để tăng kích thước mà không bao gồm một cú đánh hiệu suất. Câu trả lời này đã cố gắng trả lời ít nhất là câu hỏi dự định đã được hỏi.
Ramhound

-4

Trên thực tế kích thước bộ đệm L1 là nút cổ chai lớn nhất về tốc độ trong các máy tính hiện đại. Các kích thước bộ đệm L1 nhỏ bé thảm hại có thể là sweetspot cho giá, nhưng không phải là hiệu suất. Bộ nhớ cache L1 có thể được truy cập ở tần số GHz, giống như hoạt động của bộ xử lý, không giống như truy cập RAM chậm hơn 400 lần. Nó rất tốn kém và khó thực hiện trong thiết kế 2 chiều hiện tại, tuy nhiên, về mặt kỹ thuật là có thể thực hiện được, và công ty đầu tiên thực hiện thành công, sẽ có máy tính nhanh hơn 100 lần và vẫn hoạt động tốt, điều này sẽ tạo ra nhiều cải tiến lớn trong nhiều các trường và hiện chỉ là accessbile thông qua các cấu hình ASIC / FPGA đắt tiền và khó lập trình. Một số trong những vấn đề này liên quan đến các vấn đề độc quyền / IP và lòng tham của công ty kéo dài hàng thập kỷ, trong đó một cán bộ kỹ sư trừng phạt và không hiệu quả là những người duy nhất có quyền truy cập vào các hoạt động bên trong, và hầu hết được đưa ra các lệnh tuần hành để vắt kiệt những người bảo vệ vô nghĩa có hiệu quả về chi phí. Nghiên cứu tư nhân hóa quá mức luôn dẫn đến sự đình trệ công nghệ hoặc điều tiết như vậy (như chúng ta đã thấy trong ngành hàng không vũ trụ và ô tô của các nhà sản xuất lớn và sắp trở thành dược phẩm). Nguồn mở và quy định bí mật thương mại và bằng sáng chế hợp lý hơn có lợi cho các nhà phát minh và công chúng (chứ không phải là ông chủ công ty và cổ đông) sẽ giúp ích rất nhiều ở đây. Nó sẽ là không có trí tuệ để phát triển để tạo ra bộ đệm L1 lớn hơn nhiều và điều này nên và có thể đã được phát triển từ nhiều thập kỷ trước. Chúng ta sẽ tiến xa hơn trong máy tính và nhiều lĩnh vực khoa học sử dụng chúng nếu có. và những người chủ yếu được đưa ra các lệnh tuần hành để vắt kiệt sự bảo vệ vô nghĩa có hiệu quả về chi phí. Nghiên cứu tư nhân hóa quá mức luôn dẫn đến sự đình trệ công nghệ hoặc điều tiết như vậy (như chúng ta đã thấy trong ngành hàng không vũ trụ và ô tô của các nhà sản xuất lớn và sắp trở thành dược phẩm). Nguồn mở và quy định bí mật thương mại và bằng sáng chế hợp lý hơn có lợi cho các nhà phát minh và công chúng (chứ không phải là ông chủ công ty và cổ đông) sẽ giúp ích rất nhiều ở đây. Nó sẽ là không có trí tuệ để phát triển để tạo ra bộ đệm L1 lớn hơn nhiều và điều này nên và có thể đã được phát triển từ nhiều thập kỷ trước. Chúng ta sẽ tiến xa hơn trong máy tính và nhiều lĩnh vực khoa học sử dụng chúng nếu có. và những người chủ yếu được đưa ra các lệnh tuần hành để vắt kiệt sự bảo vệ vô nghĩa có hiệu quả về chi phí. Nghiên cứu tư nhân hóa quá mức luôn dẫn đến sự đình trệ công nghệ hoặc điều tiết như vậy (như chúng ta đã thấy trong ngành hàng không vũ trụ và ô tô của các nhà sản xuất lớn và sắp trở thành dược phẩm). Nguồn mở và quy định bí mật thương mại và bằng sáng chế hợp lý hơn có lợi cho các nhà phát minh và công chúng (chứ không phải là ông chủ công ty và cổ đông) sẽ giúp ích rất nhiều ở đây. Nó sẽ là không có trí tuệ để phát triển để tạo ra bộ đệm L1 lớn hơn nhiều và điều này nên và có thể đã được phát triển từ nhiều thập kỷ trước. Chúng ta sẽ tiến xa hơn trong máy tính và nhiều lĩnh vực khoa học sử dụng chúng nếu có. Nghiên cứu tư nhân hóa quá mức luôn dẫn đến sự đình trệ công nghệ hoặc điều tiết như vậy (như chúng ta đã thấy trong ngành hàng không vũ trụ và ô tô của các nhà sản xuất lớn và sắp trở thành dược phẩm). Nguồn mở và quy định bí mật thương mại và bằng sáng chế hợp lý hơn có lợi cho các nhà phát minh và công chúng (chứ không phải là ông chủ công ty và cổ đông) sẽ giúp ích rất nhiều ở đây. Nó sẽ là không có trí tuệ để phát triển để tạo ra bộ đệm L1 lớn hơn nhiều và điều này nên và có thể đã được phát triển từ nhiều thập kỷ trước. Chúng ta sẽ tiến xa hơn trong máy tính và nhiều lĩnh vực khoa học sử dụng chúng nếu có. Nghiên cứu tư nhân hóa quá mức luôn dẫn đến sự đình trệ công nghệ hoặc điều tiết như vậy (như chúng ta đã thấy trong ngành hàng không vũ trụ và ô tô của các nhà sản xuất lớn và sắp trở thành dược phẩm). Nguồn mở và quy định bí mật thương mại và bằng sáng chế hợp lý hơn có lợi cho các nhà phát minh và công chúng (chứ không phải là ông chủ công ty và cổ đông) sẽ giúp ích rất nhiều ở đây. Nó sẽ là không có trí tuệ để phát triển để tạo ra bộ đệm L1 lớn hơn nhiều và điều này nên và có thể đã được phát triển từ nhiều thập kỷ trước. Chúng ta sẽ tiến xa hơn trong máy tính và nhiều lĩnh vực khoa học sử dụng chúng nếu có. Nó sẽ là không có trí tuệ để phát triển để tạo ra bộ đệm L1 lớn hơn nhiều và điều này nên và có thể đã được phát triển từ nhiều thập kỷ trước. Chúng ta sẽ tiến xa hơn trong máy tính và nhiều lĩnh vực khoa học sử dụng chúng nếu có. Nó sẽ là không có trí tuệ để phát triển để tạo ra bộ đệm L1 lớn hơn nhiều và điều này nên và có thể đã được phát triển từ nhiều thập kỷ trước. Chúng ta sẽ tiến xa hơn trong máy tính và nhiều lĩnh vực khoa học sử dụng chúng nếu có.

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.