Tại sao bộ đệm L1 nhanh hơn bộ đệm L2?


14

Tôi đang cố gắng để hiểu tại sao bộ nhớ bộ nhớ cache CPU nhất định nhanh hơn những bộ nhớ khác. Khi so sánh bộ nhớ đệm với một cái gì đó như bộ nhớ chính, có sự khác biệt về loại bộ nhớ (SRAM so với DRAM) và các vấn đề cục bộ (trên chip so với phải đi qua bus bộ nhớ) có thể ảnh hưởng đến tốc độ truy cập. Nhưng L1 và L2 thường trên cùng một chip, hoặc ít nhất là trên cùng một khuôn và tôi nghĩ chúng là cùng một loại bộ nhớ. Vậy tại sao L1 lại nhanh hơn?


9
Bởi vì nó được xây dựng theo cách đó.
Ignacio Vazquez-Abrams

Có nhiều cách xây dựng cùng loại RAM. Một số cách dẫn đến RAM nhanh hơn RAM được xây dựng theo những cách khác.
Ignacio Vazquez-Abrams

Lý do tại sao cùng DDR RAM của bạn nhanh hơn so với ổ cứng của bạn ...
hassan789

1
liên quan: câu trả lời của tôi và câu hỏi SO về kích thước bộ đệm cũng giải thích một số lý do đánh đổi tốc độ / tiêu thụ năng lượng để có bộ nhớ cache đa cấp. Về cơ bản, làm cho bộ đệm siêu nhanh tốn chi phí điện năng và diện tích chết để làm nhiều việc hơn song song và không tương thích với kích thước lớn / khả năng kết hợp mà bạn muốn trong bộ đệm cấp độ cuối.
Peter Cordes

Câu trả lời:


24

Không, chúng không cùng loại RAM, mặc dù chúng trên cùng một con chip sử dụng cùng một quy trình sản xuất.

Trong tất cả các bộ nhớ cache, bộ đệm L1 cần có thời gian truy cập nhanh nhất có thể (độ trễ thấp nhất), so với mức dung lượng cần có để cung cấp tỷ lệ "nhấn" thích hợp. Do đó, nó được chế tạo bằng cách sử dụng các bóng bán dẫn lớn hơn và các rãnh kim loại rộng hơn, trao đổi không gian và năng lượng cho tốc độ. Bộ nhớ cache cấp cao hơn cần phải có dung lượng cao hơn, nhưng có thể đủ khả năng để chậm hơn, vì vậy chúng sử dụng các bóng bán dẫn nhỏ hơn được đóng gói chặt chẽ hơn.


3
Đây là những gì tôi đang tìm kiếm, cảm ơn. Bạn có biết bất kỳ nguồn tốt nào mà tôi có thể đọc thêm về sự khác biệt?
Điều

Không, không phải tay. Các chi tiết của sự đánh đổi không gian / sức mạnh / thời gian này, cũng như các lựa chọn liên quan đến dung lượng và kiến ​​trúc bộ đệm, được liên kết rất chặt chẽ với các chi tiết độc quyền của các quy trình của nhà sản xuất, vì vậy rất ít (nếu có bất cứ điều gì) được công bố về nó. Tôi chỉ có thể nói một cách chung chung.
Dave Tweed

10
L1 cũng nhỏ hơn, có nghĩa là việc truyền tín hiệu qua nó mất ít chu kỳ xung nhịp hơn: thường kích thước của L1 được quyết định là bộ nhớ lớn nhất có thể truy cập trong 1 (hoặc 2) đồng hồ.
Brian Drumond

6
Ngoài quan điểm của Brian Drumond, L1 cũng thường sử dụng truy cập song song thẻ dữ liệu. L2 thường truy cập các thẻ trước (xác định cách nào nếu có), sau đó tăng dữ liệu, tăng độ trễ nhưng tiết kiệm năng lượng (đáng kể với kích thước lớn hơn, độ kết hợp cao hơn và tỷ lệ bỏ lỡ cao hơn). (Truy cập L2 cũng thường bắt đầu sau khi bỏ lỡ L1 được xác nhận làm tăng độ trễ hiệu quả.)
Paul A. Clayton

@BrianDrummond - nhỏ hơn cả về tải trọng dây và độ sâu cổng (Tôi không nghĩ đó là điều hiển nhiên từ nhận xét của bạn).
Sean Houlihane

5

L1 thường được sử dụng làm bộ lưu trữ cho các hướng dẫn được giải mã, trong khi L2 là bộ đệm chung cho một lõi. Bộ đệm càng thấp thì kích thước càng nhỏ và nó thường nhanh hơn. Như một quy tắc thô sơ cho bộ xử lý PC:

L1 Cache: truy cập 2-3 chu kỳ đồng hồ

L2 Cache: ~ 10 chu kỳ truy cập đồng hồ

L3 Cache: ~ 20-30 chu kỳ truy cập đồng hồ

Thiết kế của bộ đệm L1 phải là tối đa hóa tốc độ nhấn (xác suất của địa chỉ lệnh hoặc địa chỉ dữ liệu mong muốn nằm trong bộ đệm) trong khi vẫn giữ độ trễ của bộ đệm càng thấp càng tốt. Intel sử dụng bộ đệm L1 với độ trễ 3 chu kỳ. Bộ đệm L2 được chia sẻ giữa một hoặc nhiều bộ đệm L1 và thường lớn hơn nhiều. Trong khi bộ đệm L1 được thiết kế để tối đa hóa tốc độ truy cập, bộ đệm L2 được thiết kế để giảm thiểu hình phạt bỏ lỡ (độ trễ phát sinh khi xảy ra lỗi L1). Đối với các chip có bộ đệm L3, mục đích là dành riêng cho thiết kế của chip. Đối với Intel, bộ nhớ cache L3 lần đầu tiên xuất hiện trong các hệ thống đa bộ xử lý 4 chiều (bộ xử lý Pentium 4 Xeon MP) vào năm 2002. Bộ nhớ cache L3 theo nghĩa này giúp giảm đáng kể độ trễ trong môi trường đa luồng và giảm tải FSB. Vào thời điểm đó,

Trích dẫn có nguồn gốc từ đây từ phản ứng của "Pinhedd".


1
L1 cũng được sử dụng cho dữ liệu nói chung, nhưng sự thật là thường dữ liệu L1 và lệnh L1 tách biệt trong khi L2 được chia sẻ: lập trình viên.stackexchange.com/questions/44731/ (một lý do tại sao nó có thể được chia sẻ là vì nó có nhiều cách hơn ).
Guy Sirton

1
Thông thường các bộ xử lý có bộ nhớ dữ liệu và hướng dẫn riêng biệt ở cấp độ L1. Chắc chắn đúng với các chip x86 và SPARC sau này. Và một số bộ đệm hướng dẫn L1 không lưu trữ các hướng dẫn được giải mã. Pentium 4 đã lưu trữ các hướng dẫn được giải mã, nhưng sau đó Intel đã quay lại bộ nhớ cache thông thường, sau đó gần đây đã thêm bộ nhớ lệnh được giải mã trở lại vào chip của họ.
Craig S. Anderson

3

Có một số lý do tại sao tốc độ tỷ lệ nghịch với kích thước. Điều đầu tiên xuất hiện trong tâm trí là sự thống trị vật lý của các dây dẫn, trong đó việc truyền tín hiệu i bị giới hạn ở một số yếu tố từ tốc độ ánh sáng. Một hoạt động có thể mất chừng nào nó sẽ mất tín hiệu điện để di chuyển quãng đường dài nhất bên trong ô nhớ và trở lại. Một lý do liên quan khác là sự phân tách các miền đồng hồ. Mỗi CPU chạy bộ tạo xung nhịp riêng, cho phép CPU chạy trên đồng hồ nhiều GHz. Bộ nhớ cache cấp 1 chạy tại và được đồng bộ hóa với đồng hồ CPU, tốc độ nhanh nhất trong hệ thống. Mặt khác, bộ đệm cấp 2 phải phục vụ nhiều CPU và đang chạy trong một miền đồng hồ (chậm hơn) khác. Không chỉ đồng hồ L2 chậm hơn (lát lớn hơn) mà để vượt qua một ranh giới miền đồng hồ thêm một độ trễ khác. Sau đó, tất nhiên có những vấn đề fan-out (đã được đề cập).


1

Ngoài các đặc tính hiệu suất vốn có, địa phương còn có vai trò (L1 gần với CPU hơn). Theo những gì mọi lập trình viên nên biết về bộ nhớ :

Thật thú vị khi lưu ý rằng đối với bộ đệm L2 khi chết, một phần lớn (có thể là phần lớn) của thời gian truy cập là do độ trễ của dây. Đây là một giới hạn vật lý chỉ có thể trở nên tồi tệ hơn khi tăng kích thước bộ đệm. Chỉ có quá trình thu nhỏ (ví dụ: chuyển từ 60nm cho Merom sang 45nm cho Penryn trong dòng sản phẩm của Intel) mới có thể cải thiện những con số đó.


Tôi nghĩ rằng điều này áp dụng chủ yếu ở nơi bộ nhớ cache lớn - Điều này không áp dụng cho tất cả các loại bộ xử lý (mặc dù độ trễ dây là đáng kể).
Sean Houlihane
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.