Di mana tepatnya L1, L2 dan L3 Cache berada di komputer?

32

Di mana tepatnya L1, L2 dan L3 Cache Terletak di komputer?

Saya tahu, kami menggunakan Cache untuk meningkatkan kinerja dengan memilih DATA dan INSTRUKSI dari Cache daripada Memori Utama.

Berikut ini adalah pertanyaan saya

  1. Di mana tepatnya L1 Cache berada? . ada di chip CPU?
  2. Di mana tepatnya L2 Cache berada?

  3. Di mana tepatnya L3 Cache berada? ada di Dewan Ibu?

Saya pikir prosesor SMP terbaru menggunakan cache level 3 jadi saya ingin memahami hirarki level cache dan arsitekturnya.

Bob
sumber
1
Hirarki yang tepat bervariasi di antara prosesor yang berbeda. Untuk mengetahui hirarki cache pada mesin Anda sendiri, Anda bisa menggunakan SysInternal ini CoreInfo.exe utilitas ( technet.microsoft.com/en-us/sysinternals/cc835722.aspx )
2
Juga, semakin besar cache (L3> L2> 1) semakin jauh lokasinya dari inti itu sendiri (latensi akses ke L3 lebih tinggi dari L1 misalnya).

Jawaban:

48

Mari kita mulai dengan ini:

Saya pikir prosesor SMP terbaru menggunakan cache level 3 jadi saya ingin memahami hirarki level cache dan arsitekturnya.

Untuk memahami cache, Anda perlu mengetahui beberapa hal:

CPU memiliki register. Nilai-nilai itu bisa langsung digunakan. Tidak ada yang lebih cepat.

Namun kami tidak dapat menambahkan register tanpa batas ke sebuah chip. Hal-hal ini membutuhkan ruang. Jika kita membuat chip lebih besar itu menjadi lebih mahal. Bagian dari itu adalah karena kita membutuhkan chip yang lebih besar (lebih banyak silikon), tetapi juga karena jumlah chip dengan masalah meningkat.

(Gambar wafer imajiner dengan 500 cm 2. Saya memotong 10 chip dari itu, masing-masing ukuran chip 50cm 2. Salah satunya rusak. Saya membuangnya dan saya meninggalkannya 9 chip yang bekerja. Sekarang ambil wafer yang sama dan saya potong 100 chip dari itu, masing-masing sepuluh kali lebih kecil. Salah satunya jika rusak. Saya membuang chip yang rusak dan saya tersisa dengan 99 chip yang bekerja. Itu adalah sebagian kecil dari kerugian yang seharusnya saya miliki. Untuk mengkompensasi yang lebih besar chip saya perlu meminta harga yang lebih tinggi. Lebih dari sekedar harga untuk silikon tambahan)

Ini adalah salah satu alasan mengapa kami menginginkan chip yang kecil dan terjangkau.

Namun semakin dekat cache ke CPU, semakin cepat dapat diakses.

Ini juga mudah dijelaskan; Sinyal listrik bergerak mendekati kecepatan cahaya. Itu cepat tapi masih kecepatan terbatas. CPU modern bekerja dengan jam GHz. Itu juga cepat. Jika saya menggunakan CPU 4 GHz maka sinyal listrik dapat berjalan sekitar 7,5cm per jam. Yaitu 7,5 cm dalam garis lurus. (Keripik apa pun kecuali koneksi lurus). Dalam praktiknya, Anda akan membutuhkan kurang dari 7,5 cm karena itu tidak memungkinkan chip untuk menampilkan data yang diminta dan agar sinyal dapat kembali.

Intinya, kami ingin cache sedekat mungkin secara fisik. Yang berarti keripik besar.

Keduanya harus seimbang (kinerja vs biaya).

Di mana tepatnya L1, L2 dan L3 Cache berada di komputer?

Dengan asumsi perangkat keras gaya PC saja (mainframe sangat berbeda, termasuk dalam kinerja vs keseimbangan biaya);

IBM XT
Yang asli 4,77Mhz satu: Tidak ada cache. CPU mengakses memori secara langsung. Pembacaan dari memori akan mengikuti pola ini:

  • CPU meletakkan alamat yang ingin dibaca pada bus memori dan menyatakan tanda baca
  • Memori menempatkan data di bus data.
  • CPU menyalin data dari bus data ke register internal.

80286 (1982)
Masih tidak ada cache. Akses memori bukan masalah besar untuk versi kecepatan rendah (6Mhz), tetapi model yang lebih cepat berlari hingga 20Mhz dan sering kali perlu ditunda saat mengakses memori.

Anda kemudian mendapatkan skenario seperti ini:

  • CPU meletakkan alamat yang ingin dibaca pada bus memori dan menyatakan tanda baca
  • Memori mulai memasukkan data ke dalam bus data. CPU menunggu.
  • Memori selesai mendapatkan data dan sekarang sudah stabil di bus data.
  • CPU menyalin data dari bus data ke register internal.

Itu adalah langkah ekstra yang dihabiskan menunggu ingatan. Pada sistem modern yang dapat dengan mudah 12 langkah, itulah sebabnya kami memiliki cache .

80386 : (1985)
CPU menjadi lebih cepat. Baik per jam, dan dengan berlari pada kecepatan jam yang lebih tinggi.
RAM semakin cepat, tetapi tidak lebih cepat dari CPU.
Sebagai akibatnya dibutuhkan lebih banyak status tunggu. Beberapa motherboard menyiasatinya dengan menambahkan cache (yang akan menjadi 1 st tingkat Cache) pada motherboard.

Pembacaan dari memori sekarang dimulai dengan pemeriksaan apakah data sudah ada dalam cache. Jika itu dibaca dari cache yang jauh lebih cepat. Jika tidak prosedur yang sama seperti yang dijelaskan dengan 80286

80486 : (1989)
Ini adalah CPU pertama dari generasi ini yang memiliki beberapa cache pada CPU.
Ini adalah cache terpadu 8KB yang artinya digunakan untuk data dan instruksi.

Sekitar waktu ini mendapat umum untuk menempatkan 256KB memori statis cepat pada motherboard sebagai 2 nd cache level. Dengan demikian 1 st tingkat cache pada CPU, 2 nd tingkat cache pada motherboard.

486 motherboard dengan lokasi CPU dan cache level 2 ditandai

80586 (1993)
The 586 atau Pentium-1 menggunakan cache level 1 split. 8 KB masing-masing untuk data dan instruksi. Cache terpecah sehingga cache data dan instruksi dapat disesuaikan secara individual untuk penggunaan spesifik mereka. Anda masih memiliki namun sangat cepat 1 kecil st tembolok dekat CPU, dan yang lebih besar tapi lebih lambat 2 nd cache pada motherboard. (Pada jarak fisik yang lebih besar).

Di area pentium 1 yang sama Intel menghasilkan Pentium Pro ('80686'). Tergantung pada model chip ini memiliki 256Kb, 512KB atau 1MB pada cache papan. Itu juga jauh lebih mahal, yang mudah dijelaskan dengan gambar berikut.

Gambar CPU Pro pentium, model cache 256KB

Perhatikan bahwa setengah ruang dalam chip digunakan oleh cache. Dan ini untuk model 256KB. Lebih banyak cache secara teknis dimungkinkan dan beberapa model di mana diproduksi dengan cache 512KB dan 1MB. Harga pasar untuk ini tinggi.

Perhatikan juga bahwa chip ini mengandung dua dadu. Satu dengan CPU yang sebenarnya dan 1 st tembolok, dan mati kedua dengan 256KB 2 nd tembolok.

Pentium-2

Pentium 2 adalah pentium pro core. Untuk alasan ekonomi ada 2 nd cache dalam CPU. Sebaliknya apa yang dijual aa CPU kita PCB dengan chip yang terpisah untuk CPU (dan 1 st Cache) dan 2 nd tembolok.

Sebagai kemajuan teknologi dan kami mulai memasang membuat chip dengan komponen yang lebih kecil itu akan memungkinkan secara finansial untuk menempatkan 2 nd tembolok kembali sebenarnya CPU mati. Namun masih ada perpecahan. Sangat cepat 1 st tembolok meringkuk ke CPU. Dengan satu 1 st cache per core CPU dan yang lebih besar tapi kurang cepat 2 nd Cache sebelah inti.

Gambar 'CPU' pentium 2 (baik dengan dan tanpa penutup)

Pentium-3
Pentium-4
Ini tidak berubah untuk pentium-3 atau pentium-4.

Sekitar saat ini kami telah mencapai batas praktis tentang seberapa cepat kami dapat clock CPU. 8086 atau 80286 tidak perlu pendinginan. Pentium-4 yang berjalan pada 3.0GHz menghasilkan panas yang sangat banyak dan menggunakan banyak daya sehingga menjadi lebih praktis untuk meletakkan dua CPU terpisah pada motherboard daripada satu yang cepat.

(Dua CPU 2.0 GHz akan menggunakan daya lebih kecil dari CPU 3.0 GHz tunggal yang identik, namun dapat melakukan lebih banyak pekerjaan)

Ini bisa diselesaikan dengan tiga cara:

  1. Jadikan CPU lebih efisien, sehingga mereka bekerja lebih banyak pada kecepatan yang sama.
  2. Gunakan banyak CPU
  3. Gunakan banyak CPU dalam 'chip' yang sama.

1) Merupakan proses yang berkelanjutan. Ini bukan hal baru dan tidak akan berhenti.

2) Sudah dilakukan sejak dini (mis. Dengan motherboard dual Pentium-1 dan chipset NX). Sampai sekarang itu adalah satu-satunya pilihan untuk membangun PC yang lebih cepat.

3) Membutuhkan CPU di mana banyak 'cpu core' dibangun menjadi satu chip. (Kami kemudian menyebut CPU itu CPU dual core untuk meningkatkan kebingungan. Terima kasih pemasaran :))

Saat ini kami hanya menyebut CPU sebagai 'inti' untuk menghindari kebingungan.

Anda sekarang mendapatkan chip seperti pentium-D (duo), yang pada dasarnya adalah dua inti pentium-4 pada chip yang sama.

Pentium-D awal (2 inti P4)

Ingat gambar pentium-Pro lama? Dengan ukuran cache yang besar?
Lihat dua area besar di gambar ini?

Ternyata kita bisa berbagi 2 nd Cache antara kedua core CPU. Kecepatan akan turun sedikit, tapi 512KiB bersama 2 nd cache seringkali lebih cepat daripada menambahkan dua independen 2 nd tingkat cache dari setengah ukuran.

Ini penting untuk pertanyaan Anda.

Ini berarti bahwa jika Anda membaca sesuatu dari satu inti CPU dan kemudian mencoba membacanya dari inti lain yang berbagi cache yang sama Anda akan mendapatkan hit cache. Memori tidak perlu diakses.

Karena program melakukan migrasi antara CPU, tergantung pada beban, jumlah inti dan penjadwal Anda dapat memperoleh kinerja tambahan dengan menyematkan program yang menggunakan data yang sama ke CPU yang sama (cache hit pada L1 dan lebih rendah) atau pada CPU yang sama yang bagikan L2 cache (dan karenanya ketinggalan pada L1, tetapi hit pada L2 cache berbunyi)

Dengan demikian pada model selanjutnya Anda akan melihat cache level 2 bersama.

Gambar dari CPU Core2 terbuka

Jika Anda memprogram untuk CPU modern maka Anda memiliki dua opsi:

  1. Jangan ganggu. OS harus dapat menjadwalkan sesuatu. Penjadwal memiliki dampak besar pada kinerja komputer dan orang-orang telah menghabiskan banyak upaya untuk mengoptimalkan ini. Kecuali Anda melakukan sesuatu yang aneh atau mengoptimalkan untuk satu model PC tertentu, Anda lebih baik dengan penjadwal default.
  2. Jika Anda memerlukan setiap sedikit kinerja terakhir dan perangkat keras yang lebih cepat bukanlah suatu pilihan, maka cobalah untuk meninggalkan tapak yang mengakses data yang sama pada inti yang sama atau pada inti dengan akses ke cache bersama.


Saya menyadari bahwa saya belum menyebutkan cache L3, tetapi mereka tidak berbeda. Cache L3 bekerja dengan cara yang sama. Lebih besar dari L2, lebih lambat dari L2. Dan sering dibagi di antara inti. Jika ada jauh lebih besar dari cache L2 (kalau tidak, tidak masuk akal) dan sering dibagikan dengan semua core.

modernCPUwithL3.png

Hennes
sumber
Tulisan yang bagus!
lukas.pukenis
"Tapi cache kedua yang dibagi 512MB adalah" Saya pikir ini 512KB.
lukas.pukenis
jawaban yang sangat bagus! terima kasih sudah berbagi man
samsamara
14

Tembolok itu adalah internal prosesor. Beberapa dibagi antara inti, beberapa individu, tergantung pada implementasi. Tetapi semuanya terletak pada chip. Beberapa detail: Intel Intel® Core ™ i7 Processor, diambil di sini :

  • Instruksi 32-KB dan cache tingkat pertama data 32-KB (L1) untuk setiap inti
  • 256-KB membagikan instruksi / data cache level kedua (L2) untuk setiap inti
  • 8-MB instruksi bersama / data cache level terakhir (L3), dibagi di antara semua core

Foto chip prosesor (maaf, tidak tahu model pasti). Anda dapat melihat bahwa cache membutuhkan area signifikan pada chip:

teks alternatif

Andrey
sumber
1
Jika dengan chip yang Anda maksud silikon mati, maka level cache terakhir bisa mati. Misalnya, IBM zEC12 ( en.wikipedia.org/wiki/IBM_zEC12_(microprocessor) ) menggunakan modul multichip dengan enam chip prosesor dan dua chip cache bersama dengan cache L4. Intel Well Crystal juga menyediakan cache off-chip L4 (juga menggunakan eDRAM).
Paul A. Clayton
5

Cache hampir selalu menggunakan chip untuk akses tercepat. Berikut ini adalah diagram yang bagus yang menunjukkan quad core Intel CPU die dengan L3 cache disorot. Ketika Anda melihat gambar-gambar seperti ini dari CPU die, area seragam besar biasanya bank memori on-chip yang digunakan sebagai cache.

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

Michael Petito
sumber
5

Hari-hari ini cache semua pada CPU mati. Dulu kadang-kadang terletak di motherboard, atau pada papan CPU anak, tapi saya tidak berpikir ada prosesor saat ini yang menggunakan caching chip.

Douglas Leeder
sumber
1
+1 untuk bagian hari ini . Di masa lalu kamu berbeda. (mis. L2 cache di motherboard pada waktu Cyrix / Pentium-1)
Hennes
0

Saya tidak yakin tentang L3, tetapi L1 / L2 selalu terletak pada CPU. Hierarki-bijaksana, pada dasarnya, L1 biasanya cache instruksi, L2 dan L3 adalah cache data.

Jas
sumber
L1 dapat dibagi cache (instruksi dan cache data). Ada juga CPU dengan data L1 dan cache instruksi L1. Dan L2 cache tidak selalu terletak di CPU (bahkan L1 tidak perlu berada di CPU, tapi saya hanya ingat satu komputer di mana itu terjadi).
Hennes
0

L1 terletak pada chip CPU, L2 terletak di antara prosesor dan memori utama, tetapi ada titik untuk mengetahui bahwa di beberapa sistem L2 terletak di chip CPU sedangkan di beberapa sistem lain L2 terletak di papan ibu itu sendiri, dan L3 terus-menerus terletak di chip papan utama.

Qurban Yazdani
sumber