Chính xác bộ đệm L1, L2 và L3 nằm ở đâu trong máy tính?


32

Trường hợp chính xác Laches, L2 và L3 Caches Nằm trong máy tính?

Tôi biết, chúng tôi sử dụng Cache để tăng hiệu suất bằng cách chọn DATA và HƯỚNG DẪN từ Cache thay vì Bộ nhớ chính.

Sau đây là những câu hỏi của tôi

  1. Chính xác L1 Cache nằm ở đâu? . là trên chip CPU?
  2. L2 Cache nằm ở đâu?

  3. Chính xác L3 Cache nằm ở đâu? Có trong Hội đồng quản trị mẹ?

Tôi nghĩ rằng bộ xử lý SMP mới nhất sử dụng bộ đệm 3 cấp độ vì vậy tôi muốn hiểu hệ thống phân cấp cấp Bộ nhớ cache và kiến ​​trúc của chúng.


1
Hệ thống phân cấp chính xác khác nhau giữa các bộ xử lý khác nhau. Để tìm hiểu hệ thống phân cấp bộ đệm trên máy của chính bạn, bạn có thể sử dụng tiện ích CoreInfo.exe của SysIternal ( technet.microsoft.com/en-us/sysi INTERNals / cc835722.aspx )

2
Ngoài ra, bộ đệm càng lớn (L3> L2> 1) thì nó càng nằm xa lõi (độ trễ truy cập đến L3 cao hơn L1 chẳng hạn).

Câu trả lời:


48

Hãy bắt đầu với điều này:

Tôi nghĩ rằng bộ xử lý SMP mới nhất sử dụng bộ đệm 3 cấp vì vậy tôi muốn hiểu hệ thống phân cấp cấp Bộ nhớ cache và kiến ​​trúc của chúng.

Để hiểu bộ nhớ cache bạn cần biết một số điều:

Một CPU có các thanh ghi. Giá trị trong đó có thể được sử dụng trực tiếp. Không có gì nhanh hơn.

Tuy nhiên, chúng tôi không thể thêm các thanh ghi vô hạn vào một con chip. Những thứ này chiếm không gian. Nếu chúng ta làm cho chip lớn hơn, nó sẽ đắt hơn. Một phần là vì chúng ta cần một con chip lớn hơn (nhiều silicon hơn), nhưng cũng vì số lượng chip có vấn đề tăng lên.

(Hình ảnh một wafer tưởng tượng với 500 cm 2 . Tôi cắt giảm 10 chip từ nó, mỗi chip 50cm 2 trong kích thước. Một trong số đó bị phá vỡ. Tôi loại bỏ nó và tôi rời nó 9 chip làm việc. Bây giờ lấy wafer cùng và tôi cắt 100 chip từ nó, mỗi chip nhỏ gấp mười lần. Một trong số đó nếu bị hỏng. Tôi loại bỏ chip bị hỏng và tôi còn lại 99 chip đang hoạt động. Đó là một phần tổn thất mà tôi sẽ phải chịu. Để bù lại số tiền lớn hơn Tôi sẽ yêu cầu giá cao hơn. Không chỉ là giá cho silicon bổ sung)

Đây là một trong những lý do tại sao chúng tôi muốn chip nhỏ, giá cả phải chăng.

Tuy nhiên, bộ đệm càng gần CPU, nó càng có thể được truy cập nhanh hơn.

Điều này cũng dễ giải thích; Tín hiệu điện truyền gần tốc độ ánh sáng. Đó là nhanh nhưng vẫn là một tốc độ hữu hạn. CPU hiện đại hoạt động với xung nhịp GHz. Điều đó cũng nhanh. Nếu tôi lấy CPU 4 GHz thì tín hiệu điện có thể truyền đi khoảng 7,5cm mỗi tích tắc. Đó là 7,5 cm theo đường thẳng. (Chips là bất cứ điều gì nhưng kết nối thẳng). Trong thực tế, bạn sẽ cần ít hơn đáng kể so với 7,5 cm vì điều đó không cho phép bất kỳ lúc nào các chip trình bày dữ liệu được yêu cầu và cho tín hiệu truyền trở lại.

Tóm lại, chúng tôi muốn bộ đệm càng gần càng tốt. Có nghĩa là chip lớn.

Hai cần phải được cân bằng (hiệu suất so với chi phí).

Chính xác thì bộ đệm L1, L2 và L3 nằm ở đâu trong máy tính?

Giả sử chỉ có phần cứng kiểu PC (máy tính lớn khá khác nhau, bao gồm cả hiệu năng so với cân bằng chi phí);

IBM XT
Bản gốc 4,77Mhz: Không có bộ đệm. CPU truy cập bộ nhớ trực tiếp. Một đọc từ bộ nhớ sẽ theo mô hình này:

  • CPU đặt địa chỉ mà nó muốn đọc trên bus bộ nhớ và xác nhận cờ đọc
  • Bộ nhớ đặt dữ liệu trên bus dữ liệu.
  • CPU sao chép dữ liệu từ bus dữ liệu vào các thanh ghi bên trong của nó.

80286 (1982)
Vẫn không có bộ đệm. Truy cập bộ nhớ không phải là vấn đề lớn đối với các phiên bản tốc độ thấp hơn (6Mhz), nhưng model nhanh hơn chạy tới 20Mhz và thường cần trì hoãn khi truy cập bộ nhớ.

Sau đó, bạn nhận được một kịch bản như thế này:

  • CPU đặt địa chỉ mà nó muốn đọc trên bus bộ nhớ và xác nhận cờ đọc
  • Bộ nhớ bắt đầu đưa dữ liệu lên bus dữ liệu. CPU chờ.
  • Bộ nhớ đã nhận được dữ liệu và giờ đây nó đã ổn định trên bus dữ liệu.
  • CPU sao chép dữ liệu từ bus dữ liệu vào các thanh ghi bên trong của nó.

Đó là một bước thêm dành cho việc chờ đợi bộ nhớ. Trên một hệ thống hiện đại có thể dễ dàng có 12 bước, đó là lý do tại sao chúng ta có bộ đệm .

80386 : (1985)
CPU nhanh hơn. Cả hai trên mỗi đồng hồ, và bằng cách chạy ở tốc độ đồng hồ cao hơn.
RAM nhanh hơn, nhưng không nhanh hơn CPU.
Kết quả là nhiều trạng thái chờ đợi là cần thiết. Một số bo mạch chủ làm việc xung quanh này bằng cách thêm bộ nhớ cache (đó sẽ là 1 st cấp bộ nhớ cache) trên bo mạch chủ.

Việc đọc từ bộ nhớ bây giờ bắt đầu bằng kiểm tra xem dữ liệu đã có trong bộ đệm chưa. Nếu nó được đọc từ bộ đệm nhanh hơn nhiều. Nếu không cùng quy trình như được mô tả với 80286

80486 : (1989)
Đây là CPU đầu tiên của thế hệ này có một số bộ đệm trên CPU.
Đó là bộ đệm hợp nhất 8KB, có nghĩa là nó được sử dụng cho dữ liệu và hướng dẫn.

Trong khoảng thời gian này, người ta thường đặt 256KB bộ nhớ tĩnh nhanh trên bo mạch chủ làm bộ đệm cấp 2 . Như vậy 1 st cấp bộ nhớ cache trên CPU, 2 nd cấp bộ nhớ cache trên bo mạch chủ.

Bo mạch chủ 486 với vị trí CPU và bộ đệm cấp 2 được đánh dấu

80586 (1993)
586 hoặc Pentium-1 sử dụng bộ đệm cấp 1 chia tách. Mỗi 8 KB cho dữ liệu và hướng dẫn. Bộ đệm được phân chia để bộ đệm dữ liệu và hướng dẫn có thể được điều chỉnh riêng cho mục đích sử dụng cụ thể của chúng. Bạn vẫn có bộ đệm thứ 1 nhỏ nhưng rất nhanh ở gần CPU và bộ đệm thứ 2 lớn hơn nhưng chậm hơn trên bo mạch chủ. (Ở khoảng cách vật lý lớn hơn).

Trong cùng khu vực pentium 1, Intel đã sản xuất Pentium Pro ('80686'). Tùy thuộc vào kiểu máy, con chip này có bộ nhớ cache 256Kb, 512KB hoặc 1MB. Nó cũng đắt hơn nhiều, rất dễ để giải thích với hình ảnh sau đây.

Hình ảnh của CPU pentium Pro, mô hình bộ đệm 256KB

Lưu ý rằng một nửa không gian trong chip được sử dụng bởi bộ đệm. Và đây là cho mô hình 256KB. Nhiều bộ đệm hơn về mặt kỹ thuật là có thể và một số mô hình được sản xuất với bộ nhớ cache 512KB và 1MB. Giá thị trường cho những thứ này là cao.

Cũng lưu ý rằng chip này chứa hai khuôn. Một với CPU thực tế và bộ đệm thứ 1 , và một bộ chết thứ hai với bộ đệm thứ 2 256KB .

Pentium-2

Pentium 2 là lõi pentium pro. Vì lý do kinh tế, không có bộ đệm thứ 2 trong CPU. Thay vào đó, những gì được bán cho CPU một PCB với các chip riêng cho CPU (và bộ đệm thứ 1 ) và bộ đệm thứ 2 .

Khi công nghệ phát triển và chúng tôi bắt đầu tạo ra các chip với các thành phần nhỏ hơn, có thể có khả năng tài chính để đưa bộ đệm thứ 2 trở lại trong khuôn CPU thực tế. Tuy nhiên vẫn còn một sự chia rẽ. Bộ nhớ cache 1 giây rất nhanh được gắn vào CPU. Với một cú 1 st bộ nhớ cache mỗi lõi CPU và một ít nhanh 2 lớn hơn nhưng nd bộ nhớ cache bên cạnh cốt lõi.

Hình ảnh của một pentium 2 'CPU' (cả có và không có nắp)

Pentium-3
Pentium-4
Điều này không thay đổi đối với pentium-3 hoặc pentium-4.

Trong khoảng thời gian này, chúng tôi đã đạt đến một giới hạn thực tế về tốc độ chúng ta có thể xung nhịp CPU. 8086 hoặc 80286 không cần làm mát. Một pentium-4 chạy ở tốc độ 3.0 GHz tạo ra rất nhiều nhiệt và sử dụng nhiều năng lượng đến mức nó trở nên thiết thực hơn khi đặt hai CPU riêng biệt trên bo mạch chủ thay vì một nhanh.

(Hai CPU 2.0 GHz sẽ sử dụng ít năng lượng hơn so với CPU 3.0 GHz giống hệt nhau, nhưng vẫn có thể làm được nhiều việc hơn).

Điều này có thể được giải quyết theo ba cách:

  1. Làm cho CPU hiệu quả hơn, do đó chúng làm nhiều công việc hơn với cùng tốc độ.
  2. Sử dụng nhiều CPU
  3. Sử dụng nhiều CPU trong cùng một 'chip'.

1) Là một quá trình đang diễn ra. Nó không phải là mới và nó sẽ không dừng lại.

2) Được thực hiện sớm (ví dụ với bo mạch chủ Pentium-1 kép và chipset NX). Cho đến bây giờ đó là lựa chọn duy nhất để xây dựng một PC nhanh hơn.

3) Yêu cầu CPU có nhiều 'lõi cpu' được tích hợp vào một chip. (Sau đó, chúng tôi đã gọi CPU đó là CPU lõi kép để tăng sự nhầm lẫn. Cảm ơn bạn đã tiếp thị :))

Ngày nay, chúng ta chỉ coi CPU là "lõi" để tránh nhầm lẫn.

Bây giờ bạn có các chip như pentium-D (bộ đôi), về cơ bản là hai lõi pentium-4 trên cùng một chip.

Pentium-D sớm (2 lõi P4)

Bạn có nhớ hình ảnh của pentium-Pro cũ không? Với kích thước bộ nhớ cache khổng lồ?
Xem hai khu vực lớn trong bức tranh này?

Hóa ra chúng ta có thể chia sẻ bộ đệm thứ 2 giữa cả hai lõi CPU. Tốc độ sẽ giảm nhẹ, nhưng một 512KiB chia sẻ 2 nd bộ nhớ cache thường nhanh hơn vì thêm hai độc lập 2 là nd mức cache của một nửa kích thước.

Điều này rất quan trọng cho câu hỏi của bạn.

Điều đó có nghĩa là nếu bạn đọc một cái gì đó từ một lõi CPU và sau đó cố gắng đọc nó từ một lõi khác có chung bộ đệm mà bạn sẽ nhận được một bộ đệm. Bộ nhớ sẽ không cần phải được truy cập.

Vì các chương trình di chuyển giữa các CPU, tùy thuộc vào tải, số lượng lõi và bộ lập lịch bạn có thể đạt được hiệu suất bổ sung bằng cách ghim các chương trình sử dụng cùng một dữ liệu vào cùng một CPU (bộ nhớ cache trên L1 trở xuống) hoặc trên cùng các CPU chia sẻ bộ đệm L2 (và do đó bị bỏ lỡ trên L1, nhưng lượt truy cập đọc bộ đệm L2).

Vì vậy, trên các mô hình sau, bạn sẽ thấy bộ nhớ cache cấp 2 được chia sẻ.

Hình ảnh của CPU Core2 đang mở

Nếu bạn đang lập trình cho CPU hiện đại thì bạn có hai tùy chọn:

  1. Đừng bận tâm. Hệ điều hành sẽ có thể lên lịch mọi thứ. Bộ lập lịch có tác động lớn đến hiệu suất của máy tính và mọi người đã dành rất nhiều nỗ lực để tối ưu hóa điều này. Trừ khi bạn làm điều gì đó kỳ lạ hoặc đang tối ưu hóa cho một mô hình PC cụ thể, bạn sẽ tốt hơn với bộ lập lịch mặc định.
  2. Nếu bạn cần mỗi bit hiệu năng cuối cùng và phần cứng nhanh hơn không phải là một tùy chọn, thì hãy thử để lại các rãnh truy cập cùng dữ liệu trên cùng lõi hoặc trên lõi có quyền truy cập vào bộ đệm chung.


Tôi nhận ra rằng tôi chưa đề cập đến bộ đệm L3, nhưng chúng không khác nhau. Bộ đệm L3 hoạt động theo cùng một cách. Lớn hơn L2, chậm hơn L2. Và nó thường được chia sẻ giữa các lõi. Nếu nó hiện diện lớn hơn rất nhiều so với bộ đệm L2 (nếu không thì nó sẽ không có ý nghĩa) và nó thường được chia sẻ với tất cả các lõi.

ModernCPUwithL3.png


Thật là một bài viết tuyệt vời!
lukas.pukenis

"nhưng bộ nhớ cache thứ 2 được chia sẻ 512 MB là" Tôi nghĩ đó là 512KB.
lukas.pukenis

một câu trả lời tuyệt vời nhờ để chia sẻ người đàn ông
samsamara

14

Bộ nhớ cache đó là phần bên trong của bộ xử lý. Một số được chia sẻ giữa các lõi, một số là cá nhân, phụ thuộc vào việc thực hiện. Nhưng tất cả chúng đều nằm trên chip. Một số chi tiết: Bộ xử lý Intel Intel® Core ™ i7, được thực hiện tại đây :

  • Lệnh 32 KB và bộ đệm cấp dữ liệu 32 KB (L1) cho mỗi lõi
  • Bộ nhớ cache cấp dữ liệu / hướng dẫn chia sẻ dữ liệu (L2) 256-KB cho mỗi lõi
  • Hướng dẫn chia sẻ dữ liệu / bộ nhớ cache cấp độ 8 MB (L3), được chia sẻ giữa tất cả các lõi

Ảnh chip xử lý (xin lỗi, không biết mô hình chính xác). Bạn có thể thấy rằng bộ đệm chiếm diện tích đáng kể trên chip:

văn bản thay thế


1
Nếu bằng chip, bạn có nghĩa là silicon chết, thì mức bộ nhớ cache cuối cùng có thể tắt chip. Ví dụ, zEC12 của IBM ( en.wikipedia.org/wiki/IBM_zEC12_(micro Processor ) ) sử dụng mô-đun nhiều nút với sáu chip xử lý và hai chip bộ nhớ cache chia sẻ với bộ đệm L4. Crystal Well của Intel cũng cung cấp bộ đệm ngoài chip L4 (cũng sử dụng eDRAM).
Paul A. Clayton

5

Cache gần như luôn luôn trên chip để truy cập nhanh nhất. Dưới đây là một sơ đồ đẹp hiển thị CPU Intel lõi tứ với bộ đệm L3 được tô sáng. Khi bạn nhìn vào những bức ảnh như thế này của CPU, các vùng đồng nhất lớn thường là các bộ nhớ trên chip được sử dụng làm bộ đệm.

Nehalem Die (http://www.legitreviews.com/article/824/1/)


5

Ngày nay, tất cả các bộ nhớ cache trên CPU đều chết. Chúng thường được đặt trên bo mạch chủ hoặc trên bo mạch chủ CPU, nhưng tôi không nghĩ có bất kỳ bộ xử lý hiện tại nào sử dụng bộ nhớ đệm chip.


1
+1 cho phần những ngày này . Ngày xưa anh khác. (ví dụ: bộ đệm L2 trong bo mạch chủ trong thời gian Cyrix / Pentium-1)
Hennes

0

Tôi không chắc chắn về L3, nhưng L1 / L2 luôn nằm trên CPU. Về mặt phân cấp, về cơ bản, L1 thường là bộ đệm hướng dẫn, L2 và L3 là bộ đệm dữ liệu.


L1 có thể được chia sẻ bộ đệm (bộ đệm hướng dẫn và dữ liệu). Ngoài ra còn có CPU với dữ liệu L1 và bộ đệm hướng dẫn L1. Và bộ đệm L2 không phải lúc nào cũng nằm trên CPU (ngay cả L1 cũng không cần phải có trên CPU, nhưng tôi chỉ nhớ một máy tính trong trường hợp đó).
Hennes

0

L1 nằm trên chip CPU, L2 nằm giữa bộ xử lý và bộ nhớ chính, nhưng có một điểm cần biết là trong một số hệ thống L2 nằm trên chip CPU trong khi ở một số hệ thống khác L2 nằm trên bo mạch chủ và L3 liên tục nằm trên chip bảng chính.

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.