Có sự tương ứng giữa kích thước bộ đệm và độ trễ truy cập không?


9

Có sự tương ứng giữa kích thước bộ đệm và độ trễ truy cập không? Tất cả những thứ khác đều bằng nhau, bộ đệm lớn hơn có hoạt động chậm hơn không? Nếu vậy, tại sao? Chậm hơn bao nhiêu?


1
Nếu bạn muốn khám phá một số sự đánh đổi trong thiết kế bộ đệm, HP đã phát triển công cụ CACTI cung cấp các ước tính về độ trễ và sử dụng năng lượng dựa trên các đặc điểm thiết kế. Một giao diện web cho phiên bản 5.3 cũng có sẵn .
Paul A. Clayton

Câu trả lời:


5

Các vật phẩm trong tay bạn có thể truy cập nhanh hơn các vật phẩm trong túi của bạn, truy cập nhanh hơn các vật phẩm trong tủ của bạn, truy cập nhanh hơn các vật phẩm tại Digikey. Mỗi loại lưu trữ liên tiếp tôi đã liệt kê là lớn hơn nhưng chậm hơn so với trước đây.

Vì vậy, hãy có những điều tốt nhất của cả hai thế giới, hãy làm cho bàn tay của bạn lớn như một nhà kho Digikey! Không, nó không hoạt động, bởi vì bây giờ họ không thực sự ra tay nữa. Chúng là một khẩu súng thần công đè nặng bạn.

Lý do lưu trữ lớn hơn là chậm hơn để truy cập là khoảng cách . Trung bình lưu trữ lớn hơn là xa bạn. Điều này đúng với các mục vật lý và RAM.

Bộ nhớ máy tính chiếm không gian vật lý. Vì lý do đó, các ký ức lớn hơn lớn hơn về mặt vật lý và một số vị trí trong bộ nhớ đó sẽ ở xa hơn về mặt vật lý. Những thứ ở xa mất nhiều thời gian hơn để truy cập, do bất kỳ giới hạn tốc độ nào. Trong trường hợp túi của bạn và Digikey, giới hạn tốc độ là tốc độ của cánh tay của bạn và giới hạn tốc độ trên đường cao tốc.

Trong trường hợp RAM, giới hạn tốc độ là tốc độ lan truyền của tín hiệu điện, độ trễ lan truyền của cổng và trình điều khiển và việc sử dụng phổ biến của đồng hồ đồng bộ. Ngay cả khi tiền không phải là đối tượng và bạn có thể mua bao nhiêu tùy thích công nghệ RAM nhanh nhất hiện nay, bạn sẽ không thể hưởng lợi từ tất cả. Đặt một tấm bộ đệm L1 có kích thước A4 nếu bạn thích và đặt CPU của bạn ngay chính giữa. Khi CPU muốn truy cập một số bộ nhớ ngay trong góc của bộ nhớ, sẽ thực sự mất một nano giây để yêu cầu đến đó và một nano giây để nó quay trở lại. Và đó không bao gồm tất cả các sự chậm trễ lan truyền thông qua và cổng và trình điều khiển. Điều đó sẽ làm chậm nghiêm trọng CPU 3GHz của bạn.

Vì logic đồng bộ dễ thiết kế hơn nhiều so với logic không đồng bộ, một 'khối' RAM sẽ được đồng hồ cùng một đồng hồ. Nếu muốn biến toàn bộ bộ nhớ thành bộ đệm L1, thì bạn phải đồng hồ toàn bộ với đồng hồ chậm để đối phó với thời điểm xấu nhất của vị trí xa nhất trong bộ nhớ. Điều này có nghĩa là các vị trí bộ nhớ ở xa hiện đang giữ lại các vị trí cục bộ, có thể đã được bấm giờ nhanh hơn. Vì vậy, điều tốt nhất để làm là phân vùng bộ nhớ. Phần gần nhất và nhỏ nhất của bộ đệm sẽ sử dụng đồng hồ nhanh nhất. Phần gần nhất và nhỏ nhất tiếp theo sẽ sử dụng đồng hồ chậm hơn một chút, v.v.

Và bây giờ bạn có bộ nhớ cache và RAM L1 & L2.

Điều này đưa chúng ta đến lý do tiếp theo, tiêu thụ điện năng.

Bộ nhớ cache thực sự tiêu thụ một lượng điện năng đáng kể. Không chỉ bộ nhớ, mà tất cả logic xung quanh nó xử lý ánh xạ giữa các dòng bộ đệm và bộ nhớ chính. Tăng hiệu suất của logic bổ sung này có thể dẫn đến tăng mức tiêu thụ năng lượng. Giờ đây, đối với một số ứng dụng nhất định (di động, được nhúng), bạn thậm chí còn có nhiều động lực hơn để giữ bộ nhớ cache nhỏ.

Xem sự đánh đổi trong thiết kế bộ nhớ cache để tối ưu hóa năng lượng và hiệu suất: Một nghiên cứu điển hình (Ching-Long Su và Alvin M. Despain, 1995).


1
+1 Tôi thích câu trả lời của bạn. Lượt tất cả các điểm có liên quan và cũng ủng hộ nó. Dễ đọc
Gustavo Litovsky

Có đúng không? Câu trả lời được đặt ra trước sự chậm trễ về tốc độ ánh sáng của một inch so với vài inch?
Andyz Smith

1
Câu trả lời này là tốt như một tổng quan chung, nhưng tôi nghi ngờ nó không trả lời câu hỏi ban đầu. Bạn không nên là một chuyên gia uArch để nhận ra rằng bộ đệm có kích thước A4 là không thực tế. Tôi tin rằng OP đã hỏi về việc tăng kích thước bộ đệm hợp lý và mức tăng này sẽ ảnh hưởng đến độ trễ của việc truy cập bộ đệm.
Vasiliy

1
@AndyzSmith - Đó là một sự phóng đại và đơn giản hóa quá mức, nhưng tôi nghĩ rằng nó có điểm chung, rằng tại một số điểm, bộ đệm L1 không thể được mở rộng vô thời hạn. Tại một số điểm, các định luật vật lý đi vào, và làm nó chậm lại.
Rocketmagnet

Độ trễ của tín hiệu trên chip không phải là tốc độ ánh sáng, đó là một giá trị phức tạp hơn được tính bằng cách xem xét mạng / dây cộng với điện dung cổng điều khiển như một mạng RLC. Nó không đủ dài để trở thành một đường truyền. Mạng càng dài, cổng lái xe càng lớn hoặc bạn cần chèn bộ đệm làm bộ lặp. Tất cả cũng tiêu thụ nhiều năng lượng hơn.
pjc50

4

Bỏ qua tất cả các yếu tố kinh tế / hiệu suất / tiêu thụ năng lượng, câu trả lời cho câu hỏi của bạn là: nó phụ thuộc vào nhiều yếu tố kiến ​​trúc vi mô.

Như một ví dụ xem tham chiếu này - độ trễ truy cập L1 đo được cho tất cả các bộ xử lý được thử nghiệm là 4 chu kỳ xung nhịp. Tần số của các bộ xử lý gần như giống nhau, nhưng kích thước của bộ đệm L1 khác nhau đến 3 lần.

Lý do cho độ trễ không đổi đến L1 trên một số bộ xử lý khác nhau trong thử nghiệm trên có nguồn gốc từ kiến ​​trúc vi mô của bộ đệm: chính việc truy cập bộ đệm (lấy dữ liệu từ bộ nhớ) chỉ mất một chu kỳ xung nhịp. Ba chu kỳ bổ sung được dành để giải mã truy cập, kiểm tra sự hiện diện của dữ liệu và hơn thế nữa ... Số lượng các giai đoạn bổ sung là giống nhau trên các bộ xử lý trong thử nghiệm, do đó độ trễ truy cập là như nhau.

Mặc dù ví dụ trên, người ta không nên kết luận rằng độ trễ của bộ đệm là độc lập với kích thước của bộ đệm. 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ễ.

Giả sử rằng bộ đệm trong câu hỏi được triển khai trong SRAM, các mô-đun bị ảnh hưởng bởi kích thước bộ đệm nhiều nhất là: bộ giải mã hàng và mux. Tuy nhiên, ngay cả các ampe cảm giác cũng sẽ bị ảnh hưởng đối với các bộ đệm rất lớn: điện áp xoay nhỏ hơn trên một đường do điện dung cao hơn sẽ đòi hỏi một amp cảm giác "mạnh hơn". Nói rằng, ảnh hưởng nghiêm trọng nhất đến tốc độ logic sẽ được thêm vào bằng điện dung kết nối dây - điện dung này có nhiều hơn sự phụ thuộc tuyến tính vào kích thước SRAM. Các chi tiết chính xác được thực hiện cụ thể.

Bây giờ, bộ nhớ cache L1 khá ổn định trong thời gian trễ vì hiệu suất của chúng là quan trọng nhất. Nếu bạn cố gắng phân tích bộ đệm L2 và L3, hình ảnh sẽ phức tạp hơn rất nhiều.

Bức tranh phức tạp hơn nhiều khi bạn xem xét bộ xử lý đa lõi - chúng có logic bổ sung để đảm bảo tính liên kết bộ đệm . Điều này dẫn đến một yếu tố bổ sung ảnh hưởng đến độ trễ của việc truy cập bộ đệm: lịch sử truy cập vào bộ nhớ của tất cả các lõi.

Tóm lược

Như bạn có thể thấy câu hỏi của bạn không phải là tầm thường và không thể được trả lời hoàn toàn. Tuy nhiên, nếu bạn xem xét các bộ đệm ưu tiên về mặt kinh tế và hiệu suất, thì tôi sẽ nói rằng kích thước của chúng sẽ không ảnh hưởng đến độ trễ theo bất kỳ cách đáng giá nào.

Dành cho độc giả quan tâm:

Tài liệu tham khảo này là một phân tích rất sâu về các yếu tố hiệu suất của CPU hiện đại. Có rất nhiều tài liệu liên quan đến bộ nhớ cache trong đó. Yêu cầu hiểu biết sâu sắc về kiến ​​trúc máy tính và các nguyên tắc kiến ​​trúc vi mô (cách khác - một bản tóm tắt tốt về các chủ đề người ta cần biết để trở thành một chuyên gia trong lĩnh vực này).


Cảm ơn bạn đã trả lời! Câu trả lời của bạn và @ Rocketmagnet khá bổ sung. Hy vọng tôi có thể chọn cả hai. Tôi đã có bản sao của tài liệu tham khảo được trích dẫn và rất quan tâm đến chủ đề gần đây, do đó câu hỏi.
ivanmp

tại sao logic để thực hiện thao tác đọc phụ thuộc vào kích thước bộ đệm .. Tại sao nó 'trở nên quá dài' với số lượng địa chỉ cụ thể có một bước nhảy rời rạc. hoặc nếu không có bước nhảy rời rạc, công thức cho thời gian truy cập so với kích thước là gì?
Andyz Smith

bạn có thể nói cụ thể về thành phần nào không: "Sự tái phát quan trọng, sau đó, là một bộ cộng, bộ giải mã, dòng từ SRAM, (các) dòng bit SRAM, amp cảm biến, mux điều khiển byte và bỏ qua mux. " làm cho logic trở nên lớn? vi.wikipedia.org/wiki/Sum_addression_decoder
Andyz Smith

@AndyzSmith, công thức của thời gian truy cập so với kích thước chỉ có thể được đưa ra bởi một người nào đó thiết kế và mô phỏng bộ đệm. Trong tài liệu tham khảo tôi đã đăng, bạn có thể thấy phải mất 4 chu kỳ đồng hồ để lấy dữ liệu từ L1, nhưng không ai cố gắng ước tính độ chùng liên quan đến các lần đọc này. Yêu cầu một công thức là cách không thực tế câu hỏi mà không có nhiều thông tin cụ thể thực hiện bổ sung.
Vasiliy

1
@AndyzSmith, giả sử rằng bộ đệm trong câu hỏi được triển khai trong SRAM, các mô-đun bị ảnh hưởng bởi kích thước bộ đệm nhiều nhất là: bộ giải mã hàng và mux. Tuy nhiên, ngay cả các ampe cảm giác cũng sẽ bị ảnh hưởng đối với các bộ đệm rất lớn: điện áp xoay nhỏ hơn trên một đường do điện dung cao hơn -> amp "mạnh hơn". Nói rằng, ảnh hưởng nghiêm trọng nhất đến tốc độ logic sẽ được thêm vào bằng điện dung kết nối dây - điện dung này có nhiều hơn sự phụ thuộc tuyến tính vào kích thước SRAM. Một lần nữa, các chi tiết được thực hiện cụ thể.
Vasiliy

3

Kỹ sư kiểm tra bộ nhớ cache CPU ở đây - Dave Tweed trong các bình luận có lời giải thích chính xác. Bộ đệm có kích thước để tối đa hóa hiệu suất ở mức giá dự kiến ​​của CPU. Bộ đệm nói chung là người tiêu dùng lớn nhất của không gian chết và do đó kích thước của nó tạo ra sự khác biệt lớn về kinh tế (và hiệu suất).

Hãy xem trang gia đình CPU Ivy Bridge của Intel: http://ark.intel.com/products/codename/29902/Ivy-Bridge

Xeon đầu cuối đi kèm với 30 MB bộ nhớ cache, có 12 lõi và có giá khoảng 2700 USD. I3 cấp thấp hơn với 3 MB bộ nhớ cache (i3-3217) có giá chỉ 500 đô la cho toàn bộ máy tính xách tay (tôi không thể tìm thấy riêng lẻ).

Xeon cho hiệu suất cao nhất nhưng cũng tốn nhiều chi phí hơn khi sản xuất và thử nghiệm. I3 rẻ hơn nhiều nhưng sự đánh đổi là kích thước khuôn nhỏ hơn trong đó bộ đệm là phần lớn nhất.


2
Câu trả lời rất thú vị. Nhưng như tôi đã nói trong câu hỏi, tôi không tìm kiếm câu trả lời kinh tế, rõ ràng. Những gì tôi đang cố gắng hiểu liên quan đến hiệu suất liên quan đến việc truy cập bộ đệm lớn (> 512 MB). Kích thước sẽ làm giảm hiệu suất của bộ đệm?
ivanmp
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.